玄人箱(KURO-BOX/PRO)で2TのHDDを使用する。

数年前に購入した玄人箱。「玄箱PROで遊ぼう!!」という本を参照に、
Debian化してあったが、最近容量が不足してきたのでHDDを交換することになった。

ものぐさなので、何も考えず500GのHDDを抜き取り新しく買ってきた2TのHDDを突っ込む。

もちろん、動かない…。

Debian化した時何をやったかすら覚えてなかったが、
U-BootのブートのパラメータがHDDに向いてる事ぐらいは分かるので、
フラッシュメモリからブートするようにブートパラメータをコンソール経由で書き換える。
(前面の基盤にハンダずけしてシリアル化してあってよかった・・・)

Marvell>> setenv bootargs_root root=/dev/mtdblock2 rw panic=5
Marvell>> setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver)
Marvell>> setenv bootcmd 'nboot $(default_kernel_addr) 0 $(nand_uImage_offset); setenv bootargs $(bootargs_base) $(bootargs_root) $(buffalo_ver); bootm $(default_kernel_addr)'
Marvell>> setenv nand_boot yes
Marvell>> saveenv
Marvell>> boot

これで一応標準の状態に戻ったので、もう一度Debian化をしようと思ったが、
なんと、Debian化のインストーラ(db2install)が途中でエラーとなってしまう。

中身を見ると、「mkfs.ext3 /dev/sda2 」の部分でエラーになっている。
どうやら玄人箱PROのスペックでは2Tのディスクにファイルシステムを作れないらしい。

というわけで、他のマシンでファイルシステムの作成だけ行うことにした。

まず、db2install の以下の部分をコメント化。

#vi /usr/local/bin/db2install
	  :
	(省略)
	  :
--- ここから
# debian install
#fdisk /dev/sda < /usr/local/bin/PartitionDefinition2
#mkfs.ext3 /dev/sda1
#[ $? -ne 0 ] && exit 1
#mkswap /dev/sda3

#mkfs.ext3 /dev/sda2
#[ $? -ne 0 ] && exit 1
-- ここまで
	  :
	(省略)
	  :

次に、別のLinuxマシンでファイルシステムを作るわけだが、
fdiskのパラメータはファイルにスクリプト化されているのでメモっておく。
(たんにパーティションを削除してswap領域とデータ領域を作ってるだけだが)

#vi /usr/local/bin/PartitionDefinition2
d
1
d
2
d
3
d
4
d
5
d
6
n
p
1

+50MB
n
p
3

+128MB
t
3
82
n
p
2


w

上記のパラメータを用いて別Linuxマシンでfdiskとmkfsを行い(db2installのコメント化した部分と同等の操作)
もう一度玄人箱にHDDを挿しなおして、パッチしたインストーラ(db2install)を動かす。

2Tなので初回のHDDチェックに30分ぐらいかかったが、
無事2TのHDDを使用することが可能となった。

西暦変換と和暦変換サンプル

        /// <summary>
        /// 西暦変換("2009年 3月 1日"を"20090301"にする)
        /// </summary>
        /// <param name="target"></param>
        /// <returns></returns>
        private string cnv西暦変換(string target)
        {
            string[] str = target.Replace(" ","").Split('年','月','日');

            return string.Format("{0:D4}{1:D2}{2:D2}",  Convert.ToInt32(str[0]),
                                                        Convert.ToInt32(str[1]),
                                                        Convert.ToInt32(str[2]));
        }
        /// <summary>
        /// 和暦変換("平成21年7月1日"を"20090711"にする)
        /// </summary>
        /// <param name="target"></param>
        /// <returns></returns>
        private string cnv和暦変換(string target)
        {
            CultureInfo culture = new CultureInfo("ja-JP", true);
            culture.DateTimeFormat.Calendar = new JapaneseCalendar();

            DateTime result
                 = DateTime.ParseExact(target, "ggyy年M月d日", culture);
            return string.Format("{0:D4}{1:D2}{2:D2}", result.Year, result.Month, result.Day);
        }

Microsoft Visual SourceSafe のファイル変更履歴をテキスト出力する方法(期間指定)

以下の内容のBatファイルを作成し、パラメータを環境に合わせて実行すれば
指定のフォルダにテキスト出力される。

履歴取得Batファイルの中身

@echo off

:VSSのフォルダのパス
set vssPath="C:\Program Files\Microsoft Visual SourceSafe\"

:VSSユーザ名とパスワード
set ssUser=guest
set ssPwd=guest

:VSSのパス
set "ssDir=C:\VSS_DB"

:取得場所
set outputPath="C:\VSS_WORK"

:取得開始日
set ST_DATE=2011/03/31

:取得終了日(ex.数年先。2099年とか指定すると正常に動作せず。おそらく1999と認識している模様…bug?)
set ED_DATE=2020/12/31

mkdir %outputPath%

:履歴の取得
%vssPath%ss History  -vd%ED_DATE%;11:59p~%ST_DATE%;0:00a -R -D $/ -O%outputPath%\_history.txt

pause

よく使うDOSコマンド

コマンドプロンプトからよく使うやつ

ファイルの上書きコピー          copy [コピー元ファイル名] [コピー先ファイル名] /y
ファイルの読み取り専用解除      attrib -r [ファイル名]”
タスクのKILL                taskkill /im [EXEファイル名] /f /t
記憶しているPasswordの削除      rundll32.exe keymgr.dll,KRShowKeyMgr

主なアプリケーションの起動コマンド

Ctrl+Winキーで「ファイル名を指定して実行」を呼んで使おう!

コントロールパネルの起動            control
グループポリシーの起動              gpedit.msc
イベントビューアの起動              eventvwr.mscバイスマネージャの起動            devmgmt.msc
コマンドプロンプトの起動            cmd
ログインユーザのフォルダを開く      .

rowspanを動的に変えたい

以下のようにHiddenFieldにrowspanの値を設定することで可能
(HtmlTextWriterでThやTrタグ出力時点でrowspanが確定していない時に・・・)

<table border = 2>
    <tr>
        <th rowspan='<%= hdnRowSpan.Value %>'>分類1</th>
        <td>分類1−2</td>
    </tr>
    <tr>
        <td>分類1−3</td>
    </tr>
    <asp:HiddenField ID="hdnRowSpan" runat="server" EnableViewState="false" Value="2" />
</table>