5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Ruby初心者質問スレPart1

1 :デフォルトの名無しさん:04/11/16 01:07:04
オブジェクト指向スクリプト言語Rubyについての質問スレッドです。

雑談、ML・blogウオッチはこちらでどうぞ。
むーんうるふ Part13 【Rubyについて】
http://pc5.2ch.net/test/read.cgi/tech/1100533226/

Ruby Home Page
http://www.ruby-lang.org/ja/

前スレ - Rubyについて Part 12
http://pc5.2ch.net/test/read.cgi/tech/1100199861/

2 :デフォルトの名無しさん:04/11/16 01:07:48
= 過去スレ
: Rubyについて Part 11
http://fun.kz/test/read.cgi/tech/1097984684/
: Rubyについて Part 10
  http://fun.kz/test/read.cgi/tech/1095004337/
: Rubyについて Part 9
  http://fun.kz/test/read.cgi/tech/1087999575/
: Rubyについて Part 8
  http://fun.kz/test/read.cgi/tech/1079975637/
: Rubyについて Part 7
  http://pc2.2ch.net/test/read.cgi/tech/1074235226/
: Rubyについて Part 6
  http://pc2.2ch.net/test/read.cgi/tech/1067623825/
: Rubyについて Part 5
  http://pc5.2ch.net/tech/kako/1063/10630/1063028224.html
: Ruby について Part 4
  http://pc5.2ch.net/tech/kako/1056/10569/1056944114.html
: Ruby について Part 3
  http://pc5.2ch.net/tech/kako/1042/10420/1042004759.html
: Rubyについて Part 2
  http://pc3.2ch.net/tech/kako/1028/10289/1028906179.html
: Rubyについて
  http://pc3.2ch.net/tech/kako/1012/10120/1012096319.html

3 :デフォルトの名無しさん:04/11/16 01:08:13
= 関連リンク
: リファレンス
 http://www.ruby-lang.org/ja/man/
: Ruby Weekly News @ Ruby Garden
 http://www.rubygarden.org/rurl/html/
: ruby-cvs
 http://rrr.jin.gr.jp/rwiki?cmd=view;name=ruby-cvs
: Ruby hotlinks 五月雨版
 http://rrr.jin.gr.jp/~znz/samidare/
: 日本Rubyの会
 http://jp.rubyist.net/
: Rubyist Magazine
 http://jp.rubyist.net/magazine/
: <rubyXML/>
 http://www.rubyxml.com/
: Matzにっき
 http://www.rubyist.net/~matz/

= 関連スレ
: rubyを語るスレッド 4
 http://pc.2ch.net/test/read.cgi/unix/1060537252/
: 【最高言語】 Rubyist Magazine創刊 【ルビま!】
 http://pc5.2ch.net/test/read.cgi/tech/1094825807/l50


4 :デフォルトの名無しさん:04/11/16 01:13:06
4sama

5 :デフォルトの名無しさん:04/11/16 01:14:23
正直これが正解の形な気がする

6 :デフォルトの名無しさん:04/11/16 01:29:44
とりあえず1乙
これで住み分けが計れればいいでつね。

7 :デフォルトの名無しさん:04/11/16 01:55:19
アスキーから出てるRuby本読んでるんだけどp135のサンプルの

if dir[0] == ?/

の「?/」ってなに?
「/」のASCIIコードが返ってるみたいなんだけど…。「?」って演算子ですか?


8 :デフォルトの名無しさん:04/11/16 02:03:46
>>7
数値リテラルの一種です。後続する文字のコードを表します。
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%A5%EA%A5%C6%A5%E9%A5%EB#a.bf.f4.c3.cd.a5.ea.a5.c6.a5.e9.a5.eb

9 :デフォルトの名無しさん:04/11/16 06:37:45
なぜ文字列の[]って文字ではなくてASCIIコードが返されるの?
直感的ではないとおもうのだけど。

10 :デフォルトの名無しさん:04/11/16 06:45:33
アホか。あんたの直感なんか当てになるとでもw

11 :デフォルトの名無しさん:04/11/16 07:16:39
Rubyに文字型って存在するの?

12 :デフォルトの名無しさん:04/11/16 07:49:59
そうですか。とりあえずRuby使い始める前に感性が違うことが分かってよかったよ。
やっぱりオタク向け言語なんだな。

13 :デフォルトの名無しさん:04/11/16 08:30:54
 ○ パキュン パキュン                  ○
 /|√ Ruby >>> Python >>> Perl    ⌒/ ) ハッ!
 Λ                          /)ζ

 ○
 /|√ Ruby >>>>>>>>>>>>>>>>>>>> Python >>> Perl
 Λ                          _○√ ヒョイ
                           <<


14 :デフォルトの名無しさん:04/11/16 08:41:46
>>9
Rubyには「文字」というのが存在しないから。
「文字列」というよりはむしろ「バイト列」と考えるとすっきりすると思う。

そもそも多言語化を考えると、文字そのものの扱いも複雑になり、「何文字目」
という情報を扱うにはその文字列の文字コード情報が必要になる。

確かに現状はあまり直感的ではないと思うが、そういうわけで言語の構造に大
きく依存するから、今の Ruby では対応は無理。 M17N 対応が進めばできると
思う。


とりあえず日本語でそれっぽくやりたいという場合には、 jcode を require
すれば大丈夫っぽくなる。
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=jcode.rb


15 :デフォルトの名無しさん:04/11/16 08:49:01
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=NKF

16 :7:04/11/17 11:12:36
>>8
ありがとうです。p66の数値リテラルのところを読み返したら書いてありました…
こういう記号ってリファレンスを全文検索しようにも、関係ないのがたくさんヒットして困るんだよなあ。

う〜む、
'abc'[0] == 'a'
が偽になるとちょっとべっくらしますね。


17 :デフォルトの名無しさん:04/11/17 11:56:45
'abc'[0] == ?a
なら真ですね。

Lisp風なのかな?Lispはよく知らないけど。

18 :デフォルトの名無しさん:04/11/17 13:18:42
>'abc'[0] == 'a'
これって内容以前に型が違うって話?

19 :デフォルトの名無しさん:04/11/17 15:41:29
>>18
型は違う。
ruby -e 'p "abc"[0].class'
Fixnum
ruby -e 'p "a".class'
String

でも当然
ruby -e 'p "abc"[0].chr'
"a"


20 :デフォルトの名無しさん:04/11/17 17:41:53
備忘録のような見出しと本文が雑多に記述されているテキストファイルがあります。

  今日の夕飯                     <-見出し1
      秋刀魚を焼いて食べたかった。     <-本文1
  気づいたこと                    <-見出し2(次の見出しとの間に一行空けてない所もある)
     机はいらない。                <-本文2
     引き出しがあれば問題ない。       <-本文2(本文は複数行にわたることもある)
               
 明日は朝早くにいかなければならないので、  <-本文3(見出しが無く、いきなり本文から始まるものもある)
 近くの人の家に泊まる。
 (以下、上記のような記述がランダムに続いていく)

これを読み込んで、「気づいた[こと | 事]」という見出しに続く本文だけを、配列や変数に取り込むにはどうしたらよいでしょうか。


21 :デフォルトの名無しさん:04/11/17 18:24:59
見出しと本文の区別はインデント?

22 :デフォルトの名無しさん:04/11/17 20:31:11
その「気づいた[事|こと]」は何度も出てくるの?
1つのドキュメントに一箇所しかないなら、ちょっと変更すれば YAML になる
から、そうした上で YAML.load するのも楽かも。


何度も出てくる&見出しと本文の間が(全角ではなく半角の)空白だったとすれば、

Topic = Struct.new("Topic", :title, :body)
t = b = ""
res = []
while line = ARGF.gets do
case line
when /^$/
next
when /^\s/
b << line
else
res << Topic.new(t, b) unless t == ""
t = line
b = ""
end
end
とかで全部読み込んでおいて、
res.delete_if{ |e| e.title !~ /気づいた[こと|事]/ }
などで削るとかかなあ。

23 :20:04/11/17 20:43:31
見出しは、行の先頭から必ず始まっています。
本文は、全角や半角スペースで字下げをしている所もあれば、タブでインデントしてある場合もあります。
さらに字下げもインデントもいれずに本文を書き出しているところもある、という節操の無い書き方をしてあります。
□を全角または半角スペース、->をタブとすると、以下のようなパターンで書かれています。

見出し
□□本文
□□本文

見出し
->本文
->本文

見出し
本文
本文

24 :デフォルトの名無しさん:04/11/17 20:49:11
レスありがとうございます。
「気づいた[事|こと]」は、頻繁にでてきます。
ゆくゆくは、「気づいた[事|こと]」 以外の見出しの本文についても抜き出してみたいのですが、
それは後で取り組もうと思っています。

教えていただいたコードをこれからよく読んで試してみます。


25 :デフォルトの名無しさん:04/11/17 21:05:59
>>23-24
えと、本文か見出しか、というところが機械的に判断できないとなると、作業
は相当難航するでしょうね。それから正規表現の \s は半角スペースとタブは
含みますが、全角スペースは含みません。これも注意。

もしくは、見出し+本文が必ず空行によって区切られているのだとすれば、空
行を発見することで、
・空行の次の行が見出し
・その次から空行の前までが本文(先頭の空白は取り除く)
という戦略で、切り出すことができるでしょう。

それから、空行で切り出すんだったら、 ruby -00 を使うのも手です。

もしくは、見出しの方に
= ここが見出し
ここは本文

のように先頭に何かの記号(この場合は =、他には * なんかも使われることが
ある)をつけてやれば、やはり簡単に切り出すことができるでしょう。

26 :デフォルトの名無しさん:04/11/17 21:34:49
>>25
やはり難しいですか。
これまではテキストエディタで 「気づいたこと」 を検索し、続き本文をコピー&ペーストする作業を
人が目で確認しながら行っていたのですが、手間がかかりすぎるためなんとかしたい、と思ったのです。

一気に解決は難しいようなので、まずは以下のことを実現するすべは無いでしょうか。

テキストファイルを読み込み、
行の先頭にある「気づいたこと」を検索し、
>・その次から空行の前までが本文(先頭の空白は取り除く)
>という戦略で、切り出す (省略させていただきました)
そして切り出したものを、変数や、配列に記憶する。


27 :デフォルトの名無しさん:04/11/17 21:56:58
>>26
確実に空行で区切られるなら非常に楽。

res = []
while chunk = gets "" do
a = chunk.split('\n')
res << [a[0], a[1..-1].map{|e|e.strip}.join('\n')]
end

これで、 res は、「第一要素がタイトルで第二要素が本文となる配列」を
要素として持つ配列のリストになります。

後は、

res.delete_if{ |e| e[0] ~! /気づいた[こと|事]/ }

として res から無関係なものを削除してもいいし、
res に追加する段階でタイトルのチェックをしてもいいし。

ちなみに、>>22 では配列じゃなくて Struct を使ってますが、この辺は好みの範囲。


28 :デフォルトの名無しさん:04/11/18 00:08:45
>27
ありがとうございます。
下記のコードでずいぶんとノイズを減らすことができました。

# kizuita.rb
require 'jcode'
$KCODE = "sjis"

res = []
#filename = open(ARGV.shift)
while chunk = gets("") do
a = chunk.split('\n')
res << [a[0], a[1..-1].map{|e|e.strip}.join('\n')]
end

res.delete_if{ |e| e[0] !~ /気づいた[こと|事]/ }

puts res

これを C:\work\ruby kizuita.rb < 備忘録.txt > 要点.txt としてから、
あとは人が取捨選択する方法でとりあえず明日作業してみます。

このコードを拡張、改良しながら、rubyの知識を広げていこうと思います。
丁寧にアドバイスいただきありがとうございました。


29 :27:04/11/18 00:51:48
スマソ。訂正します。
[こと|事]
じゃなくて
(こと|事)
ですた。
上じゃたぶんまともにマッチしない……いや、これはこれでできるのかな?

30 :デフォルトの名無しさん:04/11/18 01:13:15
それだと 気づいたと に
もマッチする。
それと$KCODEに代入するのではなく一行目を
#! ruby -Ks
にしたほうがいいかも。

31 :デフォルトの名無しさん:04/11/18 01:29:45
ああ?

32 :デフォルトの名無しさん:04/11/18 02:08:42
つーかお前さん。
これからもメモ書きを増やしていくつもりなら以下のどれかにしなさい。

1.プログラムでの処理は諦める。検索は高機能なエディタとかgrepで。
2.RDとかYAMLとか何か決まったフォーマットで書く。
3.メモツールに移行。「紙」とか。
4.Apolloとかでメモツールでっち上げりゃいいじゃん。
  フォームから書いてプログラムが読めるようにプログラムで整形する。
  もしくはApollo|vruby -> ADO|ODBC|BDE -> Access|PostgreSQL|MySQL等
  のほうが望ましいかも知れん。
5.何でも良いからWikiを使え。検索機能だってあるし。
  もしメモを共有してるならサーバにWiki上げとけば簡単に共有できるし。

33 :デフォルトの名無しさん:04/11/18 02:11:45
changelog フォーマットで書けば

34 :デフォルトの名無しさん:04/11/18 02:30:06
だよなー。再利用できないフォーマットでいくら記録を残しても、それはゴミと同じ。

35 :デフォルトの名無しさん:04/11/18 02:54:36
howm

36 :デフォルトの名無しさん:04/11/18 12:42:43
>>35
要点.txtとか出力する人がemacs使ってるとは思えない。

37 :デフォルトの名無しさん:04/11/18 19:30:00
おれはあまり非公式な個人の情報をWebに上げたくはないな。
ローカルの鯖ならいいが
日記サイト公開してるやつの気がしれん。


38 :デフォルトの名無しさん:04/11/18 19:41:44
板違い

39 :デフォルトの名無しさん:04/11/18 21:04:43
ruby-gnome2 の日本語 ML のアーカイブを読みたいんだけど半分くらい文字化け
して読めません。文字のエンコーディング自体がおかしいようなんだけど、どこかに
修正されたものは公開されてないでしょうか?

40 :デフォルトの名無しさん:04/11/19 00:28:17
http://ruby-gnome2.sourceforge.jp/cgi-bin/w3ml.cgi/ruby-gnome2-devel-ja/
にありますが、一年以上更新してません。

ごめんなさい、ごめんなさい、ごめんなさい。


41 :デフォルトの名無しさん:04/11/19 02:51:10
>>20
RaccおすすめだよRacc

42 :デフォルトの名無しさん:04/11/19 20:17:39
>>40
更新してほしいな〜。

43 :デフォルトの名無しさん:04/11/20 10:12:57
Raccはマニュアル(256倍本)が有償なのが残念。

付属しているドキュメントだけでは、yacc/lexとかかじったことがある人でないとつらい。
少なくとも初心者が付属ドキュメントだけで理解して使うのは難しい。

もう少しチュートリアルが充実してるといいんだけどな。
初心者お断りっていう方針なら、仕方ないけど。ものが良さそうなだけに、残念。

44 :デフォルトの名無しさん:04/11/20 12:43:49
ここは>>20ごときにRacc薦めて初心者を惑わす悪質なコミュニティですね。

45 :デフォルトの名無しさん:04/11/20 13:17:56
>>44
でもあれだけ決まりがないフォーマットを扱うのに最適な解はRacc辺りと思われ。

46 :デフォルトの名無しさん:04/11/20 14:49:26
逆でそ。
文法がカッチリしてないと racc で扱うのは辛いぞ。
>>20 みたいのは正規表現をアドホックにいじりつつ
右往左往しながらパースするのが正解だと思う。


47 :デフォルトの名無しさん:04/11/20 16:32:53
>>20
必ず空行を入れる というだけのルールだけでも
あとあと便利に扱えますよ。なにかメモするときに
ちょっとしたルールを作るのはいいことですね。

リファレンスマニュアルに gets の説明があるので
みてみてください。

http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=IO
空文字列 "" を指定すると連続する改行を行の区
切りとみなします (パラグラフモード)。

空行区切りで読み込めば、あとは先頭の文字列で
判断できますね。

48 :デフォルトの名無しさん:04/11/20 21:30:03
rubyの正規表現で最適化ってある?

a = /perl|php|python|ruby-list|ruby-dev|ruby-talk/e
b = /p(erl|hp|ython)|ruby(|-(list|dev|talk))/e

こんな感じに手でやったほうが速いみたいだけど、自動化できないのかな。

49 :デフォルトの名無しさん:04/11/20 22:39:40
バックトラックとかを考えると自動でそういうDFA->NFA変換をかけるのは
なかなか辛そうに思うのだが、Rubyに限らずそういうのを自動化するのって
原理的に可能なものなのか?

数学的に正則な集合に対してはそういう正規表現を自動生成できるのも
分かるのだが。

50 :デフォルトの名無しさん:04/11/21 05:47:08
>>48
最適化になってないような・・
bをaに勝手に最適化するならわかるが

51 :デフォルトの名無しさん:04/11/21 12:20:10
>>50
% uname -a
CYGWIN_NT-5.1 hummingbird 1.5.12(0.116/4/2) 2004-11-10 08:34 i686 unknown unknown Cygwin

% ls -l kabefile
-rw-r--r-- 1 k なし 161620216 Nov 21 12:08 kabefile

% time ruby -ne 'BEGIN{$ex = /p(?:erl|hp|ython)|ruby-(?:list|dev|talk)/}' -e '$ex =~ $_' kabefile
6.08s user 0.47s system 99% cpu 6.575 total
% time ruby -ne 'BEGIN{$ex = /p(?:erl|hp|ython)|ruby-(?:list|dev|talk)/}' -e '$ex =~ $_' kabefile
6.19s user 0.34s system 99% cpu 6.553 total
% time ruby -ne 'BEGIN{$ex = /p(?:erl|hp|ython)|ruby-(?:list|dev|talk)/}' -e '$ex =~ $_' kabefile
6.11s user 0.39s system 99% cpu 6.542 total

% time ruby -ne 'BEGIN{$ex = /perl|php|python|ruby-list|ruby-dev|ruby-talk/}' -e '$ex =~ $_' kabefile
7.84s user 0.43s system 100% cpu 8.238 total
% time ruby -ne 'BEGIN{$ex = /perl|php|python|ruby-list|ruby-dev|ruby-talk/}' -e '$ex =~ $_' kabefile
7.93s user 0.34s system 100% cpu 8.230 total
% time ruby -ne 'BEGIN{$ex = /perl|php|python|ruby-list|ruby-dev|ruby-talk/}' -e '$ex =~ $_' kabefile
7.77s user 0.46s system 99% cpu 8.232 total

% time ruby -ne 'BEGIN{$ex = /p(erl|hp|ython)|ruby(|-(list|dev|talk))/}' -e '$ex =~ $_' kabefile
7.57s user 0.51s system 99% cpu 8.111 total
% time ruby -ne 'BEGIN{$ex = /p(erl|hp|ython)|ruby(|-(list|dev|talk))/}' -e '$ex =~ $_' kabefile
7.65s user 0.36s system 99% cpu 8.075 total
% time ruby -ne 'BEGIN{$ex = /p(erl|hp|ython)|ruby(|-(list|dev|talk))/}' -e '$ex =~ $_' kabefile
7.64s user 0.36s system 100% cpu 7.978 total


52 :デフォルトの名無しさん:04/11/21 20:02:30
quire "ftools.rb"
require "fileutils.rb"

all_files = []
all_files += Dir.glob("*.*")

file_hash = {}
all_files.each do |name|
 size = File.size(name)
 if file_hash.has_key?(size) == false
  file_hash[size] = []
 end
 file_hash[size] << name
end

file_hash.each_value do |files|
 size = files.size
 size.times do |src|
  (src + 1).upto(size - 1) do |dst|
   if File.compare(files[src], files[dst]) == true
    File.delete(files[dst])
   end
  end
 end
end


53 :52:04/11/21 20:03:50
間違えた。

Ruby修得中のみです。
「カレントフォルダ内で同じ内容のファイルを消す。」
というスクリプトを書いたのですが
>>52

よりRuby風味になるところがあろうかと思います。
ご指導お願いいたします。

54 :デフォルトの名無しさん:04/11/21 20:31:46
   end
  end
 end
end
   end
  end
 end
end
   end
  end
 end
end


55 :デフォルトの名無しさん:04/11/21 21:16:22
Dir.foreach('.'){|file| }
file_hash ||= [] # file_hash が偽のとき代入
File.delete(file) if File.compare...

とか。


56 :52:04/11/21 22:24:35
>>55
ありがとうございます。
file_hash ||= []
知りませんでした。

57 :デフォルトの名無しさん:04/11/22 01:32:25
xxx == true は単に if xxx
xxx == false は unless xxx
でいいんじゃないかな。


58 :デフォルトの名無しさん:04/11/22 11:27:59
MWage

59 :デフォルトの名無しさん:04/11/22 12:17:32
サイズだけじゃなくて、チェックサムとかを比較したほうが。

60 :デフォルトの名無しさん:04/11/22 13:13:02
>>59
ハッシュ値出すときって結局ファイル全部読み込むよな。
だったら普通にバイト切り出して単純比較の方が速いんじゃないのか?


61 :デフォルトの名無しさん:04/11/22 13:30:33
mmapしてmemcmpって簡単にできないの?

62 :デフォルトの名無しさん:04/11/22 14:50:00
>>59
File.compare ってサイズしか比較しないの?

63 :デフォルトの名無しさん:04/11/22 14:52:25
FileUtils.cmp

64 :デフォルトの名無しさん:04/11/23 06:42:31
>>61
そこでJavaですよ

65 :デフォルトの名無しさん:04/11/23 14:13:04
Web上のテキストデータを文字列で取得し,ローカルファイルに書き出す処理で
一つ問題があります.
たまに,取得してくる文字列の中にnilと認識してしまう文字列があり,うまく書き出せ
ません.
これを回避する方法はありますか?

66 :デフォルトの名無しさん:04/11/23 15:02:37
>>65
もっと詳しく!

67 :デフォルトの名無しさん:04/11/23 15:16:23
>>66

SHIFT-JISを使ってるんですけど,恐らく,特殊文字と同じコードが含まれているような漢字を
読み込んだときに,その文字列を出力するとnilを出力してしまいます.
先頭で#!c:/usr/bin/ruby -Ksとオプションを付けてもダメでした.
処理自体は非常に単純で,Web上のHTMLにアクセスして,テキストデータを文字列に格納し,
ローカルのテキストファイルに書き出すという処理です.
その際に前述したような漢字を読み込むと,その行がnilと出力されてしまいます.
このような漢字がない場合は,正常に動くので,漢字コードが原因と考えてるんですが...


68 :デフォルトの名無しさん:04/11/23 16:02:23
禁断の$KCODE="SJIS"は試した?

69 :デフォルトの名無しさん:04/11/23 16:09:08
>>68

それは知らないです.
ヘッダの部分に宣言しとくだけでいいんですか?

70 :デフォルトの名無しさん:04/11/23 16:31:43
2行目(#!〜の直下)に書くのがよろしいかと。
ただ、ひょっとしたら意味ないかも。ダメだったらスマソ。

71 :デフォルトの名無しさん:04/11/23 17:00:28
>>67
もっと詳しく!

ていうか再現コードきぼんぬ

72 :デフォルトの名無しさん:04/11/23 17:29:23
>>71

実は,ローカルファイルに書き出す際に,一行づつ読み込んだ文字列にそれぞれ条件に応じた
処理をしています.
様々な処理をしているので,ここでは書ききれないのですが,個人的にはこの部分がまずい
ような気がしてきました.
例えば,読み込んだ文字列からある文字列を取り除いたり,別の文字列で置換したりして
るので,その際に変換後の文字列に望ましくない文字コードが含まれる形になったように
思います.


73 :デフォルトの名無しさん:04/11/23 17:59:07
> 様々な処理をしているので,ここでは書ききれない

「処理自体は非常に単純」ぢゃなかったの? 最初からきちんと書こうよ。
そんなことでは誰も答えてくれないよ。というか答えようが無い。まあ、
普通にGETしてwriteするだけならそんな妙なことになるわけ無いから、
文字列を何かいぢってるのだろうとは思ってたけど……。

問題のある行で変換処理すると nil と書かれてしまう、ということは、
文字コードの問題じゃなくて、単に変換する際に使ったメソッドの戻り
値が nil で、それが書き込まれてるって可能性は? gsub!とかは置換さ
れなかった場合 nil を返す。それをFile#printあたりで書き込んでるの
では?

74 :デフォルトの名無しさん:04/11/24 14:12:50
バイナリで読み込んでみるとか。

75 :デフォルトの名無しさん:04/11/25 17:40:12
ディレクトリ作ったりファイルの中身読み込んだりってどうやるんですか?
当方,コマンドプロンプトで変数に文字や数字を代入したり
printで表示させたりするのができる程度なんですが,どなたか教えてください.

76 :デフォルトの名無しさん:04/11/25 17:46:59
http://www.amazon.co.jp/exec/obidos/ASIN/4797324295

77 :デフォルトの名無しさん:04/11/25 21:21:53
ほんま探してから質問してるんかいな。

http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Dir
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=File
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=IO

78 :デフォルトの名無しさん:04/11/26 03:06:54
標準で整形済みヘルプを付けないから初心者に逃げられるんだよ

79 :デフォルトの名無しさん:04/11/26 04:19:26
そいや、Ripper ってドキュメント無いの?

80 :デフォルトの名無しさん:04/11/26 08:22:23
「自分で調べろ」と言われることは覚悟の上で質問します。

C言語から組み込みRubyを利用してみたいのですが
どういう風な手順を踏めば、正しく利用することが出来るのでしょうか?
参考:http://takahr.dhis.portside.net/cgi-bin/rwiki.cgi?cmd=view;name=%C1%C8%A4%DF%B9%FE%A4%DFRuby

とりあえずRuby本とか↑のページとかを参考にしつつ
色々試してみてるんですが、さっぱりです。
version.h は見つからないし、 ruby.h をインクルードしたら
string.h 他いくつかのヘッダが見つからないと怒られるし。

ちなみにWindowsユーザーです。パラメータとかコンソールとかの使い方程度は解ります。

81 :デフォルトの名無しさん:04/11/26 09:22:39
ruby自体がどうやってmakeされるかを理解してないと、rubyを組み込むのは
難しい。
逆に言えば、Makefile見りゃわかる。

82 :80:04/11/26 11:59:06
Makefile見てみたけど、内容がさっぱり解らなかった・・・orz
やはりコンパイル周りの技術を勉強するしかないのでせうか

83 :デフォルトの名無しさん:04/11/26 12:24:14
冷たい言い方をすると、
> version.h は見つからないし、 ruby.h をインクルードしたら
> string.h 他いくつかのヘッダが見つからないと怒られるし。
というレベルではお話になってない。
ruby云々というより、Cの知識というか、自分の使おうとしている処理系の
知識が足りてないから。

コンパイル周りの技術というか、自分の書いたCプログラムをコンパイルする、
というあたりから始めた方がいいと思う。

84 :デフォルトの名無しさん:04/11/26 18:35:47
質問があります。
ruby 1.8.1 (2003-12-25) [i386-cygwin]
このバージョンのirbで以下のものを実行しました。

irb(main):001:0> a=[[],[]]
=> [[], []]
irb(main):002:0>
irb(main):003:0* irb(main):003:0> exit
p2c$ irb
irb(main):001:0> a=[[],[]]
=> [[], []]
irb(main):002:0> a.fill([])
=> [[], []]
irb(main):003:0> a[0].push("a")
=> ["a"]
irb(main):004:0> a[1].push("c")
=> ["a", "c"]
irb(main):005:0> a
=> [["a", "c"], ["a", "c"]]

この動きっておかしくないですか?

85 :デフォルトの名無しさん:04/11/26 18:46:52
>>84

a=[[],[]]
a[0].push("a")
a[1].push("c")
p a
a=[[],[]]
a.fill([])
a[0].push("a")
a[1].push("c")
p a
a.fill(["abc"])
p a

86 :デフォルトの名無しさん:04/11/26 18:48:23
ログの頭にゴミがありました。再カキコします
p2c$ irb
irb(main):001:0> a=[[],[]]
=> [[], []]
irb(main):002:0> a.fill([])
=> [[], []]
irb(main):003:0> a[0].push("a")
=> ["a"]
irb(main):004:0> a[1].push("c")
=> ["a", "c"]
irb(main):005:0> a
=> [["a", "c"], ["a", "c"]]



87 :デフォルトの名無しさん:04/11/26 18:49:27
>>80
string.hがないってのはちょっとアレだけど
そこのサイト見ても組み込めるようになるとはとても思えないな。
SDKとして最低限必要なことが全く書かれていない。
なんか初心者でなくても茨の道って感じ。

88 :85:04/11/26 18:56:48
p a[0].id==a[1].id
示せばいいだけか。最後の2行余計だし orz

89 :デフォルトの名無しさん:04/11/26 19:13:48
>85
ぐぉ
a.fill([].clone)
とかやらないとだめですか…
もっとスマートな方法あります?

90 :デフォルトの名無しさん:04/11/26 19:18:55
ruby 1.7 feature:

val の代わりにブロックを指定するとブロックの評価結果を値とし
ます。ブロックは要素毎に実行されるので、セットする値のそれぞれをあ
るオブジェクトの複製にすることができます。
ブロックのパラメータには start からのインデックスが渡されます。

ary = []
p ary.fill(1..2) {|i| i} # => [nil, 1, 2]
p ary.fill(0,3) {|i| i} # => [0, 1, 2]
p ary.fill { "foo" } # => ["foo", "foo", "foo"]
p ary.collect {|v| v.id } # => [537770124, 537770112, 537770100]


91 :デフォルトの名無しさん:04/11/26 19:31:36
>>89
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/37824

92 :デフォルトの名無しさん:04/11/28 02:32:26
>>79
RipperTutorial
http://i.loveruby.net/w/RipperTutorial.html

RipperTutorial.TokenStreamInterface
http://i.loveruby.net/w/RipperTutorial.TokenStreamInterface.html

タイムスタンプを見たら、書きたてほやほやだった。

93 :デフォルトの名無しさん:04/11/28 14:16:29
文字列で指定した関数が存在しているか調べて、存在しているなら
引数の数が1であることを調べるにはどうすればいいですか?
sendを使えばできるのですが、その関数を実行したくないときには
sendは使えません。

94 :93:04/11/28 14:22:56
自己レスです。
methodとMethod#arityを使ったらできました。

95 :デフォルトの名無しさん:04/11/29 03:13:44
Rubyリファレンスマニュアル の Iconv のページを見ても、
使い方がきれいさっぱり全く解らないのですが、どこか良いサイト無いでしょうか?

96 :デフォルトの名無しさん:04/11/29 03:18:23
う゛ぃえwそうrcえ

97 :デフォルトの名無しさん:04/11/29 03:52:57
>>95
まずman iconv_openを参照しなされ。Iconv::newのパラメータtoとfromに
与えられるものの一覧がある。たとえば、euc-jpのsをUTF8に変換したいとき、

ic = Iconv.new('UTF-8', 'EUC-JP')
ic.iconv(s)
ic.close

もしくは

Iconv.open('UTF-8', 'EUC-JP') {|ic| ic.iconv(s)}

もしくは

Iconv.iconv('UTF-8', 'EUC-JP', s)

で変換できる。

98 :デフォルトの名無しさん:04/11/29 04:29:29
>>97
ありがとん。
でも、SHIFT-JIS で保存したスクリプトで、

Iconv::conv('SHIFT-JIS', 'UTF-8', "あいうえお")

とするだけで IllegalSequence が出てしまう。EUC-JP 等でも試したけど駄目。
アルファベットなら無問題。
文字コードを合わせて保存したファイルを読み込んでも同様。
iconv コマンドは問題なく使えてるんだけど、原因等が良く解らんくて対処できんのです orz

以前、uconv 使って問題無かった記憶があるから探し出して真似て凌ぐか……
コンパイル面倒だなぁ。

99 :98:04/11/29 04:38:27
Iconv::conv(to, from, str) の to と from で指定が逆だった、IllegalSequence が出る訳だ orz
1時間以上気がつかなかった。とりあえず、寝よう。そうしよう。
今度は、何故か文字化けしちゃってるけど、なんとかなるかなぁ。

……穴を探して潜り込んできまつつ

100 :デフォルトの名無しさん:04/11/29 13:41:09
"SHIFT-JIS" より "Shift_JIS" としといた方が無難。

101 :デフォルトの名無しさん:04/11/29 14:30:58
>>99
たしかに分かりづらいというかなんと言うか。
もともとのiconv_openに準拠したんだろうね。
strcpyみたいな順番て覚えておけばいいんだろうか。
別に覚えなくてもいいか。

102 :デフォルトの名無しさん:04/11/29 17:22:07

ーのある文章(SJIS)を.chop.splitで単語単位に分け、WinXPのDOS窓に表示するプログラムを作ったんですが、
ーが・と置き換わってしまってうまくいきません。(テキスト形式で保存すると半角空白になります)
JISやEUC、UNICODEでは文字化けします。
ーを―に置換するしかないのでしょうか?

103 :デフォルトの名無しさん:04/11/29 17:37:25
>>102
* chop じゃなくて chomp かも。
* 文字コードは指定してる? (起動時に -Ks オプションを付ける、とか。)

差し障りがなければ、最低限のコードを貼ってくれるとコメントしやすいかも。

104 :デフォルトの名無しさん:04/11/29 17:44:26
>>103
すいません。
なんかよくわからないけどできました。
ちょっと原因を探ってみます。

105 :デフォルトの名無しさん:04/11/29 19:39:41
指定したテキストファイルから、”米俵”という文字がどれくらい含まれているかをカウントするプログラムなのですが、
今のままだと、"米俵"を含む行しか数えず、1行に複数の"米俵"があると、カウントされません。
また


と改行されてしまうとカウントされません。
最終的には、”米俵”、”販売”など、複数の指定文字列とマッチするようにしたいのですが、
どうすればいいかさっぱりわかりません。

n=0
while text=gets
while (i=text.index(/米俵/))!=nil
n=n+1
printf "%s",text[i..-1]
text[0...i+4]=""
end
end
printf "「米俵」の出現回数は %d 回\n",n

106 :デフォルトの名無しさん:04/11/29 19:52:02
指定したURLのHTMLファイルをダウンロードしたいのですが、
wget を使って実現するにはどうすればよいでしょうか。

107 :デフォルトの名無しさん:04/11/29 19:53:38
すいません。>>106はbrainfuckの話です。

108 :デフォルトの名無しさん:04/11/29 20:01:53
>>105
ruby -e 'p File.read("filename.txt").scan(/米俵/).size'


109 :デフォルトの名無しさん:04/11/29 20:03:10
>>105
一行ずつ gets じゃなく、一気に全部読んでいいなら

n = ARGF.read.scan(/米\n*俵/).size

とか。(printfの行が必要だったら、これじゃダメだけど)

複数項目だと↓こんな感じか?

kome_dawara = 0
hanbai = 0
ARGF.read.scan(/(?:(米\n*俵)|(販\n*売))/) do
if $1
kome_dawara += 1
elsif $2
hanbai += 1
end
end
printf "米俵: %d, 販売: %d\n", kome_dawara, hanbai


110 :デフォルトの名無しさん:04/11/29 20:07:26
>>100
Windows環境用ならCP932の方がいいんじゃなかろうか。
Windowsで作ったファイルだと拡張文字なんかの駄目文字が出てくる予感。
まあ環境とファイル次第だが。

111 :デフォルトの名無しさん:04/11/29 23:43:24
>>108
こんな方法もあるんですね。知りませんでした。
でもちょっとうまくいきません。もうちょい弄くってみます。

>>109
動きました。どうもありがとうございます。

回答ありがとうございました。

112 :デフォルトの名無しさん:04/11/30 01:40:24
print "#{key} に関しては #{value} でした\n"
の出力結果を

printf "%8s に関しては %2dでした\n"
で出力されたように整形して出力したいのですが、
{key}の前に%8sとかやってもできませんでした。

どうすればいいでしょうか?

113 :デフォルトの名無しさん:04/11/30 01:41:39
key,valueを外に追い出したら

114 :デフォルトの名無しさん:04/11/30 02:19:36
>>113
できました。"〜",key,valueですね。
最初の,を忘れて苦戦した・・・
なにやってんだ俺は・・・
どうもありがとうございました。

115 :デフォルトの名無しさん:04/11/30 02:24:49
#{} の中に色々書くと読みにくくなるけど、
String#% を使ってこういう風にも書ける。

puts "#{'%8s' % key} に関しては #{'%2d' % value} でした"

http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=String#self.20.25.20args

116 :デフォルトの名無しさん:04/11/30 03:24:36
それ、読みやすいかな・・・?

117 :デフォルトの名無しさん:04/11/30 03:27:33
リテラル部分が長大なHTMLとかだったら読みやすいんじゃないの。

118 :デフォルトの名無しさん:04/11/30 19:53:49
オレの場合。
・最初は「puts "#{key} に関しては #{value} でした"」と書く。
・後になって桁数指定したいと思う。
・修正がラクだから「puts "#{'%8s' % key} に関しては #{'%2d' % value} でした"」にする。


119 :デフォルトの名無しさん:04/11/30 20:07:10
それ、修正がラクかな・・・?

120 :デフォルトの名無しさん:04/11/30 20:13:19
>>116
>>119

お前が思う読みやすく修正が楽なの書いてみて

121 :デフォルトの名無しさん:04/11/30 20:35:47
>>120
そうだなあ、
"#%8s{key} に関しては #%2d{value} でした"
とか書けるようになると嬉しいかも。

122 :121:04/11/30 22:08:44
と思って parse.y を眺めてみました。
一分間ほど眺めた時点で挫折しました。

123 :デフォルトの名無しさん:04/12/01 00:13:21
>>121
それ、読みやすく修正がラクかな・・・?


124 :デフォルトの名無しさん:04/12/01 01:04:54
展開時についでに書式指定って自然な発想だと思うが。

125 :121:04/12/01 02:02:22
>>123
他のよりは読みやすく修正がラクだと思うけど、
>>123 が思う読みやすく修正がラクなの書いてみて

126 :デフォルトの名無しさん:04/12/01 10:43:58
>>121
今#の後で特別扱いされるのは{$@だけだから、それを入れちゃうと既存のコー
ドが動かなくなっちゃう可能性があるんだよね。悪くはないと思うけど。


127 :121:04/12/01 15:36:34
でも、"#%" なんてシーケンスは滅多になさそうだし、
と思って検索してみました。

% grep '#%' /usr/local/lib/ruby/1.8/**/*.rb | wc
7 40 629

思いのほか手強いですね。

128 :デフォルトの名無しさん:04/12/01 17:28:57
こんなのはどうでしょう?
#8{key} #2{value}
#@8{key} #@2{value}
#$8{key} #$2{value}

129 :121:04/12/01 18:11:27
>>128
% grep '#[[:digit:]$@]' /usr/local/lib/ruby/1.8/**/*.rb | wc
173 949 16551

というふうに、そっちの方がハマるケースが多そうなのと、
できれば出力変換仕様 (sprintf フォーマット) を自由に指定したいのと、
できれば {} の中には任意の式が書けた方が嬉しいので、
ちょっと、うーん、という感じがしますね。
見ためにはわかりやすそうではありますが。

あ、そうだ、
"#{|8s|key} に関しては #{|2d|value} でした"
とかどうでしょう?

130 :デフォルトの名無しさん:04/12/01 18:14:35
構文糖にさらに砂糖かけてもあまり甘くないような

131 :121:04/12/01 18:16:50
>>130
そうですか。じゃあこのへんでやめときます。

132 :デフォルトの名無しさん:04/12/01 23:28:42
Ruby って読みにくーい。
くちゅくちゅ。

133 :デフォルトの名無しさん:04/12/01 23:37:03
るびぃー

134 :デフォルトの名無しさん:04/12/02 10:14:59
>>128
その中で今のsyntaxと衝突しないのは二つ目かな。

$ ruby -e 'p "#8"'
"#8"
$ ruby -e 'p "#@8"'
-e:1: `@8' is not allowed as an instance variable name
$ ruby -e 'p "#$8"'
""

でも、 #%8s{key} とかってどうもバランスがよくないように感じる。

135 :デフォルトの名無しさん:04/12/02 23:47:50
もう「ソースコードはシングルバイトで」という観念をやめるべきだよ
そうしたらほら、外には記号の宝の山が待っている。

136 :デフォルトの名無しさん:04/12/03 01:34:03
今のRubyでもこのくらいはできるのな。

くらす = Class.new do
def self.にゅー() self.new; end
def initialize() @ふが = 'fuga'; end
def めそっど() [$ほげ, @ふが]; end
end
$ほげ = 'hoge'
p くらす.にゅー.めそっど


137 :デフォルトの名無しさん:04/12/03 02:55:04
>>127のような問題に対処するには、それじゃ不十分。

"♥3d{key}に関しては◎02d{value}です"

とか。

激しく打ちづらかったけど。


138 :デフォルトの名無しさん:04/12/03 03:29:53
>>136
こんなお遊びにおいてさえ、やっぱしendは邪魔だなぁ…w

139 :デフォルトの名無しさん:04/12/03 09:29:52
>>135
シングルバイトの是非はともかく
「記号が多く使えるから良い」というのは幻想のように感じる。

下手に記号を使っても混乱するだけ。
それはPerl譲りの特殊変数($~とか)ですでに実証済みだろ。

140 :デフォルトの名無しさん:04/12/03 10:49:53
そういえば、Perl6ではUnicodeで表現可能な記号を使って特殊変数を
増やすんじゃなかったっけ

141 :デフォルトの名無しさん:04/12/03 11:49:11
>>138
だな。やっぱマクロが欲しいな。

142 :デフォルトの名無しさん:04/12/03 13:13:21
くらす = Class.new {
class << self; alias にゅー new; end
define_method(:initialize) {@ふが = 'fuga'}
define_method(:めそっど) {[$ほげ, @ふが]}
}
$ほげ = 'hoge'
p くらす.にゅー.めそっど


143 :デフォルトの名無しさん:04/12/03 13:32:43
Ruby にマクロがあったなら、

#define で "."
#define に "."
#define を "."
#define の "."
#define して "."

p クラス の インスタンスを生成 して 処理する

144 :デフォルトの名無しさん:04/12/03 14:38:32
ruby起動するときにソースにプリプロセッサというかフィルタかませたり出来ないの?

145 :デフォルトの名無しさん:04/12/03 19:24:08
WEBrickでプロキシサーバを作って遊ぶ
ttp://jp.rubyist.net/magazine/?0002-WEBrickProxy

で作ったプロキシサーバ、しばらく使ってるとどんどん重くなって逝きます。
kill -INT して再起動すると復活。
こういうものなのでしょうか。

146 :デフォルトの名無しさん:04/12/03 19:56:11
#!/usr/local/bin/ruby
#if 0
eval `cpp #{__FILE__} 2>/dev/null`
$__PREPROCESS__ = true
#endif

#define HOGE "hoge"

unless $__PREPROCESS__

puts HOGE

end

147 :デフォルトの名無しさん:04/12/03 23:40:20
>>144
可能だとは思うが、難しそう

148 :デフォルトの名無しさん:04/12/04 01:04:27
すみません、しょうもない質問なんですが、ググっても上手く見付からなかったもので。。

Cでいうところの
void func(char *p){ *p = 'c'; }
char c = 0;
func(&c)
printf("%c\n", c);

という処理を行いたいのですが、Rubyの場合どのようにして、
関数引数に、ポインタ/参照 渡しするのでしょうか?

149 :デフォルトの名無しさん:04/12/04 01:21:29
>148
その意味では、rubyは常に参照わたし。
でもそのへんわかってないなら、基本をわかってない可能性高い。
「破壊的メソッド」あたりを調べれ


150 :デフォルトの名無しさん:04/12/04 01:45:56
>>148
def hoge(obj); p obj.id; end
o=Object.new
p o.id # => -605356234
hoge(o) # => -605356234


151 :148:04/12/04 01:47:22
>>149
すみません、やはりRubyの基本概念が判ってなかったようです。
Rubyの場合は、他の言語でいう「値の入れ物」的な変数とは違い、すべてオブジェクトの参照になるみたいですね。。

様はこういう事ですよね?
def func(r)
r.replace("c")
end
c = ""
func(c)
print(c,"\n")

152 :デフォルトの名無しさん:04/12/04 02:18:18
>>151
そうなんだけど、ただ、
Ruby で引数に渡したオブジェクトを操作するって普通はやんない気がする。
根本的にロジック見直した方が良い悪寒。

153 :デフォルトの名無しさん:04/12/04 02:27:35
>>152
ですな。オブジェクトの状態を変えるのであれば、
そのオブジェクトが属するクラスにメソッドを定義するのが普通でしょう。

154 :デフォルトの名無しさん:04/12/04 21:59:14
s = /hoge/
hogeの部分を変数で指定する事はできますか?

155 :デフォルトの名無しさん:04/12/04 21:59:39
>>152
148じゃないけど、148と同じようなことを悩んでた。

>Ruby で引数に渡したオブジェクトを操作するって普通はやんない気がする。
わかりやすい。

>オブジェクトの状態を変えるのであれば、
>そのオブジェクトが属するクラスにメソッドを定義するのが普通でしょう。

なるほど。この言葉をチュートリアルにでものせて欲しい。
って、チュートリアルないからリファレンスか。

156 :デフォルトの名無しさん:04/12/04 22:17:47
irb(main):001:0> s = 'hoge'
=> "hoge"
irb(main):002:0> /#{s}/
=> /hoge/

157 :154:04/12/04 22:22:27
>>156
ありがとうございます!
勉強になりますた!

158 :デフォルトの名無しさん:04/12/05 01:49:32
あーなるほど。
当然といえば、当然だなぁ。
俺、今まで Regexp.escape とか使ってた記憶が。

159 :デフォルトの名無しさん:04/12/05 06:07:03
>151さん
http://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-list/38183?38059-38391
のなかにある、38183(及び38206,38233など)からはじまるスレッドには、ruby
における変数とは何か、それをどのように説明するのが適切か、の熱いバトルが
交わされています。われわれ初心者、中級者にも参考になりますよ。


160 :デフォルトの名無しさん:04/12/05 08:45:52
全然関係ない様な・・

161 :デフォルトの名無しさん:04/12/05 17:15:21
Regexp::compile(s) より /#{s}/ の方が微妙に速いのね。そういうもん?

162 :デフォルトの名無しさん:04/12/05 17:56:04
メソッド呼び出しの手間の分じゃない?

163 :デフォルトの名無しさん:04/12/05 18:09:06
>160さん
そうですか?
>Rubyの場合は、他の言語でいう「値の入れ物」的な変数とは違い、すべてオブジ
>ェクトの参照になるみたいですね。。
まさに変数入れ物説と変数ラベル説の論争が、matzさんを交えて行われたのです
がね。無関係としか読めないようではまことに残念です。

164 :デフォルトの名無しさん:04/12/05 19:07:35
Regexp.compile(s) と /#{s}/ は効果が違うからね

165 :デフォルトの名無しさん:04/12/06 01:24:18
Rubyで書かれたnamazってないもんかな?

166 :165:04/12/06 01:26:31
namazの中身を見て意味わからんかったから
Rubyで、書かれてたらどんなんなるのかと・・・
ちょっとした好奇心です。

167 :デフォルトの名無しさん:04/12/06 01:50:19
なまぜっと?

168 :デフォルトの名無しさん:04/12/06 03:32:37
>167
Parlやらで書かれた検索エンジンじゃね?

169 :165:04/12/06 03:35:07
>167
すみません
namazuだ。
「u」が抜けてた

170 :デフォルトの名無しさん:04/12/06 03:48:03
>165
んじゃそれで潜ってこい

http://www.geocities.co.jp/SiliconValley/1816/

171 :165:04/12/06 03:51:39
orz

172 :デフォルトの名無しさん:04/12/06 04:04:51
既存のプロジェクトをrubyで書き換えて
それがあまりに拡張しやすくてオリジナルを追い抜いてしまった
というようなプロジェクトってあるの?

173 :デフォルトの名無しさん:04/12/06 04:10:09
既存のプロジェクトをrubyから書き換えて
それがあまりに動作が速く組み込みやすくてオリジナルを追い抜いてしまった
というようなプロジェクトなら知ってる

174 :デフォルトの名無しさん:04/12/06 04:30:17
>>172
migemo は確か最初 perl で書かれてたな。
どういう経緯で ruby で書き換えられたのか知らないけど。

175 :デフォルトの名無しさん:04/12/06 04:40:10
> 実は Migemo エンジンは以前はPerl で実装していたのだが、木構造のデータ
> を扱っているうちにプログラムがごちゃごちゃして修正が不可能になったため、
> あるとき Rubyで書き直すことにした。

横着プログラミング 第2回: Migemo: 日本語のインクリメンタル検索
ttp://namazu.org/~satoru/unimag/2/


176 :デフォルトの名無しさん:04/12/06 22:59:06
>>173
もとはなにを!? VBか?

177 :デフォルトの名無しさん:04/12/07 00:17:23
シリアルポート覗きたいんだけどどうやんの?

178 :デフォルトの名無しさん:04/12/07 00:23:00
マシンの裏にまわれ。

179 :デフォルトの名無しさん:04/12/07 02:52:33
test = 'abc\def'
print test #=> abc\def
p test #=> "abc\\def"

pで表示したときに、バックスラッシュが\\で表されているのに驚いたのですが
こういうものなのですか?
なんでこうなるんでしょうか?

180 :デフォルトの名無しさん:04/12/07 02:54:34
p はデバグ用なんで、バックスラッシュとかダブルクォーテーションとかは
エスケープして表示される。

181 :デフォルトの名無しさん:04/12/07 03:03:37
あ、なるほど。そういえば、pのStringの表示は""で囲われてますね。

Rubyの内部で、バックスラッシュが\\で扱われるってことではないんですね。

182 :デフォルトの名無しさん:04/12/07 06:03:09
Windowsで使用できる、Ruby用のIDEは、
RDE以外に、どういうものがあるんでしょうか?

183 :デフォルトの名無しさん:04/12/07 06:52:51
>>182
どぞー
(´・ω・`)つttp://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=Tools+for+Ruby

184 :182:04/12/07 08:02:54
>>183
レスありがとうございます。
沢山あったんですね。

皆さんはどれをお使いなのでしょうか?

185 :デフォルトの名無しさん:04/12/07 10:10:46
へー、C-M-f/C-M-b なんてのがあったんだ。
……漏れもトリ頭ですた orz

186 :デフォルトの名無しさん:04/12/07 19:34:31
シリアルポート覗きたいんだけどどうやんの?

187 :デフォルトの名無しさん:04/12/07 19:37:18
マシンの裏にまわれ。

188 :デフォルトの名無しさん:04/12/07 19:56:08
countの数だけスペースを挿入したいんですが、
もっとスマートな方法があれば教えて頂けませんか?

count = 5
(1..count).each{ print(" ") }
print("hoge\n")

189 :デフォルトの名無しさん:04/12/07 19:58:25
" "*5

190 :デフォルトの名無しさん:04/12/07 19:58:41
print(" " * count)
print("hoge\n")

Stringに数を掛けると繰り返し。

191 :デフォルトの名無しさん:04/12/07 20:00:41
凄いぜRuby最強

192 :188:04/12/07 20:02:14
>>189 >>190
おおっ、そんな方法があったとは!素晴らしい。
ご教示をありがとうございました。

193 :デフォルトの名無しさん:04/12/07 20:05:55
>>188
ちなみに、 count 回繰り返す、は Range#each より count.times { ... } がよさげ。

194 :188:04/12/07 20:17:32
>>193
なるほど!そういうメソッドもあるんですね。
練習がてら、下の様なファイル列挙コードを作っていたのですが
もっと洗練されたコードに出来ますでしょうか?

def enum_files(path, layer = 0)
  Dir.foreach(path){|f|
    if f != "." && f != ".."
print(" " * layer)
      
if File.directory?(path + "/" + f)
print("[dir] ", f, "\n")
  enum_files(path + "/" + f, layer + 1)
else
      print("[file] ", f, "\n")
end
  end
  }
end

enum_files("c:/")


195 :デフォルトの名無しさん:04/12/07 20:33:58
>>194

まぁいいんじゃないか

メソッド名や変数名がちょっとこなれてない感じするけど

漏れは
enum_files -> puts_files
layer -> level

にしたほうが好みだ

196 :188:04/12/07 20:49:45
>>195
とりあえず、問題なさそうなのでよかったです。
puts_files もいいですね。
確かにlayerよりlevelですね。

それにしてもRubyのプログラミングは楽しいですね。
噛めば噛むほど味が出てくるという感じで。
最初Perlを覚えようとしていたんですが、Rubyやって正解でした。

197 :デフォルトの名無しさん:04/12/07 21:14:38
言語に正解はない。全部やれ。

198 :デフォルトの名無しさん:04/12/07 21:18:11
シリアルポート覗きたいんだけどどうやんの?

199 :デフォルトの名無しさん:04/12/07 21:29:15
>>198
お前いい加減にしろよ。
ネタなら寒すぎるし、ネタじゃないなら何故レス無いかよく考えろ。

200 :デフォルトの名無しさん:04/12/07 23:18:39
>>198はもう寝た

201 :デフォルトの名無しさん:04/12/08 00:10:58
だったらパラレルポート覗きたいんだが?

202 :デフォルトの名無しさん:04/12/08 01:16:25
>201
それ以前にまだパラレルポートって載ってたっけ?
漏れの自宅マシンはもうそろそろ古株なのでシリアルもパラレルもまだあるが……

203 :デフォルトの名無しさん:04/12/08 01:29:49
pdfかpostscriptで配布されているrubyのチュートリアルか入門が
どこかweb上にあるでしょうか。日本語でなければ英語でもよいです。

204 :デフォルトの名無しさん:04/12/08 01:43:14
>>199
rubyじゃできないのね。
了解です。

205 :デフォルトの名無しさん:04/12/08 02:02:17
>>201
/dev/port

>>203
http://www.summa.jp/tutorial/index.html

206 :デフォルトの名無しさん:04/12/08 07:23:10
>203
英語が苦にならなければ
http://www.rubycentral.com/book/
がおすすめです。(邦訳あり)
最初の数章は良い入門書になります。
また、
Built-in Classes and Methods
という章は秀逸なリファレンスです。
chm形式のファイルがダウンロードができたんだが、場所を失念した。
ご存知の方、help.
まあ、2版を手に入れたほうが良いかもしれないが、
入門としてはこれで十分だし、良書であることは間違いない。

207 :203:04/12/08 17:36:43
>>205, 206
どうもありがとうございました。

208 :デフォルトの名無しさん:04/12/08 19:19:41
>>206
chmはProgramming Ruby--onlineにある。そこの リンクスから辿れる。

209 :デフォルトの名無しさん:04/12/08 20:57:21
>208
Thanks. Good job.

210 :デフォルトの名無しさん:04/12/09 02:55:31
Rubyの環境が無いWindowsユーザーに作ったプログラムを渡したいのですがコンパイルとかできませんか?

211 :ねた?:04/12/09 02:57:41
>>210
Exerb
http://exerb.sourceforge.jp/

212 :デフォルトの名無しさん:04/12/09 03:12:32
>>211
ありがとう
Microsoft .NET Framework 1.0が必要らしいのでいまだうんどーろしてます
ごめんねはじめてるびーしたからごめんね

213 :デフォルトの名無しさん:04/12/09 03:26:25
>>212
Microsoft .NET Framework 1.1じゃなくて?

214 :デフォルトの名無しさん:04/12/09 03:57:58
ごめんね

215 :デフォルトの名無しさん:04/12/09 09:35:23
>>210
Apolloを使うという手もあるぞ
あっちなら.NETFrameworkも必要ないはずだし

216 :デフォルトの名無しさん:04/12/09 12:12:11
Programming Ruby, 2nd Ed の邦訳が検討されてたりはしないでしょうか?

217 :デフォルトの名無しさん:04/12/09 15:28:30
>>215
phi.so(Apolloの実体)込みでexerbでexeは作れるけど、
Apollo使うってことは結局Rubyをインストールするのと
同じなのであんまり意味無いと思う。



218 :デフォルトの名無しさん:04/12/09 17:29:22
シンボルについて質問です。
ハッシュのキーにシンボルを使うと実行効率で有利ってのは
納得できるんですが、attr_readerとかにシンボルを渡すのは
実行効率からなの? だいたい1回しか実行されないだろうし、
文字列でもそんな変わんないんじゃないかと思うのですが…。


219 :デフォルトの名無しさん:04/12/09 17:43:46
attr_reader って文字列を渡せるんだ。
初めて知った。

220 :デフォルトの名無しさん:04/12/09 17:45:11
そう言われてみれば大差ないかもね。< attr_reader
個人的には、慣れてるし他人のスクリプト見ても Symbol 使ってることが多いから、
Symbol を使い続けるだろうけど。

むしろハッシュのキーにシンボルを利用するのは
相当差が出るケースくらいで、普通に文字列使ってるなあ。


221 :デフォルトの名無しさん:04/12/09 20:37:37
>>217
あれ? Apollo で書かれたスクリプトを exerb で固めて使うとき
Apollo のインストールって必要だったっけ?

>>218
「メソッド名には Symbol を使う」という原則を、どこかで聞いた希ガス。
理由はよく分からない。正直、どっち使っても良いと思う。

222 :デフォルトの名無しさん:04/12/09 22:27:41
>>221
Smalltalk のセレクタ(メソッド名)の実体はシンボルで、メソッド本体
(メソッドオブジェクト)へのアクセスや、その動的起動時のキーにシンボル
を使ったりもするけど、それとは関係あるのかな?

223 :デフォルトの名無しさん:04/12/10 07:11:12
WinXP + ActiveScriptRubyで現在練習しているのですが
Rubyでのバイナリ入出力の仕方が判りません。。
Cでいうところの、下の様な出力がしたいのですが。

------- C -------
FILE *fp = fopen("data", "wb");
int i = 128;
fwrite(&i, 1, sizeof(i), fp);
fclose(fp);

一応Rubyで下の様なコードを試してみたのですが
テキストに変換されて保存されてしまいます。
----- Ruby ------
n = 128
f = File.open("test.txt", "wb")
f.write(n)
f.close()

224 :デフォルトの名無しさん:04/12/10 07:57:30
面倒なので、よく見ずにとりあえず pack/unpack と言ってみる。

225 :223:04/12/10 08:27:22
>>224
なるほど、pack/unpack というのがあるんですね。
構造体とかもこれでイケそうですね。
どうもありがとうございました。

226 :デフォルトの名無しさん:04/12/10 20:04:12
>>221
いらないが、固めるときにちょっと面倒。
phi.soとphi.rbを一緒に詰め込んであげないといけないとか。

>>223
RubyのIO#writeはto_sされた結果が出力される。
Cのコードを見る限り128というコードを持った文字が出力されるのと同義なので、
File.open("test.txt", "wb") { |f| f.write(128.chr) }
でいいんじゃないだろうか。
というか中途半端だけどリファレンス見ろ。

227 :デフォルトの名無しさん:04/12/11 00:51:47
るびきちさんに彼女ができるなんて・・・なんかショックだ
http://members.lycos.co.uk/bakashin2/maripe0054.gif
http://members.lycos.co.uk/bakashin2/maripe0055.gif
http://members.lycos.co.uk/bakashin2/maripe0056.gif


228 :デフォルトの名無しさん:04/12/11 01:12:30
……なして誰もIO#binmodeのこどしゃべね?

229 :デフォルトの名無しさん:04/12/11 04:18:05
>>228
Wi(ry

230 :デフォルトの名無しさん:04/12/11 21:36:34
WinXPでCygwin版のRubyを使用しています.
入力したキーを記録するプログラムを
作成したのですが,なぜか大文字のA,D,Bだけが
入力できません(キーを押しても何も表示されません).
Shiftを押さずに押すと,普通に小文字のa,d,bが
打てますので,機械的な問題ではありません.
他の大文字は入力することができます.

なんででしょう???

231 :デフォルトの名無しさん:04/12/11 22:38:36
>>230
コードを見せれ。

232 :デフォルトの名無しさん:04/12/13 21:52:50
rubyのJavaDocのようなドキュメント記述について参考になるサイトない?
ぐぐってみたけどいまいちよくわからん
分かりやすいサンプルがあるとうれしい
こーかくとこういうhtmlができるとか

233 :デフォルトの名無しさん:04/12/13 22:54:18
流れとは関係なく、ドキュメントはソースに埋め込むのではなく
テストコードに埋め込む方がいいと主張してみる。

テスト==仕様みたいなもんだし、動的にメソッド定義する場合は
ソースのどこにドキュメント書いていいかわからないし。

234 :デフォルトの名無しさん:04/12/13 23:42:58
そこでテストをソースに埋め込むんですよ。

235 :デフォルトの名無しさん:04/12/14 01:26:52
>>234
matzがそれやってるって自白してたね。

236 :デフォルトの名無しさん:04/12/14 01:32:07
ネタはあっちでやれよ。

>>232
http://www2.pos.to/~tosh/ruby/rdtool/ja/whats.html
http://www.rubyist.net/~rubikitch/RDP.cgi?cmd=view;name=RD

237 :デフォルトの名無しさん:04/12/14 02:00:58
http://para-site.net/up/data/759.jpg
C言語で作ったものを移植してみましたつもりでしたが動きません。
どこがおかしいのでしょうか?

238 :デフォルトの名無しさん:04/12/14 02:06:48
total が 1500 より小さい時は get_total が値を返さない(if の end が
return の後にあるから)とか、入力してくださいというわりに gets とかじゃ
なくて ARGV から取ってるとかいうあたりがちょっと変なあたりかな。

また、 ARGV は文字列なので(gets等で読み取ったデータも文字列)、
get_total に渡す時は to_i しないといけないんじゃないか。


239 :デフォルトの名無しさん:04/12/14 02:11:11
mata omae ka

240 :デフォルトの名無しさん:04/12/14 02:13:33
>>238
ありがとうございます。
さっそく修正にかかります。
>>239
すいません。阿呆で。

241 :デフォルトの名無しさん:04/12/14 11:23:31
どっちかというと、RDよりRDocだろう。
というわけで、ほれ
http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=RDoc%B3%D0%A4%A8%BD%F1%A4%AD

242 :sage:04/12/14 20:23:56
StringIOって何? Stringとどうちがうの?

243 :デフォルトの名無しさん:04/12/14 20:56:51
>>236
こういう閉鎖的な奴がいるからrubyって普及しねぇんだろうなぁとおもた。

244 :デフォルトの名無しさん:04/12/14 21:25:45
>>242
全然違う。
StringIOは文字列にIO風のメソッドを追加してIOっぽく使えるようにしたもの。
うまく使うととても便利。

245 :デフォルトの名無しさん:04/12/14 23:54:47
C++でいうところのstringstreamのようなもんだ。

246 :デフォルトの名無しさん:04/12/15 02:08:38
JavaでいうところのByteArrayOutputStreamみたいなものだ。

247 :デフォルトの名無しさん:04/12/15 10:56:38
PerlでいうところのTie::Scalar或いはPerlIO::scalarといえばわかるだろうか。

248 :デフォルトの名無しさん:04/12/15 11:49:13
どっかにサンプルコード集みたいなのは無いんですか?

249 :デフォルトの名無しさん:04/12/15 12:07:41
>>248
「Ruby レシピブック 268の技」とか?

250 :デフォルトの名無しさん:04/12/15 12:26:14
>>248
そういうのは普通コミュニティがコードを持ち寄ってサイトを作るものなんだけど
あいにくRubyコミュニティは普通じゃないので。

251 :デフォルトの名無しさん:04/12/15 13:25:23
>>248
「逆引きRuby」とかは?
ttp://www.namaraii.com/rubytips/



252 :デフォルトの名無しさん:04/12/15 19:01:48
http://f26.aaa.livedoor.jp/~xxms/RGSS_XRXS_BP11.htm
待機以外の各行動は下一桁1→8を繰り返すというものなのですが。
1→8、でピタッと止めるようにしたいのですが。
どうすればよいのでしょうか_| ̄|○

253 :デフォルトの名無しさん:04/12/15 20:29:49
るびまがのサイト落ちてる?

254 :デフォルトの名無しさん:04/12/16 00:44:57
>>253
今はつながるけど、ちと重い

255 :デフォルトの名無しさん:04/12/16 06:17:17
バイナリモードでファイルを開いて一バイトずつ読み込んで
その16進を表示したいのですがどっかにサンプル無いでしょうか
ファイル開いて一バイトずつ読むのは出来たんですけど16進に戻せません

256 :デフォルトの名無しさん:04/12/16 09:31:10
sprintf

257 :デフォルトの名無しさん:04/12/16 11:01:21
>>255
たとえばですね
f = open("Bank1.dbf","rb")
f.pos = 0
s = f.read(1)
puts sprintf("%x", s)

こうやってもエラーが出るです
エラーが出るのはsが文字として扱われてるからなんでしょうけど


258 :デフォルトの名無しさん:04/12/16 11:21:51
s[0] で解決しました

259 :デフォルトの名無しさん:04/12/16 11:22:10
s[0]

260 :デフォルトの名無しさん:04/12/16 12:46:58
>>252
下一桁ってどういうこと?

ちらっと見ただけだが、transgraphicのform_id_sは
form_id_s = "%.3d" % form_id
でできないか?

261 :デフォルトの名無しさん:04/12/16 15:16:55
Regexp::compile("[\xb0\xa1-\xf4\xa6]+", nil, 'e')
これをもっと直接的にかけないでしょうか?

エスケープしないで直接目的とする漢字(亜、瑤)を使って
表現したいんですが。

262 :デフォルトの名無しさん:04/12/16 15:49:13
>>261
/[亜-瑤]/e
じゃだめなん?


263 :デフォルトの名無しさん:04/12/16 16:04:45
>>262
invalid regular expression: /[\033$B0!\033(B-\033$Bt$\033(B]/
って言われて駄目です

264 :デフォルトの名無しさん:04/12/16 16:40:21
>>263
んじゃー、スクリプトの最初の行に
#!/usr/local/bin/ruby -Ke
と書いておくとか。うちの環境じゃそんなの出ないな。こんな感じ。

$ cat a.rb
a = /[亜-瑤]/e
$ ruby -Ks a.rb
$ ruby -Ke a.rb
$ ruby -Kn a.rb
$ ruby -Ku a.rb
a.rb:1: unterminated string meets end of file
a.rb:1: syntax error
$ ruby -v
ruby 1.8.2 (2004-07-29) [i386-freebsd4]


265 :264:04/12/16 16:43:08
あ、ごめん。ものすごい勘違いしてた。
それ、ISO-2022-JPとかでスクリプト書いてるよね。
eucかshift jisのどっちかで書いてみて。

266 :デフォルトの名無しさん:04/12/16 16:47:31
>>264
こちらこそごめん。
自分でもJISで書いてるのに気づかなかった。
eucにして実行したらうまくいっちゃいました、思い通りに動いてます。

267 :デフォルトの名無しさん:04/12/16 17:34:00
http://f26.aaa.livedoor.jp/~xxms/RPGXP_XRXS_BP11.htm

>>260
しまった、こっち無いと分からないですよね・・・。
気が利かなくてすいませぬ。

268 :デフォルトの名無しさん:04/12/16 18:02:04
>>241
にあったリンク先をを見てみたのですがRDocの書き方がよくわかりません。
このリンク先の説明のパラグラフは未稿なのでしょうか?

メソッドの説明をjavadocに習って @param, @return, @throws は書きたいのですが、
RDocにはそれに該当するタグはないのでしょうか?
ないのであれば、どのように書くのがRuby界隈のコメントの書き方なのでしょうか?


269 :デフォルトの名無しさん:04/12/16 21:33:42
p 'question \ '

"question \\"
って表示されるんだから、
p 'question #{a}'
も、
"question \#{a}"
って表示されてもいい気がするのに、
"question #{a}"
って表示されるんですが、これっておかしくないですか??
というのも、"question #{a}"って、#{a}が展開されるから、別の文字列をあらわしてると思います。

270 :デフォルトの名無しさん:04/12/16 22:13:14
a = 1
b = a
b = 0
ってすると、aとbは別のもの(0,1)を指してしまいますよね。

3行目でbを破壊的(?)に0にするには、どうすればいいでしょうか?
つまり、aもbも同じobject_idの0を指すようにしたいです。


271 :デフォルトの名無しさん:04/12/16 22:21:28
>>269
eval したら元に戻る文字列が欲しいって話なら、String#dump をどうぞ。

p の出力(String#inspectの値)を String#dump と同じにして欲しいって話なら、
見て分かるから現状でいいんじゃね? と思う。別にどっちでも困らないけど。

272 :デフォルトの名無しさん:04/12/16 22:25:38
漏れもいままで、基本的なクラスに関しては、
基本的に inspect した文字列を eval したら元に戻る、
というふうなしきたりになってると思い込んでたんですが、
そういうことでもないんですね。

273 :デフォルトの名無しさん:04/12/16 22:28:41
>>271
inspectっていうメソッドを知りませんでした。
inspectで検索すると、るびまにも同じような話がのってました。
pって#だけエスケープしないんですね。

それならそうと、解説書もそう注意書きしてくれればいいのに、
なんかevalしたら元に戻るような感じで書いてあるから、分かりにくい。

274 :デフォルトの名無しさん:04/12/16 22:33:00
>>270
できない。


275 :デフォルトの名無しさん:04/12/16 22:35:59
「できない」だけじゃアレなんで補足。
そういう時は Array を使って

a = ['before']
b = a
b[0] = 'after'

p a[0] #=> 'after'

なんて手が使える。

276 :デフォルトの名無しさん:04/12/16 22:39:46
クラス変数だけのクラスつう手は

277 :デフォルトの名無しさん:04/12/16 22:58:00
>>276
そっちの方がやりたいことが明確になるからいいかも。
class MyVariable
 def initialize(v)
  @var = v
 end
 attr_accessor :var
end

a = MyVariable.new('before')
b = a
b.var = 'after'

p a.var #=> 'after'


278 :デフォルトの名無しさん:04/12/17 00:27:57
>>269
$ ruby19 -ve 'p %q[question #{a}]'
ruby 1.9.0 (2004-12-15) [i686-linux]
"question \#{a}"
$ ruby18 -ve 'p %q[question #{a}]'
ruby 1.8.2 (2004-12-15) [i686-linux]
"question \#{a}"

279 :デフォルトの名無しさん:04/12/17 01:07:31
win32ole使ってプログラムをしています
呼び出すと引数のsize,filenameに値を勝手に入れてくれるメソッドを使いたいのですが

size,filenameをどうやって取得したらいいかわかりません
現状はsize,filenameに適当に初期値当てはめてます
全然だめですが・・・

size=0
filename=""
returncode= READ(size:long , filename:string)

returncodeは正しくでてるんで実行はされているようです。
どうやったら取得できるんでしょう?



280 :デフォルトの名無しさん:04/12/17 01:51:31
>279
win32ole使って、何のコンポーネントを使ってるのかも書いとくれ。
でないと話が見えん。
ファイルサイズならRuby標準のFile::Statでも取れるだろうし……
てか、ファイル名が分からないのに何を読もうとしてるんだ、そのREADメソッドは。

281 :デフォルトの名無しさん:04/12/17 02:27:18
>280 すみません
使ってるコンポーネントはJVDTLab.JVLink です。
仕様書は↓
http://www.jra-van.ne.jp/datalab/development/sdk/JV-Link211.pdf

今つまずいているのはP.13とP.20の以下のメソッドです。
Long JVOpen( String 型dataspec , String 型fromtime , Long 型option , Long 型
. readcount , Long 型downloadcount , String 型lastfiletimestamp );
Long JVRead( String 型buff , Long 型size , String 型filename )

P.13のJVOpenというメソッドでデータの取得を行った後にJVReadでデータを読みだすんですが
JVOpenは実行できるんですが(JVOpenでセットされるプロパティが変化している、エラーもなし)、
readcount,downloadcount,・・・など参照渡しになるとぜんぜんだめです。

WIN32OLE.ARGV[hoge]で参照できるとおもったんですけどできませんでした


282 :デフォルトの名無しさん:04/12/17 02:56:56
>>277
ついでに
class MyVariable
 include Comparable
 def =(v)
  @var = v
 end
 def <=>(v)
  @var <=> v
 end
 def to_s
  @var.to_s
 end
end

ってしておけばほとんどの場面でMyVariable#varを使わなくて済むかな。

283 :デフォルトの名無しさん:04/12/17 03:08:15
>>278
だからなんなんだ?

284 :デフォルトの名無しさん:04/12/17 03:38:16
>281
うーむ、潮騒書いてもらってスマンのだがよーわからん。
ただ、ドキュメント読んでると、JVRead()は内部でバッファを差し替えるようなことを
やっているようなので、その辺でこけているのだろうか。
JVGets()メソッドでやってみたらどうだろう? うまくいくか分からんけど。

285 :デフォルトの名無しさん:04/12/17 03:58:01
>>278,283
1.8.2以降は、p メソッドで#もエスケープされるってことか。

286 :270:04/12/17 04:57:42
>>274,275,276,277,282
どうもありがとうございます。
結局、無理なんですね。間接的にしか無理なようですね。

Objectクラスにメソッド追加して、破壊的代入メソッドなんてつくれないですか?
ほんとに破壊的は無理なようなので(メモリの関係??)、一見、破壊的なメソッドとして
a = 1
b = a
としたあと、bの指してる1を2に変更すると、今まで1を指してた変数は全て新しい2を指すようになるメソッドとか。。
(これなら、あるオブジェクトを指してる変数を全部得られればいいですよね。そんなメソッドありますか?)

多分、こういうことも考えて無理と言われてるような気もするのですが、どうでしょうか?

287 :デフォルトの名無しさん:04/12/17 05:26:49
Ruby という言語の世界において
変数はオブジェクトではなく、それを指すラベルでしかない。

例えば、一太郎(1)がイチ(a)というあだ名をつけられたとする。
他の人が一太郎に対してター(b)というあだ名を更につけたが、
それを止めて太一(0)に対してターというあだ名を付け直したとする。
イチ(a)というあだ名は依然として一太郎(1)につけられたものであって、
いつの間にか太一(0)のあだ名にはならない。

こういう世界。

288 :デフォルトの名無しさん:04/12/17 05:46:16
>>286
Fixnum(とnil, true, false)は実際には他のオブジェクトとは違って例外的に即値だから、
破壊的なメソッドは(今のところ)実装できんのよ。こいつらだけはCでいう入れ物としての
変数に納まってるというイメージなの。

もちろん、考え方としては>>287のように考えるのがまっとうです。
普段は内部の実装まで気にしてもしょうがないっす。

289 :286:04/12/17 06:07:08
普通はしないことをしようとしていたんですね。
それで、Fixnumが即値であることまでが問題になってきた。
でも、Fixnumに破壊的メソッドが今のところ実装できないっていうのは勉強になりました。
ありがとうございました。

290 :デフォルトの名無しさん:04/12/17 07:10:12
改行コードって
UNIXではLF
WindowsではCRLF
MacではCR
ですが、全部、\nで扱えますよね。
じゃあ、\rってどういう時につかわれるんでしょうか?

あと、Windowsの環境で、LFという改行コードが使われると、\nでは扱えないのでしょうか?
さらに、Unix環境で、CRLFという改行コードがあるファイルのオブジェクトにeachとか使うと、
ブロックパラメータに渡される行の最後には、\rが入るってことでしょうか??

なんかわけわからなくなってきました。
自分で確かめろって言われても、頭が痛くて、確かめれないです。
だれか、明快な説明お願いします。

291 :デフォルトの名無しさん:04/12/17 08:00:08
それぞれ
\x0D
\x0A
に分けて使っとけ。
それが一番安全。


292 :デフォルトの名無しさん:04/12/17 08:47:20
>>282
 def =(v)
これって出来るの?Ruby1.8.2でsyntax errorになったけど。

>>289
捕捉しておくと、ローカル変数への代入はそもそもメソッド呼出にはならないです。
self.foo = bar と明示的に指定しないとそのメソッドを呼び出せないため、
破壊的代入が出来た所で、結局、クラス変数使う方法と同じになります。


293 :デフォルトの名無しさん:04/12/17 09:18:51
>>290
例えば、あるテキストファイルの中から空行を洗い出したい場合
改行がCR+LFだと、/^\n$/ではマッチしない。
こういう場合には/^(\n|\r\n)$/とする必要がある。

294 :デフォルトの名無しさん:04/12/17 09:47:23
windowsで複数のアプリケーションを、終了を待つことなく連続して起動させたいのですが、
どうすればいいですか。
exec, system, `` ではいずれも、アプリケーションの終了を待たなくてはいけませんでした。

295 :デフォルトの名無しさん:04/12/17 10:27:10
start ごにょごにょ
すればできるよ
start /?でヘルプが

296 :デフォルトの名無しさん:04/12/17 11:24:06
>>289
Fixnumが即値になっているのは実装上の都合もあるだろうけど、
即値じゃなきゃおかしいからでもあるでしょ。
破壊的に 1 を 2 にされてしまったら、それ以降、1という数字は存在しなくなって
2 になってしまうけど、それでもいいの?

297 :デフォルトの名無しさん:04/12/17 12:04:55
>>295
294は Ruby の話だろ(system に start ... で渡せばいいってこと?)。

Win の Ruby は使ったことないからわからないが、 fork してその中で exec
するのが普通じゃないの?

以下 Unix の話だが。

system はシェルなり何なりを起動して実行する。終了まで待つ。``も同様だ
が出力結果が文字列で帰ってくる。
一方、execはちょっと違って、自分自身がそのコマンドに変身する。だから終
了するとプログラム自体が終了する。
そこで fork を使って子プロセスをつくり、子プロセスの方で exec するのが普通。

例はこんな感じ。
pid = fork { exec(cmd) }

fork が呼ばれると子プロセスはブロック内を実行するので、cmdが実行される
(cmdが終了したら子プロセスが終了する)。一方、親プロセスの方はブロック
を実行せずに pid に子プロセスのidが確保される。これは何に使うかという
と、親プロセスの方で子プロセスの終了を待ちたいときに使われる
(Process.wait のあたりを参照)。


298 :デフォルトの名無しさん:04/12/17 12:21:02
>>286

a = b = "abc"
a.send(:initialize_copy, "defg")
p a #=> "defg"
p b #=> "defg"

299 :デフォルトの名無しさん:04/12/17 12:39:56
>>297
Windowsにforkはない。

300 :デフォルトの名無しさん:04/12/17 12:40:24
>>297
fork/execという概念はUNIX独自で、Windows世界のプロセスはそういうものではない。

301 :デフォルトの名無しさん:04/12/17 13:16:16
何も考えず、Thread.new{system(hoge)}でどうだ。

302 :デフォルトの名無しさん:04/12/17 13:53:25
>>298
あ、すごい、できてる。
しかもidも同じだし。

でも、initialize_copyっていうのがよくわからない。
dupとかcloneの初めに呼び出されるらしいけど。。
なんだこれ


303 :デフォルトの名無しさん:04/12/17 14:05:04
これでいいんでは?

a = b = "abc"
a.replace "defg"
p a #=> "defg"
p b #=> "defg"

これができるのはStringだからであってFixnumでは無理。本題から外れてるぞ。

304 :デフォルトの名無しさん:04/12/17 14:25:55
>>303
String#replace持ち出して本題を外しているのはお前だ。w

305 :デフォルトの名無しさん:04/12/17 14:47:20
>>304
send(:initialize_copy, ...) だって Fixnum では無理でしょ。
ということが言いたいのでは。

306 :302:04/12/17 15:27:35
>>303ー305
あ、すみません。Fixnumでは無理ですね。
勘違いしました。

307 :デフォルトの名無しさん:04/12/17 15:35:01
>>294
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%C1%C8%A4%DF%B9%FE%A4%DF%B4%D8%BF%F4#spawn

spawn(cmd, [arg, ...]) ((<ruby 1.9 feature>))

  子プロセスの終了を待ち合わせないことを除けば、system と同じです。
  生成した子プロセスのプロセスIDを返します。


308 :デフォルトの名無しさん:04/12/17 21:07:05
リナザウつかってるんでつが、Windows環境で開発したRubyのプログラム
(128bit暗号化ページからデータ拾って画面に表示するものでつ)
があるとして、それをWideStudioとGCC+をベースに展開するだけで使える
でしょうか?
ライブラリとか適合しないかなとか、GUIがダメかもなとか思ってまつが
Linux導入とか互換用の部品を書くとかの時間を割くのも難しい状態なんで、
まったく出来ないというレヴェルだったらやめとこうと思ってまつ。
もちろんRubyすら知りませんが、技術的にはどこを直せば動くのか
わかる人、教えてくだちい。

309 :デフォルトの名無しさん:04/12/17 21:56:31
>>286
なんかかなり危険なことらしいよ。

ttp://jp.rubyist.net/magazine/?0002-RubyConf2004Report

#becomeのところ

でも、これもたぶん仕組み上Fixnumでは無理。

310 :デフォルトの名無しさん:04/12/17 23:38:28
= は イコールではなく代入ってイメージからすると、
むしろ >>270 のようなことができると恐いんだけど。
a には再代入してない訳で。
まぁ、>>287 の言う通りなんだけど。

311 :デフォルトの名無しさん:04/12/17 23:42:33
>>286
結局、rubyのセマンティクスは >>287みたいになってるのと、
FixNumは即値なので、原理的にはそういうことはできないわけだけど、
Arrayなり>>282が書いてるような独自クラスなりでコンテナをさしこむ
のがスタイルとしてもスマートだと思うんだけど。

そもそも、そんなにいくつもの変数で値を共有したいことある?
もしそういう設計なら、それはデータソース(この場合1という値)が二重化されてて嫌なことになってない?


312 :デフォルトの名無しさん:04/12/18 00:02:28
ruby初心者なら彼の訓えを請うべきだね
ttp://www.geocities.jp/rubikitch/

313 :282:04/12/18 00:20:16
>>292
ごめん。おれが間抜けでした。こんなことできたら、
変数の代入とメソッド呼び出しが区別つかなくなるよね。

314 :デフォルトの名無しさん:04/12/18 11:03:46
CYGWIN_NT-5.1 1.5.13s(0.117/4/2) 20041217 12:44:22 i686 unknown unknown Cygwin
ruby 1.8.1(2004-05-06)

の環境で、Webrickを動かしているのですが、微妙なエラーが出て困っています。
require 'ming/ming'をしなければ問題はないんですが...
回避策はあるでしょうか?

/cygdrive/c/home$ ruby test.rb
[2004-12-18 10:39:21] INFO WEBrick 1.3.1
[2004-12-18 10:39:21] INFO ruby 1.8.1 (2004-05-06) [i386-cygwin]
[2004-12-18 10:39:21] INFO WEBrick::HTTPServer#start: pid=3176 port=80
C:\home\cygwin\usr\local\bin\ruby.exe (3016): *** unable to remap C:\home\cygwin
\bin\cygungif-4.dll to same address as parent(0x8C20000) != 0x8D10000
5 [main] ruby 3176 fork_parent: child 3016 died waiting for dll loading

---------------test.rb-------------------

require 'webrick'
require 'ming/ming'

module WEBrick::HTTPServlet
FileHandler.add_handler("rb", CGIHandler)
end

httpd = WEBrick::HTTPServer.new(
:DocumentRoot => '.'
)

trap("INT"){ httpd.shutdown }
httpd.start
------------------------------------------


315 :デフォルトの名無しさん:04/12/18 17:15:12
>>314
rebaseallを実行。

316 :デフォルトの名無しさん:04/12/19 03:47:20
>>315 いけました。ありがとう。

317 :デフォルトの名無しさん:04/12/19 11:34:25
空行を削除したいのですが、

text.gsub!(/^$/,"")

としてもうまくいきません。どうしたらいいでしょうか??


318 :317:04/12/19 13:03:58
自己解決しました。
$は改行コードの手前までですね。
text.gsub!(/\n/,"")
でいけました。


319 :デフォルトの名無しさん:04/12/19 18:06:37
Procクラスって、どんなクラスかよくわからないんですが、
誰か、簡単に説明してください。

これが使えるとどう便利なんでしょうか?

320 :デフォルトの名無しさん:04/12/19 18:14:47
>>319
例えばコールバック処理を書くときに使える。
GUI のボタンを押したら中のテキストを書き換えるという処理を書くとして、

bottun = Button.new('before')
bottun.onclick = Proc.new{|b| b.text = 'after' }

みたいに書ける。

321 :デフォルトの名無しさん:04/12/19 18:25:59
>>320
この場合のButtonクラスのonclick=
って、どういうコードが書いてあるんでしょうか?

たしかに、Procは、なんか強力っぽいけど、まだ??って感じです。

322 :321:04/12/19 18:32:44
onclick=が何かは、Procを理解するのとは関係ないですか??もしかして(^^;)

323 :デフォルトの名無しさん:04/12/19 18:34:57
zzz

324 :321:04/12/19 18:40:46
あんまりよく分からないので、Procオブジェクトは、
どういう情報を保持していて、
その情報にどういう変更を加えたり、
どういう値を返してくれるかをオブジェクト的に簡単に教えてもらえませんか?

例えば、Stringは文字列をもっていて、
この文字列を切ったり、置換したりするメソッドを持っていて、
その文字列の何番目は、どういう文字コードを持ってるか返してくれる。 など。


325 :デフォルトの名無しさん:04/12/19 18:43:06
>>321
あくまで擬似コードだけど。

class Button
attr_accessor :onclick, :text
def _some_process_on_click_
foo
@onclick.call(self)
bar
end
end

onclick= はインスタンス変数 @onclick への代入。
Proc#call で Proc の処理を実行できる。
Button オブジェクトはボタンが押されたら見た目を変えたり
色々するわけだけど(_some_process_on_click_ ね)、
その中で @onclick.call(self) とかしておけば、
自分をブロック引数にして @onclick の Proc の処理を実行できる。

つまるところ、インスタンスごとに振る舞いを変えたいという時に使う。
C なら関数ポインタを使うだろうし、
Java ならサブクラスや strategy パターンを使うだろうね。

326 :デフォルトの名無しさん:04/12/19 18:45:44
>>324
手続きをオブジェクト化したもの。
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Proc


327 :デフォルトの名無しさん:04/12/19 18:48:05
a = Proc.new{|i| i+1}
a.call(1) # => 2


328 :321:04/12/19 18:49:42
>>325
>つまるところ、インスタンスごとに振る舞いを変えたいという時に使う。
なるほど。
ほんとだ。そう考えると、理解しやすいかも。
うまく使えるようになりそうです。

>>326
いや、その説明、むずすぎです(^^;)

ありがとうございました。

329 :デフォルトの名無しさん:04/12/19 18:54:43
あ、おれは専らそう使っているというだけで、
327 のように Proc 単体で使うこともあるだろうし
色々使い道はあると思うよ。
あんまし使いすぎると分りにくくなるけど。

330 :デフォルトの名無しさん:04/12/19 19:05:30
普通の関数、オブジェクトは
処理を定義してあるところに、引数を渡すって感じでわかりやすいのに、
Procがでてくると
引数が先にあって、処理を渡すって感じがする。
ややこしい。。

331 :デフォルトの名無しさん:04/12/19 19:23:37
>>330
自己レス。
そんなことないか。。
処理を入れておくオブジェクトだし。

def foo
pr = Proc.new
pr.call(1,2,3)
end
foo {|args| p args }

多分、この例がわかりにくいんだと思う。
これって、{|args| p args } を、fooの引数にしてるって感じですよね。
それで、それがProc.newの引数になってるって感じでいいですよね。

これだと、Proc.newっていうのに、ブロックを渡して、その処理を
飽くまで、Procの例は、Proc.new{}っていうのを100回くらい強調して、その後に、
上のような例をもってきてもらうとわかりやすいかも。

332 :321:04/12/19 21:06:06
また、Procの話ですみません。

結局、
Procって、手続きをオブジェクト化したもので、普通の関数のようにも使えると。
さらに、あるオブジェクトのインスタンス変数として、Procオブジェクトを持たせると、オブジェクトごとに異なった働きをさせることができる。

この、2つ目って、オブジェクトにモジュール追加(extend)でも同じ(ような?)ことができますよね。

さらに、Tkでは、Procによるアプローチで、visualurubyでは、モジュールのextendによるアプローチっぽいので
結局同じことができて、特にどっちかに利点あるていう話ではないという気もするんですが、どうでしょうか?

もしこの二つに、長所、短所、があるなら、教えてください。(些細なことでもいいですので)
お願いします。

333 :321:04/12/19 21:08:20
追記:
つまり、Procがなくても、困ることも起きないし、
Procがあっても、Rubyの目指す(?)省力化にも役立ってない気がするのです。

334 :デフォルトの名無しさん:04/12/19 22:10:31
ブロック引数を理解しているなら、

class Proc

def initialize(&block)

@proc = block

end


def call(*args)

@proc.call(*args)

end

def [](*args)

call(*args)
end
end

で理解できるかな。
イテレータのブロックも実態は同じものだけど、振舞がちょっと違うので注意。


335 :デフォルトの名無しさん:04/12/19 22:15:37
うわ

遅くて使ってらんね



やめた

336 :デフォルトの名無しさん:04/12/19 22:42:51
>> 332

http://www1.tf.chiba-u.jp/~shin/tutorial/index.rb?Chapter=10
は読んだかい?

337 :321:04/12/19 22:55:25
>>334,336
考えて(読んで)みます。ありがとうございます。

あぁ、明日の試験(Ruby関係なし(泣))やばいので
ちょっと、Procのことは、また明日考えさせてもらいます。すみません。
他に、アドバイスあったらよろしくお願いします。

338 :デフォルトの名無しさん:04/12/19 23:00:53
Rubyには試験もなんにもない
妖怪みたいな言語

339 :デフォルトの名無しさん:04/12/19 23:04:41
ヨウカイ(・∀・)イイ!!

340 :デフォルトの名無しさん:04/12/19 23:36:57
漏れはメソッド内メソッドを実現する方法として Proc を使ったりするけどなー。
でも本当はそれはうまいやり方じゃないんだけど。

341 :デフォルトの名無しさん:04/12/20 00:16:47
おれの場合は有限状態機械を作るときにProcをHashの値にいれるなんてよくやる。

342 :デフォルトの名無しさん:04/12/20 01:16:38
>>338 一行目小僧、わかるやついくつや。

343 :試験もなんにもない:04/12/20 01:32:57
                        ,. -―‐ `'' 、
   ┏┓  ┏━━┓        /.,;彡;, ..,;,.   ゙ミヽ、     ┏━━┓  ┏┓  ┏━┓
 ┏┛┗┓┃┏┓┃       /ソノ;彡;彡;彡;彡'゙ヽ;゙i;,ヽ   ┃┏┓┃┏┛┗┓┃  ┃
 ┗┓┏┛┃┗┛┃┏━━━{i;゙|il|l!ノ彡';彡;'','⌒ ゙!l!l}i゙!━┓┃┃┃┃┃┏┓┃┃  ┃
 ┏┛┗┓┃┏┓┃┃      {ノl!|!;ソ;ノリノ'″lRubyノ;li|l!1  ┃┃┃┃┃┗┛┃┃┃  ┃
 ┗┓┏┛┗┛┃┃┗━━━'{i|{il{li゙!ソ;'  ` ' `"″!l}!i|!━┛┃┃┃┃    ┃┃┗━┛
   ┃┃      ┃┃         '{;l!|{i!リ''  _ノ    ;i|!レ'     ┃┗┛┃  ┏┛┃┏━┓
   ┗┛      ┗┛        '゙i!|!;'、,_´__,ノ '″    ┗━━┛  ┗━┛┗━┛


344 :デフォルトの名無しさん:04/12/20 01:43:59
ワラタ

345 :デフォルトの名無しさん:04/12/20 03:31:04
お化けは死なーない
っていうじゃない
残念!
鬼太郎の母親は死んじゃいましたから
ユウレイはお化けじゃないのかよ斬り

346 :デフォルトの名無しさん:04/12/20 03:39:08
これはCのユーザー関数の説明をパクったものなんですが、Rubyのユーザーメソッドにも言えることですよね?

実引数と仮引数が同じ名前になっているが、実引数と仮引数はメモリ上で別々に確保されるので、メソッド側に値を変更されることが無い。
つまり、実引数と仮引数は、名前が重複していても別のものである。
そのため、同じ名前を使っても、実引数はきちんと表示される。

347 :デフォルトの名無しさん:04/12/20 04:40:57
>>346
最後の一行だけ意味がわからないからそこだけは何ともいえない。

メソッド側で値を変更されることはあり得るよ。

def foo(s)
 s.gsub!(/baka/, 'aho')
end

a = 'baka baka'
puts a #=> baka baka
foo(a)
puts a #=> aho aho

Cの変数のイメージだとRubyの変数は説明がつかない。
Rubyの変数はポインタ型の変数だと思っておいた方がまだまし。


348 :デフォルトの名無しさん:04/12/20 05:37:13
言いたいことは分かるけど実引数が変更されることはないよね。
Rubyのメソッド呼び出しは値渡しなので、
実引数の値はメソッド呼び出しの前後で必ず同一のオブジェクトであって、
異なる値に変更することはできない。
まあ、なにをもって「値を変更する」と呼ぶのかが問題ではあるけども。
値の状態なら変更可能ではある。

349 :デフォルトの名無しさん:04/12/20 07:05:26
> 実引数と仮引数はメモリ上で別々に確保されるので、

意味不明。こいつぼけ

350 :デフォルトの名無しさん:04/12/20 10:17:38
引数が違う同名メソッドの定義は出来ないのでしょうか?

def func()
print("func()\n")
end

def func(a)
print("func(a)\n")
end

351 :デフォルトの名無しさん:04/12/20 10:55:01
引数にデフォルト値を入れることで対処するのが普通。こんな具合。

def func(a=false)
if a then
print("func(a)\n")
else
print("func()\n")
end
end


352 :デフォルトの名無しさん:04/12/20 11:12:48
>>351
なるほど。わかりました。
でも、逆に言えば引数が違う同名メソッドは定義出来ないという事ですよね?

353 :デフォルトの名無しさん:04/12/20 11:16:25
>>349
変数は指してるとこ同じでも、変数は違うからいいんじゃない?
a = 'x'
def test1(a) p a; a = 'y'; p a end
def test2(a) p a; a << 'y'; p a end
test1(a)
p a
test2(a)
p a

むしろ
> Rubyのメソッド呼び出しは値渡しなので
のほうが謎だ……


354 :デフォルトの名無しさん:04/12/20 11:23:37
>>352
標準ライブラリに普通に引数の違うメソッドがあるけど。

355 :デフォルトの名無しさん:04/12/20 11:41:01
>>354
確かに。
でも、それはどの様に実現しているのでしょうか?

356 :デフォルトの名無しさん:04/12/20 11:43:36
Rubyって型がないのに関数オーバーロードってできるの?
例えばVisitorパターンとかどうやんのかな?とか思ったり。

357 :デフォルトの名無しさん:04/12/20 11:54:22
特定のディレクトリに1から始まる数字のみのファイル名を持つファイルがあって
その中で最大の数字のファイル名を取得するにはどうしたらいいのでしょうか?
1 2 3 .... 1092 1093 1097
とあった場合1097を得たいのですが

358 :デフォルトの名無しさん:04/12/20 12:04:31
>>355
コンパイル時に型を特定できないからC++のような関数オーバーロードはない
が、引数を *args のような形で受けて、args.sizeや中身のオブジェクトの種類で
処理を分岐させれば宵。

359 :デフォルトの名無しさん:04/12/20 12:08:48
>>357
Dir.chdir "そのディレクトリ"
Dir.glob("*").sort_by {|fname| fname.to_i}[-1]

360 :デフォルトの名無しさん:04/12/20 12:12:32
>>359
ありがと
難しく考えすぎてた、ファイル名全取得して配列入れて、みたいな

361 :デフォルトの名無しさん:04/12/20 12:18:56
>>358
>コンパイル時に型を特定できないからC++のような関数オーバーロードはない
最初、引数の個数で判断出来ないかなと思ってたんですが
def func() end
def func(a=0) end
func()
確かにこんな場合特定出来ませんね…

言われた通り、デフォルト引数を使ったり、args.sizeやオブジェクトの種類で分岐させようと思います。
答えて下さった方、ありがとうございました。

362 :デフォルトの名無しさん:04/12/20 12:25:24
Dir.glob("*").max { |a, b| a.to_i <=> b.to_i }

363 :デフォルトの名無しさん:04/12/20 12:30:23
>>361
strongtyping ってのが既存でありますが。

364 :デフォルトの名無しさん:04/12/20 12:35:20
>>356こういう風にhttp://www.graco.c.u-tokyo.ac.jp/~sato/designpattern/visitor.html

365 :デフォルトの名無しさん:04/12/20 12:39:08
>>363
おお、この様なライブラリでオーバーロードも可能なんですね。
色々ありますね。情報をどうもでした。

366 :デフォルトの名無しさん:04/12/20 18:57:27
java の finally 節 みたいに、
ある括りから出る際に、必ず呼ばれる処理を記述する仕組みは ruby にはありますか?


367 :デフォルトの名無しさん:04/12/20 19:06:38
ensureがある。
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%C0%A9%B8%E6%B9%BD%C2%A4#begin
を参照。

368 :デフォルトの名無しさん:04/12/20 20:42:16
>>347
>>348
Cとはちょっと違うんですね。
どうもありがとうございました。

>>349
Cの本に書いてあった文そのままなんだけど・・・

369 :デフォルトの名無しさん:04/12/20 21:03:58
>>368
「こいつぼけ」はNGワードですから〜

370 :デフォルトの名無しさん:04/12/20 21:09:32
そのCの本は(゚听)イラネ
他の本嫁

371 :デフォルトの名無しさん:04/12/21 00:53:15
>>370
Cの関数呼び出し時の変数は値渡し。
渡したメモリのアドレス(ポインタ)を使って何でもできるが。

でもRuby使うだけなら逆に半端なCの知識は邪魔かもという気はする。
オブジェクト指向「設計」に慣れりゃいいんだろうが。
ということで368や、もうちょっと頭にスペースあけてから再挑戦汁。
なんか勘違いしてるっぽいから。

372 :370:04/12/21 01:42:58
>>371
いやそういうんじゃなくてさ
この本の説明って変数のスコープの話と値渡しの話がごっちゃになってない?

373 :デフォルトの名無しさん:04/12/21 03:19:56
とりあえずその本の書名を晒せ。

374 :デフォルトの名無しさん:04/12/21 18:31:38
>>372
本は知らんが、勘違いしてそうだという認識は共通のようだ、ということはわかった。

375 :デフォルトの名無しさん:04/12/21 23:24:41
>>296

遅レスだけど、その話題はimmutableかどうかであって、
即値かどうかはやっぱり実装上の都合だよね。

たとえばBignumは即値じゃないけどimmutable。

そのことに思いをはせると、じゃなぜRubyでStringはimmutableでないのだろうか
とか、
そのくせRegexpはimmutableじゃねえか
とか、
そもそもimmutableであるべきかどうかを、どこでどうやって判断してるんだろうか
とか、
考えるとキリがないので、とりあえずお茶を飲みます。

376 :デフォルトの名無しさん:04/12/22 03:11:00
>>375 は、>>296
> Fixnumが即値になっているのは実装上の都合もあるだろうけど、
> 即値じゃなきゃおかしいからでもあるでしょ。
この2行に対するレス、という理解でいい?
ここで「即値」と言ってる概念は、「immutable」と呼ぶべき物だ、と。

ところで、>>296 の後半2行の
「破壊的に 1 を 2 にされてしまったら、それ以降、1という数字は存在しなくなる」
は、即値や immutable とは別の、唯一性の話と考えていいんだろうか。


377 :デフォルトの名無しさん:04/12/22 07:25:55
>そもそもimmutableであるべきかどうかを、どこでどうやって判断してるんだろうか

俺も気になってた。
どうやって判断してるの??
誰か、教えて。

378 :デフォルトの名無しさん:04/12/22 09:15:01
レキシカル上に存在する定数はすべてimmutable
それ以外のオブジェクトはクラスの実装者の体調・心境の変化に依存


379 :デフォルトの名無しさん:04/12/22 13:50:51
>>376
漏れも、「破壊的に 〜 数字は存在しなくなる」という論理には違和感を感じます。
Integer::new(1).id != Integer::new(1).id
な yet another Ruby もありえる (ありえた) と思うんですが。

380 :デフォルトの名無しさん:04/12/22 18:40:48
>>379
その場合「リテラルの 1 が何を意味するか」という話にもなりそう。

……質問スレでする話題じゃないな。続きはRuby本スレで。

381 :デフォルトの名無しさん:04/12/22 19:32:29
別にこのスレでいいっしょ。

同じく
a = 1
b = 1
p a.object_id != b.object_id #=> true
が自然だと思う。

こうしないで、今のRubyみたいになってる利点って何?
実装上めんどうって理由でもいいよ。

382 :デフォルトの名無しさん:04/12/22 19:34:13
効率。

383 :デフォルトの名無しさん:04/12/22 21:45:23
>>381
その二つの 1 を別々のものとして扱えて嬉しいことってあるんだろうか。
どの 1 だろうと同じ 1 だと思うけど。

384 :デフォルトの名無しさん:04/12/22 21:58:12
>>383
うれしいことはないけど、(現状で全然困ってないけど)
別の1の方がオブジェクト指向としては、自然な気がするんだけ。
(遅くなってしまうなら、別に現状でもかまわない。)

385 :デフォルトの名無しさん:04/12/22 22:01:33
漏れは Numeric も String も immutable な方が自然だと思う。

386 :デフォルトの名無しさん:04/12/22 22:13:01
>>383
ある 1 に特異メソッドを定義して云々、みたいのはできそう。

387 :デフォルトの名無しさん:04/12/22 22:58:45
String が immutable なのは絶対いやだ

388 :デフォルトの名無しさん:04/12/23 00:18:09
JavaとPythonはimmutableだよな。
Objective-Cは……Cocoaの場合、immutableなNSStringがあって、
そのサブクラスにmutableなのがあるんだったか。(実際はもう少しややこしいが)
C++(std::string)、Perl、Rubyはmutable。

個人的にはmutableな方が好き。誰も聞いてないな。スマヌ。

389 :デフォルトの名無しさん:04/12/23 01:01:26
Fixnumというか、Numeric一族がmutableだと、++が自然に実装できる。

が、どうせシンタックスシュガーでも実装できる。

あんま意味ない考察だった。

390 :デフォルトの名無しさん:04/12/23 01:07:48
なぜ String#succ! があるのに、 Integer#++ を作れないんだろう
という話題に近いものがあるのかなあ。

391 :デフォルトの名無しさん:04/12/23 02:37:00
>>388
Ruby や Perl みたいに、文字列操作ガンガンすることの多いスクリプト言語だと、
immutable だったらえらいことになりそう。

392 :デフォルトの名無しさん:04/12/23 03:27:43
文字列の操作はガンガンするけど、 破壊的操作はあんまり使わないなあ。

393 :デフォルトの名無しさん:04/12/23 11:57:22
オレも文字列の操作はあまり破壊的にやらないなあ。
 xxx は selfを返すのに xxx! は self を返さない場合がある
 →xxx! はメソッドチェーンに使えない
 →xxx の方を使うか。
という流れ。文字列に限らないけど。


394 :デフォルトの名無しさん:04/12/23 12:11:38
いろんな処理の結果をまとめるとき、ひたすら result << ... で追加してい
くような破壊的操作はしない?
まあ、 Fixnum#++ と同じように、 << が存在しなくて += を使う、という考
え方もあるが……。



395 :デフォルトの名無しさん:04/12/23 15:31:41
>Rubyの識別子は英文字またはアンダースコア('_')から
>始まり、英文字、アンダースコア('_')または数字からなります。
(リファレンスより)

>真偽値を返すメソッド名は、動詞または形容詞に`?'を付け、
>形容詞に `is_'は付けない。
>例:
>visible?
(Rubyコーディング規約より)

下記の場合だけ例外的に?を許すんですか?
visible?の結果を返すために@visible?という変数を作ろうと
したらエラーでたんで違和感があったのですが。変数だけ
@visibleにするとattr使えませんよね?

あと詳しく調べたわけじゃないんですが、RDocがバカ正直に
上のルールを適用しちゃってるみたいで、?がついてる名前を
メソッドとして認識してくれないみたいです。HTML化したとき
リンクを貼ってもらえなくて困ってます。私の使い方が
間違っているのでしょうか?

皆様のアドバイスをお願いしたいです。


396 :デフォルトの名無しさん:04/12/23 16:46:00
>>395
前者の質問は

def visible?
 @visible
end

後者は知らん。

397 :デフォルトの名無しさん:04/12/23 18:43:12
>>396
回答ありがとうございます。

ちょっと説明が足りませんでした。私が言う違和感は、
同じ意味を持つものなのにメソッド名と変数名が違うのは変じゃないか
って意味なんです。
例えばcountってメソッドがクラス内のある変数を返すとき
@countを返すのが自然ですよね?だとしたらvisible?
が返すのは@visible?であって欲しいってことです。
attrってそういう使い方を想定して用意してあるものだと
私は解釈してるので、真偽を表す変数だけ
attr :visible?
はできなくて
def visible? ; @visible ; end
とするというのがどうにもスッキリせんのです。

そもそもなんで名前に使えるキャラクタに含まれていない
はずの?が堂々と使われているのかが謎でして。どういう
経緯でこうなったのか知りたいわけです。




398 :デフォルトの名無しさん:04/12/23 18:50:06
俺もその辺、以前から気になってた。
素直に変数名にも?を使えるようにすればいいと思うんだが……

399 :デフォルトの名無しさん:04/12/23 19:02:21
俺、はじめからそう思ってた。

400 :デフォルトの名無しさん:04/12/23 19:04:04
>397はん、わしはそうは思わん。
visible? と聞いているのに,@visible? と返ってきたら不思議じゃろ。
「聞いてるのはわしのほうじゃ、ちゃんと うんとか すんとか応えろ」
とは思われんかのう。行為と状態じゃよ。

401 :デフォルトの名無しさん:04/12/23 21:21:42
>>397
メソッドと変数は違う意味を持ちます。同じ値を返すとしても。

402 :デフォルトの名無しさん:04/12/23 21:56:07
>>397はん
つまりな。見えるけ? という質問しとる感じを'?' で出しとるんじゃな。
せやけど、状態を管理するには、可視(見える、見えん)ちゅう言葉を
使うようにしよやないか、いちいち 見えるけ? とかいう変数があったら、
読んどるほうもせわしない感じやからのう、ちゅうふうに考えたんちがうか。
attr :visible よりも visible? を定義したほうが、メソッドの意味が
直感的にわかりやすい、というサービス精神、ということでまけてもらえんか。


403 :デフォルトの名無しさん:04/12/23 22:03:02
昔は ? も ! も変数名の最後に使えた。
ある日、「それはバグでした」とか言う
よくわからん理由でいきなり使えなくなり、
俺はプログラムのあちこちの修正を余儀なくされた。

404 :デフォルトの名無しさん:04/12/23 22:13:03
よくわかる理由だが。

405 :デフォルトの名無しさん:04/12/23 23:16:15
メソッド名は!や?で終わることができるが
変数名はダメ、とそれだけのことじゃないのかな。

406 :デフォルトの名無しさん:04/12/24 00:27:36
ローカル変数に?を使いたいときもあるのに……シクシク

407 :397:04/12/24 01:10:38
皆さんご意見ありがとうございます。
同じ疑問を持つ方もいらっしゃるようなのでもう少し突っ込んで
みることにします。

>400 さん >401 さん
行為と状態が別物であるというのは理解しているつもりです。
となると、別物である変数とメソッドをいっしょくたにしてしまう
attrは少々乱暴な存在のようですね。
attrは便利だしソースも見通しがよくなるのですが、使い方を
誤ると混乱のもとになりそうです。自分の中ではattrは原則
使わないようなルールにすることにします。

>403 さん
となると、メソッド名でも「それはバグでした」で変更される可能性も
ありってことになりそうですね?「使ってよい」とはどこにも明記
されていない(?)ようですから。使うほうの立場としてはどこかに
明記してくれないと怖くて使えないですね。

>405 さん
エラーにはならない=使ってよいではないと思います。
単に私の調査不足ってだけで、ホントはどこかに「使ってよい」
と記述されているって話ならそれで納得できるし安心して使って
いけるのですが。

このへんのところがはっきりしていないからRDocの作者も
名前の識別を[A-Za-z_]にしちゃったんじゃないでしょうか?
RDocはRuby標準添付で、標準ライブラリにはRDoc文書を
添付せよという話になっているようなので、このまま放置
するとあちこちで不都合が起きるんじゃないかと思います。


408 :デフォルトの名無しさん:04/12/24 02:10:55
変数名に?が使えると三項演算子がややこしくなると思うんだが。
特に ? で終えたい変数って真理値が多いだろうし。

409 :デフォルトの名無しさん:04/12/24 04:14:22
>>408
とはいえメソッド名に?がついても十分ややこしくなると思うのよなあ。

410 :デフォルトの名無しさん:04/12/24 04:28:29
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%A5%E1%A5%BD%A5%C3%A5%C9%B8%C6%A4%D3%BD%D0%A4%B7
> メソッド名には通常の識別子の他、識別子に ? または ! の続いたものが許されます。

> RDocで ? がついてるメソッドとして認識してくれない
再現手順を希望。オレは RDoc 使ったことないからよく分からないけど、たとえば
$ rdoc -f html array.c
で、Array#empty? とかも他のメソッドと同じように表示されてるようだが。



411 :デフォルトの名無しさん:04/12/24 07:55:48
>397はん
よう考えてはる。勉強になるわ。
ほんでな、
>別物である変数とメソッドをいっしょくたにしてしまう
>attrは少々乱暴な存在のようですね。
まずインスタンス変数ありき。
それへのアクセサ(引用(および設定)機能を持つ、変数と同一名のメソッド)
を簡易に定義するメソッドとしてattrがあると思うとるんじゃが、
いっしょくたにとは、どないな意味?


412 :デフォルトの名無しさん:04/12/24 10:07:49
叩き台にどぉぞ。
class Module
  def attr_boolean(symbol_name)
    attr_reader symbol_name
    
    define_method("#{symbol_name}?") do
      self.__send__ symbol_name
    end
  end
end
if $0 == __FILE__
  class Foo
    attr_boolean :visible   # Generate visible? method
    attr_boolean :readable
  
    def initialize
      @visible = true
      @readable = false
    end
  end
  p Foo.new.visible?
  p Foo.new.readable?
end

413 :デフォルトの名無しさん:04/12/24 12:31:28
>>412
名前がアレかもしれないけれど、それイイね。

414 :デフォルトの名無しさん:04/12/24 19:43:53
ファイルの所有者を変更するには、どうしたらいいでしょうか?


415 :デフォルトの名無しさん:04/12/24 19:44:50
>>345
ゆうれいは足がない
お化けは足がある

416 :デフォルトの名無しさん:04/12/24 20:08:03
>>414
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=File#File.2echown

417 :デフォルトの名無しさん:04/12/24 21:07:44
RubyでWin32のOutputDebugStringってどう呼ぶの?
cygwin版とVCでビルドされたもの両方から呼べる?

418 :デフォルトの名無しさん:04/12/24 22:23:49
>417
呼ぶだけなら

require 'dl/win32'
func = Win32API.new('kernel32', 'OutputDebugStringA', 'p', '0')
func.call('hoge')

でもこのAPIって、Visual Studioなり、なんかIDEのデバッガの中でプロセスが動いてないと
何にも表示されないんでない?
# ちなみにcygwin版は試してない。スマソ。


419 :デフォルトの名無しさん:04/12/24 22:45:49
WebDAVのサーバー側ライブラリってありますか?

420 :397:04/12/24 23:15:25
ご意見ありがとうございます。

>410 さん
当たり前のところに当たり前のように書いてありましたね。
ロクに調べもせずに発言してるのがバレバレですね(恥。

>再現手順を希望。
Ruby1.8.1をMS-Winで動かしてます。
#Foo#bar
#Foo#buz?
class Foo
def bar ; end
def buz? ; end
end
これでどうでしょう?Foo#barはリンクできてます。Foo#buz?は
リンクできてません。
Methodsリストにはちゃんとbuz?があるのでClass#method
表記のときだけ動作がおかしいのかも?
array.cの例ですが、RDocのファイル構成を見ると、C用とRuby用の
パーサがあったので、Cだとうまくいくのかもしれません。またロクに
調べずに書いちゃってますけど。

>411 さん
>いっしょくたにとは、どないな意味?
>変数と同一名のメソッドを簡易に定義するメソッドとしてattrがある
このまんまです。変数名とメソッド名が同じものがattrの裏で
連結されているみたいなニュアンスでした。

>412 さん
なるほど。そういう手があるのですか。勉強になります。
叩き台どころかそのまま使えそうですね。attrは使わない
方針になりそうですが、いざというときには使えそうです。

421 :デフォルトの名無しさん:04/12/24 23:16:41
>>418
うまくいきました。
# 本当は宣言済みのものがあるのかと期待してたんだけどさすがにないか・・・

>でもこのAPIって、Visual Studioなり、なんかIDEのデバッガの中でプロセスが動いてないと
>何にも表示されないんでない?
全てのプロセスのODPの出力を受け取ってstdoutに吐く
コマンドラインツールを作ってあるのでそれを起動してれば取れます。
これでcgiのデバッグがかなり楽になります。
ありがとうござました。

422 :418:04/12/24 23:30:02
スマヌ、2行目
func = Win32API.new('kernel32', 'OutputDebugStringA', 'S', '0')
の方がよさげorz

423 :デフォルトの名無しさん:04/12/25 11:05:11
>>420
うーん、一本とられたわい。
もうこの話は終わりのようじゃが念のため。
メソッド名はvisible、変数は@visibleで、「@を除いて」を省略した言い方をし
とるんだが。別にメソッドと変数を一緒くたにはしてないがのう。
変数名に?が利用できないのは事実じゃが、それは別にattrのせいでもなかろう。
「かなえられない夢(?の利用)」を思い出して嫌なんかも知らんが、attrファ
ミリー自体は、attr_accessor(読み書き両用),attr_reader,attr_writerとそ
ろっておって、クラス属性の宣言手段として結構なものだがのう。特に変数の数
が多いときはカンマで続けられるから便利じゃ。attrを毛嫌いするのは、attrが
不憫じゃ。まあ、好きずきじゃが。
単純な参照(および設定)だけならattrファミリーで良し。細かいことしようと
思えば明示的にメソッド定義して、使い分けすれば良いだけの話じゃ。

424 :デフォルトの名無しさん:04/12/25 12:35:29
一つ質問させてください。

現在製作している WikiClone に、差分表示の機能を取り込みたいと思っています。
しかし「Ruby 差分」でググってみても、それらしいライブラリが見つからず……。
自力で差分表示のアルゴリズムを実装するしかないのでしょうか?

425 :デフォルトの名無しさん:04/12/25 12:42:19
diffでぐぐるといいよ。RAAにもある。

426 :デフォルトの名無しさん:04/12/25 13:07:15
バージョン管理がまず必要。
CVSかRCSか何かを利用したほうが良い。
当然このなかに差分をとる機能があるから、これを使う。


427 :デフォルトの名無しさん:04/12/25 13:51:10
pureRubyでバージョン管理できるライブラリがあったら使いたい。
でも、別途インストールしろというのは無理があるのでは?

好きな人がいるのは理解できるけど。

428 :デフォルトの名無しさん:04/12/25 13:58:59
とりあえず最新版+前回分とのdiffだけ持ってればいいんじゃないの。
履歴なんて後からどうにでもなるし。
# どーでもいいけどRWikiの差分diffの結果をべたっと貼るだけって手抜き杉

429 :デフォルトの名無しさん:04/12/25 14:07:29
そうでもないよ。Wikiって、ちょこちょこ編集が続くことがあるから、
直前のだけだとよくわからないことがよくある (typo修正しか見えなかったりね)


430 :424:04/12/25 14:10:02
>>425
情報ありがとうございます。無事見つかりました。

>>426
ごめんなさい、バージョン管理はすでに独自のもの(コピーマージ式)を実装済みです。
一度はCVSを使おうかとも思ったんですが
組み込み方がさっぱり分からなかったので止めてしまいました。


ところで、RAAの中のアルゴリズム実装を探してみたところ
「diff」「simple-diff」「diff-lcs」「argorithm-diff」の四種類が見つかったのですが
そのうち、はじめの二つはリンク切れで落とせず。
残ったdiff-lcs と argorithm-diff 、いったいどういう違いがあるのでしょうか?

431 :デフォルトの名無しさん:04/12/25 16:50:48
CVS は BitChannel が使ってるよね。

432 :デフォルトの名無しさん:04/12/25 17:54:29
Hiki は CVS と Subversion に対応してた気がする

433 :デフォルトの名無しさん:04/12/25 18:31:59
出自の違いですね。
diff-lcs は perl での実装を移したもの。
argorithm-diff は、rubyによるWiki実装であるTikiから切り取ったもの。
(登録者はTikiとは関係ありませんが。)

採用しているアルゴリズムも異なるかもしれません。
代表的なものでも数種類あるので。
双方に対して、速度とかテストしてみてよかった方を採用しては?

将来的なメンテナンスという面では、diff-lcs かな。

434 :デフォルトの名無しさん:04/12/25 18:32:56
Pukiwikiが流行るのも分かる気がするよ

435 :デフォルトの名無しさん:04/12/25 21:05:35
PHP だしな。

436 :デフォルトの名無しさん:04/12/25 21:31:20
誤爆ではないだろうな。

437 :デフォルトの名無しさん:04/12/25 22:43:04
Rubyの開発環境っていいのないね

438 :デフォルトの名無しさん:04/12/25 23:28:32
>>437

ぱっと思いあたるのが

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/40360

あと、eclipseとか(Rubyのプラグインあったよーな)、ぐらい。

質はあんま良かないのかな。

439 :デフォルトの名無しさん:04/12/25 23:30:29
emacs の ruby-mode があるしねえ。
俺は vim 使ってるけど。

440 :デフォルトの名無しさん:04/12/25 23:35:25
いちおう mi使い なんてヤツもいることだけ申しあげとく。
http://www.mimikaki.net/

441 :デフォルトの名無しさん:04/12/26 00:12:28
コードアシストのない環境でよくできるね。
プログラムが大きくなると、
いちいちメンバの名前を覚えられない。

442 :デフォルトの名無しさん:04/12/26 00:19:25
別にいちいち覚えないよ。
UnitTest 書いてクラス作ってと足場を固めるように
作成するから一度に把握しなければならない範囲ってそう広くないし。

443 :デフォルトの名無しさん:04/12/26 00:53:17
>>423
一字一句までごもっともです。いい勉強になりました。
お付き合いありがとうございました。

444 :デフォルトの名無しさん:04/12/26 01:09:26
>>404
詳細希望。blade見たけど探しきれなかった。

445 :デフォルトの名無しさん:04/12/26 01:12:40
>>444
むしろ >>403 に詳細希望。

446 :デフォルトの名無しさん:04/12/26 11:14:19
>>437
RDEは?

447 :デフォルトの名無しさん:04/12/26 11:26:35
>>444
変数名の?!の件は、
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/9702
から始まるスレッドだろうね。
9756の原さんは、今回の397さんとまったく同じ主張しているね。

ところで。たまに昔のruby-listを読むことあるけど、いい文章結構あるね。
ruby-list/37426の中島さんの文章なんかは、物事の理解とはどういうことか
を教える一級品の文章だね。勉強になるなあ。

448 :430:04/12/26 12:13:27
>>433
解説ありがとうございました。
大きな差はないようなので、とりあえずは patch の入ってる diff-lcs を使ってみることにします。

449 :デフォルトの名無しさん:04/12/26 13:40:35
>>446
VisualStudio か Eclipse 以外は良いとは認めない人だと思う。

450 :デフォルトの名無しさん:04/12/26 13:50:10
IDEに最低必要な機能
-コードアシスト
-デバッグ情報表示
-クラスビューワー(クラスのプロパティ、メンバの表示)
(メンバをクリックすると定義部分へジャンプ)
-定義文へのジャンプ

あと、できればGUIエディタかな。
RDEって後ろの2つないよね。

>>449
ちなみにEclipseでRubyできるよ。

451 :デフォルトの名無しさん:04/12/26 13:55:16
>ちなみにEclipseでRubyできるよ。

>IDEに最低必要な機能
を満たしてるの?

452 :デフォルトの名無しさん:04/12/26 14:11:32
>>450
>RDEって後ろの2つないよね。

待て。クラスビューワーは普通にある。
あと「定義文へのジャンプ」は、そもそもRubyの文法上難しいと思う。

453 :デフォルトの名無しさん:04/12/26 14:56:42
FormDesignerに、それなりのIDEがついたら、Windows環境は合格なんだけどな。

454 :デフォルトの名無しさん:04/12/27 00:24:46
クラスビューアって作れなくない?
ソースなめただけで解る分だけ作ってるのかな。

455 :デフォルトの名無しさん:04/12/27 00:25:54
ObjectSpace 使えばできるんじゃない。

456 :デフォルトの名無しさん:04/12/27 02:03:09
>453 と本スレ >52
どっちが早く実現するんだ?


457 :デフォルトの名無しさん:04/12/27 12:39:00
Kconv::kconv で UTF-8 への変換ってできないですか?

% ruby -v
ruby 1.8.2 (2004-12-25) [i386-freebsd4]
% cat utf8.rb
#!/usr/local/bin/ruby
require "kconv"
print Kconv::kconv(DATA.read, Kconv::UTF8)
__END__
日本語 EUC-JP
% ruby utf8.rb | wkf -C
stdin newjis
%

458 :457:04/12/27 12:53:03
kconv.rb の Kconv::kconv を見てみたところ、

case out_code
when ::NKF::JIS
opt << 'j'
when ::NKF::EUC
opt << 'e'
when ::NKF::SJIS
opt << 's'
when ::NKF::UTF8
when ::NKF::UTF16
opt << 'w'
when ::NKF::NOCONV
return str
end

って ::NKF::UTF8 のところ、条件すり抜けとる気がするのですが、気のせいですよね?

459 :デフォルトの名無しさん:04/12/27 13:01:01
気のせいじゃない。
誰だこれ書いたの…

460 :デフォルトの名無しさん:04/12/27 13:57:27
まだsnapshotなので
正式リリースを震えて待て

461 :457:04/12/27 14:48:54
>>460
そうします。
# わたなべさんとこ見て萎えた。

462 :デフォルトの名無しさん:04/12/27 15:38:45
ここは萎えるインターネットですね

463 :デフォルトの名無しさん:04/12/27 19:14:13
文法レベルの質問で申し訳ないですが
これってどういう意味ですか?
連想配列?
variables = [:site_name, :author_name, :mail, :theme, :password,
:theme_url, :sidebar_class, :main_class, :theme_path,
:mail_on_update, :use_sidebar, :auto_link]

464 :デフォルトの名無しさん:04/12/27 19:32:04
>>463
普通の Array 。要素は全て Symbol 。

465 :デフォルトの名無しさん:04/12/27 20:03:35
>>464
感謝。
シンボルというのはenumみたいなもので、
他のシンボルとは被らないランダムな値が入ってるもの
ってことですね。
MD5みたいな感じですか。

466 :デフォルトの名無しさん:04/12/27 20:27:01
http://ruby-lang.org/ja/man/index.cgi?cmd=view;name=Symbol
> シンボルは任意の文字列と一対一に対応するオブジェクトです。

ランダムじゃないし(ていうかランダムってどういう意味だ? シンボルは数値じゃないぞ? (実装は数値だが))、
MD5のようなハッシュ関数(ごく希に重複する)とは違い、完全に一対一に対応している

467 :デフォルトの名無しさん:04/12/27 20:52:46
>>466
だいじょぶです。
今、hikiのソースコードを読んでrubyを覚えよう作戦を
実行中なんですが
rubyのwikiで一番有名なのってなんですか?

468 :デフォルトの名無しさん:04/12/27 20:55:09
参考までに
http://www9.ocn.ne.jp/~ymt/wiki/#RUBY
rubyのwiki一覧

これはすごい
http://www.mikihoshi.com/wema2/test/


469 :デフォルトの名無しさん:04/12/27 21:05:08
ちなみに、シンボルはオブジェクトということで
階層化可能だと思うのですが、
モジュール内部のみで有効なんですよね・・・

470 :デフォルトの名無しさん:04/12/27 21:09:41
>>469
ん?どういうこと?

471 :デフォルトの名無しさん:04/12/27 22:35:32
>>447
それってメソッドでも同じことが当てはまるような…

472 :デフォルトの名無しさん:04/12/27 23:14:18
Kconv::kconvが内部でNKF使ってるとはしらんかった
(つーか、たまにはソース嫁自分orz)
Jcode.pmとかベタ移植したら使い物にならんもんだろうかと言ってみるテスツ。

473 :デフォルトの名無しさん:04/12/28 00:15:52
>>471さん
「それ」を具体的に言ってみてください。

474 :デフォルトの名無しさん:04/12/28 00:53:57
>>472
Kconv は単なるガワだからね。いずれ deprecated になるんじゃないかな。
nkf2 使えばいいかと。

475 :デフォルトの名無しさん:04/12/28 01:16:47
>>474
単に好みの問題なのですが、
NKF.nkfメソッドってnkf(1)のオプションをそのまま書くところが
なんか生々しすぎてなかなか慣れないです。
そこらへんをKconvが和らげてくれているもんだと思ってました。

require 'nkf'
NKF.nkf('-e', "あいう")

require 'kconv'
"あいう".toeuc


476 :デフォルトの名無しさん:04/12/28 01:57:10
>>470
モジュールが違えば、シンボルの名前が同じでも指してるものは異なるんでしょうか?
インクルードしちゃうと・・・
あれれ。

sendにはまった。
sendメソッドはどこにあるんだーってrequireしてるファイルを全部
探してみたけど見つからなくて、実は組み込みだったという・・・
関数定義部分が探しづらいのはrubyの短所かも。

477 :デフォルトの名無しさん:04/12/28 03:16:43
>>476
やっぱオブジェクトブラウザ必要だね。

478 :デフォルトの名無しさん:04/12/28 07:34:30
デフォルトでMIMEデコードするnkfを
そのままエンコーディング変換の用途で使うなんて正気の発想じゃない。

479 :デフォルトの名無しさん:04/12/28 12:26:40
>>476
シンボルはモジュールが違っててもひとつの Ruby プロセス内なら同じ。

480 :457:04/12/28 13:09:13
>>475
いや、そういう理解で良いんじゃないでしょうか。
deprecated にはならないように思います。
というか nkf2 はもうマージされてますよね。

>>478
げ、ホントだ。
確か nkf は本家の方もバージョンによって
デフォルトで MIME デコードしたりしなかったりしてた気がするしなあ。
せめて Kconv の方は MIME デコードしないというか、
余計な変換はしないようにしてもらいたいですが、
互換性の問題とかあるかなあ?

481 :send難しい。。:04/12/28 13:16:42
class SendTest
def test_print
p "jikken"
end
end
test = SendTest.new

#ここで、次の二つどっちを使っても、結果は同じですよね。
test.send(:test_print)
test.test_print

sendと、インスタンスメソッドとしての呼び出しって、どういう違いがあるんでしょうか?
私は日曜プログラマというか、プログラミングの講義っていうものを受けたことがないので、
推測ですが、sendを使うと、testというオブジェクトがtest_printというメソッドを持ってるか不明でも、
test_printメソッドが使えるってこと(自分で書いててうまく説明できない)なんですよね。たぶん。

メソッドを持ってるかわからないけど、実はほんとにメソッドを持ってて、sendを使わないといけない状況って
どんな時でしょうか。
sendの使いこなしかたとか、こういう時は、絶対sendっていうのがあれば、教えてください。


482 :デフォルトの名無しさん:04/12/28 13:29:42
>シンボルはモジュールが違っててもひとつの Ruby プロセス内なら同じ。
がーん。
グローバル変数と同じくらい危険じゃないですか。

>>481
個人的な考え
sendはリフレクションAPI(だと思う)から
基本的には使わないことがベター。
保守性を無視して楽したい時に使うといいと思う。
可読性とセキュリティーの点でsendは使うべきじゃない。



483 :send難しい:04/12/28 13:38:28
>>482
なるべく使わない方がいいってことは分かったんですが、
保守性を無視して楽になるって、どういうことですか?
もうちょっと、楽できるってことを、具体的に教えてもらえませんか。

484 :デフォルトの名無しさん:04/12/28 13:41:51
今日の教訓
requireの順番入れ替えたらエラーorz

グローバル変数は使わず
インスタンスに渡してあげよう。

も1つ
違うファイルで定義された関数を呼び出すとき
その定義場所がわかるように記述しよう。
例えば、クラスのメソッドにして、クラス名から
どこのファイルに記述してあるかわかるようにする。
(1クラス1ファイルでクラス名=ファイル名にするといい)

rubyも使い方を誤ると簡単にperl化しちゃいますね。

485 :デフォルトの名無しさん:04/12/28 13:55:09
>>483
なんでわざわざ send 使おうと思っているのか、そっちの方が気になる。

486 :デフォルトの名無しさん:04/12/28 14:04:48
>>482
危険かね?危険な状況に陥るケースが思いつかないけど、例えばどんな?

487 :デフォルトの名無しさん:04/12/28 14:05:55
> グローバル変数と同じくらい危険じゃないですか。

シンボルがモジュール毎に異なってたら使いもんにならんよ。

488 :デフォルトの名無しさん:04/12/28 14:23:24
1.9 の String#clear を 1.8 で効率良く実装するとしたらどうするのが良いですか?
str.replace("") ですかね?

489 :デフォルトの名無しさん:04/12/28 16:08:13
>>486
例えば、オブジェクトをハッシュに詰め込むときに
オブジェクトのクラスはハッシュ値としてシンボルを返すとすれば
シンボル名が重ならないように他のクラスを全部調べなきゃいけない。

>>483
コマンドラインにメソッド名を入力すると、それを呼び出してくれるってのは?
./game help
ってやると
help()が呼ばれるとかさ。
./game start
ってやると
start()が呼ばれる。
switch/caseをすっ飛ばせる。

./game deleteAllとかされて悲劇が起こることも。

490 :486:04/12/28 16:46:28
>>489
すまん、意味がさっぱりわからない。

491 :デフォルトの名無しさん:04/12/28 16:52:45
>>489
>例えば、オブジェクトをハッシュに詰め込むときに
>オブジェクトのクラスはハッシュ値としてシンボルを返すとすれば
ちょっと意味不明。 Hash とは別に独自のハッシュテーブルを作る話?

489 のレスはどっか全体的にズレてるというか、
途中の思考過程をすっとばして書いてるように感じるんだよなあ。
長文になってもいいから、順を追って書いてくれると助かる。

492 :デフォルトの名無しさん:04/12/28 20:01:11
>>481さん
rubyマニュアルによれば、sendの意味は下記のとおり。
send(name[, args ... ])
send(name[, args ... ]) { .... }
オブジェクトのメソッド name を、引数に args を渡して呼び出し、メソッドの
実行結果を返します。ブロック付きで呼ばれたときはブロックもそのまま引き渡
します。
メソッド名 name は文字列かSymbol です。
send は、呼び出し制限 にかかわらず任意のメソッドを呼び出せます。

以下は実際に使ったことはない私の単なる想像上の用途。識者の指摘を待つ。
(1)nameを動的に変更して何らかの作業をさせたいとき。
(2)privateなメソッドでもsendは実行できるから、呼び出し制限はあえて破りた
いときに使う。


493 :デフォルトの名無しさん:04/12/28 20:28:39
>>492
例えば。
class Robot
  def walk;puts "I'm walking";end
  def jump;puts "I'm jumping";end
  def dance;puts "I'm dancing";end
end
class Automation
  attr_accessor :robot, :script
  def run
    @script.each{|command| @robot.send(command)}
  end
end
am = Automation.new
am.robot = Robot.new
am.script = [:dance, :dance, :jump]
am.run
#=> I'm dancing
# I'm dancing
# I'm jumping

494 :デフォルトの名無しさん:04/12/28 20:50:18
ありがと。
(2)は下記のスレッド参照されよ。
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/25550
privateはうっかりミス防止程度らしい。sendはprivateを無視して実行
しちゃう。だけど、そんなに傍若無人になりたい時って、どんな時?
ちょっと素人には想像しかねる。

495 :デフォルトの名無しさん:04/12/28 20:55:25
>>487
今からでも遅くないから、リファレンスマニュアルのkconvのとこに
"内部でnkf使ってるので、MIMEエンコードに見える文字列はデコードされます"って
書いてきてくれよ。

自分で書けばいいのかもしれんけど、俺もうRuby見捨てちゃったからさ…

496 :デフォルトの名無しさん:04/12/28 21:13:52
>495
月狼か?

497 :デフォルトの名無しさん:04/12/28 21:20:18
>>494
うーん。プロファイラとかデバガとか開発環境に使いそうな使わなそうな。

他には、proxy しているオブジェクトの public メソッドを置き換えるとか。
人の作ったライブラリのバグ/仕様を
元のコードに手をつけずに修正したいときに使えると思う。
そんな機会があるかどうかは知らないが。
class HiddenOne
  def foo; puts "foo";end
  def hoge; hage; hige;end
  private
  def hage;puts "hage";end
  def hige;puts "hige";end
  def fuge;puts "fuge";end
end
class Proxy
  attr_accessor :delegatee
  def foo; @delegatee.foo;end
  def hoge; @delegatee.send(:fuge);end
end
o = HiddenOne.new
o.foo
o.hoge
p = Proxy.new
p.delegatee = o
p.foo
p.hoge

498 :デフォルトの名無しさん:04/12/28 21:58:12
>>497さん
ありがとうございました。代理パターンですか。
なるほど、勉強になります。
libをgrepすると結構sendは使われてますね。

499 :デフォルトの名無しさん:04/12/28 23:09:46
>>494
テスト・ケースでprivateメソッドを単体でテストをしたい場合。

500 :デフォルトの名無しさん:04/12/28 23:21:12
>492
フレームワーク的なクラスを作ってるときは(1)の用途でよく使う。
「このクラスを継承して、"on_ほげ" ってメソッドを定義すると"ほげ"ってイベント
を受けたときに自動的に呼びだします、とか。


501 :デフォルトの名無しさん:04/12/28 23:22:44
おれがRuby嫌いなわけがわかった
行指向パーサだからだ


502 :デフォルトの名無しさん:04/12/28 23:26:03
>>501
おめでとう。そして、さようなら。

503 :492:04/12/29 04:01:24
499,500さん、説得力ある回答です。
481さん、こんなところでいいかな、sendの件。
おかげで勉強になったよ。やっぱり存在してるものは、それだけで尊いんだな
あ。

504 :デフォルトの名無しさん:04/12/29 11:03:07
>>501
行指向だからどうなんだ

505 :デフォルトの名無しさん:04/12/29 11:08:42
行指向だから嫌いだ、と書いてあるわけだが

506 :デフォルトの名無しさん:04/12/29 11:35:30
>>505

なぜ、行指向は嫌いなのか

507 :デフォルトの名無しさん:04/12/29 11:41:48
hoge =
method1(a,b,c) +
method2(a,b,c)
みたいな変態なソースを書かされるから。

hoge =
method1(a,b,c)
+ method2(a,b,c)

だろ不通。

508 :デフォルトの名無しさん:04/12/29 11:45:12
>>507
俺は他の言語でも前者。

509 :デフォルトの名無しさん:04/12/29 11:55:22
突然質問してもいいでしょうか?
win32oleを用いてEXCELファイル'paste.xls'に

----------------------------------------------
excel = WIN32OLE.new('EXCEL.Application')
excel.visible = true
book = excel.workbooks.open('paste.xls')
sheet = book.worksheets('Sheet1')
cell = sheet.cell(1,1)
cell.value = "002A"
----------------------------------------------

のように16進数を貼り付けているのですが、このcell(1,1)を
参照しているHEX2DEC関数がシート内にあり、その値が#NAME!と
なってしまうのです。visible=trueで表示されたEXCELを一旦
保存して閉じ、再度(Rubyからではなくて)paste.xlsを開くと
その#NAME!が数値に置き換わるのです。
自分で調べたところRubyで起動したEXCEL上では分析ツールの
アドインがチェックされているにも関わらず、関数などが有効
になっていないみたいなのです。Ruby上から分析ツール、分析
ツール(VBA)を組み込んでみたりしたのですが、状況が変わり
ません。
どなたか、#NAME!とならない方法を知ってる方いませんか?

510 :デフォルトの名無しさん:04/12/29 12:02:42
>>507
上は変態で下はノーマルなのか?
フェラはいいけどアナル舐めはやめてね、みたいな話だな。
まあ個人の好みの話だからどうでもいいが。

511 :デフォルトの名無しさん:04/12/29 13:03:26
>>507
下のほうが変態だ
上のほうがmethod2との関連性が明白だ

それとも、まだ何か漏れの知らない変態要素があるのだろうか
ソースの切り貼りするときのこと考えても、べつにどっちでも変わらんし

512 :デフォルトの名無しさん:04/12/29 13:05:38
数学では上のように書くことはありえない。
その意識があれば上を変態的と思うのは間違っていない。

513 :デフォルトの名無しさん:04/12/29 13:11:52
むしろ好んで変態的に書くのが気持ちいい

514 :デフォルトの名無しさん:04/12/29 13:18:56
楽天が PHP、はてなが Perl、なら ruby は?とふと思いました。
ruby で作られた有名な中規模〜大規模の Web サイトはありませんか?

515 :デフォルトの名無しさん:04/12/29 13:37:08
>>507
俺は下だから変態か。メンテが楽なんだよね。昔どこかのソースで
hoge=[1,
2,
3,
]
って書き方見て蕁麻疹でそうだったよ。最後のカンマは
何なんだ?

516 :デフォルトの名無しさん:04/12/29 13:49:56
(セパレータではなく)デリミタとしてのカンマ。
要素の追加時に変更が追加行だけで完結するので有利。

517 :デフォルトの名無しさん:04/12/29 14:46:45
>>515
C言語でもやるじゃん

int main(){
int a[] = {1, 2, 3, };
}


518 :デフォルトの名無しさん:04/12/29 15:13:14
普通、スタイルは人それぞれ。名前空間ごとに独立して存在しているのだ。

519 :デフォルトの名無しさん:04/12/29 15:25:45
「普通」とか「変態的」とか「純愛」とか
人それぞれだから要注意だねというお話でした。

520 :デフォルトの名無しさん:04/12/29 15:48:10
てか行指向がどうのとかぶつぶつ言ってた人って、
Cのプリプロセッサはやっぱり一切使わないのだろうか…

521 :デフォルトの名無しさん:04/12/29 15:57:24
Cのプリプロは\で続けられるから関係ないだろ

Rubyはどっかで勝手に改行したり空白入れるだけで
意味が違ってくるからヤバイってことだろ

522 :デフォルトの名無しさん:04/12/29 16:35:36
Rubyも\で行継続できますけど。
空白入れるだけで意味違ってくるのは
プリプロセッサも同じなんすけど…・

523 :デフォルトの名無しさん:04/12/29 17:10:27
ここは屁理屈なインターネット

524 :デフォルトの名無しさん:04/12/29 17:20:22
屁理屈というかなんというか。屁理屈こねてる自覚はありますけどw
でもCのプリプロセッサはどうなのよ、って単純な疑問でもありました。

525 :デフォルトの名無しさん:04/12/29 19:27:59
教えてください。シンボルについて議論がありました。
リファレンスマニュアル
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%A5%EA%A5%C6%A5%E9%A5%EB
に、シンボルの例として、:+(演算子に:をつける)が書かれています。
具体的に、これはどのような使い方になるのでしょうか。
そして、こうすると、どのあたりがうれしいのでしょうか?
または、うれしくなくても、どういうときに使わなければならないのでしょう。
もひとつシンボルについてよく分かりません。

526 :デフォルトの名無しさん:04/12/29 19:54:11
>>517
古い処理系だと怒られるからダメ。

527 :デフォルトの名無しさん:04/12/29 19:56:18
>>525
Ruby では演算子でさえもメソッド。

と言えばあとはわかるよな?

528 :デフォルトの名無しさん:04/12/29 19:59:58
>>525
知らなければ知らなくてもいいと思うんだけど。
アクセサ系を作るときにインスタンス変数の@を:に変える、って程度で考えておけば。

あとHashのkeyによく使うかな。

:+の使い方としては、
1.send(:+, 2) # 3
とかかな。

実際のところはRubyでのシンボル(変数名やメソッド名など)を
識別するのにシンボルを当てて使うというインタプリタ内部の
実装を表に出して解放したって感じ。シンボルの実装は整数だから、
文字列をあれこれするより圧倒的に速い。

529 :デフォルトの名無しさん:04/12/29 20:01:33
う。「シンボル」ってのがRubyでのSymbolと識別子としてのと
両方同じ言葉を当てて説明してしまった。
適宜文脈から読み替えてくれ。わかるよね(汗

530 :デフォルトの名無しさん:04/12/29 21:02:36
ありがとうございます。

そうすると、
 変数   変数名   シンボル
 ------------------------------
 ?    文字列   整数
というような対応関係があるんですね。(?のところはポインタみたいなものですか?)

そして、(sendのような?)メソッドの時は、変数名(文字列)を書く代わりに、
シンボルを引数にしたほうが、はやくなるんですね。

>:+の使い方としては、
>1.send(:+, 2) # 3
>とかかな。
そうか。1.send("+", 2) と書くかわりになるんですね。

引数がシンボルでも良いのは、組込みメソッドの中ではattrやsendくらいですか。
これ以外にもありますか?

もうひとつ教えてください。
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Symbol;em=%A5%B7%A5%F3%A5%DC%A5%EB
というところにもシンボルの説明がありました。
「オブジェクトに対応する整数(Object#id で得られます)と Symbol に対応する整数は別のものです。」
と書いてありました。
シンボルとObject#id というのは目的が違うんですね。どうちがうんですか?


531 :デフォルトの名無しさん:04/12/29 23:14:11
RHG でも読んだ方が良い悪寒。

532 :486:04/12/29 23:23:04
ああ、もしかして >>489 は Object#object_id と Object#hash と Symbol#to_i とを混同してたのか?

533 :デフォルトの名無しさん:04/12/29 23:37:24
>>512
うそついちゃいかん

534 :デフォルトの名無しさん:04/12/30 00:07:59
プログラミング入門 - Rubyを使って -
http://www1.tf.chiba-u.jp/~shin/tutorial/

535 :デフォルトの名無しさん:04/12/30 00:16:41
>>516
それはわかるんだけど、最後に一個余分な要素ができる(んだよね?)
からsizeとかでひどい目に会うって話はない?

536 :デフォルトの名無しさん:04/12/30 00:19:01
それは誤解

537 :デフォルトの名無しさん:04/12/30 00:23:06
酷い目にあうぞ

538 :デフォルトの名無しさん:04/12/30 00:24:37
試せばいいのに……

$ ruby -v
ruby 1.8.2 (2004-11-06) [i686-linux]
$ irb
irb(main):001:0> hoge=[1,
irb(main):002:1* 2,
irb(main):003:1* 3,
irb(main):004:1* ]
=> [1, 2, 3]
irb(main):005:0> hoge.size
=> 3

539 :デフォルトの名無しさん:04/12/30 00:32:30
本家より

> 91 名前: デフォルトの名無しさん Mail: sage 投稿日: 04/12/29 23:41:06
>
> Rubyのバナーが投下された模様。
>
> http://d.hatena.ne.jp/hihumiyoitsumu/20041229
>
> 92 名前: デフォルトの名無しさん Mail: sage 投稿日: 04/12/29 23:42:50
>
> made withが非常に読みにくい

540 :デフォルトの名無しさん:04/12/30 00:40:35
>>538
ひどい目に会ったことない奴発見!

541 :デフォルトの名無しさん:04/12/30 00:44:25
>>540
ないよ。俺はそういう書き方しないしね。

542 :535:04/12/30 00:55:09
俺が浅はかでした ○| ̄|_


543 :540:04/12/30 00:58:19
>>541
いや、俺もないんだけどね。

544 :デフォルトの名無しさん:04/12/30 01:03:48
>>542
書く前にちょこっと確かめてみりゃいいじゃんよ。
ruby -e 'p [1,2,3,].size'
だけで確認できるんだから。

545 :デフォルトの名無しさん:04/12/30 01:11:31
師走だからねぇ。あしたで今年も終了か。

546 :デフォルトの名無しさん:04/12/30 03:05:18
cygwin + ruby + migemo にチャレンジしています。
それぞれインストールはうまくいったものの、
$ ruby -S migemo
ruby: No such file or directory -- migemo (LoadError)
となります。このとき、
$ ruby -e 'puts $:'
/usr/lib/ruby/site_ruby/1.8
/usr/lib/ruby/site_ruby/1.8/i386-cygwin
/usr/lib/ruby/site_ruby
/usr/lib/ruby/1.8
/usr/lib/ruby/1.8/i386-cygwin
となっており、
$ ls /usr/lib/ruby/site_ruby/1.8
migemo-cache.rb
migemo-convert.rb
migemo-dict.rb
migemo-index.rb
migemo-regex.rb
migemo.rb
と出るので、LOAD PATH にファイルは存在しているようです。
$ mount
は、
C:\cygwin\bin on /usr/bin type system (textmode)
C:\cygwin\lib on /usr/lib type system (textmode)
C:\cygwin on / type system (textmode)
c: on /cygdrive/c type user (textmode,nomount)
となっております。進退きわまっているので、他に設定ミスの
可能性があったら教えてください。


547 :デフォルトの名無しさん:04/12/30 03:20:25
>>546
そのエラーは Ruby が migemo の実行プログラムを発見できてないというエラー。
-S はサーチパスから探すんだから、 まずやるべきは which migemo だと思う。

正しくロードできるかどうかの確認は、
ruby -e 'puts(require("migemo"))'
とか。この場合、 true と出るなら正しくロードできている。


548 :デフォルトの名無しさん:04/12/30 03:25:56
>>546
それは migemo.rb(ライブラリ) ではなく migemo(本体) が見つからない、というエラー。
どうやって入れたか分からないけど、/usr/local/bin あたりに入ってない?
$ which migemo
してみるといいかも。

549 :548:04/12/30 03:26:38
この時間帯にカブるのかよorz

550 :デフォルトの名無しさん:04/12/30 03:33:40
>>547
ruby -r migemo -e ''
でエラーにならなきゃいいんじゃない?

551 :530:04/12/30 10:11:29
>シンボルとObject#id というのは目的が違うんですね。どうちがうんですか?
の質問に対して、
>知らなければ知らなくてもいいと思うんだけど。
と回答もらいました。たぶん、これが正解だと思いました。
初心者にとっては、何が重要かわかりにくいです。

かたや、すべてのオブジェクトに対し番号をつけてオブジェクト同士が同一であ
るかをチェックする目的で使い、かたや、文字列にユニークな番号をつけて引用
参照などの際の引数に使う。
前者は同じ名前でもidは変わり得るが、後者は常に一定に保たれる、
ぐらいに考えておきます。ありがとうございました。

552 :デフォルトの名無しさん:04/12/30 10:49:33
>>551
「目的」もなにも、まるっきり関係ない別物。
一から十まで違う、としか答えようがないんだが。

553 :546:04/12/30 22:50:22
>>547-548
ライブラリが見つからないものと思いこんでドハマリでした..
ご推察の通り/usr/local/binにパスを通して動きました(涙
ありがトン!!


554 :デフォルトの名無しさん:05/01/01 20:39:29





          ,,iiii,,,,,iii,,      ,,,,,,,,,_         
  .______゙!lllll!l!llll!!     ,llllllllllllllliiiiiii,,,,,,,、   
  .llllllllllllllllllllllllllllllllllllllll`      ゙゙゙゙゙!!!!!!llllllllllllllll!    
  .l!!!!!!!!!!!!!!!!!!!!!!llllllllll       .,iiiiiii,,,,,,,,゙゙゙゙゙!!!l゜    
          llllllllll       lllllllllllllllllllliiiii,,,     
          llllllllll        `゙゙゙゙゙!!!!lllllllll゜    
  _______,llllllllll     .,illllliiiiiiii,,,,,,,, ゙゚゙゙′    
  lllllllllllllllllllllllllllllllllllllllll     l!!!!llllllllllllllllllllliiiii,,,,,,、  
  '!!!!!!!!!!!!!!!!!!!!!!!lllllllll|           ゙゙゙゙゙゙!!!!lllllllllllll!:    
                         ゙゚゙゙゙!!°  
                               
  .,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,、       ,,,,,,,,,,          
  .lllllllllllllllllllllllllllllllllllli、      lllllllllll          
  .'゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙lllllllllll゙′      llllllllll          
          ,illllllllll゙`       .llllllllll|      ,,,i,,  
      ,,iillllllllll゙`        llllllllll|     ,,,iilllllllli, 
     ,,,iillllllllllllllllii,,,       .lllllllllll   .,,,iiilllllllllll!!゙゜ 
  ,,,,,iilllllllllllll!!!llllllllllllii,,、     llllllllll|.,,,,iiillllllllllll!!゙’   
..liillllllllllllllll!!゙’  ゙゙!llllllllllllii、    .llllllllllllllllllllllll!!゙゙`    
: ゙゙lllllll!!!゙゙`     ゙゙!lll!!゙゜    .゙!lllllllllll!!!゙゙゜       
  .゙゙゛         :        `゙゙゙゙″         






555 :デフォルトの名無しさん:05/01/01 20:40:38










 .,,、       、            ,,,,,,,,、   .,ii,,,,,,,、     .iiiiiiiii、    
 .llllii,,,      lllii,,,          ,,illlllllll    .,llllllllll′    .llllllllll     
  ゙!!llllllii,,,    .゙!!llllllii,,、     liiiilllllllllllllll:    llllllllll″__,,,,,,llllllllll,,,,,,,,,,:   
   .゙゙゙!lllllliii,,,   ゙゙゙!lllllliii,,,    ゙!!!!!!!lllllllll:    .,lllllllll″ llllllllllllllllllllllllllllllllllll!  
     .゚゙!!llllllii,,_   `゙゙!lllllliii,,_     lllllllll:    .llllllllll  l!!!!!!!!!!!llllllllll゙゙゙゙゙゙゙゙  
       ゙゙lllllllllil.   '゙!llllllliii,.   lllllllll|   .lllllllll"      lllllllll     
     .,,,iillllll!!゙°   ,,,iillllll!!゙゙`   lllllllll|   .lllllllll:、    _,,,,,,lllllllll:     
    ,,,iillllll!!゙°   ,,,iillllll!!゙゙`     .:lllllllll    lllllllll,iliii, .,,iiilllllllllllllllllllliiiii,,,,、 
  ,,,iiillllll!l゙°  .,,,iiillllll!!゙°         lllllllll:    .'lllllllllllll!゚,llllllllll゙゙゙゙゙llllllllllllllllllllll‐ 
 .llllll!l゙°    .:llllll!゙゙゜            lllllllll:    llllllllllll゙ .!lllllllliiiiiiiillllllllll「゙゙!!l!°
 .゙゙°      .l!゙゜           :!!!!!!l    .'!llllll!!  .゙!!!lllllllllllllll!!゙′    
                                   ` ̄`       
                                            








556 :デフォルトの名無しさん:05/01/01 20:42:31








               __,,,,,,,,,ii,,                         
   liiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiillllllllllllllllllllllli,,       ,lllllllllll              
   lllllllllllllllllllllllllllllllllllllllllllllllll!!!!!!!!゙゙′      lllllllllll「              
   lllllllllll!!!!!!l゙゙゙゙゙゙lllllllllll|`            .lllllllllll,,ii,,、 .,,,,,,,,,,,,,,,,、     
   lllllllllll:     'llllllllll|             liiiiiiiilllllllllllllllllllll,,iiillllllllllllllllllllii,,、   
   lllllllllll,,,,,,,,,,,,,,,,,,lllllllllll,,,,,,,,,,,,,,,,,,,,,,,,,,   llllllllllllllllllllllllllllllllllll!!!!!!llllllllllllllli,    
   llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll:    ゙゙~` lllllllllllllllll!!゙°   .゙!llllllllllll、   
   lllllllllll!!!!!!!!!!!!!!!lllllllllll!!!!!!!!!!!!!!!!!!:      ,,llllllllllll!゙°     'llllllllllll   
   lllllllllll:      .llllllllllli、          ,,illlllllllllll|    _,,,,,,_. ,llllllllllll   
   lllllllllll:      llllllllllll,   ,iii,,,、   ,,illlllllllllllllll  .,,iiiilllllllllllllllllllllllllll_  
   lllllllllll:    ._,,,,,, ゙llllllllllli,、 ,lllllllllli!  .,illlllllllllllllllllll: llllllllllll!!!!!!llllllllllllllllllliiii、 
   _llllllllllliiiiiiiiilllllllllllli, ゙lllllllllllli,,,,illlllllllll「  ゚゙!llll!゙.lllllllllll llllllllllli,,,,,,,,,illlllllllllllllllll° 
 .'lllllllllllllllllllllllllllllllll!!!!ト.゙!lllllllllllllllllllllll!゙    ″ llllllllll| '゙!lllllllllllllllllllllllll!゙゙゙゙゙゙′ 
  .゙lllllllll!!!!!!゙゙゙゙゙゙″    ゙゙!lllllllllllllll!°      !!!!!!!!   ゙゙゙゙゙!!!!!!!゙゙゙°     
  `              ゙゙゙゙゙”                         









557 :デフォルトの名無しさん:05/01/01 20:48:47

691 名前:デフォルトの名無しさん 投稿日:04/12/31 17:31:18
Ruby!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


691 名前:デフォルトの名無しさん 投稿日:04/12/31 17:31:18
Ruby!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


691 名前:デフォルトの名無しさん 投稿日:04/12/31 17:31:18
Ruby!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


691 名前:デフォルトの名無しさん 投稿日:04/12/31 17:31:18
Ruby!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


691 名前:デフォルトの名無しさん 投稿日:04/12/31 17:31:18
Ruby!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


691 名前:デフォルトの名無しさん 投稿日:04/12/31 17:31:18
Ruby!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


691 名前:デフォルトの名無しさん 投稿日:04/12/31 17:31:18
Ruby!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


558 :デフォルトの名無しさん:05/01/01 21:33:20
遊び半分で書いてました。
ruby-devの中の人、解決望む。
Map from acceptable argument types to pattern and converter pairs.
opt, sw, val = sw.parse(val, argv) {|*exc| raise(*exc) if eq}
rescue Errno::ENOENT, Errno::ENOTDIR
rescue
o = notwice(Object, klass, 'type')
: "=MANDATORY", "=[OPTIONAL]"
nolong
opt, sw, val = sw.parse(rest, argv) {|*exc| raise(*exc)}
: OptionParser::OPTIONAL_ARGUMENT
: ((|msg|))
Shows option summary.
mlen = left.collect {|s| s.length}.max.to_i
第三者が読んで含蓄のある批判をしてみたまえよ、みっともない。
NoArgument.each {|el| ArgumentStyle[el] = Switch::NoArgument}
raise ArgumentError, "#{arg}: incompatible argument styles\n #{self}, #{t}"
== ((:OptionParser::MissingArgument:))
: Hash
exception message
=== Instance methods
format, (({Float})) for float format.
Parses ((|self|)) destructively, and returns ((|self|)) just contains
nolong << q
el.send(id, *args, &block)
分析・設計時間に比べればコーディング時間なんてほんの一瞬だから、
== ((:OptionParser::NeedlessArgument:))
option definition:


559 :デフォルトの名無しさん:05/01/01 22:00:28
Ruby is nanbar one!
こんなところでネチネチ陰湿に文句いうくらいならさっさとRubyアンインストして忘れろよ
In addition, I also need some good information and tutorials on how to program with Ruby.
 - 構文が複雑。シンプル化も進まない。
むしろここでやれ
自尊心を慰めてるにすぎない。
1000ゲット
I'm currently new to Ruby and would like to start developing with it.
ってチンポ立ててる自分を
数倍マシ?寝言は寝て言えよこの恥知らず野郎。
で、iconvはどうやってインストールしてどこにあるの?
Matzの言う通り「マイナーな言語のまま」終わるだろう。
 /|√ Ruby >>> Python >>> Perl    ⌒/ ) ハッ!
開発者個人の趣味でここまで来たけど、これからも趣味というスタンスが続くなら、
  (シンタックスシュガーが充実している反面でもあるけど)
/usr/local/include
『Windowsでexeが作れない』『自己記述ができない』『マイナーすぎてレンタル鯖で使えない所が多い』・・・
2. バグトラッキングシステム
おまえらの自慢の批評眼で自己批判して見ろクズが(゚Д゚)、ペッ
RubyもPHP並にデータベースを意識すればいいと思うよ
ので、Makefileに追加してbuildしたところ、coreを吐かなくなりました。
12月は年末厨で酒が飲めるぞー(酒が飲める飲めるぞー、酒が飲めるぞー)♪
  るびべんになる呪い
3. 公式サイトにPostgreSQL/Pythonみたいなオンラインドキュメント
誰かが結果を出した途端
RRBとかRipperの改造版を使っているんだよね。
批評された側の役に立ってるわけがないだろ?ボケが。


560 :デフォルトの名無しさん:05/01/02 00:06:19
死滅RubyのIO#writeはto_sされた結果が出力される。
既存のプロジェクトを死滅rubyから書き換えて
ただの垂れ流しを貢献と勘違いしてたキチガイね。
    ` 、      (__人__丿    、、、   /  
上記はあくまで一例で、
String#% を使ってこういう風にも書ける。
あと、いま思いついたが、ブロック付きの場合
まぁいいんじゃないか
  attr_reader :args
ZSA8aWNvbnYuaD4NCg0KLyp0b3AqLw0KaW50IG1haW4oKSB7IHJldHVybiAwOyB9
webrckで動かせるからApacheいらんし。
批評された側の役に立ってるわけがないだろ?ボケが。
p はデバグ用なんで、バックスラッシュとかダブルクォーテーションとかは
どう投じるかためだけに、延々とニュース見たり議論してたり
      print("[file] ", f, "\n")
: 死滅Rubyについて Part 6
.    /    /                       ミ R 彡
それ、読みやすく修正がラクかな・・・?
VMはYARVでいいんでない?
分析・設計時間に比べればコーディング時間なんてほんの一瞬だから、
Ripperって死滅Ruby 1.9の一部になっていて、もう単体ではメンテされて
while chunk = gets "" do
data = ["foo.rb", "bar.rb"]
うかつに死滅Rubyのような画期的な言語をつくってしまうと
puts sprintf("%x", s)
また、噛み付いてるのか YO!
     l                         l
puts HOGE
n = 128
                     /  ==/  `'-ノ  凵_
( ゚д゚) …………


561 :デフォルトの名無しさん:05/01/02 00:08:36
で、うんこはいつになったら国際化するんだ?
  class OptionalArgument < self
うんこには試験もなんにもない
その際に前述したような漢字を読み込むと,その行がnilと出力されてしまいます.
数倍マシ?寝言は寝て言えよこの恥知らず野郎。
---------------test.rb-------------------
      「      | 》  l|       ゙》 ミ..   .::::::\   
必ず空行を入れる というだけのルールだけでも
    /                   ヽ|
::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ ,  な!
おおっ、そんな方法があったとは!素晴らしい。
chm形式のファイルがダウンロードができたんだが、場所を失念した。
= 過去スレ
b << line
3行目でbを破壊的(?)に0にするには、どうすればいいでしょうか?
                                          l゙
それは知らないです.
: Jython、Groovy、Jうんこ - どれが一番効率的?
「メソッド名には Symbol を使う」という原則を、どこかで聞いた希ガス。
   when *ArgumentStyle.keys
pr = Proc.new
交わされています。われわれ初心者、中級者にも参考になりますよ。
= は イコールではなく代入ってイメージからすると、
だったらパラレルポート覗きたいんだが?
こちらこそごめん。
うんこじゃできないのね。


562 :デフォルトの名無しさん:05/01/02 00:35:36
「82 A0 82 AF 82 A8 82 DF」

563 :デフォルトの名無しさん:05/01/02 00:36:11
駄目じゃねぇかキチガイMatz.荒れるの分かってんだから教祖が宗教論争はじめるなよ(w
先頭で#!c:/usr/bin/ruby is うんこ -Ksとオプションを付けてもダメでした.
まぁいいんじゃないか
ローカルのテキストファイルに書き出すという処理です.
text[0...i+4]=""
作品として公開されたものが批評されるのは当たり前の事だが、
sendを使えばできるのですが、その関数を実行したくないときには
VMはYARVでいいんでない?
おれの場合は有限状態機械を作るときにProcをHashの値にいれるなんてよくやる。
更新してほしいな〜。
kome_dawara = 0
f = File.open("test.txt", "wb")
新しいportsでは直っている問題ではなかったのでしょうか?
んで、キミはruby is うんこを使ってるの?
DQpjaGVja2VkIHByb2dyYW0gd2FzOg0KLyogYmVnaW4gKi8NCiNpbmNsdWRlIDxp
間違えた。
とか。(printfの行が必要だったら、これじゃダメだけど)
: 【因縁の】DelphiVSHSPVSRuby is うんこ【対決】
p ary.fill(0,3) {|i| i} # => [0, 1, 2]
〃\ /\、ヽ、ノ).   │.{ {、|| ゚‐-  /゚-‐ ,'
sendは使えません。
phi.so(Apolloの実体)込みでexerbでexeは作れるけど、
ような気がしてきました.
>160さん
にしたほうが好みだ
4:【ダウンロード]を目立つように
言語に正解はない。全部やれ。
Ruby is うんこ で引数に渡したオブジェクトを操作するって普通はやんない気がする。
即値じゃなきゃおかしいからでもあるでしょ。
そういやVisualuRuby is うんこなんてのもあるな


564 :デフォルトの名無しさん:05/01/02 00:45:40
HSP vs Ruby最悪論争はこっちでやれ
ヨウカイ(・∀・)イイ!!
この場合のButtonクラスのonclick=
Ruby最悪の劣悪なドキュメントとライブラリから解放されると言うことを意味するだけで
このリンク先の説明のパラグラフは未稿なのでしょうか?
出し抜かれたというか、ズルい事でもされたような錯覚に陥るんかねぇ。
BGL0xPQ0FMU34xL1RlbXAvY2NN
Proc#call で Proc の処理を実行できる。
bottun = Button.new('before')
見て分かるから現状でいいんじゃね? と思う。別にどっちでも困らないけど。
I'm currently new to Ruby最悪 and would like to start developing with it.
p 'question #{a}'
どういう経緯で ruby最悪 で書き換えられたのか知らないけど。
でcoreを吐くという問題の原因がわかりました。
  るびべんになる呪い
それで、Fixnumが即値であることまでが問題になってきた。
"question \\"
 ,_  ,_  ___,    _,    __OO __  | |   r―― 、 _| |_    ,i~|  ;――;  ,_ _l~l__
ゆくゆくは、「気づいた[事|こと]」 以外の見出しの本文についても抜き出してみたいのですが、
それならそうと、解説書もそう注意書きしてくれればいいのに、
破壊的代入が出来た所で、結局、クラス変数使う方法と同じになります。
その16進を表示したいのですがどっかにサンプル無いでしょうか
鍛えていかないとね。
でもそのへんわかってないなら、基本をわかってない可能性高い。
それがあまりに動作が速く組み込みやすくてオリジナルを追い抜いてしまった
   when Module
これでいいんでは?
ファイル開いて一バイトずつ読むのは出来たんですけど16進に戻せません
= 前.クソスレ
ruby最悪 1.8.1 (2003-12-25) [i386-cygwin]


565 :デフォルトの名無しさん:05/01/02 00:52:33
一つの機能を利用するのに.劣悪なライブラリがいくつもあるんだから。
ruby最悪-devの中の人、解決望む。
  □HSP BIGINNER'S CLUB
不服であるのであればきちんと場所をわきまえて適切な表現で、
data.each { |file|
res.delete_if{ |e| e[0] !~ /気づいた[こと|事]/ }
ruby最悪で.劣悪なオブジェクト指向したら死ねる。
そこで fork を使って子プロセスをつくり、子プロセスの方で exec するのが普通。
exec, system, `` ではいずれも、アプリケーションの終了を待たなくてはいけませんでした。
win32ole使ってプログラムをしています
ごめんね
もっとスマートな方法があれば教えて頂けませんか?
この動きっておかしくないですか?
 RCSID = %w$Id: optparse.pl,v 1.40 2003/12/23 13:27:42 gsinclair Exp $[1..-1].each {|s| s.freeze}.freeze
普通の関数、.劣悪なオブジェクトは
その文字列の何番目は、どういう文字コードを持ってるか返してくれる。 など。
ログラムですが、
ruby最悪 1.8.2 (2004-12-15) [i686-linux]
許さないな。
cmd1bWVudHMgdG8gZnVuY3Rpb24g
/usr/local/include
.劣悪な言語に正解はない。全部やれ。


566 :デフォルトの名無しさん:05/01/02 01:22:36
漏れ儲でもなんでねねぇーけど、ここでクソRuby批判してる住人は妬みにしかみえねーな
流れとは関係なく、劣悪なドキュメントはソースに埋め込むのではなく
  やめてくれ、トラウマになるから。
和訳は出るんでしょうか?どこかで翻訳作業が進んでますか?
  @var.to_s
でしょうか?
Procがあっても、クソRubyの目指す(?)省力化にも役立ってない気がするのです。
宇宙もののアニメだとよくあるよな。ガンダムとか。
ほんとに破壊的は無理なようなので(メモリの関係??)、一見、破壊的なメソッドとして
ゆくゆくは、「気づいた[事|こと]」 以外の見出しの本文についても抜き出してみたいのですが、
(awkにもsub()とgsub()がある)
pって#だけエスケープしないんですね。
hoge(o) # => -605356234
俺、今まで Regexp.escape とか使ってた記憶が。
version.h は見つからないし、 クソruby.h をインクルードしたら
long style options list.
振舞いが大きく異なりまた使用頻度が多いものは異なるメソッドに分離した方が
最初の,を忘れて苦戦した・・・
eval したら元に戻る文字列が欲しいって話なら、String#dump をどうぞ。
irb(main):003:0> a[0].push("a")
とかやらないとだめですか…
   ∩___∩ 
irb(main):001:0> s = 'hoge'
それくらいだったらマイナーなままでいてくれた方がずっと良い。....
#$8{key} #$2{value}
記念日と記念日の間にもう一回くらいリリースするとちょうどいいかもな。
それで、それがProc.newの引数になってるって感じでいいですよね。
Thanks, see you soon -I hope- with my reply.
クソruby初心者なら彼の訓えを請うべきだね


567 :デフォルトの名無しさん:05/01/02 02:07:11
許さないな。
: 【最高劣悪な言語】 クソRubyist Magazine創刊 【ルビま!】
処理をしています.
えぇぇーーーーー。リリースノートなしでリリースしちゃったよ。これだから クソRuby は。
でも試すのマンドクセ…
タイムスタンプを見たら、書きたてほやほやだった。
f.close()
   ∩___∩ 
関数引数に、ポインタ/参照 渡しするのでしょうか?
> 私はPerlを嫌いではありませんよ。
( ゚д゚) …………
今年の運勢:海外の強力な助っ人陣がクソRubyを救う。
入力できません(キーを押しても何も表示されません).
「劣悪なメソッド名には Symbol を使う」という原則を、どこかで聞いた希ガス。
: Numeric
なんだこれ
最初の,を忘れて苦戦した・・・
StringIOは文字列にIO風の劣悪なメソッドを追加してIOっぽく使えるようにしたもの。
教皇本人がFUDに明け暮れているから仕方がない。
7.64s user 0.36s system 100% cpu 7.978 total
クソruby 1.8.2 (2004-07-29) [i386-freebsd4]
悪意のある割り込みがあると大変なことになりそうな気も……。
                                      /
require 'ming/ming'をしなければ問題はないんですが...
これって出来るの?クソRuby1.8.2でsyntax errorになったけど。
って、どういう劣悪なコードが書いてあるんでしょうか?


568 :デフォルトの名無しさん:05/01/02 19:01:50
更新がかかるとカキコするのかこのアフォ荒らしスクリプトは。ちょいとテスト

569 :デフォルトの名無しさん:05/01/02 19:54:22
7付属している劣悪なドキュメントだけでは、yacc/lexとかかじったことがある人でないとつらい。
bをaに勝手に最適化するならわかるが
Dir.glob("*").max { |a, b| a.to_i <=> b.to_i }
: OptionParser::OPTIONAL_ARGUMENT
Kconv::kconvが内部でNKF使ってるとはしらんかった
気が利かなくてすいませぬ。
send劣悪なメソッドはどこにあるんだーってrequireしてるファイルを全部
require "kconv"
self.__send__ symbol_name
>シンボルはモジュールが違っててもひとつの クソRuby 劣悪なプロセス内なら同じ。
「diff」「simple-diff」「diff-lcs」「argorithm-diff」の四種類が見つかったのですが
根本的にロジック見直した方が良い悪寒。
どうやって判断してるの??
( ゚д゚) …………
見ためにはわかりやすそうではありますが。
クソruby最悪 1.8.2 (2004-12-15) [i686-linux]
でもあれだけ決まりがないフォーマットを扱うのに最適な解はRacc辺りと思われ。
んじゃそれで潜ってこい
別にこの.クソスレでいいっしょ。
というか nkf2 はもうマージされてますよね。
その「気づいた[事|こと]」は何度も出てくるの?
初心者にとっては、何が重要かわかりにくいです。
もしそういう設計なら、それはデータソース(この場合1という値)が二重化されてて嫌なことになってない?
irb(main):003:1* 3,
からsizeとかでひどい目に会うって話はない?
るびぃー
『Windowsでexeが作れない』『自己記述ができない』『マイナーすぎてレンタル鯖で使えない所が多い』・・・


570 :デフォルトの名無しさん:05/01/02 20:12:07
71000ゲット
ちょっと説明が足りませんでした。私が言う違和感は、
変数名に?が利用できないのは事実じゃが、それは別にattrのせいでもなかろう。
こういうものなのでしょうか。
>再現手順を希望。
---------------test.pl-------------------
ファイル開いて一バイトずつ読むのは出来たんですけど16進に戻せません
あれれ。
劣悪なメソッド側で値を変更されることはあり得るよ。
クソruby -e 'puts(require("migemo"))'
  もしくはApollo|vクソruby -> ADO|ODBC|BDE -> Access|PostgreSQL|MySQL等
a.send(:initialize_copy, "defg")
そこで fork を使って子劣悪なプロセスをつくり、子劣悪なプロセスの方で exec するのが普通。
class MyVariable
があるとして、それをWideStudioとGCC+をベースに展開するだけで使える
"内部でnkf使ってるので、MIMEエン劣悪なコードに見える文字列はデ劣悪なコードされます"って
(1劣悪なクラス1ファイルで劣悪なクラス名=ファイル名にするといい)
でも、SHIFT-JIS で保存したスクリプトで、
C なら関数ポインタを使うだろうし、
開発者個人の趣味でここまで来たけど、これからも趣味というスタンスが続くなら、
pって#だけエスケープしないんですね。
残念!
= ここが見出し
require 'ming/ming'
Cの関数呼び出し時の変数は値渡し。
Shows option summary.


571 :デフォルトの名無しさん:05/01/02 20:18:10
7#!/usr/local/bin/クソruby
.    /    /                       ミ R 彡
まさに変数入れ物説と変数ラベル説の論争が、さんを交えて行われたのです
require 'nkf'
#define で "."
このリンク先の説明のパラグラフは未稿なのでしょうか?
def visible?
send は、呼び出し制限 にかかわらず任意の劣悪なメソッドを呼び出せます。
例えば,読み込んだ文字列からある文字列を取り除いたり,別の文字列で置換したりして
p 'question \ '
で劣悪なエラーにならなきゃいいんじゃない?
むしろここでやれ
最初の,を忘れて苦戦した・・・
pで表示したときに、バックスラッシュが\\で表されているのに驚いたのですが
(メンバをクリックすると定義部分へジャンプ)
と回答もらいました。たぶん、これが正解だと思いました。
----- クソRuby ------
: ((|msg|))
行クソ指向だから嫌いだ、と書いてあるわけだが


572 :デフォルトの名無しさん:05/01/02 20:18:47
71000ゲット
ちょっと説明が足りませんでした。私が言う違和感は、
変数名に?が利用できないのは事実じゃが、それは別にattrのせいでもなかろう。
こういうものなのでしょうか。
>再現手順を希望。
---------------test.pl-------------------
ファイル開いて一バイトずつ読むのは出来たんですけど16進に戻せません
あれれ。
劣悪なメソッド側で値を変更されることはあり得るよ。
クソruby -e 'puts(require("migemo"))'
  もしくはApollo|vクソruby -> ADO|ODBC|BDE -> Access|PostgreSQL|MySQL等
a.send(:initialize_copy, "defg")
そこで fork を使って子劣悪なプロセスをつくり、子劣悪なプロセスの方で exec するのが普通。
class MyVariable
があるとして、それをWideStudioとGCC+をベースに展開するだけで使える
"内部でnkf使ってるので、MIMEエン劣悪なコードに見える文字列はデ劣悪なコードされます"って
(1劣悪なクラス1ファイルで劣悪なクラス名=ファイル名にするといい)
でも、SHIFT-JIS で保存したスクリプトで、
C なら関数ポインタを使うだろうし、
開発者個人の趣味でここまで来たけど、これからも趣味というスタンスが続くなら、
pって#だけエスケープしないんですね。
残念!
= ここが見出し
require 'ming/ming'
Cの関数呼び出し時の変数は値渡し。
Shows option summary.


573 :デフォルトの名無しさん:05/01/02 20:19:38
7def visible? ; @visible ; end
「かなえられない夢(?の利用)」を思い出して嫌なんかも知らんが、attrファ
多分、こういうことも考えて無理と言われてるような気もするのですが、どうでしょうか?
kconv.pl の Kconv::kconv を見てみたところ、
> クソRubyのバナーが投下された模様。
……なして誰もIO#binmodeのこどしゃべね?
って意味なんです。
クソRuby!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
考えるとキリがないので、とりあえずお茶を飲みます。
ロクに調べもせずに発言してるのがバレバレですね(恥。
それって劣悪なメソッドでも同じことが当てはまるような…
禁断の$KCODE="SJIS"は試した?
def initialize() @ふが = 'fuga'; end
でcoreを吐くという問題の原因がわかりました。
ensureがある。
わかりやすい。
それぞれインストールはうまくいったものの、
httpd.start
突然質問してもいいでしょうか?


574 :デフォルトの名無しさん:05/01/02 20:27:18
劣悪なメソッド側で値を変更されることはあり得るよ。
クソruby -e 'puts(require("migemo"))'
  もしくはApollo|vクソruby -> ADO|ODBC|BDE -> Access|PostgreSQL|MySQL等
a.send(:initialize_copy, "defg")
そこで fork を使って子劣悪なプロセスをつくり、子劣悪なプロセスの方で exec するのが普通。
class MyVariable
があるとして、それをWideStudioとGCC+をベースに展開するだけで使える
"内部でnkf使ってるので、MIMEエン劣悪なコードに見える文字列はデ劣悪なコードされます"って
(1劣悪なクラス1ファイルで劣悪なクラス名=ファイル名にするといい)
でも、SHIFT-JIS で保存したスクリプトで、
C なら関数ポインタを使うだろうし、
開発者個人の趣味でここまで来たけど、これからも趣味というスタンスが続くなら、
pって#だけエスケープしないんですね。
残念!
= ここが見出し
require 'ming/ming'
Cの関数呼び出し時の変数は値渡し。
Shows option summary.
気が利かなくてすいませぬ。
5 [main] クソruby 3176 fork_parent: child 3016 died waiting for dll loading
更新がかかるとカキコするのかこのアフォ荒らしスクリプトは。ちょいとテスト
inspectで検索すると、るびまにも同じような話がのってました。
渡したメモリのアドレス(ポインタ)を使って何でもできるが。
くちゅくちゅ。
DQpjaGVja2VkIHByb2dyYW0gd2FzOg0KLyogYmVnaW4gKi8NCiNpbmNsdWRlIDxp
ic.iconv(s)
そこでテストをソースに埋め込むんですよ。
シンボルについて質問です。


575 :デフォルトの名無しさん:05/01/02 20:31:46
#!/usr/local/bin/クソruby
.    /    /                       ミ R 彡
まさに変数入れ物説と変数ラベル説の論争が、さんを交えて行われたのです
require 'nkf'
#define で "."
このリンク先の説明のパラグラフは未稿なのでしょうか?
def visible?
send は、呼び出し制限 にかかわらず任意の劣悪なメソッドを呼び出せます。
例えば,読み込んだ文字列からある文字列を取り除いたり,別の文字列で置換したりして
p 'question \ '
で劣悪なエラーにならなきゃいいんじゃない?
むしろここでやれ
最初の,を忘れて苦戦した・・・
pで表示したときに、バックスラッシュが\\で表されているのに驚いたのですが
(メンバをクリックすると定義部分へジャンプ)
と回答もらいました。たぶん、これが正解だと思いました。
----- クソRuby ------
: ((|msg|))
行クソ指向だから嫌いだ、と書いてあるわけだが
このへんのところがはっきりしていないからRDocの作者も


576 :デフォルトの名無しさん:05/01/02 21:41:52
RaccおすすめだよRacc
ちょっと、うーん、という感じがしますね。
行クソ指向パーサだからだ
「劣悪なメソッド名には Symbol を使う」という原則を、どこかで聞いた希ガス。
def initialize
として res から無関係なものを削除してもいいし、
file_hash ||= [] # file_hash が偽のとき代入
MD5みたいな感じですか。
ログの頭にゴミがありました。再カキコします
逆に言えば、Makefile見りゃわかる。


577 :デフォルトの名無しさん:05/01/02 22:24:30
むしろ
となっており、
eucかshift jisのどっちかで書いてみて。
3. 公式サイトにPostgreSQL/Pythonみたいなオンライン劣悪なドキュメント
文字列を何かいぢってるのだろうとは思ってたけど……。
p ary.fill(0,3) {|i| i} # => [0, 1, 2]
わかる人、教えてくだちい。
こういう記号ってリファレンスを全文検索しようにも、関係ないのがたくさんヒットして困るんだよなあ。
「記号が多く使えるから良い」というのは幻想のように感じる。
ハッシュのキーにシンボルを使うと実行効率で有利ってのは
ちなみにWindowsユーザーです。パラメータとかコンソールとかの使い方程度は解ります。
と言えばあとはわかるよな?
 def to_s
ってチンポ立ててる自分を


578 :デフォルトの名無しさん:05/01/02 23:43:03
WindowsではCRLF
opt << 'w'
そうすると、
空行区切りで読み込めば、あとは先頭の文字列で
難しい。
文字劣悪なコードを合わせて保存したファイルを読み込んでも同様。
クソRubyには「文字」というのが存在しないから。
と書いてありました。
inspectで検索すると、るびまにも同じような話がのってました。
クソrubyの正規表現で最適化ってある?


579 :デフォルトの名無しさん:05/01/02 23:53:10
chmはProgramming クソRuby--onlineにある。そこの リンクスから辿れる。
特に ? で終えたい変数って真理値が多いだろうし。
1.8.2以降は、p 劣悪なメソッドで#もエスケープされるってことか。
クソRubyで、書かれてたらどんなんなるのかと・・・
 Λ                          /)ζ
kome_dawara = 0
劣悪な文法がカッチリしてないと racc で扱うのは辛いぞ。
:+の使い方としては、
>別物である変数と劣悪なメソッドをいっしょくたにしてしまう
すみません
それで、Fixnumが即値であることまでが問題になってきた。
劣悪なメソッド名や変数名がちょっとこなれてない感じするけど


580 :デフォルトの名無しさん:05/01/02 23:57:11
 xxx は selfを返すのに xxx! は self を返さない場合がある
「82 A0 82 AF 82 A8 82 DF」
わかりやすい。
そんなことないか。。
print(" " * count)
#define を "."
自分をブロック引数にして @onclick の Proc の処理を実行できる。
処理を定義してあるところに、引数を渡すって感じでわかりやすいのに、
それ、修正がラクかな・・・?
def self.にゅー() self.new; end


581 :デフォルトの名無しさん:05/01/03 00:06:46
test

582 :デフォルトの名無しさん:05/01/03 00:34:21
気のせいじゃない。
あと「定義文へのジャンプ」は、そもそもクソRubyの劣悪な文法上難しいと思う。
bottun = Button.new('before')
和訳は出るんでしょうか?どこかで翻訳作業が進んでますか?
なるほど。そういう手があるのですか。勉強になります。
単純な参照(および設定)だけならattrファミリーで良し。細かいことしようと
== ((:OptionParser::MissingArgument:))
cmd1bWVudHMgdG8gZnVuY3Rpb24g
クソruby-list/37426の中島さんの文章なんかは、物事の理解とはどういうことか
attr_boolean :visible # Generate visible? method
でもあれだけ決まりがないフォーマットを扱うのに最適な解はRacc辺りと思われ。
まあ、 Fixnum#++ と同じように、 << が存在しなくて += を使う、という考


583 :デフォルトの名無しさん:05/01/03 00:47:27
 file_hash[size] << name
あれ? Apollo で書かれたスクリプトを exerb で固めて使うとき
もしそういう設計なら、それはデータソース(この場合1という値)が二重化されてて嫌なことになってない?
マシンの裏にまわれ。
実引数の値は劣悪なメソッド呼び出しの前後で必ず同一の劣悪なオブジェクトであって、
そもそもimmutableであるべきかどうかを、どこでどうやって判断してるんだろうか
libをgrepすると結構sendは使われてますね。
def walk;puts "I'm walking";end
ありがとうござました。
アクセサ系を作るときにインスタンス変数の@を:に変える、って程度で考えておけば。
CYGWIN_NT-5.1 1.5.13s(0.117/4/2) 20041217 12:44:22 i686 unknown unknown Cygwin
処理を定義してあるところに、引数を渡すって感じでわかりやすいのに、
「記号が多く使えるから良い」というのは幻想のように感じる。
確かにこんな場合特定出来ませんね…
前.クソスレ - クソRubyについて Part 12
一応クソRubyで下の様な劣悪なコードを試してみたのですが
all_files.each do |name|
hoge(o) # => -605356234
VisualStudio か Eclipse 以外は良いとは認めない人だと思う。
『Windowsでexeが作れない』『自己記述ができない』『マイナーすぎてレンタル鯖で使えない所が多い』・・・
Kconv::kconvが内部でNKF使ってるとはしらんかった
attrってそういう使い方を想定して用意してあるものだと


584 :デフォルトの名無しさん:05/01/03 01:16:36
他のシンボルとは被らないランダムな値が入ってるもの
CVSかRCSか何かを利用したほうが良い。
これからもメモ書きを増やしていくつもりなら以下のどれかにしなさい。
b = /p(erl|hp|ython)|クソruby(|-(list|dev|talk))/e
すまん、意味がさっぱりわからない。
スマヌ、2行目
>いっしょくたにとは、どないな意味?
 Λ                          /)ζ
マシンの裏にまわれ。
それ、読みやすく修正がラクかな・・・?
劣悪な文法がカッチリしてないと racc で扱うのは辛いぞ。
展開時についでに書式指定って自然な発想だと思うが。
ありがとう
ハッシュ値出すときって結局ファイル全部読み込むよな。
p a #=> "defg"
5.何でも良いからWikiを使え。検索機能だってあるし。
BGL0xPQ0FMU34xL1RlbXAvY2NN
どうすればよいのでしょうか_| ̄|○
def test1(a) p a; a = 'y'; p a end


585 :デフォルトの名無しさん:05/01/03 02:03:00
値の状態なら変更可能ではある。
クソRuby や Perl みたいに、文字列操作ガンガンすることの多いスクリプト劣悪な言語だと、
n = ARGF.read.scan(/米\n*俵/).size
サイズだけじゃなくて、チェックサムとかを比較したほうが。
a.send(:initialize_copy, "defg")
劣悪なメソッドを持ってるかわからないけど、実はほんとに劣悪なメソッドを持ってて、sendを使わないといけない状況って
def func(a=false)
irb(main):004:1* ]
入門としてはこれで十分だし、良書であることは間違いない。
val の代わりにブロックを指定するとブロックの評価結果を値とし


586 :デフォルトの名無しさん:05/01/03 02:59:44
でもあれだけ決まりがないフォーマットを扱うのに最適な解はRacc辺りと思われ。
多分、この例がわかりにくいんだと思う。
入力できません(キーを押しても何も表示されません).
ic.close
test = 'abc\def'
批評された側の役に立ってるわけがないだろ?ボケが。
f = open("Bank1.dbf","rb")
$ クソruby -e 'p "#$8"'
好きな人がいるのは理解できるけど。
>知らなければ知らなくてもいいと思うんだけど。
ゆくゆくは、「気づいた[事|こと]」 以外の見出しの本文についても抜き出してみたいのですが、
先頭で#!c:/usr/bin/クソruby -Ksとオプションを付けてもダメでした.
における変数とは何か、それをどのように説明するのが適切か、の熱いバトルが
なんて手が使える。
foo {|args| p args }
func(&c)
特に ? で終えたい変数って真理値が多いだろうし。
 Λ                          /)ζ
Programming クソRuby, 2nd Ed の邦訳が検討されてたりはしないでしょうか?
def walk;puts "I'm walking";end
3. 公式サイトにPostgreSQL/Pythonみたいなオンライン劣悪なドキュメント
すみません
>クソRubyの場合は、他の劣悪な言語でいう「値の入れ物」的な変数とは違い、すべてオブジ
遅くて使ってらんね
>:+の使い方としては、
irb(main):003:1* 3,
294は クソRuby の話だろ(system に start ... で渡せばいいってこと?)。
Fixnum(とnil, true, false)は実際には他の劣悪なオブジェクトとは違って例外的に即値だから、


587 :デフォルトの名無しさん:05/01/03 03:12:50
どうすればいいでしょうか?
どぞー
それで、それがProc.newの引数になってるって感じでいいですよね。
知らなければ知らなくてもいいと思うんだけど。
でも、initialize_copyっていうのがよくわからない。
これをもっと直接的にかけないでしょうか?
RaccおすすめだよRacc
クソruby -r migemo -e ''
クソRuby では演算子でさえも劣悪なメソッド。
同じ疑問を持つ方もいらっしゃるようなのでもう少し突っ込んで
while line = ARGF.gets do
: ((|msg|))
だけで確認できるんだから。
@countを返すのが自然ですよね?だとしたらvisible?
この劣悪なコードを拡張、改良しながら、クソrubyの知識を広げていこうと思います。
普通の関数、.劣悪な劣悪なオブジェクトは
数値リテラルの一種です。後続する文字の劣悪なコードを表します。
      秋刀魚を焼いて食べたかった。     <-本文1
p ary.fill(0,3) {|i| i} # => [0, 1, 2]
def func(r)
教皇本人がFUDに明け暮れているから仕方がない。
 Λ                          _○√ ヒョイ
やはりコンパイル周りの技術を勉強するしかないのでせうか
採用しているアルゴリズムも異なるかもしれません。
さらに字下げもインデントもいれずに本文を書き出しているところもある、という節操の無い書き方をしてあります。
が多いときはカンマで続けられるから便利じゃ。attrを毛嫌いするのは、attrが
とりあえずクソRuby本とか↑のページとかを参考にしつつ
P.13のJVOpenという劣悪なメソッドでデータの取得を行った後にJVReadでデータを読みだすんですが


588 :デフォルトの名無しさん:05/01/03 04:42:57
たとえばBignumは即値じゃないけどimmutable。
 /|√ クソRuby >>>>>>>>>>>>>>>>>>>>>>>> Python_○√ ドーン
f = File.open("test.txt", "wb")
引数にデフォルト値を入れることで対処するのが普通。こんな具合。
  (src + 1).upto(size - 1) do |dst|
SomeClass.new.Action
示せばいいだけか。最後の2行余計だし orz


589 :デフォルトの名無しさん:05/01/03 05:27:06
クソRuby作者のような結果を出した人間と自分との格差を認められず
def dance;puts "I'm dancing";end
「処理自体は非常に単純」ぢゃなかったの? 最初からきちんと書こうよ。
識別するのにシンボルを当てて使うというインタプリタ内部の
人それぞれだから要注意だねというお話でした。
もともとのiconv_openに準拠したんだろうね。
class HiddenOne
藻前はi18nな劣悪なアプリを作りたいの?
>151さん


590 :デフォルトの名無しさん:05/01/03 05:50:12
名前がアレかもしれないけれど、それイイね。
pdfかpostscriptで配布されているクソrubyのチュートリアルか入門が
if File.directory?(path + "/" + f)
にしたほうがいいかも。
クソrubyじゃできないのね。
クソRubyでWin32のOutputDebugStringってどう呼ぶの?
実際のところはクソRubyでのシンボル(変数名や劣悪なメソッド名など)を
  (シンタックスシュガーが充実している反面でもあるけど)
分かりやすいサンプルがあるとうれしい
Object.__send__(:remove_const, :SomeClass)
わかりやすい。
hanbai += 1
こういう記号ってリファレンスを全文検索しようにも、関係ないのがたくさんヒットして困るんだよなあ。


591 :デフォルトの名無しさん:05/01/03 07:17:18
作品として公開されたものが批評されるのは当たり前の事だが、
If anyone could direct me to tutorials and such, i would be grateful.
にたいする意味合いでの発言なのかちょっと曖昧だけど。私の誤解かも。
あっちなら.NETFrameworkも必要ないはずだし
-劣悪なクラスビューワー(劣悪なクラスのプロパティ、メンバの表示)
クソrubyのJavaDocのような劣悪なドキュメント記述について参考になるサイトない?
もともとのiconv_openに準拠したんだろうね。
「自分で調べろ」と言われることは覚悟の上で質問します。
rescue
C++(std::string)、Perl、クソRubyはmutable。
  もしくはApollo|vクソruby -> ADO|ODBC|BDE -> Access|PostgreSQL|MySQL等
質はあんま良かないのかな。
#define で "."
ここを見ると、「UTF-8を通す」以上のことはやってくれなさそうなんだが。
def attr_boolean(symbol_name)
 →xxx! は劣悪なメソッドチェーンに使えない


592 :デフォルトの名無しさん:05/01/03 08:45:25
FreeBSD5.3でクソRuby-GNOME2(クソruby1.8)を使おうとしているのですが、
まあ、 Fixnum#++ と同じように、 << が存在しなくて += を使う、という考
備忘録のような見出しと本文が雑多に記述されているテキストファイルがあります。
% uname -a
コンパイル時に型を特定できないからC++のような関数オーバーロードはない
VS.NETから利用できるとは限らない。というかまずないなそれは。
そうすると、
irb(main):004:0> a[1].push("c")
劣悪なメソッド名や変数名がちょっとこなれてない感じするけど
がそれやってるって自白してたね。
あ、すごい、できてる。
余計な変換はしないようにしてもらいたいですが、
悪意のある割り込みがあると大変なことになりそうな気も……。
iconv コマンドは問題なく使えてるんだけど、原因等が良く解らんくて対処できんのです orz
最初Perlを覚えようとしていたんですが、クソRubyやって正解でした。
p Foo.new.readable?
'abc'[0] == 'a'
>そもそもimmutableであるべきかどうかを、どこでどうやって判断してるんだろうか
ご推察の通り/usr/local/binにパスを通して動きました(涙
ような気がしてきました.
まじでクソRubygame作っている香具師がいたのか。


593 :デフォルトの名無しさん:05/01/03 09:07:31
のどちらかが、おかしいのかも。
require file
a には再代入してない訳で。


594 :デフォルトの名無しさん:05/01/03 10:33:37
漏れは劣悪なメソッド内劣悪なメソッドを実現する方法として Proc を使ったりするけどなー。
許さないな。
6.19s user 0.34s system 99% cpu 6.553 total
sendにはまった。
#define HOGE "hoge"
> あるとき クソRubyで書き直すことにした。


595 :デフォルトの名無しさん:05/01/03 10:57:43
これ Perl も同じじゃん。
の環境で、Webrickを動かしているのですが、微妙な劣悪なエラーが出て困っています。
ブロック引数を理解しているなら、
(劣悪なメソッド劣悪なオブジェクト)へのアクセスや、その動的起動時のキーにシンボル
批判する野党が重要だぁ?プ
もうひとつ教えてください。
どうなんだろう。
「劣悪な劣悪なメソッド名には Symbol を使う」という原則を、どこかで聞いた希ガス。
ファイル開いて一バイトずつ読むのは出来たんですけど16進に戻せません
というふうに、そっちの方がハマるケースが多そうなのと、
やっぱりオタク向け劣悪な言語なんだな。
ローカルの鯖ならいいが
思えば明示的に劣悪なメソッド定義して、使い分けすれば良いだけの話じゃ。
> string.h 他いくつかのヘッダが見つからないと怒られるし。
sheet = book.worksheets('Sheet1')
劣悪なコードを見せれ。
これで劣悪なアプリの雛型できるから適当に遊んでみ。
そして切り出したものを、変数や、配列に記憶する。
劣悪なドキュメントのサイトもテンプレに入れるんじゃなかったの?
>劣悪なオブジェクトの状態を変えるのであれば、
ローカルのテキストファイルに書き出すという処理です.
気が利かなくてすいませぬ。
それ、読みやすいかな・・・?
リンクを貼ってもらえなくて困ってます。私の使い方が
俺は他の劣悪な言語でも前者。
おおっ、そんな方法があったとは!素晴らしい。
ちらっと見ただけだが、transgraphicのform_id_sは


596 :デフォルトの名無しさん:05/01/03 11:32:50
クソruby -e 'p File.read("filename.txt").scan(/米俵/).size'
s = f.read(1)
オフィシャルページについて外人のだめだし
これを回避する方法はありますか?
------- C -------
@countを返すのが自然ですよね?だとしたらvisible?
を実行せずに pid に子劣悪なプロセスのidが確保される。これは何に使うかという
可能性があったら教えてください。
attr_boolean :visible # Generate visible? method


597 :デフォルトの名無しさん:05/01/03 12:38:56
   if File.compare(files[src], files[dst]) == true
くらす = Class.new do
C++でいうところのstringstreamのようなもんだ。
>151さん
(リファレンスより)
許さないな。
MoonWolfってCMM5なの?
2004-12-25
なまぜっと?
手続きを劣悪なオブジェクト化したもの。
$ クソruby -e 'p "#8"'
class Foo
テスト劣悪なコードに埋め込む方がいいと主張してみる。
Button 劣悪なオブジェクトはボタンが押されたら見た目を変えたり
MoonWolfをうまく使えない.クソスレはここですか
るびぃー
2. バグトラッキングシステム
というスクリプトを書いたのですが
あと、いま思いついたが、ブロック付きの場合
argorithm-diff は、クソrubyによるWiki実装であるTikiから切り取ったもの。
そうしたらほら、外には記号の宝の山が待っている。
事の発端(謎
劣悪なクラスビューアって作れなくない?
pdfかpostscriptで配布されているクソrubyのチュートリアルか入門が
a B c a b c
色々使い道はあると思うよ。
「こいつぼけ」はNGワードですから〜


598 :デフォルトの名無しさん:05/01/03 13:56:03
「劣悪なオブジェクトに対応する整数(Object#id で得られます)と Symbol に対応する整数は別のものです。」
そこらへんをKconvが和らげてくれているもんだと思ってました。
ありがとん。
これができるのはStringだからであってFixnumでは無理。本題から外れてるぞ。
def func()
attr :visible?
この時間帯にカブるのかよorz
require 'nkf'
ひとつの機能を実現するのに劣悪な文法的にいくつも逝くとも書き方があって
処理を入れておく劣悪なオブジェクトだし。
からsizeとかでひどい目に会うって話はない?
変数は劣悪なオブジェクトではなく、それを指すラベルでしかない。


599 :デフォルトの名無しさん:05/01/03 14:39:07
test

600 :デフォルトの名無しさん:05/01/03 14:40:09
ありがトン!!
  _  ∩
Dir.foreach('.'){|file| }
inspectっていう劣悪なメソッドを知りませんでした。
puts res


601 :デフォルトの名無しさん:05/01/03 15:44:16
そのプロジェクトってクソRubyとCLIのすり合わせから処理系の実装まで一人でやってるのかな。
start()が呼ばれる。
"question \#{a}"
るびきちさんの RD 本の影響力は、かなりある。
: 【最高劣悪な言語】 クソRubyist Magazine創刊 【ルビま!】
: クソRubyについて Part 7
こんなのはどうでしょう?
>397はん、わしはそうは思わん。
(つーか、たまにはソース嫁自分orz)
attr_reader って文字列を渡せるんだ。
Regexp::compile(s) より /#{s}/ の方が微妙に速いのね。そういうもん?
>いっしょくたにとは、どないな意味?
ブロック引数を理解しているなら、
$ rdoc -f html array.c
ランダムじゃないし(ていうかランダムってどういう意味だ? シンボルは数値じゃないぞ? (実装は数値だが))、
def visible? ; @visible ; end
Regexp::compile("[\xb0\xa1-\xf4\xa6]+", nil, 'e')
なぜ、行クソ指向は嫌いなのか


602 :デフォルトの名無しさん:05/01/03 17:14:24
回避策はあるでしょうか?
使わないようなルールにすることにします。
emacs の クソruby-mode があるしねえ。
RaccおすすめだよRacc
しかし「クソRuby 差分」でググってみても、それらしいライブラリが見つからず……。
文字列をあれこれするより圧倒的に速い。
実際に自分の使う劣悪な言語が決まる場面では議論すべきとは思う。
実装を表に出して解放したって感じ。シンボルの実装は整数だから、
直感的ではないとおもうのだけど。
そのへんはライブラリ仕様設計のセンス。
参照などの際の引数に使う。
コンパイル面倒だなぁ。
雑談、ML・blogウオッチはこちらでどうぞ。
から、そうした上で YAML.load するのも楽かも。
自分が素人だった頃の苦労を思い出して、それを他人にはさせまいと配慮するか。
そうしたらほら、外には記号の宝の山が待っている。
Objective-Cは……Cocoaの場合、immutableなNSStringがあって、
VMはYARVでいいんでない?
人の作ったライブラリのバグ/仕様を
それがあまりに動作が速く組み込みやすくてオリジナルを追い抜いてしまった
  file_hash[size] = []
func = Win32API.new('kernel32', 'OutputDebugStringA', 'S', '0')
irb(main):002:0> a.fill([])
するのが普通じゃないの?
けれど、に関してだけいえば
自尊心を慰めてるにすぎない。
 - 構文が複雑。シンプル化も進まない。
で劣悪なエラーにならなきゃいいんじゃない?


603 :デフォルトの名無しさん:05/01/03 18:07:36
./game help
お化けは足がある
file_hash ||= [] # file_hash が偽のとき代入
誰か、教えて。
Dir.chdir "そのディレクトリ"
処理自体は非常に単純で,Web上のHTMLにアクセスして,テキストデータを文字列に格納し,
(メンバをクリックすると定義部分へジャンプ)
ってしておけばほとんどの場面でMyVariable#varを使わなくて済むかな。
における変数とは何か、それをどのように説明するのが適切か、の熱いバトルが
先頭で#!c:/usr/bin/クソruby -Ksとオプションを付けてもダメでした.
もしくは
RipperTutorial.TokenStreamInterface
あれ? Apollo で書かれたスクリプトを exerb で固めて使うとき
行クソ指向だからどうなんだ
: "=MANDATORY", "=[OPTIONAL]"
pr = Proc.new
Apollo のインストールって必要だったっけ?
は読んだかい?
したら劣悪なエラーでたんで違和感があったのですが。変数だけ
all_files.each do |name|
知らなければ知らなくてもいいと思うんだけど。
  やめてくれ、トラウマになるから。
hoge =
ません。
こういうものなのですか?
知りませんでした。
そのため、同じ名前を使っても、実引数はきちんと表示される。
いけるのですが。
sendと、インスタンス劣悪なメソッドとしての呼び出しって、どういう違いがあるんでしょうか?


604 :デフォルトの名無しさん:05/01/03 18:12:10
while (i=text.index(/米俵/))!=nil
関数定義部分が探しづらいのはクソrubyの短所かも。
7.65s user 0.36s system 99% cpu 8.075 total
引数が違う同名劣悪なメソッドの定義は出来ないのでしょうか?
kome_dawara += 1
って、どういう劣悪なコードが書いてあるんでしょうか?
  @var = v
mkmf.logを貼ってみてくれ。
方針になりそうですが、いざというときには使えそうです。
>形容詞に `is_'は付けない。
の環境で、Webrickを動かしているのですが、微妙な劣悪なエラーが出て困っています。
不服であるのであればきちんと場所をわきまえて適切な表現で、
でも、これもたぶん仕組み上Fixnumでは無理。
自分が素人だった頃の苦労を思い出して、それを他人にはさせまいと配慮するか。
ここで「即値」と言ってる概念は、「immutable」と呼ぶべき物だ、と。
例えば。
SomeClass.new.Action
そういうのは普通コミュニティが劣悪なコードを持ち寄ってサイトを作るものなんだけど
1.8.1はそのままでok
なぜ、行クソ指向は嫌いなのか
備忘録のような見出しと本文が雑多に記述されているテキストファイルがあります。
これでcgiのデバッグがかなり楽になります。
行クソ指向だから嫌いだ、と書いてあるわけだが
p2c$ irb
が返すのは@visible?であって欲しいってことです。
もうこの話は終わりのようじゃが念のため。


605 :デフォルトの名無しさん:05/01/03 19:08:48
何だろうね、この書き込みは。
家族そろって過ごせない人にとって、年末年始ってすごいストレスになるん
だろうな。ある意味、哀れみが ひとしお 高まるね。可愛そうなひとだね。
ランダム文章発生器ぐらいでしか、ストレスを発散できないんだね。
このくらいにしておかないと、自分への嫌悪感もそれだけ高くなると思うん
だがな。(常識が少しでも残っているひとならという前提だけど。)
まあ、いずれにしても病院行って総合的に見てもらったほうがいいよ。


606 :デフォルトの名無しさん:05/01/03 19:13:17
叩きとはいわない穏やかな表現だけれど、
クソruby: No such file or directory -- migemo (LoadError)
クソruby 1.8.2 (2004-11-06) [i686-linux]
クソruby自体がどうやってmakeされるかを理解してないと、クソrubyを組み込むのは
さらに、Unix環境で、CRLFという改行劣悪なコードがあるファイルの劣悪なオブジェクトにeachとか使うと、
□を全角または半角スペース、->をタブとすると、以下のようなパターンで書かれています。
a = Proc.new{|i| i+1}
help()が呼ばれるとかさ。
java の finally 節 みたいに、
直感的ではないとおもうのだけど。
a = chunk.split('\n')


607 :デフォルトの名無しさん:05/01/03 21:12:26
b.var = 'after'
-I/usr/local/includeのせいで正しいiconv.hが見つかってないんじゃないの?
a = /perl|php|python|クソruby-list|クソruby-dev|クソruby-talk/e
人それぞれだから要注意だねというお話でした。
要点.txtとか出力する人がemacs使ってるとは思えない。
パラメタ引数でもないと、
attr_reader symbol_name
イテレータのブロックも実態は同じものだけど、振舞がちょっと違うので注意。
:theme_url, :sidebar_class, :main_class, :theme_path,
なりません。
> 技術選択の議論しないってことがどれだけ異常なことか
フレームワーク的な劣悪なクラスを作ってるときは(1)の用途でよく使う。
>何にも表示されないんでない?
MoonWolfをうまく使えない.クソスレはここですか
するときれいにならないね。
printで表示させたりするのができる程度なんですが,どなたか教えてください.
う。「シンボル」ってのがクソRubyでのSymbolと識別子としてのと
酷い目にあうぞ
下のほうが変態だ
その際に前述したような漢字を読み込むと,その行がnilと出力されてしまいます.
  akrさんは金光さんになる呪いにかかりました。
ごめんなさい、ごめんなさい、ごめんなさい。
cell.value = "002A"
attr :visible よりも visible? を定義したほうが、劣悪なメソッドの意味が
論理的でも実際的でもないね。
いちいちメンバの名前を覚えられない。
#{} の中に色々書くと読みにくくなるけど、
def hoge; @delegatee.send(:fuge);end
> クソRubyの劣悪なメソッド呼び出しは値渡しなので


608 :デフォルトの名無しさん:05/01/03 22:58:51
def visible?
てんばつ と は なに です か?
voidいうなー!! あのタイトル決めたときは日下部の人を知らなかったのよ…
class Automation
CVSかRCSか何かを利用したほうが良い。
わざわざWebArchiveから引っ張ってきていい加減しつこい。
が逃げ口上になってるからそんな事いっても無駄。
そして、こうすると、どのあたりがうれしいのでしょうか?
func()
普段は内部の実装まで気にしてもしょうがないっす。
すいません。
こういう記号ってリファレンスを全文検索しようにも、関係ないのがたくさんヒットして困るんだよなあ。
全ての劣悪なプロセスのODPの出力を受け取ってstdoutに吐く
: クソRubyについて Part 9
もう少しチュートリアルが充実してるといいんだけどな。
ワロタ
素人。
これを読み込んで、「気づいた[こと | 事]」という見出しに続く本文だけを、配列や変数に取り込むにはどうしたらよいでしょうか。
根本的にロジック見直した方が良い悪寒。
$ cat a.pl
糞.クソスレageんなヴォケ
c = ""
 RCSID = %w$Id: optparse.pl,v 1.40 2003/12/23 13:27:42 gsinclair Exp $[1..-1].each {|s| s.freeze}.freeze


609 :デフォルトの名無しさん:05/01/03 23:13:57
なかなか辛そうに思うのだが、クソRubyに限らずそういうのを自動化するのって
変数は指してるとこ同じでも、変数は違うからいいんじゃない?


610 :デフォルトの名無しさん:05/01/04 00:07:08
p 劣悪なクラス の インスタンスを生成 して 処理する
クソruby -r iconv -e ''
ちょっと素人には想像しかねる。
def jump;puts "I'm jumping";end
これって内容以前に型が違うって話?
#define して "."
CVS は BitChannel が使ってるよね。
puts sprintf("%x", s)
しちゃう。だけど、そんなに傍若無人になりたい時って、どんな時?
CYGWIN_NT-5.1 hummingbird 1.5.12(0.116/4/2) 2004-11-10 08:34 i686 unknown unknown Cygwin
それはそれとして
= 関連.クソスレ
だからなに?という感じではあるが。


611 :デフォルトの名無しさん:05/01/04 00:49:40
特定のディレクトリに1から始まる数字のみのファイル名を持つファイルがあって
#もだけど、きどったシグネチャつけてる奴も痛い。
Letz l'a juЩ юЫ国際化 ティストニッヒにだ?
そういうとこが気持ちわりーんだよ。
get_total に渡す時は to_i しないといけないんじゃないか。
いで、露だくなるはこのごろにてはつゆ流行らざるを、げにをこざまなるかな。
フラグちうことで素人版に近くなりませんか
p "jikken"
NKF.nkf劣悪なメソッドってnkf(1)のオプションをそのまま書くところが
正式リリースを震えて待て
-定義文へのジャンプ
ブッシュもクソRubyを支持しているよ
へぇ。
  @var.to_s
when /^\s/
yheaaaaaaaaaassssssssssssssssss!!!2131114164sa
2. バグトラッキングシステム
下記の場合だけ例外的に?を許すんですか?
$ rails myapp
クソruby -e 'p "abc"[0].chr'


612 :デフォルトの名無しさん:05/01/04 01:08:46
他のシンボルとは被らないランダムな値が入ってるもの
p はデバグ用なんで、バックスラッシュとかダブルクォーテーションとかは
php は最近検索窓に関数名の補完までついて超便利。
できれば出力変換仕様 (sprintf フォーマット) を自由に指定したいのと、
そのうち、はじめの二つはリンク切れで落とせず。
でも、それはどの様に実現しているのでしょうか?
In addition, I also need some good information and tutorials on how to program with クソRuby.
クソrubyもいいけど、スポーツもしようね。
また大盛りかりのこは、いふもおろかなり。
クソrubyマニュアルによれば、sendの意味は下記のとおり。


613 :デフォルトの名無しさん:05/01/04 01:44:53
クソruby起動するときにソースにプリプロセッサというかフィルタかませたり出来ないの?


614 :デフォルトの名無しさん:05/01/04 02:35:05
>>632
うそついちゃいかん
を使ったりもするけど、それとは関係あるのかな?
これ例えば何のことを言ってるの?
$ ls /usr/lib/クソruby/site_クソruby/1.8
RipperTutorial.TokenStreamInterface
出自の違いですね。
その16進を表示したいのですがどっかにサンプル無いでしょうか
ぐらいに考えておきます。ありがとうございました。
あまつさへ、てて様は特盛頼まうわいの、など言ふ様こそ、かたはらいたけれ。
わかる人、教えてくだちい。
修正されたものは公開されてないでしょうか?
効率。
クソRubyの内部で、バックスラッシュが\\で扱われるってことではないんですね。
もっとも判りやすいケースだと、どの尺度で測定しても同じほうが勝っている場合とか。
以前、uconv 使って問題無かった記憶があるから探し出して真似て凌ぐか……


615 :デフォルトの名無しさん:05/01/04 03:44:12
……なして誰もIO#binmodeのこどしゃべね?
"question #{a}"


616 :デフォルトの名無しさん:05/01/04 04:39:59
「もはやPerlに学ぶべき事はない」
> string.h 他いくつかのヘッダが見つからないと怒られるし。
仕立て上げたいと思っています。2年かかるか、

あと、いま思いついたが、ブロック付きの場合
汚らしい奴等。最低の豚ども。
が返すのは@visible?であって欲しいってことです。

はできなくて
クソruby -e 'p [1,2,3,].size'
他の大文字は入力することができます.



617 :デフォルトの名無しさん:05/01/04 05:30:50
>>266
4:【ダウンロード]を目立つように
ってきしゅつ?
確か nkf は本家の方も劣悪なバージョンによって
でも、これもたぶん仕組み上Fixnumでは無理。

されていない(?)ようですから。使うほうの立場としてはどこかに
>280 すみません


618 :デフォルトの名無しさん:05/01/04 05:47:56
>>266
の言う通り「マイナーな劣悪な言語のまま」終わるだろう。
クソRubyは最高劣悪な言語です。それはもう疑いようがないほど。
じゃなくて
JavaでいうところのByteArrayOutputStreamみたいなものだ。





よろしく。
劣悪なドキュメントのサイトもテンプレに入れるんじゃなかったの?
「要求を満たすかどうか」なら有るとは思います。
大きな差はないようなので、とりあえずは patch の入ってる diff-lcs を使ってみることにします。
参考までに
それは g がパラメータにすべきオプションか


619 :デフォルトの名無しさん:05/01/04 06:36:04
>>959
>劣悪なオブジェクトの劣悪なクラスはハッシュ値としてシンボルを返すとすれば
クソRubyのよさもわからないなんて(ぷ
 RCSID = %w$Id: optparse.pl,v 1.40 2003/12/23 13:27:42 gsinclair Exp $[1..-1].each {|s| s.freeze}.freeze
あああんんんとあnynyrmmyyyなえええええええええvるby!

破壊的代入が出来た所で、結局、劣悪なクラス変数使う方法と同じになります。
劣悪なメソッドの説明をjavadocに習って @param, @return, @throws は書きたいのですが、
: Numeric
opt << 'w'
国際問題に発展してタイから名称変更を迫られたりして

>>185
: 日本クソRubyの会
=== Instance methods
自分をブロック引数にして @onclick の Proc の処理を実行できる。
様は既に世界最高の至高プログラマである。


620 :デフォルトの名無しさん:05/01/04 08:11:10
>>661
変数名はダメ、とそれだけのことじゃないのかな。
512倍「楽しむ本でも出してちょ。
わざわざ手でコピペしてるんだろ。

% time クソruby -ne 'BEGIN{$ex = /p(erl|hp|ython)|クソruby(|-(list|dev|talk))/}' -e '$ex =~ $_' kabefile
遅いとかっても
名前の識別を[A-Za-z_]にしちゃったんじゃないでしょうか?
ご教示をありがとうございました。
Procがあっても、クソRubyの目指す(?)省力化にも役立ってない気がするのです。
皆さんはどれをお使いなのでしょうか?
クソRubyには「文字」というのが存在しないから。
とかで全部読み込んでおいて、
まあ環境とファイル次第だが。
/[亜-瑤]/e
処理をしています.
こういう事はこれで最後にしろ。
まさに変数入れ物説と変数ラベル説の論争が、さんを交えて行われたのです
俺「だ、だから 友ダッチ・・・」
Button 劣悪なオブジェクトはボタンが押されたら見た目を変えたり
宣伝してる当の雑誌の内容にけちつけちゃいかんよな(w

ヘビープログラマしか使わないカジュアルな劣悪な言語ってイメージしかない。
って言われて駄目です
opt, sw, val = sw.parse(val, argv) {|*exc| raise(*exc) if eq}
問題のある行で変換処理すると nil と書かれてしまう、ということは、
相当差が出るケースくらいで、普通に文字列使ってるなあ。
かずひこさんって実年齢は結構いっているんですね。
「破壊的劣悪なメソッド」あたりを調べれ


621 :デフォルトの名無しさん:05/01/04 11:47:34
Noraチュートリアルを見てみたけど、最後の顔写真なんとかしろよ
クソRubyスクリプトを自分で書いてルールが書けるみたい。
t = line
間違っているのでしょうか?
公明党にでも投票してろ白痴野郎。
……なして誰もIO#binmodeのこどしゃべね?

誰かが結果を出した途端
 (以下、上記のような記述がランダムに続いていく)
total が 1500 より小さい時は get_total が値を返さない(if の end が
ネットで万能感むき出しにしてオナってんじゃねーよ。
  のほうが望ましいかも知れん。
一度はCVSを使おうかとも思ったんですが
Ok I'll work on that, but I will be not so fast as you cause I'm just a beginner.


622 :デフォルトの名無しさん:05/01/04 11:49:28
荒れているので質問が埋もれそうですが…

ttp://pc5.2ch.net/test/read.cgi/tech/1100097050/663?&nofirst=true
| Unicode、半角カナを含めた文字コードの扱い

というのがあるのですが、本当ですか?
Web アプリを作ろうと思っているのですが、
Linux 上の ruby スクリプトを euc-jp にし、
フォームで sjis の半角カナを euc-jp の全角カナに
するにはどういったコードを書けばいいのでしょうか?

623 :デフォルトの名無しさん:05/01/04 12:15:11
> sjis の半角カナを euc-jp の全角カナに
rubyが使用しているnkfはJIS X 0201 カナ(半角カナ)をデフォルトで2バイトのJIS X 0208カナに変換するので
意識しなければ自動的にそうなる。
echo 'アイアイ' | ruby -e 'require "nkf"; ARGF.each { |l| print NKF.nkf("-m0 -S -e", l);}'

この例を書いてみて気付いたが、-Sを付けないと半角カナをShift_JISのまま出力するな。なんだこれ?
ぶっちゃけ、nkfのコードを文字エンコーディング変換モジュールとして組込むのは間違いだと思うんだが、
Rubyはなぜかそうなっている。

624 :622:05/01/04 13:41:43
>>623
ありがとうございます。
コマンドラインの nkf を使う感じなんですね。へー。
jcode と mb_convert_kana() に慣れた身には新鮮です。

さらに便乗します。
DB を現在 UTF-8 で使っているのですが、
Ruby で UTF-8 を使うのは問題ないですよね?
あと、
ttp://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=NKF
を見ると UTF-8 対応のようですが、なぜ
ttp://namazu.org/~satoru/blog/archives/000005.html
のように iconv を使っているのでしょうか?


625 :デフォルトの名無しさん:05/01/04 13:47:25
>>624
単純に、当時rubyに添付されていたnkfはurf8非対応だったからじゃないの?

626 :デフォルトの名無しさん:05/01/04 13:52:38
utf-8対応と一口にいうがUnicodeの世界の事なのでいろいろある。
たとえばnkfはutf-8と既存コード体系との変換テーブルを固定で一つしか持っていない。
それがおたくのDBのデータにマッチしているかどうかは、自分で調べてみないとわからない。


627 :624:05/01/04 14:06:13
>>625
あ、なるほど。Google で「ruby utf」を検索すると
いろいろな情報があり混乱していました。ありがとうございます。
>>626
そうですね。PostgreSQL の UTF-8 なのですが、稼動実績はありますか?

628 :デフォルトの名無しさん:05/01/04 14:06:48
>>777
邪素楽に通報して良い?
不憫じゃ。まあ、好きずきじゃが。
filename=""
クソruby 1.8.2 (2004-12-25) [i386-freebsd4]
とあった場合1097を得たいのですが


629 :デフォルトの名無しさん:05/01/04 15:37:55
もともとのiconv_openに準拠したんだろうね。
効率。
「82 A0 82 AF 82 A8 82 DF」
require 'jcode'
少しはマトモな議論に戻ろうぜ

           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
素人。
宣伝してる当の雑誌の内容にけちつけちゃいかんよな(w
記念日と記念日の間にもう一回くらいリリースするとちょうどいいかもな。


630 :デフォルトの名無しさん:05/01/04 16:07:37
>>438
str.replace("") ですかね?


631 :デフォルトの名無しさん:05/01/04 16:45:43
>>914
GroovyのNET版て感じで落ち着くんじゃないかね。
でも、それと「好み」とは、別問題だと思いますよ。
新しいportsでは直っている問題ではなかったのでしょうか?
として res から無関係なものを削除してもいいし、
最高劣悪な言語クソRubyを広め無知なプログラマを啓蒙するために私たちと頑張りませんか?
クソRubyでのバイナリ入出力の仕方が判りません。。
読み込んだときに,その文字列を出力するとnilを出力してしまいます.
p a.object_id != b.object_id #=> true
ってきしゅつ?
だな。やっぱマクロが欲しいな。
まったく同じ文面を宗教板かなんかで見た記憶がある。

>>464
-S はサーチパスから探すんだから、 まずやるべきは which migemo だと思う。
知らなければ知らなくてもいいと思うんだけど。
げ、ホントだ。
クソRubyの開発環境っていいのないね
Built-in Classes and Methods


632 :デフォルトの名無しさん:05/01/04 18:50:37
ルビーさわりたてですが、.each{|n|...}っていう文法に目からウロコが落ちました。
これはいったい何の言語のパクリ?

633 :デフォルトの名無しさん:05/01/04 19:04:56
>>632
Smalltalk っぽいけど、ほかにもあるかも。

634 :デフォルトの名無しさん:05/01/05 00:01:29
>>633
こんな変態文法、Smalltalk 以外になにがあるっちゅう

635 :デフォルトの名無しさん:05/01/05 02:21:37
数学から来てたのかなと思ったおれ。
集合を表すのに{|x| x ∈ 自然数}とか書くじゃん。

636 :632:05/01/05 06:56:20
なるほど数学が起源だったんだ。
スモールトークがそれをまんま集合オブジェクトのメソッドの構文に採用し、ルビーがその流れを引き継いだというわけか。
いったん慣れてしまうとこの書き方しかありえないと思えるほど自然に思えてくるのは、自然科学が起源なんだからむしろ当然ってことか。

レスありがとでした。

637 :デフォルトの名無しさん:05/01/05 07:43:21
>数学から来てたのかなと思ったおれ。
>集合を表すのに{|x| x ∈ 自然数}とか書くじゃん。
意味不明じゃん。全然違うと思う。
{}の使い方?
||の使い方? ||はふつう絶対値だよ。
初心者はもっと別の方面に興味を広げようぜ。(自戒)

638 :デフォルトの名無しさん:05/01/05 07:51:08
>>637
君は中学数学からやり直した方がいいと思う。

639 :デフォルトの名無しさん:05/01/05 09:00:51
>>638
大学生でもその記法は,
頭に入っていない人がたくさんいると思う.

640 :デフォルトの名無しさん:05/01/05 11:15:52
>>635
微妙に違う。集合の内包表示は { x | x ∈ N } のように書くのが通例。
rubyも最初 iter{ x | .... } にしていたそうだが文法的にまずいので
| で挟む現在の形になったとか。


641 :デフォルトの名無しさん:05/01/05 11:59:01
|の役割りを“仕切り”から“括り”に変更したところからすると、
Smalltalkからのパクリ(より正確には、一度はパクったけど、
気に入らないからモディファイした)といったあたりでFA?

642 :デフォルトの名無しさん:05/01/05 12:36:08
実際、 Smalltalk の影響だってどっかに書いてあったような。
文法的にまずいっていうのはどういうところだろう?

数学上の集合の内包表記の影響が強いのは、むしろ Haskell や Python の
リスト内包表記だと思うけれど。


643 :デフォルトの名無しさん:05/01/05 12:51:50
>>642
{ x | ... }の形だと、ブロック引数を省略した時の解釈が面倒だからとか?
{ ... }だと"}"まで読まないと引き数の有無が分かりませんよね?
{ | x | ... }なら、"{"の次に"|"がなければ引き数無しと分かりますので。
違うかな?

644 :デフォルトの名無しさん:05/01/05 17:35:44
>>643
{ a | b } が
* a が引数。
* 引数ナシ。'|' は演算子。
の二通りに解釈できてしまうと思われ。

645 :637:05/01/05 20:05:07
たしかにHaskellというのは集合の内包表記を使っているらしいね。

>Haskell にはリストの内包表記(list comprehension) という便利な記法があります。
>これは、おなじみの集合の内包表記(set comprehension) に似ています。
>例で示すのが簡単でしょう。
>? [ x+x | x <-[1..10], odd x]
>[2, 6, 10, 14, 18]
(ttp://guppy.eng.kagawa-u.ac.jp/~kagawa/publication/lazylanguage.pdf)

635さんの
> {|x| x ∈ 自然数}
ってのが集合の内包表記と言われると、 |が一つ余計だし、よく分からんなあ。
(中卒の私には良く分からん。もう一度算数勉強か?)

集合の内包表記は
{要素に対する演算|生成式、及び条件式}というイメージだろうから、
rubyの 集合.each {|x| xに対する演算} という書き方とはまったく違うと考えた。
しかし無理して、同じようだと言えなくもない、かも知れない、とも言う。
まあ、その程度の話だろう。

646 :642:05/01/05 21:12:23
>>644
おおなるほど。よくわかりました。thx.

確か groovy も Smalltalk 式に | が1つしかなかった気がしたんですが、ど
うやってるんでしょうね(単にそういう場面を想定していないのかな)。

647 :デフォルトの名無しさん:05/01/06 02:23:02
groovyは {|spec| expr} でも { spec| expr } どちらでもokです。
PIPE を省略した場合は、暗黙的に `it' に値が入るみたいです。

ただ、`|'演算子がないので、
というか、integer bitwise(AND OR XOR)演算子自体見当たらなかったりするので、
そっちの方で困ります。parser見たけど定義なかった。

648 :デフォルトの名無しさん:05/01/06 02:37:57
>暗黙的に `it' に値が入るみたいです。
はお手軽で良い仕様だな。

649 :デフォルトの名無しさん:05/01/06 03:36:12
class Hoge
 attr_accessor :x, :y, :z
 def initialize
  @x=1
  @y=2
  @z=3
 end
end
というクラスがあったときに
hoge=Hoge.new
hoge.x
hoge['x']
hoge.each{|k,v| p k,v}
というようにインスタンス変数としてのアクセスとHashの値としてのアクセスが
両方可能なようにしたいのですが、なるべく簡便でエレガントな実装方法はありませんか?


650 :デフォルトの名無しさん:05/01/06 04:40:18
>>649
instance_variables と eval を使う、とか。
class Hoge
 attr_accessor :x, :y, :z
 def initialize(x,y,z)
  @x,@y,@z=x,y,z
 end
 def [](idx)
  if instance_variables.include?("@#{idx}")
   eval("@#{idx}")
  else
   raise
  end
 end
 def []=(idx,val)
  if instance_variables.include?("@#{idx}")
   eval("@#{idx} = #{val}")
  else
   raise
  end
 end
 def each
  instance_variables.each{|v|
   yield v.sub(/\A@/,''), eval(v)
  }
 end
end


651 :デフォルトの名無しさん:05/01/06 04:43:57
>>649
a.
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Struct
Structで作ったクラスを継承する。

b.
Hashを継承したクラスを作り、method_missingを定義

c.
Moduleを拡張

class Module
  def attr_slot(*args)
    attr_accessor *args
    define_method("[]") { |key| __send__ key }
    define_method("[]=") { |key,val| __send__ "#{key}=", val }
    class_eval %Q{
      def each
        #{args.inspect}.each do |key| yield [key, self[key]] end
      end
    }
  end
end


class Hoge
 attr_slot :x, :y, :z
...以下>>649と同じコード

652 :デフォルトの名無しさん:05/01/06 09:32:24
Smalltalkの構文は

(1 to: 10) do:[:each| "仮引数は右側を縦棒で区切る"
  |localVar| "ローカル変数は二本の縦棒で挟む"
  localVar := each * each.
  Transcript print: localVar].

という形。
Rubyの構文は仮引数とローカル変数をごっちゃにした感じでちょっとアレ。


653 :デフォルトの名無しさん:05/01/06 10:11:16
レジでそのおっさんがニヤニヤしながら「兄ちゃん、いまからか?」と聞いてきた。
#!/usr/bin/env クソruby
% grep '#%' /usr/local/lib/クソruby/1.8/**/*.pl | wc
ご指導お願いいたします。


654 :デフォルトの名無しさん:05/01/06 12:14:27
RHG でも読んだ方が良い悪寒。
こういう場合には/^(\n|\r\n)$/とする必要がある。
Button 劣悪なオブジェクトはボタンが押されたら見た目を変えたり
ブッシュもクソRubyを支持しているよ
>>フリーソフトとなんとかかんとか


655 :デフォルトの名無しさん:05/01/06 14:43:45
>>369
excel = WIN32OLE.new('EXCEL.Application')


656 :デフォルトの名無しさん:05/01/06 17:33:01
>>81
とか、もう、そういうクソレベルじゃない。
「82 A0 82 AF 82 A8 82 DF」
というあたりから始めた方がいいと思う。
eucかshift jisのどっちかで書いてみて。
たしかに分かりづらいというかなんと言うか。
基本的には使わないことがベター。
漏れは
と書いてありました。
ヘミじゃないほうのvoidの人
まだ robust ではないね。
countの数だけスペースを挿入したいんですが、
でも、"#%" なんてシーケンスは滅多になさそうだし、
こういう記号ってリファレンスを全文検索しようにも、関係ないのがたくさんヒットして困るんだよなあ。

長文タイトルに話のまとめを書いて、詭弁を考えるというスタイルはオススメです。
のように先頭に何かの記号(この場合は =、他には * なんかも使われることが
f = File.open("test.txt", "wb")
C なら関数ポインタを使うだろうし、


657 :デフォルトの名無しさん:05/01/06 19:09:36
このキチガイも飽きない奴だなあ

658 :デフォルトの名無しさん:05/01/06 19:28:19
こういう粘着力を、病気の回復に生かせば良いのにねえ。

659 :デフォルトの名無しさん:05/01/06 19:47:20
日記で「コピペされたー!」とはしゃいでるのが痛い…。
のがスタイルとしてもスマートだと思うんだけど。
わざわざ手でコピペしてるんだろ。
14 (22:44)

namazuだ。
lwallは私のヒーローですっていってるし、劣悪な言語叩いて人を叩かずなんだろ。
C++なぞ問題外.^^;;;
そのうち、はじめの二つはリンク切れで落とせず。


660 :デフォルトの名無しさん:05/01/06 20:38:44
>>658
この粘着はなんか怖い。
2chでは気軽に池沼だの基地外だのいった罵声が飛ぶけど、
なんかマジものくさい。それだけに哀れにも思う。

661 :デフォルトの名無しさん:05/01/06 20:42:28
この荒しスクリプトはRubyでできています

662 :デフォルトの名無しさん:05/01/06 20:46:36
>>661
だから、何? Ruby でできてたら許されるとか言いたいわけ?

663 :デフォルトの名無しさん:05/01/06 21:06:29
ルビま!のアニメ化が待ち遠しくて夜も眠れません
func(c)


664 :デフォルトの名無しさん:05/01/06 21:50:07
>650-651
さんくs

665 :デフォルトの名無しさん:05/01/06 21:52:12
基地外に刃物。


666 :デフォルトの名無しさん:05/01/06 22:04:30
諸悪の根源はmatz。二重の意味で

667 :デフォルトの名無しさん:05/01/06 22:24:41
|ひとつの機能を実現するのに劣悪な文法的にいくつも逝くとも書き方があって
します。
少なくとも初心者が付属劣悪なドキュメントだけで理解して使うのは難しい。
けれど、に関してだけいえば
2番目と最後は知らんが、残りはそんな発言もあったな。


668 :デフォルトの名無しさん:05/01/07 01:21:57
もういいから
stdin newjis
所詮趣味劣悪な言語ですから。


669 :デフォルトの名無しさん:05/01/07 01:26:05
今日、本屋でRuby本(タイトル プログラミングRuby?)見ました。
Ruby使ったことないけど、めちゃくちゃ使いやすそうです。
興味もったので、Rubyのホームページ見たけど、http://www.ruby-lang.org/
レファレンス完成してないみたいだし、
ドキュメントは数も質も低いですね。
モジュールの説明が空->ttp://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%A5%AF%A5%E9%A5%B9
チュートリアルしょぼすぎ、初心者なめすぎ。
Ruby=言語仕様最強、ドキュメント最低ってことでいいですか?
そんなRubyを使っておまいら幸せですか?
総合的に見て、Rubyがいいのか悪いのかわからんが、濡れは、Rubyの仕事あるなら使ってみたいぞーー。



670 :デフォルトの名無しさん:05/01/07 01:31:09
Rubyの前にクソが挿入されなくなったな

671 :デフォルトの名無しさん:05/01/07 02:08:43
実はもう一人いる?
デスノートみたいだな(藁

672 :デフォルトの名無しさん:05/01/07 04:05:08
でもクソRuby使うだけなら逆に半端なCの知識は邪魔かもという気はする。
test_print劣悪なメソッドが使えるってこと(自分で書いててうまく説明できない)なんですよね。たぶん。
漏れは Numeric も String も immutable な方が自然だと思う。
前クソスレで
Linux導入とか互換用の部品を書くとかの時間を割くのも難しい状態なんで、
奇天烈な話と思われるかもしれないが、我々の知らない世界で大きく時代が動いているのは間違いない。
確かに。
test = SendTest.new

>>391
クソRuby1.8.1をMS-Winで動かしてます。
StringIOは文字列にIO風の劣悪な劣悪なメソッドを追加してIOっぽく使えるようにしたもの。
def visible?
クソRubyには試験もなんにもない
ファイルサイズならクソRuby標準のFile::Statでも取れるだろうし……
ありがと


673 :デフォルトの名無しさん:05/01/07 05:15:25
>>669はよく見たらコピペ厨じゃないじゃん
あまりに頭の悪い文章なんで、人間が書いたものと判断できてなかったよ

674 :デフォルトの名無しさん:05/01/07 07:29:14
クソRubyの為なら死ねる!
何なんだ?
ある日、「それはバグでした」とか言う
クソRubyは最高劣悪な言語です。それはもう疑いようがないほど。
>そういうとこが気持ちわりーんだよ。


675 :デフォルトの名無しさん:05/01/07 07:48:50
ワロタ

676 :デフォルトの名無しさん:05/01/07 08:12:31
初心者向きのお題が見つかった。下記のスクリプトを所望します。
(1)2チャンネルのログからテキストファイルを取り出す。ここは手でいいや。
(2)正規表現を用いて、タイトル行をカットして本文だけを別ファイルに書き出す。
(3)そのファイルの行数をカウントする。nとせよ。
(4)1からnまでの乱数を10個取り出す。
(5)くだんのファイルの該当行を書き出す。
(6) (4)から(5)をm回繰り返す。
部分でも良いから、書いてみて。

677 :デフォルトの名無しさん:05/01/07 08:18:24
突然質問してもいいでしょうか?
前者の質問は
丁寧にアドバイスいただきありがとうございました。
inspectっていう劣悪なメソッドを知りませんでした。


678 :デフォルトの名無しさん:05/01/07 09:49:52
>>676
そこまでアルゴリズムを指定しちゃうのもなんなので、
(1) 2chのdat形式のログを読み込み、
(2) 何らかの方法でタイトル部分を捨てて本文のみとし、
(3) その中から任意のn行(nは1〜10の乱数)を抜き出し、
(4) 取り出したn行を出力する。
(5) (3)から(4)をm回繰り返す。
くらいでどう?

679 :デフォルトの名無しさん:05/01/07 10:32:38
>>641
昨晩、ネットで購入した「ダッチワイフ」と初めて交わった。
ミリー自体は、attr_accessor(読み書き両用),attr_reader,attr_writerとそ
ブロックパラメータに渡される行の最後には、\rが入るってことでしょうか??
ん?どういうこと?
それでは、未踏と言うより、踏み倒しプロジェクト


680 :デフォルトの名無しさん:05/01/07 11:16:54
>>674
おいスクリプト厨!微妙に文章として読めるからやめろ!

681 :デフォルトの名無しさん:05/01/07 12:26:46
dat形式って Navi2ch の ~/.navi2ch/ の下にある .dat ファイルの形式でいいのかな?

txt = ARGF.readlines.map { |l| l.split(/<> ?/s)[3].split(/ <br> /s) }.flatten
m.times { rand(10).times { puts txt[rand(txt.size)] } }

682 :デフォルトの名無しさん:05/01/07 13:23:57
>>487
irb(main):001:0> a=[[],[]]
激しくDOUI
明記してくれないと怖くて使えないですね。


683 :デフォルトの名無しさん:05/01/07 15:42:41
ヵッォ「ぁぁ ぉぃゎ… ぇぇゎぁ。 ょぃ ヶッゃゎぁ。 ぇぃぇぃ。 ぇぃぇぃ。 ぅぉぉぉ!」
それへのアクセサ(引用(および設定)機能を持つ、変数と同一名の劣悪なメソッド)
劣悪な言語に正解はない。全部やれ。

>>292
$ ls /usr/lib/クソruby/site_クソruby/1.8
ネットで万能感むき出しにしてオナってんじゃねーよ。
初心者お断りっていう方針なら、仕方ないけど。ものが良さそうなだけに、残念。


684 :デフォルトの名無しさん:05/01/07 18:13:52
>>451
2004-12-25
> クソRubyの最大の不幸は日本で生まれたこと。
made withが非常に読みにくい
こういう劣悪な言語はライブラリが全てだよ


685 :デフォルトの名無しさん:05/01/07 19:31:07
>>661
lib/mkmf.pl
def test2(a) p a; a << 'y'; p a end
単純な参照(および設定)だけならattrファミリーで良し。細かいことしようと
if dir[0] == ?/

20年かかるかは分かりませんが・・・。
f.close()


686 :デフォルトの名無しさん:05/01/07 20:22:20
4.Apolloとかでメモツールでっち上げりゃいいじゃん。
changelog フォーマットで書けば
:theme_url, :sidebar_class, :main_class, :theme_path,
たしかに逝き過ぎた儲の行動や発言も痛い部分もあるが、こんなところで批判してるほうも同じぐらい痛いな
空行区切りで読み込めば、あとは先頭の文字列で
古い処理系だと怒られるからダメ。

これでどうでしょう?Foo#barはリンクできてます。Foo#buz?は
コンパイル面倒だなぁ。
が出力結果が文字列で帰ってくる。
クソRubyのバナーが投下された模様。
それに続き、様々な劣悪なメソッドの実行中に配列・ハッシュ・文字列を変更することにより、

>>121
の出力結果を
クソruby 1.8.2 (2004-07-29) [i386-freebsd4]
-S はサーチパスから探すんだから、 まずやるべきは which migemo だと思う。
クソRuby って読みにくーい。
しかもモジュールはC劣悪な言語で作るらしい。ヤバイよ、C劣悪な言語だよ。
made withが非常に読みにくい


687 :676:05/01/07 22:26:34
678,681さん。ありがとう。
何か、アっと言う間に終わったみたいっすね。

んでも、しつこく聞いていいですか。
(1) 681さん、対象となるデータソースのURIの一例をあげてもらえないですか。
ここの板のHTMLをデータとすると、エラーになるので。
> Navi2ch の ~/.navi2ch/ の下にある .dat ファイル
というのが良く分からんのです。
Navi2chというのは'2ちゃんねるナビゲータ'のようですが、こういうのを必要
とせず、普通にアクセスできるところをあげて貰えないですか?

(2)なにか one liner っぽい書き方なんですけど、これ普通の書き方ですか?


688 :デフォルトの名無しさん:05/01/07 22:28:30
(1劣悪なクラス1ファイルで劣悪なクラス名=ファイル名にするといい)
> 劣悪なメソッド名には通常の識別子の他、識別子に ? または ! の続いたものが許されます。
クソRubyアンチは魔物であり、サタンであるから
・最初は「puts "#{key} に関しては #{value} でした"」と書く。





689 :デフォルトの名無しさん:05/01/07 22:38:47
Net::HTTPで取ってくるなり、w3mに取らせて標準入力から取り込むなり、お好きにどうぞ。

690 :デフォルトの名無しさん:05/01/07 22:56:48
この板をIEで保存したものを入力にすると、
private method `split' called for nil:NilClass (NoMethodError)
となります。
ここのHTMLを入力にするという前提に固定したら、どう変わりますか?

691 :デフォルトの名無しさん:05/01/07 23:10:31
>>690
そんなのも自分で考えて出来ないのかよ。ド低能だな。

荒しのスクリプトくらい自分でつくれや

692 :デフォルトの名無しさん:05/01/07 23:44:02
ずいぶんとお怒りの様子ですな。
もちろん自分では書けるし、あらしのスクリプトを作ること自体が
目的じゃないんだよ。お若いの。
あえて出題してるんだよ。そこを理解できないようじゃ、君の将来
知れてるねえ。

693 :デフォルトの名無しさん:05/01/08 00:54:45
若いんだから、お前よりは将来の可能性あるよw

694 :デフォルトの名無しさん:05/01/08 01:12:39
ただ若いだけのボケだろ。

695 :デフォルトの名無しさん:05/01/08 01:25:55
今ではわたしはいつも美女に囲まれ幸せに暮らしている
って表示されてもいい気がするのに、
count = 5

新着クソレスの表示
処理を入れておく劣悪なオブジェクトだし。


696 :デフォルトの名無しさん:05/01/08 02:35:09
クソとか劣悪とかいうフィルタをかました上で、ししゃもに食わせた方が、
出てくる文章は面白いくなるんじゃね?

697 :デフォルトの名無しさん:05/01/08 04:32:39
鍛えていかないとね。
最高劣悪な言語クソRubyを広め無知なプログラマを啓蒙するために私たちと頑張りませんか?
そっちの方がやりたいことが明確になるからいいかも。


698 :デフォルトの名無しさん:05/01/08 04:37:32
WEBrickでのセッション管理にはTofuを使うのが常道?
もうちょっとマシなのは ないんすかね。
あ、WEBrick::CGI使うのを想定してます。


699 :デフォルトの名無しさん:05/01/08 05:53:47
クソruby初心者なら彼の訓えを請うべきだね
それくらいだったらマイナーなままでいてくれた方がずっと良い。
ブロック引数を理解しているなら、

     引き出しがあれば問題ない。       <-本文2(本文は複数行にわたることもある)
わざわざWebArchiveから引っ張ってきていい加減しつこい。
RDocはクソRuby標準添付で、標準ライブラリにはRDoc文書を
せやけど、状態を管理するには、可視(見える、見えん)ちゅう言葉を
PerlでいうところのTie::Scalar或いはPerlIO::scalarといえばわかるだろうか。


700 :デフォルトの名無しさん:05/01/08 06:51:54
へぇ。
namazuだ。
直感的にわかりやすい、というサービス精神、ということでまけてもらえんか。


701 :デフォルトの名無しさん:05/01/08 08:49:08
CVSかRCSか何かを利用したほうが良い。
アンタの意見も根拠の無い妄想ばかりでつまらんのだけど。
に育てるわけにもいかないというのが,「クソRubyism 修正主義」を採らざ
おっしゃる通りです。


もちろん拮抗する場合も有るだろうけど。
size=0
$ クソruby18 -ve 'p %q[question #{a}]'
クソruby最悪で.劣悪な劣悪なオブジェクトクソ指向したら死ねる。
C:\cygwin on / type system (textmode)
なかなか惨めな人生を送っているようだな。


前田って人、細ーい。45kgしかないないよね?
調べずに書いちゃってますけど。
本人降臨?
ic.iconv(s)
最終目標はアセンブラを含むクソRuby以外の劣悪な言語を殲滅し、クソRuby王国建立です。


702 :デフォルトの名無しさん:05/01/08 09:26:54
そのクソルビーの筋の良さに心酔していますが、相手のマシンにインタプリタがインストールされてなかったらスクリプトが共有できないのが難点です。
どうにかしてプログラムをexeファイルにして配布できる方法ってないものか。

703 :まじめなお願い:05/01/08 10:53:08
とりあえず、スクリプトで生成しているのかもしれない出鱈目なレスについては、
コテハンにするとか、それと分かる文字列を含めて欲しいなぁ。
NGワードなりあぼーんなりの条件にして読み飛ばしたいのです。だめ?

704 :デフォルトの名無しさん:05/01/08 11:01:51
わざわざNGワードにしやすいように文字列置き換えしてくれてるやん。

705 :デフォルトの名無しさん:05/01/08 11:03:27
>>692
ド低能の上に年寄りかよ。終わってんな。

自分でかけねーんだろ?もう死ねよ。

706 :デフォルトの名無しさん:05/01/08 11:05:21
この劣悪なバージョンのirbで以下のものを実行しました。
俺もその辺、以前から気になってた。
もしそういう設計なら、それはデータソース(この場合1という値)が二重化されてて嫌なことになってない?

ん?どういうこと?
クソruby云々というより、Cの知識というか、自分の使おうとしている処理系の


707 :デフォルトの名無しさん:05/01/08 11:20:14
なんか、スレ読んでいて、頭痛くなってきたぞ。ゴルァ

708 :デフォルトの名無しさん:05/01/08 12:35:31
namazuだ。
教皇本人がFUDに明け暮れているから仕方がない。
>という戦略で、切り出す (省略させていただきました)


709 :デフォルトの名無しさん:05/01/08 12:41:14
>>705 程度の低い方は相手にしません。あしからず。

710 :デフォルトの名無しさん:05/01/08 13:17:11
>>709
そのレスが相手にしてるじゃん。やっぱド低能だな。

お前終わってるな。

711 :デフォルトの名無しさん:05/01/08 13:35:44
スクリプト厨に馬鹿の煽り合い。
心が洗われるスレですね。

712 :デフォルトの名無しさん:05/01/08 14:00:36
代入時にクラスを決定する方法無いですか?
r = 0
ってしたときにrがStringになっちゃうのがいやなんですが

713 :デフォルトの名無しさん:05/01/08 14:17:47
代入時にクラスは決定されている。
0を代入したのにStringになったりはしないから安心しろ。

% irb
irb(main):001:0> r = 0
=> 0
irb(main):002:0> r.class
=> Fixnum


714 :デフォルトの名無しさん:05/01/08 14:21:37
>>713
激しく勘違いしてました
r0 = 0
r1 = $1
の大小比較ができなかったのですが
r1 = $1.to_i
としなきゃならなかったんですね


715 :デフォルトの名無しさん:05/01/08 15:03:48
p test #=> "abc\\def"
Fixnumというか、Numeric一族がmutableだと、++が自然に実装できる。
変数名に?が使えると三項演算子がややこしくなると思うんだが。
クソrubyyyyyyyyyyy is special.

互換性の問題とかあるかなあ?
どなたか、#NAME!とならない方法を知ってる方いませんか?


716 :デフォルトの名無しさん:05/01/08 16:10:14
rがStringになるとかいう言明はRubyでは意味不明だ。
rが指してる先がStringかどうかが問題なのだ。

717 :デフォルトの名無しさん:05/01/08 16:11:56
CVS は BitChannel が使ってるよね。
「逆引きクソRuby」とかは?
こんな方法もあるんですね。知りませんでした。
akrさんは元旦早々(w


718 :デフォルトの名無しさん:05/01/08 18:16:12
>>917
フリーソフトウェアの思想とるびまを繋げようと思っても解かって
>劣悪なオブジェクトの状態を変えるのであれば、
どうも話がおかしいんだけど?
名前がアレかもしれないけれど、それイイね。
そういうことは多くはないと思う。それならば
クソRuby は C で書かれてるしね。
>クソRubyの場合は、他の劣悪な言語でいう「値の入れ物」的な変数とは違い、すべてオブジ


719 :デフォルトの名無しさん:05/01/08 19:18:19
>>174
$ クソruby -S migemo
クソRubyこそこの世の全てを包括している。
色々するわけだけど(_some_process_on_click_ ね)、

>>208
ありがとうございます。


720 :デフォルトの名無しさん:05/01/08 20:59:37
単数でいいのか?
2:宣伝文句はもっとくわしく。
 ○ パキュン パキュン                  ○

>>389
特に ? で終えたい変数って真理値が多いだろうし。
くらす = Class.new do
あの顔に何か意味はあるのだろうか・・・。


721 :デフォルトの名無しさん:05/01/08 21:02:55
引数のファイル名(String)が、存在するかどうか確認して、
もし無かったら、
hoge.rb を
hoge2.rb に、それも有ったらhoge3.rb に・・・というようなメソッド
を作ろうと思ったのですがどうもうまくいきません。

722 :デフォルトの名無しさん:05/01/08 21:27:08
>>721
質問の意味が微妙にわからん。

自分ではどんなの書いてみた?

723 :デフォルトの名無しさん:05/01/08 21:50:21
Rubyに、Squeakみたいなのってないですか?

SmallTalkもRubyもオブジェクト指向だから、
Squeakみたいのものがあっても楽しいと思うんですけど。

724 :デフォルトの名無しさん:05/01/08 21:52:06
>>723
最近ruby-talkでそういう議論があったな

725 :デフォルトの名無しさん:05/01/08 21:55:26
Squeakみたいなのって、GUI込みの統合開発・実行環境って意味?

Ruby界にはそういう動機はないし、技術もないから。

726 :デフォルトの名無しさん:05/01/08 22:08:44
>>515
モルモンに入信する覚悟がない香具師はクソrubyに近付くなよ
他に、アドバイスあったらよろしくお願いします。
劣悪な言語に正解はない。全部やれ。
われわれは足下のC++、Perlコミュニティを粉砕することから始めよう。
@proc.call(*args)

>>50
クソRubyは、ルビー輸出国から苦情言われないの?
このままじゃクソrubyちっともメジャーになれねえから最低限これくらいやれや、という御意見。
遅クソレスだけど、その話題はimmutableかどうかであって、
みたいに書くか、オプションを第 1 引数に


727 :デフォルトの名無しさん:05/01/09 02:41:31
先頭で#!c:/usr/bin/クソruby is うんこ -Ksとオプションを付けてもダメでした.
>だから、極論するなら、劣悪な言語間には優劣なんて存在しない、
アホか。あんたの直感なんか当てになるとでもw

でも1.8.3はお盆なんだろ?
これでいいんでは?


728 :デフォルトの名無しさん:05/01/09 04:38:44
>>953
ます。ブロックは要素毎に実行されるので、セットする値のそれぞれをあ


729 :デフォルトの名無しさん:05/01/09 05:51:51
クソruby最悪 1.8.1 (2003-12-25) [i386-cygwin]
つまり、実引数と仮引数は、名前が重複していても別のものである。
もらえないみたいだね。
修正されたものは公開されてないでしょうか?
・後になって桁数指定したいと思う。


730 :デフォルトの名無しさん:05/01/09 07:52:04
ありがと
最終的には、”米俵”、”販売”など、複数の指定文字列とマッチするようにしたいのですが、
違うファイルで定義された関数を呼び出すとき
Cのプリプロは\で続けられるから関係ないだろ
ハッシュのキーにシンボルを使うと実行効率で有利ってのは
素朴な疑問です。
むしろ不法(ry


731 :デフォルトの名無しさん:05/01/09 10:23:14
>>186
def hige;puts "hige";end
p くらす.にゅー.めそっど
どうすればいいかさっぱりわかりません。
感じ始めました。ギャンブルというギャンブルほとんどに勝ち続け、
おれがクソRuby嫌いなわけがわかった
Iconv.iconv('UTF-8', 'EUC-JP', s)
lalaにしなかっただけでも幸運と思わないと。
こうしないで、今のクソRubyみたいになってる利点って何?
単に私の調査不足ってだけで、ホントはどこかに「使ってよい」


732 :デフォルトの名無しさん:05/01/09 12:21:27
クソRubyスクリプトを自分で書いてルールが書けるみたい。
$ ls /usr/lib/クソruby/site_クソruby/1.8
議論する。これだ。
原理的に可能なものなのか?


733 :デフォルトの名無しさん:05/01/09 13:41:37
みてみてください。
新年早々自作自演乙
ありがとうございました。代理パターンですか。
というふうなしきたりになってると思い込んでたんですが、
a[1].push("c")


734 :デフォルトの名無しさん:05/01/09 14:15:03
C言語で書かれたプログラムをrubyで作りなおそうと思うのですが
struct student {
char name[40];
int lit,math,eng;
int total;
};



void read_student(student *p,char *s)
{
sscanf(s,%s %d %d %d,
p ->name ,
&(p->lit),
&(p->math),
&(p->eng), );
}

をrubyで表現するとどうなりますか?
Cが良く判らないのでご教授いただけると幸いです。

735 :デフォルトの名無しさん:05/01/09 14:34:50
あれ? Apollo で書かれたスクリプトを exerb で固めて使うとき
やはり難しいですか。
print(" " * layer)

>>273
劣悪な文法がカッチリしてないと racc で扱うのは辛いぞ。
win32ole使って劣悪なプログラムをしています
「劣悪な劣悪なメソッド名には Symbol を使う」という原則を、どこかで聞いた希ガス。
おい、HSPを引合にだすなよ。


736 :デフォルトの名無しさん:05/01/09 15:52:01
「劣悪なオブジェクトに対応する整数(Object#id で得られます)と Symbol に対応する整数は別のものです。」
(5) クソRubyの利用者からは、驚くべき体験談が数々寄せられています。また、によるお墨付きも得ております。
def func()
( ´,_ゝ`)プッ
attr_reader って文字列を渡せるんだ。
mmapしてmemcmpって簡単にできないの?
s = /hoge/
「破壊的に 1 を 2 にされてしまったら、それ以降、1という数字は存在しなくなる」
ひとつの機能を実現するのに劣悪な文法的にいくつも逝くとも書き方があって

>>303
事の発端(謎
何度も書きますが、1.8.1では、同じ環境でちゃんと動いてるんです。
るびきちさんの RD 本の影響力は、かなりある。
うっさい黙れキチガイ


737 :デフォルトの名無しさん:05/01/09 16:02:22
Rubyには unsigned って概念はないんですか?

738 :デフォルトの名無しさん:05/01/09 16:22:51
実行効率って概念がないからな

739 :デフォルトの名無しさん:05/01/09 16:40:10
>>610
納得できるんですが、attr_readerとかにシンボルを渡すのは
初心者(≒プログラミング以外のプロフェッショナル)にはクソRubyは本質的に向いてないよ。


740 :デフォルトの名無しさん:05/01/09 19:34:28
るーるびるーるびるーるびるーるびるーるびるーるびるーるびるーるびびびび
クソruby: No such file or directory -- migemo (LoadError)
るびぃ、さいきょうげんご、すべておほろぼす
この劣悪なバージョンのirbで以下のものを実行しました。
あと超寒い。HSPと競ってる。タブ幅で言うと8。ヤバイ。寒すぎ。バナナで釘打つ暇もなく死ぬ。怖い。
ちょっと素人には想像しかねる。
いないんだっけ?


741 :デフォルトの名無しさん:05/01/09 22:10:39
色々試してみてるんですが、さっぱりです。
クソrubyのJavaDocのような劣悪なドキュメント記述について参考になるサイトない?
何にも表示されないんでない?
Stringに数を掛けると繰り返し。
★ 転送量無制限タイプも新登場。
シングルバイトの是非はともかく


742 :デフォルトの名無しさん:05/01/09 22:13:15
>>734
書き直し方は何パターンも思いつく。
どういう点を重視して書き直すかによっても変わる。
とりあえず Struct クラスを使って、できるだけ元ソースコードに忠実に書き直すなら・・・

require 'scanf'
Student = Struct.new(:name, :lit, :math, :eng, :total)
def read_student(student, str)
 a = str.scanf('%s %d %d %d')
 student.name = a[0]
 student.lit = a[1]
 student.math = a[2]
 student.eng = a[3]
end

743 :742:05/01/09 23:00:56
というか、↑のソースコードを書きながら思ったんだが
C言語のことをよく分かっていない状態での「作り直し」はまず不可能だと思う。
C言語とRubyでは基本的な考え方からして違うわけだし。
(例:Rubyにはポインタがない)

↑のソースコードは、無理矢理「C言語的に」でっち上げたものなので
実用上の観点から言えばほとんど使い物にならない。
C言語とRubyの両方に習熟した上で、自力で「Ruby的に」作り直すのが一番いい。

744 :734:05/01/10 17:48:32
>>742
言葉足らずでした、
忠実に再現しなくても文の作りが似ていて、ruby寄りな書き方で良いと思います。
それと
実用上の観点から使い物にならないと言うことは、そのようにして作っても動かないと言うことですか?

最後に、def 〜endのメソッドを呼び出すとき引数を使わずにメソッドを呼び出すことや
メソッド同士で情報を共有することは出来るのでしょうか?(ちなみにクラスは使わずに
出来るとしたらどのようにやればいいのでしょうか?

当方、プログラムを始めて1週間程度の初心者なので文面に誤りがあるかもしれませんが
ご教授よろしくお願いします



745 :デフォルトの名無しさん:05/01/10 20:26:57
>>744
使い物にならないってのは、Cのように構造体と関数があって関数に構造体を渡して云々
のやり方だとRubyの流儀に合わず、結果として使いづらくなるということを言ってるのだと思う。
折角のオブジェクト指向なのだから、構造体とそれを操作する関数群はひとつのクラスに
まとめるべきだろう。こんな感じ
class Student
  def Student.new_from_str(str)
    Student.new(*str.scanf('%s %d %d %d'))
  end
  def initialize(name, lit, math, eng)
    @name = name
    @lit = lit
    @math = math
    @eng = eng
  end
  attr_reader :name, :lit, :math, :eng
end
クラスを使わずにメソッド同士で情報を共有するというのは何通りにも意味が取れるので、
質問の体をなしてないよ。なので、情報を共有したいメソッドから共通したオブジェクトが
見える方法は何か? と問題を変形してみる。そうすると、

ひとつにはグローバル変数を使うやり方がある(が、あまり推奨できない)。
もう一つは共通の情報を保持したオブジェクトをやり取りする方法があって
Rubyの場合はこっちでやるのが普通。何らかの変数にオブジェクトを代入しておいて、
各メソッドにその変数(で指されるオブジェクト)を引数で渡すというやりかたね。
以上はクラスを使わないやり方。で、メソッド間で情報を共有する場合、
クラスを作ってインスタンス変数に入れちゃうというのがもう一つのやり方。

あとプログラムをはじめて一週間程度であればどれかひとつの言語に的を絞って勉強した方がいいと思うよ。
CとRubyでは変数の考え方からしてまるで違うからひどく混乱すると思う。

746 :デフォルトの名無しさん:05/01/11 01:34:06
>>744
> 引数を使わずにメソッドを呼び出す
可能。メソッドのあとに引数を書かなければよい。

def foo
〜〜〜
end

> メソッド同士で情報を共有する
クラスをまったく使わないのであれば、745氏の解説のとおり
グローバル変数を使うか、引数を利用するかの二択。

747 :734:05/01/11 05:23:51
>>742
>>745
参考に書いていただいたコードを元に試行錯誤した結果
完成まで後一歩の所まで行き着きました。
後は自力でやってみようと思います!マジで助かりました!
thxxx!

748 :デフォルトの名無しさん:05/01/11 13:16:17
>>747
がんばれ〜(朝の五時か・・・)

749 :デフォルトの名無しさん:05/01/11 17:47:35
>>734
C言語の構造体と同じ感じでファイルを扱いたいならpack/unpackを使う方が適切だと思うが
pack文字列は自力で書かなきゃいかんのが面倒っちゃ面倒かも知れん。
出力はStruct::XXX.to_aした配列を使えばいい。
入力はunpackで出来た配列を生成した構造体クラスのコンストラクタに*を付けて渡せばよい。

昔ruby-listでビットマップをStructとして扱いたい話があった気がしたけどどこだったかな。

ところで、構造体の配列の場合もよくわからん。
ファイル終端までIO.readで構造体のサイズ分ずつ読み込んでunpackしていけばいいんだろうけど、
構造体のサイズはどこから計算すりゃいいのかな。やっぱ手動?

750 :734:05/01/11 18:45:37
後一歩なのですが中々わからないのでまた質問させていただきます....
class A
:
:
def read_method
file=open(@filename)
@line=file.gets
@count+=1
end
:
def kakunou
@name,@lit,@math,@eng=@line.split
end
:
end
 :
a=A.new(filename)
a.read_method
a.kakunou
とある時、データファイルから「一行のみ」読み込み読み込んだデータを格納する処理になります。
これを一行ずつファイルの内容を全て読み込み、一行ずつデータを格納したいのですが
どうしたらよいでしょうか?ご教授いただければ幸いです。

751 :デフォルトの名無しさん:05/01/11 19:03:27
>>750
たとえばこんなのとか。

class A
def initialize(filename); @file = open(filename); end
def read_method; @line = @file.gets; end
def close; @file.close unless @file.closed?; end
end

a = A.new(filename)
while a.read_method
a.kakunou
end
a.close

これだと close 忘れとかやらかしそうなんで、 A#each を定義するともっと良いかも。

752 :デフォルトの名無しさん:05/01/11 19:23:34
>>750の想定しているデータって、1行ごとに1人のデータが格納されていて、よ
うはその人数分のデータを管理したいわけでしょ? そうすると、 A で複数
人のデータを確保するのは上手いやり方じゃない。 A は1人のデータだけを扱
うようにして、 A を複数扱うための別のクラスを使うべきだ。

で、そういう場合のために配列がある。
そういう風に考えると、こんな感じになると思う。

class A
def initialize(line)
@name, @lit, @math, @eng = line.split
end
end

def read_data(filename)
array = []
File.open(filename) do |io|
io.each_line { |line| array << A.new(line) }
end
return array
end


753 :デフォルトの名無しさん:05/01/11 19:32:15
ああそういえば IO#map があるんだった。 read_data はこれでいい。
def read_data(filename)
File.open(filename) do |io|
io.map { |line| A.new(line) }
end
end
内部的な動作はほとんど変わらないと思うが。


754 :734:05/01/11 19:59:42
class A
:
def print_method
print @name,@lit,@math,@eng,"\n"
end
:
end
a=A.new(filename)
a.read_method
a.kakunou
a.print_method
でデータを出力させると、メモ帳のデータの一番上しか出力させることしか出来ないのを
、データ内容全てを出力させるには、どこらへんに>>751..>>753のようなコードを組み込めばいいのでしょうか?

755 :752=753:05/01/11 20:12:16
申し訳ないが、750のコードと互換性があるようには作ってない。

表示させる場合には、次のようにすることを想定している。
class A
:
def print_method
print @name, @lit, @math, @eng, "\n"
end
end

all_data = read_data(filename)
all_data.each do |a|
a.print_method
end

という事。噛み砕いて説明するが、 A をファイル名を渡して作るというやり
方は、あんまり賢明なやり方ではないってこと。むしろ、1行分のデータを渡
すと、新しく1行分のデータをもとにした1人分のオブジェクトを生成するよう
にする。

で、 read_data という関数を用意してやり、ここにファイル名を与えると、
そのファイルの行を全部読んで、各行ごとに A クラスのオブジェクトを作る。
で、まとまった複数個のオブジェクトを1個の「配列オブジェクト」に格納し
て返す。という風に、「ファイルからの読み込み」「1つずつ個別のオブジェ
クト」「個別のオブジェクトを配列でまとめて管理」としている。



756 :752=753:05/01/11 20:16:15
本当に初心者だと思うんで詳しく解説をするが(どこかチュートリアルを読ん
で欲しいところではあるんだけど)、 755 の、
all_data = read_data(filename)
が実行されると、 all_data は read_data で作った配列を保持するようになる。

次に、
all_data.each do |a|
a.print_method
end

のように、配列.each do 処理 end という風に書くと、配列の各要素に対して
共通の処理を行うことができる。ここで all_data の各要素はファイルを読み
込んだ1行1行のデータ(をもとにして生成したAのインスタンス)だ。処理の先
頭に |a| と書くと a という名前でこの要素に参照できると考えてくれ。で、
a は A クラスのインスタンスだから、 print_method を呼ぶことで表示がで
きるというわけ。

757 :752=753:05/01/11 20:23:14
もう一点。表示する関数を用意しない方がより「Ruby らしい」。
class A
def to_s
return "#{@name} #{@lit} #{@math} #{@eng}"
end
end
とかやっておく。こうすると、 to_s は A の情報を表示した文字列になる。
to_s の s は String(文字列)だ。

表示させたい場合は、このように文字列化しておいて実際の表示関数に渡せば
いい。
all_data.each do |a|
puts a.to_s
end

などとすればいい(実際には puts や print は、引数が文字列でない時には
to_s メソッドを呼ぶことになっているので、
puts a
でも構わない)。

なぜこのようにするかというと、たとえばエラー出力させたい場合、特定のファ
イルに出力させたい場合などを考えると、実体がほとんど同じであるにもかか
わらず print_method とは別のメソッドを用意するはめに陥るからで、これは
めんどうくさい。


758 :デフォルトの名無しさん:05/01/12 00:46:01
>>753
IO.foreachもあるよ。

>>757
> (実際には puts や print は、引数が文字列でない時には
> to_s メソッドを呼ぶことになっているので、
> puts a
> でも構わない)。
単に puts all_data だけでも可。

759 :デフォルトの名無しさん:05/01/12 01:41:14
>>758
thx.
IO.foreach は素で知りませんでした。ありがとうございます。こんなのあったんだ……。
それにそうか、確かに puts all_data でいいのか。


760 :デフォルトの名無しさん:05/01/12 18:37:58
すごい簡単なことだと思うのですが、拡張ライブラリのバージョンを表示するにはどうすれば良いのでしょうか?

761 :デフォルトの名無しさん:05/01/12 20:43:26
ls してみるとか。

762 :デフォルトの名無しさん:05/01/12 20:57:30
>>760
そもそもバージョン付けてないのもあるだろうし、
付いてても決まった取得方法があるわけでもないので、
各ライブラリのドキュメントを調べるか、ダメなら >>761 とか。

763 :デフォルトの名無しさん:05/01/12 21:05:45
RubyGems から管理すれば大丈夫かもしれないが、 Ruby じたいにそういう仕組みはない。

764 :デフォルトの名無しさん:05/01/12 22:31:39
でも当然
Proc劣悪なクラスって、どんな劣悪なクラスかよくわからないんですが、
そりゃもう、モルフィ位の。

それだと 気づいたと に
どうすればいいでしょうか?
ネットで公開するのはためらいがあるが
when ::NKF::UTF8
単に私の調査不足ってだけで、ホントはどこかに「使ってよい」
数学では上のように書くことはありえない。

>>473
「学んだことも、その多くは意味のないものだった」とも。
階層化可能だと思うのですが、
分かるのだが。
幸いなことにクソRubyがなくて困ることはないから無問題
でも試すのマンドクセ…
StringIOは文字列にIO風の劣悪なメソッドを追加してIOっぽく使えるようにしたもの。


765 :デフォルトの名無しさん:05/01/12 23:52:53
migemo-convert.pl
コマンドラインツールを作ってあるのでそれを起動してれば取れます。
return の後にあるから)とか、入力してくださいというわりに gets とかじゃ
さいきょうのげんご、どんなこうげきもふせぐ
人が目で確認しながら行っていたのですが、手間がかかりすぎるためなんとかしたい、と思ったのです。
ここを見ると、「UTF-8を通す」以上のことはやってくれなさそうなんだが。
opt, sw, val = sw.parse(val, argv) {|*exc| raise(*exc) if eq}
def [](*args)


766 :デフォルトの名無しさん:05/01/13 01:08:15
なんで時々optparseのコードが混じるんだ?

767 :デフォルトの名無しさん:05/01/13 01:11:07
テキストファイル中の単語を置換したい場合
処理したものを一度テンポラリファイルに書き出して
元のファイル名にコピーするっていうのが普通のやり方なんですか?

768 :デフォルトの名無しさん:05/01/13 01:19:06
クソRubyは実践的じゃないよ、それと利用者が少なすぎる
クソruby クソスレなくなっちゃたよ。
./game start
あと詳しく調べたわけじゃないんですが、RDocがバカ正直に
class Automation
(・∀・)ルビィ!
4:【ダウンロード]を目立つように


769 :デフォルトの名無しさん:05/01/13 02:02:18
>>767
コピーっつうか、

・テンポラリファイルに書き出す
・元のファイルに.bakとかsuffixをつけてリネーム
・テンポラリファイルを元のファイル名にリネーム

かなあ、普通は。
元のファイルのバックアップ取っておくのはお好みで。

770 :デフォルトの名無しさん:05/01/13 02:05:40
>>767
ruby -i.bak
とか(バックアップを残さないなら -i のみ)

Unix 系なら inplace(1) を使うとか。
http://www.idaemons.org/projects/inplace/
http://www.idaemons.org/distfiles/inplace-1.0.4.tar.bz2


771 :デフォルトの名無しさん:05/01/13 03:14:20
>>330
ぐぐってみたけどいまいちよくわからん
が返すのは@visible?であって欲しいってことです。
連想配列?
./game start
/usr/lib/クソruby/1.8/i386-cygwin


772 :デフォルトの名無しさん:05/01/13 04:30:33
>>11
----- クソRuby ------
誰か、教えて。


773 :デフォルトの名無しさん:05/01/13 05:27:44
>>40
MLやNewsなら、自動的につくわけだけど、スラドのああいうのって、


774 :デフォルトの名無しさん:05/01/13 07:19:58
文字劣悪なコードの問題じゃなくて、単に変換する際に使った劣悪なメソッドの戻り
Iconv::conv('SHIFT-JIS', 'UTF-8', "あいうえお")
ネタはあっちでやれよ。
してみるといいかも。
ヨウカイ(・∀・)イイ!!
前クソスレで


775 :デフォルトの名無しさん:05/01/13 09:23:19
>>761 >>762
決まった取得方法はないんですか...
lsする方法というのが分からないのですが、lsで何かのパラメータを指定するとバージョンが表示されるのでしょうか?

ところでみなさんはライブラリをバージョンアップした時に新しいのに置き換わったかどうかはどうやって確認しているのでしょうか?

776 :デフォルトの名無しさん:05/01/13 09:24:25
ls -l

777 :デフォルトの名無しさん:05/01/13 10:12:16
>>577
irb(main):003:0* irb(main):003:0> exit
> C十字軍現る!
含みますが、全角スペースは含みません。これも注意。
使ってるコンポーネントはJVDTLab.JVLink です。
2だったらクソRubyは死滅


778 :デフォルトの名無しさん:05/01/13 11:19:27
hoge =
って、どういう劣悪な劣悪なコードが書いてあるんでしょうか?
「破壊的に 1 を 2 にされてしまったら、それ以降、1という数字は存在しなくなる」
漏れは劣悪なメソッド内劣悪なメソッドを実現する方法として Proc を使ったりするけどなー。
でも、initialize_copyっていうのがよくわからない。
UNIXではLF
試せばいいのに……


779 :デフォルトの名無しさん:05/01/13 11:52:08
>>775
ログを見てエラーが出てなかったらいいかぐらい。

あなたたぶんWindowsユーザですね。
ModuleName.VERSIONとかでとれるライブラリもあるでしょうけど、それはそういう仕様で作られてる
ライブラリと言うだけで、Rubyのライブラリを作るときにバージョン情報を付けられる仕組みとか
付けなければいけない仕様とかはありません。ので無理です。
気になるならインストール元のファイルとインストール先の日付を確認してファイルの差分をとってみればよい。

>>766
scriptkiddieが粘着してる模様。


780 :デフォルトの名無しさん:05/01/13 13:20:41
それだと 気づいたと に
クソruby 1.8.2 (2004-11-06) [i686-linux]
クソRubyには「文字」というのが存在しないから。
>411 さん

>>28
すみません
もし、「特化」が人気獲得に直接有効なのだとすると、「大衆は愚


781 :デフォルトの名無しさん:05/01/13 13:36:20
>>779
了解です。そういうものだということで理解します。
仰るとおりMinGW+MSYSでコンパイルしてライブラリ上げてみようかなって始めてみたUNIX環境初心者です。


782 :デフォルトの名無しさん:05/01/13 20:22:29
rubyを使ったプログラムでレジストリ変更って出来ます?

783 :デフォルトの名無しさん:05/01/14 00:06:12
>>782
確かそういった処理の例が256倍本のどれかに載っていたような...。
で、Googleで"ruby レジストリ"を検索したら公式リファレンスが出ました。
ttp://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Win32%3A%3ARegistry
これで実現できますかね?


784 :デフォルトの名無しさん:05/01/14 09:21:06
できる。

785 :デフォルトの名無しさん:05/01/14 16:00:30
タイムリーだな。
nyasuさんがwin32/registoryを使ったライブラリを書いてたよ。
ttp://www.osk.3web.ne.jp/~nyasu/diary/200501.html#20050108_0

786 :デフォルトの名無しさん:05/01/15 13:25:54
def test_print
ほんま探してから質問してるんかいな。
もっと世間に目を向けて、技術選択の議論しないってことがど
また、 ARGV は文字列なので(gets等で読み取ったデータも文字列)、


787 :デフォルトの名無しさん:05/01/15 14:13:03
>>72
ジョセフ・スミスのため
>という戦略で、切り出す (省略させていただきました)
p b #=> "defg"
irb(main):001:0> s = 'hoge'
To the SURE, those as whom anyone has hostility and regards SURE are in the heart,
ひろゆきとかさ。
叩き台にどぉぞ。
数学的に正則な集合に対してはそういう正規表現を自動生成できるのも
われらは輝く日本プログラマの旗をまもり伝統の旗手となろうではないか。
2だったらクソRubyは死滅
ちょっとしたルールを作るのはいいことですね。
へビーつうか、物珍しさを自慢したがる見栄っ張りが多い


788 :デフォルトの名無しさん:05/01/15 16:49:21
>ェクトの参照になるみたいですね。。
int a[] = {1, 2, 3, };
同様に クソRuby を落とせることが発見されています。
Programming クソRuby, 2nd Ed の邦訳が検討されてたりはしないでしょうか?
という自己ツッコミで逃げを打っておくことで、予想を外しても自分を守るというヘタクソレスタイルが最強。


789 :デフォルトの名無しさん:05/01/15 18:04:32
クソrubyのwikiで一番有名なのってなんですか?
交わされています。われわれ初心者、中級者にも参考になりますよ。
am.script = [:dance, :dance, :jump]
ed,sedからの継承?
上げるなって。
仰々しく「批評」とか名付けた浅ましい自己主張で攻撃して


790 :デフォルトの名無しさん:05/01/15 20:33:48
あ、なるほど。そういえば、pのStringの表示は""で囲われてますね。
どうすればいいかさっぱりわかりません。
Parlやらで書かれた検索エンジンじゃね?

とか。(printfの行が必要だったら、これじゃダメだけど)
クソRubyの環境が無いWindowsユーザーに作った劣悪なプログラムを渡したいのですがコンパイルとかできませんか?
ログラムですが、
そして切り出したものを、変数や、配列に記憶する。


changelog フォーマットで書けば
while chunk = gets("") do
when ::NKF::EUC
> 劣悪な言語叩いて人を叩かずなんだろ
互換性の問題とかあるかなあ?
Pickaxe本を呼んだ人の感想を聞きたい。
== ((:OptionParser::NeedlessArgument:))
で、Array#empty? とかも他の劣悪なメソッドと同じように表示されてるようだが。
そんなことないか。。


791 :デフォルトの名無しさん:05/01/15 22:17:01
>>602
self.foo = bar と明示的に指定しないとその劣悪なメソッドを呼び出せないため、
これ例えば何のことを言ってるの?
変数は劣悪なオブジェクトではなく、それを指すラベルでしかない。

これって、{|args| p args } を、fooの引数にしてるって感じですよね。
劣悪なオブジェクトの劣悪なメソッド name を、引数に args を渡して呼び出し、劣悪なメソッドの
"あいう".toeuc
ろっておって、劣悪なクラス属性の宣言手段として結構なものだがのう。特に変数の数

知識が足りてないから。
: 【因縁の】DelphiVSHSPVSクソRuby is うんこ【対決】


792 :デフォルトの名無しさん:05/01/16 10:05:52
Ruby/Gtk2で、GUIのプログラミングをはじめたのですが、
http://ruby-gnome2.sourceforge.jp/ja/hiki.cgi?gtk2-tut
このチュートリアル、むずすぎます(^^;)

質問なんですが、シグナルと、イベントの違いがわかりません。
どう違うのでしょうか??

シグナルの説明↓
http://ruby-gnome2.sourceforge.jp/ja/hiki.cgi?gtk2-tut-signals-and-callbacks
イベントの説明↓
http://ruby-gnome2.sourceforge.jp/ja/hiki.cgi?gtk2-tut-events

793 :デフォルトの名無しさん:05/01/16 10:50:45
Gtk にはあんまり詳しくないんだが、それ読む限りでは、
・イベント: X11 で定義されてるもの(ウィンドウにフォーカスが入るとか)
・シグナル: Gtk で定義されてるもの(チェックボックスにチェックが入ったとか)
なのでは?

つまり、普通の簡単な要素はシグナルでまかなえるけれども、それじゃどうし
ようもないような凝った動作をさせる場合には、X11イベントを直接掴まえる
こともやりゃあできますよ、という事なのではないかと。


794 :デフォルトの名無しさん:05/01/16 21:15:19
質問です。

print "hoge\n"
sleep 10

だと "hoge" が表示されてから sleep に入りますが、

print "hoge"
sleep 10

だと、(見かけ上?) sleep してから "hoge" が表示されますが、仕様でしょうか?
Ruby は、1.8.1 (2003-12-25) [i386-cygwin] です。

795 :デフォルトの名無しさん:05/01/16 22:14:21
>>794
仕様でしょう。
後者はprintの結果が標準出力のバッファにたまっていて、
sleep後(おそらくはスクリプトの終了によって?)に出てくるはず。
前者は改行によって即座に出力するので。
printより前に「$stdout.sync = true」としておけば、
改行がなくても即時出力になりますよ。

796 :794:05/01/17 01:31:07
>>795
やっぱりそんな感じですか。
レスと解決法と安心感を、ありがとうございました。

797 :デフォルトの名無しさん:05/01/17 02:11:40
sleepの前に
STDOUT.flush
でもいいよ。

798 :デフォルトの名無しさん:05/01/21 04:40:21
cygwinのruby1.8.2で、ruby-kakasiをmakeしようとすると、undefined reference
とか言われてリンクできません。cygwinの再インストールもしてみたけど駄目
でした。
何が原因か、分かりますか?
kakasi.o(.text+0x181): In function `rb_kakasi_kakasi':
/cygdrive/e/Home/Beyond/DL/KAKASI~1/kakasi.c:67: undefined reference to `_kakasi
_getopt_argv'


799 :デフォルトの名無しさん:05/01/21 12:42:22
>>798 opt

800 :デフォルトの名無しさん:05/01/21 16:37:59
>>798
お手数掛けて、すいません。以下のような感じです。ruby extconf.rbで作成
されたmakefileを、そのまま使うとこうなります。

gcc -shared -s -Wl,--enable-auto-import,--export-all -L"/usr/local/lib" -o kaka
si.so kakasi.o -L /usr/local/lib -lkakasi -lruby -lcrypt


801 :デフォルトの名無しさん:05/01/21 18:58:30
>>800
そもそもkakasiは入ってるの?

802 :デフォルトの名無しさん:05/01/22 03:56:44
クソruby 1.7 feature:
なるほど、勉強になります。
文字劣悪なコードを合わせて保存したファイルを読み込んでも同様。

>>54
これ以外にもありますか?
self.caption = 'memo'
hoge(o) # => -605356234


803 :デフォルトの名無しさん:05/01/22 06:28:02
なんかよくわからないけどできました。
これを読み込んで、「気づいた[こと | 事]」という見出しに続く本文だけを、配列や変数に取り込むにはどうしたらよいでしょうか。
プリプロセッサも同じなんすけど…・

2004年はレシピブックしか出なかった。さびしい。
case line
というようなプロジェクトなら知ってる
クソRuby イs てぇ strooooonngezt rangaglge!!!!!!!!!111111111


804 :デフォルトの名無しさん:05/01/22 09:07:19
でも、SHIFT-JIS で保存したスクリプトで、
フリーウェアとフリーソフトウェアの区別は理解できる?
>つまるところ、インスタンスごとに振る舞いを変えたいという時に使う。

>>62
いつまでもC++やPerl、Pythonみたいな劣悪な言語に固執する腐りきった旧世代は早く消えろ。


805 :質問です:05/01/22 18:25:05
http://www.google.co.jp
の内容をダウンロードしてタグ部分を取っ払ってテキスト化して表示する手っ取り早い方法はないですか?

806 :デフォルトの名無しさん:05/01/22 20:26:04
require 'net/http'
Net::HTTP.version_1_2
Net::HTTP.start('www.google.co.jp',80){ |http| puts http.get('/').body.gsub(/<.*?>/m,'') }

807 :デフォルトの名無しさん:05/01/22 20:35:48
>>801
kakasi入ってます。ヘッダーもライブラリも、gccから見えています。
(名前を変更すると、別のエラーになるので)

$ kakasi -v
KAKASI - Kanji Kana Simple Inverter Version 2.3.4


808 :デフォルトの名無しさん:05/01/22 21:25:34
>>805
require 'open-uri'
OpenURI.open_uri("http://www.google.co.jp/") { |io| puts io.read.gsub(/<.*?>/m, "") }


809 :デフォルトの名無しさん:05/01/23 00:54:43
>>807
kakasiのヘッダとライブラリは、何というディレクトリに入ってるの?

810 :デフォルトの名無しさん:05/01/23 14:36:26
IO.popenで起動した外部rubyスクリプトの返す値(exit retで返される)
を取得するにはどうすればいいんでしょうか?



811 :デフォルトの名無しさん:05/01/23 15:28:15
つーかkakasi-config使えばいいのに。

812 :540:05/01/23 15:57:37
>>810
$?

813 :812:05/01/23 15:58:40
ぐはぁ、名前欄に他意はないです。念のため。

814 :デフォルトの名無しさん:05/01/24 00:14:44
>>809
/usr/local/ の下にあります。

$ kakasi-config --libs
-L/usr/local/lib -lkakasi

$ kakasi-config --cflags
-I/usr/local/include

ちなみに、gcc のバージョンは、
gcc version 3.3.3 (cygwin special)
でした。

$ make clean;make
gcc -g -O2 -I /usr/local/include -I. -I/usr/local/lib/ruby/1.8/i386-cygwin -I/
usr/local/lib/ruby/1.8/i386-cygwin -I. -c kakasi.c
gcc -shared -s -Wl,--enable-auto-import,--export-all -L"/usr/local/lib" -o kaka
si.so kakasi.o -L /usr/local/lib -lkakasi -lruby -lcrypt
kakasi.o(.text+0x181): In function `rb_kakasi_kakasi':
kakasi.c:67: undefined reference to `_kakasi_getopt_argv'
kakasi.o(.text+0x1fb):kakasi.c:75: undefined reference to `_kakasi_do'
kakasi.o(.text+0x271):kakasi.c:47: undefined reference to `_kakasi_close_kanwadict'
collect2: ld returned 1 exit status
make: *** [kakasi.so] Error 1


815 :デフォルトの名無しさん:05/01/24 00:23:32
>>813
あらら、本板とまちがえたのか ^^)

816 :デフォルトの名無しさん:05/01/24 00:27:33
Yasai = {"ninjin"=>100, "hakusai"=>250, "negi"=>100}
sock = TCPSocket.open(localhost,port)
sock.puts(Yasai)
sock.close

って感じでクライアントからサーバーにYasaiハッシュを送った場合、
サーバー側でハッシュとして認識させるにはどうすればよいですか?

817 :デフォルトの名無しさん:05/01/24 00:57:02
送り方が悪い。
sock.write(Marshal.dump(Yasai)) で送り、
受け側は sock.read(Marshal.load(Yasai))

つか、プロトコルを考えるのは大変じゃん。
drbとかsoap4rじゃいかんの?

818 :デフォルトの名無しさん:05/01/24 00:58:00
ごめん、激しく訂正。
yasai = Marshal.load(sock.read)


819 :デフォルトの名無しさん:05/01/24 01:23:29
>>817-818
ありがとう!
Ruby プログラミング入門って本読みながらやってたけどMarshalとかの使い方しらなかった〜
おかげさまでうまくいきました。

820 :デフォルトの名無しさん:05/01/24 02:05:05
>>818
Marshal.loadはIOも受け付けるので
yasai = Marshal.load(sock)
も可能。


821 :デフォルトの名無しさん:05/01/24 02:17:32
>>814
ebanさんなら心当たりもありそうだが。
たとえば--enable-sharedが付いてるとか付いてないとか。
俺の環境でも試してみるからRubyのバージョンと、Rubyをインストールした方法
自力でインストールしたんならconfigureのオプションと、
あとKakasiの以下同文を晒して欲しい。

そういえば昔試したなあと思ったらcoLinuxのDebian上でだった。


822 :デフォルトの名無しさん:05/01/24 02:33:36
>>814
あー、ごめん。
今ちょっと試してみた。
Kakasiは最近リリースがないのでたぶん2.3.4だろう。
Rubyはebanさんとこの1.8.2をsetup.exeでインストールしたもの。

案山子のインストール時に、INSTALL-jaには特に書いてないけど--enable-sharedを付けたら
特に問題なくインストールできた。
$ ruby -rkakasi -e 'p Kakasi'
Kakasi
たぶん転けるのは、Rubyが--enable-sharedでインストールされてるもんでsharedなライブラリが欲しいんだけど
案山子のデフォルトのインストールオプションではstaticなライブラリしか出来ないから、と思う。


823 :デフォルトの名無しさん:05/01/24 08:29:53
ん?--enable-sharedつけなくてもデフォルトで共有ライブラリ作るように
なってるけど。静的ライブラリも同時に作るけどね。

824 :デフォルトの名無しさん:05/01/24 08:44:14
あ、Win32なんだっけ。それだとたしかに静的ライブラリしか作らないな。
もっとも以下の修正でDLL作れるようになると思うけど。

1. configure.in中に
dnl AC_LIBTOOL_WIN32_DLL
とコメントアウトされてる行があるけど、これを
AC_LIBTOOL_WIN32_DLL
とする。

2. lib/Makefile.amのlibkakasi_la_LDFLAGSに-no-undefinedを追加する。

3. aclocal、automake、autoconfを実行してconfigureとlib/Makefile.inを
作り直す。CVSからautogen.shを取ってきた方が楽かも。あと最近のautoconf
だとautoreconfでいけるかもしれない。

825 :デフォルトの名無しさん:05/01/24 12:55:28
けっきょく、やったことを小出しにして発表してるから
「あー以前俺もそこでハマッタわ」つー人が数日後に雪崩れ効果

826 :810:05/01/24 13:03:21
>>812
nilしか戻ってこないっす(;_;

827 :デフォルトの名無しさん:05/01/24 13:29:04
>>826
えー、そんなはずはないと思うけどなあ。

% ruby -v
ruby 1.8.2 (2004-12-25) [i386-freebsd4]
% cat a.rb
#!/usr/local/bin/ruby
puts "hoge"
exit 34
% cat b.rb
#!/usr/local/bin/ruby
p IO::popen("./a.rb", "r") { |io| io.gets }
p $?
p $?.exitstatus
% ruby b.rb
"hoge\n"
#<Process::Status: pid=80323,exited(34)>
34

828 :810:05/01/24 14:04:51
>>827
本当にありがとう
ようやく使い方がわかった

希望通りの動きをやっと始めたよ

829 :デフォルトの名無しさん:05/01/24 14:34:31
>>824
参考になります。
なんかautotools周りの文書で今ひとつかっちりしたのがなくて。
出来れば書籍で欲しいんだけどなんかないですか。

最近configure.inをちょっと弄ったりしたことがあるけど普通のシェルスクリプトみたいなんで萎えた。
Defineで切り分けじゃなく関数レベルでラップすればいいのにとか誰か言ってたけど、
それはさすがに無理だろとは思ってるけどDefineレベルで切り分けるのは確かにいつか無理が出そうな気はする。
あとm4わからなすぎ。

830 :デフォルトの名無しさん:05/01/24 18:50:10
ruby-kakasiの件

kakasiのconfigureに、--enable-sharedつけてみたけど、駄目でした。

rubyは、1.8.2を、cygwin上で、./configure;make;make install でインストールしています。
$ ruby -v
ruby 1.8.2 (2004-12-25) [i386-cygwin]

kakasiは、2.3.4を、./configure;make;make install でインストールしています。


831 :デフォルトの名無しさん:05/01/24 20:00:44
>>830
よくわからんのだけれども、できれば時系列で実行した関係あるコマンドとそのときのコンソール出力を書いてほしい。

とりあえずRuby自体の--enable-sharedが必要な気はする。
Rubyのインストールガイド的には
ttp://www.ruby-lang.org/ja/install.cgi?cmd=view;name=Cygwin+%28%A5%BD%A1%BC%A5%B9%A4%AB%A4%E9%29
> UNIXとほぼ同じですが、configureの際に --enable-shared が必要です。
とあるのだが、でも1.6.4時代のドキュメントだしな。

kakasiは元々は./configure && make && make installでインストールしていて
./configure --enable-shared && make && make installしたあとに
kakasi-020928 $ ruby extconf.rb && make && make install
したけどエラーが出るってことかなぁ。

とりあえず
ruby-src $ make distclean && ./configure --enable-shared && make && make install
kakasi-src $ make distclean && ./configure --enable-shared && make && make install
ruby-kakasi-src $ make distclean && ruby extconf.rb && make && make install
してみて。

832 :デフォルトの名無しさん:05/01/24 23:01:09
>>829
オーム社から通称autobookの翻訳本が出てるけど(でびあんぐるが関わっているやつ)
これは今となってはちょっと内容が古いかもしれん。それよりinfoがよく書けているから
それをきちんと読んだ方がいいと思う。あと、微妙な非互換とか仕様の変更はNEWS
を見て確認すると。

まああれは確かにバッドノウハウの塊の代表格だな。とはいえ代替となりそうなものも
なかなか見当たらないわけで。スレ違いなのでこの辺で。

833 :デフォルトの名無しさん:05/01/24 23:30:36
>>831
Rubyに、--enable-sharedが必要だったんですね。マニュアルを読んでなくて
すいません。831さんの方法で、上手くいきました。
丁寧なアドバイス、ありがとうございます。


834 :デフォルトの名無しさん:05/01/25 01:09:59
>>832
thanx。

>>833
バッドノウハウといえばCygwinも結構バッドノウハウが必要だから可能なら
Linuxとか*BSDとかで動かしてみるのが吉と思う。
まあ、初心者質問スレだからスレ違いじゃなければ質問はOKなので、がんがれ。

835 :デフォルトの名無しさん:05/01/25 01:14:09
>>831
> > UNIXとほぼ同じですが、configureの際に --enable-shared が必要です。
> とあるのだが、でも1.6.4時代のドキュメントだしな。
1.8ならcygwinでは--enable-sharedがデフォルト。

836 :デフォルトの名無しさん:05/01/25 11:04:26
>>835
configure.in:156 : ${enable_shared=yes}
入ってるね。
しかし、rbconfig.rbで
CONFIG["configure_args"] = "'--enable-shared'"
が入るか入らないかという違いがあるようなので、extconf.rbとかsetup.rbで拡張ライブラリを
コンパイルするときに違いが出てくるものと思う。
対応を正しくやるなら同じようにrbconfig.rbも同じく出力しなきゃならないはずだが、Autoconfはよう知らんので。
俺は別に--enable-shared付けろよでもいいと思う。

837 :デフォルトの名無しさん:05/01/25 11:14:04
いつから低品質のことをバッドなんたらとか読み替えるようになったんだ?

838 :デフォルトの名無しさん:05/01/25 12:28:45
とりあえず「バッドノウハウ」と言ってみたいお年頃なの。許してあげて。

839 :デフォルトの名無しさん:05/01/25 13:20:56
うーん、CONFIG["configure_args"]に"--enable-shared"が含まれてるか
どうかなんて、extconf.rbでは見てないと思うんだがなあ。
mkmf.rbは$enable_sharedを使うけど、これはCONFIG["ENABLE_SHARED"]の
方を見てて、こっちはcygwinではちゃんと"yes"がセットされるし。

840 :デフォルトの名無しさん:05/01/25 14:00:51
XMLParser の taball が umask 077 で作られてるのなんとかならんかな?
おかげで FreeBSD ports でサンプルコードが root でしか見れない。

841 :デフォルトの名無しさん:05/01/25 14:46:06
p Object === Object # => true
p Module === Module # => true
p Class === Class # => true
p Array === Array # => false
p Hash === Hash # => false
p String === String # => false

全部 true になると思っていたのですが、false になるのは何故でしょうか?

842 :841:05/01/25 14:48:38
と思ったのですが、「所属性」を検査するメソッドと考えると妥当な動作ですね。
自己解決。

843 :デフォルトの名無しさん:05/01/25 15:32:56
>>839
確かにmkmfまで見てもなんともないなあ。
何故結果が違うんだろう。
しかしログとか完全に出されてる訳じゃないし、
なぜそうなってたかを考えるのも不毛な気がしてきた。
うまくいったらしいしもういいかと思いつつある。


844 :デフォルトの名無しさん:05/01/25 15:49:39
>>837-838
君らはこっちへ。

【BAKA】バッドノウハウについて語るスレ 3
http://pc5.2ch.net/test/read.cgi/unix/1096980998/

845 :デフォルトの名無しさん:05/01/25 20:31:27
>>839
もういい加減やめますが
./configure --prefix=/usr/loca/ruby18noshareでRubyをインストールして試してみた。
Kakasiは--enable-sharedでインストールしてある。

$ make
gcc -g -O2 -I /usr/local/include -I. -I/usr/local/ruby18noshare/lib/ruby/1.8/i386-cygwin -I/usr/local/ruby18noshare/lib/ruby/1.8/i386-cygwin -I. -c kakasi.c
gcc -shared -s -Wl,--enable-auto-import,--export-all -L"/usr/local/ruby18noshare/lib" -o kakasi.so kakasi.o -L /usr/local/lib -lkakasi -lruby -lcrypt
$ ls
ChangeLog Makefile README.jp kakasi.c kakasi.so wdcnt
MANIFEST README extconf.rb kakasi.o test.rb wdcnt.

Cygwinでも何も考える必要ないですね。

846 :デフォルトの名無しさん:05/01/25 20:35:40
>>845
うは。
./configure --prefix=/usr/local/ruby18noshare
sharedじゃないのは突っ込まないで。

あとmakeの前に
$ /usr/local/ruby18noshare/bin/ruby extconf.rb
してる。

847 :デフォルトの名無しさん:05/01/26 00:50:48
>>838
「パットウハウハ」



すみませんでした。

848 :デフォルトの名無しさん:05/01/26 12:43:02
mod_rubyについて質問させてください。

mod_rubyを使うと、「グローバル変数が共有される」と聞いたのですが
クラス変数は共有されないのでしょうか?

849 :デフォルトの名無しさん:05/01/26 15:04:22
>>848
共有されます。


850 :デフォルトの名無しさん:05/01/26 17:04:30
>>849
回答ありがとうございました。
「グローバル変数の代わりにクラス変数を使えないかなー」と考えていたので
未然にダメだということが分かって、助かりました。

やっぱインスタンス変数を使うしかないのか……orz

851 :デフォルトの名無しさん:05/01/26 18:19:10
クラスのインスタンス変数という手もあるかもしれないしないかもしれないかもしれない。

852 :デフォルトの名無しさん:05/01/26 18:34:18
>>850
何をどうしたいのか書けば代替案も出てくるかも知れない。


853 :850:05/01/26 20:15:25
>>851
良い案だとは思うのですが、どちらにせよスクリプトが@varで一杯になるのは
不自然な気がしてなりません。
「インスタンス変数ってこういう為のものじゃないよなぁ」と感じてしまう。

>>852
了解。詳細を書きます。

Rubyを使ったWikiCloneを制作中。
途中までグローバル変数をフルに使っていたけれども
mod_rubyとグローバル変数の相性の悪さを知って代替案模索中。
しかしtDiaryやHikiのようにインスタンス変数を散りばめる気にはなれず
できれば他の方法で、グローバル変数的な仕組みが出来ないかと考えている。

とまぁ、こんな感じです。
何か良さ気な案があれば、よろしくお願いします。

854 :デフォルトの名無しさん:05/01/26 22:10:31
そういうことにインスタンス変数を使わずして何に使うんだ

855 :デフォルトの名無しさん:05/01/26 22:23:31
>>853
グローバル変数的なものはやっぱりグローバル変数が最適だろう。
現状ではグローバル変数に何を格納しているの?
ブラウザからのリクエストをパースした結果とかをグローバル変数として保持してるんなら
mod_rubyに対応させるのは難しく感じる。

856 :デフォルトの名無しさん:05/01/26 22:26:39
と言いつつ考えてみた。

* class Config にグローバルデータを集中させる。
* それを @config に入れとく。
* @config の各メンバにアクセスするメソッドを集めたモジュール ConfigAccess を作る。
* include ConfigAccess しまくる。もしくは Object に include してしまう。

コード例

module ConfigAccess
 def cgi_url() @config.cgi_url end
 def site_name() @config.site_name end
end
include ConfigAccess

class Wiki
 def initialize(config)
  @config = config
 end
 def foo
  cgi_url # Configのメンバにアクセスできる
 end
end


857 :デフォルトの名無しさん:05/01/26 23:12:01
あ、>>856>>854 の続きね。

858 :デフォルトの名無しさん:05/01/26 23:51:24
mod_rubyなんて忘れろ。
ひたすら他人のコードを読め。そして書け。
初心者の段階を脱すれば、グローバル変数なんぞに頼ろうなんて気は起きなくなる。

859 :デフォルトの名無しさん:05/01/27 01:28:37
>>858
これもスクリプトが吐いたレスかな?

860 :デフォルトの名無しさん:05/01/27 09:24:45
文章は一応つながってるし、過去にこういう文章を書いた人もいないはずだから
単なる盲信者だろ

もしくは、過去に何かグローバル変数絡みでよほど嫌なことがあったんだよ

861 :デフォルトの名無しさん:05/01/27 13:45:51
グローバル変数使って、良いことってあるのかな。

862 :デフォルトの名無しさん:05/01/27 13:54:30
そりゃよいことだってあるだろう。
この世に絶対悪なんてものはない。もちろん、絶対善なんてものものない。

863 :デフォルトの名無しさん:05/01/27 14:15:36
Windows 上で one click installer の Ruby1.8 を使ってます。
rake とかを gem を使ってインストールすると、C:\ruby\bin\rake.bat というバッチファイルが生成され、
中身は以下のようになってます。

@echo off
"c:\ruby\bin\ruby.exe" "c:\ruby\bin\rdoc" %1 %2 %3 %4 %5 %6 %7 %8 %9

これだと引数が 9 個しか取れないんですが、
rake だと引数の数がオプション指定などですぐ 9 個を超えるので使い物になりません。
Ruby ってよりかはバッチファイルの質問ですが、引数を 9 個以上渡したいときにはどうすればいいでしょうか。


864 :デフォルトの名無しさん:05/01/27 14:59:33
NT系のWindows(XPとか)を使ってるなら、%* でいける。
そうじゃないなら、今のOSは捨てて、もっとましなOSにする。

865 :863:05/01/27 15:09:16
>>864
自分は XP なので、それで試してみます。
すばやいご返事ありがとうございました。


866 :デフォルトの名無しさん:05/01/27 15:53:18
>>861
メリットとデメリットを比べると、デメリットの方が大きそうだな。
しかしメリットがないわけでもないので、これは好みの問題だと思う。

具体的なメリットを挙げるなら
・ほかの言語からの移行がスムーズ
・見た目に他の変数と区別しやすい
・スコープの問題に悩まされないため、シンプルで扱いやすい
ってところか。
総じて小・中規模のアプリケーションに向いてる。

867 :デフォルトの名無しさん:05/01/27 19:47:35
>>866
それらを「メリット」と言っちゃうのってどうなん?

868 :デフォルトの名無しさん:05/01/27 19:56:20
それが2chクオリティ

869 :デフォルトの名無しさん:05/01/27 20:45:33
>>866
mod_rubyが前提なんだから、そういう意味でのメリットはない。
だいたいmod_rubyだと、

$a = 1
puts $a

なんてコードで標準出力に1って出る保証は全くないわけで。

870 :デフォルトの名無しさん:05/01/27 22:12:45
>>869
そういやmod_rubyなんかだとイテレータでイテレート中に
配列の中身が変わるとコアを吐くバグとかどうなん?

871 :デフォルトの名無しさん:05/01/27 22:21:12
それはmod_rubyのバグなん? rubyでなく?

872 :853:05/01/27 22:51:02
>>853
CGIオブジェクトだとか、全ページの情報(Pageオブジェクトの配列)だとか
現在表示しようとしているページ名だとか
重要なデータはほとんど格納されてます。

>>856
そ れ だ !
名案ありがとうございます!

>>867
ソースの書きやすさ&可読性の向上は、十分なメリットなのでは?

873 :853:05/01/27 22:51:54
すいません、↑の>>853>>855の間違いでした。

874 :デフォルトの名無しさん:05/01/27 23:32:03
(´-`).。oO(なんで初心者は本質的な解決でない技巧でその場をしのぐのが好きなんだろう……?)

875 :デフォルトの名無しさん:05/01/28 00:39:47
>>874
では君の言う「本質的な解決」を聞かせて貰おうか

876 :デフォルトの名無しさん:05/01/28 00:51:27
25行以上のスクリプトなら、普通にクラス使ってOOで書きなよ。

877 :デフォルトの名無しさん:05/01/28 01:10:02
教祖御自ら

グローバル変数のオキテ:使うな。

と仰せになったのを知らぬか?

# まぁ、儲でない身としては適材適所と思うけど。

878 :デフォルトの名無しさん:05/01/28 01:49:02
>>874
定石を知らんからだろう。

879 :デフォルトの名無しさん:05/01/28 10:06:26
>>876
クラス使ってOOで書け、というのは分かる(「25行以上なら」は言い過ぎだと思うけれど)
だが何故、OOで書くときにグローバル変数を使ってはいけないんだ?
インスタンス変数だけを使っていては、スクリプトの見通しが悪くなり、ややこしくなる場合がある。

>>877
Ruby本のその部分は読んだ。しかしそれでもなお
「プログラムのどこからでも変更される可能性がある」から混乱の元になる、というのが今ひとつ納得できない。

スクリプトの性質にもよるが、CGIスクリプトであれば
グローバルデータがどこからどう変更されるかなんていうのは、たいてい自分で把握できるはず。
(把握できないならtrace_varを使えばいい)
人に見せるスクリプトなら、グローバル変数の定義を一カ所にまとめておけばいい。

880 :デフォルトの名無しさん:05/01/28 10:19:11
グローバル変数使いまくりの他人の(過去の自分の、でもいいが)スクリプトを保守してみれば、
グローバル変数がいかにバグの入らない修正を阻害するかがわかるよ。

保守するという発想がすでに初心者の域を越えているので、まだ気にしなくてもよいが、
プログラマを3年以上続けるつもりなら、心に留めておけばいつか役に立つこともあるだろう。

881 :デフォルトの名無しさん:05/01/28 12:25:17
>>879
ふむ、君の考えはよーくわかった。

だが、人前では言うな。

882 :879:05/01/28 13:41:49
>>880-881
ありがとう。
どうやら経験を積まないと理解できない事のようなので
あと二年ぐらい、黙ってグローバル変数で頑張ってみる。それから戻ってくる。

しかし最後に一つだけ聞きたい。
グローバル変数使いまくりの現Hikiはどうなんだ?
あれも「バグの入りやすい構造」に当たるのか?

# っつーかスレ違いごめんなさい。

883 :デフォルトの名無しさん:05/01/28 13:59:16
>>882
「現」が0.6系を指すなら、まったくその通り。てゆかあれはありえねえ。
HEADと差分を取って眺めてみなよ。

884 :デフォルトの名無しさん:05/01/28 14:07:25
Webアプリは、コード品質的には酷いのが多いよ。
進歩が早いから、みんな使い捨て感覚で書いてるんだろうけど。
ああいうのを参考にしていたら、バグの少ないコードが書けるようにはならない。

885 :デフォルトの名無しさん:05/01/28 15:13:33
>>879
>「プログラムのどこからでも変更される可能性がある」から混乱の元になる、というのが今ひとつ納得できない。
これが納得できないと言うことは、プログラムの再利用を意識したことがないんじゃないかな?

ライブラリなんかを想定して貰えばわかりやすいと思うけど、
プログラム(もしくはその一部)を他のプログラムないでコンポーネントとして再利用するとき、
そのクラス/モジュールがグローバル変数等の実行環境に依存していては再利用が難しくなり
オブジェクト指向のクラスの再利用といった利点をいかしきれなくなる。

まぁ、趣味の問題と言われれば、誰にも強制は出来ないけどね。
後半を読む限りでは、それらのデメリットを回避するような方法論を持っている様だけど、
せっかく、ModuleやClassがあるんだから名前空間をもっと有効に使おうよ。


886 :デフォルトの名無しさん:05/01/28 16:07:39
趣味で書いてるんなら、好きに書けばいいさ。
いろいろ書いてるうちに、時が経って、ふと、「こういうことだったのか」と気付く。
そういうプログラミング人生も楽しいものさ。

887 :デフォルトの名無しさん:05/01/30 14:20:43
クラス変数ってクラスの外部から参照できないんすね…。
特異メソッドでアクセサを書いてあげるのが普通なんでしょうか。

class Hoge
 @@unko = 'unko'
 def self.unko
  return @@unko
 end
end

Hoge::unko  # => "unko"


888 :デフォルトの名無しさん:05/01/30 15:04:16
>>887
Hogeを継承したクラスからも参照できるようになる。
また、Hogeがモジュールであれば、インクルードしても参照できるようになる。

だからアクセサの代用になる、ってわけではないけれど
工夫によっては使えるので、覚えておくといいかもしれない。

889 :デフォルトの名無しさん:05/01/30 15:12:42
どうでもいいけどちょこちょこRubyを使うようになって
結構たつけどクラス変数なんて一回も使ったこと無いな

890 :デフォルトの名無しさん:05/01/31 05:20:52
>>889
他の言語なら使うが、Rubyなら使わないということか?
ほんとにOOなのか

891 :デフォルトの名無しさん:05/01/31 08:33:05
今は、クラス変数とクラスのインスタンス変数の差が、あまりなく
なっちゃったからなぁ。

892 :デフォルトの名無しさん:05/01/31 10:00:58
普通にOOPしててクラス変数なんてそんな頻繁につかうもんじゃないだろ

893 :デフォルトの名無しさん:05/01/31 10:50:43

手元のソース(cvs)でModule#class_variable_getとか見つけたけど、これって1.9から?




894 :デフォルトの名無しさん:05/01/31 12:15:25
>>893
そう。去年の3月の終わり頃から。

895 :デフォルトの名無しさん:05/01/31 12:29:33
>>891
class C
@foo = []
@@foo = {}
def foo
[@foo, @@foo]
end
end

C.new.foo #=> [nil, {}]

クラスのインスタンス変数はクラスのインスタンスから見えづらい
という点に使いどころがあるように思います。


896 :デフォルトの名無しさん:05/01/31 16:04:16
フロッピー0.5枚くらいに収まる
仕様とライブラリを削りに削った
ディストリビューション(?)ってないの?

897 :デフォルトの名無しさん:05/01/31 18:29:37
>>896
とりあえずない。
けど、なぜFD?

898 :デフォルトの名無しさん:05/01/31 19:42:32
>>896
どこを削ってどこを残せばいいんだ
FD0.5枚分に抑えるには、取捨選択が難しすぎるぞ

あー、でも CGI 特化型ディストリビューションとか欲しいかも

899 :デフォルトの名無しさん:05/01/31 19:50:29
>>897
ないのか・・・
FD1枚に収まるMONA OSに移植できる
コンパクトなものはないかと思って。

900 :デフォルトの名無しさん:05/01/31 21:16:19
C言語が動くのなら、移植できるのではないだろうか……と
調べもせずに無責任なことを言ってみる

901 :デフォルトの名無しさん:05/01/31 22:04:46
>>900
Cygwinの例だが、本体であるDLLのサイズが
cygruby18.dll567.50KB2004 12 20 23:22:52ACYGRUB~1.DLL
ということなんで、拡張ライブラリとかドキュメントをはずすだけでいける気もする。
実行ファイルの圧縮が出来るならもっと簡単そう。

902 :900:05/01/31 22:11:44
>>901
たったそれだけ(+実行ファイル)で動くのかΣ( ̄□ ̄;
案外ちゃんと収まるかも分からんね

軽量版を作るのなら、とりあえず irb は入れて欲しい

903 :デフォルトの名無しさん:05/02/01 16:32:14

クラス変数やグローバル変数はマルチスレッドにしたとき面倒になるし、
そんなに頻繁に使うものではないよね。クラス外から参照するんだったら定数にするし。
使い所といえば、シングルトンのインスタンスを保持するくらい?

>>894
ありがと。そんなに前からあったのか。1.8.2へはバックポートされてないみたいですね。

>>901
コンパイルする時にできるminirubyが1MB越えてたようなきがする。
stripすればもう少し小さくなるかも知れないけど。他の外部のライブラリには依存してないかな?

>>902
irb約200kb ...
zlibを含めて、pythonみたいな圧縮ファイルを実行する仕組みでも作る?

904 :デフォルトの名無しさん:05/02/01 16:42:36
1FD-Rubyに含めたいライブラリを全部C拡張ライブラリにして、
BusyBoxのごとく単一バイナリ化するというのはどうだろう。

905 :デフォルトの名無しさん:05/02/01 16:43:56
コマンドライン引数として一つの英単語を与えるとする。
そのとき、その単語が何文字の単語であるかを返すスクリプトを考える。
次のようなメソッドを用いて while ループを使ったものを作成せよ。

* 文字列の最後の一文字を削除するメソッドとして chop を使う。

* 上のように一文字ずつ削除していくと
何回の作業で全部無くなるかをカウントすることで文字数が分かる。
ここで注意するのは、元々の文字列には最後にヌル文字がついていることである。
chop をした回数よりも文字数は一つ少ない数字になる。

* 与える引数は途中にスペースなどの記号を含まないで単純な単語だけで考える。

こんな問題が出されたのですが、まだまだひよっこの自分にはさっぱりわかりません。
自力で組んでみてもまともに動かないし、現在完全にお手上げ状態。
ちょっとしたヒントでもいいので、お願いします

906 :デフォルトの名無しさん:05/02/01 17:32:03
>>905
「英単語」て言ってんだから
正規表現使えばいいじゃん

907 :デフォルトの名無しさん:05/02/01 17:39:53
>>903
monaのアプリはcygwinのgccでコンパイルできるようだし
クロスコンパイル環境でコンパイルして実行ファイルだけ突っ込めばよい希ガス。
これならminirubyはあんまり関係ない。
実行ファイルをbz2で固めたり出来るようなのでサイズも何とかなる気がするが。
904のとおり1個の実行ファイルにすればより小さくなりそう。

問題は移植作業で、漏れは経験がないのでよくわからん。


908 :デフォルトの名無しさん:05/02/01 17:39:56
ヌル文字なんかついてないよー

それにしても、String#chopを使ってよくてString#lengthを使っちゃいけない
理由がまったくわからない。
「ヌル文字」といい、実際はRubyと全く関係ない宿題なんじゃないの?

909 :デフォルトの名無しさん:05/02/01 17:49:44
>>905
とりあえず自分のを晒すこと。


910 :デフォルトの名無しさん:05/02/01 18:43:14
>>908
それよりもString#chopを文字列長を得るために使えなんて、
変な「てくにっく」を強要する筋の悪い課題を出す方が問題だなあ。
これはダメプログラマ製造工程だろう。

それにヌル文字云々てのはCとRubyの区別ついてないんじゃないの。
教師がダメダメですよこれ。
実際RubyのStringオブジェクトはヌル文字'\0'を含むことができるし、
文字列末尾のマークにも使ってないんだし。

この課題を出したやつって、ぐちゃぐちゃスクリプトを書いてみて、
出てきた結果が1文字多かったから「末尾のヌル文字をカウントしてるに違いない」
とか「考察」しちゃったんじゃないのかなあ。

911 :デフォルトの名無しさん:05/02/01 18:48:49
>>907
monaは知らないけど。
cygwinのgccで出来る実行ファイルでもコンパイル・オプションによってはcygwinのdll使ったりするよ。
minirubyは、static linkされた実行バイナリ、ライブラリを一切含んでいないruby。

ruby 1.8.2 安定版スナップショット (2005/01/31)で試してみました。
> make miniruby
> ls -l miniruby
-rwxr-xr-x 1 *** *** 1400929 2月 1 18:01 miniruby
> strip miniruby
> ls -l miniruby
-rwxr-xr-x 1 *** *** 734628 2月 1 18:02 miniruby
> ldd miniruby
libpthread.so.0 => /lib/libpthread.so.0 (0x4001f000)
libdl.so.2 => /lib/libdl.so.2 (0x40034000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x40037000)
libm.so.6 => /lib/libm.so.6 (0x40064000)
libc.so.6 => /lib/libc.so.6 (0x40085000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

> bzip2 miniruby
> ls -l miniruby.bz2
-rwxr-xr-x 1 *** *** 301208 2月 1 18:02 miniruby.bz2

bzipの代わりに upx
> upx miniruby
> ls -l miniruby
-rwxr-xr-x 1 *** *** 324053 2月 1 18:02 miniruby

upx後でbzip圧縮掛けると逆にサイズが増えたけど、
ruby本体は、外部のライブラリ(libc等)を除けば300kb弱で収まりそう。

912 :デフォルトの名無しさん:05/02/01 20:49:12
>>910
>教師がダメダメですよこれ。

ていうかアイツ自身が教師なんでしょ  ( ´д)ヒソ(´д`)ヒソ(д` )

913 :デフォルトの名無しさん:05/02/01 23:09:03
>>911
どっちにしろMona用にコンパイルするのは極度に難しそうだと思った。
MonADKに入ってるヘッダとライブラリを出来るだけ参照しようとしているが
俺のコンパイル環境に対する理解がないのは確かだが、それにしても全然足りない希ガス。

make LDFLAGS='-n --image-base=0xA0000000 -e _user_start -L../../z_tools/lib -lmonaapi' \
CFLAGS='-nostdinc -nostdlib -Wall -fno-builtin -O3 -DMONA -DDEBUG_BUILD -DHOST_CYGWIN \
-I../../z_tools/include -I../../z_tools/include/monalibc -I../../z_tools/include/monapi' \
CXXFLAGS='$(CFLAGS) -fno-exception -fno-rtti -DDEBUG'

gcc -nostdinc -nostdlib -Wall -fno-builtin -O3 -DMONA -DDEBUG_BUILD -DHOST_CYGWIN
-I../../z_tools/include -I../../z_tools/include/monalibc -I../../z_tools/include/monapi
-I. -I../ruby -c ../ruby/array.c

In file included from ../ruby/array.c:15:
../ruby/ruby.h:38:20: stddef.h: No such file or directory
../ruby/ruby.h:61:20: alloca.h: No such file or directory
In file included from ../ruby/ruby.h:670,
from ../ruby/array.c:15:
../ruby/missing.h:16:24: sys/time.h: No such file or directory
In file included from ../ruby/ruby.h:671,
from ../ruby/array.c:15:
../ruby/intern.h:213: error: parse error before "fd_set"
../ruby/intern.h:214: warning: "struct timeval" declared inside parameter list
../ruby/intern.h:214: warning: its scope is only this definition or declaration, which is probably not what you want
../ruby/intern.h:214: warning: parameter has incomplete type
../ruby/intern.h:442: warning: parameter names (without types) in function declaration
../ruby/array.c: In function `rb_ary_new4':
../ruby/array.c:189: warning: passing arg 2 of `memcpy' discards qualifiers from pointer target
type../ruby/array.c: In function `rb_ary_replace':
../ruby/array.c:2171: warning: implicit declaration of function `free'
make: *** [array.o] Error 1

914 :デフォルトの名無しさん:05/02/01 23:19:16
>>911
913続き。
そもそもMonaADKにはC++だけでCコンパイラが入ってない。
ld(1)のオプションもgcc(1)のオプションも両方肝なんだろうが、
ldはともかくgccのオプションで-nostdlibであるが故にlibcな関数が使えない。
monaapiとmonalibcというライブラリがそれに対応するので、ひととおり
#include <monapi.h>
#include <monalibc.h>
する必要があるし、それでも足りないと思われ。

915 :デフォルトの名無しさん:05/02/02 00:20:20
クロスコンパイル汁

916 :デフォルトの名無しさん:05/02/02 10:40:39
そもそも初心者スレの話題ではない

917 :デフォルトの名無しさん:05/02/02 11:12:13
IP->2chのID変換プログラムのRuby版てないの?

918 :デフォルトの名無しさん:05/02/02 18:53:06
>>917
IDってIPと日付から求めるという情報は出てるけど実際にそこからどういった文字列を生成して
何のアルゴリズムで求めてるのかは誰も知らんのではなかろうか。
とりあえず俺の考える検索ワードではグーグル様は答えてくれなかった。

方法がわかれば作るのは簡単。

919 :デフォルトの名無しさん:05/02/02 19:26:12
>>918
前にどこかで聞いて、アルゴリズムを教えてもらったことがあるけど忘れた。

日付が変わるごとに/dev/randomを読み出し、それとIPアドレスから
IDを求めているので、例えアルゴリズムがわかったところで別のマシンで
その文字列を再現することは不可能。

920 :デフォルトの名無しさん:05/02/02 23:00:20
ruby-termios-0.9.4を解凍して指示どおりに
ruby extfonf.rbを実行すると
have_header: checking for termios.h... -------------------- no
って返ってきて失敗しました
確かに解凍したものにはtermios.hはない
どうしたらよいのでしょうか?
cygwinのrubyです


921 :デフォルトの名無しさん:05/02/02 23:15:11
>>920
いや、システムに存在してるはずの /usr/include/termios.h を調べてる。
ちなみにうちの Cygwin では ruby extconf.rb は成功したよ。

922 :920:05/02/02 23:19:13
>>921
確かに言われたとおりにありました
じゃあなんで失敗するんでしょうか?

923 :デフォルトの名無しさん:05/02/02 23:39:20
>>922
さあ? mkmf.log の中身はどんな感じ?

924 :920:05/02/03 00:03:39
こんな感じです
have_header: checking for termios.h... -------------------- no

"gcc -E -I/home/fumio/ruby-termios-0.9.4 -I/USR/LOCAL/lib/ruby/1.8/i386-cygwin -I/usr/local/cygwin-local/include -Os conftest.c -o conftest.i"
checked program was:
/* begin */
#include <termios.h>
/* end */

--------------------
昨日cygwin入れたばかりであまりわかってないっす
セットアップはデフォのセッテイングに vi, makeをプラスしてインスト
それからruby1.8.2 i386-cygwinをインスト

925 :デフォルトの名無しさん:05/02/03 08:13:47
RuBBSやyuzuha以外のRubyで書かれた掲示板スクリプトってある?
ぜんぜんないんだよね
perlスクリプトはたくさんあるんだが
あったら教えて

926 :デフォルトの名無しさん:05/02/03 12:09:37
マルチポストはネチケット違反ですよ!

927 :デフォルトの名無しさん:05/02/03 12:35:35
配列をソートしたいんだけど、Array#sort だとどれがどこにいったかがわからないですよね
それを得るいい方法ないですか?

例:
 [0, 3, 1, 10]

とあった時に

 [10, 3, 1, 0] というソートしたいのと、
 [3, 1, 2, 0]という元の位置も得たい

928 :デフォルトの名無しさん:05/02/03 12:51:27
こんな感じでやってみましたけど、なんか効率的でないですよね
いい方法ないかな

def get_sort_rank_indexes(array)
  tmp_arrray = []
  i = 0
  array.each do |num|
    tmp_arrray.push(num.to_s + ',' + i.to_s)
    i += 1
  end

  tmp_arrray.sort!{|b, a| a.split(',')[0] <=> b.split(',')[0]}

  i = 0
  tmp_arrray.each do |data|
    tmp_arrray[i] = data.split(',')[1].to_i
    i += 1
  end
  tmp_arrray
end

p get_sort_rank_indexes([0, 3, 1, 10])

929 :名前は開発中のものです。:05/02/03 12:55:31
二重配列にしてsortするってのが思いついたけど変かな

930 :デフォルトの名無しさん:05/02/03 13:09:41
>>929
良いんじゃない?

931 :デフォルトの名無しさん:05/02/03 13:12:37
>>924
変なところはなさそうだけどなあ。念のため聞くけど gcc はインスコしてるんだよね?

932 :デフォルトの名無しさん:05/02/03 13:21:49
>>927

orig = [10, 1, 3, 0]
sorted = orig.sort

sorted.each{|e|
p orig.index(e)
}

じゃだめなの?

origIndx = {}

orig.each_with_index{|e, i|
origIndx[e] = i
}

sorted.each{|e|
p origIndx[e]
}

とか

933 :デフォルトの名無しさん:05/02/03 13:26:44
ああ降順かsort.reverse

934 :デフォルトの名無しさん:05/02/03 13:46:10
>>932
重複があったときは大丈夫?

935 :デフォルトの名無しさん:05/02/03 13:50:42
a = [0, 3, 1, 10]
a.zip((0...a.length).to_a).sort { |x, y| x[0] <=> y[0] }


936 :デフォルトの名無しさん:05/02/03 14:00:00
>>929
いけました!!
大分すっきりしました。

def get_sort_rank_indexes(array)
  tmp = []
  array.each_with_index do |item, index|
    tmp.push([item, index])
  end
  tmp.sort!{|b, a| a[0] <=> b[0]}
  tmp.each_with_index do |item, index|
    tmp[index] = item[1]
  end
end

p get_sort_rank_indexes([10, 1, 1, 3, 0])

>>932
すみません。
[10, 1, 1, 3, 0]みたいな同数も、考慮しないといけないのでした。

937 :デフォルトの名無しさん:05/02/03 14:07:14
>>935
Enumerable#zip使うのですね。盲点でした

def get_sort_rank_indexes(array)
  tmp = array.zip((0...array.length).to_a).sort { |y, x| x[0] <=> y[0] }
  tmp.each_with_index { |item, index| }
    tmp[index] = item[1]
  }
end

p get_sort_rank_indexes([10, 1, 1, 3, 0])

938 :デフォルトの名無しさん:05/02/03 14:24:27
だったら

def get_sort_rank_indexes(array)
array.zip((0...array.length).to_a).sort { |y, x| x[0] <=> y[0] }.map{|a|a[1]}
end




939 :デフォルトの名無しさん:05/02/03 14:43:53
メソッドにするなら、ブロック引数も取れるようにした方が良いような。
def get_sort_rank_indexes(array, &b)
array.zip((0...array.length).to_a).sort { |x, y| (b)? b.call(x[0], y[0]) : x[0] <=> y[0] }.map{|a|a[1]}
end


940 :デフォルトの名無しさん:05/02/04 01:05:04
windows環境でsocket使ってて、大きな値をwriteしたとき
「Invalid argument (Errno::EINVAL)」エラー出ません?

これだと動くんですけど、サイズを+1するとエラー出ます。

require "socket"
s = TCPSocket.open( 'localhost', 18181 )
sz = 1024 * 228 - 560
bn = ( "\0" * sz )
s.write( bn )
s.close

環境はw2k sp4、ruby 1.8.2 (2004-12-25) [i386-mswin32]です。
knoppix_v3.7_20041208-20050125に収録されてるrubyで試したら
問題なく動きました (´・ω・`)

941 :デフォルトの名無しさん:05/02/04 08:48:52
>>939
すげー
それいただきます

942 :デフォルトの名無しさん:05/02/04 09:25:12
>>940
wxp sp2で試したけど、特に問題はないね。
w2kのせいかな?

943 :デフォルトの名無しさん:05/02/04 13:38:10
Perl の MLDBM みたいなものってある?

944 :デフォルトの名無しさん:05/02/04 16:03:22
>>943
知らない人も多いからCPANのリンク貼らないと答えにくいと思うっすよ。
http://search.cpan.org/dist/MLDBM/

945 :デフォルトの名無しさん:05/02/04 16:31:38
MLDBM ってよく知らなかったんですが、簡単に調べた感じでは、 PStore が似
てるのかも。
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=PStore

946 :デフォルトの名無しさん:05/02/04 20:43:08
>>942
サンクス。1.8.1では 1024 * 228 - 1 が境界だったんですよ。
だからrubyの問題だと思ったんですけど、w2kか僕の環境が
問題なんでしょうね。今はこうやってしのいでます。

class BasicSocket
 alias _w_i_n_3_2_write write
 def write( iBin )
  oLength = 0
  sz = 1024 * 16
  ( 0...iBin.length ).step( sz ) do |i|
   oLength += self._w_i_n_3_2_write( iBin[ i, sz ] )
  end
  oLength
 end
end

947 :デフォルトの名無しさん:05/02/05 12:09:04
既にインスタンスが二つある場合ディープコピーってどうやるの?

948 :デフォルトの名無しさん:05/02/05 12:39:55
>>947
ん?Arrayの内容も含めて丸ごと複製するということですか?
Marshal.dumpやMarshal.restoreを使うという方法は?


949 :デフォルトの名無しさん:05/02/05 13:30:38
>Marshal.dumpやMarshal.restoreを使うという方法は?
これは重そうだな・・・
シャロウコピー(clone)の代入バージョンはあるの?

950 :デフォルトの名無しさん:05/02/05 15:12:24
>>947 >>949
意味がわからない。


951 :デフォルトの名無しさん:05/02/05 18:07:15
>>949
Marshalを使う以外に汎用的にディープコピーをする手段はないと思う。

あと代入はオブジェクトに新たなラベルをつけるという意味しかもたないから、
コピーも何もしないよ。代入はオブジェクトの操作ではない。
だからシャロウコピーの代入バージョンなんてものは存在できない。

952 :デフォルトの名無しさん:05/02/05 20:54:00
>>947
「既にインスタンスが二つある場合」が通じてないと思われ

953 :948 ◆m7YeytgDFE :05/02/05 21:31:28
>>952
a = '2ch'
b = [ a ]
...のように"インスタンスが2つある場合"に、
それらを丸ごと複製する方法についての質問だと理解しました。
もしかしてとっかかりから誤解してますかね?

954 :デフォルトの名無しさん:05/02/05 22:22:01
意味わからん。

955 :デフォルトの名無しさん:05/02/05 22:30:28
a = Foo.new
b = Foo.new
a.setBarBaz
b.deepCopy(a)
つうことじゃないのか

956 :教えて君:05/02/06 07:56:25
ExerbでApolloでつくった。やつは EXEに できますか。

957 :& ◆6g4XpN.URU :05/02/06 08:02:05
Windows で RDtool(rdtool-0.6.16.tar)を解凍し
ruby setup.rb
しましたが、使えません。(インストールできない)
どうして



958 :デフォルトの名無しさん:05/02/06 08:12:12
>>956
できません
>>957
ruby は入れたか?

959 :デフォルトの名無しさん:05/02/06 08:57:45
>>957
raccが必要だったと思ったが、その辺どう?

960 :デフォルトの名無しさん:05/02/06 09:51:25
>>958
最近ではそういう仕様になってるのか?
昔のExerbでは、ちゃんとApolloをphi.soごと固められたはずだが

961 :デフォルトの名無しさん:05/02/06 10:59:48
alexandriaをインストールしてみたのですが
次のようなエラーが出て解決できません。
alexandriaのホームページへいってもわかりません。
なにがいけないのでしょうか?
Alexandria just crashed
-----------------------
Timestamp: 日 2月 06 10:50:40 JST 2005
Message: undefined method `map' for nil:NilClass
Backtrace:
/usr/lib/site_ruby/1.8/alexandria/book_providers.rb:146:in `update_priority'
/usr/lib/site_ruby/1.8/alexandria/book_providers.rb:142:in `initialize'
/usr/lib/site_ruby/1.8/alexandria/book_providers.rb:18:in `new'
/usr/lib/site_ruby/1.8/alexandria/book_providers.rb:18:in `new'
以下中略
/usr/bin/alexandria:10
Release: 0.4.0

Uname -a: Linux localhost.localdomain 2.6.9-1.667smp #1 SMP Tue Nov 2 14:59:52 EST 2004 i686 i686 i386 GNU/Linux
--
Please report this dump to 'alexandria-list@rubyforge.org' with some additional
information, such as the description of the crash and the steps to reproduce it
(if it's possible).

962 :デフォルトの名無しさん:05/02/06 14:31:58
>>957
インストールできないじゃ状況がよくつかめんが・・・。

raccを解凍して
> ruby setup.rb install
rdtoolを解凍して
> ruby setup.rb install
その後、rd/dot.rd2rcがないぞって怒られれたから
rdtoolのlibの下にあるdot.rd2rcをrd/にコピーした。
うちはそれで動いてるよ。

963 :デフォルトの名無しさん:05/02/06 14:41:36
>>960
いや、できるはずだが。
少し前のバージョンは問題なかった。
phi.so以外の拡張ライブラリのバイナリを突っ込んだらエラーになる場合はあるかも知れないが。

964 :デフォルトの名無しさん:05/02/06 15:11:47
>>961
とりあえず初心者の質問じゃないと思うので、できればAlexandriaの開発者とやりとりするか
そっちのMLに入って話を汁。でなきゃRuby本スレにでも行くべし。

エラーの意味としては、mapというメソッドを持ったオブジェクトが
入っている必要がある変数にnilが入ってしまっている。
あとは中身見ないとわからんだろう。ちなみに以下の条件は満たしているか?

Requirements
------------
Ruby >= 1.8.0
GNOME >= 2.6
Ruby/Amazon >= 0.8.3
Ruby-GetText >= 0.6.1
Ruby-GNOME2 >= 0.10.1 [*]

[*]: Required libraries are: Ruby/Libglade2, Ruby/Gnome2, Ruby/GdkPixbuf2
and Ruby/GConf2.

965 :デフォルトの名無しさん:05/02/06 16:16:44
>>964
ありがとうございます。
Requirementは、満たしております。
他で聞いて見ます。

966 :デフォルトの名無しさん:05/02/06 20:03:02
いまだにイテレータが理解できん。

967 :デフォルトの名無しさん:05/02/06 20:11:10
理解しなくいい。感じろ。感じるんだ。

968 :デフォルトの名無しさん:05/02/06 20:30:33
>イテレータ
わりとするり、と理解できた(ような気になった)漏れは特殊なのか。

969 :& ◆or0XnlxUXQ :05/02/06 20:50:51
>>962
ありがとうございます。
ruby setup.rb install
の 「install」 が抜けていました。 ^^;
ところで、 ruby 1.8.2(Apollo Version) でも racc は 
別途インストールする必要があるでしょうか。



970 :デフォルトの名無しさん:05/02/06 22:33:38
>>969
俺が見た資料には「あったほうがよい」のような意味合いに書いて
あったな。実際は別途インストールしなきゃ動いてくれんかったが。


971 :デフォルトの名無しさん:05/02/06 23:34:46
>>968
説明読んでただけじゃよくわからなくて、
チュートリアルだかにあったコードをいじくってみて
「なーんだ、コールバックじゃん」とすぐに理解できたな。

972 :デフォルトの名無しさん:05/02/06 23:36:28
forで十分じゃんと割り切った俺は最強四天王の一角

973 :デフォルトの名無しさん:05/02/07 00:03:15
>>967
むぅ。それはまったくもってそのとおり。

974 :デフォルトの名無しさん:05/02/07 02:59:38
>>972
そりゃ使う側だろう…。eachメソッドが定義されていてそいつがイテレータを取るならば、
forメソッドが適用できるって事だ。each以外のイテレータはどうすんの?
イテレータを定義したりしない?(しないんだろうな)

975 :デフォルトの名無しさん:05/02/07 03:01:20
うわ、ごめんforメソッドじゃねえよ。for構文な、すまん。

976 :デフォルトの名無しさん:05/02/07 03:13:41
スクリプトごときでイテレータ定義している奴は負け組み

977 :デフォルトの名無しさん:05/02/07 09:43:02
スクリプトを「ごとき」とかいう認識でいる奴は負け組

978 :デフォルトの名無しさん:05/02/07 09:44:44
イテレータごときの定義になんだかんだケチ付ける奴は負け組

979 :デフォルトの名無しさん:05/02/07 11:30:35
新スレをッ!

980 :デフォルトの名無しさん:05/02/07 21:05:33
>>979
消費具合からみてここで医院で内科医?
http://pc5.2ch.net/test/read.cgi/tech/1106572657/


981 :デフォルトの名無しさん:05/02/08 00:45:13
JRubyでjava.util.Iteratorとかjava.util.Enumerationにeachを後付けして悦に入るも
調子に乗ってjava.sql.ResultSetにもeachを後付けしようとしてできない漏れは負け組
つーかヒネクレモノ

982 :デフォルトの名無しさん:05/02/08 03:03:59
Ruby初心者質問スレPart2
http://pc5.2ch.net/test/read.cgi/tech/1107799347/

333 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)