Entries from 2009-11-01 to 1 month

PL_keyword_plugin で、Perl の lexer と re2c を組み合わせる

さいきん PL_keyword_plugin というのをよく耳にするので、ためしにつかってみました。p5-php-embedたとえば use PHP::Embed; $a = ; print $a, "\n"; こんなふうに PHP をインラインで Perl にまぜたりできる。じつは、内部的には PHP を pipe でよびだす P…

Go の X11 ライブラリを試してみる

default ブランチの方の pkg/exp 以下にすでに含まれている、パッケージ draw/x11 を試してみた。このパッケージは Xlib を介さず、直接 X プロトコルを喋って X サーバと通信して画面描画を行うようになっている。まったくよく実装するよほんとに。次のプロ…

enum型とtypeof()とgccとg++

次のような C のコードを gcc でコンパイルしたとき、シンボル「a」のデバッグ情報がどのように DWARF になっているかを dwarfdump で見てみると... enum X { A }; typeof(A)* a; なんかとても残念なことになっていた。 LOCAL_SYMBOLS: <1>< 45> DW_TAG_enum…

enum 型とテンプレート特殊化

追記: テンプレートの特殊化と同時にインスタンス化されていたというだけでした。仕様のどこに書いてあるのかは調査中以下のように template specialization というのはインスタンス化されたもの、明示的に特殊化されたもの両方を内包する概念のようでした。…

fontconfig により選択されるフォントを知るには

fc-match コマンドを使うのだけど、引数として渡すべきパターンの書き方がよく分からなくて参った。 $ fc-match sans DejaVuSans.ttf: "DejaVu Sans" "Book" $ fc-match sans:weight=200 DejaVuSans-Bold.ttf: "DejaVu Sans" "Bold" $ fc-match sans:lang=ja…

Boost.Python で static property を定義したクラスを含むモジュールをロードしようとするとエラーが出る件

この問題は Python 2.6.3 以降で発生する。たとえば、次のようなモジュールを作成し、 #include <boost/python.hpp> #include <string> class MyClass { public: static std::string get_foo() { return "test"; } }; BOOST_PYTHON_MODULE(_test) { using namespace boost::python; cla</string></boost/python.hpp>…

Ada, Go, Erlang, Scala, Stackless Python, Java (java.util.concurrent), シェルスクリプトの適当すぎる比較

同じようなコードをそれぞれの言語で書いてみた。Ada: with Ada.Text_IO; with Ada.Strings.Unbounded; procedure MyTest is use Ada.Strings.Unbounded; use Ada.Text_IO; task MyTask is entry Hello(Message: String); end; task body MyTask is Received…

VMware Server 上で利用している Windows XP のイメージを KVM に移行する際、ブルースクリーン (0x0000007B) が出てしまう問題への対処法

ずっとこれで困っていて、いろいろ検索をしてみたのだけど、結果的に「Migrating Virtual PC Windows servers to KVM」の次の記述が役に立った。 To avoid getting a 0x0000007b / 0x7b BSOD on startup due to the mass storage controller changing, run t…

PHPにメッセージキューとそれを扱う糖衣構文を実装してみた (「PHPのすべらない話 #3」)

Goにできて、PHPにできないはずはない!というわけでやってしまいました。まあ、これにメッセージキューとメッセージスロットを足しただけなんですが。

「10〜30分で何となく分かるGo」という資料

を Python Hack-a-thon #2 のために作りました。単なるまとめなので、間違いがあったらぜひ指摘してください。10〜30分で何となく分かるGoView more documents from ... ....追記: サンプルコードの zip はこちら

Erlang 付属のパーサジェネレータ Yecc を使ってみた

Yacc なんかと同じ LALR(1) パーサジェネレータである Yecc を、ちょっと興味がわいてみたので使ってみた。ルール記述ファイルの形式は次のようにまったく Yecc 独自のものとなっている。Yacc よりはわかりやすいかも。 %% コメントは『%%』で始める %% 以下…

Go のサンプルいくつか

Methods: package main import "log"; type string_list struct { items []string; } func (self *string_list) Join(sep string)(string) { retval := ""; for i := 0; i < len(self.items); i++ { if i > 0 { retval += sep; } retval += self.items[i]; }…

なんか Go で書くのが流行ってるみたいなので

追記:「kzk's blog」の「Writing TokyoCabinet wrapper for Go language」で紹介御礼。この記事は cgo を使った TokyoCabinet のラッパーの書き方を解説しているので、下記のコードと組み合わせて本当に tc が backend になっている KVS を書いてみるのもよ…

Erlang でモジュールをディスアセンブルする

自分用メモ。全然ドキュメントがないので困っている。OTP のソースを眺めていたら beam_disasm というモジュールを発見した。どうもこれをつかえばいいようだ。test.erl -module(test). -export([add/2, add/3]). add(X, Y) -> X + Y. add(X, Y, Z) -> add(a…