#15 楼 @luikore redis 用了几百行就实现了个事件库:https://github.com/antirez/redis/blob/unstable/src/ae.c 这个也值得一看
自己读 socket,就能控制 buffer 了,读一点写一点就可以了 大概这样:http://stackoverflow.com/questions/13533382/how-to-read-from-a-tcpserver-socket-in-ruby-using-read-readpartial-and-read-non
Haskell 好,语法友好,文档丰富,实用 lisp 是多范式语言,函数式只是其中之一,Haskell 则是纯函数式的 这个基础教程不错:http://learnyouahaskell.com/chapters 官网还有很长的列表:http://www.haskell.org/haskellwiki/Tutorials
用异步 io 就可以不阻塞了,这样单线程也能有不错的吞吐了
挺厉害的项目,不用 GTK 也不用 Qt,自己的一套 EFL
内部 DSL 一个缺点是调用栈可能很深,需要调试时颇不容易
iconv 为什么不行?
下个 ce3 sdk 玩玩吧 http://mycryengine.com/index.php?conid=1
#4 楼 @gaicitadie linux 可玩的游戏其实不少了 http://store.steampowered.com/browse/linux/
你不认识的不是单词,你不认识的是概念。不从理解概念入手,而是记单词,才是邪道。看英文资料而理解的概念,对应的词汇自然而然就会记得
amazon 原本也不过是个卖书网站…
看英文吧,熟悉英文对以后的学习也有帮助,而且 google 的时候用英文术语比用中文好,所以看英文好
我喜欢的是 modal editing,vim 或是 emacs 都无所谓,反正都能自己写代码定制。能在纯字符界面下使用也是必须的,所以 sublime 之类不用
include Socket::Constants
当然是十分落后了
sock.setsockopt( Socket::SOL_SOCKET, Socket::SO_RCVTIMEO, time ) http://stackoverflow.com/questions/9396583/how-to-correctly-use-receive-timeout-for-ruby-sockets
h1 = { 'a' => 100, 'b' => 11 }
h2 = { 'b' => 99, 'c' => 23 }
res = Hash.new{|h, k| h[k] = [0, 0]}
h1.each{|k, v| res[k][0] = v}
h2.each{|k, v| res[k][1] = v}
p res
所有有 memory 且能 communicate 的生物都是 share memory by communicating 而不是 communicate by sharing memory 的,这何止是设计思路,简直就是自然法则,出现了至少几亿年了吧
http://golang.org/doc/effective_go.html#concurrency Do not communicate by sharing memory; instead, share memory by communicating. 如果没有 golang/erlang 这样低廉的通讯成本,这话也很难成立吧
如果 arr2 中有 arr1 不存在的 key,或者某个 key 重复出现,结果就有问题吧?还是说你本来就是想做 left join?O(n ^ 2) 的算法能不用尽量不用
arr1 = [
{:key => 1, :b => 3},
{:key => 2, :b => 4},
{:key => 3, :b => 4},
]
arr2 = [
{:key => 1, :c => 4},
{:key => 2, :d => 5},
{:key => 1, :foo => "foo"},
]
arr3 = [
{:key => 4, :c => 3},
{:key => 5, :c => 4},
]
result = Hash.new{|h, k| h[k] = {}}
[arr1, arr2, arr3].each do |arr|
arr.each {|e| result[e[:key]].merge! e }
end
result = result.values
p result
不弱的
他不喜欢复杂的语法,也不喜欢动态类型系统。取向而已,自己不喜欢,就说甜的或者咸的是设计错误,挺无聊的。举的那个 putOnHat 的例子,更是不知所谓,用动态语言的各位真的遇到过类似情景?真的是动态语言无法解决的问题?不做静态类型检查,不保证类型安全的语言,有自己的做法,比如手工检查类型和属性。放着这些不用,非要试图给动态类型系统加上静态类型标注,你有锤子但它不是钉子啊敲什么敲
https://github.com/manastech/crystal 、 Crystal is a programming language with the following goals: Have the same syntax as Ruby, or at least as similar as possible. Compile to efficient native code.
rubinius 这类带 jit 的也能在运行时生成本地代码
cython 和 rpython 都编译成 c 的,rpython 有 CLI 和 JVM 的后端 其实 bytecode 也是二进制,lz 意思应该是 native code 能否编译成本地代码和是否动态类型没有关系,而且静态类型语言也可能需要 vm 或者 runtime 的支持