2009年5月31日日曜日

HTMLを綺麗にしないで高速化は出来ない。

仕事の都合と自分の趣味の両方で必要になったので買ってみた。
HTMLの表示、応答時間、Renderingにかかる時間を減らして全体的に高速化する方法をまとめてある本。
ハイパフォーマンスWebサイト ―高速サイトを実現する14のルール
ハイパフォーマンスWebサイト ―高速サイトを実現する14のルール武舎 広幸 福地 太郎 武舎 るみ

オライリージャパン 2008-04-11
売り上げランキング : 16442

おすすめ平均 star
star仕事で作る人、趣味で作る人、両方にためになります
starフロントエンド方面の最適化手法がわかる本
star目からウロコでした。

Amazonで詳しく見る
by G-Tools
個人的にはW3C準拠とかcss整理とかJavaScriptの整理だとか重要視してて大好きなんだけど、仕事だとどうしても裏側のLogic部分だったり、HTMLは兎に角画面がキチンとでればそれでOKが優先されて来てた。
が、最近になってやっとこっちの重要性が理解され始めたのと、抜本的な高速化が決まったので本格的に作業をする事に。
という経緯で買った本。
バックエンド側(Server処理)にかかる時間が半分になっても、応答時間全体の5~10%程度が早くなるだけ。
フロントエンド側(通信とかRenderingとか)にかかる時間が半分になれば、応答速度全体の40~45%が早くなる。
最初のこの言葉に納得。
実際Server側の処理早くしても、Tableタグ使いまくりとか、JavaScriptファイルがばらばらとか、HTML中に記述とか、cssがばらばらなHTMLじゃ殆ど意味ないからな・・・。

さてこの本に書かれている具体的な高速化手段は
  • HTTPリクエストを減らす
  • CDNを使う
  • Expiresヘッダを使う
  • コンポーネントをgzipする
  • スタイルシートは先頭に置く
  • スクリプトは最後におく
  • CSS Expressionの使用を控える
  • JavaScriptとCSSは外部ファイル化する
  • DNSルックアップを減らす
  • JavaScriptを縮小化する
  • リダイレクトを避ける
  • スクリプトを重複させない
  • ETagの設定を変更する
  • AJAXをキャッシュ可能にする
・・・まぁ辺り前な事だけど、実際はキチンとやられてないんだよな。
取りあえず順次実践してくしかない。
キャッシュの管理についてもBrowserとかに任せて放置じゃなくて意図的に操作しないと駄目だなぁ。

2009年5月30日土曜日

ESXiを入れようとするとでるCPUIDlimit対策

DellのOptiPlexGX280とかにESXi3.5を入れようとするとCPUIDlimitって奴でErrorが出て巧くInstall出来なかったので、調べてまとめ。

■VMWare ESXi working on a Dell Optiplex GX280
ESXi3.5を焼いたCDから起動して最初に止まる画面でTabキーを押す。
そうするとInstallのOptionを設定出来る画面が出るので、vmkernel.gzにnocheckCPUIDlimitという引数を追加する。
mboot.c32 vmkernel.gz nocheckCPUIDlimit --- binmod.tgz --- ienviron.tgz --- cim.tgz --- oem.tgz --- license.tgz --- install.tgz

これでEnterを押すとInstallが開始する。
んでこの後再起動するとまたCPUIDlimitのエラーでESXiが起動せずに止まってしまうのでESXiの起動設定ファイルを書き換える。

ここで使うのがLinux系のLiveCD。上で紹介してる先ではUbuntu8.04だけど、LiveCDが出来ればなんでもいい。因みに私はUbuntu9.04で作業しました。
作業内容はまずESXiをInstallしたPCにLiveCDを入れてCDから起動してLinuxの画面が出るまで待つ。
でHDDにアクセスして、「HYPERVISOR1」て名前のパーティションを開く。
するとそこに「boot.cfg」ってファイルがあるのでこれを開いて、kerneloptという設定項目を下記の様に修正する。
kernelopt=nocheckCPUIDlimit

終わったら再起動。

で正常に起動したらVIClientで接続して、メイン画面が出たら対象のServerを選択して
「Configuration」→「advanced settings」→「VMKernel 」
と開いて、でそこで
「VMKernel.Boot.checkCPUIDlimt」
のチェックを外す。

で再起動。
以上で終了。以後は毎度きちんと立ち上がる様になる。

2009年5月29日金曜日

世代通信プラットフォーム「Google Wave」

■米Googleが次世代通信プラットフォーム「Google Wave」発表
■Google Wave API (Labs)
■米Google、次世代コミュニケーションプラットフォーム「Google Wave」発表
■米Googleが次世代通信プラットフォーム「Google Wave」発表


「Google Wave」はこれらが混在している状況を改善し、異なるタイプのコミュニケーションモデルをほとんど連続的に1つのシステム上で扱うことはできないだろうかという考えから生まれた。


なんだこれは。
なんか凄そうだけど何が出来るんだろう。

SourceForgeに少し具体的な事が書いてある。

・Google Web ToolkitとHTML5を土台としたWebアプリケーション
・リッチテキストエディタ、ドラッグ&ドロップなどの機能、プレイバック機能
・オープンと拡張性を重視。組み込み型と拡張型の2種類のAPIを公開し、開発者はWave向けにサービスを開発できる
・Google Code LabsよりWave APIにアクセス可能
・Wave正式版は今年後半予定
・ソースコードも公開(OpenSource)

うーむ。
なんか色々なSoftwareのConsoleとして使えそうだ。

2009年5月28日木曜日

Dell OptiPlex760にESXiを入れる

VMWare-ESXi3.5Update4でACHIがSupportされたけどNICに関してはまだまだな部分が多い。
という事でDellの比較的新しめのPCであるOptiPlex760にESXiを入れるとNICを認識しない。
ネットを探してみた&会社の先輩からのアドバイスで下記のページを発見。
■Dell Optiplex 760 OEM.TGZ
先輩の話だとこれでいけたそう。
今度760に入れる機会があるのでその時に実験。

Chromiumで画面文字が小さくなる問題

実は私はGoogle Chromeではなく、ChromiumのDailyビルドを使っている。数時間毎に最新Buildが公開されているが、気が向いた時に更新して使っている。
が、そのChromiumで掲題の問題が発生した。
数日前、恐らくGoogleのChromeのVerが2になり開発β版であるChromiumがVer3になった頃だと思う。それ以後にDLしてきたChromiumを解凍して利用するとChromiumの画面の文字が異常に小さくなっていた。
「あぁ3になった事のバグか」
と思ってたけど一向に直らず。

そんな中、今日ふと思ってChromiumを一度アンインストール。本体があるフォルダを開いてゴミも消す。
その後ChromiumのDailyBuild用mini_installerを利用して再インストール。

そしたら直った。
どうやら2と3の間に結構仕様の変更が入ってるみたいです。

☆2009年5月29日追記
公式からも告知がでました。
■Google Chrome: Dev リリース 3.0.182.3

KAZさんすいません!

blogの見た目の変更していたら漏らしていたコメントに気付きました・・・。
KAZさん申し訳ないですorz。

して今の状況ってどんな具合でしょうか・・・?

あ、blogの見た目変えてみました。
Fusionってtemplateです。

2009年5月25日月曜日

気になる記事

■マルチコア・コンピューティング

仮想化支援技術

第一世代CPU仮想化支援機能


■AMD-V/Intel-VT
・仮想Machineが直接物理CPUコアに命令が出せる
・物理CPUコアが、相手が仮想MachineなのかHyperVisorなのかを判断して処理結果を返せる。

第二世代CPU仮想化支援機能


■AMD-RVI/Intel EPT
・仮想Machineが物理メモリ空間に直接書込が出来る

■AMD Extended Migration/Intel FlexMigration
・物理CPUコアが実装している特殊命令群(SSE等)に差異があっても仮想MachineのMigrationを可能とする機能。

■AMD IOMMU/Intel VT-d
・仮想Machineが、物理PCに搭載されている各種物理デバイス(主にLAN等)を直接制御、占有出来る技術

■VM Chimney/VMQ
TCP/IPの処理をNIC側で行う。

参考
■Intel VTvsAMD AMD-V ハードウェア仮想化 徹底比較

仮想化とクラウドの間

最近色々とクラウド関係の技術やら仮想化技術やらを調べている間に色々思うことがある。
特に自分の試行を整理する為に必要な単語として
仮想化以上クラウド未満

を指し示す言葉がない。

・第一段階:「仮想化」するという事は一個の物理的なPCで複数個の仮想Machineを動かす事。
・第二段階:その次の段階として要求に応じて必要とされる仮想Machineを簡単に準備出来る状態
・第三段階:さらに負荷に応じてその負荷に対応する仮想Machineサーバ構成を動的に変更してくれる「クラウド」


雑誌や俗に言うIT関係の技術を扱うニュースサイト、更に殆どのソフトウェア会社がいうクラウドは第二段階の状態を指し示して
いる。SalesForceを始めとする一連の「SaaS」もほぼ第二段階の環境を利用したサービスだ。

なので実際に段三段階つまり「クラウド」を実現しているのはやはりGoogleとAmazonだけだと思う。

こんな状態でこの第二段階を区別して指し示す言葉が、あるのなら知りたいし、無いのであれば何か定義した方がいいのでは無いだろうか。
逆にこの段階をそのまま区別用語に使ってもいいけど。