1 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 08:39:14 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 ★注意★ Ruby 1.9.1 は初心者にはまだ時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。 (理由:現時点では多くの有名ライブラリやアプリが 1.9.1 に完全対応していないためです。) 1.8.7 でも 1.9 系に導入された新機能のいくつかが利用可能なため、1.8.7 を習得すれば将来スムーズに 1.9 系に移行できるでしょう。 関連スレやURLは>>2-5 あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。 ■質問する人へ 質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。 ・モジュール名やエラーメッセージでググる ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/ ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ 質問には以下を書くこと。へたくそな質問は再提出を要求される。 ・詳しい内容(「動きません」「うまくできません」では回答しようがない) ・エラーメッセージ(自力で訳さずなるべくそのままで) ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる)) ・最終的にやりたいこと(もっとよい方法がある場合が多いので) 回答してくれた人には「ありがとう」のひとことをいってあげて。 ■回答する人へ 相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。 それができないならこないこと(だって初心者スレだもん)。 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
283 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 17:07:32 ] 空行だらけのBlogみたいで読みにくいからやめてくらさい
284 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 17:18:27 ] あれはblogシステムでは「段落」としてるものを、ユーザーが「物理行」に使ってるためだろ
285 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 17:25:41 ] 横書き日本語なのに段落を前後空間空けとしてレンダリングするブラウザがアホなだけ
286 名前:デフォルトの名無しさん mailto:sage [2010/02/06(土) 17:28:32 ] >>277 べつに誰も悔しくないと思うけどw
287 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 09:03:47 ] >>275-278 Railsのプラグインのソースを読む機械が多いが、 ちゃんと作ってるプラグインはモジュール化しまくり、メソッド分割しまくりだな。 なんでこんなところまでちゃんとモジュール化しとんねん!て思うほど
288 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 09:49:17 ] >>275-276 漏れは関数は25行以内(最悪でも50行程度)って教えられた 80x25のコンソールで一画面か、印刷して一ページのサイズ
289 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 09:53:55 ] >>277 それがあるんだよ たまに def hoge() p 123 end みたいに改行せずにエディタの80文字の折り返しだけで次の行へいったつもりでソース書く馬鹿がいるんだよ (っていうか昔の糞エディタだと2行に分かれていたものが1行に繋がってしまうケースとか良くあったんだ)
290 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 09:56:36 ] 10行君は初心者。
291 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 09:58:11 ] >>284 いや、実態は携帯で長ったらしくスクロールさせてページ切り替わると リロードが増えてアクセス数も増えるみたいな都市伝説があるらしい 仮に100歩ゆずってそれでリロードされるのが事実だとしても そんな方法でアクセス数増やしてなにが嬉しいのかと
292 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 09:59:30 ] >>289 emacsですねわかります
293 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 10:00:10 ] >>288 それは従来のプログラミング言語の話だろ わざわざRubyにそのまま持ち込む必要はない
294 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 10:01:16 ] Reekっていうコードチェッカを興味本位で使ってみたが メソッド定義が10行以上だと「長い」と指摘してくるな
295 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 10:02:31 ] あんまり長くなるとインデントも深くなってくることが多いからな すっきりさせるために短く書くのは悪いことじゃない罠
296 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 10:04:24 ] >>292 一太郎だろ
297 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 10:05:50 ] >>291 アメーバだっけ?芸能人ランキングのあるやつ 改行増やしてPV増やしてランキングの上を目指すんだって 本当かどうかは知らない
298 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 10:09:36 ] 資源の無駄遣いだなぁ エコに反してるから改行撲滅キャンペーンした方がいいぞ
299 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 10:10:03 ] ああNON STYLEの石田だっけ?
300 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 10:10:45 ] とりあえず、お前らの権限で fileutils.rb とか net/imap.rb に 10行ルール適用してもらってよ。
301 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 10:32:50 ] >>291 >>297 あれはPVアップ界王拳の一種で、ケータイで見たときに複数のページに分割されるのでPVがあがるってやつ 芸能人もそうだけおdPV多いとアメブロはお金もらえる仕組みがある 最近PCの情報サイトでもページ分割するのちらほら見るよね、携帯向けじゃなくても あれPV上げるため
302 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 10:44:45 ] >>293 言語の話じゃなくて環境の話じゃね?
303 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 10:51:12 ] >>294 それ面白そうだなw 使ってみるか
304 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 11:12:10 ] >>303 やめとけ 警告多すぎて森に隠れる木の状態になるぞ igonoreの指定も面倒だし
305 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 11:14:38 ] 何事も原理主義はよくないと思います
306 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 11:16:32 ] めちゃくちゃ実利だと思うが…
307 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 11:26:24 ] 定義済みのクラス特異メソッドをprotectedにするのってどうすればいいんでせう? class DB protected self.new super end end してもクラス外で普通にDB.newできてしまったorz
308 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 11:28:00 ] protectedにしてどうしたいの?
309 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 11:31:07 ] 具体的には、DBのインスタンスを作成する手段をDB.openに限定したいんです。 db.closeするのを忘れたくないんで。
310 名前:307 mailto:sage [2010/02/07(日) 11:40:07 ] class Hoge private def self.hoge puts 'hoge' end end Hoge.hoge でも動いちゃいますね…… そもそもクラスメソッドをprivateにするのってどうすりゃいいんでしたっけ?
311 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 11:40:33 ] 「DBクラスいじるならopen使え」とマニュアルに大きな赤い字で書いておけ それとブロックつきopenの提供で充分
312 名前:307 mailto:sage [2010/02/07(日) 11:42:15 ] www.gesource.jp/weblog/?p=473 吊ってきたいと思います。 スレ汚しすいませんでした。
313 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 11:48:31 ] >>258 素直にgnuplot使うのが手っ取り早い rgplot.rubyforge.org/
314 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 12:24:44 ] rubyのprivateにはいつも混乱させられる うまい覚え方はないものか
315 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 12:44:35 ] 俺も覚えられてない・・・ privateがC++なんかのprotected相当なんだっけ?
316 名前:デフォルトの名無しさん [2010/02/07(日) 13:01:40 ] rubyのprivateは、 「任意のレシーバに対する呼び出しが出来ない」 関数っぽく書く呼び出し方のみが可能ってことね。
317 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 13:06:54 ] 「RubyでC++やJava再現しようぜ時代」の負の遺産 こんなオモチャ機能は1.9で無くなってもよかった
318 名前:デフォルトの名無しさん [2010/02/07(日) 13:07:32 ] privateよりprotectedのほうが理解されていないと思う。
319 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 13:17:06 ] >>317 少なくとも名称は変えるべきだったよなあ
320 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 13:23:05 ] >>316 つまり、 class Chinko private def manko end end の場合、 class Chinko内で def sounyu manko end のような呼び出しはOKだが、 chinko = Chinko.new chinko.manko は駄目なんだっけ?
321 名前:デフォルトの名無しさん [2010/02/07(日) 13:29:10 ] ifの条件文のレイアウトのことなのですが、改行が問題になるケースってあるでしょうか? if name == "foo" || name == "bar" #do something end ()や:が必須の言語ですと気分的にも安心なのですが、 Rubyではあまり改行してるの見ない気もします。 一応、上のコードは問題ちゃんと判定されているし、 条件文内の代入文もきちんと評価されていますが、どうも不安です。 条件文の後にthenを入れておけば確実なのかなとも思うのですが・・・
322 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 13:30:37 ] マニュアルくらいは読め Rubyのprivateは単に見栄え上の判断しかしない
323 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 13:33:43 ] >>321 カッコ書いて条件部分を式にすればいいじゃん 時々、カッコ書いたら死ぬ病の人が紛れ込んでるんだけど、そういう人は Ruby 使ったら駄目よ
324 名前:320 mailto:sage [2010/02/07(日) 13:36:27 ] こんなん書いている間にマニュアル読めよ、試せよという感じですね、すいません。 chinko = Chinko.new chinko.manko は private method `manko' called for #<Chinko:0xxxxxxx> (NoMethodError) で駄目ですね。 tansyou.send :manko みたいにsend経由だとOKなんですね。
325 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 13:37:53 ] 質問させて下さい。 たまにブログなどで見かけるように、 puts 1 + 1 # => 2 のように、出力結果をコメントで文の右に追加してくれるスクリプトがあったと思うのですが、 どなたか御存知ありませんか?
326 名前:325 mailto:sage [2010/02/07(日) 13:41:06 ] >>325 ですが、自己解決しました。 xmpfilter でした。 「ruby 実行結果 コメント」で検索したらでてきました。 xmpfilter で Ruby のコードに実行結果をコメントに表示 | すぐに忘れる脳みそのためのメモ jutememo.blogspot.com/2008/06/xmpfilter-ruby.html eigenclass - xmpfilter: automagic Test::Unit assertions/RSpec expectations and code annotations eigenclass.org/hiki/xmpfilter
327 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 15:13:27 ] クロージャとプロシージャの違いがわからないのですが… sortメソッドを使うときに、a.sort{|a,b|a<=>b}とか書きますよね。この場合はどちら?
328 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 15:18:41 ] そんな小難しい外の用語を使わずに、ブロック引数、でよい。
329 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 15:38:31 ] クロージャとプロシージャは別概念 クロージャは生成時の情報(コンテクストと呼ばれる)を閉じ込めて保有するオブジェクト及びブロックの総称 一般的にbindingメソッドを持つ 例 Procインスタンス, Bindingインスタンス, ブロック プロシージャは手続きオブジェクト及びブロックの総称 一般的にcallメソッドを持つ 例 Procインスタンス, Methodインスタンス, ブロック >>327 の例の場合 ブロック生成時の情報は特にブロック内に閉じ込められていない。 だからクロージャとしては使われていない。 もっぱら手続きを実行するためのブロックなのでプロシージャとして使われている。 クロージャの例 def hoge var = "hoge" Proc.new{var} end closure = hoge #p var #=> undefined local variable or method `var' p eval('var', hoge.binding)
330 名前:329 mailto:sage [2010/02/07(日) 15:41:57 ] MethodインスタンスではなくUnboundMethodインスタンスか
331 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 16:02:44 ] 説明は 「Rubyではコンテキスト情報の保存にBindingクラスのオブジェクトを用いる」 でいいじゃん それ使えばコンテキスト依存の処理になるからおおむねクロージャだ 使わない(使わなくてすむ)ならただのプロシージャ(可搬性のある処理のかたまり)
332 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 21:28:39 ] 2年前に書いたスクリプトを流したら90秒もかかった 当時は14秒で終えてたのに
333 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 21:35:39 ] いつどこでどのように流されたんですか
334 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 23:54:49 ] 実行することを流すと言います。
335 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 00:08:40 ] スパゲティコードをまるでソウメンのように流すのですね
336 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 00:24:48 ] そうです。まさにスパゲティです。
337 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 01:23:06 ] ためしにVMware上のUbuntuで動かしたら2.4秒だった
338 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 07:43:24 ] IronRuby 6.4秒
339 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 18:16:30 ] Windows版Ruby 1.8 -> 1.9で テキストモードでのファイル読み込みが10倍ほど遅くなってるのでそのせいか? 読み込み時のエンコーディングをASCII-8BITとかにしてもさほど変わらんので universal newlineとかいう改行コードの差異を吸収してLFに変換するのが遅いのだろうか バイナリモードで読んでからforce_encodingすると1.8と同程度になるよ 自分は趣味程度にしか使ってないので困らないけど 巨大なログを処理する人とかだと、地味にいやな性能劣化なんだろうな
340 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 18:34:44 ] 日英辞書テキストのEDICT(SJISに変換済み、5.3MB、10万行)を Mingw版Ruby 1.8.7p160 で ruby -e "open(ARGV.shift,'r'){|f|f.read}" edict すると 0.42秒 Mingw版Ruby 1.9.1p0 では107秒 ちょっ、200倍遅いorz ruby -e "open(ARGV.shift,'rb'){|f|f.read.force_encoding('cp932')}" edict バイナリモードで 0.46秒 ruby -e "open(ARGV.shift,'rb'){|f|f.read.force_encoding('cp932').gsub!(/\r\n|\n|\r/,?\n)}" edict などと改行変換もすると 3.72秒 K6-2 450MHzのWindows2000なんでちょっと遅いし、Rubyも最新のじゃないですが
341 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 18:35:14 ] >>339 migw32使え
342 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 18:59:11 ] 10倍ですか... へんに差異を吸収しようとせずエンコーディング毎に処理して欲しいもんだ コンパイラが古いとはいえ、まさか仮想環境や.NETに負けるとは思わなかった。 ↑↑↑はパズル問題を解くスクリプトで読み込みはほんの少し 書き出しは途中経過も出してるんでかなり多い 1.8.6: 220"、1.9.0: 14"、1.9.1: 90"
343 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 19:06:59 ] スクリプト foo が多重起動しないようにするにはどうやればいいですか。 後から起動した方をすぐに殺したいです。
344 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 19:23:33 ] ファイルを利用して排他的にするとか。 あまり好きじゃないけど。
345 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 19:27:46 ] ロックファイルがなかったらロックファイルを作る ロックファイルがあったら「起動中です」と言ってexit(1)する スクリプト終了時にロックファイルを消去する こんなのがいちばん簡単だと思う 強制終了でロックファイル消去プロセスを飛ばすと使用者層によっては悲惨だけど
346 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 19:34:15 ] migw32どこ? 古いのしか見つからない
347 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 19:44:48 ] mswin32(ActiveScriptRuby、gem対応の標準) ttp://www.artonx.org/data/asr/ mingw32(RubyInstaller/OneClickInstaller、gemの古パッケージはバイナリがなくDevelopment Kitが要ることも) ttp://rubyinstaller.org/download.html とりあえずp0 の1.9.1 は産業廃棄物なので使って文句言うの禁止で
348 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 20:42:28 ] ありがとうございます。ちょっとだけ速くなりました。 ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-mswin32] time:4.984375 ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-mingw32] time:3.421875 IronRuby 0.9.3.0 on .NET 2.0.0.0 time:5.890625 ruby 1.9.1p243 (2009-07-16 revision 24175) [i486-linux] ※VMware time:2.392678477
349 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 23:03:02 ] まねしてもいいよ。 unless [ exp1, exp2, exp3, exp4, ... ].include? false puts "true!" end
350 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 23:22:03 ] >>349 釣りだよな? Enumerable#all? Enumerable#any? と同じ結果を望んでるなんてことないよな?
351 名前:sage [2010/02/10(水) 00:13:38 ] f=lambda{|x,y| x+y} ["sa","ka","wa"].map(&f.call(_,"by")) みたいに、第二変数の束縛を先にやってから procをつくりたいのですが、どうすればいいのでしょう? map{...}はなしで。
352 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 00:18:31 ] カリー化したいんでしょ? おれそれ諦めた。
353 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 00:26:48 ] こう? f=lambda{|x,y| x+y} p ["sa","ka","wa"].map(&f.curry.call("by"))
354 名前:sage [2010/02/10(水) 00:50:33 ] お!できてる。 順番は逆だったけど、あとは適当に。
355 名前:デフォルトの名無しさん [2010/02/10(水) 00:59:39 ] class Proc $__ = Object.new def cut(*args_part) Proc.new{| *args | call(*args_part.map{| arg | arg == $__ ? (args.shift) : arg }) } end end f=lambda{|x,y| x+y} p ["sa","ka","wa"].map(&f.cut($__,"by")) # => ["saby", "kaby", "waby"] まったく勧めないけど一応
356 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 08:30:40 ] >>341 mingw版入れろはわかるけど面倒だからパッケージ作ってくれ頼む。RubyGemsとか入っているヤツ Windowsはaptとかねーんだよ 外人でもいいけど、こういうのはどこに頼めばいいの? ActiveScriptRubyに上書きしてもいいのかな >>347 OneClickInstllerも1.8系は1.8.6だから古いよね
357 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 08:32:02 ] しかし、RubyInstallerってmingw32版だったのね そして、1.8.7版が来てる!!!サンクス 問題はアップデートだな。OneClickInstaller時にアップデートしようとしたらアンインストールしろ!とか言われたからな・・・
358 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 08:59:35 ] Ruby Installer はかなり昔から mingw32 だった >>356 みたいな人間が発展を阻害する
359 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 09:26:54 ] 阻害してるという意味ではどっちもどっちだと思う まー、mingw32は正式版じゃないからな 正式版だけ使いたいという人にはお勧めしない 現状の正式版は中身のRubyが全然「安心の正式版」じゃないけどな インストーラーが未熟でも中身のRubyがバグフィックスされてることのほうが重要だと思う
360 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 09:44:31 ] >>359 正式版ってなによ どこにそんなことが書いてある
361 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 09:51:15 ] 解読してみた まー、(現在公開されている)mingw32(のRuby Installer)は(まだrc2で)正式版じゃないからな (rcやベータではない)正式版(のインストーラー)だけ使いたいという人には(まだ)お勧めしない 現状の(唯一の)正式版(として公開されてるOne Click Installer)は中身のRuby(の本体のパッチレベル)が(古くて) 全然「安心の正式版」(と言えるような組み合わせ)じゃないけどな インストーラーが未熟でも中身のRubyがバグフィックスされてることのほうが重要だと思う こんなんでどう
362 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 10:03:30 ] わかりやすい
363 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 13:07:09 ] >>361 thanxよくわかったw
364 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 18:00:13 ] MSVC版では出来なくてmingw版だけで動く機能 あるいはその逆で どんなのがありますか
365 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 18:06:00 ] そーゆーもんはない 機能で分かれてるわけじゃない わかんなかったら mswin32 である ActiveScriptRuby 使っとけ
366 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 19:23:29 ] インストーラーとしてはmingwよりone click installerの方が正式版のため信頼できるが、 中身のRuby自体はmingwの方が新しい って理解でいいの?
367 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 19:28:38 ] thread とか lock とかは mingw の方が信頼性があるような気がする
368 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 19:31:35 ] >>367 GIL使ってる限り信頼性は変わらない
369 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 19:38:19 ] OneClickInstallerはインストーラー含めて正式版が作られてる RubyInstallerはまだインストーラー含めてrc版(ベータと正式の中間) OneClickInstallerで入るRubyはmswin32で作られている RubyInstallerで入るRubyはmingw32で作られている mswin32は従来のタイプの「Windows版Ruby」でgemライブラリでは確実にバイナリがある 古いコンパイラで作ってあるせいか、環境によってはなぜか動作が遅いことがある どうせアップグレード時は全消し推奨なんで面倒の少ないこっち使って慣れろという説も根強い mingw32は今後主流になるもので最終更新日が古いgemライブラリではバイナリ自前コンパイルも 動作速度が遅くなる報告は少ないが、gemバイナリの自前コンパイル強要はめどい サイトのDevelopment KitをRubyを標準インストールしたディレクトリに上書きコピーすればいいだけだが あと、mingw32をWindows環境のRubyの印だと認識してないスクリプトがまだあるので手直しが要ることも
370 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 19:58:39 ] あああ、なんかわけわからないことに mswin32 版を使う場合は ActiveScriptRuby のほうインストールしろ OneClickInstaller 使って数年前の Ruby をわざわざいまさらインストールする必要もない ■ とにかく迷いたくない普通の人 … ActiveScriptRuby 面倒がない mswin32 版のみ提供、ActiveTcl を別途入れると tcl でウィンドウも描けるぞ(要Tcl言語知識) ttp://arton.hp.infoseek.co.jp/indexj.html 1.9.1 を使いたい人は ttp://www.artonx.org/data/asr/ の「Ruby-1.9.1-p数字 Microsoft Installter Package」を使わせてもらえ なに、自分のとこだけ妙に処理が遅い? 宝くじ並の外れ環境だからマシン買い換えろ ■ トラブっても自分で手直しする根性あるから遅くなる可能性ないほうがいい … RubyInstaller 古いコンパイラ製ではない mingw32 版の提供がメイン ttp://rubyinstaller.org/download.html 古いgemパッケージでWindows環境だとみなしてくれずにコンパイラが走って「make がない」と言われること有り それを乗り越えるためにコンパイラ環境が入ってる「Development Kit」をインストールしておくのを推奨 ttp://wiki.github.com/oneclick/rubyinstaller/development-kit 上記解説にもあるが、RubyInstallerの標準ディレクトリ構成の場合は上書きだけでよい(設定ファイル記述不要) 7zip でないとダウンロードしたファイルを展開できないので注意 スクリプト内での条件分岐で「mingw32」をWindowsとみなさないものが稀にあるので、それは手動で書き換える必要あり
371 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:08:43 ] 長い ・ 初心者は ttp://www.artonx.org/data/asr/ の 1.8.7 だけ使え、トラブル起きたらここで聞け でいいじゃん
372 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:16:28 ] てか本来は arton.hp.infoseek.co.jp/indexj.html でいいんだよね どうでもいいけどこのサイト meta charset と本文 HTML のエンコーディング食い違ってるぞ 見るたびに毎回エンコーディング指定やり直さないといかん
373 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:22:12 ] 先生,「1.8が許されるのは小(ry」と煽ってもいいのはいつ頃ですか
374 名前:デフォルトの名無しさん [2010/02/10(水) 20:22:56 ] 1.8.6はともかく1.8.7は数年無理。
375 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:24:29 ] 先生,JRubyが「Ruby 1.9 compatible now」になるのはいつ頃ですか
376 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 21:00:20 ] >>369-370 とりあえず Windows で Ruby がめちゃくちゃ面倒糞いということがわかりました ほんとうにありがとうございました
377 名前:デフォルトの名無しさん [2010/02/10(水) 21:01:13 ] >>375 見た感じ遠い未来に見える。 kenai.com/projects/jruby/pages/Ruby1_9Support
378 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 21:02:47 ] >>372 それは作者がUTF-8の普及だか何かのためにわざとやってるらしいよ
379 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 21:08:40 ] >>377 そもそもなんでそんな時間かかるんだよ 何がネックになってるんだ
380 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 21:12:04 ] >>379 Java からも読めるように作ること Java VM 上で単独で動く ruby インタプリタを作るだけなら たぶんもっと早くにプロジェクト完了してるんじゃないかな
381 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 21:55:57 ] つか1.8.7って鬼車使えるの?
382 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 22:18:29 ] 黙れカス
383 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 22:19:06 ] ごばく
384 名前:デフォルトの名無しさん [2010/02/10(水) 22:26:55 ] >>381 gem install oniguruma 組み込みになるわけではないので制約はあるが。 oniguruma.rubyforge.org/use.xhtml
385 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 23:22:59 ] oniguruma を使うようなひとなら mingw とか入れてるような 気がします・・・知らずに joni 使ってるひとも嫌少ないだろう・・・
386 名前:デフォルトの名無しさん [2010/02/10(水) 23:49:30 ] >>381 ってjrubyの話なん?
387 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 03:58:52 ] >>384 Requirements * Oniguruma regular expression library (>= 4.x.x) ってことは 自分でOnigurumaをコンパイルするか バイナリをどこからともなく拾ってくる必要があるってことか ./configure make make install で済む話ではあるが
388 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 22:37:00 ] irb> p "ねこだいすき" "\343\201\255\343\201\223\343\201\240\343\201\204\343\201\231\343\201\215" irb> $KCODE="u" irb> p "ねこだいすき" "ねこだいす\343\201\215" なんだこれ
389 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:22:03 ] 下のようなループってrubyだとどう書きますか? for (i = rect->lx, j = rect->ly; i <= rect->hx; i++) map[i][j] = TRUE;
390 名前:デフォルトの名無しさん [2010/02/11(木) 23:24:17 ] 最近出るようになった気がする。 $ cat test.rb # coding: utf-8 p 'ねこだいすき' $ rvm 1.8.7-p72,1.8.7-p160,1.8.7-p174,1.8.7-p249,mput ruby -Ku test.rb ruby-1.8.7-p72: ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin10.2.0] "ねこだいすき" ruby-1.8.7-p160: ruby 1.8.7 (2009-04-08 patchlevel 160) [i686-darwin10.2.0] "ねこだいすき" ruby-1.8.7-p174: ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin10.2.0] "ねこだいすき" ruby-1.8.7-p249: ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin10.2.0] "ねこだいす¥343¥201¥215" mput-head: ruby 1.9.2dev (2010-02-10 trunk 26632) [x86_64-darwin10.2.0] "ねこだいすき"
391 名前:デフォルトの名無しさん [2010/02/11(木) 23:26:15 ] >>389 jは変化してないけどいいの? iだけならuptoでよいでしょう。
392 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:41:26 ] >>391 ありがとうございます! これをrubyに書き換えて勉強中でした。 ttp://racanhack.sourceforge.jp/rhdoc/coderect.html
393 名前:デフォルトの名無しさん [2010/02/11(木) 23:52:42 ] >>388 redmine.ruby-lang.org/repositories/revision/ruby-18?rev=26103 usa, 2009年12月15日 11:50 AM string.c (rb_str_inspect): wrong result of UTF-8 inspect because of the mistake of calculation. reported by eban via IRC. これかな。 あれ、1.8.7-p248 がクリスマスリリースだったはずだが…
394 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:56:35 ] Iconv::IllegalSequenceを見るのはもう飽きたお…
395 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 03:35:08 ] 何か一揆にperl5の時代に戻った気がするなw 教祖様が日本語処理ぐらい最初からまともに組み込んでてくれれば。
396 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 06:07:00 ] iconvとnkfってどう違うの? どう使い分けたらいいの?
397 名前:デフォルトの名無しさん [2010/02/12(金) 08:13:29 ] nkfは - shift_jis, euc-jp, iso-2022-jp, utf-8しか使えない。 - 改行コードの変換ができる。 - カタカナやアルファベットの全角半角変換ができる。 - base64のデコード/エンコードができる。 iconv - いろんなコードが変換できる。
398 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 08:28:43 ] >>372 ttp://www.artonx.org/diary/20100211.html#c01
399 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 08:33:31 ] 文字コード変換ならiconvが上で その他機能がnkfにはあると そういうこと?
400 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 08:51:30 ] そもそも文字コード変換に上とか下とかあるんかいな 1.9のencodeとNKF/iconv/kconv/uconvの違いも教えてほしい
401 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 09:14:29 ] 動作が違うとかは置いとくと 対応してる文字コードが多いほうが上っていうことでしょ String#encodeはよくわからんが ttp://jp.rubyist.net/magazine/?0009-BundledLibraries
402 名前:デフォルトの名無しさん [2010/02/12(金) 09:17:58 ] encodeは文字列のバイト表現を指定のものに変換したStringを作り、エンコード情報を設定。 encode!は自分自身の持つバイト列とエンコード情報を変える。 force_encodingは自分自身のエンコード情報のみ変える。バイト列はそのままで解釈が変わる。 kconvはnkfをラッピングして文字コード変換のみ、簡単にできるようにしたもの。 uconvはたしか標準じゃないよな? euc-jp, cp932(shift_jisの亜種), utf16, ucs-4に対応している。 rubyでutf-8が扱えるようになったのはuconv作者の提案したコードがもとになってる。 ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/4186
403 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 09:28:13 ] >>400 NKFはguessができるので、現在のエンコーディングが何かわからなくても変換ができる ただ、日本語関連(とMIME)しか認識できないしLatin-1とかの指定もできない iconvはguessができないので、現在のエンコーディングを正確に(本当に正確に)指定しないと変換できない そのかわり、NKFではできなかったような文字エンコーディングの値の保持解釈ができる SHIFT_JISとCP932やEUC-JPとEUC-JP-MSを使い分けられる(可能性がある)のはiconvだけ ただし、相手のマシンにインストールされている外部iconvのバージョンと対応に依存するのでやや面倒 iconv実装にはでっかい版と小さい版があり、外人産は小さい版だけを使うことが多いのでファッキンガッデム 1.9のEncodingはiconvを使ってる kconvはNKFを使ってる uconvはめんどくさいからもう使うな、使わなくても用は済むはず
404 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 09:36:07 ] >>401 そのリンクは読んだけど総花的であんまり参考にならなかった ・M17N(1.9)/NKF/iconv/kconv/uconvで変換結果に差が出ることがあるか ・速度の違い ・推測の精度 ・使い分けのシチュエーション がよくわからんのですよ
405 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 09:38:35 ] >>403 わかりやすい
406 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 09:44:20 ] ってことは,事実上 iconv と NKF の二種類しか変換器は存在しないわけね でメールみたいに入力のエンコーディングがよく解らん場合はNKF.guessをつかえと 入力のエンコーディングが固定されてる場合はiconvでおkでOK? 1.9のM17Nはguessしてくれてるんだと思ってたわ。
407 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 09:47:44 ] > メールみたいに入力のエンコーディングが のあとに続くのが > よく解らん場合 なのがショックだ あれは99パーセントくらいの確率でヘッダに書いてあるまんまだと思うのだが最近は違うんか
408 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 09:49:41 ] メールやHTMLが文字化けするのはヘッダのエンコーディングと実際のエンコーディングが違うからなんじゃないの?
409 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 09:55:24 ] 日本人しか使わないプログラムなのならNKFでいいよ 外国の人も使うならiconv「でなければならない」 MechanizeとかではNKFを組み込んでしまった日本人がいて、その部分がえんえん障害になってる iso-8859-xはNKFのShiftJISに誤爆することがあるんだが、そのへんの処理を考慮してない
410 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 09:59:50 ] >>407 メールの現実を知らなさ過ぎる
411 名前:デフォルトの名無しさん [2010/02/12(金) 10:11:38 ] 1.9のencodeは青学の先生のライブラリ(transcode)じゃないの?
412 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 10:37:03 ] >>411 ttp://jp.rubyist.net/magazine/?0025-Ruby19_m17n#l76 ttp://naruse.biz/pub/20080621%20RubyKaigi%20RubyM17N.txt ttp://www.sw.it.aoyama.ac.jp/2008/pub/RubyKaigiM17N.html これか 1.9のM17Nはiconvじゃなくてtranscodeみたいだ また兄弟が増えちまった よくわからなくなってきた
413 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 11:04:08 ] 1.9のEncodingの中の人はIconvだと思ってたIconvの例外出すやんキュピーンやん と思ってたんだが出なかった あれー、昔はIconvが例外出してなかったっけ、気のせいか irb> "@".encode(::Encoding::SHIFT_JIS) Encoding::UndefinedConversionError: "\xE2\x91\xA0" from UTF-8 to Shift_JIS irb> "@".encode(::Encoding::CP932) "?@"
414 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 11:08:15 ] うちは大家族ですから^^; おとーちゃんビシッと言ってやりな って言うは簡単だけど結構面倒だよね…
415 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 11:54:27 ] うっぜぇ変なもん作るなよ rubyってiconvすら実装されてない糞言語だったのか
416 名前:デフォルトの名無しさん [2010/02/12(金) 11:58:46 ] 馬鹿発見。
417 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 12:15:08 ] みてみて! Ruby でクイックソート書いてみた。 def qsort(ary) return [] if ary.empty? v = ary.shift left, right = ary.partition{|e| e < v} qsort(left) + [v] + qsort(right) end ary.dup とかした方がいいのだろうか。 ま、いいや。
418 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 12:27:58 ] irb> Iconv.conv('shift_jis', 'utf-8', "\302\273") Iconv::IllegalSequence: "\302\273" irb> Iconv.conv('cp932', 'utf-8', "\302\273") Iconv::IllegalSequence: "\302\273" » (» 、RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (U+00BB)、終わりギュメ) を含むUTF-8文字列をIconvでShift_JISっぽい文字列にしたいんですが…
419 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 12:43:39 ] >>417 受け取ったArrayを中途半端に破壊してるのは……まあ確かにまずいかも アルゴリズム的な補足をするなら、単純かつ美しい実装ならそれでもいいけど、 実用上はピボットの取り方を工夫しないといけない
420 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 12:44:32 ] irb1.9> "\302\273".encode('SHIFT_JIS') Encoding::UndefinedConversionError: "\xC2\xBB" from UTF-8 to Shift_JIS そもそもだめぽい
421 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 12:58:36 ] Ruby M17N は transcode という独自実装 Iconvは環境依存な上にWindowsだとないから、Ruby M17N で使うことはできなかった なお、libiconvのCP932周りのサポートが腐ってるのも致命的だとされた > そのかわり、NKFではできなかったような文字エンコーディングの値の保持解釈ができる > SHIFT_JISとCP932やEUC-JPとEUC-JP-MSを使い分けられる(可能性がある)のはiconvだけ nkf もできるよ > メールやHTMLが文字化けするのはヘッダのエンコーディングと実際のエンコーディングが違うからなんじゃないの? そんな根本的に違う指定ってそんなにあったっけ?
422 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 13:00:01 ] >>418 変換表に定義されてないんで、変換前に別の文字にgsubするのが正解
423 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 13:13:10 ] >>418 422が書いているようにgsubするのもありだが 変換時の戻り値で分岐するというやり方もある 詳細は下記の "Encoding::Converter#primitive_convert" の項目参照 jp.rubyist.net/magazine/?0025-Ruby19_m17n#l76
424 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 13:26:50 ] >>421 実際にメーラーを書いて運用してみたらいい
425 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 14:06:43 ] kconvの "\302\273".tosjisでは"\x91\xB9"になるな エラー出して教えてくれたほうがマシかも
426 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 17:04:09 ] >>424 単にCP50221って話じゃないの、それだとguessは悪手なんだが
427 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 18:29:23 ] reg2 = Regexp.new("A(.*)CD(.*)EF") str1 = "AbbccCDasdaEF" str1 =~ reg2 これで得られる$1と$2をループかなにかで 添字をつけて取得できないものでしょうか?
428 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 18:55:24 ] >>427 Regexp.last_matchとか$~のこと?
429 名前:427 [2010/02/12(金) 19:21:56 ] >>428 $~がMatchDataってオブジェクトになってるのか ありがとう、解決しました。
430 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 19:39:54 ] >>427 foo = reg2.match str1 とすれば、foo にその MatchData が入る
431 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 19:54:03 ] kconvとかnkfの話はrubyと関係ねぇ…
432 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 20:14:00 ] kconvは関係あるな nkfは関係ないがNKFは関係あるな
433 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 21:08:09 ] Ruby1.9で勉強していた(>>1 を読んでませんでしたorz)のですが、 Railsもやってみたいということで、1.8をインストールしたいです。 ですが、Synaptic(Ubuntuのパッケージマネージャ)に1.8のフルインストールパッケージがありませんでした。 なので公式サイトにあるソースコードからインストールしようと思うのですが、 うまく1.9と共存できるのでしょうか? 宜しくお願いします。
434 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 21:26:32 ] 1.8と1.9ならおおむね問題はない ユーザーディレクトリにインストールしても動くぞ
435 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 21:32:17 ] ありがとうございます、今やったところ 1.9が/usr、1.8が/usr/local にたまたまなのか入ったので問題なさそうです。 とりあえずrubyとirbコマンドは1.8で起動するようにしました。
436 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 21:35:41 ] へえ、いつの間にか1.8なくなってたのか
437 名前:デフォルトの名無しさん [2010/02/12(金) 21:42:43 ] 参考までに、./configure するときに 1.8.7$ ./configure --prefix=$HOME --program-suffix=187 && make install 1.9.1$ ./configure --prefix=$HOME --program-suffix=19 && make install とすると $HOME/bin/ruby187 $HOME/bin/ruby19 などが出来る。 最近はコマンド一発でruby環境を切り替えられる rvm という便利なツールもある。 (多少不安定だが)
438 名前:デフォルトの名無しさん [2010/02/12(金) 22:14:07 ] このようなデータがある時に、重複したデータ削除したいです。 irb(main):001:0> address = Array.new => [] irb(main):006:0> p address [{"name"=>"taro", "tel"=>"11111111111"}, {"name"=>"hanako", "tel"=>"22222222222"}, {"name"=>"hanako", "tel"=>"33333333333"}, {"name"=>"taro", "tel"=>"11111111111"}] 重複している {"name"=>"taro", "tel"=>"11111111111"} を削除したいです。 調べてみて uniq 使えば良いかなと思ったのですが、違うようです。 わかる方、アドバイス貰えると助かります。
439 名前:デフォルトの名無しさん [2010/02/12(金) 22:21:44 ] uniqでいいように見えるんだけど。
440 名前:デフォルトの名無しさん [2010/02/12(金) 22:31:06 ] >>439 失礼しました。uniq で良かったようです。
441 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 23:15:20 ] rsenseってなんですか?
442 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 00:11:16 ] Rubyコードを補完してくれるもの ruby rsenseでググるといろいろ情報が見つかるよ
443 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 00:27:21 ] >>442 ありがとうございます.メッセで飛んできて「使ってみたらおもしろいかも」って言われて気になってました. github.com/m2ym/rsense これですね.でもどうやって使えばいいんですか?
444 名前:デフォルトの名無しさん [2010/02/13(土) 00:47:08 ] こいつ自体はファイルとその中での位置を与えると補完候補を返すというコマンドに すぎないので、好みのエディタのマクロでそれを呼び出して候補を表示する部分は 自作する必要があると思う。
445 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 03:44:36 ] >>444 ありがとうございます.Emacs使ってるんで色々みてみます.といってもなんかドキュメント少ないみたいですが;
446 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:23:42 ] $gem install newgem したら ERROR: Error installing newgem: rubigen requires thoughtbot-shoulda (>= 2.10.2, runtime) とか出てきて さらにthoughbot-shouldaを探しても見つからないんですが newgemのインストールの仕方を教えてください $ gem --version 1.3.5 $ ruby --version ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-mswin32]
447 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:34:58 ] gem install thoughtbot-shoulda --source=gems.github.com
448 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:36:14 ] 「or を伴う式をメソッドの引数に渡す場合は二重に括弧が必要となります。 」 ってどういう意味?
449 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:43:24 ] そういうことはしないでくださいね、の意
450 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:43:36 ] puts(nil or "a") だめー puts((nil or "a")) おk
451 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:51:56 ] >puts (nil or "a") a 普通にいけたけど?
452 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:55:07 ] それ括弧なし
453 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:57:32 ] >>448 それ余計な文言だよな 査読者や編集者がやっぱり必要だと思う 「メソッドの引数にする場合にはorを伴う演算部分を括弧でくくって式にする必要があります」が正解 p(false or "yes!") だと「p (false が偽だったら "yes!"」と解釈されて文法エラーになる false or "yes!" がひとつの処理の塊だとわからせるために式として括弧で括り、 (false or "yes!") なおかつ、これ全体を引数として指定してるんだということをわからせるために引数としての括弧を省略せずに使う p() にさっきのカッコつき式を適用して p((false or "yes!")) となる なお、>>451 のように引数括弧相当の存在が明確な場合はエラーにならない この括弧は引数の括弧ではなく式を作る括弧だ
454 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 10:13:03 ] ありがとうございます。 もしかしてメソッド名と引数を括る括弧の間を空白で空けてはいけない? (第一引数の式を括る括弧と解釈される?)
455 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 10:26:20 ] メソッドの引数のカッコはメソッド名と分かれてはいけない が、分かれた場合は「引数のカッコを省略して引数の全体(または一部)をカッコで括った」と解釈される おおむね同じ動作をするので、実際上はみんな深く考えてない puts("ruby") #=> "ruby" をメソッドに渡す puts ("ruby") #=> ("ruby") の結果をメソッドに渡す
456 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 10:36:24 ] ありがとうございました。 ロジカルシンキングではなくイマジネーションでってことですね
457 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 10:51:47 ] いや物凄い論理的だと思うが 引数括弧を省略するのがコンセンサスになってるのはpとかputsとかごく一部だぞ それ以外の普通のメソッドはとりあえず括弧つけとく派が多数派だ irbとかだと読み返すこともないから適当に省略しまくってるが
458 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 10:55:08 ] >>456 意味不明なときは感覚なものととらえてしまうけど、 しばらくRuby使ってなれてきたらロジカルなものだと理解できるようになるよ、がんがれ
459 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 11:34:23 ] ちょっと使ってみたんだけど、この言語(というか処理系?)、は多項式時間や指数関時間な計算をブチ転がそうとすると圧倒的に遅いわね… なによ…まったく!
460 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 12:45:56 ] そこらへんのしっかりしたドキュメントが無いから どうしても試行錯誤で感覚的にならざるを得ない
461 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:33:34 ] >>460 カッコで括ったら式になるってちゃんと書いてあるだろ
462 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:35:08 ] そんなところで試行錯誤した覚えはないなあ
463 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:42:42 ] p(2*10) #=> 20 p (2*10) #=> 20 p(2*10)*2 NoMethodError: undefined method `*' for nil:NilClass p (2*10)*2 #=> 40
464 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:45:38 ] > メソッドの引数のカッコはメソッド名と分かれてはいけない これが書いてないだろ?
465 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:49:36 ] >>459 O(nlogn)の近似アルゴリズムに変えるか、Inline C 使うか、 そもそも C で書け。
466 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:42:27 ] ,―ヽ_(((((_、― ,/ ノ ヽ ~\ / ノ IPA ヽ ~\ / ノ ヽ、 `ヽ | ノ / ̄\ / ̄~ヽ ヽ i | ノ | ノ \ | <●> <●> ( ) \ | | | i / | / ヽ レ i (●_●) / i、 ,-――-、 ・ / i、 <(EEEEE)> ∵/ 多項式時間や指数関時間な計算が遅いのは当たり前だろ i、 \ ./ / \ ーー ,ノ ,,.....イ.ヽヽ、ー-―一ノ゙-、. : | '; \_____ ノ.| ヽ i | \/゙(__)\,| i |
467 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 19:53:39 ] 多項式時間や指数関時間の計算をRubyでやる男の人って・・・
468 名前:デフォルトの名無しさん [2010/02/13(土) 20:57:16 ] マルチバイトの文字列のうち、ASCIIの制御文字にあたるもの(NULLとかCRとか) を削除するには sub /\s+/, '' でいいですか? 0x00〜0x1fだけを削除するにはどうしたらよいですか?
469 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 21:18:32 ] irb> p "ね\001こ\t大\025す\177き\n".gsub(/[[:cntrl:]]/){''} == "ねこ大すき" true irb> p "ね\001こ\t大\025す\177き\n".gsub(/(?![[:space:]])[[:cntrl:]]/){''} == "ね こ\t大すき\n" true
470 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 21:18:33 ] 普通に /[\x00-\x1f]/ じゃダメなの?
471 名前:デフォルトの名無しさん [2010/02/13(土) 21:21:50 ] 飼ってたインコを食べたので猫はきらいです
472 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 21:29:55 ] >>469 名前つきでわかりやすそうに見えて実はわかりにくいというなんとも
473 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 21:30:57 ] キャリッジリターンやラインフィードは立派なコントロールコードですよ
474 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 21:35:40 ] >>470 いいんじゃまいか
475 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 21:42:39 ] > 0x00〜0x1fだけを削除するにはどうしたらよいですか? こういうの見るたび、DELは消さなくていいんだろうか、といつも思う
476 名前:デフォルトの名無しさん [2010/02/13(土) 21:55:53 ] ISO-2022-JP文字列に対して実行してESC(0x1B)を消されてしまえー。
477 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 22:07:14 ] >>467 Ruby を愛しています ゆるしてください
478 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 22:25:51 ] 童貞のくせに愛なんて言葉を軽々しく使うな
479 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 22:46:25 ] rubyはJavaの1000倍の生産性があると聞いてやってきました
480 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 22:54:29 ] エロ画像を一括でスクリプトとか書くならそれぐらいあるかもしれない
481 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 23:05:47 ] RubyでJSON(と言うかJavaScriptのオブジェクトの記述)をパースしたいのですが require "yaml" p YAML.load('{"num":"123456789"}') とかやるとエラーになってパースできません。何か良い方法があったら教えてください p YAML.load('{"num": "123456789"}') ならパースできるようですが、JavaScript的にはどっちでも通るはず・・・
482 名前:デフォルトの名無しさん [2010/02/13(土) 23:39:39 ] # 正しいところを見ているのかちょっと自信がないけど。 yaml.org/spec/1.1/index.html#id933010 Explicit Values An explicit value is denoted by the “:” indicator, followed by separation spaces. 仕様かも?
483 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 00:41:07 ] 面倒でなければ、gem install jsonで JSON.parse(json_str) するのが簡単で確実。
484 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 08:04:15 ] ちょっとあなた RubyInlineでインスタンス変数を参照する方法がわかりませんわよ
485 名前:デフォルトの名無しさん [2010/02/14(日) 10:32:41 ] jp.rubyist.net/magazine/?0009-YAML にもコロンの後にはスペースとしつこく書いてあるな。 YAMLのフロースタイルがJSONとして評価できたとしても、逆ではないってことかな。
486 名前:デフォルトの名無しさん [2010/02/14(日) 10:34:53 ] >>484 使ったことないけど、Cの世界にいるときは rb_obj_ivar_get じゃねーの?
487 名前:デフォルトの名無しさん [2010/02/14(日) 10:38:14 ] ja.wikipedia.org/wiki/JavaScript_Object_Notation 他のデータ記述法との関係 但し、厳密にはJSONはYAMLのサブセットではない[3]。具体的には配列とハッシュの区切りを それぞれ, のようにカンマ+スペースの形にしたときにのみYAMLのサブセットとなる。したがっ て、YAML.loadといったYAMLのルーチンを流用してJSONデータを読み込む場合は、あらかじ め区切りの文字をYAMLと互換性を保つようにしておく必要がある。
488 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 12:42:36 ] さすがにJSONをYAMLのライブラリで読むのは横着だろうw
489 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 13:02:11 ] 何でそんなしょぼいところで非互換性持たせてるんだ
490 名前:デフォルトの名無しさん [2010/02/14(日) 13:11:56 ] たまたま似てるだけであって互換性を意図的に持たせようとしたわけではないから。
491 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 13:20:42 ] たまたまと言い張るには似すぎだろ
492 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 13:25:56 ] >>489 サブセットにしようと思って作ったんだけど手作業での網羅が漏れてたらしくて
493 名前:デフォルトの名無しさん [2010/02/14(日) 13:42:37 ] 何に怒りをぶつけているんだろう。
494 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 14:12:08 ] お客様がいらしてるご様子
495 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 14:20:09 ] >>494 こんなので「怒ってる」とかありえんよな 素直にMLにだけ引き篭もってろと
496 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 15:41:12 ] ruby1.9.1(mswin32)で動くプロファイラありませんか? 標準のは遅すぎて使い物になりません
497 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 15:49:59 ] 自分で作れるよ
498 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:25:54 ] どうやって作るのですか?
499 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:43:08 ] 掲示板で説明できるようなものじゃないけど、 profile や profiler を見れば既存の作り方は書いてあるよ。 あとは処理速度を向上させる工夫をするなり、 自分で一から作るなりすればいいよ。
500 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:49:37 ] それは標準のものでは? 自分で書いたからといって速くなるとは思えませんが如何でしょうか?
501 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:55:21 ] ちょっとお茶しませんか?
502 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 16:58:01 ] >>500 そんなの自分次第やん
503 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:01:48 ] Rubyの使用メモリ量を測る方法って何かありますか? 終了までの最大量だけでもわかるといいんですが
504 名前:デフォルトの名無しさん [2010/02/14(日) 17:09:23 ] Linuxだと "/proc/#{$$}/status" とかを読んだらいろいろ分かるかもしれない。 ほかは知らん。
505 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:10:15 ] >>503 Rubyとしては提供されてない OSから観測してもらうしかない
506 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:10:38 ] UNIX なら top Windows ならタスクマネージャ
507 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:12:04 ] valgrind使えばいけるかも
508 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:13:53 ] まあ、/proc 使っていいなら stat のポーリングで top コマンドみたいにやればいいんだけどさ。 libproc.so って /proc の出力を露骨に sscanf() してるから あんまり汎用性ないよなーと思って。
509 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:14:45 ] 汚いコピペだなあ
510 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:21:46 ] >>504 お前帰れって言われてんだよ
511 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:25:01 ] >>504-508 ありがとうございます Windowsで見たいのですがcygwinなら/proc/pid/statusは同様に使えそうな感じなんで 詳しく調べてみます
512 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:25:36 ] >>502 自分次第とおっしゃいますと具体的にはどのような工夫がありますでしょうか?
513 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:33:21 ] ruby-profは?コンパイルはがんばれ
514 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 17:43:59 ] いや、早い話、インストールするだけで動くものはありませんかってことです。 ruby-profはドキュメントでは1.9対応を謳っていましたがWindows用のものは msvcrt-ruby18.dllが見つからないと表示され、1.8用のDLLを参照しようと してしまい動きませんでした。
515 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 18:05:12 ] Rubyコミュニティで自分で作れと言われたらそれは ありませんごめんなさいという意味です。 素直にあきらめましょう。
516 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 18:21:32 ] それを先に言ってください
517 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 18:32:48 ] 無いなら自分で作ればいいってだけの話だな。
518 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 18:53:46 ] 初心者にそれを求めるのは酷
519 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 18:59:13 ] というか普通に動くが
520 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 19:02:58 ] 何を使っているんですか?
521 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 19:16:29 ] やり方わからなくて詰まるくらいなら経験たまるまで素直に1.8だけ使えやオラ、とか思わなくもない
522 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 19:38:21 ] コンパイルさえできればいいんだから、コンパイラ入れるかmingw32使ってみるというのはどう
523 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 20:48:23 ] 妹にチョコもらってしまった…
524 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 21:59:36 ] やれるのかやれないのかハッキリしてよ
525 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:04:51 ] チョコくれたんだから実はOKという意思表示なのでは
526 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:07:05 ] 女だってやりたいんだよ 童貞は知らないだろうけど
527 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:24:22 ] 女がやりたがってるのは好きな男とだぞ 勘違いしちゃダメだぞ
528 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:25:07 ] やべ 勘違いしてた
529 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:26:22 ] インターフェースは同じはず そこはポリモーフィズムで…
530 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 22:27:51 ] スレ違いだからもう終わりよ、みなさん。 いろいろと参考になりましたが。
531 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 23:25:51 ] 童貞きめえ 女に植えてんだなかわいそうにおまえら
532 名前:デフォルトの名無しさん mailto:sage [2010/02/14(日) 23:29:19 ] コンピュータばかりいじりすぎて 外の世界が見えません。
533 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:06:07 ] gemをインストールしたあと使おうとすると no such file to load になるんだけど どうすれば使えるようになるの?
534 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:25:35 ] >>533 そのgemのインストール自体は正常に終わっているとすると、 require 'rubygems' require 'gemのライブラリ' で使えるようになるはずだが。(つまり、毎回rubygemsをrequireする必要がある) たとえば、ちょっとjsonの場合はこんな感じ。 $ sudo gem install json $ irb irb> require 'rubygems' irb> require 'json' irb> JSON.parse('{"num":"123456789"}') => {"num"=>"123456789"}
535 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:26:04 ] require "rubygems"
536 名前:534 mailto:sage [2010/02/15(月) 00:26:52 ] 書き途中で送信してしまった。 × たとえば、ちょっとjsonの場合はこんな感じ。 ○ たとえば、ちょっと前のレスのjsonの場合はこんな感じ。
537 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:28:56 ] webos-goodies.jp/archives/51106257.html
538 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 00:57:22 ] sudoをつけてなかったのが敗因だった。ありがとう
539 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 01:12:58 ] --pre とか付けると no such file to load となる すばらしいマイエンバイロンメント ruby 1.8.2、 gems 0.9 いきなり詰んだorz
540 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 01:19:53 ] ysky.vox.com/library/post/gems のオプション仕様が変わった.html あした gems 自体を update させてもう一度やってみょ 寝るべzzz
541 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 01:30:34 ] いちはちに…
542 名前:デフォルトの名無しさん [2010/02/15(月) 07:52:31 ] >>539 なんのための--preか知らんが、Rails 3βとかは1.8.7以降でないと動かんぞ。
543 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 08:05:05 ] ていうか1.8.2は5年以上前の不安定版なんだが 今更これ使うくらいなら俺はPerlをやる
544 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 08:13:11 ] Pythonは?
545 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 09:07:03 ] JSON is YAML って言っている人はいるけど、本当に上位互換になるのは 1.2 から。 で、Ruby 標準添付の syck は 1.0 なので
546 名前:デフォルトの名無しさん [2010/02/15(月) 10:19:49 ] _why行方不明だし、どうなるんだろ Syck。
547 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 10:32:31 ] どうなるもなにも、これまでの「優秀だったがサポートがなくなったライブラリ」と同様の道を辿る
548 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 10:49:22 ] 1.8用のtranscodeっぽいものってない? バイト列とエンコーディングを投げるとバイト列の適切な区切り位置を記憶してくれるライブラリみたいな
549 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 10:59:07 ] >>546 Aaron さんが互換ライブラリを開発中 >>548 Iconv じゃダメですか
550 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 11:04:17 ] data = Array.new data = [1, 2, [3, 4, [5]], 6] 多次元配列のデータがあります。 このデータを、次のように1次元配列に格納しなおしたいです。 p data => [1, 2, 3, 4, 5, 6] 多次元配列のデータは、今回のサンプルでは3次元ですが、 実際のデータは何次元になるかわかりません。 そのため、再帰の必要性があると思い次のようなメソッドを考えました。 def split_ary(ary) local_ary = Array.new return local_ary if ary.empty? ary.each do |a| if Array == a.class split_ary(a) else local_ary << a end end end 良く考えれば当然なのですが1次元にできません。。。 p split_ary(data) => [1, 2, [3, 4, [5]], 6] 1次元にするには、どのように改善すれば良いでしょうか。
551 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 11:17:25 ] [1, 2, [3, 4, [5]], 6].flatten
552 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 11:21:42 ] >>551 おおお!! このようなメソッドが既にあるのですね。 ありがとうございます!
553 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 11:34:29 ] flatten使うべきだけど、後学のために def split_ary(ary, local_ary = []) ary.each {|a| if a.kind_of? Array split_ary(a, local_ary) else local_ary << a end } local_ary end
554 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 11:47:28 ] >>553 丁度、ライブラリ set.rb の flatten メソッドのソースを眺めている所でした。 ・Array クラスか判定するのに、kind_of を使うこと ・local_ary を引数(の位置?)で、Array.new すること 勉強になりました。 初めは set.rb を見ても理解できなかったのですが、 私が書いたソースを改変して貰ったおかげで、理解できました。 ありがとうございました。
555 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 13:07:36 ] すごく重要なことだけど、多次元配列はRuby標準では存在しない ただの入れ子になった配列 多次元であるかのように振舞うことはない
556 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 15:28:12 ] irb(main):006:0> (5.6 * 10500).to_i => 58799 58800になってほしかったんですが、なぜこんな風になってしまうんでしょう?
557 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 15:31:43 ] www.google.co.jp/search?num=30&hl=ja&q=ruby+%E5%9B%9B%E6%8D%A8%E4%BA%94%E5%85%A5&btnG=%E6%A4%9C%E7%B4%A2&lr=
558 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 15:32:04 ] >>549 バイト列 unsafe_str から制御文字を取り除きたいんです んで、世の中にはたとえば iso-2022-jp のような \e を必要としてるエンコーディングもあるので、 そういう場合、「必要な制御文字」だけは残したいんです display_encoding = "ISO-2022-JP" unsafe_str = Iconv.iconv(display_encoding, "UTF-8", 'ねこだいすき').join unsafe_str #=> "\e$B$M\e(B\\000\e$B$3$@$$\e(B\\e\e$B$9$-\e(B" # \000と\eが入ってるのがやだ safe_str = kill_dangerous_ctrl_chars_on(display_encoding, unsafe_str) p safe_str #=> "\e$B$M$3$@$$$9$-\e(B" ちなみに日本語以外にも対応したいですというか日本語だけでいいなら悩みません
559 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 15:49:33 ] >>556 5.6を10500回足したものが、本当は58800よりもほんの少しだけ小さいから irb> (5.6 * 10500) - 58800 -7.27595761418343e-12 より正確には、2進数で表現される5.6が10進数で考える本来の5.6よりもほんの少しだけ小さいから Float#to_iは「切り捨て」を行うので、「58800よりもほんの少しだけ小さい数」の小数部を切り捨てて、58799になる これを簡易に防ぐには、>>557 の言うように四捨五入のメソッドを整数化処理として擬似的に使う 誤差が0.5を超すことは一般的用途ではまずないから irb> (5.6 * 10500).round 58800 もし本当に厳密に計算を行いたいのならbigdecimalライブラリを使う irb> require 'bigdecimal' irb> (BigDecimal.new("5.6")*BigDecimal.new("10500")).to_s "0.588E5"
560 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 15:59:21 ] >>559 を>>557 から読み取れというのは酷だな
561 名前:デフォルトの名無しさん [2010/02/15(月) 16:01:17 ] 「なんで期待した値にならないのか」の答えじゃなくて 「とにかく望んだ値を得る方法」だものな。
562 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 16:08:44 ] まあ、暇な人がリンクをたどって(または単に自前の知識で)説明してくれるだろうと期待して 情報のポインタだけぶん投げるというのは省労力的にはアリではある どっちかっちゃFAQに近いし
563 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 18:36:31 ] BigDecimal.を見るとなぜかマルちゃんのでかまるを思い出す
564 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 18:58:21 ] rubyがメインにしているOSって何ですか?
565 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 18:58:49 ] linux
566 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 19:01:12 ] どのlinuxでしょうか?
567 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 19:02:15 ] debian といってもubuntuやFedoraとかでもそう振る舞いは変わらないと思う
568 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 19:05:57 ] Linux上で適当にコンパイルされたRubyで動作させるスクリプトは、 Windows上で慎重にコンパイルされたRubyで動作させるスクリプトの倍以上の速度を誇る
569 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 19:06:13 ] DebianはPythonマンセーって感じだけどね。
570 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 19:12:46 ] debianはデスクトップにもサーバーにも使えるから使い勝手がいいんだよね うちの会社は全PCdebian
571 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 19:13:21 ] Rubyをシステムスクリプトに組み込むなんて狂気の沙汰だ しかもDebianのシステムを中途半端にRedHat系列に再現するとかありえん
572 名前:デフォルトの名無しさん [2010/02/15(月) 19:14:04 ] とつぜん何を。
573 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 19:18:29 ] >>571 mphは目指すところは悪くなかったんだよ しかしいかんせん当時のRubyの完成度安定度が低すぎた 良くも悪くもkondaraだな
574 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 01:37:19 ] cgi書いてるんだけど、CGI#out でHTMLを出力する場合、ソースを全部一度に吐き出す感じになるよね? 処理しながら少しずつHTMLを出力するにはどうしたらいいの?
575 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 02:05:35 ] ふつーに標準出力に書き出せばいいのでは
576 名前:デフォルトの名無しさん [2010/02/16(火) 02:07:58 ] あんなもんつかわずに適当にテンプレートエンジン使ったほうがいい。
577 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 02:08:26 ] >>575 なるほど。 標準出力でいいんですね。
578 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 03:40:26 ] >>547 まじか Ruby の未来は暗いな
579 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 04:13:51 ] >>574 リストに吐き出して最後に結合
580 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 07:08:05 ] Marshal.dump(obj[,port][,limit])を使って データをグローバル変数に保存したいんですけど不可能ですか?
581 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 07:31:04 ] 質問の意味がわかりかねるねるねるね
582 名前:580 mailto:sage [2010/02/16(火) 07:38:37 ] def save_bitmap file = File.open("test.txt", "wb") Marshal.dump(@data, file) file.close end これだとtest.txt内に@dataを保存しますよね? これをグローバル変数に保存したいのですが def save_bitmap file = File.open($data, "wb") Marshal.dump(@data, file) file.close end これじゃだめですか?
583 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 08:04:57 ] $dataと@dataってどうなの $data = Marshal.dump(@data) は違うの?というかこれなら $data = @data でいいじゃん
584 名前:580 mailto:sage [2010/02/16(火) 08:36:03 ] できましたありがとうございました 考えすぎていたようです
585 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 08:46:10 ] というかグローバル変数使うなかっこ悪いから トップレベルのローカル変数とメソッドの引数でデータの受け渡ししろ
586 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 08:55:45 ] ディープコピーの常套手段ってやつか
587 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 09:16:12 ] 引数と返り値で充分なやり取りだと思えるかどうかには自覚と時間が必要 ・ グローバル変数いらねえ ・ クラス変数使う必要ねえ ・ これインスタンス変数でなくてもいい と感じるにはちょっと時間が要る 他人から言われてもえーって感じでピンとこない
588 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 11:36:08 ] >>579 メモリ食いつぶした。 謝罪と賠償を(ry
589 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 14:39:42 ] 配列で指定した要素を一つだけ削除する命令ってないですか? [1,2,3,4,5,1,1,1,1,1] これの1を一つ削除して [2,3,4,5,1,1,1,1,1] にしたいんですが。delete(val)だと全部消しちゃいますよね。
590 名前:デフォルトの名無しさん mailto:sage [2010/02/16(火) 14:48:27 ] >>589 それなんかやたらよく聞かれるんだが、メソッド一発でやる方法は特にない arr = ["a", "b", "c", "b", "a"] arr.delete_at(arr.index("b")) p arr ["a", "c", "b", "a"]
591 名前:589 mailto:sage [2010/02/16(火) 15:08:55 ] def delete_learn_data(delete_id) $game_system.golem_learn_data.each_with_index{ |value, i| if delete_id == value $game_system.golem_learn_data.delete_at(i) break end } end とりあえずこれでいけました。ありがとうございました。
592 名前:デフォルトの名無しさん [2010/02/17(水) 13:47:36 ] メソッドhogeの引数としてフォーマット用文字列と任意個の文字列を渡して formatで整形した文字列を作りたいんだけど hogeの引数はどんな形で渡したらいい? def hoge(引数) s = format(引数1, 引数2, 引数3・・・) end 以下のようにしたらsは1つの配列として扱われてformatに too few argumentsと言われてしまいました def hoge(f, *s) s = format(f, s) end hoge('%s %s', 'aaa', 'bbb')
593 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 13:50:15 ] format(f, *s)
594 名前:デフォルトの名無しさん [2010/02/17(水) 14:53:03 ] thx
595 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 15:23:25 ] Rubyやってて良かったことを教えて下さい。
596 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 15:37:21 ] 自分用スクリプトでPerlを使わなくて済んだ オブジェクト指向に触れてなんとなく理解した気になれた
597 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 15:47:09 ] railsに尽きるなぁ rails無かったら何の価値も無かった
598 名前:デフォルトの名無しさん [2010/02/17(水) 16:48:37 ] ニワカ乙
599 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 17:00:24 ] プッ 反論してみろよカス
600 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 17:34:43 ] 論に対してしか反論はありえない。
601 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 17:36:48 ] mechanizeとnokogiri(hpricot)はなかなかいいライブラリだとは思った あれら程手軽に使えるスクレイピングライブラリは他の言語では知らない
602 名前:デフォルトの名無しさん [2010/02/17(水) 17:46:35 ] railsを作ってしまうような香具師がrailsが存在する前から評価してた言語ってだけで十分な気がする。
603 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 19:30:01 ] でも他のスレでRubyの4文字を出すと馬鹿にされる
604 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 19:31:33 ] >>595 Javaを使わなくて済むようになった・・・まあRubyじゃなくてもいいんだけど。 >>602 なんでやねん。そんな理由がだれをどう嬉しくするのさ。
605 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:00:29 ] >>603 難解な言語技術を修得しているという自負が 平易な言語に対する無体な態度につながるんだろうか
606 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:14:05 ] >>605 Ruby厨でぐぐれ
607 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:35:35 ] Java厨の嫉妬は凄いよな。
608 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:37:40 ] ・ Rubyをちょっと齧ったばかりで興奮して他スレで煩いRuby厨 ・ 生まれてこのかたJavaしか知らない自称中級者 を混ぜると危険というかひたすら面倒
609 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:39:16 ] そろそろ隔離スレ行こうね
610 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:40:08 ] ・ Rubyには興味がないがRubyに関わった遣り取りにウンザリしてもう排除したいと思ってる人 を追加 というか本スレでやれ
611 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 22:41:40 ] 変態同士仲良くしろよ
612 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:14:40 ] .. (. . ) ,―ヽ__(__、― ,/ ノ ヽ ~\ / ノ IPA ヽ ~\ / ノ ヽ、 `ヽ | ノ / ̄\ / ̄~ヽ ヽ i | ノ | ノ \ | <●> <●> ( ) \ | | | i / | / ヽ レ i (●_●) / i、 ,-――-、 ・ / i、 <(EEEEE)> ∵/ IPA Rubyスレは誰でもウェルカム i、 \ ./ / \ ーー ,ノ ,,.....イ.ヽヽ、ー-―一ノ゙-、. : | '; \_____ ノ.| ヽ i | \/゙(__)\,| i | > ヽ. ハ | ||
613 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:18:26 ] >>612 いつも思うんだけど この人だれ??
614 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:21:18 ] ミスターつこうた
615 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:33:15 ] >>613 こいつにレスしたのお前だけだぞ
616 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 23:39:16 ] 申し訳ごめんなさい。
617 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 01:44:24 ] 絶対にゆるさない
618 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 19:54:41 ] StarRuby今落としたんですが この板にスレッドが無いのが気になりました。 ゲーム開発用であんまり需要無いんですか?
619 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 20:03:48 ] ありませんというかそもそもゲーム製作専用系は板違い 【Ruby/SDL他】Rubyでゲーム制作・総合スレッド ttp://pc11.2ch.net/test/read.cgi/gamedev/1207069887/
620 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 21:07:28 ] >>595 手軽に短くかっこよくツールが書けること。 あと、Rails
621 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 21:11:38 ] Pythonから来ました。 自分用のプログラムを書くときに、クラス定義のときに組み込みクラスを オーバーライドするのが怖いので、トップレベルにMyAppみたいな名前の モジュールを作ってから、その中にクラスを定義しているのですが、 これはRuby文化に反するのでしょうか? また、Pythonのように、組み込みクラスはすべて、Builtin::String, Builtin::Arrayみたい になってたらなあ、と思ったのですが、何故こうなっていないのでしょうか?
622 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 21:36:19 ] 適当なモジュールでくるむのは普通に行われているし、実質推奨になっている まあ、それ自体が被る可能性もあるが > 何故こうなっていないのでしょうか? めんどくさいから …まあ、オープンクラスっても限度あんだろ、とはみんなちょっと思ってはいる ある意味初期の見通しミスをずるずる引きずってるわけで
623 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 21:57:05 ] 本当のところはMatzに聞かなきゃ分からんが、 デメリットを勘案の上でオープンクラスを選択したのは間違いないわけだから 設計意図どおりだと思うけどなあ オープンクラスの影響範囲を押さえ込む名前空間システムが 検討されてるらしいが、いつ実装になるやら
624 名前:621 mailto:sage [2010/02/18(木) 21:59:30 ] >>622 むしろ推奨でしたか。安心しました。有り難うございます。 トップレベルにすべての組み込みクラスがあるのは面倒くさいから。。。 実にRuby的だなと思いました(笑)。いいですね。 もし初期の見通しをひきずっているのなら、Ruby2.0なんてのが出る時には 改善されるかもしれませんね。
625 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 22:05:47 ] いわゆる Std:: を使わないのはオープンクラス主義と反するからであるのは間違いない
626 名前:621 mailto:sage [2010/02/18(木) 22:08:53 ] >>623 オープンクラスなのは、メリットがとても大きいと思うので気にならないのですが、 どうして、組み込みをすべてトップレベルにしてあるのかなと思ったのです。 自分用のクラスを定義するときには、組み込みクラスの名前はすべてすでに使われているわけで、 名前空間がクリーンじゃないなと。 > オープンクラスの影響範囲を押さえ込む名前空間システム そんなのが実現したらすごそうですね。
627 名前:デフォルトの名無しさん [2010/02/18(木) 22:22:54 ] selector namespace だっけ?
628 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 22:30:06 ] python も str = 'hoge' みたいなことすると あほなことになるが
629 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 22:45:07 ] それは__builtins__.strを上書きしてるわけじゃないから、 モジュール外に被害は出ないだろ。
630 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:20:07 ] lambdaについて lambdaはreturnがクロージャから戻り、また引数チェックを行うprocというところまで理解しました。 ですが、このlambdaメソッドはどのように定義されているのでしょうか? 引数チェックはなんとなくメタプログラミングでできそうな気がするのですが、returnの挙動を変える なんてことができるのでしょうか? Cで実装されているのかもしれませんが、もしRubyで実装するとすればどのようになるのか教えてください。
631 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:23:39 ] クラスメソッドを定義しようとして def Fixnum.bar end と書いたら 1.bar で NoMethodError: undefined method `bar' for 1:Fixnum になります。どうすればいいんでしょうか?
632 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:31:22 ] >>631 1.class.bar Rubyのクラスメソッドは、その定数で表されるclassオブジェクトのインスタンスメソッドという程度の意味しかない
633 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:31:51 ] クラスメソッドはインスタンスからは呼べないんじゃないの? 1はFixnumクラスのインスタンスだし。 とりあえず、クラスメソッドと定義しているわけだから Fixnum.barとすれば動く。 もし、1.barという風に実行したかったのなら クラスメソッドではなく、インスタンスメソッドを定義したかったのだという事になる。
634 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:35:49 ] >>630 >このlambdaメソッドはどのように定義されているのでしょうか? Proc.new 本当に理解したければBindingオブジェクトの知識が要ると思う
635 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:40:35 ] インスタンスメソッドを定義したかったのでした
636 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:51:27 ] >>635 それなら class Fixnum def bar puts "bar" end end と書いて、1.barとすればいい
637 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 01:53:33 ] Fixnumにメソッド追加するのはおおむねキモいけどな キモいと自分で感じるまではこれは仕方ない 便利に使うといい
638 名前:630 mailto:sage [2010/02/19(金) 01:54:53 ] >>634 Proc.new == Kernel#procですよね?(Ruby1.9) Bindingオブジェクトは雰囲気だけは分かります。どうか教えてください。 returnの挙動をどうやってメタプログラミングしたのかが知りたいのです。 すみません。
639 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:10:55 ] あー何度もすみません。特異クラスがおおもとの疑問でした。(試行錯誤の中で>>631 へ) 特異クラスの動作を見てみようと a = 1 def a.foo end とすると TypeError: can't define singleton method "foo" for Fixnum となるのでどうすればいいのかなと
640 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:20:38 ] >>639 俺もあまり詳しくないが、とりあえずFixnumとかSymbolとかは特異クラスが定義できない。 a = 1 b = 1 としたときにaとbのobject_idが同じ(aもbも同じオブジェクトを指す)になるのと関係あると思う。 String等その他大勢では a = 'foo' b = 'foo' とするとaとbは違うオブジェクトを指すし、これらには特異クラスが定義できるはず。
641 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:21:31 ] >>639 Fixnux/Symbol/Nil/True/Falseあたりは処理効率の都合で特殊な実装になってるから その手の実験では避けた方がいい
642 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 02:23:12 ] >>638 わああめんどくせえええ 一応ここはCで書いてあるはず local_jump_error使ってるんじゃなかろうか 本スレ行き
643 名前:638 mailto:sage [2010/02/19(金) 02:28:13 ] >>642 すみません。わああ眠れねええって感じでしたので(笑)。 うは、LocalJumpErrorですか。なんかニオイますね。 初心者なのに、変なところに首を突っ込んでしまったようです。
644 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 07:31:17 ] 分かりました。ありがとうございました
645 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 09:02:57 ] RubyForgeってところでrubyインストーラー落とせると公式に書いていますが rubyinstaller-1.8.7-p249-rc2.exe これを落としたいのですが10Mに7時間とかかかるんですが 他に落とせる所は無いんですか?
646 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 09:50:54 ] なんとなくRubyでゲーム書いてみたくなったんだけど 2Dで手軽にって感じだと何のライブラリ使うのがいいかね?
647 名前:デフォルトの名無しさん [2010/02/19(金) 10:24:06 ] SDL Miyako(SDL使用) 書籍あり RPGツクール(古いか) くらい?
648 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 10:27:01 ] >>645 回線速度で割り算して妥当でないなら時間置いてやり直せ 10MBくらいのファイルなのはRubyならどこも同じ
649 名前:645 mailto:sage [2010/02/19(金) 10:33:33 ] ブロードバンドスピードテスト 通信速度測定結果 www.bspeedtest.jp/ v3.0.0 測定時刻 2010/02/18 10:27:07 回線種類/線路長/OS:光ファイバ/-/Windows XP/- サービス/ISP:-/- サーバ1[N] 23.7Mbps サーバ2[S] 25.8Mbps 下り受信速度: 25Mbps(25.8Mbps,3.22MByte/s) 上り送信速度: 17Mbps(17.6Mbps,2.2MByte/s) これで7時間とかおかしいと思うんですがなんででしょうか firefoxとか関係ないですよね 昨日の12時ぐらいにやっても同じだったんでなんででしょう
650 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 10:37:40 ] >>643 何か目的があるの? 例えばthreadでeachのようなものを定義してreturnしたいとか?
651 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 10:41:16 ] >>649 こっちは転送率通常 回線経路の問題かも 現在のRubyInstallerはrubygemパッケージで未対応が存在するMinGW32版だけどその覚悟はある?
652 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 11:04:06 ] >>612 ぐぐっても見つからないんだが、どこにあるの?
653 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 11:06:45 ] >>652 こいつにレスしたのお前が2番目だぞ
654 名前:645 mailto:sage [2010/02/19(金) 11:17:08 ] 他のPCでも試してみます >現在のRubyInstallerはrubygemパッケージで未対応が存在するMinGW32版だけどその覚悟はある? これの意味がよくわかりませんが初心者なのでテンプレ通り1.9.1やめて1.8.7落とそうと思ってます。 rubyinstaller-1.8.7-p249-rc2.exe ←これでいいんですよね? star rubyってのをやりたいんですけどこれはrubyの拡張ライブラリ?っていう位置付けでいいんですか?
655 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 11:37:33 ] しかしなんでわざわざRubyなんかでゲーム作ろうと思うんかね 「○○がRuby経由でもできるようっひょー」が目的であって、Rubyから○○を学ぶのには基本不適だろうに >>654 arton.hp.infoseek.co.jp/indexj.html こっちの入れれ
656 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 15:16:08 ] $KCODE ='s' p Dir.entries(Dir.pwd) とやると [".", "..","う\202\311", "しのり\202\361", "すず\202\310"] こんなのが返ってくるのですが$KCODE以外に何をすれば日本語フォルダを扱えるのでしょうか? WindowsXP SP3 Rumixで導入した1.8.7を使ってます
657 名前:645 mailto:sage [2010/02/19(金) 15:32:08 ] activescriptrubyインストールできましたありがとうございます hello_world表示できました エディタがあるようですがRDEとかRDTがあるようですが みたかんじRDEがとっつきやすそうにググったら見えたんですが RDEでいいんでしょうか?
658 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 15:39:02 ] あー、Shift_JISでも起こるのか 早めに改定出して欲しいなあ >>656 内部的には普通に扱えてる p は内容そのものではなく、画面に表示しやすいように整形してから表示する しかもバグがあって最後に日本語文字があると必ず化ける putsで表示してみ
659 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 15:40:50 ] >>657 どっちも別にエディタじゃない気がするが、どうしてもどっちかを使いたいのならRDEでいいよ
660 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 18:12:36 ] >>658 バグですか こっちはこっちで勘違いしたことやってたので全く気づきませんでしたw ありがとうございます
661 名前:デフォルトの名無しさん [2010/02/19(金) 21:30:25 ] 文字コードを変換して読み書きしてくれるFIleクラスのラッパーライブラリってありますか? イメージとしては SjisFileWriter.open(path, "utf-8") do |file| file << utf8string end とすると、sjisに変換して書き込んでくれるようなものを期待してます。 closeするまでStringIOに溜め込んで一気に変換しようとしたのですが、 データが大きくてサーバーがパンクするのであきらめました。 もしかしてコツがあって、こういうのは簡単に書けるものなんでしょうか?
662 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 21:35:25 ] 改行があるのなら、改行ごとに読み込んで改行ごとに文字エンコーディングを変換して最後に連結すればいい
663 名前:デフォルトの名無しさん [2010/02/19(金) 21:51:24 ] 1.9だと希望とほぼ同等のことが出来るんだけどね。 1.8の場合、文字の途中をどうするかといったことを考えずにやるなら 出力に使うメソッドをひととおりコード変換するようにオーバーライド すればよいと思う。 writeだけのオーバーライドでいいのかな。
664 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 21:53:08 ] >>661 1.8 と 1.9 で対処が変わってくると思うので Ruby のバージョン教えれ
665 名前:デフォルトの名無しさん [2010/02/19(金) 21:59:19 ] >>662 Fileクラスの振りをしてそういうことをするには、どんな風なコードを書けばいいのでしょうか? FasterCSVは内部で、 @io << row.map(&@quote).join(@col_sep) + @row_sep # quote and separate こういうことをやっているので、コンストラクタで@ioに渡してあげると 書き込みのタイミングでエンコーディング変換してくれる Fileオブジェクトがあればいいなと思っています。
666 名前:デフォルトの名無しさん [2010/02/19(金) 22:00:39 ] >>663 , 664 すみません、リロードしてませんでした。 Rubyのバージョンは1.8.7です。
667 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 22:03:48 ] これはひどい
668 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 22:04:38 ] すいませんリロードしてませんでした >>667 は>>663 についてです
669 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 22:09:39 ] これはひどい
670 名前:661 mailto:sage [2010/02/19(金) 22:10:20 ] もしかしてこんなのでいいんでしょうか?動くかちょっと試してみます。 class SjisFileWriter < File def <<(str) str.kconv(Kconv::UTF8, Kconv::SJIS) end end
671 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 22:12:03 ] すいませんリロードしてませんでした >>669 は>>668 についてです
672 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 22:13:13 ] これはひどい
673 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 22:15:56 ] 末尾再起スレでやれ
674 名前:デフォルトの名無しさん mailto:sage [2010/02/19(金) 23:23:37 ] なんなんだこの流れはw
675 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 15:25:28 ] 二次元配列的クラスを定義して配列の配列と透過的になるよう要素に a[i][j] のようにアクセスできるようにしたいんですがどうすればいいでしょうか?
676 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 16:26:07 ] >>675 無理 …いや、2次元くらいなら無理じゃないんだが、 その見栄えを保持するためだけに計算する遅いクラスになるぞ NArray の a[i, j, k] みたいな記法じゃだめですか
677 名前:デフォルトの名無しさん [2010/02/20(土) 17:59:39 ] プログラマ三大美徳というものがありますが Rubistにもそういったものがあるのでしょうか?
678 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 18:05:30 ] 誰かの発言に影響されるのは嫌い。
679 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 18:09:12 ] >>677 なにもない というか > Rubist というようなものがない Railsやってる人とは仲悪いし
680 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 18:30:08 ] Railist vs Rubyist
681 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 20:07:31 ] >>676 ありがとうございました。 配列の配列ですでに書いてある奴をクラスに直したいなと思ったもので。
682 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 21:51:45 ] > Railist むしろレースウェイズと呼びたくなるファミスタ脳。
683 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 22:28:14 ] Railsint(笑) ポッポ屋でいいだろw
684 名前:682 mailto:sage [2010/02/20(土) 22:37:43 ] 今さら誤字に気付いた。レイルウェイズだな。 オリックスと近鉄が合併するって時にゲームファンの誰もが口にしたっけ。
685 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 02:19:19 ] こんなコードを書きまんた ---------------------------------------- # test.rb class Foo def initialize(&func) @func = lambda(&func) end def bar(x) @func.call(x) end end foo = Foo.new{ |x| return x**2 } p foo.bar(2) ---------------------------------------- いごきました $ ruby -v ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin10] $ ruby test.rb 4 いごきませんでした $ ruby1.9 -v ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-darwin10] $ ruby1.9 test.rb test.rb:11:in `block in <main>': unexpected return (LocalJumpError) from test.rb:6:in `call' from test.rb:6:in `bar' from test.rb:13:in `<main>' どうして?
686 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 03:16:26 ] >> 685 難いww とりあえず、lambdaとprocの違いはreturnの挙動の違いだよな。 そのreturnの挙動を決めるタイミングが1.8と1.9で違うんじゃね?
687 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 08:22:09 ] ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/35167 ここらへんのか
688 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 10:53:49 ] んじゃ1.8と1.9両方で美味しく動作する foo = Foo.new{ |x| return x**2 } p foo.bar(2) を実装するにはどうしたらいいんだべ? foo = Foo.new(lambda{ |x| return x**2 } p foo.bar(2) なら作れたけどラムダラムダ五月蝿い感がある。
689 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 11:03:02 ] ブロックの中で最後に評価された式の値が暗黙で返るのを利用するのがエレガントだと思う
690 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 11:27:33 ] 仕事でlambda使うケースなんて滅多にないけどな
691 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 11:32:27 ] class Foo def initialize @func = lambda end def bar(x) @func.call(x) end end foo = Foo.new{ |x| return x**2 } p foo.bar(2) イケルがなぜか -:3: warning: tried to create Proc object without a block と出る
692 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 11:52:51 ] なぜかもなにもそのまんまの理由だと思うが
693 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 12:33:42 ] >>692 class Foo def initialize @func = proc end def bar(x) @func.call(x) end end foo = Foo.new{ |x| x**2 } p foo.bar(2) だと警告がでないのはなんで?
694 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 12:36:28 ] lambdaとproc(とProc.new)は処理が違う
695 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 12:38:29 ] Rubyのめんどくさいとこベスト3に入るところだな きちんとした解説ページとかないものか
696 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 15:12:28 ] # ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mswin32] p lambda{return 0}.call #=> 0 p lambda(&lambda{return 0}).call #=> 0 p lambda(&proc{return 0}).call #=> 0 # ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-mswin32] p lambda{return 0}.call #=> 0 p lambda(&lambda{return 0}).call #=> 0 p lambda(&proc{return 0}).lambda? #=> false p lambda(&proc{return 0}).call #=> unexpected return (LocalJumpError) 1.9だとKernel.#lambdaにprocを渡すとprocが帰ってくるんだな 仕様なのかBUGなのか
697 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 15:14:30 ] &lambdaは&lambdaの誤りね
698 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 16:44:02 ] 自分は組込みの仕事なのでCを使っているんだけど、 Rails以外で仕事でRubyを使う場合、どんなものを 作っているの?
699 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 17:13:17 ] 自分の効率アップ用途以外には使わない俺スクリプト 仕事に使う中間物の生成プログラム 社内オンリーの更新頻度が高い内製プログラム Rubyソースコードを商品にすることはほぼ確実にない Rubyスクリプトが作り出したものを売ったり配ったりすることも少ないかと なくても無論なんとかなるしプロダクト自体には全く影響しないが、能率ががくっと落ちる もちろん本質的にはRubyでなくてもよい PerlやPython、JavaやC++(えー)で超速く安定に作れるならむしろそっちのほうがよい
700 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 17:23:18 ] >>699 なるほど、製品レベルとなるにはまだ先のことですかね。 自分にとって現時点ではRubyは業務とは無縁の存在だけど 勉強はしておこう。
701 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 17:25:26 ] プログラマーズベストフレンドという文言がそのまんまだな 言語オフィシャルレベルでこれを標榜してる傲ま…いや野心的なところは見たことがない 配布ライブラリなんかで言ってるところは少なくないんだけど ttp://www.google.com/search?num=50&hl=en&lr=&q=%22a+programmer%27s+best+Friend%22
702 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 17:30:15 ] > 製品レベルとなるにはまだ先のことですかね 永遠にないんじゃないかなあ、と最近思ってる そういう方向には進化してない気がするし、製品を作ろうとしないほうがうまくコード書ける気がする Eclipseがなくても製品は作れるが、ないと死ぬ、そんな位置にRubyが入り込むんじゃないかと
703 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:33:03 ] matzもRubyは同僚に差をつける秘密兵器として使ってほしいとか なんとか昔言ってたしな。
704 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:43:16 ] Rubyに関わったせいで同僚と差がついてしまいましたorz
705 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:53:08 ] Rubyでプログラミングしてると「何とかして面白いコードは書けないか」と、そこに注力して仕事が進まないんだが。 どうしてくれる!Matzは責任とれ!
706 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:53:35 ] 他社に差をつける秘密兵器だと思ってた時期がおれにもありました
707 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 21:58:44 ] >>706 間違いじゃないけどね 全員がRuby相当のものを修めてる会社は強いはずだ
708 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:00:55 ] しかしつまらんスレだな
709 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:03:43 ] ま、ここはRubyの開発者が名無しで書き込むスレだからな。
710 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:13:20 ] 何かこうエロい話題は無い物か。
711 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:16:47 ] おっぱいクラスとか作れば?
712 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:43:44 ] >>710 このスレに何を求めてるんだw
713 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 22:45:02 ] Rubyのアイコンが亀甲縛りに見えるぐらいしか思いつかない
714 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 01:33:59 ] >>711 おまえのエロの限界はおっぱいまでなのか? しかも虚構のおっぱいクラス
715 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 02:22:29 ] エロい話題のところすみません 半年ほど前は普通にgem installできていたはずなのですが、つい最近gemを新たにupdate、installしようとすると以下のようなエラーが出るようになりました $ sudo gem install hogehoge ERROR: While executing gem ... (Errno::EEXIST) File exists - /opt/local/bin/gem 環境はMac OS X(10.4.11)で、 RubyGems Environment: - RUBYGEMS VERSION: 1.3.5 - RUBY VERSION: 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin8] - INSTALLATION DIRECTORY: /opt/local/bin/gem/: - RUBY EXECUTABLE: /opt/local/bin/ruby - EXECUTABLE DIRECTORY: /opt/local/bin/gem/:/bin - RUBYGEMS PLATFORMS: - ruby - x86-darwin-8 - GEM PATHS: - /opt/local/bin/gem/: - /Users/******/.gem/ruby/1.8 - /opt/local/lib/ruby/gems/1.8 - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :benchmark => false - :backtrace => false - :bulk_threshold => 1000 - :sources => ["gems.rubyforge.org/ ", "gems.github.com "] - REMOTE SOURCES: - gems.rubyforge.org/ - gems.github.com です
716 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 02:28:35 ] エラーが出るようになったのはわかった。で?
717 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 02:37:30 ] /opt/local/bin/gem か /opt/local/bin/gem/ の権限がおかしいように見える
718 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 02:53:53 ] >>717 opt/local/bin以下をls -lしたところgemは -rwxrwxr-x 2 root admin 548 Feb 15 15:18 gem となっていますがrootではなくユーザー権限の方がいいのでしょうか
719 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 04:06:02 ] 権限をユーザ名にしてみたり-rwxrwxrwxにしてみたりしましたがやはり状況は変わりませんでした なんとなく - INSTALLATION DIRECTORY: /opt/local/bin/gem/: の部分が /opt/local/lib/ruby/gems/1.8 になるべきなんじゃないかという気がしてきたので今後はそちらから攻めてみようと思います /opt/local/bin/gemは実行ファイルなのでDIRECTORYっておかしいですよね…
720 名前:715 mailto:sage [2010/02/23(火) 04:53:36 ] 連投すみません GEM_HOME変えたら直りました 昔入れたrailsとかも全部こっちに入ってたのでいつの間にか変更されてたみたいです ご協力ありがとうございました
721 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 15:00:19 ] オッパイクラス マダー?
722 名前:デフォルトの名無しさん mailto:sage [2010/02/23(火) 22:20:30 ] Ruby2.0まで待て