2008年 06月 20日

ここ数日ふとんで寝ずに床に寝たりしてる。割とこっちのほうが寝心地が悪いので起きやすい気がする。

freenode のアカウントのメタデータ

何かに使えるかもなー

# 現在ログイン中のアカウントにメタデータ追加
/msg NickServ@fn set property <name> <value>

# nick で指定したユーザのメタデータを取得
/msg NickServ@fn taxonomy <nick>

例えば OpenID の claimed_id を登録させるようにして、IRC ログの自動認証とかかなぁ。

  1. (ユーザ) /msg NickServ@fn set property OpenID http://www.lowreal.net/ しておく
  2. (ユーザ) IRC ログのページで nick を宣言する。
  3. (サーバ) taxonomy で、宣言された nick の OpenID claimed_id を取得する
  4. (サーバ/ユーザ) ユーザをその OpenID の URL 使って認証させる (普通に OpenID Auth)
  5. (サーバ) 認証できれば、そのユーザが現在 JOIN しているチャンネルのログが見れる

こんなことするほど IRC log は重要じゃないけど、ほかになんか面白いことできないかなぁ

2008年 06月 18日

完璧に負け癖がついてる。どうすればいいんだ

なんかなー、けっきょく「今まで一回も負けたことがないのから何やるにしても自信満々ですよ」っていう人が生きのこるわけで、じゃあもう負けっぱな感じになると、抜け道がないのだよなぁ。もうこれ、ホントに運でしかない。しかもそういう運を持っている人が、もっと頑張れよ!!!とかいうからなー おわってんなー おわってんなー

これでギリギリのところでフォールバックする状態があればいいけど、残念ながら世の中的にそんなものは存在しやがらないので、逃げだそう!と、思いたったその瞬間には死が待っていて、なので「にげだしたい」の同意語として「しにたい」が使われてしまうのだなと思った。でもって、死んでもいいじゃん、ってのは、「死にたくない」を無視して逃げ道を強制的に作っておくっていう

rescue がないと、スタックのさらの上の rescue まで例外が飛ぶんですよ。「え、そんなことで、そこまでしちゃうの」ってのは rescue 書いてないからだよ。フォールバックの仕組みを各レイヤーにつくろうよ。

自分の中で、やることにストッパがかかってる感じだなぁ。頭で、おれは、これやろう、って思っているのに、手が動かないっていう、なんか、システムにロックがかかってる感じ、違う誰かに操られている感じ。そのせいで怒られる。殺される。

  • 刺身タンポポを瞬殺 + 個人研究
  • 共同研究

だと、前者のほうが気が楽なのかもなと思った。そんなうまいこといかないよ。あれかーそもそも考えかたが間違っていたのかもなぁ……

帰宅してからなんもしてないでもうこんな時間かー 電車乗ってる時間がもったいないなぁ。でも電車の中ってなんも集中できないし、周りの人間はみんなクソだし、臭いし、怖いし、

Tree Style Tab + Mac OS X

Firefox3 がリリースされましたね! Mac OS X 版ではテーマが Safari 系になったりして結構変わっています。 (プロトタイプ段階では Proto という名前のテーマでした)

でもってリリース (と、Tree Style Tab の最近の変更?) でちょっと変わったりしているっぽいので Tree Style Tab (縦置き) の見た目をそれに合せる userstyle を更新しました。

http://userstyles.org/styles/4677

2008年 06月 17日

http://flickr.com/photos/cho45/2580068461/#comment72157605624965558 こういうコメントは本当にうれしいなぁ。

zsh の exntended_glob と HEAD^^^ を共存させる。

extended_glob すると ^ が特殊文字になって HEAD^^^ とかできなくなって UZEEE のでやってみた。

typeset -A abbreviations
abbreviations=(
	"L"    "| $PAGER"
	"G"    "| grep"

	"HEAD^"     "HEAD\\^"
	"HEAD^^"    "HEAD\\^\\^"
	"HEAD^^^"   "HEAD\\^\\^\\^"
	"HEAD^^^^"  "HEAD\\^\\^\\^\\^\\^"
	"HEAD^^^^^" "HEAD\\^\\^\\^\\^\\^"
)

magic-abbrev-expand () {
	local MATCH
	LBUFFER=${LBUFFER%%(#m)[-_a-zA-Z0-9^]#}
	LBUFFER+=${abbreviations[$MATCH]:-$MATCH}
}

magic-abbrev-expand-and-insert () {
	magic-abbrev-expand
	zle self-insert
}

magic-abbrev-expand-and-accept () {
	magic-abbrev-expand
	zle accept-line
}

no-magic-abbrev-expand () {
	LBUFFER+=' '
}

zle -N magic-abbrev-expand
zle -N magic-abbrev-expand-and-insert
zle -N magic-abbrev-expand-and-accept
zle -N no-magic-abbrev-expand
bindkey "\r"  magic-abbrev-expand-and-accept # M-x RET はできなくなる
bindkey "^J"  accept-line # no magic
bindkey " "   magic-abbrev-expand-and-insert
bindkey "."   magic-abbrev-expand-and-insert
bindkey "^x " no-magic-abbrev-expand

こうすると

git reset HEAD^ # までうって RET をおすと
git reset HEAD\^ # に展開されて実行される

git di HEAD^^^..HEAD^ # とうつと、
git di HEAD\^\^\^.
git di HEAD\^\^\^..HEAD\^ # と展開されていく

git は引数に割とファイルとったりするので glob の機能自体は残しておきたいわけです!