Ruby 初心者スレッド ..
2:デフォルトの名無しさん
09/01/01 13:14:07
【よくあるしつもん】
Q:
いちからRubyを始める初心者向けのRuby入門書は何がおすすめでしょうか?
A:
プログラム作成の初心者だったら
「たのしいRuby 第2版 Rubyではじめる気軽なプログラミング」
URLリンク(www.amazon.co.jp)
他の言語経験があるんだったら
「プログラミングRuby 第2版 言語編」
URLリンク(www.amazon.co.jp)
「初めてのRuby」
URLリンク(www.amazon.co.jp)
「Ruby Way 第2版」
URLリンク(www.amazon.co.jp)
3:デフォルトの名無しさん
09/01/01 13:19:01
■前スレ
Ruby 初心者スレッド Part 23
スレリンク(tech板)
■関連スレ
Rubyについて Part 33
スレリンク(tech板)
Rubyの宿題教えてください。2限目
スレリンク(tech板)
RubyCocoa 初心者質問【Leopardバンドル記念】
スレリンク(mac板)
【ActiveScript】RubyをWindowsで使うスレ【GUI】
スレリンク(tech板)
デザパタ + Python/Ruby/Smalltalk part2
スレリンク(tech板)
魁け! Ruby 1.9.X
スレリンク(tech板)
Rubyについて(アンチ専用) Part003
スレリンク(tech板)
【Ruby/SDL他】Rubyでゲーム制作・総合スレッド
スレリンク(gamedev板)
【Ruby】RubyonRailsPart6
スレリンク(php板)
【Rails】便利なRubyGemsを共有するスレ【Hpricot】
スレリンク(tech板)
4:デフォルトの名無しさん
09/01/01 13:22:21
Ruby>>>>>Java
スレリンク(tech板)
Rubyは難しすぎ
スレリンク(tech板)
【カルト】Ruby開発者Matz【モルモン】
スレリンク(prog板)
■公式/非公式関連リンク
Ruby Home Page
URLリンク(www.ruby-lang.org)
Rubyリファレンス(よくサーバーエラーになります)
URLリンク(www.ruby-lang.org)
URLリンク(www.ruby-doc.org) (英語)
リファレンスのHTMLヘルプ版配布
URLリンク(elbereth-hp.hp.infoseek.co.jp)
# Windowsで便利
Ruby FAQ
URLリンク(ruby-lang.org)
Programming Ruby - The Pragmatic Programmer's Guide
URLリンク(www.ruby-doc.org)
# 好評書籍をWebで公開中、ただし英語
逆引きRuby
URLリンク(www.namaraii.com)
5:デフォルトの名無しさん
09/01/01 13:23:07
RAA - Ruby Application Archive
URLリンク(raa.ruby-lang.org)
RubyForge
URLリンク(www.rubyforge.org)
# Rubyのアプリやライブラリが検索できる
GitHub RubyGems
URLリンク(gems.github.com)
URLリンク(github.com)
# 最近は RubyForge より GitHub が人気
日本Rubyの会 公式Wiki
URLリンク(jp.rubyist.net)
# メニューに表示されていない埋もれた情報ページ多数
Rubyist Magazine - るびま
URLリンク(jp.rubyist.net)
# コードレビューが好評
Ruby hotlinks 五月雨版(日記やblogのアンテナ)
URLリンク(www.rubyist.net)
Rubyの本一覧
URLリンク(www.ruby-lang.org)
<rubyXML/>
URLリンク(www.rubyxml.com)
Matzにっき(Ruby作者の日記)
URLリンク(www.rubyist.net)
6:デフォルトの名無しさん
09/01/01 13:24:18
■ちょっと前にできたWiki
Ruby 初心者スレッド Hiki
URLリンク(starlet.s145.xrea.com)
Ruby Portal
URLリンク(ruby.morphball.net)
■プレゼンテーション
Ruby会議2008
URLリンク(jp.rubyist.net)
URLリンク(www.nicovideo.jp)
Ruby会議2007
URLリンク(jp.rubyist.net)
URLリンク(www.nicovideo.jp)
7:デフォルトの名無しさん
09/01/01 13:31:03
Cで書かれたアプリの組み込み言語としてRubyを使う方法なら
URLリンク(eto.com)
XmlSimpleってライブラリがあるよ
URLリンク(xml-simple.rubyforge.org)
Ruby による Win32OLE プログラミング
URLリンク(www.morijp.com)
8:デフォルトの名無しさん
09/01/01 15:34:51
. \\ ィ ─ァ 立 |了
// ┴ ∠ 」 口 |
,ィ' ̄` ー、_
((”Y:ハMリソY ち
,ゞ-{|モュ tチ|ト. く, ,ノ⌒ヽ-、_
`tー'ゝ ワ,.イ:`イ ,.ィ'" 入 ヽ i_,,.
/::::::_:ィヤ'Y::/7`ー-ゥ=、-―=ー―--y'" ,./_ゝ i Y }_
/:::イ キ/|./::/f / /| { ヤi | |ヘ、_
/:/Y ヤ"|:::| キィ、 ヤフ`ー--=、..,,__i i / | `ー' イ/Yー'
/::/イ i. , i::| /::::`Y"::\ ∨. |. 変 .| >>1 .|
Yモ`、_,,.=-―ー{(.>、Y i || /::::::::::::::::::::::\. ヽ } 身 .| 乙 |
`ー--zー―-イノ:::::::ノ }{ ):::::::::::::::::::::::::::\ } / 部 .| 部 |
/:::::::::::::::::::::::::/ リ Y:::::::::::::::::::::::::::∧ i{ノ| 部 .| 部 |
/:::::::::::::::::::::::::イイT"T"T ̄| ヤー―--==;;;_::::} | 長 | 長 |
 ̄ ̄" ̄`ー/7フ ̄ii ̄ii ̄iT∧ ヾ . | | |
9:デフォルトの名無しさん
09/01/01 15:38:05
>ruby -v
ruby 1.8.6 (2007-06-07 patchlevel 36) [i386-mswin32]
(1) 変数を取り消すことはできるのでしょうか?
var = "somthing"
(varを取り消す処理)
p defined? var #=>nil
(2) 手続きオブジェクトのブロックパラメーターにデフォルト値を設定する方法はあるのでしょうか?
proc = lambda { |i=1| puts i }
proc[2] #=>2
proc[] #=>1
10:デフォルトの名無しさん
09/01/01 16:06:45
DBマイグレーションでデータベースにカラムを作ろうとしましたが
以下のようなエラーが出て困っています.
** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:migrate
rake aborted!
undefined method `each' for #<Mysql:0x351bf78>
コードは次の最低限のものです
class Test < ActiveRecord::Migration
def self.up
t.timestamp
end
def self.down
end
end
どうすればいいかどうかよろしくお願いします
11:デフォルトの名無しさん
09/01/01 16:25:34
>>9
>(1) 変数を取り消すことはできるのでしょうか?
ないんじゃないかなあ。
>(2) 手続きオブジェクトのブロックパラメーターにデフォルト値を設定する方法はあるのでしょうか?
1.8 ではできない。1.9 ではできるらしい。
obj = proc {|x=10| p x }
obj.call(123) #=> 123
obj.call() #=> 10
>>10
> undefined method `each' for #<Mysql:0x351bf78>
というエラーだから、PostgreSQL使おうとしているのにMysqlが使われているのが問題の原因じゃないかな。
12:デフォルトの名無しさん
09/01/01 16:57:31
>>11
(1)は無理だけど、(2)は1.9でできるんすね
サンクス
13:10
09/01/01 16:57:44
>11 どうもです
PostgreSQLをいっさい使わず
mysqlのみない設定のつもりなんですが,
database.yml以外に使用するDBを指定する場所があるのでしょうか?
設定を変更したい場合どこをいじればいいのでしょう...
すみませんがお願いします.
現在は以下の設定
development:
adapter: mysql
encoding: utf8
database: dbname
username: user_id
password: *
host: localhost
test:
adapter: mysql
encoding: utf8
database: dbname_test
username: user_id
password: *
host: localhost
production:
adapter: mysql
encoding: utf8
database: dbname_production
username: user_id
password: *
host: localhost
14:デフォルトの名無しさん
09/01/01 17:21:48
>>13
すまん、「PostgreSQL使おうとしている」なんてどこにも書いてなかったな。勘違いしてた。
使ってるOS名と、Railsのバージョンを書いてみるといいかもね。
15:デフォルトの名無しさん
09/01/01 17:24:18
「undefined method `each' for Mysql」でぐぐると、こんなんが見つかった。
けっこう問題になってるみたいね。
URLリンク(plaza.rakuten.co.jp)
URLリンク(plaza.rakuten.co.jp)
16:デフォルトの名無しさん
09/01/01 17:27:24
なんかMySQLのバージョンが問題らしい。
5.1はだめ、5.0.24もだめ、5.0.67だとうまくいったとか。
URLリンク(www.nabble.com)'-for--%3CMysql:-td20760472.html
17:10
09/01/02 04:14:35
MySqlのバージョンを5.0.67に落とすことで正常に動作しました.
>ALL
ありがとうございました
しかし,最新版使うから正常に動かないって...
いろんな環境で使われるソフトウェアって大変だなぁ...
18:デフォルトの名無しさん
09/01/02 04:19:14
x.0->x.1の大バージョンアップで何か仕様が変わったかしてかみ合わなくなったんじゃない?
例えば、5.0.72なら動きそうな気配。
19:デフォルトの名無しさん
09/01/02 10:27:40
ネットを移動していくプログラムを動かしていると、
相手からの反応がないと(もしくはaddressにたどり着けないと?)
time outでrescueに引っかかることなく、rubyプログラムが終了してしまうんですが。
そのまま次を続けるのは、どうすればいいですか。
20:デフォルトの名無しさん
09/01/02 10:32:06
引数無しrescueはStandardErrorとその子クラスしか補足しないから
TimeoutError( < Interrupt < Exception )が補足できない。
rescue TimeoutError
rescue Interrupt
rescue Exception
のどれかを使う。
21:デフォルトの名無しさん
09/01/02 14:10:18
>>20
ありがとうございました。
助かります。
22:デフォルトの名無しさん
09/01/02 20:29:59
ロングIPアドレスを普通のIPアドレスに変換するライブラリってありますか?
23:デフォルトの名無しさん
09/01/02 20:33:27
ロングIPアドレスって何?
24:デフォルトの名無しさん
09/01/02 20:40:55
自己レス。32オクテットを10進整数とみなしたモノか。
[192*2**24 + 168*2**16 + 0*2**8 + 1].pack('N').unpack('CCCC')
こんなもん?
25:デフォルトの名無しさん
09/01/02 20:41:13
32ビット4オクテットの間違いorz
26:デフォルトの名無しさん
09/01/02 20:41:17
>>23
irb(main):001:0> require 'ipaddr'
=> true
irb(main):002:0> IPAddr.new("192.168.1.1")
=> #<IPAddr: IPv4:192.168.1.1/255.255.255.255>
irb(main):003:0> ip1 = IPAddr.new("192.168.1.1")
=> #<IPAddr: IPv4:192.168.1.1/255.255.255.255>
irb(main):004:0> ip1.to_i
=> 3232235777
↑これです
この例なら、3232235777から192.168.1.1を得たいのです
自力で計算してもいいですが、既にあるならそれを使いたいなと
27:デフォルトの名無しさん
09/01/02 20:45:49
最後に .join('.') しないとな。
28:デフォルトの名無しさん
09/01/02 21:38:08
IPAddr.new(3232235777)
29:デフォルトの名無しさん
09/01/02 21:40:06
IPAddr.new_ntoh(3232235777)
30:デフォルトの名無しさん
09/01/02 21:57:59
new_ntohの引数はネットワークバイトオーダーのバイト配列とのこと
$ truby -ripaddr -ve 'puts IPAddr.new_ntoh(3232235777)'
ruby 1.9.1 (2009-01-02 patchlevel-5000 trunk 21272) [i386-darwin9.6.0]
/usr/local/lib/truby/1.9.1/ipaddr.rb:104:in `ntop': undefined method `unpack' for 3232235777:Bignum (NoMethodError)
from /usr/local/lib/truby/1.9.1/ipaddr.rb:96:in `new_ntoh'
from -e:1:in `<main>'
$ truby -ripaddr -ve 'puts IPAddr.new_ntoh([3232235777].pack("N"))'
ruby 1.9.1 (2009-01-02 patchlevel-5000 trunk 21272) [i386-darwin9.6.0]
192.168.1.1
# trubyはウチのtrunk rubyの名前
31:デフォルトの名無しさん
09/01/02 22:15:57
>>23-30
packを見落としていました
ありがとうございました
32:デフォルトの名無しさん
09/01/03 09:10:06
[3232235777].pack("N")
[192*2**24 + 168*2**16 + 0*2**8 + 1].pack('N').unpack('CCCC')
>自力で計算してもいいですが、既にあるならそれを使いたいなと
もう自力で出来てるね
33:デフォルトの名無しさん
09/01/03 23:13:09
Emacs使っていると、ruby のファイルを書いて保存すると
# -*- coding: utf-8 -*-
というのが勝手に先頭につくようになったのですが、やめさせることはできますか。
34:デフォルトの名無しさん
09/01/03 23:16:47
できますよ
35:デフォルトの名無しさん
09/01/03 23:19:43
1.9以降では実質的に必須になるから慣れておいた方がいいとは思うけど。
36:デフォルトの名無しさん
09/01/04 01:41:14
結婚式2週間前、IPA勤務の新郎がつこうた
スレリンク(news板)
仁義なきキンタマ ウイルス情報 Part80
スレリンク(download板:546番)
546 :[名無し]さん(bin+cue).rar :sage :2009/01/04(日) 00:24:59 >>500
報告する時は、詳しく的確に、一部だけ報告しないでお願いね
[殺人] Administrator(20081230-101522)のキンタマ.zip 2,263,376,860 09ed98f10653c3fc2555621ceeed6bc33e8f6228
[殺人] Administrator(20081230-101522)のメール.zip 59,426,579 4da9459b30eec31f58b86530dbb48d1cf86ef4be
[写真集][IV] Administrator(20081230-101522)のアルバム.zip 2,205,946,474 9d87cc0e08dc0e3afd959fcead6c48d569787cee
膨大な量のファイル数キンタマ ファイル数 13508 フォルダ数2381
以前勤めてた会社の資料など多数 独立行政法人情報処理推進機構などの資料など無いと思うが
有るかも知れない、あまりにも数が有り過ぎる、メールなどは、古いものばかりメルマガなど膨大な量
個人情報などは、披露宴主席者などの住所、名前、電話、メール 数十人分しかしエロばっかり落としてるな
ちなみに ハメ撮りscr 踏んだみたいね
早稲田実業学校中等部卒業
早稲田実業学校高等部卒業
早稲田大学政治経済学部政治学科卒業
卒論「知的財産権とインターネット技術」
当時の同大学理工学大学院の大川功 賞佳作を受賞
コンピュータ関連会社に入社ソフトウェア開発の仕事を経て
2005年に独立行政法人情報処理推進機構に入社
ソフトウェア・エンジニアリング・センター企画グループに配属
同グループ主任 岡田さん33歳
2009年1月19日結婚式・・・
37:デフォルトの名無しさん
09/01/04 02:10:22
>>34
なにこの役立たずなレス
38:デフォルトの名無しさん
09/01/04 10:24:44
>>37
なにこの役立たずなレス
39:デフォルトの名無しさん
09/01/04 17:38:56
>>38
なにこの役立たずなレス
40:デフォルトの名無しさん
09/01/04 19:23:59
100マス計算をするプログラムを書いてください。
プログラムがランダムに出題し、人間が100個の
マスに回答を入力し、確認ボタンを押すと
全問正解なら回答にかかった時間を表示して終了。
間違った場合は間違った場所にカーソルが止まり、
別の値が入力されるまで待ちます。
横10個、縦10個の数字は各々11〜99までの乱数、
演算は +,-,x のみでよいです。
よろしくおねがいします。
41:デフォルトの名無しさん
09/01/04 19:38:58
>>40
Rubyの宿題教えてください。2限目
スレリンク(tech板)
42:デフォルトの名無しさん
09/01/04 23:06:49
>>40 マルチだぞ。Pythonの宿題スレにも
43:デフォルトの名無しさん
09/01/05 01:23:13
Pythonスレはすぐ回答でたのに
Rubyのスレはだれも作れてないのがワロスwww
44:デフォルトの名無しさん
09/01/05 01:39:06
今年って平成何年だっけ?
45:デフォルトの名無しさん
09/01/05 01:48:50
煽っても何も出ませんよ
46:デフォルトの名無しさん
09/01/05 02:12:31
前スレで「データとパーサを分けるのは設計の常識みたいなもの」って
書いてあったけど、なんで分けたほうがいいの?
そのへん解説したサイトあったら教えてもらえないだろうか?
47:デフォルトの名無しさん
09/01/05 02:23:44
前スレ見てないけど混乱するからじゃないの?
スーパプログラマならごちゃ混ぜでも大丈夫だろうけど。
AWT弄ると割と楽しいな。
rubyにもjavaのAWTみたいなの欲しい。
48:デフォルトの名無しさん
09/01/05 02:44:48
>>46
パーザの差し替えが効かなくなるから。
だから個人用なら好きにしろって言われてたでしょ。
49:デフォルトの名無しさん
09/01/05 03:42:10
>>46
クラスと、クラスの生成を分離するのが
いわゆるFactoryパターン
こう問題を分割することで、コードの見通しが良くなり変更に強くなる
50:デフォルトの名無しさん
09/01/05 05:55:40
I used "-d" option to run ruby.
However, following errors are occured.
What is the menning?
Exception `LoadError' at c:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:871 - no such file to load -- rubygems/defaults/operating_system
Exception `NoMethodError' at c:/ruby/lib/ruby/1.8/rational.rb:78 - undefined method `gcd' for Rational(1, 2):Rational
debug_mode
51:デフォルトの名無しさん
09/01/05 05:56:59
>>50
ups, sorry...
note: last "debug_mode" string are output my code
52:デフォルトの名無しさん
09/01/05 05:57:31
> note: last "debug_mode" string are output my code
note: last "debug_mode" string are output from my code
53:デフォルトの名無しさん
09/01/05 06:48:21
Rubyで、文字列として記述するさい、
\をエスケープしないで記述する方法はありますでしょうか?
C#の @"c:\windows" みたいな機能です。
54:デフォルトの名無しさん
09/01/05 07:27:33
>>50
> Exception `LoadError' at c:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:871
> - no such file to load -- rubygems/defaults/operating_system
It fails to execute "require 'rubygems/defaults/operating_system'"
> Exception `NoMethodError' at c:/ruby/lib/ruby/1.8/rational.rb:78
> - undefined method `gcd' for Rational(1, 2):Rational
You might execute a code like Rational(1, 2).gcd,
but the Rational class does not have a method named gcd.
55:デフォルトの名無しさん
09/01/05 07:50:12
>>53
'c:\windows'
56:デフォルトの名無しさん
09/01/05 08:52:35
>>55
レスありがとうございます。
シングルクォートだとそのままいけるんですね。助かりました。
57:デフォルトの名無しさん
09/01/05 09:06:48
>>54
> It fails to execute "require 'rubygems/defaults/operating_system'"
Humm....
Ignoring this exception is no problem?
> > Exception `NoMethodError' at c:/ruby/lib/ruby/1.8/rational.rb:78
> > - undefined method `gcd' for Rational(1, 2):Rational
> You might execute a code like Rational(1, 2).gcd,
> but the Rational class does not have a method named gcd.
I found "Rational::gcd" in rational.rb ...
But, the error has occurred. This is why?
sample code is here.
----cut here----
#!ruby -Ku
puts "hello"
----cut here----
Run command "ruby -d foobar.rb" to confirm.
58:デフォルトの名無しさん
09/01/05 10:38:35
require 'rubygems'って重い重い言われてるけどそんなに
重くないんだな
linuxのruby1.9でnokogiriでリンクを抽出して表示するだけのコードなら
require 'rubygems'するのと直接nokogiriをrequireするのとで差が無かったーよ
active rubyとかだと違うのかなぁ
59:デフォルトの名無しさん
09/01/05 11:07:42
>>58
Ruby1.8でも比較してみるんだ!
60:デフォルトの名無しさん
09/01/05 11:20:15
オブジェクトを外部ファイルに格納して呼び出して使うにはどうしたら良いんでしょうか。
ちなみにオブジェクトの中身は単なるファイルのパスです。
例えば、外部ファイル path.rb の中身を、
file = 'D:/hoge.txt'
とします。それを別の Rubyファイル open.rb で、
open(file)
と書いて開きたいのです。
61:デフォルトの名無しさん
09/01/05 11:28:57
>>56
一切のエスケープをしない文字列リテラルが欲しい!
シングルクォート文字列だと
クォート文字をエスケープすることでクォート文字自体を含ませられる
よって\自身やクォート文字直前の \ はエスケープしなければならない
したがって \\ と書きたい場合は \\\もしくは\\\\にしなければならず
\\PC1\share\doc\text1.txt みたいなUNCパスや
c:\doc\ みたいに、最後に\が付いたディレクトリ名とかで注意が必要
'\\\PC1\share\doc\text1.txt' # => \\PC1\share\doc\text1.txt
'c:\doc\\' # => c:\doc\
実際のことろは、ruby内で完結するならば パスの区切りは / にしとけば問題ないのだけれども
dirname = <<'EOS'.chomp
\\PC1\share\doc\
EOS
シングルクォートのヒアドキュメントだと、まったくエスケープされないが
どうしても末尾に改行がつくし、ワンライナー出来ない
まったくエスケープしない代わりにクォート文字が含められなくてもかまわない文字列リテラル希望
%b!もじれつ! みたいのだとクォート文字を変えられるのでクォート自体は記述できなくてもいいんだけど
62:デフォルトの名無しさん
09/01/05 12:15:45
なんという国際的なスレッド。。あっぱれ!
63:デフォルトの名無しさん
09/01/05 14:13:45
>>61
ワンライナーするだけなら%s記法でto_sするとか?
個人的には改行無視のバックスラッシュって使ったことないから
%qをバックスラッシュ記法無効にするぐらいでもかまわないけど
ハマる人はいるんだろうぁ。
64:デフォルトの名無しさん
09/01/05 15:03:49
C# の s = @"hogemage"; みたいなの?
65:デフォルトの名無しさん
09/01/05 15:09:25
cygwinにruby・rubygems・rails(1.2.6)・sqlite3-rubyを入れています。
データベースにアクセス(例えばrake db:migrate)すると、↓のようなWarningが表示されます。
/home/***/depot/config/boot.rb:20:Warning: Gem::SourceIndex#search support for String patterns is deprecated
Warningが出る原因、対処法などあればご教授下さい。
66:デフォルトの名無しさん
09/01/05 15:24:16
2年前ぐらいのlinux環境で動いてたrubyのスクリプトを動かしたい
最新のrubyでは動かなかった
2年前だとバージョンいくつぐらいだといいのかな
67:デフォルトの名無しさん
09/01/05 15:27:57
>>60
何がしたいのか良く分からんが文面通りに解釈すると
---open.rb---
require 'path.rb'
open(file)
68:デフォルトの名無しさん
09/01/05 15:32:00
>61
hoge=%(\\PC1\share\doc\text1.txt)
fuga=%(c:\doc\)
69:デフォルトの名無しさん
09/01/05 15:33:06
>>66
1.6
70:デフォルトの名無しさん
09/01/05 15:43:15
>>68
>ruby -ve "puts %(\\PC1\share\doc\text1.txt)"
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]
\PC1 haredoc ext1.txt
1.9の話?
71:デフォルトの名無しさん
09/01/05 15:58:35
>>67
できました。ありがとうございます。
72:デフォルトの名無しさん
09/01/05 16:07:45
>>65
cygwinでrailsなんて無理だからやめとけ。
73:デフォルトの名無しさん
09/01/05 20:09:17
>>67
それだとうまくいかないんじゃない?
path.rb には file = 'D:/hoge.txt' と書かれてあるから、変数fileはローカル変数だよね?
require 'path.rb' しても、ローカル変数は path.rb の中だけで有効で、open.rb からは参照できないと思う。
解決策としては、fileじゃなくて$fileにするとか?
>>71
なんでこれでうまくいくの?
74:デフォルトの名無しさん
09/01/05 20:13:16
>>73
URLリンク(www.ruby-lang.org)
>トップレベルのローカル変数はプログラムの終了まで
75:デフォルトの名無しさん
09/01/05 21:50:33
>>74
げげ、しらんかった。さんくす。
76:デフォルトの名無しさん
09/01/05 21:51:20
>>57
Humm... It's kinda odd.
It may be that the instalation of Ruby was failed??
77:デフォルトの名無しさん
09/01/05 21:55:39
トップレベルのローカル変数はファイル内に閉じてるよ
78:デフォルトの名無しさん
09/01/05 22:09:21
なんという国際的なスレッド。。あっぱれ!!
79:デフォルトの名無しさん
09/01/05 22:12:31
Railsで
"fooBarBaz"
を
"foo_bar_baz"
に変換するメソッドって何ですか。
あと後学のために知りたいんですけど、こういう場合って何をキーワードにしてぐぐればいいでしょうか。
80:デフォルトの名無しさん
09/01/05 22:27:51
>>79
"キャメルケース アンダースコア rails"
でググったら、それらしいのが一番上にでてきたYO!
Rails 使ってないんで、よく分からんが。
URLリンク(recorder.komasui.org)
81:デフォルトの名無しさん
09/01/05 22:39:03
>>63
書きたいのは、連続したバックスラッシュと 末尾のバックスラッシュだから
それでもだめなんですよ
>>64
そんな感じのが欲しい
C#の @"hogehoge" だと
唯一 "" が "になるっていうエスケープのみが効くようで
バックスラッシュは全部そのままになる
Windowsのパスや正規表現を書くには必要だったのでしょうね
C#環境をインストールしてないので、マニュアル見ただけだけですが
Pythonの raw文字列とか三連クォートのraw文字列はかなり理想的なのかも?
と思って調べたら
末尾にバックスラッシュが書けなかった
Win版Inkscapeに付いてた2.5.1なんですけど
r"""ほげほげ\""" はNGで文字列が閉じない
かといって
r"""ほげほげ\"""" # => ほげほげ\"
マニュアル見たら
raw 文字列を奇数個連なったバックスラッシュで終わらせることはできません
と書いてありました
82:デフォルトの名無しさん
09/01/05 22:41:55
C# だと @"foo\bar\dirname\" でもおkなのは良いよね
Matzパクってくれないかしら
83:デフォルトの名無しさん
09/01/05 22:43:14
>>80
ありがとう!
84:デフォルトの名無しさん
09/01/05 22:47:21
>>79
調べ方の一例
$ irb -ractive_support
irb> String.ancestors
=> [String, ActiveSupport::CoreExtensions::String::Multibyte,
ActiveSupport::CoreExtensions::String::Behavior, ActiveSupport::CoreExtensions::String::Filters,
ActiveSupport::CoreExtensions::String::Conversions,
ActiveSupport::CoreExtensions::String::Access, ActiveSupport::CoreExtensions::String::Inflections,
Enumerable, Comparable, Object, ActiveSupport::Dependencies::Loadable, Base64::Deprecated,
Base64, Kernel]
このうち、目的のメソッドはInflections(語形変化)の中にある。
irb> ActiveSupport::CoreExtensions::String::Inflections.instance_methods
=> ["titleize", "constantize", "singularize", "classify", "demodulize", "underscore", "titlecase",
"foreign_key", "tableize", "humanize", "pluralize", "camelize", "camelcase", "parameterize",
"dasherize"]
irb> "fooBarBaz".underscore
=> "foo_bar_baz"
85:デフォルトの名無しさん
09/01/05 22:49:45
あ。
gemで入れたactive_supportが、-rubygemsがなくても動いているのは
~/.irbrcでrequireしてるからデス… 適当に自分の環境にあわせてね。
86:デフォルトの名無しさん
09/01/05 23:40:09
irb(main):005:0> puts %(\\samba\test\hoge"mage")
\samba esthoge"mage"
だめっぽいっすね・・・
87:デフォルトの名無しさん
09/01/05 23:43:55
Rubyだと ファイルパスは / でかくだろJK、というのもわかるんですが
ちょっとしたファイルパスのコピペでも/に置換が必要だったり、
win32のプログラムに渡すのにパスが / じゃ通らなケースが多々あったり
細かいところで不便なところがあるんですよね・・・。
88:デフォルトの名無しさん
09/01/05 23:45:21
>>57
Ok. I see.
I will re-install ruby programs.
Thanks all.
Best regards,
89:デフォルトの名無しさん
09/01/05 23:46:16
ups..
s/>>57/>>76/
90:デフォルトの名無しさん
09/01/05 23:53:39
>r"""ほげほげ\""" はNGで文字列が閉じない
>かといって
>r"""ほげほげ\"""" # => ほげほげ\"
r"""\"ほげほげ""" # => \"ほげほげ
r"""ほげ\\ほげ""" # => ほげ\ほげ
>C# だと @"foo\bar\dirname\" でもおkなのは良いよね
>Matzパクってくれないかしら
いちどVBのマニュアル見るといいよ
91:デフォルトの名無しさん
09/01/06 00:06:50
> いちどVBのマニュアル見るといいよ
なぜVBが出てくるのかさっぱりだが
とりあえずどの辺を読めばいいのかkwsk
92:デフォルトの名無しさん
09/01/06 00:37:24
何で最後に \ が来るような文字列が必要なの?
最後が \ の時はディレクトリ、みたいな判断でもしてるとか?
93:デフォルトの名無しさん
09/01/06 01:06:33
ライブラリ(Rubyで書かれたかどうかは問わない)が
そういう文字列を欲しがることは結構ある。
94:デフォルトの名無しさん
09/01/06 01:15:43
てかなんでwindowsのパス区切りは\なんだ?
\\にしたりしなかったり一体どれだけの混乱を強いていると思ってるんだ
95:デフォルトの名無しさん
09/01/06 01:22:45
+がエンコードできないですけど、どうやればいいでしょうか。
p URI.escape("+")
結果
"+"
ってなっちゃうですけど。
96:デフォルトの名無しさん
09/01/06 01:50:29
>>95
+ って空白文字を表すんじゃないの?
97:96
09/01/06 01:54:14
ごめんうそ。
98:デフォルトの名無しさん
09/01/06 01:54:26
99:デフォルトの名無しさん
09/01/06 02:10:52
>>95
URI.escapeはURIの中に出てきたらおかしいものだけをエスケープする。
+はURIの中に入っていても全く問題ないのでエスケープされない。
+をエンコードしたいなら、CGI.escapeを使えばおk。
100:デフォルトの名無しさん
09/01/06 02:19:22
_
/,.ァ、\
( ノo o ) ) R
)ヽ ◎/(. F
(/.(・)(・)\ . C
(/| x |\) 嫁
//\\
. (/ \)
101:デフォルトの名無しさん
09/01/06 02:21:07
>>99
御解答ありがとうございます。
うまくできました。
102:デフォルトの名無しさん
09/01/06 02:25:01
かなり初歩なんですけど、配列、ハッシュ、構造体をどのように使い分ければいいでしょうか?
Rubyに限ったことではないですけども・・・・。
103:デフォルトの名無しさん
09/01/06 02:25:49
>>94
MS-DOSはCじゃなくてBasicで書かれていたから
バックスラッシュでエスケープの問題は無かった
104:デフォルトの名無しさん
09/01/06 02:29:29
>>102
用途によって使い分ける
想像付かなければとりあえずアルゴリズム辞典とかでも読んでください
105:デフォルトの名無しさん
09/01/06 02:44:20
>>102
URLリンク(www.codelogy.org)
簡単な奴なら配列やハッシュテーブルを構造体代わり使えばいいけど、
他人に渡したり、再度使おうとするときには構造体を使った方がいいんじゃないかな?
struct使うまでのプログラムかいたことねーけど
106:デフォルトの名無しさん
09/01/06 06:06:35
>>87
pathnameのWindows正式対応版が出てくれれば一番良いんだけどなー
pathname2は他の外部ライブラリに依存してたりするし
>>102
基本的には「臨機応変に」としか言えない
俺の場合、ハッシュはどうしても必要な時以外には使わないようにしている
間違ったキーを使っても、エラーが出なくて困ることがあるし
107:デフォルトの名無しさん
09/01/06 10:05:36
>>94
パス区切りが\でコマンドオプションが/なのは、VMS由来。
108:デフォルトの名無しさん
09/01/06 10:34:33
>>107
まじで?
CP/M由来だと思ってたんだが
109:デフォルトの名無しさん
09/01/06 11:34:19
>>107
VMSはディレクトリを[]でくくり、区切りは '.'
相対パス [.foo.bar.baz]filename.ext
絶対パス [foo.bar.baz]filename.ext
110:デフォルトの名無しさん
09/01/06 11:38:59
CP/M にはディレクトリないだろ
111:デフォルトの名無しさん
09/01/06 12:16:41
CP/M++
DQN
112:デフォルトの名無しさん
09/01/06 12:29:20
>>109
command.comがこれをお手本にしてるから。
URLリンク(h50146.www5.hp.com)
113:デフォルトの名無しさん
09/01/06 13:05:14
DOS は CP/M を元にして作った(参考にした?)
CP/M はコマンドオプション指定に"/"を使ったので DOS もそうなった
んで、ディレクトリを実装する時に"/"を使えないので"﹨"を使った
というのが、普通に聞く説だと思うが
114:デフォルトの名無しさん
09/01/06 14:17:20
しかし「MS-DOSはCじゃなくてBasicで書かれていたから」には吹いた。
ちなみに最初はフルアセンブラです。
115:デフォルトの名無しさん
09/01/06 14:29:45
イメージで言いたいことはわからんでもないがぬ
116:デフォルトの名無しさん
09/01/06 17:37:08
0終端じゃなくて$終端だったような
117:デフォルトの名無しさん
09/01/06 17:57:59
>>116
それはファンクションコール9番の特殊仕様。
たしかキルドールが「その仕様の理由をゲイツに訊いてみな、答えられないから」と
言ってるという話を読んだ記憶がある。ソース忘れた。
118:デフォルトの名無しさん
09/01/06 18:14:47
>>117
俺もその話聞いたことがある。
同じくソース忘れたけど。
119:デフォルトの名無しさん
09/01/06 21:19:49
スレ眺めてたら自分の質問が初歩的過ぎて申し訳ないんですが、質問です。
[23,6,58,345]みたいな配列をコピペしてgetsなどで入力させるとき、
"[23,6,58,345]"となってしまって、これ自体が1つのオブジェクトとして認知されてしまうのですが、
23,6,58,345のように4つのオブジェクトとして一度に認識させる方法はあるのですか?
120:デフォルトの名無しさん
09/01/06 21:23:04
eval
でも他所様からの入力はevalしたら死ねるので注意
121:デフォルトの名無しさん
09/01/06 21:24:23
ありがとうございます
早速ためして見ます
122:デフォルトの名無しさん
09/01/06 22:06:48
>>120
おかげで完成しました。
ありがとうございます!
123:デフォルトの名無しさん
09/01/06 22:58:42
>>120
他所様の入力をevalの前に正規表現で
(\[[\d\,]+\])
とかしてからevalしても死ぬ?
124:デフォルトの名無しさん
09/01/06 23:02:02
>>123
入力がその正規表現に限定できるならそれでもいいんじゃない?
125:デフォルトの名無しさん
09/01/06 23:02:24
>>123
安全と確信できるパターンなら大丈夫いいのだが、
そのパターンだと [,,,,,,,] みたいなのを受け入れてしまわんか?
あと、$SAFEおよびtaint/untaintについても調べておくとよい。
126:デフォルトの名無しさん
09/01/06 23:05:03
>>123
数値だけなら自分でscanとかsplitととかした方が安心な気がする
127:デフォルトの名無しさん
09/01/06 23:40:58
inspect な記述を数値か文字列のどちらかの配列かハッシュに変換するライブラリとか作ったら
それなりに人気が出ると思う
128:デフォルトの名無しさん
09/01/06 23:45:14
>>127
こういうことじゃなくて?
eval({5 => 8.5, :a => 'b'}.inspect)
129:デフォルトの名無しさん
09/01/06 23:48:03
今回の記法に限れば
YAML.load('[1, 2, 3]')
=> [1, 2, 3]
とかもありかな。
130:デフォルトの名無しさん
09/01/06 23:50:36
JSONやYAMLとしてパースしてもいいんじゃない?
131:デフォルトの名無しさん
09/01/07 00:03:16
"[-1,0,1,2,3]".scan(/-?\d+/).map(&:to_i)
こんな感じでいいんじゃなかろうか
132:デフォルトの名無しさん
09/01/07 01:43:30
インスタンス変数の値を、GDBMを使ってDBへ書き込みがしたくて
こんな風に記述した。
GDBM.open(dbfile, 0644, GDBM::NEWDB){|db|
line = @number, "," ,@name, "," ,@age, "," ,@address, "," ,@tel, "," ,@grade, "," ,@department, "\n"
db[@number] = line
}
db[@number] = lineの部分で
in `[]=': can't convert Array into String (TypeError)
とエラーが出力される。
授業ではインスタンス変数の値ではなく、
CSVファイルから読み込み→DBファイルへ登録としてて、
カンマ区切りのデータならそのままDBへ書き込めるのかと解釈
したんだがそこから間違ってるのか…orz
長文スマソ
133:デフォルトの名無しさん
09/01/07 01:44:45
>>132
sage忘れた…ゴメンorz
134:デフォルトの名無しさん
09/01/07 01:48:28
いや、質問者はむしろageろ
135:デフォルトの名無しさん
09/01/07 01:58:50
>>132
>line = @number, "," ,@name, "," ,@age, "," ,@address, "," ,@tel, "," ,@grade, "," ,@department, "\n"
これは多重代入の怪しいルールでlineには配列が入るんだ
で,多分GDBMには文字列しか保存できないからこんなことになってる
だからインスタンス変数の値が全部文字列なら+でつなげるといいと思う
136:デフォルトの名無しさん
09/01/07 02:11:51
>>135
試したら先ほどのエラーは消えました!
でも + でつなげるってことはカンマ区切りなしの文字列しか
DBへ書き込みできないってことになりますか?
137:デフォルトの名無しさん
09/01/07 02:14:36
line=@number + "," + @name + "," + (以下略
こうだよこう
138:デフォルトの名無しさん
09/01/07 02:17:09
>>137
素で勘違いしてましたorz
そして出来ました!
助かりました…ありがとうございました!
139:デフォルトの名無しさん
09/01/07 06:41:18
勉強用なら、一旦配列にして結合用文字でjoinするのがスクリプトとしてもわかりやすいんじゃね、と思うぞ
data = [@number, @name, @age, @address, @tel, @grade, @department]
GDBM.open(dbfile, 0644, GDBM::NEWDB){|db|
db[data[0]] = data.join(',')
}
この場合はDBから読むときには data = db[no].split(',') とかして取り出す
結合用文字はカンマを選んだが、インスタンス変数の中に存在しない文字なら @ でも # でも ^ でも何でもいい
140:デフォルトの名無しさん
09/01/07 13:54:35
'\0' がマジおすすめ
141:デフォルトの名無しさん
09/01/07 15:09:26
>>139,140
重ね重ねありがとう!
おかげで課題出来そう
142:デフォルトの名無しさん
09/01/07 18:37:38
>>132の者です
DB関連の問題は解決したんですが、
s1 = Student.new(引数)
s2 = Student.new(引数)
とインスタンスを生成した場合、Studentクラスのクラスメソッド内で
引数の値を判断してインスタンスを返す(s1とs2どちらのインスタンスなのか判断して返す)
という処理は出来ますか?
143:デフォルトの名無しさん
09/01/07 18:45:53
>>142
そのコードの目的も含めてもうちょっと詳しく
144:デフォルトの名無しさん
09/01/07 18:50:54
そのクラス名は正直どうよと思わなくもない
生徒のもつ個人情報という意味ならふつーに StudentData とかでいいじゃんね
>>142
回答は
「クラスメソッドは @@hoge 形式のクラス変数が読めるので
インスタンスメソッドの中(今回はinitializeの中)で先頭に@を2つつけたクラス変数に値を入れておけばOK」
だけど、たぶんクラスメソッドの使い方間違ってる
でも、間違ってるということが自覚できるのはずっと先なのでまずはどんどん変な構造のスクリプト作れ
145:デフォルトの名無しさん
09/01/07 18:53:04
>>143
課題で学生クラスを生成する課題があって、
・パラメータ7つ保持(これを引数にして渡してる、7つすべて文字列)
・学生クラスのインスタンス1つは、学生1人を表す
・クラスメソッドfindによって、文字列が一致する引数を持つ
学生インスタンスを取得できること
与えられた条件はこんな感じです
146:デフォルトの名無しさん
09/01/07 18:56:00
宿題スレ向けではあるね
Rubyの宿題教えてください。2限目
スレリンク(tech板)
このスレの連中は基本ヒマで、宿題スレも見てる人はいるから答はもらえるとは思うが
147:デフォルトの名無しさん
09/01/07 18:59:20
>>146
課題では他にも色々条件が与えられていて、
他の部分はほぼ実装できてるんだけど
向こうでは>>145みたいな部分的なこと聞いてもおkなんですか?
148:デフォルトの名無しさん
09/01/07 19:06:08
むしろこの初心者スレが、前提条件とか無関係な部分的なことを聞くスレだと思う
クラスメソッドというのは、クラスで定義されたメソッドとかそういう意味ではなくて、たとえば見かけで言うと
Student.find
で動作するタイプのメソッドということでいいのだよね?
s1.find
s2.find
find
で動くタイプのメソッドを指してるつもりの言葉ではないのだよね?
149:デフォルトの名無しさん
09/01/07 19:08:33
>>148
Student.findの方です
言葉足らずですみません…
150:デフォルトの名無しさん
09/01/07 19:12:31
インスタンスを引数にとるユーティリティなメソッドとしてクラスメソッドにまとめろという課題にも思えるけど、違うんだろうな
>>149
Student.find の引数には具体的にどんなものを指定するのが妥当で、
それによってメソッドの返り値としてどんなものが返ってくるべきだと思う?
151:デフォルトの名無しさん
09/01/07 19:14:23
class Student
@@list = {}
attr_reader :name
def initialize(name)
@name = name
@@list[name] = self
end
def Student.find(name)
@@list[name]
end
end
Student.new("foo")
puts Student.find("foo").name
こんな感じか。
152:デフォルトの名無しさん
09/01/07 19:18:07
>>151
initialize の引数はたぶん7つだと思うよ
っていうか、それだと個々のインスタンス生成する意味がねえ
153:デフォルトの名無しさん
09/01/07 19:20:39
>それだと個々のインスタンス生成する意味がねえ
でも課題の内容からすると、まさにその方法を想定してるんだよな、たぶん…
154:デフォルトの名無しさん
09/01/07 19:20:41
>>152
そこまで面倒見る気はないw
クラスが自分のインスタンスのサーチをするサンプルを示しただけ。
155:デフォルトの名無しさん
09/01/07 19:24:07
>>154
サンプルありがとうございます。
でも最終的に欲しい値は>>142でいう"s1"か"s2"なんですorz
156:デフォルトの名無しさん
09/01/07 19:31:20
>>155
( ゚Д゚)<えっ
インスタンスを入れた変数の名前を文字列として知ってどうするの?
まさかevalするわけじゃないよね。
>>151で
s1 = Student.new("foo")
としたあとに
p s1
p Student.find("foo")
このふたつが等しくなるんだけど、それでも変数名が必要?
(Class.newやStruct.newは代入した変数名に依存した処理をしてるけど
あれってスクリプトレベルでできたっけ?)
157:デフォルトの名無しさん
09/01/07 19:36:22
>>155
>>150に答えて
これがしっかりしてないと外部の人間はメソッドが作れないよ
課題の一部だっていうんだから、きっとfindメソッドを他のどこかで使うんじゃないかい?
158:デフォルトの名無しさん
09/01/07 19:39:55
s1 = Student.new(引数7つ)
s2 = Student.new(引数7つ)
s3 = (ry
Student.find("引数に対して検索文字列")
# ↑ここで検索文字列を引数に持つのがs1〜s3のどれか判定
s●.他の処理
としたかったんです…
最初からこう聞いてれば良かったですねorz
159:デフォルトの名無しさん
09/01/07 19:43:34
>>158
じゃあもうひとつ
その find メソッドを作ろうと決めたのはもしかしてあなた自身?
「Studentクラスのインスタンスの集団から該当するモノを抽出する」というのが本来必要な処理だったりしない?
そのために必要だと「あなたが思ったもの」が、「Student クラスにあるべきだと考えた find メソッド」だったりしない?
160:デフォルトの名無しさん
09/01/07 19:45:01
>>157
見落としてましたorz
返ってくるべき…ということは>>158に示したのが答えでは
ダメですよね?;
161:デフォルトの名無しさん
09/01/07 19:45:46
>>158
selfっていうのはnewされたオブジェクト本体で
そのあとに代入される変数の中身そのものだから
s = Student.find("引数に対して検索文字列")
s.他の処理
これでいい。変数名は知る必要がない。
s1をひっぱりだす検索をすれば、sの中身はs1と合致する。
162:デフォルトの名無しさん
09/01/07 19:47:09
>>159
findメソッドを作るというのは課題の条件です
163:デフォルトの名無しさん
09/01/07 19:57:42
>>162
こういうのは、ふつーに作ると、こういう処理になる
s1 = Student.new(arg1)
s2 = Student.new(arg2)
s3 = Student.new(arg3)
...
students = [s1, s2, s3, ...]
hit = students.find{|s| s.name = 'なまえ'}
と書きかけて、ちょっと思う
もしかして、データの検索って>>132みたいなDBで行う?
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5385日前に更新/246 KB
担当:undef