svnでディレクトリのみを管理したかった

svnでディレクトリのみを管理したかった。

まずデフォルト(freebsdのdevel/subversionでインストールされるsvn)では、ディレクトリに対してaddすると以下すべてのファイルが一緒にaddされる。

%svn add sitemap
A sitemap
A (bin) sitemap/sitemap1.xml.gz
A sitemap/sitemap1.xml
A (bin) sitemap/sitemapindex.xml.gz
A sitemap/sitemapindex.xml
A sitemap/sitemap0.xml
A (bin) sitemap/sitemap2.xml.gz
A sitemap/sitemap2.xml
A (bin) sitemap/sitemap3.xml.gz
A sitemap/sitemap3.xml

でもこのディレクトリの中身が、結構変わるもので、あくまでディレクトリは入れ物っていうだけ、中身のファイルをバージョン管理かにおいてほしくなかった。

まずは今回の問題に先立って、対象となるディレクトリの中身全部を誤ってバージョン管理下に置いてしまったのでそれをもどす。
%svn revert sitemap
deleteがいいのかな、とかちょっと考えたけど、revertだとaddされる前に戻るらしい。revertはちょっと危険なコマンド。必ず引数がいるあたり。
とにかくrevertすればaddを取り消せる。add->commitしてたらdeleteするしかないと思うけど。

次にバージョン管理化から外す方法。
svnではディレクトリごと(ファイルごと?)にpropと呼ばれる、管理情報のフラグ(true or falseだけじゃなくてほかにもあるよ?)みたいなのを持てる。これを設定してやれば管理対象から外すことができる。

今回のケースだと、sitemapっていうディレクトリの中にあるファイルはすべて管理外にしていただきたい。ということで、sitemapがあるディレクトリ直下でpropsetコマンドにてignoreのフラグをつける。

%svn propset svn:ignore “*” ./sitemap
svn: warning: ‘sitemap’ is not under version control

怒られてしまった。
注意すべきは*をダブルクォートとかで囲むこと。これはsitemapっていうディレクトリに対して、svn:ignoreっていう属性を”*”に適応させたいです、っていうのを”svn”に伝えるため。クォートされてないとシェルが展開しようとして、内部的には
%svn propset svn:ignore hoge1.txt ./sitemap
%svn propset svn:ignore hoge2.txt ./sitemap
%svn propset svn:ignore hoge3.txt ./sitemap
%svn propset svn:ignore hoge4.txt ./sitemap

となってしまうためだ。

最後に怒られてしまった原因は、そのまま、バージョン管理下にない、ということ。
デフォルトでaddは以下のディレクトリもaddしてくれる。便利だなぁ、と思ってたけど初めて今回、ディレクトリのみをaddしたくなった。
%svn add –non-recursive sitemap
A sitemap
これでおk。
最後にコミットしておしまい。

wordpressで時刻が九時間ずれちゃう件とかの

wordpressで時刻が九時間ずれちゃう件とか。

外部からworpdress一式をrequireさせて動作してたらどうもうまく動かない。

sitemapのlastmodを作成させようとしたところ、なぜかISO 8601形式でタイムゾーンがうまくとれてない。

phpを5.2系列から5.3系列にあげたのが最近だったので、ここら辺には思い当たる節があった。

php5.2だとそのままのiniファイルで怒られなかったのだが、5.3にあげたとたん、大量のwarningが出るようになっていたのだ。

その内容はdate.timezoneがセットされてないですよ、って問題。そんでこれを手動でAsia/Tokyoに設定していた。なのになんでUTCで返してるんだよ、と。

時を同じくして、ちょうどそのころからwordpressの記事更新日時が9時間ずれていた。

あまり気にすることでもなかったので放っておいたのだが、今回の件に絡んだ原因であることが判明。

適当にwpのファイルを開くとさくっとみつかった。

if ( function_exists('date_default_timezone_set') ) date_default_timezone_set('UTC');

うーん、なんでutc決めうちなんですか。

どっかにタイムゾーンの指定するところがあって、それを後々、DBとかcacheから拾ってくる仕様なのかな。grep -R date_default_timezone下感じだとwp-includes/functions.phpにひっかかったぐらい。

面倒だけど今回は外部からの呼び出しでwpを利用してるので、wpを読み込んだあとにjstで上書きさせよう。

とあるホストでやたらHDDアクセスが遅くなった件

とあるホストでやたらHDDアクセスが遅くなった件。

ホスト1: RAIDでストライピング(1T + 1.5T)。何とかサイズは64KB。

ホスト2: 同じくRAIDでストライピング(1T+1T)。ブロックサイズは64KB。

まずはホスト1から

b.l2tp.org%sudo dd if=/dev/zero of=/tmp/hoge/ehehe bs=1M count=10000
10000+0 records in
10000+0 records out
10485760000 bytes transferred in 256.205873 secs (40927087 bytes/sec)

速度は40MB/s。RAIDくんでるのに・・・。

続いてホスト2

t.l2tp.org%sudo dd if=/dev/zero of=/usr/tmp/hoge bs=1M count=10000
10000+0 records in
10000+0 records out
10485760000 bytes transferred in 90.286067 secs (116139293 bytes/sec)

速度が116MB/s出てる。まぁまぁってところかな。
なんでこんなに差が出るんだ・・・。

データベースのバックアップに使ったコマンド。

% sudo sh -c 'mysqldump --lock-all-tables --master-data=2 --no-data --allow-keywords --flush-logs --no-autocommit --all-databases >/usr/tmp/definition.sql'
% sudo sh -c 'mysqldump --lock-all-tables --master-data=2 --no-create-info --no-create-db --allow-keywords --flush-logs --no-autocommit --all-databases >/usr/tmp/data.sql'

ログをフラッシュしてるので復旧するときは日付とかを見ながら指定してやる感じ。

% sudo sh -c 'mysql --force < /home/yousan/tmp/mysql_100609_maslog_14/definition.sql'
%  sudo sh -c 'mysql --force <  /home/yousan/tmp/mysql_100609_maslog_14/definition.sql'

復旧の最にはmysqlのCUIからでも可能。またこの時、binlogを抑制することが可能

my.cnfの “log-bin=mysql-bin” などの “log-bin”の項目をコメントアウトすることによっても可能。

mysql> SET sql_log_bin=OFF;
mysql> SOURCE ‘dump.sql’

データベースのバックアップに使ったコマンド。 | L2TP

mysqlのスレーブサーバでバイナリログがうまくはかれなかったりする件

mysqlのスレーブサーバでバイナリログがうまくはかれなかったりする件。

mysqlで server1 -> server2 -> server3 っていう三連結でマスタースレーブを構成すると、server1での更新がserver3に伝わらない。

これはserver2の設定でデフォルトだとserver1の更新内容をバイナリログ(binlog)に書き出さないためだ。

5.5から実装されたのかな、よくわかんない。オプション事態は5.1でも通る。でも表面化したのは5.5からだと。

これを直すには次の項目をmy.cnfに書くこと。

log_slave_updates

2010-01-24 MySQLのレプリケーションスレー ブサーバでバイナリログを有効にする

intelでExpress5800のAHCIドライバをゲット

necのexpress5800にwindowsをインストールしようとしたがHDDが見つからない。

RAIDを無効にすればAHCIも無効にできてドライバいらずでインストールできるんだけど、RAIDをオンにしたい。

そこでドライバを統合したディスクを作成。

intelのダウンロードリンク(ahciのich9rっていうやつをDL)

express5800について

nliteを使ったディスク作成方法

iata96cd