Just another Ruby porter,

〜2005年2月上旬〜


<Prev(,) | Next(.)> | Recent(/)>> | RDF

2005-02-01 (Tue)

1月のspam

ちょうど5000通。 ruby-lang.orgにしかけたSpamAssassinがおどろくほど効果がない。 捕まえたspamが1400通で逃したspamが600通ぐらい。 ってことは6400通なのか。

考えてみるとQDBM版bogofilterを入れるのは簡単だし、 同じデータベースが使えるのでさっそく導入。さてどうなるか。

[Soft] C Code Analyzer 0.5

About:

The C Code Analyzer (CCA) is a static analysis tool for detecting potential security problems in C source code. It's fully automatic; no code annotations or the like are required. It features an automatic user input tracer, potential buffer overflow detection, and more. An eclipse frontend plugin is included.

[Firefox] 日本語が化けないdel.icio.us登録用bookmarklet

Foxyliciousだと選択したところをExtendにもってけない。 deliciousだと文字化けしてしまう。 bookmarkletもいろいろあるけど、やはり化ける。

bookmarkletをいろいろ調べていたら、 An Enhanced Del.icio.us Bookmarklet が見つかった。 要するにescape()じゃなくてencodeURIComponent()を使えば化けないらしい。 というわけでいろいろ組み合わせてみた。 [del.icio.us] これをブックマークかツールバーにD&DしてUSERNAMEを自分のものに置き換えれば使える。 選択しておけばその部分がExtendへ自動的に初期値として表示される。 new/なので自分のtagやおすすめも出てくる。 気になるなら無名function技を使うのもよし。 できれば右クリックしたときに出てくるコンテキストメニューに加えたいところではある。

あれ? http://del.icio.us/post/にあるものはちゃんと encodeURIComponent()を使ってるな。最近変更されたんだろうか。

[Bookmarklet] Bookmarklet Builder

これは便利。先のもこれでcompressした。

http://subsimple.com/bookmarklets/jsbuilder.htm


2005-02-02 (Wed)

[Cygwin] /usr/lib/subversion/bin/svn

久し振りにCygwinを更新してみたら、svnがなくなっていた。 いやほんとはなくなってはいないんだけど、 なぜか/usr/lib/subversion/binなんてとこに移動していた。 /usr/share/doc/Cygwin/subversion-1.1.2.READMEを見ると、

Q:
Why are the binaries in /usr/lib/subversion/bin ?
A:
Without this workaround, it is impossible to build a working set of Perl or Python bindings to be used from the system (/usr/bin) installation of Perl or Python, but which link against a custom build of Subversion in (for example) /usr/local. This is due to deficiencies in the Windows dynamic loader. Therefore, the binaries are placed into a different directory, and PATH is adjusted appropriately.

ってことなんだけど、いまいちよくわからん。すなおにPATHを通しとこ。

[Soft] diet libc 0.28

Changes:

Dynamic linking for AMD64, gdb support for ld.so, and many fixes.


2005-02-03 (Thu)

[Web] del.icio.us APIのrecent

確かにタイトルというかdescriptionは化ける。 いろいろ実験してみたところ、どうやらdel.icio.us側で二重にUTF-8でエンコードしてるようだ。 しかもrecentだけ。getは問題ない。 他で化けないのはこのあたりに原因があるのかな。

というわけで、UTF-8からISO_8859-1か何かへ変換するとUTF-8に戻る。

Iconv.iconv('ISO_8859-1', 'UTF-8', post['description']).to_s

という感じで。

しかしこのiconvの引数の順番はいつまでたってもなんか違和感を感じるのはなぜだろう。

[rrr] ネットワークトラブル

昨日も2時間ほど切断された感じだったが、今日は昼頃から全くつながらない。 かなり重症。と思ったら夜中に復活した。


2005-02-04 (Fri)

[Music] Last.FMをmpg123で聴く

使い方を間違っていた。 realplayなんかで聴くからいけない。 mpg123だとちゃんとまともに鳴り続ける。しかし、ちょっと工夫が必要。

#! /bin/sh
mpg123 "$(cat $1)"

というshell scriptを作ってプレーヤとして使う。 --listでいいような気がするんだけど、

/tmp/http://moses.last.fm/last.mp3?Session=<session-id>: No such file or directory

と言われてしまう。どうも--listだとhttpには対応してないようだ。

それにしてもpersonal radioはhiroとブリグリしか出てこないよ。 ま、profile radioが聴けるようになったからいいんだけど。これは面白いねえ。

[Firefox] delicious 0.4

0.4で文字化けの件は直ってるようだ。

[make] Makefileの空白

GNU makeのifeqを使ってちょっとはまった。

foo = $(if $(wildcard /bin), 1, 0)
ifeq ($(foo), 1)
  bar = 1
else
  bar = 2
endif
all:; @echo $(bar)

というMakefileを用意してmakeを実行すると2と表示される。さてなぜか? もちろん/binは存在する。

all:; @echo "|$(foo)|"

としてみるとわかるんだけど、これは

| 1|

となる。つまりfooは"1"じゃなくて" 1"のように空白も含まれている。 だからifeqで等しくないと判断される。 commaの後に空白を入れるのはクセというか、まあ、普通は入れるよねえ。 それが含まれてしまったらしい。 一方ifeqのほうの空白は無視ってのがなんか納得いかない。 30分ぐらい悩んだ。

all:; @echo $(foo)

としてしまうと単に1としか表示されないから、原因がさっぱりわからなかった。

実はinfo makeを見ると書いてあるんだよねえ。

Often you want to test if a variable has a non-empty value.  When
the value results from complex expansions of variables and
functions, expansions you would consider empty may actually
contain whitespace characters and thus are not seen as empty.
However, you can use the `strip' function (*note Text Functions::)
to avoid interpreting whitespace as a non-empty value.  For
example:

     ifeq ($(strip $(foo)),)
     TEXT-IF-EMPTY
     endif

will evaluate TEXT-IF-EMPTY even if the expansion of `$(foo)'
contains whitespace characters.

いやな仕様だなあ。とりあえずifeqを使うときはstripを忘れずに。

foo = $(if $(wildcard /bin), 1, 0)
ifeq ($(strip $(foo)), 1)
  bar = 1
else
  bar = 2
endif
all:; @echo $(bar)

なら1と表示される。もちろん最初から空白を入れなきゃいいんだけどね。


2005-02-05 (Sat)

[rrr] rrrが絶不調

さてどうしたもんか。ミラーサイトを用意すべき?

[Linux] SSH Filesystem 1.0

Abstruct:

This is a filesystem client based on the SSH File Transfer Protocol. Since most SSH servers already support this protocol it is very easy to set up: i.e. on the server side there's nothing to do. On the client side mounting the filesystem is as easy as logging into the server with ssh.

FUSE上で動く。FUSEは面白いな。 100行ほどの hello world filesystem なんてのもある。ユーザスペースで扱えるのは手軽でいい。


2005-02-06 (Sun)

[Soft] rlocate 0.2.0

About:

rlocate is an implementation of the "locate" command that is always up-to-date. The database that the original locate uses is usually updated only once a day, so newer files cannot be located right away. The behavior of rlocate is the same as slocate, but it also maintains a diff database that gets updated whenever a file is created or a directory is moved. The rlocate kernel module can be compiled only with Linux 2.6 kernels.

カーネルモジュールとして実現しちゃうあたりがなんかすごい。 でも、そこまでして最新が欲しいかというとそうでもないような。

[Firefox] Feedview

面白い。でもLinux版Firefoxだとstylesheetが無効になったような表示になってしまう。 キャッシュもクリアしたんだけどなあ。 Windows版はちゃんと動くだけになんか悔しい。

[Firefox] VI-bindings in Mozilla Firefox

jとkだけでも割り当てるとなんか妙に便利だと思ってしまった。 さらにlessのようにgとGをそれぞれcmd_moveTop, cmd_moveBottomとしてみたが無反応。なぜに?


2005-02-07 (Mon)

[Soft] msmtp 1.3.6

Changes:

The documentation was rewritten and is now available in info, HTML, PDF, and man page formats. Some bugs were fixed. A "defaults" command was added to set default values in the configuration file.

[Firefox] viというかless keybindingなFirefox

昨日の設定が思いの外便利だったので(まだ言ってる)、"b"と"f"を追加。 HHK LiteだとPgUpだのPgDnが押しにくいんだよねえ。

<handler event="keypress" key="b" command="cmd_scrollPageUp"/>
<handler event="keypress" key="f" command="cmd_scrollPageDown"/>

ついでにC-nとかC-pも割り当てようかと思ったが、 これに慣れると設定してないブラウザで非道い目にあうのでやめた。 特にC-nで押しっ放しにすると、ひとりブラクラ状態に。

[TV] DELLのCM

最近よく流れてるね。真ん中が沢田亜矢子の娘らしい。澤田かおり。


2005-02-08 (Tue)

[ToDo] Ta-da Listsの文字化け対応patch bookmarklet

考えてみると Ta-da Listsdel.icio.usの化け方が同じだと今になって気づいた。 というわけで、escapeで検索してみると lists.js のfunction add_itemの中にある

id = xml_request(add_url + '&content=' + escape(content));

がいかにも怪しい。 このescape()をencodeURIComponent()に変更できればいいわけだ。 さてどうやって?ここでbookmarkletを使うことを思いついた。 普通は他に影響しないように無名function技を使うところだが、 逆にpatchをあてることに利用してみよう。 早速置換して例によって Bookmarklet Builder で名前をつけてツールバーへD&Dする。 続いて、自分のTa-da Listsへ行ってbookmarkletを実行。 アイテムを追加してMy Listsを開くと化けない。 成功だ。

javascript:
function add_item(content) {
  changed_list = true;
  if (movement_controls_on) { toggleMovementControls(); }
  toggle_reorder_link(false);
  toggle_delete_link(false);
  
  id = xml_request(add_url + '&content=' + encodeURIComponent(content));
  append_child_to_table(gebid("incomplete_items"),
    tr_with_todo_item(id, content));
}

Firefoxだとこのまま改行ありでもブックマークに登録できるようだ。

[Soft] GNU Make Standard Library 1.0.0

About:

The GNU Make Standard Library (GMSL) is a collection of functions implemented using native GNU Make functionality that provide list and string manipulation, integer arithmetic, associative arrays, stacks, and debugging facilities.

たぶんこのまま使うことはないと思うけど、なかなか面白い。 GNU Makeだとevalもありかー。

[Soft] Emacs 21.4

diffを取ってみると本体には何の変更もなし。実質movemail.cだけだ。

      {
-       error (Errmsg, 0, 0);
+       error ("%s", Errmsg, 0);
        close (mbfi);

なるほど。フォーマットストリングバグだ。


2005-02-09 (Wed)

[Web] track feed

設置してみた。

[Mail] MaildirとMH

ふと気づくとwormを溜めとくフォルダがMH形式からMaildir形式になっていた。 このあたりは~/.rdeliverで

def deliver_mh(folder)
  folder = File.join("Mail", folder)
  Dir.mkdir folder unless File.directory? folder
  last = Dir.entries(folder).max_by{|x| x.to_i}
  last = "0" if last == "."
  new_file = File.join(folder, last.succ).untaint
  agent.save(new_file)
end

てな感じで処理してるわけだけど、last == "."ってなに? 空のディレクトリだとlastは".."になるんだよね。 "..".succが"./"なのでうまい具合に"/"で終わるようになってしまった。 実際のnew_fileは"Mail/worm.200501/./"という感じになり、 それはMaildir形式で保存するというまさにagent.saveの仕様に合致してしまう。 フォルダ名を月単位で管理してるから、 そのタイミングでMaildir形式になってしまったと。うーむ。

しかし、去年の8月から12月まではMH形式になってるんだよねえ。 なぜか今年からMaildir形式になってる。 つまりRuby自身が12月のどこかで"."ではなく".."を返すようになったのか?

% mkdir empty
% ruby -ve 'p Dir.entries("empty")'
ruby 1.9.0 (2005-02-05) [i386-linux]
["..", "."]

FreeBSDに古いのが残ってた。

% mkdir empty
% ruby -ve 'p Dir.entries("empty")' 
ruby 1.9.0 (2004-11-20) [i386-freebsd]
[".", ".."]

この違いか。

面白いからこのままにしとこう。

[Music] Last.FMでprofile

そうか。アルバムを選んでAdd to Profileすれば聴いたことになるのか。 これで profile

personal radioが結構豪華になった。


2005-02-10 (Thu)

[Web] ブックマーク

はてなも始めたらしいけど、さてブックマークを複数持ててもあまりうれしくない。 登録が面倒だし。乗り換えるくらい魅力的かどうか。 といいつつも、とりあえず使ってみる。

[Music] mpdでLast.FM

man mpcしてみるとなかなかいい例があった。

Here is a script to load and play m3u playlists (useful for mozilla):

       #!/bin/bash
       mpc clear
       cat $1 | mpc add
       mpc play

そのまま Last.FMのplayerとして登録。 なんだかんだでいつのまにかmpdで統一されてる。


<Prev(,) | Next(.)> | Recent(/)>> | RDF


WWW を検索 jarp.does.notwork.org を検索

わたなべひろふみ
Key fingerprint = C456 1350 085F A320 C6C8 8A36 0F15 9B2E EB12 3885
Valid HTML 4.01!