「一行字」並不比「一列字」來的沒有道理
行列原本是表格、直書方塊字文章等等的用詞,橫的是列,直的是行。二十世紀左右漢字文化圈各語言開始用橫書之後,「一行字」在橫書的時候變成橫的。有些人覺得因為橫的是列,直的是行,因此橫書的時候應該稱作「一列字」。
Recent content on https://kisaragi-hiu.com/
行列原本是表格、直書方塊字文章等等的用詞,橫的是列,直的是行。二十世紀左右漢字文化圈各語言開始用橫書之後,「一行字」在橫書的時候變成橫的。有些人覺得因為橫的是列,直的是行,因此橫書的時候應該稱作「一列字」。
Worktrees are useful essential if you want to multitask on one project. This is becoming common with the use of AI agents, but even when not using agents it is just nicer to be able to essentially checkout many branches at once. The default way of working with worktrees is not great though. In ~/Projects/foo git worktree add ../feature1 # create a new checkout at ../feature1 for branch feature1 In…
Open source contributions invent:plasma/plasma-desktop#3381 : In application launchers, put “Add to favorites” next to “Add to desktop” (Ongoing) marzocchi/zsh-notify#103 : Support sending notifications on Linux even if xdotool and wmctrl aren't present; support focus checking and activating windows on Plasma Wayland (Ongoing) microsoft/TypeScript-Website#3482 : Document the JSDoc @overload tag,…
I think instead of getting out a half-assed full year review before New Year I'll just edit and post the resolution I wrote a few days ago. 2026 resolution Personal Fucking actually graduate NKUST successfully. Stay alive to see the next year. Open source contributions Please actually push forward the Firefox Android URL thing again. It's probably 20 hours of work. Someone has to do it.
Here's a ranty response to Tseng-Tsia's post about zh_TW translation principles . Sorry. TL;DR user preferred wording ie. realities of Taiwanese Mandarin are more important than principles that we make up. The principles serve our goals of minimizing confusion, consistency, etc., not the other way around. Our principles should not invalidate words that users actually find acceptable, and we should…
Open source contributions Wilfred/suggest.el#52 : Fix extra quote argument to cl-case Wilfred/suggest.el#53 : Add suggestion candidates from various issues There are a few more changes I might want to upstream (-zip-lists or cl-mapcar with list), but I haven't cleaned them up yet. doomemacs/doomemacs#8581 : Improve first startup speed when using the unicode module doomemacs/doomemacs#8575 : Fix…
I've skipped many months, but I want to try to get back to this. Open source contributions Deno 2.5.5: Fix Deno's implementation of os.cpus() erroring on Android or when CPU info isn't available ( denoland/deno#31097 ). This is, however, unintentionally almost identical to Termux's downstream patch , which I didn't know existed when I investigated the issue for myself . The difference is that I…
I got curious while working on a project and did a quick test, this is the result. My main point is effectively RPC, so I have control over the production of the data. As such I'm only going to be comparing the parsing speed for a very basic structure. How First prepare the basic test file: ;; /tmp/bench.el ( defun generate () ( require 'json ) ( let (( list nil )) ( dotimes ( i 10000000 ) ( push…
A very basic major mode for the Fusion programming language.
Like inquirer-date-prompt but in Emacs and for ISO 8601 timestamps. Use arrows (or hjkl in Evil) to move around components of the timestamp and increase/decrease it.
A command for exporting the current heading to a file in my preference. It's a core part of my workflow reviewing notes from Simplenote and importing them into my notes archive.
An attempt to make an Astro content loader for Org files.
No. Che-sī chi̍t-kóa Tâi-gí ê bûn. Google Fonts ê chi̍t-ē chin tōa ê būn-tê sī, i ē kā peh-siaⁿ ê jī-goân the̍h-tiāu. (This is some text in Taiwanese. Google Fonts has a major problem where they remove the character for the 8th tone.) Chi̍t-ê blog iōng ê jī-thé (Equity) mā bô-hoat-tō͘ piáu-sī peh-siaⁿ, chhin-chhiūⁿ: (The font used by this blug, Equity, also isn't able to display the 8th tone, like…
There are some useful features in Lokalize that are not quite obvious. Ideally they'd be more obvious, but here's an attempt to just document them a bit. I think I'll update this list in the future as I find more of these. Focusing the translated text field There isn't currently a command to focus the text edit field. But the functionality is there. Use the Ctrl+l shortcut (“Focus the search line…
This is how I currently set up Emacs for C++, as an update to Trying to set up Emacs for C++ (2022) . Goals I'm using Emacs to code for KDE projects, mostly written in C++/Qt. Dependencies Clangd as the language server, and lsp-mode as the LSP implementation in Emacs. I don't use Eglot because last time I used it it didn't support multiple language servers in one buffer, which is a thing I need.
My main terminal is usually Alacritty or Konsole, they work fine, but sometimes I feel like exploring other terminals. My main gripe with Alacritty is that it doesn't have tabs, and having the ability to use one or two tabs is nice. Otherwise it's a perfectly good terminal. My main issue with Konsole… it's fine and featureful, but Perhaps Breeze Dark should've been the default window color scheme…
Mandarin version Thought I might write down my current workflow for contributing to KDE and publish it. Disclaimer: everything written here is my understanding. If anything deviates from how things actually are, blame me for getting the facts wrong. I'm currently a member of the Traditional Chinese ( zh_TW ) translation team for KDE, having gotten commit permissions after the invitation of…
My own automation to manage my checkout of the KDE subversion repository, using Git to track local changes.
Searching across MELPA, GNU ELPA, and NonGNU ELPA at the same time in a browser is basically impossible, and you have to do it within Emacs instead. This aims to change that.
GnuPG uses Pinentry, which can read from the dbus secret service provider (which KDE Wallet is one). But KDE Wallet has an option to encrypt wallets using GPG, which in this cause would cause a deadlock: gpg refers to pinentry pinentry refers to kwallet kwallet refers to gpg ArchWiki says this: Note: When using KDE , the Secret Service API integration is disabled to prevent a deadlock in case KDE…
取夠好的品質並且不要浪費空間。假設只有一個音訊跟一個視訊軌。假設音訊是雙聲道。 ffmpeg -i 'whatever.mov' -c:a libopus -c:v libx265 -crf 23 -r 60 'out.mkv' 用 opus 音訊編碼然後用預設設定,它是夠好的 包裝用 mkv,印象中它比較不挑編碼 影片用 hevc / h265,然後用 crf 23,也是我偏好的平衡 需要改影格率的話放在輸出前面。我讀說明文件的印象是只有極少數情況才會需要指定輸入影格率。 也可以用硬體加速,不過因為 crf 是 libx265 的功能所以沒辦法指定 crf,要用其他指定品質的方式。
Convert WebExtensions API messages.json format to/from Gettext PO files in order to be able to translate them in Lokalize. i18next-gettext-converter also works, but it doesn't handle the message descriptions.
我電腦上習慣用 RIME 輸入法引擎提供的注音輸入法,但它預設(就像其他注音輸入法一樣)有自己的英數模式。因為系統的輸入法引擎(我是用 fcitx5)也有英文輸入模式,這造成有的時候會在切換回 RIME 之後還是英數模式,打字時有幾秒鐘被卡到的感覺。
2025-01-04: So it's been a while since I wrote a “monthly” review. This is partially because I'm again trying to finish my college studies. Nevertheless, I would like to at least publish what I wrote in September. Open source contributions Make @pkgjs/parseargs work on gjs and other runtimes that don't have global (understandably, since global is a Node-specific name) ( @pkgjs/parseargs#158 ).…
2025-01-04: Again , it's been a while since I updated these. Open source contributions There's like none other than a stalled effort to make a change to the Font Management page in KDE's System Settings. My own projects (Node) kisaragi-hiu/vtt-to-text-paragraphs , a small script utilizing @plussub/srt-vtt-parser to read a subtitle file and output the subtitles into a text file, split into…
TL;DR you might want shr-dom-print . I wanted to write this down because it's kind of non-obvious. To parse XML / HTML text into nodes, there are libxml-parse-xml-region and libxml-parse-html-region functions which return nodes that can be manipulated with, say, functions from dom.el . But after you got the right parse tree and want to write it out back into a text with XML tags, neither xml.c nor…
Extract text from subtitle files for further analysis. If current start time - previous end time is more than epsilon (default 100ms), an extra newline is added when copying lines over. A simple script built on top of @plussub/srt-vtt-parser .
我之後可能會再修這篇,總之先寫一下。 在進行人力文字辨識的時候,有的時候可能會有漢字是不知道讀音或不知道其他打法的。我的做法是這樣的: 假設我要打這個字:「苜」,但我不知道怎麽打。我知道倉頡的組字法,但我不記得漢字各種元素對應的倉頡碼。
Yet another license selector. This can be used like this: npx use-license MIT # an SPDX identifier or without an argument to select a license from SPDX. This will then write the selected or specifies license to ./LICENSE . I wrote this because I thought the prior art is too complicated and also need more upkeep than really is necessary. This package fetches directly from SPDX's license list data ,…
Open source contributions Add language support for Dune (dune-project) to GitHub Linguist ( github-linguist/linguist#6814 ). I opened it in June but with too many filenames that do not meet GitHub's usage requirements, which is why it took until now to be approved. My own projects I'm trying to make a dashboard for KDE translations that's able to show a bit more stats than Websvn or l10n.kde.org.…
From code being written to code working in an app, there are a wide variety of places where code is run. This distinction needs to be kept in mind, especially for something like web metaframeworks, where you have code running on different contexts using the same language (so it's no longer as obvious). So I think it's a good idea to write it down. My mental model When making the thing: While…
A way to play with GLib DateTime format strings. Since gjs is JS and has access to GLib stuff, building a simple shell in gjs seemed to be the easiest option.
Let's say I have a server program running locally on 127.0.0.1:8080; and I've already set up DNS such that example.com points to the IP of the server this program is running on. I can then set up Nginx like this as a reverse proxy, mapping the domain name to a program so that I can host multiple programs for multiple domains on the same machine. server { server_name example.com; location / {…
I'm continuing in a bit of a limbo state right now, switching between procrastination and hyperfocused work while being really unsure about stuff. This, well, isn't healthy. Open source contributions [Emacs] xenodium/ready-player#3 : Fix 'read only' error when playing a song after another finishes [Emacs] doom-themes#834 : Fix visibility of gray text in emacs-vterm. The grayed out text of…
This month I spent 49 hours on translation, 15 of which are for KDE, and 17 hours on development. I left college, though not as a graduation due to personal failures. I guess I can just put it like that… Work I was contracted by MODA's zh_TW open source localization project to produce one set of translations for GIMP. Open source contributions [JS] Opened an issue for tc39/proposal-async-context…
reStructuredText 的文內語法周圍需要有空格,但這樣的話中文連結不就必須要有多餘的空格了嗎?(像是 這個 樣子) 我解釋一下為什麼會這樣覺得: Org Mode 的文內語法就是這樣,光是*加上星號*不夠加上粗體,因為 Org Mode 的設計者在不使用空格斷詞的語言的考量與 “/a/random/path” 好寫程度的取捨上選擇了後者。(因為這篇文章是用 Org 寫的,你會發現下一段的 inline code 也是多一堆空格。)另外查 reST 的中文介紹(像是 https://learn-rst.readthedocs.io/zh-cn/latest/reST-入门.html )的時候也會看到中文連結的確有多的空格。
This month I spent 32 hours on translation (22 of which are for KDE), and 30 hours on development. Open source contributions Shiki: add support for Vala, Genie, QML, QSS, qmldir, Haxe, HXML, Wikitext, Soy ( shikijs/textmate-grammar-themes#54 ) Shiki: add support for Emacs Lisp via Alhadis/language-emacs-lisp ( shikijs/textmate-grammar-themes#56 ) Fix code links being indistinguishable from…
A personal po-mode fork for translating stuff in Emacs, sometimes reimplementing ideas from Lokalize.
This month I think I did quite a few things, which I'm now more able to quantify thanks to my progress on Canrylog. I logged about 45 hours developing stuff, and 17 hours translating KDE. AUR packages I adopted the AUR packages rime-pinyin-zhwiktionary and fcitx5-pinyin-zhwiktionary (they share a PKGBUILD) in order to fix 404 during build. They were relying on a specific Wiktionary dump from 2022…
I'm trying to test out the startup process of an open source React Native app built with Expo, so I really need the dev server to get out of the way in this case. Expo docs describes two ways to build locally, which are (a) use expo run and (b) use eas --local . This is not the whole picture. In Expo, your actual build options, as far as I can tell, are: Use expo run:<platform> , which builds a…
I felt like I should write reports on what I've been doing, to more accurately guage how much work I've actually done, so here it is. I became a KDE e.V. member at the end of February for my translation work for KDE, following an invitation from Jeff Huang, another zh-TW translator for KDE and other Free Software. In March, I started making kde-project.kisaragi-hiu.com , a redirector from KDE…
Just some notes on macros in the JavaScript ecosystem. Babel Babel plugins basically function as macros, as compile-time transformations. They are also capable of doing literally anything: JSX, TypeScript, and new JS syntaxes all have implementations as Babel plugins. Creating and maintaining a plugin for each macro is cumbersome, though: it's not at all as simple as a defmacro .…
A Cloudflare Workers project to redirect KDE project IDs to their KDE Invent repositories. Useful for checking context while translating for KDE, as translation files are named after project IDs but Invent doesn't have an easy way to go from ID to repo. Includes an index page listing all projects. Package manager: Bun Runtime: Cloudflare Workers (workerd) Bundler: Esbuild (through Wrangler) Dev…
This is my current KDE localization glossary plus some comments. This is my translation glossary. It's mainly for translating KDE apps, but I want to kind of document things. I use the glossary kind of as a reference. While there are some items that are strongly binding (stuff like always using 剪貼簿 for “Clipboard” and never 剪貼板), I haven't found a way to annotate that yet beyond just knowing it…
我想把我目前的 KDE 翻譯流程寫下來、公開出來。 我目前是 KDE 正體中文翻譯團隊的一員,在 pan93412 的邀請下有直接提交翻譯的權限。因此我的流程在沒有直接提交的權限時可能會比較不方便。
Projects I think I made some projects that I'm reasonably proud of. Kemdict updates. nowww.tw , an attempt at an advocate site for Taiwanese websites to please redirect their apex domains to their www subdomains. The first URL is 404 but the second isn't. 2025-10-30T21:59:14+0900: in 2024 I let the domain lapse because I wanted to save the domain cost. .tw domains are a little expensive. I now…
Ignoring batch mode , the message function displays a message to the user in the echo area and logs it in the message log buffer (default *Messages* ). If we're calling some code that we don't control (or sometimes even if we do), we might want to suppress either behavior. To do that: To make message not show something in the echo area temporarily, let-bind inhibit-message to non-nil. ( let ((…
Emacs on my systems has had an issue where IME inputs would pass through to Emacs instead of going to the IME. For instance, 「新鮮」 is typed as vupvu0 RET; some characters would slip through into Emacs. I'm not sure if it's just my configuration or not. In Emacs 29, when not using pgtk, the issue persists, no change here. But if I use x-gtk-use-native-input , the problem goes away — mostly. Now…
In Emacs Lisp: If you want fast (constant) lookup time, you use a hash table If you want to preserve order, you use a list But sometimes you want a collection that has both constant lookup time and the ability to preserve element order. This library implements that. (This basically ports JavaScript Sets into Emacs Lisp.)
The back button is not hooked up by default in Framework7 , even if you choose the Capacitor template. (This is for framework7-svelte. Your mileage may vary, as I haven't checked.) To hook it up, we need to (a) go back in history (b) when the back button is pressed. (a) Dynamically go back in history framework7-svelte exports an f7ready function, which calls its callback after the Framework7 app…