プログラム

GTK+ 2.x

drawing area の描画が GTK+ 1.x の頃に比べてすげー遅くなってる気がするんですけど…。ダブルバッファリングを切ったら少しはマシになったけどまだ遅いな。

アレ

試しに GTK_DISABLE_DEPRECATED を定義してみたら、もう親の敵の様にエラー出まくり。ゲンナリ。

アレ

GTK+ 2.x 化するついでにダイアログにメッセージカタログを使う様にしようと思ったけど面倒ー。

続々々々 XWarpPointer

GTK+ 2.4.x で動作確認できたので GTK+ 2 での例を追記。

アレ

リリース日を間違えてて間に合わなかったよ…。

続 Python で Singleton パターン

考えてみると、これだとインスタンスを生成する毎に __init__ メソッドが呼び出されるんで駄目なんじゃ…。

xmlrpclibの__getattr__

別の探し物をしている時に見つけて、何でそうなるのか判らなかったんで調べてみた。 class _Method: def __init__(self, send, name): print '_Method.__init__:', name self.__send = send self.__name = name def __getattr__(self, name): print '_Method…

Python で Singleton パターン

class Singleton(object): __instance = None def __new__(cls): if cls.__instance is None: cls.__instance = object.__new__(cls) return cls.__instance

staticmethod

Python でクラス関数を作成したい時に使用する。C++ で言う static の様なもんですな。 class A: def __staticMethod(v): print 'staticMethod: v =', v staticMethod = staticmethod(__staticMethod) def foo(self, v): print 'foo: v =', v # テスト A.sta…

Atul's Mini-C Compiler

This is a compiler for a subset of the C programming language. It was written in Python during the spring of 2004.

継承クラス検索

渡されたインスタンスがあるクラスを継承しているかチェックしたかったんで書いてみた。組み込みで既に存在しているんじゃないかと思ってるんだけど…。 import types def probeclass(names, o): """ @description: 指定したクラスもしくはインスタンスがある…

変数のスコープ

左辺と右辺でスコープが違うなんて…。やられた。 g_val = 0 def hoge(val): print "hoge: val = ", val g_val = val print "hoge: g_val = ", g_val # テスト print "old g_val =", g_val hoge(1) print "new g_val =", g_val # 結果 old g_val = 0 hoge: va…

PLY (Python Lex-Yacc)

PLY is a Python-only implementation of the popular compiler construction tools lex and yacc. python で書かれた python 用の lex, yacc。

続々々々 assert(3) の無効化方法

# けーま 『そうなんだ。なるほど。それにしても、下のソース、ごっついねー。もったいないから使えばいいのにー。』 なんで使ってないのかはですねー、それ以降プログラムを書いていないからなんですね。まあ、新しく書いたとしても大した手間じゃ無いです…

続々々 assert(3) の無効化方法

昔書いたけど結局使ってないやつ。 #if defined(ENABLE_ASSERT) #if defined(DEBUG) #include #define ASSERT(e) assert((e)) #define DASSERT(e, ...) *1( #define DASSERT(e, ...) ((e) ? (void)0 : my_assert(__FILE__, __LINE__, #e, __VA_ARGS__)) void…

続々 assert(3) の無効化方法

えー、はい、これだけならその通りです。なんでこんな感じでも良いかも。 #if !defined(DEBUG) && !defined(_DEBUG) #ifndef NDEBUG #define NDEBUG #endif /* !NDEBUG */ #endif /* !DEBUG && !_DEBUG */ #include んで、なぜにマクロ化するのかというと ab…

続 assert(3) の無効化方法

assert(3) を直接使うと NDEBUG を define しないと無効化できないので、マクロで一段ラッピングして使う、と。VC だと _ASSERT() マクロがあるんでそれを使えばおっけー。 #if defined(DEBUG) #include #define ASSERT(p) assert(p) #else /* DEBUG */ #def…

assert(3) の無効化方法

assert.h をinclude する前に NDEBUG を define すれば無効化される。 MSDN JM

続 Win32 で mmap(2)

つー事で cygwin のソースを見てみました。cygwin/mmap.cc:fhandler_disk_file::mmap() で CreateFileMapping() と MapViewOfFileEx() を使っていますね。

Win32 で mmap(2)

CreateFileMapping() と MapViewOfFile() を組み合わせれば実現できそうですね。まあ、cygwin を見れば判るんでしょうけど。

教訓

アーカイブファイルを読み出す際、アーカイブファイルサイズ分のメモリを確保するのは馬鹿げている。何も考えずに open(2) -> fstat(2) -> malloc(3) -> read(2) しちゃいけませんって事で…。いきなり 4GB 位のファイルを食わせると泣けます…。 fread(3) や …

続々 PowerPC 32bit ELF ABI

やっぱり gcc のソースは読めない…。

続 PowerPC 32bit ELF ABI

IBM developerWorks の PowerPC でのアセンブリー入門にも書いてあった。 おすすめ。

PowerPC 32bit ELF ABI

Linux や NetBSD は System V R4 ABI, PowerPC edition に準拠した ABI を使用しているので、これを読めば判ります、と。 で、良く使用するレジスタで壊しても良いものは r0, r3-r12, ctr, lr。r13 も使えそうな気はするけど。r1 はスタックポインタとして使…

続々 __attribute__)((naked))(

gcc-2.95.3 にはありませんよ…。

続 __attribute__)((naked))(

とりあえず ARM で試してみる。ARM のレジスタ、命令についてはLinux Zaurusでアセンブリプログラミングを参照。 で、以下のソースを gcc -O0 でコンパイルしてみた。 #if 0 __attribute__((naked)) #endif int kma(int a) { int b; b = a * 2; return b; } …

__attribute__)((naked))(

関数の中を全てインラインアセンブラで書きたくなったので、gcc で関数プロローグ・エピローグコードで行なわれるスタックフレームの生成・削除を無効化する為にはどうすれば良いのか調べてみた。ちなみに Visual C++ で言うところの __declspec(naked) の事…

続 PowerPC

PowerPC って条件分岐命令内に分岐予測のヒント情報が載ってたのか、今更何を言っているって感じだけど。 分岐予測のデフォルトは以下の様に設定されるらしい。これを決定するのはアセンブラの仕事。もちろんユーザが taken(+) もしくは not taken(-) を明示…

PowerPC

久々に PowerPC のアセンブリコードを書いた。命令なんて殆ど忘れてるし…。つーか PowerPC は r0 が zero register で無い事をすっかり忘れてて「なんで r0 で演算してんだ、こいつは」とか思ったのは秘密だ。 やっぱり、レジスタが沢山あるアーキテクチャっ…

続々々 XWarpPointer

Qt でマウスポインタの位置取得/設定するメソッドがあるのを発見してしまった。2.x と 3.x の両方に存在しているものを見逃すなんて…_| ̄|○ つーことで、「XWarpPointer」と「続 XWarpPointer」を修正。