それはツールの名前が読めないこと。
Werkzeug
ドイツ語らしいけどさっぱり読めない。
前に教えてもらったんだけどよく忘れるので備忘録としてここにメモっておく。
Werkzeug=ヴェルクツォイグ
1件のコメント
I'm just a drunk programmer.
それはツールの名前が読めないこと。
Werkzeug
ドイツ語らしいけどさっぱり読めない。
前に教えてもらったんだけどよく忘れるので備忘録としてここにメモっておく。
Werkzeug=ヴェルクツォイグ
明日12日と来週19日に京都丹波口の京都リサーチパークで開催されるGoogle and Bing Maps Hackathon in Japanに参加してきます。
Google Maps APIはこれまで仕事も含めて何度も利用してきたのですが、Bing Mapsのほうは全然知らないので楽しみです。
参加されるみなさま、会場で会いましたら優しくしてくださいね…。
12日は都合で早めに帰らないといけないのですが、19日は特に予定もないので終電まで(あるいはそれ以降も?)いますよ!!
ファイルやテキストの改竄を検知するために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型文字列」は全くの別物なんですよね…。
とにもかくにも、これでプロダクション環境でもちゃんとハッシュ値を取得することができるようになりました。
PHP,Flex,MySQLな日々+イラストとかさんで、動的な日本語サブドメインなサイトを作る方法というエントリが公開されています。
つい短の仕組みはだいたいこのエントリで紹介されているとおりほぼそのまんまです。
そんな難しい仕組みではないので、皆さんもぜひ日本語URLを悪用活用したサービスをつくってみてはどうでしょうか。
作成されたあかつきにはTwitterか何かで教えていただければつい短からもリンクを張らせていただきますよ!!