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