1 名前:デフォルトの名無しさん mailto:sage [2009/12/05(土) 14:21:25 ] プログラミング言語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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
267 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 22:47:55 ] >>265 前スレでみたのは gem which foo
268 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 22:57:27 ] $" または $LOADED_FEATURES
269 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 23:04:43 ] >>267 それは求めるものじゃないなー >>268 それはファイル名だけだよね。ディレクトリ名も含めたパスが欲しい。
270 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 23:10:31 ] それは提供されてない
271 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 23:10:37 ] >>265 結局こうしました $ ruby -r nkf -e 'puts $:.map {|x| Dir.glob("#{x}/nkf*") }.flatten' /usr/local/lib/ruby/1.8/i686-darwin10.0.0/nkf.bundle
272 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 23:45:36 ] >>266 svn.ruby-lang.org/repos/ruby/tags/v1_8_7/NEWS
273 名前:デフォルトの名無しさん mailto:sage [2009/12/15(火) 23:59:23 ] >>272 Thanks. わーおEnglishじゃん!開発者は日本人が多いのに、ぷんぷん!
274 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 00:05:46 ] >>272 ていうか、これ読んで分かるの開発陣だけだから。 Ruby利用者がよんでもわけわからん。
275 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 00:12:20 ] これを元にした噛み砕いたユーザー向け解説というのを誰か第三者が作ってきちんとフォローすべきなんだ でも、Ruby(特に日本の)ではそういうのが特にないんだよね 商売っけがないというか、目立ちたがり屋がいないというか ちなみにオフィシャルの仕事ではないのでこれ以上は望んじゃ駄目よ 取り巻きの役目
276 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 00:15:59 ] user visible feature changes と書いてあるんだが…
277 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 00:18:07 ] これとRubyリファレンスマニュアルを併用すればきっと・・!
278 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 00:18:17 ] るびきち氏の日記に載ってたのはリリース当時欲紹介されてた気がする。 ttp://d.hatena.ne.jp/rubikitch/20080508/ruby187
279 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 00:31:54 ] >>278 神いわゆるゴッド
280 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 01:55:08 ] >>275 >ちなみにオフィシャルの仕事ではないのでこれ以上は望んじゃ駄目よ なんで? ちなみにPythonはα版でもこれだけの出来。 ttp://docs.python.org/dev/whatsnew/2.7.html これだけの差がありながら、「Rubyはドキュメントが揃ってる」とぬかす古参上級者がほんとジャマ。
281 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 02:03:55 ] Andrew Kuchlingは取り巻きどころかPythonの主要開発者だな Python3.0のWhat's newはGuido書き下ろしだし ドキュメントは取り巻きに任せろってのはガンかもしれないね でもこれ本スレでやったらいいよ 初心者にはいい迷惑だ
282 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 02:11:24 ] >>280 人材が究極的に少ないから 現状に加えて一般向けにドキュメント揃えろなんて言ったらどんどんリリースが遅くなる 当事者だからという理由だけでできない人に無理やりやらせる理由はない 得意な人に任せておけばいい まあ初心者スレ向けでないのとドキュメント揃ってるほうだと言ってる人間が障害になってるのには同意
283 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 10:33:28 ] rubyの勉強をしろと言われ、perlのプログラムを渡された 雰囲気は似てるからrubyに書き換えて動作させてみろという perlもrubyもほとんど触ったことない俺にどうしろっていうんですか… 書き換え方にコツとかあるんでしょうか?元のperlプログラムにはサブルーチンにハッシュやら配列やらが結構混ざって泣きそう
284 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 10:43:08 ] >>283 とりあえず元のプログラムが何をするものなのか理解しないことには 始まらないと思われ
285 名前:221 mailto:sage [2009/12/16(水) 11:02:32 ] >>247 ありがとう。24時間は超えてしまうのでTimeはやはり使わない方向でいきます
286 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 11:06:02 ] 質問です。 Rubyで簡単なGUIアプリを作ろうとしているのですが、現在何がオススメでしょうか? 環境は、Ruby 1.8.7、Windowsです。 できれば、あくまでできればですが、実行環境では追加のリソース(ランタイム)が必要ないものがよいのですが… 例えばexeに固めれば単体で実行できる、もしくはRubyとそのライブラリがあれば動くと言ったようなものです。 下記サイトでは、shose(why氏とともにサイト死んでる?)、Ruby-GNOME2、wxRubyがよく使われているとありますが、 みなさんは何を使われてますか? Ruby GUI調査2008 www.pressure.to/ruby_gui_survey/index-ja.html
287 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 11:14:52 ] >>286 > Rubyで簡単なGUIアプリを作ろうとしているのですが、現在何がオススメでしょうか? RubyではGUIアプリケーションは作らない
288 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 11:15:28 ] Windowsで1.8でexe単体なら自分だったらvruby+Exerb+UPX でも上の縛りがなければwxRuby+Ocra あとやったことないけどWebアプリ+RubyStationも面白そう
289 名前:286 mailto:sage [2009/12/16(水) 11:24:17 ] shoesはgithubにありましたけど、Javaのprocessingみたいな感じなんですね。ちょっと用途が違うとおもた samples at master from shoes's shoes - GitHub github.com/shoes/shoes/tree/master/samples/ >>287 (´;ω;`)ブワッ 昔Delphi使ってたんでそっちでもいいんですが、できれば最近なれたRubyでGUI作れたらなとか思うわけですよ… >>288 必ずしもexe単体でなくてもいいです。 webアプリは面白そうなんですが、とりあえず、vrubyとwxRuby試してみます
290 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 11:26:15 ] たぶん、GUIというイベントドリブンな概念とRubyの記法が合わないんだと思う
291 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 11:28:25 ] イベントハンドラにprocオブジェクトを登録することがごく自然に出来るわけで。
292 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 11:31:44 ] 実装の便利度に差がありすぎるんだよな 中にはHSPからシェル経由でスクリプト呼んで引数連携させたほうがマシといゲフンゲフン
293 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 11:43:07 ] >>271 パスに{}[]が含まれると良くない
294 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 11:51:03 ] >>293 一般に使ってもらうならともかく、自分の用が果たせたならそれでいいんじゃないか?
295 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 13:56:13 ] wxRubyをgemで入れてみたのですが、wxruby-2.0.1-x86-mswin32-60がインストールされたのですが、 これて古くないんでしょうか?wxWidgetの0.6.0だったりしませんか? ruby -v #=> ruby 1.8.7 (2008-06-20 patchlevel 22) [i386-mswin32] 古いな…
296 名前:uy ◆e6.oHu1j.o mailto:sage [2009/12/16(水) 17:55:27 ] 純粋にrubyのレベルをあげたいです 小さなツールとWebアプリケーションとGUIゲームくらいならrubyで作れるようになったんですが ルビリストと呼ばれるようになる為の次のステップ教えてください
297 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 18:05:30 ] いろいろな言語を使う。 とくにRubyのバックグラウンドを育んだLispやSmalltalkを。
298 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 18:09:09 ] Lispやれ(EmacsLisp以外ならなんでもいい) PerlがまだならPerlも齧れ オブジェクト指向の関係でJavaもできるといいんだが
299 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 18:12:54 ] >>296 もの凄い勢いでRuby初心者スレ/本スレ/ruby-list等 あらゆるサイトの質問にコテハンで答えまくる 質の高い回答が数千溜まるとGoogleに雇ってもらえる
300 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 18:14:14 ] ルビリストってなんですか?
301 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 18:27:26 ] googleって実際優秀な人材だけってわけじゃないんだよねぇ 広告塔の人間もたくさんいるし
302 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 18:47:10 ] >>296 >ルビリストと呼ばれるようになる為の次のステップ教えてください るびまの添削記事を読むのがいいと思う。 ttp://jp.rubyist.net/magazine/?0010-CodeReview ttp://jp.rubyist.net/magazine/?0011-CodeReview ttp://jp.rubyist.net/magazine/?0013-CodeReview ttp://jp.rubyist.net/magazine/?0015-CodeReview ttp://jp.rubyist.net/magazine/?0017-CodeReview
303 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 18:51:14 ] >>282 >人材が究極的に少ないから >現状に加えて一般向けにドキュメント揃えろなんて言ったらどんどんリリースが遅くなる >当事者だからという理由だけでできない人に無理やりやらせる理由はない >得意な人に任せておけばいい ばかをいえ、ChangeLogやNEW FEATURESなんて、開発当事者ぐらいしか詳しくは知らないんだから 開発当事者が書くべきだろ。 こんなことすらも嫌がる開発陣ってなんなの? どうせ開発リソースが増えたところで、ドキュメントに回すつもりないんだろ。
304 名前:283 mailto:sage [2009/12/16(水) 19:00:12 ] 昼間は無事だったのに規制が… 283です。 >>284 jcorrectとかいうやつだったかな プログラムを実行して文章を入力すると、cabochaの解析結果と一緒に文章の校正を促すメッセージが出た これを実行するためにcabochaとかいろいろ入れてた プログラムを読んでいると、サブルーチンから値を順に渡していたり$foo->{$var}->とか見たことないのがいっぱいでなんかもうキーーーーってなったんだ…
305 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 19:06:54 ] >>303 言ってること自体には賛同できるけどそういうのは本スレでどうぞ
306 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:36:21 ] 質問です。 実行環境:Xubuntu9.10、Ruby1.9.1 使用ライブラリ:tk、pty、expect やりたいことは、外部プログラム(対話型のCUIプログラム)をRubyスクリプト内から実行する際に、 外部プログラムの実行結果(標準出力。エラーが発生して終了したならその時のエラー出力) を取得したいのですが、何か方法はあるでしょうか。 ネットを見るとsshやtelnetのサンプルが転がってますが、 sshやtelnetが出力するメッセージ自体やエラー文(はあるのかな?)を処理するようなものがなく、 どうするんだーと悩んでます。
307 名前:デフォルトの名無しさん mailto:sage [2009/12/16(水) 23:43:41 ] シェルからパイプでつなぐ ` ... ` (バッククォート)でコマンド実行して出力取る 手の込んだことがしたければ require 'open3'
308 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 00:23:55 ] wxRubyとかGUIアプリの話がでたついでに聞きたいんですけど、 ↓みたいにマニフェストをruby/bin/において、Windows XP移行のLuna(?)風のUIにする方法があるんですが、 Ruby on Windows: Windows XP Visual Style Controls with wxRuby rubyonwindows.blogspot.com/2007/10/windows-xp-visual-style-controls-with.html …うまくいきません。 古いルックアンドフィールのままになります。 上記サイトのxmlをファイルをruby.exe.manifestとrubyw.exe.manifestに新規作成してコピペして、 ruby/binに放りこめばいいんですよね?
309 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 00:38:30 ] >>307 ありがとうございます。 標準出力と標準エラー出力に違いがあるのを知らなかったですorz open3は標準入力・出力・エラー出力のみ対応という形だったので、 except実行→出力結果を一時ファイルに出力→実行元プログラムでopen という形で無事結果を得られるようになりました。 PTYがttyを別個に作ってそっちで実行させるっぽいのでバッククォート使えない(のかなぁ……)
310 名前:245 mailto:sage [2009/12/17(木) 11:43:14 ] logger使ってみているのですが、 Benchmarkの出力結果が余計な改行が入るのですが、これってこんなもん? time = Benchmark.measure do :(略) end logger.debug Benchmark::CAPTION logger.debug time.to_s
311 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 12:21:56 ] そんなの logger は与り知らんよ logger は対象のオブジェクトを to_s しての末尾に改行つけて書き出してるに過ぎない 何か問題あるならそのオブジェクトの to_s 調べれ
312 名前:245 mailto:sage [2009/12/17(木) 13:01:09 ] >>311 舌足らずでごめんなさい。 puts Benchmark::CAPTION puts time.to_s だと改行の問題ないんです。気味が悪いんですが、何でなんでしょ
313 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 13:10:17 ] >>312 改行が問題になるときの検証に puts 使ったら駄目 puts は文字列末尾に改行があったら自前で改行をつけない というかこれはそのまんまで irb> require 'benchmark' irb> p Benchmark::CAPTION " user system total real\n" そもそも改行が末尾に入ってる 気になるなら Benchmark::CAPTION.chomp を logger に渡す
314 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 18:13:47 ] > puts は文字列末尾に改行があったら自前で改行をつけない 漏れは大変なことを知ってしまった 近いうちに消されるかもしれない
315 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 18:18:58 ] xpathって難しい。もっと簡単にできるか? id('Layer3')//td[ following-sibling::td//a[contains(@href, 'money.www.infoseek.co.jp/MnStock ')]]/b//font[@color]
316 名前:sage [2009/12/17(木) 21:38:37 ] >>228 trunk には Date::Delta ってのが入ってるよ
317 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 22:32:29 ] RSpecの用語について質問。 describe ... や it .... で書いたひとまとまりを、なんて呼ぶの? たとえば Test::Unit なら class FooTestCase < Test::Unit::TestCase ← これはテストクラス def test_equal ← これはテストケース assert_equal(2, 1+1) end end のような呼び方をしてると思うんですけど、RSpecの場合は何と呼ぶのかわからないので、教えてください。
318 名前:デフォルトの名無しさん mailto:sage [2009/12/17(木) 23:36:33 ] 現在β版のRSpec本によれば、 We use the describe( ) method to define an example group. The it( ) method defines a code example. なお、 describe(および別名のcontext)メソッドが作るのは Spec::Example::ExampleGroupのサブクラス it(および別名のexample)メソッドが作るのは それのインスタンスメソッド になる
319 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 06:03:22 ] 質問です。 001 002 のような、3桁の連番を表示したいんですが、どうやればいいんですか。 for i in 001..100 だと 1 2 になるんですが。
320 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 06:18:23 ] Rubyらしい書き方ではないかもだが for i in 1..100 p '%03d' % i end 数字の頭に0がつくとRubyでは8進数って意味になるので注意
321 名前:デフォルトの名無しさん [2009/12/18(金) 06:23:07 ] ('001'..'100').each{|s| puts s}
322 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 06:25:56 ] >>320 見事にできました。 素早い回答どうもありがとうございました。
323 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 10:03:11 ] WEBrickで、 ・Basic認証またはDigest認証 ・IPアドレスによるアクセス制限 を実現したいのですが、サンプルとか参考になるページがあれば教えてください。 「WEBrick IPアドレス 制限」とかでぐぐったけど、それらしいのはヒットしませんでした。
324 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 10:32:21 ] 追記。 ちなみに、今使っているサンプルはこんなのです。 require 'webrick' server = WEBrick::HTTPServer.new({ :DocumentRoot => '.', #:BindAddress => '127.0.0.1', :Port => 3000, }) Signal.trap('INT') { server.shutdown } Signal.trap('TERM'){ server.shutdown } server.start
325 名前:デフォルトの名無しさん mailto:sage [2009/12/18(金) 11:10:43 ] 認証 WEBrick::HTTPAuth::BasicAuth WEBrick::HTTPAuth::DigestAuth IPアドレスでの制御は HTTPRequest#addr あたりを見て403を返せばいいんじゃない?
326 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 12:18:34 ] {1=>[2]}となる事を期待したけど、この方法では駄目みたいですね。 % irb1.9.1 irb(main):001:0> h=Hash.new([]) => {} irb(main):002:0> h => {} irb(main):003:0> h[1] => [] irb(main):004:0> h[3] => [] irb(main):005:0> h[1] << 2 => [2] irb(main):006:0> h => {} irb(main):007:0> h[1] => [2] irb(main):008:0> h[3] => [2]
327 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 12:29:26 ] >>326 www.ruby-lang.org/ja/man/html/trap_Hash.html ぶっちゃけRubyの怪しげな機能は使わないほうがいいと思う
328 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 12:32:18 ] >>326 そりゃArrayやHashの初期値つきnewは毎回初期値のオブジェクトを生成するからな irb> p h[2].object_id == h[2].object_id false irb> h=Hash.new([]) {} irb> h[1]=[2] [2] irb> h {1=>[2]}
329 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 12:39:22 ] >>328 > p h[2].object_id == h[2].object_id これうち(1.8.7cygwin)でやるとtrueになるんだが1.9で変わったとか?
330 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 12:42:53 ] >>326 それだとh[1]の参照先(初期値オブジェクト[])に2を入れてることにしかならない h[1] = ほげほげ としない限り {1=>ほげほげ}にはならない
331 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 13:35:34 ] $ rvm use system <i> Now using system ruby. </i> $ irb --prompt simple >> RUBY_DESCRIPTION => "ruby 1.8.7 (2008-08-11 patchlevel 72) [universal-darwin10.0]" >> h = Hash.new([]) => {} >> [h.default, h[0], h[1]].map(&:object_id) => [2156963800, 2156963800, 2156963800] $ rvm use 1.9.1-head <i> Now using ruby 1.9.1 head </i> $ irb --prompt simple >> RUBY_DESCRIPTION => "ruby 1.9.2dev (2009-12-11 trunk 26067) [x86_64-darwin10.2.0]" ruby-1.9.1-head > h = Hash.new([]) => {} >> [h.default, h[0], h[1]].map(&:object_id) => [2151892720, 2151892720, 2151892720]
332 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 15:45:53 ] >>331 みたいな人ってソース中のコメントもほぼかかなそうだよな
333 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 16:35:24 ] >>332 は初心者
334 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 16:59:49 ] まあ初心者スレだしな
335 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 17:53:52 ] 結局>>328 は間違ってるということかい?
336 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 18:26:49 ] new(初期値)で生成されたハッシュに存在しないキーでアクセスした場合の挙動は、 同じオブジェクトが返るというのが正しく、 毎回異なるオブジェクトが返るというのは誤り。
337 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 18:37:34 ] 質問するならリファレンスマニュアルくらい読んでからこい
338 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 18:47:27 ] 初心者スレ的には 「マニュアルのここ読めわかりやすくて疑問の余地無し氏ね」 と言える環境を揃えるほうが先な気もする
339 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 23:53:39 ] >>328 それは初期値じゃなくて初期ブロックじゃないのか? h = Hash.new{|hash,key| [] } p h[2].object_id == h[2].object_id # => false 未設定のキーを指定された時に、そのつどブロックを実行した結果を返す よって同じキーでも毎回違うArrayが帰ってくる
340 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 01:14:37 ] >>338 ようやくたどり着いたと思ったら、 xxxx() 執筆者を募集中 おい、コードを書いたのはどこに行ったの? 採用した人は? なので、動かないものは、自分で書き直すことにしてる。 一から一人でするより、ちょっと近道。
341 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 05:46:41 ] >>337 >質問するならリファレンスマニュアルくらい読んでからこい おまえは書き込むまえに>>1 を読んでこい
342 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 06:50:04 ] >>341 おまえは書き込むまえに>>1 を読んでこい
343 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 07:39:01 ] そんなことより俺のIDを見てくれ。どう思う?
344 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 09:13:46 ] 見えない
345 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 10:15:45 ] >>344 はバカ
346 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 10:27:17 ] まあバカスレだしな
347 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 12:45:29 ] 教えてください Hpricotで日本語テキストのリンク検索が上手く動きません どうすればNokogiriと同じ動きになるのでしょうか #!ruby -Ku require 'hpricot' require 'nokogiri' html = "<html><a>りんく1</a><a>りんく2</a><a>りんく3</a></html>" doc = Hpricot(html) print doc.at("a[text()*='りんく2']"); # エラー発生 doc = Nokogiri(html) print doc.at("a[text()*='りんく2']"); # こちらは正しく動く エラー内容 /usr/local/lib/ruby/gems/1.9.1/gems/hpricot-0.8.2/lib/hpricot/elements.rb:486:in `index': incompatible character encodings: ASCII-8BIT and UTF-8 (Encoding::CompatibilityError)
348 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 12:48:10 ] >>347 初心者は Ruby1.9 使うなってこれだけ言われてるのになんでわからんのだエラー
349 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 12:54:16 ] >>348 が FA なのだが というか何もわからず動かしていることが原因で、 Nokogiri が動いたのはただの偶然に過ぎない むしろ「Nokogiri が動いたのは何故ですか」という質問になるべき事象 無理しないで Ruby 1.8.7 使え 1.8.7 を理解したあとで差分学習で 1.9.1 を習得するのが一番早い
350 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 12:57:10 ] 了承、1.8.7にする
351 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 12:59:15 ] hpricotはコンパイルが通る程度に1.9対応されてるだけ。 作者の _why the lucky stiff はネット上から失踪しているので、事実上塩漬け状態。
352 名前:デフォルトの名無しさん [2009/12/20(日) 16:02:52 ] 質問 rdoc が生成する HTML について、特定の要素(例えば <pre>タグ)のスタイルだけ いじりたいという場合はどうしたらいいのでしょうか?
353 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 16:27:02 ] >>352 ちょっと見た感じでは rdoc に --template オプションで 自作のテンプレートを指定してやればいいんじゃまいか 既存のテンプレが rdoc/genarators/template/html に入ってるから それを部分的に書き換えて使えばよさそう
354 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 19:17:36 ] whyさん死んじゃったからNokogiri推奨だと思うけど、 >>347 がhpricot使いたいと思った理由はなんだろ
355 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 19:20:40 ] え、whyって死んじゃったの? もしそうならHpricotきめえとかdisるのやめて冥福を祈る
356 名前:352 mailto:sage [2009/12/20(日) 19:31:28 ] >>353 ありがとうございます。 ベースになるテンプレートを選んで、それに改変を加えたものを使おうと思います。
357 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 20:19:30 ] ネットワーク的に、ね。 自分できれいさっぱり痕跡を消していった。
358 名前:352 mailto:sage [2009/12/21(月) 15:57:51 ] 追記 rdoc の --style オプションにスタイルシートのパスを渡すことで HTML生成時に自前のスタイルシートを読み込ませることができました。 テンプレから CSS の部分だけ切り出して編集して、 rdoc --style=path_to/hoge.css でうまくいきました。 というか、manページに普通に書いてあったorz
359 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 22:18:49 ] hpricot でも nokogiri でもいいんですが、 doc = Hpricot(open(uri).read) (doc/:a).each do | link | if link[:href] == '#' p "設定し忘れ => #{link[:lineno]}" end end みたいに、行番号を取得することって出来ませんか?
360 名前:デフォルトの名無しさん mailto:sage [2009/12/21(月) 22:21:13 ] 行番号というメタ情報があれば取得できるよ ないならできない 自分で行番号だと思うものを作って数えるしかない
361 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 09:38:58 ] >>359 その程度なら普通に正規表現でよさそうだね。 File.open(filename) do |f|
i = 0 f.each_line do |line| i += 1 puts "#{filename}:#{i}: 設定し忘れ" if /href=("¥#"|'¥#¥')/ end end
362 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 09:39:08 ] jrubyでmechanize使えている人います?hpricotのjava版使うしかないんでしょうか?
363 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 09:45:49 ] >>361 みたいに例示依存の回答する人なんなの
364 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 10:39:36 ] >>361 欲しいのは行番号であって、例文なんかどうでもいいんだが
365 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 11:00:20 ] 例題コードを添削するのはどうかとw
366 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 11:10:57 ] 作業ディレクトリの変更って出来ませんか? ./data/a.rb ./data/1.txt ./main.rb ってあったときに main.rbからa.rbをrequireするんですけど a.rbは open("1.txt","r") これで読めるようにしたいです
367 名前:デフォルトの名無しさん mailto:sage [2009/12/22(火) 11:21:49 ] save = Dir.pwd Dir.chdir "./data" # 作業 Dir.chdir save とかかな 同じディレクトリにあるファイルを使うってことなら open(File.dirname(__FILE__)+"/1.txt") でもいいかも