#9 Git 的故事

Hi,你正在阅读的是《Codeep 半月刊》第 9 期。本期封面图由 Dall-E 3 生成。prompt 为 Git story, cave art style
📍 学技术
VDOM 内部结构
![]()
https://lazamar.github.io/virtual-dom/
不少前端框架都使用了 Virtual DOM 的机制,然而具体该如何实现 Virtual DOM?Marcelo 在这篇文章分享了他如何创建 VDOM 库,用 200 行代码展示了一个简易版本。
如何用 CSS 居中一个元素
如何用 CSS 居中一个元素,是不论在实际工作或面试,都经常会遇到的问题。让我们回顾一下这些常用的 CSS 居中技巧。下面的 HTML 包含一个父 div 和一个子 div 元素。
📕 深阅读
Git 的故事
https://blog.brachiosoft.com/posts/git/
Git 的设计简洁且高效,极大地改变了软件开发的协作模式。相信大多数程序员都使用过 Git,也知道 Git 是 Linus Torvalds 的第二代表作,但是你知道 Git 背后的故事吗?
这篇文章描述了 Git 版本控制系统的由来与发展历程,这是一篇和 Node.js 起源 同样精彩的故事。版本控制系统的出现就是为了解决软件开发中多人合作的问题。而对于 Linus Torvalds 来说,版本管理系统可以帮他将一些 linux Kernel 管理工作分担给其他人,从而将他从崩溃的边缘拉回来。
而 linus 的好朋友 Larry 当时正好在开发一套叫做 BitKeeper 新的版本控制软件,linus 答应如果 Larry 可以把他所说的版本管理方案做出来就会使用该软件,但是在 19 个月后 BitKeeper 才正式释出第一版。不过在之后 linus 也开始尝试使用 BitKeeper 来管理 kernel 开发,以此减轻工作量。
BitKeeper 也大方地让 Linux Kernel 的开发者免费使用,但是其使用条款中规定了一些免费用户的限制。社群中有很多自由软件的拥护者,对这些使用条款都是嗤之以鼻。这群骇客宁可要有修改软件的自由,也不想要 BitKeeper 的便利。虽然说社群对使用专用软件略有抱怨,但是当时也沒有更好的替代工具。
这个微妙的平衡被一个免费的第三方 BitKeeper 客户端给打破,这个客户端是 Samba 和 rsync 的作者 Tridge 逆向工程 BitKeeper 而写出来的。Larry 发现这件事情后无法接受,因为其不计成本的支持 Linux Kernel 社群免费用 BitKeeper 来进行开发,没想到还被衍生出一个会毁了 BitKeeper 商业模式的免费的第三方客户端。事情逐渐发展到无法调和的地步,最后 Linux Kernel 与 BitKeeper 分手了。
linus 开始收拾善后,他决定自己写一个版本管理软件给 Linux Kernel 使用。在一周后,Linus 上传了一个名叫 Git 的东西。最初版本的 Git 支持一些低阶的操作,但离真正可用的版本管理软件还差的很远。
不过在初版 Git 发布后,全球各地的开发者开始参与 Git 的讨论与开发。其中来自捷克的开发者 Petr 在 Git 的基础上开发了 git-pasky,将 Git 包装的更简洁易用。Petr 还架设了 Git 的官网与代码托管服务。另一个来自日本的开发者滨野纯则用 Perl 编写了 Git 的合并算法并陆续向 Git 提交了更多补丁。滨野纯用他的专业精神逐渐获得了 linus 的信任,最终 linus 将 Git 维护人的工作交给了滨野纯。
虽然 Git 在早期引来不少关注,但仍是小众。Git 的转折在 2007 年,当时 Facebook、Twitter 这些社交媒体爆火,Tom 萌生了一个名叫 GitHub 的点子:一个给程序员用的社交媒体,在上面可以让程序员分享 Git 仓库,交流意见的集散地(hub)。然后 GitHub 开始 Git 的传道之路,成功将 Git 推广到其他程序员社区。
Stack Overflow 在 2022 的调查中,Git 市占率高达 94%,以至于隔年 Stack Overflow 干脆放弃问大家用什么版本管理系统。
不管他们告诉你什么,这都是人的问题
https://blog.codinghorror.com/no-matter-what-they-tell-you-its-a-people-problem/
Jeff 2008 年的文章现在看来还是有很值得思考的内容,文章确实包含了诸多智慧。
我的程序员生涯到现在为止,也在大大小小的项目组中待过。在项目经理的口中,我被称呼为资源,资源的利用率被以人天计算。延期是悬在头上的达摩克利斯之剑。团队成员之间的关系可有可无,每个人关注的是在 DDL 之前完成自己手头上的任务。
在这种氛围下没人关心一起工作的同事是个怎样的人,他喜欢什么,他讨厌什么。只想在下班后,把一切与工作相关通讯软件退出,更不用说和同事有进一步交流。
总是人。人是人们留下来的原因,也是人离开公司的原因。
✨新鲜货
键盘模拟器
![]()
https://keyboardsimulator.xyz/
这是一个在线的键盘模拟器,可以在上面看到各种配色的虚拟键盘击键。相较于在一些 2D 的在线键盘网站上测试键盘键位,在这个虚拟 3D 键盘下击键有种更奇妙的感觉。
Tetris Font
![]()
https://erikdemaine.org/fonts/tetris/
通过这个工具,可以将你输入的英文字母转化为俄罗斯方块的动画形式,每个字母和数字均由俄罗斯方块中的每一个组成:(I)、(J)、(L)、(O)、(S)、(T) 和 (Z),还可以将动画以 Gif 或 SVG 格式下载下来。
🍔 技术外
希腊即将实施六天工作制
https://greekcitytimes.com/2024/06/20/greece-six-day-work-week/
从今年 7 月开始,希腊将实行每周工作六天,成为第一个每周工作 41 小时的欧盟国家。现在很多国家正在试行每周四天工作制,而希腊此时却推行六天工作制。
实际上这项法案是在希腊人口减少和劳动力短缺的背景下推出,另一方面希腊实施这项劳动法是为了“保障”一部分劳动者的权益,因为希腊事实上已经有很多工人在加班工作,却没有拿到应得的加班费。
推出六天工作制后,可以规定企业员工在周末工作能获得加班工资。我觉得靠增加工人劳动时间去拉动经济增长,最终还是雇主收益,通过让现有员工加班而无需额外雇佣更多的员工,降低了雇主的用工成本。
本半月刊在本人博客首发,每月 15 号和月底更新,欢迎您关注、转发!
