1 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 08:39:14 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 ★注意★ Ruby 1.9.1 は初心者にはまだ時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。 (理由:現時点では多くの有名ライブラリやアプリが 1.9.1 に完全対応していないためです。) 1.8.7 でも 1.9 系に導入された新機能のいくつかが利用可能なため、1.8.7 を習得すれば将来スムーズに 1.9 系に移行できるでしょう。 関連スレやURLは>>2-5 あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。 ■質問する人へ 質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。 ・モジュール名やエラーメッセージでググる ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/ ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ 質問には以下を書くこと。へたくそな質問は再提出を要求される。 ・詳しい内容(「動きません」「うまくできません」では回答しようがない) ・エラーメッセージ(自力で訳さずなるべくそのままで) ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる)) ・最終的にやりたいこと(もっとよい方法がある場合が多いので) 回答してくれた人には「ありがとう」のひとことをいってあげて。 ■回答する人へ 相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。 それができないならこないこと(だって初心者スレだもん)。 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
132 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 00:58:08 ] >>129 ありがとうございます 素人考えですがポイント数が増えると 2. の方がいいのかなという気がするので、リンク先を読んでみます >>130 Tk もわかりません…
133 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 01:05:03 ] グラフはQwtがマジおすすめ qwt.sourceforge.net/ RubyのQtバインディングがあればRubyからも使えるはず 俺はPyQtからしか使った事ないが
134 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 01:27:16 ] >>129-131 128 です ウインドウへの直接描画 - Gdk::Drawable ruby-gnome2.sourceforge.jp/ja/hiki.cgi?%A5%A6%A5%A4%A5%F3%A5%C9%A5%A6%A4%D8%A4%CE%C4%BE%C0%DC%C9%C1%B2%E8%282%29+-+Gdk%3A%3ADrawable こちらを見落としていたようで、先ほどのリンクと一緒に参照しながらやっていきたいと思います 確かに gtk そのものを学ぶ必要があるのだろうとは感じています。ありがとうございました >>133 ありがとうございます Qwt のスクリーンショットはかなりイメージに近いです
135 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 02:28:19 ] irb の文字入力が悲しいくらい重いです カーソル移動は問題ないです irb --noreadline とすると入力は普通になりますが使いにくいです ruby 1.8.6 (2009-08-04 patchlevel 383) [i386-mingw32]
136 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 04:15:30 ] PCのスペックは?それ書いてくれないと判断できないのだが
137 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 08:07:16 ] プロッターを1から作るのは全くおすすめできない 133のQwtであればAPIで簡単に実現可能な 描画領域の拡大・縮小やドラッグ、凡例表示なんかを実装するのは よっぽどモチベーションが高くないと無理
138 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 10:52:05 ] >>136 単なるローカルエコーであるはずのirbでの文字入力だけが重くなるという時点で スペックとか関係ない問題だと思う…
139 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 15:08:41 ] 「単なる」っておまえReadlineを知らんのだろ
140 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 17:42:37 ] io = File.open 'text.gz' #俺様専用! gz = Zlib::GzipReader.new io gz.close io.closed? # しまった! IOクラスのインスタンスを要求するライブラリで、closeを呼ぶと 上流のIOがcloseされてしまう仕様は、何か理由があるのですか? 内部でIOを複製してそれを使えばいいじゃないですか、と思うのですが。
141 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 18:33:36 ] >>140 一緒に閉じたほうが使いやすいから Zlib::GzipReader の close 時に io を一緒に閉じて欲しくないのなら Zlib::GzipReader#finish を使う これだと wrap 使ってブロックで書ける File.open('text.gz'){|f| Zlib::GzipReader.wrap(f){|gz| # なんか gz.finish } p f.closed? #=> false }
142 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 18:36:10 ] >>141 ホントだ。 何か技術的な理由でそのような仕様になっているのかと思った。 どうもありがとう。
143 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 18:43:30 ] と思ったら、IOストリームの位置が進められているよ。 やっぱり内部で複製していないのか。 とりあえず io.rewind で戻せるからいいけどさ。。
144 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 18:52:49 ] >>143 gz.rewind で GzipReader オブジェクトが作成された時点のファイルポインタ位置に戻せるよ 自動でやらないのは細かい制御したいときに込み込みでやられると発狂するからだと思う File.open('text.gz'){|f| Zlib::GzipReader.wrap(f){|gz| # なんか gz.rewind gz.finish } p f.closed? #=> false } IO オブジェクトを複製しない理由はなんか偉い人が教えてくれるんじゃないかな
145 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 19:34:14 ] >>143 f = File.open file f.read f.dup.seek 0 f.pos そもそも副作用の代表格であるIOにまともな複製なんて不可能じゃない?
146 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 21:02:46 ] IOのeachとlinesってまったく同じ?
147 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 22:41:29 ] 同じ
148 名前:デフォルトの名無しさん [2010/02/03(水) 06:52:22 ] Ruby on Rails 3.0 Release Notes guides.rails.info/3_0_release_notes.html
149 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 10:23:18 ] >>138 Windows版Rubyはirb立ち上げておくとなんか変なプロセスが一緒に走って重いよ。 デュアルコアならさして問題ないが1コア占有するんでね。 csrss.exeだったかな。システム絡みのが。 いつまで立っても直らないのは、CPU占有率を常に見ている人が少ないのと、 誰も公式に言わないからだろうと
150 名前:149 mailto:sage [2010/02/03(水) 10:27:00 ] 今試したら、 クアッドコアのマシンでruby 15%、csrss 8%ぐらい合わせて1コア分くらいだな。 ちょっと違ってたスマソ とりあえず、Windowsではirb重い。 少なくとも開発中に立ち上げっぱなしはムリポw 俺はcoLinuxとかで立ち上げるからさして問題ないけど
151 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 10:29:19 ] えっ BusyLoopなの?
152 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 10:36:22 ] 今しばらくmswin32版rubyのirbで色々やってみてるけど 触らなければCPU0%だなあ もっと時間かけると占有するようになる?
153 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 10:38:15 ] ruby 1.8.6 (2009-08-04 patchlevel 383) [i386-mingw32]
154 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 10:39:56 ] お、mingwの話かスマソ
155 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 13:11:46 ] 教祖がウィンドウズ使ってないから仕様。
156 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 14:50:51 ] パッチレベルをp388に上げてみるとか Readlineのdllを最新のものにしてみるとか ちなみに ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-mingw32] のirbは軽い csrss.exeの占有率はせいぜい0%~1%くらいか。 CPUはPentium M 1GH ttp://gnuwin32.sourceforge.net/packages/readline.htm
157 名前:デフォルトの名無しさん [2010/02/03(水) 15:20:42 ] Windows上でMechanizeを使おうと考えており下記のスクリプトを試しましたが下記のような結果となりました 何がおかしいのか見当つかないのでどなたかアドバイスいただけないでしょうかよろしくお願いいたします * 環境 >ruby -v ruby 1.8.7 (2009-06-12 patchlevel 174) [i386-mswin32] >gem list *** LOCAL GEMS *** hpricot (0.8.2) mechanize (0.9.3) nokogiri (1.4.1) * テストスクリプト require 'rubygems' require 'mechanize' agent = WWW::Mechanize.new page = agent.get('www.google.com/ ') puts page.forms puts page.forms.with * 結果 >ruby -d hoge.rb Exception `LoadError' at C:/PROGRA~1/ruby-1.8/lib/ruby/vendor_ruby/1.8/rubygems.rb:1112 - no such file to load -- rubygems/defaults/operating_system Exception `NoMethodError' at C:/PROGRA~1/ruby-1.8/lib/ruby/1.8/rational.rb:78 -undefined method `gcd' for Rational(1, 2):Rational Exception `LoadError' at C:/PROGRA~1/ruby-1.8/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:31 - no such file to load -- mechanize #<WWW::Mechanize::Form:0x381a3a0> Exception `NoMethodError' at C:/PROGRA~1/ruby-1.8/lib/ruby/1.8/pp.rb:214 - undefined method `with' for #<Array:0x381a4e0> hoge.rb:7: undefined method `with' for #<Array:0x381a4e0> (NoMethodError)
158 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 15:24:15 ] >>157 Mechanizeのメソッドの使い方を単に間違ってる ここ全部読め ttp://d.hatena.ne.jp/kitamomonga/20081209/kaisetsu_for_ver_0_9_ruby_www_mechanize
159 名前:デフォルトの名無しさん [2010/02/03(水) 16:59:18 ] puts ["hoge"][0] とやると「hoge」が出力され、0以外だと「nil」が出力されるのですが この構文自体がどういうものなのか分かりません。 なにかの省略形とかなのでしょうか?
160 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:07:50 ] >>159 そんなへちょい例文作ったとこどこよお母さん一言文句言っちゃるわ a = ["hoge"] puts a[0] つまり配列の 0 要素目
161 名前:159 [2010/02/03(水) 17:14:43 ] >>160 やはり配列でしたか…。こういう記述も許されるんですね。 ありがとうございます。
162 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:16:58 ] > こういう記述も許されるんですね。 というか配列リテラルで直接要素参照する意味はまずない むしろ嫌がらせに近い
163 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 17:28:30 ] pc12.2ch.net/test/read.cgi/tech/1155031689/ 661 デフォルトの名無しさん [sage] 2009/09/04(金) 08:12:26 ID: Be: Windows用Rubyは MinGW版が速いと聞いてRuby on Railsで試してみた - yuum3のお仕事日記 d.hatena.ne.jp/yuum3/20090805/1249452345 antoniocangiano.com/wp-content/uploads/2009/08/mri_kri_total_runtime.png mingw版のほうが速いんだってさ 664 デフォルトの名無しさん [sage] 2009/09/06(日) 21:15:00 ID: Be: Rails遅いのかーバージョン下げるかなー 665 デフォルトの名無しさん [sage] 2009/09/06(日) 22:06:08 ID: Be: 913 nobodyさん [sage] Date:2009/09/06(日) 14:23:30 ID:??? Be: >>905-907 本当だ。なんだこれ? mswin32版のRuby 1.8.7-p160が遅すぎる件 - 那由多屋 開発日誌 d.hatena.ne.jp/nayutaya/20090601/1243848756 L'eclat des jours(2009-04-22) www.artonx.org/diary/20090422.html (コメ欄) 666 デフォルトの名無しさん [sage] 2009/09/06(日) 23:28:30 ID: Be: 何年も前から言われてることに反応して欲しいのかな 667 デフォルトの名無しさん [sage] 2009/09/06(日) 23:53:35 ID: Be: 何年も前じゃないだろ 670 デフォルトの名無しさん [sage] 2009/09/07(月) 06:40:46 ID: Be: >>666-667 >>665 がその前もコピペしないからわからないが、どうやら、p160にうpだてすると、 Railsのviewの処理が100倍遅くなるらしい。今年に入ってからの話。
164 名前:デフォルトの名無しさん [2010/02/03(水) 18:15:37 ] >>158 どうもありがとうございました このサンプルで動いている環境もあったので混乱していましたが 使っているバージョンが違っておりました
165 名前:デフォルトの名無しさん [2010/02/03(水) 22:07:55 ] はてなブックマーク(エクスポートしたデータ)から タグを指定して、一部を抽出するプログラムを書きたいです。 require 'rubygems' require 'hpricot' require 'open-uri' doc = Hpricot(open("dump.htm")) (doc/:a).each do |para| if para.attributes['tags'] = "microsoft" puts para end までは書いたのですが、別のファイルに保存する方法が分かりません。 よろしくお願いします。
166 名前:デフォルトの名無しさん [2010/02/03(水) 22:14:09 ] open('output', 'w') do |out| ... end の中に最後の4行をまるごと入れて、puts を out.puts に。
167 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 22:35:55 ] >>166 ありがとうございます。出来ました。 しかし思ったような結果ではなかったので 上記のプログラムでは駄目なのかもしれません。 引き続き、ご相談をお願いします。 ファイル内に <dt><a href=”” tags=””></dt> <dd>テキスト</dd> が繰り返されています。 タグが一致したら、上記全体を抽出したいのですが これはhpricotで出来るのでしょうか? それともxml パーサーのような物が必要なのでしょうか?
168 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 22:39:45 ] >>169 と>>201 を後出し条件のために予約
169 名前:デフォルトの名無しさん mailto:sage [2010/02/03(水) 22:42:32 ] Oh翼くんロングパス >>167 本当にしたいことを言え
170 名前:デフォルトの名無しさん [2010/02/03(水) 22:47:08 ] dt = a.parent dd = dt.next_sibling つーかdtとddが出てこないのはputsをout.putsに変えなくても分かるはずだが
171 名前:デフォルトの名無しさん [2010/02/03(水) 22:47:53 ] >>169 > 本当にしたいことを言え うーん、質問が意味不明ですか? はてなブックマークのデータで <dt><a href=”何か” tags=”microsoft”></dt> <dd>コメント</dd> の部分を抽出したいという事です。 >>165 >>166 だと <a href=”何か” tags=”microsoft”>しか抽出できません。 dtから/ddまでを抽出したいのです。 お願いします。
172 名前:デフォルトの名無しさん [2010/02/03(水) 22:53:52 ] >>170 出来ました。 初めてのrubyなので、テンパってしまいました。 ありがとうございました。
173 名前:172 [2010/02/04(木) 00:10:07 ] すみません。まだお願いします。 tagsが「microsoft」のような英字だと上手く行ったのですが 「これはすごい」のような日本語(全角)だと上手くいきません。 $KCODEをSJISに設定してみたりしたのですが・・・どうすれば良いのでしょう?
174 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 00:16:58 ] 悪いこと言わないから一通りRubyの解説なりなんなりを読め おおむね全部書いてある
175 名前:173 [2010/02/04(木) 00:29:01 ] Ruby 逆引きハンドブック(るびきち) を眺めているんですけど レベルが合ってないのでしょうか?
176 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 00:35:15 ] たのしいRuby → Railsレシピブック → るびきち と読みましたが、Railsが全くわかりかねます
177 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 00:42:02 ] レシピブックやらクックブックやらは基本ができてないと 小手先だけになって変更できなくなって詰まるのに >>176 Railsは実際に作るものがないと知識としては全く覚えきれない
178 名前:デフォルトの名無しさん [2010/02/04(木) 00:42:06 ] あらら、ちょっとレベルが上過ぎでしたか。 申し訳ない。 たのしいRubyを購入したいと思います。 ・・・最後におまけで >>173 にお答えいただけると、ありがたいです。
179 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 00:46:07 ] $KCODEはそのスクリプトに解釈させたい日本語文字エンコーディングを指定する その指定に従って、正規表現などの「バイト列と文字区切りの関係」を調整する つまり、この場合の日本語はブックマークHTMLファイル中の日本語だけだから、 HTMLファイルの文字エンコーディングを指定すればいい はてなブックマークのブックマーク形式のエクスポートHTMLファイルは UTF-8 だから、 $KCODE='u' とするか、 ruby -Ku で起動する
180 名前:デフォルトの名無しさん [2010/02/04(木) 01:06:36 ] >>179 > $KCODE='u' とするか、 ruby -Ku で起動する rubyのプログラムの方も、BOM無しのUTF-8で保存したら 上手くいきました。 基本から勉強したいと思います。ありがとうございました。
181 名前:149 mailto:sage [2010/02/04(木) 02:11:00 ] >>156-152 サンクス 環境書き忘れた。 大分前からアップデート暇なくてこのまま使っているから、今のは直っているのかもしれんな。 linuxだとというかdebian系だとaptとかでアップデート楽だからいいけど、 Windowsだとアップデートが面倒でかなわん。 ActiveScriptRubyで入れたものをmingwとかで上書きしちゃっていいものか mingwでgemとかも込みのパッケージってあったけ?
182 名前:149 mailto:sage [2010/02/04(木) 02:11:46 ] ごめん、環境書かずに送信したwww ruby 1.8.7 (2008-06-20 patchlevel 22) [i386-mswin32] 自分で言うのも何だがふるっ
183 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 02:16:49 ] うちの cygwin ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin]
184 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 02:22:46 ] >>176-178 Railsやりたいんなら、今のRails入門のオススメは Head First Railsということになってる(でいいよね?) O'Reilly Japan - Head First Rails www.oreilly.co.jp/books/9784873114385/ amazon.co.jp/dp/4873114381/ Head FirstがRuby入門者向けに書いてあるかはしらんが、 その前にRuby入門の段階ならRailsの前にRubyの入門本をもっと読むべきだと思われるw
185 名前:149 mailto:sage [2010/02/04(木) 02:29:16 ] >>183 手持ちのcygwin環境も同じバージョンだった。 gem入れてない環境だからかわからんが、cygwinで待機状態だと全然軽いほぼ0%。 csrss.exeも出てこないわ >>156 とりあえず、簡単な方のReadlineのバージョン上げてみる
186 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 13:36:20 ] ruby 1.8.6 (2009-08-04 patchlevel 383) [i386-mingw32] >gem i hpricot Building native extensions. This could take a while... ERROR: Error installing hpricot: ERROR: Failed to build gem native extension. C:/Ruby/bin/ruby.exe extconf.rb checking for stdio.h... no *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=C:/Ruby/bin/ruby 続きます。
187 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 13:37:36 ] >>186 nokogiri使え
188 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 13:38:08 ] ↑ ワロタ
189 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 13:38:18 ] 続きです。 Gem files will remain installed in C:/Ruby/lib/ruby/gems/1.8/gems/hpricot-0.8.2 for inspection. Results logged to C:/Ruby/lib/ruby/gems/1.8/gems/hpricot-0.8.2/ext/fast_xs/gem_m ake.out すいません、ググってみたのですが分かりません。 どうやったらhpricot入れられますか?
190 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 13:44:11 ] >>189 Hpricot は本来の作者がメンテナンスを諦めた Nokogiri 使うよろし どうしても Hpricot を使わないといけないのなら gem でバイナリが用意されてる mswin32 の Ruby をインストールするか あるいは mingw32 Ruby においてコンパイル可能にする mingw32 Ruby の DevKit を入れれ ttp://d.hatena.ne.jp/kitamomonga/20100130/ruby_mingw32_needs_make_when_install_watir
191 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 13:47:13 ] RubyとしてActiveScriptRubyをインストールするのがスレ的にいちばん簡単だと思う
192 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 14:00:55 ] >>190 ありがとうございます! 諦めてnokogiri使わせて頂きます。
193 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 14:22:47 ] OneClick Installer の被害者の方々が続々と
194 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 16:44:00 ] なんでmswinのバイナリがあるのにコンパイルしようとしてんだろ 前も思ったけどrubygemsってそのへんの判別どうなってんの?
195 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 17:17:21 ] >>194 gem作成者がWindows向けかどうかを手で条件判断してる install_win_binary if RUBY_PLATFORM =~ /win32/ とか この場合、 mingw32 はマッチしないから、用意したWindowsバイナリ(mingw32でもたぶん動く)は使われずに 自前でコンパイルするように分岐する Windows かどうかの判定は install_win_binary if RUBY_PLATFORM =~ /win|mingw/ みたいに mingw を含めるようににしろ、と少し前から言われてる これに沿ってない、あるいはそう言われる前の古い gem パッケージは、 mingw32 でも「バイナリパッケージなし」と判断されてコンパイルプロセスが走る いっそそういうヘナチョコ gem も許してコンパイルを受け入れよう、というのが>>190 でも書いてある DevKit
196 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 17:26:42 ] >>195 ありがとう、雛形作成ツール or Rakefile手書きした人の責任ってことか Rakeでis_windows?みたいなの用意していてくれれば解決だった気がする
197 名前:デフォルトの名無しさん [2010/02/04(木) 17:56:02 ] win で判定しちゃだめだ。 Darwin (= MacOSX) が引っかかる。
198 名前:デフォルトの名無しさん [2010/02/04(木) 17:59:08 ] プラットフォームの判別 jp.rubyist.net/magazine/?0017-CodeReview#l17 さすがに bccwin は外してもいいような気がする。
199 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 18:07:35 ] っていうかこの用途での RUBY_PLATFORM の利用はいいかげんやめたほうが… p の表示結果を横取りして解析するようなむず痒さを感じる
200 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 18:51:01 ] ruby -rdebug hoge.rb でデバッグするとき、gdbの--tty=みたいなことをしたいのですが、どうすればいいでしょうか? デバッガへの入力(pやbreak等)と出力(pの結果等)はそのままrubyを起動した端末で、 hoge.rbの標準入出力は別の端末につなぎたいのです。
201 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 19:20:47 ] >>199 じゃあ何使ったらいいの バイナリの判定ならCONFIG["RUBY_SO_NAME"] とか?
202 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 21:00:16 ] [1,2,3].map(&:to_s) => ["1", "2", "3"] 何が起きてる?リファレンスを嘗め回したがさっぱり
203 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 21:09:45 ] &の右側がProcオブジェクトでないときはto_procを呼ぶ。 :fooというシンボルのto_procはcall xするとx.fooの意味になるprocを返す。 例 > :to_s.to_proc.call 1 => "1" これでわかる?
204 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 21:11:02 ] あー、どこを見ればそれがわかるのか、というのは俺も教えてほしい。
205 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 21:15:43 ] 検索しにくい機能はこれだから困る 「Ruby1.9 ではイテレータをブロックなしで呼び出すと Enumerator を返すよ機能」と呼ぶ irb> [1,2,3].map(&:to_s) ["1", "2", "3"] irb> [1,2,3].map{|e| e.to_s} ["1", "2", "3"] irb> [1,2,3].map(&:next) [2, 3, 4] irb> [1,2,3].map{|e| e.next} [2, 3, 4] irb> [1,2,3].map{|e| e.next}.map{|e| e.to_s} ["2", "3", "4"] irb> [1,2,3].map(&:next).map(&:to_s) ["2", "3", "4"]
206 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 21:17:23 ] >>204 doc.okkez.net/ あとは、リテラルを知っておくと調べたいことが明確になるかな。 ところで上のマニュアルで検索すると、結果が出るまで数十秒くらい待たされるんだが、どうなってんの? 特に検索に失敗した場合の結果報告が遅すぎる。
207 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 22:10:58 ] >>203 .call 1 がどこから来るのか分からん
208 名前:デフォルトの名無しさん [2010/02/04(木) 23:20:11 ] Rubyで書けばこんな定義。 class Symbol def to_proc proc {|obj, *args| obj.send(self, *args) } end end 実際1.8.6までのRubyにActiveSupport(Railsで使ってるRubyコア拡張) 入れると↑のように定義される。
209 名前:デフォルトの名無しさん mailto:sage [2010/02/04(木) 23:30:59 ] >206 ごめん。 全てのデータを読み込んでるから遅い。 チューニングしたいけど、まとまった時間がとれない。
210 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 00:26:44 ] [1,2,3].map(&:to_s) は [1,2,3].map(&proc{|obj| obj.send(:to_s) })になると。 *argsはブロック引数が2個以上のときか > ["abc","def","ghi"].each_with_index(&:slice!) => ["bc", "df", "gh"] 理解。
211 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 00:43:06 ] 98%くらいは>>205 のブロックつきメソッドの短縮表記目的だけどな 正確な動作を覚えておくと便利なことはあるだろうね
212 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 02:11:15 ] わかりにくいのはSymbol#to_procのほうじゃないか
213 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 02:24:19 ] わかりにくいというか、ぶっちゃけわけがわからないよね
214 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 04:33:05 ] sort_by(&:length) とか便利
215 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 09:16:02 ] どうせならEnumerable#reduce/injectみたいに &無しで実現してもらいたかった昨日
216 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 09:19:42 ] >>213 >>205 だと理解しているうちはいいけどな SymbolかProcになるって時点で変だ 目を覚ませって感じではある
217 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 09:24:14 ] 簡潔さを追求しすぎてパァール化してるな
218 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 09:34:51 ] イテレータなんて古代言語使われると混乱しちゃう それと>>202 は&で:to_sをブロックとして扱おうとしてるだけだから 別にブロックなしというわけでなくEnumeratorも関係なくね
219 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 09:35:36 ] ところで>>206 で配布してるchmファイルってみんな見れてるのか? 開くとき他のchmファイルと違って「セキュリティの警告」がでるし 開いても本文カラムが「取り消されたアクション」か 「ページを表示できません」のいずれかにしかならん 以前は ttp://elbereth-hp.hp.infoseek.co.jp/ruby.html のchmファイルを使っていたが問題はなかった WindosXP SP3 なんだがどうしたものか
220 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 09:44:36 ] >219 ごめん。Windows持ってないんで検証出来ないんだ。 なんかチェックボックス外したら使えるという話は聞いたことがある。 手元のDebianではちゃんと見れた。 XPのSP3以降?ではそういう警告が出るようになったらしい。 Vistaで警告が出てたときはチェックボックスを外したら使えた。
221 名前:220 mailto:sage [2010/02/05(金) 09:46:14 ] 220で書いてるVistaはたまたまそこにいた人が使ってたやつね。
222 名前:デフォルトの名無しさん [2010/02/05(金) 11:01:26 ] 終わった話だけど。 block = proc {|x| x.to_i } %(1 2 3).map(&block) の &block のところに &:to_i と書けるという話であって、 ブロックを取らないならEnumeratorを返すという話ではない。 # そもそも1.8.7のmapは互換せ(ry
223 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 11:14:26 ] >チェックボックス もしかしてIEのセキュリティレベルを落とさないと見れない仕様か デフォルトの状態でリファレンスマニュアルが読めないとか ここまでくるとドザーに対する嫌がらせに近いな
224 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 11:44:27 ] >>223 嫌がらせはそのへんにしとけ よく知らないけどセキュリティ絡みならそのchmのプロパティで「ブロックの解除」を試してみたら?
225 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 11:48:33 ] chm 自体がそういうものになった なんでもかんでも Windows 叩いてオナニーしてる厨には理解できんだろうが ttp://support.microsoft.com/kb/902225/ja > これは正常な動作であり、セキュリティ更新プログラム 896358 および > Windows Server 2003 SP1 のインストールの結果として予期されている動作です。
226 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 12:13:05 ] >>219 Windows開発者にはかなり既知な問題なのですが、 chmファイル単体をそのままネットから落とすと、セキュリティがらみのフラグがつくんです。 exeファイル単体をネットから落とした時もいちいち確認してくるよね? >>224 もいってるけど解決策はchmのプロパティでブロックを解除してやる
227 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 12:25:52 ] chm自体が規格として取り残されたというか… そもそも表示にIE使う時点で将来的に規定事項だったその時がやって来ただけというか…
228 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 12:29:03 ] 配布する人が 「XPやVistaや7の人は俺を信用してチェックボックス外してね」 と警告するしかないな
229 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 14:46:34 ] zipped htmlでくれ
230 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 14:50:20 ] 全文検索が問題なんだよね 標準で検索フレームがつくのがchmの大きな利点 それさえ別途便利に使えれば素のHTMLの配布で問題ない というかchmの検索はもうちょっと賢くなって欲しい というか一般語の検索に特化されててプログラミング用語やトークンの検索に向かねー
231 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 15:38:21 ] >>224 , >>225 , >>226 ありがとう また一つ賢くなった
232 名前:デフォルトの名無しさん mailto:sage [2010/02/05(金) 16:18:43 ] pc12.2ch.net/test/read.cgi/tech/1155031689/ 【ActiveScript】RubyをWindowsで使うスレ【GUI】