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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
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