Ruby 初心者スレッド Part 22
レス数が1000を超えています。これ以上書き込みはできません。
0001730
2008/09/15(月) 17:25:21【Ruby1.9 は不安定な開発版であり初心者には全く向きません】
【最新安定版の Ruby1.8.7 の使用をお勧めします】
※1.8.7 は1.8 と 1.9 の橋渡しをするためのリリースです。
1.9 の新機能の一部が利用可能なので初学者にお勧めです。
※ただし十分安定しているとは言えないので
プロダクション環境での利用にはお勧めしません。
関連スレや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を読め」でいいので、叩かない&怖がらせない。
・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0002730
2008/09/15(月) 17:27:18Q:
いちからRubyを始める初心者向けのRuby入門書は何がおすすめでしょうか?
A:
プログラム作成の初心者だったら
「たのしいRuby 第2版 Rubyではじめる気軽なプログラミング」
http://www.amazon.co.jp/dp/4797336617/
他の言語経験があるんだったら
「プログラミングRuby 第2版 言語編」
http://www.amazon.co.jp/dp/4274066428/
「初めてのRuby」
http://www.amazon.co.jp/dp/4873113679
0003730
2008/09/15(月) 17:31:36Ruby 初心者スレッド Part 21
http://pc11.2ch.net/test/read.cgi/tech/1217952441/
■関連スレ
Rubyについて Part 32
http://pc11.2ch.net/test/read.cgi/tech/1215531152/
Rubyの宿題教えてください。2限目
http://pc11.2ch.net/test/read.cgi/tech/1200175247/
RubyCocoa 初心者質問【Leopardバンドル記念】
http://pc11.2ch.net/test/read.cgi/mac/1193373811/
【ActiveScript】RubyをWindowsで使うスレ【GUI】
http://pc11.2ch.net/test/read.cgi/tech/1155031689/
Ruby on Rails のスレ が
http://pc11.2ch.net/test/read.cgi/php/1207425569/
デザパタ + Python/Ruby/Smalltalk part2
http://pc11.2ch.net/test/read.cgi/tech/1175959706/
魁け! Ruby 1.9.X
http://pc11.2ch.net/test/read.cgi/tech/1201603546/
Rubyについて(アンチ専用) Part003
http://pc11.2ch.net/test/read.cgi/tech/1207233348/
0004730
2008/09/15(月) 17:33:59Ruby 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/
0005730
2008/09/15(月) 17:35:01http://raa.ruby-lang.org/
RubyForge
http://www.rubyforge.org/
# Rubyのアプリやライブラリが検索できる
GitHub RubyGems
http://gems.github.com/
http://github.com/
# 最近は RubyForge より GitHub が人気
日本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/
0006730
2008/09/15(月) 17:36:20Ruby 初心者スレッド Hiki
http://starlet.s145.xrea.com/ruby/hiki/
Ruby Portal
http://ruby.morphball.net/portal/
■プレゼンテーション
Ruby会議2008
http://jp.rubyist.net/RubyKaigi2008/
http://www.nicovideo.jp/tag/rubykaigi2008
Ruby会議2007
http://jp.rubyist.net/RubyKaigi2007/
http://www.nicovideo.jp/tag/RubyKaigi2007
日本 Ruby カンファレンス 2006
http://jp.rubyist.net/RubyKaigi2006/
http://jp.rubyist.net/RubyKaigi2006/videos.html
0007730
2008/09/15(月) 17:40:14【カルト】Ruby開発者Matz【モルモン】
http://pc11.2ch.net/test/read.cgi/prog/1148712641/
【Ruby/SDL他】Rubyでゲーム制作・総合スレッド
http://pc11.2ch.net/test/read.cgi/gamedev/1207069887/
RubyによるWebプログラミングについての質問
http://pc11.2ch.net/test/read.cgi/php/1219059400/
0008デフォルトの名無しさん
2008/09/15(月) 21:36:40ただいま
0009デフォルトの名無しさん
2008/09/15(月) 21:40:43いきなり質問していいですか?
プロパティファイルの扱いのようにメッセージや設定を管理したい場合の
実装について一般的にどうするのかが知りたいです
定数クラスを作るべきかなと考えたんですが
パラメータを渡して組み合わせたものをメッセージとして表示させる場合に
警告が出て気になります。みなさんはこういう場合どう実装していますか?
0010デフォルトの名無しさん
2008/09/15(月) 22:48:07>定数クラスを作るべきかなと考えたんですが
それでいいと思うけど。Configクラスとか。
>パラメータを渡して組み合わせたものをメッセージとして表示させる場合に
>警告が出て気になります。みなさんはこういう場合どう実装していますか?
どんな警告?
0011デフォルトの名無しさん
2008/09/15(月) 23:08:38ああ、それで良かったんですか
警告は定数の値を変更しようとすると出るアレです
0012デフォルトの名無しさん
2008/09/15(月) 23:16:52と
>警告は定数の値を変更しようとすると出る
との間に1万光年の距離がある。
0013デフォルトの名無しさん
2008/09/15(月) 23:21:00class Config
attr_accessor :host, :user, :password
end
CONFIG = Config.new
と定義しておき、user-config.rb とかなんとかで
CONFIG.host = 'localhost;
CONFIG.user = 'root'
CONFIG.password = 'naisyo'
とかすればいいんじゃね?知らんけど。
0014デフォルトの名無しさん
2008/09/15(月) 23:27:510015デフォルトの名無しさん
2008/09/16(火) 01:32:31文字列を取得してきて、
変数aに格納するのってできる?
どうやるの?
http://www.abc.com/abc.txt
に「あいうえお」って書いてあって、
その「あいうえお」を変数aに入れたい。
0016デフォルトの名無しさん
2008/09/16(火) 01:46:580017デフォルトの名無しさん
2008/09/16(火) 02:05:09require 'open-uri'
a = open('http://www.abc.com/abc.txt') {|f| f.read }
これでいいんだっけ?間違ってたら教えて。
0018デフォルトの名無しさん
2008/09/16(火) 09:07:250019730
2008/09/16(火) 15:00:47ActiveRecordってスレッドセーフなんですか?
0020デフォルトの名無しさん
2008/09/16(火) 19:04:42多分違うけど、2.2からはthread safeになるかもしれない
ただRuby1.8だとthread safeにしてもあんまりうれしくない
0021デフォルトの名無しさん
2008/09/16(火) 21:37:01#!/usr/local/bin/ruby
require 'net/imap'
HOST = "imap.softbank.jp"
USERID = "takeshi_h"
PASSWORD = "take924"
imap = Net::IMAP.new(HOST)
imap.login(USERID, PASSWORD)
imap.select("INBOX")
まで書いてみたもののその先が分からず挫折中・・・
ここからsubjectだけ抜き出すにはどうすればいいのか詳しい人いたら教えてくださいorz
0022デフォルトの名無しさん
2008/09/16(火) 23:07:20ここまで露骨だと釣りっぽい気もするが。
0023デフォルトの名無しさん
2008/09/16(火) 23:41:58誰かのサンプルを参考にしちゃろうとググってみても全くヒットしないですね・・・
もしかするとRubyでimapっていうのがあまりお勧めできないのかしら
公式マニュアルだけでは何とも理解に時間がかかるので、書籍を買った方が良さそうですね
0024デフォルトの名無しさん
2008/09/16(火) 23:44:440025デフォルトの名無しさん
2008/09/16(火) 23:51:13ぐぐったらこんなのあったけど。ダメかな。
http://www.caliban.org/ruby/rit.shtml
0026デフォルトの名無しさん
2008/09/17(水) 00:15:040027デフォルトの名無しさん
2008/09/17(水) 00:15:520028デフォルトの名無しさん
2008/09/17(水) 02:47:45書くようなマヌケが多いの?
0029デフォルトの名無しさん
2008/09/17(水) 07:23:000030デフォルトの名無しさん
2008/09/17(水) 12:42:520031デフォルトの名無しさん
2008/09/17(水) 13:36:39「a.txt」
ってファイルを作る。
↑これってできる?
0032デフォルトの名無しさん
2008/09/17(水) 15:16:56できる
0033デフォルトの名無しさん
2008/09/17(水) 16:21:04File.open("a.txt", "w"){|f|
# ここでゆっくり好きな処理していってね!
}
0034デフォルトの名無しさん
2008/09/17(水) 18:00:020035デフォルトの名無しさん
2008/09/17(水) 20:53:080036デフォルトの名無しさん
2008/09/17(水) 23:11:17具体的には
def funcall(fun,x)
return fun(x)
end
def inc(x)
return x+1
end
>> funcall(inc,4) #=>5
というような結果が欲しいです。
lambdaやProcで包んで.callすればできるというのはわかるのですが、
もっと簡単に行う方法ってないものでしょうか。
0037デフォルトの名無しさん
2008/09/17(水) 23:14:140038デフォルトの名無しさん
2008/09/17(水) 23:25:23サンクス!!
0039デフォルトの名無しさん
2008/09/18(木) 08:22:27どれが正しいの?
なんでコードだけ張って
日本語の解説が無いの?
0040デフォルトの名無しさん
2008/09/18(木) 08:34:19日本語の解説はリファレンスマニュアルでも読んどけ
0041デフォルトの名無しさん
2008/09/18(木) 10:49:11Ruby的には
def funcall(x)
return yield(x)
end
x = 10
funcall(x) { x + 1 }
なんだよね。
でも関数合成的に使うには向いてないかも。
0042デフォルトの名無しさん
2008/09/18(木) 17:52:57要素が空の場合はどういう結果になるのでしょうか?
手元のrubyでは all? が true 、any? が false を返すようですが
マニュアルには要素が空の場合については書かれていないので
要素が空の場合は処理を分けた方が無難でしょうか?
0043デフォルトの名無しさん
2008/09/18(木) 19:14:28数学的にはその挙動であってるはずだから、マニュアルに書いてなくても、その挙動を信じていいと思うよ
0044デフォルトの名無しさん
2008/09/18(木) 19:16:10論理的な動作ではなく、Enumerable の内部処理に依存してる
って 1.8 でそれかよ
0045デフォルトの名無しさん
2008/09/18(木) 22:39:17まず、なにとなにとなにを
ダウンロードしてインストールすればいいでしょうか?
OSはWindowsです
0046デフォルトの名無しさん
2008/09/18(木) 22:59:480047sage
2008/09/18(木) 23:41:06[BUG] object allocation during garbage collection phase
などというものがでるようになってしもうた。
GC と win32ole あたりに原因がありそうなんだけど
再現するコンパクトなコードがつくれませんの。
0048デフォルトの名無しさん
2008/09/19(金) 00:04:070049デフォルトの名無しさん
2008/09/19(金) 01:51:19ありがとうございます。そのまま行きます。
0050デフォルトの名無しさん
2008/09/19(金) 03:30:54Rubyのprivateメソッドやインスタンス変数は、Java や C++ のような完全な
隠蔽ではないようです。親クラスのprivateメソッドやインスタンス変数を、
子クラスで知らずに上書きしてしまう可能性があります。
この上書きを避けるには、どのようにしたら良いのでしょうか?親クラスの
privateなメソッドやインスタンス変数の名前をすべて把握する以外にないの
でしょうか?
特に、トップレベルで関数を定義することが、Objectクラスにメソッドを追加
することと同じなので、気づかずに既存のメソッドを上書きしてしまいそうで
不安です。
0051デフォルトの名無しさん
2008/09/19(金) 03:33:16005250
2008/09/19(金) 04:18:50特に不慣れなフレームワークを使っているときなどに、既存の関数の誤った上
書きによってトラブルが起こるのを避けたいのです。
0053デフォルトの名無しさん
2008/09/19(金) 08:21:08インスタンス変数の上書きは継承ではなく委譲を使うことで回避
フレームワークの都合等で継承せざるを得ない場合は、できるだけ
特殊な変数名を使う
> @HOGE @___hoge___ @projNo_hoge ...
これらの変数もHashや構造体等で入れ子にする事で定義数を減らす
> @projVar[:item] @projVar.item ...
メソッドの上書きはデバッグモード(ruby -d)の出力を確認
独自クラス定義前と定義後のclass#methods(等)の結果を比較
0054デフォルトの名無しさん
2008/09/19(金) 08:34:32なんでパッケージが6つもあるの?
どれを入れたらいいのか、
わからないじゃん
0055デフォルトの名無しさん
2008/09/19(金) 08:45:370056デフォルトの名無しさん
2008/09/19(金) 09:10:02イバラの道?
0057デフォルトの名無しさん
2008/09/19(金) 09:18:010058デフォルトの名無しさん
2008/09/19(金) 09:20:47どんなゲーム作りたいかにもよるが、CGIべったりなPHPとかで作るよりはめんどくさい
0059デフォルトの名無しさん
2008/09/19(金) 10:06:20だとしたらCGIゲーム部分(ブラウザで見る部分)はPHPで作って、
専用ブラウザはruby(RPGツクールVX)ってしたほうがいいかな。
でもそれだと2つの言語を覚えないといけないんだよね。
006050
2008/09/19(金) 11:05:33丁寧なご説明、ありがとうございます。ですが、結局「気をつける」以外に無
いようで、少々残念です。
アンダースコアで始まるなどの特殊な変数名は、逆にフレームワーク側も衝突
回避を意図して多用している可能性があり、結局、変数名にプロジェクトごと
のprefixをつけたり、 instance_variables でこまめに確認したりするしかな
いように見えます。
しかしこれでは、グローバル変数しかなかった時代と変わらないと思います。
むしろ、メタプログラミングによって変数名やメソッド名がgrep検索できなく
なったRubyコードでは、名前の衝突の危険性は増しているとすら思います。
PHP5には完全なprivateがあり、Pythonにはマングリングという仕組みがあり
ます。Rubyにそれに類するものがないのは意外でした。
しかしRuby1.9でも変更される予定は無いようなので、実用的にはさほど困ら
ないものなのかもしれません。
ruby -d は知りませんでした。活用させていただきます。
>>57
53さんもおっしゃるとおり、フレームワークに継承を強制される場合をお考え
ください。
http://www.gesource.jp/weblog/archives/2007/06/rubyprotectedjavac.html
> フレームワークを使っていると、知らないうちに基底クラスのメソッドをオー
> バーライドしてしまい、予期せぬバグに悩まされたりします。
0061デフォルトの名無しさん
2008/09/19(金) 11:05:54ActiveRuby1.8.7いれてみた。
次、エディタは何使えばいい?
0062デフォルトの名無しさん
2008/09/19(金) 11:16:11RDE
0063デフォルトの名無しさん
2008/09/19(金) 11:35:29本当はOne-Click Rubyっていうのもあったの?
どっちがよかったの?
なんで統一しないの?
なんでインストーラーがいっぱいあるの??
0064デフォルトの名無しさん
2008/09/19(金) 11:41:030065デフォルトの名無しさん
2008/09/19(金) 11:41:48不味いよね〜という話にはなっていて、いくつかの解決策も検討されているようだが
まだ手が回ってないっぽい
ttp://www.rubyist.net/~matz/20060218.html#c05
0066デフォルトの名無しさん
2008/09/19(金) 11:42:570067デフォルトの名無しさん
2008/09/19(金) 11:55:21ActiveScriptRubyは元々の目的が違うからじゃないかな
そもそも、本来は初心者向けのセットじゃないし
0068デフォルトの名無しさん
2008/09/19(金) 11:55:27RDEいれてみた。abcって表示できた。
これでいいのかな。
0069デフォルトの名無しさん
2008/09/19(金) 12:24:08RDE
文字が重なるんだけど、どこの設定を見ればいい?
007050
2008/09/19(金) 12:27:01ありがとうございます。なるほど、問題視はされているのですね。
私自身はRailsを業務で半年ほど使った経験があるのですが、クラス継承にお
いて名前空間が独立していないことを途中で知って、たいへん怖くなりました。
自分の書いてきたコードが安全かどうか、確証がないと思ったからです。
しかし、「初めてのRuby」にはこのことは何も書いてありませんでした。ネッ
トでもそれほど多くの声は見つかりません。Ruby コミュニティでこれはあま
り重大な問題だとは考えられていないということなのでしょうか?
しかし、>>53さんのおっしゃるようなことに絶えず注意し続けなければならな
いなら、コーディングに手間がかかって大変だと思うのですが。
ほかにも、クラスが通常はオープンで、requireによってどんどん書き換えら
れていくなど、Rubyは名前空間についてはきわめて楽観的な言語だという印象
があります。できる限り名前空間を独立させるPythonとは、まったく逆の方針
に見えて興味深いです。
0071デフォルトの名無しさん
2008/09/19(金) 12:32:55local visibilityとかいう新機能とは違うのかな。
ぶっちゃけ1.9使ったことないから適当だけど。。
あと、最近気付いた妙な事例。
http://www.ruby-lang.org/ja/man/html/Matrix.html
> Matrix#[i, j] = x
> (i,j)要素をxに変更する。
> このメソッドは、matrix.rbに定義されていない。以下に、その定義と使用例を示す。
なんて書いてあるけど、実は
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/matrix.rb?revision=19360&view=markup
> alias set_element []=
> alias set_component []=
> private :[]=, :set_element, :set_component
なぜかprivateで定義してあり、、でも使われていなくて、、、みたいな謎が
0072デフォルトの名無しさん
2008/09/19(金) 12:35:51そのテキストエリアで右クリック - [設定] - [フォント]を適当にいじる
大きくするなり、変えるなり
0073デフォルトの名無しさん
2008/09/19(金) 13:08:58Rubyの数学モジュールは存在が適当
マトモな人は使わない
0074デフォルトの名無しさん
2008/09/19(金) 13:12:34実行時にほぼ全てをevalで改変できるのはRubyの特徴
だからこそ、初期モックアップに向いていて、大規模開発に向かない
0075デフォルトの名無しさん
2008/09/19(金) 13:15:01どうしても共存していく以外無いものなぁ。
0076デフォルトの名無しさん
2008/09/19(金) 13:15:59だよなあ
まあ、制御できたら用途によっては便利だろうなとは思う
というより、そういうのは単にそのフレームワークが行儀悪くてマニュアル不足で邪悪なだけなのでは…
「普通」は、トップレベルにメソッドを定義したりしないし、自身を継承させることを是としない
0077デフォルトの名無しさん
2008/09/19(金) 13:20:28どんなアホ設計だよ
0078デフォルトの名無しさん
2008/09/19(金) 13:21:18> 自身を継承させることを是としない
あ、やっぱそうだよね、「カスタマイズは継承で」っていうモジュール設計はよくないよな
0079デフォルトの名無しさん
2008/09/19(金) 13:22:35実用性の面ではそんな雰囲気を感じるけど、
まあ検討材料としてはw
0080デフォルトの名無しさん
2008/09/19(金) 13:23:070081デフォルトの名無しさん
2008/09/19(金) 13:25:02別に誰も損しないんだから、もうちょっと良くなってもいいのにね、あれ
0082デフォルトの名無しさん
2008/09/19(金) 13:51:21http://thread.gmane.org/gmane.comp.lang.ruby.general/267400/focus=267475
> You can't even divide a Vector by a scalar quantity (you have to v*1/a instead. :/).
いやまあそれはどうでもいいようなw
0083デフォルトの名無しさん
2008/09/19(金) 14:21:45できた。
0084デフォルトの名無しさん
2008/09/19(金) 14:26:59エディタも動くようになったんで、
初心者向けのWEB上の入門サイトを
読みたいんだけど、どれを読めばいい?
0085デフォルトの名無しさん
2008/09/19(金) 14:30:440086デフォルトの名無しさん
2008/09/19(金) 15:24:16ここのフォントの大きさを、
最初から大きくしたいのですが、
どこの設定をいじればいいですか?
いまは、エディタを起動するたびに
設定しなおしてます。
これを、最初からというか
設定を保存したいのです。
一回ごとに毎回、毎回設定するの
めんどいですからね。
0087デフォルトの名無しさん
2008/09/19(金) 15:33:45めちゃめちゃに文字化けするんですけど??
それでいて、実行すると、ちゃんと表示されるんですけど??
0088デフォルトの名無しさん
2008/09/19(金) 15:37:130089デフォルトの名無しさん
2008/09/19(金) 15:47:14聞くよりもまず自分で模索するようにしてください
文字化けはたぶんエディタのフォント設定のせい。perlでも一応使える
0090デフォルトの名無しさん
2008/09/19(金) 15:48:14は自分で調べたら解決したのでもういいや
0091デフォルトの名無しさん
2008/09/19(金) 15:48:55perlで使うときは、perlのexeはどこに設定するの?
もしかして、rubyのexeのところにいれるの?
キモー
0092デフォルトの名無しさん
2008/09/19(金) 16:40:15これが動きません。
ひょっとして、ウチだけ???
0093デフォルトの名無しさん
2008/09/19(金) 16:41:34a = open('http://www.2ch.net/warn.txt') {|f| f.read }
print a;
↑これで動きました。
マジで感動。
0094デフォルトの名無しさん
2008/09/19(金) 17:46:17"a";
0095デフォルトの名無しさん
2008/09/19(金) 18:06:34ここはあなたの質問場ではありません
0096デフォルトの名無しさん
2008/09/19(金) 18:51:05必ず、
Kernel.require("C:\\1.rb")
とかって書かないといけないんです。それで、
open-uri.rbを開くと、その中で、また
require uri
とかって書いてあるじゃないですか。またrequireです。
ここでエラーが出るので(requierは使えないよっていう)
すべてのライブラリの中のrequireをKernel.requireに
置き換えないといけないのかな、、、って今思ってますけど、
どう思いますか。
0097デフォルトの名無しさん
2008/09/19(金) 19:02:19RGSSのマニュアルなりなんなりを読んでくれ
009821
2008/09/19(金) 20:33:30>>25
おお!ありがとうございます!
しかし見てみましたがかなり複雑な感じなんですね・・・
やっぱ色んな状況を想定したり文字コードなんかの処理等でこんなになってしまうんでしょうか
とりあえず俺のような初心者には無理っぽいですのでiPhoneで同じようなこと考えている人がいないか聞いてみることにします
ありがとうございましたおまいら
0099デフォルトの名無しさん
2008/09/19(金) 20:53:37def require(file)
Kernel.require file
end
ってしておけばKernelいらないと思う。
あとRGSSなら同人ゲ板のツクール質問スレのほうがよさそう。
0100デフォルトの名無しさん
2008/09/19(金) 21:21:47"ruby script/generate ..."とか"rake db:migrate ..."
とかスクリプトを実行すると、とんでもなく長い間待たされます。
どうしてこんなに遅いんでしょうか?
Core2Duoを使っていますが、20秒以上も待たされるので。。。。
何かよい解決策はないでしょうか?
0101デフォルトの名無しさん
2008/09/19(金) 21:42:18windowsとrubyの相性が悪いから。
ruby script/generate をすると、
1. 新しいrubyプロセスを起動し、
2. railsと関連ライブラリをすべて読み込んでから
3. scaffoldを実行するから、
そりゃ遅い。とくに 2. が。
0102デフォルトの名無しさん
2008/09/19(金) 21:42:25明らかに文が終わらないことが分かる場合、たとえば
開いたカッコがまだ閉じてないとか、二項演算子の第2項をまだ書いてないとか
の場合は語句(トークン)の間で行を変えていい。
そうでない場合(そこまでが文として正当に解釈しうる場合)は
¥ (円記号またはバックスラッシュ)を書いてから改行。
0103デフォルトの名無しさん
2008/09/19(金) 21:42:53>>21のあとに
require 'kconv'
fetch_result = imap.fetch(1..-1, "BODY[HEADER.FIELDS (SUBJECT)]")
print fetch_result[0].attr["BODY[HEADER.FIELDS (SUBJECT)]"].tosjis
ってしたら一通目のメールの件名がSJISで表示された。
公式マニュアル内をsubjectで検索かけたらすぐわかったので
落ち着いてじっくり読めば大抵のことは解決するのでは。
つーかnet/imapの本なんてなくね?
0104デフォルトの名無しさん
2008/09/19(金) 21:48:36そもそもIMAPについての知識がロクに無いんだろ
IMAPについての知識があるならnet/imapだけでできるはず
そういう場合は「めんどくさいけどどうすればいいですか」という聞き方になる
メール関連は簡単に扱って欲しくないから、これくらいでいいと思う
0105デフォルトの名無しさん
2008/09/20(土) 01:17:39開発に使っているマシンは圧倒的にwinが多い
そのwinでまともに動かないrailsは、
やはり個人の趣味サイト作りでしか使ないのか?
海外では非常によく利用されているpythonのdjangoは、
winでもストレス無く使える。
0106デフォルトの名無しさん
2008/09/20(土) 01:38:140107デフォルトの名無しさん
2008/09/20(土) 01:40:59>開発に使っているマシンは圧倒的にwinが多い
Railsだと、世界的にはMacかもしれんぞ。(要調査)
0108デフォルトの名無しさん
2008/09/20(土) 01:59:53わざわざRailsを使うためにMacを買うか?
しかも会社ならなおさらだ。
だからRailsは圧倒的に個人しか使わないんだろうー
やはりちょっとしたサイトはPHP、
中規規模以上はJavaに落ち着いているんじゃない。
0109デフォルトの名無しさん
2008/09/20(土) 03:35:19数人 → PHP
中規模 → JAVA
0110デフォルトの名無しさん
2008/09/20(土) 07:16:22>開発に使っているマシンは圧倒的にwinが多い
Rails使いはMacのほうが多い
RailsConf行ってみな、冗談じゃなくてほぼ全員Macだから。
いまだWindows使っているのはJava屋さんだろう
0111デフォルトの名無しさん
2008/09/20(土) 07:37:09無印 2.27kg ¥129,800〜¥179,800 ←重すぎ!
Air 1.36kg ¥229,800〜¥325,400 ←高すぎ!
Pro 2.45kg〜3.08kg ¥249,800〜¥329,800 ←重すぎ高すぎ!
もっと実用的なモデル出してくれたら考えるわ
0112デフォルトの名無しさん
2008/09/20(土) 07:42:08ツクールXPがRGSS1で
ツクールVXがRGSS2なのね。
そんで、RGSS1はrequire の使用がOKで、
RGSS2はKernel.require って書かないとだめなのね。
そんで、rubyに付属のライブラリ見ると、
中味が全部、require 'uri'
こういう形式で書いてあるのね。
そんで、そのままRGSSで書くと、エラーになるの。
0113デフォルトの名無しさん
2008/09/20(土) 07:44:04↑この形式だとエラーが出る。
require("C:\\uri.rb") ←(2)
↑この形式だとエラーが出ない。
絶対指定だとエラーがでない。
相対指定?だとエラーがでる。
(2)で書いても、その1行だけはエラーにならないけど、
その行で呼び出したライブラリの中味は
(1)の形式で書いてあるので、そこでエラーになる。
どうしたらいいかな?
0114デフォルトの名無しさん
2008/09/20(土) 07:46:140115デフォルトの名無しさん
2008/09/20(土) 07:58:10一応ここにも書いてあるけど
いったいどうしたらいいかな。
0116デフォルトの名無しさん
2008/09/20(土) 08:06:06$: << File.expand_path(".")
require "ファイル名"
Game.exeを起動したディレクトリにあるライブラリをロードする
"."を相対パスに変更すれば、好きなディレクトリを指定できる
↑あとこれをよくみかけるんだが、
どういうことなんだろう??
0117デフォルトの名無しさん
2008/09/20(土) 08:16:18上でも書いている人がいるが、RGSSはRubyを改造したもので、
改造部分に関するエラーは俺たちには全くわからない
エラーが出る理由も、わざわざそうしている理由もわからない
売り物なんだし、改造した人に聞け
0118デフォルトの名無しさん
2008/09/20(土) 08:29:19出力をDOSプロンプトにするのってどうやるの?
0119デフォルトの名無しさん
2008/09/20(土) 08:48:23たかがこれだけの出力するのに何秒かかってんだよ
perlだったら3秒で出るのに。
0120デフォルトの名無しさん
2008/09/20(土) 08:50:200121デフォルトの名無しさん
2008/09/20(土) 08:50:25まあそのへんはコマンドプロンプトに文句言ってくれ
Rubyの処理自体は3秒くらいで終わってる
0122デフォルトの名無しさん
2008/09/20(土) 09:05:04DOSプロンプトに出すにはどうしたらいいの?
0123デフォルトの名無しさん
2008/09/20(土) 09:12:05irbは返り値の表示の設定ができるが
0124デフォルトの名無しさん
2008/09/20(土) 09:19:25そこから直接コマンドラインで実行したら
3秒でできた。
でもRDEから実行したいんよ。
どうしたらいいかな?
DOSプロンプトに出力する方法ね。
0125デフォルトの名無しさん
2008/09/20(土) 09:33:56東京Ruby会議で「主にMac使ってる人」って質問で6〜7割手をあげてたような気が
0126デフォルトの名無しさん
2008/09/20(土) 09:38:12Windowsでもプログラミング環境エディションとか出せばいいのに
0127デフォルトの名無しさん
2008/09/20(土) 09:45:10でなけりゃあどべ使い以外にMacが売れる理由がないし、Emacsが死なない理由がないし、Rubyが支持される理由もない
0128デフォルトの名無しさん
2008/09/20(土) 11:32:09Windowsにも E Text EditorとかIntypeとしてクローン作られてるっぽいけど。
0129デフォルトの名無しさん
2008/09/20(土) 11:56:29クローンはどいつもこいつもシェアウェアでな
いや、別にいいんだが、入金めんどい
成功したら安価版とか作ってくれ
0130デフォルトの名無しさん
2008/09/20(土) 11:59:260131デフォルトの名無しさん
2008/09/20(土) 13:42:29これを説明するのって、「ローカル変数 str に 文字列 'hoge' を
代 入 す る
」
でいい? 厳密には代入ではなくて他の表現が妥当だとかそういうのはない?
0132デフォルトの名無しさん
2008/09/20(土) 13:48:28最近の議論とか空気とかを元にしてる初めてのRubyではどう書いてある?
とりあえず、誰も文句は言わないと思うよ
束縛するとか言う言い方してる奴がいたら鼻糞ほじっとけ
0133デフォルトの名無しさん
2008/09/20(土) 13:51:570134デフォルトの名無しさん
2008/09/20(土) 13:59:47つうか代入ってなによ?
0135デフォルトの名無しさん
2008/09/20(土) 14:06:38データと名称の関連付け。なまえをつけること。Naming convention。
Rubyでは初期化宣言と同時に行われるのでちょっとわかりにくい。
というのでどう
0136デフォルトの名無しさん
2008/09/20(土) 14:23:590137デフォルトの名無しさん
2008/09/20(土) 14:27:35ctrl+C押しても止まんないんだけど。
0138デフォルトの名無しさん
2008/09/20(土) 14:37:300139デフォルトの名無しさん
2008/09/20(土) 14:38:26□アイコンの強制終了ってあるでしょ
0140デフォルトの名無しさん
2008/09/20(土) 15:22:28a = Hoge みたいな表現が、名前付けなのは Haskell とかだけど、
そっちとは明らかに違うし。
0141デフォルトの名無しさん
2008/09/20(土) 16:59:07RDTは糞重いし
もうEmacsしかないじゃないか!
0142デフォルトの名無しさん
2008/09/20(土) 17:20:29クラスをインスタンス化したものがインスタンス
0143デフォルトの名無しさん
2008/09/20(土) 19:22:080144デフォルトの名無しさん
2008/09/20(土) 19:35:570145デフォルトの名無しさん
2008/09/20(土) 19:36:510146デフォルトの名無しさん
2008/09/20(土) 20:57:24他の言語っつってもCの代入とは明らかに違うだろうに。
Haskellの代入とも違うけどさ。
0147デフォルトの名無しさん
2008/09/20(土) 22:32:07のように代入された状態で str を使うと 'hoge' という情報を取り出せるという点では
どの言語もだいたい一緒だわな
0148デフォルトの名無しさん
2008/09/20(土) 23:27:20if strpos('ABCDE', 'ABC'){
echo 'true';
}else{
echo 'false';
};
とか書いてみたんだが、どうやらelse部が実行されるらしい
strposは'ABCDE'の中から'ABC'の位置を探して返すんだが、整数の 0 が返ってて、0 はPHPでは偽なんだそうな
なんとなくがっかりさんだ
というか、Perl4 を勉強してたころは真偽判定ってどう書いてたんだっけ、覚えてないな
0149デフォルトの名無しさん
2008/09/20(土) 23:31:42Ruby は nil や false が返って来ない限り真だからな
真偽判定はどんどん書けて気楽だ
0150デフォルトの名無しさん
2008/09/20(土) 23:38:04ヌル文字とかの関係? 関係ないよね?
0151デフォルトの名無しさん
2008/09/20(土) 23:48:35>>150
0 を偽にしなかったら 1 を偽にしなきゃいけなくなるじゃないか(-1 でも可)
0152デフォルトの名無しさん
2008/09/20(土) 23:49:01知能が低い
0153デフォルトの名無しさん
2008/09/20(土) 23:50:28Cから発想すればふつー0が偽になるんだろう。
CにもPerlにもboolean型は無いしな。
0154デフォルトの名無しさん
2008/09/21(日) 05:19:55これってサブルーチンと何が違うの?
0155デフォルトの名無しさん
2008/09/21(日) 07:53:290156デフォルトの名無しさん
2008/09/21(日) 08:00:34定義された場所のスコープ(Binding)を受け継いでいるところ
0157156
2008/09/21(日) 08:05:56×155
○154
0158デフォルトの名無しさん
2008/09/21(日) 08:23:27手続きオブジェクトは原理的にはサブルーチン、雰囲気では関数ポインタでおk
オブジェクトになってしまってるとこと、>>156の言うように定義時の環境が保存されてるとこが一般的なものとは違うけど
サブルーチンオブジェクトと呼んでもよかったシロモノで、Rubyではたまたま手続きと呼んでるだけに過ぎない
プロシージャ(Proc-edure)とサブルーチンに決定的な違いがないのと同じ
0159デフォルトの名無しさん
2008/09/21(日) 09:31:58> Cの代入とは明らかに違うだろうに。
どう違うの?
0160デフォルトの名無しさん
2008/09/21(日) 11:17:02適当。分かりやすい基準はたぶん無い
0161デフォルトの名無しさん
2008/09/21(日) 11:22:28rubyのCGIとか、railsとかやってみたいんだけど。
0162デフォルトの名無しさん
2008/09/21(日) 11:39:21根本的には同じデータのコピーなんだが
Rubyは基本的に「オブジェクトへの参照」を扱うため
代入が基本的に「参照のコピー」になるのに対し
C/C++は参照というクッションが必ずしも存在せず
いきなり「オブジェクトそのもの」を扱うことが出来てしまうため
(参照を扱うなら明示的に参照を扱うよう書く必要がある)
代入が「実体のコピー」(Rubyでいうa=b.dupに近い…がこれも同じではないな)になることが普通にある
0163デフォルトの名無しさん
2008/09/21(日) 11:45:01InstantRails
0164デフォルトの名無しさん
2008/09/21(日) 12:04:46構造体(オブジェクト)のコピーが起こること、を問題とするわけね。
変数の実体が値である(C/C++)か、変数の実体が参照である(Ruby/Java/Python...)か、
という点が違いであって、名前に実体を関連付ける、という「代入」で問題ないんじゃないかと。
0165デフォルトの名無しさん
2008/09/21(日) 12:56:02>そういやずっと前から思ってたんだけど、Perl とかで整数の 0(や文字の "0")が真偽値の偽とみなされるようになったのってなんで?
>ヌル文字とかの関係? 関係ないよね?
Perlは考え方としてCの延長にあるから、booleanがない(つまりfalseがない)からかわりに 0 を偽としている。
RubyはLispやSmalltalkに影響を受けているから、nilとfalseだけを偽にしている。
nullじゃなくてnilってところがポイント。
0166デフォルトの名無しさん
2008/09/21(日) 13:01:01ビットの 0 と 1 で 0 が negative だったから、が答かと
0167デフォルトの名無しさん
2008/09/21(日) 13:30:26"0" が 0 に同一視されてると見るか
0168デフォルトの名無しさん
2008/09/21(日) 13:32:330169デフォルトの名無しさん
2008/09/21(日) 13:37:26自動変換されるという便利だが怖い仕様・・・・・・
0170730
2008/09/21(日) 13:40:320171デフォルトの名無しさん
2008/09/21(日) 13:49:43めんどくさいよな
というかRuby(が参考にしたLisp系列)が条件文のこと優先して動作を作ったというのが正しいのかも
0172デフォルトの名無しさん
2008/09/21(日) 14:00:41変態だったら誉め甲斐もあるんだが、ただ変なだけでは…
0173デフォルトの名無しさん
2008/09/21(日) 14:04:120174デフォルトの名無しさん
2008/09/21(日) 14:08:33この挙動は……
0175デフォルトの名無しさん
2008/09/21(日) 14:09:24Rubyしかできないとかマジ生ゴミ
0176デフォルトの名無しさん
2008/09/21(日) 14:27:08うん、だから、偽といえるかどうかではなく、そもそも型が同じであるかどうかを一緒にチェックする
PHP の ==(否定は!=) での比較は単に値が等しいことをチェックするが、 === は型も等しいことをチェックする(否定は!==)
>>148でしたい処理は
if (strpos('ABCDE', 'ABC') !== FALSE){
echo 'matched';
}else{
echo 'unmatched';
};
とか書くのが素直
!= で比較すると 0 が整数であるという情報がチェックに用いられないので常に結果が偽になってしまう
このへんは strpos のマニュアルにもサンプルコードつきで警告として載ってたりする
ttp://jp2.php.net/strpos
個人的には Ruby の gsub の挙動が極悪なのと似たような構造上欠陥じゃないかと思う
0177デフォルトの名無しさん
2008/09/21(日) 14:31:320178デフォルトの名無しさん
2008/09/21(日) 15:42:200179デフォルトの名無しさん
2008/09/22(月) 02:23:34ありがとう。できたよ。
クッキングなんとかがうごいた。
で、次、これの開発ってどうやればいいの?
0180デフォルトの名無しさん
2008/09/22(月) 03:37:130181デフォルトの名無しさん
2008/09/22(月) 07:16:080182デフォルトの名無しさん
2008/09/22(月) 10:27:50数あるIDEの中で、どれを使えばいいのかということ。
0183デフォルトの名無しさん
2008/09/22(月) 10:32:37どれも糞
0184デフォルトの名無しさん
2008/09/22(月) 10:34:300185デフォルトの名無しさん
2008/09/22(月) 10:38:090186デフォルトの名無しさん
2008/09/22(月) 10:45:140187デフォルトの名無しさん
2008/09/22(月) 10:48:140188デフォルトの名無しさん
2008/09/22(月) 10:52:090189デフォルトの名無しさん
2008/09/22(月) 10:57:22多少いい加減なのは仕方ない
0190730
2008/09/22(月) 11:01:460191デフォルトの名無しさん
2008/09/22(月) 11:04:19関数って何ですか???
実際上はEclipse+プラグインかNetBeansかEmacs/Vimくらいしかないんだから順に試しとけ
Javaの実行環境入れるのめんどくさい?もんくゆーな
0192デフォルトの名無しさん
2008/09/22(月) 11:07:510194デフォルトの名無しさん
2008/09/22(月) 11:15:51Rubyの用語集にも書いてあるくらいだから
0195デフォルトの名無しさん
2008/09/22(月) 11:18:09クラスに関数があるのか?
あれは多くの言語で「いや、これを関数って呼ぶのはなんか違うな」と判断されてメソッドと呼ばれているものだと思うが
仲間外れはC++くらい?
0196デフォルトの名無しさん
2008/09/22(月) 11:22:19ともあれ、Ruby学ぶ気ないんだなと思われるのは必定
それによって起こる結果については暴れないことだ
0197デフォルトの名無しさん
2008/09/22(月) 11:31:56同じことを2度目にするときは受忍範囲内なんだが
0198730
2008/09/22(月) 11:35:27副作用があるものは関数とは呼べないのは同意だけど、
だとしたらプロシージャと呼ぶべき。
それに、メソッドという呼び方をすることがRubyを学ぶことにつながるとは言えない。
俺はもうRubyの大体のことはわかったし、
実際にRubyを使って新しいWEBサービスを稼働させている。
0199デフォルトの名無しさん
2008/09/22(月) 11:40:45なるほど、では君は初心者ではない
このスレから卒業し早々に立ち去りたまえ
0200デフォルトの名無しさん
2008/09/22(月) 11:43:590201デフォルトの名無しさん
2008/09/22(月) 11:45:53arr = Array.new
arr.m
ここで「arrはArrayだからArray#mapでmap」という判断をして欲しい所存
0202デフォルトの名無しさん
2008/09/22(月) 11:48:21補完試すたびにソース全体をevalしまくりだな
0203デフォルトの名無しさん
2008/09/22(月) 11:51:36やっぱりAdaとかSimulaとか、あっちのほうの言語じゃ
メソッドは何が起源なんだろうか。Smaltalkとか?
0204デフォルトの名無しさん
2008/09/22(月) 11:59:10え、そういう状況に即した判断をするのがIDEの便利なとこなんじゃないの?
そこで「mのつくメソッド全部から選んでね」と表示するんじゃEmacsと変わらんぞ
0205730
2008/09/22(月) 12:02:49アランケイじゃない?
アランケイごときがsmalltalkを考えて、言語をわかりやすく庶民(笑)に伝えるために
オブジェクトにメッセージを送るという考えかたで説明したのが起源じゃないかな。
で、オブジェクトにメッセージを送る「方法」をそのままメソッドと呼んだだけ。
だから、別に「メソッド」は学術的に意味がある言葉ではない。
0206730
2008/09/22(月) 12:12:21それまでは普通の胡散臭いタイプの学者のおっちゃん。
ただ単に運良くオブジェクト指向が流行ったからアランケイがもてはやされるようになったというだけ。
オブジェクト指向は流行るべくして流行ったというわけでもないから、
本当に運が良かっただけと言うべきだね。
アランケイの言葉を未だに使い続ける理由はそれだけだね。
0207デフォルトの名無しさん
2008/09/22(月) 12:26:130208デフォルトの名無しさん
2008/09/22(月) 12:31:01それまでは普通の胡散臭いタイプの学者のおっちゃん。
ただ単に運良くGUIが知られてアランケイがもてはやされるようになったというだけ。
SmalltalkタイプのGUIは流行るべくして流行ったというわけでもないから、
(ジョブズがたまたまAltoで動くSmalltalkシステム=暫定Dynabookを見て感動しただけで、
Alto向けにはSmalltalk以外にもStarとかのいろんなタイプのGUIがあったから)
本当に運が良かっただけと言うべきだね。
アランケイの言葉を未だに使い続ける理由はそれだけだね。
0209730
2008/09/22(月) 12:37:54メソッドと言わないと通じないというわけでもないしね。
0210デフォルトの名無しさん
2008/09/22(月) 12:52:54どう呼んでもいいのならメソッドと呼べ
Rubyではそれをメソッドと呼ぶ
0211デフォルトの名無しさん
2008/09/22(月) 12:58:270212デフォルトの名無しさん
2008/09/22(月) 14:22:12どう呼んでも良いことを認めたら、それこそ自由に呼んで良いんじゃないの?w
0213デフォルトの名無しさん
2008/09/22(月) 17:38:14どう呼んでも問題ないんだよな?
…とまあ、そういう話があるので
「Rubyで def や define_method で定義するのは全てメソッド
一部メソッドは関数と呼ばれることがあるが
それらも全てメソッドであることをお忘れなく」
程度にしておこうな
まあ、モジュールほど紛らわしい単語ではないから
関数と書かれていても解るが
0214730
2008/09/22(月) 18:30:430215730
2008/09/22(月) 18:31:480216730 ◆KL6EsW0z.s
2008/09/22(月) 18:32:320217デフォルトの名無しさん
2008/09/22(月) 18:37:290218デフォルトの名無しさん
2008/09/23(火) 18:50:38新規railsプロジェクト、で、
サーバーのところで
webrickってのしか選べないんだが、
これってなんなの?
WEBサーバーって言ったらアパッチじゃないの?
0219デフォルトの名無しさん
2008/09/23(火) 18:52:04すでにinstantrailsで、railsはインストール済みなのだが、
「railsがインストールされていません」
というメッセージが出てきて、勝手にまたrailsをインストール
された。つまり、今パソコンにrailsが2つ入っているわけで
無駄このうえない。どういうこと?
instantrailsのrailsと、
netbeansのrailsと、使い分けろってこと?
0220デフォルトの名無しさん
2008/09/23(火) 19:16:13ブラウザ起動して、
localhost:3000がアドレスに入って、
サンプルのページが出てきたんだが、
これってもしかして、netbeans起動中は
勝手にWEBサーバーも起動しているということか?
0221デフォルトの名無しさん
2008/09/23(火) 19:53:18自分で調べりゃ早いのに
0222デフォルトの名無しさん
2008/09/24(水) 09:18:36このページに書いてあるとおりにやっても
うまくいきません
0223デフォルトの名無しさん
2008/09/24(水) 09:19:45「AddressBookServer」を起動します。
ステータスが「Started」になれば、Web
サーバの起動は完了です。
↑こう書いてあるのですが、
ステータスが
starting...
で10秒たって、
stopped
になってしまいます。
なんでサーバーがスタートしないんでしょうか?
0224デフォルトの名無しさん
2008/09/24(水) 12:06:26とりあえずここまでできた。
IDEを使わずコマンドラインでやるのが
結局一番早かった。
0225デフォルトの名無しさん
2008/09/24(水) 12:57:46ファイヤーウオールで
アプトナの通信をブロックしてたのが
原因だった
アプトナの通信を
「すべて許可する」
にしたら、マニュアルの通りに動いたーーーーーーーー
ガオーーーーーーーーーーーーーー
0226デフォルトの名無しさん
2008/09/24(水) 13:18:38サーバーがあるの?
0227デフォルトの名無しさん
2008/09/24(水) 13:19:23まずインストーラーの段階からして3つあるし、
エディターは3つあるし
IDEは3つあるし
サーバーは3つあるしで、
いいかげんにしろっての。
022850
2008/09/24(水) 14:12:41で。もう少しここで話をさせてください。
>>71
> local visibilityとかいう新機能とは違うのかな。
ちょっと調べてみたのですが、2006年ごろで話は止まっているのではないでしょ
うか?
>>74-76
すみませんが、私が問題視しているのはevalではないのです。evalを持つ言語、
オープンクラスを持つ言語に共通する点ではなく、Ruby固有のクラス実装を私
は問題視しています。
具体的には、以下のようなことです。
・あるクラスを継承するときに、親クラス名.methods などを頻繁に実行して、
存在するすべてのメソッドやインスタンス変数の名前を確認して、衝突を避け
なければならない。
・あるクラス内だけで使う、公開しないツールのようなメソッドを作れるよう
な名前空間がどこにもない。
これらを解決する方法が、コーディング規約によるプレフィックスのみという
のは、ずいぶん原始的で、JavaやC++に慣れた人なら不自由を感じると思うの
ですが。しかもRuby の大クラス主義で、既存のプロパティの数は膨大です。
そこで、皆さんがどのように感じておられるのか、お聞きしてみたいと思いま
したが、このスレの反応を見てもやはりあまり問題視されていないようで、こ
れはやはり意外でした。
022950
2008/09/24(水) 14:13:55私が言及していた、継承を必要とするフレームワークとは Rails のことです。
継承が危険だとはよく言われますが、、継承を多用しなければ Railsの簡潔さ
はかなり損なわれたことでしょう。
継承そのものが悪という視点には、あまり賛同できません。例えばプロトタイ
プベースの言語なら、委譲でも同様の問題が起こるからです。継承にせよ委譲
にせよ、他のオブジェクトへのプロパティの探索が自動的に行われる仕組みが
ある限り、この問題は必ず起こるでしょう。それは簡潔さとのトレードオフです。
しかしここでは、継承の善悪にはこれ以上踏み入りたくないのです。私は、
Rubyにおいては継承がいっそう危険になっているという点に、話を絞りたいです。
そもそも、継承の良し悪しや好き嫌いにかかわらず、私たちは業務でRailsを使
わざるを得ません。
>>76
トップレベルにメソッド定義というのは、フレームワークが強制するという話
ではなく、初心者プログラマが知らずに作ってしまう危険性を言っています。
トップレベルの関数がObjectクラスのprivateメソッドだというのは確かにう
まい仕組みだと思いますが、これを知っている人は、Ruby利用者の半数以下だ
と思います。これは直感的に予想しづらい、危険な仕様ではないでしょうか?
何も知らないでトップレベルに def object_id; 0 end などと書けば、すべて
のオブジェクトインスタンスのidが0になってしまうのです。そしてこれを書
くことは、プロジェクトに関わるどの人間にも可能なのです。
023050
2008/09/24(水) 14:15:25C++ ... アクセス、改変してはいけないものには、ユーザがアクセスする方法
が決して存在しない。
Python, Java ... アクセス、改変してはいけないものは、ユーザが意図しな
ければアクセス、改変されないが、意図すれば誰もが自由にアクセス、改変できる。
Ruby ... アクセス、改変してはいけないものを保護する方法が乏しく、ユー
ザが意図せずにアクセス、改変してしまうことがある。
つまり、私が問題にしているのは、アクセス、改変が可能かどうかではなく、
それを意図していないのに誤ってアクセス、改変してしまう危険についてなの
です。
この二者は、Rubyはフレキシブルな言語だという主張によって、しばしば混同
されがちだと思います。フレキシブルなのは結構ですが、自分の足を撃ちたく
はないのです。
以上です。長々と失礼しました。
0231デフォルトの名無しさん
2008/09/24(水) 14:28:43あなたはC++、Python、Javaを10年くらいやりこんで、
それで今回、rubyに入ってきたような人なの?
かなりプロフェッショナルな印象を受けるが。
0232デフォルトの名無しさん
2008/09/24(水) 14:42:40主張はだいたい合ってるし、正しい。
ただ、この問題がRubyで簡単に解決できるかというと、たぶん実装の都合で難しいんじゃないかな。
Pythonのmanglingだっけ、あれが欲しいとは思うんだけど、class_evalとかinstance_evalとかあるRubyでPythonと同じように実装可能かと言われると、分かんない。
ただ、manglingは(不細工ではあるけど)手動でできるので、mangling程度の隠蔽でよければ、手動で頑張ればできるということになる。手動だとほんと不細工だけど。
あとは、Rubyに限らずスクリプト系はどれもそうだけど、「問題があったら直せばいい」という精神をもつしかないと思うよ。
たしかにかぶる可能性はあるけど、そんなにしょっちゅうかぶることはないし、かぶったらかぶったで直せばいい。そんな感じ。
0233デフォルトの名無しさん
2008/09/24(水) 14:53:42rubyを始めようと
ttp://rubyforge.org/frs/?group_id=167&release_id=26150
からデスクトップにダウンロードしようとしたところ、99%でなぜか止まってしまいます。
cpuが100%になり、ブラウザが固まってしまいます。
186-26を落とそうとしても止まって「応答なし」の状態になってしまいます。
ダウンロードツールでもツールが固まってしまいました。
試しに他のサイトでダウンロードを試すと出来ました。
ruby186-27_rc.exeが取れません。
ブラウザはsleipnir2.8 OSはxp sp3です。
これは僕のPCの問題なのでしょうか?よろしくお願いします。
0234デフォルトの名無しさん
2008/09/24(水) 15:26:38アパッチいらないんじゃん。
なんでアパッチインストールさせたのさ?
0235デフォルトの名無しさん
2008/09/24(水) 17:26:47exeファイルをダウンロードしたから、それをアンチウィルスソフトがチェックしているんじゃない?
アンチウィルスソフトを一時的に無効にしてみるとか。
0236デフォルトの名無しさん
2008/09/24(水) 21:17:17Java の IDE とアプリケーションサーバがいくつあるか調べてから文句言ってくれ。
0237デフォルトの名無しさん
2008/09/24(水) 21:21:36以下を守れば大丈夫。
・自分の足を打ちがちな馬鹿にはコードを触らせない
・Railsのフレームワーク部分のコードは一通り読む
0238デフォルトの名無しさん
2008/09/24(水) 21:26:430239デフォルトの名無しさん
2008/09/24(水) 21:31:05エディターズレビューとかあんじゃん
0240デフォルトの名無しさん
2008/09/24(水) 21:37:20周波数16kHzだから
".unpack("s*") をつかって数値化はできたんだけど
数値が25000くらいあって。
その単語は1.3秒くらいなんだけど
単位がわからなくて。わかるひといますか?
0241デフォルトの名無しさん
2008/09/24(水) 21:41:32日本語でおk
てか周波数と整数のBit数ってなんか関係あるん?
書いててなんかありそうな気もしてきたが、たぶん関係ないんじゃね?
というかそういうバイナリ扱うのはRubyは不得意なんだが外部プログラム使えないのか
0242デフォルトの名無しさん
2008/09/24(水) 21:43:38知らない人かなり多いのかな。。。
0243デフォルトの名無しさん
2008/09/24(水) 21:46:22外部プログラム使えというアドバイスはけっこう正しいかと
0244デフォルトの名無しさん
2008/09/24(水) 21:47:270245デフォルトの名無しさん
2008/09/24(水) 21:48:43単位がわからなくてはね。
0246デフォルトの名無しさん
2008/09/24(水) 21:49:300247デフォルトの名無しさん
2008/09/24(水) 21:52:22サウンドプログラミング4
http://pc11.2ch.net/test/read.cgi/tech/1185340076/
0248デフォルトの名無しさん
2008/09/24(水) 21:53:39特徴抽出したい。
これは普通ツールによって行われるが
今自分で作ってる
以上
0249デフォルトの名無しさん
2008/09/24(水) 21:55:39アホ扱いされるのなら
0250デフォルトの名無しさん
2008/09/24(水) 21:56:41フォーマットの仕様読んでわからないなら諦めたほうが。
0251デフォルトの名無しさん
2008/09/24(水) 21:57:16そのファイル形式の構造の問題だ
0252デフォルトの名無しさん
2008/09/24(水) 22:58:25普通、ウェブアプリで検索とかのリクエスト送って、リクエストの結果を
送ったページと同じページに表示させる場合、リクエストを送るのは同じページのメソッドにしたほうがいい?
なんか一緒に作ってる人が
Aページ⇒Bメソッド⇒Aページのメソッドって感じにしててどうなのかな?って思ったんです
なんかわかりにくくてごめん
025350
2008/09/24(水) 22:58:28プロフェッショナルとは恥ずかしくてとても言えませんが、経歴と年数はだい
たい当たっています。
>>232
大変参考になりました。ありがとうございます。
instance_eval等ですか。なるほどこれがあると、マングリングとの両立は難
しい気がします。念のため確認しましたが、Pythonには instance_evalに当た
る機能はないようです。
内部プロパティ名のコーディング規約は、なるほど手動マングリングが、不恰
好ですが現実的ですね。
最後に、名前は早々衝突しないし、もし衝突したなら直すというのが、Rubyコ
ミュニティ(というかスクリプティング界隈)の精神なのですね。すると自動
テストが、推奨というより必須になるわけですね。当たり前のことですが、改
めて目からうろこが落ちました。
質問してよかったです。ありがとうございました。
0254デフォルトの名無しさん
2008/09/24(水) 23:00:29普通、ウェブアプリで検索とかのリクエスト送って、リクエストの結果を
送ったページと同じページに表示させる場合、リクエストを送るのは同じページのメソッドにしたほうがいい?
なんか一緒に作ってる人が
Aページ⇒Bメソッド⇒Aページのメソッドって感じにしててどうなのかな?って思ったんです
なんかわかりにくくてごめん
0255デフォルトの名無しさん
2008/09/24(水) 23:01:250256デフォルトの名無しさん
2008/09/24(水) 23:03:32Ruby関係ないしそもそもそのへんは設計どうでもいいからわかりやすいほうにしろ
メソッドって言葉の使い方間違ってねーか?まあいいや
0257デフォルトの名無しさん
2008/09/24(水) 23:05:17どっちかというと基本から何をどうすればいいのか分かっていないのでは。
>>240
音声圧縮についてのことでもなさそうだし、普通のPCMの話だとおもうけど
音声がどのようにしてデジタルに符号化されているのかを理解していれば、
単位が分からんとか言い出すはずがないんだが。
データサイズ[bit] = 量子化ビット数[bit] * サンプリング周波数[Hz] * 時間[s] * チャンネル数
ここまではRubyと何の関係もないのでもう一つ言っとくと、packでの"s"は
その環境のエンディアンに依存しているので、よそでは動かないかもよ。
ちゃんとフォーマットにあわせて"n"とか"v"を使うように。
0258デフォルトの名無しさん
2008/09/25(木) 00:42:13>最後に、名前は早々衝突しないし、もし衝突したなら直すというのが、Rubyコ
>ミュニティ(というかスクリプティング界隈)の精神なのですね。すると自動
>テストが、推奨というより必須になるわけですね。当たり前のことですが、改
>めて目からうろこが落ちました。
いちおう補足しておくけど、エラーはテストで見つかるけど、もしコンパイル時に見つかるならそれにこしたことはない。そっちのほうが作業効率いいしね。
ただ、実はコンパイル時の検査は必須ではなく、テストで見つけるというアプローチでも十分実用的というだけ。
いままで「コンパイル時にできるだけエラーを見つけないといけない」「名前の衝突による思わぬバグを防ぐような仕組みを用意してないといけない」と
思いこんでいたんだけど、実はそうでもなかったよ、慣れればなんとかなるよ、という経験をしてほしいなー
というおっさんのひとりごとでした。
0259デフォルトの名無しさん
2008/09/25(木) 00:46:04>普通、ウェブアプリで検索とかのリクエスト送って、リクエストの結果を
>送ったページと同じページに表示させる場合、リクエストを送るのは同じページのメソッドにしたほうがいい?
送信先は同じメソッド、ただし中身は別メソッドとかでいいんじゃないの?
def index
if params['q'] # q パラメータがあれば検索結果を表示
show_search_result()
else
show_items()
end
end
とか
def index
if ENV['REQUEST_METHOD'] == 'POST' # postメソッドなら検索結果を表示
show_search_result()
else
show_items()
end
end
とか。
しかし日本語下手だな。なんとかしてくれ。
0260デフォルトの名無しさん
2008/09/25(木) 00:58:11PRGってやつ?
0261デフォルトの名無しさん
2008/09/25(木) 07:30:35ある程度慣れた人だと、shebang や require 以外で最初に書くのは
module になる気がする
要るか判らんが、とりあえず空間切っておくか、みたいな
0262デフォルトの名無しさん
2008/09/25(木) 09:05:110263デフォルトの名無しさん
2008/09/25(木) 12:11:04ファイル内容を puts した瞬間に
「しまったこれShiftJISかようわ矢印キー効かね」
というようなことを大多数の端末で避けたいです
0264デフォルトの名無しさん
2008/09/25(木) 12:21:02ENV に情報がなければ無理だろな
Windowsのコマンドプロンプトでは特に情報がないようだ
0265デフォルトの名無しさん
2008/09/25(木) 15:36:52toeuc 決め打ちしておくのも変だし
0266デフォルトの名無しさん
2008/09/25(木) 16:08:59要はholdしたいんだけど
0267デフォルトの名無しさん
2008/09/27(土) 01:13:27TkcItemのサブクラスを作ろうとするとrequire 'tk/canvas'が必要になるのはなぜ?
0268デフォルトの名無しさん
2008/09/28(日) 03:56:410269デフォルトの名無しさん
2008/09/28(日) 14:35:51packとかunpackがわかりくすぎて、理解できません
0270デフォルトの名無しさん
2008/09/28(日) 14:55:34packはC参考にしれ
0271デフォルトの名無しさん
2008/09/28(日) 15:22:39while bin = f.read(16)
bin.each_byte{|byte|
print '%02X ' % byte
}
puts
end
}
0272デフォルトの名無しさん
2008/09/28(日) 15:46:05attr_reader :x, :y
def xy=(x, y=nil)
@x = x
@y = y || x
end
end
a = XY.new
a.xy=(1, 2)
というのを実行すると、
SyntaxError: compile error
syntax error, unexpected ',', expecting ')'
となってしまいます。
普通にメソッド呼んでいるだけなんですが、何が悪いんでしょうか。。
=のつかないメソッド名だと大丈夫なんですが…
0273デフォルトの名無しさん
2008/09/28(日) 17:00:00リファレンスマニュアルによると、代入演算子は次の形で再定義できるという
def foo=(value) # obj.foo = value
なので、xy=(x, y=nil) のメソッドを呼ぶには次のようにする
a.xy = 式
そのエラーは式の部分が (1,2) なので文法エラーになっているということ。
value = (1, 2) という式はRubyでは解釈できない。
という話だと思う。 たぶん。 信用度 80% くらい。
0274デフォルトの名無しさん
2008/09/28(日) 18:47:03高いところしかないの?
さくらのライトプランで動かないの?
なるべく月500円以下のところを
紹介してほしいんだけど。
0275デフォルトの名無しさん
2008/09/28(日) 18:58:38そもそものRoR動かすこと自体がかなりサーバ負荷の高い行為だから、
収容人数の多い安いレンタルサーバでは実用的な速度ではまず動作しない
専用サーバと呼ばれる、少人数あるいは自分たちだけの買い取りサーバを使うんだね
0276272
2008/09/28(日) 19:02:27ありがとうございます。
a.xy=(何か)
という形は単なるメソッド呼び出しだと思っていたのですが、
実際には代入用の特別な呼び出しで、「何か」の部分は代入の右辺に
使えるような式である必要があり、普通のメソッドと同じようには
いかない、ってことなんでしょうか。
結局、調査の末これならできるということがわかりました。。
a.send(:xy=, 1, 2)
実際は ActiveRecord::Base#attributes= なんですが。
0277デフォルトの名無しさん
2008/09/28(日) 19:09:560278272
2008/09/28(日) 19:41:41それだと @x が [1, 2] になっちゃうんです…
ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin8]
0279デフォルトの名無しさん
2008/09/28(日) 20:17:45attr_reader :x, :y
def xy=(v)
@x, @y = v
end
end
a = XY.new
a.xy = 1, 2
0280デフォルトの名無しさん
2008/09/28(日) 20:55:34input = "aaa¥nbbb¥nccc¥n"
output = open("|cat -n", "r+b") do |io|
io.write(input) if input
io.read
end
でいけるかなと思ったのですが、io.read()でブロックされるようで、うまくいきません。
0281デフォルトの名無しさん
2008/09/28(日) 21:06:48io.close_write()をいれるとできました。
input = "aaa¥nbbb¥nccc¥n"
output = open("|cat -n", "r+b") do |io|
io.write(input) if input
io.close_write() ## 追加
io.read
end
0282デフォルトの名無しさん
2008/09/28(日) 21:17:080283デフォルトの名無しさん
2008/09/28(日) 21:29:150284デフォルトの名無しさん
2008/09/28(日) 21:41:560285デフォルトの名無しさん
2008/09/28(日) 21:57:460286デフォルトの名無しさん
2008/09/28(日) 22:18:04http://www.ruby-lang.org/ja/man/html/_B1E9BBBBBBD2BCB0.html
>プログラミングの利便のために一部のメソッド呼び出しと制御構造は演算子形式をとります。
>ほとんどの演算子は特別な形式のメソッド呼び出しですが、(後略)
ということだそうだから、普通のメソッド呼び出しとは違うんだろう。
だいたい2項演算子の引数が複数だったりすると混乱の元にしかならんしな。
f( a + 1, 2) と書いたら、実は f( a+(1, 2) ) でしたとか。
0287デフォルトの名無しさん
2008/09/29(月) 04:05:45サンプルコードを見ても実際にどんな時につかうのかが?
Rubyのライブラリなんかで、Vistorパターンを実際に使っているソースはありませんでしょうか?
0288デフォルトの名無しさん
2008/09/29(月) 04:09:01安いRailsのホスティングサーバー - Core
http://d.hatena.ne.jp/core/20080906/1220715811#c
野ログはノロキュアMaxHeart - SlicehostでそれなりにRailsを使っている感想 , Rails動かす環境が欲しい人必見
http://cureblack.com/20080909.html#p01
まともに動かすには、VPSぐらいでないと無理くさいです。
レンサバでRamaze動かしている人(CGI駆動でw)はいた。
rubyの軽いWebアプリケーションフレームワークを試してみた - NAT’s Programming Champloo
http://d.hatena.ne.jp/NAT_programming/20080817/1218957113
さくらのレンタルサーバでramazeを動かしてみた - NAT’s Programming Champloo
http://d.hatena.ne.jp/NAT_programming/20080817/1218962624
0289デフォルトの名無しさん
2008/09/29(月) 04:14:09C/C++とか触れそうにないなw
あなたには選択肢が少ない、ひまわりとかDelphiがオススメ
0290デフォルトの名無しさん
2008/09/29(月) 08:23:51Visitorははまるときはピッタリはまるんだけどね。
Visitorパターンの例題として見るだけなら少し大きめだが、RDのパーサとか
http://rubyforge.org/projects/rdtool/
0291デフォルトの名無しさん
2008/09/30(火) 00:28:47ファイルの文字コードが全て iso-2022-jp-3で作成されてしまいます。
プロジェクト作成時にutf8でファイル生成するオプションなどはありますか?
0292デフォルトの名無しさん
2008/09/30(火) 08:23:04ISO-2022-JP-3(初期ASCIIでスタート)とUTF-8は同じだと思うんだが。
0293デフォルトの名無しさん
2008/09/30(火) 10:00:53cat > hoge.txt とかで作ったファイルも同じ判定ならコンソールか何かの設定の問題か、その判定ソフトの癖だな
0294デフォルトの名無しさん
2008/09/30(火) 11:52:430295デフォルトの名無しさん
2008/09/30(火) 14:09:23html_optionsみたいなのがなにかを説明しないと、わかるわけがない
0296デフォルトの名無しさん
2008/09/30(火) 14:20:57ttp://www.smarty.net/manual/ja/language.function.html.options.php
0297デフォルトの名無しさん
2008/09/30(火) 15:39:130298デフォルトの名無しさん
2008/09/30(火) 17:10:47Rails入門(本)には text とか radio は載ってたのにこれは載ってない。
でもないのはおかしいなと思ってた。date_select まであるじゃんかよ…。
0300デフォルトの名無しさん
2008/09/30(火) 23:36:49特に気にする必要はないっていうことですか?
今のところ特に問題はないですが、聞いたことない文字コードだったので
そのうち何か問題がでないかと心配です。
>>293
vimに読み込ませた時の文字コードがiso-2022-jp-3で表示されてます。
linux上で作成したutf8のファイルは、問題なくutf8で表示されていますし
他の文字コードに関しても作成時と同じように表示されてるので
ファイルの認識自体は特に問題ないと思いますが。。。
catで作成したファイルもiso-2022-jp-31で作成されているようですし
FInder上で作成したファイルもiso-2022-jp-3なので、たぶんMacOSXでは
指定がない限り、その文字コードで作成してしまうのではないでしょうか。
なにぶん昨日Macにはじめて触りまして。。。詳しいことが。。。
とりあえずOS側の問題のような気もするので、そっちで聞いてみます。
0301デフォルトの名無しさん
2008/10/01(水) 08:21:11とりあえずodなどで問題のテキストをバイナリダンプしてみては?
0302デフォルトの名無しさん
2008/10/01(水) 11:09:10文字エンコード自動評価の順が iso-2022-jp-3 が最初なんだろう
vimrcの文字エンコード推測設定がMacOSX向きじゃないんだと思う
きっとどっかのサイトのを意味もわからず丸コピペしたのだと推測
0303デフォルトの名無しさん
2008/10/01(水) 12:05:42書名をさらして著者に改善を要求しよう
0304デフォルトの名無しさん
2008/10/01(水) 12:13:37ちゃんと冒頭に「バージョン○○を対象にします」って書いてあんじゃんよ
0305デフォルトの名無しさん
2008/10/01(水) 15:00:25今回の select option に限って言えば、どのバージョンでもあるわな
0306デフォルトの名無しさん
2008/10/01(水) 19:14:46gem search --details --both --all hoge
とやっても、名前でしか検索ができません。
説明欄も検索したいのですが・・・
0307デフォルトの名無しさん
2008/10/01(水) 21:24:06そこでは名前がマッチするモノを探しているだけのようだ。
rubygems/source_index.rbの
spec.name =~ gem_pattern and
というところ(手元だと272行め)を
(spec.name =~ gem_pattern or spec.description =~ gem_pattern) and
のように変更すればdescriptionも検索対象にできる。
他にsummaryなども、orで連結して探すようにできるはず。
残念ながら、--detailは出力をkwskするためのオプションだな。
0308デフォルトの名無しさん
2008/10/02(木) 11:44:41以下のプログラムを実行してもうまく動かず、何がいけないのか分からず困っています。
sum =0
puts "点数を入力してください。"
a=0 ←なんとなく初期化してみた。あってもなくてもダメ
for i in 1..5
print i, "番:"
a = gets.chomp
sum += a ←ここが鬼門。ためしにforのiにするとちゃんと動く
# print a,"\n"
# sleep 1
end
print "sum=#{sum}"
おそらく7行目のsum += aが問題なのですが何がいけないんでしょうか・・・?
助言頂けるとありがたいです。
0309デフォルトの名無しさん
2008/10/02(木) 11:49:490310デフォルトの名無しさん
2008/10/02(木) 11:51:06かな
0311デフォルトの名無しさん
2008/10/02(木) 12:07:40コマンドプロンプトだと1つ目の数値を入れたとたん終了・・・
>>310
できた!thx!
getsで入力した数値を文字列だと思ってたのか・・・orz
ほんとありがとう、数値ひとつ入力するのに1時間奮闘してた・・・
0312311
2008/10/02(木) 12:26:45aを配列にしたとたん動かなくなりました・・・
実行しても「点数を入力してください」すら表示されず終わります。
sum =0
puts "点数を入力してください。"
a[] ←いらなそうだけど一応宣言
for i in 1..5
print i, "番:"
a[i] = gets.chomp
sum += a[i].to_i
end
.to_iの使い方がおかしいのかもと思い、その行をコメント化してみたりしましたがうまくいかず・・・
gets辺りで躓いてると思います。
お手数ですがどなたかアドバイスください。
入力で躓きまくってる私はRuby向いてないのかなぁ・・・orz
0313デフォルトの名無しさん
2008/10/02(木) 12:34:11ary = []
puts "点数を入力してください"
for i in 1..5
print i, "番: "
ary[i-1] = gets.chomp.to_i
end
sum = ary.inject(0) {|a, x| a + x }
print "合計: ", sum, "\n"
0314デフォルトの名無しさん
2008/10/02(木) 12:37:370315デフォルトの名無しさん
2008/10/02(木) 12:39:51「実行」って、コマンドプロンプトから ruby hoge.rb とかしてる?
普通はこうなる
> ruby hoge.rb
点数を入力してください。
hoge.rb:3: undefined local variable or method `a' for main:Object (NameError)
あと入門書嫁
0316デフォルトの名無しさん
2008/10/02(木) 12:49:11普通はブロックを使う
0317312
2008/10/02(木) 12:50:02おお・・・ちゃんと動く・・・ありがとです。
for文の中でsumに足していかないとは・・・!
sum周りが初見なんで調べないとですね。
ともあれthxです。
>>314
Cは多少やってたのでCの頃に書いた簡単なプログラムをRubyに書き直してみてるところです。
文法がずいぶん違って躓きまくりです・・・
>>315
いや、「.rb」をそのままダブルクリックで実行してます。
だからsleep入れたりしてすぐに消えないようにしてたり・・・
基本はRDEで実行してます。
「たのしいRuby 第2版」を参考にしてますが、必要な所だけ探して読んでるのがいけないかもですね・・・
0318デフォルトの名無しさん
2008/10/02(木) 13:19:11正常終了でウィンドウ閉じるだろ
0319デフォルトの名無しさん
2008/10/02(木) 13:36:570320デフォルトの名無しさん
2008/10/02(木) 14:02:52RDE使ってるなら、プログラムを実行した後
下の出力ウインドウにエラーメッセージとか出てるんじゃないか?
それを貼り付けるべし
出ないようならコンソールから実行
0321デフォルトの名無しさん
2008/10/02(木) 14:22:57いやだからsleep入れたりしてるんですが、エラーの時は関係なく終わるんです。
>>319
Rubyの場合はスタンダードライブラリを読み込まなくても使えるんですね。(Rubyには存在しない?
活用させていただきます。
>>320
一応出ますね。以後貼り付けます。
みなさんありがとうございます。またすぐに来そうで心配ですが、その時はよろしくお願いします。
0322デフォルトの名無しさん
2008/10/02(木) 18:02:43ruby -x "%~0" || pause
と書けばエラーが出たときに限ってとまる。
test.bat
ruby -x "%~0"
pause
goto :eof
#!ruby
put "hello"
0323デフォルトの名無しさん
2008/10/02(木) 19:08:34横からだがサンクス
これを.rbに関連付けしておけばよいのか・・・
|| でエラー時だけ止まるのかいいな、これ
0324デフォルトの名無しさん
2008/10/02(木) 22:15:24オプションとか方法とかってありますか?
0325デフォルトの名無しさん
2008/10/02(木) 23:44:42そんなのはないから自分で #:nodoc:を消せばいいじゃん
cp -pr src1 src2
find src2 -type f | xargs perl -pi 's/:nodoc://'
0326デフォルトの名無しさん
2008/10/03(金) 01:37:13なるほど
参考にさせていただきます
ありがとうございました
0327デフォルトの名無しさん
2008/10/03(金) 02:38:35そこでrubyでもsedでもなくperlかよw
0328デフォルトの名無しさん
2008/10/03(金) 11:54:461 linerでの置換ならrubyよりperlのほうが便利
sedは-pオプションがない
0329デフォルトの名無しさん
2008/10/03(金) 12:52:51これ教えてもらってpythonから宗旨替えするのを検討してるんだけど
本当にpythonのモジュールが問題なくつかえるの?
ctypes
boost.python
numpy
matplotlib
PIL
が使えるかが一番問題なんだけど
0330デフォルトの名無しさん
2008/10/03(金) 13:02:03現在の Ruby は 1.8.7 です
0331デフォルトの名無しさん
2008/10/03(金) 13:09:370332デフォルトの名無しさん
2008/10/03(金) 15:59:38作者に聞くか、自分で試してみるしかない。
つうか、PerlやPHPならまだしも、Pythonから宗旨替えする理由って何?
0333デフォルトの名無しさん
2008/10/03(金) 17:24:32借りてるレンタルサーバーでRubyは動くけど
pythonが動かない
railsが便利なら使ってみたい
0334デフォルトの名無しさん
2008/10/03(金) 17:30:26Railsを実用的な速度で使うなら、
別プロセスのサービス(MongrelやFastCGI)か
Apache組込のPassengerが必要になる。
レンタルサーバではどちらもできないことが多いので、注意。
0335デフォルトの名無しさん
2008/10/03(金) 21:35:41require 'shell'
sh = Shell.new
Dir.glob("text/*.txt").each do |path|
path.gsub!(/\//,"\\")
sh.system("start", "#{path}")
end
というスクリプトを作りましたが
c:/ruby/lib/ruby/1.8/shell/command-processor.rb:352:in `find_system_command':
Command not found(start). (Shell::Error::CommandNotFound)
というエラーが出ます。どうしたもんでしょうか。
0336デフォルトの名無しさん
2008/10/03(金) 21:46:080337デフォルトの名無しさん
2008/10/03(金) 22:09:57sedのデフォルトの動作が -p 指定時のPerlと同じだろ。
おまえさんが言いたいのは -i じゃないのか?
でもこれも GNU sedならあるけどね。
0338デフォルトの名無しさん
2008/10/03(金) 22:12:47gsub!の置換後の文字列だけどそれでいいのか?
あと startはcmd.exe の内部コマンドだからそれだとまずいだろう
0339デフォルトの名無しさん
2008/10/03(金) 23:13:37>おまえさんが言いたいのは -i じゃないのか?
その通りだ orz
エスパーさんくす
0340デフォルトの名無しさん
2008/10/03(金) 23:40:05http://nanoc.stoneship.org/
nanocというRuby製のCMSを使ってみています。
nanoc autocompileコマンド時にhttpdサーバーが立ち上がります。
しかし、ブラウザでhttp://localhost:3000/ というデフォルトのアドレスにアクセスしても
画像が何故か読まれません。
そこで、autocompileコマンドのソースを追って調べていたのですが、
nanoc: lib/nanoc/extra/auto_compiler.rb@55a1480e2719
http://nanoc.stoneship.org/hg/nanoc/file/55a1480e2719/lib/nanoc/extra/auto_compiler.rb
(ちょうど上記ソース)、255行目の File.read(path) ってもしかして、
Window環境だとバイナリ読めなくないですか?
irbで試しましたが、pngを読むと、
irb(main):028:0> a = File.read "gradient-nav-white.png"
=> "\211PNG\n"
みたいになってしまいます。
0341デフォルトの名無しさん
2008/10/03(金) 23:58:19ソース読んでないけど、たぶんその通り
UNIX畑の人間が書いたスクリプトには、バイナリモードを考慮してないものがある
最近だとRackでも見た
0342デフォルトの名無しさん
2008/10/04(土) 00:00:57>>340
読めませんねえ
module Nanoc::Extra
class AutoCompiler
def serve_file(path)
[
200,
'Content-Type' => mime_type_of(path, 'application/octet-stream') },
[ File.open(path,'rw'){|f| f.read} ]
]
end
end
end
をスクリプトの前に書いて再チャレンジだ
>>341
ある意味とてもカッコ悪いよな
0343デフォルトの名無しさん
2008/10/04(土) 00:01:14バイナリモードのopenを使うように書き換えないといかんのかな。
0344デフォルトの名無しさん
2008/10/04(土) 00:03:24module Nanoc::Extra
class AutoCompiler
def serve_file(path)
[
200,
{'Content-Type' => mime_type_of(path, 'application/octet-stream') },
[ File.open(path,'rw'){|f| f.read} ]
]
end
end
end
Ruby のモジュールの多くは自前のスクリプトの先頭で書き換えることができる
きっとこれから何度もお世話になると思うので覚えておくといい
けっこう明確なバグ(で、自前で何とかなるもの)が残ってたりするもんだ
0345デフォルトの名無しさん
2008/10/04(土) 00:07:320346デフォルトの名無しさん
2008/10/04(土) 00:10:450347デフォルトの名無しさん
2008/10/04(土) 00:16:270348デフォルトの名無しさん
2008/10/04(土) 00:24:32Cやれ
0349340
2008/10/04(土) 00:48:47trap::IO - Rubyリファレンスマニュアル
http://www.sakalab.org/prog-ruby/ruby-man-html-20080121/trap_IO.html
> IO.readはファイルを開くときにバイナリモードにしないので、
> バイナリモードの存在する環境でバイナリファイルの読み込みに使うと 内容が壊れることがあります。
これかい!しかし何でこんな罠があるんだ。
罠ってのはバイナリモードじゃなくてIO.readのことだけど。
nanocの作者 mac っぽいし?
-----lib/binary_patch.rb-----
module Nanoc::Extra
class AutoCompiler
def serve_file(path)
# Build response
[
200,
{ 'Content-Type' => mime_type_of(path, 'application/octet-stream') },
[ File.open(path, 'rb'){|f| f.read } ]
]
end
end
end
-------------------
>>344参考に、これをサイトデータの lib 以下に放り込んでおくとOK的な。
後でさくーしゃにパッチ投げるか……
しかし、grepかけたら、他にも File.read あったり、
File.openでバイナリモードにしてないところがあるから、
直すところがいくつもありそうw
0350デフォルトの名無しさん
2008/10/04(土) 01:18:38ライブラリ作者はあんまり悪くない(注意不足なだけ)
2.0 では直ってたりするのかしら
0351デフォルトの名無しさん
2008/10/04(土) 01:29:27あと、1.9以降はstdioと絶縁したんだっけか?
0352デフォルトの名無しさん
2008/10/04(土) 01:48:42nanoc で nanoc autocompile コマンド時にhttpサーバーと一緒にブラウザも起動したいのだけど、
httpサーバー起動前にブラウザが立ち上がりきってしまって上手くいかない・・・。
gemにあった launchyで起動させているんだけども、httpサーバー(デフォではThin)
起動後かもしくは、数秒後に起動することはできないでしょうか?
当初はこんなコードです。
require 'rubygems'
require 'launchy'
module Nanoc::Extra
class AutoCompiler
alias original_start start # :nodoc:
# Boot web browser before original start
def start(port, handler_name)
port ||= 3000
Launchy.open("http://localhost:#{port}/") if defined?(Launchy)
original_start(port, handler_name)
end
end
end
0353デフォルトの名無しさん
2008/10/04(土) 01:51:50上手くいきませんでした。何かよい方法はないものでしょうか?
def start(port, handler_name)
port ||= 3000
t = Thread.new do
Sleep(3)
Launchy.open("http://localhost:#{port}/") if defined?(Launchy)
end
original_start(port, handler_name)
t.join
end
0354デフォルトの名無しさん
2008/10/04(土) 02:37:21while (3000ポートに接続できない)
sleep(1) # 1秒待つ
end
0355デフォルトの名無しさん
2008/10/04(土) 02:44:59WindowsでRubyならWIN32OLEで一択.
require 'win32ole'
fso = WIN32OLE.new('Scripting.FileSystemObject')
shell = WIN32OLE.new('WScript.Shell')
Dir.glob('text/*.txt').each do |path|
shell.Run(fso.GetAbsolutePathName(path))
end
下記記事も参照すると吉
ttp://jp.rubyist.net/magazine/?0004-Win32OLE
0356352
2008/10/04(土) 02:52:37どうも original_start() でキー入力待ちになってしまうのです。
sleepするところだけメインと平行して走らせることができないかな、と思ったしだいです。
gemにあった win32-thread もつかって見ましたが、
> nanoc autocompile
win32 thread mode
(rubyパス)/lib/ruby/gems/1.8/gems/launchy-0.3.2/lib/launchy/b
rowser.rb:25: [BUG] cross-thread violation on rb_thread_schedule()
ruby 1.8.7 (2008-06-20 patchlevel 22) [i386-mswin32]
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
とか出るしダメポ……
0357デフォルトの名無しさん
2008/10/04(土) 02:53:16「全部WSHで書けばいいじゃん」って思うよね?
うん,俺もそう思う.
Jscriptとかも使ってみると意外と便利なんだよなぁ.
0358352
2008/10/04(土) 02:57:28キー入力待ちでもsleep後に平行してブラウザが起動してくれました。大丈夫でした。
httpdの起動が遅いせいか、どうもタイミングが悪かったようです。
>>354を実装してみたいと思います。ありがとうございます。
0359352
2008/10/04(土) 03:33:52def start(port, handler_name)
require 'open-uri'
require 'resolv-replace'
require_gem('launchy', true)
port ||= 3000
t = Thread.new do
uri = "http://localhost:#{port}/"
loop do
begin
exit_loop = false
open(uri) do |f|
puts "Eureka #{uri} !";
exit_loop = true
end
break if exit_loop
rescue
end
sleep(1)
end
puts "Launching browser..."
Launchy.open(uri) if defined?(Launchy)
end
original_start(port, handler_name)
t.join
end
>>354をこんな感じで行けました。
もっと短くかければよかったのですが。
0360デフォルトの名無しさん
2008/10/04(土) 04:06:35ただこういうバグを生むために存在するとしか考えられん。
まあでもそういうのを考慮する環境がクライアント機では90%以上を占めてるので仕方ないか。。
0361デフォルトの名無しさん
2008/10/04(土) 04:10:20テキストモードが生まれたわけがわかるから
0362デフォルトの名無しさん
2008/10/04(土) 04:35:54Cは平素より使用しているが、どうしてテキストモードなるものが存在する必要があるかは理解できない。
ここで、「ググレ」やリンクを貼る行為ではなく、あなたの言葉での説明希望。
0363デフォルトの名無しさん
2008/10/04(土) 07:12:40「知りたい」んじゃなくて「追い込みたい」のが丸わかり。
土曜の早朝から何を厨臭いことを。
0364デフォルトの名無しさん
2008/10/04(土) 07:17:110365デフォルトの名無しさん
2008/10/04(土) 08:31:49テキストモードとバイナリモードを用意して抽象性を確保してるんだから
UNIX使いもちゃんと使い分けろって話になりはしないの?
0366デフォルトの名無しさん
2008/10/04(土) 09:50:05煽るだけならCスレへお帰りください
0367デフォルトの名無しさん
2008/10/04(土) 10:23:42>Cは平素より使用しているが、どうしてテキストモードなるものが存在する必要があるかは理解できない。
たんに、プラットフォームによって改行を表す記号が違うので、それを隠蔽して互換性を確保するモードを用意しただけ。
>ここで、「ググレ」やリンクを貼る行為ではなく、あなたの言葉での説明希望。
ほんとにCやってるなら、このくらい分かるだろ。
まずは「教えてください」という言葉を覚えような。
0368デフォルトの名無しさん
2008/10/04(土) 11:01:03>まずは「教えてください」という言葉を覚えような。
お前は文章に「教えてください」って文字列が入ってないと納得できない正規表現脳なのか
0369デフォルトの名無しさん
2008/10/04(土) 11:10:12ttp://ja.wikipedia.org/wiki/%E6%94%B9%E8%A1%8C%E3%82%B3%E3%83%BC%E3%83%89
0370デフォルトの名無しさん
2008/10/04(土) 12:46:31普通UNIX使いは改行記号がが\nのとき、\r\nのとき、\rのときそれぞれを考慮したコードを書きます。
なぜならUnix使いはおそらくwindowsをはじめとする他の環境を触ったことがあり、
それらで改行がどう表現されるかを知っていて、
かつbフラグは無視される環境であることがほとんどだから。
>>367
だからね、それは「テキストモードが必要な理由」にはならないんだよw
なぜなら普通は上に書いたようなことをやるから。
あれば便利かと思って作ったんだろうが、現状むしろあることのほうが害。バグの原因になる。
こんぐらい少し考えればわかるだろwww
0371デフォルトの名無しさん
2008/10/04(土) 12:56:18その文字列を探す様子をたとえるのに、正規表現はないだろう。
0372デフォルトの名無しさん
2008/10/04(土) 13:09:55こいつ何言ってるの?
0373デフォルトの名無しさん
2008/10/04(土) 13:21:33>普通UNIX使いは改行記号がが¥nのとき、¥r¥nのとき、¥rのときそれぞれを考慮したコードを書きます。
書かない。ふつうは printf("foo¥n"); としか書かない。printf("foo¥r¥n") なんて書くわけない。
本気でそんな主張をするなら、世の中のUNIX用ツールで改行コードを使い分けているソースの例を挙げて、
それが一般的であることを示してくれ。
>なぜならUnix使いはおそらくwindowsをはじめとする他の環境を触ったことがあり、
触っただけで、自分のコードにそこまでの移植性を考えるわけない。
たとえばUNIXとWindowsではパス区切り文字が違うが、それを考慮しているコードは多くない。
改行コードの違いなんか考えるわけがない。
>それらで改行がどう表現されるかを知っていて、
>かつbフラグは無視される環境であることがほとんどだから。
bフラグを無視するのはUNIX系だけでは? Windowsでは無視されないんだから、「bフラグは無視される環境であることがほとんど」なわけがない。
0374デフォルトの名無しさん
2008/10/04(土) 13:27:07お前の存在をズバリ言い当ててるのでは?
0375デフォルトの名無しさん
2008/10/04(土) 13:50:17>それが一般的であることを示してくれ。
まあ\rは無視することもあるな、Macだけだし、はっきり言っておかしいから。
出力は、自分の環境で動けばいいから(移植するときに考えればいい)printf("foo\n")でもいい。
外部に出力する場合は規格通りにすればよい。
当たり前だが、問題なのは出力よりも入力。なぜならどのようなデータがくるか分からないから。
ここで注意すべきなのは、ただ単に改行までシークする場合は
\nと\r\nは改行位置を捜すのに両方\nを捜せばいいから問題にならない。
よって、考慮はしているがそれが実際にコード上に現れないことも多い。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
しかし、考えなければならない事もある、たとえばhttpの改行は\r\nである必要があるが、
\nである環境もあるかもしれない。例えば、Httpのヘッダとボディ部を分けるのは
"\n\n"と"\r\n\r\n"の両方の可能性がある。
(規格上は後者のみ正しいが、もしかしたら前者の可能性もあるかもしれない。)
よってその場合には分けた処理が必要になる。実例として、MPlayerの
MPlayer/stream/http.cのhttp_is_header_entire()。
wgetのhttp.cなどを参考にしても、もし改行が\nの場合、\r\nの場合両方とも正しく処理できるように
なっている様がわかる。
でもそれが一般的である証明なんて誰にもできませんよ。もちろん一般的でない証明もできません。
>改行コードの違いなんか考えるわけがない。
考えなければならない時は考えるほうがよいです。考えないとバグの原因になる可能性がありますので。
>「bフラグは無視される環境であることがほとんど」なわけがない。
Unix使いは、って書いあるじゃんwwwww
なんで同じ文の中に書いてあって前提が途中で変わっちゃうのwwwww?
0376デフォルトの名無しさん
2008/10/04(土) 14:08:35いったい何百例出せばいいのかと(数例で納得するのは逆におかしい)。
それでいて、いかにも「正当な要求をした俺と、応えられないコイツ」的な構図が
出来上がるから、まぁ、ある種の人間はこの質問をすることを凄く好むんだよね。
「知りたい」んじゃなくて「追い込みたい」のが丸わかり。
土曜の昼に何を厨臭いことを。
0377デフォルトの名無しさん
2008/10/04(土) 14:46:13久々に切れのある内容のスレを見た。
尊敬する。
あなたの言うとおり!!
0378デフォルトの名無しさん
2008/10/04(土) 16:17:01なに語ってるのか知らんけど、
>普通UNIX使いは改行記号がが¥nのとき、¥r¥nのとき、¥rのときそれぞれを考慮したコードを書きます。
なんておかしなことを書いてあるから、それが「普通」である根拠を示してくれといってるだけ。
答えられないならでしゃばんなよ。
0379デフォルトの名無しさん
2008/10/04(土) 16:20:170380デフォルトの名無しさん
2008/10/04(土) 16:21:10>wgetのhttp.cなどを参考にしても、もし改行が¥nの場合、¥r¥nの場合両方とも正しく処理できるように
>なっている様がわかる。
wget はネットで使うんだから、どちらにも対処できるようにするのは普通だろ。
それこそunixもwindowsもmacも関係ない話。
これをbフラグの話で持ち出すほうがおかしい。
0381デフォルトの名無しさん
2008/10/04(土) 16:46:28> なに語ってるのか知らんけど、
知らんまま反応した当然の結果として、まるで的外れだから、「知る」までは黙ってていいよ。
0382デフォルトの名無しさん
2008/10/04(土) 18:34:37テキストを問題なく扱えるし、windowsでも当然可能
# 可能にしてるのはライブラリやアプリケーション、だけど問題はそこじゃない
不必要なテキストモードを残しているばかりに>>340の様な問題が起こる
appleがOSXでCRを捨てたようにwinもさっさとテキストモードを廃止してほしいもんだ
0383340
2008/10/04(土) 19:03:40俺はネイティブ言語はDelphiくらいしかつかわないけど、
テキストモードとかバイナリモードなんて意識したことない。
File.readのテキストモードとかの区別って結局どこから来てるんですかね?
0384デフォルトの名無しさん
2008/10/04(土) 19:25:51Rubyを作るときのCの…えー、WindowsのCライブラリから来ている
結局としては、テキストであるという判断をどの層で誰がやるかという話に過ぎない
0386340
2008/10/04(土) 19:36:580387デフォルトの名無しさん
2008/10/04(土) 19:42:25状況は変化するの?
0388デフォルトの名無しさん
2008/10/05(日) 18:24:44ユニバーサルニューラインが入ってる。
http://www.garbagecollect.jp/~usa/d/200808c.html#id20080825_P1
0389デフォルトの名無しさん
2008/10/05(日) 19:15:07> "r"なら、"rt"と"rb"のどちらの扱いになるかはプラットフォーム依存。
> とりあえず、いわゆるUNIXなら"rb"と同様に、mswinやmingwなら"rt"と同様になる。
ちょw 問題解決されてなくないですか?
0390デフォルトの名無しさん
2008/10/05(日) 19:17:52前みたいに適当に"r" だけだとどっちにしろ環境依存になるから、
バイナリかテキストかを意識しなくちゃいけないわけか
0391デフォルトの名無しさん
2008/10/05(日) 20:19:17文字=バイトで凝り固まった外人どもよりはこのへん日本人は意識しやすいだろうけど。
0392デフォルトの名無しさん
2008/10/06(月) 00:31:26本質的に問題なのはテキストモードを区別するという慣習だから、
Rubyだけで解決できる性質の問題じゃない。
Windows全体で「CRLFを使うのはやめよう」という流れにならない
限り解決しようがない。
0393デフォルトの名無しさん
2008/10/06(月) 01:51:56個々の環境(というかいつもWindows狙い撃ち)で対応しやがれというお話ですね。
0394デフォルトの名無しさん
2008/10/06(月) 02:00:53むしろ「LFなんて糞、CR+LFに統一しる」と思ってた
今はそうでもないが、昔の俺以外にもそう思ってる奴は居るかも
0395デフォルトの名無しさん
2008/10/06(月) 02:31:20キャリッジをリターンしただけで「次の行」に行く旧Macも変
「カーソルを行頭に戻してから行を送る」というCRLFを具現したWindowsが意味的に妥当
とは思う
っていうか電脳化した時点でCRLFという概念作っとけよもう
何が悲しくてコンピュータでタイプライタのエミュレーションなんぞしなければならんのか
0396デフォルトの名無しさん
2008/10/06(月) 02:38:480397デフォルトの名無しさん
2008/10/06(月) 08:21:28それは端末を中心に考えているから。だから「行頭に戻る」と「次の行に移動する」をわけて考えてしまう。
UNIX作ったひとはテキストを扱うことを考えてて、それでテキストの「行末」が欲しかっただけだから、
それを1文字で表現したことは、そんなにおかしな話ではない。
0398デフォルトの名無しさん
2008/10/06(月) 10:46:45EOFとかCR/LFとか
0399デフォルトの名無しさん
2008/10/06(月) 11:10:100400デフォルトの名無しさん
2008/10/06(月) 12:31:57統一しる!までは思わんがw
どっちかというと、UNIXとかの人にバイナリで読む時とかちゃんと、"rb" つけてくれ!頼む!って感じ。
いろんなソースいじっていると本当にそう思うw
0401デフォルトの名無しさん
2008/10/06(月) 12:33:07初心者さんが質問しにくくなってきている気がするので移動しませんか?w
0402デフォルトの名無しさん
2008/10/06(月) 17:10:17を実行すると↓のようになります。
"s = 'abcde'"
"abcde"
eval の中の変数をローカルにするには、eval(s) の代わりに
eval("def tmpfunc() #{s} end; tmpfunc")
などとするしかないでしょうか?
関数持ちだすのもなんかアレな気がして…
0403デフォルトの名無しさん
2008/10/06(月) 17:20:59s = "s = 'abcde'"
p s
# => "s = 'abcde'"
eval(s, sandbox_binding)
p s
# => "s = 'abcde'"
なんか汚してもいいBindingでevalするのはどうでしょう
0404デフォルトの名無しさん
2008/10/07(火) 09:05:04> class << Object.new
こんな書き方できるんだ...
「class <<」の右側って任意の式がかけるの?
0405デフォルトの名無しさん
2008/10/07(火) 11:37:07class Hoge < HogeBase
は「HogeBaseクラスに以下のメソッドを追加したHogeクラスを作る」という感じなのに対して
class Hoge << hoge
は「オブジェクトhogeに以下のメソッド動作を一時的に追加して便利に使うぞ」という感じ
irb> s = 'nyonyonyo'
irb> class << s ; def hello; puts 'hello!'; end; end
irb> s.hello
hello!
irb> s = nil
irb> s.hello
NoMethodError: undefined method `hello' for nil:NilClass
from (irb):5
from :0
0406デフォルトの名無しさん
2008/10/07(火) 17:43:46module HogeModule
class << self;
def application
@application ||= HogeModule::Application.new
@application
end
def application=(app)
@applicaiont = app
end
end
end
で、
HogeModule.application.run
みたいな感じで使う
0407デフォルトの名無しさん
2008/10/07(火) 17:44:23class << self
0408デフォルトの名無しさん
2008/10/07(火) 20:29:39class Foo
class << self
def hello; puts "hello"; end
end
end
と
class Foo
def self.hello; puts "hello"; end
end
は、Foo.hello の挙動はまったく同じですけど、内部での仕組みもまったく同じですか?
class << self のほうは、Fooの特異クラスにインスタンスメソッドを追加することで、
def self.hello のほうは、Fooの特異メソッドを定義するという説明になるかと思いますが、
両者はまったく同一のことを行っているという解釈でいいでしょうか。
0409デフォルトの名無しさん
2008/10/07(火) 20:36:41☆ チン
☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・)< 初心者の質問じゃない質問まだー?
\_/⊂ ⊂_)_ \____________
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
|  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
| .|/
0410デフォルトの名無しさん
2008/10/07(火) 20:36:430411デフォルトの名無しさん
2008/10/07(火) 21:39:55class Foo
class Bar
def hello; puts "hello"; end
end
end
と
class Foo; end
class Foo::Bar
def hello; puts "hello"; end
end
くらいは違う。
0412デフォルトの名無しさん
2008/10/07(火) 22:38:520413デフォルトの名無しさん
2008/10/08(水) 02:30:360414デフォルトの名無しさん
2008/10/08(水) 11:48:06先週、RubyのMLに登録し「Welcome to our ruby mailing list」のメールも届いたのですが、
その後メールが1件も届きません。ひょっとしてRubyのMLって、コマンドをサーバーに送って
取得しないといけないのでしょうか?それとも、さらに何か手順を踏まないとメールが
届かないのでしょうか?メールに記載されている説明には、過去の投稿が欲しいなら
サーバーにコマンドを送れ、とは書かれているのですが・・・
0415デフォルトの名無しさん
2008/10/08(水) 11:57:01MLによっては単に流量が少ないだけということもある。
本来流れているはずのメールが届いてないというなら、そのWelcomeメールに書いてある問い合わせ先に質問メールを投げればいい。
0416デフォルトの名無しさん
2008/10/08(水) 12:00:10正直なとこ、ML は何か発言したい人向けだね
初心者さんはこのスレとかマニュアル独学とかしたほうがいいかも
0417デフォルトの名無しさん
2008/10/08(水) 12:09:57素早いレス、ありがとうございます。
登録したのは「ruby-list」です。単に投稿が少ないだけなのか、
それとも自分が何かミスをしていて、メールが届かないのかが分からなかったもので。
とりあえず、MLの管理者に問い合せてみようと思います。
0418デフォルトの名無しさん
2008/10/08(水) 12:27:550419デフォルトの名無しさん
2008/10/08(水) 12:42:41まだCPUが1個なんですか?
Rails開発者はデュアルコアとか普通ですよ?
0420デフォルトの名無しさん
2008/10/08(水) 13:22:04メイン開発者たちのマシンでは一瞬あるいは2秒程度で終わってると考えるのが妥当だな
あるいはWindowsのRuby使ってないとか
0421デフォルトの名無しさん
2008/10/08(水) 13:26:070422デフォルトの名無しさん
2008/10/08(水) 13:51:19一応回答すると、WindowsのRubyスクリプトで処理開始までが馬鹿みたいに遅いのはどうにもならない
これを改善する方法を見つけられたらRubyは広まると思うんだがというかWindowsで常用したい
0423デフォルトの名無しさん
2008/10/08(水) 13:55:230424デフォルトの名無しさん
2008/10/08(水) 14:09:02俺の環境はCore2Duoだが、体感できるぐらいには遅い
0425デフォルトの名無しさん
2008/10/08(水) 14:09:55Cライブラリとかの違いの関係だと思うんだが、残念だな
0426デフォルトの名無しさん
2008/10/08(水) 14:18:53ならJRuby使っても気にならないんじゃね
0427デフォルトの名無しさん
2008/10/08(水) 14:24:38そうなってくると、HDDとかにも問題があるんじゃない?
0428デフォルトの名無しさん
2008/10/08(水) 14:27:560429デフォルトの名無しさん
2008/10/08(水) 14:46:30@echo off
echo %time%
ruby -e "puts 'hello!'"
echo %time%
ruby -v
echo %PROCESSOR_IDENTIFIER%
を実行して
11:35:25.96
hello!
11:35:26.96
ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
x86 Family 6 Model 8 Stepping 6, GenuineIntel
だそうな
0430デフォルトの名無しさん
2008/10/08(水) 15:04:16hello!
15:03:20.46
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]
x86 Family 6 Model 15 Stepping 11, GenuineIntel
XP SP2でこれだったぞい?
0431デフォルトの名無しさん
2008/10/08(水) 15:04:510432デフォルトの名無しさん
2008/10/08(水) 15:10:08どうもその人だけみたいな感じだね
いろいろな要素が絡み合って遅くなってるのかな
0433デフォルトの名無しさん
2008/10/08(水) 15:19:17それはCPUが充分速い
>>429はPentium3だぞ
0434デフォルトの名無しさん
2008/10/08(水) 15:22:24「Windows Ruby 遅い」でぐぐるといくつか症例がある模様
ttp://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=Windows+Ruby+%E9%81%85%E3%81%84&num=50
まあ、2GHzくらいあれば気にならないのだろう
あるいは、「CPUが遅い=OSがWin2000とか」だとかいうのの何かが関連してるのかも
0435デフォルトの名無しさん
2008/10/08(水) 15:26:11424みたいのがいるから、CPUの問題じゃなく、遅くなる何かがあるんじゃないか?
0436デフォルトの名無しさん
2008/10/08(水) 15:30:25大丈夫な人と大丈夫でない人がいる程度には、ポピュラーな別の原因があるんだろう
0437デフォルトの名無しさん
2008/10/08(水) 15:38:240438デフォルトの名無しさん
2008/10/08(水) 17:53:1217:06:29.07
hello!
17:06:29.16
ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-mingw32]
x86 Family 5 Model 8 Stepping 12, AuthenticAMD
Ruby 1.8.7 0.09秒
17:09:52.56
hello!
17:09:52.86
ruby 1.9.0 (2008-10-04 revision 19669) [i386-mingw32]
x86 Family 5 Model 8 Stepping 12, AuthenticAMD
Ruby 1.9.0-5 0.30秒
MingwでRuby 1.9.0をビルドすると90分くらいかかる
0439424
2008/10/08(水) 18:47:36キャッシュ無しの状態でrake打つと、だいたい3〜5秒ぐらいかかる
二回目以降は0.1秒くらいしかかからない
(WindowsXP Core2Duo 1.86GHz メモリ1024MB ruby-mswin32)
0440デフォルトの名無しさん
2008/10/08(水) 19:24:070441デフォルトの名無しさん
2008/10/08(水) 21:30:31rakeって使ったこと無いけど
Ruby 1.9.0-5 に標準でついてるので
何も無しにrakeすると
No Rakefile found で即終了
約2.5秒 (何回実行しても)
0442デフォルトの名無しさん
2008/10/09(木) 01:22:27Core2Duoでも、めちゃくちゃ遅いぞー
今のままではwin上でrailsは開発できない
0443デフォルトの名無しさん
2008/10/09(木) 01:36:48>>432 >>441
windows上での開発環境のことじゃ。
rake db:migrate reset または ruby script/console
でもしてみな。一日が8時間に感じるほど遅いぞ。
最新のスペックのPCでもだ。win上で開発はできん。
win上でまともに開発できない今のままのrailsでは、
railsバブルははじけるだろうな。もうはじけている予感はあるが...
マーケティング戦略に踊らされたやつの負けー
0444デフォルトの名無しさん
2008/10/09(木) 01:41:460445デフォルトの名無しさん
2008/10/09(木) 04:54:55「この物語はフィクションです。実在の人物・団体・CPU・プログラミング言語とは
一切関係ありません」
0446デフォルトの名無しさん
2008/10/09(木) 08:09:36耐えられないならJRubyを使えば速くなる
0447デフォルトの名無しさん
2008/10/09(木) 08:28:26RailsをJRubyで動かすとCRubyより遅くなる。
0448デフォルトの名無しさん
2008/10/09(木) 08:32:020449デフォルトの名無しさん
2008/10/09(木) 09:20:44Python + Django
だろー
Railsはscaffoldであっと今に雛形が作れるが、
Djangoはもっと強力で管理ページもあっという間に作れる。
0450デフォルトの名無しさん
2008/10/09(木) 10:08:18客観的に見れない信者のような連中が出てきたらそろそろかな?
前出のように、ウインドウズ上で仕事として開発するのは無理。
LinuxとWinでrake db:migrateの比較をしてみればすぐわかる。
Railsは、初回は金利0その後徐々に金利が上がるローンと似ている。
0451デフォルトの名無しさん
2008/10/09(木) 10:29:10なんでソフトウェアの全部が全部銀行並みの規模でクオリティでなければならんのん?
0452デフォルトの名無しさん
2008/10/09(木) 10:59:380453デフォルトの名無しさん
2008/10/09(木) 11:14:20開発環境の事を言っているんだろ
rakeは本番稼動では使わないからなー
Rails信者はMac信者という事だろう
しかしほとんどは最近Mac信者になったやつらだろうが
0454デフォルトの名無しさん
2008/10/09(木) 11:33:24PC-UNIX系 → サーバサイドプログラム以外ヘボい
MacOSX → どっちも不可もなく見掛けが気持ちよい
という単なる選択の収斂の結果に過ぎない
WinでPC-UNIX系プログラムがきちんと動けばWindowsを使うって
あるいはクライアント環境がもっさりでなければPC-UNIXを常用する
WindowsをクライアントにしてUNIX系OSにログインするというのが最強ではあるが、それだとメンテ対象が2つになるんだよね
0455デフォルトの名無しさん
2008/10/09(木) 11:50:300456デフォルトの名無しさん
2008/10/09(木) 12:14:08適宜更新される200字くらいの説明文が常に200個くらいあって、
それらに特定の日本語群(更新は稀で候補100個くらい)が含まれてるかどうかチェックしたいんだ
スレ全部読み込んで、注目したい語を含むレスがあるかどうか調べて抜き出す、みたいなノリだと思ってくださいな
どうするのが速くて妥当かなあ?
検索語100個の正規表現100個を200文全部に適用する? 2万回正規表現起動?
0457デフォルトの名無しさん
2008/10/09(木) 12:20:30ライブラリの中ではもっとえげつない、力技としか思えない正規表現動作がゴロゴロ…
選択100個入りの正規表現と100個の正規表現をif文で回すのと text.include?(s) とどれが速いかとかそういうのは知らない
0458デフォルトの名無しさん
2008/10/09(木) 12:45:02会社にあるPCを見て見ろ、Macなんてあるか?
ほとんどないだろう、どこの会社だって同じだ。
Railsが新しい物好きな連中以外に普及するためには、
Winでまともに使えないとだめなんだろうね。
個人的にはRailsのIDEがもっとコード補完が上手になってもらいたい。
結局、
小規模サイト:PHP
大規模サイト:Java
0459デフォルトの名無しさん
2008/10/09(木) 12:47:53Karp-Rabin法も考えられるかもしれんが・・・・・まあその程度なら
0460デフォルトの名無しさん
2008/10/09(木) 12:52:25語群を|でつなげた正規表現200回起動がよさそうに思う
ブロック使わずにif文ずらずら並べるならわからんけど
0461デフォルトの名無しさん
2008/10/09(木) 12:53:39Macはデザイン、クリエイター、
Linuxは学術用
UNIXはサーバー
Windowsはビジネスその他って感じだな
0462デフォルトの名無しさん
2008/10/09(木) 13:10:44EntryウィジェットやTextウィジェット上でドラッグすると
フリーズします。原因として考えられることは何でしょうか?
0463デフォルトの名無しさん
2008/10/09(木) 13:18:570464デフォルトの名無しさん
2008/10/09(木) 13:20:100465デフォルトの名無しさん
2008/10/09(木) 13:22:01正規表現でやるならRegexp.unionっていうのがあるよー
0466デフォルトの名無しさん
2008/10/09(木) 13:22:150467デフォルトの名無しさん
2008/10/09(木) 13:28:13irb> arr = ['a', 'bb', 'ccc', 'dddd', 'eeeee']
irb> p Regexp.new(arr.join('|'))
/a|bb|ccc|dddd|eeeee/
irb> p Regexp.union(*arr.map{|e| Regexp.new(e)})
/(?-mix:a)|(?-mix:bb)|(?-mix:ccc)|(?-mix:dddd)|(?-mix:eeeee)/
きちんと動くのかね、これ
0468デフォルトの名無しさん
2008/10/09(木) 13:29:26ttp://slashdot.jp/articles/08/01/02/0046222.shtml
より抜粋
。 Ruby on Railsに関わる人々の技術力の低さや閉鎖性、また「どいつもこいつもRoRでアホなソーシャルネットワークを作って商売にしたがる」風潮に愛想が尽きたとのことで、今後はRubyから手を引き、PythonやFactor、Luaに軸足を移すそうだ。
0469デフォルトの名無しさん
2008/10/09(木) 13:31:220470デフォルトの名無しさん
2008/10/09(木) 13:35:36Javaを知らないからそんなことになる
Javaを知ってればRoRはJavaで負けたスーツ連中が持ち上げてるだけだと早々に気づけたろうに
いい社会勉強になったことだろう
0471デフォルトの名無しさん
2008/10/09(木) 13:36:44動くよそりゃw
inspectがごちゃごちゃするのには確かに同意するが
0472デフォルトの名無しさん
2008/10/09(木) 13:41:02みんな、そこはもう大分前にとおりすぎたのだがwww
0473デフォルトの名無しさん
2008/10/09(木) 13:41:510474デフォルトの名無しさん
2008/10/09(木) 13:42:54あとZed Shawの記事はネタなので釣られないようにな。
単体の記事で見ると本当にそう思っているのかと思うもんだよ。
よくはてなブックマークとかでたくさんブックマークされている、煽り気味のエントリーとか
他の記事よむとネタじゃんってすぐにわかる、みたいなの
0475デフォルトの名無しさん
2008/10/09(木) 13:43:200476デフォルトの名無しさん
2008/10/09(木) 13:46:23…多いな
0477デフォルトの名無しさん
2008/10/09(木) 13:48:550478デフォルトの名無しさん
2008/10/09(木) 13:53:31キャッチセールに真っ先に引っかかるタイプ
0479デフォルトの名無しさん
2008/10/09(木) 13:59:540480デフォルトの名無しさん
2008/10/09(木) 14:02:470481デフォルトの名無しさん
2008/10/09(木) 16:01:000482デフォルトの名無しさん
2008/10/09(木) 16:29:260483デフォルトの名無しさん
2008/10/09(木) 16:53:30オブジェクト指向テキスト操作ネット通信言語です
0484デフォルトの名無しさん
2008/10/09(木) 17:09:03もっともなご意見です。
周りがみんな騒ぐので、こっそりRailsを触って見たが、
scaffoldまでは良かったがIDEが無いのでこつこつとコーディング
をしなければ行けず、こんなんで生産性がいいか?
と思っちゃいましたね。あと遅いし。
会社ではJavaで開発しているが、Eclipseを使った開発は超快適、
Ctl+スペースを打てば自動的にコードを挿入してくれるし、自動的に関数のヘルプも出るしね。
したい事を実現するためのライブラリはほぼ間違いなくのあるし、その数も桁違いに多いし。
Rubyに比べれば見た目のコーディング量は多いが、ほとんどはIDEが自動的に挿入したものだから、
実質は同じ量か下手すれば少ないだろう。
Railsは、一時の流行じゃないかなと思うね。
結局、ビジネスを企んでいるいるやつらに、うまく乗せられたんだよ。
「うそも100回言えば真実となる。」と誰かが言ったが、これが当てはまる気がする。生産性に関して言えば。
>>458
に一部賛同
PHP or Python:小規模
Java:大規模
でしょう。
どうもRails + Macで、私は先端を行くというような事を見せ付けているような感じが嫌いだ。
所詮、他の方の意見どおりwinでまともに使えなければこれ以上流行はしないだろう。
0485デフォルトの名無しさん
2008/10/09(木) 17:14:11RailsのためにRubyを学ぶような人や、Railsのソースを読んでも何してるかさっぱりわからんような人が使ってもどうにもならんな
という魔術師(志向)の人向けのフレームワークだったはずなんだが、当初からそのはずだったんだが、誰が捻じ曲げたのやら…
0486デフォルトの名無しさん
2008/10/09(木) 17:14:19ゲーム作ってみたいと思って、つい最近Ruby始めたんだけど。
講座HPみたいなところで、Ruby/SDLでつくったスクリプトをexeファイルにしても、
Ruby/SDLのdllファイルが全部同じディレクトリにはいってないと動作しないって書いてあったんだけど、
てことは作ったゲーム配布するときはdllファイルも全部つけて配布しなきゃいけないってこと?
0487デフォルトの名無しさん
2008/10/09(木) 17:19:27MacOSXでRubyを使うことに決めた人は、もともとPC-UNIX上でRuby使い倒してたような人が多い
そういう人の使うRoRは、その人のプロダクト作成に非常に役立つものになると思うよ
>>486
Exerbでひとつにまとめることが…DLLはできないのかな
というか、DLLは普通実行ファイルと一緒に配布するもんなんじゃね
あとRubyでゲーム作るのはマゾさんのすることなんだけど、あなたはマゾですか?
0488デフォルトの名無しさん
2008/10/09(木) 17:22:03Railsを擁護する気は全くないけれど
一応、IDEを使ってRailsの開発することはできるよ(EclipseとAptana)
>>486
その通り
>>487
俺は自分のことをSだと思ってたが、本当はMだったのか
0489デフォルトの名無しさん
2008/10/09(木) 17:41:030490デフォルトの名無しさん
2008/10/09(木) 17:45:19>>488
回答ありがとうございますm(__)m
一緒に配布するんですか〜。16個くらいあったんでまとめられれば見栄えがいいんだけど。
Rubyはゲームに向いてないですか;
大学の講義でRubyを軽く使うらしいから、ついでにと思って始めたんだけど・・
Rubyはわかりやすいって評判ですけど、Rubyでプログラミングに慣れてからC言語勉強した場合、
共通点が多くてサクサク覚えられますか?それとも違いが大きくて効率悪いですか?
0491デフォルトの名無しさん
2008/10/09(木) 17:49:36人によるんじゃないかな
共通してる部分も確かにあるけど
片方をしっかり身に着けない内に他に手を出すと
ごっちゃになって混乱しそう
0492デフォルトの名無しさん
2008/10/09(木) 17:49:460493デフォルトの名無しさん
2008/10/09(木) 17:54:36>>492
回答ありがとうございます。
ある程度身につくまでRubyで頑張ってみて、限界感じたらC言語勉強することにします〜
0494デフォルトの名無しさん
2008/10/09(木) 18:02:07Ruby→Cは堅苦しさ、面倒くささを感じる
0495デフォルトの名無しさん
2008/10/09(木) 18:07:31CとRubyはまったく用途が違うだろう。無理に使う事ができるけどね。
Cを勉強するならC++じゃないか。
Rubyでゲームか? 話にならない。
ゲーム開発している人間に聞いてみな。笑われるだけだ。
後々の資産として、C++を先に勉強したほうが得だと思うよ。
0496デフォルトの名無しさん
2008/10/09(木) 18:24:53C++を学ぶのとCを学ぶのでは意義が違うと何度言えば
0497デフォルトの名無しさん
2008/10/09(木) 18:26:110498デフォルトの名無しさん
2008/10/09(木) 18:30:38説明してみぞ
0499デフォルトの名無しさん
2008/10/09(木) 18:34:390500デフォルトの名無しさん
2008/10/09(木) 18:37:160501デフォルトの名無しさん
2008/10/09(木) 18:45:48業務でAptana使ってるが、コード補完はやはりイマイチ。
候補が無駄に多いうえに欲しいのが出てこなかったりする。
特に、ハッシュで引数与える関数は全滅だ。
この辺はNetBeansも大差ない。
abbrevのあるemacs系の方がまだ使える。
Eclipse + JDT で幸せなJava開発環境を味わってる人には物足りないだろう。
0502デフォルトの名無しさん
2008/10/09(木) 19:29:58C++はそれ単体で使うもの。
ゲーム作りならC++オンリーがパフォーマンス的に一番だろうなあ。
ただ、Rubyでも処理速度がさほど求められないならゲームに一応使えると思うが
ゲーム用のライブラリはCかC++だろうしなあ。
一応、RPGツクールはRuby使えるのもある。
0503デフォルトの名無しさん
2008/10/09(木) 20:03:58Ruby/SDLでだいたい満足してたから、他のゲーム用ライブラリ触ったことないんだが
CやC++にはそんなに良いライブラリがあるのか?
0504デフォルトの名無しさん
2008/10/09(木) 21:45:120505デフォルトの名無しさん
2008/10/10(金) 10:57:55SDL
0506デフォルトの名無しさん
2008/10/10(金) 18:18:11性能が要求されるなら直接DirectX使うべきだし
0507デフォルトの名無しさん
2008/10/10(金) 18:27:060508デフォルトの名無しさん
2008/10/10(金) 18:29:113Dでエフェクトも激しいアクションゲームなんかは大変だけど
そうじゃないゲームもたくさんある
0509デフォルトの名無しさん
2008/10/10(金) 18:36:430510デフォルトの名無しさん
2008/10/10(金) 18:47:04マジレスするとそうでもない
画像表示してブラーかけてるだけのADVなのにDirect9c対応グラフィックボード要求するとかもうアホかと
0511デフォルトの名無しさん
2008/10/10(金) 18:55:540512デフォルトの名無しさん
2008/10/10(金) 19:29:48【Ruby/SDL他】Rubyでゲーム制作・総合スレッド
http://pc11.2ch.net/test/read.cgi/gamedev/1207069887/
0513デフォルトの名無しさん
2008/10/10(金) 20:31:46それはその例がそういうゲームってだけだろ
0514デフォルトの名無しさん
2008/10/11(土) 10:27:030515デフォルトの名無しさん
2008/10/11(土) 15:25:43がArrayを継承したクラスのオブジェクトに自動でならないことにほんのりがっかりした
0516デフォルトの名無しさん
2008/10/11(土) 15:30:32gem のライブラリで時々見るな、そういう中途半端実装
そこはレシーバのコレクションクラスのオブジェクトを作って返せと…なんのための独自配列なのかと…
0517デフォルトの名無しさん
2008/10/11(土) 16:00:49find_all は Array じゃなくて Enumerable のメソッドだから
実際のところ自分のクラスは関係ない
0518デフォルトの名無しさん
2008/10/11(土) 21:09:090519デフォルトの名無しさん
2008/10/11(土) 21:59:400520デフォルトの名無しさん
2008/10/11(土) 22:08:310521デフォルトの名無しさん
2008/10/11(土) 22:09:370522デフォルトの名無しさん
2008/10/11(土) 22:13:230523デフォルトの名無しさん
2008/10/11(土) 22:13:390524デフォルトの名無しさん
2008/10/11(土) 22:18:59作るのは簡単だが使うときに面倒
あと作り直すときにも面倒
0525デフォルトの名無しさん
2008/10/11(土) 22:20:500526デフォルトの名無しさん
2008/10/11(土) 22:21:13ハッシュからハッシュを返すselectやmapはたまに欲しくなる
0527デフォルトの名無しさん
2008/10/11(土) 22:22:01っていうか、組み込みクラスは継承しないで委譲しろ、継承は自作クラス間でどんどんやれ
0528デフォルトの名無しさん
2008/10/11(土) 22:23:050529デフォルトの名無しさん
2008/10/11(土) 22:24:490530デフォルトの名無しさん
2008/10/12(日) 10:56:19a.object_id = b.object_id
みたいなことがやりたいんですが
0531デフォルトの名無しさん
2008/10/12(日) 11:51:41object_id を同じにしたい理由が良くわからんが…
普通に代入すれば同じになるでしょ。
今の実装では Fixnum の場合は即値だから必ず同じ値になるんじゃないかな。
0532デフォルトの名無しさん
2008/10/12(日) 12:05:34できませんという答が妥当な気がする
>>531の言うように、Ruby の整数の数値の値とオブジェクトIDは紐付けられてる
整数の 1 のオブジェクト ID は常に一定だ
0533デフォルトの名無しさん
2008/10/12(日) 13:33:03多分参照を扱いたいんだと思うが
そういう場合は配列やオブジェクトにくるんで受け渡しするのがベスト。
0534デフォルトの名無しさん
2008/10/12(日) 13:57:54ありがとうございます
そのままでは無理でしたか
ちなみに、何故やりたかったかというと(railsの話になりますが)
class A; attr_accessor id; end
class B; attr_accessor a_id; end
と二つclassがあり、AのidとBのa_idを同じにしたかったのです。
今までは
A.transaction do
@a.save!(ここで、a.idに代入される)
@b.a_id = @a.id
@b.save!
end
としていましたが、
@b.a_id.object_id = @a.id.object_id(みたいなことができれば。。)
A.transaction do
@a.save!
@b.save!
end
とできると、updateでもcreateでもtransaction内が共通になるため、2つのclassをまとめたclassが定義しやすいなと
0535デフォルトの名無しさん
2008/10/12(日) 15:39:09なぜそうなってしまうのかわからない。
スキーマはどうなってるの?
0536デフォルトの名無しさん
2008/10/12(日) 16:27:25ごめん
その話聞いても,idとa_idを同じオブジェクトIDにしたい理由がわかんないわ
それにそもそも代入やFixnumみたいなやつ以外で同じオブジェクトIDになることない気がする
なにか勘違いしてるんじゃ…
0537デフォルトの名無しさん
2008/10/12(日) 16:47:400538デフォルトの名無しさん
2008/10/12(日) 16:56:36b.object_id = a.object_id
としておけば
a = 10
としたときに,bも自動的に10になってくれませんか?
っていう話でしょ
object_idはそんな用途に使えません
0539デフォルトの名無しさん
2008/10/12(日) 17:01:37すげー
よく検討ついたな
0540デフォルトの名無しさん
2008/10/12(日) 17:54:01その通りです
分かりにくい説明で申し訳ないです
用は参照を使いたかったんですが。。
0541デフォルトの名無しさん
2008/10/12(日) 18:32:47すっげー憶測だけど、Bはインスタンス変数でAを持つのが素直な設計だったりしない?
それならB#save!で@a.save!するだけで済むから楽なんだけど
0542デフォルトの名無しさん
2008/10/12(日) 18:38:16おまえ、ほんとエスパーだな。
おれはさっぱり読み解けなかった。
0543デフォルトの名無しさん
2008/10/12(日) 19:03:44railsというかActiveSupportはそういう関連づけを自動化してくれなかったっけ?
あるいは>>541のようにしてB#a_idは@a.idを返すようにするとか。
0544デフォルトの名無しさん
2008/10/12(日) 20:48:21さらっと描きだせるくらいのレベルになるまでARを封印すべきだ。
もし仕事でやってるなら合掌。
0545デフォルトの名無しさん
2008/10/12(日) 21:00:36確かにModelはそんな感じの設計です。
@a.b = @b
で関連付けて、
@a.save!
とすればbも入るってことですよね。
ただ、viewに2つのmodelを分けて書くのが面倒だったので、調べているとActivePresenterなるpluginを発見し
(ttp://jamesgolick.com/2008/7/28/introducing-activepresenter-the-presenter-library-you-already-know)
利用してみたところ、さきほどの参照のようなことをしたいなと思った次第です。
このpluginは2つのModelを結合してくれるもので、
@ab = AB.new(params[:ab])
@ab.save
で、AもBもsaveできちゃうよということでした。
ただ、DBの保存時に決定される@ab.a_idと@ab.b_a_idが関連づかずに困っていたというわけです。
あまり、plugin自体には手を入れてくなかったので、
@ab.a_idと@ab.b_a_idが同じだよということができれば良いなということでした。
0546デフォルトの名無しさん
2008/10/12(日) 23:11:180547デフォルトの名無しさん
2008/10/12(日) 23:24:26自己レスです
とりあえず、参照は素直にはできないということは分かりました。
ありがとうございました。
もう少し試行錯誤して、無理なら普通のARにしてみます。
0548デフォルトの名無しさん
2008/10/13(月) 01:37:23初心者として気になるんだけど
そのレベルになるまではどんな感じやるのが上達する?
0549デフォルトの名無しさん
2008/10/13(月) 01:44:191週間に3日書く
今週はRubyスクリプト書いたり改良の試行錯誤が無かったなあという週が無いという状態にする
制御構造覚えたらマニュアル見つつたまに使う程度のカジュアルさでももちろん一向に構わないが、
その場合はRubyが上達することはないだろうし、上達するほど頑張る理由もそもそも無いことだろう
0550デフォルトの名無しさん
2008/10/13(月) 01:56:31スクリプト作るの早くなったような気がする
今でも特異メソッドとかわからんが
インスタンスメソッドとクラスメソッドしか作ってない
Proc はライブラリで要求されないと作らない
yield は使う機会が無いのでわけがわからない
0551デフォルトの名無しさん
2008/10/13(月) 06:21:150552デフォルトの名無しさん
2008/10/13(月) 06:31:29少しづつでも書けばいいんだろうけど
つまらないから全く続かない…
0553デフォルトの名無しさん
2008/10/13(月) 07:56:06テストを書くのに悩む時間 >> 変なバグで悩む時間
なのでテストを書く理由がない俺
他人様に提供するライブラリ書くんじゃない限り要らないもんだと割り切ってる
書き方指南がないということは本当はみんな不要だと思ってる証拠
0554デフォルトの名無しさん
2008/10/13(月) 08:32:04書き方指南いろいろあるじゃん
本にもwebページにも
俺も有用であるという自信はないが
0555デフォルトの名無しさん
2008/10/13(月) 08:43:49お前そんなスクリプトなんて普段絶対書かないだろ、というのが多々…(特にテスト駆動)
0556デフォルトの名無しさん
2008/10/13(月) 08:54:11というかMockとかあのへんを理解しないと関数的スクリプトのテストしかできん
0557デフォルトの名無しさん
2008/10/13(月) 09:23:47それはそれで楽める部分もあると思う。
0558デフォルトの名無しさん
2008/10/13(月) 09:42:39デグレ出るたびに書いときゃよかったって思う。
0559デフォルトの名無しさん
2008/10/13(月) 10:07:10つまり上級者になるためには、テストがきちんと書けるようにならないといけない。
おれはまだうまく書けないんだけどな。
UIのテストなんか、どうしたらいいのかさっぱりだ。
0560デフォルトの名無しさん
2008/10/13(月) 10:36:29本文コードの追加変更に対してテストが異常に適当というか不足
時間かけてまでして作りたくないかどうすれば網羅するか考えるの面倒なんだろうな
0561デフォルトの名無しさん
2008/10/13(月) 14:01:54怖くてできない体になった。
0562デフォルトの名無しさん
2008/10/13(月) 15:01:22ttp://mono.kmc.gr.jp/~yhara/w/?ZenTestMemo
ttp://zentest.rubyforge.org/ZenTest/files/README_txt.html
gem install ZenTest
でインストール。
0563デフォルトの名無しさん
2008/10/13(月) 17:14:28わかります
0564デフォルトの名無しさん
2008/10/13(月) 17:30:17あと、GUIアプリのTestってどうやるの?
0565デフォルトの名無しさん
2008/10/13(月) 17:35:590566デフォルトの名無しさん
2008/10/13(月) 17:55:46が、チェック項目をリストにして人力でやったほうがなんぼかマシ。
0567デフォルトの名無しさん
2008/10/13(月) 18:30:55WebならSeleniumとか。
0568デフォルトの名無しさん
2008/10/13(月) 18:32:59自動でマウス動かしてクリックしたりフォーム埋めたりするよプログラムを併用する
稀にどうしても自動化できないところが出てくることがあり、そういうときは漏れのない操作一覧図を書いて手動
0569デフォルトの名無しさん
2008/10/13(月) 18:58:10ビューとコントローラを極力分離すれば、ある程度までは機械的にテストできる
0570デフォルトの名無しさん
2008/10/13(月) 19:02:190571デフォルトの名無しさん
2008/10/13(月) 19:15:360572デフォルトの名無しさん
2008/10/13(月) 19:52:470573デフォルトの名無しさん
2008/10/14(火) 02:10:57例えば、
"192.168.0.45".in_mask?("192.168.0.0/24") # => true
"192.168.0.45".in_mask?("192.168.0.0/29") # => false
となってほしいのです。
0574デフォルトの名無しさん
2008/10/14(火) 02:15:25ANDしてやればいい
0575デフォルトの名無しさん
2008/10/14(火) 03:03:18IPAddr#include?
0576デフォルトの名無しさん
2008/10/14(火) 07:48:35Windowsにて、ワンクリックインストーラでrubyをインストールし、
RMagick(とImageMagick)をインストールしました。
サンプルプログラムを走らせようとすると(ruby sample.rb)、以下のようなエラーメッセージが出ました。
./RMagick.rb:2: uninitialized constant Magick (NameError)
from D:/Programs/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:
27:in `gem_original_require'
from D:/Programs/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:
27:in `require'
from rmagick.rb:1
ファイルの内容は以下です。
require 'RMagick'
include Magick
img1 = ImageList.new("d:/a.bmp")
img2 = img1.blur_image(0,2)
img2.write("sample01.bmp")
exit
色々と試した結果、上記ファイルがあるディレクトリ(D:\rubyとする)をカレントディレクトリとして、
cmd.exeからruby sample.rbとすると上記のエラーが発生しますが、カレントディレクトリがd:\の
場合は正常に実行されました。どうもカレントディレクトリに*.rbなファイルがあると失敗するようです。
irbでも同様の結果でした。
これを回避する方法はないものでしょうか?
0577デフォルトの名無しさん
2008/10/14(火) 09:35:18>>576
require 'hoge' は カレントディレクトリの hoge.rb ファイルを読み込む
rmagick.rb (大文字小文字問わず)という自作ファイルを改名しろ
「hoge ライブラリを試そうとして hoge.rb を作って実行し、次にまた別のスクリプトを作って変なエラーにはまる」というのは
そろそろ FAQ にしてもいいと思う
0578デフォルトの名無しさん
2008/10/14(火) 09:46:44ああ、まさにそれでした。
5時間くらい悩んでの書き込みだったので、今はRMagickのマニュアルを読んでました。
有難うございました。
0579デフォルトの名無しさん
2008/10/14(火) 20:24:43gsubってものすごくつかいづらいんですけど、
なんか他にいい方法はありませんか?
0580デフォルトの名無しさん
2008/10/14(火) 21:00:31十分簡潔に思うが、どの辺が使いづらく感じた?
0581デフォルトの名無しさん
2008/10/14(火) 21:19:06あたりで手を打たないか?
0582デフォルトの名無しさん
2008/10/14(火) 21:19:400583デフォルトの名無しさん
2008/10/14(火) 21:42:380584デフォルトの名無しさん
2008/10/14(火) 21:45:41・・・うん、ブロックのほうがいい。
>>579-580
後方参照使わずにgsub繰り返すっていう力押しをしてた人が
ハマるパターンだろうね。
0585デフォルトの名無しさん
2008/10/14(火) 22:04:09なるほど、ブロックを使えばいいんですね。
>十分簡潔に思うが、どの辺が使いづらく感じた?
perl なら、 s/([\\'])/\\\1/; と、比較的直感的なところを
>>584 のように"\\\\\\1"と書くとバックスラッシュが多くなりすぎて
後で読みにくいと思ったわけです。
0586デフォルトの名無しさん
2008/10/14(火) 22:06:360587デフォルトの名無しさん
2008/10/14(火) 23:56:300588デフォルトの名無しさん
2008/10/15(水) 00:44:09ENV["OS"]だと32bit版XPでも64bit版XPでも"Windows_NT"と表示されて区別が付きません。
0589デフォルトの名無しさん
2008/10/15(水) 00:51:21ENV['PROCESSOR_ARCHITECTURE'].include?('64') が true なら 64BitなCPUなのできっと 64Bit版Windows
ttp://support.microsoft.com/kb/827218/
0590デフォルトの名無しさん
2008/10/15(水) 01:06:42ruby -e 'p RUBY_PLATFORM'
64bit環境を持ってないのでどんな出力がされるのかは知らんけど
0591デフォルトの名無しさん
2008/10/15(水) 01:10:110592デフォルトの名無しさん
2008/10/15(水) 01:15:50とかそういうアホを思いついた
0593デフォルトの名無しさん
2008/10/15(水) 01:21:560594デフォルトの名無しさん
2008/10/15(水) 02:22:11呼び方はあれ、dl 使うなり何なり工夫してくれと。
0595デフォルトの名無しさん
2008/10/15(水) 03:01:15class CGI
def valid?( param, idx = 0 )
self.params[param] and self.params[param][idx] and self.params[param][idx].length > 0
end
end
というコードの著作権者、またはライセンスってわかりますか?
GPL だとしてもソースを配布する際には著作権表示が必要ですよね。
tDiary や hiki にも登場していますが、特別そういう表示がないので
勝手に使っても差し支えないんでしょうか?
0596デフォルトの名無しさん
2008/10/15(水) 03:12:41著作権が発生するほどの創作性はないよ。
0597デフォルトの名無しさん
2008/10/15(水) 06:11:16if self.params[param]
if self.params[param][idx]
if not self.params[param][idx].size.zero?
return true
end
end
end
return false
0598デフォルトの名無しさん
2008/10/15(水) 06:42:4764bit の Windows で試していないから動いたらラッキーぐらいで
require 'Win32API'
GetCurrentProcess = Win32API.new('kernel32', 'GetCurrentProcess', 'v', 'i')
hProcess = GetCurrentProcess.call()
isWow64Process = "\0" * 4
is64BitWindows = false
begin
IsWow64Process = Win32API.new('Kernel32', 'IsWow64Process', ['p', 'p'], 'i')
IsWow64Process.call(hProcess, isWow64Process)
is64bitOS = true unless isWow64Process == "\0" * 4
rescue RuntimeError
end
p is64BitWindows
0599デフォルトの名無しさん
2008/10/15(水) 07:08:010600デフォルトの名無しさん
2008/10/15(水) 08:10:270601デフォルトの名無しさん
2008/10/15(水) 08:20:52さりとて、Windows の API にはハイフン区切りは似合わないのも事実
0602デフォルトの名無しさん
2008/10/15(水) 08:25:440603デフォルトの名無しさん
2008/10/15(水) 12:36:20クラス名でもないのに何故?と違和感を感じる
0604デフォルトの名無しさん
2008/10/15(水) 14:33:090605デフォルトの名無しさん
2008/10/15(水) 15:06:15>isPredicateではなくpredicate?
変数に?使えたっけ
0606デフォルトの名無しさん
2008/10/15(水) 15:17:48けどpredicateってことは多分604はメソッド名のつもりで言ったんだと思う
0607デフォルトの名無しさん
2008/10/15(水) 17:14:47attr_reader :hoge?
って書けないんだよな
0608デフォルトの名無しさん
2008/10/15(水) 20:37:53Module#attr_readerが再定義されていればその限りじゃないぜ
意義はないけど。
0609デフォルトの名無しさん
2008/10/15(水) 20:39:11自分でattr_readerを拡張するか、rubyplusのboolattr使うと便利
つーかActiveSupport辺りにも入ってそうな気がする
0610デフォルトの名無しさん
2008/10/15(水) 21:32:470611デフォルトの名無しさん
2008/10/15(水) 21:48:34メソッドごとに一つ一つ?付きを定義していくのって凄く面倒じゃね? 変更に弱くなるし
0612デフォルトの名無しさん
2008/10/15(水) 21:59:26末尾削った変数にアクセスするっていうのも便利かもしらんね
でも真偽値のアクセサが面倒になるほど多いっていうのも
設計見直せる可能性はない?
0613デフォルトの名無しさん
2008/10/15(水) 22:29:30def self.def_predicate(name)
attr_accessor name
private name
private "#{name}="
define_method("#{name}?"){ __send__(name) }
public "#{name}?"
end
def_predicate :hoge
end
こんなんとか。リフレクションを用いるほど多く使うんじゃなければ
ちゃんと書いたほうがいいと思うけど
0614デフォルトの名無しさん
2008/10/15(水) 22:40:14>>612の言うように?付きメソッドをそんなに定義することあるかな?
0615611
2008/10/15(水) 22:43:314〜5つ程度の?付きメソッドでも、似たような定義を続けて書くことになるからかなり面倒だと俺は思う
この辺は個人の意見もあるとは思うが
0616デフォルトの名無しさん
2008/10/15(水) 22:51:08メソッドはきちんと定義する
0617デフォルトの名無しさん
2008/10/15(水) 23:34:270618デフォルトの名無しさん
2008/10/15(水) 23:45:48data= っていう変数が作れないのは不自然か?
change! っていう変数が作れないのは不自然か?
0619デフォルトの名無しさん
2008/10/15(水) 23:56:18変数名が述語になれないのはおかしい
0620デフォルトの名無しさん
2008/10/16(木) 00:08:25まず見た目がきもい
そして三項演算子の文法と衝突しそう
0621デフォルトの名無しさん
2008/10/16(木) 00:08:330622デフォルトの名無しさん
2008/10/16(木) 00:12:410623デフォルトの名無しさん
2008/10/16(木) 00:14:27二者択一の判断自体をメソッドで参照するのがフツーな気がする
0624デフォルトの名無しさん
2008/10/16(木) 00:32:23そんなこと言ったらメソッド foo? がどんなオブジェクトも返すことのできる点もおかしくないかい?
0625デフォルトの名無しさん
2008/10/16(木) 00:36:58きもいってことだよ。
別に @hoge? = true ならいいってことじゃない
0626デフォルトの名無しさん
2008/10/16(木) 00:41:29変数名とメソッド名の間で、言葉づかいの上でのセマンティックスが違っている「べき」なら、attr 系は廃止すべきってことになるな
>>625
@hoge? = true なら悪くないと思うけど
0627デフォルトの名無しさん
2008/10/16(木) 00:46:06メソッド名の慣習のせいで、「hogeっすか?」って訊いてるようなイメージがあるじゃん。>@hoge?
で、「そうっすよ」とか「違いますよ」とか返事しようとしてるところに値突っ込むってのは変な感じだ。観念的な言い方でアレだが
0628デフォルトの名無しさん
2008/10/16(木) 00:50:34それよりも、attr 系によって変数名とメソッド名を関連付ける機能が提供されているにもかかわらず、? 付のメソッドだけ特例でそれができないほうが一貫性に欠けて嫌だ。
0629デフォルトの名無しさん
2008/10/16(木) 00:54:28単なるメソッド。とあるリフレクションのラップなだけ。
>? 付のメソッドだけ特例でそれができない
できないのはそこじゃなくて変数名に?を付けること。
でもってこっちは処理系本体の機能の話。
パーサとかに手を入れて?付き変数を許してまで@hoge?とか書きたいか?
0630デフォルトの名無しさん
2008/10/16(木) 00:58:26別に難しいことじゃない。
あと、attr_reader が処理系そのものが提供しているかどうかなんて関係ないじゃん。飽くまで意味論の話だし、built-inで入ってるんだから。
0631デフォルトの名無しさん
2008/10/16(木) 01:02:560632デフォルトの名無しさん
2008/10/16(木) 01:06:57メソッドvalueと変数@valueがあったとして、メソッドのほうは「valueは何か?」と問う意味なのに対して@valueはそのままの意味だよね?
同じようにhoge?がメッセージだと解釈されても、@hoge?までメッセージと解釈する必要はないのでは?
0633デフォルトの名無しさん
2008/10/16(木) 01:20:26また別の問題として、
変数名に?が付けられて、attr系もそんな名前を受け取るとすると
hoge.foo? = true とか
hoge.bar! = false とかが出て来る。後者なんて比較の否定と見間違う。
さらにいうと、?や!を許すとして、[]とか[]=とか@-は変数名に許す? 全部メソッド名としては有効なはずだよ。
attr_accessor :foo=
-> foo.foo= = 123
こんなことになる
0634デフォルトの名無しさん
2008/10/16(木) 01:44:47hoge.foo! = ってのはまあちょっとヘンだけど、attr系で ! つけたかったことないから、あってもなくてもいいや。
[] や = が「メソッドの一部である」というのは別の側面で筋を通すための論法であって必ずしも名前の一部ではないので
(その証拠にメソッド「foo=」は、「foo.foo = 」のようにスペースを入れることができる)、
attr_accessor :foo= 等はなくてもよいかと。
0635デフォルトの名無しさん
2008/10/16(木) 01:55:24いやいや、メソッド名はあくまで「foo=」だよ。__send__(:foo=, 123)とか出来る。
パーサが頑張って「foo.foo = value」を「foo.foo=(value)」と同じような扱いにしてくれているだけで。
0636デフォルトの名無しさん
2008/10/16(木) 06:05:110637デフォルトの名無しさん
2008/10/16(木) 09:41:530638デフォルトの名無しさん
2008/10/21(火) 07:15:54ツールバーを移動して1段にまとめたりしても、RDEを最起動すると別の位置へ
勝手に移動した状態になってしまいます
コンソール窓は、フォントの設定が初期値に戻ってしまうのと、
ctrl+alt+cで開閉したりができません
コンソール窓のフォント設定だけは致命的なんで、そこだけでもなんとかできればと
0639638
2008/10/21(火) 07:27:47ActiveScriptRuby 1.8.7(p72)
Windows XP SP3
です
0640デフォルトの名無しさん
2008/10/21(火) 14:20:140641デフォルトの名無しさん
2008/10/21(火) 15:51:59俺なら間違ってもRDEなんて使わせないんだが
0642デフォルトの名無しさん
2008/10/21(火) 15:56:440643デフォルトの名無しさん
2008/10/21(火) 15:58:04「我慢して使う」時点で何か間違っとる
素直にエディタとプロンプトをAlt+Tabで切り替えて使うほうがマシ
0644638
2008/10/21(火) 17:13:53コンソール窓で右クリして「設定」からフォントを設定していたのですが、
直ぐ上に「フォント」というのがありました… 見逃してました
>>640
どもです
ツールバーはしょうがないみたいですね
>>641-643
どもです
winの人がrubyを始めようと思うと、RDEがまず最初に目に入るような気がします
NetBeansはDLしてあったのですが、JAVAが云々…とまたやることが増えそうなので
後回しになってました
とりあえず簡単なプログラムを書いて試したかったので、RDEをという感じで
日常はEmEditorのフリー版(かなり古い)を使っていたので、それでやればよかったのですが
コマンド操作には不慣れなwin人なんで、お手軽(そう)なRDEから初めてみようと思い
初心者〜中級者?への道筋がすっぽり抜けてる感じがしていて先行き不安ですが
書いて直ぐ実行できるのはやっぱり楽しいし勉強になります
0645デフォルトの名無しさん
2008/10/21(火) 18:04:59ファイルに保存はしなきゃならんけど、EmEditorも言語モード別のキー設定と、
外部プログラムのを実行して標準出力を下窓に出す機能が(少なくともVer6からには)
備わってるから、キー1発で実行はできるよ。
0646デフォルトの名無しさん
2008/10/21(火) 18:48:59動作はけっこう軽くて多機能、日本語対応と利点は多い
が、不安定さ(特に文字コード関連)とレジストリ使用がそれらの魅力を帳消しにしている
0647デフォルトの名無しさん
2008/10/21(火) 19:42:48普段から使っていれば、少なくとも初心者には勧めようとは思えないはずだ
単一言語用だからといってIDE作成が簡単になるわけではない
1種類の言語にしか対応しなくても、10種類の言語に対応してても、IDEとしての作り方は同じだと思う
Rubyに特化すればIDEが俺でも作れそうとか最初に思った人は罪深いなと思ってみる
0648デフォルトの名無しさん
2008/10/21(火) 19:58:420649デフォルトの名無しさん
2008/10/21(火) 22:52:51Test::Sample
のように書かれていたら、TestとSampleはともにクラスでTestがSampleの親クラス
という認識で合ってますか?
::という記号は定数やクラス変数なども表すとネットで見たのですが
区別は付くのでしょうか?
0650デフォルトの名無しさん
2008/10/21(火) 23:13:36Test::Sample は Test 「の」 Sample だ
それ以上の意味はないよ
クラスかどうかは普通に識別子で判断する
先頭が大文字なら定数かクラス
先頭が小文字かアンダースコアならメソッド
ただ、あからさまに面倒なのでメソッドを :: で繋ぐことはRubyでは意図的にしない
(他の言語での書き方をしないと死ぬ人が稀に使う)
0651649
2008/10/22(水) 00:09:42ありがとうございます。
そんな曖昧なものだったんですね。メソッドは#でしたっけ?
この業界っていやに自己主張強い人が多いから統一できないのかな
0652デフォルトの名無しさん
2008/10/22(水) 07:50:200653デフォルトの名無しさん
2008/10/22(水) 09:30:08スクリプト上での表記とマニュアルでの表記は違う
…違ってちゃいけないと思うんだが、まあ、
「○○クラスのインスタンスメソッド××を…」と書く代わりに「○○#××を…」と
「○○クラスのクラスメソッド××を…」と書く代わりに「○○.××を…」と
「○○クラスの定数××を…」と書く代わりに「○○::××を…」と書けたほうが
一度理解してしまえば便利ではある
0654デフォルトの名無しさん
2008/10/22(水) 18:04:18> スクリプト上での表記とマニュアルでの表記は違う
>
> …違ってちゃいけないと思うんだが、まあ、
とはいえ、あるクラスのインスタンスメソッドというのは、直接コード上には
現れないから、そもそも同じ表記にはしようがない。
いちいち X.new.m とか書くのもめんどくさいだろ。
0655デフォルトの名無しさん
2008/10/22(水) 20:22:05Test::Sample だったら普通はmoduleかclassがネストされてるやつじゃね?
0656デフォルトの名無しさん
2008/10/23(木) 09:59:06::で示されるのは主に
・モジュール内クラス
・クラス内クラス
・モジュール内モジュール
・クラス内モジュール
・モジュールの持つ定数
・クラスの持つ定数
などであって、クラス間の親子関係ではない。
どちらかと言えば所有、もしくは所属の関係。
0657デフォルトの名無しさん
2008/10/23(木) 17:43:37コマンドライン登録しとけば、キー一発で実行できるし、プロンプト
勝手に閉じてほしくないなら、ruby.exe実行してからpauseするバッチ
ファイル登録すればいい。
0658デフォルトの名無しさん
2008/10/23(木) 18:56:51動作軽いしUSBで運べるし、便利だよね
0659デフォルトの名無しさん
2008/10/23(木) 22:50:550660デフォルトの名無しさん
2008/10/23(木) 22:57:18こんな感じで出せばいいんじゃないか?
0661デフォルトの名無しさん
2008/10/23(木) 23:42:46$ refe NKF.guess
require 'nkf'
NKF.guess
--- guess(str)
文字列 str の漢字コードを判別して返します。
返される値は、NKF モジュールのモジュール定数です(下記参照)。
ruby 1.8.2 より前は現在の NKF.guess1 と同じものです。
ruby 1.8.2 以降では NKF.guess2 と同じものです。
下記参照て言われても、下記がない・・・
0662デフォルトの名無しさん
2008/10/24(金) 08:30:260663デフォルトの名無しさん
2008/10/24(金) 09:07:06あれは inspect で文字列が出るべきだと思う
0664デフォルトの名無しさん
2008/10/24(金) 09:07:51書いてねえって
0665デフォルトの名無しさん
2008/10/24(金) 10:01:53キーワード:NKF.guess(str) (nkf)
でとんだページの下に定数が書いてあるけど・・・
0666デフォルトの名無しさん
2008/10/24(金) 11:02:430667デフォルトの名無しさん
2008/10/24(金) 23:52:290668デフォルトの名無しさん
2008/10/25(土) 13:34:31じゃあクラスの継承はどうやって表すの?
0669デフォルトの名無しさん
2008/10/25(土) 13:55:39「XXXを継承したYYY」のように文章で書くしかないな
0670デフォルトの名無しさん
2008/10/25(土) 23:39:57require 'rubygems'
require "win32/clipboard"
require 'win32ole'
excel = WIN32OLE.new('Excel.Application')
excel.visible = false
excel.displayAlerts = false
excel.workbooks.open 'filename' => 'foo'
workbook = excel.workbooks(1)
sheet = workbook.sheets(1)
sheet.select
excel.Columns("B:B").select
excel.selection.copy
excel.quit
↓に続く
0671デフォルトの名無しさん
2008/10/25(土) 23:40:47class Excel
end
excel = WIN32OLE.new('Excel.Application')
WIN32OLE.const_load(excel, Excel)
excel.visible = true
excel.displayAlerts = true
book = excel.workbooks.add('bar')
sheet = book.worksheets(1)
sheet.Columns("B:B").Insert Shiftt = Excel::XlToRight
excel.Range("B1").ColumnWidth=11 #セル幅設定 ←幅や領域が違うっていうエラーが出るのでなんとなく
excel.Columns("B:B").select
excel.selection.parent.paste
book.Save
excel.quit
エラーメッセージは以下
`method_missing': paste (WIN32OLERuntimeError)
OLE error code:800A03EC in Microsoft Office Excel
Worksheet クラスの Paste プロパティを取得できません。
HRESULT error code:0x80020009
例外が発生しました
pastespecialなんてのも試してみてもダメ、エラーコードでググってもダメ、"ruby excel paste"などもググって見ましたがダメでした。
よろしくお願いします。
0672デフォルトの名無しさん
2008/10/26(日) 11:07:36Excel.Application ペースト でググるんだ
Win32OLEの情報を探すときはRubyに限定しないほうが良い
俺excel持ってないから動作検証できないけどごめんね
0673デフォルトの名無しさん
2008/10/26(日) 12:43:20spreadsheet-0.6.1.5 Documentation
http://spreadsheet.rubyforge.org/
0674670-671
2008/10/26(日) 17:37:00ありがとうございます。解決しました。
原因は貼り付ける際に列で指定していたからダメだったようで、
貼り付ける先頭セルの値をRangeで受け渡したらうまく行きました。
また上のプログラムだとちゃんと保存できないのも注意です。
開き方の問題なのか読み取り専用になっているようです。
名前を付けて保存するようにしたらちゃんと保存されました。
0675デフォルトの名無しさん
2008/10/26(日) 19:29:35どこがおかしいのかな。
使っているサーバー @pages (www4サーバー)
一応誘導を受けて来たので誘導元
□規制解除要望□ dion.ne.jp専用 Part727
http://ex24.2ch.net/test/read.cgi/accuse/1224841217/
スクリプトはここからダウンロードして
http://www4.atpages.jp/mh35jp/bbsmake.html
0676デフォルトの名無しさん
2008/10/26(日) 19:33:52遅いので速くしたいです。(元々excelのものが遅いのが発端です。)
アドバイスをいただけないでしょうか。
よろしくお願いします。
###################
想定する入力データ
1,0.25,2.25
2,0.75,1.76
3,1.24,1.24
4,1.76,0.75
5,2.25,0.25
0677676
2008/10/26(日) 19:34:59def Vlookup(vs,v)
vx=vs.to_f
if (vx<v[0][0]) then
return -99.9
break
elsif (vx>v[v.size-1][0]) then
return 99.9
break
end
for i in 0..(v.size-1)
vpre=v[i][0]
vpst=v[i+1][0]
if (vx>vpre)&&(vx<=vpst) then
if (vpre-vx).abs<=(vpst-vx).abs then
num=i
elsif (vpre-vx).abs>(vpst-vx).abs then
num=i+1
end
break
end
end
return v[num][1]
end
0678676
2008/10/26(日) 19:35:43DAT=[[0.5,5.0,50.0],[1.0,10.0,100.0],[1.5,15.0,150.0],[2.0,20.0,200.0]]
lines=Array.new
open(ARGV[0],"r") do |f|
while line = f.gets
line.chomp!
lines=line.split(/,/)
lines[1]=Vlookup(lines[1],DAT)
lines[2]=Vlookup(lines[2],DAT)
print lines.join(","),"\n"
end
end
0679デフォルトの名無しさん
2008/10/26(日) 19:44:37いきなり自作CGIをレンタルサーバーで動かすとか正気の沙汰ではないぞ
httpdのエラーログをみよう。
いやその前に、まずは、WindowsならばXAMPPでも入れてローカル環境で試そう、な
0680デフォルトの名無しさん
2008/10/26(日) 19:54:27一応ローカルで実験はした。
方法
1.irbを起動する
2.環境変数を設定
3.systemコマンドで実行
結果
とりあえず動いた
だからアップロードしたわけだが。
0681デフォルトの名無しさん
2008/10/26(日) 19:58:41・ 馬鹿にCGIを渡すな
0682デフォルトの名無しさん
2008/10/26(日) 20:02:38一応Apacheをインストール中
ところで、WindowsのApacheでCGIを動かすとき#!の行はどうすればいい?
0683デフォルトの名無しさん
2008/10/26(日) 20:10:510684デフォルトの名無しさん
2008/10/26(日) 20:12:440685デフォルトの名無しさん
2008/10/26(日) 20:12:47パス通して#!rubyでいいんじゃね
0686デフォルトの名無しさん
2008/10/26(日) 20:13:15Ruby本体をインスコしたディレクトリにパスは通しておいてね
0687675
2008/10/26(日) 20:20:11今度は書き込みを実行したとき何も出力されないバグが出てきたが
0688デフォルトの名無しさん
2008/10/26(日) 20:34:55ttp://cgi-exception.rubyforge.org/
0689デフォルトの名無しさん
2008/10/26(日) 21:02:28ローカルでは動く。リモートでは動かない
cgi-exceptionをrequireしても(もちろんそのファイルごとアップロード済み)
まったくダメ。
0690デフォルトの名無しさん
2008/10/26(日) 21:07:27高そう。標準添付のライブラリ(cgi,nkf)しか使ってないのに…
0691デフォルトの名無しさん
2008/10/26(日) 21:24:01NKF,nkf(略) を NKF.nkf(略) にするとかさ、
変数名やGET/POSTパラメタの名前に誤りがないかよく見るとかさ。
0692デフォルトの名無しさん
2008/10/26(日) 21:26:19CGI-Exceptionでエラーが出ないなら次はprintfデバッグだ
スクリプト中の適当な位置で、テキストファイルにログを書き出していけば
たいていエラー箇所を特定できる
(スクリプトが全く実行されない場合は、syntax errorかrubyパス絡みの可能性が高い)
0693692
2008/10/26(日) 21:37:21初心者は(初心者じゃなくても一緒だけど)まず最小限のCGIスクリプトから書き始めろ
小さなスクリプトが動いてから、徐々に機能追加していかないと
ただでさえ特定しづらいCGIのエラーが、余計に特定しづらくなる
少なくとも、そこそこの長さがあって環境変数が関わるような掲示板スクリプトを
一気に書き上げるべきではない
0694デフォルトの名無しさん
2008/10/26(日) 21:55:34それにはすでに気づいて直した。直したが治らない。
>>692
syntax errorがらみはありえない(-cオプションで検査済み)
パスもチェック済み(/usr/local/bin/ruby)
>>693
一応ローカルで動作確認済みなので
0695デフォルトの名無しさん
2008/10/26(日) 21:59:42>>694
だからその方法が間違ってると指摘されてるだろう
CGIは「ブラウザでInternalServerErrorが出なくなるまで書き直す」という手法で開発してはいけない
エラーメッセージを確認しない開発手法は糞だ
0696デフォルトの名無しさん
2008/10/26(日) 22:02:14最小限のCGIスクリプトをサーバー上で動かさないとダメ
「環境変数自分で入れて、systemで実行して動いたから」というのではあまり意味がない
0697デフォルトの名無しさん
2008/10/26(日) 22:03:11・ 馬鹿にCGIを渡すな
0698デフォルトの名無しさん
2008/10/26(日) 22:04:18とりあえずちょいと方法が思い浮かんだので実験してみる
1.まずは単なるテストスクリプトが動くか確かめる
それすら動かないようならとりあえずこの環境での動作はあきらめたほうがよい
2.次にちょっとした工夫のなされたテストスクリプトを使って実験を行う
3.最後にその結果を見て検証する
0699デフォルトの名無しさん
2008/10/26(日) 22:04:55RubyでCGIやる場合に必要な知識はRubyそのものではないのだな
ライブラリで吸収隠蔽すべきかどうかというのは悩ましいとこだと思う
0700デフォルトの名無しさん
2008/10/26(日) 22:05:14Apacheでも動作確認済み
1時間以上前に実験した。
0701デフォルトの名無しさん
2008/10/26(日) 22:06:11Arrayが渡ったりしてNoMethodError -> あぼーん
bbs:cgi:58: NKF,nkf('-s',content) カンマとドットのtypo
とりあえず2つみっけ
動作確認済みとは笑わせるな
それともHPのzipからまた弄ってるのか?
0702デフォルトの名無しさん
2008/10/26(日) 22:09:26どう動作確認したのかkwsk
俺の環境でApache立ち上げて試してみたが、普通にアクセスしただけでエラーが出る
具体的には>>701
0703デフォルトの名無しさん
2008/10/26(日) 22:09:46print "Content-type: text/html\n\n"
print "<html><head><title>テスト</title></head><body><p>テスト</p></body></html>"
このスクリプトすら動作してないのでもはやお手上げ
0704デフォルトの名無しさん
2008/10/26(日) 22:10:02だねえ
>>700
小出しにするな
自分で話をまとめられないなら諦めれ
0705デフォルトの名無しさん
2008/10/26(日) 22:11:17> 自分で話をまとめられないなら諦めれ
に一票
そして離脱
0706デフォルトの名無しさん
2008/10/26(日) 22:17:59bノ対して
>Apacheでも動作確認済み
>1時間以上前に実験した。
って…明らかに話噛み合ってないな
0707デフォルトの名無しさん
2008/10/26(日) 22:19:34自分でApache立ち上げて試すときは、そのパスじゃまず起動しないぞ
#!ruby -Ks
にして試してみ。それでも駄目ならお手上げ
0708675
2008/10/26(日) 22:21:49まったくかみ合わない上に、どうやらこちらの問題ではなさそうだと
判明したのでたぶんこれ以上話し合っても結論が出る可能性は0(正確には)
ただ、根本的バグが見つかったのは皆さんのおかげです。
皆さん、ご協力どうもありがとうございました。
0709デフォルトの名無しさん
2008/10/26(日) 22:24:45もちろんローカルでやるときはそのためのパスにするわけですけどね。
0710デフォルトの名無しさん
2008/10/26(日) 22:31:12Rubyの絶対パスを指定して動いてるので、いえるのは
もはやここでは対処しようのない問題だということです。
とりあえずテストスクリプトすら動かないということは
他のところに持っていったのでこれ以上の深入りは
避けたいと思います。
0711デフォルトの名無しさん
2008/10/26(日) 22:32:04ステータスコード書いてないから動かなくて当然
あと\n\nだとサーバが非winのとき困るんじゃないか?
0712デフォルトの名無しさん
2008/10/26(日) 22:33:31斜め読みした感じでも
0713デフォルトの名無しさん
2008/10/26(日) 23:01:230715デフォルトの名無しさん
2008/10/26(日) 23:38:16>>656 >>668 >>669
ここら辺の話って本当なんですか?
Rubyのライブラリのレファレンスでクラスの説明とか見るとよく::が使われてるけど
あれは本当は間違いなんですか?
0716デフォルトの名無しさん
2008/10/26(日) 23:48:43具体的になんてライブラリのリファレンスのどの部分よ
0717デフォルトの名無しさん
2008/10/27(月) 00:17:15「vlookupのようなもの」ってのが、一体どんなのか分からんのだが
vpreとvpstではさんで比較してるってことは、ソート済みだと仮定してもいいの?
良いなら二分探索が使える
コードについて
・Range#eachがあるんだからeachを使う。Rubyでforは(めったに)使わない
・不要なbreakが見られる
・異常入力に対して99.9とかを返すのは、これでいいの?
0718デフォルトの名無しさん
2008/10/27(月) 01:26:18マニュアル内でのその記述はクラスの親子関係じゃなくて、大抵モジュールの定数のハズ。
0719デフォルトの名無しさん
2008/10/27(月) 01:33:20IO と File::Stat の直接の親は Object クラス
File は IO の子クラス
File::Stat は File の子クラスではない
File::Stat は File 内のクラス
Rubyのコードで書くとこんな関係。
class Object
end
class IO < Object
end
class File < IO
class Stat
end
end
0720デフォルトの名無しさん
2008/10/27(月) 01:34:230721デフォルトの名無しさん
2008/10/27(月) 01:47:29Web画面を共有出来るアプリが作りたいので
実験で5分で動くshootingstar使ったchatのテストアプリみたいなのを
動かしたんですけど自分でブラウザを更新しないと表示画面が更新されません。
バージョンは、shooting_star (3.2.7)とrailsは2.1.2でOSはUbuntuなんですけど。。
0722デフォルトの名無しさん
2008/10/27(月) 02:10:00【Ruby】Ruby on Rails Part6
http://pc11.2ch.net/test/read.cgi/php/1224838013/
0723デフォルトの名無しさん
2008/10/27(月) 05:38:49>>677-678の気になる点。
1.vの1列目の値が小さい順で並んでいないと動かない
以後は1列目は昇順ソート済みであるものとする
2.vs == v[0][0], vs < v[1][0] なら (vs>vpre) && (vs<=vpst) は常に偽
forの最終ループでvpstがvの範囲外となりエラーを起こす
vpst = v[v.size][0] => vpst = nil[0]
3.VLOOKUPと検索の仕様が違う
VLOOKUPは完全一致検索または検索値を超えない最大値の検索
こちらは四捨五入もどきというか、小さい側優先の再近接値検索?
(ちなみに四捨五入は中間値切り上げ丸め、つまり大きい側優先)
4.VLOOKUPと違って返値の列が2列目固定
それならMATCH関数にした方がまだ使いやすくない?
0724デフォルトの名無しさん
2008/10/27(月) 05:45:45def Vlookup(vs,v)
vx = vs.to_f
return -99.9 if vx < v[0][0]
return 99.9 if vx > v[-1][0]
v.each_cons(2) do |vpre, vpst|
if vx>vpre[0] && vx<=vpst[0] # *1
return vx-vpre[0] <= vpst[0]-vx ? vpre[1] : vpst[1] # *2
end
end
nil[0] # *3
end
*1 検索対象が昇順なら"vx>vpre[0] && " 部分は不要
というか、ここを削れば問題点2は解消する
*2 3項演算子といってexcelのif関数のようなもの (cond ? retA : retB)
*3 問題点2のエラーを発生させるためのもの。
*1の対策を実施すればこの行には到達しないので削除してよし
高速化とか一切していないので悪しからず。
>>717の言うとおり、二分検索するのがいいんでない。
適当にコード見て書いただけなんで、バグとか指摘の間違いとかあるやも。
0725デフォルトの名無しさん
2008/10/27(月) 05:51:25ほぼ参考書のままです。
とりあえずステータスコードをつけて動くか確かめてみます
0726デフォルトの名無しさん
2008/10/27(月) 05:59:360727デフォルトの名無しさん
2008/10/27(月) 06:22:47それは誤りだ
0728デフォルトの名無しさん
2008/10/27(月) 07:26:44一応めでたく完成して新しい追加機能2つ(日付表示・連投規制)を
付け加えました。たぶんこれで実運用上、書き込みがぶつからなければ
なんとかなると思います。タグ検索機能はなんか変ですが
おいおい何とかします。
0729デフォルトの名無しさん
2008/10/27(月) 08:20:38誤りではないだろう、HTTPの標準改行コードは\r\nだ
出力先がバイナリモードでさえあれば問題はない
0730デフォルトの名無しさん
2008/10/27(月) 21:40:37Java出身のruby初心者だったものでクラスライブラリはクラスの継承で繋がってると思い込んでました。
なるほど、rubyはモジュールや入れ子のクラスを多用するんですね。
勉強になりました。ありがとうございました。
0731デフォルトの名無しさん
2008/10/27(月) 22:15:180732デフォルトの名無しさん
2008/10/27(月) 22:25:44Htmlに組み込む言語という解釈でいいんですか?
0733デフォルトの名無しさん
2008/10/27(月) 22:41:28だいたい何にでも使う
0734デフォルトの名無しさん
2008/10/27(月) 23:02:23テキスト処理と聞いて何も思いつかない場合はまだスクリプト言語に用がないということなので
PerlやRubyのことはすっぱり忘れて別なことを楽しみましょう
0735デフォルトの名無しさん
2008/10/28(火) 00:49:43フリーだと現時点で一番効率よく稼げるのrailsです。
3人月の案件で700は固いから月給200万ですよ。
0736デフォルトの名無しさん
2008/10/28(火) 17:05:000737デフォルトの名無しさん
2008/10/28(火) 19:13:55>Htmlに組み込む言語
それはPHP
0738デフォルトの名無しさん
2008/10/28(火) 20:26:14HTMLがPHPになるんですか?
PHPがHTMLになるんですか?
組み込むってそういうことですよね?
0739デフォルトの名無しさん
2008/10/28(火) 20:54:46自動的に隠したり、分割を×ボタンで消したりする機能のパックになったコントロールとかあるんですか?
0740デフォルトの名無しさん
2008/10/28(火) 20:57:37Webクライアントの仕組みについて理解してから来なさい。
0741デフォルトの名無しさん
2008/10/28(火) 20:58:32えーと…
Rubyの仕事ではないので、GUIに何を使ってるか調べて、それに関するスレなりサイトなりに行くといい
0742デフォルトの名無しさん
2008/10/28(火) 21:18:58�Aスタート→すべてのプログラム→アクセサリ→メモ帳を起動
�B編集→貼り付け
�C編集→すべて選択
�D変換キーを押す
0743676
2008/10/28(火) 23:44:49説明不足でした。私がやりたいのは、以下のものです。
・1列目にソート済みの数値が入っている
・2列目には1列目の各行に対応する数値が入っている
・ある数値(入力値)が来た時に1列目の中から最も近い値を探し、それに対応する2列目の値を返す
・もし入力値が1列目の数値の上下限から外れていたら、それぞれ99.9か-99.9を返す
です。
>・Range#eachがあるんだからeachを使う。Rubyでforは(めったに)使わない
始めたばかりなもので。。。今後はeachを使います。(ちなみに速度に差はありますか?)
>・不要なbreakが見られる
入力値が上下限から外れていたら、関数の中のif文より後のfor文にいれたくなかったので使いました。これを見てからelseに書き換えました。
(一般的にbreakは多用しない方がよいのですか?)
>・異常入力に対して99.9とかを返すのは、これでいいの?
異常を示す文字列にしようかとしましたが、今、私がやりたいことにおいて99.9で十分なのでこうしました。
0744676
2008/10/28(火) 23:45:30>1.
書き忘れていましたが、ご指摘のとおりソート済みを仮定しています。
>2.
ちょうどそのエラーに出くわしていたところでした。。。
>3.
事前に一応調べてはみたのですが、ちゃんと理解できていなかったです。
また数学がよくわかっていないため、2の事態が発生しました。
>4.
MATCH関数を知らなかったので調べてみましたが、どのように適用すればよいかわかりませんでした。もう少し詳しく教えていただけないでしょうか。
>>724
知らない事がありすぎるのですが、みやすくなったので使ってみたいと思います。
速くなるのも教えていただけると助かります。。。
0745デフォルトの名無しさん
2008/10/29(水) 05:33:04どうしても気になるなら一億回くらい空ループ回して計ってみるといい。
まぁ、仮に10倍の速度差があったとしても、今は気にする必要ない。
プログラムの高速化はまず何よりもアルゴリズムが最優先。
小手先の最適化に手をつけるのはその後だね。
breakは単に使い方が悪い。
>>677の最初の2つは先にreturnするので、絶対に到達しない。
最後のはbreak後returnしかしていないので、returnで置き換え可能。
breakせずに抜けるパターンの場合、必ず範囲外アクセスで落ちる。
つまりすべての箇所で何の役にも立っていないというわけ。
異常入力にマジックナンバーを返すのもありだけど、発生頻度が低く
検査箇所が多いようなら例外(Exception)を発生させたほうがいいよ。
コードの見通しがまるで違ってくるから。
VLOOKUPは検査値に対応する行と指定した列が交差するセルの値を
返すのに対し、MATCHは検査値に対応する値の位置を返す。
VLOOKUPでは検索範囲が左端の列で、かつ対応する値の列の高さと
縦位置が完全に一致しなければいけない。
MATCHとINDEXまたはOFFSETとの組み合わせなら、検査列に対応
する値の列が左にあってもよいし、縦にずれていてもよいし、列でなく
行(対応する値が横に並ぶ)でもよい。
その気になれば対応する値をnマスおきに飛び飛びにだってできる。
それに比べると列指定不可のVLOOKUPなんてあまりに不便すぎる。
0746デフォルトの名無しさん
2008/10/29(水) 05:37:23直近値検索方法は>>677と同じ。
def match_liner(val, array) # >>677と同等
array[0...-1].each_index do |i|
if val <= array[i+1]
return val-array[i] <= array[i+1]-val ? i : i+1
end
end
array.size - 1
end
def match_recursive(val, array)
case array.size
when 0
nil
when 1
0
when 2
val-array[0] <= array[1]-val ? 0 : 1
else # ↑↓ 不等号に注意のこと
i = array.size / 2
val < array[i] ?
match_recursive(val,array[0..i]) : match_recursive(val,array[i..-1]) + i
end
end
0747デフォルトの名無しさん
2008/10/29(水) 05:40:31srand 1.0 * 2008/10/29 * 3*14 * 0xdeadbeaf # 乱数の種を設定
lookup = Array.new(100000){ rand }.sort!
data = Array.new(2000) { rand }
Benchmark.bm do |x|
x.report { data.each do |v| match_liner v, lookup end }
x.report { data.each do |v| match_recursive v, lookup end }
x.report { data.each do |v| match_loop v, lookup end }
end
user system total real
221.528000 0.040000 221.568000 (237.392000) # 線形検索
0.501000 0.000000 0.501000 ( 0.550000) # 二分検索(再帰)
0.140000 0.000000 0.140000 ( 0.141000) # 二分検索(ループ)
0748デフォルトの名無しさん
2008/10/29(水) 05:57:19もうちょっと高速化できる。(ベンチ中のmatch_loopがそれ)
どうやって展開するのかは自分で考えてみてほしい。
うまく書ければ20行かそこらで済むはず。
ついでにおまけ。 (>>747続き、 match_なんたらはmatchと定義しておく)
def vlookup(val, range, column) # 指定列は0を起点とする
val = val.to_f
if val < range.first[0] or val > range.last[0]
raise ArgumentError, "value out of range"
end
row = match val, range.map(&:first)
# range[row][column] と同じだが、範囲外では例外を起こす。
range[row].fetch column
end
pairs = lookup.zip(Array.new(lookup.size) { rand 100000 })
data.take(10).each do |v|
puts vlookup(v, pairs, 1)
end
0749デフォルトの名無しさん
2008/10/29(水) 07:00:090750デフォルトの名無しさん
2008/10/29(水) 09:42:12朝早くから実に殊勝な心がけだ。 大変すばらしい。
それだけ向上心があるなら、更なる技術向上のための課題として、全角半角の
変換フィルタでもチャレンジしていただきたい。 (もちろんワンライナーな)
0751デフォルトの名無しさん
2008/10/29(水) 10:08:41コードは全く読んでない
全角空白かどうかだけをブラウザ上でチェックした
それで充分
0752デフォルトの名無しさん
2008/10/29(水) 10:21:12俺もコード張るときはwebブラウザとかJaneのこと考えて
全角に変換してから張るんだけど何かまずいの?
0753デフォルトの名無しさん
2008/10/29(水) 10:21:57割とよくあることだと思うんだが、それをどういう切り口で転がすと「厨」になるんだろ。
それこそ「説得力が無い」よ。
0754デフォルトの名無しさん
2008/10/29(水) 10:26:48初心者がコピペで実行する初心者スレで全角空白みたいなのをコードに混ぜるのはあまりいい気はしない
arr.each do |e|
puts e
end
0756デフォルトの名無しさん
2008/10/29(水) 10:34:41本人?
よりよい方法がある、という話ならわかるけど、そんなことで厨呼ばわりした上で、
コードなんか見なくても十分とか言ってのけたわけ?
「あまりいい気はしない」とか、なんか急にトーン下がってるけど。
0757デフォルトの名無しさん
2008/10/29(水) 10:40:23いや全然
検証のために irb にコピペして全角空白でエラーになってピキッとなったことはないか?
せっかく書き込み前に置換する手間を割いてるのに置換先が全角空白だというのはバカっぽいだろ
なんでわざわざ実行不可能なコードにさせるんだよ
0758デフォルトの名無しさん
2008/10/29(水) 10:46:172chでは厨呼ばわりされても仕方ないかな、という気はちょっとだけする
0759デフォルトの名無しさん
2008/10/29(水) 11:01:39インデントを全角空白で、ってのは。
0760デフォルトの名無しさん
2008/10/29(水) 11:24:510761デフォルトの名無しさん
2008/10/29(水) 11:35:270762デフォルトの名無しさん
2008/10/29(水) 11:47:31出力されたCSVを見ると
AAA,BBB,CCC,DDD
と出力されており1データに改行が含まれている場合に正常に解析できなくなってます。
AAA,BBB,CCC,DD
D
本来ですと
"AAA","BBB","CCC","DD
D"
のようにデータが""で囲われてほしいのですが何か方法は無いでしょうか?
ソースは↓な感じですです。
def issues_to_csv(issues, project = nil)
ic = Iconv.new(l(:general_csv_encoding), 'UTF-8')
export = StringIO.new
CSV::Writer.generate(export, l(:general_csv_separator)) do |csv|
# csv header fields
headers = [ "#",
l(:my_data1),
l(:my_data2),
l(:my_data3),
]
csv << headers.collect {|c| begin; ic.iconv(c.to_s); rescue; c.to_s; end }
end
export.rewind
export
end
0763デフォルトの名無しさん
2008/10/29(水) 11:55:24投稿者1人が半角スペースなコードをエディタに書く
↓
書き込み時に全角スペースに置換する
↓
参照者複数人が各々のコピペ時に全角スペースを置換する
↓
エディタに半角スペースなコードができる
まあ、プロトコル的に無駄ではあるな
投稿者が半角スペースを に置換してくれさえすれば参照者はコピペだけでおkなのに
2chブラウザによっては半角スペースを投稿時に に変換してくれるものもあるけどな
navi2ch使いあたりはこのへん全く意識しないはず
というか、全角スペース混じってると範囲実行のM-|ができなくてイラつく(w
いちいち
1 [1,2,3].each do |e|
2 puts e
3 end
と行番号つきで書かれるくらいムカつく
0764デフォルトの名無しさん
2008/10/29(水) 12:05:00半角スペースの箇所はクリップボードには &#160 (&#は半角)で保存されるぞ
アプリケーション( 2ch 含む)によって文字参照の扱いなんてまちまちなんだから
文字参照に変換してから貼れって主張にはあまり魅力を感じないんだよな
0765デフォルトの名無しさん
2008/10/29(水) 12:09:49どうレンダリングするかとかはRFCに記述ないんだっけ?
0766デフォルトの名無しさん
2008/10/29(水) 13:14:44全角半角が問題になるのはコピペする人間だけなのだが、実際それをする人間がどれ
ほどいるのか。
他の板ならともかく、いかに初心者スレとはいえここはム板なんだから、一括置換な
んぞ5秒でこなす
くらいの能力は期待できないものなのか。
学校のセンセじゃあるまいし、その程度は勘弁していただきたい。
まぁ、全角を使っているのは書き込みログが読みにくくなるから、というしょーもな
い理由なので、
こちらも置換すれば済む話ではあるし、専ブラで対処できるものなら導入を検討する
よ。
と、ここで新着見たら、そんな簡単な話しでもないのか。
確かに>>764は以前くらったことがあるな。
どうしたもんかね。
0767デフォルトの名無しさん
2008/10/29(水) 13:17:440768デフォルトの名無しさん
2008/10/29(水) 16:32:30結局全角スペースのほうが害がすくないと判断してる。
>>767
そうなんだよね。しかも が半角スペースにならない環境だと、
置換が全角スペースより面倒なんだよな。
まあ2chの仕様がクソということで。
0769デフォルトの名無しさん
2008/10/29(水) 16:33:42CSVやめて、FasterCSVを使ってみたらどうでしょうか。
「ruby fastercsv」でぐぐってみてください。
0770デフォルトの名無しさん
2008/10/29(水) 17:08:50実は先ほどソースはredmineのものなんです
ファイル名app\helpers\issues_helper.rb
なので簡単にFasterCSVに置き換えて大丈夫なものなのか判断しにくいんです。
変更は簡単ですかね?
0771デフォルトの名無しさん
2008/10/29(水) 22:43:51CSV::Writer ならエスケープが必要なフィールドだけエスケープされるので、
以下のようになるはずだけど。
AAA,BBB,CCC,"DD
D"
DD\nDだけじゃなくてAAAとかもクォートして欲しいってこと?
0772デフォルトの名無しさん
2008/10/30(木) 13:30:47先頭の空白に関しては、まだRubyは良いほうでしょ
Pythonなんて先頭の空白が纏められたら話にならんかと
0773デフォルトの名無しさん
2008/10/30(木) 16:17:110774デフォルトの名無しさん
2008/10/30(木) 16:22:19while if n = a.shift
n
else
false
end
p n
end
# => 1
# => 2
# => 3
0775デフォルトの名無しさん
2008/10/30(木) 18:36:04プログラムの構文として処理することは可能でしょうか?
val = 構文評価(msg)
のようなイメージで、
任意の数式をRubyで処理することを期待してるのですが
0776デフォルトの名無しさん
2008/10/30(木) 18:53:18手っ取り早いのはeval。
でも数式に限らずなんでも実行できてしまうから
四則演算だけ処理したいならraccとそのサンプルのcalc.yあたりとか。
0778デフォルトの名無しさん
2008/10/30(木) 22:51:35> 四則演算だけ処理したいならraccとそのサンプルのcalc.yあたりとか。
正規表現で入力を検査してokならevalに渡す方が楽でない?
0779デフォルトの名無しさん
2008/10/30(木) 22:58:300780デフォルトの名無しさん
2008/10/30(木) 23:07:18何によるかというならどれくらい受理する式の文法を限定できるかだろう。
君、バカでしょ。
0781デフォルトの名無しさん
2008/10/30(木) 23:18:40自分で電卓代わりに使いたいだけなら入力検査は不要
こんなの完璧にやるか全くやらないかの2択なんだから信用度は重要
2//3 で エラー吐いて落ちるのは困るだろうし
1 2 + 3 で エラー吐いて落ちるのは困るだろうし
1/3*3 で 0 が返るのも困るだろうし
(1..2) で Range オブジェクトが返るのも困るだろう
0782デフォルトの名無しさん
2008/10/31(金) 00:02:44君はバカさ加減の露出癖でもあるのかね。
> こんなの完璧にやるか全くやらないかの2択なんだから信用度は重要
不測の動作をさせないことが保証できればいいんだよ。
エラーはevalのすぐ外で捕捉すりゃいい話。
> (1..2) で Range オブジェクトが返るのも困るだろう
そうならないように検査するんだろうが。
0783デフォルトの名無しさん
2008/10/31(金) 00:03:550784デフォルトの名無しさん
2008/10/31(金) 00:06:220785676
2008/10/31(金) 00:28:23returnしたら、その後に行かないという基本的な事を知りませんでした。。。
説明していただいた内容が理解できていない部分があるので質問させて下さい。
「MATCHとINDEXまたはOFFSETとの組み合わせなら」とおっしゃっているのは、
それぞれ以下のもののことでしょうか?
http://www.ruby-lang.org/ja/man/html/Regexp.html#match
http://www.ruby-lang.org/ja/man/html/Array.html#index
http://www.ruby-lang.org/ja/man/html/MatchData.html#offset
それとも以下のようなexcelの関数のことでしょうか?
http://support.microsoft.com/kb/181212/ja
これすらも解からない状況です。申し訳ありませんがよろしくお願いいたします。
>>746-748
ループ版の早さは今の私には驚異的です!
1個のデータを処理するのにexcelで処理していたときは約5分
自分で作ったvlookupで約2分だったので、1秒かからなくなるんですね。
ただ、勉強不足でわからないことだらけです。
ループ版を自分で作るには時間がかかるので少し待って下さい。
完成したら添削をお願いします。
0786デフォルトの名無しさん
2008/10/31(金) 02:28:31駄目元で書き込んだ。
賛同してくれる人はこのレスに同意のアンカーをつけてくれ。
0787デフォルトの名無しさん
2008/10/31(金) 04:54:23コードの端々で妙な書き方してるから、他言語でヘンな癖でもつけて
きたのかと思ってたら、もしかしてプログラミング初心者だった?
Excel VBA使いを想定してたんだが、Excelもサッパリのようだし…
INDEXやOFFSET等、全部大文字で書いたのはExcelの関数。
これらについてはスレ違いなので他でよろしく。
まぁ、とりあえずは基本的な文法・制御構造をまず覚えてくれ。
最低限、分岐・ループ・メソッド呼び出しとそこからの脱出あたり。
勧めといてなんだけど例外は後回しでいいかな。
一度苦労した後の方が有り難みもよく分かるだろうし。
次に組み込みクラスについて調べてみる。
上で使ってるのは、数値(Numeric), 文字列(String), 範囲(Range)
あたりを見れば分かる程度の簡単な使い方してる。
重要なのは配列(Array)とEnumerableの2つ。
制御構造と並んで、こいつらがアルゴリズムを実装する要だ。
(今回は使わなかったが、Hashもいずれ知っておくべき)
クラスライブラリを全部覚えるのは大変だろうけど、どんなことが
できるかくらいはざっと目を通しておくといい。
そうしたらコードを読んでみる。
どれもかなり短いから、読み下すのはそう難しくないとおもう。
行数短縮のために三項演算子を濫用している点は申し訳ない。
0788デフォルトの名無しさん
2008/10/31(金) 04:58:30短い配列でどのような動きになるか、紙に書いてみるといい。
再帰をループに変更するにはアルゴリズムを十分に理解して
いなければならないが、是非がんばって挑戦してほしい。
ケチな高速化など後回しと書いた理由も実感して貰えたと思うが、
もし興味を持ったなら、アルゴリズムも勉強してみてはどうか。
ほんのちょっとの仕組みの違いで速度が千倍とかざらにあるよ。
計算量の考え方だけでも知っておくことをお勧めする。
0789デフォルトの名無しさん
2008/10/31(金) 07:54:59戻り値と、プロシージャを抜ける構文が別になってるから。
で、そのまま直訳してreturnとbreakに分けた、と。そんな感じだろう。
0790デフォルトの名無しさん
2008/10/31(金) 10:38:32>>787-788、おつ。こんごもがんがれ。
0791デフォルトの名無しさん
2008/10/31(金) 17:14:09今は
A.ancestors.include?(B)
とやってるんですけど、かっこわるいですよね。
0792デフォルトの名無しさん
2008/10/31(金) 17:21:410793デフォルトの名無しさん
2008/10/31(金) 17:45:25class A < B; end
class C; end
p A < B
p A > B
p A < C
0794デフォルトの名無しさん
2008/10/31(金) 17:51:24>> File < IO
=> true
>> Dir < IO
=> nil
なにこれーーー
>> Fixnum < Integer
=> true
>> Array < Enumerable
=> true
module もOKだ
ちょうさんくすです
0795デフォルトの名無しさん
2008/10/31(金) 18:44:550796デフォルトの名無しさん
2008/10/31(金) 21:10:08伊達に継承の記号が "<" なわけじゃない。
……かどうかは知らないが。
0797デフォルトの名無しさん
2008/11/01(土) 06:26:050798デフォルトの名無しさん
2008/11/01(土) 06:26:450799デフォルトの名無しさん
2008/11/01(土) 06:28:45∧_∧
( ´・ω・) みなさん、VIPからさし入れのお茶が入りましたよ・・・・。
( つ旦O
と_)_) 旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦旦
0800デフォルトの名無しさん
2008/11/01(土) 06:44:020801728
2008/11/01(土) 08:48:50一応私の夢見た掲示板をついに作り終えました。
とはいえまだ課題がいくつか残ってます。
それを今後つぶしていきます。
0802デフォルトの名無しさん
2008/11/01(土) 11:00:45usr/lib/ruby/1.8/net/http.rb:451:in `initialize': wrong number of arguments (2 for 1) (ArgumentError)
のエラーが出てしまいます。
比較のためにAとBを作ったのですが、29行目ではエラーが出ません。
Net::HTTPを承継したクラスを作って,コンストラクタの部分を
オーバーライドしようとしています。
エラーの原因は何でしょうか
1 #!/usr/bin/ruby
4 require 'net/http'
5 require 'uri'
7 class A
8 def initialize(arg)
9 puts "A initialized", arg
10 end
11 end
13 class B < A
14 def initialize
15 puts "B initialized"
16 end
17 end
19 class C < Net::HTTP
20 Net::HTTP.version_1_2
21 def initialize(url)
22 uri = URI.parse(url)
23 puts "C initialized"
24 super(uri.host, uri.port)
25 end
26 end
28 url = 'http://www.yahoo.co.jp/'
29 p b = B.new
30 p c = C.new(url)
0803デフォルトの名無しさん
2008/11/01(土) 12:21:28あとNet::HTTPはわりと残念な設計で、サブクラスでinitializeをオーバーライドしても呼ばれない。
委譲したほうがいいかも
0804デフォルトの名無しさん
2008/11/01(土) 19:52:20これで我慢すれ
class C < Net::HTTP
def initialize(*args)
args[0].kind_of?(URI) ? super(args[0].host,args[0].port) : super
end
end
0805デフォルトの名無しさん
2008/11/02(日) 08:33:410806デフォルトの名無しさん
2008/11/02(日) 12:26:17require 'net/http'
require 'uri'
class C < Net::HTTP
Net::HTTP.version_1_2
def initialize(url, dummy=nil)
uri = URI.parse(url)
puts "C initialized"
super(uri.host, uri.port)
end
end
url = 'http://www.yahoo.co.jp/'
p c = C.new(url)
Net::HTTP を眺めて同じ挙動を再現しようと思ったけど、できないYO!
class A;end
class << A; alias newobj new; end
class A
def A.new(foo, bar=nil)
a = A.P(foo, bar).newobj(foo, bar)
end
def initialize(foo, bar=nil)
puts "A init."; @foo = foo; @bar = bar
end
def A.P(foo, bar=nil);self;end
end
class B < A
def initialize(foo)#, bar=nil)
puts "B init."; super(1, 2)
end
end
p b = B.new(3)
0807デフォルトの名無しさん
2008/11/02(日) 17:50:27× a = A.P(foo, bar).newobj(foo, bar) # in A.new
○ a = self.P(foo, bar).newobj(foo, bar)
0808806
2008/11/03(月) 00:21:05なんで、A付けちゃったんだろ?
これを色々いじって、マニュアル見ながらよく考えてみる。
も一回ありがとう!>>807
0809デフォルトの名無しさん
2008/11/03(月) 17:14:385分で挫折しました(笑)
File.open("D:\\Data") {|f|
puts f.to_str()
}
とりあえずこうやってファイル名を出力しようとしたのですが、
コマンドプロンプトではすべてUNICODEのファイル名で表示されてしまい
わけわかめです。
$SCODE = SJISとかやってもダメでした
0810デフォルトの名無しさん
2008/11/03(月) 17:28:30`dir d:\\data /b`.each { |f| f.chop!
puts f
}
0811デフォルトの名無しさん
2008/11/03(月) 17:39:070812デフォルトの名無しさん
2008/11/03(月) 17:42:010813デフォルトの名無しさん
2008/11/03(月) 17:58:21そういうときは、致命的な動作になるまでは Dirl.glob を使う
ディレクトリ区切り文字は \ ではなく / なので注意
irb> Dir.glob('c:/*')
["c:/AUTOEXEC.BAT", "c:/boot.ini", "c:/bootfont.bin", "c:/CONFIG.SYS", "c:/Documents and Settings",
"c:/Program Files", "c:/RECYCLER", "c:/ruby", "c:/System Volume Information", "c:/WINNT"]
irb> Dir.glob('c:/*/')
["c:/Documents and Settings/", "c:/Program Files/", "c:/RECYCLER/", "c:/ruby/",
"c:/System Volume Information/", "c:/WINNT/"]
irb> Dir.glob('*.txt')
["001.txt", "002.txt", "003.txt"]
irb> Dir.glob('*.txt').each{|e| FileUtils.mv(e, "#{File.basename(e,'.*')}.bak") }
irb> Dir.glob('*')
["001.bak", "002.bak", "003.bak"]
0814デフォルトの名無しさん
2008/11/03(月) 18:15:13今のrubyは\も扱ってくれるよ
と思ってたが、Dir.globは\区切りに対応してないのね……
0815デフォルトの名無しさん
2008/11/03(月) 20:31:28Dir.entries(ディレクトリのパス).reject{|d| File.directory? }
とか。
0816デフォルトの名無しさん
2008/11/04(火) 00:14:51拡張子で判断するのではなくファイルの中身で、Excelファイルかどうかの判断が
したいんです。
よろしくおねがいします。
0817デフォルトの名無しさん
2008/11/04(火) 01:34:000818デフォルトの名無しさん
2008/11/04(火) 03:33:29がんばってマジックナンバー嫁
0819デフォルトの名無しさん
2008/11/04(火) 08:17:09unix系ならFileMagicだけどwindowsはよう知らん
0820デフォルトの名無しさん
2008/11/04(火) 19:22:11Windowsですが
再帰でディレクトリリストが欲しい時もcmdのdirですましちゃう
サブディレクトリ一覧
dir /s /ad /b \ほげほげ\ | ruby -ne "puts $_”
ほげほげ下のサブディレクトリ内の.rbファイル一覧
dir /s /a-d /b \ほげほげ\*.rb | ruby -ne "puts $_"
とか
rubyだけでやるならglobで/**/使って
Dir.glob('/ほげほげ/**/*/'){|e| puts e}
とか
Dir.glob('/ほげほげ/**/*.rb'){|e| puts e}
と、いろいろ試してたら列挙される数が違ったんで、あれっ?と思ったら
globの方は標準ではドットファイルが除外されるのを忘れてた
使用してるのがWindowsオンリーなので、普段ドットファイルなんて意識しないし
Dir.glob('/ほげほげ/**/*.rb',File::FNM_DOTMATCH){|e| puts e}
0821デフォルトの名無しさん
2008/11/05(水) 21:56:06エクセル持って無いけど
たぶんファイルの先頭見たら判るんじゃね?とググって見ると
エクセルもワードも BIFFってフォーマット(OLE?)でどっちもファイルの先頭は同じだったorz
さらにぶらぶらと調べてたら、parseexcelっていうライブラリを見つけたので
適当にインターネットからxlsファイルを落としてきて
require 'parseexcel'
workbook = Spreadsheet::ParseExcel.parse('エクセルのサンプルファイル.xls')
で読み込めたけど、えらく遅かったので parseexcel がパース直前にやってることを直に書いてみた
require 'parseexcel'
begin
ole= OLE::Storage.new('エクセルのサンプルファイル.xls')
biff = ole.search_pps([OLE.asc2ucs('Book'),OLE.asc2ucs('Workbook')],true)
if biff.first
puts "エクセルファイル"
else
raise 'NotExcelfile'
end
rescue
puts "エクセルファイルじゃない"
end
エクセルファイルを漏れなく判定できるのかはわかりませんが…
0822デフォルトの名無しさん
2008/11/06(木) 11:05:21としたあとで、'foobar.rb' の絶対パスを調べる方法ってありますか。
0823デフォルトの名無しさん
2008/11/06(木) 15:13:550824デフォルトの名無しさん
2008/11/06(木) 15:19:42それは読み込んだファイルであることを保証しない
0825デフォルトの名無しさん
2008/11/06(木) 15:27:19同名のファイルをファイルパスから探すことはできるけれど
>>823で問題になる場合というのはなくはないとは思うが非常にレアなような気もする
0826デフォルトの名無しさん
2008/11/06(木) 15:32:16>>823の要件に合うとは思えないけど
0827デフォルトの名無しさん
2008/11/06(木) 15:35:43require を拡張したほうが妥当と思う
が、どうすればいいのやら
gem の require はどうやってるんだっけ
0828デフォルトの名無しさん
2008/11/06(木) 15:43:39requireしたあとからくっつければ医院で内科医?
0829デフォルトの名無しさん
2008/11/06(木) 16:20:110830デフォルトの名無しさん
2008/11/06(木) 17:55:23どうもありがとうございます。
ないということなので、以下の方法で済ませることにしました。
lib = "foobar.rb"
dir = $:.find{|path| File.exist?(File.join(path, lib)) }
filepath = dir ? File.join(dir, lib) : nil
ありがとうございました。
0831デフォルトの名無しさん
2008/11/06(木) 21:45:520832デフォルトの名無しさん
2008/11/07(金) 00:21:42p array
した時の["hoge", "fuga", "boo"]みたいな書式って
変更できたりしない?
あと一歩でcsvなので便利に使えそうなんだが。
pのことをググって調べるのは非常にホネが折れる…
0833デフォルトの名無しさん
2008/11/07(金) 00:28:030834デフォルトの名無しさん
2008/11/07(金) 01:07:55http://www.ruby-lang.org/ja/man/html/_C1C8A4DFB9FEA4DFB4D8BFF4.html#p
なんでもぐぐって調べようとするから骨が折れてるんだろうw
0835デフォルトの名無しさん
2008/11/07(金) 02:12:54joinの方が楽
0836デフォルトの名無しさん
2008/11/07(金) 03:23:57>>835
その名も「csv」というライブラリが標準で付いてることを忘れないでやってくれ。
0837デフォルトの名無しさん
2008/11/07(金) 09:49:56一文字目と最後の文字消せばいいだけじゃね?
0838デフォルトの名無しさん
2008/11/07(金) 12:18:53賢い人なら知りたいことが見付かりそうな文書はどこにあるのかをまずは考える。
0839デフォルトの名無しさん
2008/11/07(金) 20:15:46i=0
begin
File.open('lockfile',File::WRONLY|File::CREAT|File::EXCL,0666) do |lfile|
File.open('hoge','r') do |file|
# hogeを使ったいろいろな処理
end
end
File.unlink('lockfile')
rescue SystemCallError
if(i>10) then raise
i+=1
if(File.stat('lockfile').mtime<Time.new+10) then
File.unlink('lockfile') #残骸のロックファイル削除
else
sleep(0.1)
end
retry
end
どうもi386-mswin32だとEXCLオープンしても例外を投げなくてうまくいかない
ようです。他のプラットフォームだとどうなんでしょう?
0840デフォルトの名無しさん
2008/11/07(金) 21:16:58File.open("foobar.txt", "wb") do |f|
f.flock(File::LOCK_EX) # 排他ロック
f.unlock();
end
0841デフォルトの名無しさん
2008/11/07(金) 21:22:21組み込みで妥当に動作してるロック機構を再発明しようとするな、というのがアドバイスだったはず
0842デフォルトの名無しさん
2008/11/07(金) 21:24:54まずそのサーバーでflockが使えないから無理
>>841
組み込みで現に存在してるのが使えないから問題。
確認したいこと
1.とりあえず方法があっているか。
2.Windowsだとまともに動かないようだが他のプラットフォームだとどうか。
0843デフォルトの名無しさん
2008/11/07(金) 21:35:381.8.6-FreeBSDだけど File::CREAT|File::EXCL で Errno::EEXIST が出る
ただし>>839のソースをそのまま実行すると例外が rescue でとらえられて
例外処理でロックファイル削除されてからリトライするから、例外が発生してないように見える
あとrescueの下の二行間違ってるよ
0844デフォルトの名無しさん
2008/11/07(金) 21:40:52$ ./ruby.exe -v -e 'open("hoge", File::WRONLY|File::CREAT|File::EXCL,0666)'
ruby 1.8.7 (2008-11-04 revision 20103) [i386-mswin32]
-e:1:in `initialize': File exists - hoge (Errno::EEXIST)
投げるが。
> if(File.stat('lockfile').mtime<Time.new+10) then
未来の時刻と比較してるようだがこれはいいのか?
0845デフォルトの名無しさん
2008/11/07(金) 21:43:49確かにおかしいところがあるかもしれないです。
rescue
if(i>10) then
raise
end
i=i+1
if(File.stat('lockfile').mtime<Time.new+10) then
File.unlink('lockfile') #残骸のロックファイル削除
else
sleep(0.1)
end
retry
end
一応rescue節の書き換えはしてみました。これで大丈夫でしょうか。
あと、例外処理でロックファイルが削除されるのはたぶん正しいです。
というのもそのファイルの最終更新時間が10秒以上前なら削除するように
できてますから。
0846デフォルトの名無しさん
2008/11/07(金) 21:45:56あ、やばい。そこがおかしい。
どう考えてもおかしい。
if(File.stat('lockfile').mtime+10<Time.new) then
こう直すべきだ
0847デフォルトの名無しさん
2008/11/07(金) 21:55:09どこでおかしかったか分からないが治った。thx
0848デフォルトの名無しさん
2008/11/07(金) 21:57:23> 組み込みで現に存在してるのが使えないから問題
0849デフォルトの名無しさん
2008/11/07(金) 22:10:05> 1.とりあえず方法があっているか。
あってない。突っ込み所満載。
・SystemCallError なんて上がらないんだが。
rescue => e
puts e.class
とでもして、何が上がってるのか確認しろ。
・if文が閉じてねーぞ。
> if(i>10) then raise
1行で書きたきゃ「if(i>10) then raise; end」か「raise if (i>10)」だ。
つか、endの対応が合ってなくてさくっとsyntax errorなんだが……。
・mtimeが「現在+10秒」より過去、って何の冗談だ。
・あるプロセスがunlinkした直後に別のプロセスがstatしたら死ぬんだが。
・あるプロセスがstatしてunlinkするまでの間に別のプロセスがstatしてunlinkしてopenしたら不味いんだが。
> 2.Windowsだとまともに動かないようだが他のプラットフォームだとどうか。
とりあえず適当に修正したら、2プロセス程度の簡単なテストならちゃんと動いた。(@mswin32)
0850デフォルトの名無しさん
2008/11/07(金) 22:19:351.Errno::XXX系統のクラスは全部SystemCallErrorのサブクラスなので
きちんと受け止められる
2.if文問題は修正済み
3.時間問題も修正済み
4.いまだにレースコンディションが解消してない件は最悪またSystemCallErrorで
受け止めてやればいい
修正したソース(rescue節のみ記載)
rescue
if(i>10) then
raise
end
i=i+1
begin
if(File.stat('lockfile').mtime+10<Time.new) then
File.unlink('lockfile') #残骸のロックファイル削除
else
sleep(0.1)
end
rescue SystemCallError
#rescueするけど何もしない
end
retry
end
0851デフォルトの名無しさん
2008/11/07(金) 22:24:21これ以上この方法にこだわる限り改善の余地はなさそう。
0852デフォルトの名無しさん
2008/11/07(金) 22:42:44>まずそのサーバーでflockが使えないから無理
File#flock() が使えない環境ってどんなの?
どこでも使えるもんだと思ってた。
0853デフォルトの名無しさん
2008/11/07(金) 23:03:27更新時刻から10秒待つのに、リトライは0.1秒×10回でいいのか、というのはおいといて、ゴミ掃除を別々のプロセスで確実にやるのは無理だと俺は判断してる。
ゴミ掃除専用のプロセスを1個だけ別に動かしとけ。メインの処理に10秒以上かかる可能性がないと言えるなら、それで大丈夫だろ。
0854デフォルトの名無しさん
2008/11/07(金) 23:31:32druby使ってmutexを共有するという強引な方法を思いついた
0855デフォルトの名無しさん
2008/11/08(土) 00:22:16下がnfsだったりするとアレだが。
0856デフォルトの名無しさん
2008/11/08(土) 05:41:35レンタルサーバーでCGIを動かすために使うというのが大前提なので。
プロセスの常駐とかまず無理。
10秒待つのではなく確実を期すために10秒以上前のロックファイルを
削除するといっている。待つ時間は1秒。
0857デフォルトの名無しさん
2008/11/08(土) 05:43:07一部のファイルシステムやレンタルサーバ上では使えなかったりしてあまり信用できない
かといって自分でロック機構を実装すれば、レースコンディションの危険がある
なんかこの辺をさくっと解決してくれるpure rubyなライブラリないかな
0858デフォルトの名無しさん
2008/11/08(土) 11:34:57>flockメソッド(関数)は、言語によって同じ名前でも実装が違ったり
Rubyの話してるんだから他の言語は関係ないだろ。
>一部のファイルシステムやレンタルサーバ上では使えなかったりしてあまり信用できない
だからどんなファイルシステムやレンタルサーバ上で使えないの?
具体名をだしてくれ。
どういう場合にflockが使えないのかを、ドキュメントに書いてもらおうぜ。
0859デフォルトの名無しさん
2008/11/08(土) 12:23:44NFS上でのロックは不可能。
これはflockシステムコールの実装から来る制約。
fcntlを使えばNFSでロックすることは可能になるがIO.ioctl関数という
可搬性が低いメソッドを用いなければならず(まずWindowsなら実装されていないと
門前払い)かなり面倒。おまけにたいていNFS上でのロックはセキュリティホールに
なるので使えないのが普通。
0860デフォルトの名無しさん
2008/11/08(土) 12:49:31レンタルサーバだと、flockが明示的に禁止されているサーバがある。パンドラとか
ただ、現在flockを使えないサーバがどのくらいあるかは分からない
無視できるほど少数かも
0861デフォルトの名無しさん
2008/11/08(土) 22:07:38>Sector:</td><td class="yfnc_tabledata1"><a href="http://biz.yahoo.com/p/7conameu.html">Services<
こんな文字列があって、前後にも改行以外の文字が色々とくっついているのですが、
Sector:の後のServicesをマッチさせて文字としてとってこようとすると、どう書けば良いでしょうか?
0862デフォルトの名無しさん
2008/11/08(土) 22:17:18なぜなら、ほんの少し変えようと思っただけで別物になるから
コピペでやろうとすると異常に遠回りになる
正規表現自体は他の言語の正規表現とけっこう互換性があるから適当なサイトで勉強すれ
0863デフォルトの名無しさん
2008/11/09(日) 00:42:26ありがとうございます。
マッチしたい文字列が9種類しかないのが分かったので、こうやりました。
if line =~ /.*Sector:<.*(Basic Materials|Conglomerates|Consumer Goods|Financial|Healthcare|Industrial Goods|Services|Technology|Utilities)/
p $1
end
0864デフォルトの名無しさん
2008/11/09(日) 11:46:37一応自力で見つけたサイト
http://www.gesource.jp/programming/ruby/gui/wxruby/index.html
http://wx.k5-n.com/wxruby/
最小限のことは自分でやってます。require周りは自分でなんとかしてます。
0865デフォルトの名無しさん
2008/11/09(日) 11:59:401.とりあえずwxWindowをインストールした
2.wxRubyをgems経由でインストールした
3.簡単なテストアプリケーションが動くようになった
以上のことがすでに完了してます。
0866デフォルトの名無しさん
2008/11/09(日) 12:00:00ごとに正規表現オブジェクトが作成されるのを防ぎたいのですが、
単に/abcde/ の代わりにRegexp.new("abcde")とすればOKですか?
それともグローバル変数みたいなものに格納しないとキャッシュと
しての効果は出ない?
0867デフォルトの名無しさん
2008/11/09(日) 12:12:200868デフォルトの名無しさん
2008/11/09(日) 12:18:17irb> class RegData
def reg1; /abc/; end
def reg2; /ABC/; end
def reg3; /123/; end
end
irb> RegData.new.reg1
/abc/
irb> RegData.new.reg1.object_id
537973880
irb> RegData.new.reg1.object_id
537973880
irb> RegData.new.reg1.object_id
537973880
ということで、静的な正規表現は、クラス定義が読み込まれた時点で使いまわしモードに入る
@re_scan = /xxxx.+?(yyy)zzz+/i
のようにクラス変数に正規表現を保管するというようなよくあるテクニックは、
正規表現が静的である場合に限り、コスト上は実は無意味、あるいは参照コストのぶん損だったりする
>>867の言うように、式展開を含むような「毎回違う可能性のある」正規表現はこの限りではない
0869デフォルトの名無しさん
2008/11/09(日) 12:20:32/abc/ なら毎回生成されることはない。
/ab#{var}cd/ や Regexp.new("abcd") なら毎回作成される。
あとは
CACHE_REGEXP = {}
def cache_regexp(str)
CACHE_REGEXP[str] ||= Regexp.new(str)
end
とか。
0870デフォルトの名無しさん
2008/11/09(日) 12:42:43公式のチュートリアル。
あとWxWidgetsのサイト全般と公式のAPIドキュメント。
wxに限ったことではなく、既存ライブラリのRubyバインディングは
元ネタのサイト漁るのが一番いいと思う。
0871デフォルトの名無しさん
2008/11/09(日) 12:57:40読んでみたんですが、すでに???状態です。
英語ワカンネじゃなくてそもそも読む気力がないのが大問題だったりするわけですがorz
今度気力が回復したらやってみます
0872デフォルトの名無しさん
2008/11/09(日) 13:09:11それでもダメならWxWidgets関連のサイト参考にって>>870の2-4行目で
0873デフォルトの名無しさん
2008/11/09(日) 13:15:24ええ。一応その段階はある程度OKです。
あとはゆっくり亀のように進んでいけばいいんです。
解決しました。ありがとうございます。
0874デフォルトの名無しさん
2008/11/09(日) 13:23:24harukaze wxPython で検索
あと、解説サイトじゃないけど
wxRuby開発者が出してるwxsugarオススメ
0875デフォルトの名無しさん
2008/11/09(日) 13:49:02たぶん言ってるサイトはこれだと思うんだけど、
http://www.harukaze.net/~haruka/wxpython/index.html
なんかドメイン飛んでるよ
Pythonのが参考になるっつーことは理解できたけど。
0876866
2008/11/09(日) 15:29:30ありがとう、よく分かりました。
0877デフォルトの名無しさん
2008/11/10(月) 23:22:19>NFS上でのロックは不可能。
ほう、そうなのか。知らなかった。さんくす。
>fcntlを使えばNFSでロックすることは可能になるがIO.ioctl関数という
>可搬性が低いメソッドを用いなければならず(まずWindowsなら実装されていないと
>門前払い)かなり面倒。
Windows上でNFSを使うことはないだろうから、ioctlはUNIX限定でいいんじゃね?
>おまけにたいていNFS上でのロックはセキュリティホールに
>なるので使えないのが普通。
これよくわかんないんだけど、理由は?参考になるURLプリーズ。
>>860
>レンタルサーバだと、flockが明示的に禁止されているサーバがある。パンドラとか
これも理由がわからん。レンタルサーバでNFS使ってるわけじゃないだろうし。なんで?
0878デフォルトの名無しさん
2008/11/10(月) 23:31:11ttps://menu.pandora.nu/public/flock.php
パンドラ側の説明みつけた
0879デフォルトの名無しさん
2008/11/11(火) 00:06:10使い方は、RubyScript2Exe.rbとexeにしたいファイルを同じフォルダに入れて、
コマンドプロンプトで、「ruby [RubyScript2Exeのパス] [exeにしたいファイル]」
で合っていますか?
0880デフォルトの名無しさん
2008/11/11(火) 07:32:00サンクス。あきらかにNFS使ってるね。
そんなサーバがあることに驚いたけど。
0881デフォルトの名無しさん
2008/11/11(火) 07:50:04「まずIO.ioctlでロックを試みる、エラーが出ればrescueしてflockする」ということか!
・・・面倒だ
やっぱり、完全に可搬性のあるファイルシステムロック用のライブラリが欲しいな
0882デフォルトの名無しさん
2008/11/11(火) 08:19:040883デフォルトの名無しさん
2008/11/11(火) 08:36:330884デフォルトの名無しさん
2008/11/11(火) 08:49:340885デフォルトの名無しさん
2008/11/11(火) 09:14:19実はみんな、あまり必要としていないのか?
MLでこんな古い話は見つけたが、ソースコードはもう公開されてないっぽい
(時間ないから詳しく探してないけど)
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/11326
0886デフォルトの名無しさん
2008/11/11(火) 09:50:16とはいうものの「環境依存だから諦めろ」ってのも古い考えで、こういう操作こそ処理系で環境差異を吸収しろ、っていう意見も、確かに一つの見識だと思う。
というわけで、完全な可搬性を持ったファイルロックの実装をコントリビュートしてくれ。
0887デフォルトの名無しさん
2008/11/11(火) 09:54:31良きに計らってくれるとよさそうな感じだね
0888デフォルトの名無しさん
2008/11/11(火) 15:07:35コンパイル時に判定するのは無意味じゃないか?
0889デフォルトの名無しさん
2008/11/11(火) 17:32:32SQLが使えるなら簡単な表を作って、そこに1つだけレコードを追加して、
あとはSELECT FOR UPDATEかSELECT LOCK IN SHARE MODEで終了。
幸いSQL用のライブラリは普通に配布されてる。
SQLが使えない場合はやり方を工夫するしかないわけなんだが。
とりあえずパンドラさんのPerlライブラリを解析するしかなさそうだけど。
>>881
むしろ順番は逆のほうがいい。ioctl関数はどちらかといえば汎用関数。
ioctlが使えないのはほぼ例外なくWindowsで作られてるサーバー。
0890デフォルトの名無しさん
2008/11/11(火) 17:34:51これの可搬性はどうなんだろう。
ttp://www.google.com/codesearch?hl=ja&q=lang:ruby+lock.rb+RuBBS+show:GN3bH3qHRek:P3zWR8HHuh8:MtDFtjKjkEI&sa=N&cd=2&ct=rc&cs_p=http://www.spc.gr.jp/software/archive/rubbs-1.0.7.tar.gz&cs_f=rubbs-1.0.7/lock.rb
0891デフォルトの名無しさん
2008/11/11(火) 17:53:13この関数の流れは…
1.ロックファイルを固有ファイルに名前を変えようとする。成功したら3へ
2.失敗したらタイムアウトより古いロックファイルがあればロックを取得しようとする。
成功したら3へ
3.1秒待って1へ戻る。ただしtry回試して失敗したら打ち切り
4.ロックを取得できていなければLockError例外を発生させる
5.ブロックをともなって呼び出されていた場合そのブロックを実行する。
そしてロックを解放する
ロックの解除は普通に元のファイル名に変更するだけ。
汎用性はかなり高いと思われる。レースコンディションを検討しても
まずないだろうと考えられる。ファイルのリネームができないサーバーは
まずないだろうからその面でも問題はない。
0892デフォルトの名無しさん
2008/11/11(火) 18:01:12それを使ったソースの配布もGPL2を用いなければならず、
そこが唯一の問題だったりする。逆に言えば、GPL2で
配布する予定のプログラムならぜんぜん問題はないといってよい。
0893デフォルトの名無しさん
2008/11/11(火) 19:05:10自分で書き直せばいいんじゃね?
0894デフォルトの名無しさん
2008/11/11(火) 22:36:42それなりにノウハウが枯れきっている話題だし、自分で実装しちゃえばいい。
0895デフォルトの名無しさん
2008/11/12(水) 07:21:48mkdir方式で共有ロック・排他ロックの区別あり
ttp://eload.run.buttobi.net/cgi-bin/img/e_260.zip
ロック検出→ロックディレクトリ作成の間に
明らかなレースコンディションがあるんだけど、解決の方法が思いつかない・・・
何かいい解決策はないだろうか
0896デフォルトの名無しさん
2008/11/12(水) 12:34:090897デフォルトの名無しさん
2008/11/12(水) 13:20:39http://www.din.or.jp/~ohzaki/perl.htm#File_Lock
0898デフォルトの名無しさん
2008/11/12(水) 21:36:28Errno::EEXIST
0899デフォルトの名無しさん
2008/11/13(木) 08:41:51その代わり1回のロックで2つのディレクトリを作るため、効率はやや悪い
ttp://eload.run.buttobi.net/cgi-bin/img/e_261.zip
>>896
共有ロックだと、複数のロックを同時にかけられるから
「まずmkdirしてみて、失敗するならロックされている」という検出方法が使えなかった
0900デフォルトの名無しさん
2008/11/13(木) 16:44:54教科書に載るようなちゃんと知られたアルゴリズムを調べて書いた方がいいと思うよ。
0901デフォルトの名無しさん
2008/11/14(金) 00:49:45http://jp.rubyist.net/magazine/?0018-GameProgramingForRubySDL
これをネットワーク越しに(LAN内のみ)二人対戦できるようにするには
どのような方法がありますでしょうか?
指針だけでもいいのでご教授お願いします。
0902デフォルトの名無しさん
2008/11/14(金) 00:58:110903デフォルトの名無しさん
2008/11/14(金) 01:09:35基本的なものだと発想はごく単純で、
互いが互いのキー入力やイベントを送信しあうだけ
左キーが押された!とかアイテム取った!とか
0904デフォルトの名無しさん
2008/11/14(金) 01:30:22片方をサーバにするのが一番簡単。
0905デフォルトの名無しさん
2008/11/14(金) 12:22:38いい感じだと思うぞ
ただ、読み込みのときにディレクトリ名の生成を
乱数に頼ってるところが怪しい
1秒に10回くらいのリクエストがあると衝突しそう
0906デフォルトの名無しさん
2008/11/14(金) 15:42:320907デフォルトの名無しさん
2008/11/14(金) 23:59:420908デフォルトの名無しさん
2008/11/15(土) 00:26:23「おなかが空いて死にそうなんです…」
「自分ではもうどうすることもできません…」
「お願いです一食分のお金でいいのでめぐんでください…」
といって食事代をめぐんでもらった
場所を変えてまた同じことを繰り返す
人の善意を利用した最低の行為
0909デフォルトの名無しさん
2008/11/15(土) 11:13:23マルチポストでググって出てくる最初のほうのいくつかを嫁
0910デフォルトの名無しさん
2008/11/15(土) 13:29:25$ sudo gem install mysql -- --with-mysql-dir=/usr/lib/mysql
と打ち込んだら、下みたいになります。
誰か教えてください。
$ head mkmf.log
find_library: checking for mysql_query() in -lmysqlclient... -------------------- no
"cc -o conftest -I. -I/usr/lib/ruby/1.8/i486-linux -I. -I/usr/lib/mysql/include -fno-strict-aliasing -g -g -O2 -fPIC
conftest.c -L"." -L"/usr/lib" -L"/usr/lib/mysql/lib" -L. -Wl,-Bsymbolic-functions -rdynamic -Wl,-export-dynamic
-lruby1.8-static -lmysqlclient -lpthread -ldl -lcrypt -lm -lc"
sh: cc: not found
checked program was:
/* begin */
1: /*top*/
2: int main() { return 0; }
3: int t() { void ((*volatile p)()); p = (void ((*)()))mysql_query; return 0; }
/* end */
0911デフォルトの名無しさん
2008/11/15(土) 13:43:13コンパイラ入ってるか?
0912910
2008/11/15(土) 13:53:08apt-get install gcc
apt-get install make
をやったところ、無事にgem install mysqlが通りました。
ありがとうございます。
0913デフォルトの名無しさん
2008/11/15(土) 21:28:50↑だとフォルダもファイルも一緒に表示されてしまいます
フォルダのみファイルのみのパスが欲しいんですがどうしたらいいんでしょう
0914デフォルトの名無しさん
2008/11/15(土) 21:46:070915デフォルトの名無しさん
2008/11/15(土) 22:05:58あとコピペしたらエラーになったんで最後にpathを付けたら動きました。
dirs, files = Dir.glob("**/*").partition{|path| File.directory? path}
0916デフォルトの名無しさん
2008/11/15(土) 22:49:150917デフォルトの名無しさん
2008/11/16(日) 01:07:09ありがとうございます、フォルダのみ検索できました
ファイルのみ検索できないか試したけど、拡張子ありファイルならできました
Dir.glob("**/*.*"){|f| p f }
0918デフォルトの名無しさん
2008/11/16(日) 01:29:01なにかが重複していて、テーブルが作成されないのですがいくつか試したものの
うまくいきません。誰か助言をお願いします。
$ gem list
*** LOCAL GEMS ***
actionmailer (2.1.2, 1.3.6)
actionpack (2.1.2, 1.13.6)
actionwebservice (1.2.6)
activerecord (2.1.2, 1.15.6)
activeresource (2.1.2)
activesupport (2.1.2, 1.4.4)
fastercsv (1.4.0)
gettext (1.93.0)
hoe (1.8.2)
mysql (2.7)
rails (2.1.2, 1.2.6)
rake (0.8.3)
rspec (1.1.11)
rspec-rails (1.1.11)
ruby-openid (2.1.2)
rubyforge (1.0.1)
rubygems-update (1.3.1)
uuidtools (1.0.4)
$ rake db:migrate
(in /railsApp/scheduler)
/railsApp/scheduler/config/boot.rb:20:Warning: Gem::SourceIndex#search support for String patterns is deprecated
$
0919918
2008/11/16(日) 02:10:28根本的な勘違いをしているのでしょうか?
$ rake _1.2.6_ db:migrate
/usr/local/lib/site_ruby/1.8/rubygems.rb:636:in `report_activate_error': RubyGem version error: rake(0.8.3 not = 1.2.6) (Gem::LoadError)
from /usr/local/lib/site_ruby/1.8/rubygems.rb:141:in `activate'
from /usr/local/lib/site_ruby/1.8/rubygems.rb:49:in `gem'
from /usr/bin/rake:18
0920デフォルトの名無しさん
2008/11/16(日) 02:22:52あなたが遭遇している問題とはおそらく関係ないと思う。
モデルは作った? DBは作った? アダプタは何? 最近のデフォルトはsqlite3だぞ。
>>919でしているのはrakeのバージョン。
rakeは0.8.3しか入ってないんだからそういうエラーになる。
0921デフォルトの名無しさん
2008/11/16(日) 02:36:33ありがと。
いろいろ試してエラーメッセージを見てたら気づきました。。。
gemを使って、railsの2.1.2を入れたり消したりしてたら
いつのまにか、インストール済み(2.1.2と1.2.6)のrailsとその関連のパッケージは
アンインストールができなくなりました。
2.1.2は暫く使わないので、一回消したかったのだけど。
0922デフォルトの名無しさん
2008/11/16(日) 02:50:220923デフォルトの名無しさん
2008/11/16(日) 02:54:040924デフォルトの名無しさん
2008/11/16(日) 03:03:140925デフォルトの名無しさん
2008/11/16(日) 04:12:20> ファイルのみ検索できないか試したけど、拡張子ありファイルならできました
それはファイルとディレクトリを区別してるわけではなく、
途中に"."を含むパス名を探している。
Dir.glob単独で区別できるのはディレクトリのみ。
0926デフォルトの名無しさん
2008/11/16(日) 08:51:18ご存じありませんか?参考にしたいのですが。
0927デフォルトの名無しさん
2008/11/16(日) 08:58:40あと GUI か CUI かで話が違ってくるかも
0928デフォルトの名無しさん
2008/11/16(日) 10:49:04そうですか、フォルダに"."があれば反応しちゃうんですね
0929デフォルトの名無しさん
2008/11/16(日) 11:13:18Ruby on Railsが良いらしいと最近知って、
キャッチセールスにハマった奴状態になりました。
よしRubyだ!さっそく勉強だ!と思って、昨日本屋で
「たのしいRuby」「Rubyレシピブック」「Railsレシピブック」
3冊一気に購入しました。
そして今日、このスレを見て……
>>228-230
Rubyのスコープ管理ってそんない甘いの!?
えっ、Windowsでは重すぎてまともに動かないの!?
まともに対応してるIDEは無いの!?
何ソレ!?
・・・・・・でゲッと思っている俺、34歳オッサンのおばかさんです。
本は3冊で合計、\8,610しました……涙目・・・
Ruby…ダメなの?じゃあスレ違い申し訳ないですが、
LLやるとすれば何が良いんでしょうか?
小規模業務系システムに耐えるもので、Javaより小コスト
でライトなもの、って何でしょう?
Python + Django なんですか?よければお教えください。
0930デフォルトの名無しさん
2008/11/16(日) 11:18:27開発環境を自由に変更できる立場の人が2ちゃんで効かないでください。あなたのチームは終わってます。
0931929
2008/11/16(日) 11:22:39いやいや、そんなんじゃないです。ただのへっぽこ零細企業の人間です。
ただこれからの技術の移り変わりに対応する為、あるいは後学のため、
ってだけの理由です。
仕事で使う必然性があるわけではありません。
0932デフォルトの名無しさん
2008/11/16(日) 11:33:010933デフォルトの名無しさん
2008/11/16(日) 11:34:35動的型付けな言語なら補完なんか大してできないのでどれも似たり寄ったりな気が
0934929
2008/11/16(日) 11:40:07当方、ただLLに興味持って、やってみたいと思っただけの
人間です。ただそれにしても将来性とかかんがえちゃうの
で、後々自分の仕事で使う機会があるとすれば…?という
発想をしただけです。
決してRuby使いの皆様をくさそうとする意図はありません。
スレ違い、たいへん失礼しました。
0935デフォルトの名無しさん
2008/11/16(日) 11:41:110936デフォルトの名無しさん
2008/11/16(日) 11:45:52>>228-230はスコープ管理の話なんかしてないしrubyのスコープ管理は甘くなんか無い
>>228-で言ってるのはrubyはタイプセーフなプログラミングが出来ないって事で
それはその通りだけどテスト駆動な開発をすれば問題無い、と>>253までつづいてる
それより本を買ったんなら元を取るつもりで全部読めよ、もったいない
0937デフォルトの名無しさん
2008/11/16(日) 11:47:37Railsの作者であるDavid Heinemeier Hansson氏は元々PHPユーザーであり,いまでも37signalsのページではPHPが使われている。
Railsはしっかりしたモデルを持ったデータベースアプリケーションには向いているが,メールフォームやアンケートなど,
遷移の少ないものでは,その利点をあまり発揮しない。またPHPなどに比べて,メモリーを消費すると言う問題もあり,
資源の少ないサーバーでの運用には注意が必要である。
http://itpro.nikkeibp.co.jp/article/COLUMN/20060424/236113/
0938デフォルトの名無しさん
2008/11/16(日) 11:49:43Ruby/GTK+付属のデモで画像を表示するやつ(プログレスバーは出てきませんが)をみながら
自分で書き終えてしまいました。
>>929
「ためにする心配」につられていても仕方がないと思いますよ。
その欠点は本当か、あるいはそれは実際に深刻なものなのか、というのはやってみずに
評価したふりをしてみても仕方がない。
それから、いずれにしても「後々使う機会があるかも……?」という程度では今何を
やったところで実際に使うときにも詳細は陳腐化の可能性が大きいです。
それならば考え方や長所短所を飲み込んでおくために
明らかに一方の代表格であるRailsを学んでみるのは悪くない選択だと思います。
0939デフォルトの名無しさん
2008/11/16(日) 12:20:54>>936,>>938
おっしゃる事はごもっともです。良く分ります。
さらにちょっと、余談でごめんなさい。なぜRubyに興味を持ったのか?
という話をします。
それは、不況だって事です。安易かもしれませんが、不況だから、今後
業務系大規模システム案件は減少するだろうと思ったわけです。
すると中小規模で小金額の案件が多くなるだろうと。大規模なら当然
Javaなんですが・・・。
それと、Javaでも充分重いって事もあります。だからもっと中小規模
向きで、シンプルで軽く低コストに開発できる技術が流行ってくるだろう、
と。
それでRubyあたりがもっとシェア上げて来るんじゃねえか?などと思った
次第です。日本人が作ったというのも、右派な自分には魅力でした。
まだ自分には結論だせませんが、今後も興味は持ち続けたいと思います。
0940デフォルトの名無しさん
2008/11/16(日) 12:26:00>>937
>またPHPなどに比べて,メモリーを消費すると言う問題もあり,
>資源の少ないサーバーでの運用には注意が必要である。
0941デフォルトの名無しさん
2008/11/16(日) 12:36:30つまり軽い技術欲しがる事に対しては、Rubyは軽くない、PHPのほうがマシ、と言いたい?
0942デフォルトの名無しさん
2008/11/16(日) 12:53:18勝手にすり替えてRubxをこき下ろそうとするなよ。
0943デフォルトの名無しさん
2008/11/16(日) 13:01:580944デフォルトの名無しさん
2008/11/16(日) 16:59:04まあ確かにメモリは食うけど共有サーバでCGI実行みたいな環境じゃなく、
普通に2GBくらいメモリ積んでるサーバ使えば問題にならないよ。
データベース用サーバならともかくアプリ用のサーバのメモリをケチっても中小規模の案件(数台〜10数台)なら大した差がないだろ。
0945676
2008/11/16(日) 23:29:31(excelのvlookupのようなものをrubyで書きたいと質問しました)
二分探索のループで書いたものがやっと(自分の中で)完成しました。
どんな感じでしょうか?コメントをいただきたいです。
よろしくお願いいたします。
def match_loop(val, array)
high=array.size-1
low=prek=0
while 0
k=(high+low)/2
if prek!=k then
val<array[k] ? high=k : low=k
else
break
end
prek=k
end
return val-array[low]<array[high]-val ? low : high
end
0946676
2008/11/16(日) 23:37:22ちなみに私のプログラム歴ですが
学生時代にperlを12コマと卒研でcを数ヵ月、
社会人になってからこんな感じで少しです。
変なクセは学生時代のどちらかで付いてしまったと思います。
VBは今回のもので少し書きましたが
全然速くならなかったのですぐにあきらめてしまったので
breakの話とかは全く知らないです。
とにかく、ど素人です。
申し訳ありませんが >>945 の添削よろしくお願い致します。
0947デフォルトの名無しさん
2008/11/17(月) 00:28:11ぱっと見て目につくのは while 0 かな。
他言語の 0 が偽でRubyが真なのとあいまってすげぇ紛らわしいw
Rubyには loop do 〜 end っていう無限ループ用のイテレータがあるからそれを使う。
つか、他言語やってたらな while 1 か while true と書くだフツーw
0948デフォルトの名無しさん
2008/11/17(月) 00:46:20アルゴリズム自体に問題は無いと思う・・・・・思うが、実行してないので自信がないw
・スペース。記号間には適宜スペースを入れると見やすくなるとされる。まあこれも流儀があるらしいが
・無限ループ
while文は、条件部分が真の場合にループ部分を実行する
Rubyにおいて真とは、「falseとnil以外の全て」だから、while 0でも一応は無限ループになるが
表記として非常に紛らわしい(言語によっては、0を偽とみなすものもある)
せめてwhile 1、でもRubyには組み込み関数(関数的メソッド)loopがあるので、無限ループには慣用的にこれを使う
・ifの辺り
if〜else breakだと、縦に長くなって終了条件も読み取りづらくなる
さらにifは後置表記ができる
・最後のend手前
メソッドでの最後のreturnは省略でき、その場合は最後の式を評価された値が戻る。今回は省略してみた
あと個人的には、三項演算子の条件部分が複雑で読みづらいので、せめて括弧が欲しい
コーディング規約によっては、「複雑な条件ならif文を使え」ともされているが、今回はまあ良いんじゃなかろうか
def match_loop(val, array)
high = array.size - 1
low = prek = 0
loop do
k = (high + low)/2
break if prek == k
val < array[k] ? high = k : low = k
prek = k
end
(val - array[low] < array[high] - val) ? low : high
end
0949デフォルトの名無しさん
2008/11/17(月) 00:51:32組込みしか知らない人で同じくRubyを勉強している人いますか?
お勧めの書籍や、気をつけるべき点があれば教えてください。
0950デフォルトの名無しさん
2008/11/17(月) 02:00:02returnのところで、境界の2値との距離を取って、近い方のインデックスを返すようにされてますが、
これだと、順序はある(大小比較が出来る)けど距離(差)が取れない値の検索が出来ないですよね。
(例えば数値の検索には使えても辞書順に整列された文字列の検索には使えませんよね。)
なので、関数の再利用性を高めるために、
より汎用性の高い「二分検索して境界のインデックスを返す」という関数はそれ単体で作っておいて、
その関数を呼び出して境界の2値との距離を取って近い方のインデックスを返す関数、をmatch_loopとするのが良いと思います。
あと関数の名前がちょっと気になります。検索方法が二分検索ならば配列はソートされていることが前提なので
間違えて変な配列を渡さないように、それが分かるような名前にした方がいいと思います。
例: binary_search、search_sorted_array など
0951デフォルトの名無しさん
2008/11/17(月) 12:58:36書籍については>>2を参照のこと
組み込みの世界は知らないんだが、Rubyってあるのかなあ・・・・・・?
0952デフォルトの名無しさん
2008/11/17(月) 20:31:40そもそも組み込みのところにインタプリタ内蔵できないでしょ
0953デフォルトの名無しさん
2008/11/17(月) 22:23:07>組込みしか知らない人で同じくRubyを勉強している人いますか?
>お勧めの書籍や、気をつけるべき点があれば教えてください。
特にない。初心者と同じように勉強すればいい。
ただ組み込みを知っているなら、当然アセンブラやポインタの理解はしているだろうから、
内部の動作を解析した『Rubyハッキングガイド』をいきなり読むのも面白いかも。
>>951,952
別に組み込みで使いたいなんて、>>949には一言も書いてないんだが
0954デフォルトの名無しさん
2008/11/17(月) 22:28:36http://i.loveruby.net/ja/rhg/book/
でもこれ、いま書籍手に入る?
0955676
2008/11/17(月) 22:33:44どうもありがとうございました。
やはり私が知らない事をたくさん指摘していただけて勉強になりました。
whileに関しては0と1どっちかなぁ、と初めに0をやったら
無限ループになったから使ったという最低な事をしてました。。。
関数の名前と汎用性は今後勉強していくうちにステップアップしていきたいです。
今は数値の検索にしか使わない、ということと >>945 の数行を書くのに
いっぱいいっぱいだったので。
今後もよろしくお願いいたします。
0956デフォルトの名無しさん
2008/11/17(月) 22:45:06多分無理
0957デフォルトの名無しさん
2008/11/17(月) 23:02:08Rubyソースコード完全解説: 青木 峰郎, まつもと ゆきひろ: Amazon.co.jp: 本
http://www.amazon.co.jp/dp/4844317210
出品者からお求めいただけます。
1点の新品/中古商品を見る: ¥ 20,000より
0958デフォルトの名無しさん
2008/11/18(火) 00:53:01watirはwinだしfirewatirはバックグラウンドで起動の方法が分からない。。
0959デフォルトの名無しさん
2008/11/18(火) 01:25:08アドバイスありがとうございました。
組込みの現場で使うと言うのではなく、部長から
「組込みだけでなく、組込み+αを目指せ」
といわれ、部としてRuby技術者を増やすらしいのです。
ですから、あくまでも主体は組込みで、
勉強というか、知識の幅を広げるためのRubyです。
(さすがに知っている知識が、C言語と組込技術のみは狭すぎるから)
そのため、現在、UMLを先行して勉強しています
(これは業務でも利用できるので)
>ただ組み込みを知っているなら、当然アセンブラやポインタの理解はしているだろうから、
そうですね。そのあたりは理解しているつもりです。
(アセンブラの場合、読めますが、書くとなると少しがんばる必要がありますが、RISCの場合とか)
とにかく、まずは読んで動かしてぐりぐりとやってみます。
0960デフォルトの名無しさん
2008/11/18(火) 01:59:47Ruby使って組み込み開発できるようにするってのは進行してるのかな。
0961デフォルトの名無しさん
2008/11/18(火) 05:29:58>>945
お、できたのか、すばらしい。
再帰を読み解けというのはちょっとハードル高かったかもと思ってたんだが、
どこかで二分検索の解説を探してきたかな?
アルゴリズムの実装はちゃんとできてるようだね。
コーディングスタイルについて……は、突っ込み入ってるし、まぁ、いいか。
# そもそも自分が人に偉そうなことをいえる様な書き方してない。
一つだけ言わせてもらうと、break, return の使い方が前回と一緒。
breakで抜けた後はreturnするだけ。 だったら最初からreturnでいいじゃん。
そもそも無限ループにするより、うまいこと終了条件を設定できないかな?
他には返値の近接値判定が >>677 では下に寄せているのに、>>945 では
上に寄せている。 [0, 1] で 0.5 を探すと >>746 は 0 >>945 は 1 を返す。
それからprek に前回の k を保存しているようだけど、意義がよく分からない。
前回の k の値は high か low のどちらかに残るのになぜ必要なのかな。
まとめると、プログラムの進行を、いつ、どういった条件で、どのように分岐
させるのかというあたりの考えがどうにも甘い感じがする。
前回は言わなかったけど、>>677なんかがその典型で、if に対する else が
来るべきところに、elsifで真偽値を反転した式を再度評価していたりとか、
絶対に成立する/しない条件式や絶対に通過しないコードがあったりとか。
説教くさいようだけど、値を比較する時に大小関係がよく分からなくなった
からといって安易に絶対値をとってごまかしてみたり、whileに適当に0を
入れたり、なんだかよく分からないけど動いてるみたいだからまぁいいか、
なんてスタンスでいると後々痛い目を見るよ。
一遍くらいは泣きを見た方が却っていいのかもしれんけど。
0962デフォルトの名無しさん
2008/11/18(火) 05:33:41参考までに>>746のもの。>>945とよく似ているけど、なにが違うかな。
def match_loop(val, array)
return array[0] if array.size <= 1 # 配列が空の時はnilを返す
head = 0
tail = array.size - 1
while tail - head > 1
navel = (head + tail) / 2
if val < array[navel]
tail = navel
else
head = navel
end
end
val-array[head] <= array[tail]-val ? head : tail
end
0963デフォルトの名無しさん
2008/11/18(火) 13:05:37Rubyハッキングガイドの本は入手できなくても、Webでよめるよね。
http://i.loveruby.net/ja/rhg/book/
あと、「初めてのRuby」には、一般ユーザでも知っておいた方がいいRubyの内部構造にしぼって解説が載っているみたいだから、
Rubyハッキングガイドをいきなり読むよりはいいかもしれない。
http://www.oreilly.co.jp/books/9784873113678/
0964デフォルトの名無しさん
2008/11/18(火) 13:07:44整数値を得たい場合はどうしたらいいですか。
RAND_MAXとかあるかと思いましたが、なさそうです。
0965デフォルトの名無しさん
2008/11/18(火) 13:41:150 ≦ rand n < n で整数を返すようになる
0966デフォルトの名無しさん
2008/11/18(火) 14:27:50そりゃRubyのrand()は1万桁の乱数だって平気で返せるからな。
どこかでテキトーに区切りつけれ。
0967デフォルトの名無しさん
2008/11/18(火) 15:17:30cygwin上のrubyで最近ircのbotを動かそうとして、riceを使いghotiを動かしています。
ところが発言がNOTICEじゃないので、NOTICEで発言させたいと思っています。
rubyはろくに弄った事が無いので、どの辺弄ったらいいんでしょうか。
あと、発言の学習でurlが含まれるものを排除したいと思っています。
s.gsubでノーマライズしているの部分で消せばよいと考えました。
とりあえず以下のような感じで削除しようと思ったのですが
s.gsub!("^.*http.*$","")
うまく消えないようです
なんか注意点はありますでしょうか?
0968デフォルトの名無しさん
2008/11/18(火) 16:13:36じゃなくて?それとこれだとURLだけじゃなくて、その行全部消えるけど大丈夫?
0969デフォルトの名無しさん
2008/11/18(火) 16:52:00コード斜め読みしてみた感じ、たぶんrice-0.0.0.2はNOTICEに対応してない。
HEADなら対応してそうだけどライブラリ構造ずいぶん変わってるから
差し替えてそのまま動くかはあやしい。動きそうな気もするけど。
もし差し替えてうまく動いたなら、privmsgしてるところをnoticeに書き換え。
0970デフォルトの名無しさん
2008/11/18(火) 17:46:45s.gsub!(/^.*http.*$/,"")
と、ちゃんと正規表現として検索パターンを与えないと、文字列そのものとして検索されるよ
s.gsub!("^.*http.*$","") などと検索パターンに文字列を与えると
s.gsub!(Regexp.new(Regexp.escape("^.*http.*$")), "")
と同じ意味になっちゃう
ruby 1.6以前だと、文字列を与えるとそれを正規表現として扱ってましたが
0971デフォルトの名無しさん
2008/11/18(火) 18:13:33普通にプログラムが書ける人間なら、ちょっと文法覚えてちょっと組み込みクラスのメソッド群を覚えれば、普通に使えるようになるはず。
もしそうじゃなかったら、「普通にプログラムが書ける人間」じゃないなだけなので、使えるはずのCを真面目に勉強しろ、って感じ。
まあ、書いてることを見る限り、ちょっといじったらすぐわかるようになるよ。
0972967
2008/11/18(火) 18:39:48ありがとうございます
他のノーマライズ処理部分が一部正規表現ぽく見えたので、/要らないのかと思ってしまいました
あと、NOTICEは対応していないかもしれないんですね
態々コードまで見てもらってありがとうございます
直接埋め込みで何とかなるか調べてみようと思います
0973デフォルトの名無しさん
2008/11/18(火) 19:27:36待て待て、C言語とRubyだと結構違いも大きいぞ…例えば
・非オブジェクト指向言語のC、オブジェクト指向言語のRuby
例えばCなら「関数」で目的の機能を探すところを
Rubyでは「クラス」または「モジュール」単位で探す
(ライブラリ単位で探す場合もあるが、そこは共通)
・変数に型があるCと中身に型があるRuby
C言語は変数が型を持ち、中身である値は型を持たない
Rubyの変数はオブジェクトを指すラベルでしかなく型はない
その代わり、参照先のオブジェクトがハッキリと型を持つ
この辺りは押さえておきたい
0974デフォルトの名無しさん
2008/11/18(火) 19:43:49>整数値で引数を与えると
>0 ≦ rand n < n で整数を返すようになる
なにこれー
ちょーさんくす
0975デフォルトの名無しさん
2008/11/18(火) 19:59:44そんなの本質的な違いじゃないから。
0976デフォルトの名無しさん
2008/11/18(火) 21:33:24これはでかすぎるだろ・・・別にオブジェクト指向なんて意識しなくても動くけど
個人的には動的な型づけもでかいと思う
普通ってどのくらいのレベルを言うのかイマイチわからん
0977デフォルトの名無しさん
2008/11/18(火) 21:37:47> Dir.glob単独で区別できるのはディレクトリのみ。
ほんなら
Dir.glob("**/*") - Dir.glob("**/*/")
でファイル一覧取れるじゃーん、イェーイ、と思ったら予想外の結果になった。
0978デフォルトの名無しさん
2008/11/18(火) 22:19:01OSはUbuntu Linux。で、エディタをEmacs使おうと思ってたのですが、
本には向いてないとか書かれてました。
Aptanaのプラグインとかはちょっと重そうなのと、試してみたらエラー
出たりしたので放置してます。
Linuxユーザの方はどんなエディタ使ってますか?
0979デフォルトの名無しさん
2008/11/18(火) 22:20:230980デフォルトの名無しさん
2008/11/18(火) 22:21:13emacs
0981デフォルトの名無しさん
2008/11/18(火) 22:21:25その本には「初心者には」向いてないって書いてたんじゃない?
0982デフォルトの名無しさん
2008/11/18(火) 22:29:06emacs使えるならそれで良いし、もちろんvimでもGNU nanoでも
geditでも、プレーンテキストが編集出来るならなんでも良い
0983978
2008/11/18(火) 22:31:41Emacs向いてない、って書いてあったのは、「RailsによるアジャイルWebアプリケーション開発」
でした。何ででしょうね。この本には、Macの何とかってエディタがおすすめとなってました。
0984デフォルトの名無しさん
2008/11/18(火) 22:43:040985デフォルトの名無しさん
2008/11/18(火) 23:03:38RubyがMacで流行ったから、それを意識したんだろうな
MacOSXのエディタは決定版が少ないから
(文字コードに弱かったり、色分けすら無かったり)
オススメエディタの紹介もそれなりに需要あるんだよ
ちなみに俺はMacでは GNU nano かな
Linux畑のRubyには、Linux畑のエディタのが問題起きにくい
0986デフォルトの名無しさん
2008/11/18(火) 23:04:530987デフォルトの名無しさん
2008/11/19(水) 12:25:180988デフォルトの名無しさん
2008/11/19(水) 13:07:050989デフォルトの名無しさん
2008/11/19(水) 16:19:500990デフォルトの名無しさん
2008/11/19(水) 18:02:58lib/app.rb # test.rbをrequire
lib/test.rb
spec/test_spec.rb
などのような基本的なスクリプトなのですが・・・
0991990
2008/11/19(水) 18:05:41log/ にログファイルを出力していたのですが、autotestが更新したと思って
無限にテストを繰り返していました。
特定ディレクトリのみ監視外にするにはどうしたらよいのだろう・・・
0992990
2008/11/19(水) 18:24:59以下を.autotestとして書いてプロジェクト直下に置いたところ、
無事にlog/以下を監視対象外に指定することができました。
Autotest.add_hook :initialize do |autotest|
autotest.instance_eval do
add_exception %r%^\./(?:db|doc|log|public|script|tmp|vendor)%
end
end
お騒がせいたしました。
ありがとうございました。
0993デフォルトの名無しさん
2008/11/19(水) 21:52:35それ、2つのエディタが見つかるんだが、jEのほうだよな?
jedit X のほうじゃないよな?
…そういやkEditといい、jEditといい、Mac界は紛らわしい名前のエディタも多いんだなw
0994676
2008/11/19(水) 23:12:00まずは >>746 を紙に書いて動きを考えて
解説はwikipediaのものを見るだけにしました。(カンニングはしてません)
無限ループは終了条件をどうすればよいか考え付かなかったのでprekとして
1つ前のkを保存して強制的に終了させていました。
考えが甘いとの指摘はおっしゃる通りだと思います。
この話は仕事でもよく指摘されています(仕事はプログラミングとは無関係)。
思わぬところで自分が成長できていないを再認識しました。。。
(whileも近接値判定もやって出来なりでokとしてしまいましたが
ちゃんと考えないと抜けがありますね。[0, 1] の 0.5 は乱数では出てきませんでした。)
★自分のと >>962 の違いについて
・2行目の検査で安全性を確保している
・ループの終了条件が分かりやすい
・>>961 に書いてありますが、近接値判定のところを前と同じにしてある
・変数名の付け方
0995デフォルトの名無しさん
2008/11/19(水) 23:47:48http://www.ruby-lang.org/ja/downloads/
を見ると
・ActiveScriptRubyは1.8.5
・One-Click Ruby Installer for Windows は1.8.6
でした。
1.8.7のインストーラはないでしょうか?
0996デフォルトの名無しさん
2008/11/19(水) 23:51:42ここかしら
0997デフォルトの名無しさん
2008/11/20(木) 00:24:14馬鹿発見
0998デフォルトの名無しさん
2008/11/20(木) 01:52:570999デフォルトの名無しさん
2008/11/20(木) 04:26:331000デフォルトの名無しさん
2008/11/20(木) 04:32:59http://pc11.2ch.net/test/read.cgi/tech/1227123021/
取り急ぎ>>1だけケータイから立てたのであと誰かたのむ
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。