2006年 10月 01日

やばい JS 書くのが面倒くさい。

かけない

こう、だんだん書きたいことが書けなくなっていくなぁ、と感じる。それが何を原因にしているかとかも分かっているけれど、書けなくなってしまっていく。余計なことを言う人や、全くレイヤーの違う人との関係性とか、そういうの。

ツールが簡単であればいくらでも書けるはずだと思ってたけど、そうもいかないみたいだ。やっと書けてこれか。他の方法を探すしかない。今まで甘かっただけだ。

comet

一応リアルタイムで IRC ログが見れるようにはなった。
Firebug のコンソール開いてると面白いなぁ。

発言側のロジックも書いたけど、問題はインターフェイスだよなぁ。複数のチャンネル (chokan 側で配信を許可したもののみ) の切り替えとか。めんどい。

u-n

thread.rb の Queue を使うと結構スマートな感じにはなるけど、IRC のログをとるデーモンと、それを配信する httpd が一緒になってないといけないのがなぁ。
あでも httpd 側を drb で分離とかできるか。CGI が drb で chokan に接続して、Queue#pop すればいいのか。あれれ

あとは JS 側でどうするかのみかなぁ。だいたい。タイムアウトしてエラーになったら何秒か待ってとりにいくとかの待ち時間を指数的にしとくとかして負荷減らす作戦とかうんぬん

ht

httpd が cgi プロセスを殺しちゃうと Queue を pop するスレッドがおかしくなるなぁ。drb で接続してプロセス分離したらうまくいくだろうか

2006年 10月 02日

暗闇にヤギを探して

暗闇にヤギを探して を読んだ。

moe と imifumeism を合わせたような。春樹を意識しているような。s/ヤギ/羊/g・井戸・猫・向こう側、とか、そういう系だしなぁ。夢が混ざってるし、ある意味ファンタジー?

ちょっと前半3分の1ぐらいがラノベにしてはリズムがちょっと悪くて読みにくかった (姉の物語的な存在意義がわかりません)。けど普通に面白かったといえば面白かった。

とかそういうのはどうでもよくて、ただ「洗濯機が変な音してるの」でちょっと期待したんだ。それはハズれて、別に普通に洗濯機が壊れた話だった。でも、2ページぐらい洗濯機がどうこうの話でドキドキした。これだけで十分な本だと思った。

関係ないけど生きてることと死ぬことに意味はないけど、自殺には意味がある派です。見方がちょっと違うから言葉遊びみたいだ。


もっと関係ないけど、 「食欲あるくせに 食べるのが好きじゃないなんて 矛盾しているよなあ」 が分かった。今まであんまり気にしてなくて、そのままの意味だと思ってたけど、なるほどなぁと。

2006年 10月 01日

DRb 経由で Queue を pop しようとすると dead lock 扱いになっちゃうなぁ。CGI のスレッド以外のスレッドがローカルにないせいかな。
からなず向こう側(謎)で pop すればいいみたいだ。

iTunes の共有を特定のやつだけ表示したいなぁ。某ネットワークに繋いだときどうでもいいのがいっぱいならぶのがちょっと気になる。

2006年 10月 02日

Mac

なんかソフトウェアアップデートしたら激重くなった。アクティビティモニタ見ても特に CPU もメモリも食ってないのに、スワップしてる感じ。
あと CPU 食ってないときでも 1.83GHz マックスなことが多くなった。なんでだろう。

kernel_task がやけにハリきってるみたいだけどなんなんだろう

見てると、メモリを一気に使ったり解放したりを繰り返すような挙動をしてる。そのせいで他のがスワップアウトしてるような。なんでそういう状況なのかはわかんないけど、アップデートしてシステムのなんかのデータベースをアップデートしてるんだろうか

IRC

日本語のチャンネル名どうしよう。チャンネル名は UTF-8 に統一するか

Queue + XHR

リロードしちゃうと、リロード前の XHR のリクエストが一番最初の発言を pop して握りつぶしちゃう、ので、発言が飛んでしまうことがある。うーん。
ロード時はちょっと多めに送って、タイムスタンプをクライアント側で比べてユニークにするとかが必要かなぁ。

drb

そういえば DRb って一つのプロセスで複数のサービスってできるんだろか。URI 違えばいいのかな。

うーん

やっぱリクエストがタイムアウトしたりすると、Queue を pop するスレッドが残ってしまって、発言が飛んでしまったりする。解決するには直近ログを常に保持して、リクエストが失敗したときはマージするようにするとかやらないといけない。いろいろ変えないとだめだなぁ。

2006年 10月 03日

g

gems って標準添付されないのかなぁ。標準添付されないんじゃ gems をインストールするっていうのが面倒くさくてアレ……

gerry++

一時限目の先生が遅刻厳しすぎ。出席カード配られるまで腹痛の我慢に必死

reload

reload するたびに Queue の待ちスレッドがたまってしまってだめだな。待ちスレッド + 1 回 push してあげればいいだろうか。でもタイミング次第でアレそう。クライアントがロードされたっていうリクエストしてきたら Queue を作り直す方がいいっぽいなぁ。

num_wait が 0 以下になるまで削除することにした。しかし Queue の待ち先がさらに待ちをつくると無限ループになる危険性がある

2006年 10月 04日

腹じゃなくて

腰が壮絶に痛い。これ大丈夫なんかな……

iTunes

共有のほうのレイアウトが保存されないのがアレだなぁ。常時上のブラウザ?を表示しておきたい。

downy

なぜか downy 聞きながらだとコードとかが普通より書ける。

ruby -pi -e '$_.sub!()'

今日おぼえた。sed こわい (正規表現の文法が違うのが) から、ruby とか perl つかう!
-i は出力をとってるので -n では $_.sub! だけだとだめ。逆に -n を使うなら puts なり print なりしてあげる。というのがポイントらしい! 今日もとぴあ様の助言がありました。

Apple Star StoryS (Most beautiful in the world)

最後のSってなんだろう。

Good Dog Happy Men の Most beautiful in the world (全国流通版) をどうしても聴きたかったので買ってしまった。なぜか無駄に DVD サイズ。ハイライン版は持っていたので、一曲のために 1500 円はどうかと思ったけど後悔はしてない。Apple star story かっこいい。めちゃくちゃいい。

すっごいライブいきたくなった。まじで魔法


あと店頭で KOHL の「アンブレラ」のジャケットが好みだったので衝動買いした。KOHL あんまり知らないんだけど


ああ、そうだ。これ、TOWER RECORD で買ったんだけど、タワレコってナプスターと組んでるんだね。変なネコミミが店先に立っててなんのコスプレだろうと目を疑った。

ナプスターのキャラクターって fb2k のアイコンに似てる。

bdb わかんない

 ~/plagger
$ irb -rbdb                                                                                                                                                 
irb(main):001:0> a = BDB::Hash.open("irc.db")
BDB::Fatal: irc.db: unsupported hash version: 8 -- Invalid argument
2006年 10月 05日

OS X やたらスワップ

hamachi のせいっぽい。終了したらよくなった予感。と思いきや違うようだ?
アクティビティモニタで見てても別に変化してるように見えない。けど黄色の部分がずんずん増えていってあるときいっかつして開放されるっていうのが繰り返されるなぁ。

bdb

sudo apt-get install libdb4.2-ruby1.8

で読めるようになった。4.3 だとなぜかヘッダファイルとバージョンが違うと言われて起動できない。3 だと version8 は読めないとかいう謎のエラーになる。

自分自身をバージョン管理

少し前にちょっと書いた話の続き?

頭で考えている自分の意見とかって、少しずつ変わっていくものだから、バージョン管理したいなぁと思う。日記みたいに一次元でずっと書いていく形だと、意見が変わっときは「意見がここで変わりました」という日記を書かないといけない。いつ自分がそれについて言及したかを覚えていないと、だんだん日記全体の統一性が失われてしまう。「あれ? ちょっと前のこの話と矛盾してね?」みたいなのがでてきてしまう。

そんで今度は「前こういったから、今こう言うのはいけない気がする」とかなって考えが固着していく。よくない。

バージョン管理システムで自分の意見にバージョンをつけながら、更新していったら、そういうのが解決するかもしれない。「この時点の自分は確かにそう考えていたけど、今の自分とは違う」というのが明確になる気がする。バージョンごとに自分が輪切りになっていくイメージ。

でも実際やろうと思うといい運用方法がうかばない。ファイル名は何になるのか。どのタイミングでコミットするのか。意見って明確に分けられるものではないから、いくつかのファイルに意見が分散してしまう。ファイルの名前は何になるんだろうとか。

なんかいい方法ないかなぁ。

2006年 10月 06日

学校の先生って

学校の先生ってなんであんな偉そうなんだろ。確かに偉いのはわかるけどさ、なんか雰囲気おかしい気がする。よくわかんないけど。なんかだんだん耐えられなくなってくる。「単位とらないといけない」感もすごく嫌だ。


UNIX オペレーティングシステムとかいう講義をあきらめることにする。どうしても評価方法とか、先生の挙動が受け付けない。


ネットワークプロトコルという講義もあきらめたいけど、こっちは確か必須なのであきらめられない。まさに「単位とらなきゃいけない」というアレ。

なんかコンピュータの扱いに学生よりも慣れていない人のように見える。環境がいつもと違うんだろうか。それにしてもビデオ再生ぐらいで何分も悩んだりしないと思うんだけど……


学校のいろんなところが気に入らない。低レベルなところだと外歩いてるとどこでもタバコ臭いとか (タバコ吸ってる俺ってばちょいワルでかっこよくね臭がするよ><) も。

学校っていう場は嫌いじゃないんだけど、中で動いてるものが気持ち悪い。


もっと余裕も持てたらいいんだけどなぁ。「お前必死だなっっw」とか言われてもその通りですとしか言いようがありません。

2006年 10月 09日

iTunes のソート

なんか the を無視するらしくてハマった。いくら探しても the pillows がありません>< みたいな。mt-daap の挙動がおかしいのかと思って再起動させたり、5分ぐらいやった。

FoxyProxy

すっごい使いにくいなぁ。でも複数のプロキシ切り替えられる拡張ないんだよなぁ。
ステータスバーのアイコンを左クリックで設定開くとかやめてほしい。Cmd-W で閉じないし (C-W で閉じる)

2006年 10月 10日

シンプル

もっとシンプルにならないといけない。くだらないことが多すぎて、本質 (曖昧な言葉だけれど) が見えなくなってはいけない。

考えていることを全て言うべきではないけれど、思っていることはできるだけ言うべきだとも思う。どちらが正しいのか、未だによくわからないが、本当にくだらないことはくだらないと言うべきだ。そうしなければ一向に何もよくならない。くだらないことをまた誰かが繰り返す。

余計な話は時間の無駄だ。これもまた。

テキストにまとまっていれば30分ですむことを、それの倍以上もかけてやる意味はない。独学可能なことを学校でやる意味はない。そういうものは、必要なときに必要なだけ独りで、誰にも迷惑をかけずやればいい。

svk socks

socks 経由させるのってどうすればいいんだろう……

むー

だめだ。gimpshop も使いにくい。。。クリップボードって X 経由だとだめっぽいのかなぁ。

hoge

cd
ln -s ~/Library/Application\ Support/Firefox/Profiles/qhjh5wvc.default/gm_scripts . 

gerry++

お腹痛い

Yahoo! 路線情報

ログインしなくても駅名をあらかじめ設定してほしいので、test.user.js にとりあえず以下を書き加えた。適当過ぎ

	var from = $X("//input[@name='from']")[0];
	if (from) {
		from.value = "unnko-";
	}

pbcopy

日本語のコピーは sjis に変換しないとだめらしい

cat /tmp/vimyanktmp | iconv -f utf-8 -t shift-jis | pbcopy

いい加減キーバインドに割り当てろって感じだw
sjis ってのが謎なんだけど。。

vim pbcopy

if has("mac")
	map <silent> sY :call YankPB()<CR>
	function! YankPB()
		let tmp = tempname()
		call writefile(getline(a:firstline, a:lastline), tmp, 'b')
		silent exec ":!cat " . tmp . " | pbcopy"
	endfunction
endif

してみた

export __CF_USER_TEXT_ENCODING='0x1F5:0x08000100:14'

して pbcopy が適切みたいです。

寝過ごし

あがが。新松田一歩手前で起きた。死にたい。
16時ぐらいから今までオフラインという切なさ

2006年 10月 11日

iTunes 共有

なにやら唐突に共有が見えなくなった。hamachi は繋がってるみたいなんだけどなぁ。なんでだろう

HamachiX じゃなくて直接 hamachi たたいたらいけた。謎い

ruby 累乗してるとスレッドスイッチがおこらないことがある?

$ ruby -rtimeout -e "timeout(1) {  p 10000000**10000000  }"                                                                                                           

やると返ってこない。

$ ruby -v
ruby 1.8.4 (2005-12-24) [i486-linux]
ruby 1.8.2 (2004-12-25) [universal-darwin8.0]

計算も重くて、切り替わらないけど、inspect ででかい数字を出そうとするとめちゃくちゃ時間かかるみたい? Bignum#to_s

2006年 10月 12日

学校の階段3

学校の階段3 を読んだ。

メインの二人(二人?)に違和感。なんか今までとキャラが微妙に違うような。

とらドラ3

とらドラ3! を読んだ。

なんかどう考えてもおかしい展開なのに自然にみせてるのがすごいなぁと思う……それに、不必要になってる人間がいないのが気持ちいい。


あと7冊(謎

2006年 10月 13日

護くんに女神の祝福を8,9

護くんに女神の祝福を!〈9〉護くんに女神の祝福を!〈8〉 を読んだ。

8はなんか全く面白く感じなくて困った。ラブコメをやってるんだけど、何だろうなんかうーん、甘過ぎなのかなんなのか、かなり読み飛ばしてしまった。

9は普通に展開させていく巻だったらしく、特になんともかんとも言わず最後まで読んだ。

護くんって、最初読んだときは、もっと暗い展開するんだろうかって思ってたけど、結局三大なんちゃらはユニークキャラみたいだし、他の脅威も結局のところラブパワー(てきとう)で乗り切っちゃうんだろうな、とか思った。

なんかあんまりこう、アレに感じるのは、たぶん主人公が才能豊かで、やたらハーレム展開するところにあるんだろうな、って思った。眠い。


あと5冊

gerry++

あー

RAID くみたい

ハードウェアわかんなすぎ!

ubuntu on SC430 (SATA?) で smartctl

sudo apt-get install smartools
sudo smartctl --all -d ata /dev/sda1

-d ata しないで実行すると、SATA はサポートされてないぜ、でも最近のカーネルなら大丈夫かもな -d ata つけてみなとか言われる。

Windows PC に入ってるデータも、全部 Linux 側に移したい。Windows の HDD が平気で60度とか行ってこわい

2006年 10月 14日

RAID 組みたい

二個250GBのHDD買ってソフトウェア RAID1 にしようと思った。まだ買ってないしやってない。

今の SC430 には HDD が一個ついていてこいつの容量は 40GB。箱の中の下についているHDDディスク入れるところは一個だけあいてる状態。

なので、とりあえず一個を開いてるところに入れて、その一個だけで RAID1 を構成し、40GB をコピーして (ついでにパーティションを分け直す) から HDD を入れ替えてミラーリングという、のは、できるのだろうか。


不安点

  • ブートディスクをソフトウェア RAID にするので不安
  • パーティションの切り方がよくわからない。
  • 既存のやつをコピーする方法が不安。普通のファイルとか symlink は問題ないだろうけど、デバイスファイルとかってどういう扱いなんだろう。

Windows の方は D ドライブと C ドライブを分けていて、D をデータドライブにしているんだけど、この D ドライブをそのまま RAID 上のネットワークドライブにしたい。

LDR rating

久しぶりに 3 までたどり着いた。

2006年 10月 15日

QuickSilver

起動したら IME 切ってくれたらいいんだけどなぁ。

smb

Linux -> Windows 方向の smb がいつのまにか繋がらなくなった。

$ smbclient -L nina                                                                                                                                             
session request to NINA failed (Called name not present)
session request to *SMBSERVER failed (Called name not present)
exit 1

Computer Browser とかいうサービスを止めるとこうなるらしい。やれやれ

mt-daap vbr

VBR なファイルはなんも言わずに無視するんだなぁ。ハマった
なんか他にもでてこないファイルがあるんだけど全く原因がわかんなくて困る。

2006年 10月 16日

「文乃さん やばい」で「煤 - Note」がトップなのが

羨ましくなんてないんだから! リンク貼らないのは羨ましいからじゃないんだからね! (Google 検索)


他のやばい系 (IRC ででてきたやつ)

  • 「xslt やばい」
  • 「図書室の女の子 やばい」
  • 「やばい やばい」(何故か二個と一個のときとで結果が違う)
  • 「擬人化 やばい」
  • 「空が青い やばい 泣きそう」
  • 「時をかける少女 やばい」

煤 - Note のやばいヒット率はやばい異常


時かけの図書室の女の子は文乃さんです。断言


何気ない検索語で思わぬサイトがでてくると面白いですね。何気ないのかどうか謎ですが


@2006-10-17 06:35:26 追記

順位変動するだろうからメモ

  • 「xslt やばい」
    1. nulog
    2. 煤 - Note
  • 「図書室の女の子 やばい」
    1. nulog
  • 「やばい やばい」(何故か二個と一個のときとで結果が違う)
    1. antipop
  • 「擬人化 やばい」
    1. 煤 - Note
  • 「空が青い やばい 泣きそう」
    1. 煤 - Note
  • 「時をかける少女 やばい」
    1. nulog
    2. 煤 - Note

@2006-10-18 15:31:24 追記

「文乃さん やばい」での現在の検索結果が煤 - Noteより上になったよ>< やったね!

IRC

IRC の nick と他のサービスとの id を簡単に関連づけられたらいいんだけどなぁ。
nick は変動するし、ircnet だととられたらとりかえすのがめんどいとかあるから完全には無理なんだろうけど……
nick じゃなくて mask で認識するとして、サービスの管理化の自分のページ (ex. d.hatena.ne.jp/id/about とか) に mask を書いておいてそれを見るとかだと、自分でどれぐらい緩いか管理できる、のかな。


IRC ログの公開設定を自動化したい。

  1. IRCLog にログインする (サービスの id がログスクリプトに通知される)
  2. その id の特定のページ (決めておく) にアクセスして mask をとってくる
  3. 現在その人がチャンネルにいるかどうかを chokan にリクエストして調べる
  4. いたら許可

でも誰かが mask を *!*@* とか設定したらみんな見れるようになっちゃうから、mask 自体にも制限つけないとだめか。

パーティション

パーティションどのぐらいわけるべきかわからないな。分けなくていい気がしてきた。あとで変更するのめんどいし。システムの再インストールとかはまたそのとき考える。とか。うーん

JP

日本語配列の MacBook を機会があってちょっと触ったんだけど、キーの幅がちっちゃいっぽくてタイピングできなかった。あと無意識に C-SPC 押して IME きりかえしてしまうのでだめだ。

2006年 10月 17日

ネットワーク落ちてた

朝の4時ごろから落ちてたっぽい。唐突に
原因がわからない。ルーター再起動で繋がった。syslog 追って見たけど特になにもなし、PPPoE も落ちた形跡なし。


VoIP 側は無事だったっぽい。特に再起動せずとも生きてる。

HDD, Memory

HDD 買おうとおもったんだけど、まとめてメモリも買おうかで迷う。2G にしようと思ってたけど、なんか別に 1G でもいい気がするし、うーん。

自己ルール

ちょっと前にりなざうで思いついたときに書き出したもの。今考えているのとは違う部分もある感じ。ちゃんと実践できないことがいっぱいあるなぁ……と思ったのでいつでも見れるように。

  • 訊かれるまで答えない
    • しゃべりすぎる傾向を抑える
  • 可能ならできるだけしゃべらない
    • 余計なこと言わないのが最優先
  • 自信過剰にならない
    • 特に無意識にでる表現
      • 「さすがに〜はできない」
      • 「ぶっちゃけそんな頭よくない」の類
  • 愛のない批判をしない
  • 批判するときは相手と自分に逃げ道を残す
  • 伝えたいことを全て書かない
  • 論理より感覚
    • ロジック中毒者にならない
    • 論理は感覚的に理解するための手段
  • どんな人間を相手にしても、根本的原因/背景/事情を考える
  • 感じる行為をおろそかにしない
    • タバコを吸わない
    • 眼を閉じない
  • 悪い開き直りかたをしない
  • 寛容であろうとする
  • 出来る限り質問をしない
    • 他人の時間には対価を支払わないといけない
  • 出来る限りメールをしない
  • 出来る限りケイタイを使わない
    • 目の前にいる人をおろそかにしない
  • 約束を守る
  • 気取らない
  • プライドを持たない
  • 他人が関わることには事前計画をしっかりたてる
  • 腹が立ったときは場を立ち去る
  • 努力は報われるべきだと考える
  • 結果には原因がある
  • 理不尽さの排除を徹底する
  • 前提知識のあわない人と出来る限り話さない
    • 前提知識を知ろうともしない人とは特に
  • 自分以下の理解力の人はいない
  • 見下さない
    • 雰囲気でわかるもの
  • 雰囲気を崩さない
    • 雰囲気を崩してまでする主張はろくなものがない
  • 独学がもっとも重要
  • 勝ち負けにこだわらない
    • 負けて気持ち以外の問題がないなら積極的に負ける
  • 負けの重要さを忘れない
  • いいものはいいという
  • 個人的なことには理想主義で、社会的なことには現実主義であろうとする

awareness

伊藤家の食卓見てて思ったけど、リサイクルって awareness が溢れてるんだなぁ。情報デザイン

2006年 10月 18日

memcached

sudo port install memcached
memcached -d -m 32 -p 11211

これあとで終了するの忘れそう。32MB ぐらいならいいけど

むー test Cache::Memcached が全て失敗する。

全てじゃなかった。けどレスポンスのところは全部失敗してる。

Use of uninitialized value in string eq at /Users/cho45/.cpan/build/Cache-Memcached-1.18/blib/lib/Cache/Memcached.pm line 462.
Use of uninitialized value in addition (+) at /Users/cho45/.cpan/build/Cache-Memcached-1.18/blib/lib/Cache/Memcached.pm line 893.

memcached -vv で起動しても、変な動作してるようには見えない。なんでだ……

Ruby-Memcached は動いてるから、memcached の問題ではないようだ。

MacPorts の perl5.8.8 が悪いのかと思って標準の 5.8.6 をひっぱりだして試したけどこっちもだめだ。
どうすれば動くんだろう。マジで困る

http://d.hatena.ne.jp/k12u/20060913#p1
これだ。確かに 10 秒とかにするとテストとおる。

sudo port uninstall memcached
sudo port install libevent
cd
cd src
wget http://www.danga.com/memcached/dist/memcached-1.2.0.tar.gz 
tar xzvf memcached-1.2.0.tar.gz
cd memcached-1.2.0
./configure --with-libevent=/opt/local --prefix=/opt/local
make
sudo make install

で解決した。2時間ぐらいハマった。

OS X 10.2 以降の hosts

というのを見落としてた。
/etc/hosts を書き換えるだけでよかったのか……

iTunes 検索ボックス

Alt-Cmd-F (Alt-Ctrl-F) Alt と Cmd の同時押しって苦手
http://www.apple.com/jp/support/itunes/shortcuts/index.html はダウト

US キーボード

Admin 権限ないときって、USB US キーボード繋いでも US キーボードとして使えないのかな

HDD 買った

予定

  • パーティションはほとんど切らない。システムもデータも同じところの入れる。(いまだに見積もりができない)
  • スワップだけをわける。実用容量が異なることを考え、ディスクそれぞれ後ろ 500MB をそれぞれスワップにする。

構築メモ

SC430

BIOS で SATA を ON に。ポートごとの設定で、はずしたふたの裏に番号が図解してある。

sudo fdisk /dev/sdb
> p
Disk /dev/sdb: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

> n
> p
> 1 #パーテーション番号
> 1 #最初のシリンダ
> +249500M
> t # タイプ変更
> fd # Linux raid auto detect
> a # ブートフラグ

> n
> p
> 2
> [RET]
> [RET]
> t
> 2
> 82

> p
Disk /dev/sdb: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1       30334   243657823+  fd  Linux raid 自動検出
/dev/sdb2           30335       30401      538177+  82  Linux swap / Solaris
> w

とりあえず swap を有効にしてみる

$ sudo mkswap /dev/sdb2
Setting up swapspace version 1, size = 225545396 kB
no label, UUID=269dcbba-b161-4002-9a4d-29fe964d61b6

$ sudo swapon /dev/sdb2
$ swapon -s


RAID1 を一つのデバイスを missing にして作成する

sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 missing 
mdadm: array /dev/md0 started.

ファイルシステム作成 ext3

sudo mkfs.ext3 /dev/md0  


作ったファイルシステムに現行システムをコピー

cd /
sudo mkdir new-disk
sudo mount -t ext3 /dev/md0 /new-disk 
sudo telinit 1
# syslog とか全部止めたりしてファイルシステムの使用を最小限に
# ここからは ssh できないのでちまちまうってく
# パーティションは一つしかないため簡単に
cd /
cp -ax / /new-disk

風呂


帰って来たら no space なんたらでコピーが止まってる。いろいろ見てみると、fdisk の時点で桁を間違っているという罠……いったん全てを巻き戻す。

sudo umount /new-disk
sudo mdadm --misc --stop /dev/md0
sudo swapoff /dev/sdb2

で上のをやりなおし。記録とっててよかった。

cp まで終わったら

mkdir /new-disk/proc
vi /boot/grub/device.map
(hd0)   /dev/sda
(hd1)   /dev/sdb

grub-install /dev/sdb
update-grub
vi /etc/fstab
reboot
# ここでは sda1 の grub で起動した
sudo shutdown -h now

ハードディスク入れ替え。古い方をはずしてからっぽのをつける。が、起動しない。GRUB がちゃんとインストールできていないようだ。

sudo grub
grub> device (hd0) /dev/sdb
grub> root (hd0,0)
grub> install /boot/grub/stage1 d (hd0) /boot/grub/stage2 0x8000 (hd0,0)/boot/grub/menu.lst
grub> quit

これでブートはする。が、root fs をマウントできないでとまってしまう。うーん。なんでだろう。

って、fstab 書き換えたのって cp したあとじゃん。
マウントできない。で止まった後、BusyBox shell に落ちるので、mount /dev/md0 /tmp; chroot tmp; vi /etc/fstab して書き換える。

が、これでも root fs がマウントできないと言われる。

悩んだ挙句、/boot/grub/menu.list に書いてある kernel 起動オプションをにらむ。一番上の設定をコピって、sda1 をmd0 に書き換え。

さて起動するか。起動した。よしよし

でもって /dev/sda にたいして、fdisk とか

sudo fdisk
# 上と同じ
sudo mdadm /dev/md0 -a /dev/sda1
cat /proc/mdstat
Personalities : [raid1] 
md0 : active raid1 sda1[2] sdb1[0]
      243657728 blocks [2/1] [U_]
      [>....................]  recovery =  2.8% (6982720/243657728) finish=70.8min speed=55698K/sec
      
unused devices: <none>

よさげ。

こっちのディスクにも grub をインストールしたら終わりかな。

あ、あと、sda2 も mkswap, swapon, vim fstab して書き換え。

mdadm --detail --scan >> /etc/mdadm/mdadm.conf
dpkg-reconfigure mdadm
2006年 10月 19日

RAID

resync が終わっていたので、grub インストールしてシャットダウン。/dev/sdb を外して起動してみる。起動した。
つけ直して起動。cat /dev/md0 してみると、sdb1 がなくなってる。mdadm /dev/md0 -a /dev/sdb1 する。また resync がはじまる。
これでいいのかよくわからなす

hdparm

hdparm /dev/sda とかやっても DMA かどうかとかの情報が見れないなぁ。

$ sudo hdparm /dev/sda 

/dev/sda:
 IO_support   =  0 (default 16-bit)
 readonly     =  0 (off)
 readahead    = 256 (on)
 geometry     = 30401/255/63, sectors = 488397168, start = 0

gerry++

itete

2006年 10月 20日

Greasemonkey

スクリプトが読み込まれる順番ってどうなってるんだろ

七姫物語 第四章 夏草話

七姫物語〈第4章〉夏草話 を読んだ。

数日間/何回かに分けて読んだ。読むたびに毒が抜かれて眠くなる(いい意味で)。ROOM と平行して読むのが通らしいけど、七姫読んでから ROOM 読むのはスイッチの切り替え手順的に無理でした。

全体的にどう展開していくか全然わかんないのが不安だけど、割とそういうのはどうでもよくて、それぞれの登場人物が、それぞれの視点での起承転結をもっているとか、そういうのが面白い。

たぶんこういうのは何回か読んで、毎回なんか感じるのが、いいんだろうなぁ。


あと4冊

window.open quick hack

	unsafeWindow.open = function (url) {
		GM_openInTab(url);
	};

ひとつ上のディレクトリに移動

http://subtech.g.hatena.ne.jp/h2u/20061020/1161320952
souka ブックマークレットにすればいいんだ><

ついでにドメインもさかのぼれるようにしてみた。http://subtech.g.hatena.ne.jp/ -> http://g.hatena.ne.jp/

javascript:location=(function(){with(location){return pathname=="/"?href.replace(host,host.replace(/^[^.]+\./,"")):href.replace(/[^\/]*?\/?$/,"")}})();
javascript:location=(function(){with(location){return pathname=="/"?protocol+"//"+host.replace(/^[^.]+\./,""):href.replace(/[^\/]*?\/?$/,"")}})();
2006年 10月 21日

RAID 組みました。

用件

  • Ubuntu 6.06 LTS (kernel は raid 対応らしく特に設定なし)
  • dell SC430 (簡単にとりつけられるHDDスペースが二個)
  • 既存の 80GB シングルを 250GB RAID1 にする。
  • ハードディスクは最大で2個までしかつなげない (わけじゃないけどケーブルがない)
  • ソフトウェア RAID 化し、どちらも起動可能にする
  • ハードディスクの実容量が若干異なることを考え、末尾いくらかそれぞれを swap にする (swap は冗長化しない)。

ステップ

  1. 新しいハードディスク 250GB をとりつける
  2. パーティションを切り、RAID1 を一個 missing で構築する
  3. grub をインストールする
  4. grub の kernel 起動オプションを変更しとく
  5. 既存ファイルのコピー
  6. 古いハードディスクをとりはずし、新しいハードディスクに入れ替える。
  7. 同じようにパーティションをきり、RAID1 に参加させる。

最終的に思ったポイント:実際ファイルコピーするのは最後にしよう。grub インストール前にファイルをコピーしてしまってハマった。


まず BIOS (起動時に F2 で入る) で新しく接続したドライブを認識するようにする。SATA の on/off

sudo fdisk /dev/sdb
> p
Disk /dev/sdb: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

> n
> p
> 1 #パーテーション番号
> 1 #最初のシリンダ
> +249500M
> t # タイプ変更
> fd # Linux raid auto detect
> a # ブートフラグ

> n
> p
> 2
> [RET]
> [RET]
> t
> 2
> 82

> p
Disk /dev/sdb: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1       30334   243657823+  fd  Linux raid 自動検出
/dev/sdb2           30335       30401      538177+  82  Linux swap / Solaris
> w

とりあえず swap を有効にしてみる

$ sudo mkswap /dev/sdb2
Setting up swapspace version 1, size = 225545396 kB
no label, UUID=269dcbba-b161-4002-9a4d-29fe964d61b6

$ sudo swapon /dev/sdb2
$ swapon -s

RAID1 を一つのデバイスを missing にして作成する

sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 missing 
mdadm: array /dev/md0 started.

ファイルシステム作成 ext3

sudo mkfs.ext3 /dev/md0  

grub install

sudo grub
grub> device (hd0) /dev/sdb
grub> root (hd0,0)
grub> install /boot/grub/stage1 d (hd0) /boot/grub/stage2 0x8000 (hd0,0)/boot/grub/menu.lst
grub> quit

vim /etc/fstab で md0 をマウントするように

/dev/md0       /               ext3    defaults,errors=remount-ro 0       1
proc            /proc           proc    defaults        0       0
/dev/sdb2       none            swap    sw              0       0
/dev/hda        /media/cdrom0   udf,iso9660 user,noauto     0       0

vim /boot/grub/menu.list の上の方に追加。md0 を root とするように

title       Ubuntu, kernel 2.6.15-27-386 (raid)
root        (hd0,0)
kernel      /boot/vmlinuz-2.6.15-27-386 root=/dev/md0 ro quiet splash
initrd      /boot/initrd.img-2.6.15-27-386
savedefault
boot

作ったファイルシステムに現行システムをコピー

cd /
sudo mkdir new-disk
sudo mount -t ext3 /dev/md0 /new-disk 
sudo telinit 1
# syslog とか全部止めたりしてファイルシステムの使用を最小限に
# ここからは ssh できないのでちまちまうってく
# パーティションは一つしかないため簡単に
cd /
cp -ax / /new-disk
mkdir /new-disk/proc

シャットダウンして付け替える。ここから sda は新しい 250G のディスク

/dev/sda にたいして、fdisk して、mdadm -a で RAID に追加

sudo fdisk
# 上と同じ
sudo mdadm /dev/md0 -a /dev/sda1
cat /proc/mdstat
Personalities : [raid1] 
md0 : active raid1 sda1[2] sdb1[0]
      243657728 blocks [2/1] [U_]
      [>....................]  recovery =  2.8% (6982720/243657728) finish=70.8min speed=55698K/sec

unused devices: <none>

こっちのディスクにも grub をインストール

sudo grub
grub> device (hd0) /dev/sda
grub> root (hd0,0)
grub> install /boot/grub/stage1 d (hd0) /boot/grub/stage2 0x8000 (hd0,0)/boot/grub/menu.lst
grub> quit

設定を保存して、メールの送信先を設定しとく

mdadm --detail --scan >> /etc/mdadm/mdadm.conf
dpkg-reconfigure mdadm

で終わり。のはず。実際構築したときはいろいろハマって起動しなかったりした。grub のインストール手順がおかしかったのと、grub が渡す kernel 引数が悪かったせい。

それと頭悪くて fdisk の桁を一個間違えて RAID missing 構築までやってしまった。やりなおすために

sudo umount /new-disk
sudo mdadm --misc --stop /dev/md0
sudo swapoff /dev/sdb2

とかやって、fdisk しなおした。


root ファイルシステムがないとか言われて起動しなかったときは、ずっと待ってると BusyBox shell に落ちるのでそこでなおしたりした。 これは kernel 引数が RAID デバイスになっておらず /dev/sda を参照していて、sda は RAID に参加するまえでミラーリングされていなかったで、ファイルシステムが存在せずエラー、とかいうやつ。

mount /dev/md0 /tmp; chroot tmp

fstab の修正をして、/boot/grub/menu.list を修正した。

けど、menu.list のほうが、title がかぶっていてはダメらしく、めんどいので grub 中に edit して起動して、起動してから書き換えた。


そんなわけで RAID1 になりました。一度つけて外して resync の様子とか見たりしたり。RAID になったからって、別に表面所何かが変わるわけではなく、ハードディスク変えて容量が増えただけという感じ。

まだ慣れてないので、「バックアップとらないとなぁ」と不安になってしまったりする。「そういえば RAID 組んだんだからそんなに気にしなくても」とか打ち消したりとかなんとかとかとかとか。とかばっかりだなねる

2006年 10月 20日

lighty install

sudo port install lighttpd

port でインストールするとバージョン 1.4.11

が、なぜか lighttpd は /opt/local/sbin にインストールされるので、bin に symlink

sudo ln -s /opt/local/sbin/lighttpd /opt/local/bin

Catalyst うごかしてみよう

svn co http://svn.unknownplace.org/public/library/perl/trunk/Catalyst-Helper-Lighttpd/
cd Cata..
perl Makefile.pl
make
make test
sudo make install
cd hoge
cd ./script/myapp-create.pl lighttpd
./script/myapp-lighttpd.pl

と思いきや symlink だとだめなのか。エラーでる。 -v を実行しようとかしてる。ソース読んだけどヨクワカンネので、

./script/myapp-lighttpd.pl -l=/opt/local/sbin/ligttpd

こんどは FCGI インスコされてねぇよと怒られるので入れる

sudo port install fcgi
sudo cpan -i FCGI

起動してみる。できた。めでたし。開発はまた今度やってみよう。

どこアクセスしてもトップページになっちゃうな。なんでだろ。

[debug] "GET" request for "/" from "127.0.0.1"

あー 404 用のパッチあてないといけないスクリプトだからか。
http://typester.vox.com/library/post/fixes-enginecgi-for-lighttpd.html

のパッチを catalyst-with-lighty-404.patch として保存して、Catalyst プロジェクトのルートで

mkdir -p lib/Catalyst/Engine
cp /opt/local/lib/perl5/site_perl/5.8.8/Catalyst/Engine/CGI.pm lib/Catalyst/Engine
patch < catalyst-with-lighty-404.patch 

した。patch コマンドの使い方わからん><

2006年 10月 21日

RAID 組みました。

なんか消えてたので google cache から復元


用件

  • Ubuntu 6.06 LTS (kernel は raid 対応らしく特に設定なし)
  • dell SC430 (簡単にとりつけられるHDDスペースが二個)
  • 既存の 80GB シングルを 250GB RAID1 にする。
  • ハードディスクは最大で2個までしかつなげない (わけじゃないけどケーブルがない)
  • ソフトウェア RAID 化し、どちらも起動可能にする
  • ハードディスクの実容量が若干異なることを考え、末尾いくらかそれぞれを swap にする (swap は冗長化しない)。

ステップ

  1. 新しいハードディスク 250GB をとりつける
  2. パーティションを切り、RAID1 を一個 missing で構築する
  3. grub をインストールする
  4. grub の kernel 起動オプションを変更しとく
  5. 既存ファイルのコピー
  6. 古いハードディスクをとりはずし、新しいハードディスクに入れ替える。
  7. 同じようにパーティションをきり、RAID1 に参加させる。

最終的に思ったポイント:実際ファイルコピーするのは最後にしよう。grub インストール前にファイルをコピーしてしまってハマった。


まず BIOS (起動時に F2 で入る) で新しく接続したドライブを認識するようにする。SATA の on/off

sudo fdisk /dev/sdb
> p
Disk /dev/sdb: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

> n
> p
> 1 #パーテーション番号
> 1 #最初のシリンダ

> +249500M
> t # タイプ変更
> fd # Linux raid auto detect
> a # ブートフラグ

> n
> p
> 2

> [RET]
> [RET]
> t
> 2
> 82

> p
Disk /dev/sdb: 250.0 GB, 250059350016 bytes
255 heads, 63 sectors/track, 30401 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1       30334   243657823+  fd  Linux raid 自動検出
/dev/sdb2           30335       30401      538177+  82  Linux swap / Solaris
> w

とりあえず swap を有効にしてみる

$ sudo mkswap /dev/sdb2
Setting up swapspace version 1, size = 225545396 kB
no label, UUID=269dcbba-b161-4002-9a4d-29fe964d61b6

$ sudo swapon /dev/sdb2
$ swapon -s

RAID1 を一つのデバイスを missing にして作成する

sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 missing 
mdadm: array /dev/md0 started.

ファイルシステム作成 ext3

sudo mkfs.ext3 /dev/md0

grub install

sudo grub
grub> device (hd0) /dev/sdb
grub> root (hd0,0)
grub> install /boot/grub/stage1 d (hd0) /boot/grub/stage2 0x8000 (hd0,0)/boot/grub/menu.lst
grub> quit

vim /etc/fstab で md0 をマウントするように

/dev/md0       /               ext3    defaults,errors=remount-ro 0       1
proc            /proc           proc    defaults        0       0
/dev/sdb2       none            swap    sw              0       0
/dev/hda        /media/cdrom0   udf,iso9660 user,noauto     0       0

vim /boot/grub/menu.list の上の方に追加。md0 を root とするように

title       Ubuntu, kernel 2.6.15-27-386 (raid)
root        (hd0,0)
kernel      /boot/vmlinuz-2.6.15-27-386 root=/dev/md0 ro quiet splash
initrd      /boot/initrd.img-2.6.15-27-386
savedefault
boot

作ったファイルシステムに現行システムをコピー

cd /
sudo mkdir new-disk
sudo mount -t ext3 /dev/md0 /new-disk 
sudo telinit 1
# syslog とか全部止めたりしてファイルシステムの使用を最小限に
# ここからは ssh できないのでちまちまうってく
# パーティションは一つしかないため簡単に
cd /
cp -ax / /new-disk
mkdir /new-disk/proc

シャットダウンして付け替える。ここから sda は新しい 250G のディスク

/dev/sda にたいして、fdisk して、mdadm -a で RAID に追加

sudo fdisk
# 上と同じ
sudo mdadm /dev/md0 -a /dev/sda1
cat /proc/mdstat
Personalities : [raid1] 
md0 : active raid1 sda1[2] sdb1[0]
      243657728 blocks [2/1] [U_]
      [>....................]  recovery =  2.8% (6982720/243657728) finish=70.8min speed=55698K/sec

unused devices: <none>

こっちのディスクにも grub をインストール

sudo grub
grub> device (hd0) /dev/sda
grub> root (hd0,0)
grub> install /boot/grub/stage1 d (hd0) /boot/grub/stage2 0x8000 (hd0,0)/boot/grub/menu.lst
grub> quit

設定を保存して、メールの送信先を設定しとく

mdadm --detail --scan >> /etc/mdadm/mdadm.conf
dpkg-reconfigure mdadm

で終わり。のはず。実際構築したときはいろいろハマって起動しなかったりした。grub のインストール手順がおかしかったのと、grub が渡す kernel 引数が悪かったせい。

それと頭悪くて fdisk の桁を一個間違えて RAID missing 構築までやってしまった。やりなおすために

sudo umount /new-disk
sudo mdadm --misc --stop /dev/md0
sudo swapoff /dev/sdb2

とかやって、fdisk しなおした。


root ファイルシステムがないとか言われて起動しなかったときは、ずっと待ってると BusyBox shell に落ちるのでそこでなおしたりした。 これは kernel 引数が RAID デバイスになっておらず /dev/sda を参照していて、sda は RAID に参加するまえでミラーリングされていなかったで、ファイルシステムが存在せずエラー、とかいうやつ。

mount /dev/md0 /tmp; chroot tmp

fstab の修正をして、/boot/grub/menu.list を修正した。

けど、menu.list のほうが、title がかぶっていてはダメらしく、めんどいので grub 中に edit して起動して、起動してから書き換えた。


そんなわけで RAID1 になりました。一度つけて外して resync の様子とか見たりしたり。RAID になったからって、別に表面所何かが変わるわけではなく、ハードディスク変えて容量が増えただけという感じ。

まだ慣れてないので、「バックアップとらないとなぁ」と不安になってしまったりする。「そういえば RAID 組んだんだからそんなに気にしなくても」とか打ち消したりとかなんとかとかとかとか。とかばっかりだなねる

<


menu.lst 検索して

# kopt=root=/dev/md0 ro

を設定。アップデートはしってもいいように

ROOM NO.1301〈#8〉妹さんはオプティミスティック!

ROOM NO.1301〈#8〉妹さんはオプティミスティック! を読んだ。

だんだん進むごとに面白くなってく、気がする。この巻は割と普通めだった。それでもバカっぽく書いてるのがいいなぁとか。


あと二冊

mt-daap

あとからファイルの追加ができないような…… rescan ってうごいてなくね

パーミッションのせいだった。samba 経由で直接書くようにしたから samba の厳しい設定がそのまま生きてた。

Amazon からてきとうにアルバムアートをひっぱってくる

http://lab.lowreal.net/trac/browser/c/albumart/albumarts.rb

albumarts.rb -t /home/cho45/music

-t で指定したディレクトリの一層目をアーティスト名、二層目をアルバム名として AWS 検索をかけ、アルバムアートを _folderOpenImage.jpg とかいう名前 (-f で変更) で保存していく。

mt-daap でこれを配信しておく設定にしとくと素敵><

gerry++

昼食とった直後にくることが最近多い気がする

MRTG munin

mrtg ややこしので munin インストール

sudo apt-get install munin munin-node

/etc/munin/munin.conf の htmldir を書き換え。

ハードディスクの温度を取得させるために /etc/munin/plugin-conf.d/munin-node を書き換え。

[hddtemp_smartctl]
user root
env.drives sda sdb
env.args_sda --all -d ata
env.args_sdb --all -d ata
sudo /etc/init.d/munin-node restart
telnel localhost 4949
fetch hddtemp_smartctl
> sda.value 41
> sdb.value 45
> .
quit

smart 情報もとってみる

cd /etc/munin/plugins
sudo ln -s /usr/share/munin/plugins/smart_ smart_sda
sudo ln -s /usr/share/munin/plugins/smart_ smart_sdb
sudo /etc/init.d/munin-node restart
sudo vim ../plugin-conf.d/munin-node

[smart_*]
user root


[smart_sda]
user root
env.smartargs -d ata -a

[smart_sdb]
user root
env.smartargs -d ata -a
2006年 10月 22日

obj.eval

obj.eval の挙動が気になるのでちょっと見てみた。仕様的には非推奨みたいなやつ (というかどこで言及されてるのが謎) だけど……

Fx1.5

obj = {}; obj.eval("a = 1"); obj.toSource()
//=> "({})"
obj = {}; obj.eval("var a = 1"); obj.toSource()
//=> "({a:1})"
obj = {}; obj.eval("this");
//=> [Window]

Global オブジェクトは変化させない (変化させると思ってた)。this も変化しない。VariableObject が obj になるだけ?
Global が変わらないなら別にその obj で閉じた環境ができるわけじゃないだなぁ。

gerry++

昼飯食べたらまた gerry

IRC log 自動認証

chokan にチャンネル名渡している人とれるようなメソッドは作ったけど、ログ側がめんどい。
チャンネル名渡して全員とれるのはどうかと思う気もする。けどどっちにしろ Drb 使うならわかっちゃうな

ていうかログのスクリプトはディレクトリ単位で acl 書いてるから、チャンネルとログディレクトリとの対応は書かないとだめだ。tiarra.conf を読んで対応させたらかっこいいけど

2006年 10月 24日

gerry++

日記に gerry って書くとグラフ化するのがほしい。

狼と香辛料

狼と香辛料〈2〉, 狼と香辛料〈3〉 を読んだ。

なんていうか、もう、ね、って感じ。これはやばい。話が進むにつれてやばい。三巻の最後のほうとかなんなんだよw

ホロは言うまでもなく、しかしながら脇役好きなので羊飼いの女の子++


なんか思い出してみるとホントにホロ可愛くて困る。というかなんか最近前にも増して涙腺が弱くなってて困る。別にそういうシーンじゃなくてもくる。


最後の二冊終わり。

2006年 10月 25日

Firefox2.0

テーマは手動で GrApple (EOS) を入れ直した。
C-u C-k C-h がちゃんと効くgtlt

セッションの復元がわからなかったけどホームページの設定ドロップダウンだった……タブの項目をさがしてた

FireBug の $x とかはどこにあるのか

>> dir(FireBugEval.api);
["$0","$1","$n","$","$$","$x","clear","inspect","dir"]
>> FireBugEval.expr;
"FireBugEval.expr;" //=> 実行中のスクリプト文字列

FireBugEval は一行実行するごとに毎回生成されてる。該当ソース (commandLine.js)

FireBugCommandLine.evaluate = function(expr)
{
    var win = FireBug.currentContext.window;

    var result = null;    
    win.FireBugEval = function(value) { result = value; }    
    win.FireBugEval.api = FireBugCommandLineAPI;
    win.FireBugEval.expr = expr;

    if (FireBug.debuggr.debugging && FireBug.currentContext.currentFrame)
        FireBug.currentContext.currentFrame.eval(this.evalScript, "", 1, {});
    else
        this.injectScript(this.evalScript, win);

    delete win.FireBugEval.api;
    delete win.FireBugEval.expr;
    delete win.FireBugEval;
    
    return result;
}

js1.7 with Ruby/SpiderMonkey

cd src
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot login
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -l mozilla/js/src mozilla/js/src/config mozilla/js/src/editline mozilla/js/src/fdlibm
cd mozilla/js/src
make -f Makefile.ref

cd Linux_All_DBG.OBJ
sudo cp spidermonkey.so /usr/local/lib/site_ruby/1.8/i486-linux  
sudo mv libjs.so /usr/lib 

cd ../ruby-smjs
vim extconf.rb # s/smjs/js/g
ruby extconf.rb --with-js-include=../mozilla/js/src --with-js-lib=../mozilla/js/src/Linux_All_DBG.OBJ 

1.7 の機能を使うには Context#version= をセットしてあげる。

c = SpiderMonkey::Context.new
c.version= "1.7"
c.evaluate("let (a = 1) a;")

Live HTTP Header のかわり

id:amachang 氏によると XHR うって FireBug 見るらしい。激しい。たしかにレスポンスヘッダならじゅうぶん
XHR のインタフェ覚えてないので

javascript:s=%22%s%22;r=new XMLHttpRequest;r.open(%22GET%22, s=='%\s'?'.':s);r.send(null);

を get キーワードにしてブックマークレットにした。

mini-DVI - VGA

mini-DVI - VGA のアダプタ買ってデュアルモニタ><
ヨドバシでなんか売ってなくて、アプルストア行った、ら、イベントやっててちょう混んでた。あの狭い渋谷アプルストアでgtlt

しかしこれでデュアル化しても、VirtueDesktop で結構違和感だ。全部のデスクトップに表示とかやらないとだね!

Ruby/SpiderMonkey function

c.eval("String.prototype").function("dump") {|this| p this.to_s.dump}
c.eval('"aaa".dump()')

this が ruby 側でとれない?みたいなので書き換えた。なにか方法あるのかな

--- spidermonkey.c.orig	2006-10-25 23:37:28.000000000 +0900
+++ spidermonkey.c	2006-10-25 23:58:26.000000000 +0900
@@ -598,10 +598,11 @@
 	so = (sSMJS_Class*)JS_GetPrivate( cx, fobj );
 
 	// 引数をSpiderMonkey::Valueに 
-	rargs = rb_ary_new2( argc + 1);
+	rargs = rb_ary_new2( argc + 2);
+	rb_ary_store( rargs, 0, rb_smjs_convert_prim( cx, thisobj )  );
 	for( i=0; i<argc; i++ )
-		rb_ary_store( rargs, i, rb_smjs_convert_prim( cx, argv[i] ) );
-	rb_ary_store( rargs, i, so->rbobj );
+		rb_ary_store( rargs, i+1, rb_smjs_convert_prim( cx, argv[i] ) );
+	rb_ary_store( rargs, i+1, so->rbobj );
 
 	// proc を実行 
 	res = rb_protect( rb_smjs_ruby_proc_caller, rargs, &status );

あーこれじゃだめだ。影響が広すぎて ruby のメソッドをそのまま呼べなくなる。新しいメソッドを定義するほうがいいのかなぁ。function_with_this みたいな

2006年 10月 26日

gerry++

だめだ

parallels のネットワークの設定よくわかんないなぁ。ホストのIP固定にしたい……
IE で確認できないのが困るので結局無線ルータのポート 3000 を開けるという。

2006年 10月 27日

svn

がっこの鯖に入れた svn が ssl 対応してなくて googlecode にコミットできない…… --with-ssl つけてリビルドちゅう

DAAP via SSH

http://wiki.mt-daapd.org/wiki/SSH_Tunnel に書いてあるやつなんだけど、なんか苦労した……
SSH プロキシはいいとして、ローカルに mDNS プロキシをたてるのがよくわかんなくてこまった。
結局 http://www.chaoticsoftware.com/ProductPages/NetworkBeacon.html を入れて、

Service Name
てきとう
Service Type
_daap._tcp.
Port Number
3689
Enable Host Proxy
checked
Host Name
localhost
IP Address
127.0.0.1

を設定したら見れた。Universal Binary じゃないな

これで hamachi が通らなくても DAAP が通るようになったはず……外のネットワークからためしてみよう

Remote Growl

TCP で送る Remote Growl と、irssi プラグインを書いた。
http://lab.lowreal.net/trac/browser/c/growl/

ssh lab -R 9955:localhost:9955

で転送したかった。しかしろくにテストしてない。

ハイライトあるときは sticky で表示させる、とかやりたい。あとでしらべる

必要

RubyCocoa ってインストーラーついててちょうしんせつ><

Remote Growl

ハイライト時に sticky 実装してみた。設定ちゃんと作ったほうがいいな……
あと irc ででた url を開きやすくしたいなぁ。

RemoteGrowl

http://lab.lowreal.net/trac/changeset/365
アイコンの変更に対応してみた。RubyCocoa が思ったよりすごい簡単で楽しい。Objective-C わかんなくてアレだったけど、Ruby で書けるってだけでこうまで違うのかとw

growlclient -t test -m test -i Irssi.png

とかやると Irssi.png の内容を文字列としてサーバに送って、サーバ側では

	def string_to_image(str)
		str = OSX::NSData.dataWithBytes(str, :length, str.length)
		OSX::NSImage.alloc.initWithData(str)
	end

みたいなメソッドで NSImage に変換し、Growl におくりつけてる (実際には ruby-binding の中でさらに NSData にしてから送られる)

RemoteGrowl server URL をデスクトップに保存しまくる

http://lab.lowreal.net/trac/changeset/367
-c (--url) オプションをつけるとデスクトップにひたすら受信した URL のショートカットを作りまくる。IRC で攻撃されるとあぶない

2006年 10月 28日

Finder

そういえば Finder って : を / として表示するのね

TCP RemoteGrowl

http://lab.lowreal.net/trac/changeset/371
他の remote 系と同じようなインタフェにした。一部違うけど
コマンドラインのほうは基本的に変わらず、アプリケーション登録に対応させたのでオプション増やした。
remotegrowl.pl も修正。やっと使えるレベルか

svn co http://svn.lab.lowreal.net/lowreal/c/growl/
2006年 10月 29日

Creammonkey メモ

  • 名前順に実行
  • 別のスクリプトに定義した関数を呼べる (順番が決まっているので)
  • GM_* はもちろんなし
  • 書き換えるたびに毎回スクリプトをリロードさせなきゃいけない (すなわちスクリプトのリロードと、ページのリロードが必要)
  • 実行タイミングは onload (画像とかも全て読み込まれてから)

Safari の JS コンソールの出し方がよくわからなかったけど、OnyX の Safari の設定でデバッグモードにチェック入れたらメニューがでてきた。

EvalError
RangeError
ReferenceError
SyntaxError
TypeError
URIError
console
a
t
alert
event
frames
onmouseup
NodeFilter
CSSRule
length
print
opener
parent
scrollX
scrollY
XMLSerializer
menubar
defaultStatus
onblur
confirm
scrollBy
pageXOffset
pageYOffset
Node
toolbar
Image
onabort
onmousemove
scrollTo
onsearch
onmousewheel
screenLeft
onmouseover
crypto
screenTop
Range
status
onreset
onselect
document
onunload
onerror
innerHeight
innerWidth
defaultstatus
name
frameElement
offscreenBuffering
onscroll
history
Event
onresize
navigator
self
top
clientInformation
outerWidth
getSelection
blur
locationbar
DOMException
setInterval
scrollbars
clearTimeout
moveBy
alert
clearInterval
personalbar
Option
closed
focus
location
konqueror
outerHeight
screenX
screenY
statusbar
scroll
moveTo
resizeBy
resizeTo
window
screen
XMLHttpRequest
DOMParser
prompt
open
setTimeout
close
captureEvents
releaseEvents
addEventListener
removeEventListener
onchange
onclick
ondblclick
ondragdrop
onfocus
onkeydown
onkeypress
onkeyup
onload
onmousedown
onmouseout
onmove
onsubmit
onbeforeunload
showModalDialog

激しく便利

もしかして:

  • 激しく便意
  • 激しく便秘

RindaRing

Rinda::Ring 使ってなんかやりたい

hint

スクロール位置の永続保存

	var scroll = eval(GM_getValue('Scroll', "({})"));
	log("%1.o", scroll);
	window.addEventListener("load", function (e) {
		if (scroll[location.href])
			document.body.scrollTop = scroll[location.href];
	}, false);
	GM_registerMenuCommand("Save scroll positon for next time", function () {
		if (document.body.scrollTop)
			scroll[location.href] = document.body.scrollTop;
		else
			delete scroll[location.href];
		GM_setValue('Scroll', scroll.toSource());
		alert('saved');
	}, 's', 'control meta');
	GM_registerMenuCommand("Reset scroll positons", function () {
		scroll = {};
		location.reload();
	});

を test.user.js に書いてみた。Ctrl-Cmd-S で保存のつもりなんだけど、なんかショートカットちゃんと効いてくれない……
自動で全サイト保存するように最初は書いたんだけどうざいのでやめた。


というか、一番最初はブックマークにスクロール位置を保存して復元するっていうのをやりたかった。でも一発でブックマークする関数 (サイドバーに開くのしかないよね。チェックはずすのめんどいし) が見つからないのでやめた。

Rinda

TupleSpace の分散ってできんのかな。Linda をあとでちゃんと調べてみよう。

2006年 10月 30日

mabinogi エルフ

エルフ

ちょっと前にエルフを支援してアシスタントキャラクターを作った。ちょっと前っていうかだいぶ前だな……

でもってまちがえて17歳で作ってしまったので転生させた。っていうかそれも二週間前だ……

でレンジを 9 にした。IB とかカウンタとか、まず絶対必要なのもとってあるのでそこそこは戦える。が、アローリボルバー/レンジ1に慣れてしまっているので連射速度が遅くてしかたない。一回はずしたらほぼ確実に食らうしなぁ……ダンジョンでは戦えない。

それでなんとなく製錬をあげようと思ってちょっと掘ってみたけど、なんかやっぱルーチンワークが苦手なので (掘ってるときにいかにして自動化するかずっと考えてしまう) 露天で石買ってあげまくり中。それもめんどい。

あんまりやる時間ないなぁ。もっと死ぬほど暇になりたい。


正攻法でちょっと採掘をやりやすくする方法を書いてみる。

「コントロールパネル」の「ユーザ補助のオプション」の固定キー機能の設定で、Shift 5回連打で固定キーをオンにするチェックを入れておく。そして必要なときに Shift 連打して、 Alt キーを固定し発掘。

別に発掘じゃなくても、クモの糸ひろいでも使える。ずっと Alt キー押してるのめんどいし便利なのでおすすめ。

カーソル位置の色を取得 on Mac

AHL のアレをやりたかったんだけど、なんか簡単にできる方法あるのかなぁ……
Cocoa にまんまな API があるかと思いきやないっぽいので諦めて rubying した。
http://lab.lowreal.net/trac/browser/c/mac/copypointercolor.rb

screencapture で画像とって rmagick でカーソル座標の色をとってくるだけのスクリプト。QuickSilver で割り当てて使ってみる。

Battery

info = eval( `ioreg -w0 -l | grep LegacyBatteryInfo`.gsub(/=/, '=>').gsub(/^.*¥{/, '{') )

percentage = info["Current"].to_f / info["Capacity"] * 100
puts percentage

Yet another Growl binding

http://lab.lowreal.net/trac/browser/c/growl/growl_delegate.rb

click イベントをとりたかったのでちゃんと delegate するバージョンを作ってみた (完成度50%)。Growl.framework と NSApplication#run が必須になる。
フレームワークってどこに置くのがいいんだろう。

RubyCocoa ocid からインスタンスを作成

ってどうやるんだろう。

あ、違う。必要なかった

2006年 10月 31日

test

Ruby/Cocoa で作った delegate のテストを書いてみたけど、どうしてもBUS Error で死んでしまうので諦めた。
NSApplication#run がくせものだ。run しないと Growl の click 通知うけとれない……

dsocks

名前解決をプロキシにまかせることってできないのかな

tsocks

現在の MacPorts の tsocks はちゃんと動くみたいだ

\t

vim に乗り換えた理由の8割はタブインデントのためです。