Ruby初學者スレッド Part 9
■ このスレッドは過去ログ倉庫に格納されています
0001紅寶石
2006/11/21(火) 08:33:42マニュアル
http://www.ruby-lang.org/ja/man/
Ruby FAQ
http://ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
逆引きRuby
http://www.namaraii.com/rubytips/
Ruby リファレンスマニュアルの Windows HTML Help版
http://elbereth-hp.hp.infoseek.co.jp/ruby.html
Rubyリファレンスマニュアル刷新計画
http://doc.loveruby.net/
前スレ
Ruby初心者スレッドPart8
http://pc8.2ch.net/test/read.cgi/tech/1159424939/
>>2-10
0455デフォルトの名無しさん
2006/12/16(土) 18:06:40eclipseの使い方知らないから使ってないけど。
0456デフォルトの名無しさん
2006/12/16(土) 18:12:59自分はRDE使ってるけど、使用し続けると、数時間後にリソースエラーとか何とかで固まるのと
保存後にアンドゥーができないのは確かに辛いよね。
HDDにファイルごと履歴残してないんだろうか。
0457デフォルトの名無しさん
2006/12/16(土) 18:46:530458デフォルトの名無しさん
2006/12/16(土) 18:56:42をもっと短く書きたいのですが、
inject?
>>457
なさそう・・・
0459デフォルトの名無しさん
2006/12/16(土) 18:57:23hoge.inject{ |i, j| i + j }
か。
0460デフォルトの名無しさん
2006/12/16(土) 19:23:16使いたいんだけどなー。
そんな漏れはJmEditor。TeraPad以外でシンプルないい
エディタないかな?
0461デフォルトの名無しさん
2006/12/16(土) 23:48:51文字列や正規表現のリテラルに結構困る
それが無ければなー
PeggyPad は文字間の調節が出来なくて
太字の単語が潰れる…
0462デフォルトの名無しさん
2006/12/17(日) 00:48:34自分も、PHPとかPerlとか他のスクリプトは
全部サクラエディタ使ってる。
単語の補完も出来るし、登録しとけば
パラメータヒントとかも出せるからそれなりに便利だし。
0463デフォルトの名無しさん
2006/12/17(日) 12:12:58ファイルのコピーってどうすればいいんでしょうか
テキスト系なら↓でコピーできるんですが、画像ファイルは途中で途切れてしまいます
def copy(inf,ouf)
dat = File.open(inf , "r") {|fr| dat = fr.read }
File.open(ouf , "w" ) {|fw| fw.write dat }
end
0464デフォルトの名無しさん
2006/12/17(日) 12:25:10def copy(inf,ouf)
File.open(ouf , "wb") {|fw| fw.write File.open(inf , "rb"){|fr| fr.read } }
end
でも、File.copy(from, to) 使っても同じようなことができるよね。
0465デフォルトの名無しさん
2006/12/17(日) 13:15:17バイナリモードで無事成功しました。
今までFile.copy(from, to)がなぜかエラーだったんで自作してたんですが
さっきrequire 'ftools'が必要な事に気づきました。
0466デフォルトの名無しさん
2006/12/17(日) 15:39:380467デフォルトの名無しさん
2006/12/17(日) 18:14:180468デフォルトの名無しさん
2006/12/17(日) 22:18:430469デフォルトの名無しさん
2006/12/18(月) 10:52:12* Rubyユーザは少数派である
* 大衆はRubyを(いろんな理由で)受け入れられない
* 現在、Rubyを受け入れられるのは「選ばれた人々」である
* つまり、彼らはある意味「選民」である
* しかし、選民意識をあまり吹かせると、ますます大衆から受け入れられない
* 結果としてますます選民になる(悪循環の予想)
0470デフォルトの名無しさん
2006/12/18(月) 12:00:240471デフォルトの名無しさん
2006/12/18(月) 12:17:35あなたのレスはRubyコミュニティーをみごとに象徴したすばらしいレスです。
0472デフォルトの名無しさん
2006/12/18(月) 12:24:22プログラムを書いたことのない初心者はお断り。
0473デフォルトの名無しさん
2006/12/18(月) 12:26:50偉そうなんだよねえ。
0474デフォルトの名無しさん
2006/12/18(月) 12:28:190475デフォルトの名無しさん
2006/12/18(月) 12:30:15なんで?
0476デフォルトの名無しさん
2006/12/18(月) 12:32:560477デフォルトの名無しさん
2006/12/18(月) 12:45:550478デフォルトの名無しさん
2006/12/18(月) 12:46:55* つまり、彼らはある意味「選民」である
* しかし、選民意識をあまり吹かせると、ますます大衆から受け入れられない
* 結果としてますます選民になる(悪循環の予想)
0479デフォルトの名無しさん
2006/12/18(月) 12:49:240480デフォルトの名無しさん
2006/12/18(月) 12:49:25向いていないような気がする。
むしろRubyには、プログラミングの概念くらいは理解しているな?的な
良くも悪くもUnix思想を受けているんじゃないかな。
0481デフォルトの名無しさん
2006/12/18(月) 12:57:38Windowsしか使ったことのない初心者はお断り。
0482デフォルトの名無しさん
2006/12/18(月) 13:05:000483デフォルトの名無しさん
2006/12/18(月) 13:30:41* プログラマは少数派である
* 大衆はプログラミングを(いろんな理由で)受け入れられない
* 現在、プログラミングを受け入れられるのは「選ばれた人々」である
* つまり、彼らはある意味「選民」である
* しかし、選民意識をあまり吹かせると、ますます大衆から受け入れられない
* 結果としてますます選民になる(悪循環の予想)
スレ違いゴメス。
0484デフォルトの名無しさん
2006/12/18(月) 14:55:03勘弁してもらえないだろうか
0485デフォルトの名無しさん
2006/12/18(月) 15:16:59JmEditor は良さ気だな。乗り換えようか。
Notepad++ は色分けの自由度が低いし
何より改行とタブの記号が自己主張しすぎてて嫌だw
0486デフォルトの名無しさん
2006/12/18(月) 15:30:28御大自ら次々にネタを投下してる言語なんだから仕方ないだろ。
修行だ、信仰心が問われているんだと思って我慢しろ。
0487デフォルトの名無しさん
2006/12/18(月) 16:56:58思ってる。ランチャー機能付いてるし、設定も簡単でイイ!
勘違いかもしれないけど、改行マークは最初から色ついてなかった
ような。とりあえずタブ記号は、スタイル設定ダイアログのGloba Styles
->Indent guidelinestyleで両方の色をデフォルトの背景色にすれば
消えるよ。
Notepad++教えてくれた人アリガトン。
0488デフォルトの名無しさん
2006/12/18(月) 17:07:480489487
2006/12/18(月) 17:21:17改行とタブの表示の有無は表示メニューから切り替えるだけでOK。
0490485
2006/12/18(月) 17:50:57違う違う。
俺は改行記号とタブ記号は表示されないと嫌なの。
でも、あくまで主役はコードであって欲しいから
目立つ改行・タブの記号は嫌なのさ。
極限まで薄い色にしたら一応見れた。…今度は見辛いが。
…これ設定ムズいな〜。
黒基調の設定がデフォで入ってるPeggyは楽だったんだが。
SciTEは…暇なときに設定やるかw
0491デフォルトの名無しさん
2006/12/18(月) 19:10:09> >487
> 違う違う。
> 俺は改行記号とタブ記号は表示されないと嫌なの。
失礼。そうだったのか。
> でも、あくまで主役はコードであって欲しいから
> 目立つ改行・タブの記号は嫌なのさ。
改行は特にすごいね(笑)
> 黒基調の設定がデフォで入ってるPeggyは楽だったんだが。
自分も黒バックが好みなのでその意味ではめんどいかな。
ちなみにJmでいまいち気に入らなかったのは、関連づけなどから
起動したときにタスクバーアイコンがアクティブにならないとこ。
0492デフォルトの名無しさん
2006/12/18(月) 20:35:170493デフォルトの名無しさん
2006/12/18(月) 21:16:490494デフォルトの名無しさん
2006/12/18(月) 21:22:050495デフォルトの名無しさん
2006/12/18(月) 22:33:55ruby-modeも黒基調もあるよ。
0496デフォルトの名無しさん
2006/12/18(月) 22:41:04xyzzyのruby-mode最低限の機能でよいのだが、
インデントが一定規則で、誤爆する
0497デフォルトの名無しさん
2006/12/18(月) 22:49:570498デフォルトの名無しさん
2006/12/18(月) 22:50:35私はEmacs使っていますけどね。
0499デフォルトの名無しさん
2006/12/18(月) 22:53:500500デフォルトの名無しさん
2006/12/18(月) 22:57:330501デフォルトの名無しさん
2006/12/19(火) 00:44:280502デフォルトの名無しさん
2006/12/19(火) 10:09:230503デフォルトの名無しさん
2006/12/19(火) 13:25:53ttp://rubyist.g.hatena.ne.jp/muscovyduck/20061114/p1
に書いてあるCGI実行サンプルを動かしてみると、常に「dump error」が出ます。
(ruby最新版を使うとエラーは出ませんでした)
webrick/httpservlet/cgi_runner.rb の Marshal.restore(dump) 周りに
問題があるようなのですが……
これって何故なんでしょうか?
1.8.0ではwebrickを使わないほうが良いのでしょうか?
0504デフォルトの名無しさん
2006/12/19(火) 14:12:530505デフォルトの名無しさん
2006/12/19(火) 15:23:030506デフォルトの名無しさん
2006/12/19(火) 16:57:37オブジェクト(Classクラスのオブジェクトも、クラスのオブジェクトも含めて)
が持ってるのは、
インスタンス変数と、インスタンスメソッドだけだと思ってたけど、
次の見て、ローカル変数も保持してるのって、わけわかめになってきた。
class Hoge
local = 1
define_method(:foo) do
p local += 1
end
define_method(:bar) do
p local += 1
end
local = 10
end
hoge = Hoge.new
p hoge.foo
p hoge.bar
(つづく)
0507506
2006/12/19(火) 17:01:04どうやら、ローカル変数のスコープの問題が関与しているようだけど、
ローカル変数は、静的にスコープが決まるとかいって、U゚Д゚U ハァ?
って感じだったので、
静的ってのを調べたら、静的って言うのは、コンパイル時に決まるらしく、
今まで、コンパイルと実行を区別してなかった、私にとっては、
理解を超越してしまってる。
↓ここが、それに関する説明っぽいけど、
http://www.ruby-lang.org/ja/man/?cmd=view;name=%BC%C2%B9%D4
スコープなんて言葉は一言もでてこないし、
ブロックって言う言葉も、普通の{}のブロックとは違うようだし、
意味不明です。
この理解は、RHGとか読んで、ソースコード読んで理解しなさいということなんでしょうか。
正直、初心者の私には、付いていけません。
eval系メソッドを使うなってことなんでしょうか。。
1.コンパイル=>実行までの流れがわかる、
2.あと、オブジェクトがどういう値を保持していて、どこからアクセス可能か
ということについて、いい本とか、サイトないでしょうか。
教えてください。お願いします
0508デフォルトの名無しさん
2006/12/19(火) 17:25:45>↓ここが、それに関する説明っぽいけど、
ここのことかな?
http://www.ruby-lang.org/ja/man/?cmd=view;name=%BC%C2%B9%D4#a.a5.ed.a1.bc.a5.ab.a5.eb.ca.d1.bf.f4
正直、このページ全体が酷い出来だな。
むしろこっちを読むべきじゃないかな。
http://www.ruby-lang.org/ja/man/?cmd=view;name=%CA%D1%BF%F4%A4%C8%C4%EA%BF%F4#a.a5.ed.a1.bc.a5.ab.a5.eb.ca.d1.bf.f4
これでわからなかったら、また聞いてくれ。
0509デフォルトの名無しさん
2006/12/19(火) 19:41:38>>500
xyzzyのruby-modeにおけるインデントがおかしいといってるだけであって、
ruby自体は何も非難していない。
被害妄想乙。
0510デフォルトの名無しさん
2006/12/19(火) 20:09:49じゃあスレ違いだ。xyzzyのスレに行ってやれ。
0511デフォルトの名無しさん
2006/12/19(火) 23:14:41まずクロージャ(closure)について勉強しろ。
理解できるまでは無理してdefine_method使うな。
0512デフォルトの名無しさん
2006/12/20(水) 10:39:420513デフォルトの名無しさん
2006/12/20(水) 11:21:47closureについてわからない所があれば、そこでまた質問すればいいんだ
そんなにスレを荒らそうとしないでくれ
0514デフォルトの名無しさん
2006/12/20(水) 11:22:490515デフォルトの名無しさん
2006/12/20(水) 11:43:40質問をしてあげたんだ。
君たちは謝辞を述べてから、競い合うように簡潔にして丁寧な解説を
披露しあうべきではないのかね?
0516デフォルトの名無しさん
2006/12/20(水) 12:20:380517デフォルトの名無しさん
2006/12/20(水) 15:45:21うまく質問ができない人は、必要な回答を得られないので、成長性が低くなる。
よい回答が習熟殿の指標足りうるのは、よい質問があってこそ。
テストの問題と一緒だな。
0518デフォルトの名無しさん
2006/12/20(水) 15:56:07> うまく質問ができない人は、必要な回答を得られないので、
回答できない言い訳はどうでもいい。
ただ良い回答があればそれでいい。
0519デフォルトの名無しさん
2006/12/20(水) 16:10:320520デフォルトの名無しさん
2006/12/20(水) 16:18:540521デフォルトの名無しさん
2006/12/20(水) 16:54:41修行とお布施、がんばります!!
0522デフォルトの名無しさん
2006/12/20(水) 23:01:50xyzzyなら、ruby-mode.lを直接改造して、*ruby-block-beg-re*とかを改造するといいよ。
;(defvar *ruby-block-beg-re*
; "class¥¥|module¥¥|def¥¥|if¥¥|unless¥¥|case¥¥|while¥¥|until¥¥|for¥¥|begin¥¥|do")
(setq *ruby-block-beg-re*
"¥¥<¥¥(class¥¥|module¥¥|def¥¥|if¥¥|unless¥¥|case¥¥|while¥¥|until¥¥|for¥¥|begin¥¥|do¥¥)¥¥>")
とか。ちょっとはましになる。
0523506,507
2006/12/20(水) 23:12:33>>512は私ではありません。
気をわるくしないでください
2chにつながりにくくなって、返事がおそくなりました。m(__)m
お騒がせしてすみませんでした。
みなさん、ありがとうございます。
まずは、クロージャについて勉強しようと思います。
ちょっと、ネットで調べたところ、
自分が知りたい概念と同じような気がします。
0524デフォルトの名無しさん
2006/12/21(木) 00:06:43Thread.fork {
while true
puts 'forked thread'
end
}
while true
puts 'main thread'
end
このコードは正しく動いている気がします
いつの間にか使えるようになったのでしょうか?
0525デフォルトの名無しさん
2006/12/21(木) 00:31:040526デフォルトの名無しさん
2006/12/21(木) 01:04:48ごっちゃにしてるんじゃなかろうか。
0527デフォルトの名無しさん
2006/12/21(木) 01:45:330528デフォルトの名無しさん
2006/12/21(木) 02:06:380529デフォルトの名無しさん
2006/12/21(木) 06:31:220530デフォルトの名無しさん
2006/12/21(木) 07:16:140531デフォルトの名無しさん
2006/12/21(木) 07:21:020532デフォルトの名無しさん
2006/12/21(木) 07:29:32OSのネイティブスレッドではない?
>>529-531
ワロタ。
でも本スレの流れを持ち込むのはやめてくれw
0533デフォルトの名無しさん
2006/12/21(木) 07:33:52そう、OSのネイティブスレッドではありません。
インタプリタががんばって処理します。
長所は移植性がとても高いこと。
短所はOSの支援を受けられないので、
たとえばSMPの恩恵を受けられないことです。
0534デフォルトの名無しさん
2006/12/21(木) 20:02:20while hoge..fuga
foo
end
この記法、どういうときに使うのでしょう?
0535デフォルトの名無しさん
2006/12/21(木) 21:02:05while foo in hoge..fuga
p foo
end
の間違いじゃ?
それだと無限ループしちゃうyo
0536デフォルトの名無しさん
2006/12/21(木) 21:03:20for foo in hoge..fuga
p foo
end
0537デフォルトの名無しさん
2006/12/21(木) 22:15:42とか逆切れしてみるのはどうか
0538デフォルトの名無しさん
2006/12/21(木) 23:21:37if (a==b)..(c == d)
end
みたいなのもあるんだよ。
ただ、可読性が結構低いのでお勧めは出来ないけど。
while hoge..fugaの形では使ったことはないけど
array.each do |e|
next unless (e == hoge)..(e == fuga)
......
end
みたいな形では極稀に使う。
0539デフォルトの名無しさん
2006/12/22(金) 10:43:540540デフォルトの名無しさん
2006/12/22(金) 12:05:15使い方、使い所などについて懇切丁寧に解説してる
本とかってないですかねえ。
0541デフォルトの名無しさん
2006/12/22(金) 13:08:50というメソッドだからなあ。
なんかあるかねえ。
0542デフォルトの名無しさん
2006/12/22(金) 15:48:04使いどころを説明するのは難しいね。
リフレクションあたりから説き起こして
小冊子一冊分くらいの分量は優にあるテーマだと思う。
0543デフォルトの名無しさん
2006/12/22(金) 20:31:24<状況>
実装がよく分からないクラスObjのインスタンスがあり、Obj#loadで
データを読んでくれます。Obj#loadが受け付ける引数はそのデータを
格納したファイルのファイル名のみです。
<やりたいこと>
手持ちの文字列データを突っ込みたいのですが、新たにファイルを
作ったりできません。
<試してみたこと>
StringIOを使ってみたりしました(NG)。
よろしくお願いします・・・。
0544デフォルトの名無しさん
2006/12/22(金) 21:29:55まずはソース嫁なんだけど。一応こんな感じでメソッド追加したら?
class Obj
def load_str(str)
# 何とかしてObjのインスタンス変数にアクセスする
end
end
あとは、irbなんかでObjのインスタンス変数やらメソッドやらを調べまくればokだと思う。
0545デフォルトの名無しさん
2006/12/22(金) 22:31:28Tempfile.new とかでもダメなのかな。
0546デフォルトの名無しさん
2006/12/22(金) 22:59:14IO.pipeを使って、書き込み側に手持ち文字列を突っ込んで、
読み出し側をloadの引数にすると出来たりしないだろうか。
0547デフォルトの名無しさん
2006/12/22(金) 23:05:31> Obj#loadが受け付ける引数はそのデータを
> 格納したファイルのファイル名のみです。
って書いてるから、Obj#loadの中でFile#openとか呼んでるだけなんジャマイカ?
で、File.openの引数にはTempfileとかIO.pipeの読み出し側って渡せる?
0548543
2006/12/22(金) 23:07:37GUIの設定部分をXRC(XML)ファイルとして外に出しており、何とか
これも含めて1つのexeにしたかったのです。
で、Exerbの方は外部データファイルをStringIOオブジェクトとしてしか
取得できないみたいで、一方、wxRubyはXRCをファイルとしてしか
読みません(たぶん)。
まあXRCだけexeとは別に添付ということでもいいんですけど。
こういうときにTempfile.newというのは慣例的あるいは審美的に
アリなんでしょうか?
0549543
2006/12/22(金) 23:14:58実装がよく分からないというのも、wxRuby(2)だからなんです。
拡張モジュールで、しかもSwigで作ってるらしいので、
ソースを見てもちょっと手に負えない可能性大です。
IO.pipeを調べて、一度それでやってみます。
0550デフォルトの名無しさん
2006/12/23(土) 00:12:30> if (a==b)..(c == d)
これ?ってどういう挙動すんの?
true..false
true..true
とか、って・・・
うげ、頭てんぱってきた
0551543
2006/12/23(土) 00:20:36Tempfileを作って渡す方は上手くいきました。
もともと存在するファイルのコピーを作るというのにちょっと
違和感があったのですが、ともあれ、ありがとうございました。
0552デフォルトの名無しさん
2006/12/23(土) 00:39:29本スレにあったけど
404 Blog Not Found:{perl,ruby} -nle 'print if /start/../end/'
http://blog.livedoor.jp/dankogai/archives/50720796.html
0553デフォルトの名無しさん
2006/12/23(土) 00:39:48Rangeオブジェクトじゃなくて、範囲式の特殊な用法。
http://www.ruby-lang.org/ja/man/?cmd=view;name=%B1%E9%BB%BB%BB%D2%BC%B0#a.c8.cf.b0.cf.bc.b0
0554546
2006/12/23(土) 02:22:42混乱させて済まぬ。
■ このスレッドは過去ログ倉庫に格納されています