Effective MacOS Shortcuts

Summarize the various keyboard shortcuts I am currently using. Key Mapping Map Caps Lock to Hyper key (Using Karabiner) System Wide Open Apps Use Karabiner Open apps with Hyper key: Hyper + Q: Open QQ Hyper + W: Open WeChat Hyper + E: Open Browser (Easy to press) Hyper + A: Open Alacritty Hyper + S: Open Sublime Hyper + D: Open VSCode (Easy to press) Hyper + Z: Open Zotero Hyper + X: Open Typora (Easy to press) Hyper + C: Open VSCode (Easy to press) Hyper + P: Open PowerPoint Hyper + L: Open Excel Hyper + H: Hide Current Window (Combo: Hyper + A, then + H to peek new messages) Open Utilities Option + W: Bob Translate Option + .: Raycast Note Cmd + Space: Trigger Raycast Option + Space: Trigger EuDic Ctrl + Option + Space: Trigger Emoji Search (Raycast) Windows Utilities Option + H: First Two Thirds ...

April 19, 2025 · Last updated on August 1, 2025 · 2 min · KKKZOZ

Dev Operations

This blog post will primarily document and summarize some issues I usually encounter in Unix environments, including but not limited to command line and Git operations. Remote Address 很常见很弱智的一个错误, 但就是架不住偶尔会犯一次 在开启 http server 之类的操作时, 如果填的地址是 localhost:9000, 那么只有本机可以访问 如果想在其他主机上访问, 需要填为 :9000 Bash Shell Shell 分类: 登录 (Login) vs 非登录 (Non-Login): 登录 Shell: 通常是你通过验证身份(输入用户名和密码,或使用 SSH 密钥)后第一个启动的 Shell。比如: 直接在物理控制台登录 通过 ssh user@host 远程登录 使用 su - 或 sudo -i 切换用户(注意那个 - 或 -i 很关键,它们表示模拟一次完整的登录) 非登录 Shell: 不是通过上述登录过程直接启动的 Shell。比如: 在图形界面中已经登录后,打开一个新的终端窗口 在 Shell 中执行一个脚本 (bash script.sh) 在已有 Shell 中再启动一个新的 Shell (bash) 交互式 (Interactive) vs 非交互式 (Non-Interactive): 交互式 Shell: Shell 的标准输入、输出和错误都连接到终端,并且你可以在其中输入命令并看到输出。简单说,就是你正在与之交互的 Shell 非交互式 Shell: Shell 不是直接连接到终端进行交互的。最常见的例子是运行 Shell 脚本。Shell 从脚本文件读取命令,并将输出(如果未重定向)发送到标准输出,但它不期望用户实时输入命令 根据这两种分类, 可以组合出三种常见的 shell 类型: ...

April 17, 2025 · Last updated on August 1, 2025 · 13 min · KKKZOZ

The Usage of jj

Operations Basic # Create a change whose ancestor is <chang-id> # This operation will check out to the new change # You can disable the behavior by add "--no-edit" jj new <change-id> # Update the change description or other metadata jj desc -m "<message>" # Update current change's description and create a new change on top jj commit -m "<message>" # "Check out" the change jj edit <change-id> Squash @ xrnotmor [email protected] 2025-05-31 19:20:11 4f515fd4 │ D ○ xwvsolxp [email protected] 2025-05-31 19:19:57 811e63a7 │ C ○ urtyqupy [email protected] 2025-05-31 19:19:45 22f25b64 │ B ○ mwtsztxw [email protected] 2025-05-31 19:19:27 a552b9bc │ A ◆ zzzzzzzz root() 00000000 The most direct jj squash: merge current change (@) into its parent: ...

April 4, 2025 · Last updated on August 1, 2025 · 6 min · KKKZOZ

Chrome Plugin Recommendations

This article records several of my favorite Chrome extensions. PrintFriendly1 Make web pages printer-friendly and convert them to PDFs. Easily remove ads and navigation, and customize what you print or PDF. 将网页转化为 PDF, 并且可以忽略一些花里胡哨的元素, 适合对技术博客等进行处理后放入 Zotero 中 Wikiwand2 AI-driven wiki aggregator created to enhance user experience on Wikipedia by streamlining knowledge consumption As featured on TechCrunch, Lifehacker, Gizmodo, Fast Company and The Next Web: Wikiwand is an award-winning interface that optimizes Wikipedia’s amazing content for a quicker and significantly improved reading experience! ...

April 1, 2025 · Last updated on August 1, 2025 · 2 min · KKKZOZ

Tips and guidance for writing

Reading Note1 General Advice on Technical Writing One of the most crucial aspects of writing a good technical paper is what I call maintaining user state. Like a good operating system, the writer should ensure that the (mental) state of the user (i.e. reader) is kept coherent. Important It means that the paper systematically builds up the reader’s understanding and knowledge of the work, starting from a reasonable initial state. ...

March 31, 2025 · Last updated on August 1, 2025 · 12 min · KKKZOZ

Pass The Wall

“Across the Great Wall we can reach every corner in the world.”1 Remote Port Forwarding 让云服务器方便快捷地使用本地代理 建立远程端口转发 ssh -R 1082:127.0.0.1:1082 s2-ljy -p 22 配置云服务器的代理环境变量 export HTTP_PROXY="http://127.0.0.1:1082" export HTTPS_PROXY="http://127.0.0.1:1082" Caution 这是临时设置, 仅对当前终端生效, 如果想永久设置, 请编辑 ~/.bashrc ...

March 30, 2025 · Last updated on August 1, 2025 · 2 min · KKKZOZ

Docker Network Introduction

Summarize common Docker Network operations. Default Bridge Network After a fresh Docker installation, you can find a default bridge network up and running. docker network ls Docker uses a software-based bridge network that allows containers connected to the same bridge network to communicate while isolating them from other containers not running in the same bridge network. docker run -dit --name busybox1 busybox docker run -dit --name busybox2 busybox docker inspect busybox1 | jq -r ' [0].NetworkSettings.IPAddress' docker inspect busybox2 | jq -r '.[0].NetworkSettings.IPAddress' # OK docker exec -it busybox2 ping 172.17.0.3 # Error docker exec -it busybox2 ping busybox1 Conclusion All containers will automatically connect to this default bridge network. Default bridge network allows container communication using IP addresses. ...

March 29, 2025 · Last updated on August 1, 2025 · 3 min · KKKZOZ

Using Rust

Recording some errors and refactoring encountered while writing Rust. Option When to use .as_ref()? When you want to convert an Option<T> to an Option<&T> without consuming the original Option. ...

March 26, 2025 · Last updated on August 1, 2025 · 8 min · KKKZOZ