首页
学习
活动
专区
工具
TVP
发布

程序人生

专栏作者
265
文章
283173
阅读量
68
订阅数
renovate: 处理 Postgres 模式迁移
去年 10 月,我在 review 数据库迁移代码时,不断回溯十多个已有的迁移文件,艰难地试图了解目前数据库 schema 的最终形态时,萌生了做一个数据库模式迁移工具的想法。当时主流的模式迁移工具,无论是直接撰写 SQL,还是撰写某个语言的 DSL,都要求开发者以数据库上一次迁移的状态为基础,撰写对该状态的更改。比如要对已有的 todos 表加一个字段 created_at,我需要创建一个新的迁移文件,撰写类似如下的代码:
tyrchen
2023-02-23
6660
想象力,工程方法以及取舍
小时候看《少儿科学画报》,深深烙在我脑海中的一个故事是「不可能先生」。史蒂文森在矿山上做了很多年蒸汽机工程师,对马车拉煤的低效深有感触,于是萌生了把蒸汽机运用在交通运输上的想法。但这个想法遭遇到了无数不可能先生的冷嘲热讽,比如「蒸汽机车不可能比马车更快」,「蒸汽机车不安全」等。他做了很多实验,遭遇了无数次失败。但最终,他通过不懈努力证明了「用火车拉煤」是一件更安全更高效成本更低廉的事情。
tyrchen
2021-07-16
5880
透过 Rust 探索系统的本原:安全篇
安全是我的老本行,隔一段时间不拉出来谈一谈就不舒服。我个人觉得:做应用不谈安全都是在耍流氓。
tyrchen
2021-04-07
1.1K0
透过 Rust 探索系统的本原:并发原语
几周前我写了篇关于并发的文章(透过 rust 探索系统的本原:并发篇),从使用者的角度介绍了常用的处理并发的工具:Mutex / RwLock / Channel,以及 async/await。今天我们讲讲这些并发手段背后的原语。这些原语,大家在操作系统课程时大多学过,但如果不是做一些底层的开发,估计大家都不记得了。今天,我们就来简单聊聊这些基础的并发原语,了解它们的差异,明白它们使用的场景,对撰写高性能的并发应用有很大的帮助。
tyrchen
2021-04-07
1K0
再探 Parser 和 Parser Combinator
在几年前的文章《Policy Engine 的前世今生》里,我谈到了自己探索如何生成高效的表达式求值的工具的整个过程。我先是使用 JISON(javascript 的 Flex/Bison)做了一个解析器(parser),后来又用 Elixir 自己的宏编程进行了优化,让单个表达式的验证从 200+ us 提升到 20+ us。最近无意间看到了 Guido van Rossum 大神的文章 [1],讲他探索 PEG 解析器的历程(Python 3.9 已经实现了新的 PEG parser [2])。于是,这个周末,我花了一个晚上,尝试了用 Rust 下的 PEG 解析器 — pest 重新实现了 policy 表达式解析器部分,为了更好地对比 pest 和 Rust 下的另外一个神器 nom 的效果,我也同时实现了 nom 下的 policy 表达式解析器。
tyrchen
2021-02-26
2.3K0
佛曰:大道至简,序列化之
我的思想被神经元序列化成一句句要表达的语言,进而推动我的双手将其序列化成在蓝牙键盘上有节奏的敲击出的字符流。
tyrchen
2021-02-26
5930
深度探索:前端中的后端
disclaimer: 目前这只是一个想法,并没有落地的实现。我打算将这一思想在 quenya client 中实现。
tyrchen
2021-01-29
1.6K0
2020 活久见:欧美主流 app「熔断」了
在海外做移动端应用开发,有一家公司是几乎不可避免的:facebook(以下简称 FB)。它打造(并且几乎垄断)了从获客到获利(广告)的一条龙服务,使得你无法抵制那巨大的诱惑 —— 前提是你要在自己的 app 里装入 FB 的 SDK。
tyrchen
2020-05-12
5090
为什么有的语言「不能」编译成 WASM?
于是很多 TypeScript 的拥趸不开心了,为什么说我家宝宝不能支持 WebAssembly(下文称 WASM)?有人找出了证据:看,AssemblyScript[1] 明明就可以支持 TypScript 转换成 WebAssemby 嘛。我不知道说这话的人是否真的看过 AssemblyScript,还是道听途说,仅仅知道有这个么东西,就像北京的的哥那样,说着让人不明觉厉的话。其实只要去 AssemblyScript 的 repo 看一眼,hub clone assemblyscript/assemblyscript,随便运行一下里面的例子,你就会发现:
tyrchen
2020-04-15
6.7K3
Wireguard:简约之美
最近团队内部的 BBL,我分享了 Wireguard。Wireguard(以下简称 WG)作为新一代的 VPN 的代表,可能很多做技术的同学都不陌生。和其它 VPN 技术一样,我们可以使用它在家庭网络和公司网络之间搭建一条安全的信道,由此可以访问「内网」的数据和应用。
tyrchen
2019-11-12
3.5K1
软件项目供应链管理的迷思
最近伟创力被华为踢出其供应链的事情,想必大家的朋友圈都刷了屏。对于一家硬件公司来说,良好的供应链管理能够保证产品的质量和产能,进而保证企业服务其客户的能力。在全球化的浪潮下,小到一台手机,大到一部汽车,背后都是一整条产业链数百数千家公司竞争合作,最终共同完成成品。如果一家企业的供应链的某个环节出了问题,那么影响产能还算小事,影响到交付到客户手中的产品就非常麻烦了。好几年前我工作过的公司曾经遇到一个非常棘手的问题,我们的企业级防火墙产品在客户的生产环境总会莫名其妙地发生 crash,软件团队花了很多精力研究不同的 crash,无解,只好求助于硬件部门的同事,后来经过一番苦苦探索,发现问题出在某个版本的产品使用的供应商的某个批次的内存芯片上面。在大流量读写,环境温度的条件影响下,有一定几率产生 bit flip。出厂测试无法捕捉到这样的 bug,但客户的环境下就出现了。这种硬件出问题,往往只能召回和替换,因为都是 SoC,无法局部替换;但这个批次的硬件出货量太大,召回是不可能的,只好在软件上想办法。后来总算完美解决,否则会给我们造成巨额的亏损。
tyrchen
2019-07-30
1.1K0
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档