看你用什么实现了,如果是 Sidekiq,最粗暴的是去 Redis CLI 下 flushall
我只能理解他可能从语言的理论上说这事不好做,或者是有什么 overhead 在里面(比如在虚拟机层面没法高效实现这样的),但是他有没讲清楚。
我不太关注 Ruby 本身的改进(除了别人喂的),但我知道之前有些很 cool 的东西,比如 auto fiber,大面都能实现,而且改善明显,但是有一些 edge 完全搞不定,就不 generic 了,于是只能砍掉的例子,其实我觉得 ko1 要搞得新并发模型 Guild 很可能也是这下场。。。。
这事反弹还有个因素,就是大家都觉得现在提供的功能不是大家想要的,对此 Matz 的回应非常不友好,等过了好久才有 Rei 贴的那个回复,讲了下 Elixir 风格的管道在 Ruby 上不好实现(其实我没看懂)
对,今年圣诞节是 2.7,3.0 感觉是明年了(其实 16 年提 3x3 这概念的时候 Ruby 3.0 是指今年...)
API 模式是不需要 CSRF Token 的,可以考虑直接关掉。
催更~ 等有空想实现在 https://github.com/jasl/cybros_core 上
朋友,我记你的仇,可能么?
你换个频道还是在杠,已经告诉你了 Sorbet 现在已经开源,Ruby 3 的时候会作为官方标准(给所有标准库加上类型标注)
其次,“静态类型检测”是个什么东西?从来没有这种玩意
Sorbet 开源后,社区贡献的工具链也开始出来了,Rails 那堆动态方法有工具来生成类型标注 https://github.com/chanzuckerberg/sorbet-rails
他解决的不是你提到的场景,所以才被社区反对... 目前解决的问题是 a.b.c
可以写作 a |> b |> c
,除了多行代码排版好看点,还有 Range 这种不用包括号,看不到有什么好处,反而占用了一个宝贵的操作符
概念问 Wiki https://zh.wikipedia.org/wiki/%E6%8A%BD%E8%B1%A1%E9%87%8A%E4%B9%89
实际参考这个项目 https://github.com/mame/ruby-type-profiler
抽象解释(按 Wiki 的翻译法)有他自己的问题,算法复杂度很高,那个项目试验性质多半要坑
这个他们是这么说的,不过跟 Webpacker 项目的目标是不同的
准确的说这是 YARD,RubyMine 默认使用的注释格式
你要想精确的话只能用 BigDecimal
了,next_float
不靠谱
[1] pry(main)> (1.1).next_float
=> 1.1000000000000003
本来正常的数,反而引发了问题
干掉的话一般是round
一下,但又不满足你说的“不能强制精确到小数点后 N 位”
你开心就好
最后,每个人都可以有自己的喜好,包括 Matz 最近搞的管道操作符被社区骂惨了,但是为了反对而找理由就不好了,而且确实你提影响内存占用和性能都站不住脚,反而暴露了你基础知识薄弱。
可能话不好听,你多担待着点。
1 RubyMine 对 Rails 的 model 和 view 做了特别处理,实际上模型的属性是从 SchemaCache 里读的
2 没看懂,也不懂为什么不能标注在行尾
最后再说你的观点,首先,我觉得可以接受,目前我关注社区的讨论没有批评的,这件事从两年前就开始了,Matz 自己做的 Soft type,还有 Sorbet,还有人在做类似 .ts.d
的方案,去年 RubyKaigi 有几场关于类型的分享,目前看 Sorbet 胜出,而且 Sorbet 的作者的背景非常的好,编译器、静态分析方向的博士,师从 Scala 的作者,同时还是 Scala 的(前)重要成员,更关键的是,Sorbet 有一个宣传点就是 Stripe 已经用这个在生产环境上很久了。
其次,为了让 IDE 更智能,并不需要标注类型,其实更多的做法是“抽象执行”,这个技术下是不需要你去标注类型的,算法可以推导,当然也有他的问题了,RubyMine 应该是在用这个技术,同时效果更好的版本 Ruby 也有核心开发在做
另外,你说的 doc,你可能不知道 doc 里做类型标注是基于所有语言的标准做法... Ruby 当然也有啦
# Foo.
#
# @example
#
# y
# g
#
# @param [String] param_name The xx and xx.
#
# @see http://url.com
#
# @return [true] if so
首先,你听说过现代操作系统的 Prefetching
特性么。。。OS 可是为了性能可劲的往内存里塞东西啊。。。
其次,引入模块占用的内存还不够做内存对齐的,这里不占用内存,占用内存的在另一个地方(这个问题可以留给你)但是,他这段实现占用的内存,也是小到完全可以忽略的(KB 级别)
所以你根本没理解我说的,因为答案就是 0。。。这个你不需要理解 Ruby 的实现,只需要了解 Ruby 的语法就足够解答了
另外占用内存空间会影响运行速度,说明你大学的理论课都没学好,这个我真的表示很遗憾。。。
希望你还是要好好学习一个,提高自己的姿势水平,这是坠吼滴
你就不用杠了。。。
这个是不是有运行负担跟我问你的问题“sig
方法的执行时机在哪里?”有关,adam 正是回答了这个问题,虽然讲法不太直接。
其次,刚才说影响运行速度,现在改占内存空间了。。。如果我说占用空间约等于 0 呢?占用命名空间确实是问题,但是首先我没见过有命名模块为 T 的单字符项目,如果你用 IDE,你多半会发现默认的 IDE 的风格规则小于两个字符都会给你 Warning,其次,你告诉我 sig
影响的是实例方法还是类方法?
那你告诉我 sig
方法的执行时机在哪里?
https://github.com/sorbet/sorbet/blob/master/gems/sorbet-runtime/lib/types/sig.rb#L10 说了 "不要以为 extend 了一个 module 就侵入到动态了" 看好这是一个空方法
并不是,好好读读文档吧,Sorbet 是可选的静态检查 + 可选的动态检查,不要以为 extend 了一个 module 就侵入到动态了
用了三年,从未体会过他给我添乱,倒是现在觉得小触摸板(Surface Book 2 说的就是你)都是垃圾
Sorbet 已经搞出来了啊
曾经美餐赞助过一段时间 Swift 社区的 T 沙龙,看办公室全部都是 Embody
不会,爽得一批
我给 hooopo 提议的我们上去说相声的提议被他否决了...