タグ

ブックマーク / taichino.com (8)

  • Pythonの隠された機能9つ – taichino.com

    StackOverflowでHidden features of Pythonという面白い質問がありました。原文の方では何十も項目があるのですが、独断と偏見で9個に絞って紹介します。 1. chaining comparision operator 不等式を連結出来るなんて初めて知りました。スーパーかっこいいです。今まで1 < x and x < 10とか書き続けてました。 x = 5 if 1 < x < 10: print "yay" if x < 10 < x*10 < 100: print "yaay!" if 5 == x > 4: print "yaaay!!" 他の言語でも出来んの?と思ってちょっと調べてみましたが、どうもPythonだけっぽいです。やっぱりPython最高ですね! 2013.03.05 追記 twitterで突っ込まれました。Pythonだけって言うのは嘘で

  • wgetでの一括ダウンロードが便利な件 – taichino.com

    wgetというと今までtar玉のダウンロードとdynamicDNSの更新用アクセス位にしか 使ってなかったのですが、実はかなり高機能でもっと使い道があるという事で少しだけまとめておきます。 特に優秀な機能が再帰取得で、あるページを指定した時に、そのページに含まれているリンク先も再帰的に取得できます。 # http://sports.yahoo.co.jpを再帰ダウンロード % wget -r http://sports.yahoo.co.jp これでhttp://sports.yahoo.co.jpからたどれる同一ドメイン上のすべてのファイルを取得できますが、大抵の場合、全部は必要ないので再帰回数を指定できます。オプションは-lに回数を続けます。 # 再帰回数1回を指定 % wget -r -l 1 http://sports.yahoo.co.jp またダウンロードしたいファイルの拡張子

  • PythonでElo Rating System – taichino.com

    オンラインゲームとかで良く見かけるレーティングにはElo Rating Systemというアルゴリズムがよく使われているようです。1500から始まるよく見るやつですね。(ちなみに読み方はエロではなくてイーロです) Wikipediaの説明を見ると物々しい気がしますが、実装してみると何でもない感じです。ついでにどのようにスコアが動くのか実験もしてみました。 #!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import division import random from itertools import combinations def elo(Ra, Rb, standings, K=32): """ Ra -- rate of player A Rb -- rate of player B staings --

  • BeautifulSoupでスクレイピングのまとめ – taichino.com

    何度かBeautifulSoupについては書いているのですが、未だに使い方が覚えられずにイライラします。仕方が無いのでまとめて置く事にしました。BeautifulSoupはHTMLから情報を取得するだけ無く、HTMLの編集もできますが、ここではスクレイピング用途のみに絞っています。 使用するのは以下のHTMLです。 このHTMLを使って色々と情報を取得したのが以下です。覚えるべきはfindAllだけです。注意する必要があるのは、textを指定した場合にタグオブジェクトが取れずに、テキストオブジェクトが取れるので、一旦parentで親のタグ取りましょうという事と、正規表現で条件指定する場合は、re.compileで正規表現オブジェクトを渡すという事位ですか。 #!/usr/bin/python # -*- coding: utf-8 -*- import re import urllib f

  • Pythonでいろんなバイナリファイルを覗いてみる – taichino.com

    プログラマをしていると、ちょくちょくバイナリデータから情報を読みたくなりますね。そんな時は、ブツブツ言いながらバイナリエディタと睨めっこすることになるわけですが、これが結構大変なので、何とか楽にならないかなぁと思って探していると、hachoirというナイスなpythonモジュールが見つかりました。このモジュールを使うとバイナリデータをパースして様々なデータを取得できます。かなり多くのデータフォーマットに対応している(現時点で70種類)のが素晴らしいです。 hachoirはいくつかのモジュールに分かれているのですが、大抵は以下をインストールすれば良いと思います。 $ easy_install hachoir_parser $ easy_install hachoir_metadata このモジュールにはhachoir-metadataというコマンドラインツールが含まれていて、コードを書かなく

  • as3をfdbとemacsでデバッグする – taichino.com

    さっきGAEをpdbでデバッグすると書いたんですが、それで思い出したので便乗エントリです。as3をデバッグするのにflexSDKに付属のfdbを使うかと思いますが、Emacsからどうやって使うかという話。 結論は簡単でM-x gdbを使います。gdb –annotate=1の様な表示が出るので消去してfdbを起動します。 M-x gdb /usr/local/flex/bin/fdb -f /path/to/swf ここで注意するのは以下の2点です。 デバッグを行うswfの作成時に-debug=trueオプションをつける fdbの起動時に-fオプションをつける これでas3でもいつものデバッグが出来るようになりましたね。

  • Carbon Emacsで快適にActionScriptを書きたい件 – taichino.com

    さて表題の件。printfデバッグさえできればある程度は書けますが、書いてるコード規模が大きくなって、厳しくなってきたので、環境を少し整える事にしました。 まずは結論から。以下の通り結構快適になりました。 before java-modeでasファイルを編集 ログファイルにデバッグ出力して、tail -fで確認。 after actionscript-modeでasファイルを編集 printfデバッグでキツいところはブレークポイント ctagsでタグテーブル作成してタグジャンプ rascutで自動コンパイル&ブラウザリロード log.as導入によりfirebug上でのログ確認 一つずつ見ていきます。 1. actionscript-modeでasファイルを編集 以前にactionscript-modeを入れようとして、挫折したので、java-modeで代用していました。これでも、あまり問題

  • GoogleAppEngineの開発環境でpdbとEmacsでデバッグする – taichino.com

    GAEのコードもCarbon Emacsで書いているわけですが、デバッガが使えないのがキツいと思っていたら、python標準のpdbをちょっとした変更だけで使えるという事がわかりました。従ってEmacsでもM-x pdbが出来るという事で、かなり心理的な負荷が下がりましたので、記録します。 pdbpythonについているデバッガで、普通は以下のコードをデバッグしたいコードの周辺に埋め込んで実行すると、そこがブレークポイントとなって実行が止まります。後はgdb的にステップ実行していくわけです。 import pdb; pdb.set_trace() # この行を埋め込む for i in range(10): # 例えばここをステップ実行したい do something ところが、GAEだと上記のコードを埋め込んでもデバッグできません。set_traceで実行が止まってくれないのです。そこ

  • 1