1 名前: 【大吉】 mailto:sage [2009/01/01(木) 13:13:22 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 【Ruby1.9 は不安定な開発版であり初心者には全く向きません】 【最新安定版の Ruby1.8.7 の使用をお勧めします】 ※1.8.7 は1.8 と 1.9 の橋渡しをするためのリリースです。 1.9 の新機能の一部が利用可能なので初学者にお勧めです。 ※ただし十分安定しているとは言えないので プロダクション環境での利用にはお勧めしません。 関連スレやURLは>>2-8 あたりを見てください。Ruby on Railsの質問は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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
561 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 18:06:14 ] Windowsなら腐るほど該当アプリケーションあるけどな
562 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 18:21:32 ] >>560 >>561 その方は私の質問に便乗している方ですのでお間違いないように。 私の希望はあくまでも、ウィンドウやソフトから流れる音をミュート以上にリアルタイムで増幅する方法です。 >>555 >>557 そうですか..。 いや、SDLとかいうルビーのゲーム用ライブラリーで音楽が扱えていたことと、 パソコン上で再生された音や特定のウィンドウの音を録音できるフリーウェアがたくさんあったので、そんなに難しいことではないのかなと質問させていただきました。 ミュートの調整による増幅以上に増幅する方法をさがしているので。
563 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 19:10:47 ] 意味が分からない
564 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 19:25:49 ] >>562 他のフリーウェアがどうやってるのかは分からないが Ruby覚え立てでスパッと出来るほど簡単なものではない OSによってもやり方が違うし
565 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 19:52:49 ] ミュートの意味がおかしくね?
566 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 20:37:45 ] >>562 出来ないから諦めろ、て言われたら諦めてくれる?
567 名前:デフォルトの名無しさん [2009/01/18(日) 21:30:31 ] >>564 OSはウィンドウズです。 >Ruby覚え立てでスパッと出来るほど簡単なものではない そうですか?初心者向けと聞きましたが。 それに分からないから(これから勉強するので)初心者質問スレに質問したのですが。 >>566 分かる人を待ちますよw
568 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:32:54 ] このスレは成りすましお断りですよ
569 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:44:28 ] >>567 初心者向けだと言ったやつに聞けばいいのでは? 特定のアプリを外部制御するならまだしも Windowsで再生してる音の波形から曲を判定し音量コントロールなんて俺はやりたくない。
570 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:50:22 ] タスクトレイにある「音量」をいじればいいよ。 それと同等の操作ならRuby初心者でもできるだろうけど それ以上を求めるなら間違いなく待ちぼうけになる。
571 名前:デフォルトの名無しさん [2009/01/18(日) 21:54:19 ] >>569 >特定のアプリを外部制御するならまだしも >Windowsで再生してる音の波形から曲を判定し音量コントロールなんて俺はやりたくない。 pcに流れる音全体でもいいですよ(できれば個別にですが)。 ただリアルタイムで音量を増幅できれば。 それとフリーの録音かソフトが個別の音を録音できていることから考えると、 pc上に流れた全ての音がミックスされてスピーカーで流れているだけで、 スピーカーから流れる前段階のどこかで、個別の音声はプログラムで取得する方法があるような気がします。
572 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:56:21 ] よくわからないが,>>561 や>>567 を見ると煽りたくなる衝動に駆られる この気持ちどうしよう
573 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:56:27 ] だから、できるって ただし、Rubyは無関係 他のサウンドとOSの深いとこを触るドライバやライブラリを直接いじるしかない そのいじり方を学んでから、Rubyで通信する方法を聞きに来な
574 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 22:05:26 ] >>567 >そうですか?初心者向けと聞きましたが。 Rubyは初心者向けかもしれんが お前がやろうとしていることは、確実に上級者向けどころか前人未踏に近い領域だ > それに分からないから(これから勉強するので)初心者質問スレに質問したのですが。 他の人も散々言ってるように、それは「Rubyの」初心者質問スレで解決できる質問じゃない 素直に諦めてくれ
575 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 03:00:31 ] >>567 できりょ。 ・Rubyをインストールする ・Vistaをインストールする ・タスクトレイから音量ミキサを開く ・アプリケーションごとの音量を調整する な?簡単だろ? ちなみに、Win32のデバイスドラバとかWin32APIとか絡みそうなものはRubyと激しく相性が悪い。 そもそも、Win32をゴリゴリやるのは向かないだろ。 C#(.NET)とかC++の方がまだ向いてる。
576 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 04:25:20 ] >Win32のデバイスドラバとかWin32APIとか絡みそうなものはRubyと激しく相性が悪い。 mjsk kwsk
577 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 05:10:11 ] >・Rubyをインストールする >・Vistaをインストールする >・タスクトレイから音量ミキサを開く >・アプリケーションごとの音量を調整する これは上から順に見てワロタwww 上から順にしようとしたらできない事書いてあるし久々オモローwww
578 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 08:55:50 ] オモローって自分から使ってる人久しぶりに見た
579 名前:デフォルトの名無しさん [2009/01/19(月) 09:39:59 ] rubyのRPMを探しているのですが、見つかりません どこにありますか?
580 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 09:53:00 ] >>579 最新のものにこだわらなければ、 大抵のLinuxディストリなら標準で入ってるんじゃね? OSと、欲しいRubyのバージョンは何?
581 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 11:22:21 ] yum install ruby で入らないのか? 下手に探すより環境をしっかりさせろ。
582 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 11:23:09 ] yum じゃなければ apt-get
583 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 11:56:52 ] 1.8.6に1.8.7のinjectでのシンボルによる二項演算子指定を実現するのは以下でいいと思います? class Symbol def to_proc proc { |obj, *args| obj.__send__(self, *args) } end end module Enumerable alias _inject inject def inject(*init, &block) if not block begin return _inject(&init[0]) rescue return _inject(init[0], &init[1]) end end _inject(*init, &block) end end
584 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 18:14:58 ] emacs(meadow)でRuby書くときにこれこそ入れておけっていうelispありますか? ruby-modeとruby-electric位しかruby周辺は入れてません.
585 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 18:35:54 ] ハッシュってキーもバリューも日本語いけるんだな!ちとおらびっくりしたぞ!
586 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 22:16:48 ] 激しく実行環境依存で嵌まりそうだけどな。
587 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 22:24:07 ] 可搬性がなければならないプログラムを作らなければならない必要性というのは 現代のRuby用途では意外と低い
588 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 22:58:55 ] 自分んとこ(か、日本語が通ることが確定してる特定の環境)で使っておしまいというスクリプトのほうが多いな、確かに 外に出すんでなけりゃ日本語使ってもいいと思うけどね 日本語べったりになってるとアルファベットでどう書くか悩むことになるけど
589 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 23:01:44 ] 形態素とか使ってたら日本語使った方が簡単そうだな
590 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 00:22:14 ] Ruby1.8.6です。REXMLのverは3.1.6です。 URLを与えたらそこから文書を抜き出してきて、それをyahooの形態素解析にかけるとXML形式でレスポンスが返るので それをREXMLで解析するプログラムを作ったのですが、 wikipedia(全体ではなく開けるものもある)やその他一部のページで、REXMLの解析中にParseExceptionエラーが起きてしまうのですが、 エラー文を見ても意味がよく分からなく、同じような症状?が出た方も中々いないようなのでお手上げです。 以下エラー文です。 #<REXML::ParseException: Declarations can only occur in the doctype declaration. Line: Position: Last 80 unconsumed characters: <!doctype html public "-//W3C//DTD HTML 4.01//EN" "www.w3.org/TR/html4/str>
591 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 00:32:17 ] 明らかにXMLじゃないじゃん、それ Yahooからの返事がXMLじゃないエラーか何かなんだと思うよ
592 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 00:35:52 ] !DOCTYPE宣言が二重になってるとかなんだろうな
593 名前:590 mailto:sage [2009/01/20(火) 01:51:53 ] >>591 エラーでしたら400等が表示されるはずなのですが、、 >>592 二重になるのってどこが問題なんですかね..
594 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 02:07:54 ] >>593 400等が表示って、ちゃんとHTTPレスポンスヘッダはチェックしてる?
595 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 02:09:06 ] しまった脊髄反射的なレスだった。 とりあえずREXMLに食わせるまえにファイル出力してみればいいよ。
596 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 02:33:58 ] エラーになるURL晒すのが早いと思うが
597 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 04:34:23 ] ネット系の問題に自分でデバックすら出来ないレベルか。なんか目的にたどり着くのは無理っぽい。 いつも使う必須のスクリプトが環境依存で引っ越して問題が出るのは良くある事。 まあその時に必要に迫られて書き直すと見通しよく成っていいプログラムに成る事は多いが。車輪の再生産気味だが。
598 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 06:11:08 ] リファクタリングが車輪の再生産って言われるとやる気なくします><
599 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 06:25:09 ] >>593 ステータスコードが200だからといって信頼していいわけじゃないぞ
600 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:21:46 ] ruby 1.8.6 WindowsXP SP3です。 実例ではないのですが、100までの数をカウントするプログラムに、 標準入力から入力された数字を現在の数字に足す機能を加えたいと思っています。 色々調べたところ、スレッドというものを使えばよいのかな、という結論に達したので 以下のようなプログラムを書いてみましたが、思うような動作をしてくれません。 どなたかお知恵を貸していただけないでしょうか? j = 1 t = Thread.new do while (j < 100) sleep 1 p j.to_s j += 1 end end while (j < 100) i = gets.chomp j += i.to_i end
601 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:41:42 ] これは・・・
602 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:45:58 ] 自然数k,p,q,m,nについて k=mp+nq(m>=0,n>=0)を満たす(m,n)の組の数をv(k)とするとき p=3, q=7, kが1から100までのときの結果vの一覧を出力したいです Rubyではどのように書いたらいいですか?
603 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:53:52 ] >>600 うちではうごいた
604 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:55:22 ] >>602 m=0あるいはn=0のとき自然数じゃなくなるけどいいの?
605 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:58:43 ] >>604 すみません間違えました x 自然数k,p,q,m,nについて o 自然数k,p,qについて あと、m,nは「0以上の整数」です よろしくおながいします
606 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:59:23 ] >>603 うちでは数の表示がgets.chompに邪魔されて、リターンを押すまで 数え上げるほうのスレッドの実行がとまっているみたいなんです。 環境はLinuxとかでしょうか?
607 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:09:14 ] >>606 cygwinです
608 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:10:44 ] >>602 p = 3 q = 7 (1..100).each do |k| v = 0 (0..(k/p)).each do |m| (0..((k-m*p)/q)).each do |n| if k == m*p + n*q v += 1 end end end print "v(#{k})=#{v}\n" end
609 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:20:36 ] >>607 ありがとうございます。 実際にこの処理を使用するプログラムでは拡張ライブラリ使用&exerbでexe化を 考えています。Cygwinでは正常にexe化できないようなのでmswin32でなんとかならないか もうちょっと調べてみます。
610 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:21:13 ] >>600 mswin32ではgetsがブロックする。
611 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:27:05 ] リファレンスのどっかにあったと思ってたんだけど、やっと見つけた。 www.ruby-lang.org/ja/man/html/trap_timeout.html
612 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:30:49 ] >>608 こうかな p = 3 q = 7 t = 0 u = 0 (1..100).each do |k| v = 0 (0..(k/p)).each do |m| if (k-m*p)%q == 0 v += 1 end end print "v(#{k})=#{v}\n" u += v if v > 0 t += 1 end end print "total #{t}, #{u}\n"
613 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:41:30 ] >>609 exerb+cygwinでexe化うまくいってるよ なんか変なライブラリくっつけてない?
614 名前:デフォルトの名無しさん [2009/01/20(火) 09:59:05 ] >>602 参考になるのかな ttp://d.hatena.ne.jp/octech/20080118
615 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 10:09:17 ] アンカミス >>600
616 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 10:34:43 ] >>614 ドンピシャです。ありがとうございます! >>610-611 なるほど、mswin32だと修正を待つしかない・・・のかな? と思ったけど回避策ってあるもんなんですね。引き出しを増やさなきゃ。 >>613 win32/sapi5を使っているのと、HDD容量に難があったのでCygwinは入れてませんでした。 2日前にHDDを注文したので届いたらCygwinでもやってみます。 レス下さった方々、ありがとうございました。
617 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 12:17:42 ] >>616 >なるほど、mswin32だと修正を待つしかない・・・のかな? バグじゃないから修正はされないんじゃないかな。 1.9では問題ないみたいだけど。
618 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 12:52:49 ] >>608 共通一次ですね
619 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 12:54:26 ] >>616 _kbhit入れたバージョンでも 一文字だけ入れてenterしないときって止まるよね
620 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 13:05:14 ] >>617 バグじゃないんですかね?ruby-list 36068ではバグみたいに言われてる気がするけども。 1.9では問題ないとは!バージョンあげようかなぁ。 >>619 止まりますね。でも、そのほうが便利な気がしないでもないです、私の場合。
621 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 13:51:52 ] >>614 の方法だとキー入力するまでひたすらビジーループなんだが
622 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 15:42:40 ] >>620 Windowsでselectがコンソールに対して効かないのは仕様だろう。 バグだと思うならMSに言ってみるのがいいんじゃないか。
623 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 19:56:56 ] >>621 そんなことないですよ
624 名前:デフォルトの名無しさん [2009/01/20(火) 22:05:16 ] h = {"direct"=>"5", :list=> {"6"=>"南西","7"=>"西","8"=>"北西","1"=>"北","2"=>"北東","3"=>"東","4"=>"南東","5"=>"南"}} 上のハッシュをh.ya2yaml すると direct: "5" ? !ruby/symbol list : ? "1" : 北 ? "2" : 北東 ? "3" : 東 ? "4" : 南東 ? "5" : 南 ? "6" : 南西 ? "7" : 西 ? "8" : 北西 となるのですが、’?’はどういう意味ですか。 そもそも "8":北西 という感じで出力されると思っていたのですが, 期待と違った結果でした。 ruby 1.8.6 (2008-03-03 patchlevel 114)
625 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 22:48:19 ] 1.9っていつリリースされる予定なの?
626 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 01:17:39 ] RC2出てから
627 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 02:00:38 ] >>626 知らないなら答えきゃいいじゃん
628 名前:デフォルトの名無しさん [2009/01/21(水) 02:08:46 ] Japanese O.K.
629 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 02:09:29 ] RC2出たな
630 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:13:17 ] a=[1,1,1,2,2,3,4,5,5,5]の配列を b=a|aにしたら[1,2,3,4,5]となりますが、 1->3個,2->2個,3->1個,4->1個,5->3個のように どの要素が何個かぶっていたかというのはどのようにしたらいいでしょうか?
631 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:26:54 ] とりあえずは普通に数えればいい overlap = Array.new b.each do |bb| count = 0 a.each do |aa| count = count + 1 if aa == bb end overlap << [bb, count] end overlap.each do |i, n| puts "#{i} の重複は #{n} 個です" end めんどくさい人向け overlap = b.map{|e| [e, a.grep(e).size] }
632 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:27:07 ] h=Hash.new h.default=0 a.each do |i| h[i]+=1 end 俺も初心者に毛が生えた程度なので、より良いのがあれば指摘求む
633 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:28:53 ] def uniq_c(org) counts = {} org.uniq.each{|e| counts[e] = org.count(e) } counts end とか。#countがどっから入ったか怪しいけど。 こーいう要望は割と定番なのでRuby "uniq -c"とかでググるとよろし
634 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:32:36 ] 確認したらArray#countはRUBY_VERSION >= '1.8.7'だった。代わり org.count(e) -> org.select{|x| e == x }.size
635 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:40:38 ] 最初のが一番マシだな それ以降のはただのオナニー もしかしたら演算記号メソッドで何かどうにかすればなんかどうにかなると思ったかもしれないけど、 残念ながらそういうのは無い 2つの配列の関係を解析して返すメソッドというのはあっても面白そうだとは思うが、きっとおおむね無駄だ
636 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:53:14 ] >>631-634 ありがとございました 書き込んだ後,配列について調べてたらuniqっていうのがあるんですね. >>635 そうです.なにかメソッドがあるのかなと思ったのですが. 数え上げしていけばいいくらいなんで無駄になりますよね.
637 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 05:27:54 ] どこがオナニーなんだよ。数え上げる時は普通にHashを使うだろ つーか>>631 の最初のコードはズボラ過ぎる
638 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 05:38:19 ] a.inject(Hash.new{0}){|h,v| h[v] += 1 ; h }
639 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 05:54:27 ] >>632 が一番マシですね
640 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 06:12:44 ] 普通に考えれば>>632 だよな 少なくとも「最初のが一番マシ」はねーよw
641 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 09:10:58 ] ハッシュは順番が保存されないのがなー
642 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 09:22:00 ] この場合はたぶん順番必要ないよね
643 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 11:52:07 ] 正規表現を使って一致を見てるんだけど 正規表現のパターンの中に「図」っていう漢字をいれると warning: regexp has `}' without escape ってwarningでるんだけど何とかならないですか?
644 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 11:55:22 ] その漢字の文字エンコード(普通、そのスクリプトのファイルの文字エンコード)を正規表現に指定しろ っていうか、そのへんは解説なりなんなりでフォローがあったと思うんだが
645 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 12:04:10 ] >>643 ファイルのエンコードは何つかってる?
646 名前:643 mailto:sage [2009/01/21(水) 12:30:03 ] >>644-645 返事ありがとうございます。 /図/ ってやってるのでエンコードの指定は特に何にもやってないです Regexpクラスかなんかをつかってそのインスタンスにエンコードを指定するってことですか? ファイルはShift-Jisでやってます
647 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 13:00:30 ] require 'jcode' $KCODE = 'SJIS' でとりあえずいいんじゃないの
648 名前:643 mailto:sage [2009/01/21(水) 13:06:04 ] >>647 うまく行きました ありがとうございます
649 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 13:07:18 ] jcode厨がまだいたとは jcodeは正規表現には全く関与しない
650 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 13:39:33 ] >>643 -Kオプションについて調べるがよい
651 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 14:10:38 ] いちいち起動するたびに -K オプション付けなくちゃいけないの?
652 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 14:16:18 ] 1行目 #!ruby -Ks
653 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 14:29:03 ] >>652 i see.
654 名前:デフォルトの名無しさん [2009/01/21(水) 18:46:15 ] データが文字列の内容に数字をふったものを対象にして 数字でソートする場合どんな感じでやればいいでしょうか。 文字数字のままやると小さい数字が後にきたりして、ソートがおかしくなるのですが。
655 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:01:10 ] 全部同じ桁にする
656 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:02:29 ] sort メソッドの説明は気の利かない書き方をしてるからね あれはブロックの結果がどうなるかでソートされるんだ irb> puts ['30歳', '2歳', '10歳'].sort 10歳 2歳 30歳 irb> ['30歳', '2歳', '10歳'].each{|a| puts a.scan(/\d+/)[0].to_i} 30歳 2歳 10歳 irb> puts ['30歳', '2歳', '10歳'].sort_by{|a| a.scan(/\d+/)[0].to_i} 2歳 10歳 30歳
657 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:05:00 ] >>654 数字を振るというのが文字列と別枠なら hash = {3=>"c",2=>"b",1=>"a"} hash.sort.map{|v| v.last}
658 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:12:11 ] irb> ['30歳', '2歳', '10歳'].each{|a| puts a.scan(/\d+/)[0].to_i} 30歳 2歳 10歳
659 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:25:19 ] >>658 あ、すまんね そこのへんだけ直前に書き換えたんだ 案の定間違ってるな irb> ['30歳', '2歳', '10歳'].each{|a| p a.scan(/\d+/)[0].to_i} 30 2 10 ってことで、ブロック内で数字部分を抜き出して整数にしてるんだということがわかってもらえればよかった それぞれの要素に対して「数字部分を抜き出して整数にしたもの」で比較してソートすれば、おそらくうまくいく
660 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 01:31:38 ] >>600 とりあえずC#(.NET3.5)では int j = 1; Thread t = new Thread(new ThreadStart(() => { while (j < 100) { Thread.Sleep(1000); Console.WriteLine(j); j += 1; } })); t.Start(); while (j < 100) { String i = Console.ReadLine(); j += Convert.ToInt32(i); } これが動いたから、IronRubyなら動くかもよw
661 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 04:51:23 ] >>659 そこまで書いたなら最後まで書けばいいのに。 ['30歳', '2歳', '10歳'].sort_by {|a| a.scan(/¥d+/)[0].to_i } または ['30歳', '2歳', '10歳'].sort_by {|a| a =~ /¥d+/; $&.to_i }
662 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:26:38 ] ['30歳', '2歳', '10歳'].sort_by {|a| a[/\d+/].to_i }
663 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:40:21 ] いや短くすることに意味はないから そんなこと言ったら %w.30歳 2歳 10歳..sort_by{|l|l.to_i} が標準で最短だぞ
664 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:45:30 ] たぶん単位とかだと思うけど、そういうのデータの中に含めるのってどうなんだろう 「1.5メートル」より「90センチ」の方が大きくなったりするんだろ? さすがに「2メートル」と「5キロ」とかは混在していないと思うが
665 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:51:57 ] 生のデータを生のまま極力取り込んでおきたいという需要はそこそこあると思うよ 数値だけとかに正規化しとけというのはいやもう全くその通りではあるんだが
666 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:58:56 ] >>665 そういうのはラッパクラス作って都合の良い方でアクセスできるようにしとく
667 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:11:59 ] >>664-665 の見てる世界と>>666 の見てる世界は違うな
668 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:20:43 ] データがアクセスされるのは一つの言語からだけとは限らないぞ 3つ言語使ってたら全部の言語でラッパークラスを実装するのか?
669 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:32:09 ] それはまんどくさい(´・ω・`)
670 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:34:58 ] >>668 1つの言語からだけのことのほうが圧倒的に多いと思うがどうかね 君は移植性の高いC言語を使うべきだと思うよ
671 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:46:13 ] >君は移植性の高いC言語を使うべきだと思うよ うむ
672 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:10:58 ] データきたないと前の担当者に殺意を抱いたりするよなw
673 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:24:45 ] >>667 全くだ 汎用DBソフトに格納される業務データしか扱ったことがないのだろう
674 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:33:35 ] ほんとにどうでもいい話なんだけど >>673 そういう人って稀にいるよね 業務でしかプログラミングに関わってない人 それはそれで仕事として効率もいいし好ましいことも多いが、話が全然合わんので困る
675 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 20:13:33 ] 仕事でやっててプログラミングを好きな人はまだ良いが 好きでもなく仕事だからってやってる奴のソースはだいたい汚い。 そういう時は殺意抱くなwww
676 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 01:33:48 ] >>664 >たぶん単位とかだと思うけど、そういうのデータの中に含めるのってどうなんだろう Measureというライブラリを使うと単位系を操ることができる ttp://d.hatena.ne.jp/mrkn/20081025/sappororubykaigi01
677 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 02:30:36 ] >>675 たしかに a1=1 a2=2 a3=3 ... と延々と書かれていたことがある 配列+ループにするとか考えろと思ったが 行数で単価計算されるなら上の方が正解なのかも知れない
678 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 03:00:00 ] 配列として保持するコストを嫌ったのかもしれない
679 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 03:09:40 ] 世の中には虚しいこともあるんだね
680 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 03:57:53 ] >>678 がたぶん正解だと思う 行数稼ぎか配列利用法が理解できなかった(または利用禁止)な可能性も充分あるが
681 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 04:01:09 ] つか、言語と実行環境に強く依存するな 配列にしてしまうと保持と参照コストが妙に高くなる言語というのはなんかどっかにあったはず
682 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 04:39:18 ] array=[a,b2c,d2e,f,g]を[a,[b,c],[d,e],f,g]に分解するにはどうすればいいですか?
683 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 04:46:41 ] >>682 標準的な方法はないから、まあ好きにやれ 要素ごとに正規表現で分割して自力で配列を作るしかないな
684 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 04:55:12 ] >>682 split("2")とpushでOKじゃね?
685 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 05:18:20 ] [a,b2c,d2e,f,g] は ['a','b2c','d2e','f','g'] という意味なのか?
686 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 05:23:33 ] >>685 この文脈ではそう考えるのが自然じゃね 配列の要素が参照している変数名の英字部分を ネストした配列の要素の参照の変数名に反映したいという込み入った希望かもしれんが
687 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 05:34:30 ] こうですか?わかりません >> ['a','b2c','d2e','f','g'].map{ |e| /2/ =~ e ? e.split(/2/) : e } => ["a", ["b", "c"], ["d", "e"], "f", "g"]
688 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 06:33:01 ] EOFにマッチする正規表現、または"末尾"がEOFであることを手短にチェックする方法ないですかね キー1: 値1 キー2: 値2[EOF]
689 名前:227 mailto:sage [2009/01/23(金) 07:22:40 ] 昔のことになりますが、カテゴリ取得に関して質問したものです。 ログを見ていたら同じようなことが質問されていたのでまた、質問をさせていただきます。 search('a').select{|a| /cat_/ =~ a['href']}.map{|a| a.inner_text} カテゴリが一つだけ指定されている場合は上のものでうまく言っていたのですが、 一つの記事で二つ以上指定されている場合にうまくいきません。 理想としてはcategory=["A",["A","B"],"A","B",["A","B","C"]] のようにしたいのですが
690 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 07:50:36 ] rubyってhtmlspecialcharsあるの?
691 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 07:52:37 ] >>689 もっと具体的なhtmlの例を出してくれないと答えられないような…
692 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 07:58:05 ] >>689 selectってなんだっけ、findだっけfind_allだっけ …allのほうか カテゴリってのは一番下にあるやつだな、他のブログではタグとか言われてるものだ >>246 では例が悪いので、適当な大手のアルファルアモザイク例に出すぞ ttp://alfalfa.livedoor.biz/archives/cat_50026947.html これから [ ["ネット・PC・技術", "短レス"], ["ネット・PC・技術", "短レス"], ["ネット・PC・技術", "知識・薀蓄"], … ] という配列を抽出したいという要望でいいか? 「記事単位でsearchかけてから、それの返り値のHpricot::Elemなどに対してmapを使う」が答 なにをどうやって記事単位とみなすかはそのサイトのHTML構造読め
693 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:11:05 ] >>690 あるよ
694 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:17:26 ] >>691 >>692 さんが例に上げたサイトのようなものです。 >>692 さんが書かれたような配列です。記事単位はデザインの雛形によって変わってくるので調査済みです。 今移動中なんで確認できませんが, 記事単位.search('a').select{|a| /cat_/ =~a['href']}.map{|a|a.inner_text}みたいなものですか?
695 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:17:35 ] require 'rubygems' require 'hpricot' require 'open-uri' require 'kconv' doc = Hpricot.parse(URI.parse('blog.livedoor.jp/dqnplus/ ').read) result = doc.search('div.hentry').map{|div| [div.at('h3.title%20entry-title').inner_text, div.search('a').find_all{|e| /archives\/cat_/ =~ e['href']}.map{|e| e.inner_text}] } result.each do |post| puts "#{post[0]}[#{post[1..-1].join(', ')}]".toutf8 # 画面表示のエンコードに合わせること end けっか: FF11、バグを利用してアイテムを複製した500人の廃人を強制退会処分に [びっくりニュース, ゲーム] 次期ロシア正教会総主教のネット人気投票、日本人大主教がダントツ1位に…「日本アニメのファンが原因」とロシアマスコミ [びっくりニュース, 国際] 「孫悟空」の起源は韓国のサルだった…韓国教授が主張 [痛いニュース, 韓国・北朝鮮] パッケージに萌えキャラが描かれた「ツンデレカレー」「萌カレー」他が馬鹿売れ [おバカなニュース, 食生活] 「若者、結婚が遅い…どんな恋愛してるのか」「日本はなぜ子供産むのが難しいのか」など、小渕大臣が少子化分析チーム [痛いニュース, 政治・経済] … タグのネスト云々はこういうことをやりたいのだと推測 タグが1個しかない場合も要素1の配列になるので注意
696 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:23:21 ] >>695 ありがとうございます。すぐに確認できませんが,帰宅したら確認します!
697 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:27:31 ] スクリプト作るの早いな
698 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:30:58 ] >>697 過去に似たようなの作った経験があれば見当つくから あとはサイトの特徴調べるだけでこんなもんよ 早い人はもっと早いはず というか、このスクリプトは見たままの処理しかしてないので泣きたくなるほど遅い なんかスゴい人がXPathとか駆使して爆速に仕上げてくれることを期待
699 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:32:08 ] >>693 名前は?
700 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:42:52 ] >>699 def CGI::escapeHTML(string) string.gsub(/&/n, '&').gsub(/\"/n, '"').gsub(/>/n, '>').gsub(/</n, '<') end ということで CGI::escapeHTML require 'cgi' して使ってね シングルクオートをエスケープすることはありません
701 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:50:58 ] 今なら cgialt/util を薦めた方が良いのでは
702 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:52:46 ] 標準でなくていいのならたくさんあるよそりゃ 4つgsubするだけだから自前でやれというのもありだろうし cgiライブラリがCGI作成に最早使われてないのは公然の暗黙
703 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:56:32 ] 最近は文字列エスケープユーティリティと化してるな
704 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 09:39:17 ] ここでスモーカー抜けるのは痛いな
705 名前:704 mailto:sage [2009/01/23(金) 09:43:02 ] ごめんなさい
706 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:01:47 ] >>699 ttp://www.ruby-lang.org/ja/man/html/cgi.html 結構いろいろそろってる
707 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:03:15 ] 揃ってるも何も(PHPの)htmlspecialcharsの動作をするのは CGI.escapeHTML だけだぞ
708 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:12:43 ] >>707 全然知らんようだからほかにもいろいろあるって紹介したのだが URLエンコードするのありますか?とか追加質問されたらバカバカしいだろ リロードしてなかったから>>700 は気づかなかった
709 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:18:11 ] Ruby1.9が入っていないと端末に「アナログ」と表示する.bashrc - aikeの日記 d.hatena.ne.jp/aike/20090118
710 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:24:50 ] Rails1.2.6を使って作成しているのですが、selectを動的に変化させようとすると ActionView::TemplateError (undefined method `number_select' for #<HashWithIndifferentAccess:0xb722adf0> というのが出てしまいます。回避策があればご教授ください。 <やっていること> index.rhtmlの中を次のようにしています。 <div id="all"> <table> <tr><td id="first"><%= render :partial => 'first_info' %></td id="first"></tr> <tr><td id="second"><%= render :partial => 'second_info' %></td id="second"></tr> <tr><td id="third"><%= render :partial => 'third_info' %></td id="third"></tr> </table> </div id="all"> _first_info.rhtmlには次のような selectがあります。 <%= select(:first_info, :number_select, @numbers, {:selected => @select_value}, {:onchange => remote_function(:submit => :first_info, :url => { :action => :change_select }}) %> @numbersはコントローラー側で @numbers = ActiveSupport::OrderedHash.new してデータベースから値を格納しています。 _second_info.rhtml のテキストボックスに値を入力し、ボタンを押したら、その値をDBに登録し、_first_info.rhtmlの selectのリストに入力値を追加しようと以下のように処理しています。 1.コントローラーの_second_info.rhtmlから次の関数が呼ばれる def second データベースへ登録 @numbers = ActiveSupport::OrderedHash.new @numbers へデータベースの値を格納 @select_value = 1 end 2. second.rjsは _first_info.rhtmlを更新するため、次のようになっている page[:first_info].replace_html :partial => 'first_info'
711 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:28:02 ] >>710 【Ruby】Ruby on Rails Part6 pc11.2ch.net/test/read.cgi/php/1224838013/
712 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:42:15 ] instance_variable_set の 変数名に指定する文字列って、ユーザの入力そのまま渡しても大丈夫?
713 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:51:53 ] >>712 そのクラスでありえそうな変数名用文字の集合(おおむね英数字とアンダースコア)にマッチしないものは 事前に弾いとくとかしておいたほうがいいと思う あるいはアクセサの提供を条件にしておいて instance_methods に指定文字列があるかどうかチェックするとか 中のほうでevalしてるんじゃないかという疑問に答える知識はない
714 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 11:58:26 ] >>712 既存のインスタンス変数をどうされてもかまわないなら、大丈夫。 >>713 内部でevalとかはしてない。
715 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 12:19:33 ] >>710 >ActionView::TemplateError (undefined method `number_select' for #<HashWithIndifferentAccess:0xb722adf0> エラーの意味は分かってる? HashWithIndifferentAccess のオブジェクトに対して number_select メソッドを呼び出して、それで undefined method になっている。 呼び出すメソッド名を間違っていないなら、呼び出す対象となるオブジェクトを確認してみてはどうだろうか。 もしそれであっているなら、Railsのバグかもね。
716 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 19:59:53 ] 継承したクラスのオブジェクトの配列で困ってるんだけど class SuperClass def <=> other true end end class Class1 < SuperClass end class Class2 < SuberClass end arry = [] array << Class1.new array << Class2.new array.sort で、『Class1 と Class2 は比較できねぇよゴラ!』 といわれてしまうんだけど。 どうにかなんないかな? C++の SuperClassVecter* array = new SuperClassVecter() Class1* c1 = new Class1() array.push((SuperClass*)c1); Class2* c2 = new Class2() array.push((SuperClass*)c2); みたいなことがやりたいんだけど、よくわからんちん。
717 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 20:10:23 ] エラーメッセージを勝手に訳す人間に発展の未来はないのでよく覚えておくとええぞ あとマニュアルくらい見れ ttp://www.ruby-lang.org/ja/man/html/String.html#self.20.3c.3d.3e.20other > self <=> other > self と other を ASCII コード順で比較して、self が大きい時に正、等しい時に 0、小さい時に負の整数を返します。 ということで、<=> メソッドは整数を返すように作らなければ sort で比較できない
718 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 20:13:46 ] >>716 Comparableメソッドをインクルードしましょ
719 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 20:42:21 ] というか、基本的にはクラスが違うと比較はできないよ でもそれだと困るので (10 < 11.1 だとエラーで、いちいち明示的に 10.to_f < 11.1 しなければならないとか超困る) Rubyではcoerceのようなメソッドを作って汎用的なデータ構造に変換を依頼するというのが普通らしい でもめんどいので、スーパークラスで自分のデータの大きさを規定するというのはどうだろう class SuperClass def initialize(data); @data=data; end def <=>(other); self.length - other.length; end def length; @data.length; end end class Class1 < SuperClass; end class Class2 < SuperClass; end arr = [Class2.new('second'), Class1.new('first')] p arr.sort 結果 [#<Class1:0xb7c415f0 @data="first">, #<Class2:0xb7c41618 @data="second">]
720 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 20:53:57 ] >>719 標準の配列に入ってる状態で標準の sort をすると Class1 のオブジェクトが Class2 より前に出るとか そういうほのかに邪悪の香りがする処理をしたいのでは class SuperClass def <=>(other); self.class::PN - other.class::PN; end end class Class1 < SuperClass; PN=1; end class Class2 < SuperClass; PN=2; end class Class3 < SuperClass; PN=3; end arr = [Class3.new, Class2.new, Class1.new] p arr.sort [#<Class1:0xb7d0ce94>, #<Class2:0xb7d0cea8>, #<Class3:0xb7d0cebc>]
721 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 21:04:30 ] rubyのスレって親切に教えてくれるよね。 PHPは気持ち悪い連中ばっかりで寒気がする
722 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 21:15:30 ] どの言語も人気が出て使う人が増えてコモディティに接近するとああなるよ このへんの待遇は単にユーザーの数の少なさの裏返しというだけに過ぎない
723 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 21:36:47 ] ドキュメントが完備されていないから、まだまだまともな質問が来るので、 答える方もまだブチ切れてなわけだ。
724 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 21:49:05 ] でもオンラインリファレンスに乗ってることでもみんな寛容に答えてるよね。 新規参入促進にはいいのかな? 俺はまだ初心者だけどrubyは書いてて楽しいね
725 名前:716 mailto:sage [2009/01/23(金) 22:55:11 ] みんなありがとう。 継承クラスのどっからでも比較できるようになったよ! あと、ドキュメントって読みにくいよね。 せめて単語で引けるインデックスがあれば・・・ 月曜にRuby始めたばっかりなんだけど ドキュメント調べてる時間が9割以上ってどういうことなのさ! しかも知りたいことにはほとんどたどり着けない。
726 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 22:58:55 ] ソース嫁ってことなのか。
727 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:04:07 ] プログラミングなんて8割くらいは調べものだと思うよ 始めたばかりならなおさら でまあそれとは別にRubyのドキュメントは機能的に非常に貧弱だ どうにかしないといけないという話は出るが、本当にマシになったことはまだ一度もない
728 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:21:48 ] >>727 > プログラミングなんて8割くらいは調べものだと思うよ > 始めたばかりならなおさら おまいは時代に追い付け
729 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:25:03 ] >>728 打鍵時間以外はほとんど全部調べ物だと思うんだが 仕様書読んだりマニュアル読んだりRFC読んだりネットの事例読んだり
730 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:27:03 ] >>725 >ドキュメント調べてる時間が9割以上ってどういうことなのさ! 初心者はまず入門書から始めることをオススメする Webのドキュメントだけで済まそうとするのは、他の言語に精通している人だけにしとけ
731 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:30:16 ] 半分はテストじゃないのか?
732 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:32:38 ] そんな時間かかるか? っていうか、テストやらデバッグってプログラミング作成時間とは別にとって考えるもんなんじゃね?
733 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:36:59 ] Rubyのドキュメントががっかり品質なのはどう言い訳しても事実
734 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:44:52 ] どこに言い訳が?
735 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:47:03 ] 思春期後期の症例の一つです<言い訳してる人を見出したい
736 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:52:26 ] じゃあ>>733 は見えない人を相手してるだけか、失礼
737 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:55:50 ] >>732 「テスト駆動開発(TDD)」「振る舞い駆動開発(BDD)」「継続的インテグレーション」あたりでぐぐれ。
738 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 00:57:16 ] >>725 ドキュメントはchm版を見るのがおすすめ ちゃんとキーワードでインデックスされてるのでメソッドを調べたりするのが早い
739 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 01:57:46 ] >>737 それだってカウントしないと思うぞ
740 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 06:56:49 ] 慣れないうちはchm版リファレンスマジおすすめ つーかRubyリファレンスががっかり品質だって言われるけど 他の言語のドキュメントってそんなに充実してたっけか? >>739 テストコード→アプリコード→テストコード→アプリコード→… の手順で進めるなら 両方ともプログラミング時間に含めるべきだろう
741 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 07:30:00 ] Ruby ドキュメントといえば Dave Thomas と Andy Hunt の Programming Ruby の Web 版が 見れたときは感動した。 日本語訳が出たときは、お布施のつもりで買った。
742 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 09:00:21 ] >>721 最近、php使い始めたんでphpの質問スレもいってるんだけど、 何故かみんな少しカリカリしているイメージw ただ、やぱphpはリファレンスマニュアルがしっかりしている(特に公式がすばらしい) のがいいわ。 マニュアルにコメントがつけられるらしくて(細かいところは知らん) FAQが補足されてることも多々ある >>740 chm使ってるけど、がっかり品質ということはないな・・・ サンプルコード的なのをものとか、メソッドに関するFAQとかをもっと載せて欲しいと思うことはあるが Rubyに慣れるまでは使いにくかったけど、慣れてからはそこそこ使えると思った。 まあ、リファレンスだしね
743 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 12:09:14 ] 見て、使い方を理解するのに時間がかかる感じだな。 書いてるほうは、こんなの一目見りゃ分かるだろ的ノリなんだろうけど、見てるほうはそうでもないギャップがある。 お腹いっぱいに成るほどにサンプル手繰れてもいいと思うけどね。 でもオブジェクト指向自体が、ある日突然閃くまでは意味不明の苦痛の日々だしなあ。 そういう意味で教典読んでも、修行の後、悟り開けないと付いて行けない感じ。 phpのほうは、思想的な物は無くてどうとでも使える節操無い所があるからな。結果的に出来りゃなんでもいいじゃんみたいな。 便利そうな機能も無節操に突っ込みまくってるし、実際便利ではある。rubyだと便利そうなライブラリを探して読み込む所から始まるし。
744 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 12:30:50 ] >でもオブジェクト指向自体が、ある日突然閃くまでは意味不明の苦痛の日々だしなあ。 はぁ?
745 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 17:22:24 ] >>744 閃く遥か前の段階で「自分は既に悟っている」と勘違いしてる馬鹿には 縁のない次元の話だから、無理に関わろうとしなくていいです。
746 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 18:02:39 ] うわぁ・・・
747 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 19:12:20 ] もうやめようぜ!おまいらの好きなアイドルはだれだ? 俺は長島海輝だぜ!
748 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 19:31:42 ] ここ↓にあるように、数字を日本語表記にするようなモジュールはありますでしょうか? そろそろ FizzBuzz に飽きた blog.livedoor.jp/nipotan/archives/50985988.html
749 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 19:42:31 ] >>748 特にないと思う たぶん、世界中で何十回も生産されてるコードだ どっかであってもいいのにね
750 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 20:29:35 ] >>746 俺もネットやりたての中二病真っ盛りの頃、 グウの音も出ないけどそれでも何か「相手に痛いところがある」風に装いたいとき、 よくそういうの書き込んだなー。
751 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 20:31:30 ] calコマンドのようにカレンダーを表示したいのですが、定石みたいなのってありますか?
752 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 20:49:58 ] 宿題スレに書き込んだのが残ってた calコマンドのように表示するように作ったのは確かなんだが、 ぶっちゃけ表示部で何やってんだかわからん #!/usr/bin/ruby require 'date' ### Usage: ./cal.rb [YYYY MM] ### ./cal.rb 2007 3 #=> Mar 2007 calender ### ./cal.rb 3 2007 #=> Mar 2007 calender ### ./cal.rb #=> this month's calender if ARGV.empty? then t = Date.today else argv = ARGV[0,2].map{|s| s.to_i} t = Date.new(argv.max{|a,b| a <=> b}, argv.min{|a,b| a <=> b}, 1) end (d_one, d_last) = Date.new(t.year, t.month, 1), Date.new(t.year, t.month, -1) cal = "#{Date::MONTHNAMES[d_one.month]} #{d_one.year}".center(3*7) << "\n" cal << Date::ABBR_DAYNAMES.inject(''){|days,name| days << name.chop.rjust(2) << ' '} << "\n" (d_one-d_one.wday).upto(d_last+6-d_last.wday) do |d| (cal << ' ';next) unless d.month == d_one.month cal << d.day.to_s.rjust(2) << ' ' << "\n"*(d.wday / 6) end puts cal
753 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 20:55:45 ] >>749 自分で作ってみて、宿題スレにでも行きます
754 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 20:55:53 ] >>752 ありがとうございます。 読んでみますね。
755 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 21:02:39 ] >>754 要は、 String#rjust ってのがあるんだよ これは指定数で右詰めする "A".rjust(2) は "+A" を返すし(+は本来は空白) "AB".rjust(2) は "AB" を返す この2バイト確定の文字を空白で挟んで7つ表示して1週間を作ってる
756 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 21:04:28 ] joinでいいじゃんね、これ
757 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 21:38:17 ] >>748-749 文字を音声で読んでくれるソフトは結構出回ってる Ruby 的には不評な Windows 系なら Microsoft Windows Speech っつーソフトが無料だから試してみれ 日本語・ドイツ語あたりまでならなんとかなるんだが フランス語だと死にそうだな
758 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 21:40:18 ] ja.wikipedia.org/wiki/Speech_Application_Programming_Interface これをRubyから叩けば良いかも
759 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 21:47:44 ] …?
760 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 21:52:55 ] 松本教信者のみなさん今日は。
761 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 22:44:08 ] >>757-758 Rubyの練習として、NabeAtzz問題を解いてみたかっただけなんすよ
762 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 09:14:59 ] Rubyのrequireという命令が、使う頻度の高い割に すごくタイプしづらい文字なので困っています。 COBOLに慣れているので、copyというキーワードで 代替できるようにRubyを改造する方法があれば教えてください。
763 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 09:19:01 ] copyという文字列をrequireに置換するスクリプトをかけばいいやん
764 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 09:21:28 ] alias copy require ただし、他の人がいじるスクリプトではお奨めしない タイプしづらくてもrequireに慣れるべき
765 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 09:23:42 ] >>762 COBOLやれ
766 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 09:30:57 ] ちょっとしたbotを書いてみましたが、何か変なところがあったら教えてください。 なんか定数まわりで警告が出てますがあまり気にしないでください ダウンロードキーは2000、2時間で消えます www1.axfc.net/uploader/He/so/186680
767 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 10:01:25 ] ワロタ
768 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 10:03:57 ] >>762 補完系使えよ
769 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 10:19:02 ] require は COPY ではないので、それやりたいなら COBOL やれとしか
770 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 10:44:01 ] >>762 copyって入力したらrequireと変換されるように辞書に登録してしまえば
771 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 10:50:49 ] def copy arg require arg end
772 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 11:57:24 ] if then →if { end → } に置換するC言語のマクロ思い出したww さすが、COBOLerは発想が一味違う
773 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 11:59:45 ] COBOLer に限った話ではないぜ ttp://www.kojima-cci.or.jp/fuji/computerbooks/c/c.modula2.html
774 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 12:04:59 ] 天下の元祖B shellだってそういう風に書かれていたんだけどな
775 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 12:05:55 ] B shell は if 〜 then; ...; fi だ
776 名前:デフォルトの名無しさん [2009/01/25(日) 12:15:51 ] ふぃ〜
777 名前:762 mailto:sage [2009/01/25(日) 12:22:01 ] アドバイスありがとうございます。 いろいろ検討したのですが、 あらかじめ先頭行にreqireと打ち込んだ ひな形テキストファイルを用意しておき、 ソースを書き始める時はそれを読み込む ことにしました。
778 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 12:25:22 ] ほんとにrequireって打つのが苦手なんだな・・・。
779 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 12:29:39 ] q以外は、人指し指と中指を単純に動かすだけなんだけど、 まぁ、指の仕様も人それぞれってことなんだろうな。
780 名前:デフォルトの名無しさん [2009/01/25(日) 12:34:00 ] require
781 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 12:36:57 ] キーボードを見ずにrequireって打てたら神 その3 gimpo.2ch.net/test/read.cgi/toilet/1200207879/
782 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 12:38:17 ] >>775 こういう意味だよ。 minnie.tuhs.org/UnixTree/V7/usr/src/cmd/sh/mac.h.html
783 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 12:56:40 ] requireとloadを逆にしておけばよかったのになあ
784 名前:デフォルトの名無しさん [2009/01/25(日) 13:14:08 ] >>781 requrie
785 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:17:21 ] 余裕だろ。 require
786 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:18:01 ] require なんてキーの配置と流れは簡単じゃん req→右から左。キーは隣+一つ飛ばし ui→左から右。キーは隣 re→右から左。キーは隣 3回にわけてリズムをつかめばすぐに慣れると思う って全然Rubyの話じゃないな
787 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:19:31 ] QWERTY
788 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:20:21 ] 英単語的に、qのあとはuが来ることが多いので、その部分はほとんど間違えなく指が勝手に動くな
789 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:23:48 ] test require
790 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:36:28 ] ていうか、スクリプトの一番最初にまとめて、 またはライブラリ追加の必要性があるときにファイル先頭に移動して改めて書くようなもんだから、 その時だけゆっくり(手元見ながら)打ち込めばいいじゃんね キーボード全体から強い光が発せられていて注視できないような構造になってるとかそういうのですか?
791 名前:デフォルトの名無しさん [2009/01/25(日) 13:37:17 ] 私の好きなフィギュアスケートの澤田亜紀ちゃんの名前は打ちにくい
792 名前:デフォルトの名無しさん [2009/01/25(日) 13:43:48 ] | │ 〈 ! | |/ノ二__‐──ァ ヽニニ二二二ヾ } ,'⌒ヽ /⌒!| =彳o。ト ̄ヽ '´ !o_シ`ヾ | i/ ヽ ! Require ... ! ハ!| ー─ ' i ! `' '' " ||ヽ l |
793 名前:772 mailto:sage [2009/01/25(日) 14:19:58 ] >>773 それそれw そのことだよまさに >>777 俺ならエディタのスニッペにrequire登録しておいて、 r(スニペット補完キー) でrequrieを補完するな
794 名前:772 mailto:sage [2009/01/25(日) 14:20:39 ] スニッペってなんだww 「スニペット」な「コードテンプレート」とかエディタや開発環境で呼び名は違うと主ウケ緒d
795 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 14:25:24 ] 落ち着け。
796 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 16:12:24 ] require よりも、elsif の方が、打ちにくい。 エディタの設定で、*.rb ファイルで、elseif と書いたら、 elsif に置換しているけど。
797 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 16:13:27 ] ZAQ のうちにくいこと
798 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 16:28:50 ] ZAQは小指の爪を使ってキーボードの下から上へすべらすように z za zaa z za ・・・できねえ
799 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 16:32:16 ] そんなん右手薬指で右Shift押さえながら左薬指でzaw押せばいいじゃん ホームボジションなにそれ
800 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 16:42:36 ] >>799 押せてねぇw ホームポジションなにそれは同意で、小指薬指中指で順にZAWと押せば ( ゚Д゚)・・・。 ところで>>771 みたいなことするよりは>>764 のほうがいいよね? >>771 みたいにラップしたほうがいいときってある?
801 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 17:49:11 ] requireは上段に集中してむしろ打ちやすいような。 どうしても打てないなら、つ 最終兵器dvorak
802 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 18:47:55 ] req(単語補完(ry だろ、JK
803 名前:デフォルトの名無しさん [2009/01/25(日) 19:13:48 ] ttp://www.sanspo.com/sports/images/090125/spf0901251746010-p2.jpg
804 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 19:17:12 ] >>803 誰もそんなんrequireしとらん。
805 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 19:50:19 ] word = ["apple", "orange", "lemon"] を検索のキーとして sentence = ["apple is red","orange is not blue","lemon is yellow","apple is not orange","lemon is not red"] から何個、検索結果が出てきたか知りたいのですが、どうすればいいでしょうか?
806 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 20:03:10 ] >>805 配列要素をeachで枚挙することを厭ってはいけない 特にRubyではね words = ["apple", "orange", "lemon"] sentence = ["apple is red","orange is not blue","lemon is yellow","apple is not orange","lemon is not red"] counts = {"apple"=>0, "orange"=>0, "lemon"=>0} sentence.each do |s| words.each do |word| if /#{word}/ =~ s then counts[word] = counts[word]+1 end end end p counts 結果: {"orange"=>2, "apple"=>2, "lemon"=>2}
807 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 20:14:18 ] counts = {} words.each do |word| counts[word] = 0 end
808 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 20:15:04 ] >>807 スレタイ6回くらい読め
809 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 20:43:13 ] unko
810 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 21:52:42 ] 久しぶりにスレみたら>>747 で吹いた。 男じゃん。と思って検索したら、こんなに可愛い子が女の子なわけないじゃないか
811 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 22:18:03 ] ググってしまったじゃないかww
812 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 23:26:45 ] 調べたらショタアイドル。ぐぐr必要なし
813 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 23:38:45 ] >>812 ぐぐってしまったじゃないか
814 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 23:45:15 ] 密林で注文したじゃないかw
815 名前:デフォルトの名無しさん [2009/01/26(月) 03:25:48 ] puts "文字" puts "文字" puts "\n" srand require 'readline' def try_answer(prompt) while buf = Readline.readline(prompt, true) yield buf end end difficulty = ($*[0] || 1).to_i difficulty >= 1 or raise "#{difficulty}: Invalid difficulty direction" answer = rand(30 * difficulty + 1) judge_table = ["文字1","文字2","文字3"] try_answer("文字 > ") do |line| try = line.to_i result = try <=> answer puts "#{try}#{judge_table[result]}" break if result.zero? end プログラミングに興味が出て、いろいろさがしてたら 学校の過去の資料にこんなプログラムがありました。 これはどんなプログラムなんでしょうか? 一文一文の意味を教えていただけないでしょうか?よろしく おねがいします。
816 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 03:31:54 ] マルチは感心しないな
817 名前:デフォルトの名無しさん [2009/01/26(月) 03:32:21 ] ruby経由でwgetしつつ出力を表示しつつ、log.txtにもはきつつってことをやりたいのですが、上手くいきません。 画面には表示されますが、log.txtには何も書き込まれないという・・・ これは何がおかしいものなんでしょう Dir::chdir("/work") do system("wget example.com/ | tee log.txt") puts "read log.txt" puts File.read("log.txt") end
818 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 03:45:55 ] >>817 wget の出力は標準エラー出力に表示する tee は標準出力を取り込むことしかできないから、そもそも log.txt にはなにも書き込まれない wget localhost/ 2>&1 | tee log.txt Ruby あんま関係ないな
819 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 03:57:25 ] >>818 いけた!そっかwgetエラー出力だったのか・・・ 基本的なところをうたがうべきなのにすっかり忘れてた
820 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 04:00:33 ] これを意識してる人はまずいないよ これはむしろ wget の欠陥だと思う
821 名前:デフォルトの名無しさん [2009/01/26(月) 05:47:44 ] Rubyでwebサーバーにアクセスしたとき そのサイトにどんなファイルがあるか調べる方法はありますか?
822 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 06:03:15 ] index許可してあればリスト取り出せるけど そうじゃなければ_
823 名前:デフォルトの名無しさん [2009/01/26(月) 09:16:34 ] robotでも作るつもりなのかな
824 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 11:26:53 ] >>820 wget の場合、標準出力は -O - で取ってきたものを出力するためにあるので (他のツールにパイプで直接流し込んだりとか)、そういう時にも一貫性を保てる ように、メッセージは標準エラー出力というのは理にかなっている。 メッセージをファイルに取りたいなら -o filename オプションを使うという手もあるが。 Ruby 関係ないな。
825 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 11:30:37 ] >>822 Ruby関係ないよね っていうか、HTMLやHTTPの勉強はしてもらってるのかね Rubyは魔法じゃねえぞ
826 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 11:39:31 ] Ruby関係ないということがわかるだけでも勉強としては前進だから、どんどん聞くだけ聞いてもらってもいいけどな 回答としても「ちげーよRuby関係ねーよ」と答えるだけでいいから楽だし Ruby内でwget使ってログ管理しようとして嵌るというのは順調なテンプレの範囲だと思う
827 名前:817 mailto:sage [2009/01/26(月) 12:24:18 ] そもそも、コマンドラインで wget example.com/ | tee log.txt ってやってみてRubyの問題なのか、そうじゃないのか切り分けるべきでしたね なにあれ、解決したので助かりました。
828 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 13:40:37 ] Ruby 1.8でDir.globに複数のパターン(というか拡張子)を指定する方法は ありませんでしょうか? (Dir.glob("**/*.css") + Dir.glob("**/*.html")).each do |file| : end のようにするしかない?
829 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 13:44:36 ] >>828 マニュアルに初心者お断りな感じできちんとわかりにくく書いてあんじゃんよ irb> Dir.glob("*") ["002.txt", "001.txt", "aaa.jpg", "bbb.jpg"] irb> Dir.glob("*.txt") ["002.txt", "001.txt"] irb> Dir.glob("*.txt\0*.jpg") ["002.txt", "001.txt", "aaa.jpg", "bbb.jpg"]
830 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 13:49:16 ] あれわかりにくいよね 素直に第一引数は配列受け取るようにすればよかったのに
831 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 15:37:35 ] ネットワーク上にあるExcelファイルを、 open-uriを使わずにnet/httpを使ってFileオブジェクトに格納する方法はあるでしょうか
832 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 15:52:09 ] >>831 bodyをそのままwriteするだけじゃダメなんだっけ?
833 名前:828 mailto:sage [2009/01/26(月) 15:52:40 ] >>829 本当だ! > パターンを "\0" で区切って 1 度に複数のパターンを指定することもできます。 > > p Dir.glob("f*\0b*") > => ["foo", "bar"] マニュアルみたつもりで見落としていました。 ありがとうございました。
834 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 15:57:50 ] >>832 bodyメソッドを実行すると「string contains null byte」とエラーが出てしまいます・・
835 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 16:05:54 ] めんどくへえ イントラ限定のサーバかなんかで変な形式で送られてきてると予想 ヘッダはなんて言ってる?
836 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 16:10:15 ] レスポンスのヘッダでしょうか? HTTP/1.1 200 OK Date: Mon, 26 Jan 2009 07:08:59 GMT Server: Apache/1.3.27 (Unix) (Red-Hat/Linux) mod_ssl/2.8.12 OpenSSL/0.9.6b DAV/1.0.3 PHP/4.1.2 mod_perl/1.26 Last-Modified: Mon, 26 Jan 2009 00:11:23 GMT ETag: "3f1629-48000-497cffab" Accept-Ranges: bytes Content-Length: 294912 Content-Type: application/vnd.ms-excel こんな感じです
837 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 16:10:22 ] >>834 エラー箇所どこ? win32なのにバイナリモードでFile.openしてないとかいうオチはない?
838 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 16:14:04 ] >>837 さすがにそれはないと思いたい
839 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 16:23:08 ] >>837 orz おさわがせしました
840 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 16:29:17 ] >>838-839 初心者スレだしこんなミスもいいんじゃね?w 解決したならなによりだし(あのエラーを見たことは無いから自信はなかった) 騒がせたと懲りてるようなら、もう同じミスをしてもすぐ自分で気づくだろうから。
841 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 17:16:29 ] >>833 glob 構文だけを純粋に使って、*.{css,html} これでもいんじゃない。
842 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 17:29:56 ] >>833 ・{ } コンマで区切られた文字列の組合せに展開します。 Dir.glob("**/*.{css,html}") do |file| puts file end 1.9だと配列で複数のパターンを渡せるようになった
843 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 17:39:27 ] あらら、かぶっちゃった Dir[pattern] 形式だと1.8でも複数のパターンを指定できるよ Dir["**/*.html","**/*.css"].each do |file| puts file end
844 名前:828 mailto:sage [2009/01/26(月) 17:40:13 ] >>841-842 おお、便利だ! > { } コンマで区切られた文字列の組合せに展開します。 > 例えば、 foo{a,b,c}はfooa, foob, foocに展開されそれぞれに対してマッチ判定を行います。 > 括弧は入れ子にすることができます。例えば、 {foo,bar{foo,bar}} は > foo, barfoo, barbar のそれぞれにマッチします。 これですね。ありがとうございました。
845 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 20:20:17 ] >>843 完全に単なるエイリアスだと思い込んでた… glob構文めんどいから ["**/*.html","**/*.css"].inject([]){|r, i| r.concat Dir.glob(i) } こんなことしてたぜ…横から感謝
846 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 22:36:34 ] >>843 すげー。知らんかったわw globとは別なのね
847 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:20:28 ] >>843 はオレも知らんかったので助かるんだけど、でもこれっておかしいよね。 ほんとはglob()と同じにすべきだよな。わざわざこんなふうにしている意味が分からん。
848 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:24:54 ] > ほんとはglob()と同じにすべきだよな いまさらglobを変えるわけにいかないからせめて関数的メソッドDir[]は配列を受け取るようにしたという流れだと思った よく覚えてない
849 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 02:16:31 ] Dir[]とDir.globの違いはなんだろ(引数以外) Dir[]全部列挙で、Dir.globはブロック渡すと逐一処理可能ってことか?
850 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 03:32:53 ] glob2とか作ってコンパチ目指したほうが。 なんか先に作った香具師の実装がアレでみんな迷惑してるの多いよね。cgiとかwww Content-Transfer-Encoding: base64とか付いてるとか?
851 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 09:23:26 ] >なんか先に作った香具師の実装がアレでみんな迷惑してるの多いよね。cgiとかw あほか それは事実だが結果的にそうなった つまりそういう開発ポリシーだからそうなる必然 文句云うな
852 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 09:25:48 ] 日本語でおk
853 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 09:37:46 ] まぁ文句あるならもっと良いもの自分で作れってことだろ そうやってMatzんは煽って北
854 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 11:11:36 ] 「開発ポリシー」で互換性を残したままにするから、 結果的に古いのが残っているってことでしょ
855 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 11:36:22 ] Rubyのコアライブラリ近辺って「1つ目」を作る人は大量にいるけど「2つ目」を作る人がいないんだ 全部自前でクラスやメソッド改造してしまうから Ruby1.2くらいで「このライブラリの存在は大きいので、では本格的なものを添付しましょう」という流れにならないのがRuby
856 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 13:16:40 ] cgi2chとかいうライブラリができたら楽しいなw
857 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 14:00:45 ] >>844 シェルのワイルドカード展開と一緒だよ。コマンドラインで多用しない? diff -c nagainamaenofairumeiwonandomoutitakunai.rb{.orig,}とか。
858 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 14:16:40 ] 確か次世代cgi.rbは、候補はあるけど決定的なものがないという理由で今のままなんだよね
859 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 14:24:55 ] cgi.rbをとりあえずな感じで添付したらそのまま数年維持されて癌になったという経験が尾を引いてるな
860 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 15:40:24 ] 互換性なんかどこに残ってんだよ
861 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:26:19 ] クラス CGI2ch::BBS クラスメソッド CGI2ch::BBS.new([index]) 最新の板一覧取得用URL(複数候補可)を指定 インスタンスメソッド menu() 板一覧を取得 戻値 (cat, host(FQDN), board, name) のリスト 例: [('', 'www.2ch.net', '', '2chの入り口'), ('', 'info.2ch.net', 'guide', '2ch総合案内'), ..., ('ニュース', 'mamono.2ch.net', 'newsplus', 'ニュース速報+'), ..., ('PC等', 'pc11.2ch.net', 'unix', 'UNIX'), ... ('PC等', 'pc11.2ch.net', 'tech', 'プログラム技術'), ...] board(name) CGI2ch::Boardのインスタンスを生成
862 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:26:43 ] クラス CGI2ch::Board クラスメソッド CGI2ch::Board.new(host, board) インスタンスメソッド subject() スレ一覧を取得 戻値 (key, title, res) のリスト(スレッドキー, タイトル, レス数) 例: [(1223709050, 'Rubyについて Part 33', 624), (1233033091, '愛国Ruby', 14), ...] thread(key) CGI2ch::Threadのインスタンスを生成
863 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:27:07 ] クラス CGI2ch::Thread クラスメソッド CGI2ch::Thread.new(key) CGI2ch::Thread.create(name, email, body) 新スレを立ててインスタンスを生成 インスタンスメソッド read(key) write(name, email, body)
864 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:27:32 ] >>856 こんな感じで計画中だけど どう?
865 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:32:48 ] クラスメソッド CGI2ch::Thread.new(board, key) CGI2ch::Thread.create(board, name, email, body) 新スレを立ててインスタンスを生成 boardが必要かな
866 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:42:18 ] >[(1223709050, 'Rubyについて Part 33', 624), > (1233033091, '愛国Ruby', 14), ...] なにこれ
867 名前:710 mailto:sage [2009/01/27(火) 17:22:38 ] >>711 Railsのスレあったんですね。 気づきませんでした。 >>715 コメントありがとう。 結局原因がわからなかったので、rjsの中でhtml(<option></option>)を組み立てて、selectボックスに 対してreplace_htmlしたら回避できました。
868 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 17:29:56 ] >>864 計画倒れにならんようにがんがれ
869 名前:デフォルトの名無しさん [2009/01/27(火) 17:42:31 ] 2chの仕様なんて面倒だぞ。 専用ブラウザ開発者はマゾヒストとしか思えない。
870 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 18:00:13 ] >>864 スレ違い 2ch専用ブラウザの作り方 ttp://pc11.2ch.net/test/read.cgi/tech/1180406037/
871 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 18:14:12 ] >>862 愛国はかんべんw
872 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 18:17:05 ] >>871 はいはい面白いね至高のギャグだね
873 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 19:18:57 ] リファレンスマニュアルの使いにくさをどうにかしてください。 例えば、タイムアウトさせたい処理について調べたい場合、目次を見てもどこを見ていいのかさっぱりわかりません。
874 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 19:26:10 ] あ、オフィシャルサイトは検索休止中なんだっけ timeoutで全文検索すると出てくるぞ
875 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 19:35:31 ] 「Ruby マニュアル」でぐぐると「ruby マニュアル 検索」が関連で出てくる現状はどうにかしたほうがよい ttp://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=Ruby+%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB&num=10
876 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 21:08:35 ] ttp://doc.loveruby.net/refm/api/view/search?q=timeout るりまはいつになったら公式化するのだろうか
877 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 21:22:00 ] >>876 MLいわく、静的HTMLを吐くツールが整備されてから
878 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:59:46 ] >>864 期待してます
879 名前:デフォルトの名無しさん [2009/01/28(水) 00:01:28 ] >>864 そんなことしてる暇あるんなら Rubyのリファレンスマニュアルを検索出来るようにしてくれさい
880 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 03:16:09 ] つ refe2
881 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 04:26:03 ] Rubyラブじゃ☆
882 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 05:49:46 ] >>879 さっさとchm版を使ってください
883 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 11:53:50 ] require "active_support" すると、 あらゆるオブジェクトに daemonize というメソッドが付いてくるんですが、 これって ActiveSupport が意図してやってるんでしょうかね? こうするメリットが良くわからないんですけれども。
884 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 12:03:24 ] Kernel や Object クラスのようなものに外部モジュールがメソッドを追加するというのは議論を呼ぶ設計なのは確か ActiveSupport::Daemon.daemonize(obj) みたいなのでいいじゃんというのも指摘としては真っ当 そこで笑ってこっち見てる YAML 君もこっち来なさい
885 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:25:11 ] require "active_support"を使わなければ問題ない
886 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:45:39 ] String#each_line(sep) って、中で事前に巨大な配列作ってますか? 「ちょっとずつ」改行まで読み込んで返している動作ですか?
887 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:47:17 ] フラッグ型に保ち合ってきた。どっちかにブレイクするかもな。
888 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:50:12 ] 誤爆・・・
889 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:55:36 ] >>886 String#each_lineだから「読み込んで」は不適当な気がするが、 改行を探しては1行作ってyieldし、という挙動ではある。
890 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:59:42 ] str.split(/sep/).each do |line| と str.scan(/\G#{sep}/){|line| なら、String#each_line は後者のイメージに近いと思われ 「str が 大きかったら each_line 1回のためだけにでっかい配列ができて胃が痛い」とか考える必要はないかと
891 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 14:06:07 ] やっぱ str.to_a.each_with_index do …はあんまりよくないのか each_line_with_index って each がえにゅめらぼーウンタラの関連でどっかのバージョンで登場してたりする?
892 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 14:19:37 ] >>891 行番号が知りたいんだろうけど、each_lineは行ごとにループ呼ばれるから 自分でカウントアップすればいいんじゃない?
893 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:05:28 ] str.each_with_indexじゃダメなん?
894 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:21:04 ] String から呼ぶ Enumerable のメソッドって String をどう扱うかイマイチわからん
895 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:29:55 ] >>892 > 自分でカウントアップすればいいんじゃない? なにそのwith_indexの存在意義自体を土足で踏みにじる暴言
896 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:36:40 ] >>893 ,895 1.9のStringってeachがなくなってEnumerable非対応に なるんじゃなかったっけ? >>894 Enumerableのメソッドは全てeachに依存してるから、eachに準ずる。 直観的じゃないという話なら同意。
897 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:37:02 ] Rubyには放っておいても増える隠し定数のループカウンタとかないの
898 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:43:37 ] >放っておいても増える そんなもんあったら問題だw
899 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 16:59:30 ] 1.8.7以降限定ならstr.each_line.with_indexでいいんじゃないの。 それより前だったらstr.each_with_indexでいいし。
900 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 17:02:23 ] each_with_index自体あんまり使わないから正直どうでも良い
901 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 17:06:36 ] 行志向のファイルを処理するスクリプトを書かない人には無用の長物だな
902 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 17:15:11 ] 全機能使って書いてるのはRubyを作ってるモルモンくらいでしょ
903 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 17:20:55 ] 昔どのメソッドが何するもんかは覚えても実際使わないと忘れて逝くのが人類です
904 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 17:55:08 ] >>894 1.9でString#eachがなくなって Enumerableじゃなくなったのはそれが理由だよね バイト単位なのか、文字単位なのか、行単位なのか一般的には決まらないので 自分で明示して each_byte か each_char か each_line を使えと でも自分スクリプトで Stringが行単位のEnumerableなのを利用して いきなり文字列の sort とかuniqとかしてたんだよね で、1.8.6以前と1.9以降の両方で動くようにスクリプトの頭で unless String.method_defined?(:each) class String alias each each_line include Enumerable end end
905 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 18:31:47 ] >897-898 $.
906 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 23:19:41 ] よいまとめがあったんでシェア Ruby1.9をこれから使う人のためのM17Nまとめ - 福島でRailsを使って仕事を頑張る計画 d.hatena.ne.jp/xibbar/20090126/1232946944 >>887 市況2?w
907 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 03:47:31 ] >>864 wktk
908 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 04:19:58 ] 1.9なら str.each_line.with_index {|line, idx| ... } でFA。でかい配列を作ったりもしない。
909 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 10:32:14 ] 1.9知りたきゃ、これ見ろってことっすかね? 日本Rubyの会 公式Wiki - 1.9 Links jp.rubyist.net/?1.9+Links
910 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 11:02:09 ] >>909 リファレンスマニュアル見ろよ