Ruby 初心者スレッド Part 44
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/06/12(日) 11:26:08.85前スレ Part 43 http://hibari.2ch.net/test/read.cgi/tech/1305973297/
★注意★ Ruby 1.9.2 は初心者には若干時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
文字エンコーディング等の外部基礎知識が必要な上、不完全対応の第三者ライブラリでの問題の切り分けが手間です。
迷う点の少ない1.8.7に習熟→おもむろに1.9.2の変更点のみ重点学習、とすればスムーズに移行できるでしょう。
関連スレや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デフォルトの名無しさん
2011/06/12(日) 11:32:39.08Q:
いちからRubyを始める初心者向けのRuby入門書は何がありますか?
A:
プログラム作成自体の初心者なら
・「たのしいRuby 第3版 Rubyではじめる気軽なプログラミング」
http://www.amazon.co.jp/gp/4797357401/
文法は理解済み(orリファレンスで乗り切る既言語習得者)の場合のRuby様式を知る必携2冊目
・「初めてのRuby」
http://www.amazon.co.jp/dp/4873113679/
以下は外れが少ないとされている本です。必ず立ち読みした上で自分の目的とレベルに応じて購入してください。
・「Rubyレシピブック 第3版 303の技」(初心者向け、1.9対応)
http://www.amazon.co.jp/dp/4797359986/
・「プログラミング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デフォルトの名無しさん
2011/06/12(日) 11:39:47.30・Ruby Home Page 【公式、お役立ち度が微妙】
http://www.ruby-lang.org/ja/
・旧Rubyリファレンスマニュアル
http://www.ruby-lang.org/ja/man/
・るりま(新マニュアル、未完成)
http://redmine.ruby-lang.org/projects/rurema/wiki 【配布元】
http://doc.okkez.net/ 【Web版】
・英語版マニュアル
http://www.ruby-doc.org/
・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デフォルトの名無しさん
2011/06/12(日) 11:41:48.63もはや1.8.x系はメンテナンスのみになります
0005デフォルトの名無しさん
2011/06/12(日) 11:50:38.27http://www.amazon.co.jp/dp/4797357401/
関連スレはめんどくさいので必要だと思う人がどうぞ
0006デフォルトの名無しさん
2011/06/12(日) 11:54:35.350007デフォルトの名無しさん
2011/06/12(日) 12:06:54.790008デフォルトの名無しさん
2011/06/12(日) 12:09:50.830009デフォルトの名無しさん
2011/06/12(日) 12:15:39.00>>3はなくてもそんな困んないだろうし。
0010デフォルトの名無しさん
2011/06/12(日) 12:19:45.36嫌儲でぐぐれ
0011デフォルトの名無しさん
2011/06/12(日) 12:38:36.65>嫌儲は、自身が所属するインターネットコミュニティ内の共同制作物を第三者が個人的利益のために無断借用をする行為に対して嫌悪感を持つことである。そのため、当該コミュニティに対する帰属意識が高いほど顕著に現れる傾向がある。
0012デフォルトの名無しさん
2011/06/12(日) 12:45:35.15嫌儲 けんちょ
人が儲ける行為を嫌うこと。
嫌儲とは特にインターネットにおいて、金儲けが絡む活動・宣伝を嫌うことを表した言葉である。
別に「自身が所属する〜」はそれが典型的なパターンってだけで必須の条件じゃないな。
0013デフォルトの名無しさん
2011/06/12(日) 12:49:05.17やっぱり>>3は要らんな
0014デフォルトの名無しさん
2011/06/12(日) 13:02:10.18嫌儲的にはいっそのことここが充実したらいいのか
0015デフォルトの名無しさん
2011/06/12(日) 14:11:58.14特にEmacsから使えるツールを探しています。
ただインデントするだけじゃなくて、
class Ruby ←こういう後ろの空白も削除されてほしいです。
def foo(bar)
@bar =bar←こういうイコールの左右の空白もそろえて欲しいです。
end
←こういう改行もなくして欲しい。
end
0016デフォルトの名無しさん
2011/06/12(日) 17:03:39.96Ruby Script Beautifier
http://www.arachnoid.com/ruby/rubyBeautifier.html
という整形ツールがあるらしい。
ってかせっかくテキスト処理に優れたRuby使ってんだから
自分でスクリプト書けばよくね?
0017デフォルトの名無しさん
2011/06/12(日) 17:04:52.60さくっとパースしてみてください
0018デフォルトの名無しさん
2011/06/12(日) 17:06:52.250019デフォルトの名無しさん
2011/06/12(日) 17:24:59.34str.gsub!(/(\s+)?(=の前にセットで付く可能性のある記号群)?(=)(\s+)?/){ " #{$2}#{$3} " }
こんなんで出来るんじゃないすかね。試してないけど。
文字列リテラルやコメントを排除したり、揃え方に条件つけるのはご自分でどうぞ。
0020デフォルトの名無しさん
2011/06/12(日) 17:33:37.76言語解析ライブラリは無いし、文字コード判定も外部任せダゾ。
0021デフォルトの名無しさん
2011/06/12(日) 17:35:59.950022デフォルトの名無しさん
2011/06/12(日) 17:47:28.16>>19
最後のをすっぽかしたら誰でも書けるけどそれじゃ何の役にも立たない
0023デフォルトの名無しさん
2011/06/12(日) 17:50:10.74IRBみたいなヒストリではなく
0024デフォルトの名無しさん
2011/06/12(日) 18:04:39.57形態素解析がしたいならMeCabでも茶筅でもJumanでもライブラリあるから使えばいいし。
>>20 は全く意味不明
0025デフォルトの名無しさん
2011/06/12(日) 18:16:48.33別に「簡単にできる」なんていった覚えはないから、
コメントやリテラルの退避まで書く義理はない。
「イコールの左右の空白を整えられる」処理を書いただけ。
揃え方の条件つけるのは条件が提示されていない以上ご自分で、
としか言えない。エスパーじゃないからな。
0026デフォルトの名無しさん
2011/06/12(日) 18:27:14.93文字列やコメントの退避をしてくれるようだから、
これを改造すればお望みの整形ツールになるんじゃないかなあ。
0027デフォルトの名無しさん
2011/06/12(日) 19:43:17.21問題はその後で付いてるレスの通り、
誰が従うのかってところだわな。
0028デフォルトの名無しさん
2011/06/13(月) 00:11:56.02書かない限りは問題が無いので
イテレート中の要素追加は自己責任で
ハッシュの場合は限定個のキーを追加するだけでも
領域拡張が発生してリハッシュでイテレート順が変化して
正常に列挙し続けることができない可能性があるからエラーにする
などと考えたけど、1.9では順番も保持してるので
がんばって実装したら配列と同程度には安全になりそうな気がするが
なにがまずいのだろう?
まさか実装が面倒だからだったりじゃないだろうな
ひょっとして他の処理系で実装しにくいからとか?
「binding_of_callerはJRubyで実装しにくいから不採用」だったような気が
0029デフォルトの名無しさん
2011/06/13(月) 00:14:37.090030デフォルトの名無しさん
2011/06/13(月) 00:17:41.860031デフォルトの名無しさん
2011/06/13(月) 00:31:12.92CSVは本当はエスケープまわりが小難しいんだということが周知されないと問題はよくならねえ
ライブラリを通じての読み書き以外は今後数年間禁止で
XMLを手作業でゼロから書く人がいないのと同レベルで、CSVを手作業で読み書きしてはならない
0032デフォルトの名無しさん
2011/06/13(月) 02:09:00.560033デフォルトの名無しさん
2011/06/13(月) 02:36:14.080034デフォルトの名無しさん
2011/06/13(月) 04:09:25.93Readline.completion_proc=
0035デフォルトの名無しさん
2011/06/13(月) 14:08:20.80指定した時刻まで待機する処理を行いたいのですが
PHPでいうとhttp://php.net/manual/ja/function.time-sleep-until.phpのようなことをRubyでできませんか?
0036デフォルトの名無しさん
2011/06/13(月) 14:14:42.380037デフォルトの名無しさん
2011/06/13(月) 14:21:27.430038デフォルトの名無しさん
2011/06/13(月) 14:34:41.40以前の1.8系列のWindows用はやばかったけど、
今手元で試したら1.8.7も1.9.2まともだったよ。
ミリ秒単位だとOSのAPI直接呼んでもどうしようもないしね。
0039デフォルトの名無しさん
2011/06/13(月) 14:35:43.56Rubyでタスクスケジューラに登録すればいい
マシンの時刻を司ってるOSがタイマー処理してくれるから、
Rubyスクリプト起動にかかる時間を考えなければ時刻的には理想的に動作するぞ
秒数を間違って欲しくないなら、>>36をやって10秒くらいごとに補正かけ続けないと安心できない
0040デフォルトの名無しさん
2011/06/13(月) 14:37:37.380041デフォルトの名無しさん
2011/06/13(月) 14:40:59.00loop do
break if Time.now > (Time.strftimeとかして指定した時刻)
sleep 0.1
end
0042デフォルトの名無しさん
2011/06/13(月) 14:47:44.631.指定時刻までOSに現在時刻聞きまくりつづけて指定時刻以降だったらbreak
2.現在時刻と指定時刻の差をとってその時間だけ眠らせといてよ、とOSに頼む
3.現在時刻と指定時刻の差をとって一定値S以上ならSだけスリープ、
差が一定値S以下ならその値だけスリープしてからbreak
みたいな方法しかない。
内臓されてる言語でも内部ではそういう感じの処理をしているだろうし。
0043デフォルトの名無しさん
2011/06/13(月) 15:15:25.90print "aaa\n"
print "bbb\n"
print "ccc\n"
print "\0"
# coding: Windows-31J
require "socket"
socket = TCPSocket.open("localhost", 80)
get = "GET / HTTP/1.1\r\n"
get += "Host: localhost\r\n"
get += "Connection: Close\r\n\r\n"
socket.puts get
while buf = socket.gets
puts buf
end
socket.close
上記は「ruby ソケット」でググってコードを書いてみて、サーバにソケット通信して文字列を表示するコードです。
これを\0が来るまでwhileでループをするように書き換えたいのですがご教示お願いいたします
0044デフォルトの名無しさん
2011/06/13(月) 15:18:41.56先生方のお知恵を拝借させてください
while buf = socket.gets
if "\0" == buf then
puts "null"
break;
end
puts buf
end
0045デフォルトの名無しさん
2011/06/13(月) 15:20:09.650046デフォルトの名無しさん
2011/06/13(月) 15:30:48.97一行の途中に"\0"があるケースは考えなくていいの?
while buf = socket.gets
if idx = buf.index "\0"
puts buf[0...idx]
break
else
puts buf
end
end
0047デフォルトの名無しさん
2011/06/13(月) 15:38:37.83最後に\0を出力(\0の後に改行も入れない)するので取得した値が\0であれば終了という形でやりたいです
0048uy ◆yyC0rYWEq2
2011/06/13(月) 16:17:03.25puts buf
end
while(buf = socket.gets)
break if buf == "\0"
puts buf
end
s="shshfsnana\0usjsjs"
s =~ /(.*)\0/
p $1
0049デフォルトの名無しさん
2011/06/13(月) 16:37:49.89一番目はsocket.getsがnilを返す可能性があるから
二番目のほうがいいだろね
0050デフォルトの名無しさん
2011/06/13(月) 16:47:26.39ありがとうございます
0051デフォルトの名無しさん
2011/06/13(月) 17:08:29.180052デフォルトの名無しさん
2011/06/13(月) 19:48:13.670053デフォルトの名無しさん
2011/06/13(月) 21:13:37.40ここの先生方は初心者時代の頃はやりましたか?
0054デフォルトの名無しさん
2011/06/13(月) 21:27:21.07アプリケーション層のプロトコルの話としては関係ないと思うよ。
0055デフォルトの名無しさん
2011/06/13(月) 21:49:02.46a = ["a","b","c","d","e",1,2,3,4,5]
b = a[rand(a.size)]
puts b
これはエラー出ません
(2)
b = ""
5.times{
b += a[rand(a.size)]
}
puts b
と書くとエラーになります
(3)
b = ""
5.times{
b += a[rand(a.size)].to_s
}
puts b
と書くとちゃんと表示されます
何故(1)ではエラーにならないのに(2)でto_sを書かなかったらエラーになるのでしょうか?
0056デフォルトの名無しさん
2011/06/13(月) 21:56:12.78Rubyは暗黙的な型変換イカんでしょ
0057デフォルトの名無しさん
2011/06/13(月) 21:56:48.72(1)では、bには文字列が代入されたり、整数が代入されたりする。
どちらが入っていても、putsが勝手にto_sするので問題は生じない。
(2)では、bには最初から文字列が入っている。
文字列と+で連結できるのは文字列そのもの(と、to_strが定義されているオブジェクト)だけで、
(2)でa[rand(a.size)]が数値になったときに
文字列 + 数値
の式が生じてエラーになる。
can't convert Fixnum into String
エラーメッセージもたまには読んであげて。
0058デフォルトの名無しさん
2011/06/13(月) 21:59:00.880059デフォルトの名無しさん
2011/06/13(月) 21:59:08.08「と書くと」じゃなくて「と書いた場合にrand(a.size)が5〜9になると」だろ
bは文字列なのにaには数値も入ってるんだからto_sがなきゃそりゃエラー出るわ
「数値」は「数字」じゃないってこととエラーメッセージが出たらとりあえず丸ごと検索窓に突っ込んでみることを覚えろ
0060デフォルトの名無しさん
2011/06/13(月) 22:00:03.64b = ""
b = b + 1
0061デフォルトの名無しさん
2011/06/13(月) 22:00:35.760062デフォルトの名無しさん
2011/06/13(月) 22:01:43.95(1) を実行してから (2) をやることを意図してる
っていうか、それもきんとエラー読もうよ
0063デフォルトの名無しさん
2011/06/13(月) 22:01:55.31a = ["a","b","c","d","e",1,2,3,4,5]
ぐらいは補ってやれよ
0064デフォルトの名無しさん
2011/06/13(月) 22:03:39.98厳密に話し始めると、to_strがあるからその辺は微妙じゃね?
言語として型付けが強いのは間違いないんだが、
暗黙の型変換っぽい挙動もライブラリ次第で認めてしまう
0065デフォルトの名無しさん
2011/06/13(月) 22:03:46.430066デフォルトの名無しさん
2011/06/13(月) 22:09:06.99RubyやPythonは前者、PerlやPHPは後者に属する
そういう決まりになってるってだけのことだよ
0067デフォルトの名無しさん
2011/06/13(月) 22:09:42.99まずは、もうちょっと問題の切り分けが出来るようになった方がいい
randのような不確定要素を先に排除することを考える
0068デフォルトの名無しさん
2011/06/13(月) 22:11:14.35awkみたいに文字列をゼロ扱いする言語もあるし……
もう言語によってやりたい放題
0069デフォルトの名無しさん
2011/06/13(月) 22:22:22.54できないじゃなくていけないというのはまあそれなりに正しいと思うよ。
to_strとかto_aryとか、よっぽどでないと使っちゃいけない。
0070デフォルトの名無しさん
2011/06/13(月) 22:31:22.34awkはよく知らないけど
「文字列も場合によっては0として扱われる」じゃない?
% echo 1 | awk '{print 1 + "hello"}'
1
% echo 1 | awk '{print 1 + "10"}'
11
0071uy ◆yyC0rYWEq2
2011/06/13(月) 22:35:36.01def to_str
self.to_s
end
def + s
self--s.to_i
end
end
a = ["a","b","c","d","e",1,2,3,4,5]
b = a.sample
puts b
b = ""
5.times{
b += a.sample
}
b = ""
5.times{
b += a.sample.to_s
}
puts b
0072デフォルトの名無しさん
2011/06/14(火) 11:31:02.13どなたかお助けください
require "rexml/document"
xml = open("./a.xml") {|f|
f.read
}
doc = REXML::Document.new(xml)
formatter = REXML::Formatters::Pretty.new(2)
formatter.write(doc, "./xml.txt")
0073デフォルトの名無しさん
2011/06/14(火) 11:38:54.53文字列なら File.open(path, 'wb'){|f| f.print(str)} で書き込めるというのはわかってるんだから、
ライブラリ独自の処理はとりあえず無視して、書き込みたい文字列を返してもらうようにすればいい
0074デフォルトの名無しさん
2011/06/14(火) 11:54:15.99・最終的にやりたいこと(もっとよい方法がある場合が多いので)
・エラーメッセージ(自力で訳さずなるべくそのままで)
・詳しい内容(「動きません」「うまくできません」では回答しようがない)
・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
0075デフォルトの名無しさん
2011/06/14(火) 12:03:32.85Windows XP sp3 Ruby1.9.2
require "rexml/document"
xml = open("./a.xml") {|f|
f.read
}
doc = REXML::Document.new(xml)
formatter = REXML::Formatters::Pretty.new(2)
a = ""
formatter.write(doc, a)
open("./b.xml", "w") {|f|
f.write a
}
こうやるとxmlを整形してファイルへは書き込み出来ますが
何故formatter.write(doc, "./xml.txt")でファイルに書き込めないのかがわかりません
0076デフォルトの名無しさん
2011/06/14(火) 12:10:58.24REXML::Formatters::Pretty#write(node, output)
はoutputにパスを渡されたらそのファイルを開いてそこに書き込むなんて動作はしない。
"./xml.txt"という文字列を生成してその末尾にテキストを書き込ませてそのまま捨ててるから
ファイルに書き込まれようはずもない。
s = ''
formatter.write(doc, s)
File.open('./xml.txt', 'w'){|f| f.write(s)}
とするか、
File.open('./xml.txt', 'w') do |f|
formatter.write(doc, f)
end
としないとだめ。
0077デフォルトの名無しさん
2011/06/14(火) 12:17:11.26"./xml.txt"はファイルとは関係ないただの文字列だから。
formatter.write(doc, "./xml.txt")
のどこでファイルを開いてるの?
formatter.writeは第二引数に「書き込み可能なオブジェクト」を受け取って、
そこに書き込んでいくだけ。
文字列を渡せばその文字列オブジェクトに書き込むだけだし、
書き込みモードのIOオブジェクトを受け取ればそこに出力する。
文字列を渡したときにパスとして妥当か判定して
パスの形式になってたらファイルを開いて書き込んで、
そうでなければ文字列に直接書き込むみたいなめんどくさい動作はしてくれないっす。
0078デフォルトの名無しさん
2011/06/14(火) 12:22:32.91formatter.write(doc, $stdout)
させておいて出力先はリダイレクトで、とする方が使いやすい気がしなくもない。
0079デフォルトの名無しさん
2011/06/14(火) 12:31:04.73>>75
write(node, output) の内部で output << to_string(node) をやってるからだよ
output は << 可能なオブジェクトでなければならない
まあ、若干不親切ではある
マニュアルには書いてあるけどね
> output::
> # An object implementing '<<(String)', to which the output will be written.
0080デフォルトの名無しさん
2011/06/14(火) 12:36:12.23formatter.write(doc, "./xml.txt")は
"./xml.txt<xml>\n <nantoka>\n <kantoka>txt</kantoka>\n </nantoka>\n</xml>"
みたいな文字列作って捨ててるだけってことですな。
0081デフォルトの名無しさん
2011/06/14(火) 12:40:11.05やっぱりループ内にリテラル書くより、
ループ前に変数か定数に代入しといて
ループ内では参照するだけにした方がいいの?
0082デフォルトの名無しさん
2011/06/14(火) 12:40:24.38っていうか、REXMLなんて無理してまで使わんでよろしい
ファイルサイズにもよるけど、パースにかかる時間で require 'nokogiri' のお釣りが来るぞ
0083デフォルトの名無しさん
2011/06/14(火) 12:43:47.96答はNOだ
ブロックの外の変数や定数を参照するのは、ブロック内のローカル変数を参照することよりもわずかにコストが高い
ループ内に直書きしたほうが、速度的にはちょっと速い
万単位のループでは、ちょっと効いてくる
あと、 #{埋め込み} のない完全リテラルな /正規表現/ は Ruby がコンパイル畤に記憶するから何も考えなくていい
0084デフォルトの名無しさん
2011/06/14(火) 12:50:34.37試してみたよ。
require 'benchmark'
S = 'String'
Benchmark.bm(10) do |x|
x.report('CONST:'){200000.times{s = S}}
x.report('LITER:'){200000.times{s = 'String'}}
end
user system total real
CONST: 0.031000 0.000000 0.031000 ( 0.031250)
LITER: 0.078000 0.000000 0.078000 ( 0.078125)
0085デフォルトの名無しさん
2011/06/14(火) 12:56:09.13そのテストは文字列生成のコストがかかっているから不正だ
# -*- coding: utf-8 -*-
require 'benchmark'
S = 12345
Benchmark.bm(10) do |x|
x.report('CONST:'){2000000.times{s = S}}
x.report('LITER:'){2000000.times{s = 12345}}
end
user system total real
CONST: 2.080000 0.010000 2.090000 ( 2.314962)
LITER: 1.630000 0.000000 1.630000 ( 1.813098)
0086デフォルトの名無しさん
2011/06/14(火) 12:58:48.01よく頑張ったもんだ
0087デフォルトの名無しさん
2011/06/14(火) 12:59:38.44ってわけで、文字列については処理内容によるんじゃないかしら。
ループ内でもともと捨てオブジェクトがあまり発生しないなら
オブジェクトが生成されまくり捨てられまくるコスト>ブロック外の定数参照のコスト
>>85
いやなんで整数なのよ。
>同じ内容の文字列や正規表現を使うときは
整数ならリテラル書いてもオブジェクト増えないからリテラルが速いの当たり前だわ。
0088デフォルトの名無しさん
2011/06/14(火) 13:00:44.74何でですか?
require "tk"
TkLabel.new {
text "Hello!!"
width 10
height 10
pack
}
Tk.mainloop
0089デフォルトの名無しさん
2011/06/14(火) 13:02:31.96>>1
質問には以下を書くこと。へたくそな質問は再提出を要求される。
・最終的にやりたいこと(もっとよい方法がある場合が多いので)
・エラーメッセージ(自力で訳さずなるべくそのままで)
・詳しい内容(「動きません」「うまくできません」では回答しようがない)
・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
0090デフォルトの名無しさん
2011/06/14(火) 13:03:31.770091デフォルトの名無しさん
2011/06/14(火) 13:04:16.15じゃあ正規表現リテラル(埋め込みなし)でもいいよ
>>83の言う通り、完全にリテラルな正規表現は1回しか生成されないから結果同じだけど…
っていうか、スコープとびだすときにかかる参照コストの話でもないのね
0092デフォルトの名無しさん
2011/06/14(火) 13:04:21.960093デフォルトの名無しさん
2011/06/14(火) 13:05:14.52スクリプト実行時のエラーメッセージ
0094デフォルトの名無しさん
2011/06/14(火) 13:07:52.60<internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- tk (LoadError)
from <internal:lib/rubygems/custom_require>:29:in `require'
from C:/stadyruby/test.rb:1:in `<main>'
続行するには何かキーを押してください . . .
0095デフォルトの名無しさん
2011/06/14(火) 13:11:01.35>スコープとびだすときにかかる参照コストの話でもないのね
てか実際はそのへんとオブジェクト生成コストの差し引きの結果がどうなるかであって、つまりは>>87なんじゃね
0096デフォルトの名無しさん
2011/06/14(火) 13:12:36.86負けず嫌いだなあ。
文字列では先に代入しといた方が速いんだよ。
正規表現や整数は先に生成しとくって特別仕様なだけ。
浮動小数点数でも毎回生成されるからリテラルの方が遅いよ。
まあ、わかりにくいから、変数や定数に代入すべき理由が他にないときは
微妙に遅かろうがリテラル使う方がいいとは思うけど。
0097デフォルトの名無しさん
2011/06/14(火) 13:17:26.26ループ内ではFloatは1回しか生成されないらしい。
0098デフォルトの名無しさん
2011/06/14(火) 13:33:36.40・埋め込みアリの正規表現は埋め込むものが毎回同じならループ内にリテラルで書いてはいけない
・文字列の場合は先に代入すると微妙に速いが影響は大きくないので他の条件次第
・整数や埋め込みのない正規表現、小数なんかはベタでリテラル書いちゃえ
と最初からわかってるんでそこんとこよろすこ
0099デフォルトの名無しさん
2011/06/14(火) 13:35:50.84環境にTcltkが入ってないんじゃね
0100デフォルトの名無しさん
2011/06/14(火) 13:39:13.310101uy
2011/06/14(火) 13:47:07.690102デフォルトの名無しさん
2011/06/14(火) 13:57:05.49うああああああああありがとうございます
ウィンドウが出るようになりましたああああああああああああ
0103デフォルトの名無しさん
2011/06/14(火) 14:06:55.330104デフォルトの名無しさん
2011/06/14(火) 14:18:32.84…素直にコマンドラインの計算プログラム使ったほうが
IO.gets が返すものはただの文字列だ
その文字列をどう処理するかは何も決まってない
ルートを入力したいなら、入力された文字列がそのようであるときに、そのようになるようにすればいい
0105デフォルトの名無しさん
2011/06/14(火) 14:21:59.79Math.sqrt(3)
1.73205080756888
0106デフォルトの名無しさん
2011/06/14(火) 14:26:10.53計算記号のパースとかあんまりやりたくないわん
instance_eval していいなら、Ruby で使える文字列をそのまま入力すればいい
なんでもできてしまうのでセキュリティ的に大問題だが
0107デフォルトの名無しさん
2011/06/14(火) 14:33:20.29eval教えたらCGI入力に対して使ったアホの子がいてだな…
0108uy
2011/06/14(火) 16:03:34.49def repl s
s.sub!($1 , (repl $1).to_s) if s=~/\(.*?(\(.*)\)/
s =~ /\((.*?)\s(.*)\)/
case $1
when "+" , "-" , "*" , "/" , "**"
return $2.split.map do |n| n.to_f end.inject $1.to_sym
when "sqrt" , "p"
return $2.split.map do |n| n.to_f end.inject 0,$1.to_sym
end
end
p repl "(sqrt 2)"
p repl "(+ 2 2)"
p repl "(- 5 2 2)"
p repl "(* 4 4 4)"
p repl "(/ 10 2)"
p repl "(** 3 3 3)"
repl "(p (+ 4 8 9 (+ 8 3 (** 5 5 (sqrt 12)))))"
#p repl gets
0109デフォルトの名無しさん
2011/06/14(火) 16:51:34.11ホビロンすぎる
0110デフォルトの名無しさん
2011/06/14(火) 16:54:40.470111デフォルトの名無しさん
2011/06/14(火) 17:08:32.04言語解析ライブラリは充実してるけどね。
0112デフォルトの名無しさん
2011/06/14(火) 17:11:38.740113デフォルトの名無しさん
2011/06/14(火) 17:34:27.910114デフォルトの名無しさん
2011/06/14(火) 18:02:11.52mecabみたいなのは自然言語処理というのではないだろうか。
0115デフォルトの名無しさん
2011/06/14(火) 18:05:39.94raccやtreetopみたいなのは自然言語処理的には統語解析と言うが、普通は
構文解析と言うかねぇ。
結論としては >>111 は半可通。
0116デフォルトの名無しさん
2011/06/15(水) 13:33:41.23[\t]はタブを意味します
[\s]は半角スペースを意味します
-------------
a[LF]
[LF]
[\s][\s][\s][\s][\s][\s][\s][\s][\s][\s][\s][\s][\s][\s]
[[\s](100.200)
-------------
と
------------
a[\t][\s][\s][\s][\s](100,200)
------------
のどちらの場合でも100,200の部分を取得したいのですが
str.scan(/a.*?\(([0-9,]*?)\)/)では後者のほうしか取れません
改行とタブとスペースが混じっていても取得する方法をご教示お願いします
0117デフォルトの名無しさん
2011/06/15(水) 13:36:11.39マルチラインを設定したら取れました
0118デフォルトの名無しさん
2011/06/15(水) 22:07:26.390119デフォルトの名無しさん
2011/06/15(水) 22:10:19.360120デフォルトの名無しさん
2011/06/15(水) 22:12:52.400121デフォルトの名無しさん
2011/06/15(水) 22:15:03.070122デフォルトの名無しさん
2011/06/15(水) 22:15:15.34言い出しっぺかは知らない
0123デフォルトの名無しさん
2011/06/15(水) 22:15:54.480124デフォルトの名無しさん
2011/06/15(水) 22:17:56.940125デフォルトの名無しさん
2011/06/15(水) 22:57:10.750126デフォルトの名無しさん
2011/06/16(木) 11:16:52.66'*' は Repeat, '|' は Choice でいいと思いますが、'?' は何と名前を付けたらいいでしょうか。
0127デフォルトの名無しさん
2011/06/16(木) 11:18:38.89音声を聞く
0128デフォルトの名無しさん
2011/06/16(木) 11:38:29.96えっとそれは>>126への回答? なぜ「予言」?
0129デフォルトの名無しさん
2011/06/16(木) 11:41:30.280130デフォルトの名無しさん
2011/06/16(木) 11:43:59.480131デフォルトの名無しさん
2011/06/16(木) 11:45:58.89question
0132デフォルトの名無しさん
2011/06/16(木) 11:46:37.320133デフォルトの名無しさん
2011/06/16(木) 12:00:33.07>'*' は Repeat, '|' は Choice でいいと思いますが
よくない
* は CleeneStar
| は Alternatives
0134デフォルトの名無しさん
2011/06/16(木) 12:05:26.170135デフォルトの名無しさん
2011/06/16(木) 12:11:19.610136デフォルトの名無しさん
2011/06/16(木) 12:24:36.64ttp://www.chimaira.org/docs/Regularity.htm
にありました。
, concat
| choice
? option
* repeat
+ positiveRepeat
だそうです。optionか、なるほど。
ありがとです。
0137デフォルトの名無しさん
2011/06/16(木) 19:15:37.46そこでreadline.dllを見つけてインストールしましたが
今度はヒストリが効かなくなりました。
readline.dllがなくてもメッセージを出なくする方法か
readline.dllありでヒストリを有効化する方法を教えてください。
0138デフォルトの名無しさん
2011/06/16(木) 20:17:46.510139デフォルトの名無しさん
2011/06/16(木) 20:28:31.72ruby 1.9.2p136 (2010-12-25 revision 30365) [i386-mswin32]
0140デフォルトの名無しさん
2011/06/16(木) 21:09:57.910141デフォルトの名無しさん
2011/06/16(木) 22:42:19.050142uy ◆yyC0rYWEq2
2011/06/16(木) 22:53:16.02http://rubyinstaller.org/downloads/
mazusoresuskosiversionhuruisi
http://rubyinstaller.org/downloads/
sonnnakotoitterumaeniinsutoorusinaosebaiidaro
http://rubyinstaller.org/downloads/
hutuunitadamaisukurikkusiteikudakedaronandesoresuradekinainnndayoimigawakaranai
http://rubyinstaller.org/downloads/
gomitoiujigennwokoeteirukigasuruittaidouiukaitouwokitaisiteresuwositeiruno
http://rubyinstaller.org/downloads/
bokuharubynoinsutoorusaedekimasenndesuttekasonnnakotohoukokusinikonakutemoiikara
http://rubyinstaller.org/downloads/
mousenoclickwositeikudakeicanflay
0143デフォルトの名無しさん
2011/06/16(木) 22:57:51.230144デフォルトの名無しさん
2011/06/16(木) 23:22:20.72再インスコしろと
0145デフォルトの名無しさん
2011/06/17(金) 00:17:21.980146デフォルトの名無しさん
2011/06/17(金) 01:15:47.070147デフォルトの名無しさん
2011/06/17(金) 01:44:51.67いや、まあ、正確には、インストールする前かインストールしたあとに環境変数かなにかを弄ったのだろう
インストールのシーケンス自体は成功してるのだと思う
mswin32でreadlineに関する文句が出ることはな
ああ、えーと、その、なんだ、
ttp://www.garbagecollect.jp/ruby/mswin32/en/download/release.html
Ruby公式から辿れるここからzipファイルをダウンロードした場合は、あらゆるdllを自前で用意しなければならない
ActiveScriptRuby使え
ttp://www.artonx.org/data/asr/
このmsiには全部入ってる
前スレの前スレまでは公式サイトのリンクを使わせないようにテンプレでASRへの誘導があったんだけど、気違いのアホが消したんだ
0148けいたいうゆ
2011/06/17(金) 02:40:48.90あのすれたてしたuyは偽だから
別物だから
誤解なきよう
0149デフォルトの名無しさん
2011/06/17(金) 02:47:57.000150デフォルトの名無しさん
2011/06/17(金) 02:56:36.83心配しなくてもuyの時点で同類としか見てないから誤解しても問題ないよ
0151デフォルトの名無しさん
2011/06/17(金) 03:07:35.78リンク先の
> このパッケージではreadline.soの問題(漢字入力不可、カーソルキーが利用できない)を修正するパッチ([ruby-dev:42232])を当てています。
が原因かもしれません。(Ctrl-PやCtrl-Nではヒストリは使えてたので)
0152デフォルトの名無しさん
2011/06/17(金) 06:14:00.70単にルビィは馬鹿には無理だけなのかもしれないけど。
0153デフォルトの名無しさん
2011/06/17(金) 07:47:13.350154デフォルトの名無しさん
2011/06/17(金) 07:54:22.26手間隙かけてCygwin環境作るよりはVMでDebianをポンと入れて学習するのでもいいと思う。
0155デフォルトの名無しさん
2011/06/17(金) 08:02:59.50デビアンでもapt-getとか簡単なコマンドあるでしょ。
教祖がちゃんと動作確認しているもも大きいし。
0156デフォルトの名無しさん
2011/06/17(金) 08:06:38.55わざわざ新しくLinux入れなくても
Windows使いはWindows版、Linux使いはLinux版でいいと思う
0157デフォルトの名無しさん
2011/06/17(金) 08:11:26.42道具のために環境用意するのは本末転倒だわな
学校か何かでRubyの学習が強制されてるとかならともかく
0158デフォルトの名無しさん
2011/06/17(金) 08:16:44.85debianでもパッケージかRVMで入れるのが普通で
自力でソースからビルドなんてまずしないわけで
単に誘導の問題なんだろうな
0159デフォルトの名無しさん
2011/06/17(金) 08:56:09.390160デフォルトの名無しさん
2011/06/17(金) 09:02:58.330161デフォルトの名無しさん
2011/06/17(金) 09:22:21.430162デフォルトの名無しさん
2011/06/17(金) 09:33:05.990163デフォルトの名無しさん
2011/06/17(金) 10:23:21.89それを読んで意味がわかるならテストしてみたらどうだろう。
それを自力でテストできない人が読んで意味がわかるとは……。
0164デフォルトの名無しさん
2011/06/17(金) 11:04:47.220165デフォルトの名無しさん
2011/06/17(金) 11:14:43.650166デフォルトの名無しさん
2011/06/17(金) 11:17:03.83質問には以下を書くこと。へたくそな質問は再提出を要求される。
・最終的にやりたいこと(もっとよい方法がある場合が多いので)
・エラーメッセージ(自力で訳さずなるべくそのままで)
・詳しい内容(「動きません」「うまくできません」では回答しようがない)
・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
0167デフォルトの名無しさん
2011/06/17(金) 11:41:45.030168デフォルトの名無しさん
2011/06/17(金) 11:47:43.020169デフォルトの名無しさん
2011/06/17(金) 11:47:58.000170デフォルトの名無しさん
2011/06/17(金) 11:54:15.750171デフォルトの名無しさん
2011/06/17(金) 11:58:11.25・最終的にやりたいこと
0172デフォルトの名無しさん
2011/06/17(金) 12:25:52.01Rubyでの実現方法は別として、
何をテストすればよいか理解でき、何を聞けばよいかも理解できるはず。
それを出してこないということは、160自身が何を質問してよいのか分かっていないことを示唆する。
記事への感想ならともかく、
160自身もわかっていない問に答えることは誰にも出来ない。
0173デフォルトの名無しさん
2011/06/17(金) 12:41:06.13ということかなぁ。
irbの文字列リテラルに \x?? で試してみると特に例外にもならずUTF-8なStringができるから、
ない、というのが答えになるけど。
0174デフォルトの名無しさん
2011/06/17(金) 12:50:17.691.9系のエンコードがUTF-8なStringをバイト列をもとに生成するようなシーンで、
バイト列が不正でかつ記事にあるようなパターンのときにどうなるかきになるし、
irbを適当に叩いて検証するんだろうけど、
それが160の問いとイコールかどうかなんてわからないからなあ。
0175デフォルトの名無しさん
2011/06/17(金) 14:17:47.57一度UTF-16なんかに変換して不正な文字を置き換えるしかないかな。
"\xf0\x80\x80\xbc".encode("UTF-16LE",:invalid=>:replace,:replace=>'?').encode("UTF-8")
0176uy ◆yyC0rYWEq2
2011/06/17(金) 15:39:31.57p lambda {
fact = lambda { |n|
if n == 0
1
else
n * fact.call(n - 1)
end
}
}.call.call 4
p Class.new {
def self.lambda n
if n == 0
1
else
n * self.lambda(n - 1)
end
end
}.lambda 5
0177デフォルトの名無しさん
2011/06/17(金) 16:02:43.520178uy ◆yyC0rYWEq2
2011/06/17(金) 16:21:02.350179デフォルトの名無しさん
2011/06/17(金) 16:26:51.470180uy ◆yyC0rYWEq2
2011/06/17(金) 18:10:52.94def saik n
yield( n , lambda do | n , f |
yield n , f
end )
end
n = saik 5 do | n , f |
if n == 0
1
else
n * f.call( n - 1 , f)
end
end
p n
こういう方法もあった
0181uy ◆yyC0rYWEq2
2011/06/17(金) 19:19:22.96if iterator?
@aaa = lambda do |*h| yield *h end
end
@aaa.call *h
end
n=a 4 do | n |
if n == 0
1
else
n * a(n - 1)
end
end
p n
完成した、お疲れ様でした
0182デフォルトの名無しさん
2011/06/17(金) 23:41:45.15No such file or directory -- (ファイル名)(LoadError)と表示されるのはなぜでしょうか。
osはvista、バージョンは1.9.2です。
0183デフォルトの名無しさん
2011/06/17(金) 23:45:20.55質問には以下を書くこと。へたくそな質問は再提出を要求される。
・最終的にやりたいこと(もっとよい方法がある場合が多いので)
・エラーメッセージ(自力で訳さずなるべくそのままで)
・詳しい内容(「動きません」「うまくできません」では回答しようがない)
・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
0184デフォルトの名無しさん
2011/06/17(金) 23:46:31.49ライブラリのとこからじゃなくてカレントディレクトリから読もうとしてるなら
パスの頭に ./
0185デフォルトの名無しさん
2011/06/18(土) 00:34:22.16車輪の再発明お疲れ様。
0186デフォルトの名無しさん
2011/06/18(土) 00:47:59.860188デフォルトの名無しさん
2011/06/18(土) 01:48:43.61かなり頻出の質問でrequire_relativeでググるか>>184か解決法は他にもいろいろある
0189デフォルトの名無しさん
2011/06/18(土) 09:33:24.510190デフォルトの名無しさん
2011/06/18(土) 09:36:05.41メソッドにして名前をつける(えっ)
インスタンス変数に保存(定義してる文脈ではグローバル変数と同義)(えっ、えっ)
っていうので解決されてると思い込めるのがすごいね!
0191デフォルトの名無しさん
2011/06/18(土) 10:27:08.41「キモーイ」
「メソッド名が許されるのは小学生までだよねー」
fact = lambda{|n|
lambda{ |f|
lambda{|proc| f[lambda{|args| proc[proc][args] }]}[
lambda{|proc| f[lambda{|args| proc[proc][args] }]}
]}[lambda{|f| lambda{|x| x == 1 ? 1 : x * f[x-1]}}][n]}
p fact[5]
0192デフォルトの名無しさん
2011/06/18(土) 11:58:24.24やはりeclipseがおおいのでしょうか?
0193デフォルトの名無しさん
2011/06/18(土) 12:03:25.50テキストエディタでおk
0194デフォルトの名無しさん
2011/06/18(土) 12:14:09.250195デフォルトの名無しさん
2011/06/18(土) 12:31:38.71どうしてスクリプトでIDEを使ったら負けなんでしょうか?
0196デフォルトの名無しさん
2011/06/18(土) 12:49:40.870197デフォルトの名無しさん
2011/06/18(土) 12:55:39.650198uy
2011/06/18(土) 12:59:40.31僻みか
つうか処理系側で実装されるまで一時的に使うだけのものだぞ
多重再帰まで対応させる気はないし
>>191
それはもう2レス目ででてた
今更それをかかれてもな
一般人はlambdaの再帰なんて不要だもんな
はいはい
どうせ俺くらいだよ多用してんのは
0199デフォルトの名無しさん
2011/06/18(土) 13:00:39.640200デフォルトの名無しさん
2011/06/18(土) 13:04:33.81まともな結論は得られません。
0201デフォルトの名無しさん
2011/06/18(土) 13:05:47.450202デフォルトの名無しさん
2011/06/18(土) 13:09:14.05機能の差し引きでマイナスだと考えているひとのほうが多い
IDEを使えば自動的に便利になるというのは間違い
IDE側が意識的にサポートしているから便利になる
0203デフォルトの名無しさん
2011/06/18(土) 13:10:00.660204デフォルトの名無しさん
2011/06/18(土) 13:11:05.010205デフォルトの名無しさん
2011/06/18(土) 13:12:50.66>>203はきっと見えない人宛のものだ
0206192
2011/06/18(土) 13:13:24.05楽しいruby3を見ながら勉強しているのですが、IDEは特にいらないようですね。
秀丸などのテキストエディタ使って、コマンドプロプントで実行というスタイルにします。
0207デフォルトの名無しさん
2011/06/18(土) 13:25:39.730208uy
2011/06/18(土) 13:27:02.91明らかに僻みだよねwwどうしちゃったのww
え?、俺はそれを使っていくよ
使いやすい形にするために作ったんだからさ
Yナンチャラの理論を数時間で突破してみせてみただけの事で、
uy的にはこの程度、なんでもないんですけど
Ruby in Steelで良い
なんと.NETアプリケーションが不完全ながらも作成可能
インストールの難易度はレベル4くらい
0209デフォルトの名無しさん
2011/06/18(土) 13:51:50.70トップレベルのインスタンス変数やらメソッド名に束縛しちゃうのが使いやすい形ですかそうですかー。
0210デフォルトの名無しさん
2011/06/18(土) 13:55:06.120211uy
2011/06/18(土) 13:58:39.49まともなアプリケーションも作らずにごちゃごちゃ遊んでるだけで「俺はすごいぞ」とか言われてもー。
0212uy
2011/06/18(土) 14:04:18.95仮にそうでも汎用性のない劣化車輪の再発明だし、
なによりまともに使えるプログラムのひとつも書いてない奴にどう僻めばいいんだ。
0214uy
2011/06/18(土) 14:11:51.36一生車輪を劣化状態で再発明して「昔の人が長い時間をかけて作ったものを僕は数時間で突破したぞ!」って喜んでなよ。
0215uy ◆yyC0rYWEq2
2011/06/18(土) 14:17:55.59lambdaっていうのはオブジェクトの代わりになるんだよ
>>191 のこれは、 本来fっていう変数が定義されるべきものを、
変数ではなくlambdaオブジェクトにしただけで
実はそれ本当にただのスパゲッティソースなの
「lambdaがオブジェクトの代わりになる」っていう事を知らない子が作ったものじゃないかと思ってしまう
こういえばわかるかな、
ソース書いてる途中にちょっとlambdaの再帰がほしくなったときに、いちいち>>191これをかくというのか?
数学の世界の学術的には、そのlambdaで何でもできますよっていう証明にはなってるんだけど、
実際にプログラミングするときに、それを表面上にそれを持ってくるものではない
結局アセンブラレベルで見たら、lambdaだろうと、インスタンス変数だろうと同じだから、案外機械語では似たような事になってるかもよ
>>214
最近http://hibari.2ch.net/test/read.cgi/tech/1306333092/267
これ作りました、30分で。
0216uy ◆yyC0rYWEq2
2011/06/18(土) 15:34:29.66VisualuRuby
IronRuby
各種ゲームLib
rails
他に何があればキラーアプリになるんだ
一応、OSのGUI関連書く前にRubyでアルゴリズム成熟させてからCで書き直そうと思って
Rubyで見た目OSっぽいのは作っているからそれはそのうち公開してやるよ
それに俺はRuby信者なのではなく、現状最もマシなのがRubyだからこれ使ってるだけで
これより良い言語でてきたらすぐに裏切るよ
ぼくは英語読めなくても英語サイトから情報拾ってくる事は出来るけれど
日本語のほうが読みやすいのは当たり前だから応援はしている
0217デフォルトの名無しさん
2011/06/18(土) 17:37:49.19こんなんメカナイズ使ってりゃ誰でもすぐに書けるね。
もっとまともなプログラムないの?
0218デフォルトの名無しさん
2011/06/18(土) 17:45:47.980219デフォルトの名無しさん
2011/06/18(土) 17:51:44.200220デフォルトの名無しさん
2011/06/18(土) 18:03:20.960221デフォルトの名無しさん
2011/06/18(土) 18:15:18.660222デフォルトの名無しさん
2011/06/18(土) 18:50:10.060223デフォルトの名無しさん
2011/06/18(土) 18:57:27.270224デフォルトの名無しさん
2011/06/18(土) 20:31:21.620225デフォルトの名無しさん
2011/06/18(土) 20:33:31.000226デフォルトの名無しさん
2011/06/18(土) 20:38:06.450227デフォルトの名無しさん
2011/06/18(土) 20:42:03.47Windowsを除いては
0228デフォルトの名無しさん
2011/06/18(土) 21:08:20.280229uy ◆yyC0rYWEq2
2011/06/18(土) 21:12:24.17そうではなくメカナイズをしらないところからググって
メカナイズインストールして、仕様を調べて、それを全部含めた時間が30分。、で作りました
理由、理由はPerlスレに迷える子羊がいたからです
まず俺のソース読みたいならツリー構造と再帰とマクロに慣れてる事と、
クラスを使わずにlambdaのみでプログラム設計した事があるってのが最低条件
関数を返す関数を返す関数とかが普通に出てくるけど、よめんのそれ
クラスを使わないプログラム設計って言われて君は理解できるのk
読めないを理由に「たいしたものじゃない」とか勝手に決め付けられて終わるのが目に見えてるから晒しません^^
0230デフォルトの名無しさん
2011/06/18(土) 21:17:52.15関数を返す関数を返す関数とかが出てくるプログラムの設計書を書くとしたら
分かりやすくかけるもんなの?
それとも設計書じゃない何かでプログラムの概要などなどを説明するの?
0231uy
2011/06/18(土) 21:29:11.480232デフォルトの名無しさん
2011/06/19(日) 01:21:25.17とか言うなら>>180-181なんてお粗末なプログラムを書くのはやめましょう。
0233デフォルトの名無しさん
2011/06/19(日) 01:28:15.10ソースで複雑怪奇なことしててもプログラムの機能自体で評価されるじゃないか。
所詮ソースコードで「変わったことやってんなー」ってぐらいのお遊びコードしか書いたことなくて、
まともに開発なんかやったことないんだろ。
0234デフォルトの名無しさん
2011/06/19(日) 02:02:40.160235uy ◆yyC0rYWEq2
2011/06/19(日) 04:18:57.68>>230-n
どうでもいいな・・・
これを鬱というのか賢者モードというのか、どちらなのかはわからないけど、心が静かなんだ
土砂降りの雨に混じって、叫び声が聞こえる
梅雨の雨に、あの日の雨の名残を探しにいってくる
0236uy ◆yyC0rYWEq2
2011/06/19(日) 05:04:08.31俺が何を作ろうと、煽り続けるんだろう
相手してるとつかれるんよ
「OS製作前準備.rb」にかかれてるソースの断片すらどうせ読めない癖にな、何個の再帰がある事か
再帰で書きまくるソースコードを「一風変わったもの」というカテゴリに納める事しかできないから
いつまでたってもそこにいるんだよ
普通にかくよりも再帰にすることでソースコードが格段に縮まる事くらいの知識は、あるだろう 俺はそういう場所にいるレベル
もう、レベルは上がるところまで上がっているので、俺には何を言っても無駄
何かを作れって? は、? バカか
お前らに使われるアプリケーション作る為に身に着けた技術じゃねーよ死ねバカ
0237デフォルトの名無しさん
2011/06/19(日) 06:05:36.35あまり関係ない
なんらかのプロダクションコードを書いたことがあるかどうかは、言語問わず、普段のコードに反映される
ちょうど、社会人と学生の間に言動の差があるのに近い
Cでプロダクションの洗礼受けた人は、Rubyで書いてもPHPで書いてもHaskellで書いてもちょっと違う
0238デフォルトの名無しさん
2011/06/19(日) 07:59:49.56IDEの中で今主流っぽいのはたぶんNetBeans
使いやすさと「元々は公式にサポートされてた」という事情から、けっこうメジャー
Eclipseにも色々プラグインはあるらしいけどよく知らない
あとはRDEもIDEの1種として数えるなら、そこそこ人気(色々不安定だけど)
でもまぁ、IDEが必要かどうかは個人と環境によって違う
俺の場合だとテキストエディタとIDE併用してたりするし
コアなemacs使いなら「IDEなんていらない」って人も多いだろうし
>>202
> Rubyに関してはそもそもほとんど助けてくれないからな
入力補完だけでもかなり大きな助けになるんじゃね?
gemや自作クラスからの入力補完便利だよ
0239デフォルトの名無しさん
2011/06/19(日) 09:14:45.32ソースの名前出してるけど、結局コードが仕様書ってことなの?
rdocとかriで整備してるってこと?
で、他人が使うアプリじゃないってことは自分用アプリってこと?
まあそれなら設計書の類は要らないか
0240デフォルトの名無しさん
2011/06/19(日) 10:39:13.640241デフォルトの名無しさん
2011/06/19(日) 10:56:05.76irb> class Array; alias _brak []; def [](i); raise ArgumentError.new('Out of Range') if size < i+1; _brak(i); end; end
irb> [1,2,3][3]
ArgumentError: Out of Range
from (irb):2:in `[]'
from (irb):3
irb> [1,2,3][2]
=> 3
ただし、non_nil_array[x] が nil を返すことで x が配列サイズ範囲外であるという検知をしているライブラリがあればバグる
策としては下の下で、やった瞬間全世界から指さされるレベル
ユーザー側で配列の大きさを事前にチェックするのが普通
if arr.size < x + 1 then
raise "#{x} なんて大きすぎて入らないよぉ"
else
arr[x]
end
0242デフォルトの名無しさん
2011/06/19(日) 12:11:02.76fetch使えばええやん
0243デフォルトの名無しさん
2011/06/19(日) 17:59:35.240244デフォルトの名無しさん
2011/06/19(日) 18:07:40.45>>240ベースで
class Array; undef []; def [](x) fetch(x) end end
こんな感じ?
0245デフォルトの名無しさん
2011/06/19(日) 19:00:24.64Rubyをワンライナー的な用途にしか
使わない人達もまだ少し残ってるからね。
そういう人達の狭い視野から見たらIDEどころかエディタすらいらないんだろう。
0246デフォルトの名無しさん
2011/06/19(日) 19:13:30.76#[]を使わなきゃいいじゃん
0247デフォルトの名無しさん
2011/06/19(日) 21:25:52.150248デフォルトの名無しさん
2011/06/19(日) 21:32:56.02例外吐くのはそれなりに合理的だと思われ
>>243
1.9だか1.9.2なら
>> [1,2,3].fetch(10)
IndexError: index 10 outside of array bounds: -3...3
0249デフォルトの名無しさん
2011/06/19(日) 23:09:17.790250デフォルトの名無しさん
2011/06/20(月) 00:41:08.470251デフォルトの名無しさん
2011/06/20(月) 01:09:01.59実際問題としては、Array#[] で例外が出るとみんな困るので、運用が間違っとるとしか言えない
自前で事前に配列のサイズチェックしろとしか
っていうか、どうせ、例外が出たら処理変更するんだろ
まさか例外をトップレベルの外にエラーとしてぶん投げるわけじゃないよね?
まあ確かに
begin
process(arg)
rescue BadArgumentProcessError
fail_process
end
と
if check(arg) then
process(arg)
else
fail_process
end
は動作が違って、正常系がほとんどの場合は毎度の if check(arg) の処理のぶん動作が遅く…
ならないことが多いと思う、check の重さにもよるけど
たとえば、細かいファイルすべてに対して事前に File.exist? やると File.open の例外キャッチよりは遅い
0252デフォルトの名無しさん
2011/06/20(月) 01:10:57.10そういうものを設定できる、メソッドかライブラリはないでしょうか?
こんな感じ
n = 0
n.min_set = 0
n.max_set = 10
p n -= 5 # => 0
20.times do
n += 1
end
p n # => 10
0253デフォルトの名無しさん
2011/06/20(月) 01:22:05.51最終的に min か max つかえ
それと、Ruby の変数は箱じゃなくて、個々のオブジェクトに貼られたラベルに過ぎず、
さらに、若干悪いことに、数値は変更不可能なオブジェクトになってる
n = 2
としたあとに
n = n + 1
するというのは、 2 に 1 を足した結果のオブジェクトに n という変数名を新たにつけるという行為でしかない
0254デフォルトの名無しさん
2011/06/20(月) 01:40:12.40こんなのなら提案されている
http://redmine.ruby-lang.org/issues/4574
0255uy ◆yyC0rYWEq2
2011/06/20(月) 01:55:52.76class A
def initialize n , min , max
@n = n
@min = min
@max = max
end
def set s = @n
return @n = @max if s > @max
return @n = @min if s < @min
@n = s
end
end
n = A.new 0 , 2 , 7
p n.set 88
p n.set -6
0256デフォルトの名無しさん
2011/06/20(月) 02:16:10.56まず関数名setはねーだろ
んで足し算はどうすんだ?n.set(5+10) とかやんのか?@nいらんだろアホか
そらならユーティリティクラスにするかトップレベルに関数置けよ
0257uy ◆yyC0rYWEq2
2011/06/20(月) 02:30:16.08>>256
>@nいらんだろアホか
はあああぁっぁあああああぁぁぁぁあぁ?wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0258uy ◆yyC0rYWEq2
2011/06/20(月) 02:35:04.570259デフォルトの名無しさん
2011/06/20(月) 02:36:03.32#+などの定義を省略しただけなんだろうけど
class Utility
def self.clamp(min, n, max)
raise ArgumentError.new("homuhomu") if min>max
return min if n<=min
return max if n>=max
n
end
end
(1..10).each do |i|
puts "#{i}: #{Utility.clamp(3, i, 6)}"
end
0260uy ◆yyC0rYWEq2
2011/06/20(月) 02:49:15.450261uy ◆yyC0rYWEq2
2011/06/20(月) 03:07:13.37module A
def self.extended mod
f = self.test mod[:n] || 0 , mod[:max] , mod[:min]
mod.define_singleton_method :set do | *s |
f.call *s
end
end
def self.test n , max , min
lambda do | s = n |
return n = max if s > max
return n = min if s < min
n = s
end
end
end
a = ({ :n => 0 , :max => 7 , :min => 2 })
a.extend A
p a.set
p a.set 8
p a.set
p a.set 1
p a.set
妥協、
= での代入時に値ごまかすのはRubyだと無理かもな
0262252
2011/06/20(月) 03:37:37.98標準ではないのですね・・・
その場にifかいちゃったほうがわかりやすいかもしれませんね
0263uy ◆yyC0rYWEq2
2011/06/20(月) 05:59:25.82module A
def self.extended mod
f = self.test mod[:n] || 0 , mod[:max] , mod[:min]
mod.define_singleton_method :set do | *s |
f.func *s
end
mod.define_singleton_method :set_ do
f
end
end
def self.test n , max , min
hs = Hash.new
hs[:n] = n
hs[:max] = max
hs[:min] = min
a = OpenStruct.new hs
a.define_singleton_method :func do | s = a.n |
return a.n = a.max if s > a.max
return a.n = a.min if s < a.min
a.n = s
end
return a
end
end
a = ({ :n => 0 , :max => 7 , :min => 2 }).extend A
p a.set 99
a.set_.max = 12
p a.set 99
寝る前に投稿:ちなみに漏れのソースコード(ノードプログラミング)はこんな感じに、関数内のオブジェクトの全てに、外部からアクセスさせる手段を用意してる
0264デフォルトの名無しさん
2011/06/20(月) 06:11:00.20職場がフレックスタイム制なのか?
0265デフォルトの名無しさん
2011/06/20(月) 06:39:24.120266デフォルトの名無しさん
2011/06/20(月) 09:37:18.68http://hibari.2ch.net/test/read.cgi/php/1289117484/812
質問には以下を書くこと。へたくそな質問は再提出を要求される。
・最終的にやりたいこと(もっとよい方法がある場合が多いので)
・エラーメッセージ(自力で訳さずなるべくそのままで)
・詳しい内容(「動きません」「うまくできません」では回答しようがない)
・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
0267デフォルトの名無しさん
2011/06/20(月) 10:54:51.54#valが必須というわずらしさはあるけど、こんな感じで。ちょっと見づらいかも。
class LimitedNumeric
def initialize(val, min=-1.0/0, max=1.0/0)
@min, @max = min, max; self.val = val
end
attr_reader :val, :min, :max
def val=(v)
@val = (v > @max) ? @max : (@max >= v and v > @min) ? v : @min
end
def min=(min)
@min = min; self.val = @val
end
def max=(max)
@max = max; self.val = @val
end
end
a = LimitedNumeric.new(0, 0, 10) # => #<LimitedNumeric:0x81fe944 @max=10, @min=0, @val=0>
a.val -= 5; a # => #<LimitedNumeric:0x81fe944 @max=10, @min=0, @val=0>
20.times{ a.val += 1}; a # => #<LimitedNumeric:0x81fe944 @max=10, @min=0, @val=10>
a.min = -5; a # => #<LimitedNumeric:0x81fe944 @max=10, @min=-5, @val=10>
a.max = 5; a # => #<LimitedNumeric:0x81fe944 @max=5, @min=-5, @val=5>
a.val = -20; a # => #<LimitedNumeric:0x81fe944 @max=5, @min=-5, @val=-5>
20.times{ a.val += 1}; a # => #<LimitedNumeric:0x81fe944 @max=5, @min=-5, @val=5>
0268デフォルトの名無しさん
2011/06/20(月) 11:32:32.90整数を入れる入れ物クラスは作ってはいけない
0269デフォルトの名無しさん
2011/06/20(月) 11:46:21.24この板で延びてるスレはたいていおれが質問してるから
俺を探すなら伸びてるスレをチェックしたらよい
0271192
2011/06/20(月) 16:13:40.99実行ファイルの保存場所とかに問題があるのでしょうか?
0272デフォルトの名無しさん
2011/06/20(月) 16:28:46.610274デフォルトの名無しさん
2011/06/20(月) 16:48:28.98LOAD_PATHの仕様変更についての言及はないのだろうか?
>>192 が気付けなかっただけだろうか?
0275デフォルトの名無しさん
2011/06/20(月) 16:51:10.31初心者がハマるのも無理は無い
0276192
2011/06/20(月) 16:52:07.12open-uri-sample.rb
require 'open-uri'
open("http://www.ruby-lang.org/ja/") do |f|
5.times do
print f.gets
end
end
と、うちこんで実行した場合に、出力された日本語が文字化けしてしまいます。
ruby-Ks open-uri-sample.rb と入力しても文字化けしたままでだめでした。
解決方法はありますでしょうか?
0277192
2011/06/20(月) 16:57:02.21ファイルの場所を移動させたり、GEMをダウンロードしたり
いろいろやっていたら、いつのまにかうまくrequireがうごくようになりましたが原因を理解していないので
LOAD_PATHの仕様変更調べてみます。本にはのってないようです。
ありがとうございます。rbuy 1.87のruby consoleをつかっています。
0278デフォルトの名無しさん
2011/06/20(月) 17:04:47.22>たのしいRuby 3版は1.8と1.9の両対応
ちょっと違う
1.8.7 と 1.9.1 の両対応だ
0279デフォルトの名無しさん
2011/06/20(月) 17:16:13.13なんかいろいろめんどくさいな
えー、Ruby1.9.xのopen-uriはレスポンスヘッダのcharsetを読んでString#force_encodingする
http://www.ruby-lang.org/ja/ のレスポンスヘッダのContent-Typeは
Content-Type: text/html;charset=utf-8
なので、戻り値の文字列は force_encoding('UTF-8') されている
つまり、そこで print した文字列 f.gets は UTF-8 だ
スクリプトの実行結果を UTF-8 表示できる手段に通すか、
スクリプト側の文字列表示時に、たとえばWindowsのコマンドプロンプトなら
print f.gets.encode('Windows-31J')
と書く
0280デフォルトの名無しさん
2011/06/20(月) 18:03:17.930281192
2011/06/20(月) 18:15:26.68ありがとうございます。いろいろ試していたのですが、まだ文字化け解消しません。
print f.gets.encode('Windows-31J')と書くとありますが、実行ファイル内に書いてみたり、
ruby print f.gets.encode('Windows-31J') openuri-sample.rb と書いて実行してみたりしたのですが、うまくいきません。
ruby consoleをクリックすると出てくるWindowsのコマンドプロプントを使っています。
0282デフォルトの名無しさん
2011/06/20(月) 18:38:37.97インターネットそのもの(ってなんだ)を扱うのでない限り、サンプルにするのは極めて不適当
そういう意味で、OpenURI#read は本の真ん中へんくらいに出てくる技術
文字列とはなんぞやとか、メソッドとはなんぞとか、文字エンコーディングの違いってなにとか、
そういうことはそれなりに理解している人が使う
ということで、まだ早い
0283デフォルトの名無しさん
2011/06/20(月) 18:44:03.17>そういうことはそれなりに理解している人が使う
には賛同なのだが
# open-uri ライブラリを読み込む
require 'open-uri'
# http://www.ruby-lang.org/ja/ に接続し、
# なんかreadとかgetsとかできるオブジェクトをブロック引数 f に
open("http://www.ruby-lang.org/ja/") do |f|
# メモリはだいじなので古式ゆかしく5回getsを繰りかえして文字列を取得
5.times do
# 接続結果のオブジェクト(IOオブジェクト)のgetsメソッドが返す「改行までの文字列」をprintする
print f.gets
end
end
という流れだとわかってもらえてないとわりとつらい
0284デフォルトの名無しさん
2011/06/20(月) 18:50:16.68Windows のコマンドプロンプトは UTF-8 をまともに扱えないから、
print する文字列を「コマンドプロンプトが表示できるような文字列」にしなければならない
これは今のところは単に文字エンコーディングの違いに起因するもので、
コマンドプロンプトでは(Ruby1.9のEncodingがサポートしているエンコーディング名称中では)Windows-31Jの文字列なら
きちんと日本語として表示できる
ということで、f.gets の戻り値を String#encode で変換する
変換されていない文字列はなにをどうやっても化けるので、残しておいてはいけない
require 'open-uri'
open("http://www.ruby-lang.org/ja/") do |f|
5.times do
print f.gets.encode('Windows-31J')
end
end
0285デフォルトの名無しさん
2011/06/20(月) 18:57:03.930286デフォルトの名無しさん
2011/06/20(月) 19:01:28.28必須だと思うならデフォルト値にしとけカスって言っとけ
0287デフォルトの名無しさん
2011/06/20(月) 19:06:22.800288デフォルトの名無しさん
2011/06/20(月) 19:13:31.91それはできない
…うん、できないはず
それをやる方法を探したのでおぼえてる
0289デフォルトの名無しさん
2011/06/20(月) 19:14:51.110290デフォルトの名無しさん
2011/06/20(月) 19:17:18.54わけもわからず抑制型オプションつけさせるのって嫌いなのよね
説明してあげてください
0291デフォルトの名無しさん
2011/06/20(月) 20:15:32.810292デフォルトの名無しさん
2011/06/20(月) 21:10:58.49require 'find'
DIR1= ["/ruby/", "/ruby_doc/", "/ruby_tools/"]
IGNORES = [ /^\./, /^CVS$/, /^RCS$/ ]
DIR1.each do |path|
Find.find(path) do |p2|
if FileTest.directory?(p2) # pathがディレクトリならば
dir, base = File.split(p2)
IGNORES.each do |re|
if re =~ base # 無視したいディレクトリの場合
Find.prune # それ以下の検索を省略する
end
end
end
if File.basename(p2) =~ Regexp.new(ARGV[0]) #エラー
puts p2 # 出力する
end
end
end
Exception `TypeError' at dirlist.rb:17 - can't convert nil into String
でエラーになります。
正規表現でファイル検索する。検索する複数ディレクトリと
検索しない除外ディレクトリをプログラムで解決したいです。
どうすればいいのでしょうか?
0293192
2011/06/20(月) 21:25:13.67ありがとうございます。みなさんもありがとうございます。
いまだにできていませんが、実力不足なので、ゆっくり自分で解決できるまでがんばります。
0294デフォルトの名無しさん
2011/06/20(月) 21:30:48.82起動時に引数指定すれば?
0295デフォルトの名無しさん
2011/06/20(月) 21:33:39.49っていうか、誰が広めてるんだろう
#!/usr/bin/ruby
# -*- coding: utf-8 -*-
if ARGV.empty?
raise "Needs ARGV"
else
@target = /#{ARGV[0]}/
end
require 'find'
@dir1= ["/ruby/", "/ruby_doc/", "/ruby_tools/"]
@ignores = [ /^\./, /^CVS$/, /^RCS$/ ]
@dir1.each do |path|
Find.find(path) do |p2|
if FileTest.directory?(p2)
dir, base = File.split(p2)
# 無視したいディレクトリ名にヒットしたらサブディレクトリを検索しない
Find.prune if @ignores.any?{|re| re =~ base}
end
puts p2 if @target =~ File.basename(p2)
end
end
0296uy
2011/06/20(月) 21:37:47.03Dirではかけずにかいている?
Dir["{ruby,ruby_doc,ruby_tools}/*.*"].each do | m |
if m =~ /(test.*)/
p m
end
end
たぶんエラーの原因は、引数から受け取ったARGV[0]はRegexpじゃなく文字列だからそのまま評価するんじゃなく
eval等をしないとしぬ
0297デフォルトの名無しさん
2011/06/20(月) 22:06:19.87Regexp.new 使いまくってましたね。
0298デフォルトの名無しさん
2011/06/20(月) 22:28:19.29かなり有名な記法である /re/ のほうがよっぽど明示的だ
0299デフォルトの名無しさん
2011/06/20(月) 22:47:02.94>>296さん
素早いコメント有難う御座います。
Regexp.new古い本は当たり前のように書いてあります。
ここ数年の新しい本も最初の方にありますね。
せっかくですのでどなたかRegexp.newを書き換えよう!みたいなサイトを
ご紹介いただけると幸いです。
0300デフォルトの名無しさん
2011/06/20(月) 22:57:45.55しかし使ってはいない
Array.new のようなもの
0301デフォルトの名無しさん
2011/06/20(月) 23:09:30.73%w(a b c)
123_456
オレは、はじめての言語が Java なんだけど
こういう書き方を使ったときはドキドキした
0302デフォルトの名無しさん
2011/06/20(月) 23:13:23.72str = String.new ではなく str = "" と書く
arr = Array.new ではなく arr = [ ] と書く
もし data = [] と data = {} で data がどっちなんだかわかりにくいのだとしたら、
そりゃ変数名が悪いんだよとか言っておく
正規表現においてはオブジェクト使い回しが効く場合はリテラルのほうがバカ速い
変数埋め込みしかない場合は Regexp.new(val) も /#{val}/ も同じか、リテラルのほうが微妙に遅い
0303デフォルトの名無しさん
2011/06/21(火) 00:22:08.31場合、タプルを使って次のように書けます。
from collections import defaultdict
hash = defaultdict(list)
hash[('a', 'b')].append('111')
Rubyはタプルがないと思いますが、こういう機能を実現するにはどうすればいいでしょうか?
見通し良く実装できる方法があれば知りたいです。
0304291
2011/06/21(火) 00:27:03.39有難う御座います。勉強になります。
0305292
2011/06/21(火) 00:31:49.490306デフォルトの名無しさん
2011/06/21(火) 00:39:02.95こっちのスレまで荒らさないでください
0307デフォルトの名無しさん
2011/06/21(火) 00:43:31.89リストがあるんだし。リストをキーにしたハッシュにすればいいんじゃね?
0308デフォルトの名無しさん
2011/06/21(火) 00:53:42.93需要はわかるんだが。
0309デフォルトの名無しさん
2011/06/21(火) 00:59:04.57Rubyも同じでしょ。上のようなコードはrubyじゃ無理じゃないかな。試してないけど。
0310デフォルトの名無しさん
2011/06/21(火) 01:02:11.000311デフォルトの名無しさん
2011/06/21(火) 01:03:29.370312デフォルトの名無しさん
2011/06/21(火) 01:04:32.32Rubyはそういう制限ないよ
PythonはイミュータブルじゃないとTypeErrorだけど
0313デフォルトの名無しさん
2011/06/21(火) 01:07:21.15なるほど。
キーの内容が変わっちゃっても問題ないのかな?
Pythonのtupleの説明で、変えられないのがtupleの利点、ってのを読んだことがあったんだけど。
そんな制限はほんとは必要ないってことなのかな? わざわざ独立データ型とするほどの。
0314デフォルトの名無しさん
2011/06/21(火) 01:15:57.60=> {}
irb(main):002:0> key = [1,2,3]
=> [1, 2, 3]
irb(main):003:0> hash[key] = :value
=> :value
irb(main):004:0> hash
=> {[1, 2, 3]=>:value}
irb(main):005:0> key[2]=300
=> 300
irb(main):006:0> key
=> [1, 2, 300]
irb(main):007:0> hash
=> {[1, 2, 300]=>:value}
irb(main):008:0> hash[key]
=> nil
↑ふしぎ!!
0315デフォルトの名無しさん
2011/06/21(火) 01:26:42.87ふしぎじゃなかった!
0316uy
2011/06/21(火) 01:27:07.57n = Rinda::Tuple.new( [44,55,66] )
c = { n => :test }
p c[n]
p n.value
n.value[2] = 88
p n.value
p c[n]
0317デフォルトの名無しさん
2011/06/21(火) 01:27:34.860318uy
2011/06/21(火) 01:32:48.14記号を増やすべき
0319デフォルトの名無しさん
2011/06/21(火) 02:10:20.48だからrubyは遅い
0320デフォルトの名無しさん
2011/06/21(火) 17:04:21.650321デフォルトの名無しさん
2011/06/21(火) 17:11:50.172011/06/21(火) 16:58:27.65 - 2011/06/21(火) 16:51:27.65 を計算すると秒が求められるのですがそれを1:30:20(時:分:秒)にする方法を教えてください
0322デフォルトの名無しさん
2011/06/21(火) 17:19:25.270323デフォルトの名無しさん
2011/06/21(火) 17:34:56.77計算するだけなら60で割って60で割ってだけど。
0324デフォルトの名無しさん
2011/06/21(火) 17:42:17.21日クラス Date
時クラス Time
日時クラス DateTime(現行のTimeクラス)
にしたらよかったのにな。
0325デフォルトの名無しさん
2011/06/21(火) 17:56:48.820326デフォルトの名無しさん
2011/06/21(火) 18:10:56.22Dateインスタンス + Timeインスタンス で DateTimeインスタンスを返してほしいな
0327デフォルトの名無しさん
2011/06/21(火) 18:23:48.520328デフォルトの名無しさん
2011/06/22(水) 02:37:02.450329デフォルトの名無しさん
2011/06/22(水) 03:29:20.98ttp://www.youtube.com/watch?v=zIZulPN6fb4
0330デフォルトの名無しさん
2011/06/22(水) 04:24:06.85Matzうらやましい。超うらやましい。けしからん
0331デフォルトの名無しさん
2011/06/22(水) 07:41:54.92TimeとTimeSpanの2つでいいんだよ
Timeを大きくしたくなかったから分かれてしまったけど、実用上は失敗だと思う
拡張TimeとDateとDateTimeとParseDateは require 'time' 一発で読まれて、Timeクラスの拡張として振る舞うべき
def timespan(end_time, start_time)
require 'time'
t2 = end_time.kind_of?(Time) ? end_time : Time.parse(end_time)
t1 = start_time.kind_of?(Time) ? start_time : Time.parse(start_time)
Hash[*%w(sec min hour day month year).zip(t2.to_a[0..5].zip(t1.to_a[0..5]).map{|a| a[0] - a[1]}).flatten]
end
def timespan_to_s(end_time, start_time, format='hour:min:sec')
str = format.dup
timespan(end_time, start_time).each{|name, value| str.sub!(/#{name}/){value}}
str
end
t2, t1 = '2011-06-22 08:23:45', '2011-06-22 07:00:00'
p timespan(t2, t1) #=> {"month"=>0, "hour"=>1, "day"=>0, "sec"=>45, "year"=>0, "min"=>23}
p timespan_to_s(t2, t1) #=> "1:23:45"
puts timespan_to_s(t2, t1, 'hour時間min分sec秒') #=> 1時間23分45秒
0332デフォルトの名無しさん
2011/06/22(水) 07:53:20.95たぶん怒り狂ってこの世の全てのルートサーバを破壊しつくすと思う。
0333デフォルトの名無しさん
2011/06/22(水) 08:03:37.31引き算の配列を Time.local に渡せば strftime('%H%M%S') が使えるんじゃなかろうか
0334デフォルトの名無しさん
2011/06/22(水) 08:10:39.21それは「2ヶ月と30日」とかを投げると2月30日になってエラーになる気がするのでやめた
日数までなら平気なんだけど
0335デフォルトの名無しさん
2011/06/22(水) 14:02:47.67もう一回60で割ればいいのか?
0336デフォルトの名無しさん
2011/06/22(水) 16:14:11.000337デフォルトの名無しさん
2011/06/22(水) 17:25:42.54bizinformation.orgは適当
客観的根拠はとくにない
0338デフォルトの名無しさん
2011/06/22(水) 17:38:34.86ttp://www.amazon.co.jp/dp/4777514315/
0339デフォルトの名無しさん
2011/06/22(水) 18:51:07.280340デフォルトの名無しさん
2011/06/22(水) 18:54:51.810341デフォルトの名無しさん
2011/06/22(水) 19:02:28.660342デフォルトの名無しさん
2011/06/22(水) 19:05:25.51>1月31日の1ヵ月後
は、2月の末日(民法143条の2)
>1月31日の1ヵ月後の1ヶ月前
は、1月28日(29日)か、1月31日
通常は期間だけを計算したあとにおもむろに適用するので、0ヶ月を適用して1月31日
コンピュータで順番に計算すると一般的な答とは乖離する例
0343デフォルトの名無しさん
2011/06/22(水) 19:25:52.89Rubyの冒険とかそんなタイトル前にもなかったっけと思ったらやっぱり出てるか
Rubyの冒険 旅立ち篇―Rubyで簡単プログラミング入門 [単行本]
出版社: 毎日コミュニケーションズ (2003/08)
http://www.amazon.co.jp/dp/4839910413/
0344デフォルトの名無しさん
2011/06/22(水) 22:25:37.03ファイルの先頭に
# coding: Windows-31J
$stdout.set_encoding(Encoding::Windows_31J, Encoding::UTF_8)
とかいておけばいいですか?
0345デフォルトの名無しさん
2011/06/22(水) 22:37:05.750346デフォルトの名無しさん
2011/06/22(水) 23:20:33.82だからputs str.encode(Encoding::Windows_31J, :invalid => :replace, :undef => :replace)
みたいにしないといけないんじゃないの?
やってることが1.8から進歩してないが、設計ミスのような気がしてならない。
0347デフォルトの名無しさん
2011/06/23(木) 00:35:01.74それの存在は忘れろ
二度と使ってはならない
ああ、最初にそれ持ち出した奴ぶん殴りたい
0348デフォルトの名無しさん
2011/06/23(木) 01:02:46.49だから puts 等のそばに記述されるべきだが、
それだったら puts のときに文字列を String#encode したり
File オブジェクトのエンコーディングを変更したりするほうが素直だ
puts str
と
open('kekka.txt', 'wb'){|f| f.puts(str)}
が出力する文字列違うというのもキモい
そりゃこのへんも統一的に指示できれば美しいが、世界がそのようにはなっていないので…
0349デフォルトの名無しさん
2011/06/23(木) 01:39:41.52Ruby 1.9 の文字列(String オブジェクト)は2つの情報がセットになってる
実際のバイナリ列と、文字エンコーディングの名前
String#encode(to) または String#encode(to, from) はバイナリ列を from(かselfの文字エンコーディング名) から to に変換し、名前も to に変更する
String#force_encoding(new) はバイナリ列は変更せずに、文字エンコーディングの名前の情報部分だけを new にすげかえる
String#encode または内部でそれを呼んでいるメソッドにおいては、
変換元の文字エンコーディング名(と変換先の文字エンコーディング名)は明示的に指定されなければならない
「まったくわけがわからない」不明な文字エンコーディングの String の encode メソッドを使用することはできない
で、通常、Net::HTTP を使用して Web サーバから取得して作成された文字列の文字エンコーディングは不明(ASCII_8BIT、別名BINARY)だ
人間が人力で、なんからの信頼できる情報源から文字エンコーディングを確定して、
変換前に String#force_encoding してやるか String#encode の第2引数に指定してやらなければならない
ということで、
html.force_encodeing(HTMLの正しい文字エンコーディング)
str = html を「HTMLの正しい文字エンコーディング」名義でどうにかする(正規表現とか)
puts str.encode('Windows-31J') # コマンドプロンプトに表示したい場合
というのがたぶん妥当
日本語限定で、あらかじめ文字エンコーディングがわかっているサイトを巡るのではないのなら、
HTML を NKF.guess してしまうのがいちばんめんどくさくない気はする
とまあ眠い目の中ここまで長文書いて、元レスの HTML は UTF-8 限定だということに気がついた
取得した HTML の文字列が UTF-8 であるのなら、UTF-8 から Windows-31J への変換でいいんじゃないのかね
変換エラーでおっこちるようなら>>346か、require 'kconv' して tosjis でも使っとけ
0350デフォルトの名無しさん
2011/06/23(木) 01:51:27.700351デフォルトの名無しさん
2011/06/23(木) 02:04:12.210352デフォルトの名無しさん
2011/06/23(木) 02:57:40.01month++;
みたいなw
0353デフォルトの名無しさん
2011/06/23(木) 02:59:49.620354デフォルトの名無しさん
2011/06/23(木) 03:42:58.550355デフォルトの名無しさん
2011/06/23(木) 07:56:46.280356デフォルトの名無しさん
2011/06/23(木) 08:14:58.736月30日の「1ヶ月後」はフツーのグレゴリオ暦使ってれば常に7月30日
ユリウス暦とか太陰暦とかインカ暦とか使ってる場合はたぶんなんか適当に計算されるんだろう
どちらにしても、「月の部分に1だけ足して、その月に存在しない日になったらその月の最終日に丸める」という処理は一般的だと思う
そういう処理をしてもらっては困る場合は「31日後」などという表現を使う
0357デフォルトの名無しさん
2011/06/23(木) 08:29:53.246月30日に1日足した結果の"6月31日"は7月1日に変換されなければならないけど、
5月31日に1ヶ月足した結果の"6月31日"は6月30日に変換されなければならない
プログラム中の中間データとしては全く同一であるはずなのに
このめんどくさい処理をなんとかするために、Date クラスは Date#>> を作った
irb> p (Date.parse('2011-05-31') + 31).to_s
"2011-07-01"
irb> p (Date.parse('2011-05-31') >> 1).to_s
"2011-06-30"
「1ヶ月」という期間を加算減算したい場合は >> と << を使ってねという話
0358デフォルトの名無しさん
2011/06/24(金) 10:56:42.18どうやらこの部分の単体テスト自体がなかったらしい
ぬう、変更前のテストから作れということか
めんどくさいのう
0359uy ◆KOAgYBL/Xg
2011/06/24(金) 10:58:53.25こういう抽象化しにくいのはやっぱり自分でかいていくしかないの?
0360デフォルトの名無しさん
2011/06/24(金) 12:41:48.63ちょっとした用途ならArray/Hashの入れ子程度で賄われるし
ちょっとどころでない用途ならREXMLみたいに
解きたい問題に特化した構造で作り込まれるだろうしで。
0361デフォルトの名無しさん
2011/06/24(金) 18:48:30.25->(x){(略)}
ってのがあったんですが、リファレンスのどこに書いてありますか?
0362デフォルトの名無しさん
2011/06/24(金) 18:51:27.32どれに対する回答なの?
0363デフォルトの名無しさん
2011/06/24(金) 19:07:32.22Ruby1.9のlambdaかProcのとこに書いてあるかもしれない
0364デフォルトの名無しさん
2011/06/24(金) 19:56:56.35Rubyで使われる記号の意味にありました。
0365デフォルトの名無しさん
2011/06/24(金) 21:09:19.81あぼーんアピールを繰り返すにはまだ間が空いてない
0366デフォルトの名無しさん
2011/06/24(金) 21:34:10.63rexmlが難しかったので
0367デフォルトの名無しさん
2011/06/24(金) 21:59:26.96DOMやりたいなら現状REXML以外にメジャーなものはなかったと思う。
htreeは日本語のチュートリアルとかざっと探してもなさそうだし初心者だと難しいかなぁ。
0368デフォルトの名無しさん
2011/06/24(金) 22:30:18.540369デフォルトの名無しさん
2011/06/24(金) 23:00:21.11ライブラリは主に解析とかパースに使うもんだと思ってる
0371デフォルトの名無しさん
2011/06/25(土) 03:32:31.35#プログラム hadamard.rb Ver.0.1
N=4
require 'matrix'
class Matrix
def []=(i,j,x)
@rows[i][j]=x
end
end
h=Matrix[[1,1],[1,-1]]
if N>1 then
for k in 1..N-1 do
for i in 0..2**k-1 do
for j in 0..2**k-1 do
h[i,j+2**k]=h[i,j]
h[i+2**k,j]=h[i,j]
h[i+2**k,j+2**k]=-h[i,j]
end
end
end
end
p h
Matrixクラスを使うに当たってリファレンス[*2]を参照し、要素に数値を代入するメソッド定義のコードをコピペしました。
実行時に出てきたエラーメッセージは以下の通りです。
D:/ドキュメント/プログラム/Ruby/rbEA75.tmp:11:in `[]=': undefined method `[]=' for nil:NilClass (NoMethodError)
以下省略
実行環境はVista 64bit、ActiveScriptRuby[3]、RDE[*4]です。
[]=メソッドが定義されてねぇぞ(゚Д゚)ゴルァ!!と言っているように見えるのですが、よく分かりません。よろしくお願いします。
[*1]http://ja.wikipedia.org/wiki/アダマール行列
[*2]http://www.ruby-lang.org/ja/man/html/Matrix.html
[*3]http://www.geocities.co.jp/SiliconValley-PaloAlto/9251/ruby/
[*4]http://homepage2.nifty.com/sakazuki/rde/index.html
0372uy ◆KOAgYBL/Xg
2011/06/25(土) 04:21:25.11def []=(i,j,x)
p i , j , x
p @rows
@rows[i][j]=x
end
end
これで、表示させてみたところこうなった
0
2
1
[[1, 1], [1, -1]]
2
0
1
[[1, 1, 1], [1, -1]]
@rous[ 2 ][ 0 ]にアクセスしようとしたけど
@rousは [ 0 ] と [ 1 ] しかまだ持ってないからエラーでてる
Matriksが何のライブラリで何をするものか俺しらんのでイミフだけどこうすりゃ一応うごく
class Matrix
def []=(i,j,x)
if @rows[i].nil?
@rows[i] = []
end
@rows[i][j]=x
end
end
0373デフォルトの名無しさん
2011/06/25(土) 06:10:21.83Rubyには2次元配列は存在しない
単なるメソッドチェーンに過ぎない
foo[x][y] としたとき、実際に試されるのは foo の x y 番地ではなく foo[x] が返すオブジェクトの [y] だ
foo[x] の時点で整数や nil であるとき、 foo[x][y] は 3[y] や nil[y] を試そうとして NoMethodError を発生させる
0374デフォルトの名無しさん
2011/06/25(土) 06:34:55.98N = 4
for k in 1..N-1
p k
end
ちなみに↑と↓は同義な、 ifのthenやforのdoも省略可能
for k in 1...N
p k
end
0375デフォルトの名無しさん
2011/06/25(土) 07:04:49.68ようするにMatrixは配列の配列を作っているだけなので
N×N行列hの(i,j)成分に対して,行と列をそれぞれ二倍に拡張して2N×2Nの行列にするとき
h[i,j+2**k]は配列オブジェクトh[i]がすでにあるので大丈夫だけど
h[i+2**k,j]は配列オブジェクトh[i+2**k]が無いのでこれを
h[i+2**k,j]=[]として作ってやらないとアクセスできない
そのあと
h[i+2**k,j+2**k]にアクセスするときは上で配列h[i+2**k]が作られているのでアクセスできる
というところでいいんでしょうか?
いままではPASCALでやっていたので最初から扱う最大の次数の多次元配列をつくっていたので問題はでなかったのですが
Rubyだと宣言なしで動的に使えて、いきなり配列の中のぶっ飛んだ成分にアクセスできていたので、同じことが行列でもできるだろうと油断していました ・・・
doやthenは省略できるみたいですが、これって省略するのが普通なんでしょうか?
とりあえずちゃんと書いた方がいいと思って書いたのですが
上ではputs hと書いてしまいましたが本来ならちゃんとカッコをつけた方がいいんでしょうかね
オブジェクト...オブジェクト で終端を含まない範囲オブジェクトを作れるのは知りませんでした・・・参考になります。
0376デフォルトの名無しさん
2011/06/25(土) 07:29:57.28あい
これを自動で作る方法はなくもないけれど、とりあえず自分で条件つけて自分で書いて作るのが安心確実かと思う
こんなとこに魔法使っても得しないw
do や then はあまり省略しないというか、省略ではなく「do や then を書くか、改行を書くかのどちらか2択」だ
Ruby の条件部は空白が許されていて、どこまで続いてるのか書き忘れがないのかがよくわからないので、
if(条件) のような区切り書きの役目を if 条件 then に負わせることがよくある
「アタマイイヒト」はなんでもかんでも省略して空白区切りにまかせて書くけど、正直推奨しない
あと、puts と print と p は伝統的に誰もカッコ書かないというか、下手にカッコ書くと時々妙に見える動作をする
>オブジェクト...オブジェクト で終端を含まない範囲オブジェクトを作れるのは知りませんでした
読めればそれでいいよ、あんまり自分から使うもんじゃない
理由は、まあ、見たまんまだなw
>>374みたいなのは参考にしたらだめこ
0377uy ◆yyC0rYWEq2
2011/06/25(土) 08:07:59.37推奨って「 誰が 」 言ったのか詳しく
あまりこのスレでは口出ししないようにしてきたが流石に
変なこと教えんな いや、自分の考えを押し付けるなと。
Rubyを何の用途に使ってたらいちいちdo、thenつけるんだよ 複数行に分けてるにもかかわらずthen doつけるなんてそうそう見た事ねーよ
教科書コードとしても微妙
無駄に冗長させるだけ、そもそもifを一行でかくなら後置きIFにする そうすることで
thenとendと空白をあわせて 9文字くらいタイプ量を減らせるんじゃないのか
もう一度いう、
推奨って「 誰が 」 言ったのか詳しく
とりあえず標準Libのソースコードで語るなら
if thenはやってる箇所はあったけど、for doについては、やってる箇所はひとつもないよ
0378デフォルトの名無しさん
2011/06/25(土) 10:15:11.22内部配列が見えない真正の多次元配列が欲しけりゃそういうクラスを作れば十分で、
「Rubyに多次元配列は存在しない」とドヤ顔するほどのことでもない。
0379デフォルトの名無しさん
2011/06/25(土) 10:20:49.44つまり多次元配列は存在しないってことだろ
「配列の配列」と「多次元配列」はぜんぜん違う
0380デフォルトの名無しさん
2011/06/25(土) 10:28:32.980381デフォルトの名無しさん
2011/06/25(土) 10:31:17.84だから「つまり多次元配列は存在しない」とドヤ顔するほどのことでもない。
0382デフォルトの名無しさん
2011/06/25(土) 10:45:40.57多次元配列は self にすべてを問いあわせることができて、self は全ての番地を知っている
こんな感じ?
違うっちゃ違うな
0383デフォルトの名無しさん
2011/06/25(土) 10:50:42.63作った配列の筋に依存するというのも結構…
てか、Ruby における配列の配列は配列の配列としてしか使用されてないはず
配列の配列を2次元配列として使っているとしたら、それは単に間違い
でも大学の授業でよくあるが
0384デフォルトの名無しさん
2011/06/25(土) 11:01:38.81配列が配列の中に入ってたら、それはネストした配列だろ
配列オブジェクトの(要素の)中に、また別の配列オブジェクトがごろんと入ってるだけ
むしろ、なぜわざわざ二次元配列だと考えるのかが謎だ
0385デフォルトの名無しさん
2011/06/25(土) 11:05:04.910386デフォルトの名無しさん
2011/06/25(土) 11:13:23.31・ eachによる自己枚挙の利点がよくわからず、for で添え字アクセスばかりする
ような時期だと、ネストした配列と言われても何言ってるのこの人みたいにしか聞こえないと思うの
なまあたたたかく見守るべき
0387デフォルトの名無しさん
2011/06/25(土) 11:22:09.81知 ら な い く せ に
a[0][1] のようなC/PerlちっくなアクセスのやりかたをRubyでやるように教えたアホがいるってことだよね、要は
それが広まってるんだ
彼らは被害者に過ぎない
0388uy ◆yyC0rYWEq2
2011/06/25(土) 11:27:38.81ListなのにArrayって名前付けちゃってんのはRubyの欠点だから
0389デフォルトの名無しさん
2011/06/25(土) 11:39:36.09だからRubyとしての扱い方を知ってもらわないといけないんだが
「多次元配列は存在せず、ネストした配列かMatrixクラスで代替するしかありません」
というシンプルな事実を頑なに認めないのは単に老害の第一歩
次の方どうぞん
0390デフォルトの名無しさん
2011/06/25(土) 12:29:10.26温暖化を促進し人類を滅亡に導くってのはRubyの欠点だから
0391uy ◆yyC0rYWEq2
2011/06/25(土) 12:29:36.760392デフォルトの名無しさん
2011/06/25(土) 13:00:05.182100年の平均気温上昇が0.15度抑えられる程度の効果しか無いけどな
0393デフォルトの名無しさん
2011/06/25(土) 13:05:03.670395デフォルトの名無しさん
2011/06/25(土) 13:13:07.56>>375
Matrixは行列を動的に拡張するような使い方は想定してないと思うよ
そこで定義してるMatrix#[]=はあくまで既存の成分の参照
0396デフォルトの名無しさん
2011/06/25(土) 13:35:42.87「どうしても真正の多次元配列が欲しいときは自分が必要と思う機能を持たせたクラスを作ってね」
0399デフォルトの名無しさん
2011/06/25(土) 13:46:53.21頼む
こっちは駄目だった
0400デフォルトの名無しさん
2011/06/25(土) 13:56:21.18テンプレ誤りあったら1にアンカつきで指摘おねがい
Rubyについて Part 44
http://hibari.2ch.net/test/read.cgi/tech/1308977168/
0401デフォルトの名無しさん
2011/06/25(土) 14:14:40.70>多次元配列は存在せず
これはいいけど、
>ネストした配列かMatrixクラスで代替するしかありません
自分が必要なクラスを自分で書くっていう発想がないのは頭がおかしいから?
0402uy ◆yyC0rYWEq2
2011/06/25(土) 14:35:15.46必死な子が混ざってるのは質問の回答2〜4レス目から気づいてるけど、スルーしたほうがいい
0403uy ◆yyC0rYWEq2
2011/06/25(土) 14:35:31.420404デフォルトの名無しさん
2011/06/25(土) 14:58:23.83このスレの全部に「自分で作れ」をつけて回ってください
0405デフォルトの名無しさん
2011/06/25(土) 15:04:49.89『しかありません』
自分で作ることもできるし、ライブラリもあるんですけど
0406デフォルトの名無しさん
2011/06/25(土) 15:17:36.75言語側で用意されてなくて、代替じゃだめで、既存ライブラリもいや、という条件が揃ってるならつけて回るかな。
0407デフォルトの名無しさん
2011/06/25(土) 15:30:38.52/ \
【本当に必要?】 NO → 【ライブラリある?】― YES → それ使え死ね
\ \
NO → 死ね NO → 自分で作れ死ね
言語仕様上存在しないものについての話題ではこういう流れが自然であって、
「存在しない」「存在しない」とオウムのように繰り返すのは意味がないよね。
0408デフォルトの名無しさん
2011/06/25(土) 15:39:13.440409デフォルトの名無しさん
2011/06/25(土) 15:45:00.56require 'nokogiri'
でnokogiriがno such file to load -- nokogiri (LoadError)となり、うまくいきません。
Nokogiriがうまくインストールされてるかどうかは
ruby -rrubygems -e 'require "nokogiri"; p Nokogiri::VERSION'
で確かめると"1.46と表示されます。
どの辺をチェックすればうまく使えるようになりますでしょうか?
0410デフォルトの名無しさん
2011/06/25(土) 15:50:27.72大抵代用可能
ライブラリあり
作るのに甚大な労力が必要なわけでもない
0411uy ◆yyC0rYWEq2
2011/06/25(土) 15:52:26.700412デフォルトの名無しさん
2011/06/25(土) 15:57:45.08のこぎり使ったことないから知らんけど
require 'rubygems'
require 'nokogiri'
じゃないの
0413デフォルトの名無しさん
2011/06/25(土) 16:19:41.92多次元配列が使われている多くのパターンが入れ子配列で代用可能であるという事実はゆるがないし、
その代用じゃ効かないときのためにNArrayなんてライブラリがあるのも確かだし、
代用もイヤ、既存ライブラリも不満、というときには「じゃあ自分で作れよ」と答えるのが普通だろう。
「Rubyに多次元配列は存在しない」なんて無意味なことをいう必要もないし、
「ネストした配列かMatrixクラスで代替するしかありません」なんて嘘をつく理由もない。
Rubyスレで「二次元配列使いたいんですけどー」とか言われたら
・それ配列の配列じゃダメ?
・NArrayでも使えば
・内部に一次元配列もって[x+y*width]でアクセスするクラスでも作ればいい
幅が固定じゃないならそんときの処理は自分で適当に用意しろや
なんて答えるのがまともな人間。
「Rubyに2次元配列は存在しない(ドヤっ」
0414デフォルトの名無しさん
2011/06/25(土) 17:17:14.50スレ名: Rubyの宿題教えてください。3限目
↓テンプレ1
--
あなたが解けないRuby言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
前スレ
http://hibari.2ch.net/test/read.cgi/tech/1200175247/
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] バージョン: (Ruby 1.8.6 等)
[3.3] 言語: (Ruby/JRuby/IronRubyどちらでも可 等)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
0415414
2011/06/25(土) 17:18:15.93--
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、
その文字列を知らない他人に騙られることを防ぐことができます。
Ruby Home Page
http://www.ruby-lang.org/ja/
Ruby 初心者スレッド Part 44
http://hibari.2ch.net/test/read.cgi/tech/1307845568/
Rubyについて Part 44
http://hibari.2ch.net/test/read.cgi/tech/1308977168/
【RoR】Ruby on Rails Part11
http://hibari.2ch.net/test/read.cgi/php/1292032736/
0416409
2011/06/25(土) 17:30:14.93なんてお礼を言ったらいいかわかりませんが、できました。
3日間ぐらい、いじくり倒してできなくて泣きそうだったので、感激です。
大変ありがとうございます。
require 'rubygems'といれることにまったく気づきませんでした。
0417デフォルトの名無しさん
2011/06/25(土) 17:34:39.570418デフォルトの名無しさん
2011/06/25(土) 17:40:27.19センター試験の数学でもRuby選択できるようになるのかな?
0419デフォルトの名無しさん
2011/06/25(土) 18:03:47.88http://table.yahoo.co.jp/t?s=998407.O&g=d
ここなんですが、UTF-8やShift-JISでテキストを抽出すると日本語が文字化けしてしまいます。
0420デフォルトの名無しさん
2011/06/25(土) 18:16:46.22EUC_JPならどうだろう?
0421デフォルトの名無しさん
2011/06/25(土) 18:23:58.28>>420も書いてるがhttpレスポンスのヘッダーにeuc-jpて書いてあったよん
0422デフォルトの名無しさん
2011/06/25(土) 18:35:30.37ありがとうございます。ソースのvalueの部分でEUC_JPを確認できました。
しかしながら、うまくできませんでした。
require 'rubygems'
require 'open-uri'
require 'nokogiri'
require "kconv"
#! ruby -Ke
doc = Nokogiri::HTML(open(
"http://table.yahoo.co.jp/t?s=998407.O&g=d"),nil,"euc")
doc.css("title").each do |title|
puts (Kconv.toeuc (title.text))
end
と書いていますが、文字化けしてしまいます。EUC_JPの記述あっていますでしょうか?
0423422
2011/06/25(土) 21:35:23.370424デフォルトの名無しさん
2011/06/25(土) 21:38:53.66urlの行 "euc" => "EUC-JP"
ruby -Keの行があるけど1.8系をLinuxとかで使ってるの?
0425422
2011/06/25(土) 23:22:26.94ありがとうございます。下記コードで無事日本語表示できました。
win7のコマンドプロプント使っています。
ruby -KeはEUC−JPの頭文字eを付けてみたのですが、関係ないみたいですね。
紛らわしくて申し訳ないです。
あとwin7のコマンドプロプントはJISなのでputs(Kconv.tosjis(title.text))にしないと
いけないみたいですね。助かりました。
require 'rubygems'
require 'open-uri'
require 'nokogiri'
require "kconv"
#! ruby -Ku
doc = Nokogiri::HTML(open(
"http://table.yahoo.co.jp/t?s=998407.O&g=d"),nil,"EUC-JP")
doc.css("td>small").each do |title|
puts(Kconv.tosjis(title.text))
end
0426デフォルトの名無しさん
2011/06/26(日) 00:09:50.00重箱だけど
#! の行はファイル先頭に書くのがお作法、その書き方だとただのコメント行として扱われる
あとruby1.9から -K オプションは非推奨
ついでにJISって書くと7bitJIS(ISO-2022-JP)みたい…
SJISとかShift_JISとか(厳密にはWindowsの場合Windows-31J)ね
0427デフォルトの名無しさん
2011/06/26(日) 06:04:05.95# coding:utf-8
を先頭に書くのおすすめ
0428デフォルトの名無しさん
2011/06/26(日) 09:25:13.73文字列を渡したほうが安心確実高利回りなのに
0429デフォルトの名無しさん
2011/06/26(日) 09:56:50.060430デフォルトの名無しさん
2011/06/26(日) 10:50:13.02内部でgetsとかで一行づつまたは数キロバイトずつ処理してくれることがわかっているなら、
Fileオブジェクトを渡すというオプションがあってもいい
Nokogiriはそんなことしないので、open(uri).read したものをぶんなげたほうが話が早い
っていうか、Fileオブジェクトがどんな文字列返すのか「不安」にならない? あとエラーとか
多少メモリを占有しても、文字列としてエンコーディングとかサイズとか確定させてから渡したいなあ
0431デフォルトの名無しさん
2011/06/26(日) 10:59:06.49C厨はもうほんとに害悪しか撒き散らかさないから困る
0432デフォルトの名無しさん
2011/06/26(日) 11:04:09.94Rubyのファイルオブジェクトをファイルポインタと勘違いしてると
どんな問題が出てくるの?詳しくお願い
0433デフォルトの名無しさん
2011/06/26(日) 11:07:29.63ファイルポインタではないものをファイルポインタと呼んではならない
0434デフォルトの名無しさん
2011/06/26(日) 11:20:46.130435デフォルトの名無しさん
2011/06/26(日) 11:25:14.88ファイル読み込み開始位置子は別途 File オブジェクトの中に変数として保持されてる
てゆーか、なんか「Ruby はあなたの知っている○○言語ではない」というだけのことをなんか妙に拒否してるっぽい人が前からなんか
言語が違うんだから呼び名も概念も考え方も違うというのはあんまりに当たり前のことだと思うんだけど、そんなに難しいかな
0436デフォルトの名無しさん
2011/06/26(日) 11:29:55.68最初に学んだ枠組ベースでなんでもかんでも押し通す奴。
0437デフォルトの名無しさん
2011/06/26(日) 11:29:56.30いやそういうことじゃなくて、
Cのファイルポインタと同じ感覚で使ったら事故ったとか
そういう実例があるのなら聞きたかったんだけど
自分は常にファイルオブジェクトって呼んでるよ
0438デフォルトの名無しさん
2011/06/26(日) 11:48:13.65文字列を受け取った場合にStringIOでくるんでからパースしてることがよくある
(read, seekが使えるのと読み込み位置を記憶してくれて都合がいいから)
そういう場合も考えると文字列渡しとけってのが良い方法なのかは疑問
0439デフォルトの名無しさん
2011/06/26(日) 11:51:58.24引数オブジェクトが read 可能だった場合は read して文字列にします、というだけじゃちょっと
0440デフォルトの名無しさん
2011/06/26(日) 12:10:00.87>>344とは別人です
0441デフォルトの名無しさん
2011/06/26(日) 12:10:16.46csvファイルの1行目から順に読んでいくみたいなんですが、
最後の1行だけ読みたい場合はどうしたらいいでしょうか?
すごく初歩的な質問ですいません。
ぐぐっても出てこなくて・・・
0442デフォルトの名無しさん
2011/06/26(日) 12:20:12.66許されるなら自前でopenしてreadしてcloseした結果の文字列(正しいエンコーディング情報つき)を渡したい今日この頃
文字列をどう処理するのかにもよるから(先頭からエンコーディング確定で順にパースできるなら文字列は二度手間)、
やっぱ詳細をマニュアルに書いて欲しいのは確か
>>441
できません
ああ、またこんな言い方したらネチネチ言う人が出るかな
ファイル全体を一度読んで、最後の行を探さないといけないので、そういう魔法みたいな「軽い」単機能はない
がりっと全部単なる文字列として読み込んでから改行で区切った最後の行をCSVとして解釈したり、
全部をCSVとしてパースし終わってから、最後の行に相当するデータを抜き出したりしてくだち
それこそやろうと思えば適当なファイル位置から最後まで読んで探すこともできそうだけど、そんな回答を望んでるわけじゃないよね
0443デフォルトの名無しさん
2011/06/26(日) 12:29:19.760444デフォルトの名無しさん
2011/06/26(日) 13:35:33.94ありがとうございます。時間食いそうだけど、全部読むしかなさそうです
そもそもデータをcsvで保存したのが間違いな気がしてきました
>>422
自分と同じ道通ってる人がいるみたいですね
0445デフォルトの名無しさん
2011/06/26(日) 13:58:07.34>>443のtailがいちばん手軽だけど
Windowsなら仕方がないかな
0446デフォルトの名無しさん
2011/06/26(日) 14:05:07.970447デフォルトの名無しさん
2011/06/26(日) 14:09:44.250448デフォルトの名無しさん
2011/06/26(日) 14:19:10.18小さいファイルなら一気に読み込んで文字列操作でケツを探す、ってところじゃね
ダブルクォーテーションで要素(?)を囲うのがありな場合は
ちょいと面倒そうだな
0449441
2011/06/26(日) 14:46:59.44csvデータの中身は株価データで
年 月 日
1983 1 4 144 144 140 141 309000 141
1983 1 5 144 155 142 153 2416000 153
1983 1 6 162 168 157 160 7245000 160
・
・
2011 6 8 168 169 167 168 46000 168
2011 6 9 171 173 171 172 291000 172
2011 6 10 177 178 174 175 504000 175
って感じになってます
行数は少ないので1000行多いので7200行ってとこです
最終行の日付読んで
2011/6/11〜今日まで
のデータをスクレイピングしてデータに追加するプログラム作るのに
最終行の日付け読む必要があるんですが、
シークして改行探すのがよさげなかんじですかね?
0450デフォルトの名無しさん
2011/06/26(日) 14:47:59.540451デフォルトの名無しさん
2011/06/26(日) 14:53:06.070452デフォルトの名無しさん
2011/06/26(日) 14:53:09.12それ相当でいいのなら File.read(csv).lines[0] で済むような。
0453デフォルトの名無しさん
2011/06/26(日) 14:53:26.710454デフォルトの名無しさん
2011/06/26(日) 14:59:23.220455441
2011/06/26(日) 15:04:03.26なんでこれに1時間悩んでたんだろう・・・orz
また、つまづいたらお願いします
0457デフォルトの名無しさん
2011/06/26(日) 16:19:21.590458デフォルトの名無しさん
2011/06/27(月) 07:00:24.51Stringのエンコーディング不一致でほぼ全滅・・・
しかも1.9に対応させると今度は1.8で動かないし('A`)
0459デフォルトの名無しさん
2011/06/27(月) 07:36:43.430460デフォルトの名無しさん
2011/06/27(月) 08:04:45.02たいへん心温まる出来事でした
0461デフォルトの名無しさん
2011/06/27(月) 08:13:19.81>>458
キャラクターエンコーディングに対する理解と実行が不足な状態だった可能性がある
1.9でわかったんだからいいじゃないか
0462デフォルトの名無しさん
2011/06/27(月) 17:18:34.420463デフォルトの名無しさん
2011/06/27(月) 17:33:33.04感じましたが、他にこれを勉強すれば、スクレイピングに便利、役に立つっていうようなものなどは
ありますでしょうか?
0464デフォルトの名無しさん
2011/06/27(月) 17:37:07.79つまづくところは多分処理する対象によってぜんぜん違う。
0465デフォルトの名無しさん
2011/06/27(月) 17:48:56.260466デフォルトの名無しさん
2011/06/27(月) 20:21:12.050467デフォルトの名無しさん
2011/06/27(月) 20:24:14.000468デフォルトの名無しさん
2011/06/27(月) 20:30:49.56自分の代わりに低能な質問を自動投稿する人工無脳。
0469デフォルトの名無しさん
2011/06/27(月) 20:55:52.65HTMLのパースなんて一切必要ないということがわからないなんて可哀相
0470デフォルトの名無しさん
2011/06/27(月) 23:25:14.74そもそも1.8以前にそんな概念はないだろ。何を言っているんだ?
0471デフォルトの名無しさん
2011/06/27(月) 23:45:56.06それどこの宇宙?
0472デフォルトの名無しさん
2011/06/27(月) 23:48:54.010473デフォルトの名無しさん
2011/06/27(月) 23:51:26.77それが文字列である以上何らかのキャラクターエンコーディングではあったわけで。
0474デフォルトの名無しさん
2011/06/28(火) 00:14:37.920475デフォルトの名無しさん
2011/06/28(火) 00:32:21.96どこが悪くてエラーが出るのか判断すごい難しかった
0476デフォルトの名無しさん
2011/06/28(火) 00:54:35.290477デフォルトの名無しさん
2011/06/28(火) 03:13:24.64実際に現場で使われるほどに、日本語環境で問題出まくり出しな。
結局perlと同じ後追いで国際化に取り組む羽目になった。java見たいに内部utf8って決めうちしちゃったほうが楽に乗り切れたと思うよ。
0478デフォルトの名無しさん
2011/06/28(火) 03:14:58.890479デフォルトの名無しさん
2011/06/28(火) 03:21:13.310480デフォルトの名無しさん
2011/06/28(火) 04:33:10.38>元々国際化の実装を回避してリリースしてたのが不味かった。
>実際に現場で使われるほどに、日本語環境で問題出まくり出しな。
具体的にどんな問題があったの?
詳細が知りたいので、リンクがあればおしえて。
ぐぐってみた感じではみつからないなあ。
0481デフォルトの名無しさん
2011/06/28(火) 05:19:45.690482デフォルトの名無しさん
2011/06/28(火) 06:22:35.62他の文字エンコーディングからUTF-8に変換するコストが割に合わないのが一因ではあったな
Shift_JIS→内部UTF-8→Shift_JISで文字が欠落するとか、それこそ日本人用としてはありえない
だったらShift_JISのバイナリ文字列として終始扱ったほうがまだマシ
っていうか、Windowsで使える日本語文字はUTF-8ですべて表現できるとか思ってる人がいるっぽい
表現できないぞ
規格上は表現できるはずだったが、ゲートウェイである変換の実際の実装がみんなバラバラで問題が
世の中そんなもんだよね
0483デフォルトの名無しさん
2011/06/28(火) 06:48:50.78出まくりだとしたら、たとえば常態1.8なRailsでも出まくりだということになる
でもそんな話はあまり聞かない
>>480
一応、$KCODEがシステムグローバルであるという問題はメジャーではあった
UTF-8で日本語書いたライブラリと、
Shift_JISで日本語書いたライブラリと、
EUC-JPで日本語書いたライブラリをrequireするとうまく動かない
日本語ならまだしも、なんか適当にラテン文字が書いてあるライブラリなんかだと…
あと、外人さんがライブラリ内部でやたらめったら$KCODE='u'しまくってるという問題も
$KCODE = 's'
require '外人さんライブラリ'
p $KCODE #=> 'u'
みたいなめんどくさいことが昔は(今も)時々ある
0484デフォルトの名無しさん
2011/06/28(火) 06:49:56.030485デフォルトの名無しさん
2011/06/28(火) 07:46:57.18それってRubyの問題じゃないじゃん
文字コード変換にまつわる数々の問題は
どの言語でも起きるわけだし
0486デフォルトの名無しさん
2011/06/28(火) 08:05:57.40だから、そういう相互変換の問題が身近だったからこそ、1.8も1.9も「内部でUTF-8決め打ち」にしなかったのだろ
0487デフォルトの名無しさん
2011/06/28(火) 08:09:29.570488デフォルトの名無しさん
2011/06/28(火) 08:55:19.52やってるように見える、というのが全てだろ。
0489デフォルトの名無しさん
2011/06/28(火) 08:59:48.90釣りかなにかか
0490デフォルトの名無しさん
2011/06/28(火) 09:01:27.600491デフォルトの名無しさん
2011/06/28(火) 09:08:10.32UTF-8ではないよね。
0492デフォルトの名無しさん
2011/06/28(火) 10:37:14.96×バカなアメ公
○バカなイタ公
クソコードを投稿(正確にはsvnリポジトリーにコミット)してたのは、イタリア人でした。
でもコードを管理してるコミュニティの親分はアメリカ人で、そいつのチェックでOKが出た上で投稿されたんです。
コードというのは、javaで書かれたプログラムコードのことで、テキストのエンコードのことではありません。
話が長くなるのでアレですが・・・
javaでは内部的に文字列をユニコードで処理しています。1文字は16ビットです。
Windowsも皆さんご存知の通り、内部的に文字列をユニコードで処理しています。1文字16ビットです。
Win32APIの末尾に w が付くやつがそうですね。
つまり、javaで何も考えずにフツーにプログラミングすれば、アメ公が作ってもイタ公が作っても
自動的に日本語対応になるんです。
あとは画面に表示されるメッセージを言語別に作成して、利用者の言語にあわせて切り替える仕組み
にしてやれば、マルチリンガルなアプリケーションの一丁あがり!ってワケです。
javaにはもともと、そういう仕組みが用意されてるので簡単です。
ところが、件のバカなイタ公は、文字列を一旦 UTF-8 にエンコードしてから表示しようとするんです。
もちろん文字化けします。バカなイタ公はなぜ文字化けするのか理解できないので
今度はそのUTF-8エンコードされた文字を、javaからWin32APIのWriteConsoleWに渡そうとします。
もちろん文字化けします。バカなイタ公はなぜ文字化けするのか理解できないので
今度はコンソールのコードページを無理やりUTF-8に変更するAPIを使いドツボにハマっています。
何もしなくていい、ただ System.out.println()関数でフツーに表示すればいい、ってのが理解できんのです。
アプリケーションをユニコード対応して国際化したい一心で一生懸命がんばってくれてるキモチはアリガタイwのですがw
ユニコードとUTF-8の違いが理解できてないため、まったくトンチンカンなプログラムコードを書いて投稿します。
このイタ公を何とかして退治したいです。イタ公の愚行をやめさせるナイスな文章を教えてください。
コミュニティは英語以外禁止なので英語で構いません。
0493デフォルトの名無しさん
2011/06/28(火) 10:55:38.82Unicodeの話は特にしてないと思うが
0494デフォルトの名無しさん
2011/06/28(火) 11:15:20.00CCSもエンコーディングもUCSも知りませーん、ていう。
0495デフォルトの名無しさん
2011/06/28(火) 11:16:29.63さらにライブラリ中でエラーが出ないようにforce_encodingしまくりで、カオス状態
0496デフォルトの名無しさん
2011/06/28(火) 11:17:47.17ファイルの文字コードがShift_JISで、取得するページがUTF-8だった場合
ファイルの文字コードがShift_JISで、取得するページがEUC-JPだった場合
ファイルの文字コードがShift_JISで、取得するページがShift_JISだった場合
ファイルの文字コードがEUC-JPで、取得するページがUTF-8だった場合
ファイルの文字コードがEUC-JPで、取得するページがEUC-JPだった場合
ファイルの文字コードがEUC-JPで、取得するページがShift_JISだった場合
ファイルの文字コードがUTF-8で、取得するページがUTF-8だった場合
ファイルの文字コードがUTF-8で、取得するページがEUC-JPだった場合
ファイルの文字コードがUTF-8で、取得するページがShift_JISだった場合
それぞれ先頭に「# coding: 各ファイルの文字コード」を入れる以外にどのようなことwおするべきですか?
0497デフォルトの名無しさん
2011/06/28(火) 11:18:34.96coding〜とか全部に書くの面倒なんだが
utf-8がデフォルトだと海外でひんしゅく買ったりするのだろうか
0498デフォルトの名無しさん
2011/06/28(火) 11:29:39.86>取得するページ
ネットワークのソケットの IO はローカルのファイルの IO とは違って
常に ASCII_8BIT 固定で取り込むのが普通なのでどうでもいい
取り込んだあとに普通に文字列として必要なだけ変換しろ
0499デフォルトの名無しさん
2011/06/28(火) 11:32:41.520500デフォルトの名無しさん
2011/06/28(火) 11:55:35.99そもそもなんか全然直感的じゃないよねあれ
0501デフォルトの名無しさん
2011/06/28(火) 12:00:44.73なぜ、HTMLのパースは一切必要ないのでしょうか?
スクレイピングで株のバックテストツールなどシストレに使おうともっています。
0502デフォルトの名無しさん
2011/06/28(火) 12:28:19.33> じゃばこの内部表現は16ビットで1文字(キリッの、ほら、なんつったっけ、であって
> UTF-8ではないよね。
重箱の隅だが最小単位が2オクテットってだけで
一文字が2オクテットというわけではないな。
0503デフォルトの名無しさん
2011/06/28(火) 12:31:50.18まあなんでCSIが下火になったかは
Rubyの惨状がわかりやすく示しているというか
0504デフォルトの名無しさん
2011/06/28(火) 12:57:06.102chはHTML読む必要ないからだろ
datとbbs.cgiとエラーのときの変なページだけ正規表現で読めればいいんだし
0505デフォルトの名無しさん
2011/06/28(火) 13:07:46.200506デフォルトの名無しさん
2011/06/28(火) 13:14:28.23uri-read とかいうライブラリ名で再出発するといいと思うよ
0507デフォルトの名無しさん
2011/06/28(火) 14:23:57.930508デフォルトの名無しさん
2011/06/28(火) 14:36:40.46Rubyについて Part 44
http://hibari.2ch.net/test/read.cgi/tech/1308977168/
0509デフォルトの名無しさん
2011/06/28(火) 15:08:35.47と、いうことにしたいのですね?
0510デフォルトの名無しさん
2011/06/28(火) 15:27:10.78流れにわざわざ逆らって案の定痛い目を見た
「お利口さん」に対する批判というか自虐レスなのでは
0511デフォルトの名無しさん
2011/06/28(火) 15:30:04.830512デフォルトの名無しさん
2011/06/28(火) 15:45:22.972chではということでしたか、ありがとうございます。
0513デフォルトの名無しさん
2011/06/28(火) 16:15:04.31MLでやれっていう
0514デフォルトの名無しさん
2011/06/28(火) 16:56:53.940515デフォルトの名無しさん
2011/06/28(火) 17:09:44.35過去CGIで無理しまくってたのが各技術に散逸したという経緯があって
それで流行を言うのもあれなのだが、とりあえず回答としては常にperl
Rubyは公開CGIとかはあんまり得意ではない
0516デフォルトの名無しさん
2011/06/28(火) 17:22:20.72「有料」なサーバで、できる限り多くの人にサービスを提供することが目的のCGIとかは効率あまりよくないわ
「それでもRubyで作ってあることに意味がある」という信念なり差し引きプラスの何かがあるのでない限り普通はお勧めしない
PHPとかで作っとけ
Rubyでの経験があれば、それなりなものが作れるはずだ
0517デフォルトの名無しさん
2011/06/28(火) 17:27:53.970518デフォルトの名無しさん
2011/06/28(火) 20:09:59.071.8用のコードをほぼ全滅させるような実装はなんとかして欲しい
force_encodingを書きまくらないと動かない
エンコーディングの判定なんてユーザーに任せればいいだろ
0519デフォルトの名無しさん
2011/06/28(火) 20:15:55.08エラー出る部分だけ対症療法するなら、エラーの数だけ書かなければならないがね
0520デフォルトの名無しさん
2011/06/28(火) 20:16:30.60PHPは強いし文字コードで悩むことがほぼない
0521デフォルトの名無しさん
2011/06/28(火) 20:26:09.571.8は適当でも動くので、逆にすると悲惨
0522デフォルトの名無しさん
2011/06/28(火) 20:29:54.610523デフォルトの名無しさん
2011/06/28(火) 20:31:59.180524デフォルトの名無しさん
2011/06/28(火) 20:35:05.660525デフォルトの名無しさん
2011/06/28(火) 20:36:28.450526デフォルトの名無しさん
2011/06/28(火) 20:52:01.050527デフォルトの名無しさん
2011/06/28(火) 20:55:55.350528デフォルトの名無しさん
2011/06/28(火) 21:01:10.130529デフォルトの名無しさん
2011/06/28(火) 21:05:05.32早く直しとかないと、アホみたいにASCII_8BIT多用するコードが増え続けるぞ
0530デフォルトの名無しさん
2011/06/28(火) 21:14:22.900531デフォルトの名無しさん
2011/06/28(火) 21:19:09.05チェックする必要のある人は結局そのためのコード書くわけだし
0532デフォルトの名無しさん
2011/06/28(火) 22:04:47.850533デフォルトの名無しさん
2011/06/28(火) 22:32:58.720534デフォルトの名無しさん
2011/06/28(火) 23:14:34.680535デフォルトの名無しさん
2011/06/28(火) 23:22:07.170536デフォルトの名無しさん
2011/06/28(火) 23:24:48.831.8.7でも別にいいよ
1.9が使われてるのでわけがわからなくて困った、というようなことになる可能性は、すくなくとも今年はゼロだろう
来年もたぶん無い
再来年は若干怪しいかもしれないが、1年も使ってたら自力で使いどころの判断くらいできるようになってるはず
0537デフォルトの名無しさん
2011/06/28(火) 23:32:20.370538デフォルトの名無しさん
2011/06/28(火) 23:32:30.401.9.xに関しては、必須も必死もいらない
ああ、公開ライブラリ作者にとっては(やっと)必須になってるんだが、まあその程度だ
ライブラリ公開できるようなときになってから、1週間くらいだーっと勉強すればいい
それ以前の中途半端なRuby知識で1.9対応を開始するとなんかもう果てしないドロ沼にハマるので注意
0539デフォルトの名無しさん
2011/06/28(火) 23:37:16.38force_encoding使いまくり
0540デフォルトの名無しさん
2011/06/28(火) 23:41:54.080541デフォルトの名無しさん
2011/06/28(火) 23:44:15.060542デフォルトの名無しさん
2011/06/28(火) 23:52:42.091.8 も 1.9 も変らん
0543デフォルトの名無しさん
2011/06/28(火) 23:58:06.780544デフォルトの名無しさん
2011/06/29(水) 00:08:47.770545デフォルトの名無しさん
2011/06/29(水) 00:09:28.960546デフォルトの名無しさん
2011/06/29(水) 00:15:57.72基本的にはそう
動作上も、バイナリそのままで単に名称を貼り変えるしかやることない
ただ…
ttp://www.google.com/search?q=%22force_encoding+Encoding%3A%3AASCII_8BIT%22
0547デフォルトの名無しさん
2011/06/29(水) 00:23:27.23その通りだが1.8以前に書かれたコードはそんな事は微塵も考えられていない
結果、エラーを出すところ全てでforce_encodingしまくるか、全て書き直すかの二択を迫られる
0548デフォルトの名無しさん
2011/06/29(水) 00:40:16.57業務で使うなら会社でレクチャーするでしょ?
0549デフォルトの名無しさん
2011/06/29(水) 00:48:19.851.8でも「間違ってる」んだけどな、本当は
たまたま動作してたに過ぎん
0550デフォルトの名無しさん
2011/06/29(水) 00:51:50.16常に文字コードを意識しろ
処理の都度かならずエンコードしろ
って言われても戸惑うだろうな
0551デフォルトの名無しさん
2011/06/29(水) 01:11:31.590552デフォルトの名無しさん
2011/06/29(水) 01:34:30.450553デフォルトの名無しさん
2011/06/29(水) 01:36:06.98残念ながら1.9自体がバグバグです
0554デフォルトの名無しさん
2011/06/29(水) 02:20:59.35外から内だけ意識すれば良いし
それら境界面をいじるような
ライブラリを用意する人達は
「わかってる」公算が高い。
今のRubyの場合ワーストケースだと
文字列を操作したり文字列を媒介して
自分が書いたわけではないRubyの
モジュールとやり取りする箇所全てで
境界面同様の意識をする必要があると。
そして文字列を読み書きするだけの
ライブラリ作者は先の人達に比べれば
「わかってない」公算が高い、と。
となればまあ、美しさを捨ててでも
内部コードを単一化を選んだ各種言語、
各種環境が多いのも当然だよね。
美しさより利用者への優しさを選んだってことで。
0555uy ◆hi.ht/Isu2
2011/06/29(水) 03:36:41.500556デフォルトの名無しさん
2011/06/29(水) 06:22:03.970557uy ◆hi.ht/Isu2
2011/06/29(水) 08:52:12.85module A
class << self
p nesting
end
module B
# p nesting # ←なんでnesting使えないの????????????????????????
end
end
require "ostruct"
a = OpenStruct.new({ :x => 4 })
a.define_singleton_method :ss do
p x # ローカル変数だか
p y # メンバ変数だか判断できないんですけどォ?????????
end
a.ss
0558デフォルトの名無しさん
2011/06/29(水) 09:05:24.010559デフォルトの名無しさん
2011/06/29(水) 09:27:17.830560デフォルトの名無しさん
2011/06/29(水) 09:38:31.670561デフォルトの名無しさん
2011/06/29(水) 10:42:57.67FUD なら黙れ
0562デフォルトの名無しさん
2011/06/29(水) 11:53:24.15下記のようなコマンドを展開しようとすると
% tar zxf ruby-dbi-all-0.0.19.tar.gz
’%’は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
とでてうまくいきません。これはLinuxとかのコマンドなのかなと想像していますが
winのコマンドプロプントの場合はどのように記入したらよいでしょうか?
0563デフォルトの名無しさん
2011/06/29(水) 12:00:09.20windows ruby-dbi でぐぐったほうがいいよ
0564デフォルトの名無しさん
2011/06/29(水) 12:12:01.46ありがとうございます。もう少しがんばってみます。
0565デフォルトの名無しさん
2011/06/29(水) 13:01:46.08そのファイルと同じディレクトリ内で入力するのは
tar zxf ruby-dbi-all-0.0.19.tar.gz
のみでおっけー。パーセント記号は不要
0566天使 ◆KOAgYBL/Xg
2011/06/29(水) 14:09:37.33a.reject! do|m|
m==3..m==8 # error
# !!(m==3..m==8)
end
p a
これで、 `block in <main>': bad value for range (ArgumentError)
ってエラーがでるんだけど、なんで?
!!(m==3..m==8) ← こうやってTRUEかFALSEにしておけば通るんだけどォ????
0567天使 ◆KOAgYBL/Xg
2011/06/29(水) 15:47:24.03puts :each1
a.each do |m| p m end # => [:x, 1] [:y, 55]
puts :each2
a.each do |k,v| print k," ",v,"\n" end # => x 1 y 55
puts :reject1
a.reject do |m| p m end # => :x :y # ← ッハァ!?
puts :reject2
a.reject do |k,v| print k," ",v,"\n" end # => x 1 y 55
どうして ↓ これで
a.reject do |m| p m end
# => [:x, 1] [:y, 55] こうなってくれないの????????
eachやmapだけが例外なのォ?
一瞬、このeachはCじゃないとかけないタイプのイテレータか???????って思ったけど
module Enumerable
def test &block
if block.arity == 1
for a in self do yield a end
else
for a,b in self do yield a,b end
end
end
end
a = { :x =>1 , :y => 55 }
a.test do |m| p m end
a.test do |m,n| p m,n end
普通にかけたんだけどォ??
0568天使 ◆KOAgYBL/Xg
2011/06/29(水) 16:32:55.12一応extendしたときにself.extendedはよばれるけど、所詮、特異メソッドだから
@k のスコープが違うんね、だから手動でinit用の関数呼ばなくちゃ
def b とかの中で使ってる @k の初期化が不可能なんですけどォ?????
つまり、
module A
@k = 22
class << self
include nesting[1]
end
def self.a
p @k # => 22
end
def b
p @k # => 44
end
def init
@k = 44
end
def self.extended mod
mod.init
end
Object.new.extend(self).b
self.a
end
puts
extend A
A.b # => 22
b # => 44
つまり、
moduleで @k とか使っていた場合、A.b と extend後の b で、動作変わっちまうってことなんですけどォーーー???????????w
0569天使 ◆KOAgYBL/Xg
2011/06/29(水) 16:55:26.86a = [ [33] , [44] ]
p a.map(&:push)
#p a.map(&:push , 8) # error # ← 引数渡せないのは仕方のないことなの?
というかなんで、Procにしているの? かっこつけないでシンボルにしたらいいのに
module Enumerable
def test *h
method( h.shift ).call *h
end
end
p a.test(:push,[55],5,55,5,5)
0570天使 ◆KOAgYBL/Xg
2011/06/29(水) 16:59:51.95module Enumerable
def test *h
self.map do |m|
m.method( h[0] ).call *h[1..-1]
end
end
end
0571デフォルトの名無しさん
2011/06/29(水) 17:04:35.240572デフォルトの名無しさん
2011/06/29(水) 20:33:18.57ありがとうございます。
とりあえずgemを通さずにダウンロードしたものから解凍して
dbiをインストールできました。
irb(main):001:0> require 'dbi'
=> true
となりましたが、その後 require'dbi' ファイルを実行すると
コンピュータにLIBMYSQL.dllがないため、プログラムを開始できません。
この問題を解決するには、プログラムを再インストールしてみてください。
と表示されます。自分のMYSQLが5.5なのが問題のようですが、みなさんは
rubyとDBはどんな組み合わせを使っていますでしょうか?
0573デフォルトの名無しさん
2011/06/29(水) 20:42:42.320574デフォルトの名無しさん
2011/06/29(水) 21:55:28.470575デフォルトの名無しさん
2011/06/29(水) 23:08:45.18WinからLinuxに環境を移行したいのですが
Linuxをやる上で覚えておいたほうが良い言語ってありますか?
0576デフォルトの名無しさん
2011/06/29(水) 23:11:10.98ありがとうございます。
SQLite使ってみます。
0577デフォルトの名無しさん
2011/06/29(水) 23:20:45.78Cとスクリプト言語ひとつ
あとなぜここで聞く
0578デフォルトの名無しさん
2011/06/29(水) 23:31:52.57ここのスレの先輩方はこの板で一番スキルがあると考えて聞いてしまいました
すいませんでした
0579デフォルトの名無しさん
2011/06/30(木) 00:47:42.75英語の方が役に立つ
0580uy
2011/06/30(木) 02:54:33.23何かひとつの言語をやり続ければある程度にはなる
処理系のソースからライブラリのソースまで全て読む
もっと上が良いなら好き嫌いせずにすべての言語でそれをやれ
0581デフォルトの名無しさん
2011/06/30(木) 12:24:34.44ダウンロードして
ruby setup.rb
してもエラーが出ます。gem -vで確認すると、ダウンロードしたものはバージョン1.8.5だったのに、何故か1.0.1と表示されます。
このまま
gem install twitter
としてもエラーが出ます
何故gemがインストールできないんでしょうか??
0582581
2011/06/30(木) 12:32:13.03ruby setup.rbした場合
./lib/rubygems.rb:334: warning: parenthesize argument(s) for future version
./lib/rubygems.rb:511: warning: parenthesize argument(s) for future version
./lib/rubygems/dependency_list.rb:8:in `require':
./lib/rubygems/deprecate.rb:53: syntax error, unexpected ',', expecting '|'
(SyntaxError)
... define_method name do |*args, &block| # TODO: really works ...
^
./lib/rubygems/deprecate.rb:54: syntax error, unexpected tCONSTANT,
expecting '}'
./lib/rubygems/deprecate.rb:63: syntax error, unexpected kEND, expecting '}'
./lib/rubygems/deprecate.rb:68: syntax error, unexpected kEND, expecting '}'
from ./lib/rubygems/dependency_list.rb:8
from ./lib/rubygems.rb:29:in `require'
from ./lib/rubygems.rb:29
from setup.rb:27:in `require'
from setup.rb:27
0583デフォルトの名無しさん
2011/06/30(木) 13:12:36.54gem update --system
でアップデートできるハズ
0584デフォルトの名無しさん
2011/06/30(木) 13:29:23.11確か初心者は1.9じゃない方がいいとあったので入れてないんですが、1.9にしないとダメですかね?
0585デフォルトの名無しさん
2011/06/30(木) 13:33:11.93botを作りすぎたから
0586デフォルトの名無しさん
2011/06/30(木) 20:35:54.78できなかった気がする。本家サイトにも 1.1 や 1.2 からのアップデートに不具合が
あると書いてあるし。自分は /usr/local/lib/ruby/ 以下にある gem 関係を手動で
削除してインストールしたけど、こればかりは環境によるだろうからお勧めできない。
0587デフォルトの名無しさん
2011/06/30(木) 21:22:19.75lib/rubygems.rb と lib/rubygems ディレクトリ、
あと /path/to/bin/gem …は平気か。
0588デフォルトの名無しさん
2011/06/30(木) 22:15:35.160589デフォルトの名無しさん
2011/07/01(金) 00:50:20.950590デフォルトの名無しさん
2011/07/01(金) 09:50:35.950591デフォルトの名無しさん
2011/07/01(金) 09:53:32.300592デフォルトの名無しさん
2011/07/01(金) 10:19:21.82Rubyで作るということそれそのものを目的にするのでない限り、他の手段をとったほうがいい
0593デフォルトの名無しさん
2011/07/01(金) 10:21:18.91ほらほらそんなこというとまた出てくるよ
0594デフォルトの名無しさん
2011/07/01(金) 10:56:28.04あれ、mod_rubyは使えないの?
使ったことはないけど、ドキュメントを読む限りではmod_perlと同じ様にできそうだったけど。
0595デフォルトの名無しさん
2011/07/01(金) 11:09:18.030596デフォルトの名無しさん
2011/07/01(金) 12:34:17.70お・し・え・て・ょ
0597デフォルトの名無しさん
2011/07/01(金) 12:39:38.46勢いが1月で終ってるから誰も来ないでしょ
きのこスレとか再利用すればいいよ
948 デフォルトの名無しさん [sage] 2011/07/01(金) 12:35:21.02 ID: Be:
つ 【オフサイドルール】プログラミング言語文法総合スレ【ダングリングエルス】
0598天使 ◆uL5esZLBSE
2011/07/01(金) 13:16:07.07やっぱりクッキー偽装しても書き込み秒数制限の壁に当たります
IPの仕組み的に考えるとやっぱりこれは1PCで荒らすのは困難なことのでしょうか?
0599デフォルトの名無しさん
2011/07/01(金) 13:24:03.650600tensi
2011/07/01(金) 13:53:24.290601デフォルトの名無しさん
2011/07/01(金) 13:54:08.60まー、Google SketchUpを使ってる人でこれ使いたい人ってことでかなり限られるとは思う
0602天使 ◆uL5esZLBSE
2011/07/01(金) 13:59:43.55ここまでかいたので、誰かマ板ム板の荒らしに役立ててください ぼくは忙しいのでもういかないといけません
どなたぼくの意思を受け継いでもらえると うれしいかぎりです ろくな技術的話題も展開せず2chにたむろしてるゴミグラマたちに 制裁を 制裁を 天は許しても俺は決してお前たちを許さない
require 'rubygems'
require 'mechanize'
require 'kconv'
require 'pp'
for i in 0...1
agent = Mechanize.new
uri = URI.parse("http://hibari.2ch.net/test/read.cgi/tech/1307845568/l5")
uri2 = URI.parse("http://hibari.2ch.net/")
agent.get(uri)
str = "PON=softbank127001001001.bbtec.net"
Mechanize::Cookie.parse(uri2, str){|c| agent.cookie_jar.add(uri, c)}
str = "HAP=FOXdayo53616c7465645f5fdefa1063f4b590c067e8f3fd221e3bc2e769268f80854ab4922fa1f60a6afddd2" +
"adcf2d018cec008177b9704cedd4d2572b79ae244c952b9d1db3a6ea323e1bb0676f649c68f67b6ced026e18acfcc"+
"608072782896e68c77a704b0850071f817b68e3b940576e00324e9a3a22b99243384adbec76fddd203b862612934cf"+
"bae4d7ebf686b3c84ffd7566ce20704469004110fe95ae782d0d"
Mechanize::Cookie.parse(uri2, str){|c| agent.cookie_jar.add(uri, c)}
agent.page.form_with(:name => nil) { |f|
f.field_with(:name => "FROM").value = "tensi"
f.field_with(:name => "MESSAGE").value = "si"
}.click_button
sleep 1
agent.page.form_with(:name => nil).click_button
end
0603デフォルトの名無しさん
2011/07/01(金) 15:50:05.43リスクが怖いからって人にやらせようとすんなよヘタレ
0604デフォルトの名無しさん
2011/07/01(金) 15:55:31.700605デフォルトの名無しさん
2011/07/01(金) 15:57:56.42APIなんだし、SketchUpを操作するんじゃね?
0606天使 ◆uL5esZLBSE
2011/07/01(金) 16:20:04.69ハァ?
どんな方法であれ他人のPCでやらせるのはあたりめーだろ
お前まさか アレ をやる時も自分PCから直接アクセスしてんの?wwwwwwwwwwwwップwwwwwwwwwwwwwwww
0607デフォルトの名無しさん
2011/07/01(金) 17:31:20.270608デフォルトの名無しさん
2011/07/01(金) 17:51:42.46> rake/rdoctask is deprecated. Use rdoc/task instead
という警告をなくしたいんだけど、よく考えたら rdoc/task があるかどうかはクライアントの Rake のバージョン依存なのよね
0609天使 ◆uL5esZLBSE
2011/07/01(金) 18:08:08.09こ れ す ら
出来ないんだな・・・・・・
a = `gem list rake`
a =~ /rake\s(.*)/
p $1.split(/,/)
0610デフォルトの名無しさん
2011/07/01(金) 18:20:03.15rake/rdoctask を require かなぁ?
0611デフォルトの名無しさん
2011/07/01(金) 18:32:01.170612デフォルトの名無しさん
2011/07/01(金) 18:35:20.38えー
まあ、今回はそれでもいいんですが、そうしようかなあ
バージョン依存で困ったら、またそのとき考えよう
0613デフォルトの名無しさん
2011/07/01(金) 18:47:48.67>よく考えたら rdoc/task があるかどうかは
RDoc gem がインストールされているかどうかだと思う
だから、今回は require で rescue するのが正しい
…のだが、改めて rake/rdoctask.rb を読むに、なんかとてもめんどくさいことになっている
Rails 厨向けの rake のバージョンを 0.8.x に下げろという台無しアドバイスは今回に限ってはわりと妥当だw
依存関係に RDoc を指定してしまうのが一番かもしれない
ユーザーにとっては迷惑だろうけど…
0614デフォルトの名無しさん
2011/07/02(土) 10:12:58.82どちらにせよ基地外なので同じでも違ってもどうでもいい
0615デフォルトの名無しさん
2011/07/02(土) 16:35:36.13rhtml や erb ファイルをステップ実行させながらデバッグできる
開発環境をご存じでしたら御教授下さい。
バックエンドの CGI に飛んでいる部分もありますが、
Rails は使用していません。
eclipse, NetBeans, Aptana Studio を試してみましたが、
うまく動かせませんでした。
(できればローカルの Apache Web Server 2.2 と連携させてデバッグ
させたいのですが、難しければデバッグ用に別のサーバを使う方法でも
構いません。)
よろしくお願いします。 m(_ _)m
0616デフォルトの名無しさん
2011/07/02(土) 20:48:06.360617デフォルトの名無しさん
2011/07/02(土) 21:02:59.870618デフォルトの名無しさん
2011/07/02(土) 21:26:08.360619デフォルトの名無しさん
2011/07/02(土) 21:40:48.782秒ごとにスクリプトを呼ぶようにOSのスケジューラに登録する
間隔が2.05秒になったら家族が殺されるとかいうような場合はRubyスクリプトを終了させずにsleepさせておく
なんか前にも言った気がする
0620デフォルトの名無しさん
2011/07/02(土) 21:53:55.800621デフォルトの名無しさん
2011/07/03(日) 00:07:08.200622デフォルトの名無しさん
2011/07/03(日) 05:08:23.97ブラウザ上の出力を止めて、ブラウザ上での送信を止めたいのだと思う
0623615
2011/07/03(日) 12:10:21.31rhtml や erb ファイルの代わりとなるドライバ CGI
ファイルを用意し、ARGV.replace(["val1=3&val2='hoge'])
などとして引数を渡すことでステップ実行させることにしました。
ありがとうございました。
0624デフォルトの名無しさん
2011/07/03(日) 15:34:47.401.9.2
1.9.3
の違いが良くわからん。
これらはどういう関係なの?
0625デフォルトの名無しさん
2011/07/03(日) 15:54:31.52って書いてないのか
誰だ削ったの
1.9 系列は「記述に1.8との互換性がないと断言できそうな新しいRuby」だ
1.9.0 が不安定な永遠の開発版で、1.9.1 以降が安定板
数字が新しいほど新しく、現在は 1.9.2 が最新
1.9.3 は公開目指して調整中
1.8.x は旧系列で、1.8.6 が昔の安定板
これ以前のものは現在の不安定版に相当するので現在は使ってはいけないおい聞いてるかCentOS
1.9 のいくつかの便利で無難なメソッドを輸入した 1.8.7 が現在の 1.8 系列の最新版
完全初心者が 1.8.7 と 1.9.2 のどちらを最初に使うべきかというのは議論中だが(結論出る前に1.9が一般化してうやむやになる予定)、
とりあえず 1.8.7 ならあらゆるものがエラーなしに動くと思われる
0626デフォルトの名無しさん
2011/07/03(日) 16:05:04.131.9.1、1.9.2、1.9.3は新しいか古いかの違いだと読み取れるけど、
それじゃあ、1.9.1と1.9.2にそれぞれパッチを当ててリリースしてるのはどうして?
何か機能的に違いがあるってことじゃないの?
0627大天使 ◆uL5esZLBSE
2011/07/03(日) 16:16:05.55index.htmlは動いたけどindex.cgiは動かなかった
しかもこれ、ディレクトリ名にマルチバイトがはいっていたら動かないのではなく
トップディレクトリがマルチバイト文字だと動かないらしい
下にsabaとかフォルダ作ればその上にあるのがマルチバイト文字のフォルダでも動く
Rubyってマルチバイト弱すぎだろ
それに何かインストールさせたい時にもディレクトリにマルチバイト混ざっていると動かないしさ
それってつまりFirefoxなんかの"デフォルト"のダウンロードしたファイルを保存する"ダウンロード"っていう名前のディレクトリに保存された
Rubyのライブラリや、Ruby本体のインストーラーが、ダブルクリックでは動かないって事だぞ
処理系内部で自動識別はいつになったらやるようになるの?
0628デフォルトの名無しさん
2011/07/03(日) 16:26:00.200629デフォルトの名無しさん
2011/07/03(日) 16:33:00.140630デフォルトの名無しさん
2011/07/03(日) 16:36:47.53あるよ
1.9.0 というベースがあって、それが最初に固まったのが 1.9.1 で、1.9.2 が出た現在、これはバグフィックスだけが行なわれる
バージョンの後ろの p123 みたいな数字がパッチレベルで、これが大きいほど修正が施されてて新しくて安全
1.9.1 相当に細かい新機能というかあればよかった系の新メソッドをどさっと加えた状態で公開されたのが 1.9.2
1.9.3 は 1.9.2 相当に新機能足したものになる予定
だから「1.9.1 では動作したけど 1.9.2 では動作しない」というのは全くないというわけではない
…いや、はっきり言うと、1.9.2 はカレントディレクトリを LOAD_PATH に含まなくなったので非互換どころではなかったw
1.9.2 の動作のほうが「正しい」んだけど、こんな途中でするような手術ではないっていうか 1.9.1 でやっとけよみたいな
1.9.1 や 1.9.2 のバグ修正パッチサポートがいつまで続くのかは知らない
どっかに書いてあるとは思うんだけど…
0631デフォルトの名無しさん
2011/07/03(日) 17:18:46.54正式版扱いになったのっていつ頃だっけ、その頃1.8と1.9ってバージョンいくつだったんだろ?
0632デフォルトの名無しさん
2011/07/03(日) 17:35:49.021.8系列の安定板は1.8.6から
0633デフォルトの名無しさん
2011/07/03(日) 17:48:06.46んじゃあ真ん中の番号を偶数奇数で開発安定ってのをやめたのいつ頃だったっけ?
0634デフォルトの名無しさん
2011/07/03(日) 18:00:34.69本当は 1.9.1 は 1.9 系列つまり開発版の第 1リリースになるはずだった
でもそうすると 1.9 系列をもとにした安定版は 2.0 ということになってしまう
Ruby 2.0 という名称をまだ使いたくなかったので、1.9.0 を永遠の開発版にしたわけ
いきなりここでバージョン番号規則が捻じ曲がったから、当時はけっこう混乱した
まあ、今みたいに普及してしまえばどうということもないのだけど
1.8.8 が出たら 1.9.0 と近くなりすぎてめんどくさいことになるかもしれない
1.9.0 はそのへんに落ちてないから、問題は起こらないとは思うけどさ
0635デフォルトの名無しさん
2011/07/03(日) 18:21:37.820636デフォルトの名無しさん
2011/07/03(日) 18:30:56.70なんか何故か世の中には頑なに文字列(しかも1文字)のサンプルが氾濫してるんだが
ということで split(/\\/)
0637デフォルトの名無しさん
2011/07/03(日) 18:41:10.23split('¥') が正解
0638デフォルトの名無しさん
2011/07/03(日) 18:50:51.54うむ、間違いではないな
間違いではないのだが…
ふつーのバックスラッシュで分割したいなら>>636
特定文字の円記号で分割したいなら>>637
0640デフォルトの名無しさん
2011/07/03(日) 19:00:53.14→ U+005C REVERSE SOLIDUS
円記号
→ U+00A5 YEN SIGN
0641デフォルトの名無しさん
2011/07/03(日) 22:37:57.86ありがと
0642大天使 ◆uL5esZLBSE
2011/07/04(月) 03:47:38.86はぁ?
これ す ら わからないときたか
>>629
他アプリの初期設定で動くようにしてない時点でゴミなわけだけど
しかもそれがマイナーブラウザならまだしもFirefox
0643デフォルトの名無しさん
2011/07/04(月) 05:46:24.850644デフォルトの名無しさん
2011/07/04(月) 05:59:26.55そういう話はしてない
¥の「半角」に相当するものがなにかという話だ
yen sign でよかろう
そして、たぶんそれは間違ってる
0645大天使 ◆uL5esZLBSE
2011/07/04(月) 06:26:52.19画像だよ結局、画像
splitが正規表現も使えるかどうかなんて、経験則
他のsubやgsub,scanも同じ事情なんだし、アホじゃなければそのうち気づくだろ
個人的には、それらの関数が//のかわりにStringでいいにもかかわらず
"aaa" =~ "a" これが通らないのが変だとは思ってる
0646デフォルトの名無しさん
2011/07/04(月) 07:32:14.36> 三年に渡るご愛顧ありがとうございました、1.8.7 はもうちょっとだけ続きます。
1.8.7っていつまでメンテされるの?
社内で使う場合にサポート期間とかを書かないと駄目なんでソースがあると嬉しいんですけど…。
0647デフォルトの名無しさん
2011/07/04(月) 07:48:42.68実際のメンテナンスサイクル期間についての言及はなかったと思う
ゆぐいの記録するところによれば
ttp://yugui.jp/articles/801
> 2本のteenyブランチがメンテナンスされる。
> 今は1.8.6と1.8.7がメンテナンスされている。
> 1.8.5はもう放棄される予定だ。1.8.8が出たら、1.8.6はじきに放棄される。
ということなんだけど、1.8.6 はREEでしばらく継続サポートされるはず
めんどくさいことになってるな
0648デフォルトの名無しさん
2011/07/04(月) 08:09:45.22変えたってことがわかるようにバージョン番号だけじゃなくて、
コードネームも付けとく方が色々と良いことがわかったぬ。
島根の神々シリーズつけようぜ!
http://www.shimane-shinwa.jp/person/genealogy.php
イザナミ
イザナキ
スサノオ
ユクヨミ
アマテラス
かっけぇ!
0649デフォルトの名無しさん
2011/07/04(月) 11:25:10.52その情報はかなり古い。MLを見ている感じだと、
☆1.8.6は事実上死んでいる
☆1.8.7は多分あと1年くらい
☆1.8.8はリソース不足で出せなそう
なので公式サポートはあと1年と見積もってる。
まあ正式発表はRubyKaigiで出ると思う。
ただし公式より頼りになるREEサポートはまだ続く。
1.8にしがみつきたい人はREE買えってことになると思う。
0650デフォルトの名無しさん
2011/07/04(月) 11:54:11.04嫌いじゃ無い。
中二病くささがたまらんな。
0651デフォルトの名無しさん
2011/07/04(月) 12:06:29.281.8.8 は誰も求めていないし1.9への移行の妨げにもなったりいろいろ
リソース不足ではなく開発者が1.8.8に興味ないから誰も触らない
http://redmine.ruby-lang.org/issues/4239#note-103
http://redmine.ruby-lang.org/issues/4207#note-20
0652大天使 ◆uL5esZLBSE
2011/07/04(月) 13:48:13.31firefoxの2chの忍法帖クッキーは
C:\Documents and Settings\uyuy\Application Data\Mozilla\Firefox\Profiles\i2ip2n78.defaultここで
s = open("./cookies.sqlite" , "r").read
p s.size
n = s.index'FOXdayo'
p n
p "HAP=" + s[ n ... n+327]
こうしたら取得できたんですけど、IEのクッキーが保存されていると思わしき
C:\Documents and Settings\uyuy\Local Settings\Temporary Internet Files
ここのフォルダのファイルはなにやら特殊な感じで検索しようにも上手くファイルオープンもコピーも出来ません
IEのクッキーから2chの忍法帖のクッキーを取り出すにはどうしたらいいですか?
0653大天使 ◆uL5esZLBSE
2011/07/04(月) 14:02:09.650654デフォルトの名無しさん
2011/07/04(月) 14:05:02.53実際問題として、1.8.7をメンテナンスしていったほうがいいと思う
1.8.6と1.8.7の問題が1.8.6と1.8.7と1.8.8の問題に増えるだけで、誰も喜ばない
0655デフォルトの名無しさん
2011/07/04(月) 14:29:03.35唯一興味を持っていた1.8.8メンテナの武者さんに時間の余裕がないという話なので。
資金のないOSSでは興味ある人がいないのとリソース不足はほぼ同義だよ。
0656大天使 ◆uL5esZLBSE
2011/07/04(月) 15:00:46.040657デフォルトの名無しさん
2011/07/04(月) 15:26:23.361.8.8を作るメリットもないですしねえ
1.8の未来についてRubyKaigiで語られる可能性も(1日目のアナウンス枠で)あるみたいだしそこでいろいろ聞けるかもしれないですね
[ruby-dev:44027]
0658デフォルトの名無しさん
2011/07/04(月) 15:40:49.400659大天使 ◆uL5esZLBSE
2011/07/04(月) 15:45:37.56RoRは言語じゃなくて
rubyインストール後に
gem install rails とかやるとインストールできるRubyのとあるライブラリのいんでっくす
0660デフォルトの名無しさん
2011/07/04(月) 19:24:17.28誰かが何処かで書いてたな...
0661デフォルトの名無しさん
2011/07/04(月) 20:42:49.47ライブラリのインデックスじゃなくてWebアプリケーションフレームワークだろ
複数インストールされるのはただ部品を分けてるだけ
0662デフォルトの名無しさん
2011/07/04(月) 20:56:09.38枕詞みたいなものなんだろう
とある→インデックス(とある魔術のインデックスってアニメがある)
知らない人は混乱しても仕方ないね
0663デフォルトの名無しさん
2011/07/04(月) 21:03:49.20この回答を書きたいがための質問のようにも見えちゃうね
0664デフォルトの名無しさん
2011/07/04(月) 22:41:58.46禁書目録ネタか たしかにそうか
0665デフォルトの名無しさん
2011/07/04(月) 22:50:42.11言語訓練のために使用しているハンドルです。
アイと研究員とのやり取りに利用する書き込みなので、
関係者以外はレスしないで下さい。
京都大学霊長類研究所
0666デフォルトの名無しさん
2011/07/04(月) 23:36:18.030667デフォルトの名無しさん
2011/07/05(火) 00:33:12.450668デフォルトの名無しさん
2011/07/05(火) 01:01:29.85[1,2,3].zip([1,4,9]).map{|a,b| a*b}
と書く以外に何かスマートな方法はあるでしょうか。
[1,2,3]と[1,4,9]が意味的に対等だったりするとなんとなくしっくりこないんです…
map((lambda x, y: x*y), (1,2,3), (1,4,9))
というふうに並べて書けたりはしないでしょうか。
0669デフォルトの名無しさん
2011/07/05(火) 01:26:05.97irb> require 'rubygems'; require 'narray'
irb> p (NArray[1,2,3] * NArray[1,4,9]).to_a
[1, 8, 27]
こうでいっすか
0670デフォルトの名無しさん
2011/07/05(火) 01:34:13.40transpose 長いな、転置。
0671デフォルトの名無しさん
2011/07/05(火) 01:34:55.530672デフォルトの名無しさん
2011/07/05(火) 01:39:34.140673デフォルトの名無しさん
2011/07/05(火) 01:39:59.130674デフォルトの名無しさん
2011/07/05(火) 01:45:19.060675デフォルトの名無しさん
2011/07/05(火) 01:48:04.40まあzipで中間配列作るのでいいやとか思ってる
0676デフォルトの名無しさん
2011/07/05(火) 01:56:11.51["a1", "b2", "c3"]
ぬう…
0677デフォルトの名無しさん
2011/07/05(火) 02:00:37.99ありがとうございます。基礎RubyonRailsという本を買いデータベースと接続の仕方などを
勉強しようとしましたが、webアプリケーション作りの本で何か自分の作りたいものと違うきがしたので
RonRはいったん中断しました。
Rubyで下記のようなwebからスクレイピングした、数字などの羅列データを
dbiを使ってMYSQLに記録してくプログラムを作りたいと考えています。
現状で自分にできることはwebからのスクレイピングと
rubyでDB(MYSQL)に接続して、外部ファイルからのデータの記録ですが
スクレイピングした数字や文字をどうやって、MYSQLに落とし込むかで
行き詰っています。先に進むためのヒントや解決策などはありませんでしょうか?
よろしくお願いします。
2011年07月04日
137
135
137
135
114,958,200
137
2011年07月01日
133
133
134
132
107,426,900
133
0678デフォルトの名無しさん
2011/07/05(火) 02:25:26.410679デフォルトの名無しさん
2011/07/05(火) 02:29:17.940680デフォルトの名無しさん
2011/07/05(火) 02:30:49.66スクレイピングしたネタを一旦外部ファイルに書き込んでみれば?
0681デフォルトの名無しさん
2011/07/05(火) 02:37:10.14=> "abc\ndef"
irb(main):002:0> a =~ /c\Z/
=> nil
irb(main):003:0> a =~ /c$/
=> 2
irb(main):004:0> a =~ /f\Z/
=> 6
irb(main):005:0> a =~ /f$/
=> 6
0682デフォルトの名無しさん
2011/07/05(火) 02:56:14.37ありがとうございます。なんとなくやり方がわかったきがしました。
・スクレイピングして取得したものを一度テキストファイルに出力
・そのテキストファイルを、rubyでSQLのINSERT文に加工
・その後、rubyで加工したファイルをMYSQLに記録
全部を一回のプログラミングでやろうと考えていて、取得した文字や数字を
どうSQL文の形に変換すればよいのかわからず行き詰っていました。
まだ当分かかりそうですが、段階にわけてMYSQLニ落とし込んでみます。
0683デフォルトの名無しさん
2011/07/05(火) 03:39:52.680684デフォルトの名無しさん
2011/07/05(火) 04:10:54.22まだ、スクレイピングで取得したものを外部ファイルにする方法がわからず
たのしいRuby片手に悪戦苦闘しています。そういえばMYSQLは.sqlファイル
でした、全然わからないことが多すぎて質問もとかもトンチンカンで申し訳ないです。
0685デフォルトの名無しさん
2011/07/05(火) 07:04:53.51多いんじゃなくて一人
0686デフォルトの名無しさん
2011/07/05(火) 07:29:38.09izanami
izanaki
susano
yukuyomi
amateras
いけるな
0687デフォルトの名無しさん
2011/07/05(火) 09:17:57.23RubyでスクレイピングしてるならそれをそのままSQLにすればよくない?
0688デフォルトの名無しさん
2011/07/05(火) 18:42:35.010689デフォルトの名無しさん
2011/07/05(火) 21:30:09.23たのしいルビーでテキストファイルなどを読み込んだりしていたので、
テキストファイルなら簡単にできそうなきがしたもので書いてしまいましたが
SQLファイルで出したほうがよさそうですね。ありがとうございます。
0690デフォルトの名無しさん
2011/07/06(水) 10:18:28.380691デフォルトの名無しさん
2011/07/06(水) 10:24:19.82PStoreやYAMLで間に合わないか検討してからのほうがいいと思うよ
0692デフォルトの名無しさん
2011/07/06(水) 12:53:17.620693デフォルトの名無しさん
2011/07/06(水) 13:38:11.16一度人間の目を通してから保存したいときに使える形式ない?
0694デフォルトの名無しさん
2011/07/06(水) 13:45:10.87テキストで処理したならそのまんまテキストでいいだろと思うのだが
0695デフォルトの名無しさん
2011/07/06(水) 13:51:11.381エントリ1ファイルってことか?
0696デフォルトの名無しさん
2011/07/06(水) 14:05:30.48YAMLは標準ライブラリyamlをrequireしてHash#to_yamlでYAML化された文字列がとれる
0697デフォルトの名無しさん
2011/07/06(水) 14:30:36.91irb> p YAML.load(YAML.dump("1\n \n2"))
"1\n\n2"
プッ
ちなみに Ruby 1.9.2 の psych では直ってる(というか、挙動が変更されてる)が Ruby 1.9.2 自体の再コンパイルが必要
0698デフォルトの名無しさん
2011/07/06(水) 14:38:02.02テキストファイルに書き出してエディタとかで読んだほうがたぶんマシ
データ取得&整頓&書き出しのフェイズと目視確認後のファイル読み込み&データ適用のフェイズを分けておけばいい
変更点が多くて目視だとウォーリーを探せない状態なら整頓前後で外部 diff でもかけと毛
0699デフォルトの名無しさん
2011/07/06(水) 14:52:10.93配列を保ったまま
人間が読めるテキストのようなものにしてあとで復元するのは意外とめんどくさい
Hash だとかなりめんどくさい
YAML が候補ではあるが、>>697のように改行とか微妙だし、
irb1.8> puts YAML.dump(["YAML", "まじ", "うんこ"])
---
- YAML
- !binary |
44G+44GY
- !binary |
44GG44KT44GT
という感じで dump した日本語が人間には読めない(バイナリ扱いなだけで、load で読むことはできる)
yaml ではなく ya2yaml を使うと日本語にはなるけど、あれってネストとかできたっけ
0700デフォルトの名無しさん
2011/07/06(水) 15:50:26.56それだとちゃんと
---
- YAML
- まじ
- うんこ
になる
1.9.2の段階だと
---
- YAML
- "\xE3\x81\xBE\xE3\x81\x98"
- "\xE3\x81\x86\xE3\x82\x93\xE3\x81\x93"
になる
0701デフォルトの名無しさん
2011/07/06(水) 15:52:54.94に追記だがlibyamlがありpsychがインストールされていないとダメかもしれん
0702デフォルトの名無しさん
2011/07/06(水) 15:58:56.990703デフォルトの名無しさん
2011/07/06(水) 16:11:36.87ああ、それ psych の機能
$ ruby -ryaml -e "puts YAML.dump(['日本語'])"
---
- "\xE6\x97\xA5\xE6\x9C\xAC\xE8\xAA\x9E"
$ ruby -rpsych -ryaml -e "puts YAML.dump(['日本語'])"
---
- 日本語
0704デフォルトの名無しさん
2011/07/06(水) 23:54:14.24@@s = "Hello"
def self.method1
@@s
end
end
この@@ってなんですか?
0705デフォルトの名無しさん
2011/07/07(木) 00:04:34.05クラス変数
今はもうあんまり新規では使用されないので、忘れちゃってもいいぞ
0706デフォルトの名無しさん
2011/07/07(木) 00:52:48.61クラス変数はなぜ今は使用されないのですか?
代わりとなる機能があるからですか?
0707デフォルトの名無しさん
2011/07/07(木) 08:34:00.25後からpsychがデフォルトになってlibyamlが無いとダメだという事に気づいた
1.9.3 は確かpsychがデフォルト
0708デフォルトの名無しさん
2011/07/07(木) 09:09:54.85確か安定版では 1.4 か 1.6 だったかで入った新機能。
クラスをシングルトン的に使う時に使う(Javaのクラス変数とかみたいに)ものだけど、
Rubyのクラス変数は継承しているクラス全部からいじれるとか癖のある副作用が
大きいので、そういう設計はしないのが普通ということになっている。
0709デフォルトの名無しさん
2011/07/07(木) 09:23:16.84ありがとうございます
とりあえず気にしないでおこうと思います
0710デフォルトの名無しさん
2011/07/07(木) 15:11:59.31典型的な使いどころはあるのでしょうか?
privateはそのクラス内でのみ使う時に何となく利用してますが
サブクラスに継承されてしまうので、こちらもちゃんと使えているのか不安です。
rubyのアクセス修飾子は少しクセがあるように思うのですが私の思い違いですかね?
0711デフォルトの名無しさん
2011/07/07(木) 15:15:52.170712デフォルトの名無しさん
2011/07/07(木) 15:22:20.06private はレシーバつきで呼ばれたときにエラーを返すようにする効果をもつ
アクセス制御でも可視性の設定でもない
「あいやーこのメソッドはレシーバつきで書いちゃダメなのね」
とユーザーに実感させる御利益しかない
ぶっちゃけ全部 public でも構わないぞ
「このメソッドは内部用だから外から使って欲しくないなあ」という場合はメソッドの def の行に :nodoc: って書いとけ
0713デフォルトの名無しさん
2011/07/07(木) 15:35:20.56俗に「クラスインスタンス変数」と呼ばれる概念がある
他の言語にはオフィシャルであったはずなんだけど、Ruby の公式には存在しない
class C
@var = 1
class << self
attr_accessor :var
end
def disp
self.class.var
end
end
p C.var #=> 1
p C.new.disp #=> 1
C.var = 2
p C.var #=> 2
これは「くらすたんいのへんすう」を提供できてなおかつ継承で流用されないというメリットがあるんだが、継承で初期値がセットされないという欠点もある
class D < C
end
C.var = 2
p D.var #=> nil
0714デフォルトの名無しさん
2011/07/07(木) 15:38:26.34PHPだと
class Abc
{
public $str;
public $num = 1234;
public function a(){echo 1;}
private function b(){return 1000000;}
protected function c(){echo 3;}
public static function d(){echo 11111111111;}
public function e(){echo $this->b();}
}
0715デフォルトの名無しさん
2011/07/07(木) 15:40:26.29継承でなんとかしてもらう方法
C.inherited は C が継承されたときに呼ばれることになっているこっそりメソッド
class C
@var = 1
class << self
attr_accessor :var
def inherited(klass)
klass.var ||= var
super
end
end
def disp
self.class.var
end
end
class E < C
end
p E.var #=> 1
0716デフォルトの名無しさん
2011/07/07(木) 15:42:10.01private と protected はそもそも再現不可能
public も動作違うんじゃないかな
0717大天使 ◆uL5esZLBSE
2011/07/07(木) 15:51:47.67class Abc
attr_accessor :str
attr_accessor :num
def initialize
@num = 1234
end
def a ; p 1 end
private
def b ; 1000000 end
protected
def self.c ; p 3 end
public
def d ; p 11111111111 end
def e ; p self.b end
end
0718デフォルトの名無しさん
2011/07/07(木) 15:58:46.870719デフォルトの名無しさん
2011/07/07(木) 16:08:17.37本当に読んだなら、この文脈でそんなことは言えないと思うの
0720大天使 ◆uL5esZLBSE
2011/07/07(木) 16:32:38.64だって、ソースコードのメタ出力でしょあれ
どこに読む価値があるのか、ファイル名で教えて欲しい
0721デフォルトの名無しさん
2011/07/07(木) 18:57:54.07デバッグについて調べようと思ったんですが本屋でいくらか手に取ってみても
書いてある本がありません
おすすめの本とかサイトとかあれば教えてください
0722デフォルトの名無しさん
2011/07/07(木) 20:05:33.35比較処理を実装するときに他インスタンス(自クラスorサブクラス)の非公開プロパティ
に対するアクセサが欲しくなったときに使ったくらいだな。
Rails症候群の研究 前田修吾
症例1(Case #1)
http://shugo.net/tmp/rails-syndrome.pdf
あなたの Ruby コードを添削します 青木峰郎
「可視性」
http://jp.rubyist.net/magazine/?0010-CodeReview#l20
「protected」
http://jp.rubyist.net/magazine/?0013-CodeReview#l34
「Ruby の protected は Java や C++ の protected ではない」
http://jp.rubyist.net/magazine/?0017-CodeReview#l5
0723デフォルトの名無しさん
2011/07/07(木) 20:17:22.64protectedという文字が書かれているのは確かにたくさん見たが、
それが妥当なprotectedだったという例はあまり見たことがない
別にこれprivateでもいいだろ、というものばかり
というか、ぶっちゃけ、Rails書いた人はC++あたりの知識で勘違いしたまま書いてたんじゃないかと思う
怖くて変更できないし動いてるからそのまんまになってるだけだと思うなあ
>>721
Rubyはあんまりデバッガデバッガした環境が揃ってないんだよね
0724デフォルトの名無しさん
2011/07/07(木) 21:05:14.64って意味を込めてprotectedにするのは駄目なのか?
0725デフォルトの名無しさん
2011/07/07(木) 21:46:16.26入門者がGUIでステップ実行、となればeclipseとかNetBeans使うしかない気がする
0726デフォルトの名無しさん
2011/07/07(木) 21:55:14.66自己満足でいいならご自由に。
0727大天使 ◆uL5esZLBSE
2011/07/07(木) 22:22:11.60人はon(public)かoff(private)しか覚えられない
>>722の一番したのやつも、無理やり使用例作ってるけど
どうせ別の方法なんていくらでもあるんだろ
0728デフォルトの名無しさん
2011/07/07(木) 23:10:04.23722みたいに、Ruby界隈にはアホが多い
0729デフォルトの名無しさん
2011/07/07(木) 23:13:10.79名前はこの際二の次
protectedの動作が必要かというと、別に必要ではない
0730デフォルトの名無しさん
2011/07/07(木) 23:14:01.250731デフォルトの名無しさん
2011/07/07(木) 23:19:59.04あのまま大きな変更されてたら、private推進派は困ったろうな。
privateの動作じゃないところもprivateにしてるから
0732デフォルトの名無しさん
2011/07/07(木) 23:23:04.52実際の動作とは違う意味を持たせたいならそのようにコメントに書いとけ
protected と書かれた場合、それは protected としてのみ動作する
あたりまえ
0733デフォルトの名無しさん
2011/07/07(木) 23:31:44.45ちゃんと意味を考えてprivateとprotected使い分けてるよ。
active_record/base.rb辺りのソース読めば分かるんじゃないかな。
0734デフォルトの名無しさん
2011/07/07(木) 23:40:14.640735デフォルトの名無しさん
2011/07/07(木) 23:42:44.420736デフォルトの名無しさん
2011/07/07(木) 23:45:51.35継承はほとんどの場合必要ないよ
Mixinがあるもの
Mixinがないような言語での話はしてない
0737デフォルトの名無しさん
2011/07/07(木) 23:47:58.37他の言語では継承していたからといって、Ruby でも継承しなければならないということにはならない
その程度
0738デフォルトの名無しさん
2011/07/08(金) 00:03:51.99そうですか
他の言語も視野に入れてもう少し検討してみます
0739デフォルトの名無しさん
2011/07/08(金) 00:12:45.870740uy ◆uL5esZLBSE
2011/07/08(金) 00:15:39.340741uy ◆uL5esZLBSE
2011/07/08(金) 00:21:31.67module A
class << self < Hash
p self
def a
p 4
end
end
end
nil.a # => 4 wwwwwwwww
0742デフォルトの名無しさん
2011/07/08(金) 00:22:35.89こういう馬鹿に毒されてるやつが多いから、どうしょもねーなーって思う
0743デフォルトの名無しさん
2011/07/08(金) 00:33:51.21・型を揃えることでポリモーフィズムを実現する
・実装を共有する
前者はRubyでは必要ない
後者はmixinでもできるというだけであって、継承を使わない理由にはならない
もちろんOOPにおける継承は、最も強力で使いづらい機構とされているから
委譲が使えないか考える、といった一般的な指針は
考慮したほうがいいのだろう
0744デフォルトの名無しさん
2011/07/08(金) 00:39:46.43あいつらの理想に通りにライブラリ作っても、使いづらくて普及しないし
0745デフォルトの名無しさん
2011/07/08(金) 00:50:16.07わざわざ言語に組み込むような機能じゃないわ。
0746デフォルトの名無しさん
2011/07/08(金) 00:52:17.45継承使うべきケースを一つでも提案してくれよマジで
0747デフォルトの名無しさん
2011/07/08(金) 00:53:59.350748デフォルトの名無しさん
2011/07/08(金) 00:58:11.98奴らはMix-inでも出来るというどうでもいい理由で継承使わないだけだから無視してかまわない
0749デフォルトの名無しさん
2011/07/08(金) 01:00:21.83普通に考えて超〜めんどくさくね?
0750デフォルトの名無しさん
2011/07/08(金) 01:03:30.990751デフォルトの名無しさん
2011/07/08(金) 01:07:32.83ポイントなのであって、mixinしか使わないのであれば
C++/Eiffelに逆戻りしてしまうだろう
0752デフォルトの名無しさん
2011/07/08(金) 01:09:34.92しょうもない実装にされたのを目撃したことがあります
0753デフォルトの名無しさん
2011/07/08(金) 01:26:22.580754デフォルトの名無しさん
2011/07/08(金) 01:56:03.00"aaa\n"
"bbb\n"
"ccc\n"
このようなaというファイルを下記のような配列に変換したいのですが
a.split("\n")とやってもうまくいきません。
["aaa","bbb","ccc" ]
このような配列にするにはどのようにしたらよいでしょうか?
0755デフォルトの名無しさん
2011/07/08(金) 02:23:34.470756デフォルトの名無しさん
2011/07/08(金) 02:40:47.310757デフォルトの名無しさん
2011/07/08(金) 02:42:26.51プロテクテッド→ガードが固いイメージ
パブリック→スポーツ感覚でパコパコしてそう
0758デフォルトの名無しさん
2011/07/08(金) 03:06:48.73Rubyコミッタの質の低さは有名だが、それ以前の問題だなこりゃ。
日本発だのとチンケな意地を張ってないでRailsチームにRubyの開発も丸投げすりゃいいんだよ。
0759デフォルトの名無しさん
2011/07/08(金) 03:11:11.290760デフォルトの名無しさん
2011/07/08(金) 06:02:10.09>>711
そもそも彼らは Java や C++ 「でそうであるから Ruby でも盲目で使っている」に過ぎない
Ruby での動作をきちんと吟味しているとは到底思えない、吟味してたらあんな変なもの絶対使わんw
…まあ、あの、あれだ、クラスメソッドを Hoge::mes と書ける、みたいに
既存の言語の真似をしてお客を呼ぼうということをしてた時期があって、
この private と protected はその太古の名残の遺跡のようなもんなのだ
Ruby 1.9 で消えるか「きちんと」実装されるかしてもよかったとは思ってはいる
なんか勘違いしてる人がいるんだが、使うなと言っている人はいわゆる「実装が糞」だから使うなと言ってるんだぞ
0761デフォルトの名無しさん
2011/07/08(金) 06:33:53.19べ、別にあんたなんかの為に作ったんじゃないからねっ!
0762デフォルトの名無しさん
2011/07/08(金) 06:42:23.82いちばん簡単なのは、ファイル内容すべてを文字列として読み込んでしまってから文字列操作すること
str = File.open('a.txt', 'rb'){|f| f.read}
arr = str.split
p arr # => ["aaa", "bbb", "ccc"]
簡単で単純、問題は a.txt がべらぼうに大きかった場合はメモリを一瞬占有しまくること
File.foreach や File#each_line を使うこともできる
arr = []
File.foreach('a.txt'){|line| arr << line.chomp}
p arr
か
arr = []
File.open('a.txt', 'rb'){|f|
f.each_line{|line| arr << line.chomp}
}
p arr
1行ずつ読んでいちいち捨ててるのでメモリの増大はそうそう起きないが(GCのタイミング依存なので保証はできない)、
微妙に記述が多く、IO の性格上どうしても改行ごと持ってくるので String#chomp がどうしても必要
似たような見かけの readlines は全部読んでから配列に split してるだけなので御利益がなにもない
0763デフォルトの名無しさん
2011/07/08(金) 06:54:48.180764デフォルトの名無しさん
2011/07/08(金) 08:29:24.21>>762
File.read("a.text").split(/\r?\n/) でおk
File.readはファイルの中身を全部読み込んでクローズした後ファイルの中身の文字列を返す.
String#splitで文字を正規表現もしくは文字列で配列に分割
0765デフォルトの名無しさん
2011/07/08(金) 08:35:59.67File.read は初心者スレでは使ったら駄目
0766デフォルトの名無しさん
2011/07/08(金) 08:45:40.790767デフォルトの名無しさん
2011/07/08(金) 09:29:16.80require 'rss'
(略)
rss = RSS::Parser.parse(source, true)
rss.channel.items.each { |item|
puts "#{item.title}"
}
RSSが
<channel>
<title>タイトル</title> ←(1)
<foo:bar>hoge</foo:bar> ←(2)
</channel>
(1)は上記の処理で出来るんですけど
(2)ように名前空間がついたものを参照する場合はどのようにすれば良いでしょうか?
0768てんし
2011/07/08(金) 11:31:58.55俺はC++やってた頃から継承使うなって言ってたはず、初期段階から中途半端な感じがしてた
継承とMix-inでは継承のほうが比較的「大きな道具」で、小さいほうの道具であるMix-inで済む場合は、そっち使うのが当たり前というか
しかもinclude,extendって2種類の方法用意されててしかもincluded,extendedまであっていたせりつくせりじゃん
継承の考え方って本来は、古いソースコードを、何も考えずに「機能を継承して」そこに機能追加したいとき使うものだと思う
バージョン管理をソース内でやっているようなもん
だから実際に今新規で作ってるときに継承使うっていうのは、用途がおかしいと思ってる
0769デフォルトの名無しさん
2011/07/08(金) 12:20:10.040770デフォルトの名無しさん
2011/07/08(金) 13:17:27.77>File.read は初心者スレでは使ったら駄目
なんで?
0771デフォルトの名無しさん
2011/07/08(金) 13:29:24.000772デフォルトの名無しさん
2011/07/08(金) 13:38:46.52>>764でダメってのも脊髄反射な気もするが
0773デフォルトの名無しさん
2011/07/08(金) 13:42:54.901行づつ読んだところで、ファイルがでかきゃ死ぬ。
多分、十分にファイルが小さいことが分かってるのだろうから、>>764でいいだろう。
0774デフォルトの名無しさん
2011/07/08(金) 14:21:32.15eval以外のやりかたってありますか?
いまは
foo='a\nb'
bar=eval('"'+foo+'"')
print foo
print bar
とやってるのですが、fooにスクリプトを入れられるのが怖くて
0775デフォルトの名無しさん
2011/07/08(金) 14:24:49.02わざわざ調べないといけないのでレスがないのだろう
んで File.read に関しては >>772 が正しい
Ruby 1.8.x ではバイナリモードにできないので、File.read は 1.8.x が消えるまでしばらくの間なかったことにするべき
標準ライブラリの実装は慎重にしましょうというありがたいお話
あと、1GBのテキストはメモリ上に保持できても1GBのテキストとそれを分割した配列(しめて2GB以上)を保持できるとは限らないので
即捨ての入力が即捨てできるようなら意識的にそうしておくべきだと思われる
初心者スレなら特に
0776デフォルトの名無しさん
2011/07/08(金) 14:34:54.75言葉の表現とやりたいことが矛盾してないか
0777デフォルトの名無しさん
2011/07/08(金) 14:42:51.09標準には無い
「バックスラッシュなんとか」を正規表現でgsubして\nなら"\n"にして\hexhexならpackしてという手作業が
なんか誰か作ってそうだけど
0778デフォルトの名無しさん
2011/07/08(金) 15:01:23.41仮にfoo:barがdc:creatorであればrss.channel.dc_creatorでアクセスできる
都合が悪くなければRSSのURL晒すとレスがつきやすいと思うよ
0779774
2011/07/08(金) 15:51:46.75string.dumpの逆がやりたいんですが、なんて表現したらよかったんですかね
>>777
やっぱりないんですか
用途的には需要ありそうですが。。。
ちょっと考えます
0780デフォルトの名無しさん
2011/07/08(金) 16:11:24.88ありがとうございます。無事配列に収めることができました。
0781デフォルトの名無しさん
2011/07/08(金) 16:39:50.92>>754の改行\nの記号を消して配列に収めたいのですが
どうすればよいでしょうか?
str = File.open('a.txt', 'rb'){|f| f.read}
str.delete("\n")
arr = str.split
p arr
や
str =File.read("a.txt").split(/\r?\n/)
str.delete("\n")
p str
などやってみましたが
["\"aaa\\n\"", "\"bbb\\n\"", "\"ccc\\n\""]
となります。
["aaa","bbb","ccc" ]こんな感じにしたいです。
0782デフォルトの名無しさん
2011/07/08(金) 16:50:31.82すべての行がダブルクォートで囲まれて、改行などがバックスラッシュ記法されてるという変なファイルだ
ということで、
str = File.open('a.txt', 'rb'){|f| f.read}
arr = str.scan(/^"(.+?)\\n"$/).flatten
p arr
でどっすか
0783デフォルトの名無しさん
2011/07/08(金) 17:02:06.29>>781
ファイルに保存するときに
printやputsで吐くようにしたら楽になれるかも
0784デフォルトの名無しさん
2011/07/08(金) 17:08:57.80改行の復元で泣きそうだが…
改行文字を「絶対含まれない文字列」に置き換えればいいんだけど、それができるならここで悩まないと思う
0785デフォルトの名無しさん
2011/07/08(金) 17:35:19.29ありがとうございます。
出力結果は[ ]になりダメでしたが、scanで、\n以外を配列にしてflattenで
配列を平滑化するというやり方勉強になリました。
>>783>>784
ファイルに吐き出す段階も見直してみます。ありがとうございます。
0786デフォルトの名無しさん
2011/07/08(金) 17:47:54.73実際の文字列がどうなってるかなんてわからんのだし、自力で正規表現書くしかない
0787デフォルトの名無しさん
2011/07/08(金) 21:07:05.450788デフォルトの名無しさん
2011/07/09(土) 02:36:59.47<<HEREDOC.chomp
Hello,
World.
HEREDOC
と書くしかないのでしょうか。
0789デフォルトの名無しさん
2011/07/09(土) 02:45:24.58class << obj
instance_methods
end
このように特異クラスをオープンすれば可能なのですが、
objに対して直接メッセージを送って取得したいのです。
0790デフォルトの名無しさん
2011/07/09(土) 06:24:10.04はい
まあヒアドキュメントってそんなもんだと思うので仕方ないかと
テスト書くときにめんどいっすな
>>789
特異クラスという言葉は使わないほうが紛らわしくなくていいと思う
Ruby 内部ではぜんぜん特別扱いされてないし
というわけで特別扱いされてるシングルトンメソッド一覧を singleton_methods ではりきってどうぞ
0791デフォルトの名無しさん
2011/07/09(土) 07:04:19.00意図的な曲解はディベートの正当なテクニックだぞ
曲げて取られるのはお前に隙があるから
0792デフォルトの名無しさん
2011/07/09(土) 08:14:17.680793デフォルトの名無しさん
2011/07/09(土) 17:10:13.70http://redmine.ruby-lang.org/issues/4996
0794天使
2011/07/09(土) 18:04:18.24数段上の立場にいる奴が下層の者を指すときに汚いものを見るような目で(実際に汚い)見下しながら吐く言葉であって
同レベルの「人間」同士でゴミゴミ言ってゴミゴミしていても所詮どちらもゴミゴミ
にしかみえない
0795デフォルトの名無しさん
2011/07/09(土) 18:15:30.210796デフォルトの名無しさん
2011/07/09(土) 18:16:04.07まあ基本スレ違いだ
傾向が固まるまでは本スレとかでやってくれ
あと、そこに書いてある Windows 版の 1.9.1 と 1.9.2 が妙に遅いというのは観測的事実だ
あらゆるスクリプトを 0.2 秒で実行できるような環境だと気付けないんだけども
0797デフォルトの名無しさん
2011/07/09(土) 20:01:12.10広恵さんとケコーンすればいい
0798デフォルトの名無しさん
2011/07/10(日) 00:33:04.72File,open(ファイル)か、open(ファイル)
の違いがわからないのですが
どっちでも同じことなのでしょうか?
0799大天使 ◆uL5esZLBSE
2011/07/10(日) 01:30:28.74File.openとopenは多分同じ
基本的に短いほうでいいとおもうよ
0800デフォルトの名無しさん
2011/07/10(日) 01:53:59.890801デフォルトの名無しさん
2011/07/10(日) 05:06:29.16同じではない
File.open は引数をファイルパスとみなしていきなり File オブジェクトを生成しようとするが、
関数的メソッド open は引数がパイプ記法であるかどうかをチェックしてから File.open を呼ぶ
irb> p open('|ruby -v'){|f| f.read}
"ruby 1.8.7 (2011-02-18 patchlevel 334) [i686-linux]\n"
Ruby 1.9 では to_open メソッドが動作するならその戻り値の IO オブジェクトが利用される
irb1.9> class C; def to_open; open('|ruby -v'); end; end
irb1.9> p open(C.new){|f| f.read}
"ruby 1.9.2p180 (2011-02-18 revision 30909) [i686-linux]\n"
ああ、1.8.7 のバージョン古いなあ
もちろん open-uri ライブラリで動作が上書きされるのも関数的メソッド open のほう
ファイルを開きたいだけなのなら、File.open を使用する癖をつけたほうが本当は好ましいんだが、若干書くのめんどい
0802デフォルトの名無しさん
2011/07/10(日) 07:23:49.03お答えいただきありがとうございます。勉強になりました。
0803デフォルトの名無しさん
2011/07/10(日) 15:33:03.56シングルトンの時とか使わんの?
0804大天使 ◆uL5esZLBSE
2011/07/10(日) 17:17:23.66暗記でいいよ、少なくとも「読んだ」って言うとお前たちゴミはすぐ勘違いするから
>>803
クラス変数? 使うにきまってんだろ
ここ学校じゃなくて所詮2ちゃんねる
ネット上の無責任なリソースの中で役立つのはソースコードのみで
そいつ自身の考え方なんて、95割ゴミ 聞く価値はない
たとえ言語開発者が使うなといっていても、言語開発者がプログラミング設計の全てを知ってるわけじゃないので
使える道具は多いほうが良いのは当たり前、ただ将来的に長く使って行くソースコードだったら
Rubyの仕様変更の被害にあいそうな可能性をもつ記述は避ける
0805デフォルトの名無しさん
2011/07/10(日) 17:22:41.00特異メソッドや特異クラスなら同様のインスタンスは生成できないから
RubyであまりSingletonを使う必要がないのよ
0806デフォルトの名無しさん
2011/07/10(日) 21:04:56.05Java出身者が使ってるだけじゃねーの
0807デフォルトの名無しさん
2011/07/10(日) 21:08:43.970808デフォルトの名無しさん
2011/07/10(日) 21:09:44.96昔はそれなりに使われてたんでは。
0809デフォルトの名無しさん
2011/07/10(日) 21:14:45.26たまに使ってるけど、特に意識してることないなぁ
0810デフォルトの名無しさん
2011/07/10(日) 21:15:54.99なんかSingleton使わないほうが素直な構成になるんじゃないかみたいな奇妙な違和感が…
0811デフォルトの名無しさん
2011/07/10(日) 22:31:19.00でもそのへんて既存のもの使っちゃうから意識して書くことは少ないか
0812デフォルトの名無しさん
2011/07/11(月) 04:47:52.560813デフォルトの名無しさん
2011/07/11(月) 04:56:36.99繰り返したい処理
end
オブジェクト.each {|変数|
繰り返したい処理
}
rubyには、上のようにブロックを使う書き方と使わない書き方がありますが、
普段みなさんはどちらを主に使っていますでしょうか?
file.closeなどしなくていい分、ブロックを使うやり方の方が便利なのかなと思っていましたが
ここのみんさんはブロックを使わないやり方で書いてる方が多いようなきがしたので、局面で
それぞれ違うと思いますが、どういった使い分けか知りたくなりました。
よろしくお願いします。
0814デフォルトの名無しさん
2011/07/11(月) 05:57:06.46結合度の違いはあるけど、両方ともブロックを使っているように見えます
0815デフォルトの名無しさん
2011/07/11(月) 06:23:35.53do 〜 end も { 〜 } も同じブロック。
例えばopenならどっちで書いてもcloseされる。
なのでその目的ならどっちで書いても一緒。
んで両者の違いは結合度、詳しくはマニュアルの「ブロック付きメソッド呼び出し」辺りを参照のこと。
ttp://www.ruby-lang.org/ja/man/html/_A5E1A5BDA5C3A5C9B8C6A4D3BDD0A4B7.html#a.a5.d6.a5.ed.a5.c3.a5.af.c9.d5.a4.ad.a5.e1.a5.bd.a5.c3.a5.c9.b8.c6.a4.d3.bd.d0.a4.b7
その挙動に依存するのは控えたほうが良いので結局は好みの領域になるんだが
個人的には { 〜 } を基本にしてる。do 〜 end のほうが書きやすく直感的な場面よりも
{ 〜 } のほうが書きやすく直感的な場面のほうが自分には多いようなので。
0816デフォルトの名無しさん
2011/07/11(月) 07:25:17.78>ここのみんさんはブロックを使わないやり方で書いてる方が多いようなきがしたので
いや、全員がブロック使ってるはず
ブロック使わないような書き方してる人は質問側の初心者の人だけだ
内部で改行すると見かけのネストが深くなってしまうという見栄えの問題以外で、ブロックのデメリットはない
…いや、まあ、見えていないコードが見えない場所で実行されることについての指摘はある
ブロックつきメソッドの作成者が ensure を設定していれば 「}」 の部分で大量のコードが自動実行されるわけだからね
でもメソッド作成者が角度とかきちんと考えて設定したものなので、乗っかってしまうほうが通常は安楽
do ... end と { ... } は
・ 1行でおさまるなら { ... }
・ 直後にメソッドチェーンが続くなら { ... }
という使われ方の傾向がある
これ以外は好みだったり気分だったり、そのメソッドのマニュアルでどっち使ってたかだったり
結合度というものがあって「ブロックの外」と関係するときの動作が厳密には違うんだけど、
>>815の言うようにこれの違いを利用してはいけないし発動させてもいけない
0817デフォルトの名無しさん
2011/07/11(月) 15:09:23.750818813
2011/07/11(月) 22:10:40.08両方ともブロックなんですね。大変勉強になりました。
{.... } こっちの方が魅力的に感じてきました。
ありがとうございます。
0819としやくん [階級:初心者] ◆R8wUvUJLoo
2011/07/12(火) 13:37:21.080820デフォルトの名無しさん
2011/07/12(火) 16:58:12.26・他人の家にズカズカやってきて、求めてもないのに宣伝しまくる
・帰れと言ってもしつこく居座る
・やっと帰ったと思っても、次々違うヤツがやってくる
・自説は絶対であり、自説に同調しない者は、憐れなヤツだと思ってる
・自分が信じるのは結構だが、周りの人にも強制する
etc. etc...
神の王国なんかに入れてくれなくて結構なので、放っておいてくれ
0821デフォルトの名無しさん
2011/07/12(火) 17:34:37.69他にも「Cドライブのこのフォルダは参照の対象になる」とかってあるんでしょうか。
あるいは、それも自分で設定できるものなのでしょうか。
mygameというライブラリでゲームを製作してたんですが
rhodesという、アンドロイドソフト開発用のソフト?のインストールやら
rails環境を整えていたりしたらいつのまにかmygameをうまく読み込まなくなりました。
./sdl.dll: 127: -init_sdl(LoadError)
というエラーを吐くので、SDLを読み込めてないだけだと思うのですが
ちゃんとSDL.dllは
C:\bin の中に入っています。
SDL.dllはどこに置くべきなのでしょうか。
環境は
OS : win7 64bit HomePremium
Ruby : 1.8.5
です。
0822デフォルトの名無しさん
2011/07/12(火) 17:34:51.83↑Ruby初心者スレにズカズカやってきて、求めてもないのにdisりまくる
↑やっといなくなったと思っても、次々違うヤツがやってくる
↑自説は絶対であり、自説に同調しない者は、憐れなヤツだと思ってる
↑自分が信じるのは結構だが、周りの人にも強制する
自分がそういう奴だから、他人がそういう風に思えるんだろうな
0823デフォルトの名無しさん
2011/07/12(火) 17:53:27.54Ruby のバージョンがあまりにも古すぎる
動作しないスクリプトのほうが多いぞそれ
せめて 1.8.6、Rails があっても 1.8.7 が欲しい
0824デフォルトの名無しさん
2011/07/12(火) 18:24:39.051.8.7のActiveRubyで再インストールしなおして直りました。
ありがとうございます。
こんな簡単なことに気づかないで申し訳ないです。
まる二日を環境変数いじったり、再インストールを何度もしたり
あきらめてサブPCに初めてlinuxをいれて結局そっちもあきらめたりして泣きそうでした。
0825デフォルトの名無しさん
2011/07/13(水) 17:37:39.68csv形式のログファイルを取り込んで、適した形式に整形してgnuplotで出力したいってのが最終目的です。
そこで今は『,』をタブに変換して、いちおgnuplotの形式には出来ました(^O^)
ただ今の問題は,ログファイルの中身に月日時分秒のデータがあるんですが、一番最初のログをとった時間を0秒にしてデータを書き換えたいと思ってます(>_<)
現在csvファイルからのデータ入力をreadlineで読み込んで、配列に格納してるんですが、時間の整形をどうやれば良いか全く解りません。
ちなみに自分は元々C++をしてました。
説明下手ですいませんが、宜しくお願いします。
0826デフォルトの名無しさん
2011/07/13(水) 18:15:18.62DateTime.strptime
DateTime#strftime
0827デフォルトの名無しさん
2011/07/13(水) 23:42:48.92def set_default_value
# self = "hello, world" したい
end
end
class Array
def set_default_value
# self = ["hello", "world"] したい
end
end
class Integer
def set_default_value
# self = 3 したい
end
end
こういうのってどう実装すればいいんですか
できればインスタンス自体はそのままで値だけを変えたいんですが統一的な書き方ってあるんですか
0828デフォルトの名無しさん
2011/07/14(木) 00:01:41.94何がしたいのかいまいちつかめないが
「オブジェクトのメソッドを使って、オブジェクト自身の値を変更したい」ということなら
replaceというそのものズバリなメソッドがある
ただしIntegerにはreplaceはない
0829デフォルトの名無しさん
2011/07/14(木) 06:18:00.06単に入れもののクラスを作ればいい
たとえば URI は path の部分をあとからメソッドで変更することができる
Ruby に最初から備え付けられているクラスを再オープンしてメソッドを追加するのはあまりおすすめしない
というか、クラス作るのめんどくさいので {:key => 値} のHash で持ち歩くことが多いかと思う
0830デフォルトの名無しさん
2011/07/14(木) 12:24:02.92replaceでいけそうです。
Integerの例は思いつきで書き足しちゃったんですが
実装考えたら無理な話ですね。
ありがとうございました。
0831デフォルトの名無しさん
2011/07/14(木) 14:31:12.15class C
@foo = "foo"
@HOGE = "hoge"
class << self
attr_reader :foo
attr_reader :HOGE
end
def self.hoge
@HOGE
end
end
p C::foo # => "foo"
p C::hoge # => "hoge"
p C::HOGE #=> uninitialized constant C::HOGE (NameError)
クラスに固有の定数をクラス外から利用したい場合は、どう記述するのが正解なのでしょうか?
0832デフォルトの名無しさん
2011/07/14(木) 14:33:16.820833デフォルトの名無しさん
2011/07/14(木) 14:41:19.25class C
HOGE = "hoge"
end
とすればC::HOGEでアクセスできるよ
0834デフォルトの名無しさん
2011/07/14(木) 14:50:23.280835デフォルトの名無しさん
2011/07/14(木) 14:51:39.97警告でるけど書き換えれちゃうのね
0836デフォルトの名無しさん
2011/07/14(木) 15:21:27.68他のクラスから参照できたりメソッド再定義で利用できたりすると便利な気がする、そのクラス特有の固定データ、みたいな感じ
そのクラス専用に定数を作ることはあんまりないんじゃないかな
0837デフォルトの名無しさん
2011/07/14(木) 15:24:19.541.9.3 でprivate_constantが導入されるみたいだよ
0838デフォルトの名無しさん
2011/07/14(木) 15:33:08.72…うん、あれば便利ではあるな
0839デフォルトの名無しさん
2011/07/14(木) 15:41:52.04private_class = Class.new{|klass| ... }
があるじゃないか、一応
0840デフォルトの名無しさん
2011/07/14(木) 15:59:14.350841デフォルトの名無しさん
2011/07/14(木) 16:38:21.54これ、プライベートクラス作成用に導入されるのよ
いわゆるフツーの定数の可視性をどうにかしようと思ってのことじゃない
0842デフォルトの名無しさん
2011/07/14(木) 17:20:02.55クラス名::ほげほげ
は大文字で始まって括弧が付いてないと定数と見なされるのでエラーになってる
C::HOGE()
とか
C.HOGE
だと大丈夫
::演算子はそもそも定数用でメソッドが呼べるのはおまけ機能
メソッドは.で呼ぶようにしたほうがいい
でも、そもそもふつうに定数を使えばいいような気がする
0843デフォルトの名無しさん
2011/07/14(木) 17:23:56.73def AAA() :A end
AAA() #これならメソッドして呼べるけど
AAA #だとそんな定数はないよといわれる
メソッドとローカル変数でも
def hoge() :method end
p hoge # => :method
hoge = :var
p hoge # => :var
p hoge() # => :method
なんだけど
0844デフォルトの名無しさん
2011/07/14(木) 20:58:47.14p Regexp.union(/a/, /b/, /c/) #=> /(?-mix:a)|(?-mix:b)|(?-mix:c)/
0845デフォルトの名無しさん
2011/07/14(木) 21:02:13.000847デフォルトの名無しさん
2011/07/14(木) 22:53:51.03標準クラスを拡張しまくってるからRubyのバージョンアップに対応できなさそう。というか怖くてバージョンアップできない。
スクリプト言語にこんな馬鹿デカいフレームワークが受け入れられている理由が全く分からん
0848デフォルトの名無しさん
2011/07/15(金) 00:36:55.690849デフォルトの名無しさん
2011/07/15(金) 23:51:01.77お前には使いこなすだけの能力がないってことで
残念でしたね
0850小池陸
2011/07/15(金) 23:52:59.93三国志のリクソンじゃないよ
小池陸だよ
みんなあつまれ
0851小池陸2
2011/07/15(金) 23:53:29.05わあ
0852小池陸3
2011/07/15(金) 23:54:31.97どうかRubykaigiにきてください
おまちしていっ
0853小池陸4
2011/07/15(金) 23:55:02.950854小池陸5
2011/07/15(金) 23:55:18.650855デフォルトの名無しさん
2011/07/16(土) 11:04:30.31以下のエラーが出ますがどのようにすれば動きますか。
OS winxp32bit
Ruby 1.9.2-p180
ImageMagick 6.7.1 Q16
C:\Ruby192>gem list
*** LOCAL GEMS ***
json (1.5.3)
kindai (1.7.0)
minitest (2.3.1, 1.6.0)
nokogiri (1.5.0 x86-mingw32)
rake (0.9.2, 0.8.7)
rdoc (3.8, 2.5.8)
rmagick (2.12.0 mswin32)
rubygems-update (1.8.5)
zipruby (0.3.6 mswin32)
C:\Ruby192>ruby kindai.rb 聖中心道肥田式強健術
ruby: No such file or directory -- kindai.rb (LoadError)
0856デフォルトの名無しさん
2011/07/16(土) 11:05:16.79C:\Ruby192\bin>ruby kindai.rb 聖中心道肥田式強健術
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Co
uld not find rmagick (>= 0) amongst [json-1.5.3, kindai-1.7.0, minitest-2.3.1, m
initest-1.6.0, nokogiri-1.5.0-x86-mingw32, rake-0.9.2, rake-0.8.7, rdoc-3.8, rdo
c-2.5.8, rmagick-2.12.0-x86-mswin32, rubygems-update-1.8.5, zipruby-0.3.6-x86-ms
win32] (Gem::LoadError)
from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:759:i
n `block in activate_dependencies'
from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:756:i
n `each'
from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:756:i
n `activate_dependencies'
from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb:741:i
n `activate'
from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems.rb:1183:in `gem'
from kindai.rb:18:in `<main>'
0857小池陸
2011/07/16(土) 11:18:29.59小池陸だよ
サインほしい人 みんなあつまれ
早くしないと消えちゃうよ
0858デフォルトの名無しさん
2011/07/16(土) 12:00:47.75C:\Ruby192ってことはRubyInstallerか
なんで初心者はmingw32使うかね
ああ、テンプレがないのか
初心者はmswin32(ActiveScriptRuby)使え
mingw32(RubyInstaller)は禁止
mingw32でRmagickを使うには
・ ImageMagick の dll とヘッダファイルつきの exe をどっかのパスにインストール
・ ImageMagick の include を環境変数 CPATH に、lib を環境変数 LIBRARY_PATH に設定
・ mingw32 Ruby のdevkit をインストール
・ gem で Rmagick をインストール
・ Rmagick のディレクトリで setup.rb
・ Rmagick のディレクトリで setup.rb install
というような手順が必要だったはず
つまり、全部自前でやる
今だと何か足りなかったり冗長だったりするかもしれないが
0859デフォルトの名無しさん
2011/07/16(土) 12:16:51.80ああ、あれ荒らしが消したんよ
仕返しだな
【バージョンに関するよくある流れ】
Ruby 1.8.5(非安定板)→ Ruby 1.8.6(旧安定版、長期政権)→ Ruby 1.8.7(超お勧め)
Ruby 1.9.0(旧開発版)→ Ruby 1.9.1(旧1.9系列安定版)→ Ruby 1.9.2(1.9系最新安定版)
実のところ、よくできた教科書またはトラブル時に聞き倒せる師匠がいるなら 1.9.2 から入っても特に問題はない
1.9.2ユーザーの場合は「1.9.2使ってます」と断った上で質問してほしい由
【Windows版に関するよくある疑問】
初心者の人はとりあえず ActiveScriptRuby の 1.8.7 使っておけば間違いない(mswin32)
http://www.artonx.org/data/asr/
の題字のでかい 「ActiveScriptRuby 1.8.7(pなんとか) with-winsock2 tcl-stub」
マニュアルはWebで見ることもできるが手元にあると便利、1.8.7 の HTML ヘルプ版が
http://www.ruby-lang.org/ja/documentation/
の「Rubyリファレンスマニュアル刷新計画 chm版 1.8.7用」
夢のお告げ等、何かの間違いで Ruby の知識がない初心者時代から 1.9.2 を使いたいマゾい人は
http://www.artonx.org/data/asr/ の「Ruby-1.9.2-p数字 Microsoft Installter Package」
「Windows版Ruby」として紹介されることのある以下の「RubyInstaller」は
これ特有のトラブルの修復知識が必要なので今のところは初心者には勧めない(mingw32)
http://rubyinstaller.org/
このトラブルを回避できるようになったら初級者脱出かも
0860デフォルトの名無しさん
2011/07/16(土) 12:31:01.290861デフォルトの名無しさん
2011/07/16(土) 13:01:48.28ありがとうございます。mswin32の1.8.7を試してみます。
0862デフォルトの名無しさん
2011/07/16(土) 20:18:12.59matzもくるよ。おまいらも応募してみたら?
活かすも活かさないもあなた次第。
0863デフォルトの名無しさん
2011/07/16(土) 23:43:04.800864デフォルトの名無しさん
2011/07/17(日) 02:06:40.470865デフォルトの名無しさん
2011/07/17(日) 02:42:20.00matzが来るんだぞ
最重要事項じゃないか
0866デフォルトの名無しさん
2011/07/17(日) 05:31:01.30んなもん変えられるだろ…
0867デフォルトの名無しさん
2011/07/17(日) 19:38:23.47あ?こら
あまのかお前てめえ調子ノンなこら
ネットギャングに県下うったのかあまのこら
ぶちのめずぞあまの
0868デフォルトの名無しさん
2011/07/17(日) 22:33:15.570869292
2011/07/18(月) 06:36:27.05(nkfなどではダメでした。)
1.ファイルから一行を読みこむ。
2.先頭から文字を単位で読み込み。
行の先頭の改行はそのままにしたいので、
改行をchompするかは、とりあえずどちらでもいいとします。
2を行って英文字(ASCII)は一文字でカウント、
日本語は二文字でカウントしたいんですが、最適なメソッドってありますか?
0870デフォルトの名無しさん
2011/07/18(月) 07:44:41.59使い分け方はあるのでしょうか?
0871デフォルトの名無しさん
2011/07/18(月) 08:04:25.93気に入ったほう使う
0872デフォルトの名無しさん
2011/07/18(月) 08:28:01.37おなじでしたか、ありがとうございます。
0873sora_h
2011/07/18(月) 15:33:24.54頭の脳みその神経が途切れて脳みそパーになりました
教えてくださいお願いします。
0874デフォルトの名無しさん
2011/07/18(月) 22:03:21.33print("2ちゃんねる")
のように一行だけでしても、出力されません
何がいけないんでしょうか
0875デフォルトの名無しさん
2011/07/19(火) 02:17:21.940876デフォルトの名無しさん
2011/07/19(火) 15:53:24.95なんとなくバージョン管理しているんだろうなとは思うのですが、
どのように使っているのでしょうか?
0877デフォルトの名無しさん
2011/07/19(火) 16:02:47.010878デフォルトの名無しさん
2011/07/20(水) 07:00:22.50文字化けしないようにしています。
class StdoutHook
def write(str)
STDOUT.write NKF.nkf("--ic=UTF-8 --oc=Windows-31J", str.to_s)
end
$> = new
end
rubyファイルはUTF-8で保存しています。
下の文字をウェブからNokogiriでとってきたのですが、
putsだと
ソフトバンク(株)【9984】:株式/株価 - Yahoo!ファイナンス
pだと
["\343\202\275\343\203\225\343\203\210\343\203\220\343\203\263\343\202\257(\346\
240\252)\343\200\2209984\343\200\221\357\274\232\346\240\252\345\274\217/\346\24
0\252\344\276\241 - Yahoo!\343\203\225\343\202\241\343\202\244\343\203\212\343\2
03\263\343\202\271"]
となるのですが、この数字の羅列はバイナリ文字列というものでしょうか?
このバイナリ文字列から正規表現を使って"ソフトバンク(株)"と"9984"を抜き出したいのですが
どのような方法がありますでしょうか?
0879デフォルトの名無しさん
2011/07/20(水) 07:59:03.21暗黙の $stdout (つまり何も書かない)か、グローバル変数 $stdout を使う
まあ、>>878の場合は STDOUT と書くしかないんだけど、普通は使わないので他の人は「そんなのがあるんだ!」とか真似しないでくだされ
で、関数的メソッド puts と関数的メソッド p は動作も役割も違うし表示する形式も違う
そのへんは解説にきちんと書いてあるはずで、書いてないならその本燃やせ
puts obj はおおむね obj.to_s をそのまま表示する
ただし、obj が Array のように振舞える場合は each しながら各要素を to_s して表示する(1.8.x限定)
p obj は obj.inspect の結果をそのまま表示する
これは obj のクラスの作成者が「このクラスのオブジェクトの内容をデバッグ表示するときにはこうしたい」と思った形式で表示される
つまり、その戻り値が(Nokogiri の css メソッドか xpath メソッドを使った結果で)配列っぽいもので返っているのだろう
配列だから正規表現は動作しないよ
0要素目に欲しいデータ文字列が入っているなら [0] とかで取り出して使え
あと、最初にヒットしたものだけが必要なのなら Nokogiri で at 使っとけ
0880デフォルトの名無しさん
2011/07/20(水) 08:01:06.38ソフトバンク(株) の部分は "\343\202\275\343\203\225\343\203\210\343\203\220\343\203\263\343\202\257(\346\240\252)"
9984 の部分は "9984"
で良いのではないですか?
0881デフォルトの名無しさん
2011/07/20(水) 11:01:31.82h[0] << 0
h[1] << 1
p h.default #=> [0, 1]
defaultに代入してるわけじゃないのに、defaultの値が変わるのは何故なのでしょうか。
0882デフォルトの名無しさん
2011/07/20(水) 12:16:23.52だから、代入してるわけじゃないというか、はっきり(自動で)代入してる
ああもう使いにくいなあこのページ
http://doc.ruby-lang.org/ja/1.8.7/class/Hash.html
ずーっと下ると 「new(ifnone = nil) -> Hash」 と 「new {|hash, key| ... } -> Hash」 があるからそこ読んどけ
ご希望の "ハッシュ初期化" 動作は
h = Hash.new{|hash, key| hash[key] = []}
h[0] << 0
h[1] << 1
p h[0] #=> 0
で達成されるかと思う
h = Hash.new([]) とだけ書くと、配列オブジェクト [] が毎回使い回されてしまう
0883デフォルトの名無しさん
2011/07/20(水) 12:49:24.14ホントはもっと使いやすいマニュアルあるんだろ
0885デフォルトの名無しさん
2011/07/20(水) 21:21:13.950886デフォルトの名無しさん
2011/07/20(水) 23:27:39.09あるキーワードやユーザーを指定しての収集はできるのですが、何の縛りもないとなるとやり方がわかりません
0887デフォルトの名無しさん
2011/07/21(木) 00:36:28.48・まずtwitter社と契約します
0888デフォルトの名無しさん
2011/07/21(木) 00:39:35.350889デフォルトの名無しさん
2011/07/21(木) 00:45:08.120890デフォルトの名無しさん
2011/07/21(木) 01:09:22.280891デフォルトの名無しさん
2011/07/21(木) 01:12:09.210892デフォルトの名無しさん
2011/07/21(木) 01:27:04.960893デフォルトの名無しさん
2011/07/21(木) 01:43:26.01何が必要かは書いてあるはずだから。
0894デフォルトの名無しさん
2011/07/21(木) 02:20:37.82ありがとうございます。また違うやり方を考えてみます。
>>880
他の銘柄にも応用できるように正規表現を使いたかったのですが、どうもうまくいきませんでした。
ありがとうございます。
0895デフォルトの名無しさん
2011/07/21(木) 03:29:07.530896886
2011/07/21(木) 04:02:52.27これアカウント停止とかならないですよね?(^^;;
0897デフォルトの名無しさん
2011/07/21(木) 08:53:55.39アカウント停止もそうだがアクセスブロックされたりするんじゃね
0898デフォルトの名無しさん
2011/07/21(木) 09:23:31.080900デフォルトの名無しさん
2011/07/21(木) 12:29:20.45どのようにすれば良いのでしょうか?
require 'active_support/all'
ActionView::Helpers::NumberHelper::number_with_delimiter 123456789
#->NameError: uninitialized constant ActionView
include ActionView::Helpers::NumberHelper
#->NameError: uninitialized constant ActionView
的なことをやってもだめでした。
Date.today.months_ago 3みたいなのができるので,
同じかんじでやってみようとしたのですが...
0901デフォルトの名無しさん
2011/07/21(木) 12:32:53.53異常なアクセス量にならないように調整
0902デフォルトの名無しさん
2011/07/21(木) 13:31:50.70$ irb -ractive_support/all -raction_view/helpers/number_helper
> include ActionView::Helpers::NumberHelper
=> Object
で使えるようになるけど、区切りはロカール依存(小数点にコンマとか)なので、
i18n用の設定も必要だと思う。そのままだと
> number_with_delimiter(10000000)
=> "10000000"
とか…
0903デフォルトの名無しさん
2011/07/21(木) 14:22:16.54マジ,サンキューです。
> number_with_delimiter 123456789, :delimiter => ","
=> "123,456,789"
でとりあえず使えました。
なるほど
require action_view/helpers/number_helper
これね。
0905デフォルトの名無しさん
2011/07/21(木) 19:01:00.73以前あったよね図書館のサイトにうんたら
0906デフォルトの名無しさん
2011/07/21(木) 19:59:20.94C:\Users\Public\Desktop>ruby hello.rb
ruby: No such file or directory -- hello.rb (LoadError)
と表示され、実行できません。
hello.rbはしっかりと存在するのですが・・・
一体何が原因なのでしょうか?
0907デフォルトの名無しさん
2011/07/21(木) 20:06:05.14とりあえずdirでDesktopフォルダに入ってるファイルを確認
C:\Users\Public\Desktop> dir
0908デフォルトの名無しさん
2011/07/21(木) 20:23:49.060909デフォルトの名無しさん
2011/07/21(木) 20:37:00.76C:\Users\Public\Desktop ではなく
C:\Users\名前\Desktop という自分の名前のフォルダにありました。
ありがとうございました。
0910デフォルトの名無しさん
2011/07/21(木) 23:03:50.20あーw
Windowsのデスクトップは見かけ上一ヶ所だけど
実際は全ユーザ共有のディレクトリと、いちユーザ個人のディレクトリを
混ぜこぜで表示してるから気を付けてね
コマンドプロンプト使うなら dir /p コマンドで
そのディレクトリのファイル一覧を確認するクセ付けるといいよ
0911デフォルトの名無しさん
2011/07/21(木) 23:22:57.010912デフォルトの名無しさん
2011/07/22(金) 00:08:53.42日本語と英語が混じった文字列の(見ため)の長さを取得するために、
str.each_char do |c|
len += c.mbchar? ? 2 : 1
end
こんな感じのソースを書いていたのですが、1.9ではどのように処理すればいいのでしょうか。
lengthメソッドはローマ字もマルチバイト文字も同じ1文字とカウントしてしまいます。
0913デフォルトの名無しさん
2011/07/22(金) 00:54:51.211文字に対して ascii_only が true だったら 日本語環境で 1バイト幅だとみなしてよかろう
irb> p "1234あいう".chars.inject(0){|r,s| (r += s.ascii_only? ? 1 : 2);r}
10
半角カタカナは false としか言ってくれないので、結局は ord とか使って判別しなければならないけど
0914デフォルトの名無しさん
2011/07/22(金) 01:56:43.95MacOS X snow leopard10.6.6を使っています。
ruby on railsをやりたくて、いろいろとやっていました。
script/serverでサーバーが起動しなかったので、
色々と試し各種インストールの途中からエラーが頻発するようになりました。
一旦リセットしたく思い、usr/local/bin にあったruby フォルダ
まるごと管理者権限で削除しました。
すると、完全にどうしようもならない状況に陥りました。
また初めから
Ruby1.9
Rails3
Gem 1.8.7
を入れたいのですが
どのようにすればいいか、
かれこれ6時間ほど悩んでいます。
もうsnow leopardをクリーンインストールするしか方法がないのでしょうか?
色々と試しましたがコンパイル出来ないとかエラーが出たので
readlineをインストールしようとしました。
しかし、その段階でもコンパイル出来ない!とエラーが出ます。
クリーンな状態にて Mac OS10.6で
ruby on railsが使えるようになる
方法を教えていただけませんか?
お願いします。
0915デフォルトの名無しさん
2011/07/22(金) 02:12:25.740916デフォルトの名無しさん
2011/07/22(金) 02:21:09.11もう rvm で環境作れば良いと思う。
https://rvm.beginrescueend.com/
0917912
2011/07/22(金) 02:33:32.93ありがとうございます。
うーむ、結構大変なのですね。その方法を使わせていただきます。
これも1.9で文字コード周りが色々変わった弊害なんですかね。。
0918デフォルトの名無しさん
2011/07/22(金) 05:07:34.49>usr/local/bin にあったruby フォルダ
こんなのあったっけ?
0919デフォルトの名無しさん
2011/07/22(金) 07:38:02.29OS のクリーンインストールをする必要はありません。
1. readline-6.2.tar.gz を入手します。
tar zxf readline-6.2.tar.gz
cd readline-6.2
./configure
make
sudo make install
これで readline はインストールできるはず。
(システム要求は autoconf 2.5 以上だけだと思う)
2. ruby-1.9.2-p290.tar.bz2 を入手します。
tar jxf ruby-1.9.2-p290.tar.bz2
cd ruby-1.9.2-p290
./configure
make
sudo make install
これで ruby と rails をインストールできます。
3. gem 本体を 1.8.5 にアップデートして rails 類をインストールします。
sudo gem update --sysytem
sudo gem install rails
4. あとは Rails3 のチュートリアルを参考にしていろいろ遊びます。
(sqlite3 本体と gem の splite3 ライブラリも必要かも)
WEBrick を起動する場合、Rails3 からは rails server で大丈夫です。
0920デフォルトの名無しさん
2011/07/22(金) 07:50:08.440921デフォルトの名無しさん
2011/07/22(金) 08:09:51.24Unicode で ZENKAKU 相当かどうかを返すようなメソッドはあってもいいとは思う
曖昧幅の場合なんて答えたらいいのかは知らん
>>920
rvm で自力コンパイルする場合は、libyaml はあったほうがいい(バイナリパッケージでは不要というか無意味)
最近は require 'psych' を一度試す gem が増えてきた
0922デフォルトの名無しさん
2011/07/22(金) 13:32:45.38非常にわかりやすい解説を
ご丁寧にありがとうございます。
2のruby1.9.2のセットアップ時に以下のエラーが出て1.9が入れられません。
どうすればよいのでしょうか?
(ちなみにインストールしているファイルは
<URL:http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.bz2> です)
gcc -dynamic -bundle -o ../../.ext/x86_64-darwin10.6.0/tcltklib.bundle stubs.o tcltklib.o -L. -L../.. -L/System/Library/Frameworks/Tcl.framework -L/System/Library/Frameworks/Tk.framework -L.
-L/usr/local/lib
-lpthread -framework CoreFoundation -F/System/Library/Frameworks -framework Tcl -lpthread -framework CoreFoundation -framework Cocoa -framework Carbon -framework IOKit
-lpthread -framework CoreFoundation -F/System/Library/Frameworks -framework Tk -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -Wl,-flat_namespace -lm -ldl -lpthread -ldl -lobjc
ld: in /usr/local/lib/libxml2.2.dylib,
file was built for i386 which is not the architecture being linked (x86_64)
collect2: ld returned 1 exit status
make[1]: *** [../../.ext/x86_64-darwin10.6.0/tcltklib.bundle] Error 1
make: *** [mkmain.sh] Error 1
0923デフォルトの名無しさん
2011/07/22(金) 13:39:22.870924デフォルトの名無しさん
2011/07/22(金) 13:42:59.23OSXに付いてくるTcl/Tkはx86/x86_64/powerpc(Snow Leopardまで)の
ユニバーサルバイナリなので、正しくそれとリンクするためにはRubyも
ユニバーサルバイナリとしてビルドする必要があるんじゃないかな。
正直いろいろ面倒なので、Railsをやる上では間違いなく使わないであ
ろうTkなんて外してしまうのが簡単だろう。
0925デフォルトの名無しさん
2011/07/22(金) 13:48:51.54完全なrequirementsくらいは一発で表示されて欲しいと思うことはある
> ld: in /usr/local/lib/libxml2.2.dylib,
> file was built for i386 which is not the architecture being linked (x86_64)
これは libxml2 の x86_64 アーキテクチャとしての再コンパイルが必要
たぶんこのあと sqlite3 あたりも再コンパイルが必要だと思う
Tk 外すと libxml2 は要らないんだっけ?
0926デフォルトの名無しさん
2011/07/22(金) 13:57:44.54何をどうすればいいか解りません。
0927デフォルトの名無しさん
2011/07/22(金) 13:59:21.59libffi-3.0.9 と yaml-0.1.4 をインストールしてから ruby-1.9.2 をビルドしたら
各ラッパー(モジュール?)が作られてウマーになりました。
ありがと、ちゅっちゅっ。
0928デフォルトの名無しさん
2011/07/22(金) 14:01:48.17たぶんほぼ確実に同じとこで詰まってると思われるので、そこ参考にするといいかもしれん
0929デフォルトの名無しさん
2011/07/22(金) 14:07:02.560930デフォルトの名無しさん
2011/07/22(金) 14:09:56.28どれか一つでもバージョンが違うだけでインストールすら出来ないのですね。
Windowsだとワンクリックインストーラーがあるだけに
比較してみるとMacでのRailsは導入だけでも敷居が高すぎるのですね
0931デフォルトの名無しさん
2011/07/22(金) 14:21:54.57どこをどう読んだのやら。
0932デフォルトの名無しさん
2011/07/22(金) 14:41:35.10い) readline-6.2 と libffi-3.0.9 と yaml-0.1.4 と sqlite-3.7.7.1 を入手して
./configure
make
sudo make install
にてそれぞれをインストールし、下準備をする。
ろ) ruby-1.9.2-p290 本体のインストールでは Rails の使用が目的なので
./configure --with-out-ext=tk
make
sudo make install
のようにしてとりあえず Tk をはずしてビルドをしてインストール。
は) >>919 にあるように gem 本体をアップデートして Rails を入れる。
ということなのでしょうか?
0933デフォルトの名無しさん
2011/07/22(金) 15:01:24.13>ttp://d.hatena.ne.jp/deeeki/20101030/mac_ruby19_rails3
0934デフォルトの名無しさん
2011/07/22(金) 15:10:17.13何とかRuby1.9.2とrails3.0.9とgem1.8.5 とそれぞれ最新版を入れることができました。
どこかのサイトに書いてあったとおり、そのままnginxというものを入れました。
これってブラウザで確認する際に一般的に使用するサーバーソフトですか?
railsだと script/server ってコマンドだけでサーバーが立ち上がると
いろんなところに書いてあるのですが立ち上がらず、調べてみると
rails3.0からは rails s のコマンドでいいとのことですが
それをして
http://localhost:3000 へ繋いでもうまくいきません。
0935デフォルトの名無しさん
2011/07/22(金) 15:15:33.07板違い
【RoR】Ruby on Rails Part12
http://hibari.2ch.net/test/read.cgi/php/1311050686/
0936デフォルトの名無しさん
2011/07/22(金) 15:15:56.39Usage:
rails new APP_PATH [options]
Options:
-r, [--ruby=PATH] # Path to the Ruby binary of your choice
# Default: /Users/taro/.rvm/rubies/ruby-1.9.2-head/bin/ruby
-d, [--database=DATABASE] # Preconfigure for selected database (options: mysql/oracle/postgresql/sqlite3/frontbase/ibm_db)
# Default: sqlite3
-b, [--builder=BUILDER] # Path to an application builder (can be a filesystem path or URL)
-m, [--template=TEMPLATE] # Path to an application template (can be a filesystem path or URL)
[--dev] # Setup the application with Gemfile pointing to your Rails checkout
[--edge] # Setup the application with Gemfile pointing to Rails repository
[--skip-gemfile] # Don't create a Gemfile
-O, [--skip-active-record] # Skip Active Record files
-T, [--skip-test-unit] # Skip Test::Unit files
-J, [--skip-prototype] # Skip Prototype files
-G, [--skip-git] # Skip Git ignores and keeps
Runtime options:
-f, [--force] # Overwrite files that already exist
-p, [--pretend] # Run but do not make any changes
-q, [--quiet] # Supress status output
-s, [--skip] # Skip files that already exist
Rails options:
-v, [--version] # Show Rails version number and quit
-h, [--help] # Show this help message and quit
以下略
0937デフォルトの名無しさん
2011/07/22(金) 15:26:30.84ここはRails使ってない人のほうが多いんじゃないかね
0938デフォルトの名無しさん
2011/07/22(金) 15:37:18.26* nginx は開発に使うだけなら不要。
* rails server は、作成したアプリのディレクトリで実行する。
0939デフォルトの名無しさん
2011/07/22(金) 15:39:18.02色々とご教授いただきありがとうございました。
0940デフォルトの名無しさん
2011/07/22(金) 15:49:56.71Rails が動くかどうかの確認をしたいのであれば
rails new blog
cd blog
bundle install ← ここはちょっと時間がかかるので筋トレをして待ちます
rails server
を順次実行していく。ターミナルに
=> Booting WEBrick
=> Rails 3.0.9 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
が表示されていることを確認してからウェブブラウザでアクセス!
あとは Rails スレで勉強するなりよ。
0941デフォルトの名無しさん
2011/07/22(金) 16:06:46.22さっそくrailsスレへ書き込みさせていただきました。
ブラウザで表示されるようになるまで
あと少しのところなので頑張ります!
もう一度ありがとうございます。
0942デフォルトの名無しさん
2011/07/22(金) 17:24:53.24ホントよ
「sudo port install ruby」の一行打てば、あとは勝手に
Rubyのソース落として依存するライブラリとかも全部落として
全部コンパイルして所定のディレクトリに配置するとこまで勝手にやってくれる
要はLinuxによくあるパッケージマネージャのMac版
他にもfinkとかhomebrewってパッケージマネージャがあるので
何らかのパッケージマネージャ入れておくとUnix系アプリの管理が楽だね
0943デフォルトの名無しさん
2011/07/22(金) 17:53:07.54もともとSJISの文字列か
SJISの範囲で収まるのならSJISに変換してから
String#bytesizeしてみてはどうか?
0944デフォルトの名無しさん
2011/07/22(金) 19:48:55.800945デフォルトの名無しさん
2011/07/22(金) 20:03:21.45jcode.rb 自体が1.9系ではEncodingの導入に伴い廃止。
1.8から持ってきて、 $KCODE 使ってる箇所を書き換えれば使えそうな気もするけど。
0946デフォルトの名無しさん
2011/07/22(金) 20:14:20.60おおなるほど。だから1.9の弊害みたいな話が上であったのね。
やっと意味が分かった。
0947デフォルトの名無しさん
2011/07/22(金) 20:24:45.22マルチスレッド? なにそれ? な造りだけど。
ttps://gist.github.com/1099265
0948デフォルトの名無しさん
2011/07/22(金) 23:05:04.31応募締め切り迫る
急げ
0949デフォルトの名無しさん
2011/07/23(土) 03:25:10.350950デフォルトの名無しさん
2011/07/23(土) 15:45:30.01# 置換の設定を別のファイルから読み込んで処理したいのですが、
# どうすれば良いでしょうか。
#
# 仮に次の四つのファイルがあるとします。
#
# 1.処理内容.rb (プログラムの本体)
# 2.入力元.txt (infile)
# 3.出力先.txt (outfile)
# 4.置換設定.rb (setfile)(置換の設定,これを読み込んで処理したい)
#
# 以下が具体例です。
#
#「1.処理内容.rb」の内容----------------------------------
def infile ; infile = '2.入力元.txt' end
def outfile ; outfile = '3.出力先.txt' end
# def setfile ; setfile = '4.置換設定.rb' end
open(infile, 'r'){|origin|
open(outfile,'w'){|output|
while line = origin.gets
#↓この部分の処理を別のファイル(4.置換設定.rb)で行いたい
line.gsub!('●','丸')
line.gsub!('へのへのもへじ','ヘノヘノモヘジ')
line.gsub!('漢字','kanji')
#↑この部分の処理を別のファイル(4.置換設定.rb)で行いたい
output.puts line
end
}
}
#-----------------------------------------------------------
#
# どうか知恵をお貸し下さい。お願い致します。
0951デフォルトの名無しさん
2011/07/23(土) 16:03:59.77プログラムがファイルに分離してると考えないほうがいい
…いや、考えてもいいけど、それはそれで最初はめんどくさいぞ
0952デフォルトの名無しさん
2011/07/23(土) 16:26:54.36置換設定.rbで
def process_line(line)
line.gsub...
return line
end
として、メインプログラムで
while line = origin.gets
line = process_line(line)
output.puts line
end
とすればいいんじゃないかな。
できれば
origin.each do |line|
line = process_line(line)
output.puts line
end
のほうがいいけど。
0953デフォルトの名無しさん
2011/07/23(土) 16:45:36.52str = "1234"
str.gsub!('1', 'ワン')
str.gsub!('2', 'ツー')
str.gsub!('3', 'さん')
puts str
その1:配列でgsubをまとめる
str = "1234"
replace_pairs = [['1', 'ワン'], ['2', 'ツー'], ['3', 'さん']]
replace_pairs.each do |pair|
str.gsub!(pair[0], pair[1])
end
puts str
その2:配列を外部から入力させてみる
str = "1234"
replace_pairs = []
File.open('replaces.txt','rb').readlines.each do |line|
replace_pairs << line.chomp.split(/\t/)
end
replace_pairs.each do |pair|
str.gsub!(pair[0], pair[1])
end
puts str
0954デフォルトの名無しさん
2011/07/23(土) 16:49:12.41require 'yaml'
str = "1234"
replace_pairs = YAML.load_file('replaces.txt')
replace_pairs.each do |pair|
str.gsub!(pair[0], pair[1])
end
puts str
# replaces.txt は --- で始まる
---
- ['1', 'ワン']
- ['2', 'ツー']
- ['3', 'さん']
その4:できた気がするので、ファイル入力とファイル出力も作る
require 'yaml'
input_path = 'input.txt'
output_path = 'output.txt'
replace_data_path = 'replaces.txt'
replace_pairs = YAML.load_file(replace_data_path)
str = File.open(input_path, 'rb'){|f| f.read}
replace_pairs.each do |pair|
str.read.gsub!(pair[0], pair[1])
end
File.open(output_path, 'wb'){|f| f.write(str)}
ぶっちゃけどっちもどっちだと思うので、
>>952のようにでっかい置換データを内部に持つ関数的メソッドを作って require するのでもいい
0955デフォルトの名無しさん
2011/07/23(土) 17:36:12.08横からなんですが、その2でオープンしたファイルは自動でクローズしているのでしょうか?
0956デフォルトの名無しさん
2011/07/23(土) 17:59:17.17ファイルが大きい場合にはメモリを占有するのもFile.readと同じ
0957デフォルトの名無しさん
2011/07/23(土) 18:27:39.52>>952さんの内容で望んだ通りの動作になりました。
僕には本格的なプログラムを組めるスキルは無いので、
ファイル数は増えてもシンプルな>>952さんの遣り方でやらせて頂きます。
採用は見送らせて頂きましたが、>>953,>>954さんもありがとうございました。
わざわざサンプルを書いて下さったそのお気持ちに御礼を申し上げます。
本当に助かりました。深く感謝します。 m(_ _)m
0958デフォルトの名無しさん
2011/07/23(土) 18:32:35.18マニュアルのIO#eofのコード例では、readlinesしあとでも使えてるので、closeしてないように思うのですが、
どうでしょうか?
f = File.new("testfile")
dummy = f.readlines
f.eof #=> true
File.readlinesなら閉じるては思いますが。
0959デフォルトの名無しさん
2011/07/23(土) 19:15:54.64いや、閉じてないよ
開きっぱなしで放置してるよ
GCされるときに、閉じられるのでしょう
File.readlines() じゃなくて
File.open().readlines() してるのだから
0960デフォルトの名無しさん
2011/07/23(土) 21:06:04.69d:\Ruby\bin\rubyw.EXE: No such file or directory -- Studio (LoadError)
というエラーが出て実行できないのですがどうすれば良いでしょうか?
0961デフォルトの名無しさん
2011/07/24(日) 07:24:39.57未だにブロック,yield,Proc,Enumerableが理解できません(;´Д`)
>>2にもいくつか挙がっていますが,次に読むとしたらどの本がいいですか?
おすすめがあったら教えてくださいorz
0962デフォルトの名無しさん
2011/07/24(日) 10:27:45.19挙げることができないなら、それが答です
0963デフォルトの名無しさん
2011/07/24(日) 10:39:49.00それだけでいいという考えかたもある
こんなん所詮プログラム言語に過ぎない
学校の勉強や試験のやり方なんて忘れろ
全部読む必要もないし全部覚える必要もない
ただ、どうしても気になるんだったら、他の誰かのプログラムを読んでみるといい
変な癖がつく可能性があるので、興味のある分野のいろんな人のをたくさん読むこと
0964デフォルトの名無しさん
2011/07/24(日) 12:27:09.12とりあえずブロックつきメソッド作るべし
使わないなら使わないでもけっこうなんとかなるので、忘れてしまうというのも手っちゃ手だ
0965デフォルトの名無しさん
2011/07/24(日) 13:08:49.200966デフォルトの名無しさん
2011/07/24(日) 14:02:37.85頑張って理解してください、ぐらいしか言えない。
もう少し質問力をつけた方がいい。
0967デフォルトの名無しさん
2011/07/24(日) 14:07:54.79紹介すればいいだけだろ
何が質問力だよ
0968デフォルトの名無しさん
2011/07/24(日) 15:03:48.870969デフォルトの名無しさん
2011/07/24(日) 15:34:16.230970デフォルトの名無しさん
2011/07/24(日) 16:39:25.87>未だにブロック,yield,Proc,Enumerableが理解できません(;´Д`)
Procでは、何らかの処理をオブジェクトにできる。
data = proc {|x| puts "x=#{x}" }
data.call(123) #=> x=123
Procを使うと、メソッドの引数に処理を渡せる。
def foo(val, data)
data.call(val)
end
foo(123, proc {|x| puts "x=#{x}" }) #=> x=123
これをスマートに書くと、yieldとブロックを使う書き方になる。
def foo(val)
yield val
end
foo(123) {|x| puts "x=#{x}" }
0971デフォルトの名無しさん
2011/07/24(日) 16:53:38.10Enumerableが難しく思うのは、ブロックとyieldが分かってないだけ。それがわかればEnumerableもすぐわかる。
どう、わかった?>>961
>>961
ソンナコトイワナイデ!
0972デフォルトの名無しさん
2011/07/24(日) 19:08:32.61yield val
end
foo(123) {|x| puts "x=#{x}" }
fooは引数をvalだけ受け取っているのに、
なぜ、 {|x| puts "x=#{x}" }も渡されてんの?
def foo(val, *****)
みたいな書き方にならないのはなぜ?
0973デフォルトの名無しさん
2011/07/24(日) 19:14:02.66block.call(var)
end
という書き方あるよ
0974デフォルトの名無しさん
2011/07/24(日) 20:39:43.47・d:\Ruby\bin\rubyw.EXEはインストールされていますか?
・Rubyで実行したいファイルのパスに日本語が含まれていませんか?
・ユーザー名が日本語ではありませんか?
・Aptana3以外では動きますか?
0975デフォルトの名無しさん
2011/07/24(日) 22:21:15.47>fooは引数をvalだけ受け取っているのに、
>なぜ、 {|x| puts "x=#{x}" }も渡されてんの?
>
>def foo(val, *****)
>みたいな書き方にならないのはなぜ?
そういう文法だから。
foo(123, proc {|x| .... })
が格好悪いから
foo(123) {|x| .... }
と書けるような文法にした。それだけのこと。
0976デフォルトの名無しさん
2011/07/24(日) 23:11:25.17まあうまく考えたもんだ
この二重引数構造には元ネタがあるの?
0977デフォルトの名無しさん
2011/07/24(日) 23:13:49.590978デフォルトの名無しさん
2011/07/24(日) 23:14:30.62やや古い記事だけど、ここの「第5回 高階関数を分かりやすくしたブロック」でも
まつもとさん本人がrubyのブロックが成立した背景を多少語っている。
0979こいけりく
2011/07/24(日) 23:34:38.68スレみたら誹謗中傷だらけでした
やっぱりなあって思いました
7歳無職でなじられてました
2chみました 心がつぶれました
悔しくはない
0980デフォルトの名無しさん
2011/07/24(日) 23:35:40.32歴史的経緯によったものだったんだけど、一般的なデザインパターンの用語と合致しないんで
歴史を共有してない人達には理解しがたい名前だったんで呼び方を変えた、とかそんな流れだったか
0981デフォルトの名無しさん
2011/07/24(日) 23:46:41.75イテレータの定義構文やyieldはCLUを参考にしているはず。
0982デフォルトの名無しさん
2011/07/25(月) 00:24:30.39初級者その他を惑わしたあげく、何のメリットも無いとか
馬鹿じゃねーの
0983デフォルトの名無しさん
2011/07/25(月) 03:00:56.40一種の過激派だな
0984デフォルトの名無しさん
2011/07/25(月) 04:03:39.460985デフォルトの名無しさん
2011/07/25(月) 07:14:51.570986デフォルトの名無しさん
2011/07/25(月) 07:30:37.49内容に意味はない
レスが欲しいだけ
0987デフォルトの名無しさん
2011/07/25(月) 07:55:27.41ブロックは一番最後の引数になるのと1つしか取れないから省略可能にしたんじゃないかな?
0988デフォルトの名無しさん
2011/07/26(火) 00:40:54.15エナムラブル?
0989デフォルトの名無しさん
2011/07/26(火) 01:01:50.870990960
2011/07/26(火) 01:13:49.06・d:\Ruby\bin\rubyw.EXEはインストールされていますか?→されています
・Rubyで実行したいファイルのパスに日本語が含まれていませんか?→含まれていません
・ユーザー名が日本語ではありませんか?→半角英数です
・Aptana3以外では動きますか? →動きました
その状態で暫くAptana3を使っているとアウトラインウィンドウにもエラーメッセージが表示されるようになり
Aptana3を再インストールした所、エラーは出なくなりました。
原因はわかりませんでしたが解決しました。ありがとうございました。
0991デフォルトの名無しさん
2011/07/26(火) 07:00:12.23イニュマラブルじゃね?
0992デフォルトの名無しさん
2011/07/26(火) 08:14:17.79Definition of enumerable on Vocabulary.com
http://www.vocabulary.com/definition/enumerable
Enumerable | Define Enumerable at Dictionary.com
http://dictionary.reference.com/browse/enumerable
0993デフォルトの名無しさん
2011/07/26(火) 08:25:38.24>>988
可算名詞、などの語に使用される、ふつうの英語なので、いにゅーめらぼー(にゅにアクセント)のように読む
が、問題はカタカナ読みだな
これを名詞にした USB Enumeration という語があって、これは「ゆーえすびー エニュメレーション」とカタカナ読みする
ttp://jp.fujitsu.com/microelectronics/technical/usb/index_p8.html
なので、これを参考にするなら、エニュメラブルと読むのが妥当ってことになりそう
0994デフォルトの名無しさん
2011/07/26(火) 08:58:04.800995デフォルトの名無しさん
2011/07/26(火) 09:49:34.920996デフォルトの名無しさん
2011/07/26(火) 18:58:32.82同じ発音で言われたら逆に混乱するわ
0997デフォルトの名無しさん
2011/07/26(火) 19:03:48.44数える、列挙する
enumeration
列挙
で、何が別物だって?
0998デフォルトの名無しさん
2011/07/26(火) 19:06:27.350999デフォルトの名無しさん
2011/07/26(火) 21:50:44.03int は『イント』 char は『チャー』なんだし、enum は『イナム』でいいよ
1000デフォルトの名無しさん
2011/07/26(火) 22:36:55.36少なくともうちの会社では「キャラ」って呼び方で統一されてる。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。