主要 EM 年久失修,async 还是活跃开发的
coinbase, stripe 两家大厂出品,估计不会降低性能(运行时检查应该可以关掉)。
类型系统对于重构绝对是必须的,已经提交试用申请了
不错,EventMachine 有点老了,https://github.com/socketry/async 推荐一下
是的,最常见反驳理由是 Matz 不喜欢.. Ruby Governance 问题还是挺大的
欢迎 pr!
应该没问题啊,这个库还是很稳定的,别用 master 分支,用 release 的 gem 来跑试试
你需要本更好的教程:《Ruby 元编程》
没什么醉的,在脚本语言里非常正常的情况
Rust 的闭包就很像是 block 了,Rust 闭包和 Ruby block 相比更像是 function,但和 function 也不完全相同,所以不能算是去掉了 block。
体验是会少很多特殊情况,比如 block 的特殊的上下文跳转规则就不需要了。 而 Ruby block 的上下文跳转也就是在 each 这些里面会使用,Rust 选择了使用 for 语法,其他当作匿名函数的情况 Rust 使用了类似 block 的语法来表达。
相比之下 Rust 闭包设计的更简洁,意外情况更少。像是 Ruby 中 block 可以传给任意方法, block_given?
这些配合 block 的特殊语法就都不需要了
应该是 each 需要调用 block 的消耗吧,建议用更牛逼的 profile 工具试试能不能看?
没细看,不过看上去应该是 Array#max
是 C 语言实现的原因
Ruby 有 Enumerable
和 block 语法,所以不需要增加列表构造这个语法。python 的 lambda 只能一行所以经常用列表构造而非 map 等函数
马太效应 开发者越多的语言库越多,应用越广,生态更加健壮,会不断与开发者少的语言拉开差距
就和开发 Web 为啥不用 Rails 一样,开发科学计算的为啥不用这么好用的 Python 套件呢? 1 楼这种屁话真是无力吐槽了..
自认有能力或想要锻炼自己的话,与其花时间争论不如尽量多为社区做些贡献,开发些自己擅长领域的 gem 或项目
Ctrl-P 文件之间跳转
那你肯定没有考虑不破坏之前 require 用法的情况
我是觉得想要真的摸索 ruby off rails,这个功能对 ruby 还是很重要的 (当然实现方式不一定这样
rails 优秀的框架设计和约定优于配置哲学,其实在帮程序员很好的管理了代码的复杂性,一切代码井井有条,自有 DHH 帮你安排
当你 off rails 时可能发现 ruby 对于管理复杂性没有很好的通用方案,rust python 甚至 nodejs 都可以仅仅 "import" 需要的东西而忽略其它实现相关的代码,当你引入一个大项目时非常有帮助
另外 ruby 目前的设计是用 TOPLEVEL BINDING,但这不代表 rubyist 都要做原教旨主义者,这个提议的很大一部分就是在考虑如何同时兼容两种用法 (想一想连 nodejs 都能引入模块),平衡各种设计让用户选择才是 ruby 的魅力所在
还有这个提案是不破坏旧的 require 功能的,对使用 require 导入的用户完全透明
控制命名空间是包的使用者来决定,只想写脚本可以完全和之前一样 require
你说的好像是只有 python 有 import 一样,应该反过来说 import 是个很好的控制复杂度的功能,除 ruby 外的主流语言中几乎都支持
没有,ruby 的字典默认是有序的(但是没规范...看到 SO 上有回答者说甚至没有对这个顺序测试)
所以想要可靠可以选择用外部的 https://www.rubydoc.info/docs/rails/4.1.7/ActiveSupport/OrderedHash
这就看你认为程序员的价值是体现在人肉 SQL 翻译还是思考逻辑上了
重复执行的话应该是因为你写错了。
一般 Web 后端用 Sidekiq 比较好,原因是你可以看到哪些任务报错了,哪些执行了,而且不会因为你退出 Web server 而意外中断请求,导致不知道请求发没发出去。
简单点的话用 concurrent-ruby 也不错,直接用 Executor
就挺方便。
Call API 时 IO 是由 linux 内核帮你处理的,你只是调用 linux 内核接口,告诉它需要发送一些包,然后内核帮你处理,程序在这里等着处理完成。所以并行在这里是不存在的,应该叫并发,就是你告诉 linux 内核要发两个请求,然后同时等这两个完成
最简单的方法就是
t1= Thread.new{buy..}
t2 = Thread.new{sell..}
t1.join;t2.join
但还是推荐 concurrent-ruby 实现的 ExecutorPool, 可以控制线程数量
作死一点的话你也可以试试最近的高科技并发库 https://github.com/socketry/lightio
感觉还是找适合自己的环境吧,这样才能专心做事,否则浪费时光
报名
输入卡,右边无法跟随输入位置
parser 不是重点啊,puma 不是因为 parser 才比别的 server 快,写文章要有重点的
懒惰几年积累了足够的愧疚感
3 年及以上 J2EE 开发经验,熟悉 Spring、Mybatis 等开源框架,熟悉分布式、缓存、消息等机制;
..这条就已经干掉 ruby 社区的同学了吧
有耐心的话可以慢慢看 webrick 源码,结合文档一起看