2007/12/09

チェックアウトしたフォルダから.svnフォルダを削除したい


Subversionでバージョン管理している場合、リポジトリからチェックアウトすると、管理フォルダの.svnフォルダができます。

その後、バージョン管理の対象から外したい場合には、Subversionのエクスポートを使用するか、.svnフォルダを削除する必要があります。



ここでは、コマンドプロンプトから(DOSコマンドで)削除する方法を紹介します。



下記コマンドを、.svnフォルダを削除したいフォルダに移動してから実行します。サブフォルダも対象になります。


for /R %i in (.svn) do rd /Q /S "%i"




他にも、Dreamweaverの管理フォルダである「_note」や、WindowsのサムネイルDBファイルの「Thumbs.db」もまとめて消してしまうように、バッチファイルを作成しておくと便利かもしれません。


for /R %%i in (.svn) do rd /Q /S "%%i"
for /R %%i in (_note) do rd /Q /S "%%i"
for /R %%i in (Thumbs.db) do del /Q /S "%%i"

2007/12/06

FON Simple Maps

先日、本人のブログより公開された「FON Simple Maps」ですが、iGoogleディレクトリに無事登録されたようです。
このガジェットの詳細、フィードバック・感想などありましたら、こちらへお願い致します。

2007/11/30

VBAのReplace

VBAには、指定された文字列の一部を、別の文字列で指定された回数分で置換した文字列を返す、Replace 関数があります。



先日、ユーザから入力された文字を、日本語:全角、英数字:半角に整形するモジュールで、「う」が「ウ」に変換されてしまう不具合が見つかりました。

このモジュールではReplace関数を使い、以下のように置換している箇所がありました。


formatString = Replace(strResult, "ウ", "ウ")


指定しているのは半角の「ウ」なのですが、なぜか「う」も置換されてしまいます。



ですので、以下のように、文字列式を評価するときに使用する文字列比較のモードをバイナリ モードで比較するようにして対処しました。


formatString = Replace(strResult, "ウ", "ウ", Compare:=vbBinaryCompare)

2007/11/25

FON Simple Maps を iGoogle Gadgets で作ってみました

Google Developer Day 2007に参加した際に、Google Gadgets APIのセッションを聞いてから、なにか作ってみようと思ったものの、時間だけが経過してしまいました・・・。


FONというWiFiコミュニティがあるのですが、そのFONのWiFiネットワークを表示するiGoogle Gadgetを探したのですが、あまり見当たらなかったので、せっかくなので勉強がてら自分で作ってみようじゃないかと。(自宅ネットワークの無線化のために、無線LANルータであるラ・フォネラを激安で購入済みです)

FONについて、詳しくはこちら



というわけで、実際に作ったものがこちらです。




使い方は簡単で、マップの下の検索ボックスに住所等を入力し、FONスポットを検索するだけです。

マップの上の「この場所を保存」をクリックすると、次回からこの場所が初期画面になります。

アイコンの説明は以下のとおりです。










1時間以内にアクティブになったFONアクセスポイント
その他のFONアクセスポイント
パーソナライズされたFONアクセスポイント



iGoogle Gadgetsを実際に作ってみた感じたことは、これはすごいなということですね。

Ajax等の仕組みも用意されていますし、直感的に作っていけるのではないでしょうか。

そしてなにより、ドキュメントがしっかりしているので、躓いても何とかなります。



今回の件で、久しぶりにGoogleAPIドキュメントを眺めたのですが、Maps APIも大分変わっていて、多くの機能が追加されていて驚きました。

ドキュメントも統合された感じで非常に見やすくなった気がします。



次は、Google Data APIにチャレンジしてみようかと思っています。

2007/10/05

CentOS4.5にて、DRBD/hearbeatでサーバ冗長化


先日(といっても、結構時間が経ってしまいましたが・・・)、Linuxサーバを冗長化する機会がありました。



その際に、ドキュメントを用意したのですが、一部異なるアプローチをとったところがあったので、そのあたりをメモしておこうと思います。

ドキュメントはこちら

HAクラスタ構築手順書



其の一 DRBDパーティション



まず、DRBDでネットワークミラーリングを構築するのですが、マニュアルでは第2SCSIディスクを想定していますが、今回は、ディスクが一つしかないので、既存のディスクにパーティションを作成する必要がありました。

空き領域に新たなパーティションを作成するのですが、/(root)パーティションで全部使っていて空きは無かったので、やむなく再インストール・・・



せっかくですので、この機会に自由にサイズ変更をできるというLVMでパーティションを作成し、DRBDをセットアップです。


DRDBパーティション(論理ボリューム)の作成
$ sudo lvcreate -L 10G -n drbd main

$ sudo vi /etc/drbd.conf
resource r0 {

protocol C;

incon-degr-cmd "echo '!DRBD! pri on incon-degr' | wall ; sleep 60 ; halt -f";

startup {
degr-wfc-timeout 120; # 2 minutes.
}

disk {
on-io-error panic;
}

syncer {
rate 100M;

group 1;

al-extents 257;
}

on host1 {
device /dev/drbd0;
disk /dev/main/drbd;
address 192.168.0.221:7788;
meta-disk internal;
}

on host2 {
device /dev/drbd0;
disk /dev/main/drbd;
address 192.168.0.231:7788;
meta-disk internal;
}
}

其の二 ミラーリングデータはシンボリックリンクで



既存のアプリケーションがあるため、設定ファイル等はなるべく変更したくありません。

そこで、設定ファイルはそのままに、データディレクトリをシンボリックリンクで参照するようにしました。


アプリケーション及びWebデータ
$ sudo -u user mkdir /data/application
$ sudo -u user ln -s /data/application /home/rms/application
$ sudo -u user tar cpzf /home/user/old_htdocs.tar.gz /home/user/htdocs
$ sudo -u user mv /home/user/htdocs /data/user_htdocs
$ sudo -u user ln -s /data/user_htdocs /home/user/htdocs
$ sudo ls -l /home/user
$ sudo ls -l /data

MySQLデータ
$ sudo -u mysql tar cpzf /home/mysql/old_data.tar.gz /home/mysql/data
$ sudo -u mysql mv /home/mysql/data /data/mysql_data
$ sudo -u mysql ln -s /data/mysql_data /home/mysql/data
$ sudo ls -l /home/mysql
$ sudo ls -l /data


その他、heartbeat等はマニュアルどおりでおおむねいけました。

マニュアルを作成してくれたK氏には感謝です!



DRBD/hearbeatでサーバ冗長化は、手軽にできてかなりおススメです!

自動でフェイルオーバー/フェイルバックする様子には、本気で感動しました。

この機会に(?)、是非挑戦してみてください。



参考書籍: