2008年 02月 21日

git-svn で svn のブランチをマージ (未解決)

# git-svn version 1.5.3.6 (svn 1.3.2)
$ git clone -s ...
$ git reset --hard remotes/trunk # マスターを最後に trunk がコミットされたリビジョンにリセットする
$ git merge barbaz # barbaz はリモート svn なブランチ
$ git svn dcommit --dry-run

してしまうと、予想に反して barbaz のブランチにコミットされてしまう。

git-svn は dcommit のとき git log HEAD の git-svn-id: の一番最初 (最新) をみるらしいけど、リモートが svn なコミットを merge すると、そっちが最初になってしまう。

git-svn-id はコミットログに入ってるっぽいから自分で書いたらとりあえずコミット先はかわるだろうけど、あぶなくてできない。merge してくるときにブランチ側の git-svn-id を消すべきなんだとおもうけどよくわからない。うちの git-svn が古いけど新しいのだと直ってたりするのかな (古いのしか入らなかった。めんどす)。

>

2008年 02月 19日

LDR -> OpenFL のレートを同期 (一発で)

なんか書いた GM が微妙だったので Ruby で一括適用するのを書いてみました。バグあるかもしれないけど

やってることは

  • LDR から Subscription リストをとってくる
  • OpenFL の DB の subscriptions から指定したメンバー ID の subscription をとってくる
  • OpenFL の feedlink と同一のものを LDR の Subscription リストからさがし、あるならそれのレートを適用して保存

Ruby で AR つかって、OpenFL のモデルをそのまんま使ってるので OpenFL 側の保存とかは問題がおきにくいはずだけど、LDR からリストとってくるのがけっこうアレかも。/api/subs?unread=0 って一発で全部とれてるのかな……

あとは OpenFL 側の set_rate にフックかけて LDR に反映させる GM かけばいいかな……

OpenFL -> LDR のレート同期できた。とおもう。ほとんど未テスト

Subscription::LDR が feed->meta->{rate} にレートつっこんでるので Store::Fastladder をかきかえたほうがシンプルだ

sync_rate というオプションがでけたのでこれつかうと meta->{rate} が反映されるお>< typester++

FeedBurner の文字化けフィード削除

  - module: Filter::Rule
    rule:
      - module: Expression
        expression: |
          my $threshold = 0.3;
          return 1 unless $args->{entry}->body;
          my $body = $args->{entry}->body->plaintext;
          my $len  = length $body;
          $body =~ s/[^\?]//g;
          my $rate = length($body) / $len;
          $rate < $threshold;

もっといい方法あるのかなぁ。というか既にありそうなんだけどみつけられなかった

2008年 02月 18日

Gmail mobile

  • From のきりかえができない
    • デフォルトをモバイル用アドレスにしておいて、PC から送るときは毎回変えるとかやる必要ある
  • 署名と引用が返信で入る
    • 削除できない?

OpenFL

http://wota.jp/ac/?date=20061011

default-character-set=utf8
skip-character-set-client-handshake

を [mysqld] にくわえた。

sudo /etc/init.d/mysql restart    
mysqladmin -u root create fastladder

ちなみに一回も OpenFL 付属のクローラを起動せず (動作確認ぐらいしろよって話だけど)、Plagger の fastladder-crawler ブランチをチェックアウトしてきてセットアップした。

$ cat fastladder.yaml | grep module:
  - module: Aggregator::Async
  - module: Subscription::LivedoorReader
  - module: CustomFeed::MixiScraper
  - module: Filter::Rule
      module: Deduped
  - module: Store::Fastladder

あとはおいおい

Subscription::LivedoorReader + OpenFL でレートを同期する。

追記

LDR をフィード管理とメインのフィードクローラをつかっていこうとおもうのですが、レートをつけるのがめんどうなので LDR のレートを OpenFL に反映させます。

// require JSDeferred
unsafeWindow.LDR.register_hook('before_printfeed', function (e) {
	next(function () {
		console.log(e);
		var url = e.channel.feedlink;
		return parallel({
			api_key: getApiKey(),
			id: xhttp.get("http://reader.livedoor.com/subscribe/"+url).next(function (res) {
				var m = res.responseText.match(/button class="subs_edit" rel="edit:(\d+)"/);
				return m ? m[1] : null;
			})
		}).
		next(function (data) {
			console.log("Getting rate:"+uneval(data));
			if (data.id) {
				return xhttp.post(
					"http://reader.livedoor.com/api/feed/subscribed",
					"subscribe_id="+data.id+"&ApiKey="+data.api_key
				).
				next(function (res) {
					res = eval("("+res.responseText+")");
					console.log("rate:"+res.rate);
					unsafeWindow.set_rate(e.subscribe_id, res.rate);
				})
			} else {
				// not rated
				console.log("unrated");
			}
		});
	}).
	error(function (e) {
		alert(e);
	});
});

function getApiKey () {
	var callee = arguments.callee;
	return callee._cache ? next(function () callee._cache) : xhttp.get("http://reader.livedoor.com/reader/").next(function (res) {
		api_key = res.responseText.match(/var ApiKey = "([^"]+)";/)[1];
		callee._cache = api_key;
		return api_key;
	});
}

OpenFL 側でフィードをすすめると LDR からレート設定をもってきて反映させます。(一気にやるやつじゃない)

(あとでちゃんと GM のファイルにする)

OpenFL 側の UI から LDR へレートを反映させたいけどまた今度でいいや……

やっぱフィードがロードされたら subs.model.list をなめて一気にやったほうがいいかもなぁ。OpenFL -> LDR の伝播をどうするかだなぁ。

というか GM でやる必要はないよなぁ

2008年 02月 16日

gerry++

冷凍うどんたべたらゲリった (うどんはたぶんわるくない)

Fx3 b3

新規プロファイルにした。

: 1203137101:0;cp qhjh5wvc.default/places.sqlite  4jhh4wwb.2008-02-16
: 1203137145:0;cp -R qhjh5wvc.default/gm_scripts 4jhh4wwb.2008-02-16
: 1203137237:0;cp -R qhjh5wvc.default/chrome 4jhh4wwb.2008-02-16
: 1203137290:0;cp qhjh5wvc.default/stylish.rdf  4jhh4wwb.2008-02-16
: 1203137443:0;cp qhjh5wvc.default/key3.db  4jhh4wwb.2008-02-16
: 1203137517:0;cp qhjh5wvc.default/signons3.txt  4jhh4wwb.2008-02-16
  • ブックマークとか -> places.sqlite
  • パスワードの移行 -> key3.db と signons3.txt
  • Stylish の設定 -> stylish.rdf

つなぎとして縦置きタブにする userChrome.js 用のスクリプトをかいた (OSX)

http://coderepos.org/share/browser/lang/javascript/userchrome/verticaltab.uc.js

  • browser.tabs.closeButtons を 2 にしないとたぶんちょっと表示がくずれるとおもう。(非表示に、ということ)

タブの並べかえができなくてめんどい…… 実装するのたいへんそうだなぁ

2008年 02月 15日

$ svn log http://svn.coderepos.org/share/ | grep "| cho45 |" | wc -l
    1188

screen 再入門

screen のつかいかたをみなおそうとおもいました。tiarra とか mobirc を常にデバッグモードでたちあげてて邪魔なので別の screen においだす

やりたいこと

  • 完全にデーモンにして放置したくはないけど、基本的に放置なプロセスを別の screen に
    • mobirc
    • tiarra * 2
    • chokan
    • 再起動を簡単にできるようにしたい
  • irssi もデーモン側にしてマルチアタッチ (irssi は別の Terminal.app でみる)
# サーバ起動時にいっかいだけ
$ screen -S daemon ~/.screen/init-daemon.rb
$ screen -S main

でアタッチしやすいようにソケット名指定して各 screen を起動しとく。なぜか -dmS して起動すると init-daemon.rb がうまいこと実行されないので (system "screen" 系がのきなみ失敗する感じ……なんでだろう)、-S で起動してデタッチする。

daemon 側の screen では、zombie QR してプロセスがしんでもすぐ再起動できるように


マルチアタッチは普通に別のウィンドウからログインして screen -rx daemon