仮置

主に ~/tmp から救出したもの。とくに断りがなければソースは public domain 。

zsh でインクリメンタル補完

こっち

OCaml のオブジェクトを polymorphic record らしく使う camlp4 マクロ

Download: polyrec.ml polyrec_module.ml

たぶん Revised syntax 専用。

# value poly0 = {# x = 0; y = 1 };
# value poly1 = {# x = 0; y = "1" };
# value poly2 = {# poly1 with x = 1 };
# (poly2#x, poly2#y);
- : (int * string) = (1, "1")

# value get_y = fun p -> p#y;
# get_y poly0;
- : int = 1
# get_y poly1;
- : string = "1"

# value set_y = fun p y' -> {# p with y = y' };
# value poly3 = set_y poly0 2;
# value poly4 = set_y poly1 "2";
# (poly3#x, poly3#y);
- : (int * int) = (0, 2)
# (poly4#x, poly4#y);
- : (int * string) = (0, "2")

Python から C++ ファイルを直接インポート

Download: cpp.py

test.py:
    import cpp
    import adder # addr.cpp を自動的にコンパイルしてインポート。

    print adder.add(1, 2) # -> 3

adder.cpp:
    #include <boost/python.hpp>

    int add(int x, int y)
    {
        return x + y;
    }

    BOOST_PYTHON_MODULE(adder)
    {
        boost::python::def("add", add);
    }

とりあえず UNIX 系 OS 上でのみ、 c++ -MM にて依存関係を調べ、必要なときだけコンパイルするようになっている。

cpp.compiler が distutils.ccompiler.CCompiler のインスタンスなので、ライブラリの追加等はこれをいじる。 boost_python-mt は追加済み。

boost.python の numarray 拡張

Download: numarray.hpp

boost::python::numeric とは違い、必要に応じて連続な配列を作るので、配列へ直にアクセス可能。インターフェイスの詳細は numarray.hpp の冒頭コメントに。

arr_sum.cpp:
    #include <boost/python.hpp>
    #include "numarray.hpp"

    int sum(cnumarray_in<int> arr)
    {
        int s = 0;
        for(int i = 0; i < arr.shape(0); ++i)
        {
            s += arr[i];
        }

        return s;
    }

test.py:
    import arr_sum
    arr = numarray.array([1, 2, 3])
    print arr_sum.sum(arr) # -> 6

各種 HRTF(頭部伝達関数)を wave ファイルに変換

MIT Media Lab. : compact.tar.Z
Download: towave_mi.py
鈴木研究室 : sub?.tar.gz
Download: towave_sz.py
島田研究室 : samrai*.tar.gz, subject*.tar.gz
Download: towave_sm.py
板倉研究室 : data02.tgz
Download: towave_it.py

Python と numarray が必要。解凍したディレクトリで実行すると wave ファイルが生成されるはず。SIR とかで畳み込んでほげほげするなど。

freetype で sub-pixel sampling を有効にしたときの色付きを改善するパッチ

Download: freetype-2.2.1-filter.patch / fonts.conf の例

これを実装してみたもの。このパッチを当てると、 rgba = rgb, bgr 以外ではまともに使えなくなる。 autohinter の利用を推奨。 hintstyle は強制的に hintslight 相当になる。ちなみに、上のスクリーンショットの日本語フォントは M+ 1p

もう上のパッチは古いです。 freetype の開発者 David Turner 氏による非公式パッチがあります。これに加えて、

を行ったパッチを置いておきます。

alc.co.jp で辞書引き

Download: eijiro.py

X の Selection を監視して、 http://www.alc.co.jp/ で検索、結果を表示。記号などのゴミを取り除いてから検索するので、大抵の GUI アプリでは単語のダブルクリックで検索が可能。

mlterm の再描画高速化パッチ

Download: mlterm-fast-redraw.patch

Expose イベントの再描画を一文字単位で行い、ちらつきを抑える。縦書対応が面倒で放置していたモノ。そのうちなんとかする予定…。効果を得るためには --enable-optimize-redrawing が必須。

Brown noise 生成

Download: brown.cpp

周りの音が気になって集中できないときにどうぞ。

Ogg コンテナを含むファイルから Ogg を切り出し

Download: oggcut.py / Win32 バイナリ

複数のストリームが重なっているファイルの切り出しにも使えるはず。 -c で CRC をチェックするのでコンテナの誤認識がほぼなくなるが、 CRC の計算コードが Python なので遅い。

2008/01/08: Win32 バイナリを追加。

戻る

y.fujii <y-fujii at mimosa-pudica.net>