手工编译安装 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 ...


最近文章

  • 开源 Kotlin ORM 框架 Exposed 使用说明 Exposed 是 JetBrains 在数年前推出的轻量级 ORM 框架,Kotlin 编写,已经在 JetBrains 内部多个关键产品使用。
  • Open WebUI 基于网页的大语言交互界面及联网搜索配置 之前的视频也介绍过,ChatWise,Cherry Studio,Chatbox 等大语言模型调用的本地客户端,虽然这些客户端都还是跨平台的,但是总还是需要占用本地的空间,今天我就来介绍一款基于网页的 LLM 交互客户端 Open WebUI,以及再介绍一下如何配置 Open WebUI 让其支持联网搜索。
  • 多版本管理工具 mise 使用详解 我用了很多年的 asdf 作为管理各种语言版本的工具,但是最近一次更新,asdf 多了一些变化,我也写了一篇文章介绍怎么升级的。在文章下方有小伙伴(lonelyhentxi) 给我推荐了 mise 这样一款使用 Rust 编写的多版本管理工具 mise,我大致的看了一下 mise,觉得是一个非常不错的项目,在这里再次感谢。
  • 搭建 Joplin 同步服务器 在我的博客上很久之前我介绍过 Joplin,不过我自己只在 Linux,Android 上用过一段时间,后来出现了 Obsidian ,就切换到 Obsidian 了,但是最近看到一篇文章介绍了如何自建一个 Joplin 同步服务器,这样就可以直接无缝地进行同步数据了。之前 Joplin 只是开放了 [[WebDAV]] 协议的访问协议用可以用来同步。
  • 从 Java 到 Kotlin Kotlin 和 Java 作为 JVM 生态中两大主流编程语言,在语法特性、开发效率和适用场景上存在显著差异。Kotlin 凭借现代化设计解决了 Java 的许多痛点,而 Java 凭借成熟生态和广泛支持仍是企业级开发的主力。