2004-07-02 (Fri)
_ [mod_ruby] mod_rubyのSubversionリポジトリ
mod_rubyのSubversionリポジトリを 公開した。 1.0.0だけど、ちゃんとパッチがあったってるバージョンですのでご心配なく(Apache2も同様にパッチをあててます)。
ViewCVSでも 見えます。
ところで、リポジトリとレポジトリってどっちか迷いませんか?
2004-07-03 (Sat)
_ [家族] 海
海に行って来た。
名前につられてキララビーチ*1というところに行って来たのだが、台風のせいか波がけっこうあって、子供は「恐い」を連発していた。
結局ずっと水溜まりみたいなとこで遊んでいた。 まあ、楽しそうではあったけど。
今度はやっぱり普通に北浦海水浴場にしとこう。
*1 ハワイビーチもあるでよ
2004-07-05 (Mon)
_ [mod_ruby] beta.modruby.net
modruby.netにlilyを導入するための準備中。
ついでに、mod_rubyのバージョンを表示するためのプラグインを書いてみた。 と言っても見ての通り三行である。
flavour/foot.{flav,html}に、
<p id="powered">
Generated by <a href="http://www.mikihoshi.com/lily" title="">lily</a> $version<br />
Powered by <a href="http://www.ruby-lang.org/" title="ruby-lang.org">ruby</a> $ruby_version /
<a href="http://modruby.net/" title="modruby.net">mod_ruby</a> $mod_ruby_version
</p>
とか書いとくと、mod_rubyのバージョンが表示されるはず。
2004-07-07 (Wed)
_ [ソフトウェア] uim-primeのvi対応
viでuim-primeを使っていると、ついつい英数モードにするのを忘れて escapeを押してしまう。
anthy-dev MLで聞いてみたところ、.uimにこんなのを入れとけば、escapeの 時に自動で英数モードにできるようだ。
(define prime-push-key-orig prime-push-key)
(set! prime-push-key
(lambda (c key key-state)
(if (or (= key 'escape)
(and (= key 91) ;; [
(= key-state 2))) ;; control
(let ((sc (context-data c))
(id (context-id c)))
(prime-context-set-mode! sc prime-mode-latin)
(prime-update-mode id sc)))
(prime-push-key-orig c key key-state)))
ついでに、もう一度iとかでinsert modeに戻る時に、前のuim-primeの モードに戻すようにしてみた。
(define prime-suspended-mode -1)
(define prime-in-vi-c-command #f)
(define prime-context-set-mode-orig! prime-context-set-mode!)
(set! prime-context-set-mode!
(lambda (ac mode)
(set! prime-suspended-mode -1)
(set! prime-in-vi-c-command #f)
(prime-context-set-mode-orig! ac mode)))
(define prime-push-key-orig prime-push-key)
(set! prime-push-key
(lambda (c key key-state)
(let* ((sc (context-data c))
(mode (prime-context-mode sc)))
(prime-push-key-orig c key key-state)
(cond
((and (not (= mode prime-mode-latin))
(or (= key 'escape)
(and (= key 91) ;; [
(= key-state 2)))) ;; control
(prime-context-set-mode-orig! sc prime-mode-latin)
(prime-update-mode (context-id c) sc)
(set! prime-suspended-mode mode)
(set! prime-in-vi-c-command #f))
((and (= mode prime-mode-latin)
(>= prime-suspended-mode 0))
(cond
((or (= key 105) ;; i
(= key 73) ;; I
(= key 97) ;; a
(= key 65) ;; A
(= key 111) ;; o
(= key 79) ;; O
(= key 67) ;; C
(= key 115) ;; s
(= key 83) ;; S
(and prime-in-vi-c-command
(or (= key )
(= key 108) ;; l
(= key 119) ;; w
(= key 101) ;; e
(= key 99) ;; c
(= key 71)))) ;; G
(prime-context-set-mode-orig! sc prime-suspended-mode)
(prime-update-mode (context-id c) sc)
(set! prime-suspended-mode -1)
(set! prime-in-vi-c-command #f))
((= key 99) ;; c
(set! prime-in-vi-c-command #t))
((or (= key 58) ;; :
(= key 47) ;; /
(= key 63) ;; ?
(= key 33) ;; !
(= key 'escape))
(set! prime-suspended-mode -1)
(set! prime-in-vi-c-command #f))))))))
やっぱりSchemeは日常的に使うのはつらそうだなあ。 自分の能力的に。
_ [mod_ruby] modruby.net
リニューアルしました。
2004-07-08 (Thu)
_ [ソフトウェア] use Vim in Evolution
thunderbirdにも欲しいよお。 あるいはevolutionに乗り換えるべきか。
前に試した時はSubjectがUTF-8になっちゃったりとかいろいろ問題があったのだが、今は直ってたりするんだろうか。
_ [ソフトウェア] RDスタイル for lily
適当にでっちあげてみた。 (動いている様子)
pluginディレクトリにこれを突っ込んで、lily.cfgに
file_extension txt wiki rd
とか書いとけば、.rdという拡張子のファイルをRDとして処理する ようになります。
.rdの中身はふつーに
= 記事のタイトル == 見出し1 本文....
みたいな感じで。
最初はVisitorをクラスにしようと思ったが、プラグインがinstance_evalで 評価されることを思い出して、RD::RD2HTMLVisitorのインスタンスに 特異メソッドを定義するようにしてみた。
たまにはクラスレスなのも面白いかもしれない (とかいうほどたいしたことはしてないけど)。
2004-07-12 (Mon)
_ [プログラミング] IA64 だと 0 と NULL は違う
ポインタを要求する文脈では常に 0 は NULL pointer を表わすってわけでもないのね.
[Memorandaより引用]
「ポインタを要求する文脈」かどうかがコンパイラには わからないケース(可変長引数)だったから、0でヌルポインタを生成してくれなかった、 ということじゃないのかなあ。
#define NULL 0
というのも規格的にはOKですよね、たしか。
あと、
#define NULL ((void *)0)
な処理系でも、void*とchar*の内部表現が違うと、キャストなしのNULL ではまずいんじゃないのかな(ってそんな処理系を実際に見たことはないのですけど)。
なので、ほんとは0をNULLにするんじゃなくて、(char *) 0とか適切な型に キャストしてやるべきな気が。 (まつもとさんがNULLを使わないのはポリシーなはず。)
とかいうのは全部私の勘違いかもしれませんので、間違ってたらごめんなさい。
2004-07-26 (Mon)
_ [言語] 静的型言語
型は構造ではなく、signatureで表現する。 型をメソッドの集合によって表現する。 メソッドの名前、それぞれの引数の数とsignatureがすべて一致する型は 同じ型であるとする。ちょっとドラスティックすぎるか。 型の互換性はsignatureの包含関係でチェックする。
[Matzにっきより引用]
Emeraldとかいう言語がそんな感じじゃなかったですっけ。 (ってfjか何かの記事で読んだだけですけど。) あと、gccのC++拡張のsignatureとか。
でも、そこを明示しないんだったらRubyみたいな動的言語でもいいような 気もします。 それでは既存の型のsuper typeが定義できないから柔軟性がない、という 向きにはsupertypingで。
_ [言語] Supertyping Suggestion for Haskell
Googleで"supertyping"で検索したらこんな記事が。 Satherへの言及もあるようだ。
2004-07-27 (Tue)
_ [ソフトウェア] amavis
やたらウィルスメールが来るので、やまださんおすすめのamavisという ウィルススキャナを導入した。
以下はdebian woodyへの導入手順。
以下のapt-lineを追加する。
deb http://www.backports.org/debian/ woody amavisd-new deb http://www.backports.org/debian/ woody clamav
以下のパッケージをインストールする。
# apt-get update # apt-get install amavisd-new clamav-daemon clamav-freshclam
質問の答えはすべてデフォルトでよい。
ユーザclamavをグループamavisに追加する(amavisから利用できるように するため)。
# adduser clamav amavis
clamav-daemon/clamav-freshclamを再起動する。
# /etc/init.d/clamav-daemon restart # /etc/init.d/clamav-freshclam restart
/etc/amavis/amavisd.confの$banned_filename_reの以下の部分 (amavisd-new-20030616p10-0.backports.org.1では688行目)をコメント アウトする(日本語の添付ファイル名をWindowsのCLSIDと誤判定するのを 防ぐため)。
修正前:
qr'[{}]', # curly braces in names (serve as Class ID extensions - CLSID)修正後:
# qr'[{}]', # curly braces in names (serve as Class ID extensions - CLSID)また、$mydomainや$myhostnameを適切に設定する。
amavisを再起動する。
# /etc/init.d/amavis restart
/etc/postfix/master.cfの末尾に以下の内容を追加する。
smtp-amavis unix - - - - 2 smtp -o smtp_data_done_timeout=1200 -o smtp_send_xforward_command=yes -o disable_dns_lookups=yes 127.0.0.1:10025 inet n - - - - smtpd -o content_filter= -o local_recipient_maps= -o relay_recipient_maps= -o smtpd_restriction_classes= -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o mynetworks=127.0.0.0/8 -o strict_rfc821_envelopes=yes -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000/etc/postfix/main.cfの末尾に以下の内容を追加する。
content_filter=smtp-amavis:[127.0.0.1]:10024
postfixに設定をリロードさせる。
# /etc/init.d/postfix reload
postmasterへの報告メールがいらない場合は、amavis.confに
$virus_admin = undef; # do not send virus admin notifications (default)
と書いておけばいいらしい。
2004-07-28 (Wed)
_ [ソフトウェア] IMAP interface for morg
まつもとさんのメールオーガナイザーにIMAPサーバとして振る舞う インタフェイスを付けたらいろんなMUAで使えてうれしくないかなあ。
と思っていたけど、よく考えたらthunderbirdの検索インタフェイスは いまいちなのであんまりうれしくないな。
_ [ソフトウェア] irc6.nara.wide.ad.jp
逆引が出来ないとIRCで不便なので、ddo.jpの ダイナミックDNSサービスを使ってみたりしたけど、上手く行かず。
irc6.nara.wide.ad.jpにIPv6でアクセスするようにしたら、制限なしの 接続が出来たみたい。 逆引できなくても制限がかけられていないのは、アドレスで判断してる んだろうか。
_ [mod_ruby] modruby.netのIPv6対応
というわけで、ついでにIPv6対応しました。






_ @@@@ [んじゃ,ヌポジトリくらいで]