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