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

程序人生

专栏作者
265
文章
283303
阅读量
68
订阅数
激荡二十年:HTTP API 的变迁
这篇稿子断断续续写了有两周,期间还在公司做了一次 “A Tour to API Evolution” 的讲座,基本上就是把中文的稿子转译了一下。我之所以要研究这样一个主题,是想从 API 的历史中找到未来前进的方向,毕竟「读史使人明智,知古可以鉴今」。
tyrchen
2022-12-05
1.7K0
对 deno deploy 的逆向工程
deno deploy 是 deno 官方推出的一个 serverless 服务,它并没有开放源码。在 deno deploy 服务的 playground 中,你可以直接撰写 javascript 代码,保存后一两秒内就部署运行成功(运行在 deno runtime 的 v8 isolate 中):
tyrchen
2022-05-07
1.1K0
优雅地组合:谈谈 axum
Axum 是 tokio 官方出品的一个非常优秀的 web 开发框架,一经推出,就博得了我的好感,让我迅速成为它的粉丝。相比之前我使用过的 Rust web 框架,如 rocket,actix-web,axum 对我最大的吸引力就是它优雅的架构:它没有选择从零开始另起炉灶,而是以同样非常优秀的 tower 库的 Service trait 为基石,构建其功能。
tyrchen
2022-03-29
8K1
5/29 的 Rust 培训复盘及视频
前几天一次突发奇想,促成了上周六的 Rust 培训。发帖的时候,觉得 Rust 还很小众,100 个名额绰绰有余,没想到报名非常踊跃,没多久就超过了六十。有些还一次性报了好几个人的名,然后微信发给我报名邮箱。我担心名额不够,连忙修改文章,把上限 100 人,改成了 75 人,省得超了。一顿操作之后,我觉得问题不大,就放心睡去。
tyrchen
2021-06-17
8010
构建下一代 HTTP API - 零成本抽象做输入输出的校验和正规化
计算机领域有句大俗话,是:Garbage in, garbage out,垃圾进,垃圾出。如果将错误的,无意义的数据输入给一个系统,你也将会得到错误的结果。软件架构领域的先驱者 Mary Shaw 在她的《软件架构》一书里提到,一个系统只有 10% 的代码用于其看得见的目的,而剩下的逻辑都花在处理输入输出,数据校验,数据结构的维护和其它的琐事。这就如同漂浮在海面上的冰山一样,软件开发过程中隐藏的,任何系统都不得不做的事情占到了绝大多数:
tyrchen
2021-01-04
5800
构建下一代 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.5K0
构建下一代 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
5820
软件工程师成长之路
在公众号里,被问得最多的问题就是:如何选择一个能够让自己成长的工作?以及,如何在工作中成长? 我们先看第一个问题:如何选择一个能够让自己成长的工作。 这个问题在我 2015 年转的我 2014 年答读者问的文章里已经写过(看,有些问题就是这么任性地反复折磨我们),稍作摘录: 这个问题在『黑客与画家』里Paul已经给出了答案:选择那些具备 可测量性 和 可放大性 的工作。 我们来详细说说。注意以下的话跟「敏捷宣言」的措辞类似 —— 当你有选择的权利和能力时,优先选择前者而不是后者。但,这并不意味着后者不好。
tyrchen
2018-03-29
7880
是时候想想该怎么删代码了
武林外传里秀才怼上姬无命,来了一段关于「我是谁」的精彩逼问。 我是谁?我生从何来,死往何处,我为何要出现在这个世界上?我的出现对这个世界来说意味着什么,是世界选择了我还是我选择了世界?!我和宇宙之间有必然的联系吗?宇宙是否有尽头,时间是否有长短,过去的时间在那里消失,未来的时间又在何处停止,我在这一刻提出的问题还是还是你刚才听到的问题吗? 我们平时很少问自己这样愚蠢的问题。很多事情,我们是如此地习以为常,以至于非但自己看不到这样的问题,当别人问道时,反而纯纯地回一句:doesn't look like an
tyrchen
2018-03-29
7340
谈谈工程师文化
Facebook最著名的工程师文化之一是bootcamp。每个新入职的员工,不管是应届生,还是老油条,都需要在bootcamp里接受洗礼: 6周的训练,每个人都会有一个mentor,会被分配很多技术任务,mentor和你每周1:1,他会帮你引荐做一件事所需要打交道的人。每个人的任务和正式员工的一样,只不过略简单,且不紧急。这些任务来自各个组,可以切身和各个组的人打交道,review代码,评估和组里的人是否有化学反应,组里人也可以评估你,双向选择。 任务可以来自任何组,mentor也会问喜欢做什么,前端, 后
tyrchen
2018-03-28
8750
Podcast: 过去一周有啥程序人生?
受小道君的启发,今天来点不一样的,用语音介绍我过去一周听的podcast,玩过的github repo和读过的hacker news。 Podcast 我每周大概能听10个podcast:每日往返 San Francisco - cupertino,两个多小时的旅途,podcast就成了我的最佳伴侣。尽管订阅了大量的节目,每周我都会听的,也就只有: TED Radio hour Software Engineer Radio Cognicast a16z TED Radio hour不必多说,常年来一直雄居
tyrchen
2018-03-28
7530
学习的力量
(一) [Red] These walls are funny. First you hate 'em, then you get used to 'em. Enough time passes, y
tyrchen
2018-03-28
6490
为什么SOA如此重要
SOA是Service Oriented Architecture的缩写,希望你知道其大概意思。在上一篇文章「测量」中,我引用了Bezos的一段将Amazon的软件架构完全转换SOA的备忘录,它是如此关键,某种程度上可能改变了Amazon的命运(想想AWS)。 SOA是一种思想,而不是wikipedia上列举的一些「已经没落的」技术的合集(XML/HTTP/SOAP/WSDL/UDDI)。十年前SOAP/WSDL/UDDI大行其道,现在已经基本无人问津(如果你趟过在线旅游的浑水,那么可能知道booking.
tyrchen
2018-03-28
9070
谈谈FRP和Observable(二)
有些读者看了上篇文章之后第一个问题就是「这货performance如何,吃不吃内存」。仿佛他们一下子看穿了Signal/Observable的「软肋」:低效且内存占用高(潜台词是能不能跟我手写的C代码比)。对此,我得先瞎扯几句我的观点。我们看一门新技术的前景,套用当前的俗话,就是:「先问对不对,再谈好不好」。软件领域很重要的一句话是: Simplicity matters. 从Simplicity matters这个角度看,即便用它写出的代码效率不高(我很怀疑这一论断),内存开销太大(也存疑),但四十多行的
tyrchen
2018-03-06
9490
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档