4sama
正直これが正解の形な気がする
とりあえず1乙
これで住み分けが計れればいいでつね。
7 :
デフォルトの名無しさん:04/11/16 01:55:19
アスキーから出てるRuby本読んでるんだけどp135のサンプルの
if dir[0] == ?/
の「?/」ってなに?
「/」のASCIIコードが返ってるみたいなんだけど…。「?」って演算子ですか?
なぜ文字列の[]って文字ではなくてASCIIコードが返されるの?
直感的ではないとおもうのだけど。
アホか。あんたの直感なんか当てになるとでもw
Rubyに文字型って存在するの?
そうですか。とりあえずRuby使い始める前に感性が違うことが分かってよかったよ。
やっぱりオタク向け言語なんだな。
13 :
デフォルトの名無しさん:04/11/16 08:30:54
○ パキュン パキュン ○
/|√ Ruby >>> Python >>> Perl ⌒/ ) ハッ!
Λ /)ζ
○
/|√ Ruby >>>>>>>>>>>>>>>>>>>> Python >>> Perl
Λ _○√ ヒョイ
<<
>>8 ありがとうです。p66の数値リテラルのところを読み返したら書いてありました…
こういう記号ってリファレンスを全文検索しようにも、関係ないのがたくさんヒットして困るんだよなあ。
う〜む、
'abc'[0] == 'a'
が偽になるとちょっとべっくらしますね。
'abc'[0] == ?a
なら真ですね。
Lisp風なのかな?Lispはよく知らないけど。
>'abc'[0] == 'a'
これって内容以前に型が違うって話?
>>18 型は違う。
ruby -e 'p "abc"[0].class'
Fixnum
ruby -e 'p "a".class'
String
でも当然
ruby -e 'p "abc"[0].chr'
"a"
備忘録のような見出しと本文が雑多に記述されているテキストファイルがあります。
今日の夕飯 <-見出し1
秋刀魚を焼いて食べたかった。 <-本文1
気づいたこと <-見出し2(次の見出しとの間に一行空けてない所もある)
机はいらない。 <-本文2
引き出しがあれば問題ない。 <-本文2(本文は複数行にわたることもある)
明日は朝早くにいかなければならないので、 <-本文3(見出しが無く、いきなり本文から始まるものもある)
近くの人の家に泊まる。
(以下、上記のような記述がランダムに続いていく)
これを読み込んで、「気づいた[こと | 事]」という見出しに続く本文だけを、配列や変数に取り込むにはどうしたらよいでしょうか。
見出しと本文の区別はインデント?
その「気づいた[事|こと]」は何度も出てくるの?
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-24 えと、本文か見出しか、というところが機械的に判断できないとなると、作業
は相当難航するでしょうね。それから正規表現の \s は半角スペースとタブは
含みますが、全角スペースは含みません。これも注意。
もしくは、見出し+本文が必ず空行によって区切られているのだとすれば、空
行を発見することで、
・空行の次の行が見出し
・その次から空行の前までが本文(先頭の空白は取り除く)
という戦略で、切り出すことができるでしょう。
それから、空行で切り出すんだったら、 ruby -00 を使うのも手です。
もしくは、見出しの方に
= ここが見出し
ここは本文
のように先頭に何かの記号(この場合は =、他には * なんかも使われることが
ある)をつけてやれば、やはり簡単に切り出すことができるでしょう。
>>25 やはり難しいですか。
これまではテキストエディタで 「気づいたこと」 を検索し、続き本文をコピー&ペーストする作業を
人が目で確認しながら行っていたのですが、手間がかかりすぎるためなんとかしたい、と思ったのです。
一気に解決は難しいようなので、まずは以下のことを実現するすべは無いでしょうか。
テキストファイルを読み込み、
行の先頭にある「気づいたこと」を検索し、
>・その次から空行の前までが本文(先頭の空白は取り除く)
>という戦略で、切り出す (省略させていただきました)
そして切り出したものを、変数や、配列に記憶する。
>>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 を使ってますが、この辺は好みの範囲。
>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の知識を広げていこうと思います。
丁寧にアドバイスいただきありがとうございました。
スマソ。訂正します。
[こと|事]
じゃなくて
(こと|事)
ですた。
上じゃたぶんまともにマッチしない……いや、これはこれでできるのかな?
それだと 気づいたと に
もマッチする。
それと$KCODEに代入するのではなく一行目を
#! ruby -Ks
にしたほうがいいかも。
ああ?
つーかお前さん。
これからもメモ書きを増やしていくつもりなら以下のどれかにしなさい。
1.プログラムでの処理は諦める。検索は高機能なエディタとかgrepで。
2.RDとかYAMLとか何か決まったフォーマットで書く。
3.メモツールに移行。「紙」とか。
4.Apolloとかでメモツールでっち上げりゃいいじゃん。
フォームから書いてプログラムが読めるようにプログラムで整形する。
もしくはApollo|vruby -> ADO|ODBC|BDE -> Access|PostgreSQL|MySQL等
のほうが望ましいかも知れん。
5.何でも良いからWikiを使え。検索機能だってあるし。
もしメモを共有してるならサーバにWiki上げとけば簡単に共有できるし。
changelog フォーマットで書けば
だよなー。再利用できないフォーマットでいくら記録を残しても、それはゴミと同じ。
howm
>>35 要点.txtとか出力する人がemacs使ってるとは思えない。
おれはあまり非公式な個人の情報をWebに上げたくはないな。
ローカルの鯖ならいいが
日記サイト公開してるやつの気がしれん。
板違い
39 :
デフォルトの名無しさん:04/11/18 21:04:43
ruby-gnome2 の日本語 ML のアーカイブを読みたいんだけど半分くらい文字化け
して読めません。文字のエンコーディング自体がおかしいようなんだけど、どこかに
修正されたものは公開されてないでしょうか?
42 :
デフォルトの名無しさん:04/11/19 20:17:39
Raccはマニュアル(256倍本)が有償なのが残念。
付属しているドキュメントだけでは、yacc/lexとかかじったことがある人でないとつらい。
少なくとも初心者が付属ドキュメントだけで理解して使うのは難しい。
もう少しチュートリアルが充実してるといいんだけどな。
初心者お断りっていう方針なら、仕方ないけど。ものが良さそうなだけに、残念。
ここは
>>20ごときにRacc薦めて初心者を惑わす悪質なコミュニティですね。
>>44 でもあれだけ決まりがないフォーマットを扱うのに最適な解はRacc辺りと思われ。
逆でそ。
文法がカッチリしてないと racc で扱うのは辛いぞ。
>>20 みたいのは正規表現をアドホックにいじりつつ
右往左往しながらパースするのが正解だと思う。
rubyの正規表現で最適化ってある?
a = /perl|php|python|ruby-list|ruby-dev|ruby-talk/e
b = /p(erl|hp|ython)|ruby(|-(list|dev|talk))/e
こんな感じに手でやったほうが速いみたいだけど、自動化できないのかな。
バックトラックとかを考えると自動でそういうDFA->NFA変換をかけるのは
なかなか辛そうに思うのだが、Rubyに限らずそういうのを自動化するのって
原理的に可能なものなのか?
数学的に正則な集合に対してはそういう正規表現を自動生成できるのも
分かるのだが。
>>48 最適化になってないような・・
bをaに勝手に最適化するならわかるが
>>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
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
間違えた。
Ruby修得中のみです。
「カレントフォルダ内で同じ内容のファイルを消す。」
というスクリプトを書いたのですが
>>52 よりRuby風味になるところがあろうかと思います。
ご指導お願いいたします。
end
end
end
end
end
end
end
end
end
end
end
end
Dir.foreach('.'){|file| }
file_hash ||= [] # file_hash が偽のとき代入
File.delete(file) if File.compare...
とか。
>>55 ありがとうございます。
file_hash ||= []
知りませんでした。
xxx == true は単に if xxx
xxx == false は unless xxx
でいいんじゃないかな。
58 :
デフォルトの名無しさん:04/11/22 11:27:59
MWage
サイズだけじゃなくて、チェックサムとかを比較したほうが。
>>59 ハッシュ値出すときって結局ファイル全部読み込むよな。
だったら普通にバイト切り出して単純比較の方が速いんじゃないのか?
mmapしてmemcmpって簡単にできないの?
>>59 File.compare ってサイズしか比較しないの?
FileUtils.cmp
Web上のテキストデータを文字列で取得し,ローカルファイルに書き出す処理で
一つ問題があります.
たまに,取得してくる文字列の中にnilと認識してしまう文字列があり,うまく書き出せ
ません.
これを回避する方法はありますか?
>>66 SHIFT-JISを使ってるんですけど,恐らく,特殊文字と同じコードが含まれているような漢字を
読み込んだときに,その文字列を出力するとnilを出力してしまいます.
先頭で#!c:/usr/bin/ruby -Ksとオプションを付けてもダメでした.
処理自体は非常に単純で,Web上のHTMLにアクセスして,テキストデータを文字列に格納し,
ローカルのテキストファイルに書き出すという処理です.
その際に前述したような漢字を読み込むと,その行がnilと出力されてしまいます.
このような漢字がない場合は,正常に動くので,漢字コードが原因と考えてるんですが...
禁断の$KCODE="SJIS"は試した?
>>68 それは知らないです.
ヘッダの部分に宣言しとくだけでいいんですか?
2行目(#!〜の直下)に書くのがよろしいかと。
ただ、ひょっとしたら意味ないかも。ダメだったらスマソ。
>>67 もっと詳しく!
ていうか再現コードきぼんぬ
>>71 実は,ローカルファイルに書き出す際に,一行づつ読み込んだ文字列にそれぞれ条件に応じた
処理をしています.
様々な処理をしているので,ここでは書ききれないのですが,個人的にはこの部分がまずい
ような気がしてきました.
例えば,読み込んだ文字列からある文字列を取り除いたり,別の文字列で置換したりして
るので,その際に変換後の文字列に望ましくない文字コードが含まれる形になったように
思います.
> 様々な処理をしているので,ここでは書ききれない
「処理自体は非常に単純」ぢゃなかったの? 最初からきちんと書こうよ。
そんなことでは誰も答えてくれないよ。というか答えようが無い。まあ、
普通にGETしてwriteするだけならそんな妙なことになるわけ無いから、
文字列を何かいぢってるのだろうとは思ってたけど……。
問題のある行で変換処理すると nil と書かれてしまう、ということは、
文字コードの問題じゃなくて、単に変換する際に使ったメソッドの戻り
値が nil で、それが書き込まれてるって可能性は? gsub!とかは置換さ
れなかった場合 nil を返す。それをFile#printあたりで書き込んでるの
では?
バイナリで読み込んでみるとか。
ディレクトリ作ったりファイルの中身読み込んだりってどうやるんですか?
当方,コマンドプロンプトで変数に文字や数字を代入したり
printで表示させたりするのができる程度なんですが,どなたか教えてください.
標準で整形済みヘルプを付けないから初心者に逃げられるんだよ
そいや、Ripper ってドキュメント無いの?
ruby自体がどうやってmakeされるかを理解してないと、rubyを組み込むのは
難しい。
逆に言えば、Makefile見りゃわかる。
Makefile見てみたけど、内容がさっぱり解らなかった・・・orz
やはりコンパイル周りの技術を勉強するしかないのでせうか
冷たい言い方をすると、
> 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"]]
この動きっておかしくないですか?
>>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"]]
>>80 string.hがないってのはちょっとアレだけど
そこのサイト見ても組み込めるようになるとはとても思えないな。
SDKとして最低限必要なことが全く書かれていない。
なんか初心者でなくても茨の道って感じ。
p a[0].id==a[1].id
示せばいいだけか。最後の2行余計だし orz
89 :
デフォルトの名無しさん:04/11/26 19:13:48
>85
ぐぉ
a.fill([].clone)
とかやらないとだめですか…
もっとスマートな方法あります?
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]
文字列で指定した関数が存在しているか調べて、存在しているなら
引数の数が1であることを調べるにはどうすればいいですか?
sendを使えばできるのですが、その関数を実行したくないときには
sendは使えません。
自己レスです。
methodとMethod#arityを使ったらできました。
Rubyリファレンスマニュアル の Iconv のページを見ても、
使い方がきれいさっぱり全く解らないのですが、どこか良いサイト無いでしょうか?
う゛ぃえwそうrcえ
>>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)
で変換できる。
>>97 ありがとん。
でも、SHIFT-JIS で保存したスクリプトで、
Iconv::conv('SHIFT-JIS', 'UTF-8', "あいうえお")
とするだけで IllegalSequence が出てしまう。EUC-JP 等でも試したけど駄目。
アルファベットなら無問題。
文字コードを合わせて保存したファイルを読み込んでも同様。
iconv コマンドは問題なく使えてるんだけど、原因等が良く解らんくて対処できんのです orz
以前、uconv 使って問題無かった記憶があるから探し出して真似て凌ぐか……
コンパイル面倒だなぁ。
Iconv::conv(to, from, str) の to と from で指定が逆だった、IllegalSequence が出る訳だ orz
1時間以上気がつかなかった。とりあえず、寝よう。そうしよう。
今度は、何故か文字化けしちゃってるけど、なんとかなるかなぁ。
……穴を探して潜り込んできまつつ
"SHIFT-JIS" より "Shift_JIS" としといた方が無難。
>>99 たしかに分かりづらいというかなんと言うか。
もともとのiconv_openに準拠したんだろうね。
strcpyみたいな順番て覚えておけばいいんだろうか。
別に覚えなくてもいいか。
102 :
デフォルトの名無しさん:04/11/29 17:22:07
ーのある文章(SJIS)を.chop.splitで単語単位に分け、WinXPのDOS窓に表示するプログラムを作ったんですが、
ーが・と置き換わってしまってうまくいきません。(テキスト形式で保存すると半角空白になります)
JISやEUC、UNICODEでは文字化けします。
ーを―に置換するしかないのでしょうか?
>>102 * chop じゃなくて chomp かも。
* 文字コードは指定してる? (起動時に -Ks オプションを付ける、とか。)
差し障りがなければ、最低限のコードを貼ってくれるとコメントしやすいかも。
>>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
指定したURLのHTMLファイルをダウンロードしたいのですが、
wget を使って実現するにはどうすればよいでしょうか。
すいません。
>>106はbrainfuckの話です。
>>105 ruby -e 'p File.read("filename.txt").scan(/米俵/).size'
>>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
>>100 Windows環境用ならCP932の方がいいんじゃなかろうか。
Windowsで作ったファイルだと拡張文字なんかの駄目文字が出てくる予感。
まあ環境とファイル次第だが。
>>108 こんな方法もあるんですね。知りませんでした。
でもちょっとうまくいきません。もうちょい弄くってみます。
>>109 動きました。どうもありがとうございます。
回答ありがとうございました。
112 :
デフォルトの名無しさん:04/11/30 01:40:24
print "#{key} に関しては #{value} でした\n"
の出力結果を
printf "%8s に関しては %2dでした\n"
で出力されたように整形して出力したいのですが、
{key}の前に%8sとかやってもできませんでした。
どうすればいいでしょうか?
key,valueを外に追い出したら
>>113 できました。"〜",key,valueですね。
最初の,を忘れて苦戦した・・・
なにやってんだ俺は・・・
どうもありがとうございました。
それ、読みやすいかな・・・?
リテラル部分が長大なHTMLとかだったら読みやすいんじゃないの。
オレの場合。
・最初は「puts "#{key} に関しては #{value} でした"」と書く。
・後になって桁数指定したいと思う。
・修正がラクだから「puts "#{'%8s' % key} に関しては #{'%2d' % value} でした"」にする。
それ、修正がラクかな・・・?
>>120 そうだなあ、
"#%8s{key} に関しては #%2d{value} でした"
とか書けるようになると嬉しいかも。
と思って parse.y を眺めてみました。
一分間ほど眺めた時点で挫折しました。
>>121 それ、読みやすく修正がラクかな・・・?
展開時についでに書式指定って自然な発想だと思うが。
>>123 他のよりは読みやすく修正がラクだと思うけど、
>>123 が思う読みやすく修正がラクなの書いてみて
>>121 今#の後で特別扱いされるのは{$@だけだから、それを入れちゃうと既存のコー
ドが動かなくなっちゃう可能性があるんだよね。悪くはないと思うけど。
でも、"#%" なんてシーケンスは滅多になさそうだし、
と思って検索してみました。
% grep '#%' /usr/local/lib/ruby/1.8/**/*.rb | wc
7 40 629
思いのほか手強いですね。
こんなのはどうでしょう?
#8{key} #2{value}
#@8{key} #@2{value}
#$8{key} #$2{value}
>>128 % grep '#[[:digit:]$@]' /usr/local/lib/ruby/1.8/**/*.rb | wc
173 949 16551
というふうに、そっちの方がハマるケースが多そうなのと、
できれば出力変換仕様 (sprintf フォーマット) を自由に指定したいのと、
できれば {} の中には任意の式が書けた方が嬉しいので、
ちょっと、うーん、という感じがしますね。
見ためにはわかりやすそうではありますが。
あ、そうだ、
"#{|8s|key} に関しては #{|2d|value} でした"
とかどうでしょう?
構文糖にさらに砂糖かけてもあまり甘くないような
>>130 そうですか。じゃあこのへんでやめときます。
Ruby って読みにくーい。
くちゅくちゅ。
133 :
デフォルトの名無しさん:04/12/01 23:37:03
るびぃー
>>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} とかってどうもバランスがよくないように感じる。
もう「ソースコードはシングルバイトで」という観念をやめるべきだよ
そうしたらほら、外には記号の宝の山が待っている。
今のRubyでもこのくらいはできるのな。
くらす = Class.new do
def self.にゅー() self.new; end
def initialize() @ふが = 'fuga'; end
def めそっど() [$ほげ, @ふが]; end
end
$ほげ = 'hoge'
p くらす.にゅー.めそっど
>>127のような問題に対処するには、それじゃ不十分。
"♥3d{key}に関しては◎02d{value}です"
とか。
激しく打ちづらかったけど。
>>136 こんなお遊びにおいてさえ、やっぱしendは邪魔だなぁ…w
>>135 シングルバイトの是非はともかく
「記号が多く使えるから良い」というのは幻想のように感じる。
下手に記号を使っても混乱するだけ。
それはPerl譲りの特殊変数($~とか)ですでに実証済みだろ。
そういえば、Perl6ではUnicodeで表現可能な記号を使って特殊変数を
増やすんじゃなかったっけ
くらす = Class.new {
class << self; alias にゅー new; end
define_method(:initialize) {@ふが = 'fuga'}
define_method(:めそっど) {[$ほげ, @ふが]}
}
$ほげ = 'hoge'
p くらす.にゅー.めそっど
Ruby にマクロがあったなら、
#define で "."
#define に "."
#define を "."
#define の "."
#define して "."
p クラス の インスタンスを生成 して 処理する
ruby起動するときにソースにプリプロセッサというかフィルタかませたり出来ないの?
#!/usr/local/bin/ruby
#if 0
eval `cpp #{__FILE__} 2>/dev/null`
$__PREPROCESS__ = true
#endif
#define HOGE "hoge"
unless $__PREPROCESS__
puts HOGE
end
148 :
デフォルトの名無しさん:04/12/04 01:04:27
すみません、しょうもない質問なんですが、ググっても上手く見付からなかったもので。。
Cでいうところの
void func(char *p){ *p = 'c'; }
char c = 0;
func(&c)
printf("%c\n", c);
という処理を行いたいのですが、Rubyの場合どのようにして、
関数引数に、ポインタ/参照 渡しするのでしょうか?
>148
その意味では、rubyは常に参照わたし。
でもそのへんわかってないなら、基本をわかってない可能性高い。
「破壊的メソッド」あたりを調べれ
>>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")
>>151 そうなんだけど、ただ、
Ruby で引数に渡したオブジェクトを操作するって普通はやんない気がする。
根本的にロジック見直した方が良い悪寒。
>>152 ですな。オブジェクトの状態を変えるのであれば、
そのオブジェクトが属するクラスにメソッドを定義するのが普通でしょう。
154 :
デフォルトの名無しさん:04/12/04 21:59:14
s = /hoge/
hogeの部分を変数で指定する事はできますか?
155 :
デフォルトの名無しさん:04/12/04 21:59:39
>>152 148じゃないけど、148と同じようなことを悩んでた。
>Ruby で引数に渡したオブジェクトを操作するって普通はやんない気がする。
わかりやすい。
>オブジェクトの状態を変えるのであれば、
>そのオブジェクトが属するクラスにメソッドを定義するのが普通でしょう。
なるほど。この言葉をチュートリアルにでものせて欲しい。
って、チュートリアルないからリファレンスか。
irb(main):001:0> s = 'hoge'
=> "hoge"
irb(main):002:0> /#{s}/
=> /hoge/
157 :
154:04/12/04 22:22:27
>>156 ありがとうございます!
勉強になりますた!
あーなるほど。
当然といえば、当然だなぁ。
俺、今まで Regexp.escape とか使ってた記憶が。
全然関係ない様な・・
Regexp::compile(s) より /#{s}/ の方が微妙に速いのね。そういうもん?
メソッド呼び出しの手間の分じゃない?
>160さん
そうですか?
>Rubyの場合は、他の言語でいう「値の入れ物」的な変数とは違い、すべてオブジ
>ェクトの参照になるみたいですね。。
まさに変数入れ物説と変数ラベル説の論争が、matzさんを交えて行われたのです
がね。無関係としか読めないようではまことに残念です。
Regexp.compile(s) と /#{s}/ は効果が違うからね
165 :
デフォルトの名無しさん:04/12/06 01:24:18
Rubyで書かれたnamazってないもんかな?
166 :
165:04/12/06 01:26:31
namazの中身を見て意味わからんかったから
Rubyで、書かれてたらどんなんなるのかと・・・
ちょっとした好奇心です。
なまぜっと?
>167
Parlやらで書かれた検索エンジンじゃね?
>167
すみません
namazuだ。
「u」が抜けてた
orz
既存のプロジェクトをrubyで書き換えて
それがあまりに拡張しやすくてオリジナルを追い抜いてしまった
というようなプロジェクトってあるの?
既存のプロジェクトをrubyから書き換えて
それがあまりに動作が速く組み込みやすくてオリジナルを追い抜いてしまった
というようなプロジェクトなら知ってる
>>172 migemo は確か最初 perl で書かれてたな。
どういう経緯で ruby で書き換えられたのか知らないけど。
> 実は Migemo エンジンは以前はPerl で実装していたのだが、木構造のデータ
> を扱っているうちにプログラムがごちゃごちゃして修正が不可能になったため、
> あるとき Rubyで書き直すことにした。
横着プログラミング 第2回: Migemo: 日本語のインクリメンタル検索
ttp://namazu.org/~satoru/unimag/2/
177 :
デフォルトの名無しさん:04/12/07 00:17:23
シリアルポート覗きたいんだけどどうやんの?
マシンの裏にまわれ。
179 :
デフォルトの名無しさん:04/12/07 02:52:33
test = 'abc\def'
print test #=> abc\def
p test #=> "abc\\def"
pで表示したときに、バックスラッシュが\\で表されているのに驚いたのですが
こういうものなのですか?
なんでこうなるんでしょうか?
p はデバグ用なんで、バックスラッシュとかダブルクォーテーションとかは
エスケープして表示される。
あ、なるほど。そういえば、pのStringの表示は""で囲われてますね。
Rubyの内部で、バックスラッシュが\\で扱われるってことではないんですね。
182 :
デフォルトの名無しさん:04/12/07 06:03:09
Windowsで使用できる、Ruby用のIDEは、
RDE以外に、どういうものがあるんでしょうか?
184 :
182:04/12/07 08:02:54
>>183 レスありがとうございます。
沢山あったんですね。
皆さんはどれをお使いなのでしょうか?
へー、C-M-f/C-M-b なんてのがあったんだ。
……漏れもトリ頭ですた orz
186 :
デフォルトの名無しさん:04/12/07 19:34:31
シリアルポート覗きたいんだけどどうやんの?
マシンの裏にまわれ。
188 :
デフォルトの名無しさん:04/12/07 19:56:08
countの数だけスペースを挿入したいんですが、
もっとスマートな方法があれば教えて頂けませんか?
count = 5
(1..count).each{ print(" ") }
print("hoge\n")
" "*5
print(" " * count)
print("hoge\n")
Stringに数を掛けると繰り返し。
凄いぜRuby最強
192 :
188:04/12/07 20:02:14
>>189 >>190 おおっ、そんな方法があったとは!素晴らしい。
ご教示をありがとうございました。
>>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:/")
>>194 まぁいいんじゃないか
メソッド名や変数名がちょっとこなれてない感じするけど
漏れは
enum_files -> puts_files
layer -> level
にしたほうが好みだ
196 :
188:04/12/07 20:49:45
>>195 とりあえず、問題なさそうなのでよかったです。
puts_files もいいですね。
確かにlayerよりlevelですね。
それにしてもRubyのプログラミングは楽しいですね。
噛めば噛むほど味が出てくるという感じで。
最初Perlを覚えようとしていたんですが、Rubyやって正解でした。
言語に正解はない。全部やれ。
198 :
デフォルトの名無しさん:04/12/07 21:18:11
シリアルポート覗きたいんだけどどうやんの?
>>198 お前いい加減にしろよ。
ネタなら寒すぎるし、ネタじゃないなら何故レス無いかよく考えろ。
200 :
デフォルトの名無しさん:04/12/07 23:18:39
だったらパラレルポート覗きたいんだが?
>201
それ以前にまだパラレルポートって載ってたっけ?
漏れの自宅マシンはもうそろそろ古株なのでシリアルもパラレルもまだあるが……
203 :
デフォルトの名無しさん:04/12/08 01:29:49
pdfかpostscriptで配布されているrubyのチュートリアルか入門が
どこかweb上にあるでしょうか。日本語でなければ英語でもよいです。
204 :
デフォルトの名無しさん:04/12/08 01:43:14
>>199 rubyじゃできないのね。
了解です。
>203
英語が苦にならなければ
http://www.rubycentral.com/book/ がおすすめです。(邦訳あり)
最初の数章は良い入門書になります。
また、
Built-in Classes and Methods
という章は秀逸なリファレンスです。
chm形式のファイルがダウンロードができたんだが、場所を失念した。
ご存知の方、help.
まあ、2版を手に入れたほうが良いかもしれないが、
入門としてはこれで十分だし、良書であることは間違いない。
207 :
203:04/12/08 17:36:43
>>205, 206
どうもありがとうございました。
>>206 chmはProgramming Ruby--onlineにある。そこの リンクスから辿れる。
>208
Thanks. Good job.
210 :
デフォルトの名無しさん:04/12/09 02:55:31
Rubyの環境が無いWindowsユーザーに作ったプログラムを渡したいのですがコンパイルとかできませんか?
>>211 ありがとう
Microsoft .NET Framework 1.0が必要らしいのでいまだうんどーろしてます
ごめんねはじめてるびーしたからごめんね
>>212 Microsoft .NET Framework 1.1じゃなくて?
ごめんね
>>210 Apolloを使うという手もあるぞ
あっちなら.NETFrameworkも必要ないはずだし
Programming Ruby, 2nd Ed の邦訳が検討されてたりはしないでしょうか?
>>215 phi.so(Apolloの実体)込みでexerbでexeは作れるけど、
Apollo使うってことは結局Rubyをインストールするのと
同じなのであんまり意味無いと思う。
218 :
デフォルトの名無しさん:04/12/09 17:29:22
シンボルについて質問です。
ハッシュのキーにシンボルを使うと実行効率で有利ってのは
納得できるんですが、attr_readerとかにシンボルを渡すのは
実行効率からなの? だいたい1回しか実行されないだろうし、
文字列でもそんな変わんないんじゃないかと思うのですが…。
attr_reader って文字列を渡せるんだ。
初めて知った。
そう言われてみれば大差ないかもね。< attr_reader
個人的には、慣れてるし他人のスクリプト見ても Symbol 使ってることが多いから、
Symbol を使い続けるだろうけど。
むしろハッシュのキーにシンボルを利用するのは
相当差が出るケースくらいで、普通に文字列使ってるなあ。
>>217 あれ? Apollo で書かれたスクリプトを exerb で固めて使うとき
Apollo のインストールって必要だったっけ?
>>218 「メソッド名には Symbol を使う」という原則を、どこかで聞いた希ガス。
理由はよく分からない。正直、どっち使っても良いと思う。
>>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()
面倒なので、よく見ずにとりあえず pack/unpack と言ってみる。
225 :
223:04/12/10 08:27:22
>>224 なるほど、pack/unpack というのがあるんですね。
構造体とかもこれでイケそうですね。
どうもありがとうございました。
>>221 いらないが、固めるときにちょっと面倒。
phi.soとphi.rbを一緒に詰め込んであげないといけないとか。
>>223 RubyのIO#writeはto_sされた結果が出力される。
Cのコードを見る限り128というコードを持った文字が出力されるのと同義なので、
File.open("test.txt", "wb") { |f| f.write(128.chr) }
でいいんじゃないだろうか。
というか中途半端だけどリファレンス見ろ。
……なして誰もIO#binmodeのこどしゃべね?
230 :
デフォルトの名無しさん:04/12/11 21:36:34
WinXPでCygwin版のRubyを使用しています.
入力したキーを記録するプログラムを
作成したのですが,なぜか大文字のA,D,Bだけが
入力できません(キーを押しても何も表示されません).
Shiftを押さずに押すと,普通に小文字のa,d,bが
打てますので,機械的な問題ではありません.
他の大文字は入力することができます.
なんででしょう???
232 :
デフォルトの名無しさん:04/12/13 21:52:50
rubyのJavaDocのようなドキュメント記述について参考になるサイトない?
ぐぐってみたけどいまいちよくわからん
分かりやすいサンプルがあるとうれしい
こーかくとこういうhtmlができるとか
流れとは関係なく、ドキュメントはソースに埋め込むのではなく
テストコードに埋め込む方がいいと主張してみる。
テスト==仕様みたいなもんだし、動的にメソッド定義する場合は
ソースのどこにドキュメント書いていいかわからないし。
そこでテストをソースに埋め込むんですよ。
>>234 matzがそれやってるって自白してたね。
237 :
デフォルトの名無しさん:04/12/14 02:00:58
total が 1500 より小さい時は get_total が値を返さない(if の end が
return の後にあるから)とか、入力してくださいというわりに gets とかじゃ
なくて ARGV から取ってるとかいうあたりがちょっと変なあたりかな。
また、 ARGV は文字列なので(gets等で読み取ったデータも文字列)、
get_total に渡す時は to_i しないといけないんじゃないか。
mata omae ka
242 :
sage:04/12/14 20:23:56
StringIOって何? Stringとどうちがうの?
>>236 こういう閉鎖的な奴がいるからrubyって普及しねぇんだろうなぁとおもた。
>>242 全然違う。
StringIOは文字列にIO風のメソッドを追加してIOっぽく使えるようにしたもの。
うまく使うととても便利。
C++でいうところのstringstreamのようなもんだ。
JavaでいうところのByteArrayOutputStreamみたいなものだ。
PerlでいうところのTie::Scalar或いはPerlIO::scalarといえばわかるだろうか。
どっかにサンプルコード集みたいなのは無いんですか?
>>248 「Ruby レシピブック 268の技」とか?
>>248 そういうのは普通コミュニティがコードを持ち寄ってサイトを作るものなんだけど
あいにくRubyコミュニティは普通じゃないので。
253 :
デフォルトの名無しさん:04/12/15 20:29:49
るびまがのサイト落ちてる?
バイナリモードでファイルを開いて一バイトずつ読み込んで
その16進を表示したいのですがどっかにサンプル無いでしょうか
ファイル開いて一バイトずつ読むのは出来たんですけど16進に戻せません
sprintf
>>255 たとえばですね
f = open("Bank1.dbf","rb")
f.pos = 0
s = f.read(1)
puts sprintf("%x", s)
こうやってもエラーが出るです
エラーが出るのはsが文字として扱われてるからなんでしょうけど
s[0] で解決しました
s[0]
>>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 invalid regular expression: /[\033$B0!\033(B-\033$Bt$\033(B]/
って言われて駄目です
>>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]
あ、ごめん。ものすごい勘違いしてた。
それ、ISO-2022-JPとかでスクリプト書いてるよね。
eucかshift jisのどっちかで書いてみて。
>>264 こちらこそごめん。
自分でもJISで書いてるのに気づかなかった。
eucにして実行したらうまくいっちゃいました、思い通りに動いてます。
>>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を指すようにしたいです。
>>269 eval したら元に戻る文字列が欲しいって話なら、String#dump をどうぞ。
p の出力(String#inspectの値)を String#dump と同じにして欲しいって話なら、
見て分かるから現状でいいんじゃね? と思う。別にどっちでも困らないけど。
漏れもいままで、基本的なクラスに関しては、
基本的に inspect した文字列を eval したら元に戻る、
というふうなしきたりになってると思い込んでたんですが、
そういうことでもないんですね。
273 :
デフォルトの名無しさん:04/12/16 22:28:41
>>271 inspectっていうメソッドを知りませんでした。
inspectで検索すると、るびまにも同じような話がのってました。
pって#だけエスケープしないんですね。
それならそうと、解説書もそう注意書きしてくれればいいのに、
なんかevalしたら元に戻るような感じで書いてあるから、分かりにくい。
「できない」だけじゃアレなんで補足。
そういう時は Array を使って
a = ['before']
b = a
b[0] = 'after'
p a[0] #=> 'after'
なんて手が使える。
クラス変数だけのクラスつう手は
>>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'
>>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}"
win32ole使ってプログラムをしています
呼び出すと引数のsize,filenameに値を勝手に入れてくれるメソッドを使いたいのですが
size,filenameをどうやって取得したらいいかわかりません
現状はsize,filenameに適当に初期値当てはめてます
全然だめですが・・・
size=0
filename=""
returncode= READ(size:long , filename:string)
returncodeは正しくでてるんで実行はされているようです。
どうやったら取得できるんでしょう?
>279
win32ole使って、何のコンポーネントを使ってるのかも書いとくれ。
でないと話が見えん。
ファイルサイズならRuby標準のFile::Statでも取れるだろうし……
てか、ファイル名が分からないのに何を読もうとしてるんだ、そのREADメソッドは。
>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]で参照できるとおもったんですけどできませんでした
>>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を使わなくて済むかな。
>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を指すようになるメソッドとか。。
(これなら、あるオブジェクトを指してる変数を全部得られればいいですよね。そんなメソッドありますか?)
多分、こういうことも考えて無理と言われてるような気もするのですが、どうでしょうか?
Ruby という言語の世界において
変数はオブジェクトではなく、それを指すラベルでしかない。
例えば、一太郎(1)がイチ(a)というあだ名をつけられたとする。
他の人が一太郎に対してター(b)というあだ名を更につけたが、
それを止めて太一(0)に対してターというあだ名を付け直したとする。
イチ(a)というあだ名は依然として一太郎(1)につけられたものであって、
いつの間にか太一(0)のあだ名にはならない。
こういう世界。
>>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が入るってことでしょうか??
なんかわけわからなくなってきました。
自分で確かめろって言われても、頭が痛くて、確かめれないです。
だれか、明快な説明お願いします。
それぞれ
\x0D
\x0A
に分けて使っとけ。
それが一番安全。
>>282 def =(v)
これって出来るの?Ruby1.8.2でsyntax errorになったけど。
>>289 捕捉しておくと、ローカル変数への代入はそもそもメソッド呼出にはならないです。
self.foo = bar と明示的に指定しないとそのメソッドを呼び出せないため、
破壊的代入が出来た所で、結局、クラス変数使う方法と同じになります。
>>290 例えば、あるテキストファイルの中から空行を洗い出したい場合
改行がCR+LFだと、/^\n$/ではマッチしない。
こういう場合には/^(\n|\r\n)$/とする必要がある。
windowsで複数のアプリケーションを、終了を待つことなく連続して起動させたいのですが、
どうすればいいですか。
exec, system, `` ではいずれも、アプリケーションの終了を待たなくてはいけませんでした。
start ごにょごにょ
すればできるよ
start /?でヘルプが
>>289 Fixnumが即値になっているのは実装上の都合もあるだろうけど、
即値じゃなきゃおかしいからでもあるでしょ。
破壊的に 1 を 2 にされてしまったら、それ以降、1という数字は存在しなくなって
2 になってしまうけど、それでもいいの?
>>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"
>>297 fork/execという概念はUNIX独自で、Windows世界のプロセスはそういうものではない。
何も考えず、Thread.new{system(hoge)}でどうだ。
302 :
デフォルトの名無しさん:04/12/17 13:53:25
>>298 あ、すごい、できてる。
しかもidも同じだし。
でも、initialize_copyっていうのがよくわからない。
dupとかcloneの初めに呼び出されるらしいけど。。
なんだこれ
これでいいんでは?
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
>>304 send(:initialize_copy, ...) だって Fixnum では無理でしょ。
ということが言いたいのでは。
>>303ー305
あ、すみません。Fixnumでは無理ですね。
勘違いしました。
リナザウつかってるんでつが、Windows環境で開発したRubyのプログラム
(128bit暗号化ページからデータ拾って画面に表示するものでつ)
があるとして、それをWideStudioとGCC+をベースに展開するだけで使える
でしょうか?
ライブラリとか適合しないかなとか、GUIがダメかもなとか思ってまつが
Linux導入とか互換用の部品を書くとかの時間を割くのも難しい状態なんで、
まったく出来ないというレヴェルだったらやめとこうと思ってまつ。
もちろんRubyすら知りませんが、技術的にはどこを直せば動くのか
わかる人、教えてくだちい。
309 :
デフォルトの名無しさん:04/12/17 21:56:31
= は イコールではなく代入ってイメージからすると、
むしろ
>>270 のようなことができると恐いんだけど。
a には再代入してない訳で。
まぁ、
>>287 の言う通りなんだけど。
>>286 結局、rubyのセマンティクスは
>>287みたいになってるのと、
FixNumは即値なので、原理的にはそういうことはできないわけだけど、
Arrayなり
>>282が書いてるような独自クラスなりでコンテナをさしこむ
のがスタイルとしてもスマートだと思うんだけど。
そもそも、そんなにいくつもの変数で値を共有したいことある?
もしそういう設計なら、それはデータソース(この場合1という値)が二重化されてて嫌なことになってない?
>>292 ごめん。おれが間抜けでした。こんなことできたら、
変数の代入とメソッド呼び出しが区別つかなくなるよね。
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
------------------------------------------
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クラスって、どんなクラスかよくわからないんですが、
誰か、簡単に説明してください。
これが使えるとどう便利なんでしょうか?
>>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 パターンを使うだろうね。
a = Proc.new{|i| i+1}
a.call(1) # => 2
328 :
321:04/12/19 18:49:42
>>325 >つまるところ、インスタンスごとに振る舞いを変えたいという時に使う。
なるほど。
ほんとだ。そう考えると、理解しやすいかも。
うまく使えるようになりそうです。
>>326 いや、その説明、むずすぎです(^^;)
ありがとうございました。
あ、おれは専らそう使っているというだけで、
327 のように Proc 単体で使うこともあるだろうし
色々使い道はあると思うよ。
あんまし使いすぎると分りにくくなるけど。
330 :
デフォルトの名無しさん:04/12/19 19:05:30
普通の関数、オブジェクトは
処理を定義してあるところに、引数を渡すって感じでわかりやすいのに、
Procがでてくると
引数が先にあって、処理を渡すって感じがする。
ややこしい。。
>>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によるアプローチっぽいので
結局同じことができて、特にどっちかに利点あるていう話ではないという気もするんですが、どうでしょうか?
もしこの二つに、長所、短所、があるなら、教えてください。(些細なことでもいいですので)
お願いします。
追記:
つまり、Procがなくても、困ることも起きないし、
Procがあっても、Rubyの目指す(?)省力化にも役立ってない気がするのです。
ブロック引数を理解しているなら、
class Proc
def initialize(&block)
@proc = block
end
def call(*args)
@proc.call(*args)
end
def [](*args)
call(*args)
end
end
で理解できるかな。
イテレータのブロックも実態は同じものだけど、振舞がちょっと違うので注意。
うわ
遅くて使ってらんね
やめた
>>334,336
考えて(読んで)みます。ありがとうございます。
あぁ、明日の試験(Ruby関係なし(泣))やばいので
ちょっと、Procのことは、また明日考えさせてもらいます。すみません。
他に、アドバイスあったらよろしくお願いします。
Rubyには試験もなんにもない
妖怪みたいな言語
ヨウカイ(・∀・)イイ!!
漏れはメソッド内メソッドを実現する方法として Proc を使ったりするけどなー。
でも本当はそれはうまいやり方じゃないんだけど。
おれの場合は有限状態機械を作るときにProcをHashの値にいれるなんてよくやる。
342 :
デフォルトの名無しさん:04/12/20 01:16:38
,. -―‐ `'' 、
┏┓ ┏━━┓ /.,;彡;, ..,;,. ゙ミヽ、 ┏━━┓ ┏┓ ┏━┓
┏┛┗┓┃┏┓┃ /ソノ;彡;彡;彡;彡'゙ヽ;゙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
ワラタ
お化けは死なーない
っていうじゃない
残念!
鬼太郎の母親は死んじゃいましたから
ユウレイはお化けじゃないのかよ斬り
346 :
デフォルトの名無しさん:04/12/20 03:39:08
これはCのユーザー関数の説明をパクったものなんですが、Rubyのユーザーメソッドにも言えることですよね?
実引数と仮引数が同じ名前になっているが、実引数と仮引数はメモリ上で別々に確保されるので、メソッド側に値を変更されることが無い。
つまり、実引数と仮引数は、名前が重複していても別のものである。
そのため、同じ名前を使っても、実引数はきちんと表示される。
>>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の変数はポインタ型の変数だと思っておいた方がまだまし。
言いたいことは分かるけど実引数が変更されることはないよね。
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
引数にデフォルト値を入れることで対処するのが普通。こんな具合。
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 なるほど。わかりました。
でも、逆に言えば引数が違う同名メソッドは定義出来ないという事ですよね?
>>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のメソッド呼び出しは値渡しなので
のほうが謎だ……
>>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を得たいのですが
>>355 コンパイル時に型を特定できないからC++のような関数オーバーロードはない
が、引数を *args のような形で受けて、args.sizeや中身のオブジェクトの種類で
処理を分岐させれば宵。
>>357 Dir.chdir "そのディレクトリ"
Dir.glob("*").sort_by {|fname| fname.to_i}[-1]
>>359 ありがと
難しく考えすぎてた、ファイル名全取得して配列入れて、みたいな
>>358 >コンパイル時に型を特定できないからC++のような関数オーバーロードはない
最初、引数の個数で判断出来ないかなと思ってたんですが
def func() end
def func(a=0) end
func()
確かにこんな場合特定出来ませんね…
言われた通り、デフォルト引数を使ったり、args.sizeやオブジェクトの種類で分岐させようと思います。
答えて下さった方、ありがとうございました。
Dir.glob("*").max { |a, b| a.to_i <=> b.to_i }
>>361 strongtyping ってのが既存でありますが。
365 :
デフォルトの名無しさん:04/12/20 12:39:08
>>363 おお、この様なライブラリでオーバーロードも可能なんですね。
色々ありますね。情報をどうもでした。
java の finally 節 みたいに、
ある括りから出る際に、必ず呼ばれる処理を記述する仕組みは ruby にはありますか?
370 :
デフォルトの名無しさん:04/12/20 21:09:32
そのCの本は(゚听)イラネ
他の本嫁
>>370 Cの関数呼び出し時の変数は値渡し。
渡したメモリのアドレス(ポインタ)を使って何でもできるが。
でもRuby使うだけなら逆に半端なCの知識は邪魔かもという気はする。
オブジェクト指向「設計」に慣れりゃいいんだろうが。
ということで368や、もうちょっと頭にスペースあけてから再挑戦汁。
なんか勘違いしてるっぽいから。
>>371 いやそういうんじゃなくてさ
この本の説明って変数のスコープの話と値渡しの話がごっちゃになってない?
とりあえずその本の書名を晒せ。
>>372 本は知らんが、勘違いしてそうだという認識は共通のようだ、ということはわかった。
>>296 遅レスだけど、その話題はimmutableかどうかであって、
即値かどうかはやっぱり実装上の都合だよね。
たとえばBignumは即値じゃないけどimmutable。
そのことに思いをはせると、じゃなぜRubyでStringはimmutableでないのだろうか
とか、
そのくせRegexpはimmutableじゃねえか
とか、
そもそもimmutableであるべきかどうかを、どこでどうやって判断してるんだろうか
とか、
考えるとキリがないので、とりあえずお茶を飲みます。
>>375 は、
>>296 の
> Fixnumが即値になっているのは実装上の都合もあるだろうけど、
> 即値じゃなきゃおかしいからでもあるでしょ。
この2行に対するレス、という理解でいい?
ここで「即値」と言ってる概念は、「immutable」と呼ぶべき物だ、と。
ところで、
>>296 の後半2行の
「破壊的に 1 を 2 にされてしまったら、それ以降、1という数字は存在しなくなる」
は、即値や immutable とは別の、唯一性の話と考えていいんだろうか。
377 :
デフォルトの名無しさん:04/12/22 07:25:55
>そもそもimmutableであるべきかどうかを、どこでどうやって判断してるんだろうか
俺も気になってた。
どうやって判断してるの??
誰か、教えて。
レキシカル上に存在する定数はすべてimmutable
それ以外のオブジェクトはクラスの実装者の体調・心境の変化に依存
>>376 漏れも、「破壊的に 〜 数字は存在しなくなる」という論理には違和感を感じます。
Integer::new(1).id != Integer::new(1).id
な yet another Ruby もありえる (ありえた) と思うんですが。
>>379 その場合「リテラルの 1 が何を意味するか」という話にもなりそう。
……質問スレでする話題じゃないな。続きはRuby本スレで。
別にこのスレでいいっしょ。
同じく
a = 1
b = 1
p a.object_id != b.object_id #=> true
が自然だと思う。
こうしないで、今のRubyみたいになってる利点って何?
実装上めんどうって理由でもいいよ。
効率。
>>381 その二つの 1 を別々のものとして扱えて嬉しいことってあるんだろうか。
どの 1 だろうと同じ 1 だと思うけど。
>>383 うれしいことはないけど、(現状で全然困ってないけど)
別の1の方がオブジェクト指向としては、自然な気がするんだけ。
(遅くなってしまうなら、別に現状でもかまわない。)
漏れは Numeric も String も immutable な方が自然だと思う。
>>383 ある 1 に特異メソッドを定義して云々、みたいのはできそう。
String が immutable なのは絶対いやだ
JavaとPythonはimmutableだよな。
Objective-Cは……Cocoaの場合、immutableなNSStringがあって、
そのサブクラスにmutableなのがあるんだったか。(実際はもう少しややこしいが)
C++(std::string)、Perl、Rubyはmutable。
個人的にはmutableな方が好き。誰も聞いてないな。スマヌ。
Fixnumというか、Numeric一族がmutableだと、++が自然に実装できる。
が、どうせシンタックスシュガーでも実装できる。
あんま意味ない考察だった。
なぜ String#succ! があるのに、 Integer#++ を作れないんだろう
という話題に近いものがあるのかなあ。
>>388 Ruby や Perl みたいに、文字列操作ガンガンすることの多いスクリプト言語だと、
immutable だったらえらいことになりそう。
文字列の操作はガンガンするけど、 破壊的操作はあんまり使わないなあ。
オレも文字列の操作はあまり破壊的にやらないなあ。
xxx は selfを返すのに xxx! は self を返さない場合がある
→xxx! はメソッドチェーンに使えない
→xxx の方を使うか。
という流れ。文字列に限らないけど。
いろんな処理の結果をまとめるとき、ひたすら result << ... で追加してい
くような破壊的操作はしない?
まあ、 Fixnum#++ と同じように、 << が存在しなくて += を使う、という考
え方もあるが……。
>Rubyの識別子は英文字またはアンダースコア('_')から
>始まり、英文字、アンダースコア('_')または数字からなります。
(リファレンスより)
>真偽値を返すメソッド名は、動詞または形容詞に`?'を付け、
>形容詞に `is_'は付けない。
>例:
>visible?
(Rubyコーディング規約より)
下記の場合だけ例外的に?を許すんですか?
visible?の結果を返すために@visible?という変数を作ろうと
したらエラーでたんで違和感があったのですが。変数だけ
@visibleにするとattr使えませんよね?
あと詳しく調べたわけじゃないんですが、RDocがバカ正直に
上のルールを適用しちゃってるみたいで、?がついてる名前を
メソッドとして認識してくれないみたいです。HTML化したとき
リンクを貼ってもらえなくて困ってます。私の使い方が
間違っているのでしょうか?
皆様のアドバイスをお願いしたいです。
>>395 前者の質問は
def visible?
@visible
end
後者は知らん。
>>396 回答ありがとうございます。
ちょっと説明が足りませんでした。私が言う違和感は、
同じ意味を持つものなのにメソッド名と変数名が違うのは変じゃないか
って意味なんです。
例えばcountってメソッドがクラス内のある変数を返すとき
@countを返すのが自然ですよね?だとしたらvisible?
が返すのは@visible?であって欲しいってことです。
attrってそういう使い方を想定して用意してあるものだと
私は解釈してるので、真偽を表す変数だけ
attr :visible?
はできなくて
def visible? ; @visible ; end
とするというのがどうにもスッキリせんのです。
そもそもなんで名前に使えるキャラクタに含まれていない
はずの?が堂々と使われているのかが謎でして。どういう
経緯でこうなったのか知りたいわけです。
俺もその辺、以前から気になってた。
素直に変数名にも?を使えるようにすればいいと思うんだが……
俺、はじめからそう思ってた。
>397はん、わしはそうは思わん。
visible? と聞いているのに,@visible? と返ってきたら不思議じゃろ。
「聞いてるのはわしのほうじゃ、ちゃんと うんとか すんとか応えろ」
とは思われんかのう。行為と状態じゃよ。
>>397 メソッドと変数は違う意味を持ちます。同じ値を返すとしても。
>>397はん
つまりな。見えるけ? という質問しとる感じを'?' で出しとるんじゃな。
せやけど、状態を管理するには、可視(見える、見えん)ちゅう言葉を
使うようにしよやないか、いちいち 見えるけ? とかいう変数があったら、
読んどるほうもせわしない感じやからのう、ちゅうふうに考えたんちがうか。
attr :visible よりも visible? を定義したほうが、メソッドの意味が
直感的にわかりやすい、というサービス精神、ということでまけてもらえんか。
昔は ? も ! も変数名の最後に使えた。
ある日、「それはバグでした」とか言う
よくわからん理由でいきなり使えなくなり、
俺はプログラムのあちこちの修正を余儀なくされた。
よくわかる理由だが。
メソッド名は!や?で終わることができるが
変数名はダメ、とそれだけのことじゃないのかな。
ローカル変数に?を使いたいときもあるのに……シクシク
皆さんご意見ありがとうございます。
同じ疑問を持つ方もいらっしゃるようなのでもう少し突っ込んで
みることにします。
>400 さん >401 さん
行為と状態が別物であるというのは理解しているつもりです。
となると、別物である変数とメソッドをいっしょくたにしてしまう
attrは少々乱暴な存在のようですね。
attrは便利だしソースも見通しがよくなるのですが、使い方を
誤ると混乱のもとになりそうです。自分の中ではattrは原則
使わないようなルールにすることにします。
>403 さん
となると、メソッド名でも「それはバグでした」で変更される可能性も
ありってことになりそうですね?「使ってよい」とはどこにも明記
されていない(?)ようですから。使うほうの立場としてはどこかに
明記してくれないと怖くて使えないですね。
>405 さん
エラーにはならない=使ってよいではないと思います。
単に私の調査不足ってだけで、ホントはどこかに「使ってよい」
と記述されているって話ならそれで納得できるし安心して使って
いけるのですが。
このへんのところがはっきりしていないからRDocの作者も
名前の識別を[A-Za-z_]にしちゃったんじゃないでしょうか?
RDocはRuby標準添付で、標準ライブラリにはRDoc文書を
添付せよという話になっているようなので、このまま放置
するとあちこちで不都合が起きるんじゃないかと思います。
変数名に?が使えると三項演算子がややこしくなると思うんだが。
特に ? で終えたい変数って真理値が多いだろうし。
>>408 とはいえメソッド名に?がついても十分ややこしくなると思うのよなあ。
>397はん
よう考えてはる。勉強になるわ。
ほんでな、
>別物である変数とメソッドをいっしょくたにしてしまう
>attrは少々乱暴な存在のようですね。
まずインスタンス変数ありき。
それへのアクセサ(引用(および設定)機能を持つ、変数と同一名のメソッド)
を簡易に定義するメソッドとしてattrがあると思うとるんじゃが、
いっしょくたにとは、どないな意味?
叩き台にどぉぞ。
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
>>412 名前がアレかもしれないけれど、それイイね。
414 :
デフォルトの名無しさん:04/12/24 19:43:53
ファイルの所有者を変更するには、どうしたらいいでしょうか?
RubyでWin32のOutputDebugStringってどう呼ぶの?
cygwin版とVCでビルドされたもの両方から呼べる?
>417
呼ぶだけなら
require 'dl/win32'
func = Win32API.new('kernel32', 'OutputDebugStringA', 'p', '0')
func.call('hoge')
でもこのAPIって、Visual Studioなり、なんかIDEのデバッガの中でプロセスが動いてないと
何にも表示されないんでない?
# ちなみにcygwin版は試してない。スマソ。
WebDAVのサーバー側ライブラリってありますか?
ご意見ありがとうございます。
>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は使わない
方針になりそうですが、いざというときには使えそうです。
>>418 うまくいきました。
# 本当は宣言済みのものがあるのかと期待してたんだけどさすがにないか・・・
>でもこのAPIって、Visual Studioなり、なんかIDEのデバッガの中でプロセスが動いてないと
>何にも表示されないんでない?
全てのプロセスのODPの出力を受け取ってstdoutに吐く
コマンドラインツールを作ってあるのでそれを起動してれば取れます。
これでcgiのデバッグがかなり楽になります。
ありがとうござました。
スマヌ、2行目
func = Win32API.new('kernel32', 'OutputDebugStringA', 'S', '0')
の方がよさげorz
>>420 うーん、一本とられたわい。
もうこの話は終わりのようじゃが念のため。
メソッド名はvisible、変数は@visibleで、「@を除いて」を省略した言い方をし
とるんだが。別にメソッドと変数を一緒くたにはしてないがのう。
変数名に?が利用できないのは事実じゃが、それは別にattrのせいでもなかろう。
「かなえられない夢(?の利用)」を思い出して嫌なんかも知らんが、attrファ
ミリー自体は、attr_accessor(読み書き両用),attr_reader,attr_writerとそ
ろっておって、クラス属性の宣言手段として結構なものだがのう。特に変数の数
が多いときはカンマで続けられるから便利じゃ。attrを毛嫌いするのは、attrが
不憫じゃ。まあ、好きずきじゃが。
単純な参照(および設定)だけならattrファミリーで良し。細かいことしようと
思えば明示的にメソッド定義して、使い分けすれば良いだけの話じゃ。
一つ質問させてください。
現在製作している WikiClone に、差分表示の機能を取り込みたいと思っています。
しかし「Ruby 差分」でググってみても、それらしいライブラリが見つからず……。
自力で差分表示のアルゴリズムを実装するしかないのでしょうか?
diffでぐぐるといいよ。RAAにもある。
バージョン管理がまず必要。
CVSかRCSか何かを利用したほうが良い。
当然このなかに差分をとる機能があるから、これを使う。
pureRubyでバージョン管理できるライブラリがあったら使いたい。
でも、別途インストールしろというのは無理があるのでは?
好きな人がいるのは理解できるけど。
とりあえず最新版+前回分とのdiffだけ持ってればいいんじゃないの。
履歴なんて後からどうにでもなるし。
# どーでもいいけどRWikiの差分diffの結果をべたっと貼るだけって手抜き杉
そうでもないよ。Wikiって、ちょこちょこ編集が続くことがあるから、
直前のだけだとよくわからないことがよくある (typo修正しか見えなかったりね)
>>425 情報ありがとうございます。無事見つかりました。
>>426 ごめんなさい、バージョン管理はすでに独自のもの(コピーマージ式)を実装済みです。
一度はCVSを使おうかとも思ったんですが
組み込み方がさっぱり分からなかったので止めてしまいました。
ところで、RAAの中のアルゴリズム実装を探してみたところ
「diff」「simple-diff」「diff-lcs」「argorithm-diff」の四種類が見つかったのですが
そのうち、はじめの二つはリンク切れで落とせず。
残ったdiff-lcs と argorithm-diff 、いったいどういう違いがあるのでしょうか?
CVS は BitChannel が使ってるよね。
Hiki は CVS と Subversion に対応してた気がする
出自の違いですね。
diff-lcs は perl での実装を移したもの。
argorithm-diff は、rubyによるWiki実装であるTikiから切り取ったもの。
(登録者はTikiとは関係ありませんが。)
採用しているアルゴリズムも異なるかもしれません。
代表的なものでも数種類あるので。
双方に対して、速度とかテストしてみてよかった方を採用しては?
将来的なメンテナンスという面では、diff-lcs かな。
Pukiwikiが流行るのも分かる気がするよ
PHP だしな。
436 :
デフォルトの名無しさん:04/12/25 21:31:20
誤爆ではないだろうな。
437 :
デフォルトの名無しさん:04/12/25 22:43:04
Rubyの開発環境っていいのないね
emacs の ruby-mode があるしねえ。
俺は vim 使ってるけど。
コードアシストのない環境でよくできるね。
プログラムが大きくなると、
いちいちメンバの名前を覚えられない。
別にいちいち覚えないよ。
UnitTest 書いてクラス作ってと足場を固めるように
作成するから一度に把握しなければならない範囲ってそう広くないし。
>>423 一字一句までごもっともです。いい勉強になりました。
お付き合いありがとうございました。
>>404 詳細希望。blade見たけど探しきれなかった。
>>433 解説ありがとうございました。
大きな差はないようなので、とりあえずは patch の入ってる diff-lcs を使ってみることにします。
>>446 VisualStudio か Eclipse 以外は良いとは認めない人だと思う。
450 :
デフォルトの名無しさん:04/12/26 13:50:10
IDEに最低必要な機能
-コードアシスト
-デバッグ情報表示
-クラスビューワー(クラスのプロパティ、メンバの表示)
(メンバをクリックすると定義部分へジャンプ)
-定義文へのジャンプ
あと、できればGUIエディタかな。
RDEって後ろの2つないよね。
>>449 ちなみにEclipseでRubyできるよ。
>ちなみにEclipseでRubyできるよ。
は
>IDEに最低必要な機能
を満たしてるの?
>>450 >RDEって後ろの2つないよね。
待て。クラスビューワーは普通にある。
あと「定義文へのジャンプ」は、そもそもRubyの文法上難しいと思う。
453 :
デフォルトの名無しさん:04/12/26 14:56:42
FormDesignerに、それなりのIDEがついたら、Windows環境は合格なんだけどな。
クラスビューアって作れなくない?
ソースなめただけで解る分だけ作ってるのかな。
ObjectSpace 使えばできるんじゃない。
>453 と本スレ >52
どっちが早く実現するんだ?
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
%
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 のところ、条件すり抜けとる気がするのですが、気のせいですよね?
気のせいじゃない。
誰だこれ書いたの…
まだsnapshotなので
正式リリースを震えて待て
>>460 そうします。
# わたなべさんとこ見て萎えた。
ここは萎えるインターネットですね
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]
>>463 普通の Array 。要素は全て Symbol 。
465 :
デフォルトの名無しさん:04/12/27 20:03:35
>>464 感謝。
シンボルというのはenumみたいなもので、
他のシンボルとは被らないランダムな値が入ってるもの
ってことですね。
MD5みたいな感じですか。
467 :
デフォルトの名無しさん:04/12/27 20:52:46
>>466 だいじょぶです。
今、hikiのソースコードを読んでrubyを覚えよう作戦を
実行中なんですが
rubyのwikiで一番有名なのってなんですか?
468 :
デフォルトの名無しさん:04/12/27 20:55:09
469 :
デフォルトの名無しさん:04/12/27 21:05:08
ちなみに、シンボルはオブジェクトということで
階層化可能だと思うのですが、
モジュール内部のみで有効なんですよね・・・
>>447 それってメソッドでも同じことが当てはまるような…
Kconv::kconvが内部でNKF使ってるとはしらんかった
(つーか、たまにはソース嫁自分orz)
Jcode.pmとかベタ移植したら使い物にならんもんだろうかと言ってみるテスツ。
>>471さん
「それ」を具体的に言ってみてください。
>>472 Kconv は単なるガワだからね。いずれ deprecated になるんじゃないかな。
nkf2 使えばいいかと。
>>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の短所かも。
デフォルトでMIMEデコードするnkfを
そのままエンコーディング変換の用途で使うなんて正気の発想じゃない。
>>476 シンボルはモジュールが違っててもひとつの Ruby プロセス内なら同じ。
>>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っていうのがあれば、教えてください。
>シンボルはモジュールが違っててもひとつの Ruby プロセス内なら同じ。
がーん。
グローバル変数と同じくらい危険じゃないですか。
>>481 個人的な考え
sendはリフレクションAPI(だと思う)から
基本的には使わないことがベター。
保守性を無視して楽したい時に使うといいと思う。
可読性とセキュリティーの点でsendは使うべきじゃない。
483 :
send難しい:04/12/28 13:38:28
>>482 なるべく使わない方がいいってことは分かったんですが、
保守性を無視して楽になるって、どういうことですか?
もうちょっと、楽できるってことを、具体的に教えてもらえませんか。
今日の教訓
requireの順番入れ替えたらエラーorz
グローバル変数は使わず
インスタンスに渡してあげよう。
も1つ
違うファイルで定義された関数を呼び出すとき
その定義場所がわかるように記述しよう。
例えば、クラスのメソッドにして、クラス名から
どこのファイルに記述してあるかわかるようにする。
(1クラス1ファイルでクラス名=ファイル名にするといい)
rubyも使い方を誤ると簡単にperl化しちゃいますね。
>>483 なんでわざわざ send 使おうと思っているのか、そっちの方が気になる。
>>482 危険かね?危険な状況に陥るケースが思いつかないけど、例えばどんな?
> グローバル変数と同じくらい危険じゃないですか。
シンボルがモジュール毎に異なってたら使いもんにならんよ。
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とかされて悲劇が起こることも。
>>489 >例えば、オブジェクトをハッシュに詰め込むときに
>オブジェクトのクラスはハッシュ値としてシンボルを返すとすれば
ちょっと意味不明。 Hash とは別に独自のハッシュテーブルを作る話?
489 のレスはどっか全体的にズレてるというか、
途中の思考過程をすっとばして書いてるように感じるんだよなあ。
長文になってもいいから、順を追って書いてくれると助かる。
>>481さん
rubyマニュアルによれば、sendの意味は下記のとおり。
send(name[, args ... ])
send(name[, args ... ]) { .... }
オブジェクトのメソッド name を、引数に args を渡して呼び出し、メソッドの
実行結果を返します。ブロック付きで呼ばれたときはブロックもそのまま引き渡
します。
メソッド名 name は文字列かSymbol です。
send は、呼び出し制限 にかかわらず任意のメソッドを呼び出せます。
以下は実際に使ったことはない私の単なる想像上の用途。識者の指摘を待つ。
(1)nameを動的に変更して何らかの作業をさせたいとき。
(2)privateなメソッドでもsendは実行できるから、呼び出し制限はあえて破りた
いときに使う。
>>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
>>487 今からでも遅くないから、リファレンスマニュアルのkconvのとこに
"内部でnkf使ってるので、MIMEエンコードに見える文字列はデコードされます"って
書いてきてくれよ。
自分で書けばいいのかもしれんけど、俺もうRuby見捨てちゃったからさ…
>495
月狼か?
>>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
>>497さん
ありがとうございました。代理パターンですか。
なるほど、勉強になります。
libをgrepすると結構sendは使われてますね。
>>494 テスト・ケースでprivateメソッドを単体でテストをしたい場合。
>492
フレームワーク的なクラスを作ってるときは(1)の用途でよく使う。
「このクラスを継承して、"on_ほげ" ってメソッドを定義すると"ほげ"ってイベント
を受けたときに自動的に呼びだします、とか。
おれがRuby嫌いなわけがわかった
行指向パーサだからだ
499,500さん、説得力ある回答です。
481さん、こんなところでいいかな、sendの件。
おかげで勉強になったよ。やっぱり存在してるものは、それだけで尊いんだな
あ。
行指向だから嫌いだ、と書いてあるわけだが
hoge =
method1(a,b,c) +
method2(a,b,c)
みたいな変態なソースを書かされるから。
hoge =
method1(a,b,c)
+ method2(a,b,c)
だろ不通。
突然質問してもいいでしょうか?
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!とならない方法を知ってる方いませんか?
>>507 上は変態で下はノーマルなのか?
フェラはいいけどアナル舐めはやめてね、みたいな話だな。
まあ個人の好みの話だからどうでもいいが。
>>507 下のほうが変態だ
上のほうがmethod2との関連性が明白だ
それとも、まだ何か漏れの知らない変態要素があるのだろうか
ソースの切り貼りするときのこと考えても、べつにどっちでも変わらんし
数学では上のように書くことはありえない。
その意識があれば上を変態的と思うのは間違っていない。
むしろ好んで変態的に書くのが気持ちいい
楽天が PHP、はてなが Perl、なら ruby は?とふと思いました。
ruby で作られた有名な中規模〜大規模の Web サイトはありませんか?
>>507 俺は下だから変態か。メンテが楽なんだよね。昔どこかのソースで
hoge=[1,
2,
3,
]
って書き方見て蕁麻疹でそうだったよ。最後のカンマは
何なんだ?
(セパレータではなく)デリミタとしてのカンマ。
要素の追加時に変更が追加行だけで完結するので有利。
>>515 C言語でもやるじゃん
int main(){
int a[] = {1, 2, 3, };
}
普通、スタイルは人それぞれ。名前空間ごとに独立して存在しているのだ。
「普通」とか「変態的」とか「純愛」とか
人それぞれだから要注意だねというお話でした。
てか行指向がどうのとかぶつぶつ言ってた人って、
Cのプリプロセッサはやっぱり一切使わないのだろうか…
Cのプリプロは\で続けられるから関係ないだろ
Rubyはどっかで勝手に改行したり空白入れるだけで
意味が違ってくるからヤバイってことだろ
Rubyも\で行継続できますけど。
空白入れるだけで意味違ってくるのは
プリプロセッサも同じなんすけど…・
ここは屁理屈なインターネット
屁理屈というかなんというか。屁理屈こねてる自覚はありますけどw
でもCのプリプロセッサはどうなのよ、って単純な疑問でもありました。
>>525 Ruby では演算子でさえもメソッド。
と言えばあとはわかるよな?
>>525 知らなければ知らなくてもいいと思うんだけど。
アクセサ系を作るときにインスタンス変数の@を:に変える、って程度で考えておけば。
あとHashのkeyによく使うかな。
:+の使い方としては、
1.send(:+, 2) # 3
とかかな。
実際のところはRubyでのシンボル(変数名やメソッド名など)を
識別するのにシンボルを当てて使うというインタプリタ内部の
実装を表に出して解放したって感じ。シンボルの実装は整数だから、
文字列をあれこれするより圧倒的に速い。
う。「シンボル」ってのがRubyでのSymbolと識別子としてのと
両方同じ言葉を当てて説明してしまった。
適宜文脈から読み替えてくれ。わかるよね(汗
ありがとうございます。
そうすると、
変数 変数名 シンボル
------------------------------
? 文字列 整数
というような対応関係があるんですね。(?のところはポインタみたいなものですか?)
そして、(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 というのは目的が違うんですね。どうちがうんですか?
RHG でも読んだ方が良い悪寒。
ああ、もしかして
>>489 は Object#object_id と Object#hash と Symbol#to_i とを混同してたのか?
534 :
デフォルトの名無しさん:04/12/30 00:07:59
>>516 それはわかるんだけど、最後に一個余分な要素ができる(んだよね?)
からsizeとかでひどい目に会うって話はない?
それは誤解
酷い目にあうぞ
試せばいいのに……
$ 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
>>540 ないよ。俺はそういう書き方しないしね。
俺が浅はかでした ○| ̄|_
>>542 書く前にちょこっと確かめてみりゃいいじゃんよ。
ruby -e 'p [1,2,3,].size'
だけで確認できるんだから。
師走だからねぇ。あしたで今年も終了か。
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)
となっております。進退きわまっているので、他に設定ミスの
可能性があったら教えてください。
>>546 そのエラーは Ruby が migemo の実行プログラムを発見できてないというエラー。
-S はサーチパスから探すんだから、 まずやるべきは which migemo だと思う。
正しくロードできるかどうかの確認は、
ruby -e 'puts(require("migemo"))'
とか。この場合、 true と出るなら正しくロードできている。
>>546 それは migemo.rb(ライブラリ) ではなく migemo(本体) が見つからない、というエラー。
どうやって入れたか分からないけど、/usr/local/bin あたりに入ってない?
$ which migemo
してみるといいかも。
この時間帯にカブるのかよorz
>>547 ruby -r migemo -e ''
でエラーにならなきゃいいんじゃない?
>シンボルとObject#id というのは目的が違うんですね。どうちがうんですか?
の質問に対して、
>知らなければ知らなくてもいいと思うんだけど。
と回答もらいました。たぶん、これが正解だと思いました。
初心者にとっては、何が重要かわかりにくいです。
かたや、すべてのオブジェクトに対し番号をつけてオブジェクト同士が同一であ
るかをチェックする目的で使い、かたや、文字列にユニークな番号をつけて引用
参照などの際の引数に使う。
前者は同じ名前でもidは変わり得るが、後者は常に一定に保たれる、
ぐらいに考えておきます。ありがとうございました。
>>551 「目的」もなにも、まるっきり関係ない別物。
一から十まで違う、としか答えようがないんだが。
>>547-548 ライブラリが見つからないものと思いこんでドハマリでした..
ご推察の通り/usr/local/binにパスを通して動きました(涙
ありがトン!!
,,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
交わされています。われわれ初心者、中級者にも参考になりますよ。
= は イコールではなく代入ってイメージからすると、
だったらパラレルポート覗きたいんだが?
こちらこそごめん。
うんこじゃできないのね。
「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
.劣悪な言語に正解はない。全部やれ。
漏れ儲でもなんでねねぇーけど、ここでクソ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初心者なら彼の訓えを請うべきだね
許さないな。
: 【最高劣悪な言語】 クソ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になったけど。
って、どういう劣悪なコードが書いてあるんでしょうか?
更新がかかるとカキコするのかこのアフォ荒らしスクリプトは。ちょいとテスト
?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が作れない』『自己記述ができない』『マイナーすぎてレンタル鯖で使えない所が多い』・・・
?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.
?7#!/usr/local/bin/クソruby
. / / ミ R 彡
まさに変数入れ物説と変数ラベル説の論争が、さんを交えて行われたのです
require 'nkf'
#define で "."
このリンク先の説明のパラグラフは未稿なのでしょうか?
def visible?
send は、呼び出し制限 にかかわらず任意の劣悪なメソッドを呼び出せます。
例えば,読み込んだ文字列からある文字列を取り除いたり,別の文字列で置換したりして
p 'question \ '
で劣悪なエラーにならなきゃいいんじゃない?
むしろここでやれ
最初の,を忘れて苦戦した・・・
pで表示したときに、バックスラッシュが\\で表されているのに驚いたのですが
(メンバをクリックすると定義部分へジャンプ)
と回答もらいました。たぶん、これが正解だと思いました。
----- クソRuby ------
: ((|msg|))
行クソ指向だから嫌いだ、と書いてあるわけだが
?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.
?7def visible? ; @visible ; end
「かなえられない夢(?の利用)」を思い出して嫌なんかも知らんが、attrファ
多分、こういうことも考えて無理と言われてるような気もするのですが、どうでしょうか?
kconv.pl の Kconv::kconv を見てみたところ、
> クソRubyのバナーが投下された模様。
……なして誰もIO#binmodeのこどしゃべね?
って意味なんです。
クソRuby!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
考えるとキリがないので、とりあえずお茶を飲みます。
ロクに調べもせずに発言してるのがバレバレですね(恥。
それって劣悪なメソッドでも同じことが当てはまるような…
禁断の$KCODE="SJIS"は試した?
def initialize() @ふが = 'fuga'; end
でcoreを吐くという問題の原因がわかりました。
ensureがある。
わかりやすい。
それぞれインストールはうまくいったものの、
httpd.start
突然質問してもいいでしょうか?
劣悪なメソッド側で値を変更されることはあり得るよ。
クソ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)
そこでテストをソースに埋め込むんですよ。
シンボルについて質問です。
#!/usr/local/bin/クソruby
. / / ミ R 彡
まさに変数入れ物説と変数ラベル説の論争が、さんを交えて行われたのです
require 'nkf'
#define で "."
このリンク先の説明のパラグラフは未稿なのでしょうか?
def visible?
send は、呼び出し制限 にかかわらず任意の劣悪なメソッドを呼び出せます。
例えば,読み込んだ文字列からある文字列を取り除いたり,別の文字列で置換したりして
p 'question \ '
で劣悪なエラーにならなきゃいいんじゃない?
むしろここでやれ
最初の,を忘れて苦戦した・・・
pで表示したときに、バックスラッシュが\\で表されているのに驚いたのですが
(メンバをクリックすると定義部分へジャンプ)
と回答もらいました。たぶん、これが正解だと思いました。
----- クソRuby ------
: ((|msg|))
行クソ指向だから嫌いだ、と書いてあるわけだが
このへんのところがはっきりしていないからRDocの作者も
RaccおすすめだよRacc
ちょっと、うーん、という感じがしますね。
行クソ指向パーサだからだ
「劣悪なメソッド名には Symbol を使う」という原則を、どこかで聞いた希ガス。
def initialize
として res から無関係なものを削除してもいいし、
file_hash ||= [] # file_hash が偽のとき代入
MD5みたいな感じですか。
ログの頭にゴミがありました。再カキコします
逆に言えば、Makefile見りゃわかる。
むしろ
となっており、
eucかshift jisのどっちかで書いてみて。
3. 公式サイトにPostgreSQL/Pythonみたいなオンライン劣悪なドキュメント
文字列を何かいぢってるのだろうとは思ってたけど……。
p ary.fill(0,3) {|i| i} # => [0, 1, 2]
わかる人、教えてくだちい。
こういう記号ってリファレンスを全文検索しようにも、関係ないのがたくさんヒットして困るんだよなあ。
「記号が多く使えるから良い」というのは幻想のように感じる。
ハッシュのキーにシンボルを使うと実行効率で有利ってのは
ちなみにWindowsユーザーです。パラメータとかコンソールとかの使い方程度は解ります。
と言えばあとはわかるよな?
def to_s
ってチンポ立ててる自分を
WindowsではCRLF
opt << 'w'
そうすると、
空行区切りで読み込めば、あとは先頭の文字列で
難しい。
文字劣悪なコードを合わせて保存したファイルを読み込んでも同様。
クソRubyには「文字」というのが存在しないから。
と書いてありました。
inspectで検索すると、るびまにも同じような話がのってました。
クソrubyの正規表現で最適化ってある?
chmはProgramming クソRuby--onlineにある。そこの リンクスから辿れる。
特に ? で終えたい変数って真理値が多いだろうし。
1.8.2以降は、p 劣悪なメソッドで#もエスケープされるってことか。
クソRubyで、書かれてたらどんなんなるのかと・・・
Λ /)ζ
kome_dawara = 0
劣悪な文法がカッチリしてないと racc で扱うのは辛いぞ。
:+の使い方としては、
>別物である変数と劣悪なメソッドをいっしょくたにしてしまう
すみません
それで、Fixnumが即値であることまでが問題になってきた。
劣悪なメソッド名や変数名がちょっとこなれてない感じするけど
xxx は selfを返すのに xxx! は self を返さない場合がある
「82 A0 82 AF 82 A8 82 DF」
わかりやすい。
そんなことないか。。
print(" " * count)
#define を "."
自分をブロック引数にして @onclick の Proc の処理を実行できる。
処理を定義してあるところに、引数を渡すって感じでわかりやすいのに、
それ、修正がラクかな・・・?
def self.にゅー() self.new; end
test
気のせいじゃない。
あと「定義文へのジャンプ」は、そもそもクソRubyの劣悪な文法上難しいと思う。
bottun = Button.new('before')
和訳は出るんでしょうか?どこかで翻訳作業が進んでますか?
なるほど。そういう手があるのですか。勉強になります。
単純な参照(および設定)だけならattrファミリーで良し。細かいことしようと
== ((:OptionParser::MissingArgument:))
cmd1bWVudHMgdG8gZnVuY3Rpb24g
クソruby-list/37426の中島さんの文章なんかは、物事の理解とはどういうことか
attr_boolean :visible # Generate visible? method
でもあれだけ決まりがないフォーマットを扱うのに最適な解はRacc辺りと思われ。
まあ、 Fixnum#++ と同じように、 << が存在しなくて += を使う、という考
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ってそういう使い方を想定して用意してあるものだと
他のシンボルとは被らないランダムな値が入ってるもの
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
値の状態なら変更可能ではある。
クソRuby や Perl みたいに、文字列操作ガンガンすることの多いスクリプト劣悪な言語だと、
n = ARGF.read.scan(/米\n*俵/).size
サイズだけじゃなくて、チェックサムとかを比較したほうが。
a.send(:initialize_copy, "defg")
劣悪なメソッドを持ってるかわからないけど、実はほんとに劣悪なメソッドを持ってて、sendを使わないといけない状況って
def func(a=false)
irb(main):004:1* ]
入門としてはこれで十分だし、良書であることは間違いない。
val の代わりにブロックを指定するとブロックの評価結果を値とし
でもあれだけ決まりがないフォーマットを扱うのに最適な解は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)は実際には他の劣悪なオブジェクトとは違って例外的に即値だから、
どうすればいいでしょうか?
どぞー
それで、それが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でデータを読みだすんですが
たとえばBignumは即値じゃないけどimmutable。
/|√ クソRuby >>>>>>>>>>>>>>>>>>>>>>>> Python_○√ ドーン
f = File.open("test.txt", "wb")
引数にデフォルト値を入れることで対処するのが普通。こんな具合。
(src + 1).upto(size - 1) do |dst|
SomeClass.new.Action
示せばいいだけか。最後の2行余計だし orz
クソRuby作者のような結果を出した人間と自分との格差を認められず
def dance;puts "I'm dancing";end
「処理自体は非常に単純」ぢゃなかったの? 最初からきちんと書こうよ。
識別するのにシンボルを当てて使うというインタプリタ内部の
人それぞれだから要注意だねというお話でした。
もともとのiconv_openに準拠したんだろうね。
class HiddenOne
藻前はi18nな劣悪なアプリを作りたいの?
>151さん
名前がアレかもしれないけれど、それイイね。
pdfかpostscriptで配布されているクソrubyのチュートリアルか入門が
if File.directory?(path + "/" + f)
にしたほうがいいかも。
クソrubyじゃできないのね。
クソRubyでWin32のOutputDebugStringってどう呼ぶの?
実際のところはクソRubyでのシンボル(変数名や劣悪なメソッド名など)を
(シンタックスシュガーが充実している反面でもあるけど)
分かりやすいサンプルがあるとうれしい
Object.__send__(:remove_const, :SomeClass)
わかりやすい。
hanbai += 1
こういう記号ってリファレンスを全文検索しようにも、関係ないのがたくさんヒットして困るんだよなあ。
作品として公開されたものが批評されるのは当たり前の事だが、
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! は劣悪なメソッドチェーンに使えない
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作っている香具師がいたのか。
のどちらかが、おかしいのかも。
require file
a には再代入してない訳で。
漏れは劣悪なメソッド内劣悪なメソッドを実現する方法として Proc を使ったりするけどなー。
許さないな。
6.19s user 0.34s system 99% cpu 6.553 total
sendにはまった。
#define HOGE "hoge"
> あるとき クソRubyで書き直すことにした。
これ Perl も同じじゃん。
の環境で、Webrickを動かしているのですが、微妙な劣悪なエラーが出て困っています。
ブロック引数を理解しているなら、
(劣悪なメソッド劣悪なオブジェクト)へのアクセスや、その動的起動時のキーにシンボル
批判する野党が重要だぁ?プ
もうひとつ教えてください。
どうなんだろう。
「劣悪な劣悪なメソッド名には Symbol を使う」という原則を、どこかで聞いた希ガス。
ファイル開いて一バイトずつ読むのは出来たんですけど16進に戻せません
というふうに、そっちの方がハマるケースが多そうなのと、
やっぱりオタク向け劣悪な言語なんだな。
ローカルの鯖ならいいが
思えば明示的に劣悪なメソッド定義して、使い分けすれば良いだけの話じゃ。
> string.h 他いくつかのヘッダが見つからないと怒られるし。
sheet = book.worksheets('Sheet1')
劣悪なコードを見せれ。
これで劣悪なアプリの雛型できるから適当に遊んでみ。
そして切り出したものを、変数や、配列に記憶する。
劣悪なドキュメントのサイトもテンプレに入れるんじゃなかったの?
>劣悪なオブジェクトの状態を変えるのであれば、
ローカルのテキストファイルに書き出すという処理です.
気が利かなくてすいませぬ。
それ、読みやすいかな・・・?
リンクを貼ってもらえなくて困ってます。私の使い方が
俺は他の劣悪な言語でも前者。
おおっ、そんな方法があったとは!素晴らしい。
ちらっと見ただけだが、transgraphicのform_id_sは
クソruby -e 'p File.read("filename.txt").scan(/米俵/).size'
s = f.read(1)
オフィシャルページについて外人のだめだし
これを回避する方法はありますか?
------- C -------
@countを返すのが自然ですよね?だとしたらvisible?
を実行せずに pid に子劣悪なプロセスのidが確保される。これは何に使うかという
可能性があったら教えてください。
attr_boolean :visible # Generate visible? method
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ワードですから〜
「劣悪なオブジェクトに対応する整数(Object#id で得られます)と Symbol に対応する整数は別のものです。」
そこらへんをKconvが和らげてくれているもんだと思ってました。
ありがとん。
これができるのはStringだからであってFixnumでは無理。本題から外れてるぞ。
def func()
attr :visible?
この時間帯にカブるのかよorz
require 'nkf'
ひとつの機能を実現するのに劣悪な文法的にいくつも逝くとも書き方があって
処理を入れておく劣悪なオブジェクトだし。
からsizeとかでひどい目に会うって話はない?
変数は劣悪なオブジェクトではなく、それを指すラベルでしかない。
test
ありがトン!!
_ ∩
Dir.foreach('.'){|file| }
inspectっていう劣悪なメソッドを知りませんでした。
puts res
そのプロジェクトってクソ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')
なぜ、行クソ指向は嫌いなのか
回避策はあるでしょうか?
使わないようなルールにすることにします。
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([])
するのが普通じゃないの?
けれど、に関してだけいえば
自尊心を慰めてるにすぎない。
- 構文が複雑。シンプル化も進まない。
で劣悪なエラーにならなきゃいいんじゃない?
./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と、インスタンス劣悪なメソッドとしての呼び出しって、どういう違いがあるんでしょうか?
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?であって欲しいってことです。
もうこの話は終わりのようじゃが念のため。
何だろうね、この書き込みは。
家族そろって過ごせない人にとって、年末年始ってすごいストレスになるん
だろうな。ある意味、哀れみが ひとしお 高まるね。可愛そうなひとだね。
ランダム文章発生器ぐらいでしか、ストレスを発散できないんだね。
このくらいにしておかないと、自分への嫌悪感もそれだけ高くなると思うん
だがな。(常識が少しでも残っているひとならという前提だけど。)
まあ、いずれにしても病院行って総合的に見てもらったほうがいいよ。
叩きとはいわない穏やかな表現だけれど、
クソ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')
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の劣悪なメソッド呼び出しは値渡しなので
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
なかなか辛そうに思うのだが、クソRubyに限らずそういうのを自動化するのって
変数は指してるとこ同じでも、変数は違うからいいんじゃない?
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
それはそれとして
= 関連.クソスレ
だからなに?という感じではあるが。
特定のディレクトリに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'
他のシンボルとは被らないランダムな値が入ってるもの
p はデバグ用なんで、バックスラッシュとかダブルクォーテーションとかは
php は最近検索窓に関数名の補完までついて超便利。
できれば出力変換仕様 (sprintf フォーマット) を自由に指定したいのと、
そのうち、はじめの二つはリンク切れで落とせず。
でも、それはどの様に実現しているのでしょうか?
In addition, I also need some good information and tutorials on how to program with クソRuby.
クソrubyもいいけど、スポーツもしようね。
また大盛りかりのこは、いふもおろかなり。
クソrubyマニュアルによれば、sendの意味は下記のとおり。
クソruby起動するときにソースにプリプロセッサというかフィルタかませたり出来ないの?
>>632 うそついちゃいかん
を使ったりもするけど、それとは関係あるのかな?
これ例えば何のことを言ってるの?
$ ls /usr/lib/クソruby/site_クソruby/1.8
RipperTutorial.TokenStreamInterface
出自の違いですね。
その16進を表示したいのですがどっかにサンプル無いでしょうか
ぐらいに考えておきます。ありがとうございました。
あまつさへ、てて様は特盛頼まうわいの、など言ふ様こそ、かたはらいたけれ。
わかる人、教えてくだちい。
修正されたものは公開されてないでしょうか?
効率。
クソRubyの内部で、バックスラッシュが\\で扱われるってことではないんですね。
もっとも判りやすいケースだと、どの尺度で測定しても同じほうが勝っている場合とか。
以前、uconv 使って問題無かった記憶があるから探し出して真似て凌ぐか……
……なして誰もIO#binmodeのこどしゃべね?
"question #{a}"
「もはやPerlに学ぶべき事はない」
> string.h 他いくつかのヘッダが見つからないと怒られるし。
仕立て上げたいと思っています。2年かかるか、
あと、いま思いついたが、ブロック付きの場合
汚らしい奴等。最低の豚ども。
が返すのは@visible?であって欲しいってことです。
はできなくて
クソruby -e 'p [1,2,3,].size'
他の大文字は入力することができます.
>>266 4:【ダウンロード]を目立つように
ってきしゅつ?
確か nkf は本家の方も劣悪なバージョンによって
でも、これもたぶん仕組み上Fixnumでは無理。
されていない(?)ようですから。使うほうの立場としてはどこかに
>280 すみません
>>266 の言う通り「マイナーな劣悪な言語のまま」終わるだろう。
クソRubyは最高劣悪な言語です。それはもう疑いようがないほど。
じゃなくて
JavaでいうところのByteArrayOutputStreamみたいなものだ。
よろしく。
劣悪なドキュメントのサイトもテンプレに入れるんじゃなかったの?
「要求を満たすかどうか」なら有るとは思います。
大きな差はないようなので、とりあえずは patch の入ってる diff-lcs を使ってみることにします。
参考までに
それは g がパラメータにすべきオプションか
>>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 の処理を実行できる。
様は既に世界最高の至高プログラマである。
>>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 と書かれてしまう、ということは、
相当差が出るケースくらいで、普通に文字列使ってるなあ。
かずひこさんって実年齢は結構いっているんですね。
「破壊的劣悪なメソッド」あたりを調べれ
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.
> 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 単純に、当時rubyに添付されていたnkfはurf8非対応だったからじゃないの?
utf-8対応と一口にいうがUnicodeの世界の事なのでいろいろある。
たとえばnkfはutf-8と既存コード体系との変換テーブルを固定で一つしか持っていない。
それがおたくのDBのデータにマッチしているかどうかは、自分で調べてみないとわからない。
>>625 あ、なるほど。Google で「ruby utf」を検索すると
いろいろな情報があり混乱していました。ありがとうございます。
>>626 そうですね。PostgreSQL の UTF-8 なのですが、稼動実績はありますか?
>>777 邪素楽に通報して良い?
不憫じゃ。まあ、好きずきじゃが。
filename=""
クソruby 1.8.2 (2004-12-25) [i386-freebsd4]
とあった場合1097を得たいのですが
もともとのiconv_openに準拠したんだろうね。
効率。
「82 A0 82 AF 82 A8 82 DF」
require 'jcode'
少しはマトモな議論に戻ろうぜ
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
素人。
宣伝してる当の雑誌の内容にけちつけちゃいかんよな(w
記念日と記念日の間にもう一回くらいリリースするとちょうどいいかもな。
>>438 str.replace("") ですかね?
>>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|...}っていう文法に目からウロコが落ちました。
これはいったい何の言語のパクリ?
>>632 Smalltalk っぽいけど、ほかにもあるかも。
634 :
デフォルトの名無しさん:05/01/05 00:01:29
>>633 こんな変態文法、Smalltalk 以外になにがあるっちゅう
数学から来てたのかなと思ったおれ。
集合を表すのに{|x| x ∈ 自然数}とか書くじゃん。
636 :
632:05/01/05 06:56:20
なるほど数学が起源だったんだ。
スモールトークがそれをまんま集合オブジェクトのメソッドの構文に採用し、ルビーがその流れを引き継いだというわけか。
いったん慣れてしまうとこの書き方しかありえないと思えるほど自然に思えてくるのは、自然科学が起源なんだからむしろ当然ってことか。
レスありがとでした。
>数学から来てたのかなと思ったおれ。
>集合を表すのに{|x| x ∈ 自然数}とか書くじゃん。
意味不明じゃん。全然違うと思う。
{}の使い方?
||の使い方? ||はふつう絶対値だよ。
初心者はもっと別の方面に興味を広げようぜ。(自戒)
>>637 君は中学数学からやり直した方がいいと思う。
>>638 大学生でもその記法は,
頭に入っていない人がたくさんいると思う.
>>635 微妙に違う。集合の内包表示は { x | x ∈ N } のように書くのが通例。
rubyも最初 iter{ x | .... } にしていたそうだが文法的にまずいので
| で挟む現在の形になったとか。
|の役割りを“仕切り”から“括り”に変更したところからすると、
Smalltalkからのパクリ(より正確には、一度はパクったけど、
気に入らないからモディファイした)といったあたりでFA?
実際、 Smalltalk の影響だってどっかに書いてあったような。
文法的にまずいっていうのはどういうところだろう?
数学上の集合の内包表記の影響が強いのは、むしろ Haskell や Python の
リスト内包表記だと思うけれど。
>>642 { x | ... }の形だと、ブロック引数を省略した時の解釈が面倒だからとか?
{ ... }だと"}"まで読まないと引き数の有無が分かりませんよね?
{ | x | ... }なら、"{"の次に"|"がなければ引き数無しと分かりますので。
違うかな?
>>643 { a | b } が
* a が引数。
* 引数ナシ。'|' は演算子。
の二通りに解釈できてしまうと思われ。
たしかに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に対する演算} という書き方とはまったく違うと考えた。
しかし無理して、同じようだと言えなくもない、かも知れない、とも言う。
まあ、その程度の話だろう。
>>644 おおなるほど。よくわかりました。thx.
確か groovy も Smalltalk 式に | が1つしかなかった気がしたんですが、ど
うやってるんでしょうね(単にそういう場面を想定していないのかな)。
groovyは {|spec| expr} でも { spec| expr } どちらでもokです。
PIPE を省略した場合は、暗黙的に `it' に値が入るみたいです。
ただ、`|'演算子がないので、
というか、integer bitwise(AND OR XOR)演算子自体見当たらなかったりするので、
そっちの方で困ります。parser見たけど定義なかった。
>暗黙的に `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の値としてのアクセスが
両方可能なようにしたいのですが、なるべく簡便でエレガントな実装方法はありませんか?
>>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
>>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と同じコード
Smalltalkの構文は
(1 to: 10) do:[:each| "仮引数は右側を縦棒で区切る"
|localVar| "ローカル変数は二本の縦棒で挟む"
localVar := each * each.
Transcript print: localVar].
という形。
Rubyの構文は仮引数とローカル変数をごっちゃにした感じでちょっとアレ。
レジでそのおっさんがニヤニヤしながら「兄ちゃん、いまからか?」と聞いてきた。
#!/usr/bin/env クソruby
% grep '#%' /usr/local/lib/クソruby/1.8/**/*.pl | wc
ご指導お願いいたします。
RHG でも読んだ方が良い悪寒。
こういう場合には/^(\n|\r\n)$/とする必要がある。
Button 劣悪なオブジェクトはボタンが押されたら見た目を変えたり
ブッシュもクソRubyを支持しているよ
>>フリーソフトとなんとかかんとか
>>369 excel = WIN32OLE.new('EXCEL.Application')
>>81 とか、もう、そういうクソレベルじゃない。
「82 A0 82 AF 82 A8 82 DF」
というあたりから始めた方がいいと思う。
eucかshift jisのどっちかで書いてみて。
たしかに分かりづらいというかなんと言うか。
基本的には使わないことがベター。
漏れは
と書いてありました。
ヘミじゃないほうのvoidの人
まだ robust ではないね。
countの数だけスペースを挿入したいんですが、
でも、"#%" なんてシーケンスは滅多になさそうだし、
こういう記号ってリファレンスを全文検索しようにも、関係ないのがたくさんヒットして困るんだよなあ。
長文タイトルに話のまとめを書いて、詭弁を考えるというスタイルはオススメです。
のように先頭に何かの記号(この場合は =、他には * なんかも使われることが
f = File.open("test.txt", "wb")
C なら関数ポインタを使うだろうし、
このキチガイも飽きない奴だなあ
こういう粘着力を、病気の回復に生かせば良いのにねえ。
日記で「コピペされたー!」とはしゃいでるのが痛い…。
のがスタイルとしてもスマートだと思うんだけど。
わざわざ手でコピペしてるんだろ。
14 (22:44)
namazuだ。
lwallは私のヒーローですっていってるし、劣悪な言語叩いて人を叩かずなんだろ。
C++なぞ問題外.^^;;;
そのうち、はじめの二つはリンク切れで落とせず。
>>658 この粘着はなんか怖い。
2chでは気軽に池沼だの基地外だのいった罵声が飛ぶけど、
なんかマジものくさい。それだけに哀れにも思う。
この荒しスクリプトはRubyでできています
>>661 だから、何? Ruby でできてたら許されるとか言いたいわけ?
ルビま!のアニメ化が待ち遠しくて夜も眠れません
func(c)
664 :
デフォルトの名無しさん:05/01/06 21:50:07
>650-651
さんくs
基地外に刃物。
諸悪の根源はmatz。二重の意味で
|ひとつの機能を実現するのに劣悪な文法的にいくつも逝くとも書き方があって
します。
少なくとも初心者が付属劣悪なドキュメントだけで理解して使うのは難しい。
けれど、に関してだけいえば
2番目と最後は知らんが、残りはそんな発言もあったな。
もういいから
stdin newjis
所詮趣味劣悪な言語ですから。
Rubyの前にクソが挿入されなくなったな
実はもう一人いる?
デスノートみたいだな(藁
でもクソ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でも取れるだろうし……
ありがと
>>669はよく見たらコピペ厨じゃないじゃん
あまりに頭の悪い文章なんで、人間が書いたものと判断できてなかったよ
クソRubyの為なら死ねる!
何なんだ?
ある日、「それはバグでした」とか言う
クソRubyは最高劣悪な言語です。それはもう疑いようがないほど。
>そういうとこが気持ちわりーんだよ。
ワロタ
初心者向きのお題が見つかった。下記のスクリプトを所望します。
(1)2チャンネルのログからテキストファイルを取り出す。ここは手でいいや。
(2)正規表現を用いて、タイトル行をカットして本文だけを別ファイルに書き出す。
(3)そのファイルの行数をカウントする。nとせよ。
(4)1からnまでの乱数を10個取り出す。
(5)くだんのファイルの該当行を書き出す。
(6) (4)から(5)をm回繰り返す。
部分でも良いから、書いてみて。
突然質問してもいいでしょうか?
前者の質問は
丁寧にアドバイスいただきありがとうございました。
inspectっていう劣悪なメソッドを知りませんでした。
>>676 そこまでアルゴリズムを指定しちゃうのもなんなので、
(1) 2chのdat形式のログを読み込み、
(2) 何らかの方法でタイトル部分を捨てて本文のみとし、
(3) その中から任意のn行(nは1〜10の乱数)を抜き出し、
(4) 取り出したn行を出力する。
(5) (3)から(4)をm回繰り返す。
くらいでどう?
>>641 昨晩、ネットで購入した「ダッチワイフ」と初めて交わった。
ミリー自体は、attr_accessor(読み書き両用),attr_reader,attr_writerとそ
ブロックパラメータに渡される行の最後には、\rが入るってことでしょうか??
ん?どういうこと?
それでは、未踏と言うより、踏み倒しプロジェクト
>>674 おいスクリプト厨!微妙に文章として読めるからやめろ!
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)] } }
>>487 irb(main):001:0> a=[[],[]]
激しくDOUI
明記してくれないと怖くて使えないですね。
ヵッォ「ぁぁ ぉぃゎ… ぇぇゎぁ。 ょぃ ヶッゃゎぁ。 ぇぃぇぃ。 ぇぃぇぃ。 ぅぉぉぉ!」
それへのアクセサ(引用(および設定)機能を持つ、変数と同一名の劣悪なメソッド)
劣悪な言語に正解はない。全部やれ。
>>292 $ ls /usr/lib/クソruby/site_クソruby/1.8
ネットで万能感むき出しにしてオナってんじゃねーよ。
初心者お断りっていう方針なら、仕方ないけど。ものが良さそうなだけに、残念。
>>451 2004-12-25
> クソRubyの最大の不幸は日本で生まれたこと。
made withが非常に読みにくい
こういう劣悪な言語はライブラリが全てだよ
>>661 lib/mkmf.pl
def test2(a) p a; a << 'y'; p a end
単純な参照(および設定)だけならattrファミリーで良し。細かいことしようと
if dir[0] == ?/
20年かかるかは分かりませんが・・・。
f.close()
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が非常に読みにくい
678,681さん。ありがとう。
何か、アっと言う間に終わったみたいっすね。
んでも、しつこく聞いていいですか。
(1) 681さん、対象となるデータソースのURIの一例をあげてもらえないですか。
ここの板のHTMLをデータとすると、エラーになるので。
> Navi2ch の ~/.navi2ch/ の下にある .dat ファイル
というのが良く分からんのです。
Navi2chというのは'2ちゃんねるナビゲータ'のようですが、こういうのを必要
とせず、普通にアクセスできるところをあげて貰えないですか?
(2)なにか one liner っぽい書き方なんですけど、これ普通の書き方ですか?
(1劣悪なクラス1ファイルで劣悪なクラス名=ファイル名にするといい)
> 劣悪なメソッド名には通常の識別子の他、識別子に ? または ! の続いたものが許されます。
クソRubyアンチは魔物であり、サタンであるから
・最初は「puts "#{key} に関しては #{value} でした"」と書く。
Net::HTTPで取ってくるなり、w3mに取らせて標準入力から取り込むなり、お好きにどうぞ。
この板をIEで保存したものを入力にすると、
private method `split' called for nil:NilClass (NoMethodError)
となります。
ここのHTMLを入力にするという前提に固定したら、どう変わりますか?
>>690 そんなのも自分で考えて出来ないのかよ。ド低能だな。
荒しのスクリプトくらい自分でつくれや
ずいぶんとお怒りの様子ですな。
もちろん自分では書けるし、あらしのスクリプトを作ること自体が
目的じゃないんだよ。お若いの。
あえて出題してるんだよ。そこを理解できないようじゃ、君の将来
知れてるねえ。
若いんだから、お前よりは将来の可能性あるよw
ただ若いだけのボケだろ。
今ではわたしはいつも美女に囲まれ幸せに暮らしている
って表示されてもいい気がするのに、
count = 5
新着クソレスの表示
処理を入れておく劣悪なオブジェクトだし。
クソとか劣悪とかいうフィルタをかました上で、ししゃもに食わせた方が、
出てくる文章は面白いくなるんじゃね?
鍛えていかないとね。
最高劣悪な言語クソRubyを広め無知なプログラマを啓蒙するために私たちと頑張りませんか?
そっちの方がやりたいことが明確になるからいいかも。
WEBrickでのセッション管理にはTofuを使うのが常道?
もうちょっとマシなのは ないんすかね。
あ、WEBrick::CGI使うのを想定してます。
クソruby初心者なら彼の訓えを請うべきだね
それくらいだったらマイナーなままでいてくれた方がずっと良い。
ブロック引数を理解しているなら、
引き出しがあれば問題ない。 <-本文2(本文は複数行にわたることもある)
わざわざWebArchiveから引っ張ってきていい加減しつこい。
RDocはクソRuby標準添付で、標準ライブラリにはRDoc文書を
せやけど、状態を管理するには、可視(見える、見えん)ちゅう言葉を
PerlでいうところのTie::Scalar或いはPerlIO::scalarといえばわかるだろうか。
へぇ。
namazuだ。
直感的にわかりやすい、というサービス精神、ということでまけてもらえんか。
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ファイルにして配布できる方法ってないものか。
とりあえず、スクリプトで生成しているのかもしれない出鱈目なレスについては、
コテハンにするとか、それと分かる文字列を含めて欲しいなぁ。
NGワードなりあぼーんなりの条件にして読み飛ばしたいのです。だめ?
わざわざNGワードにしやすいように文字列置き換えしてくれてるやん。
>>692 ド低能の上に年寄りかよ。終わってんな。
自分でかけねーんだろ?もう死ねよ。
この劣悪なバージョンのirbで以下のものを実行しました。
俺もその辺、以前から気になってた。
もしそういう設計なら、それはデータソース(この場合1という値)が二重化されてて嫌なことになってない?
ん?どういうこと?
クソruby云々というより、Cの知識というか、自分の使おうとしている処理系の
なんか、スレ読んでいて、頭痛くなってきたぞ。ゴルァ
namazuだ。
教皇本人がFUDに明け暮れているから仕方がない。
>という戦略で、切り出す (省略させていただきました)
>>705 程度の低い方は相手にしません。あしからず。
>>709 そのレスが相手にしてるじゃん。やっぱド低能だな。
お前終わってるな。
スクリプト厨に馬鹿の煽り合い。
心が洗われるスレですね。
代入時にクラスを決定する方法無いですか?
r = 0
ってしたときにrがStringになっちゃうのがいやなんですが
代入時にクラスは決定されている。
0を代入したのにStringになったりはしないから安心しろ。
% irb
irb(main):001:0> r = 0
=> 0
irb(main):002:0> r.class
=> Fixnum
>>713 激しく勘違いしてました
r0 = 0
r1 = $1
の大小比較ができなかったのですが
r1 = $1.to_i
としなきゃならなかったんですね
p test #=> "abc\\def"
Fixnumというか、Numeric一族がmutableだと、++が自然に実装できる。
変数名に?が使えると三項演算子がややこしくなると思うんだが。
クソrubyyyyyyyyyyy is special.
互換性の問題とかあるかなあ?
どなたか、#NAME!とならない方法を知ってる方いませんか?
rがStringになるとかいう言明はRubyでは意味不明だ。
rが指してる先がStringかどうかが問題なのだ。
CVS は BitChannel が使ってるよね。
「逆引きクソRuby」とかは?
こんな方法もあるんですね。知りませんでした。
akrさんは元旦早々(w
>>917 フリーソフトウェアの思想とるびまを繋げようと思っても解かって
>劣悪なオブジェクトの状態を変えるのであれば、
どうも話がおかしいんだけど?
名前がアレかもしれないけれど、それイイね。
そういうことは多くはないと思う。それならば
クソRuby は C で書かれてるしね。
>クソRubyの場合は、他の劣悪な言語でいう「値の入れ物」的な変数とは違い、すべてオブジ
>>174 $ クソruby -S migemo
クソRubyこそこの世の全てを包括している。
色々するわけだけど(_some_process_on_click_ ね)、
>>208 ありがとうございます。
単数でいいのか?
2:宣伝文句はもっとくわしく。
○ パキュン パキュン ○
>>389 特に ? で終えたい変数って真理値が多いだろうし。
くらす = Class.new do
あの顔に何か意味はあるのだろうか・・・。
721 :
デフォルトの名無しさん:05/01/08 21:02:55
引数のファイル名(String)が、存在するかどうか確認して、
もし無かったら、
hoge.rb を
hoge2.rb に、それも有ったらhoge3.rb に・・・というようなメソッド
を作ろうと思ったのですがどうもうまくいきません。
>>721 質問の意味が微妙にわからん。
自分ではどんなの書いてみた?
723 :
デフォルトの名無しさん:05/01/08 21:50:21
Rubyに、Squeakみたいなのってないですか?
SmallTalkもRubyもオブジェクト指向だから、
Squeakみたいのものがあっても楽しいと思うんですけど。
>>723 最近ruby-talkでそういう議論があったな
Squeakみたいなのって、GUI込みの統合開発・実行環境って意味?
Ruby界にはそういう動機はないし、技術もないから。
>>515 モルモンに入信する覚悟がない香具師はクソrubyに近付くなよ
他に、アドバイスあったらよろしくお願いします。
劣悪な言語に正解はない。全部やれ。
われわれは足下のC++、Perlコミュニティを粉砕することから始めよう。
@proc.call(*args)
>>50 クソRubyは、ルビー輸出国から苦情言われないの?
このままじゃクソrubyちっともメジャーになれねえから最低限これくらいやれや、という御意見。
遅クソレスだけど、その話題はimmutableかどうかであって、
みたいに書くか、オプションを第 1 引数に
先頭で#!c:/usr/bin/クソruby is うんこ -Ksとオプションを付けてもダメでした.
>だから、極論するなら、劣悪な言語間には優劣なんて存在しない、
アホか。あんたの直感なんか当てになるとでもw
でも1.8.3はお盆なんだろ?
これでいいんでは?
>>953 ます。ブロックは要素毎に実行されるので、セットする値のそれぞれをあ
クソruby最悪 1.8.1 (2003-12-25) [i386-cygwin]
つまり、実引数と仮引数は、名前が重複していても別のものである。
もらえないみたいだね。
修正されたものは公開されてないでしょうか?
・後になって桁数指定したいと思う。
ありがと
最終的には、”米俵”、”販売”など、複数の指定文字列とマッチするようにしたいのですが、
違うファイルで定義された関数を呼び出すとき
Cのプリプロは\で続けられるから関係ないだろ
ハッシュのキーにシンボルを使うと実行効率で有利ってのは
素朴な疑問です。
むしろ不法(ry
>>186 def hige;puts "hige";end
p くらす.にゅー.めそっど
どうすればいいかさっぱりわかりません。
感じ始めました。ギャンブルというギャンブルほとんどに勝ち続け、
おれがクソRuby嫌いなわけがわかった
Iconv.iconv('UTF-8', 'EUC-JP', s)
lalaにしなかっただけでも幸運と思わないと。
こうしないで、今のクソRubyみたいになってる利点って何?
単に私の調査不足ってだけで、ホントはどこかに「使ってよい」
クソRubyスクリプトを自分で書いてルールが書けるみたい。
$ ls /usr/lib/クソruby/site_クソruby/1.8
議論する。これだ。
原理的に可能なものなのか?
みてみてください。
新年早々自作自演乙
ありがとうございました。代理パターンですか。
というふうなしきたりになってると思い込んでたんですが、
a[1].push("c")
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が良く判らないのでご教授いただけると幸いです。
あれ? Apollo で書かれたスクリプトを exerb で固めて使うとき
やはり難しいですか。
print(" " * layer)
>>273 劣悪な文法がカッチリしてないと racc で扱うのは辛いぞ。
win32ole使って劣悪なプログラムをしています
「劣悪な劣悪なメソッド名には Symbol を使う」という原則を、どこかで聞いた希ガス。
おい、HSPを引合にだすなよ。
「劣悪なオブジェクトに対応する整数(Object#id で得られます)と Symbol に対応する整数は別のものです。」
(5) クソRubyの利用者からは、驚くべき体験談が数々寄せられています。また、によるお墨付きも得ております。
def func()
( ´,_ゝ`)プッ
attr_reader って文字列を渡せるんだ。
mmapしてmemcmpって簡単にできないの?
s = /hoge/
「破壊的に 1 を 2 にされてしまったら、それ以降、1という数字は存在しなくなる」
ひとつの機能を実現するのに劣悪な文法的にいくつも逝くとも書き方があって
>>303 事の発端(謎
何度も書きますが、1.8.1では、同じ環境でちゃんと動いてるんです。
るびきちさんの RD 本の影響力は、かなりある。
うっさい黙れキチガイ
Rubyには unsigned って概念はないんですか?
実行効率って概念がないからな
>>610 納得できるんですが、attr_readerとかにシンボルを渡すのは
初心者(≒プログラミング以外のプロフェッショナル)にはクソRubyは本質的に向いてないよ。
るーるびるーるびるーるびるーるびるーるびるーるびるーるびるーるびびびび
クソruby: No such file or directory -- migemo (LoadError)
るびぃ、さいきょうげんご、すべておほろぼす
この劣悪なバージョンのirbで以下のものを実行しました。
あと超寒い。HSPと競ってる。タブ幅で言うと8。ヤバイ。寒すぎ。バナナで釘打つ暇もなく死ぬ。怖い。
ちょっと素人には想像しかねる。
いないんだっけ?
色々試してみてるんですが、さっぱりです。
クソrubyのJavaDocのような劣悪なドキュメント記述について参考になるサイトない?
何にも表示されないんでない?
Stringに数を掛けると繰り返し。
★ 転送量無制限タイプも新登場。
シングルバイトの是非はともかく
>>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
というか、↑のソースコードを書きながら思ったんだが
C言語のことをよく分かっていない状態での「作り直し」はまず不可能だと思う。
C言語とRubyでは基本的な考え方からして違うわけだし。
(例:Rubyにはポインタがない)
↑のソースコードは、無理矢理「C言語的に」でっち上げたものなので
実用上の観点から言えばほとんど使い物にならない。
C言語とRubyの両方に習熟した上で、自力で「Ruby的に」作り直すのが一番いい。
>>742 言葉足らずでした、
忠実に再現しなくても文の作りが似ていて、ruby寄りな書き方で良いと思います。
それと
実用上の観点から使い物にならないと言うことは、そのようにして作っても動かないと言うことですか?
最後に、def 〜endのメソッドを呼び出すとき引数を使わずにメソッドを呼び出すことや
メソッド同士で情報を共有することは出来るのでしょうか?(ちなみにクラスは使わずに
出来るとしたらどのようにやればいいのでしょうか?
当方、プログラムを始めて1週間程度の初心者なので文面に誤りがあるかもしれませんが
ご教授よろしくお願いします
>>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では変数の考え方からしてまるで違うからひどく混乱すると思う。
>>744 > 引数を使わずにメソッドを呼び出す
可能。メソッドのあとに引数を書かなければよい。
def foo
〜〜〜
end
> メソッド同士で情報を共有する
クラスをまったく使わないのであれば、745氏の解説のとおり
グローバル変数を使うか、引数を利用するかの二択。
>>742 >>745 参考に書いていただいたコードを元に試行錯誤した結果
完成まで後一歩の所まで行き着きました。
後は自力でやってみようと思います!マジで助かりました!
thxxx!
>>734 C言語の構造体と同じ感じでファイルを扱いたいならpack/unpackを使う方が適切だと思うが
pack文字列は自力で書かなきゃいかんのが面倒っちゃ面倒かも知れん。
出力はStruct::XXX.to_aした配列を使えばいい。
入力はunpackで出来た配列を生成した構造体クラスのコンストラクタに*を付けて渡せばよい。
昔ruby-listでビットマップをStructとして扱いたい話があった気がしたけどどこだったかな。
ところで、構造体の配列の場合もよくわからん。
ファイル終端までIO.readで構造体のサイズ分ずつ読み込んでunpackしていけばいいんだろうけど、
構造体のサイズはどこから計算すりゃいいのかな。やっぱ手動?
後一歩なのですが中々わからないのでまた質問させていただきます....
class A
:
:
def read_method
file=open(@filename)
@line=file.gets
@count+=1
end
:
def kakunou
@name,@lit,@math,@
[email protected] end
:
end
:
a=A.new(filename)
a.read_method
a.kakunou
とある時、データファイルから「一行のみ」読み込み読み込んだデータを格納する処理になります。
これを一行ずつファイルの内容を全て読み込み、一行ずつデータを格納したいのですが
どうしたらよいでしょうか?ご教授いただければ幸いです。
>>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
ああそういえば IO#map があるんだった。 read_data はこれでいい。
def read_data(filename)
File.open(filename) do |io|
io.map { |line| A.new(line) }
end
end
内部的な動作はほとんど変わらないと思うが。
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のようなコードを組み込めばいいのでしょうか?
申し訳ないが、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つずつ個別のオブジェ
クト」「個別のオブジェクトを配列でまとめて管理」としている。
本当に初心者だと思うんで詳しく解説をするが(どこかチュートリアルを読ん
で欲しいところではあるんだけど)、 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 を呼ぶことで表示がで
きるというわけ。
もう一点。表示する関数を用意しない方がより「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 とは別のメソッドを用意するはめに陥るからで、これは
めんどうくさい。
>>753 IO.foreachもあるよ。
>>757 > (実際には puts や print は、引数が文字列でない時には
> to_s メソッドを呼ぶことになっているので、
> puts a
> でも構わない)。
単に puts all_data だけでも可。
>>758 thx.
IO.foreach は素で知りませんでした。ありがとうございます。こんなのあったんだ……。
それにそうか、確かに puts all_data でいいのか。
すごい簡単なことだと思うのですが、拡張ライブラリのバージョンを表示するにはどうすれば良いのでしょうか?
ls してみるとか。
>>760 そもそもバージョン付けてないのもあるだろうし、
付いてても決まった取得方法があるわけでもないので、
各ライブラリのドキュメントを調べるか、ダメなら
>>761 とか。
RubyGems から管理すれば大丈夫かもしれないが、 Ruby じたいにそういう仕組みはない。
でも当然
Proc劣悪なクラスって、どんな劣悪なクラスかよくわからないんですが、
そりゃもう、モルフィ位の。
それだと 気づいたと に
どうすればいいでしょうか?
ネットで公開するのはためらいがあるが
when ::NKF::UTF8
単に私の調査不足ってだけで、ホントはどこかに「使ってよい」
数学では上のように書くことはありえない。
>>473 「学んだことも、その多くは意味のないものだった」とも。
階層化可能だと思うのですが、
分かるのだが。
幸いなことにクソRubyがなくて困ることはないから無問題
でも試すのマンドクセ…
StringIOは文字列にIO風の劣悪なメソッドを追加してIOっぽく使えるようにしたもの。
migemo-convert.pl
コマンドラインツールを作ってあるのでそれを起動してれば取れます。
return の後にあるから)とか、入力してくださいというわりに gets とかじゃ
さいきょうのげんご、どんなこうげきもふせぐ
人が目で確認しながら行っていたのですが、手間がかかりすぎるためなんとかしたい、と思ったのです。
ここを見ると、「UTF-8を通す」以上のことはやってくれなさそうなんだが。
opt, sw, val = sw.parse(val, argv) {|*exc| raise(*exc) if eq}
def [](*args)
なんで時々optparseのコードが混じるんだ?
テキストファイル中の単語を置換したい場合
処理したものを一度テンポラリファイルに書き出して
元のファイル名にコピーするっていうのが普通のやり方なんですか?
クソRubyは実践的じゃないよ、それと利用者が少なすぎる
クソruby クソスレなくなっちゃたよ。
./game start
あと詳しく調べたわけじゃないんですが、RDocがバカ正直に
class Automation
(・∀・)ルビィ!
4:【ダウンロード]を目立つように
>>767 コピーっつうか、
・テンポラリファイルに書き出す
・元のファイルに.bakとかsuffixをつけてリネーム
・テンポラリファイルを元のファイル名にリネーム
かなあ、普通は。
元のファイルのバックアップ取っておくのはお好みで。
>>330 ぐぐってみたけどいまいちよくわからん
が返すのは@visible?であって欲しいってことです。
連想配列?
./game start
/usr/lib/クソruby/1.8/i386-cygwin
>>11 ----- クソRuby ------
誰か、教えて。
>>40 MLやNewsなら、自動的につくわけだけど、スラドのああいうのって、
文字劣悪なコードの問題じゃなくて、単に変換する際に使った劣悪なメソッドの戻り
Iconv::conv('SHIFT-JIS', 'UTF-8', "あいうえお")
ネタはあっちでやれよ。
してみるといいかも。
ヨウカイ(・∀・)イイ!!
前クソスレで
>>761 >>762 決まった取得方法はないんですか...
lsする方法というのが分からないのですが、lsで何かのパラメータを指定するとバージョンが表示されるのでしょうか?
ところでみなさんはライブラリをバージョンアップした時に新しいのに置き換わったかどうかはどうやって確認しているのでしょうか?
ls -l
>>577 irb(main):003:0* irb(main):003:0> exit
> C十字軍現る!
含みますが、全角スペースは含みません。これも注意。
使ってるコンポーネントはJVDTLab.JVLink です。
2だったらクソRubyは死滅
hoge =
って、どういう劣悪な劣悪なコードが書いてあるんでしょうか?
「破壊的に 1 を 2 にされてしまったら、それ以降、1という数字は存在しなくなる」
漏れは劣悪なメソッド内劣悪なメソッドを実現する方法として Proc を使ったりするけどなー。
でも、initialize_copyっていうのがよくわからない。
UNIXではLF
試せばいいのに……
>>775 ログを見てエラーが出てなかったらいいかぐらい。
あなたたぶんWindowsユーザですね。
ModuleName.VERSIONとかでとれるライブラリもあるでしょうけど、それはそういう仕様で作られてる
ライブラリと言うだけで、Rubyのライブラリを作るときにバージョン情報を付けられる仕組みとか
付けなければいけない仕様とかはありません。ので無理です。
気になるならインストール元のファイルとインストール先の日付を確認してファイルの差分をとってみればよい。
>>766 scriptkiddieが粘着してる模様。
それだと 気づいたと に
クソruby 1.8.2 (2004-11-06) [i686-linux]
クソRubyには「文字」というのが存在しないから。
>411 さん
>>28 すみません
もし、「特化」が人気獲得に直接有効なのだとすると、「大衆は愚
>>779 了解です。そういうものだということで理解します。
仰るとおりMinGW+MSYSでコンパイルしてライブラリ上げてみようかなって始めてみたUNIX環境初心者です。
rubyを使ったプログラムでレジストリ変更って出来ます?
できる。
def test_print
ほんま探してから質問してるんかいな。
もっと世間に目を向けて、技術選択の議論しないってことがど
また、 ARGV は文字列なので(gets等で読み取ったデータも文字列)、
>>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は死滅
ちょっとしたルールを作るのはいいことですね。
へビーつうか、物珍しさを自慢したがる見栄っ張りが多い
>ェクトの参照になるみたいですね。。
int a[] = {1, 2, 3, };
同様に クソRuby を落とせることが発見されています。
Programming クソRuby, 2nd Ed の邦訳が検討されてたりはしないでしょうか?
という自己ツッコミで逃げを打っておくことで、予想を外しても自分を守るというヘタクソレスタイルが最強。
クソrubyのwikiで一番有名なのってなんですか?
交わされています。われわれ初心者、中級者にも参考になりますよ。
am.script = [:dance, :dance, :jump]
ed,sedからの継承?
上げるなって。
仰々しく「批評」とか名付けた浅ましい自己主張で攻撃して
あ、なるほど。そういえば、pのStringの表示は""で囲われてますね。
どうすればいいかさっぱりわかりません。
Parlやらで書かれた検索エンジンじゃね?
とか。(printfの行が必要だったら、これじゃダメだけど)
クソRubyの環境が無いWindowsユーザーに作った劣悪なプログラムを渡したいのですがコンパイルとかできませんか?
ログラムですが、
そして切り出したものを、変数や、配列に記憶する。
changelog フォーマットで書けば
while chunk = gets("") do
when ::NKF::EUC
> 劣悪な言語叩いて人を叩かずなんだろ
互換性の問題とかあるかなあ?
Pickaxe本を呼んだ人の感想を聞きたい。
== ((:OptionParser::NeedlessArgument:))
で、Array#empty? とかも他の劣悪なメソッドと同じように表示されてるようだが。
そんなことないか。。
>>602 self.foo = bar と明示的に指定しないとその劣悪なメソッドを呼び出せないため、
これ例えば何のことを言ってるの?
変数は劣悪なオブジェクトではなく、それを指すラベルでしかない。
これって、{|args| p args } を、fooの引数にしてるって感じですよね。
劣悪なオブジェクトの劣悪なメソッド name を、引数に args を渡して呼び出し、劣悪なメソッドの
"あいう".toeuc
ろっておって、劣悪なクラス属性の宣言手段として結構なものだがのう。特に変数の数
知識が足りてないから。
: 【因縁の】DelphiVSHSPVSクソRuby is うんこ【対決】
792 :
デフォルトの名無しさん:05/01/16 10:05:52
Gtk にはあんまり詳しくないんだが、それ読む限りでは、
・イベント: X11 で定義されてるもの(ウィンドウにフォーカスが入るとか)
・シグナル: Gtk で定義されてるもの(チェックボックスにチェックが入ったとか)
なのでは?
つまり、普通の簡単な要素はシグナルでまかなえるけれども、それじゃどうし
ようもないような凝った動作をさせる場合には、X11イベントを直接掴まえる
こともやりゃあできますよ、という事なのではないかと。
質問です。
print "hoge\n"
sleep 10
だと "hoge" が表示されてから sleep に入りますが、
print "hoge"
sleep 10
だと、(見かけ上?) sleep してから "hoge" が表示されますが、仕様でしょうか?
Ruby は、1.8.1 (2003-12-25) [i386-cygwin] です。
>>794 仕様でしょう。
後者はprintの結果が標準出力のバッファにたまっていて、
sleep後(おそらくはスクリプトの終了によって?)に出てくるはず。
前者は改行によって即座に出力するので。
printより前に「$stdout.sync = true」としておけば、
改行がなくても即時出力になりますよ。
>>795 やっぱりそんな感じですか。
レスと解決法と安心感を、ありがとうございました。
sleepの前に
STDOUT.flush
でもいいよ。
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 お手数掛けて、すいません。以下のような感じです。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
クソruby 1.7 feature:
なるほど、勉強になります。
文字劣悪なコードを合わせて保存したファイルを読み込んでも同様。
>>54 これ以外にもありますか?
self.caption = 'memo'
hoge(o) # => -605356234
なんかよくわからないけどできました。
これを読み込んで、「気づいた[こと | 事]」という見出しに続く本文だけを、配列や変数に取り込むにはどうしたらよいでしょうか。
プリプロセッサも同じなんすけど…・
2004年はレシピブックしか出なかった。さびしい。
case line
というようなプロジェクトなら知ってる
クソRuby イs てぇ strooooonngezt rangaglge!!!!!!!!!111111111
でも、SHIFT-JIS で保存したスクリプトで、
フリーウェアとフリーソフトウェアの区別は理解できる?
>つまるところ、インスタンスごとに振る舞いを変えたいという時に使う。
>>62 いつまでもC++やPerl、Pythonみたいな劣悪な言語に固執する腐りきった旧世代は早く消えろ。
require 'net/http'
Net::HTTP.version_1_2
Net::HTTP.start('www.google.co.jp',80){ |http| puts http.get('/').body.gsub(/<.*?>/m,'') }
>>801 kakasi入ってます。ヘッダーもライブラリも、gccから見えています。
(名前を変更すると、別のエラーになるので)
$ kakasi -v
KAKASI - Kanji Kana Simple Inverter Version 2.3.4
>>807 kakasiのヘッダとライブラリは、何というディレクトリに入ってるの?
810 :
デフォルトの名無しさん:05/01/23 14:36:26
IO.popenで起動した外部rubyスクリプトの返す値(exit retで返される)
を取得するにはどうすればいいんでしょうか?
つーかkakasi-config使えばいいのに。
ぐはぁ、名前欄に他意はないです。念のため。
>>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
Yasai = {"ninjin"=>100, "hakusai"=>250, "negi"=>100}
sock = TCPSocket.open(localhost,port)
sock.puts(Yasai)
sock.close
って感じでクライアントからサーバーにYasaiハッシュを送った場合、
サーバー側でハッシュとして認識させるにはどうすればよいですか?
送り方が悪い。
sock.write(Marshal.dump(Yasai)) で送り、
受け側は sock.read(Marshal.load(Yasai))
つか、プロトコルを考えるのは大変じゃん。
drbとかsoap4rじゃいかんの?
ごめん、激しく訂正。
yasai = Marshal.load(sock.read)
>>817-818 ありがとう!
Ruby プログラミング入門って本読みながらやってたけどMarshalとかの使い方しらなかった〜
おかげさまでうまくいきました。
>>818 Marshal.loadはIOも受け付けるので
yasai = Marshal.load(sock)
も可能。
>>814 ebanさんなら心当たりもありそうだが。
たとえば--enable-sharedが付いてるとか付いてないとか。
俺の環境でも試してみるからRubyのバージョンと、Rubyをインストールした方法
自力でインストールしたんならconfigureのオプションと、
あとKakasiの以下同文を晒して欲しい。
そういえば昔試したなあと思ったらcoLinuxのDebian上でだった。
>>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なライブラリしか出来ないから、と思う。
ん?--enable-sharedつけなくてもデフォルトで共有ライブラリ作るように
なってるけど。静的ライブラリも同時に作るけどね。
あ、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でいけるかもしれない。
けっきょく、やったことを小出しにして発表してるから
「あー以前俺もそこでハマッタわ」つー人が数日後に雪崩れ効果
>>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
>>827 本当にありがとう
ようやく使い方がわかった
希望通りの動きをやっと始めたよ
>>824 参考になります。
なんかautotools周りの文書で今ひとつかっちりしたのがなくて。
出来れば書籍で欲しいんだけどなんかないですか。
最近configure.inをちょっと弄ったりしたことがあるけど普通のシェルスクリプトみたいなんで萎えた。
Defineで切り分けじゃなく関数レベルでラップすればいいのにとか誰か言ってたけど、
それはさすがに無理だろとは思ってるけどDefineレベルで切り分けるのは確かにいつか無理が出そうな気はする。
あとm4わからなすぎ。
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 でインストールしています。
>>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
してみて。
>>829 オーム社から通称autobookの翻訳本が出てるけど(でびあんぐるが関わっているやつ)
これは今となってはちょっと内容が古いかもしれん。それよりinfoがよく書けているから
それをきちんと読んだ方がいいと思う。あと、微妙な非互換とか仕様の変更はNEWS
を見て確認すると。
まああれは確かにバッドノウハウの塊の代表格だな。とはいえ代替となりそうなものも
なかなか見当たらないわけで。スレ違いなのでこの辺で。
>>831 Rubyに、--enable-sharedが必要だったんですね。マニュアルを読んでなくて
すいません。831さんの方法で、上手くいきました。
丁寧なアドバイス、ありがとうございます。
>>832 thanx。
>>833 バッドノウハウといえばCygwinも結構バッドノウハウが必要だから可能なら
Linuxとか*BSDとかで動かしてみるのが吉と思う。
まあ、初心者質問スレだからスレ違いじゃなければ質問はOKなので、がんがれ。
>>831 > > UNIXとほぼ同じですが、configureの際に --enable-shared が必要です。
> とあるのだが、でも1.6.4時代のドキュメントだしな。
1.8ならcygwinでは--enable-sharedがデフォルト。
>>835 configure.in:156 : ${enable_shared=yes}
入ってるね。
しかし、rbconfig.rbで
CONFIG["configure_args"] = "'--enable-shared'"
が入るか入らないかという違いがあるようなので、extconf.rbとかsetup.rbで拡張ライブラリを
コンパイルするときに違いが出てくるものと思う。
対応を正しくやるなら同じようにrbconfig.rbも同じく出力しなきゃならないはずだが、Autoconfはよう知らんので。
俺は別に--enable-shared付けろよでもいいと思う。
いつから低品質のことをバッドなんたらとか読み替えるようになったんだ?
とりあえず「バッドノウハウ」と言ってみたいお年頃なの。許してあげて。
うーん、CONFIG["configure_args"]に"--enable-shared"が含まれてるか
どうかなんて、extconf.rbでは見てないと思うんだがなあ。
mkmf.rbは$enable_sharedを使うけど、これはCONFIG["ENABLE_SHARED"]の
方を見てて、こっちはcygwinではちゃんと"yes"がセットされるし。
XMLParser の taball が umask 077 で作られてるのなんとかならんかな?
おかげで FreeBSD ports でサンプルコードが root でしか見れない。
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 になるのは何故でしょうか?
と思ったのですが、「所属性」を検査するメソッドと考えると妥当な動作ですね。
自己解決。
>>839 確かにmkmfまで見てもなんともないなあ。
何故結果が違うんだろう。
しかしログとか完全に出されてる訳じゃないし、
なぜそうなってたかを考えるのも不毛な気がしてきた。
うまくいったらしいしもういいかと思いつつある。
>>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でも何も考える必要ないですね。
>>845 うは。
./configure --prefix=/usr/local/ruby18noshare
sharedじゃないのは突っ込まないで。
あとmakeの前に
$ /usr/local/ruby18noshare/bin/ruby extconf.rb
してる。
>>838 「パットウハウハ」
すみませんでした。
mod_rubyについて質問させてください。
mod_rubyを使うと、「グローバル変数が共有される」と聞いたのですが
クラス変数は共有されないのでしょうか?
>>849 回答ありがとうございました。
「グローバル変数の代わりにクラス変数を使えないかなー」と考えていたので
未然にダメだということが分かって、助かりました。
やっぱインスタンス変数を使うしかないのか……orz
クラスのインスタンス変数という手もあるかもしれないしないかもしれないかもしれない。
>>850 何をどうしたいのか書けば代替案も出てくるかも知れない。
>>851 良い案だとは思うのですが、どちらにせよスクリプトが@varで一杯になるのは
不自然な気がしてなりません。
「インスタンス変数ってこういう為のものじゃないよなぁ」と感じてしまう。
>>852 了解。詳細を書きます。
Rubyを使ったWikiCloneを制作中。
途中までグローバル変数をフルに使っていたけれども
mod_rubyとグローバル変数の相性の悪さを知って代替案模索中。
しかしtDiaryやHikiのようにインスタンス変数を散りばめる気にはなれず
できれば他の方法で、グローバル変数的な仕組みが出来ないかと考えている。
とまぁ、こんな感じです。
何か良さ気な案があれば、よろしくお願いします。
そういうことにインスタンス変数を使わずして何に使うんだ
>>853 グローバル変数的なものはやっぱりグローバル変数が最適だろう。
現状ではグローバル変数に何を格納しているの?
ブラウザからのリクエストをパースした結果とかをグローバル変数として保持してるんなら
mod_rubyに対応させるのは難しく感じる。
と言いつつ考えてみた。
* 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
mod_rubyなんて忘れろ。
ひたすら他人のコードを読め。そして書け。
初心者の段階を脱すれば、グローバル変数なんぞに頼ろうなんて気は起きなくなる。
文章は一応つながってるし、過去にこういう文章を書いた人もいないはずだから
単なる盲信者だろ
もしくは、過去に何かグローバル変数絡みでよほど嫌なことがあったんだよ
グローバル変数使って、良いことってあるのかな。
そりゃよいことだってあるだろう。
この世に絶対悪なんてものはない。もちろん、絶対善なんてものものない。
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 個以上渡したいときにはどうすればいいでしょうか。
NT系のWindows(XPとか)を使ってるなら、%* でいける。
そうじゃないなら、今のOSは捨てて、もっとましなOSにする。
>>864 自分は XP なので、それで試してみます。
すばやいご返事ありがとうございました。
>>861 メリットとデメリットを比べると、デメリットの方が大きそうだな。
しかしメリットがないわけでもないので、これは好みの問題だと思う。
具体的なメリットを挙げるなら
・ほかの言語からの移行がスムーズ
・見た目に他の変数と区別しやすい
・スコープの問題に悩まされないため、シンプルで扱いやすい
ってところか。
総じて小・中規模のアプリケーションに向いてる。
>>866 それらを「メリット」と言っちゃうのってどうなん?
それが2chクオリティ
>>866 mod_rubyが前提なんだから、そういう意味でのメリットはない。
だいたいmod_rubyだと、
$a = 1
puts $a
なんてコードで標準出力に1って出る保証は全くないわけで。
>>869 そういやmod_rubyなんかだとイテレータでイテレート中に
配列の中身が変わるとコアを吐くバグとかどうなん?
それはmod_rubyのバグなん? rubyでなく?
>>853 CGIオブジェクトだとか、全ページの情報(Pageオブジェクトの配列)だとか
現在表示しようとしているページ名だとか
重要なデータはほとんど格納されてます。
>>856 そ れ だ !
名案ありがとうございます!
>>867 ソースの書きやすさ&可読性の向上は、十分なメリットなのでは?
(´-`).。oO(なんで初心者は本質的な解決でない技巧でその場をしのぐのが好きなんだろう……?)
>>874 では君の言う「本質的な解決」を聞かせて貰おうか
25行以上のスクリプトなら、普通にクラス使ってOOで書きなよ。
教祖御自ら
グローバル変数のオキテ:使うな。
と仰せになったのを知らぬか?
# まぁ、儲でない身としては適材適所と思うけど。
>>876 クラス使ってOOで書け、というのは分かる(「25行以上なら」は言い過ぎだと思うけれど)
だが何故、OOで書くときにグローバル変数を使ってはいけないんだ?
インスタンス変数だけを使っていては、スクリプトの見通しが悪くなり、ややこしくなる場合がある。
>>877 Ruby本のその部分は読んだ。しかしそれでもなお
「プログラムのどこからでも変更される可能性がある」から混乱の元になる、というのが今ひとつ納得できない。
スクリプトの性質にもよるが、CGIスクリプトであれば
グローバルデータがどこからどう変更されるかなんていうのは、たいてい自分で把握できるはず。
(把握できないならtrace_varを使えばいい)
人に見せるスクリプトなら、グローバル変数の定義を一カ所にまとめておけばいい。
グローバル変数使いまくりの他人の(過去の自分の、でもいいが)スクリプトを保守してみれば、
グローバル変数がいかにバグの入らない修正を阻害するかがわかるよ。
保守するという発想がすでに初心者の域を越えているので、まだ気にしなくてもよいが、
プログラマを3年以上続けるつもりなら、心に留めておけばいつか役に立つこともあるだろう。
>>879 ふむ、君の考えはよーくわかった。
だが、人前では言うな。
>>880-881 ありがとう。
どうやら経験を積まないと理解できない事のようなので
あと二年ぐらい、黙ってグローバル変数で頑張ってみる。それから戻ってくる。
しかし最後に一つだけ聞きたい。
グローバル変数使いまくりの現Hikiはどうなんだ?
あれも「バグの入りやすい構造」に当たるのか?
# っつーかスレ違いごめんなさい。
>>882 「現」が0.6系を指すなら、まったくその通り。てゆかあれはありえねえ。
HEADと差分を取って眺めてみなよ。
Webアプリは、コード品質的には酷いのが多いよ。
進歩が早いから、みんな使い捨て感覚で書いてるんだろうけど。
ああいうのを参考にしていたら、バグの少ないコードが書けるようにはならない。
>>879 >「プログラムのどこからでも変更される可能性がある」から混乱の元になる、というのが今ひとつ納得できない。
これが納得できないと言うことは、プログラムの再利用を意識したことがないんじゃないかな?
ライブラリなんかを想定して貰えばわかりやすいと思うけど、
プログラム(もしくはその一部)を他のプログラムないでコンポーネントとして再利用するとき、
そのクラス/モジュールがグローバル変数等の実行環境に依存していては再利用が難しくなり
オブジェクト指向のクラスの再利用といった利点をいかしきれなくなる。
まぁ、趣味の問題と言われれば、誰にも強制は出来ないけどね。
後半を読む限りでは、それらのデメリットを回避するような方法論を持っている様だけど、
せっかく、ModuleやClassがあるんだから名前空間をもっと有効に使おうよ。
趣味で書いてるんなら、好きに書けばいいさ。
いろいろ書いてるうちに、時が経って、ふと、「こういうことだったのか」と気付く。
そういうプログラミング人生も楽しいものさ。
クラス変数ってクラスの外部から参照できないんすね…。
特異メソッドでアクセサを書いてあげるのが普通なんでしょうか。
class Hoge
@@unko = 'unko'
def self.unko
return @@unko
end
end
Hoge::unko # => "unko"
>>887 Hogeを継承したクラスからも参照できるようになる。
また、Hogeがモジュールであれば、インクルードしても参照できるようになる。
だからアクセサの代用になる、ってわけではないけれど
工夫によっては使えるので、覚えておくといいかもしれない。
どうでもいいけどちょこちょこRubyを使うようになって
結構たつけどクラス変数なんて一回も使ったこと無いな
>>889 他の言語なら使うが、Rubyなら使わないということか?
ほんとにOOなのか
今は、クラス変数とクラスのインスタンス変数の差が、あまりなく
なっちゃったからなぁ。
普通にOOPしててクラス変数なんてそんな頻繁につかうもんじゃないだろ
手元のソース(cvs)でModule#class_variable_getとか見つけたけど、これって1.9から?
>>891 class C
@foo = []
@@foo = {}
def foo
[@foo, @@foo]
end
end
C.new.foo #=> [nil, {}]
クラスのインスタンス変数はクラスのインスタンスから見えづらい
という点に使いどころがあるように思います。
フロッピー0.5枚くらいに収まる
仕様とライブラリを削りに削った
ディストリビューション(?)ってないの?
>>896 どこを削ってどこを残せばいいんだ
FD0.5枚分に抑えるには、取捨選択が難しすぎるぞ
あー、でも CGI 特化型ディストリビューションとか欲しいかも
>>897 ないのか・・・
FD1枚に収まるMONA OSに移植できる
コンパクトなものはないかと思って。
C言語が動くのなら、移植できるのではないだろうか……と
調べもせずに無責任なことを言ってみる
>>900 Cygwinの例だが、本体であるDLLのサイズが
cygruby18.dll567.50KB2004 12 20 23:22:52ACYGRUB~1.DLL
ということなんで、拡張ライブラリとかドキュメントをはずすだけでいける気もする。
実行ファイルの圧縮が出来るならもっと簡単そう。
>>901 たったそれだけ(+実行ファイル)で動くのかΣ( ̄□ ̄;
案外ちゃんと収まるかも分からんね
軽量版を作るのなら、とりあえず irb は入れて欲しい
クラス変数やグローバル変数はマルチスレッドにしたとき面倒になるし、
そんなに頻繁に使うものではないよね。クラス外から参照するんだったら定数にするし。
使い所といえば、シングルトンのインスタンスを保持するくらい?
>>894 ありがと。そんなに前からあったのか。1.8.2へはバックポートされてないみたいですね。
>>901 コンパイルする時にできるminirubyが1MB越えてたようなきがする。
stripすればもう少し小さくなるかも知れないけど。他の外部のライブラリには依存してないかな?
>>902 irb約200kb ...
zlibを含めて、pythonみたいな圧縮ファイルを実行する仕組みでも作る?
1FD-Rubyに含めたいライブラリを全部C拡張ライブラリにして、
BusyBoxのごとく単一バイナリ化するというのはどうだろう。
コマンドライン引数として一つの英単語を与えるとする。
そのとき、その単語が何文字の単語であるかを返すスクリプトを考える。
次のようなメソッドを用いて while ループを使ったものを作成せよ。
* 文字列の最後の一文字を削除するメソッドとして chop を使う。
* 上のように一文字ずつ削除していくと
何回の作業で全部無くなるかをカウントすることで文字数が分かる。
ここで注意するのは、元々の文字列には最後にヌル文字がついていることである。
chop をした回数よりも文字数は一つ少ない数字になる。
* 与える引数は途中にスペースなどの記号を含まないで単純な単語だけで考える。
こんな問題が出されたのですが、まだまだひよっこの自分にはさっぱりわかりません。
自力で組んでみてもまともに動かないし、現在完全にお手上げ状態。
ちょっとしたヒントでもいいので、お願いします
>>905 「英単語」て言ってんだから
正規表現使えばいいじゃん
>>903 monaのアプリはcygwinのgccでコンパイルできるようだし
クロスコンパイル環境でコンパイルして実行ファイルだけ突っ込めばよい希ガス。
これならminirubyはあんまり関係ない。
実行ファイルをbz2で固めたり出来るようなのでサイズも何とかなる気がするが。
904のとおり1個の実行ファイルにすればより小さくなりそう。
問題は移植作業で、漏れは経験がないのでよくわからん。
ヌル文字なんかついてないよー
それにしても、String#chopを使ってよくてString#lengthを使っちゃいけない
理由がまったくわからない。
「ヌル文字」といい、実際はRubyと全く関係ない宿題なんじゃないの?
>>908 それよりもString#chopを文字列長を得るために使えなんて、
変な「てくにっく」を強要する筋の悪い課題を出す方が問題だなあ。
これはダメプログラマ製造工程だろう。
それにヌル文字云々てのはCとRubyの区別ついてないんじゃないの。
教師がダメダメですよこれ。
実際RubyのStringオブジェクトはヌル文字'\0'を含むことができるし、
文字列末尾のマークにも使ってないんだし。
この課題を出したやつって、ぐちゃぐちゃスクリプトを書いてみて、
出てきた結果が1文字多かったから「末尾のヌル文字をカウントしてるに違いない」
とか「考察」しちゃったんじゃないのかなあ。
>>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弱で収まりそう。
>>910 >教師がダメダメですよこれ。
ていうかアイツ自身が教師なんでしょ ( ´д)ヒソ(´д`)ヒソ(д` )
>>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
>>911 913続き。
そもそもMonaADKにはC++だけでCコンパイラが入ってない。
ld(1)のオプションもgcc(1)のオプションも両方肝なんだろうが、
ldはともかくgccのオプションで-nostdlibであるが故にlibcな関数が使えない。
monaapiとmonalibcというライブラリがそれに対応するので、ひととおり
#include <monapi.h>
#include <monalibc.h>
する必要があるし、それでも足りないと思われ。
クロスコンパイル汁
そもそも初心者スレの話題ではない
IP->2chのID変換プログラムのRuby版てないの?
>>917 IDってIPと日付から求めるという情報は出てるけど実際にそこからどういった文字列を生成して
何のアルゴリズムで求めてるのかは誰も知らんのではなかろうか。
とりあえず俺の考える検索ワードではグーグル様は答えてくれなかった。
方法がわかれば作るのは簡単。
>>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です
>>920 いや、システムに存在してるはずの /usr/include/termios.h を調べてる。
ちなみにうちの Cygwin では ruby extconf.rb は成功したよ。
>>921 確かに言われたとおりにありました
じゃあなんで失敗するんでしょうか?
>>922 さあ? mkmf.log の中身はどんな感じ?
こんな感じです
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をインスト
RuBBSやyuzuha以外のRubyで書かれた掲示板スクリプトってある?
ぜんぜんないんだよね
perlスクリプトはたくさんあるんだが
あったら教えて
マルチポストはネチケット違反ですよ!
配列をソートしたいんだけど、Array#sort だとどれがどこにいったかがわからないですよね
それを得るいい方法ないですか?
例:
[0, 3, 1, 10]
とあった時に
[10, 3, 1, 0] というソートしたいのと、
[3, 1, 2, 0]という元の位置も得たい
こんな感じでやってみましたけど、なんか効率的でないですよね
いい方法ないかな
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])
二重配列にしてsortするってのが思いついたけど変かな
>>924 変なところはなさそうだけどなあ。念のため聞くけど gcc はインスコしてるんだよね?
>>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]
}
とか
ああ降順かsort.reverse
a = [0, 3, 1, 10]
a.zip((0...a.length).to_a).sort { |x, y| x[0] <=> y[0] }
>>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]みたいな同数も、考慮しないといけないのでした。
>>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])
だったら
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
で
メソッドにするなら、ブロック引数も取れるようにした方が良いような。
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
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で試したら
問題なく動きました (´・ω・`)
>>940 wxp sp2で試したけど、特に問題はないね。
w2kのせいかな?
Perl の MLDBM みたいなものってある?
>>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 ん?Arrayの内容も含めて丸ごと複製するということですか?
Marshal.dumpやMarshal.restoreを使うという方法は?
>Marshal.dumpやMarshal.restoreを使うという方法は?
これは重そうだな・・・
シャロウコピー(clone)の代入バージョンはあるの?
>>949 Marshalを使う以外に汎用的にディープコピーをする手段はないと思う。
あと代入はオブジェクトに新たなラベルをつけるという意味しかもたないから、
コピーも何もしないよ。代入はオブジェクトの操作ではない。
だからシャロウコピーの代入バージョンなんてものは存在できない。
>>947 「既にインスタンスが二つある場合」が通じてないと思われ
>>952 a = '2ch'
b = [ a ]
...のように"インスタンスが2つある場合"に、
それらを丸ごと複製する方法についての質問だと理解しました。
もしかしてとっかかりから誤解してますかね?
意味わからん。
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
しましたが、使えません。(インストールできない)
どうして
>>957 raccが必要だったと思ったが、その辺どう?
>>958 最近ではそういう仕様になってるのか?
昔のExerbでは、ちゃんとApolloをphi.soごと固められたはずだが
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 '
[email protected]' with some additional
information, such as the description of the crash and the steps to reproduce it
(if it's possible).
>>957 インストールできないじゃ状況がよくつかめんが・・・。
raccを解凍して
> ruby setup.rb install
rdtoolを解凍して
> ruby setup.rb install
その後、rd/dot.rd2rcがないぞって怒られれたから
rdtoolのlibの下にあるdot.rd2rcをrd/にコピーした。
うちはそれで動いてるよ。
>>960 いや、できるはずだが。
少し前のバージョンは問題なかった。
phi.so以外の拡張ライブラリのバイナリを突っ込んだらエラーになる場合はあるかも知れないが。
>>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は、満たしております。
他で聞いて見ます。
いまだにイテレータが理解できん。
理解しなくいい。感じろ。感じるんだ。
>イテレータ
わりとするり、と理解できた(ような気になった)漏れは特殊なのか。
969 :
& ◆or0XnlxUXQ :05/02/06 20:50:51
>>962 ありがとうございます。
ruby setup.rb install
の 「install」 が抜けていました。 ^^;
ところで、 ruby 1.8.2(Apollo Version) でも racc は
別途インストールする必要があるでしょうか。
>>969 俺が見た資料には「あったほうがよい」のような意味合いに書いて
あったな。実際は別途インストールしなきゃ動いてくれんかったが。
>>968 説明読んでただけじゃよくわからなくて、
チュートリアルだかにあったコードをいじくってみて
「なーんだ、コールバックじゃん」とすぐに理解できたな。
forで十分じゃんと割り切った俺は最強四天王の一角
>>967 むぅ。それはまったくもってそのとおり。
>>972 そりゃ使う側だろう…。eachメソッドが定義されていてそいつがイテレータを取るならば、
forメソッドが適用できるって事だ。each以外のイテレータはどうすんの?
イテレータを定義したりしない?(しないんだろうな)
うわ、ごめんforメソッドじゃねえよ。for構文な、すまん。
スクリプトごときでイテレータ定義している奴は負け組み
スクリプトを「ごとき」とかいう認識でいる奴は負け組
イテレータごときの定義になんだかんだケチ付ける奴は負け組
新スレをッ!
JRubyでjava.util.Iteratorとかjava.util.Enumerationにeachを後付けして悦に入るも
調子に乗ってjava.sql.ResultSetにもeachを後付けしようとしてできない漏れは負け組
つーかヒネクレモノ