2024 年第 53 周草梅周報:2024 年度項目總結(jié)與展望

前言

歡迎來到草梅周報!這是一個由草梅友仁基于 AI 整理的周報,旨在為您提供最新的博客更新、GitHub 動態(tài)、個人動態(tài)和其他周刊文章推薦等內(nèi)容。


草梅友仁的 2024 年度項目總結(jié)

時間過的真快,一轉(zhuǎn)眼就到了 2024 年年底,也是時候來個年終總結(jié)了。

作為程序員,衡量標準之一自然是代碼,今年寫的代碼行數(shù)如下:

image-20241229182035528

今年的代碼行數(shù)達到了驚人的 105000+ 行!和去年的 75000 行相比多了快 30000 行!

主要代碼量由 rss-impact-server 和 rss-impact-web 貢獻。

當然,單純的代碼行數(shù)是沒什么營養(yǎng)的,只能證明寫了很多代碼。

接下來再看下今年的開源情況,以下是 GitHub 日歷圖:

image-20241229182825852
image-20241229182714318

可以看出今年是創(chuàng)建相當多的開源項目。

今年應該也是筆者寫開源項目最多的一年了,也是收獲 stars 數(shù)量最多的一年(在此感謝阮一峰老師推薦),后續(xù)會聊聊開源方面的心得。

開發(fā) RSS Impact 的得與失

今年我個人在代碼開發(fā)方面跟往年有一個很大的不同,那就是極大的增加了開源項目的時間投入。

image-20241229191609686
image-20241229191718960

和往年相比,今年的貢獻日歷可謂一片綠。

在此之中,rss-impact-serverrss-impact-web 又是投入時間最多的。

事情的起因還要追溯到上半年寫的一篇文章:《2024-02-25 RSS 使用的最佳實踐 RSSHub+FluentReader+FreshRSS》。

在這篇博客中,我提到了 rsspush 沒有達到我理想的程度。

為此,才開發(fā)了 RSS Impact。

RSS Impact 是一個支持 Hook 的 RSS 訂閱工具。

rss-impact-server 支持 RSS 推送/RSS 下載/RSS AI 總結(jié)等功能。

甚至還得到過阮一峰老師的推薦,登上過 科技愛好者周刊,GitHub Stars 也快速增加,一度前途無量。

image-20241229193603905

但很遺憾的是,這個項目還是撲街了。

用戶數(shù)在那一段時間的高峰過后就再起不能了,連創(chuàng)建過 Hook 的用戶都寥寥無幾,根本沒人使用過 RSS Impact 的核心功能。

image-20241117200048690

再后來,見識到 Follow 和它的 自動化功能 之后,我就意識到一件事情,RSS Impact 是競爭不過 Follow 的。

因此,我選擇了打不過就加入,在未來,RSS Impact增加 Follow Action 支持。

至此,RSS Impact 的開發(fā)陷入了瓶頸。

就本次開發(fā)經(jīng)歷,我可以給出一些寫開源項目的教訓:

  1. 前期調(diào)研很重要,需要調(diào)查清楚 GitHub 上是否已存在相同定位的項目。
    1. 如果有,不妨先看下他們是怎么做的,然后分析這些項目的優(yōu)點與缺點,并對優(yōu)點加以學習,缺點加以改進。
    2. 如果沒有,意味著開創(chuàng)了一個先河,雖然成功的可能性很小,但不妨就試一下吧,萬一成功了呢?
  2. 避免和熱門項目競爭,要找出新的賽道,最好是細分賽道,這樣競爭小一點。
  3. 從項目可以跑開始就需要找用戶來試用,沒有反饋就沒有改進,不要想著改的差不多了才給用戶使用,你以為的需求很可能只是偽需求,并不是用戶真正想要的。(以 RSS Impact 為例,一個 RSS 閱讀器 + Action,顯然會比一個純 RSS Action 觸發(fā)工具更好用,你所謂的核心功能,只是別人的附加項)
  4. 使用門檻盡可能低,最好讓用戶一鍵安裝就可以使用,或者訪問網(wǎng)頁就可以使用。
  5. 用戶界面很重要,UI 需要認真設(shè)計,盡可能簡化用戶操作。同時最好提供多端兼容,比如同時支持桌面端和手機端訪問。
  6. 用戶文檔很重要,既沒有文檔又沒有用戶引導,用戶使用起來會非常困難,難以上手。

總之,寫開源項目最大的困難不在于編寫代碼,而是如何將你的項目推廣出去,沒有用戶,就沒有一切。

因此,這才有最優(yōu)秀的獨立開發(fā)者,必定是最優(yōu)秀的推銷員的說法。

博客更新情況

今年博客的數(shù)量是 23 篇(含本篇),相較于去年有所減少,主要是有很長一段時間忙到?jīng)]時間寫博客。

但今年在博客寫作方面倒也有所創(chuàng)新,那就是創(chuàng)立了《草梅周報》這個周更博客。

雖然不是每次都能寫出點東西,但和之前啥都寫不出相比,《草梅周報》的存在確實讓我有更多的動力去寫博客了(當然,更新壓力也更大了)。

應該說,AI 大模型的出現(xiàn),對博客寫作也是有很大幫助的,比如總結(jié)、標簽、分類等工作就可以直接交給 AI 大模型來完成了。

《草梅周報》本身也是借助 AI 大模型來實現(xiàn)自動化的,可以說,沒有 AI 的話,就沒有《草梅周報》。

就我目前對《草梅周報》的定位而言,《草梅周報》主要是同步我個人的博客更新、GitHub 動態(tài)和個人動態(tài)。

其中一些比較小的話題,就會直接放在《草梅周報》的前言里講完,如果要講的話題比較大,則會開一篇新的博客(目前還沒有遇到)。

今年相較于去年的話,在發(fā)布平臺上多了一個 Memos,也不知道有沒有人是通過該渠道訂閱的。

此外,年中的時候還折騰過 WordPress,一度產(chǎn)生過要遷移博客到 WordPress 的想法。

可惜最后折騰了半天,發(fā)現(xiàn) WordPress 的性能實在不能讓人滿意,最后還是決定放棄了,明年就直接停用 WordPress 了。

目前博客還是會基于 Hexo 發(fā)布,純靜態(tài)博客還是比較符合我目前的需求。

今年總結(jié)與展望未來

今年的話比去年忙很多,無論是工作還是開源,亦或者游戲,都比去年多很多。

今年最大的一個感受就是感覺時間不夠用,想做的事情太多,能用的時間太少。

另外,在副業(yè)探索上也很不順利,無論是 Timing Push 還是 RSS Impact,都沒有取得成功,回報率幾乎為 0。

雖然人人都說要做副業(yè)來增加收入,但副業(yè)又豈是那么好做的?沒有足夠的時間和精力投入,又怎能取得成功?

因此,明年還是要在副業(yè)和開源上增加時間投入,寫出更好的項目才行。

當然了,今年取得的教訓還是要稍微避免一下,以免重蹈覆轍。

Scoop:更適合程序員的軟件管理工具

最近重裝了系統(tǒng),導致要從頭開始裝軟件。

作為程序員,自然是不能做重復工作。

因此,這一次,選擇了 Scoop 這個軟件管理工具來安裝需要的軟件,例如代碼開發(fā)工具、編程語言運行時以及一般項工具(包含游戲、視頻等軟件)。

以下是我寫的一個 PowerShell 腳本,用于批量安裝軟件。

# 安裝 Scoop
if (-not (Get-Command scoop -ErrorAction SilentlyContinue)) {
    Write-Host "正在安裝 Scoop..."
    Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
    Invoke-RestMethod get.scoop.sh | Invoke-Expression
    Write-Host "Scoop 安裝完成。"
} else {
    Write-Host "Scoop 已安裝。"
}

# 添加源
scoop bucket add extras
scoop bucket add java
scoop bucket add nerd-fonts
scoop bucket add dorado
scoop bucket add php
scoop bucket add versions
scoop bucket add nonportable
scoop bucket add games

# 定義要安裝的軟件列表
$apps = @(
    "git", # 用于代碼管理、scoop 安裝軟件等
    "aria2", # 用于加速下載文件
    "sudo", # 用于管理員權(quán)限
    "7zip", # 用于壓縮文件
    "zip",  # 用于壓縮文件
    "gzip", # 用于壓縮文件
    "chsrc", # 用于切換鏡像源
    "bun", # 用于JavaScript開發(fā)
    "curl", # 用于網(wǎng)絡(luò)請求
    "tcping", # 用于網(wǎng)絡(luò)測試
    "dark", # 用于設(shè)置主題
    "ffmpeg", # 用于視頻、音頻等處理
    "gnupg", # 用于加密
    "openssh", # 用于SSH
    "nvm", # 用于Node.js版本管理
    "openjdk", # 用于Java開發(fā)
    "gradle", # 用于Java依賴管理
    "python", # 用于Python開發(fā)
    "miniconda3", # 用于Python環(huán)境管理
    "php", # 用于PHP開發(fā)
    "composer", # 用于PHP依賴管理
    "go",   # 用于Go開發(fā)
    "googlechrome", # 用于瀏覽器
    "localsend", # 用于文件傳輸
    "everything", # 用于文件搜索
    "dbeaver", # 用于數(shù)據(jù)庫管理
    "another-redis-desktop-manager", # 用于Redis管理
    "sqlitestudio", # 用于SQLite管理
    "robo3t", # 用于MongoDB管理
    "notepadplusplus", # 用于文本編輯器
    "vscode", # 用于代碼編輯器
    "idea", # 用于Java開發(fā)
    "android-studio", # 用于Android開發(fā)
    "parsec", # 用于遠程桌面
    "obs-studio", # 用于錄屏、直播
    "qbittorrent", # 用于BT下載
    "heynote", # 用于筆記
    "typora", # 用于Markdown編輯器
    "postman", # 用于接口測試
    "treesize-free", # 用于查看文件夾大小
    "picgo", # 用于圖床
    "tabby", # 用于終端、SSH
    "fluent-reader", # 用于RSS閱讀
    "games/steam", # 用于游戲
    "epic-games-launcher", # 用于游戲
    "potplayer", # 用于視頻播放
    "qq", # 用于QQ
    "wechat", # 用于微信
    "fscapture", # 用于截圖
    "waifu2x-caffe", # 用于圖片放大
    # 最后安裝 cuda,因為體積較大,拖慢整個安裝過程。
    "cuda", # 用于GPU加速
    "ollama", # 用于LLM
)

# 安裝軟件
foreach ($app in $apps) {
    Write-Host "正在安裝 $app..."
    scoop install $app
    Write-Host "$app 安裝完成。"
}

# 安裝 Node.js 最新版本
Write-Host "正在安裝 Node.js 最新版本..."
nvm install latest
nvm use latest
npm i -g pnpm --registry=https://registry.npmmirror.com
Write-Host "Node.js 最新版本安裝完成。"

# 使用 chsrc 設(shè)置鏡像源
Write-Host "正在設(shè)置鏡像源..."
chsrc set node
chsrc set nvm
chsrc set java
chsrc set python
chsrc set conda 
chsrc set go
chsrc set php
Write-Host "鏡像源設(shè)置完成。"

Write-Host "所有軟件安裝完成。"

有部分軟件需要代理才能下載,可以考慮切換鏡像。

一個腳本就把絕大部分需要的軟件給下載好了。

接下來說下 scoop 使用上的小技巧。

默認情況下,scoop 會把軟件安到用戶目錄,也就是 C 盤里。

這對于部分 C 盤不足的人來說是比較難受的。

不過可以通過修改 SCOOP 環(huán)境變量來指定當前用戶安裝目錄,這樣就可以把軟件裝到其他盤,例如 D 盤里。

然后就是,對于部分有 GUI 的軟件,scoop 默認情況下并不會在桌面創(chuàng)建快捷方式,因此有時候會出現(xiàn)找不到對應的軟件的情況。

此時可以從菜單目錄復制對應的快捷方式到桌面,就可以解決這個問題。

image-20241229184234737

當然也可以自己創(chuàng)建一下快捷方式

更多內(nèi)容可參考這篇文章 《基于 Scoop 定制屬于你自己的 Windows 應用源倉庫》。


2024 JavaScript 生態(tài)報告

數(shù)據(jù)來源:2024 JavaScript 生態(tài)報告

最近看了下《2024 JavaScript 生態(tài)報告》,發(fā)現(xiàn)了一些有意思的內(nèi)容,在此做個轉(zhuǎn)載。

在開始之前,還是要先說明幾句。

由于主要調(diào)查對象是美國程序員,中國的較少,因此該報告無法反映國內(nèi) JavaScript 生態(tài)的情況。

不過,作為參考,可以了解全世界程序員目前對 JavaScript 生態(tài)的一些看法。

image-20241229184712910

中國也就占 1%,所以這個數(shù)據(jù)不反應國內(nèi)情況。

image-20241229184849748

在代碼庫滿意程度一欄中,Vite、Vitest 等庫一騎絕塵。而另外幾個以性能見長的庫,例如 pnpm、esbuild 等,也飽受歡迎。

與此對應的是,性能相對沒那么出眾的 Angular、webpack 等,則沒那么受歡迎。

可見,在 2024 年的今天,運行性能已經(jīng)成為了十分重要的指標,將直接決定了你的代碼庫是否受歡迎。

image-20241229185251739

另外,我還關(guān)注了一下 JavaScript 運行時的情況。

Node.js 本體還是一騎絕塵,使用率高達 91%,而瀏覽器也不遑多讓,達到了 83%。

由于調(diào)查對象本身就是前段程序員居多,出現(xiàn)這樣的情況也很正常。

雖然像 Deno、Bun 這樣新的 JavaScript 運行時已經(jīng)出現(xiàn),并且性能更高,但考慮到 Node.js 本身龐大的生態(tài),讓人放棄 Node.js 轉(zhuǎn)向 Deno 或 Bun 也不是一件容易的事情。

image-20241229190135380

除此之外,我還看了下無服務器運行時的使用情況,AWS Lambda、Vercel Edge Runtime、Cloudflare Workers 是最多的。

由于今年開始使用 Hono 作為后端開發(fā)框架,因此研究了下無服務器運行時的使用。

相較于單機部署,借助邊緣函數(shù)或無服務器運行時,可以極大的降低并發(fā)壓力,避免負載均衡、自動容災等復雜問題。

當然了,使用無服務器運行時的缺點也就在于和云服務平臺綁定了,因此,我建議采用 漸進式云函數(shù) 開發(fā)來解決這個問題。

以 Hono 為例,既可以運行在 Cloudflare Workers、Vercel Edge Runtime 等云服務平臺,也可以運行在 Node.js 上,那么就可以通過同構(gòu)來實現(xiàn)多種部署方式,具體可參考 hono-template。

image-20241229190904518

在非 JavaScript 語言中,Python 的使用率是最高的,我個人也是如此,Python 基本上是除了 JavaScript 外的第二選擇。

而 PHP 還有那么高的使用率是我沒想到的,可能是因為我用的太少了。

image-20241229191124120

最近兩年的編程和以往有一個很大的不同,那就是 AI 工具已經(jīng)深入到編程的方方面面,以至于不可能避開。

我個人是從今年下半年才開始使用 AI 來加速編程,使用體會就是應該早點用 AI 的!

用 AI 開發(fā)真的是太舒服了,很多簡單的改動都可以直接完成。

不過,對于 AI 輸出的結(jié)果,還是需要人來把關(guān),因為 AI 輸出的結(jié)果有好有壞,有時候還會讓項目崩潰。

其他周刊推薦

阮一峰的網(wǎng)絡(luò)日志

HelloGitHub 月刊

總結(jié)

本周的更新和動態(tài)如上所示。感謝您的閱讀!
您可以通過以下方式訂閱草梅周報的更新:

往期回顧

本文作者:草梅友仁

本文地址:2024 年第 53 周草梅周報:2024 年度項目總結(jié)與展望

版權(quán)聲明:本文采用 CC BY-NC-SA 4.0 協(xié)議 進行分發(fā),轉(zhuǎn)載請注明出處!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容