弊社の使っているサーバーセンターは24時間有人監視していますし、例えばネットワーク負荷の状況が知りたければいつでも教えてくれます。
ただ、自分で確認できるようにしておくのも何かと必要ですので、MRTGの出番です。SNMPを可視化するツールで、これの使い方はググればいくらでも設定方法が出てきます。
そんなわけで、少し便利なTipsを書いておきます。
mrtgでサーバーを監視しよう
Zend_Configの速さ比較
Zend_Configはini,xml,json,yamlと配列で書くことができます。何が速いってそりゃ、PHPの配列で書くのが速いでしょうけど(確かめていませんが)それはおいておいてきます。
配列を除いた4つの形式で何が一番速いかを調べてみました。環境はWindowsXP上のPHP5.3.3です。
やり方は単純で同じ内容の設定ファイルを1000回パースするだけです。つまり
$config = new Zend_Config_Ini('test.ini', 'common');
$config = new Zend_Config_Xml('test.xml', 'common');
$config = new Zend_Config_Json('test.json', 'common');
$config = new Zend_Config_Yaml('test.yaml', 'common');
をそれぞれ1000回繰り返すだけ。当然、ファイルの読み込みも1000回繰り返されますが、実際にはファイルも読み込まれるわけなので問題なしということで。
また、設定ファイルの内容でも速度は変わってきます。そこで色々なファイルを試してみてつかんだ結果です。
まず、YamlはYaml用のライブラリが無く、PHPのYaml関数を使えなかったので使えないと思いきや使えます。ただし、ライブラリを使ってるわけではないので他の数十倍の遅さです。
Zend_Config_Yaml::decodeのコメントを見ると
Very dumb YAML parser
なんて書いてあったりします。ってことで残念ながら論外。
で、テスト前の予想では単純に
ini > json > xml
の順で速いんじゃないかなと予想でしたが結構条件によって変わりました。
1×1の透過gif画像を簡単に出力しよう
例えば、HTMLメールの開封チェックがしたいとか、アクセス解析がしたいとか、まあ色々と理由はあると思いますが1×1の透過gif画像をプログラムから出力したいってのは稀にあります。
そういえば、その昔はCSSを使わないで1×1画像でWebのレイアウトを組んでいたりいなかったりしてましたね。
PHPで画像を出力する方法はいくつかありますが普通に思いつくのはサーバー上の画像を読み込んで出力です。
でも、画像を用意したり、画像までのパスを書いたりで案外めんどくさいんですよね。
mb_http_output("pass");
header("Content-type: image/gif");
$file = '1x1.gif';
$fp = fopen($file,'r');
$gifdata = fread($fp,filesize($file));
fclose($fp);
print $gifdata;
つぎはちょいとひねってimage関数を使って出力してみます。でも、GDが必要になっちゃいますしなんか無駄なことをしている気が・・・・
CSS3でかっこいいボタンを作ろう【第四回:上級編(animation)】
CSS3でボタンを作るシリーズ最終回。
対応ブラウザ:Chrome, Safari, Firefox5+
今回はダメ押しの『animation』について。CSS3でのアニメーションといえば前回紹介した『transition』がありますが、『transition』で作成できるアニメーションは状態A→状態Bのような単純なものです。『animation』はキーフレームを使用してより複雑なアニメーションを作成できます。正直ボタン作るのにここまでする必要は無いと思いますが、いい機会なのでまとめて学んじゃいましょう。
CSS3でかっこいいボタンを作ろう【第三回:中級編(RGBa、@font-face、transition)】
CSS3でボタンを作るシリーズ第三回です。これまでに角丸、テキストシャドウ、ボックスシャドウ、グラデーションを使ってボタンを作成してきました。
過去記事
第一回:入門編(border-radius、text-shadow)
第二回:初級編(box-shadow、gradient)
今回はさらに
を使ってみましょう。まずは前回のおさらいから。
html
<a href="#" class="button">Button</a>
css
a.button{
display: inline-block;
padding: 0.5em 1em;
background: #cccccc;
border: 1px solid #666666;
border-radius: 10px;
color: #000000;
font-size: 30px;
line-height: 1;
text-shadow: 0px 1px 1px #ffffff;
-webkit-box-shadow: 0 1px 5px 0 #bbb, inset 0 1px 1px #fff;
-moz-box-shadow: 0 1px 5px 0 #bbb, inset 0 1px 1px #fff;
box-shadow: 0 1px 5px 0 #bbb, inset 0 1px 1px #fff;
background-image: -webkit-gradient(linear, left top, left bottom, from(#dddddd), to(#888888));
background-image: -moz-linear-gradient(top, #dddddd, #888888);
background-image: -o-linear-gradient(top, #dddddd, #888888);
}