我是Crystal的新手.我想尝试找到十六进制字符串的SHA256哈希值.我成功地完成了一些工作:
sha256 = OpenSSL::Digest.new("sha256")
puts sha256.update("abcd")
Run Code Online (Sandbox Code Playgroud)
但我不确定如何将"abcd"的二进制值放入哈希函数中,或者将二进制输出.我基本上希望能够重新创建这个Ruby函数:
def hash256(hex)
# 1. Convert hex string to array, and pack in to binary
binary = [hex].pack("H*")
# 2. Hash the binary value (returns binary)
hash1 = Digest::SHA256.digest(binary)
# 3. Hash it again (returns binary)
hash2 = Digest::SHA256.digest(hash1)
# 4. Convert back to hex (must unpack as array)
result = hash2.unpack("H*")[0]
return result
end
Run Code Online (Sandbox Code Playgroud)
是否可以在Crystal中使用带有二进制值的SHA256?
从Neo4j 3.0升级到3.1(以及随后的3.2)后,运行后出现以下错误sudo neo4j start:
/usr/share/neo4j/bin/neo4j: line 411: /var/run/neo4j/neo4j.pid: No such file or directory
Run Code Online (Sandbox Code Playgroud)
尽管如此,Neo4j在运行此命令后实际上正在运行.但是,之后我无法停止Neo4j sudo neo4j stop,因为没有PID.
我怎样才能解决这个问题?
笔记:
sudo apt upgradesudo mkdir /var/run/neo4j事先做好解决这个问题,但希望可能有更有效的解决方案.我有一个这样的数组:
a = [0, 0, 1, 0, 1, 1, 0]
Run Code Online (Sandbox Code Playgroud)
我想删除主要0元素来获得这个:
a = [1, 0, 1, 1, 0]
Run Code Online (Sandbox Code Playgroud)
在 Ruby 中执行此操作的最佳方法是什么?我想出了一个解决方案,但它并不像它应该的那样优雅:
count = 0
a.each do |element|
break if element != 0
count += 1
end
a = a[count..-1]
Run Code Online (Sandbox Code Playgroud)
我觉得这可能有一个干净的单线。
我在链中有节点,如下所示:
(a)<-[:rel]-(b)<-[:rel]-(c) ... (x)
Run Code Online (Sandbox Code Playgroud)
(a)是否有一种快速方法来计算和之间的节点(或关系)数量(x),即使它们之间有数千个节点?到目前为止,p=(a)<-[:rel*]-(x)进展“缓慢”。
注意:我不需要知道之间的节点的任何信息,我只想找到距离。
我当前正在运行Neo4j社区版,并且想升级到企业版。
做这个的最好方式是什么?
我已经安装了企业版:
sudo apt-get install neo4j-enterprise
Run Code Online (Sandbox Code Playgroud)
但是我跑的时候
sudo neo4j start
Run Code Online (Sandbox Code Playgroud)
...我相信我仍在运行社区版。
我在Neo4j网站上找不到任何有关如何迁移的说明。