svnsync は subversion repository の replication ツール。Subversion 1.4 から使える。よくバックアップって紹介されたりするけどバックアップと replication はなんか違うような気がする。RAID とバックアップが違うのと同じ感じかなぁ。
目的は忘れました
なんでこんなことをしようと思っていたか忘れました。なんかでも以下のようなことを考えていたような。
- Capistrano は rsync による deploy もできるけど repository から取ってくるのがやっぱ王道?
- でも普段の commit 作業はローカルのサーバの方が速いし快適だし
- svnsync 使えばいいの?
実際にやってみた
意外に準備が面倒。
- sync 先を svnadmin で作る
- sync 先の repository を手作業で sync 先として準備(後述)
- sync 先の repository を svnsync init DEST SRC で準備
※ sync 元の repository へは当然 read only アクセスしかできなくても問題ない。
ここまでくれば
svnsync sync
で ok.
2 の手作業っていうのは pre-revprop-change フックの作成のことで、素の repository を例に取るとこんな感じになる。
REPOSITORY/
|-- README.txt
|-- conf/
|-- db/
|-- format
|-- hooks/
| |-- post-commit.tmpl
| |-- post-lock.tmpl
| |-- post-revprop-change.tmpl
| |-- post-unlock.tmpl
| |-- pre-commit.tmpl
| |-- pre-lock.tmpl
| |-- pre-revprop-change* <-- これ
| |-- pre-revprop-change.tmpl
| |-- pre-unlock.tmpl
| `-- start-commit.tmpl
`-- locks/
内容は
#! /bin/sh
exit 0
で、いいらしいんだけどこのことは残念ながら svnbook には書いてないんだよなー。hook がありさえすればいいっていうのはナゼか、とかも分からない。「そういうもの」として書かれていてなんか気持ち悪い。
一部だけsyncしてみた
あと、できるんじゃないかと思ったけど
- 一部だけ sync もできる
- svnなのでURLに詳細なパスを指定すればよいだけ
- ただし revision は全部コピーされる
- sync 対象以外の path は空 commit のような扱いになる(repository の db の中身を見るとすぐ分かる)
ということなので、でっかい repository を全部 replication しなくちゃいけないわけじゃないです。目的別に replica を作ってうまく使えるかも。
※ Subversion 1.5+ だと partial mirror は許可しないって書いてありました
忘れ物
自動化するには svn の repository の中の hooks の中の
post-commit
スクリプトに実行ビット立てて
svnsync sync URL
を叩いてやる必要があります。
IT戦記 - マークアップエンジニアはどこへ向かうべきか(を考えてたらカッとなって LL の資料公開)
まぁ「それだけ」だとお仕事的に困るかもなとは思うんだけど、そんな話を非マークアップエンジニアが語るのは余計なお世話だろう。
で、それとは別に実際問題このスキルセットは極めて重要で、これらをちゃんと理解してる人がどれだけ Web プログラマに居るのかというと結構疑問だったりする。
Web に関ろうという人は XHTML + CSS のスキルはまずきちんと習得した方がいいと思う。正しい HTML じゃないとブラウザ間の挙動の揺れが読めない。これは JavaScript を使っていなくてもそう。マークアップをバカにするやつはマークアップに泣くよ。そのくせテストの工数がーとか言い訳ばっかうまくなったりする。そういうのは自分も周りも不幸にする。「とほほ」眺めて分かった気になってるようなやつは廊下で立ってろ。
例えて言えば Web アプリをやるうえで HTML がよく分からないっていうのは、ファイルにデータを書き出す方法がちゃんと分かってないとか、データベースへのアクセスがよく分かってないとか、そういうのと同じわけですよ。サーバサイドのプログラムにとっては、どういう風にデータを受け取って、どういう風にデータを出力するのか、っつー話なわけだから。(もちろん HTML だけ分かっても HTTP が分からないと話にならないんだけど。)
CSS もきちっとやっておかないと、DOM をどういじるのが効果的かということを理解しきれないです。CSS の継承を利用すれば最小限のコードで最大限の効果を生むことができるんだけど、これが分かってないとメタメタな HTML を JavaScript でむりくり操作しまくって、とても分かりにくいうえに遅くて使いものにならないとか、HTML をちょっと変更したら全然動かなくなるコードを生み出したりします。で、動かなくなるから HTML の変更禁止とか本末転倒な現象が起きる。これはもはやアルゴリズムもデータ構造も分からないまま我流で突き進んじゃう、なんちゃってプログラマと同じです。百害あって一利なし。
マークアップエンジニアの行く末なんか心配してるヒマはないよ。マークアップエンジニアとタメ張れるくらいに勉強しないと。みんなが勉強してるんだったら、いよいよ行く末が心配になるかもしれない。逆に、心配している(ようにはあんまり見えないけど、リンク先の)彼らは本当に理解して使いこなせているってことなんだろう。
まぁでも HTML 5 だっけ? あれが実装されたらまたしばらく混乱が起きて、カリスママークアッパーとか出てくるんじゃないかな。なんかそんな感じ。
Apple のサイトを見ていたんだけど、
なんだこの Spaces っての。
仮想デスクトップまで標準で入るのか。なんかさすがに追加機能が地味になってきたな。まぁ嬉しいからいいんだけど。TimeMachine とか。
で、これ 32bit PPC でも動くんだよね? さすがに Leopard 出たら Panther はもう見捨てられるだろうからなぁ。Fink が対応したら移行って感じか。
Rails on OS X !? - Ruby on Rails、MacOS X Leopardに搭載へ (MYCOMジャーナル)
Rails まで載っちゃうんだ。うーん。でも標準で載るとアップデートのポリシーを Apple に握られちゃうからなぁ。ちょっと微妙な気も。
2002/05/25 Ctrl-h≠\010: Debianの怪
3年ぶりにやはり fdclone で不便を感じたので設定を修正
..screenrc に
bindkey -k kb stuff ^H
でよかった。
Rails の OSX 用のパッケージがあった。Lighttpd 付き。よーしじゃあ XAMPP ステステ。
/usr/ports/lang/php4-extensions
内で
make clean config
すると自由に設定を変更できるので、これでうまく build できる設定を探せと。ちゅーか php4-mbstring を独立させてほしいなぁ。PHP のインストールっていつになったら楽に確実になるんだろ。野良 build がいちばん確実ってんじゃ ports のありがたみないものねぇ。
FreeBSD 4.10R ではなぜか
detached false
でないとうまくいかないっぽい。これはデフォルトの動作じゃないので注意。2.4.1 は野良ではなく 4.9R 以前用の ports の skelton を使って入れた。しかし 2.5.2 が出たのがすでに1年前なわけだし、そろそろ Windows クライアントなども含めて 2.5.2 を視野に入れておいた方がいいのかも。