トップ «前の日記(2011-12-20) 最新 次の日記(2011-12-22)» 編集

ヨタの日々

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|04|

2011-12-21 :-(

_ 午前

0520 起床

0830 出勤

0900 テスト準備

_ 午後

1300 テスト準備

1700 外出

_

1800 自社 || 打ち合わせ

1900 退勤

2000 ruby

2130 飯

_ [fswiki][FreeStyleWiki][hikifarm]fswiki の項目の日付がアレだったので hikifarm に整合させた

新規作成してコピペなどして [ 20111214#p04 ] 日付が 2011-12-14 になってしまったので hikifarm に日付を整合させることにした。

hikifarm で表示される各項目の日付は、hikifarm/foobar の下の各項目ファイルの mtime を取得しているぽい。

fswiki で表示される日付も、各項目のファイルの mtime を使っているぽい。

上部メニューの「一覧」は lib/File/Listing.pm か。これは fswiki/data/foobar 下の各項目ファイルの mtime を基にしているらしい。

use File::Listing;
for (parse_dir(`ls -l`)) {
    ($name, $type, $size, $mtime, $mode) = @$_;
    next if $type ne 'f'; # plain file
    #...
}

Menu で recentdays プラグイン plugin/recent/RecentDays.pm を使ってるんだが、これは fswiki/config/foobar/modtime.dat のファイルに各項目ファイル名とシステム起算時間が書かれていて、そこから項目の日付を取得している。たとえばこう。ファイルのエンコードは EUC-JP

"currentを追跡する"="1290914431"
"crunch binary"="1216980765"
"PF"="1288531936"
"和訳されてない文書"="1257858585"
"VMware"="1213184522"
"misc"="1215782506"
"md"="1216555421"
"Xen"="1291635998"
"InterWikiName"="1213183731"
"pkgsrc"="1304407352"
"X"="1213184253"
"NetBSD/hpcsh"="1213184804"
"SideMenu"="1213183731"
"LANDISK"="1236673032"
"FrontPage"="1295002136"
"Diskless"="1213184236"
"電源管理"="1213184146"

というわけで以下のようにする。

  • hikifarm/foobar を元にする
  • fswiki/data/foobar の項目ファイルの mtime を設定
  • fswiki/config/foobar/modtime.dat に各項目ファイル名とシステム起算時間を記述

各項目ファイルの名前は URL エンコードされているので適当にデコードする。

テキトーにこんな。エラー処理とかしてないんで

#!/usr/pkg/bin/ruby -Ku

require 'pp'
require 'nkf'
require 'cgi'

def collect(dirpath)
  files = {}
  Dir.chdir(dirpath) {|path|
    Dir.glob("*") {|file|
      files[file] = File.stat(file)
    }
  }

  return files

end

def update(dirpath, files)
  Dir.chdir(dirpath) {|path|
    files.each { |filepath, stat|
      f = filepath + ".wiki"
      next unless File.exist?(f)
      File.utime(stat.atime, stat.mtime, f)
    }
  }
end

def write(datpath, files)
  str = ""
  files.each { |filepath, stat|
    f = CGI.unescape(filepath)
    i = stat.mtime.to_i
    fe = NKF.nkf( '-e', f )
    str << "\"#{fe}\"=\"#{i}\"\n"
  }

  File.open(datpath, "w").write(str)

end



def main(argv)
  hikidir = argv[0]
  fswikidir = argv[1]

  Dir.glob("#{hikidir}/*") { |dent|
    next unless File.directory?(dent)

    basename = File.basename(dent)
    srcdir = "#{dent}/text"
    dstdir = "#{fswikidir}/data/#{basename}"
    datpath = "#{fswikidir}/config/#{basename}/modtime.dat"

    next unless File.exist?(dstdir)

    files = collect(srcdir)
    update(dstdir, files)
    write(datpath, files)
  }

end

main(ARGV)

みたいな

% ./mtimer.rb ~/usr/local/var/hikifarm ~/public_html/fswiki