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

程序人生

专栏作者
264
文章
277473
阅读量
68
订阅数
将分布式系统转换为可嵌入的库有多难?
最近,我在开发一个本地 RAG/LLM 应用,需要支持语义搜索。实际上,作为一款本地应用,它可能产生的嵌入(embeddings)数量相对有限,很难超过百万级别。因此,在项目初期,一个简单幼稚的遍历匹配方法就足以应对需求。然而,我还是希望能够一步到位,找到一个支持 HNSW 索引的嵌入式向量数据库(关于 HNSW 索引的详细信息,请参考我之前的文章)。
tyrchen
2023-12-20
1880
用 AWS Smithy 构建下一代 API 服务
自动化代码生成这种能减少工作量的事情一直是程序员们的最爱。如果某些代码片段不断重复自身,我们会用宏替换来减少这种重复,但如果涉及到大规模,架构级别的重复,那么我们倾向于用代码生成来解决这种重复。日常工作中,大家使用得比较多的代码生成工具有 gRPC(或者其衍生的一系列 xRPC),用于把微服务的描述生成不同语言的代码。此外还有 GraphQL,用于把 GraphQL schema 生成服务端和客户端的代码。
tyrchen
2023-12-06
3560
写点代码,做点视频
这个周末小宝终于没球赛了,我也不用开车来回奔波两小时,再在寒风中瑟瑟发抖两小时(赛前训练+比赛)看球。本来打算做个应用尝试结合语音和 chat completion 中的 tools 做个智能客服,结果rust下一个好用的openai sdk都没有,于是干脆心一横,周六边写边录了7个视频(前后大概 6-7 小时),也算是为了一碟醋,包了顿饺子。后来有朋友提醒可以用 async-openai(有 700 多 star),不过木已成舟,也就算了。编辑视频的时候看了看 async-openai 的代码,实现思路跟我类似,但很多处理的选择不那么好,比如 reqwest::Client 其实 Clone 起来非常轻量,但它大量使用带生命周期的 Client,增加没必要的复杂性。此外没有充分利用 reqwest 生态,不管是 retry 还是 multipart 的处理,都写了很多不必要的代码。
tyrchen
2023-11-22
1070
万字长文:技术之路 — 学习,成长与AI
题记:这是一篇根据我在 10/18 日极客时间六周年做的讲座整理出来的文章,简单润色了一下。
tyrchen
2023-10-25
4241
用 excalidraw 做生日礼物
小贝的生日正好赶上双节,思虑良久,觉得传统的贺卡,生日礼物之外,作为一个程序员,我还能给她做一个更好的礼物。然而我是一个扁鹊都望而旋走的重度拖延症患者,事情不拖到最后一刻不会启动。到了娃儿生日前夕,本想用 scratch 写个小游戏祝福她,没想到人家已经用 scratch 把姐姐做的 wings of fire 游戏改吧改吧给自己做了个 happy birthday 的动画:
tyrchen
2023-10-07
1670
向量数据库?那咱们就浅谈一下吧
今年自己做了不少业余的 LLM demo/PoC 级的应用,前前后后使用了几种向量数据库(Vector Database),包括尚不能称之为向量数据库的 FAISS,玩票性质的 redisearch 和 pgvector,闭源的 SAAS 服务 pinecone,以及使用 Rust 构建的 qdrant 和 lancedb。这些向量数据库各有千秋,支持的索引技术不尽相同,但它们都试图解决传统数据库或者搜索引擎在搜索高维度信息时的力不从心的问题。
tyrchen
2023-09-27
1K0
HTMX:前端的 1984 时刻?
十几二十年前,我曾经是个自信满满的互联网开发者。我可以轻松地使用 django 构建 Web UI。页面上大大小小的重复部分,我都用 template 或者 fragment 抽象或者封装。如果需要,我并不排斥撰写 javascript 来增加交互性:
tyrchen
2023-09-21
5870
renovate: 处理 Postgres 模式迁移
去年 10 月,我在 review 数据库迁移代码时,不断回溯十多个已有的迁移文件,艰难地试图了解目前数据库 schema 的最终形态时,萌生了做一个数据库模式迁移工具的想法。当时主流的模式迁移工具,无论是直接撰写 SQL,还是撰写某个语言的 DSL,都要求开发者以数据库上一次迁移的状态为基础,撰写对该状态的更改。比如要对已有的 todos 表加一个字段 created_at,我需要创建一个新的迁移文件,撰写类似如下的代码:
tyrchen
2023-02-23
6440
盘点我的 2022:知识分享与开源项目
2022 即将过去,在朋友圈一片盘点总结的大潮中,我也不能免俗。今天,我来说说我个人在知识分享和开源项目方面的贡献。
tyrchen
2023-02-23
6020
我眼中的低代码平台
接受过初中政治课教育的我们都知道,目前软件行业的主要矛盾是「人民群众日益增长的软件产品的需求同落后的软件生产力之间的矛盾」。来自 mongodb 的一篇博客指出:
tyrchen
2023-02-23
9310
新的系列视频:从零开始构建资源预定系统
九月初的小长假,加上 Tubi holiday,四天时间里我做了 9 个视频,一口气把 xdiff 系列弄完。这系列一路发到了十月初。在此期间,我基本无暇打理 B 站视频,只是在视频库存快要见底的时候思考过下一个系列发什么。恰巧最近业余时间都在研究和 postgres 相关的项目:
tyrchen
2022-12-05
4930
激荡二十年:HTTP API 的变迁
这篇稿子断断续续写了有两周,期间还在公司做了一次 “A Tour to API Evolution” 的讲座,基本上就是把中文的稿子转译了一下。我之所以要研究这样一个主题,是想从 API 的历史中找到未来前进的方向,毕竟「读史使人明智,知古可以鉴今」。
tyrchen
2022-12-05
1.6K0
我被 pgx 及其背后的 Rust 美学征服
知道我的人都了解,自 2018 年比较正式地学习 Rust 以来(在此要感谢张汉东老师的大力推荐),我慢慢被 Rust 征服,成为一名不折不扣的拥趸。我的业余项目,90% 都是用 Rust 写就的,另外 10% 基本被 typescript(前端)和 python(主要是 notebook)瓜分。我对 Rust 热爱也体现在我的公众号和 B 站上,近两年发布的内容,主要和 Rust 有关。然而,我很少直接吹捧 Rust,更多是通过 “show me the code” 来展示 Rust 的美妙。这个周末,在 reddit/rust 版,我无意发现了 pgx 这样一个使用 Rust 来撰写 postgres extension 的集成工具,在深入地了解其文档并写了几百行代码后,我立刻就被那种直击心灵的简约之美冲破了防线,不得不在此吹上一波。如此优雅地解决另一个生态系统(postgres)的扩展的问题,我就想说,除了 Rust,还有谁?
tyrchen
2022-12-05
1.1K0
程序化 Options trading 浅尝辄止
前几天我的前老板 T 跟我聊了下他正在着手筹划的 algo options trading 项目,他拜托我帮他找找合适的工程师。我仔细研读了他的计划书,感觉还有点意思。基本思路是:跟随股票的涨跌趋势,在 该股的 option 市场选择合适的合约下注。如果预测股票上涨,则购买相应的 Call option,否则购买 Put option。他目前有一个运作还不错的策略,在手工执行和测试中。未来,他希望这个项目不仅可以为自己公司的 fund 赚钱,还能逐渐转化成一个平台,简化人们做程序化交易的难度,就像 Robinhood 简化大家买卖股票的难度一样。T 会为他的初始团队提供丰厚的,有竞争力的工资,以及交易系统盈利的一部分作为奖金。
tyrchen
2022-12-05
6930
一张图讲清 deno
📷 早上心血来潮,想着这周周三周四回 office 办公,干脆讲点什么,于是就临时敲定了一个我最近几周业余时间一直在研究的内容,题目是:What could we learn from Deno’s
tyrchen
2022-05-07
5940
对 deno deploy 的逆向工程
deno deploy 是 deno 官方推出的一个 serverless 服务,它并没有开放源码。在 deno deploy 服务的 playground 中,你可以直接撰写 javascript 代码,保存后一两秒内就部署运行成功(运行在 deno runtime 的 v8 isolate 中):
tyrchen
2022-05-07
1.1K0
被低估的 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
1K0
以 QUIC 为例,聊聊如何学习网络协议
上周发了篇关于 s2n-quic 的文章,有读者问我如何学习像 QUIC 这样的网络协议。对于大部分互联网从业者来说,虽然大家每天都在跟网络打交道,但很少有人会(需要)关心 HTTP 之下的网络协议的细节,大部分时候,了解个大概,知道如何使用就可以了。如果你对 QUIC 一点概念都没有,那么,下面这个图能帮助你很好地了解 QUIC 在 HTTP/3 生态中的地位:
tyrchen
2022-03-29
1.8K0
Github Copilot:开发者的动次打次切克闹
作为一个 TabNine 的资深免费用户,在遇到 Github Copilot 的第一晚,我就无可救药地爱上了后者,并义无反顾地卸载了前者。作为 AI coding 时代的杰出代表,Github Copilot 做到了比我自己还更懂我。以前,写代码的时候,我基本都是气沉丹田紧锁眉头沉默不语;自从用上了 Copilot,画风就变成了:艾玛,我靠,我去,真的假的,不可能吧。
tyrchen
2022-03-29
7040
s2n-quic: 终于有一个比较好用的 QUIC 实现了
QUIC 是一种为性能而设计的加密传输协议,它是尚处在襁褓之中的 HTTP/3(最新是 draft-34)的基础。根据维基百科的资料显示,QUIC 在 2012 年就被部署到 Google 内部,并于 2013 年对外发布。2021 年 5 月,IETF 在 RFC 9000 中对 QUIC 的基本功能进行了标准化,并在 RFC 9001 中标准化了如何使用 TLS 保护 QUIC,以及 RFC 9002 中标准化了 QUIC 的拥塞控制。QUIC 通过使用在 QUIC 传输中承载的通过 TLS 建立的加密和身份验证密钥来保护其 UDP 数据报文。它旨在通过提供改进的首字节延迟,多路复用,以及解决诸如线头阻塞、移动性和数据丢失检测等问题来改进 TCP。
tyrchen
2022-03-29
2K0
点击加载更多
社区活动
Python精品学习库
代码在线跑,知识轻松学
热点技术征文第五期
新风口Sora来袭,普通人该如何把握机会?
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·干货材料·成员作品·最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档