Ruby 初心者スレッド Part 49

1デフォルトの名無しさん
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
RoRはスレ違いよ

前スレ
Ruby 初心者スレッド Part 48
http://toro.2ch.net/test/read.cgi/tech/1328648447/


るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/

Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/

逆引きRuby
http://www.namaraii.com/rubytips/
2デフォルトの名無しさん:2012/05/09(水) 05:17:50.97
【RoR】Ruby on Rails Part14
http://kohada.2ch.net/test/read.cgi/php/1329492840/
【ActiveScript】RubyをWindowsで使うスレ【GUI】
http://toro.2ch.net/test/read.cgi/tech/1155031689/

書籍:ほぼ公式
「たのしいRuby 第3版 Rubyではじめる気軽なプログラミング」 (プログラミング自体が初めてでない人向け)
http://www.amazon.co.jp/dp/4797357401/
「初めての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/

現在、1.8 系列の最新である Ruby 1.8.7 と 1.9 系列の最新である Ruby 1.9.3 の2系統が存在。
肝心な部分がわりと違い、プログラムはそのままでは動作せず、予備知識も別個。
1.8 用のスクリプトやライブラリは 1.9.3 では動作しないので注意。
1.9.3 用の教科書があるなら 1.9.3 から始めても構わない。

Windows用Rubyは、Ruby以外のものもあらかた入っているActiveScriptRubyと
http://www.artonx.org/data/asr/
RubyだけインストールされるRubyInstallerの2種類存在。
http://rubyinstaller.org/downloads/
Rubyリファレンスマニュアル chm版リミックス
http://ruby.morphball.net/refm-remix.html
3デフォルトの名無しさん:2012/05/09(水) 05:19:24.03
4デフォルトの名無しさん:2012/05/09(水) 06:14:32.82
・ いつものエディタとターミナルという普段着でお越し下さい
・ エディタ初めてならRubyスクリプトをを着色してくれる(できればオートインデントの)エディタ好きなの選べ
・ いわゆるIDEはRubyの学習に際しては恐ろしくコスパが悪いのでRubyのためだけに新規導入するのはお勧めしない

Q. XXX を使ってるんですが Ruby も覚えたほうがいいんでしょうか?
A. 好きにしろ
5デフォルトの名無しさん:2012/05/09(水) 10:20:59.60
※RubyやRuby使いに対する不満や愚痴などは本スレやバトロワスレなどをご利用下さい
6uy:2012/05/09(水) 11:06:06.87
Cで作ったDLLライブラリで
double型を返す関数や、double型の引数を取る関数を
Rubyから呼び出すにはどうすればいいんでしょうか?><
INTしか受け取れません
p Win32API.new("Lib.dll", "_RadToDeg", "i", "i").call 30
7デフォルトの名無しさん:2012/05/09(水) 11:42:48.25
Ruby/DLを使えばいいんでは。
8uy:2012/05/09(水) 11:54:38.08
ありがとうございます 読めました
9デフォルトの名無しさん:2012/05/09(水) 21:58:15.29
クラスでインスタンスした時のものなんだが
#<Hoge:0x0000000c9c12e0>
0x0000000c9c12e0ってアドレスの値ですか?
10デフォルトの名無しさん:2012/05/09(水) 22:24:20.75
Object#to_s のデフォルトは
sprintf("#<%s:%p>", cname, (void*)obj)
みたいな感じなので、ポインタ値。
大抵のポインタの実装はアドレス丸出しなのでアドレスと思ってよいでしょう。
11デフォルトの名無しさん:2012/05/10(木) 10:55:36.60
数値を'hoge'に変換(例:2=>'hoge')するんだけど、ただし<>内に含まれている数値は
対象外にする。
変換対象の文字列は13<aa12><444>1なかんじで
正規表現でhogehoge<aa12>hogeにしたい。

そのような正規表現はどう作ればいいのですか?
うまくいかない
12デフォルトの名無しさん:2012/05/10(木) 10:58:54.38
すいません上の例は
13<aa12><444>1 の文字列を hogehoge<aa12><444>hoge
に変換です。
宜しくお願いします。
13デフォルトの名無しさん:2012/05/10(木) 11:22:23.09
'13<aa12><444>1'.gsub(/<.*?>|(\d)/){$1 ? 'hoge' : $&}
=> "hogehoge<aa12><444>hoge"

<>のネストが無いならこうかな?
14デフォルトの名無しさん:2012/05/10(木) 13:30:15.01
File::statで質問です。
File::stat#modeでファイルモードが返ってきますが,
6桁の数字のうち上位3桁の意味が分かりません。
「040755」となっている場合,多分下3桁はいわゆるrwxのことだと思うのですが,
040についてどうやって調べればいいのか。
おこたえいただけるとうれしいです。
15デフォルトの名無しさん:2012/05/10(木) 13:45:17.74
>>14
man stat(2)
って言ったらわかる?
1614:2012/05/10(木) 14:02:03.49
>>15
ありがとうございました。わかりました。
6桁ではなく7桁でしたね。040はディレクトリということがわかるようになりました。
17デフォルトの名無しさん:2012/05/12(土) 03:05:20.98
Googleで「ぬるぽ」と検索するスクリプトを書いてみたのですがうまくいきません
ここからどうすればいいのでしょうか?



# encoding: utf-8

require "net/http"
require "uri"
require 'nkf'

uri = URI.parse('http://www.google.co.jp/')

res = Net::HTTP.post_form(uri, 'q' => 'ぬるぽ')

puts NKF.nkf("-sm0W8x", res.body)
18デフォルトの名無しさん:2012/05/12(土) 03:13:48.21
>>17
ガッ
19デフォルトの名無しさん:2012/05/12(土) 07:29:23.22
メッセージがわかりにくいとはよく言われるが、Rubyはそこまで意地悪ではない
こちらから聞きさえすれば、いちおうのヒントは教えてくれる

p res #=> #<Net::HTTPMethodNotAllowed 405 Method Not Allowed readbody=true>

ということで、http://www.google.co.jp/ は POST を受け付けていない(というかURL間違ってる)。/search に対して GET 送れ
あと、net/http は uri ライブラリを既に呼んでいるので require 'uri' は不要
Ruby1.9.x 専用なら NKF もたぶんいらない

# encoding: utf-8
require "net/http"
uri = URI.parse(URI.encode('http://www.google.co.jp/search?q=ぬるぽ&ie=utf-8&oe=shift_jis'))
res = Net::HTTP.get(uri)
res.force_encoding('CP932')
puts res.scan(/<title>(.+?)<\/title>/).flatten[0]

Hash で書くだけで適当に GET 用の URL エンコード(www-form-urlencodedではない)してくれる方法は誰か偉い人が教えてくれるはず
2017:2012/05/12(土) 11:52:25.48
ありがとうございました。

「ぬるぽ」だとinvalid multibyte charが出たので「nullpo」にしてみたら

nullpo - Google 検索 と出てきました
21デフォルトの名無しさん:2012/05/12(土) 11:56:57.91
>>20
なぜShift_JISで保存した
22デフォルトの名無しさん:2012/05/12(土) 12:01:35.44
# encoding: utf-8
は、このファイル「が」 UTF-8 で書かれているという意味の指示記述
UTF-8 「を」読み込むとか UTF-8 「で」表示するという意味ではない

このファイル「が」 UTF-8 で書かれていないのなら、UTF-8 以外を指定するべきだな
Windwos のようだから、 CP932 が妥当なのか
23デフォルトの名無しさん:2012/05/12(土) 12:57:12.99
Windows-31Jディスってんの?
24uy:2012/05/12(土) 12:58:12.30
マジレスするとわざわざrequire "net/http" でやりたいとかじゃなければ
Mechanizeでやったほうが999999999倍マシ
25デフォルトの名無しさん:2012/05/12(土) 16:11:33.32
将来iconvを使う羽目になったときに、CP932という名前ならほぼ確実にどこででも使えるけどWindows-31Jは使えないことがある
さらにWindows-31Jは若干名前の筋が悪くて、Encoding::CP932 はそのまま書けるんだけど Encoding::Windows-31J は定数としてそのままアクセスできない

irb> Encoding::CP932
=> #<Encoding:Windows-31J>
irb> Encoding::Windows-31J
SyntaxError: (irb):2: syntax error, unexpected tCONSTANT, expecting $end
irb> Encoding::Windows31J
NameError: uninitialized constant Encoding::Windows31J
irb> Encoding::Windows_31J
=> #<Encoding:Windows-31J>

だから少なくとも初心者スレでは一貫してCP932という言葉を使う
本来のShift_JISとCP932とWindows-31Jの差異については、歴史的経緯を紐解かなければならなくなったら自分で調べるだろう
26デフォルトの名無しさん:2012/05/12(土) 18:16:14.52
ttp://takobouzu.la.coocan.jp/index.php/2012/01/競馬時計分析のアプローチ(3)/

この解説のスクリプトを起動したいのですが
下部のソースコードを起動しても

:2: syntax error, unexpected '<'
<p> </p>
^
:3: unknown regexp option - p
:4: syntax error, unexpected '<'
<p> log.info("調教時計抽出開始")</p>

:5: unknown regexp option - p
:6: syntax error, unexpected '<'
<p>outfile1 = open(outdirectory + "\\" + "調教時計.txt", "w")</p>
^
:7: syntax error, unexpected $undefined, expecting $end
...[0-9][0-9][0-1][0-9][0-3][0-9]\.lzh$/ =~ |hafi|ename then ...

と出てうまく起動しません
エラー文を調べたところ構文エラーらしいのですが
どう直せばよいのでしょうか?
27デフォルトの名無しさん:2012/05/12(土) 18:30:22.85
つまりRubyの知識ゼロの状態ってことか
なんかlzhのデータファイルが別途必要なんだけどそれはあるのね
lzhコマンドも必要だけどインストールしてあるのね

HTMLの<p>タグを取り除いてRubyスクリプトとして適切に改行を揃えればいいんだけど、たぶんそれを自力でできるほどの知識がないのよね
レスとして貼るには長いな
28デフォルトの名無しさん:2012/05/12(土) 18:31:20.03
とりあえず <p> </p> を全部消せ。話はそれからだ。
29デフォルトの名無しさん:2012/05/12(土) 18:35:17.44
>>27
大学でCなんかはかじったレベルなんですが
Rubyは触った事無いです・・・これを機に少し勉強しようかなとも思ってます。

lzhはデータファイルはinフォルダに格納してあります。
解凍にLHAが必要ということでLHA32をダウンロードしています。
コマンドプロンプトで実行したところ解説ページと同バージョンでした。

>>28
ありがとうございます。
とりあえずTerapadで<p>タグを消して改行して揃えてみます。
30デフォルトの名無しさん:2012/05/12(土) 18:38:14.20
>>28
やってみるとわかるけど、それだけでは動かない
コメント避けて改行つけないといけない
31デフォルトの名無しさん:2012/05/12(土) 18:47:22.59
<p>タグを消して改行したところ
エラーは消えました。
今度は3行目でsyntax error, unexpected tIDENTIFIER, expecting $endと出ました。
改行コードがダメらしいんですね。 難しいです
32デフォルトの名無しさん:2012/05/12(土) 18:51:25.19
# -*- coding: cp932 -*-
require 'logger'
log = Logger.new(STDOUT)
log.level = Logger::DEBUG
log.info("調教時計抽出開始")
indirectory = "C:\\調教時計分析\\in"
workdirectory = "C:\\調教時計分析\\work"
outdirectory = "C:\\調教時計分析\\out"
outfile1 = open(outdirectory + "\\" + "調教時計.txt", "w")
Dir::foreach(indirectory) {|lhafilename|
next if lhafilename == "." or lhafilename == ".."
if /^kd3_hb[0-9][0-9][0-1][0-9][0-3][0-9]\.lzh$/ =~ lhafilename then
#KOLデータパックファイルをLHA解凍
cmd = "lha32 x -nc " + indirectory + "\\" + lhafilename + " " + workdirectory + "\\"
system(cmd)
open(workdirectory + "\\" + "kol_den2.kd3") {|file|
while line = file.gets
record = line.force_encoding('ASCII-8BIT')
#レースID組み立て
case record[0,2]
when "00" then raceid = record[12,8] + "08" + record[6,6] + record[23,2] #京都
when "01" then raceid = record[12,8] + "09" + record[6,6] + record[23,2] #阪神
when "02" then raceid = record[12,8] + "07" + record[6,6] + record[23,2] #中京
when "03" then raceid = record[12,8] + "10" + record[6,6] + record[23,2] #小倉
when "04" then raceid = record[12,8] + "05" + record[6,6] + record[23,2] #東京
when "05" then raceid = record[12,8] + "06" + record[6,6] + record[23,2] #中山
when "06" then raceid = record[12,8] + "03" + record[6,6] + record[23,2] #福島
when "07" then raceid = record[12,8] + "04" + record[6,6] + record[23,2] #新潟
when "08" then raceid = record[12,8] + "01" + record[6,6] + record[23,2] #札幌
when "09" then raceid = record[12,8] + "02" + record[6,6] + record[23,2] #函館
end
33デフォルトの名無しさん:2012/05/12(土) 18:52:06.45
#追切調教情報格納位置の確定
tp = 256
if record[490,1] == "1" then
tp = 490
else
if record[373,1] == "1" then
tp = 373
else
if record[256,1] == "1" then
tp = 256
end
end
end
#追切調教情報の取得
baba = record[tp + 25, 2] #馬場
basho = record[tp + 17, 6] #場所
course = record[tp + 23, 2] #コース
ashiiro = record[tp + 70, 6] #脚色
time_5f = record[tp + 45, 6] #5F
#調教時計レコードの組み立て
outrec1 = " " + basho #場所
outrec1 = outrec1 + " " + course #コース
outrec1 = outrec1 + " " + ashiiro #脚色
outrec1 = outrec1 + " " + baba #馬場
outrec1 = outrec1 + " " + time_5f #5F
#調教時計レコードをファイル出力
outfile1.puts(raceid + "," + outrec1)
end
}
end
}
34デフォルトの名無しさん:2012/05/12(土) 18:53:13.72
#終了処理
outfile1.close
log.info("調教時計抽出終了")

# この上の空行まで

>>32-34
のスクリプト部分をてきとうにエディタにコピペ
35デフォルトの名無しさん:2012/05/12(土) 19:11:21.03
>>32-34
ありがとうございます!
早速実行しましたが
:16: in `initialize' : No such file or directory - C:\調教時計分析\work\kol_den2.kd3 (Errno::ENOENT)

と出ました。自分なりに色々しらべてみようと思います。
36デフォルトの名無しさん:2012/05/12(土) 19:52:56.34
調べたら

inフォルダにあるlzhファイルを解凍
解答したファイルをworkフォルダに格納

これが出来てないんですね・・・
この場合どこを見ればいいんでしょうか?
37デフォルトの名無しさん:2012/05/12(土) 20:05:41.55
全部がみっちり結合してるからテストできないんだな
こんなスクリプト作ったらいかんよ

system(cmd) を
p cmd; system(cmd)
に書き換えて、文字列 cmd が lha32 のコマンドラインとして妥当かどうか確かめるのが妥当かなあ
38デフォルトの名無しさん:2012/05/12(土) 20:24:14.44
>>37
同じエラー文が返って来ました。
コマンドラインとして妥当ではないということなのでしょうか?
39デフォルトの名無しさん:2012/05/12(土) 20:32:20.05
関数的メソッド p は引数のオブジェクトを適当に表示する
p cmd で変数 cmd の内容が標準出力に表示されたはずだ
system() は引数の文字列をそのままシェルに渡す
シェルに渡されるはずだった cmd はコマンドラインとして妥当なものだったか? ディレクトリ指定などは誤ってないか?

ということを聞きたかったのだと思われる
40デフォルトの名無しさん:2012/05/12(土) 20:58:26.89
lzhファイルが置けてないとか?これ実行して出力貼ってみ

# -*- coding: cp932 -*-
require 'pathname'
indirectory = "C:\\調教時計分析\\in"
workdirectory = "C:\\調教時計分析\\work"
outdirectory = "C:\\調教時計分析\\out"
abort "エラー [#{indirectory}]がない" unless Pathname(indirectory).directory?
abort "エラー [#{workdirectory}]がない" unless Pathname(workdirectory).directory?
abort "エラー [#{outdirectory}]がない" unless Pathname(outdirectory).directory?
lzhfound = false
Dir.foreach(indirectory) do |file|
if file =~ /.*\.lzh$/
lzhfound = true
if file =~ /^kd3_hb[0-9][0-9][0-1][0-9][0-3][0-9]\.lzh$/
p "lha32 x -nc " + indirectory + "\\" + file + " " + workdirectory + "\\"
else
puts "エラー [#{file}] は名前がおかしいかも"
end
end
end
puts "エラー lzhファイルが[#{indirectory}]に入ってない " unless lzhfound
puts `lha32` rescue abort "エラー lha32がちゃんとインストールされてない"
41デフォルトの名無しさん:2012/05/12(土) 21:01:08.39
>>39
"lha32 x -nc C:\\調教時計分析\\in\\kd3_hb110105.lzh C:\\調教時計分析\\work\\"

というコマンドラインが出力されました。
解凍する対象のlzhファイルと
解凍後のフォルダの格納位置を指定していると思うのですが
このフォルダ指定は合ってます。
ということはうまく解凍されていないということなんでしょうか・・・?
42デフォルトの名無しさん:2012/05/12(土) 21:02:45.58
>>40
エラー lha32がちゃんとインストールされてない
と出ました。インストールミスのようですね・・・もういっかい確認してきます
43デフォルトの名無しさん:2012/05/12(土) 21:09:52.99
解説ページに
コマンドプロンプトから「LHA32」を実行してバージョンが2.67.00であることを確認する。

という一文があって
実際にLHA32を入力するとLHA32 version 2.67.00 for test と出ます。
もしかしてこれだけではインストールされていないんでしょうか?
44デフォルトの名無しさん:2012/05/12(土) 21:18:18.52
コマンドプロンプトからだけパスが通ってることってあるのかな?
OS再起動したら直るかもしれない
手元のマシンにはlha32インストールできないから俺はこれ以上ワカンネ
45デフォルトの名無しさん:2012/05/12(土) 21:24:57.95
実際にはパス通ってないんだろ
lha32.exe のあるディレクトリで lha32 と入力すればそりゃ動く

インストール後はコマンドプロンプト流用せずに一旦全部閉じろ
46デフォルトの名無しさん:2012/05/12(土) 21:32:55.41
>>44
再起動してみました上手くいきませんでした・・・

>>45
すいませんやり方を詳しくお願い出来ますか?
47デフォルトの名無しさん:2012/05/12(土) 23:37:29.57
lha32って普通に落としてEXEクリックでインスコされなかったっけ?
48uy:2012/05/13(日) 04:16:39.17
Lhaz使わない奴なんていんの
49デフォルトの名無しさん:2012/05/13(日) 07:09:02.38
CENTOSのruby 1.9.3p194で、gem install rvm をやると

/usr/lib/ruby/1.9.1/yaml.rb:56:in `<top (required)>':
It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.
ERROR: Could not find a valid gem 'rvm ' (>= 0) in any repository
ERROR: Possible alternatives: rvm, rVM
ってなる。

yaml-0.1.4はインストールしてるんだけど・・
なんで?
50デフォルトの名無しさん:2012/05/13(日) 08:58:44.48
Rubyが糞だから
答えは簡単
51デフォルトの名無しさん:2012/05/13(日) 09:13:48.12
>>49
libyaml-devel 相当が必要
CentOS 標準では提供されてないので、epel を有効にしないといけない
openssl-devel と zlib-devel と readline-devel と gdbm-devel あたりも入れとけ
52デフォルトの名無しさん:2012/05/13(日) 09:30:01.19
>>47
lha32はいろいろバージョンがあるからなあ
自動でパス設定しないものもあるかもしれん
どのディレクトリでもlha32が使えるのなら、Rubyからでもlha32は使えるはず
最悪な場合はlha32.exeを直接ダブルクリックしてるのかもしれんし
53デフォルトの名無しさん:2012/05/13(日) 09:36:23.98
>>46です。
環境変数でpathをちゃんと指定しなかったのがどうやら原因だったみたいです。
設定後は無事スクリプトが起動しました。
お手数をかけて申し訳ありませんでした。
スクリプトを見て頂いたり原因を探ってくれた方々本当にありがとうございました!
54uy:2012/05/14(月) 06:48:13.19
ハッシュに複数ハッシュを追加したいんですけど
storeだと1個ずつしか追加できません
何かいい方法あればおしえてください
(ちなみにaのハッシュをbで上書きしたいです)

a={ x:2 , y:8 }
b={ x:3 , y:4 , z:6}


55デフォルトの名無しさん:2012/05/14(月) 07:49:31.27
uy君ほどの人がupdateやmergeを知らないってどういう事なの
56uy:2012/05/14(月) 08:01:20.33
>>55
すみません
ボケていました
marge使った事ありました
知らないわけではなかったです
ありがとうございました
57uy:2012/05/14(月) 08:19:07.28
mergeな
58デフォルトの名無しさん:2012/05/14(月) 08:53:05.45
uyは変態だからしょうがない
59デフォルトの名無しさん:2012/05/14(月) 08:55:23.80
>>51
最新のlibyamlを自前コンパイルしてしまうというパターンも多いみたいね
60デフォルトの名無しさん:2012/05/14(月) 11:38:02.02
>>51
有難う、でけた
61デフォルトの名無しさん:2012/05/14(月) 15:13:31.79
お前ら初心者スレなのに高度すぎ。
62デフォルトの名無しさん:2012/05/14(月) 20:53:27.72
nokogiriとかanemoneとか便利だけど、
これってRubyの開発者が用意したプラグインみたいなもんなの?
63デフォルトの名無しさん:2012/05/14(月) 20:57:36.92
第三者が勝手に作って公開しているライブラリ
個々にやると使うのめんどくさいのでgemという系統立てたシステムに乗っけるのが主流

"信用できない"のなら使うべきではない、特にバイナリ
64デフォルトの名無しさん:2012/05/15(火) 01:34:25.64
なるほど、公式じゃないのに簡単に取り込めるとは便利ですな。
WordPressのプラグインみたいにネットにアクセスしてダウンロードする機能があったら、
ソフト自体も軽くなって更に便利だろうに。バージョンアップも対応できるし。
65デフォルトの名無しさん:2012/05/15(火) 09:17:23.11
何を言ってるの?
66デフォルトの名無しさん:2012/05/15(火) 11:02:22.19
Array#indexメソッドで * などの正規表現を使うことはできないようなのですが、

配列から正規表現を使って一致する要素を抽出したい時は
each などを使って1つずつチェックしていく方法が普通なのでしょうか?
67デフォルトの名無しさん:2012/05/15(火) 11:21:52.95
なんか毎回書いてる気がするが、とりあえずArrayとHashとStringとEnumerableのメソッドは1行の動作説明だけでも読んでおくといい
「そういえばどっかにそんな処理のできるメソッドがあった気がする」とわかるだけでかなり違う

というわけで Array#grep か Array#find_all あたりを使え
68デフォルトの名無しさん:2012/05/15(火) 11:55:57.90
>>67
Array#grepなんて便利なのがあったのですね。
ありがとうございます。
69デフォルトの名無しさん:2012/05/15(火) 12:13:24.78
rubyをフルパス指定した時と、ただrubyとした時で動作が違うって事ある?

同じコンソール(同一ユーザ、同一環境)で、ruby -vと/usr/bin/ruby -vだと
ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]で同じ結果。

Hello worldのtest.rbを動かすと、「ruby test.rb」では正常にHello world出力。
フルパスで「/usr/bin/ruby test.rb」だとLoadErrorになるけど、
何回かやるとメッセージを変化させながら最後は正常に動く。
/usr/bin/ruby: No such file or directory -- Dg (LoadError)
/usr/bin/ruby: No such file or directory -- -ggdb (LoadError)
/usr/bin (LoadError)ch file or directory -- DW

一回動くとまたLoadErrorになって何回かやるとメッセージが少しづつ変化しながら最後は動くの繰り返し。
フルパスでなく、「ruby test.rb」なら何の問題もない(ように見える)

こんな事ってあるの?
70デフォルトの名無しさん:2012/05/15(火) 12:14:42.83
Rubyのマジックコメントについて質問なんですが
open("file.rb","w"){|f|
f.print "test".toutf8
}
こんな感じにファイルを保存した時って、文字コードはUTF-8Nになっていますが
ここで保存したfile.rbをそのまま実行しようとすると
invalid multibyte char (US-ASCII)
などとでてしまいます
なので後からエディタで開いて文字コードをUTF-8NからUTF-8にすると、動きます

それか、または書かれてる文字コードはUTF-8N
だとしても、以下のようなマジックコメントを入れるだけでも動くんですけどこれでも平気ですか?
# -*- encoding: UTF-8 -*-


あとRubyは結局、UTF-8NじゃなくてUTF-8でソースコードを書くんですよね?
.toutf8メソッドがUTF-8Nに変換してしまうのは何故ですか?
71デフォルトの名無しさん:2012/05/15(火) 12:33:30.27
ある
平気
72デフォルトの名無しさん:2012/05/15(火) 12:40:50.12
少し自分で調べなおしてみました
>>70で言ってたのは逆でした、RubyはUTF-8Nで書くんですね
Rubyの
# -*- encoding: UTF-8 -*-
は、暗黙的にutf-8nをさしていて、
UTF-8Nで保存したソースファイルでマルチバイト文字を使う為には
絶対に # -*- encoding: UTF-8 -*- を入れないとエラーになるって事でいいのでしょうか?

ここでまた1個疑問が出てきてしまったんですけど、
UTF-8で保存した時に、マジックコメントなしでもマルチバイト文字が使えちゃうのは、
何か意味があるんでしょうか?
73デフォルトの名無しさん:2012/05/15(火) 12:43:46.20
UTF-8Nという表現自体が不適切だ
UTF-8にはもともとBOMは存在しない
UTF-8とBOMつきUTF-8という列挙が妥当
BOMつきUTF-8をUTF-8と呼ぶのは意思疎通上たいへん危険
74デフォルトの名無しさん:2012/05/15(火) 12:52:35.34
了解です
それじゃBOMつきのUTF-8は気にしない事にします
75デフォルトの名無しさん:2012/05/15(火) 12:53:28.90
dgってなんだろうと思ったらグラフィックのGDのライブラリか
なんかの関係で直接rubyを呼ぶとGEMPATHかなにかの環境変数がセットされないんだろう
76デフォルトの名無しさん:2012/05/15(火) 15:04:07.49
Haskellと比較用にRubyでlength関数作ろうとしたら配列はeachメソッドで各要素にアクセスできるが、文字列はeachは行単位で、文字単位にはeach_charを使わないといけないのが分かったんだが、それだと配列と文字列で別々にlength関数作らんといかんの?
ダックタイピング出来るのがLLの利点じゃなかったのかと言いたい
(しかも、1.9からは文字列のeachも廃止になるのでeachの構文糖衣であるfor文が文字列で使えない)

以下のコードは配列だと正しい結果を返すが、文字列だと1.8系だと正しくない結果を返し、1.9系だとエラーになる(eachメソッドが無いぞゴラァ!と怒られる)

def mylength (str)
sum = 0
for i in str
sum += 1
end
return sum
end

Ruby詳しくないとは言え、この動作がおかしいのだけは理解できる
77デフォルトの名無しさん:2012/05/15(火) 15:15:43.43
>>76
・Rubyは基本的にforを使わない
・Rubyにおいて文字列と配列には全く関連性がない
・そもそもRubyの文字列は文字の集合ではない

なので、ダックタイプとかの問題ではなくて文字列を文字の集合と扱うか否かの問題
78デフォルトの名無しさん:2012/05/15(火) 16:00:46.88
>>76
Haskellでマルチバイト文字列のlengthやってみて
79デフォルトの名無しさん:2012/05/15(火) 16:07:05.75
mylength([0, 1, 2]) #=> 3
mylength('あいう'.chars) #=> 3
mylength('あいう'.bytes) #=> 6
mylength('あいう'.lines) #=> 1

文字列・バイト列・行の集合等複数の見方が有るからちゃんと指定しましょうってことよね
80デフォルトの名無しさん:2012/05/15(火) 16:09:03.31
UTF8のバイト数じゃないんだ
81デフォルトの名無しさん:2012/05/15(火) 16:10:12.83
集合は順序がないぞ
82デフォルトの名無しさん:2012/05/15(火) 16:16:17.74
そうだった
でも行列とか言うと別の物に聞こえるからなあw
行の列?これもあんまり言わない気がする

83デフォルトの名無しさん:2012/05/15(火) 17:34:26.98
>>74
Ruby1.9はBOM付きUTF-8に対応していて、マジックコメントを付けたのと同じ効果がある
BOM付きUTF-8はトラブルの元なのであまりお勧めはしないけど
84デフォルトの名無しさん:2012/05/15(火) 18:24:50.32
gem install hogehoge
の、インストール先ディレクトリを指定することはできますか。
できれば環境変数で export GEM_HOME=... とか指定できるとうれしい。
85デフォルトの名無しさん:2012/05/15(火) 19:24:24.25
nokogiriすごすぎワロタw
なにこの超絶機能。

…ところでみんなRubyで何やってんの?w
86デフォルトの名無しさん:2012/05/15(火) 22:46:09.29
初歩過ぎて申し訳ないんですが、

<table>
<tbody>
<tr>
<td class="hoge">いらない</td>
<td>ここが欲しい01</td>
</tr>
<tr>
<td class="hoge">いらない</td>
<td>ここが欲しい02</td>
</tr>
<tr>
<td class="hoge">いらない</td>
<td>ここが欲しい03</td>
</tr>
</tbody>
</table>

こんな感じで並んでるものを、
text = doc.xpath("//descendant::table[@class='hoge']//td[2]").first.text
print (text)

このように書くと「ここが欲しい01」が取れるのはいいんですが、
「ここが欲しい02」が欲しい時はどうすればいいですか?
lastだと最後になっちゃうし、secondなんてのはないし・・・?

よろしくお願いします
87デフォルトの名無しさん:2012/05/15(火) 22:47:28.68
あ、クラスの付け方間違えたorz

<table class="hoge">
<tbody>
<tr>
<td>いらない</td>
<td>ここが欲しい01</td>
</tr>
<tr>
<td>いらない</td>
<td>ここが欲しい02</td>
</tr>
<tr>
<td>いらない</td>
<td>ここが欲しい03</td>
</tr>
</tbody>
</table>

この場合です。すいません
88デフォルトの名無しさん:2012/05/15(火) 22:48:20.21
>>85
趣味で構文解析器(GLR)を作ってたらハッシュ値のバグ(仕様?)でハマった
異なるオブジェクトのハッシュ値が同じ値になる…
p [-610054458, 111138, 1, 7].hash #=> -976846141
p [-610054458, 111138, 3, 3].hash #=> -976846141

ハッシュ値が偶然ぶつかるほど大量のオブジェクトを扱ったつもりはないのに…
89デフォルトの名無しさん:2012/05/15(火) 22:53:10.45
>>88
バグだとしても、扱うときには基本的に衝突する可能性を考慮しなきゃいけないのがハッシュなんだから
ハマったのはある意味幸いじゃね?
90デフォルトの名無しさん:2012/05/15(火) 23:05:18.55
RPGツクールのスクリプトで以下のコードについて質問があるのですが

#--------------------------------------------------------------------------
# ● セーブ内容の作成
#--------------------------------------------------------------------------
def self.make_save_contents
contents = {}
contents[:system] = $game_system
-----略--------------
contents[:map] = $game_map
contents[:player] = $game_player
contents
end

「end」の上の「contents」はどういった意味があるのでしょうか?

初歩的な質問ですみません。
よろしければ御教授下さい。
91デフォルトの名無しさん:2012/05/15(火) 23:09:30.30
>>87
doc.xpath("//tr/td[2]")

>>90
そのメソッドを呼びだした側に値(contents)を返してる
Rubyでは関数の最後の式(の値)を呼びだした側に返す
92デフォルトの名無しさん:2012/05/15(火) 23:10:58.98
>>90
Rubyのメソッドは、とにかく最後の処理の値がメソッドの戻り値として利用される
最後の行に唐突に変数が1個だけ書いてあったとしたら、それは他の言語で言うところの return var だ
Ruby では「さいごの return」は通常書かない(もちろん、処理構造から途中で抜ける場合は書く)

てことで、「特異メソッドmake_save_contentsの戻り値はcontents」という意味
93デフォルトの名無しさん:2012/05/15(火) 23:11:09.67
>>87
ごめんぼけた。doc.xpath("//tr/td[2]")[1].text
94デフォルトの名無しさん:2012/05/15(火) 23:15:02.43
>>91

ご回答ありがとうございます。
C言語のreturnなのですね。
凄く省略されててビックリです。

95デフォルトの名無しさん:2012/05/15(火) 23:24:26.67
>>93
ありがとうございます。できました。
ググっても初歩すぎるのか方法がわからずに困ってました。
ありがとうございました!
96デフォルトの名無しさん:2012/05/15(火) 23:25:40.46
>>92

丁寧な説明ありがとうございます。
凄く難しい言語ですね。
Cのポインタより難しいです。
97デフォルトの名無しさん:2012/05/15(火) 23:44:00.47
[2, 8, 3].hash #=> 41
[2, 8, 1, 1].hash #=> 41

これは配列をキーとしたハッシュは使うなということだろうか
98デフォルトの名無しさん:2012/05/15(火) 23:45:59.77
使ってもいいけどfreezeはしておくべきよ
99デフォルトの名無しさん:2012/05/16(水) 12:00:34.84
質問させてください。

hoge huga piko peta 改行

という、半角スペースが1つの場合も2つの場合もある文字列を
カンマ区切りにする方法は無いでしょうか?

「hoge,huga,piko,peta」
最終のイメージはこんな感じです。
100デフォルトの名無しさん:2012/05/16(水) 12:34:50.17
>>99
a="hoge huga piko peta ¥n"
a.sub(/ +¥n/, "¥n").gsub(/ +/, ',') #=> "hoge,huga,piko,peta¥n"

で桶?
101デフォルトの名無しさん:2012/05/16(水) 13:48:03.17
>>100

教えていただいたコードから、私が当初やっていたことが完全に誤りで無いことがわかりました。
それでもさっぱりできないので、元のエンコードを変えてみたら、
スペース1つと2つではなく、スペースとノーブレークスペースが混在していました。

無事[\u00A0]を使って変換できました。
ヒントがなければ、書き方の問題だと思って、ずっと解けないままでした。
ありがとうございました
102デフォルトの名無しさん:2012/05/16(水) 13:57:37.63
ちょっと日本語がおかしいですねorz

ヒントのお陰で、コードの書き方が問題だったのではなく、
元の文字列がおかしかった(把握できていなかった)ということがわかりました。
ありがとうございます。

が、正しいですねw
103デフォルトの名無しさん:2012/05/16(水) 14:04:12.79
>>70
-Ku
104デフォルトの名無しさん:2012/05/16(水) 15:38:47.13
>>99
"hoge huga piko peta 改行".split
105uy:2012/05/16(水) 15:47:46.77
>>99
puts "
hoge huga piko peta

".split*","

だrぉ
106デフォルトの名無しさん:2012/05/16(水) 23:50:21.49
しっかし、簡単に記述できるのはうれしいが、
ネットに情報が少ないな。
公式の解説は何考えて作ったんだか分からんくらい、わかりにくいし。
あれって、読んで分かる人いるの?w
最低でもサンプルくらいほしいわ
107デフォルトの名無しさん:2012/05/16(水) 23:59:12.88
検索の仕方が悪いんじゃないか
試しにどこで詰まったか書いてみれ
108デフォルトの名無しさん:2012/05/17(木) 00:44:21.03
いやごめん、詰まってないんだ。
しっかりと希望通りに動いてるw

でもサンプルが少ないから、海外のサイトをGoogle翻訳の世話になりながら頑張ってるw
10969:2012/05/17(木) 08:50:30.59
>>75 ありがとう
#!/usr/bin/env rubyでコンソールからは安定的に動くみたい
今度は、cgiで試してるけど、2回に1回ぐらいエラーになるw

ruby: No such file or directory -- CONFIG["STATIC"] = "" (LoadError)

環境変数を出すスクリプトをコピペして、うまく表示された時のRUBY関係の変数
PATH /sbin:/usr/sbin:/bin:/usr/bin
RUBYLIB /usr/lib:/usr/lib/ruby:/usr/lib/ruby/site_ruby/1.9.1
LD_LIBRARY_PATH .:/usr/lib:/usr/lib/ruby:/usr/lib/ruby/site_ruby/1.9.1
1.9からカレントがなんちゃらかんちゃらだそうだから、試しにcgiの中で、
ENV['LD_LIBRARY_PATH']=".:/usr/lib:/usr/lib/ruby:/usr/lib/ruby/site_ruby/1.9.1"をやってる。

コンソールからenvをやると、
GEM_HOME,MY_RUBY_HOME,GEM_PATH,RUBY_VERSIONも出てくるけど関係あるのかな?
RUBYLIBはcgi表示と同じ。

同じ事例か、原因か、直し方、教えて
110デフォルトの名無しさん:2012/05/17(木) 09:27:04.38
>>109
which ruby
111デフォルトの名無しさん:2012/05/17(木) 12:05:24.68
sample_array = [["a,b,c"]]
こんな配列があって

sample_array.each do |var|

new_var = #varに対していろんな処理
print new_var

end

こうすると1つずつ書きだしてくれるのはいいんだけど、
書きだすんじゃなくて「new_var」を新しい配列にする方法ってどうするんですか??
整形した値を持つ変数をループの外で使いたいんです。
112デフォルトの名無しさん:2012/05/17(木) 12:21:26.44
なんか毎回書いてる気がするが、とりあえずArrayとHashとStringとEnumerableのメソッドは1行の動作説明だけでも読んでおくといい
「そういえばどっかにそんな処理のできるメソッドがあった気がする」とわかるだけでかなり違う

というわけで Array#map あたりを使え

p [1,2,3].map{|x| x*2} #=> [2, 4, 6]

ネストした配列になってる場合は一発でできずに若干面倒な場合があり、
ローカル変数で結果用の配列とかを用意たほうが簡便なことが多々あるがこれは仕方ないんで飲んでくれ

result = []
arr.each do |a|
a.each do |x|
result << xの内容をめっちゃ複雑に処理した結果
end
end
p result

「○○した新しい配列を返す」というメソッドで適当なの探してみ
113デフォルトの名無しさん:2012/05/17(木) 12:27:41.90
Windowsでredmineが使いたいのでgemのバンドルでrails2.xがインストールされてます
最新のrailsを単品で入れて動かしたいのですが
rubyではアプリというのはgemから入れないと動かせないような仕組みでしょうか?
gemでrailsを複数いれたりしたらおかしくなりますよね?
どうにかrailsの最新版をためすほうほうはありませんか?
114デフォルトの名無しさん:2012/05/17(木) 12:32:47.07
なるほどーこんな風に書くんですね。

「ArrayとHashとStringとEnumerableのメソッドは1行の動作説明」
一応ざっと目を通したんですが、ちゃんと覚えるまで見返しますw
115デフォルトの名無しさん:2012/05/17(木) 12:41:35.00
>>113
gemはそれを実行したrubyの位置と環境変数で区別できる
つまり、「別のruby」を別な環境変数ごと別途インストールするのがいちばん簡単
pikでどうだろう

というかRailsはRailsスレのほうが日常的に使い倒してる人がいて質問にも便利かと思う
【RoR】Ruby on Rails Part14
http://kohada.2ch.net/test/read.cgi/php/1329492840/
116デフォルトの名無しさん:2012/05/17(木) 13:01:04.19
>>115
pikを使ってみます
あと分からないことがあったらそちらで聞いて見ます
117デフォルトの名無しさん:2012/05/17(木) 13:10:08.63
>>114
Enumerableは便利メソッドの宝庫なんで慣れても良く見に行くよ
118うy:2012/05/17(木) 13:55:55.29
yu=[
  [1,2,3] ,
  [33,44,55] ,
]
.inject [] do | u , y |
  u << y.map do | uy |
    uy*10
  end
end
p yu
119デフォルトの名無しさん:2012/05/17(木) 15:50:55.44
Shift_JISで保存して
puts "予定"
を実行してもエラーも文字化けも起きません
RubyはShift_JISの5C問題に対応しているからでしょうか?
120デフォルトの名無しさん:2012/05/17(木) 16:29:10.81
サイトの画像と、テキストの情報を抜き出して
整形してから保存するってのを作ったんだけど、
コマンドプロントで動かしてるけど、意外に時間かかるね。

他に早く処理できる実行方法とかあるの?
121デフォルトの名無しさん:2012/05/17(木) 17:24:52.00
>>119
環境変数に RUBYOPT=-Ks とか書いてあるんじゃない?
無効にすれば普通に化けたりするはず
122uy:2012/05/17(木) 18:48:55.54
>>120
うp
123デフォルトの名無しさん:2012/05/17(木) 19:39:10.84
>>120
あらかじめ保存してある画像とテキストを読み込んで処理しても遅かったならまたおいで
124デフォルトの名無しさん:2012/05/17(木) 21:17:29.91
以下のようなネットのサンプルソースに def[](id)という書き方があったのですが
どのような使い方をするのでしょうか?

def [](id)
@list[id] = aaaa.new(id) if @list[id].nil?
return @list[id]
end
125デフォルトの名無しさん:2012/05/17(木) 21:27:41.90
この質問時々来るNE!

c = C.new
c[arg]

というようにHashのキーやArrayの添字のようにアクセスさせたい場合、特別に

class C
def [](arg)
...
end
end

というようにメソッドを定義する
126デフォルトの名無しさん:2012/05/17(木) 22:07:33.09
また以下のソースについてですが、return []は何を返すのでしょうか?


Class B
def keys
return [] if AAA[@id].nil?
if AAA[@id].is_a?(Hash)
return AAA[@id].keys.sort
end
return []
end
end


>>125
ご回答ありがとうございます。
検索にも引っかからないので助かりました。
127デフォルトの名無しさん:2012/05/17(木) 22:16:45.37
>>126
何をって、字面通り空の配列だが…
128uy:2012/05/17(木) 22:28:20.29
p nil == []
p [] == Array.new
p [].empty?
p [].class
p "".class
p nil.class
p nil.class.class.class.class.class.class.class.class.class.class.class.class
129デフォルトの名無しさん:2012/05/17(木) 22:29:03.07
>>126
たのしいRubyでも買っちゃったほうがいいと思うよ。Webで済ませたいならこれか
http://www.ie.u-ryukyu.ac.jp/~kono/software/s04/tutorial/
130120:2012/05/17(木) 22:38:19.05
>>123
ローカル環境で試したらさっくさく動きましたw
しかしRubyはすごいね。こんな簡単で多様性を持った言語って他にないな。
って何個かしか言語しらんけどw

あとこの掲示板のサポート体制が神w
131デフォルトの名無しさん:2012/05/17(木) 22:57:35.70
>>127
ありがとうございます。
空の配列を返す意味がよく分からないですが
0でもいいような気もします。

>>130
表記が簡単ですが、検索に引っかかりにくいので
Webでの学習は難しいかな。
132デフォルトの名無しさん:2012/05/17(木) 23:04:37.98
>>131
場合によって数値を返したり配列を返したりと変わると面倒だろ?
もちろん場合によって返す型が変わるメソッドも書けるのはRubyの利点でもあるが
どの場合でも配列を返す、と統一されてるほうが基本的には利用し易いと思うよ経験上
133デフォルトの名無しさん:2012/05/18(金) 00:32:44.66
>>122
全然upするようなものじゃないですw
でも、「こう来たらこう」「さらにこの時はこう」「残念、そのイレギュラーも想定済みだ」

みたいな感じで意図した通りに動くプログラムを眺めるのって快感だw
134デフォルトの名無しさん:2012/05/18(金) 01:30:06.58
>>131
別になにを返してもいいよ
そのメソッドの戻り値をどうやって使うかという設計にのみ依存する
中身の入った配列か空の配列を返す、という構造の場合、アテにしてる動作の根拠はこれだ

arr1 = [1,2]
arr1.each{|x| puts "#{x}です"}

arr2 = []
arr2.each{|x| puts "#{x}です"}

「1です」「2です」の次に何が表示されるか
…もちろん、なにもしないし、例外も起きない

[] は Array クラスのオブジェクトだから each メソッドを使ってもエラーにならず、
なおかつ each メソッドは self が空の配列の場合ブロック内部の処理を単に飛ばして self を返す
しかも Array クラスの大部分のメソッドは each メソッドを使って書かれているので
arr2.map{|x| x*10} はエラーではなく [] を返すし、 arr2.find{|x| x.odd?} もエラーではなく nil を返す

もちろん件のメソッドが0を返しても構わない(Rubyでは非該当のシグナルはnilのほうがいいとは思うが)
ただし、その場合は b.keys.each{...} と書いて順調に動いてた部分が、ある日突然 NoMethodError で止まる
スクリプト書いた人は首を傾げ、B クラスのマニュアルを見て、ソースを読んで、
「もし該当がなければ0を返す」というトンデモ記述を目の当たりにして呪詛を吐きつつ、
return_keys = b.keys
if return_keys.zero?
# なにもしない
else
return_keys.each{...}
end
というめんどくさい記述に書き換える
135デフォルトの名無しさん:2012/05/18(金) 02:10:28.06
あるメソッドの内部処理が「ダメだった」場合に空のオブジェクトを返すかnilを返すか自作例外を発生させるかの定まった回答はない
そのメソッドやクラスがどういう場面で使用されるか、をよく考えた上で自分で決めるしかない

B#keysが[]を返すのは、空のHashに対するHash#keysが[]を返すことからの類推と、
そのB#[]の作者が[]メソッドに照会の機能を持たせてるからだと思う
メソッドの戻り値の内容はこっちで吟味するからとりあえず配列を返しといて下さい、という
136デフォルトの名無しさん:2012/05/18(金) 10:50:05.63
すみませんpikを使うと複数のRuby+gemの環境を構築できるようですが
Rubyは1つだけインストールしてgemだけ複数の環境を用意する方法ってございませんか?
HDDの容量の都合でRubyを環境ごとにインストールするのが厳しいです
137デフォルトの名無しさん:2012/05/18(金) 10:58:50.42
GEM_HOMEで切り替えるとか、アプリ毎に環境を分けるのであれば
bundle使えば良さそうな気がする
138デフォルトの名無しさん:2012/05/18(金) 11:01:37.23
間違えたbundlerだった。。。
139デフォルトの名無しさん:2012/05/18(金) 11:04:12.10
rubyと添付ライブラリ本体ではなく、gem(とRails)を複数インストールすること自体がHDDを圧迫してるんじゃないか説が…
あ、pikってrubyのソース玉も保持するんだっけ?

環境変数 GEM_HOME を環境ごとに設定してインストールし、環境変数 GEM_PATH を欲しい環境ごとに設定して利用すれば理屈上はいける
WebサーバでRailsを起動するのに環境変数を任意に設定する方法があるのかどうかまでは知らない
>>137の言うようにbundlerでもなんとかなったと聞いた記憶があるけどWindowsで動作するのかとかはよく知らない
140デフォルトの名無しさん:2012/05/18(金) 11:04:23.32
ググって見たところ僕にもなんとかできそうなのでGEM_HOMEかbundlerで試してみたいと思います
ありがとうございます
141デフォルトの名無しさん:2012/05/18(金) 11:26:55.37
>>137さん
>>138さん
>>139さん
>>140さん
レスを読んでたらちょっと気になることがあるので質問させてください
RubyInstallerのzip版をC:\Ruby193に手動で入れてるんですが
環境変数のpathにC:\Ruby193を入れてからdevkitをインストールしました
GEM_HOMEというのは今まで入れないで使ってきたのですが登録しないとダメでしょうか?
142デフォルトの名無しさん:2012/05/18(金) 11:43:17.54
何もまだファイルにかかれていない状態のRubyファイルを実行した時に
何らかの処理をさせる事ってできませんか?
143デフォルトの名無しさん:2012/05/18(金) 11:46:20.85
>>141
デフォルトでgemのインストール先とかは設定されているからダメじゃないよ。
(インストール先を変更する必要があれば設定する)
現在のgem環境は、
gem environment(gem e でもOK)
で確認できるから見るといいよ。
144デフォルトの名無しさん:2012/05/18(金) 11:49:24.70
>>141
日本語文献が少ないんだよな

GEM_HOME と GEM_PATH は gem のデフォルト動作を変更するのに使う
なにも設定しなかった場合、gem ライブラリは実行に使った ruby.exe から見て ../../lib/ruby/gems (つまり{RUBYDIR}/lib/ruby/gems)にインストールされる
これを変更したい場合は GEM_HOME を設定することで変更することができる
GEM_HOME 以外にも指定方法があったはずで、確か GEM_HOME は使わないでというのがあった記憶がうっすらあるが、
GEM_HOME 派は根強い
145デフォルトの名無しさん:2012/05/18(金) 11:49:52.72
>>142
勉強になりました
146デフォルトの名無しさん:2012/05/18(金) 11:50:26.64
安価ミス
>>143
>>144
勉強になりました
147デフォルトの名無しさん:2012/05/18(金) 11:50:33.21
>>142
それは「してはいけない」

使い方が間違っている
なんのためにそれやりたいのか言ってみ
148デフォルトの名無しさん:2012/05/18(金) 11:57:29.78
>>147
Rubyでゲームを作っていて
main.rb というファイルに
require "./game/player"
require "./game/naiyou/enemy"
...
など、いろいろrequireしているのですが、

player.rb のほうをRDEで編集している時に、
RDEからプログラムを実行するには
main.rbのほうにタブを移動してF5を押さないと出来なくて、

それが面倒なので現在
player.rbなどには
行頭に
http://codepad.org/kTKwNjFk
こういう記述をしています
(main.rbをディレクトリから探してrequireする)

これをなくせないかなぁと思いました
149デフォルトの名無しさん:2012/05/18(金) 12:03:13.40
テスト書けテスト
150デフォルトの名無しさん:2012/05/18(金) 12:11:54.40
なんでRuby初心者がRDEなんて修羅の道を…

一般論としては、やっぱテスト書けってことになるのかね
スクリプトファイルを慎重に直接実行して目を皿のようにして様子を見るのではなく、
「このクラスのこのメソッドはこの値を渡すとこんな値を返すはず、正解と比較してエラーなら止まる」
ということを羅列した特別なRubyスクリプトのほうを実行する
全てのチェックが正しければなにも起こらないので編集を継続すればいい

autotestみたいなのってWindowsでも動いたっけ?
151デフォルトの名無しさん:2012/05/18(金) 12:19:18.34
(´;ω;`)ウッ…ありがとうございました
152デフォルトの名無しさん:2012/05/18(金) 12:21:25.80
どんなゲームかにもよると思う(どんな段階なのかも)
ウィンドウあげてキャラチップ動かしてる段階だと、その部分のテストは大変

自動で実行をして欲しいってことだけなんだし、テストファイルで直接ウィンドウ立ち上げて目視してもらえばいいだけか
153デフォルトの名無しさん:2012/05/18(金) 12:46:38.71
ゲームシーンがあって、シーンごとにファイルが違う感じです
Rubyでゲーム開発が無理してることは承知しているのでこのまま頑張る事にします
154デフォルトの名無しさん:2012/05/18(金) 13:04:38.16
>>148 main.rbをショートカット付きでマクロとして登録しとくのが楽。つかなんでこの文脈でテスト書けなんて出てくるんだ
155デフォルトの名無しさん:2012/05/18(金) 13:09:48.60
Windows + Ruby1.9.3にpassenger+apacheでRubyでwebサイト(Hello Worldを表示するところから)を作りたいと思います
apache2.4をインストール済みです。
http://redmine.jp/tech_note/apache-passenger/を見ながら作業しています
コマンドプロンプトを立ち上げてgem install passengerでpassengerをインストールしました。
passenger-install-apache2-moduleと入力を打つ
----------------------------------------------------------------------------
Welcome to the Phusion Passenger Apache 2 module installer, v3.0.12.

This installer will guide you through the entire installation process. It
shouldn't take more than 3 minutes in total.

Here's what you can expect from the installation process:

The Apache 2 module will be installed for you.
You'll learn how to configure Apache.
You'll learn how to deploy a Ruby on Rails application.

Don't worry if anything goes wrong. This installer will advise you on how to
solve any problems.

Press Enter to continue, or Ctrl-C to abort.
--------------------------------------------------------------------------------
と表示されたので、Enterを押したらhttp://codepad.org/X1f0UwNj (長いのでURLに記入)が表示されてしまい設定できません
検索してもほとんどLinuxでインストールする方法しか見つからず解決方法がわかりません
どなたかアドバイスお願いします
156デフォルトの名無しさん:2012/05/18(金) 14:57:11.96
PassengerはWindowsをサポートする気がなかったと思ったが。
157デフォルトの名無しさん:2012/05/18(金) 16:55:40.88
そうだったんですが・・・
Passengerをアンインストールしました
あとMongrelも試してみたんですが起動できずこれもアンインストールしました
webrickで頑張ります
158デフォルトの名無しさん:2012/05/18(金) 23:59:56.41
つうかRuby使うならWindows使うのを止めるべき。
無駄な労力が必要になる。
159デフォルトの名無しさん:2012/05/19(土) 00:28:29.24
激しく同意
RubyはWindows上で使うもんじゃない
160デフォルトの名無しさん:2012/05/19(土) 00:49:09.89
だって秀丸が無いと厳しいですし・・・
161デフォルトの名無しさん:2012/05/19(土) 09:02:29.94
秀丸の何が良いのか未だに分からん
162デフォルトの名無しさん:2012/05/19(土) 09:03:46.42
windows で jruby 使ってみたけど意外に良かったよ
rails も動かせたし
163デフォルトの名無しさん:2012/05/19(土) 09:39:14.51
jrubyってまだ1.9.2しか対応してないのか…
164デフォルトの名無しさん:2012/05/19(土) 09:47:03.72
まあかなり無茶やってruby処理系やってるんで、ひとつひとつ対応していかないと
165デフォルトの名無しさん:2012/05/19(土) 09:53:49.28
むしろ1.9.2まで対応してることが凄いくらいだよw
166デフォルトの名無しさん:2012/05/19(土) 10:00:46.31
そら理屈上は動作するけどそんなことやる奴おらへんやろ、をなぜか実現してるプロジェクトだからな
167デフォルトの名無しさん:2012/05/19(土) 10:02:13.20
>>160
編集作業をするOSとプログラムを実行するOSが同一でなければならない理屈はない
168デフォルトの名無しさん:2012/05/19(土) 10:17:32.54
stack level too deep (SystemStackError)

大規模な再帰呼び出しができないとかrubyって言語として大丈夫なの?
これじゃ木構造とか扱い辛い
スタック使って書き直すのはやりたくない
169デフォルトの名無しさん:2012/05/19(土) 10:27:33.10
それ構造が循環しちゃってるだけだから…
170デフォルトの名無しさん:2012/05/19(土) 10:36:27.25
してない
構造の大きさを徐々に大きくしてテストしたから
これは確か
171デフォルトの名無しさん:2012/05/19(土) 10:38:09.22
よほど深い木構造を操作してるとか?
172デフォルトの名無しさん:2012/05/19(土) 10:39:12.55
>>169
無限再帰でなくても落ちるよ

# recur.rb
def get_last_elem(ary)
# 空の配列を渡すと死にます
return ary[0] if ary.size == 1
ary.shift
get_last_elem(ary)
end
p get_last_elem((1..10000).to_a)

% ruby recur.rb
recur.rb:2: stack level too deep (SystemStackError)
173デフォルトの名無しさん:2012/05/19(土) 10:45:37.25
落ちるパターンにぶつかることが稀にあるね

$ ruby -e 'def mes(i) print i;mes(i+1) end;mes 0'
01234567891011121314151617181920212223
...
1787188719872087218722872387248725872687278728872987308731-e:1: stack level too deep (SystemStackError)
174デフォルトの名無しさん:2012/05/19(土) 10:48:43.02
>>173
それはどこで再帰が終了するんだ?
175デフォルトの名無しさん:2012/05/19(土) 10:57:12.96
ちょっと気になって調べたら
http://d.hatena.ne.jp/bellbind/20070611/1181561807
を見つけたので、自分とこで確認してみたら

x86_64-linux 1.9.3 (2011-10-30)
#<SystemStackError: stack level too deep>
recursive size: 8734
となった。
176デフォルトの名無しさん:2012/05/19(土) 13:17:43.42
ruby 1.9.2p0 (2010-08-18 revision 29036) [i686-linux]
では、9356段までだった
ttp://ideone.com/6ntPo
177デフォルトの名無しさん:2012/05/19(土) 13:59:39.60
ruby 1.9.3p194 (2012-04-20 revision 35410) [i386-mingw32]

i386-mingw32 1.9.3 (2012-04-20)
#<SystemStackError: stack level too deep>
recursive size: 8734
178デフォルトの名無しさん:2012/05/19(土) 15:01:50.17
なんかLLバトルスレ向きのレスなんだけど

ruby 1.9.3p194 (2012-04-20 revision 35410) [i386-mingw32] だと
def mes(i)
puts i
mes i+1
end
mes 0
が、8731まで表示して stack level too deep (SystemStackError) で落ちた

Python 2.7.1だと
def mes(i):
print(i)
mes(i+1)
mes(0)
998まで表示してRuntimeError: maximum recursion depth exceeded で落ちた

Perl 5.12.1だと
sub mes{
my $i = shift;
print $i,"\n";
mes($i+1);
};
mes(0);
3722238まで表示してOut of memory!で止まった
どんどんとメモリを消費していって最終的に1.2Gほど使ってた
179デフォルトの名無しさん:2012/05/19(土) 15:04:04.80
Lua 5.1.3だと
function mes(i)
print(i)
mes(i+1)
end
mes(0)
16378まで表示してstack overflowで落ちた


Gauche 0.9.2だと
Schemeはあいかわらずよくわからんので、Webをみながらてきとうに書いてみるのですが
(define (mes i)
(print i)
(mes (+ i 1)))
(mes 0)
止まる気配がなかった
末尾最適化が利いているのでしょう
180デフォルトの名無しさん:2012/05/19(土) 15:07:18.10
おまけで
ruby 1.9.3p194 (2012-04-20 revision 35410) [i386-mingw32] で

RubyVM::InstructionSequence.compile_option = {tailcall_optimization: true, trace_instruction: false}
eval <<'EOS'
def mes(i) puts i;mes(i+1) end
mes 0
EOS

止まる気配がない
たぶん末尾最適化が利いて無限ループしてるはず

デフォルトで末尾再帰最適化が有効になってないのは何がまずいのだろう?
181デフォルトの名無しさん:2012/05/19(土) 16:42:16.40
理論上はすべての再帰は末尾再帰に変換できるんだっけ?
182デフォルトの名無しさん:2012/05/19(土) 17:21:35.07
そりゃプログラムを丸ごとCPSに変換すりゃ、全部末尾ジャンプになるけど、
「ifとgotoさえあればなんでも書ける」ってのと同じで、意味のない言明だよ。
183uy:2012/05/19(土) 17:30:34.59
理論上は~って話をしたらプログラムの世界では全てが可能だろね
今のPCスペックと人間スペックでかけるかどうかが問題
184デフォルトの名無しさん:2012/05/19(土) 17:39:27.23
>>180
こんなことが出来たのか
勉強になるなぁ。
ありがとう!
185デフォルトの名無しさん:2012/05/19(土) 18:22:00.98
schemeは全部末尾再帰に変換することを仕様で義務づけてなかった?
186デフォルトの名無しさん:2012/05/19(土) 18:30:54.54
要求としては、末尾コンテキストにある呼び出しなら、それを繰り返しても、
スタックが溢れたりしないこと。
187デフォルトの名無しさん:2012/05/19(土) 18:33:11.01
>>185
それは末尾再帰最適化が仕様に含まれているので
末尾再帰がループと同等に扱えるって話じゃ


(Pythonは使ってないもので)
再帰の回数に制限がかかってたのを思い出した

Python 2.7.1にて
import sys
sys.setrecursionlimit(100000)
def mes(i):
print(i)
mes(i+1)
mes(0)

9663まで表示してMemoryError: stack overflow で落ちた
負けた……
188デフォルトの名無しさん:2012/05/19(土) 18:33:44.33
末尾再帰の最適化(ループへ変換とか)は要求されているが
再帰を末尾再帰に変換する義務はない、ということか。
189デフォルトの名無しさん:2012/05/20(日) 00:44:44.64
そもそも任意の再帰を末尾再帰に変換するのは
勝手に環境フレーム相当のものをヒープに用意したりしない限りは
無理じゃないのと思うんだが
190デフォルトの名無しさん:2012/05/20(日) 09:07:27.53
OSがアプリケーションごとに使っていいスタックサイズ変更とか出来るようになればいいだけ
動的に生成された再帰コードを末尾再帰に変換しようぜとか今の人間の技術じゃない
191デフォルトの名無しさん:2012/05/20(日) 09:41:23.21
もしLinuxでRuby 1.8の人いたらulimit -s <stacksize>してから
上のスクリプト試すとどうなるかやってみて
(うちのLinux/Ruby1.9では効果なし)
192デフォルトの名無しさん:2012/05/20(日) 09:48:12.89
>>190 まずは Proper Tail Recursion and Space Efficiency を読め。
話はそれからだ。
193デフォルトの名無しさん:2012/05/20(日) 09:54:39.24
>>191
うちでも1.9.3では効果なかった。
でも1.8.7では、
スタックサイズ 8192 で 4101
スタックサイズ 16384 で 8794
スタックサイズ 32768 で 18152
と効果が見られた。
194デフォルトの名無しさん:2012/05/20(日) 10:06:02.95
ありがと。やっぱり1.8では効果あるのね
195デフォルトの名無しさん:2012/05/20(日) 10:24:25.61
TKでプログラムを実行したときにウィンドウを出さずコンテキストメニューを表示させるサンプルが載ってるサイトはありませんか?
どれも右クリックでメニューを出すものは見つかるのですが自動的にメニューを表示させるサンプルが見つかりませんでした
196デフォルトの名無しさん:2012/05/20(日) 12:57:00.58
>>195
元のTkでそのようにする方法を調べて、それをRuby/Tk上で書く
197デフォルトの名無しさん:2012/05/20(日) 14:05:27.20
passenger, mongrel, unicorn, webrick以外でwindowsで動かせる奴ってありませんか?
198デフォルトの名無しさん:2012/05/20(日) 14:44:06.84
thin
199デフォルトの名無しさん:2012/05/20(日) 18:14:01.72
python
200デフォルトの名無しさん:2012/05/20(日) 20:13:13.87
やっぱりここの先輩方は何かプログラムを書くときにプロジェクト管理を使ったりテストをしたりするものですか?
201デフォルトの名無しさん:2012/05/20(日) 22:52:03.08
RubyInstallerでWindowsに1.9.3を入れたんですが
コマンドプロンプトから
ruby -v
ってやるとパスが通っているのかバージョンがちゃんと表示されます
ただし、batファイルに
ruby -v
と書いて実行すると
>'ruby' は、内部コマンドまたは外部コマンド、
>操作可能なプログラムまたはバッチ ファイルとして認識されていません。
ってエラーになります

これはなぜですか?
202デフォルトの名無しさん:2012/05/20(日) 22:58:17.17
>>201
そのコマンドプロンプトは偽物だ
ruby consoleはあらかじめパスを通したコマンドプロンプトのウィンドウを出す
普通のバッチファイルでruby.exeを使いたいなら、そのruby.exeを実行したい人の環境変数でパス通せ
203デフォルトの名無しさん:2012/05/20(日) 23:01:47.25
つまりどういうことですか?
システムにrubyのbinフォルダを登録しなくちゃいけないってことでしょうか?
204デフォルトの名無しさん:2012/05/20(日) 23:19:27.62
>>203
だいたいそんなところ
詳しくは「パスを通す」でググれ

Vista以降でシステム環境変数でなくユーザ環境変数に登録したいなら
コントロールパネル開いて右上の検索ボックスに「環境変数」と入力
205デフォルトの名無しさん:2012/05/20(日) 23:20:02.98
そのruby.exeを実行したい人の環境変数でパス通せ

これしか言いようが無い
わからんかったらお前向いてない
206デフォルトの名無しさん:2012/05/20(日) 23:22:00.01
RubyInstallerではexeとzipがありますが
exeでインストールすると勝手に環境変数も入れてくれると思ってたんですが
exeでインストールするメリットってzipと比較してないと考えていいんでしょうか
207デフォルトの名無しさん:2012/05/20(日) 23:29:29.00
普通に入れたらパス通らなかったっけ?
環境が変なんじゃね
208デフォルトの名無しさん:2012/05/20(日) 23:39:39.35
>>200
ふつうRedmine RSpec Jenkinsな感じ。
209デフォルトの名無しさん:2012/05/20(日) 23:40:54.39
ぐぐったらexeだとインスコ時にAdd Ruby executables to your PATHみたいに聞かれるらしいね
210デフォルトの名無しさん:2012/05/21(月) 00:26:44.53
>>195
メニューだけ表示してなんかして終了するの?

require 'tk'
menu1 = Tk::Menu.new tearoff:false do
add :command, {label:'Ok',command:->{puts 'menu Ok';exit}}
end

Tk::Wm.withdraw Tk.root
Tk.after 100,->{menu1.popup TkWinfo.pointerx(Tk.root), TkWinfo.pointery(Tk.root);exit}
Tk.mainloop

こんなのだろうか?
正しいのかわからんけど
211デフォルトの名無しさん:2012/05/21(月) 10:00:41.76
文系なので、解らないのですが、なぜ、Rubyは、JavaやC言語で、記述されていて
Rubyそのもので、記述されていないのでしょうか?
212デフォルトの名無しさん:2012/05/21(月) 10:16:10.82
>>211
コンパイラじゃないから
213uy:2012/05/21(月) 10:23:16.94
実行速度は アセンブラ>C言語>JAVA>>>>Ruby
開発効率は Ruby>>JAVA>>>>C言語>>>>>>>>>>>>>アセンブラ
です。

なるべく実行速度の速い言語で、言語処理系をつくりたいんです
あと、Rubyは動的言語っていうものなのでRubyそのもので記述しようとするなら
eval ""
で終わり
214デフォルトの名無しさん:2012/05/21(月) 10:35:09.80
>>212

ありがとうございます。
インタプリタ言語では、プログラミング言語は、記述
215デフォルトの名無しさん:2012/05/21(月) 10:38:26.77
214ミスりましたすみません。

つづき、記述ができても、処理系に向いていないということで、将来、処理速度
が向上したら、できる可能性もあるのでしょうか。
216デフォルトの名無しさん:2012/05/21(月) 10:44:34.70
>>215
Cプログラムで動作しているOSと遣り取りする部分のプログラムをCで書かない理由ってなに?
217デフォルトの名無しさん:2012/05/21(月) 10:47:01.95
学んでて、文系としては、全部Rubyなら、いいのにと面倒くさがりました。

その後、宗教論争などを見て、反省もしましたが、疑問はつきませんでした。
218デフォルトの名無しさん:2012/05/21(月) 10:49:40.45
>>216

ですから、
インラインアセンブラの話が、C言語では、この話に近いと思われます。

正直、わかりません。言い訳になりますが、説明をあまり見かけないのです。
219デフォルトの名無しさん:2012/05/21(月) 11:12:11.61
>>218
もしRubyインタプリタをRubyでコーディングするとしたら
そのRubyコードを実行するRubyインタプリタは何で書くの?Rubyで書きたい?
220デフォルトの名無しさん:2012/05/21(月) 11:28:12.75
マシン語で記述されてるレベルのRubyのハードやOSがあれば、いいのでしょうか
221デフォルトの名無しさん:2012/05/21(月) 11:30:44.42
>>219

理想からすると、
Rubyの方が、コードを読みやすいはずです。

文系では、他の分野で、読まなければならない本が、やたら多いので、
入り方が、重要なのです。
222デフォルトの名無しさん:2012/05/21(月) 11:31:32.96
coffeescriptなんかもあるよ。
223デフォルトの名無しさん:2012/05/21(月) 11:33:21.47
文系なら読点くらいまともにしたらどうだろう。息上がってんのか?
224デフォルトの名無しさん:2012/05/21(月) 11:37:28.69
>>221
私も文系です。釣りならお帰りください
そうでないならブートストラップ問題でぐぐって熟読したうえで他で聞いてください
それかPythonにはPythonで実装されたPyPyって処理系があるのでそっちに行ってくれてもいいです
225デフォルトの名無しさん:2012/05/21(月) 11:38:57.26
挑発をしたわけでなくて、理解度の問題でした。

つまり、アセンブラを学ぶのと、Rubyを学ぶのでは、どの道、C言語拡張まで
想定してRubyを学び、開発者を目指すなら、アセンブラ回帰が必須になり、
技術の修得スピードと翻訳、文献の量の問題が、大きいですね。

開発スピードの矛盾を発見したわけです。これは、おかしい。
226デフォルトの名無しさん:2012/05/21(月) 11:40:31.87
>>224

Pythonびいきではないし、アンチではないですよ。
227デフォルトの名無しさん:2012/05/21(月) 11:42:06.13
Rubyは早く書けることを主体にした言語なのに
if~endの「end」を入力するのが苦痛です
何故endを書かないといけない仕様なんですか
if~eでいいじゃないですか
228デフォルトの名無しさん:2012/05/21(月) 11:43:02.24
WindowsでまともにRubyを動かせるWebサーバがありません
クロスプラットフォームで動く動的言語なのにこれは致命的です
229デフォルトの名無しさん:2012/05/21(月) 11:53:12.58
つまり、ダダこねてるのでなくて、

実際問題、おそらくは、Rubyから入門するというケースが、外されてしまうのは
損失ですね。将来的には、Ruby ですべて、こなせるという目的は、ないと思われ
てしまう。
230デフォルトの名無しさん:2012/05/21(月) 12:10:13.15
春休みって随分長いんだな
231デフォルトの名無しさん:2012/05/21(月) 12:13:12.15
脅かすつもりもなかったし、過去の論争の苛立ちからするとギリギリの

ラインの質問ですまなかった。

掲載しろとは言わないが、Rubyの入門書に期待したい。

RHGを読むときの理解度にも関わるので、ちょっと聞いてみたんだ。

すまない。
232デフォルトの名無しさん:2012/05/21(月) 12:17:07.52
反論できない話になるとすぐ春休みとかに逃げるよね
233デフォルトの名無しさん:2012/05/21(月) 12:31:35.79
初心者からすると、

Ruby開発者は、開発時間の比率からするとRubyでなくて、

C言語、JAVA言語をやってるんですね。

これを、言わせない説明方法を、教えてください。
234デフォルトの名無しさん:2012/05/21(月) 12:34:14.99
Rubinius とか Mirah とかを覗いてみると楽しいかもね
初心者向けではないかもしれないけど
235デフォルトの名無しさん:2012/05/21(月) 12:44:26.74
>>234

がてんがいったので、

しばし、勉強して、後日きます。



236デフォルトの名無しさん:2012/05/21(月) 12:47:00.30
>>233
>Ruby開発者は、開発時間の比率からするとRubyでなくて、
>C言語、JAVA言語をやってるんですね。

これ自体は別に不思議なことでも、悪いことでもない
CRuby開発陣はCプログラマばっかりだと言われることがあるのと同様
JVMを書いている開発者だって恐らくC系言語を使っているだろう

もちろん、言語処理系上のライブラリ開発者であれば
Pure Rubyで記述している場合もあるだろう
237デフォルトの名無しさん:2012/05/21(月) 12:49:44.84
>>236

重ねて感謝、ありがとうございました。助かります。
238デフォルトの名無しさん:2012/05/21(月) 14:52:40.66
読み込んだwebページのテキストをメモ帳に出力するのってできますか?
239デフォルトの名無しさん:2012/05/21(月) 15:03:02.70
取得した内容をテキストファイルにに書き出すのか
取得した内容をメモ帳に貼り付けるのかどっちだい?
両方できるが
240デフォルトの名無しさん:2012/05/21(月) 15:04:17.89
やっぱり国産言語だからPythonよりRubyを選んでこれから勉強しようと思ってます。
Rubyをやる場合に基礎が身につく入門書ってありませんか?
10日で覚える系のは論外です
241デフォルトの名無しさん:2012/05/21(月) 15:04:30.20
>>239
前者です!
242デフォルトの名無しさん:2012/05/21(月) 15:06:29.97
require "open-uri"
open("http://www.defense.gov/"){|f| $s = f.read}
open("test.html", "w"){|f| f.write($s)}
`start notepad.exe test.html`
243デフォルトの名無しさん:2012/05/21(月) 15:11:05.71
>>242のようなのは真似しないように
244デフォルトの名無しさん:2012/05/21(月) 16:12:10.79
open(require("open-uri").to_s,"wb").print open("http://google.co.jp/").read
245デフォルトの名無しさん:2012/05/21(月) 17:15:56.52
>>244
うまくいきません\(^o^)/
ttp://www.ruby-lang.org/ja/documentation/
にアクセスしてメモ帳に
ここでは、マニュアルなどのドキュメントを紹介します。…
を出力したいのです
1.8.7です
246238:2012/05/21(月) 17:38:00.86
これで出力できました
ここから<p>とか<div>をとる方法を模索中です

require 'rubygems'
require 'mechanize'
require 'kconv'
require 'open-uri'

agent = Mechanize.new
agent.get('http://www.ruby-lang.org/ja/documentation/')
p = agent.page.at('p')
`start notepad.exe p`
247デフォルトの名無しさん:2012/05/22(火) 06:24:09.67
rubyでos作ると思って速攻で挫折したの思い出した。
シェルスクリプトなんてルビーで置き換えられるじゃないと思って¥、シェルの代わりにルビーを指定したらログイン不能になったわw

過去のトラウマ。
あうあうあー。

ウィンドウズでサーバ自体とんでもなく手間が掛かる。
教祖様と同様にatt unixがいいね。デビアンは使いにくいけど。
248デフォルトの名無しさん:2012/05/22(火) 07:10:52.57
>>211
>文系なので、解らないのですが、なぜ、Rubyは、JavaやC言語で、記述されていて
>Rubyそのもので、記述されていないのでしょうか?

いい質問です。独力でそこに気づいたのなら、文系とはいえかなりのセンスの持ち主です。
すでに234が書いてますが、Rubiniusという処理系が、まさにRubyそのもので記述されたRuby処理系です。
本家RubyはCで書かれた処理系、JRubyはJavaで書かれた処理系、RubiniusはRubyで書かれた処理系、といえます。
とはいえRubiniusが100%Rubyで書かれているかというと、そういうわけではなく、RubyのサブセットをC++とLLVMで作り、
そのサブセットでフル仕様のRubyを記述しています。つまり2段構え。
このような仕組みだと遅いように思うでしょうが、RubiniusはJITを搭載しているので、最初の読み込みこそ遅いものの、そのあとは本家Rubyよりも速いです。
このような仕組みはSmalltalkが確立した方法で、昔から有名です。PythonだとPyPyという処理系が同じ仕組みです。

なお初心者相手だと>>213>>219みたいなゴミが湧き出ますが気にしないでください。ごめんねあんなやつらを相手にさせて。
249デフォルトの名無しさん:2012/05/22(火) 08:23:49.17
その辺を考えるとosを作れるcは偉大だな。
まだjavaもrubyもpyもsmalltalkもosを作り出せてない。
250デフォルトの名無しさん:2012/05/22(火) 09:00:17.00
Cの偉大さはけっして揺るぐものではないので、
たまにはAPLマシン、LISPマシン、Smalltalkマシン、Prologマシンのことも
思い出してあげてください。
251デフォルトの名無しさん:2012/05/22(火) 09:13:05.99
252デフォルトの名無しさん:2012/05/22(火) 13:00:29.09
初心者すぎて昨日からスマソ
以下を実行した時に取得できるテキストをメモ帳に書きだすのはどうすれば良いでしょうか?
コマンドプロンプトに表示させる必要はないのでputはなくて良いのですが…

require 'rubygems'
require 'mechanize'
require 'kconv'

agent = Mechanize.new
agent.get('http://www.ruby-lang.org/ja/documentation/')

agent.page.search('p').each do |p|
puts p.inner_text.tosjis
puts '---'
end
253デフォルトの名無しさん:2012/05/22(火) 13:06:57.13
>>210
これ見て勉強します
254デフォルトの名無しさん:2012/05/22(火) 14:00:13.09
>>252
まとめてやろうとすんな
一気にやろうとせずに段階踏んで別々にやって、その成果を最後に組み合わせろ

「自作の” ”で囲った文字列を画面に表示する」
「自作の” ”で囲った文字列を変数に代入し、変数の内容を文字列として画面に表示する」
「ファイルにアクセスしてその内容文字列を画面に表示する」
「変数の内容を画面に表示するかわりにファイルにアクセスしてそこに書き込む」
「実際にやりたいメソッドの戻り値を変数に代入し、ファイルにアクセスしてそこに書き込む」

前の4つができていないと、最後のひとつはできない
255デフォルトの名無しさん:2012/05/22(火) 14:19:32.28
>>252がスクリプト実行するたびにRuby公式のサーバにアクセスしまくってるんだと思うと目頭が熱くなるな
256デフォルトの名無しさん:2012/05/22(火) 14:24:06.14
`start notepad #{!!open((!require("open-uri")).to_s,"wb").print(open("http://google.co.jp/").read)}`
257デフォルトの名無しさん:2012/05/22(火) 14:29:40.49

require 'rubygems'
require 'mechanize'
require 'kconv'

agent = Mechanize.new
agent.get('http://www.ruby-lang.org/ja/documentation/')

a = ""
agent.page.search('p').each do |p|
  a << p.inner_text.tosjis
  a << '---'
end
file = "file_testest123456789.txt"
open(file,"wb") do |f|
  f.print a
end

system"start notepad #{file}"

258デフォルトの名無しさん:2012/05/22(火) 14:34:33.58

require 'rubygems'
require 'mechanize'
require 'kconv'
require 'win32ole'
# gem install win32-clipboard'
require 'win32/clipboard'

agent = Mechanize.new
agent.get('http://www.ruby-lang.org/ja/documentation/')

a = ""
agent.page.search('p').each do |p|
  a << p.inner_text.tosjis
  a << '---'
end

Win32::Clipboard.set_data a

wsh = WIN32OLE.new('Wscript.Shell')
wsh.run("notepad")
sleep 0.4
wsh.SendKeys"^v"
259デフォルトの名無しさん:2012/05/22(火) 17:48:03.78
centos4.6に、ruby1.9.3-p194をインストールしたいのですが、
makeで、「rdoc」エラーで失敗して進めません。
調べたら、yumのレポジトリに、「dev.centos.org/centos/4/CentOS-Testing.repo」を
追加とあったのですが、今現在ファイルが存在しません。

centos4系でrdocとインストールするにはどうすればいいのでしょうか?
260デフォルトの名無しさん:2012/05/22(火) 20:37:57.03
コマンドプロンプト以外を使ってみたく、
RDEを使ったところ、ものすごく使いづらいんですが、
他にrubyの実行ができるソフトってないんでしょうか?
261デフォルトの名無しさん:2012/05/22(火) 21:04:05.10
>>257
トン!
notepadだと改行うまくいかないみたいなのでwordpadで開くようにしてみますた
あとはpとかdivで囲まれたところではなく欲しいところを書きだすように書き換えに挑戦
これは明日やります…
262デフォルトの名無しさん:2012/05/23(水) 04:00:53.18
でも全世界のruby使いの学習の為に公式サイトは存在してる所は有るので。
perlやpyやphpのサイトとかで練習しないだけでも。
263デフォルトの名無しさん:2012/05/23(水) 09:05:50.76
>>255
こう? get メソッドが動作することがわかったら実行行をコメントにして、
あらかじめ保存しておいた arakajime.html を読み込む動作にしばらく切り替えておく

require 'open-uri'
require 'kconv'
require 'rubygems'
require 'nokogiri'
def winsave_as(path, data)
open(path,'wb'){|f| f.print data.to_s.tosjis.gsub(/\n$/){"\r\n"}}
end
def get(url)
URI.parse(url).read
end
def search(html)
Nokogiri::HTML.parse(html).search('p').map{|e| e.text}
end
def notepad(path)
system "start notepad #{path}"
end

url = "http://www.ruby-lang.org/ja/documentation/"
path = 'tekitou54.txt'
# html = get(url)
html = File.open('arakajime.html',rb'){|f| f.read}
data = search(html).join("\n---\n")
winsave_as(path, data)
notepad(path)
264デフォルトの名無しさん:2012/05/23(水) 09:25:25.00
>>263
そんな感じっすな
実際問題としても、ネットアクセスとかデータベースアクセスとかはいちばん遅いはずなので、
スクリプト作成中にこの部分をローカルファイルの読み込みにしておくことの意義は大きい
マシンスペックにもよるけど、実行した直後に終わるはずだ
265デフォルトの名無しさん:2012/05/23(水) 10:14:15.89
>>259
そろそろできた?
266デフォルトの名無しさん:2012/05/23(水) 10:26:58.31
>>251
これしか選択しないですか?
gemでインストールできるものってないですかね?
267デフォルトの名無しさん:2012/05/23(水) 19:18:47.13
なぜwindowsに拘ってるの?
もしくはなぜRubyに拘ってるの?
268デフォルトの名無しさん:2012/05/23(水) 19:32:03.22
というか既存のはどこがダメなのか言ってもらわないとどうにも
269デフォルトの名無しさん:2012/05/23(水) 20:49:17.57
やっぱり今流行のRedmineでプロジェクト管理したいですしRuby on Railsとかも勉強したいです
Windowsしか使ったことないのとPCが1台しかなくて、仮想マシン入れて動かせるほど良いスペックでもないです
ennouはWindowsによくあるインストーラ形式っていうのが引っかかるのでキツイです
270デフォルトの名無しさん:2012/05/23(水) 20:52:40.93
わけがわからないよ。
271デフォルトの名無しさん:2012/05/23(水) 20:58:05.38
VPS使ったら幸せになれるかもよ?
272デフォルトの名無しさん:2012/05/23(水) 21:06:06.96
Apacheでmod_rubyだのFastCGIだの使って普通にRuby動作させるのじゃ何が不満なんだ
273デフォルトの名無しさん:2012/05/23(水) 22:07:29.33
HTMLで<div>に囲まれた文字列を取得するのってinner_textですが
<div id=Main>から<div>までなど場所を指定して取得するのってどう書けばよいでしょうか
またこういうのってどうやってググれば良いでしょうか
『たのしいRuby第3版』買ったけど内容がやりたいことに追いついてない気がします
274デフォルトの名無しさん:2012/05/23(水) 22:14:01.38
馬鹿が自己満足のために一足飛びにモノだけ教えたせいで被害が拡大してるな
君は怒っていいと思うよ

一発で出てこないということは、とりあえず正規表現を学ぶことをおすすめする
あんまり深入りすると抜け出せないので、 . + * ? () あたりの記号の使い方と意味だけわかれば充分
複雑な正規表現はとりあえずパスして、そのぶん ruby の if とか String#scan とか String#gsub とか String#split とかの機能を駆使する

正規表現で対処し切れなくなってからはじめて、HTML のパースライブラリの使用を検討するのが正当
275デフォルトの名無しさん:2012/05/23(水) 22:24:49.99
>>274
ありがとうございます
基礎中の基礎みたいですねw
RubyがおすすめだからRubyでやれと言われた身ですが
自分には急に応用から学べと言われているようなものだったみたいです
かなり混乱してますが頑張ります
276デフォルトの名無しさん:2012/05/23(水) 22:37:20.02
すいませんirbなんですがなんでこうなりますか?

irb(main):001:0> print("hello\n")
hello
=> nil

昔々使ったときは => nil とかって付かなかった
ような気がするんですが…。
ファイルに同じステートメントを書き込んで実行すると
hello
と表示されます。

どういうことなのでしょうか?
宜しくお願いします。

環境
CentOS6.2
インストールしたパッケージ
compat-readline5-5.2-17.1.el6.x86_64
ruby-libs-1.8.7.352-7.el6_2.x86_64
ruby-1.8.7.352-7.el6_2.x86_64
ruby-irb-1.8.7.352-7.el6_2.x86_64
277デフォルトの名無しさん:2012/05/23(水) 22:56:08.29
説明めんどくさいんで、irbrcで検索しろ
irbがどういう表示をするのかは、ホームディレクトリとかの .irbrc とかで制御される
どっかのバージョンが変わったかなにかirb関係のgemが入ったかだと思われる

$ irb --prompt classic
irb(main):001:0> puts "hello"
hello
nil
irb(main):002:0>

$ cat ~/.irbrc
require 'irb/ext/save-history'
IRB.conf[:SAVE_HISTORY] = 1000
IRB.conf[:PROMPT_MODE] = :CLASSIC

あと、Ruby では print "~\n" を使用することはまず無く、 puts "~" を使用する
それと、puts と p と print は引数のカッコをつけない
278デフォルトの名無しさん:2012/05/23(水) 23:07:29.13
p { 1 => 10, 2 => 20 }

とかやって構文エラーに目が点になった思い出。
いまは理由分かるけど。
279デフォルトの名無しさん:2012/05/23(水) 23:32:42.49
>>277
>irbがどういう表示をするのかは、ホームディレクトリとかの .irbrc とかで制御される
これが答えですね、ありがとうございます。
知りませんでした。

$ ls -a | grep irb
$
ないみたいですね。理由がわかって安心しました。
今は酔いが回ってきたので具体的な対処は後日します。

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

>>278
irb(main):001:0> p ({ 1 => 10, 2 => 20 })
{1=>10, 2=>20}
=> nil
こうですかわかりません><
280デフォルトの名無しさん:2012/05/23(水) 23:40:50.45
1.8.6の頃は:CLASSICの挙動だったはず
=> がデフォルトになったのは1.8.7だったかな
281デフォルトの名無しさん:2012/05/23(水) 23:41:29.69
頭が痛い
282デフォルトの名無しさん:2012/05/23(水) 23:50:25.61
最近なんとなく見てたけど、wordpadって単語が出てきて目をこすりまくった
283デフォルトの名無しさん:2012/05/24(木) 09:14:15.18
p { } だとハッシュのinspectじゃなくてブロック付きメソッド呼び出しが
期待されちゃうのね。
284デフォルトの名無しさん:2012/05/24(木) 10:03:18.60
>>282
いわゆるページャとして使ってるんだろうな、と思う
複数行や長い行のある文字列をコマンドプロンプト上で標準出力に表示しても確認しづらいということは否定はできん
285デフォルトの名無しさん:2012/05/24(木) 10:41:47.92
うまいコンソールがないからね
msys版のminttyでbash使うのいいんだけどirbが動かねえ
286デフォルトの名無しさん:2012/05/24(木) 12:07:34.37
Rubyやるならこれは入れとけって定番のgemはありますか?
287デフォルトの名無しさん:2012/05/24(木) 12:17:42.07
>>286
あなたがrubyでやりたいことに必要なgem
288デフォルトの名無しさん:2012/05/24(木) 12:34:45.15
ruby全体が超強力に強化されて超便利!!というようなgemはあんまし見ないな
配布しようにも相手が持ってないと意味ないわけで

なにしたいのかで聞けば、おすすめ定番くらいは誰か教えてくれるかもよ
289デフォルトの名無しさん:2012/05/24(木) 12:46:54.56
該当部分の推定されるメソッドや引数のマニュアル内容をポップアップかミニバッファ表示してくれる機能の提供ってないの

arr = []
arr.push( ←ここでArray#pushのマニュアルが(半自動で)引ける
290デフォルトの名無しさん:2012/05/24(木) 12:51:29.81
>>289
昔、riとEmacsでそういう連携があったことがあった気がした
カーソル部分の単語をメソッド名とみなして全検索して候補引っぱるんだったかな

Array#push([ obj1 [, obj2 ...]]) obj1 , obj2 ... を順番に配列の末尾に追加します

と1行表示してくれるだけでもありがたいんだけど
291デフォルトの名無しさん:2012/05/24(木) 12:58:06.19
$ ri Array#push
Array#push

(from ruby core)
------------------------------------------------------------------------------
  ary.push(obj, ... ) -> ary

------------------------------------------------------------------------------

Append---Pushes the given object(s) on to the end of this array. This
expression returns the array itself, so several appends may be chained
together.

 a = [ "a", "b", "c" ]
 a.push("d", "e", "f")
    #=> ["a", "b", "c", "d", "e", "f"]

英語かよ
292デフォルトの名無しさん:2012/05/24(木) 13:04:21.80
GETで送られてきたクエリ(○○の部分)を取得して、それをファイルを読み込むときのパスに利用します
http://localhost/index.rb?○○
このときそのまま利用するのはセキュリティ上危険だと思うのですが
どのような対策を行えばよいでしょうか?
293デフォルトの名無しさん:2012/05/24(木) 13:11:01.01
>>292
どうにもなんない
対象となるファイルシステムとシェルをすべて網羅して、危険となるアスキーまたはマルチバイトの文字列の並びをなんらかの安全な文字列に変換する

ライブラリがあると楽なんだけど、聞いたことないな
294デフォルトの名無しさん:2012/05/24(木) 13:13:51.92
「読み込む」のなら、対象となるディレクトリのファイル一覧を持っておいて、クエリと完全一致するかどうかを調べて、
合致するならファイル一覧のほうの文字列を使ってFile.openすればいいんじゃないかな

書き込みファイル名をクエリから生成するのはめんどくさい
295デフォルトの名無しさん:2012/05/24(木) 13:34:51.36
単純なアスキー文字シェル展開攻撃が「使えない」とわかった場合、攻撃者は必ずUnicode関連を試すと思われるので、
実のところはちょっと置換したくらいじゃちっとも安全じゃないんだよね
296デフォルトの名無しさん:2012/05/24(木) 15:02:06.63
例えばgemで入れられる定番のwiki構文木ってありませんか?
297デフォルトの名無しさん:2012/05/24(木) 17:38:04.79
C言語も冪乗をpower(,)なんて複雑にしないで、Rubyみたいに記号でシンプルに表記できれば良かったのに。
298297:2012/05/24(木) 17:53:01.50
powerでなくpowでした。訂正します。
299デフォルトの名無しさん:2012/05/24(木) 18:00:04.10
C言語は、コンパイラがインラインで生成するコードに対応するものは直接、式で書けるが
関数呼び出ししなきゃならんものは関数として提供する、というのが基本だから、それはない。
300デフォルトの名無しさん:2012/05/24(木) 19:59:32.36
乗算の算術演算子とか記号*だけじゃないですか。指数もその気になれば**とかに出来たんじゃないですか。
301デフォルトの名無しさん:2012/05/24(木) 20:08:11.88
シンタックスの話じゃない、というのが >>299 を読んでも理解できないわけ?
302デフォルトの名無しさん:2012/05/24(木) 20:11:02.39
>>289
自分で作っちゃいなよ
おれもそんな感じのエディタをおっちらおっちら作ってる(いつ完成するのやら…)
303デフォルトの名無しさん:2012/05/25(金) 00:11:35.56
Tkが動きません。
Ruby 1.9.2 Ubuntu11.10(VirtualBox)でやっています。

#!/usr/bin/ruby
require "tk"

root = TkRoot.new do
title "Ruby/Tk Test"
end

Tk.mainloop

と書いて実行すると、

<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 hellotk1.rb:2:in `<main>'

と怒られます。
Tkは sudo apt-get install libtcltk-ruby でインストールしました。

ググってみると、tk-winとやったら動いたと書いてあるサイトがあったので、
gem install tk-win を試しましたが、
ERROR: Could not find a valid gem 'tk-win' (>= 0), here is why:
Found tk-win (0.2.2), but was for platform x86-mingw32
と、インストールできませんでした。

何が足りないのか、どうやって調べればいいのかわかりません。
お知恵を拝借いただけないでしょうか?
304デフォルトの名無しさん:2012/05/25(金) 00:27:38.35
>>303
> Ruby 1.9.2
libtcltk-ruby1.9
305uy:2012/05/25(金) 00:36:20.34
306デフォルトの名無しさん:2012/05/25(金) 01:54:53.84
テキストからTab
307デフォルトの名無しさん:2012/05/25(金) 02:46:01.68
>301
理解できません。シンタックスって何ですか?
308uy:2012/05/25(金) 02:52:35.36
ソースコードの見た目。

古い言語に文句いったって今更だから
もうC言語の事は忘れよ
309デフォルトの名無しさん:2012/05/25(金) 10:11:26.08
libtcltk-ruby というパッケージはなくなる予定だと聞いた
libtcltk-ruby1.8 と libtcltk-ruby1.9 に分化
これならわかりやすい
310デフォルトの名無しさん:2012/05/25(金) 20:38:42.62
Windows + Apacheにmrubyを組み込んでWEBサイトが作りたいんですが
Windows用のmrubyモジュールって存在しませんか?
311デフォルトの名無しさん:2012/05/25(金) 20:52:39.03
>mrubyを組み込んでWEBサイトが作りたい
は?
312デフォルトの名無しさん:2012/05/25(金) 20:58:24.75
え?
313デフォルトの名無しさん:2012/05/25(金) 21:01:49.17
314デフォルトの名無しさん:2012/05/25(金) 21:05:49.87
すくなくとも今のところmruby使う必然性はないな
315デフォルトの名無しさん:2012/05/25(金) 21:18:59.05
https://github.com/matsumoto-r/mod_mruby

mod_mrubyとか出てきたけど、誰得なんだこれ
316デフォルトの名無しさん:2012/05/25(金) 21:21:00.65
その場で実行もできるRuby専用プログラミングエディタ「RuviEdit」
http://www.moongift.jp/2012/05/20120525/
317デフォルトの名無しさん:2012/05/25(金) 21:21:26.48
>>315
死屍累々の中からこそ、キラリと光るプロダクトは生まれる
なんかもしかしたら今後いいことあるかもしんないしさあ

ただ、初心者が使うようなもんでないのは間違いない
テックプレビューみたいなもんだ
318デフォルトの名無しさん:2012/05/25(金) 21:24:12.39
どちらかっちゃ本スレ向けだよね
CとRubyとWebサーバを使い倒した人が余興でいじる
319デフォルトの名無しさん:2012/05/25(金) 22:02:22.16
>>316
何これつかいやすい
320デフォルトの名無しさん:2012/05/25(金) 22:20:15.44
mod_mrubyというのはapacheにPHPをモジュールで動かすことと同じことをするためのものではないって事でしょうか?
321デフォルトの名無しさん:2012/05/25(金) 22:24:45.64
>>320
どうして説明を読まずに使おうとするの?
322デフォルトの名無しさん:2012/05/25(金) 22:28:53.80
組み込みですよね?
323デフォルトの名無しさん:2012/05/25(金) 22:38:01.31
小型電子機器や制御機械への組み込み用途
324デフォルトの名無しさん:2012/05/25(金) 22:40:48.90
Apacheへの組み込み用途
325デフォルトの名無しさん:2012/05/25(金) 22:42:22.71
>>324
その解釈はないわー
できなくもないし、ずっと未来の将来ではひょっとしたらなんかあるかもしれないけど、現状は1ミリもないわー

>>320
通常、mod_rubyやFastCGIを使う
Windowsで動作しないとか知らん
326デフォルトの名無しさん:2012/05/25(金) 23:57:12.22
>>304
>>309
動きました!!
1.8と1.9でモジュールが分かれていたんですね。
ありがとうございました!!
327デフォルトの名無しさん:2012/05/26(土) 03:34:54.51
初心者ほどウィンドウズで動かそうとしてるのに、答える側はウィンドウズシランってワロス。
まあ教祖がデビアン使いでウィンドウズ知らんて逝ってるくらいだから仕方ないか。
328デフォルトの名無しさん:2012/05/26(土) 03:53:37.94
初心者といってもRuby・PC・Windowsの初心者と色々いるだろう。
初期の想定とは違った層が手をだすほど浸透しているということかねえ。
329デフォルトの名無しさん:2012/05/26(土) 03:57:38.11
あらゆるものが簡単で単純で平易に動作するなんていうことは、(残念なことに)現実的にはありえない
もしあらゆるものが簡単で単純で平易に動作すると言われたのなら、(残念なことに)君は騙されていて、それを言った人が非難されるべき
330デフォルトの名無しさん:2012/05/26(土) 04:08:04.33
>初心者ほどウィンドウズで動かそうとしてるのに

いや
初心者はMacだろ常考
331デフォルトの名無しさん:2012/05/26(土) 08:28:41.75
そういう「初心者」はHSPでも使ってればいいの。
そして一生Windows以外のものに手を出さない人生を送ればいいの。
そのほうが幸せだろうから。
332uy:2012/05/26(土) 11:16:47.74
一般ユーザーからしてみればLinuxつかう利点とかない
サーバーはLinuxで立てろって思うけど
333デフォルトの名無しさん:2012/05/26(土) 11:19:30.45
Linuxも発展してきた現状でMac使う理由あるの?
334デフォルトの名無しさん:2012/05/26(土) 11:23:20.69
>>333
いやさすがにその理屈は弱過ぎる
そんなんでレスの応酬欲しいのならLinux板の煽りスレへどうぞ
335デフォルトの名無しさん:2012/05/26(土) 11:25:25.14
理由聞いてるのに何故>>334は煽ってくるんだろう
何か困ることでもあるのかな
336デフォルトの名無しさん:2012/05/26(土) 11:40:01.88
>Linuxも発展してきた現状で
そんなものはない
ピクセルの色数が上がっただけで、デスクトップの出来としては20世紀のWindowsにも劣る
337デフォルトの名無しさん:2012/05/26(土) 12:00:31.72
「俺様の評価では」としか読めない
338デフォルトの名無しさん:2012/05/26(土) 12:04:25.36
スレチどす
339デフォルトの名無しさん:2012/05/26(土) 12:28:41.90
>>333
> Macが発展してきた現状でオワコンWindows使う意味なんてあるの?wwww
あんまりない。
340デフォルトの名無しさん:2012/05/26(土) 12:45:49.56
>>333
MacとLinuxじゃGUIの方向性が全く違うよ
341デフォルトの名無しさん:2012/05/26(土) 12:52:39.13
342デフォルトの名無しさん:2012/05/26(土) 12:59:44.59
>>341
動画は全く意味がない
実際に1年なら1年、自分のマウスとキーボードでデスクトップ環境を使ってみてから言え
343デフォルトの名無しさん:2012/05/26(土) 13:13:48.75
Linuxデスクトップを使ってわかることは 「金と人と時間と議論を集中して費したUX/UIが(相対的に)最高」 という、よく考えたら当たり前のことだったな
LinuxデスクトップはGnome/KDE以降十数年の歳月をかけて(勝手に)Windowsに戦いを挑んで、すばらしい結果を遺してくれた
マトモなユーザーインターフェースやユーザーエクスペリエンスは、タダではできない(あと、プログラマは本質的にランチャーしか使わない)

そして板違い
344デフォルトの名無しさん:2012/05/26(土) 14:09:44.55
macって自作ツール公開してる人いませんよね
345デフォルトの名無しさん:2012/05/26(土) 14:13:06.05
いるよ
346デフォルトの名無しさん:2012/05/26(土) 14:14:39.51
昔のMacはシェアウェア地獄でのう
開発環境がバカ高かったってのもあるんだが
347デフォルトの名無しさん:2012/05/26(土) 14:34:38.72
Macって15インチノートでも15万からじゃないと買えないし
だったら安いノート買ってLinux入れて余った金をほかの事に使ったほうが勉強になると思うんだよね
348デフォルトの名無しさん:2012/05/26(土) 14:38:26.19
>>347
そう言うってことはMacとLinuxデスクトップ機両方持ってて実際使ってみてから言ってるんだよね
349デフォルトの名無しさん:2012/05/26(土) 14:44:31.56
いいかげんスレチ長いdos
350デフォルトの名無しさん:2012/05/26(土) 14:56:14.94
>>348
Mac使って15年Linuxもファイルサーバとして2台使ってますが
持ってるかどうかは重要じゃないかと
351デフォルトの名無しさん:2012/05/26(土) 15:05:26.08
いまだにLinuxサーバとLinuxデスクトップの違いがわからない人がいるのか…
352デフォルトの名無しさん:2012/05/26(土) 15:10:17.57
まあ、rubyとmrubyの違いがわからないような人のいるスレですので
rubyって書いてあればみんな一緒と
353デフォルトの名無しさん:2012/05/26(土) 15:37:09.38
linuxデスクトップなんてつかっていみあるの?
354デフォルトの名無しさん:2012/05/26(土) 16:00:14.68
>>353
特にはないよ
これはインストール1週間以内の人間を除いた全員が合致したところの意見
これ以上煽りたければLinux板行け
http://engawa.2ch.net/test/read.cgi/linux/1337732534/
355デフォルトの名無しさん:2012/05/26(土) 17:26:54.38
>>354
鼻息あらいなw
単に純粋にきいただけなのにw
ただ、rubyなんて使って意味あるの?
よりは合致するかもね
356デフォルトの名無しさん:2012/05/26(土) 17:47:22.22
うざい
357デフォルトの名無しさん:2012/05/26(土) 18:33:34.06
本当マカーはキモチワルイな
358デフォルトの名無しさん:2012/05/26(土) 19:07:52.27
test.rbで標準入力した文字列をtest2.rbで受け取る方法はございませんか?

# test.rb
while line = STDIN.gets
STDOUT.puts line
end

# test2.rb
359デフォルトの名無しさん:2012/05/26(土) 19:32:52.72
>>358
できないと答えるのがスレ的にいいような気がする
Rubyのスクリプトファイルをそういう手続的なとこで分割するのはキモチワルイ
「標準出力から文字列を受け取ってどうにかするクラス」と「加工した文字列でどうにかするクラス」に分けて、
それらを総合的に操作するクラスまたは一連の手続き的なスクリプトファイルをさらに作るのが順当

# main.rb、総合スクリプト
require './getstr.rb'
require './upcase.rb'

str = GetStr.new.get
result = Upcase.new(str).upcase
puts result
-------
# getstr.rb、標準入力から文字列を得て返す
class GetStr
def get
STDIN.readlines.join("\n")
end
end
-------
# upcase.rb、文字列を受け取って全部大文字にして返す
class Upcase
def initialize(s)
@s = s
end
def upcase
@s.upcase
end
end
360デフォルトの名無しさん:2012/05/26(土) 20:14:40.77
>>358
io = IO.popen('ruby test2.rb','w')
while line = $stdin.gets
io.write line
end
361デフォルトの名無しさん:2012/05/26(土) 20:20:42.82
>>360
文字通り受け取ってどーする
362uy:2012/05/26(土) 23:40:21.26
---test.rb---
a=""
while line = STDIN.gets
a << line
end
a

---test2.rb---
a = eval(open("test.rb").read)
p a
363デフォルトの名無しさん:2012/05/27(日) 01:16:09.37
そもそも何の為にそんなことするのか疑問なんだけど
364デフォルトの名無しさん:2012/05/27(日) 01:26:10.25
ディスプレイを2つ分けてまして
それぞれコマンドプロンプトを立ち上げてて
片方のディスプレイには標準入力用のtest.rbを
もう片方のディスプレイにはtest2.rbで入力した文字列を受け取る標準出力用のtest2.rb
どちらもwhileでループさせといてtest.rbで入力が合ったらtest2.rbで受け取れりたいです



(ソケットでやればいい話なんですが)
365デフォルトの名無しさん:2012/05/27(日) 01:27:33.89
ソケットでやるのがいいかもしれませんが標準入出力でできないでしょうか
366デフォルトの名無しさん:2012/05/27(日) 03:09:27.21
ファイル名に時刻を含んだ一時ファイルにデータ書き込みまくって
読んだら消しまくればいい
367デフォルトの名無しさん:2012/05/27(日) 03:58:07.81
unix系ならmkfifoで名前付きパイプを作れば簡単に出来る

mkfifo /tmp/my_fifo
ruby test.rb > /tmp/my_fifo
ruby test2.rb < /tmp/my_fifo
368デフォルトの名無しさん:2012/05/27(日) 04:02:05.61
>>367がそのまんまの機能かと思う
ていうか、test1.rbとtest2.rbってファイル分ける必要なくね
369デフォルトの名無しさん:2012/05/27(日) 07:02:20.97
同一の入力から異なる出力をするプログラムなのか、それとも
同一の結果を二つの画面に表示したいだけなのか
コマンドプロンプトは結果の表示に利用しているだけなのか
test2.rbはtest.rbからだけでなく、端末からの入力も受け付けるのか
370デフォルトの名無しさん:2012/05/27(日) 07:22:20.98
ウィンドウズなら memory mapped file とやらを使うのか
371デフォルトの名無しさん:2012/05/27(日) 11:18:48.97
RubyInstallerの7-ZIP ARCHIVESのRuby 1.9.3-p194を入れました
あとdevkitもいれます。
将来バージョンアップする場合、入れたものを上書きしても大丈夫でしょうか?
それとも一度消してから入れたほうがいいでしょうか?
372デフォルトの名無しさん:2012/05/27(日) 11:28:27.16
基本的には全消ししてgemを入れ直し
devkitはRuby本体の動作に関係ないのでどうでもいい
(独立ではなく横着してRubyディレクトリの下にdevkitをインストールしてしまうとこのときめんどくさい)

パッチレベル(pの数字)が増えただけなら新しいRubyにgemディレクトリをコピペしても「たぶん」大丈夫
各々のgemがどういう動作をしているかまではわからないので、保証はできない
373デフォルトの名無しさん:2012/05/27(日) 11:42:35.51
入門サイトみながらdevkit入れてたのでどこに入れてるか分かりません
一回OSを再インストールしてまた入れなおします
ありがとうございます
374デフォルトの名無しさん:2012/05/27(日) 11:44:22.68
つrbenv
375デフォルトの名無しさん:2012/05/27(日) 11:52:48.15
>>374
> RubyInstaller
376デフォルトの名無しさん:2012/05/27(日) 12:16:08.95
Windowsの人にrbenv勧めてもなあ
377デフォルトの名無しさん:2012/05/27(日) 15:49:30.50
system 'mysql -u root -p'
とするとMySQLに接続するためのパスワード入力を求められますが
ここにスクリプトで入力する方法を教えてください

system 'mysql -u root --password=xxxxx'とすればログインできるのですが
標準入力をスクリプトで自動的に入力できる方法を学びたいです
378デフォルトの名無しさん:2012/05/27(日) 16:03:17.10
mysqlのクライアントコマンドってパスワードどこから読むんだっけ?
ttyから直接なのか、標準入力からなのか。
前者なら PTY.spawn で、後者なら IO.pipe かな?
379デフォルトの名無しさん:2012/05/27(日) 16:08:34.64
echo してシェルのパイプでえいやーというのではダメなんだろうなきっと
system 'echo "*password*" | mysql -u root -p'
380デフォルトの名無しさん:2012/05/27(日) 16:19:15.49
expectはどうだろう
381デフォルトの名無しさん:2012/05/27(日) 17:24:09.25
とあるサイトに投稿するときに一定のフォーマット処理が必要なんですけど、
Chromeで開いてるHTMLのとあるフォームに書いてある文字列全体に対して処理するってのは可能なんですか?

やはり一旦適当なtxtファイルに保存して変換処理させるのが無難ですか?
382デフォルトの名無しさん:2012/05/27(日) 17:46:22.32
Chrome にそういう
「外部プログラムからのフォーム取得変更操作を受け付け、勝手にChromeに送信させることを許可するプラグイン」
があらかじめインストールされていれば可能
具体的には Watir
当たり前だけどおっそろしく脆弱な状態になるので、使用には注意

ふつうは、
・ HTML で完結する処理なら Ruby で HTML を取得してフォーム送信する
・ JavaScript や Flash が必要だけど送信データを調べてたいしたことない場合は Ruby で HTML を取得して自力で組み上げて Ruby で送信する
・ JavaScript や Flash が必要だけど送信データを調べてある程度までなら Ruby で HTML を取得して根性で送信文字列を組み上げて Ruby で送信する
という手順を踏む
どーーーーしても普通の Web ブラウザを Ruby から乗っ取って操作しなければならないという場面はそう多くはない
383381:2012/05/27(日) 18:00:25.37
詳しくありがとうございます。
私の説明がものすごく不味かったようですが、
やりたいことは、要はただのテキスト処理で、

「Chrome上で、フォームAに文字列を書いて、Rubyスクリプト実行したら、
 フォームBやフォームCに自動的に文字列が埋まる。」

ということなんです。
最終的なボタンを押して送信するのは、ユーザーに任せたいんです。
ただ、それをChromeの上で(もしくは他のブラウザ)でやることは可能なのかなー・・・と。


Watirというのを少しググってみたんですけど、ブラウザを自動操縦できるらしいで、
これなら可能ですね。

ためしてみます。
384デフォルトの名無しさん:2012/05/27(日) 18:04:33.43
>>383
> Chrome上で、フォームAに文字列を書いて、スクリプト実行したら、
> フォームBやフォームCに自動的に文字列が埋まる。」
JavaScriptでやれ
それは正しくクライアントサイドJavaScriptの仕事だ
385デフォルトの名無しさん:2012/05/27(日) 18:11:49.29
そのブラウザで表示しているアプリが自前なら >>384 の言う通りJavaScriptでやるのが普通
386デフォルトの名無しさん:2012/05/27(日) 18:13:54.40
Chrome dev って Ruby の実行環境を用意中じゃなかったっけか
387デフォルトの名無しさん:2012/05/27(日) 18:30:06.85
>>386
最近、Chromeのnacl上で動かすためのパッチがrubyに取り込まれた。
388デフォルトの名無しさん:2012/05/27(日) 19:03:05.80
>>387
逆だったのね…
389デフォルトの名無しさん:2012/05/28(月) 11:59:04.87
拡張子から該当するmedia/typeを取得するライブラリとかありますか?
{".jpg" => "image/jpeg", ....} と全部自分で書くのはしんどいので…。
390デフォルトの名無しさん:2012/05/28(月) 12:12:12.24
mimeで検索すれば何か出てきそうだけど
391デフォルトの名無しさん:2012/05/28(月) 12:22:11.41
Windowsはプレーンテキストで一覧がないんだよね

irb> require 'mimemagic'
irb> MimeMagic.by_extension('.jpg')
=> image/jpeg
irb> MimeMagic.by_extension('.jpeg')
=> image/jpeg
> p MimeMagic::EXTENSIONS
{"123"=>"application/vnd.lotus-1-2-3", "3ds"=>"image/x-3ds", "3g2"=>"video/3gpp2",
"3ga"=>"video/3gpp", "3gp"=>"video/3gpp", "3gp2"=>"video/3gpp2",
...
}
392デフォルトの名無しさん:2012/05/28(月) 13:36:19.24
>>389
マルチ
393デフォルトの名無しさん:2012/05/28(月) 13:45:22.54
>>392
「初心者スレの質問レスをコピペして回ってなおかつマルチだと罵る」というよくわからん行動パターンがあるので
ここより先のタイムスタンプがあるんじゃない限り特に気にしない
394デフォルトの名無しさん:2012/05/28(月) 14:15:06.49
きのせいだった

565 デフォルトの名無しさん [sage] 2012/05/27(日) 12:03:31.80 ID: Be:
    Content-typeヘッダから拡張子を判断するにはどのライブラリ使えばいいんですか?
395デフォルトの名無しさん:2012/05/28(月) 19:47:10.07
rails が使ってる mime-types gem が無難じゃないかね。

require 'mime/types'
>> MIME::Types.of('.pdf')
=> [application/pdf]

返ってきているのは MIME::Type インスタンスの配列。
396389:2012/05/28(月) 23:26:07.33
みなさん回答ありがとうございます。

"mime-types gem" で検索したら出てきた
http://rubygems.org/gems/mime-types
を使うことにしました。
>>395さんのとは若干動作が変わってるようですが、違うものでしょうか…?

if MIME::Types.of('.pdf').length >= 1
p MIME::Types.of('.pdf')[0].content_type
end

で期待通りの動作ができました。
397389:2012/05/28(月) 23:31:56.72
あと、これは直接Rubyの問題ではないと思うのですが、
質問するに適切な場所が見つからなかったので教えてください。

mime type が決まっていないファイルに
mime type をつけるときの規定はあるのでしょうか?

"none" などを勝手につけるものなのでしょうか?
探してみましたが、情報がみつかりませんでした。
398デフォルトの名無しさん:2012/05/28(月) 23:44:20.98
binary/octet-stream
399389:2012/05/29(火) 07:55:58.79
>>398
ありがとうございます!
400デフォルトの名無しさん:2012/05/29(火) 18:44:34.79
ターミナルにコマンドを(実行せず)文字列として書きこみたい場合はどうすればよいでしょうか?

たとえば、
$ grep -r "" * ←これをrubyプログラムから書いて、ユーザが""内など適宜編集して実行(Enter押下)する

とか、
$ irb ←rubyプログラムからirbを起動し、
irb(main:001) > .methods.sort ←これをrubyプログラムから書いてユーザが書き足して実行

良い方法はありませんか?
401デフォルトの名無しさん:2012/05/29(火) 19:41:10.11
<td class="cell">

<dt class="main">

<a href="http://www.nullpo.com">

ぬるぽ</a>

</dt>
<dd class="inline">NullReferenceException</dd>

<dd class="inline">NullPointerException</dd>


</td>

というHTMLからHpricotで<a></a>の中の要素、hrefのリンク先、2つの<dd></dd>の中身を吸い出したいです。

対象サイトは、<td class="cell">~</td>が規則的に数十個並んでます。

doc = Hpricot(html)
(doc/"td.cell").each do |変数|
end

までは分かるのですが、ここから先が進みません。
変数の中に、<td class="cell"></td>の内容が全て含まれるはずなのですが、
そこからどうやって、個々の要素を指定して絞り込めばいいのでしょうか?
402デフォルトの名無しさん:2012/05/29(火) 19:54:45.83
>>401
XPathでぐぐれ
NokogiriやHpricotが受け付ける「検索文字列」はオリジナルではなく、別途独立して定義されたものだ

あと、現状、Hpricotを使うメリットはない
403デフォルトの名無しさん:2012/05/29(火) 19:58:13.29
>>400
たぶん、それを使わされる人はぜんぜん喜ばないと思うの
他の方法を考えたほうがいい

なお、一番簡単に実現できるのは、ヒストリに無理矢理追加しておいて、上キーなどで呼び出してもらうこと
404uy:2012/05/29(火) 20:40:04.87
rubyとは関係ないけど
略語展開をどこでも使えるようにキーロガー作って
「AA0」までタイプして特定キーおしたら
AA0を消して、AAリストからその場所にAA貼り付けるとか
文字列貼り付けるってツールは作った事あったな
微妙すぎるから捨てた
405デフォルトの名無しさん:2012/05/29(火) 20:52:44.74
>>402
CSSセレクタでは>>401に書かれてることはできないのですか?
Xpathより簡単みたいだからこっちにしたのですが

Hpricotの方が日本語のサイト多いのでとりあえずこっちにしました
406デフォルトの名無しさん:2012/05/29(火) 20:58:09.63
ruby-Tkでリージョンを作りたいのですが
どこかにサンプルなどはないでしょうか?
http://d.hatena.ne.jp/subuntu/20070614
ここのソースを動かしてみたところ
一応作れてはいるのですがタイトルバーが残ってしまっています
407デフォルトの名無しさん:2012/05/29(火) 21:02:15.69
>>405
NokogiriはCSSセレクタ使えるよ。Hpricotはどうだったかわからない

require 'nokogiri'
src = "<html>...</html"
doc = Nokogiri::HTML.parse(src)
td_cell = doc.at_css("td.cell")
a = td_cell.at_css("dt.main > a")
p a.text, a["href"]
p td_cell.css("dd.inline").map{|e| e.text }

>>400
上で挙がってるptyやexpect使うとどうにかなる、かも
408uy:2012/05/29(火) 21:18:17.51
window.set_decorated(false)
409デフォルトの名無しさん:2012/05/29(火) 21:19:37.47
>>407
ありがとうございます

Hpricotもcssセレクタは使えるんですが、ただNokogiriとはだいぶ違うようです
410デフォルトの名無しさん:2012/05/29(火) 21:26:23.96
>>403
ヒストリの方法はすでにやってみたんですが、もっと良い方法がないだろうかと・・・
ちなみに、>>400に書いた単純な内容だけをしたいわけではないです

プログラム側でコマンドを完成させて実行する方向で考えてみます
411デフォルトの名無しさん:2012/05/29(火) 22:54:00.82
登録日:2012/05/20社員番号:NTDF-452

という文字列をputsにて

登録日:2012/05/20
社員番号:NTDF-452

という風に出力させたいのですが、どうすればいいでしょうか?
412デフォルトの名無しさん:2012/05/29(火) 23:13:35.68
教えてください。

Perlの
@a = <>;
と同様の処理をRubyで、文字の少なさにこだわって書く場合
どのようなコードになりますか?
413デフォルトの名無しさん:2012/05/29(火) 23:32:47.69
a = readlines
414デフォルトの名無しさん:2012/05/29(火) 23:35:32.64
a=$<.lines より短くはならない気がする。

$< は行単位のEnumerableなので、直後に何かメソッドを
呼ぶならlines不要。

$<.each { ... }
415デフォルトの名無しさん:2012/05/29(火) 23:35:40.58
ゴルファー的には、
a=*$<
416デフォルトの名無しさん:2012/05/29(火) 23:36:10.17
あー *
417デフォルトの名無しさん:2012/05/29(火) 23:37:06.72
ゴルフ入門的にはるびまのかつての連載とか。
418414:2012/05/29(火) 23:38:59.66
Array化せずに置いていいなら a=$< だけでもいいのか。
419デフォルトの名無しさん:2012/05/29(火) 23:40:52.78
対応するPerlコードが @a に代入するという点で、
読み込んで行分割まで済んでいるべき。
420uy:2012/05/29(火) 23:42:29.71
>411
"登録日:2012/05/20社員番号:NTDF-452" =~ /(.*?\d{4}\/\d{1,2}\/\d{1,2})(.*)/
puts $1
puts $2

421デフォルトの名無しさん:2012/05/29(火) 23:46:12.16
まあ長さは置いといて行儀がいいのは、
lines = STDIN.readlines
とかだよな。字面だけで何やってるかわかるし。
422デフォルトの名無しさん:2012/05/30(水) 00:17:25.80
>>411
puts "登録日:2012/05/20社員番号:NTDF-452".split(/(?=登録日|社員番号)/)
423デフォルトの名無しさん:2012/05/30(水) 00:34:27.00
>>420
動かないみたいです・・・

>>422
ありがとうございました
中身はあまり理解できませんでしたが、自家製のlengthを使ったsliceよりも綺麗でした
424>>412:2012/05/30(水) 03:27:53.61
>>413-415
ご回答、ありがとうございました。
参考にします。

>>421
おっしゃるとおりです。
ただ、ワンライナで標準入力から読み取る簡便な記述を知りたかったので、
>>412の質問をした次第です。
425デフォルトの名無しさん:2012/05/30(水) 07:47:34.94
>>421
動作が変わっちゃうよ
Perlの<>に対応するのはRubyだとARGF
426デフォルトの名無しさん:2012/05/30(水) 10:40:11.51
インクジェットの使い方教えてください
427デフォルトの名無しさん:2012/05/30(水) 14:02:38.49
>>406
どういうのを作りたいのかよくわかんないけど
Tk.root.overrideredirect = true
を実行するというような話?
一旦Tk.root.withdraw; Tk.root.deiconifyをする必要があるかもしんないけど.

非矩形ウィンドウを作る例は
http://www.dumbo.ai.kyutech.ac.jp/~nagai/RubyTk-seminar200709.pdf
http://www.dumbo.ai.kyutech.ac.jp/~nagai/RubyTk-seminar200709-files.zip
の中にあるよ.
428デフォルトの名無しさん:2012/05/30(水) 16:30:19.52
震災以降、日本では建造物の耐震強度と老朽化の問題が懸念されているのだが、中国ではこれらの問題がより一層深刻のようだ。
というのも、建造物の費用を浮かすために、ダンボールや空き缶を詰めてコンクリートを流すというトンでもない工事があとをたたない。
最近も老朽化した橋に、発泡スチロールがぎっしりと詰め込まれていたことが発覚。これにはさすがの中国ネットユーザーも衝撃を隠せないようだ。

発泡スチロールが詰め込まれていたのは、山東省の青島(チンタオ)市の歩道橋だ。とある中国ネットユーザーが2012年5月19日に、
ブログサービスで老朽化が進む橋の断面を公開。これを見た他のユーザーも驚いたようで、瞬く間に話題となった。

これを受けて地元の建設委員会は、翌日に現地に調査におもむいた。その結果、「橋の安全に問題はない」と公表している。
ちなみにこの画像については、その真偽を疑う声もある。しかし中国では、建築材料をごまかすケースが頻繁に起きているために、
中国ネットユーザーも一概に「ウソ」と言いきれないようだ。

また建築委員会が「安全」といっても、画像のインパクトが強すぎるために、その発言がかえって疑わしい。
いずれにしても、この橋を渡る必要があるときには、十分に注意した方が良さそうだ……。

http://sociorocketnews.files.wordpress.com/2012/05/chinabridge1.jpg
http://sociorocketnews.files.wordpress.com/2012/05/chinabridge2.jpg
http://sociorocketnews.files.wordpress.com/2012/05/chinabridge3.jpg

http://rocketnews24.com/2012/05/30/216229/
429デフォルトの名無しさん:2012/05/30(水) 18:38:54.84
RubyってC言語やVB6みたいに、クラス定義なしで、スクリプトの中に


def dosomething (a)

end


みたいに宣言して関数として呼び出すこともできるんですか?
オブジェクト指向型言語であれば、一応はクラスを定義してその中にdefを設けて、
そのインスタンスにメソッドを実行させるのが妥当かなと思ったんですが・・・

どっちで書くべきか迷っています
430デフォルトの名無しさん:2012/05/30(水) 18:54:23.17
>>429
わかりやすければどうでもいいよ
431デフォルトの名無しさん:2012/05/30(水) 20:51:58.39
否定はできんな

再利用するんでなければ、なんかてきとーに手続き的に書いちゃっていいよ
クラスなくてもなんとかなるって
432デフォルトの名無しさん:2012/05/30(水) 23:14:59.53
>>430-431
分かりました
ありがとうございました
433デフォルトの名無しさん:2012/05/30(水) 23:42:42.87
配列でループ回したいんですが、最初の要素は省き、二番目の要素から最後までを実行させる方法はありますか?
ループの直前で最初の要素を削って、ループ抜けたあと最初に戻すとかは思いつきましたが・・・
434デフォルトの名無しさん:2012/05/30(水) 23:57:58.77
array[1 .. -1].each
とでもすればいんじゃなかろうか
435デフォルトの名無しさん:2012/05/31(木) 00:00:32.24
>434
やってみます
有難う御座いました
436デフォルトの名無しさん:2012/05/31(木) 01:32:59.58
>>429
実は「トップレベルに書いた関数」もRubyでは「とある場所に属するメソッド」として扱われてるんだけどね
437uy:2012/05/31(木) 03:23:41.88
[1,2,3,4,5].inject { | _damiy, m | p m }
438デフォルトの名無しさん:2012/05/31(木) 06:03:58.49
439デフォルトの名無しさん:2012/05/31(木) 07:10:44.46
>>436
なんの慰めにもならんな
440デフォルトの名無しさん:2012/05/31(木) 07:40:49.12
>>438
やはり胡散臭い人の方がろくろはしっくりくるな
441デフォルトの名無しさん:2012/05/31(木) 07:44:02.02
>>439
「あなたが利用しているのは実はオブジェクトで、使ってるのはメソッドなんですよ!」とか言われてもな
442デフォルトの名無しさん:2012/05/31(木) 10:14:16.63
Rubyのクラスは(とりあえずは)「いちれんの処理をまとめて自由な順番で開始させるカタマリ」という使いかたでいいよね
「クラスとは~オブジェクトとは~タイヤキの~インスタンスが~ジュークボックスの~」とか考える必要なし
443uy:2012/05/31(木) 16:38:34.93
class B
  def to_s
    "(´・ω・`)"
  end
end
p n

こういう挙動を最近知ったんだけど、
こういう細かいrubyの挙動ってどこにも書かれてなくねって思う
444uy:2012/05/31(木) 16:46:04.09
class << self
  def a
    p 1
  end
end
a
def a
  p 2
end
a

これってなんなの??
445デフォルトの名無しさん:2012/05/31(木) 17:02:20.09
>>442
ジュークボックスで説明されても日本人にはよくわかりません
というのはたぶん悩んだんだろうなあと勝手に思ってる
446デフォルトの名無しさん:2012/05/31(木) 17:09:07.73
あちらさんでもそれほどわかりやすいとされたわけでもないような
447デフォルトの名無しさん:2012/05/31(木) 17:17:50.29
Rubyでは、トップレベルで定義したメソッドはObjectのインスタンスメソッドでprivateになるから。
448デフォルトの名無しさん:2012/05/31(木) 17:19:05.25
>>447
なんの慰めにもならんな
449デフォルトの名無しさん:2012/05/31(木) 18:52:31.73
a) 外部のテキストファイルから一行ずつ読み取り、
b) 配列に1回につき最大に5個まで格納して、
c) その配列を関数に渡して処理していき
d) ファイルの終わりまでa)を繰り返す


というアルゴリズムを書きたいのです。

a)とc)とd)は問題なく書けるのですが、b)はどうやれば綺麗にいくのか分かりません。


IO.foreach("a.txt") do |s|

#処理

end


この#処理のところに入れるわけですが、until i = 5みたいなループをもう1つ入れるべきですか?
450uy:2012/05/31(木) 19:03:08.12
def func s
  p s
end
IO.foreach("a.txt").each_slice(5) do |s|
  func s
end

451デフォルトの名無しさん:2012/05/31(木) 19:12:05.52
Rubyのルーチンはすべてメソッドだから、関数じゃなくて安心してメソッドと呼んでくれ

> 配列に1回につき最大に5個まで格納
がようわからんのだが、要は、各行に数字が順に書いてあるファイルだとして
["1","2","3","4","5"] ["6","7","8","9","10"] ["11","12","13"] という3つの配列にしたいということでいっすか

File.foreach('a.txt').each_slice(5).each do |a|
p a
end
452449:2012/05/31(木) 19:33:52.55
>>450-451
こんなに早く解答もらえて本当に助かりました。

要件が不明瞭だったようですいませんが、
その通りで、13行あるとしたら、5行、5行、3行に分裂するってことです

本当にありがとうございました
453デフォルトの名無しさん:2012/06/01(金) 06:53:10.75
小学生でもできるのにお前らときたら…
ttp://www.sanin-chuo.co.jp/news/modules/news/article.php?storyid=532264004
454デフォルトの名無しさん:2012/06/01(金) 07:04:51.57
そんな試験あったんだ。
455デフォルトの名無しさん:2012/06/01(金) 08:09:12.13
だから、勉強すれば誰でも合格できるんだってば
勉強したのに合格させないことが目的の試験じゃない
456デフォルトの名無しさん:2012/06/01(金) 08:25:02.42
そだな、よく勉強できましたぱちぱちぱち、という以上のお話ではなく、ニュース性には乏しい
なんらかの意図を感じる
457デフォルトの名無しさん:2012/06/01(金) 09:22:28.56
いちばん頑張ったのは、こんな受かるかどうかわからない、受かってもどうなるものでもないようなものに1万5千円も出した親御さんだと思うの
458デフォルトの名無しさん:2012/06/01(金) 09:28:21.95
uze-
459デフォルトの名無しさん:2012/06/01(金) 09:47:09.42
で勉強しないのがお前らと
460デフォルトの名無しさん:2012/06/01(金) 09:49:32.51
>>456
いやこれ山陰中国地方のローカルニュースですので
Rubyと名がついていればとりあえずオッケーな地場産業トピックみたいなもんだろ
深い意味はない
461デフォルトの名無しさん:2012/06/01(金) 10:13:10.57
まぁ資格持ってないよりはマシだよね
462デフォルトの名無しさん:2012/06/01(金) 20:26:04.05
いちばん頑張ったのは採点して表彰状を書いた中の人
463デフォルトの名無しさん:2012/06/01(金) 20:59:26.29
メモ

最低限の線画を描く
ベース色をバケツツールで塗る
明暗で簡易影
陰影で濃い影
パーツは後から別レイヤーで張り付ける
レイヤーを結合せずにクリッピングして陰影で影つけ
その後は発光と陰影しまくる
でもペイントソフトごとに陰影、明暗、発光はパラメータ違うので頼りすぎはまずい
肌色だけは素で色をおいて影、光をつけるのが無難な気がする
服、髪は多少色変わってもばれない
肌色だけはばれるうさ
464デフォルトの名無しさん:2012/06/01(金) 21:27:01.67
..           (.
.            )
      ,―ヽ__(__、―
   ,/  ノ       ヽ  ~\
  /   ノ   IPA    ヽ   ~\
/   ノ           ヽ、  `ヽ
|    ノ / ̄\   / ̄~ヽ ヽ    i
|   ノ              |  ノ
\  |  <●>  <●>  (  )
 \ |      | |       i /
    |      /  ヽ       レ
   i     (●_●)      /  
    i、    ,-――-、   ・ /
    i、  <(EEEEE)> ∵/  おまえら小学生が受かる試験落ちたりしてないよなw
      i、  \   ./  /
       \   ーー   ,ノ       
  ,,.....イ.ヽヽ、ー-―一ノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |
      >   ヽ. ハ  |   ||
465デフォルトの名無しさん:2012/06/01(金) 22:30:28.42
466デフォルトの名無しさん:2012/06/01(金) 23:14:12.82
Rubyの「配列 - 配列」って内部的にはどういう処理をしてるんですか?

array_a = ["ぬ", "る", "ぽ"]
array_b = ["ぽ", "ぬ", "る"]

dif = array_a - array_b

とやったら、dif = empty になるんですが、

「HTMLをパースして特定の部分を抜き出した配列」
「ローカルのファイルを一行ずつ読み込んだ配列」

が全く同じテキストを要素に持っている場合に「-」を用いても、emptyにならないんですが。。。。
467デフォルトの名無しさん:2012/06/01(金) 23:41:26.74
>>466
再現コードを貼って
468デフォルトの名無しさん:2012/06/01(金) 23:46:35.92
p array_a
p array_b
で中身同じか確認してみろ
文字コードや末尾の改行コードとかが一致してないんじゃねーの
469デフォルトの名無しさん:2012/06/01(金) 23:58:49.76
>>467
すいません
かなり長いし社外秘も多少あるので簡略化したものを作らないといけませんが
解決したので、その必要はなくなりました

>>468
その通りでした・・・pで見たら 片方にだけ要素のあとに\nが入ってました
テキスト比較ソフトも使ったのに。。。ぐぬぬ


というわけでありがとうございました
470デフォルトの名無しさん:2012/06/02(土) 08:38:15.08
韓国南部の沿岸都市、全羅南道麗水(ヨス)市で12日に開幕した国際博覧会(麗水万博)の入場者数が組織委員会の予測を大幅に下回っている。
約10万人と予想していた初日の来場者数は約3万2000人だった。8月12日までの3カ月間の会期に延べ1082万人の来場を見込んでいるが、
開幕後も入場者数は伸び悩んでおり、現在の傾向が続けば目標達成は困難だ。


http://headlines.yahoo.co.jp/hl?a=20120528-00000020-fsi-bus_all

471デフォルトの名無しさん:2012/06/02(土) 16:53:18.73
僕は正義の実行機械…
風紀委員会の断頭台…
なにも考えないしなにも感じない…
なにも喜ばないしなにも怖がらない…
切りさいて引き裂いて一件落着大団円……!!
472デフォルトの名無しさん:2012/06/03(日) 13:02:35.26
小学生が受かるような試験やってる言語やってて楽しい?
473デフォルトの名無しさん:2012/06/03(日) 15:05:48.75
unicorn上でRackアプリケーションを
つくっているのですが、

Reck::Responseのbodyの中に
htmlソースを入れて外部css読み込みを指定したのですが
スタイルが反映されません。

cssファイルも明示的にrackアプリケーション上に読み込んだり、
content-type指定せねばならないでしょうか

<参考にしているサイト>
http://www.kaeruspoon.net/articles/845
474デフォルトの名無しさん:2012/06/03(日) 15:12:44.62
>>472
中学生がコミッタになれるしね。
老害ばかりの言語と違って、実力があれば若くても活躍できるのだよ。
475デフォルトの名無しさん:2012/06/03(日) 15:20:32.27
>>472
言語が目的じゃないなら、難しいのは却って邪魔だと思うよ
476デフォルトの名無しさん:2012/06/03(日) 16:20:14.11
>>473
# config.ru
use Rack::Static, :urls => ["/css"], :root => "/home/alice/public_html/css"
app = lambda {|env| ... }
run app

みたいにするとRack::Static(の呼ぶRack::FIle#serving)の中で
PATH_INFOの拡張子に沿ってMIMEを解決してくれるみたい
477473:2012/06/03(日) 18:58:08.98
>476

早速、助かりました!ちゃんとできました。

なんかRackとかNginxのDSLに慣れません。
俺サイト構築まで道は長いっす。。
478デフォルトの名無しさん:2012/06/03(日) 19:07:41.95
あれ意味ないから使わないほうがいいと思うよ
479デフォルトの名無しさん:2012/06/03(日) 19:08:47.84
なんかいろいろ抜けてた、DSL使う意味ないという話
Rubyスクリプトのように書けばよろし
480デフォルトの名無しさん:2012/06/03(日) 19:39:52.53
サーバハンドラやポートをベタ書きしなくて済むし
useしたほうが楽だと思うけどなあ
481デフォルトの名無しさん:2012/06/03(日) 19:46:54.46
「あんましRubyではない」を受け入れてまで得たいものかね
482デフォルトの名無しさん:2012/06/03(日) 19:53:22.57
>>481
例えばどこらへんがRubyっぽくない?
DSLっていってもせいぜいRakefile程度だと思うんだけど
483デフォルトの名無しさん:2012/06/03(日) 20:25:16.53
川崎重工と東芝、台湾で新幹線48両を受注
川崎重工業と東芝は24日、台湾高速鉄道から、東海道・山陽新幹線で運行されている「700系新幹線」をベースとした
高速鉄道車両を共同受注したと発表した。受注したのは4編成48両で、受注総額は非公表だが190億円程度とみられる。
川重と東芝は、2000年12月に台湾で、三菱重工業や三菱商事など国内7社連合で
360両の新幹線とシステムを3320億円で受注しており、納入実績が評価されたという。

台湾高速鉄道は、海外の高速鉄道としては初めて新幹線を採用し、07年1月に営業運転を開始。
15年には台北~南港駅を結ぶ5.7キロの路線延長を予定しており、今回、受注した車両を導入する計画としている。
http://sankei.jp.msn.com/economy/news/120524/biz12052417470033-n1.htm
484デフォルトの名無しさん:2012/06/03(日) 22:20:36.19
配列は無限の大きさを持っているの?
a = []
これで配列ができるんだけど大きさを指定しないとまずくないの?
485デフォルトの名無しさん:2012/06/03(日) 22:25:32.77
Rubyの配列は実は配列じゃないので大丈夫です。
486デフォルトの名無しさん:2012/06/03(日) 23:22:42.90
Javaだと配列は固定長だから使いにくくてコレクション使うようになってるから
逆に配列の存在意義ってなんなのって話になってるよね
まあコレクションだとキャストとかジェネリックスとかうざいんだけど
487デフォルトの名無しさん:2012/06/03(日) 23:23:04.37
本質的には配列のサイズの宣言なんていらない
全部コンピュータにやらせればいい
もちろん、その代償として動作速度もメモリ効率も悪くなるが

まあ、つまり、そういうわけで、RubyはCよりも遅い
488デフォルトの名無しさん:2012/06/04(月) 08:51:37.76
いわゆるベクターとか言ってるデータ構造。

余談だがJavaの配列は、他にプリミティブを入れられるコンテナーがない、
とかで使い道がないわけでもない。
489デフォルトの名無しさん:2012/06/04(月) 09:38:41.12
テレビで節電が叫ばれているが、そもそも昼間のテレビほど無駄なものはない。無駄だけではなく、
人をバカにする。公害である。これだけ言われても電波を止めないというのであれば、
私たちのライフスタイルを変えて観なければよろしい。

高校野球もだ。NHKの中継を一切観ない。いや、中継をしているのならば受信料を拒否する。
「みなさまのNHK」が節電に反する国賊行為をしているのである。当然のことだろう。
球児たちのためにも大会はやればいい。ただし、早朝試合とナイターにする。熱中症についてあれほど
報じながら炎天下で球児に試合をさせる朝日新聞の神経が私にはわからない。

馬鹿どもに声高に抗議するのにはもう疲れたし効果がないこともわかった。だから私たちはゆるやかに
生き方を変えて、奴らを不要なものにしてしまおう。この柔らかな革命がうまくいけば、
たとえば不当な税金に対しても、日本人は立ち上がるすべを覚えるかもしれない。電力不足と、
節電などを嘘つきどもが押しつけてくるこの夏は、日本人にとってあるいは歴史的な好機になるかもしれないのだ。
静かに、したたかに、この夏を楽しもうではないか。こうすれば節電できる式の記事や番組も
無視することだ。おまえらがそういうことをやめるのが、いちばんの節電だ、ともうわかったのだから。

http://www.news-postseven.com/archives/20120604_113264.html
490デフォルトの名無しさん:2012/06/04(月) 10:43:48.20
>>484
動的配列。ただし管理はRuby側で勝手にやる。
491デフォルトの名無しさん:2012/06/04(月) 10:48:42.15
なんで事前に文字列や配列の大きさを宣言しなければならないかがわかってれば宣言しない理由もわかるかと思うんだが、
最近はそっちの言語でもあんまり理屈を教えないんだろうか
492デフォルトの名無しさん:2012/06/04(月) 10:57:40.82
他のプログラミング言語では書くおまじないがないのはなぜですか、くらいの質問だろ
たぶんあんまし深い意味はない
493デフォルトの名無しさん:2012/06/04(月) 11:11:59.30
スラドでやれ
494デフォルトの名無しさん:2012/06/04(月) 18:54:16.81
顧客満足度や製品クリティなど様々な市場調査をしていることで知られるJ.D.パワー。そのドイツに
おける自動車関連の調査結果「J.D.パワーレポート2012」が発表されたことを現地メディア『Auto Bild』が報じています。
自動車の個別評価というと、いわゆる試乗インプレッションのようなものを思い浮かべがちですが、
ご存知のようにこの調査ではそうしたクルマの魅力のほかに、メンテナンスコスト、品質と信頼性、
サービスという視点からも評価をしているということです。それぞれはポイント化され合計によって
評価されますが、それぞれのファクターにおける比率は、魅力:28%、メンテナンス25%、品質24%、
サービス23%となっているとのこと。
さて、79台のクルマが評価されている「J.D.パワーレポート2012」ですが、そのほかにメーカーごとの
ランキングというのも発表されています。世界を代表する自動車王国のひとつであるドイツ、そのメーカー
ランキングはやはりドイツ系ブランドが上位独占! かと思いきや、そうでもないのです。

以下にメーカーランキングを紹介します(同点・同順位があるのでご注意ください)。
1位:メルセデス・ベンツ
2位:トヨタ
3位:三菱
4位:マツダ
5位:BMW
5位:フォルクスワーゲン
7位:シュコダ
8位:アウディ
8位:ボルボ
10位:フォード

トップのメルセデスは予想通りという人も多いでしょうが、2~4位を日本ブランドが独占。日本での
シェアや評価からすると、かなり意外といえるのではないでしょうか。
ちなみに車種別ランキングのベスト3を見ると、トップはメルセデス・ベンツAクラス、
2位にはマツダ6(日本名:アテンザ)が入り、3位がメルセデス・ベンツEクラスとなっています。

http://clicccar.com/wp-content/uploads/8569e5df3468798104dce4a91a25417d1-300x200.jpg
http://clicccar.com/2012/06/04/161430
495デフォルトの名無しさん:2012/06/04(月) 21:51:40.88
Windows7のruby1.9.3&mechanize2.3でログイン出来ないサイトがあるのですが解決策を教えて下さい
pastebin.com/QbnBCzdb(規制中のためソースを貼りました)
496デフォルトの名無しさん:2012/06/05(火) 00:47:55.46
>>495
試してないけど、ボタンのidも指定しないとダメなんじゃないの?
497デフォルトの名無しさん:2012/06/05(火) 02:10:16.39
>>495
わかった
サイト作った人のほうでボット避けがしてあって、それに引っかかってる…としか言えん

もう解決してるかもしれないけど、せっかくなので、やり方を教える
普通、なにか「よくわからんけど、これで動作するはずなのに何故かサーバに弾かれる」ということが起こった場合、
「ふつーのWebブラウザの正常時の送信ヘッダと送信データ、受信ヘッダ」と「Mechanizeのログのヘッダとボディ」を比較する
(サイトのHTMLを精査しても理屈上はわかるんだけど、ぶっちゃけ判明までがかなり面倒)
firefoxならLive HTTP HeadersやHttpFoxで取得することができるんで、これを起動しながらログインした記録と、
agent.log=Logger.new($stdout) とかした Mechanize での結果をじーっと見比べる
リクエストヘッダをじーっと見る
変わらないように思える
リクエストボディをじーっと見る(HttpFoxだと簡単)
Mechanizeは改行が\nのままログに流れるので、適当に変数に入れてputsして、じーっと見る
おそらくは、forefoxだと送られてて、Mechanizeだと送られてないなにか、JavaScript由来のvalueやクッキー処理の差異でなにか

……アレ?

ということで、キーワードをもとにHTML内を検索すると、これは明らかにJavaScriptを利用したボット避け処置だということがわかる
JavaScriptで動的にフォームにデータを入力してる(しかもページ読み込み時)
MechanizeをはじめとするJavaScript非対応スクレイピングライブラリはこういうのにオートで対処できない

フォームにJavaScriptがやってるのと同じ値を自力で入力してからclick_buttonだ
498495:2012/06/05(火) 02:29:43.52
>>497
ありがとうございます!やってみます。
499デフォルトの名無しさん:2012/06/05(火) 03:03:57.54
そういうのはやってから経緯を書け
500デフォルトの名無しさん:2012/06/05(火) 04:31:11.31
585 名前:番組の途中ですがアフィサイトへの転載は禁止です[] 投稿日:2012/06/04(月) 00:15:13.02 ID:sChzMgIz0
騙されるな!在日の自作自演だ!

http://www.youtube.com/watch?v=z1eLBCgEhy8 吉本抗議


       【この老人は朝鮮総連の幹部だった】

・名前が 李 田所(イ・ジョンス)81歳
・24歳の頃に来日、以降強姦など犯罪を繰り返し何度も有罪判決を受ける
・相手に因縁をつけ数人がかりで暴行を加える、10年前には2人がかりで男性に性的暴行を働いたことも
・特に気に入らない相手には自宅に呼び出し監禁、拷問を加えることも珍しくない
・これまで1億1451.4万円もの生活保護不正受給を斡旋したという噂も
・大学時代の先輩(男)にベッタリの同性愛者、下北沢を二人で歩いていたところを目撃した人も多い


640 名前:番組の途中ですがアフィサイトへの転載は禁止です[] 投稿日:2012/06/04(月) 00:21:38.79 ID:qe1EcwfO0 [5/5]
>>585
もう動画作った奴がなんか動画作るのに慣れてるし
明らかにこいつがグルで待ち構えてなければ撮れない映像じゃんw
こいつ明らかにデモに嫌がらせする目的でカメラ持って待ち構えてるのに
仕込みのジジイが来なかったらカメラ回す意味ないんだからw
偶然通りかかってカメラを回したとか嘘丸出しw
これでますます吉本のイメージが地の底まで落ちたわw

http://engawa.2ch.net/test/read.cgi/poverty/1338729931/
501495:2012/06/05(火) 05:32:01.87
>>497
ログイン出来ました!ありがとうございます。
pastebin.com/R0CtsucE
>>499
すんませんした!
502デフォルトの名無しさん:2012/06/05(火) 09:09:27.73
「とり急ぎお礼まで」みたいなのはビジネス慣習だからなあ
1日ぶん"遅れ"たからって他の人に契約取られたりなんてしないわけだし、
実際にやってからその結果を報告されたほうが何万倍もありがたいわな

もしかしたら最近はケータイショートメールの「見たら即レス」の慣習が母体になってるのかもしれんが
503デフォルトの名無しさん:2012/06/05(火) 22:34:13.02
net/smtpを用いてメールを送信しようとしてるんですが、これを送ると、<<-EndOfMail ~ EndOfMailがそのまま本文に出てしまい
ヘッダに出てこないんですが・・・・原因はなぜなんでしょうか?


def send_message

mail_content =
"
<<-EndOfMail,
From: Ruby <from@example.com>
To: iPhone <to@example.net>
Subject: Update
Date: #{Time.now}
Message-Id: <unique.message.id.string@yourhost.example.com>

Test

EndOfMail
"
smtp = Net::SMTP.new(@server, @port)
smtp.start(@localhost, @user_id, @password, @auth_type) { |smtp|
smtp.send_message(mail_content, "************@gmail.com", "**************@i.softbank.jp")
}

end
504デフォルトの名無しさん:2012/06/05(火) 22:47:46.62
mail_contentの下の " とEndOfMailの下の " がいらない
Ruby ヒアドキュメント で調べて
505デフォルトの名無しさん:2012/06/05(火) 23:43:48.36
>>504
ありがとうございました
今はよく分からなかったので、<<で代入する方法に切替えました
506デフォルトの名無しさん:2012/06/06(水) 12:06:10.73
rubyinstaller から 1.9.3 p194 をインストールしたのですが
Ruby193\lib\libmsvcrt-ruby191-static.aというように
バージョン1.9.1っぽいファイル名が存在します。
これは昔のバージョンから変更されていないということでしょうか?

Ruby 1.9.3 からライセンスが変更されたので
BSDライセンスとして扱っても大丈夫かどうかが知りたいです。
507デフォルトの名無しさん:2012/06/06(水) 12:30:21.66
1.9.2と1.9.3は1.9.1とバイナリ互換性がある(ようにかなり意識して必死こいて作ったり訂正したりした)ので、
1.9.1名義のサブディレクトリにインストールされ、1.9.1名義のバージョンファイル名がつく

ABI互換であるという印なのだが、まあこれがまた初心者には意味不明な上に部外者にも意味不明(添付ファイル名だけが継続なので)
いちおうマニュアルやらリリースノートやらには記述があるんだが、トラップではあるかと思う

単にバイナリが互換であるというだけなので、1.9.3のライセンスはBSDライセンスで(も)よい
508デフォルトの名無しさん:2012/06/06(水) 12:35:32.58
>>507
ありがとうございます。
助かりました。
509デフォルトの名無しさん:2012/06/06(水) 20:18:33.56
74 :可愛い奥様:2012/06/06(水) 17:05:45.85 ID:vRJcvd5t0
フジテレビ電話したら今日の番組の変更は無いと言われた
「皇族の方が亡くなられたのに変更はしないんですか?」
と聞いたら
「今のところありません。よろしくお願いします」だと


国の一大事に捏造人気アイドルの茶番をやるつもりらしい




津田大介 @tsuda
別にAKBに恨みはないし、がんばっていただきたいなと思うけど、国民的に大きく報じる話題は
ほかにもっともっとたくさんありますよねじっさい……。テレビは特に貴重な電波資源使ってるんだし。
http://twitter.com/tsuda/status/210265622502842368

東浩紀 @hazuma
同意。
http://twitter.com/hazuma/status/210266350730481664
510デフォルトの名無しさん:2012/06/06(水) 22:34:13.07
requireメソッドはクラスの何処に書くべきですか?
それを使うメソッドのブロックの中に書くべきですか?
511 忍法帖【Lv=27,xxxPT】 :2012/06/06(水) 22:59:38.00
>>510
そのスクリプトでどんなライブラリを利用しているかを明示する為にもファイルの先頭に記述すべき
512デフォルトの名無しさん:2012/06/06(水) 23:33:54.65
>>511
分かりました
ありがとうございました
513デフォルトの名無しさん:2012/06/07(木) 04:14:44.75
普段は絶対使わなくて、require すると1秒くらいガリガリ言うようなライブラリがある場合、それを使うエラー対処メソッドの中で require させて、ファイル先頭に
# require 'something/heavy' # at Hoge#foo
とか書くことはある
あらゆるライブラリが一瞬で読み込めてファイル負荷もなにもない環境だけなのなら問題にならないが、残念ながらそれは理想的に過ぎる

まあ、とにかく、外部ライブラリの require の情報はスクリプトファイルの先頭にまとめて書いておいて欲しい
習慣的に、みんなここを見てそのスクリプトでなに読み込むか判断するから

あと、「自分のライブラリをファイル分けしていて、なおかつクラスの定義の関係上サブファイルはあとにしないとどうしてもまずい」というような場合は

require 'rubygems'
require 'something/hoge'

class MyClass
...
end

require 'my/file1'
require 'my/file2'

とか後ろに回すことはあるが、要件としてはかなりレアで、普通は

require 'my/file1'
require 'my/file2'

class MyClass
...
end

と書く
require の大雑把な動作としては「そこにそれを物理的に挿入」なんで、
MyyClass のメイン定義の前に MyClass::File1 の定義が読み込まれるのが気持ち悪いと言う人がときどき出るんだけど、あんまり気にしないで欲しい
514デフォルトの名無しさん:2012/06/07(木) 10:21:36.22
>>513
詳しくありがとうございました
参考になりました
515uy:2012/06/09(土) 03:08:16.48
質問です

a = [1,2,3,4,5]
a[1,2] = ["a","b"]
p a # => [1, "a", "b", 4, 5]

このような挿入を行いたい時に、a[1,2] の 2をなくす事って出来ませんか?

以下のような方法を思いつきましたが、見た目やばいのです
a = [1,2,3,4,5]
a[1,(b=["c","d"]).size] = b
p a
516デフォルトの名無しさん:2012/06/09(土) 06:05:24.81
>>513
後ろに回すのは海外で時々見る(書く人によるらしい)
なんか宗派でもあるんだろうか
517デフォルトの名無しさん:2012/06/09(土) 08:17:42.25
なんでもかんでも引数カッコ省略するようなもんだろ
戻り値メソッドチェーンするときだけカッコつけてて、指指して笑えるほどカッコ悪い
518デフォルトの名無しさん:2012/06/09(土) 10:18:57.66
1.9.2p320 :004 > %Q["Hello"]
=> "\"Hello\""
1.9.2p320 :005 > %q["Hello"]
=> "\"Hello\""

すいません。%Qと%qの違いがよくわからないです。
どう違うのか例をあげて教えてください、宜しくお願いします。
519デフォルトの名無しさん:2012/06/09(土) 10:30:45.02
そういうのはマニュアルくらい読め
…なんだけど、これそもそもどう調べればいいのかわからないよな
この手の「そのまんま書いて文字列や正規表現オブジェクトになるもの」はリテラルと呼ぶ
マニュアルとかガイドとかを最初のページから順を追ってきちんと読む素直な人だけが得をする情報だったりする

ttp://doc.ruby-lang.org/ja/1.9.3/doc/spec=2fliteral.html#percent
> %!STRING! : ダブルクォート文字列
> %Q!STRING! : 同上
> %q!STRING! : シングルクォート文字列

ということで、%Q は "string" と同じで、 %q は 'string' と同じ
シングルクォートとダブルクォートの違いがわからない場合は、これは重要なので自力で勉強してくれ
520デフォルトの名無しさん:2012/06/09(土) 10:35:51.75
自力で勉強といいつつURLの飛び先に載ってる優しさに惚れた
521デフォルトの名無しさん:2012/06/09(土) 10:51:01.92
>>519
ありがとうございます。
わからないことに関して説明不足でした。
以下コマンドラインで実行したものです。
1.9.2p320 :004 > %Q["Hello"]
=> "\"Hello\""
1.9.2p320 :005 > %q["Hello"]
=> "\"Hello\""

上記 の%q["Hello"]は"\"Hello\""となっています。僕もカキコする前そのマニュアルみたんですが
そのマニュアルの説明なら
1.9.2p320 :005 > %q["Hello"]
=> '\"Hello\"`となるような気がします。そこら辺が分かりません。
分かる ようなら宜しくお願いします。
522デフォルトの名無しさん:2012/06/09(土) 11:07:59.80
>>521
あそこに出るのはその場合、文字列をinspectしたものだと思うが
そこにシングルクォートで始まりバッククォートに終わるなんて表現は出ないよ
523デフォルトの名無しさん:2012/06/09(土) 11:18:21.41
>>521
> '\"Hello\"`となるような気がします。
なんねーよ(素

「入力」した方法によらず、p や irb での inspect 表示や変数・メソッドとしての戻り値はひとつに定まっていると考えるのはどっすか
文字列はすべて、入力やら内部変数参照やらに依らず、すべてを解決した "string" の形式で返る
%記法は入力…というか文字列作成の手法のひとつであって、できた文字列には作成手段の情報は一切残らない
"string" も
"str" + 'ing' も
s = "ri"; "st#{s}ng" も
%q["string"] も
String.new('string') も
[115, 116, 114, 105, 110, 103].map{|i| i.chr}.join も
すべて "string" として返る
524デフォルトの名無しさん:2012/06/09(土) 11:18:22.04
Rubyは、VBやScalaみたいに引数いれずメソッドを用いる場合は()を省略できますけど
これってつけたほうがいいんでしょうか?

省略すると、インスタンス変数とメソッドの区別がつかなくなると思うんです

ただ、そもそも

hoge.インスタンス変数

とやっていても結局はメソッドを呼び出してるんだと言われたらそれまでですが・・・
525デフォルトの名無しさん:2012/06/09(土) 11:40:16.58
>>524
> インスタンス変数とメソッドの区別がつかなくなると思うんです
ローカル変数使用とインスタンスメソッド呼び出しの区別がつかない、だとして回答

def foo
 (なんか10行くらい省略)
 
 some_exec(hoge) # ← hogeって何? 省略部分で定義されてたローカル変数? def hoge や attr_reader :hoge とかで定義されてるメソッド?
 
end

別に区別つけなくてもいいです(そんな変数名忘れるくらい長いメソッド作るんじゃねえ、という意味も込めて)
Ruby パーサがインスタンスメソッドだと思ってくれない場合にのみ、メソッドのほうを hoge() とか書きます
他の言語の流儀が忘れられないような初心者の人が稀にいちいち hoge() とか書いてますが、普通の人は書かないので真似しなくていいです

普段の順番的には、メソッド定義内部で同名のローカル変数を探してからおもむろにファイル内検索するんで、
まあ、その、若干めんどくさいことには変わりないとは言えないでもなくもない
ただ、Ruby では「引数なしレシーバなしインスタンスメソッド」をめちゃくちゃ大量に使うので、
それにいちいち () つけてるほうがたぶん総量としてめんどいんじゃなかろうかという判断をみんなしてるんじゃないかな
526デフォルトの名無しさん:2012/06/09(土) 11:55:34.25
>>524
俺は最後の理由で「レシーバ.メソッド」形式に付ける意味は薄いと思う
精々、用法が「メソッド的か」「フィールド的か」という雰囲気付けくらいか

ただ「ローカル変数」と「レシーバの省略されたメソッド(関数を含む)呼び出し」
の区別をする意味で付けることも無くはないかな
527デフォルトの名無しさん:2012/06/09(土) 15:26:42.12
# -*- encoding: UTF-8 -*-

class Hoge
 def test_method
  @log = ""
 end
 attr_accessor:log
end

begin
 h = Hoge.new
 h.log += "正常終了"

rescue => e
 h.log += e
end

p h.log



このスクリプトで「+=」に対して、undefined method `+' for nil:NilClass (NoMethodError)と出てくるのはなじぇですか?
528デフォルトの名無しさん:2012/06/09(土) 15:38:13.14
>>527
@log が初期化されていないから。
initializeメソッド(new時に呼ばれる)を定義し、その中できちんと @log を初期化すればおk。
529デフォルトの名無しさん:2012/06/09(土) 15:39:06.11
test_methodが呼ばれてないので@logが定義されていないのれす
530デフォルトの名無しさん:2012/06/09(土) 15:47:30.53
あ、そうか。早合点だ。>>529は撤回
531デフォルトの名無しさん:2012/06/09(土) 15:48:59.32
例外クラスを指定しない rescue は使ってはいけない
文法ミスだろうが構造ミスだろうがケアレスミスだろうが特定のデータのときだけ出るレアな例外だろうが全部握り潰してしまう

>>528-529
初期化も定義もされてる(だからアクセスできるし、nilが返る)

>>527
@log に nil が入ってるから
log メソッドの戻り値を使うより前に、+ メソッドを持つオブジェクトを入れとけばいい

# -*- encoding: UTF-8 -*-

class Hoge
attr_accessor :log
end

begin
h = Hoge.new
h.log = ""
h.log += "正常終了"
rescue StandardError => e
h.log += e.to_s
end

p h.log
532デフォルトの名無しさん:2012/06/09(土) 16:04:02.62
>>531
例外クラスを指定しない場合はStandardErrorを指定したのと一緒では
あとattr_accessor :xしたからといって実際にインスタンス変数@xが定義されているとは限らないだろう
Hoge.new.instance_variablesするとわかる
533デフォルトの名無しさん:2012/06/09(土) 16:06:31.72
>>528
>>529
ありがとうございます!!

今回のサンプルコードは指摘通りにメソッドを呼び出してなかったんですが、
このようにメソッドの中でインスタンス変数を初期化するようにしていると、例外が発生した時にそのメソッドが呼ばれないまま
rescueの中でそのインスタンス変数を参照してしまう可能性があるので、
やや行数が増えてもinitializeの中で初期化しておくのが利口なんですかね・・・?

インスタンス変数のスコープの性質的にもその方が綺麗と言えるかもしれませんし
534デフォルトの名無しさん:2012/06/09(土) 16:24:36.34
>>533
初期値がnilであるべきならば初期化しなくても実害はないと思うけど
その場合でも俺なら明示的にnilで初期化しておくか、initialize内でtest_methodを呼んで初期化するかな

あとは attr_accessor を使わずに attr_reader にして読み取りのみにし、追記は別メソッドでやるという方法もある
それなら、その別メソッドの最初に @log の中身を確認して無ければ初期化してから処理、とできるでしょ
535デフォルトの名無しさん:2012/06/09(土) 16:26:15.45
使わないんならinitializeにインスタンス変数書くんじゃねえ、という考え方もいちおうある
def log
@log ||= ""
end
チェッカーに文句言われるからinitializeに全部書く、という消極的な考え方もあるが
536デフォルトの名無しさん:2012/06/09(土) 19:52:54.36
>>524
前スレだかでも同じことを言った気がするが
区別をつける必然性がないんだからつかなくても何も問題ない
hoge.fooのfooがインスタンス変数だろうがメソッドだろうがそれに意味はなく、意味があるのは戻り値だから
>結局はメソッドを呼び出してるんだと言われたらそれまでですが
それは確かにそうだがそれとこれとは別の軸の問題
そこに書かれた「hoge」が変数かメソッドか「区別がつかなくなる」と困るのは誰か、と考えればわかると思う
537デフォルトの名無しさん:2012/06/09(土) 20:38:08.66
http://doc.ruby-lang.org/ja/1.9.2/class/Array.html
Array#dupの挙動がリファレンスを見てもよくわかりません

ary = ['string']
p ary #=> ["string"]
copy = ary.dup
p copy #=> ["string"]

ary[0][0...3] = ""
p ary #=> ["ing"]
p copy #=> ["ing"]

上記のコードを見て、copyという変数はaryという配列オブジェクトの参照をコピーしたもの(shallow copy)だから
"str"の部分を切り取る処理をした後ではaryもcopyも同じ値を出力するのかと思っていました

ary[0] = "test"
p ary #=> ["test"]
p copy #=> ["ing"]

このように改変しても値はaryとcopyで同じだと思っていたのですが、別になってしまいます
なぜこのようになるのでしょうか?
538デフォルトの名無しさん:2012/06/09(土) 20:59:23.61
>>537
irb> a = ["str"]
irb> p a[0].object_id
80168600
irb> p a.dup[0].object_id
80168600
irb> p Marshal.load(Marshal.dump(a))[0].object_id
80240260

このへんから、オブジェクトIDを見ないとわけわかんなくなる
Marshal.dump したものを Marshal.load するのはいわゆる深いコピー(deep copy)の常套手段
おまけ

irb> s = "abc"
irb> p s.object_id
80310090
irb> s[0] = "b"
irb> p s.object_id
80310090
irb> p s
"bbc"
539デフォルトの名無しさん:2012/06/09(土) 21:23:40.21
>>530
>>531
>>532
>>534
>>535

ありがとうございます!
540デフォルトの名無しさん:2012/06/09(土) 22:46:18.41
>>537
ary[0][0...3] = ""もary[0] = "test"同じようにary[0]を変更しているように見えるが実際は全然違う。
前者はary[0]が指している"string"というStringオブジェクト自体を変更する処理だけど
後者はaryというArrayオブジェクトを変更して、ary[0]が指し示す先を変える処理。
最も決定的に違うのはこの点。


なので、ary[0][0...3] = ""ってのは
   copy[0] → "string" ← ary[0]
だった所を、"string"を変更して
   copy[0] → "ing" ← ary[0]
とする処理である一方、ary[0] = "test"ってのはaryの方を変更するから
   copy[0] → "ing"     ary[0] → "test"
という風になる。
541デフォルトの名無しさん:2012/06/09(土) 23:21:02.14
>>537
また、30%の人か。
Rubyは、多次元の配列はサポートしていない。
配列の要素に、配列を許容するので、多次元の配列を記述することができる。
なので、dupはこの場合役に立たない。

aを別の(独立した)メモリーアドレスbに複製するなら
(この言い方も、なんだか誤解されそう?  と、言うか、わかりやすいけど、正確でない?)

b = Marshal.load(Marshal.dump(a))

とか、すると良いようだ。たぶん。
も少し、わかりやすい名前にするとか、わかりやすいところに書いとく、
とかの配慮はないみたい。
542デフォルトの名無しさん:2012/06/09(土) 23:34:29.22
それは多次元の配列ではないし、
マーシャルを使ってオブジェクトのディープコピーを行うのを、配列の配列を
中身まで全部コピーする方法としてマニュアルで紹介するのは、

・他の種類のオブジェクトでも一般に使える方法であること
・配列の配列をディープコピーする方法としては、書くのは簡単だが、
 やることとして大げさ過ぎること

といった問題がある。
543:2012/06/10(日) 00:29:26.33
foo = Array.new
puts "#{foo}"

だと配列が空でも[]と出てきてしまうのですが、空白だけ出す方法はないのでしょうか?
544デフォルトの名無しさん:2012/06/10(日) 02:02:36.83
>>543
#{}の中はコードが書けるんだから、条件ごと書けば良いよ。
puts "#{foo.empty? ? "" : foo}"
545:2012/06/10(日) 02:30:44.76
ありがとうございます
546uy:2012/06/10(日) 08:51:27.43
質問です
transposeに破壊的メソッドが存在しないのは何ででしょうか
547デフォルトの名無しさん:2012/06/10(日) 19:56:18.69
Errno::ECONNRESET
をrescueで拾い、ensureでログに吐きたいんですが
エラーの名前を拾うにはどうすればいいのでしょうか?

begin
raise Errno::ECONNRESET
rescue => ex
ensure
p "#{ex}"
p ex.to_s
end


だと"An existing connection was forcibly closed by the remote host."というエラーメッセージだけ表示されてしまうんですが
548デフォルトの名無しさん:2012/06/10(日) 20:09:44.75
Rubyの例外はすべて例外オブジェクトになっている
rescue => ex とした場合、 変数 ex には例外オブジェクトが入ってて、オブジェクトだから、各種メソッドが用意されている
適当に継承元のクラスのメソッドを見るといい
http://doc.ruby-lang.org/ja/1.9.2/class/Errno=3a=3aECONNRESET.html
…まあ、今回は Object まで辿らないといけないんだけど…

begin
raise Errno::ECONNRESET
rescue SystemCallError => ex
p ex.class.to_s
end
549デフォルトの名無しさん:2012/06/10(日) 20:21:21.13
>548
ありがとうございます
550デフォルトの名無しさん:2012/06/10(日) 22:15:22.49
>それは多次元の配列ではないし、
dupで思うようにならないてっことは、
1次元の配列の要素が文字列ってことね。
そこらへん、取扱いは同じなの。

そこを、ちゃんと書くと長くなる。
ので、少し端折っただけなのに

ユースケースとしては、
パズルなんかを解くときに、総当たりしてるときに、袋に当たると、
いくらか、戻らねばならんので、あるときの状態を再現せねばならん時とか。

で、このあたりを書くと、作者さんの嫌いな「再帰的な呼び出し」
をせねばならないことが多い。

551uy:2012/06/11(月) 06:30:58.63
質問です
[[1],[2]].map(&:push,4)
とかで引数を渡せないのはなんでなんでしょうか
552デフォルトの名無しさん:2012/06/11(月) 09:37:29.88
dryに書きたいなら
[[1], [2]].each.with_object(4).map(&:push)
553uy:2012/06/11(月) 09:58:33.54
質問です

1.8系では ?a とすると97と表示されていたのですが
1.9系になってからは

p ?a # => "a"

こうなってるんですけど、これって正しい動作なんですか?
だとすれば、?a って構文は何のためのものになったんですか?
だとすれば、アスキーコード見たいときってどうすればいいんでしょうか
"a".bytes do |m| p m end???
554uy:2012/06/11(月) 10:00:58.87
>>552
そんな方法あったんですね
べんきょうになります
555デフォルトの名無しさん:2012/06/11(月) 11:06:54.84
>>553
ord
556デフォルトの名無しさん:2012/06/11(月) 11:13:36.29
>>552
それなんか意味ある?
557uy:2012/06/11(月) 11:46:26.30
>>555
そうなんですかっ
ありがとうございます
558デフォルトの名無しさん:2012/06/11(月) 11:53:53.19
>>556
レス番号

嘘書かれてても見えないが
559デフォルトの名無しさん:2012/06/11(月) 23:09:29.94
>>515
a.insert(1,*["a","b"])
560uy:2012/06/12(火) 03:28:39.54
>>559
# =>[1, "a", "b", 2, 3, 4, 5]
561デフォルトの名無しさん:2012/06/12(火) 22:38:24.38
>>553
プログラミング初心者の私が
答えるのはあれですが、
?aは
"a"[0]と同じように振る舞いますね。
オライリーの
初めてのRubyに書いてあります。
アスキーコードは
String#bytes.to_aのはず
562uy:2012/06/13(水) 04:55:04.43
あ、ありがとうございますー!
本当に助かりました
ご教示ありがとうございます
String#bytes.to_aという発想もらい自分なりに考えてみたのですが
String#bytes.firstでそのまま受け取れることが確認できましたっ!
プログラム板でこういったやり取りをするのが僕自身の唯一のリアルです
うれしいなー(」・ω・)」うー!(/・ω・)/にゃー!
みんな答えてくれればいいものをなかなか答えてくれなくて寂しい思いを今までしてまいりました。・゚゚・(≧д≦)・゚゚・。
すぐ答えがかえってくるようなbbsができたらいいのに、あ、でもム板にもこのような心を持った方はまだご健在でいらしたのですね
少し感動してしまいました(o^∇^o)ノ
まだ外も暗い時間だというのに世界が明るくなりました凄くいいぃぃ
長梅雨の曇り空なのに外が晴れているような気分で特にいいぃぃ
このような良質ゆんゆん電波降り注がれて最高にいいぃぃれっつ\(・ω・)/にゃー!
またrubyを使っていて困った事があったら><。。このスレで質問させていただきますのでそのときは教えてくださいねっヾ(≧▽≦)ノ
それでは失礼いたしますデハデハヾ(_ _*)
563デフォルトの名無しさん:2012/06/13(水) 05:43:21.75
$:.unshift(File.dirname(__FILE__))

$.はなにをあらわしてるんですか?
調べてもよくわかりませんでした
564uy:2012/06/13(水) 06:11:22.77
それは組み込み変数という

http://doc.ruby-lang.org/ja/1.9.3/class/Kernel.html
p $:
p $LOAD_PATH
p $-I

$:.unshift っていうのは
$: っていうArray型の変数から unshift ってメソッドを呼び出してるだけ
565デフォルトの名無しさん:2012/06/13(水) 08:42:08.97
>>563
Rubyが勝手にセットするグローバル変数だよ
ユーザーからは作れない名前だからちょっとばかし特殊だが

$: はロードパスのディレクトリ配列を返す
若干わかりにくいので、どちらかというと、別名の$LOAD_PATHのほうが人気
http://doc.ruby-lang.org/ja/1.9.3/class/Kernel.html
Unix系シェルの実行パス列挙の区切り文字は : だから連想しやすいよね、という、歴史的経緯を鑑みた連想しにくい理屈がつけられている

Rubyは、これの順番でrequireするファイルを探す
unshiftだから配列の先頭に追加で、つまりは「このファイルのあるディレクトリを$LOAD_PATHの先頭に追加」だ
直後の require 'hoge' でまず最初に「自分のディレクトリにあるhoge.rb」を確実に探して欲しいときのイディオムだな
566デフォルトの名無しさん:2012/06/13(水) 10:15:42.80
: そのものは Perl 由来だっけか
パスの列挙区切りで云々というのをPerlの本で見かけた記憶がある
567デフォルトの名無しさん:2012/06/13(水) 18:57:40.13
Perlってきもいのに
そのきもさを継承したRubyって
568デフォルトの名無しさん:2012/06/13(水) 19:58:14.05
$プラス1文字記号の変数はほぼシェルかPerlからの引き継ぎ。
Perl自体がシェルから引き継いだ $$ なんてのもある。

569524:2012/06/13(水) 20:52:32.34
>>525
>>526
>>536
ありがとうございました。
570デフォルトの名無しさん:2012/06/13(水) 22:37:48.19
abc002.jpg
11-dfg.jpg

このような、なんの法則もない画像が1万点フォルダにあって、
それぞれの頭文字3文字だけとったフォルダを作って、分類することはできますか?

「abc」フォルダに「abc002.jpg」。
「11-」フォルダに「11-dfg.jpg」。

こんな感じで分けたいんですが可能でしょうか?
571デフォルトの名無しさん:2012/06/13(水) 22:51:28.52
できるかどうかだけで言えばできる
でも、チェックとディレクトリ作成とファイル移動はぜんぶ自力で書かないといけないな
572デフォルトの名無しさん:2012/06/13(水) 22:57:57.21
>> s = "abc123456"
>> if s =~ /(.{3})(.*)/ then puts $1, $2; end
abc
123456
とかやれば分離できる
573デフォルトの名無しさん:2012/06/13(水) 22:58:35.11
可能です
574デフォルトの名無しさん:2012/06/13(水) 22:59:13.57
「本当に」なんの法則性もない英数字なのなら、先頭3文字で分類してもたいしてまとまらないんじゃないかな…
575デフォルトの名無しさん:2012/06/13(水) 23:05:20.21
意味は無くてもいいんです。
ひとつのフォルダにあまりにファイルが多いと、
システムが不安定になるんで、
適当にばらけたフォルダに数千ファイルくらいに、
別れてくれれば良いだけなんす。
576デフォルトの名無しさん:2012/06/13(水) 23:05:24.52
>>571 >>573
ありがとうございます

>>572
さっぱりなので、ちょっと勉強させてもらいますw

>>574
実は画像が数100万ファイルありまして。。
一覧を表示するのも難儀な状態なので、
1フォルダ当たりの画像数を減らしたいというのが発端なんです。
577576:2012/06/13(水) 23:06:32.63
>>575
なんというエスパーw
578デフォルトの名無しさん:2012/06/13(水) 23:07:07.26
漏れも同じこと既にしてるわ
579576:2012/06/13(水) 23:08:01.70
>>578
!!

よかったら
参考にコードを教えてもらうってことはできませんか?
580デフォルトの名無しさん:2012/06/13(水) 23:08:47.37
Python のだけど
それでもいい?
581576:2012/06/13(水) 23:09:43.54
>>580
もちろん、実現出来れば、なんでもかまいませんw
お願いします。
582デフォルトの名無しさん:2012/06/13(水) 23:10:03.94
テストしてないからバックアップとってからやってほしいのだけど

filenames = Dir.glob("*.{jpg,gif,png,jpeg,bmp}")
filenames.map{|e| e[0..2] }.uniq.each{|e| Dir.mkdir(e) }
filenames.each{|e| File.rename(e, File.join(e[0..2], e)) }
583デフォルトの名無しさん:2012/06/13(水) 23:10:28.70
一応移動先のフォルダに同じ名前のファイルがあって
そのまま上書きするとコンフリクトする場合は
ファイルの日時やサイズやどちらも同じなら中身も比較して
全く同一なら削除したり移動せずにスキップしたりする機能も付けてる
584デフォルトの名無しさん:2012/06/13(水) 23:10:46.92
36*36=1296
36*36*36=46656

フォルダ5万個って便利か? いや、別にいいけどさ
585デフォルトの名無しさん:2012/06/13(水) 23:11:41.12
>>582 が出してくれたようなので漏れは申
586デフォルトの名無しさん:2012/06/13(水) 23:12:05.34
エロ画像なんて面倒になってハッシュ値にリネームして頭2桁/2桁で分類してある
属性フォルダ分けとかやってる奴ら頭おかしい
587576:2012/06/13(水) 23:13:41.79
>>583
ありがとうございます。
まさか希望の動作をするコードを教えていただけるとは思いませんでした。

・・・しかし、随分コンパクトな記述で可能なんですね。
私もwebクローラーとかをrubyで作ってますが、
無駄に長くて恥ずかしい限りです。

教えていただいたコードで試してみます。
ありがとうございました!!
588576:2012/06/13(水) 23:15:08.19
>>585
そんなことおっしゃらず、ぜひw
勉強させてください。
589デフォルトの名無しさん:2012/06/13(水) 23:18:00.97
スレ違いになると怒られちゃうので
続きは Python スレでやろう
590デフォルトの名無しさん:2012/06/13(水) 23:19:46.09
つうかそれくらいシェルスクリプトでやれ
シェルスクリプトも書けない奴が他の言語に手を出すな
591デフォルトの名無しさん:2012/06/13(水) 23:20:36.78
そういうときはシェルスクリプトで書いてみせたうえで煽らなきゃ
592576:2012/06/13(水) 23:22:55.44
>>589
Pythonスレ、すんごいたくさんあるんですねw
どちらにいけばいいですか?

>>590
シェルスクリプトのサンプルも見せていただけるなんて!
ありがとうございます。
593576:2012/06/13(水) 23:27:15.28
>>582
テストしてみたら、完璧に動作しました!
動作も早く、完璧です。

自力でやったら何日もかかるところ(何十日?)頂いたコードで助かりました。
594デフォルトの名無しさん:2012/06/13(水) 23:31:02.95
>>591
ls *.jpg | group { $_.Name.SubString(0,3) } | % { md $_.Name; move $_.group -dest $_.Name }
595デフォルトの名無しさん:2012/06/13(水) 23:37:04.53
Powerシェルスクリプト…たまげたなあ
596576:2012/06/13(水) 23:44:24.27
>>594
おみそれしやした。
私にはどうやって実行していいかもわかりませんw
煽ってすいませんw
597デフォルトの名無しさん:2012/06/14(木) 09:25:20.61
>>564-565
ありがとうございました
598デフォルトの名無しさん:2012/06/14(木) 13:21:49.96
>>594
PowerShellおもしろいな
599デフォルトの名無しさん:2012/06/14(木) 20:30:49.00
yieldってどういうときに使いますか?

他の言語で言う、フラグ(boolean)を渡してif文でフラグがtrueのときに処理する、みたいなのを
やや綺麗に書けるのかなぐらいの認識なんですが
600デフォルトの名無しさん:2012/06/14(木) 20:43:00.73
rubyでは全てがオブジェクト
ブロックで囲まれた部分もオブジェクト。
rubyではブロックも引数として関数に渡せる。

受け取った関数が受け取ったブロックを実行させたい時に命令するのが
yield
601デフォルトの名無しさん:2012/06/14(木) 20:48:20.37
def fib_up_to(max)
i1,i2 = 1, 1
while i1 <= max
yield i1
i1, i2 = i2, i1+i2
end
end

fib_up_to(1000) {|f| print f, " "}
602デフォルトの名無しさん:2012/06/14(木) 20:55:13.57
韓国の国宝1号に指定されている崇礼門の復元にあたり、日本製の接着剤を使用していることに対して、問題視する声が上がっている。
文化財庁は「品質のよい日本製の接着剤の使用は仕方ないこと」と説明した。韓国メディアが伝えた。

崇礼門は李氏朝鮮時代の1398年に都の南城門として建てられ、1962年に国宝第1号に指定された。
通称南大門の一帯はソウルの観光名所でもある。08年2月に放火によって木造楼閣の大部分を焼失し、10年2月から復元工事が行われている。

現在、復元工事は瓦を葺く作業と丹青(たんせい)を施す作業を残しており、12月に完成する見通し。
韓国の伝統的な技法による復元を強調しているが、丹青作業で使用する顔料と接着剤は日本から輸入品であることが明らかになった。

これに関して、一部から伝統的な方法による復元作業に外国製を使用することを問題視する声が上がった。
文化財庁は「品質のよい材料を使用するために避けられない選択だった」と説明した。専門家からも「日本製の接着剤は優れている。
国内製ではなく残念だが、国宝で実験はできない」との見方を示した。

韓国の伝統的な接着剤の製造技術は1980年代にすでになくなっており、09年に某大学の教授が再現して作ったが接着力が弱く、
崇礼門の復元には使用できなかったという。(編集担当:金志秀)

サーチナ 【社会ニュース】 2012/06/14(木) 13:46
http://news.searchina.ne.jp/disp.cgi?y=2012&d=0614&f=national_0614_052.shtml
603デフォルトの名無しさん:2012/06/14(木) 20:56:13.54
>yieldってどういうときに使いますか?
自前でイテレータ実装したくなった時に使えばよろし
練習がてらにls('-1'){|f| puts f}とか作ってみたら
604デフォルトの名無しさん:2012/06/14(木) 22:13:25.23
>>600
ブロックとProcは区別せぇよ
605デフォルトの名無しさん:2012/06/14(木) 22:20:48.53
ブロックつきメソッドを作りたいときに使う、動作はわかるが原理がよくわかんないやつ、でいいと思う
どうしても必要なときにしか使ってはいけないから、今はそんな程度でよい
606デフォルトの名無しさん:2012/06/14(木) 22:21:26.09
>>599
メソッドeachを定義してイテレータを実装する時に使う

class Foo
 include Enumerable
 def each
  for x in @ary
   yield x
  end
 end
 # 以下略

自分の場合、これ以外の用途でyieldを使う事は無いなあ
607デフォルトの名無しさん:2012/06/14(木) 22:32:14.04
DSLやり始めるとyieldとかinstance_evalとか使いまくり
608デフォルトの名無しさん:2012/06/15(金) 01:58:40.24
>>599
Ruby のブロック付きメソッドとイテレータ - yield の様々な使い方 | すぐに忘れる脳みそのためのメモ
http://jutememo.blogspot.jp/2008/03/ruby-yield.html

609デフォルトの名無しさん:2012/06/15(金) 02:28:09.89
>>600
Rubyist なら当然知ってる!? Proc.new と lambda の違い - (゚∀゚)o彡 sasata299's blog
http://blog.livedoor.jp/sasata299/archives/51488276.html
・Ruby ではほぼすべてがオブジェクト(うんうん。らしいねらしいね)
・だたしブロックはオブジェクトではない(ほほぉ~)
・ブロックをオブジェクトにしたものが Proc(そ、そういうことかー)


610uy:2012/06/15(金) 05:39:26.46
最近2ch見てて思うけど
やたら個人ブログのURLはって「ほらソース」みたいなレスをみるんだけど
無名PGの個人ブログなんてソースにならねーだろ
個人ブログに書かれたものなんてWikipedia以下だと認識してる
自演乙って事かい?
611デフォルトの名無しさん:2012/06/15(金) 05:51:06.85
根本的に理解できていない初心者です。いろいろ調べてみたのですが分からなかったので質問します。

mac port経由でrubyをインストールして
port installed port installed | grep ruby で見てみると

ruby @1.8.7-p358_0+thread_hooks (active)
ruby19 @1.9.3-p194_2+doc+nosuffix (active)

となります。
ruby -vをみると
ruby 1.8.7 (2012-02-08 patchlevel 358) [i686-darwin11]
が表示されます。。
sudo port -f activate rubyをうつまえは1.9.3となっていたんですが。。
前のverがアクティブになったのが原因なのでしょうか?
戻す方法がわかりません。宜しくお願い致します。
612デフォルトの名無しさん:2012/06/15(金) 06:20:06.26
韓国の国内総生産(GDP)を考慮した個人負債規模が財政危機に陥っているスペイン並みに深刻な水準となった。

個人負債の増加速度は経済協力開発機構(OECD)加盟国で3位と平均を大きく上回った。 

大韓商工会議所が14日に発表した「個人負債現況と政策課題」報告書によると、
2010年の韓国のGDPに対する個人負債の比率は81%でOECD平均の73%より高かった。 

これは財政危機を陥っているスペインの85%に迫る水準だ。ギリシャの61%より20ポイント高い数値だ。

個人負債増加幅も急速に拡大していうる。2006年以後鈍化した個人負債増加率は2010年に前年比2.4ポイント上昇の9.8%を記録した。

【今日の感想】この記事を読んで・・・
面白い (40件)
悲しい (2件)
すっきり (1件)
腹立つ (0件)
役に立つ (6件)

http://japanese.joins.com/article/707/153707.html?servcode=300§code=300
613デフォルトの名無しさん:2012/06/15(金) 07:37:43.45
>>610
良いアイデアありがとう。
614デフォルトの名無しさん:2012/06/15(金) 08:37:31.20
>>610
Wikipediaは誰でも編集出来るが故に、内容の質も上から下まで様々
個人ブログは良くも悪くも、その個人の質である程度一定してる
その違いだよ
615デフォルトの名無しさん:2012/06/15(金) 08:41:10.21
>>613-614
板全体であぼーんされていて誰からもレスがもらえないからってとうとう自演を始めた…
616デフォルトの名無しさん:2012/06/15(金) 09:08:05.62
>>611

MacPortsのrubyを普通にインストールすると、
コマンド名は ruby (1.8)と ruby19 (1.9) になるから、
1.9のほうを+nosuffix付きで入れたのでない限り。
両方アクティブにしても共存できるはず。

これ以上はrubyとは本質的には関係ないので 新・mac板 で。
617デフォルトの名無しさん:2012/06/15(金) 09:08:39.61
あ、+nosuffix付けたのか。なら適宜 deactivate して。
618デフォルトの名無しさん:2012/06/15(金) 13:00:29.30
>>616-617
スレ違いだったんですね、すいません。
適宜deactivateしてみたのですが、うまくいきません。。
新・mac板いってきます。有難う御座いました。
619デフォルトの名無しさん:2012/06/15(金) 17:15:44.34
ゲーム作れるgemご存知なかたいらっしゃいますか?スレチでしたらごめんなさい。
620デフォルトの名無しさん:2012/06/15(金) 17:25:03.87
ゲームというものを、なんていうかこう、魔法のように作れるライブラリというのはない
ゲーム作成が(実質)専門となってるような言語やシステムを使うといい
WindowsならHSPとか
621デフォルトの名無しさん:2012/06/15(金) 17:35:56.54
ゲーム製作技術
http://toro.2ch.net/gamedev/
ほい

個人的には、Rubyという言語自身と並行して学ぶ理由はないと感じる
Rubyでたいていのものを作れて、Cでもゲーム作れるくらいのAPIに熟達したような人が
「あえてRuby経由でゲーム作ってみた」というのに挑戦するためのライブラリならいくつかあるんだが、
これに自力検索等で到達できなかった、または見てもそういうものだってわかんなかったってことは、
Rubyとゲームに使えるWindows APIの両方の知識が足りてないってことなんで、Rubyでゲームを作ることは「できない」でいいかと思う
622デフォルトの名無しさん:2012/06/15(金) 17:44:01.85
Rubyでゲーム作る本ならあったな
623uy:2012/06/15(金) 20:04:11.21
グぐればでてくるしな
ズブの初心者には無理だけど、ある程度rubyわかっててC++でゲーム作れるくらいの奴ならゲームの種類によっては
選択肢にあがってもおかしくないのに、やってる奴少なすぎてもったいない
624デフォルトの名無しさん:2012/06/15(金) 20:09:44.21
625デフォルトの名無しさん:2012/06/15(金) 20:12:49.24
ゲームのレスありがとうございます。
頂いた情報基にさがしてみます。
626デフォルトの名無しさん:2012/06/15(金) 20:58:18.20
RPGツクールならRubyでゲーム作ったことになるんじゃね?
627デフォルトの名無しさん:2012/06/15(金) 21:10:53.28
テキストデータをRubyを使ってExcelに入力していきたいです
セルを指定して順番に入力していき全データを書き終えたら終了、というような
サンプルプログラムってありませんか?
バージョンは1.8.7ですがググると古いものがヒットします
628デフォルトの名無しさん:2012/06/15(金) 21:26:21.13
ruby excelで検索すると普通に出てくるのは気のせいか
629デフォルトの名無しさん:2012/06/15(金) 22:07:50.56
630デフォルトの名無しさん:2012/06/15(金) 22:39:01.97
>>619
gemじゃないやつを含んでもいいのであれば
Ruby/SDLとかStarRubyとかDXRubyとか
(もしかしたら最近は他にも新しいライブラリがあるかも)

上の方では懐疑的なレスもあったが
俺は普通にゲームは作れると思う
HSPと比べてRubyでゲームが作りにくいかと言われると、別にそんなこともない

ただ、最近のRPGツクールではRubyが組み込みで入ってるから
RPGツクールに頼らず自前でやるべきかどうかは一度考えた方がいい
そこそこの速度が必要だとか、RPGツクールでは作りにくい特殊なシステムだとか
もしくはできるだけお金をかけずにゲームを作りたいとかなら
上記ライブラリを試してみるのがよいと思う
631デフォルトの名無しさん:2012/06/15(金) 23:16:01.16
>>630の考えてるゲームと>>619の考えてるゲームはおそらく違う
632デフォルトの名無しさん:2012/06/15(金) 23:53:08.07
HSPとRubyってどっちが速いんだろう?

もしもHSPの言語部分を丸ごとRubyに取り替えたとして
速度的に成り立つんだろうか?
633デフォルトの名無しさん:2012/06/16(土) 02:37:21.43
def str2hash(str)
  hash = {}
  ary = str.split(/\s+/)
  ary.size.times do
   hash[ary.shift] = ary.shift
 end
 hash
end

print str2hash("blue 白 white shiro\nred aka")


やさしいRubyで勉強中です。上のプログラムかいて実行すると、

{"blue"=>"白", "white"=>"shiro", "red"=>"aka", nil=>nil}

と、最後にnil => nil が入ってしまいます。なぜでしょうか?
634デフォルトの名無しさん:2012/06/16(土) 02:52:32.65
>>633
p ary.sizeしてみるんだ
635デフォルトの名無しさん:2012/06/16(土) 03:00:10.02
>>634
6と出ました。。。ああ。

((ary.size)/2).times do

にしたらうまく行きました。ださいコードですが。答え見たらこんなでしたが。なるほどね。。。

while key = array.shift
value = array.shift
hash[key] = value
end
636デフォルトの名無しさん:2012/06/16(土) 05:16:57.44
やさしいRubyっていうかたのしいRubyはArray#shiftとかの難しい概念を使わせるから嫌い
今のRubyでスタックやキューを初心者に教える意味はあるのか?
スタックやキューと言えない配列に対してArray#popやArray#shiftをさせる意味はあるのか?

>>635
ということで、それ悪問だから忘れていいよ

def str2hash(str)
arr = str.split
Hash[*arr]
end

まあ、*による変数展開をいきなり教えるのもどうよって感じではあるんだが、すくなくともArray#shiftよりは使うはず
変数になってない場合は動作しないので注意、たとえば Hash[*"key value".split] はうまく動かない
637uy:2012/06/16(土) 06:00:45.28
def str2hash(str)
   hash = {}
   p ary = str.split
   ary.each_slice(2)  do | a , b |
     hash[ a ] = b
  end
  hash
end

p str2hash("blue 白 white shiro\nred aka")

p Hash[ *("blue 白 white shiro\nred aka").split ]

638デフォルトの名無しさん:2012/06/16(土) 06:02:40.76
uyのほうが筋が良い件について
639デフォルトの名無しさん:2012/06/16(土) 07:30:16.67
>>636
いや普通にshiftは多用するだろ
他の人のコード見てたらよく見かけることもあるし
「スタックやキューの概念が難しいから」で避けてよいものではない
640デフォルトの名無しさん:2012/06/16(土) 07:41:16.92
たのしいRubyではいちおうスタックとキューの解説はあったはず
キューじゃないものから「先頭を削って返す」ためだけにshift使うんじゃねえという指摘はアリっちゃアリだとは思うが
でもそうするとArray#pushが普段使えなくなって不便だとちょっと思う

str = "blue 白 white shiro\nred aka"
h = {}
str.split.each_slice(2) do |a|
h[a.first] = a.last
end
p h
641デフォルトの名無しさん:2012/06/16(土) 07:56:25.03
ループ1周につき2回削ってるとナニコレって思う
642デフォルトの名無しさん:2012/06/16(土) 10:42:26.27
Hash[*str.split(/\s+/)] #単語が奇数個だとエラーになる
Hash[str.split(/\s+/).each_slice(2).to_a] #奇数でも大丈夫、最後の足りないvalueはnilになる

Hash[] の引数は配列の配列でも大丈夫
Hash#to_aしたときに出来るやつ
643633:2012/06/16(土) 12:49:29.25
いろいろあるんですねー。勉強になります。ども

仰るとおり、たのしいRubyでした。まつもとさんのRuby本で挫折したのでこっち呼んでます。
644デフォルトの名無しさん:2012/06/16(土) 13:56:49.06
スレ違いかも知れませんが、質問させて戴きたくお願いします。

RubyInstaller(1.9.3-p194および1.9.2-p260)とEmacs23.4(gnupack)だとデバッグができません。
例えばEmacs上でステップ実行や終了が出来ません。

M-x rubydbでデバッガは立ち上がるのですが、
(rdb:1) s [enter]
とか
(rdb:1) q [enter]
してもステップ実行できないし、終了もできない状態です。
(rdb:1) s [enter]
s [enter]
s [enter]
...

どうもデバッガにコマンドが渡っていないようなのです。

現状、misc/*.elはすべてsite-lispに入れ、init.elに設定を追加済み。
またActiveScriptRuby(1.9.3-p125)を使えば、M-x rubydbにてステップ実行も
終了も出来る状態にはなっています。

RubyInstallerのRubyにてM-x rubydbを使う場合は、どこかに追加の設定が
必要なのでしょうか?
恐れ入りますがご教授戴きたくお願い致します。
645デフォルトの名無しさん:2012/06/16(土) 13:58:41.76
Aptana Studio3を使い始めたのですが、
デフォルトのカラースキームだと、ローカル変数が色分けされていません
またコメントもできれば斜線ではなく、緑色とかにしたいんです

http://www.dotup.org/uploda/www.dotup.org3096545.jpg


どこをいじればいいのでしょうか?
646645:2012/06/16(土) 14:51:29.67
自己解決しました
テーマでした
647デフォルトの名無しさん:2012/06/16(土) 15:19:30.02
>>644
ほぼFAQであり、なおかつその指摘も英語で書かれるであろうと思われるので読まれないであろうと思われ、
さらに原因と対処に気付くかどうかもWindows初心者であるがゆえにいつまでもないと思われるので
結局はいつまで経っても直らないであろうと思われる

インストール時に英語読まなかっただろ
「Add Ruby executables to your PATH」という項目があって、チェックボックスが外れてたはずだ
Rubyのスタートメニューからプロンプトを起動するという使い方以外をするときは、ここにチェックを入れる

もちろん、インストール時にやらなくてもあとからすることもできるが、PATH環境変数の概念がない場合はそれ自体思いつかないという罠が
「Rubyディレクトリの中のbinディレクトリを、環境変数PATHに追加する」という行為を行なう必要がある
使ってるWindowsでどうやるかまでは知らないのでぐぐってくれ
648デフォルトの名無しさん:2012/06/16(土) 15:38:54.70
英語読めないとRubyは使えませんを体現したような案件っすな
649デフォルトの名無しさん:2012/06/16(土) 17:49:10.80
反日のマスコミの実態


24時間テレビで放送されたAKB48のCMで、日の丸が修正され消された



画像
http://image.space.rakuten.co.jp/lg01/52/0001119252/85/img0552ae48zik5zj.jpeg

記事 イザ
http://wellbetogether.iza.ne.jp/blog/entry/1773715/
650デフォルトの名無しさん:2012/06/16(土) 20:33:37.21
>>562
どこを立て読みとおもった私は擦れてますね。
超遅レスですがどーいたしまして。
651デフォルトの名無しさん:2012/06/16(土) 20:56:58.61
>>648
日本でだけ使用されてるなら、そりゃ全部日本語なんだろうけどね
英語圏でも使用されてるから、そりゃそれは英語なんだろうな

英語で書かれたものが日本語になるような機能は残念ながらついてない
652644:2012/06/16(土) 21:23:49.74
>>647
おそらく私の説明が悪かったものと思います。申し訳ありません。

imgur.com/FTyvD

Rubyへのパスは通しており、コマンドプロンプトからのデバッグは可能です。
また、ActiveScriptRubyを使った場合はEmacsからのデバッグはできるのですが、
RubyInstaller版を使った場合は、Emacs経由でのデバッグはできない(例えばs
コマンドが無視される)という状態になっています。

RubyInstallerの場合、RubyInstaller専用の設定をinit.elに入れないとダメなのか、
何らかのgemをいれないとダメなのか、そのあたりの見当が付かずお尋ねした次第です。
不勉強で申し訳ありません。
653644:2012/06/16(土) 21:32:44.79
画像が上手くアップロードできていなかったようなので貼り直します。

i.imgur.com/sHYoF.jpg
654デフォルトの名無しさん:2012/06/16(土) 21:38:31.83
ActiveScriptRubyとRubyInstallerのフルパスは? .exeまで書いてね
655644:2012/06/16(土) 21:49:25.27
RubyInstaller:
C:\Apps\Ruby\ruby-1.9.3-p194-i386-mingw32\bin\ruby.exe

ActiveScriptRuby:
C:\Apps\Ruby\ruby-1.9.3-p125-asr\bin\ruby.exe

あと、ActiveScriptRubyを使用すると、このような感じになります。

i.imgur.com/jmwhp.jpg

656デフォルトの名無しさん:2012/06/16(土) 23:23:36.83
*gud-test.rb*からC-h k RETするとどうなる?
657644:2012/06/16(土) 23:58:06.73
こうなりました。

i.imgur.com/wyAIm.jpg

……Aptanaなりvim-rubyでも使った方がいいのかと疑い始めている次第。
Emacsを覚えようかと、Emacs + Rubyの構成に手を出したのがまずかったのかも知れません。
658デフォルトの名無しさん:2012/06/17(日) 00:30:24.63
Rubyのために新しくエディタ覚えるより、
普段使ってるものでやったほうがよいよ。
659644:2012/06/17(日) 00:33:41.58
>>658
そうですな。書く以前の段階でハマって意地になってるかもしれませんわ。

普段はサクラかAptana、Debian使ってるときはVimですんで、そっちでやることにします。
660デフォルトの名無しさん:2012/06/19(火) 17:34:54.48
テキストデータをエクセルに書き出す方法を教えて下さい
テキスト(文字列)を適当な文字aに格納して、それを
file = "test.csv"
open(file,"wb") do |f|
f.print a
ってやってみるとことまではできました
このあと「これはこのセルに書き込みたい」という条件を付け足したいのですが、
正規表現を使いまくる感じでしょうか?
661デフォルトの名無しさん:2012/06/19(火) 21:45:41.85
>>660
.exl形式のファイルに出力したいのか.cvsでもいいのか
既存ファイル等をExcelで開いてその上でセルの内容を上書きしたいのか
等々、もうちっとやりたい事を詳しく書けば知ってる人が教えてくれるだろう
662デフォルトの名無しさん:2012/06/19(火) 22:15:05.41
>テキストデータをエクセルに書き出す方法を教えて下さい
は、順序が逆でしょ。
カンマ、スペース、タブ区切りなどの、テキストファイルを読み込む方法をEXCELは、標準で持ってますよ。
それが出来ないのなら、そこらのPC教室に行って来い、で良いと思う。

真面目にレスすると >>661 みたいになるの?
MSは基本、非公開だし、バージョン変わると、自分のとこも継承できないのに。
663662:2012/06/19(火) 22:26:20.00
あ、
カンマ区切りにして、
hoge.csv
にすると、ファイラー(エクス   なんとか)でクリックすると、EXCELでopenしてくれるかもね。
664662:2012/06/19(火) 22:40:42.74
>663 のように、openできても、フォントとか字の大きさなんかは再現できない。
もともと、テキストファイルには、そのような情報が無いから。
665662:2012/06/19(火) 23:04:02.81
>>このあと「これはこのセルに書き込みたい」
か、

ごめんね。
セルの位置は、改行とレコードの区切りでなんとかしてもらわねばならんと、思う。

参照して、合計を出すとか、テキストファイルではできないから。

Rubyでできないとかではなく、テキストファイルはそんなもの。
666デフォルトの名無しさん:2012/06/20(水) 02:52:33.27
>>660
exlap.rbとか使うと良いんじゃないでしょうか?
臨時串で書き込んでるのでurl貼れないのですが、exlap.rbで検索するとすぐ見つかります。
667デフォルトの名無しさん:2012/06/20(水) 08:21:10.51
>>660
まず、理解レベルの確認。
*.csvを「エクセルファイル」と勘違いする初学者も居るけど、
*.csvはエクセル専用ではなくて、「カンマ区切りのテキストファイル」だと理解してるよね?

次に、以下のどれをやりたいかによって方法が違う。

1.*.xlsを新規作成or追加書き込みor書き換える。

2.*.csvを新規作成or追加書き込みor書き換える。
*.csvファイルをExcelに手動でインポートすると、指定セルにデータが配置される。

3.Excelを起動後または起動済みExcelのセルに自動的に書き込んでいく。
668デフォルトの名無しさん:2012/06/20(水) 08:36:46.88
なんだこの丁寧さw
669661:2012/06/20(水) 08:40:36.76
なんか書いてておかしいような気がしてたんだ
.exlじゃなくて.xlsね
670デフォルトの名無しさん:2012/06/20(水) 17:08:41.12
p = 1
p /hoge/

これはおもろい
いろんなスクリプトの先頭にp = 1と書き込んでやろうw
671デフォルトの名無しさん:2012/06/20(水) 17:44:21.05
ローカル変数がない言語の信者か。哀れだな
672デフォルトの名無しさん:2012/06/20(水) 20:51:26.31
えっ?
p = 1
p(/hoge/)
673デフォルトの名無しさん:2012/06/20(水) 21:00:14.71
puts = 1
puts puts
674デフォルトの名無しさん:2012/06/20(水) 21:02:49.70
>>671
パーサ書いたこともないんだと思う
っていうかスコープ…

>>672
そんなことしなくても、メソッドだと思える書かれ方をされている場合はメソッドのように動作する
$ ruby -e "p=1; str='hello'; p str"
"hello"
むしろこれはRubyの正規表現リテラルの問題
675デフォルトの名無しさん:2012/06/21(木) 06:29:30.60
クラスが再オープンできてメソッドを再定義できる言語で>>670をやる意味がわからないな
676デフォルトの名無しさん:2012/06/21(木) 06:57:07.94
釣られるふりして初心者スレで暇つぶしするのはやめましょう
677デフォルトの名無しさん:2012/06/21(木) 07:00:49.78
p = 1
p "hoge" # "hgoe"を出力。これが大丈夫なのに
p /hoge/ # SyntaxErrorになる。なんで?

この挙動が目を引いたってことなんだろう
pの先に正規表現リテラルが来ても代入ではなくメソッドコールだと区別できそうなものだけど
678デフォルトの名無しさん:2012/06/21(木) 08:01:55.69
代入…?というか除算と間違えてるんだよね?これ
p /hoge/iなんかだとSyntaxErrorじゃなくてNameErrorになるし
679デフォルトの名無しさん:2012/06/21(木) 09:22:34.66
ごめん変なこと書いた。指摘ありがとう

> p = 1.0; hoge = 2.0; i = 3.0
=> 3.0
> p /hoge/i
=> 0.16666666666666666

ふおお
680デフォルトの名無しさん:2012/06/21(木) 10:00:47.28
あらゆる主要板にスレッド立てられてますなあ
こりゃアフィにも広まるし
完全に日テレはネットに嫌われるね

■モ娘(狼)
日テレ韓国マンセーで遂にGP帯オール一桁wwwwwwwwww
http://hayabusa3.2ch.net/test/read.cgi/morningcoffee/1335226115/

■ニュー速(嫌儲)
最近フジより韓流ゴリ押しの酷い日テレ GP帯(19~23時)視聴率オール一桁達成
http://engawa.2ch.net/test/read.cgi/poverty/1335228771/

【フジ・日テレ死亡】テレビ朝日視聴率3冠おめでとうございます
http://engawa.2ch.net/test/read.cgi/poverty/1340233396/

■ニュース速報
【第二のフジテレビ】日テレ、韓流ゴリ押しで大爆死
http://engawa.2ch.net/test/read.cgi/news/1335230981/

■なんでも実況J
【朗報】韓流ゴリ押しの日テレが低視聴率
http://hayabusa.2ch.net/test/read.cgi/livejupiter/1335229538/
681デフォルトの名無しさん:2012/06/21(木) 10:22:48.34
バカウヨはν速+と嫌儲から出てくるなヴォケ
682デフォルトの名無しさん:2012/06/21(木) 13:21:18.47
YOUたち!RubyでinjectしちゃいなYO!
http://melborne.github.com/2012/06/18/i-am-inject-lover-too/

p "inject"
class List < Array
def inject(m, &blk)
p "m1:#{m}:#{first}"
return m if empty?
(drop 1).inject( yield(m, first), &blk)
p "m2:#{m}:#{first}"
end
end

List[1,2,3,4,5].inject(0) { |m, x| m + x }

# =>"inject"
# =>"m1:0:1"
# =>"m1:1:2"
# =>"m1:3:3"
# =>"m1:6:4"
# =>"m1:10:5"
# =>"m1:15:"
# =>"m2:10:5"
# =>"m2:6:4"
# =>"m2:3:3"
# =>"m2:1:2"
# =>"m2:0:1"

再帰ってinjectで更にinjectを呼んでって感じかと思ったら
mが空になったら return m if empty? ここで帰って行っているのね。
よくこんなの考えついたなぁ。
683デフォルトの名無しさん:2012/06/21(木) 23:12:30.52
ごく一般的な再帰だと思うんだが
何か特別な発想が入ってる?
684デフォルトの名無しさん:2012/06/21(木) 23:50:46.61
rubyって何回までの再帰なら動作保証されるとかそういう仕様あるの?
685デフォルトの名無しさん:2012/06/22(金) 00:06:12.64
Mac含め、UNIX系OSならulimit次第。
Windowsでもにたようなプロセスごとのスタック量の上限はあると思う。
686uy ◆QIYIaM7QCo :2012/06/22(金) 01:18:34.44
1.8系と1.9系で比べてみるとわかるけど
再帰できる回数が10分の1くらいになってる
しかもなにやら1.9のほうは再帰できる回数が
メモリ配置の関係なのか、8000~15000回あたりを彷徨って不規則という
687デフォルトの名無しさん:2012/06/22(金) 05:53:27.67
>>682
inject

# =>"m1:15:"
↑ここで配列が空になっているから呼ばれたところに戻るんだけども。
関数の動作は続いているんだねぇ。

呼ばれた関数に戻るって考えればわかるけど
終了条件をきちんと理解してなかったな。

List配列>inject1>inject2>inject3>inject4>inject5>nil>戻る ×
List配列>inject1>inject2>inject3>inject4>inject5>nil>inject5>inject4>inject3>inject2>inject1>戻る ○

自分は上だと勘違いしてた。
mに答えが入っているはずなのにm2をみるとmがどんどん減っていく、
どこに答えを確保してるんだ?



688デフォルトの名無しさん:2012/06/22(金) 08:20:01.23
ご連絡 平成24年6月21日

チケット購入者  各 位

1 「K-POP IN 豊岡・神鍋高原」のイベント中止について

株式会社アンフィニジャパンでは、「K-POP IN 豊岡・神鍋高原」と題するライブイベントを、平成24年6月30日及び同年7月1日に開催することとなっておりました。
  しかしながら、関係各所との行き違い等から、当初予定していたチケット販売計画は大幅な変更を余儀なくされ、チケット販売が低調に推移しました。
その結果、上記イベントを開催するために必要な各プロダクション、各業者への支払資金をねん出することができなくなり、上記イベントについては、中止させて頂くこととなりました。
チケットをご購入された皆様には、深くお詫び申し上げます。

2 ご購入いただいたチケット代金について
  イベントの中止に伴い、本来であれば、当然にチケット代金をご返金すべきこととなります。
  しかしながら、株式会社アンフィニジャパンにおいては、現在、見るべき資産がほとんどない状態です。
皆様にご購入いただきましたチケット代金についても、ほぼ全てを韓国プロダクションへの前金の支払及び開催準備費用に費消しており、株式会社アンフィニジャパンにおいてご返金することができなくなっております。
現状、株式会社アンフィニジャパンでは、大幅な債務超過状態にあり、自己破産の申し立てを行わざるを得ない状態です。
  チケットをご購入されました皆様には、大変なご迷惑をお掛けすることとなり、深くお詫び申し上げます。

http://www.infinijapan.jp/


http://ticket.pia.jp/pia/event.do?eventCd=1223924
K-POP IN 豊岡・神鍋高原

KARA、超新星、Rainbow、パク・ヒョンビン…K-POPの人気アーティト達が、
兵庫県豊岡市にある、神鍋高原に大集合!激レア・イベントをお見逃しなく!


【中止?】K-pop in 豊岡・神鍋高原【契約不履行】
http://uni.2ch.net/test/read.cgi/4sama/1340285151/
689uy:2012/06/22(金) 14:23:46.56
「してるんだ?」 → 「 してるんですか? 」
何この初心者
自分でかいてみりゃいいのに

class List < Array
  def inject m , &b
    inject b[m , shift], &b ; rescue ; m
  end
end
690デフォルトの名無しさん:2012/06/23(土) 00:04:33.22
5.times {|i=3; a|
a = 4
p [i, a]
}

5.times {|i=3, a|
a = 4
p [i, a]
}
ブロック変数とブロックローカル変数の違いがよくわからない。
691デフォルトの名無しさん:2012/06/23(土) 04:00:54.34
5.times {|i=3; a|
a = 4
p [i, a]
}
で p が何を表示するか、脳内処理して間違いなく自信を持って書き出せる人はまずいないと思う
つまり、悪いコードだん

最初の i はたぶん Integer#times にもともとあるブロック変数に普通に消費されて
つまりたぶんブロックパラメータ内の初期値はたぶん無視されて 0 から始まるはずだけど
でも実際に試してみないとたぶんなんとも言えない、みたいな

2つ目の a は「ブロックの外に a があったとしてもそれをブロックの中で使わないでね」といった程度の意図
a = 9
1.times{|i| a=2; p [i,a]}
p a #=> 2

a = 9
1.times{|i; a| a=2; p [i,a]}
p a #=> 9

本来は ; で区切るべきだけど「余計なブロックパラメータ」として記述してもなんかふつーに動く
692uy:2012/06/23(土) 05:52:22.05
5.times {|i=->{p 9}.call;a|
  p [i, a]
}
5.times {|i=->{p 9}.call,a|
  p [i, a]
}

キリッ
693デフォルトの名無しさん:2012/06/23(土) 16:21:33.38
前方の仮引数にデフォルト値を設定できるのが
直感的じゃない気がする
def foo(a=:a, b=:b, c) p [a,b,c] end
foo(1)
foo(1,2)
foo(1,2,3)

後方だと普通
def bar(a, b=:b, c=:c) p [a,b,c] end
bar(1)
bar(1,2)
bar(1,2,3)
694デフォルトの名無しさん:2012/06/23(土) 17:00:39.86
>>693
だからRuby1.8ではできなかったし1.9でも導入揉めたんだよ
(おそらくはメソッド定義のとこだけ見て)できないのは不自然だとか言った人が「慎重に使えば大丈夫」とか言ってだな
695デフォルトの名無しさん:2012/06/23(土) 20:05:39.83
696デフォルトの名無しさん:2012/06/23(土) 20:39:19.50
日本にもある絶滅危惧「言語」 グーグルが保護プロジェクト
2012/6/23 11:24
ttp://www.j-cast.com/mono/2012/06/23136697.html
697uy ◆pdu1UZmweE :2012/06/25(月) 17:17:42.21
p (/a/../a/) # => /a/../a/

p (/a/../z/) # => bad value for range (ArgumentError)

正規表現の範囲オブジェクトって作れるの?作れないの?
698デフォルトの名無しさん:2012/06/25(月) 20:22:51.68
ソース上は、開始値と終了値が<=>で比較できなければアウトという
判定になってるな。

/a/ <=> /a/ は 0(等しい) が
/a/ <=> /z/ は 比較できず、nilが返るのでそこでエラー
699デフォルトの名無しさん:2012/06/25(月) 22:45:15.03
>>698
メソッドの仮引数と<=>は関係ない
700デフォルトの名無しさん:2012/06/25(月) 22:54:38.75
それ本気で言ってる?
リファレンスのclass Range読んだの?
701デフォルトの名無しさん:2012/06/25(月) 23:01:53.21
>>699
id_cmp = rb_intern("<=>") の意味分かる?
702デフォルトの名無しさん:2012/06/26(火) 13:02:46.04
Range も関係ないような
foo(a, b) と foo(a..b) を勘違いしてる?
703デフォルトの名無しさん:2012/06/26(火) 16:16:36.63
なるほど
<=> で大小を較できるものはRangeオブジェクトに出来るのか
class Bar
def <=>(other) 0 end
end

p(Bar.new .. Bar.new) # #<Bar:0xf6b748>..#<Bar:0xf6b730>

class Foo;end
p(Foo.new .. Foo.new) # bad value for range (ArgumentError)


/a/ <=> /a/ だと 0 が返ってくるのでRangeオブジェクトになりえるけど
/a/ <=> /z/ だとnilがかえってきて、比較不能なのでエラーになると

しかし、なぜRegexp に<=>メソッドがあるのだろうか?
704644:2012/06/27(水) 02:09:52.44
先日「Emacsから M-x rubydbを実行してもステップ実行できない」と申し上げたものですが、
自己解決しました。
Devkitが使用する「rb-readline」が悪さをしていたためです。

git clone git://github.com/oneclick/rubyinstaller.git

でDevkitを作るためのスクリプトを落とし、rb-readline関連のレシピや
タスクを削除してrubyをビルドしたところ、Emacsからのステップ実行に成功しました。
以上、ご報告まで。
705デフォルトの名無しさん:2012/06/27(水) 12:33:37.29
def hanoi(n,i,j,k)
if n==0
else
hanoi(n-1,i,j,k)
p "number#{}:#{i}>#{j}"
hanoi(n-1,i,j,k)
end

end

p "hanoi1"
hanoi(3,"x","y","z")

これはハノイの塔のアルゴリズムですが
回数を出力する方法がわかりません。
number#{}のところに動かした回数を表示するにはどうしたら良いでしょうか?
706デフォルトの名無しさん:2012/06/27(水) 13:21:53.69
global は禁止でしょうか
707デフォルトの名無しさん:2012/06/27(水) 13:47:22.61
def hanoi(n,x,y,z)
if n==0
else
hanoi(n-1,x,z,y)
p "number#{}:#{x}>#{y}"
hanoi(n-1,z,y,x)
end
end

p "hanoi1"
hanoi(3,"x","y","z")

ハノイの再帰部分xyzが間違ってたので修正。

>>706
できればglobalを使わないで実現できる方法があればそちらを。
708デフォルトの名無しさん:2012/06/27(水) 13:53:02.15
class Hanoi(object):
  def __init__(self, height):
    self.bars = [range(height, 0, -1), [], []]
    self.step = 0

  def __repr__(self):
    return 'step -> %d\nBAR1: %s\nBAR2: %s\nBAR3: %s' % (
      self.step, self.bars[0], self.bars[1], self.bars[2])

  def move(self, n, src, dst, work):
    ''' move n discs from src to dst using work '''
    if n == 1: # move sigle disc directly
      self.bars[dst].append(self.bars[src].pop())
      self.step += 1
      print self
    else: # move above (n - 1) discs to work, and move n th disc to dst
      self.move(n - 1, src, work, dst)
      self.move(1, src, dst, work)
      self.move(n - 1, work, dst, src)

if __name__ == '__main__':
  import sys
  try:
    height = int(sys.argv[1])
  except (IndexError, TypeError, ValueError), e:
    height = 3
  hanoi = Hanoi(height)
  print hanoi
  hanoi.move(height, 0, 1, 2)
709デフォルトの名無しさん:2012/06/27(水) 15:59:20.32
いま、自分用のスクリプト処理プログラムを作成しています。

テキストファイルを読み込んで、#{...}部分を展開しながら表示したいのですが、
その方法がわからず、質問にきました。

<test.txt>
print "test"
#{print "test"}

<Rubyプログラム>
File::open( 'test.txt', 'r' ) { |f| f.each() { |line| p line } }

<結果>
"print \"test\"\n"
"\#{print \"test\"}\n"

f.eacH() { |line|.. のlineはシングルクォート文字列扱いなんだろうと思うのですが
(セキュリティを考慮すればそれが正しい動作だと思いますが)
これをダブルクォート文字列扱いにする方法はありませんでしょうか?

%(str2)では変数名が表示されるだけだし、eval(str2)はエラーになるしで・・・
正規表現などでピックアップして展開するしかないですかね?
710デフォルトの名無しさん:2012/06/27(水) 16:02:05.26
すみませんstr2はlineの間違いです。エラーというのも嘘でした。

× %(str2)では変数名が表示されるだけだし、eval(str2)はエラーになるしで・・・
○ %(line)では変数名が表示されるだけだし、eval(line)だとnilになるしで・・・

いくつかテスト書きながら投稿したので混ざってしまいました。
711デフォルトの名無しさん:2012/06/27(水) 16:03:26.66
引数と返り値で今までに移動した回数受け渡したり、かなぁ
def hanoi(n,x,y,z,cnt=0)
if n==0
else
cnt = hanoi(n-1,x,z,y,cnt)
cnt += 1
puts "number#{cnt}:#{x}>#{y}"
cnt = hanoi(n-1,z,y,x,cnt)
end
cnt
end
712デフォルトの名無しさん:2012/06/27(水) 16:21:02.11
>>709
ただevalしちゃダメなのは何故か分かるよね?
rubyコード中に#{print "test"}って書いてもエラーになるから当然だけど。
だから""で囲んでevalしなきゃダメ。つまりeval('"' + line.chomp + '"')みたいな

…とかやると今度は逆に1行目が"print "test""になってエラーになるから困るけど
rubyには%記法っちゅー便利なものがあって
%Q{a"b}とか%Q|a"b|とかが"a\"b"と同じ意味になってくれるからこれを使って

p eval("%Q\n#{ line.chomp }\n") # 区切り文字として改行文字を利用
713709:2012/06/27(水) 16:42:26.81
>>712
おおお
なるほど・・・!

シングルクォート文字列を含むダブルクォート文字列を生成してevalで評価すればいい
けどダブルクォートで挟むと重複した時エラーになるのでひと工夫ふた工夫、ということですね?

パズルみたいだ・・・ありがとうございました!
714デフォルトの名無しさん:2012/06/27(水) 16:49:23.91
テキストにRubyコード埋めこみたいのならerbなんかが使えるよ
調べてみるといいかも

$ cat test.erb
Time.now
<%= Time.now %>

$ erb test.erb
Time.now
2012-06-27 16:44:05 +0900
715709:2012/06/27(水) 17:12:50.60
ERBは知りませんでした。HTML埋め込み時のPHPみたいな感じですね。
これもチェックしてみます。ありがとうございます。

組み込み(?)だけでも結構スクリプト向けの機能があるんですね。
716デフォルトの名無しさん:2012/06/27(水) 21:49:13.21
最近勉強を始めたものです。
rubyを実行するときに、

ruby test.rb

だとうまく実行されるんですが、
直接$ test.rbをで実行しようとすると
values: command not found
puts: command not found
などのエラーが出てきます。
パスは通してるし、ファイル内の#!/usr/bin/rubyの記述も間違ってないようなんですが、どうしてもエラーが出てきます。

どうすればうまく$ test.rbで実行できますでしょうか。
717デフォルトの名無しさん:2012/06/27(水) 21:54:33.59
>ファイル内の#!/usr/bin/rubyの記述も間違ってないようなんですが
間違ってます
以上
718デフォルトの名無しさん:2012/06/27(水) 22:04:56.11
$ cat a.rb
# -*- coding: utf-8 -*-
#!/usr/bin/ruby
puts "hello!"
$ ruby ./a.rb
hello!
$ ./a.rb
./a.rb: line 3: puts: command not found

よっしゃ完全再現
どうせ「おまじない」とか言われてたんだろ
おまじないなどというものは初心者プログラミングの世界にはない(慎重な表現)

shebangはシェルが解釈するもので、書くときはかならずファイルの1行目に書く
Rubyなど向けのファイルエンコーディングは2行目に書いてあってもきちんと解釈されるので、これは2行目に書いてよい

#!/usr/bin/ruby
# -*- coding: utf-8 -*-
puts "hello!"
719716:2012/06/27(水) 22:31:04.98
>>717,718
ファイルを削除して記述しなおしたら実行できました。

shebangについては、「おまじない」としてでなくどういうものかを読んでいたのですが必ず1行目に書くのは知りませんでした。

細かなところもあやふやなまま進めないようにしたいと思います。
早いレスと指摘ありがとうございます。
720デフォルトの名無しさん:2012/06/27(水) 22:55:14.89
>「おまじない」としてでなくどういうものかを読んでいたのですが必ず1行目に書くのは知りませんでした
それ動作の理屈知らんってことでふつうにおまじないや
721デフォルトの名無しさん:2012/06/28(木) 00:01:09.34
Ruby歴2ヶ月の俺にそのおまじないの意味を教えてくれ
vimから!ruby %かirb、Rails,apache+passenger環境でしか動かしたことないんだ
722デフォルトの名無しさん:2012/06/28(木) 00:13:03.54
前から気になってたんだけど
#coding:utf-8
で動くのになんで
# -*- coding: utf-8 -*- は -*- とかはいってんの?
オシャレのつもりなの?
723デフォルトの名無しさん:2012/06/28(木) 00:43:48.75
>>722
Emacsがコメント内のモード指定とかを認識する時に -*- -*- を使う、はず。


724デフォルトの名無しさん:2012/06/28(木) 00:58:04.40
>>721
UnixやLinux系のシェルにテキストファイルを実行させようとする場合
その一行目の内容が #! で始まる文字列ならば
#!に続く文字列を、それを開く実行ファイルのフルパスとみなす

Windowsだと関係ないけどな、あれは関連付けでやるから
725デフォルトの名無しさん:2012/06/28(木) 06:28:09.80
>>722
-*- -*- は Emacs 用(で、Emacs の ruby-mode で保存すると自動挿入)
「絶対誰も他の用途で使用してなくて目立って意味がありげな文字列」を選んだ結果こんなのになってる
マジックコメントの実際的な元ネタ(というか、まとめ)の PEP0263 にも載ってる由緒正しい書式
ttp://www.python.org/dev/peps/pep-0263/
Emacs はこの行を「実行」するので他にもいろいろ書ける

# -*- mode: ruby; coding: utf-8 -*-
print "HELLO"

↑の2行だけ(shebangなし)を「a.txt」で保存して Emacs で開いてモードラインを見てみよう、ruby の部分を perl にしてみたりすると perl-mode になるぞ
あんまり変なこと書くとエラーになって手処理を聞かれるので注意
726デフォルトの名無しさん:2012/06/28(木) 10:10:04.53
使い物にならんのに薦めるな
727デフォルトの名無しさん:2012/06/28(木) 21:14:33.86
みなさんはRubyをどのようなことに活用されてますか?自動化or効率化させてる作業とかあれば教えてください。
728727:2012/06/28(木) 21:20:02.48
自分はポイントサイトの自動巡回に利用しています。
729デフォルトの名無しさん:2012/06/28(木) 21:27:36.77
>>727
エロ画像を収集するのに使っています。
730デフォルトの名無しさん:2012/06/28(木) 21:32:03.06
エロ画像?を結合するのに使っています。
731デフォルトの名無しさん:2012/06/28(木) 22:03:51.21
DxRubyでゲームみたいなものを作って1人遊びしてます
732727:2012/06/29(金) 00:00:22.22
>>729
いいすね。自分もやってみます。
>>730
結合するといっぺんに観られて良いってことですか?
>>731
面白そうですね。挑戦してみます。
733デフォルトの名無しさん:2012/06/29(金) 01:24:34.22
Excelに出力した文字を「折り返して全体を表示」の設定にしたいのですがどう書けばよいでしょうか?
例えば列の幅を設定するときは
ss.Columns("A").ColumnWidth = 20
ですがこのような感じで書けますか?
734デフォルトの名無しさん:2012/06/29(金) 11:09:56.40
>>733
Excelは触らなくなって久しいから適当な事ぬかすと
マクロを記録してVBAのソースを見たらいいんじゃねえかな

あーググったら .WrapText = True とか出てきた
735デフォルトの名無しさん:2012/06/29(金) 12:34:18.38
>>734
WrapTextでうまくいかないと思ってたら自分が書き方間違えてましたw
736729:2012/06/29(金) 21:21:07.53
>>732
……冗談で言ったんだが済まんかった orz

watirとかでWebアプリの自動テストしたり、雑事の自動化とかに使っている。
737732:2012/06/29(金) 22:59:42.96
ふぅ。。。
>>736
えっ?

watir丁度勉強し始めたところでした。mechanizeではうまくいかないのをwatir利用しようと思ってます。
738デフォルトの名無しさん:2012/06/30(土) 03:15:41.88
配列aに要素がいくらか入っているとき、
  a = [59,11,90,25,81,9,4,95,2,44,19]

これを n個ずつサブグループ化する、Rubyらしい方法はありますか?
  もし n = 3 なら
  b = [[59,11,90],[25,81,9],[4,95,2],[44,19]]

Cでやるような、forのインデックスで地道に切っていく方法は考えたのですが…
 for i in [0 .. (a.size/n) ]
   b << a[n*i .. n*(i+1)]
 end
739デフォルトの名無しさん:2012/06/30(土) 03:48:50.39
>>738
a.each_slice(3).to_a
#=> [[59, 11, 90], [25, 81, 9], [4, 95, 2], [44, 19]]
740デフォルトの名無しさん:2012/06/30(土) 06:31:42.25
というかプログラム板では質問だからってスレを上げる必要はないよ
あれは非sageだとIDがあって専用ブラウザを使ってない人が多くて
なおかつ板の住人なら誰でも答えられる(板の"新着"にさえなればいい)質問が多い雑談板の流儀

IDがなくて専用ブラウザ率が特大でスレごとに話題が特化されているム板ではほとんど意味がない
741uy:2012/06/30(土) 12:42:06.92
>>737
watirって凄いなこれ
今まで直接IECOM触ってたわ
742デフォルトの名無しさん:2012/06/30(土) 15:36:36.54
ウゼェ
743デフォルトの名無しさん:2012/06/30(土) 19:39:48.47
どうみても普通の親切心なのに嫌われる>>741が可哀想だ
744デフォルトの名無しさん:2012/06/30(土) 19:58:17.69
名前欄を消し忘れてるだけでダメだろ。
745uy:2012/06/30(土) 21:50:13.31
俺も気をつけなきゃw
746デフォルトの名無しさん:2012/07/01(日) 01:25:00.36
\w のマッチについて、http://doc.ruby-lang.org/ja/1.8.7/doc/spec=2fregexp.html では

> 英数字。[0-9A-Za-z_] と同じ。
> 多バイト文字に対応した正規表現では、日本語のいわゆる全角文字にもマッ チします。
> [0-9A-Za-z_0-9A-Za-z] とでも言えましょうか。

と書かれているんですが、実際はは「あいうえお」にもマッチしてしまうようですが、
自分がドキュメントの解釈を間違えてるんでしょうか?
747デフォルトの名無しさん:2012/07/01(日) 01:31:20.19
途中投稿失礼、クラッシックな、[0-9A-Za-z_]へマッチする\wを使いたいのです。
perl時代のRegexpルールを沢山抱えておりまして…
748デフォルトの名無しさん:2012/07/01(日) 01:34:48.68
>>746
wはwordの略で、単語にマッチするメタ文字です。
> 多バイト文字に対応した正規表現では、日本語のいわゆる全角文字にもマッ チします。
「あいうえお」は全角文字ですよね。
749デフォルトの名無しさん:2012/07/01(日) 01:36:04.54
>>746
これはドキュメントの記述の方が間違ってる。「あいうえお」にマッチするのが正しい

内容の更新のタイミングの違いとかがあって、新リファレンスでは間違っているが
旧リファレンスでは正しい記述になっているという不思議な状態
http://www.ruby-lang.org/ja/old-man/html/_C0B5B5ACC9BDB8BD.html

るりまプロジェクトでもチケット(報告)が上がっていないようなので
報告しておいたほうが良いかもしれない
750デフォルトの名無しさん:2012/07/01(日) 01:39:49.18
>>749
なるほど、旧ドキュメントのこっちの記述が正しいのですね。ありがとうございます

> 多バイト文字に対応した正規表現では、日本語のいわゆる全角文字(ひらがな・カタカナ・漢字・全角記号)にもマッチします。
751デフォルトの名無しさん:2012/07/01(日) 01:46:24.09
うーん、放置チケットですね… http://bugs.ruby-lang.org/issues/4947
752デフォルトの名無しさん:2012/07/01(日) 11:09:10.80
俺が報告したことのあるるりまのチケットはすぐ対応されたから、
古くなればなるほど放置されたままになる可能性は高いな。
チケットをageするには何かレス付ければいいの?
753デフォルトの名無しさん:2012/07/01(日) 11:29:54.32
というより、1.9では多バイト文字対応と
国際化対応したのは有名な話だから、
正規表現が全角に引っかかりそうなくらい
わかっとけよキリッ、ってことじゃないんですか。

でも¥wがまともに使えないのは半分バグすね。
754デフォルトの名無しさん:2012/07/01(日) 11:34:47.48
あら、、バグチケットみたら1.8のときから?
失礼。あらら。。
755デフォルトの名無しさん:2012/07/01(日) 14:49:58.67
1.9.2 では
http://doc.ruby-lang.org/ja/1.9.2/doc/spec=2fregexp.html
> \w
> 英数字。[0-9A-Za-z_] と同じ。

疑いだしたらきりがないけど、これは正確なのかな?
756デフォルトの名無しさん:2012/07/01(日) 14:51:05.97
まぁ、余計な事でハマりたくくなければ /n フラグを忘れるな、という
バッドノウハウになるんでしょうけど
757デフォルトの名無しさん:2012/07/01(日) 15:09:35.50
非ASCIIやマルチキャラクタ環境における正規表現がどう動作する「べき」かっていうのはぶっちゃけ誰も触りたくない領域
Latin-Xでどう動作させるかの時点でひたすらめんどくさい
758デフォルトの名無しさん:2012/07/01(日) 15:36:57.79
あっちのヨーロッパ言語圏の人って自国語の検知とかどうやってるんだろうね
「単語」でアクセントつき文字の並びがヒットしたりすんの?
759デフォルトの名無しさん:2012/07/01(日) 16:46:40.42
% ruby -e 'p "Läther".encoding'
#<Encoding:UTF-8>
% ruby -e "p 'Läther'.scan(/\w+/)"
["L", "ther"]
% ruby -e "p 'Läther'.scan(/[[:word:]]+/)"
["Läther"]

なんでこうなるんだろう。\wと[[:word:]]は同じでよさそうなものだけど
760デフォルトの名無しさん:2012/07/01(日) 17:50:35.84
¥wは1.9.2でASCIIオンリーになった。
http://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_0/NEWS

タグみたいな、機械処理するパターンにマッチさせる時によく使うから
ASCIIオンリーのほうが都合がいいんじゃないの、みたいな判断だと
思ったが記録を探せぬ。
761デフォルトの名無しさん:2012/07/01(日) 18:25:52.17
どうもです。記録はこのあたり?

ChangeLog:
> Sun Aug 16 00:30:33 2009 NARUSE, Yui <naruse@ruby-lang.org>
> ...
> * regparse.c: \d, \s and \w are now non Unicode class.
> [ruby-dev:39026]

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/39026
> \d が一般化された意義は理解しますが、[0-9] と同等でなくなった事は、いい
> 事ばかりでもないように感じます。以前と同じ意味を表現したいが為にほとん
> どすべての \d を [0-9] に置き換えるのは大変です。可読性、保守性の面でも
> 望ましくないと思います。
762デフォルトの名無しさん:2012/07/01(日) 21:26:34.20
>>758
まあヨーロッパ系の言語はスペース区切りの単語配列みたいなもんだからなw
日本語とはちょっと苦労度は違うだろうね
763デフォルトの名無しさん:2012/07/02(月) 10:23:26.24
char[] str = "hoge"; //OK
char[] str; str = "hoge"; //NG

ひとつの記号に複数の意味を与えないでください
764デフォルトの名無しさん:2012/07/02(月) 11:19:57.02
なにを言っているの?
765デフォルトの名無しさん:2012/07/02(月) 11:41:55.28
char *str = "hoge"; //OK
char *str; str = "hoge"; //OK!!
766デフォルトの名無しさん:2012/07/02(月) 18:50:35.99
初期化と代入ですね
767デフォルトの名無しさん:2012/07/02(月) 21:19:43.36
配列のポインタのことを言ってるのか
768デフォルトの名無しさん:2012/07/03(火) 01:31:18.28
ただの誤爆だろ
769デフォルトの名無しさん:2012/07/03(火) 15:47:18.37
ruby-1.9.3-p0 :007 > a = ?1
=> "1"
ruby-1.9.3-p0 :008 > a = ?11
SyntaxError: (irb):8: syntax error, unexpected '?'
a = ?11

この構文はなんですか?
1文字の数字を文字列化する?
詳しいページがあればお願いします。
770デフォルトの名無しさん:2012/07/03(火) 16:01:11.99
>>769
http://doc.ruby-lang.org/ja/1.9.3/doc/spec=2fliteral.html

なんで数値リテラルに分類されてるんだろ。Cみたい
771デフォルトの名無しさん:2012/07/03(火) 16:38:09.21
>>770
昔は文字コード返してたような
そのままになっちゃってんじゃね
772デフォルトの名無しさん:2012/07/03(火) 16:50:18.48
>>771
いわれてみればそうだった。トン
773デフォルトの名無しさん:2012/07/03(火) 20:30:27.53
'1'ってことか
誰得なんだこれ
774デフォルトの名無しさん:2012/07/03(火) 21:15:20.68
1.8だとゴルファーが ?d で100が手に入るので愛用してたけど、
1.9だと取りあえず1.8の記法がエラーにならない程度の意味しか
ない気がする。
775デフォルトの名無しさん:2012/07/04(水) 20:47:05.43
エクセルシートからデータを読み取ってCSVに転記するというツールをRubyで作ろうとしています。
ちなみに前はVBAで作ってましたが、Rubyの方が柔軟性がありそうなのでRubyにしました。
イメージとしては、住所録とか顧客リストといったシートからデータを読み込んでいく感じです。

ここで、シートAとシートA'、シートB、シートCがあって、シートAとA'での違いは
とある列の並びが違うだけであり、他の部分は全て共通です。

つまり、

var1 = app.Cells(i, 1).Value //シートAとA'共通

var2 = app.Cells(i, 2).Value // シートA
var2 = app.Cells(i, 3).Value // シートA'

var3 = app.Cells(i, 4).Value //シートAとA'共通


といった感じで、特定の値だけ読み取る列がずれているだけです。
で、これをどんな風に書くのがベストなのかと迷っています。

この部分をブロックに入れて ({var2 = app.Cells(i, *).Value})、yieldで実行させるべきか、

それとも
def var2read()
var2 = app.Cells(i, *).Value
end
みたいにこの部分だけをメソッドにして、オーバーライドさせるべきか。

それとも、普通にif文とかcase文で作るべきか・・・・。

今回はシートAとシートA'だけでなく、転記処理がぜんぜん違うシートB, Cとあるので、
その辺りも踏まえて、何か上手い方法はないかと悩んでいます。
776デフォルトの名無しさん:2012/07/04(水) 21:25:34.83
>>775
継承を使った差分記述ではいかが?

class SheetA # シートAとA'との共通
 attr_reader :var1, :var3
 def initialize
  @var1 = app.Cells(i, 1).Value
  @var3 = app.Cells(i, 4).Value
 end
end

class SheetA1 < SheetA # シートA固有
 attr_reader :var2
 def initialize
  super
  @var2 = app.Cells(i, 2).Value
 end
end

class SheetA2 < SheetA # シートA'固有
 attr_reader :var2
 def initialize
  super
  @var2 = app.Cells(i, 3).Value
 end
end

もしシートA/A'/B/Cで共通処理があれば抽象クラスSheetを設けて、
そのサブクラスとしてSheetA/SheetB/SheetCを定義する
777デフォルトの名無しさん:2012/07/04(水) 21:34:03.47
ていうかExcelにはVBAという立派な操作・記述言語があるんだから素直にそっち使え
RubyでExcel操作するくらいしか用途が思いつかないならRubyなんてやめちまえ
778デフォルトの名無しさん:2012/07/04(水) 21:46:36.68
# s : 開始行番号
# e : 終了行番号
# cols : データを取り出す列
def make_table(sheet,s,e,*cols)
table = []
(s..e).each do |row|
table << (line = [])
cols.each do |col|
line << sheet.Cells(row,col).Value
end
end
table
end
779776:2012/07/04(水) 22:04:50.03
メソッドinitializeの定義を自己訂正する(3ヶ所とも同じ)

X: def initialize
O: def initialize(app)

>>777
>ていうかExcelにはVBAという立派な操作・記述言語があるんだから素直にそっち使え

せいぜい数十stepくらいならVBAでもいいけど、それを超えた規模のコードになると
Rubyプログラミングに慣れた人ならVBAはまどろっこしくなると思うよ
極論を言えば、WindowsにはWSHがあるんだからRubyは一切必要無し...になる訳で

>RubyでExcel操作するくらいしか用途が思いつかないならRubyなんてやめちまえ

Windows上でのRubyプログラミング入門として(=最初の一歩として)、
OLEによるExcel操作はとても良い題材だと思うよ
自分の抱える日常的な作業を自動化/効率化するのに活用するのが、Rubyの主用途だから
780デフォルトの名無しさん:2012/07/04(水) 22:39:57.83
>>776
>>779
ありがとうございました。
是非とも参考にして取り入れてみたいと思います。

>>778
ありがとうございました。
それも是非参考にします。

>>777
以前はVBAでやっていたのですが、クラス継承などがなく、全体的にRubyのほうが機能が多かったんです。
また個人的にもRubyには別件で触れたのですが、言語仕様がすごく気に入りましたので
可能であれば他のプロジェクトで使いたいと思いました。
781デフォルトの名無しさん:2012/07/04(水) 22:40:16.11
>>777
あなたに頼んでるわけじゃないんだから、そんなに怒らなくても、、、
いま、俄にブームなのはこれでしょ
ttps://github.com/randym/axlsx
782デフォルトの名無しさん:2012/07/04(水) 22:50:12.79
>>775
いくつものコードを記述するよりは、シート毎にそれぞれの値の参照先を定義した表を作って、
それに基づいてデータを引っ張ってくるコードを一つだけ書く方がいいと思うけどな

シート名 値1列名 値2列名 値3列名 ...
SheetA      A      B      D
SheetA'      A      C      D
SheetB      C      V     AN
SheetC     AA    AB     AZ

こうしとけば列名(列番号)を弄るだけでプログラムがわからない人でもメンテできるよね
開始・終了位置の定義(検出)とかCSV書き出しとか、下手にコード書くよりExcelの関数や
機能を使った方が簡単だったり速かったりもするのだけど、Ruby関係ないのでこの辺で
783デフォルトの名無しさん:2012/07/04(水) 23:58:25.09
>>782
ありがとうございます。
VBAで書く場合はそれも検討したいと思いますが、ただその場合、
コードは1つだけで済みますか?

Rubyは関係ないので、もちろんご回答は気が向いたときでお願いします。
784デフォルトの名無しさん:2012/07/05(木) 00:46:31.08
VBAでも一つのコードで十分対応できる、というより言語は割とどうでも良くて、
多機能のでかいアプリ(ライブラリ)をどんだけ使いこなせるかという話なので

それでもRubyを使う意義があるとすれば、正規表現や入り組んだデータ構造
を気楽に扱いたいとか、外部とデータをやりとりするといった場合じゃないかな
785デフォルトの名無しさん:2012/07/05(木) 01:42:12.00
RubyやらPerlやらでExcel操作するのを書くと、コマンドプロンプトから簡単に実行できるところが楽。
VBSで書けば出来るじゃん。って?まぁまぁそれは…
786デフォルトの名無しさん:2012/07/05(木) 03:26:22.80
>>775
使う範囲のすべての列をCSV中間ファイルに出してから、
Rubyプログラムで必要な項目を読むんではダメ?
787デフォルトの名無しさん:2012/07/05(木) 07:47:06.76
俺もUsedRange.Valueで根こそぎ取り込んでから処理してる
セル1個ずつアクセスしてたら遅すぎてやってられなかったわ
列のずれはお好みの方法で
788デフォルトの名無しさん:2012/07/05(木) 08:34:58.50
>>786
ありがとうございます
中間CSVというのは、シートもしくは外部ブックを作るという意味ですか?


>>787
ありがとうございます。
メモリ内に全て読み込んでから処理するという意味でしょうか?


あえてRubyでやる意味は薄い・・・かもしれませんが、
Rubyでも遜色なくできるのであれば、今後のためにもRubyでもやりたいです。
789デフォルトの名無しさん:2012/07/05(木) 08:35:27.81
中国人と韓国人にはない DNAのD系統 を 日本人はもっていることが判明
http://engawa.2ch.net/test/read.cgi/poverty/1341414504/


画像
http://stat.ameba.jp/user_images/20110304/19/umepino/68/53/j/o0475037711089589457.jpg


日本人はY染色体DNAのD系統を高頻度で持つ事で有名である

世界的にもチベット人や中近東の人だけがこのDNAをもっているが、
他の世界のどこにもほとんど存在しない。

さらに日本のすぐ近くの朝鮮半島や中国人が南方系O系統であり、
孤立したD系統を持つ日本人の異質さが際立って見える。

http://kirinukityo.tumblr.com/post/12942190189/maido3-y-dna-d

790デフォルトの名無しさん:2012/07/05(木) 09:22:22.28
Rackのセッションクッキーについて教えてください。
セキュリティ上、ワンタイムのページトークンを発行し、
input hiddenのトークン値や
セッションクッキーをブラウザから送信させ、
サーバではあらかじめ記録した
["セッションID" => "ページトークン"]
でこちらが発行したページかどうかを照合したいです。

rackのセッションクッキーの実装について
http://takumakei.blogspot.jp/2009/06/sinatrasession.html
こちらのソースコードは読めます。

でも私そもそものところがわかっていません。
rack、もしくはサーバからのセッションIDの取り出し方です。
rackでは、sesshon[:hoge] = "aiueo"
とハッシュの出し入れをすればクッキーがセットされるようですが、
そのセッションの値を取り出せないと
["セッションID" => "ページトークン"]が実現できない気がしまして。
それとも、"aiueo"があるかnilかどうかで判別できる仕組みが成立するのでしょうか
長いですがよろしくおねがいします
791デフォルトの名無しさん:2012/07/05(木) 18:22:29.85
>>790
Rails? ならこっちの方がいいかも
http://kohada.2ch.net/test/read.cgi/php/1329492840/
792デフォルトの名無しさん:2012/07/05(木) 22:00:17.57
>>790
session[:hoge] = "aiueo"で設定、session[:hoge]で取得できるみたい

use Rack::Session::Cookie, :key => 'rack.session', :path => '/', :secret => 'changeme'

app = proc do |env|
  session = env["rack.session"]
  if env["REQUEST_PATH"] == "/get" # http://localhost:3000/get
    session[:hoge] = "aiueo"
    [200, {"Content-Type" => "text/plain"}, "session[:hoge] = 'aiueo'"]
  else
    [200, {"Content-Type" => "text/plain"}, "session[:hoge] = #{session[:hoge]}"]
  end
end

run app
793デフォルトの名無しさん:2012/07/06(金) 09:38:03.83
131 名前:uy ◆pdu1UZmweE [sage] 投稿日:2012/07/05(木) 19:43:52.94
お前らは何かに熱中してるか?
おそらく何も熱中してないだろう
俺は女子小学生のパンチラにハマっている
お前らも熱中するものを持つと人生が豊かになるぞ
794デフォルトの名無しさん:2012/07/06(金) 10:16:20.33
サザエさんとか昔のドラえもんがおすすめかな
795デフォルトの名無しさん:2012/07/07(土) 00:40:07.13
>>792
レスありがとうございます
それだとaiueoしか、
出てこないですよね。
値がaiueoとはいっている、
つまりnilではないことで
ログイン状態を確認するだけなら
いいとおもいますが、session id
そのものにはアクセスできませんよね。
最初の要望実現するには、
Rack::RequestとかRack::Abstract::ID
継承してごにょごにょするしか
なさそうですね…。うう
796デフォルトの名無しさん:2012/07/07(土) 10:23:41.15
Mechanize#get対象に、metaタグのrefresh先URLの途中に改行があり、follow_meta_refreshしても正しいURLに移動できません。このようなケースで対処法があれば教えてください。
797デフォルトの名無しさん:2012/07/07(土) 11:28:28.53
改行取り除いてからparse
798デフォルトの名無しさん:2012/07/07(土) 12:49:41.93
URIとしては改行含まれないよね
HTMLの属性値として書かれてるときはブラウザ側で除去されるべきだっただろうか

>>796
結論から言うとMechanizeのバグだ
すくなくとも、何らかの改行(をパーセントエンコードしたもの)が含まれるURL文字列がMeta#hrefで取得できないといけない
今は改行のとこでぶっちんと切られてる(MetaRefresh::CONTENT_REGEXPが悪い)

いろいろ考えたんだけど、どれも修正箇所が山のよーにあって眩暈がした
どのページに移動metaがあるのかわかっているなら、follow_meta_refreshをオフにした上で、metaのあるページの
agent.page.meta_refresh[0].node['content'].scan(/URL=(.+)/mi).flatten[0]
が移動先URLなので、これから誤動作しない程度に空白と改行を除去してgetに渡して自力移動するのがいちばん簡単だと思う
799796:2012/07/07(土) 15:27:38.13
>>798
ありがとうございます!教えていただいた自力移動でばっちしでした。
800デフォルトの名無しさん:2012/07/07(土) 17:47:21.44
>>795
自前でセッションIDを"aiueo"のとこにセットするわけじゃないのか。ごめん

Rackが使ってるセッションIDはenv["rack.session.options"][:id]で取れるみたいだけど
ユーザがこれを使うのが適切かどうかは正直わからない
801デフォルトの名無しさん:2012/07/08(日) 01:34:14.97
PHPのmysql_fetch_arrayに相当する関数は、
rubyに存在しますか?
802デフォルトの名無しさん:2012/07/08(日) 02:19:20.46
Rubyってラベル付きbreakできへんの?
803デフォルトの名無しさん:2012/07/08(日) 05:08:18.28
生レバー原因?松江市の焼き肉店で8人食中毒
http://www.sponichi.co.jp/society/news/2012/07/07/kiji/K20120707003630800.html
 島根県は7日、松江市の焼き肉店「焼肉とらじ」で6月29日に
牛の生レバーなどを食べた小学生から50代の男女8人が下痢や
発熱など食中毒の症状を訴えたと発表した。いずれも症状は軽く、
回復に向かっている。

 8人とも生レバーを食べたとみられ「最後になるので食べた」
と話している人もいるという。

 県によると、症状が出たのは同店で会食した11人のうちの8人で、
生レバーのほかに焼き肉やサラダなどを食べた。検査をしたところ、
5人から食中毒菌カンピロバクターが検出された。

 県は11日まで5日間の営業停止処分とした。



最後になるので食べた
最後になるので食べた
最後になるので食べた
804デフォルトの名無しさん:2012/07/08(日) 08:37:31.05
>>802
breakに引数的なものを渡しても戻り値として扱っちゃうからなあ
catch~throw文か例外処理が似てるといえば似てる
805デフォルトの名無しさん:2012/07/08(日) 11:03:08.05
俺はraiseは例外処理専門にして
throwはラベル付きbreakや大域脱出gotoの代替に使うことが多いな
806デフォルトの名無しさん:2012/07/08(日) 14:06:05.99
Dir.globが SJISの{や[が含まれる文字に誤反応するバグはなくなったと思ってたら
(たぶんWindows限定の)コマンドラインのワイルドカード展開にバグが残ってた

>ruby.exe ファイル名を引数に取る自作スクリプト.rb *ダンボール戦機*ts
とやったらファイル名のワイルドカードが展開されなかった
「ボ」 0x83 0x7B({)
「ー」 0x81 0x5B([)

>ruby.exe ファイル名を引数に取る自作スクリプト.rb *ダン*ル戦機*ts
で動かしたけど
>ruby.exe -e "p Dir.glob('*ダンボール戦機*ts')"
だと、ちゃんと展開されますよ

試したバージョン
ruby 1.9.3p194 (2012-04-20 revision 35410) [i386-mingw32]
ruby 2.0.0dev (2012-05-22 trunk 35758) [i386-mingw32]
807デフォルトの名無しさん:2012/07/08(日) 14:15:31.16
ところで
ワイルドカードの正式な仕様ってあるんですか

{} はどこに書いても機能するけど
[]はディレクトリ名部分では機能しないみたいで

ドライブを分けてるのを一括で列挙しようとして
Dir.glob('[EFGHI]:/mov/ts/*.ts')
だとダメで
Dir.glob('{E,F,G,H,I}:/mov/ts/*.ts')
だと動きました

どうも[]はファイル名部分じゃないと効かないような感じなんですが

そもそも本来のUNIXのシェルではどういう展開ルールなんでしょうか
Rubyとシェルのそれが違っててもいいのですが
できれば、ちゃんと仕様を明文化しておいて欲しいですねぇ
808デフォルトの名無しさん:2012/07/08(日) 14:34:38.58
そもそも[]はワイルドカードではない
809デフォルトの名無しさん:2012/07/08(日) 15:38:20.62
>>806-807
そもそも上の2つはWindowsのcmd.exeのワイルドカード展開でRuby関係ない。
Dir.globの仕様はマニュアルにあるよ。
http://doc.ruby-lang.org/ja/1.9.3/class/Dir.html
810デフォルトの名無しさん:2012/07/08(日) 16:06:19.66
>>808
まあ、それはそうなんですけどね

調べてみたら
{} はブレース展開
[] ? * はパス名展開
って言うんでしょうか
ワイルドカード と呼べるのは ? と * だけなのかな

Windowsしか使ってないので
{} や [] の展開はRuby内でしか使ったことないです
811デフォルトの名無しさん:2012/07/08(日) 16:12:57.59
>>809
WindowsXPなんで
c:/windows/winnt.bmp c:/windows/winnt256.bmp
というファイルがあるのですが

>ruby -e "puts ARGV" c:/windows/winnt{256,}.bmp
c:/windows/winnt256.bmp
c:/windows/winnt.bmp
>ruby -e "puts ARGV" c:/windows/[wxyz]innt{256,}.bmp
c:/windows/winnt256.bmp
c:/windows/winnt.bmp

と、コマンドライン引数のパスがDir.globのように展開されます
ただのmsvcrt.dllのワイルドカード展開ではありません

で、[]なんですが
>ruby -e "p Dir['c:/{w,x,y}indows/winnt*.bmp']"
["c:/windows/winnt.bmp", "c:/windows/winnt256.bmp"]
は通りますが
>ruby -e "p Dir['c:/[wxy]indows/winnt*.bmp']"
[]
はマッチしません

[~]はファイル名部分じゃないと使えないような感じです
そこんとこ、どうなってるのかなと
812790:2012/07/08(日) 17:34:36.34
>>800
レスありがとうございます。一応自己解決しました。
Rackミドルウェアのうち、
Rack::Session::Poolのみ、generate_sidなるものが
パブリックメソッドでありました
http://rack.rubyforge.org/doc/Rack/Session/Pool.html
継承してみてなんとかSession IDを表示できました。
なんちゃってrubyDSLって嫌い;;
# hoge.rb
require 'rack/session/pool'
class Hoge
def call(env)
req = Rack::Request.new(env)
Rack::Response.new.finish do |res|
res.write "Hello, Rack"
res.write env[:test] if env[:test]
end
end
end
class Hage < Rack::Session::Pool
def initialize(app)
super
end
def call(env)
env[:test] = generate_sid
super
end
end
# config.ru
require './hoge.rb'
use Hage
run Hoge.new
813デフォルトの名無しさん:2012/07/08(日) 19:16:10.13
macrubyもこっちのスレでいいんでしょうか?
scriptingbridgeをバリバリつかってる人いますか?
814デフォルトの名無しさん:2012/07/09(月) 00:21:49.79
>ruby -ve "p Dir['c:/[wxy]indows/winnt*.bmp']"
ruby 1.8.7 (2011-06-30 patchlevel 352) [i386-mingw32]
["c:/WINDOWS/winnt.bmp", "c:/WINDOWS/winnt256.bmp"]

1.8.7では ディレクトリ部分でも[~]が展開されるようです
やはり 1.9.3の挙動はバグのようですね

1.8.7ではコマンドラインをDir.globのようには展開せず
(たぶん)Cラインタイムがワイルドカードを展開するだけですが
815デフォルトの名無しさん:2012/07/10(火) 10:01:45.90
「露骨に数字が下がるんです」ついにフジテレビの“K-POP離れ”が始まった!?


いよいよ日本での韓流ブーム終焉の日が近づいている。親韓流、親K―POPの急先鋒とみられているフジテレビ内部からも「まったく視聴率が取れない……」と弱気な声が漏れており、撤収のムードが漂い始めているという。
昨年、高岡蒼佑がTwitterで行ったフジテレビの韓流ゴリ押し批判をキッカケに、韓流・K-POPに嫌悪感を示す層が、インターネット上を中心に形成された。
その流れは根強く、先月には兵庫県でKARAや超新星らが出演するイベントが、チケットの売り上げ不振を理由に中止に追い込まれたほど。
それでもテレビでは「K-POPブーム」と称して相変わらずプッシュしていたが、もはや不人気は隠せない段階に入った。
ついには、フジテレビ内からもK-POPの不人気ぶりを嘆く声が漏れている。
「今K-POPアイドルを番組に出すと、露骨に数字(視聴率)が下がるようになってしまいました。
まだKARAや少女時代などの下がり幅はマシな部類ですが、あまり名前の知られていないグループだと、本当にひどい。
さすがにスタッフは頭を抱えていますよ。これまでのように、K-POPや韓流ブームと騒いでいられなくなる日は近いでしょう」(フジテレビ関係者)
この関係者が話すように、露骨なK-POP推し自粛は番組編成にも表れている。
例えば、7月9日に2時間特番として放送予定の『夏が来た!!HEY!HEY!HEY!お台場“生”の歌祭り』。
昨年ならば有名無名問わず、複数のK-POPグループがブッキングされるというケースが多かったが、今回韓国アーティストで出演を事前告知されているのは東方神起だけ。
8月8日の『FNSうたの夏まつり』にも、今のところK-POPアーティストの名前はない。
民放キー局関係者は「すでに『ミュージックステーション』を持つテレビ朝日も、K-POPと距離を置くことを決めたといいます。
必要以上にK-POPアーティストを出さないということですよ。数字が取れない上に、ネットであらぬ批判を受けてしまいますから、仕方ないですね」と耳打ちする。
今年も日本でのヒットを目指して多くの韓流アイドルがやって来ているが、現実はあまりにも厳しいと言わざるを得ないだろう。

http://www.cyzo.com/2012/07/post_10950.html
http://engawa.2ch.net/test/read.cgi/poverty/1341880283/
816デフォルトの名無しさん:2012/07/11(水) 11:48:32.01
ゲームのマップの配置変更をするために
配列とfor文と添え字を使って書いてるんですが、
大きい数字からfor文を回すにはどういう方法があるでしょうか?

今は
for i in 0..5
j = 5 - i
# jを使って処理
end
としてるんですが、もっときれいな書き方はありますか?
817デフォルトの名無しさん:2012/07/11(水) 11:52:15.43
131 名前:uy ◆pdu1UZmweE [sage] 投稿日:2012/07/05(木) 19:43:52.94
お前らは何かに熱中してるか?
おそらく何も熱中してないだろう
俺は女子小学生のパンチラにハマっている
お前らも熱中するものを持つと人生が豊かになるぞ
818デフォルトの名無しさん:2012/07/11(水) 11:52:34.50
Rubyでforは使うな
819デフォルトの名無しさん:2012/07/11(水) 12:27:52.72
というか、forを使って説明しているところなんていまどきないはずなんだが、そんなものどこで覚えたのやら

arr = ["A", "B", "C", "D", "E", "F", "G", "H"]

# 配列を逆順で枚挙、ゲームの「盤目」では全体をeachで回すのはあんまり使う場面がないかも
arr.reverse_each do |e|
puts e
end

# こればっかりは仕方ないので添字を増減
(3..6).reverse_each do |i|
puts arr[i]
end

6.downto(3) do |i|
puts arr[i]
end

# 直書きでぐりぐり
[6,5,4,3].each do |i|
puts arr[i]
end
820デフォルトの名無しさん:2012/07/11(水) 13:05:45.84
>>819
6.downto(3)
という表現があるんですね。

ありがとうございます、これを使うことします。
821デフォルトの名無しさん:2012/07/11(水) 13:09:19.79
6.downto(3)
とかオブジェクト指向の観点から考えると気持ち悪い
822デフォルトの名無しさん:2012/07/11(水) 13:22:11.53
まあ、だから流行らないんだとは思うが、順番つきの列挙済みオブジェクトを端的に作る方法がないんだよな
今回の場合Rangeリテラルをto_aしてreverseするしかないというのは、整数にupto/downtoと終端とブロックを渡すのと同レベルでモヤモヤする
823デフォルトの名無しさん:2012/07/11(水) 13:23:09.10
ruby 使ってる時点で負け
824uy ◆Qe4wwDKtLk :2012/07/11(水) 17:14:10.73
ていうか、ほとんどのアルゴリズムは
reverse_eachとか必要なくて別の場所であれこれやって、eachでいけるようにさせるだろ
逆にすると可読性が下がる
物凄くおかしなもの書いているならdownto使ってもいいけど
普通のソースコードでdowntoが必要になってるなら
どこかで何かが逆になってるからdowntoが必要になってんだよ
825デフォルトの名無しさん:2012/07/11(水) 17:18:55.89
>>824
やあ、ゴミカスuy君!
826uy ◆Qe4wwDKtLk :2012/07/11(水) 18:06:36.01
気安いんだよ雑魚が
827デフォルトの名無しさん:2012/07/11(水) 22:16:29.47
普通に9..1とか出来ねーの?つかえねーなruby
828デフォルトの名無しさん:2012/07/11(水) 22:24:35.48
出来るようにする意味が無いからな
829デフォルトの名無しさん:2012/07/12(木) 02:11:34.05
部分配列処理ならsliceも

array = [ 1,2,3,4,5 ]
array.slice(1,3).reverse.each() { |a| p a }

だが元のコードのほうが速そうだ

↓sliceの時点でエラーにしてほしい
× array.slice(4,-3).each() { |a| p a } # Nilになってeachの時点でエラー
× array.slice(3..1).each() { |a| p a } # 空配列になって処理なし、エラーも出ない
830デフォルトの名無しさん:2012/07/12(木) 03:25:56.31
>>827
リテラルで書けたら楽だとは思うが、すくなくともそれはRangeの役目ではない
とか言ってるうちにupto/downto/stepが単独でEnumerator返すようになった
irb> p 0.step(10,2).map{|x| x*3}
[0, 6, 12, 18, 24, 30]
831デフォルトの名無しさん:2012/07/12(木) 16:46:15.74
each_with_indexのカウンタを0以外から開始する事ってできませんか?

[3,4,5,6].each_with_index do |a,b|
p b
end

で、1~4を出力するようなことがしたいです
832デフォルトの名無しさん:2012/07/12(木) 16:51:18.76
>>831
Rubyは欠陥言語だから無理
833デフォルトの名無しさん:2012/07/12(木) 17:36:14.19
添え字が 0 以外から始まる言語は好きじゃない
834デフォルトの名無しさん:2012/07/12(木) 17:56:38.34
>>831
irb> [3,4,5,6].each.with_index(1){|x,i| puts "#{i}個目は#{x}"}
1個目は3
2個目は4
3個目は5
4個目は6
835デフォルトの名無しさん:2012/07/12(木) 18:05:06.85
しまった i じゃなくて n にでもするべきだった
まあいいか
836デフォルトの名無しさん:2012/07/12(木) 19:08:49.24
デスクトップがオレオレ仕様になってて他人がろくに触れないような環境にしてる奴が作ったんだろう的融通の効かなさ、ダサさがrubyからプンプンする
837デフォルトの名無しさん:2012/07/12(木) 19:17:42.33
>>834
引数に渡すことができたんですね
ありがとうございます
838デフォルトの名無しさん:2012/07/12(木) 19:46:05.39
>>837
違う
これはEnumerable#with_indexという別物だ
each_with_index自体にはこんな機能はない
839デフォルトの名無しさん:2012/07/12(木) 19:57:49.73
なんだRubyの欠陥か
840デフォルトの名無しさん:2012/07/13(金) 15:08:48.32
each_with_indexとeach.with_indexとかどこのあほうがこんな紛らわしい設計したんだよ
841デフォルトの名無しさん:2012/07/13(金) 15:44:55.69
>>840
Ruby使ってない方はスレへのご参加を御遠慮ください
842デフォルトの名無しさん:2012/07/13(金) 15:50:54.59
自演乙
843デフォルトの名無しさん:2012/07/13(金) 19:28:37.58
別に紛らわしくないだろ
each.with_indexはeachオブジェクトのwith_indexメソッド
each_with_indexはeachオブジェクトのメソッドではなくeach_with_indexというメソッド
オブジェクト志向理解してこい
844デフォルトの名無しさん:2012/07/13(金) 19:37:43.32
x オブジェクト志向理解してこい

o 眼科逝って来い
845デフォルトの名無しさん:2012/07/13(金) 20:10:54.13
eachオブジェクト
846デフォルトの名無しさん:2012/07/13(金) 23:10:28.02

http://d.hatena.ne.jp/keyesberry/20111221/p1
と結論する次第である(キリッ)
以上(キリッ)


http://d.hatena.ne.jp/masatoi/20101102/1288654204
マクロが必要なときのみ、LISPを選ぶように。(キリッ)
847デフォルトの名無しさん:2012/07/14(土) 01:17:41.55
>>833
コンピュータ界ではC言語の呪いが如何に強力だったのかが分かるなぁ
848デフォルトの名無しさん:2012/07/14(土) 03:33:50.20
xpathとかで添字が1からでフォカヌポる
849デフォルトの名無しさん:2012/07/14(土) 18:17:43.38
>>847
0から始まってる方が数学的に都合が良いことって多くね?
850デフォルトの名無しさん:2012/07/14(土) 18:28:17.74
妹「配列の1番目の要素にアクセスしたいのに0を指定しきゃいけない言語って…」
851デフォルトの名無しさん:2012/07/14(土) 19:13:31.38
俺も妹をPerokuしたい
852デフォルトの名無しさん:2012/07/14(土) 21:32:26.29
数字が1から始まるのって、いちいち頭の中で+1しなければならないから気持ち悪い
Excelの桁とか列とか
853デフォルトの名無しさん:2012/07/14(土) 22:11:19.71
for文が「初期化、比較式、増分」の形式なら0オリジンが好き
for文が「変数名、初期値、最終値(、増分)」の形式なら1オリジンが好き
854デフォルトの名無しさん:2012/07/14(土) 22:22:37.14
0始まりの奴を1始まりとして使う時は、サイズに注意するくらいで済むことが多いけど、
逆はどうしても面倒じゃね?
855デフォルトの名無しさん:2012/07/14(土) 22:31:59.09
>>852
+1とするんじゃなくて、要素数=最終添字と考えるのが1オリジンだと思う
856デフォルトの名無しさん:2012/07/15(日) 03:06:06.78
もし妹が>>850みたいな事を言ったら
一番目じゃねえゼロ番目だバカヤロウ!
と言って殴るわ妹なんて居ないけど
857デフォルトの名無しさん:2012/07/15(日) 23:40:58.77
macでRuby始めたいです
これ使ったらオススメとか、このやり方から覚えた方がいい!
などあれば教えて下さい!
858デフォルトの名無しさん:2012/07/15(日) 23:59:29.23
特にありません。
859デフォルトの名無しさん:2012/07/16(月) 00:38:19.49
>>858
そっか、ありがとう
860デフォルトの名無しさん:2012/07/16(月) 01:43:53.23
>>857
とりあえず初心者は
.methods.sort でメソッド表示して、すべてのメソッドの動作を覚えるべき
861デフォルトの名無しさん:2012/07/16(月) 01:46:55.19
>>857
irbかなとりあえず
履歴・メモリー機能付き関数電卓としてどうぞ
862デフォルトの名無しさん:2012/07/16(月) 11:04:11.01
>>857
エディタは何使う予定なの?
863デフォルトの名無しさん:2012/07/16(月) 13:02:47.37
>>860
分からなくても、とりあえず見てみます

>>861
リファレンスマニュアルにあったのでirbをとりあえずやってみますね
ありがと

>>862
ネットで探して一番良さそうだったcot editorです

皆さんありがとう
864デフォルトの名無しさん:2012/07/16(月) 13:09:08.93
やりたいことが特にないならRubyなんて覚える必要ないです
Rubyのことなんてすっぱり忘れて、必要になったらまたそのときいらっしゃい
865デフォルトの名無しさん:2012/07/16(月) 13:38:58.17
>>864
動的webサイトを作るのが目的です
866デフォルトの名無しさん:2012/07/16(月) 16:19:41.30
uyはどうして馬鹿なのですか?
867デフォルトの名無しさん:2012/07/16(月) 16:55:13.58
QZにかまうからです
868デフォルトの名無しさん:2012/07/16(月) 16:59:29.48
QZはどうしてばかのですか?
869デフォルトの名無しさん:2012/07/16(月) 17:06:34.60
uyにかまうからです
870デフォルトの名無しさん:2012/07/16(月) 18:25:39.90
変数aがnilでない時のみ、変数xに代入したい

これは
x = a if a
と書くしかないですかね?もっとスマートな書き方は無いでしょうか。

ちなみに、
x = a || x
これはaがnilでも代入操作自体は行われてしまうので駄目です。
871デフォルトの名無しさん:2012/07/16(月) 19:28:21.87
QZとuyはお互いにかまう馬鹿ということおk?
872デフォルトの名無しさん:2012/07/16(月) 19:46:23.48
>>870
知らん。
ってかいうか、変数にnilが入るようなプログラムを書く人は嫌いです。
873デフォルトの名無しさん:2012/07/16(月) 20:51:30.83
>>870
どーせ自分で答えドヤ顔で用意してんだからとっとと言えば?
874790:2012/07/16(月) 21:15:17.22
>>857
macports (mac osxのパッケージインスコ&&バージョン管理システム)
rvm(rubyのパッケージインスコ&&バージョン管理システム)
これを入れて、Ruby ver.1.9.3で
勉強はじめたほうがいいです。
ruby1.8だと記法が違いすぎます。

テキストエディタのこだわりがないなら、
GNU Emacs for MACOSX
http://emacsformacosx.com/
つかえばいいとおもいます。
Ruby用のシンタックスハイライト設定無しで
使えますので、便利です。
875デフォルトの名無しさん:2012/07/16(月) 21:15:59.82
おっと、名前はいったままだった
876デフォルトの名無しさん:2012/07/16(月) 22:00:17.09
rbenvの方がモダーンかと思ってたけど、実際どうなんすかね?
rvmつこたことないけども
877デフォルトの名無しさん:2012/07/16(月) 22:48:39.83
>>874
ありがとうございます。
色々つまづいてますが、頑張って覚えます!
878uy:2012/07/17(火) 00:03:35.44
class Object
   def sine n
     replace n if n
   end
end


n = "aaa"
x = nil
n.sine x

p n

x = "bbb"

n.sine x

p n


# =>>870 しね
879デフォルトの名無しさん:2012/07/17(火) 00:45:06.85
ねえねえ、Ruby1.8.xがopenSSL1.0でインストールできない(ossl_ssl.oが作れない)のって直った? まだ?
880デフォルトの名無しさん:2012/07/17(火) 08:45:50.94
$ openssl version
OpenSSL 1.0.1 14 Mar 2012
$ LANG=C rbenv install 1.8.6-p420
Downloading http://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p420.tar.gz...
Installing ruby-1.8.6-p420...

BUILD FAILED

だめぽいすな

ossl_ssl.c:103:1: error: 'SSLv2_method' undeclared here (not in a function)
ossl_ssl.c:104:1: error: 'SSLv2_server_method' undeclared here (not in a function)
ossl_ssl.c:105:1: error: 'SSLv2_client_method' undeclared here (not in a function)
ossl_ssl.c:444:19: error: 'STACK' undeclared (first use in this function)
ossl_ssl.c:444:25: error: expected expression before ')' token
ossl_ssl.c:444:24: error: invalid operands to binary * (have 'struct <anonymous> *' and 'struct <anonymous> *')
ossl_ssl.c:447:47: error: expected expression before ')' token
ossl_ssl.c:447:46: error: invalid operands to binary * (have 'struct <anonymous> *' and 'struct <anonymous> *')
ossl_ssl.c:447:47: error: too few arguments to function 'sk_value'
make[1]: *** [ossl_ssl.o] Error 1
make: *** [all] Error 1
881デフォルトの名無しさん:2012/07/17(火) 09:37:13.71
そこで1.8.6かよw
1.8.7は最後のリリース出たんだっけ?
882デフォルトの名無しさん:2012/07/18(水) 13:57:58.80
RailsインストールしてPCに入ってるのも確認したんだけれど、
それ以降コマンドプロンプトでバージョンの確認すらできなくなった……
泣きそうだれか助けて
883デフォルトの名無しさん:2012/07/18(水) 13:58:51.67
RailsインストールしてPCに入ってるのも確認したんだけれど、
それ以降コマンドプロンプトでバージョンの確認すらできなくなった……
泣きそうだれか助けて
884デフォルトの名無しさん:2012/07/18(水) 13:59:42.77
久しぶり過ぎて連投したごめん……
885デフォルトの名無しさん:2012/07/18(水) 14:29:37.19
許します
886デフォルトの名無しさん:2012/07/18(水) 14:55:01.51
単に環境変数の問題なんじゃない
887デフォルトの名無しさん:2012/07/18(水) 22:47:13.00
些細なことも答えてくれてありがとうございます><

FORTRANのコンパイラを入れたときに環境変数の設定が変わったのが原因だったみたいです
888デフォルトの名無しさん:2012/07/19(木) 01:16:22.77
シェルスクリプトとRubyスクリプトの使い分けが良く解りません><;
889デフォルトの名無しさん:2012/07/19(木) 01:20:28.89
Rubyのチュートリアルを探しているんだけど紹介してもらえますか?
バージョンは1.9.3です。
890デフォルトの名無しさん:2012/07/19(木) 06:47:15.02
どうせアフィカスがマッチポンプ自演するだけだから答えない
891デフォルトの名無しさん:2012/07/19(木) 06:58:27.32
ちゃんと見てないけどコレとか
ttp://ruby.learncodethehardway.org/book/intro.html
892デフォルトの名無しさん:2012/07/19(木) 07:34:03.21
>>890
嫌儲に帰れば?
893uy:2012/07/19(木) 14:36:43.37
rubyって松江市の小中学校では積極的に教えたりしてるようだけど
ネット上ではガチ初心者歓迎の色はないよね
rubyのチュートリアルは最新版のやつは少ない、まともなサイトは無いといっていい
結局古い情報のruby入門 + 個人サイト/ブログの日記記事をみて覚えるか
公式サイト関係のページで覚えるしかない
http://www.ruby.or.jp/ja/tech/development/ruby/tutorial/
894デフォルトの名無しさん:2012/07/19(木) 15:46:09.20
公式サイトに初心者向けのページを用意してはどうだろう
895デフォルトの名無しさん:2012/07/19(木) 20:54:06.97
>>890
あれは結構有名
サイト名と言語や技術だけ変えて同じとこが30個くらいサイト運営してるんだよね
コピペだらけで質も悪いので、根本からどうにかしたいところではある
896889:2012/07/19(木) 21:41:04.74
>>891
>>893

紹介ありがとうございます。
英語だときついので>>893のほうをやっていこうと思います。
897デフォルトの名無しさん:2012/07/19(木) 21:47:14.52
質が悪いと言っても素人の知ったかブログよりはマシじゃね?
898デフォルトの名無しさん:2012/07/19(木) 21:49:24.20
>>896
ほとんどの人がレス自体を表示してないから、どんなに間違っていても誰にも見えず誰も訂正しない
なにが書いてあったのかはわからないが、そもそも誰も内容を吟味しないから、その話を聞くのはやめたほうがよい
899デフォルトの名無しさん:2012/07/19(木) 21:50:29.50
>>897
だから素人の知ったかブログなんだよ!
ネットから無秩序にコピペして集めてきただけだもの!
900デフォルトの名無しさん:2012/07/19(木) 21:55:00.33
>>899
うーん、何所のことが分からない。
できれば名指ししてくれると有りがたい。
それかそこにたどり着く方法でも良いです。
901デフォルトの名無しさん:2012/07/19(木) 22:05:23.93
Rubyとかの言語名やAjaxとかの技術名プラス「入門」「初心者」あたりで検索しまくると共通点が見つかるという話は以前聞いた
今もそうなってるのかどうかはわからん
902デフォルトの名無しさん:2012/07/19(木) 22:19:47.26
あれは
cppdrive.jp
webword.jp
rubylife.jp
pythonweb.jp
phpbook.jp
perlplus.jp
officepro.jp
adminweb.jp
ajaxtower.jp
がぜんぶ同じとこだという話だったはず
まあ、それ以上でもそれ以下でもない
903デフォルトの名無しさん:2012/07/19(木) 22:26:04.58
"ネットから無秩序にコピペして集めてきただけ"には見えないけどな…
ま、コピペで著作権を侵害してるなら話は別ですが。
904デフォルトの名無しさん:2012/07/20(金) 05:41:11.49
>>902
アフィサイトモデルとして成功してんだか割に合わないんだかすっごい微妙なとこだな
905デフォルトの名無しさん:2012/07/20(金) 07:28:45.28
サイト名と言語や技術だけ変えて同じとこが30個くらいサイト運営してるんだよね
コピペだらけで質も悪いので、根本からどうにかしたいところではある
906uy:2012/07/21(土) 03:12:31.97
>>895
>>905
ラリラリ?
907デフォルトの名無しさん:2012/07/21(土) 09:44:02.42
欧州研究所が告白! 太陽光パネルで出力劣化しないのは日本製品とドイツ製品だけ!中韓メーカー発狂か
http://engawa.2ch.net/test/read.cgi/poverty/1342751788/
908デフォルトの名無しさん:2012/07/22(日) 02:28:03.62
rubyって趣味とかそういうの以外だと
Rails使ったWebサービス作り以外ではどんな場所で使われているんですか?

909デフォルトの名無しさん:2012/07/22(日) 03:23:13.16
Rails用プラグイン開発
910デフォルトの名無しさん:2012/07/22(日) 05:23:35.07
http://jp.rubyist.net/magazine/?0019-cairoでCairoいじり始めたんだけど

8 等分されたうち 1 切れ食べられたホールケーキを描くときは以下の ようになります。
context.arc(中心x, 中心y, 半径, 0, (2 * Math::PI) * (7.0 / 8.0))

とあるんだがパックマンじゃなくて右上が欠けたダイエーのマークみたいになるんだがどうして

ruby 1.9.3p194 (2012-04-20) [i386-mingw32]
cairo-1.12.2-x86-mingw32
911デフォルトの名無しさん:2012/07/22(日) 08:24:05.05
東日本大震災の復興を遅らせ、被災者をないがしろにし、韓国ばかりを支援した民主党。

民主党の多くの議員が帰化人でした。

続き
http://plaza.rakuten.co.jp/1958kn/diary/201112240000/
912デフォルトの名無しさん:2012/07/22(日) 08:38:13.89
>>908
Rails以外のWebプログラミング
自分用のコマンドラインアプリや、日常の作業を便利にするためのスクリプト
ゲーム制作(RPGツクール用のスクリプト用含む)
GUIアプリ(稀)
913デフォルトの名無しさん:2012/07/22(日) 10:37:23.09
>>910
円弧書く前に中心点をmove_toするだけでした
すみません
914デフォルトの名無しさん:2012/07/22(日) 20:14:47.52
ド素人の質問です
「その1 あいうえお その2 12345 その3 abc…そのn ○○○」
のように書いてあるテキストを綺麗にまとめるプログラムを書きたいです
理想の出力結果は
その1
あいうえお
その2
12345
その3
abc

そのn
○○○
のようにすることなのですが「その●」の部分で詰まってます
・表示させる文字そのものに1ずつ足していく方法
・数字がいくつまであるか分からないけれど全部終わったらオシマイ
以上のところを教えて下さい
915デフォルトの名無しさん:2012/07/22(日) 20:23:13.42
なにその宿題丸投げ
そんなんだとマイナーで授業に一切出てない書き方での回答が来るぞ

正規表現と、Stringクラスのsplitメソッドとscanメソッドの使い方を勉強すればなんとかなるかも
分割キーにしたい正規表現で大元の長い文字列を切って配列にすればいい
916デフォルトの名無しさん:2012/07/22(日) 20:33:01.10
>>915
ありがとうございます
自分の利便のためにexcelに書き込むプログラムを書きはじめたのですがまあ自分への宿題ですw
セルへの書き込みなどは勉強したのですが肝心のテキストの部分でハテナです
タグに囲まれている部分だけを抜き出す,とかなら分かるのですが…
917デフォルトの名無しさん:2012/07/22(日) 20:38:21.94
Excelにはテキストファイルを自動で分割してセルに入れる機能がある
それ使え
918デフォルトの名無しさん:2012/07/22(日) 20:47:14.69
すみません>>915には簡潔に書いたのですが元のテキストの「その1」と「その2」の間は
単語ではなく長い文章だったり箇条書きだったりカンマ使ってたりめちゃくちゃなのですorz
「そのn」を表示→「そのn」と「そのn+1」の間を表示(正規表現?)→「そのn+1」を表示
を繰り返すのって可能ですか?
そして「そのn+1」が存在しなくなったら終了にしたいんです
919デフォルトの名無しさん:2012/07/22(日) 21:03:34.75
とりあえず出し惜しみしないで、実際にその文章を見せてくれ。改行とかも含めて。
そんな後出し後出しで質問されて付き合うほど暇じゃないでしょ皆
920uy:2012/07/22(日) 21:09:20.39
"
その1
あいうえお
その2
12345
その3
abc
その55
ssss
".split(/その\d{0,999}(.*?)/m).each do | a |
  p a
end


ででででっていう
921uy:2012/07/22(日) 21:18:27.79
b="
その1
あいうえお
その2
12345
その3
abc
その55
ssss
s
fs
s
".each_line.inject([""]) do | s , a |
  if a =~ /その\d/
    s << ""
    next s
  end
  s.last << a
  s
end

p b

>>920
でっていう
922デフォルトの名無しさん:2012/07/22(日) 21:20:52.44
その1 その2へ進む その2 その3へ進む その3 その1に戻る その4 おわり
923uy:2012/07/22(日) 21:31:52.83
>>922
で?って思った

b="
その1
  その2へ進む
その2
  その3へ進む
その3
 その1に戻る
その4
 おわり
".each_line.inject([""]) do | s , a |
  if a =~ /その#{s.size}$/
    s << ""
    next s
  end
  s.last << a
  s
end

p b
924uy:2012/07/22(日) 21:47:04.32
n = 1

"その1
  その2へ進む
その2
  その3へ進む
その3
 その1に戻る
その4
 おわり
".each_line.chunk do | a |
  if a =~ /その#{n}$/
    n += 1
    next :key
  end
  :value
end
.map do | k , v |
  v
end.each_slice(2) do | a , b |
  puts "---"
  puts a
  p b
end

# -終了-
925デフォルトの名無しさん:2012/07/23(月) 01:50:40.86
コミュ障なの?
926デフォルトの名無しさん:2012/07/23(月) 18:16:39.65
超初心者で申し訳ない。
これ ↓ コンパイルできないんだけど、なんで?
def sing(word = "la", num)
for i in 1..num do
print word
end
puts "~"
end

sing("hu", 10)

初歩の初歩で脱落しそうだ
927デフォルトの名無しさん:2012/07/23(月) 18:27:55.28
>>926
ruby 1.8だね。
デフォルト引数値は後から順にしか指定できない。
sing(num, word="la") という定義ならOK

1.9だともっと柔軟に指定できるようになってる。
928デフォルトの名無しさん:2012/07/23(月) 18:33:04.38
>>926
1.8.7 やんね?俺も詳しいことはしらんので下参照。
ちなみに、1.9.x ならエラーにならない。

> ただし実引数との対応を取るため、i番目の引数にデフォルト値を指定したならば、 i+1番目以降でも全てデフォルト値を指定するか、可変長引数を利用しなければなりません(詳細は後述)。
ttp://doc.ruby-lang.org/ja/1.8.7/doc/spec=2fdef.html#method
929デフォルトの名無しさん:2012/07/23(月) 19:04:13.92
wordを省略するときは
sing( , 10)
って書きたいな
930uy:2012/07/23(月) 20:37:26.41
で?って思った

a , b = sing , 10
931デフォルトの名無しさん:2012/07/23(月) 21:13:39.76
>>926
なんでもいいけどRubyでforは使うな
それを君に教えたのはどこのどいつだ
932デフォルトの名無しさん:2012/07/23(月) 21:17:16.69
使いたいもんを使えばいいんだよ
933デフォルトの名無しさん:2012/07/23(月) 21:31:36.64
動けばなんでもいい、は学習段階では致命的な誤り
その言語で現在一般的な書き方を最初に憶えることは非常に重要

def sing(word = 'la', n=10)
n.times do
print word
end
puts '~'
end

sing('hu', 10)
934uy:2012/07/23(月) 22:21:16.40
こういう奴って
俺の「初心者あやmれ」
と同レベルの書き込み
935デフォルトの名無しさん:2012/07/23(月) 23:53:41.40
jrubyはお門違い?

今jruby1.7のpreviewを使ってみたんだが、なんか遅いね。
これ本当に早くなってんの?

一発目は大抵遅いから同じコマンド2回打ったけど、やっぱ遅い。
javaも1.7.05使ってるんだけど…centos6

gem -vとかやっても4秒かかる。
936デフォルトの名無しさん:2012/07/23(月) 23:56:28.68
Javaプログラムは時間動かし続けないとJITの効かせどころが
わからないから、速くなっていかないんでわ?
937デフォルトの名無しさん:2012/07/24(火) 00:06:48.01
>>936
そういうものなんですかね?
とりあえず、もう少し使い続けてみます。

java -version 早い
jruby -v 遅い。情報が表示された後に1秒くらい終わらない。
gem -v 遅い。表示に4秒かかる。
938デフォルトの名無しさん:2012/07/24(火) 00:11:48.65
それはjrubyの使い方が間違っている
jrubyは起動させっぱなしで使う
939デフォルトの名無しさん:2012/07/24(火) 00:17:39.34
Javaアプリケーション全般に言えることだな
Eclipseが遅いとかいうのももうアホかと…
940デフォルトの名無しさん:2012/07/24(火) 00:31:44.07
通常のコマンドラインとかから起動させてスクリプト読み込んで実行して終了するようなプログラムをJRubyでやってはいけない、遅いから
コンピュータの電源入れてOSが立ち上がってアプリケーションロゴがくるくる回ってウィンドウが出切って使える状態になるとこまでを含めて計測して

「遅い!」

とか文句言われてもけっこう困る
しかもちょこっと操作しただけですぐウィンドウ閉じてコンピュータの終了を指示して電源が落ちるまでも時間に含めてる
そんなん、遅いの当たり前じゃないか
その、実際にちょこっと操作したときのレスポンスの具合を見てよ
941デフォルトの名無しさん:2012/07/24(火) 01:04:54.19
遅い!
942デフォルトの名無しさん:2012/07/24(火) 17:39:03.23
客が何を望んでいるか見抜けるようになりましょう
943デフォルトの名無しさん:2012/07/24(火) 17:58:38.37
朝鮮猿っていつまで経っても、結局日本の後追い猿真似しか出来ない寄生虫民族なんだよね
属国の歴史しか無くて、ずっと独自文化がゼロなのはなぜなのか本当に良く判るわw


  < #`Д´> <うぎゃああああ!!フランス人までネトウヨの嫌韓厨だったニダーーー!!!ネトウヨ!ネトウヨ!ネトウヨ!!


■フランスメディア「KPOPに独自性は感じられない」「日本や米国の模倣」「商業主義」「つまらない」

パリで韓流コンサート「日本文化から韓国を知った」
2011/06/14(火) 09:45

  一方、コンサートが終了した現在、当日の模様について報道しているフランスのメディアは
比較的少ない。この状況下、コンサートの模様を報じているのは、フランスのニュースサイト「Rue89」だ。

  中でも目立つのが、K-POPは特に独自性が感じられないという意見だ。これまでフランスでファン層を
増やしてきたJ-POP、ひいては米国のポップスを踏襲しており、商業主義的な音作りだという意見や、
演奏がコンピューター管理されているためか野性味に欠けるといった意見が寄せられている。

http://news.searchina.ne.jp/disp.cgi?y=2011&d=0614&f=national_0614_016.shtml
944デフォルトの名無しさん:2012/07/24(火) 18:01:11.59
jrubyだとbundlerまわりでイライラする
945デフォルトの名無しさん:2012/07/24(火) 18:20:26.30
>>930
おっと 926 です。

みんなの貴重な意見がめっちゃありがたい。

なるほど。forは使わんようにするぞ。
946デフォルトの名無しさん:2012/07/24(火) 19:14:54.97
MRIだとWindowsまわりでイライラする
947デフォルトの名無しさん:2012/07/24(火) 21:27:30.71
File と Pathname って名前が悪いと思いませんか?
Pathname は組み込みにしてしまって File と改名し、
File の方は FileIO あたりに改名した方が良いかと思いますがいかがでしょうか?
mruby とか知らんけど。
948デフォルトの名無しさん:2012/07/24(火) 21:42:07.88
君がFile.openしか使ってないのはよくわかった
949デフォルトの名無しさん:2012/07/26(木) 08:34:27.40
>>947
君がJavaかぶれということがよく分かった
950デフォルトの名無しさん:2012/07/27(金) 01:18:03.87
https://twitter.com/
これ明らかにrailsじゃないの?
ツイッターってrailsから書きなおしたんじゃないの?
951デフォルトの名無しさん:2012/07/27(金) 01:25:35.40
全部書き直したわけじゃないだろう。普通に考えて。
952デフォルトの名無しさん:2012/07/27(金) 01:51:27.09
あるサービスを別の言語に分けて複数の別アプリとしてデプロイして稼働させるのが
なぜ普通なんだ?
953デフォルトの名無しさん:2012/07/27(金) 01:53:29.48
分けたんでなく、置き換えたい部分だけ置き換えたらそうなるでそ
954デフォルトの名無しさん:2012/07/27(金) 05:33:48.48
Railsではよくあること

というかRailsでなくても、
例えばMySQLも別アプリだけど普通だろ?
SQL文投げてあっあっあっってしてるだろ?
そういうこと
955デフォルトの名無しさん:2012/07/27(金) 07:09:01.69
例えがヘタ
956デフォルトの名無しさん:2012/07/27(金) 13:27:21.19
ORMがアンチパターンである11の理由
ttp://tech.a-listers.jp/2011/06/16/orm_is_an_antipattern/
957デフォルトの名無しさん:2012/07/27(金) 16:31:47.93
リファレンスマニュアルの「リテラル」に、

> 式展開中の式は、ダブルクォートなども含めて Ruby の式をそのまま書くことが
> できます。コメントも許されます。
>
> p "#{ "string" # comment }" # => "string"

と書かれているんですが、実際に実行すると、

irb(main):001:0> p "#{ "string" # comment }" # => "string"
SyntaxError: compile error
(irb):1: syntax error, unexpected $end, expecting '}'
from (irb):1

と SyntaxError になってしまいます。
irb のバグかとも思ったんですが、スクリプトファイル書いて実行してもエラーでした。

ドキュメントの方が間違いでしょうか?
958デフォルトの名無しさん:2012/07/27(金) 16:51:35.95
>>957
あ、それはマニュアルが古いな
「式展開の中でも外でも同一のルールが適用されます」が正解
# は行末までがコメントだから、式展開内で現われても「とにかく行末まで」が無視される
だから

p "#{ "string" # comment
}"

は(「# comment\n」が無視されて) "string" という文字列を表示する

p "**#{<<EOS}**"
string
EOS

は「次の行からEOSまで」を表示する
959デフォルトの名無しさん:2012/07/28(土) 08:47:54.15
たのしい開発 スタートアップRuby | Gihyo Digital Publishing
https://gihyo.jp/dp/ebook/2012/978-4-7741-5286-8

ウェブ上では電子書籍版(PDF)を販売開始。
書籍版は7月31日に発売。
960デフォルトの名無しさん:2012/07/28(土) 15:27:09.55
Railsで自社サービス開発してる会社に転職したが糞コードばかりで1日で憂鬱になった。
javascriptをviewに直書きしてたり、
画像をDBに保存してたり、
DBの設計が糞過ぎて1つのテーブルに100個近いカラムがあったり
CSSがカオスでasset pipeline機能すら使ってなかったり

どうしようもなく糞ゴミカス低学歴PGしかいないゴミ会社に転職してしまった
961デフォルトの名無しさん:2012/07/28(土) 15:51:30.43
まぁどれも致命的ではないな。
見た瞬間、

            ____
          /      \                    。    。       。
         /  _ w _\_________  。      。      。
       /    _____| |  ヘ____ヘ_|____ ___
   /⌒|     ((_____.| | Σ ________(○)__(○) バキッ!!
  /   |. ι   (___人__)   | |  '' ,  '  '   , |            。
 |     l\       |   .|    | |           |   。
 ヽ     -一ー_~、⌒) |r┬-|   | |.             |     。    。    。
  ヽ ____,ノ   `ー'´                  。     。        。
となるレベルを体験した俺から言わせればな。
962uy:2012/07/28(土) 19:30:08.08
実際社畜コードで効率化しすぎても
「じゃあこんなに社員PGいらないな」ってなるだけ
まじめに社畜コードかいてるのなんて新人だけ
古参は首をきられないようにもっと別の場所で戦ってるんだよ
その冗長したソースコードにも意味がある
963デフォルトの名無しさん:2012/07/28(土) 20:06:40.97
クズコード書いて他人のアカウントでコミットする鬼畜が居ないだけマシだろW
964デフォルトの名無しさん:2012/07/28(土) 21:03:55.08
繰り返しの書き方を教えて下さい
テキストファイルの中を検索して(←ここまではわかる)
あるテキストに一致する部分があれば実行、一致するものがなければスキップして次へ
という部分で手こずってます
while文だと思うのですが、正規表現をどう組み込んで良いのかよくわかりません
お願いします
965デフォルトの名無しさん:2012/07/28(土) 21:14:18.98
まだやってるのか

>>964
> テキストファイルの中を検索して(←ここまではわかる)
思ってるのはたぶん使い方違います
> while文だと思うのですが
それもたぶん違います

「実行」などという、どこで仕込まれたんだか知らないけど奇妙な概念を捨ててください
テキストファイルに対してやりたいことを

   最後まで

書きなさい
そうすればたぶん誰かが教えてくれます
966デフォルトの名無しさん:2012/07/28(土) 21:16:42.16
open('unko.txt').read.scan(/hae/)

とかすれば取れるだろ
967デフォルトの名無しさん:2012/07/28(土) 21:18:45.54
とりあえず、whileは違うとだけいっておく

一行ずつ読むなら
each_line
いまどこまで書けてるのかソース貼るといいかも
968デフォルトの名無しさん:2012/07/28(土) 21:26:13.92
>>967

while line = gets
 puts line
end

初心者が初心者に教える、いいねぇいいねぇ
969デフォルトの名無しさん:2012/07/28(土) 21:30:06.65
>>968
それは標準入力から1行ずつ読み込んで行単位で処理するとき「のみ」のかなり限定された書き方だ
通常は使わないし、それが書いてあったら何らかの特殊な用途のスクリプトだと警戒する
970デフォルトの名無しさん:2012/07/28(土) 21:39:40.87
>>969
普通に使いまくりだし、警戒って何を警戒するのよw
あ、もしかしてパイプとかフィルタとか普段使わない人?
だとしたら有り得るかも。
乳首いじるみたいにマウスばっかりカチカチしてるんでしょ。
えっちな香具師め。
971デフォルトの名無しさん:2012/07/28(土) 21:43:57.12
ワロタw
972デフォルトの名無しさん:2012/07/28(土) 21:44:03.51
おらプログラムは黙って標準入力から呼んで標準出力に書けって教わっただよ
973デフォルトの名無しさん:2012/07/28(土) 21:45:37.36
いいんだよ、いいんだよ
一番不幸なのは間違いを教えてもらえないこと
漏れはまちがってたら教えてあげるし
俺が間違ってたら誰かがおしえてくれる
そのかわりボランティアだ
だから対価として煽り、すかっとさせてもらうゼ!
974デフォルトの名無しさん:2012/07/28(土) 21:49:32.20
乳首の悪口はやめろ...!
975デフォルトの名無しさん:2012/07/28(土) 21:50:28.38
「行単位」の意味が読めないと辛いな
976デフォルトの名無しさん:2012/07/28(土) 21:52:51.80
夏だなぁ・・・
977デフォルトの名無しさん:2012/07/28(土) 21:57:01.74
>>975
>>964が詰まってる理由もそこだろうなあとは思うんだが

2012年現在、行指向でテキストファイルを「すこしずつ」読むメリットは薄い
標準入力から全文をreadしてメモリに読み込んだほうが学習上も便利だろう
978デフォルトの名無しさん:2012/07/28(土) 22:00:24.66
つ バファリン
979デフォルトの名無しさん:2012/07/28(土) 22:04:53.40
どうせ複数行を跨いでマッチできないとかカウントできないとかそんなんだろ
>>968みたいなの使ってるならそれは捨てろ
980デフォルトの名無しさん:2012/07/28(土) 22:15:14.61
そろそろ質問者でてこいよ
981デフォルトの名無しさん:2012/07/28(土) 22:15:16.98
HTMLとXMLが広まって以降、行指向スクリプトはすっごく書きにくくなって、使いどころが減った
メモリばっか食いやがって
982デフォルトの名無しさん:2012/07/28(土) 22:33:06.06
DOS時代じゃあるまいし、いまどき>>968みたいにCPU時間を犠牲にしてまで省メモリするのはちょっと
よっぽどなサーバ用途ならまだしも

ふつうの人はぜんぶ一気にメモリに読み込んでscanなりreadlinesなりeach_lineなりが妥当
983デフォルトの名無しさん:2012/07/28(土) 23:10:53.61
top -bを全部読みしてハマったのはいい思い出
984デフォルトの名無しさん:2012/07/29(日) 00:15:06.35
そうはいってもwhile gets とかやってるサンプルは未だに見かける
985デフォルトの名無しさん:2012/07/29(日) 03:42:16.59
読み込むテキストが巨大でメモリに全部乗らないとかなら
話は変わってくるけど、ただそのオーダーのテキストをさばくのは
Rubyでは厳しいケースも多いだろう
986デフォルトの名無しさん:2012/07/29(日) 12:17:32.84
Rubyベストプラクティスによると
そういう場合はIO.foreachを使ってループ処理することで
パフォーマンスと扱いやすさの両方を確保できる。らしい
987デフォルトの名無しさん:2012/07/29(日) 13:32:49.41
>>984
言いたくはないけどPerlとの関係でいろいろある
しかもwhileのgetsだとRubyのルールや文法をほとんど使わない
たとえば

text = File.open('foo.txt', 'rb'){|f| f.read}

に詰め込まれている「"新しく"覚えなければならない特別なルール・記法」は山ほどある
(ARGFからreadしてもいいんだけど、まあ、それでもそんな変わらない)
これが

while line = gets
...
end



cat foo.txt | ruby a.rb

の組合せになると激減する
ひょっとするとRubyを一度も使ったことがなくても他言語の知識で使えるかもしれない
そんなわけで、Rubyを本当は使いたくない人のサンプルとか、Rubyを本当はよく知らない人のサンプルとかにはよく出る
あと新スレ
988デフォルトの名無しさん:2012/07/29(日) 13:36:14.96
ARGFならまだしもファイル名指定は芋すぎる
989デフォルトの名無しさん:2012/07/29(日) 13:48:27.82
例示のそんなところに拘ってどうする
openに渡すfilepathを一旦変数にしたらガードのために数十行くらい条件判定分岐処理がつけられて、
それがないのはカスだとも言えるが、そういうとこは別に本質ではあるまい
990デフォルトの名無しさん:2012/07/29(日) 13:55:19.04
仙人レベルになるとあえて
while line = gets
...
end
を使ったりするんだよ。
991デフォルトの名無しさん:2012/07/29(日) 14:26:50.97
while gets だって覚えることは多いんだがなあ
992デフォルトの名無しさん:2012/07/29(日) 14:35:19.11
Ruby 初心者スレッド Part 50
http://toro.2ch.net/test/read.cgi/tech/1343539588/

テンプレ補完必要があればおねがい

>>989
むしろ本質
ファイル名をハードコーディングしたらruby foo.rb < bar.txtできない
また一気読みでは稼働中サーバの出力をフィルタして随時出力できない
while getsはruby -nでも使われてる

要はwhile line = gets; はフィルタの王道
993964:2012/07/29(日) 16:13:36.45
質問しといて夏バテで死んでましたすみません
やりたいことはWEBサイトからテキストを取ってくることです
ruby1.8でメカナイズ使ってます
FacebookやTwitterによくある「もっと読む」みたいなテキストをクリックしていきたいのです
文字列を検索してクリックする、というところはできてます
ただ、「もっと読む」をどんどんクリックしていって全部を表示し終えると、
最終的に「もっと読む」って表示されなくなるじゃないですか
そこまで行ったら、次の処理(テキスト全体から必要な部分を取ってくること)に移りたいのです
CとMATLABをちょっといじったことのある初心者です。おねがいします。
994デフォルトの名無しさん:2012/07/29(日) 17:55:01.34
>>993
そもそもテキストファイルって書いてる時点で間違っていたことに気づきました
ほんとすみませんです。
995デフォルトの名無しさん:2012/07/29(日) 17:58:53.87
>文字列を検索してクリックする、というところはできてます

これが意味不明。実装できてるところまでのソースを晒してみ。
一般的には非同期のページングと同じ考え方で実装するけど
何か全然違う方法でやってるみたいだからソース見ないと意味分からない。
996デフォルトの名無しさん:2012/07/29(日) 18:06:19.68
agent = Mechanize.new
page = agent.get('http://aaa.com/')
agent.page.link_with(:text => 'もっと読む'.toutf8).click
こんなかんじです
997デフォルトの名無しさん:2012/07/29(日) 18:07:26.50
で、これを「もっと読む」が出てくる限り繰り返したいのです。
998uy:2012/07/29(日) 22:48:12.85
ume
999デフォルトの名無しさん:2012/07/29(日) 22:49:56.99
test
1000デフォルトの名無しさん:2012/07/29(日) 22:51:50.68


        ,,.. -──-- 、.,_
     ,. '"::::::::::::::::::::::::::::::::::::`ヽ.
     ,.':::::::::::::::::;::::::::::::::::::::::::::::::::::ヽ.
   /__二ニ=-ハ::::::i:::__i_::::::、::::::::::::',
   /:::/::::::ハ::::::! !::::ハ::__!_::::::::';:::::::::::i
   i::::i:::::/!:,!ニ、! L:! ',.‐;.、ヽ!::::i:::::::::::|
   |::::!:::ハ i' i'`!    ト r! ' !__」::::::i:::|
  └-iヽ::! ゞ' ,     `''´,,, |::::!::::::::|:::|    はたらきたくないでござる
     .|::::7"   r─、    .レi::::::::::|:::|
    レ'iゝ、   ヽ.__」   ,イ:::|::::::i::::|::::|
      !::::!::i:>ー-r   i;:-!::::|::::::|::::|::::|
       |::::|::::::rイ´!__/  |::::ト.、::|::::|::::|
       |::::|>'´}><{.、  |::::|/ヽ:::|::::|
      !ヘ|ヽ、/_」L_ゝ `ヽレ'   ';:|:::::|
      !/ !/  oio     i     ';::::::|    
     /  r/'⌒i       !.     ヽ::::!
    / ,-rイ、___,ノ._     ハ       \!
    !/ | l ,ィ'l |o     _,.!',      `'r、
     |. | l'´::::l |<{_____,.イ'" ヽ::',      //、!
    ゝ、ヽヽ-'ハ_____,,.ハ__,.イヽ;\   //っ )
     !::7'ー´:::!:::::::::::::!::::::::::::::::ヽ;:`Y´「T´
      |:/:::::/:::::!::::::::::::::!::::::::::::::::::::ヽ;:!::::!::|
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。