FC2ブログ

SN工房

 
 
 
 

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
 
 
 
 

自宅ファイルサーバーリプレースの道のり

これまでの投稿とは違って、今回はハードウェアなお話です。

去年、自宅で構築していた NAS がディスクを認識しなくなりました。
その NAS は、センチュリー 裸族の二世帯住宅 NAS を RAID1 で使用していました。
容量は、1TB です。


最初は NAS を再起動すると、初期状態で起動するという状態になりました。
しかし、この時点では何回か再起動を繰り返すと、
正常な状態で起動することもありました。

また、ディスクのステータスランプが異常を示す赤色になっているが、
管理ツール上問題はなく、普通に使えていました。


だましだまし使っていたのですが、最終的に初期状態でしか起動しないようになりました。


しばらく、ファイルサーバーは停止したままだったのですが、
年明けて、今週、意を決して新しい RAID を組める
HDD ケースディスクを購入。
しかも、3TB。

今回は、NAS をやめて USB 接続のやつにしました。

ここからが勝負でした。

NAS で使用していたディスクは問題がないはずなので、
データを取り出したい!

しかし、NAS は Linux が入っていたので、
ディスクを Windows の FAT や NTFS ではなく、
Ex3 でパーティションをきっていました。

もちろん Windows ではそのまま認識しません。

そこで、最初は、「DiskInternals Linux Reader」というツールを使用してみました。
しかし、パーティションは認識したものの、
パーティションに触ろうとすると、

「チェックディスクしてね♪」← 意訳

と言われ、中が見られない。。。
このときは、頭の中が真っ白になりました。。

「あー・・データが逝った。。。」

しかし、めげずに他のツール「Ext2Fsd」を試しました。

このツールがバッチリ動作!
しかも、Ex3 のパーティションをマウントして
エクスプローラで見られるというすぐれもの!!

NAS にあったデータが目の前にあります!


さっそく NAS にあったデータを
新しく組んだディスクにコピーをしました。

昨日のコピー開始時点で、コピー時間 8 時間。。
朝の時点でも、後 1 時間だったので、
今頃はコピーが終わっているでしょう!!

まだ、データの中身までは確認していませんが、
無事だと思います(思いたい)。

とりあえず、一段落できました!!


ちなみに、NAS で使用していた、もう片方のディスクの中を見たら、
まっさら。無。チリひとつない生まれたての状態でした。

え、動いているときは RAID として認識していた気がするが。。。
おーいセンチュリーさんミラーリングって言葉しってますかーっ?(怒





スポンサーサイト
 
 
 
 

Wordpress メモ #004 ~ 3.5 へのアップグレード

最近おぼえている技術をまとめる時間がなく、
ものすごく久々の更新となりました。

本日は、Wordpress 3.5 へのアップグレードの話題です。

自身が管理しているサイトの Wordpress が、
3.4 から 3.5 に自動でアップグレードできませんでした。

自動アップグレードをしようとすると、
ダウンロード、もしくは展開中に応答がなくなります。

手動も考えましたが、普段なまけている
アップグレード中のプラグイン停止を考えてみました。

自動アップグレードが成功しているローカルの Wordpress を比べると、
アップグレードできない Wordpress は、次の二つのプラグインが有効になっていました。


  • Google Analyticator

  • Google XML Sitemaps with Multisite support


これまた手抜きで、上記二つのプラグインを同時に停止して試したので、
どちらが原因だったのかはわかりませんでしたが、
プラグインを停止することで、自動アップグレードが正常に動作しました。

同様の症状が発生している方がいましたら、
上記プラグインを疑ってみてはいかがでしょうか?

ではでは。

 
 
 
 

Wordpress メモ #002 ~ 子テーマ作成時の注意点

Wordpress で既存のテーマを拡張したいときに、
子テーマを作って拡張することができます。

子テーマを作るための最低条件は、

・テーマフォルダに子テーマのフォルダを作成する(例えば、wp-content/themes/child)。
・作成した子テーマフォルダに style.css を作成する。
・作成した style.css に、Theme Name と親テーマのフォルダを示す、Template を記述する。
※ 詳しくは、こちらを参照。

通常は、この手順で、Wordpress の管理ページのテーマに子テーマが表示されます。
しかし、Mac の環境などで、子テーマの style.css の改行コードを
CR のみにしてしまうと、子テーマを認識してくれません。

Mac などで開発される場合は、改行コードに気をつけて作成しましょう。


ではでは。

 
 
 
 

Codeigniter のファイルアップロードクラスで独自 MIME タイプを設定する

Codeigniter でファイルをアップロードする場合は、ファイルアップロードクラスを使用します。

Codeigniter のサイトに良質なサンプルが掲載されているので、ここでは割愛させていただきます。

http://codeigniter.jp/user_guide_ja/libraries/file_uploading.html

Codeigniter のサイトにあるサンプルでは、

$config['allowed_types'] = 'gif|jpg|png';

のようにファイルタイプを指定するとあります。

Codeigniter 2.0.3 のソースを覗くと、このファイルタイプの許可は次のように動作します。

まず、allowed_types で指定した値とアップロードされたファイルの拡張子が一致するかをチェックします。

拡張子が一致した場合、拡張子に対応する MIME タイプと、実際にアップロードされたファイルの MIME タイプが一致するか調べます。拡張子に対応する MIME タイプは、application/config/mimes.php ファイルの $mimes 配列で定義されています。

以上がおおまかな MIME タイプのチェックになります。


上記で説明したように、MIME タイプをチェックするためには、mimes.php の $mimes 配列で定義されていないといけません。
よって、mimes.php で定義されていないような独自のファイルタイプは、チェックできず失敗します。

そこで、正式な手法であるかわかりませんが、次のような方法で独自のファイルタイプをアップロードすることができます。

手法 1: $config['allowed_types'] に * を指定する。
$config['allowed_types'] に * を指定することで、すべてのファイルタイプを許可することができます。
※ * は、ワイルドカードの * ではありません。* を指定することでファイルタイプのチェックをスキップするような実装になっています。

手法 2: $mimes 配列にファイルタイプを追加する。
$mimes 配列にファイルタイプを追加する方法は、mimes.php の $mimes 配列の定義に直接追加する方法と、upload メンバの $mimes 配列に追加する方法があります。

MIME タイプが "text/plain"、 拡張子が .I であるファイルタイプを追加する場合は,
それぞれ次のようにします。

mimes.php の $mimes 配列に設定する場合
$mimes = array('hqx' => 'application/mac-binhex40',
'cpt' => 'application/mac-compactpro',
'csv' => array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel'),



'eml' => 'message/rfc822',
'json' => array('application/json', 'text/json'),
'i' => 'text/plain'
);
$config['allowed_types'] = 'i';

upload の $mimes メンバに設定する場合
$config['allowed_types'] = 'i';
$this->upload->initialize($config);
$this->upload->mimes['i'] = 'text/plain';

※ 拡張子は小文字で指定します。



ではでは
 
 
 
 

get_class の挙動

PHP の get_class 関数の挙動で気になることがあったのでメモしておきます。

PHP でクラスを作成して、そのクラスのメソッド内部で get_class をコールしているとします。
そのクラスを継承したクラスのインスタンスを作成して、
親のメソッドをコールした時に get_class は何を返すのでしょうか?

自分は、子供のクラスの名前が変えることを期待していましたが、
最初は親のクラス名が返ってしまい、期待通りに動いていませんでした。

親クラスでは get_class に引数を指定しないで呼び出していました。
関数の説明には、クラス内部でコールする場合は省略できるとあったので。。。

しかし、だめもとで、引数に $this を指定したら
子供のクラス名が返るようになりました。

ちなみに、クラス名を取得するには、__CLASS__ というのもありますが、
これは get_class の引数に空をしていした場合と同じように、
親のクラス名が返ります。

以下は、サンプルコードです。

class ParentItem
{
public function GetClass()
{
return get_class();
}
public function GetClass2()
{
return get_class($this);
}
public function GetClass3()
{
return __CLASS__;
}
}

class SubItem extends ParentItem
{
}

$item = new SubItem();
echo $item->GetClass() . "\n";
echo $item->GetClass2() . "\n";
echo $item->GetClass3() . "\n";


上記を実行すると

ParentItem
SubItem
ParentItem


となります。

ではでは。





 
 
 
 
プロフィール

SN工房

Author:SN工房
FC2ブログへようこそ!

 
 
 
 
 
 
 
 
 
 
 
 
 
 
検索フォーム
 
 
 
 
 
 
 
 
ブロとも申請フォーム
 
 
 
 
QRコード
QRコード
 
 
Pagetop
 
 
 
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。