2008-11-04 [長年日記]
_ FriendFeed の widget を貼ってみた
以前
Twitter / wtnabe: friendfeed を blog パーツ化できれば ...
なんてことを言っていたんだけど、普通にできてた。いつできたのかは知らないけど。ということで
辺りから widget を作って貼っ付けると便利だと思うよ。Sign in していれば自動的に自分の feed の widget が作れる。これまでは Twitter Updates を貼ってたんだけど、代わりに FriendFeed widget にしてみた。これなら delicious での活動も github での活動もまとめて貼れる。
tDiary に貼る場合はユーザー定義 CSS のあとに widget がくるので、!important 付けまくってやらないとスタイルの調整ができないところだけ注意。あ、あとなんかこの widget は幅を px で決め打ちしたがってるけど、そこは width パラメータを削除してやれば大丈夫。普通に馴染む。
色以外は。
ロゴの色にバリエーションがあれば嬉しかったなー。うちは暖色系なので、青系の FriendFeed のロゴがどうにも合わない。仕方ないのでロゴは CSS で display: none してしまった(乱暴)。
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 + 共有ポイントブラウザ
*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 はちょっと文化圏違う感じ。どうなるんでしょ。盛り上がるといいですね。
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 を新しいものに入れ替えたけどやっぱり出ない。なんだこりゃ。動くのに使えない。うーむ。
*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 変更の嵐に見舞われることがなくなった。
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 してみたら問題なくイケた。
そうかそういうことなのか。
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 の頃からあったらしい。なんと情けない。
*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

あと
My DebugBar | CompanionJS / HomePage
Companion.JS を入れた。Firebug 並みとは言わないまでもエラーの表示も分かりやすくなった。該当箇所をハイライトしてくれるだけでも標準の状態からは雲泥の差。
あと Firebug みたいな要領で console に log を落とせるので便利。のはずなんだけど、0.2 からのアップデートで 0.4 を入れたせいか、console に log が出ないT^T もうこんなんばっか。あれこれ試してるうちに
options の Show "Console[i]=" line のチェックを外したら動いた。
これで 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 へのリンクなどがおかしくなる
など、常用するにはつらい問題を抱えていたので採用は見送ったままの状態になっています。今なら問題が解決してるのかなぁ? あんまりちゃんと情報を追いかけてないんですよね。
また入れ直してみるか、また何か別なツールを試すか…。
*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 周り変わったし。
*1 *BSDでは groff による emulate
2008-11-21 [長年日記]
_ 久しぶりに ftp 叩いた
ftp なんて前世紀の protocol を仕事で使うことになろうとは。というか ftp をサーバ間の転送に使ったことってほとんどなく、コマンドラインでの ftp もちょっと get に使ったくらいしかやったことないんだよな。
ちょっと込み入った作業が必要だったんでなんかいいクライアント使った方がいいかなと思ったけど、予備知識もほとんどないので、とりあえず
rlwrap ftp
で乗り切った。
lcd
は知ってたけどあとは知らなかったので調べてみた。
!
で shell command を呼び出せるのか。それで lcd はあるけど lpwd とか lls がないのね。!pwd や !ls でいいわけだ。
その後とりあえず lftp を入れてみた。補完もできるし、使いやすそう。とりあえずこの二つだけ知ってればなんとかなるか。
まぁ、次に ftp なんていつ触るか分からないけど。
_ 久しぶりに FDclone を野良 build
ドキュメントを順番に読んでいくとつい machine.h を開いたり make config を叩いたりしてしまうが、Linux では簡単な話で
- curses library を用意して
- make
で ok っぽい。
えらい遠回りしてしまった。
sudo cp _fdrc /etc/fd2rc cp _fdrc ~/.fd2rc
もしておくとよい。
FD 3.0 なのに fd2rc とはこれ如何に。
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 導入
ひと月ほど前から AutoPagerize を使ったり使わなかったりしてるんだけど、今日は LDRize を入れてみた。これいいな。
Minibuffer が必要
で、
によると
Minibuffer, AutoPagerize(またはPagerization), LDRize の順に並ぶようにしてください。
ということでした。何も起きなくてしばらく悩んだ。
これで j, k, p, o だけで目的のリンクをタブに開くことができる。すげぇ。
2008-11-24 [長年日記]
_ OmniGraffle でグリッドを有効にしたテンプレートを作成

OmniGraffle はワタシが最も気に入っているドローツールなんだけど、
- デフォルトでグリッド線が表示されていない
- グリッドにスナップする設定になっていない
のがちょっと物足りない。
手早くそれなりに見栄えのするダイアグラムを描こうとする場合、まず適切なグリッドが大事だと思う。幸い OmniGraffle のグリッドは特に設定し直す必要はなく、有効にするだけで十分使いものになる。
ただ表示設定の変更を毎回しなくちゃいけないと面倒くさい。OmniGraffle の場合、この辺りの初期設定はアプリケーションレベルではなく新規ダイアログ作成時に選ぶテンプレートに保存される。したがって、まず
- あちこちの設定を好きなように変更
- これを [ ファイル ] → [ 書き出し ] で「OmniGraffle テンプレート」を選んで保存
- 保存したテンプレートファイルを以下のフォルダに保存
~/
`-- Library/
`-- Application Support/
`-- OmniGraffle/
|-- Scripts/
|-- Stencils/
-> `-- Templates/
`-- TEMPLATE_NAME.gtemplate
するとこのテンプレートが利用できるようになる。

また、テンプレートを選ぶ際に [ デフォルトとして設定 ] をクリックすると cmd + N で常にそのテンプレートでダイアログを作り始めることができる。
うん、これこれ。やっと手に馴染んできた*1。
*1 以前 3 Pro のときもこれやってたんだけど、方法を書き留めてなかったので、5 になってからデフォルトのままになっていて不便だった。
2008-11-25 [長年日記]
_ Ruby で iCal データをマージする
興味はありつつなかなか勉強の進まない iCal. とりあえず簡単そうなところで複数のカレンダーを一つにまとめようと考えた。調べてみると、
- 一つのカレンダーは BEGIN:VCALENDAR から END:VCALENDAR まで
- RFC 2445 的にはこれを複数並べるのは可能っぽい
- てことは実は 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 に差し替えました。文字化けは解消しましたが、なんか fold してないだけのような気も…。中は読んでいないので確証はないですけど、これはこれで相互運用性に問題あるなぁ。
ところで gist を使うと貼付けたコードも履歴を取れるのがよいですね。いつか github.com がサービス停止したらコードが返ってこないという危険性はありますが。
[2008-12-03 追記]
スクリプトと同じ場所にある特定の名前の YAML からしか設定を与えられないとかアホかっちゅー仕様だったので、オプションの与え方を大幅に変えました。
[2008-12-04 追記]
さらに ics ファイルの与え方を変更。
icat *.ics > dest
ってできた方が便利なのでそうした。