2015年3月24日火曜日

【TeraStation】HDD換装でのEMモードからの復旧

1TB×2のRAID1にて運用していたTeraStationの片方のHDDが壊れてしまったため、
4TB×2のHDD入れ替えを検討。

HDDを両方とも入れ替えたところ、EMモードとなってしまった。
Web管理画面にもアクセスできず、ファームアップデートを試みたものの、
パーティション情報が無いと言われてアップデートできずに試行錯誤。

アップデータに含まれるTSUpdater.iniというファイルの
VersionCheck, NoFormattingを0にしたところ、
アップデートをすることが出来た。

パーティション情報が無いと言われるのは当然としても、
アップデートが出来ないのは納得できない。

それよりも、上記書き換えについて、分りやすく書いていてほしかった。
(正規のやり方ではないかもしれないが。)

2015年3月12日木曜日

【C#】XmlSerializerではsetアクセサーが呼ばれない

Dictionary<string, string>を保持したクラスにて、
インスタンス丸ごとシリアライズ・デシリアライズを行うため、
以下のようなプロパティを作成して実行した。 

public List<KeyAndValue<string, string>> Parameters
{
    set { Dictionary = ListToDictionary(value); }
    get { return DictionaryToList(value); }
}

シリアライズは問題なく行われたものの、
デシリアライズ後のDictionaryは空のまま。

シリアライズ時はget、デシリアライズ時はsetを行うのではという想定で、
setアクセサにブレークを張るものの引っかからない。

試しにgetアクセサにてブレークを張ったところ、
予想外に引っかかった。

なぜ?と言うことで調べて見たところ、
以下の記事が見つかった。

 http://goo.gl/W94Md0

XmlSerializer does not call the setter for a collection. Instead is calls the getter, and then adds items to the collection returned.
setアクセサを呼ばずに、getアクセサで取得したコレクションに対してアイテムを追加すると。

原因判明。