トップ 最新 追記

2008-11-04 [長年日記]

_ FriendFeed の widget を貼ってみた

以前

Twitter / wtnabe: friendfeed を blog パーツ化できれば ...

なんてことを言っていたんだけど、普通にできてた。いつできたのかは知らないけど。ということで

FriendFeed - Embed FriendFeed

辺りから widget を作って貼っ付けると便利だと思うよ。Sign in していれば自動的に自分の feed の widget が作れる。これまでは Twitter Updates を貼ってたんだけど、代わりに FriendFeed widget にしてみた。これなら delicious での活動も github での活動もまとめて貼れる。

tDiary に貼る場合はユーザー定義 CSS のあとに widget がくるので、!important 付けまくってやらないとスタイルの調整ができないところだけ注意。あ、あとなんかこの widget は幅を px で決め打ちしたがってるけど、そこは width パラメータを削除してやれば大丈夫。普通に馴染む。

色以外は。

ロゴの色にバリエーションがあれば嬉しかったなー。うちは暖色系なので、青系の FriendFeed のロゴがどうにも合わない。仕方ないのでロゴは CSS で display: none してしまった(乱暴)。

Tags: Feed

2008-11-05 [長年日記]

_ Samba client を一度整理

smbclient
ftp のように使える client
smbfs
mount -t cifs*1

ftp のようにファイルのやりとりがあまり面白くないんだよな。直接読み書きできないんじゃ。ということで smbclient は使ったことがない。

かといって smbfs も普段使わないので使い方を忘れてしまうのでメモ。

sudo mount -t cifs //HOST/point /mount_dir -o user=X,password=Y,uid=Z

あとこの辺もたまにしか使わないので忘れてしまうけど使えると便利。

nmblookup
NetBIOS name と IP address の変換
findsmb
nmblookup を local network で掛けまくりでサービス探しまくり
smbtree
findsmb + 共有ポイントブラウザ
Tags: Samba

*1 イマドキは mount -t smb ではないらしい


2008-11-06 [長年日記]

_ openpear.org なんてものを知った

どっかで告知出した? なんでオレ知らなかったんだろう。

Perl には CPAN があります。

この言葉の本当の意味は CPAN を知らない人には分かりません。少なくとも PHP の場合、CPAN に相当するリポジトリはありません。でした。openpear.org は PHP の CPAN、と言っちゃうと大げさですが、少なくとも Pear よりは CPAN に近いものです。Pear には規律が、CPAN には自由があります。openpear.org は pear パッケージに自由を与えます。

別な見方をすると openpear.org は coderepos にパッケージングの機能が追加されたものでもあり、rubyforge や github のようなものでもあります。たぶん。

でもあれなのよね。coderepos には PHPer 少ないし、#openpear@freenode も静まり返ってるし、やっぱ PHP はちょっと文化圏違う感じ。どうなるんでしょ。盛り上がるといいですね。

Tags: Pear PHP

2008-11-08 [長年日記]

_ Macに復帰

10.5 をインストール

ディスクがおかしいと思われた PowerBook をバラしてディスクの交換。例によってネジが1本不明で1本は合わない場所に刺したらしく、ネジが2本ハマっていない状態になってしまった。まぁこんなもんだろ。もうね。この PowerBook のバラしにくさは尋常じゃない。新しい MacBook はバラしやすいらしいので、それだけでもちょっと欲しくなるなぁ。

ということで 10.5 のインストールから。

最初インストーラが HDD を認識しなくなって焦ったけど、インストールの前にディスクユーティリティを立ち上げてフォーマットする流れなのね。Mac なんだし、勝手にディスクユーティリティを立ち上げてくれりゃいいのに。

Xcode Tools もお忘れなく。

復旧

で、インストールが終わったら Ubuntu に持っていったのと同じ流れで逆向きにデータを持ってくる。

PPC Mac + 10.5 はどこまで通用するのか?

意外に通用する。

  • Firefox 3
  • OOo 3
  • OmniGraffle 5

はイケる。ただ、Firefox については Intel Mac より不安定な印象。メモリ消費もちょっと多めな気がする。

  • Gimp

これは最新版はもう Intel only っぽく。かといって 10.3 で動いていた 2.2.11 も起動してすぐ落ちる。10.5 は Preview で簡単なレタッチもできるし要らんかーと思ったけど、Preview で頑張るのは無理だった。ヒストリもないし。

  • MacPorts
  • Fink

MacPorts を入れようとしたけど失敗した。Fink は 10.5 対応のバイナリがないんだよなーと思っていたけど、いつの間にかできていたのでこれを使ってインストール。こっちは問題なく入った。

もともと 10.3 でも Fink を使っていたので Fink であることに特に不満はない。10.5 で対応しているパッケージも新しくなってるし。ようやくこれで zsh 4.3.4 以降の環境に揃えられたよ。UTF-8 ready で強力な補完が使える。よしよし。ここから一通りコマンドラインのツールを追加。zsh, nkf, lv*1, Ruby, FDclone, nmap, rlwrap, w3m, wget, tree 辺りから。

もしかしたら Gimp も Fink で入れたら動くかな。

[2008-11-20 追記]gimp.app の方を探してたけど、本家 gimp.org にちゃんと PPC 版も最新のものが置いてあった。

YATTA-! と思ったらメニューの文字が全然出ないorz XQuartz – Trac から X を新しいものに入れ替えたけどやっぱり出ない。なんだこりゃ。動くのに使えない。うーむ。

Tags: OSX

*1 lgrepとして使っている


2008-11-10 [長年日記]

_ Tiarra を coderepos trunk にした

去年 tiarra を動かし始めてから初めてのアップデート。

tiarra は機能的にはきらいじゃないんだけど、conf の中身がコメントだらけで設定しにくいのが難点。もちろんコメントないよりあった方がいいんだけど、アップデートしたらますますコメントが増えて全体像がつかみにくい><

使いたかったのは

general {
  nick-fix-mode: 0
}

これを 2 にしてみた。なんでこれが必要かというと、特に freenode と tiarra と limechat を組み合わせときの現象だと思う*1んだけど、irc client がすでに nick が使われているから代わりの nick に付け替えなきゃと思って nick の変更を試みて、その変更の反映のタイミングかなんかで意図せずループしてしまうことがある。

この nick 変更の際、末尾に _ を付加したりすることが多く*2、limechat と組み合わせるとやたらと _ が増えて最後は _ だらけになって 0 になるとかいう事態に陥る。

そこでこれを回避するために使えるのが nick-fix-mode

これでいつ繋いでも nick 変更の嵐に見舞われることがなくなった。

Tags: IRC

*1 X-Chat の場合はそういう現象にあわない

*2 多くの irc client で標準的にそういう設定になっている


2008-11-11 [長年日記]

_ OSX 10.5 の nfs client でハマる

10.3 のときも Linux の nfs client でも問題なかったんだけど、OSX の nfs client でどうしても bad net address で mount できないサーバが出てきた。

いろいろやってみたところ、hostname が数字から始まっていることだけが違いっぽい。試しに hostname ではなく IP address で mount してみたら問題なくイケた。

そうかそういうことなのか。

Tags: OSX Disk Net

_ Debian でパッケージを欲張りすぎてハマる

※ 例によって過去日記。

lenny がいつまでもリリースされないので業を煮やして testing(lenny) のパッケージを追加で使うことを試みた。毎回どこでその情報を見たのか忘れてしまうんだけど、

Twitter / Takeru Naito: @wtnabe [testing や unstabl ...

今回も教えてもらった。

AptGet - Debian GNU/Linux スレッドテンプレ

で、利用できるパッケージを追加して apt-get update してみたが、今度は

Problem with MergeList

と言われて止まる。何事かと思ったが

Fulldigit - [Debian FAQ]更新リストが多すぎてapt-get updateが失敗する

によるとメモリ不足? MergeList のサイズが大きくなりすぎないように制限を付けてやると update できるようになる。

なんか確か libfreeimage を入れて OpenFL を動かそうとしてたっぽいけど、影響範囲がでかすぎて結局これはやってみただけで戻してしまった。

Tags: Debian Linux

2008-11-14 [長年日記]

_ jQuery 2題

CSS の #ID.CLASS 相当

なんか

#ID.CLASS

の書き方は jQuery 1.2.6 で動かないっぽい。

[id=ID][class=CLASS]

だと取得できた。

jQuery.wrap() は ownerDocument が必要

言い換えると wrap したい要素がブラウザの DOM ツリー上に存在していないとダメ。

なんでこんなことしようと思ったかというと、HTML を組み立てて HTML 上に追加したかったんだけど、追加する HTML をベタ書きじゃなくてある程度動的に変更できたらいいなと思ったわけです。で、

jQuery( html1 ).wrap( html2 );

だとこの時点で html1 が DOM ツリー上に存在しないので動かない。結果は wrap される前のものが返ってくる。

var obj = jQuery( html1 );
$( selector ).append( obj );
obj.wrap( html2 );

こうすると動く。これだと 2行目の append()*1の時点で DOM ツリー上に置かれるので、それ以降の obj に対して wrap() が有効に働く。

なるほどねぇ。

※ そういえば Firebug の console.log() 初めて使ったよ。なんで今まで使ってなかったんだ。0.4 の頃からあったらしい。なんと情けない。

Tags: Ecmascript

*1 append 以外でもなんでもいい



2008-11-17 [長年日記]

_ IE のデバッグ環境作った

基本的に Windows は使っていないので WinIE 上での JScript のデバッグ方法はよく分かっていなかった。ただエラーメッセージの意味が全然分かんねぇよバーカ、と思っていただけだった。

さすがにこれじゃまずいと思って調べると

IEでのJavaScriptのデバッグ方法 - Microsoft Script Editor編 - - Yet Another Hackadelic

こんなのが引っかかった。スクリーンショットも多めで丁寧で分かりやすい。でもこれ Office に載ってる Script Editor を前提にしている。

探すと

IE向けのJavaScriptデバッガ 「Windows Script Debugger」

こんなのがあって、Office 入れてなくてもデバッグはできるらしい。じゃあってんで入れてみた。

動かねぇ

いろいろ調べたけど、動かないという現象に遭遇してる人が見つからない。なんでだーと悶々としていたんだけど、

日本語版を抜いて英語版を入れたら動いたorz

その英語版は以下に。

Download details: Script Debugger for Windows NT 4.0 and Later

Companion.JS の console option を変更

あと

My DebugBar | CompanionJS / HomePage

Companion.JS を入れた。Firebug 並みとは言わないまでもエラーの表示も分かりやすくなった。該当箇所をハイライトしてくれるだけでも標準の状態からは雲泥の差。

あと Firebug みたいな要領で console に log を落とせるので便利。のはずなんだけど、0.2 からのアップデートで 0.4 を入れたせいか、console に log が出ないT^T もうこんなんばっか。あれこれ試してるうちに

options の Show "Console[i]=" line のチェックを外したら動いた。

これで IE で動かないときのあたりをつけやすくなった。

Tags: Ecmascript IE

2008-11-18 [長年日記]

_ All Rights Reserved と Creative Commons License

今まであんまり興味なかったけど調べてみました。

結論から言うと自分の理解では All Rights Reserved の表記と CC ライセンスの併用は問題ないと思います。

例によって間違っていたら突っ込んでください。

そもそもの由来と表記の無意味さ

http://eng.alc.co.jp/newsbiz/hinata/2005/09/c.html

この言葉が使われるようになった背景はこうです。米大陸諸国が1910年に締結したブエノスアイレス条約が著作権の保護を受けるためには、There shall appear in the work a statement that indicates the reservation of the property right.(所有権を留保する旨の記載が著作物上表示されていること)としたので、締約国内で発行される物にAll rights reserved.またはスペイン語でこれに相当するTodos derechos reservados.のいずれかの表示が付されるようになったのです。

(snip

一方、このブエノスアイレス条約の締約国は最終的に上で説明したベルヌ条約か万国著作権条約のいずれかに加盟するに至っていますから、後法は前法を廃する (A later law prevails over an earlier law.)というルールにより著作権保護の条件として特別な表記を要求するブエノスアイレス条約は効力を失っています。

  • ベルヌ条約
  • 万国著作権条約

は知っていましたが、ブエノスアイレス条約は知りませんでした。

ということはブエノスアイレス条約にだけ批准している国では今でもこの表記が法的な意味を持ちますが、ほとんどの国においてこの表記は法的には意味を持ちません。書かなくても著作権は保護されます。(ベルヌ条約のみに批准している国では C マークが必要。)

それでもあえて All Rights Reserved

すべての権利を留保している、言い換えると放棄していないという意味です。「すべての著作物は自分の著作物だ」という意味にはならないはずです。その場合は All works belong to me/us. ですよね? 少なくとも rights 以外の単語がないと表現しようがないと思うのですが…。

「無断転載禁止」を訳に当てる通例がありますが、これも著作権法上当然のことを言っているだけで、そんなに必死に訳について考える必要もないでしょう。

「ライセンス」素材の利用と All Rights Reserved

原則矛盾しないはずです。ライセンスが著作権法と矛盾している場合は別ですが、少なくとも CC などは著作権法と矛盾していません。例えば上の日本語に当てはめてみると、一見、許可を取らずに転載できるので "All Rights Reserved" と矛盾しているように読めます。しかし実際にはライセンスによってすでに転載の許可が明示されているのであって、許可なく転載しているわけではありません。従って、例えば CC ライセンスの素材を利用してサイトを作っているからと言ってそのサイトの著作権表示を All Rights Reserved にしてはいけないとは言えないと判断していいと思います。

また極端な例として public domain のものを考えると、public domain のものを利用しても「オリジナル」に対して自分には権利がないし、二次著作物には二次著作物としての権利を有していますので、やはりこの表記とは矛盾していないはずです。権利のないものに対して権利を主張しているわけではないので。

しかし矛盾してそうな例

CC の場合は "Some Rights Reserved" というバナーや No Rights Reserved が掲げられている場合があり、これが混乱のもとではないかと思います。*1

http://www.creativecommons.jp/learn/policies/post_4/

例えば自分のサイトで

  • Some Rights Reserved
  • All Rightes Reserved

が併記されていると読めるような表示はおかしいでしょう。

しかしこの Some Rights Reserved はなんかこう、悩ましいですね。何を言いたいのか不明瞭だし、この表現は使わない方がいいんじゃないかなぁ。ライセンスに徹した方がいいんじゃないかと思うんですが、どうでしょう。

ちなみに、なんでそこまで All Rights Reserved にこだわるかというと、単にこの表記がなんとなくかっこいいからですね。それ以上の意味はないです。

*1 というか CC 自体 All Rights Reserved と No Rights Reserved の間を埋めるということを言っているのでややこしい。


2008-11-19 [長年日記]

_ ReviewMonk を動かしてみた

一時期盛り上がって、しかし自分のコーディングに集中したことで下がっていた review 熱。今もまだ盛り上がってはきていないのですが、とりあえず前から気になっていた review 用のツールを一つ試してみました。

ReviewMonk ってなに?

一言で言うと

working copy を HTTP で公開しちゃって、誰でも diff を見れるようにするツール

です。今のところ(rev.14 時点)対応しているのは Subversion のみです。show full file をチェックすると diff だけでなく working copy の状態をそのまま表示することもできます。

セットアップ&実行

Rails 2 + svn HEAD で動かしました。

DBMS の migration 不要でいきなり動きました。とは言え adapter の設定はちゃんとしておかないとダメでしたが。

ドキュメントがちょっと違ってて

lib/settings.yml

は存在しなくて

config/settings.yml

でした。サンプルとして

project_root: /home/$USER/projects

が入っていますが、これだと実行ユーザーのホームディレクトリ以下に working copy が限定されます。しかし例えば開発者がサーバを共有している場合は

project_root: /var/src

なんて風にしても ok です。ただし、この

/var/src

以下に .svn を含むディレクトリがないと何もディレクトリがリストアップされないのでちょっと焦ります。これは svn が

svn: '.' is not a working copy

と言っている状態で、その下の階層を調べることはできません。しかし URI に

http://REVIEWMONK_TOP/codereview/stat/PATH/TO/WORKINGCOPY

と、project_root 以下の階層を直接打ってやると表示できます。

また、リスト表示の状態で

  • diff
  • recursive

がチェックでき、両方にチェックするとコマンドラインで

svn diff

と打った状態がブラウザに表示されます。デフォルトは

svn stat -N

でファイルのリストだけを表示し、diff の見たいファイルを選んで表示する、というスタイルです。

感想

他人の working copy の状態をお手軽にレビューするには向いているような気がします。少なくとも working copy のパスに URI が付くのは単純に便利です。

もちろん文字コードの問題はあるし、レビューとは言っても何かしら記録を残すことは今のところできません。ということはこのツールだけではレビューをワークフローとして取り入れることは難しいです。

以前、Trac の PeerReviewPlugin を試しました。これはこれでよくできていた*1のですが、試した時点では

  • Review の feed を取れない
  • Wiki から source browser へのリンクなどがおかしくなる

など、常用するにはつらい問題を抱えていたので採用は見送ったままの状態になっています。今なら問題が解決してるのかなぁ? あんまりちゃんと情報を追いかけてないんですよね。

また入れ直してみるか、また何か別なツールを試すか…。

Tags: Ruby Rails

*1 コミットしたものをレビュー対象にするので今回のツールとは考え方が違います。


2008-11-20 [長年日記]

_ perldoc で日本語出したければ UTF-8 で

結論から言うと

日本語で書いた pod を perldoc で表示したい場合は UTF-8 で書け

ということらしい。

pod2man までは化けずに処理されるんだけど、man 風の仕上げに使う nroff*1 も groff も今のところ ascii, latin1, utf8, cp1047 しか対応してないらしく、euc-jp で書いた pod は化け化けで話にならない。

perldoc -t
pod2text

などで取り出すだけに止めておくのが吉。ちなみに、pdoc は独自に処理しているので大丈夫。#coderepos@freenode で質問したら CPAN で出ればいいし、pod で日本語なんか書かねぇよと言われてしまった。まーcoderepos 怖いそんなもんですね。

昔 euc-jp で perldoc で日本語出てたような気がするんだけど、何かが変わったんでしょうなぁ。もうシステムの標準も UTF-8 だし、Perl も 5.8 で encoding 周り変わったし。

Tags: Perl

*1 *BSDでは groff による emulate

_ リモートの機械から growl

リモートの機械でちょっと時間の掛かる作業をやらせた場合、それの終了に気付かずに放置になってしまうことがよくある。そういう作業をいくつかやらせようと思うと、ちょっと時間が経ったら終了の確認をして、のくり返しがとにかく邪魔くさいなぁと思っていたんだけど、

remote の機械から growl に通知させられたら便利じゃね?

と思いついた。

これまで Growl はインストールしていただけでほとんど使っていなかったんだけど、開発時のテスト結果の通知に使っている人を見かけたりしていて、かっこいいなぁと思ってはいた。

でも Growl そのものは Un*x サーバにはインストールできない。どうしようかと思ったけど、そういえば Ruby 用のライブラリとかあったなぁと思い出して調べ始めた。notify 用の起動可能なコマンドがあるのがいいなと思って調べたらどうもこれがよい感じ。

RubyForge: ruby-growl: Project Info

インストールすると growl コマンドが入る。そこで

echo "hoge" | growl -H HOSTNAME
growl -H HOSTNAME -m MESSAGE

みたいな感じで remote host にメッセージを送信することができる。ただし Growl 側に network 経由の notify を listen するように設定する必要がある。

うんうん。こりゃ便利だ。

cf. Twitter / wtnabe: @takano32 sudo gem install ...


2008-11-21 [長年日記]

_ 久しぶりに ftp 叩いた

ftp なんて前世紀の protocol を仕事で使うことになろうとは。というか ftp をサーバ間の転送に使ったことってほとんどなく、コマンドラインでの ftp もちょっと get に使ったくらいしかやったことないんだよな。

ちょっと込み入った作業が必要だったんでなんかいいクライアント使った方がいいかなと思ったけど、予備知識もほとんどないので、とりあえず

rlwrap ftp

で乗り切った。

lcd

は知ってたけどあとは知らなかったので調べてみた。

!

で shell command を呼び出せるのか。それで lcd はあるけど lpwd とか lls がないのね。!pwd や !ls でいいわけだ。

その後とりあえず lftp を入れてみた。補完もできるし、使いやすそう。とりあえずこの二つだけ知ってればなんとかなるか。

まぁ、次に ftp なんていつ触るか分からないけど。

Tags: Net

_ 久しぶりに FDclone を野良 build

ドキュメントを順番に読んでいくとつい machine.h を開いたり make config を叩いたりしてしまうが、Linux では簡単な話で

  1. curses library を用意して
  2. make

で ok っぽい。

えらい遠回りしてしまった。

sudo cp _fdrc  /etc/fd2rc
cp _fdrc ~/.fd2rc

もしておくとよい。

FD 3.0 なのに fd2rc とはこれ如何に。

Tags: Linux

_ growl の sticky

昨日から Growl の便利さが分かってきたので、今まで使っていなかった limechat の highlight メッセージの通知にも使うようにしてみた。すると

画面に残るメッセージと残らないメッセージがあることに気がついた

sticky メッセージは画面に表示されっぱなしだけど、sticky でないメッセージはちょっと経つと自然に消える。

職場で動かしている limechat のメッセージが画面に出っぱなしなのはちょっとアレかなと思って sticky の設定を外した。こうして見ると Growl ってものすごいたくさん設定あるな。

同時に、昨日見つけた ruby-growl からのメッセージは -s オプション付きで送るようにしてみた。うんうん。ますます便利。

Tags: Growl

2008-11-22 [長年日記]

_ GIMP 2.6@Mac で日本語 font

PPC Mac に試しに最新の GIMP 2.6.2 を入れてみたときに

Twitter / wtnabe: ぐお。PPC Mac で動く最新の GIMP はあっ ...

てなことを言って、このときは PPC Mac の問題かなーと思っていたけど、今日 Intel Mac にも入れてみたらやっぱメニューの文字が出なかった。フォントの問題かなとなんとなく想像はついたので探したところドンピシャの情報が見つかった。

な!自転車でやせる >> Gimp 2.6.1 ファイル名の日本語表示 - MacOSX Tiger -(1101)

試しに

font_name = 'Monaco 10'

みたいに書いてみたけど、やっぱりメニューは出なかった。他のアプリみたいにフォントの補完とかはしてくれないらしい。

_ LDRize 導入

LDRize for Greasemonkey

ひと月ほど前から AutoPagerize を使ったり使わなかったりしてるんだけど、今日は LDRize を入れてみた。これいいな。

Minibuffer が必要

で、

silog - script/LDRize

によると

Minibuffer, AutoPagerize(またはPagerization), LDRize の順に並ぶようにしてください。

ということでした。何も起きなくてしばらく悩んだ。

これで j, k, p, o だけで目的のリンクをタブに開くことができる。すげぇ。


2008-11-24 [長年日記]

_ OmniGraffle でグリッドを有効にしたテンプレートを作成

グリッドを表示する

OmniGraffle はワタシが最も気に入っているドローツールなんだけど、

  • デフォルトでグリッド線が表示されていない
  • グリッドにスナップする設定になっていない

のがちょっと物足りない。

手早くそれなりに見栄えのするダイアグラムを描こうとする場合、まず適切なグリッドが大事だと思う。幸い OmniGraffle のグリッドは特に設定し直す必要はなく、有効にするだけで十分使いものになる。

ただ表示設定の変更を毎回しなくちゃいけないと面倒くさい。OmniGraffle の場合、この辺りの初期設定はアプリケーションレベルではなく新規ダイアログ作成時に選ぶテンプレートに保存される。したがって、まず

  1. あちこちの設定を好きなように変更
  2. これを [ ファイル ] → [ 書き出し ] で「OmniGraffle テンプレート」を選んで保存
  3. 保存したテンプレートファイルを以下のフォルダに保存
~/
`-- Library/
    `-- Application Support/
        `-- OmniGraffle/
            |-- Scripts/
            |-- Stencils/
->          `-- Templates/
                `-- TEMPLATE_NAME.gtemplate

するとこのテンプレートが利用できるようになる。

テンプレートセレクタでデフォルトに

また、テンプレートを選ぶ際に [ デフォルトとして設定 ] をクリックすると cmd + N で常にそのテンプレートでダイアログを作り始めることができる。

うん、これこれ。やっと手に馴染んできた*1

*1 以前 3 Pro のときもこれやってたんだけど、方法を書き留めてなかったので、5 になってからデフォルトのままになっていて不便だった。

_ Merb が意外に環境を選ぶ

最近評判のいい Merb にちょっと興味が湧いてきたんだけど、

  • RubyGems 1.3.0 以降
  • hoe 1.8.0 以降
  • Ruby 1.8.6 以降(この情報は本家で見つけられなかった)

など、結構新しめの環境を要求する。

特に問題になりやすいのは Ruby 1.8.6 以降で、この段階で CentOS 5 や Debian etch など、stable なサーバとして採用されていそうな環境では標準のパッケージで動かすことができない。

Debian lenny は 1.8.7 なので Ubuntu 8.04 LTS でもいいんだよな。もう Debian 系は素の Debian やめて Ubuntu LTS にしようかな。Ubuntu LTS の方がリリースも信用できそうだしなぁ。

Tags: Ruby

_ VirtualBox の NAT の設定

VirtualBox のネットワークの設定は NAT がデフォルトである。NAT ということは Guest から外に出て行く分にはいいけど、外から Guest に ssh などで接続しようとしたときに Host OS の port と Guest OS の port を map する必要がある。

で、その方法をヘルプより抜粋。

You can set up a guest service which you wish to proxy using the command line tool VBoxManage. You will need to know which ports on the guest the service uses and to decide which ports to use on the host (often but not always you will want to use the same ports on the guest and on the host). You can use any ports on the host which are not already in use by a service. An example of how to set up incoming NAT connections to a ssh server on the guest requires the following three commands:

VBoxManage setextradata "Linux Guest"
  "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP
VBoxManage setextradata "Linux Guest"
  "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort" 22
VBoxManage setextradata "Linux Guest"
  "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort" 2222

※ Windows 版にもこのコマンドは存在する。

実はこの設定について GUI からは方法がないのは以前から知っていたんだけど、調べるのが面倒で Q.app と VirtualBox をいったりきたりしていた。でももうこれで Q.app をやめることができそうだ。

本当は extradata でこんな長い文字を打たせなくてもいいように network の設定をうまく抽象化してほしいなぁとは思うところだけど、それは今後に期待ということにしよう。

Tags: VirtualBox

2008-11-25 [長年日記]

_ Ruby で iCal データをマージする

興味はありつつなかなか勉強の進まない iCal. とりあえず簡単そうなところで複数のカレンダーを一つにまとめようと考えた。調べてみると、

  1. 一つのカレンダーは BEGIN:VCALENDAR から END:VCALENDAR まで
  2. RFC 2445 的にはこれを複数並べるのは可能っぽい
  3. てことは実は cat するだけで ok ?

cat したファイルを読み込ませた結果は、

Sunbird も Apple製iCal も最初のカレンダーしか認識できなかった。

うーむ、そういうことか。やっぱ一つ一つのイベントを一つのカレンダー上に作成していかないとダメか。ということで書いてみたのは以下のコード*1

引数を与えなければオプションの与え方が表示されるので、それ見てなんとなく想像して使うよろし。

Usage: icat [options] ICS_FILES
    -l, --list-from-file FILE

基本的に cat として使えるようにした。当然パイプから受け取ることはできないけど。

url の解釈には open_uri を使っているので http か ftp, あるいはファイルのパスを与えることができる。

書いてみて思ったけど、Ruby の Icalendar ライブラリも Vpim::Icalender も複数のカレンダーを認識できるっぽい。少なくとも Icalendar.parse() の結果は複数のカレンダーが含まれる形になっている。*2ということはやっぱ仕様的には複数カレンダーを一つの .ics に含むのは ok なんだよね? 単に GUI アプリに対応しているのが少ないってことなのかな。

[2008-11-26 追記]

最初 Icalendar 1.0.2 を利用して動かしたら to_ical で folding の際にマルチバイト文字が壊れてしまったので Vpim::Icalendar 1.1 に差し替えました*3。文字化けは解消しましたが、なんか fold してないだけのような気も…。中は読んでいないので確証はないですけど、これはこれで相互運用性に問題あるなぁ。

ところで gist を使うと貼付けたコードも履歴を取れるのがよいですね。いつか github.com がサービス停止したらコードが返ってこないという危険性はありますが。

[2008-12-03 追記]

スクリプトと同じ場所にある特定の名前の YAML からしか設定を与えられないとかアホかっちゅー仕様だったので、オプションの与え方を大幅に変えました。

[2008-12-04 追記]

さらに ics ファイルの与え方を変更。

icat *.ics > dest

ってできた方が便利なのでそうした。

Tags: Ruby iCal

*1 初めて gist から貼ってみるよ!

*2 実際には一つしか入っていない場合がほとんどなので parse().first で問題ないけど。

*3 RFC によると 75 octets より長かったら fold すべしと書いてある。伝統的なメールベースでの転送も考えてあるってことかな。


2008-11-27 [長年日記]

_ 目薬を差し忘れないように Growl で通知

※ 「点す」って表記があるのか。知らなかった。

ドライアイだと思っていて、ドライアイ用の目薬は用意してあるんだけど、どうもいつも差し忘れてしまう。そこで先日から使い始めた Growl を利用して自分の集中状態を邪魔するようにしてみた。と言っても

48 * * * * /usr/local/bin/growlnotify -s -m '休憩しる? 目薬さす? それとも s h u t d o w n ?'

を crontab に仕込んだだけ。結構いい感じに集中を切ってくれる。

Windows でも Un*x でも似たようなことはすぐできそうなので、これは一つのテクニックとして覚えておいて損はないな。。

Tags: Growl

2008-11-28 [長年日記]

_ Tortoise系の分散バージョン管理は今のところ TortoiseHG か

コマンドラインや開発ツールに縁のない人にバージョン管理の便利さを味わってもらおうと、Windows の GUI で使える分散バージョン管理ツールを調べてみた。今のところ選択肢としては以下のものがありそう。

ツール 対応するオリジナル
TortoiseHG Mercurial
MsysGit Git
TortoiseBzr Bazzar

それぞれ試したみたけど、

  • MsysGit は全然安定感ないし、GUI が独特すぎる
  • TortoiseBzr に至っては GUI でリポジトリを init することもできない

ということで自動的に TortoiseHG 一択の様子。TortoiseSVN と比較するとまだまだな感じは否めないが、バージョンも若いし、これからだろう。

余談だけど、これを調べている過程で知ったのは Bazaar が以前は C で書かれていたこと。Bazaar NG として Python で書き直されたのが現在の Bazaar らしい。まったく知らんかった。というか Bazaar 自体試してみたことすらないんだけど。

Tags: Mercurial Git

2008-11-29 [長年日記]

_ AutoPagerize の SITEINFO と user script の書き方が分かってきた

AutoPagerize はものすごく便利な Firefox extension だとは思うんだけど、イマイチこれまで全肯定しきれなかったのは

対応してるサイトと対応してないサイトがある

からだった。まぁ当然ちゃ当然だけど、いくら便利便利言われても自分の見るサイトが対応してなかったらイマイチ感は拭えないよね。

以前は SITEINFO などの用語の意味がよく分からず手を出さずにいたんだけど、先月 Wedata についてだいたい理解できた以降くらいから、いざとなったら自分で書けばいいやと思っていた。で、実際書いたのはコレ。

アイテム: iタウンページ (Lite) - データベース: AutoPagerize - wedata

すいません、地味で。

以下はこのとき気付いたこと。

  • SITEINFO はいきなり Wedata にアップしなくてもよい。ローカルの user script の中にそのまま書く場所がある
  • これを書き換えたらそのままページを reload するだけでだいたい検証可能
  • ぐりもん書くときは Firefox 標準のエラーコンソールを開いておこう
    • console.log() ってやるとそっちに出力される
  • XPath で一気に取得できる DOM node は同じ context の中だけ
    • CSS のセレクタとは違います
    • (どうしても異なる context の node を一気に取りたければ、同じ context の段階で絞って、そこからうまいこと下りてこないといけない)
  • pageElement で取得する node は複数あってもよい
  • nextLink で取得する node も複数あってもよい。この場合は getNextURL() の中で getFirstElementByXPath() を使って問答無用で最初のリンクが採用される

こんなところかなぁ。AutoPagerize 面白い。みんなも OpenID をどっかで適当に用意してバンバン SITEINFO 書くといいと思うよ!

Tags: Firefox