タグ

ブックマーク / odz.hatenablog.com (8)

  • pythonにおける closure と自由変数 - odz buffer

    ref:http://nyaos.org/d/?p=%282008.08.01%29#p1 ほほう、上位の関数(maker)のローカル変数は、 下位の関数(func)から見るとグローバルに見えるのかと思ったが、 ローカル変数はどこまでいってもローカルなんじゃな。 ちょっと違う。func_code を見るとか dis モジュールを使うともう少し詳細が見える。 import dis g = 0 def a(): x = 0 def inner(): return x * 2 return inner def b(): def inner(): x = 10 return x * 2 return inner def c(): def inner(): global g return g * 2 return inner def inspect(func): sep = '-' * 60 pri

    pythonにおける closure と自由変数 - odz buffer
    Wacky
    Wacky 2008/08/04
  • Bigtable - odz buffer

    Google の工藤さん*1が大学に来て講演するというので聞いてきた。 Bigtable の話で結構面白かったのだが、まぁ、なんかさすが大規模分散システムというか、書き込み性能 700MB/sec、読み込み性能 18GB/sec は無いわと思ったよ。 *1:MeCab とか CaboCha とかいろいろ作っている人でもある

    Bigtable - odz buffer
    Wacky
    Wacky 2008/01/26
    Bigtable の話で結構面白かったのだが、まぁ、なんかさすが大規模分散システムというか、書き込み性能 700MB/sec、読み込み性能 18GB/sec は無いわと思ったよ。
  • Python のエンコーディング - odz buffer

    % cat /usr/lib/python2.5/site-packages/sitecustomize.py import sys sys.setdefaultencoding('UTF-8') % cat enc.py import sys print >>sys.stderr, 'sys.stdout.encoding: %s' % sys.stdout.encoding print >>sys.stderr, 'sys.getdefaultencoding(): %s' % sys.getdefaultencoding() print unichr(0x3042) % python enc.py sys.stdout.encoding: UTF-8 sys.getdefaultencoding(): UTF-8 あ % python enc.py | cat sys.stdout.

    Python のエンコーディング - odz buffer
    Wacky
    Wacky 2008/01/07
  • Python 2.4.3 では FD_SETSIZE 以上のファイルディスクリプタを扱えない - odz buffer

    Mac でやってて嵌ったのでメモ。 Python 2.4.3 の Modules/socketmodule.c を見ると、send/recv/accept なんかにこんなコードがある。 if (!IS_SELECTABLE(s)) return select_error(); select_error はエラー文字列を設定するだけのコード。 で、IS_SELECTABLE がこんな感じ。 /* Can we call select() with this socket without a buffer overrun? */ #ifdef Py_SOCKET_FD_CAN_BE_GE_FD_SETSIZE /* Platform can select file descriptors beyond FD_SETSIZE */ #define IS_SELECTABLE(s) 1 #else

    Python 2.4.3 では FD_SETSIZE 以上のファイルディスクリプタを扱えない - odz buffer
    Wacky
    Wacky 2007/07/10
    Blocking I/O で 1,000 個以上のコネクションを同時に扱うなんてことは普通はやらないから特に問題にはならないだろうけど。2.4.4/2.5 では直っているし。
  • シェルスクリプトの書き方 - odz buffer

    ref:関数プログラミング的なシェルスクリプト via:Ryoの開発日記 - シェルスクリプトよくわかんね どこからつっこめばいいのやら。 コマンド置換とパス展開 ディレクトリ以下のファイルがほしいなら `ls ${2}` ではなく素直に "$2"/* でいいのでは。 クォート どのような入力がくるかわからないときはちゃんと引用符で囲みましょう。 if [ -f $FULL ]; then $1 $FULL; fi ではなく、きちんと if [ -f "$FULL" ]; then "$1" "$FULL"; fi とする。 リダイレクト #! /bin/bash cat $1 | tr -d '\r' > $1 これがうまく動いているのはたまたま。理由は以前書いたので、そちらを参照。 というかね、こういうことはいちいちシェルスクリプトをつくるんではなくて、find と xargs を使う

    シェルスクリプトの書き方 - odz buffer
    Wacky
    Wacky 2007/07/09
  • shell のちょっとしたテクニック - odz buffer

    後輩が cat README | tr ' ' '\n' | sort | uniq -c | sort -nr | head てなテクニックを見て、びっくりしたみたいな話をしていたのだが、こういうパイプラインを利用するテクニックを学んでいないのは色々損な気がする。 ていうか、サーバで丸一日以上かかるような処理を実行するのもしょっちゅうなのに、GNU screen も nohup も知らないってのはいろいろ支障があるような気もするのだが、だれも教えないものかなぁ。 ということで、bash or zsh のちょっとしたテクニックとか*1。リダイレクトとかパイプラインは略。 連続実行 単純に連続実行。 % foo; barfoo が正常終了したときだけ bar を実行 % foo && barfoo が正常終了しなかったときだけ bar を実行 % foo || bar&&、||は来は論理演

    shell のちょっとしたテクニック - odz buffer
    Wacky
    Wacky 2007/01/31
  • XML-RPC で簡易分散環境を構築する - odz buffer

    大量のファイルを処理するタスクがあるので、めちゃ適当な分散システムを構築してみた。当は SGE (Sun N1 Grid Engine) を使えばいいんだろうけど、使い方が悪いのかえらく遅くなったので。 で、普通はスケジューラデーモンが各マシンにタスクを割り振るんだろうけど、面倒なのでマスタサーバにキューを入れて、各マシンから polling するように。 サーバは PythonSimpleXMLRPCServer でさくっと。 #!/usr/bin/env python import sys import SimpleXMLRPCServer import optparse import Queue import socket _DEFAULT_HOST = socket.gethostname() _DEFAULT_PORT = 10010 parser = optparse.

    XML-RPC で簡易分散環境を構築する - odz buffer
    Wacky
    Wacky 2006/11/16
  • ネットワークの接続状況をシステムトレイに表示する - odz buffer

    最近、システムトレイのワイヤレスネットワーク接続のアイコンが全然信用できなかったりするので、ネットワークの接続状況をシステムトレイに表示するスクリプトをでっち上げてみた。要 Python + wxPython + dnspython。 見ればわかるとおり、DNSのレスポンスを heart beat 代わりに使って 10 秒ごとに接続状況をチェックしてアイコンの色を変化させるだけ。 まぁ、こんなスクリプト公開しても需要なんてなさそうだけどな。 参考 ASPN : Python Cookbook : Dynamic system tray icon (wxPython) import wx import dns.resolver import sys ID_ICON_TIMER = wx.NewId() INTERVAL = 10000 # in msec DNS_TIMEOUT = 5 #

    ネットワークの接続状況をシステムトレイに表示する - odz buffer
    Wacky
    Wacky 2006/09/02
    ネットワークの接続状況をシステムトレイに表示するスクリプトをでっち上げてみた。要 Python + wxPython + dnspython。
  • 1