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

程序人生

专栏成员
266
文章
298225
阅读量
69
订阅数
Github Copilot:开发者的动次打次切克闹
作为一个 TabNine 的资深免费用户,在遇到 Github Copilot 的第一晚,我就无可救药地爱上了后者,并义无反顾地卸载了前者。作为 AI coding 时代的杰出代表,Github Copilot 做到了比我自己还更懂我。以前,写代码的时候,我基本都是气沉丹田紧锁眉头沉默不语;自从用上了 Copilot,画风就变成了:艾玛,我靠,我去,真的假的,不可能吧。
tyrchen
2022-03-29
7520
肝了三个视频:Rust 宏编程系列
我的 B 站上正儿八经的和软件开发相关的视频,已经有半年没有更新了。最后一期《程序君的 Rust 培训 (2)》还是去年 6 月出品的,我记得肝那期时,正赶上西雅图百年一遇的酷暑,晚上十点多还有 39 度的高温,以至于我的 mbp 那几天经常会被热到关机自保。
tyrchen
2022-01-25
5520
软件开发探索之道:让自己成为知识的所有者
这些让人摸不着头脑的问题,只要你耐心查找,在 stackoverflow 或者各种论坛上,一般能够找到答案。不过,别人给出来的答案很可能是模棱两可的,不好理解的,甚至是错误的。我们需要花时间甄别那些正确的、并且精准的答案,还需要花时间阅读这些答案。有时候,即便是你得到了答案甚至记住了答案,你可能还是没有完全理解别人给出的答案。当你需要把这样的答案讲给别人时,你会发现自己似乎无法讲得清楚。
tyrchen
2021-09-27
5480
想象力,工程方法以及取舍
小时候看《少儿科学画报》,深深烙在我脑海中的一个故事是「不可能先生」。史蒂文森在矿山上做了很多年蒸汽机工程师,对马车拉煤的低效深有感触,于是萌生了把蒸汽机运用在交通运输上的想法。但这个想法遭遇到了无数不可能先生的冷嘲热讽,比如「蒸汽机车不可能比马车更快」,「蒸汽机车不安全」等。他做了很多实验,遭遇了无数次失败。但最终,他通过不懈努力证明了「用火车拉煤」是一件更安全更高效成本更低廉的事情。
tyrchen
2021-07-16
6130
5/29 的 Rust 培训复盘及视频
前几天一次突发奇想,促成了上周六的 Rust 培训。发帖的时候,觉得 Rust 还很小众,100 个名额绰绰有余,没想到报名非常踊跃,没多久就超过了六十。有些还一次性报了好几个人的名,然后微信发给我报名邮箱。我担心名额不够,连忙修改文章,把上限 100 人,改成了 75 人,省得超了。一顿操作之后,我觉得问题不大,就放心睡去。
tyrchen
2021-06-17
8340
技术债:人的因素
所以我们可以把技术债看做是一种捷径 —— 一种带来短期利益(交付期更短)但需要未来花费更多时间弥补的技术捷径。「债」在这里是一个非常形象的比喻,它和我们日常生活中产生的银行债务有异曲同工之妙:
tyrchen
2021-05-11
4510
透过 Rust 探索系统的本原:编程语言
连续写了好几篇和 Rust 相关的文章,有朋友说:你好像还没有写过一篇比较正式的介绍 Rust 的文章哦。想了想确实如此,我写过不少介绍编程语言的文章,包括:Python,JavaScript,Racket,Clojure,Elixir,甚至我个人不怎么喜欢的 Golang,却没有正儿八经写一篇关于 Rust 特点或者 Rust 世界观的文章。
tyrchen
2021-04-23
8540
透过 Rust 探索系统的本原:安全篇
安全是我的老本行,隔一段时间不拉出来谈一谈就不舒服。我个人觉得:做应用不谈安全都是在耍流氓。
tyrchen
2021-04-07
1.2K0
透过 Rust 探索系统的本原:并发原语
几周前我写了篇关于并发的文章(透过 rust 探索系统的本原:并发篇),从使用者的角度介绍了常用的处理并发的工具:Mutex / RwLock / Channel,以及 async/await。今天我们讲讲这些并发手段背后的原语。这些原语,大家在操作系统课程时大多学过,但如果不是做一些底层的开发,估计大家都不记得了。今天,我们就来简单聊聊这些基础的并发原语,了解它们的差异,明白它们使用的场景,对撰写高性能的并发应用有很大的帮助。
tyrchen
2021-04-07
1.1K0
构建下一代 HTTP API - OpenAPI spec 和解析器
在 抽象的能力 一文结尾的地方,我简单谈到了做 feed 的一些心得。当时我接手这个工作的时候,之前的工程师已经留下了好几万行 php 代码,这些代码处理几十个来自不同厂商的 feed,把里面的内容提取出来存在数据库中。因为 feed 的格式不尽相同,有 XML,有 JSON,同样表述一个数据,大家的字段名有时也不太一样,比如同样是 video url,有的叫 url,有的叫 media_url,它们在 XML/JSON 里所处的层级也不尽然相同。所以之前的代码为每个 feed 写了一个类。有新需求(比如新的 feed)时,找一个最类似的代码,copy & paste,然后在好几百行粘贴出来的代码中根据差异一点点修改,最终形成新的 feed 的处理代码。
tyrchen
2021-01-04
1.6K0
构建下一代 HTTP API - 架构
在构思 Quenya 的时候,我已经有之前 UAPI 和 Goldorin 在生产环境下的应用经验。总结起来,就是 UAPI 有一个很好的结构(见我四年前的文章:再谈 API 的撰写 - 架构),但它做事的顺序反了,先有代码,再有 spec,通过代码生成 spec(当时是 swagger 2.0);Goldorin 纠正了这一做法,通过 spec 来生成代码,但 Goldorin 的问题在于自己定义 spec,并没有深思熟虑。另外,Goldorin 还有两个问题:
tyrchen
2020-12-16
8170
构建下一代 HTTP API - 总览
十月底我应邀在一个技术群里做个分享,思来想去我选择了 API 这个话题,因为很多互联网初创公司产品的第一步就是如何定义和设计一套 API,来满足产品核心所能提供的用户体验。我把 2016 年我在 Tubi 做 UAPI,2018 年我在 ArcBlock 做 Goldorin,2019 年做 Forge TX pipeline / Forge Patron 的经验揉了进去,又重新研究和回顾了 Swagger(Open API)/ GraphQL / GRPC gateway 这几个我曾经在各种场合使用过的工具,写下了一个 slides。那次讲座之后,同样的内容我又在 Tubi 内部讲了一遍,脱敏后的讲座 slides 如果大家感兴趣可以在这里获取:
tyrchen
2020-12-16
6000
为什么有的语言「不能」编译成 WASM?
于是很多 TypeScript 的拥趸不开心了,为什么说我家宝宝不能支持 WebAssembly(下文称 WASM)?有人找出了证据:看,AssemblyScript[1] 明明就可以支持 TypScript 转换成 WebAssemby 嘛。我不知道说这话的人是否真的看过 AssemblyScript,还是道听途说,仅仅知道有这个么东西,就像北京的的哥那样,说着让人不明觉厉的话。其实只要去 AssemblyScript 的 repo 看一眼,hub clone assemblyscript/assemblyscript,随便运行一下里面的例子,你就会发现:
tyrchen
2020-04-15
7.2K3
暴走的程序员
今天一篇 "a sad day for rust" 霸榜了 hacker news。actix-web 的作者 fafhrd91 在无法忍受 "unsafe shitstorm" 之后,决绝地将这个在各大评测网站名列第一的 web 框架下线了。一时间社区叫苦不迭,所有使用了 actix-web 作为依赖的项目,都受到(潜在的)影响。这件事的威力虽然不如之前让半个互联网瘫痪的 leftpad 事件,但也够开源社区喝一壶的。
tyrchen
2020-02-20
6550
# 如何安全地保存密码?
如今的互联网生活,让每个人都离不开密码 — 操作系统有开机密码(用户密码),各种应用有登录密码,甚至还有交易密码。形形色色的密码让用户头皮发麻,要么使用重复的不那么健壮的密码,要么不得不依赖于各种密码保存服务,比如 1password。我常常在想,有没有一种方式,可以让所有的密码从一个主密码中派生出来,就像比特币 BIP44 钱包派生那样?
tyrchen
2020-02-11
1.1K0
Noise 框架:构建安全协议的蓝图
Noise Protocol Framework(以下简称 Noise)是一个用于构建安全协议的框架。与 TLS,IPSec 这样的有完整实现的协议不同,Noise 更多像是一个蓝图,它为那些想创建自己的安全协议的开发者提供了一套模板。就好像元编程之于编程,Noise 是协议的元协议(meta-protocol)。
tyrchen
2019-12-18
3.1K0
10 分钟重新认识 GIT
最近对 git 的底层实现异常迷恋,周末抽空用 rust 和 rocksdb 实现了一个乞丐版的 object store - 可以存储 blob,tree,commit 三种对象。之所以用 rocksdb,是因为我不太喜欢文件系统里的那些细碎的 git 对象,我也没太研究 packfile 是如何进行差分编码的,rocksdb 恰好解决了这两个不爽。本来想写篇文章讲讲我在实现过程中踩过的坑,但考虑可能大部分读者虽然每天都在用 git,却并不真正了解 git,所以我觉得有必要先通过一些例子回顾一下 git 的思想和主要的对象类型。
tyrchen
2019-12-02
5020
我们随手做的 git stash,究竟干了什么?
git stash 是程序员的至宝。老板 biangbiang 甩来一个 case,说这个要下班之前 hot fix,咋办,stash,切到 release 对应的分支,缝缝补补;产品 kuangkuang 砸来一个需求更新,说这个简单,小哥哥帮帮我先做了,咋办,stash 切一个新的 feature 分支,撸袖子干。如果没有 git stash,人生至少要灰暗一半。
tyrchen
2019-12-02
4210
Wireguard:简约之美
最近团队内部的 BBL,我分享了 Wireguard。Wireguard(以下简称 WG)作为新一代的 VPN 的代表,可能很多做技术的同学都不陌生。和其它 VPN 技术一样,我们可以使用它在家庭网络和公司网络之间搭建一条安全的信道,由此可以访问「内网」的数据和应用。
tyrchen
2019-11-12
4.1K1
沅有芷兮:类型系统的数学之美
昨天的文章删了,因为我的 vscode 把 markdown 里的 * 自动替换成了 _,导致一些公式的表述变得异常奇怪。另外,原创忘记打开了。
tyrchen
2019-06-18
1K0
点击加载更多
社区活动
【纪录片】中国数据库前世今生
穿越半个世纪,探寻中国数据库50年的发展历程
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档