Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

Python

pythonistaのためのphp用の開発サーバ

phpで開発する時の開発用サーバとかよくわからなかった。 未だにapacheとか云々するのもなんだかなあと思うんだけど。 まあpythonistaならwphp使うよねって話。wphp http://pythonpaste.org/wphp/こいつはwsgiのインターフェイスでphpをfastcgiで動かしてく…

きっかけの話

pythonからdjangoにたどり着くか djangoやりたいからpythonにたどり着くか この違いは意外に大きいのかも知れない。成長するという意味で。 僕は前者だったけどもー。

ライブラリの話

http://d.hatena.ne.jp/tokuhirom/20090219/1235034086 を見て。pythonの場合ってどうするか? 最近ならばpipでbundleつくりゃあいいんじゃね?で終わりかと。 ちょうどいいエントリがあったので紹介。 http://d.hatena.ne.jp/pyxis-dev/20090219/1235012848

Jinja2かMakoか

こんにちわ、Pの付く言語なのに全く相手にされていない言語:Pythonを使ってるmopemopeです。 完全に私事ですが、普段やっつけ仕事(コード生成とか)で使ってるのはCheetahだったりするんだけど乗り換えようとちょい調べました。 最近ならば「Jinja2使え!ボ…

Django勉強会について

ネタが尽きてる感があるのでもうPython勉強会にしませんか?

タプルのリストとGC

Issue 4074: Building a list of tuples has non-linear performance - Python tracker こんな問題があったのかー。 2.7、3.1では修正されてます。

Python力を高めるためのライブラリコードリーディング

id:yuroyoroがpython力を高めるとか言ってたのを聞いて、自分の場合どうだったかなあと。 思い入れがあるものを簡単に。まあ参考になれば。 pure python系 まずはpure python系 django 結構python初心者のころからdjangoのソースは読んでた。 多分、今ほど大…

Filename Filter

ただ単にfnmatchを使いたかっただけ。 import fnmatch import os import os.path ignore_files = ['*/.svn/*', '*/CVS/*', '*.pyc'] for root, dirs , files in os.walk('.'): for file in files: path = os.path.join(root, file) ignore = reduce(lambda x…

なんとなく

http://d.hatena.ne.jp/yappo/20090204/1233731596 をみて。 参考になれば Eventlet - Second Life Wiki Google Code Archive - Long-term storage for Google Code Project Hosting. http://opensource.hyves.org/concurrence/

Pluginシステムの実装

ちょっとPlugin的なものを実装しようとしてたら行き着いた。 http://lucumr.pocoo.org/2006/7/3/python-plugin-system importする仕組みはよくあるのでわかるんだけど。 読み込んだモジュールからPluginクラスを抽出するスマートな方法が書いてあったので紹…

ファイルの監視

http://d.hatena.ne.jp/jYoshiori/20090121/1232526865 autotestか!っていうコードだけど。 Linuxならpyinotifyを使えばいいんじゃないかな。 from pyinotify import WatchManager, Notifier, IN_MODIFY, ProcessEvent wm = WatchManager() mask = IN_MODIF…

PythonでOracleに接続する

そーいえば真面目にやったことなかったのでメモ。 Oracle clientのダウンロード とりあえずpure pythonでは動かないのでOracleのサイト からclientをダウンロードする必要がある。 http://www.oracle.com/technology/software/tech/oci/instantclient/index.…

werkzeug

何かと最近話題のwerkzeugですが、こいつが一体なんなのか 書いてみる。 werkzeug ドイツ語で工具を意味する。pythonistaがwebアプリケーション 開発を書くための工具であるようなライブラリ。 (あくまで工具である) 具体的にはWSGI Utilityで、粒度の小さ…

入れてるモジュール

最近Ubuntuをセットアップしたので入れたモジュールを挙げてみる。 In /opt/python26/lib/python2.6/site-packages: Zipped packages: PyAMF-0.3.1-py2.6.egg Tempita-0.2-py2.6.egg WebOb-0.9.4-py2.6.egg WebTest-1.1-py2.6.egg pyOpenSSL-0.7-py2.6-linux…

実装モジュールを切り替えるモジュール

昨日のコードをモジュール化するtry except ImportErrorとか多い書く人にはいいかも知れないな modinstaller.py from abc import ABCMeta, abstractmethod import sys def install(imports, *args, **kwargs): global _mod_name, _imports local = sys._getf…

実装モジュールを切り替える

pythonの定番パターンだと思うんだけどあんまり書いてなさげなので書いておく。 twisted厨にはおなじみのコードなのでtwisted厨はよまなくて良し!! 実装を抽象化しておき、モジュール切り替え + シングルトン化で使用する側は実装 を意識しないでよくする…

Python3000のパフォーマンス

The net result of the 3.0 generalizations is that Python 3.0 runs the pystone benchmark around 10% slower than Python 2.5. Most likely the biggest cause is the removal of special-casing for small integers. 以前は33%ぐらい遅かったはずなので…

Python3000のリスト内包表記

Python 3.1a0 (py3k:67517, Dec 4 2008, 22:33:17) [GCC 4.0.1 (Apple Inc. build 5484)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> l = [n for n in range(5)] >>> l [0, 1, 2, 3, 4] >>> l.__class__ >>> s …

selfの話

メソッドのself (2)について少し書いてみる。pythonの不満点でよく上がる定番の話は self地獄 インデント地獄 GIL外せよ! なんだけどそのうちのひとつであるselfの話。 まあ死ぬほど聞く話ではあるけど。多分和訳より原文の方を読むと掴めるんじゃないかな…

namedtupleの話

python2.6から導入されたnamedtupleについてちょっくら書いておくか。 namedtupleって? namedtupleは名前の通り名前付きでアクセスできるtupleを返す。 >>> from collections import namedtuple >>> p = namedtuple('Point', 'x y') >>> p1 = p(11, 22) >>>…

stackless pythonのお話

比較 stackless python 処理系自身に手を入れている(srcのStackless/、Python/以下) 処理の評価(eval)毎にcstack objectを生成し、状態を保存する いわゆるスケジューラー(ラウンドロビン)がデフォルトで組み込まれている bytecode的には通常のCPytonと…

Macでstackless pythonをビルドする

enable-stacklessfewerregistersを有効にする。 frameworkは別にいらんですよ。 CPPFLAGS=-I/opt/local/include LDFLAGS=-L/opt/local/lib ./configure --prefix=/opt/xxx--enable-stacklessfewerregisters && make && sudo make install

python2.6用にkqreactorを書き直す

2.6からはwrapperいらないので書き直す。 """ A kqueue()/kevent() based implementation of the Twisted main loop. To install the event loop (and you should do this before any connections, listeners or connectors are added):: | from twisted.int…

pyeventでecho

ノンブロッキングのサンプル import event import socket import errno import signal def _read(sock): try: return sock.recv(1024) except socket.error, e: if e[0] == errno.EWOULDBLOCK: return None raise def start_client(sock): res = _read(sock)…

Pythonの言語仕様

[Python][書籍] インタプリタ で言語仕様ってねえんじゃねーの?みたいな話が出てる。 基本リファレンスが言語仕様という認識なんだけど。 日本語訳が曖昧でわかりにくいところもあるよねっていうだけで「言語仕様がない」という話ではないと思うのだが。あ…

pyeventでecho

使い方わかんないとか言う人向けサンプル (書きなぐりです) import event import socket def read(sock): msg = sock.recv(1024) sock.send(msg) event.read(sock.fileno(), read, sock).add() def accept(sock): conn, addr = sock.accept() event.read(c…

Pythonクイズ

>>> import [1] >>> class A(object):pass ... >>> def test(self): ... print "test" ... >>> a = A() >>> a.test = [2] >>> a.test > >>> a.test() test >>> b = A() >>> b.test() Traceback (most recent call last): File "", line 1, in AttributeError…

Pythonクイズの答え

http://d.hatena.ne.jp/mopemope/20081017/p1 >>> import types >>> class A(object):pass ... >>> def test(self): ... print "test" ... >>> a = A() >>> a.test = types.MethodType(test, a, a.__class__) >>> a.test > >>> a.test() test >>> b = A() >>…

Pythonクイズ

>>> 3.0/2 1.5 >>> 3.0??2 1.0 となるような ?? にあてはまる二文字を答えよ

局所的にクラスを拡張する

withを使ってなにか出来ないかずっと考えてたんだけどありきたりなアイディアしか浮かばなかった。 でもあまりwithをどうこうっていうのを書いてる人もいなかったので書いておく。 with句のブロック間のみクラスを拡張する。 from contextlib import context…