查询的方法放在 model 里,修改自身的方法放在 model 里 在一个 model 中,不能有修改其他 model 的方法,如果有的话,放在一个独立的 service 里(service 就是个普通 object,存放操作的代码) controller 里调用 service 或 model 的方法,将返回值处理成 view 需要的代码
我面试的时候也是,自己写的代码怎么工作的都忘了,回过头就都想起来了
ruby 没有原生的多线程,应该用 fiber 只会徒增调度成本。。除非请求特别长 这个是之前看过的手动调度 fiber 的 async/await,不知道 em 的底层是不是也是这样的,感觉应该差不多
require 'fiber'
def async &block
Fiber.new &block
end
def await &block
thr = Thread.new do
block.call
end
loop do
t = Time.now
p '.'
Fiber.yield while Time.now - t < 0.05
return thr.value unless thr.alive?
end
end
require 'net/http'
require 'uri'
reqs = 5.times.map do
async {
p await { Net::HTTP.get URI('http://www.baidu.com/'); 'ok' }
}
end
while reqs.size > 0
status = reqs.map do |x|
x.resume
end
reqs.select!(&:alive?)
end
写 find 的时候发现 ajax 没办法同步写,不过还好,有 await,async/await 也是肥肠的愉悦!
我描述的是 functor 吧,monad 也是从类似的想法衍生出来的吧,就是先串函数,不碰 Just https://blog.oyanglul.us/javascript/functional-javascript.html 相关的东西是在这看的,但不知对不对,可以批判一下。。
感谢分享!
其实就是 Array 这种纯容器不能延时求值,然后要给这个容器加个函数作为接口:
访问 → f []
之后对这个数组的操作都叠在 f 上,不 touch []
,
等到求值的时候再把 f 应用到[]
个人理解
因为喜欢 matz 才用 ruby.
js 确实是垃圾,我们来发明 java 2 javascript 编译器吧
所以为什么是strip_title
而不是strip
?
#8 楼 @darkbaby123 谢谢长回复!只是有点把变量包闭包的洁癖,其实问题不大
Zipper 的类型可以通过 List 求导得来,所以得出 Zipper 的数据也可以由 List 的数据以类似求导的方法取得吗? 类型吻合但是数据不吻合的情况应该很多,感觉 Zipper 更像一种巧合,或者说只是知道类型信息的话其实推导不出什么...
gg
外包团队的话未必比自学好,因为做的都是最基础的 CRUD,要做些大规模的东西才能学到东西,而且层次和在书上能看到的是完全不一样的
bundle install --deployment 不就行了
学习 Bash 的基础知识。具体来说,输入 man bash 并至少全文浏览一遍; 它很简单并且不长。
具体来说,输入 man bash | wc
5737(行)44537(词)340523(字符)
这个配上 mvvm 或者 react 应该非常棒,不然用 jq 艹页面能预感到会有非常多的问题。。
版上有没有高人,愿意出来带带我们,一起用 nano 写 ruby? 版上有没有高人,愿意出来带带我们,一起用 textmate 写 ruby? 版上有没有高人,愿意出来带带我们,一起用 sublime 写 ruby? 版上有没有高人,愿意出来带带我们,一起用 rubymine 写 ruby? 版上有没有高人,愿意出来带带我们,一起用 notepad++ 写 ruby? 版上有没有高人,愿意出来带带我们,一起用 SciTe 写 ruby? 版上有没有高人,愿意出来带带我们,一起用 Programmer's Notepad 写 ruby?
you name it
#6 楼 @piecehealth 强迫症表示相当受不了这个“单”引号
现在都流行复古了么
module M
end
class Hash
prepend M
end
class Hash
def [](k)
p 3
end
def map
p 4
end
end
h = {a: 1}
h[:a] #=> return 1 and without print 3
h.send(:[], :a) #=> print 3
h.map #=> print 4
简化成了这样,基本确定和[key]
的调用有关系,怀疑是 [] 方法有些特殊的处理
记得在哪里看到过 Python 保留 GIL 是因为不用 GIL 会降低单线程的性能,而原先的大部分库都是单线程的