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

程序人生

专栏作者
264
文章
279012
阅读量
68
订阅数
盘点我的 2022:知识分享与开源项目
2022 即将过去,在朋友圈一片盘点总结的大潮中,我也不能免俗。今天,我来说说我个人在知识分享和开源项目方面的贡献。
tyrchen
2023-02-23
6050
软件架构:使用脚本来增强系统的灵活性
上一篇文章《做个简单的 reverse proxy》中我提到了最近做的一个小工具 wormhole。基本的功能已经跑通,后续的增强功能可以按照之前的设计慢慢迭代:
tyrchen
2022-01-04
7600
做个简单的 reverse proxy
在 Tubi,我们会对客户端软件做 End-to-end testing(以下简称 E2ET)。E2ET 如果只测试 UI 和 UI 相关的逻辑,有足够多的开源工具和商业工具,不过,如果要同时要验证网络层的输入输出是否符合预期,比如在展示某个 UI 的同时,发送了相应的 analytics event,这就需要很多额外的工作。之前我们在客户端做网络层的 interceptor,虽然能工作,但它有一些局限:1) 测试脚本需要能访问到客户端拦截并记录下来的网络请求和响应,这意味着记录的内容需要上传至某个特定的,可以公开访问的位置,比如 s3。2) 所有的客户端都需要做类似的 interceptor 的工作。所以考虑再三,我们决定尝试做个独立的 proxy server,让客户端通过访问这个 proxy server,来访问实际的 API。这样,我们可以在这个 proxy server 里做很多事情,比如 traffic log,比如通过一系列规则来做 traffic rewrite,可以对 API 访问做缓存,甚至可以把某些请求写入 sinkhole。
tyrchen
2022-01-04
1.1K0
想象力,工程方法以及取舍
小时候看《少儿科学画报》,深深烙在我脑海中的一个故事是「不可能先生」。史蒂文森在矿山上做了很多年蒸汽机工程师,对马车拉煤的低效深有感触,于是萌生了把蒸汽机运用在交通运输上的想法。但这个想法遭遇到了无数不可能先生的冷嘲热讽,比如「蒸汽机车不可能比马车更快」,「蒸汽机车不安全」等。他做了很多实验,遭遇了无数次失败。但最终,他通过不懈努力证明了「用火车拉煤」是一件更安全更高效成本更低廉的事情。
tyrchen
2021-07-16
5750
透过 Rust 探索系统的本原:安全篇
安全是我的老本行,隔一段时间不拉出来谈一谈就不舒服。我个人觉得:做应用不谈安全都是在耍流氓。
tyrchen
2021-04-07
1.1K0
透过 Rust 探索系统的本原:并发原语
几周前我写了篇关于并发的文章(透过 rust 探索系统的本原:并发篇),从使用者的角度介绍了常用的处理并发的工具:Mutex / RwLock / Channel,以及 async/await。今天我们讲讲这些并发手段背后的原语。这些原语,大家在操作系统课程时大多学过,但如果不是做一些底层的开发,估计大家都不记得了。今天,我们就来简单聊聊这些基础的并发原语,了解它们的差异,明白它们使用的场景,对撰写高性能的并发应用有很大的帮助。
tyrchen
2021-04-07
9970
再探 Parser 和 Parser Combinator
在几年前的文章《Policy Engine 的前世今生》里,我谈到了自己探索如何生成高效的表达式求值的工具的整个过程。我先是使用 JISON(javascript 的 Flex/Bison)做了一个解析器(parser),后来又用 Elixir 自己的宏编程进行了优化,让单个表达式的验证从 200+ us 提升到 20+ us。最近无意间看到了 Guido van Rossum 大神的文章 [1],讲他探索 PEG 解析器的历程(Python 3.9 已经实现了新的 PEG parser [2])。于是,这个周末,我花了一个晚上,尝试了用 Rust 下的 PEG 解析器 — pest 重新实现了 policy 表达式解析器部分,为了更好地对比 pest 和 Rust 下的另外一个神器 nom 的效果,我也同时实现了 nom 下的 policy 表达式解析器。
tyrchen
2021-02-26
2.2K0
protobuf 为经络,gRPC为骨架
以来,数据结构的重要性在任何软件项目中都是毋庸置疑的。但数据结构往往又是最难相处的:
tyrchen
2020-07-23
1K0
2020 活久见:欧美主流 app「熔断」了
在海外做移动端应用开发,有一家公司是几乎不可避免的:facebook(以下简称 FB)。它打造(并且几乎垄断)了从获客到获利(广告)的一条龙服务,使得你无法抵制那巨大的诱惑 —— 前提是你要在自己的 app 里装入 FB 的 SDK。
tyrchen
2020-05-12
5050
为什么有的语言「不能」编译成 WASM?
于是很多 TypeScript 的拥趸不开心了,为什么说我家宝宝不能支持 WebAssembly(下文称 WASM)?有人找出了证据:看,AssemblyScript[1] 明明就可以支持 TypScript 转换成 WebAssemby 嘛。我不知道说这话的人是否真的看过 AssemblyScript,还是道听途说,仅仅知道有这个么东西,就像北京的的哥那样,说着让人不明觉厉的话。其实只要去 AssemblyScript 的 repo 看一眼,hub clone assemblyscript/assemblyscript,随便运行一下里面的例子,你就会发现:
tyrchen
2020-04-15
6.6K3
Wireguard:简约之美
最近团队内部的 BBL,我分享了 Wireguard。Wireguard(以下简称 WG)作为新一代的 VPN 的代表,可能很多做技术的同学都不陌生。和其它 VPN 技术一样,我们可以使用它在家庭网络和公司网络之间搭建一条安全的信道,由此可以访问「内网」的数据和应用。
tyrchen
2019-11-12
3.4K1
软件项目供应链管理的迷思
最近伟创力被华为踢出其供应链的事情,想必大家的朋友圈都刷了屏。对于一家硬件公司来说,良好的供应链管理能够保证产品的质量和产能,进而保证企业服务其客户的能力。在全球化的浪潮下,小到一台手机,大到一部汽车,背后都是一整条产业链数百数千家公司竞争合作,最终共同完成成品。如果一家企业的供应链的某个环节出了问题,那么影响产能还算小事,影响到交付到客户手中的产品就非常麻烦了。好几年前我工作过的公司曾经遇到一个非常棘手的问题,我们的企业级防火墙产品在客户的生产环境总会莫名其妙地发生 crash,软件团队花了很多精力研究不同的 crash,无解,只好求助于硬件部门的同事,后来经过一番苦苦探索,发现问题出在某个版本的产品使用的供应商的某个批次的内存芯片上面。在大流量读写,环境温度的条件影响下,有一定几率产生 bit flip。出厂测试无法捕捉到这样的 bug,但客户的环境下就出现了。这种硬件出问题,往往只能召回和替换,因为都是 SoC,无法局部替换;但这个批次的硬件出货量太大,召回是不可能的,只好在软件上想办法。后来总算完美解决,否则会给我们造成巨额的亏损。
tyrchen
2019-07-30
1.1K0
诚者,天之道也
这次 Code Beam,我演讲的题目是:Build a decentralized, public-verifiable DB。过去两年,区块链热热冷冷,催熟了好多流星般的 buzzword,也造就了不少值得深入探讨的概念,比如说:公开可验证 (public verifiable)。公开可验证探讨的是信任 —— 我们如何在不信任对方身份的情况下信任数据本身。互联网时代,信任是基于身份的,或者说基于权威的 —— 我们信任微信上的好友数据,google 上的搜索结果,无他,是因为数据的来源是微信 Google 这样的巨头们。我们「信任」这些巨头们,不是因为我们真的相信它们 不作恶,而是我们 别无选择,只能从经济学的角度一厢情愿它们作恶的代价大于不作恶的代价。
tyrchen
2019-05-07
4300
Botwall - Bot Firewall??
Mountain View的El Camino Real和Castro交界的地方,有一栋大楼,地址是:800 W El Camino Real,里面入驻了不少创业公司,是创业者的乐园,也是下一波millionaire/billionaire的孵化地。去年因为一个在ooyala工作的朋友的缘故,没少在这里蹭饭,后来ooyala被全资收购,朋友离开后,我便很少过来。直到春节和前同事老慕约饭,得知他所在的公司shape security也在这里。今天故地重游,我才惊异地发现,原来这里已经快成了web securi
tyrchen
2018-03-28
1K0
[产品与技术] Flight data recorder
言归正传。 很多人看到这个标题的第一印象可能是 —— 这是要讲飞机上的黑匣子么?有点关系,但主要讲软件中的flight data recorder。不过我们先从黑匣子讲起。 Flight Data Recorder(FDR)用于记录飞机行驶过程中的各种关键数据,其规格如下: 电源:115V AC 或 28V DC 电源能力:30天不间断 使用期限:至多6年 包含水下定位装置 能记录25小时不间断数据 能经受1100度高温 FDR的硬件架构: CPU card Analog card Discrete car
tyrchen
2018-03-28
8540
[杂谈] 为什么卖产品的比做产品的挣得多
昨天有个同学提醒我曾经答应他一篇文章。翻开我记录的读者留言,发现我的确是在三周前记录了这么个写作线索。原文很长,就不在此粘贴,大意是他们公司里程序员的工作非常辛苦,项目组忙的时候加班很多;而公司的销售整天吊儿郎当的,奖金却很高,感觉自己的血汗都成了销售买房换车的垫脚石,很不公平。 于是今天我和做Business operation的朋友探讨了她们公司销售人员的收入组成,花点时间谈谈为什么卖产品的(销售)要比做产品的(研发)挣得多。 读过『黑客与画家』的同学应该对Graham提出的「财富守恒定律」有印象:「如
tyrchen
2018-03-28
6690
没有更多了
社区活动
Python精品学习库
代码在线跑,知识轻松学
【玩转EdgeOne】征文进行中
限时免费体验,发文即有奖~
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·干货材料·成员作品·最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档