なんか ntp の設定してたら年が明けてた。iptables の設定わからない。別に普通の日だなぁ。当たり前か。

今年は

  • 50mm で納得いく写真がとれるようになりたい
  • Ruby 極めたい
  • Perl の型グロブをしっかり理解したい
  • Haskell やる気になりたい
  • unlambda をとりあえず極めたい
  • 可愛い女の子と新世界に旅立つ。

最後のがもちろん最もプライオリティが高いものであるが、実現可能性が著しく低いので、まず先に時間移動の方法を見つけたい。

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

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

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

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

img_231602

なんか 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 登録がめんどいけどそれも自動化した。