Pensieve: 1910
2019-10-27 09:30
所观所读
看完了半泽直树, 罗小黑战记, 哪吒, 花椒之味和速度与激情特别行动. 另外还看了某一集南方公园.
半泽直树结局看过网上很多讨论的, 有说保护性下放的, 有说是打击报复的, 实际上作者就是想找个由头写续集嘛, 没必要过度解读. 不过说真的, 结局我很喜欢. 看前面, 以为行长就是一个传统的开明君主的角色, 后面看到行长面对小和田的咄咄逼人也不动声色, 开始觉得有点不对, 当看到行长指点半泽, 说如果不把小和田当作一个普通人就没法打倒他时, 就觉得这已经是灰吃灰的戏了.
两个动画片, 罗小黑和哪吒, 前者看得我睡着了, 后者的节奏感也远没有大圣归来那么好, 只有配音比较投机取巧, 还算不错. 总体来说, 都挺一般的.
花椒之味我觉得挺好看的, 挺有读石黑一雄小说的感觉. 特别行动为了动作戏和视觉效果已经放弃了讲故事的努力, 不提.
最后, 挑着看了南方公园23季第二集, 因为涉及到太多政治话题, 不展开了. 你看, 虽然人在国外, 但也习惯了自我审查, 这就是某政权的威慑力.
在重读英雄志, 回头看, 小说前面还好, 中间有些部分的笔法让人读起来尴尬.
所玩
Diablo3的18赛季终于刷到100级大秘境, 毕业了. 很幸运地刷到了一个太古套装部件, 而且几个部件的重铸运气都挺好.
除此之外, Darkest Dungeon也算是玩完了. 这次重新拿起来之前有好久没玩, 所以刷大炮时没注意晕炫技团灭了, 但是后面接着轻松过了几个boss, 而且最后的darkest dungeon也算是去玩了一圈, 想建造的建筑都刷完了, 基本上这个游戏没什么追求了.
月底买了Ring Fit Adventure, 开始锻炼身体. :)
Project Euler
这是刚进网易时玩的一个编程网站. 最近工作写Python不够多, 手痒就把这个捡起来重新写. 现在仍在整理/重做之前已经做过的题目, 进展才60出头. 回头看看自己八九年前写的代码, 真烂.
我对这个网站印象最深刻的是一些非编程题, 例如计算强手棋(Monopoly)里面哪些格子的访问率最高, 例如解数独等等. 还有些更像是纯数学题, 不去Wolfram的Mathworld读一两篇文章无从下手.
Buildkite
最近这份工作接触了很多Buildkite, 相比于之前用的Jenkins, 有好有不好, 在这儿写写对它的理解和使用模式.
CICD工具的大致工作原理都是一样的, 在一个集群里每台机器上都装一个Agent, Agent能够从服务器拿到任务, 在一个容器中运行任务并返回结果. Buildkite和Jenkins的主要区别有:
- 没有java的技术积累和技术债, 因此功能有限. 但是95%的人所需要的功能都有了, 而且相对于Jenkins简单易用
- pipeline的语法是一个yaml的DSL, 比Jenkinsfile的可维护性高很多. 这一点上来看, 和Ansible很像.
当然, Buildkite的缺点也不少, 有些是特意的, 有些则真是功能上的缺失:
- 不支持在pipeline里面写复杂的逻辑判断, 这一点我相信是特意的, 因为本身yaml不支持复杂的逻辑编写. 但是, Buildkite支持运行一个脚本生成pipeline.yaml的调用方式, 所以如果你愿意, 你大可以把所有的逻辑放到脚本里面来.
- 虽然支持SSO, 但是不支持从LDAP/ActiveDirectory读权限信息, 对于大的企业而言, 这是个很大的问题, 所有的权限都得在Buildkite里面单独管理.
- 不支持参数式调用pipeline. 在Jenkins里, 你可以给pipeline加上参数, 调用的时候由人填写. 这样可以将很多操作封装起来, 方便维护的需要. 在Buildkite里面, 你只能通过修改环境变量的方式来改变pipeline的行为.
- 没有secret管理. Buildkite官方推荐的做法是将所有的secret放到S3里面, 这样能够让每个人访问到, 也不必直接将secret暴露在代码里面. 但是这样这不是一个成熟的方案.
- Buildkite是一个收费服务, 这个问题见仁见智吧.
说完了缺点, 说几个优点吧:
- 界面易用性和Jenkins真不一个时代的.
- 前面提到了, Buildkite支持用脚本来生成pipeline. 这样的话可以用各种模版引擎来减少重复代码.
- 扩展Jenkins很难, 扩展Buildkite相对比较容易. 对大多数人而言, groovy是一门陌生的语言, 为了扩展Jenkins而去写共享库, 你必须得用这门不怎么友好的语言去写. 而在Buildkite里面写plugin时, 你可以使用bash, 也可以使用任何你想要的语言, 所以开发的成本会低很多.
- 仍在活跃开发中, 开发组不断加入新功能. 而Jenkins的社区, 恕我直言, 已经死了. 比如, 最近我在整理公司的一群pipeline, 需要定义任务之间的依赖关系. 这个功能官方文档没有提到, 我在网上搜寻workaround的时候, 发现这个功能几周前有public beta了, 于是正好用上.
最后说几个使用模式:
- 通过分组来控制权限, 例如版本发布的pipeline可以授权给某个组的人可以修改, 其他人不能修改, 只能运行.
- 将共享逻辑做成插件, 方便复用.
- 根据用途不同而区分不同的agent. 例如, 为了多利用docker的缓存机制, 可以开一台机器, CPU不用好, 硬盘够大, 看着CPU核数来配置每台机器的agent数. 一直不关机. 而通常用的agent, 可以在ASG里面设定ScheduledAction来定期关机.