60億のイス取りゲーム

昨日、19日の月曜日に、NHK沸騰都市というドキュメンタリの第2回を放送していた。舞台はロンドン。左派リヴィングストン市長の下で、国外からの資本、労働力を貪欲に取り込み好況を博す街と、そこで活躍する各国のビジネスマン。そしてそれを 苦々しく思いながら働くロンドンっ子の日雇い労働者。


各種の視点を同時平行で追うツールとして、サッカー、プレミアリーグが利用されていた。ロシア人アブラモビッチの投資によって優勝を争うまでになったチェルシー。タイの元首相タクシンの資金で強化されるマンチェスター・シティチェルシーの躍進をスタジアムで見ながらはしゃぐのはロシア人のビジネスマンで、成功者の一人だ。オーナーがロシア人であるチームを眺めて「誇らしい事だ」と彼は言う。その一方で、古くからのチェルシーサポーターだった日雇い労働者はスタンフォード・ブリッジから閉め出され、パブで応援する日々。チケットはは高くて手に入らないのだ。


経済に活力を与えるためには、多くの資金が必要だ、というのはわかる。労働力もだ。資金と労働力の総和の増加を図るためにロンドンは、海外に目を付けた。諸外国の資金と労働力を積極的に受け入れる事で、ロンドンは成功を収めて来た。増えたお金はさらに次なる投資に使われ、移民労働者の成功と誘致政策が更なる労働力の流入に寄与する。


成功している裏では、日陰になる部分がある。経済が活性化するのはいい事かも知れないが、それによって競争が活性化すると、振り落とされる者が出てくる。番組内に登場した日雇い労働者も違和感を口にしていたし、何より、番組そのものが、先日の選挙の際、諸外国に開放的な政策を続けてきたリヴィングストン市長が落選した、という所で終わっていた。市民の選択は経済の活性化とは別の方向にあったのだ。


増田の内容も、その番組を見た後だけに興味深く感じられる所があった。もしかしたら、そんな流入政策を積極的に取るまでもなく、技術の進歩によって狭くなる世界では、いやが応にも競争相手の増加、多様化と、それによる競争激化を免れないのかも知れない。

ネットワークベンチマーク

自宅のネットワークを Gigabit 化したので、ファイルサーバとクライアントとの間の速度を測ってみる。

% netperf -H 192.168.x.y
TCP STREAM TEST to 192.168.x.y
Recv   Send    Send                          
Socket Socket  Message  Elapsed              
Size   Size    Size     Time     Throughput  
bytes  bytes   bytes    secs.    10^6bits/sec  

 87380  65535  65535    10.23     504.57

500Mbps か。理論値の半分ならそこそこいいな。チューニングとかは困った時に考えよう。

Windows ドライバしか無いプリンタを MacOS X でも共有

@ITの記事だけでも取り敢えず印刷だけは出来るようになりました。ただ、コレだと自分の環境では、印刷の余白に微妙なズレが出る。なんとかして修正できないかと色々試してたら、
http://www6.ocn.ne.jp/~egashira/ORCA/printer/windows_printer1.htm
ここ参考に、紙のサイズを

 -sPAPERSIZE=a4

として指定してやると上手く行くようになった。A4決め打ちだけど、モノクロレーザーでほぼA4しか出さないプリンタだからこれでOK

Safari 3.1 リリース

アップグレードしたら、ForgetMeNot が動かなくなった。SIMBL が、このバージョンの Safari には対応していないというメッセージを吐いて、読み込んでくれない。コレなしで Safari 使うのはストレス溜まりそうだったので、ForgetMeNot 最新版を落としてきてアップグレードしてみるもやはり動かない。


仕方無いので、

/Library/Application Support/SIMBL/Plugins/ForgetMeNot.bundle/Contents/Info.plist

に手を加えてゴマかす事にした。


下の方にある

MaxBundleVersion
523

の指定を

MaxBundleVersion
*

に変えるだけ。これで読み込んでくれるようになる。


ついでに GreaseKit や、SafariStand もアップデートした。

MacPorts で zsh-devel をインストール

今まで、MacPorts で入れた zsh をシェルとして使っていて、日本語通らねぇなぁ不便だなぁ、と思ってたんですが、zsh-devel には utf8 という variants があるのね。


こちらで見つけた PrivatePortfile を基に

port install zsh-devel +mp_completion +utf8


で入れた zsh はあっさり日本語通った。ちょっとうれしい。
PrivatePortfile の使い方はここ


本来、MacVimを使いたくて調べてたんだが意外な展開に転がった。ただし、肝心の MacVim はインストールの途中に失敗する。あがくのもメンドくさかったのでここのスナップショットを落として使う事にした。これはこれでいい感じなのだが、gvimrc の書き方を調べないとダメだな。


Tab 化を初め、すごく便利そうなのだが、ちょっと使ってみた感じ AquaSKK との相性が微妙な感じでどうしよう。

ホワイトデーを過ぎても。

別にタイトルに深い意味は無くて、3月も半ばに差し掛かったという程度の意味ですが。


忙しくて何も出来ずに居る気がします。俺の時間の使い方は下手なまま。


開幕戦を勝ったアルディージャの試合は、明後日です。

コマンドラインでがんばるよ

ゲンナリする噂話も聞こえるけど無くなっちゃうものは仕方がない。その前に、“idolm@ster” タグが付いている動画を全部ぶっこ抜いてみようじゃねぇか!という思いつきから始めた試みの記録。
こういうのは思いつくところまではともかく、そっから先は往々にして別に内容云々じゃなく手段が目的化してしまい、道具を作ることそのものが楽しくてしょうがなくなっちゃう人だから困る。

> i=0;while [ $i -lt 145 ]; do w3m -dump_source http://www.stage6.com/videos/tag:idolm@ster?page=$i | egrep '\/user\/.*\/video\/' >> vidlink ; i=`expr $i + 1`; done


まずはこう。コマンドラインに直で打ってるから一行だけど、見難いので整形すると

#!/bin/bash

i=0
while [ $i -lt 145 ];
do
 w3m -dump_source http://www.stage6.com/videos/tag:idolm@ster?page=$i | egrep '\/user\/.*\/video\/' >> vidlink;
 i=`expr $i + 1`;
done


こうなる。今はもう見られないけど、idolm@sterタグの打たれた動画は144ページに渡っていたので、その全ての HTML からビデオへのリンク周辺を抜いてくる部分。
そうして抜いたリンクを整形するために Ruby スクリプトに喰わす。

> ruby -F'><' -ane “\$F.each do |tmp| if tmp.match(/^a href.*title.*/) then tmp.split(/'/)[1].split('/').each do |tmp2| print tmp2 if tmp2.match(/^[0-9]{7}\$/); end; print \“\t\“ + tmp.split(/'/)[3] + \“\n\“; end; end;“ vidlink > videodata


こいつも一行では何の事やらわからないが、ruby 部分はこんな処理を実行する。

#!/usr/bin/ruby

while gets
 $_.split('><').each do |tmp|
  if tmp.match(/^a href.*title.*/) then
   tmp.split(/'/)[1].split('/').each do |tmp2|
    print tmp2 if tmp2.match(/^[0-9]{7}$/)
   end
   print “\t“ + tmp.split(/'/)[3] + “\n“
  end
 end
end


動画のIDとタイトルを抜き出してタブ区切りのテキストにする。動画のIDは単純にURL中にある/で囲まれた7桁の数列をとっただけ。/^[0-9]{7]$/という正規表現で探しているのがそれだ。こうやって作ったデータファイルから

> cat videodata | ruby -F'\t' -ane “system('wget', '-O' + \$F[1].chomp() +'.divx', 'http://video.stage6.com/' + \$F[0] + '/.divx') unless File.exist?(\$F[1].chomp() +'.divx')“


のようにして ruby に喰わせる。これは整形の必要もないだろう。-e オプションの引数をダブルクォートでくくっているので、文字「$」を「\(バックスラッシュ)」でエスケープさせている以外は素直な一行スクリプト。ファイルの有無を判定して無ければ指定のタイトルとビデオのIDを元に wget を呼んでダウンロードする。上のワンライナー同様、ruby コマンドの引数に videodata っていうファイル名を喰わして

> ruby -F'\t' -ane “system('wget', '-O' + \$F[1].chomp() +'.divx', 'http://video.stage6.com/' + \$F[0] + '/.divx') unless File.exist?(\$F[1].chomp() +'.divx')“ videodata


こうすればそれだけで実行出来るのだけど、わざわざ cat で吐いているのは、実際には videodata を更に分割して screen 使って並列実行したり、更にそれだけじゃ足りなくなって、上の cat の部分を tac に変えて逆順でさらに並列実行数を増やしたり、という事を行ったから。


それでも 2500 個くらいあったファイルの内の 700 個強、80GB くらいを DL したところで Stage6 が止まってしまった。残念。
とは言え、冒頭でも書いた通り、目的は既にワンライナーで遊ぶ事になっていたのでこれで充分楽しかった。集めた動画も見るのかどうか・・・。


おまけとして、応用編。シェルを叩くのは頭の体操みたいでホントおもろい。ルールを毎回忘れてるのが困るけど。


一つ目は、初期にスクリプトのミスで出来てしまった0バイトのファイルだけを消す方法

> for f in *; do if [ -f “$f“ -a ! -s “$f“ ]; then rm -- “$f“; fi; done


これだけなら、並べ変えてドラッグで選択→右クリックで「削除」の GUI のが楽かも。もしリモート操作の時などに必要が生じたら。


同様にミスで出来た、ファイル名の先頭に半角スペースが入ってしまったファイルをリネームして半角スペースを消す方法も。if 文は要らんかも。expr で substr とか length とか文字列演算が出来るなんて初めて知ったよorz

> for f in \ *; do if [ -f “$f“ ]; then mv “$f“ “`expr substr “$f“ 2 length “$f“`“ ; fi; done

Stage6さんよ

言い訳聞かない画質だし、メチャクチャ容量喰うだろうし、運営がツラいのはわかるけど急に辞めるとか言い出すなよ・・・。


明日はStage6の動画をひたすら保存するだけのお仕事が始まるお・・・。

開戦は3/8

段々と開幕戦が近づいて来て、テンションもちょっとずつ上がってきてるんだけど、まだシーチケが来ない…。


はやくー!!眺めながらニヤニヤしてるだけで楽しめるんだからもっともっと早く!!