1 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 03:34:28 ] オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。 Ruby Home Page www.ruby-lang.org/ja/ = 前スレ Rubyについて Part 33 pc11.2ch.net/test/read.cgi/tech/1223709050/ 過去スレ・関連スレは >>2-
752 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 14:50:22 ] あれは組み込みクラス拡張するほうが一方的に悪いから、仕方ないな 利便性と引き換えの非互換リスク
753 名前:デフォルトの名無しさん [2009/03/07(土) 19:21:12 ] >>748 rubyは1.8.6用に書いたスクリプトが1.8.6で動かなくなったことだってあるwww
754 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 19:27:05 ] >>753 はパッチの意味を理解していない
755 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 19:28:48 ] RDoc フォーマッタで attr 系列が別待遇なものが多いのはなぜ? あれ他のと混ぜて一律にメソッドとして説明すればいいじゃんね
756 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 19:35:32 ] >>755 俺もそう思ってるんだけど、 ・ プロパティ厨 ・ attr で書いたものはそれ自体に意図があるよ説 が結構根強い attr_accessor :hoge と def hoge @hoge end def hoge=(v) @hoge=v end には違いがないと思うんだけどねえ
757 名前:デフォルトの名無しさん [2009/03/07(土) 21:01:19 ] 初めまして。 webkeepersにgemを入れました。その後、rubyが1.8.5だったので、1.8.7にupdate。 install時特になにも環境変数?を指定などしていません。 gem -v => 1.3.1 ruby -v => 1.8.7 とどちらも正常なようですが、require 'rubygems'にすると、"no suck file to load"と怒られます。 whereis gem => /usr/bin/gem だったので、export GEME_HOME = /usr/bin/gem と余計な事までしてしまいました。どうしたもんでしょう?お願いします。
758 名前:デフォルトの名無しさん [2009/03/07(土) 21:02:46 ] such がsuck になっていて申し訳ございません。。。
759 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 21:15:53 ] 初心者スレかと思った >>757 ・ レンタルサーバのユーザー領域に自前でRubyをインストールしたが、gemが動かね ということでいいか
760 名前:デフォルトの名無しさん [2009/03/07(土) 21:32:35 ] ありがとうございました。解決はしませんでしたが、素人が余計なことをするなと言うことは理解出来ました。 けどvpsなので、rootで入れて、whereis ruby => /usr/bin/ruby /usr/lib/ruby /usr/local/bin/ruby /usr/local/lib/ruby /usr/share/man/man1/ruby.1.gz まぁ素人が、vps使うなんて危ないというのも解るけど。。。 ありがとうございました。初期状態に戻します。
761 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 22:23:13 ] 素人だから余計なことをするのか それとも余計なことをしてしまうから素人なのか そもそも余計なことをしてしまったときに自分で修復出来ないから素人なのか
762 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 22:24:53 ] 自分で素人と思ってるのはまだいい
763 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 22:28:13 ] >>757 インストールしたものがどこに入っていったかくらいわからんものか? 普通にソースビルドで何も指定せずに入れたらrubyは/usr/localに入り、 gemもそのrubyの設定に従って/usr/localに入るはず。 あなたのgem -vで出てきたのは、最初から入っているruby(/usr/bin)に対して インストールされているもの。 rubygemも別途いれるべし。
764 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 22:31:21 ] gem -v => 1.3.1 ruby -v => 1.8.5 のときはちゃんと動いていたのか?
765 名前:デフォルトの名無しさん [2009/03/07(土) 22:59:11 ] 764さん、それが、1.8.5の時は、ramaze,m4dbiが、動いていたんですね。 ありがとうございました。場を少し荒らしたみたいで、申し訳なかったです。 退場します。
766 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 23:10:06 ] CentOSだろ? システム提供のパッケージを更新するんだから、rpmでインストールするか、 システム提供の物を抜いてから入れるべきだ。 rpmforgeのレポジトリを指定してyumでアップデートするのが楽だと思うよ。
767 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 23:16:14 ] うわーRubyきもい うわーまじきもい
768 名前:デフォルトの名無しさん [2009/03/07(土) 23:19:20 ] 766さんありがとうございます。がんばってみます。レスをくれた人、勉強になりました。
769 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 23:46:59 ] gemコマンドは使っているrubyと結びついてインストールされるから、 自力でrubyを入れたのならgemコマンドもそれに併せていれること。 # 1.9系列なら一緒にインストールされるけどね。
770 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 00:30:55 ] なんでそんなアホな仕様にしたの
771 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 00:39:26 ] 別にアホでもない gemが自分を実行可能なバイナリを勝手に探して自分に勝手に登録するだけだ Rubyは何も関与しない
772 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 03:06:59 ] 下位互換性ことごとく無いよね。松本教信者しか使えないな。
773 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 03:30:19 ] >>772 kwsk
774 名前:デフォルトの名無しさん [2009/03/08(日) 03:40:53 ] >>754 1.8.6のpatchで仕様変更をして、それで互換性がなくなったことがあるんだが
775 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 08:24:45 ] >>771 Rubyの位置が変わったくらいでgemまで再インストールしなくてもいいのに 「自分を実行可能なバイナリを勝手に探して自分に勝手に登録している」 その場所だけ1行かそこら書き換えるだけで済まないの?
776 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 12:20:46 ] >>775 確信があるのなら自分で試してみたら。 Rubyは成熟してないから自分で手を動かすしかないこともあるよ。
777 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 13:41:31 ] つまりrubyは出来が悪いと。
778 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 14:51:34 ] >>777 というか出来上がっていないという話では?
779 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 20:38:10 ] >>776 そういう意味じゃないよ なんでそういうつくりにしなかったのっていう意味だよ
780 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 20:39:35 ] ドキュメンテーションが半端なライブラリ等はプロジェクトに 持ち込むべきじゃないし、ドキュメンテーション活動が活発なところ からチョイスした方が楽が出来る
781 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 20:50:57 ] ドキュメンテーションが半端な言語についてはどうなんだろう
782 名前:デフォルトの名無しさん [2009/03/08(日) 22:24:17 ] 1.8 で動くアプリを走らせながら、1.9でも色々テスト開発したいので、1.8と1.9を共存させようと思っているんだけど、やめた方がいいですかねぇ?なんか色々面倒なことになりそうな予感が。 バーチャルマシンでOS2つ載せてそれぞれで1.8と1.9使うってのも考えてるんですが・・ 同じOSに1.8と1.9共存させるってのについてはどんな印象でしょうか?ウェブ上でそいうことしてる人ちらほらとは見かけはするんですが・・
783 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 22:34:23 ] >>782 きちんとやれば特に問題はない gem のライブラリを大量にインストールしてる場合は ほぼ同じものを 1.8 用と 1.9 用にインストールしなければならないので 心情的にもディスクスペース的にも無駄なのが若干寂しいが
784 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 23:07:56 ] >色々テスト開発したいので 本気でそう思ってるなら 1.9 しか入っていない環境を一つ作るべき Virtual でも Real でも何でもいいからね 出来たアプリを別のところに持っていって動かないケースが出てきたら そっちに 1.8 が入っているのかどうかとか悩みたくないだろ
785 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 23:12:01 ] >>784 1.8用と1.9用で外部APIの要求バージョンが違うとか極悪なことしてない限りそういうことはまずない
786 名前:デフォルトの名無しさん [2009/03/08(日) 23:20:36 ] gemは?
787 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 23:24:36 ] >>775 > その場所だけ1行かそこら書き換えるだけで済まないの? 先頭一行書き換えるだけ。 Rubyとは無関係な話なので、詳しくはshbangでググれ。
788 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 23:28:28 ] >>787 はたぶん勘違いしている
789 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 23:44:27 ] Rubyは最近調子に乗ってって 勘違いしていると思う
790 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 23:48:17 ] >>787 はかなり勘違いしている
791 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 23:48:48 ] どの言語にも取り巻きと他言語からの工作員がいるよな…
792 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 23:49:18 ] gemって馬鹿な子なんだってことは分かりました 本当にありがとうございました
793 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 23:49:49 ] >>783 1.8 用と 1.9 用ってインストールされるファイルを分けることはできる? gem1.9 から起動されたら hoge-0.2.3-ruby19 をインストールするとか
794 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 23:51:47 ] rubyは関係ないとかrubyのせいじゃないって言ってる香具師いるけど perl用のgemとかphp用のgemとかpython用のgemとかあるわけ?
795 名前:デフォルトの名無しさん mailto:sage [2009/03/08(日) 23:53:44 ] ばかですねわかります
796 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 00:04:45 ] おれEclipseを二つ入れて使い分けてるが 開発オンリーでWindowsだけど
797 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 20:05:45 ] はぁ?
798 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 21:55:18 ] なにが「はぁ?」なのかわからんのだが はっきり書いてくれよ
799 名前:デフォルトの名無しさん mailto:sage [2009/03/09(月) 22:53:34 ] >>797 息が臭いです
800 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 00:29:31 ] 統合開発環境とか使いこなせないんだろ。 そういうのは争いのもとだから相手にする必要なし。
801 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 19:57:40 ] 万人には使えないとか。単に使いにくいだけだろ。 glibc並の酷いバージョン問題発生か。 進歩無いねえ。下位互換性ぐらい確保して当然だろ。 0.8とか0.9でリリースし直して徹底的に枯れてから1.xの安定板をリリースしろよ。
802 名前:デフォルトの名無しさん mailto:sage [2009/03/10(火) 20:14:41 ] あん、何が何のdownward product だって?
803 名前:782 [2009/03/11(水) 17:32:25 ] むーやっぱバーチャルマシン立てようかな・・ レスありがとうございましたm(_ _)m
804 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 18:58:43 ] 円周率を計算するプログラムを見かけたのでRuby用にしてみた 元はhaskellで、それを十進BASIC用にしたもの 多倍長整数で計算するらしい 何をどう計算してるのか内容についてはさっぱりわからんが 1万桁計算する時間を計ってみることに require 'benchmark' limit = 10000 Benchmark.measure do q,r,t,i = 1,180,60,2 u,y = 3*(3*i+1)*(3*i+2), Integer((q*(27*i-12)+5*r)/5/t) #print y (limit-1).times do q,r,t,i = 10*q*i*(2*i-1), 10*u*(q*(5*i-2)+r-y*t), t*u, i+1 u,y = 3*(3*i+1)*(3*i+2), Integer((q*(27*i-11)+5*r)/5/t) # print y end end.display
805 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 19:06:50 ] Windowsにて実行 Ruby 1.8.7-p72 Mingw32 17.20s Ruby 1.8.7-p72 mswin32 25.02s をぉ、かなり違いますな てっきりVCの方がGCCより速いのかなと思ってたけど 最適化の封印とかされてるのだろうか Ruby 1.9.1-p0 Mingw32 19.89s Ruby 1.9.1-p0 mswin32 28.90s がびょーん、1.8より遅くなってる… Mingw32版は自前でビルド(configure と make しただけ) mswin32版は(う)さんの
806 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 21:13:25 ] >>805 お察しの通り、mswin32版は最適化封印されてるぞ。 最近のVCを使えば大丈夫、らしい。 それでもGCCの方が速いことが多いらしいけど。
807 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 21:17:04 ] 封印てw バカじゃないのかしらw オープンソースなんだからサポートしてるコンパイラに最適化するのは当然。 そもそもVCてw せめてiccと比較しろよなw
808 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 21:18:48 ] >>807 そのへんの「事情」はMLアーカイブ読んでこい。
809 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 21:21:49 ] へたなコンパイラにへたな最適化させるとGCで必要な情報を「最適化」しちゃう?
810 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 21:22:00 ] 「w」の数が多いやつはバカが多い法則は健在だな
811 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 21:39:58 ] AquesTalk/Ruby クソワロタw
812 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 23:22:09 ] >>806 やはりそうでしたか バイナリの互換性でいまだVC 6.0でコンパイルされているのは知ってました 本体や拡張ライブラリからリンクされてるランタイムライブラリが一致してないと駄目とかなんとか あと、なにか不味いことがあって最大限の最適化もされてないとか以前どこかで見たような記憶があったので
813 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 00:13:04 ] pythonはVC8に移行したよね
814 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 00:33:01 ] VS2008(VC9)だな
815 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 06:51:25 ] 1.9.1の時点でVC9に移行しちゃっても良かったんじゃないかと思うんだがな VC6とかインストールするのもめんどくせえ
816 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 10:14:32 ] 勝手にすればいいのでは
817 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 10:16:28 ] 確かにな。mswin32版も、あくまでも有志サイトでの配布って形を崩してないしw
818 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 14:25:14 ] あちこちでmswin32向けにバイナリ配布されている拡張ライブラリは VC9でコンパイルしなおした場合、使えなくなる可能性が高いということですか? gcc版のrubyを使う場合は、拡張ライブラリは基本的に 自前でコンパイルしてインストールする必要があるとかそういうことですか? mswin32版しか使ったことないから考えたことがないな。
819 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 14:39:40 ] 1.8の安定版スナップショット(2009/03/13 04:15:48)のwin32/resource.rbがバグっぽい。 make時に作るrcファイルがwindresでsyntax error。 rcファイルのFILEVERSIONとPRODUCTVERSIONの末尾が「,」になってるわ。0でも足しとけ。
820 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 14:40:32 ] >>819 mingwでの話
821 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 23:44:17 ] >>818 mingwとVC6でコンパイルしたruby本体と拡張ライブラリは互換性があるんで互いに使える それ以外のcygwin、VC7/8/9、bccなんかでコンパイルしたruby本体では 同じコンパイラでコンパイルした拡張ライブラリしか使えないし逆もまたしかり
822 名前:デフォルトの名無しさん mailto:sage [2009/03/14(土) 03:40:11 ] 過疎w
823 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 10:03:01 ] ruby厨ってrubyしか使ったことないかあるいは使えないんでひたすら布教するんだろうな 複数の言語を使いこなせないとは哀れな
824 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 10:06:23 ] 教祖が多数の言語に精通した言語ヲタなのにねぇ…
825 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 10:13:21 ] >>823 彼らはRuby使えてないよ 実際に聞いてみるといい
826 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 10:18:50 ] ことRubyユーザーで、Rubyしか使えない層ってのはごく少数だと思うが そもそも、複数使えないと(相対的に)良い悪いなんて判断できんだろ……
827 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 10:23:09 ] なんか想像力の豊かな人がいるみたいだなw
828 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 11:52:14 ] 教祖の教えだけに従うから宗教なんだろ。 教祖がこうだと言えば、反論せず賞賛するだけ。反論したら異教徒として火あぶりにされる。 plやpyの採用例に比べると、rbの採用例って驚くほど少ないから、実用面では厳しいよね。 学術研究ユーザが多いのかもしれない。
829 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 11:55:59 ] MLとか読んでる?たまにmatzもぼこられてたりするぞ ただ最終決定権(の多く?)がmatzにあるのをみんなが認めてるってだけじゃないのか
830 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 11:59:29 ] イメージで言ってるだけだろ。不満なら完全民主制の言語でも作ればいい。
831 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 13:37:50 ] >>829 matzが「コミット権取り上げますよ?」て言われたこともあったな
832 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 17:36:49 ] >>831 マジですか?w
833 名前:831 mailto:sage [2009/03/16(月) 17:57:01 ] >>832 今探しなおしてきた ttp://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-dev/29649?29386-29727 微笑ましい一幕です(悪い意味じゃなくね)
834 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 18:22:27 ] ワロタ
835 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 18:23:20 ] その後の言い訳がまた笑えるw
836 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 18:24:46 ] >>833 ワロタw サンクス
837 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 18:26:10 ] ていうか、開発MLみたいなとこでも草生やしたりすんだなw
838 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 18:29:46 ] 基本的にはしない 無くても議論はできるからだ が、草生やすのが最適だと思われれば躊躇うことはない
839 名前:デフォルトの名無しさん mailto:sage [2009/03/16(月) 20:52:55 ] えーと、いわゆる優しい独裁者モデル? なんか違う肝。
840 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 00:30:47 ] 1.9.1のtrunkは6日から進んでないけど、なんか大きな変更をやってるの?
841 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 00:37:39 ] コンビニ増えすぎだよな
842 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 08:58:45 ] >>840 trunkはとっくに1.9.2devだよ。今見たら昨日も更新してた。 それともbranches/ruby_1_9_1のこと?
843 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 09:45:19 ] >>842 そなの? ホームページの最新版スナップショットとやらが(2009/03/06 04:13:00)から更新されてないので気になったんだけど。 1.8.8devの安定版スナップショット(2009/03/17 04:19:26)は毎日更新されているから。
844 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 10:13:24 ] >>843 ああ、そっち見てたのね。 こっちはSubversion見てたもんで。
845 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 22:16:57 ] >>843 smn
846 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 08:52:33 ] >>843 についてIRCの方で報告があった 今は直ってます
847 名前:デフォルトの名無しさん mailto:sage [2009/03/18(水) 09:59:27 ] >>846 サンクス
848 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:21:20 ] 配列をN個に(ほぼ)等分する必要があって、 グネグネしたコードを書いた。 で、気に入らないのでちょっと書き直してみた。 Ruby神、リファクタリングよろ。 メソッド名は堪忍してくんろ。 def equally(a, n) sizes = [].fill(a.size / n, 0, n) (0...(a.size % n)).each {|i| sizes[i] += 1} #p sizes sizes.inject([]) {|r, size| sub = a.slice!(0, size) break r if !sub || sub.size < 1 r << sub } end (1..20).each {|i| a = (1..i).to_a p a p equally(a, 3) puts }
849 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:31:06 ] Enumerable#each_slice では用が足らんのか 面倒じゃのう
850 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 11:41:56 ] リファクタリングとかいうレベルじゃないくらい別モンだけど def equally(a,n) result = [] div,mod = a.size.divmod(n) until a.empty? result << ( 0 < mod ? a.shift(div+1) : a.shift(div) ) mod -= 1 end result end
851 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 12:01:16 ] def equally(a, n) sizes = [].fill(a.size / n, 0, n) (0...(a.size % n)).each {|i| sizes[i] += 1} sizes.map {|size| a.shift(size) } end
852 名前:デフォルトの名無しさん mailto:sage [2009/03/19(木) 16:24:32 ] aは破壊しちゃっていいのか? # 非破壊バージョン def equally(a, n) result = [] div,mod = a.size.divmod(n) (Array.new(mod, div+1) + Array.new(n-mod, div)).inject(0) do |i, m| result << a[i, m] i + m end result end