1 名前:デフォルトの名無しさん [2010/12/11(土) 15:46:15 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 ★注意★ Ruby 1.9.2 は初心者には若干時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。 文字エンコーディング等の外部基礎知識が必要な上、不完全対応の第三者ライブラリでの問題の切り分けが手間です。 迷う点の少ない1.8.7に習熟→おもむろに1.9.2の変更点のみ重点学習、とすればスムーズに移行できるでしょう。 関連スレや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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
2 名前:レシピブックを第3版に mailto:sage [2010/12/11(土) 15:47:23 ] 【よくあるしつもん】 Q: いちからRubyを始める初心者向けのRuby入門書は何がありますか? A: プログラム作成自体の初心者なら ・「たのしいRuby 第3版 Rubyではじめる気軽なプログラミング」 www.amazon.co.jp/gp/product/4797357401/ 文法は理解済み(orリファレンスで乗り切る既言語習得者)の場合のRuby様式を知る必携2冊目 ・「初めてのRuby」 www.amazon.co.jp/dp/4873113679/ 以下は外れが少ないとされている本です。必ず立ち読みした上で自分の目的とレベルに応じて購入してください。 ・「Rubyレシピブック 第3版 303の技」(初心者向け、1.9対応) www.amazon.co.jp/dp/4797359986/ ・「プログラミングRuby 第2版 言語編」(初心者向け参考書) www.amazon.co.jp/dp/4274066428/ ・「Ruby Way 第2版」(脱初心者向け) www.amazon.co.jp/dp/4798115339/ ・ 「Rubyクックブック ―エキスパートのための応用レシピ集」(脱初心者向け) www.amazon.co.jp/dp/4873113245/ 以下の本は言語作者が書いた最新本ですがとりあえず初学者向けではありません。 ・「プログラミング言語 Ruby」(言語として深く知りたい人向け) www.amazon.co.jp/dp/4873113946/
3 名前:非更新 mailto:sage [2010/12/11(土) 15:48:12 ] Ruby 公式・非公式便利サイト2009 ・Ruby Home Page 【公式、お役立ち度が微妙】 www.ruby-lang.org/ja/ ・Rubyリファレンスマニュアル 【検索機能休止中、Googleなどの併用を】 www.ruby-lang.org/ja/man/ www.ruby-doc.org/ 【詳しい英語版】 ・HTMLヘルプ版リファレンスマニュアル配布さん 【Windowsで便利、検索も無論可能】 elbereth-hp.hp.infoseek.co.jp/ruby.html ・Programming Ruby - The Pragmatic Programmer's Guide 【好評書籍の初版がネットで、ただし英語】 www.ruby-doc.org/docs/ProgrammingRuby/ ・Rubyist Magazine - るびま 【ライブラリ紹介などの読み物、過去のコードレビューは一読の価値あり】 jp.rubyist.net/magazine/ ・逆引きRuby 【やりたいことから探すWiki、最近元気ないので編集者募集】 www.namaraii.com/rubytips/ ・はてなキーワード > Ruby 【うっかりどっさりまとまったリンク集、説明なし】 d.hatena.ne.jp/keyword/Ruby ・RubyForge 【○○をやりたい管理されたライブラリを探すならここ、英語】 www.rubyforge.org/ ・GitHub 【○○をやりたいコードをとにかく探すならここ、英語】 github.com/ ・日本Rubyの会 【最近はオフライン勉強会の寄り合い場と化しているので近くで勉強会があれば】 jp.rubyist.net/
4 名前:最新スレに更新 mailto:sage [2010/12/11(土) 15:49:12 ] ●関連スレ 【RoR】Rubyについて Part 41【CPAN vs RubyGems】 hibari.2ch.net/test/read.cgi/tech/1281473294/ ●Railsスレ 【RoR】Ruby on Rails Part11 hibari.2ch.net/test/read.cgi/php/1292032736/ ●アンチスレ Rubyについて(アンチ専用) Part004 pc12.2ch.net/test/read.cgi/tech/1249737531/ ●Windows用スレ 【ActiveScript】RubyをWindowsで使うスレ【GUI】 pc12.2ch.net/test/read.cgi/tech/1155031689/ ●GUIの使えなさを堪能するスレ Ruby で GUI するスレ pc12.2ch.net/test/read.cgi/tech/1269609576/ ●ぶん投げスレ Rubyの宿題教えてください。2限目 pc12.2ch.net/test/read.cgi/tech/1200175247/ ●前スレ Ruby 初心者スレッド Part 39 hibari.2ch.net/test/read.cgi/tech/1287623173/ Ruby 初心者スレッド Part 38 hibari.2ch.net/test/read.cgi/tech/1282781922/ Ruby 初心者スレッド Part 37 hibari.2ch.net/test/read.cgi/tech/1274121477/
5 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 15:50:30 ] ポニーテール 乙
6 名前:まとめて短く、ASRのURL更新 mailto:sage [2010/12/11(土) 15:51:15 ] 【バージョンに関するよくある流れ】 Ruby 1.8.5(非安定板)→ Ruby 1.8.6(旧安定版、長期政権)→ Ruby 1.8.7(超お勧め) Ruby 1.9.0(旧開発版)→ Ruby 1.9.1(旧1.9系列安定版)→ Ruby 1.9.2(1.9系最新安定版) 実のところ、よくできた教科書またはトラブル時に聞き倒せる師匠がいるなら 1.9.2 から入っても特に問題はない 1.9.2ユーザーの場合は「1.9.2使ってます」と断った上で質問してほしい由 【Windows版に関するよくある疑問】 初心者の人はとりあえず ActiveScriptRuby の 1.8.7 使っておけば間違いない(mswin32) ttp://www.artonx.org/data/asr/ の題字のでかい 「ActiveScriptRuby 1.8.7(pなんとか) with-winsock2 tcl-stub」 マニュアルはWebで見ることもできるが手元にあると便利、1.8.7 の HTML ヘルプ版が ttp://www.ruby-lang.org/ja/documentation/ の「Rubyリファレンスマニュアル刷新計画 chm版 1.8.7用」 夢のお告げ等、何かの間違いで Ruby の知識がない初心者時代から 1.9.2 を使いたいマゾい人は ttp://www.artonx.org/data/asr/ の「Ruby-1.9.2-p数字 Microsoft Installter Package」 「Windows版Ruby」として紹介されることのある以下の「RubyInstaller」は これ特有のトラブルの修復知識が必要なので今のところは初心者には勧めない(mingw32) ttp://rubyinstaller.org/ このトラブルを回避できるようになったら初級者脱出かも
7 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 15:52:23 ] てんぷれおわり
8 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 18:54:45 ] このスレッドは天才チンパンジー「アイちゃん」が 言語訓練のために立てたものです。 アイと研究員とのやり取りに利用するスレッドなので、 関係者以外は書きこまないで下さい。 京都大学霊長類研究所
9 名前:デフォルトの名無しさん [2010/12/11(土) 20:45:54 ] Chris pine氏のサイトを一通り読んでプログラムを書いた程度のものです。 rubyはweb開発に使われていると聞きます。 出力や入力、関数などについては分かったのですが どうやったらrubyとweb開発を繋げることができるのか分かりません。 rubyとweb開発を繋げて考えるには何をするべきなのですか?
10 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 20:46:34 ] Webサーバーからつくれます
11 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 20:55:14 ] 9じゃないけどWebで使えるのってJavaScriptだよね。 どうやってあそこにRubyで書くの?
12 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 20:56:58 ] 書けません
13 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 20:58:14 ] >>9 まずは「ruby web開発」でググるところから始めてみては? いや煽りじゃなく真面目に
14 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 21:01:35 ] >>11 JavaScriptはクライアントで動くものです。 RubyでWebアプリケーション開発、という場合にRubyを使うのはサーバ側です。
15 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 21:01:44 ] Ruby ビギナーのための CGI 入門 【第 1 回】 初めての CGI プログラム jp.rubyist.net/magazine/?0011-CGIProgrammingForRubyBeginners
16 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 21:08:03 ] RubyのWebアプリでこんな事をしたいんです ttp://www.nicovideo.jp/watch/sm5630363
17 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 21:16:19 ] それはWebアプリというよりもRIAだから。 そういうことやるための環境が整備されてない言語では無理。 Java FXかAdobe FlexかMicrosoft Silverlight(かMono Moonlight)でやんなさい。
18 名前:デフォルトの名無しさん mailto:sage [2010/12/11(土) 21:16:53 ] >>8 Webブラウザ === Webサーバ (Apacheなど) === Ruby 1. Web ブラウザが Web サーバにドキュメントを要求する。 2. Web サーバはリクエストされたドキュメントを Web ブラウザに返す。 このとき返すドキュメントは既に用意されていた静的なものでもいいし Ruby にその場で作らせた動的なものでもいい。 CGI の場合は Web サーバと Ruby は別個のプロセスであり 標準入出力と環境変数で情報をやりとりする。 それだと遅いので Web サーバに Ruby を組み込むこともある。 で、ここまで書いてから Wikipedia の CGI の記事がよさげってことに気づいたってオチ ja.wikipedia.org/wiki/Common_Gateway_Interface
19 名前:18 mailto:sage [2010/12/11(土) 21:18:08 ] アイちゃんにレスしてた…漏れはもうだめだ
20 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 00:09:38 ] ちょいと質問 gem入れるときにコンパイル必要なものがこける linuxだとそういうのを入れるためのコンパイル環境は簡単に入れられる。 (ubuntuならapt-get install buildeessentialとかそういうの) Windowsだと、mingw32版ならdevkitいれればいいよね? mswin32版の場合どうすんの? コンパイル済みのものが別途用意されてる場合もあるけど、 なら最初からgemにプラットフォーム指定していれとけやっていつも思うんだけど
21 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 00:12:30 ] apt-get install build-essential だった
22 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 00:20:32 ] >>16 それってWebアプリなのか・・・ Adobe AIRみたいなものだよな? JavaFX相当のことはJRubyじゃできないんだっけ? どうしてもRubyでやりたいというのは「Rubyに慣れてきて何でもRubyでやりたい」という意味以外ない気がするんだが、 AIRのようなRIAなフレームワークならTitanium Desktopというのがある まだ使われているのは殆ど見ないが
23 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 00:24:14 ] gem パッケージの提供者が現在使用している Ruby に対応したバイナリを提供していない場合、 自分のマシンのコンパイラが走るようになってる gem パッケージ作者がバイナリパッケージを提供していなくて、 自分の使用している Ruby が mswin で、 自分のマシンに VC 6 がインストールされてない場合、その gem パッケージは使用できないだろうね それでもどーしても使いたい場合は コンパイル環境を用意した上で、それでコンパイルされた Ruby をインストールしてないと駄目 実質的に mingw ruby + devkit (または mingw コンパイラ一式別途導入)しか選択肢がないけど… コンパイラがインストールされてない安全に倒した Linux サーバとかでも同じ問題が実は起こる そういう場合、Linux のソフトウェアパッケージで gem パッケージ相当が用意されてたりもする
24 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 00:36:58 ] >>23 うむ、すごいそれっぽい
25 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 00:59:39 ] バイナリ互換性はある migw32 向けに適切にコンパイルされた拡張バイナリは、mswin32 でも使用できる…ということになっている VC6 がないなら MinGW というか GCC でコンパイルしてしまえばいい rubygem は作者が登録しているバイナリパッケージしか探さないので 作者がmswin32名義のバイナリパッケージ(中身はmingw32製)を用意し忘れてた場合 gem install hogehoge という書き方ではインストールできないことがある mswin32 名義のバイナリパッケージ入れてーとgem作者にメールでもするのが一番早い
26 名前:20 mailto:sage [2010/12/12(日) 01:12:35 ] Ruby本スレに丁度同じ話題が出ていたのですね hibari.2ch.net/test/read.cgi/tech/1281473294/693-695 693 名前:デフォルトの名無しさん[sage] 投稿日:2010/12/11(土) 12:25:29 windows用のバイナリがいろいろ出てるけど それぞれの特徴とか利点欠点教えて Ruby Install Guide::Microsoft Windows版のビルト環境による違い に書いてあること以外で 694 名前:デフォルトの名無しさん[sage] 投稿日:2010/12/11(土) 14:46:28 >>693 mswin … ttp://www.artonx.org/data/asr/ VC6 でコンパイルされたもの、ActiveScriptRuby、メイドインヒゲのオヤジ、配布パッケージは豪華で便利 昔から「Windows版」として扱われてたので、どんな gem でも tips でも Windows 環境だと思ってくれる(mswin32) VC6 が基本入手不可なので緩やかに終了して mingw にバトンタッチされる予定だったのだが延命中、初心者向け mingw … ttp://rubyinstaller.org/ MinGW でコンパイルされたもの、RubyInstaller、世界の選択、配布パッケージは Ruby 本体のみ 数年前から「Windows版」として認知され始めたもの、名前は mingw や mingw32 を返す RUBY_PLATFORM =~ /mswin/ という古い「Windows環境チェック」記述では false になるという初心者トラップ発生器 devkit で gem ソースを自前コンパイルしたり Windows チェック処理を自力書き換えしたりする必要がまだ時々ある mswin よりはファイル IO とかが普通速度らしいので上記のライブラリ使用時の障害を自力克服できる中級者向け cygwin … cygwin 環境でコンパイルされたもの、cygwin 常用者向けのマニアック Ruby なんでも自分でできる人向けの選択、外野がどうこう言うことではないのでおまえらも文句言うな的な似非上級者向け
27 名前:20 mailto:sage [2010/12/12(日) 01:15:38 ] >>23 さすがにVC6はww Ubuntuでもインストール直後はコンパイルできませんね >>25 バイナリ互換性はあるんですね mswin32名義でも中身はmingw32なんですかw
28 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 11:17:35 ] hoge-1.2.3-x86-mingw32.gem みたいなファイルを直接拾ってきて gem install すると mswin32 でも入るはず gem install --source なんとか でなんとかの部分に mingw32 のを書いても代わりに持ってきてくれるはず
29 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 15:11:17 ] rails2u.com/projects/refe.vim/ が落ちているのか、もう配布していないのか??
30 名前:デフォルトの名無しさん [2010/12/12(日) 15:28:25 ] 変数名を取得する方法はありますか? x=232 def f(func) ... end p f(x) => "x"
31 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 15:54:34 ] 何がしたいんだかよくわからないけど。 その f って、たとえば f(1) のように呼び出したら何を返すの?
32 名前:デフォルトの名無しさん [2010/12/12(日) 15:57:25 ] funcって書いたのがまぎらわしいですね。 foo=232 def f(bar) ... end p f(foo) => "foo" f(1)は未定義ということで。
33 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 16:00:25 ] puts (1..4).to_s って、"1..4"と出力されるけど、これって意味あるの? "1234"と返ってきたほうがまだ使い道ありそうだけど、どういう使い方が想定されてます?
34 名前:デフォルトの名無しさん [2010/12/12(日) 16:02:08 ] てか、たしかに関数として書くとわけわかんないですね。 barには232が渡されるだけだから変数名なんて知らないか・・・。 単に foo=232 という定義済みの変数があったとき、 後で "foo" という文字列を取り出したいだけなんですが・・・。
35 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 16:07:51 ] local_variables や global_variables などいかがでしょう
36 名前:デフォルトの名無しさん [2010/12/12(日) 16:20:11 ] >>35 それいただきました。 しかしわりと面倒ですね・・・。
37 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 16:24:00 ] >>33 1..4がRangeだし、俺はto_sで1..4でいいんじゃね?って思うし開発者の意図と一致したけど 何で"1234"がいいと思った? "1234"が得たいだけなら [*1..4].to_s ででるけど、結果的だしな
38 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 16:36:50 ] >>33-37 それを言うなら、何で[1,2,3,4].to_sは”1234”になるんだよ、"1,2,3,4"じゃないんだよって話にもなる
39 名前:デフォルトの名無しさん [2010/12/12(日) 18:13:08 ] irb(main):001:0> [*1..4].to_s => "[1, 2, 3, 4]" (´・ω・`)
40 名前:33 mailto:sage [2010/12/12(日) 18:16:18 ] いや、得たいわけじゃなく、なんでそうなってるのか疑問だったので。どんな使い方があるのかな?と 得たいだけなら、(1..4).to_a.to_sする
41 名前:デフォルトの名無しさん [2010/12/12(日) 18:23:00 ] >>33 (1..1_000_000_000_000_000_000).to_s とかしてぎっしり詰まったのが返って きたら泣く。 まぁそれだけならArrayとかも巨大だとそうなるんだけどさ、Rangeは両端 しか保持してないんだし、両端だけが文字列に表れるのは妥当だと思うよ。
42 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 18:24:17 ] >>40 eval したら to_s のレシーバが復元できるからじゃまいか Ruby の場合他のクラスもそうなのかは知らない
43 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 19:05:05 ] >>42 それは String#dump の「表示されても人間が読めないコントロールコードなどを数値で表示する」機能だな まあ文字列オブジェクトではないものを display するとはそもそもなんぞやという話はあって、 Ruby では「文字列形式への変換」を to_s が、「人間が読める形式への変換」を inspect が司ってる んで関数的メソッド puts や print は to_s を、関数的メソッド p は inspect を呼ぶ そのクラスの製作者が「このクラスのオブジェクトの文字列的表現は○○だ!」と決めたのがto_sで返る つまりRangeを作った人が考えるところの「Rangeオブジェクトの文字列的表現」が "(初端..終端)" なのだろ これは inspect も同じだ(p で表示するのもこの形式で充分だと思ったのだろう) あと Range オブジェクトは>>41 の言うように両端しか持ってないので、 「途中を具現化」したものはRangeオブジェクトじゃない別のものになるよ [1,2,3, 5,6, 8] という配列を puts して [1-3, 5, 6, 8] って勝手に省略されてたらムキーだろ 「中身」が欲しい場合はユーザーが手作業で行う
44 名前:デフォルトの名無しさん mailto:sage [2010/12/12(日) 19:07:55 ] どや顔でそんなこと言われても困るYO
45 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 06:08:53 ] ライブラリのファイル名やGemパッケージ名に関しての標準的なルールを教えてください。 Railsを参考に仕様としましたが、activerecordだったりactive_recordだったりしてよくわかりませんでした。
46 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 07:52:58 ] >>45 gem の名称は基本的にアンダースコアで区切る active_record が現代的(いや、1語の造語とみなすという運用もあるけどさ) そして、アンダースコア区切りをキャメルケースしたもの(ActiveRecord)の名前か アンダースコア区切りから容易に関係性を想定可能で他と被らないような名前の module で全体を包む require 'active_record' と、アンダースコア区切りの gem 名はそのまま require に書けるようにする ハイフンで foo-bar-baz と区切ることもあるが、 これは Ruby での Foo::Bar::Baz の対応と近似してることが望ましく、また、 Foo というクラスやライブラリが既にこの世に存在していることが望ましい net-http-persistent なら Net::HTTP::Persistent というクラスなりモジュールなりの階層が存在して欲しい 自作のライブラリのクラス構造を gem 名にハイフン区切りで反映することは避けたほうがよい require 'net/http/persistent' と、ハイフンを / に変えただけで require に書けるようにする あと、gem 名の中に大文字使う奴は死刑 require するとき大文字で書くべきか小文字のままでいいのか迷うじゃないか というようなことが ttp://blog.segment7.net/articles/2010/11/15/how-to-name-gems に書いてあったり書いてなかったりする
47 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 11:31:53 ] 自作Matrixクラスに16個の配列をセットする場合、どう書くのがいいですか。 m = MyMatrix.new として (1) m.set [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] (2) m.set = [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] (3) m.matrix = [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1] (1)は他との兼ね合いで×(2)も変だし(3)かなと思うのですがどうでしょうか。
48 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 11:40:22 ] 16個の配列でMatrixへの代入ならcolomnsかrowsだろ と思ったがそういう話ではなかった マス目という意味でのマトリックスなのね newになにもないならnewの引数にするのが普通だと思う
49 名前:47 mailto:sage [2010/12/13(月) 11:42:33 ] >>48 後から値を変える場合はどう書くのがスタンダードですか?
50 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 11:52:42 ] mydata[x, y] = new_elem MyMatrixとやらの中でデータがどう扱われているかによるだろ、そりゃ >>48 の一行目で結論にならなかったことからして配列の配列が入ってるデータではないんだろうけど ふつうは「この配列は何のデータか」を考えて、 データ配列ごと引数で指定する方法なのならそれの名前をもつ writer なメソッドにすると思う mydata.nanika = [16桁] みたいな
51 名前:デフォルトの名無しさん [2010/12/13(月) 11:57:43 ] 16個と書いてあるけど実は1×16でも16×1でもなく4×4の正方行列の意味?
52 名前:47 mailto:sage [2010/12/13(月) 12:37:23 ] いや一般的に代入は「何とか」=ですよね? MyMatrixのように「何とか」が自明でないときは、どうすればいいかという話です。 例えで出しただけなのでrowとかcolumnとか言われても困る。
53 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 12:57:26 ] MyMatrix という名称と配列代入という行為である程度データ構造が自明だと思える人々 >>48 >>50 >>51 MyMatrix という名称や配列代入という行為は一般的過ぎて何も想起されないと思っている人 >>47 という差のような気もする
54 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 13:00:15 ] 普通は内部でデータを保持するインスタンス変数と同名のメソッドを使うべきだと思うんだが たぶんインスタンス変数名をどうすればいいですかという質問になりそうな気もするな 既存のデータ系のクラスと同じような動作にしておいて、同じ名前のメソッド使うというのはどう
55 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 13:04:22 ] たぶん配列代入もただの例で、配列には意味がないとか言い出すに一票
56 名前:47 mailto:sage [2010/12/13(月) 15:25:47 ] もういいです。聞くだけ無駄。 ありがとうございました。
57 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 17:11:08 ] 要領をえない質問、情報後出しで右往左往、 捨て台詞吐いて逃亡か。最悪だな。
58 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 18:31:01 ] 釣られたみなさんご愁傷様
59 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 21:14:33 ] >>46 ActiveRecordのgem名は「activerecord」だから、ちがうんじゃない? それからそのサイトの説明だと > If you're adding functionality to another gem use a dash. とあるから、既存のgemに機能をつけたす場合にダッシュ(ハイフン)を使えとあるから、そう説明しようよ。
60 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 21:43:53 ] Rubyで統計を扱うライブラリの定番は何ですか?
61 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 21:47:54 ] >>60 とくにないです 自分の使い慣れた統計システムのRubyバインディングとか探してください
62 名前:デフォルトの名無しさん mailto:sage [2010/12/13(月) 22:24:59 ] >>61 なるほど、バインディングですか これから始めるため使い慣れた統計システムは特に無いので R使ってやってみます。ありがとう
63 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 00:26:20 ] BaseクラスのメソッドをDeriveクラスで上書きした時にBaseの方の関数を呼ぶにはどうすればいいですか。 d = Derived.new d.hello で基底クラスの方のhelloを呼びたい。
64 名前:デフォルトの名無しさん [2010/12/14(火) 01:00:42 ] 定義に先立って別名を付けておく。 class Derived alias base_hello hello def hello; end end Derived.new.base_hello あと、Derivedなんていう用語を使うのはC++くらいじゃね?
65 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 01:03:24 ] d = Derived.new Base.instance_method(:hello).bind(d)[] とか?
66 名前:63 mailto:sage [2010/12/14(火) 01:31:01 ] 簡単な方法はないか…C++ならこれで一発なのに d->Base:: hello (); d->Derived:: hello (); どうするか考えます。
67 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 10:46:01 ] FooクラスにFoo#to_sを定義しても puts "Foo = " + foo が、 TypeError: can't convert Foo into String になるのはなぜ。 Stringに変換するために必要なメソッドは?
68 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 10:54:36 ] >>67 to_sを明示的に呼ぶ Rubyは原則として暗黙の型変換のような振る舞いはしない puts "Foo = " + foo.to_s
69 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 10:59:45 ] >>67 puts "Foo = " + foo は "Foo = " + foo したものの返り値を puts メソッドに渡してる "Foo = " + foo の時点でエラーになるはず 一応、 String#+(other) は other#to_str を呼んでいるので Foo#to_str を Foo#to_s のエイリアスにでもしておけばいいんだが、 より現実的には>>68 だと思う
70 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 11:04:25 ] ちなみに "#{うめこみ}" の形式を使用すると to_s の定義だけで用が済む >>67 は Foo クラスに to_s と to_str の 2つのメソッドを要求してるのだな irb> class Foo; def to_s; "FOO!"; end; end irb> puts "Foo.new is #{Foo.new}" Foo.new is FOO!
71 名前:67 mailto:sage [2010/12/14(火) 11:17:32 ] >>68-70 理解しました。to_sとto_strの2つのメソッドを定義しないといけなかったのですね。 似たような名前の関数を2つ提供するのは微妙だからto_sだけにしておきます。
72 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 11:42:35 ] to_str は「このオブジェクトは String オブジェクトのように扱ってよい」の印 to_s は「このオブジェクトを文字列で表現するとこうなります」の意味 不用意に to_str を定義してはならない to_str の部分でエラーが出ない = このオブジェクトは String 互換 という風に判断されるから obj.kind_of?(String) && obj.to_s のようなもんだと思ってくれ
73 名前:デフォルトの名無しさん [2010/12/14(火) 12:34:04 ] 1.9 では Pathname#to_str がなくなって、代わりに to_path が出来てるんだな。
74 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 13:02:57 ] >>73 あのへんはいろいろ揉めたらしいね to_str 自体が「既存の標準ライブラリに迎合する動作」としての使われ方をしてたから
75 名前:デフォルトの名無しさん [2010/12/14(火) 15:37:02 ] 質問です。 Ajax アプリケーションを作成中で、サーバーサイドで Ruby 1.8.7 を使用しています。 クライアントサイドから Get で 〜〜.rb に引数つきでアクセスしようとしています。 (たとえば「〜〜.rb?No=〜&Name=〜」のようなかんじで) しかし、Ruby 側でその引数(No=〜&Name=〜)を取得する方法も、 クライアントサイドに値を返す方法(クライアントで .responseText で取得するやつ)もわかりません。 どうやったらよろしいでしょうか? 馬鹿馬鹿しい質問なのだとは思いますが、教えてください。お願いします。
76 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 16:15:14 ] >>75 そもそも現状の Ajax アプリケーションは Web アプリケーションの最終進化形態のひとつだ (まあ、いろんな意味で) サーバサイドとクライアントサイドと通信手段の基礎となる知識をすべて吸収した上で応用するという形になる CGI 作ったことがないなら、たぶん無理だと思う 素直に Ajax 連携に定評のある他の言語使ったほうがいいんじゃないかな
77 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 16:42:31 ] Railsスレで聞けば別の回答が返ってくる説に一票
78 名前:デフォルトの名無しさん [2010/12/14(火) 16:54:00 ] >>76 そうですか…そんなにハードルの高いことだったのですね…。 かなり軽く考えていたかも知れません…。 しかし、心からの親切心でそう言っていただいていると思うので 大変恐縮なのですが、私にも事情があり、どうしても諦めるわけにはいかないのです。 ほんとうにありがとうございます。 >>77 そうなんですね。 しかし今から全く未経験の Rails に手を出す余裕は無いのです。 どうもありがとうございます。
79 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 17:14:35 ] Rubyでやらないほうが早いって言われてるのに
80 名前:デフォルトの名無しさん [2010/12/14(火) 17:34:50 ] >>79 誤解させてすみません。 どうしても Ruby を使わなければならないのです。 自分もできたら他言語でやりたいっす…。
81 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 17:42:54 ] CGIだったら環境変数。Ruby関係ないよ
82 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 17:44:59 ] >>80 迷える子羊のために三択を用意した 1. Ruby標準添付のCGIモジュールについて調べる でもってローカルにApacheでも立ててクエリ文字列とPOSTの内容と 環境変数をダンプできるCGIを作って動作するところまで頑張る そこまでいければなんとかなる 2. 諦める さあ選んでくれ
83 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 18:03:40 ] 第三の選択肢は↓
84 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 18:10:40 ] 中途半端な知識でAJAXなんて脆弱性垂れ流すに決まってる ちょっと考え直した方がいい
85 名前:子羊 [2010/12/14(火) 19:01:23 ] >>82 「1.」の一択でお願いします。早速学習を始めます。 いちおう Apache はローカルにインストールしてますが、Apache に関する知識は皆無です。 環境が Windows でブラウザで 「http://コンピュータ名/htdocsフォルダに置いてあるファイル名」という アドレスにアクセスすることでそのサイトにアクセスできる状態にしています。 それで参考にお聞きしておきたいのですが、 「クエリ文字列とPOSTの内容と〜〜動作するところまで頑張る」という部分は CGI モジュールについて学習すれば理解・実現できる内容ですか? それとも Apache に関する書籍なども購入して学習する必要がありますか? ほんとうにありがとうございます、救われた思いです。 とりあえず CGI モジュールについて学習します。一生懸命頑張ります。
86 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 19:33:19 ] Ruby案件可ってことにして受注しちゃったのか?
87 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 19:53:41 ] >>86 ていうかプログラミングに対する知識と経験が絶望的に足りないと思われ 「ふつう」の知識と経験があるなら>>75 の場所では詰まらないと思うの Ajax とは、みたいな説明や適当な Ajax の解説やサンプルを読んである程度理解したなら Ajax として目新しいところとそうでないところの判断くらいはついて欲しい つまりはこの人「何も作ったことがない」んだと思うよ 運転経験ない人に長距離夜行トラックでの運送なんて任せられるかw 素直に単純な CGI とかの日曜の自家用車ドライブからはじめろw
88 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 19:55:26 ] HTMLの勉強をする CGIの勉強をする(Rubyで) HTTPの勉強をする JavaScriptの勉強をする Ajaxの勉強をする(Rubyで) こんな順番?
89 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 20:01:38 ] HTML の勉強をする CGI 無関係な Ruby の勉強をする Apache の基本的な使い方を学ぶ CGI の勉強をする(Ruby で) HTTP の勉強をする JavaScript の勉強をする Ajax の勉強をする(Ruby で) こうだろ …なんかめんどくさいな、どうせ表示するデータの取り扱いでも挫折するんだろうし、最初から Rails にするか なんか、動作が遅いですとか言われそうな気もするが でも、Rails が本番サーバで動作するかどうかのチェックも要るな 安価なレンタルサーバだとまともに動かなかったりするし
90 名前:デフォルトの名無しさん [2010/12/14(火) 20:45:55 ] なんか悲しい流れになってきたな。しゃあない面も大きいとは言え…。
91 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 20:45:57 ] よその会社に丸投げで発注したほうがいいと思う
92 名前:デフォルトの名無しさん [2010/12/14(火) 20:50:42 ] >>89 HTMLに関しては何がわかってないの?この人
93 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 20:53:32 ] そこそこに「わかってる」なら適宜飛ばしていいだろそりゃ 単に要素を列記しただけだと思うぞ >>90 そもそも「カンタンにWebアプリを作成!」というのが幻想というか妄想なので… 情報商材みたいなもん
94 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 21:07:51 ] というか質問は * クエリ文字列の取得 * XMLHttpRequest#responseTextの取得 これだけなのになんでここまで盛り上がれるのん 後者はRuby関係ないからスルーとして 前者はcgi.params, cgi.query_string, ENV['QUERY_STRING'] その他フレームワークの類似機能を使用する、で終了じゃない
95 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 21:13:34 ] 悲しげなフレーバーを嗅ぎ取ったから
96 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 22:10:21 ] >>75 ほかの人のアドバイスと被る部分もあるが まずは、Rubyで簡単なCGIスクリプトを作るといい 内容はHelloWorldレベル(簡単なメッセージ表示くらい)で十分だ 作り方は検索したらいくらでも出てくるし、>>94 のアドバイスも参考になる ブラウザ上からそのCGIスクリプトにアクセスして、画面表示ができたら AjaxでそのCGIスクリプトにアクセスして CGIの出力を持ってくる(JavaScript側で出力を受け取る)ところまでやる ここまでできれば、後は応用でなんとかなると思う
97 名前:デフォルトの名無しさん mailto:sage [2010/12/14(火) 23:47:25 ] どう考えても仕事じゃないだろ あとrails勉強した方が結果的には最短距離かと
98 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 00:40:41 ] Rubyやってる人が最短でできるのがrailsってイメージが自分はあったけど、 最近(っても古いか)の騒ぎ立てでRails使わないのにRubyやってんの?ってのが嫌。
99 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 01:08:38 ] Railsを使わないRubyのWebアプリってやっぱイマイチなの? CGI部分もあまり出来が良くないって聞くよね 素直にPHPでやったほうがいいのかな
100 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 01:11:32 ] cgi.rb使うぐらいならsinatra使った方がいいよ と話をややこしくしてみる
101 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 01:42:53 ] >>99 Rubyで書けます これがメリットだと感じないならRubyでWebアプリケーション作るのやめたほうがよい いやかなりマジで
102 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 01:44:35 ] >>75 >>82 にはSinatraに一票入れたいところだが、次に>>75 は レンタルサーバーでSinatraが動きません (もしくはめちゃめちゃ遅いです、使い物になりません) と言ってくるので、cgi.rbでよいと思う。
103 名前:102 mailto:sage [2010/12/15(水) 01:47:30 ] >>101 池上「いい提案ですね」
104 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 02:25:23 ] 前スレでirbで落ちると言っている人いたよね? rbreadline.rbを使っているRuby使っている人かもしれない。 readlineがライセンスの問題があるためRubyでreadlineを実装しようとしているもののようだけど、 Windowsでは日本語が入力できなかったり、行を編集しようとすると遅かったりどうにかすると落ちたりするなこれは pikでRuby 1.9を入れるとrbreadlineが標準添付されたRubyが入るのだが、これだと実質irbが使えないな
105 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 03:00:26 ] ActiveScriptRubyのバージョンを1.8.7から1.9.2に上げたら、 irb上で上下カーソルの入力履歴がでなくなりました。 これないとめっちゃ不便なんだけど、どしたらよいの?
106 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 03:09:47 ] rlwrapを入れる
107 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 06:17:24 ] >>106 あなたが神か?
108 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 08:20:47 ] >>106 ありがとうございます。 これは大変良さげなのですが、Windows用バイナリは何処に? cygwin入れてコンパイルするしかないかな。
109 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 08:23:53 ] Sinatraってデプロイとか簡単?
110 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 09:53:19 ] >>108 ttp://www.cymric.jp/maxima/maxima-winxp.html のサイトでこっそりと cygwin-rlwrap-0.30.zip っていうファイルがあるみたい
111 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 10:25:33 ] >>109 デプロイだけならHerokuは簡単 ただし動作環境にクセがある。 動作環境が満たされるなら遊びのちょっとしたものなら無料の範囲で作れるし、 そうでないなら金払えるなら、サーバー管理の手間かからないしいいんじゃね? Google App Engineもデプロイだけは簡単だけど死ぬ VPSでの動作ならRails並に簡単、いつもの慣れた環境をつくってデプロイできる。 え?・・・このレスに有益な情報がないって?
112 名前:デフォルトの名無しさん [2010/12/15(水) 10:52:13 ] >>75 です。 みなさん、たくさんの親切なアドバイス、ほんとうにありがとうございます。 みなさまからいただいたアドバイスを参考に学習・開発を進めてまいります。 >>87 おおむね、おっしゃるとおりでございます。 Web アプリケーションの作成は今回が初めてでわからないことだらけです。 >>96 も仰ってあったとおりまずは素直に単純なところから始めようと思います。 ご親切にありがとうございます。 >>88 >>89 参考になります。>>93 のおっしゃるとおり、 その中からわかってない部分を適宜拾い集めて学習させていただきます。 ありがとうございます。 >>94 ありがとうございます。 お陰さまで何とかなりそうな気がしてきました。 参考にして調べてみます。 >>96 まず単純なことから試してみます。 基本ですよね、視野が狭くなって忘れていました。 親切なアドバイスが身にしみました、ありがとうございます。
113 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 12:58:49 ] さくらVPSとかカゴヤ・クラウド/VPSとは月1000円もしないんだからそっちで
114 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 14:04:34 ] WPFでこのように”1行”で書いたコードを Rubyならどうやって書くの? <WebBrowser Source="http:..."/>
115 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 14:11:50 ] >>114 重複 ttp://hibari.2ch.net/test/read.cgi/tech/1287623173/882
116 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 14:13:24 ] 重複だからどうなんだ? 回答がないし、スレ落ちてるから質問しているんだが それがだめな理由でもあるのか?
117 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 14:20:13 ] C#は知っててもWPF知ってる人がいないから回答がこないんじゃね あきらめれ
118 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 14:23:52 ] ていうか処理層違ってどうにもならんし話も膨らまんからガチスルーされたのだろ 回路図示して、Rubyで炊飯器のタイマー起動するにはどうすればいいですかみたいな話に近い
119 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 14:25:14 ] なかなかうまいことを言う
120 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 14:26:57 ] WPFで1行でできることがRUBYだとできないの? WEBに強いんでしょ?
121 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 14:48:43 ] そんなこと言われましてもIEがWPF/XBAPを解釈して実行しているものをどうしろと
122 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 14:50:11 ] PHPのほうがよりWEBに強いと思いますのでPHPの人に同じように質問して、 嫌われるといいと思います。
123 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 14:57:58 ] WPF + MSBuild + Silverlight vs. Chrome OS + Native Client + Go 世田谷区民会館ぐらいなら埋まりそうなカードだな
124 名前:デフォルトの名無しさん [2010/12/15(水) 15:19:59 ] >>120 勝手にWEBに強いことにしないで欲しいな。
125 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 15:26:28 ] じゃあもっと簡単なところで <Button/> たったこの1行でボタンが配置できますが Rubyだとどうするんですか?
126 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 15:30:38 ] >>125 InternetExplorerが公式にRubyをサポートしてからまたおいで あなたはクライアントとサーバサイドの区別がついていない
127 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 15:32:22 ] バカは放置すべき
128 名前:デフォルトの名無しさん [2010/12/15(水) 15:33:31 ] 幼稚園児の屁理屈みたいで 見てて微笑ましかったのだが
129 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 15:33:59 ] >>125 再現してみるからLinuxで動くコードちょうだい
130 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 16:04:08 ] 前スレから出没してるアレな人でしょ どうにかしてRubyを馬鹿にして悦に浸って苦しい日常生活から現実逃避したい低レベルなプログラマさん kill myselfをお勧めします
131 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 16:17:37 ] バカは放置すべき
132 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 16:22:48 ] コードで示せないあなたたちがバカではなくて?
133 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 16:25:36 ] しかしみんな構っちゃうw
134 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 16:53:00 ] Rubyなら print "<Button/>" でいいんじゃないの?
135 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 17:51:21 ] >>134 >>125 はおそらくHTMLじゃないぞ
136 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 18:03:48 ] XAMLだね 静的にコンパイルするとb = Button.newみたいなコードが得られる 動的にロードするのならIronRubyでも出きるだろう
137 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 18:15:33 ] >>132 kill myself
138 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 18:24:41 ] こんな動作をRubyで一行でできる? Array.ForEach(files,f=>Console.WriteLine(f));
139 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 18:27:01 ] できるって言ったらなんなんだろうね できてないって言って追っ払っちゃおうか 面倒だし
140 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 18:28:10 ] やめろおいそれはRubyの得意分野だ
141 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 18:29:11 ] >>138 できません あなたの勝ちです では他の人次の質問どうぞ
142 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 18:55:17 ] そういや、Ruby1.9.1 系統の open-uri は open の引数に文字エンコーディング情報をくっつけると その値に force_encoding して返してくれるぞ、という話を前スレでしようと思ってたらスレが終わってた irb1.9> p open("www.2ch.net/ ").read.encoding #<Encoding:ASCII-8BIT> irb1.9> p open("www.2ch.net/ ", 'r:Windows-31J').read.encoding #<Encoding:Windows-31J>
143 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 19:04:19 ] force_encodingはエンコード情報だけを強引に書き換えるメソッドなのだが
144 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 19:19:14 ] >>143 はたぶんわかってない
145 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 19:28:54 ] 中身が EUC で、force_encoding 'UTF-8' しただけじゃまずいわな。
146 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 19:45:19 ] そもそも前スレでどんな話してたかを知らないと頓珍漢なレスに > それは Net::HTTP の仕事ではないというかそんな根底部分で余計なことすんなということらしい > open-uri ならヘッダの Content-Type を読んで force_encoding で設定してくれるが、 > > irb1.9> require 'open-uri' > irb1.9> p open("dailynews.yahoo.co.jp/ ").read.encoding > #<Encoding:EUC-JP> > irb1.9> p open("sankei.jp.msn.com/ ").read.encoding > #<Encoding:Shift_JIS> > irb1.9> p RUBY_VERSION > "1.9.2" > > レスポンスヘッダの Content-Type ほど信用ならないものもないのでまあ掛け捨て保険程度
147 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 20:00:13 ] 2次元の範囲ってどう指定してますか。 例えば2次元画像の特定の領域(x,y,width,height)を指定するのに こう書くのは問題ですか。他にもっといい書き方があれば教えてください。 image.pixels[x,y,width,height] = pixels
148 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 20:10:43 ] image.pixels[x1,y1,x2,y2] = pixels そんな書き方してたら座標変換するとき面倒だろ
149 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 20:17:16 ] >>148 あ、いやそれは問題にしてなくて例えば pixels[x..x+width, y..y+height] pixels[[x,y], [width,height]] pixels[x,y][width,height] みたいな書き方の方が良いのかなという話です。誤解させてすみません
150 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 20:19:20 ] 何でpixelの中にpixelsを格納するのか意味不明 colorならわかるが
151 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 20:58:50 ] image内の矩形領域に別の矩形領域pixelsをコピーしてるんじゃないか?
152 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 21:57:32 ] >>146 うん、Content-Type ヘッダの charset を ASCII-8BIT の代わりにセットする代わりに 引数指定の文字エンコーディング名をセットするようにできます、という話だよね
153 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 23:04:09 ] >>151 あのコードがそのように解釈できるのか? どうみても、1pixelに複数pixelを割り当てているようにしか見えないが CopyRect(Rect srcImage,Rect destImage) とかにすべきだろ
154 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 23:17:45 ] image.pixels[x,y,width,height] = pixels 左辺は範囲じゃん ary[start,length] = ary2の二次元版
155 名前:デフォルトの名無しさん mailto:sage [2010/12/15(水) 23:51:03 ] ぐぬぬ…
156 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 00:06:45 ] でもstart, lengthはともかく4つ使ってstart(x), start(y), length(x), length(y)は一般的かな?
157 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 00:15:29 ] 一般的だろ
158 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 01:13:15 ] 気持ち悪い言語だなぁ
159 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 01:54:13 ] >>145 この場合はforce_encodingが正しい
160 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 08:09:45 ] Encoding が BINARY なものに force_encoding で「名前をつける」ことの何が非難対象なのかがわからないな Encoding は nil が許されないから、必ず何らかの名前がついている 文字エンコーディングを特定できない、または特定しないという印が ASCII-8BIT こと BINARY ネット経由のファイル取得でエンコーディングを特定できる情報がないから ASCII-8BIT だったものに force_encoding を使って人間が知ってる情報で名づけてあげることの何がまずいというのか
161 名前:デフォルトの名無しさん [2010/12/16(木) 11:39:38 ] >>75 です。 時間はかかりましたが、やりたかったことができました。 余計かな、とは思いましたがみなさんのご協力がなければ 間違いなく先に進めていなかったので、ご報告させていただきます。 本当に助かりました。ありがとうございました。
162 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 11:42:38 ] 3Dゲームを作りたいのですが どうすればできますか?
163 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 12:27:00 ] スルー推奨
164 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 12:39:54 ] >>162 そういう話題ならマジレスするぜ。 ウィンドウ作成とキー入力、サウンドはqtrubyを使うのが一番簡単。 あとはOpenGLを使ってごりごり書く。 3Dシューティングゲームならこれで作れる(実際に作った)。 ただしそこからPS2レベルのゲームを作るにはかなり努力しないといけない。 表示だけ考えても、そこからモデルのロードとスキニング、アニメーションを自前で実装する必要がある。 これらを実装するのはそれなりに知識と時間が必要。 なので今ちょうどそれらを全部含んだM3Gという携帯電話で使われている3D描画APIを実装して Rubyから使えるようにしている作業の真っ最中。 もう動いてるけど、さすがにまったく知識のない人間には勧められる完成度はない。 とりあえずOpenGLを使って簡単なゲームを作ってみるべし。 ちなみにモデルビュアーのスクリーンショット。これが100%Rubyで書かれている。 この画像ではわからないけどちゃんとアニメーションしている。 www.gazo.cc/up/21983.png
165 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 12:47:44 ] スルー推奨
166 名前:デフォルトの名無しさん mailto:sage [2010/12/16(木) 12:48:36 ] www.nicovideo.jp/watch/sm5630363
167 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 09:34:26 ] >>164 おい、スルーし・・・ ちょw 特定しますた しかし3Dゲーム作るなら、ゲームエンジンのバインディング作ったほ(ry
168 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 09:41:30 ] >>164 のぞかせてもらった。 M3GのAPIの互換実装をつくって、別にRubyのバインディングを作ってるのか。 M3Gって需要あるんかいな
169 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 10:48:18 ] 3DゲーなのにDirectX使わないの?しょぼ
170 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 11:04:06 ] >>169 ではWindowsを移植してください
171 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 12:14:27 ] rubysdl + OpenGL のサンプル試してみたけど PSレベルのものは作れそうだ
172 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 12:19:04 ] Rubyのブロックってもしかして、 「公開関数が2つ以上関数を引数にとるなんてことめったにねぇよ」 って発想が根底にある?
173 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 12:21:19 ] ×公開関数 ○高階関数
174 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 12:33:08 ] >>172 たしかそんなような話は聞いたことがある
175 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 12:58:09 ] >>172-174 MLかどっかのログくれ!! 俺もブロック見たときびっくりした。何で1個なんだよって。 でも意外にif else end (ブロック2つみたいなもの)のようなものを作ることがなくて困らない、 というかそういう作り方になってしまう。 どうしてもやりたければlambdaでいい。 1個の場合は楽。バランスなのかも
176 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 13:02:28 ] 本人が「失敗だった、高階関数を一つ限定にしたのが自分の限界」 みたいなことを言ってた記事を見たことあるが、 なんでもかんでも未来を見通せるわけじゃない。 高階関数を組み入れただけでもすばらしいよ。
177 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 13:20:52 ] 関係はこれかなあ ttp://www.rubyist.net/~matz/20070512.html#p04 > 高階関数を持つ言語(OCaml)のライブラリを精査したところ、 > 2239関数のうち、関数引数を取らないものが87.2%、ひとつだけ取るものが12.1%で、ふたつ以上とるものは0.7%であった。 > ここからわかることは、プログラミング言語は 99.3%を占める高階関数(ブロック)を0または1個とるものに最適化するべきであり、 > めったにない二つ以上ブロックのために、それ以外のものを「ゆがめて」はいけない、ということ。 ttp://itpro.nikkeibp.co.jp/article/COLUMN/20050930/221979/ > もちろん,メソッド呼び出しに1つだけしかブロックを付けられないという制約はあります。 > しかし,実際に複数のブロックが必要になることはほとんどありません。 Ocamlの論文はけっこう引用されてて、 「実利を取って引数1個限定でシンプルにしてたRubyは勘がよい」という評価がいくつかあったはず
178 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 13:30:39 ] 初心者スレだったな Rubyだとたとえば「ブロックが1個限定なのってよく考えたら変じゃね?」という話 def foo(arg1, arg2, &block) end と定義して foo(111,222){|x| ... } と利用するわけだけど、これって def foo(arg1, arg2, &block1, &block2) end と定義して、現行のRuby文法上ではうまく書けないんだがなんか foo(111,222){|x| ... }{|y| ... } みたいに複数ブロック実行できるようにしたとしても別にデメリットはないんじゃね、 複数引数自体は自然だし、いざという時用に用意しててもよくね? という話
179 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 13:59:13 ] >>178 でたでた、良くある初心者ならこれくらいなら理解できるだろうという上から目線。 そもそも高階関数そのものがわからないのに解説して貰ってもねぇ-
180 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 14:02:03 ] 高階関数 defで設定した関数の中で関数を呼ぶもの。 これが1個 def f(g,a) g.call(g.call(a)) end これが2個 def f(g,a) g.call(g.call(g.call(a))) end
181 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 14:12:49 ] 高階関数とはなにか Rubyで高階関数を実現するには lambda, Procとブロックの関係 >>176 の真偽も含めて 今日のRuby初心者スレは盛りだくさんだな
182 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 14:22:48 ] 時間帯まとめてレスがつくのが興味深い まるで一人で書いているかのようだ
183 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 15:50:31 ] class Foo def bar(obj=nil) obj.foo end private def foo puts "foo" end end Foo.new.bar(Foo.new)
184 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 15:52:01 ] 多分ここ見ているの3人ぐらいJane?
185 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 16:40:55 ] >>182 均等にばらつくほうが不自然
186 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 18:04:03 ] >>183 Goldの問題だな
187 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 18:12:08 ] >>182 プログラマは以外と規則正しい生活をしてるってことだな
188 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 18:21:14 ] 何が悲しくて初心者スレにプログラマが常駐せねばならんのだ
189 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 18:22:19 ] protectedがJavaとかのそれと違うと言われるのは、どんなところがちがうの?
190 名前:デフォルトの名無しさん [2010/12/17(金) 19:05:01 ] A#fooがprotectedで、a1、a2がAのインスタンスだとすると、 a1.foo #=> エラー a1.instance_eval { foo; self.foo; a1.foo; a2.foo } #=> いずれも可能 fooは、A(とそのサブクラス)のインスタンスのコンテキストで使える。 privateと比較すると、selfに加えて、自クラス・サブクラスの他の インスタンスのfooが呼べるってこと。 比較判定で他の兄弟インスタンスの属性を参照するメソッドなどがprotectedになりうる。 Javaのprotectedは、コンテキスト関係なく、サブクラスのインスタンスに 対して使用できるかどうかを示す。
191 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 19:11:21 ] public 呼び出しの場所も形式も制限なし private 呼び出しの場所の制限はないが、形式に制限あり レシーバつきだと呼び出せない protected 呼び出しの場所に制限があるが、形式には制限なし 所属クラスか継承クラスの def ... end の中以外では普通はエラー class C def priv; end def prot; end private :priv protected :prot def check_priv(c=nil) priv rescue warn "cannot priv" self.priv rescue warn "cannot self.priv" (c.priv if c) rescue warn "cannot c.priv" end def check_prot(c=nil) prot rescue warn "cannot prot" self.prot rescue warn "cannot self.prot" (c.prot if c) rescue warn "cannot c.prot" end end irb> C.new.check_priv(C.new) cannot self.priv cannot c.priv irb> C.new.check_prot(C.new) irb>
192 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 19:11:29 ] 仕事でストレス溜め込んでるから、初心者相手に憂さ晴らししているプログラマが多いって証だろ。 ちゃんとカウンセラ常駐の、大手ソフト会社は、メンタルケアを行う事でストレスによる休職や離職が5年前は7%だったのが、昨年は0.7%に減少し、年間2億円のプラス効果が出たとかw この会社は当然新卒にも大人気らしい。
193 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 19:15:02 ] >>190 >比較判定で他の兄弟インスタンスの属性を参照するメソッドなどがprotectedになりうる。 というかそれしかないんよね 自分か仲間のオブジェクトをメソッド内に連れ込んだ場合に限ってそいつが喋れるってどんだけ秘密なの ちなみにどれも __send__ で呼び出すことは可能なので、あんまり防御効果はない
194 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 19:33:23 ] protectedてC++で言うprivateに使いのか?
195 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 20:44:41 ] 同名のローカル変数とprivateメソッドが同一クラスにあった場合、同クラス内からprivateメソッドを呼び出す方法ってある? evalとかの魔術的な方法ではなく正攻法で。 class C def hoge fuga = 0 # fugaメソッドを呼び出すには? fuga end private def fuga "fuga" end end puts C.new.hoge
196 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 21:12:11 ] __send__(:fuga)
197 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 21:54:27 ] いや、それ十分魔術だから
198 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 22:06:42 ] スーパークラスからじゃなく 同じクラス内で同じメソッド名を作っておく意味ってあるの?
199 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 22:07:29 ] ホントに動くねw class C def hoge fuga = 0 # fugaメソッドを呼び出すには? __send__(:fuga) end private def fuga "fuga private" end end puts C.new.hoge
200 名前:デフォルトの名無しさん mailto:sage [2010/12/17(金) 22:11:08 ] >>198 いわゆる、ローカル変数名がたまたま被るという話だろう それでいてローカル変数の名称も変更できずメソッド名も変更できずロジックの変更もできない という特殊環境下でたかだか __send__ を魔術と抜かすんだからどうにもならん
201 名前:デフォルトの名無しさん [2010/12/18(土) 00:13:26 ] >>193 だから、「たいていのprotectedの使い方は間違い」だと疑ったほうが いいんだよね。RailsとかRailsとか。
202 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 00:42:49 ] 間違った使い方のほうがruby本体より有名に成ったからなあ。
203 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 01:18:23 ] どこから「だから」がきてるのかさっぱりわからん
204 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 03:51:20 ] send は別に魔術でもなんでもないよね メソッドを確実に呼ぶだけだ ただまあちょっとばかし可視性とか無視してるが
205 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 10:34:04 ] アクセス権限をかいくぐることがsendの主目的かよw
206 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 11:20:42 ] 昔なんか裏技とか言ってゲームやってたようなおっさんたちが嬉々として「裏技」に仕立て上げているという悲惨なメソッド
207 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 13:02:57 ] 実際はsendってどんな時に使うものなの?
208 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 13:27:07 ] send は Object に定義されてて、ありがちな名前が被る可能性があるので実質 __send__ を使う で、>>204 の通りだろ 呼び出し制限に影響されないというのが差異で、単なるメソッド呼び出し 本来は、private メソッドを無理矢理使うときー、みたいな限定用途ではない
209 名前:デフォルトの名無しさん [2010/12/18(土) 13:31:52 ] 「文字列で名前で指定されたメソッドを呼ぶ」とかな。 別にアクセス制限は関係ない。
210 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 13:56:04 ] 普通は動的プログラミングで使うだろ privateメソッドにアクセスする用途で使ったのなんて モンキーパッチで仕方なく書いた1回だけだ
211 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 16:56:31 ] なのでやっぱり魔術的
212 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 16:59:33 ] 呼び出し制限に影響されずにメソッド呼ぶとか、動的プログラミングとか と privateメソッドを呼ぶ の違いが初心者の私にはわかりません。 前者はほかに何ができることを言っているのでしょうか?
213 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 17:17:57 ] 呼び出し制限に影響されずにメソッド呼ぶ privateメソッドを呼ぶ と 動的プログラミング というくくりで考えればいい。 上二つの違いは、何が目的なのかという解釈の違い。 二つのくくりの違いは、もう何もかも違うだろ。
214 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 18:27:11 ] まあ、他の2つは試せばわかるとして、動的プログラミングのくだりはたとえばこんな感じなんじゃないかと class C def foo; puts "foo"; end def bar; puts "bar"; end def baz; puts "baz"; end def main(arr) arr.each do |name| __send__(name) end end end C.new.main(['foo', 'baz', 'foo']) ・ 「なんかスゴいからこれどっかで使おう!」とか考えない ・ 手段のために目的探したりしない、乱用厳禁 ・ どうしても困ったときにはたぶんあなたの前に現れてくれるサンタさん
215 名前:デフォルトの名無しさん mailto:sage [2010/12/18(土) 19:34:57 ] なるほど、わかったきがします 説明&例をあげていただいて感謝
216 名前:デフォルトの名無しさん [2010/12/18(土) 23:30:23 ] >>214 へーー。わかりやすい。
217 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 08:46:40 ] class C def foo; puts "foo2"; end def bar; puts "bar2"; end def baz; puts "baz2"; end def main(arr) arr.each do |name| __send__(name) end end end C.new.main(['foo', 'baz', 'foo']) 引数から直接関数を呼ぶって危険じゃないの? これがrubyスタイル?
218 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 09:32:08 ] ・ 「なんかスゴいからこれどっかで使おう!」とか考えない ・ 手段のために目的探したりしない、乱用厳禁 ・ どうしても困ったときにはたぶんあなたの前に現れてくれるサンタさん って書いてあるじゃん。もう少し考えてから書こうよ。いくら2chと言ってもさ。
219 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 09:40:18 ] そもそもrubyインタプリタへのアクセスを許してる時点で危険も何もねえ
220 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 11:02:37 ] Rubyは開発者のことを信頼しているっていう思想が根源にあるから そんくらいで危険とか言われてもピンと来ないな
221 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 11:15:13 ] __send__ はどう頑張ってもメソッドしか呼べないので $SAFE=1 で禁止されないな まあそんなもんだと思う __send__ に渡す引数が信用ならないなら自前でなんとかしてくれ
222 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 15:57:13 ] >>220 >Rubyは開発者のことを信頼しているっていう思想が根源にあるから C みたいな言い分ですね
223 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 17:41:09 ] さっぽろでRubyKaigiあったじゃん、 ttp://regional.rubykaigi.org/sapporo03 これにMatzの発表資料と動画がないんだけど、公開されないのかな。 秘守契約とかあんの?
224 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 17:59:45 ] >>222 matzはCプログラマ
225 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 20:26:11 ] irb の使い方って、 b.rbというソースがあるとき irb起動して require './b' (ruby1.92) とソースを読ませてから 色々なことをするの? 参考url オブジェクトの中身が知りたーい - takkan_mのNo planな日常 d.hatena.ne.jp/takkan_m/20101213/1292247476
226 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 20:45:10 ] まあ一般的にはそうだ
227 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 20:53:28 ] 以下のような違い(疑問)に出会ったときに、ArrayクラスのArray#==メソッドの実装部分を調べるとObjectとの違いの理由がわかったりすると思うのですが、Array#==(やObject#==)の実装部分(Rubyコード?)を実際に見るにはどこを探せばよいのでしょうか? a = Object.new b = Object.new p a == b #=> false a = Array.new b = Array.new p a == b #=> true
228 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 20:59:00 ] コンパイル前のC言語ソースのarray.c
229 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 21:15:09 ] >>228 Oh.. Cを読まないとダメですか 自分にはまだちょっと早そうですね〜 リファレンスの文章で我慢します レスありがとうございました
230 名前:デフォルトの名無しさん mailto:sage [2010/12/19(日) 21:15:25 ] >>227 ちょっと見たいだけなら、↓から覗くって手もあるよ。 rubydoc.info/stdlib/core/1.9.2/frames
231 名前:227 mailto:sage [2010/12/19(日) 21:23:50 ] >>230 おお、これはわかりやすいですね! これなら自分でもObject#==とArray#==のCコードを見ることができました Object#==のほうは短いのでなんとなくわかりますが、Arrayのほうはよくわからずw でも実装が違うってことはわかりました 参考になるサイトを教えていただきありがとうございました
232 名前:デフォルトの名無しさん [2010/12/20(月) 00:34:51 ] たいていクラス実装コードの最後に、いかにもなrb_define_classとか rb_define_methodとかあるから、そこでRubyレベルのメソッド名を探す と、対応するCの関数が分かる。
233 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 01:14:22 ] Part26以前が過去ログから遡れなかったのでURLまとめてみた Ruby 初心者スレッド Part 26 pc11.2ch.net/test/read.cgi/tech/1235727504/ Ruby 初心者スレッド Part 25 pc11.2ch.net/test/read.cgi/tech/1233369067/ Ruby 初心者スレッド Part 24 pc11.2ch.net/test/read.cgi/tech/1230783202/ Ruby 初心者スレッド Part 23 pc11.2ch.net/test/read.cgi/tech/1227123021/ Ruby 初心者スレッド Part 22 pc11.2ch.net/test/read.cgi/tech/1221467121/ Ruby 初心者スレッド Part 21 pc11.2ch.net/test/read.cgi/tech/1217952441/ Ruby 初心者スレッド Part 20 pc11.2ch.net/test/read.cgi/tech/1214498119/ Ruby 初心者スレッド Part 19 pc11.2ch.net/test/read.cgi/tech/1208100393/ Ruby 初心者スレッド Part 18 pc11.2ch.net/test/read.cgi/tech/1203658291/ Ruby 初心者スレッド Part 17 pc11.2ch.net/test/read.cgi/tech/1200472887/ Ruby 初心者スレッド Part 16 pc11.2ch.net/test/read.cgi/tech/1197120980/ Ruby 初心者スレッド Part 15 pc11.2ch.net/test/read.cgi/tech/1193298175/ Ruby初心者スレッド Part 14 pc11.2ch.net/test/read.cgi/tech/1188014743/
234 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 01:14:37 ] Ruby初心者スレッド Part 13 pc11.2ch.net/test/read.cgi/tech/1183115034/ Ruby初心者スレッド Part 12 pc11.2ch.net/test/read.cgi/tech/1178167650/ Ruby初心者スレッド Part 11 pc11.2ch.net/test/read.cgi/tech/1174607679/ Ruby初心者スレッド Part 10 pc11.2ch.net/test/read.cgi/tech/1169542763/ Ruby初學者スレッド Part 9 pc10.2ch.net/test/read.cgi/tech/1164065622/ Ruby初心者スレッドPart8 pc8.2ch.net/test/read.cgi/tech/1159424939/ Ruby初心者スレッドPart7 pc8.2ch.net/test/read.cgi/tech/1154077799/ Ruby初心者スレッドPart6 pc8.2ch.net/test/read.cgi/tech/1147918197/ Ruby初心者スレッドPart5 pc8.2ch.net/test/read.cgi/tech/1143403165/ Ruby初心者スレッドPart4 pc8.2ch.net/test/read.cgi/tech/1137927749/ Ruby初心者質問スレPart3 pc8.2ch.net/test/read.cgi/tech/1125587131/ Ruby初心者質問スレPart2 pc8.2ch.net/test/read.cgi/tech/1107799347/ Ruby初心者質問スレPart1 pc5.2ch.net/test/read.cgi/tech/1100534824/
235 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 10:20:59 ] 2004年に既に1.9系ってあったんだな まるで普及してない・・・
236 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 10:26:45 ] 1.9.0 は完全開発版でベータどころかナイトリービルドレベルだから普及も何もないぞ 普及は 1.9.1 から数えてくれ ttp://www.ruby-lang.org/ja/news/2009/01/30/ruby-1-9-1-released/ 来年の1月30日で2歳だ
237 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 10:30:33 ] >>236 あ、そうなんだ 無知でスマソ
238 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 10:32:55 ] ついでに質問だけど、1.9.1が安定版なら、1.9.2は開発版? で1.9.3が安定版?
239 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 10:41:21 ] >>6 の通りなんだが、そういや命名規則の話が抜けてるな 1.9 系列の開発版は常に1.9.0を名乗り、バージョンが「上がる」ことはない 1.9 系列の安定版は 1.9.1、1.9.2、1.9.3、… 1.9.10、1.9.11、…を名乗る 1.8 系列の開発版は…あるんだっけ? まあいいや、1.8.7 の次の安定版は、あるとしたら 1.8.8 だ 2.0 が安易に出ることはしばらくない 1.9 の安定版でもう何も足すことも引くこともないというような安定っぷりになったら、 それがそのまま2.0にスライドすると予測されてる
240 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 11:00:00 ] 1.9.1/1.9.2がお勧めになってないのは ・ それはRubyの書き方のミスです ・ それはRubyの使い方がまずいです ・ それはgemライブラリ側の不具合です ・ それはgemライブラリが1.9.1に対応してないからです ・ それはあなたの文字エンコーディングの扱い方のミスです が渾然一体となってジェットストリームアタックかけてくるからだな 1.8.7でRubyに慣れてからだと > それはRubyの書き方のミスです > それはRubyの使い方がまずいです が激減して > それはgemライブラリが1.9.1に対応してないからです の自力バイパスが可能で > それはgemライブラリ側の不具合です を自力修復可能(なことがある)なので、残りの > それはあなたの文字エンコーディングの扱い方のミスです とせいぜい ・ それは1.9.1/1.9.2の新機能です くらいで悩む程度になって気楽
241 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 11:08:04 ] いつの話だよw2年前か?
242 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 11:12:31 ] 日常的に1.9.1や1.9.2を使って「いろいろな」gemを扱ってれば わりとピキッと来ることが多いはずなんだけど
243 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 11:18:24 ] 日常的に使ってるが今やそんなことはほとんどないなあ 例えばどんなgemか3つ4つ挙げてみてよ
244 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 12:02:01 ] そういや最近の新しいのはないな 文字エンコーディングが変なのは時々ひっかかるけど
245 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 12:20:32 ] なんだかんだいってrailsだよりだからいまさら
246 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 12:26:33 ] ライブラリの更新履歴見ると「1.9関連かよ!」と思うことはないでもない
247 名前:デフォルトの名無しさん [2010/12/20(月) 12:32:00 ] #!/usr/bin/ruby -Ku # -*- encoding: UTF-8 -*- require 'rubygems' require 'active_support' require 'date' p Date::today p Date::today.last_month このスクリプトで,test.rb:10: undefined method `last_month' for #<Date: 4911101/2,0,2299161> (NoMethodError) のエラーが出てしまいます。 対処法知ってますか? 環境は,intel iMac 10.6.5 ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0] ruby 1.8.6 (2009-06-08 patchlevel 369) [universal-darwin9.0]のppc miniでは問題なかったのですが。
248 名前:デフォルトの名無しさん [2010/12/20(月) 13:24:57 ] 動かないほう、Rails 3が入っていないか? last_monthのかわりにprev_monthを使用すべし。
249 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 14:11:42 ] >>239 rubyのバージョンの数字が2桁にならない保証ってもう過去の話?
250 名前:デフォルトの名無しさん [2010/12/20(月) 17:39:07 ] 日常的に使ってない初心者な俺は amazon-ecs(+Hprocit)で >>240 みたいな目にあった
251 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 20:03:32 ] class Foo def << name, price puts "#{name}=#{price}" end end foo = Foo.new foo << "smile", 100 エラーが出ます。なぜですか? ./main.rb:10: syntax error, unexpected ',', expecting $end
252 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 20:20:37 ] 説明不足なので補足。 foo << ["smile", 100] foo.<< "smile", 100 という書き方をするメソッド定義はわかるのですが、 foo << "smile", 100 という書き方をするためのメソッド定義が分かりません。
253 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 20:27:27 ] <<とか一部のメソッド名は2項演算子の形式をとるから。
254 名前:251 mailto:sage [2010/12/20(月) 21:06:25 ] 何とかなりませんか? メニューに"smile"、100円を足す正しいメソッドは mac.menu << "smile", 100 だと思うのですが、どう考えてもこの表記では書けません。
255 名前:デフォルトの名無しさん [2010/12/20(月) 21:16:54 ] 構文の問題なので、なんともなりません。
256 名前:デフォルトの名無しさん mailto:sage [2010/12/20(月) 21:57:37 ] へー、こんな制限があるんだ 知らなかった
257 名前:デフォルトの名無しさん [2010/12/21(火) 00:16:43 ] DSLにかぶれると menu :mac do item 'smile', 100 item 'potato', 50 end とか書いてしまいそうだ。
258 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 03:24:25 ] PostgreSQLを使おうとpgを使っているのですが、SELECT ary FROM tableの結果 aryだけを配列としたいのですが、昔はPGResult.resultっていうのがあったみたいなんですが 今はないみたいで PGResult.each do ふにゃらら endでやっているのですが、 これで正しいのでしょうか? なにか釈然としません。
259 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 03:32:43 ] ふが ふが ふが
260 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 06:26:53 ] >>254 すでに回答があるように、言語使用上不可能。演算子はそういうもんだと思ってくれ。 回避策は、気に入ってもらえるかわかんないけど mac.menu << "smile", 100 ではななくて mac.menu "smile", 100 にするくらいしかない。 def menu(name=nil, price=nil) # 引数が指定されていれば追加する @menu << [name, price] unless name.nil?
# メニューを返す @menu end または def menu(*args) # 引数が指定されていれば追加する @menu << args unless args.empty? # メニューを返す @menu end
261 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 09:14:31 ] プログラム的な話ではないのですが、Rubyについて質問させてください。 よくRuby(Rails)が使用されている代表的なWebサービスとして、 Twitterが挙げられますが、以前はすべてRubyで書かれていたけど、 最近はフロントエンドがRubyで、バックエンドがScalaだと聞きます。 この場合のフロントエンド、バックエンドというのはどの部分を指すのでしょうか? 素人考えにはフロントエンドがUI、バックエンドがDBかなぁとか想像してますが、 そんな分け方するのかな?と疑問に思いました
262 名前:247 [2010/12/21(火) 11:43:51 ] >>248 ありがとうございます。おっしゃるとおり,Rails3が入ってます。 gem list -l actionmailer (3.0.1, 2.3.5, 1.3.6) actionpack (3.0.1, 2.3.5, 1.13.6) actionwebservice (1.2.6) activemodel (3.0.1) activerecord (3.0.1, 2.3.5, 1.15.6) activeresource (3.0.1, 2.3.5) activesupport (3.0.1, 3.0.0, 2.3.5, 1.4.4) rails (3.0.1, 2.3.5, 1.2.6) ただp Date::today.prev_monthと変更しても, undefined method `prev_month' for #<Date: 4911103/2,0,2299161> (NoMethodError) になります。 パッチレベルが低いからでしょうか? システムデフォルトのとは別にrubyをインスコすべきか,悩みます。 とりあえず,お礼とご報告まで。
263 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 12:47:16 ] >>262 rvm入れてgem環境分けておけばいいよ Rails3が原因なら外しておける
264 名前:デフォルトの名無しさん [2010/12/21(火) 14:04:33 ] 古い時代にprevとlastの両方があったわけじゃないので、 使っているActiveSupportのバージョンに応じてprevとlast使い分けて くだされ。 2.3.8 は移行を意図しているので両方あるはずだけど。
265 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 17:15:46 ] こんな流れの中質問するのも申し訳ないんだけど、 公式リファレンスのEnumerable#max {|a, b| ... }の説明でめちゃくちゃ混乱してるんだ なぜブロックのパラメータはふたつ?とか 「ブロックの値は〜期待してます。」の意味とか 全然理解できない 誰か使い方を教えてください
266 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 17:23:55 ] foo が Enumerable だったとして foo.max は foo.max{|a,b|a<=>b} と同じ 比較のための値の計算の方法じゃなくて、大小比較の方法をブロックで外付けしてやるわけ。
267 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 17:34:06 ] >>265 1. 数値の配列を sort メソッドを使わずに自力でソートするプログラムを書く 2. 1 を拡張して任意のオブジェクトの配列をソートするプログラムを書く ここらへんまでやれば、たとえ 1 と 2 がうまく書けなかったとしても max やら sort みたいに比較関数を渡すメソッドの使い方ぐらいは理解できるはず
268 名前:265 mailto:sage [2010/12/21(火) 18:54:51 ] >>266 比較方法をブロック内に書くのか 全然気づきませんでした。ありがとう。 >>267 あとでやってみます
269 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 21:01:21 ] >>261 ってスレ違い?
270 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 21:44:18 ] まあだいたいはスレ違い Rubyに絡めてくれれば乗る人もいたんだろうけど…
271 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 21:51:19 ] >>270 そうですかー >>261 が理解出来たら、じゃあなんでRubyじゃダメだったのか、単に速度が遅かったからか、大量のつぶやきをさばけなかったのか、もしくは動的型によるリファクタのしづらさとか、それとももっと違う原因なのか、という部分も知りたいと思ってました ここじゃスレ違いだとすると、どこで聞くのが適切でしょうか?
272 名前:デフォルトの名無しさん [2010/12/21(火) 21:52:14 ] HTTPでクライアントに応対する部分がフロントで、 DBやファイルや他のデーモン・サービスと連携する部分がバック だと思えばいいんじゃないかね。
273 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 22:13:27 ] 基本RubyとRailsはCPUコストやメモリコストが他のスクリプト言語や他のコンパイル済み言語よりも高い これは単純に(ある程度の)足し算というレベルで高い ごっつい処理をたくさんの人に提供、とかいうのだと、最終的にPHPのほうが最低2倍は捌ける人数多いと思う でも、それでもRubyを使う人がいる この世のあらゆるプログラムをCで記述しないのと同じような理屈 Rubyで初期開発して、処理負荷が間に合わなくなったら他の言語に移る、というのは Ruby的にはまったく悲しむべき問題ですらない むしろRubyの優位性を示す出来事であるとすら思う人が多いはず 公開プロダクトを最初から最後までRubyで運用し倒しましたとかいうのは その人がお金持ちか基地外か過疎プロダクトかどれか
274 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 23:04:46 ] >>273 matzはtwitterがscalaを採用したことを、負けたと思ってるみたいだけどな
275 名前:デフォルトの名無しさん mailto:sage [2010/12/21(火) 23:52:11 ] Ruby(onRails)を高速化すれば戻って来てもらえると本気で思ってる節があるな
276 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 01:13:36 ] Rubyの適用範囲がもっと広ければなあと考える事は 特に作者としては自然なことだと思うが
277 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 08:07:10 ] jp.rubyist.net/magazine/?0013-BundledLibraries Net::HTTP.Proxy メソッドは、 Net::HTTP を継承したクラスを作成して、 作成した クラスを返します。 Ruby は非常に柔軟な言語であるため、 メソッド中に動的にクラスを作成して、 そのクラスを返すということが可能です。 このメソッドの中にクラスって意味がわかりません。 普通、クラスを作ってその中にメソッドを定義するのではないですか?
278 名前:デフォルトの名無しさん [2010/12/22(水) 08:11:08 ] 質問です Windowsで下記のプログラムを-Eを付けて実行するとEncoding::UndefinedConversionErrorが 発生します。どのように修正すべきか教えていただけませんか # coding: utf-8 require 'pstore' db = PStore.new("pstest") str = "あいうえお" db.transaction{ db[1] = str } db.transaction{ puts db[1] } C:\home\mechanize>ruby -v ruby 1.9.1p429 (2010-07-02 revision 28523) [i386-mswin32] C:\home\mechanize>ruby -Ecp932:utf-8 hoge.rb C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:499:in `write': "\xE3" from ASCII-8BIT to UTF-8 in conversion from ASCII-8BIT to Windows-31J (Encoding::UndefinedConversionError) from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:499:in `save_data_with_fast_strategy' from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:473:in `save_data' from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:335:in `block in transaction' from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:361:in `synchronize' from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:321:in `transaction' from hoge.rb:5:in `<main>'
279 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 08:55:56 ] ああ、pstoreの中のFile.newが外部エンコーディングに引っ張られてるのか …これどうしよう >>277 たいしたことしてない Net::HTTP.Proxy メソッドの定義見るとわかるが、ClassクラスのオブジェクトをClass.newで作って、 それにmodule_evalでクラスインスタンス変数の定義書いて、そのClassオブジェクトを返すようにしてる klass = Class.new klass.module_eval{ attr_reader :name def initialize @name='A' end } p klass.new.name #=> 'A' ぶっちゃけこんなマニュアルの中でこんな宣伝する必要なんてないと思うけどね 1.9時代においては削除されるべき無用で紛らわしい雑談だと思うよ、個人的には
280 名前:デフォルトの名無しさん [2010/12/22(水) 09:11:16 ] >>279 マニュアルじゃなくて雑誌記事でわ?
281 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 09:13:01 ] pstoreするときだけ外部エンコーディングの影響をなくしたこれなら動く 当たり前だが # coding: utf-8 require 'pstore' db = PStore.new("pstest") str = "あいうえお" @evacuated_encoding_for_pstore = Encoding.default_external Encoding.default_external = Encoding::ASCII_8BIT db.transaction{ db[1] = str } db.transaction{ puts db[1] } Encoding.default_external = @evacuated_encoding_for_pstore puts してるのは UTF-8 エンコーディングの UTF-8 バイナリ列のままだから コマンドプロンプトでは化けるので注意
282 名前:デフォルトの名無しさん [2010/12/22(水) 09:28:50 ] >>281 ありがとうございました。 リファレンスちゃんと理解できるよう出直します。 私のところでは、化けずに出力されてます。
283 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 09:33:59 ] どっちかというと、File にエンコーディングを指定できない(または固定しない) PStore 側がへなちょこなんだと思う ユーザー側にあんまり非はないし、この対処をマニュアルから読み取るのは不可能なんじゃないかな
284 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 10:19:08 ] >>275-276 言語のユーザーや仕事の開発者としては、Ruby向いてないところに差し迫ったら乗り換えて当然と思ってしまうけど Matzは立場上(本気でそう思ってなくても)悔しがらないとあかんのでは?w
285 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 10:44:23 ] >>277 >メソッド中に動的にクラスを作成して、 >そのクラスを返すということが可能です。 > >このメソッドの中にクラスって意味がわかりません。 メソッドの中でクラスを作成し、それを返す。ただそれだけ。 これはもとのマニュアルが悪いな。「動的に」なんて初心者にわかるはずがない。 直すなら 「メソッドの中でクラスを作成して返します」 「メソッドを実行するたびにクラスを作成して返すことができます」 とか。
286 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 11:18:44 ] >>284 それは単に表面的なスタイルの問題じゃないの? インデント強制だからPython は嫌だとか言ってる人たちを思い出すな
287 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 11:20:24 ] どこをどう読めば>>284 がスタイルの問題になるのかまったくわからない。 アンカーミスだよな?
288 名前:286 mailto:sage [2010/12/22(水) 11:22:51 ] >>287 すまん。確かに275-276が違う所をさしてるように見えてしまった
289 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 12:22:12 ] 最近Rubyはじめたんですが、クロージャのような無名の処理はみなさんどうやって文書化してます?
290 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 12:27:25 ] ソースがドキュメント
291 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 15:23:46 ] jrubyのnkfが壊滅的なのですがどうすればいいんでしょうか jrubyで文字コード変換するなということなんだろうか
292 名前:デフォルトの名無しさん [2010/12/22(水) 16:21:18 ] >>291 もうJava標準APIを呼んでしまえ。 String#getBytesとかエンコード指定付きコンストラクタとか Reader/Writerとか。
293 名前:デフォルトの名無しさん mailto:sage [2010/12/22(水) 19:09:44 ] >>274 >matzはtwitterがscalaを採用したことを、負けたと思ってるみたいだけどな うそだぁ ソースは?