[#6214] RE^2: HTML class — 青山 和光 <PXN11625@...>
In-Reply-To: [ruby-list:6118] Re: HTML class
[#6219] Ruby連載 第4話 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
原です。
まつもと ゆきひろです
原です。
ももちゃん@あるもにこすです.
まつもと ゆきひろです
In message <199802040557.OAA18458@picachu.netlab.co.jp>
まつもと ゆきひろです
In message <199802040739.QAA20750@picachu.netlab.co.jp>
まつもと ゆきひろです
In message <199802040803.RAA24375@picachu.netlab.co.jp>
[#6249] Re: i++ — 助田 雅紀 <masaki.suketa@...>
助田です。
ことけんです
まつもと ゆきひろです
しげひろです.
ももちゃん@あるもにこすです.
まつもと ゆきひろです
ももちゃん@あるもにこすです.
まつもと ゆきひろです
[#6256] pop & smtp-lib.rb — tateishi@... (Takaaki TATEISHI)
立石@理科大です。
[#6272] I'd like to subscribe this ML — INOUE Katsuyuki <inoue@...>
井上勝行 と申します。
[#6279] Re: i++ — 助田 雅紀 <masaki.suketa@...>
助田です。
[#6314] RE: ruby's design policy (Re: I'd like to subscr ibe this ML) — 助田 雅紀 <masaki.suketa@...>
オブジェクト指向周辺をぶらぶらしている助田です。
まつもと ゆきひろです
井上勝行です。
まつもと ゆきひろです
[#6315] install some versions — gotoken@... (GOTO Kentaro)
ごとけんです
[#6333] ruby 流に添削して下さい — nkon@...2.3web.ne.jp
さくです.
さくです.自己フォロー.
まつもと ゆきひろです
わたなべです.
まつもと ゆきひろです
わたなべです.
[#6342] Re: ruby's design policy (Re: I'd like to su bscr ibe this ML) — 助田 雅紀 <masaki.suketa@...>
助田です。
[#6372] ruby 1.1b7 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
前田です。
わたなべです.
ふなばです。
まつもと ゆきひろです
ふなばです。
[#6373] call for scripts — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
> もっと良いものがあるかもしれないと考え,実例集に載せられるよ
sort-schedule.rbで、ちょっと疑問に思っていることがあるのです
金城です.
まつもと ゆきひろです
金城です.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
原です。
From: Shin-ichiro HARA <sinara@blade.nagaokaut.ac.jp>
きくたに@ぷ〜たろ〜です。
さくです.
わたなべです.
まつもと ゆきひろです
前田です。
前田です。
まつもと ゆきひろです
前田です。
前田です。
前田です。
前田です。
わたなべです.
ふなばです。
In message <19980222011624S.tadf@kt.rim.or.jp>
前田です。
ふなばです。
ふなばです。
けいじゅ@日本ラショナルソフトウェアです.
Regard to "[ruby-list:7447] Re: call for scripts"
[#6422] simple_chat_server — 青山 和光 <PXN11625@...>
In-Reply-To: [ruby-list:6395] Re: call for scripts
[#6447] gsub — Tadayoshi Funaba <tadf@...>
ふなばです。
[#6514] ROT13/47 — OZAWA Sakuro <crouton@...>
小澤さくです.
[#6516] RE^2: simple_chat_server — 青山 和光 <PXN11625@...>
In-Reply-To: [ruby-list:6437] Re: simple_chat_server
まつもと ゆきひろです
class String; def - x; end; end; %-
[#6538] IE favorites to HTML — OZAWA Sakuro <ozawa@...>
小澤さくです。会社からもMLに入っちゃいます。
[#6565] Re: Counter class [Re: i++ ] — toyofuku@...
豊福@パパイヤです。
[#6582] File::Separator on cygwin — OZAWA Sakuro <ozawa@...>
小澤さくです。
わたなべです.
小澤さくです。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
[#6591] ruby 1.1b8 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
前田です。
けいじゅ@日本ラショナルソフトウェアです.
前田です。
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
さくです.
前田です。
小澤さくです。
うさぎの名前ででています:-)
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
[#6601] 8-queen — TAKAHASHI Masayoshi <maki@...>
高橋です。今度ちゃんと1.1b7にします……と書こうとしたら、b8になって
[#6605] true/TRUE false/FALSE nil/NIL — OZAWA Sakuro <crouton@...>
小澤さくです.
前田です。
まつもと ゆきひろです
[#6610] tcltklib dosen't compile — TEI meiki <tei@...>
鄭です。
[#6621] here document — Tadayoshi Funaba <tadf@...>
ふなばです。
[#6635] hello — WATANABE Tetsuya <tetsu@...>
渡辺哲也と申します。
まつもと ゆきひろです
>>>>> "matz" == Yukihiro Matsumoto <matz@netlab.co.jp> writes:
[#6706] Re: Counter class — toyofuku@...
豊福@パパイヤです。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
[#6735] Mutex/ConditionVariable/Queue — shugo@... (Shugo Maeda)
前田です。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
前田です。
From: shugo@po.aianet.ne.jp (Shugo Maeda)
前田です。
From: shugo@po.aianet.ne.jp (Shugo Maeda)
前田です。
まつもと ゆきひろです
[#6786] Re: Mutex/ConditionVariable/Queue — senda@...
From: shugo@po.aianet.ne.jp (Shugo Maeda)
前田です。
前田です。
前田です。
けいじゅ@日本ラショナルソフトウェアです.
In message <199802261520.AAA18702.keiju@cupmail0.rational.com>
前田です。
In message <199802270237.CAA00362@soleil.localnet.or.jp>
前田です。
In message <199802270635.GAA00354@soleil.localnet.or.jp>
前田です。
[#6819] ruby 1.1b9 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#6829] monitor.rb — shugo@... (Shugo Maeda)
前田です。
[#6830] what is 'octet decimal' — OZAWA Sakuro <crouton@...>
さくです.
[#6852] Counting Semaphore — Kazuhisa YANAGAWA <katze@...>
Counting semaphore をちょっと作ってみました. 見ての通り, コードは
[ruby-list:6615] IP address calculator (Re: call for scripts)
山本 健吾です。
最近のサイン本ブームに触発されて(^^;スクリプトを書いてみました。
これでエントリさせて下さい。
IPアドレス用の計算機(199行)です。いろいろと怠ける事ができます。
・ブロードキャストアドレスを求める
ipcalc 192.168.33.43/28 b
192.168.33.47/28
・ネットワークアドレスを求める
ipcalc 172.16.38.32/22 n
172.16.36.0/22
・/27の点区切り10進表記をド忘れしたとき
ipcalc /27
255.255.255.224
・ネットワークを8つに割り、5番目のサブネットのブロードキャストを求める
ipcalc '(172.28.38.17/25 n // 8)[4] b'
172.28.38.79/28
・ネットワークを4つに割り、それぞれのサブネットの先頭と終りのホストア
ドレスを列挙する
ipcalc '(192.168.22.0//4).collect{|sub| [sub + 1, sub b - 1]}'
[192.168.22.1, 192.168.22.62, 192.168.22.65, 192.168.22.126, 192.168.22.129, 192.168.22.190, 192.168.22.193, 192.168.22.254]
↑このあたりで手抜きがバレますね(^^;
他にも演算子(のふりをしたメソッド)があるのですが、あまり使用しないと思
います。
----------------------------------------------------------------------
#!/usr/local/bin/ruby
# ipcalc : An IP address calculator
# Written by Yamamoto Kengo 1998/2/22
class DottedDecimal
def initialize(seed)
@value = 0
if seed.is_a?(String) && seed =~ /^\d+(\.\d+)+$/
seed.split(/\./).each{|octet|
@value <<= 8
@value += octet.to_i
}
else
@value = seed.to_i
end
raise "invalid value #{to_s} for #{type}" unless valid?
end
def valid?
true
end
def to_s
value = @value
string = []
for i in 1..value.size
octet = (value & 0xff).to_s
string.unshift(octet)
value >>= 8
end
string.join('.')
end
def to_i
@value
end
def ==(other)
@value == other.to_i
end
def <=(other)
@value <= other.to_i
end
def >=(other)
@value >= other.to_i
end
def <(other)
@value < other.to_i
end
def >(other)
@value > other.to_i
end
def +(other)
DottedDecimal.new(@value + other.to_i)
end
def -(other)
DottedDecimal.new(@value - other.to_i)
end
def &(other)
DottedDecimal.new(@value & other.to_i)
end
def |(other)
DottedDecimal.new(@value | other.to_i)
end
end
class Netmask < DottedDecimal
def initialize(seed)
seed = 32 if seed.nil?
if seed.is_a?(String) && seed =~ /^\/?\d+$/
seed = seed.sub(/\//, '').to_i
end
if seed.is_a?(Integer) && seed <= 32
seed = (0xffffffff >> seed) ^ 0xffffffff
end
super(seed)
end
def valid?
generated_by_length = (0xffffffff >> length) ^ 0xffffffff
@value == generated_by_length
end
def length
border = 0
while @value[border] == 0 && border <= 31
border += 1
end
32 - border
end
def inv
@value ^ 0xffffffff
end
end
class IPAddress < DottedDecimal
def initialize(address = nil, mask = nil)
if address.is_a?(String) && address =~ /^(\d+(\.\d+){3})(\/(\d+))?$/
address = $1
mask = $4 if $4
end
@mask = Netmask.new(mask) unless mask.nil? || mask == ''
super(address)
end
def valid?
(0..0xffffffff) === @value
end
def to_s
super + '/' + netmask.length
end
def rawaddr
DottedDecimal.new(@value)
end
def /(n)
bits = 0
nth = 0
for i in 0..31
if n[i] == 1
bits += 1
nth = i
end
end
newmask = netmask | (netmask.to_i >> nth)
blocksize = (netmask.inv + 1) / n
if bits == 1 && host(netmask) == 0 && netmask.length + nth <= 32
subnets = []
for i in 0..(n - 1)
topaddr = network(newmask) + blocksize * i
subnet = type.new(topaddr, newmask)
subnets.push(subnet)
end
subnets
else
raise "cannot divide #{self} by #{n}"
end
end
def netmask
if @mask.is_a?(Netmask)
@mask
else
case @value
when 0..0x7fffffff
Netmask.new(8)
when 0x80000000..0xbfffffff
Netmask.new(16)
when 0xc0000000..0xdfffffff
Netmask.new(24)
else
Netmask.new(32)
end
end
end
def network(mask = netmask)
mask = Netmask.new(mask) unless mask.is_a?(Netmask)
type.new(self & mask, mask)
end
def host(mask = netmask)
type.new(self - network(mask), mask)
end
def broadcast(mask = netmask)
mask = Netmask.new(mask) unless mask.is_a?(Netmask)
type.new(network(mask) + mask.inv, mask)
end
end
exp = ARGV.join(' ')
exp.gsub!(/(\d+)([bhnr])/, '\1 \2')
exp.gsub!(/\/\//, ' / ')
exp.gsub!(/((\d+(\.\d+){3})(\/(\d+))?)/, 'IPAddress.new(\'\2\', \'\5\')')
exp.gsub!(/\b(\/\d+)/, 'Netmask.new(\'\1\')')
exp.gsub!(/\.?\bb(roadcast)?[\s\t]*(\d+)?\b/, '.broadcast(\2)')
exp.gsub!(/\.?\bh(ost)?[\s\t]*(\d+)?\b/, '.host(\2)')
exp.gsub!(/\.?\bn(etwork)?[\s\t]*(\d+)?\b/, '.network(\2)')
exp.gsub!(/\.?\br(awaddr)?\b/, '.rawaddr(\2)')
result = eval(exp)
if result.is_a?(Array)
print "[#{result.join(', ')}]\n"
else
print "#{result}\n"
end