06/11

(0:49) 今日もプログラミングのアルバイト。

Windows文字コードの件でハマった。

 

どうもよくわからないエラーが出る(頭の悪い書き方)ところがあって、いろいろ試行錯誤すると「コメント行を削るとエラーが出なくなる」ことが判明。

どうなってるんだ??? と混乱しかけたけど、そういえば…と思い当たるところがあった。

VS の CL が UTF-8 に対応していない(というか CP932 だと思い込んでいる)ため、UTF-8 の日本語コメントの末尾が半端な CP932 文字と見なされて、改行が食われてしまっていたのだ。

そりゃ意味不明なことになるはずだ。

 

まあこれは昔からある問題なんだけど、さすがにもう VS2013 だし…と思って油断していた。

はぁ。

だいたい、C++ のレベルで CP932 を扱うわけでもないのに、なんでわざわざマルチバイトの処理をするんだ?

バイト列をそのまま通してくれればいいじゃないか。

しかも、半端な1バイト目があると2バイト目が何であろうと(コントロール文字であっても)それを消費するという処理も頭が悪すぎる。

 

この問題は放置したらまずいかな…と思って報告しようとしたら、Windows 版での手順に LF を CRLF にするというのがあるのにぼくがそれをサボっていたことに気がついた。

そういえば、CRLF なら(CR しか消費されないので)この問題は起こらないのだ。

 

ぼくがそこで手を抜いたのは、VS2013 にもなって今時改行 LF のファイルを扱えないなんてことはないでしょ、と高をくくっていたということがある。

それで、その高のくくり方は正しく、LF であってもちゃんと改行として扱われていた。

しかし、それのせいで CP932 2バイト目消費問題に牙をむかれてしまった。

 

というわけで、今の手順で結果としては問題はないんだけど、CRLF にするということによって潜在的なバグ対処になっている(意図と違う結果)状態なのでもやもやする。

 

NICT の件(有期雇用技術員)が決まった。

まあ、ぼくは元々根無し草だから有期なのはいいけど。

問題がなければ、少なくとも数年はできるはず。

 

しかし、妻がぼくの継続性について信用ができないというので、やっぱりぼく一人で先に行くことになった。

まあ、しかたがない。

実際、すぐに辞めたくなる可能性は大いにある。

 

でも、信用できないから一人で行けというのはやっぱり気持ちが冷める。

ぼくの中で、妻は妻' ぐらいの位置づけになった。

微妙な差だけど、たとえば妻が風邪を引いて苦しんでいたら自分なりに胃に優しそうなものを買ったり作ったりするけど、妻' なら適当にインスタントですますというぐらいの感覚。

 はぁ。

 

高速文字列解析の世界で BWT の復習をした。

だいぶ理解が深まった。

ウェーブレット行列をやった後なので、rank や select が直感的にわかるということもある。

その過程でひとつ本のミスを見つけたので報告した。

 

明日は FM-index の復習をしよう。