阅读
《史蒂夫·乔布斯传》
《一生的旅程》
《创新公司》
《字志 Issue 01》
《字志 Issue 02》
《字志 Issue 03》
《传奇字体Helvetica》
《平面设计中的网格系统》
《原则》
《SICP》
《复杂》
管理
带领团队交付产品
解决团队中的协作问题
看到自己的不足
用在分析、架构设计的时间过少
面向客户的关键沟通做的过少
写程序
python / js monorepo 的踩坑
应用代码设计、编写、测试、重构、优化
基于浏览器的测试框架踩坑、应用
多仓库的代码管理
2022 目标
系统地了解几个行业,更好地配置资产
更深度地了解政治、经济
平衡工作和家庭的时间分配
注意身体信号、保持身体健康
做好和家人的沟通,不逃避需要自己承担的责任
优化团队管理、企业管理意识
保持技术视野
社会动物的孤独感来自缺少深层沟通,每每做出选择,也是挥手告别的时刻,同行者愈发寥寥。
能在自己喜欢的领域发挥是件幸福的事,「有意义」这件事本身就能让人充满希望。最近读到一个有关意义感的例子,说是把囚犯的劳动改成把水在两个瓶子里来回倒这种无意义的活,囚犯在物理和心理地双重折磨下会选择自杀。当发现人生没有意义的时候,是寻找意义还是直接重开?西西弗斯的处境中,我想总是能寻找到一些意义的,活着本层就代表着意义,不愿放弃生命、活下去才可能有后续故事的发生。
孤独不是负面的情绪,只是需要自己跟自己聊聊,我一般会写点文字,一些是他说的,一些是我说的。
有瓶不能分享的酒是孤独,在黑暗中前行是孤独,和同行者分别是孤独,成熟是孤独,狂欢是孤独。
这一年听不少身边的人诉说自己的遭遇,嘻嘻哈哈的人满不在乎地讲着,孤独。
山腰上忙着推石头的我们好像在说什么,但为什么竖起耳朵的我什么都听不到。
做了哪些事情
通用技术
内核恐慌的文字编码系列
编程与商业:《黑客与画家》
编程展望:《代码的未来》
代码艺术:编写可读代码的艺术
计算机
分布式系统:mit6.824
图形学
《计算机图形图像处理基础》
认知
自律与爱:《少有人走的路》
科学、宗教、社会:《我的世界观》
家庭对性格的影响:原生家庭:如何修补自己的性格缺陷
两种思维方式的协作:思考,快与慢
编程
算法、数据结构(leetcode 日常刷题)
协作
开始 own 一个项目的全生命周期
优化与人协同的方式、会议组织、纪要、时间安排等等,确保信息链路的通畅
系统设计与公司组织:从优秀到卓越
小说
月亮与六便士
理财
做了一些消费、环保、能源的基金投资,获取不错的收益
paper
MapReduce
Raft
Content-aware Generative Modeling o
lint 指什么?
通常意义上讲,lint 在软件行业中是指从代码的静态分析中检测出潜在的问题,包括
特定逻辑的写法
设计模式的使用
编程范式的使用
变量命名的方式
代码风格的规定
...
我们对 lint 的诉求是什么?
易于拓展
社区活跃
配置灵活
团队内部开发时有哪些实践?
区分 coding / pre-commit hook / ci / nightly run 四套 lint 规则
coding 为了减少干扰,stylistic lint 都设置为 warn
pre-commit hook 为了减少 lint 占用时间,禁用类型相关的 lint (同时提供手动触发全量 lint 的 script)
ci 为了统一代码风格、减少冲突和 reviewer 痛苦,把 stylistic lint 打开
nightly run 集成类似 sonar.js / depreca
认识你自己,这是一切事物的前提。苏格拉底
看《从优秀到卓越》时读到一个古希腊关于狐狸和刺猬的寓言(注:不是伊索寓言中关于狐狸和刺猬的那一则)
狐狸知道很多事情,但是刺猬知道一件大事,狐狸是一种狡猾的动物,能够设计无数复杂的策略偷偷向刺猬发动进攻,狐狸从早到晚在刺猬的巢穴四周徘徊,等待最佳袭击的时间,狐狸行动迅速,皮毛光滑,脚步飞快,阴险狡猾,看上去准是赢家,而刺猬则毫不起眼,遗传基因上就像豪猪和犰狳的杂交品种,它走起路来一摇一摆,整天到处走动,寻觅食物和照料它的家。
狐狸在小路的岔口不动声色的等待着,刺猬只想着自己的事情,一不留神瞎转到狐狸所在的小道上,“啊,我抓住你了”狐狸暗自想着,它向前扑去,跳过路面,如闪电般迅速,小刺猬意识到了危险,抬起头,想着“我们真是冤家路窄,又碰上了,它就不能吸取教训吗?”它立刻蜷缩成一个圆球,浑身的尖刺,指向四面八方,狐狸正向它的猎物扑过去,看见了刺
在《从优秀到卓越》中吉姆·柯林斯调研了很多危机中的企业逆势复兴的案例,分析了保持一个企业可延续的卓越表现背后的共通因素,有低调、谦逊、务实、果断、有信念等等特质的领导人,有自我管理、负责、对事不对人的企业文化,有对局面的全局视野、哪些该做、哪些该放弃有着清晰的认知。
其中训练有素的文化这一章中有讲去等级化,一些管理人员希望得到有别于普通员工的身份标识来彰显自己的特殊性,很多保持卓越的企业中,这些特殊性会被刻意淡化,来保持管理层和基层的目标一致性(凝聚力)。从管理者的角度看,如果他有优秀的管理能力,那么这种等级上的区分(优势)可能会给他们的管理工作带来好处(表面上解决目前的矛盾),也可能带来麻烦(员工抵触情绪、隐藏的矛盾、效率降低、增加摩擦),反而能力不足的人才会过分在意这样一份权利宣告书。这样看起来,仿佛是一种虚张声势。
生活中另一种常见的虚张声势来自孩子,他们尝试吓走争抢自己玩具的其他
先讲讲项目的性质和部署方式,项目是前后端分离的,都用的 gitlab 的 CI/CD 去打镜像,build stage 过了后发到 k8s(前后端并发 apply 自己的 k8s yml),即
git tag -> lint + test -> build -> build docker image -> k8s apply yml -> notify
k8s 集群的部署环境简化一下是这样的
阿里云 SLB -> k8s ingress -> fe service -> be service -> DB
阿里云 SLB -> k8s ingress -> be service -> DB
也是比较典型的配置方式,其中前端是用 openresty 在 docker image 中带起来的
有几次发现部署不稳定,现象是前端
咕咕,我来了,带着写了一年的 typescript,不留一个 enum
库的依赖管理
库的依赖管理问题是我开始写非业务代码后遇到的第一个工程问题,它的复杂性在于保证依赖解析正确的前提下,怎么减少共用包的资源占用(存储、解析)。
python / js 在引包的时候不会带上版本,只用包名称来 resolve,版本控制放在项目中,让项目环境来保证版本正确性。
每种语言都需要一个合适的包管理器。
好处包括
升级依赖时,如果版本是兼容的,那么代码不需要改,对于项目管理来讲是很简便的
节省存储、运行时资源,同一个库可以被多个使用者共享(动态链接的方式
坏处有
环境管理的复杂性带到开发时、发布时、运行时。首先开发者需要工具来管理开发时依赖、固定依赖库的版本、方便地定制库的 resolve 方式(比如 resolve 到一个本地路径,一个网络地址等等);发布的时候需要维护发行版本和底层依赖的版
@[toc]
技术
js 生态
eslint
webpack
es 各个版本的特性
深化对软件版本的认识
wasm 生态了解
typescript 语言
对 structual typing 的认识
类型系统的实践
测试框架 jest / mocha 的使用
nodejs 流的处理
react 生态了解
mobx
hooks
通用工程
多环境代码的管理
sentry / jira / gitlab 的联动
编程
算法、数据结构(刷题)
编译器入门(《编译原理》)
协作
提高管理日程、估算任务用时、拆解任务的准确性
优化开会方式、记录会议纪要
偏业务
系统、浏览器的字体加载方式
设计师如何看待配色
规则引擎的设计及可视化
管理
什么是管理
团队培养
风险管理、项目管理
OKR 目标制定
《你的灯还亮着吗?》
信息源
开始使用 twit
在相当大部分的时间中我都是一个对政治无感知的人,直到开始读编程随想后,开始走上自主阅读的路,陆陆续续读了《1984》,《美丽新世界》,又挨了社会的毒打才渐渐发现参与政治的必要性(虽然在厉害国并不能实现有效参与政治)。
有段印象深刻的文字来自村上春树关于高墙和鸡蛋的比喻,在信息真假无法分辨、弱势群体又几乎无法发声的社会,更需要民众关注公众事件并支持弱势方发声才能增加事件的影响力,从而推动真相的揭露,以及可能的改良/改革。政治制度的落后在其他行业都有所体现:经济(权力和金钱结合)、司法(权利和法律结合)、行政(权利和政治结合)、企业经营(权利和社会结合),既得利益者的权利越大,改良/改革的阻力越大,而矛盾爆发的事件只能暂时被噤声,暗流会愈加汹涌(体现在维稳费用的不断拉高、公众事件爆发越发频繁)。
犹太人屠杀纪念碑碑文也是表达类似的观点,如果不想自己受到不公正的对待,需要首先把公正、平等放在第一