👏
非常感谢今年的组织者,我能把门票吃回本了。
看的我好饿啊。
刚才看了一下,Terraform Cloud 免费版本有 5 个名额的限制。
原来 Terraform Cloud 已经免费了呀,那真是太好了,我现在用的 S3 保存 state,DynamoDB 做 exclusive lock
其实文件的组织方式,只是方便人类组织代码。对于 terraform 来讲,它会把所有的 .tf
文件合并为一个。
财务自由(被动收入超过工资收入)是这个社会灌输给普通人的谎言。
创业挺好的,我也在一个创业公司,每天做的东西也很有趣。但是把财富自由的信念寄托在创业上,是它不能承受之重。
赌博的人多了,难免有个别人运气好,连续都赢。但大部分人都是分母,钱来得快,跳楼更快。
等流动性恢复正常时,到时候再看看谁在裸泳吧。
大部分人都是平凡的打工仔,对于普通人而言,控制自己的欲望最切实可行。
所以我觉得这个老程序员说的才是实话:合理储蓄,不要过度消费。在自己的能力圈内持续的投资,比如买套房,或买点低费率的 ETF。
如果你用的是 Aws 全家桶的话,AWS certificate manager 可以自动续签证书,自动更新 cdn 和 loadbalancer 挂载的证书,而且免费。
一开始我想的方案:自己用 jenkins master 起多个 node 并行跑,用 amazon spot instance 做 jenkins 跑测试的 node。
但是折腾起来太费劲了,估计我得折腾一个月,还需要牵扯到日后的运维工作,不如花钱用 circleci 简单。程序员一个月的工资够 CircleCI 跑 2 年了。
circleci 支持并行跑测试,只要付费就行了。
大概逻辑:
TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=name)"
这是我们的配置,比较陈旧了,但是还能正常工作,下一步是升级到 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 版本。
我把你重复发的几个招聘帖删了,建议你把所有的招聘岗位合到一起,不要重复发帖。
此外请把公司名称/公司简介/薪酬待遇都写清楚。要不然只能当做骗简历的广告帖处理。
对于这种待条件的查询
FastCount.new(User.where("id > 200")).call
数据库的 explain 的估算值好像是根据直方图来估算的。如果直方图的粒度很粗,字段的值的分布也不均匀,估算值可能会有很大的误差。
好奇,你咋不弄几个 counter 存统计数据。
每隔一小时计算一下 count 就可以了。
元编程一时爽,后人维护火葬场。
元编程主要用来工具 (lib) 中,CRUD 时最好不要用元编程。
我经常听别人说到这点,所以就列出来了。
那我改的委婉一点。
你们的数据为什么放到 instance store 中,而不是 EBS volume。如果放到 EBS Volume,Terminate Instance
似乎并不会影响到 EBS Volume 的数据。
这功能真棒。不需要额外的 gem 了。