2014年4月28日月曜日

testdiskをやってみた。

ひょんなこと、焦ったこと、ありがちなやっちまったで、大切な大切なデータがぶっ飛びになりました。
バックアップと称した剥き出しのHDDは、どのように保存されたかわかりません。
どうも、QNAPの同期後の片割れとして、コピーされ、抜き取られ、保存(放置)、最悪、これを入れてもう一台は空のHDD入れれば元に戻るだろーぐらいの安易な考え。甘かった。
対象のHDDを、Windows7から、 LiveのCentOS6から、GPartedから、と、色々見たり、修復しようと頑張ってます。いまはtestdiskちゅーのを試してます。
3つめ?のパーティーションが壊れてる?のかスーパーブロックがどうたらと、わけのわからん英語が並んでるので、もーいーやーの気持ちはありつつ、DeepSearchして・・・、結果も微妙ー。
んー、んーんー、って唸って、 あれ?NTFSって書いてなかった?まさかねー・・・。帰ったら試してみよう。(←いまここ)

2014年4月24日木曜日

StudyingHTTPを勉強させて頂きました。

やっと、HTTPのIntroductionを読みました。
変遷激しい。
SOAP、RPC、忘れないようにしないと。
今年、いや、今後は「7回読む」で認識→理解→血肉にしていこう。そうしよう。

2014年4月17日木曜日

途中経過をザッと書き残す。気紛れに、

2014年の出来事(1)「NAS事件」
・引っ越しからのファイルサーバ(QNAP)移転→実家へ。
・NAS(QNAP)の保存する内容を追加。←これがイケなかった。Orz
・NASの赤ランプ発見!
・ゴチャゴチャ弄ってたら、読み込めなく?なって、「あ。」フォーマット。
 →そう、アフォーマットなのだ。アフォー!
・・・(シーーーーン)・・・

(耳が壊れたかと思った。)

・過去の写真やら遊びに行ったときに撮った動画とか、とにかく自分には重要なものだった。
・とても焦った。そして、こんな時のためにコピーがあることを思い出した!

・「ん?」・・・復旧しない。むしろ、中身が読めない。…というか、どんな形式で保存したのか、忘れた。
~試行錯誤中(4週間)~

・ようやく、たぶん、QNAPのRAIDした片割れだと推測。
・しかし、普通EXT4の領域が「不明」と出てマウントできない。
・gpartでも、表示されなかった。なんかダメそうだ…。
・とりあえずddでコピッたドライブに、PhotoRecとか復旧系の操作をしてみようと計画中。←☆いまここ。

2014年の出来事(2)「ポチッとRAID ZでFS勃った!」
・「NAS事件」のショックからなのか、気づいたらWD RED 3TB ×4個、ポチってた。ビックリした。

・気づいたらカネが無くて、ポチったドライブを搭載する箱がない。
・しょうがないので、うちのパソコンドライブ大移動。スゲー疲れた。
・もう、肚を決めて、RAID Z、ZFS、なんかあったら死に物狂いで復旧すると、NAS4FREEを入れた。
・ビックリするぐらい何もせずに、USBメモリ起動のNASが出来た。 ←☆とりあえずココ。

2013年11月28日木曜日

リスタート。またやるよ。

またまたまたまた、久しぶり。
飽きやすいったらありゃしない。
もうね、しょうがない性分だよ、もう。
なんにせよ、また始めればいいじゃあないかぁー、ってことで、リスタート!

とりあえずのネタ。
1.パソコン組んだが、組んだだけ。
2.NASを買ったが、物欲満たしただけ。
3.ワードプレスでなんかやりたいかな。

ま、とりあえず。

2010年1月25日月曜日

【よくわかる!実践Cプログラミング】のお勉強~第1部 Part 2 ~

じゃ、遅くなったがPart2を。
★「while 文」
#include
int main(void)
{
int sum, price;
printf("すでに使った金額は?\n"); // メッセージを出力し、
scanf("%d",&sum); // 変数sumに値を入力する
while( sum <= 300) // 繰り返しここから
{
printf("欲しい物の金額は?\n");
scanf("%d",&price);
sum += price;
} // 繰り返しここまで

printf("300円を超えています。\n");
return 0;
}

「sum += price; 」 は、sum と price の値を足したものになる。「sum = sum + price」
while文は実行する前に条件式を調べる。
do文は実行した後で条件式を調べる。
for文はあらかじめ回数が分かっている繰返しを記述するのに適している。

★「printf」の話
#include
int main(void)
{
printf("Hello World\n");
return 0;
}

Hello World の表示をする、プログラミングを勉強する時に1番初めに良く見るコード。
次の1行を入れて、「90%discount!」と表示させたい。
printf("大安売り!なんと90%disount!\n");
このままでは、「%d」と認識されてしまうので、「%%」と処理する。
printf("大安売り!なんと90%%discount!\n");
「%d」の本来の使い方は、
printf("計算結果は%dです\n",1+2);
と、2番目の引数として整数に置き換えられて出力する。「計算結果は3です」と表示される。
「%d」・・・整数型、10進数で出力
「%x」・・・整数型、16進数で出力
「%f」・・・浮動小数点型、実数
「%s」・・・文字列型、文字列、
「%c」・・・文字型、1文字
int a = 65;
printf("表示は、 %d %x %c %s です。", a, a, a, a);
「65 41 a a 」と表示させたかったが、”ハンドルされていない例外が発生”する・・・。本題から外れるので後回しにした。

■関連項目
sprintf関数:printf関数と同様の結果を、文字列として配列変数に入れます。
fprintf関数:fopenで開いたファイルなどにprintf関数と同様の出力を行います。

★「memset」配列をまとめてクリアする
memset( アドレス , バイト値 , サイズ);
※先頭に #include の追加

2010年1月14日木曜日

【よくわかる!実践Cプログラミング】のお勉強~第1部 Part 1 ~

前回はVisualStudio2008ExpressEdition をインストールしました。今回から少しずつ読んで、書いて、実行していこうと思います。 うすうす気付いていますが、きっとこのC言語の始め方は普通の入り方ではないと思います。しかし、どうしても飽きっぽい自分には、このような非常に面白い本から入れば3日坊主も7日坊主ぐらいになるかと思い、始めてみました。

~はじめてのC言語~「VC++でCプログラムを書く方法」
ホントは、テキストエディタで書いて、コンパイルし、実行の手順でやっていきたいのですが、とりあえず慣れるために IDEとしてVisualStudio、VC++を入れました。そして、C言語として作るには、少し手順があるので復習します。
1.プロジェクトの新規作成で、「Win32 コンソールアプリケーション」を選択し、プロジェクト名を入力する。
2.「Win32 アプリケーションウィザード」の画面で、「追加のオプション」の □空のプロジェクトにチェック☑をつける。
3.ソリューションエクスプローラの「ソースファイル」を右クリックし、「追加」→「新しい項目」を選び、C++テンプレートを選択し、ファイル名の末尾、拡張子を必ず「.c」にし、最後に「追加」をクリックする。
まずは「Hello World」からやりました。なんだか、JAVAでもやった気がします。

#include
int main(void)
{
  printf("Hello World");
  return 0;
}
と、ここがスタートになりました。
これをビルドして、デバッグしてみたのですが、正常に実行されたかわからないw ので、ブレークポイントを入れて、処理が途中で止まるようにしました。また、ステップインで1行ずつ実行できますね。。。

~C言語マイスターズ~「if文は畏怖すべき条件判断の冷徹宰相」
if文の書式 >> if( 条件式 ) 成立時に実行する文 else 不成立時に実行する文
えー、、、条件式に「0」が来たら、「成立」で、それ以外は「不成立」になるってことです。なので、
if( a ) printf("成立") else printf("不成立");
これの「a」に、「0」が入れば、「成立」と出ます。

●関連項目
switch文:複数の条件に分岐できる。
三項演算子:式に限定すれば、if文と同じ機能。   ・・・?

~ライブラリ紳士録~「ニャオ!猫の力で?文字列合体「strcat」
C言語では文字列を小さな整数(char型)の配列として扱う。(なるほど。。。)
puts関数だと、最後に「改行」が入るので、strcat関数で文字列をコピー追加する。
#include
#include
int main(void)
{
char name[19] = "よくわかる!";
char rank[] = "C言語";
strcat(name,rank);
puts(name);
return 0;
}
と、このようになるそうです。連結して全角9文字、18バイトですが、文字列の最後に「¥0」のnullが1バイトつくそうです。なので19バイトです。これは注意ですね。

●関連項目
strcpy関数:文字列を上書き。連結ではない。
strncat関数:追加バイト数を指定できるstrcat関数の派生形。
_mbscat関数:マルチバイト文字(シフトJISなど)の文字列を合体。
wcscat関数:ワイド文字(Unicodeなど)の文字列を合体。

~ライブラリ紳士録~「無駄に太るな,スリムに出力「puts」」
printf関数とputs関数で、似てるようだが違うので、使い分けもそうだし、メモリの消費も気をつけましょうといったことで、
puts関数とは・・・、引数の文字列と改行を標準出力に出力する。書き込みエラー発生時はEOFを返し、そうでない場合は負ではない値(←?)を返す。
と、実にシンプル・・・、負ではない値が気になるけど・・・。
printf関数のように、変数に入った整数を文字列に埋め込んで出力するような複雑な機能はありません・・・なるほど。そんなことができるのね。
puts関数の方が、より高速に処理できる、実行ファイルが小さい、必要メモリが少ない、そうです。実際に、比較してみました。VC++の設定は以下を変更しました。
・ビルドのターゲットをDebug からRelease に。
・構成プロパティを開き、コード生成 の ランタイムライブラリ を「マルチスレッド(/MT)」に。
・リビルドする。
すると、Release というフォルダに実行ファイルが生成されます。これをputs とpringf で書き換えて比較してみました。

●関連項目
fputs関数:fopenで開いたストリームなどに書き込みます。
gets関数:標準入力から1行入力します。

~C言語クイズ~「ifの迷宮」
リスト8から
#include
int main(void)
{
int a = 1, b = 0;
if( a ) if( b ) puts("Alfa") else puts("Bravo");
return 0;
}

これで、アルファとブラヴォのどちらが表示されるのか?
んー、1つ目のif が真で、2番目のif に行くけど、else に入ってBravo か?むむー、もしくは、、、つーか、1つ目と2つ目の見分けってするのか?うーん、疑問だ。