6月
29
2008
今週(先週?)一週間ほど休暇をとりました。
どこかに行ったかというと、大阪のUSJまで3泊で行ってきました。
1日目: 心斎橋周辺、2日目: 海遊館、3日目: USJ、4日目: 大阪城 というのが大雑把なスケジュール。
もう眠いので細かくは書かないけど感想。
- 普通の通路でも左側通行が徹底されている気がする。東京みたいに一定数の反対に歩く勢力がいない。:)
- エスカレーターは頭では分かってても癖でまず左側に行きそうになる。
- 意外に信号無視しない。(失礼な先入観だなこれ)
- 道頓堀にあるうまい店を教えてくれ。(例えて言えば新宿の小滝橋通りのような印象を受け中)
- ディズニーランドのすごさを思い知る。
- なんばパークスの現在位置の分かりにくさ。
- 深夜番組は東京のより好み。
梅田あたりをもうちょっと見て回りたかったけど予定と合わず断念。心斎橋は2回も行ったのになあ。
旅行中に失敗したなと思ったことは、 [es] に ssh クライアントを仕込み忘れたことかなあ。初日の宿は回線がなかったのでいろいろ不便でした。いや旅行先でまで作業しなくていいんですけど。
あと rails のプロセス(mongrel)が旅行中にまた刺さってたり。なんでだ…。しかも2日気づかず…。
[Tag:osaka, trip]
6月
18
2008
Webブラウザ Mozilla Firefox3 がついにリリースってことで、Firefox3 の広告が山手線や新宿駅等の駅のモニタで放送されていました。存在は知ってたけどいつやるかや詳細は知らなかったのでびっくり。
そして Firefox3 は
「24時間の最多ダウンロードソフトウェアに挑戦」
するそうです。
使ったことない人は、この機会にぜひ使ってみて欲しいなあ。
とりあえず、JSTでは2時から集計開始なので、待機してます。w

[Tag:Firefox]
6月
16
2008
今更なんですがDOS プロンプト(cmd.exe)でのエスケープは「^(サーカムフレックス)」なことを最近知りました。
CMD.EXE TIPs とか読んでます。cmd.exe は難しい…(/bin/sh が簡単とは言わないけれども。比較的慣れているだけで…)。
[Tag:cmd]
6月
12
2008
スクリプトの出力を一行一行 “| tee” につなぐことがあります(”script”しろよという話はここでは置いておきます)。
ですが cd コマンドの行を機械的に “| tee” につないでしまうと、上手くいきません。
$ cd somedir 2>&1 | tee logfile
このコマンドは終了時に(somedirではなく)元のディレクトリに戻ってきます。
なぜかと言うと cd コマンドがサブシェルで実行されるため、サブシェル終了時にカレントディレクトリが戻ってしまうからですね。
パイプを使わなければサブシェルで実行されることもなく、想定どおりの動作をさせることができますが、
これとまったく同じ動作をパイプを使わずに行うのは、少なくとも bash では難しいです。
しかし、zsh でかつ “setopt multios” されているならば(デフォルト動作です)、こんな風にできます。
$ cd somedir >logfile >/dev/stdin 2>&1
2つ以上のファイルにリダイレクトすることができます。
また、あくまで tee を使うことにこだわるならば、
$ cd somedir > >(tee logfile) 2>&1
とすることもできます。受ける側のみをサブシェルにすることができます。
>(cmd....), <(cmd....), =(cmd....) はなかなか便利なので、 zsh を使うなら覚えておいて損はありません。
それぞれプロセスを非同期で実行し、>,<の場合はファイルディスクリプタを指すデバイスに置換されます。( echo <(ls) などとしてみると分かるかも )
=(cmd....) は同様ですが、デバイスではなくテンポラリファイルを指します。
$ cat file1 =(echo ------) file2
などと、ファイルを指定する場所に任意のコマンドを差し込むことができます。
man zshexpn の PROCESS SUBSTITUTION の項を参考に。
zsh やっぱスゲエ 、ということで。
[Tag:zsh]
6月
10
2008
普段は windows で ssh 関係を使うときは、 putty ファミリー(?) のツールを主に使っています。putty 本体もそうですが、コマンドラインから plink, pscp あたりもそれなりによく使うことがあります。
また、putty における ssh-agent 相当の pageant も、そういう時には立ち上げて使います。これを使うと、いちいちパスフレーズを入力する手間を省いてくれます。
ところで cygwin のプロセス(bash シェルとか)から plink を立ち上げると pageant を上手く使ってくれません。
作者のページのwishlistに上がっている “PuTTY semi-bug cygwin-clobbers-pageant”
にあるように、これは既知のバグというか、仕様というか、そういうもののようです。
先のページにもありますが、cygwin から pageant を立ち上げれば cygwin から plink を使っても pageant を使えます。しかしその場合、 cygwin を使わない putty や winscp などから pageant を使えない、という…。
この辺を解決するうまい方法があったら誰か教えてください。
[Tag:cygwin, putty]
6月
08
2008
三国志大戦3Master の新機能として、三国志大戦3ランダムデッキジェネレーター を公開しました。
アクセスすると適当にカードを選んでデッキを作成してくれます。
枚数を5枚以外も出てくるようにしたり、勢力数を限定したりできるのでハンデもつけやすく、
これを使えばOFF会でランダムデッキで対戦するなんてのにもよさそうです。
という布石(何の?)
あとは携帯で見れるようにしたり、サイドバーウィジェットみたいなのを出してみたりしたいなあ。
続きを読む »
[Tag:三国志大戦Master]
6月
06
2008
Ruby の便利標準ライブラリ筆頭(個人的感想)である open-uri ですが、
いまだに「open-uri はBasic認証のあるサイトには使えない」という都市伝説(?)が。
こんな風に :http_basic_authentication オプションを与えることでできるよ。
require 'open-uri'
open('http://www.example.com/authenticated_page/',
:http_basic_authentication => ['username', 'password'])
現在のマニュアルには載っていない ので注意。
新しい方にも特に書いてはいないみたい。
ちなみにプログレスバーのために :content_length_proc と :progress_proc が使えるが、簡単に作るとこんな感じに。
open(downloading-filename, 'w') {|f|
f.write open(url,
:content_length_proc => proc{|len|
@len = len
},
:progress_proc => proc{|now|
per = now * 100 / @len
$stdout.print "%15u bytes (%3u%%) |" % [now, per]
$stdout.print "=" * per
$stdout.print ">" if per < 100
$stdout.print "-" * (99-per) if per < 99
$stdout.print "\r"
$stdout.flush
}
).read
}
[Tag:ruby]
6月
04
2008
カスペルスキーと Firefox のアドオン Download Statusbar でダウンロード時に自動ウイルススキャンする話。
AVG8 の場合は Snowland.net のこのエントリのとおり。 → AVG8で手動スキャンするコマンド
カスペルスキーの場合はどうやるか。
続きを読む »
6月
03
2008
全国百万人(?)のトレーディングカードゲーマーの皆様こんにちは。
トレーディングカードゲームの醍醐味のひとつと言えばトレードですが、
ネット上でのトレードではクロネコメール便を使われる方がほとんどだと思います。
同様にネットオークションでもクロネコメール便が使われることが多いです。
もちろん自分も三国志大戦のカードトレードなどでよく利用しています。
もちろんその際には営業所に持ち込むのが一番安定なわけですが、大抵の人はコンビニで発送に
なるのではないかと思います。
手際、あるいは安心感で「使える」コンビニと「使えない」コンビニがあることに気づきます。
実際、普段の手際がよくてもメール便はダメだったりするところが結構あります。
(普段の応対がダメなところはメール便はまずさらにダメですが)
何がその差になるのか考えてみました。
(マニュアルなどは知らないので、よろしければ誰か教えてくださいw)
続きを読む »
[Tag:三国志大戦]
6月
02
2008
ハイパフォーマンスWebサイト ―高速サイトを実現する14のルール
Webサイトの高速化をするための14のルールを提示した本。
主にWebサーバのレスポンスの方法、レンダリングの概要のあたりに関係した手法が紹介されている。JavaScript の高速化などには触れていないので注意。
基本的には「リクエスト数を減らしましょう」「通信量を減らしましょう」「レンダリング回数を減らしましょう」 という話。Webアプリ作ってる人はやるやらないはともかく存在を把握しておくのがいいのでは。
自分のRailsアプリである程度実行に移してみる。
簡単だったのは 「ルール3 Expires ヘッダを設定する」 および 「ルール13 ETag の設定を変更する」。
すべて mongrel でやっていたところを、静的ファイルは apache で返すようにして、その部分でmod_expires による Expires ヘッダの設定をする。
ETag に関しては “FileETag None” を全体に設定。
「ルール4: コンポーネントをgzipする」。 Apache で返すものに関しては mod_deflate でいいとして、rails で返すものは(用意されてないので?)やや面倒。
Rails 1.2.x で動くものとしては、
[http://blog.craz8.com/articles/2005/12/17/rails-outputcompressionfilter] や
[http://craz8.com/svn/trunk/plugins/output_compression/]
がある。2.x に関しては必要になったら調べる。
また、StyleSheet は先、JavaScript は後、というルールを適用。基本的にはlayoutを変更して終わりだったが整合性を取るのがやや面倒なので最初からそうしておくようにしたい。
最後に JavaScript や CSS のファイル数を減らす、というのをやる。こいつは Rails なら task 作っておくのがよさそう。あるいは production と development で読み込むファイルを変えて、 capistrano の task で後処理をするのでもよい。
Rakeでやるならこんなのを lib/tasks に置いたり。
extjs = %w|
public/javascripts/ext/jquery-1.2.3.min.js
public/javascripts/ext/foo.js
public/javascripts/ext/bar.js
|
task :extjs => "public/javascripts/ext/all.min.js"
file "public/javascripts/ext/all.min.js" => extjs do |t|
sh "cat #{t.prerequisites} | ruby script/jsmin.rb > #{t.name}"
end
この例ではついでに JSMIN で縮小化してる。
そんな感じで軽くしたりしたけど、広告が重いままで最終的にはあまり変わらなかったりして。トホー。
あとは ajax でもってくる/レンダリングする部分をやっぱり軽くするってところの方が、 ajax なアプリでは重要ですねー。
[Tag:読書記録]