彷徨えるフジワラ

年がら年中さまよってます

OpenSolaris 勉強会 2013.09

日本OpenSolarisユーザーグループ主催の Tokyo OpenSolaris 勉強会 2013.09に参加してきた。

参加記録のブログエントリを書くのは、すごく久しぶりなのだけれど、一応5〜8月にかけても毎月参加 (っつーか開催) はしていたりする。ls本の執筆作業が佳境だったこともあって、単にブログエントリを書く気力がアレだっただけなのだけれど。

lsを読まずにプログラマを名乗るな!

lsを読まずにプログラマを名乗るな!

"Solaris Internals" 枠は、例によって要約した発表資料を元に、勝手な掘り下げやら何やらなのだけれど、前回で漸く第9章の『Virtual Memory』が終了したので、今回からは第10章の『Physical Memory』に取り掛かることに。
とは言うものの、今回は (今回も?) 勉強会時間枠一杯が持ち時間なので、延々 Solaris Internals ネタは厳しいところ。事前の読み込み/資料準備的な意味でもね。

ということで、勉強会時間枠の後半は、ls本の執筆過程で仕入れた、Solaris (= SysV) の ls 実装と GNU coreutils の ls 実装の違いとか、環境互換性/性能要件の話などをダラダラと1時間ほど喋って時間を潰すことに。

思いっきり『買ってね!』発言してたので、ステルスじゃないけどね(笑)。

その際に、国際化周りの件で:

という話題が。

この挙動の原因は、strftime(3) に指定可能なフォーマットの中に、day of the month に関するものが:

  • "%d": 01 〜 31 の数値(decimal number)
  • "%e": 1 〜 31 の数値。1桁日付の場合は空白文字が先行

というものしか無いため。

もしも %d や %e の出力に対して『日』を補うと、『"decimal number" に変換』するという仕様への違反になってしまうので、%d や %e を使う限りは、『日』を表示しようがない。

GNU coreutils の ls が、直接 %e を使う "%b %e %Y" 形式ではなく、"%x" を使用すれば、最終更新日が半年以上前のファイルに関しては、『2013年09月28日』みたいな表示になるけれど、これまでの表示形式との互換性を考えると、変更は難しいだろうなぁ……

例えば、個々の day of the month に固有の名前が付く (+それが重要な意味を持つ) ような文化圏への対応が必要になれば、strftime の POSIX 仕様に %d や %e 以外の day of the month 向けフォーマットが追加される……かもしれない。『29日は肉の日』ぐらいじゃぁ、駄目だろうなぁ(笑)。