「あの人も読んでる」略して「も読」。さまざまな寄稿者が最近気になった情報や話題をシェアする企画です。他のテックな人たちがどんな情報を追っているのか、ちょっと覗いてみませんか?
Unicodeにおける合字について
Linus Torvalds Expresses His Hatred For Case-Insensitive File-Systems
LinuxはMacOSと異なり、文字を物理的に区別する特徴があります。例えば、MacOSのファイルシステムは大文字と小文字を区別しませんが、Linuxは区別します。
Torvalds氏が述べるように文字コードの扱いは、バグやセキュリティの問題を引き起こす可能性もあるため重要です。
今回触れられていたのは、Unicodeにおける合字についてです。合字とは、2つ以上のCode Pointを組み合わせて1つの文字として扱うことを指します。
身近な例としては、日本語の平仮名や片仮名に濁点や半濁点を付けるケースがあります。例えば、「か」と「゛」を組み合わせて「が」を作ることができます。また、最近だと絵文字の合字もあります。
OSの仕事のように、セキュリティに重大な影響を与えるものでなくても、これは気をつけるべき仕様です。実際筆者は、過去にインターネットから取得したテキスト情報を元に機械学習を行う際に、Unicodeの合字を考慮せずに処理してしまい、出力結果が意図しないものになってしまったことがあります。
Unicodeでは他にも旧字体、新字体対応など落し穴があります。ユーザー入力が可能なソフトウェアでは、Unicodeの仕様を考慮しながら開発を進めるべきでしょう。
Nintendo Wiiでブログをホストする猛者あらわる
This blog is hosted on a Nintendo Wii
表題の時点でおかしいですが、Nintendo Wiiでブログをホストしている猛者が現れました。技術スタック的には、NetBSD on Wii + lighthttpd + caddy (reverse proxy) + Hugo (static site generator) という構成です。
さらに優れているのは、このサイトがHttpsで配信されていること、オブザーバビリティページまで用意されていることです。
次のようなURLで、オブザーバビリティページにアクセスできます。 https://blog.infected.systems/status/
⣤⣤⣤⠀⠀⠀⠀⠀⣀⣤⣄⠀⠀⠀⠀⠀⣠⣤⣤⠀⠀⣴⣿⣦⠀⠀⢀⣶⣿⣦
⢸⣿⣿⡇⠀⠀⠀⢠⣿⣿⣿⣇⠀⠀⠀⠀⣿⣿⡿⠀⠀⠻⣿⠟⠀⠀⠈⠿⣿⠟
⠀⢿⣿⣷⠀⠀⠀⣼⣿⡿⣿⣿⡀⠀⠀⢸⣿⣿⠇⠀⠀⣀⣀⡀⠀⠀⠀⣀⣀⡀
⠀⠸⣿⣿⡆⠀⢠⣿⣿⠃⢿⣿⣇⠀⠀⣿⣿⡟⠀⠀⠀⣿⣿⣿⠀⠀⠀⣿⣿⣿
⠀⠀⢿⣿⣷⠀⣸⣿⡟⠀⠘⣿⣿⠀⢸⣿⣿⠇⠀⠀⠀⣿⣿⣿⠀⠀⠀⣿⣿⣿
⠀⠀⠸⣿⣿⣄⣿⣿⠃⠀⠀⢿⣿⣇⣿⣿⡿⠀⠀⠀⠀⣿⣿⣿⠀⠀⠀⣿⣿⣿
⠀⠀⠀⢿⣿⣿⣿⡟⠀⠀⠀⠸⣿⣿⣿⣿⠃⠀⠀⠀⠀⣿⣿⣿⠀⠀⠀⣿⣿⣿
⠀⠀⠀⠘⢿⣿⡿⠁⠀⠀⠀⠀⠻⣿⣿⠟⠀⠀⠀⠀⠀⣿⣿⣿⠀⠀⠀⣿⣿⣿
blog.infected.systems NetBSD Wii Status
Generated on: Wed Apr 30 08:00:01 UTC 2025
=== uname -a ===
NetBSD wii 10.1 NetBSD 10.1 (WII) #0: Mon Dec 16 13:08:11 UTC 2024 mkrepro@mkre
pro.NetBSD.org:/usr/src/sys/arch/evbppc/compile/WII evbppc
...
利用するハード選びから実装まで、全部入りの面白い記事なので、ぜひ読んでみてください。
参考
Pythonのwith文の使い方
【保存版】 2 万文字で語る Python の with 文で始めるリソース管理 ── C++/Go/TypeScript の技法を横断
Pythonのwith文は、リソース管理の構文で、ファイルのオープンやクローズなど良く使われます。私も利用していたのですが、内部実装までは読んでいなかったので非常に勉強になりました。
文中にでてきた次のコードですが、リソースが増えても可読性が悪化しないような書き方があるので、紹介します。
with open("example.txt", "r") as f1, open("example2.txt", "r") as f2:
content1 = f1.read()
content2 = f2.read()
3.10以降は、with文の中に()を使うことで、より可読性の高いコードを書くことができるようになりました。
with (
open("example.txt", "r") as f1,
open("example2.txt", "r") as f2
):
content1 = f1.read()
content2 = f2.read()
参照: Python 3.10 – Parenthesized Context Managers
QEMU 10.0リリース
ChangeLog/10.0 - QEMU
LaurieWiredさんのXポスト
QEMU 10.0がリリースされました。QEMUは、オープンソースの仮想化ソフトウェアで、LinuxやWindowsなどのOSをエミュレートすることができます。
そんなQEMUの10.0に次のデバイスが加わり話題になっています。
- apple-gfx-pci: Intel Mac(x86_64)用の仮想GPUデバイス
- apple-gfx-mmio: Apple Silicon(ARM64)用、macOSのVirtualization.frameworkの実装と似た仮想GPUデバイス
macOSホストのParavirtualizedGraphics.frameworkを使って、ゲストmacOSにハードウェアアクセラレーション付きグラフィックスが動くのは、非常に面白いです。
ハードはMacOSホストのみでLinuxなどのOSはサポートされていません。僕はLinuxで動いたらやってみたいなと思っていただけに残念ですが、今後のアップデートに期待したいです。