blog.fuktommy.com

うける

うける

【速報】 東所沢駅で線路に女性客が立ち入り、電柱に登って架線にぶら下がりながら逃走か : 痛いニュース(ノ`)

229 名前:スペースNo.な-74[sage] 投稿日:2010/11/20(土)... - otsune tumblr まとめサイト 画像保管庫Q

229 名前:スペースNo.な-74[sage] 投稿日:2010/11/20(土)... - otsune tumblr まとめサイト 画像保管庫Q

忍耐が習慣化した人は、世の中はみんなの忍耐によって支えられていて、誰か一人がそれをやめる事で全体が壊れ... - otsune tumblr まとめサイト 画像保管庫Q

忍耐が習慣化した人は、世の中はみんなの忍耐によって支えられていて、誰か一人がそれをやめる事で全体が壊れ... - otsune tumblr まとめサイト 画像保管庫Q

2007年だったのか。

2007年だったのか。

2007年twitter10大ニュース

Twitter / Aya_tobi: 大学にあった友達作り講座がやばい ...

Twitter / Aya_tobi: 大学にあった友達作り講座がやばい ...

Twitter / kienkai_info: 手指と身体の関連性について。 人差し指は腕(肩から手首)、中 ...

Twitter / kienkai_info: 手指と身体の関連性について。 人差し指は腕(肩から手首)、中 ...

ふーむ。僕の母校、あるいは学科とか講座ごとに違うのかもだけど、実験ノートを作るとか、それを提出する、あるいはなにかあったときの証拠にするという文化はなかったなあ。

ふーむ。僕の母校、あるいは学科とか講座ごとに違うのかもだけど、実験ノートを作るとか、それを提出する、あるいはなにかあったときの証拠にするという文化はなかったなあ。

はてなブックマーク - いま読んでます。 - 2014年5月12日

武道・武術イベント(大会・演武会・講習会など)カレンダー

武道・武術イベント(大会・演武会・講習会など)カレンダー

#タヌキ

#タヌキ

換毛期で顔が・・・(笑) - たぬき☆たんちゃん&愉快なぽん太たち

駄菓子を大人買いしてきたからアップしていく : 哲学ニュースnwk

駄菓子を大人買いしてきたからアップしていく : 哲学ニュースnwk

空手とブログと虚と実 - ハート剛毛系

空手とブログと虚と実 - ハート剛毛系

予想外の展開を見せてる。電話番号は抽象的な権利で、回線は引き直し、みたいに単純にはいかないのかなあ。

予想外の展開を見せてる。電話番号は抽象的な権利で、回線は引き直し、みたいに単純にはいかないのかなあ。

実家の回線電話が突然使えなくなった?KDDI「ソフトバンクから要請があったから解約した。工事済で復旧不能。使いたければ新規契約を」

良心的兵役拒否が道徳に基づく行動なら、戦争に行くのもその人なりの道徳に基づく行動だと思うんだけどな。道徳は一種類ではない。

良心的兵役拒否が道徳に基づく行動なら、戦争に行くのもその人なりの道徳に基づく行動だと思うんだけどな。道徳は一種類ではない。

法と道徳の区別がつかない人々 - 読む・考える・書く

消費者としては、消費者の意見などロクな影響力がないというのに、なんというか苛立っている。

消費者としては、消費者の意見などロクな影響力がないというのに、なんというか苛立っている。

消費者という概念は失敗した仮説である

最長でも勤務時間内には診終わるのかな。それとも残業してるんだろか。

最長でも勤務時間内には診終わるのかな。それとも残業してるんだろか。

大学病院の待ち時間はなぜ長いか

こういうの読んでると自分もADHDな気がしてくる。

こういうの読んでると自分もADHDな気がしてくる。

ケーススタディー「ミナミさん(会社員・30歳代女性)」 - アピタル(医療・健康)

【速報】Google「被リンクからオーサーランクに移行する」SEO業者全滅か!? | 面白ニュース!netgeek

【速報】Google「被リンクからオーサーランクに移行する」SEO業者全滅か!? | 面白ニュース!netgeek

【画像あり】今日のサザエさんで燕が飛ぶはずのシーンで黒い傘が飛んでた件 : 暇人\(^o^)/速報

【画像あり】今日のサザエさんで燕が飛ぶはずのシーンで黒い傘が飛んでた件 : 暇人\(^o^)/速報

結婚式やってよかったでしょ?と言われて夫に殺意を抱いた話 - 勿論、幸せになりたい。

結婚式やってよかったでしょ?と言われて夫に殺意を抱いた話 - 勿論、幸せになりたい。

新人以下でも生きていけるのか。将来の不安がちょっと消えた。

新人以下でも生きていけるのか。将来の不安がちょっと消えた。

使えない社員はどうなるのか

【超会議3】超乗合馬車レポート

【超会議3】超乗合馬車レポート

Twitter / soratobu_uma: ウワサの「かけ算の順序で減点」きたきた。 . ...

Twitter / soratobu_uma: ウワサの「かけ算の順序で減点」きたきた。 . ...

これだけ休暇が多いので、誰がいても、いなくても、業務が滞らないようにするためのシステムは抜かりない。ド... - otsune tumblr まとめサイト 画像保管庫Q

これだけ休暇が多いので、誰がいても、いなくても、業務が滞らないようにするためのシステムは抜かりない。ド... - otsune tumblr まとめサイト 画像保管庫Q

エロ画像バラまく方が健全なのかもしんないなあ。

エロ画像バラまく方が健全なのかもしんないなあ。

大人になれば創造性の無い人のほうが圧倒的に多いし、創造性の無い人の考え方がわからないとお金は増えないと... - otsune tumblr まとめサイト 画像保管庫Q

初めて申請したとき、「農家でなければ農地を利用出来ず、農地を利用出来る者でなければ農家ではない」・「非... - otsune tumblr まとめサイト 画像保管庫Q

初めて申請したとき、「農家でなければ農地を利用出来ず、農地を利用出来る者でなければ農家ではない」・「非... - otsune tumblr まとめサイト 画像保管庫Q

【画像】このお菓子ってなにかわかる? : 暇人\(^o^)/速報

【画像】このお菓子ってなにかわかる? : 暇人\(^o^)/速報

未だにこの感覚が残っている。たぶん親経由で。

未だにこの感覚が残っている。たぶん親経由で。

昭和55年の郵便貯金の金利:ネタ画像置き場

「艦これ」の此岸(その2)戦艦大和

「艦これ」の此岸(その2)戦艦大和

うちにも宅配ボックスほしい。

うちにも宅配ボックスほしい。

三度目の仏 - ひきこもり女子いろいろえっち

Python2のレガシーコードをPython3に対応させた話 レガシーコードって朔( https://github.com/shingetsu/saku )というP2P掲示板「新月」の実装のことなの...

Python2のレガシーコードをPython3に対応させた話

レガシーコードって朔( https://github.com/shingetsu/saku )というP2P掲示板「新月」の実装のことなのですけどね。なにしろ2005年に作り始めてて、その頃はGUIアプリのMVCの概念は知ってたけど、webアプリのMVCの概念は知らなかったので、普通にコントローラ内のprint文でHTMLの出力をしてたりとか、そういうやつです。まあPython2.7のサポートも2020年まで伸びたし、そんなに急ぐこともないというのもあるのですけど、まあやってみるかなという感じで対応しました。

Python2で -3 オプションをつけて警告を出して、警告がなくなるまで修正。ユニットテストがあれば全部警告が出せるんですけど、動かしてみて警告がなくなるまでという感じだったような。それとも構文解析した時点で警告が出るんだったかな、よく覚えてないです。ただ何回かに分けてコミットされてるので、警告が出る度に直してたんじゃないかな。
・比較関数を指定してのソート → 最初に比較基準を数値で出してソート(効率化)
・__getslice__()がなくなって__getitem__()を都度呼ぶようになったっぽい
・整数の割り算が / から // に変更
・urllib → urllib2
・dircacheモジュール廃止。dircacheはWindowsだとファイル更新しても反映されてなくてデバッグに苦労した覚えがあります。

テンプレートエンジンとしてCheetah( http://www.cheetahtemplate.org/ )を使ってたのですが、まだPython3に対応してないので、Jinja2( http://jinja.pocoo.org/ )に変更しました。なおCheetahはYelp( http://www.yelp.co.jp/ )がフォークして盛んにコミットしてるので、社内で使ってるんじゃないですかね。
・CygwinのPythonが3.2でJinja2は2.7は3.2に非対応、2.6なら対応なので注意。
・Jinja2では変数にユニコード文字列を入れる必要があって、Cheetahは普通の文字列でも動いちゃうので、適宜変換が必要です。このときはまだテンプレートにアサインするところで変換かけてました。
・CheetahのテンプレートをJinja2で表示しても、特にエラーは出なくて、普通にテンプレートがそのまま表示されるので、1つずつ直していき、少しずつ期待した表示に近づいていきます。

2to3をかけます。これで自動的にPython3対応のコードが生成されます。あとはエラーが出るところを探して修正していくだけです。ユニットテストがあれば…

http.server.CGIHTTPRequestHandler を継承して、forkしてるところをマルチスレッドに書き換えてるのですが、親クラスが変わったのでその変更点を取り込みます。こういう継承の使い方はよくないです。

ファイルを開くときに文字コードを指定して、ユニコード文字列で開くようにします。これもけっこう辛い戦いでした。
・もともとは改行コードの自動変換を防ぐためにバイナリモードで開いてたファイルが多かったのです。なのでwriteのタイミングで明示的にユニコードからビット列にしてました。
・それも微妙なので、テキストモードで開くときに、改行コードと文字コードを指定するようにしました。
・もともとテキストモードで開いてたファイルは、シェルからプログラムを起動したときは環境変数がLANG=ja_JP.UTF-8なので自動的に文字コードがUTF-8となってうまく動くのですが、サーバーを再起動するとinit経由でLANG未指定で起動するので動かなくなるという罠があります。これもエラーが出る度に直すという感じでした。

クライアントからHTTPで受け取った文字列や、サーバー間通信で取得した文字列も、同じようにユニコード文字列にする必要があります。アスキーのfooとユニコードのfooは == で比較すると別物なので、なぜか通信がうまくいかないということになってちょっと気がつくのに時間がかかりました。

MD5のハッシュを作るとか、base64の変換をするとかのところも、ユニコード文字列なのかバイト列なのかに注意が必要です。

バイト列とユニコード文字列の足し算もうっかりやっちゃいます。そこを通るとエラーになる系ですね。

バイナリを使うときはStringIOがBytesIOに変わるとか、まあ言われてみればその通りなんですけどね。iter(foo).next() → next(iter(res)) とか、これは2to3が見落としてたんですかね。

サムネイルを作るのにPILという画像処理ライブラリを使ってたのですが、Python3だと(とりあえずは?)Pollowの方がよいらしくて、ライブラリ群はaptitudeでインストールする方針だったのですが、止むを得ずpipでインストールすることにしました。

LANG=ja_JP.UTF-8とかの環境変数で、os.environへのアクセスが変わってくるという問題があって、これもけっこう辛かったですね。最終的にはos.environを普通の辞書にコピーすることで解決しましたが、見た目は辞書なのに中身は違うというのはけっこう罠です。このときは数日間公式ゲートウェイが落ちてたのですが、普段から403/404エラーがたくさん出てたので、携帯からlogwatchのメールを見ても見逃がしてたという恥ずかしい話が。

Python2のレガシーコードをPython3に対応させた

新しいページ | 昔のページ |ページの先頭へ

Copyright© 1998-2014 Fuktommy. All Rights Reserved.
webmaster@fuktommy.com (Legal Notices)