1 名前:デフォルトの名無しさん [2008/01/16(水) 17:41:27 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 関連スレやURLは>>2-7 あたりを見てください。Ruby on Railsの質問はWebProg板の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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
620 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 20:51:22 ] def print(io) io = STDOUT if io == null io.puts "hoge" end
621 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 20:58:13 ] ちなみにRubyではnullじゃなくnilな
622 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 21:00:32 ] >>620 ありがとうございます 助かりました STDOUTとか、その辺の定数みたいなものは自然と身についていくものなんでしょうか? ちょっと前にもARGVに気が付かず、コマンドライン引数を取得する方法に悩んでしまいました
623 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 21:03:53 ] マニュアル読めよ
624 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 21:19:02 ] >>623 まあそうなんですけど、私みたいな日曜プログラマはプログラム書きながらわからんところだけ調べるスタイルなので それに、どの言語もそうですけど、マニュアル分厚くて読む気しない
625 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 21:23:36 ] 役に立つかどうかはわからんが、 逆引きRuby www.namaraii.com/rubytips/
626 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 21:25:08 ] おまいらやさしいな 傍から見ててテンプレ嫁ググレカスとか書き込もうと思ったよ
627 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 21:34:27 ] 本を一冊読めば大抵のこと書いてあると思う。
628 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 21:47:04 ] コンピュータのディスプレイで読めるリファレンスマニュアルに分厚いも糞も無いだろ
629 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 21:47:54 ] マニュアルに一通り目を通すのがめんどい、とかは分からないでもないけど、 この場合「組み込み定数」って項目がリファレンスのトップレベルにあるしなあ。
630 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 21:56:32 ] >>628 Rubyのオンラインマニュアルは充分「厚い」部類に入ると思うぞ やっぱ3000円出してたのしいRuby第2版買わないとどうにもならん 最初に4時間ほど使って本読んでおけば10分で見つかるものを オンラインヘルプとへなちょこチュートリアルで1時間かけて探すのはアホらしい
631 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 21:58:40 ] >>629 本気で言ってる? 「組み込み定数」という文字のどこをどう見れば 「RubyにはSTDOUTというIOオブジェクトの定数があってputsやprintのデフォルトになってる」って思いつくんだ?
632 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:03:55 ] 組み込み定数というページを見れば組み込み定数が載ってるよってことだと思うが
633 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:05:46 ] わからんといってる人にわかると言い張っても何も解決するはずもなく
634 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:11:12 ] 日曜プログラマじゃなくて、ただのバカなんだな
635 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:23:40 ] 「わからない俺のほうが正常なのだ」と言い張る馬鹿には もう何も言えることは無いものな・・・。
636 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:28:41 ] ここは初心者に優しくないスレですね とりあえず>>622 には、俺も書籍の購入をすすめる でもそれに加えて、リファレンスマニュアルの内容は一通り把握した方が良い (どこに何が書いてあるか、が分かるぐらいには) HTML Help版なら検索も楽だよ
637 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:00:28 ] スクリプト言語に馴染みある人なら、特にRuby本買う必要ないと思うなぁ。 スクリプト言語Rubyの2分冊のやつ買ったけど、ほとんど見ないしWebの リファレンスですませてる。 Webのリファレンスですまない内容って、結局本にものってなくて、 メーリングリスト検索か、ソース読むしかないし。
638 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 23:01:47 ] まぁ救いは、Rubyのソースコードが綺麗に書かれていることくらいか。
639 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 01:46:46 ] Rubyにまともなデバグ環境ってないの?
640 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 02:03:54 ] まともな人はRubyを選びませんから
641 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 02:08:18 ] 10年後にはRubyが主要な言語になってるよ。
642 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 02:15:54 ] >>641 (期待も込めて)ハゲドウ
643 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 02:27:37 ] >>641 無理。
644 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 02:28:42 ] >>643 お前何も分かってないんだな。
645 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 02:38:59 ] >>639 ttp://www.ruby-lang.org/ja/man/html/debug.html
646 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 02:39:53 ] >>645 それはまともじゃない
647 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 02:55:29 ] 戦略としてはアレだ、PerlのカリスマであるラリーウォールをRuby陣営に 引きずり込もう、なんとしても。 どうしたらいいか? -なにはともあれラリーウォールと合意を採る -Perlモード作って、Perl6完全互換Rubyを作る -Perlコミュニティを取り込む -。。。 こりゃ不可能だww だがカリスマ性は重要。MatzはMatzだが、ラリーと どうしても比較してしまう。
648 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 06:19:43 ] Rubyのチートシート集(チートシートとはカンニングペーパーのことです) Ruby and Ruby on Rails cheat sheets >> Scott Klarr www.scottklarr.com/topic/104/ruby-and-ruby-on-rails-cheat-sheets/
649 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 07:00:19 ] >>647 Ruby本スレ向きの話題だが・・・ ジョークで言っているのだろうが、現実的に考える 人というのは、振り向け振り向けと言っても、振り向いてくれないもの 向こうから来てくれる魅力のあるものを提供する必要がある -Parrot上でRubyを実装 -RubyからもPerlの膨大なライブラリを使えるようにする -ちょっと使ってみようと思わせる、移行しても不利益がないと感じさせる -多くのPerlの人たちがRubyに興味を持つ -そのうちラリーウォールが気に留める だな 引きずり込もうと考えてはあかんと思う。得たいならまずは与えることだろう。
650 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 08:04:18 ] Rubyをアニメ化すれば、ラリーも鞍替えしてくれるに違いない。
651 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 08:40:51 ] そこでRubyちゃんですよ
652 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 10:13:44 ] >RubyからもPerlの膨大なライブラリを使えるように これ確かあったんだけど、もうメンテされてないんだよな。
653 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 11:55:46 ] >>652 kwsk とりあえず、Acme::JapaneseAvActress が動けばいい
654 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 13:00:43 ] >>653 ttp://www.yoshidam.net/Ruby_ja.html#perl 自分は試せる環境がないのでそのへんはよろしく。 「Ruby Susieプラグイン」でググると手繰って辿り着けたハズ。
655 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 17:04:38 ] AmritaでのHTML出力でわからない所があるので質問させてください テンプレートにこう書いといて <tr id="table1"> <td id="name"><td id="author"> </tr> data = { :table1=>[ { :name=>"Ruby", :author=>"matz" }, { :name=>"perl", :author=>"Larry Wall" } ] } こうすりゃサンプルにある通り <tr> <td>Ruby</td> <td>matz</td> </tr> <tr> <td>perl</td> こうでますよね。 この時に tr の属性値を変えるのってどうすればできるんでしょうか? :table1=>[ Amrita::a(:value => "test"){:name => "Ruby"} ] だと文法エラーになっちゃうんですよね... Amritaのバージョンは調べ方がわからなかったので ファイルの作成日時だけ書かせて頂くと、2003/03/09になっています
656 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 23:04:16 ] 煽りじゃなくて、Scheme(or Lisp)に有って、Rubyに無い機能ってある? あるとしたら、その機能って必要?他の機能で代用可能?
657 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 23:07:02 ] >>656 S式
658 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 23:08:32 ] そりゃLispではない以上 Lispにあるものをすべて備えているわけがない すべて備えたらそれはただのLispだ 本スレで聞くといろいろ細かいこと教えてもらえるかもよ
659 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:31:39 ] 質問というよりも言語仕様の問題に近いのかもしれませんが、 どうしてRubyにはインクリメントならびにデクリメント演算子がないのでしょうか? 実質 x += 1 で何も問題はないのですが、 この表記は個人的になんか気に入らないので、納得のいく理由が欲しいのです。 調べたりしてもなぜないのかまで踏み込んでいるところが見つからなくて……よろしくお願いします。 前置や後置でややこしいからかな……などと思いましたが、 それならば後置限定で採用するなりすればいいじゃないかと思うのは浅知恵でしょうか? ならびに x.next x.succ で後置インクリメントじみた挙動が実現できるのは知っていますが、 インクリメントの意味合いでこのメソッドを使用するのは感心できる行為なんでしょうか? またその場合、インクリメントはメソッド、デクリメントは演算子とアシンメトリになってしまうのですが、 なんかもう全部ひっくるめて、ここらへんはどう解釈すればいいんでしょうか?
660 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:41:44 ] >>659 現行のRubyにインクリメント演算子が無いのは言語作成者のポリシー。 10年も前のMLでの発言だが、基本的には変わってないはずだ。 ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/5323 > すんません.この件は以前から指摘されているのですが(演算子はC > に似ているのに++と--は対応する演算子が無い),++の動作が本質 > 的に「変数を操作する」ものであるため,変数がオブジェクトでな > いRubyでは導入できないでいます.++や--の「オブジェクト指向的 > 意味」がRubyの他の部分と整合性を保ったまま定義できれば採用し > たいのですが…. うまい実装の仕方があれば要望として取り入れると思うぞ。
661 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:47:56 ] あと > x.next x.succ で後置インクリメントじみた挙動が実現できる できないと思うぞ i = i.succ と書くことは i += 1 と書くのと見栄え的にも手間的にもたいして変わらないんじゃないかと
662 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:49:15 ] Cだとx++;で済んで簡潔なのかもしれんが、 例えばループ書くのに使うときとかは、ブロック使ってメソッドに抽象化して使う ようにして、元が多少ダサくなるのは見逃してくれ。
663 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 01:57:55 ] なんでインクリメント作れないのかは 「整数オブジェクトを破壊的に変更できないから」というのもあると思う
664 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 02:11:45 ] 俺もRuby使って最初に躓いたのが、++と--が使えないことだったw Matzらしくもない。こんなんとっとと取り込んじまえばイイヤン。
665 名前:659 mailto:sage [2008/02/08(金) 02:15:06 ] >>660-663 まとめてですみません。素早いお返事ありがとうございます。 確かにそう考えると合点がつきますね。 自分で考えても全然納得できなかったのですが、ようやくすっきりしました。 ありがとうございます。 >>661 できませんね…… succをリファレンスで調べたときに「インクリメントの代替はあるじゃん!」と勘違いして、 そのままずっと勘違いし続けてたみたいです。重ね重ねありがとうございます。
666 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 02:18:50 ] >>660 の「変数がオブジェクトでない」ってどういう意味?
667 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 02:20:24 ] >>665 え〜納得しちゃうの?w ごねようぜ・・・w
668 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 02:35:19 ] >>667 「しんたっくすしゅがーとかでさいようしましょうよ〜」とかでいいですか?w いや本当はちょっとごねたいんですけど、なにぶん『初心者スレッド』で質問している程度なんで 納得した先にできることがないっす。 += とか本当は嫌いなんだけどなあ……みたいな感じで。
669 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 02:41:47 ] >>668 かわいくゴネたら、俺がパッチ作って匿名でRubyメーリングリストに なげるっていう条件でどう?w かわいくなかったら、作らないw
670 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 03:40:39 ] >>666 単なる名札。
671 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 03:59:32 ] >>659-670 先日、io-languageスレで、++ を実装しようとしてこねくり回してたところだったんで、 タイムリーすぎて吹いた なんでスマートにできないかというと、 メソッド内で、メソッドを呼んだオブジェクトを、格納した変数に代入できないから。 で、スマートな解決法はある。 Fixnum なら、Fixnum に 中身のデータを設定するメソッドを作ってやればいい。 例えば、Fixnum.set_value() みたいな。 ただし、Rubyのソースをいじるはめになるだろう どーしても、Rubyのコードでやりたければ、Fixnumのメンバを持った、 Fixnumのラッパーを作るしかないだろうな。 そうすれば、簡単に実現できる。 結局、数字のリテラルを書くように使えず、そのクラスをいちいち new しないといけないのが面倒だが
672 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 04:00:27 ] 変なところで、句読点打った orz > メソッド内で、メソッドを呼んだオブジェクトを、格納した変数に代入できないから。 メソッド内で、メソッドを呼んだオブジェクトを格納した変数に、オブジェクトを代入できないから。
673 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 04:02:27 ] > 「整数オブジェクトを破壊的に変更できないから」というのもあると思う ゲ、>>663 が簡潔にまとめてるじゃないか ・・・ orz
674 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 05:28:31 ] >>660 残念ながら松本が++が嫌いだと言ってますので多分ないでしょう。
675 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 06:12:21 ] a.++ で万事解決
676 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 07:59:16 ] >>675 > a.++ > で万事解決 だーかーらー Rubyの数関係のオブジェクトはイミュータブル、ってのがわかってないダロオマエ
677 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 08:24:51 ] rubyのオブジェクト指向度の低さに唖然・・・
678 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 08:48:36 ] smalltalkerが来ましたか
679 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 09:05:54 ] Smallalk 使いから見ると Ruby はリフレクションが貧弱だよね。 これじゃ、まともなリファクタリングブラウザも作れないだろう…と。
680 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 09:14:09 ] a.++! でよくね
681 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 09:36:37 ] a = 1 b = a a.++! p b
682 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 10:24:56 ] Smalltalkから馬鹿にされるのはしかたないけど、C++から馬鹿にされると釈然としないかも。
683 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 10:39:02 ] irb> n = 100 irb> p [n, 100, 99+1, 101-1, 99.succ, 'd'[0], '100'.to_i].map{|e| e.object_id} [201, 201, 201, 201, 201, 201, 201] Rubyでは、同じ整数値である限り、同じオブジェクト
684 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 11:33:22 ] C++とか、 プリミティブ型があるJavaからも馬鹿にされたくはないな
685 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 11:53:57 ] >>683 スゲー
686 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 12:53:58 ] >>683 同じ整数値っていうかFixnumの場合だけじゃまいか irb(main):002:0> [(2 ** 30).object_id, (2 ** 30).object_id] => [21803310, 21802580]
687 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 12:59:06 ] >>679 >Smallalk 使いから見ると Ruby はリフレクションが貧弱だよね。 >これじゃ、まともなリファクタリングブラウザも作れないだろう…と。 SmallalkじゃなくてSmalltalkな。 それはいいとして、>>679 にはぜひSmalltalkのよさを語ってほしいな。 Smalltalkの強力なリフレクション機能がどんなものか知りたい。
688 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 13:22:15 ] >>687 たとえば(リファクタリングとは直接関係ないけど)、くだんの #++ とかの実装は、 Ruby の貧弱なイントロスペクションじゃ逆立ちしても無理…とかいう話?
689 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 14:20:18 ] >>688 #++は>663,671,672,676,683。README.EXT(.ja)を参照。 誤解を恐れずに簡略すると実はFIXNUMだけオブジェクトじゃない。 オブジェクトじゃないから状態(値)を変更できない。 値の変更は変数に対する操作(代入)で代用。
690 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 14:25:58 ] 実装の問題は別として >>681 の p b で 2 が出力されておk、という人は多くないと 思うわけだが。
691 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 14:54:58 ] Hash#compare_by_identityって破壊的なのに!つけないんだな これだからrails厨どもは
692 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 14:57:01 ] >>689 Smalltalk も SmallInteger(Fuxnum 相当)は事情は同じだよ?
693 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 16:26:09 ] >>687-692 SmallTalkスレで聞いてきたよ。 アラン・ケイも認めた!Ruby>>>>>Smalltalk pc11.2ch.net/test/read.cgi/tech/1150106090/169-171 SmallTalkでも、破壊的に変更できない事情は同じで、 そこを強力なメッセージとリファクタリングの言語機能でカバー 力技だから、スマートでないと言われたらそうかもしれない。 Matzは嫌がりそうw
694 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 16:27:46 ] x リファクタリング o リフレクション >>687-688 にturareta
695 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 16:47:16 ] >>693 だが Squeak Smalltalk を参考に作られた Rubinius ならきっとやってくれる!
696 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 16:49:36 ] C#の完勝ですね
697 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 20:39:22 ] クラス変数とかインスタンス変数ってあるけど、モジュール変数的なのってないの? 自作のモジュールに含まれるクラスから自由にぺとぺと触れる変数が欲しいんだけど…
698 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 20:42:40 ] モジュール内でクラス変数を定義すれば俗称でモジュール変数と呼ばれてるものになるよ
699 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 20:54:51 ] >>698 そうなのかーありがとー! ちなみに↓のが「@@tempって初期化されてなくね?」って言われるのはなんでなん? ttp://www.ruby-lang.org/ja/man/html/_CAD1BFF4A4C8C4EABFF4.html#a.a5.af.a5.e9.a5.b9.ca.d1.bf.f4 のいちばん最初の例とか見ると平気そうに思えるんだけど… module Test @@temp = "test" class TestTest # def initialize # @@temp = "test2" # end def print puts @@temp end end end Test::TestTest.new.print
700 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:04:40 ] ネストと継承がわかってないようだね
701 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:09:55 ] マニュアルにある通り、「上」のクラスのサブクラスかインスタンスメソッドにしないと読めないぞ モジュールを継承することはできないからincludeする。…できないはず。まあいいや。 module Test @@temp = "test" class TestTest include Test # def initialize # @@temp = "test2" # end def print puts @@temp end end end Test::TestTest.new.print 個人的にはあまりきれいに思えない
702 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:18:33 ] >>700 継承?わからんので教えてほしいかも >>701 自分が所属してるモジュールもincludeできるのかー でも、確かに美しくないね 質問を変えると、例えばDBの接続やらなんかのオブジェクトを 同じモジュールのクラス間で共有して使い回したいとすると、 なんかいい方法ってある?
703 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:23:19 ] 定数
704 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:23:30 ] クラス変数自体が存在微妙だからな クラス内定数にハッシュ設定して読んだり書いたりしたほうがマシ module Test TEMP = {'str1'=>"test"} class TestTest def initialize TEMP['str2']='test2' end def print p TEMP end end end Test::TestTest.new.print $ ruby test.rb {"str1"=>"test", "str2"=>"test2"}
705 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:26:37 ] >>702 そもそも、たいていの場合ならクラス間で共有して使いまわすよりも initializeの引数として渡した方が(コンポジションにした方が)いいと思う
706 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:29:03 ] もうdef initializeのあとに@ナントカって10個くらい書き続ける仕事はいやだお
707 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:40:53 ] >>704 そんなんできるのかー でも定数に読み書きするのはなんかきもちわるい気もするなぁ… >>705 いちいち渡すのがめんどくさい気がしたんだ
708 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:52:59 ] >>707 定数ってのは、同じオブジェクトを指し続けているという意味であって その中の状態は不問だからな。 オブジェクトのほうを不変にするには.freezeする。
709 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:56:53 ] >>706 少数のオブジェクトにまとめろよw それができないようなクラス構成なのかもしれないけど >>707 渡すのが面倒なのは確か でもテストのことを考えると、引数で明示的に「どの値を使うか」を指定できる方が便利だよ
710 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:58:21 ] STR = 'before' STR.replace('after') puts STR これはSTRが指すオブジェクトが変更されないから警告出ないよね このへんまで説明してる初心者向け解説はあまり見ないけど
711 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:01:28 ] >>708 >>710 そう書かれるとなんか自然に見えてきたぞ… >>709 DBの接続とかMechanizeのオブジェクトとかを渡したいので「どの値」とかは特に関係ない件 むしろRuby慣れてないから引数でオブジェクト渡すと参照渡しになってるのかどうかさえ知らん
712 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:15:07 ] >>711 自分で注意深くコードを書いて試すといい ちなみにいわゆる参照渡しだ class Test def initialize(str,h) @str = str; @h = h end def modify @str.replace('MODIFIED') @h['MODIFIED'] = 'MODIFIED' end end str = 'default' h = {'key'=>'value'} Test.new(str,h).modify p str p h # ================================ $ ruby ./test.rb "MODIFIED" {"MODIFIED"=>"MODIFIED", "key"=>"value"}
713 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:22:01 ] >>712 昔はこれを意識したコードを書いてたんだけど 最近はもうこういうとこに気を遣って手品みたいなことするのめんどくさくなって class Test def initialize(str,h) @str = str.dup; @h = h.dup end def modify @str.replace('MODIFIED') @h['MODIFIED']='MODIFIED' end def result return @str,@h end end str = 'default' h = {'key'=>'value'} test = Test.new(str,h) test.modify (str,h) = test.result puts str p h こんなコード書いてる たいていこれで済むし
714 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:25:42 ] 「参照の値渡し」ね
715 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:37:35 ] そこが「いわゆる」に含めた意味だろうな。
716 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:39:50 ] Gaucheのwww.cgi.testみたいなやつない? とりあえずRubyにCGIパラメータ渡したいんだけど。 ブラウザでちまちまやるの面倒くさくて。。。
717 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:49:23 ] ~$ cat cgi.rb require 'cgi' cgi = CGI.new p cgi.params ~$ ruby cgi.rb 'title=ruby&creator=matz' {"creator"=>["matz"], "title"=>["ruby"]}
718 名前:655 mailto:sage [2008/02/08(金) 22:51:13 ] あれ? スルーされてる…。 何か質問の仕方、もしくは場所がまずかったですか?
719 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:56:01 ] Amritaというものを使ってる人がスレにおらんのだろう
720 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:57:44 ] >>691 それ言っちゃうと、Array#shiftとかも不統一だよね。
721 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:02:17 ] shift,unshift,push,popあたりはperlから受け継いでるからな。 !がついてないからといって破壊的じゃないとは限らない。
722 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:21:24 ] emacs+ruby-mode.elで書いていて質問があります。 ヒアドキュメントを記述して、頭の方でruby-indent-exp(再インデント)を実行しても、 終端行以降に記載した部分がインデントされません。 もし対処法ありましたら、教えて下さい。 (もしくはそういう書き方をしないのでしょうか) -- def hoge() print <<-EOT こんばんは。 EOT # <= ここ以下インデントされない end def foo() print <<-EOT こんにちは。 EOT end -- emacs->22.1 ruby-mode-> r15297
723 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:34:26 ] >>718 ごめん普通に見逃してた Amrita.aを使うなら :table1=> Amrita::a(:value => "test"){[:name => "Ruby"]} でOK 今やるなら、それよりもamrita-alteredの属性値展開を使う方がいいと思う
724 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:42:35 ] >>716 ふつうに QUERY_STRING='a=1&b=2' ruby mycgi.rb とすればよくね? POSTなら ruby mycgi.rb < request.txt まあWindowsならどうやるのか知らないけど。
725 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:45:45 ] ruby-modeのインデントは微妙に信頼性が低くて困る def hoge =begin なんとか =end end を def hoge =begin なんとか =end end にして潰してくれたときには参った 最新版では直ってるのかね >>722 終端文字列の直後の行を正しいインデント量に手動で直してから再インデント
726 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:15:46 ] >>717 >>724 ありがとうごぜえますだ。
727 名前:722 mailto:sage [2008/02/09(土) 00:53:14 ] >>725 ↓こんな感じでグダグダです def hoge =begin なんとか =end end >終端文字列の直後の行を正しいインデント量に手動で直してから再インデント うまくいかないですorz emacs 21.4でも同じ
728 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 03:25:48 ] windows XP proでVisualuRuby上(ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32])で Susie::Plugin library for Rubyを使いたいのですが、ソースからコンパイルするしかないのでしょうか? ttp://www.yoshidam.net/Ruby_ja.html#susie をDLし解凍したものを ruby\lib\ruby\1.8\susie 下に 置いてもrequire "susie"ができないので… 他にsusieを使う方法ってあるのでしょうか?(COM経由とかではなく)
729 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 10:08:51 ] 全く使ったことないが、require 'susie' という書き方で探されるのは ruby\lib\ruby\1.8\susie.rb だと思うぞ
730 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 10:10:36 ] susie/susie
731 名前:デフォルトの名無しさん [2008/02/09(土) 10:21:37 ] exec() や system() メソッドで、 コマンド実行後に独自の入力プロンプト(入力待ち)状態になるコマンド(ftp, sqlplus 等)を実行したあとに、 さらに、そこへ入力を続けるようなことはどうすれば出来るでしょうか。 以前、どこかのサイトでその方法を見かけて、使ったことがあったのですが、 そのコードが手元に残っていなく、サイトを探してもみあたらなかったため、 質問させて頂きました。 よろしくお願いいたします。
732 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 11:00:53 ] >>731 標準で付いてるexpect.rbが使えるケースかも?
733 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:16:41 ] POPFileというベイジアンフィルターソフトの設定画面が、ローカルにたてたhttp鯖に接続して行う形になっています。 スパムを誤認したメールがたまりまくって手動では無理なため、一括で、教育しなおしたいのですが、 httpのPOSTを簡単に扱えるライブラリはないでしょうか? hpricot的にお手軽にPOSTしたいのですが・・・
734 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:25:44 ] net/http のどのへんがダメなのか教えてくれると代替案があるかも
735 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:29:23 ] 自己解決した! WWW::Mechanize というのを発見しました。 お騒がせしました。ありがとうございました。 > net/http んーなんていうか、httpを意識しないといけない、低レイヤーっぽい感じがします。 hpricot使ったら他に移れないくらい便利だったので、 似たような高レベルなラッパーがないかな、と。
736 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:32:55 ] require 'rubygems' しなければならないのがどうにもなあ いや、贅沢なこと言ってる自覚はあるが >>735 WWW::Mechanizeが利用できる環境なのならそれ使うといいぞ
737 名前:735 mailto:sage [2008/02/09(土) 19:00:00 ] 環境変数RUBYOPT を -rubygems にしておくとgem関連は楽っすよ
738 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:50:45 ] >>737 は問題を理解してないと思った
739 名前:735 mailto:sage [2008/02/09(土) 21:18:13 ] あ、ええと、レンサバとかRubyGemsをインスコできない環境とかの話かな? それなら失礼しますた
740 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 21:48:52 ] 本家のヘルプ以外のライブラリなどのドキュメントを見ようと、 コマンドラインのドキュメントヘルプを試したのですが、いまいちどれがどうなのかわかりません。 ri:標準。英語ドキュメント。サンプルソースなどもしっかり refe:gem install refeで入る。日本語ドキュメント。全然少ない。メソッド名の部分一致検索ができる。 rdoc:標準。エラーでて動かず riは、詳細が載っていてわかりやすいのですが、 検索しずらい・・・ refeみたいに、部分一致だったらいいのに
741 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 22:18:25 ] gemしかないならともかく、tar玉あるんだから $HOMEでもどこでもすきなようにインストールすればいいじゃん。
742 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 22:38:10 ] >>740 > rdoc:標準。エラーでて動かず rdocはriのデータを作るコマンド。
743 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 22:51:39 ] >>724 なにそのめちゃくちゃ端折った説明 現状は「英語でいいならri、日本語がいいならReFe」という住み分けになっとる ReFeの内容がヘナチョコなのは日本語マニュアルがヘナチョコだからだな むしろ俺はRDocとかRDとかのマニュアル用書式がわからん 何のときに == で書くのかとかさっぱりだ
744 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 22:57:07 ] あれだ、もうちょっとMatzがユーザ愛を持って、マニュアルに全身全霊を 傾ければ、Rubyはもっと愛されると思う。願望だけど。 「そんなの面白くない」とか「Matzは開発を優先すべきで、他の人が やったほうがいい」という反論は重々承知だが。
745 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:00:05 ] 優秀な言語開発者が優秀な初心者向けマニュアルを記述できるとは限らないのは 例の分厚くて黄色くて背が硬い本で痛いほどわかっただろうに
746 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:02:37 ] >>745 いやでもな、とてつもなく優れたオープンソース開発者が、とてつもなく 優秀なドキュメントを提供する人間である例が目の前にあるとさ。 すごい!と思ってしまうのよね。Vimの開発者のことだけど。
747 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:03:35 ] 日本語マニュアルがイマイチなのの原因は何なのよ 今のRubyユーザー数ならWikiシステムあたりを使って一斉に取り掛かれば 1年くらいで今の倍くらいのボリュームにならんかね
748 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:05:30 ] >>747 RDだかRDocだかで記述しないと取り込めないからRDだかRDocだかで書いてね、というのがかなり壁 PukiWiki互換で書いていいよと言われたら一気に進みそうな気がする
749 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:09:04 ] まぁMatzはEmacs信者で、Bramのことなんかよく知らないだろうけど。
750 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:24:35 ] マニュアル内容の改定に関しては計画はあるんだし参加しようよ doc.loveruby.net/
751 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 02:39:04 ] 例のデイトレ男に一億くらい恵んでもらってフルタイムのドキュメント書きを雇えばいいんだよ
752 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 02:57:58 ] なんで、ここで B・N・Fこと小手っちゃんがww
753 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 04:51:26 ] いやもうmatzは開発しなくて良いよ。 MLのやり取り見てると、正直もう1.8+αで良いと思うし。
754 名前:デフォルトの名無しさん [2008/02/10(日) 05:15:38 ] >>741-743 ありがとう マニュアル用のコマンドとして使えるのは ri と refe なのね。 gemsに fxri っつーri GUIフロントエンドがあったから入れたら、まだ使いものにならなかった orz ・起動が遅い ・riのエントリーの読み込みに20分近くかかる(全部よんでると20000エントリくらいになる) ・全部読みこまないと、検索できないw ・検索中に、カラムをクリックすると落ちたwwww ・読み込んだ データ をキャッシュしないので、次回起動時もまた20分かか(ry 読み込んだ後は、リアルタイムに部分一致検索できるし、 irbが立ち上がっててすぐ試せるので、すごく理想的! いいのにもったいない!! そして今気づいたのですが、rubyのdocディレクトリに Programming Ruby のHTMLヘルプがついているんですね。 英語だけど、サンプルコードはあるし、入門にはよいですね。
755 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 11:15:30 ] ドキュメントは文句だけいって手を動かさない人が多いから進まない
756 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 11:33:43 ] >>755 >>750 読め
757 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 11:40:12 ] オフィシャルにする気マンマンなとこが敷居高いのは仕方あんめえ 変なのが混じりにくいわけでむしろそれ自体は頼もしいとも思うぞ この調子だといつ完成するのかわからんのが難だが
758 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 11:53:10 ] 19株売れよwwww
759 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 19:08:04 ] >>743 自作のクラスのマニュアルとか作れたらRRSEで楽だろうなと思うんだけどね メソッドにカーソルが当たったらEmacs下部のミニバッファに1行マニュアル表示
760 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 19:36:18 ] 特に意味のないサンプルコードなんだけど、 require "Kconv" puts "隕".toutf8.tosjis とかするとなんも表示されなかったりするんだけどなんでだ? ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]に標準添付のヤツ
761 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 20:23:41 ] >>760 puts "隕".toutf8 の時点で空文字列が返っているのなら kconv が文字コードの判定に失敗してる。
762 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 20:32:17 ] require "Kconv" require 'nkf' p "隕".toutf8 p "隕".kconv(Kconv::UTF8,Kconv::SJIS) p NKF.nkf('-Sw',"隕") # 結果 "\356\242\246" # 誤り "\351\232\225" # 正しい "\351\232\225" # 正しい
763 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 22:44:27 ] 漢字一文字なんて、どうやってエンコーディングを判別するというのだ(w
764 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:40:14 ] Rubyの正規表現で前方不一致(否定後読み?)を指定するにはどう書けばよいでしょうか? 秀丸やEmEditorにおける(?<!pattern)です。 具体的にしたいことは、"B"の前に"A"が来ないときだけ "A"の前に"_"を加えるという処理を行いたいのです。 CB #=> C_B AB #=> AB
765 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 23:54:13 ] 1.8: string.gsub(/(\A|[^A])B/, '\1_B') 1.9: string.gsub(/(?<!A)B/, '_B')
766 名前:764 mailto:sage [2008/02/10(日) 23:54:36 ] 訂正 × "A"の前に"_"を ○ "B"の前に"_"を
767 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 00:03:08 ] >>763 勘 あるいは 運
768 名前:764 mailto:sage [2008/02/11(月) 00:03:10 ] >>765 すみません。間違いに気づいて訂正を書いている間にレスをいただいたようです。 ありがとうございました。 1.9では実装されているのですね。
769 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 05:02:35 ] >>762 把握した >>763 いや、"隕"が入ってるときにおかしくなるなぁつー話だったさサンプル悪かったごめん
770 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 07:15:07 ] シフトJISの半角カタカナ偶数個かEUCか、は同じバイト列だったりするから、 エンコーディングは可能な限り明示的にすべきと思うけどね。
771 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 09:27:46 ] toutf8とかtoeucとかtosjisみたいなのは、本当は「selfを○○に変換する」という動作じゃないんだよな 「selfのエンコーディングが△△だと推測した上で○○に変換する」という動作をしてる だから、△△であろうという部分の推測がコケると変な文字列になる 元の文字列のエンコーディングは指定しておくべき 10文字くらい余分に書かないといけないが、そのほうが動作も確実に速い
772 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 11:54:23 ] >>759 検索できるマニュアルって自分で追加して作れるの?
773 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 12:12:22 ] 無理なんじゃない? いや、やってやれなくはなさそうだけど
774 名前:デフォルトの名無しさん [2008/02/11(月) 21:27:24 ] >>771 テキストエディタでも、全角文字少ないと誤認するのと一緒だよなあ
775 名前:655 mailto:sage [2008/02/11(月) 22:46:06 ] >>719 Amrita使ってる人って少ないのかな(´・ω・`) >>723 なるほど、そう書くんですね! …ということは tr の属性値を項目ごとに変えるのはできないわけですよね、、 amrita-altered を試してみることにします
776 名前:デフォルトの名無しさん [2008/02/12(火) 00:47:19 ] 常にUTF8として ENV['PATH_INFO']を受け取りたいのですが うまい方法はないでしょうか? 下のコードで大体はうまくいくのですが 例にあげてるように短めのカタカナは判別、変換に失敗してしまいます $KCODE="UTF8" require "cgi" require 'nkf' class String def to_utf8 NKF::UTF8 != NKF::guess(self) ? NKF::nkf("-w", self) : self end end print "Content-type:text/html;charset=utf-8\n\n" print ENV['PATH_INFO'].to_utf8 #アテレコ NG #アテレコテ OK #アテレコア NG #アレコテ OK #テレアコ NG
777 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 00:52:23 ] % time python -c 'range(0,10000000).sort' 0.769u 1.022s 0:01.79 99.4% 0+0k 0+0io 0pf+0w % time ruby -e '(0...10000000).sort' 3.170u 0.259s 0:03.42 100.0% 0+0k 0+0io 0pf+0w
778 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 01:13:47 ] >>776 「UTF8以外で送ってきたら頃す」とCGIを使うページのトップに朱書きする
779 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 01:31:27 ] >>777 そのコード違うぞ ボトルネックはこれだ $ time ruby -e '(0...1000000).to_a' real 0m2.535s user 0m2.040s sys 0m0.490s Range#to_aは内部的には以下と似たようなことをしてて、 数値が大きくなるとこれが非常に遅い arr = Array.new range.each do |i| arr.push(i) end return arr
780 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 01:44:25 ] >>778 が最善策 「9 27 45 81」は3の倍数でしょうか9の倍数でしょうか? という問いに近い これは「6」や「3」や「321」が含まれない限り同定できない
781 名前:776 mailto:sage [2008/02/12(火) 02:01:17 ] >>778 >>780 無理なもんなんですか…。 wikiとかで似たような処理をしてるかと思ってたんですが 基本的に違う処理なんですね。 >>778 の方法だと法律上ややこちらが不利な気がするので guessで判断できないときは別の処理にまわすことにします
782 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 02:08:50 ] >>781 Webブラウザ経由の場合はUserAgentを見るという手も… UTF-8なページからPOSTさせるとか
783 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 02:16:44 ] Ruby/SDLでWindows向けゲーム作ろうと思うんですが Windows標準フォントを引っ張るのってどうやればいいでしょう? 例えばTTFフォント指定で"MS ゴシック"と指定すると、 どのコンピュータでも一意にMSゴシックを引っ張るという事です
784 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 02:27:26 ] ダミーで既知な文字列をhideen-inputなフィールドに埋め込んでおいて、 そいつがどういうバイナリになってるかを調べる手があったはず。
785 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 02:37:26 ] >>784 おーちょっと感動した 覚えとこ >>783 全く使ったこともなければ実行環境もないが > font = SDL::TTF.open('sample.tff', 24) という表記方法から考えて、どうしかして%WINDIR%\Fonts\msgothic.ttcにアクセスすればいいんじゃね とここまで書いてTTCじゃダメだろと思った TTCはTTFのカタマリだけど、TTFしか読めませんというやつはTTCは普通読めない Ruby/SDLには「いくつか埋め込み用フォントがあるようだけど、それでは用足りない?
786 名前:デフォルトの名無しさん [2008/02/12(火) 04:26:23 ] Miyakoが、MSゴシックとかメイリオに対応してた Miyakoのソースでも見たらどうかな?
787 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 08:37:53 ] >>783 ttp://www.kmc.gr.jp/~ohai/fontlist_rb.html ちなみにTTCは、Ruby/SDLのリファレンスでは読めることになっているが 俺の手元で試した限りでは成功しなかった Miyakoではどうやってるんだろう……
788 名前:デフォルトの名無しさん [2008/02/12(火) 16:28:42 ] コード生成機能を持たないフレームワークプリーズ
789 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 17:51:40 ] Webサーバ上の巨大ファイルをダウンロードしたいんですが、 ダウンロード状況を「30%」など表示するにはどうしたらいいですか? TCPSocket#readで数バイトずつチマチマ取得するしかないでしょうか?
790 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:00:13 ] 数バイト単位はアホすぎます
791 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:04:00 ] #readの引数に合わせただけです
792 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:05:13 ] >>789 ttp://0xcc.net/ruby-progressbar/ あとはopen-uriでopenするときに :content_length_proc で 最初のサイズ設定 :progress_proc で進捗伝達 をさせるようにすればいい
793 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:17:14 ] require 'open-uri' uri = URI.parse('gems.rubyforge.org/yaml ') total = 0 count = (0..100).to_a open(uri, :content_length_proc => lambda {|n| total = n; puts "#{n}バイトいきます"}, :progress_proc => lambda {|n| pc = (n.to_f/total*100).to_i if pc == count.first then puts "#{pc}%終了" count.shift end }).read # ===================================== $ ruby ./progress.rb 16047764バイトいきます 0%終了 1%終了 2%終了 3%終了
794 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:48:25 ] メソッドの引数にハッシュを取りたいです。 とり得るキーが多めにあった場合とか、うまく処理する方法ってありますか? キーは1個の場合も4個の場合もあり、複数のキーが互いに必須なこともあります。
795 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:53:08 ] >>792-793 なるほどこりゃ便利ですね open-uriのライブラリを掘り下げてみましたら なるほどキモになってる部分は Net::HTTPResponse#read_body {|str| .... } ですね ありがとうございました
796 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 18:55:43 ] うまく処理する方法とは? まず、まずい処理がどんなものか説明してもらおうか。
797 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:00:04 ] >>794 素直にやるとこうだと思うぞ def hoge(h) case h when h.has_key?(:param1) ... when h.has_key?(:param2) && h.has_key?(:param3) ... else raise "引数が不正です" end end :param1と:param2は背反でないと処理上困るのになぜか同時に指定されてる、 とかいうエラーへの対処は無視しろめんどくさくなるから 「同時に指定したら死刑」とかいう立て札でも立てとけ
798 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 19:01:42 ] >>794 質問の意味が良く分からないが・・・ >キーは1個の場合も4個の場合もあり、 case hash.size when 0 when 1 ・・・ >複数のキーが互いに必須なこともあります。 if hash.key?(foo) && hash.key?(bar) こんな感じじゃないか?
799 名前:デフォルトの名無しさん [2008/02/12(火) 21:35:04 ] >>792-793 open-uriってお手軽なだけかと思ったら、意外に融通利いてびっくりだ
800 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 22:13:34 ] もう見てないかもしれないが >>310 >>316 今北なので、亀レスで申し訳ない nowrite(true)、verbose(true) メソッドを使えばそれ以降 :noop=>true、:verbose=>true がデフォルトで設定される…はずなのだが Rakeのバグでshとruby以外のメソッドに適用されない つづく
801 名前:800 mailto:sage [2008/02/12(火) 22:15:10 ] 修正するには rake.rb に以下のパッチを当てればおk Index: rake.rb =================================================================== --- rake.rb (revision 639) +++ rake.rb (working copy) @@ -871,8 +871,8 @@ module FileUtils RUBY = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name']) - OPT_TABLE['sh'] = %w(noop verbose) - OPT_TABLE['ruby'] = %w(noop verbose) + OPT_TABLE['sh'] = [:noop, :verbose] + OPT_TABLE['ruby'] = [:noop, :verbose] # Run the system command +cmd+. If multiple arguments are given the command # is not run with the shell (same semantics as Kernel::exec and @@ -970,10 +970,10 @@ FileUtils::OPT_TABLE.each do |name, opts| default_options = [] - if opts.include?('verbose') + if opts.include?(:verbose) default_options << ':verbose => RakeFileUtils.verbose_flag' end - if opts.include?('noop') + if opts.include?(:noop) default_options << ':noop => RakeFileUtils.nowrite_flag' end
802 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 22:28:06 ] 既出でしたらすみません。トップレベルのインスタンス変数、selfについて質 問です。 クラス・モジュール定義内ではインスタンスメソッドの外に定義したインスタ ンス変数はクラスオブジェクト(Klass)のインスタンス変数になり、インスタン スメソッドとはselfが異なるのでアクセスできません。 class Klass @a = 1 <-- def foo \ @a <-----+-- 別物(selfが異なる) end end Klass.new.foo => nil しかし、トップレベルで定義したインスタンス変数はトップレベルで定義した メソッドからselfが同一なのでアクセスすることができます。 @a = 1 <-- def foo \ @a <-----+-- 同一(selfが一緒) end foo => 1 なぜトップレベルではメソッド定義内のselfとメソッド定義の外のselfが同一 になるのでしょうか。 rubyインタプリタが起動時に Object.new.instance_eval { *ここがトップレベル* } のようにしてトップレベルを作っていると解釈すればよいのでしょうか。
803 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 22:39:00 ] $ cat top.rb p self def hoge p self end hoge p self.class $ ruby top.rb main main Object
804 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:07:32 ] >>803 さん、ありがとうございます。 トップレベルのselfはObjectのインスタンスで評価するとmainというものが返っ てくるというのは理解できるのですが、トップレベルがどのようにして作られ てselfが設定されているのかがわかりません。 あと、なぜトップレベルのselfはmainという表記で#<Object:0x294dc>みたいな 表記にならないのでしょうか。 そういう言語仕様なのでしょうか...
805 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:24:52 ] >>804 トップレベルをオブジェクト指向として悩むのはあまりよくないぞ ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/8965 まあ、Module#privateされたでっかいObjectクラスの中身だと考えられなくもないけど
806 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:39:52 ] "main"と返るのはそう定義されてるから。(object.c) RubyのCソースは一部の例外を別にすれば見やすいから追いかけてみるとよい。
807 名前:804 mailto:sage [2008/02/12(火) 23:58:30 ] >>805 さん、>>806 さんありがとうごぜいます。 >>805 さん bladeのスレッド読んでみました。確かにEiffelやJavaよりもいきなり制御を書 けてしまうrubyのほうがありがたい気がします。 そういえば質問する前にbladeでnamazu検索してみたのですが、結果のリストが 表示されませんでした。壊れているんでしょうか? >>806 さん そうですね。rb_internあたりで萎えてしまうのですが。頑張って読んでみます。
808 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:01:03 ] あ、それ俺も気づいた。bladeの検索は死んでる。 今じゃgoogle site:使ってるなあ
809 名前:804 mailto:sage [2008/02/13(水) 00:24:48 ] そうかgoogle site:を使えばよかったのかー。頭悪いな > オレ >>806 さん、ソース読んでみました。 main_to_s rb_define_singleton_method(ruby_top_self, "to_s", main_to_s, 0); 拍子抜けしました。Init_Objectあたりをもっと深く読んでみようと思います。 ありがとうございました。
810 名前:783 mailto:sage [2008/02/13(水) 02:49:21 ] レスくれた方有難うございました。 確かにttcは読み込めなかったので Miyako入れる方向で探っていく事にします それにしてもruby/SDLの文字表示がこんなに弱いとは…
811 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 04:33:24 ] >>779 釣られてるよ。 >>777 のpythonのコードは、sortに()が付いてないから実際にはソートしてない。
812 名前:デフォルトの名無しさん [2008/02/13(水) 07:53:37 ] $ irb irb(main):001:0> l=[100,101,102,103,104,105,106,107,108,109] => [100, 101, 102, 103, 104, 105, 106, 107, 108, 109] irb(main):002:0> l.each_with_index do |item,idx| irb(main):003:1* puts "hit #{item}" irb(main):004:1> l.delete_at idx if 0==item%2 irb(main):005:1> end hit 100 hit 102 hit 104 hit 106 hit 108 => [101, 103, 105, 107, 109] irb(main):006:0> 意図したとおり奇数だけ残せたのですがhitの表示がなぜ偶数だけになっているか分かりません delete_atするより前でputs "hit #{item}"してるので全要素がputsされると思ったのですが。。。
813 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 08:07:34 ] 消す度にずれてるから p l とか puts "hit #{item} at #{idx}" にして見れば分かる delete_ifを使えばいいよ
814 名前:812 mailto:sage [2008/02/13(水) 08:28:52 ] 理解できました ありがとうございます delete_if使ってみます
815 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 09:05:53 ] >>811 python -c 'range(0,10000000).sort' real 0.0859320 user 0.0468750 sys 0.0312500 python -c 'range(0,10000000).sort()' real 0.0771435 user 0.0312500 sys 0.0468750 >>779 ruby -e '(0...10000000).sort' real 2.1707595 user 1.6875000 sys 0.1406250 ruby -e '(0...1000000).to_a real 0.3525165 user 0.2500000 sys0.0937500
816 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 09:10:38 ] 桁が違うとか紛らわしい ruby -e '(0...10000000).to_a real 1.6034130 user 1.4531250 sys 0.1406250
817 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 10:14:36 ] 10000000 を 10_000_000 とか 1000_0000 とか書けることは意外と知られてないし使われてないな irb> p 10_000_000 10000000
818 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 10:41:43 ] >>810 でもMiyakoでは特に変なことしてないみたいだぞ? api/font.rb を「TTF」で検索してみ
819 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 14:09:52 ] Pythonのマージソートは部分整列を利用してほげほげとかクックブックに書いてあったから range(0,10000000).sort() のソートにほとんど時間がかからないはず。 (参考:svn.python.org/view/*checkout*/python/trunk/Objects/listsort.txt ) Rubyはどうなのよ
820 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 15:29:39 ] マージソートなのか。 rubyはクイックソートだから、整列済みのものには不利だな。
821 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 15:34:42 ] >>820 それもあるけど、1.9だとシステム提供のqsortでなく割と高速なqsort実装を使っているので、その例だとPythonとほぼ互角の速度になる。
822 名前:デフォルトの名無しさん [2008/02/13(水) 18:19:53 ] "ID;本文"という形式のcsvファイルを読み込み、 本文だけを文節単位でわかち書き(半角スペースを挿入する)して 返すスクリプトを書きたいと思っています。 そのため、RubyからCaboChaにテキストを渡して処理しようと CaboCha0.53をインストールしたのですが、 肝心のCaboChaの呼び出し方がさっぱりわかりません。 CaboCha公式サイト(chasen.org/~taku/software/cabocha/libcabocha.html ) には「詳しくは, ruby/README…をご覧ください.」と書いてあるのですが そのruby/READMEがCaboChaインストールフォルダ内に見つからず… どなたか、インストール方法とRubyからの呼び出し方を 教えていただけますでしょうか。 ●実行環境 WindowsXP SP2 ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32] ※One-Click Installer - Windows 1.8.6-26 Final Release 使用 CaboCha 0.53(Binary package for MS-Windows)
823 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:18:25 ] >>822 CaboCha というのは全く使ったことがないけど、 そのページから落せるソース cabocha-0.53.tar.gz には ruby/README は入ってたよ。 中を読むとさらに test.rb を読めとあって、test.rb 内には コメントとかまったく書いてないんだけど、まあその辺は C ライブラリの 方を見て予想しろってことなんじゃないかと。 あ、Windows での tar.gz の伸長には適当になんかフリーソフトを探してくれ。
824 名前:デフォルトの名無しさん [2008/02/13(水) 20:44:51 ] Cgi = CGI.new ip = ENV['REMOTE_ADDR'] host = '' begin host = Socket.gethostbyname(ip)[0] rescue host = ip end Cgi.out{host} これでちゃんとリモホ名に変換出来る鯖と 出来ない鯖があるんですが、鯖の問題なんですよね?
825 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 20:52:30 ] rescueでエラー殺しておいてそういう質問するな SocketError: host not found が出るという話ならRubyのバージョンが悪いとかなんとかいうことになってた気がする エラー時にコマンドラインから外部コマンド使うとなんとかなるかも
826 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 21:08:44 ] >>825 すみません… 助言ありがとうございました!
827 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 21:31:37 ] require 'cgi' require 'socket' cgi = CGI.new begin cgi.out{Socket.gethostbyname(ENV['REMOTE_ADDR'])[0]} rescue cgi.out{CGI.escapeHTML($!.inspect)} end う〜ん、こうやっても特に例外は出てない様です… 変換出来ない鯖のRubyのversionは1.8.5でした…
828 名前:783 mailto:sage [2008/02/14(木) 02:31:38 ] ruby/SDLの日本語表示の質問した者ですが IPAフォントというフリーのttfを見付けたので Miyakoを入れずとも日本語表示は出来ました ただ、新たな問題としてボールドとイタリックの書体設定が出てきました 見る限りSDLやMiyakoにそういう機能は無いようですし… そもそもこういう書体設定はどういう理屈でやってるんでしょうか
829 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 02:35:27 ] >>827 とりあえず何かのファイルにENV全体を書き出してみたら? CLIENT_IPとかX_FORWARDED_FORとかVIAとかなら取れるかもしれない。
830 名前:828 mailto:sage [2008/02/14(木) 02:41:52 ] >>828 自己解決しました 思いっきりスタイルの設定部分見落としてたわ… 失礼しました
831 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 07:29:33 ] 正規表現でこういうのは無理? p "X(1)((2)Y)Z".gsub(/\([0-90-9]+\)/g, '') やりたいこと ・(1)(2)を両方取り除く わからんこと ・gオプションって無い? ・全角0-9の指定は無理? ※cygwin版ruby
832 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 07:30:27 ] ↑全角がまじっちゃったけど、( )は全て半角
833 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 07:36:47 ] jcodeかなんかrequreする必要があったような無かったような・・・ gオプションってマッチを1回で止めない、ってperlのおぷそんだったけ? それならデフォルトでそうなんじゃなかったっけか。
834 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 07:37:15 ] sub gsub
835 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 07:47:34 ] さんくす >>833 jcodeじゃgsubないっぽい [0123456789]て書かないと駄目くさい >>834 そうだった、gは必要ないな
836 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 10:51:43 ] >>831 jcodeをrequireして、 str.tr("0-9", "0-9").gsub(...) ただ他の関係ない全角数字も巻き込まれる :-)
837 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 11:00:58 ] >823 ありがとう。 結局、rubyバインディングをインストールするには Win用のCaboChaバイナリのほかに UNIX用のCaboChaとSWIGを落としてきて自分でmakefileしないと いけないようですね。
838 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 11:20:26 ] 全くカボチャやらメカブやらチャセンやら・・・ ズイキはないのっ!?
839 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 11:40:53 ] >>831 半角開きカッコ・半角または全角数字・半角閉じカッコ の並びを消去したいなら、正規表現はそれで問題ないぞ (たしかにgオプションは存在しないのでつけたら駄目だが) もし動作しないというなら、それは単に文字コード指定の問題だろう 対象文字列がShift_JISやらCP932やらならsを、日本語EUCならeつけろ irb> p "X(1)((2)Y)Z(3)45".gsub(/\([0-90-9]+\)/e, '') "X(Y)Z45"
840 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 14:16:13 ] >>839 確認してみたら通ったよ。 何が悪かったかといえば、コマンドラインで-Kオプションつけずに ネイティブでないエンコード使ってたからぽい だからコンパイル時にエラーになってた。
841 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 15:26:24 ] Rubinius で、Ruby にインクリメント演算子モドキを実装 - sumim’s smalltalking-tos ttp://d.hatena.ne.jp/sumim/20080214/p1 …バイトコードを探して加算するという力技
842 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 16:26:06 ] コンテキストがべたべたに見えてるのか、 Rubyはなぜかそれをやらなかったんだよね、 フレームのオブジェクト化。
843 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 16:26:39 ] rubyは、か。
844 名前:デフォルトの名無しさん [2008/02/14(木) 16:54:11 ] >>843 matzは、か?
845 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 16:59:21 ] >>842 しないほうがいいんじゃね?>>841 なんてどうかんがえても力業だし
846 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:07:43 ] この手のイントロスペクションが可能だと、デバッガを強化できるんだがな。
847 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:15:38 ] ドコに力点を置くかだよね 特に悪影響がないのなら導入すればいいわけで
848 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 18:33:31 ] ruby/SDLの日本語表示の質問してた者です 何度も何度も済みません… ttfのフォントで半角英数文字列を出力すると 全角幅で出てしまうんですが、何か調整する機能は無いのでしょうか? 一応ゴリ押しすれば、 文字列を各文字に分割して文字幅取りつつ各個表示 という風に行けそうではありますが…
849 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 19:45:01 ] >>848 何を言ってるのかよく分からないのですが、とりあえず mono.kmc.gr.jp/proj/rubysdl/?Works にある作品で、該当しそうなことをやってるものの ソースを読んでみたらどうでしょうか。 高橋メソッドとか文字表示に特化してそうだし、 ソースをちょっと見てみた限りTTF使ってるみたいだし、 実行してみてないので想像ですが、半角/全角が 区別されずに表示されるという事もないんじゃないかなあと思います。
850 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 20:27:32 ] >>848 俺の環境ではそういった現象は起こっていない(半角は半角幅で出力される) もう少しkwsk
851 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 20:35:06 ] フォントによってはそうなるよ ruby/sdlではなくfreetypeの仕様っぽい プロポーショナルなフォント使えば大丈夫だったと思う
852 名前:848 mailto:sage [2008/02/14(木) 20:49:34 ] ソース出した方が早そうですね フォントはIPAゴシックです SDL.init(SDL::INIT_EVERYTHING) screen = SDL.set_video_mode(SCREEN_W, SCREEN_H, 16, SDL::SWSURFACE) SDL::TTF.init font = SDL::TTF.open("IPAFont/ipag.ttf", 24) font.style = SDL::TTF::STYLE_ITALIC font.draw_blended_utf8(screen, "abc", 0, 32, 255, 255, 255) これで全角幅で出ます(Pゴシックも同じ) 「abc」でなく「a b c」という感じ
853 名前:848 mailto:sage [2008/02/15(金) 03:47:05 ] レスどうもです 色々試しましたがどうもフォント依存の問題みたいですね Arialだと普通に間合いが詰まってましたし …しかし日本語フォントで サイズ一定以下にすると表示がバグるとか不具合もあるようで これ本当にゲーム作れるのか…?
854 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 04:07:32 ] >>835 ここで愚痴るより作者にメールを送れYO! 反応のある確率はここより低いかもしれんが、 もしあった場合より的確な答が返ってくるだろうし パッチも当たるかもしれないじゃん。
855 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 04:33:18 ] 追試してみたけどそもそも文字が出ないw なにがわるいんだろ?
856 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 15:31:04 ] かなり亀だが >>797 case h when h.has_key?(:param1) ... これって期待通りの動作しなくね?
857 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 16:07:58 ] h === h.has_key?(:param1) って何が起こるの?
858 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 16:10:42 ] あ、逆か。 h.has_key?(:param1) === h って何が起こるの?
859 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 16:43:47 ] そのまんまだよ h が === 的に true と同一なら true、同一でないなら false が返る Hash は TrueClass に属してないから常に false だね
860 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 16:46:09 ] 変な書き方だった Hash は TrueClass にも FalseClass にも属してないから結果は常に false だね に変更
861 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 19:22:31 ] 休刊になったLinux Magazine全部入りDVDを入手 Matz御大による、初等Ruby講座(と探訪Ruby)の 存在を知り拝読(中) しっかし、なんつーわかりやすさなんでしょう なんでもないと思ってたとこでも 目からうろこが、ぽろぽろぽろぽろ… 開発者自身の手でここまでやさしく書かれた ドキュメントがあったなんて!と ちょっと感動しました 過ぎるほど今更ですみません
862 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 20:21:59 ] >>858 逆じゃないよ。(when式)===(case結果)で合ってる。
863 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 21:33:48 ] >>862 だから>>858 はそう書いてるんじゃないか?
864 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 21:49:36 ] case h じゃなくて case なんだろうね。
865 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 22:13:01 ] gem install したときに 所有者 root でインストールしようとするのを止めさせることはできますか? $ gem install --no-ri --no-rdoc hpricot make cc -I. -I. -I/usr/local/lib/ruby/1.8/i386-freebsd6 -I. -fPIC -O2 -fno-strict-aliasing -pipe -fPIC -c hpricot_scan.c cc -shared -Wl,-soname,hpricot_scan.so -L'/usr/local/lib' -Wl,-R'/usr/local/lib' -o hpricot_scan.so hpricot_scan.o \ -Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -L. -lruby18 -lc -lcrypt -lm -pthread -lc make install /usr/bin/install -c -o root -g wheel -m 0755 hpricot_scan.so /home/俺/rubygems/gems/hpricot-0.6/lib/i686-linux install: /home/俺/rubygems/gems/hpricot-0.6/lib/i686-linux/hpricot_scan.so: chown/chgrp: Operation not permitted *** Error code 71
866 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 00:35:29 ] 原因が絞られたので再質問します Ruby1.8.5にて、ユーザー権限でgem install hpricotしようと思いました。 しかし、root権限でインストールしようとしてしまってうまくいきません。 /usr/bin/install -c -o root -g wheel -m 0755 hpricot_scan.so レンタルサーバ(さくら)なので rbconfig の CONFIG の INSTALLキーに /usr/bin/install -c -o root -g wheel という文字列が入ってしまってるからのようです。 これを変更した上でgem install を実行させることはできますか?
867 名前:866 mailto:sage [2008/02/16(土) 01:25:16 ] あーできたー。っていうかこれ罠っぽい… さくらインターネットでrubygemsのインストールでコケる場合の対処 /usr/local/lib/ruby/1.8/i386-freebsd6/rbconfig.rb を見ると > CONFIG["INSTALL"] = ENV['RB_USER_INSTALL'] ? '/usr/bin/install -c' : '/usr/bin/install -c -o root -g wheel' とかいう記述がある よって setenv RB_USER_INSTALL true とかコマンドラインで入力してから rubugemsをインストールすればいい (試してないけどたぶんrubygemsのインストール時1回のみでおk) あーもう寝る
868 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 02:52:50 ] >>861 宗教じみてるので釣りかと思った
869 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 02:58:43 ] >>861 そんなに分かりやすいのか・・・買う価値ありかね?
870 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 03:48:49 ] 初めて知ったが、そもそもLinux Magazineぜんぶ入りが買いじゃね? >>866-867 さくらの共有?Railsまともにうごきます?
871 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 04:21:29 ] でももう2年前の話だしなぁ・・・休刊。 まだVineが人気の時代じゃね?
872 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 10:07:47 ] >>870 FastCGI入ってないけどそれでもよければ
873 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 10:16:34 ] Webサービスとして使うのは問題外ってことだな 自分用かバックグラウンド動作用か
874 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 11:15:37 ] % time python -c 'range(0,10000000).sort' 0.769u 1.022s 0:01.79 99.4% 0+0k 0+0io 0pf+0w % time ruby -e '(0...10000000).sort' 3.170u 0.259s 0:03.42 100.0% 0+0k 0+0io 0pf+0w
875 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 11:58:20 ] >>872 まともに使えない上に、同じ鯖の人に迷惑になりそうな(´・ω・`)
876 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 12:02:23 ] どっかのページで、CGI版でも高速動作させるって方法があったけど、 結局、プロセスをしばらく立ちあげといてって方法なので、レンサバだと無理そうだった・・・ CGIでRailsをまともに動かす - 古橋貞之の日記 d.hatena.ne.jp/viver/20080209/p1
877 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 13:00:28 ] 以前からずううううっと気になってたんだけどさ file = open('test.txt','r').read とか file = File.open('test.txt','r').read ってしたときって、test.txtを開いたときに使ったIOオブジェクトってcloseされてる? readの中で実はブロックとか使っててcloseしてるとか
878 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 13:06:30 ] >>877 close はしてないので File.read("test.txt") を使ったほうがいい。 バイナリモードの指定ができないくそインターフェイスだけど。
879 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 13:18:18 ] あるいは、長くなってもいいなら content = open(...) {|io| io.read }
880 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 13:26:21 ] File.open(path).read は「動くけどあまり好ましくない書き方」のひとつだな
881 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 13:47:03 ] 参照カウンタの方がスクリプト言語にはあうね
882 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 13:52:34 ] やっぱり、そんなには知られていなかったんですね>Matzの連載 私も知らずに手に入れたんですけど 初等講座が190ページ、探訪が96ページ 雑誌連載ならではの密度(基本2段組でビッシリ)ですので これ目当てで買っても損はないかと思います。 ただ、PDFの2段組は読みづらいです。 私はスレタイどおりの初心者なので 正直、中盤以降はナナメ読みになりましたが ハッシュと正規表現の置換のところで そう書いてくれればわかる!という開発者ならではの 曇りのない記述に出会えたので これだけで個人的には得した気分です。
883 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 14:04:34 ] 何の本の話ですか?
884 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 14:05:15 ] >>861 じゃね?
885 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 14:05:32 ] 861 デフォルトの名無しさん [sage] Date:2008/02/15(金) 19:22:31 ID: Be: 休刊になったLinux Magazine全部入りDVDを入手 Matz御大による、初等Ruby講座(と探訪Ruby)の 存在を知り拝読(中)
886 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 14:06:09 ] ありがとう 失礼しました
887 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 14:07:33 ] >初等講座が190ページ、探訪が96ページ >雑誌連載ならではの密度(基本2段組でビッシリ)ですので >これ目当てで買っても損はないかと思います。 ここだけ出版される予定はないの?
888 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 14:08:06 ] 出たら買うかも
889 名前:デフォルトの名無しさん [2008/02/16(土) 14:16:30 ] 生 ruby-sapporo.org/live
890 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 14:18:56 ] >>861 の感想とかこのところ荒みっぱなしのMatzに読ませてやりたいな
891 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 15:51:50 ] Hpricotを半日いじった結果、 「そのサイト専用の正規表現使ってHTMLからdivやtable単位でscanで切り出して配列にしさらに正規表現で切り出す」 ということをしたほうが速いということに至った もっと一般的なことするまでさよならHpricot
892 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:33:24 ] 初等Ruby講座 第1回 はじめの一歩 第2回 条件判断とループ 第3回 オブジェクトと変数 第4回 配列 第5回 ハッシュ(または連想配列) 第6回 文字列の操作 第7回 パターンマッチ 第8回 入出力 第9回 数と電卓 第10回 CGI 第11回 Rubyで作るCGI 第12回 CGIの道具箱 第13回 ファイル処理 第14回 ネットワークプログラミング 番外編 Rubyカンファレンスレポート 第15回 プロセスとフォーク 第16回 スレッド(その1) 第17回 スレッド(その2) 第18回 データの保存 第19回 XMLとYAML 第20回 XMLとYAML(その2) 第21回 エクストリーム・プログラミング 第22回 独習Ruby 第23回 再入門オブジェクト指向 最終回 ここからのRuby
893 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:34:31 ] 探訪Ruby 第1回 Rubyの国へようこそ 第2回 テスト第一主義 第3回 Wiki Wiki 第4回 Blogの世界 第5回 アスペクト指向 第6回 RubyとEmacs 第7回 Instiki 第8回 テンプレート 第9回 DBM 第10回 tDiary 第11回 Webアプリケーションの基礎 第12回 Webアプリケーションの基礎(その2) 第13回 Webアプリケーションフレームワーク 第14回 マークアップ・マークダウン 第15回 ダイコン 最終回 ネタのタネ
894 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 18:25:28 ] >>891 WWW::Mechanizeもそうだけど、ドキュメントがないからどうやったら早いのかわかりずらいよね。 俺も苦労した。 ただいっておくけど、 > 「そのサイト専用の正規表現使ってHTMLからdivやtable単位でscanで切り出して > 配列にしさらに正規表現で切り出す」 ってのが楽にできるのが、Hpricotですよ。
895 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 20:28:24 ] 楽さか速度のどっちを選ぶかだね。
896 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 05:08:19 ] >>894 でいかにもな感じで勧めてみたのだが・・・ >>891 みたいな、「それ今知っている技術でやった方が早いよ」と思う人にはやはり勧められない。 文句言うだけなので、やめておいた方がいい。 Hpricotは、半分は「おおーすげー」って感動するためにあるようなものでし、 基本この手のライブラリは、ソース読まないとまともに使えないし、 とにかく早く(速くじゃないよ)やりたいなら、 導入コストがでかいので、gemで入るような既存のライブラリを使うことは勧めない。
897 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 05:30:32 ] rubyでXMLを扱うのに速度の速いライブラリはありますか? rexmlを使うと10秒近くかかるので 最低限の機能としてはXPATHが使えればいいです。
898 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 05:43:42 ] Hpricotはここ見れば簡単にわかるだろう mono.kmc.gr.jp/~yhara/rubyscraping/?Hpricot
899 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 09:38:02 ] そんなお前らに超オススメ scrAPI wota.jp/ac/?date=20070115#p01
900 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 10:57:19 ] Hpricotは「抜き出したい範囲の終わりの文字列」が特徴的で自明なときは非効率 html.scan(/<table class="nested"><tr><td>(.+?)<\/tr><\/td><\/table>\r\n<div class="box1/) みたいな感じ 「どう言っても対応する</div>だとしか言えない」とかいう場合はHpricotのようなパーサの出番 あとHpricotを使っておきながらto_htmlしたものとかを正規表現でscanしたら負けなのでよろしく
901 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 11:03:30 ] >>892-893 Rubyの記事だけ抜き出してうんこpdfの段組をばらして htmに変換してついでにHTML Help形式にもコンバートして売って欲しい・・・
902 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 11:08:50 ] >>897 HpricotのXMLモードかlibxml-ruby
903 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 11:44:50 ] >>897 Hpricotが拡張ライブラリ使ってるから早いんじゃね? 使ったことはないが
904 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 15:20:46 ] expect.rb は標準で入っているんですか? ActiveSriptRuby で入れた ruby 1.8.6 には入っていないようです。
905 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 15:55:12 ] >>902 Hpricotインストールしてみたけどまだ5秒ぐらいかかる。 libxml-rubyはgemでインストールしようとしたらエラーが出たので挫折。 ただHipricotより圧倒的に速そうだ。
906 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 16:12:42 ] >904 pty拡張の一部なので(ext/pty/lib/expect.rb)、 ptyのないシステムには入っていないかも知れない。
907 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 21:04:17 ] Rubyをシュミで使うくらいには初心者から片足抜けたんだけど、 お勧めの面白そうな言語ある? PerlとCとJavaは除外で
908 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 21:05:34 ] Python
909 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 21:11:07 ] 最近はlispをたしなむのが流行らしい。
910 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 21:18:30 ] Schemeあたりに触れて「面白いけど使えねー」と嘆き Haskellあたりを食い散らかして「作れるもんねーよ」と嘆く そしてRubyに戻ってくると…「俺こんな汚いコードや粗悪なアルゴリズム書いてたのか!」 とりあえずはLisp系列か関数型言語のどっちかだろ
911 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 21:58:41 ] Pythonは変な意味で被らないか
912 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 22:28:38 ] すいません、教えてください。 @one, @two, @three, @four, @five ... とインスタンス変数をたくさん持ったオブジェクトAがあり、 @one, @two, @three というように上の一部に対応するインスタンス変数(のみ)を 持ったオブジェクトBがあります。 Bのインスタンス変数すべてが対応するAのそれと同じ対象を 参照していればtrue、そうでなければfalseを返すメソッドが ほしいのですが、どうすればキレイに書けるでしょうか?
913 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 22:29:32 ] TOOWTDIな世界に触れてみるのは悪くないと思う
914 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 22:33:31 ] >>913 なんかの書き間違いかと思ったら、パイクソかよ。
915 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 22:53:00 ] >>912 そういう全比較の結果に頼らなければならないこと自体が何か非常にまずい
916 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 22:57:00 ] >>912 よくわかんないけど、Object#instance_variables とか Object#instance_variable_get とか使えばいいんじゃないか。 a = A.new b = B.new b.instance_variables.each do |varname| val = b.instance_variable_get(varname) if val != a.instance_variable_get(varname) puts "b.#{varname} != a.#{varname}" break end end
917 名前:912 mailto:sage [2008/02/17(日) 23:09:35 ] >>915 自分もそんな気はしてたんですが、アプリの終了時に 上書き保存のダイアログを出すかどうか調べる方法として、 こんなへたれロジックしか思いつきませんでした・・・。 >>916 これ、いただきます。感謝です。リフレクション系のメソッドが なかなか自然に浮かんできません。修行します・・・。
918 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 00:08:57 ] >>917 もっといい方法があるはず リフレクション無しでやれないかどうか、頭を捻って考えるべき どうしても思いつかないなら、ここでソース(or具体的なクラス構成)を提示して 「どんな方法があるか」を質問すればいい
919 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 01:34:54 ] AとBで共通に参照してる変数群が表す情報は オブジェクトで表現してみるとか。比較一つでいいし。 関係ないこと纏めてもしゃーないからやっぱ 設計しだいだけど
920 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 05:45:53 ] >>917 変更した時にフラグを立てることは出来んの?
921 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 09:10:09 ] >>916 カプセル化の意味ねー。
922 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 09:11:50 ] MIX-INってどうなったの。 rubyといえばMIX-INって記憶してるんだけど。
923 名前:912 mailto:sage [2008/02/18(月) 09:37:09 ] >>918 リフレクション無しでというのが基本なんですよね。 もいっかい考えてみます。またよろしくです。 >>919 オブジェクトで表現して比較というのは考えたんですが、 どうやったら同一性を定義できるのかわからなくなって とりあえず変数比較でお茶をにごした次第です。 >>920 undo/redoを実装していて、どっちみちオブジェクトの状態を 保存しておく必要があってフラグにはしませんでした。 でもやっぱりあったほうがいいのかも。
924 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 10:05:24 ] 同一性は==でいいと思うんだが…
925 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 10:14:38 ] >>924
926 名前:912 mailto:sage [2008/02/18(月) 11:24:18 ] >>どうやったら同一性を定義できるのかわからなくなって オブジェクト自体じゃなくて変数の参照先の同一性の間違いです。 が、考えてみると普通に一個一個見ていけばいいだけですね。 そうすると面倒くさくなってやっぱり916がいいような気が。
927 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 11:42:06 ] そんなん==を再定義すればいい。 instace_variable_get使うつもりだったのをオブジェクトにして、 アクセサつけてprotectedにして。
928 名前:デフォルトの名無しさん [2008/02/18(月) 11:42:18 ] 文字化けします。助けて ・出力結果 news23.org/pict/news7342.jpg ・環境 OS Windows 2000 使ったライブラリ raa.ruby-lang.org/project/ruby-amazon/ ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32] ・文字コード ソースの文字コード sjis コマンドプロンプトの文字コード 932(sjis) ・出力メソッド print、puts、pでほとんど同じ ・実行 ruby -Ks amazos.rb (ソース中に文字コード指定なし)
929 名前:デフォルトの名無しさん [2008/02/18(月) 11:52:25 ] >>928 自己解決しました require 'nkf' 出力したい文字列.tosjis
930 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 19:52:14 ] Unicode を SJIS で出力してる風な文字化けだなあ
931 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 20:13:49 ] >>930 いやそのまんまだし 元のXMLを自力で解析してれば文字列がUTF-8のままだって気づいたんだろうけどね 初心者が一足飛びにモジュールだけ使うのも考えもんだな
932 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 20:25:26 ] chcpコマンドを使ってる人を初めて見た
933 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:27:03 ] Ruby/AmazonはREXML使ってるみたいだけど、REXMLってUTF-8以外の対応がいまいちだったような。
934 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:38:16 ] UTF-8以外のXMLはレッドデータブック入りだから大丈夫
935 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:38:32 ] UTF-8以外のXMLは要らない子だし
936 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 00:52:15 ] 質問です。 www.ruby-lang.org に置いてあるマニュアルのスナップショット版(rd形式) を html に変換するにはどうすれば良いのでしょうか?
937 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 00:53:56 ] RDのマニュアルとか見ればいいんじゃね?
938 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 01:02:01 ] >>937 すみません。 RDのマニュアルはどこにありますか?
939 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 01:20:41 ] というか普通のHTML版やHTMLヘルプ版では何かまずい?
940 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 01:33:24 ] >>939 できれば最新版を参照したいので、スナップショットから HTML版を構築したいのです。
941 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 07:10:47 ] >>917 GUIアプリだと、変更時にフラグを立てる Undoの実装などにコマンドパターンを使うから、 フラグ立てひとつ処理が増えたとしても影響ない
942 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 16:36:58 ] VB6のような、DelphiのようなRubyがあったらなぁ あ...言ってみたかっただけです
943 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 17:02:47 ] 「ディレクトリの中の更新済みのrbファイルだけをサーバにFTP転送する」 というのが手作業で面倒なのでrakeというものでやってみようと思いました …ファイルから2次的ファイルが生成されるようなやり方でないと記述できない? *.cと*.oのような
944 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 17:10:49 ] >>943 よーわからんが、 「オブジェクトファイルより新しければコンパイル実行」 という判断の元になる「オブジェクトファイル」に該当するものが RubyスクリプトのFTP転送という仕事には存在しないから 新しいファイルだけを転送ということをさせることができなくね? という質問でいいか
945 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 20:59:53 ] >>943 Rakeについてる rake/contrib/ftptools.rb がそれっぽいけど # This file is still under development and is not released for general use. だそうな Rake::FileTaskみたいにRake::Taskを継承して、タスクを実行する必要があるか 判定するメソッドneeded?を定義してやればできそう
946 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 21:43:21 ] FTPは鯖にある日付がいまひとつ確実に取れないからねぇ。 相手側にシェルアカウントがあればそのまま、自宅にSSH鯖があればCGI経由で rsync/SSHとかできるけどね。
947 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 22:01:26 ] ローカルにインストール用ディレクトリとか作ってそこにコピーさせればいい ディレクトリにあるファイルより新しければFTP転送 Rubyスクリプトが大量にある場合はちと悲惨だが…
948 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 22:14:03 ] 単に転送終わったときにタイムスタンプ用のファイルをtouch。 次回はそのファイルより新しいものだけを転送。 でいいじゃん。
949 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 22:17:50 ] Rake使ってみたいって言ってんじゃんよ
950 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 22:49:55 ] 950を踏んだ訳だが
951 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 23:03:55 ] 踏む前に書いたくせに! 踏む前に書いたくせに!
952 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 23:41:46 ] うむ >>950 流れが速いわけじゃないし埋めるのも手間だし別に970とか980とかでもいいような気もする
953 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 23:59:39 ] >>949 別に使わなくてもいいよ いや真面目な話、Rakeの依存解決が使えない場面なんていくらでもある そういう場合は無理にRakeの機能に頼らなくてもいい
954 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 01:29:52 ] 俺だってRakeの中にrsyncでサーバー(つってもsambaだがwww)と差分同期とるのを書いて ふだんから使ってるぜ
955 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 14:01:50 ] VB(6)はともかく、Delphiに関しては Matzはどう思ってるんだろう? 個人的には、まともにオブジェクトを指向した 最初の環境はDelだったりする 塚越一雄著「Delphiオブジェクト指向プログラミング」 には足向けて寝られない これが本当に役に立ったのは他でもないRubyでなんだけど
956 名前:デフォルトの名無しさん [2008/02/21(木) 18:22:25 ] amazon API を使ったときの日本語の文字化けを直す方法を教えてください。 ttp://diaspar.jp/node/5 にある、amazon APIのサンプルを実行したら、 2008-05-28 : 0132084945 : Intro to Java Programming, Comprehensive 2008-02-29 : 4797346418 : 繧・&縺励>PHP 繧・&縺励>繧キ繝ェ繝シ繧コ のように日本語が文字化けしてしまいます。 Windows XP, Ruby 1.8.2 なので頭に、 #! -Ks としています。
957 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 18:24:52 ] 変換すりゃいいべ
958 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 18:44:45 ] だから>>931 だって Amazonが何を出力してるか理解してない人は利用禁止 普通にAWSとか勉強してからおもむろに便利に使うべし
959 名前:956 mailto:sage [2008/02/21(木) 19:15:42 ] や、こんなすぐ上にあるとは失礼しました。 require 'kconv' Kconv.tosjis(変換したい文字列) で解決しました。 >>958 まぁ、そう言わないでくださいよ。
960 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 22:00:53 ] よくわからんけど、普通にブラウザ使っていて、文字化けしてエンコードを自分で変えたりして、 文字のエンコードの存在をしることってあると思うんだけど ネット使わないのかな
961 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 22:04:32 ] 最近のブラウザは推測精度が上がってるんだよきっと
962 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 22:48:36 ] AmazonのAWSって自分のID使わなくていいのか? と思ってみたり。 hikiのプラグインにしてもライブラリ公開して自分のIDをデフォにするってなんかコスイような・・・ ・・・まぁ好きにすればいいよね。
963 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 23:22:45 ] >961 確かに実際、最近ブラウザのエンコーディング手で切り替えた経験がないわ あるいはUTF-8のページが増えてきて、とりあえずビールならぬとりあえずUTF-8 って方式が当たるようになってきたのかも
964 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 23:26:29 ] 最近でも切り替えた経験あり過ぎて困る。
965 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 23:28:16 ] 定番のホームページビルダー(笑)で自分で作る人が少なくなって ホスティングタイプのブログへ流れたからかな。
966 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 23:39:10 ] firefoxは賢いよね。IEはよく化けるけど。
967 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 23:41:35 ] その firefox でも切り替えまくってるんだが・・・。 特に Boost 日本語訳のページとかひどいもんだ・・・。
968 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 23:44:15 ] IEは増えてきた UTF-8 が化けまくるから困る
969 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 00:05:44 ] 英語圏以外の海外のページと日本語ページを交互によく見ると 素晴らしい文字コード認識精度をはじき出してくれますよ
970 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 00:07:19 ] 認識も何もヘッダで宣言してある通りに解釈するんじゃないの? UTF-8って宣言してるのにShift_jisで書いちゃったりしてるわけ?
971 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 00:09:09 ] 宣言してないページはよく化ける
972 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 00:34:46 ] HTMLのヘッダで宣言されててもシカトされる事がある .htaccessなら多分シカトされない
973 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 01:06:52 ] CGI配布サイトでサンプルCGIを動かしたら文字化け多いのはあるな
974 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 01:14:10 ] ・HTTPヘッダのContent-Type ・HTMLのmeta http-equiv ・実際の文字コード 全部ばらばらとかなー。一応優先順位はあった気がするんだが。 確実に判定出来るコードの文字からなる語句(「美乳」とかがそうらしい)を HTMLの中にコメントで埋めるとかいう小技があった時代も。
975 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 01:16:12 ] 貧乳が好みなんですがダメですか?
976 名前:デフォルトの名無しさん [2008/02/22(金) 05:16:05 ] >>974 海外のプログラマが美乳好きだっただけなんじゃね?
977 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 05:34:05 ] >>967 あれは馬鹿除けのためにわざとやってるという噂だが
978 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 05:37:16 ] >>972 それはApacheの設定ミスだなw
979 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 05:53:43 ] >>974 美乳テーブルな。あれは EUC 決め撃ち用だよ。
980 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 08:27:16 ] 標準添付ライブラリでrdocが綺麗に書かれてるのってどれですかいな? 参考にしたいんだけど
981 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 09:21:46 ] >>980 そりゃRDoc自身だろ
982 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 10:06:11 ] Ruby/SDLについての質問です require 'sdl' SDL.init(SDL::INIT_AUDIO) SDL::Mixer.open input = open('test.wav', 'rb') SDL::Mixer::Wave.load_from_io(input) 以上のようなコードを実行すると、load_from
983 名前:982 mailto:sage [2008/02/22(金) 10:12:03 ] すみません、途中で誤送信してしまいました (続き) 以上のようなコードを実行すると、load_from_ioのところで cannnot seek backward (SDL::Error) というエラーになってしまうのですが、「後方を探せない」というのはどういうエラーなのでしょうか? 後方互換性絡みの何かがあるのでしょうか? 環境は以下の通りです ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-mswin32] SDL1.3.1(Windowsバイナリ版)
984 名前:982 mailto:sage [2008/02/22(金) 10:20:58 ] 追記 もしかしてと思い、rubyを1.8.6最新版にしてみましたが、結果は同じでした
985 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 10:54:23 ] ところでそろそろ980あたりに次スレを立ててほしいわけだが
986 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 10:55:35 ] >>983 cannot seek backward は「逆方向にシークできない」だろう。 なんでそんなシークをしようとしてるのかはわからんけど。
987 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 11:46:50 ] てかRuby/SDLはあんまRubyじゃないからなあ 使ってる人がたまたまいれば回答はしてくれるかもしれないが
988 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 11:46:53 ] test.wav が壊れているに59Matz
989 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 11:49:55 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 Ruby1.9は不安定な開発版であり初心者の使用には全く向きません。最新安定版のRuby1.8.6の使用を強くお勧めします。 関連スレやURLは>>2-7 あたりを見てください。Ruby on Railsの質問はWebProg板のRailsスレで。 という文言を>>1 に書いてくれ
990 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 12:12:52 ] 次スレはまだかね?
991 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 14:52:08 ] Ruby 初心者スレッド Part 18 pc11.2ch.net/test/read.cgi/tech/1203658291/ 試したら立っちゃった
992 名前:デフォルトの名無しさん [2008/02/22(金) 17:33:53 ] おまえら・・・Ruby大好きなんだな。
993 名前:982-984 mailto:sage [2008/02/22(金) 20:38:14 ] レスありがとうございます 「逆方向シーク」に心当たりがありませんし Ruby/SDLについて訊ける場所もなさそうなので、とりあえず諦めます >>988 三種類ぐらいのwavで試しても読み込めませんでしたし SDL::Mixer::Wave.loadを使えば普通に読み込めるので、それはないと思います
994 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 21:20:24 ] ume = thre.map{|res|
995 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 21:42:23 ] >>993 バグかもしれないから開発者と連絡とったらいいんじゃない
996 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 22:27:14 ] }
997 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 10:28:28 ] はいここちょっと埋めますよ
998 名前:デフォルトの名無しさん [2008/02/23(土) 12:54:14 ] 次スレ pc11.2ch.net/test/read.cgi/tech/1203658291/
999 名前:デフォルトの名無しさん [2008/02/23(土) 12:54:43 ] 次スレ pc11.2ch.net/test/read.cgi/tech/1203658291/
1000 名前:デフォルトの名無しさん [2008/02/23(土) 12:55:32 ] 次スレ pc11.2ch.net/test/read.cgi/tech/1203658291/
1001 名前:1001 [Over 1000 Thread] このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。