• 就你的例子而言,我们做一个测试

    require 'benchmark'
    
    n = 100_000
    arr = 1.upto(n).to_a
    index = n / 2
    
    puts index
    
    Benchmark.bm do |x|
      x.report { 100.times { arr.index(index) } }
      x.report { 100.times { arr[2..].index(index) } }
    end
    

    ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin19] 上的结果

        user     system      total        real
    0.036552   0.000022   0.036574 (  0.036579)
    0.035222   0.000063   0.035285 (  0.035303)
    
        user     system      total        real
    0.034097   0.000060   0.034157 (  0.034210)
    0.030318   0.000049   0.030367 (  0.030414)
    
        user     system      total        real
    0.039931   0.000083   0.040014 (  0.040158)
    0.035147   0.000157   0.035304 (  0.035333)
    

    后者比前者性能略高(考虑误差性能大致一致)

    换一种 benchmark 做法

    require 'benchmark/ips'
    
    n = 100_000
    arr = 1.upto(n).to_a
    index = n / 2
    
    puts index
    
    Benchmark.ips do |x|
      x.config(time: 10, warmup: 2)
    
      x.report("arr.index(index)") { arr.index(index) }
      x.report("arr[2..].index(index)") { arr[2..].index(index) }
    
      x.compare!
    end
    

    结果

    Warming up --------------------------------------
        arr.index(index)   329.000  i/100ms
    arr[2..].index(index)
                           317.000  i/100ms
    Calculating -------------------------------------
        arr.index(index)      3.486k (± 3.5%) i/s -     34.874k in  10.018586s
    arr[2..].index(index)
                              3.455k (± 1.6%) i/s -     34.553k in  10.002732s
    
    Comparison:
        arr.index(index):     3485.6 i/s
    arr[2..].index(index):     3455.3 i/s - same-ish: difference falls within error
    

    两种写法的性能表现几乎相同(考虑误差)

    结果来看两种写法的性能并无差别,你的假设证伪。

    更新:

    换了 Float 一样成立

    require 'benchmark'
    
    n = 100_000.0
    arr = 1.upto(n).to_a
    index = n / 2
    
    puts index
    
    Benchmark.bm do |x|
      x.report { 100.times { arr.index(index) } }
      x.report { 100.times { arr[2..].index(index) } }
    end
    
        user     system      total        real
    0.196415   0.000087   0.196502 (  0.196542)
    0.188249   0.000104   0.188353 (  0.188391)
    
  • 更新了有奖互动相关的信息

  • 更新了几件 T 恤图案的渲染图~

  • 更新了自动加入参会群的二维码~

  • 没 不过群里有发设计稿,我看看能不能把图案放到这里来。

    因为这个周边制作有点特殊性,目前还没做样子

  • 已改

  • 😂 这已经拖延症晚期,再不发就不用发了...

  • 说来小扎的基金会网站也是 Rails 写的...

  • 编译前端资源很消耗 CPU 的,我记得有 Cap 的 recipe 在本地编译传到服务器的

  • Hash[*Array] 堆栈太深?? at 2020年06月29日

    热心的群友已经解答了问题:https://stackoverflow.com/questions/33066859/why-am-i-getting-the-error-stack-level-too-deep-systemstackerror-when-hashin

    The parameters are passed on the stack. If there are too many parameters, you'll exhaust stack space and get the mentioned error.

  • Twitter 上被 Hey 刷屏了 at 2020年06月18日

    据说 Hey 的技术成果过阵子要回馈社区,Turbolinks 6、Stimulus 2 还有 Rails 的一些组件

  • Redmine 的样式还是上个世纪的思路,就用浏览器调试器来做就好了...

  • 好吧,我申请个 up 主去

  • 蛋疼... 那有啥地方上传视频比较方便的...

  • 发了个推展示一下 Dummy App 可以做到的效果

    https://twitter.com/jasl9187/status/1270304483923259393

    有空还可以搞一下表单字段的访问控制(FormCore 本来就有的功能)、会签、动态指派

  • 加油!!!!!!!!!!!!!!!!!

  • rails 框架装不上 at 2020年05月26日

    如果没装烂七八糟常驻的程序的话,很可能是电池老化,这个很正常,可以自己搜一下怎么看电池健康度,如果过低花钱换(在保的话,低于 85% 是免费更换的)

  • rails 框架装不上 at 2020年05月26日

    不耗电啊

  • G 家肯定是 Angular 了,应该不开源,市面上收费免费的 MD UI 框架确实都有各自的小毛病不尽如人意

  • rails 框架装不上 at 2020年05月25日

    10.15 自带 Ruby 2.6,你用 RVM 或者 RBENV 装 2.6.6 吧

  • 如果是单复数词汇的映射错误,可以添加例外列表到 config/initializers/inflections.rb

    加 source 显式指明也不错

  • Ruby 这里比较灵活,因为决定puts 'hi'; 7 if (a<6) 这句话的返回值的是 7 if (a<6) 这部分,显然返回值是 7,接着 7==7 成立,于是满足 puts 'good' 的条件,得到了你描述的结果

    不过灵活归灵活,这种做法或许可以实现某些非常奇妙的效果,但是,可读性永远是第一位的,也就是,虽然你可以,但是尽量还是不要这样做。

    Python 的设计哲学是希望一个事情只有一种做法,所以有时候会显得过于死板了。

  • 这是人的问题,跟技术一点儿关系都没,富士康开工物美价廉的工人得给足

  • 那么我的上一条已经回答过你了。Ruby 在 Web 领域,生态完善、案例众多、技术有效、并非冷门。

  • 不过中文资料少、Windows 下极不友好确实影响在国内的传播

  • Ruby 主要应用在 Web 后端领域,你如果看综合语言排行榜,那么单一领域语言还是很吃亏的,当然也比不过 PHP,那个上手确实容易(从工作经历,我其实是 PHP 转 Ruby),Wordpress 这种杀手应用也太强。

    如果你放眼世界

    Programming Language Usage Distribution in the Top 1 Million Sites Ruby 排第三位(1%)

    Programming Language Usage Distribution in the Top 100k Sites Ruby 还是第三位,但是占比显著提高(4%)

    Programming Language Usage Distribution in the Top 10k Sites Ruby 还是第三位,占比(6%)

    Identify technology on websites Ruby(主要是 Rails)在 Web 框架领域排名第三位

    6 of the Top 10 YCombinator companies use Ruby

    这个市占比,普及率很低么?

    此外国内外有个很明显的差别,朋友进了 AWS,对我讲:“我看了代码仓库,一半的项目都是 Ruby”,可是,你听过 AWS 招 Ruby 么?(我那个朋友是一个 PHP 爱好者,进公司写 Java 和维护一点儿 Ruby 项目)

    Aribnb、苹果,也是大量的 Ruby 系统,你看 Linkedin 上的 JD,招的都是 Software Engineer,某些岗位下会有 Ruby、Rails 是加分项。

    国内其实闷声发大财的公司挺多的,比如听说过商汤有一个 Ruby 团队(之前喝酒有人给我透露过有 30+ 人),没见过他们出来宣传,组织 RubyConf 的时候我一直有一个遗憾(我执行力太差),把那些用 Ruby 但是不声张的公司全炸出来

    另外对于国内 Ruby 市占疲软嘛,我有点得罪人的话,对于公司,能靠堆人和加班就能解决问题的时候,需要谈技术的生产力吗?公司会因为你工作效率高干得多奖励你么?我甚至还过有人对我讲:“你是效率高,但我找 50 个实习生,你拼得过他们么?我找 100 个,你肯定不行了”

    这是对我职业生涯影响最重的一次经历,曾经我的理念是为公司降低成本提高产出,结合国内的经济形势疲软,我就下定决心不再靠依附于公司谋生,自由职业后,我要为工作时间的每一分每一秒负责,此时生产力才真的是问题。

    另外啊,这几年有几阵突然急招 Ruby 工程师,我知道的两次,第一次魔改 GitLab,自主研发代码托管服务,第二次,魔改貔貅,自主研发数字货币交易所。

  • 其实销售能力才是最重要的,不过前端是产品的窗户...

  • 其实你这里 sex 可以用 enum 来做的,然后自动就生成 malefemale 两个 scope 了,rails 6 加了 not_male 这样的 scope,但没有的话你可以自己实现(当然这样就没必要用 enum 了)

    !"male" 这种做法没法搞,这样写必定等价于 false,你可以改写成 by_sex(:not_male) 把 symbol 当 枚举 去用,更改你的 scope 实现做一个 case...when 就好了

  • Ruby/Rails 的生产力高过 Java、Py 等语言我觉得在 RubyChina 应该是有共识的。

    就我提的那个案例的话,从 0 搭一整套 OA(核心功能多租多项目、审批流程、组织结构、动态表单、带全部界面),我一个人实施(其实还是有俩朋友分担了一些工作),工期三个月、期间我还有两个别的合同在同时进行、组织 RubyConf、顺带结了个婚、保证八个小时睡眠和两个小时 山口山 和 SC2 的游戏时间。

    做 Web 或者业务系统都不是什么高精尖的事情,搬砖做体力活要时薪足够高,就只能在效率上找方法(当然把事情做对也很重要),到我描述的这个水平的效率至少我相信只有 Ruby 能带来。我也学习了一些语言,但目的是储备起来配合 Ruby 解决他不擅长的问题,而不是取代它。

    另外的例子,我之前分享过表单引擎 FormCore,能力跟金数据那种商业产品持平,原型版本一个通宵开发完,后来我和 hooopo 做了个带后端存储的商业版本(百万数据表单的过滤聚合查询演示),大概的过程就是吃了个饭聊了方案,然后我花了三个晚上写出来的。 界面虽然丑陋,但是很多公司就靠这种产品就能经营下去了。

    (不会写前端就是不能发财的原罪啊!)

    如果你不相信 Ruby/Rails 的生产力,这些项目代码都是公开的,可以比比看?

  • 当然有条件的话 虚拟机镜像 或者 Docker 分发还是最靠谱的选择