サーバーの構成はこんな感じ

LB に pound (http, https 使える状態)
webDAV に mod_dav_svn を使って http で apche がたっている。
で、今回の問題が https で checkout したリポジトリに対して mv や rename すると
svn COPY 502 bad gateway over HTTPS と言われてコミットできない。
http だと問題なく mv, rename がコミットできる。
以下 http://www.digilib.org/modules/bwiki/index.php?Subversion#zca25176 より引用
これはHTTPS超えて、SVNを管理する場合、ファイル移動する際発生する問題。
davのモジュールは相対ではなく、絶対パスで管理するから。
Subversion付属のsvnserveなら問題発生しない。
って書かれてたので半ばあきらめてた。
ただいかんせん、ほかにも https でやってるとこもある。
現に会社では webDAV, https という組み合わせでもできていた。
サーバのセットアップをやったついでに調べるとこれの回避方法をようやくみつけた!!
Subversion behind an Apache Reverse Proxy
ここに書いてあるとおりで、
どうやらリバースプロキシを使って、https で client からアクセスがいき
webDAV が http でたっている場合に怒られるらしい。
LoadModule headers_module modules/mod_headers.so
RequestHeader edit Destination ^https http early
こうしてやるといいとのこと。
これでよーやく気兼ねなく mv や rename ができるようになった。
快適快適
LB はさまずに直接 apache で受けたら回避できる問題だけど
Slowloris Dos攻撃 もあるから LB を間にいれときたいってのもあるしね。
それにしても https で pound が proxy すると
pound 以降は http で通信が行われてるっていう
認識だったんだけど違うのかな??
おいおい調べることにして寝る。
最近 FF から Safari に本格的に移行しようとしててネックになったのが tombloo と SBMカウンタ。
これがないと相当不便。
という訳で SBMカウンタ を SIMBLE とかで作ってる人いないかなと思って探すと
greasemonkey スクリプトで実装している方がいました。
Safari で動く LDR+SBM Counter を公開しました
いかんせん、これだとコメント一覧が取得できません。
それがあると文句なし!!!
ということで衝動で勉強がてら実装しちゃいました。
dealforest’s ldrsbmcounter at master – GitHub
デフォルト表示

フォーカス時

ロゴをクリックするとコメントのフィルタリングできます。
LDR をクリックすると全てのコメントが表示されます(画像用意してないだけw)。
とりあえず Safari4 で動くようにしかしてません。
一応 FF でも動いてるっぽい(スタイルが微妙にずれる)。
delicious だと SBMカウンタ の場合とコメントがずれるので
そのうち取得する API を変更する予定。
そーすると MD5 絡みがいらなくなるからコードがばっさり少なくなる。
あとコードはリファクタ前の状態。
けっこー汚いけど、眠いからそのうちする。
と、まぁ〜そのうちよくなる感じ。
本家さんが対応するまで??の仮対応みたいなノリで。
Safari で SBM カウンタで困ってる人がいればどーぞー
追記 2009-07-13 03:28:11
ブログ書いた後に気づいたけど本家の方で機能追加されてた。。。
なんて無駄なことしたんだろーかー。
まぁ勉強になったからいいやー。
というわけで使おうとした方はこちらのを入れて下さい。
ずっと pbcopy が動かなくてなんでだろうと思ってたけど
screen を起動しなかったら動いてることにきづいた。
ここをみると Ports で screen をいれればいいらしい。
でもそれじゃ動かない。で、色々と調べると
どうやらパッチをあてて自分でコンパイルすればよさげ。
というわけでさっそくコンパイルしたら pbcopy ができるようになった!!
以下、コンパイルの流れ。
http://git.savannah.gnu.org/cgit/screen.git
ここから screen のソースをおとしてくる。
パッチを下記のサイトを参考にあてる。
Macのscreen + pbcopy
screen で pbcopy/pbpaste が動かない問題
ちなみにパッチファイルをまとめて gist にあげた。(DL)
これを screen/src の中に保存。
そして screen/src の中に移動。
1
2
3
4
5
| patch -s -p0 < screen-mac-pbcopy.patch <- これでパッチがあたる
autogen.sh
./configure -prefix=/opt/loca/ <- ports と同じ場所にいれたかったから prefix をつけただけ。
make
sudo make install |
これで vim で “*y とすると pastebord にもコピーできた。
日本語まじりの文字をコピーしようとすると nkf が必要。
vim・mac間でクリップボードを介してやり取りする方法 完結編
を参考にして設定しました。
これでそーとー快適。
やっぱり pastebord や clipbord は共有されてるにかぎる。
id:mattn さんが作った Gist.vim が gists を使う際にとても便利です。
curl が必要なのと id と token を vimrc に書けば使える。
ちなみに git config に設定していれば書かなくても大丈夫
簡単に操作の説明。(version 2.5)
let g:github_user = 'dealforest'
let g:github_token = 'XXXXXXXXXXXXXXXXXX'
| :Gist |
ポストされます。 |
| :’<,'>Gist |
矩形選択部分をポストします |
| :Gist -p |
privateモードでポスト |
| :Gist xxxx |
idを指定して開く |
| :Gist -l [ユーザID] |
(ユーザーを指定して)一覧を開く |
| :Gist -la |
全てのユーザの最新gist一覧 |
| :Gist -c XXXXX |
クリップボードにコピー |
| :Gist -e |
編集。ただし gist buffer 上でしかできない。 |
ショートカット
nnoremap <silent> ,gn :Gist<cr>
nnoremap <silent> ,gl :Gist -l<cr>
nnoremap <silent> ,ga :Gist -a<cr>
nnoremap <silent> ,ge :Gist -e<cr>
nnoremap <silent> ,gp :Gist -p<cr>
nnoremap <silent> ,gr :Gist
nnoremap <silent> ,gu :Gist -l
こんな感じでショートカットを作ってます
パッチ
実際に使っていて凄い便利。
ただ :Gist xxxx がどーしても動かなかったので gist.vim を修正した。
@@ -391,7 +398,7 @@
elseif arg =~ '^\(-e\|--edit\)$' && bufname =~ bufnamemx
let editpost = 1
let gistid = substitute(bufname, bufnamemx, '\1', '')
- elseif len(gistls) > 0 && len(gistnm) == 0
+ elseif len(gistnm) == 0
if editpost == 1
let gistnm = arg
elseif len(gistls) > 0
gistls についてはそれ以下のところで判断してるのでここでいれたら動かないと思う。
あと自分用に少しカスタマイズした。
:Gist で POST した後に :Gist -l で一覧を表示した際
少しラグがありさきほど POST したのが表示されない。
修正したり変更したりするのが不便。というわけで POST 後に自動的に
buffer に開くようにした。これで :w で再度ポストもそのままできるから便利。
split して開くのがどーかとも思うけど、まぁいいやと放置
@@ -340,13 +340,6 @@
let res = substitute(res, '^.*: ', '', '')
if len(res) > 0 && res != 'http://gist.github.com/gists'
echo 'done: '.res
+
+ let mx = '^http://gist.github.com/\(\d\+\)$'
+ if res =~# mx
+ let gistid = substitute(res, mx, '\1', '')
+ echo gistid
+ call s:GistGet(g:github_user, g:github_token, gistid, 0)
+ endif
else
echoerr 'Post failed'
endif
GistListAction と動作が似てる(ほぼそこのコピペ)からいじればいいとは思うけど
そもそも vimscript そこまで分からなってないため妥協。
とりあえず動いてるしいいかと。。。
デバッグとかってどーするもんなんだろ。
みんな echo でしてんのかな。
効率いい方法はどうしたものか。