Ruby 初心者スレッド Part 36
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2010/03/22(月) 13:56:36★注意★ Ruby 1.9.1 は初心者にはまだ時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
(理由:現時点では有名ライブラリやアプリが 1.9.1 に完全には対応していないためです)
1.8.7 でも 1.9 系に導入された新機能のいくつかが利用可能なため、1.8.7 を習得すれば将来スムーズに 1.9 系に移行できるでしょう。
関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。
■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
・モジュール名やエラーメッセージでググる
・マニュアルで引っかかったクラスの記述を探す http://www.ruby-lang.org/ja/man/
・FAQを一応読む http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
・詳しい内容(「動きません」「うまくできません」では回答しようがない)
・エラーメッセージ(自力で訳さずなるべくそのままで)
・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0002デフォルトの名無しさん
2010/03/22(月) 13:57:18Q:
いちからRubyを始める初心者向けのRuby入門書は何がありますか?
A:
プログラム作成自体の初心者なら
・「たのしいRuby 第2版 Rubyではじめる気軽なプログラミング」
http://www.amazon.co.jp/dp/4797336617/
文法は理解済み(orリファレンスで乗り切る既言語習得者)の場合のRuby様式を知る必携2冊目
・「初めてのRuby」
http://www.amazon.co.jp/dp/4873113679/
以下は外れが少ないとされている本です。必ず立ち読みした上で自分の目的とレベルに応じて購入してください。
・「Rubyレシピブック 第2版 268の技」(初心者向け)
http://www.amazon.co.jp/dp/4797340045/
・「プログラミングRuby 第2版 言語編」(初心者向け)
http://www.amazon.co.jp/dp/4274066428/
・「Ruby Way 第2版」(脱初心者向け)
http://www.amazon.co.jp/dp/4798115339/
・ 「Rubyクックブック ―エキスパートのための応用レシピ集」(脱初心者向け)
http://www.amazon.co.jp/dp/4873113245/
以下の本は言語作者が書いた最新本ですがとりあえず初学者向けではありません。
・「プログラミング言語 Ruby」(言語として深く知りたい人向け)
http://www.amazon.co.jp/dp/4873113946/
0003デフォルトの名無しさん
2010/03/22(月) 13:57:59・Ruby Home Page 【公式、お役立ち度が微妙】
http://www.ruby-lang.org/ja/
・Rubyリファレンスマニュアル 【検索機能休止中、Googleなどの併用を】
http://www.ruby-lang.org/ja/man/
http://www.ruby-doc.org/ 【詳しい英語版】
・HTMLヘルプ版リファレンスマニュアル配布さん 【Windowsで便利、検索も無論可能】
http://elbereth-hp.hp.infoseek.co.jp/ruby.html
・Programming Ruby - The Pragmatic Programmer's Guide 【好評書籍の初版がネットで、ただし英語】
http://www.ruby-doc.org/docs/ProgrammingRuby/
・Rubyist Magazine - るびま 【ライブラリ紹介などの読み物、過去のコードレビューは一読の価値あり】
http://jp.rubyist.net/magazine/
・逆引きRuby 【やりたいことから探すWiki、最近元気ないので編集者募集】
http://www.namaraii.com/rubytips/
・はてなキーワード > Ruby 【うっかりどっさりまとまったリンク集、説明なし】
http://d.hatena.ne.jp/keyword/Ruby
・RubyForge 【○○をやりたい管理されたライブラリを探すならここ、英語】
http://www.rubyforge.org/
・GitHub 【○○をやりたいコードをとにかく探すならここ、英語】
http://github.com/
・日本Rubyの会 【最近はオフライン勉強会の寄り合い場と化しているので近くで勉強会があれば】
http://jp.rubyist.net/
0004デフォルトの名無しさん
2010/03/22(月) 13:58:40Rubyについて Part 39
http://pc12.2ch.net/test/read.cgi/tech/1265467681/
●アンチスレ
・Rubyについて(アンチ専用) Part004
http://pc12.2ch.net/test/read.cgi/tech/1249737531/
●Railsスレ
【Ruby】Ruby on Rails Part9
http://pc11.2ch.net/test/read.cgi/php/1266563593/
●Windows用スレ
・【ActiveScript】RubyをWindowsで使うスレ【GUI】
http://pc11.2ch.net/test/read.cgi/tech/1155031689/
●Ruby 1.9 系列スレ
・魁け! Ruby 1.9.X
http://pc11.2ch.net/test/read.cgi/tech/1201603546/
●前スレ
Ruby 初心者スレッド Part 35
http://pc12.2ch.net/test/read.cgi/tech/1267668057/
Ruby 初心者スレッド Part 34
http://pc12.2ch.net/test/read.cgi/tech/1264635554/
Ruby 初心者スレッド Part 33
http://pc12.2ch.net/test/read.cgi/tech/1259990485/
0005デフォルトの名無しさん
2010/03/22(月) 13:59:20・Ruby 1.8.5
レンタルサーバ等にいまだに残ってる非安定な古いバージョン
1.8.6 にすらなってない理由はたぶん管理の手抜きなので怒ってよい
・Ruby 1.8.6
過去の長期政権と数の暴力で一大勢力圏を維持中の旧安定版
公開スクリプトはこれでも動作するべきではあるんだがそろそろ 1.8.7 に譲ってくれ
・Ruby 1.8.7
1.9 シリーズの機能をいくつか足したハイブリッドなバージョン、初学者にこそお勧め
1.9 系機能は 1.8.6 では動かないが「えーマジ1.8.6!? 1.8.6が許されるのは小(AA略」と煽ってよい
・Ruby 1.9.0
不安定にして先鋭機能が超満載の開発版バージョンだったもの
1.9.x は本来全てが開発版の呼称だったのだが、事情が変わって(ここ笑うところ)1.9.1 は安定板に
・Ruby 1.9.1
満を持して登場の 1.9 系列安定板(本体は 1.8.6 程度には使えるということになっている)
本体と添付ライブラリの動作は問題がないのだがgem等外部第三者ライブラリの対応が超適当特に英語圏産
初心者を脱した人が外部ライブラリの開発コミュニティに参加してくれたりすることを期待中
0006テンプレここまで
2010/03/22(月) 14:04:20OneClickInstaller は単に古すぎ、RubyInstaller は MinGW32 版で現状扱い怪しい、cygwin 版は cygwin マニア専用
IDE のお勧めは特にない(せいぜい汎用のEclipseかNetBeans)、RDE は古くて独自すぎで Ruby に慣れた人向け
■ Windows でとにかく迷いたくない普通の人 … ActiveScriptRuby 1.8.7
ttp://arton.hp.infoseek.co.jp/indexj.html
の題字のでかい 「ActiveScriptRuby 1.8.7(p249) with-winsock2 tcl-stub」
マニュアルはWebで見ることもできるが手元にあると便利、1.8.7 の HTML ヘルプ版が
ttp://www.ruby-lang.org/ja/documentation/
の「Rubyリファレンスマニュアル刷新計画 chm版 1.8.7用」
夢のお告げ等、何かの間違いで Ruby の知識がないうちから 1.9.1 を使って苦しみたいマゾい人は
ttp://www.artonx.org/data/asr/ の「Ruby-1.9.1-p数字 Microsoft Installter Package」
0007デフォルトの名無しさん
2010/03/22(月) 14:11:580008デフォルトの名無しさん
2010/03/22(月) 14:12:39>>2の『たのしいRuby』は第3版が3/31に発売予定だとか
ttp://www.amazon.co.jp/gp/product/4797357401/
ところで↓はテンプレに載っててもいいと思うんだけど
何かまずいんだっけ?
『プログラミング入門 - Rubyを使って - 未来のプログラマのためのチュートリアル』
ttp://www.ie.u-ryukyu.ac.jp/~kono/software/s04/tutorial/index.html
(訳した西山先生のサイトは現在行方不明)
0009デフォルトの名無しさん
2010/03/22(月) 14:16:24く|)へ
〉 ヽ○ノ
 ̄ ̄7 ヘ/
/ ノ
|
/
|
/
0010デフォルトの名無しさん
2010/03/22(月) 19:42:32,/ ノ ヽ ~\
/ ノ IPA ヽ ~\
/ ノ ヽ、 `ヽ
| ノ / ̄\ / ̄~ヽ ヽ i
| ノ | ノ
\ | <●> <●> ( )
\ | | | i /
| / ヽ レ
i (●_●) /
i、 ,-――-、 ・ /
i、 <(EEEEE)> ∵/ IPA Rubyスレは誰でもウェルカム
i、 \ ./ /
\ ーー ,ノ
,,.....イ.ヽヽ、ー-―一ノ゙-、.
: | '; \_____ ノ.| ヽ i
| \/゙(__)\,| i |
0011デフォルトの名無しさん
2010/03/22(月) 23:21:15if match("aaa", "*a*") 〜みたいな感じで
0012デフォルトの名無しさん
2010/03/22(月) 23:30:30/a/.match("aaa") とか
0013デフォルトの名無しさん
2010/03/22(月) 23:30:52ファイル一覧の文字列を含んだ配列の各要素に対して
正規表現でマッチするかどうかをチェックすればいいのではなかろうか
0014デフォルトの名無しさん
2010/03/22(月) 23:31:38File.fnmatch
ただしglobで使える一部のパターンは使用不可
0015デフォルトの名無しさん
2010/03/22(月) 23:37:51オリジナルのfnmatchの知識がある人向けだな、これ…
0016デフォルトの名無しさん
2010/03/23(火) 00:35:360017デフォルトの名無しさん
2010/03/23(火) 01:30:25String#matchに文字列渡したら発動するようにしようぜ
0018デフォルトの名無しさん
2010/03/23(火) 02:20:21wild_card = "*a*"
if Regexp.new(wild_card.gsub(/\*/, '.*')).match("aaa") then ...
うん。絶対違うな
0019デフォルトの名無しさん
2010/03/23(火) 11:10:04Proc オブジェクトという名前で lambda 使ったらだめ?
0020デフォルトの名無しさん
2010/03/23(火) 11:16:57正直覚えきれない。
関数的ならlambda、手続き的ならprocという感じ?
0021デフォルトの名無しさん
2010/03/23(火) 11:21:38これはわかりやすいかも
0022デフォルトの名無しさん
2010/03/23(火) 11:29:12「ここにはProcオブジェクトを指定します」というところでlambda使ったら駄目
「ここにはProcオブジェクトかlambdaを指定します」ならlambda使ってもOK
「ここにはlambdaを指定します」というマニュアルだったらProcオブジェクトでは駄目な理由を問い詰めろ
0023デフォルトの名無しさん
2010/03/23(火) 11:37:35実際問題として、引数増減させたり内部でreturnしたりしてエラー出されても俺はそんなん知らん
0024デフォルトの名無しさん
2010/03/23(火) 15:16:05> 正直、lambdaがなぜMethodオブジェクトでないのか解りません。
> おそらく、Rubyの後のバージョンでは変更されるのではないでしょうか。
lambdaは作られたところのコンテキストを保存するので、Methodとは決定的に異なる。
0025デフォルトの名無しさん
2010/03/23(火) 15:53:39さもありなん
0026デフォルトの名無しさん
2010/03/23(火) 19:46:49C++で説明してくれないか
0027デフォルトの名無しさん
2010/03/23(火) 20:45:47そして、オブジェクト同士を比較する時は、それをオーバライドする必要があるのですか?
0028デフォルトの名無しさん
2010/03/23(火) 20:54:26self と other が等しければ真を返します。デフォルトでは equal? と同じ効果です。
このメソッドは各クラスの性質に合わせて再定義するべきです。
self === other
このメソッドは case 文での比較に用いられます。
デフォルトは Object#== と同じ働きをしますが、この挙動はサブクラスで所属性のチェックを実現するため適宜再定義されます。
eql?(other)
二つのオブジェクトが等しければ真を返します。Hash で二つのキーが等しいかどうかを判定するのに使われます。
このメソッドを再定義した時には Object#hash メソッドも再定義しなければなりません。
eql? のデフォルトの定義は equal? と同じくオブジェクトの同一性判定になっています。
equal?(other)
other が self 自身の時、真を返します。
このメソッドを再定義してはいけません。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
複雑だよねー
0029デフォルトの名無しさん
2010/03/23(火) 20:54:48c++ の人ならlambdaはC++にもある(boost)から概念ならそこから理解できるはず
0030デフォルトの名無しさん
2010/03/23(火) 20:57:47irb> "str" == "str"
true
irb> "str".equal?("str")
false
ということで String#equals?
>>28
そう複雑でもない
プリミティブなクラスを発明しない限り普通は === も eql? も再定義することはない
クラスごとに「おなじとみなしていいもの」の判定を == で定義すればいい
0032デフォルトの名無しさん
2010/03/23(火) 21:49:020033デフォルトの名無しさん
2010/03/23(火) 21:50:29>>32
Object#freeze
0034デフォルトの名無しさん
2010/03/23(火) 21:55:08ない
変数名の再使用を禁止することはできない
オブジェクトの内容が変更されることを防ぐことならできる
のが>>33
0035デフォルトの名無しさん
2010/03/23(火) 22:08:38警告を無視するようなバカには効果はないが
javaと違って基本的にプログラマを疑っていない言語だからそこは割り切ってくれ
003732
2010/03/23(火) 22:25:40ありがとうございます
まだrubyプログラミングに慣れていないので、間違えて再代入しないようにしたかったのですが
ムリぽですね
0038デフォルトの名無しさん
2010/03/23(火) 22:26:580039デフォルトの名無しさん
2010/03/23(火) 22:30:040040デフォルトの名無しさん
2010/03/24(水) 00:00:360041デフォルトの名無しさん
2010/03/24(水) 10:19:100042デフォルトの名無しさん
2010/03/24(水) 10:25:250043デフォルトの名無しさん
2010/03/24(水) 10:25:51t.alive? #=> true or false
004441
2010/03/24(水) 10:52:29ありがとうございます
Rubyのスレッドって寿命があるんですかね
Thread.start {
for i in 1..10000
puts i
end
}
最後まで表示されないので
0045デフォルトの名無しさん
2010/03/24(水) 10:56:51004641
2010/03/24(水) 10:58:410047デフォルトの名無しさん
2010/03/24(水) 11:03:47for i in 1..10000
puts i
end
}
t.join
004841
2010/03/24(水) 11:12:33そこまで、すぐにわかりました
IOに時間がかかるので、GUIを描写を止めないようにしたいんです
def〜endの間でしかスレッドを使えないんですかね?
デーモンみたいな感じで使えたらいいんですが
def hoge
t = Thread.start{}
end
004941
2010/03/24(水) 12:43:59t = Thread.start{
適当な処理(時間がかかる)
storeBinary()
}
end
def storeBinary
大きいデータを書き込む
end
buttonPushが呼び出された時に、GUIを止めたく無いんです
0050デフォルトの名無しさん
2010/03/24(水) 13:09:52GUIのスレッド(ここではbuttonPush)から呼び出すとかじゃダメなのかな。
0051デフォルトの名無しさん
2010/03/24(水) 13:13:05メソッドを抜けたときに参照がなくなってGC対象になってしまう?
0052デフォルトの名無しさん
2010/03/24(水) 14:35:57>>51
生きていればThread.listが参照してる
0053デフォルトの名無しさん
2010/03/24(水) 14:37:14でもThreadクラスオブジェクトが知ってるということはどこかしらで参照してるんだろう
005441
2010/03/24(水) 15:14:58わからないよ
>>52
OS:Gentoo Linux 2.6.32-r7
Ruby:1.8.7 (2010-01-10 patchlevel 249) [x86_64-linux]
GUI: KDE-Smoke 4.4.1(QtRuby)
IO:ネットワークからデータを取ってきて保存する
0055デフォルトの名無しさん
2010/03/24(水) 18:06:29>>50 と同じようなことだと思うけど、ワーカースレッド作って buttonPush で
ワーカースレッドにキューを投げるようにすればいいんじゃないの?
雰囲気は、こんな感じ。(動くかどうかは未確認)
def initialize
@queue = Queue.new
Thread.start do
while q = @queue.pop
storeBinary
end
end
end
def buttonPush
@queue.push(:store)
end
0056デフォルトの名無しさん
2010/03/24(水) 18:34:13def MethodA
処理A
処理B
end
def methodB
処理A
yield
処理B
end
yield以外はまったく同じ操作なんですが、やっぱり2つメソッドを作るしかないんですか?
0057デフォルトの名無しさん
2010/03/24(水) 18:55:120058デフォルトの名無しさん
2010/03/24(水) 19:04:15thx
0059デフォルトの名無しさん
2010/03/24(水) 21:33:34スレッドが回っていないんじゃない?多分。
GUI起動したmainスレッド側で実行権つかみっぱなしな悪寒
GUI起動直前に、タイマーかなんかで定期的に
Thread.passでスレッド回すコード追加してみたら
いけるかもね
006054
2010/03/24(水) 22:05:26GUIでボタンをクリック→スレッドのスタート→Net::HTTPのライブラリーが呼び出される
という順番でプログラムを書いているのですが
Net::HTTP#get()が呼びだされた瞬間に、勝手にスレッドが終了してしまうようです(rubyのバグ?)
シングルスレッドでテストしてみると、何にも問題がありません
ひとまず、違う処理系でも実行してみたいと思います
0061デフォルトの名無しさん
2010/03/24(水) 22:09:56ruby に -d オプション付けてみた?
0062デフォルトの名無しさん
2010/03/24(水) 22:23:400063デフォルトの名無しさん
2010/03/24(水) 22:27:190064デフォルトの名無しさん
2010/03/24(水) 22:29:46例外でスレッド終了か
シングルスレッドだと動いてるみたいだしなさそうだが
0065デフォルトの名無しさん
2010/03/24(水) 22:31:13GUI + スレッドは正しい道のりな気が
0066デフォルトの名無しさん
2010/03/24(水) 22:50:43他の GUIツールキットの事情は知らないけど
wxruby はもろにそれだな
t = Wx::Timer.new(self, 9999)
evt_timer(9999) { Thread.pass }
Thread.new { hoge }
t.start(100)
こんな感じでタイマー使って定期的に Thread.pass してた
006754
2010/03/24(水) 23:17:15ttp://www.darshancomputing.com/qt4-qtruby-tutorial/chapter_01
これくらいでも、例外が発生していました
LinuxでもWindowでも例外が発生します
>>62
簡単なコードを書きました
ボタンを押すと、コンソールに"test"と表示されます
ずーっと"test"と表示されていて欲しい所ですが、2〜3回しか"test"と表示されません
ttp://loda.jp/textliving/?id=28
windowsの人は「gem install -r qtruby4」でインストールしてください
Linuxでは「kde-base/kdebindings-ruby(Gentooの場合)」というパッケージをインストールしました
>>60
ここでは、バグかな〜と思ったのですが
Active Script Rubyでも、同じ所でスレッドが終了してしまいました
どうやら、処理系のバグってのは勘違いっぽそうです
0068デフォルトの名無しさん
2010/03/25(木) 00:40:13ASR1.8.7でそのコードを試した感触だと>>66がビンゴっぽい
0069デフォルトの名無しさん
2010/03/25(木) 00:42:24NetBeansのRubyだけで、おk?
0070デフォルトの名無しさん
2010/03/25(木) 00:55:13インストールに必要なのは Java の実行環境
0071デフォルトの名無しさん
2010/03/25(木) 00:59:12Java で動作してる NetBeans には JRuby が最初から同梱されて使える状態になっているのだ!
だから cruby を別途インストールしなくても Ruby スクリプトそのものは作れるんだ! すごいね!
0072デフォルトの名無しさん
2010/03/25(木) 01:11:46シェルスクリプトとはできることが違うのでしょうか?
シェルスクリプトにできなくてRubyなら出きることって何かありますか?
0073デフォルトの名無しさん
2010/03/25(木) 01:15:400074デフォルトの名無しさん
2010/03/25(木) 01:29:39shell の種類にもよるが四則演算すらできないしカウンタも使えない
``を多用すればruby 以上の事はできるが面倒で煩雑
ruby の方が shell script より楽ってこと
0075デフォルトの名無しさん
2010/03/25(木) 03:17:53動的言語では型付けがいらないからInterfaceを返してキャストとが要らないのは
分かったものの、ダックタイピングというのが分からない
とりあえずInterfaceおいてダックであることを明示、保証するのが当たり前だと
思ってたけど、この必要がない理由と動的言語の性格って関連があるの?
0076デフォルトの名無しさん
2010/03/25(木) 03:40:370077デフォルトの名無しさん
2010/03/25(木) 05:22:260078デフォルトの名無しさん
2010/03/25(木) 06:14:26型チェック(引数や型による代入制限、メソッドの有無等)を行えるが
変数が型を持たないrubyではそれらが意味をなさない
ダックタイピングは乱暴に言っちゃうと
メソッドが無かったり引数があわなければどっちにしろエラーになるんだから
それでええやん、て感じ
0079デフォルトの名無しさん
2010/03/25(木) 08:25:53どう考えたって逆にめんどくさいからな
「○○するメソッド名ってやっぱ××だよな」程度の使われ方になる
クラス作成者とクラス利用者の間における命名規則の紳士協定みたいなもんだ
0080デフォルトの名無しさん
2010/03/25(木) 10:59:420081デフォルトの名無しさん
2010/03/25(木) 15:58:550082デフォルトの名無しさん
2010/03/25(木) 17:18:31・Rubyは動的型付けの言語(=型が実行時に定まる)
型が無いわけではない
この辺が混同されやすいのかなあ
0083デフォルトの名無しさん
2010/03/25(木) 17:29:12型って言われたら「その型って具体的に何を指してるんですか」とか聞かないと駄目かなあ
0084デフォルトの名無しさん
2010/03/25(木) 17:38:40なんとなく同じ様なもののイメージなんだけど
0085デフォルトの名無しさん
2010/03/25(木) 17:41:20先にRuby的言葉遊びから入って得られるものは少ない。
0086デフォルトの名無しさん
2010/03/25(木) 17:43:55問題はオブジェクト指向と称して実はただの「C++の知識」「Javaの知識」だったりするから
0087デフォルトの名無しさん
2010/03/25(木) 18:48:07「いやこれはたぶんRuby依存の特有の話だな…」
とか気づけるからまだマシなような気もする
Javaの実装がオブジェクト指向だと思い込んでる人は結構困る
0088デフォルトの名無しさん
2010/03/25(木) 18:52:33ちっとも理解が促進されないし。
既に解ってる連中同士の内輪ネタでしかない。
0089デフォルトの名無しさん
2010/03/25(木) 18:52:38こんな感じなんだ〜程度なら十分だけど
0090デフォルトの名無しさん
2010/03/25(木) 18:59:41オブジェクト指向は実行しないからこそ美しい
実行のための仕組みは邪魔
0091デフォルトの名無しさん
2010/03/25(木) 19:08:430092デフォルトの名無しさん
2010/03/25(木) 19:19:12なるほど
振舞いやパターンを明示することを積極的に排除する理由があるわけじゃなかったのか
いわれてみれば静的な型に頼らないってことと振舞いをまったく規定しないってことには大きな開きがあったね
>>76-77
instance_evalとか使いまくりがデフォなの?
0093デフォルトの名無しさん
2010/03/25(木) 19:55:170094デフォルトの名無しさん
2010/03/25(木) 20:03:110095デフォルトの名無しさん
2010/03/25(木) 20:06:100096デフォルトの名無しさん
2010/03/25(木) 20:41:58主要なフリーウェアでスクリプト書くときなんか大概Python主流だし
RubyもPythonも両方やるのが吉
0097デフォルトの名無しさん
2010/03/25(木) 22:17:440098デフォルトの名無しさん
2010/03/25(木) 22:31:570099デフォルトの名無しさん
2010/03/25(木) 22:35:11真面目な質問だがOOPの基礎を学ぶのが簡単な言語はどれ?
OOPなんてcode書かなきゃわかるようにならん
codeを書きやすいか,書く気になるかどうかのトレードオフが大きいからね
0101デフォルトの名無しさん
2010/03/25(木) 23:13:35いや、冗談半分本気半分なんだけど、OOPとはなんぞやってのが
あまりにも難しすぎる。
オブジェクトが自立性を持っていて、受け取ったメッセージを自分で判断して
振舞う(メッセージを拒絶することも含む)ような処理系でのプログラミングが
OOPなんだぜ! という学派からすれば、Rubyはまさにそれではある。
0102デフォルトの名無しさん
2010/03/25(木) 23:14:57お薦めはCだ
0103デフォルトの名無しさん
2010/03/25(木) 23:28:43いきなりRubyを使うってどんな感じなんだろう
0104デフォルトの名無しさん
2010/03/26(金) 00:51:26俺はいきなりRubyでも良いと思うけどな
まずプログラムをどんどん書かないと
遊びでも良いから何か実用性を見出せないと強制しないと続かないと思う
昔はBasicで入った人も多いし(俺はFortran→Cで入ったが)
0105デフォルトの名無しさん
2010/03/26(金) 01:01:25家では本を読むだけだから力がつかない。
やっぱ仕事でプレッシャーかからないとダメ。
0106デフォルトの名無しさん
2010/03/26(金) 01:04:14作りたいものが特にないのならRubyのことなんて忘れて他のことやれ
もし本当にRubyのようなものが必要なのなら、たとえ今離れてもやっぱり戻ってくる
0107デフォルトの名無しさん
2010/03/26(金) 01:07:58WEBアプリをSwingやFlexでとか、ぶっちゃけ楽しい。
サーバサイドはRailsでもPHPでもとにかく楽できるし、その辺全部無料で
Windowでも完結できるし。
で、その辺から入ると、最後までCにたどり着かない可能性が高いと。
0108デフォルトの名無しさん
2010/03/26(金) 01:35:20Java使ってるけど正直プログラミング初心者には難しいのでは
Rubyの方がまだ簡単で何かできる感じがするが
たとえばファイル名を整理するとかファイルの中身を整形しなおす
とかデータ合わせるとか実用的でそんなに難しくない
これをJava+Swingでやれといったら初めは大変だと思うんだが
0109デフォルトの名無しさん
2010/03/26(金) 01:39:36> とかデータ合わせるとか実用的でそんなに難しくない
いや、遊びでそんなことしないし
遊びと言えば、なんか表示して動かす。BASICから入った人なんかは
特にそうじゃね?他には音を鳴らすってパターンもあったけどもさ
そう言う意味で、SwingやらFlashやらって言ってみた
0110デフォルトの名無しさん
2010/03/26(金) 01:42:11JavaやC++はあらゆるパラメータを自力で全部指定できるのがメリットだが、初心者にはただの負担だ
0111デフォルトの名無しさん
2010/03/26(金) 01:44:23もちろん、BASICマガジンに載ってたコードの事だが
0112デフォルトの名無しさん
2010/03/26(金) 02:01:19とりあえず何か書いてから考察なり質問なりすべきw
どうしたらコード書くか言語学習するかなんて100%自分の動機だけの問題じゃんね
0113デフォルトの名無しさん
2010/03/26(金) 02:29:46かといってrubyも変にperl互換な所で、変な癖がつくのは変わらないけど。
ゆるゆるから厳しい所はキツいので、最初から厳しく型宣言必要な言語のほうが、いいかもね。後から緩く成る分には楽で楽しく成るだけだし。
いろいろまんべんなく使ってみるのが無難かもね。
0114デフォルトの名無しさん
2010/03/26(金) 02:32:450115デフォルトの名無しさん
2010/03/26(金) 02:54:350116デフォルトの名無しさん
2010/03/26(金) 03:01:20かといって羊羹も変にこんにゃく互換で変なクセがつくのは変わらないけど
ゆるゆるから厳しいところはキツイので最初から厳しく型成形必要な射出のほうがいいかもね
0117デフォルトの名無しさん
2010/03/26(金) 03:04:450118デフォルトの名無しさん
2010/03/26(金) 09:18:26コンパイル一つだって失敗するかも知れないのに
いきなり高い目標設定せずにとにかく自分が入りやすい言語を使う方が良いと思う
0119デフォルトの名無しさん
2010/03/26(金) 09:52:340120デフォルトの名無しさん
2010/03/26(金) 11:07:01tkだとスレッドに問題が発生することないのか
教えてエロい人!!
0121デフォルトの名無しさん
2010/03/26(金) 11:14:00RubyのC言語ファイルの最初のコンパイル時にtkが有効にされていて、
なおかつ同じパソコンにTcl/Tkまたはtklib相当のものが別途インストールされていれば動作する
0122デフォルトの名無しさん
2010/03/26(金) 11:21:33他人にウィンドウを提供するために使うようなもんでもない
0123デフォルトの名無しさん
2010/03/26(金) 11:26:24選択肢が多すぎて逆にどれを選んでいいかわからん
0124デフォルトの名無しさん
2010/03/26(金) 12:04:48rails以外は何にも作れないじゃん
0125デフォルトの名無しさん
2010/03/26(金) 12:15:21Rubyは使わない
0126デフォルトの名無しさん
2010/03/26(金) 12:17:40××するのにはRubyは不便
○○に入るのが自分用スクリプトの作成
××に入るのがウィンドウでGUI
0127デフォルトの名無しさん
2010/03/26(金) 12:19:080128デフォルトの名無しさん
2010/03/26(金) 12:25:22早く気付けて良かったですね
0129デフォルトの名無しさん
2010/03/26(金) 12:29:07どこが中途半端なのかわからない
0130デフォルトの名無しさん
2010/03/26(金) 12:31:44ウィンドウを作るということに意味があると考えているのだろ
0131デフォルトの名無しさん
2010/03/26(金) 12:34:130132デフォルトの名無しさん
2010/03/26(金) 12:36:370133デフォルトの名無しさん
2010/03/26(金) 12:38:33・ググっても網羅的な情報がない
・スレでGUI系の質問を見かけるたびに陰気臭い人にネチョネチョとからまれている
0134デフォルトの名無しさん
2010/03/26(金) 12:38:36言語の問題というよりは
使ってる人達の問題じゃないかな
GUIを便利にしようとするモチベーションがないし
そういう芽を自ら摘んでしまう独特の文化がある
0135デフォルトの名無しさん
2010/03/26(金) 12:39:530136デフォルトの名無しさん
2010/03/26(金) 12:41:030137デフォルトの名無しさん
2010/03/26(金) 12:44:43必ずしも意味があるとは限らない
標準入力から標準出力への流れがプログラムだ
この両方が保証さえされていれば、ウィンドウは必須ではない
>>133
WindowsのAPIべったりだったり特定のGUIバインディング限定の話をだらだらされるからだよ
Railsの話をこのスレでしないのと同程度には、GUIの話はここでは向かない
Ruby on Railsは全く別物でRuby本体の機能あんま関係ないよな
と
RubyのGUIシステムは全く別物でRuby本体の機能あんま関係ないよな
はほぼ同じ
GUIのスレはこことかもあるぞ
ttp://pc12.2ch.net/test/read.cgi/tech/1155031689/
0138デフォルトの名無しさん
2010/03/26(金) 12:46:05さっそくからんでるしw
0139デフォルトの名無しさん
2010/03/26(金) 12:48:23それて、windows限定でしょ
意味不明なスレに飛ばそうとするなよ
0140デフォルトの名無しさん
2010/03/26(金) 12:50:140141デフォルトの名無しさん
2010/03/26(金) 12:53:58なおかつRubyの知識が初心者スレレベルという人を見つけるくらいなら宝くじに当たったほうが簡単
Linuxのツールキットが使えるような人はRubyも使い慣れてて本スレで聞きそうだと思う
0142デフォルトの名無しさん
2010/03/26(金) 12:56:36問題が本質的にグラフィカルな場合(画像編集とか)
現状じゃRubyって感じではないような……
あれば便利なのは間違いないけど
JRubyからSwingを使うアプローチとかは面白そうではある
0143デフォルトの名無しさん
2010/03/26(金) 12:56:51という認識でFA
Rubyユーザーにとって、GUIはRubyを使い慣れたあとにGUIを司るライブラリ単体で学習して使うもの
Ruby/Tkなら、Tkの使い方を勉強する
Tkの勉強だから、Rubyスレは関係ない
Ruby/GTKなら、GTKの使い方が必要で、やっぱりRubyスレは無関係
GUIライブラリを呼ぶような部分は、慣れたRubyユーザーなら特に質問が出るような障害にはならないと
0144デフォルトの名無しさん
2010/03/26(金) 12:59:320145デフォルトの名無しさん
2010/03/26(金) 13:00:58お前2ch使うの今月が初めてか
0146デフォルトの名無しさん
2010/03/26(金) 13:03:01という図式は毎年長期休みにたいていのスレで見られるもんだと思われ
たいていの場合、前者が誤りで、後者が大人気ない
0147デフォルトの名無しさん
2010/03/26(金) 13:04:370148デフォルトの名無しさん
2010/03/26(金) 13:06:03それ、俺だよ
0149デフォルトの名無しさん
2010/03/26(金) 13:07:40初心者スレまで来て何やってんだか
0150デフォルトの名無しさん
2010/03/26(金) 13:10:36「RubyでGUIなんて現状誰もやらないし、やっても中級者が趣味として嗜むレベルなんだよ」
というようなことは粘り強く啓蒙していくべきかと
勘違いしてしまう被害者は少なければ少ないほどいい
Ruby初心者にもGUI言語初心者にもわかりやすいGUIバインディングや解説を作るんだという志は大層立派だが、
でもこのスレとは無関係なので完成したら改めて教えてくれ
0151デフォルトの名無しさん
2010/03/26(金) 13:29:150152デフォルトの名無しさん
2010/03/26(金) 13:31:350153デフォルトの名無しさん
2010/03/26(金) 13:32:19一般的なスクリプト用途とGUI用途とOS跨いだ移植に向いててそこそこ解説のある言語はPythonだけだな
「たったひとつの言語」をスクリプト言語に求めるならPythonやれ
本当はC++がいいんだが残念ながらスクリプト言語ではない
0154デフォルトの名無しさん
2010/03/26(金) 13:32:20同感
0155デフォルトの名無しさん
2010/03/26(金) 13:33:040156デフォルトの名無しさん
2010/03/26(金) 13:35:08そんなに素晴らしいなら、作ってみてから
また来てくれ。
1. よし言語バインディングを調べて
2. 各ライブラリのラッパを書いて(これ膨大すぎるだろ)
3. ど、ドキュメントを書くぞ
大抵は1.の段階でほかの方向なり模索すると
思うんだな…(2までやるのでもかなり凄い。下手したら俺言語作るよりよほど難易度高いという…
0157デフォルトの名無しさん
2010/03/26(金) 13:37:59それ言ってしまうとジャスト1時間前の>>126-127に戻ってまたループに
なんかGUI否定の否定派がいる雰囲気
RubyはGUIに向かない、という事実を述べることのどこがそんなに気に食わないんだ…
0158デフォルトの名無しさん
2010/03/26(金) 13:39:45Windows使えってことか。
0159デフォルトの名無しさん
2010/03/26(金) 13:39:45質問に答えることもなく、〜〜すべきでないと言いくるめようとする
0160デフォルトの名無しさん
2010/03/26(金) 13:40:48普通に使ってるわボケ
0161デフォルトの名無しさん
2010/03/26(金) 13:41:11Rubyしか使えない人でなおかつGUIだけをやってる人がいるんだと思う
両方一気に否定されて立つ瀬がない
0162デフォルトの名無しさん
2010/03/26(金) 13:42:26ウィンドウズの話は異端。地獄に堕ちるよw
0163デフォルトの名無しさん
2010/03/26(金) 13:43:31>>160
それがスレ相当のRuby初心者にもできるのなら是非
0164デフォルトの名無しさん
2010/03/26(金) 13:43:440165デフォルトの名無しさん
2010/03/26(金) 13:45:400166デフォルトの名無しさん
2010/03/26(金) 13:47:04正直、puts したらアラートウィンドウがポップアップするくらいになってるべきだと思う
0167デフォルトの名無しさん
2010/03/26(金) 13:50:12現在どうなっていて、初心者はどうすべきかだけ教えてくれ
0168デフォルトの名無しさん
2010/03/26(金) 13:54:26自分で調べられない人が使えるほど楽ではないから、諦めた方がいいと思う。
英語にアレルギーがなくて、自分で調べられる人なら、問題無いように思う。
0169デフォルトの名無しさん
2010/03/26(金) 13:56:05GUIライブラリ本体やRubyライブラリのインストールにつまづく初心者は潔く諦めて他の方法を探す
使い始めて分からないことはGUIライブラリ本体の勉強をすれば分かるだろう
Rubyに関係ない質問が無ければここもそんなに変な空気にならんだろう
0170デフォルトの名無しさん
2010/03/26(金) 13:59:42Ruby/○○ の ○○ の使い方を自分で勉強できるなら問題はない(TkとかQtとか、Win32APIとか)
これはRubyとは無関係で、世間様一般では○○単体で使われていて、専用の参考書や解説がある
ただ、GUI提供ライブラリの利用初心者には普通に難しいとは思う
この部分は「Rubyは初心者にもけっこう簡単」という(実は間違った)煽り文句の適用範囲外
0171デフォルトの名無しさん
2010/03/26(金) 14:05:340172デフォルトの名無しさん
2010/03/26(金) 14:07:460173デフォルトの名無しさん
2010/03/26(金) 14:12:550174デフォルトの名無しさん
2010/03/26(金) 14:14:42やっぱりウィンドウズでやるしかないのか。
0175デフォルトの名無しさん
2010/03/26(金) 14:18:34Ruby初心者かつTkの知識がない人にこれが理解できるとはとーてー思えん。
せめてどっちかに習熟しててくれないと発散しすぎて無駄に大変だと思う。
変に分離性が高いので、
「ここからRuby」「ここからTkを呼ぶRuby」「GUI連携はTk独自でRuby無関係」
という…
Rubyに慣れてると学びやすいという説に一票、あと>>173。
0176デフォルトの名無しさん
2010/03/26(金) 14:22:540177デフォルトの名無しさん
2010/03/26(金) 14:25:450178120
2010/03/26(金) 14:29:32結局、お前らは何だかんだ言ってGUIをやったことが無いんだな
0179デフォルトの名無しさん
2010/03/26(金) 14:31:520180デフォルトの名無しさん
2010/03/26(金) 15:20:580181デフォルトの名無しさん
2010/03/26(金) 15:35:15同感
Ruby で無理して GUI やっちゃうと
環境依存になって結局後々苦労するのが見えてる
Python でやっとけばびっくりするほど簡単にどこでも動く
0182デフォルトの名無しさん
2010/03/26(金) 15:39:340183デフォルトの名無しさん
2010/03/26(金) 17:38:130184デフォルトの名無しさん
2010/03/26(金) 18:09:39browserForm = Form.new()
[browserForm].each do |f|
f.Text = 'hoge'
end
の様に使われているコードがあるのですが、この場合は
どういう意味なのでしょうか?
0185デフォルトの名無しさん
2010/03/26(金) 18:11:57array.each 〜
を省略して、生成と同時にメソッドコールしてるだけ
0186デフォルトの名無しさん
2010/03/26(金) 18:16:55質問のために書いたコードや操作対象が複数のときに一括処理する場合に備えているならともかく
このコード自体はこれでいい
browserForm = Form.new()
browserForm.Text = 'hoge'
0187デフォルトの名無しさん
2010/03/26(金) 19:10:37ありがとうございます。
おっしゃる通り一括処理で使われています。
ruby の理解が浅いため何となく分かった程度ですが、
brouseForm = Form.new()
brouseForm.hoge = 〜
といういくつかの処理を f.hoge という形で見やすくしている
と考えれば良いのでしょうか。
0188デフォルトの名無しさん
2010/03/26(金) 19:19:36ループや関数(メソッド)化して同じ記述を避ける(DRY原則)のほうかな
puts "a"
puts "b"
puts "c"
["a", "b", "c"].each {|str|
puts str
}
3要素1項目ぐらいだから大差ないように見えるけど
これが10要素5項目ぐらいになったらバカバカしいことになる
つーかローマ字やめれw
0189デフォルトの名無しさん
2010/03/26(金) 19:20:37どっちもRubyの主流から外れてるので書くときの参考にはしないように
配列に関してはオブジェクトが「入ってる」という理解でいい
(余裕があるならラベル入りの箱と考えるといいんだが)
箱からいっこ取り出すよ機能のeachで入ってるオブジェクト取り出して、
そのオブジェクトのメソッドを利用してる
0190デフォルトの名無しさん
2010/03/26(金) 19:31:18で他の言語でいうletみたいなことはできるけど、普通は使わんなw
0191デフォルトの名無しさん
2010/03/26(金) 20:56:33(コンパイルする方法がわからなくて途方に暮れながら)
0192デフォルトの名無しさん
2010/03/26(金) 21:02:29GUI論争するのっておかしい気がするな
0193デフォルトの名無しさん
2010/03/26(金) 21:03:350194デフォルトの名無しさん
2010/03/26(金) 21:10:00だってRubyのGUIでスレッドの話するのめんどくさいもん
ネイティブのTkのスレッドとユーザーレベルのRubyのスレッドの両方の話せんといかん
0195デフォルトの名無しさん
2010/03/26(金) 21:13:35前処理が必要ないソース群と必要なソース群があるときruleはどう書けばいいんでしょうか?
下の例で、Bxのために前処理のルールをrule '.src' => '.pre'と書くと前処理が不要なAxまで前処理しようとします。
XはA1.out...An.out,B1.out...Bn.outに依存し、makeX A1.out A2.out...Bn.out -o Xで作成
A1.out...An.outはA1.src...An.srcに依存し、それぞれ makeOut Ax.src -o Ax.outで作成
B1.out...Bn.outはB1.src...Bn.srcに依存し、おなじく makeOut Bx.src -o Bx.outで作成
B1.src...Bn.srcはBn.pre...Bn.preに依存し、 makeSrc Bx.pre -o Bx.srcで作成
Ax,Bxはファイルが複数あることを示すため書いているだけで、ファイル名が連番ということではありません
0196デフォルトの名無しさん
2010/03/26(金) 21:32:13rule /B.*¥.src/ => proc {|t| t.sub('src', 'pre') }
0197デフォルトの名無しさん
2010/03/26(金) 21:44:15Regexp.union(FileList['*.pre'].pathmap('%n.src'))
などと工夫してみて。
0198デフォルトの名無しさん
2010/03/26(金) 22:06:43FileList['*.pre'].each do |pre|
file pre.pathmap('%n.src') => pre
end
のほうがベタだけどすっきり。
0199デフォルトの名無しさん
2010/03/26(金) 23:57:10春だからな、仕方がないんだよ
ここの人はプログラミングした事無いのに、
そこら辺の宗教戦争が好きだから
0200デフォルトの名無しさん
2010/03/27(土) 00:19:010201デフォルトの名無しさん
2010/03/27(土) 00:19:02知らないことは見てるだけでいい
0202デフォルトの名無しさん
2010/03/27(土) 00:37:34GUI否定とかやられるとがっかりするよな
GUIスレが立ったみたいだからそっちが機能してくれればいいけど難しいか
0203195
2010/03/27(土) 00:42:18単純には書けないんですね
0204デフォルトの名無しさん
2010/03/27(土) 00:44:34どう言葉で表現してもそもそも初心者向けではないはずなのだが、どうもそこに引っかかってる人がいる模様
初心者にもできるべきだと考える理由って何だろうね
0205デフォルトの名無しさん
2010/03/27(土) 00:47:08彼らはGUI肯定をしているわけではないのです
ほんのちょっぴり、初心者であったときのことを忘れてしまっているだけなのです
ここは初心者スレなのに、自分ができるからって相手もできると思ってしまってる
0206デフォルトの名無しさん
2010/03/27(土) 00:55:29自業自得だ
0207デフォルトの名無しさん
2010/03/27(土) 01:08:290208デフォルトの名無しさん
2010/03/27(土) 01:15:40http://pc12.2ch.net/test/read.cgi/tech/1269609576/
0209デフォルトの名無しさん
2010/03/27(土) 01:52:19もうアホすぎて死んで欲しいわ
0210デフォルトの名無しさん
2010/03/27(土) 01:52:54ruby-gnome2と呼べばいいのかruby-gtk2と呼べばいいのか悩むことはある
0211デフォルトの名無しさん
2010/03/27(土) 02:06:10Rubyコミュニティそのままだな
0212デフォルトの名無しさん
2010/03/27(土) 04:00:11信者もウィンドウズ使わずに過ごせばいいとしか思ってない。
ルビー使いたければ、教祖と同じデビアン使えば患部も目指せるかもよ。
http://pc11.2ch.net/test/read.cgi/linux/1267107714/
Debian GNU/Linux スレッド Ver. 63
http://pc11.2ch.net/test/read.cgi/linux/1154631461/
Debian原理主義者テラモエス
http://pc11.2ch.net/test/read.cgi/linux/1162356771/
Debian原理主義者ペタキモス
http://pc11.2ch.net/test/read.cgi/linux/1178083456/
【ubuntu】Debianは終わった?【knoppix】
http://pc11.2ch.net/test/read.cgi/linux/1237256190/
Debian-Liveに決めました
0213デフォルトの名無しさん
2010/03/27(土) 08:53:310214デフォルトの名無しさん
2010/03/27(土) 08:55:020215デフォルトの名無しさん
2010/03/27(土) 09:07:110216デフォルトの名無しさん
2010/03/27(土) 09:13:045年遅かったスペシャルマンと5年早かったカナディアンマンのコンビ
0217デフォルトの名無しさん
2010/03/27(土) 09:24:16Delphiは言語自体はよかったんだけどねえ
過去形で話さなければならないのがつらい所
黒歴史ではない
ただの過去の遺物
Delphiのコンポーネントの知識があるなら選択肢になるかと思う
0218デフォルトの名無しさん
2010/03/27(土) 11:11:47いきなりクソスレ
ワロタ
0219デフォルトの名無しさん
2010/03/27(土) 14:47:11def a
…
end
def b
a.scan(re)
end
def re
/…/
end
end
というのを rspec とかでテストしたいです
a メソッド(と re メソッド)に依存してる b メソッドのテストはどうすればいいですか?
a がいくつかの値をとる場合の b のテストを書きたいです
b のテストで必要になるような値を a に返させるような初期値を与えるべきですか?
それとも全メソッド引数で渡すようにするべきですか?
0220デフォルトの名無しさん
2010/03/27(土) 15:04:59c.stub!(:a).and_return('ほげふが')
c.stub!(:re).and_return(/ふが/)
c.b.should ...
0221デフォルトの名無しさん
2010/03/27(土) 17:58:47オタクの悪いところだよなぁ
俺はわかるから、分からないお前らがだめなんだよ
みたいな
クソ根性論だよ
0222デフォルトの名無しさん
2010/03/27(土) 18:02:32誰もそんなこと言ってない気がするんだが。
0223デフォルトの名無しさん
2010/03/27(土) 19:45:29>>[1, 2, 3].each do |i|
>> puts i
>>end
>>[1,2, 3].each { |i| puts i }
この二つを実行すると同じ結果が出てくるけど
書き方が違うだけ(『do〜end』が『{〜}』になった)って事でいいのかい?
0224デフォルトの名無しさん
2010/03/27(土) 19:50:36そこに疑問持つくらいならまとまった解説をきちんと読んどいたほうがいいぞ
ちなみに回答はYES
do … end は { … } のブロックに置き換えることができる
全く似ていないものに begin … end があるがこれは置き換えができない
{ … } は Hash リテラルを記述するのにも使用されるがこれを end つき構文に置き換えることもできない
0225デフォルトの名無しさん
2010/03/27(土) 19:55:35うn、ありがとう&ごめん
本とか買わずにリファレンスだけ読んでて、唐突に.each doとか出てきて
『each』と『each do』って二つあんのか!ってびっくりしてしまってな
0226デフォルトの名無しさん
2010/03/27(土) 20:01:57end で終わるならなんでもカーリーブレースで置き換えられると思ってしまう人が結構いるので注意
どちらかというと do の存在のほうに注目してほしいんだが、なぜか end にばかり目が行く模様
0227デフォルトの名無しさん
2010/03/27(土) 20:21:11public void run(){
//適当な内容
}}
javaではこのようにクラスをオーバーライドすることができますが、
Rubyでこのような事をやるにはどうすればいいんですか?
0228デフォルトの名無しさん
2010/03/27(土) 20:33:09ただの定数にクラス定義(とメソッド定義)が入ってるだけだから、
継承するだけで別のクラスオブジェクトになれるはず
元クラスの動作を変更せずに安全にメソッド追加したいだけなら
クラスを継承してからクラス定義を再オープンしてdef追加するかオブジェクトにextendでいいんじゃね
0229227
2010/03/27(土) 20:42:461つのメソッドをオーバーライドできればいいんです
しかも、そのクラスは1回しかインスタンス化しません
なのでわざわざ、面倒なことはしたくないんです
0230デフォルトの名無しさん
2010/03/27(土) 20:46:35obj = Runnable.new
def obj.run
puts "foo"
end
0232デフォルトの名無しさん
2010/03/27(土) 20:56:33うひょうこの定義のしかた超きめえ今度から使おう
素直に extend する人用
module RunExtender
def run; @run; end
end
r = Runnable.new
r.extend(RunExtender)
r.run
0233デフォルトの名無しさん
2010/03/27(土) 21:00:57発想の順番からいうと、特定のインスタンスだけで使えるように
定義するのが特異メソッド。
で、RubyのクラスってのはClassクラスのインスタンスだから、
その特異メソッドはいわゆるクラスメソッドの位置づけに相当するということ。
0234デフォルトの名無しさん
2010/03/27(土) 21:05:090235デフォルトの名無しさん
2010/03/27(土) 22:33:45どうにかなりませんか?
0236デフォルトの名無しさん
2010/03/27(土) 22:43:16>>231と仮定すると、どうにもならない
そもそも所属が違うから、特異メソッドの存在を知らないインスタンスメソッドは特異メソッドにアクセスできない
そうでないのなら、特異メソッドは new されたオブジェクトではなく
new するのに使った Class オブジェクトの持ち物なので self.class.hoge で使え
0237デフォルトの名無しさん
2010/03/27(土) 22:44:57thx
0238デフォルトの名無しさん
2010/03/27(土) 22:45:24irb> class Object; def hello; hello2; end; end
irb> o = Object.new
irb> def o.hello2; puts "hello"; end
irb> o.hello
hello
0239デフォルトの名無しさん
2010/03/27(土) 22:52:120240デフォルトの名無しさん
2010/03/27(土) 22:53:26どういうメソッドが欲しいの?
0241デフォルトの名無しさん
2010/03/27(土) 23:02:07attr_writerを指定すると読み書き両方ともできなくなったので
根本的に配列にattr_readerやwriterを使うのは間違いなのですか?
0242デフォルトの名無しさん
2010/03/27(土) 23:05:09class Array
attr_reader ??? # ここに何書いたの?
end
0243デフォルトの名無しさん
2010/03/27(土) 23:07:14class Array
attr_writer :hoge
end
a = []
a.hoge = 10
a.instance_variables #=> [:@hoge]
のようにできるけど。
0244239
2010/03/27(土) 23:08:53readerArray = Array.new(3, 0)
attr_reader :readerArray
0245239
2010/03/27(土) 23:17:04こういう感じだとクラス内の配列は読み取りや書き込み専用にはならないのでしょうか
class Foo
def initialize
@readerArray = Array.new(3, 0)
@writerArray = Array.new(3, 0)
end
attr_reader :readerArray #ダメ
attr_writer :writerArray
end
0246デフォルトの名無しさん
2010/03/27(土) 23:32:41オブジェクトを作ってみる。
> f = Foo.new #=> #<Foo:0x000001010e23b8 @readerArray=[0, 0, 0], @writerArray=[0, 0, 0]>
@writerArray
書き込みアクセサで書き換える。
> f.writerArray= [1,2,3] #=> [1, 2, 3]
読み出しアクセサはない。
> f.writerArray #=> NoMethodError: undefined method `writerArray' for #<Foo:0x000001010e23b8>
リフレクションで取得は可能。
> f.instance_variable_get(:@writerArray) #=> [1, 2, 3]
@readerArray
書き込みアクセサはない。
> f.readerArray = [10, 20, 30] #=> NoMethodError: undefined method `readerArray=' for #<Foo:0x000001010e23b8>
リフレクションで書き換えることは可能。
> f.instance_variable_set(:@readerArray, [4,5,6]) #=> [4, 5, 6]
読み出しアクセサで取得。
> f.readerArray #=> [4, 5, 6]
attr_reader しかしていないと言っても、それで得られたオブジェクトが読み取り専用になっているわけではないので、
> f.readerArray.pop #=> 6
> f.readerArray #=> [4, 5]
のようなことは起こる。
0247デフォルトの名無しさん
2010/03/28(日) 00:03:47attr_* は同名のインスタンス変数を返す(か代入する)メソッドを自動で作成するだけ
def arr
@arr
end
def arr=(a)
@arr = a
end
メソッド定義を自力で書くのを避けたいときに使うだけで、特別な動作はしない
def を書く代わりにできるだけ
0248239
2010/03/28(日) 00:11:30なるほど
アクセッサで指定した配列オブジェクトそのものは読み、書き専用になるけれども、
その中身のwriterArray[0]とかはwriterArrayのオブジェクトから読み込みができないので
各要素オブジェクトにもアクセスできなくなるので、writeArray[0] = 1 はできなくなり
readerArrayの場合は、readerArrayの読み込みはできるのでreaderArray[0]にアクセスできるけれども
readerArray[0]の要素オブジェクト自体は読み取り専用じゃないので readerArray[0] = 1 ができてしまうんですね
大変参考になりました
>>247
やっぱり横着してはならないのですね
夜遅くまでありがとうございました
0249デフォルトの名無しさん
2010/03/28(日) 00:15:03こんだけ広まったらもう混乱の元にしかならん
0250デフォルトの名無しさん
2010/03/28(日) 00:15:55できれば携帯におくりたいんだけどできるかな?
ただしSMTPサーバがない状態で。
VB.NET & XP Professionalなら簡単にできたんだど。
だれかそのあたり詳しい人いますか?
条件は
XP Home Edition
携帯にmail送信。(異常時に)
SMTPサーバなし(外部サーバ通じてではできるらしい。VB.NET & Professional
なら不要)
0251デフォルトの名無しさん
2010/03/28(日) 00:15:58返ってくる配列に添え字アクセスする意味。
attr_writer :writeArray では writeArray= というメソッドしか
作られないからダメってことですな。
0252デフォルトの名無しさん
2010/03/28(日) 00:20:48Rubyではスネークケースで書いて欲しい
そういやスネークケースって言葉ぜんぜん流行らないよね
write_array みたいな全小文字でアンダースコア区切りの書き方ね
0253デフォルトの名無しさん
2010/03/28(日) 00:24:46require 'net/smtp'
使い方はマニュアル読め
0254デフォルトの名無しさん
2010/03/28(日) 00:25:48禿げ同。
初心者がスネークケースで質問するスレ立ててよw
0255デフォルトの名無しさん
2010/03/28(日) 00:29:24Rubyではあらゆる点でアンダースコア区切りが主流だと思って
ライブラリのトップファイル名をアンダースコア区切りにしたら叩かれたでござる
require 'hoge_lib' ではなく require 'hoge-lib' となるように作ろうね
require しないファイルはアンダースコア区切り
0256デフォルトの名無しさん
2010/03/28(日) 00:30:490257デフォルトの名無しさん
2010/03/28(日) 00:59:00クラス命はFooBar
メソッド命もFooBar
変数名はfoo_barって感じで書いてた
こういうの嫌われるの?
0258デフォルトの名無しさん
2010/03/28(日) 01:00:21間違えた
クラス名 => FooBar
メソッド名 => fooBar
変数名 => foo_barでした
0259デフォルトの名無しさん
2010/03/28(日) 01:03:37マジか。アンダースコアで作っちゃった。
でも、active_recordとかもアンダースコアだし、いいよね?
ちなみに、その指針みたいなのどっかに書いてある?
0260デフォルトの名無しさん
2010/03/28(日) 01:16:19Rubyではメソッドを呼ぶ行為とローカル変数を呼ぶ行為は字面で区別しない
LCCを使用するのは特定の外部ライブラリのラッパーとかの特殊用途向け
メソッド名と変数名は全部小文字でアンダースコア区切りが普通
ちなみに大文字メソッド名でも定義はできるし動作もする(ただしレシーバ必須で self.Hoge 等と呼ぶ)
余談だが日本語でもできる(文字エンコーディングに注意)
>>259
そもそも active_support なのか active-support なのか activesupport なのかわかりにくいから
新しいメソッドはもうまとめようぜという話になったと記憶
0261デフォルトの名無しさん
2010/03/28(日) 01:21:580262デフォルトの名無しさん
2010/03/28(日) 01:25:50別に従わなくてもいい
全部のメソッド名を日本語にしても構わない
DSLで自分のルールを作るのさえ自由だ
end を } にするように書き換えてコンパイルすることを別に止めはしない
ただ、それは孤児になる
0263デフォルトの名無しさん
2010/03/28(日) 02:00:57JavaBeans が成立し、開発環境でそれらを扱えるようになった。
マウスのD&Dで、イベント定義をしたり。
引数なしのコンストラクターを定義して、
setter/getter とか boolean は isProperty() にするとかそんなの。
命名にも、そういう実益があればいいんだけど、単にスタイルの問題だと従う意味が分からない。
0264デフォルトの名無しさん
2010/03/28(日) 02:13:14perl互換にしたがる傾向が強いが。
0265デフォルトの名無しさん
2010/03/28(日) 02:24:29Rubyは本当に本当に自由に書くことができるので、逆に記法が散逸してしまったのだな
スタイルというよりはデファクトの決定
読めない上に入力方法もわからない外国語UTF-8クラス名の外国語UTF-8メソッドを使いますとか言われても困る
rubygems は gem install のインストールディレクトリ名と require のファイル名を別個にすることができるので
たいそう混乱した
これは Hoe や Jeweler のサポートで軽減されてきている
別に従わなくてもいい
特に外部に公開しない場合は
公開するような場合でも、別に守らなくても構わない
ただし、それに伴って何か不利益を被ったとしてもそりゃ自己責任で
俺と違うやり方の世界のほうが悪いんだと叫んでくれ
0266デフォルトの名無しさん
2010/03/28(日) 08:12:010267デフォルトの名無しさん
2010/03/28(日) 09:54:00Pythonには、LinuxでもMacでもWindowsでも動くことができるGUIライブラリが標準で用意されてるんでしょうか。
0268デフォルトの名無しさん
2010/03/28(日) 10:04:22Ruby/TKはTcl/Tkというものを使ってて、Tkの勉強が必要
Ruby/GTKはGTKの、Ruby/QtはQt(Qt4)そのものの勉強をする必要がある
Rubyの文法とか考えとかそういうものとは全く別のものを勉強しなければならない
「GUIはRails並に別」と言われる所以
「わざわざRubyから呼んで苦労背負い込むくらいなら
直接そのプログラミング言語を学んで直接起動させたほうがマシじゃね」という
0269デフォルトの名無しさん
2010/03/28(日) 10:07:09これに全く答えてないわけだが。
Pythonには間借りでないGUIライブラリがあるわけ?
0270デフォルトの名無しさん
2010/03/28(日) 10:15:22はっきり言ってしまうと
Pythonの場合
wxPythonならwxWidgetsは覚える必要はないし
PyQtならQtを覚える必要がない
TkinterだけはTcl/Tkを知らないと使えないとは思うけど
0271デフォルトの名無しさん
2010/03/28(日) 10:35:23Tcl知ってる人がTk使えるようになるのと
Ruby知ってる人がRuby/Tk使えるようになるのに必要な勉強の量は大差ないだろう
問題はLinuxでRuby/Tkが使えるようになるまでだけど
RubyでGUIやりたいって言ってる人はたいていWindowsユーザなんじゃないか
だとすればActiveScriptRuby入れてActiveTcl入れるだけでRuby/Tkが使えるようになるから
PythonでTkinter使うのとたいしてかわらない
とういわけでRubyでGUIスレの発展を切に願います
0272デフォルトの名無しさん
2010/03/28(日) 10:39:34「とりあえずウィンドウとかボタンとか入力欄とか出せればなんとかなんじゃね」
というコンセプトがRuby寄りだ
「Tcl/Tkでいちばん難しいのはTcl」という本末転倒な症状もRubyなら軽減
が、Rubyを一通り学んでからGUIに手を出すという順番自体は重ねて推奨
0273デフォルトの名無しさん
2010/03/28(日) 10:48:22それは>>269の答えになってるの?それともただの独り言?
0274デフォルトの名無しさん
2010/03/28(日) 10:50:05半分くらい答えになってるんじゃね?真偽は置いておいて。
というか何故そんなに喧嘩腰なんだ
0275デフォルトの名無しさん
2010/03/28(日) 10:54:18あんまりRuby/Tkなんかと変わらないよ
その辺はどこのGUIインタフェースも一緒
0276デフォルトの名無しさん
2010/03/28(日) 10:56:240277267
2010/03/28(日) 11:02:09プログラム言語によらず、GUIライブラリなんてそんなもんだと思っていたので、
RubyじゃなくてPythonだと何が嬉しいのかを知りたかったのです。
>>270
> wxPythonならwxWidgetsは覚える必要はないし
> PyQtならQtを覚える必要がない
GUIライブラリ固有の知識がなくてもPythonの知識だけでGUIが作れるということでしょうか。
これはにわかには信じられないのですが、ちょっとPython勉強して出直してきます。
0278デフォルトの名無しさん
2010/03/28(日) 11:08:16> Ruby/Qt の使い方は、PyQtにかなり似ています。どちらの言語も同じような動的特性 (dynamism) と
> 簡潔性を備えていますので、個々の要素に名前の違いはあるにしろ、似た感じのコードになっていても
> 不思議はありません。
RubyもPythonも似たようなもんなんじゃね?
0279デフォルトの名無しさん
2010/03/28(日) 11:08:42学習コスト最低レベルでウィンドウを扱える
まあ要は用途次第だな
GUIを提供することだけが最重要で、その裏にあるプログラムの動作はどうでもいいとか
0280デフォルトの名無しさん
2010/03/28(日) 11:14:18Ruby使ってる人はRubyからGUIライブラリを呼ぼうなんて考えない
GUIが必要なときは素直に他の言語で書く
0281デフォルトの名無しさん
2010/03/28(日) 11:17:23んなこたーない。
…とは思うものの、自分も Ruby で書かれた GUI アプリは Rabbit くらいしかしらない。
0282デフォルトの名無しさん
2010/03/28(日) 11:17:35で、つまりRuby上のGUIは初心者の領域ではないという話になるわけか
別スレ立ったんだしとりあえずそっちでいいじゃん
0283デフォルトの名無しさん
2010/03/28(日) 11:18:38それはそうだろうけど、その「他の言語」ってところでPythonを勧められることがままあると。
んで、PythonとRubyではそんなに違いないんじゃないの?ってのが>>267の疑問では。
C#やらJavaやら勧められるんなら、そういう疑問は出てこないと思う。
0284デフォルトの名無しさん
2010/03/28(日) 11:20:22goRua…は終わったか
ホントにGUI部分の処理が面倒だなあ
ウィンドウ処理と滅茶苦茶高次に融合したRubyとかないの
0285デフォルトの名無しさん
2010/03/28(日) 11:25:03Railsとスレ分けられるんだからGUIとだってスレ分けられるだろ
Ruby で GUI するスレ
http://pc12.2ch.net/test/read.cgi/tech/1269609576/
0286デフォルトの名無しさん
2010/03/28(日) 11:39:520287デフォルトの名無しさん
2010/03/28(日) 11:46:26ものを操作するのは分かりやすいが、それをそう見えるように作るのは面倒
くさいということは知って欲しいなー。
テキストメッセージ1つのウィンドウを出す程度で満足なら別だけど。
0288デフォルトの名無しさん
2010/03/28(日) 11:59:32WndowsFormは使えんよね?
0289デフォルトの名無しさん
2010/03/28(日) 12:03:19同じ意味だと思いますが、どっちを使うべきなんですか?
0290デフォルトの名無しさん
2010/03/28(日) 12:10:29前者は後者の意味であるということを理解してるならどっちでもいいよ
作ってる最中は attr のことが多いと思う
条件演算子→if式→case式 と移行するのと似たような感じで
結局後者(でメソッド内部で正規化処理つき)になることが少なくない
0291デフォルトの名無しさん
2010/03/28(日) 12:17:26Ruby/Tk
VisualuRuby
Ruby/Qt4
Ruby/GTK2
WxRuby
FxRuby
Apollo
Ruby/FLTK
RubyShoes
なんか終わってるのもいくつかあるが気にするな
0292デフォルトの名無しさん
2010/03/28(日) 12:22:24ありがとうございました
0293デフォルトの名無しさん
2010/03/28(日) 12:22:57ありがとうございました
0294デフォルトの名無しさん
2010/03/28(日) 13:01:29例外が発生する可能性のある処理
end
----------------------------------------------------------------------------
def test
begin
例外が発生する可能性のある処理
yield
ensure;end
end
このようなコードを書いたのですが、test do; endの適切な処理がわかりません
教えてエロ人!!
0295デフォルトの名無しさん
2010/03/28(日) 13:06:360297デフォルトの名無しさん
2010/03/28(日) 13:24:46えー
そういう場合はメソッドのユーザーが自分の責任で begin で括る
begin
test do ... end
rescue => e
error_handling(e)
end
0298デフォルトの名無しさん
2010/03/28(日) 13:30:30THX
0299デフォルトの名無しさん
2010/03/28(日) 15:51:35何か重要なものがあったような気がするけど思い出せないんだ
0300デフォルトの名無しさん
2010/03/28(日) 15:55:41http://doc.okkez.net/187/view/spec/literal
http://ja.wikipedia.org/wiki/%E3%83%81%E3%83%AB%E3%83%80
0301デフォルトの名無しさん
2010/03/28(日) 16:01:10Ruby で ~ を使うのは、マッチング演算子の =~ とその否定の !~ と、
前置の単項演算子で、整数のbitwise-not、正規表現オブジェクトと $_ とのマッチ、
IPAddr オブジェクトのbitwise-not、なので、ダブルクォートとの使い分けをする場面は
ないと思うが...
0302デフォルトの名無しさん
2010/03/28(日) 16:08:37文字やら文字列列をくくる時なんかに使うアレ
0303デフォルトの名無しさん
2010/03/28(日) 16:10:410304デフォルトの名無しさん
2010/03/28(日) 16:13:32というか文字列括る記号はさっき出てた
ttp://doc.okkez.net/187/view/spec/literal#string
このへんで用が済みそうだが
0305デフォルトの名無しさん
2010/03/28(日) 16:17:51>>http://doc.okkez.net/187/view/spec/literal
とりあえずこれ読んでくる
0306デフォルトの名無しさん
2010/03/28(日) 16:20:10チルダ使うの
0307デフォルトの名無しさん
2010/03/28(日) 16:20:460308デフォルトの名無しさん
2010/03/28(日) 16:26:42"''゛“"”′″`'‘’
0309デフォルトの名無しさん
2010/03/28(日) 16:29:56Rubyにはアトリビュートというものはない
継承されたクラスの a というメソッド内部から継承元の同名のメソッド a にアクセスするには super を使う
0311デフォルトの名無しさん
2010/03/28(日) 16:40:09え、いやふつーにアクセスできると思うんだが
irb> class C; def initialize; @hoge="hoge"; end; end
irb> class C2 < C; def hoge; @hoge; end; end
irb> p C2.new.hoge
"hoge"
0312デフォルトの名無しさん
2010/03/28(日) 16:59:36" ダブルクォート(ダブルクォーテーション)
' シングルクォート(シングルクォーテーション)
` バッククォート
でいいよな
表記の揺れは許容
0313デフォルトの名無しさん
2010/03/28(日) 17:05:59{ } ブレース、波カッコ、カーリーブラケット
[ ] ブラケット、角カッコ
0314デフォルトの名無しさん
2010/03/28(日) 17:08:010315デフォルトの名無しさん
2010/03/28(日) 17:15:110316デフォルトの名無しさん
2010/03/28(日) 17:58:23「マーク」を付けないところが童貞っぽい。
IPアドレスをIPって略しちゃうのと一緒で。
0318307
2010/03/28(日) 18:20:48絶対publicじゃないとダメみたい
しかもJRubyではローカル変数としてアクセスするみたい
class Super{
public String str = "str"
}
class Sub < Super
def initialize
p str
end
0319デフォルトの名無しさん
2010/03/28(日) 19:11:37わかったからもうやめて
俺のHPは0だ
0320デフォルトの名無しさん
2010/03/28(日) 19:20:27ダブルクオーテーションとダブルクオーテーションマークに何か違いでも
0321デフォルトの名無しさん
2010/03/28(日) 19:43:07IPアドレスなんかとは違って紛らわしい候補はないから縮めてもらっても意味はわかるが
そもそもがダブルクとかシングルクとかそれくらい短いといいのに
0322デフォルトの名無しさん
2010/03/28(日) 20:04:450323デフォルトの名無しさん
2010/03/28(日) 20:19:17それは、カギカッコと区別がつきづらいので使わないで欲しい。
0324デフォルトの名無しさん
2010/03/28(日) 20:21:07半角複引用符
6文字でFA
0325デフォルトの名無しさん
2010/03/28(日) 20:24:53…いいよもうシングルクオートで
0326デフォルトの名無しさん
2010/03/28(日) 20:27:500327デフォルトの名無しさん
2010/03/29(月) 00:06:44短い方がプログラムの実行速度が速くなるとかありますか?
0328デフォルトの名無しさん
2010/03/29(月) 00:12:59気にする必要はない
変な省略はせずにわかりやすい長めの名称推奨
0329デフォルトの名無しさん
2010/03/29(月) 00:38:43メモリ内に巨大なデータがいつまでも残ったままになったりしません
とか書いたら信じて実行してくれるだろうか
0330デフォルトの名無しさん
2010/03/29(月) 00:49:440331デフォルトの名無しさん
2010/03/29(月) 01:56:45スクリプト一行目に#! ruby -Kuと入れて実行したら文字化けした
-KsにしてS-JISで保存して実行したら直った
・・・ちゃんとBOM無しとやらにしたのに何でかしら?Ruby本体の設定とかあって、それを間違えてるとかかしら?
ちなみに使用したのはサクラエディタ
0332デフォルトの名無しさん
2010/03/29(月) 02:12:20Windowsという事は、コマンドプロンプトで実行したという事ですね。
コマンドプロンプトはデフォルトではSJISしか正しく表示できないのです。
コードページをUTF-8に変更すれば表示できると思われます。
方法は「コマンドプロンプト コードページ UTF-8」でググってみて下さい。
0333デフォルトの名無しさん
2010/03/29(月) 02:38:29�d
コマンドプロンプトちゃんの設定が悪かったのか
にしてもこんな設定があったとは・・・
0334デフォルトの名無しさん
2010/03/29(月) 07:43:460335デフォルトの名無しさん
2010/03/29(月) 07:47:45全く問題ない文字を表示してるだけなら問題はない
>>333はそのパターンだろう
0336デフォルトの名無しさん
2010/03/29(月) 12:48:03処理を書きたいのですが
どのようにして確認すればいいのでしょうか?
0337デフォルトの名無しさん
2010/03/29(月) 13:23:48自分で作るかArrayで代用するか適当なライブラリインストールする必要がある
…で、Arrayで代用する場合はまあ include? でいいんじゃね
queue = Array.new
queue.push('one')
queue.push('two')
queue.push('three')
puts queue.shift
puts queue.shift
queue.push('four') if queue.include?('three')
0338デフォルトの名無しさん
2010/03/29(月) 13:24:23汎用のデータコンテナではないと思う。
一応 Queue のインスタンス変数 @que が内部で持ってるデータのリスト
なので、これを無理矢理参照して include? でデータの存在をチェック出来
るけど、素直にArrayをshift/pushもしくはunshift/popのペアを使って
キューと見なすほうがよいと思う。
0340デフォルトの名無しさん
2010/03/29(月) 19:12:32の違いがわからない
単に書き方が違うだけか?
0341デフォルトの名無しさん
2010/03/29(月) 19:21:06前者推奨
sつきの後者は互換性のために残されているだけで1.9では既に無い
ttp://www.ruby-lang.org/ja/man/html/obsolete.html#FileTest.2eexists.3f
見つけるの苦労したぞ
わかりやすいとこに置いておいてくれ
0342デフォルトの名無しさん
2010/03/29(月) 20:15:24http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/file.c?view=diff&r1=14389&r2=14390
しかもobsoleteもなくなってるという
0343デフォルトの名無しさん
2010/03/29(月) 21:37:30なるほど、んじゃあexist?(hoge)を使うようにしよう
ともかくありがとう
0344デフォルトの名無しさん
2010/03/29(月) 22:56:56知ったかは危険だ・・・
0345デフォルトの名無しさん
2010/03/29(月) 23:40:13スレッドの外から@arrayを見るとちゃんと動作していません
どうやったら、整合性が取れるようになりますか?
0346デフォルトの名無しさん
2010/03/30(火) 00:38:52> どうやったら、整合性が取れるようになりますか?
typoを無くす
0347デフォルトの名無しさん
2010/03/30(火) 05:58:33それはキューではない。
0348デフォルトの名無しさん
2010/03/30(火) 08:12:10何それ?
0349デフォルトの名無しさん
2010/03/30(火) 10:23:04まあ 1.9.2 で実際に出たら考える
0350デフォルトの名無しさん
2010/03/30(火) 10:25:270351デフォルトの名無しさん
2010/03/30(火) 19:18:130352デフォルトの名無しさん
2010/03/31(水) 08:49:43hoge {:fuga => :piyo} で呼ばれたのか、
hoge :fuga => :piyo で呼ばれたのか判断する方法ってあるんですか?
0353352
2010/03/31(水) 09:06:16hoge {:fuga => :piyo}じゃブロックになっちゃうから
hoge({:fuga => :piyo})ですね。
0354デフォルトの名無しさん
2010/03/31(水) 09:14:02Symbol キーの Hash をそれっぽく使っているだけ
メソッドの引数内に限り、解釈の混乱の起きない範囲で Hash リテラルは { } を省略することができる
hoge(:key1 => val1, :key2=>val2)
と
hoge({:key1 => val1, :key2=>val2})
は同じだ
huga(param, {:key1 => val1, :key2=>val2})
と
huga(param, :key1 => val1, :key2=>val2)
も同じ
0355352
2010/03/31(水) 10:02:080356デフォルトの名無しさん
2010/04/02(金) 04:53:24その配列を比較するにはどうすればよいのでしょうか。
0357デフォルトの名無しさん
2010/04/02(金) 10:02:28なんでもかんでも1フレーズに押し込めようとするのは損
0358デフォルトの名無しさん
2010/04/03(土) 13:57:20String#scan
http://www.ruby-lang.org/ja/man/html/String.html#scan
0359デフォルトの名無しさん
2010/04/04(日) 01:27:320360デフォルトの名無しさん
2010/04/04(日) 02:47:060361デフォルトの名無しさん
2010/04/04(日) 12:02:56どうもありがとうございます。今から試してみます。
ところでみなさん、1.9系統への移行はいまだに時期尚早だと思いますか?
正式リリースから一年以上経ったし、そろそろ良いかなーとも思っているんですが。
みなさんはいまだに何か不都合とかありますか。
0362デフォルトの名無しさん
2010/04/04(日) 14:42:20良い方法はないでしょうか?IOクラスのパイプとかリダイレクトとか良く分からなくて…
text=`make`ではmakeの出力がリアルタイムで確認できず
system("make 2>&1 | tee hoge.txt")では、$?でmakeの戻り値を
取得できなくなってしまうので困ります(失敗したらexitしたいのです)。
0363デフォルトの名無しさん
2010/04/04(日) 14:52:421.8 なら fork と exec で自分でがんばるしかないと思う。
1.9.1 なら spawn で、1.9.2 なら open3 で、できるかもしれない。
0364デフォルトの名無しさん
2010/04/04(日) 15:32:31http://github.com/ujihisa/spawn-for-legacy
0365デフォルトの名無しさん
2010/04/04(日) 17:33:45500個 * 約13000個 * 要素数5の構造体(整数4つ+文字列)のデータで
2Gbyte以上消費します(Cで書けば150Mbyte程度で収まる)
Rubyではこの程度のメモリ消費は普通なのでしょうか?
あるいは使い方やコツ等が分かっていないのでしょうか?
環境はruby1.8.7 on MacOSXです
0366362
2010/04/04(日) 17:34:10ありがとうございます。1.9.1だったので以下のようにしてみました。
こういうコードでいいのか分かりませんが、とりあえず目的は達成できました。
r,w = IO.pipe
pid = spawn("make", STDOUT=>w)
spawn("tee build.log", STDIN=>r)
ret = Process.waitpid2(pid)[1].to_i
w.close
if ret != 0
puts "[Error] (build) #{src}"
exit 1
end
0367デフォルトの名無しさん
2010/04/04(日) 17:40:08普通
0368デフォルトの名無しさん
2010/04/04(日) 18:56:57rails3がruby1.9対応だからみんなそれまでは焦って動くことはなさそう。
メモリ消費でCと比べるのはrubyがかわいそう
javaだってcの10倍以上使っておかしくないんだぜ?
ruby1.9系が1.8系よりも良い所って
今のところガーベージコレクションが良いって記事しか読んだ事無いな。
0369デフォルトの名無しさん
2010/04/05(月) 10:54:00わざわざtee使って複数プロセスにするから面倒な事になるんだろ。
ret = IO.popen("make", "r") {|mk|
open("build.log", "w") {|log| IO.copy_stream(mk, log)}
Process.wait2(mk)[1]
}
unless ret.success?
abort "[Error] (build) #{src}"
end
IO.copy_streamがなければそのくらい作れ。
0370デフォルトの名無しさん
2010/04/05(月) 10:55:53copy_streamの代わりにこうでもしてくれ。
mk.each{|line| log.puts(line); puts(line)}
0372デフォルトの名無しさん
2010/04/05(月) 22:51:12Ruby においてはメモリはすっげぇ大量に消費される
ご存知の通り、プログラムにおいて実行速度とメモリ使用量はトレードオフだ
どっちも良くしたい場合はアセンブラかせめて C で書か「ねばならない」
大量のデータを処理するのでなければ常識的な範囲内に収まるものではあるのだが、
大量のデータを処理することが事前にわかっているのなら Ruby を使わないほうがたぶん幸せ
0373デフォルトの名無しさん
2010/04/05(月) 23:17:25ムーアの法則知らないのか?
それは、10年前のpcの話だろ
0374デフォルトの名無しさん
2010/04/05(月) 23:22:18何言ってるの
いつの時代もCPUは100パーセント使用されるし
メモリはスワップにまで突っ込むし
HDDは90%まで埋まるもんだよ
10年前のデータ量を現在のマシンで取り扱うなら、君の言ってることは真だろうね
0375デフォルトの名無しさん
2010/04/05(月) 23:34:470376デフォルトの名無しさん
2010/04/05(月) 23:35:36大量のデータでまったく同じ処理を何回もするならそうかも知れない
(大量の定義にもよるが)
あるいはとにかく速さを要求されるならそうかも知れん
ただ,大量のデータでもそんなに何度もしないならRubyの方が幸せかも知れん
たとえばRubyで処理に1日かかってアセンブラなら半分の時間でできるとしよう
coding/debug でその差以上得しなければ時間的にさえ得にならない
人件費ではさらに得にならない
coding のオーバーヘッド評価しないと意味が無いから状況に依りすぎる
有名な教訓を思い出すなぁ
"premature optimization is the root of all evil"
0377デフォルトの名無しさん
2010/04/05(月) 23:45:13いわゆるデスクトップ版Linuxを使ってるとその思いが強くなる
10年くらい前は「もうちょっとマシンが早かったらこれすげえ快適なんじゃね!?」と思い
5年くらい前には「もうちょっとマシンが早かったらこれすげえ快適なんじゃね!?」と思い
今年インストールしたLinuxでも「もうちょっとマシンが早かったらこれすげえ快適なんじゃね!?」と思ってる
0378デフォルトの名無しさん
2010/04/05(月) 23:59:29いいかげんマシン買い換えようよ
0379デフォルトの名無しさん
2010/04/06(火) 00:31:18えっ
0380デフォルトの名無しさん
2010/04/06(火) 14:16:530381デフォルトの名無しさん
2010/04/06(火) 15:39:04起動するGUIアプリケーションが全部OpenMotif使うようになるとかなら歓迎だがそうでもあるまい
0382デフォルトの名無しさん
2010/04/06(火) 18:11:000383デフォルトの名無しさん
2010/04/07(水) 15:56:17twmに戻れば爆速。マクってgui無効に出来ないものなのか?
0384デフォルトの名無しさん
2010/04/07(水) 21:00:58webアプリで自ホストからのアクセスかどうかチェックするスマートな方法はないでしょうか?
railsだとlocal_request? というメソッドがあるのですが、
それはデフォルトだとrequest.remote_ip(つまりREMOTE_ADDR環境変数のようなもの)が127.0.0.1かどうかのみをチェックしているため、
開発マシンだとそれでローカルかは判別できるのですが、サーバーだと127.0.0.1以外の自ホストのアドレス(グローバルIPとかNAT内のIP)が返ってきてうまくいきません。
そのため、local_request?の処理を上書きしてやろうと(ドキュメントには上書きして使ってね、とありますし)
指針としては、自ホストのIPアドレスとrequest.remote_ipが同じかチェックしようとしているのですが、
自ホストのIP取得するのには、
Socket.getaddrinfo(Socket::gethostname, nil, Socket::AF_INET)[0][3]
でいいものでしょうか?ちょっと回りくどくないですか?
お聞きしたいことは、
・(ローカルからのアクセスの判別は)実はもっと簡単な方法があるよ、
・自ホストのIP取得はもっと簡単にかけるよ
などということです。
0385デフォルトの名無しさん
2010/04/07(水) 21:37:311.9.2 だと Socket.ip_address_list ってのが使えますけど、それ以前はこれって方法はないですね。
0386デフォルトの名無しさん
2010/04/07(水) 21:54:520387デフォルトの名無しさん
2010/04/08(木) 01:25:10折角実験までしたので勿体ないから書いとく。
>>365
2GBは食い過ぎの気がする。
初期化の仕方とか工夫してみたらどうだろう。
ウチの環境で下のコードを動かした結果がコレ。
メモリ不足でこれ以上はできないが、参考まで。
S = Struct.new(:i1,:i2,:i3,:i4,:s)
i = 0
a = Array.new(500) { Array.new(8192) { i+=1; S.new i,i+1,i+2,i+3,i.to_s } }
Ruby 1.8.7 WinXP SP3 (32bit) 400MB未満
Ruby 1.8.7 FreeBSD 8.0 (64bit) 800MBちょい
0388デフォルトの名無しさん
2010/04/08(木) 13:03:12たぶん1.9.1ならStringのあたりでメモリ消費減ると思う
Structの要素数が3以下ならそっちでも減るはず
0390デフォルトの名無しさん
2010/04/08(木) 20:20:53File.join 使わないと動作が保証できないとか面倒すぎる
0391デフォルトの名無しさん
2010/04/08(木) 20:25:230392デフォルトの名無しさん
2010/04/08(木) 20:26:06Pathname 使って + するのは?
0393デフォルトの名無しさん
2010/04/08(木) 20:27:15どんな場合に使うのが正しいのか誰も回答示せない状態
0394デフォルトの名無しさん
2010/04/08(木) 20:29:47それはそのスクリプトの作者ではなくそのスクリプトを使用するユーザー全員に言うべき
0395デフォルトの名無しさん
2010/04/08(木) 20:32:080396デフォルトの名無しさん
2010/04/08(木) 20:33:160397デフォルトの名無しさん
2010/04/08(木) 20:38:06怖いこと言うな
0398デフォルトの名無しさん
2010/04/08(木) 20:46:37を連結したくて、なおかつ結果を現在のOS依存の相対ディレクトリ表記で表記したい場合に File.join を使う
0399デフォルトの名無しさん
2010/04/08(木) 20:49:580400デフォルトの名無しさん
2010/04/08(木) 20:54:21Windowsなど(含むcygwin)ならopenとかFile.expand_pathとかFile.basenameとかでは扱える。
扱えないのはDir.globくらい。
0401デフォルトの名無しさん
2010/04/08(木) 21:08:57ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mswin32]
C:>ruby -e "p File::SEPARATOR"
"/"
この時点で File.join に存在価値はない
0402デフォルトの名無しさん
2010/04/08(木) 21:18:20> ruby -e "p File::ALT_SEPARATOR"
"\\"
0403デフォルトの名無しさん
2010/04/12(月) 02:12:03巨大なファイルやストリーム的に送信されるデータをRubyで取得したいです
標準のnet/httpやopen-uriはレスポンスが終了するまで処理が停止してしまいますし
socketだとHTTPをすべて実装する必要があるので・・・
よろしくお願いします
0404デフォルトの名無しさん
2010/04/12(月) 02:26:250405デフォルトの名無しさん
2010/04/12(月) 04:16:18もしそうならスレッド使ったらいいのでは
0406デフォルトの名無しさん
2010/04/12(月) 06:54:200407デフォルトの名無しさん
2010/04/12(月) 11:22:03日本語入力中にIMEの変換中の文字列を取得したいのですが、
#-------------------------------------------------------
win = エディットボックスのウインドウハンドル
# 入力コンテキスト取得
a = Win32API.new( "imm32", "ImmGetContext","l" ,"l").call(win)
# バッファ作成
buf = "\0" * 256
# IMEの変換中文字列を取得
ImmGetCompositionString = Win32API.new("imm32", "ImmGetCompositionString", "llpl", "l")
ImmGetCompositionString.call(a, 0x0008, buf, 0)
buf.delete!("\0")
p buf # 常に空の文字列「""」しか返ってこない
#-------------------------------------------------------
…となってしまいます。根本的にやり方がおかしいのでしょうか?
どなたか上手く取得する方法を教えてください。
0408デフォルトの名無しさん
2010/04/12(月) 11:32:370409デフォルトの名無しさん
2010/04/12(月) 11:58:17Net::HTTP#get に block を渡すか、
http://doc.okkez.net/static/187/method/Net=3a=3aHTTP/i/get.html
OpenURI#open の :progress_proc オプションを使う
http://doc.okkez.net/static/187/class/OpenURI.html
0411デフォルトの名無しさん
2010/04/13(火) 00:20:170412デフォルトの名無しさん
2010/04/13(火) 09:18:51内部変数名と外部提供用アクセスメソッドが同名であることが自然な場合ってレアだよね
0413デフォルトの名無しさん
2010/04/13(火) 12:37:21が実行できない事に失望した
0414デフォルトの名無しさん
2010/04/13(火) 12:46:26irb> p 'hello'.class.instance_methods.size
185
irb> p 'hello'.class.methods.size
81
irb> p ('hello'.class.instance_methods - 'hello'.class.methods).size
134
0415デフォルトの名無しさん
2010/04/13(火) 13:11:010416デフォルトの名無しさん
2010/04/14(水) 07:55:440417デフォルトの名無しさん
2010/04/14(水) 08:17:250418デフォルトの名無しさん
2010/04/14(水) 21:34:35Kernel.diffがあればできるだろうけど、ないからね
> p 'hello'.class.instance_methods - 'hello'.class.methods
でいいんじゃないの?見にけりゃ、ppで
0419デフォルトの名無しさん
2010/04/14(水) 21:36:350420デフォルトの名無しさん
2010/04/14(水) 22:04:500421デフォルトの名無しさん
2010/04/15(木) 00:42:300422デフォルトの名無しさん
2010/04/15(木) 02:38:16現実的にはぶっちゃけシェルでやっちゃえよ
0423デフォルトの名無しさん
2010/04/15(木) 02:41:350424デフォルトの名無しさん
2010/04/15(木) 07:54:420425デフォルトの名無しさん
2010/04/15(木) 08:24:32それを pure Ruby で再実装しようというのは結構マゾい
0426デフォルトの名無しさん
2010/04/15(木) 09:33:120427デフォルトの名無しさん
2010/04/15(木) 09:41:01それを活用するライブラリを作ってそれを require すると String が拡張、みたいな手順踏んでもらったほうが
ところで
$LOAD_PATH.unshift(File.join(File.dirname(File.expand_path(__FILE__)), '/../lib/'))
これ File なんとかの部分短くなんないっすかね
0428デフォルトの名無しさん
2010/04/15(木) 09:44:440429デフォルトの名無しさん
2010/04/15(木) 09:47:59File.join はいらね
$LOAD_PATH.unshift(File.join(File.dirname(File.expand_path(__FILE__)), '/../lib/'))
$LOAD_PATH.unshift("#{File.dirname(File.expand_path(__FILE__))}/../lib/"))
0430デフォルトの名無しさん
2010/04/15(木) 09:55:55…あるか
__FILE__ という名前の変数は「慣習的に絶対パス」だと思うなあ
0431デフォルトの名無しさん
2010/04/15(木) 10:57:40lcsの意味が分からない人向けではないと思う。
0432デフォルトの名無しさん
2010/04/15(木) 20:34:05$str ="Tom,19,man";
list($name,,$sex) = explode(",",$str);
いろいろ試してみたのですが下のように書くとエラーがでます。
name,,sex = str.scan(/(.+?),(.+?),(.+)/);
0433デフォルトの名無しさん
2010/04/15(木) 21:09:320434デフォルトの名無しさん
2010/04/15(木) 21:13:47name, age, sex = str.split(/\s*,\s*/)
age が不要なら _ にでもしとけ
0435デフォルトの名無しさん
2010/04/16(金) 01:25:59ありがとうございます
なんらかの変数に代入しないとだめなんですね
0436433
2010/04/16(金) 07:57:440437デフォルトの名無しさん
2010/04/16(金) 08:24:560438デフォルトの名無しさん
2010/04/16(金) 08:39:240439デフォルトの名無しさん
2010/04/16(金) 13:21:28あげてくださってありがとうございますm(_ _)m
>>473
「 _ 」 も普通の変数というわけではないのでしょうか?
p _
してみるとageに入るデータが入っているので結局はageに代入するか_に代入するかの違いのように感じました。
また連続での質問で恐縮なのですが以下のようなことをするにはどうすればいいでしょうか?
person = Array.new()
arr = [
['Tom',19,'boy'],
['Emi', 12,'girl'],
['Shun',32,'boy'] ]
for p in arr
person[name][] = p[1]
end
p person「name]
# 求めている出力結果
['Tom','Emi','Shun']
0440デフォルトの名無しさん
2010/04/16(金) 13:42:51Ruby 的に何か意味があるわけではない
ただの1文字のローカル変数
多用すると超格好悪いのであまり初心者スレ向きではないが、
1行で書かないと死ぬ病とかの人の対症療法に有効
>>439
Array#map の勉強をしろ
写像というポピュラーで強力な概念だ
arr_in_arr = [
['Tom',19,'boy'],
['Emi', 12,'girl'],
['Shun',32,'boy'] ]
p arr_in_arr.map{|a| a[0]} #=> ["Tom", "Emi", "Shun"]
0441デフォルトの名無しさん
2010/04/16(金) 14:12:01Array や Hash といったコレクション主体のスクリプトを書くようになるから
inject も概念は素晴らしいんだがメソッドとしてのインターフェースに難あり
0442デフォルトの名無しさん
2010/04/16(金) 14:47:351.8.7か1.9だと
arr_in_arr,map(&:first)
と書けてしあわせ
0443デフォルトの名無しさん
2010/04/16(金) 14:51:530444デフォルトの名無しさん
2010/04/16(金) 15:04:18別にそれは幸せではない
&に意味がなさ過ぎる
0445デフォルトの名無しさん
2010/04/16(金) 15:22:30空の Hash 作って移行するとかめんどくさいことやってる
h = {:k1 => 'v1', :k2 => 'v2'}
new = {}
h.each_pair do |k, v|
new[k.to_s] = v
end
ちなみにこれが最短だが傍目に何やってるかわかりにくくて嫌い
Hash[*h.map{|k, v| [k.to_s, v]}.flatten]
* とか flatten とか Ruby の都合だよね
0446デフォルトの名無しさん
2010/04/16(金) 17:12:30カッコの中のエンコーディングだとみなしてパースを行ったが
エンコーディングだと解釈できないバイトの連なりがありましたエラー?
0447デフォルトの名無しさん
2010/04/16(金) 17:16:40そのはず
括弧の中が、マジックコメント等で指示されて Ruby が想定しているエンコーディング
表現的にまだわかりにくいな
ruby parser found invalid multibyte char for UTF-8 とでも表示すればいいのか
0448デフォルトの名無しさん
2010/04/16(金) 17:23:00ArgumentError の轍をわざわざ踏まなくても
ArgumentError: wrong number of arguments (3 for 2)
足りないのか余ってるのか一発で判断可能な表記にしろ
ArgumentError: wrong number of arguments (expected 2, but 3)
とか表示してくれたら全世界の Ruby ユーザーが涙流して喜んだろうに
0449デフォルトの名無しさん
2010/04/16(金) 19:07:101.8.7以降なら
Hash[h.map{|k, v| [k.to_s, v]}]
でいけるようになってる
Hash#to_a で出来る形式のArrayを逆にHashに出来るようになってるよ
1.9で追加されて1.8.7にバックポートされたのかな
マニュアルは見当たらんのだが
どこかに書かれてるのだろうか?
0450デフォルトの名無しさん
2010/04/16(金) 20:56:53知識として持っててあたりまえのことを質問する馬鹿が増えた
0451デフォルトの名無しさん
2010/04/16(金) 21:13:350452デフォルトの名無しさん
2010/04/17(土) 02:29:26って気質だからな日本人は
0453デフォルトの名無しさん
2010/04/17(土) 03:42:23Rubyから2chに書き込みたいです
0454デフォルトの名無しさん
2010/04/17(土) 04:00:550455デフォルトの名無しさん
2010/04/17(土) 04:16:30ttp://route477.net/rubyscraping/?Mechanize
0456デフォルトの名無しさん
2010/04/17(土) 04:29:060457デフォルトの名無しさん
2010/04/17(土) 04:41:510458デフォルトの名無しさん
2010/04/17(土) 06:04:51qs = "bbs=#{}&key=#{}&time=#{}&FROM=#{}&mail=#{}&MESSAGE=#{}&submit=#{}{suka}=#{pontan}"
req = Net::HTTP::Post.new("http://#{}.2ch.net/test/bbs.cgi")
req['Referer'] = "http://#{}.2ch.net/"
res, body = http.request(req, qs)
if /2ch_X:cookie/ =~ body then
req = Net::HTTP::Post.new("http://#{host}.2ch.net/test/bbs.cgi")
req['Referer'] = "http://#{host}.2ch.net/"
req['Cookie'] = res['set-cookie']
res, body = http.request(req, qs)
end
end
10行はむりぽorz
0459デフォルトの名無しさん
2010/04/17(土) 06:10:040460デフォルトの名無しさん
2010/04/17(土) 06:41:27python なら end がいらないから 10 行以下だったね
惜しい
0461デフォルトの名無しさん
2010/04/17(土) 06:50:22thre = Nichannel['プログラム'][1269233796]
puts thre[453].text.to_a[0] #=>2chの読み書きを(略
thre.post(nil,'sage',text)
こんな感じか
出来る奴ならすぐ作れるだろ
0462デフォルトの名無しさん
2010/04/17(土) 07:03:080463デフォルトの名無しさん
2010/04/17(土) 07:07:37いや
pythonだと7行で書けたw
0464デフォルトの名無しさん
2010/04/17(土) 07:09:540465デフォルトの名無しさん
2010/04/17(土) 07:11:19http://pc12.2ch.net/test/read.cgi/tech/1180406037/
0466デフォルトの名無しさん
2010/04/17(土) 07:13:23つまんねえ奴だな
0467デフォルトの名無しさん
2010/04/17(土) 07:24:11私たちは自分たちの使ってる掲示板を壊すようなものを進んで提示することはありません
0468デフォルトの名無しさん
2010/04/17(土) 07:25:550469デフォルトの名無しさん
2010/04/17(土) 07:28:07むしろ向こうでやられたほうが迷惑だろ
0470デフォルトの名無しさん
2010/04/17(土) 07:40:02>>453に対しては>>454で終了
それ以上の情報提供をする人は昔ならともかく今はどんなスレでだってまずいない
2chの仕様調べてHTTPクライアント作るまでが参入障壁
公開された爆撃スクリプトに自分のコードが書いてあったときの絶望を知るがいいぞ
0471デフォルトの名無しさん
2010/04/17(土) 07:41:330472デフォルトの名無しさん
2010/04/17(土) 09:14:240473デフォルトの名無しさん
2010/04/17(土) 09:20:130474デフォルトの名無しさん
2010/04/17(土) 09:29:02〜30代独身者はホームレス予備軍
ttp://business.nikkeibp.co.jp/article/life/20100413/213964/
0475デフォルトの名無しさん
2010/04/17(土) 15:36:18それって「包丁は人を殺せるから売ってはいけない」的な主張と同じじゃね?
0476デフォルトの名無しさん
2010/04/17(土) 17:07:460477デフォルトの名無しさん
2010/04/17(土) 17:46:460478デフォルトの名無しさん
2010/04/17(土) 17:58:240479デフォルトの名無しさん
2010/04/17(土) 17:59:09それって質問とますます全く関係なくね?
0481デフォルトの名無しさん
2010/04/17(土) 18:18:170482デフォルトの名無しさん
2010/04/17(土) 18:27:500483デフォルトの名無しさん
2010/04/17(土) 18:41:040484デフォルトの名無しさん
2010/04/17(土) 18:59:56> 2chの仕様調べてHTTPクライアント作るまでが参入障壁
このまんまだと思うが…
0485デフォルトの名無しさん
2010/04/17(土) 19:17:26エラー処理は苦痛。
0486デフォルトの名無しさん
2010/04/17(土) 19:19:36416 Requested Range Not Satisfiable
0487デフォルトの名無しさん
2010/04/17(土) 19:21:49おめでてーな
0488デフォルトの名無しさん
2010/04/17(土) 19:22:55勉強になるものであることは間違いがない
2chの鯖自体には毎日変なGETやPOSTが来てるんだろうと思う
0489デフォルトの名無しさん
2010/04/17(土) 19:24:47一番めんどいエラーだと思うが
板移転なんてあぼーん検知と最小取得に比べたらどうということもない
0490デフォルトの名無しさん
2010/04/17(土) 19:27:240491デフォルトの名無しさん
2010/04/17(土) 19:28:42「ERROR:xxx」部分を切り出して表示するのかな。
bbs.cgiはもうちょっと頑張るべきなのになぁ・・・
0492デフォルトの名無しさん
2010/04/17(土) 19:30:48基本はそう
メッセージボディを正規表現でごりごり判定
ぶっちゃけレスポンスヘッダはもうちょっと頑張ってもいい
0493デフォルトの名無しさん
2010/04/17(土) 19:30:580494デフォルトの名無しさん
2010/04/17(土) 19:33:180495デフォルトの名無しさん
2010/04/17(土) 19:34:010496デフォルトの名無しさん
2010/04/17(土) 19:35:000497デフォルトの名無しさん
2010/04/17(土) 19:35:590498デフォルトの名無しさん
2010/04/17(土) 19:39:22システム側はわりと頑張ってるぽいんだけど、掲示板本体の機能は20世紀のまま
0499デフォルトの名無しさん
2010/04/17(土) 19:43:00基本設計はちゃんとやろうね、という良いお手本だな。
0500hage
2010/04/17(土) 19:49:080501デフォルトの名無しさん
2010/04/17(土) 19:53:05そもそもそんなふうに出発したものじゃないからなあ
開発という視点からはタイミングが全部後手後手裏目なんだよね
いいかげんスレ違いなので他の質問の方どうぞ
0502デフォルトの名無しさん
2010/04/17(土) 19:55:510503デフォルトの名無しさん
2010/04/17(土) 19:59:080504デフォルトの名無しさん
2010/04/17(土) 20:03:270505デフォルトの名無しさん
2010/04/17(土) 21:37:43str4 = "あ"
p /[\x{3041}-\x{309e}]/ =~ str4
0506デフォルトの名無しさん
2010/04/17(土) 21:55:210507デフォルトの名無しさん
2010/04/17(土) 21:58:040508デフォルトの名無しさん
2010/04/17(土) 22:31:03検索に使える正規表現はこのような書き方しか受け付けないんです。
それでRubyで処理したいファイルと出力したいファイルがシフトJISじゃないと駄目だったりするんです。
だからRubyの中での書き方もエディタの書き方に合わせたいな、と思いまして。
へんてこな使い方ですからやっぱり無理なんですかね。残念。
0509デフォルトの名無しさん
2010/04/17(土) 22:50:00p /[\x{3041}-\x{309e}]/ =~ str4
0510デフォルトの名無しさん
2010/04/17(土) 22:59:170511デフォルトの名無しさん
2010/04/18(日) 16:58:44第1要素が同じ配列で先頭のモノ意外を削除するメソッドってありますか?
以下のようにしたいのですが。
[ [1,2] , [1,3] , [2,1] , [2,3] , [2,7], [4,5] ].削除メソッド #=> [[1,2],[2,1],[4,5]]
よろしくお願いします
0512デフォルトの名無しさん
2010/04/18(日) 17:13:34[ [1,2] , [1,3] , [2,1] , [2,3] , [2,7], [4,5] ].uniq(&:first)
が使える。
ないバージョンならRubyで作ろう。
0513デフォルトの名無しさん
2010/04/18(日) 17:14:00・ クラスのメソッドの説明を流し見する
・ たぶんそのものずばりはないはずだが、組み合わせればなんとかなりそうなものが見つかる
・ 組み合わせる
この繰り返し
初心者のときは10行くらいになることをひとまず厭ってはいけない
最初からカッコよく書こうなんて無理無駄
0514デフォルトの名無しさん
2010/04/18(日) 17:47:11ありがとうございます。
あまり大規模な配列じゃないので自分で作っちゃいました。
0515デフォルトの名無しさん
2010/04/19(月) 20:23:00原因はなんでしょうか?
gemをオンラインから落とすとエラーになるので一旦落としてローカルから呼び出しています。
C:\Program Files\ruby-1.8\bin>gem install eventmachine --local
Building native extensions. This could take a while...
ERROR: Error installing eventmachine:
ERROR: Failed to build gem native extension.
"C:/Program Files/ruby-1.8/bin/ruby.exe" extconf.rb
checking for rb_trap_immediate in ruby.h,rubysig.h... no
checking for rb_thread_blocking_region()... no
checking for inotify_init() in sys/inotify.h... no
checking for __NR_inotify_init in sys/syscall.h... no
checking for writev() in sys/uio.h... no
checking for rb_thread_check_ints()... no
checking for rb_time_new()... no
checking for windows.h... no
could not find header: windows.h
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack ofnecessary libraries and/or headers. Check the mkmf.log file for moredetails. You may need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--srcdir=.
--curdir
--ruby=C:/Program Files/ruby-1.8/bin/ruby
Gem files will remain installed in C:/Program Files/ruby-1.8/lib/ruby/gems/1.8/gems/eventmachine-0.12.10 for inspection.
Results logged to C:/Program Files/ruby-1.8/lib/ruby/gems/1.8/gems/eventmachine-0.12.10/ext/gem_make.out
0516デフォルトの名無しさん
2010/04/19(月) 20:35:130517デフォルトの名無しさん
2010/04/19(月) 20:51:05eventmachine-0.12.10-x86-mswin32-60.gem
こっちじゃないのか?
アーキテクチャの整合性は知らん。
0518デフォルトの名無しさん
2010/04/19(月) 20:55:36ActiveScriptRuby
RubyInstaller
Rumix
の中でどれが良いでしょうか。大きく変わらないのかもしれませんが。
ちなみに日本語環境でしか使いません。
0519デフォルトの名無しさん
2010/04/19(月) 21:03:47悪いこと言わないから、1.8.7 に慣れてからにしておけ
慣れるのには 2ヶ月も要らないと思う
で、Windows では ActiveScriptRuby が日本でのデファクト
ていうかこのへんは>>6
0520515
2010/04/19(月) 21:04:32ありがとうございます。
ActivescriptRubyでやってます。
eventmachine-0.12.10-x86-mswin32-60.gem
やってみます。
0521デフォルトの名無しさん
2010/04/19(月) 21:16:33どうもです。なるほどActiveScriptRubyが事実上の標準なんですね。
ちなみにRumixというのはどうなんでしょうか?
日本語で使う場合に便利という触れ込みですが。
ただ、ファイルサイズが倍以上あるので「?」な感じはしますが。
0522デフォルトの名無しさん
2010/04/19(月) 21:25:18Ruby本体以外に付属するものが違うだけなので、ふろくで選ぶのがいいかと
Windowsで動くRubyはmswin32とmingw32(とcygwin)の2(3)種類あって、mswin32が一演桴艶S者的鉄板
0523デフォルトの名無しさん
2010/04/19(月) 22:18:39どうするのがいいのかな?
今はこんな感じで書いてる。
result = IO.popen("-", "r+") do |io|
if io
io.read
else
exec("ls")
end
end
シェルを経由したくないのは、コマンド文字列の中に|とか>みたいな特殊文字が
入ってるとややこしいから。
0524デフォルトの名無しさん
2010/04/19(月) 22:19:56ありがとうございました。初心者ですし、
そんなに凝ったプログラムをするわけではないので、
推奨どおりActiveScriptRubyをインストールしてみます。
0525デフォルトの名無しさん
2010/04/19(月) 22:21:23ローカルからではなく、ネットから引っ張って入れたいのです。
C:\Program Files\ruby-1.8\bin>gem install eventmachine
ERROR: While executing gem ... (Errno::ENOENT)
No such file or directory - /home/Administrator
C:\Program Files\ruby-1.8\bin>
0526デフォルトの名無しさん
2010/04/20(火) 04:52:43popen安定
>>525
gem install --remote eventmachine
環境おかしいな
ruby -ropen-uri -e "puts open('http://google.com/').read"
がHTMLを表示しないなら、使ってるパーソナルファイアーウォールで ruby にネットアクセスを許可しろ
本当はこれも INSTALL に書かれるべきなんだけどね
0527デフォルトの名無しさん
2010/04/20(火) 12:59:32\x{3041}じゃなくて\u{3041}だよ
0528デフォルトの名無しさん
2010/04/20(火) 23:17:31つーか正規表現で戻り読みができない1.8xには戻る気がせん。
0529デフォルトの名無しさん
2010/04/21(水) 00:21:110530デフォルトの名無しさん
2010/04/21(水) 08:25:052種類のRubyに触れるとぷちゅっと弾けて消えてしまう人もいることくらい覚えておこうね
一生のうち1種類だけのRubyは安全だけど、2種類のRubyに触れることは死を意味する
0531デフォルトの名無しさん
2010/04/21(水) 08:55:550532デフォルトの名無しさん
2010/04/21(水) 09:06:39対象性の崩れなんか関係ない
ruby world から足を洗っただけだろ
0533デフォルトの名無しさん
2010/04/21(水) 11:07:280534デフォルトの名無しさん
2010/04/21(水) 14:17:410535デフォルトの名無しさん
2010/04/21(水) 19:27:32■参考サイト
<英語> http://www.robyonrails.org
本家:http://www.rubyonrails.org
API document:http://api.rubyonrails.com/
開発者のblog:http://weblog.rubyonrails.org/
参考wiki:http://wiki.rubyonrails.org/rails
これ全部ドメイン失効で見れないんだけど
0536デフォルトの名無しさん
2010/04/21(水) 19:27:41やりたいこと:ファイルから1行読み込んで、その1行の正規表現を作る
以下が今書いたソースです。
--
txt = File.open("text.txt",'r')
mojiretsu = txt.gets.chomp!
seiki = /¥b#{mojiretsu}¥b/
--
まずtxtファイルを読み込んで、1行目を取得しそれを変数mojiretsuに格納し、
変数mojiretsuの正規表現としてseikiを作成しています。
しかしながらこの方法ですと、mojiretuに読み込んだ1行が例えば"( ABC"のように
半角括弧の記号が含まれている場合、正規表現が作成できずエラーになります。
この根本的な解決方法はないでしょうか?よろしくお願いします。
以下がエラーメッセージです。(rubyのバージョンは1.8.7)
unmatched (: /¥b( ABC¥b/ (RegexpError)
0537デフォルトの名無しさん
2010/04/21(水) 19:31:420538デフォルトの名無しさん
2010/04/21(水) 20:06:35ご回答ありがとうございます。
その書き方でやってみましたが、それでもエラーが出てしまいます。
0539デフォルトの名無しさん
2010/04/21(水) 20:16:25Regexpにメソッドがあるからリファレンスマニュアル嫁
0540デフォルトの名無しさん
2010/04/21(水) 20:19:55半角括弧入ってるって言ってるだろ
0541デフォルトの名無しさん
2010/04/21(水) 20:32:180542デフォルトの名無しさん
2010/04/21(水) 21:05:11エラーがあった場合どうしたいの?
mojiretsuを正規表現でなくて文字列そのままマッチさせたいんだったらRegexp.quote使うといいと思うけど
0543デフォルトの名無しさん
2010/04/21(水) 22:02:49たぶんそれだけじゃ通じないだろうってのと元のコードも見た上での希望をエスパーすると、
/\b#{Regexp.quote(mojiretsu)}\b/
かな。
0544デフォルトの名無しさん
2010/04/21(水) 22:58:410545デフォルトの名無しさん
2010/04/21(水) 23:07:140546デフォルトの名無しさん
2010/04/21(水) 23:15:400547デフォルトの名無しさん
2010/04/21(水) 23:46:11回答ありがとうございます。
quoteをリファレンスマニュアルで調べました。
文字列をそのままマッチさせたかったので、quoteで大丈夫そうです。
本当にありがとうございました。
また、わかりやすくコードまで用意してくださってありがとうございます。
0548デフォルトの名無しさん
2010/04/22(木) 00:01:55ウインドウを表示してランダムに表示されたセリフ
とそのセリフを言った人を選択して当てる というゲームで三週間
詰んでます。
人がゴミのようだ を言った人は ムスカ
↑ランダム台詞 ↑選択できる人物名
ランダム台詞はhashとrandでなんとかできたんですが、選択人物は
キーボードの↑や↓で選択できるようにしたい。
サイト巡って数字を表示するプログラムを見つけてそれを真似してるんですが、
日本語と数字では表示の仕方が違うみたいで失敗続きです。
0549デフォルトの名無しさん
2010/04/22(木) 00:04:46これを元に台詞とか入れたいのでご指南ください。
require "dxruby" #dxrubyでプログラムする合図
# メインとなるクラス
class HowMeny #クラス?はて?の開始
def initialize #initialize の開始
#@を付ける決まりがあるらしい
@num=rand(10) + 1 #1〜10までランダムで数字を決める
@answer=1 #ウインドウ表示時の答え欄に最初に入ってる数字
@font=Font.new(24) #フォントの大きさを決める
end #initialize はここまで
def select(val) #select(val)の開始
@answer+=val #解答の数値を増減する
if @answer<1 #解答が1より少なくなったときは
@answer=10 #解答を10にする
elsif @answer>10 #解答が10より大きくなったときは
@answer=1 #解答を1にする
end #if の終了
end #select の終了
def update #update の開始
#キーの↑か←を押すと数値up、↓か→を押すと数値down
select(1) if Input.keyPush?(K_UP) or Input.keyPush?(K_RIGHT)
select(-1) if Input.keyPush?(K_DOWN) or Input.keyPush?(K_LEFT)
0550デフォルトの名無しさん
2010/04/22(木) 00:06:59#ウインドウの横10、縦10の位置に@numと@answerを
#大きさを決めたfontで表示
Window.drawFont(10,10,"#{@num}==#{@answer}",@font)
end #update はここまで
end #HowMeny はここまで
hm = HowMeny.new #HowMeny はhmに入れられた
# ウィンドウの設定
Window.caption="数当てゲーム" #ゲームの名前"
Window.width=300 #ウインドウの横サイズ
Window.height=500 #ウインドウの縦サイズ
#ウインドウのループ表示
Window.loop do
#Escを押したら終了
break if Input.keyPush?(K_ESCAPE)
hm.update
end #ウインドウのループ終了
0551デフォルトの名無しさん
2010/04/22(木) 00:41:08俺はあんたがやりたいこともそのためにはどこガ悪いのかもよくわからんけどな。
require "dxruby" # dxruby ライブラリ
# メインとなるクラス
class HowMeny
def initialize
@num=rand(10) + 1 # 1〜10 ランダム
@answer = 1 # ウインドウ表示 初期値
@font=Font.new(24) # フォントサイズ
end
def select(val)
@answer += val
if @answer < 1
@answer = 10
elsif @answer > 10
@answer = 1
end
end
def update
#キーの↑か←を押すと数値up、↓か→を押すと数値down
select(1) if Input.keyPush?(K_UP) or Input.keyPush?(K_RIGHT)
select(-1) if Input.keyPush?(K_DOWN) or Input.keyPush?(K_LEFT)
# 表示
Window.drawFont(10,10,"#{@num}==#{@answer}",@font)
end
end
0552デフォルトの名無しさん
2010/04/22(木) 00:50:141.8.7のやつでOSは64bitです?
0553デフォルトの名無しさん
2010/04/22(木) 01:03:340554デフォルトの名無しさん
2010/04/22(木) 01:21:21レスサンクス
もっかいやってみます
0555548=549=550
2010/04/22(木) 03:30:46>>549〜>>550のプログラムを実行すると、ランダムで出てくる数字と
キーボードの上下で数が変わる数字がウインドウに出てきます。
その「数字」を「文字」にしたいんです。
0556デフォルトの名無しさん
2010/04/22(木) 04:25:14文字列の部分だけ
SERIF = ['人がごみのようだ','当たらなければ','とらすとみー']
NAME = ['ムスカ','シャア','ハトヤマ']
num = ans = 0
str = "#{SERIF[num]} をいった人は #{NAME[ans]}"
あとプログラムで数値を扱う時は1からじゃなくて0から始める方が都合がいい
0557デフォルトの名無しさん
2010/04/22(木) 07:29:010558デフォルトの名無しさん
2010/04/22(木) 08:44:540559デフォルトの名無しさん
2010/04/22(木) 09:29:140560デフォルトの名無しさん
2010/04/22(木) 09:59:420561デフォルトの名無しさん
2010/04/22(木) 10:31:550562デフォルトの名無しさん
2010/04/22(木) 10:36:240563デフォルトの名無しさん
2010/04/22(木) 11:28:06大文字小文字じゃないぞ、全角半角だぞ
0564デフォルトの名無しさん
2010/04/22(木) 11:28:42$KCODE = 'SJIS'
/[^a-zA-Za-zA-z]/
0565548=549=550
2010/04/22(木) 13:19:01ことってできます?クラスとか深く理解してないからあまり使いたくない
>>556の入れてみたんだけど何でかうまくいかなかったんでできる範囲でやってみました。
require "dxruby"
serif=['人がごみのようだ','当たらなければ','とらすとみー']
name= ['ムスカ','シャア','ハトヤマ']
a = serif[rand 3]
b = name[1]
setumei="名台詞を言ったのは誰?"
font1=Font.new(24)
font2=Font.new(12)
Window.drawFont(10,10,"#{a} をいった人は #{b}",font1)
Window.drawFont(10,40,setumei,font2)
Window.loop do
end
これにキボドの上下で人物名の選択 と台詞と人物が一致したら成功コメント、
ミスならミスコメントを表示したいんですが、結果として可能ですか?
0566デフォルトの名無しさん
2010/04/22(木) 13:29:250567デフォルトの名無しさん
2010/04/22(木) 14:24:48とか言って作ったらなんか潰しのきかない代物になったのはおかしい
投稿用に一行に縮めた部分があるので注意
@data = [{'id' => 1, 'name' => 'ムスカ', 'say' => '見ろ!人がごみのようだ!'},
{'id' => 2, 'name' =>'シャア', 'say' => '当たらなければどうということはない'},
{'id' => 3, 'name' =>'ハトヤマ', 'say' => 'トラストミー'}]
def fetch_data_by(id)
@data.each do |h| return h if h['id'] == id.to_i end
puts "エラー: #{id} にマッチする内部データがありません!"
end
def show_prompt(id)
puts '誰のセリフ? 数字とEnter'
puts "「#{fetch_data_by(id)['say']}」"
puts @data.map{|h| "#{h['id']}: #{h['name']}"}.join(', ')
end
def user_input
while input = $stdin.gets do
return input.chomp.to_i
end
end
def show_ok(id)
puts '正解!'
puts "#{fetch_data_by(id)['name']}「#{fetch_data_by(id)['say']}」"
end
def show_true_answer(id)
puts "残念正解は#{fetch_data_by(id)['name']}でした"
end
mondai_id = rand(@data.size) + 1
show_prompt(mondai_id)
if user_input == mondai_id then show_ok(mondai_id) else show_true_answer(mondai_id) end
0568デフォルトの名無しさん
2010/04/22(木) 20:52:56標準状態だとwebrickのバージョンとか例外を起こしたクラス名等が
表示されてしまうのでこれらを消したいです
0569デフォルトの名無しさん
2010/04/22(木) 21:10:30これで
hogehoge
みたいに出力されるとき、#{text}のtextにhogehogeが入っていて、
#{ }は代入しているという理解であってますか?
0570デフォルトの名無しさん
2010/04/22(木) 21:40:30正攻法は何だろうね。とりあえず、WEBrick::HTTPResponse に
create_error_page というメソッドを定義するとそれを使って処理
できるという造りにはなっている。
1/2の確率で ガッ されるサーバ
require 'webrick'
server = WEBrick::HTTPServer.new(Port: 10000)
def server.service(req, res)
def res.create_error_page
@body = 'ga!'
end
super
end
server.mount_proc '/', ->(req, res) do
raise StandardError, 'nullpo!' if rand < 0.5
res.body = 'OK'
end
server.start
0571デフォルトの名無しさん
2010/04/22(木) 22:02:47変数 text が (String のインスタンスである) 'hogehoge' を指していると
きはもちろんそうなるが text.to_s した結果が 'hogehoge' になるように
定義された String でないオブジェクトであっても、そうなる。
o = Object.new
puts "o=#{o}" #=> o=#<Object:0x00000101096e40>
def o.to_s; 'hogehoge'; end
puts "o=#{o}" #=> o=hogehoge
" ... " の中で #{ } を使うと、
1. 中にある式(変数単体でぽつんと置いても式)の計算をする
2. 1. の結果が String ならそれをそのまま使って置換える。
3. 1. の結果が Stringでなけい場合は、そいつに対して to_s メソッドを呼ぶ。
4. 3. の結果が String ならそれで置換える。
4. 3. の結果が String でない場合は処理系依存の内容の Stringになる。
0572デフォルトの名無しさん
2010/04/22(木) 22:07:40String ならそのまま入る
そうでなければそのオブジェクトの to_s メソッドを行った結果が入る
puts "「#{text}」" と puts '「' + text + '」' はおおむね結果一緒だが Ruby では前者を無闇に好む
0573デフォルトの名無しさん
2010/04/22(木) 22:12:39ありがとうございます。
0574デフォルトの名無しさん
2010/04/22(木) 22:27:490575デフォルトの名無しさん
2010/04/22(木) 23:05:01と思ったけど
> '%s: %d' % ['banana', '200']
=> "banana: 200"
やっぱりやめときます
0576デフォルトの名無しさん
2010/04/22(木) 23:09:55gettext ライブラリを使うときはそっちがお勧め。
0577デフォルトの名無しさん
2010/04/22(木) 23:25:28おkちょっとそこまで国際化してくる
0578デフォルトの名無しさん
2010/04/22(木) 23:30:33っていうのは本当
0579デフォルトの名無しさん
2010/04/22(木) 23:56:43連結なので文字列再利用に注意
0580548=549=550
2010/04/23(金) 00:42:57どうやら自分には早かったみたいです。しばらく修行してきます
0581デフォルトの名無しさん
2010/04/23(金) 16:47:48にすれば文字列再利用しても問題ない。
けど、"#{}" の方が早いんじゃないだろうか。
0582デフォルトの名無しさん
2010/04/23(金) 16:58:02みたいな日付をunix timeに変換したいとき、正規表現ではなく、直接変換できる関数はありますか?
0583デフォルトの名無しさん
2010/04/23(金) 17:13:55require 'Time'
Time.parse('Sat Mar 06 18:20:37 +0900 2010').to_i
=> 1267867237
Time.at(0).to_s
=> "Thu Jan 01 09:00:00 +0900 1970"
Time.parse(_).to_i
=> 0
0584デフォルトの名無しさん
2010/04/23(金) 17:21:57いろいろ試してみたけどダメぽ
「このパッケージをインストールするときに予期しないエラーが検出されました。このパッケージは問題がある可能性があります。エラーコードは2902です。」
つうことで、初心者のくせに仕方なくRubyInstaller1.8.7の方を使うことになった
質問するけど許してね★ミ
0585デフォルトの名無しさん
2010/04/23(金) 17:22:57さんくす!
0586デフォルトの名無しさん
2010/04/23(金) 18:24:54ありがとう。やってみます
0587デフォルトの名無しさん
2010/04/23(金) 18:46:49sleep Time.parse(target) - Time.now
とすると1時間待ちで5分ずれたりします。
sleep 0.1 until Time.parse(target) < Time.now
のように定期的に時刻を調べないといけないのでしょうか?
0588デフォルトの名無しさん
2010/04/23(金) 18:54:52Time はシステムの時刻を読む
ずれてるのはシステムの時刻
0589デフォルトの名無しさん
2010/04/23(金) 19:05:13自分は>>587じゃないけどsleepって誤差がでかくね?
マシンに負荷が掛かっている状態でsleep(5)とかやると平気で10秒とか待たされるが・・・
つか、自分もインターバル処理をしようと思って同じ事で悩み中
(sleepで数日とか数週間待たせたら大変なことになりそうだ)
0590デフォルトの名無しさん
2010/04/23(金) 19:10:04sleep 60*60 が1時間0分0秒のスリープにならずに数分ずれるという話だ
…当たり前じゃんね、そんなの
素直にスケジューラ使え
サーバで提供されてないならサーバに負担かけるな氏ね
0591デフォルトの名無しさん
2010/04/23(金) 19:19:010592587
2010/04/23(金) 19:43:210593デフォルトの名無しさん
2010/04/23(金) 19:54:33sleep を呼んだのは 1 回だけ?それともループの中で何度も呼んでる?
0594デフォルトの名無しさん
2010/04/23(金) 19:58:420595デフォルトの名無しさん
2010/04/23(金) 20:06:161秒、1分ごとにチェックでいいんじゃね
0596デフォルトの名無しさん
2010/04/23(金) 20:52:11sleep(5) # 5秒待ち
e = Time.now
p e - s
みたいなコードを実行してみれば判るよ
そのままでも誤差が酷いけどバックグラウンドで
負荷が掛かっていると笑えない状態になる
0598587
2010/04/23(金) 21:11:350599デフォルトの名無しさん
2010/04/23(金) 21:21:420600デフォルトの名無しさん
2010/04/23(金) 21:24:51何が問題か理解しているかい?
0601デフォルトの名無しさん
2010/04/23(金) 22:00:59:PerlもJavaも駄目だったがRubyで行けた時は「楽しいってこういうことか」と納得した。
0602デフォルトの名無しさん
2010/04/23(金) 22:04:090603デフォルトの名無しさん
2010/04/23(金) 22:09:420604デフォルトの名無しさん
2010/04/23(金) 22:29:070605デフォルトの名無しさん
2010/04/23(金) 22:36:110606デフォルトの名無しさん
2010/04/23(金) 23:36:37>>596で30分待ったけど
1800.048342 だった
0607デフォルトの名無しさん
2010/04/23(金) 23:37:280608デフォルトの名無しさん
2010/04/23(金) 23:57:03デスクトップに出たruby consoleで画面を開くまでは出来たのですが、
いざ文字を表示させようというところで詰まってしまいました
ruby -vでバージョン確認は出来たのですが、例えば
print ("Hello\n")
と入力すると 「デバイス PRN を初期化できません」と出てしまいます
検索で似たような質問はあったのですがあちらはPerlだったのでよくわかりませんでした
どうかアドバイスお願いします
0609デフォルトの名無しさん
2010/04/24(土) 00:04:410610デフォルトの名無しさん
2010/04/24(土) 00:05:00s = Time.now
sleep(3600) # 1h
e = Time.now
p e - s
結果が出るまでおやつみ
>>608
その Ruby Console は Ruby 用の環境変数(ぐぐって)設定済みのコマンドプロンプトだよ
つまり dir や copy, そして print (テキスト印刷用の DOS コマンド)は受け付けても
Ruby の式である print "hello\n" は受け付けない
対話的に Ruby の式や文を試したいのであれば
> irb
とする
0611デフォルトの名無しさん
2010/04/24(土) 00:08:00(Ruby Console アイコンをダブルクリックして実行)
C:\Users\Public\Desktop>print
印刷するファイルがありません
C:\Users\Public\Desktop>print "hello\n"
デバイス PRN を初期化できません
C:\Users\Public\Desktop>irb
irb(main):001:0> print "hello\n"
hello
=> nil
0612608
2010/04/24(土) 00:24:07こんなつまらない質問でお手数をおかけしてすみませんでした
0613デフォルトの名無しさん
2010/04/24(土) 01:04:51バックグラウンド(該当プロセス以外)で負荷を掛けた?
うちだとYoutubeを再生しながら>>596を実行すると11とかになるよ
SMP/SMT環境だと多重で負荷を掛けないと判らないかもしれないけど
0614610
2010/04/24(土) 02:10:413600.000908
>>613
環境ぐらい示したらいいのでは
0615デフォルトの名無しさん
2010/04/24(土) 04:07:46WinXP SP3 / CoreSolo U1400 1.2GHz / Mem 1.5GByte
>ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-mswin32]
普通に実行(ただしバックグラウンドでWebブラウザが間欠的にCPUを使用)
>ruby test.rb
6.0
Youtube/fmt=22を再生しながら実行(CPU使用率は100%に張り付き)
>ruby test.rb
14.297
コードは>>596と同じ物
長時間である程度の精度が欲しければ>>595で概ね解決するけどちょっと面倒だな
0616デフォルトの名無しさん
2010/04/24(土) 04:34:32sleep 60 - Time.now.sec
ってやってたな
0617デフォルトの名無しさん
2010/04/24(土) 07:47:23tumblr-apiというgemがhttpartyというgemに依存していたのですが、
httpartyの最近のバージョンでは動かなくなっていて、
gem 'httparty', "<= 4.3"
require 'httparty'
という記述があり、httpartyの4.3をインストール済みにもかかわらず、
最新バージョンのhttpartyを読みに行っているみたいでtumblr-apiが上手く動作しないという現象がおきました。
4.3より新しいhttpartyをアンインストールしたところ正しく動作するようになったのですが、
これでは不便です。
rubygemsの仕様的にこれで正しいのでしょうか?
対処法はないのでしょうか?
jeffkreeftmeijer's tumblr at master - GitHub
http://github.com/jeffkreeftmeijer/tumblr
rubygems 1.3.6です。
0618617
2010/04/24(土) 08:02:08httpartyは0.4.3以下が想定されていたみたいです。(新しいバージョンは 0.5.3)
> gem 'httparty', "<= 4.3"
4.3以下って…これ記述ミスですね。
0619デフォルトの名無しさん
2010/04/24(土) 08:21:27「俺の知ってる過去のバージョンでは概ね動作するが、知らない未来のバージョンでは動作を保証しない」
というバージョン指定の仕方は普通
というか、通常、httpparty 4.3 が一緒にインストールされるはずなんだが
0620デフォルトの名無しさん
2010/04/24(土) 08:25:39Rakefile:
gem.add_dependency('httparty')
gem.add_dependency('activesupport')
tumblr.rb
require 'rubygems'
gem 'httparty', "<= 4.3"
require 'httparty'
うん、記述ミスだな
というかこれ酷いな
0621デフォルトの名無しさん
2010/04/24(土) 09:34:33昔業務ソフトを納品した先で
パソコンからピーピー音がするんですと
仕事出来ないからすぐ来てって呼ばれて
関係ないのに渋々逝ったら
キーボードの上に物が置かれていた
(仕事は他のPCでやってるじゃねーか)
っていう出来事を思い出した
0622606
2010/04/24(土) 11:18:22WinXP SP3 / CeleronM 1.3GHz / Mem 512MByte
ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mswin32]
高負荷状態(使用率ほぼ100%)でも>>596で誤差0.1秒未満なんだよなあ
先の例だと負荷状態2、3割なのに1時間で5分もずれてるし
負荷というより環境の違いなのかな
とりあえず参考になりましたお二方ありがとう
0623デフォルトの名無しさん
2010/04/24(土) 14:47:36$ptn = "/(日本語|英語)/u"
$str = "日本語難しい"
if Regexp.new($ptn) =~ $str then
puts 1
else
puts 0
end
としたファイルをUTF8で保存し、端末で実行しましたがマッチしないようです。
端末で-Kuとしてもだめでした。原因はどこにあるかわかりますか?
0624デフォルトの名無しさん
2010/04/24(土) 14:57:47あれは正規表現リテラル用
0625デフォルトの名無しさん
2010/04/24(土) 14:59:32str = '日本語難しい'
if /#{pattern}/u =~ str then
puts 1
else
puts 0
end
グローバル変数使う人間は殴られて月まで吹っ飛べ
0626デフォルトの名無しさん
2010/04/24(土) 15:16:56>>625
うまくいきました!ありがとうございます
0627587
2010/04/24(土) 16:09:20次のコードで実験
5.times{ s=Time.now; sleep(10); e=Time.now; p e-s; }
結果
ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-mswin32]
11.969
12.375
12.593
12.86
13.609
ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mswin32]
10.000064
10.000064
10.000064
10.000064
10.000064
>>615氏も同じバージョンで同様の現象が起きていますので、
どこかのバージョンで修正されたのだと思います。
レス下さった方々ありがとうございました。
0628デフォルトの名無しさん
2010/04/24(土) 18:04:480629617
2010/04/25(日) 00:03:01やっぱりそうですよね。
gemインスコの依存関係でバージョン指定されてなくてhttpartyの最新版が入ってきちゃうのに
その最新版では上手く動かなくて、一応ライブラリ内でバージョン指定はしているけどそこが記述ミスってるせいで
httpartyの最新版が入れられなくなってるみたいで・・・。
RubyGemsって下手するとこういうことになるんですね。httpartyの新しいバージョンにはとくに依存してなくて助かりましたが。
railsでもgemsはfreezeしろ、とかpluginで入れろとか、Rails3からbundler推奨になったのはこういうことなのかな。
むかしのVBのDLLヘルみたいだw
なれないけどtumblr-apiはgithubにあるからforkして修正してpullしてケロ!ってやってみればいいのかな。
0630デフォルトの名無しさん
2010/04/25(日) 00:17:56連絡はすると好ましいが、面倒なら別にしなくてもいい
0631デフォルトの名無しさん
2010/04/25(日) 00:29:50何らかの形で作者のコードに反映されるように仕向けたほうが後々楽ではある。
pull requestが面倒なら Issues に報告するだけでもOK。
0632デフォルトの名無しさん
2010/04/25(日) 15:12:40irbを起動し、直後に自動的にload "foo.rb"を実行して
入力待ち状態にしたいんですが
そういう事が可能になるirbの引数みたいなのってないですか?
デバッグ中にそういう使い方ができたら便利そうなんですが。
環境はXP+ruby 1.8.7 (2010-01-10 patchlevel 249) [i386-mswin32]
0633デフォルトの名無しさん
2010/04/25(日) 15:25:36irb -rfoo でいいんじゃね?
0634デフォルトの名無しさん
2010/04/25(日) 16:00:04irb では基本的にはできない
ということを踏まえた上で、以下を実行
$ ruby -rirb -e "require 'date'; @today=Date.today; IRB.start"
irb> p @today.to_s
"2010-04-25"
0635デフォルトの名無しさん
2010/04/25(日) 16:24:24メインのコードを走らせる手前で
require "irb"; IRB.start
とソースに書いておいてもよさそうですね。
あれこれいじってquitすればそのまま実行を継続できるからデバッグブレーク的に使えそう。
何気に神機能のような。
ありがとうございました。
0636デフォルトの名無しさん
2010/04/25(日) 21:46:37ちょっと調べれば分かる程度の質問している奴が
なぜRubyやろうと考えるのかね
0637デフォルトの名無しさん
2010/04/25(日) 21:52:170638デフォルトの名無しさん
2010/04/25(日) 21:55:170639デフォルトの名無しさん
2010/04/25(日) 21:57:460640デフォルトの名無しさん
2010/04/26(月) 08:19:100641デフォルトの名無しさん
2010/04/26(月) 08:54:470642デフォルトの名無しさん
2010/04/26(月) 09:22:01他の言語を選べるならそっちでやったほうが簡単で質も高いものが作れると思われる
0643デフォルトの名無しさん
2010/04/26(月) 10:51:55>レベルに低い質問ばかりだな
>ちょっと調べれば分かる程度の質問している奴が
>なぜRubyやろうと考えるのかね
きみのような上級者には初心者の相手は苦痛だろう。
きみにはもっとふさわしい居場所があるから、初心者スレには二度とこないでね。
0644デフォルトの名無しさん
2010/04/26(月) 13:56:57Ruby で GUI はタブー
0645デフォルトの名無しさん
2010/04/26(月) 14:58:28Ruby で GUI
http://pc12.2ch.net/test/read.cgi/tech/1269609576/
0646デフォルトの名無しさん
2010/04/26(月) 15:33:47せめてDXRubyとか勧めろよ
0647デフォルトの名無しさん
2010/04/26(月) 15:37:430648デフォルトの名無しさん
2010/04/26(月) 15:52:00個人的には狭い範囲で GUI=ウィンドウシステム ってイメージなので
Game内部では独自のウィンドウシステムを作ることはあるかもしれませんけど
さすがにレースゲームの物理演算的なのをRubyでやるのは無理がありそうですが
RubyでGameってそんなに非現実的ですかね
Pythonなどより動作が遅くなるとしても
SDLやDirectXとかのラッパーを使えば作れそうですが
ただ、Gameを一本完成させるだけのやる気と根気があるのならば
コンパイル型の言語でも作れるだろうし
その方が処理速度に余裕がある分だけ、Game内で出来る幅が広がるでしょうけれど
0649デフォルトの名無しさん
2010/04/26(月) 16:26:490650デフォルトの名無しさん
2010/04/26(月) 16:28:310651デフォルトの名無しさん
2010/04/26(月) 16:33:150652デフォルトの名無しさん
2010/04/26(月) 17:57:45不可能ではないです。
0653デフォルトの名無しさん
2010/04/26(月) 18:16:40frozen-bubble は perl だよね
これ perl で書けるのかって出た当時感動した覚えある
0654デフォルトの名無しさん
2010/04/26(月) 18:38:04最初からCでやる罠
0655デフォルトの名無しさん
2010/04/26(月) 18:46:420656デフォルトの名無しさん
2010/04/26(月) 18:49:04「やる気があれば」
こればっかw
0657デフォルトの名無しさん
2010/04/26(月) 18:50:56いいえ、ただの無能です
0658デフォルトの名無しさん
2010/04/26(月) 19:07:00,/ ノ ヽ ~\
/ ノ IPA ヽ ~\
/ ノ ヽ、 `ヽ
| ノ / ̄\ / ̄~ヽ ヽ i
| ノ | ノ
\ | <●> <●> ( )
\ | | | i /
| / ヽ レ
i (●_●) /
i、 ,-――-、 ・ /
i、 <(EEEEE)> ∵/ Ruby使いこなせない落ちこぼれは消えろよ
i、 \ ./ /
\ ーー ,ノ
,,.....イ.ヽヽ、ー-―一ノ゙-、.
: | '; \_____ ノ.| ヽ i
| \/゙(__)\,| i |
0659デフォルトの名無しさん
2010/04/26(月) 20:56:05Rubyでゲームは余裕。
レンダリングエンジンや物理エンジンは全部C/C++で書いて
RubyからはAPIを呼び出すだけ。処理の90%をC/C++で実行する。
もちろんエンジン(ライブラリ)は再利用可能な形でフリーで公開する。
というわけで>>648作って。
0660デフォルトの名無しさん
2010/04/26(月) 22:08:270661デフォルトの名無しさん
2010/04/26(月) 22:15:07ちょっと調べれば分かる程度の質問している奴が
なぜRubyやろうと考えるのかね
0662デフォルトの名無しさん
2010/04/26(月) 23:17:41つまりRubyでは何も出来ないということですねわかります
0663デフォルトの名無しさん
2010/04/27(火) 00:47:550664デフォルトの名無しさん
2010/04/27(火) 00:51:000665デフォルトの名無しさん
2010/04/27(火) 05:38:220666デフォルトの名無しさん
2010/04/27(火) 06:56:130667デフォルトの名無しさん
2010/04/27(火) 07:47:200668デフォルトの名無しさん
2010/04/27(火) 08:11:530669デフォルトの名無しさん
2010/04/27(火) 08:14:34全否定っすか
0670デフォルトの名無しさん
2010/04/27(火) 09:22:31Rubyは野良ライブラリが多いという印象
0671デフォルトの名無しさん
2010/04/27(火) 09:31:23優秀ライブラリがたくさんあるが野良が少なめで大人しい → Python
優秀ライブラリはともかく野良ライブラリが大量にあって単に怪しい → Ruby
Rubyは「楽しい」が、「利用しにくい」とも言える
0672デフォルトの名無しさん
2010/04/27(火) 09:40:110673デフォルトの名無しさん
2010/04/27(火) 10:01:150674デフォルトの名無しさん
2010/04/27(火) 10:38:41Ruby は楽しいしせいぜい数十行程度のスクリプトなら
他の言語に比べてストレス感じない
それ以上の場合は俺は他の言語(普通C++)で書いてる
Ruby でも色々できるの知ってるけど好みや慣れもあるしね
0675デフォルトの名無しさん
2010/04/27(火) 10:51:47>他の言語に比べてストレス感じない
コード書かないでWPFみたいなことができますか?
0676デフォルトの名無しさん
2010/04/27(火) 11:16:100677デフォルトの名無しさん
2010/04/27(火) 11:52:490678デフォルトの名無しさん
2010/04/27(火) 12:02:04かなりほうぼうに無理させまくって維持してた状態
0679デフォルトの名無しさん
2010/04/27(火) 12:17:520680デフォルトの名無しさん
2010/04/27(火) 12:55:51IronRubyならWPFは使えるけど、コード書かないでは厳しいな
あと多分>>674は文法レベルの話をしてるんじゃないかな
実装とか楽できる機構とか周辺環境はまた別問題だと思う
http://www.hanselman.com/blog/WPFSampleInIronRubyTalkingViaCToWesabe.aspx
0681デフォルトの名無しさん
2010/04/27(火) 13:04:220682デフォルトの名無しさん
2010/04/27(火) 13:30:30そうやって築いたWindows系信者じゃなくてボランティアも
冷遇のせいでどんどん離れて逝ってる訳ですね
0683デフォルトの名無しさん
2010/04/27(火) 13:37:22何年前の化石よ
アンチ活動はこちらで
http://pc12.2ch.net/test/read.cgi/tech/1249737531/
0684デフォルトの名無しさん
2010/04/27(火) 14:08:020685デフォルトの名無しさん
2010/04/27(火) 14:33:530686デフォルトの名無しさん
2010/04/27(火) 15:02:320687デフォルトの名無しさん
2010/04/27(火) 17:27:250688デフォルトの名無しさん
2010/04/27(火) 18:20:22携帯アプリぐらいならRubyで作れるんじゃ?
0689デフォルトの名無しさん
2010/04/27(火) 19:21:52携帯アプリってなに?
0690デフォルトの名無しさん
2010/04/27(火) 19:32:24小さい文字のCGIあたりでなんかすれば携帯アプリと名乗っていいんじゃないかと思う
0691デフォルトの名無しさん
2010/04/27(火) 20:42:42auth_server = WEBrick::HTTPServer.new({
〜,
:ServerType => WEBrick::SimpleServer,
:AccessLog => [[open("access.log", "a"), WEBrick::AccessLog::COMMON_LOG_FORMAT]]
})
みたいに書くとファイルがクローズするまでログが書き出されず、メモリを圧迫するほか
Rubyインタプリタが落ちたときにログを失う可能性があります
逐次ディスクに書き出すようにしたいのですが良い方法があったら教えてください
0692デフォルトの名無しさん
2010/04/27(火) 21:22:54>>691
begin
file = File.open('access.log', 'a')
file.sync = true
…
:AccessLog => [[file, WEBrick::AccessLog::COMMON_LOG_FORMAT]]
…
rescue Exception
file.close
raise
end
END{ file.close unless file.closed?}
0693691
2010/04/27(火) 21:38:54ありがとう。その方法でやってみます
しかしサーバー側のログはWEBrick::BasicLogなのにアクセスログがIO・・・
何でこんな作りになっているんだ(´・ω・`)
0694デフォルトの名無しさん
2010/04/27(火) 22:42:38Ruby 本体が Windows 環境に冷たいからこそ、
IronRuby の本を出したら売れそうだな
0695デフォルトの名無しさん
2010/04/27(火) 23:45:29別にIOじゃなくても<<が定義されていれば良いから
LoggerとかStringとかでもいいのよ
0696デフォルトの名無しさん
2010/04/28(水) 07:43:460697デフォルトの名無しさん
2010/04/28(水) 07:45:52,/ ノ ヽ ~\
/ ノ IPA ヽ ~\
/ ノ ヽ、 `ヽ
| ノ / ̄\ / ̄~ヽ ヽ i
| ノ | ノ
\ | <●> <●> ( )
\ | | | i /
| / ヽ レ
i (●_●) /
i、 ,-――-、 ・ /
i、 <(EEEEE)> ∵/ どういたしまして
i、 \ ./ /
\ ーー ,ノ
,,.....イ.ヽヽ、ー-―一ノ゙-、.
: | '; \_____ ノ.| ヽ i
| \/゙(__)\,| i |
0698デフォルトの名無しさん
2010/04/28(水) 18:11:14C++が商業系のゲームソフトでメインに使われている言語と聞いたので
C++を学ぼうと思ってるんですが
rubyとC++ってどちらの方がレベルが高いのでしょうか?
おそらくC++が高いと個人的に思ってるのですが
0699デフォルトの名無しさん
2010/04/28(水) 18:15:12,/ ノ ヽ ~\
/ ノ IPA ヽ ~\
/ ノ ヽ、 `ヽ
| ノ / ̄\ / ̄~ヽ ヽ i
| ノ | ノ
\ | <●> <●> ( )
\ | | | i /
| / ヽ レ
i (●_●) /
i、 ,-――-、 ・ /
i、 <(EEEEE)> ∵/ お前は何を言っているんだ?
i、 \ ./ /
\ ーー ,ノ
,,.....イ.ヽヽ、ー-―一ノ゙-、.
: | '; \_____ ノ.| ヽ i
| \/゙(__)\,| i |
0700デフォルトの名無しさん
2010/04/28(水) 18:35:53>>698
レベルが高かったらどうするの?
低いって答が来たらどうするん?
0701デフォルトの名無しさん
2010/04/28(水) 19:05:24低レベル 言語
高レベル 言語 でググって出直してこいw
0702デフォルトの名無しさん
2010/04/28(水) 20:07:310703デフォルトの名無しさん
2010/04/28(水) 20:36:56もう他の言語やってらんねーな
0704デフォルトの名無しさん
2010/04/28(水) 20:39:040705デフォルトの名無しさん
2010/04/28(水) 20:42:170706デフォルトの名無しさん
2010/04/28(水) 20:51:230707デフォルトの名無しさん
2010/04/29(木) 14:32:400708デフォルトの名無しさん
2010/04/29(木) 15:11:300709デフォルトの名無しさん
2010/04/29(木) 15:38:44ピンチ
0710デフォルトの名無しさん
2010/04/29(木) 15:41:02そりゃそだなこんな言語知ってても就職できないわなw
0711デフォルトの名無しさん
2010/04/29(木) 16:49:270712デフォルトの名無しさん
2010/04/29(木) 17:31:520713デフォルトの名無しさん
2010/04/29(木) 18:34:530714デフォルトの名無しさん
2010/04/29(木) 22:20:500715(u_・y) ◆rT33C51l9k
2010/04/30(金) 03:26:52そこの名無しを分析してみた
1 Ruby以外の言語の信者
2 Rubyでの金儲け手段に気づいていて競合を少しでもなくそうとしている
3 私怨
4 実はMatz
5 もしかしたらRubyが理解出来なかった人
6 endが大嫌い
やっぱ4かな
逆に叩いて火をつけようとしてるとか
0716デフォルトの名無しさん
2010/04/30(金) 03:48:110717デフォルトの名無しさん
2010/04/30(金) 10:24:250718デフォルトの名無しさん
2010/04/30(金) 10:43:310719デフォルトの名無しさん
2010/04/30(金) 10:46:450 も "" も [] も真です
クラスの基底であることを調べたい場合は i.zero? とか str.empty? とかしてくだされ
0720デフォルトの名無しさん
2010/04/30(金) 10:48:35うっせーよ
0
とだけ書いた1バイトのファイル送りつけるぞ
0721デフォルトの名無しさん
2010/04/30(金) 10:58:330点だな
0722デフォルトの名無しさん
2010/04/30(金) 11:09:21なにこの中学生みたいな発想
表示されている数はただの概念説明用識別符号で絶対ではない
テストの点数は10進の正の整数と定義付けされているだけだ
0723デフォルトの名無しさん
2010/04/30(金) 11:27:440724デフォルトの名無しさん
2010/04/30(金) 11:48:390725デフォルトの名無しさん
2010/04/30(金) 12:05:42嫌ならActiveSupport入れてblank?使え
0726デフォルトの名無しさん
2010/04/30(金) 12:14:200727デフォルトの名無しさん
2010/04/30(金) 15:25:380728デフォルトの名無しさん
2010/04/30(金) 15:45:570729デフォルトの名無しさん
2010/04/30(金) 15:47:580730デフォルトの名無しさん
2010/04/30(金) 16:10:05英文じゃないものってなんですか
0731デフォルトの名無しさん
2010/04/30(金) 16:21:38ライブラリはあったかなあ
0732デフォルトの名無しさん
2010/04/30(金) 19:05:29すいません仕様があいまいでした。
日本語か英語か判別したいです。
0733デフォルトの名無しさん
2010/04/30(金) 19:26:070734デフォルトの名無しさん
2010/04/30(金) 19:29:070735デフォルトの名無しさん
2010/04/30(金) 19:32:550736デフォルトの名無しさん
2010/04/30(金) 19:36:39・ UTF-8 等で、日本語圏で使われている文字が1文字でも含まれているかどうか
なら調べられると思う
0737デフォルトの名無しさん
2010/04/30(金) 19:40:29Google AJAX Language API
http://code.google.com/intl/ja/apis/ajaxlanguage/
0738デフォルトの名無しさん
2010/04/30(金) 20:34:56日本語
0739デフォルトの名無しさん
2010/04/30(金) 21:53:42UTF16,UTF32だったらUTF8に変換してからもう一度 NKF.guess
って思って試してみたら
UTF32は判別できなかった
英語の文章でもユニコードで記号使ってるとASCIIにならんのもダメだけど
0740デフォルトの名無しさん
2010/05/01(土) 00:25:36putsにて「◯% 完了」と表示させているのですが、◯部分のみを書き換えて
追記や改行はせずに表示させたいのです。
なにかそのようなメソッドは用意されているのでしょうか?
よろしくお願いします。
0741デフォルトの名無しさん
2010/05/01(土) 00:33:300742デフォルトの名無しさん
2010/05/01(土) 04:03:22イマイチ実感わかねってばよ
0743デフォルトの名無しさん
2010/05/01(土) 05:32:250744デフォルトの名無しさん
2010/05/01(土) 07:56:510745デフォルトの名無しさん
2010/05/01(土) 08:15:10とりあえずHashに格納したスクリプトの速さは異常
0746デフォルトの名無しさん
2010/05/01(土) 09:10:200747デフォルトの名無しさん
2010/05/01(土) 09:19:310748デフォルトの名無しさん
2010/05/01(土) 09:21:04ただ、日常の「プログラミングで片付くさまざまなこと」を安楽に片付けることができるので(除くGUI操作)、
メインの「すんごいこと」に気兼ねなく注力できるようになるご利益はあるかも
0749デフォルトの名無しさん
2010/05/01(土) 09:23:05この中に「すごいの」はひとつもないぞ
0750デフォルトの名無しさん
2010/05/01(土) 09:27:49Hashオブジェクトは使わない日はない
Object#hash のことなら自力ではまず使わない
irb> "str".hash
987610256
0751デフォルトの名無しさん
2010/05/01(土) 09:33:50これ何に使うの?
0752デフォルトの名無しさん
2010/05/01(土) 09:52:39大抵はフリーソフトで事足りる
0753デフォルトの名無しさん
2010/05/01(土) 09:54:340754デフォルトの名無しさん
2010/05/01(土) 09:59:04特に使わない
あるクラスの eql? を再定義したとき、
そのクラスのオブジェクトを Hash のキーとして使用許可したい場合に再定義する
irb> class C; def initialize(v); @val=v; end; attr_reader :val; def eql?(o); val.eql?(o.val); end; end
irb> h = {C.new(1) => 'v'}
irb> h[C.new(1)] = 'new!'
irb> p h
{#<C:0xb7557d0c @val=1>=>"v", #<C:0xb7553234 @val=1>=>"new!"}
irb> class C; def hash; val.hash; end; end # reopen
irb> h = {C.new(1) => 'v'}
irb> h[C.new(1)] = 'new!'
irb> p h
{#<C:0xb7549054 @val=1>=>"new!"}
eql? だけでは2回目の C.new(1) が「hに既に入ってるキーと同じ」とみなされなかったが、
hash の値を「eql? が真のとき同一な値になる」ように調整すると「同じキー」として扱われる
0755デフォルトの名無しさん
2010/05/01(土) 10:04:21hash_value とか __hash__ とかにしてくれればよかったのに
0756デフォルトの名無しさん
2010/05/01(土) 10:11:09目的外の動作で上書きしても多勢に問題はないんだけどさ
0757デフォルトの名無しさん
2010/05/01(土) 10:26:42定義がなければ会話できないのかよアホ
0758デフォルトの名無しさん
2010/05/01(土) 10:29:340759デフォルトの名無しさん
2010/05/01(土) 12:30:32そしてパターンマッチの部分をスレッドで並列に動かしたいと思い、自分でなんとか考えて書いてはみたのですが、自信がないので何かアドバイスを頂ければ幸いです。
----
#!/usr/bin/env ruby
log_prog ="/usr/bin/hoge"
command1 ="/usr/bin/fuga"
command2 ="/usr/bin/hogehoge"
open("| #{log_prog}") do |a|
while true
if ( log =a.gets )
t1 =Thread.new do
system(command1) if /patternA/ =~ log
end
t2 =Thread.new do
system(command2) if /patternB/ =~ log
end
else
t1.join
t2.join
exit 0
end
end
end
0760デフォルトの名無しさん
2010/05/01(土) 12:51:33あきらめろ
お前には無理
0761デフォルトの名無しさん
2010/05/01(土) 13:01:41if ファイル更新検知 then
コマンドA if /パターンA/ =~ 更新部
コマンドB if /パターンB/ =~ 更新部
end
end
これでいいんでは
0762デフォルトの名無しさん
2010/05/01(土) 14:20:23で、それぞれ仕事の待ち行列(キュー)を持ってて、メイン処理では
待ち行列に仕事情報をひたすら突っ込む。
require 'thread'
# 仕事1スレッドと待ち行列
q1 = Queue.new
t1 = Thread.start do
while line = q1.pop # 待ち行列から偽(nil, false)が出てきたら終了
system command if /patternA/ =~ line
end
end
# 仕事2...
q2 = ...
t2 = ...
open(...) do |log|
log.each_line do |line|
q1.push line
q2.push line
end
end
q1.push nil # 仕事終了通知
q2.push nil
[ t1, t2 ].each(&:join)
みたいなふいんき(なぜか(ry
0763デフォルトの名無しさん
2010/05/01(土) 15:56:05この程度か
0764デフォルトの名無しさん
2010/05/01(土) 16:10:150765デフォルトの名無しさん
2010/05/01(土) 16:21:35このときに、
3bであれば、[3,b]
3であれば、[3,nil]
5であれば、[5,nil]
7aであれば、[7,nil]
のように取り出したいのですが、正規表現のパターンはどうなるでしょうか?
0766デフォルトの名無しさん
2010/05/01(土) 16:26:04こんな奴がなんでRubyやってるの?
0767デフォルトの名無しさん
2010/05/01(土) 16:27:43配列を自分で作ればいい
正規表現だけをここで聞いたって、ちょっと変えたくなったときに即手詰まりだ
0768デフォルトの名無しさん
2010/05/01(土) 16:28:22宗教活動ですか?
ネガキャンはやめてくださいね。
0769デフォルトの名無しさん
2010/05/01(土) 16:30:36昼間からスレ新着再読み込み連打してる人になに言っても無駄
0770デフォルトの名無しさん
2010/05/01(土) 16:31:12お前がやめればな
0771デフォルトの名無しさん
2010/05/01(土) 16:33:582分間隔でレスつけてるお前らのがすごいよw
0772デフォルトの名無しさん
2010/05/01(土) 16:35:38趣味でやるための言語だろ?
正規表現やマルチスレッドもわからないようなカスなんて
SmallBasicで十分だろ
0773デフォルトの名無しさん
2010/05/01(土) 16:42:03$1([0-9]{1})$2:([a-z]?{0}:{1})
[$1,$2]
0774デフォルトの名無しさん
2010/05/01(土) 16:42:19SmallBasicの宗教活動ですか?
ネガキャンはやめてくださいね。
0775デフォルトの名無しさん
2010/05/01(土) 20:40:290776デフォルトの名無しさん
2010/05/01(土) 20:41:030777デフォルトの名無しさん
2010/05/01(土) 20:42:16どうもunicodeのファイル名だとうまくいかないらしい
調べてみるとこんなQ&Aを見つけた
http://oshiete.goo.ne.jp/qa/3413696.html
だとすれば自分でunicodeを正しく扱うライブラリ作るしかないのか・・でもできないw
先輩方はどうされてますか?
環境:WinXP SP3, ruby1.8.7
0778デフォルトの名無しさん
2010/05/01(土) 20:48:06現行のRuby標準ではUnicode文字の含まれたファイル名を扱うことはどう頑張ってもできない
諦める
0779デフォルトの名無しさん
2010/05/01(土) 20:54:35・ これができる人はそもそも普通に使うのでライブラリとして残らない
・ できない人はそもそもできないからほかの手段を使う
というデッドエンドな感じが…
Win32::Unicode とか gem で作ってる人いないの、みたいな
0780デフォルトの名無しさん
2010/05/01(土) 20:59:09レスありがとうございます
なんとかする方法はないかとずっとあがいていましたが、おかげであきらめられそうです
0781デフォルトの名無しさん
2010/05/01(土) 21:06:50ファイルの読み込みから書き出しまで全部 WIN32OLE 経由でやればなんとでもなる
Ruby のクラスではなく、やりたいことに関する WIN32OLE の知識が必要
0782デフォルトの名無しさん
2010/05/01(土) 21:08:07require 'win32ole'
WIN32OLE.codepage = WIN32OLE::CP_UTF8
fso = WIN32OLE.new('Scripting.FileSystemObject')
a = fso.CreateTextFile("♡♥♡♥.txt", true)
a.WriteLine("This is a test")
a.Close()
というスクリプトがあがってたな
絵文字はUnicodeの絵文字として直に書くこと
0783デフォルトの名無しさん
2010/05/01(土) 21:08:35俺の頭じゃ正規表現だけってのは無理
a = [$3||$1,$2] if s =~ /(?:([2-4])([abc])|(\d))/
0784デフォルトの名無しさん
2010/05/01(土) 22:03:520785デフォルトの名無しさん
2010/05/01(土) 22:10:420786デフォルトの名無しさん
2010/05/01(土) 22:16:16まあ、フツーに作るとUnicodeファイルを安全に読めないのはWindows側の欠陥ではある
gem にすらラッパーがないのはRubyの怠慢…でもないな、なんだろう、ユーザーの怠惰?
PythonはUnicodeファイル名にアクセスできる
PerlはWin32::Unicodeを使えば自己責任でアクセス可能
0787デフォルトの名無しさん
2010/05/01(土) 22:17:290788デフォルトの名無しさん
2010/05/01(土) 22:27:11…半分はそう
RubyはもともとUTF-8には対応してなかった(太古の話だが)
UTF-8に対応できそうとなったときに、Windows9x用のコードとシステムを全部捨てて新しく作ればよかったんだけど
まーそんなことできんわなーだよねーですよねー
0789デフォルトの名無しさん
2010/05/01(土) 22:33:510790デフォルトの名無しさん
2010/05/01(土) 22:40:470791デフォルトの名無しさん
2010/05/01(土) 23:16:24もうwin32に対してOSとのI/FとしてUnicodeは使わない方向なんじゃね
ttp://www.ruby-forum.com/topic/69291
0792デフォルトの名無しさん
2010/05/02(日) 02:09:41としたら、
unexpected tGVAR ,expecting kDO or '{' or '('
というエラーになりました。
どこが間違いでしょうか?
0793デフォルトの名無しさん
2010/05/02(日) 02:29:43「文法的にはこのあとグローバル変数ではなく do か 括弧類が来るはず」
というエラーなんだが、示されたコード自体に文法の間違いはない。
その前のほうの行に何か問題があるはず。
0794デフォルトの名無しさん
2010/05/02(日) 04:45:15make: *** [mod.o] エラー 1
で止まってしまいます。
検索しても、入らないという問題の報告はありますが
解決方法が見つかりません。
rubyはパッケージの1.8.5、ruby-ldapは0.9.8です
うまく入れる方法があれば教えてください
0795デフォルトの名無しさん
2010/05/02(日) 04:54:17Ruby1.8.5は4年も前の不安定版です
いまさら動作するほうが不思議
自分以外のユーザーがいないのなら、ホームディレクトリでRuby1.8.7をコンパイルして使うことをお勧め
0796デフォルトの名無しさん
2010/05/02(日) 05:06:170797デフォルトの名無しさん
2010/05/02(日) 05:18:33まだ Debian のほうが頼れるわ
実用上は自分で rpm 作るのが基本とか CentOS の意味ねえよ
0798デフォルトの名無しさん
2010/05/02(日) 15:33:36aを並び替える(降順)と後々の処理で面倒なので、bを並び替えて、それを使って呼び出したいと考えてます。
処理的にどんな感じになるんでしょうか
0799デフォルトの名無しさん
2010/05/02(日) 15:41:180800デフォルトの名無しさん
2010/05/02(日) 15:49:39プロプログラマーならわかるんだろうか
0801デフォルトの名無しさん
2010/05/02(日) 15:51:27呼び出し方はわかるのですが、
インデックスの並び替えを降順に揃えるメソッドを使って上手く出来ないでしょうか?
できなければ、バブルソートで行こうと思ってるのですが
0802デフォルトの名無しさん
2010/05/02(日) 15:54:580803デフォルトの名無しさん
2010/05/02(日) 16:17:260804デフォルトの名無しさん
2010/05/02(日) 16:57:11その解答は合ってるけど混乱しかしねえw
降順なら b.sort! {|i, j| a[j] <=> a[i] } かな
0805デフォルトの名無しさん
2010/05/02(日) 17:10:02ありがとうございます
0806デフォルトの名無しさん
2010/05/03(月) 16:23:57def size= width, height
@width = width
@hieght = height
end
と書いても
./main.rb:25:in `size=': wrong number of arguments (1 for 2) (ArgumentError)
from ./main.rb:25
とエラーが出ます。引数の数が違うみたいです。
0807デフォルトの名無しさん
2010/05/03(月) 16:35:43ありがとうございました
0808デフォルトの名無しさん
2010/05/03(月) 16:36:28ちなみにRDE使ってます
0809デフォルトの名無しさん
2010/05/03(月) 16:37:150810デフォルトの名無しさん
2010/05/03(月) 16:38:350811デフォルトの名無しさん
2010/05/03(月) 16:48:410812デフォルトの名無しさん
2010/05/03(月) 16:52:18b.sort_by!{|i|a[i]}.reverse!
0813デフォルトの名無しさん
2010/05/03(月) 16:55:22ruby -r profile yourscrupt.rb
あるいは
starttime = Time.now
...
puts Time.now - starttime
するのが手っ取り早い
0814デフォルトの名無しさん
2010/05/03(月) 16:56:52というかそうでもしないとうまく動かないと思う
0815デフォルトの名無しさん
2010/05/03(月) 17:27:12下のほうでできました
ありがとうございます
0816デフォルトの名無しさん
2010/05/03(月) 19:54:25ary.sort_by{rand}
でやると、最初の方だけランダムになってて後ろはもとと同じです。
複数回やっても同じ状態でした。
なにかいい方法はありますか?
0817デフォルトの名無しさん
2010/05/03(月) 19:58:30いやけっこうマジで
基本、「一発ではできない」のでとりあず素直に実装
0818デフォルトの名無しさん
2010/05/03(月) 20:05:38そだな
一度考え方を自力で見つければ全部に応用が利く
ナニがランダムで、ナニがランダムにならないかの認識は最重要
while arr.size > 0 do res << arr.delete_at(rand(arr.size)) end として作った res は
ランダムな分布になれるでしょうか、みたいな
0819デフォルトの名無しさん
2010/05/03(月) 20:12:370820デフォルトの名無しさん
2010/05/03(月) 20:21:28自分でできないやつが、教わってできるようになるかよ。
甘えるな。
0821デフォルトの名無しさん
2010/05/03(月) 20:21:32何か他のところが間違ってるんじゃないかな
0822デフォルトの名無しさん
2010/05/03(月) 20:25:49なんだけど、始めのほうだけランダムになってるってのが謎だな。
0823デフォルトの名無しさん
2010/05/03(月) 20:31:250824デフォルトの名無しさん
2010/05/03(月) 20:34:01けっこうな割合で基礎知識を教えてもらえる可能性があるよ
こういうのは教科書的な基礎素養がないと、どんなに試行錯誤をしても確証が得られないから完全手探り
本当は偏ってるのか、たまたまうまくいったのか、それを確かめるのは通常「自分ではできない」
これを教科書なしで自分でできるなら学者さんになれるぞ
0825デフォルトの名無しさん
2010/05/03(月) 20:59:290826デフォルトの名無しさん
2010/05/03(月) 21:01:03Fooのメンバー変数にアクセスしたいのですがどうすればできますか。
こんな感じです。
class Foo
attr_accessor :bar
class Bar
def [] n
@vars[n]
end
end
def initialize
@vars = [10, 20, 30]
@bar = Bar.new
end
end
foo = Foo.new
puts foo.bar[1]
0827デフォルトの名無しさん
2010/05/03(月) 21:04:58とりあえず ary.shuffle ではダメなのはバージョンの都合?
0828デフォルトの名無しさん
2010/05/03(月) 21:07:17このスレ、何も書いてなけりゃ1.8.7限定だし回答も1.8.7限定推奨
アルコトを可能にさせるためだけに1.9.1入れさせるとかないわー
0829デフォルトの名無しさん
2010/05/03(月) 21:10:07クラス内クラスは単なる定数のスコープがネストしているだけです。
Javaのinner classにあるFoo.this のような参照は持っていないので、
Bar生成時にself(Fooインスタンス)を渡して内部で参照を持つように
してください。
0830デフォルトの名無しさん
2010/05/03(月) 21:11:221.8.7にArray#shuffleあるんだけどな。
0831デフォルトの名無しさん
2010/05/03(月) 21:16:18module Foo
class Bar
end
end
でBarからFooに対してできることと同じ
だからインスタンス変数(のことだよね?)にどうこうはできない
このへんはClassがModuleのサブクラスだから
classでもmoduleと同様に名前空間にできるとかいう話
>>828
1.8.7にArray#shuffleあるでしょ
0832デフォルトの名無しさん
2010/05/03(月) 21:16:34Rubyにメンバー変数というものはない
呼び名で機能を期待されるので、RubyのものはRubyでの呼び名を使うことを強く勧める
インスタンス変数と言われれば、メンバ変数のような動作を期待されることはないわけで
で、内包されるクラスは単なる別クラスだ
ふつーにアクセス手段を提供するしかないね
class Foo
attr_accessor :vars, :bar
def initialize
@vars = [10, 20, 30]
@bar = Bar.new(self)
end
class Bar
def initialize(foo); @foo = foo; end
def [](n); @foo.vars[n]; end
end
end
p Foo.new.bar[1] #=> 20
0833826
2010/05/03(月) 21:26:41言われた方法でできました! 超ありがとうございます。
できましたけど、すごく面倒くさいですね……
心が折れそうです。
0834デフォルトの名無しさん
2010/05/03(月) 21:36:340835デフォルトの名無しさん
2010/05/03(月) 21:52:130836826
2010/05/03(月) 21:56:220837デフォルトの名無しさん
2010/05/03(月) 22:04:390838デフォルトの名無しさん
2010/05/03(月) 22:20:45?
0839デフォルトの名無しさん
2010/05/03(月) 22:31:15恐らく、「まれ」は人に、「よくある」はそいつの書いたコードに掛かっているんだろうな。
『まれに、子が親を参照するコードをよく書く奴がいる』……? 駄目だ、俺には校正仕切れない。
まぁ、何度かコード書き直したら、清書するぐらいの方がいいよ。ほっとくとスパゲティソースになる。
0840デフォルトの名無しさん
2010/05/03(月) 22:35:400841デフォルトの名無しさん
2010/05/03(月) 22:42:000842デフォルトの名無しさん
2010/05/03(月) 23:17:28以下よりもスマートな記述はあるでしょうか。
min_num = arr.min
min_num_index = []
for i in 0...arr.size
min_num_index.push(i) if arr[i] = min_num
end
0843デフォルトの名無しさん
2010/05/03(月) 23:34:23> a = 1.upto(20).to_a.shuffle
=> [12, 3, 6, 1, 15, 2, 4, 11, 9, 5, 8, 19, 18, 10, 20, 17, 7, 14, 13, 16]
> a.index(a.min)
=> 3
0844デフォルトの名無しさん
2010/05/03(月) 23:43:380846デフォルトの名無しさん
2010/05/04(火) 01:07:22あのさ、そんなこともわからないのに
なんでRuby始めたの?
強制されているわけじゃないのなら
他の言語やったほうがいいぞ
0847デフォルトの名無しさん
2010/05/04(火) 01:08:53a = []
indexes = []
100.times{a << rand(10)}
a.each_with_index{|x, i| indexes << i if x == a.min}
0848デフォルトの名無しさん
2010/05/04(火) 01:20:400849デフォルトの名無しさん
2010/05/04(火) 02:05:23てか宿題スレよりひどいな
0850デフォルトの名無しさん
2010/05/04(火) 02:14:24答えもしないで初心者を馬鹿にするだけの奴は死んで欲しいけどな
0851デフォルトの名無しさん
2010/05/04(火) 03:10:230852デフォルトの名無しさん
2010/05/04(火) 03:12:31プログラミング初心者は勘弁
0853デフォルトの名無しさん
2010/05/04(火) 03:14:020854デフォルトの名無しさん
2010/05/04(火) 04:07:020855デフォルトの名無しさん
2010/05/04(火) 12:30:490856デフォルトの名無しさん
2010/05/04(火) 16:22:06ruby が 1.8.6 だったので 1.8.7
Synapticとかいうパッケージマネージャで
0857デフォルトの名無しさん
2010/05/04(火) 16:29:19質問です。 gem environment で表示される
RUBY EXECUTABLE: /usr/bin/ruby1.8 を /usr/bin/ruby に変更する方法を
ご存知でしたら教えていただけますでしょうか。
経緯
環境:Ubuntu 8.04 LTS on virtualbox (on winXP)
ruby が 1.8.6 だったので 1.8.7 にしたくもSynapticとかいうパッケージマネージャは
1.8.6 が最新だと言って聞かぬのでソースからビルド -> インストール
でもgem install で 1.8.7 依存のが入んない
/usr/bin/ruby は 1.8.7 になってるぜよあれ?/usr/bin/ruby1.8(1.8.6) ってのが残ってる
0858デフォルトの名無しさん
2010/05/04(火) 16:38:54aaa.color = [target, color]
aaa.color[target] = color
のどちらがより望ましいですか?
0859デフォルトの名無しさん
2010/05/04(火) 16:57:13どちらかといえば後者
代入の度に無駄なArrayを生成しないのと、セットするだけでいいなら実装がシンプル
class C
attr_reader :color
def initialize
@color = {}
end
end
aaa = C.new
aaa.color[:target] = "red"
ただしdef color[]=()みたいな定義はできないから(上記のHashのように間に挟む必要がある)
colorがセットされたら他オブジェクトに通知するといったように、代入に見せかけて処理がしたいときには
前者か、素直にaaa.set_color(target, color)とか
Hash代わりの独自クラスでdef []=を定義してもいいんだけど
aaaとは別オブジェクトには違いないからインスタンス変数にアクセスとかしづらい
0860デフォルトの名無しさん
2010/05/04(火) 16:59:05gem という Ruby スクリプトをどの ruby で起動したかに完全に依存する
というか一般論としてパッケージと自力ビルドの混在はシステムに関する知識が必要
ある意味 Ruby 関係ないね
複数の Ruby を使い分けたいのなら rvm 使うといい
0861858
2010/05/04(火) 17:17:43う、悩んでいたことがズバリ当てられています。あなたはエスパーか。
def color[]= (target, color) が定義できれば終わりです。ただそれは言語仕様上無理なので。
セットするときに独自の処理をしたいのでHashは無理。
したがって独自クラスを作って def []= を定義して
その独自クラスからaaaの方にアクセスする手段を用意して……
出来なくはないのですが、いくら何でも大変過ぎる。
aaa.set_color (target, color)
aaa.color = [target, color]
aaa.color[target] = color
やっぱり見た目が一番いいのは3番ですよね。
1番でも良いけど値が一つの時は color= で、2つになると set_color になるのが変
0862デフォルトの名無しさん
2010/05/04(火) 17:40:34ありがとうございます。
とりあえず gem の1行目書き換えてみて、ダメだったのであきらめがつきました。
すっぱりディストリビューション変えます。
0863デフォルトの名無しさん
2010/05/04(火) 18:00:350864デフォルトの名無しさん
2010/05/04(火) 18:03:27うお蛇足が役に立ってる
いいこと思いついたw
class C
def color
self
end
def []=(*arg)
puts arg
end
end
aaa = C.new
aaa.color[:target] = :color
0865デフォルトの名無しさん
2010/05/04(火) 18:04:08メソッド呼び出し方式をごまかしただけだけど、しかしやっぱりめんどくさいな
class C
attr_reader :color
def initialize
@color = Color.new(self)
end
def change_color(target, color)
puts target, color
end
class Color
def initialize(parent)
@parent = parent
@container = {}
end
def []=(target, color)
@container[target] = color
@parent.change_color(target, color)
end
def [](target)
@container[target]
end
def each(&block)
@container.each &block
end
end
end
aaa = C.new
aaa.color[:target] = :color
0866デフォルトの名無しさん
2010/05/04(火) 18:22:090867858
2010/05/04(火) 18:24:23なるほど、無駄に変なクラスが露出しない分>>865の書き方の方がいいですね。
どうしてもコードが増えますが、ライブラリは使われて何ぼなので
ユーザーインターフェースを分かりやすくするために、この方式で頑張ります。
非常に有難うございました。
0868デフォルトの名無しさん
2010/05/04(火) 18:27:21だったらとっとと綺麗なコード貼れよ
そんなお前にカスと言う権利はにぃ
0869デフォルトの名無しさん
2010/05/04(火) 18:29:15自演?
0870デフォルトの名無しさん
2010/05/04(火) 18:30:18RUBYLIB=$PREFIX/lib/ruby/1.8:$PREFIX/lib/ruby/site_ruby/1.8:$PREFIX/lib
export RUBYLIB
これでOKですか?これまで動いてたのが動かなくなったので間違っていると思うのですが・・
0871デフォルトの名無しさん
2010/05/04(火) 18:34:19お前も反応すんな
0872デフォルトの名無しさん
2010/05/04(火) 18:41:28えーと、Ubuntuのが古いからPREFIX以下に自分でいれたって言う話だよね?
もとのRubyのライブラリが入っているところは新しく入れたRubyの関知する
ところではないので(同じところに上書きすれば別)、ライブラリも一切合切
用意してください。
RUBYLIBは特に指定しなくていいはず。
0873デフォルトの名無しさん
2010/05/04(火) 18:54:080874デフォルトの名無しさん
2010/05/04(火) 19:45:28$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.tar.gz
$ cd ruby-1.8.7-p72
$ ./configure --prefix=/usr
$ make
$ sudo make install
こんな感じで入れて、ruby -v で1.8.7となっているのですが、
sudo gem1.8 install ruby-mysql
でruby-mysqlは1.8.7が必要です。となってしまいます
0875デフォルトの名無しさん
2010/05/04(火) 19:50:30せっかく100円払ったんだからこっちで粘ったら?
ttp://q.hatena.ne.jp/1272950114
rvm 使えというアドバイスも無視だし
0876デフォルトの名無しさん
2010/05/04(火) 19:52:50ばれたw
0877デフォルトの名無しさん
2010/05/04(火) 20:00:39こういう乞食が2chの質問スレ荒らしているんだな
0878デフォルトの名無しさん
2010/05/04(火) 20:05:410879デフォルトの名無しさん
2010/05/04(火) 20:19:58はてなの金券充当は低い
払うほうは必ず1ポイント1円だが
暇で趣味じゃないと回答できん
0880デフォルトの名無しさん
2010/05/04(火) 20:23:02速くなる場合と遅くなる場合があるが、
起動して重い処理かまして終了する、ということをさせた場合にはおおむね高速になるはず
ただ、起動して「即終了」するようなタイプのスクリプトだと、1.8.7のほうがたぶんかかる時間は短い
ものによっては1.8.7だと一瞬なのに1.9.1だとウンコみたいに時間がかかるみたいなこともある
0881デフォルトの名無しさん
2010/05/04(火) 20:28:210882デフォルトの名無しさん
2010/05/04(火) 20:31:381.9.1 では 1.8.7 の100倍以上時間がかかるみたいな話はどっかで読んだ
あれって原因なんだったんだろう
0883デフォルトの名無しさん
2010/05/04(火) 20:41:27$ time ruby1.9 -rubygems -e "require 'addressable/uri'"
14.49s user 0.13s system 99% cpu 14.678 total
$ time ruby1.9 -rubygems -e "require 'addressable/uri'"
14.49s user 0.17s system 100% cpu 14.648 total
$ time ruby -rubygems -e "require 'addressable/uri'"
1.58s user 0.33s system 25% cpu 7.560 total
$ time ruby -rubygems -e "require 'addressable/uri'"
1.44s user 0.28s system 100% cpu 1.719 total
0884デフォルトの名無しさん
2010/05/04(火) 20:44:07パソコン遅過ぎ
買い換えろ
0885デフォルトの名無しさん
2010/05/04(火) 20:46:071.8.7 で 1.5 秒なのに 1.9.1 では 15 秒になったとかいう場合、
悪いのはマシンの遅さではなく ruby 本体かライブラリ自身だと思われ
0886デフォルトの名無しさん
2010/05/04(火) 21:40:110887デフォルトの名無しさん
2010/05/04(火) 21:58:29ArgumentError とか日本人向けではない
0888デフォルトの名無しさん
2010/05/04(火) 21:58:54p72は間違いだろうと思うが、1.8ではgemは標準付属品になっていないので、
そのgem1.8はUbuntuにもとから入っていたgemだ。
0889デフォルトの名無しさん
2010/05/04(火) 22:02:290890デフォルトの名無しさん
2010/05/04(火) 22:07:481. ruby 1.8.7-p249を入れる
2. rubygem (gemコマンド)を入れる
3. /usr/bin/gem list を実行して出てきたgemを
/usr/local/bin/gemを使って別途インストール。
下手に/usr以下のを上書きしようとせず、素直に/usr/localに入れてPATHだけ
通して使うのが一番楽だと思うよ。
0891デフォルトの名無しさん
2010/05/04(火) 22:33:17ありがとうございます
結局、上書きではないインストールでやりました
お手数おかけしました
0892デフォルトの名無しさん
2010/05/05(水) 20:22:32メソッドや、
コメントを
記入して、実行してみて問題なかった
プログラムを、
コマンドプロンプトから
rdoc --charset= shift_jis hello.rb
でhtmlを生成して、ブラウザで表示させて見ましたが、
Files: 1
Classes: 0
Modules: 0
Methods: 0
Elapsed: 0.4s
こうなり、ましてメソッドが認識されません。
html上でもメソッドやメソッド詳細が表示されません。
原因はあるのでしょうか?
0893デフォルトの名無しさん
2010/05/05(水) 20:51:41御存知ありませんか?
rubyforgeではなく別の海外サイトだったはずです
0894893
2010/05/05(水) 21:15:00The Ruby Toolbox - Know your options!
http://www.ruby-toolbox.com/
ツールをランキング表示する「Ruby Toolbox」公開 Ruby開発者の利用するツールが一目瞭然:CodeZine
http://codezine.jp/article/detail/3962
Ruby Toolboxにみる人気Rubyライブラリ 10 | エンタープライズ | マイコミジャーナル
http://journal.mycom.co.jp/news/2009/05/19/051/index.html
0895デフォルトの名無しさん
2010/05/07(金) 03:38:18どのように定義し呼び出すのがいいでしょうか。
class TheClass
def method1
@a = common_ope(@a)
end
def method2
@b = common_ope(@b)
end
def common_ope(x)
x * 2
end
end
上のように書いてみたものの、以下の理由でおかしいですよね?
- common_ope()は公開する必要なし
- ていうかメソッドじゃないだろこれ
0896デフォルトの名無しさん
2010/05/07(金) 03:49:480897デフォルトの名無しさん
2010/05/07(金) 06:10:30privateは?
0898デフォルトの名無しさん
2010/05/07(金) 06:47:28オブジェクトに対するメッセージが〜とか考えなくてもOK
んで
「このメソッドはユーザーに見せる必要がない」
「ユーザーがこのメソッドに直接アクセスする必要がない」
「マニュアルコメント書こうと思ったがよく考えたらこれ内部処理だな」
とかいうような場合は>>897の言うように private を使う
class C
def method1
@a = common_ope(@a)
end
def method2
@b = common_ope(@b)
end
private
# こっから下のdefが全部プライベート
def common_ope(x)
x * 2
end
end
private より下のメソッドはレシーバつきでアクセスすることができなくなる
obj.common_ope が不可に
C 内で common_ope とするのは可
C 内の self.common_ope も不可なので注意
obj.__send__(:common_ope) は動作可
アクセス時の書き方だけを制御できる
なにがなんでも秘匿するというようなことはRubyではできないので素直に諦める
0899デフォルトの名無しさん
2010/05/07(金) 10:43:22>>898
なるほど。メソッドとして定義すること自体は普通なのですね。
とりあえず private で内部処理であることはアピールできる、と。
どうもありがとうございました。
0900デフォルトの名無しさん
2010/05/07(金) 18:51:09ENDだとスコープが違うので意図したとおりに実行されません
class FOO
def initialize
@f = open("log.txt", "w")
end
END {@f.close}
end
foo = FOO.new
みたいなことを考えています。よろしくお願いします
0901デフォルトの名無しさん
2010/05/07(金) 20:45:56GCで回収されるとき?
ファイナライザを指定したいということでいい?
irb>
class C
def self.finalizer
proc{|o| puts "#{o.inspect} is gone!" }
end
def initialize
ObjectSpace.define_finalizer(self, self.class.finalizer)
end
end
irb> c = C.new
irb> GC.start
irb> c = nil
-609198068 is gone!
0902デフォルトの名無しさん
2010/05/07(金) 20:53:23そんなことを考えること自体が間違ってるので普通にメソッド呼び出ししましょう
ということになる
0903901
2010/05/07(金) 21:01:01「やろうと思えばできるが普通は間違ってる」ことの代表格のような気はする
フックかけて自動でやらせようとするのがたぶん98パーセントくらいの割合で間違い
将来絶対ここでコケる
0904デフォルトの名無しさん
2010/05/07(金) 21:03:270905デフォルトの名無しさん
2010/05/07(金) 21:06:530906デフォルトの名無しさん
2010/05/07(金) 21:09:54Ruby ではそういうのは、
def foo
obj = Obj.new
yield obj
ensure
if obj then
obj.close
end
end
foo{|obj|
obj を使う手続き
}
みたいにするのがよくある書きかたということになっている。
0907デフォルトの名無しさん
2010/05/07(金) 21:11:39それ「残り2%」だとおもう
0908デフォルトの名無しさん
2010/05/08(土) 12:09:35ご教授お願いします。
元スクリプト置いて一旦去ります。
http://fono.jp/uploader/src/file_0356.zip_a8FCwonD6gByq86dAwob/file_0356.zip
0909デフォルトの名無しさん
2010/05/08(土) 12:27:15ttp://pc11.2ch.net/test/read.cgi/php/1222645553/799-802
> 799 :nobodyさん:2010/05/06(木) 05:56:26 ID:???
> 【 CGI&PHP名 】 NicoProxy
> 【 配布先URL 】 http://d.hatena.ne.jp/hayori/20080609/1213005114#c
> 【 依頼期限 】 半年
> 【 依頼内容 】 マルチスレッド化して欲しい。
0910デフォルトの名無しさん
2010/05/08(土) 12:45:39構造だけ参考にしてゼロから作り直したほうがたぶん早いな…
0911デフォルトの名無しさん
2010/05/08(土) 12:48:42http://jp.rubyist.net/magazine/?0002-WEBrickProxy
見た感じ、レスポンスボディの取得までライブラリ側でやってるので
汎用性無さそうなんですけど、作った人います?
0912デフォルトの名無しさん
2010/05/08(土) 21:00:040913デフォルトの名無しさん
2010/05/08(土) 21:16:41標準にあるのはMutexやConditionVariableのような比較的低レベル(部品的な意味)クラスだね。
0914908
2010/05/09(日) 05:14:09すみません、示し忘れてました。
>>910
複数のページを開くと動画キャッシュ保存や別のリクエスト終了で待機させられてしまうので、
動画をキャッシュする部分とプロキシ本体をスレッド生成して、並列処理したいです。
イメージとしてはアクセス数に応じて増減するApacheのスレッド生成みたいな。
0915デフォルトの名無しさん
2010/05/09(日) 05:30:15いないかも
そもそもそういうスレでもないからなあ
ある日どっかで誰かが「改造しましたー」とか出す感じ
0916908
2010/05/09(日) 05:37:26WEBrickとThread.*復習して0から再構成が妥当ですかね。
スレッド生成が関わってくると全然構成が違うものになりそうなので。
0917デフォルトの名無しさん
2010/05/09(日) 06:39:09webサービス化したいのか。動画のキャッシュサービスって帯域とか負荷対策大変じゃないか?w
0918デフォルトの名無しさん
2010/05/09(日) 07:17:38デーモン化するにはNicoProxyServer.newの引数configにこれ↓を追加
:ServerType=>WEBrick::Daemon
# 最終行のWEBrick::Daemon.start(とその上のrequire)は不要なので削除
並列化というかコンテンツをキャッシュせずにクライアントに垂れ流すには
open-uriのopenやProxyContentHandlerでは実現できない
俺のやった方法ではWEBrick::HTTPResponseにも手をいれないとダメだった
0919デフォルトの名無しさん
2010/05/09(日) 12:53:53自分も似たようなことを考えたことがあるけど止まっているわ('A`)
0920908
2010/05/09(日) 19:26:18家庭内の共有利用になりそうなので帯域は大丈夫です。
>>918
335行目を変更しましたが、こんなんでいいのでしょうか……
server = NicoProxyServer.new(config, conf['cache'], conf['cache_servers'], conf[':ServerType=>WEBrick::Daemon'])
ニコニコ動画由来の動画ファイル本体だけ無期限キャッシュするということを考えてます。
キャッシュ中に焦らされる状態を気にしてはいないので、逐次転送はしなくて大丈夫です。
ですが、別のニコニコアカウントで家内がログインしてこの串を同時に使った時、
キャッシュする動画が2つになって、同時にキャッシュが始まってキャッシュ完了待ちになるならまだしも、
『キャッシュ順番待ち状態』になってしまうので、それを解消したくて来ました。
逐次転送ではなく、動画キャッシュ自体の並列処理です。
質問分かりにくくて御免なさい。
0921デフォルトの名無しさん
2010/05/09(日) 20:58:51> 335行目を変更しましたが(ry
違う、confじゃなくてconfig
330行から始まるハッシュに追加するんじゃ
良く知らんけどキャッシュ順序待ちはニコニコ側の制限じゃないの?
複数動画の同時閲覧(ダウンロード)禁止みたいな
0922デフォルトの名無しさん
2010/05/10(月) 00:47:59もしかしてDockプロパティとか使えないままですか?
preAlpha1だと使えないみたいですけど
1.0でもダメなんですかね・・・・
0923デフォルトの名無しさん
2010/05/10(月) 02:08:24> 家庭内の共有利用になりそうなので帯域は大丈夫です。
それこそ nicocacheでいいと思うよ。できもので住むなら作らないの早い
Java製のproxyだからサーバーたててそのように使っても多分動くだろう、いや保証できんけどw
現行スレ:
【ニコニコ】自動ローカル保存プロクシ NicoCache 9
http://pc12.2ch.net/test/read.cgi/software/1265404267/
導入はこれ見ればわかる。
FrontPage - NicoCache_nl
http://nicolist.net/nicocache_nl/wiki/
家庭内でNATで固定IP共有なら、複数マシンから同時ダウンロードの場合は
まずニコ動側で一定時間規制入るしプログラム側で捌けるようにしてもあまり意味ないかと思うw
0924908
2010/05/10(月) 04:56:33config = {
:BindAddress => conf['bind'],
:Port => conf['port'],
:ServerType => WEBrick::Daemon
}
構文から見てどう考えてもここでした。指摘有り難うございます。
>>923
家族銘々のアカウントで閲覧している中に1人、プレミアムがいて、
IPアドレス毎のダウンロード規制ではなく、
Cookieで識別してるようなので、規制が原因ではないと思います。
あと、すみません、NicoCache_nlでしたが、Linuxでは動きませんでした。
使用環境を言っていなくてすみません。>>1を再読してきました。
4つのymlファイルを作って、BindAddressを1つずつ変えて、
キャッシュディレクトリを同じにするという妙なことを思いついたのですが、
可能でしょうかね……。
スレッド1つで解決してしまうのが逐次転送ですが……。
どうしたものやら。
0925デフォルトの名無しさん
2010/05/11(火) 00:05:25WPFにDockなんかない
DockPanelを使っている場合はDockPanel.SetDockメソッドを使う(添付プロパティというもの)
.NET使う以上言語の違いは無意味なのでC#の書き方覚えて.NET系のスレで聞いた方がいい
0926デフォルトの名無しさん
2010/05/11(火) 00:07:19普通に使えてるが。
ubuntu9.10+sun-java6
0927908
2010/05/11(火) 18:58:21ルータが2つあって、デフォルトゲートウェイがLAN内でサーバーと普段使いと違うのですが
そのせいでしょうか……。
nicoproxy.rbはバインドアドレスを指定できるので、多分それで使えてるんだと思います。
0928デフォルトの名無しさん
2010/05/11(火) 21:22:04ソフト板のNicoCacheスレではserver:deb cliant:winの報告もあるから
あっちで聞いた方が良いのでは?
0929922
2010/05/12(水) 01:20:21前の文章が悪かったのですが、プロパティを設定できないと言うよりも
Pre alpha1では
下記のHPにあるようにCLR上の列挙体が正常に使えないようです。
http://hsj.jp/works/2007/07/25/ironruby_prealpha_1web.html
もう少し自分なりに調べてみます。
0930デフォルトの名無しさん
2010/05/12(水) 03:40:37一行読み込んでsplitしてちまちま読むか。処理手順考えるのまんどくせw
0932デフォルトの名無しさん
2010/05/12(水) 17:58:50以下のコードについて質問です。
# encoding: cp932
require"open-uri"
open("http://codezine.jp/rss/new/20/index.xml") do lhttpl
File.open("codezine-news.xml","w") do lfilel
file.write(http.read())
end
end
7行目のfile.write(http.read())の意味がよくわかりません。
疑問は2つあります。
まず第一に、httpブロックとFileオブジェクトとfileブロックの関係がよくわかっていないような気がします。
httpブロックのなかのFileオブジェクトにあるfileブロックを使っているということでいいのでしょうか?
第二に、read()の意味がよくわかりません。リファレンスの中には「self.open(options={}).read と同じです。
このメソッドによって返される文字列は OpenURI::Meta によって拡張されています。」
と書いてあるのですが、意味がわかりません。結局、このライブラリでのreadはどのような機能を持っているのでしょうか?
よろしくお願いします。
0933デフォルトの名無しさん
2010/05/12(水) 18:10:37やってることはこれと一緒。
data = open("http://codezine.jp/rss/new/20/index.xml").read
open("codezine-news.xml", "w").write(data)
0934デフォルトの名無しさん
2010/05/12(水) 18:32:530935デフォルトの名無しさん
2010/05/12(水) 19:20:31open-uri はブロックなしで直接 read するのがベスト
そもそも open-uri のブロック内仮引数は HTTP とは無関係
open-uri は open(uri) の瞬間に uri へのアクセスを完了し、ローカルの Tempfile をブロックに渡す
require 'open-uri'
xml = open("http://codezine.jp/rss/new/20/index.xml").read
File.open('codezine-news.xml', 'w'){|f| f.write(xml)}
# 2chブラウザの関係上、URLを囲むのは ' ' ではなく "" になってます
0936デフォルトの名無しさん
2010/05/12(水) 19:38:43data = open(path){|f| f.read}
は
「path に来るのが URL なのかディスク上のファイルパスなのか事前にわからないorどっちも受け付ける」
というような場合に使う
URL 限定だということが事前にわかってるフェッチャ用途なら素直に
require 'open-uri'
data = URI.parse(uri).read
しれ
こっちのほうが速いし間違いもない
0937デフォルトの名無しさん
2010/05/12(水) 20:42:060938デフォルトの名無しさん
2010/05/12(水) 20:45:250939デフォルトの名無しさん
2010/05/12(水) 22:19:05Rubyでもできるが、Rubyじゃないほうがマシ
0940デフォルトの名無しさん
2010/05/12(水) 22:33:15おすすめの言語ってありますか?
0941デフォルトの名無しさん
2010/05/12(水) 23:00:280942デフォルトの名無しさん
2010/05/12(水) 23:06:060943デフォルトの名無しさん
2010/05/12(水) 23:31:28>>933
ありがとうございます。プログラムの意味がよくわかりました。
>>934
|の出し方がわかりません・・・。
ググっても出ませんし、初心者向けを謳っている現在使用中の本には出し方が載ってませんでした。
もしよろしければ出し方を教えてください。
>>935
>>936
回答ありがとうございます。申し訳ないのですが、今の私のレベルではお二人の議論の意味がよくわかりませんので、
保存しておいて数週間後に改めて理解したいと思います。
0944デフォルトの名無しさん
2010/05/13(木) 00:05:04ぱそこんのせつめいしょでもよめ
マウスどう使うんですかとかキーボードどう打つんですかとかいちいちそこまで付き合い切れない
0945デフォルトの名無しさん
2010/05/13(木) 00:18:350946デフォルトの名無しさん
2010/05/13(木) 00:22:51いや、今たまたまひとのノートPC使ってたのでつい
0947デフォルトの名無しさん
2010/05/13(木) 00:23:04下の方法しか思いつきません。ましな方法はありますか。
def make_proc(n)
case n
when 1; proc {|a1| a_method [a1] }
when 2; proc {|a1| proc {|a2| a_method [a1, a2] }}
when 3; proc {|a1| proc {|a2| proc {|a3| a_method [a1, a2, a3] }}}
else raise '多すぎ'
end
end
0948デフォルトの名無しさん
2010/05/13(木) 00:29:49a = lambda {|x,y,z,w| x + y + z + w }
a.curry[1][2][3][4] #=> 10
0949947
2010/05/13(木) 01:36:41(lambda {|*as| a_method as }).curry(n)
end
ですね。rubyのCソース見てもよくわからなかったので考えたら
class Proc
def curry(f, n)
(n <= 1) ? f : (proc {|x| curry(proc {|*xs| f.call(x, *xs) }, n-1) })
end
end
となったんですが、まだ良い方法がありそう。proc多いし。いずれにせよサンクス
0950デフォルトの名無しさん
2010/05/13(木) 11:38:22向上心を持てって言ってんだろ
お前のはそれ上昇志向だよ
0951デフォルトの名無しさん
2010/05/13(木) 20:02:50>Rubyについての質問ならいいが
>プログラミング初心者は勘弁
このスレ的にはおまえこそ勘弁
0952デフォルトの名無しさん
2010/05/13(木) 20:09:510953948
2010/05/13(木) 22:32:13class Proc
def curry(n = self.arity, xs = [])
(n<1) ? self[*xs] : (proc {|x| curry(n-1, xs.push(x)) })
end
end
こうなりました。勉強になりました。
0954947
2010/05/13(木) 22:32:550955947
2010/05/14(金) 00:19:56カリー化されたProcを2度目に呼ぶと前回のxsが継続の中に残っていて
まずかったです。
0956デフォルトの名無しさん
2010/05/14(金) 03:01:01class Servlet < WEBrick::HTTPServlet::AbstractServlet
def do_GET(req, res)
str = open("./foo.html", 'r'){|f|f.read}
res.body = str
res['content-type'] = 'text/html'
end
end
server = WEBrick::HTTPServer.new({
:Port => 4000
})
server.config[:BindAddress] = '127.0.0.1'
#server.config[:ServerType] = WEBrick::SimpleServer # SimpleServerなら問題ない
server.config[:ServerType] = WEBrick::Daemon
server.config[:ServerName] = 'server'
server.mount('/', Servlet)
trap('INT') { server.shutdown }
server.start
をLinux上で実行してブラウザからアクセスすると
>Internal Server Error
>No such file or directory - ./foo.html
とopenに失敗してしまいます。openのパスを絶対パスにすれば動くようですがコーディング上不便です
相対パスのまま動かす方法があったら教えてください。よろしくお願いします
0957デフォルトの名無しさん
2010/05/14(金) 04:12:09pwd = Dir.pwd
server.config[:StartCallback] = proc { Dir.chdir(pwd) }
# 956のソース正しくコピペしてないだろ
# サーバをnewした後でconfig設定しても無意味
0958デフォルトの名無しさん
2010/05/14(金) 06:00:07いろいろ読み直してみたら間違ってた
訂正すると>>956はこの行が無意味になってる
> server.config[:BindAddress] = '127.0.0.1'
他にもnew前に指定しないと無効な設定があるけど、それはソース読んでくれ
0959デフォルトの名無しさん
2010/05/14(金) 15:21:13ありがとうございます。
0961デフォルトの名無しさん
2010/05/15(土) 23:49:36pメソッドで日本語表示したとき、最後の1文字だけ文字化けします。
putsは大丈夫です。
これを直すにはどうすれば良いでしょうか?
環境
windows
ver 1.8.7
dos窓のコードページ 932 SJIS
ソース
$KCODE = "s"
puts $KCODE
str = "おはようからおやすみまで暮らしを見つめるテクニック"
puts str
p str
実行結果(dos窓)
SJIS
おはようからおやすみまで暮らしを見つめるテクニック
"おはようからおやすみまで暮らしを見つめるテクニッ\203N"
0962デフォルトの名無しさん
2010/05/16(日) 00:07:550963デフォルトの名無しさん
2010/05/16(日) 00:09:29patchlevelを上げる
>>962
仕様
作成させたければw+
0964デフォルトの名無しさん
2010/05/16(日) 00:10:34中身を消したくなければ IO::RDWR|IO::CREAT
0965デフォルトの名無しさん
2010/05/16(日) 00:21:401.8.7-p249のバグ
0966961
2010/05/16(日) 00:54:36>965
回答ありがとうございます。
悩んで損しました。
0967デフォルトの名無しさん
2010/05/16(日) 12:21:54def self.uho
uho
end
end
class FooClass
def self.uho
:uho
end
end
というモジュール、クラスがあったとき
class Bar1
include FooModule
uho
end
は動作しませんが、
class Bar2 < Foo
uho
end
は動作します。
ということはスタティックなクラスメソッドは継承されても、モジュールメソッドは
継承されないということだと思います。何故このような仕様になっているのか教えてください。
0968デフォルトの名無しさん
2010/05/16(日) 12:23:14x class Bar2 < Foo
o class Bar2 < FooClass
0969デフォルトの名無しさん
2010/05/16(日) 12:24:290970デフォルトの名無しさん
2010/05/16(日) 13:13:22irb> class C; class << self; include M; end; end
irb> puts C.foo
M#foo
irb> puts C.new.foo
NoMethodError: undefined method `foo' for #<C:0xb74a8e24>
irb> class C; include M; end
irb> puts C.new.foo
M#foo
include M は self に M のインスタンスメソッドをクラスメソッドとして追加する
このときクラスメソッドと呼ぶとわけがわからなくなるので特異メソッドとか呼んだりする
M のクラスメソッドは M = Class.new('M') のようなイメージで生成されたオブジェクト M にくっついてるメソッドなので
include や extend で外に持ち出すことはできない
include や extend して使いたいメソッドは M でインスタンスメソッドとして定義する
0971デフォルトの名無しさん
2010/05/16(日) 13:54:19file.each do |line|
line.chomp!
puts <<EOS
掲示板を作ろうとしていて、新しい書き込みが上にくるようにしたいです.
上記はプログラムの一分ですが、これのどこにreverseを入れたら良いか分かりません.
出来れば教えてください.
0972デフォルトの名無しさん
2010/05/16(日) 14:06:09結論:無理
0973デフォルトの名無しさん
2010/05/16(日) 14:06:42一行ずつ処理を追うんだ
綺麗に書こうだなんてとりあえず二の次にしとけ
あと File#each は配列を返さないから Array クラスのメソッドの出番はないぞ
Array のメソッドを使いたいなら、どっかで配列を作れ
0974デフォルトの名無しさん
2010/05/16(日) 14:11:57ありがとうございます。
しかし、実際にそういうことをしたいのではなく、なぜモジュールとクラスで
継承の挙動が違うのかが知りたいのです。
「クラス < クラス」の場合はクラスメソッド(クラスの特異メソッド)も継承されるのに、
「クラス < モジュール」の場合はモジュールの特異メソッドは継承されません。
今のところ僕は「モジュール関数をincludeしたときにややこしくなるから」
だと思っているのですが、、、
0975デフォルトの名無しさん
2010/05/16(日) 14:17:19Ruby1.9ならeachはEnumerator返すから
file.each.to_a.reverse do |line| # File -> Enumerator -> Array -> Arrayな感じ
みたいな感じでいけるんじゃないか?確認はしてないけど。
ただ、これ一回配列に戻すってあんまりかっこよくないね。
0976デフォルトの名無しさん
2010/05/16(日) 14:19:590977デフォルトの名無しさん
2010/05/16(日) 14:57:49いけました.
ありがとうございます.
0978デフォルトの名無しさん
2010/05/16(日) 23:01:12IO.readlinesならopenからfile.each.to_aまでやってくれるし
1.8でも使える
0979デフォルトの名無しさん
2010/05/17(月) 00:26:19クラスAが定義されてたとして、
hoge = "A"
obj = #[hoge].new
みたいな感じでAをnewしたいのですが。。。
0980デフォルトの名無しさん
2010/05/17(月) 00:40:50hoge = A
obj = hoge.new
0981デフォルトの名無しさん
2010/05/17(月) 00:59:40Object.const_get(hoge).new
とか
eval "#{hoge}.new"
とか
0982デフォルトの名無しさん
2010/05/17(月) 01:17:45hoge = "A"の場合、
hoge.newだと「"A"にはnewメソッド無いです」エラーになってしまいましたが、
Object.const_get(hoge).new
で動きました!ものすごく感謝です。
0983デフォルトの名無しさん
2010/05/17(月) 01:18:02c = Date.parse(b) - Date.today
d = "#{a} #{b} あと#{c}日 <br>"
puts d
end
上記のプログラムでcを一番上に持っていきたいのですが、どうしたら良いでしょうか教えていただけないでしょうか?
0984デフォルトの名無しさん
2010/05/17(月) 01:26:470985デフォルトの名無しさん
2010/05/17(月) 01:38:520986デフォルトの名無しさん
2010/05/17(月) 01:56:340987971
2010/05/17(月) 02:00:490988デフォルトの名無しさん
2010/05/17(月) 05:07:44またの機会にどうぞ。。。
うひょう
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
★注意★ Ruby 1.9.1 は初心者にはまだ時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
文字エンコーディング等の外部基礎知識が必要な上、不完全対応の第三者ライブラリでの問題の切り分けが手間です。
1.8.7 は 1.9 系の新機能のいくつかが利用可能なため、1.8.7 を習得すればスムーズに 1.9 系に移行できるでしょう。
関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の 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を読め」でいいので、叩かない&怖がらせない。
・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0989以上推奨、使ったり使わなかったりして誰か次スレ立てて
2010/05/17(月) 05:11:38・「たのしいRuby 第3版 Rubyではじめる気軽なプログラミング」
http://www.amazon.co.jp/gp/product/4797357401/
#>>4は本スレと前スレ更新、GUIと宿題追加
●関連スレ
Rubyについて Part 40
http://pc12.2ch.net/test/read.cgi/tech/1272248179/
●GUIの使えなさを堪能するスレ
Ruby で GUI するスレ
http://pc12.2ch.net/test/read.cgi/tech/1269609576/
●ぶん投げスレ
Rubyの宿題教えてください。2限目
http://pc12.2ch.net/test/read.cgi/tech/1200175247/
●前スレ
Ruby 初心者スレッド Part 36
http://pc12.2ch.net/test/read.cgi/tech/1269233796/
Ruby 初心者スレッド Part 35
http://pc12.2ch.net/test/read.cgi/tech/1267668057/
Ruby 初心者スレッド Part 34
http://pc12.2ch.net/test/read.cgi/tech/1264635554/
0990デフォルトの名無しさん
2010/05/17(月) 08:37:56'requir' : no such file to load -- thread (LoadError)
と出て出来ないのですが、どうもthread.rbが無いみたいなんです。
間違えて消してしまったのかも知れませんが、
sudo apt-get install ruby1.9.1-full
をしてもインストールされない見たいです。どうすれば復旧できるでしょう?
0991デフォルトの名無しさん
2010/05/17(月) 09:14:41thread.rb は libruby1.9.1 パッケージに入っている。
fullを入れるとき、半端に残っている既存のRubyパッケージを消してから入れた?
インストールされている、という情報が残っているかぎり、
それが上書き再インストールされることはない。
0992デフォルトの名無しさん
2010/05/17(月) 15:14:250993デフォルトの名無しさん
2010/05/17(月) 21:25:24いけました、ありがとう
librunby1.9.1ってなんか変なところにインストールされるんですね
0994デフォルトの名無しさん
2010/05/18(火) 00:03:46#rake db:create
!!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install mysql.
rake aborted!
no such file to load -- mysql
ubuntuなんですが↑のエラーがでます
#sudo gem install mysql -- --with-mysql-config=/usr/bin/mysql_config
をやっても同じエラーが出ます
どなたか教えてください・・・
0995デフォルトの名無しさん
2010/05/18(火) 02:10:27falseか値がない場合は、
un ||= "unko"
とかできますが、
同じような感じで簡単に文字列の追加はできないもんでしょうか?
un << "unko"
では当たり前ですが aが nil の場合エラーがでます。
(un ||= "") << "unko"
とか考えたんですが、自分で書いておいてかなりギョットします。
0996デフォルトの名無しさん
2010/05/18(火) 03:02:010997デフォルトの名無しさん
2010/05/18(火) 03:02:470998デフォルトの名無しさん
2010/05/18(火) 03:03:270999デフォルトの名無しさん
2010/05/18(火) 03:10:57.,!'i、 ィ-, ,,、_,,-.
/.イヘ, | ,! .| ゙ニ-i、,!
∩ ./,r'1.,/ | |_,,,,,. .| 7'ニ",! ∩
| ゝ <ヽ ,/,,''y゙./ .r‐ー''",二,,,,7 | lニ-'',> / > く |
/ / ヽ ∨ "゙.゙l"/ ゙'ー'"〔.| | l'ッ ||i、 ∨ / ヽ ヽ
/ i / / .,/,l゙._,,. |.|,-. .,l゙,|"r゙lヽ'i、 i ヽ i ヽ
/ 丿 / ノ 丿 二i、 ゙l |゙',―i、゙l .l゙,タ-l |_゙‐' ヽ ヽ ヽ ヽ
( ヽ、 / 〈 /ノ! | .| l゙ .l゙{ .| | ,l゙,!ィ'',",ニl゙ 〉 ヽ / )
\ /'' ー'' ⌒`/ヽー、シ" .| ゙l,,,"] ゙l.二__| ,l゙,l゙,,,ニl゙.゙‐''''i、 --イ´⌒ ''ー ''\ /
\/ 〉 ⌒彡彡彡彡ミ ミ彡彡彡彡⌒ 〈 ヽ/
ヽ ,, -‐" 彡彡彡彡ミ ミ彡彡彡彡 ゛‐- ,, /
\/ / ィ _彡彡彡彡 彡彡彡彡__ ィ \ ヽ/
"ーーーー(,,___/つミ彡彡 彡彡ミとヽ___,,)ーーーー"
( ========================)
/ ̄// ̄// ̄// ̄// ̄// ̄// ̄// ̄// ̄// ̄// ̄//_ //^\ゝ
/ ̄// ̄// ̄// ̄// ̄// ̄// ̄// ̄// ̄// ̄// ̄//_ ///== \ゝ
/ ̄// ̄// ̄// ̄// ̄// ̄// ̄// ̄// ̄// ̄// ̄//_. /// ‖ \ゝ
�A ノ ̄ノノ ̄// ̄// ̄// ̄// ̄// ̄// ̄// ̄// ̄// �A_ノ//======== \ゝ .�A
.ヒ==,@==@,==@,==@,==@,==@,==@,==@,==@,==@,==@,==@ ノ人ノ ‖ ン
 ̄‖~  ̄~ ̄~  ̄~ ̄~ ̄ ̄~ ̄~ ̄~ ̄~ ̄~ ̄~ ̄~ ̄~ ̄~ ̄~‖| ̄ ̄ .‖ ̄ ̄ ‖
‖============================================.‖|=====‖==== ‖
1000デフォルトの名無しさん
2010/05/18(火) 03:32:12∩
| ゝ <ヽ
.─ ────=≡/ / ヽ ∨
./ i / /
───=≡. / 丿 / ノ ズザーーーーーッ 見よ!わたしの華麗なダイブ
)⌒`) ( ヽ、 / 〈
`)⌒`) \ /'' ー'' ⌒`/ヽー 、
────=≡ \/ 〉 ⌒彡彡ミミ\
`)⌒`);;;`)⌒`) ヽ ,, -‐" 彡彡彡ミヽ
`)`)⌒`) ) \/ / ィ. _彡彡彡}
──=≡;;;⌒`)≡⌒)≡≡"ーーーー(,,___/つミ彡ノ
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。