整理一下除了工作項目外做過的個人項目欲低,有的是解決問題的工具坚洽,有的是練手造輪子爷肝,有的是把靈機一動的idea實現(xiàn)出demo
AI apps
一個 vscode 插件嫉嘀,可以基于代碼生成各種類型的圖表炼邀、給代碼添加注釋,用于簡化代碼閱讀剪侮。
還去復旦某實驗室做了次分享 ??
一個輔助內網運維的 Devops agent拭宁,在工作中使用,設計了一套數(shù)據脫敏機制
AI 個人助理 p6瓣俯,基于gpt-3 api 的 LLM agent杰标,相比于chatgpt等產品的優(yōu)勢是能幫我干活,例如幫我下載電影彩匕。
chatgpt api網關
因為我沒有信用卡腔剂、用不了chatgpt api,就逆向工程分析了5個 chatgpt的鏡像站點(比如 poe.com 這種)驼仪,把這些站點的api 封裝成了一個網關掸犬,對外暴露出和openai 一樣的接口。
請求到達網關后绪爸,網關會做協(xié)議轉換湾碎、然后把請求轉發(fā)給不同的鏡像站點 (而不是openai 的官方站點)。
為了避免觸發(fā)風控奠货、被封號胜茧,網關內部設計了一些負載均衡、限流仇味、熔斷呻顽、爬蟲策略來躲避風控、提高穩(wěn)定性丹墨。
最終達到的效果:可以免費廊遍、高速的使用chatgpt api :)【用AI給代碼添加注釋】
在 jetbrains 系列的IDE(比如 IDEA,Goland贩挣,Clion) 里, 選中代碼后喉前,按一下快捷鍵就能自動給代碼添加注釋
在工作中解決痛點,一些提高效率的工具
-
protoc-gen-p6
一個代碼生成器王财,用于為 Layotto 項目自動生成 代碼卵迂、文檔、CI 配置绒净。
想解決的問題:每次想在 Layotto 項目里實現(xiàn)一個 API 時见咒,需要寫很多代碼和文檔,review 起來也很花時間挂疆,因此寫了這個工具改览,開發(fā)者定義好 proto 后下翎,敲一條命令就能生成所有代碼、sdk宝当、文檔视事、CI 配置。讓機器替人寫代碼庆揩,讓程序員下崗
更詳細的說明見文檔: 如何基于 proto 文件生成代碼俐东、文檔
在 CI 中自動測試文檔,mdx 订晌。寫這個是因為開源項目的 quickstart 文檔長時間不維護可能會過時犬性,因此想在 CI 中自動測試文檔。這個工具會自動運行 markdown 文檔中的 shell 腳本腾仅,其實是基于另一個開源項目 mdsh 的封裝。
更詳細的說明見文檔: 使用工具自動測試 Quickstart 文檔-
開源治理工程化套利,github-growth-hack 推励。工作負責做開源,要推動提高SOFAStack和MOSN社區(qū)的活躍度肉迫,涉及項目較多验辞,靠人工管不過來。搞了個自動化治理工具喊衫,功能包括:
- 觀測: 生成項目活躍度數(shù)據周報/月報跌造,一方面便于大盤展示、數(shù)據分析族购,一方面便于推動
- 專家系統(tǒng):類似于 k8s 的 Controller 模式壳贪,聲明對每個項目的期望狀態(tài),由 Controller 監(jiān)控狀態(tài)寝杖,如果狀態(tài)不符合預期违施,則提醒項目維護者,并給出一定的專家建議瑟幕,建議完成xx事情磕蒲,即可達到期望狀態(tài)
"refined-alipay": 感覺公司一些內部系統(tǒng)不好用,于是做了一個 chrome 插件只盹,安裝后會自動魔改螞蟻內部各種系統(tǒng)的 UI 界面辣往,讓界面變得更好用,提高生產力(例如屏蔽所有的藍點殖卑、紅點站削,例如小 UI 自動放大,等等)孵稽。沒開源钻哩。
類似于 https://github.com/refined-github/refined-github測試環(huán)境監(jiān)控系統(tǒng):呆過的第一家公司剛開始做微服務轉型屹堰,但是分布式系統(tǒng)的基礎設施不完善,測試環(huán)境天天出問題街氢。為簡化測試環(huán)境問題排查扯键,我寫了個監(jiān)控工具(其實是掃描器),定時多線程掃描公司內各個微服務珊肃,發(fā)現(xiàn)系統(tǒng)掛掉則郵件報警(使用Java)
邊緣機房“故障自動診斷”:也是在呆過的第一家公司荣刑,項目會在客戶的多個機房部署,機房之間通過專線網絡通信伦乔,每個機房規(guī)模不大(可以理解成“邊緣機房”)厉亏。邊緣機房的穩(wěn)定性不高(畢竟每個機房的硬件資源有限,不可能為每個微服務部署太多副本)烈和,為簡化生產環(huán)境問題排查爱只,我寫了個故障自動診斷組件,獲得老板認可后集成進發(fā)布包招刹。
簡化報銷發(fā)票: 加班打車/吃飯報銷恬试、到處找發(fā)票太麻煩,寫過個電子發(fā)票收集工具疯暑,每次消費完了把發(fā)票發(fā)到指定郵箱后训柴,工具會自動搜集指定郵箱下的發(fā)票、下載到電腦上的指定目錄妇拯,一鍵批量打印幻馁。后來去了大廠發(fā)現(xiàn)內部有類似的服務,而且是和報銷系統(tǒng)打通的越锈。
chrome debug插件
https://github.com/seeflood/console.watch
剛工作的時候前后端都要寫仗嗦,感覺前端debug別人的代碼/開源框架比較煩(很多前端代碼寫的和套娃一樣,可讀性不高)甘凭,寫過一個chrome插件儒将,提供“當對象的屬性被修改時,控制臺進斷點”对蒲。后來發(fā)現(xiàn)做爬蟲钩蚊、分析別人的網頁的時候也能用上
自動生成sql建表語句的工具(Vue+jQuery);
拿vue當模板引擎做的蹈矮,一個根據數(shù)據庫表設計生成DDL建表語句的工具砰逻。
當然現(xiàn)在不用了,Visual Paradigm真香自動生成前端埋點代碼的工具(Vue+jQuery)泛鸟;
寫前端的時候還得負責加埋點代碼蝠咆,很惡心,于是搞了個生成埋點代碼的工具。
同樣是拿vue當模板引擎刚操,配下要攔截哪些ajax請求闸翅,能自動生成埋點代碼(代碼邏輯:攔截指定ajax請求、摳出來需要的字段菊霜、發(fā)到后端打日志)
生成的埋點代碼不是這里加一句代碼坚冀、那里加一句代碼,而是一個獨立的文件鉴逞,攔截頁面所有ajax請求记某、過濾出感興趣的事件、做埋點邏輯构捡。
代碼放在了https://github.com/seeflood/easy-life/blob/master/src/main/js/recorder/template.html
后來換公司液南、不需要自己埋點了,這個就沒再維護」椿眨現(xiàn)在看來這個思路可以優(yōu)化:不僅可以攔截ajax請求滑凉,還可以攔截感興趣的dom事件
參與過的開源項目
-
Layotto
這個其實是工作項目(公司開源項目),我作為開源Co-founder喘帚,也不要臉的帖在這了哈哈 - SOFAStack維護者
- Dapr member
- MOSN contributor
自己造的一些輪子/玩具
PUA-RPC
https://github.com/seeflood/PUA-RPC
一個java的RPC框架畅姊,特點是具有PUA功能:每次RPC調用會打日志,日志中隨機加入一條PUA語錄以鼓勵程序員啥辨,而如果出現(xiàn)了RPC調用失敗/報錯/性能問題等bad case,會在日志中加入批評程序員的話分布式定時任務調度系統(tǒng)
畢業(yè)設計項目盯腌,使用Go語言實現(xiàn)的一個分布式定時任務調度系統(tǒng)溉知,基于Etcd做存儲,去中心化的調度(每臺機器到了時間都去搶鎖腕够,誰搶到誰執(zhí)行级乍,沒有中心化的調度節(jié)點),支持多種容錯策略(at least once,at most once等)
做的過程中學了一些分布式系統(tǒng)的理論才意識到分布式系統(tǒng)中的時鐘是非常不可靠的東西(除非用原子鐘)帚湘,所以這種去中心化調度其實是有很多問題的玫荣,因此不看好同樣架構的Elastic-Job(一個開源的分布式定時任務調度框架)前端mvvm框架
學習vue的時候看了原理自己寫了一個簡易版的mvvm框架,時間太久代碼找不到了……
核心就是個數(shù)據雙向綁定大诸,dom變了改內存變量捅厂,內存變量變了改dom
javascript容器庫
https://github.com/seeflood/jContainer
javascript容器庫,包含常用容器及相關算法Copy-Paste-Data-Structures
https://github.com/seeflood/Copy-Paste-Data-Structures
一個java和Go的高級數(shù)據結構庫资柔,設計目標是任何數(shù)據結構都能單獨復制粘貼出來焙贷、單獨使用,文件和文件之間沒有任何互相依賴贿堰,以便在打online-judge比賽(比如leetcode周賽辙芍,google比賽)的時候能夠直接粘貼使用,或者把某個數(shù)據結構粘貼到自己的工作項目中做魔改。