[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 03/16 20:58 / Filesize : 261 KB / Number-of Response : 970
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Ruby 初心者スレッド Part 19



1 名前:デフォルトの名無しさん mailto:sage [2008/04/14(月) 00:26:33 ]
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

   【Ruby1.9 は不安定な開発版であり初心者には全く向きません】
   【最新安定版の Ruby1.8.6 の使用を強くお勧めします】

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


487 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 18:54:07 ]
send使えよ

488 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 19:15:48 ]
つか初心者スレっぽいな

489 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 19:43:59 ]
>>482に対して>>484-486を持ち込むあたりいかにも初心者だな
微笑ましい…のか?

490 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 19:50:19 ]
入力をどう扱うかも示さないと回答として片手落ちだしな

491 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 20:05:25 ]
というか初心者スレとしては普通に回答するか解説つきで説明すべきなんだがね
自分の知識の結果をただ披露して悦に入ってどうするよ

492 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 20:07:48 ]
YARVで、あるベンチマークが
* 「100%速くなった」というのは、時間が半分になったということ?
* 「200%速くなった」というのは、時間が1/3になったということ?
* 「25%速くなった」というのは、時間が20%減ったということ? ( 1 / (1-0.20) = 1.25 )
教えてえらいひと。


493 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 20:17:30 ]
自己嫌悪はそこまでにして、次w

494 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 20:23:19 ]
>>482

数値から数値までを足すときはガウスが少年時代に行った
計算方法を利用してプログラムを作った記憶が有るなあ
1~aを計算するとして
aが偶数なら(1+a)*(a/2)
aが奇数なら最初にa+1に対して上と同じ計算をして最後にa+1を引くように
すれば簡単に計算できた記憶が有る
例えば
a=10(偶数)ならば
(1+10)*(10/2)
a=11 (奇数)ならば
i=a+1
(1+i)*(i/2)-i
と場合分けすると式が短くて簡単


495 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 20:44:11 ]
>>494
なるほどね。
他の方法で暗算だとa,a+1のうち、偶数になる方を2で割ってから掛け合わせたりする。
例:
1~100の場合、100*101/2 = (100/2)*101
1~123の場合、123*124/2 = (124/2)*123

以上は経験的に「奇数の1/2 * 偶数」よりも「偶数の2/1 * 奇数」の方が
暗算しやすいからだけど、プログラムにも活かせると面白いかも。
例えば、少量データで早い実装、大量データで早い実装のように複数の関数を
用意しておいて、稼働状況に応じて使う関数を自動的に切り替える。



496 名前:デフォルトの名無しさん [2008/05/11(日) 11:38:08 ]
str0 = "bar"
の時、マニュアルによると
p str0[3, 1] #=> nil
らしいですが、自分の環境(1.8.6 mswin32)では""が返ってきます
何が悪いのでしょうか

497 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 11:54:30 ]
'bar'[2, 1] #=> 'r'
'bar'[3, 1] #=> ''
'bar'[4, 1] #=> nil

本当だ。なんかバグっぽい挙動だな

498 名前:デフォルトの名無しさん [2008/05/11(日) 16:47:40 ]
fw(findwordの略)というプログラムを作ろうとしています。

fw -fp '/usr/include/**/*.h' '~/**/*.h' -wp 'define\s+\w+' -pp '%1 %2 %3'という感じで
-fp の後ろに複数のファイルパターンを
-wp の後ろに複数の単語パターンを
-pp の後ろに表示用のフォーマットを指定できるようにしたいのですが、optparseをうまく操れません

上記の実行例だと
["/usr/include/**/*.h", "~/**/*.h"]
["define\\s+\\w+"]
と表示されて欲しいのですが、実際は
["/usr/include/**/*.h", "~/**/*.h"]
["define\\s+\\w+", "%1 %2 %3"]
と表示されてしまいます

printpattern = "%1:%2:%3" # filename:linnum:line
print = proc {|filename,linenum,line|
 STDOUT << (printpattern %filename %linenum %line) << "\n"
}
filepatterns = []
wordpatterns = []
ARGV.options {|opt|
 dest = wordpatterns
 opt.on('-fp' , '--filepattern')       { dest = filepatterns  }
 opt.on('-wp' , '--wordpattern')       { dest = wordpatterns  }
 opt.on('-pp S' , '--printpattern S' , String) {|s| printpattern = s  }
 opt.order! {|s| dest << s }
 p filepatterns
 p wordpatterns
}


499 名前:デフォルトの名無しさん [2008/05/11(日) 18:00:07 ]
正規表現に完全にはマッチしてないのだけど、あと数文字付け加えてくれたら
完全にマッチするみたいのを検出したいのですが、いい方法はないでしょうか?

500 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 18:05:01 ]
>>498
ショートオプションはアルファベット一文字のみ
あと質問にはないが、(printpattern %filename %linenum %line) はRubyでは動かない

501 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 18:31:50 ]
>>499
そのあと数文字を付け加えてない状態を正規表現で表せばいいんじゃない?
もっと具体的にやりたいことの例を出してみれ
解決策が出てくるかもしれないよ

502 名前:498 mailto:sage [2008/05/11(日) 19:53:16 ]
>>500
ありがとうございます。 一文字にしたらうまくいきました。
フォーマットは"%1$s:%2$s:%3$s" %[filename, linenum, line]でいけました

>>501
499も実は私なのですが、498のプログラムのwordpatternに複数行にも
マッチする正規表現を指定できるようにして、それでいて表示にファイル名と行番号も表示できるようにしたいです
re = /なんか正規表現/
linenum=1
curtext=nil
IO.foreach(path) {|line|
 if nil==curtext
  curtext=line
 else
  curtext+="\n"+line
 end

 if 途中までまっち
  linenum+=1
  next
 else if 完全まっち
  print.call(path,linenum,curtext)
 else
  curtext=nil
 end
 linenum+=1
}

503 名前:498 mailto:sage [2008/05/12(月) 00:17:51 ]
できたー とりあえず動いてるっぽいです
#!/usr/bin/env ruby
require 'optparse'
if $0 == __FILE__
 printpattern = "%1$s:%2$s:%3$s" # filename:linnum:line
 print = proc { |filename,linenum,line| STDOUT << (printpattern %[filename, linenum, line]) << "\n" }
 filepatterns = wordpatterns = []
 ARGV.options { |opt|
  dest = wordpatterns
  opt.on('-f'  , '--filepattern')  { dest = filepatterns }
  opt.on('-w'  , '--wordpattern')  { dest = wordpatterns }
  opt.on('-p S' , '--printpattern S') {|s| printpattern = s }
  opt.order! { |v|
   if wordpatterns.__id__ == dest.__id__ v = eval(v) end; dest << v
  }
 }
 wordpatterns << /\n/
 re = Regexp.union(*wordpatterns)
 text = ''
 filepatterns.each { |filepattern|
  Dir.glob(filepattern) {|filepath|
   next if !File.file?(filepath)
   linenum = 1
   text = IO.read(filepath)
   text.scan(re) {|m|
    linenum += $~[0].count("\n")
    print.call(filepath, linenum, m) if "\n" != $~[-1]
   }
  }
 }
end

504 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 02:46:36 ]
>>503
>  filepatterns = wordpatterns = []
>    if wordpatterns.__id__ == dest.__id__ v = eval(v) end; dest << v

filepatterns も wordpatterns も同じだろ、これ。


505 名前:498 mailto:sage [2008/05/12(月) 07:55:20 ]
filepatterns = []; wordpatterns = [] にしますた



506 名前:デフォルトの名無しさん mailto:sgae [2008/05/12(月) 19:23:13 ]
perlの基礎的なスクリプトをたくさん公開しているサイト(KENT WEBみたいな)はいくつかありますが、
rubyのこのようなサイトはないのでしょうか?

今までperlで改造を行っていたのですが、
研究室でrubyを使うことになったので勉強ついでに乗り換えようと思ったんですが…

507 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 19:24:38 ]
python使った方がいいと思うよ。

508 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 19:45:57 ]
…そーいえば無いな
あれは日本のperl(というかCGI)の黎明期に乗ったサイトだから仕方ないか
PHPにも無いわけだし問題ないかもしれん

>>506
研究室で必要な部分だけ習うだけにしておいたほうがいいぞ

509 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 19:48:34 ]
>>506
今まで見た事はないな
そもそも「rubyでCGI」自体がかなりマイナーだから
CGI前提のスクリプトも数えるほどしかない

Web上の解説記事や書籍を頼りに、自力で何とかするのがいいと思うよ
もしくはCGIスクリプトに関してはperlに頼るか

510 名前:デフォルトの名無しさん mailto:sgae [2008/05/12(月) 20:36:12 ]
ありがとうございます。やはり無いですかー…
CGIに関しては今まで通りperlで作ることにします。

511 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 20:43:02 ]
何かの言語でCGIが作れるようになったらあとは言語問わずに作れるはずだけどね。


512 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 21:03:26 ]
CGI作るなんてネットワーク技術者か?それともHTTPD製作者かよ?

>>506
本ならたくさんあるよ。Ruby CGIでググれ。
ただ、ほとんどPerlと一緒だから面白みはないけどね。
動いてるruby-webアプリなら、tdiaryとかbitclustのソース読むとかしてみれ。

513 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 21:55:35 ]
>>512
tdiaryのソースはおすすめせん。bitclustなら許す。

514 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 22:22:38 ]
鯖管としてはRuby CGIは止めて欲しい。

515 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 22:34:28 ]
>>514
何故に



516 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 22:34:34 ]
まあRubyに限った話じゃないだろうけどね
自作CGIなんて動かして欲しくはないわな

517 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 23:05:41 ]
日本ならtd/hiki動かしてる人はたくさんいるだろう。まあ、railsでtypoをとか
言われたら断りたくなる気持ちはおいらも分かるけど。
その辺はruby1.9/rails3あたりで解決してるといいなあ。

518 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 23:47:59 ]
class Object
 def tac
  yield(self)
 end
end

[[1,2],%w[sys cpu]].tac{|src|src[0].zip(src[1])}.tac{|src|Hash[*src.flatten]}
=> {1=>"sys", 2=>"cpu"}

このtacに相当する標準のメソッドってありますか?教えてください

519 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 00:14:59 ]
同じではないがtap
Ruby1.9のメソッドだったがプレビュー版1.8.7にも入ってる
おそらく次の安定版Rubyでは標準で使えるだろう

520 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 00:23:45 ]
配列の配列をハッシュに変換する方法、という意味かもしれない

そういえば、なんで標準で「一気にハッシュに変換・登録」ができないの?

521 名前:518 mailto:sage [2008/05/13(火) 00:30:14 ]
>>519
一時変数を使わずにlispみたいにゴリゴリ書ける方法は無いかなぁと思って
tapを参考に作ったんですが…
標準には無いってことですか

522 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 00:35:47 ]
>>520
キーにまつわる標準的な例外考えるのめんどくさいんだと思う
[[1,'one'], [1,'いち']] が {1 => 'いち'} になったらやっぱ例外出すべきだよな、とか

523 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 01:05:51 ]
Hash[*[[1,2],%w[sys cpu]].transpose.flatten]

524 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 01:27:19 ]
WxRuby2についての質問です。

RubyGemsを使って、wxruby-1.9.6-x86-mswin32-60をインストールしたのですが
付属のサンプルを実行しようとすると、wxruby2.soの読み込みで
「lib/wxruby2.so: 126: 指定されたモジュールが見つかりません。」
と言われてしまいます。何か他に、インストールが必要なものがあるのでしょうか?
(WxWidget2.8.7をインストールしてみても、やはり同じエラーが出ました)

OS: Windows XP
ruby: 1.8.6 [i386-mswin32]

525 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 10:32:09 ]
>>524
> (WxWidget2.8.7をインストールしてみても、やはり同じエラーが出ました)
PATH通してある?



526 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 12:34:47 ]
1.9.7が出てるようだから試してみるといいかもしれない
ただVC8でコンパイルされてるからまずそうな気もする
wxruby-1.9.6-x86-mingw32.gemをダウンロードして入れる方が楽かも

527 名前:524 mailto:sage [2008/05/13(火) 17:54:03 ]
mingw版をインストールしたら普通に起動できました(WxWidget無しで)。
助言ありがとうございました!

ちなみに1.9.7は、次のようなエラーでgemのインストールすらできませんでした。

rake (RUBYLIB等の位置を指定するオプション) extension
rake aborted!
Don't know how to build task 'extension'

528 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 18:27:40 ]
Rubyの初心者にたいして「これは読むべき」だと思うコードを教えてください。
ttp://q.hatena.ne.jp/1210650187

定番回答らしい回答が即っと無いのが現状をよく表しておるのう

529 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 18:56:41 ]
たった6時間前に登録された質問じゃん。
青木さんのコードとか、Pickaxeのコードとかいくらでもあるでしょ。

530 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 20:04:07 ]
真面目に答えようとすると難しそうだな
それにしてもRubyに限らず定番回答なんて存在するのか?
知ったか的なのならいくらでも挙がりそうだが

531 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 20:19:10 ]
net/pop.rbとかはどうだろう。
POPはプロトコル自体も小さいし。

初心者に800行近いのは無理か・・・

mailread.rbはたしかに短いけど、initializeにいっぱい詰めるのは好きじゃないんだよなあ
完全に漏れの好みの問題なんだけどさ。

532 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 20:39:39 ]
ここにぁるRubyのコードゎ
とっても勉強になるょ><
初心者なら全部読んでこんなコードを書くくせをつけたほうがいいょ><

golf.shinh.org/l.rb?rb

533 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 21:49:26 ]
コードなんて動けばいいんだよ
こういうコードを書くべき、なんてどんだけ
上から目線なんだよ

534 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 21:50:56 ]
まったくプログラムできないんだけど、Rubyを始めてみようかと思ってる。
理由は名前がかっこいいのと日本の方が作ったということで分かりやすいのかなぁと思ったことから。
ただ理由がこんな感じだから、勉強しててもただやり方を覚えるだけの作業のような気がしてならない。
何か作りたい物があれば、そのために勉強していけると思うんだが。

みなさんがRuby(プログラム)を始めたきっかけってなんですか?

535 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 21:51:00 ]
今から餌撒きかー
頑張れよー



536 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 21:52:51 ]
Rubyを止めたきっかけはPythonでいいと思ったから。

537 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 22:01:35 ]
>>534
CGI書くときにPerlが嫌で、他の言語を探してたらRubyに当たった

とりあえず、書籍読むなり誰かが書いたコード読むなりして
自分に合いそうだと思ったら始めてみたらいい
目的が欲しいなら、CGIスクリプトか自分用のファイル処理スクリプトでも書いとけ
ゲームが作りたいならそれを目標にしても良い

538 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 22:06:35 ]
>>534
プログラムを始めたきっかけ: 情報工学部に入ったから
Rubyを始めたきっかけ: Perlになんとなく嫌気がさしてたときに、研究室の先生にRubyをすすめられたから


539 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 23:27:38 ]
Rubyを始めたきっかけ: 昔いた会社の社長が気まぐれでMatz本買ってきてRubyおもろいと言いだした
Rubyを使うようになったきっかけ: 256本邪道編読んでOfficeだのをいぢりだしてから

540 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 00:22:41 ]
>>519
>>518 を見てそれ tap じゃんて思ったんだけど、
tap って self を返すんだっけか?

541 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 01:08:17 ]
selfを返す。
途中に挟んで(ワイヤタップして)、何事もなかったようにメソッドチェーンが進む。


542 名前:デフォルトの名無しさん [2008/05/14(水) 01:55:51 ]
>>534
Perlでの「もっと普通にプログラムかかせろ!」という不満から。
ベターPerlから入ったが、今はPerlとは全然違うものと感じている

543 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 12:33:33 ]
Rubyだけしか知らないつまらない人間にならないために必要な言語ってなんですかね

544 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 12:41:12 ]
>>543
Python
Scheme(かGauche、なんでもいいからLisp処理系)
Haskell

この3つ
あと基礎素養としてのCな

Perl5とPHP5は身近に使う機会があるならそっち憶えてもいいかと
JavaやVisualCやC++や.net関連は仕事で必要なら勉強させられるし
仕事で使わないのなら自分から憶える必要は全くないのでスルーでOK

日本語とか英語とかそういう自然言語のレスがあると予想

545 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 12:52:41 ]
SchemeというかGaucheは今ちょっと勉強してる
let を元にして let* と fluid-let と letrec というのを作った奴はどうかしてる
もう少しわかりやすい説明的名称にするか全く新しい名前を付けるべき



546 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 13:19:45 ]
>>543
Rubyをきちんと学んでればそうそう変なことにはならないはず
再帰とか継承とか本当にきちんと理解した?
Rubyで憶えられないのに他の言語に手を出したって無駄だぞ?

547 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 14:02:07 ]
C系記法の言語を1個覚えると応用が利く。

548 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 14:06:14 ]
>>547
初心者スレっぽい

549 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 14:28:57 ]
漏れもCがいいと思うよ。
拡張も作れるし。

550 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 16:22:05 ]
Lisp系は解るがPrologは本気で解らん
カットで詰まった俺

551 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 21:20:32 ]
CつーのはALGOL系の何かということなのか、
グルーピングに{}を使う言語程度の意味でいいのか。


552 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 21:35:24 ]
記法ウンタラ言う人は無視しておk

553 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 19:54:36 ]
>>544
> あと基礎素養としてのCな
俺ならLispも基礎素養の方に入れるな。


554 名前:デフォルトの名無しさん [2008/05/15(木) 22:38:28 ]
Rails初心者です。
rubyをインストール(c:\ruby)後、gemsにてRailsをインストールしました。
そして、MYSQLをインストールしたが、apacheも必要とわかり、MYSQLをアンインストール後
XAMPPをインストール(c:\xampp)。
ウェブアプリ作成用フォルダをc:\rails\を作成し、
テストをc:\rails\testで制作したがrhtmlが上手く表示されないので、教えて下さい。
コマンドプロントで

c:\rails>rails test

でフォルダ一式を作成した。
その後、WEBrickにて[localhost:3000/]アクセスすると初期画面は表示されました。
さらに、コマンドプロントで

c:\rails\test>ruby script\generate controller main

と指示を行い、c:\rails\test\app\controllersにmain_controller.rbがきちんと出来ていました。
main_controller.rbの内容→class MainController < ApplicationController end

次ぎにmain_controller.rbをテキストエディタで「def index」でアクションを追加し、
c:\rails\test\app\views\mainのフォルダの中に「index.rhtml」を作成しました。

index.rhtmlの内容→<html><head><title>あいさつ</title></head><body><h1>こんばんは</h1></body></html>

それで、WEBrickにて[localhost:3000/main/index]にアクセスすると
MissingSourceFile in MainController#index
とエラーが出てしまいます。

どうか解決法を教えて下さい。

555 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 00:01:12 ]
Mac で使ってます。
rubygems をインストールしました。

gem install proggresbar
を実行したのですが

Bulk updating Gem source index for: gems.rubyforge.org/
/usr/local/lib/ruby/site_ruby/1.8/rubygems/specification.rb:556: [BUG] Segmentation fault
ruby 1.8.6 (2007-09-24) [powerpc-darwin8.11.0]

というのがでてしまいます。
どのようにすればいいのか教えてください。





556 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 10:28:43 ]
>>554
PATHの設定がうまくいってないんじゃないかな?
エラー文を見るとcontrollerが見つからないって言ってるわけだから
初心者ならインストールを個別にやるよりInstantRailsを使ったほうがよい

InstantRails関連
www.itmedia.co.jp/enterprise/articles/0703/05/news014.html
instantrails.rubyforge.org/wiki/wiki.pl?Instant_Rails
japan.zdnet.com/sp/report/story/0,2000056431,20352478,00.htm

それからIDEはAptanaとかNetBeans推奨
WEBrickの起動も全部やってくれるから
codezine.jp/a/article/aid/2482.aspx?p=1

初心者はとにかく楽な方法で最初を乗り切ってしまおう

557 名前:デフォルトの名無しさん [2008/05/16(金) 19:05:44 ]
RailsはRailsスレがよいかと
【Agile】Ruby on Rails Part6【DRY】
pc11.2ch.net/test/read.cgi/tech/1210729470/

558 名前:デフォルトの名無しさん [2008/05/16(金) 21:04:29 ]
生POSTを取得したいのですが、どうにも分かりません。
PHPなら、
$stdin = fopen("php://input", "r");
で開けて、EOFまでぐるぐる回すのでしょうが。
Rubyではどうするのでしょう??
ちなみにフォームから送られてくるのは、XML形式のデータです。
お願いします。


559 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:19:13 ]
…なまぽすと?

require 'cgi'
cgi = CGI.new
params = cgi.params

という記述をした CGI に POST すると、params に適当なハッシュが登録されるから適当なキーで取り出せ
値は1個でも配列になってるから注意な

こんなんでどう?

560 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:35:25 ]
CGIスクリプトで?
標準入力を読めばいいだけじゃないの?


561 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 22:26:07 ]
>>555
rubyはどうやってインストールしたやつ?
それとOSのバージョンは?
Mac用バイナリはビルド方法が間違ってるという話だが、直ったのかな。

> /usr/local/lib/ruby/site_ruby/1.8/rubygems/specification.rb:556: [BUG] Segmentation fault
556行目は何?


562 名前:デフォルトの名無しさん [2008/05/16(金) 23:06:22 ]
>>559
ありがとうございます。
params=cgi.params
で、paramsにkey => "<?xml version" になって、その後の部分がvalueになりました。
とりあえず、取得はできました。
もうすこし、きれにとれないかしら?

>>560
ありがとうございます。
CGIです。
標準入力って、STDIN.getsとか?でしょうか??
やってみましたが、空っぽでした?何か大きな勘違いかもしれません。



563 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 23:09:44 ]
つうかどういうPOSTの仕方してるんだ?

564 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 23:15:46 ]
CGI.new した時点で標準入力はカラになってると思うよ
CGIモジュール内部でも標準入力を読み込み→パースしてるわけだから

565 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:14:41 ]
CGi.newしたら内部でinitialize_queryメソッドを使ってPOSTデータは
読み込みきってフォームパラメータ(application/x-form-encoded)や
マルチパートとして解析してしまうので、そうでない形式ならCGI.new
せずに標準入力を読まなければならない。




566 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:14:53 ]
>>558 >>562
もしかして、XML文書をリクエストボディに直接入れてPOSTしたいって意味か
フォームとか使わずに

そういう用途であれば、cgi.rbを使っている限り対応は不可能なので
他のライブラリに乗り換える必要がある
標準で済ませるならwebrick/cgi、外部ライブラリに頼るならRack

あと質問するときは「生POST」のように曖昧な書き方ではなく、もっと具体的に

567 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:20:35 ]
CGI.newする前に標準入力読んで,
$stdinにStringIOを突っ込むとかするばできそうな気がしないでもない

568 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:49:21 ]
まるごと Ruby! Vol.1
ttp://www.amazon.co.jp/gp/product/4844325795
ttp://www.impressjapan.jp/books/2579

また懲りもせず最初からナンバー振っちゃって大丈夫なんかいのう
Vol.2 で書くネタのアテはあるんか?

569 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:58:16 ]
舞波ってw
くまくまーの人か

570 名前:デフォルトの名無しさん [2008/05/17(土) 03:44:46 ]
>>563 >>564 >>565 >>566 >>567
みなさんどうもです。

ttp://d.hatena.ne.jp/mallowlabs/20080329/1206799301
にあるように、Ajaxがらみです。
Railsならa=params[a][b][0]でいけるので
Rubyでもそんなに苦労しないだろうと思ったのですが、
その前の段階でつまずきました。


571 名前:デフォルトの名無しさん [2008/05/17(土) 05:01:08 ]
>>568
そうそうたるメンバー?じゃないか
これは買わねば

572 名前:デフォルトの名無しさん [2008/05/17(土) 06:42:04 ]
>>570 の続きです

var xml = "<a><b>c</b><b>d</b></a>";
new Ajax.Request(url, {method: 'post', postBody: xml, asynchronous: false, contentType: 'application/xml'});

prototype.jsをつかって上のように非同期でpostデータがきます。
それをRubyで捕まえようとしたのですがうまくいかず質問させていただきました。



573 名前:デフォルトの名無しさん [2008/05/17(土) 07:31:01 ]
>> 560 >>564 >>567
ありがとうございます。
結局、CGI.newが先に来ていたので取れなかっただけでした。
a=STDIN.gets
ですんなり行きました。




574 名前:554 mailto:sage [2008/05/17(土) 18:42:41 ]
>>556さん
ありがとうございます。
すべて、一旦アンインストール(Ruby MYSQL Apache)をして、[Railsのアンインストール方法が分からないですが・・・]
InstantRailsをインストールしてみます。
IDEも初めて目にするのですが、いろいろ勉強してみます。
また、壁にぶつかった時は、どうかご教授下さい。

575 名前:556 mailto:sage [2008/05/17(土) 21:14:36 ]
>>574
Rails関係ならこちらで
pc11.2ch.net/test/read.cgi/php/1207425569/
俺も常駐してるし他の人も答えやすいと思うよ



576 名前:555 mailto:sage [2008/05/17(土) 21:53:36 ]
>>561
お返事ありがとうございます。
ruby は ./configure && make && sudo make install でインストールしまし
た。OS は 10.4.11 をつかってます。

/usr/local/lib/ruby/site_ruby/1.8/rubygems/ の556 は

@@non_nil_attributes.each do |name, default|
value = case default
when Time, Numeric, Symbol, true, false, nil then default
else default.dup
end

の when Time, Numeric, Symbol, true, false, nil then default です
よろしくお願いします。




577 名前:デフォルトの名無しさん [2008/05/18(日) 09:39:51 ]
クラスを作っています。
クラス変数の一度の宣言で、
Klass.new do |k|
 k.high 30
 k.width 40
end

klass = Klass.new
klass.high = 30
klass.width = 40

klass = Klass.new(:high => 30, :width => 40)

の全ての記法に対応出来る方法ってあるでしょうか?
attr_accessorは知っているのですが、真ん中の記法にしか対応できないですよね。。
どなたかご存じの方宜しくお願いいたします。

578 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 10:16:58 ]
そういうメソッドを自分で作る(attr_accessor も実態はただのメソッド)

579 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 13:03:03 ]
正直、普段から使うほうとしてはどれかひとつに限定して制限してもらったほうが落ち着く
インスタンスへのアクセサでもメソッドへの通常引数(順番重要)でもハッシュ引数でもOK、というのはちとしんどい

580 名前:577 mailto:sage [2008/05/18(日) 13:31:45 ]
>>578-579
ありがとうございます。
それを聞きattr_accessorが用意されているのでそれで統一したいと思ったのですが、
klass.high = 30
klass.width = 40
とずらずらオブジェクト変数を書くのが面倒です。
みなさんずらずら書いていらっしゃるんでしょうか。
それとも何かいいやりかたがあるんでしょうか?

581 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 13:55:06 ]
> とずらずらオブジェクト変数を書くのが面倒です。
>>577のは全部ずらずら書いてるように見えるが?
普通にinitializeの引数にすればいいじゃないの

他の2つのが良く見えるのなら、メソッドにブロックかハッシュを渡せるようにするだけ
全部出来るようにするメリットは無いよ

582 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 13:57:52 ]
未初期化を許容するインスタンス変数以外はコンストラクタの中で埋めてやらないとまずいと思うな

583 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 14:01:07 ]
ずらずらと書く程沢山フィールドが存在する時点で
何かが間違ってるような気もする。

584 名前:577 mailto:sage [2008/05/18(日) 14:12:05 ]
>>581-583
ありがとうございます。コロコロ変わって申し訳ないんですが、
未初期化が不味いインスタンス変数がいくつもあるのでコンストラクタでハッシュを取ることにしました。
class BarGraph
 def initialize(x)
  @high = x[:high] or 300
  @width = x[:width] or 200
  etc..
こんなもんでいいんでしょうか。。

585 名前:577 mailto:sage [2008/05/18(日) 14:13:24 ]
すいません。orは||です。



586 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 14:16:51 ]
>>583
それの解消は単に initialize に書かなくなったってだけで、他のメソッドの引数が増えるだけだと思う
処理に必要な外部入力の量っていうのは一定だと思うぜ

587 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 14:17:08 ]
>>585
意外と知らない人が多いけど、Rubyではorも使える






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<261KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef