Ruby 初心者スレッド Part 19
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/04/14(月) 00:26:33【Ruby1.9 は不安定な開発版であり初心者には全く向きません】
【最新安定版の Ruby1.8.6 の使用を強くお勧めします】
関連スレやURLは>>2-8あたりを見てください。Ruby on Railsの質問はRailsスレへ。
■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
・モジュール名やエラーメッセージでググる
・マニュアルで引っかかったクラスの記述を探す http://www.ruby-lang.org/ja/man/
・FAQを一応読む http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
・詳しい内容(「動きません」「うまくできません」では回答しようがない)
・エラーメッセージ(自力で訳さずなるべくそのままで)
・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0002デフォルトの名無しさん
2008/04/14(月) 00:26:55【Ruby1.9 は不安定な開発版であり初心者には全く向きません】
【最新安定版の Ruby1.8.6 の使用を強くお勧めします】
関連スレやURLは>>2-8あたりを見てください。Ruby on Railsの質問はRailsスレへ。
■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
・モジュール名やエラーメッセージでググる
・マニュアルで引っかかったクラスの記述を探す http://www.ruby-lang.org/ja/man/
・FAQを一応読む http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
・詳しい内容(「動きません」「うまくできません」では回答しようがない)
・エラーメッセージ(自力で訳さずなるべくそのままで)
・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0003デフォルトの名無しさん
2008/04/14(月) 00:27:09Q:
いちからRubyを始める初心者向けのRuby入門書は何がおすすめでしょうか?
A:
プログラム作成の初心者だったら
「たのしいRuby 第2版 Rubyではじめる気軽なプログラミング」
http://www.amazon.co.jp/dp/4797336617/
他の言語経験があるんだったら
「プログラミングRuby 第2版 言語編」
http://www.amazon.co.jp/dp/4274066428/
0004デフォルトの名無しさん
2008/04/14(月) 00:29:25Ruby 初心者スレッド Part 18
http://pc11.2ch.net/test/read.cgi/tech/1203658291/
■関連スレ
Rubyについて Part 31
http://pc11.2ch.net/test/read.cgi/tech/1204466626/
Rubyの宿題教えてください。
http://pc11.2ch.net/test/read.cgi/tech/1106572657/
http://pc11.2ch.net/test/read.cgi/tech/1200175247/
【ActiveScript】RubyをWindowsで使うスレ【GUI】
http://pc11.2ch.net/test/read.cgi/tech/1155031689/
Ruby on Rails
http://pc11.2ch.net/test/read.cgi/tech/1191381506/
Rubyについて(アンチ専用) Part003
http://pc11.2ch.net/test/read.cgi/tech/1207233348/
0005デフォルトの名無しさん
2008/04/14(月) 00:30:31Ruby Home Page
http://www.ruby-lang.org/ja/
Rubyリファレンス(よくサーバーエラーになります)
http://www.ruby-lang.org/ja/man/
http://www.ruby-doc.org/ (英語)
リファレンスのHTMLヘルプ版配布
http://elbereth-hp.hp.infoseek.co.jp/ruby.html
# Windowsで便利
Ruby FAQ
http://ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
Programming Ruby - The Pragmatic Programmer's Guide
http://www.ruby-doc.org/docs/ProgrammingRuby/
# 好評書籍をWebで公開中、ただし英語
逆引きRuby
http://www.namaraii.com/rubytips/
0006デフォルトの名無しさん
2008/04/14(月) 00:31:02http://raa.ruby-lang.org/
RubyForge
http://www.rubyforge.org/
# Rubyのアプリやライブラリが検索できる
日本Rubyの会 公式Wiki
http://jp.rubyist.net/
# メニューに表示されていない埋もれた情報ページ多数
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
# コードレビューが好評
Ruby hotlinks 五月雨版(日記やblogのアンテナ)
http://www.rubyist.net/~kazu/samidare/
Rubyの本一覧
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Ruby%A4%CB%B4%D8%A4%B9%A4%EB%BD%F1%C0%D2
<rubyXML/>
http://www.rubyxml.com/
Matzにっき(Ruby作者の日記)
http://www.rubyist.net/~matz/
0007デフォルトの名無しさん
2008/04/14(月) 00:39:180008デフォルトの名無しさん
2008/04/14(月) 00:41:130009デフォルトの名無しさん
2008/04/14(月) 00:42:26Ruby 初心者スレッド Hiki
http://starlet.s145.xrea.com/ruby/hiki/
Ruby Portal
http://ruby.morphball.net/portal/
0010デフォルトの名無しさん
2008/04/14(月) 00:44:07>>1と>>2が恐ろしいほど瓜二つなのはるびま添削本の呪い。
0011デフォルトの名無しさん
2008/04/14(月) 11:47:16> 空白を間に挟んだ文字列リテラルは、コンパイル時に1つの文字列リテラルと見倣されます。
とあったので C の文字列の要領で
print("foo"
"bar")
とやったら syntax error になってしまいました。
この場合の「空白」には改行などは含まれていないということだと思いますが、
これって何でなんでしょうか?
改行も仲間に入れてあげても別にバチは当たらないと思うのですが。
0012デフォルトの名無しさん
2008/04/14(月) 11:59:18それは実装に対する苦言?それとも、どうやったらいいか聞いてる?
前者なら、Rubyの本スレで言ってほしい。
後者なら、
print("foo" +
"bar")
でOK
0013デフォルトの名無しさん
2008/04/14(月) 12:01:39明示的に連結しとけ
0014デフォルトの名無しさん
2008/04/14(月) 12:21:11print 'foo' \
'bar' \
'baz'
print 限定で出力フィールドセパレータの $, 依存だが
コンマで区切っても単純に連結されたような見掛けで出力される
print 'foo',
'bar',
'baz'
0015デフォルトの名無しさん
2008/04/14(月) 12:51:58えー、それだと逆にめんどくさいじゃん
def gethoge
@str = 'foo'
'hoge'
end
って書いたら @str も gethoge の返り値も foohoge になるぞ
0016デフォルトの名無しさん
2008/04/14(月) 16:07:57質問が悪くてすみません、 folding して書きたいというのではなくて、
「前者」で経緯というか理由が知りたかったです。
ので改めて本スレで聞いてみます。
>>13
頼ると何かまずいですかね?
>>15
私の print の例の方は、括弧で括ってるのでちょっと違うような気がします。
と思って試してみたら、
def gethoge
@str = ('foo'
'hoge')
end
これだと gethoge の返り値は "hoge" になるんですね。
うーむ。
0017デフォルトの名無しさん
2008/04/14(月) 16:57:13要望は「改行を挟んだ2つの文字リテラルは連結されて解釈されて欲しい」ということだろ
そもそもの前提だって
「空白を挟んだ(あるいは挟まない)2つの文字リテラルは連結されて解釈される」
ということだ
irb> 'a' 'b'
"ab"
irb> 'a''b'
"ab"
irb> eval("'a'\t'b'")
"ab"
あと、その gethoge の () は2つの式がグルーピングされてるだけだ
機械的に最後の式の 'hoge' が評価されてるだけに過ぎない
def gethoge
@str = ('foo'; 'hoge')
end
と全く同じこと
0018デフォルトの名無しさん
2008/04/14(月) 17:01:31括弧の有無だけでは、中の式までは面倒みませんってことかな
0019デフォルトの名無しさん
2008/04/14(月) 17:07:37'a' 'b' 'c'
と書いてあったなら、それは 'abc' と書いてあるものとみなされて String オブジェクトになる
002011
2008/04/14(月) 17:29:05「字句構造」のところには
> 空白文字とはスペース、タブ、垂直タブ、バックスペース、キャリッジリターン、
> ラインフィード、改ページです。
とありますが、以降の記述では、
「空白」「空白文字」が文脈によって改行を含んだり含まなかったりするんですね。
読解力が無くてすみません。
0021デフォルトの名無しさん
2008/04/14(月) 17:38:20Rubyにおける空白文字は改行を「含まない」
空白文字の中でホワイトスペースの代わりに使うと動作が変わるものが入ってなくもない気はするが(LFは怪しい)
とりあえず、基本的に「改行は空白文字ではない」
002211
2008/04/14(月) 17:57:39どうやら私の誤解はその改行についての記述の中の
「行が明らかに次の行に継続する時」の認識間違いから来ているようです。
print('hoge'
'fuga')
は、私には「行が明らかに次の行に継続」しているように見えていたのですが、
>>17 で指摘いただいたように、括弧には行を継続するような機能は無かったと。
わかりました。
0023デフォルトの名無しさん
2008/04/14(月) 18:05:300025デフォルトの名無しさん
2008/04/14(月) 21:54:40使う直前、コンストラクタ内、クラス定義の外など
考えられるかと思いますが
0026デフォルトの名無しさん
2008/04/14(月) 22:13:36#!/usr/bin/ruby -Ku
require 'open-uri'
require 'kconv'
require 'myapplib/config.rb'
require 'myapplib/myapp.rb'
require 'myapplib/parser.rb'
require 'myapplib/rss.rb'
MyApp.new.run
こんな感じ
「require するだけで大量のファイルが読み込まれて処理が一瞬止まる」とか
「エラーが起きたときのような時しか使わないライブラリ」
のような場合は、メソッドの中で require することはある
その場合もソースファイルの先頭のどこかにコメントとして書いておくと親切
0027デフォルトの名無しさん
2008/04/14(月) 22:21:18必要なパッケージを明示するということですね
ありがとうございました
0028デフォルトの名無しさん
2008/04/14(月) 22:25:530029デフォルトの名無しさん
2008/04/14(月) 22:30:110030デフォルトの名無しさん
2008/04/14(月) 22:35:24自動で全てを autoload する auto_require というのを作ってみるというのはどうだろう
0031デフォルトの名無しさん
2008/04/14(月) 22:38:16requireするファイル名とクラス名に一定のルールを課すならできなくもない。
ActiveSupportにあるね。
0032デフォルトの名無しさん
2008/04/14(月) 22:47:17どう実現するのがスマートでしょうか?
0033デフォルトの名無しさん
2008/04/14(月) 22:49:05...
end
のように最後に省略可能なハッシュを引数にとるようにし、
呼び出すときは
moge(100, 200, :foo => 0, :bar => 1)
のようにシンボルを使う。
1.9だとこれを
foo(100, 200, foo: 0, bar: 1)
とも書ける。
fooの定義ではoptions[:foo]などとして参照する。
0034デフォルトの名無しさん
2008/04/14(月) 22:50:110035デフォルトの名無しさん
2008/04/14(月) 23:09:00ありがとうございます
わりと自然な形で書けるんですね
0036デフォルトの名無しさん
2008/04/14(月) 23:22:49まあ、RoR以外のRubyではそれほど一般的ではない
あまり使わず紛らわしいオプションをユーザーに記述させたいときとかだな
0037デフォルトの名無しさん
2008/04/14(月) 23:48:00ソース読んでる?MLとか見てる?
0038デフォルトの名無しさん
2008/04/15(火) 00:03:320039デフォルトの名無しさん
2008/04/15(火) 00:16:34obj.class
0040デフォルトの名無しさん
2008/04/15(火) 00:17:060041デフォルトの名無しさん
2008/04/15(火) 00:20:320042デフォルトの名無しさん
2008/04/15(火) 00:30:58RoR系統儀とgems系統を引いたら現状のRubyはほとんど残らんと思う
どっちかに依存してると思うぞ
添付ライブラリだけの「ぴゅあ」なRubyでスクリプト作ってる人はそう多くないはず
0043デフォルトの名無しさん
2008/04/15(火) 00:42:13んなわきゃない
0044デフォルトの名無しさん
2008/04/15(火) 00:48:36という内容のブログの投稿が普通にある時代だからなあ
0045デフォルトの名無しさん
2008/04/15(火) 09:32:30どちらかといえば、名前付き引数を使わないのが一番スマート
引数が複雑になりそうならこういうやり方もある
Foo.new(x, y) do |foo|
foo.target = './dest/'
foo.index = 10
end
この方法の利点は
Fooに存在しない名前のパラメータを設定しようとしたとき、即座にエラーを出してくれること
>>36
ハッシュで名前付き引数を渡すのは、RoR以前から広まってたぞ
0046デフォルトの名無しさん
2008/04/15(火) 11:49:20004711
2008/04/15(火) 13:29:46件の改行の制限は、設計方針的なものというよりも、
yacc (というか LALR(1) ?) の制限によるものなんでしょうかね。
これで私が当初からもやもやしていた疑問が大体解けた気がします。
0048デフォルトの名無しさん
2008/04/15(火) 13:35:12かなり自明だと思ってたんだがそうでもないんか
0049デフォルトの名無しさん
2008/04/15(火) 13:49:18agent.get('http://ja.wikipedia.org/wiki/%E3%81%BE%E3%81%A4%E3%82%82%E3%81%A8%E3%82%86%E3%81%8D%E3%81%B2%E3%82%8D')
0050デフォルトの名無しさん
2008/04/15(火) 13:58:39それFAQ。ていうか「Mechanize Wikipedia」で検索くらいしろ。
あと、ハングアップではなくサーバへのアクセスの無限ループなので試すな。迷惑だから。
引数をURIオブジェクトにすると一応動作するが、それだけではURLエンコードされたリンクはたどれない。
RubyのMechanizeではパーセントつきURL文字列を処理できない
ttp://d.hatena.ne.jp/kitamomonga/20080410/ruby_mechanize_percent_url_bug
ここではto_absolute_uriを動的に書き換えろって言ってるな。
0051デフォルトの名無しさん
2008/04/15(火) 14:16:01要はバグなんですね
agent.get(URI.parse('http://ja.wikipedia.org/wiki/%E3%81%BE%E3%81%A4%E3%82%82%E3%81%A8%E3%82%86%E3%81%8D%E3%81%B2%E3%82%8D'))
なら動作しました
0052デフォルトの名無しさん
2008/04/15(火) 17:13:37したんですけど、Ruby 本体も -g をつけてコンパイルしなきゃ
いけませんか。
初心者でごめん。
0054デフォルトの名無しさん
2008/04/15(火) 18:08:51005511
2008/04/15(火) 18:20:04まああまりこれ以上引っ張るネタでもなさそうですし、
私も今は、世界のナベアツ Golf の方に興味が行っていますので、このへんで。
0056デフォルトの名無しさん
2008/04/15(火) 19:27:40なければ指定した値を取り出すための
もっとも短い書き方を教えてください
今は
hoge = moge.has_key?(key_name) ? moge[key_name]:default_value
と書いていますがmogeとkey_nameが重複していて気になります
0057デフォルトの名無しさん
2008/04/15(火) 19:31:57とか?値が nil にも対応しないといけないんだとダメだけど。
0058デフォルトの名無しさん
2008/04/15(火) 19:34:050059デフォルトの名無しさん
2008/04/15(火) 19:36:21じゃだめかな
0060デフォルトの名無しさん
2008/04/15(火) 20:05:37ありがとうございました
fetchがそのためのものですね
0061デフォルトの名無しさん
2008/04/15(火) 22:09:41他言語では一ファイル一クラスが多いようですが
0062デフォルトの名無しさん
2008/04/15(火) 22:34:36拡張ライブラリだけ-gついてりゃ大丈夫
デバッグ情報付きのrubyがあればあったでいいとは思うけど
0063デフォルトの名無しさん
2008/04/15(火) 22:44:52てきとう
RoRの流儀は知らない
0064デフォルトの名無しさん
2008/04/15(火) 23:40:04デストラクタがないためcloseする場所がないです。
どうするのがペターでしょうか?
0065デフォルトの名無しさん
2008/04/15(火) 23:48:20ブロック構文にしてyieldからもどってきたらcloseするとか、
define_finalizerしといて適切にGC.Collectしてねと言い捨てるか。
0066デフォルトの名無しさん
2008/04/15(火) 23:48:28さんくす
0067デフォルトの名無しさん
2008/04/16(水) 00:36:00ありがとうございます
define_finalizerってやつ使うか…と思っていたのですが
syslogは複数ハンドルオープンできないんですね
コンストラクタで開いて開きっぱなしにする方法がそもそもマズいのでは
と思い直し
書く時だけオープンしてすぐ閉じるようにしました
0068デフォルトの名無しさん
2008/04/16(水) 01:16:290069デフォルトの名無しさん
2008/04/16(水) 03:16:58Dir.globはワイルドカードしか使えないので困ってます
0070デフォルトの名無しさん
2008/04/16(水) 04:04:400071デフォルトの名無しさん
2008/04/16(水) 07:02:43あ、再帰じゃねーや(w
0072デフォルトの名無しさん
2008/04/16(水) 07:56:031. FileUtils.cp_r を参考にする
2. Find.find {|path| do_somthing_with(path)}
3. Dir.open {|dir| dir.each {|entry| do_somthig_with(entry)}}
……こんなもん?
0073デフォルトの名無しさん
2008/04/16(水) 14:45:54を
179.gif 180.gif
に変換したいのですが。。
ぐぐって参考にしたのですがあってますか?
require 'fileutils'
$name = ARGV.shift
$ext = ".gif"
i = 0
ARGV.each do |file|
i = i + 179
$newname = $name + sprintf("&03d", i) + $ext
print "renaming " + file + " ---> "
print $newname + "\n"
FileUtils.mv(file, $newname)
end
0074デフォルトの名無しさん
2008/04/16(水) 15:05:41require 'fileutils'
ARGV.each do |before|
# 0001.gif から拡張子 .gif を取り出す
ext = File.extname(before)
# 0001.gif からディレクトリ名を取り出す(無いので ./)
dirname = File.dirname(before)
# 0001.gif から拡張子抜きファイル名 0001 を取り出す
basename = File.basename(before,ext)
# 0001という文字列を数字にして178を足して0詰め数字3文字に
after_basename = sprintf("%03d", basename.to_i + 178)
# ディレクトリ名+数字3文字+拡張子 というファイル名に合成
after = File.join(dirname, after_basename + ext)
# リネームしまーす
puts "renaming: #{before} -> #{after}"
FileUtils.mv(before, after)
end
# 実行結果
~$ ruby rename.rb 0001.gif 0002.gif
renaming: 0001.gif -> ./179.gif
renaming: 0002.gif -> ./180.gif
0075デフォルトの名無しさん
2008/04/16(水) 15:15:53# 0001という文字列を数字にして178を足して0詰め数字3文字に
after_basename = sprintf("%03d", basename.to_i + 178)
のとこだけど、178を足してる時点で数字3文字になることはほぼ確定なんで、イマイチよくわからん
もし、0900.gif が 1078.gif にリネームされてもOKなのなら、単に
after_basename = (basename.to_i + 178).to_s
とでもしてくれ
>>74のままでも4桁動くから使用上は問題ないけどな
あと、フルパスや相対パスを引数にしてもそのディレクトリでリネームされるのでよろしく
0076デフォルトの名無しさん
2008/04/16(水) 15:23:520001.gifから0200.gifまでとかだと
どうするとよいですか!?
0詰めは、100以下のときだけですね^^;
0077デフォルトの名無しさん
2008/04/16(水) 15:30:19以上
どこにどんなファイルがあるか知らんのでこれ以上はどうにもならん
汎用的な条件つけて頼めばもう一回くらいは誰か作ってくれるかも
引数として指定されたディレクトリのファイルを全てリネームするとか
0078デフォルトの名無しさん
2008/04/16(水) 20:46:32Benchmark.measure { `sleep 10` }
これだと何故か実行時間が0になってしまうのです
0079デフォルトの名無しさん
2008/04/16(水) 21:55:08tms = Benchmark.measure { `sleep 10` }
tms.real #=> 10.0072751045227
あと、``は結果を文字列で得たいときに使うものだから、system 'sleep 10'
のほうが行儀がよいと思う。
0080デフォルトの名無しさん
2008/04/16(水) 21:59:04irb> Benchmark.measure { `sleep 10` }
#<Benchmark::Tms:0x401fae88 @utime=0.0, @cstime=0.0, @total=0.01, @cutime=0.01, @label="", @stime=0.0, @real=10.0146338939667>
これは妥当だと思うんだけど
というか user time や system time の違いってわかってもらえてるのかな
0081デフォルトの名無しさん
2008/04/16(水) 22:15:130082デフォルトの名無しさん
2008/04/16(水) 22:33:13ruby 連番 rename あたりでググると吉。
0083デフォルトの名無しさん
2008/04/17(木) 02:45:11初めて見たんだがそれ有名なのか?
0084デフォルトの名無しさん
2008/04/17(木) 05:28:30引数にある型のオブジェクトが欲しい場合、
どうするのが普通ですか?
0085デフォルトの名無しさん
2008/04/17(木) 07:11:30お好きなのをどうぞ
* ダックタイピングを実践する
* 自分で引数を解析し例外送出などの処理を記述する
* Sapphireがリリースされるのを待つ
* いつかrubyに実装されるのを待つ
* PHPを使い続ける
0086デフォルトの名無しさん
2008/04/17(木) 07:26:32ダックタイピングというのは
引数リストでフィルタせず、メソッドがあるものと前提して呼び出し、
ないときには発生する例外によってコーディングの間違いを知る
といったスタイルですね
基本ダックタイピングで、
厳格にしたいケースではメソッドの有無をたしかめる
といったあたりが現実的なところでしょうか・・
0087デフォルトの名無しさん
2008/04/17(木) 07:46:22継承でするか、mixinでするかの判断基準は
何でしょうか?
0088デフォルトの名無しさん
2008/04/17(木) 10:24:10試してみるといい
まあ、Mechanizeしたいと考えるようなページなんて大体決まってるってことなんだろうな
引っかからない人は全く引っかからないバグだ、これ
0089デフォルトの名無しさん
2008/04/17(木) 10:32:00勘
いやマジで
どっちも「使ったから便利明快になる」というものではない
(サンプルコードでは明快だけどな)
継承を試してわけわかめだったらmix-in用に思考を切り替えるのが一般的かもしれん
0090デフォルトの名無しさん
2008/04/17(木) 10:42:07テンプレートメソッドパターンとかはまず置いといて、継承が妥当か否かだったら
こんなんがあるな。
http://jp.rubyist.net/magazine/?0015-CodeReview#l11
Mixinとか委譲のおかげでRubyでは比較的あんまり継承しない気がするのは俺だけ?
0091デフォルトの名無しさん
2008/04/17(木) 11:00:55private を書くかどうかに似た話
0092デフォルトの名無しさん
2008/04/17(木) 15:31:03使わないメソッドなんて使わないんじゃね?
0093デフォルトの名無しさん
2008/04/17(木) 15:39:49うん、まあ、君の感覚はある意味正しい
ある一定規模未満の素朴なプログラムでは単にめんどくさいだけとも言える
「グローバル変数が危険とか言うけど変数の場所とか名前とか被らないようにしておけば問題なくね?」
という問題と根っこは一緒だ
0094デフォルトの名無しさん
2008/04/17(木) 17:15:17*.gifとかならできそうですかね。ありがとうございました!
0095デフォルトの名無しさん
2008/04/17(木) 17:18:11Class.method arg
という書き方をした時に、
「この書き方は今後のRubyではサポートしない可能性がある」というような
警告が出る時と出ない時がありますが
これはどういう時に出るのですか?
0096デフォルトの名無しさん
2008/04/17(木) 17:29:31ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/17868
> 具体的には
> 引数として与えるメソッド呼び出しの括弧を省略しない
> ということです。文法的に値と文の区別をはっきりさせようという
> 思いです。
っていうか関数型メソッド以外ではカッコ省略する必要ないじゃんという気はする
あとRiteって今で言うところのRuby2.0のことね
0097デフォルトの名無しさん
2008/04/17(木) 18:25:10ありがとうございます
マッツの設計思想はわかりますが
引数が一つの時は()書きたくないですね
この警告抑制したりできるのでしょうか
0098デフォルトの名無しさん
2008/04/17(木) 18:27:43もしかしたら W0 でないとダメかもしれん
0099デフォルトの名無しさん
2008/04/17(木) 18:54:520100デフォルトの名無しさん
2008/04/17(木) 18:57:080101デフォルトの名無しさん
2008/04/17(木) 19:05:36printf("%010",NUM)
以外にないですか?
0102デフォルトの名無しさん
2008/04/17(木) 19:12:440103デフォルトの名無しさん
2008/04/17(木) 19:19:02こんな便利なものが
ありがとうございました
0104デフォルトの名無しさん
2008/04/17(木) 20:24:07たとえばendが足りなかったりすると
ファイルの最後の行を指示してエラーが出たりします。
変更箇所が多かった場合、どこで間違えたか分かりにくいです。
どこで間違えているかすぐにわかる方法があれば教えて下さい。
0105デフォルトの名無しさん
2008/04/17(木) 20:51:58常に最前面に表示し続けることは可能でしょうか?
0106デフォルトの名無しさん
2008/04/17(木) 21:02:48ありがとう神様
0107デフォルトの名無しさん
2008/04/17(木) 21:10:49ブロックの開始と終了の知識を確実にした上で、
ブロックをインデントしてくれるエディタを使う
インデントが大きくなるべきでないところで大きくなってるところがあれば
そこが閉じ忘れ
同様に "" や '' や () の対応を表示してくれる(色分けしてくれる)エディタを使うと
多くの場合「閉じ忘れ」がすぐ見つかるというか閉じ忘れることがない
あと ruby -c ./hoge.rb とすると文法チェックだけをしてくれる
自信ないなら中規模な変更ごとにチェックしてもらうといい
0108デフォルトの名無しさん
2008/04/17(木) 21:24:31たぶん不可能
ちなみにRuby/SDLの話なら、ゲーム制作スレの方がいい
http://pc11.2ch.net/test/read.cgi/gamedev/1207069887/
0109デフォルトの名無しさん
2008/04/17(木) 22:12:21エディタのインデントは完全ではないから、ちょっと複雑になるとあてにならないよ。
Rubyの文法は複雑だから、エディタごときが完全にパースできるわけではない。
だからエディタに任せてもendの閉じ忘れは検出できないことがよくある
0110デフォルトの名無しさん
2008/04/17(木) 22:15:27・classやmoduleの閉じ忘れ
最初に書け。
・defとかその中のifとかの閉じ忘れ
メソッドでけぇ。
対処法にあんまなってないけど考え方としてはこんな感じかなぁ。
0111デフォルトの名無しさん
2008/04/17(木) 22:16:11出たな100パーセント厨
口癖は「それは完全ではない」
90パーセントの達成度の価値を認めない人間だ
0112デフォルトの名無しさん
2008/04/17(木) 22:27:51エディタとして何を使ってるかとRuby編集モードの出来に依存するのが難点か
Emacsのruby-modeはわりと優秀
0113デフォルトの名無しさん
2008/04/17(木) 23:31:12http://www.logic-junction.com/products/rubyend.html
patch をあてなきゃだからちょっと敷居は高いけど。
0114デフォルトの名無しさん
2008/04/18(金) 01:10:16これよくないですか?
なんで本体に取り込まれないんだろう
0115デフォルトの名無しさん
2008/04/18(金) 01:59:32Ruby2.0あたりではyacc捨てたいねえとか言う話もあったんじゃなかったっけ。
0116デフォルトの名無しさん
2008/04/18(金) 02:09:29どうでもいいが、ページの上にある「Abount」に吹いた。
0117デフォルトの名無しさん
2008/04/18(金) 02:43:58ブロックの記述は、一行の場合は{}
二行以上の場合はdo〜endを使うのが
Rubyコミュニティーのコンセンサスだと書いてありましたが
ブロックは複数行になる場合も{}の方が視認性よくないですか?
すべてendだと、何を閉じるものなのか、頭を見ないと分かりませんが、
{}だと、閉じカッコを見るだけで
何を閉じているのかがだいたい推測つきますし。
endにする合理的理由ってあるのでしょうか?
0118デフォルトの名無しさん
2008/04/18(金) 02:56:590119デフォルトの名無しさん
2008/04/18(金) 03:06:49・だいたいソースは上から読む>何を閉じるものなのか、頭を見ないと分かりません
・Hashリテラルだって}で閉じるし、%{...}文字列リテラルなんかもある
でも結局は>>118か。
0120デフォルトの名無しさん
2008/04/18(金) 04:50:550121デフォルトの名無しさん
2008/04/18(金) 06:09:35そもそもなんでendなの?
文と紛らわしいしタイプも面倒くさい。
Rubyの最大の欠点がend。
0122デフォルトの名無しさん
2008/04/18(金) 06:48:00>>121
主観的な問題
0123デフォルトの名無しさん
2008/04/18(金) 06:56:24文と紛らわしいのも、タイプ数が多いのも
定量的な問題じゃん
理性的な判断を下せる範疇にあるはずだよ
0124デフォルトの名無しさん
2008/04/18(金) 07:49:21end
end
end
end
end
0125デフォルトの名無しさん
2008/04/18(金) 07:52:02なぜ「do〜end超読みやすい! すっきりする」って人と
「do〜end読みにくい上に紛らわしすぎ」って人とに分かれるんだ
0126デフォルトの名無しさん
2008/04/18(金) 08:04:48その認識の延長線上には、文と紛らわしいendの否定があるはずなんだよ
endをすぐに完全に廃止しろとは言わない
試しに{}も許容するようにしたらいいんだよ
コストはそんなに高くないだろう
その小さな変化は
きっと世界中の開発者に歓迎されると思うよ。
0127デフォルトの名無しさん
2008/04/18(金) 08:07:12・endを使うとruby-mode.elが書けそうだった
こんな理由じゃなかったっけ。
ifやwhileのこと?
>試しに{}も許容するようにしたらいいんだよ
0128デフォルトの名無しさん
2008/04/18(金) 09:04:24対応するclass,def,if,forにジャンプする
機能って無いですよね?
0129デフォルトの名無しさん
2008/04/18(金) 09:16:27あるなら俺も使いたい。
{} の方ならこれでジャンプできるけどな。
ttp://www.bookshelf.jp/soft/meadow_42.html#SEC635
;; By an unknown contributor
(defun match-paren (arg)
"Go to the matching paren if on a paren; otherwise insert %."
(interactive "p")
(cond ((looking-at "\\s\(") (forward-list 1) (backward-char 1))
((looking-at "\\s\)") (forward-char 1) (backward-list 1))
(t (self-insert-command (or arg 1)))))
(global-set-key "%" 'go-to-paren)
0130デフォルトの名無しさん
2008/04/18(金) 09:43:040131デフォルトの名無しさん
2008/04/18(金) 09:44:51カーソル移動がめどいという場合には妥当な機能
0132デフォルトの名無しさん
2008/04/18(金) 09:55:22C-M-p
ちなみに {} のブロックでも有効
ただ、厳密には「インデントつける」計算上のブロックの最初に移動する
だから、
File.open('hoge.txt'){|f|
f.puts data
}
の場合は { ではなく File の F に移動する
File.open('hoge.txt'){|f| f.puts data }
の場合は検知できなくて、「ひとつ上」のブロックの最初に移動する
0133デフォルトの名無しさん
2008/04/18(金) 11:06:13(むしろ bashスクリプトで doneではなく endと書いて動作不良に首を傾げる)
慣れと主観っちゃそのとおりだがそれはそれで台無しな意見だ(w
素直に着色なエディタを使うというのはどうだろう
0134デフォルトの名無しさん
2008/04/18(金) 17:11:08自分を読み込むクラスに実装を期待するメソッドを定義あるいは明示するには
どうしたらいいですか?
0135デフォルトの名無しさん
2008/04/18(金) 17:19:340136デフォルトの名無しさん
2008/04/18(金) 17:28:37Javaでいうabstractみたいな方法はないのでしょうか
0137デフォルトの名無しさん
2008/04/18(金) 17:46:52raise "override me!"
end
0138デフォルトの名無しさん
2008/04/18(金) 17:46:54別途ユニットテストとかでソースコード自体を検査させるべき
0139デフォルトの名無しさん
2008/04/18(金) 17:47:05ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/15841
0140デフォルトの名無しさん
2008/04/18(金) 18:39:10ttp://www.amazon.co.jp/dp/4798115339/
おおむね今週に発売(たぶんたいていの本屋に並んでるはず)
ボリュームアップし過ぎて5千円札では足りなくなりました
0141デフォルトの名無しさん
2008/04/18(金) 19:09:25def foo
bar
end
private
def bar
raise NotImplementedError
end
0142デフォルトの名無しさん
2008/04/18(金) 19:14:580143デフォルトの名無しさん
2008/04/18(金) 19:20:36raise unless klass.method_defined?(:foo)
end
とかやればいいんじゃね?
0144デフォルトの名無しさん
2008/04/18(金) 19:20:54Mini reviews of 19 Ruby template engines
http://www.hokstad.com/mini-reviews-of-19-ruby-template-engines.html
19種類ってありすぎww
0145デフォルトの名無しさん
2008/04/18(金) 19:23:31実際にそのメソッドが使われないと、未定義かどうかのエラーが出ないんだからね
それこそ、めったに起きないエラー処理のメソッドだった場合は、
まともに動作して安心してた頃になって致命的なことになる
ソフトウェアテストでチェックすることをお勧めするよ
0147デフォルトの名無しさん
2008/04/18(金) 19:28:13翻訳が変わってるのがすごく気になるな・・
0148デフォルトの名無しさん
2008/04/18(金) 19:39:370149デフォルトの名無しさん
2008/04/18(金) 19:48:44同じく
クイープの翻訳は最近アテにならないからなあ
0150デフォルトの名無しさん
2008/04/19(土) 00:00:08.txtファイルに書かれた半角スペースで区切られた単語郡を
それぞれ配列に格納するスマートな方法があればお教えいただけないでしょうか。
汎用性を持たすために、ファイルの読み込みは
ruby test.rb < gomi.txt
にしたいです。
windowsXP ruby1.8.6
0151デフォルトの名無しさん
2008/04/19(土) 00:07:200152デフォルトの名無しさん
2008/04/19(土) 00:10:48dddd eeeee ffffff ggggggg
というようなテキストだと仮定
「それぞれ」という言葉から、1行目の配列と2行目の配列は別だと推測
ruby test.rb < hoge.txt
でも
ruby test.rb hoge.txt
でも動作する
# 配列を格納する配列
all_arr = Array.new
# readlines は 引数のファイル、無ければ標準入力から読み込んで各行を配列にして返す
readlines.each do |line|
# chomp で line を区切って配列にする
# 区切る"文字"は 正規表現の / / にマッチするものつまり半角スペース1個
arr = line.chomp.split(/ /)
# push メソッドで arr を all_arr の要素の末尾に追加する
# all_arr を「長くする」のではないことに注意
all_arr.push(arr)
end
# all_arr の中身を表示
p all_arr
0153150
2008/04/19(土) 01:40:27二次元配列のような形にしたかったので、152さんのおっしゃるとおりです。
配列の値をActiveRecordでsqlに挿入しようと思っていました。
本当に助かりました、有難うございました。
0154デフォルトの名無しさん
2008/04/19(土) 05:12:280155デフォルトの名無しさん
2008/04/19(土) 06:21:48この環境で定義済みクラスやメソッドのリストを見たり、
定義済みのメソッドを自動補完させたりすることは出来ますか?
0156デフォルトの名無しさん
2008/04/19(土) 18:18:04mixinがないほとんどの言語では、mixin的なことはコンポジットで実現しますよね
どういう時にmixinを使うんですか?
0157デフォルトの名無しさん
2008/04/19(土) 18:22:530158デフォルトの名無しさん
2008/04/19(土) 19:44:380159デフォルトの名無しさん
2008/04/19(土) 19:47:52File.dirname(file_name)
0160158
2008/04/19(土) 20:01:35ありがとうございます
0161デフォルトの名無しさん
2008/04/19(土) 20:05:51それを後に書く方法があれば教えてください
たとえば
File.dirname 'hogehoge'
を
'hogehoge'.(File.dirname)
みたいな形で書きたいんです
0162デフォルトの名無しさん
2008/04/19(土) 20:10:40そうですか
0163デフォルトの名無しさん
2008/04/19(土) 20:15:50仮にRubyで実現するとしても、それを繋ぐのは . ではないだろうな
0164デフォルトの名無しさん
2008/04/19(土) 20:22:51class String
def dirname
File.dirname(self)
end
end
あとはpathnameというライブラリもある。
0165デフォルトの名無しさん
2008/04/19(土) 20:38:340166デフォルトの名無しさん
2008/04/19(土) 21:08:19def callback(method, mypos=0, *args)
args.insert mypos, self
method.call *args
end
end
p Math.sqrt(400)
#=> 20.0
p 400.callback Math.method(:sqrt)
#=> 20.0
p [1,2,3,4,5,6][2,3]
#=> [3, 4, 5]
p 3.callback([1,2,3,4,5,6].method(:[]), 1, 2)
#=> [3, 4, 5]
こんなもんでどうかな
0168デフォルトの名無しさん
2008/04/19(土) 21:46:47クラスとオブジェクトとメソッドの理解がまだ足りないんだと思う
気持ちはわかるが考え方が不当
欲しいのはいわば pathenize_dirname メソッドと推測
p '/usr/local/bin/ruby'.pathenize_dirname
"/usr/local/bin/"
メソッドの引数形式を「カッコ悪い」と感じる時期に罹るハシカみたいな病気だ
0169デフォルトの名無しさん
2008/04/19(土) 22:30:45機能的な話かと思ったら、どうやら明後日を向いていたようだ。
そういうことであれば >>166は>>161の美意識には適うまい。
0170デフォルトの名無しさん
2008/04/19(土) 22:33:10class String
def to_path
Pathname(self)
end
end
p '/usr/local/bin/ruby'.to_path.dirname
0171デフォルトの名無しさん
2008/04/19(土) 22:33:400172デフォルトの名無しさん
2008/04/20(日) 15:48:07railsのテンプレートでERBが使われてますが、
これは何かのタイミングで一度rubyのクラスに変換されてからHTMLに再び変換されるのでしょうか?
例えばJavaのJSPがJSP→サーブレット→HTMLと変換されるのと同じ流れですか?
0173デフォルトの名無しさん
2008/04/20(日) 16:05:58<%%>の中身がそのままRubyコードとして抜き出され、
それ以外は_erbout.print ... という形に変換されてから
Rubyで評価される感じです。
0174172
2008/04/20(日) 16:30:00なるほど、jspみたいにrhtmlファイルがクラスに対応するわけではないんですね。
あまり綺麗な仕組みではないですね…。
ありがとうございました。
0175デフォルトの名無しさん
2008/04/20(日) 16:31:52eRubyの仕様じゃなくて、ライブラリの使い方ね
0176デフォルトの名無しさん
2008/04/20(日) 17:47:33基本的にeditの部分だけを変更し
def edit title, content
@id = "12345"#相手のid
@edit_page = @agent.get('http://mixi.jp/send_message.pl?id='+@id)
edit_form = @edit_page.forms.name("messageForm").first
edit_form['subject'] = title.toeuc
edit_form['body'] = content.toeuc
confirm_page = @agent.submit(edit_form)
conf_form = confirm_page.forms[0]
p @agent.submit(conf_form)
end
以下を実行しました。
def mixi_message
mdw = MixiMessage.new("[email protected]","hogehoge")
mdw.login
mdw.edit "テストタイトル", "テスト本文"
end
0177デフォルトの名無しさん
2008/04/20(日) 17:48:07#<WWW::Mechanize::File:0x4b03cdc @response={"connection"=>"close", "date"=>"Sun,
20 Apr 2008 08:11:37 GMT", "x-dealer"=>"034093", "content-type"=>"text/plain; c
harset=euc-jp", "server"=>"Apache", "content-length"=>"0"}, @code="200", @uri=#<
URI::HTTP:0x2583fc0 URL:http://mixi.jp/send_message.pl?id=12345>, @filename="s
end_message.pl", @body="">
送信できていない原因は何でしょうか?
0178デフォルトの名無しさん
2008/04/20(日) 17:49:28#<WWW::Mechanize::File:0x4b03cdc @response={"connection"=>"close", "date"=>"Sun,
20 Apr 2008 08:11:37 GMT", "x-dealer"=>"034093", "content-type"=>"text/plain; c
harset=euc-jp", "server"=>"Apache", "content-length"=>"0"}, @code="200", @uri=#<
URI::HTTP:0x2583fc0 URL:http://mixi.jp/send_message.pl?id=12345>, @filename="s
end_message.pl", @body="">
送信できていない原因は何でしょうか?
0179デフォルトの名無しさん
2008/04/20(日) 18:16:00WWW::Mechanizeは実際にサーバから送られてきたHTMLから指定された要素を抽出して実行している
素直に読むと
http://mixi.jp/send_message.pl?id=ユーザーIDというページの結果を取得し、
<form name="messageForm"> というフォームで1番最初にあるフォーム中にある、
<input name="subject"> という、type が text か何かの入力欄に引数titleの内容を日本語EUCで入力
<input name="body"> という、type が text か何かの入力欄に引数contentの内容を日本語EUCで入力
<form name="messageForm"> のsubmit ボタンを「押して」結果のページを取得する
取得した結果の中の最初の <form> の submit ボタンを「押して」結果のページを取得する
という処理なんだけど、mixiのページ構成はきちんとそのようになってるかい?
0180デフォルトの名無しさん
2008/04/20(日) 18:55:48p conf_form
としてみたところ、出力に
#<WWW::Mechanize::Form::Field:0x4ba0de8 @name="submit", @value="confirm">
があり、これは、
「確認画面」の <input type="hidden" name="submit" value="confirm"> と一致しているので、
おそらく「確認画面」までは到達していると思います。
「確認画面」では formはひとつしかなく、
<form action="send_message.pl?id=1056392" method=post>
<input type="hidden" name="submit" value="confirm">
<!--略-->
<input name=yes type=submit value=" 送 信 ">
<!--略-->
<input name=no type=submit value=" 修 正 ">
</form>
という構成になっており、submitが二つあるのが怪しいかなと思っているのですが、
指定のない場合は、先にある「送信」が押されると思うので、条件は満たしているような気がします。
ほかに問題となりそうな点は何でしょうか?
0181デフォルトの名無しさん
2008/04/20(日) 20:37:02みたいな書き方が他言語とは挙動が異なるみたいなんですが
これはどういう動作をしているのでしょうか?
0182デフォルトの名無しさん
2008/04/20(日) 20:47:580183デフォルトの名無しさん
2008/04/20(日) 20:48:110184デフォルトの名無しさん
2008/04/20(日) 23:54:38ありがとうございました
なんでないんでしょうね?
実装も単純そうなのになぁ
0185デフォルトの名無しさん
2008/04/21(月) 00:08:05た
か
説明するの面倒なのでぐぐってくれ
インクリメントの実装自体は簡単なんだが、Rubyのほうそくが みだれる ので採用されない
0186デフォルトの名無しさん
2008/04/21(月) 00:12:19さあ頑張って
「自分を破壊し別のオブジェクトを生み出して置き換える」
メソッドの意味を説明して説得するんだ
0187デフォルトの名無しさん
2008/04/21(月) 00:18:12Rubyでベニクラゲをモデリングしたいと言ってみる
0188デフォルトの名無しさん
2008/04/21(月) 00:23:36というプログラムを美しく書く方法があれば教えてください。
フラグを用意し、ループを抜けてからフラグをチェックするのが
普通だと思いますが、フラグの存在が冗長な気がします
例外を使うのも、何かやりすぎのような気がします
0189デフォルトの名無しさん
2008/04/21(月) 00:56:43とかじゃなく?
0190デフォルトの名無しさん
2008/04/21(月) 03:20:44どうしたらいいですか?
0191デフォルトの名無しさん
2008/04/21(月) 03:27:370192デフォルトの名無しさん
2008/04/21(月) 03:56:54視認性が悪くなるので、
前もってエラーハンドラみたいなものが登録できたらいいと思うのですが・・
0193デフォルトの名無しさん
2008/04/21(月) 04:07:33(変数はなるべくローカルスコープに入れた方がいいので)、
C などの main 関数みたいに全ての処理を囲んだ関数を作って
トップレベルに記述する処理はその関数のみにしておくと良い。
そういう状態であれば、begin で囲むのもそこだけで済む。
0194デフォルトの名無しさん
2008/04/21(月) 04:18:35ありがとうございました
0195デフォルトの名無しさん
2008/04/21(月) 06:16:46時間の差をあらわすオブジェクト(間隔オブジェクト?)が
返ってきて欲しいのですがどうしたらいいですか?
0196デフォルトの名無しさん
2008/04/21(月) 07:44:30返って来たFloatがその間隔オブジェクト(秒.マイクロ秒)
欲しい単位が分なら (t2 - t1).to_i / 60 すればいい
0197デフォルトの名無しさん
2008/04/21(月) 10:59:01代入演算子の一種として実装すればよい
例:a += 1
0198デフォルトの名無しさん
2008/04/21(月) 21:39:36http://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-list/6233?6096-6403
0199デフォルトの名無しさん
2008/04/21(月) 22:23:48++numとnum++の挙動の違いをRubyの中に組み込むのに難があるという感じ?
0200デフォルトの名無しさん
2008/04/21(月) 22:32:18後置は……
0201デフォルトの名無しさん
2008/04/21(月) 22:42:48ほほう
君のRubyでは
3.succ
として 3が 4になるのか?
0202デフォルトの名無しさん
2008/04/21(月) 22:43:01演算子で終わることに自体に問題があるんだろ
0203デフォルトの名無しさん
2008/04/21(月) 22:45:52ああ、succはsucc!じゃないよね
吊ってきます
0204デフォルトの名無しさん
2008/04/21(月) 22:59:580205デフォルトの名無しさん
2008/04/21(月) 23:51:33おもしろいな
0206デフォルトの名無しさん
2008/04/22(火) 00:02:310207デフォルトの名無しさん
2008/04/22(火) 00:16:53そりゃ内部仕様は変えなきゃいかんだろうが、「演算子で終わったら駄目」な理由は?
というか採用されても、「特殊なメソッド」以上のものにはならんと思うが
0208デフォルトの名無しさん
2008/04/22(火) 00:17:20どうもHTTPヘッダーとして出力されてしまっているようです。
どうにか出力しない方法ってあるんでしょうか。
0209デフォルトの名無しさん
2008/04/22(火) 00:18:590210デフォルトの名無しさん
2008/04/22(火) 00:23:10ありがとです。
0211デフォルトの名無しさん
2008/04/22(火) 01:48:37環境は、
OS CentOS 5.1 64bit
Postgres 8.3.1
ruby-1.8.6-p114
ruby-postgres-0.7.1
dbi-0.2.0
です
接続しようとすると`load_driver'エラーが出ます。ruby-postgresだけだと接続出来るのですが、dbiだと駄目です。
ちなみにdbiのインストールオプションはruby setup.rb config --with=dbi,dbd_pgでインストールしました。
$ irb
irb(main):001:0> require "postgres"
=> true
irb(main):002:0> PGconn.connect("localhost", 5432, "", "", "testdb","user","wassword")
=> #<PGconn:0x2aaaaabaceb0>
irb(main):003:0> require "dbi"
=> true
irb(main):004:0> DBI.connect("dbi:postgres:testdb:localhost", "user", "wassword")
DBI::InterfaceError: Unable to load driver 'postgres'
from /usr/local/lib/ruby/site_ruby/1.8/dbi.rb:352:in `load_driver'
from /usr/local/lib/ruby/1.8/monitor.rb:242:in `synchronize'
from /usr/local/lib/ruby/site_ruby/1.8/dbi.rb:282:in `load_driver'
from /usr/local/lib/ruby/site_ruby/1.8/dbi.rb:233:in `_get_full_driver'
from /usr/local/lib/ruby/site_ruby/1.8/dbi.rb:219:in `connect'
from (irb):4
from (eval):3
よろしくお願いします。
0212デフォルトの名無しさん
2008/04/22(火) 02:42:51メソッドすべてにフックを仕込んで、メッセージのやりとりを
ロギングしたり、そういうことがしたいんですが
0213デフォルトの名無しさん
2008/04/22(火) 02:51:190215デフォルトの名無しさん
2008/04/22(火) 03:21:12each_lineを使うようになったと書いてありました。
今書いてるスクリプトには、ファイルからの読み込み処理等で
eachが結構あります。
これは書き換えないと1.9以降では動かなくなるのでしょうか?
0216デフォルトの名無しさん
2008/04/22(火) 06:46:11多次元配列で存在しないキーを参照すると
undefined method `[]' for nil
になります
存在しなかったとしてもエラーが出ないように参照する方法を
教えて下さい
0217デフォルトの名無しさん
2008/04/22(火) 07:11:08nil
end
0218デフォルトの名無しさん
2008/04/22(火) 07:42:470219デフォルトの名無しさん
2008/04/22(火) 08:03:400220デフォルトの名無しさん
2008/04/22(火) 08:16:16undefined method `[]' for nil
になるじゃん
何をしたいか明確に書けよヴォケ
0221デフォルトの名無しさん
2008/04/22(火) 10:20:15配列じゃなくてハッシュを使う
0222デフォルトの名無しさん
2008/04/22(火) 11:25:060223デフォルトの名無しさん
2008/04/22(火) 13:57:40def [](*arg)
super(arg)
end
def []=(*arg)
super(arg[1,-1], arg.last)
end
0224デフォルトの名無しさん
2008/04/22(火) 17:41:56無ければ指定したテキストファイルを作り
あれば追記するような仕組みを持ちたいので
0225216
2008/04/22(火) 17:50:19ありがとうございました
>>220
ハッシュか配列かではなく
nilに[]が使えないことをどうしようかという話でした
0226デフォルトの名無しさん
2008/04/22(火) 18:17:46ファイルのことについてどうこうしたいんだからFileクラスのメソッド探してみれ
0227デフォルトの名無しさん
2008/04/22(火) 19:31:560228デフォルトの名無しさん
2008/04/22(火) 20:24:490229デフォルトの名無しさん
2008/04/22(火) 21:04:12のぞんでいたどうさができました
おそらく不具合の原因は参考にしていたサイトがafile=File.new(*****)
とnewを使っていたためのようです
今まで5個ほど言語を学んできましたがrubyほどシンプルで強力な言語は
無いと感じました
本当にありがとうございます!
0230デフォルトの名無しさん
2008/04/22(火) 21:28:45動かなくなるよ。
str.each は、str.scan(/^/).each に置き換えよう。
0231デフォルトの名無しさん
2008/04/22(火) 21:42:210232デフォルトの名無しさん
2008/04/22(火) 22:15:01unless method_defined?(:lines)
def lines
self
end
end
end
としておいて、1.8系でもstr.lines.eachと書いておくという手も…
0233デフォルトの名無しさん
2008/04/22(火) 23:06:52この結果が
ttt => nil
と出るんですが、これはどういう意味なんですか?
irb => ttt
と出力されることを期待したのですが。
0234デフォルトの名無しさん
2008/04/22(火) 23:09:48irbの=>の後ろに出るのは、入力した式(print "test")を評価した値。
x= print "test"
とすると x = nil になるのといっしょ。
testという文字列が書き出されるのは式の評価(値を求めること)の、まぁ副作用だ。
0235233
2008/04/22(火) 23:38:04おぉ丁寧にありがとうございます。
入力コマンドを単純に実行するのではなく評価するだけなんですね。
てか使い道あるんでしょうかね…?
0236デフォルトの名無しさん
2008/04/23(水) 00:34:450237デフォルトの名無しさん
2008/04/23(水) 00:37:12この結果が
ttt => nil
^^^~~~~~~
^:printの出力
~:irbが返り値のインスペクションを出力
コマンドって…
0238デフォルトの名無しさん
2008/04/23(水) 00:43:07にはならんの?
0239デフォルトの名無しさん
2008/04/23(水) 00:51:04irbは「=> 返り値」を印字してるだけ。
その前のprintの出力に改行がないからそんな見た目なだけ。
もしそんな出力がされるってことは、printがStringクラスを返してるというイミフなことになるぞ。
0240デフォルトの名無しさん
2008/04/23(水) 06:24:22今はNetBeansを使っていますが、他のファイルのクラス等が
自動補完できないのでもう少し高機能なのが欲しいと思っています
0241デフォルトの名無しさん
2008/04/23(水) 09:33:10あと1年くらいしたら便利なの出てくるぜと3年くらい前から言われてる
0242デフォルトの名無しさん
2008/04/23(水) 11:46:140243デフォルトの名無しさん
2008/04/23(水) 14:09:470244デフォルトの名無しさん
2008/04/23(水) 15:31:57for book in book_array
end
このように配列を回すfor文の中でインデックスを取得することは出来ないのでしょうか?
0245デフォルトの名無しさん
2008/04/23(水) 15:33:590246デフォルトの名無しさん
2008/04/23(水) 15:53:58ありがとうございます!できました。
java出身だとfor文でインデックス取れないって変な感じですね。
0247デフォルトの名無しさん
2008/04/23(水) 16:15:35日本語処理はruby
という使い分けしようと思っててるんですが、うまくミックスする方法はないのでしょうか?
0248デフォルトの名無しさん
2008/04/23(水) 16:39:130249デフォルトの名無しさん
2008/04/23(水) 19:40:43for i in (0..book_array.size)
p i, book_array[i]
end
カウンタ変数もなしにインデックスが取れるわけないだろう
0250デフォルトの名無しさん
2008/04/23(水) 20:37:16× ..
○ ...
0251デフォルトの名無しさん
2008/04/23(水) 21:54:00if foo == ""
end
if foo.is_a? String && foo.empty?
end
0252デフォルトの名無しさん
2008/04/23(水) 22:07:130253デフォルトの名無しさん
2008/04/23(水) 23:04:56全部Python
0254デフォルトの名無しさん
2008/04/23(水) 23:13:04PythonからRuby向けを切り出す必要があるとは思えない
Pythonで書けるなら全部Pythonで書くのがベスト
0255デフォルトの名無しさん
2008/04/24(木) 00:18:41GUIを組むにはruby/tkとか色々種類があるようなのですが、
最もメジャーなのはどれでしょうか?
ツールの詳細としては、チェックボックスやリストで設定項目を設定し、
それによるシミュレーション結果をメッセージボックスに文字列で
順次吐き出すだけというものです
※一応Javaも少しかじってます
もし「rubyのGUIは終わってるからJavaでやれ」とかならば
それはそれで結論として構いません
0256デフォルトの名無しさん
2008/04/24(木) 00:28:07付いてくるから比較的メジャーと思われる。
自分はマカーなので、必要な場合はOSに付いてくるRubyCocoaを使う
ことになると思うけど。
Javaもかじってる人ならJRubyでSwing使うというのもアリかね。
0257デフォルトの名無しさん
2008/04/24(木) 00:31:29FXRuby
0258デフォルトの名無しさん
2008/04/24(木) 00:35:520259デフォルトの名無しさん
2008/04/24(木) 00:38:22ttp://www.gesource.jp/programming/ruby/gui/index.html
おいらはApollo派
0260デフォルトの名無しさん
2008/04/24(木) 00:41:570261デフォルトの名無しさん
2008/04/24(木) 01:00:03Gnomeだからそれに合わせて。Gladeとかあって使い勝手も悪くない。
0262255
2008/04/24(木) 01:07:39一応は仕事で補助的に使うツールです
基本は自分のPCで動けばOKですが
状況によっては周囲に配らないとも言いきれませんので
配布時のパッケージングに優れていると助かりますね
0263255
2008/04/24(木) 01:09:43今更言う事でもありませんが、念の為…
0264デフォルトの名無しさん
2008/04/24(木) 01:12:18wxRubyかFXRubyの2択だな
0265デフォルトの名無しさん
2008/04/24(木) 01:15:49exerbでexe化もできるみたいだし。
てか、ほんと「これだ!」ってのはないと思う。
0266デフォルトの名無しさん
2008/04/24(木) 09:48:060267デフォルトの名無しさん
2008/04/24(木) 10:24:49これぞ俺が今まで追い求めていたものだと直感した
GUIはHTMLで記述、中身の処理はRuby。夢のようだ
なのになんで使わなくなったんだっけ俺
0268デフォルトの名無しさん
2008/04/24(木) 13:01:03eachとかProcとかないんじゃ
0269デフォルトの名無しさん
2008/04/24(木) 14:45:06>>254
xmlrpcやjsonでお互いのプログラム間で通信したらいいのかな?
0270デフォルトの名無しさん
2008/04/24(木) 17:24:55反則っぽいけどwebrickでアプリケーションサーバを作るとか
guiとかの環境依存性も配布する必要も無い
ついでにdrbで分散処理も追加
0271デフォルトの名無しさん
2008/04/25(金) 00:47:28>262,263の条件ならC#かJavaがいいと思う。
UNIX系でも使う可能性があるなら>264かな。
0272255
2008/04/25(金) 02:51:02差し当たりVisualuRuby触ってみる事にします
皆様レス有難うございました
しかし決め手が無くて色んな種類があるという状態は
選択肢が広いとは言え、個人的には苦手だ…
0273デフォルトの名無しさん
2008/04/25(金) 04:29:00/からwindowsの\に変換するメソッドは有りますか?
0274デフォルトの名無しさん
2008/04/25(金) 05:51:48文字の置き換えだろ?
リファレンスマニュアルでStringの項を読みなさい
0275デフォルトの名無しさん
2008/04/25(金) 23:54:28今は
str.split('\n).each do |line|
cnt += 1
line =~ 〜 if(50<=cnt && cnt<=100)
end
のようにしているのですが、strはかなり長い文字列なので、無駄な処理をしている気がします
もっと上手は方法はないでしょうか?
0276デフォルトの名無しさん
2008/04/26(土) 00:22:53とりあえず、splitする必要ないでしょ
0277デフォルトの名無しさん
2008/04/26(土) 00:31:59ややトリッキーな方法だが
target_lines = str.split($/).slice(50..100)
if target_lines then
target_lines.each do |line|
line =~ 〜
end
end
0278デフォルトの名無しさん
2008/04/26(土) 00:39:05ありがとうございます
0279デフォルトの名無しさん
2008/04/26(土) 10:18:49str.each_with_index do |line, cnt|
next if cnt < 49
line =~ 〜
break if cnt >= 99
end
1.9なら
str.each_line.with_index
0280デフォルトの名無しさん
2008/04/26(土) 10:32:560281デフォルトの名無しさん
2008/04/26(土) 12:00:36strが巨大な配列になってるのがヤだっていうならsplitとeachは全滅だな
0282デフォルトの名無しさん
2008/04/26(土) 13:58:48思うんですけど、出力結果を文字列として取得する場合はどうすればいいんですか?
ちなみにRuby1.8.6です。
0283282
2008/04/26(土) 14:01:07できればエラーストリームだけとれるのが望ましいです。
0284デフォルトの名無しさん
2008/04/26(土) 14:13:05>日本のオープンソース開発者の中で有名なまつもと氏のような方ですらライセンス条件について間違った解釈をしてしまうのである
ほうほう。
0285デフォルトの名無しさん
2008/04/26(土) 14:49:080286デフォルトの名無しさん
2008/04/26(土) 16:24:59* Open3 を使う(require 'open3')
* 自分で作る(open3 は簡単だから、読んでみるといい)
* windowsでは動かないかもしれないが↓
command = 'ls /tmp'
stderr = `#{command} 2>&1 > /dev/null`
0287デフォルトの名無しさん
2008/04/26(土) 22:55:11$stdout, $stderr を reopen して system
system のいいとこは shell を介さずに実行できるから
コマンドインジェクションを防げる。
0288デフォルトの名無しさん
2008/04/27(日) 01:40:400289デフォルトの名無しさん
2008/04/27(日) 10:50:280290デフォルトの名無しさん
2008/04/27(日) 18:19:04クラス名は何にしたらいいと思う?
AdvancedFoo とか ExtendedFoo とか考えたけど、あまりいい名前じゃないといわれた。
かといって、雑多な機能をいくつも付け加えたから、これといって名前をつけにくいんだよな。
なんかいい名前ない?
0291デフォルトの名無しさん
2008/04/27(日) 18:26:58Fooのインスタンスにextendで機能追加する。
↑という方法では解決できず、どうしても継承でやる必要があるなら
FooWith機能名
とか
機能ableFoo
とか。
0292デフォルトの名無しさん
2008/04/27(日) 18:30:36あるいはモジュールとして作り、includeする。
Fooのインスタンスはどれでも追加された機能を使える。
class Foo
... # 元の定義
end
# 定義を再オープンして機能追加
class Foo
def 追加機能
end
...
end
>>291のextendする方法は、Fooクラスのインスタンス全体ではなく、
Fooの特定のインスタンスだけに機能を追加する方法。
0293デフォルトの名無しさん
2008/04/27(日) 18:32:40できれば分割して名前を明示できるようにした方がいい
0294デフォルトの名無しさん
2008/04/27(日) 19:46:16もとのFooは残す方向なので(ほかに継承で使っている人がいるから)、Foo自体を拡張するわけにはいかないんです
>>293
まあそうなんですけど、Rubyの大クラス主義でやっているので。
大クラス主義はたしかに便利なんだよね。既存の他のクラスのインターフェース変えなくていいし。
0295デフォルトの名無しさん
2008/04/27(日) 20:19:07大クラス主義はキッチンシンクじゃないぞ。
>>290
> かといって、雑多な機能をいくつも付け加えたから、これといって名前をつけにくいんだよな。
どうも行き辺りばったりの感じがするんだが。
UtilFooとでもしとけば。
0296デフォルトの名無しさん
2008/04/27(日) 20:45:310297デフォルトの名無しさん
2008/04/27(日) 21:48:45ImageMagickのコマンドから推測するといい
0298デフォルトの名無しさん
2008/04/28(月) 19:42:33Javaプログラマの俺にわかりやすく説明して
0299デフォルトの名無しさん
2008/04/28(月) 19:55:52まずは自分の疑問をわかりやすく説明しる。
0300デフォルトの名無しさん
2008/04/28(月) 20:02:490301デフォルトの名無しさん
2008/04/28(月) 20:09:52君にとって利点はないと思うよ
0302デフォルトの名無しさん
2008/04/28(月) 20:37:120303デフォルトの名無しさん
2008/04/28(月) 20:37:35その返し方は誤解を与えるかもな。
ほとんどの人にとって利点はないと答えたかったんだろ?
0304デフォルトの名無しさん
2008/04/28(月) 21:00:15それあるなぁ。
ワンライナーも併せて便利
0305デフォルトの名無しさん
2008/04/28(月) 21:10:580306デフォルトの名無しさん
2008/04/28(月) 21:51:500307デフォルトの名無しさん
2008/04/28(月) 22:09:01初期起動がかなり遅いけど。
0308デフォルトの名無しさん
2008/04/28(月) 22:36:39それよりむしろJRubyの利点が知りたい。
0309デフォルトの名無しさん
2008/04/28(月) 22:38:33これができると膨大なJavaのライブラリも使えるし。
個人的にはSwingあたりのGUIライブラリが楽に使えるとありがたい。
0310デフォルトの名無しさん
2008/04/28(月) 22:40:57標準のライブラリだけで大抵のものが一揃いして、もちろん完成度も高め。Swingもあるし
0311デフォルトの名無しさん
2008/04/28(月) 22:47:59>>310
へー、そうなんだ!
JAVA屋さんには便利なのかな
そういえばIronRubyはどうなったんだろう
0312デフォルトの名無しさん
2008/04/28(月) 22:55:35(顧客の)サーバにRubyのバイナリを入れるのは(政治的な意味で)非常に大変だが、
Javaはデフォで入ってるので、jarを1個放り込めばよいJRubyは非常にありがたい。
0313デフォルトの名無しさん
2008/04/28(月) 23:12:25その発想はなかった!
業務で使ってる人は大変なのね
0314デフォルトの名無しさん
2008/04/28(月) 23:40:01これあるよねー
unzipコマンドがない客先のサーバでzipファイルを解凍しなきゃいけなくて
さてどうしようと思ってたら、jarコマンドで解凍できた。
このときはjavaすげーとおもった。
0315デフォルトの名無しさん
2008/04/29(火) 00:18:07凄い人なんだろうけど、あらゆるruby本の監修になって名前貸すだけで稼ぎまくってるあの魂胆が嫌いだ
0316デフォルトの名無しさん
2008/04/29(火) 00:20:36トイレ掃除でもしてろ
0317デフォルトの名無しさん
2008/04/29(火) 01:24:23これだけでもコマンドプロンプトのお供に使えるところが好き。
Python はライブラリ無いと起動すらしないし、Perl は動くけど glob が使えねえし…。
0318デフォルトの名無しさん
2008/04/29(火) 02:03:040319デフォルトの名無しさん
2008/04/29(火) 02:15:01(,, ・∀・)チュンチュン
ミ_ノ
″″
0320デフォルトの名無しさん
2008/04/29(火) 02:28:02どっかの年金では図柄変更バージョンごとに1千万とからしいけど。
図柄かえるだけのバージョンが100くらいある。
0321デフォルトの名無しさん
2008/04/29(火) 03:18:35有名人になると筆者より儲けてるよ
0322デフォルトの名無しさん
2008/04/29(火) 03:32:490323デフォルトの名無しさん
2008/04/29(火) 03:38:27http://pc11.2ch.net/test/read.cgi/tech/1207233348/
0324デフォルトの名無しさん
2008/04/29(火) 06:20:24やあ俺
シェルと好みのエディタ入れれば、簡易開発環境が出来てしまうのが便利だ
0325デフォルトの名無しさん
2008/04/29(火) 08:13:17具体例をドゾー
0326デフォルトの名無しさん
2008/04/29(火) 09:43:14監修するなってこと? なんで? そのメリットは?
「成功者の収入が減ると、貧乏人の俺の胸がすく」という以外のメリットを感じないけど・・・。
0327デフォルトの名無しさん
2008/04/29(火) 09:53:420328デフォルトの名無しさん
2008/04/29(火) 10:31:380329デフォルトの名無しさん
2008/04/29(火) 12:53:29さすがに公共事業とは事情が全く異なるだろ。
そういうのはまた孫受け曾孫受けで政治家とか○暴とかの
たかり屋に流れるからその分割高だし。
0330デフォルトの名無しさん
2008/04/29(火) 13:31:36・・・忘れた
0331デフォルトの名無しさん
2008/04/29(火) 13:34:16Rubyで小物でもプログラムを書くときに、
クラス化しますか?
適当に書き下す(とは言っても100行オーバーの大きさ)場合はトップレベル関数ばりばりでも
よいと思うのですが、関数作りまくるプログラミングタイプだと、
いちいち関数化時に変数をグローバルにするのが面倒です。
また、配布とかも考えると、クラス化してライブラリとして使えるようにも、と思ってしまいます。
あなたはどうしてますか?
0332デフォルトの名無しさん
2008/04/29(火) 14:01:160333デフォルトの名無しさん
2008/04/29(火) 14:02:37配布を考えないなら、そのときどき
トップレベル関数(メソッド)から作り始めることもあれば
クラスの設計から始めることもある
ところで
>いちいち関数化時に変数をグローバルにするのが面倒です。
これはどういう意味なんだ
0334デフォルトの名無しさん
2008/04/29(火) 14:19:14name = gets.chomp
hello = 'ぐっもーにん'
puts "#{name}さん、#{hello}"
をメソッドにすると
def say_hello
puts "#{$name}さん、#{$hello}"
end
$name = gets.chomp
$hello = 'ぐっもーにん'
say_hello
と書かなければならなくなって面倒だとか、たぶんそういう話だ!
0335デフォルトの名無しさん
2008/04/29(火) 14:33:570336デフォルトの名無しさん
2008/04/29(火) 14:35:08複雑になってきたらリファクタリングしてクラス化
0337デフォルトの名無しさん
2008/04/29(火) 14:42:550338デフォルトの名無しさん
2008/04/29(火) 14:47:370339デフォルトの名無しさん
2008/04/29(火) 15:12:32>>いちいち関数化時に変数をグローバルにするのが面倒です。
>これはどういう意味なんだ
>>334 そのとうりです!!
>>338
トップレベルメソッドというべきでしたか?
0340デフォルトの名無しさん
2008/04/29(火) 15:59:49グローバル変数の使用はお薦めしない(書き捨ての短いコードだとしても)
エスパー>>334の例を借りると
def say_hello(name, hello)
puts "#{name}さん、#{hello}"
end
say_hello(gets.chomp, 'ぐっもーにん')
こんな風に引数として渡したほうがいい
0341デフォルトの名無しさん
2008/04/29(火) 16:47:55def init(opt)
$_option = opt
end
def exe(arg)
if $_option[:foo]
〜
end
init :foo => :bar
exe "hoge"
とか?
0342デフォルトの名無しさん
2008/04/29(火) 16:53:28class
って動いちまうなあ。
0343デフォルトの名無しさん
2008/04/29(火) 17:03:15yieldの書き方とかはRubyの方がいいな。
0344デフォルトの名無しさん
2008/04/29(火) 17:06:540345デフォルトの名無しさん
2008/04/29(火) 17:35:41毎回指で書くなら自動化すればいいじゃない
0346デフォルトの名無しさん
2008/04/29(火) 17:47:28でもRubyの方がコルーチンを中断している途中でなんか処理しているってイメージがしやすい気がする。
気のせいか慣れなのかもしれないけど。
0347デフォルトの名無しさん
2008/04/29(火) 22:15:270348デフォルトの名無しさん
2008/04/29(火) 22:31:430349デフォルトの名無しさん
2008/04/29(火) 22:49:200350デフォルトの名無しさん
2008/04/29(火) 23:10:38あと to_s も。
0351デフォルトの名無しさん
2008/04/29(火) 23:49:21OKまずはageだ
・自分で設計したクラスのサブクラスを作ったとき(基本)
・他所から持ってきたライブラリのバグを自分で直すとき
・ライブラリの挙動を少しいじくったり、機能を足したいとき(たいていサブクラスを作って上書きする)
上書きコードがある程度の量になってきたら、自分用のラッパーライブラリを作ることもある
0352デフォルトの名無しさん
2008/04/30(水) 00:41:490353デフォルトの名無しさん
2008/04/30(水) 01:19:44これってどうやって検出してるんだろう。inspectは特に引数を受け取るでもないし
0354デフォルトの名無しさん
2008/04/30(水) 07:48:36Thread.current[:__inspect_key__] でobject_idを覚えてる。
0355デフォルトの名無しさん
2008/04/30(水) 09:26:26スレッドローカルストレージ使っているのか。なるほど。
353じゃないが参考になった。
これからもあわあわと質問に解凍しやがってください。
0356デフォルトの名無しさん
2008/04/30(水) 11:34:29そういうことかー。返答ありがとう。
0357デフォルトの名無しさん
2008/04/30(水) 18:32:29c++(cじゃなくて)の呼び方がまとめてあるサイトないですか?
0358デフォルトの名無しさん
2008/04/30(水) 19:38:33素のライブラリ?DBI?ActiveRecord?
0359デフォルトの名無しさん
2008/04/30(水) 23:38:38そうでなければDBIかMySQLライブラリ直書き
0360デフォルトの名無しさん
2008/05/01(木) 00:28:23って思う。
0361デフォルトの名無しさん
2008/05/01(木) 00:31:00その逆はイミフだなぁ。
0362デフォルトの名無しさん
2008/05/01(木) 17:18:14class Foo
...
def refresh
initialize
end
end
0363デフォルトの名無しさん
2008/05/01(木) 17:38:07っていうか、そういうような処理を initialize に書いたらダメです
たとえば、別途セットアップ系のメソッドを作って、initialize と refresh から呼ぶようにするとかしてください
0364デフォルトの名無しさん
2008/05/01(木) 18:32:18なんでよくないの?
0365デフォルトの名無しさん
2008/05/01(木) 19:28:22あー、わかります。
でもRubyは参照渡し?できないですよね。
単発なら返却値で返す。
複数の返却値だとタプル?じゃなくて配列で返して、
hoge, mage = gethogemage
でよかったと思うんですが、なれてないと妙に気持ち悪いw
みんなこんなのやってんのかな
>>342
まず体を慣らすのはいいかもですねw
私も一番慣れてる言語だと、ファイル新規作成したら無意識でclass構文が書けます(まあ大抵はスニペット使いますけど)
0366デフォルトの名無しさん
2008/05/01(木) 22:27:49Rubyはむしろ全て参照渡しと言っても良いくらいなのだが。
ただし代入(=、+=など)は変数の参照先を変えてしまうので
自身を書き換えるメソッドを使わず代入で書き換えようとした場合
変数の参照先が変わり、値渡しみたいに見える。
例えば文字列なら concat は文字列自身を書き換えるが
+= は新しい文字列を作り変数の参照先を書き換えるので元の変数に影響がない。
FixnumやSymbolなどは、自身を変更するメソッドを持たないので
実質的に値渡しになる。
0367デフォルトの名無しさん
2008/05/01(木) 22:29:19べつにいいと思うよ、何度呼ばれてもいいように設計されていれば。
foo = Foo.new(0) # Foo#initialize(0) が呼ばれる
foo.do_something!
foo.initialize(0) # リセットする
foo.do_something!
foo.initialize(0) # リセットする
...
もちろん>>363のようにしてもいい。すきにどうぞ。
0368デフォルトの名無しさん
2008/05/01(木) 23:57:27/".*?"/にすると"aaa\"bbb"みたいな場合に"aaa\"で終わってしまいますが全体にマッチして欲しいんです
/".*(?<!\\)"/にしようと思ったら1.8では(?<!)が使えませんでした
0369デフォルトの名無しさん
2008/05/02(金) 00:03:40とかよく書くけど、どうかな
0370デフォルトの名無しさん
2008/05/02(金) 00:12:20こんな感じ?
0371デフォルトの名無しさん
2008/05/02(金) 00:28:07どちらでもいけました、ありがとうございます!
なんでこれでいいのかまだ良くわからないので頑張って解読します
0372デフォルトの名無しさん
2008/05/02(金) 02:12:18/"[^\\"]*(\\.[^\\"]*)*"/
こっちのほうが早いかな。
詳説 正規表現を読むのをオススメするよ
0373デフォルトの名無しさん
2008/05/02(金) 02:15:20Rubyの終了時にメモリは自動的に解放されているのでしょうか?
明示的に解放しないとだめですか?
0374デフォルトの名無しさん
2008/05/02(金) 03:21:27やりたいことは
CarbonEmacs上にて起動したirbで
require 'rubygems'
を行いたい。です。
環境は
OSX10.4にてCarbonEmacs2008春版を使用しています。
rubyはMacPortsからインストールしたものを使用し、
rubygemsもMacPortsからインストールしました。
0375374
2008/05/02(金) 03:23:56/Users/hoge% uname -a
Darwin hoge.local 8.11.1 Darwin Kernel Version 8.11.1: Wed Oct 10 18:23:28 PDT 2007; root:xnu-792.25.20~1/RELEASE_I386 i386 i386
/Users/hoge% ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i686-darwin8.11.1]
/Users/hoge% which ruby
/opt/local/bin/ruby
/Users/hoge% gem -v
1.1.1
/Users/hoge% which gem
/opt/local/bin/gem
/Users/hoge% echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
/Users/hoge% irb
irb(main):001:0> puts $:
/opt/local/lib/ruby/site_ruby/1.8
/opt/local/lib/ruby/site_ruby/1.8/i686-darwin8.11.1
/opt/local/lib/ruby/site_ruby
/opt/local/lib/ruby/vendor_ruby/1.8
/opt/local/lib/ruby/vendor_ruby/1.8/i686-darwin8.11.1
/opt/local/lib/ruby/vendor_ruby
/opt/local/lib/ruby/1.8
/opt/local/lib/ruby/1.8/i686-darwin8.11.1
.
=> nil
irb(main):002:0> require 'rubygems'
=> false
--------
rubygemsをrequireしてもエラーになりません。
(.irbrcにてrequire済なので再読み込みはしませんが)
0376374
2008/05/02(金) 03:25:02irb(main):001:0> puts $:
/usr/lib/ruby/site_ruby/1.8
/usr/lib/ruby/site_ruby/1.8/powerpc-darwin8.0
/usr/lib/ruby/site_ruby/1.8/universal-darwin8.0
/usr/lib/ruby/site_ruby
/usr/lib/ruby/1.8
/usr/lib/ruby/1.8/powerpc-darwin8.0
/usr/lib/ruby/1.8/universal-darwin8.0
.
nil
irb(main):002:0> requrie 'rubygems'
NoMethodError: undefined method `requrie' for main:Object
from (irb):2
--------
実行時のパスが異なるようです
どのようにしたら、この問題を解消できるでしょうか。
0377デフォルトの名無しさん
2008/05/02(金) 03:33:480378374
2008/05/02(金) 03:52:32まちがえました…ご指摘ありがとうございます
typoしなくても以下の通りです
irb(main):001:0>
No such file to load -- rubygems
from (irb):1:in `require'
from (irb):1
0379デフォルトの名無しさん
2008/05/02(金) 05:40:38オブジェクトが参照なのと、引数の参照渡しを一緒にスンナ
何が「すべて参照渡しと言ってもいいくらい」だ
0380デフォルトの名無しさん
2008/05/02(金) 12:10:570381デフォルトの名無しさん
2008/05/02(金) 14:35:21FinderからではなくTerminal上で open -a Emacs とする、
もしくは .emacsに irb の位置をフルパスで指定する、のどちらか。
後者なら、~/.emacsなどに
(setq ruby-program-name "/opt/local/bin/irb")
と書けばいいと思う。たぶん。
0382デフォルトの名無しさん
2008/05/02(金) 15:43:21ttp://b.hatena.ne.jp/entry/http://jp.techcrunch.com/archives/20080501twitter-said-to-be-abandoning-ruby-on-rails/
0383デフォルトの名無しさん
2008/05/02(金) 18:21:49現在、配布されているドキュメントは html 形式のみですよね
Ruby 1.4 の時に配布されていた info
ruby-texi-1.4.tar.gz
も、ネット上のどこにも落ちていない…
0385デフォルトの名無しさん
2008/05/03(土) 17:38:080386デフォルトの名無しさん
2008/05/03(土) 18:14:12実行前に実装を強制させる仕組みはない。
定義してなければ呼んだときにmethod_missingが呼ばれる。
あとは
スーパークラスで抽象メソッドにしたいメソッドを定義して
raise NotImplementedError
するとか
inheritedフックを使って、継承した時点でチェックするとか。
0387デフォルトの名無しさん
2008/05/03(土) 18:31:01Class#inheritedがよさげです
ありがとうござました
0388デフォルトの名無しさん
2008/05/03(土) 18:45:070389デフォルトの名無しさん
2008/05/03(土) 22:45:28pythonでなくてrubyを使う理由って何でしょう?
日本人が作ったのが誇らしいとかですか????
0390デフォルトの名無しさん
2008/05/03(土) 22:50:500391デフォルトの名無しさん
2008/05/03(土) 23:15:38http://pc11.2ch.net/test/read.cgi/tech/1203658291/623
623 名前:デフォルトの名無しさん[sage] 投稿日:2008/03/24(月) 14:34:59
どうしてrubyなの?
実績も何も無い言語ですよね
pythonじゃなくてrubyを使う理由を一つでもいいから教えてください
開発者が日本人なのが誇らしいとか??????
0392デフォルトの名無しさん
2008/05/03(土) 23:18:17どうして日本語使ってるの?
英語でなく日本語使う理由って何でしょう?
日本人が作ったのが誇らしいからですか????
0393デフォルトの名無しさん
2008/05/04(日) 01:11:30ノー!フューチャー!
0394デフォルトの名無しさん
2008/05/04(日) 02:41:51openclassはちゃんとしたアプリがつくれない、って言われてるけど
その通りだと思う。でもスクリプト(笑)言語でちゃんとしたアプリは
作らないから問題ない。
0395デフォルトの名無しさん
2008/05/04(日) 07:31:410396デフォルトの名無しさん
2008/05/04(日) 11:46:23たとえば、
class Hoge
def a(int1, int2)
return int1+int2*int2
end
def self.b(int)
p a(3, int)
end
end
Hoge.b(5)
の様には書けないんでしょうか。
classとselfとHogeを外すと正常に動作するんですが。
0397デフォルトの名無しさん
2008/05/04(日) 11:55:54メソッド側に属性を統一するのがRuby流で
属性側にメソッドを統一するのがPythonって思ってる。
俺の場合はlambdaの使い難さで使わないけどな。>>Python
文が書けないし、構文自体が無茶になるから
結局、一時的な関数内関数を書きまくることに。
0398デフォルトの名無しさん
2008/05/04(日) 11:58:130399デフォルトの名無しさん
2008/05/04(日) 12:03:11クラスメソッドとインスタンスメソッドと特異メソッドの勉強が必要
0400デフォルトの名無しさん
2008/05/04(日) 12:06:21実際の挙動というか、メモリ上の状態を記述しているような
説明がないので。
一応、インスタンスはコピーという感じで良いんでしょうか。
クラスと特異の実際の状態が掴めないのでよく解りません。
0401デフォルトの名無しさん
2008/05/04(日) 12:17:25中田育男先生の
コンパイラの構成と最適化 お勧め
0402デフォルトの名無しさん
2008/05/04(日) 12:20:510403デフォルトの名無しさん
2008/05/04(日) 12:34:20self.bの定義の中ではselfは(挿入されている特異クラスはさておき)
Hogeというクラスそのものなわけだが、このとき(レシーバを
省略した)aの呼び出しでも、当然レシーバはself(=Hogeクラス)
になる。
0404デフォルトの名無しさん
2008/05/04(日) 13:04:58この辺はじっそうによるからなあ。
コード書いてみて、実験したりして挙動を確かめる方が身につくよ。
本も大事だけどさ
コード書かないで理解は無理だべさ
0405デフォルトの名無しさん
2008/05/04(日) 13:18:59まずどういう目的で、何をするためのスクリプトを書いてて詰まったのか
そこを書いた方が回答しやすい
学習目的なら、特異メソッド(Hoge.b)の理解は後回しで良い
それよりも、まずクラスとインスタンスの概念を理解することが先
0406デフォルトの名無しさん
2008/05/04(日) 14:10:12目的はある処理をするクラスを作っていて、
クラス内部の処理を解りやすくするために、関数で処理を
まとめようとしていました。
色々と処理の分岐があるので、その方が解りやすく書けるからです。
新たにクラスを作るほどは大きくなく、下手に複数のクラスにして
データのやりとりで悩まなくていいし、1ファイルに納めるのに
都合が良いからです。
しかし、メソッドを定義してやると、クラス外からも呼び出せるし、
何か気持ち悪いので良い方法はないのかと思って聞いてみました。
そもそも、クラスの使い方が間違ってるような気もしていたので。
クラスから自身を呼んでインスタンス化するというのも、
自身の、呼び出した部分のコードがメモリに読まれるので、無駄な気がするし。
0407デフォルトの名無しさん
2008/05/04(日) 14:57:18読んでみます。
>>402
やはりプライベートにして、アクセスを禁止してしまえば良いんでしょうか。
>>403
なるほど。再帰的に呼び出してるわけですよね。
クラスを呼ぶのでクラス指定しないとダメなんですかね。
クラス内だから関数的に呼べるのかなとも思ったんですが。
なんとなくあやふやな感じで理解してましたが。
selfを付けるのと付けないのでどういう違いが
発生するのかいまいちよくわからないのですよね。
selfを付けると、スクリプトの実行時に既に実行可能になってるのか
それとも、クラスが呼ばれたときに実行可能になるのかとか。
>>404
そうですか。あはは。
オブジェクト指向って奥が深いですね。
何か図形的なモデルがあると理解し易いんですが。
きっと複雑な状態遷移があると思うので、
言葉だけではすぐに理解するのは難しいのかなと。
0408デフォルトの名無しさん
2008/05/04(日) 15:55:51Hogeのインスタンスを作っており、なおかつ外部から呼ばれたくないメソッドなら
普通にプライベートメソッドでOK
あとself.bは、クラスメソッドの定義なので
クラスの外でもHoge.bと書けば呼べてしまう
詳しくはリファレンスマニュアル内、「クラスメソッド」の項を参照
ttp://www.ruby-lang.org/ja/man/html/_A5AFA5E9A5B9A1BFA5E1A5BDA5C3A5C9A4CEC4EAB5C1.html#a.a5.af.a5.e9.a5.b9.a5.e1.a5.bd.a5.c3.a5.c9.a4.ce.c4.ea.b5.c1
0409デフォルトの名無しさん
2008/05/04(日) 20:13:44すごい大雑把に説明すると、
クラスは鯛焼きプレートでインスタンスは鯛焼き。
def self.foo と定義したものはクラスメソッド。
def bar と定義したものはインスタンスメソッド。
インスタンスメソッドはインスタンスがないと (Hoge.new しないと) 実行できない。
クラスメソッドはクラスが定義されていれば実行できる。インスタンスは不要。
インスタンスメソッドからクラスメソッドを呼ぶのは可能。
def bar
self.class.foo
end
クラスメソッドからインスタンスメソッドを呼ぶには new しないとだめ。
あちこちに self が出てきて分からなくなってきたら p self として確認すればいいんじゃね。
0410デフォルトの名無しさん
2008/05/05(月) 15:02:25円や直線など基本的な描画に加えて日本語の出力を行いたいです
http://d.hatena.ne.jp/koki-h/20060822/p1
2年前の記事なのですが、現在は何か決定版があるのでしょうか?
0411デフォルトの名無しさん
2008/05/05(月) 15:10:400412デフォルトの名無しさん
2008/05/05(月) 22:40:56プライベートで良いんですね。
ありがとうございます。
>>409
なるほど。
selfで呼べば良い訳ですね。
インスタンスメソッドは関数の型宣言みたいなもので、
クラスメソッドは関数みたいな物ですね。
ありがとうございます。
0413デフォルトの名無しさん
2008/05/05(月) 23:02:25インスタンスメソッドは実行時に一つ起動しているオブジェクトで、
スコープの範囲で何時でもどこからでも呼べる。
クラスメソッドは宣言してからようやく使えるメソッドですね。
オブジェクトの起動タイミングが違うという理解でしょうか。
0414デフォルトの名無しさん
2008/05/05(月) 23:33:54かなり致命的に理解を間違っているようなので
このスレで聞くよりも、身近なプログラマに直接質問してみることを薦める
もしくはGoogleで、オブジェクト指向について基礎から解説してるページを探すとか
0415デフォルトの名無しさん
2008/05/05(月) 23:43:241.私は万年筆が好きだ
2.私はこの万年筆が好きだ
この二つのうち、1は万年筆というもの、2は具体的な品を指してるだろ
オブジェクト指向では1がクラス 2がインスタンス
ここで.色関数を考えると、
(2の意味の万年筆).色 ってのは、具体的な品だからちゃんと色が決まってる
これがインスタンスメソッド
(1の意味の万年筆).色 だと、色が決まらないから、クラスに対してインスタンスメソッドは
呼び出せない
同様に、そのものの種類を返す関数 .kind があったとする
このときは、(1の意味の万年筆).kind で、"万年筆"って文字が返ってくるし
(2の意味の万年筆).kind でも、同じように"万年筆"って返ってくる
これがクラスメソッド
0416デフォルトの名無しさん
2008/05/06(火) 01:09:00> (2の意味の万年筆).kind でも、同じように"万年筆"って返ってくる
> これがクラスメソッド
これは違うんじゃ...
0417デフォルトの名無しさん
2008/05/06(火) 01:11:190418デフォルトの名無しさん
2008/05/06(火) 12:06:22インスタンスメソッドはnewなどして、その時点にならないと
初期化されないメソッドという事じゃないんですか?
0419デフォルトの名無しさん
2008/05/06(火) 12:35:38Rubyではオブジェクト毎にメソッドを定義できる。
クラスオブジェクト(Classクラスのインスタンス)にメソッドを定義したのがクラスメソッド。
そのクラスのインスタンスとは直接は関係しないから、クラスメソッドを定義しても、インスタンスメソッドには影響しない。
0420デフォルトの名無しさん
2008/05/06(火) 12:47:26irb> C.clsmtd
537963320
irb> p C.object_id
537963320
irb> p C.new.object_id
537887540
0421デフォルトの名無しさん
2008/05/06(火) 13:09:22どうもインスタンスメソッドに関して、誤解があるように思えるな
foo_instance = Foo.new # オブジェクトの生成
foo_instance.a(1, 2) # foo_instanceのメソッドaを実行し、結果を返す
a(1, 2) # エラー
このスクリプトでなぜエラーが出るのかは理解できる?
0422デフォルトの名無しさん
2008/05/06(火) 14:41:55インスタンス化されたクラスは?
場所の定義は無いんですか?
0423デフォルトの名無しさん
2008/05/06(火) 15:13:18class A
@a
@b
@c
end
instance = A.new は、C言語でいえば、void *instance = malloc(3);
この3はAに変数が三つあることに対応してて、このケースならinstance[0] が @a ,instance[2] は@cに対応してる
例えばここにインスタンスメソッドとして
def set_a(new_a)
@a = new_a
end
があったとする。
instance.set_a("test")のように呼び出すと、内部ではset_a(instance,"test")と変換される
実際に呼ばれる関数は、C言語で書けば
void set_a(instance , new_a)
{
instance[0] = new_a;
}
こんな風に、@aなりを使ってると、listのアドレスを確定させなきゃならんから
具体的なインスタンスに対してしか使えない
クラスメソッドは、Cでいうところのグローバル変数のみを使ってる関数で
イメージ的には
int num = 10;
int class_num() { return num; }
に対応する。
この場合は変数instanceをメソッド内で使ってないので、A.class_method でもいいし instance.class_method
でもおk
0424デフォルトの名無しさん
2008/05/06(火) 15:16:52>line23 listのアドレスを→instanceのアドレスを
>line29 int class_num() ⇒ int class_method()
0425デフォルトの名無しさん
2008/05/06(火) 18:26:27定義されたクラスは、定数として存在している
class Foo
(ここにメソッドとかの定義)
end
print Foo.name # "Foo"が出力される
print Foo.class.name # "Class"が出力される
0426デフォルトの名無しさん
2008/05/06(火) 18:46:53それらに名前をつけたのが変数や定数。
変数や定数は実体がオブジェクトスペース内のどこにあるのかの情報を持ってる。
0427デフォルトの名無しさん
2008/05/06(火) 19:45:36構造体、メモリ、ポインタで説明してほしい人は
読んでみると何かしら得るものがあると思うんだ
ttp://www.ruby-doc.org/docs/ProgrammingRuby/html/classes.html
ここの図が良いんだけどFigure not availableになってるのが残念
0428デフォルトの名無しさん
2008/05/06(火) 22:05:52遠回りだけどjavaをしっかり勉強した方がいいじゃないの?
0429デフォルトの名無しさん
2008/05/06(火) 22:10:440430デフォルトの名無しさん
2008/05/06(火) 23:32:46ってことは理解してないってことだよな。
0431デフォルトの名無しさん
2008/05/07(水) 00:09:23Rubyのクラスとインスタンスとメソッドを理解したいのか
オブジェクト指向プログラミングのクラスやインスタンスを理解したいのか
どっちかにして欲しい
後者ならスレ違いだ
0432デフォルトの名無しさん
2008/05/07(水) 00:55:34オブジェクト指向を学ぶ上でJavaより勉強する価値のある言語って何?
批判するだけで自分の考えは何も無いの?
0433デフォルトの名無しさん
2008/05/07(水) 00:57:090434デフォルトの名無しさん
2008/05/07(水) 00:57:260435デフォルトの名無しさん
2008/05/07(水) 00:57:550436デフォルトの名無しさん
2008/05/07(水) 00:59:010437デフォルトの名無しさん
2008/05/07(水) 00:59:260438デフォルトの名無しさん
2008/05/07(水) 01:00:250439デフォルトの名無しさん
2008/05/07(水) 01:05:340440デフォルトの名無しさん
2008/05/07(水) 01:06:560441デフォルトの名無しさん
2008/05/07(水) 01:06:570442デフォルトの名無しさん
2008/05/07(水) 01:11:16C++でもRubyでもPythonでもJavaでも
(smalltalkは使ったことないから知らないが)
0443デフォルトの名無しさん
2008/05/07(水) 01:11:46というかJavaは、意図的に完全なオブジェクト指向にしてない
実用面ではどうかってなるとまた別の話になるんだが、
少なくともオブジェクト指向って観点から見ると美しくない
逆にSmalltalkは文字通り全部がオブジェクト
制御構造すらオブジェクトのメッセージ扱いになる
RubyもSmalltalkからメタクラスとかの概念をもらってるはず
0444デフォルトの名無しさん
2008/05/07(水) 01:12:090445デフォルトの名無しさん
2008/05/07(水) 01:15:030446デフォルトの名無しさん
2008/05/07(水) 01:16:280447デフォルトの名無しさん
2008/05/07(水) 01:17:39最初のGoFはSmalltalkだったぞ。
のちにJava優勢になったのは普及度の違い。
0448デフォルトの名無しさん
2008/05/07(水) 01:18:33オブジェクト指向をよりよく体現してる=言語として人気がある とはならないだろ
どっちにしろJavaで上手い設計してる奴はSmalltalkから来てるよ
0449デフォルトの名無しさん
2008/05/07(水) 01:20:16少なくとも実用的な言語を元に学ぶのが良し、という考え方の元ではJavaだろう
Smalltalkでオブジェクト指向を学べってのは大げさ過ぎる
0450デフォルトの名無しさん
2008/05/07(水) 01:20:46実用を兼ねてるんだろう
Java使ってる人は多いだろうし、JavaはC++やC#とかとも文法が似てる
・・・・・と言いつつ、GoFのデザパタ本はSmalltalkも使ってたような
0451デフォルトの名無しさん
2008/05/07(水) 01:21:400452デフォルトの名無しさん
2008/05/07(水) 01:22:22もともとの問題を摩り替えないほうがよい
0453デフォルトの名無しさん
2008/05/07(水) 01:25:46自分でいい設計してるソース探してきて読むとこまで勉強するよりは
Smalltalkのライブラリでも読んでりゃいいとは思う
0454デフォルトの名無しさん
2008/05/07(水) 01:26:16もともとSmalltalkで得られた知見だしな。
新しい版はJavaコードも使ってる。
0455デフォルトの名無しさん
2008/05/07(水) 01:27:35Smalltalkに噛み付く奴はスレ逸らしだろうな
0456デフォルトの名無しさん
2008/05/07(水) 01:27:460457デフォルトの名無しさん
2008/05/07(水) 02:00:120458デフォルトの名無しさん
2008/05/07(水) 06:09:55ちょっと前に本スレにいた京大君を思い出すんだよな(本人だと言うわけではなく)。
んで、実際のところ質問者はCとかでは、コードをすらすら書けるんだが、
「オブジェクト指向」(または、Rubyのモデル)の概念でつまづいてコードが書けないのか。
それとも計算機の理論を一通り座学して、これからコードを書くに当たって、
(Cではなく)楽ちんそうなオブジェクト指向スクリプト言語を選んだのか。
前者と後者で、かなりすべき対応が変わると思うんだが。
0459デフォルトの名無しさん
2008/05/07(水) 07:26:35OOPLとしては、普及してるが純粋でない。
0460デフォルトの名無しさん
2008/05/07(水) 10:24:48リフレクションとかに代表されるイントロスペクション機能でしょうね。
分かりやすいところでは、IDE やデバッガなどの機能充実度や、それらの
作りこみやすさに出てくる特徴です。もとは LISP 譲りの機能ですが、Smalltalk での
充実度は LISP をも凌駕しています。これは Smalltalk 処理系が Smalltalk 自身で
記述されている(記述可能…とかではなく、実際にそれで運用されている)ことに
由来します。
Ruby 実装では Rubinius や今度の RailsConf でデモされる予定の MagLev が、
現在の制約を克服して Smalltalk に近づこうと努めているみたいです。
これらは Smalltalk と同じく、Ruby 処理系をできるだけ Ruby で記述しようとする
ものたちです。
あと余談ですが Java は、Ruby や Smalltalk などの「メッセージングのOO」という
パラダイムに則していないだけで、C++ や Eiffel などの「ユーザー定義型のOO」と
いうパラダイム的にはかなり純粋なほうですよ。念のため、後者は“ユーザー定義型”を
クラスで実現しようとする考え方で、メッセージのやりとりとかとは無関係です。
裏を返せば、Ruby や Smalltalk は、Java の土俵である「ユーザー定義型のOO」的な
切り口で見たときに、足りないところが多々あるということになり、実際にそうなっています。
0461デフォルトの名無しさん
2008/05/07(水) 10:54:06>>458
ぶちゃけた話、オブジェクト指向を完全理解しなくてもRubyのクラスやメソッドは使えるよな
継承や委譲もなんとかなると思う
0462デフォルトの名無しさん
2008/05/07(水) 12:36:37オブジェクト指向が分からないのか、
Rubyでのオブジェクト指向を実現する技法が分からないのかでも話が変わってくるのでは
オブジェクト指向って思考法そのものは言語に依存しないと言われているし
0463デフォルトの名無しさん
2008/05/07(水) 13:02:54オブジェクトは メソッド(オブジェクト 引数 引数) だとキモいって言われるのはどうして?
0464デフォルトの名無しさん
2008/05/07(水) 13:16:56「呼び出し先の決定権を持っている奴」が、端っこではない場所に居て、やや目立ちにくい
・・・という、ビジュアル的な違和感ではないかと思う。
結局のところ、慣れればそれまでって気がするけどね。
0465デフォルトの名無しさん
2008/05/07(水) 13:18:40いやわりとマジ
0466デフォルトの名無しさん
2008/05/07(水) 15:18:42puts "あなたの名前は?"
name = gets.chomp
puts "あなたの名前は#{name}です"
これを実行しても
dan(←入力数値)
あなたの名前は?
あなたの名前はdanです
となって文字列の出力するタイミングが意図したものにならないんです^^;
どうすればいいのでしょうか?
ちなみに開発環境はRDEを使っています。
0467デフォルトの名無しさん
2008/05/07(水) 15:27:17puts "あなたの名前は?"
name = gets.chomp
puts "あなたの名前は#{name}です"
0468デフォルトの名無しさん
2008/05/07(水) 15:44:270469デフォルトの名無しさん
2008/05/07(水) 15:47:150470デフォルトの名無しさん
2008/05/07(水) 20:38:45関数に見えるというのが。フラットな名前空間にとっちらかる感じで。
名前空間を導入すると今度は対象がわかってるのに名前空間を書かないといけないのがあれで。
……まあ結局は気分なんだが。CLOS がやっていけてるんだからやっていけるんだろう。
0471デフォルトの名無しさん
2008/05/07(水) 21:55:06> オブジェクトは メソッド(オブジェクト 引数 引数) だとキモいって言われるのはどうして?
C言語でオブジェクト指向で書くとそんな感じだから、別にキモいとは思わない。
0472デフォルトの名無しさん
2008/05/07(水) 21:56:37メソッドチェーンができないから
0473デフォルトの名無しさん
2008/05/07(水) 22:51:46誰かスレッド作ってくれんかなぁ
0474デフォルトの名無しさん
2008/05/09(金) 09:36:58つまりはこういうソース吐きたいんだけど
<div>1 2 3 4 5</div>
<div>6 7 8 9 10</div>
or
1 2 3 4 5<br>
6 7 8 9 10<br>
or
<div>1 6</div>
<div>2 7</div>
<div>3 8</div>
<div>4 9</div>
<div>5 10</div>
あとオプション1つでテーブルタグも吐けたりするとうれしいな
0475デフォルトの名無しさん
2008/05/09(金) 11:06:53手を抜くより先に覚えることはたくさんある
「自分で作れるけどもうめんどいから他のことに時間かけるために手を抜く」
というのが正しいプログラミング
メソッドを作ることはできるかな
できないのなら作り方おぼえるといい
0476デフォルトの名無しさん
2008/05/09(金) 11:22:11「カウント○ごとに何かをする」という専用の処理が何かあると思うことかな
ありそうだけど無いよね
each_with_index で回して index + 1 の 剰余5 が 0 のとき何かする、という記述しかない?
0477デフォルトの名無しさん
2008/05/09(金) 13:13:180478デフォルトの名無しさん
2008/05/09(金) 18:07:17hash = {}
each do |item|
key = yield(item)
(hash[key] ||= []) << item
end
hash.collect {|key, arr| arr }
end
こんなメソッドって標準になかったっけ?
0479デフォルトの名無しさん
2008/05/09(金) 20:01:55もっとも、Hashのままで返すけど。
というか>>478のだと、どのグループかわからなくなるんじゃないか?
0480デフォルトの名無しさん
2008/05/09(金) 20:03:15hash.values
0481デフォルトの名無しさん
2008/05/09(金) 21:16:18さんくす
そうだよな、Hash#values があるじゃん
なんて間抜けなんだ
0482デフォルトの名無しさん
2008/05/10(土) 14:38:431からキーボードで入力した数までの和をもとめる
プログラムの作り方がいまいちわからないのですが
教えていただけませんでしょうか?
0483デフォルトの名無しさん
2008/05/10(土) 14:40:53スルーしてください
0484デフォルトの名無しさん
2008/05/10(土) 14:54:50def sum(n);n*(n+1)/2;end
0485デフォルトの名無しさん
2008/05/10(土) 15:58:44def sum(n); (1..n).inject{|a,b|a+b}; end
という風にできることを知っていると後で役に立つかも。
立たないかも。
0486デフォルトの名無しさん
2008/05/10(土) 18:37:59ただし>485の5倍程度の時間がかかる。(毎回evalのため)
def fn_maker(fn,lst);lst.inject{|r,i|eval("r"+fn+"i")};end
def summerise(x);fn_maker("+",x);end
def multiple(x);fn_maker("*",x);end
def divide(x);fn_maker("/",x);end
def subtract(x);fn_maker("-",x);end
def sum_1_to_n(n);summerise(1..n);end
p sum_1_to_n(10)
a=[3.0,5,2]
p summerise(a)
p multiple(a)
p divide(a)
p subtract(a)
0487デフォルトの名無しさん
2008/05/10(土) 18:54:070488デフォルトの名無しさん
2008/05/10(土) 19:15:480489デフォルトの名無しさん
2008/05/10(土) 19:43:59微笑ましい…のか?
0490デフォルトの名無しさん
2008/05/10(土) 19:50:190491デフォルトの名無しさん
2008/05/10(土) 20:05:25自分の知識の結果をただ披露して悦に入ってどうするよ
0492デフォルトの名無しさん
2008/05/10(土) 20:07:48* 「100%速くなった」というのは、時間が半分になったということ?
* 「200%速くなった」というのは、時間が1/3になったということ?
* 「25%速くなった」というのは、時間が20%減ったということ? ( 1 / (1-0.20) = 1.25 )
教えてえらいひと。
0493デフォルトの名無しさん
2008/05/10(土) 20:17:300494デフォルトの名無しさん
2008/05/10(土) 20:23:19数値から数値までを足すときはガウスが少年時代に行った
計算方法を利用してプログラムを作った記憶が有るなあ
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
と場合分けすると式が短くて簡単
0495デフォルトの名無しさん
2008/05/10(土) 20:44:11なるほどね。
他の方法で暗算だとa,a+1のうち、偶数になる方を2で割ってから掛け合わせたりする。
例:
1~100の場合、100*101/2 = (100/2)*101
1~123の場合、123*124/2 = (124/2)*123
以上は経験的に「奇数の1/2 * 偶数」よりも「偶数の2/1 * 奇数」の方が
暗算しやすいからだけど、プログラムにも活かせると面白いかも。
例えば、少量データで早い実装、大量データで早い実装のように複数の関数を
用意しておいて、稼働状況に応じて使う関数を自動的に切り替える。
0496デフォルトの名無しさん
2008/05/11(日) 11:38:08の時、マニュアルによると
p str0[3, 1] #=> nil
らしいですが、自分の環境(1.8.6 mswin32)では""が返ってきます
何が悪いのでしょうか
0497デフォルトの名無しさん
2008/05/11(日) 11:54:30'bar'[3, 1] #=> ''
'bar'[4, 1] #=> nil
本当だ。なんかバグっぽい挙動だな
0498デフォルトの名無しさん
2008/05/11(日) 16:47:40fw -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
}
0499デフォルトの名無しさん
2008/05/11(日) 18:00:07完全にマッチするみたいのを検出したいのですが、いい方法はないでしょうか?
0500デフォルトの名無しさん
2008/05/11(日) 18:05:01ショートオプションはアルファベット一文字のみ
あと質問にはないが、(printpattern %filename %linenum %line) はRubyでは動かない
0501デフォルトの名無しさん
2008/05/11(日) 18:31:50そのあと数文字を付け加えてない状態を正規表現で表せばいいんじゃない?
もっと具体的にやりたいことの例を出してみれ
解決策が出てくるかもしれないよ
0502498
2008/05/11(日) 19:53:16ありがとうございます。 一文字にしたらうまくいきました。
フォーマットは"%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
}
0503498
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
0504デフォルトの名無しさん
2008/05/12(月) 02:46:36> filepatterns = wordpatterns = []
> if wordpatterns.__id__ == dest.__id__ v = eval(v) end; dest << v
filepatterns も wordpatterns も同じだろ、これ。
0505498
2008/05/12(月) 07:55:200506デフォルトの名無しさん
2008/05/12(月) 19:23:13rubyのこのようなサイトはないのでしょうか?
今までperlで改造を行っていたのですが、
研究室でrubyを使うことになったので勉強ついでに乗り換えようと思ったんですが…
0507デフォルトの名無しさん
2008/05/12(月) 19:24:380508デフォルトの名無しさん
2008/05/12(月) 19:45:57あれは日本のperl(というかCGI)の黎明期に乗ったサイトだから仕方ないか
PHPにも無いわけだし問題ないかもしれん
>>506
研究室で必要な部分だけ習うだけにしておいたほうがいいぞ
0509デフォルトの名無しさん
2008/05/12(月) 19:48:34今まで見た事はないな
そもそも「rubyでCGI」自体がかなりマイナーだから
CGI前提のスクリプトも数えるほどしかない
Web上の解説記事や書籍を頼りに、自力で何とかするのがいいと思うよ
もしくはCGIスクリプトに関してはperlに頼るか
0510デフォルトの名無しさん
2008/05/12(月) 20:36:12CGIに関しては今まで通りperlで作ることにします。
0511デフォルトの名無しさん
2008/05/12(月) 20:43:020512デフォルトの名無しさん
2008/05/12(月) 21:03:26>>506
本ならたくさんあるよ。Ruby CGIでググれ。
ただ、ほとんどPerlと一緒だから面白みはないけどね。
動いてるruby-webアプリなら、tdiaryとかbitclustのソース読むとかしてみれ。
0513デフォルトの名無しさん
2008/05/12(月) 21:55:35tdiaryのソースはおすすめせん。bitclustなら許す。
0514デフォルトの名無しさん
2008/05/12(月) 22:22:380515デフォルトの名無しさん
2008/05/12(月) 22:34:28何故に
0516デフォルトの名無しさん
2008/05/12(月) 22:34:34自作CGIなんて動かして欲しくはないわな
0517デフォルトの名無しさん
2008/05/12(月) 23:05:41言われたら断りたくなる気持ちはおいらも分かるけど。
その辺はruby1.9/rails3あたりで解決してるといいなあ。
0518デフォルトの名無しさん
2008/05/12(月) 23:47:59def 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に相当する標準のメソッドってありますか?教えてください
0519デフォルトの名無しさん
2008/05/13(火) 00:14:59Ruby1.9のメソッドだったがプレビュー版1.8.7にも入ってる
おそらく次の安定版Rubyでは標準で使えるだろう
0520デフォルトの名無しさん
2008/05/13(火) 00:23:45そういえば、なんで標準で「一気にハッシュに変換・登録」ができないの?
0521518
2008/05/13(火) 00:30:14一時変数を使わずにlispみたいにゴリゴリ書ける方法は無いかなぁと思って
tapを参考に作ったんですが…
標準には無いってことですか
0522デフォルトの名無しさん
2008/05/13(火) 00:35:47キーにまつわる標準的な例外考えるのめんどくさいんだと思う
[[1,'one'], [1,'いち']] が {1 => 'いち'} になったらやっぱ例外出すべきだよな、とか
0523デフォルトの名無しさん
2008/05/13(火) 01:05:510524デフォルトの名無しさん
2008/05/13(火) 01:27:19RubyGemsを使って、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]
0525デフォルトの名無しさん
2008/05/13(火) 10:32:09> (WxWidget2.8.7をインストールしてみても、やはり同じエラーが出ました)
PATH通してある?
0526デフォルトの名無しさん
2008/05/13(火) 12:34:47ただVC8でコンパイルされてるからまずそうな気もする
wxruby-1.9.6-x86-mingw32.gemをダウンロードして入れる方が楽かも
0527524
2008/05/13(火) 17:54:03助言ありがとうございました!
ちなみに1.9.7は、次のようなエラーでgemのインストールすらできませんでした。
rake (RUBYLIB等の位置を指定するオプション) extension
rake aborted!
Don't know how to build task 'extension'
0528デフォルトの名無しさん
2008/05/13(火) 18:27:40ttp://q.hatena.ne.jp/1210650187
定番回答らしい回答が即っと無いのが現状をよく表しておるのう
0529デフォルトの名無しさん
2008/05/13(火) 18:56:41青木さんのコードとか、Pickaxeのコードとかいくらでもあるでしょ。
0530デフォルトの名無しさん
2008/05/13(火) 20:04:07それにしてもRubyに限らず定番回答なんて存在するのか?
知ったか的なのならいくらでも挙がりそうだが
0531デフォルトの名無しさん
2008/05/13(火) 20:19:10POPはプロトコル自体も小さいし。
初心者に800行近いのは無理か・・・
mailread.rbはたしかに短いけど、initializeにいっぱい詰めるのは好きじゃないんだよなあ
完全に漏れの好みの問題なんだけどさ。
0532デフォルトの名無しさん
2008/05/13(火) 20:39:39とっても勉強になるょ><
初心者なら全部読んでこんなコードを書くくせをつけたほうがいいょ><
http://golf.shinh.org/l.rb?rb
0533デフォルトの名無しさん
2008/05/13(火) 21:49:26こういうコードを書くべき、なんてどんだけ
上から目線なんだよ
0534デフォルトの名無しさん
2008/05/13(火) 21:50:56理由は名前がかっこいいのと日本の方が作ったということで分かりやすいのかなぁと思ったことから。
ただ理由がこんな感じだから、勉強しててもただやり方を覚えるだけの作業のような気がしてならない。
何か作りたい物があれば、そのために勉強していけると思うんだが。
みなさんがRuby(プログラム)を始めたきっかけってなんですか?
0535デフォルトの名無しさん
2008/05/13(火) 21:51:00頑張れよー
0536デフォルトの名無しさん
2008/05/13(火) 21:52:510537デフォルトの名無しさん
2008/05/13(火) 22:01:35CGI書くときにPerlが嫌で、他の言語を探してたらRubyに当たった
とりあえず、書籍読むなり誰かが書いたコード読むなりして
自分に合いそうだと思ったら始めてみたらいい
目的が欲しいなら、CGIスクリプトか自分用のファイル処理スクリプトでも書いとけ
ゲームが作りたいならそれを目標にしても良い
0538デフォルトの名無しさん
2008/05/13(火) 22:06:35プログラムを始めたきっかけ: 情報工学部に入ったから
Rubyを始めたきっかけ: Perlになんとなく嫌気がさしてたときに、研究室の先生にRubyをすすめられたから
0539デフォルトの名無しさん
2008/05/13(火) 23:27:38Rubyを使うようになったきっかけ: 256本邪道編読んでOfficeだのをいぢりだしてから
0540デフォルトの名無しさん
2008/05/14(水) 00:22:41>>518 を見てそれ tap じゃんて思ったんだけど、
tap って self を返すんだっけか?
0541デフォルトの名無しさん
2008/05/14(水) 01:08:17途中に挟んで(ワイヤタップして)、何事もなかったようにメソッドチェーンが進む。
0542デフォルトの名無しさん
2008/05/14(水) 01:55:51Perlでの「もっと普通にプログラムかかせろ!」という不満から。
ベターPerlから入ったが、今はPerlとは全然違うものと感じている
0543デフォルトの名無しさん
2008/05/14(水) 12:33:330544デフォルトの名無しさん
2008/05/14(水) 12:41:12Python
Scheme(かGauche、なんでもいいからLisp処理系)
Haskell
この3つ
あと基礎素養としてのCな
Perl5とPHP5は身近に使う機会があるならそっち憶えてもいいかと
JavaやVisualCやC++や.net関連は仕事で必要なら勉強させられるし
仕事で使わないのなら自分から憶える必要は全くないのでスルーでOK
日本語とか英語とかそういう自然言語のレスがあると予想
0545デフォルトの名無しさん
2008/05/14(水) 12:52:41let を元にして let* と fluid-let と letrec というのを作った奴はどうかしてる
もう少しわかりやすい説明的名称にするか全く新しい名前を付けるべき
0546デフォルトの名無しさん
2008/05/14(水) 13:19:45Rubyをきちんと学んでればそうそう変なことにはならないはず
再帰とか継承とか本当にきちんと理解した?
Rubyで憶えられないのに他の言語に手を出したって無駄だぞ?
0547デフォルトの名無しさん
2008/05/14(水) 14:02:070548デフォルトの名無しさん
2008/05/14(水) 14:06:14初心者スレっぽい
0549デフォルトの名無しさん
2008/05/14(水) 14:28:57拡張も作れるし。
0550デフォルトの名無しさん
2008/05/14(水) 16:22:05カットで詰まった俺
0551デフォルトの名無しさん
2008/05/14(水) 21:20:32グルーピングに{}を使う言語程度の意味でいいのか。
0552デフォルトの名無しさん
2008/05/14(水) 21:35:240553デフォルトの名無しさん
2008/05/15(木) 19:54:36> あと基礎素養としてのCな
俺ならLispも基礎素養の方に入れるな。
0554デフォルトの名無しさん
2008/05/15(木) 22:38:28rubyをインストール(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
とエラーが出てしまいます。
どうか解決法を教えて下さい。
0555デフォルトの名無しさん
2008/05/16(金) 00:01:12rubygems をインストールしました。
で
gem install proggresbar
を実行したのですが
Bulk updating Gem source index for: http://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]
というのがでてしまいます。
どのようにすればいいのか教えてください。
0556デフォルトの名無しさん
2008/05/16(金) 10:28:43PATHの設定がうまくいってないんじゃないかな?
エラー文を見るとcontrollerが見つからないって言ってるわけだから
初心者ならインストールを個別にやるよりInstantRailsを使ったほうがよい
InstantRails関連
http://www.itmedia.co.jp/enterprise/articles/0703/05/news014.html
http://instantrails.rubyforge.org/wiki/wiki.pl?Instant_Rails
http://japan.zdnet.com/sp/report/story/0,2000056431,20352478,00.htm
それからIDEはAptanaとかNetBeans推奨
WEBrickの起動も全部やってくれるから
http://codezine.jp/a/article/aid/2482.aspx?p=1
初心者はとにかく楽な方法で最初を乗り切ってしまおう
0557デフォルトの名無しさん
2008/05/16(金) 19:05:44【Agile】Ruby on Rails Part6【DRY】
http://pc11.2ch.net/test/read.cgi/tech/1210729470/
0558デフォルトの名無しさん
2008/05/16(金) 21:04:29PHPなら、
$stdin = fopen("php://input", "r");
で開けて、EOFまでぐるぐる回すのでしょうが。
Rubyではどうするのでしょう??
ちなみにフォームから送られてくるのは、XML形式のデータです。
お願いします。
0559デフォルトの名無しさん
2008/05/16(金) 21:19:13require 'cgi'
cgi = CGI.new
params = cgi.params
という記述をした CGI に POST すると、params に適当なハッシュが登録されるから適当なキーで取り出せ
値は1個でも配列になってるから注意な
こんなんでどう?
0560デフォルトの名無しさん
2008/05/16(金) 21:35:25標準入力を読めばいいだけじゃないの?
0561デフォルトの名無しさん
2008/05/16(金) 22:26:07rubyはどうやってインストールしたやつ?
それとOSのバージョンは?
Mac用バイナリはビルド方法が間違ってるという話だが、直ったのかな。
> /usr/local/lib/ruby/site_ruby/1.8/rubygems/specification.rb:556: [BUG] Segmentation fault
556行目は何?
0562デフォルトの名無しさん
2008/05/16(金) 23:06:22ありがとうございます。
params=cgi.params
で、paramsにkey => "<?xml version" になって、その後の部分がvalueになりました。
とりあえず、取得はできました。
もうすこし、きれにとれないかしら?
>>560
ありがとうございます。
CGIです。
標準入力って、STDIN.getsとか?でしょうか??
やってみましたが、空っぽでした?何か大きな勘違いかもしれません。
0563デフォルトの名無しさん
2008/05/16(金) 23:09:440564デフォルトの名無しさん
2008/05/16(金) 23:15:46CGIモジュール内部でも標準入力を読み込み→パースしてるわけだから
0565デフォルトの名無しさん
2008/05/17(土) 00:14:41読み込みきってフォームパラメータ(application/x-form-encoded)や
マルチパートとして解析してしまうので、そうでない形式ならCGI.new
せずに標準入力を読まなければならない。
0566デフォルトの名無しさん
2008/05/17(土) 00:14:53もしかして、XML文書をリクエストボディに直接入れてPOSTしたいって意味か
フォームとか使わずに
そういう用途であれば、cgi.rbを使っている限り対応は不可能なので
他のライブラリに乗り換える必要がある
標準で済ませるならwebrick/cgi、外部ライブラリに頼るならRack
あと質問するときは「生POST」のように曖昧な書き方ではなく、もっと具体的に
0567デフォルトの名無しさん
2008/05/17(土) 00:20:35$stdinにStringIOを突っ込むとかするばできそうな気がしないでもない
0568デフォルトの名無しさん
2008/05/17(土) 00:49:21ttp://www.amazon.co.jp/gp/product/4844325795
ttp://www.impressjapan.jp/books/2579
また懲りもせず最初からナンバー振っちゃって大丈夫なんかいのう
Vol.2 で書くネタのアテはあるんか?
0569デフォルトの名無しさん
2008/05/17(土) 00:58:16くまくまーの人か
0570デフォルトの名無しさん
2008/05/17(土) 03:44:46みなさんどうもです。
ttp://d.hatena.ne.jp/mallowlabs/20080329/1206799301
にあるように、Ajaxがらみです。
Railsならa=params[a][b][0]でいけるので
Rubyでもそんなに苦労しないだろうと思ったのですが、
その前の段階でつまずきました。
0571デフォルトの名無しさん
2008/05/17(土) 05:01:08そうそうたるメンバー?じゃないか
これは買わねば
0572デフォルトの名無しさん
2008/05/17(土) 06:42:04var 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で捕まえようとしたのですがうまくいかず質問させていただきました。
0573デフォルトの名無しさん
2008/05/17(土) 07:31:01ありがとうございます。
結局、CGI.newが先に来ていたので取れなかっただけでした。
a=STDIN.gets
ですんなり行きました。
0574554
2008/05/17(土) 18:42:41ありがとうございます。
すべて、一旦アンインストール(Ruby MYSQL Apache)をして、[Railsのアンインストール方法が分からないですが・・・]
InstantRailsをインストールしてみます。
IDEも初めて目にするのですが、いろいろ勉強してみます。
また、壁にぶつかった時は、どうかご教授下さい。
0575556
2008/05/17(土) 21:14:36Rails関係ならこちらで
http://pc11.2ch.net/test/read.cgi/php/1207425569/
俺も常駐してるし他の人も答えやすいと思うよ
0576555
2008/05/17(土) 21:53:36お返事ありがとうございます。
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 です
よろしくお願いします。
0577デフォルトの名無しさん
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は知っているのですが、真ん中の記法にしか対応できないですよね。。
どなたかご存じの方宜しくお願いいたします。
0578デフォルトの名無しさん
2008/05/18(日) 10:16:580579デフォルトの名無しさん
2008/05/18(日) 13:03:03インスタンスへのアクセサでもメソッドへの通常引数(順番重要)でもハッシュ引数でもOK、というのはちとしんどい
0580577
2008/05/18(日) 13:31:45ありがとうございます。
それを聞きattr_accessorが用意されているのでそれで統一したいと思ったのですが、
klass.high = 30
klass.width = 40
とずらずらオブジェクト変数を書くのが面倒です。
みなさんずらずら書いていらっしゃるんでしょうか。
それとも何かいいやりかたがあるんでしょうか?
0581デフォルトの名無しさん
2008/05/18(日) 13:55:06>>577のは全部ずらずら書いてるように見えるが?
普通にinitializeの引数にすればいいじゃないの
他の2つのが良く見えるのなら、メソッドにブロックかハッシュを渡せるようにするだけ
全部出来るようにするメリットは無いよ
0582デフォルトの名無しさん
2008/05/18(日) 13:57:520583デフォルトの名無しさん
2008/05/18(日) 14:01:07何かが間違ってるような気もする。
0584577
2008/05/18(日) 14:12:05ありがとうございます。コロコロ変わって申し訳ないんですが、
未初期化が不味いインスタンス変数がいくつもあるのでコンストラクタでハッシュを取ることにしました。
class BarGraph
def initialize(x)
@high = x[:high] or 300
@width = x[:width] or 200
etc..
こんなもんでいいんでしょうか。。
0585577
2008/05/18(日) 14:13:240586デフォルトの名無しさん
2008/05/18(日) 14:16:51それの解消は単に initialize に書かなくなったってだけで、他のメソッドの引数が増えるだけだと思う
処理に必要な外部入力の量っていうのは一定だと思うぜ
0587デフォルトの名無しさん
2008/05/18(日) 14:17:08意外と知らない人が多いけど、Rubyではorも使える
0588デフォルトの名無しさん
2008/05/18(日) 14:22:01@foo = nil or 2
としたとき、@foo の値は?
0589デフォルトの名無しさん
2008/05/18(日) 14:24:510590デフォルトの名無しさん
2008/05/18(日) 14:25:52puts foo
=> 2
0592デフォルトの名無しさん
2008/05/18(日) 14:29:03知らないわけじゃなくて、結合度の関係で意図的に避けられているだけだ
0593デフォルトの名無しさん
2008/05/18(日) 14:31:420594デフォルトの名無しさん
2008/05/18(日) 14:35:35表を確認するくらいなら () で括るし、面倒になってきた人はあらかじめ || だけ使うだろう
結合度によるバグは見つけるのめんどくさいバグだから
or なら期待通りに動作するが || だと動かない、という例があった気がするがどこだったか
0595デフォルトの名無しさん
2008/05/18(日) 23:06:14while print('>>> ')or gets
p eval($_)rescue p $!
end
なんてよく書いてしまう
いやirbでも良いとは思うんだけどねw
0596デフォルトの名無しさん
2008/05/19(月) 00:12:19orは文を作るってところか?
0597デフォルトの名無しさん
2008/05/19(月) 00:44:200598デフォルトの名無しさん
2008/05/19(月) 00:47:36http://www.ruby-lang.org/ja/man/html/_A5D7A5EDA5B0A5E9A5E0.html
>また、メソッドの引数に指定できない式と指定できる式があります(このよう な式
>を「文」と呼び分ける場合があります)。
>メソッドの引数に指定できない式の例
>and, or, not
>if/unless/rescue 修飾式, ...
0599デフォルトの名無しさん
2008/05/19(月) 01:43:01rubyスクリプトをPowerShell上で直接動かすと、
別に、コマンドプロンプトが開いて、そこで実行しちゃうのはなんで?
./hoge.rb で実行すると、コマンドプロンプトが開いてしまう。
ruby hoge.rb だと、ちゃんとPower Shell上で動く。
pythonは
./hoge.py でもちゃんとPower Shell上で動く。
ruby 1.8.6 (2008-03-03 patchlevel 114) [i386-mswin32] と、
ActiveScriptRuby 1.8.6(p114)
で確認。
0600デフォルトの名無しさん
2008/05/19(月) 02:52:02拡張子の関連付けの問題じゃあなかろうか?
0601デフォルトの名無しさん
2008/05/19(月) 04:25:59できるよ。
以上。
はい次の方。
0602デフォルトの名無しさん
2008/05/19(月) 09:09:43ASRインスコフォルダの bin に行って、ruby.batをいじってみんさい
0603デフォルトの名無しさん
2008/05/19(月) 14:18:14puts "hoge_mage-fuoo1.2.3".sub(/^(.+)-.+$/,$1)
というのがirbだとうまくいくのですが、ファイルに書いて実行するとエラーになります。
in `sub': can't convert nil into String (TypeError)
これを解決する代替案はどのようなものがありますでしょうか?
0604デフォルトの名無しさん
2008/05/19(月) 14:21:37ああ、これFAQレベルの質問だ。
自己解決しました。
puts "hoge_mage-fuoo1.2.3".sub(/^(.+)-.+$/,$1)
かブロックで、
puts "hoge_mage-fuoo1.2.3".sub(/^(.+)-.+$/) { $1}
だ。
irbは2回やったから上手くいったんだ。
自分でメモまでしといたのに忘れるとは・・・。
0605デフォルトの名無しさん
2008/05/19(月) 14:22:06> puts "hoge_mage-fuoo1.2.3".sub(/^(.+)-.+$/,$1)
puts "hoge_mage-fuoo1.2.3".sub(/^(.+)-.+$/,'\1')
0606デフォルトの名無しさん
2008/05/19(月) 14:25:36カッコとブレースの間って空白置く派が多いのかな?
){
のほうが個人的には気持ちいいんだけど
0607デフォルトの名無しさん
2008/05/19(月) 17:26:22空白置く派だな。
標準添付のもほとんどそのはず。
0608デフォルトの名無しさん
2008/05/19(月) 17:30:26自前なのか。
修正済のバグかもしれないので、1.8.6-p114とか1.8.7-preview3あたりで確認を。
それでも落ちるようなら、gdbでバックトレースを。
めんどくさいのでできればBTSに。
0609599
2008/05/19(月) 20:07:42環境変数 PATHEXTに.rbが登録されてないせいだった。
.pyはpythonをインストールした時に登録されてたらしい。
PATHEXTに登録されてない場合に、
関連付けでコンソールアプリが実行されると、
コマンドプロンプトが開くのがデフォみたい。
でも、いまいち納得できないな。
どちらにしろ、コマンドプロンプトなんか開く必要無いのに。
0610デフォルトの名無しさん
2008/05/19(月) 20:21:55じき滅ぶよ、きっと
0611デフォルトの名無しさん
2008/05/19(月) 20:32:200612デフォルトの名無しさん
2008/05/19(月) 20:52:050613デフォルトの名無しさん
2008/05/19(月) 21:18:21無くなるときは割とあっという間だと思うよ。多分携帯に駆逐される。
0614デフォルトの名無しさん
2008/05/19(月) 21:30:120615デフォルトの名無しさん
2008/05/19(月) 22:31:090616デフォルトの名無しさん
2008/05/19(月) 23:56:00黒船に駆逐されたからでしょ
0617デフォルトの名無しさん
2008/05/20(火) 10:05:26Windowsに中心が移ったから。
0618デフォルトの名無しさん
2008/05/20(火) 19:28:28代わりにLinuxが台頭するのはちょっと見てみたいとも思う
>>606
俺は空白置かない(くっつける)派
標準ライブラリでは二派に分かれているようだ
(検索したら、空白置いてるファイルが置いてないファイルの二倍ぐらいあった)
0619デフォルトの名無しさん
2008/05/21(水) 09:41:14cygwinやcoLinuxではなくWindows上で直接動かす方法をご存知の方教えていただけるとうれしいです _ _
0620デフォルトの名無しさん
2008/05/21(水) 16:49:380621555
2008/05/21(水) 23:42:24返事が遅くなってすみません。
1.8.6-p114とか1.8.7-preview2 とかをインストールしたのですが
基本的に同じような結果になってしまいます。
>> gdbでバックトレースを。めんどくさいのでできればBTSに。
これはどのようにすればいいのでしょうか?自分なりに調べてみたいのですが
どうすればいいのかよくわかりませんでした。
0622デフォルトの名無しさん
2008/05/21(水) 23:50:56ちなみにmingw版でコンパイルしたsoはmswin32でもそのまま使える
(libの下のso入れるとこに突っ込めばおk)
0623デフォルトの名無しさん
2008/05/23(金) 20:57:12は、初心者に勧められる入門書ですか?
購入なさった人、情報を持っている方など
感想等お願いします。
0624デフォルトの名無しさん
2008/05/23(金) 21:03:06http://www1.tf.chiba-u.jp/~shin/tutorial/index.rb
Ruby初心者には、他の言語の習熟レベルにもよるけど、
たのしいRubyかプログラミングRubyがいいんじゃないかな。
# その本の批評じゃなくてごめんね。
# 漏れは秀和ということだけで毛嫌いしちゃう
0625デフォルトの名無しさん
2008/05/23(金) 21:12:50別に気にしなくていいんだけど、
立ち読みは表紙のイメージで記憶してるので書名で言われてもぶっちゃけ覚えてねー
ttp://www.amazon.co.jp/dp/4798019291
で、これな
「何が何でもとにかく『たのしいRuby第2版』との差額900円が惜しい人向け」
だ
900円がないと明日家賃が払えないけど
Rubyの本を何か持ってないと明後日異界に連れ去られてしまうとかそういう人向け
0626デフォルトの名無しさん
2008/05/23(金) 21:13:420627デフォルトの名無しさん
2008/05/23(金) 21:23:38ttp://ftp2.shuwasystem.co.jp/pub/book/1929/sample-list.txt
……うーん…
0628デフォルトの名無しさん
2008/05/23(金) 21:35:17RubyではgetEuroなんてまず書かない。
多分、to_euroとか
0629デフォルトの名無しさん
2008/05/23(金) 21:40:56あそこの本は、よそで出てないネタを押さえてる本は買う価値があるが、
よそで出てるネタの本は微妙な出来のことが多いな。
0630デフォルトの名無しさん
2008/05/23(金) 21:46:28とりあえずcaseのインデントが気持ち悪すぎる
0631デフォルトの名無しさん
2008/05/23(金) 21:48:42> Javaっぽい
なかなか鋭い
ttp://www.amazon.co.jp/s/ref=sr_st?__mk_ja_JP=%83J%83%5E%83J%83i&rh=n%3A465610%2Cp_27%3A%8F%B6%93c
0632デフォルトの名無しさん
2008/05/23(金) 21:53:50ftp://ftp2.shuwasystem.co.jp/pub/book/1929/sample-list.txt
ってftpかよ!
まあいいけど
0633デフォルトの名無しさん
2008/05/23(金) 21:57:31めんどくさいから
0634デフォルトの名無しさん
2008/05/23(金) 22:01:41やはりJava・・・・・・・なのか?
入門書ばっかり
しかも売上が微妙なのかレビューがほとんどついてないのばっかりか
0635デフォルトの名無しさん
2008/05/23(金) 22:02:31サポートサイトのエラッタを見ても頭ひとつ抜けてる感じだ
無理やり難点を挙げるなら熱さやユーモアに欠けるぐらいか
0636デフォルトの名無しさん
2008/05/23(金) 22:07:59『たのしいRuby第2版』
し
か
な
い
というのが現実
スレ的には面倒がないが、言語普及的には好ましい状態ではない
0637デフォルトの名無しさん
2008/05/23(金) 22:09:58Rubyの書籍は売れないから出しません、というような状況になるのはまずい
0638623
2008/05/23(金) 22:23:55『たのしいRuby第2版』の情報等も参考にさせていただきます。
0639デフォルトの名無しさん
2008/05/23(金) 22:26:180640デフォルトの名無しさん
2008/05/23(金) 22:37:12ttp://www.amazon.co.jp/dp/4798019437/
これは、読んだ限りではまあ、うん、まあ、同価格帯で勝負するだけはあるなって感じはするが
目次はここ
ttp://www.shuwasystem.co.jp/products/7980html/1943.html
0641デフォルトの名無しさん
2008/05/24(土) 10:10:42長々と内容まで出力してくれるのですが、ppで出力すると
#<Amazon::AWS::AWSObject:0x2f82e04 ...>としか出力されません。
ppで整形した内容まで出力してくれるようにするにはどうしたらいいのでしょうか?
0642デフォルトの名無しさん
2008/05/24(土) 10:46:40今こそソース読んでステップアップするとき
pp.rb を読むんだ
0643デフォルトの名無しさん
2008/05/24(土) 16:31:140644デフォルトの名無しさん
2008/05/24(土) 17:14:05そういう目的のためのwin32OLE。
あまり使ったこと無いので、使いやすいのか知らんけど
0645デフォルトの名無しさん
2008/05/24(土) 17:38:16るびまは読んだんだけどなー
0646デフォルトの名無しさん
2008/05/24(土) 19:10:13あとはWSHの話じゃないか?
0647デフォルトの名無しさん
2008/05/24(土) 19:24:370648デフォルトの名無しさん
2008/05/24(土) 20:10:56Rubyから呼ぶ必要があるかどうかは知らんけど。
0649デフォルトの名無しさん
2008/05/24(土) 20:29:03単純にWindowsプログラミングの話になってしまう
0650デフォルトの名無しさん
2008/05/24(土) 20:30:49本質的には system() で外部コマンド呼んでるだけだからねえ…
どんなときにどんなコマンドを呼び出すべきかってのはRuby関係ないわな…
0651643
2008/05/24(土) 20:43:37conn = WIN32OLE.new("ADODB.Connection") 以降はvbaと同じっぽいのでなんとかやれそう
0652デフォルトの名無しさん
2008/05/25(日) 01:36:18require 'open-uri'
uri = URI.parse("ftp://hogehoge.com/bar/")
uri.user = 'foo'
uri.password = "fu/ha"
でエラー。uri/generic.rb の USERINFO(Regexp) が
/^(?:[-_.!~*'()a-zA-Z\d;:&=+$,]|%[a-fA-F\d]{2})*$/n
になっているのが原因で パスワードに '/' を含む事が出来ない。
URI.escape(password) をしても '/' はエンコードされず。
何か策はないでしょうか? (パスワードは変更できない)
open(uri) の uri にパスワードを含めれないのか?
net/ftp を使えばログイン出来るのだが、やりたいのは、
Pathname を使って ディレクトリを掘りながら put をしたい。
0653デフォルトの名無しさん
2008/05/25(日) 01:54:51とか
0654デフォルトの名無しさん
2008/05/25(日) 02:11:13自前で書き換えるしかないわ
スラッシュって含むことできたっけ?
0656652
2008/05/25(日) 02:57:43ディレクトリは扱えないのか。
失礼しました。
0657デフォルトの名無しさん
2008/05/25(日) 04:48:04http://mamono.2ch.net/test/read.cgi/newsplus/1211364904/
0658デフォルトの名無しさん
2008/05/25(日) 15:24:45#!/usr/local/bin/ruby
print "Content-type: text/html\n\n"
print "<html><body>Hello World</body></html>"
この内容の.cgiファイルを
http://land.to/newshiyou.php
このレンタルサーバーにアップしたのですが。
500内部サーバエラーになってしまいます。
なぜなのでしょうか?どうすれば動かせるのでしょうか?
回答よろしくお願いします。
0659デフォルトの名無しさん
2008/05/25(日) 15:35:52おしえてエロイひと
c:/ruby/lib/ruby/1.8/xmlrpc/parser.rb:152:in `fault': wrong fault-structure: {"f
aultCode"=>"Client", "faultString"=>"Application failed during request deseriali
zation: \nnot well-formed (invalid token) at line 6, column 345, byte 3640 at /h
ome/seesaa/cpan/lib/i686-linux-thread-multi/XML/Parser.pm line 187\n"} (RuntimeE
rror)
0660デフォルトの名無しさん
2008/05/25(日) 15:52:12文字コードの知識もないspamブロガーさんこんにちは
0661デフォルトの名無しさん
2008/05/25(日) 15:56:29そう見えるよなあ
投稿スクリプトをサンプルとして提供するのは止めたほうがいいと思うぞ
で、まあ、seesaaはShift_JISだったはずなのでShift_JISで送れ
0662デフォルトの名無しさん
2008/05/25(日) 16:07:16CGIファイルのパーミッションを実行可能に変更していないのだと予想
0663658
2008/05/25(日) 16:41:39ありがとうございました。
0664デフォルトの名無しさん
2008/05/25(日) 17:38:53#! ruby -Ks
class Ice
def sizeIce(size)
print(size)
end
end
class IceName < Ice
def initialize(name="未設定")
@iceName = name
end
attr_accessor :iceName
end
class IceSize < Ice
def initialize(size="未設定")
@iceSize = size
end
def sizeIce(size)
super(size)
print("サイズです。\n")
end
attr_accessor :iceSize
end
ice = [IceName.new("メロンソーダ"),IceName.new("レモン&ライム"),IceName.new("スイカバー")]
ice2 = [IceSize.new("中"),IceSize.new("小"),IceSize.new("大")]
for k in 0..ice.size-1
print(k+1,"個目 ",ice[k].iceName,"は",ice2[k].sizeIce(ice2[k].iceSize))
end
0665664
2008/05/25(日) 17:44:59中サイズです。
1個目 メロンソーダはnil小サイズです。
2個目 レモン&ライムはnil大サイズです。
3個目 スイカバーはnil
【表示したい結果】
1個目 メロンソーダは小サイズです。
2個目 レモン&ライムは大サイズです。
3個目 スイカバーは中サイズです。
昨日からrubyの勉強を始めました。
初めてのプログラミングなので、わからないことが多々あり苦戦しております・・・。
上記のプログラムを実行するとエラー等は出ないのですが、表示結果が思い通りになりません。
なぜ一番最初に「中サイズです。」が表示されるのかすら理解できません。
一体どの部分に問題があるのでしょうか?
わかりにくいプログラムだとは思いますが、もしよろしければ回答お願いします。
※このプログラムは、練習目的で作っているのでわざわざ面倒なことをしています。
0666664
2008/05/25(日) 17:46:44【表示したい結果】
1個目 メロンソーダは中サイズです。
2個目 レモン&ライムは小サイズです。
3個目 スイカバーは大サイズです。
でした。すいません。
0667デフォルトの名無しさん
2008/05/25(日) 17:59:29あー、まあいいや
print は引数をその場で画面に表示し、返り値として nil を返す
表示部とデータ部を完全に分けて考えるべき
最終的なデータを最後に print で表示するだけ、という考え方な
Ice.sizeIce で print を使っているのはよくない
0668デフォルトの名無しさん
2008/05/25(日) 18:16:52「アイスの価格」が「アイス」というクラスを継承するはずがない
「アイスの名前」や「アイスの価格」は「アイス」というクラスの変数であるべき
class Ice
def initialize(name=nil, size=nil)
@name = name
@size = name
end
attr_accessor :name, :size
end
data = [
["メロンソーダ","中"],
["レモン&ライム", "小"],
["スイカバー", "大"]
]
products = Array.new
data.each do |a|
products.push(Ice.new(a[0], a[1]))
end
products.each_with_index do |ice, i|
puts "#{i+1}個目 #{ice.name}は#{ice.size}サイズです"
end
0669デフォルトの名無しさん
2008/05/25(日) 18:22:51「価格のあるアイス」とか「サイズのあるアイス」とか「価格とサイズのあるアイス」と
具体化...と考えているのかもしれないが、そういう継承の使い方はあっさり破綻するので
やめたほうがよい。
まずは合言葉「継承は最後の武器だ」かと。
0670デフォルトの名無しさん
2008/05/25(日) 18:34:03k == 0 の時の出力
中サイズです。
1個目 メロンソーダはnil
k == 1 の時の出力(最初の行は↑の行に続けて出力)
小サイズです。
2個目 レモン&ライムはnil
k == 2 の時の出力(は省略)
「?サイズです。」はice2[k].sizeIce(...)メソッド実行時の出力
「?個目 ***はnil」がループ内のprintの出力
最後のnilはice2[k].sizeIce(...)の返却値 # sizeIce(...)最後のprintの返却値
# k== 0 の時 print(1,"個目 ","メロンソーダ","は",nil) になっている
問題は「経験が足りない」事
もっとたくさんソースを書いて実行してデバッグすれ
0671デフォルトの名無しさん
2008/05/25(日) 18:42:30…なんで2種類あるんだ
マニュアルくらいどっちかに統一せえ
0672664
2008/05/25(日) 18:53:18レスありがとうございます。
どうやら自分の言葉足らずだったようです。
現在こちらのサイトさん(http://www.rubylife.jp/index.html)のRuby入門というところを一番上から進めています。
現在は「Rubyオブジェクト指向プログラミング」の「クラスの継承」の部分まで読み終えています。
ひとつの項目が終わるごとに、その項目で覚えたメソッド等を使ってプログラムを作る練習をしているのです。
なので今回は「クラスの継承」「オーバーライド」「super(引数)」の3つを使ったものを作ろうとしていました。
・・・と自分で考えたらあんな感じになってしまったのですが、このような使い方はそもそもおかしいようですね。
色々混ぜすぎて自分でも分けがわからなくなってましたし。
次回からはもっと処理を個別に分けてプログラミングするように心がけます。
クラスの継承は結構重要そうな感じだけど、実際はそこまで実用性があるわけじゃないのかな・・・。
一番最初に「中サイズです。」が出てきてしまう理由や、「nil」が表示される問題などは解決しました。
>>668さんのような配列の書き方は非常にわかりやすい・・・次からはこのように表記したいと思います。
大変わかりやすく解説していただきありがとうございました。
0673デフォルトの名無しさん
2008/05/25(日) 20:35:05クラスの定義の中にたまに、「:」がでてくるんですが、:の意味を教えてください。
たとえば、
Railsだと、「t.string :title」な表現があったり、
インスタンス変数のアクセサを作るときは、「attr_accessor :x, :y」とかしますよね。
この:の意味が掴めないですorz
class CreateArticles < ActiveRecord::Migration
def self.up
create_table :articles do |t|
t.string :title
t.text :description
t.string :image_url
t.decimal :price
t.datetime :date
t.string :vender
t.string :category
t.timestamps
end
end
def self.down
drop_table :articles
end
end
0674デフォルトの名無しさん
2008/05/25(日) 20:41:490675デフォルトの名無しさん
2008/05/25(日) 21:18:50Rubyのメソッド名や変数名は内部的に数値で管理されてる
(2455番目に登録されたメソッド、とかそんな感じで、オブジェクトIDとは別物)
シンボルは、その数値に文字でアクセスすることができる機構だ
結果として、「文字」でメソッド自体を指し示すことができる
普通に foo と書いたら foo メソッドが動いてしまって「foo というメソッド」を指し示すことができない
しかし、そのとき「メソッド foo を示す登録番号」という指定の仕方ができるとしたら、「foo というメソッド」という指定の仕方ができる
腹減ってるので自分でも何書いてるかわからなくなってきた
試しに適当な変数作って、それと同じ名前のシンボルに to_i してみ
それが内部整数値だ
シンボルを id2name するとシンボルに対応する文字列が返る
時々「シンボルを文字列にする」という表現で説明されるがこれは本当は誤り
0676デフォルトの名無しさん
2008/05/25(日) 21:26:03もう遅いかもしれんが
0677デフォルトの名無しさん
2008/05/25(日) 21:31:28>>675
さきほど、rubyの公式にアクセスできたので、FAQ見てたらシンボルということは分かったところで、余計に理解に苦しんでましたが、、、
>>普通に foo と書いたら foo メソッドが動いてしまって「foo というメソッド」を指し示すことができない
>>しかし、そのとき「メソッド foo を示す登録番号」という指定の仕方ができるとしたら、「foo というメソッド」という指定の仕方ができる
神レスありがとうございました!よく分かりました!!
0678デフォルトの名無しさん
2008/05/26(月) 10:28:130679デフォルトの名無しさん
2008/05/26(月) 10:32:270680デフォルトの名無しさん
2008/05/26(月) 17:39:26あのキモいアイドルAAを我慢できればの話だけど。
0681デフォルトの名無しさん
2008/05/26(月) 20:55:34windowsクライアントに配布して利用してもらいたいとき、
クライアントのPCにもRubyをインストールしておかないと
実行できないでしょうか?
0682デフォルトの名無しさん
2008/05/26(月) 21:04:09exerbでぐぐってみるとか。
0683デフォルトの名無しさん
2008/05/26(月) 21:05:540684デフォルトの名無しさん
2008/05/26(月) 21:18:10exerbを利用すればいいのですか。
新しいツールは、勉強もかねてRubyで作ることにします。
さっそく、本を買いに行ってきます。
レスありがとうございました。
0685デフォルトの名無しさん
2008/05/26(月) 21:20:380686デフォルトの名無しさん
2008/05/26(月) 21:26:22渡されたほうも迷惑だからそういうことはやるな
0687デフォルトの名無しさん
2008/05/26(月) 21:37:59C#とか?
0688デフォルトの名無しさん
2008/05/26(月) 21:47:19「もともとのGUI対応」
「付け足しのGUI対応」
の区別がつかないらしいんだ、初心者の人
0689デフォルトの名無しさん
2008/05/26(月) 21:55:42まあ、とってつけたGUIシステムで火傷したことがある人ばかりだから不評なんだけどさ
0690デフォルトの名無しさん
2008/05/27(火) 12:27:50まあ仕方ないさ
0691デフォルトの名無しさん
2008/05/27(火) 13:10:52ttp://raa.ruby-lang.org/project/ghdghdgh/
0692デフォルトの名無しさん
2008/05/27(火) 15:14:16どうしたらイイですか?
0693デフォルトの名無しさん
2008/05/27(火) 15:19:21改行すればいいじゃん?
バックスラッシュ \ を使えば改行を隠すことができる
他にも「区切れのいいところ」で普通に改行することもできるが、
このへんは他の人のスクリプトを読んで参考にするといい
0694デフォルトの名無しさん
2008/05/27(火) 18:00:060695デフォルトの名無しさん
2008/05/27(火) 18:09:56動的に定義されて動的に実行されるメソッドの8割は本当は静的でもなんとかなる
0696デフォルトの名無しさん
2008/05/27(火) 21:56:330697デフォルトの名無しさん
2008/05/27(火) 22:02:040698デフォルトの名無しさん
2008/05/30(金) 17:13:30ttp://www.amazon.co.jp/dp/4844325795/
…endの連続はLispの閉じカッコの連続っぽくね?というのは
それはそれでヒドいと思う
現時点でのRubyの紙媒体のまとまった情報が欲しい人向け
スレ的にはちと情報が重いか
0699デフォルトの名無しさん
2008/05/30(金) 17:37:440700デフォルトの名無しさん
2008/05/30(金) 18:24:17とファイルの先頭に書いて実行すると、
env: ruby -Ku: No such file or directory
と言われてしまいます。
envで-Kuをつけたいのですが、
言われないようにする方法はどのようなものがありますでしょうか?
環境は FreeBSD 6.1-RELEASE-p23 です。
0701デフォルトの名無しさん
2008/05/30(金) 18:52:34env コマンドは複数の引数をうまく受け取ることを期待できないし、環境によっても動作が違う
たとえば、その記述は同じ FreeBSD の 5.x では期待通りに動作する
0702デフォルトの名無しさん
2008/05/30(金) 18:56:330703デフォルトの名無しさん
2008/05/30(金) 18:59:33#!/usr/local/bin/ruby -Ku
と書くこと
ダウンロードして即実行できないことについて文句言う的外れのアホは無視
実行するスクリプト内容を確認しないような人間をユーザーに引き込むと後々癌になるぞ
で、自前で複数環境で使いたい、という場合が問題なんだが
0704デフォルトの名無しさん
2008/05/30(金) 19:20:38shebang行(#! で始まる)に渡せる引数は1つ、という実装が多いから無難なのは、
#!/usr/bin/env ruby
$KCODE='u'
0705デフォルトの名無しさん
2008/05/30(金) 19:32:52ちなみに Ruby1.9 ではカレーとウンコが同じになった
0706デフォルトの名無しさん
2008/05/30(金) 19:37:32あれ? $KCODEは無視されるんじゃなかったか?
0707デフォルトの名無しさん
2008/05/30(金) 19:45:49値を参照しても代入しても常に nil という頑なな感じの動作
0708デフォルトの名無しさん
2008/05/30(金) 19:48:01end
end
end
))))
0709700
2008/05/31(土) 04:50:05解決法
・フルパスでrubyのパス記述 >>703
・$KCODEで指定 >>704
パス関係なくするためにenvにしたかったけど、意味ないなあw
ところで、$KCODEで指定する場合は、
ファイルが本当にUTF-8の文字列(例えば日本語)を含んでいても大丈夫なんでしょうか?
0710デフォルトの名無しさん
2008/05/31(土) 06:05:040711デフォルトの名無しさん
2008/05/31(土) 06:11:40普通に喜ばれたけどw
0712700
2008/05/31(土) 06:33:23ありがとうございます。
では、ちょっとずれてくるのですが、>>705の
> ruby -Ku と $KCODE='u' はカレーとウンコくらい違う
というのはどういう違いなのでしょうか?
どこかに簡単な解説などないでしょうか?
0713700
2008/05/31(土) 06:34:05といった理由からです。
0714デフォルトの名無しさん
2008/05/31(土) 09:00:31大丈夫じゃない場合がある
リファレンスマニュアルにも記述があるけど
$KCODEの指定が効いてくるのは、$KCODEへの代入が実行された後なので
最初に読むファイルに日本語が含まれていると、パースエラーになることがある
詳しくはFAQの10.2
ttp://www.ruby-lang.org/ja/man/html/FAQ_C6FCCBDCB8ECA4CEBCE8A4EAB0B7A4A4.html
0715デフォルトの名無しさん
2008/05/31(土) 13:57:32EUC-JPはUTF-8にはそういう性質はない。
-Kを指定してあれば日本語を識別子に使うこともできるが$KCODEでは無理
という違いもあるが、それは正直お薦めしない。
ちなみに-Kは1.9でもきくが、マジックコメントのほうが推奨。
#!/usr/local/bin/ruby
# -*- encoding: ut-f8 -*-
0716デフォルトの名無しさん
2008/05/31(土) 20:25:40# -*- coding: utf-8 -*-
0717デフォルトの名無しさん
2008/05/31(土) 23:56:120718デフォルトの名無しさん
2008/06/01(日) 00:12:49誰か間違えてそうでありそうで無いな
0719デフォルトの名無しさん
2008/06/01(日) 00:17:31http://www.amazon.co.jp/dp/4894714531
で、次に何かRuby買ってみようと探してみて
http://www.amazon.co.jp/dp/4274066428/
これが本屋さんあったけど・・・
上のと同じ本?
0720デフォルトの名無しさん
2008/06/01(日) 01:07:130721デフォルトの名無しさん
2008/06/01(日) 01:28:02どうすれば動くようになりますか?
apache -t
apache: Syntax error on line ??? of C:/〜〜/httpd.conf: Cannot load
C:/〜〜/modules/mod_ruby.so into server: \x8ew\x92\xe8\x82\xb3\x82\xea\
x82\xbd\x83v\x83\x8d\x83V\x81[\x83W\x83\x83\x82\xaa\x8c\xa9\x82\xc2\x82\xa9\x82\
xe8\x82\xdc\x82\xb9\x82\xf1\x81B
環境
Windows Vista
Apache2.2.8
0722デフォルトの名無しさん
2008/06/01(日) 09:52:04あなたの頭とOSが腐ってるのが原因ですね。
頭のほうはもう手遅れなので、OSの方をdebianなどに変えてmod_rubyを
apt-get一発でインストールすればどんな馬鹿でも使えるようになります。
0723デフォルトの名無しさん
2008/06/01(日) 10:07:23〃∩ ∧_∧
⊂⌒( ・ω・) はいはいわろすわろす
`ヽ_っ⌒/⌒c
⌒ ⌒
0724デフォルトの名無しさん
2008/06/01(日) 12:35:47「指定されたプロシージャが見つかりません。」
と書いてあるようだな。
mod_ruby 指定されたプロシージャが見つかりません。
でぐぐるとわかるかもよ。
0725デフォルトの名無しさん
2008/06/01(日) 14:24:14http://www.google.com/search?num=50&hl=ja&q=mod_ruby+%E6%8C%87%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%9F%E3%83%97%E3%83%AD%E3%82%B7%E3%83%BC%E3%82%B8%E3%83%A3%E3%81%8C%E8%A6%8B%E3%81%A4%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93&lr=lang_ja
ググったけどわかりません
0726デフォルトの名無しさん
2008/06/03(火) 16:52:27宜しくお願いします!
0727デフォルトの名無しさん
2008/06/03(火) 19:45:03__FILE__
0728デフォルトの名無しさん
2008/06/06(金) 21:02:520729デフォルトの名無しさん
2008/06/06(金) 21:08:17君には必要ないよ
必要のないものに固執する必要はない
楽になるといい
0730デフォルトの名無しさん
2008/06/06(金) 21:34:52Project Euler とかお勧め。
0731デフォルトの名無しさん
2008/06/06(金) 22:17:55Ruby関係ないというかRubyでやるくらいならSchemeかPythonかC++でやる。
0732デフォルトの名無しさん
2008/06/06(金) 23:30:06別にこだわりはないな。
0733デフォルトの名無しさん
2008/06/07(土) 00:15:090734デフォルトの名無しさん
2008/06/07(土) 01:05:15Rubyに早くなれたかったらUnixかLinux使いえばいい。シェル操作が日常に
なれば、ごちゃごちゃしたものをスクリプトで一気になにかするのが快感になるはず。
0735デフォルトの名無しさん
2008/06/07(土) 02:29:00しょぼいコマンドプロンプトの補助としては優秀
0736デフォルトの名無しさん
2008/06/07(土) 13:07:20unixではシェル書くのがいやになったころから
0737デフォルトの名無しさん
2008/06/07(土) 13:08:080738デフォルトの名無しさん
2008/06/07(土) 13:12:37文字列を取り出すにはどのようにすれば良いですか
^<.*>$まではわかったのですが
<br>のように直前に文字列が存在するタグはとりだせないのです
f = open(ARGV[0].to_s)
while line = f.gets
if /^<.*>$/ =~ line
puts line
end
end
f.close
よろしくお願いします。
0739デフォルトの名無しさん
2008/06/07(土) 13:15:03さらに、.*だと欲張りマッチ(可能な限り長い対象にマッチ)になるので、
<h1>....</h1>に遭遇したときに全体にマッチしてしまう。
これを避けるためには、?を後ろに付けた .*?(欲張りでないマッチ)を使う。
0740デフォルトの名無しさん
2008/06/07(土) 13:18:05ありがとうございます。
しかもアドバイスまで
ありがとうございます
0741デフォルトの名無しさん
2008/06/07(土) 13:20:11ああ〜テストしてみた所
a<html>
とかが表示されてしまいました
こうではなくて
a<html>とかの行からも
<htm>だけきりだしたいのですが・・・・
0742デフォルトの名無しさん
2008/06/07(土) 13:28:58/(<.*?>)/ でマッチした後、$1というグローバル変数に<html>とか入ってるはず。
0743デフォルトの名無しさん
2008/06/07(土) 13:32:35もちろん学習用としてなら意味はあるけど
>>741
行全体(line)をそのまま表示しようとしているのが原因
マッチした部分($&)だけを表示させるようにするか
もしくは742の言うとおり、括弧と$1を使う必要がある
さらに言うと、そのスクリプトだと一行で一つのhtmlタグしか切り出せない
全てのhtmlタグを切り出すには、もう少し変更が必要
0744デフォルトの名無しさん
2008/06/07(土) 13:34:16マッチした部分を取り出す、ということは違う
方法はいくつかあるが、概念的にめんどくさくないのは文字列に対してscanを使うこと
"a<html>b".scan(/<.+?>/){|match|
p match
}
結果:
"<html>"
0745デフォルトの名無しさん
2008/06/07(土) 13:41:27まとめるとどのようになるのでしょうか
最終的には
htmlファイルを指定すると
そのページ内に存在するファイルを
音楽、動画、画像などに仕分けして
そのURLをファイルに書き込んでくれてwgetなどで簡単にダウンロードできるようにしたいんです。
0746デフォルトの名無しさん
2008/06/07(土) 13:46:14<a href> で表記されたリンクをすべて抽出してアクセスして適当に保存までしてくれる
ネット上にあるページではないローカルにあるHTMLファイルを読み込まなければならない場合若干面倒だが
0747デフォルトの名無しさん
2008/06/07(土) 13:47:58リンク咲の拡張子なりで分類するとか
0748デフォルトの名無しさん
2008/06/07(土) 13:52:15scanのマニュアルとか読んでくれたか?
文字列.scan(/タグ抽出/){|タグ変数1|
タグ変数1.scan(/httpで始まる半角文字列/){|URLっぽいもの|
動画URL一覧配列.push(URLっぽいもの) if URLっぽいもの =~ /動画拡張子/
画像URL一覧配列.push(URLっぽいもの) if URLっぽいもの =~ /画像拡張子/
音楽URL一覧配列.push(URLっぽいもの) if URLっぽいもの =~ /音楽拡張子/
}
}
File.open('動画.txt','w'){|f| f.puts 動画URL一覧配列}
File.open('画像.txt','w'){|f| f.puts 画像URL一覧配列}
File.open('音楽.txt','w'){|f| f.puts 音楽URL一覧配列}
0749デフォルトの名無しさん
2008/06/07(土) 13:55:11そういうのが有ったんですね・・・・
なんだか自分が最初のアイデアって今では出せないんじゃないかって
最近思ってるんですよね。
何かアドバイスになる言葉を教えてください。
小学生の頃からプログラミングしていた根っからのプログラミング好きに
慰めの言葉を
0750デフォルトの名無しさん
2008/06/07(土) 13:55:19require 'hpricot'
require 'open-uri'
doc = Hpricot(open(URL) {|o| o.read})
puts (doc / 'a').map {|a| a['href']}
0751デフォルトの名無しさん
2008/06/07(土) 14:01:18なんとなくだが、外部ライブラリを利用するための基礎的知識もまだ危ういように見える
便利ライブラリはもうちょい納得してから使え
0752デフォルトの名無しさん
2008/06/07(土) 14:02:22いいんじゃにゃいかな。そりゃ業務的には正解だけど、たぶん牛刀割鶏になってるよ。
0753デフォルトの名無しさん
2008/06/07(土) 14:09:36「自力でゼロからまたアレやるのめっちゃ面倒だ」
という認識があるからなんだよな
「面倒なアレ」という経験が無いうちから使うと後々悲惨な結果に
苦労は初心者のうちにしておくとよいと思う
0754デフォルトの名無しさん
2008/06/07(土) 14:24:140755デフォルトの名無しさん
2008/06/07(土) 16:33:14html = File.read('page.html')
html.scan(/<(.*?)>/) { p $1 }
と
>>750
の両方。
もちろん違う人が教えてもいい。
0756デフォルトの名無しさん
2008/06/07(土) 16:33:300757デフォルトの名無しさん
2008/06/07(土) 17:38:20試しに以下のスクリプトでテストしてみました。
ファイルをSJIS保存 puts '能' => unterminated string meets end of file
ファイルをUTF8保存 puts '能' => '閭ス'
となってしまいます。
どうすれば扱えるのでしょうか?
どなたか本気でお願いします。
0758デフォルトの名無しさん
2008/06/07(土) 17:51:51UTF-8 の場合は ruby -Ku hoge.rb で起動
0759デフォルトの名無しさん
2008/06/07(土) 20:40:06rubyは基本的に、何も指定しないと日本語を正しく扱えない
詳しくはリファレンスマニュアル(もしくは書籍)を読め
0760757
2008/06/07(土) 21:39:01無事に出力&正規表現が実行できました。
ファイル毎に記述する癖をつけます!
0761デフォルトの名無しさん
2008/06/07(土) 22:46:14文字列がかえるので split().join と同じだと考えていたのですが
どうにも違うようですし調べてもでてこないし
リファレンス(コードでもいいので)ご存知のかたいたらおねがいします
0762デフォルトの名無しさん
2008/06/07(土) 22:48:02いたら同様に示唆していただけたらありがたいです
ruby 二日目であほなこといっていたらごめんなさい
0763デフォルトの名無しさん
2008/06/07(土) 23:06:41split().join, 1while ともども簡単なコードも付けてくれると答えやすいかも
あるいはどこに書いてあったとか
0764デフォルトの名無しさん
2008/06/07(土) 23:11:34正直、Ruby の引数展開の * はあまり好きではない
あれは Ruby として明示的なメソッドであるべきだと思う
んで、引数の配列の直後に * をつけると展開して引数に渡される
arr = [1, 2, 3]
hoge(arr*)
は
hoge(1, 2, 3)
と同じ動作だ
文字列を split した結果の配列が展開されて渡されてるということだな
split は引数を省略すると空白で分割して配列を返すから
hoge('1 2 3'.split*)
は
hoge(1, 2, 3)
と同じ
正直、あまり明快な記述とは思えないので、自分から使うのは避けたほうがよい
0765デフォルトの名無しさん
2008/06/07(土) 23:23:51>>763
ゴルフコードでよくみたのでこれなんだろーなっていう
shinh さんのとこから
tree = '(Root (Spine (Neck (Head)) (RClavicle (RUpperArm (RLowerArm (RHand)))) (LClavicle (LUpperArm (LLowerArm (LHand))))) (RHip (RUpperLeg (RLowerLeg (RFoot)))) (LHip (LUpperLeg (LLowerLeg (LFoot)))))'
tree.scan(/ \((\w+)/){puts"#$+ . #{a=$`.split*'';1while a.sub!(/\(\w+\)/,'');a[/\w+$/]}"}
ってなかんじで 1while はブロックをともなわない構文なのかなと perl と同じ
と思っていました while gets; end -> 1while gets でできるかんじ?
で split* があるのかなと考えたのは
>> "abcd".split*''
=> "abcd"
>> "abcd".split* ''
=> "abcd"
>> "abcd".split*('')
=> "abcd"
>> "a bcd".split*('')
=> "abcd"
>> "a bc d".split*('')
=> "abcd"
>> "a bc d".split*(',')
=> "a,bc,d"
>> "a bc d".split('')
=> ["a", " ", " ", " ", "b", "c", " ", "d"]
>> "a bc d".split('')
で返り値が array ではなく string なので引数展開ではないのかなーと
考えています
0766デフォルトの名無しさん
2008/06/07(土) 23:25:26hoge(*arr)
あと、配列 * s が 配列.join(s) と同じ動作になるのは s が文字列だったときだけだぞ
s が整数だったときには単に繰り返される
だから、to_s や to_i が乱れ飛ぶ初心者のスクリプトでは紛らわしいから使ったら駄目
というか、そもそも紛らわしいから素直に join 使え
0767デフォルトの名無しさん
2008/06/07(土) 23:36:091whileはrubyの標準にはない。たぶんコードゴルフ用の拡張
ついでに言うと、初心者がコードゴルフを参考にするのは薦められない
あれは一般的に美しくない(分かりにくい)書き方が多いから
0768デフォルトの名無しさん
2008/06/07(土) 23:47:03違ってたらごめんね
>> "abcd".split() * ''
=> "abcd"
>> print 1while true
1111111111111
>> while true; print 1; end
1111111111111
0769デフォルトの名無しさん
2008/06/07(土) 23:57:22ruby のコードながめていたらおっしゃる通りだと思いました
1while でも 1 while でも同じことで kWHILE のみしかなかったでした orz
1 while() { ...} なども添付コードにあったので変態的な構文解析だなぁと
split() もそうだとおもいます
>> a="a b cd".split()
=> ["a", "b", "cd"]
>> a *''
=> "abcd"
>> a *'abc'
=> "aabcbabccd"
>> a.*'abc'
=> "aabcbabccd"
>> a.*''
=> "abcd"
コメントみなさんありがとうございました
0770デフォルトの名無しさん
2008/06/08(日) 00:00:25http://www.ruby-lang.org/ja/man/html/Array.html#self.20.2a.20times
ですね ありがとうです
0771デフォルトの名無しさん
2008/06/10(火) 00:03:39そのシステムはEUC_JPしか受け取れないため、他のエンコードを使用しようとした場合は変換したいと考えています
ですがRuby1.6時代のKconvではUTF-8→EUC_JP変換ができません
そこで質問なのですが
・Kconvに限ってRuby1.8のクラスファイルを利用する、などといったことは可能ですか?
・指定ファイルはRuby1.6、それ以外はRuby1.8というようにクラス/ファイル別にインタプリタを指定して実行することはできますか?
現在は一時ファイルに実行結果を書きとめておくことで疑似的に実現していますが、よりスマートな方法がありましたらご教示願います
0772デフォルトの名無しさん
2008/06/10(火) 00:12:05よしだむ氏のuconvを使ってみるとか。
0773デフォルトの名無しさん
2008/06/10(火) 00:15:53というか、1.8で動かない上に書き換えも面倒な1.6のスクリプトって重症だなあ
マニアさんが書いたようなスクリプトですかね
0774デフォルトの名無しさん
2008/06/10(火) 00:28:321.6で完全に動いてるならそのまま使いたいとこだろう
Uconv試すのが一番だと思うぜ
0775デフォルトの名無しさん
2008/06/10(火) 00:30:55Kconvの中の人がやってることは同じだし
一時ファイル使ってる現状とほとんど変わらないような気もするけどな
0776771
2008/06/10(火) 08:29:09Uconvの使用が一般的な方法のようですので、まずはこの方法でやってみたいと思います
0777デフォルトの名無しさん
2008/06/10(火) 17:34:19エラーは出ないのですが、test.rb内に記述された関数群が利用できずにエラーとなります。
この拡張子でのrequireは無理なのでしょうか?
もしそうであれば、どのようにファイル分けをすればよいのでしょうか?
よろしくお願いします。
0778デフォルトの名無しさん
2008/06/10(火) 17:52:540779デフォルトの名無しさん
2008/06/10(火) 18:02:070780デフォルトの名無しさん
2008/06/10(火) 19:00:070781デフォルトの名無しさん
2008/06/10(火) 19:12:570782デフォルトの名無しさん
2008/06/10(火) 21:37:07オブジェクトが目的のメソッドを持っているかどうかの責任は、
プログラマにあるということでしょうか?
0783デフォルトの名無しさん
2008/06/10(火) 21:39:05「ユーザー」と「プログラマー」の間が曖昧なんだよね
0784デフォルトの名無しさん
2008/06/11(水) 10:33:420785デフォルトの名無しさん
2008/06/11(水) 10:59:33洗剤か
0786デフォルトの名無しさん
2008/06/11(水) 12:05:00現在CentOS4.5上で下記のパッケージでRubyを動作させております。
ruby-1.8.5-1.el4.centos
ruby-docs-1.8.5-1.el4.centos
ruby-libs-1.8.5-1.el4.centos
ruby-irb-1.8.5-1.el4.centos
ruby-devel-1.8.5-1.el4.centos
ruby-ri-1.8.5-1.el4.centos
ruby-rdoc-1.8.5-1.el4.centos
ruby-tcltk-1.8.5-1.el4.centos
今回Rubyのバージョンを1.8.6へあげたいと考えておりますが下記の
エラーに遭遇してしまい検索してみた物の./configureが出来ない状
態です。。
【エラー】
checking for C compiler default output file name...
configure: error: C compiler cannot create executables
See `config.log' for more details.
〜続く〜
0787786
2008/06/11(水) 12:06:09gcc version 3.4.6 20060404 (Red Hat 3.4.6-9)
configure:2530: $? = 0
configure:2537: gcc -V >&5
gcc: `-V' option must have argument
configure:2540: $? = 1
configure:2563: checking for C compiler default output file name
configure:2590: gcc conftest.c >&5
/lib/libc.so.6: undefined reference to `_dl_out_of_memory@GLIBC_PRIVATE'
collect2: ld returned 1 exit status
configure:2593: $? = 1
configure:2631: result:
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define USE_BUILTIN_FRAME_ADDRESS 1
| /* end confdefs.h. */
|
| int
| main ()
| {
|
| ;
| return 0;
| }
configure:2638: error: C compiler cannot create executables
See `config.log' for more details.
0788786
2008/06/11(水) 12:08:41compat-libgcc-296-2.96-132.7.2
compat-gcc-32-3.2.3-47.3
gcc-3.4.6-9
gcc-g77-3.4.6-9
gcc4-c++-4.1.2-14.EL4
gcc-objc-3.4.6-9
gcc-gnat-3.4.6-9
compat-gcc-32-c++-3.2.3-47.3
libgcc-3.4.6-9
gcc-java-3.4.6-9
gcc-c++-3.4.6-9
gcc4-4.1.2-14.EL4
gcc4-gfortran-4.1.2-14.EL4
gcc4-java-4.1.2-14.EL4
2日程格闘中ですが、お手上げ状態に近づいて来ました。。。
RPMで1.8.6があればいいのですが該当するものも無いため
今回tarからrpmをcheckinstallで作成しようと考えてお
ります。。
0789デフォルトの名無しさん
2008/06/11(水) 13:28:15に書いてあるがな。GNU libcの
`_dl_out_of_memory@GLIBC_PRIVATE'
がないんだろ。glibcを入れ直してldconfigしてみろ
0790786
2008/06/11(水) 13:46:57助言有り難う御座います。glibc関連を弄るのは初めて
なので依存関係でしくじる気が凄くしますが取り敢えず
調べてやってみます。
0791デフォルトの名無しさん
2008/06/11(水) 16:56:35ttp://www.oreilly.co.jp/books/9784873113678/
> 本書を最後まで読めば、「Rubyリファレンスマニュアル」を自在に読みこなし多様なRubyライブラリを活用して、
> 自力で高度なRubyプログラミングを習得するだけの基礎知識が手に入るでしょう。
> Ruby1.8及び1.9に対応しています。
( ^ω^)おっおっおっ
0792デフォルトの名無しさん
2008/06/11(水) 17:02:160793デフォルトの名無しさん
2008/06/11(水) 17:14:19>他言語でのプログラミング経験を持つ人を対象に
なるほど。エッセンス部分だけ凝縮することに成功すれば
あるいは・・・・・・
0794デフォルトの名無しさん
2008/06/11(水) 17:17:59現状、9割くらいの人はオンラインのリファレンスマニュアル読んでるからな
というか、リファレンスマニュアル自体にマニュアルの読み方の解説がないというのが情けない
0795デフォルトの名無しさん
2008/06/11(水) 17:19:59これ目次ね
ttp://www.oreilly.co.jp/books/9784873113678/toc.html
0796デフォルトの名無しさん
2008/06/11(水) 19:21:21最近のオライリーはどうなってるんだ,あれこれ安すぎるw
0797デフォルトの名無しさん
2008/06/11(水) 19:42:21そんな風に考えていた時期が僕にもありました・・・
0798デフォルトの名無しさん
2008/06/11(水) 19:58:370799デフォルトの名無しさん
2008/06/11(水) 20:58:19質が落ちたから
0800デフォルトの名無しさん
2008/06/11(水) 22:33:03当然のようにFlanagan x Matz本出してくるかと思ってたが
マニングのMinimal Perlがオラから出てたりとかなんかカオスだな
0801高野光弘問題
2008/06/11(水) 23:58:28自身の『32nd diary』で公然と日立の機密を開示し、障害者差別発言をしている問題。
1981年11月12日 千葉県のディズニーランドのそばで誕生
2001年4月1日 千葉大学に入学
2005年4月1日 千葉大学大学院へ進学、日本UNIXユーザ会に入会
2007年4月1日 日立製作所に入社、神奈川県秦野市の寮へ
2007年8月22日 「ついに職場で人が倒れた」と公表
2007年11月13日 「情報漏えい」を言う上司に「死んだほうがいいよ」と暴言
2007年12月28日 「社内システムクソうんこ」と発言し、仕組みも暴露
2008年5月23日 機密漏洩問題について一応の謝罪
2008年5月26日 「給料泥棒とかうんぬん言われた」と謝罪を忘れて告白
2008年5月27日 「心バキバキ川田くん」と前日の発言者の名前を公言
2008年5月31日 「キチガイ」と日立のユーザーに障害者差別発言を連発
2006年10月27日(日立製作所に入社前に忠告されたこと)
「日記やコメントの投稿日時から勤務時間に業務外のことをしていることが判明」は
某社の某親会社が 2ch で祭られたように、NG です。
6月も勤務時間中に更新し続ける高野光弘君の『32nd diary』にツッコミをどうぞ
0802デフォルトの名無しさん
2008/06/12(木) 04:02:01まだ訊いてないんだが?
0803デフォルトの名無しさん
2008/06/12(木) 04:22:05逆にあらゆる話題がRubyスレに持ち込まれても、身から出た錆だな。
0804デフォルトの名無しさん
2008/06/12(木) 06:59:140805デフォルトの名無しさん
2008/06/12(木) 09:46:01requireじゃダメなの?
0806デフォルトの名無しさん
2008/06/12(木) 10:07:440807デフォルトの名無しさん
2008/06/12(木) 11:17:08Classオブジェクトを名前な文字列とかで引っ張ってくるならModule#const_get
0808デフォルトの名無しさん
2008/06/12(木) 21:39:27たとえば
script = URI("http://host/matz.rb").read
p script #=>
# class Matz
# def hige
# print "じょりじょり"
# end
# end
eval(script)
Matz.new.hige
こんな感じで実現できるんだけど
もっとスマートな方法は用意されてないの?
ファイルには書き出したくない。
0809デフォルトの名無しさん
2008/06/12(木) 21:41:29やりたいのは、現在のコマンドが /usr/bin/ruby なのか /usr/local/bin/ruby なのか
/usr/local/ruby1.9/bin/ruby なのかを知ることです。
0810デフォルトの名無しさん
2008/06/12(木) 21:43:42require の中身は eval だからそれで正しい動作だ
我慢しとけ
0811デフォルトの名無しさん
2008/06/12(木) 21:46:53> require の中身は eval
それは知らなんだ・・・
0812デフォルトの名無しさん
2008/06/12(木) 23:20:56メタ・プログラミングやコード・ジェネレーションを学びたいのですが、
その辺を詳しく扱っている書籍やサイトはないのでしょうか?
ピッケル本とか読みましたけど、なでる程度しか載っていないので・・
0813デフォルトの名無しさん
2008/06/13(金) 01:55:27今は懐かしい256シリーズの無道編でRaccをフィーチャー(というか宣伝)してる。
でも無知な俺は、Raccを本当に活用した例ってRDtoolしか知らない。
Rubyでメタプログラミングなら、強力なevalとmethod_missingで対応するDSLが主流だね。
ActiveRecordなんか、その最たるもの。
Rubyist Magazine -あなたのコードを添削します-
http://jp.rubyist.net/magazine/?0011-CodeReview
DSLについて、一部参考になるかも。
0814デフォルトの名無しさん
2008/06/13(金) 02:34:00http://ola-bini.blogspot.com/2006/09/ruby-metaprogramming-techniques.html
0815デフォルトの名無しさん
2008/06/14(土) 18:53:09以下のようにすると、2と表示してほしいのですが、5と表示されてしまいます。
どこが間違っているのでしょうか?
#ruby -Ku
class Calculator
def initialize
@unit = 5
end
def unit=(value)
@unit = value
end
def run
unit = 2
puts @unit
end
end
Calculator.new.run
0816デフォルトの名無しさん
2008/06/14(土) 18:55:360817デフォルトの名無しさん
2008/06/14(土) 18:55:590818デフォルトの名無しさん
2008/06/14(土) 18:56:17だとうまくいきました
何だこの違い・・・
ほかの言語のプロパティみたいに使っちゃだめなのか
0819デフォルトの名無しさん
2008/06/14(土) 18:59:520820デフォルトの名無しさん
2008/06/14(土) 19:02:42ドキュメントのどこかに記載などありますでしょうか?
しかし、エラーなどでずに実行されるもんで子一時間悩んでしまいました
>>819
セッターを拡張したいときには使えません
あれは最小限のコードで実際のコードでは、最大値のチェックなどしています。
0821デフォルトの名無しさん
2008/06/14(土) 19:04:05試しに attr_writerを使ってみましたが、やはりselfがいりますね・・・。
0822デフォルトの名無しさん
2008/06/14(土) 19:08:52宣言が要らない言語だから、セッターのインスタンス省略すると
ローカル変数への新規代入になるのか orz
0823デフォルトの名無しさん
2008/06/14(土) 19:11:24Ruby以外はどんな言語を使ってるのか教えてくれまいか
ちょっと興味があるんだ
0824デフォルトの名無しさん
2008/06/14(土) 19:17:110825デフォルトの名無しさん
2008/06/14(土) 19:33:13他にはDelphiを長年つこーてました。
Delphiだと属性でなくてプロパティなんですが、
上記コードのような形で問題なく、
selfなしでクラス内でプロパティに代入できます。
静的な言語のせいもあり、変数は宣言しないと使えないです。
0826デフォルトの名無しさん
2008/06/14(土) 20:04:10今度Delphiのコード見かけたら
そこらへんちょっと気にして読んでみるよ
0827デフォルトの名無しさん
2008/06/15(日) 00:03:240828デフォルトの名無しさん
2008/06/15(日) 00:24:460829デフォルトの名無しさん
2008/06/15(日) 00:45:060830デフォルトの名無しさん
2008/06/15(日) 03:02:58> ドキュメントのどこかに記載などありますでしょうか?
一応rubyの落とし穴には書いてあるけど見つけにくいね。
http://www.ruby-lang.org/ja/man/html/trap_A5B9A5B3A1BCA5D7A1A2C0A9B8E6B9BDC2A4.html
attr_xxx もFAQやModuleのリファレンス見ないと分からないし。
まぁリファレンスだからしょうがないか。
入門書ならselfが必要なことも含めてちゃんと書いてあるかも。
0831815
2008/06/15(日) 06:40:18おお、こんなところに記述が
やはりFAQなのですね。
わざわざありがとうございます。
attr_系の説明やサンプルは大概クラス外部からのアクセスのみかかれてますね。
0832デフォルトの名無しさん
2008/06/15(日) 12:41:53a.each{|i|a << a[-1] + a[-2] if a[-1] < 10000}
p a
0833デフォルトの名無しさん
2008/06/15(日) 15:21:02破壊的なメソッド、非破壊的な〜、みたいな表現をよく目にします。
Ruby以前の言語でも同じ概念は存在すると思うのですが、
Rubyにおいて敢えて強調されているのは何故なんでしょうか。
例えば、何か他の言語とは異なった考え方が必要になってくるのでしょうか。
0834デフォルトの名無しさん
2008/06/15(日) 15:24:50NetBeans使ってると、unitは未使用ということでエディタ上に印が付きますね。
0835デフォルトの名無しさん
2008/06/15(日) 16:12:43強調するのは、そりゃ、「2種類」あるからだよ
self を変更するかどうかって重要じゃん
puts させただけでそのオブジェクトがそれ以降文字列になったら悲惨じゃん
0836デフォルトの名無しさん
2008/06/15(日) 16:16:47ねとびんかしこいねねとびん
0837デフォルトの名無しさん
2008/06/15(日) 16:20:09だから、その2種類の違いを他の言語より強調するのは何故か、という質問だろ。
他の言語がどの言語で、本当にそれよりRubyのほうが強調されているのかは俺はわからんが、
ともあれ比較の質問なら、Rubyの意志を比較で回答しないと納得はできんだろう。
0838デフォルトの名無しさん
2008/06/15(日) 16:32:14メソッドへパラメータを渡すとき
配列とオブジェクトは参照渡し(rubyでいう、非破壊的・・の概念にあたる)
プリミティブ型は値渡し(破壊的・・の概念にあたる)
になってる。
ソースを見たとき、
Rubyのように明確になっているとは、ちょっといえないかもね。
Cだと、ポインタかどうかで判断する。
どうしてRubyはその辺を強調してるかだけど、
自由度が高いからじゃないかな?
上のJavaの例でいうと、参照渡しした元のオブジェクトを呼び出し先から
操作することは、Javaでは出来ない。
Rubyではその辺を任意にできる操作できるようにしたかったから、
出来る場合と出来ない場合を明確に表記して、わかりやすくしたかったのではないかと
推察します。
0839デフォルトの名無しさん
2008/06/15(日) 16:38:16>上のJavaの例でいうと、参照渡しした元のオブジェクトを呼び出し先から
>操作することは、Javaでは出来ない。
上のJavaの例でいうと、値渡しした元のプリミティブ型を呼び出し先から
操作することは、Javaでは出来ない。
の間違い。
失礼しました。
参照渡し>>元のオブジェクトのリファレンス(アドレス、ポインタ)を渡す。(破壊的)
値渡し>>元のデータのコピーを渡す。(非破壊的)
です。
混乱させるような、書き込みをしてすみません。
0840デフォルトの名無しさん
2008/06/15(日) 16:52:41破壊的なのに!とか述語に?をつけるのはschemeからのいただきだろうな。
ただ、単なる慣用だから守ってないライブラリもいっぱいあるし深い意味はないんじゃね?
強いて言えば、識別子に!とか?が使えるってのを強調したかったとか。
C/perl/pythonは出来ないはずだし。
0841デフォルトの名無しさん
2008/06/15(日) 17:11:55Rubyだから特別強調しているというわけではない。
Rubyに限らず、手続き(Rubyの場合メソッドかProcオブジェクト)を実行すると
きに、その手続きを実行する前から存在していたすべてのオブジェクトについ
て
実行後、状態が変化する可能性がある(から注意して使え)のが「破壊的」
実行後、状態が変わらないことを保証するのが「非破壊的」
うまく説明できないけどこんな感じだ。状態が変わらないというのは「同じ」
ということなんだけど、じゃあ「同じ」とは何かというのがなかなか微妙。
だけどこの話を始めるとなが〜くなるから、この辺でやめとくぞ。
>>838,839 はなんか間違って理解してるみたいだぞ
0842デフォルトの名無しさん
2008/06/15(日) 17:36:53rubyの場合、他言語に比べてメソッドチェインの色合いが強いからじゃなか
他言語では戻り値がvoidになるようなものでも、rubyだとself返したりしてるし
0843デフォルトの名無しさん
2008/06/15(日) 17:58:46a = (isTrue?) ? 12 : 47
0844デフォルトの名無しさん
2008/06/15(日) 18:20:21とりあえずJavaに参照渡しはない
プリミティブはもちろん値渡しだが
オブジェクトだって値渡し(参照の値渡し、あるいはcall by share)だ
とかいっても>>839は信じてくれないって俺は知ってるんだ
0845デフォルトの名無しさん
2008/06/15(日) 18:30:360846デフォルトの名無しさん
2008/06/15(日) 18:32:530847デフォルトの名無しさん
2008/06/15(日) 18:42:35単にメソッド名に!が付けられることを自慢したかっただけ。
0848デフォルトの名無しさん
2008/06/15(日) 19:15:36オブジェクト使い捨てることによって生まれたメソッドチェーン主体の手法と、
従来のインスタンスへの変更を区別するためだろう
か
0849デフォルトの名無しさん
2008/06/15(日) 21:30:31確かに、そんな気もしなくは無いですね…
0850デフォルトの名無しさん
2008/06/15(日) 22:04:220851デフォルトの名無しさん
2008/06/15(日) 22:17:38mecabを直に叩くか
mecabのrubyライブラリを使うか
mecabのデータだけを使わせてもらって自分でがんばるか
0852デフォルトの名無しさん
2008/06/15(日) 23:09:39ありがとうございます
(いまさら)環境 ActiveScriptRuby
・mecab for rubyがインストールできなかった
・↓を参考に直叩き
でできました
Windows上のrubyでMeCabをちょっこっと使ってみたい - Programming Must Go On
http://d.hatena.ne.jp/kenkitii/20060705/p1
0853デフォルトの名無しさん
2008/06/16(月) 00:16:14yahooにもそんあ機能あったな
0854デフォルトの名無しさん
2008/06/16(月) 01:10:100855デフォルトの名無しさん
2008/06/16(月) 11:08:26p matchdata.to_a # => ["123"]
["123", "456", "789"]を期待したんですが["123"]でした。
どうしたら["123", "456", "789"]を得られますか?
0856デフォルトの名無しさん
2008/06/16(月) 11:11:340857デフォルトの名無しさん
2008/06/16(月) 11:25:49m = /.+=(\d+);.+=(\d+);.+=(\d+)/.match("foo=123;qoo=456;zoo=789")
puts m[1],m[2],m[3]
結果:
123
456
789
文字列に対して繰り返した結果の配列が欲しい場合は>>856のようにString#scanを使う
scanにブロックを渡した場合は適当に部分マッチ結果が渡る
"foo=123;qoo=456;zoo=789".scan(/\d+/){|m|
puts m
}
結果:
123
456
789
マニュアルのStringとArrayとHashとEnumerableの4つだけは読んでおくといいぞ
0858デフォルトの名無しさん
2008/06/16(月) 11:50:32詳しいところまでありがとうございました。勉強になります。
0859デフォルトの名無しさん
2008/06/16(月) 14:58:20次のような流れで、送信する前に確認画面を設けたいのですが―
フォーム送信(Html)
↓
確認用CGI(Ruby)で処理
↓
確認画面の表示・フォーム送信(Html)
↓
送信用CGI(Ruby)で処理
名前やメールアドレスといった文字列データは、
確認画面を経由させるのに問題ありませんが、
ファイルを添付させた場合、tempfileオブジェクトをどのように経由させればよいかわかりません。
今考えているのは、ファイル名だけを経由させ、
送信用ファイルでそのファイルを処理すればよいかと考えていますが、
FireFoxではtempfileのoriginal_files要素を取得してもフルパスを取得することができません。
フルパスを取得する方法、もしくはフォーム送信時の常套句的な方法があれば教えてください。
0860デフォルトの名無しさん
2008/06/16(月) 14:59:29送信用CGIの間違いです。よろしくお願いします。
0861デフォルトの名無しさん
2008/06/16(月) 15:19:06「確認CGIではファイル名取得だけ行い、送信画面でそのファイル名のファイルを実際に送信する」ということはできない
Webブラウザでは、<input type='file'> を POST する場合にしか、ファイル選択ダイアログとファイル送信はできない実装になっている
だから、入力画面のsubmitを受けたときにファイルは必ず受け取らないといけない(だから、あまり確認の意味がない)
受け取ったファイルをサーバで保持して、確認画面のsubmitが来たらファイルを実際に使用する、という手順にするしかないな
問題のひとつは確認画面でキャンセルされたときのサーバ側に残ったファイルの扱いなんだが、これは適当に消せ
あと、確認画面で戻る押されて別のファイルをアップロードされたときの扱いとかも面倒だな
どちらにしても、Rubyの話ではないので適当なCGI関連のスレで研究してくれ
0862デフォルトの名無しさん
2008/06/16(月) 15:31:55どうもありがとうございます。
>どちらにしても、Rubyの話ではないので適当なCGI関連のスレで研究してくれ
そういうことでしたら、Perl等、他の言語で書かれたCGIも参考にしてみたいと思います。
助かりました。
0863デフォルトの名無しさん
2008/06/17(火) 11:40:57現在Ruby on Railsの勉強をしています。
しかし根本的な部分で躓いてしまいました。
練習してみようとtsukaeru.netのシルバープランというVPSサーバーをレンタルいたしました。
しかし、まったくこの上でrubyを用いたホームページを公開する方法がわかりません。
ruby on railsははいっていますか?との質問にサポートは入っています。との解答でした。それ以上のサポートはできないとのことなので
失礼ながらこちらで質問させていただきます。
勉強をしている本は基礎Ruby on RailsというものなのですがこちらはWindowsで導入する方法でしかもローカルで動く方法のみ書いてあったのでそれを一般に
公開するという点では参考になりません。
サーバ構築なども全く初体験なのです。
rubyのプログラムは普通のHPのようにpublic_html直下にindex.htmlをおけば動くといったものではないのですか?
公開するまでの具体的な方法をおしえてください。よろしくおねがいします。
OSはLinux CentOS5(final)のようです。
0864デフォルトの名無しさん
2008/06/17(火) 12:05:190865デフォルトの名無しさん
2008/06/17(火) 12:08:550866デフォルトの名無しさん
2008/06/17(火) 13:43:28まず、その程度の知識でVPSに手を出すのが無謀
組織の命令でやらざるを得ないのなら同情する
ちなみに
% ruby script/server
を実行すれば、適当なポートでHTTPサーバが立ち上がるので
あとは http://localhost:(ポート番号)/ にアクセスすれば、サンプルページは見えるはず
よく分からないなら素直にWindows使って練習した方がいい。VPSはその後で
0867デフォルトの名無しさん
2008/06/17(火) 15:19:46そんなにハードル高いものだとは・・・orz
Windowsでやるということは、それを公開するには自鯖を立てるしかないのでしょうかね?
自鯖は少し理由があって立てられないのです。
レンタルしているVPSサーバー上でruby script/serverとすると
ruby: No such file or directory -- script/server (LoadError)
と出てしまいます。ruby -vなどとすると正しくバージョンが出ますのでインストールされていることは確かなはずです。
VPS以外で、もっとも簡単にRuby on Railsを公開するにはどうすればよいでしょう。。。
もとからRubyが使えますよ〜っと書いてあるレンタルサーバーでもどのようにしてつかえばいいのかさっぱりです。
本でも読んで勉強もしますのでよろしければはじめの一歩でも教えてください。
0868デフォルトの名無しさん
2008/06/17(火) 16:06:20CGIとHTTPとDBの知識無い奴がRoRなんか触ったって意味ないのに
0869デフォルトの名無しさん
2008/06/17(火) 16:15:51Rails環境の構築は初心者には難しい
お薦めの手順としては
1.WindowsにRails環境を作って、そこでRailsの基礎を勉強する
基礎Ruby on RailsにもRails環境入りのCDがあるけれど、ここは「InstantRails」を使うべき
2.ある程度Railsアプリケーションをローカル(つまりWin)で作れるようになったらVPSでの公開を検討する
遠回りかもしれないがまずはローカルでRailsを動かしてみよう
学生さんですか?
ここはRubyスレで微妙にスレ違いの話になるので、捨てアドでも晒してくれたら色々と教える事は可能
0870デフォルトの名無しさん
2008/06/17(火) 16:19:05>ruby script/server
script/serverは、最初にrails generateで作ったディレクトリの中にある
あとは分かるな?
>VPS以外で
自鯖が立てられないならほぼ不可能
CGIスクリプトとして動かす手段もあるにはあるが、たぶん遅すぎて使い物にならない
それでもやりたいなら「dispatch.cgi rails」でググれ
0871デフォルトの名無しさん
2008/06/17(火) 16:22:14そんな事は無いだろう
DBは必須だがCGIとHTTPの知識が無いRailsエンジニアなんてゾロゾロいるぞ
もちろん誰かが作ってくれた環境上でアプリを作るだけしかできないが
0872デフォルトの名無しさん
2008/06/17(火) 16:25:29いや、実はRails自体入ってないんじゃないかとオレは思ってるw
867にはrails -vしてみて欲しいところだな
0873デフォルトの名無しさん
2008/06/17(火) 16:32:10まあ、Railsはどこをどう見ても
「わかってる人間が手早く作るための強力フレームワーク(※ 引き換えにパワー上限あり)」
なんだが、Javaソリューションビジネスで負けた奴らが次点を求めてRoRにツバつけようと群がったもんだから
「あなたにもRoRが簡単にできます」ビジネスの被害者が続出してる
そういう被害者の人たちのフォローをするのも初心者スレの役目だとは思うぜ
0874デフォルトの名無しさん
2008/06/17(火) 16:38:38Railsはシンプルでわかりやすいけど、それは「ある程度わかっている人」限定の話なんだよなぁ
プログラミング未経験者ならRailsよりもPHPの方が簡単に入れるだろうとは思う
0875デフォルトの名無しさん
2008/06/17(火) 17:01:38無いんだったら、俺ならダッシュで本屋行ってPHPに鞍替えするね
0876デフォルトの名無しさん
2008/06/17(火) 17:19:53>>867はPHPに乗り換えなさいw
0877デフォルトの名無しさん
2008/06/17(火) 18:10:33現在の、ローカルのWindows環境では本にしたがい、localhost:3000で動くことはできました。
それを一般に公開するなんて簡単だろうperlのcgiとおなじだろ〜っと考えていたらみごとに躓きました。
ご指摘のとおりrails -vしてみたところRails 1.2.2と返ってきたので入ってはいるみたいです。
そしてRoRのソースやらが入っているディレクトリまでcdで移動して再度script/serverを打ってみると
create
File exists - script/server
と帰ってきました。どうやらサーバーがたったようではなさそうな感じですが・・・
あと一歩なんでしょうかorz
ちなみに言語経験はC#とVBを少々でございます。
捨てアドさらせば教えていただけるというとても親切な方がいらっしゃいましたのでアドレスを書いて見ます。
よろしくお願いします。
0878デフォルトの名無しさん
2008/06/17(火) 18:38:560879デフォルトの名無しさん
2008/06/17(火) 18:43:32まあ、初心者スレだからな
来るのはRubyの初心者だけにして欲しかったもんだが
2ch初心者とかネット初心者とかコミュニケーション初心者とかは正直勘弁
0880デフォルトの名無しさん
2008/06/17(火) 18:44:48誰だって知らない分野はあるだろ
0881デフォルトの名無しさん
2008/06/17(火) 18:47:510882デフォルトの名無しさん
2008/06/17(火) 18:49:54ほいほいメールアドレス晒したり
Windows以外で動作させるための文献検索すらできてなかったりするのは
どうにも擁護できんぞ
「知らない分野」とかそういうレベルではない
0883デフォルトの名無しさん
2008/06/17(火) 18:53:29RoR使うのやめろというレスを全部スルーしてるからな
0884デフォルトの名無しさん
2008/06/17(火) 19:10:38自分のメールアドレス晒すのは、別に擁護する必要無いだろう。
0885デフォルトの名無しさん
2008/06/17(火) 19:12:56また、RoRを勉強してみたいという意欲のもと始めましたので、別の言語は考えていません。
LinuxにRuby と Railsを入れる方法についてはいろいろと調べまわったつもりなのですが具体的に公開手順を示されているサイトが
みつかりません。メールアドレスを晒したのは>>869さんが親切にあのようにおっしゃってくれたからです。
微妙にすれ違いとの事ですので、失礼しました。
0886デフォルトの名無しさん
2008/06/17(火) 20:02:43ttp://itpro.nikkeibp.co.jp/article/COLUMN/20080128/292199/?P=4&ST=oss
これを書いたやつは見込みがあるな
0887デフォルトの名無しさん
2008/06/17(火) 20:11:11抽象データのあたりとか、
よくまあ説明が複雑になりがちな概念をここまで平易に
0888デフォルトの名無しさん
2008/06/17(火) 20:18:500889デフォルトの名無しさん
2008/06/17(火) 22:58:250890デフォルトの名無しさん
2008/06/17(火) 23:21:080891デフォルトの名無しさん
2008/06/18(水) 02:07:50著者曰くLispに最も漸近しているスクリプト言語とのこと。
0892デフォルトの名無しさん
2008/06/18(水) 02:25:080893デフォルトの名無しさん
2008/06/18(水) 02:33:520894デフォルトの名無しさん
2008/06/18(水) 02:54:160895デフォルトの名無しさん
2008/06/18(水) 04:17:14それ、
『今大人気の言語RubyはLispに一番近い言語なんだよ(知ってた?)
でもさ、だったらLispそのものを使ったほうがいいよね?』
っていうプロパガンダだよ。PGの文章は今から見ると宣伝とか
自己啓発系のものが多いから、半分眉唾で読んだほうがいいよ。
リアルタイムで読んだら興奮するんだけどね。
0896デフォルトの名無しさん
2008/06/18(水) 07:54:350897デフォルトの名無しさん
2008/06/18(水) 15:53:280898デフォルトの名無しさん
2008/06/18(水) 15:54:24評価するところは評価していたかと
キャッチコピーが技術者のことをよく分かってるって
0899デフォルトの名無しさん
2008/06/18(水) 15:58:31そういうのは基本的にはアンチ専用スレで
0900デフォルトの名無しさん
2008/06/19(木) 00:57:36Print文で処理中をあらわす文字列を表示し、
処理が完了したら、次にそのことを知らせる文字列を表示したいのですが、
最初に表示した処理中をあらわす文字列を消すにはどうすればいいのでしょうか?
0901デフォルトの名無しさん
2008/06/19(木) 01:08:390902デフォルトの名無しさん
2008/06/19(木) 01:10:16それは、ボタンをポチッと押すと
「ただいま処理中です」
とかいうメッセージの表示されたhtmlを表示して、
サーバ側の処理が終わったら*自動的*に
「終了しました」
とか書かれたhtmlを表示したいということでしょうか?
0903デフォルトの名無しさん
2008/06/19(木) 02:07:05Ajaxでどうぞ
0904あぼーん
NGNG0905デフォルトの名無しさん
2008/06/19(木) 07:19:48少なくとも標準あるいは標準の応用でなんとかできるものではないな
RubyやRubyライブラリとしてのサポートはないと思われる
自前でJavaScript書くしかないねえ
0906デフォルトの名無しさん
2008/06/19(木) 10:37:36そういうことです。
>>901 >>903 >>905
CGIで逐次表示は考えないようにします。
Ajax(JavaScript)で対応したいと思います。
どうもありがとうございました。
0907デフォルトの名無しさん
2008/06/20(金) 17:31:540908デフォルトの名無しさん
2008/06/20(金) 18:50:560909デフォルトの名無しさん
2008/06/20(金) 20:37:19JRuby-1.1.2.zipを dist.codehaus.org から落としてきて
JDK-1.4.2_10の入っているPCに入れてみたけど、
noclassdeffounderror : java/lang/enum と出てjrubyもjirbも
立ち上がりません。
enum型ってJDK-5.0 からのサポートらしいけど、
JRuby-1.1.2ってJDK-5.0でしか動かないのでしょうか?
宜しくお願いします。
0910デフォルトの名無しさん
2008/06/21(土) 04:11:42READMEに、JRubyのコンパイルにJDK1.5以上が必要って書いてあるからそうなんだろ
0911909
2008/06/22(日) 09:47:53ネットの記事では1.4.2でも動作するって書いてあったのですが
実際はJDK5.0でないとだめなようですね。
返答ありがとうございました。
0912デフォルトの名無しさん
2008/06/22(日) 12:26:13取り出そうとしています。ぐぐったらscrapiとかいうので簡単にできたんですがかなり
処理速度が遅いのです。
高速に取り出そうとしたらやはり正規表現で取り出すしかないのでしょうか?
hpricotというのも見つけたのですがいまいちよくわかってません。
robustかつ高速に取得する方法はないものでしょうか?
0913デフォルトの名無しさん
2008/06/22(日) 12:43:09ブーブー言いながら使うのが一番だと思うが、最近は企業ブランド崇拝みたいのができあがっていて、
Apple教団はご愛嬌と思っていたが、何だかこれも同じような感じで、嫌な雰囲気だ。Googleしかり。
特にヘビーユーザーがそういう信者というか、エヴァンジェリストになって
教義に染まない利用者の不満をさえぎる壁になると異様。
そういうのって普及前のファンダムの色が残っているから、と楽観視していたのに。
これだけシェアを拡大しても、いっこうにあらたまらないな。
0914デフォルトの名無しさん
2008/06/22(日) 12:46:44自力でサイト固有の正規表現考えて抽出してそのサイトの URI に + するのが簡単
正規表現めどいという人に Hpricot
require 'rubygems'
require 'hpricot'
require 'open-uri'
uri = URI.parse('http://www.ruby-lang.org/ja/')
doc = Hpricot.parse(uri.read)
puts doc.search('a').map{|e| uri + e['href']}.find_all{|e| e.scheme =~ /\Ahttp/}.uniq
実行結果
http://www.ruby-lang.org/ja/downloads/
http://www.ruby-lang.org/ja/documentation/
http://www.ruby-lang.org/ja/libraries/
http://www.ruby-lang.org/ja/community/
http://www.ruby-lang.org/ja/news/
http://www.ruby-lang.org/ja/security/
http://www.ruby-lang.org/ja/about/
http://www.ruby-lang.org/ja/news/2008/06/20/arbitrary-code-execution-vulnerabilities/
http://www.ruby-lang.org/ja/news/2008/06/13/ruby-1-8-7-p17-release/
...
0915デフォルトの名無しさん
2008/06/22(日) 12:53:430916912
2008/06/22(日) 13:27:20ありがとうございます。
scrapiよりは速そうです。scrapiが今使ってるマシンだと動かない(64bitに対応していない?)みたいなので
直接比較はできませんが。でも、robustという意味ではyoutubeのURL入れるとだめっぽいですね
ex : ttp://jp.youtube.com/watch?v=T08oWYjwlSY
サイト固有の正規表現を記述するのは一番確実でしょうが一番汚いやり方だと思うので
スマートかつある程度速くできないものかなぁと試行錯誤中です。
0917デフォルトの名無しさん
2008/06/22(日) 13:47:320918デフォルトの名無しさん
2008/06/22(日) 13:51:42遅レスでもうみてないかもしれないけど。
Railsはともかく・・・
もし、あなたがVPSの管理もする(専用の管理者があなただけ)のなら、VPSを今すぐ解約しよう。
そのうちクラックされて他人に迷惑をかけるだけですよ。
まずは、ローカルで試す(Windowsでもできる)か、ローカルネットワークで外に公開しないサーバーを建てるなどをして知識を十分にしてからでも遅くはないよ。
VPSの場合、RubyとかRailsとかやる前にサーバーの管理の方法も一通り学んでおく必要がある。
0919デフォルトの名無しさん
2008/06/22(日) 13:53:02それは、httpじゃなくて、ttpだからでは?
0921デフォルトの名無しさん
2008/06/22(日) 15:34:31今回ruby on railsを勉強したいと思って、インストールしようとしとして
$ gem install rails --include-dependenciesを実行したんですが、うまくいきません。
だれか、情報があったら教えてください。
C:\ruby>gem install rails --include-dependencies
INFO: `gem install -y` is now default and will be removed
INFO: use --ignore-dependencies to install only the gems you
Bulk updating Gem source index for: http://gems.rubyforge.org/
Bulk updating Gem source index for: http://gems.rubyforge.org/
↑の状態で一時間ぐらい止まってます。別にPCは動くので、フリーズとかでもないです。
http://www.rubylife.jp/index.htmlのサイトの手順通りにやったんですが…
ちなみに、ruby及びRubyGemsもちゃんとインストールしてあります。
どなたか情報お願いします。
OS: Windows Vista です。
0922デフォルトの名無しさん
2008/06/22(日) 16:15:27マシンスペックにもよるが、Rails 新規インストール時に数時間返答がないのは普通
1日以上待った例もあるからそのまま放っておけ
0923デフォルトの名無しさん
2008/06/22(日) 16:19:26Debianの例で悪いけど、回避策もやはりあるみたいよ。
http://d.hatena.ne.jp/takaxi/20080128/1201482937
0924デフォルトの名無しさん
2008/06/22(日) 16:36:28>>916
どうして例外が起こったかはわかる?
残念だけど、Web のスクレイピングは文字通り例外との戦いだぞ
サイトごとに調整しなければならないと思ってくれていい
HTML や HTTP の知識はあるかな?
たとえば以下の方法だと 142 のリンクが抽出されてるけど、本当に必要なのは数個だろ?
require 'rubygems'
require 'hpricot'
require 'open-uri'
uri = URI.parse('http://www.ruby-lang.org/ja/')
doc = Hpricot.parse(uri.read)
puts doc.search('a').map{|e| e['href']}.compact.map{|e| uri + e}.find_all{|e| e.scheme =~ /\Ahttp/}.uniq
0925デフォルトの名無しさん
2008/06/22(日) 16:46:58本質的には puts doc.search('a').map{|e| e['href']} だけでいい
でも、それだと相対 URL で書かれているリンクがわけわからなくなるのでわざわざ uri に join してる
http:// と https:// 以外を取得しても意味がないことが多いからわざわざ http:// と https:// 以外を除いてる
で、Youtube では「onclick で JavaScript 起動しかさせないリンク」という href 自体がない <a> タグがあるのでわざわざ href が nil な場合を compact で除いてる
他のサイトでは「欲しいリンクだと思ったら実は画像貼り付けのボタンでPOST」とかにも対処しなければならないかもしれない
require 'rubygems'
require 'hpricot'
require 'open-uri'
uri = URI.parse('http://jp.youtube.com/watch?v=T08oWYjwlSY')
doc = Hpricot.parse(uri.read)
puts doc.search('a').map{|e| e['href']}.compact.map{|e| uri + e}.find_all{|e| e.scheme =~ /\Ahttp/}.uniq
0926デフォルトの名無しさん
2008/06/22(日) 16:58:19後出しで youtube 出してきたけど、欲しいのは動画ファイルのURLや各種一覧にあるURLだろうし
これからまた絞らないといけないだろうな(おそらくはCSSセレクタとかXPathとかあのへんの知識が要る)
0927デフォルトの名無しさん
2008/06/22(日) 17:01:13無駄にあれこれ悩むよりさっさと正規表現使って抜き出せばいいと漏れは思う。
0928デフォルトの名無しさん
2008/06/22(日) 17:03:180929デフォルトの名無しさん
2008/06/22(日) 17:32:00初期ではそのノリで標準ライブラリになってしまったりしたが
0930デフォルトの名無しさん
2008/06/22(日) 17:33:53rubygems 1.2 で劇的に改善されたらしい。
http://rubyforge.org/forum/forum.php?forum_id=25353
0931930
2008/06/22(日) 17:38:480932デフォルトの名無しさん
2008/06/22(日) 18:19:17タグ検索 RubyKaigi2008‐ニコニコ動画(SP1)
http://www.nicovideo.jp/tag/RubyKaigi2008
0933デフォルトの名無しさん
2008/06/22(日) 18:24:58メチャメチャ速くなってる気がするwwww
gem updateがさっくりオワタww
0934デフォルトの名無しさん
2008/06/22(日) 18:58:55お、今年はうpが早いな。
あとで見る。
0935デフォルトの名無しさん
2008/06/22(日) 19:27:220936912
2008/06/22(日) 21:47:13遅くなりましたがありがとうございました。
やはり例外との戦いなんですね。参考にします。
>>926
youtubeはたまたまブラウザで開いてるURL全部入れて試しただけです。
youtubeから抜き出したいというわけではなかったのです。
0937デフォルトの名無しさん
2008/06/23(月) 14:10:30>>930ありがとう
0938日立バキバキ高野くん祭り
2008/06/23(月) 20:00:052.日立のユーザーにも「キチガイ」との障害者差別発言
3.日立製作所の企業イメージをバキバキにする
4.自身のサイトの『32nd diary』に掲載
5.日立製作所に通報される
6.あせって似顔絵削除
7.火に油を注ぐだけで所属する日本UNIXユーザ会にも通報祭り勃発
8.「給料泥棒」と説教される
9.「殺します」と殺人予告をして警察に事情を聞かれる←イマココ
高野光弘の行動
現在は、過去の記事を閲覧できなくして、「本日の日記はツッコミ数の制限を越えています」としています。
まずは、不愉快な思いをされた方々に謝罪するべきなのではないでしょうか。
高野光弘の発言
「まぁ、どこの団体もそんなにヤワじゃないので、平気なんですけども。
日本UNIXユーザ会が一番対応に慣れてる感じ。」
日本UNIXユーザ会が対応に慣れているか、みなさん確認してみてください。
連絡先
http://www.net.intap.or.jp/oiia/cont2/p0402.html%7B0recid=10168.html
0939デフォルトの名無しさん
2008/06/24(火) 00:00:05/usr/local/lib/ruby/site_ruby/1.8/dbi.rb:368:in `load_driver':
Could not load driver (no such file to load -- /usr/local/lib/ruby/site_ruby/1.8/dbd/Pg) (DBI::InterfaceError)
というエラーがでてきます。
$ echo 'export PATH=/usr/local/psql/lib:$PATH' >> ~/.bash_profile
でライブラリへのパスは通っていると思うんですが、
解決策をお教えいただければと思います。
0940デフォルトの名無しさん
2008/06/24(火) 00:44:50/usr/local/lib/ruby/site_ruby/1.8/dbd/Pg.rb
は存在するの?
0941デフォルトの名無しさん
2008/06/24(火) 06:51:08LD_LIBRARY_PATH
あたりで設定すると記憶しているが。
0942デフォルトの名無しさん
2008/06/24(火) 14:23:270943デフォルトの名無しさん
2008/06/24(火) 21:12:240944デフォルトの名無しさん
2008/06/24(火) 21:14:080945デフォルトの名無しさん
2008/06/24(火) 21:35:170946デフォルトの名無しさん
2008/06/24(火) 21:54:40皆さんご丁寧にありがとうございます。
>>940
/usr/local/lib/ruby/site_ruby/1.8/dbd/Pg.rb は存在しなくて、
/usr/local/lib/ruby/site_ruby/1.8/dbd/Pg/Pg.rb があります。
PATHやLD_LIBRARY_PATHはOKな筈なんですが、うまく行かないです。
こちらの環境は、macなのでotool -L などでもう少し格闘してみます。
0947デフォルトの名無しさん
2008/06/24(火) 23:14:53ruby-pg はインストールしてる?
ruby -rpg -e0
を実行して何も出なければ入っているって事なんだが。
それにしても分かりにくいエラーメッセージだな>dbi
真の原因を隠すなよ。
0948デフォルトの名無しさん
2008/06/25(水) 04:05:460949デフォルトの名無しさん
2008/06/25(水) 04:08:31Rubyでシューティングゲームつくってるんですけど 弾が当たってゲームオーバーになった時に画面全体を赤っぽくしたいんですけど なにかいい方法ありませんか?
一応予定としては
画面全体を赤で塗る
透過する
って考えているんですけどがんばっていろいろ探ってみてもやり方がわかりませんorz どうかよろしくおねがいします。
0950デフォルトの名無しさん
2008/06/25(水) 04:33:13手順
1.Rubyをアンインストール
2.HSPをインストール
3.「シューティングゲームビルダー」でぐぐる。
4.HSPをアンインストール
わざわざRubyで作る意味がわからない
0951デフォルトの名無しさん
2008/06/25(水) 05:02:34C言語でゲームを作りたいんですがどうすればいいですか?
しるかーぼけー
0952デフォルトの名無しさん
2008/06/25(水) 07:11:460953デフォルトの名無しさん
2008/06/25(水) 07:12:54結果を分布図(正規分布の図みたいなの)として出力したいのですが、
適したグラフライブラリはどんなものがありますでしょうか?
0954デフォルトの名無しさん
2008/06/25(水) 07:20:520955デフォルトの名無しさん
2008/06/25(水) 07:35:180956デフォルトの名無しさん
2008/06/25(水) 07:59:27後は
Rubyist Magazine 0006 号
Ruby Library Report 【第 5 回】 数値計算と可視化
ttp://jp.rubyist.net/magazine/?0006-RLR
とか。
0957デフォルトの名無しさん
2008/06/25(水) 09:04:23ありがとうございます。
ああ、gnuplotでもいいか。
GnuplotのRuby用のインターフェースはこれですね。
http://rgplot.rubyforge.org/
gemにもありました。Windowsでもつかえるかな?
あとは、テキストのとかw
Histogram class for ruby(Kodama's tips page)
http://www.math.kobe-u.ac.jp/~kodama/tips-ruby-histogram.html#japanese
かっこいいグラフとか、
Gruff Graphs for Ruby | Ruby on Rails for Newbies
http://nubyonrails.com/pages/gruff
>>956
数値計算のライブラリの詳しい紹介、助かります。
うまく画像化できそうです。一通り試してみようと思います。
ありがとうございました。
0958デフォルトの名無しさん
2008/06/25(水) 09:07:44何故、クラス化かモジュール化されてないのでしょうか?
徹底的にOOPしているRubyにおいてrandは不思議な存在に思えます。
MLのログなど見てみたのですが、過去にクラス化の議論はされているようで↓
http://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-dev/30954?30947-31824+split-mode-vertical
パッチが作られていて、1.9で当てられるようなことになっているのですが、
SVNのtrunkや1.9.2とかのソースを見ても当たってないようです???
0959デフォルトの名無しさん
2008/06/25(水) 09:22:20どんなライブラリを使ってるのかが分からないと、助言のしようがない
0960デフォルトの名無しさん
2008/06/25(水) 09:56:07wrong number of arguments(1 for 0)
このとき「引数の数が間違えてる」のは文字通りわかるのですが、
(1 for 0)はどう読んだらいいんでしょうか?
引数なし(0)のところに1つ(余計に?)渡してる、みたいなニュアンスでしょうか?
今、あるライブラリを使っていてこのエラーが出ているのですが
引数の数は間違えておらず(関数側にもデフォルト値も設定されている)
原因を探しているところです。
0961デフォルトの名無しさん
2008/06/25(水) 10:10:38お前英語苦手だろ
0962デフォルトの名無しさん
2008/06/25(水) 10:53:50>>960
1 for 0 は「0 個の代わりに 1個得た」と読む
日本人にはまだわかりにくいな
(got 1, required 0) とでも書いてくれればわかりやすいんだが
引数総数しか問題にしてない記述で、引数 0個のメソッドなのに引数が 1個渡されてるというエラーだ
このメソッドに引数を渡してはいけないってことだな
irb> 'abc'.downcase('param')
ArgumentError: wrong number of arguments (1 for 0)
0963960
2008/06/25(水) 11:03:15ありがとうございます。
直接呼び出しているメソッド内から呼ばれていたメソッドで
引っかかっていたようでした。
構文が古いのか(?)マニュアル見て書き直してみたらうまくいきましたm(_ _)m
0964デフォルトの名無しさん
2008/06/25(水) 12:14:18ttp://doc.loveruby.net/refm/api/view/library/securerandom
0965デフォルトの名無しさん
2008/06/25(水) 12:30:57ライブラリはSDLとfpstimerはいってます。
0966デフォルトの名無しさん
2008/06/25(水) 12:55:07んーたぶんそれと違うような。Mersenne Twisterをラップしたのなんだけど・・・
>>965
Rubyでゲーム制作ならこっちのスレの方がよいかと思う
【Ruby/SDL他】Rubyでゲーム制作・総合スレッド
http://pc11.2ch.net/test/read.cgi/gamedev/1207069887/
0967デフォルトの名無しさん
2008/06/25(水) 13:03:33普通の乱数ジェネレータのオブジェクト化ね。
多分やってない、やる気がないだけだと思うけど。
確か、過去の議論で、うまい名前とうまいAPIがあれば、みたいな
話になってたかな。
0968デフォルトの名無しさん
2008/06/25(水) 13:10:110969958
2008/06/25(水) 13:20:17http://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-dev/31993?31774-32131+split-mode-vertical
なんかグダグダのまま頓挫してますね・・・。
0970デフォルトの名無しさん
2008/06/25(水) 16:21:360971デフォルトの名無しさん
2008/06/25(水) 17:04:57エラーがでて実行されません。
普通のrubyコマンドでは正常に動きます。
レシピ作成は下記のコマンドで作成
>ruby -r exerb/mkexy main.rb
でてきたmain.exeを実行すると下記のエラーがでます。
-----
NoMethodError
importenv.rb:10
private method `sub' called for nil:NilClass
------
メソッドがないってエラーなのはわかるんですが、exe化したらでるってのが
よくわからないんですが、
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]
Exerb 4.2.0
0972デフォルトの名無しさん
2008/06/25(水) 19:01:12技術的な話をすると長くなるので省略するが、標準添付ライブラリimportenv.rbの10行目を削除すれば解決する。
0973デフォルトの名無しさん
2008/06/25(水) 19:24:560974デフォルトの名無しさん
2008/06/25(水) 19:25:170975デフォルトの名無しさん
2008/06/25(水) 20:52:46未処理だよ変数からデータ1個取り出す→何かする→終わったよ変数に1個格納
こんな感じで処理自体はデータごとに独立です
で、「外部からのアクションで一時停止」「停止中のスクリプトを再開」ってできませんか?
0977デフォルトの名無しさん
2008/06/25(水) 21:04:011ループごとに「○○番目のデータまで処理完了」ってファイルに書き込んでおく
停止したいときはスクリプトを強制終了させる
スクリプト起動時に中間ファイルの存在をチェックし、中間ファイルがあった場合は中身を読んでその番号から再開
これなら小難しいこと考えずに中断と再開ができるぞ
「1ループごとにHDDに書き込みするなんて畏れ多い!」とか考えたらダメだぞ
0978デフォルトの名無しさん
2008/06/25(水) 21:12:35外部ってのが何かによる
別スレッドでもソケットでもファイルでもいいから、そこから停止指示が出ていないか
処理1回ごとにポーリングするとか
0979デフォルトの名無しさん
2008/06/25(水) 21:17:58trap(:int){gets}
loop{p :foo; sleep 1}
0980デフォルトの名無しさん
2008/06/25(水) 21:21:550981デフォルトの名無しさん
2008/06/25(水) 23:11:58まだ売ってなかった。週末ぐらいかな
0982デフォルトの名無しさん
2008/06/25(水) 23:15:59近刊の欄には「予定」がついたままだから、もしかしたらちょっと遅れるのかも
0983デフォルトの名無しさん
2008/06/26(木) 00:07:520984デフォルトの名無しさん
2008/06/26(木) 00:41:562.0.2バージョンで掲示板やチャットの作り方を載せてるサイトありませんか?
もしくは、2.0.2版の解説ページみたいなところでも
よろしくお願いします
0985デフォルトの名無しさん
2008/06/26(木) 10:56:12http://recompile.net/2008/06/jruby-3.html
0986デフォルトの名無しさん
2008/06/26(木) 11:47:19初心者でかつ英語が読めないのであれば、まず日本語で解説したページや書籍を手に入れ、
そこで使われているバージョンをインストールして勉強すべし。
バージョンをあげるのは勉強したあとにしたほうがいい。
初心者でも英語が読めるのであれば、英語での解説ページはぐぐれば出てくるからそれを読めばいい。
初心者は本を買うことを強くおすすめする。3千円ケチったせいで実はすごく損をしていることに気づくべし。
0987デフォルトの名無しさん
2008/06/26(木) 12:18:49クローズすると自動的に削除されますよね.
テンポラリファイルに書き出して書き終わったら正式なファイル名にrenameするという
イディオムはRubyではどう書けばいいんでしょうか.
テンポラリファイルの名前はThreadユニークなものにしたいです.
0988デフォルトの名無しさん
2008/06/26(木) 12:57:420989デフォルトの名無しさん
2008/06/26(木) 13:35:360990デフォルトの名無しさん
2008/06/26(木) 13:39:390991デフォルトの名無しさん
2008/06/26(木) 14:32:420992デフォルトの名無しさん
2008/06/26(木) 15:20:35てぃんぽ
0993デフォルトの名無しさん
2008/06/26(木) 16:24:06def print()
print "a"
print "b"
end
end
hoge = Hoge.new
hoge.print
こんなことすると print がループになってしまいますが、
Hoge じゃない元の print を呼ぶにはどうしたらいいでしょうか?
0994デフォルトの名無しさん
2008/06/26(木) 16:25:57オリジナルのprintをaliasしておいてそれを呼ぶ
0995デフォルトの名無しさん
2008/06/26(木) 16:28:310996デフォルトの名無しさん
2008/06/26(木) 16:42:16ありがとうございます。
alias するなら Hoge の print の名前を変えるので
Kernel を使うことにします。
0997デフォルトの名無しさん
2008/06/26(木) 17:04:310998デフォルトの名無しさん
2008/06/26(木) 19:15:12rubyは整数のビット幅に限界がないので、負数を2の補数で扱う場合、最上位ビットというものが存在しない。
故に、符号なし右シフトは定義できない。
0999デフォルトの名無しさん
2008/06/26(木) 21:52:03読み込んだXMLに対して、
再帰処理で子エレメントを検索していってるんですが
結果をファイル出力したい場合ってどういう風にしたらいいんでしょうか?
再帰の関数のなかでREXML::Document.new()を書くとそれぞれで作られてしまう
一番最初の呼び出しをするときにREXML::Document.new()で作ったインスタンスを
引数として持たせ続ける案が浮かびました
なんかスマートな感じがしないんですが、他にどういった方法が考えられますか?
1000神本 ◆wWwwWwWwWw
2008/06/27(金) 00:00:3310011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。