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:読書記録]
6月
01
2008
capistrano で deploy する際、あるホスト、あるいはあるロールだけに適用させたい場合はこうする。
“hoge.example.com” というホストに対し deploy:setup
$ cap deploy:setup HOSTS=hoge.example.com
:role => :web なホストに対し deploy:setup
$ cap deploy:setup ROLES=web
ここで指定するものは「,」 区切りで複数指定できる。
$ cap deploy:setup ROLES=web,db
HOST 指定に関しては、user および port を同時に指定できる。
$ cap deploy:setup HOSTS=username@fuga.example.com:port
後からホスト付け足す時にいちいちハマらないように。
[Tag:capistrano, rails]
5月
18
2008
三国志大戦3Master のデータを作っていて、既存の大量の画像にドロップシャドウを付けたものが必要になったので、RMagick を使ったRubyスクリプトなどを書いてみた。
続きを読む »
[Tag:rmagick, ruby]
4月
03
2008
VMware Server Console では、こんなダイアログが毎回出ます。
たいていは Local host のものを使うのでそちらを選択してスルーしますが、
Remote host という項目があるからには外部の ゲストOS にアクセスできるはず!

でもそのままアクセスしようとしても良くわからない…。
ということで、どのようにすればリモートにある VMware Server にアクセスできるかを書きます。
続きを読む »
[Tag:vmware]
3月
10
2008
ソート可能なテーブルの実装が欲しかったので、jQuery のプラグイン(?)として実装されている tablesorter を試してみた。
サンプルとして三国志大戦3の武将データリスト。
続きを読む »
[Tag:javascript, jquery, 三国志大戦]
3月
06
2008
snowland.net に先にネタにされてしまったけど、DNS amp 対策、端的に言うと DNS サーバへの DDos 対策をようやく行ったよ。
要するに信頼できない相手には自分の管理しているゾーン以外の問い合わせに答えないように変更する。
うちではBind9なので、optionsに
allow-query { localnet; };
を追加 (localnet は別途 acl localnet で指定)し、また各 zone の設定すべてに
allow-query { any; };
を追加した。
allow-transfer については基本的に(スレーブサーバ以外へは)転送しないようにもともとしてる。
[Tag:bind, dns]
1月
02
2008
WavPack形式でCDを(トラックごとに分けずに)ファイル一つにまとめてリッピングする方法についてメモ。
続きを読む »
[Tag:wavpack eac]
12月
27
2007
サーバ管理とかでの話。
FreeBSDやLinuxで、あるプロセス(例えばvim)を調べる/殺す際に、今までは
$ ps auxww | grep vim
なんて process id を調べてから kill、なんてやってたんだけどいい加減やめようと思って意図してpkill, pgrep を使うようにする。
pgrep を使えば process id は
$ pgrep vim
で調べられる。もし引数も含めて調べるなら
$ pgrep -f tiarra
などする必要がある。(-f で引数まで含めてパターンマッチングする)
-l で出力する情報を少しだけ増やせる。
また、最後に起動した tiarra だけ調べたい、などという場合なんかは
$ pgrep -fn tiarra
とすればよい。-n で最後に起動したプロセスだけ抽出する。-o なら最初。
んで、pgrep で調べた後に かわりに pkill にすれば、kill の動作をしてくれる。
(いきなりpkill食らわせるのはまだ怖い)
ちなみに killall は solaris でアレなのでなるべく使わないようにしてる。
自分の環境は主に FreeBSD6 なので、ports で sysutils/pkill を入れて使用した。
Linux では最初から入ってることも多そう。(最近の事情はよく知らないけど)
あと似たコマンドで skill があって (sysutils/skill)、
interactive mode があったり、正規表現でプロセス名を指定できたりする。
またこっちには nice 相当の snice がある。
skill と pkill ではかなりオプションが違うので要注意。-v とかうっかり skill に使うとまずいことうけあい。どちらかをメインで使って残りはちゃんと man を引いて使う方がよさそう。
[Tag:freebsd, linux]
12月
14
2007
doxygen は C++(など)のドキュメントを吐いてくれるツール。フリーでそれなりに手軽なのでいろんなところで使われてます。
ある日バージョンアップして設定をいじったら、デストラクタについてる頭の「~」が消えてしまった。
なぜ?
原因はこいつ。
INPUT_ENCODING = SHIFT_JIS
Shift_JIS は「~」を「 ̄(OVERLINE, U+203E, UTF8だとe280be)」にマッピングしてしまい、結果として落としてしまうから。
INPUT_ENCODING = CP932
ならうまくいく。こいつは UTF-8 に変換しても 7e のままにしてくれる。
[Tag:doxygen]
12月
03
2007
Amazon の アソシエイトリンクをお手軽に使える Amazon ISBN Anchor version 1.1.0 を公開しました。Amazon ISBN Anchor のページも作りました。
XML レベルですがキャッシュしたのでとりあえず現実的な速さになりました。前のはひどかった。:(
同種のプラグインに Amazon Linkage プラグイン もありますが、よりシンプルなものが欲しかったため結局自作しました。
(本体と同じ)GPL で公開していますので、必要ありましたら(ライセンスの範囲内で)ご自由にご利用ください。
[Tag:amazon, isbn-anchor, PHP]