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

[Python] custom urllib2 opener

from urllib2 import * class MyHttpHandler(HTTPErrorProcessor): #parent = OpenerDirector() handler_order = 1 def http_request(self, request): return request https_request = http_request def default_open(self, request): """return None for pr…

[HTML] [JavaScript] [CSS] ポップアップメニュー

CSSだけじゃ無理。html とか ajax とか js とかのサンプル載せてるサイトはどうしてサンプルに余計な装飾付けんだろうか。分かりにくいだけだのに。 <html xmlns="http://www.w3.org/1999/xhtml"> <head> <style type="text/css"> #popup1 { display: none;…</head></html>

メモ

multiprocessing.Pool() *1 を使って、「JPEG ファイルのサムネイル生成」というタスクを適当に書いたら 4 コアで 2.1 倍くらいの速さになった。2 コアだと 1.7 倍… 多分 IPC かディスク IO がボトルネック。 適当に書いて 2 倍も速いと取るか、4 コアもある…

pickling a PIL's Image object

未だに classic class なライブラリは多い。Python 3 への道は遠い… # register a pickle handler for Image.Image object import Image, copy_reg def Image_unpickler(mode, size, data): return Image.fromstring(mode, size, data).im def Image_pickler…

Google Apps with VALUE DOMAIN

DNS の設定よく分からんというか UNIX 系の設定はやった端から忘れてく。 cname じゃなくて a で指定する。dns をきちんと実装してないのメールサーバーがあるんじゃないの。 小文字で書く。そもそも Google の例が大文字なのがよく分からん。 SPF の設定は…

Tix Grid サンプル

KeyPress ハンドラ設定してもセルに入力したらハンドラ設定が消される。もうやだこの tk。 import Tix as tk r= tk.Tk() r.title("test") g = tk.Grid(r, name="a_grid", selectunit="cell", editnotify=lambda x, y: True) g.pack(fill=tk.BOTH) for x in x…

Tkinter の Pythonic なサンプル

tk はよく分からん。凝ったことはしない方がいいみたい。 from Tkinter import * class Application(Frame): def __init__(self, master=None, cnf={}, **kw): Frame.__init__(self, master, cnf, **kw) self.pack() def pack(self, cnf={}, **kw): Frame.pa…

sudo 的 runas

なんだよこれ便利じゃん savecred。 パスワード聞かれるの最初だけだし保存はユーザー毎だし。 root の名前固定だけどどうでもいいよね。 Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\exefile\shell\sudo] [HKEY_CLASSES_ROOT\exefile\shell\s…

[Python Imaging Library] ImageDib.py

"""Helper functions for Image object.""" from ctypes import * from ctypes.wintypes import * gdi = windll.gdi32 def todib(image): """Image.tostring('raw', rawmode, stride=0, ystep=1) "rawmode" is a pixel format. (ex. RGB, GBR...) "stride" i…

[Python Imaging Library] convert Image object to HBITMAP.

上を踏まえて HBITMAP に変換。 色々決め打ちだけど GDI なんてレガシーはこれでいいんだ。 ああメンドクサイ。 import ImageDib ImageDib.tohbitmap(image) ImageWin? 動かんかった…

[Python Imaging Library] convert Image object to DIB.

CreateDIBSection() で作った DIB にコピーできるようなバイト列に変換。 tostring() のまともな __doc__ は [Image-SIG] Re: Explaination of encoder in tostring(encoder_name='raw', *args) くらいしかない。後はソース見ないと分からん。一発で変換でき…

Windows x64

setupapi 使ってたら x64 版 Windows で ERROR_IN_WOW64 (0xe0000235) と言われた。Windows の仕様で 32 bit / 64 bit 間では両方向でコードの呼び出しはできない。それはいい。ホントは良くないけどイケてない Windows プログラミングの歴史に一項目加わっ…

[Python] dynamic type を pickle

def save_type(self, obj, name=None): """add support for pickling a dynamic type >>> class A(object): pass >>> class B(object): pass >>> t = type('DynamicType', (A, B, ), {'a': 1, 'b': 2, }) >>> t2 = loads(dumps(t)) >>> t.__name__ == t2.__n…

[Firebird] SQL References

Firebird の SQL リファレンスは調べにくい。 InterBase 6.0 SQL Reference に Firebird Reference Material の Language Reference Update を重ねて読んでいくことになる。

[Firebird] 文字列を分割する的な何か、str_split とか str.split みたいな

可変引数的な使い方をしたくて作った。 SQL は単体で動かす分にはいいけど(それだけで使い物になるわけ無いが)、プログラミング言語から叩くと途端に泥臭くなるから困る。 長さ? 可変長文字列型くらい用意しとけよ今時… SET TERM !! ; CREATE PROCEDURE str_…

[Python] [setuptools] easy_install で任意のディレクトリにモジュールを突っ込む

easy_install で site-packages じゃないところにインストールしたい。 cd <任意のディレクトリ> python -m easy_install -a -d . -S . -s <bin> setuptoolsとかまず cwd を任意のディレクトリにしておくことで sys.path に入るようにする。 そんで -a でコピー指</bin>…

[Python] setuptools が上手く動かないことがある件

setuptools はきたねえコードだなあ x64 とか対応してんのか? --- package_index.py.orig Wed Sep 24 12:10:36 2008 +++ package_index.py Tue Jul 07 10:13:17 2009 @@ -27,17 +27,24 @@ def parse_bdist_wininst(name): """Return (base,pyversion) or (No…

[Python] setuptools を使ってモジュールの配布ファイルをダウンロードする

setuptools はひでえコードだった #import distutils.log; distutils.log.set_verbosity(2) from setuptools.package_index import PackageIndex class PackageIndex(PackageIndex): def can_add(self, dist): """deny local installed packages""" if os.pa…

組み込み版 Python 2.6.* を Portable 化する

結論 できる。でもややこしくなるだけなので、素直に msvcrt9 をインストールした方がいい。 ああめんどくさい。 条件 Windows XP Python 2.6.2 やり方 Python26.dll にリンクした実行ファイルの .manifest を書く hoge.exe.manifest として hoge.exe と同じ…

文字コード自動判別の個人的なメモ

流れはこんな感じだった。 BOM チェックで Unicode を判別 chardet などでエンコーディングを推定 UTF/MBCS ならデコード試行 ユーザーロケールのエンコーディングでデコード試行 chardet などでエンコーディングを推定 非 UTF/MBCS ならデコード試行 結果が…

[Python] [multiprocessing] 自分が fork したプロセスか確認する

このくらいしかできない悪寒。site.py (sitecustomize.py) では sys.argv がないので判別できない。 import multiprocessing assert multiprocessing.current_process().name != 'MainProcess'

kinterbasdb.connect でポート指定

kinterbasdb.connect(host='host or ip/3051', database=r'C:\some\database.db', user='SYSDBA', password='masterkey') どこに書いてあんだよコレ どこにも書いてねーぞ

Firefox が重い重い重すぎる

今すぐに Firebug を disable にしろ

InnoSetup のノウハウ

まあヘルプ読めば大体載ってることですが。 #define ディレクティブを使う ISTool をインストールする。 QuickStart Pack を使って InnoSetup と一緒にインストールしてしまうと楽。 #define VERSION "1.0" AppVersion={#VERSION} Name: "{#VERSION}" {} の…

[Python] win32com.client.Dispatch() でもってこれないオブジェクトを呼ぶ

おもむろに comtypes を取り出す from comtypes.client import CreateObject CLSID を調べる from comtypes import * CLSID_Sti = GUID('{B323F8E0-2E68-11D0-90EA-00AA0060F86C}') Interface を作成する *.idl がある midl で *.tlb に変換する *.tlb があ…

[Python] os.getppid on Windows

2009-06-10 親プロセスが死んでる場合に対応 from ctypes import * from ctypes.wintypes import * import win32process class PROCESSENTRY32(Structure): _fields_ = ( ('dwSize', DWORD, ), ('cntUsage', DWORD, ), ('th32ProcessID', DWORD, ), ('th32De…

[Python] 単純に危険なだけの手法

#hack.py import __builtin__ __builtin__._open = open __builtin__.open = '__builtin__' としておいて、 >>> open <built-in function open> >>> import hack >>> open '__builtin__' >>> eval('open', {'open': 'globals'}, {'open': 'locals'}) 'locals' >>> eval('open', {'ope</built-in>…

Python のアプリケーションへの埋め込みについて

セットアップ用のパッケージ python-X.X.X.msi を使わないで使う際の注意。結構面倒くさい。 Python 2.6 SxS の関係上、Microsoft Visual C++ 2008 Redistributable Package をインストールする必要がある。 必要なバイナリは python26.dll のみ。 sys.path …

[Python] [C] override stdout&stderr output from C

#include <Python.h> typedef struct { PyObject_HEAD /* Type-specific fields go here. */ } MyStdout; static PyObject *MyStdout_write(MyStdout* self, PyObject *args) { char *data = PyString_AsString(args); if (data){ printf("%s", data); } Py_RETURN_NON</python.h>…