👏
非常感谢今年的组织者,我能把门票吃回本了。
看的我好饿啊。
刚才看了一下,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 了。
请投递简历到这个邮箱,谢谢。
微服务的 health check,大家通常是怎么做的?
如果 gPRC 服务挂掉了,caller 通常该怎么办呢?如何在框架层面统一处理微服务挂掉的情况?