vim の保存と同時にIE/Opera on Windows をリロードするデモ

遠隔オートリロード
動画と説明
reload.rb
本体
reload-config.yaml
設定

みたいなのの変化版。下地をバイト先をちまちま作って、使いにくかったのでスクラッチから結局書き直した。同じように HTTP 鯖を webrick で立てるやつです。

dl で win32api を読んでる。使うのは PostMessage。でもなんか、SetForegroundWindow がないとだめだったり、あるとでしゃばってきたり、なくても普通に動いたりと怪しいのでウゴカネーってときはそのへんみたらいいかも。あと mswin32 版じゃないと SEGV する。

EnumWindows で列挙して、タイトルがソレっぽいやつに対して F5 を送るだけ。Fx はこの方法だとリロードされない。残念。

設定の chain でリクエストあったときにさらにリクエストを出すことができるので、こいつのトリガひくだけで、ma.la さんの Safari のスクリプトも同時にひけます。


vim 側

command! AutoReloadOFF let b:autoReload_disable = 1
command! AutoReloadON let b:autoReload_disable = 0
augroup AutoReload
au!
autocmd BufUnload,FileWritePost,BufWritePost * call <SID>AutoReload()
augroup END
function! s:AutoReload(...)
" Check enable
if exists('b:autoReload_disable') && b:autoReload_disable != 0
return
endif
silent exe "!GET 'http://nina:4321/reload' > /dev/null"
endfunction
  1. トップ
  2. web
  3. 自動リロードで開発をアジャイルにするたった一つの方法!

中学のときの同級生3人と夜中にちょっとお話をしたんだけど、いろいろ面白かった。

やっぱ、外側から普段見えない部分とかって全然わからないもんだなぁとかなんとか。いろいろ考えてるなぁと、何も考えていない自分は思ったりするわけで、さてもう何が言いたいかわかりません。

そういえば、場合によっては、考えが固まった部分がぶつかっても、なるほどぐらいでうまく収まることもあるんだなぁとか。完全に個人に依存する部分だからか。


とにかく、アウトプットできることは全部アウトプットすべきだと思う。思ったことを文章化する試みをしたい。できないこともあるけど、してもいいかなってことは全部していきたい。公開。アウトプットできないのって何も考えていないのと一緒だ。せめて考えるフリぐらいはしとかないと。


めちゃくちゃ簡単そうに見えても、実際やってみると難しいことだらけだ。drb で簡単な P2P 実装を作ろうと思ったけれど全然頭回らない。単純に全てのピアに「通知」を送るだけなんだけど、なんども同じピアにきちゃうんだよなぁ……再帰的処理が苦手すぎる。頭悪すぎる。

  1. トップ
  2. life
  3. 引越し前日に
  1. トップ
  2. thinking
  3. 引越し前日に

やっぱ、疎結合のほうがいいなぁ。中身が見えない、中身を知らない。インターフェイスだけ。必要なものは API に。API にしてないところは触れて欲しくないところ。

開発初期の段階で、本当に必要だと思われた部分だけが、強く結合していて、あとは疎結合だ。時期が過ぎたら、終わり。

  1. トップ
  2. life
  3. 疎結合
  1. トップ
  2. thinking
  3. 疎結合

proxy.rb, proxy-config.yaml

とかいろいろあるやつを作ってみた。なんでそのまま使わないかっていうと、いちいち設定書くのが面倒くさかった気分。

設定は殆ど読まず、スクリプト単体で殆ど動くように。デフォルトでは files ディレクトリ以下に書き換え用のファイルを置く。

リクエストが example.com/css/base.css であれば、以下のようなファイルを探して置き換える。

  1. files/example.com/css/base.css
  2. files/example.com/base.css
  3. files/base.css

ma.la さんのソースでなんで :ProxyContentHandler を使わないんだろうって少し思ったけど、たぶん向こうの鯖へのアクセス数を減らしてレスポンスをよくするためっぽい? 全部置き換えちゃうわけだし、こっちのほうがいいので、このスクリプトもそうしてる。その辺はまるパクり!

あと流行りの Pathname を使ってみた。らくちん。


さらに規約を設定にしたら、設定より規約ってハードコーディングじゃね?みたい感じをなくせそう。

実装を見直し、規約を設定にした。好きな規約を設定して設定より規約なことができます (意味不明)

実装の見直しでは、完全にサブクラスかみたいな感じにして説明するのめんどい。

  1. トップ
  2. ruby
  3. 開発用プロキシ鯖を設定より規約に
  1. トップ
  2. web
  3. 開発用プロキシ鯖を設定より規約に

学校の何かで何時か思ったこと (何が多い)

なんかこう、やる気があったらなんでもできるとか、そんなのありえないし、「やる気」さえあれば評価されるとか、そんなのありえないんだから、そういう本当にくだらないこと、を信じるのをやめたらいいのに、気持ち悪い。と思った。けど、ただの僻みです。本当に(ry

でも実際、やる気があってもひたすらクオリティが出てこない・成果が出てこないっていうのはあって、ぶっちゃけそんなのどうしようもない。でもそこで「やる気はあるんですよ」とか言うのはどうかと思うっていうか、やる気やるくせにそのクオリティかよ的な何かにハマっていくのでこのまま人間やめたい。

  1. トップ
  2. life
  3. やる気満々ですか
  1. トップ
  2. thinking
  3. やる気満々ですか

バックアップを手動でとってたけど、やっと rsync でやるようにした。

今までなぜ rsync してなかったかというと単純に

  1. 最初の転送に時間がかかる。
  2. rsync の挙動が怖い (/ 一つでディレクトリ一個違うところとか)
  3. Windows - Linux 間なので、日本語ファイルがこわい

問題なのは最後だけで、実際やってみると問題がホントに出る。文字化けしたディレクトリだらけになる。

smbfs でマウントして remote しない rsync で転送してみる。Windows (Nina) のほうの music ディレクトリを music として共有している。

sudo mount -t smbfs -o codepage=cp932,iocharset=utf8 //nina/music /mnt/music
rsync -vrt --delete /mnt/music/ /home/cho45/music

verbose, recursive, times; マウントしたファイルは root 所有になってしまうので所有者変更は行わないようにした。

これで、うまくいってるっぽい。が、Sigur Ros の曲名でアレなやつはエンコーディングの変更で正常に転送されない。めんどいのでファイル名のアレな文字は似た字に置き換えた。

  1. トップ
  2. music
  3. 音楽ファイルのバックアップ

引越し屋さんは手際がよかった。

速度がでない感じのフレッツ光だけど、前言った実運用構成にしたら、最大 70M ぐらいまで出るようになった (Radish 東京)。そしてなぜかこの状態でフレッツスクエアの速度測定をすると 3M ぐらいしかでない。別にいいけど謎い。

でも実際、早くなってもそんなに実感はない感じ。セットアップファイル落とすときぐらいだ。

  1. トップ
  2. life
  3. 引越し
  1. トップ
  2. net
  3. 引越し

svn の HEAD を自動で公開したい。Apache さんが HEAD を普通のファイルとして認識して、普通にアクセスできる感じ。既存のものをそのままバージョン管理するような。

想定:リポジトリと Apache は同じマシンにある。

とりあえず、svn の fsfs がどっかにまとめて HEAD をもっているなら、それに symlink すれば解決だなぁと思ったのだけれど、fsfs は最初からの差分しかもっていないらしい (db/revs/{?d+})。さてどうしよう。

  • コミットをフックして (hooks/post-commit?) 公開ディレクトリを自動で svn up
  • libsvn とかでリポジトリの HEAD をどっかにマウントできる fs を作る (fsfs の場合重すぎてやばそう)

CLON - 2006/07/24

おお、なるほど。dav 化して davfs するんだ。

  1. トップ
  2. svn
  3. svn fsfs, svnfs

やっぱ、PPPoE で繋ぐ先ってどうやって決定されるんだろう、と疑問だったので調べた。

PPPoE は PPP フレームをイーサーネットフレームでカプセル化することにより動作する。このプロトコルには、発見とセッションという 2 つの異なるステージがある。

発見ステージでは、ホストはアクセス集信装置を発見するために特別な PADI (PPPoE Active Discovery Initiation) フレームをブロードキャストする。 (一般的には、ただ 1 つの) アクセス集信装置が PADO (PPPoE Active Discovery Offer) パケットを返し、集信装置が存在することとサービスを提供することを知らせる。ホストはアクセス集信装置を 1 つ選び、セッションを開いてもらうために PADR (PPPoE Active Discovery Request) パケットを送る。アクセス集信装置は PADS (PPPoE Active Discovery Session-Confirmation) パケットで応答する。この後、プロトコルはセッションステージに移行する。

セッションステージでは、ホストとアクセス集信装置の間でイーサーネットフレームに埋め込まれた PPP フレームがやりとりされる。通常のイーサーネット MTU は 1500 バイトであるが、 PPPoE のオーバーヘッドに加え、カプセル化された PPP フレームによる 2 バイトのオーバーヘッドがあるので、 PPP インターフェースの MTU は最大 1492 バイトになる。 Linux マシンをファイアーウォールとして使用しており、ファイアーウォールの背後にあるインターフェースの MTU が 1492 より大きいと、あらゆる問題が発生しうる。実際、安全のためにファイアーウォールの後ろのマシンの MTU を 1412 に指定しておくことを推奨する。これにより、ヘッダに TCP オプションと IP オプションが入るという最悪の場合も許容できる。

最初はブロードキャストするようだ。

上のことを念頭において RFC2516 を読んでみると、5.1 The PPPoE Active Discovery Initiation (PADI) packet とかいうところから上とほぼ同じ説明 (もっと具体的) がある。


PPPoE ブリッジとは何か? ここを読んでみると、ようはルータが PPPoE フレームをスルーしてくれる?程度のものっぽい。


ひかり電話のセッション情報は起動時に PPPoE + HTTP で落としてくるみたいだけど、その設定ってどこにあるんだろう。NTT がレンタル機器を送るときに MAC アドレスを登録して云々みたいなことをやっているのかな?

  1. トップ
  2. net
  3. PPPoE ってどうやって

聴き上手になりたい。

それは例えば、喋らないことではなく、相手にいっぱい話してもらう程度を喋って、よく話しを聴きたい。誰かが何かを言いかけたとき、絶対に止めさせないようにしたい。かなり難しい、これって雰囲気とかで、才能なんだよなぁ。天性な聴き上手には絶対に勝てないのだ。

くだらない話をうだうだ続けるようになると、もう終わりだ。創造的でなくなる。時間を無駄にする。アジャイルじゃなくなる。例えばアイデアは伝えるものじゃなくて、吸収したものから出てくるものなんだと思う。アイデアは成果として残る。アイデアだけでは伝わらない。伝えようとしてはいけない。詳細なアイデアは相手の想像力を削るから。最低限でいい。果汁は50%でいい。それ以上は過剰。


誤解はいいことだ。誤解を理解し、さらに誤解すると、またアイデアがでてくることがある。そういう意味で、理解しあおうという試み自体は面白いのだけれど、あまり必死に理解だけについて考えると、いつまでたっても終わらない。誤解は誤解のままでいい。理解なんてどうせないのだから、誤解で発想を増やしたほうがいい。

  1. トップ
  2. life
  3. 聴き上手
  1. トップ
  2. thinking
  3. 聴き上手

工事立会いしてきた。

カラカラ (謎) にまかれた光ファイバーを家の中にとりこみ、ひっかけて近くの電線まで一旦伸ばし、そこから近くのハブまで伸ばしていた。かなり長い距離。

光ファイバーのケーブルは針金二本にはさまれて本体の細いファイバーがあるものだった。挟まれているので曲がる方向に制限がある。たぶんある程度なら踏んでも切れなさそう (中に浮いているので踏めないし、職員の人は踏まないように気をつけていたけれど)。どうやって光ファイバー繋いでいるかはよく見えなかった。専用の器具があって、被覆全部はがしてくっつけてるみたいだったけど、あんなんでうまくいくのか? という疑問が。プラスチックを溶かしてくっつける、とかそういうレベルなんだろうか。精度がどんなもんなのか謎い。

一回繋ぐハブを間違えたらしく、外側だけを全て張りなおしていた。大変そうだった。それは別として、他は手際がよくて、すごいなぁと思った。

後なんか専用の測定器で信号が届いているか確認していた。外側から確認していたみたいだけど、漏れの光を見る装置なのかな? 信号が届いているか (? ロードとかなんか) 信号強度みたいな数字 (15, 28, 29) を喋って調節していた。やっぱ接合部分を調節していたのだろうか (そのときは室内だったので外で何をやっているかわからなかった。同時に自分が存在できたらいいのに、と思った)


職員さんのスピードテスト (フレッツスクエア) では 50Mbps ちょいぐらい。帰った後に Radish で自己測定すると、東京で 30Mbps 程度、大阪で 25Mbps 程度 (XP デフォルト)。上りが安定しなくてかなり遅くて、10Mbps 前後だった。うーん。

テスト時の構成: ONU -> RT-500NE -> PC のスタンダードな構成。プロバイダ OCN。プランは東日本フレッツハイパーファミリー+ひかり電話 (VoIP)

時間があんまりなかったので数回軽くテストして帰ってきた。実際の構成でどうなるかはわからない。

ちなみにルータへの設定は職員の人が勝手にやってくれた。PPPoE の設定とかもだけど、パスワードとか ID とか打ち込んでもらっていいのだろうか、ってちょっと思った。


ところで VoIP って「ヴぉいぷ」って読むんだ (ヴぉいすとかけてる?) 「ぶいおーあいぴー」って読んでた。


カラカラといえば七姫物語だなぁ。そういえば最近見かけない。そろそろ出る?とか聞いた気もする。

  1. トップ
  2. net
  3. ひかりの工事

神崎さんの話目当てで行って来た。

  • CSS の話があんまない。
  • XHTML って名前だけで ill-formed とか勘弁して!
  • RDFSPARQL やろうよ
  • GRDDL くるかもよ
  • XSLT! XSLT!
  • ウェブのインフォーマルな良さと、フォーマルな応用性を繋ぐのが重要なんだよ

結構マニアックな方向の話だった。会場の人で「well-formed」なんて聞いたことがないという人が多くてびびる。今回の話をきっかけにちゃんとそういうことも考えてくれたらいいなぁとてきとうに思った。

SPARQL の話とデモは、なんとなくイメージが掴めて面白そうな感じ。


かなり人が多くて、立ち見だった。抽選の応募がケイタイからだったのだけれど、ケイタイが圏外だった。MacBook が欲しくなった。関係ない。

  1. トップ
  2. css
  3. CSS Nite Vol. 10
  1. トップ
  2. web
  3. CSS Nite Vol. 10
  1. トップ
  2. sw
  3. CSS Nite Vol. 10

fb2k

iTunes インストールして、アンインストールして、なんとなく勢いで fb2k をバージョンアップしてカスタマイズしなおした。

Columns UIMusic Browser を入れて、似非 Rhythmbox 化した。(Rhythmbox を使ってないのは、ubuntu LTS にしたとき USB Audio にやたらプチノイズが入るようになったため)

Columns UI の layout 設定

Columns UI を画像のような、左プレイリストスイッチャー・右上左アーティスト・右上右アルバム・右下プレイリスト設定に。

でもちょっとアーティスト一覧が気に入らなくてごちゃごちゃやった。自分は ~/music/artist_name ってディレクトリを作ってて、割とどうでもいいアーティストは ~/music/他のアーティスト にまとめて突っ込んでる。だから id3 のタグを読んでひっぱりだされると邪魔くさい。直下ディレクトリを「アーティスト名」として扱ってほしい。

Music Browser の設定の Panels から Add, Artist:Artist, Format:$left($put(p,$substr(%_path%,$len("D:/home/cho45/music"),$len(%_path%))),$sub($strchr($get(p),\\), 1)), Precedence:0 して、右上左のパネルをこれに設定した。

この Format 書くのに果てしなくハマりまくって困った。$strstr も $strchr も 0 しか返さなくてなんでよって思ってたら、単にカンマの後にスペース書いちゃいけないとかいう罠だった。40分ぐらいハマった。

この設定だと Browser の Album が絞込みされないなぁ。むしろ Album 選択すると逆に Artist が絞り込まれちゃう。おかしいなぁ。Precedence の設定がおかしいのかなぁ。逆にしてもだめだなぁ。

パネル設定をやりなおしたらいけた。

  1. トップ
  2. music
  3. foobar2000 v9