2007年 07月 06日

svnadmin create --fs-type fsfs

なんかなぜかいろいろつまずいた……

今 /lowreal を公開リポジトリにしてそこに全部つっこんでいるけど、公開しないリポジトリをつくってなかったのでつくりたかった。

sudo -u svn svnadmin create --fs-type fsfs private
sudo chmod -R g+w private
<VirtualHost *>
	ServerName svn.lab.lowreal.net
	ServerAdmin cho45@lowreal.net
#	DocumentRoot /srv/www/svn.lab.lowreal.net/

	<Location />
		AllowOverride All
		Options Indexes FollowSymlinks -MultiViews -ExecCGI
		AddType text/plain .rb .pl .yaml

		DAV svn
		SVNParentPath /srv/svn

		AuthzSVNAccessFile /srv/svn/authzsvn.conf

		Satisfy Any
		AuthType Basic
		AuthName "Subversion repository"
		AuthUserFile /srv/svn/.htpasswd

		<LimitExcept GET PROPFIND OPTIONS REPORT>
			Require valid-user
		</LimitExcept>
	</Location>

	<Location /private>
		Require valid-user
	</Location>
</VirtualHost>

svn グループには www-data (apache) ユーザが追加してある (もともと

svk mirror //mirror/private http://svn.lab.lowreal.net/private
svk sync //mirror/private
svk copy //mirror/private //local/private
svk co //local/private

irssi

キーワード反応履歴がほしい。一個ウィンドウつかってキーワード反応のメッセージを全部出せばいいかな
っていうかどうも /save でチャンネルの位置が固定されない。ふかくおってない。冤罪かもしれない

http://www.irssi.org/scripts/scripts/hilightwin.pl
これかな。っておもったら既にインストールしてた。どういうことだ

/window new hidden
/window name hilight
/window move 10

あ、わかった。
/save だけじゃなくて、そのまえに /layout save が必要だ。http://www.irssi.org/documentation/startup#c4

2007年 07月 03日

gerry++

まじいたい……

すっとーん! って出たよ! はらいたすぎる!

2007年 06月 29日

vimperator のコマンドラインで C-[ がきかないのをなおす userChrome.js

Mac だけなのか、それとも「おれの」Mac だけなのか、あるいは Windows でもそうなのかしらないけど、コマンドモードで C-[ がきかなくてイライラするので userChrome.js で対処する。まじめにやるならパッチかいたほうがいいとおもうけど、chrome 展開したのをインストールとかよくわからないので

setTimeout(function () {
	if (!keyToString.mod) {
		var _orig_keyToString = keyToString;
		keyToString = function (evt) {
			var ret = _orig_keyToString(evt);
			return (ret == "<C->") ? "<C-[>" : ret;
		};
		keyToString.mod = true;
	}
}, 500);

C- のあとのは C-v C-[ で入力。

.vimperatorrc つかえよ

http://lab.lowreal.net/trac/browser/config/.vimperatorrc
.vimperatorrc も実は setTimeout で実行されるんだぜ…… (だからなんだ

vimperator つかってなおかつ URL バーを表示させているとき、URL バーから C-[ で脱出するための .vimperatorrc

:js <<EOF
(function () {
	var urlbar = document.getElementById("urlbar");
	if (!urlbar.urlbar_escaped) {
		urlbar.urlbar_escaped = true;
		urlbar.addEventListener("keypress", function (e) {
			if (keyToString(e) == "<C-[>") {
				setCurrentMode(MODE_NORMAL);
				hah.disableHahMode();
				focusContent(true, true);
			}
		}, true);
	}
})();
EOF

下の keyToString を適用ずみで
URL オートコンプリートは Fx デフォのほうがいい…… <Cmd-L>fli<TAB><RET> でふりっかーだもんなぁ

2007年 06月 28日

plusplusbot on IRC

http://lab.lowreal.net/trac/browser/chokan/trunk/plugins/plusplus.rb

プラグイン用のディレクトリをとれる API がいるなぁ……

vimperator の command を userChrome.js で拡張する

/*
 * [
 *     0: [all names of this command],
 *     1: usage,
 *     2: short help
 *     3: helptext
 *     4: function (arguments in this order: args, special, count, modifiers)
 *     5: completefunc
 * ]
 */
setTimeout(function () {
	// for reloading uc.js
	if (g_commands._orig_g_commands) {
		g_commands = g_commands._orig_g_commands.concat();
	} else {
		g_commands._orig_g_commands = g_commands.concat();
	}
	showStatusbarMessage("Loading Additional Commands...", STATUSFIELD_URL);

	const prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
	var proxySetting = [
		function Disable () {
			prefs.setIntPref("network.proxy.type", 0);
		},
		function LocalSocks () {
			prefs.setIntPref("network.proxy.type", 1);
			prefs.setCharPref("network.proxy.socks", "localhost");
			prefs.setIntPref("network.proxy.socks_port", 10080);
		},
		function ArrogationCharlotte () {
			prefs.setIntPref("network.proxy.type", 1);
			prefs.setCharPref("network.proxy.http", "charlotte");
			prefs.setIntPref("network.proxy.http_port", 5432);
		},
		function ArrogationLocal () {
			prefs.setIntPref("network.proxy.type", 1);
			prefs.setCharPref("network.proxy.http", "charlotte");
			prefs.setIntPref("network.proxy.http_port", 5432);
		},
		function School () {
			prefs.setIntPref("network.proxy.type", 1);
			prefs.setCharPref("network.proxy.http", "proxy");
			prefs.setIntPref("network.proxy.http_port", 8081);
		},
	];

	g_commands.push([
		["proxy"],
		["proxy {setting name}"],
		"Change proxy settings.",
		"",
		function (args, special, count) {
			var name = args;
			for (var i = 0; i < proxySetting.length; i++) {
				if (proxySetting[i].name.toLowerCase() == name.toLowerCase()) {
					proxySetting[i]();
					showStatusbarMessage("Loading Setting " + name, STATUSFIELD_URL);
					break;
				}
			}
		},
		function (filter) {
			g_completions = [];
			g_substrings  = []; // これやらないと変な補完される?
			proxySetting.forEach(function ($_) {
				if ($_.name.toLowerCase().indexOf(filter.toLowerCase()) == 0) {
					g_completions.push([$_.name, ""]);
				}
			});
			return g_completions;
		}
	]);

}, 500);

vimperator は Chrome Window のグローバル変数を汚染しまくる。(g_commands とか g_ からはじまるやつはグローバル変数。g_substring を補完関数で初期化しないと変な補完がされる。なんてこった)

拡張が実行される順序がよくわからないので setTimeout してる。

help は g_commands から自動生成されているので、うえのがちゃんとロードされると、ヘルプページの最後に :proxy の説明がでてくるよ!

2007年 06月 26日

diff memo

begin
require "rubygems"
rescue LoadError
end
require "diff/lcs"

s1 = <<EOS
aaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbb
dddddddddddddddddddddddddd
eeeeeeeeeeeeeeeeeeeeeeeeee
aaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbb
dddddddddddddddddddddddddd
eeeeeeeeeeeeeeeeeeeeeeeeee
aaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbb
cccccccccccccccccccccccccc
dddddddddddddddddddddddddd
eeeeeeeeeeeeeeeeeeeeeeeeee
ffffffffffffffffffffffffff
EOS

s2 = <<EOS
aaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbb
dddddddddddddddddddddddddd
eeeeeeeeeeeeeeeeeeeeeeeeee
aaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbb
dddddddddddddddddddddddddd
eeeeeeeeeeeeeeeeeeeeeeeeee
aaaaaaaaaaaaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbbbbbbbbbbbbb
dddddddddddddddddddddddddd
eeeeeeeeeeeeeeeeeeeeeeeeee
fffffffffffffggggggggggggg

zzzzzzzzzzzzzzzzzzzzzzzzzz
zzzzzzzzzzzzzzzzzzzzzzzzzz
EOS

#require "pp"
#Diff::LCS.sdiff(s1.to_a, s2.to_a).each do |l|
#	case l.action
#	when "="
#		puts " " + l.old_element
#	when "!"
#		puts "-" + l.old_element
#		puts "+" + l.new_element
#	when "+"
#		puts "+" + l.new_element
#	when "-"
#		puts "-" + l.old_element
#	end
#	#pp l
#end

diffs = Diff::LCS.sdiff(s1.to_a, s2.to_a)
require "erb"

include  ERB::Util
File.open("test.html", "w") {|f| f.puts ERB.new(DATA.read, nil, "%>").result(binding) }

__END__
<style type="text/css">
.diff {
	line-height: 1.33;
	font-size: 90%;
	width: 100%;
}

.diff del {
	display: block;
	background: #fdd;
	text-decoration: none;
}

.diff ins {
	display: block;
	background: #dfd;
	text-decoration: none;
}

.diff th {
	color: #888866;
	background: #EEEEDD;
	text-align: right;
	padding: 0 0.5em;
	border-style: solid;
	border-width: 0 0 1px 1px;
	border-color: #998 #d7d7d7;
	width: 2em;
}

.diff td {
	font-family: monospace;
}
</style>
<table class="diff" cellspacing="0">
	<thead>
		<tr>
			<th>old</th>
			<th>new</th>
			<th>content</th>
		</tr>
	</thead>
	<tbody>
	<% diffs.each do |c| %>
		<% case c.action
		   when "=" %>
		<tr>
			<th><%=h c.old_position + 1 %></th>
			<th><%=h c.new_position + 1 %></th>
			<td><%=h c.new_element %></td>
		</tr>
		<% when "!" %>
		<tr>
			<th><%=h c.old_position + 1 %></th>
			<th></th>
			<td><del><%=h c.old_element%></del></td>
		</tr>
		<tr>
			<th></th>
			<th><%=h c.new_position + 1 %></th>
			<td><ins><%=h c.new_element%></ins></td>
		</tr>
		<% when "+" %>
		<tr>
			<th></th>
			<th><%=h c.new_position + 1 %></th>
			<td><ins><%=h c.new_element %></ins></td>
		</tr>
		<% when "-" %>
		<tr>
			<th><%=h c.old_position + 1 %></th>
			<th></th>
			<td><del><%=h c.old_element %></del></td>
		</tr>
		<% end %>
	<% end %>
	</tbody>
</table>

書くほどでもないなぁって思ってるといつのまにか失くしてしまう……

2007年 06月 25日

vim のファイル名補完

そういえば :e とか :w とかいろいろななとき、vim だとファイル名の補完が DOS っぽくぐるぐるまわるけど、zsh みたいに共通部分だけ補完にはできないのかなぁ。めんどい

2007年 06月 24日

gerry++