google-code-prettify

2006-11-27

currentのインストール

家のノートPCのOSを、NetBSD3からcurrentに上げた。

以下、ハマった点。
  1. /mntでNTFSをマウントしたまま./build.sh install=/すると失敗した
  2. directoryのパーミッションがメチャメチャになった(installに失敗した事と関係ある?)
  3. .xsessionで
    xrdb -merge /usr/X11R6/lib/X11/xinit/.Xresources
    xmodmap /usr/X11R6/lib/X11/xinit/.Xmodmap
    していたのだが、それらの2ファイルが無くなっていたため、xdmからloginできなかった。

なぜcurrentにしたかと言うと、puffs(LinuxでのFUSEのような物)を使いたかったため。

2006-11-24

AESのOFBのdecrypt時にはAES_set_decrypt_key()は使えない

OpenSSLのAESのencode/decode時に使う関数としては、以下の物がある(EVPの事は考えない)。
AES_set_encrypt_key()
AES_set_decrypt_key()

AES_ecb_encrypt()
AES_cbc_encrypt()
AES_cfb128_encrypt()
AES_ofb128_encrypt()

これらの関数の引数には、int encがあり、1ならencode、0ならdecodeを行う。

ECB,CBCの場合のdecodeは、
AES_set_decrypt_key()
AES_ecb/cbc_encrypt(..., 0);

とすればdecodeできるのだが、CFBとOFBの場合は以下のようにdecodeの場合でもAES_set_encrypt_key()を使わなくてはらなない。
AES_set_encrypt_key()
AES_cfb128/ofb128_encrypt(..., 0);


なぜかと言うと、
  • AES_xxx_encrypt()は、内部でAES_encrypt()やAES_decrypt()を呼んでいる
  • AES_set_encrypt/decrypt_key()は、AES_encrypt/decrypt()を呼ぶためのキーをセットする関数である
のだが、AES_xxx_encrypt()のうち
  • ECBとCBCは、encode時にはAES_encrypt()、decode時にはAES_decrypt()を呼んでいる
  • OFBとCFBは、encode時もdecode時もAES_encrypt()を呼んいる
となっているから。

2006-11-17

.batから特定フォルダを対象にTSVNのcommitダイアログを出す

以下の内容の.batファイルで、いつでもそのフォルダを対象にcommitダイアログを出せる。

TortoiseProc.exe /command:commit /path:"フォルダのパス" /notempfile

via TSVN ML

2006-11-16

gccの定義済みマクロを調べる方法

gccの定義済みマクロを見るには、

$ touch a.h; cpp -dM a.h

とすれば良い。
一覧とその説明はこちら

2006-11-11

xzgvで日本語ファイル名を表示させる

pkgsrcに入っているxzgvでNTFS領域にある日本語ファイル名を表示させると、表示が化けてしまう。
詳しくはわからないのだが、以下のようになっているようだ。
  • NTFS上のファイルの日本語はUTF-8で格納されている
  • xzgvで日本語を表示するには、GTKにEUCで渡せばよい(私がlocaleをEUCにしているから?)
そんなわけで、無理矢理日本語ファイル名を表示させるパッチを作成。
patch-local-aa
patch-local-ab

2006-11-10

Xen対応のiTRON

Xen対応のiTRON
TOPPERS/JSP Version1.4をXenに対応させた物。

via toppers ML

さくらインターネットでweb.py

さくらインターネットのレンタルサーバーでweb.pyを使えるように設定した。

  1. web.pyのホームページのGET IT: web.pyの所からweb.pyをダウンロード。

  2. web.pyを$HOME/lib/python/の下に置いておく。

  3. flupをダウンロード。

  4. $ python setup.py install --home=${HOME} --forceで、flupをインストール。flupが無いとCGIが動作しないので注意。

  5. .htaccessに、AddHandler cgi-script .pyを書いておく(これはいらないかも)。

  6. 以下のファイルを$HOME/www/a.pyとして作成しておく。パーミッションは755で。

    #!/usr/bin/env python

    import sys

    sys.path.append('/home/ユーザー名/lib/python')

    import web

    urls = (
    '/', 'view'
    )

    class view:
    def GET(self):
    print "\r\n"
    print "Hello, world!"
    web.internalerror = web.debugerror



    if __name__ == '__main__':
    web.run(urls, web.reloader)

  7. webブラウザで、http://サーバーのアドレス/a.py/にアクセス。最後の/を忘れずに。

  8. Hello, Worldと表示されればOK。

参考にしたサイト:
「さくらのレンタルサーバ」で Python 外部モジュールを使う

さくらインターネットでmercurial

さくらインターネットのレンタルサーバーにmercurialをインストールした。
READMEに書いてある通りにしただけだが、一応メモ。
$ python setup.py install --home=${HOME} --force
の後、.bashrc(もちろんbashの場合)に
export PYTHONPATH=${HOME}/lib/python
とするだけ。

2006-11-08

カナリヤ

stackへの攻撃を検知するために、スタック上のスタック情報とローカル変数の間にガードデータを入れるという方法があるが、このガードデータの事をcanary(カナリヤ)と言うらしい。

毒ガスの検知のみならず、stack攻撃の検知にも使われるかわいそうなカナリヤ…。