2017-08-20

3桁区切りのカンマを出力するための「%'d」が便利

C言語のprintf由来の書式指定において、いつの間にか「%'d」という指定が出来るようになっている事を知りました。
% printf "%d\n" 123456789
123456789
% printf "%'d\n" 123456789
123,456,789
整数出力するため「%d」と指定するのは基本中の基本です。ここで3桁ごとにカンマで区切ろうとすると、従来は一筋縄ではいかなかったはずです。

ところが何時の間にやら「%'d」というが可能になっていて、これを使えば一発です。なんて便利なんでしょうか。

2017-08-18

官報附録「全國汽車發著時刻及乗車賃金表」

時刻表百年のあゆみ』の13ページ(第1章 明治時代 2 官報掲載の時刻表)には次のような記述があります。
「官報」付録に時刻表掲載の三回目は一八九〇(明治二三)年七月二五日で今回から『全国汽車発着時刻賃金表』の表題となる。(中略)以後「官報」付録の時刻表は毎月発行されるようになり、一九〇〇(明治三三)年まで発行が確認されているが、具体的に何年何月まで発行されたかは未確認である。

この記述が正しいなら、明治23年から明治33年ごろまで約10年間に亘り官報附録の時刻表が発行され続けたことになります。毎月発行ということなので10年間なら百数十回は発行したと思われますが、国立国会図書館デジタルコレクションにある官報を閲覧しても、数えるほどしか見つかりません。これは一体どういうことなのでしょうか。

どうやらデジタル化された官報は、付録時刻表が随分抜け落ちているようなのです。

この官報は書誌情報に「出版社 日本マイクロ写真」とあるように、株式会社ニチマイ(旧・日本マイクロ写真株式会社)が販売しているマイクロフィルムを使っていると思われます。ニチマイのWebにある沿革には昭和35年3月に「大蔵省印刷局から官報マイクロ版制作認可」されたことが書かれています。公立図書館などで明治期の官報がマイクロフィルムとして閲覧できることを紹介していることがありますが、おそらくニチマイの製品を購入しているのでしょう。

国立国会図書館デジタルコレクションにある官報を(目を皿のようにして)探しましたが、次の6件くらいしか見つけられませんでした。
  1. 官報第2121号附録(明治23(1890)年7月25日)
  2. 官報第2258号附録(明治24(1891)年1月12日)
  3. 官報第2852号附録(明治25(1892)年12月28日)
  4. 官報第2923号附録(明治26(1893)年3月31日)
  5. 官報第3452号附録(明治27(1894)年12月28日)
  6. 官報第3874号附録(明治29(1896)年5月30日)
デジタル資料ではありませんが、書籍の中に「全國汽車發著時刻及乗車賃金表」が掲載されていることがあります。

時刻表百年のあゆみ
  1. 官報第1903号附録(明治22(1889)年10月31日)p.13
時刻表でたどる鉄道史
  1. 官報第3026号附録(明治26(1893)年7月31日)p.38
史料鉄道時刻表
  1. 官報第1903号附録(明治22(1889)年10月31日)pp.167-174
  2. 官報第2852号附録(明治25(1892)年12月28日)pp.183-186
  3. 官報第2874号附録(明治26(1893)年1月31日)pp.187-190
  4. 官報第3026号附録(明治26(1893)年7月31日)pp.191-194
  5. 官報第3127号附録(明治26(1893)年11月30日)pp.195-198
懐しの時刻表
  1. 官報第1903号附録(明治22(1889)年10月31日)
  2. 官報第3978号附録(明治29(1896)年9月30日)
これらの書籍では、全てが掲載されている場合と一部だけが参考程度に掲載されている場合があります。いずれにせよ官報附録として発行されていたことが確認できる訳ですが、これらの多くが国立国会図書館デジタルコレクションの官報からは漏れているのです。何故このようなことになるのでしょうか。国立国会図書館の東京新館3階にある議会官庁資料室に行って尋ねてみましたが、経緯は不明のようでした。

「全國汽車發著時刻及乗車賃金表」は古書店で取り扱っている場合もあるようです。「日本の古本屋」で検索してみたら(値段は高いが)10件弱ほど見つかりました。

2017-08-17

Lenovo ThinkPad Edge E530cの中古

長年に亘りFreeBSDで使用していたノートPCに限界を感じていたので、何か新しい機種に置き換えることを検討していました。今後もFreeBSDを使っていくつもりなので、Windowsがインストールされている新品だと困ります。中古であっても、Windowsがプリインストールされていると、どうせ使うことはないのにライセンス料金の分だけ値段が上がってしまうのは面白くありません。ジャンクで十分ですが、あまり不具合が多いのは避けたいところです。

ジャンクの買い物は一期一会なので、オークションとか通販だと現物を確認できないので、店頭販売を探していました。今月初め頃に秋葉原を散策したときに目星をつけていたので、とうとう購入に踏み切ることにしました。

PCNET秋葉原中央通り店 の2Fのジャンクコーナーで「Lenovo ThinkPad Edge E530c」を購入しました。ジャンクなので付属品は一切ないため、やはりジャンクのACアダプタも同時に購入しました。あわせて1万円ちょっとです。

ThinkPad以外にも、dynabookなどもありましたし、HP、NEC、富士通などのジャンクもありました。確固たる理由があるわけでもないのですが、今回はThinkPadにしようと予め決意していました。ThinkPadもいろいろとありましたが、 E530cが他にも何台かありました。中にはメモリやHDDが外されていたり、キーボードが壊れているいるものや、何か故障があると注記されているものもありました。

外装はベタベタした感じで、決して状態が良いとは言い難いのですが、開けてみた感じではキーボードも綺麗で好印象です。仮に外装が綺麗だけどキーボードやLCDが壊れているとしたら、むしろ使いにくいでしょう。メモリは4G、HDDは320Gでした。おそらくE530cの販売時の状態そのものだと思います。

今後空き時間をみつけて、現行のノートPCの環境を移行させようと思っています。現行PCは、Pentium 3 450MHzで、メモリ300M程度という相当旧い性能です。新しいPCはCore i3 2.4GHzで、メモリ4Gという、現時点でも決して高性能であるとは言えませんが、Pentium 3 450MHzに比べたら雲泥の差です。

2017-08-07

FreeBSD/i386用マシンを更新したい

自宅では大昔に発売されたGatewayのノートPCにFreeBSD/i386をインストールして使っています。ほぼ常に電源は入れっぱなしになっていて、365x24運用中です。ごく普通のノートPCなので、そのような用途は想定されていないと思いますが、大きな問題もなく、利用できています。

ただし旧過ぎるために最新版のFreeBSDがインストール出来なかったり、グラフィックス関係のportsがSSE2を要求するためコンパイルできなかったりと、 さすがに使い続けるのが苦しくなってきました。ちなみにdmesgには次のような表示が出ています。今さらPentium IIIの450MHzとは時代遅れですが、CPU性能に依存するようなことをしていないので、不満には感じませんでした。
 CPU: Intel Pentium III (447.70-MHz 686-class CPU)
マシンを新調するとしても、FreeBSDで使うので、新品を購入する必要はなくて、中古で十分だと思っています。それも高価格の高性能マシンである必要もなくて、激安中古で十分です。なにしろ今まではPentium IIIだったのですから。

新品を購入するなら通販でも構わないと思いますが、中古は現物をしっかり確認してから購入したいので、まずは秋葉原で下見することにしました。

中古を取り扱っているショップをいくつか見てみましたが、中古とは言っても、なかなか激安の出物には巡り合えません。しかもWindowsがインストールされていたりするので、FreeBSDに入れ換える目的からすると、余分です。

思っていたような中古が見つからないなぁと諦めかけているとPCNETという店に、僕がイメージしていたようなジャンクが大量に置いてあるのを見つけました。ジャンクなのでOSは入っていないし、値段も激安です。場合によってはメモリやHDDが抜いてあったり、キーボードのキーの一部が壊れていたりしますが、それがジャンクというものでしょう。中古PCのHDDは劣化が不安なので、そもそも換装しようと思っていたので、HDDが抜いてあっても別に構いません。キーボードが壊れているのは困りますが、それ以外の基本機能が正常なら、パーツ不足は自前で揃えれば良いだけのことです。

ジャンクは現品限りなので、オークションや通販などで入手するのは不安です。出来れば店頭で確かめて買いたいものです。今月中には何か買おうと思っています。

2017-07-31

TVドラマはリアルさを追求したとしても本当にリアルな訳ではないハズ

NHKの大河ドラマは、戦国時代か幕末明治期を扱うことが殆どです。その時期の有名人は放送されてしまっているので、主人公を選んでドラマを組み立てるのが大変なんじゃないかと思います。特定の地域では有名な人物はたくさんいると思いますが、全国的な知名度が高くないと視聴率が落ちて「失敗作」とか評価されてしまうでしょう。

同時に、最近の大河ドラマは時代考証が綿密になってきているようです。歴史研究などの新しい知見を取り込んでいたり、当時の風習や言葉遣いなども出来る範囲で再現しようとしているようです。

例えば、斎藤道三の娘で織田信長に嫁いだ女性を、昔は「濃姫」としていましたが、最近は「帰蝶」と呼んでいたりします。名前が本当に帰蝶だったのか確かではないと思いますし、現代ドラマの家族関係のように親子や夫婦の間柄で帰蝶という名前が呼び合っていたのか、怪しいところです。

さらに言えばドラマでは当時の実名(いわゆる諱)を使って会話を繰り広げていますが、ここも純粋に当時の状況を再現しようとすれば怪しいところです。配下の武将が主君の名を呼びかける場合や、同盟している大名同士において、実名が使われる状況は無かったのではないかと思います。諱は忌み名であり、そう容易く口に出せるようなものではなかったはずです。しかしドラマで当時の会話を忠実に再現しすぎると、史学の専門家以外は視ていても何のことはサッパリ分からない会話になってしまって、「ドラマ的」に面白くないでしょう。

同じような状況はNHKの朝ドラにも言えると思います。今は「ひよっこ」が放送されています。この作品は従来と大きく違って、純粋な創作であり、実在するモデルがいません。しかし舞台設定は茨城県北部ということになっているので、茨城県北部を「思わせる」ような方言で会話しているようです。

ここで先程述べた大河ドラマと類似した状況が生じます。つまり、茨城県っぽい方言であっても、本当に茨城県北部で使われていた方言ではないだろうと思われることです。

どういう意味かというと、イントネーションとか方言らしい言葉を使うことで、茨城県「らしさ」を表現することができます。しかし方言というのはイントネーションだけではありません。使われている語彙なども重要です。方言に地域限定性が強いほど、使われている語彙は全国的に馴染みの薄いものになります。それが全国で放送されるドラマに現れれば、視聴者からすると「何を言っているの?」ということになってしまうのではないでしょうか。これではドラマ(娯楽作品)になりません。

そういわけで、大河ドラマにしろ朝ドラにしろ、純粋に歴史的であったり、純粋に地方色を表現したりしているわけではなく、視聴者かイメージできる範囲に抑えてあるのではないかと思います。

2017-07-18

オーディオデバイスが認識された

dynabook SS SX/15AにインストールしたNetBSD/i386のカーネルを8.99.1にしたら、7.0.1の頃には認識されなかったオーディオデバイスが、認識されていました。

昨年10月頃にNetBSD 7.0.1をインストールした時のブートメッセージは次のようになっていました。
hdaudio0 at pci0 dev 27 function 0: HD Audio Controller
hdaudio0: couldn't map mmio space

ところがNetBSD 8.99.1にしたところ、うまく認識できているようです。
hdaudio0 at pci0 dev 27 function 0: HD Audio Controller
hdaudio0: interrupting at msi0 vec 0
hdafg0 at hdaudio0: Realtek Semic ALC262
hdafg0: DAC00 2ch: Speaker [Built-In]
hdafg0: DAC01 2ch: HP Out [Jack]
hdafg0: ADC02 2ch: Mic In [Jack]
hdafg0: ADC03 2ch: Mic In [Built-In]
hdafg0: 2ch/2ch 44100Hz 48000Hz 96000Hz 192000Hz PCM16 PCM20 PCM24 AC3
audio0 at hdafg0: full duplex, playback, capture, mmap, independent
hdafg0: Virtual format configured - Format SLINEAR, precision 16, channels 2, frequency 48000
hdvsmfg at hdaudio0 not configured

この問題はkern/51920として2017年1月27日付でPRを送っていて、今でもopenのまま放置されています。しかし最新カーネルでは認識できているので、実質的には解決しました。

2017-07-15

mono-2.10.9nb20

dynabook SS SX/15Aに入れたNetBSD/i386を実運用していくにあたり、まずは最新版にバージョンアップしておくことにしました。ソースをCVSでカレントの最新版にして、カーネルとユーザーランドを最新化しました。8.99.1になりました。

pkgsrcから入れたアプリケーションも最新版にしておこうと思って、pkg_rolling-replaceを使ってバージョンアップしています。いろいろとトラブルがあって一筋縄ではいかないのですが、少しずつ前進して(いるはず)います。

ところがKeePassで依存しているMonoがビルドできません。次のようなエラーが出てしまいます。
MCS     [basic] mcs.exe
cp mcs.exe ./../class/lib/basic/mcs.exe
cp: mcs.exe: No such file or directory
../build/executable.make:105: recipe for target '../class/lib/basic/mcs.exe' failed
gmake[7]: *** [../class/lib/basic/mcs.exe] Error 1
gmake[7]: Leaving directory '/usr/pkgsrc/lang/mono2/work/mono-2.10.9/mcs/mcs'
../build/rules.make:132: recipe for target 'do-all' failed
gmake[6]: *** [do-all] Error 2

以前ビルドした時(2017年2月11日頃)には問題なかったと思います。この時はmono-2.10.9nb18というバージョンでした。今回はmono-2.10.9nb20と多少バージョンがあがっているようです。

両者の違いをcvswebで確認してみましたが、ビルドエラーの原因となりそうな箇所は見つけられませんでした。

自前でビルド出来ないのであれば、既にビルド済みのバイナリを入手して解決しようと思ったのですが、NetBSDのオフィシャルサイトを見てもmono-2.10.9nb20.tgzが見当たりません。mono-2.10.9nb19なら置いてありました。

どうにも困ってしまいましたが、このままではpkg_rolling-replaceを先に進めることができません。緊急避難的な対処方法ですが、mono-2.10.9nb18をmono-2.10.9nb20に見せかけることにしました。どうやらpkgの管理は/var/db/pkgで行っているようです。ここにmono-2.10.9nb18というディレクトリがあったので、試しにmono-2.10.9nb20に名前を変えてみました。どうやらうまくいったようです。

今回はオリジナルのバージョンがmono-2.10.9で変わっていなかったので、このような小手先の対処でも問題はないと思います。もしオリジナルバージョンから変わっているのであれば、このような対処方法ではかえって傷口を広げることにことなってしまうでしょう。