2024 年第 53 周草梅周报:2024 年度项目总结与展望

前言

欢迎来到草梅周报!这是一个由草梅友仁基于 AI 整理的周报,旨在为您提供最新的博客更新、GitHub 动态、个人动态和其他周刊文章推荐等内容。


草梅友仁的 2024 年度项目总结

时间过的真快,一转眼就到了 2024 年年底,也是时候来个年终总结了。

作为程序员,衡量标准之一自然是代码,今年写的代码行数如下:

image-20241229182035528

今年的代码行数达到了惊人的 105000+ 行!和去年的 75000 行相比多了快 30000 行!

主要代码量由 rss-impact-server 和 rss-impact-web 贡献。

当然,单纯的代码行数是没什么营养的,只能证明写了很多代码。

接下来再看下今年的开源情况,以下是 GitHub 日历图:

image-20241229182825852
image-20241229182714318

可以看出今年是创建相当多的开源项目。

今年应该也是笔者写开源项目最多的一年了,也是收获 stars 数量最多的一年(在此感谢阮一峰老师推荐),后续会聊聊开源方面的心得。

开发 RSS Impact 的得与失

今年我个人在代码开发方面跟往年有一个很大的不同,那就是极大的增加了开源项目的时间投入。

image-20241229191609686
image-20241229191718960

和往年相比,今年的贡献日历可谓一片绿。

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

事情的起因还要追溯到上半年写的一篇文章:《2024-02-25 RSS 使用的最佳实践 RSSHub+FluentReader+FreshRSS》

在这篇博客中,我提到了 rsspush 没有达到我理想的程度。

为此,才开发了 RSS Impact。

RSS Impact 是一个支持 Hook 的 RSS 订阅工具。

rss-impact-server 支持 RSS 推送/RSS 下载/RSS AI 总结等功能。

甚至还得到过阮一峰老师的推荐,登上过 科技爱好者周刊,GitHub Stars 也快速增加,一度前途无量。

image-20241229193603905

但很遗憾的是,这个项目还是扑街了。

用户数在那一段时间的高峰过后就再起不能了,连创建过 Hook 的用户都寥寥无几,根本没人使用过 RSS Impact 的核心功能。

image-20241117200048690

再后来,见识到 Follow 和它的 自动化功能 之后,我就意识到一件事情,RSS Impact 是竞争不过 Follow 的。

因此,我选择了打不过就加入,在未来,RSS Impact增加 Follow Action 支持

至此,RSS Impact 的开发陷入了瓶颈。

就本次开发经历,我可以给出一些写开源项目的教训:

  1. 前期调研很重要,需要调查清楚 GitHub 上是否已存在相同定位的项目。
    1. 如果有,不妨先看下他们是怎么做的,然后分析这些项目的优点与缺点,并对优点加以学习,缺点加以改进。
    2. 如果没有,意味着开创了一个先河,虽然成功的可能性很小,但不妨就试一下吧,万一成功了呢?
  2. 避免和热门项目竞争,要找出新的赛道,最好是细分赛道,这样竞争小一点。
  3. 从项目可以跑开始就需要找用户来试用,没有反馈就没有改进,不要想着改的差不多了才给用户使用,你以为的需求很可能只是伪需求,并不是用户真正想要的。(以 RSS Impact 为例,一个 RSS 阅读器 + Action,显然会比一个纯 RSS Action 触发工具更好用,你所谓的核心功能,只是别人的附加项)
  4. 使用门槛尽可能低,最好让用户一键安装就可以使用,或者访问网页就可以使用。
  5. 用户界面很重要,UI 需要认真设计,尽可能简化用户操作。同时最好提供多端兼容,比如同时支持桌面端和手机端访问。
  6. 用户文档很重要,既没有文档又没有用户引导,用户使用起来会非常困难,难以上手。

总之,写开源项目最大的困难不在于编写代码,而是如何将你的项目推广出去,没有用户,就没有一切。

因此,这才有最优秀的独立开发者,必定是最优秀的推销员的说法。

博客更新情况

今年博客的数量是 23 篇(含本篇),相较于去年有所减少,主要是有很长一段时间忙到没时间写博客。

但今年在博客写作方面倒也有所创新,那就是创立了《草梅周报》这个周更博客。

虽然不是每次都能写出点东西,但和之前啥都写不出相比,《草梅周报》的存在确实让我有更多的动力去写博客了(当然,更新压力也更大了)。

应该说,AI 大模型的出现,对博客写作也是有很大帮助的,比如总结、标签、分类等工作就可以直接交给 AI 大模型来完成了。

《草梅周报》本身也是借助 AI 大模型来实现自动化的,可以说,没有 AI 的话,就没有《草梅周报》。

就我目前对《草梅周报》的定位而言,《草梅周报》主要是同步我个人的博客更新、GitHub 动态和个人动态。

其中一些比较小的话题,就会直接放在《草梅周报》的前言里讲完,如果要讲的话题比较大,则会开一篇新的博客(目前还没有遇到)。

今年相较于去年的话,在发布平台上多了一个 Memos,也不知道有没有人是通过该渠道订阅的。

此外,年中的时候还折腾过 WordPress,一度产生过要迁移博客到 WordPress 的想法。

可惜最后折腾了半天,发现 WordPress 的性能实在不能让人满意,最后还是决定放弃了,明年就直接停用 WordPress 了。

目前博客还是会基于 Hexo 发布,纯静态博客还是比较符合我目前的需求。

今年总结与展望未来

今年的话比去年忙很多,无论是工作还是开源,亦或者游戏,都比去年多很多。

今年最大的一个感受就是感觉时间不够用,想做的事情太多,能用的时间太少。

另外,在副业探索上也很不顺利,无论是 Timing Push 还是 RSS Impact,都没有取得成功,回报率几乎为 0。

虽然人人都说要做副业来增加收入,但副业又岂是那么好做的?没有足够的时间和精力投入,又怎能取得成功?

因此,明年还是要在副业和开源上增加时间投入,写出更好的项目才行。

当然了,今年取得的教训还是要稍微避免一下,以免重蹈覆辙。

Scoop:更适合程序员的软件管理工具

最近重装了系统,导致要从头开始装软件。

作为程序员,自然是不能做重复工作。

因此,这一次,选择了 Scoop 这个软件管理工具来安装需要的软件,例如代码开发工具、编程语言运行时以及一般项工具(包含游戏、视频等软件)。

以下是我写的一个 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", # 用于管理员权限
    "7zip", # 用于压缩文件
    "zip",  # 用于压缩文件
    "gzip", # 用于压缩文件
    "chsrc", # 用于切换镜像源
    "bun", # 用于JavaScript开发
    "curl", # 用于网络请求
    "tcping", # 用于网络测试
    "dark", # 用于设置主题
    "ffmpeg", # 用于视频、音频等处理
    "gnupg", # 用于加密
    "openssh", # 用于SSH
    "nvm", # 用于Node.js版本管理
    "openjdk", # 用于Java开发
    "gradle", # 用于Java依赖管理
    "python", # 用于Python开发
    "miniconda3", # 用于Python环境管理
    "php", # 用于PHP开发
    "composer", # 用于PHP依赖管理
    "go",   # 用于Go开发
    "googlechrome", # 用于浏览器
    "localsend", # 用于文件传输
    "everything", # 用于文件搜索
    "dbeaver", # 用于数据库管理
    "another-redis-desktop-manager", # 用于Redis管理
    "sqlitestudio", # 用于SQLite管理
    "robo3t", # 用于MongoDB管理
    "notepadplusplus", # 用于文本编辑器
    "vscode", # 用于代码编辑器
    "idea", # 用于Java开发
    "android-studio", # 用于Android开发
    "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 设置镜像源
Write-Host "正在设置镜像源..."
chsrc set node
chsrc set nvm
chsrc set java
chsrc set python
chsrc set conda 
chsrc set go
chsrc set php
Write-Host "镜像源设置完成。"

Write-Host "所有软件安装完成。"

有部分软件需要代理才能下载,可以考虑切换镜像。

一个脚本就把绝大部分需要的软件给下载好了。

接下来说下 scoop 使用上的小技巧。

默认情况下,scoop 会把软件安到用户目录,也就是 C 盘里。

这对于部分 C 盘不足的人来说是比较难受的。

不过可以通过修改 SCOOP 环境变量来指定当前用户安装目录,这样就可以把软件装到其他盘,例如 D 盘里。

然后就是,对于部分有 GUI 的软件,scoop 默认情况下并不会在桌面创建快捷方式,因此有时候会出现找不到对应的软件的情况。

此时可以从菜单目录复制对应的快捷方式到桌面,就可以解决这个问题。

image-20241229184234737

当然也可以自己创建一下快捷方式

更多内容可参考这篇文章 《基于 Scoop 定制属于你自己的 Windows 应用源仓库》


2024 JavaScript 生态报告

数据来源:2024 JavaScript 生态报告

最近看了下《2024 JavaScript 生态报告》,发现了一些有意思的内容,在此做个转载。

在开始之前,还是要先说明几句。

由于主要调查对象是美国程序员,中国的较少,因此该报告无法反映国内 JavaScript 生态的情况。

不过,作为参考,可以了解全世界程序员目前对 JavaScript 生态的一些看法。

image-20241229184712910

中国也就占 1%,所以这个数据不反应国内情况。

image-20241229184849748

在代码库满意程度一栏中,Vite、Vitest 等库一骑绝尘。而另外几个以性能见长的库,例如 pnpm、esbuild 等,也饱受欢迎。

与此对应的是,性能相对没那么出众的 Angular、webpack 等,则没那么受欢迎。

可见,在 2024 年的今天,运行性能已经成为了十分重要的指标,将直接决定了你的代码库是否受欢迎。

image-20241229185251739

另外,我还关注了一下 JavaScript 运行时的情况。

Node.js 本体还是一骑绝尘,使用率高达 91%,而浏览器也不遑多让,达到了 83%。

由于调查对象本身就是前段程序员居多,出现这样的情况也很正常。

虽然像 Deno、Bun 这样新的 JavaScript 运行时已经出现,并且性能更高,但考虑到 Node.js 本身庞大的生态,让人放弃 Node.js 转向 Deno 或 Bun 也不是一件容易的事情。

image-20241229190135380

除此之外,我还看了下无服务器运行时的使用情况,AWS Lambda、Vercel Edge Runtime、Cloudflare Workers 是最多的。

由于今年开始使用 Hono 作为后端开发框架,因此研究了下无服务器运行时的使用。

相较于单机部署,借助边缘函数或无服务器运行时,可以极大的降低并发压力,避免负载均衡、自动容灾等复杂问题。

当然了,使用无服务器运行时的缺点也就在于和云服务平台绑定了,因此,我建议采用 渐进式云函数 开发来解决这个问题。

以 Hono 为例,既可以运行在 Cloudflare Workers、Vercel Edge Runtime 等云服务平台,也可以运行在 Node.js 上,那么就可以通过同构来实现多种部署方式,具体可参考 hono-template

image-20241229190904518

在非 JavaScript 语言中,Python 的使用率是最高的,我个人也是如此,Python 基本上是除了 JavaScript 外的第二选择。

而 PHP 还有那么高的使用率是我没想到的,可能是因为我用的太少了。

image-20241229191124120

最近两年的编程和以往有一个很大的不同,那就是 AI 工具已经深入到编程的方方面面,以至于不可能避开。

我个人是从今年下半年才开始使用 AI 来加速编程,使用体会就是应该早点用 AI 的!

用 AI 开发真的是太舒服了,很多简单的改动都可以直接完成。

不过,对于 AI 输出的结果,还是需要人来把关,因为 AI 输出的结果有好有坏,有时候还会让项目崩溃。

其他周刊推荐

阮一峰的网络日志

HelloGitHub 月刊

总结

本周的更新和动态如上所示。感谢您的阅读!
您可以通过以下方式订阅草梅周报的更新:

往期回顾

本文作者:草梅友仁

本文地址:2024 年第 53 周草梅周报:2024 年度项目总结与展望

版权声明:本文采用 CC BY-NC-SA 4.0 协议 进行分发,转载请注明出处!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356

推荐阅读更多精彩内容