2/07/2011
rubyの勉強
やろう やろう と思いながら
結局3年くらい勉強しないままにしてたruby
せっかく参考書まで買ったのに一度も目を通してない
というわけで、仕事の空き時間に練習してみた
(参考書がないのでGoogle先生のお世話になりました)
構文からの勉強だから非常に時間がかかった(働け)
先日のbtrfsのスナップショット用スクリプトのruby移植+α版
ハッシュが使えるお陰で設定ファイルがシンプルになりました。
/path/src /path/dst の形式で1行ずつ書いてくだけ。
以前の階層に関連する制約がなくなりました。
データ構造をもう少し考えて
1つのでdstにつき、複数のsrcという形式で記述できるように
したほうがよかったかなと思ってます(今後の課題)
#!/usr/bin/env ruby
require 'date'
def parse_dir(conf)
snap = Hash::new
conf.each_pair {|src, dst|
_src = src.sub(/$\//,"").split(/\s*\/\s*/)
if _src.size == 0
snap[src] = "#{dst}/rootfs_#{Time.now.strftime("%Y%m%d").to_s}"
else
snap[src] = "#{dst}/#{_src[_src.size - 1].strip}_#{Time.now.strftime("%Y%m%d").to_s}"
end
}
return snap
end
def get_conf(conf_file)
conf = Hash::new
open(conf_file) {|file|
while i = file.gets
_line = i.split
conf[_line[0]] = _line[1]
end
}
return conf
end
class Snapshot
def initialize(conf = "/etc/snap.conf")
@snap = parse_dir(get_conf(conf))
end
def do_snap
@snap.each_pair {|src, dst|
system("btrfs","sub","snap",src,dst)
}
end
end
if ARGV[0] == nil
snap = Snapshot.new
else
if File::ftype(ARGV[0]) == "file"
snap = Snapshot.new(ARGV[0])
else
p "no such file"
end
end
if snap != nil
snap.do_snap
end
Subscribe to:
Post Comments (Atom)
WSKY Bluetooth 5.0 トランスミッター レシーバー買いました
安くレシーバーモードでapt-x HDが使えるものというと非常に限られますが そのなかで高音質と評判のよかったものをということで購入しました。 音質は安いなりですね、apt-x HDで接続されている状態でも元がなんであれ痩せた音になります。 SBSにしか対応していない...
-
特に確認もせず買って来たもののドライバもないし 刺しただけではきちんと動かない 一応動作させることはできたが・・・ チップはRTL8811AUらしいのだが、そのチップ名でドライバを探しても正常に動くものは見つからない とりあえず認識して通信ができたドライバはこちら ...
-
発狂しそうだった件 以下を参考に実施 http://www.xpenology.nl/hp-n40ln54l-bios-modificatie-2013-10-01/ http://homeservershow.com/forums/index.php?/topic/4...
-
胡散臭いとしか言いようのない中華ゲーム機 丁果A330を買ってみた http://dingoo.hk/en_main.asp なぜこんな胡散臭いものを?というと、携帯アプリでロックマン2をやったときの操作 性の悪さ故の無様な死に方にイライラして、もっとまともなプラットフォームで手...
No comments:
Post a Comment