0%

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

前言

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


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

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

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

image-20241229182035528

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

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

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

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

image-20241229182825852

image-20241229182714318

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

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

git-wrapped-CaoMeiYouRen

开发 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 脚本,用于批量安装软件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# 安装 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 月刊

总结

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

往期回顾

本文作者:草梅友仁
本文地址: https://blog.cmyr.ltd/archives/2024-53-caomei-weekly-2024-project-summary-outlook.html
版权声明:本文采用 CC BY-NC-SA 4.0 协议 进行分发,转载请注明出处!

坚持原创技术分享,您的支持将鼓励我继续创作!