• 👏

  • @xmonkeycn @as181920 @jimmy23

    是 7.20 下周二,不是本周二。

    你们别记错日期了。😀

  • 非常感谢今年的组织者,我能把门票吃回本了。

  • 看的我好饿啊。

  • 刚才看了一下,Terraform Cloud 免费版本有 5 个名额的限制。

  • 原来 Terraform Cloud 已经免费了呀,那真是太好了,我现在用的 S3 保存 state,DynamoDB 做 exclusive lock

  • 其实文件的组织方式,只是方便人类组织代码。对于 terraform 来讲,它会把所有的 .tf 文件合并为一个。

  • 财务自由(被动收入超过工资收入)是这个社会灌输给普通人的谎言。

    关于创业

    创业挺好的,我也在一个创业公司,每天做的东西也很有趣。但是把财富自由的信念寄托在创业上,是它不能承受之重。

    • 90% 的创业公司都会在三年内死掉。
    • 即使没死掉,也可能是半死不活,更不要提上市了。
    • 即使上市了,你不一定有太多股份。
    • 即使你有股份,有可能被合伙人坑了。
    • 即使没有坑你,行权价又可能比股价都高,到时候期权变废纸。比如人人网。

    关于数字货币

    赌博的人多了,难免有个别人运气好,连续都赢。但大部分人都是分母,钱来得快,跳楼更快。

    等流动性恢复正常时,到时候再看看谁在裸泳吧。


    大部分人都是平凡的打工仔,对于普通人而言,控制自己的欲望最切实可行。

    所以我觉得这个老程序员说的才是实话:合理储蓄,不要过度消费。在自己的能力圈内持续的投资,比如买套房,或买点低费率的 ETF。

  • 如果你用的是 Aws 全家桶的话,AWS certificate manager 可以自动续签证书,自动更新 cdn 和 loadbalancer 挂载的证书,而且免费。

  • 一开始我想的方案:自己用 jenkins master 起多个 node 并行跑,用 amazon spot instance 做 jenkins 跑测试的 node。

    但是折腾起来太费劲了,估计我得折腾一个月,还需要牵扯到日后的运维工作,不如花钱用 circleci 简单。程序员一个月的工资够 CircleCI 跑 2 年了。

  • circleci 支持并行跑测试,只要付费就行了。

    大概逻辑:

    1. 起 24 套测试环境
    2. 把测试文件切分一下,然后交给 24 个环境去跑。 TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=name)"
    3. 最终把结果汇总起来。

    这是我们的配置,比较陈旧了,但是还能正常工作,下一步是升级到 version 3。

    # Ruby CircleCI 2.0 configuration file
    #
    # Check https://circleci.com/docs/2.0/language-ruby/ for more details
    #
    version: 2
    jobs:
      build:
        parallelism: 24
        working_directory: ~/workstream
        docker:
          # specify the version you desire here
          - image: circleci/ruby:2.6.6
            environment:
              BUNDLE_JOBS: 3
              BUNDLE_RETRY: 3
              BUNDLE_PATH: vendor/bundle
              PGHOST: 127.0.0.1
              PGUSER: root
              RAILS_ENV: test
          - image: circleci/postgres:9.6
            environment:
              POSTGRES_USER: root
              POSTGRES_DB: workstream_test
              POSTGRES_PASSWORD: test
          - image: docker.elastic.co/elasticsearch/elasticsearch:6.3.2
          - image: redis
    
        steps:
          - checkout
          - run: cp config/database.yml.example config/database.yml
          # - run: sudo chmod 777 /root/repo/vendor/bundle
    
          # Download and cache dependencies
          - restore_cache:
              key: workstream-{{ checksum "Gemfile.lock" }}
    
          - run:
              name: install dependencies
              command: |
                bundle install --jobs=4 --retry=3 --path vendor/bundle
    
          - save_cache:
              paths:
                - ./vendor/bundle
              key: workstream-{{ checksum "Gemfile.lock" }}
    
          # Database setup
          # - run: bundle exec rake db:create
          - run: bundle exec rake db:schema:load
    
          # run tests!
          - run:
              name: run tests
              command: |
                mkdir /tmp/test-results
                TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=name)"
    
                echo "run the following line to reproduce the failed test case"
                echo "========================================"
                echo "bundle exec rspec --seed 100 $TEST_FILES"
                echo "========================================"
    
                bundle exec rspec --profile 10 \
                                  --format RspecJunitFormatter \
                                  --out /tmp/test-results/rspec.xml \
                                  --format progress \
                                  --seed 100 \
                                  $TEST_FILES
    
          # collect reports
          - store_test_results:
              path: /tmp/test-results
          - store_artifacts:
              path: /tmp/test-results
              destination: test-results
    
    
  • 我们用的 circleci,一次起 25 个 container 跑测试。本来 45 分钟的测试,4 分钟跑完。

  • Event Sourcing 主要的思想是记录事件,没有修改和删除。事件 replay 得到结果,有点函数型的数据不变的意思。

    我的理解 Event Sourcing 是个状态机。下游通过持续不断的 apply event,获得和上游一样的状态。

  • 答案是,人多。

    上海一个市的人口,差不多等于整个加拿大人口总量。

  • 一楼说的都是真事。

    那个评论同事漂亮被警告的,据说原因是“不能评价别人的长相”

  • 你对 cloudformation 怎么看?

    如果让你选择,你会用 terraform,还是 cloudformation?

  • 人的精力有限,

    选择一:做一个全面手,对全局有一个整体的认识,然后重点精通一两个领域。

    选择二:做技术专家,一个领域钻到底。

    两个都是不错的选择。

  • 时效好像是三年。

    三年之后,可以再考虑考个 professional 版本。

  • 这是我们公司的简介,我们还在招聘 ruby 程序员,欢迎投简历。

    https://ruby-china.org/topics/40332

  • 我把你重复发的几个招聘帖删了,建议你把所有的招聘岗位合到一起,不要重复发帖。

    此外请把公司名称/公司简介/薪酬待遇都写清楚。要不然只能当做骗简历的广告帖处理。

  • 对于这种待条件的查询

    FastCount.new(User.where("id > 200")).call

    数据库的 explain 的估算值好像是根据直方图来估算的。如果直方图的粒度很粗,字段的值的分布也不均匀,估算值可能会有很大的误差。

  • 好奇,你咋不弄几个 counter 存统计数据。

    每隔一小时计算一下 count 就可以了。

  • 元编程一时爽,后人维护火葬场。

    元编程主要用来工具 (lib) 中,CRUD 时最好不要用元编程。

    • 过一个月,你不知道你自己写的是什么意思。
    • 团队里的新程序员读不懂你的代码。
  • 我经常听别人说到这点,所以就列出来了。

    那我改的委婉一点。

  • EC2 差点删库跑路 at March 24, 2021

    你们的数据为什么放到 instance store 中,而不是 EBS volume。如果放到 EBS Volume,Terminate Instance 似乎并不会影响到 EBS Volume 的数据。

  • 这功能真棒。不需要额外的 gem 了。

  • 请投递简历到这个邮箱,谢谢。

  • 微服务的 health check,大家通常是怎么做的?

    如果 gPRC 服务挂掉了,caller 通常该怎么办呢?如何在框架层面统一处理微服务挂掉的情况?