コンテンツにスキップするには Enter キーを押してください

月別: 2011年2月

UbuntuでiBusが立ち上がらなくなったので試行錯誤して直してみた

Google日本語入力って快適ですよね。
公式にはWindows版しかありませんが、それのオープンソース版がmozc(もずく)という名前で公開されているので、Linuxでもあの快適な日本語入力環境を享受することができます。
とはいえ、ほとんどの人は一生入力しないような固有名詞まで入ったあの変態辞書は含まれてないのですが、「きょう」や「いま」なんかはちゃんと使えます。

mozcはあくまでも読みを漢字に変換する部分を担当するソフトなのでキーボードから文字の入力を受け付ける別のソフトと組み合わせて使うことになります。これには例えばiBus、SCIM、uimといったものがあります。

で、いろんな勉強会やらイベントやらに連れていっている、僕のちっちゃくてかわいいUbuntuネットブックにもmozcを入れて使っているのですが、今回はその相棒のiBusが立ち上がらなくなってしまったというお話。


コメントする

ツイートを勝手にコラージュして遊ぶサービス「Twicolla(ついこら)」をリリースしました

ブログでの告知が遅くなってしまったのですが、先日、Twicolla(ついこら)というサービスをリリースしました。

一言で説明すると、Togetterのパクりみたいなサービスですw


コメントする

Googleマップ・Bingマップの勉強会とハッカソンに参加します

明日12日と来週19日に京都丹波口の京都リサーチパークで開催されるGoogle and Bing Maps Hackathon in Japanに参加してきます。

Google Maps APIはこれまで仕事も含めて何度も利用してきたのですが、Bing Mapsのほうは全然知らないので楽しみです。

参加されるみなさま、会場で会いましたら優しくしてくださいね…。

12日は都合で早めに帰らないといけないのですが、19日は特に予定もないので終電まで(あるいはそれ以降も?)いますよ!!


コメントする

AppEngineのhashlibで日本語を含む文字列のハッシュ値を取得しようとするとエラーになる件

ファイルやテキストの改竄を検知するためにMD5やSHA256などのハッシュ関数を利用してハッシュ値を求めるということはよくあると思うんですが。
Google App Engine / Pythonでこれをやろうとして変なエラーに遭遇してしまい、パニクったので備忘録として書いておきます。

ものすごく要約するとこんなコードを書いていました。

import hashlib

text = u'ほげほげ'
hash = hashlib.sha256(text).hexdigest()

実際はtextには外部から取得した、これよりもっとながーーい文字列が入っていて、その文字列のハッシュ値を求める、というものでした。

localhostのSDKではこれでちゃんと動いてたんですよ。

ところがプロダクション環境にデプロイしてみると、動かない。

ログを見ると、
UnicodeEncodeError: 'ascii' codec can't encode characters in position 18-40: ordinal not in range(128)
と出ていたので、どうやらASCII範囲外の文字をASCII文字列にエンコードしようとしてエラーになっている、ということはわかりました。

が、原因はわかったものの解決法がわからない。

エラーメッセージでググってみると、どうやら外人さんも同じ問題で悩んでいたらしいということがわかり、そこに解決法が載っていました。

というわけで修正したコードがこちらです。

import hashlib

text = u'ほげほげ'
hash = hashlib.sha256(text.encode('utf-8')).hexdigest()

はい、textを明示的に「utf-8」と指定してencodeしてやりました。

これがPythonのややこしいところなんですが、「Unicode型文字列」と「(UTF-8エンコードされた)str型文字列」は全くの別物なんですよね…。

とにもかくにも、これでプロダクション環境でもちゃんとハッシュ値を取得することができるようになりました。


コメントする