2006年 12月 31日

THAL like

	html = html.replace(/>([^<]+)/g, function () {
		var ret = arguments[1];
		ret = ret.replace(/¥[?(https?:¥/¥/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)¥]?/g, '<a href="$1">$1</a>');
		ret = ret.replace(/¥[?(d:id:([A-Za-z][a-zA-Z0-9_¥-]{2,14}))(¥:(¥d{8}))?(?:(¥#|:)([a-zA-Z0-9_]+))?¥]?/ig, function () {
			if (arguments[5]) {
				var delim = arguments[5] == ':' ? '/' : '#';
				return [
					'<a href="http://d.hatena.ne.jp/',
					arguments[2],
					'/',
					arguments[4],
					delim,
					arguments[6],
					'">',
					arguments[1],
					arguments[3],
					arguments[5],
					arguments[6],
					'</a>'
				].join('');
			} else {
				return [
					'<a href="http://d.hatena.ne.jp/',
					arguments[2],
					'/',
					arguments[4],
					'">',
					arguments[1],
					arguments[3],
					'</a>'
				].join('');
			}
		});
		return '>'+ret;
	});

2006年おわり

あー日記を最初から読み直してメモしてたけど、途中で Fx 固まって消えたのでもういいや。でも年に一度ぐらいは日記を読み直したほうが絶対いいなぁと思った。こんなことあったのか、とか気付いたり、あれって今年のできごとだったんだ、と気付いたり面白い。

現在位置の確認をするのに、過去の日記はたいへんつかえるのかもしれないなぁと思いました。

今年は前年にも増していろいろなことがあり、いろいろな人のお世話になりました。おかげさまで二年ぐらいたったように感じられます。ありがとうございます。

だんだん書ける事が少なくなっていくのが不安ですが、できるだけ何も考えないで書いていけるようにするために緩やかな変化をつけていこうと思います。

img_231602

2006年 12月 30日

なんか

なんだかわからないけど、うまく対称性があるインスタンスメソッドの対を見ると、ドキドキします。

OS X のブラウザでのフルスクリーンモード

Opera 以外はできないのかなぁ。

今日書いたコード

JS 部分は Opera/Firefox/Safari でうごいて IE がなかまはずれ
CSS 部分は Firefox/Safari で想定したものになって、Opera/IE が想定外(ただしこのふたつは挙動が一緒)ってなった

なんかこの組み合わせが多いきがする

2006年 12月 29日

XP がまた不安定

んがー。ログオフしたら再起動かかった。こわい

2006年 12月 28日

XREA を rsync で更新する

なんか GUI のクライアント使うのさえ面倒くさくなってきてミラーリングツールを使って更新することにした。

#!/usr/bin/ruby

require 'optparse'
require 'pathname'
require 'open-uri'

ROOT = '/srv/www/virtual/userid/public_html'
SERV = '/virtual/userid/public_html'
HOST = 's63.xrea.com'
USER = 'userid'
PASS = 'hogehoge'

open("http://www.#{HOST}/jp/admin.xcg?id=#{USER}&pass=#{PASS}&telnet=t") do |f|
    data = f.read
    ip =  data[/NAME="remote_host" VALUE="([¥d.]+)"/, 1]
    raise "can't get IP" unless ip

    open("http://www.#{HOST}/jp/admin.xcg?id=#{USER}&pass=#{PASS}&remote_host=#{ip}&ssh2=SSH%93o%98%5E") do |f|
    end
end


host = nil
dry  = false
OptionParser.new do |opts|
    opts.on('-n', '--dry-run') { dry = true }

    opts.parse!

    host = ARGV[0]
    unless host
        puts opts
        exit 1
    end
end


def sync(host, dry=false)
    dir = Pathname.new(ROOT) + host
    raise "#{host} is not exists." unless dir.exist?

    system(<<-EOC.gsub(/^¥t+/, ''))
    rsync #{dry ? '--dry-run' : ''} -vptr #{dir}/  #{USER}@#{HOST}:#{SERV}/#{host}
    EOC
end

unless sync(host, dry)
    puts "rsync failed. retry after 5min."

    (5 * 60).downto(0) do |i|
        print i, "¥r"
        $stdout.flush
        sleep 1
    end
    sync(host, dry)
end

こんなスクリプト書いて実行させてる。ホストごとに rsync できるようにしてる。


最初は lftp でやってたのだけど、こいつはなぜかファイルサイズを見るらしく困ったうえに、ファイルリストとるのが劇遅くてやる気がなくなるので結局 rsync にした。ssh 登録がめんどいけどそれも自動化した。

ピンホール

ピンホールかめら楽しいよ!

gerry++