FTPからのダウンロード
30分プログラム、その88。
FTPからファイルをダウンロードするやつ。
#! /opt/local/bin/ruby -w # -*- mode:ruby enconding:utf-8 -*- # # ftp_get.rb - # # Copyright(C) 2007 by mzp # Author: MIZUNO Hiroki <hiroki1124@gmail.com> # http://mzp.sakura.ne.jp/ # # Timestamp: 2007/07/23 08:53:59 # # This program is free software; you can redistribute it and/or # modify it under the same terms as Ruby itself. # require 'net/ftp' host,username,password,*_= ARGV ftp = Net::FTP.new host,username,password ftp.passive = true ftp.chdir 'Logs' # 最新のログから7日前までを取得 ftp.nlst.reverse[0,7].each{|filename| puts filename begin ftp.get filename rescue => e puts "ERROR: #{e}skip #{filename}" end }
これだけだと対して、おもしろくないけど、id:mzp:20070722:ftpと組み併せると、FTPで「最近更新されたファイルは?」が実現できる。
#!/bin/sh #################### # setting #################### LOG_HOST=example.com LOG_USER=foo LOG_PASS=bar UP_HOST=example.com UP_USER=hoge UP_PASS=hage # clean rm -f *.log # get log file echo "get log file" ruby ftp_get.rb $LOG_HOST $LOG_USER $LOG_PASS # analyze echo "make ranking" ruby ftp_recently.rb *.log > updates.txt # upload echo "upload" ftp -n $UP_HOST <<EOF user $UP_USER $UP_PASS passive binary put updates.txt bye EOF
和暦西暦変換
最近、西暦と平成の変換が必要になることが多いけど、即座にできないのでプログラムを書いてみた。これは、正しい怠惰の使い方ですよね。
ただ、seirekiとかsyouwaという変数名を使うのはいやだったので、日本語識別子を試してみる。
日本語識別子は、-Kオプションで文字コードを指定すると使えるようになります。
$ jpdate s60 1985 $ jpdate 2006 H18
#! /opt/local/bin/ruby -w -Ku # -*- mode:ruby enconding:utf-8 -*- # # jpdate.rb - 和暦 <-> 平成相互変換プログラム # # Copyright(C) 2007 by mzp # Author: MIZUNO Hiroki <hiroki1124@gmail.com> # http://mzp.sakura.ne.jp/ # # Timestamp: 2007/07/23 16:27:03 # # This program is free software; you can redistribute it and/or # modify it under the same terms as Ruby itself. # def from_昭和(昭和) 1900 + 昭和 + 25 end def from_平成(平成) 2000 + 平成 - 12 end def to_和暦(西暦) case 西暦 when 1926..1989 # 昭和 "S#{西暦 - 1988}" else # 平成 "H#{西暦 - 1988}" end end case ARGV[0] when /\AS/i # 昭和 puts from_昭和($'.to_i) when /\AH/i # 平成 puts from_平成($'.to_i) when /\A\d/ # 西暦 puts to_和暦(ARGV[0].to_i) end
ポータビリティはさておき、日本語の識別子のほうが圧倒的に分りやすいですね。
乱用さえしなければ、日本語識別子はありかもしれない。