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

程序人生

专栏成员
266
文章
298177
阅读量
69
订阅数
renovate: 处理 Postgres 模式迁移
去年 10 月,我在 review 数据库迁移代码时,不断回溯十多个已有的迁移文件,艰难地试图了解目前数据库 schema 的最终形态时,萌生了做一个数据库模式迁移工具的想法。当时主流的模式迁移工具,无论是直接撰写 SQL,还是撰写某个语言的 DSL,都要求开发者以数据库上一次迁移的状态为基础,撰写对该状态的更改。比如要对已有的 todos 表加一个字段 created_at,我需要创建一个新的迁移文件,撰写类似如下的代码:
tyrchen
2023-02-23
6920
新的系列视频:从零开始构建资源预定系统
九月初的小长假,加上 Tubi holiday,四天时间里我做了 9 个视频,一口气把 xdiff 系列弄完。这系列一路发到了十月初。在此期间,我基本无暇打理 B 站视频,只是在视频库存快要见底的时候思考过下一个系列发什么。恰巧最近业余时间都在研究和 postgres 相关的项目:
tyrchen
2022-12-05
5450
我被 pgx 及其背后的 Rust 美学征服
知道我的人都了解,自 2018 年比较正式地学习 Rust 以来(在此要感谢张汉东老师的大力推荐),我慢慢被 Rust 征服,成为一名不折不扣的拥趸。我的业余项目,90% 都是用 Rust 写就的,另外 10% 基本被 typescript(前端)和 python(主要是 notebook)瓜分。我对 Rust 热爱也体现在我的公众号和 B 站上,近两年发布的内容,主要和 Rust 有关。然而,我很少直接吹捧 Rust,更多是通过 “show me the code” 来展示 Rust 的美妙。这个周末,在 reddit/rust 版,我无意发现了 pgx 这样一个使用 Rust 来撰写 postgres extension 的集成工具,在深入地了解其文档并写了几百行代码后,我立刻就被那种直击心灵的简约之美冲破了防线,不得不在此吹上一波。如此优雅地解决另一个生态系统(postgres)的扩展的问题,我就想说,除了 Rust,还有谁?
tyrchen
2022-12-05
1.2K0
想象力,工程方法以及取舍
小时候看《少儿科学画报》,深深烙在我脑海中的一个故事是「不可能先生」。史蒂文森在矿山上做了很多年蒸汽机工程师,对马车拉煤的低效深有感触,于是萌生了把蒸汽机运用在交通运输上的想法。但这个想法遭遇到了无数不可能先生的冷嘲热讽,比如「蒸汽机车不可能比马车更快」,「蒸汽机车不安全」等。他做了很多实验,遭遇了无数次失败。但最终,他通过不懈努力证明了「用火车拉煤」是一件更安全更高效成本更低廉的事情。
tyrchen
2021-07-16
6130
透过 Rust 探索系统的本原:内存管理
对于开发者来说,内存无非是两种管理模式:手动管理或者自动管理。C 语言是手动管理内存的大哥大,而 Java 则是自动管理的扛把子。很多人认为 Java 是使用垃圾回收做内存管理的鼻祖,其实不然,lisp 早于 Java 大概二三十年就武装上了简单的 GC。不过公认的高效率的 GC 是 Java 带给我们的。
tyrchen
2021-05-11
1.2K0
如何更好地组织你生活和工作中的知识
这些年来,我一直探索和尝试解决的一个重大问题是:在这样一个信息爆炸的时代,如何更好地将每天获取的信息组织成知识,然后再将这些知识消化,经过自己的思考,变成自己的智慧和洞见呢?
tyrchen
2020-06-19
1K0
10 分钟重新认识 GIT
最近对 git 的底层实现异常迷恋,周末抽空用 rust 和 rocksdb 实现了一个乞丐版的 object store - 可以存储 blob,tree,commit 三种对象。之所以用 rocksdb,是因为我不太喜欢文件系统里的那些细碎的 git 对象,我也没太研究 packfile 是如何进行差分编码的,rocksdb 恰好解决了这两个不爽。本来想写篇文章讲讲我在实现过程中踩过的坑,但考虑可能大部分读者虽然每天都在用 git,却并不真正了解 git,所以我觉得有必要先通过一些例子回顾一下 git 的思想和主要的对象类型。
tyrchen
2019-12-02
5020
诚者,天之道也
这次 Code Beam,我演讲的题目是:Build a decentralized, public-verifiable DB。过去两年,区块链热热冷冷,催熟了好多流星般的 buzzword,也造就了不少值得深入探讨的概念,比如说:公开可验证 (public verifiable)。公开可验证探讨的是信任 —— 我们如何在不信任对方身份的情况下信任数据本身。互联网时代,信任是基于身份的,或者说基于权威的 —— 我们信任微信上的好友数据,google 上的搜索结果,无他,是因为数据的来源是微信 Google 这样的巨头们。我们「信任」这些巨头们,不是因为我们真的相信它们 不作恶,而是我们 别无选择,只能从经济学的角度一厢情愿它们作恶的代价大于不作恶的代价。
tyrchen
2019-05-07
4500
思考,快与慢
吐槽:GitBook editor 有个二B的设计-当它莫名检测出文件被外星人修改后,会弹个无法取消的对话框-检测出外部修改,ignore? discard? 每次这个莫名其妙的对话框出现,我都要思考
tyrchen
2018-03-29
6130
技术债:the good, the bad, and the tao
安姐最近一篇文章『关于技术债务』(请戳文末阅读原文访问)阐述了如何避免和处理技术债(tech debt),值得一读。也许是年关将至,出来混,欠的账都要还了,我正好也打算写写技术债,干脆趁热打铁,也来一篇。本文从另外一个视角看技术债。 首先,什么是技术债?通常意义上的技术债是指我们在开发产品或者功能过程中,快速(往往伴随着混乱和各种限制)地在时间和资源受限的情况下完成正常情况下无法完成的工作时引入的技术问题。这些问题可能会导致将来引入新的功能变得很困难,或者开发出来的功能很快到达容量上的瓶颈。这种由于时间和资
tyrchen
2018-03-29
9620
软件随想录:代码与数据
在程序的世界里,代码和数据犹如一对孪生兄弟,你中有我,我中有你,有时候不大分得清楚。如果你研究过 linux 的 ELF(Executable and Linkable File)文件结构,或者对程序的加载运行有所了解,那么你一定知道,所谓的代码段(text section),数据段(data section)只不过是从安全上/性能上权衡之下的人为划分:代码段除了被标记为可执行和只读外,和数据段并无二致。更有甚者,如 ARM compiler,为了让立即数的加载可以用一条语句完成,还将这样的数据混编在代码的
tyrchen
2018-03-29
6980
后端傻瓜化?
两周前 rethinkdb 终于正式发布了 horizon,一套基于 rethinkdb 的后台应用:它让你只需要做一些基本的安全配置和 validation,就可以在前端操作 rethinkdb。是不是听起来耳熟?它比较像 meteor 使用的 minimongo,只不过实现的方式有些不同:minimongo 是 mongodb API 的一个子集;而 horizon 操作数据库的 API 不但是 ReQL(rethinkdb 的 query language,类比 SQL)的子集,API 的接口也完全重
tyrchen
2018-03-28
1.6K0
那些年,我追过的语言
程序君也年轻过,年轻的代价就是盲目追随。 从MS-DOS6.0开始,程序君就是微软的狂热拥趸。 这种狂热自win95走上高潮(有谁还记得win95光盘里带的Good Times的MV,请举手),历经《未来之路》,windows2000,最后在dotnet发布后到达顶峰。 那段时间,只要微软反对的,就是我反对的。 不喜欢Netscape Navigator,只因为IE;诅咒过SUN,对Java深恶痛绝,因为NC是PC的死敌,SUN妄图革微软的命;使用Visual Basic,啃MFC,不为别的,就因为powe
tyrchen
2018-03-28
2K1
没有更多了
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档