<?php
$replies = simplexml_load_file("http://[TwitterユーザーID]:[Twitterパスワード]@twitter.com/statuses/replies.rss");
foreach($replies->channel->item as $item) {
$title = (string)$item->title ;
$link = (string)$item->link ;
$date = date('Y/m/d H:i:s', strtotime((string)$item->pubDate));
print ("[<a href='".$link."'>".$date."</a>] ".$title."<br />");
}
?>
こんなかんじ。
PHP5から導入されたSimpleXMLを使うとこんなに楽にできます。
時刻フォーマットの変換にも注目。
TwitterRSSフィードのBasic認証はアドレス前にhttp://ユーザーID:パスワード@twitter.com・・・・・」とすることで解決。
ちなみに、SimpleXMLでXMLをパースするときに
参照: http://blog.livedoor.jp/gnoot/archives/51371942.html
普通に”:”を”_”に一括置き換えしちゃって扱えるようにしちゃえばいいんだけども、”http:”なども”http_”になってしまうために自分は必要なものだけ置き換えすることにした。
TwitterのRSSではこの処理は必要ないけどね。
<?php
mb_internal_encoding("UTF-8");
$string = str_replace('slash:comments','slash_comments',file_get_contents("http://blog.htlab.net/feed"));
$rssdata = simplexml_load_string($string);
$length = 60;
$title = $rssdata->channel->item[0]->title;
$link = $rssdata->channel->item[0]->link;
$comments = $rssdata->channel->item[0]->comments;
$comments_all = $rssdata->channel->item[0]->slash_comments;
$date = $rssdata->channel->item[0]->pubDate;
$description = $rssdata->channel->item[0]->description;
$date = date('Y/m/d H:i:s', strtotime($date));
if ($comments_all == 0) {
$comments_all = "";
} else {
$comments_all = "(" . $comments_all . ")";
}
if (mb_strlen($description,"UTF-8") > $length) {
$description = mb_substr($description, 0, $length,"UTF-8") . "....[<a href='$link' target='_blank'>記事は省略されました</a>]";
}
$description = strtr($description, array("。" => "。<br />"));
print <<<EOD
<h2>管理人の日記</h2>
<h3><a href="$link" target="_blank">$title</a> [$date]</h3>
<p>$description<br />
<br />
[<a href="$comments" target="_blank">記事にコメントする</a>$comments_all] [<a href="http://blog.htlab.net/" target="_blank">すべての日記を見る</a>]<br />
</p>
<br />
EOD;
?>
このブログの最新記事取得コード。
前回のハードウェア構成の上、FreeNAS 0.7を使用してZFSでファイルサーバーを構成してみます。
ハードディスクにFreeNASのインストールが終わったら設定を始めます。
(FreeNAS上で設定したことは一括でバックアップがとれるので、システムHDDは1台と割り切っています。障害が出れば再セットアップの上、バックアップから設定を復元するだけです。)
■SSH接続方法
サーバーラックに取り付けた場合を考えて、遠隔地から操作出来るようにします。
・ユーザーの追加
「アクセス」→ 「ユーザーとグループ」からユーザーを追加します。
このとき、Shellに「tcsh」、プライマリグループに「wheel」を選びます。
・SSHの有効化
「サービス」→「SSH」からSSHの設定画面を開きます。
有効にチェックを入れて保存するだけで大丈夫です。
・MacからのSSH接続
ターミナルを起動し、「シェル」→「新規リモート接続」の順にクリックします。
ウィンドウが出てくるので、サーバーを選び、先ほど作成したユーザー名を入力し、接続をクリック。
コンソールが開き、パスワードを聞かれるので入力。これで接続が完了。
「su」と入力後、またパスワードを問われるので入力。これで管理者権限となり、ZFS関連のzpoolコマンドも使えるようになります。
・WindowsからのSSH接続
puttyなどを使えば簡単に出来るかと思います。
まだ未確認。
■ZFSの設定
Web画面からすべて行えます。
少し調べれば設定方法にたどり着けると思うので、ここではかきません。
ただし、後々ディスクを追加することはコンソールからコマンドで操作しないと無理みたいです。
zpool status、zpool listで確認しながらzpool addやzpool attach,dettachなどをうまく使ってください。
自分はミラー構成でストレージプールに接続をかけています。
HDDを大量に接続できるハードウェア構成として以下のようなものが考えられます。
・ポートマルチプライヤ(PMP)
・SATAインターフェースカードを大量に使う
ポートマルチプライヤとは1本のSATAコネクタに5 台のHDDを取り付けられるよう、分岐する装置です。
その分、転送速度は遅くなりますが取り回しが楽になります。
後者の方法はその名の通り、HDD1本に対して、SATAコネクタ1本を割り当てるというものです。
今回はこの方法を使ってみたいと思います。
なぜポートマルチプライヤを使わないか?というと。
実は今までのファイルサーバー構築には使用していました。
実際に使ってみてわかることは、
・値段が高い(PMP1台につき1万円弱)
・対応しているOSが少ない
ということです。
自分が試したところ、一番安定しているのはWindowsでの使用で、Linuxでは使えることには使えましたが、実際の運用に耐えうる安定性は得られていません。
その上、Windowsでは2TBの壁があり、PMPが満足に使える環境はサーバー系OS。
最低限WindowsServer2003がないと使用することが出来ません。
以上のことからSATAインターフェースを大量に増やす方向で、大容量ストレージのハードウェア構成を決めたいと思います。
この構成ならば、Linux,Unixで使用することも容易です。
■マザーボード
SATAインターフェースカードを大量に使うということから、PCIなどのバスが多く使えるマザーボードが必要になります。
今回はGIGABYTE社の「GA-P43- ES3G」(購入先:Arkネット通販 ¥9,980)を使用しました。
PCIスロットが5本、PCIExが2本ついています。
PCIスロットはすべてインターフェースカードに、PCIExpressソケットはNICとグラフィックボードに割り当てることにします。
■CPU
ZFSを導入するということからある程度のスペックが必要です。
64bitに対応していると面倒がないです。
今回は手元にあったCeleron(2.66GHz)を使うことにしました。
■メモリ
ZFSを使う上で最低512MB程度のメモリが必要です。
手持ちの2GBを2枚使用し、4GBのメモリを用意しました。
■グラフィックボード
PCIExpressタイプの適当なグラフィックボードを用意します。
安定稼働を考えると、ファンレスタイプは導入できません。
表示確認にしか使わないので、ファンがついていることを条件に一番安いものを選びました。
玄人志向の安いファン付きのモデルでいいでしょう。
■NIC
PCIExpressスロットに刺さる安定しているNICということでIntelの物を使用します。
「インテル PRO/1000 PT サーバ・アダプタ EXPI9400PT」
(購入先:Amazon ¥10,850)
■インターフェースカード
PCIスロット5本を使い、SATAを増設します。
RAID機能はソフトウェアで使用するので単なるインターフェースカードで結構です。
今回は玄人志向の「SATA2I4-LPPCI」を5枚用いることで、SATAコネクタを 20個増設することが出来ました。
マザーボードと合わせて26個のSATAデバイスが使用出来ることになります。
■HDDエンクロージャ
サーバーラックに取り付ける都合上、使用したPCケースはラックマウントケースになります。
PC本体になるラックマウントケースは、フリージアで販売されている「SKYTEC」の「SKI-4800」を使用。
http://www.freesia-net.co.jp/server/case4u.htm
HDDをマウントするエンクロージャとして「センチュリー」の「5代目 技あり!楽ラック!(CWRS5-BK)」を4個使用。
合計20台のHDDマウントに対応しました。
http://www.century.co.jp/products/pc/hdd-kit/cwrs5-bk.html
PC本体にエンクロージャが1つしか入らないため、残りの3つ(HDD 15台)は外付けする必要があります。
5インチベイが大量についているラックマウントケースとして、「IBM NetBAY 0034B0X」を使用しました。
これはDDSテープドライブを複数設置するためのテープエンクロージャで、ヤフーオークションにて入手しました。
新しく制作される方は、5インチベイが9個ある、ラックマウントケースを探し出す必要があるでしょう。
ちなみにSATAのケーブル類は、秋葉原の千石電商にて格安で入手することが出来ました。
例を挙げると、一般には1000円以上するSATA延長ケーブルが200円などです。
以上、大容量NASを制作されるかたの参考になればと思います。



