欢迎来到我的博客

awesome命令行应用(搬运)
一份精心整理的命令行应用程序列表。 Fork 来源 awesome 仓库 娱乐 newsboat - 可扩展的文本终端 RSS 订阅阅读器。 mal-cli - MyAnimeList 客户端。 golazo - 足球比赛信息。 音乐 cmus - 小巧、快速且强大的控制台音乐播放器。 Instant-Music-Downloader - 即时音乐下载器。 itunes-remote - 通过命令行控制 iTunes。 pianobar - Pandora 客户端。 somafm-cli - 在终端中收听 SomaFM。 mpd - 音乐播放器守护进程。 ncmpcpp - mpd 客户端。 moc - Linux/UNIX 控制台音频播放器。 musikcube - 跨平台、基于终端的音乐播放器、音频引擎、元数据索引器和服务器。 beets - 音乐库管理器和标签编辑器。 spotatui - Spotify 客户端。 swaglyrics-for-spotify - Spotify 歌词显示。 dzr - deezer.com 播放器。 radio-active - 拥有 4 万多个电台的网络收音机播放器。 mpvc - 基于 mpv 的音乐播放器。 TUISIC - 免登录音乐流媒体播放。 termusic - Rust 编写的音乐播放器,支持下载功能。 ytm-player - YouTube Music 播放器。 tunein-cli - TuneIn 和 Radio Browser 客户端。 视频 youtube-dl - 从 YouTube.com 及许多其他视频网站下载视频。 streamlink - 从各种网站提取流媒体到你选择的视频播放器中。 mps-youtube - YouTube 播放器。 mpv - 卓越的视频播放器。 editly - 声明式视频编辑工具。 yt-dlp - youtube-dl 的分支,具有额外的功能和修复。 cinema - 视频和流媒体多画面查看器。 capcut-cli - 编辑 CapCut/剪映项目。 电影 moviemon - 关于你电影的一切。 movie - 获取电影信息或比较电影。 游戏 Dwarf Fortress - Roguelike 建造与管理模拟游戏。 Cataclysm-DDA - 设定在后末日世界的回合制生存游戏。 Pokete - 类宝可梦游戏。 NetHack - Roguelike 地牢探险游戏。 书籍 epr、epy - EPUB 阅读器。 Bible.Js CLI - 圣经。 SpeedRead - 类 Spritz 快速阅读器。 medium-cli - 阅读 medium.com 上的文章。 hygg - 文档阅读器。 聊天 WeeChat - 快速、轻量且可扩展的聊天客户端。 irssi - IRC 聊天客户端。 kirc - 微型 IRC 客户端。 concord - Discord 客户端。 开发 legit - 将开源许可证生成为文件或文件头。 mklicense - 轻松创建包含自定义信息的 LICENSE 文件。 rebound - 在编译器报错时获取 Stack Overflow 结果。 foy - 轻量级通用任务运行器/构建工具。 just - 现代化的类 make 命令运行器。 bcal - 用于存储转换和计算的字节计算器。 bitwise - 进制转换和位操作工具。 cgasm - x86 汇编文档。 grex - 根据用户提供的测试用例生成正则表达式。 iola - 带 REST API 的 Socket 客户端。 add-gitignore - 根据你的需求交互式地生成 .gitignore 文件。 is-up-cli - 检查域名是否在线。 reachable - 检查域名是否可达。 diff2html-cli - 从 diff 创建美观的 HTML。 mk - 暴露不熟悉的仓库中最常见的操作。 dotenv-diff - 验证代码库中环境变量的使用情况。 ota - 跨技术栈的统一可诊断仓库设置(本地、部署、CI、智能体)。 文本编辑器 emacs - 一款可扩展、可定制、自由/免费的文本编辑器——远不止于此。 vim - 无处不在的文本编辑器。 neovim - 现代化的 vim。 kakoune - 受 vim 启发的模态编辑器。 micro - 简单直观的编辑器。 o - 零配置的文本编辑器和 IDE。 helix - 受 kakoune 启发的模态编辑器。 Prosaic - 专为长篇写作打造的写作者优先应用。 Microsoft Edit - 简洁的编辑器。 前端开发 caniuse-cmd - 搜索 caniuse.com 关于浏览器功能支持的信息。 strip-css-comments-cli - 移除 CSS 中的注释。 viewport-list-cli - 返回设备及其视口尺寸的列表。 surge - 免费发布静态网站。 公网暴露 将 localhost 上运行的服务暴露到公网,用于测试和分享。 ...

八仙,中国动画的又一个里程碑
周日看了《八仙!》这部电影, 说实话,给我的震撼还是很大的, 当时迟到了 5 分钟,但是在进入蓬莱的一系列镜头非常丝滑且有趣, 当时就感觉,这也太烧钱了。 英翻 All Wishes Come True,也就是 “有求必应” 之前其实叫不出八仙的名字,可能就知道一个铁拐李,吕洞宾, 但现在都能叫出来了,还有钟离权、何仙姑、蓝采和、韩湘子、张果老、曹国舅。 一部好的电影是可以让人回味很久的,尤其是最后的伏笔一一收回, 其实之前都没有细想过,人物形象更加立体了。

开源博客框架横向对比
博客对比 一、静态站点框架 Hugo(Go) 仓库:gohugoio/hugo 89K 开发语言:Go 是否需要构建:✅ 需要预构建 主题生态:极其丰富,博客主题众多 推荐主题:PaperMod 模板语法:Go Template 依赖要求:单二进制,零外部依赖 最大短板:Go模板语法晦涩难懂,自定义学习成本偏高 Astro(TS) 仓库:withastro/astro 61K 开发语言:TypeScript 是否需要构建:✅ 需要预构建 主题生态:中等,官网/文档居多,成熟博客主题偏少 推荐主题:AstroPaper 模板语法:Astro组件语法,支持Vue/React/Svelte 依赖要求:Node.js环境 最大短板:博客基础能力(标签系统、分页)需要手动搭建 Hexo(TS) 仓库:hexojs/hexo 41K 开发语言:TypeScript 是否需要构建:✅ 需要预构建 主题生态:中文生态成熟,海量博客主题 推荐主题:Butterfly 模板语法:JavaScript 依赖要求:Node.js 最大短板:文章数量庞大后构建速度下降;Node依赖容易出现版本冲突 Docsify(JS) 仓库:docsifyjs/docsify 31K 开发语言:JavaScript 是否需要构建:❌ 无需构建 主题生态:轻量文档主题为主,博客生态薄弱 推荐主题:docsify-themeable 模板语法:HTML/JS 依赖要求:仅静态文件托管,无构建依赖 最大短板:客户端实时渲染,SEO差;源码直接暴露,不适合公开博客 Zola(Rust) 仓库:getzola/zola 18K 开发语言:Rust 是否需要构建:✅ 需要预构建 主题生态:中等,数量远少于Hugo,文档向居多 推荐主题:DeepThought 模板语法:Tera(类Jinja2) 依赖要求:单二进制,零外部依赖 最大短板:社区体量小,插件、现成博客主题较少 如何用 zola 搭建个人博客 VitePress(TS) 仓库:vuejs/vitepress 18K 开发语言:TypeScript(Vue) 是否需要构建:✅ 需要预构建 主题生态:偏向文档主题,博客方案需自行封装 推荐主题:vitepress-theme-demoblock(官方默认扩展) 模板语法:Vue模板 + Markdown 依赖要求:Node.js环境,依赖较多 最大短板:原生不以博客为目标,标签、分页、封面需要二次开发 Eleventy(JS) 仓库:11ty/eleventy 19.8K 开发语言:JavaScript 是否需要构建:✅ 需要预构建 主题生态:极少开箱即用博客主题 推荐主题:eleventy-base-blog 模板语法:自由选择:Nunjucks/Handlebars等 依赖要求:Node.js 最大短板:高度自由但几乎没有完整成品模板,适合愿意手写页面的开发者 Nextra(TS) 仓库:shuding/nextra 13.9K 开发语言:TypeScript 是否需要构建:✅ 需要预构建 主题生态:文档向为主,适合技术站点 推荐主题:nextra 默认主题 模板语法:React/MDX 依赖要求:Node.js、Next.js较重依赖 最大短板:资源占用高;偏向文档,纯个人博客属于重度方案 二、动态博客程序(PHP,数据库驱动) WordPress(PHP) 仓库:WordPress 18.6K 开发语言:PHP 是否需要构建:❌ 动态程序,无需预构建 主题生态:全球海量付费+免费博客主题 推荐主题:Astra 依赖要求:PHP + MySQL/MariaDB 最大短板:插件繁多容易臃肿、安全漏洞多、访问速度一般 Typecho(PHP) 仓库:typecho/typecho 12.4K 开发语言:PHP 是否需要构建:❌ 动态程序,无需预构建 主题生态:国内轻量化博客主题丰富 推荐主题:Mirages 依赖要求:PHP + SQLite / MySQL 最大短板:更新缓慢,社区活跃度逐年降低,插件数量有限

2026年,重启 Hugo 博客
今天刚好休息在家,准备部署自己的博客, 豆包给我推荐的是 Zola,但是确实资料少,官方文档没有中文, 正好想起来以前使用过 Hugo,准备重启这个项目。 用下来感觉还行,
如何优雅地使用 spock 框架写单测
添加 Spock 依赖 <!-- 1.Spock 相关 --> <dependency> <groupId>org.spockframework</groupId> <artifactId>spock-core</artifactId> <version>1.3-groovy-2.4</version> <scope>test</scope> </dependency> <dependency> <groupId>org.spockframework</groupId> <artifactId>spock-spring</artifactId> <version>1.3-groovy-2.4</version> <scope>test</scope> </dependency> <!-- 2.PowerMock 相关--> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-module-junit4</artifactId> <version>2.0.4</version> <scope>test</scope> </dependency> <dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mockito2</artifactId> <version>2.0.4</version> <scope>test</scope> </dependency> 单测 Demo 静态类单测 Demo @RunWith(PowerMockRunner.class) @PowerMockRunnerDelegate(Sputnik.class) // 交给 spock 代理执行 @PrepareForTest([静态类.class]) @SuppressStaticInitializationFor(["静态类全名"]) // 限制静态类里的静态代码块初始化 class StaticMethodSpec extends Specification { def service = Mock(UserService) def controller = new UserController(userService: service) void setup() { // Mock静态类 PowerMockito.mockStatic(静态类.class) } @Unroll def "测试类名 #desc"() { given: "给定条件" def user = service.getById(_ as Integer) >> [new User(name: "Alice", age: 12), null] def map = [k1:v1, k2:v2] def list = [1,2,3] and: "mock静态方法返回值" PowerMockito.when(静态类.静态方法(Mockito.any())).thenReturn(自己想要的返回值) when: "调用时" def res = controller.getById(v_id) then: "比较" res != exp // 或者 with(res){ name == v_name age == v_age } where "数据格式" desc | v_id || exp "success" | 1 || new User(name: "Alice", age:12) "fail" | -1 || null } } 捕获异常 def "test 测试类"(){ //... then: def exception = thrown(v_expectException) exception.code == v_expectCode exception.message == v_expectMessage // ... } 校验参数 def "test 测试类"(){ //... then: 1 * 某类.某方法({ it.某属性1 == 属性1 it.某属性2 == 属性2 }) // ... } 参考文献 Spock 单元测试框架介绍以及在美团优选的实践
随想,看看 Joyful Pandas 项目
最近准备复现一些实验,每次都要重新学 Pandas 的一些语法,刚好看到了这个仓库 joyful-pandas 仓库介绍 作者是 Datawhale,一个专注于数据科学与 AI 领域的开源组织(有 100+ 个仓库,超级厉害!) 2020.1.20 建立仓库,初始化 README.md # Joyful-Pandas A Complete Guide for Pandas Learners 5 年期间不断更新,最近一次是在 2024.10.17,更新了英文的介绍 代码方面 代码写的非常优雅, 不过因为我的 Pandas 版本比较高, 导致部分函数失效, 比如 DataFrame 的 mad 函数, 在 pandas 的 2.0 版本之后就废弃了 或者说使用 any(1) 或者 all(1) 时, 新版的 Pandas 需要显示地指定形参名, 所以建议改为 any(axis=1) 和 all(axis=1) 然后就是格式化稍微有点问题(不影响代码运行) 我的评价是是个非常好的教程仓库! 参考 datawhalechina/joyful-pandas: pandas 中文教程
Git 一些比较复杂的使用场景
前言 平常使用 git add . 或者 git push|pull|clone 等命令,已经无法满足各种奇怪的需求了, 在使用 Github 的时候,由于对【本地分支】和【远程分支】理解不够深刻,难免会出现各种问题 所以本文章持续记录使用 Git 时遇到的各种复杂场景 1 本地分支相关 1.1 签出会覆盖本地修改 场景描述: 通常我会在 dev 分支上操作, 然后细粒度地提交 commit, 上传到 github 上形成一个 pull-request, 然后 main 再接受 pr,然后合并成一个 但是有时候会忘记切换分支(比如现在就是),直接在 main 上更改 在 vscode 的状态栏就会出现 *,此时想换到 dev 分支 直接切换会出现 该提示下的三个选项分别是什么意思呢? 储藏并签出:希望【暂存区】仍然在当前分支,然后切换到另一个分支 迁移更改:希望将【暂存区】的内容切换到另一个分支,可能要处理冲突问题 强制签出:(不推荐)直接放弃当前分支(比如 main)未提交的 commmit,然后切换为分支 dev 所以该场景我们需要的是【迁移更改】 1.2 暂存 apply 和 pop 什么时候需要【储藏并签出】呢? 比如当自己在 a-branch 上写代码,突然有紧急的 bug 需要在 b-branch 维修,但是 a-branch 还没到达可以提交的阶段,此时就可以使用【储藏并签出】的功能 在修改完以后,回到原先的分支,可以看到 stash 的小图标 ...

Hugo 简易教程
介绍 Hugo 是一个由 Go 语言编写的静态博客框架 仓库地址: Hugo - github 安装 # windows scoop install hugo # unix brew install hugo 配置文件 默认的配置文件 主题 默认使用 PapaeMod 这个主题 sample-config.yml | hugo-PaperMod Wiki 更新工作流 第一步: 生成文章模板 # 默认模板 hugo new post/xxx.md # 指定模板 hugo new --kind [archetypes] post/xxx.md ## 例如 hugo new --kind post post/whatever.md 第二步: 内容创作 第三步: 提交与发布 如果是草稿态,记得打开 draft:true FAQ Q1: 如果添加图片 第一种方案: 用图床 第二种方案: 使用 index.md 方法,可以参考下文 Hugo 博客插入图片的方法 | Cassius’s Blog ...
我的第一篇博客
欢迎来到我的博客