• 作好不容易

  • require 'benchmark'
    
    def fib n
      if n < 2
        1
      else
        fib(n-2) + fib(n-1)
      end
    end
    
    # 直接执行
    puts Benchmark.measure {
      8.times do
        fib(40)
      end
    }
    
    # 进程
    puts Benchmark.measure {
      8.times do
        fork { fib(40) }
      end
      Process.wait
    }
    
    
    # 线程
    puts Benchmark.measure {
      8.times.map {
        Thread.new{fib(40)}
      }.each{|t| t.value}
    }
    
    
    # Ractor
    puts Benchmark.measure {
      8.times.map {
        Ractor.new{ fib(40) }
      }.each{|r| r.take}
    }
    
    方法 user time system time user+system times real time
    顺序执行 84.713012 0.131839 84.844851 84.845332
    进程 0.000214 0.002798 14.607795 14.787335
    多线程 84.604395 0.145657 84.750052 84.744966
    Ractor 116.438639 0.148765 116.587404 14.853680

    答案是 Ractor 和多进程差不多快

  • Ruby 怎么就是网红了? at 2022年04月07日

    商业公司支持的语言,早晚受到限制。比如 Java,收割你。

    Nodejs 的社区 npm 包质量太次,普遍进入维护期了,疯狂报 warning

    Python 的问题在于永远无法拥有真正的 JIT。没有标准化实现,Instagram、Dropbox 使用 Python 的都尝试过研发 Python-JIT 已经失败了好几轮 Python 社区,我怀疑混入了 Node 社区的人,花式加一些无用的语法最近。

    Ruby 唯一没有金主爸爸。这个角度,他是属于自由个人的选择。 Ruby 的 gem 幸存下来的,都经过一番洗礼,质量都挺高。保持小众,猥琐发育也挺好。要像 npm 那样,100w 的包,一半都失效了,各种问题。。。也是蛋疼。

    小众好处也是一种筛选吧,真正热爱的人会继续搞好的。像 Java 作为大众蓝领语言,已经膨胀到难以理解了。

    不管怎么样,我会继续偷着用 Ruby 😀

  • Roda at 2022年03月12日

    可能这就是它的优势所在。

    就像 lisp 程序,程序就是在写 AST 一样

  • Roda at 2022年03月11日

    Yep, I can

  • B 站直播怎么样,给老铁刷火箭

  • 补充,想要运行里面的返回函数怎么办呢?

    method(a()).call

    可以用户 method 获得 :c 的函数主体,然后调用 call 调用它。

  • 涉及到 2 个背景知识:

    1.符号

    符号 用 :xxx 来表示。符号用于 方法名、类名、常量。符号是一种特殊的数据类型,他唯一、检索速度快。所以被用于前者。想想是不是很合理?非常合理。为了性能。

    2.返回值

    ruby 认为所有函数都应该有返回。即使是返回空,也是一种返回。所以除了 显示调用 return 返回值,默认没有 return 的情况下,返回方法内最后一个计算值。它相当于

    def a
    
      return def c
    
      'hello,world'
    
      end
    
    end
    
    

    所以这里,函数内部被调用,没有 return 情况下,会返回 内部定义的函数名,函数名用符号表示,所以返回 :c

  • 微软可以用 Mac 么

  • +1

    所以都切换为电脑版搞

  • not in 踩坑记录 at 2022年02月14日

    SQL 特殊地方,他是一个 三元逻辑系统 true、false、null 逻辑处理的时候,必须要考虑 null,除非这个字段加了 非 null 约束。

    他的布尔值运算,也要遵循三元真值表。

    (前几天看了,逃。。。

  • 关于远程 at 2022年02月11日

    感觉远程这件事,算时间成本、租办公区成本,应该是比较共赢的。只是这个想法里面,对打工人利好,管理者应该不想。

  • 速度上来了。以前 gitlab.com 访问起来非常非常慢

  • Ruby 开发人员流失严重 at 2022年02月08日

    可以这样理解。毕竟 KPI 驱动、急功近利的晋升导向的不良氛围,而且维护性根本不可靠。而且做来做去就那点东西抄抄弄弄的。

    实话是活,和国外还是有点差距。

  • 在 Fly.io 部署 Rails 应用 at 2022年02月07日

    他们家网站的插画,真是喜欢

  • 答案如果找到了,AI 不就造出来了。如果 AI 造不出来(不能被复现) 说明答案还没找到。

  • Ruby 开发人员流失严重 at 2022年02月05日

    有时候我觉得,这跟 Ruby、Rails 都没什么关系。

    市场上有的是未成熟的技术就有人上赶着去用。Go、Rust 周边设施都没完善起来。Nodejs 也是乱七八糟的情况。

    新技术替代旧技术,有一大部分原因是一种技术营销的结果。

    另外还有一个国情特殊,国内的人喜欢迷信有国外大厂背景的技术比如 Google,仅此而已。国外大厂推出了什么,国内就会换一波。这几年一直都是这样。

    国内缺乏上游技术制造的氛围和生态,所以总是换来换去。

  • Ruby YJIT 原理浅析 at 2022年01月18日

    🆙

  • Ruby 的分裂 at 2022年01月18日

    截止今天 Rubinius 2 年没又提交了。

    看来东西也要看是否能坚持到底

  • 如果自己,可能是正则、字符串替换。

    这个是 Ruby 的 Syntax 范畴,肯定是 他的 解释器里面 Parser 部分实现的。转成 AST,以语法的形式处理。

  • 观望观望

    作为前端,深知前端的轮子都靠不住。三天打鱼,两天造轮子。

    之前看到一个 https://lit.dev/

  • 分布式 Ruby 解决之道 - DRb at 2022年01月04日

    👍

  • 背景:在公司的 slack channel 里一直安利 Ruby,突然有一天,有个同事问我——想白嫖一个环境搭建的教程。

    我是菜鸡,难的我不会。可是这个简单啊,我快速撸一篇,这个适合新手。

  • 一步一步 DSL at 2021年12月18日
  • Ruby 标准库有趣部分摘要 at 2021年12月09日

    update

  • Ruby 标准库有趣部分摘要 at 2021年12月08日

    我其实觉得有高质量的标准库挺好的。

    JavaScript 就不存在高质量、标准库。所以各种代码的操作都极大地围绕周边第三方仓库。一些简单的事情也很复杂。百里不同样。 第三方也可能不维护了。这样说可能有些人都没有概念。比如处理时间,JS 是没有自己完善的标准库的。需要仰赖第三方,那你选择就多了 moment、date-fns ……简单的事情,可能每个仓库不同人经手口味不同。

    简单的事情也变复杂了。

    这个角度,我其实很欣赏官方愿意花精力维护一些标准库。

    而且 Ruby 的标准库范围很广,让我觉得很有趣。 etc 的存在,意味着,你去写一些命令行的程序也很方便。操作系统方面兼容性的细碎不是一般小白,或者我就想快速做一个脚本。这样的人可以搞定的。

  • web 即 app

  • 一台服务器部署多个项目 at 2021年11月02日

    周杰伦可以给我签个名么