2011-01-01から1年間の記事一覧

bzr-git で快適 github 生活

bzr

Bazaar のホスティングサイトとして、 Launchpad があります。これはプロジェクトをまたぐ Issue Tracker やオンラインの翻訳システムが含まれており、 Ubuntu の開発に大活躍しています。 しかし、 Launchpad は github や BitBucket とは異なり、ユーザー…

本当は怖い軽量チェックアウトの話

bzr

前回は、作業ツリー上でコミットすると、別の場所にあるブランチに新しいリビジョンが追加されるチェックアウトについて説明しました。 今回はチェックアウトの別の仕組みである軽量チェックアウト (lightweight checkout) について説明します。 軽量チェッ…

[bzr] チェックアウトとブランチの使い分け

bzr が git や hg と大きく異なるのは、メインラインの概念とチェックアウト機能だと思います。 メインラインについては昨日の Advent Calnedar で wonderful_panda さんが解説してくれました。(ブランチのメインラインのイメージについてしゃらくさい話をす…

Python の GC のデバッグ機能

Python のデーモン型のプログラム(具体的に言うと Loggerhead という bzr のリポジトリブラウザ)が大量(具体的に言うと100MB以上)メモリを食っていたので、それを調べた時のメモ。まず、本当にそれだけのメモリを利用しているのかどうかを meliae という…

Python3 Advent Calender 3日目 - New GIL を理解する

2011 Pythonアドベントカレンダー(Python3) - connpass の3日目を担当します。Python 3 がリリースされてから、 Python の進化は主に Python 3 で行われ、そこから Python 2 にバックポートできるものがバックポートされています(例: GCのチューニング、辞…

bdist_dumb --relative を使って絶対パスを固定せずにインストールできるバイナリ配布物を作る

Python のバイナリパッケージは、Linux 環境ではあまり使われない。 ソースからインストールする文化があるのと、Unicode の内部表現を選択する configure オプションなどによってバイナリ互換性が失われるケースがあるからだ。でも、同じLinuxディストリビ…

Python の GIL 排除のために Software Transactional Memory が注目されている理由

あるいは、Pythonは参照カウント方式だからGILを排除できないという誤解に対する回答。参照カウントってアトミックなインクリメント・デクリメントさえあればセマフォとか使わないでも並列化できるんで、パフォーマンスが滅茶苦茶落ちるということはない。参…

Google Developer Day 2011 の DevQuiz に Python で挑戦した (スライドパズル)

一部の問題は解くのに利用したパラメータがハードコードされている値と違うことがありますが、一応5000問全部解きました。全体: https://github.com/methane/gdd11/tree/master/slideCythonコード: https://github.com/methane/gdd11/blob/master/slide/_sli…

Google Developer Day 2011 の DevQuiz に Python で挑戦した (一人ゲーム)

https://github.com/methane/gdd11/blob/master/hitori/hitori.py問題読んだあとシャワー浴びながら考えて、深さ優先探索で事足りることを確信して一気に書いた。

Google Developer Day 2011 の DevQuiz に Python で挑戦した (webgame)

https://github.com/methane/gdd11/tree/master/webgame普通は Chrome エクステンションとか FireBug のコンソールとかで挑戦すると思うんだけど、HTMLのソースを見た方が早いので、スクレイピングで解いた。

watchdog と paramiko を使って、ローカルで編集したファイルを瞬時にサーバーにアップロードする

ローカルのファイルシステムの監視。WindowsではGetDirectoryChangesW(だったっけ?)とかいうAPIがあって、Linuxにはinotifyがあるし、Macにもなにか手段があるはずなんだけど、 http://packages.python.org/watchdog/installation.html watchdog というラ…

スレッドを使うプログラムが Ctrl-C で止まらない件

常識かと思ってたけど、、、 while True: thread.join(0.5) join() メソッドを呼ぶときに、タイムアウトを設定して、ループする。こうすると、KeyboardInterruptを受け取れる。

シグナルを使って statistical profiler をつくろう

Pythonの標準ライブラリにはプロファイラがあるが、これは deterministic profiler という種類のプロファイラだ。関数が呼び出されたときと関数から抜けるときに登録したコールバック関数を呼び出す仕組みが用意されており、そのコールバック関数で時間を測…

gevent で proxy server を作る

Flash製アプリの試験用のアクセスパターンを作りたくて gevent を使って簡単なproxy serverを作った。localhostの8000版で立ち上がるので、FoxyProxy などで、特定のドメインに対する proxy として登録してやると、リクエストを再現するのに必要なデータをms…

バッチがわりに Python を使うときは、 os.system よりも subprocess.call を使おう

次の2つのスクリプトは同じに見える。 #!/usr/bin/env python import os for i in xrange(100): cmd = "tail -f /var/log/syslog | cat " os.system(cmd) #!/usr/bin/env python import subprocess for i in xrange(100): cmd = "tail -f /var/log/syslog | …

xubuntu 11.04 Natty で、 trackpoint の設定と、 Caps Lock を Ctrl にする設定

スタンバイ復帰時にマウスカーソルしか表示されない現象に出くわし、Intelグラフィックでcompizは怖いのでcompiz回避するついでにxubuntuを試してみている。gnome だとGUIで設定できる2項目が、 xubuntu では設定できなかったので、その設定の仕方をまとめて…

Ubuntu 11.04 Natty で PIL をビルドする方法

原則として、PILはeasy_installやpipで問題が起こりやすいので、手動で python setup.py install を行う。*1Ubuntu Natty では、 libjpeg や libpng をはじめ、多くのライブラリファイルが /usr/lib ではなくて /usr/lib/x86_64-linux-gnu *2に置かれている…

Python でファイルを直接イテレータとして使うのが適切でない場合

Pythonでサブプロセスと対話する - 西尾泰和のはてなダイアリーPython のファイルは、通常のファイルの読み込みの効率を考えて大きめ(8192バイト)のバッファリングを行っているので、ソケット通信やパイプで問題になるケースがある。問題になるケースの一つ…

優れた Python プログラマを見つける n の質問(改)(書きかけ)

+ "", "0", [], [0], [1], 0, 1 のうち、 bool(obj) が True になるのはどれか? + True, False, None との比較に == ではなく is を使うことが推奨されるのはなぜか? + s = 'foo'; t = 'foo'; print s is t; の結果が未定義なのはなぜか? + [[0] for i in…

[python] 優れた Python プログラマを見分ける10+1の質問

お詫びと追記 この記事は 「優れたPerlプログラマを見分ける27の質問」の日本語訳 - Islands in the byte stream を見て書いたものですが、僕が Perl について無知なのとタイトルに釣られたために、で元の問題の意図を汲み取れていませんでした。その言語に…

textwrap は覚えとこう

文字列を適当な長さで区切って diff を表示する - forest book のお題だけど、読み逃してる条件が無ければ textwrap で充分。 import textwrap def limit_characters(line, start, width): return textwrap.wrap(line[start:], width) def test_limit_charac…

Excelでxlsファイルを開いて閉じるだけで変更させない設定

bzr

xls ファイルとバージョン管理 - methaneの日記 で言っていた以外にも方法があったのを、どう日記で紹介したBlogの著者の雪羽さんが見つけてくれた。開いただけで保存される情報は何かしらの個人情報らしく、それを保存しない設定でいったんファイルを保存す…

xls ファイルとバージョン管理

bzr

2ちゃんのbzrスレで発見した、bzrのバグらしき挙動。書き込みがずっと規制されているのでこちらで再現報告。http://feather.cocolog-nifty.com/weblog/2010/12/excelbazaartort.htmlさっそく確認しようとしたんだけど、xlsファイルを新規作成して、copyして…

Paverをインストール不要な方法で使う

ごちゃっとしたプロジェクトで、setup.pyみたいなファイルだけでそのプロジェクトのビルドや配置が完結できない場合に役に立つのが paver。でも、そのためにみんなに paver をインストールしてもらうのが気が引ける、という場合、 paver minilib というコマ…

このブログに乗せているコードは引用を除き CC0 1.0 で提供します。