2011年3月アーカイブ

懸案のスナップショットによるバックアップを実行することにした。 論理ボリュームに空きを作らなかったので、まず、スナップショット領域を作成する。 まず、事前にバックアップを取る。 そして、OSをインストールCDからレスキューモードで起動する。 boot: linux rescue # lvm vgchange -a y # fsck.ext3 -f /dev/VolGroup00/LogVol01 # resize2fs /dev/VolGroup00/LogVol01 250G # lvm lvresize -L 250G /dev/VolGroup00/LogVol01 Do you really want to reduce LogVol00? [y/n]: y # exit 再起動後に縮小されたかを確認する。 # lvdisplay /dev/VolGroup00/LogVol01 # vgdisplay Free PE / Size 715 / 22.34GB 22.3Gの空きができた。 まあ、対象ボリュームの10%にも満たないが、バックアップのためのミラーを更新する間だけなので、十分だろう。 スナップ領域が確保できたので、以下の自動バックアップスクリプトを作成して、cronに日に1回snapback、週に1回snaptgzを登録する。 snapbackは必要な領域をバックアップ用HDDにrsyncでコピー、snaptgzはsnapbackに加え、リムーバブルディスクにバックアップコピーするためのもの。 snapback
#!/bin/sh

RM=/bin/rm
MV=/bin/mv
TAR=/bin/tar
NICE=/bin/nice
RSYNC=/usr/bin/rsync

BACKUP_DIR=/var/backup
SNAP_DIR=/mnt/snap

VOL_GROUP=VolGroup00
TARGET_VOL=LogVol01
SNAP_VOL=snap
TARGET_VOL_PATH=/dev/${VOL_GROUP}/${TARGET_VOL}
SNAP_VOL_PATH=/dev/${VOL_GROUP}/${SNAP_VOL}
SNAP_VOL_SIZE=22G

DATE=`date '+%y%m%d'`

lvcreate -s -L ${SNAP_VOL_SIZE} -n ${SNAP_VOL} ${TARGET_VOL_PATH} >& /dev/null
mount ${SNAP_VOL_PATH} ${SNAP_DIR} || exit

${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/etc ${BACKUP_DIR}
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/var/lib/mailman ${BACKUP_DIR}
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/var/lib/mysql ${BACKUP_DIR}
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/var/named/chroot/etc ${BACKUP_DIR
}/named
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/var/named/chroot/var ${BACKUP_DIR
}/named
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/var/www ${BACKUP_DIR}
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/root ${BACKUP_DIR}
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/home ${BACKUP_DIR}

umount ${SNAP_DIR}
lvremove -f ${SNAP_VOL_PATH} >& /dev/null

snaptgz
#!/bin/sh

RM=/bin/rm
MV=/bin/mv
TAR=/bin/tar
NICE=/bin/nice
RSYNC=/usr/bin/rsync

BACKUP_DIR=/var/backup
SNAP_DIR=/mnt/snap

VOL_GROUP=VolGroup00
TARGET_VOL=LogVol01
SNAP_VOL=snap
TARGET_VOL_PATH=/dev/${VOL_GROUP}/${TARGET_VOL}
SNAP_VOL_PATH=/dev/${VOL_GROUP}/${SNAP_VOL}
SNAP_VOL_SIZE=22G

lvcreate -s -L ${SNAP_VOL_SIZE} -n ${SNAP_VOL} ${TARGET_VOL_PATH} >& /dev/null
mount ${SNAP_VOL_PATH} ${SNAP_DIR} || exit

${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/etc ${BACKUP_DIR}
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/var/lib/mailman ${BACKUP_DIR}
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/var/lib/mysql ${BACKUP_DIR}
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/var/named/chroot/etc ${BACKUP_DIR
}/named
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/var/named/chroot/var ${BACKUP_DIR
}/named
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/var/www ${BACKUP_DIR}
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/root ${BACKUP_DIR}
${NICE} -n 5 ${RSYNC} -aq --delete ${SNAP_DIR}/home ${BACKUP_DIR}

umount ${SNAP_DIR}
lvremove -f ${SNAP_VOL_PATH} >& /dev/null

cd ${BACKUP_DIR}
# for i in etc mailman www root home
for i in etc mailman named mysql www root home
do
        if [ -e ${BACKUP_DIR}/tgz/$i.tar.gz.9 ] ; then rm ${BACKUP_DIR}/tgz/$i.t
ar.gz.9; fi
        if [ -e ${BACKUP_DIR}/tgz/$i.tar.gz.8 ] ; then mv ${BACKUP_DIR}/tgz/$i.t
ar.gz.8 ${BACKUP_DIR}/tgz/$i.tar.gz.9; fi
        if [ -e ${BACKUP_DIR}/tgz/$i.tar.gz.7 ] ; then mv ${BACKUP_DIR}/tgz/$i.t
ar.gz.7 ${BACKUP_DIR}/tgz/$i.tar.gz.8; fi
        if [ -e ${BACKUP_DIR}/tgz/$i.tar.gz.6 ] ; then mv ${BACKUP_DIR}/tgz/$i.t
ar.gz.6 ${BACKUP_DIR}/tgz/$i.tar.gz.7; fi
        if [ -e ${BACKUP_DIR}/tgz/$i.tar.gz.5 ] ; then mv ${BACKUP_DIR}/tgz/$i.t
ar.gz.5 ${BACKUP_DIR}/tgz/$i.tar.gz.6; fi
        if [ -e ${BACKUP_DIR}/tgz/$i.tar.gz.4 ] ; then mv ${BACKUP_DIR}/tgz/$i.t
ar.gz.4 ${BACKUP_DIR}/tgz/$i.tar.gz.5; fi
        if [ -e ${BACKUP_DIR}/tgz/$i.tar.gz.3 ] ; then mv ${BACKUP_DIR}/tgz/$i.t
ar.gz.3 ${BACKUP_DIR}/tgz/$i.tar.gz.4; fi
        if [ -e ${BACKUP_DIR}/tgz/$i.tar.gz.2 ] ; then mv ${BACKUP_DIR}/tgz/$i.t
ar.gz.2 ${BACKUP_DIR}/tgz/$i.tar.gz.3; fi
        if [ -e ${BACKUP_DIR}/tgz/$i.tar.gz.1 ] ; then mv ${BACKUP_DIR}/tgz/$i.t
ar.gz.1 ${BACKUP_DIR}/tgz/$i.tar.gz.2; fi
        if [ -e ${BACKUP_DIR}/tgz/$i.tar.gz.0 ] ; then mv ${BACKUP_DIR}/tgz/$i.t
ar.gz.0 ${BACKUP_DIR}/tgz/$i.tar.gz.1; fi
        if [ -e ${BACKUP_DIR}/tgz/$i.tar.gz ] ; then mv ${BACKUP_DIR}/tgz/$i.tar
.gz ${BACKUP_DIR}/tgz/$i.tar.gz.0; fi
        ${NICE} -n 5 ${TAR} zcf ${BACKUP_DIR}/tgz/$i.tar.gz ./$i --exclude ./mys
ql/mysql.sock --exclude ./named/var/run/dbus/system_bus_socket
done

BCTV4-PCIをtowerにインストール

PC上でデジタルTV放送を見るためにブルーレイレコーダーDMR-BF200が購入した。 PT2を買えばいいという突っ込みは無しだ。 確かにPT2であれば、本体、カードリーダ、分波器、B-CAS再発行手数料で、25,000円あれば、おつりが来る。さらに、4波同時受信も可能だが、そのためにPCを一台立ち上げっぱなしにして、安定稼働させなければならないし、そもそも詐欺的手法でB-CASカードを再発行してもらうのは気が向かない。 もちろん、このB-CASという仕組みに賛成なわけではない、というか否定的なのだが... 閑話休題。 配送されたので、早速PCに接続するべく作業を開始したのだが、最初に遭遇した問題は... BF200の出力は、コンポジットとHDMIしか無いのだが、それで十分だと思っていた。 しかし、大失敗だった。 接続しようと思っていたloplassのTVチューナーカードには、入力がS端子しか無かった。そこで、やむなくtowerにbt878搭載のBCTV4-PCIを接続。 接続後は、なにもしなくてもカーネルのbtドライバで認識。 # dmesg | grep BCTV 最初、視聴用ソフトはVLCを使おうと思ったが、VLCでうまくコンポジット入力を表示できない。 そこでxawtvをyumでインストールして、試してみた。 しかしアスペクト比が4:3固定のようで、却下。 が、xawtvについて調査中に、Video4Linuxのコントローラであるv4l2-ctlというコマンドで、Video4LinuxによるTVチューナーボードの入力やチャンネル設定ができることを知る。 v4l2-ctlコマンドはivtvに含まれているようなので、yumでivtvをインストール。 VLCでメディアとしてキャプチャーデバイスを選択後、「v4l2-ctl -i 1」で、コンポジット入力になることを確認。 だが、TVを見るたびに「v4l2-ctl -i 1」を打つのは非常にめんどうだ。 そこで、ふたたびVLCについていろいろ見てみたところ、[設定]で[設定の表示]で「すべて」を選び[入力/コーデック]-[アクセスモジュール]-[Video4Linux2]で以下のようにすれば、デフォルトで、Composit入力になることが判明。
  • [ビデオ入力]-[デバイス名] /dev/Video0
  • [ビデオ入力]-[標準] NTSC
  • [ビデオ入力]-[入力] 1
さらに、[入力/コーデック]-[アクセスモジュール]-[Video4Linux2]において、[オーディオ入力]-[キャッシュ値]を「300」から「50」程度に減らすと、映像の遅れが少なくなる(0にすると映像がおかしくなる)。 また、デフォルトでは、Video4Linuxの出力解像度が320x240になってしまうため、非常に写りが悪い。 そこで、[ビデオ入力]-[幅]、[高さ]でサイズを720x480に指定する。 VLCであれば、アスペクト比も調整できるし、これにて一件落着。

インストール: Xvid、MotionJpeg

空き時間にwmvなどのデータをloplassでエンコードしてしまおうと、MotionJpegとXvidコーデックをインストールして、試してみることにした。 wmvだとジャンプや巻き戻しなどを行った場合、キーフレームの取得から再生が再開するまでに非常に時間がかかるからだ。 MotionJpegは以前購入したPegasisのコーデックを使用。 Xvidは、公式サイトXvid.orgからXvid-1.3.0-24022011.exeをダウンロードしてXvid Codec 1.3.0をインストール。 MotionJpegでは、画質は良いがファイルが巨大になり過ぎる。 そこで、画質的には微妙に落ちエンコード時間もかかるが、Xvidの方がよいという結論に。 しかし結局towerでやればよいという結論に達したので、あまり意味が無くなってしまった。

SugarSync

Gladinet Cloud Desktopに続いて、同期型オンラインストレージのSugarSyncを試してみることにした。 同期型オンラインストレージサービス SugarSync(シュガーシンク) 同期型には有名なものにDropBoxがあるが、SugarSyncはDropBoxと違い任意のフォルダを同期フォルダとすることができる。 また、同期を行わずに、ファイルをサーバにコピーだけすることもできる。 容量も、無料版ではDropBoxの2GBに対して、SugarSyncは5GBと多いのも魅力だ。 ただ、DropBoxのLinux対応はちょっと魅力ではあるが、SygerSyncはAPIを公開しているので、ユーザーによるLinux用のクライアントの作成も進んでいるようだ。 今回はSugarSyncを使ってみることにした。 SugarSyncから、SugarSyncSetup.exeをダウンロードしてインストール。 他のPCとの同期だけでなく、重要なフォルダのバックアップ的な用途にも使えそうだ。 実際には、他のPCとの同期よりも、重要なフォルダのバックアップ的な用途の方が大きそうな気がするが... 問題は、どのファイルを同期するか。
SkyDriveを簡単に使用するために、Gladinet Cloud Desktopをインストールしてみた。 GLADINETからGladinetSetup_3.2.595.msiをダウンロードしてインストール。 とりあえず、SkyDriveを設定してみる。 Zドライブの中に、SkyDriveのフォルダが見えるようになり、通常のフォルダのようにドラッグアンドドロップでファイルのコピーなどを行うことができるようになる。 しかし、転送速度はあまり高くなく、3MくらいのPDFをSkyDriveから直接開いたところ、フリーズ状態になってしまった。 オンラインのフォルダーとして使うには、今一つ難があるかもしれないが、WindowsのZドライブとして認識しているので、バッチ転送などはやりやすそうだ。 しかし、今一つ良い利用方法が見つからない。 スタートアップに入っていたGladinet Cloud Desktopのショートカットを削除したら、とりあえず、タスクトレイへの常駐はなくなり、Zドライブも見えなくなった。 この状態でなら、余計な負荷などはかからなそうなので、良い活用法を思いついたときに、いろいろ使って様子を見てみることにする。 とりあえず、SkyDriveはローカルのオンラインへのバックアップ用の第一候補とする。 25GBと、このような永久保管のサービスとしては多いのだが、実際には容量的には足りないから、データの重要度と利便性の両面から、さくらインターネットとうまく使い分けたい。 一時的保存であれば、firestorageのように、容量無制限(1ファイルは250MBまでだが)のところもあるのだが...

インストール: AviSynth

K-Lite Codec Packをインストールして、WhiteBrowserでサムネイルを作成しようとしたら、「ピンが接続されていないので...」というエラーが発生し作成されない。 調べてみると、K-Lite Codec Packに含まれるffdshow rev3771では、出力色空間においてRGB24が無くなってしまっていた。 そこで、AviSynthを利用したサムネイルの作成をすることにした。 Main Page - Avisynthから、Avisynth_258.exeをダウンロードし、インストール。 WhiteBrowserで各WBファイルを[サムネイル設定]-[AviSynthを使用する」にし、[デフォルトAVS]を「base.avs」にして再起動すると、無事にサムネイルが作成された。
めんどうだが、ちょうど前回のWindows XPインストールから、1年ちょっとだから、ちょうどいい、とあきらめ作業開始。 ついでなので、SP+メーカーを使い、SP3のあたったインストール用ディスクを作成する。 そして、前回の作業記録を元に、徐々に環境設定作業。

XPインストール

起動時にF8キーを押しながら、ブートドライブをCD-ROMにして起動。 PCカードリーダーがついているため、XPインストール時にHDDをCドライブとして認識してくれない。 そこで、インストール領域選択後、(フォーマットせずに)いったんキャンセル(ESC)。 選択した領域を削除し、再度領域選択するとCドライブとして認識する。 なお、DVDドライブのドライブ名を確認し、Dドライブでなければ、[コントロールパネル]-[管理ツール]-[コンピュータの管理]-[ディスクの管理]を使用して、Dドライブになるように修正する。

M/B付属ドライバのインストール

XPのインストール完了後、まずは、M/B付属のドライバ類をインストール。入れたものは、
  • Intel Chipset Inf Update Program
  • Atheros AR8121 PCI-LAN ドライバ
前回インストールしたIntel Graphics Acceleratorは、今回はビデオカードが入っているので、インストールしない。 VIA Audioドライバも、サウンドの出力はHDMI経由で行うので不要。

Windows Update

Windows Updateで基本的にはすべてのUpdateを適用。

.Net Framework 4

Catalyst Control Centerで.Net Framework 2.0以降が必要なのでMicrosoft Updateのカスタムの追加選択からインストール。 それ以外にも、Windows Media Player 11、フォント他必要そうなものをインストール。

Radeon HD5450用ドライバ

http://www.ask-corp.jp/より、11-2_xp32.exeをダウンロードして実行。 Catalyst Control Center 11.2

Avira AntiVir Personal

http://www.avira.com/より、antivir_personal.exeをダウンロードして実行。

DVD-Multi用ドライバとソフトウェア

付属のDVD-Multi用のドライバ、およびソフトウェアをインストール。 CyberLink DVD Suiteからは、PowerDVD、Neroからは、Nero Expressのみ。 PowerProducerは、DVD MovieWriterを使用するので不要。 InCDはパケットライトソフトウェアなので不要。SecurDisc viewerも対応したファイルを使うことはないので不要。

仮想メモリの設定

「ページングファイル無し」に設定して、一度再起動。 その後デフラグを行い、いくつかファイルをコピーするなどして最適化後のすきまを埋めた後に、初期サイズ、最大サイズともに4096にして再起動する。

ホームディレクトリの設定

C:\homeを作成。マイドキュメントフォルダに設定する。 また、ユーザ環境変数HOMEをc:\homeに設定する。 その後、old\110319というフォルダを作成し、以前のホームディレクトリの内容をコピーする。 この中から、必要に応じて、新しいhomeディレクトリに移動する。

FireFox 3.6

Mozilla Japan - 次世代ブラウザ Firefox とメールソフト Thunderbird の公式サイトよりFirefox Setup 3.6.15.exeをダウンロード。 インストール、Firefoxを起動せずに、以前のC:\Documents and Settings\nor\Application Data\Mozillaをコピーしてから起動。 Add-onも含めすべての設定が引き継がれる。 追加されているAdd-onについてはComputer - FireFox Add-onを参照。

Thunderbird 3.0.2

無料メールソフト Thunderbird - Windows 7 対応メールソフトの決定版より、Thunderbird Setup 3.1.9.exeをダウンロード。 インストール、Thunderbirdを起動せずに、以前のC:\Documents and Settings\nor\Application Data\Thunderbirdをコピーしてから起動。 Add-onも含めすべての設定が引き継がれる。

以前の汎用ディレクトリのコピー

  • \usr
  • \prj

ワークグループの設定

ワークグループを「Rally」に設定する。

秀丸エディタ 7.1.1

以前のProgram FilesのHidemaruフォルダを、新しいProgram Filesにコピー。 http://hide.maruo.co.jp/software/hidemaru.htmlよりダウンロードしたhm803_signed.exeをインストール、その後キー定義と設定を復元する。

Meadow 2.10

Meadowよりsetup-j.exeをダウンロード。 こちらは、枯れたものを使う。 Setup-ja.exeでインストールしたのは以下の5つ。
  • Meadow
  • gnuserv
  • ImageMagick
  • Mule-UCS
  • yatex
さらに、C/migemotamago CVS Head を使うために、以前のsite-lispディレクトリを上書きする。 また、cmigemo.exeを使用するために、以前の\usr\binディレクトリをコピーしてパスを通しておく。 さらに、ホームディレクトリ下の以下の設定ファイルを、過去のものからコピー。
  • .eggrc
  • .emacs
  • .emacs.desktop
  • .lemacs.el
  • .lemacs.elc
  • .recentf
  • lib/elisp
CtrlとEscの入れ替え 自作のCTRLESC.regファイルで、入れ替える。

Microsoft Office 2003

C:\Program Files\Microsoft Office\OFFICE11\XLSTARTに自作のマクロファイルのショートカットを置く。

Microsoft IME ユーザ辞書

Microsoft IME 辞書ツールを使い、過去の\Documents and Settings\nor\Application Data\Microsoft\IMJP9_0\imjp9u.dicから登録をインポートする。

RoboForm 6.9.90

RoboFormから、最新版AiRoboForm6999.zipをダウンロードしてインストール。 RoboFormで認証を行うことで、Pro版として使うことができる。 過去のデータは、"C:\home\My RoboForm Data"をコピーしておけば使用できる。

Daemon Tools 4.03

daemon403-x86.exeにより、Daemon Tools 4.03をインストール。 このとき、Daemon Tool Searchbarはインストールしない。 その後、一度Daemon Toolsを終了し、dt403inst_jp.zipにより日本語化。

VMWare

以前のMy Virtual Machinesを自動検索させるため、homeにコピーしてから、VMware-workstation-4.5.3-19414.exeをインストール。

Adobe CS2

CDよりIllustrator、InDesign、Photoshopのみをインストール。

Adobe Acrobat Ver.8

CDよりインストール。 これ以外のものに関しては、前回の作業記録を参照。

またしても、rodemのHDDが不調

遅延書き込みの失敗メッセージが多発した後にリブート。 次の起動時にはHDDを認識せず。 何回かの再起動後に起動するも、やはり遅延書き込みエラーの発生。そして、HDDへのアクセスランプがつきっぱなしになり、再起動。 問題は、マザーボードなのかハードディスクなのか... しばらく電源を落して起動するとある程度の時間は動作するが、やはりある程度たつとディスクのライトエラーが発生してしまう。 起動時にHDDを認識しないことがあるということは、ファイルなどの破損では無くハードウェアの故障であることは確実。 あまっていた300GのS-ATAディスクをつないでみたところ、特にエラーの兆候は見えなかったので、HDDが原因と考え、ひかりTVチューナーにつないでいたWDの500Gのハードディスクに入れ替えることにした。いくつか番組が録画されていたのだが、まあしかたない。

インストール: Java

Javaを利用しているWebページがあったので、Firefoxに誘導されるままに、http://java.com/のダウンロードページに。 「Linux RPM (自己解凍ファイル) 」を選ぶとjre-6u24-linux-i586-rpm.binがダウンロードされるので、以下のコマンドでインストールは完了する。 # sh jre-6u24-linux-i586-rpm.bin そして、環境変数を追加。 # vi /etc/profile
...
export JAVA_HOME=/usr/java/jdk1.6.0_24
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
Firefoxのプラグインとして使うために、Java Webページのインストラクションどおり以下のようにリンクしたのだが、Firefoxでプラグインとして認識してくれない。 # ln -s /usr/java/jre1.6.0/plugin/i386/ns7/libjavaplugin_oji.so /usr/lib/mozilla/plugins Googleで検索したところ、Firefox 3.6では、別のファイルをプラグインとして使用するとのこと。 # ln -s /usr/java/jre1.6.0_24/lib/i386/libnpjp2.so /usr/lib/mozilla/plugins/

インストール: AdobeReader 9

Evinceで、「パスワードが設定されている」とメッセージが出て読めないpdfファイルがあったので、AdobeReaderをインストールすることにした。 すでに、Adobeのリポジトリが設定されていたので、yumでインストール可能。 # yum install AdobeReader_jpn

購入: サンワサプライ SKB-108L

rodemで使っているキーボードのいくつかのキーに引っ掛かりがでてきたので、新しいキーボードを購入することにした。 USB接続のキーボードならスペアがあるのだが、PS2キーボードの在庫はない。 そこで、ちょうど近所にケーズデンキが新規開店したので、そこに行って見つけたコンパクトなPS2接続108フルキーボードを購入。836円。 サンワサプライ:SKB-108L この価格ではキータッチは期待できないが、大量の入力を行うときはHappy Hacking Keyboardを使うのでよい、と妥協。 予想通り、キータッチはよくない。 が、狭い机では思ったより、このコンパクトさは快適に使える。 上が、今まで使っていたGateway純正のキーボード、下が今回購入したキーボード。 11031301.jpg 楽天市場でも、800円弱で購入可能。

レンタル: SC-32NE

NTTのひかり電話用ルータRV-230NE用の無線LANカードSC-32NEをレンタル。 無線LANが必須な環境ではなかったのだが、テレビ、BDレコーダーなどネットワークにあ接続する機器が増えてきて、スイッチのポートが足りなくなってきた。 ZaurusやEeePCは無線が使えるので、この際、再度導入することにした。 RV-230NEのスロットに差し込み、Webの管理画面からESS-IDなどの設定をするだけで使用可能になった。 ただ悔しかったのは、再度調べると、どうやら無線LAN機能付きのルータも存在するらしく、しかもそちらはUSBHDDをつなぐことによりファイルサーバーとしても動作するようだ。 レンタル料金は、RV-230NE+SC-32NEとほぼ変わらないようだ。 現状はファイルサーバーは既存のものがあるのでそちらを使えば良いのだが、引っ越しでもしたときには入れ替えることにしよう。

このアーカイブについて

このページには、2011年3月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2011年2月です。

次のアーカイブは2011年4月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

アーカイブ

ウェブページ

Powered by Movable Type 6.8.5