- 1 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 17:31:07 ]
- プログラミング言語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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
- 604 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 18:44:10 ]
- スタイルの押しつけうぜぇ
- 605 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 18:57:14 ]
- 個人的にString#%は蛇道
- 606 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 18:57:21 ]
- >>601
どもです。putsに書き換えて実行したところ同じように出ました。 どこから、4という数字を得ているのでしょうか? 上の式だとdbh以下を実行して 4つの要素をDBに登録していますよね。
- 607 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 18:57:53 ]
- >>604
Ruby使うの今すぐやめれ プログラミングスタイル強制要素が無数に散りばめられてるぞ
- 608 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 18:58:58 ]
- >>601
君にはPythonが向くんじゃないかな?性格的に。
- 609 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 19:02:23 ]
- >>608
sprintf は Ruby のものではないということを知らない?
- 610 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 19:04:06 ]
- >>606
そりゃそういうふうに作られてるからだろ do のマニュアル読め わざわざカウントして数値を返してるようなので初心者殺しではある
- 611 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 19:10:25 ]
- sprintf と pack/unpack は「Ruby らしい」糖衣実装が望まれていながら、
ダラダラと旧来の仕様を引きずってきたんだよな オタクが他の言語の知識を流用できて便利というただそれだけの理由で
- 612 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 19:14:00 ]
- >>611
あれは正規表現みたいなサブ言語だと思って諦めるのが吉かと思われます 確かに覚えにくいしなんとかしたほうがいいのは確かなんだけれど あれをまたまとめて別途組み立ててしまうとそれだけで結構な一覧表に
- 613 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 19:17:18 ]
- >>610
どもっす。doのマニュアルを探してきます。
- 614 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 19:18:04 ]
- printf類にrubyらしい実装なんて不要
他の言語と違う動作されたらそれこそ非難の的
- 615 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 19:24:33 ]
- prntf などの「メジャーな関数」をなくせという話ではないように読めるが
- 616 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 19:25:25 ]
- >>611
sprintfは別言語でそれやられて大迷惑 >>612も言ってるけどいまさら別に覚えるのも嫌だから 今までと同じでいいよ・・・
- 617 名前:593 mailto:sage [2009/10/07(水) 19:27:45 ]
- >>595
minですね 探し切れてませんでした ありがとうございます >>598 なるほど、確かに求めてるのはヒープみたいなものでした 参考になりましたありがとうございます
- 618 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 19:32:02 ]
- 別にみんな自由に書けばいいじゃんw
Obsoleteでもない限り機能として用意されてるんだから使えばいいし 「個人的に嫌い」な人が大半になればそれを使わないのがデファクトスタンダードになるだけだし
- 619 名前:591 mailto:sage [2009/10/07(水) 19:37:20 ]
- どうもありがとうございました >>592
うーん、もうちょっと明示的にスコープの話が書いてあると嬉しいような。 doc.okkez.net/static/187/method/Kernel/m/require.html doc.okkez.net/static/187/method/Kernel/m/load.html
- 620 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 19:56:18 ]
- ruby/dbiの公式に行きまして、classデータベースというページがあり
メソッドの説明がしてありました。しかし、記述が少ししかなく。 こういう場合、ソースを読むんでしょうか? とりあえず、今は目的に必要なことだけをやっていこうと思います。
- 621 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 20:06:32 ]
- >>597
>rows = dbh.do("INSERT INTO people (name,height) >VALUES('Wanda',62.5),('Robert',75),('Phillip',71.5),('Sarah',68)") >printf "%d rows were inserted¥n", rows > >ruby/dbiの使い方ページにあるコードの抜粋なんですが、実行すると >4 rows were insertedと表示されます。 > >printf "%d " , rowsで、rowsから何かの数字を得ているようなのですが >どういう動きをしているんでしょうか? 1行目の rows = dbh.do("insert....") で、insertした件数が返されて rows に代入されているだけじゃないかな。 それを printf "%d ", rows で出力している。そんだけ。
- 622 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 20:29:41 ]
- >>620
ググったら公式じゃないけどこんなページがあったよ ttp://www.nslabs.jp/book2-dbi.rhtml
- 623 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 20:31:28 ]
- >>618
選択肢がないという話では
- 624 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 20:35:37 ]
- >>623
>>602-603がそうはとても見えない
- 625 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 20:38:34 ]
- >>624
sprintf 使ったことある?
- 626 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 20:45:18 ]
- >>625
sprintf系まとめて異端だったの? >>603は「(sprintfはまだしも)String#%は使うな」と言ってるんだと思ってたけど
- 627 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 20:51:44 ]
- C に由来する sprintf や pack/unpack の書式記号や利用法が Ruby らしくないというツッコミなんじゃ…
- 628 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 20:57:52 ]
- pack系はともかくsprint系に選択肢ないか?
- 629 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 21:02:21 ]
- >>603はどう考えてもネタです
- 630 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 21:04:49 ]
- pack は map で直接書くというコードの動作的にはある意味わかりやすい代替手段が
- 631 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 21:27:58 ]
- しかしprintfを非難するとはいい度胸だ…これも平成ゆとりが増えたからなのか…
- 632 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 21:33:55 ]
- packにせよprintfにせよ、DSLは不思議と好き嫌いが分かれる気がする
- 633 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 21:34:36 ]
- >>631
「わかりにくい」ことは確か 初心忘れると老害と罵られるぞ
- 634 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 21:37:58 ]
- 反printf派に聞きたいんだけど
今より使いやすい(Rubyっぽい)printf構文ってどんなの?
- 635 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 21:39:17 ]
- とりあえず「詳しくはmanページ読んでね」というのは頂けないな
「正規表現はPerlと同じ物が多いので同じ場合はそちらを」は通用しないのに
- 636 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 21:40:14 ]
- >>633
packは使ったこともないし使う場面もないから構文すら知らない。 rubyでdef endしちゃうから今後も使うことはないだろう。
- 637 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 21:40:50 ]
- $と記号1つのグローバル変数(今となっては排除したいらしいが)も、
「Perlといっしょ」で通じなくなってきてるからな…
- 638 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 21:42:04 ]
- printfを知らないとなると、rubyしか触ったことないってことになるんだがな…
webクリエータはたいてい適当だしそんなもんかw
- 639 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 21:43:00 ]
- >>636
バイナリファイルのヘッダパースとかどうやってやってるの?
- 640 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 21:43:31 ]
- >>636
irb1.8> p "ルビー" "\343\203\253\343\203\223\343\203\274" これ日本語に戻してー
- 641 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 21:44:32 ]
- >>638
お前puts使わないだろ
- 642 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 21:47:39 ]
- >>636
1.8でUnicodeEscapeSequence文字列が欲しいです先生
- 643 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 21:49:20 ]
- >>640
evalしろ
- 644 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 21:50:35 ]
- packはまあ・・・・使う時にリファレンスを見てやるしかないな
一方、青木氏はpackで壊れた >まったくpackの意味不明さときたら、 >「packのテンプレートがわからなくたって悔しくなんかないんだからな! バーカバーカ!」 >と幼児退行してみたくなるほどです。
- 645 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 21:52:37 ]
- >>643
こういう文字列をevalしろとな
- 646 名前:デフォルトの名無しさん [2009/10/07(水) 22:09:18 ]
- 青木氏って2chねら?
- 647 名前:デフォルトの名無しさん [2009/10/07(水) 22:27:52 ]
- ttp://d.hatena.ne.jp/images/keyword/keywordlist_furigana.csv
このファイルが開けないのですが、どーすれば良いのでしょうか。
- 648 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 22:31:52 ]
- >>647
中身がタブ区切りのtsvだからです っていうかファイルの中身確認することくらいしようぜ
- 649 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 22:34:21 ]
- putsすると日本語でも表示されるよね
sjis問題で文字化けはするけど
- 650 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 22:44:34 ]
- gets, puts ってのはもろにCだと思うんだが・・・
- 651 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 22:55:35 ]
- え・・・そうだと思うけどなんか違った・・?
- 652 名前:デフォルトの名無しさん [2009/10/07(水) 23:28:42 ]
- visualstudioみたいにボタンとかを貼り付けて入力フォームが作りたいんですが
ああいうツールは無いんでしょうか?
- 653 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 23:32:42 ]
- CentOS上でruby1.8.7から1.9にアップデートしたいのですが、
Linuxの知識に乏しいためなかなか手が付けられません。 1.8.7のインストールはネットで調べつつなんとかソースコードから入れました。 一般的にはどのような手段でアップデートするのでしょうか?
- 654 名前:デフォルトの名無しさん [2009/10/07(水) 23:34:49 ]
- >>653
このスレ的には Debian にしろって言われると思うが。
- 655 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 23:34:51 ]
- > Linuxの知識に乏しいためなかなか手が付けられません。
じゃあ無理だ 諦めろ あとスレ違い
- 656 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 23:39:29 ]
- こういう奴は何しにこのスレに張り付いてるんだろうか
- 657 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 23:41:38 ]
- >>656
わりと適切だと思うが… Linux使ったことあるか?
- 658 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 23:43:45 ]
- make がなにやってるか理解しないといかんからなー
それはこのスレの範囲を超える パッケージがないなら諦めれ
- 659 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 23:44:01 ]
- 貼りついてるw
- 660 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 23:44:15 ]
- もろスレ違いだと思うが。
- 661 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 23:44:52 ]
- Ruby公式ページにインストールガイドってリンクあるからみればいいよ
- 662 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 23:48:54 ]
- 教祖も使っているDebian最強
aptitude install ruby
- 663 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 23:49:18 ]
- Linux上で、しかもLinuxに関する知識がないのなら
パッケージ管理システム(aptやyum)を使え、としか
- 664 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 23:54:26 ]
- >>662
1.9.1は存在しない(Sid除く)
- 665 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 23:58:14 ]
- この場合Linuxの知識は無関係だろ
- 666 名前:デフォルトの名無しさん [2009/10/08(木) 00:38:00 ]
- >>653
package application で source または archive の site を追加… 大抵は package gpg key は初期の物が使える筈… source package で compile install が出来るので在れば source を拾って来て install.
- 667 名前:デフォルトの名無しさん [2009/10/08(木) 00:50:15 ]
- ruby は python を使えれば 使う事ができますか
python と ruby の関数で違う物は在るのでしょうか?
- 668 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 00:54:47 ]
- フィッシングタイムですか?
- 669 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 00:58:16 ]
- 邪魔しないでください >>668
- 670 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 01:05:11 ]
- >>667
全体的に大阪弁と東北弁ぐらいの違い
- 671 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 01:09:16 ]
- >>667
片方が使えるなら、もう片方もさほど苦労しない
- 672 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 01:53:24 ]
- gems.rubyforge.orgにgemでアクセスできなくない?
- 673 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 15:57:30 ]
- rubyが司る世界において
数字の1が生まれたら、それは数字クラスに所属していて 数字クラスのメソッドにない動きは出来ないってことですか?
- 674 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 16:10:39 ]
- Rubyには、オブジェクト(インスタンス)ごとにメソッドを定義できる、
特異メソッドという仕組みがあるので、たいていのクラスでは、イン スタンスごとに振る舞いを変えることができる。 しかしながら、数(Numericおよびサブクラス)にはこれが定義できない ように制限されている。 なお、数インスタンスが生まれた後に、数クラス自体にインスタンスメ ソッドを追加した場合、既存の数インスタンスでも使える。
- 675 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 16:21:33 ]
- irb> module One; def one; "one!"; end; end
irb> 1.extend(One) TypeError: can't define singleton from (irb):2:in `extend_object' from (irb):2:in `extend' from (irb):2 from :0 irb> "1".extend(One).one "one!" ああ、わかりやすいエラーだ
- 676 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 16:26:28 ]
- >>673
一般的にはそう クラスに定義された動作(メソッド)のみが可能 ただし Ruby はオープンクラスだから、自分でクラスを拡張してメソッドを追加変更することができる ある人の String クラスにあるメソッドが、 別の人の String クラスにもあるとは限らない ある人の作った String のインスタンスが、別の人の作った String のインスタンスと全く同じ動作をする保証はない ただ、組み込みクラスのメソッドやライブラリ標準メソッドの上書きは自己責任なので気にしなくてよい それと整数クラスは>>674の言うように例示にはちょっと不適
- 677 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 18:34:07 ]
- >>675
数字と数の違いか:-p
- 678 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 11:22:07 ]
- M1::C1::C2 というネストしたクラスがあります
あるオブジェクトが M1 を「ネスト構造上含んで」いるかどうかを調べたいです 文字列として正規表現で比較するしかありませんか? obj.class.to_s =~ /\AM1::/
- 679 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 11:56:18 ]
- >>678
どんな場合にも動作するのは文字列としての比較 Module.nesting が使えることも多いが、特定条件で存在できないモジュールオブジェクトを指定できない
- 680 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 11:58:02 ]
- C → Java → Ruby と勉強してきましたが、次の言語は何がいいと思いますか?
プログラミングは単なる趣味です。
- 681 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 11:58:52 ]
- Haskell
- 682 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 12:08:49 ]
- Lisp系列が足りないな
- 683 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 14:20:33 ]
- >>680
趣味というなら、マイナー言語でもいいよね。 Rubyとは真逆の、静的な関数言語がいいんじゃないかな。 OCamlかHaskellあたり。どちらも日本語での入門書があるし。
- 684 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 15:10:41 ]
- railsで、webアプリを作るのに
必要な知識ってなんですか? ruby rails 正規表現 html,xhtml,xml javascript mysqlなどRDMS apacheなどhttpサーバー こんなもんでしょうか?
- 685 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 15:15:04 ]
- >>684
他の言語でフレームワークべったりでないWebアプリケーションを作ることができれば問題なし なんじゃそりゃって感じだけど、まず間違いない あとRailsは板違いなので 【Ruby】Ruby on Rails Part8 pc11.2ch.net/test/read.cgi/php/1252842574/ こっち池
- 686 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 15:15:17 ]
- >>681-683
サンクス。 OCamlかHaskellあたりがお薦めなんですね。 了解しました。
- 687 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 15:20:43 ]
- >>685
どもっす。半年間精進してダメなら諦めます。
- 688 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 15:40:15 ]
- rspec 版の testrb コマンドってありませんか?
- 689 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 15:48:15 ]
- >>688
spec -fs -c spec/
- 690 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 15:54:54 ]
- >>689
1578 examples, 0 failures っひょー
- 691 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 16:28:14 ]
- >>690
おまえすごいな
- 692 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 16:32:09 ]
- 個人でもちょっと規模大きければこんなもんだろ
- 693 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 17:31:04 ]
- 俺レベルになるとワンライナーで大企業の基幹システムを作れるようになる
- 694 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 17:45:04 ]
- rspec 使ってるとテストはやたら増える
- 695 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 18:08:57 ]
- 無印のサイトはシェルやワンライナーで作ってる、なんて言ってたけど、
どーりで重いわけだと思ったよ
- 696 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 22:44:18 ]
- 初心者らしい話題
class CArray < Array end a = CArray.new b = CArray.new c = a + b p c.class #=> Array CArrayを返してほしい。 class CString < String end a = CString.new("aaa") b = CString.new("bbb") c = a + b p c.class #=> String CStringを返してほしい。
- 697 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 23:17:14 ]
- CArray というクラス名に吐いた
class CArray < Array def +(v); self.class.new(super(v)); end end
- 698 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 23:58:05 ]
- a[0..1]みたいなのはちゃんと元のクラスにやってくれるんだよね
- 699 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 00:22:00 ]
- Array や String の(Cで記述した) + メソッドの定義の中で
Array.new や String.new がハードコーディングされてるんだろうな 何らかのシステム的理由があるか、いまさら変更できないか、どっちかだろう まあ、バグっちゃバグかもしれん
- 700 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 01:13:02 ]
- >>698
むしろそっちのほうの挙動が不思議 Stringクラスの実装はCStringを知らないはずなのに、 どうしてCStringオブジェクトを返せるんだ?
- 701 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 01:28:37 ]
- インスタンスがあればクラスわかるから返せるにきまっとるわい
- 702 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 02:03:22 ]
- superのnew呼び出しでself.class.newってやるのきもくね?
- 703 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 02:10:19 ]
- 継承を前提としたクラスならってところ
組み込みでいえばIOとかNumericあたり というか、otherと絡むときにわざと基本クラス返してる気がするなぁ
- 704 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 03:07:56 ]
- レヴェルの低いインターネッツだな
|

|