1 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 08:21:23 ] プログラミング言語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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
598 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 06:04:23 ] よくない
599 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 09:11:11 ] ブロック付きのsortってほとんど使わんよな 大抵sort_byで済む
600 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 09:51:09 ] >>597 本気でそう思うならredmineにfeature request
601 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 11:13:11 ] ソートの基準が2段階のとき sort{|o1,o2| if o1.a != o2.a o1.a <=> o2.a else o1.b <=> o2.b end } みたいに使ってるな
602 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 11:35:19 ] rubyの場合は、配列にして比較するんでしょ。効率の善し悪しは知らないが
603 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 11:38:50 ] Enumerable#sort の場合は Ruby スクリプトに降りてこないから遅いわけではないよ
604 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 11:42:04 ] 俺もほとんど.sort_byだなあ
605 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 11:42:06 ] >>596 > 自作のソートのコードを利用する奴は95%までバカだが、 > ソートのコードを書けないのは100%ただのバカ うむ 説明からソートをコードに起こせない人は時々いて、そういう人は例外なくアレ ソートをコードにする練習はソートくらいでしかうまく鍛えられないから、 初心者のままでいいと思ってないのなら文句言わず今自分の手を動かしてやるべき
606 名前:newbie mailto:sage [2009/09/04(金) 16:39:29 ] >>601 なるほど。配列引数便利だ!
607 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 18:37:40 ] >>601 > ソートの基準が2段階のとき でも条件が単純ならば大抵sort_byですむ ブロック付sortなんてsort_byが出来てから使ったこと無いなぁ A=Struct.new(:a,:b) a = [A.new(2,4),A.new(2,1),A.new(1,5),A.new(1,1)] p a.sort_by{|o| [o.a,o.b] } 文字列中の数字を数としてソートするなんかだとどう書くんだろう? a = %w(3a 20a 100a b9 b80 b700 a9b100 a10b100) p a.sort_by{|e| e.scan(/\d+|\D+/).map{|e| e[/\d/] ? ['0',e.to_i] : [e]}} こんなんでいいのかな?
608 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 18:39:12 ] アルゴリズムの勉強していたら夏休み終わってたんだが。
609 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 19:07:19 ] >>608 ユークリッドの互除法を理解しただけで夏が終わった俺よりマシだ 気にすること無いぞ
610 名前:デフォルトの名無しさん [2009/09/04(金) 20:14:34 ] Ruby 1 初めてのプログラミング(arton/宇野るいも 著)を買ったらRuby1.9.1が付いて来たんだが。 具体的に不便なところ(使えないもの)を教えてもらえないだろうか? あと、このサイト(www.rubylife.jp/ini/ )にある、 『オプション指定をプログラム内に記述』というソース内で文字コードを指定する方法が実行できないのだが、 1.9.1では使えないということなのだろう? 誰か頼む。
611 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 20:21:33 ] 英文テキストを送って翻訳サイトで日本語化してstdoutに文字列表示するサンプルどっかにない
612 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 21:36:47 ] ttp://www.atdot.net/sp/readonly/oo5gpk
613 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 21:38:56 ] >>610 > あと、このサイト(www.rubylife.jp/ini/ )にある、 > 『オプション指定をプログラム内に記述』というソース内で文字コードを指定する方法が実行できないのだが、 > 1.9.1では使えないということなのだろう? 使えるよ。具体的にどう書いてどうなった?
614 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 22:07:07 ] 使えないだろ。嘘言うな
615 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 22:12:13 ] >>612 すげ〜。ありがとう。 いい加減CGIも勉強した方がいいのかな。 あとまだ10年くらいは通用する技術なんだろうか。
616 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 22:16:09 ] 誰かruby-1.8.6-p383をgcc4.4.0のmingwでビルドしてない? make testしたらエラー出るんだけど。 not ok float 1 -- ./sample/test.rb:1172 not ok float 2 -- ./sample/test.rb:1173 not ok float 3 -- ./sample/test.rb:1174 って感じでエラー。
617 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 22:21:21 ] >>615 CGIもできないヤツがHTTPでなにかできるとは思えないから 通用云々よりまずできるようにしとけ
618 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 23:37:02 ] PerlのURI::Fetchに相当するような、CacheつきWebクライアントはないでしょうか?
619 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 23:58:40 ] vim-rubyをインストールしたのですが、vim-ruby-install.rbのセットアップが上手くいきません。 $ gem install vim-ruby >WARNING: Installing to ~/.gem since /usr/lib/ruby/gems/1.8 and /usr/bin aren't both writable. >WARNIG: You don't have /home/****/.gem/ruby/1.8/bin in your PATH, > gem executables will not run. >Successfully installed vim-ruby-2007.05.07 >1 gem installed $ sudo vim-ruby-install.rb >Can't find source directory. 上のように出力されてvim-rubyのセットアップができません。 気になるのが、/usr/bin/vim-ruby-install.rbファイルは存在するのに/usr/lib/ruby/gems/1.8/gemsディレクトリにvim-rubyが無いのです。(gemからインストールした他のgemパッケージは全てここにある) しかしgem listコマンドを叩くと他のgemパッケージとともにvim-rubyが出力される。 何か分かる方がいましたら教えてください。よろしくお願いします。
620 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 00:11:12 ] >>615 >>617 ajax で javascript が開発の中心になっても CGI は細々と生き残るだろう ただし HTML は javascript の単なる loader になり CGI はバックエンドとしての RDB - XML translator になり下がる
621 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 00:14:18 ] >>615 CGIっつーよりwebAPIだよ
622 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 00:14:33 ] ぽかーん。
623 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 00:27:34 ] >>620-621 わかってないならレスしなくていいよ・・・
624 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 01:09:33 ] pythonのようにコンソール上でコマンド1つ1つ実行させて 動作を確認させることはできないのですか?
625 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 01:12:26 ] つirb
626 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 04:24:09 ] RubyでCGI(笑)
627 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 05:26:51 ] >>619 眠いから論理的に読んでないが、 gem は sudo したとき(/usr に書き込み権限があるとき)と 一般ユーザーで使用したとき(/usr に書き込み権限がないとき)とで使用するディレクトリが違う 完全自動で /usr/bin にインストールして欲しいなら最初から sudo gem install しろ gem install すると gem は $HOME/.gem/ruby/1.8 とかに入る 昔は全員が sudo しまくってたんだが、最近は sudo しないインストール方法が市民権を得ている いまだに Rakefile で sudo ベタ書きしてるライブラリがあるがとっとと死んでくれてよい
628 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 06:16:17 ] >>619 何が起きたのか書いてあるじゃん
629 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 06:17:49 ] へ?なんで?意味がわからない。
630 名前:610 [2009/09/05(土) 06:37:13 ] >>613 そのサイトの該当部分は、正確には『Ruby入門 >日本語と文字コード >オプション指定をプログラム内に記述』だった。 すまん、言葉が足りんかった。 プログラムだが、これ↓を実行すると、 #! ruby -Ku print("KCODE=", $KCODE); こう↓なる。 test.rb:2: warning: variable $KCODE is no longer effective KCODE=
631 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 06:55:01 ] いやそれはメッセージがそのまんまだが っていうかこれの経緯の解説が無いならその本投げ捨てろ $KCODE が動作するのは 1.8 までで、1.9 からは別な方法で指定する
632 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 07:06:23 ] >>630 Ruby M17Nの設計と実装 jp.rubyist.net/magazine/?0025-Ruby19_m17n
633 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 07:18:33 ] こういう場合大抵その本に罪はないw
634 名前:610 [2009/09/05(土) 08:48:43 ] >>631-632 答えてくれてありがとう。 632のリンク先は自分が勉強不足なせいで何言ってるか半分も理解できなかったがw 本にはマジックコメントを使うと書いてあったんだが、ネットで調べてみたら別の事が書いてあったんで混乱したんだ。 やっぱり別の本買えばよかった(´;ω;`)
635 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 09:29:21 ] >>632 はまだ理解できなくても問題ない これは Ruby1.8 をある程度修めてて なおかつエンコーディングの日常的知識があることを前提としている一次文書だ Ruby 1.9.1 で初めてプログラミング言語に触れる人だとか 文字エンコーディングってナンデスカという人だとか そういう人向けの文書ではない そういう人向けの解説はこれをもとに出てくる…はずなんだが、ばあさんやまだかいのう
636 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 09:29:45 ] >>634 Yes you do. ttp://www.amazon.co.jp/dp/4798111570 ttp://www.amazon.co.jp/dp/4798114723
637 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 11:19:17 ] >>615 CGIというか、HTMLを使った基本的なWebアプリが作れるようになれば便利 あと10年ぐらいは、HTMLやHTTPが無くなることはないだろう
638 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 11:29:25 ] 今さすがにCGIはなあ、とか思うんだけど、 で、まあwebアプリを初心者に勧めるとして何するのが(どんなライブラリ使うのが)いいんだろ。 Railsはでかいは、デプロイ面倒だわ、慣れるとすごくいいいんだけど、初心者がいきなりやるには…。 Sinatra辺りだろうか?
639 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 11:46:14 ] CGIが書けずにフレームワーク扱いだす新人PGって、 交通ルール知らずに車運転するようなもんじゃないだろうか
640 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 11:50:33 ] どこぞのフレームワークと違って やって無駄になるような技術ではまったくないね
641 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 11:50:51 ] 比喩は嫌いだ
642 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 11:56:56 ] webアプリ初心者が序盤に作ったモノはひどいデキになって当たり前なんだから まずはライブラリなしの生CGIでいいんだよ 薄っぺらい仕様だからとっかかりにはちょうどいい セキュリティはこの際忘れろ、ローカルでやるかbasic認証でもかけて隠しとけ セキュリティやらフレームワークやらはCGIの基礎がわかってから考えろ
643 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 12:11:04 ] KENTととほほを知ったことには感謝しなければならない >>642 で納得していただろうから
644 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 12:26:40 ] 「考えない」んだよな そりゃそうだ、今の時点で「動作してる」のに、何を付け加える理由があろう むしろ、安全じゃない文字の基本的テストが標準付属していて、 それを通さないとそもそも動作しないとかそういうフレームワークがあれば
645 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 17:31:11 ] Railsの話題なのですが、rubyに共通する話なのでこちらで聞いてみます。 スクリプトのデバッグにruby-debugを使ってみているのですが、 b(break)コマンドでブレイクポイントを表示してくれず、現在行がブレイクポイントに追加されてしまいます。 ブレイクポイントを表示するにはどうしたらよいのでしょうか? 下記を見ると、breakでブレイクポイントの表示のはずなのですが・・・??? debug - Rubyリファレンスマニュアル www.ruby-lang.org/ja/man/html/debug.html ruby-debug 0.10.3 ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux] Ubuntu 9.04 (coLinux)