手工编译安装 librime

librime 是 Rime,包括各个系统上的桌面版,Squirrel(鼠须管) 等等依赖的核心库。 Preparation 首先要安装 Xcode 和命令行工具,以及必要的编译工具: brew install cmake git Get the code 获取代码: git clone --recursive https://github.com/rime/librime.git or download from GitHub, then get code for third party dependencies separately. Read more ...


JWT 认证使用

现代 Web 应用一般常用的认证方式有如下两种: session cookie session 认证需要服务端大量的逻辑处理,保证 session 一致性,并且需要花费一定的空间实现 session 的存储。 所以现代的 Web 应用倾向于使用客户端认证,在浏览器中就是 cookie 认证, 但是 Cookie 有明显的缺陷: Cookie 会有数量和长度限制 Cookie 如果被拦截可能存在安全性问题 为什么要认证 数据安全: 进行安全的验证,服务端可以无状态认证 签名,只有信息发送者才能产生别人无法伪造 Read more ...

2021-06-29 jwt , authentication , session , cookie , python , java

Duplicacy 增量备份工具使用

Duplicacy 是一个用 Go 语言实现的,开源的,跨平台的备份工具。 特性: 命令行版本对个人用户完全免费 付费授权会提供了一个网页端管理 支持 Amazon S3,Google Cloud Storage,Microsoft Azure,Dropbox 和 Backblaze 等云存储,本地磁盘,SFTP 等等 支持多个客户端备份到同一个云存储 支持增量备份 支持加密备份 Lock Free Deduplication 这是一个对 Duplicacy 实现原理的简单介绍,完整的说明可以参考发布在 IEEE Tr Read more ...


使用 Netdata Cloud 监控所有的机器

很早就开始用 Netdata,新买来的 VPS 直接一行命令就可以安装,并且提供了一个非常不错的监控后台。但是因为没有办法在一个中心化的地方管理我所有的机器,所以之前都是用一个简单的 nodequery 服务来监控服务器是否在线,CPU、内存、流量使用率,但 nodequery 已经很多年没有更新,而最近去看 Netdata 官网的时候发现其退出了一个 Netdata Cloud 的服务,体验下来确实直接可以代替 nodequery 了。 什么是 Netdata Cloud [[Netdata]] 是一款非常漂亮并且非常强大的监控面板,由于 Netd Read more ...


Ubuntu 下启用 SFTP 服务

[[SFTP]] 全名为 SSH File Transfer Protocol,是一种通过 SSH(Secure Shell)协议进行文件传输的网路协议。它提供了一种安全的方式来传输文件,因为所有传输的数据都会被加密,这可以防止数据在传输过程中被拦截和阅读。 SFTP 不仅可以进行文件传输,还可以进行远程文件管理,例如创建和删除远程目录,移动和重命名远程文件等。这使得 SFTP 成为一种非常强大的工具,尤其是对于需要远程管理文件的开发者来说。 在互联网的早期人们都使用 FTP 来传输文件,FTP 是 File Transfer Protocol 文件传 Read more ...

2021-06-07 sftp , ubuntu , linux , ssh , file , backup

macOS 上的超级强大的键盘自定义工具 Karabiner Elements

之前使用 macOS 外接键盘的时候因为想要实现和 Linux 一致的键位,所以接触到了 Karabiner Elements 这一款 macOS 上的键盘映射工具,但是了解之后发现,Karabiner 能做的事情不只有键盘按键的映射,设置可以组合按键,区别短按和长按,组合使用不同的按键,下面就简单的介绍一下过去几年里面我使用的 Karabiner Elements 特性。 Karabiner Elements 是 Mac 上一款强大的键盘自定义工具,几乎可以实现任何的键盘 remapping,并且也是开源的。如果说改键的话,只显示了 Karabine Read more ...


减小 git 仓库的大小

我一直使用 Git 仓库来管理我的 Markdown 笔记,但是因为定时提交,没多久就产生了非常多的提交历史,并且因为频繁的提交和导入了一些比较大的 PDF 文件和图片文件,所以导致 .git 目录的体积已经超过了所有笔记的大小,笔记内容也就 300+M,但是整个仓库有近 1G 大小。 所以便想着能不能给 Git 仓库进行一下瘦身,最开始想要实现的方向是能不能压缩一下提交历史,然后把历史记录中的大文件剔除。所以查询方案的时候就先往这两个方向上靠。 git gc 最先想到的就是在仓库执行 git gc, (garbage collection),这条 Read more ...

2021-05-02 git , linux

读书是否是唯一重要的事?

不久之前和朋友约去了趟植物园,聊起读书是否是第一要务的时候产生了一些分歧,关于是否要去学习如何学习这一件事情产生了一些分歧。我站在的立场是读书是必须的,而我朋友则认为在有限的时间里面实践要优先于读书。而关于要不要学习如何学习这一件事情,他仍然坚持自己的实践而非去了解如何学习。 在我仔细思考,以及阅读了相关的文章之后慢慢地对我朋友的一些想法产生了一些理解。但在一些观点上我依然坚持我自己的看法。在我看来实践固然重要,但读书在我看来一样的重要,在我过去年的学习生活中,我曾经尝试过这种各样的媒介,但是没有一个能够提供图书所带来的成体系的知识。 两种读书的方式 Read more ...

2021-05-01 study , learning , thinking , discuss , reading , book

Git 使用技巧:创建不带历史的分支

有些时候想要创建一个不带历史记录的 git 分支,比如要从原来在本地开发的项目中,将代码 push 到 GitHub 开源,不想分享糟糕的历史提交记录,那就可以创建一个不带历史记录的分支。 查看 git checkout --help 的帮助说明, 可以看到其中有一个选项是 --orphan ,就是创建一个孤立的分支,这个分支上的第一个提交不回有任何的 parents 节点。 --orphan <new-branch> Create a new orphan branch, named <new- Read more ...


Android 上的 RIME 输入法 trime 同文输入法使用

早之前就已经在 Linux 和 macOS 上配置了 RIME 并且一直使用到现在,但是在主力的 Android 上从最早的触宝输入法,后来切换成 Gboard,日常使用倒是没什么大问题,就是有一些词总是需要翻页才能找到,这让我非常不爽,就想手机上能不能用 RIME,于是就有了这篇水文。 开源地址:https://github.com/osfans/trime Gboard 存在的问题 最大的问题便是词库不全,在桌面端虽然 [[RIME]] 也不能及时更新词库,但是只要我在 RIME 中输入一遍后,便再没有这个问题,并且 RIME 会记住你所造出来的 Read more ...


最近文章

  • 推荐我使用的 Agent Skills 随着 AI 编程助手的快速发展,[[Claude Code]]、[[Codex]]、[[Gemini CLI]] 等工具已经成为开发者日常工作中不可或缺的伙伴。然而,这些工具的默认功能往往只是冰山一角。通过安装和配置 Agent Skills,我们可以大幅扩展这些 AI 助手的能力,让它们更加智能、更加专业。
  • Antigravity Agent Skills 功能介绍与实战指南 2026 年 1 月 14 日,[[Google]] 为其 AI 驱动的开发工具 [[Antigravity]] 推出了 Agent Skills 功能。这个开放标准的技能系统让开发者可以将专业知识打包成可复用的技能包,极大地扩展了 AI 智能体的能力边界。
  • Gemini CLI Agent Skills 功能介绍与上手指南 [[Gemini CLI]] 最近推出了一个非常强大的新功能,名为 [[Agent Skills]]。这个功能极大地扩展了命令行 AI 助手的边界,允许用户根据自己的需求定制专业的技能包。
  • 我购买了一个 DJI Mic Mini 最近为了提升移动拍摄时的收音质量,我入手了 DJI Mic Mini。虽然大疆提供了带充电盒的套装,但我只购买了单机版本(发射器+接收器,2 TX 1 RX 版本),因为对于我日常的拍摄需求来说,本体的续航已经完全足够了。
  • Auto Claude:Vibe Kanban 的终极形态?让 AI 并行开发的“指挥中心”来了 在上一篇文章 《Vibe Kanban:当 AI 开始并行协作,我们的开发方式变了》 中,我分享了一种利用 [[Vibe Kanban]] 和 AI Agent 实现并行开发的工作流理念。我们可以利用 Vibe Kanban 来统一管理多个并行任务。