更新時刻の取得が簡単になった。
Ruby1.8.1をWindowsXPにインストールする。
コマンドプロンプトからRubyのバージョンを出力する。
# ruby -v
ruby 1.8.1 (2003-12-25) [i386-mswin32]
まずはいつもどおりにこの文字列を出力してみる。
ファイルを作成する。
hello.rb
------------------------------
#printは改行しない出力を行う
#putsは改行する出力を行う
#pはオブジェクトの内容を出力する
print "Hello World\n"
実行する。
# ruby hello.rb
Hello World
数値の文字列表現を返すメソッド呼ぶ。
print "abc" + 4.to_s
組み込みクラスの文字列への暗黙変換メソッドを定義する。
class Numeric
def to_str
self.to_s
end
end
result = "abc" + 3
print result
ユーザーのホームディレクトリ配下にライブラリを置いてrequireしたい。
$: << "C:/rubylib/patched-html-parser"
require "html-parser"
print "OK"
http-access2/2.0.4を使ってファイルを取得する。
しかし、このやり方ではSSLEAY32.dllが見つからないというダイアログが表示されてしまう。OpenSSLのWindows向けバイナリを入れれば解決するかもしれない。
require "http-access2"
client = HTTPAccess2::Client.new
uri = "http://www.tea4miki.org/"
content = client.get_content(uri)
print content
添付ライブラリのネットワークカテゴリにHTTPを扱うライブラリがあるのでそれを利用してファイルを取得する。
require "net/http"
Net::HTTP.get_print "www.tea4miki.org", "/"
require "date"
def formatDate(date)
return date.strftime("%Y/%m/%d")
end
print formatDate(Date.today)
正規表現 "."(ピリオド) で改行もマッチするようにしたい。
content = "aaa\nbbb"
content.sub(/aaa.bbb/) {|match|
print "line mode match!"
}
content.sub(/aaa.bbb/m) {|match|
print "multi line mode match!"
}
HTTPのLast-ModifiedをJSTに変更したい。
require "net/http"
require "time"
response = Net::HTTP.get_response(URI.parse("http://www.tea4miki.org/"))
puts Time.parse(response["last-modified"])
puts Time.parse(response["last-modified"]).getlocal
StrictなHTMLを前提とする。
require "net/http"
def trimTag(includeTag)
return includeTag.gsub(/<.+?>/, "")
end
response = Net::HTTP.get_response(URI.parse("http://www.tea4miki.org/"))
puts "-----Start-----"
response.body.each {|line|
print trimTag(line)
}
puts "-----End-----"
rbuconvライブラリを使う。Rubyだけで書かれているのでコンパイルが面倒な人向け。
require "uconv"
u8str = Uconv.sjistou8(File.read("sjis.txt"))
File.open("utf8.txt", "w") {|file|
file.puts(u8str)
}
RSS Parser 0.1.0を使ってRSS 1.0のドキュメントを構築する。
require "net/http"
require "date"
require "rss/1.0"
require "rss/maker"
require "rss/dublincore"
require "uconv"
response = Net::HTTP.get_response(URI.parse("http://www.tea4miki.org/articles/2004/11/15"))
lastmodified = Time.parse(response["last-modified"]).getlocal
rss = RSS::Maker.make("1.0", ["dublincore"]) do |maker|
maker.channel.about = "http://www.tea4miki.org/rss"
maker.channel.title = "プログラマっ子の足跡"
maker.channel.description = "藤本美貴様の指先を見つめるプログラマっ子のサイトです"
maker.channel.link = "http://www.tea4miki.org/"
maker.items.do_sort = true
item = maker.items.new_item
item.link = "http://www.tea4miki.org/articles/2004/11/15"
item.title = "Rubyを使ってRSSを生成する"
item.date = lastmodified
end
File.open("rss.txt", "w") {|file|
file.puts(Uconv.sjistou8(rss.to_s))
}