2007年9月5日水曜日

何故? 何故なの? 何故なのよ・・・・・!!!

おっと気付けばこんな時間。早く眠りたいと思いつつ備忘録的なBlogポスト。
今日はSuperKaramba&Pythonと格闘しておりました。Pythonは今回初めて触るので結構戸惑いましたねぇ。内部での処理についてはどうということはないのですが、日本語の文字列に関する扱いにしばらく頭を悩ませました。
というのも、Pythonは内部での文字列処理を基本unicodeで処理するのですが、外部(コンソールなど)に出力しようとすると、きちんとエンコードを指定してやらないとunicodeのまま出力するため16進数をそのまま出力したりasciiをそのまま出力したりしちゃうんですよねぇ。それは困るぞ、と。
でまぁそれはencode()メソッドを呼び出し、引数にシステムの文字コードを与えてやることで解決できることが分かりました。
それで万事解決、と行けば良かったのですが、そうは問屋が卸さない。文字列処理としてはそれでよいらしいのですが、なぜかパスとしてそれを与えてもきちんと認識してくれない模様。これがSuperKarambaの仕様なのかどうなのか、そこが分からないんですよねぇ・・・。
エンコードしないまま文字列を引き渡すと処理できないと文句垂れられるし、エンコードして引き渡すと"そんなパスねぇよ!"とでも言わんばかりのnull pointer。ちょいと今の段階ではお手上げに近いなぁ。
パスに日本語が使われていると正しく処理できないというのはどうしても腑に落ちないんだよなぁ。Python自体はunicodeで処理するからパスは正しく扱えるはず。ってことはSuperKarambaがunicodeのパスを受け取ってそれをどう処理しているかだけど・・・、それは正直分からないんだよなぁ。ソースコードを追いかけるしかないのか・・・? SuperKarambaに燗する日本語の情報が少ないからなぁ。未だに"SuperKaramba"でぐぐると私のBlog記事が上位に表示されるってそれどーよ?(ただし、iGoogleだから補正は掛かってると思う)
う〜ん、これが解決できないと悔しいなぁ。画像スライドショーウィジェット作ったけど、日本語を含んだパスは使えません、では利便性悪すぎ。どうにかこうにか解決しないと。
PythonでKarambaスクリプトを無理に作らなくても表示自体は可能だけど、画像の拡縮とかそのあたりの制御はKarambaモジュールが最初から用意してくれてるからそれを利用するのがスマートだと思うんよなぁ。
KarambaでのPythonスクリプトの扱い方は大体分かって来たから、後は日本語を含んだパスの問題だけだ。これはPythonよりもKaramba側に要因がありそうだから、今はそれはほっといて細かい部分を詰めて行ってみよう。きっと解決策はあるでしょ。Karambaもファイルシステム自体はQtのライブラリ呼んでるだけだし、そのライブラリはもちろん日本語パスを扱えるのだし。
さて、今日はもう寝て、明日また頑張ろう。
私のLinux環境は不安定やからなぁ・・・。安定させるには再インストールが一番手っ取り早いが・・・、どうせならFedora8まで頑張ってみたいところ。Fedora8までいくと、なんとRH8からカウントしてOSアップグレード10代目。節目までは突っ走ってみたいわ(笑)
そこまで行ったら64bitに入れ替えたいわね。けどものぐさな私のことだから、どうせならFedora10まで行こうかとか考えちゃうのかしら?w