2008-09-01から1ヶ月間の記事一覧

PythonでのFFI

Pythonでは、FFI(Foreign Function Interface)としてctypesモジュールを使います http://docs.python.org/lib/module-ctypes.html http://python.net/crew/theller/ctypes/tutorial.html DLL 読み込むDLLのCソース dll.c: // gcc -fPIC -shared -o dll.so dl…

Stackless Pythonで関数呼び出しの深さ制限を突破する

PythonでLISPっぽい何かを作ってみた - ラシウラでは、evalメソッドではfuncオブジェクト内でも再帰的に呼び出されるため、例中のfactでも引数を100程度にしてしまうと、"RuntimeError: maximum recursion depth exceeded"が発生してしまいます。再帰にしな…

PythonでLISPっぽい何かを作ってみた

Pythonでのインタプリタのコードは、本体は200行程度で、builtinで100行程度の300行程度です。一番やりたかったのはmacro機構を実装してみたかったこと。一般のデータに対しては、整数以外の関数は組み込んでないのですが、以下のようなコード例を解釈できま…

JavaScriptのalertを上書き

alertって手軽だけど、ダイアログがモーダルでクリックがうざいので、非モーダルな別窓としてTabに出るようにちょこっと上書きすることにしたり function alert(obj) { var title = "alert: " + window.location.href; var win = window.open(null, title); …

エラトステネスのふるい on Google Gears WorkerPool

エラトステネスのふるい on JavaScript-1.7/1.8 - ラシウラ をGoogle Gearsのworkerpool上に実装してみました。workerには制限がいくつかあり、その対策は少し面倒でした。 alert等は使えない createWorkerできない これらを実現するため、親workerPool(ID=0…

エラトステネスのふるい on JavaScript-1.7/1.8

「エラトステネスのふるい」は、平行プログラミングの基礎的な例としても用いられる。この場合は、各ふるい(sieve)は最初に受け取ったものを素数とし、その担当の素数の倍数を受け取ったらふるい落とし、そうでないものを受け取ったら次のふるいへ渡すコード…

v8のビルド方法とTraceMonkeyとの比較など

gcc-4.3では"Explicit template specialization cannot have a storage class"エラーが出るので、 CXX=g++-4.2 sconsでビルドできる http://gcc.gnu.org/gcc-4.3/porting_to.html $ svn co http://v8.googlecode.com/svn/trunk/ v8 $ cd v8 $ CXX=g++-4.2 sc…

Google Chromeを入れたついでにGoogle Gearsを試してみた

ChromeにはGoogle Gearsが組み込まれてます。 http://code.google.com/apis/gears/ Gearsは単なるrdbのAPIと思ってたけど、Desktop/LoacalServer/Workerなどいろいろあるようで、順次試してみようと思う。 まずは、databaseだが、ResultSetがnext()でカーソ…