http://www.mnet.ne.jp/~tnomura/algorithm.html
奥村晴彦さんの「C言語による最新アルゴリズム事典」技術評論社、1991年、の
C 言語プログラムの Ruby への翻訳に挑戦します。
http://www.mnet.ne.jp/~tnomura/algorithm.html
奥村晴彦さんの「C言語による最新アルゴリズム事典」技術評論社、1991年、の
C 言語プログラムの Ruby への翻訳に挑戦します。
http://rubyzip.sourceforge.net/
ruby で zip を扱うためのライブラリ。
インストール
install.rb が付属しているが、オプションでインストール先が指定できない。
sitelibdir に zip というディレクトリを作り、そこにファイルを
コピーしているだけなので、install.rb を使わずに spec file を書く。
展開
Windows 上で作られた SJIS のファイル名のファイルは Linux 上では
文字化けするので、euc-jp でファイルを展開するには
次のようにすればよい。
zip = Zip::ZipFile.new(INPUT.zip)
name = NKF::nkf('-eZ', entry.name).gsub(/\s+/, "_")
File.open(File.join(dist, name), "w") {|f| f.puts zip.read(entry.name)}
end
圧縮
Linux 上で zip file を作ると Windows 上で化けるので、
SJIS のファイル名として圧縮するには次のようにすればよい。
Zip::ZipFile.open("OUTPUT.zip", Zip::ZipFile::CREATE) {|zf|
files.each do |i|
zf.add(NKF::nkf("-s",i), i)
end
}
files は 圧縮するファイル (path) の配列。
zip.rb の 11 行目は警告がでるのでコメントアウト。
09 if Tempfile.superclass == SimpleDelegator 10 require 'zip/tempfile_bugfixed' 11 Tempfile = BugFix::Tempfile 12 end
ruby-list 39588 からのスレッドより
Simple に
class Array
def randomize
sort_by{ rand(100) }
end
def randomize!
replace randomize
end
end
速度を気にする場合
class Array
def randomize!
length.times do |i1|
i2 = rand(length)
t = self[i1]
self[i1] = self[i2]
self[i2] = t
end
end
def randomize
result = self.dup
result.randomize!
result
end
end
To: [email protected] (ruby mailing list)
Subject: [ruby-list:39198] RHG 全章公開
From: Minero Aoki <[email protected]>
Date: Tue, 17 Feb 2004 04:20:41 +0900
Posted: Tue, 17 Feb 2004 04:20:40 +0900
青木です。
Ruby Hacking Guide こと『Rubyソースコード完全解説』の HTML 版を
全章公開しました。
URL:
http://i.loveruby.net/ja/rhg/
オンライン版とアーカイブしたのと両方あるので、都合のよいほうを
お使いください。
なお、この原稿は初校ベースであるため、間違いがかなりたくさんあります。
その逆に、最初のほうの章は書籍にある間違いまで直っていたりもします。
---------------------------------------------------------------
青木峰郎
http://www.imasy.or.jp/~hisa/ruby/tempura/
Tempura は, XML (XHTML など) で書かれたテンプレートと実データ
(任意のオブジェクト) を結び付け, 生きた XML 文書を生成するための,
いわゆるテンプレートライブラリです. オブジェクト指向スクリプト言語
Ruby 用のライブラリとして実装されています.
0 方向に丸める.
1.8 系 では x.quo(y).truncate を使う
irb(main):002:0> 5 / -2 => -3 irb(main):003:0> 5 / -2.0 => -2.5 irb(main):004:0> 5.quo(-2).truncate => -2 irb(main):005:0> -5 / -2.0 => 2.5 irb(main):006:0> -5 / -2 => 2 irb(main):007:0> -5.quo(-2).truncate => 2
1.6 系では,quo がないので
((x+0.0)/y).truncate
openの中に直接URIを書けるようにする。Ruby 1.8標準塔載。
使用例
require 'open-uri'
open("http://www.ruby-lang.org/en/index.html") {|f|
f.each_line {|line| p line}
p f.base_uri
p f.content_type
p f.charset
p f.content_encoding
p f.last_modified
}
open-uri を使わないとこんな感じ
URI.parse("http://www.ruby-lang.org/en/").open(
"User-Agent" => "Ruby/#{RUBY_VERSION}",
"From" => "[email protected]",
"Referer" => "http://www.ruby-lang.org/"
) {|f|
...
}
Linuxビボ〜ろく の
- 09-26 http://ponx.s5.xrea.com/bibo/20030926.html#p03
- 09-28 http://ponx.s5.xrea.com/bibo/20030928.html#p01
- 09-29 http://ponx.s5.xrea.com/bibo/20030929.html#p01
より.
def match_first(a,b)
i = 0
while a[i] and b[i] and a[i] == b[i]
i+=1
end
a[0, i]
end
def match_first(a,b)
a.size.times{|i|
return(a[0,i]) if a[i] != b[i]
} and a
end
Just another Ruby porter,
http://jarp.jin.gr.jp/diary/200308b.html#200308111 より.
% ruby -rdate -rpp \
-e 'pp Date._strptime(ARGV[0], "%d/%b/%Y:%T %Z")' \
'11/Aug/2003:22:36:08 +0900'
{:zone=>"+0900",
:sec=>8,
:year=>2003,
:hour=>22,
:offset=>32400,
:mday=>11,
:min=>36,
:mon=>8}
% ruby -rdate -e '
p Time.mktime(*Date._strptime(ARGV[0], "%d/%b/%Y:%T %Z").
values_at(:year, :mon, :mday, :hour, :min, :sec, :zone))' \
'11/Aug/2003:22:36:08 +0900'
Mon Aug 11 22:36:08 JST 2003