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

程序人生

专栏作者
265
文章
283241
阅读量
68
订阅数
激荡二十年:HTTP API 的变迁
这篇稿子断断续续写了有两周,期间还在公司做了一次 “A Tour to API Evolution” 的讲座,基本上就是把中文的稿子转译了一下。我之所以要研究这样一个主题,是想从 API 的历史中找到未来前进的方向,毕竟「读史使人明智,知古可以鉴今」。
tyrchen
2022-12-05
1.7K0
被低估的 Deno
这个周末,我一直在把玩 deno 的 rusty_v8 以及 deno_core(录了几个 rusty_v8 的视频,预计四月第二周发)。rusty_v8 是 google v8 engine 的 Rust 零成本封装,而 deno_core 在 rusty_v8 的基础上进一步封装了一些额外的功能。众所周知,v8 是 chrome 内部的 javascript 执行引擎,它优异的 JIT 能力,以及高效的垃圾回收,使得 chrome 成为最快最成功的浏览器。v8 仅仅被用在浏览器中有些暴殄天物,于是十多年前(2009),Ryan Dahl 把 v8 引入了服务端,创建了 node.js —— node 以简单容易上手的编程模型(单线程,异步处理)和大量的前端拥趸一举成为广受欢迎的服务端开发工具;而 3 年前,Ryan Dahl 自我革命,重新用 v8 从零打造 deno,意欲让 deno 成为下一代服务器开发的王者。
tyrchen
2022-05-07
1.1K0
自己做点小项目,前端怎么选?
就跟人都绕不过生老病死一样,一个软件开发者,只要做一个完整的项目,无论如何都绕不过前端。然而,前端的发展太太太太让人眼花缭乱,稍不留神,一大堆新的前端框架就不知怎么地,仿佛从地底下冒出来一般,让人难以择决。
tyrchen
2021-06-17
2.2K0
透过 Rust 探索系统的本原:编程语言
连续写了好几篇和 Rust 相关的文章,有朋友说:你好像还没有写过一篇比较正式的介绍 Rust 的文章哦。想了想确实如此,我写过不少介绍编程语言的文章,包括:Python,JavaScript,Racket,Clojure,Elixir,甚至我个人不怎么喜欢的 Golang,却没有正儿八经写一篇关于 Rust 特点或者 Rust 世界观的文章。
tyrchen
2021-04-23
8130
透过 Rust 探索系统的本原:网络篇
如今所有的应用程序几乎都离不开网络。从应用开发的角度,绝大多数应用以及其后端系统都工作在应用层:
tyrchen
2021-04-07
8710
透过 rust 探索系统的本原:并发篇
rust 是一门非常优秀的语言,我虽然没有特别正式介绍过 rust 本身,但其实已经写了好多篇跟 rust 相关的文章:
tyrchen
2021-03-17
8780
dart:失之东隅收之桑榆
一个月前,如果我要为自己最看不上的三个半语言排个名,dart 恐怕会位列其中。dart 是 google 在 2011 年就推出的编程语言,目标是成为一个结构化的 web 编程语言,暗藏着取代人们天天用又天天骂的 javascript 的野心。记得大约 2014 年前后,我在 youtube 上看了 goto conference 的一个关于 dart 语言的 keynote[1],于是就对 dart 有些关注了。当时我的感觉是:这特么又一个「编译成 js」的语言 —— 天知道我们需要多少这样的语言。2014 年前后的前端生态还没有今天这么百花齐放 —— 如今一个编程语言没有对应的「编译成 js」的方案,就像没有化妆的女孩儿,都不好意思出门。那个时代 TypeScript 还没有什么人用,「编译成 js」语言里最火的是 CoffeeScript,以及叫好不叫座的 Elm。当然,google 推出 dart 更多的是从工程实践上的考量:在此之前,google 已经从其 GWT(Google Web Toolkit)和 Closure compier(用于优化 js,清除死代码)中得到了一个宝贵的经验:如果有静态类型系统,javascript 的性能优化和大项目工程化可以大大提升一个台阶。
tyrchen
2020-04-14
1.7K0
Libra 中使用的 rust crates
昨天朋友圈被 Facebook 的 Libra 刷屏。网上有很多关于 Libra 的快文章,从上帝视角到技术细节,从经济模型到语言实现,可谓是各领风骚,我就不凑短期的热闹。因为最近在学 Rust,就在本地 build libra 的漫长时间里,整理了 Libra 的依赖 —— 我想一个语言的初学者都会有类似的问题,一个大公司(成熟团队)所做的项目,究竟会用到哪些生态中成熟的类库?毕竟,awesome-xxx 过于大而全,反而不便甄选。我之前也整理过 tikv 的依赖,发现一些关键库的使用,大家英雄所见略同。libra 因为涉及到 cryptocurrency,相关的加密算法也额外多些。具体细节大家移步(可以点击原文链接):https://github.com/tyrchen/unchained/blob/master/code/libra.md。因为我直接从编译时下载的 log (Downloaded xxx) 来抓的依赖,所以里面有依赖的依赖。
tyrchen
2019-06-20
8670
谈谈状态机
题记:上周做 BBL 里讲了我们 Tubi TV 内部做 DSL 的一些简单实践,大家反馈不错。有同事建议我给大家先补补 FSM,之后再进阶 CFG,可能会更顺畅些。想想也是。于是我自个花了一两个小时,重温了一些课件。马上要回过了,做 BBL 是三周后的事情了,就没先忙写 slides,写了篇文章。本欲留作他用,考虑再三觉得不合适,干脆在公众号上发出来。这篇文章有些干,看看能有多少阅读(我估计也就 3000+),会掉多少粉。 在谈论一般意义的状态机时,我们先看看有限状态机,Finite State Mach
tyrchen
2018-03-29
1.4K0
Policy Engine 的前世今生
作为一个 video streaming service,TubiTV 很重要的一项功能是保证影视剧按照合约上的要求在规定的时间(窗口期),规定的平台,以及规定的国家发布。比如 Terminator,合约上规定 7/1 ~ 10/30(我瞎编的窗口),在美国可以上线,只允许 appletv,iphone,roku,web 访问,那么,如果我们不能正确处理,让加拿大的观众通过正常渠道访问到,或者过了窗口期,美国的观众也能访问,那么就是违约行为,可能导致严重的后果。这是 video stream service
tyrchen
2018-03-29
1.4K0
软件随想录:代码与数据
在程序的世界里,代码和数据犹如一对孪生兄弟,你中有我,我中有你,有时候不大分得清楚。如果你研究过 linux 的 ELF(Executable and Linkable File)文件结构,或者对程序的加载运行有所了解,那么你一定知道,所谓的代码段(text section),数据段(data section)只不过是从安全上/性能上权衡之下的人为划分:代码段除了被标记为可执行和只读外,和数据段并无二致。更有甚者,如 ARM compiler,为了让立即数的加载可以用一条语句完成,还将这样的数据混编在代码的
tyrchen
2018-03-29
6800
长日无痕(一)
注:本文写于2013年~所以文中的事件都发生在北京 (一) 又是一个闷热的周六,灰霾就像粘在天空一样,依旧笼罩着这个城市。带着小宝,我们三人游荡在蓝色港湾的儿童城中,为小家伙的未来打算着。老婆和丈母娘穿梭于一个又一个玩具店,而我,因为推着童车,不便走来走去,就带着小宝静静地欣赏楼下冰场里玩耍的孩子们。很快,我们的注意力就被冰场上两个正在进行对抗训练的小男孩吸引住了。小宝快乐地随着冰球转动脖子,双眼紧紧地捕捉着黑色的冰球,不时发出愉悦的『喝彩』;而我,默默地看着两位『男子汉』一次次跌倒,又一次次爬起,对抗虽
tyrchen
2018-03-28
7480
打造属于你自己的乐高积木
夫鹄不日浴而白,乌不日黔而黑 -- 庄周 上面的这句话某种程度来说是不妥的,人性(这也是全体生物进化出的本能)趋利避害,如果不施加外力,很容易走向消极的一面。就拿读书这事来说,幼时父母的板子和棒棒糖,老师的教鞭和小红花,硬是在威逼利诱间引导我们从「咏鹅」一路背到了「从百草园到三味书屋」(否则可能是从「风魔小次郎」一路到「诛仙」)。如今一天工作完毕,心力交瘁,想起一句:「知足者不以利自累也,审自得者失之而不惧,行修于内者无位而不怍」,也能自得其乐;周末远足,心里期盼的是「春草如有情,山中尚含绿」,若偶然经过
tyrchen
2018-03-28
9470
如何愉快地写个小parser
(一) 在前几日的文章『软件随想录』里,我随性写了一句:「现在似乎已经不是lex/yacc 或 bison/flex的时代了。我亲眼看见一个同事在费力地用perl一行行解析某个系统的数据文件,却压根没想到写个BNF。BNF对他来说,不是一种选择。」 很多同学不解,问我:lex/yacc不是写编译器 [1] 的么?我又不发明新的语言,它们对我有什么用? 从这个问题里,我们可以见到国内本科教育荼毒之深。象牙塔里的讲编译原理的老师们,估计用lex/yacc也就是写过个毫无用处的toy language,然后把自己
tyrchen
2018-03-28
3K0
谈谈FRP和Observable(一)
Observable是方兴未艾的FRP(Functional Reactive Programming)革命里最引人注目的一把火炬。FRP发展了也有两年多了,至今为止,还没有一个很好的定义,wikipedia上的定义和reactivemanifesto.org上的说辞要么太抽象,要么太泛泛。我比较喜欢如下这样一个定义: FRP is about "datatypes that represent a value 'over time'" 因为它点出了最关键的要素:时间。在FRP出现之前,几乎没有一种软件思想
tyrchen
2018-03-28
9890
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
10分钟:教你学会做出能击败80%人的公众号语音
微信前些日子开放了语音功能,想必很多人都在尝试这个功能。录音是件费时费力的事情,咱都不是专业主播,没法子一气呵成。一大段内容,想到哪说到哪,录遭了怎么办?如何编辑?如何润色?如何像专业podcast那样添加片头片尾?如何添加背景音乐? 程序君在做自己第一期的时候就遭遇这些子问题。本着外事不明问google的态度,程序君发现不少业余podcast大拿,用的是免费的GarageBand。这是Mac下的一款DJ软件,Garage Band,名字相当形象,用它来做podcast,有点大材小用,不过还是相当合适的。依
tyrchen
2018-03-28
1.3K0
Javascript: 世纪机器语言?
在我写了「颠覆者的游戏 - 程序语言」和「elixir - 灵丹妙药?or 徒有其名?」后,就有同学就让我讲讲javascript。对于这门让人又爱又恨的语言,真要讲,我都不知道怎么开头了。套用『北京人在纽约』里的台词:「如果你爱TA,请让TA用Javascript,做为一个程序员,TA此生无忧;如果你恨TA,请让TA用Javascript,做为一个程序员,TA基本毁了」。 无所不在的javascript 说Javascript程序员此生无忧有很多理由,最大的理由就是:web无处不在,有web存在的地方,就
tyrchen
2018-03-28
1.2K0
黑客马拉松
软件开发听上去高大上,但实际很简单,全部活动可以分为两类:造轮子,搭积木。这和建筑行业很相似 —— 甚至相似到软件业懒得自己编词,借用建筑业的architect这样的title为自己所用。我的理解「造轮子」就是做一些基础性的工作,如os,compiler,database,protocol(如tcp/ip),algorithm(如DH,RSA),framework(如rails)等,「搭积木」则更多是应用性的工作,利用手边的组件和工具,做出新的产品和工具。「造轮子」需要的知识和能力一般而言要高于「搭积木」(
tyrchen
2018-03-28
1.4K0
[技术产品] 用node-webkit做桌面应用
node-webkit是两周前我才刚刚认识的桌面开发利器。那天程序君写了篇关于github atom的文章,中间有段文字做了大胆的猜测:「这就是Atom最大的亮点!web native。在此之下,less style,coffeescript plugin,nodejs integration都水到渠成。看上去atom的源代码来自chrome —— 我觉得atom很可能是一款以某种方式运行本地web app的浏览器。chrome的源代码base在webkit上(貌似是bsd),所以atom可以任意修改。很可
tyrchen
2018-03-28
1.3K0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档