2006年 07月 28日

疎結合

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

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

開発用プロキシ鯖を設定より規約に

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 を使ってみた。らくちん。


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

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

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

2006年 07月 27日

やる気満々ですか

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

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

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

音楽ファイルのバックアップ

バックアップを手動でとってたけど、やっと 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 の曲名でアレなやつはエンコーディングの変更で正常に転送されない。めんどいのでファイル名のアレな文字は似た字に置き換えた。

2006年 07月 26日

引越し

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

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

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

2006年 07月 24日

svn fsfs, svnfs

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 するんだ。

2006年 07月 23日

PPPoE ってどうやって

やっぱ、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 アドレスを登録して云々みたいなことをやっているのかな?

2006年 07月 22日

リソース分散

だめだな

聴き上手

聴き上手になりたい。

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

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


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

ひかりの工事

工事立会いしてきた。

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

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

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

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


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

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

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

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


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


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