Gauche > Archives > 2010/12/20

2010/12/20 05:49:12 UTCshiro
#
そして再び停電。Colemanのガスランタンが本来の目的(キャンプ用)よりも停電対策として大活躍しているという。
#
らむ太は、ガスランタンは「ていでんのときにつかうもの」だと思い込んでいる。
2010/12/20 06:15:42 UTCとおる。
#
近所の変電所で火事があったそうです。 http://www.khon2.com/news/local/story/Transformer-fire-causes-a-power-outage-in-the-Ala/8a7aYtgHbEKwAO_334wCQg.cspx 雨降りすぎて火事になるって怖いですねぇ。
2010/12/20 06:25:06 UTCshiro
#
ありゃ、とおるくんのところも被害受けました?
#
夕飯にPanda Cuisineをテイクアウトしたんだけど、店の人が「今日はクレジットカードのオンラインが動いてないんだ」ってぼやいて手動で処理してました。
2010/12/20 06:28:26 UTCとおる。
#
寝てたので気が付きませんでした(笑)。起きたころには電気は復活してました。ただ、CLEAR WiMAX がたびたび止まってました。
2010/12/20 06:38:55 UTC(び)
#
ガスランタンの照度なら、灯り的には不便ないですよねぇ。子供の頃停電と言えばろうそくだったなぁ。
#
東京ではさすがに停電の経験はないけど、両親の田舎(福井)では、台風だの落雷だのでちょいちょい停電があった
#
雨降りすぎて火災かぁ。日本では、猫が変電所で感電して停電ってのがありました。
#
http://www.47news.jp/news/2010/12/post_20101220134459.html
#
蛇とかカラスも時々聞くなぁ
2010/12/20 18:15:44 UTC齊藤
#
Gauche を使って Windows 環境で日本語のファイル名を付けたファイルを作りたいとき、ファイル名の文字列はあらかじめ cp932 に変換しないといけないみたいですが、これは意図した挙動なんでしょうか。
2010/12/20 18:18:39 UTCshiro
#
む、いや、そこはあんまり考えてないです。Gaucheの内部エンコーディングのままWCHARに変換してWindows APIを呼び出してるんですが、Windows APIってunicodeK化されてませんでしたっけ。
#
s/unicodeK化/unicode化/
2010/12/20 18:19:50 UTC齊藤
#
されてるはずと思うんですが…
2010/12/20 18:20:36 UTCshiro
#
む、ファイルまわりはPOSIX互換インタフェース (_openとか) を呼んでたかな。もしかしてこいつはコードページの影響を受けるとか。
#
意図としては全部unicodeで扱えるようにするつもりです。コードページに依存してエンコーディング変換なんて大変なので。
2010/12/20 18:30:13 UTC齊藤
#
バイナリを見てみると CreateFile を呼んでるところが CreateFileA の方になってるけど、 WCHAR は CreateFileW の方を使うんじゃなかったかな?
#
試してないので見当違いかもしれないけど。
2010/12/20 18:38:37 UTC齊藤
#
CreateFile を使ってるのは truncate のところだけみたいなので、ファイルのオープンには Windows API を直接呼んではいない感じ
2010/12/20 18:40:28 UTCshiro
#
ああ、じゃあ_open()を呼ぶとレガシーインタフェースの方を使ってしまって、それはコードページによって変換されちゃうようになってるってことすね、やっぱり。
#
全部Windows APIを直接叩くようにした方がいいな。
2010/12/20 19:00:30 UTC齊藤
#
動画サイトから情報を回収するスクリプトを書いてて動画のタイトルを名前にしたファイルを作ろうとして、 CP932 には無い文字が〓になっちゃうのが困ったなと思って。
#
大抵は顔文字の部分とかなのでそれほど害は無いんですが。
2010/12/20 19:04:41 UTCshiro
#
互換性が問題になる部分なので、早く直した方がいいですね。
2010/12/20 19:06:59 UTC齊藤
#
Windows 以外での事情はどうなんでしょう。
#
Gauche の内部コードからシステムのロケールに従って変換する形になるんでしょうか。
2010/12/20 19:11:45 UTCshiro
#
ふーむ、そこをGauche層で吸収すべきか、それともC等で書くのと同様にプログラマの責任で、Gaucheは渡されたバイト列をそのままシステムに流しますよ、とすべきかなあ。現在は後者ですが、深く考えていたわけではありません。
2010/12/20 19:16:36 UTC齊藤
#
変換できない文字の扱いをどうするかということもあるので、 Gauche 側で勝手にやっちゃうのもイマイチ綺麗な解決とは言えないかもしれませんね。
2010/12/20 19:20:29 UTCshiro
#
ですね。変換時点でエラーになると柔軟性がないし、かといって下駄とかにマッピングしちゃったら情報が落ちちゃうし。
2010/12/20 19:31:19 UTCshiro
#
デフォルトでは現状のままとして、ファイル関係のapiに:pathname-encodingみたいなキーワード引数をつけて外部表現を指定することもできる、としておくと便利かな。その値として"*locale"とか渡すと現在のlocaleに従って変換してくれるとか。
2010/12/20 19:34:22 UTC齊藤
#
現在のロケール以外を指定したいケースってあります?
#
ファイルシステムとロケールが食い違う場合とかもあるのかな?
2010/12/20 19:43:29 UTCshiro
#
ロケールはいつでも変更できるので、食い違う事例は十分あるんじゃないかな…
#
このへん見ると、OSは基本的には単にバイト列としてスルーするだけなので、エンコーディングの解釈はアプリケーション任せというカオスな現状なのかな http://unix.stackexchange.com/questions/2089/what-charset-encoding-is-used-for-filenames-and-paths-on-linux
#
OSXのファイルシステムは内部で正規化とかしてたっけ。ファイルシステムによってはエンコーディングの制約があるかも。
2010/12/20 19:49:51 UTC齊藤
#
へぇ。 そりゃまた泥臭い状況ですね。
2010/12/20 20:29:52 UTCとおる。
#
OS X は「レポート.txt」が「レホ゜ート.txt」みたいになっちゃったりしますね。そういえば、Mac で作った繁体字のファイル名がはいった zip ファイルをもらったことがあるんですけど、Linux で unzip したらなんか解読できない文字になっちゃいました。