Ruby 初心者スレッド ..
[2ch|▼Menu]
815:デフォルトの名無しさん
08/06/14 18:53:09
プロパティを定義したいのですが、セッターがうまく働きません orz
以下のようにすると、2と表示してほしいのですが、5と表示されてしまいます。
どこが間違っているのでしょうか?

#ruby -Ku
class Calculator
  def initialize
    @unit = 5
  end
  
  def unit=(value)
    @unit = value
  end
  
  def run
    unit = 2
    puts @unit
  end
end

Calculator.new.run

816:デフォルトの名無しさん
08/06/14 18:55:36
self.unit = 2

817:デフォルトの名無しさん
08/06/14 18:55:59
self.unit = 2

818:デフォルトの名無しさん
08/06/14 18:56:17
self.unit = 2

だとうまくいきました
何だこの違い・・・
ほかの言語のプロパティみたいに使っちゃだめなのか

819:デフォルトの名無しさん
08/06/14 18:59:52
わかるまでは attr_accessor :unit とだけ書け。


820:デフォルトの名無しさん
08/06/14 19:02:42
この挙動はどういうことなんでしょうか?
ドキュメントのどこかに記載などありますでしょうか?

しかし、エラーなどでずに実行されるもんで子一時間悩んでしまいました

>>819
セッターを拡張したいときには使えません
あれは最小限のコードで実際のコードでは、最大値のチェックなどしています。

821:デフォルトの名無しさん
08/06/14 19:04:05
>>819
試しに attr_writerを使ってみましたが、やはりselfがいりますね・・・。

822:デフォルトの名無しさん
08/06/14 19:08:52
ああああ、わかた。
宣言が要らない言語だから、セッターのインスタンス省略すると
ローカル変数への新規代入になるのか orz

823:デフォルトの名無しさん
08/06/14 19:11:24
>>822
Ruby以外はどんな言語を使ってるのか教えてくれまいか
ちょっと興味があるんだ

824:デフォルトの名無しさん
08/06/14 19:17:11
これは筋のよさそうな自称初心者

825:デフォルトの名無しさん
08/06/14 19:33:13
>>823
他にはDelphiを長年つこーてました。

Delphiだと属性でなくてプロパティなんですが、
上記コードのような形で問題なく、
selfなしでクラス内でプロパティに代入できます。
静的な言語のせいもあり、変数は宣言しないと使えないです。

826:デフォルトの名無しさん
08/06/14 20:04:10
なるほど、丁寧にありがとう

今度Delphiのコード見かけたら
そこらへんちょっと気にして読んでみるよ

827:デフォルトの名無しさん
08/06/15 00:03:24
やさしいやりとりだな。いい感じ。

828:デフォルトの名無しさん
08/06/15 00:24:46
これは珍しく建設的なやりとり。


829:デフォルトの名無しさん
08/06/15 00:45:06
初心者側に「ピンと来る力」があれば、話は俄然充実するんだよ。

830:デフォルトの名無しさん
08/06/15 03:02:58
>>820
> ドキュメントのどこかに記載などありますでしょうか?

一応rubyの落とし穴には書いてあるけど見つけにくいね。
URLリンク(www.ruby-lang.org)

attr_xxx もFAQやModuleのリファレンス見ないと分からないし。
まぁリファレンスだからしょうがないか。

入門書ならselfが必要なことも含めてちゃんと書いてあるかも。

831:815
08/06/15 06:40:18
>>830
おお、こんなところに記述が
やはりFAQなのですね。
わざわざありがとうございます。

attr_系の説明やサンプルは大概クラス外部からのアクセスのみかかれてますね。

832:デフォルトの名無しさん
08/06/15 12:41:53
a = [1,1]
a.each{|i|a << a[-1] + a[-2] if a[-1] < 10000}
p a

833:デフォルトの名無しさん
08/06/15 15:21:02
Rubyの入門サイト、書籍などを読んでいると
破壊的なメソッド、非破壊的な〜、みたいな表現をよく目にします。

Ruby以前の言語でも同じ概念は存在すると思うのですが、
Rubyにおいて敢えて強調されているのは何故なんでしょうか。
例えば、何か他の言語とは異なった考え方が必要になってくるのでしょうか。


834:デフォルトの名無しさん
08/06/15 15:24:50
>>822
NetBeans使ってると、unitは未使用ということでエディタ上に印が付きますね。

835:デフォルトの名無しさん
08/06/15 16:12:43
>>833
強調するのは、そりゃ、「2種類」あるからだよ
self を変更するかどうかって重要じゃん
puts させただけでそのオブジェクトがそれ以降文字列になったら悲惨じゃん

836:デフォルトの名無しさん
08/06/15 16:16:47
>>834
ねとびんかしこいねねとびん

837:デフォルトの名無しさん
08/06/15 16:20:09
>>835
だから、その2種類の違いを他の言語より強調するのは何故か、という質問だろ。
他の言語がどの言語で、本当にそれよりRubyのほうが強調されているのかは俺はわからんが、
ともあれ比較の質問なら、Rubyの意志を比較で回答しないと納得はできんだろう。

838:デフォルトの名無しさん
08/06/15 16:32:14
例えば、javaでは
メソッドへパラメータを渡すとき

配列とオブジェクトは参照渡し(rubyでいう、非破壊的・・の概念にあたる)
プリミティブ型は値渡し(破壊的・・の概念にあたる)

になってる。

ソースを見たとき、
Rubyのように明確になっているとは、ちょっといえないかもね。

Cだと、ポインタかどうかで判断する。

どうしてRubyはその辺を強調してるかだけど、
自由度が高いからじゃないかな?
上のJavaの例でいうと、参照渡しした元のオブジェクトを呼び出し先から
操作することは、Javaでは出来ない。

Rubyではその辺を任意にできる操作できるようにしたかったから、
出来る場合と出来ない場合を明確に表記して、わかりやすくしたかったのではないかと
推察します。

839:デフォルトの名無しさん
08/06/15 16:38:16
すみません。

>上のJavaの例でいうと、参照渡しした元のオブジェクトを呼び出し先から
>操作することは、Javaでは出来ない。

上のJavaの例でいうと、値渡しした元のプリミティブ型を呼び出し先から
操作することは、Javaでは出来ない。

の間違い。

失礼しました。

参照渡し>>元のオブジェクトのリファレンス(アドレス、ポインタ)を渡す。(破壊的)
値渡し>>元のデータのコピーを渡す。(非破壊的)

です。

混乱させるような、書き込みをしてすみません。

840:デフォルトの名無しさん
08/06/15 16:52:41
>>837
破壊的なのに!とか述語に?をつけるのはschemeからのいただきだろうな。
ただ、単なる慣用だから守ってないライブラリもいっぱいあるし深い意味はないんじゃね?
強いて言えば、識別子に!とか?が使えるってのを強調したかったとか。
C/perl/pythonは出来ないはずだし。

841:デフォルトの名無しさん
08/06/15 17:11:55
>>833
Rubyだから特別強調しているというわけではない。

Rubyに限らず、手続き(Rubyの場合メソッドかProcオブジェクト)を実行すると
きに、その手続きを実行する前から存在していたすべてのオブジェクトについ


実行後、状態が変化する可能性がある(から注意して使え)のが「破壊的」
実行後、状態が変わらないことを保証するのが「非破壊的」

うまく説明できないけどこんな感じだ。状態が変わらないというのは「同じ」
ということなんだけど、じゃあ「同じ」とは何かというのがなかなか微妙。
だけどこの話を始めるとなが〜くなるから、この辺でやめとくぞ。

>>838,839 はなんか間違って理解してるみたいだぞ


842:デフォルトの名無しさん
08/06/15 17:36:53
>>833
rubyの場合、他言語に比べてメソッドチェインの色合いが強いからじゃなか
他言語では戻り値がvoidになるようなものでも、rubyだとself返したりしてるし

843:デフォルトの名無しさん
08/06/15 17:58:46
でも述語に?を使われると、三項演算子がちょっと見にくくなるよね

a = (isTrue?) ? 12 : 47

844:デフォルトの名無しさん
08/06/15 18:20:21
>>839
とりあえずJavaに参照渡しはない
プリミティブはもちろん値渡しだが
オブジェクトだって値渡し(参照の値渡し、あるいはcall by share)だ

とかいっても>>839は信じてくれないって俺は知ってるんだ

845:デフォルトの名無しさん
08/06/15 18:30:36
(´・ω・`) = (!isTrue?) ? !a.foo? : !b.foo?



846:デフォルトの名無しさん
08/06/15 18:32:53
hamlet = (to?) ? be : !be

847:デフォルトの名無しさん
08/06/15 18:42:35
>>833
単にメソッド名に!が付けられることを自慢したかっただけ。

848:デフォルトの名無しさん
08/06/15 19:15:36
>>833
オブジェクト使い捨てることによって生まれたメソッドチェーン主体の手法と、
従来のインスタンスへの変更を区別するためだろう



849:デフォルトの名無しさん
08/06/15 21:30:31
>>847
確かに、そんな気もしなくは無いですね…

850:デフォルトの名無しさん
08/06/15 22:04:22
rubyで日本語の分かち書きがやりたいよん

851:デフォルトの名無しさん
08/06/15 22:17:38
たとえば
mecabを直に叩くか
mecabのrubyライブラリを使うか
mecabのデータだけを使わせてもらって自分でがんばるか

852:デフォルトの名無しさん
08/06/15 23:09:39
>>851
ありがとうございます
(いまさら)環境 ActiveScriptRuby
・mecab for rubyがインストールできなかった
・↓を参考に直叩き
でできました

Windows上のrubyでMeCabをちょっこっと使ってみたい - Programming Must Go On
URLリンク(d.hatena.ne.jp)


853:デフォルトの名無しさん
08/06/16 00:16:14
形態素解析だっけ
yahooにもそんあ機能あったな

854:デフォルトの名無しさん
08/06/16 01:10:10
tiny segmenter なら辞書要らずでお手軽

855:デフォルトの名無しさん
08/06/16 11:08:26
matchdata = /[0-9]+/.match("foo=123;qoo=456;zoo=789")
p matchdata.to_a # => ["123"]

["123", "456", "789"]を期待したんですが["123"]でした。
どうしたら["123", "456", "789"]を得られますか?

856:デフォルトの名無しさん
08/06/16 11:11:34
"foo=123;qoo=456;zoo=789".scan(/\d+/)

857:デフォルトの名無しさん
08/06/16 11:25:49
正規表現は「1回だけ」マッチするのが基本
m = /.+=(\d+);.+=(\d+);.+=(\d+)/.match("foo=123;qoo=456;zoo=789")
puts m[1],m[2],m[3]

結果:
123
456
789

文字列に対して繰り返した結果の配列が欲しい場合は>>856のようにString#scanを使う
scanにブロックを渡した場合は適当に部分マッチ結果が渡る

"foo=123;qoo=456;zoo=789".scan(/\d+/){|m|
puts m
}

結果:
123
456
789

マニュアルのStringとArrayとHashとEnumerableの4つだけは読んでおくといいぞ

858:デフォルトの名無しさん
08/06/16 11:50:32
>>856-857
詳しいところまでありがとうございました。勉強になります。

859:デフォルトの名無しさん
08/06/16 14:58:20
Ruby1.8.6でメール送信フォームを作っています。

次のような流れで、送信する前に確認画面を設けたいのですが―

フォーム送信(Html)

確認用CGI(Ruby)で処理

確認画面の表示・フォーム送信(Html)

送信用CGI(Ruby)で処理

名前やメールアドレスといった文字列データは、
確認画面を経由させるのに問題ありませんが、
ファイルを添付させた場合、tempfileオブジェクトをどのように経由させればよいかわかりません。

今考えているのは、ファイル名だけを経由させ、
送信用ファイルでそのファイルを処理すればよいかと考えていますが、
FireFoxではtempfileのoriginal_files要素を取得してもフルパスを取得することができません。

フルパスを取得する方法、もしくはフォーム送信時の常套句的な方法があれば教えてください。

860:デフォルトの名無しさん
08/06/16 14:59:29
>送信用ファイルでそのファイルを処理すればよいかと考えていますが、
送信用CGIの間違いです。よろしくお願いします。

861:デフォルトの名無しさん
08/06/16 15:19:06
>>859
「確認CGIではファイル名取得だけ行い、送信画面でそのファイル名のファイルを実際に送信する」ということはできない
Webブラウザでは、<input type='file'> を POST する場合にしか、ファイル選択ダイアログとファイル送信はできない実装になっている
だから、入力画面のsubmitを受けたときにファイルは必ず受け取らないといけない(だから、あまり確認の意味がない)
受け取ったファイルをサーバで保持して、確認画面のsubmitが来たらファイルを実際に使用する、という手順にするしかないな

問題のひとつは確認画面でキャンセルされたときのサーバ側に残ったファイルの扱いなんだが、これは適当に消せ
あと、確認画面で戻る押されて別のファイルをアップロードされたときの扱いとかも面倒だな

どちらにしても、Rubyの話ではないので適当なCGI関連のスレで研究してくれ

862:デフォルトの名無しさん
08/06/16 15:31:55
>>861
どうもありがとうございます。

>どちらにしても、Rubyの話ではないので適当なCGI関連のスレで研究してくれ
そういうことでしたら、Perl等、他の言語で書かれたCGIも参考にしてみたいと思います。
助かりました。

863:デフォルトの名無しさん
08/06/17 11:40:57
質問させてください。
現在Ruby on Railsの勉強をしています。
しかし根本的な部分で躓いてしまいました。
練習してみようとtsukaeru.netのシルバープランというVPSサーバーをレンタルいたしました。
しかし、まったくこの上でrubyを用いたホームページを公開する方法がわかりません。

ruby on railsははいっていますか?との質問にサポートは入っています。との解答でした。それ以上のサポートはできないとのことなので
失礼ながらこちらで質問させていただきます。
勉強をしている本は基礎Ruby on RailsというものなのですがこちらはWindowsで導入する方法でしかもローカルで動く方法のみ書いてあったのでそれを一般に
公開するという点では参考になりません。

サーバ構築なども全く初体験なのです。
rubyのプログラムは普通のHPのようにpublic_html直下にindex.htmlをおけば動くといったものではないのですか?
公開するまでの具体的な方法をおしえてください。よろしくおねがいします。
OSはLinux CentOS5(final)のようです。

864:デフォルトの名無しさん
08/06/17 12:05:19
windowsで導入してローカルで動かせばいいじゃないか

865:デフォルトの名無しさん
08/06/17 12:08:55
うむ

866:デフォルトの名無しさん
08/06/17 13:43:28
>>863
まず、その程度の知識でVPSに手を出すのが無謀
組織の命令でやらざるを得ないのなら同情する

ちなみに

% ruby script/server

を実行すれば、適当なポートでHTTPサーバが立ち上がるので
あとは URLリンク(localhost:)(ポート番号)/ にアクセスすれば、サンプルページは見えるはず
よく分からないなら素直にWindows使って練習した方がいい。VPSはその後で

867:デフォルトの名無しさん
08/06/17 15:19:46
まじすか
そんなにハードル高いものだとは・・・orz
Windowsでやるということは、それを公開するには自鯖を立てるしかないのでしょうかね?
自鯖は少し理由があって立てられないのです。

レンタルしているVPSサーバー上でruby script/serverとすると
ruby: No such file or directory -- script/server (LoadError)
と出てしまいます。ruby -vなどとすると正しくバージョンが出ますのでインストールされていることは確かなはずです。

VPS以外で、もっとも簡単にRuby on Railsを公開するにはどうすればよいでしょう。。。
もとからRubyが使えますよ〜っと書いてあるレンタルサーバーでもどのようにしてつかえばいいのかさっぱりです。
本でも読んで勉強もしますのでよろしければはじめの一歩でも教えてください。

868:デフォルトの名無しさん
08/06/17 16:06:20
つか、なんで知識無い奴がRoRやってんの?
CGIとHTTPとDBの知識無い奴がRoRなんか触ったって意味ないのに

869:デフォルトの名無しさん
08/06/17 16:15:51
>>867
Rails環境の構築は初心者には難しい
お薦めの手順としては

1.WindowsにRails環境を作って、そこでRailsの基礎を勉強する
基礎Ruby on RailsにもRails環境入りのCDがあるけれど、ここは「InstantRails」を使うべき

2.ある程度Railsアプリケーションをローカル(つまりWin)で作れるようになったらVPSでの公開を検討する


遠回りかもしれないがまずはローカルでRailsを動かしてみよう
学生さんですか?
ここはRubyスレで微妙にスレ違いの話になるので、捨てアドでも晒してくれたら色々と教える事は可能


870:デフォルトの名無しさん
08/06/17 16:19:05
>>867
>ruby script/server
script/serverは、最初にrails generateで作ったディレクトリの中にある
あとは分かるな?

>VPS以外で
自鯖が立てられないならほぼ不可能
CGIスクリプトとして動かす手段もあるにはあるが、たぶん遅すぎて使い物にならない
それでもやりたいなら「dispatch.cgi rails」でググれ

871:デフォルトの名無しさん
08/06/17 16:22:14
>>868
そんな事は無いだろう
DBは必須だがCGIとHTTPの知識が無いRailsエンジニアなんてゾロゾロいるぞ
もちろん誰かが作ってくれた環境上でアプリを作るだけしかできないが

872:デフォルトの名無しさん
08/06/17 16:25:29
>>870
いや、実はRails自体入ってないんじゃないかとオレは思ってるw
867にはrails -vしてみて欲しいところだな

873:デフォルトの名無しさん
08/06/17 16:32:10
>>868
まあ、Railsはどこをどう見ても

「わかってる人間が手早く作るための強力フレームワーク(※ 引き換えにパワー上限あり)」

なんだが、Javaソリューションビジネスで負けた奴らが次点を求めてRoRにツバつけようと群がったもんだから
「あなたにもRoRが簡単にできます」ビジネスの被害者が続出してる
そういう被害者の人たちのフォローをするのも初心者スレの役目だとは思うぜ

874:デフォルトの名無しさん
08/06/17 16:38:38
>>873
Railsはシンプルでわかりやすいけど、それは「ある程度わかっている人」限定の話なんだよなぁ
プログラミング未経験者ならRailsよりもPHPの方が簡単に入れるだろうとは思う

875:デフォルトの名無しさん
08/06/17 17:01:38
Rubyの知識はあるのかなあ
無いんだったら、俺ならダッシュで本屋行ってPHPに鞍替えするね

876:デフォルトの名無しさん
08/06/17 17:19:53
おk
>>867はPHPに乗り換えなさいw

877:デフォルトの名無しさん
08/06/17 18:10:33
皆様ご回答ありがとうございます。
現在の、ローカルのWindows環境では本にしたがい、localhost:3000で動くことはできました。
それを一般に公開するなんて簡単だろうperlのcgiとおなじだろ〜っと考えていたらみごとに躓きました。

ご指摘のとおりrails -vしてみたところRails 1.2.2と返ってきたので入ってはいるみたいです。

そしてRoRのソースやらが入っているディレクトリまでcdで移動して再度script/serverを打ってみると

create
File exists - script/server

と帰ってきました。どうやらサーバーがたったようではなさそうな感じですが・・・

あと一歩なんでしょうかorz

ちなみに言語経験はC#とVBを少々でございます。
捨てアドさらせば教えていただけるというとても親切な方がいらっしゃいましたのでアドレスを書いて見ます。
よろしくお願いします。

878:デフォルトの名無しさん
08/06/17 18:38:56
初心者か

879:デフォルトの名無しさん
08/06/17 18:43:32
>>878
まあ、初心者スレだからな

来るのはRubyの初心者だけにして欲しかったもんだが
2ch初心者とかネット初心者とかコミュニケーション初心者とかは正直勘弁

880:デフォルトの名無しさん
08/06/17 18:44:48
つーか>>878とか>>868は上から目線すぎ
誰だって知らない分野はあるだろ

881:デフォルトの名無しさん
08/06/17 18:47:51
lololol

882:デフォルトの名無しさん
08/06/17 18:49:54
>>880
ほいほいメールアドレス晒したり
Windows以外で動作させるための文献検索すらできてなかったりするのは
どうにも擁護できんぞ
「知らない分野」とかそういうレベルではない

883:デフォルトの名無しさん
08/06/17 18:53:29
>>880は「お前には無理だからやめろ」とはっきり言ったほうがいいと仰っておられるのですよ
RoR使うのやめろというレスを全部スルーしてるからな

884:デフォルトの名無しさん
08/06/17 19:10:38
>>882
自分のメールアドレス晒すのは、別に擁護する必要無いだろう。

885:デフォルトの名無しさん
08/06/17 19:12:56
RoR以外の手段を使えというアドバイスですが、一応RoRについての文献をすでに購入してしまったことと
また、RoRを勉強してみたいという意欲のもと始めましたので、別の言語は考えていません。
LinuxにRuby と Railsを入れる方法についてはいろいろと調べまわったつもりなのですが具体的に公開手順を示されているサイトが
みつかりません。メールアドレスを晒したのは>>869さんが親切にあのようにおっしゃってくれたからです。
微妙にすれ違いとの事ですので、失礼しました。

886:デフォルトの名無しさん
08/06/17 20:02:43
Rails云々とは関係なくHTTPとCGIについてよく書けている記事があったので晒してみる
URLリンク(itpro.nikkeibp.co.jp)

これを書いたやつは見込みがあるな

887:デフォルトの名無しさん
08/06/17 20:11:11
そのシリーズはなかなか良質
抽象データのあたりとか、
よくまあ説明が複雑になりがちな概念をここまで平易に

888:デフォルトの名無しさん
08/06/17 20:18:50
タイトルで吹いたw

889:デフォルトの名無しさん
08/06/17 22:58:25
直伝噴いた

890:デフォルトの名無しさん
08/06/17 23:21:08
ここまで言うならぜひ言語を作って欲しい物だ

891:デフォルトの名無しさん
08/06/18 02:07:50
最近読んだ『ハッカーと画家』でrubyの評価が結構高かった。
著者曰くLispに最も漸近しているスクリプト言語とのこと。

892:デフォルトの名無しさん
08/06/18 02:25:08
お前が読んだのは最近かもしれんが、書かれたのは何年も前だぞ

893:デフォルトの名無しさん
08/06/18 02:33:52
原語のほうは公開されてなかったっけ

894:デフォルトの名無しさん
08/06/18 02:54:16
Lispに最も漸近しているって褒め言葉になってないぞw

895:デフォルトの名無しさん
08/06/18 04:17:14
>>891
それ、
『今大人気の言語RubyはLispに一番近い言語なんだよ(知ってた?)
 でもさ、だったらLispそのものを使ったほうがいいよね?』
っていうプロパガンダだよ。PGの文章は今から見ると宣伝とか
自己啓発系のものが多いから、半分眉唾で読んだほうがいいよ。
リアルタイムで読んだら興奮するんだけどね。

896:デフォルトの名無しさん
08/06/18 07:54:35
MSが絡むと途端に理性を失うよねこの人

897:デフォルトの名無しさん
08/06/18 15:53:28
ここは初心者が質問するスレじゃなくて性格のねじれた中級者の雑談でよろしいでしょうか?それならば私も混ぜてください

898:デフォルトの名無しさん
08/06/18 15:54:24
>>896
評価するところは評価していたかと
キャッチコピーが技術者のことをよく分かってるって

899:デフォルトの名無しさん
08/06/18 15:58:31
>>897
そういうのは基本的にはアンチ専用スレで

900:デフォルトの名無しさん
08/06/19 00:57:36
Ruby CGIで質問です。

Print文で処理中をあらわす文字列を表示し、
処理が完了したら、次にそのことを知らせる文字列を表示したいのですが、
最初に表示した処理中をあらわす文字列を消すにはどうすればいいのでしょうか?

901:デフォルトの名無しさん
08/06/19 01:08:39
CGIで逐次表示とか考えるな


902:デフォルトの名無しさん
08/06/19 01:10:16
>>900
それは、ボタンをポチッと押すと
「ただいま処理中です」
とかいうメッセージの表示されたhtmlを表示して、
サーバ側の処理が終わったら*自動的*に
「終了しました」
とか書かれたhtmlを表示したいということでしょうか?

903:デフォルトの名無しさん
08/06/19 02:07:05
>>900
Ajaxでどうぞ


904:あぼーん
あぼーん
あぼーん

905:デフォルトの名無しさん
08/06/19 07:19:48
>>901
少なくとも標準あるいは標準の応用でなんとかできるものではないな
RubyやRubyライブラリとしてのサポートはないと思われる
自前でJavaScript書くしかないねえ

906:デフォルトの名無しさん
08/06/19 10:37:36
>>902
そういうことです。

>>901 >>903 >>905
CGIで逐次表示は考えないようにします。
Ajax(JavaScript)で対応したいと思います。

どうもありがとうございました。

907:デフォルトの名無しさん
08/06/20 17:31:54
URLリンク(jp.rubyist.net)

908:デフォルトの名無しさん
08/06/20 18:50:56
爆撃荒らしうぜえ

909:デフォルトの名無しさん
08/06/20 20:37:19
JRubyの質問ってここでいいのでしょうか・・・?

JRuby-1.1.2.zipを dist.codehaus.org から落としてきて
JDK-1.4.2_10の入っているPCに入れてみたけど、

noclassdeffounderror : java/lang/enum と出てjrubyもjirbも
立ち上がりません。

enum型ってJDK-5.0 からのサポートらしいけど、
JRuby-1.1.2ってJDK-5.0でしか動かないのでしょうか?

宜しくお願いします。


910:デフォルトの名無しさん
08/06/21 04:11:42
>>909
READMEに、JRubyのコンパイルにJDK1.5以上が必要って書いてあるからそうなんだろ

911:909
08/06/22 09:47:53
>>910

ネットの記事では1.4.2でも動作するって書いてあったのですが
実際はJDK5.0でないとだめなようですね。

返答ありがとうございました。



912:デフォルトの名無しさん
08/06/22 12:26:13
あるHTMLファイル(何でもいいんですが一般的なWebページの)からリンクしているURLを
取り出そうとしています。ぐぐったらscrapiとかいうので簡単にできたんですがかなり
処理速度が遅いのです。

高速に取り出そうとしたらやはり正規表現で取り出すしかないのでしょうか?
hpricotというのも見つけたのですがいまいちよくわかってません。

robustかつ高速に取得する方法はないものでしょうか?

913:デフォルトの名無しさん
08/06/22 12:43:09
利用者のIT製品に対する基本姿勢は、Microsoftを相手にするときのそれが最も健全であって、
ブーブー言いながら使うのが一番だと思うが、最近は企業ブランド崇拝みたいのができあがっていて、
Apple教団はご愛嬌と思っていたが、何だかこれも同じような感じで、嫌な雰囲気だ。Googleしかり。

特にヘビーユーザーがそういう信者というか、エヴァンジェリストになって
教義に染まない利用者の不満をさえぎる壁になると異様。

そういうのって普及前のファンダムの色が残っているから、と楽観視していたのに。
これだけシェアを拡大しても、いっこうにあらたまらないな。


914:デフォルトの名無しさん
08/06/22 12:46:44
>>912
自力でサイト固有の正規表現考えて抽出してそのサイトの URI に + するのが簡単
正規表現めどいという人に Hpricot

require 'rubygems'
require 'hpricot'
require 'open-uri'

uri = URI.parse('URLリンク(www.ruby-lang.org)')
doc = Hpricot.parse(uri.read)
puts doc.search('a').map{|e| uri + e['href']}.find_all{|e| e.scheme =~ /\Ahttp/}.uniq

実行結果
URLリンク(www.ruby-lang.org)
URLリンク(www.ruby-lang.org)
URLリンク(www.ruby-lang.org)
URLリンク(www.ruby-lang.org)
URLリンク(www.ruby-lang.org)
URLリンク(www.ruby-lang.org)
URLリンク(www.ruby-lang.org)
URLリンク(www.ruby-lang.org)
URLリンク(www.ruby-lang.org)

...

915:デフォルトの名無しさん
08/06/22 12:53:43
('a')がAAに見えた

916:912
08/06/22 13:27:20
>>914
ありがとうございます。
scrapiよりは速そうです。scrapiが今使ってるマシンだと動かない(64bitに対応していない?)みたいなので
直接比較はできませんが。でも、robustという意味ではyoutubeのURL入れるとだめっぽいですね
ex : URLリンク(jp.youtube.com)

サイト固有の正規表現を記述するのは一番確実でしょうが一番汚いやり方だと思うので
スマートかつある程度速くできないものかなぁと試行錯誤中です。

917:デフォルトの名無しさん
08/06/22 13:47:32
URLリンク(jp.rubyist.net)

918:デフォルトの名無しさん
08/06/22 13:51:42
>>863
遅レスでもうみてないかもしれないけど。

Railsはともかく・・・
もし、あなたがVPSの管理もする(専用の管理者があなただけ)のなら、VPSを今すぐ解約しよう。
そのうちクラックされて他人に迷惑をかけるだけですよ。

まずは、ローカルで試す(Windowsでもできる)か、ローカルネットワークで外に公開しないサーバーを建てるなどをして知識を十分にしてからでも遅くはないよ。
VPSの場合、RubyとかRailsとかやる前にサーバーの管理の方法も一通り学んでおく必要がある。

919:デフォルトの名無しさん
08/06/22 13:53:02
>>916
それは、httpじゃなくて、ttpだからでは?

920:912
08/06/22 14:14:22
>>919
単純に貼るときに抜いただけです。httpでやってhpricotで例外吐きます。

921:デフォルトの名無しさん
08/06/22 15:34:31
初めまして、
今回ruby on railsを勉強したいと思って、インストールしようとしとして
$ gem install rails --include-dependenciesを実行したんですが、うまくいきません。
だれか、情報があったら教えてください。

C:\ruby>gem install rails --include-dependencies
INFO: `gem install -y` is now default and will be removed
INFO: use --ignore-dependencies to install only the gems you
Bulk updating Gem source index for: URLリンク(gems.rubyforge.org)
Bulk updating Gem source index for: URLリンク(gems.rubyforge.org)

↑の状態で一時間ぐらい止まってます。別にPCは動くので、フリーズとかでもないです。
URLリンク(www.rubylife.jp)のサイトの手順通りにやったんですが…

ちなみに、ruby及びRubyGemsもちゃんとインストールしてあります。

どなたか情報お願いします。
OS: Windows Vista です。

922:デフォルトの名無しさん
08/06/22 16:15:27
>>921
マシンスペックにもよるが、Rails 新規インストール時に数時間返答がないのは普通
1日以上待った例もあるからそのまま放っておけ

923:デフォルトの名無しさん
08/06/22 16:19:26
>>921
Debianの例で悪いけど、回避策もやはりあるみたいよ。

URLリンク(d.hatena.ne.jp)

924:デフォルトの名無しさん
08/06/22 16:36:28
めんどくさいなあ

>>916
どうして例外が起こったかはわかる?
残念だけど、Web のスクレイピングは文字通り例外との戦いだぞ
サイトごとに調整しなければならないと思ってくれていい
HTML や HTTP の知識はあるかな?
たとえば以下の方法だと 142 のリンクが抽出されてるけど、本当に必要なのは数個だろ?

require 'rubygems'
require 'hpricot'
require 'open-uri'

uri = URI.parse('URLリンク(www.ruby-lang.org)')
doc = Hpricot.parse(uri.read)
puts doc.search('a').map{|e| e['href']}.compact.map{|e| uri + e}.find_all{|e| e.scheme =~ /\Ahttp/}.uniq


925:デフォルトの名無しさん
08/06/22 16:46:58
uri が前のままだった

本質的には puts doc.search('a').map{|e| e['href']} だけでいい
でも、それだと相対 URL で書かれているリンクがわけわからなくなるのでわざわざ uri に join してる
http:// と https:// 以外を取得しても意味がないことが多いからわざわざ http:// と https:// 以外を除いてる
で、Youtube では「onclick で JavaScript 起動しかさせないリンク」という href 自体がない <a> タグがあるのでわざわざ href が nil な場合を compact で除いてる
他のサイトでは「欲しいリンクだと思ったら実は画像貼り付けのボタンでPOST」とかにも対処しなければならないかもしれない

require 'rubygems'
require 'hpricot'
require 'open-uri'

uri = URI.parse('URLリンク(jp.youtube.com)')
doc = Hpricot.parse(uri.read)
puts doc.search('a').map{|e| e['href']}.compact.map{|e| uri + e}.find_all{|e| e.scheme =~ /\Ahttp/}.uniq


926:デフォルトの名無しさん
08/06/22 16:58:19
HTML の知識はないとダメだよね
後出しで youtube 出してきたけど、欲しいのは動画ファイルのURLや各種一覧にあるURLだろうし
これからまた絞らないといけないだろうな(おそらくはCSSセレクタとかXPathとかあのへんの知識が要る)

927:デフォルトの名無しさん
08/06/22 17:01:13
リンクされてるURLを抜き出すライブラリを作ってるというならともかく、
無駄にあれこれ悩むよりさっさと正規表現使って抜き出せばいいと漏れは思う。

928:デフォルトの名無しさん
08/06/22 17:03:18
そういう意味では>>914の1行目の時点で回答は出てるんだよな

929:デフォルトの名無しさん
08/06/22 17:32:00
うっかり汎用性を求めてしまうのはRubyスクリプトの悪い癖
初期ではそのノリで標準ライブラリになってしまったりしたが

930:デフォルトの名無しさん
08/06/22 17:33:53
>>921
rubygems 1.2 で劇的に改善されたらしい。
URLリンク(rubyforge.org)


931:930
08/06/22 17:38:48
gem 1.2.0 にしたら、gem が笑っちゃうぐらい高速になったよ。

932:デフォルトの名無しさん
08/06/22 18:19:17
RubyKaigがニコ動うpされまくってるぜ

タグ検索 RubyKaigi2008‐ニコニコ動画(SP1)
URLリンク(www.nicovideo.jp)

933:デフォルトの名無しさん
08/06/22 18:24:58
>>931
メチャメチャ速くなってる気がするwwww
gem updateがさっくりオワタww

934:デフォルトの名無しさん
08/06/22 18:58:55
>>932
お、今年はうpが早いな。
あとで見る。

935:デフォルトの名無しさん
08/06/22 19:27:22
標準の関数的メソッド以外で引数のカッコ省略するのやめようぜ

936:912
08/06/22 21:47:13
>>924-925
遅くなりましたがありがとうございました。
やはり例外との戦いなんですね。参考にします。

>>926
youtubeはたまたまブラウザで開いてるURL全部入れて試しただけです。
youtubeから抜き出したいというわけではなかったのです。

937:デフォルトの名無しさん
08/06/23 14:10:30
gem1.2は爆速w
>>930ありがとう

938:日立バキバキ高野くん祭り
08/06/23 20:00:05
1.日立製作所社員の高野くん(高野光弘)が会社を誹謗中傷して機密も漏洩
2.日立のユーザーにも「キチガイ」との障害者差別発言
3.日立製作所の企業イメージをバキバキにする
4.自身のサイトの『32nd diary』に掲載
5.日立製作所に通報される
6.あせって似顔絵削除
7.火に油を注ぐだけで所属する日本UNIXユーザ会にも通報祭り勃発
8.「給料泥棒」と説教される
9.「殺します」と殺人予告をして警察に事情を聞かれる←イマココ

高野光弘の行動
現在は、過去の記事を閲覧できなくして、「本日の日記はツッコミ数の制限を越えています」としています。
まずは、不愉快な思いをされた方々に謝罪するべきなのではないでしょうか。

高野光弘の発言
「まぁ、どこの団体もそんなにヤワじゃないので、平気なんですけども。
日本UNIXユーザ会が一番対応に慣れてる感じ。」

日本UNIXユーザ会が対応に慣れているか、みなさん確認してみてください。

連絡先
URLリンク(www.net.intap.or.jp)

939:デフォルトの名無しさん
08/06/24 00:00:05
postgresql にdbiを使って接続しようとしたんですが、うまく行きません。

/usr/local/lib/ruby/site_ruby/1.8/dbi.rb:368:in `load_driver':
Could not load driver (no such file to load -- /usr/local/lib/ruby/site_ruby/1.8/dbd/Pg) (DBI::InterfaceError)

というエラーがでてきます。

$ echo 'export PATH=/usr/local/psql/lib:$PATH' >> ~/.bash_profile

でライブラリへのパスは通っていると思うんですが、
解決策をお教えいただければと思います。

940:デフォルトの名無しさん
08/06/24 00:44:50
>>939
/usr/local/lib/ruby/site_ruby/1.8/dbd/Pg.rb
は存在するの?

941:デフォルトの名無しさん
08/06/24 06:51:08
UNIXにおいては、ライブラリパス(というか、soの在処)は
LD_LIBRARY_PATH
あたりで設定すると記憶しているが。

942:デフォルトの名無しさん
08/06/24 14:23:27
linuxではldconfig とかも使う。

943:デフォルトの名無しさん
08/06/24 21:12:24
Solarisならcrleとかね

944:デフォルトの名無しさん
08/06/24 21:14:08
ldd でlib全部リンクできてるか確認するとかね

945:デフォルトの名無しさん
08/06/24 21:35:17
Macならotool -L だな。


946:デフォルトの名無しさん
08/06/24 21:54:40
939です

皆さんご丁寧にありがとうございます。

>>940

/usr/local/lib/ruby/site_ruby/1.8/dbd/Pg.rb は存在しなくて、
/usr/local/lib/ruby/site_ruby/1.8/dbd/Pg/Pg.rb があります。

PATHやLD_LIBRARY_PATHはOKな筈なんですが、うまく行かないです。
こちらの環境は、macなのでotool -L などでもう少し格闘してみます。

947:デフォルトの名無しさん
08/06/24 23:14:53
>>946
ruby-pg はインストールしてる?

ruby -rpg -e0
を実行して何も出なければ入っているって事なんだが。

それにしても分かりにくいエラーメッセージだな>dbi
真の原因を隠すなよ。

948:デフォルトの名無しさん
08/06/25 04:05:46
Rubyでシューティングゲームつくってるんですけど

949:デフォルトの名無しさん
08/06/25 04:08:31
ごめ 途中でカキコしちゃった
Rubyでシューティングゲームつくってるんですけど 弾が当たってゲームオーバーになった時に画面全体を赤っぽくしたいんですけど なにかいい方法ありませんか?

一応予定としては
画面全体を赤で塗る 
透過する 
って考えているんですけどがんばっていろいろ探ってみてもやり方がわかりませんorz どうかよろしくおねがいします。

950:デフォルトの名無しさん
08/06/25 04:33:13
>>949
手順
1.Rubyをアンインストール
2.HSPをインストール
3.「シューティングゲームビルダー」でぐぐる。
4.HSPをアンインストール

わざわざRubyで作る意味がわからない

951:デフォルトの名無しさん
08/06/25 05:02:34
ん十年前の質問を思い出すなぁ

C言語でゲームを作りたいんですがどうすればいいですか?



しるかーぼけー

952:デフォルトの名無しさん
08/06/25 07:11:46
Rubyかんけえねえw

953:デフォルトの名無しさん
08/06/25 07:12:54
少し質問があるのですが、数値的なシミュレーションをして
結果を分布図(正規分布の図みたいなの)として出力したいのですが、
適したグラフライブラリはどんなものがありますでしょうか?

954:デフォルトの名無しさん
08/06/25 07:20:52
Excelとかw

955:デフォルトの名無しさん
08/06/25 07:35:18
数値だけ出力して、グラフはgnuplotに任せるとかはダメかな?

956:デフォルトの名無しさん
08/06/25 07:59:27
gnuplotのラッパあったよな、確か。
後は

Rubyist Magazine 0006 号
Ruby Library Report 【第 5 回】 数値計算と可視化
URLリンク(jp.rubyist.net)

とか。

957:デフォルトの名無しさん
08/06/25 09:04:23
>>954-956
ありがとうございます。

ああ、gnuplotでもいいか。

GnuplotのRuby用のインターフェースはこれですね。
URLリンク(rgplot.rubyforge.org)
gemにもありました。Windowsでもつかえるかな?

あとは、テキストのとかw
Histogram class for ruby(Kodama's tips page)
URLリンク(www.math.kobe-u.ac.jp)

かっこいいグラフとか、
Gruff Graphs for Ruby | Ruby on Rails for Newbies
URLリンク(nubyonrails.com)

>>956
数値計算のライブラリの詳しい紹介、助かります。

うまく画像化できそうです。一通り試してみようと思います。
ありがとうございました。

958:デフォルトの名無しさん
08/06/25 09:07:44
ちょっとした疑問なのですが、srandとかrandって
何故、クラス化かモジュール化されてないのでしょうか?
徹底的にOOPしているRubyにおいてrandは不思議な存在に思えます。

MLのログなど見てみたのですが、過去にクラス化の議論はされているようで↓
URLリンク(blade.nagaokaut.ac.jp)

パッチが作られていて、1.9で当てられるようなことになっているのですが、
SVNのtrunkや1.9.2とかのソースを見ても当たってないようです???

959:デフォルトの名無しさん
08/06/25 09:22:20
>>949
どんなライブラリを使ってるのかが分からないと、助言のしようがない

960:デフォルトの名無しさん
08/06/25 09:56:07
ArgumentErrorエラーメッセージのことで質問させてください。
wrong number of arguments(1 for 0)
このとき「引数の数が間違えてる」のは文字通りわかるのですが、
(1 for 0)はどう読んだらいいんでしょうか?
引数なし(0)のところに1つ(余計に?)渡してる、みたいなニュアンスでしょうか?

今、あるライブラリを使っていてこのエラーが出ているのですが
引数の数は間違えておらず(関数側にもデフォルト値も設定されている)
原因を探しているところです。

961:デフォルトの名無しさん
08/06/25 10:10:38
>>960
お前英語苦手だろ

962:デフォルトの名無しさん
08/06/25 10:53:50
Rubyの入門書はエラーメッセージに 2〜3節割くべきだと思う

>>960
1 for 0 は「0 個の代わりに 1個得た」と読む
日本人にはまだわかりにくいな
(got 1, required 0) とでも書いてくれればわかりやすいんだが
引数総数しか問題にしてない記述で、引数 0個のメソッドなのに引数が 1個渡されてるというエラーだ
このメソッドに引数を渡してはいけないってことだな

irb> 'abc'.downcase('param')
ArgumentError: wrong number of arguments (1 for 0)



963:960
08/06/25 11:03:15
>>962
ありがとうございます。
直接呼び出しているメソッド内から呼ばれていたメソッドで
引っかかっていたようでした。
構文が古いのか(?)マニュアル見て書き直してみたらうまくいきましたm(_ _)m

964:デフォルトの名無しさん
08/06/25 12:14:18
>>958
URLリンク(doc.loveruby.net)


965:デフォルトの名無しさん
08/06/25 12:30:57
>>950 一応Rubyの書き方覚えつつ作ろうかなぁと思ってちまちまつくってます。

ライブラリはSDLとfpstimerはいってます。

966:デフォルトの名無しさん
08/06/25 12:55:07
>>964
んーたぶんそれと違うような。Mersenne Twisterをラップしたのなんだけど・・・

>>965
Rubyでゲーム制作ならこっちのスレの方がよいかと思う
【Ruby/SDL他】Rubyでゲーム制作・総合スレッド
スレリンク(gamedev板)

967:デフォルトの名無しさん
08/06/25 13:03:33
>>966
普通の乱数ジェネレータのオブジェクト化ね。
多分やってない、やる気がないだけだと思うけど。

確か、過去の議論で、うまい名前とうまいAPIがあれば、みたいな
話になってたかな。

968:デフォルトの名無しさん
08/06/25 13:10:11
>>966 スレちソマソ 誘導サンクスー

969:958
08/06/25 13:20:17
MLのその後のRandomパッチの議論を見つけました。
URLリンク(blade.nagaokaut.ac.jp)

なんかグダグダのまま頓挫してますね・・・。


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4712日前に更新/261 KB
担当:undef