トップ «前の日記(2010-03-15) 最新 次の日記(2010-03-17)» 編集

ヨタの日々

2001|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|12|
2024|01|02|03|

2010-03-16 :-(

_ 朝ッ

0530 起床

_ 仕事

0830 出勤

_ [Ruby][コードリーディング][がらくた][高林哲]がらくたを読む find-inactive-ml

http://0xcc.net/attic/find-inactive-ml

  • N日以上メールが流れていないメーリングリストを抽出する
  • メールは MailDir 形式で格納していること

だと思う。たぶん。

Ruby のプログラム。読んでいく。

if ARGV.empty?
  puts "Usage: find-inactive-ml [-d num] <directory>..."
  exit 0
end

プログラムへの引数が何も無かったら Usage を印字して終了。-d は N日を指定する。

ndays = 100

N日はデフォルトでは 100 日とする。つまり -d を指定しない場合は、100 日以上メールが流れていないメーリングリストを抽出することになる。

parser = GetoptLong.new
parser.set_options(['--days', '-d', GetoptLong::REQUIRED_ARGUMENT])
parser.each_option {|name, arg|
  if name == "--days"
    ndays = arg.to_i
  end
}

ここはオプションを解析している。GetoptLong を使用すると GNU getopt_long のようにオプションを指定できるようになる。

最後のコード片を見る。

now = Time.now
ARGV.each {|dir|
  last = Time.at(0)                          ## 起算時を取得
  Dir.new(dir).each {|file|
    fullpath = File.join(dir, file)          ## ディレクトリ名とファイル名を連結
    next unless File.file?(fullpath)         ## ファイルでなければ無視
    last = [last, File.mtime(fullpath)].max  ## より新しい mtime を取得
  }
  if (now - last) > 86400 * ndays # no mail received for last n days
    puts dir
  end
}

ようするに指定したディレクトリの中で最も新しいファイル( メールのこと )を探し、そのファイルの mtime が N日以上であるかどうかを調べている。

面白かったのは 2 つ。

last = Time.at(0)

これははようするに変数を 1970 年 1 月 1 日で初期化している。irb してみる。

irb(main):003:0> Time.at(0)
=> Thu Jan 01 09:00:00 +0900 1970

たんに last = 0 でも良いような気がするけど、意味を考えるとやはり「もっとも最初の日付」で初期化するほうがいいんだろう。 あとで Time オブジェクトとして比較などするから Time.at(0) にしてるのか。

もうひとつ面白かったのはここ。

last = [last, File.mtime(fullpath)].max

2 つの値のうち大きいほうを求めている。無名の配列( と言っていいのか? )を作り、max メソッドを呼び出している。こういう書き方もできるんだねえ。

_ 【限定復刻盤】FINAL FANTASY Finest Box

( via Nonsense Zone )

交換のためにはスクエニメンバーズポイント 1500 必要。

私が持ってるのは 2300 くらいあったので交換した。

_ [リッジレーサー7]リッジレーサー7

オンラインバトルなど。「どうしてこのひとにマーク付けてるんだろか、逆走常習犯のひとかなあ、Hiroyasumi のひとも『…』と言ってるし」などと走りはじめたらたしかに逆走常習犯のひとだった。

  • 走行距離 71046 km
  • RSGP 進行度 100.0 %
  • 名声 22322 FP
  • オンラインバトル勝利数 648/2404