• 哈,默认 1000 条,满足大部分伪自增需求。

    尽量自己做下伪自增工作。

  • find_each 是 order by 主键的,加上排序会有问题。 送你一个带 order 的扩展

    class ApplicationRecord < ActiveRecord::Base
      self.abstract_class = true
    
      def self.find_eachs(limit: nil , batch: 1000 , order: :id , &block)
        count       = 0 
        last_offset = nil
        next_break  = batch
        data = self.order(order).limit(batch)
    
        until data.blank?
          data.each do |dt|
            count += 1
            block.call(dt)
            last_offset = dt.attributes[order.to_s]
            break if count >= next_break
            break if limit and count >= limit 
          end
          break if limit and count >= limit 
          next_break += batch
          data = self.where("#{order} > ?" , last_offset).order(order).limit(batch)
        end
        count
      end
    
      def self.find_each_datas(limit: nil , batch: 1000 , order: :id , &block)
        count       = 0 
        last_offset = nil
        next_break  = batch
        data = self.order(order).limit(batch)
    
        until data.blank?
          block.call(data)
          data.each do |dt|
            count += 1
            last_offset = dt.attributes[order.to_s]
            break if count >= next_break
            break if limit and count >= limit 
          end
          break if limit and count >= limit 
          next_break += batch
          data = self.where("#{order} > ?" , last_offset).order(order).limit(batch)
        end
        count
      end
    end
    
    
  • WSL1 目前执行 rake 还是比较慢,可能和权限之类的东西有关,没有深究,因为 WSL2 就要出来了。Inside 的 Win 10 已经可以使用 WSL2 了,不过生产机器没敢安装,我等正式版。

  • Ruby 比较适合的不是面向工资编程,而是面向收益编程。也就是说你用 Ruby 做了一件事,这件事有很大收益,包括但不限于 money,而大多数人为了工资,那肯定坚持不下去。

    再者目前缺少大佬推广,为什么呢?现在阶段比较热的是深度学习,谁在这个阶段想把 Ruby 强推起来也难。谁叫 Matz 押宝的不是机器学习而是嵌入式呢?(毕竟日本是电子大国基因)。而对于业务系统而言,虽然我认为 Ruby 比 Java 更适合,但 Java 的以下特点稳固了他的霸主地位:

    1. 轮子多覆盖各领域,满足 “学一门语言工作一辈子” 的面向工资的诉求。
    2. (管理者看起来)员工可插拔性强。
    3. 工种基数大,工会运动能力强。

    再看现阶段互联网、软件行业,主要处在业务系统填坑期,所谓 “互联网 +” 也就是传统行业有大把的业务坑要填,这个阶段的最大诉求是“解决问题”,而 Java 的以上三个 “工业语言” 特性,来填坑最适合。Ruby 就不要在这里竞争了,Ruby 语言本身的 “解决问题” 的能力虽然也很强,但解决不了工源问题。而在大厂里面工会运动搞你也是分分钟的事。搞 Python 的还能说我做深度学习最好呀,Javascript 还能说有本事你写浏览器程序呀。Ruby....猝。

    Ruby 的优势是 创造性生产 。但从 Ruby 语言本身来讲,恢复火爆取决与以下几个条件:

    1. 市场上 “业务填坑” 需求基本慢慢饱和,转而需要创造性生产的时候。比如之前的 web2.0 时代初期、移动互联网初期。当某阶段老的领域已经逐渐饱和,已经很难靠 Farm 挣到钱了,新领域的淘金运动开始,Ruby 和 Rails 的各种优势又能被无限放大。运气好的话出一个 Facebook 大厂,差一点能出个豆瓣这样的中厂。

    2. 内置/第三方 JIT 引擎性能开始爆炸,加上 Ruby 语言级别的良好特性,导至各种高性能领域期望使用 Ruby 作为首选胶水语言。

    3. Ruby 押宝方向大爆发,比如之前押宝的嵌入式。(然而嵌入式这个方向难度还是很大的,毕竟比较硬,需要时间积累,高爆发领域还得是软一些的)

    以上 3 个条件任意同时满足 2 个,加上大咖的宣传,即可恢复荣光。但即便如此 Ruby 仍不是工业级别 Farm 的语言。不建议 Rubyist 面向工资编程。

    现在 Rubyist 应当考虑的是,找到自己愿意深耕 10 年以上的行业,这里说的行业不是互联网、软件,而是垂直行业,无论汽车、O2O、教育、服装、奢侈品、金融,或者更加细分的领域,深入其中,利用好 Ruby 的创造力,去创造工资以外的收益。当然就顺便就创造出了一些工作岗位。当然你也可以积累好 Ruby 的技术和团队,等下一个爆发的时候,可能你就是大厂的大佬。

  • 支持的吧

  • 可以使用 ActionCable + Fork 一个新进程解决耗时操作问题。

    class ExambleController < ApplicationController
      def create
        Process.fork do 
          Foo.loop(1000000) do |bar|
            ActionCable.server.broadcast(channel_id , {bar: bar})
            sleep 0.1
          end
        end
      end
    end
    
  • 今年主题很棒,好想去,可惜。。

  • 能上 RubyChina 应该都不会傻到用其他语言去写后端,项目方指定语言的除外。

  • 如果目的只是写博客文章的话,google cloud 一键部署 WordPress 就行。 不想搭建的话简书就可以,就是有些敏感内容会被河蟹。