FreeBSD 11.1のリリースとALPS GlidePoint

PS/2接続のALPS GlidePointがどう動くのかを知りたくて、 NEC VersaPro JVF-7にリリースしたてのFreeBSD/amd64 11.1 RELEASEをインストールしてみた。 結果として、xf86-input-synapticsでProtocol "alps"で動かすことは できなかった。

他には、pkgコマンドでX.orgをインストールすると、llvm 4.0がインストール されてしまうのが気になった。 baseにllvm 4.0が含まれているのに、重複してしまうのは、あまり面白くない。

Windows 10でインストールされているフォントをPowerShellで一覧する

Windows 10でインストール済みのフォントの一覧をテキストファイルで得たい用事があった。 こんな簡単なことなのだが、ぴったりの例を探すことができなかった。 ちゃんとPowerShellを体系的に理解しないといけないが、以下のようにすれば動く。


[void] [system.reflection.assembly]::loadwithpartialname("system.drawing")
(new-object system.drawing.text.installedfontcollection).families.name | out-file fonts.txt

http://codegists.com/snippet/powershell/displayallfontsps1_matthewjberger_powershell が参考になった。

NetBSDのdate(1)コマンドは、なぜデフォルトでは分かりにくい結果を返すのか?

はじめに

NetBSDでLANG=ja_JP.UTF-8な環境で生活しているが、date(1)コマンドを 実行すると、分かりにくい結果の文字列が返って来るのがなぜなのか ずっと気になっていた。


$ date
月 7月 10 21:00:41 JST 2017

やっと重い腰を上げて調べてみたので、結果を書いておく。

date(1)のソースコードを見てみる

src/bin/date/date.cに出力の処理は書かれているようである。 特にフォーマットを指定しない場合の出力フォーマットを決めている箇所を 探すと、以下の箇所が見付かった。141行目である。


   132          if (!rflag && time(&tval) == -1)
   133                  err(EXIT_FAILURE, "time");
   134
   135
   136          /* allow the operands in any order */
   137          if (*argv && **argv == '+') {
   138                  format = *argv;
   139                  ++argv;
   140          } else
   141                  format = "+%a %b %e %H:%M:%S %Z %Y";
   142
   143          if (*argv) {
   144                  setthetime(*argv);
   145                  ++argv;
   146          }

どうやら、ロケールの標準値を指定する等ではなく、私が見やすくないと思っていた フォーマットで決め打ちになっている。

POSIXの規格を見てみる

POSIX(これはIEEE 1003.1-2008のことであって、Open Groupのウェブサイトで公開されているものと思っている)の規格の内容を調べてみると、date(1)コマンドに関する最新版はhttp://pubs.opengroup.org/onlinepubs/9699919799/utilities/date.htmlで公開されているようである。ここで読んで行くと、以下のような記述があった。


STDOUT

    When no formatting operand is specified, the output in the POSIX locale shall be equivalent to specifying:

    date "+%a %b %e %H:%M:%S %Z %Y"

ここで使われているのは「shall」である。RFC 2119の用語に従えば、 以下のような意味なので、従わないという選択肢はない。

1. MUST   This word, or the terms "REQUIRED" or "SHALL", mean that the
   definition is an absolute requirement of the specification.

結論

NetBSDのdate(1)コマンドは、私には見やすくないが、POSIX標準に従っているために、変更されることはないことが分かった。

であれば、仕方がないので、


$ alias date='date +%c'
とでもしておくしかない。

Windows 10 home Creators UpdateでCAPSキーをCTRLキーにする

Microsoft Windows 10 homeをインストールしているマシンがあるのだが、CAPSキーをCTRLキーに置き換えて使用している。 以下のような内容をcaps2ctrl.regと言うファイル名で保存し、ダブルクリックでregedit.exeで書き込むば良い。


REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00

どこで入手したのか原典が分からなくなってしまっているが、Microsoft Windows 10 home Creators Updateで動いている。

MPEG 2.5

MPEG 2.5と言う表記を見掛けたのだが、どういうものか理解できなかった。 /usr/pkgsrc/audio を以下のように検索すると、 /usr/pkgsrc/audio/libmad/DESCR に、MPEG-2 extension to Lower Sam...