[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 05/09 14:42 / Filesize : 176 KB / Number-of Response : 723
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Ruby 初心者スレッド Part 34



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を読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

129 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 00:37:22 ]
>>128
良く使われる手法は
1.グラフ画像を生成してウインドウに貼る
2.描画可能なコンポーネントにプログラムで描画する
の二つ

1.のグラフ画像生成は、画像処理ライブラリを使って自力でグラフを書くか
グラフ生成ライブラリを使うかする

2.はruby/gtk使った事無いからリンク先から関係ありそうなところ
> ttp://ruby-gnome2.sourceforge.jp/hiki.cgi?Gtk%3A%3ADrawingArea
> ttp://ruby-gnome2.sourceforge.jp/hiki.cgi?Gdk%3A%3ADrawable

130 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 00:41:47 ]
Tkの知識はあるんだよね

131 名前:デフォルトの名無しさん mailto:sage [2010/02/02(火) 00:43:29 ]
TkじゃなかったGTKだた
どっちにしても指示をRuby上からやる、という以上のものではないんで
GUIパーツの使い倒し方を知ってるのがけっこう前提

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でくれ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<176KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef