SOARISTO工房 Logo
Computer Archive
2012/08/04

 前回の続きです。

 $SiteFileNameを指定してExtractSiteLinks()を呼び出すと、サイトマップ情報(sitemaps.xml)からリンクを抽出し、配列($SiteLinks)として返します。

 あとは、配列の一つ一つの要素に対してCompressFile()を掛ければ、できあがりです。

 13行目で、XMLの<loc>~</loc>タグで挟まれた文字列を抽出し、リンク情報としています。

 15行目では、リンク情報を、URL表記からサーバ上の絶対パスに変換しています。14行目では、リンク情報が“/”で終わっているものについて、“/index.php”を追加して実体化しています。

 実行結果です。

 前回の処理以降、更新されているファイルのみ圧縮してくれます。blogをアップした時に手動で実行するか、あるいはcrontabを使って夜中に自動で実行させても良いかも知れません。

#とりあえず動かすことだけを先行したので、サイトマップ情報等の変数は直値で指定していますが、引数を与えて汎用にするか等は、お好みで。

2012/08/01

 久しぶりに、PHPのスクリプトを書いてみました。

 標記のとおり、MTが吐き出したPHPコードなどを圧縮して、ダウンロードを高速化するためのものです。

 実現する機能の割には、ライン数が多いように見えますが、特に複雑なことはしていません。

   $FileName = "/home/(username)/blog/index.php";
   CompressFile($FileName);

 などとしてCompressFile()を呼び出すと、$FileNameで指定したファイルの中身を解析して、圧縮してくれます。

 成功した場合には、圧縮したファイルのサイズ(byte数)を返し、何らかの問題で失敗した場合には、FALSEを返します(または強制終了)。

 中心となるのは、21~27行目です。

 21行目では、「/*_~_*/」で囲まれた(複数行にわたる)文字列をコメントと見なし、削除しています。同様に、22~23行目では、「//_~」および「#_~」以降の文字列をコメントと見なし、削除しています。(空白文字(スペース)は、“_”と表記)

#正確には、ダブルクォーテーションやシングルクォーテーションで囲まれた「//」や「#」は除外しなければなりませんが、スクリプトがややしこくなるので、今回は省略しました。

 25行目は、連続するタブ文字または改行文字を、1文字のスペースに変換しています。26行目は、連続するスペースを、1文字のスペースに変換しています。

 27行目は、「<p>~</p>_<p>~</p>」など、タグの間に挟まれたスペースを削除しています。

 もう少し頭をひねれば、mb_ereg_replace()の中の正規表現を、よりスマートなものにできると思いますが、いくつかのパターンで試してみたところ、上記のパターンが最もシンプルなものとなりました。

 なお、正規表現は同じでも、その順番を入れ換えてしまうと、正しく動作しません。

 MTが吐き出すPHPコードには、「{」と「}」を使わずに、1行に1命令で終わっている行があります。これを意識せずに単純に改行文字を削除すると、行(命令)の終わりが正しく解釈されず、動かなくなってしまいます。
(この現象(の理由)に気付くまで、数日間悩みました)

 その他の行は、ファイルの操作に関するものです。

 CompressFile()は、$FileNameで指定したファイルについて、念のためバックアップを取ります。次回以降に呼び出された際、オリジナルのファイルとバックアップのファイルのタイムスタンプを比較して、オリジナルのファイルが前回より更新されていたら、ファイルを圧縮します。
(更新されていなければ、処理をスキップします)

 これは、次回以降に紹介する(かも知れない)、MTが吐き出すサイトマップ情報(sitemaps.xml)を元に、圧縮すべきファイルを抽出する(更新されたファイルのみ圧縮し、処理を効率化する)ためのものです。

 なお、この処理により、SOARISTO工房blogのPHPコードは、平均で16%程度圧縮(軽量化)することができました。

 また、生成されたPHPコードは、改行文字のまったくない数珠繋ぎのものとなるため、いわゆるパチリ屋(コピペ小僧)の解析意欲を喪失させる、という副次的な効果もあります。

2012/06/30

 奥さんの演奏会のビデオをエンコードしていたら、水冷PCから悲鳴のような警報音が鳴り響き、夜中に叩き起こされました。0xF9FC

 オーバークロックにより、CPUの温度が設定値を超えたのかと思い、ASUSの管理ツールを見ようとしたのですが、立ち上がらず。

 はたまた、2TBのHD・5本で組んだRAID5が逝ってしまったのかと思い、LSIの管理ツールを見ようとしたのですが、こちらも立ち上がらず。

 焦るばかりで、けたたましい警報音は、一向に鳴り止みません。

ssd01.jpg

 やっとこさ、BIOSレベルでLSIの管理ツールを動かしたところ、RAID5のうちの1本ではなく、なんと、SSD・2本で組んだRAID0の片方が逝ってしまっていました。

 購入したのは去年の7月ですから、ちょうど1年が経ったところですが、常時稼働させていた訳ではなく、うちのM3 Coupeと同じように、ほとんど動かしていないので、SSDの寿命というよりは、個体の問題のようです。

 それにしても、あまりにも早いご逝去なので、少し驚きです。

ssd02.jpg

 Corsairはもう止めて、信頼のIntelにしようと思ったのですが、性懲りもなくCorsairを買ってしまいました。0xF9C7

 「CSSD-P128GBP-BK」(購入価格:11,980円×2台)です。読み込み最大500MB/s、書き込み最大340MB/sの、現状最速のパフォーマンスを誇ります。

ssd03.jpg

 128GBのSSD・2本でRAID0を組んで、起動ディスクとしてリビルドします。

#中身はやっぱりPLEXTORです。

ssd04.jpg

 システムの復旧を急いだため、SSD単体でのパフォーマンスチェックはできませんでした。

 組み合わせたのは、SATA3.0接続した「MegaRAID SAS 9265-8i」です。

 理論値では、シーケンシャルリードで1,000MB/sオーバーになるはずですが(前回は理論値どおりとなりました)、結果はご覧のとおりです。

 ただ、システムディスクということで、裏でいろいろなトランザクションが走っているところを考えると、なかなかに良いパフォーマンスを持っているのではないでしょうか。

 それにしても、前回とまったく同じ容量なのに、1年で価格が半分になっています。以前にも少し書きましたが、「技術屋は、頑張れば頑張るほど報われない」という感じです。

2012/05/27

 スマートフォンにも搭載され、いまや生活には欠かせないものとなったFeliCaですが、
(正確には、スマートフォンに搭載されているのは、NFC(Near Field Communication)という、FeliCaの上位規格ですが)

 現在製作中の「Ultimate Tera Storage Machine」に、取り付けてみることにしました。

felica02.jpg

 こちらが、今回取り付けた「非接触ICカードリーダー/ライター」(RC-S370)です。

felica03.jpg

 「CM 690 II Plus」には、天板に小物入れとして使えるような“窪み”が付いています。

 測ってみると、ちょうどいい大きさなので、ここに取り付けることにしました。

felica01.jpg

 取り付け上、問題となるのは、この「mini USB」のコネクタです。

felica04.jpg

 ということで、窪みの側面に四角い穴(10mm×5.5mm)を開け、コネクタを逃がすようにしました。

 現物合わせで正確に位置決めし、精密ヤスリで慎重に削り出します。

felica05.jpg

 カードリーダーを取り付けたところです。窪みにピッタリ納まりました。

 これで、Suicaなどの電子マネーの残高照会や決済をすることができます。(e-Taxで自動車税を支払うこともできます)

 また、PCの立ち上げ時には、Xperiaをかざすことにより、Windowsにログオンすることができます。

2012/03/10

 前回の続きです。今回は、ラジエーターを強化します。

cooling01.jpg

 以前に紹介した際には、ラジエーター本体に、直接PCファンを取り付けていました。

 実運用に入って、ラジエーター周辺に手をかざしてみると、PCファンが高速回転ししている際に、PCファン前方に、なぜか冷たい風が吹き出しています。

 どうやら、PCファンが起こした風がラジエーターに上手く吸い込まれず、風が逆流しているようです。

cooling02.jpg

 ということで、ラジエーターに「シュラウド」を取り付けてみることにしました。

 これは、ラジエーター本体とPCファンとの間に距離を持たせ、PCファンが起こした風を、ラジエーター全体に、均一に当てるためのものです。

 その効果をイメージにすると、上記画像のようになります。

 今回は、PCファン(およびラジエーター)が3連なので、トリプルシュラウド(25.95ドル)と、グリルガード(4.50ドル)を購入しました。

cooling03.jpg

 取り付けたところです。

 グリルガードが、PC本体のブラックメッシュと良くマッチして、なかなかイイ感じです。

cooling04.jpg

 んがしかし、このシュラウド、作りはけっこういい加減です。

 天板(および底板)の両端にある“ツメ”は、アクリル板を切削したままなので、左右の側板の嵌合とうまく合いません。ツメの部分を平ヤスリで少し削って、調整してやる必要があります。

 また、シュラウドとPCファンとの間、シュラウドとラジエーターとの間に、微妙な隙間が空いてしまっています。

#生産国は書かれていませんが、おそらく中国か台湾かと。

cooling05.jpg

 ということで、こんな感じにスポンジシートを貼り込んで、気密性を高めてみました。

cooling06.jpg

 シュラウドの取り付け前後で、クーラントの温度測定をしていないので、効果の程は定かではありません。

 定かではありませんが、ラジエーターの裏側に手をかざしてみると、ラジエーターのフィン全体から生温い風が抜けてきているので、少なからず効果はあるものと思われます。(と思いたい)

 HD映像のエンコードのため、4.8GHzまでオーバークロックしても、CPU温度は最大で38℃でした。水温は、イン側(冷却前)が28℃で、アウト側(冷却後)が26℃となりました。
(いずれも、室温19℃の時)

 高負荷時には、PCファンの回転数は2,000rpm前後となるため、それなりの騒音はしますが、CPU温度が40℃を超えることはないので、長時間、安心してオーバークロックすることができます。
(アイドル時の回転数は、1,200rpm程度なので、ほぼ無音に近い状態となります)