Ruby 初心者スレッド Part 49
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2012/05/09(水) 05:04:47.69質問するときは、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/
0002デフォルトの名無しさん
2012/05/09(水) 05:17:50.97http://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
0003デフォルトの名無しさん
2012/05/09(水) 05:19:24.03http://www.ruby-lang.org/ja/news/2012/04/20/ruby-1-9-3-p194-is-released/
0004デフォルトの名無しさん
2012/05/09(水) 06:14:32.82・ エディタ初めてならRubyスクリプトをを着色してくれる(できればオートインデントの)エディタ好きなの選べ
・ いわゆるIDEはRubyの学習に際しては恐ろしくコスパが悪いのでRubyのためだけに新規導入するのはお勧めしない
Q. XXX を使ってるんですが Ruby も覚えたほうがいいんでしょうか?
A. 好きにしろ
0005デフォルトの名無しさん
2012/05/09(水) 10:20:59.600006uy
2012/05/09(水) 11:06:06.87double型を返す関数や、double型の引数を取る関数を
Rubyから呼び出すにはどうすればいいんでしょうか?><
INTしか受け取れません
p Win32API.new("Lib.dll", "_RadToDeg", "i", "i").call 30
0007デフォルトの名無しさん
2012/05/09(水) 11:42:48.250008uy
2012/05/09(水) 11:54:38.080009デフォルトの名無しさん
2012/05/09(水) 21:58:15.29#<Hoge:0x0000000c9c12e0>
0x0000000c9c12e0ってアドレスの値ですか?
0010デフォルトの名無しさん
2012/05/09(水) 22:24:20.75sprintf("#<%s:%p>", cname, (void*)obj)
みたいな感じなので、ポインタ値。
大抵のポインタの実装はアドレス丸出しなのでアドレスと思ってよいでしょう。
0011デフォルトの名無しさん
2012/05/10(木) 10:55:36.60対象外にする。
変換対象の文字列は13<aa12><444>1なかんじで
正規表現でhogehoge<aa12>hogeにしたい。
そのような正規表現はどう作ればいいのですか?
うまくいかない
0012デフォルトの名無しさん
2012/05/10(木) 10:58:54.3813<aa12><444>1 の文字列を hogehoge<aa12><444>hoge
に変換です。
宜しくお願いします。
0013デフォルトの名無しさん
2012/05/10(木) 11:22:23.09=> "hogehoge<aa12><444>hoge"
<>のネストが無いならこうかな?
0014デフォルトの名無しさん
2012/05/10(木) 13:30:15.01File::stat#modeでファイルモードが返ってきますが,
6桁の数字のうち上位3桁の意味が分かりません。
「040755」となっている場合,多分下3桁はいわゆるrwxのことだと思うのですが,
040についてどうやって調べればいいのか。
おこたえいただけるとうれしいです。
0015デフォルトの名無しさん
2012/05/10(木) 13:45:17.74man stat(2)
って言ったらわかる?
001614
2012/05/10(木) 14:02:03.49ありがとうございました。わかりました。
6桁ではなく7桁でしたね。040はディレクトリということがわかるようになりました。
0017デフォルトの名無しさん
2012/05/12(土) 03:05:20.98ここからどうすればいいのでしょうか?
# 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)
0018デフォルトの名無しさん
2012/05/12(土) 03:13:48.21ガッ
0019デフォルトの名無しさん
2012/05/12(土) 07:29:23.22こちらから聞きさえすれば、いちおうのヒントは教えてくれる
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ではない)してくれる方法は誰か偉い人が教えてくれるはず
002017
2012/05/12(土) 11:52:25.48「ぬるぽ」だとinvalid multibyte charが出たので「nullpo」にしてみたら
nullpo - Google 検索 と出てきました
0021デフォルトの名無しさん
2012/05/12(土) 11:56:57.91なぜShift_JISで保存した
0022デフォルトの名無しさん
2012/05/12(土) 12:01:35.44は、このファイル「が」 UTF-8 で書かれているという意味の指示記述
UTF-8 「を」読み込むとか UTF-8 「で」表示するという意味ではない
このファイル「が」 UTF-8 で書かれていないのなら、UTF-8 以外を指定するべきだな
Windwos のようだから、 CP932 が妥当なのか
0023デフォルトの名無しさん
2012/05/12(土) 12:57:12.990024uy
2012/05/12(土) 12:58:12.30Mechanizeでやったほうが999999999倍マシ
0025デフォルトの名無しさん
2012/05/12(土) 16:11:33.32さらに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の差異については、歴史的経緯を紐解かなければならなくなったら自分で調べるだろう
0026デフォルトの名無しさん
2012/05/12(土) 18:16:14.52この解説のスクリプトを起動したいのですが
下部のソースコードを起動しても
: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 ...
と出てうまく起動しません
エラー文を調べたところ構文エラーらしいのですが
どう直せばよいのでしょうか?
0027デフォルトの名無しさん
2012/05/12(土) 18:30:22.85なんかlzhのデータファイルが別途必要なんだけどそれはあるのね
lzhコマンドも必要だけどインストールしてあるのね
HTMLの<p>タグを取り除いてRubyスクリプトとして適切に改行を揃えればいいんだけど、たぶんそれを自力でできるほどの知識がないのよね
レスとして貼るには長いな
0028デフォルトの名無しさん
2012/05/12(土) 18:31:20.030029デフォルトの名無しさん
2012/05/12(土) 18:35:17.44大学でCなんかはかじったレベルなんですが
Rubyは触った事無いです・・・これを機に少し勉強しようかなとも思ってます。
lzhはデータファイルはinフォルダに格納してあります。
解凍にLHAが必要ということでLHA32をダウンロードしています。
コマンドプロンプトで実行したところ解説ページと同バージョンでした。
>>28
ありがとうございます。
とりあえずTerapadで<p>タグを消して改行して揃えてみます。
0030デフォルトの名無しさん
2012/05/12(土) 18:38:14.20やってみるとわかるけど、それだけでは動かない
コメント避けて改行つけないといけない
0031デフォルトの名無しさん
2012/05/12(土) 18:47:22.59エラーは消えました。
今度は3行目でsyntax error, unexpected tIDENTIFIER, expecting $endと出ました。
改行コードがダメらしいんですね。 難しいです
0032デフォルトの名無しさん
2012/05/12(土) 18:51:25.19require '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
0033デフォルトの名無しさん
2012/05/12(土) 18:52:06.45tp = 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
}
0034デフォルトの名無しさん
2012/05/12(土) 18:53:13.72outfile1.close
log.info("調教時計抽出終了")
# この上の空行まで
>>32-34
のスクリプト部分をてきとうにエディタにコピペ
0035デフォルトの名無しさん
2012/05/12(土) 19:11:21.03ありがとうございます!
早速実行しましたが
:16: in `initialize' : No such file or directory - C:\調教時計分析\work\kol_den2.kd3 (Errno::ENOENT)
と出ました。自分なりに色々しらべてみようと思います。
0036デフォルトの名無しさん
2012/05/12(土) 19:52:56.34inフォルダにあるlzhファイルを解凍
解答したファイルをworkフォルダに格納
これが出来てないんですね・・・
この場合どこを見ればいいんでしょうか?
0037デフォルトの名無しさん
2012/05/12(土) 20:05:41.55こんなスクリプト作ったらいかんよ
system(cmd) を
p cmd; system(cmd)
に書き換えて、文字列 cmd が lha32 のコマンドラインとして妥当かどうか確かめるのが妥当かなあ
0038デフォルトの名無しさん
2012/05/12(土) 20:24:14.44同じエラー文が返って来ました。
コマンドラインとして妥当ではないということなのでしょうか?
0039デフォルトの名無しさん
2012/05/12(土) 20:32:20.05p cmd で変数 cmd の内容が標準出力に表示されたはずだ
system() は引数の文字列をそのままシェルに渡す
シェルに渡されるはずだった cmd はコマンドラインとして妥当なものだったか? ディレクトリ指定などは誤ってないか?
ということを聞きたかったのだと思われる
0040デフォルトの名無しさん
2012/05/12(土) 20:58:26.89# -*- 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がちゃんとインストールされてない"
0041デフォルトの名無しさん
2012/05/12(土) 21:01:08.39"lha32 x -nc C:\\調教時計分析\\in\\kd3_hb110105.lzh C:\\調教時計分析\\work\\"
というコマンドラインが出力されました。
解凍する対象のlzhファイルと
解凍後のフォルダの格納位置を指定していると思うのですが
このフォルダ指定は合ってます。
ということはうまく解凍されていないということなんでしょうか・・・?
0042デフォルトの名無しさん
2012/05/12(土) 21:02:45.58エラー lha32がちゃんとインストールされてない
と出ました。インストールミスのようですね・・・もういっかい確認してきます
0043デフォルトの名無しさん
2012/05/12(土) 21:09:52.99コマンドプロンプトから「LHA32」を実行してバージョンが2.67.00であることを確認する。
という一文があって
実際にLHA32を入力するとLHA32 version 2.67.00 for test と出ます。
もしかしてこれだけではインストールされていないんでしょうか?
0044デフォルトの名無しさん
2012/05/12(土) 21:18:18.52OS再起動したら直るかもしれない
手元のマシンにはlha32インストールできないから俺はこれ以上ワカンネ
0045デフォルトの名無しさん
2012/05/12(土) 21:24:57.95lha32.exe のあるディレクトリで lha32 と入力すればそりゃ動く
インストール後はコマンドプロンプト流用せずに一旦全部閉じろ
0046デフォルトの名無しさん
2012/05/12(土) 21:32:55.41再起動してみました上手くいきませんでした・・・
>>45
すいませんやり方を詳しくお願い出来ますか?
0047デフォルトの名無しさん
2012/05/12(土) 23:37:29.570048uy
2012/05/13(日) 04:16:39.170049デフォルトの名無しさん
2012/05/13(日) 07:09:02.38/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はインストールしてるんだけど・・
なんで?
0050デフォルトの名無しさん
2012/05/13(日) 08:58:44.48答えは簡単
0051デフォルトの名無しさん
2012/05/13(日) 09:13:48.12libyaml-devel 相当が必要
CentOS 標準では提供されてないので、epel を有効にしないといけない
openssl-devel と zlib-devel と readline-devel と gdbm-devel あたりも入れとけ
0052デフォルトの名無しさん
2012/05/13(日) 09:30:01.19lha32はいろいろバージョンがあるからなあ
自動でパス設定しないものもあるかもしれん
どのディレクトリでもlha32が使えるのなら、Rubyからでもlha32は使えるはず
最悪な場合はlha32.exeを直接ダブルクリックしてるのかもしれんし
0053デフォルトの名無しさん
2012/05/13(日) 09:36:23.98環境変数でpathをちゃんと指定しなかったのがどうやら原因だったみたいです。
設定後は無事スクリプトが起動しました。
お手数をかけて申し訳ありませんでした。
スクリプトを見て頂いたり原因を探ってくれた方々本当にありがとうございました!
0054uy
2012/05/14(月) 06:48:13.19storeだと1個ずつしか追加できません
何かいい方法あればおしえてください
(ちなみにaのハッシュをbで上書きしたいです)
a={ x:2 , y:8 }
b={ x:3 , y:4 , z:6}
0055デフォルトの名無しさん
2012/05/14(月) 07:49:31.270057uy
2012/05/14(月) 08:19:07.280058デフォルトの名無しさん
2012/05/14(月) 08:53:05.450059デフォルトの名無しさん
2012/05/14(月) 08:55:23.80最新のlibyamlを自前コンパイルしてしまうというパターンも多いみたいね
0060デフォルトの名無しさん
2012/05/14(月) 11:38:02.02有難う、でけた
0061デフォルトの名無しさん
2012/05/14(月) 15:13:31.790062デフォルトの名無しさん
2012/05/14(月) 20:53:27.72これってRubyの開発者が用意したプラグインみたいなもんなの?
0063デフォルトの名無しさん
2012/05/14(月) 20:57:36.92個々にやると使うのめんどくさいのでgemという系統立てたシステムに乗っけるのが主流
"信用できない"のなら使うべきではない、特にバイナリ
0064デフォルトの名無しさん
2012/05/15(火) 01:34:25.64WordPressのプラグインみたいにネットにアクセスしてダウンロードする機能があったら、
ソフト自体も軽くなって更に便利だろうに。バージョンアップも対応できるし。
0065デフォルトの名無しさん
2012/05/15(火) 09:17:23.110066デフォルトの名無しさん
2012/05/15(火) 11:02:22.19配列から正規表現を使って一致する要素を抽出したい時は
each などを使って1つずつチェックしていく方法が普通なのでしょうか?
0067デフォルトの名無しさん
2012/05/15(火) 11:21:52.95「そういえばどっかにそんな処理のできるメソッドがあった気がする」とわかるだけでかなり違う
というわけで Array#grep か Array#find_all あたりを使え
0068デフォルトの名無しさん
2012/05/15(火) 11:55:57.90Array#grepなんて便利なのがあったのですね。
ありがとうございます。
0069デフォルトの名無しさん
2012/05/15(火) 12:13:24.78同じコンソール(同一ユーザ、同一環境)で、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」なら何の問題もない(ように見える)
こんな事ってあるの?
0070デフォルトの名無しさん
2012/05/15(火) 12:14:42.83open("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に変換してしまうのは何故ですか?
0071デフォルトの名無しさん
2012/05/15(火) 12:33:30.27平気
0072デフォルトの名無しさん
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で保存した時に、マジックコメントなしでもマルチバイト文字が使えちゃうのは、
何か意味があるんでしょうか?
0073デフォルトの名無しさん
2012/05/15(火) 12:43:46.20UTF-8にはもともとBOMは存在しない
UTF-8とBOMつきUTF-8という列挙が妥当
BOMつきUTF-8をUTF-8と呼ぶのは意思疎通上たいへん危険
0074デフォルトの名無しさん
2012/05/15(火) 12:52:35.34それじゃBOMつきのUTF-8は気にしない事にします
0075デフォルトの名無しさん
2012/05/15(火) 12:53:28.90なんかの関係で直接rubyを呼ぶとGEMPATHかなにかの環境変数がセットされないんだろう
0076デフォルトの名無しさん
2012/05/15(火) 15:04:07.49ダックタイピング出来るのが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詳しくないとは言え、この動作がおかしいのだけは理解できる
0077デフォルトの名無しさん
2012/05/15(火) 15:15:43.43・Rubyは基本的にforを使わない
・Rubyにおいて文字列と配列には全く関連性がない
・そもそもRubyの文字列は文字の集合ではない
なので、ダックタイプとかの問題ではなくて文字列を文字の集合と扱うか否かの問題
0078デフォルトの名無しさん
2012/05/15(火) 16:00:46.88Haskellでマルチバイト文字列のlengthやってみて
0079デフォルトの名無しさん
2012/05/15(火) 16:07:05.75mylength('あいう'.chars) #=> 3
mylength('あいう'.bytes) #=> 6
mylength('あいう'.lines) #=> 1
文字列・バイト列・行の集合等複数の見方が有るからちゃんと指定しましょうってことよね
0080デフォルトの名無しさん
2012/05/15(火) 16:09:03.310081デフォルトの名無しさん
2012/05/15(火) 16:10:12.830082デフォルトの名無しさん
2012/05/15(火) 16:16:17.74でも行列とか言うと別の物に聞こえるからなあw
行の列?これもあんまり言わない気がする
0083デフォルトの名無しさん
2012/05/15(火) 17:34:26.98Ruby1.9はBOM付きUTF-8に対応していて、マジックコメントを付けたのと同じ効果がある
BOM付きUTF-8はトラブルの元なのであまりお勧めはしないけど
0084デフォルトの名無しさん
2012/05/15(火) 18:24:50.32の、インストール先ディレクトリを指定することはできますか。
できれば環境変数で export GEM_HOME=... とか指定できるとうれしい。
0085デフォルトの名無しさん
2012/05/15(火) 19:24:24.25なにこの超絶機能。
…ところでみんなRubyで何やってんの?w
0086デフォルトの名無しさん
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なんてのはないし・・・?
よろしくお願いします
0087デフォルトの名無しさん
2012/05/15(火) 22:47:28.68<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>
この場合です。すいません
0088デフォルトの名無しさん
2012/05/15(火) 22:48:20.21趣味で構文解析器(GLR)を作ってたらハッシュ値のバグ(仕様?)でハマった
異なるオブジェクトのハッシュ値が同じ値になる…
p [-610054458, 111138, 1, 7].hash #=> -976846141
p [-610054458, 111138, 3, 3].hash #=> -976846141
ハッシュ値が偶然ぶつかるほど大量のオブジェクトを扱ったつもりはないのに…
0089デフォルトの名無しさん
2012/05/15(火) 22:53:10.45バグだとしても、扱うときには基本的に衝突する可能性を考慮しなきゃいけないのがハッシュなんだから
ハマったのはある意味幸いじゃね?
0090デフォルトの名無しさん
2012/05/15(火) 23:05:18.55#--------------------------------------------------------------------------
# ● セーブ内容の作成
#--------------------------------------------------------------------------
def self.make_save_contents
contents = {}
contents[:system] = $game_system
-----略--------------
contents[:map] = $game_map
contents[:player] = $game_player
contents
end
「end」の上の「contents」はどういった意味があるのでしょうか?
初歩的な質問ですみません。
よろしければ御教授下さい。
0091デフォルトの名無しさん
2012/05/15(火) 23:09:30.30doc.xpath("//tr/td[2]")
>>90
そのメソッドを呼びだした側に値(contents)を返してる
Rubyでは関数の最後の式(の値)を呼びだした側に返す
0092デフォルトの名無しさん
2012/05/15(火) 23:10:58.98Rubyのメソッドは、とにかく最後の処理の値がメソッドの戻り値として利用される
最後の行に唐突に変数が1個だけ書いてあったとしたら、それは他の言語で言うところの return var だ
Ruby では「さいごの return」は通常書かない(もちろん、処理構造から途中で抜ける場合は書く)
てことで、「特異メソッドmake_save_contentsの戻り値はcontents」という意味
0093デフォルトの名無しさん
2012/05/15(火) 23:11:09.67ごめんぼけた。doc.xpath("//tr/td[2]")[1].text
0094デフォルトの名無しさん
2012/05/15(火) 23:15:02.43ご回答ありがとうございます。
C言語のreturnなのですね。
凄く省略されててビックリです。
0095デフォルトの名無しさん
2012/05/15(火) 23:24:26.67ありがとうございます。できました。
ググっても初歩すぎるのか方法がわからずに困ってました。
ありがとうございました!
0096デフォルトの名無しさん
2012/05/15(火) 23:25:40.46丁寧な説明ありがとうございます。
凄く難しい言語ですね。
Cのポインタより難しいです。
0097デフォルトの名無しさん
2012/05/15(火) 23:44:00.47[2, 8, 1, 1].hash #=> 41
これは配列をキーとしたハッシュは使うなということだろうか
0098デフォルトの名無しさん
2012/05/15(火) 23:45:59.770099デフォルトの名無しさん
2012/05/16(水) 12:00:34.84hoge huga piko peta 改行
という、半角スペースが1つの場合も2つの場合もある文字列を
カンマ区切りにする方法は無いでしょうか?
「hoge,huga,piko,peta」
最終のイメージはこんな感じです。
0100デフォルトの名無しさん
2012/05/16(水) 12:34:50.17a="hoge huga piko peta ¥n"
a.sub(/ +¥n/, "¥n").gsub(/ +/, ',') #=> "hoge,huga,piko,peta¥n"
で桶?
0101デフォルトの名無しさん
2012/05/16(水) 13:48:03.17教えていただいたコードから、私が当初やっていたことが完全に誤りで無いことがわかりました。
それでもさっぱりできないので、元のエンコードを変えてみたら、
スペース1つと2つではなく、スペースとノーブレークスペースが混在していました。
無事[\u00A0]を使って変換できました。
ヒントがなければ、書き方の問題だと思って、ずっと解けないままでした。
ありがとうございました
0102デフォルトの名無しさん
2012/05/16(水) 13:57:37.63ヒントのお陰で、コードの書き方が問題だったのではなく、
元の文字列がおかしかった(把握できていなかった)ということがわかりました。
ありがとうございます。
が、正しいですねw
0103デフォルトの名無しさん
2012/05/16(水) 14:04:12.79-Ku
0104デフォルトの名無しさん
2012/05/16(水) 15:38:47.13"hoge huga piko peta 改行".split
0106デフォルトの名無しさん
2012/05/16(水) 23:50:21.49ネットに情報が少ないな。
公式の解説は何考えて作ったんだか分からんくらい、わかりにくいし。
あれって、読んで分かる人いるの?w
最低でもサンプルくらいほしいわ
0107デフォルトの名無しさん
2012/05/16(水) 23:59:12.88試しにどこで詰まったか書いてみれ
0108デフォルトの名無しさん
2012/05/17(木) 00:44:21.03しっかりと希望通りに動いてるw
でもサンプルが少ないから、海外のサイトをGoogle翻訳の世話になりながら頑張ってるw
010969
2012/05/17(木) 08:50:30.59#!/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表示と同じ。
同じ事例か、原因か、直し方、教えて
0110デフォルトの名無しさん
2012/05/17(木) 09:27:04.38which ruby
0111デフォルトの名無しさん
2012/05/17(木) 12:05:24.68こんな配列があって
sample_array.each do |var|
new_var = #varに対していろんな処理
print new_var
end
こうすると1つずつ書きだしてくれるのはいいんだけど、
書きだすんじゃなくて「new_var」を新しい配列にする方法ってどうするんですか??
整形した値を持つ変数をループの外で使いたいんです。
0112デフォルトの名無しさん
2012/05/17(木) 12:21:26.44「そういえばどっかにそんな処理のできるメソッドがあった気がする」とわかるだけでかなり違う
というわけで 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
「○○した新しい配列を返す」というメソッドで適当なの探してみ
0113デフォルトの名無しさん
2012/05/17(木) 12:27:41.90最新のrailsを単品で入れて動かしたいのですが
rubyではアプリというのはgemから入れないと動かせないような仕組みでしょうか?
gemでrailsを複数いれたりしたらおかしくなりますよね?
どうにかrailsの最新版をためすほうほうはありませんか?
0114デフォルトの名無しさん
2012/05/17(木) 12:32:47.07「ArrayとHashとStringとEnumerableのメソッドは1行の動作説明」
一応ざっと目を通したんですが、ちゃんと覚えるまで見返しますw
0115デフォルトの名無しさん
2012/05/17(木) 12:41:35.00gemはそれを実行したrubyの位置と環境変数で区別できる
つまり、「別のruby」を別な環境変数ごと別途インストールするのがいちばん簡単
pikでどうだろう
というかRailsはRailsスレのほうが日常的に使い倒してる人がいて質問にも便利かと思う
【RoR】Ruby on Rails Part14
http://kohada.2ch.net/test/read.cgi/php/1329492840/
0116デフォルトの名無しさん
2012/05/17(木) 13:01:04.19pikを使ってみます
あと分からないことがあったらそちらで聞いて見ます
0117デフォルトの名無しさん
2012/05/17(木) 13:10:08.63Enumerableは便利メソッドの宝庫なんで慣れても良く見に行くよ
0118うy
2012/05/17(木) 13:55:55.29[1,2,3] ,
[33,44,55] ,
]
.inject [] do | u , y |
u << y.map do | uy |
uy*10
end
end
p yu
0119デフォルトの名無しさん
2012/05/17(木) 15:50:55.44puts "予定"
を実行してもエラーも文字化けも起きません
RubyはShift_JISの5C問題に対応しているからでしょうか?
0120デフォルトの名無しさん
2012/05/17(木) 16:29:10.81整形してから保存するってのを作ったんだけど、
コマンドプロントで動かしてるけど、意外に時間かかるね。
他に早く処理できる実行方法とかあるの?
0121デフォルトの名無しさん
2012/05/17(木) 17:24:52.00環境変数に RUBYOPT=-Ks とか書いてあるんじゃない?
無効にすれば普通に化けたりするはず
0123デフォルトの名無しさん
2012/05/17(木) 19:39:10.84あらかじめ保存してある画像とテキストを読み込んで処理しても遅かったならまたおいで
0124デフォルトの名無しさん
2012/05/17(木) 21:17:29.91どのような使い方をするのでしょうか?
def [](id)
@list[id] = aaaa.new(id) if @list[id].nil?
return @list[id]
end
0125デフォルトの名無しさん
2012/05/17(木) 21:27:41.90c = C.new
c[arg]
というようにHashのキーやArrayの添字のようにアクセスさせたい場合、特別に
class C
def [](arg)
...
end
end
というようにメソッドを定義する
0126デフォルトの名無しさん
2012/05/17(木) 22:07:33.09Class B
def keys
return [] if AAA[@id].nil?
if AAA[@id].is_a?(Hash)
return AAA[@id].keys.sort
end
return []
end
end
>>125
ご回答ありがとうございます。
検索にも引っかからないので助かりました。
0127デフォルトの名無しさん
2012/05/17(木) 22:16:45.37何をって、字面通り空の配列だが…
0128uy
2012/05/17(木) 22:28:20.29p [] == 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
0129デフォルトの名無しさん
2012/05/17(木) 22:29:03.07たのしいRubyでも買っちゃったほうがいいと思うよ。Webで済ませたいならこれか
http://www.ie.u-ryukyu.ac.jp/~kono/software/s04/tutorial/
0130120
2012/05/17(木) 22:38:19.05ローカル環境で試したらさっくさく動きましたw
しかしRubyはすごいね。こんな簡単で多様性を持った言語って他にないな。
って何個かしか言語しらんけどw
あとこの掲示板のサポート体制が神w
0131デフォルトの名無しさん
2012/05/17(木) 22:57:35.70ありがとうございます。
空の配列を返す意味がよく分からないですが
0でもいいような気もします。
>>130
表記が簡単ですが、検索に引っかかりにくいので
Webでの学習は難しいかな。
0132デフォルトの名無しさん
2012/05/17(木) 23:04:37.98場合によって数値を返したり配列を返したりと変わると面倒だろ?
もちろん場合によって返す型が変わるメソッドも書けるのはRubyの利点でもあるが
どの場合でも配列を返す、と統一されてるほうが基本的には利用し易いと思うよ経験上
0133デフォルトの名無しさん
2012/05/18(金) 00:32:44.66全然upするようなものじゃないですw
でも、「こう来たらこう」「さらにこの時はこう」「残念、そのイレギュラーも想定済みだ」
みたいな感じで意図した通りに動くプログラムを眺めるのって快感だw
0134デフォルトの名無しさん
2012/05/18(金) 01:30:06.58別になにを返してもいいよ
そのメソッドの戻り値をどうやって使うかという設計にのみ依存する
中身の入った配列か空の配列を返す、という構造の場合、アテにしてる動作の根拠はこれだ
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
というめんどくさい記述に書き換える
0135デフォルトの名無しさん
2012/05/18(金) 02:10:28.06そのメソッドやクラスがどういう場面で使用されるか、をよく考えた上で自分で決めるしかない
B#keysが[]を返すのは、空のHashに対するHash#keysが[]を返すことからの類推と、
そのB#[]の作者が[]メソッドに照会の機能を持たせてるからだと思う
メソッドの戻り値の内容はこっちで吟味するからとりあえず配列を返しといて下さい、という
0136デフォルトの名無しさん
2012/05/18(金) 10:50:05.63Rubyは1つだけインストールしてgemだけ複数の環境を用意する方法ってございませんか?
HDDの容量の都合でRubyを環境ごとにインストールするのが厳しいです
0137デフォルトの名無しさん
2012/05/18(金) 10:58:50.42bundle使えば良さそうな気がする
0138デフォルトの名無しさん
2012/05/18(金) 11:01:37.230139デフォルトの名無しさん
2012/05/18(金) 11:04:12.10あ、pikってrubyのソース玉も保持するんだっけ?
環境変数 GEM_HOME を環境ごとに設定してインストールし、環境変数 GEM_PATH を欲しい環境ごとに設定して利用すれば理屈上はいける
WebサーバでRailsを起動するのに環境変数を任意に設定する方法があるのかどうかまでは知らない
>>137の言うようにbundlerでもなんとかなったと聞いた記憶があるけどWindowsで動作するのかとかはよく知らない
0140デフォルトの名無しさん
2012/05/18(金) 11:04:23.32ありがとうございます
0141デフォルトの名無しさん
2012/05/18(金) 11:26:55.37>>138さん
>>139さん
>>140さん
レスを読んでたらちょっと気になることがあるので質問させてください
RubyInstallerのzip版をC:\Ruby193に手動で入れてるんですが
環境変数のpathにC:\Ruby193を入れてからdevkitをインストールしました
GEM_HOMEというのは今まで入れないで使ってきたのですが登録しないとダメでしょうか?
0142デフォルトの名無しさん
2012/05/18(金) 11:43:17.54何らかの処理をさせる事ってできませんか?
0143デフォルトの名無しさん
2012/05/18(金) 11:46:20.85デフォルトでgemのインストール先とかは設定されているからダメじゃないよ。
(インストール先を変更する必要があれば設定する)
現在のgem環境は、
gem environment(gem e でもOK)
で確認できるから見るといいよ。
0144デフォルトの名無しさん
2012/05/18(金) 11:49:24.70日本語文献が少ないんだよな
GEM_HOME と GEM_PATH は gem のデフォルト動作を変更するのに使う
なにも設定しなかった場合、gem ライブラリは実行に使った ruby.exe から見て ../../lib/ruby/gems (つまり{RUBYDIR}/lib/ruby/gems)にインストールされる
これを変更したい場合は GEM_HOME を設定することで変更することができる
GEM_HOME 以外にも指定方法があったはずで、確か GEM_HOME は使わないでというのがあった記憶がうっすらあるが、
GEM_HOME 派は根強い
0145デフォルトの名無しさん
2012/05/18(金) 11:49:52.72勉強になりました
0146デフォルトの名無しさん
2012/05/18(金) 11:50:26.64>>143
>>144
勉強になりました
0147デフォルトの名無しさん
2012/05/18(金) 11:50:33.21それは「してはいけない」
使い方が間違っている
なんのためにそれやりたいのか言ってみ
0148デフォルトの名無しさん
2012/05/18(金) 11:57:29.78Rubyでゲームを作っていて
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する)
これをなくせないかなぁと思いました
0149デフォルトの名無しさん
2012/05/18(金) 12:03:13.400150デフォルトの名無しさん
2012/05/18(金) 12:11:54.40一般論としては、やっぱテスト書けってことになるのかね
スクリプトファイルを慎重に直接実行して目を皿のようにして様子を見るのではなく、
「このクラスのこのメソッドはこの値を渡すとこんな値を返すはず、正解と比較してエラーなら止まる」
ということを羅列した特別なRubyスクリプトのほうを実行する
全てのチェックが正しければなにも起こらないので編集を継続すればいい
autotestみたいなのってWindowsでも動いたっけ?
0151デフォルトの名無しさん
2012/05/18(金) 12:19:18.340152デフォルトの名無しさん
2012/05/18(金) 12:21:25.80ウィンドウあげてキャラチップ動かしてる段階だと、その部分のテストは大変
自動で実行をして欲しいってことだけなんだし、テストファイルで直接ウィンドウ立ち上げて目視してもらえばいいだけか
0153デフォルトの名無しさん
2012/05/18(金) 12:46:38.71Rubyでゲーム開発が無理してることは承知しているのでこのまま頑張る事にします
0154デフォルトの名無しさん
2012/05/18(金) 13:04:38.160155デフォルトの名無しさん
2012/05/18(金) 13:09:48.60apache2.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でインストールする方法しか見つからず解決方法がわかりません
どなたかアドバイスお願いします
0156デフォルトの名無しさん
2012/05/18(金) 14:57:11.960157デフォルトの名無しさん
2012/05/18(金) 16:55:40.88Passengerをアンインストールしました
あとMongrelも試してみたんですが起動できずこれもアンインストールしました
webrickで頑張ります
0158デフォルトの名無しさん
2012/05/18(金) 23:59:56.41無駄な労力が必要になる。
0159デフォルトの名無しさん
2012/05/19(土) 00:28:29.24RubyはWindows上で使うもんじゃない
0160デフォルトの名無しさん
2012/05/19(土) 00:49:09.890161デフォルトの名無しさん
2012/05/19(土) 09:02:29.940162デフォルトの名無しさん
2012/05/19(土) 09:03:46.42rails も動かせたし
0163デフォルトの名無しさん
2012/05/19(土) 09:39:14.510164デフォルトの名無しさん
2012/05/19(土) 09:47:03.720165デフォルトの名無しさん
2012/05/19(土) 09:53:49.280166デフォルトの名無しさん
2012/05/19(土) 10:00:46.310167デフォルトの名無しさん
2012/05/19(土) 10:02:13.20編集作業をするOSとプログラムを実行するOSが同一でなければならない理屈はない
0168デフォルトの名無しさん
2012/05/19(土) 10:17:32.54大規模な再帰呼び出しができないとかrubyって言語として大丈夫なの?
これじゃ木構造とか扱い辛い
スタック使って書き直すのはやりたくない
0169デフォルトの名無しさん
2012/05/19(土) 10:27:33.100170デフォルトの名無しさん
2012/05/19(土) 10:36:27.25構造の大きさを徐々に大きくしてテストしたから
これは確か
0171デフォルトの名無しさん
2012/05/19(土) 10:38:09.220172デフォルトの名無しさん
2012/05/19(土) 10:39:12.55無限再帰でなくても落ちるよ
# 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)
0173デフォルトの名無しさん
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)
0174デフォルトの名無しさん
2012/05/19(土) 10:48:43.02それはどこで再帰が終了するんだ?
0175デフォルトの名無しさん
2012/05/19(土) 10:57:12.96http://d.hatena.ne.jp/bellbind/20070611/1181561807
を見つけたので、自分とこで確認してみたら
x86_64-linux 1.9.3 (2011-10-30)
#<SystemStackError: stack level too deep>
recursive size: 8734
となった。
0176デフォルトの名無しさん
2012/05/19(土) 13:17:43.42では、9356段までだった
ttp://ideone.com/6ntPo
0177デフォルトの名無しさん
2012/05/19(土) 13:59:39.60i386-mingw32 1.9.3 (2012-04-20)
#<SystemStackError: stack level too deep>
recursive size: 8734
0178デフォルトの名無しさん
2012/05/19(土) 15:01:50.17ruby 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ほど使ってた
0179デフォルトの名無しさん
2012/05/19(土) 15:04:04.80function 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)
止まる気配がなかった
末尾最適化が利いているのでしょう
0180デフォルトの名無しさん
2012/05/19(土) 15:07:18.10ruby 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
止まる気配がない
たぶん末尾最適化が利いて無限ループしてるはず
デフォルトで末尾再帰最適化が有効になってないのは何がまずいのだろう?
0181デフォルトの名無しさん
2012/05/19(土) 16:42:16.400182デフォルトの名無しさん
2012/05/19(土) 17:21:35.07「ifとgotoさえあればなんでも書ける」ってのと同じで、意味のない言明だよ。
0183uy
2012/05/19(土) 17:30:34.59今のPCスペックと人間スペックでかけるかどうかが問題
0184デフォルトの名無しさん
2012/05/19(土) 17:39:27.23こんなことが出来たのか
勉強になるなぁ。
ありがとう!
0185デフォルトの名無しさん
2012/05/19(土) 18:22:00.980186デフォルトの名無しさん
2012/05/19(土) 18:30:54.54スタックが溢れたりしないこと。
0187デフォルトの名無しさん
2012/05/19(土) 18:33:11.01それは末尾再帰最適化が仕様に含まれているので
末尾再帰がループと同等に扱えるって話じゃ
(Pythonは使ってないもので)
再帰の回数に制限がかかってたのを思い出した
Python 2.7.1にて
import sys
sys.setrecursionlimit(100000)
def mes(i):
print(i)
mes(i+1)
mes(0)
9663まで表示してMemoryError: stack overflow で落ちた
負けた……
0188デフォルトの名無しさん
2012/05/19(土) 18:33:44.33再帰を末尾再帰に変換する義務はない、ということか。
0189デフォルトの名無しさん
2012/05/20(日) 00:44:44.64勝手に環境フレーム相当のものをヒープに用意したりしない限りは
無理じゃないのと思うんだが
0190デフォルトの名無しさん
2012/05/20(日) 09:07:27.53動的に生成された再帰コードを末尾再帰に変換しようぜとか今の人間の技術じゃない
0191デフォルトの名無しさん
2012/05/20(日) 09:41:23.21上のスクリプト試すとどうなるかやってみて
(うちのLinux/Ruby1.9では効果なし)
0192デフォルトの名無しさん
2012/05/20(日) 09:48:12.89話はそれからだ。
0193デフォルトの名無しさん
2012/05/20(日) 09:54:39.24うちでも1.9.3では効果なかった。
でも1.8.7では、
スタックサイズ 8192 で 4101
スタックサイズ 16384 で 8794
スタックサイズ 32768 で 18152
と効果が見られた。
0194デフォルトの名無しさん
2012/05/20(日) 10:06:02.950195デフォルトの名無しさん
2012/05/20(日) 10:24:25.61どれも右クリックでメニューを出すものは見つかるのですが自動的にメニューを表示させるサンプルが見つかりませんでした
0196デフォルトの名無しさん
2012/05/20(日) 12:57:00.58元のTkでそのようにする方法を調べて、それをRuby/Tk上で書く
0197デフォルトの名無しさん
2012/05/20(日) 14:05:27.200198デフォルトの名無しさん
2012/05/20(日) 14:44:06.840199デフォルトの名無しさん
2012/05/20(日) 18:14:01.720200デフォルトの名無しさん
2012/05/20(日) 20:13:13.870201デフォルトの名無しさん
2012/05/20(日) 22:52:03.08コマンドプロンプトから
ruby -v
ってやるとパスが通っているのかバージョンがちゃんと表示されます
ただし、batファイルに
ruby -v
と書いて実行すると
>'ruby' は、内部コマンドまたは外部コマンド、
>操作可能なプログラムまたはバッチ ファイルとして認識されていません。
ってエラーになります
これはなぜですか?
0202デフォルトの名無しさん
2012/05/20(日) 22:58:17.17そのコマンドプロンプトは偽物だ
ruby consoleはあらかじめパスを通したコマンドプロンプトのウィンドウを出す
普通のバッチファイルでruby.exeを使いたいなら、そのruby.exeを実行したい人の環境変数でパス通せ
0203デフォルトの名無しさん
2012/05/20(日) 23:01:47.25システムにrubyのbinフォルダを登録しなくちゃいけないってことでしょうか?
0204デフォルトの名無しさん
2012/05/20(日) 23:19:27.62だいたいそんなところ
詳しくは「パスを通す」でググれ
Vista以降でシステム環境変数でなくユーザ環境変数に登録したいなら
コントロールパネル開いて右上の検索ボックスに「環境変数」と入力
0205デフォルトの名無しさん
2012/05/20(日) 23:20:02.98これしか言いようが無い
わからんかったらお前向いてない
0206デフォルトの名無しさん
2012/05/20(日) 23:22:00.01exeでインストールすると勝手に環境変数も入れてくれると思ってたんですが
exeでインストールするメリットってzipと比較してないと考えていいんでしょうか
0207デフォルトの名無しさん
2012/05/20(日) 23:29:29.00環境が変なんじゃね
0208デフォルトの名無しさん
2012/05/20(日) 23:39:39.35ふつうRedmine RSpec Jenkinsな感じ。
0209デフォルトの名無しさん
2012/05/20(日) 23:40:54.390210デフォルトの名無しさん
2012/05/21(月) 00:26:44.53メニューだけ表示してなんかして終了するの?
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
こんなのだろうか?
正しいのかわからんけど
0211デフォルトの名無しさん
2012/05/21(月) 10:00:41.76Rubyそのもので、記述されていないのでしょうか?
0212デフォルトの名無しさん
2012/05/21(月) 10:16:10.82コンパイラじゃないから
0213uy
2012/05/21(月) 10:23:16.94開発効率は Ruby>>JAVA>>>>C言語>>>>>>>>>>>>>アセンブラ
です。
なるべく実行速度の速い言語で、言語処理系をつくりたいんです
あと、Rubyは動的言語っていうものなのでRubyそのもので記述しようとするなら
eval ""
で終わり
0214デフォルトの名無しさん
2012/05/21(月) 10:35:09.80ありがとうございます。
インタプリタ言語では、プログラミング言語は、記述
0215デフォルトの名無しさん
2012/05/21(月) 10:38:26.77つづき、記述ができても、処理系に向いていないということで、将来、処理速度
が向上したら、できる可能性もあるのでしょうか。
0216デフォルトの名無しさん
2012/05/21(月) 10:44:34.70Cプログラムで動作しているOSと遣り取りする部分のプログラムをCで書かない理由ってなに?
0217デフォルトの名無しさん
2012/05/21(月) 10:47:01.95その後、宗教論争などを見て、反省もしましたが、疑問はつきませんでした。
0218デフォルトの名無しさん
2012/05/21(月) 10:49:40.45ですから、
インラインアセンブラの話が、C言語では、この話に近いと思われます。
正直、わかりません。言い訳になりますが、説明をあまり見かけないのです。
0219デフォルトの名無しさん
2012/05/21(月) 11:12:11.61もしRubyインタプリタをRubyでコーディングするとしたら
そのRubyコードを実行するRubyインタプリタは何で書くの?Rubyで書きたい?
0220デフォルトの名無しさん
2012/05/21(月) 11:28:12.750221デフォルトの名無しさん
2012/05/21(月) 11:30:44.42理想からすると、
Rubyの方が、コードを読みやすいはずです。
文系では、他の分野で、読まなければならない本が、やたら多いので、
入り方が、重要なのです。
0222デフォルトの名無しさん
2012/05/21(月) 11:31:32.960223デフォルトの名無しさん
2012/05/21(月) 11:33:21.470224デフォルトの名無しさん
2012/05/21(月) 11:37:28.69私も文系です。釣りならお帰りください
そうでないならブートストラップ問題でぐぐって熟読したうえで他で聞いてください
それかPythonにはPythonで実装されたPyPyって処理系があるのでそっちに行ってくれてもいいです
0225デフォルトの名無しさん
2012/05/21(月) 11:38:57.26つまり、アセンブラを学ぶのと、Rubyを学ぶのでは、どの道、C言語拡張まで
想定してRubyを学び、開発者を目指すなら、アセンブラ回帰が必須になり、
技術の修得スピードと翻訳、文献の量の問題が、大きいですね。
開発スピードの矛盾を発見したわけです。これは、おかしい。
0226デフォルトの名無しさん
2012/05/21(月) 11:40:31.87Pythonびいきではないし、アンチではないですよ。
0227デフォルトの名無しさん
2012/05/21(月) 11:42:06.13if〜endの「end」を入力するのが苦痛です
何故endを書かないといけない仕様なんですか
if〜eでいいじゃないですか
0228デフォルトの名無しさん
2012/05/21(月) 11:43:02.24クロスプラットフォームで動く動的言語なのにこれは致命的です
0229デフォルトの名無しさん
2012/05/21(月) 11:53:12.58実際問題、おそらくは、Rubyから入門するというケースが、外されてしまうのは
損失ですね。将来的には、Ruby ですべて、こなせるという目的は、ないと思われ
てしまう。
0230デフォルトの名無しさん
2012/05/21(月) 12:10:13.150231デフォルトの名無しさん
2012/05/21(月) 12:13:12.15ラインの質問ですまなかった。
掲載しろとは言わないが、Rubyの入門書に期待したい。
RHGを読むときの理解度にも関わるので、ちょっと聞いてみたんだ。
すまない。
0232デフォルトの名無しさん
2012/05/21(月) 12:17:07.520233デフォルトの名無しさん
2012/05/21(月) 12:31:35.79Ruby開発者は、開発時間の比率からするとRubyでなくて、
C言語、JAVA言語をやってるんですね。
これを、言わせない説明方法を、教えてください。
0234デフォルトの名無しさん
2012/05/21(月) 12:34:14.99初心者向けではないかもしれないけど
0235デフォルトの名無しさん
2012/05/21(月) 12:44:26.74がてんがいったので、
しばし、勉強して、後日きます。
0236デフォルトの名無しさん
2012/05/21(月) 12:47:00.30>Ruby開発者は、開発時間の比率からするとRubyでなくて、
>C言語、JAVA言語をやってるんですね。
これ自体は別に不思議なことでも、悪いことでもない
CRuby開発陣はCプログラマばっかりだと言われることがあるのと同様
JVMを書いている開発者だって恐らくC系言語を使っているだろう
もちろん、言語処理系上のライブラリ開発者であれば
Pure Rubyで記述している場合もあるだろう
0237デフォルトの名無しさん
2012/05/21(月) 12:49:44.84重ねて感謝、ありがとうございました。助かります。
0238デフォルトの名無しさん
2012/05/21(月) 14:52:40.660239デフォルトの名無しさん
2012/05/21(月) 15:03:02.70取得した内容をメモ帳に貼り付けるのかどっちだい?
両方できるが
0240デフォルトの名無しさん
2012/05/21(月) 15:04:17.89Rubyをやる場合に基礎が身につく入門書ってありませんか?
10日で覚える系のは論外です
0241デフォルトの名無しさん
2012/05/21(月) 15:04:30.20前者です!
0242デフォルトの名無しさん
2012/05/21(月) 15:06:29.97open("http://www.defense.gov/"){|f| $s = f.read}
open("test.html", "w"){|f| f.write($s)}
`start notepad.exe test.html`
0243デフォルトの名無しさん
2012/05/21(月) 15:11:05.710244デフォルトの名無しさん
2012/05/21(月) 16:12:10.790245デフォルトの名無しさん
2012/05/21(月) 17:15:56.52うまくいきません\(^o^)/
ttp://www.ruby-lang.org/ja/documentation/
にアクセスしてメモ帳に
ここでは、マニュアルなどのドキュメントを紹介します。…
を出力したいのです
1.8.7です
0246238
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`
0247デフォルトの名無しさん
2012/05/22(火) 06:24:09.67シェルスクリプトなんてルビーで置き換えられるじゃないと思って¥、シェルの代わりにルビーを指定したらログイン不能になったわw
過去のトラウマ。
あうあうあー。
ウィンドウズでサーバ自体とんでもなく手間が掛かる。
教祖様と同様にatt unixがいいね。デビアンは使いにくいけど。
0248デフォルトの名無しさん
2012/05/22(火) 07:10:52.57>文系なので、解らないのですが、なぜ、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みたいなゴミが湧き出ますが気にしないでください。ごめんねあんなやつらを相手にさせて。
0249デフォルトの名無しさん
2012/05/22(火) 08:23:49.17まだjavaもrubyもpyもsmalltalkもosを作り出せてない。
0250デフォルトの名無しさん
2012/05/22(火) 09:00:17.00たまにはAPLマシン、LISPマシン、Smalltalkマシン、Prologマシンのことも
思い出してあげてください。
0251デフォルトの名無しさん
2012/05/22(火) 09:13:05.99https://github.com/arton/ennou
0252デフォルトの名無しさん
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
0253デフォルトの名無しさん
2012/05/22(火) 13:06:57.13これ見て勉強します
0254デフォルトの名無しさん
2012/05/22(火) 14:00:13.09まとめてやろうとすんな
一気にやろうとせずに段階踏んで別々にやって、その成果を最後に組み合わせろ
「自作の” ”で囲った文字列を画面に表示する」
「自作の” ”で囲った文字列を変数に代入し、変数の内容を文字列として画面に表示する」
「ファイルにアクセスしてその内容文字列を画面に表示する」
「変数の内容を画面に表示するかわりにファイルにアクセスしてそこに書き込む」
「実際にやりたいメソッドの戻り値を変数に代入し、ファイルにアクセスしてそこに書き込む」
前の4つができていないと、最後のひとつはできない
0255デフォルトの名無しさん
2012/05/22(火) 14:19:32.280256デフォルトの名無しさん
2012/05/22(火) 14:24:06.140257デフォルトの名無しさん
2012/05/22(火) 14:29:40.49require '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}"
0258デフォルトの名無しさん
2012/05/22(火) 14:34:33.58require '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"
0259デフォルトの名無しさん
2012/05/22(火) 17:48:03.78makeで、「rdoc」エラーで失敗して進めません。
調べたら、yumのレポジトリに、「dev.centos.org/centos/4/CentOS-Testing.repo」を
追加とあったのですが、今現在ファイルが存在しません。
centos4系でrdocとインストールするにはどうすればいいのでしょうか?
0260デフォルトの名無しさん
2012/05/22(火) 20:37:57.03RDEを使ったところ、ものすごく使いづらいんですが、
他にrubyの実行ができるソフトってないんでしょうか?
0261デフォルトの名無しさん
2012/05/22(火) 21:04:05.10トン!
notepadだと改行うまくいかないみたいなのでwordpadで開くようにしてみますた
あとはpとかdivで囲まれたところではなく欲しいところを書きだすように書き換えに挑戦
これは明日やります…
0262デフォルトの名無しさん
2012/05/23(水) 04:00:53.18perlやpyやphpのサイトとかで練習しないだけでも。
0263デフォルトの名無しさん
2012/05/23(水) 09:05:50.76こう? 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)
0264デフォルトの名無しさん
2012/05/23(水) 09:25:25.00そんな感じっすな
実際問題としても、ネットアクセスとかデータベースアクセスとかはいちばん遅いはずなので、
スクリプト作成中にこの部分をローカルファイルの読み込みにしておくことの意義は大きい
マシンスペックにもよるけど、実行した直後に終わるはずだ
0265デフォルトの名無しさん
2012/05/23(水) 10:14:15.89そろそろできた?
0266デフォルトの名無しさん
2012/05/23(水) 10:26:58.31これしか選択しないですか?
gemでインストールできるものってないですかね?
0267デフォルトの名無しさん
2012/05/23(水) 19:18:47.13もしくはなぜRubyに拘ってるの?
0268デフォルトの名無しさん
2012/05/23(水) 19:32:03.220269デフォルトの名無しさん
2012/05/23(水) 20:49:17.57Windowsしか使ったことないのとPCが1台しかなくて、仮想マシン入れて動かせるほど良いスペックでもないです
ennouはWindowsによくあるインストーラ形式っていうのが引っかかるのでキツイです
0270デフォルトの名無しさん
2012/05/23(水) 20:52:40.930271デフォルトの名無しさん
2012/05/23(水) 20:58:05.380272デフォルトの名無しさん
2012/05/23(水) 21:06:06.960273デフォルトの名無しさん
2012/05/23(水) 22:07:29.33<div id=Main>から<div>までなど場所を指定して取得するのってどう書けばよいでしょうか
またこういうのってどうやってググれば良いでしょうか
『たのしいRuby第3版』買ったけど内容がやりたいことに追いついてない気がします
0274デフォルトの名無しさん
2012/05/23(水) 22:14:01.38君は怒っていいと思うよ
一発で出てこないということは、とりあえず正規表現を学ぶことをおすすめする
あんまり深入りすると抜け出せないので、 . + * ? () あたりの記号の使い方と意味だけわかれば充分
複雑な正規表現はとりあえずパスして、そのぶん ruby の if とか String#scan とか String#gsub とか String#split とかの機能を駆使する
正規表現で対処し切れなくなってからはじめて、HTML のパースライブラリの使用を検討するのが正当
0275デフォルトの名無しさん
2012/05/23(水) 22:24:49.99ありがとうございます
基礎中の基礎みたいですねw
RubyがおすすめだからRubyでやれと言われた身ですが
自分には急に応用から学べと言われているようなものだったみたいです
かなり混乱してますが頑張ります
0276デフォルトの名無しさん
2012/05/23(水) 22:37:20.02irb(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
0277デフォルトの名無しさん
2012/05/23(水) 22:56:08.29irbがどういう表示をするのかは、ホームディレクトリとかの .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 は引数のカッコをつけない
0278デフォルトの名無しさん
2012/05/23(水) 23:07:29.13とかやって構文エラーに目が点になった思い出。
いまは理由分かるけど。
0279デフォルトの名無しさん
2012/05/23(水) 23:32:42.49>irbがどういう表示をするのかは、ホームディレクトリとかの .irbrc とかで制御される
これが答えですね、ありがとうございます。
知りませんでした。
$ ls -a | grep irb
$
ないみたいですね。理由がわかって安心しました。
今は酔いが回ってきたので具体的な対処は後日します。
ありがとうございました。
>>278
irb(main):001:0> p ({ 1 => 10, 2 => 20 })
{1=>10, 2=>20}
=> nil
こうですかわかりません><
0280デフォルトの名無しさん
2012/05/23(水) 23:40:50.45=> がデフォルトになったのは1.8.7だったかな
0281デフォルトの名無しさん
2012/05/23(水) 23:41:29.690282デフォルトの名無しさん
2012/05/23(水) 23:50:25.610283デフォルトの名無しさん
2012/05/24(木) 09:14:15.18期待されちゃうのね。
0284デフォルトの名無しさん
2012/05/24(木) 10:03:18.60いわゆるページャとして使ってるんだろうな、と思う
複数行や長い行のある文字列をコマンドプロンプト上で標準出力に表示しても確認しづらいということは否定はできん
0285デフォルトの名無しさん
2012/05/24(木) 10:41:47.92msys版のminttyでbash使うのいいんだけどirbが動かねえ
0286デフォルトの名無しさん
2012/05/24(木) 12:07:34.370287デフォルトの名無しさん
2012/05/24(木) 12:17:42.07あなたがrubyでやりたいことに必要なgem
0288デフォルトの名無しさん
2012/05/24(木) 12:34:45.15配布しようにも相手が持ってないと意味ないわけで
なにしたいのかで聞けば、おすすめ定番くらいは誰か教えてくれるかもよ
0289デフォルトの名無しさん
2012/05/24(木) 12:46:54.56arr = []
arr.push( ←ここでArray#pushのマニュアルが(半自動で)引ける
0290デフォルトの名無しさん
2012/05/24(木) 12:51:29.81昔、riとEmacsでそういう連携があったことがあった気がした
カーソル部分の単語をメソッド名とみなして全検索して候補引っぱるんだったかな
Array#push([ obj1 [, obj2 ...]]) obj1 , obj2 ... を順番に配列の末尾に追加します
と1行表示してくれるだけでもありがたいんだけど
0291デフォルトの名無しさん
2012/05/24(木) 12:58:06.19Array#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"]
英語かよ
0292デフォルトの名無しさん
2012/05/24(木) 13:04:21.80http://localhost/index.rb?○○
このときそのまま利用するのはセキュリティ上危険だと思うのですが
どのような対策を行えばよいでしょうか?
0293デフォルトの名無しさん
2012/05/24(木) 13:11:01.01どうにもなんない
対象となるファイルシステムとシェルをすべて網羅して、危険となるアスキーまたはマルチバイトの文字列の並びをなんらかの安全な文字列に変換する
ライブラリがあると楽なんだけど、聞いたことないな
0294デフォルトの名無しさん
2012/05/24(木) 13:13:51.92合致するならファイル一覧のほうの文字列を使ってFile.openすればいいんじゃないかな
書き込みファイル名をクエリから生成するのはめんどくさい
0295デフォルトの名無しさん
2012/05/24(木) 13:34:51.36実のところはちょっと置換したくらいじゃちっとも安全じゃないんだよね
0296デフォルトの名無しさん
2012/05/24(木) 15:02:06.630297デフォルトの名無しさん
2012/05/24(木) 17:38:04.790298297
2012/05/24(木) 17:53:01.500299デフォルトの名無しさん
2012/05/24(木) 18:00:04.10関数呼び出ししなきゃならんものは関数として提供する、というのが基本だから、それはない。
0300デフォルトの名無しさん
2012/05/24(木) 19:59:32.360301デフォルトの名無しさん
2012/05/24(木) 20:08:11.880302デフォルトの名無しさん
2012/05/24(木) 20:11:02.39自分で作っちゃいなよ
おれもそんな感じのエディタをおっちらおっちら作ってる(いつ完成するのやら…)
0303デフォルトの名無しさん
2012/05/25(金) 00:11:35.56Ruby 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
と、インストールできませんでした。
何が足りないのか、どうやって調べればいいのかわかりません。
お知恵を拝借いただけないでしょうか?
0304デフォルトの名無しさん
2012/05/25(金) 00:27:38.35> Ruby 1.9.2
libtcltk-ruby1.9
0305uy
2012/05/25(金) 00:36:20.34http://s1.gazo.cc/up/s1_24306.jpg
http://s1.gazo.cc/up/s1_24307.jpg
Ruby in Steel
これは?
0306デフォルトの名無しさん
2012/05/25(金) 01:54:53.840307デフォルトの名無しさん
2012/05/25(金) 02:46:01.68理解できません。シンタックスって何ですか?
0308uy
2012/05/25(金) 02:52:35.36古い言語に文句いったって今更だから
もうC言語の事は忘れよ
0309デフォルトの名無しさん
2012/05/25(金) 10:11:26.08libtcltk-ruby1.8 と libtcltk-ruby1.9 に分化
これならわかりやすい
0310デフォルトの名無しさん
2012/05/25(金) 20:38:42.62Windows用のmrubyモジュールって存在しませんか?
0311デフォルトの名無しさん
2012/05/25(金) 20:52:39.03は?
0312デフォルトの名無しさん
2012/05/25(金) 20:58:24.750313デフォルトの名無しさん
2012/05/25(金) 21:01:49.170314デフォルトの名無しさん
2012/05/25(金) 21:05:49.870315デフォルトの名無しさん
2012/05/25(金) 21:18:59.05mod_mrubyとか出てきたけど、誰得なんだこれ
0316デフォルトの名無しさん
2012/05/25(金) 21:21:00.65http://www.moongift.jp/2012/05/20120525/
0317デフォルトの名無しさん
2012/05/25(金) 21:21:26.48死屍累々の中からこそ、キラリと光るプロダクトは生まれる
なんかもしかしたら今後いいことあるかもしんないしさあ
ただ、初心者が使うようなもんでないのは間違いない
テックプレビューみたいなもんだ
0318デフォルトの名無しさん
2012/05/25(金) 21:24:12.39CとRubyとWebサーバを使い倒した人が余興でいじる
0319デフォルトの名無しさん
2012/05/25(金) 22:02:22.16何これつかいやすい
0320デフォルトの名無しさん
2012/05/25(金) 22:20:15.440321デフォルトの名無しさん
2012/05/25(金) 22:24:45.64どうして説明を読まずに使おうとするの?
0322デフォルトの名無しさん
2012/05/25(金) 22:28:53.800323デフォルトの名無しさん
2012/05/25(金) 22:38:01.310324デフォルトの名無しさん
2012/05/25(金) 22:40:48.900325デフォルトの名無しさん
2012/05/25(金) 22:42:22.71その解釈はないわー
できなくもないし、ずっと未来の将来ではひょっとしたらなんかあるかもしれないけど、現状は1ミリもないわー
>>320
通常、mod_rubyやFastCGIを使う
Windowsで動作しないとか知らん
0326デフォルトの名無しさん
2012/05/25(金) 23:57:12.22>>309
動きました!!
1.8と1.9でモジュールが分かれていたんですね。
ありがとうございました!!
0327デフォルトの名無しさん
2012/05/26(土) 03:34:54.51まあ教祖がデビアン使いでウィンドウズ知らんて逝ってるくらいだから仕方ないか。
0328デフォルトの名無しさん
2012/05/26(土) 03:53:37.94初期の想定とは違った層が手をだすほど浸透しているということかねえ。
0329デフォルトの名無しさん
2012/05/26(土) 03:57:38.11もしあらゆるものが簡単で単純で平易に動作すると言われたのなら、(残念なことに)君は騙されていて、それを言った人が非難されるべき
0330デフォルトの名無しさん
2012/05/26(土) 04:08:04.33いや
初心者はMacだろ常考
0331デフォルトの名無しさん
2012/05/26(土) 08:28:41.75そして一生Windows以外のものに手を出さない人生を送ればいいの。
そのほうが幸せだろうから。
0332uy
2012/05/26(土) 11:16:47.74サーバーはLinuxで立てろって思うけど
0333デフォルトの名無しさん
2012/05/26(土) 11:19:30.450334デフォルトの名無しさん
2012/05/26(土) 11:23:20.69いやさすがにその理屈は弱過ぎる
そんなんでレスの応酬欲しいのならLinux板の煽りスレへどうぞ
0335デフォルトの名無しさん
2012/05/26(土) 11:25:25.14何か困ることでもあるのかな
0336デフォルトの名無しさん
2012/05/26(土) 11:40:01.88そんなものはない
ピクセルの色数が上がっただけで、デスクトップの出来としては20世紀のWindowsにも劣る
0337デフォルトの名無しさん
2012/05/26(土) 12:00:31.720338デフォルトの名無しさん
2012/05/26(土) 12:04:25.360339デフォルトの名無しさん
2012/05/26(土) 12:28:41.90> Macが発展してきた現状でオワコンWindows使う意味なんてあるの?wwww
あんまりない。
0340デフォルトの名無しさん
2012/05/26(土) 12:45:49.56MacとLinuxじゃGUIの方向性が全く違うよ
0341デフォルトの名無しさん
2012/05/26(土) 12:52:39.13Matz の好きな ubuntu ネタだけど
ttp://www.youtube.com/watch?v=a3ZqsRs4Q-Y
ttp://www.youtube.com/watch?v=IWUm4DWemoI
0342デフォルトの名無しさん
2012/05/26(土) 12:59:44.59動画は全く意味がない
実際に1年なら1年、自分のマウスとキーボードでデスクトップ環境を使ってみてから言え
0343デフォルトの名無しさん
2012/05/26(土) 13:13:48.75LinuxデスクトップはGnome/KDE以降十数年の歳月をかけて(勝手に)Windowsに戦いを挑んで、すばらしい結果を遺してくれた
マトモなユーザーインターフェースやユーザーエクスペリエンスは、タダではできない(あと、プログラマは本質的にランチャーしか使わない)
そして板違い
0344デフォルトの名無しさん
2012/05/26(土) 14:09:44.550345デフォルトの名無しさん
2012/05/26(土) 14:13:06.050346デフォルトの名無しさん
2012/05/26(土) 14:14:39.51開発環境がバカ高かったってのもあるんだが
0347デフォルトの名無しさん
2012/05/26(土) 14:34:38.72だったら安いノート買ってLinux入れて余った金をほかの事に使ったほうが勉強になると思うんだよね
0348デフォルトの名無しさん
2012/05/26(土) 14:38:26.19そう言うってことはMacとLinuxデスクトップ機両方持ってて実際使ってみてから言ってるんだよね
0349デフォルトの名無しさん
2012/05/26(土) 14:44:31.560350デフォルトの名無しさん
2012/05/26(土) 14:56:14.94Mac使って15年Linuxもファイルサーバとして2台使ってますが
持ってるかどうかは重要じゃないかと
0351デフォルトの名無しさん
2012/05/26(土) 15:05:26.080352デフォルトの名無しさん
2012/05/26(土) 15:10:17.57rubyって書いてあればみんな一緒と
0353デフォルトの名無しさん
2012/05/26(土) 15:37:09.380354デフォルトの名無しさん
2012/05/26(土) 16:00:14.68特にはないよ
これはインストール1週間以内の人間を除いた全員が合致したところの意見
これ以上煽りたければLinux板行け
http://engawa.2ch.net/test/read.cgi/linux/1337732534/
0355デフォルトの名無しさん
2012/05/26(土) 17:26:54.38鼻息あらいなw
単に純粋にきいただけなのにw
ただ、rubyなんて使って意味あるの?
よりは合致するかもね
0356デフォルトの名無しさん
2012/05/26(土) 17:47:22.220357デフォルトの名無しさん
2012/05/26(土) 18:33:34.060358デフォルトの名無しさん
2012/05/26(土) 19:07:52.27# test.rb
while line = STDIN.gets
STDOUT.puts line
end
# test2.rb
0359デフォルトの名無しさん
2012/05/26(土) 19:32:52.72できないと答えるのがスレ的にいいような気がする
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
0360デフォルトの名無しさん
2012/05/26(土) 20:14:40.77io = IO.popen('ruby test2.rb','w')
while line = $stdin.gets
io.write line
end
0361デフォルトの名無しさん
2012/05/26(土) 20:20:42.82文字通り受け取ってどーする
0362uy
2012/05/26(土) 23:40:21.26a=""
while line = STDIN.gets
a << line
end
a
---test2.rb---
a = eval(open("test.rb").read)
p a
0363デフォルトの名無しさん
2012/05/27(日) 01:16:09.370364デフォルトの名無しさん
2012/05/27(日) 01:26:10.25それぞれコマンドプロンプトを立ち上げてて
片方のディスプレイには標準入力用のtest.rbを
もう片方のディスプレイにはtest2.rbで入力した文字列を受け取る標準出力用のtest2.rb
どちらもwhileでループさせといてtest.rbで入力が合ったらtest2.rbで受け取れりたいです
(ソケットでやればいい話なんですが)
0365デフォルトの名無しさん
2012/05/27(日) 01:27:33.890366デフォルトの名無しさん
2012/05/27(日) 03:09:27.21読んだら消しまくればいい
0367デフォルトの名無しさん
2012/05/27(日) 03:58:07.81mkfifo /tmp/my_fifo
ruby test.rb > /tmp/my_fifo
ruby test2.rb < /tmp/my_fifo
0368デフォルトの名無しさん
2012/05/27(日) 04:02:05.61ていうか、test1.rbとtest2.rbってファイル分ける必要なくね
0369デフォルトの名無しさん
2012/05/27(日) 07:02:20.97同一の結果を二つの画面に表示したいだけなのか
コマンドプロンプトは結果の表示に利用しているだけなのか
test2.rbはtest.rbからだけでなく、端末からの入力も受け付けるのか
0370デフォルトの名無しさん
2012/05/27(日) 07:22:20.980371デフォルトの名無しさん
2012/05/27(日) 11:18:48.97あとdevkitもいれます。
将来バージョンアップする場合、入れたものを上書きしても大丈夫でしょうか?
それとも一度消してから入れたほうがいいでしょうか?
0372デフォルトの名無しさん
2012/05/27(日) 11:28:27.16devkitはRuby本体の動作に関係ないのでどうでもいい
(独立ではなく横着してRubyディレクトリの下にdevkitをインストールしてしまうとこのときめんどくさい)
パッチレベル(pの数字)が増えただけなら新しいRubyにgemディレクトリをコピペしても「たぶん」大丈夫
各々のgemがどういう動作をしているかまではわからないので、保証はできない
0373デフォルトの名無しさん
2012/05/27(日) 11:42:35.51一回OSを再インストールしてまた入れなおします
ありがとうございます
0374デフォルトの名無しさん
2012/05/27(日) 11:44:22.680375デフォルトの名無しさん
2012/05/27(日) 11:52:48.15> RubyInstaller
0376デフォルトの名無しさん
2012/05/27(日) 12:16:08.950377デフォルトの名無しさん
2012/05/27(日) 15:49:30.50とするとMySQLに接続するためのパスワード入力を求められますが
ここにスクリプトで入力する方法を教えてください
system 'mysql -u root --password=xxxxx'とすればログインできるのですが
標準入力をスクリプトで自動的に入力できる方法を学びたいです
0378デフォルトの名無しさん
2012/05/27(日) 16:03:17.10ttyから直接なのか、標準入力からなのか。
前者なら PTY.spawn で、後者なら IO.pipe かな?
0379デフォルトの名無しさん
2012/05/27(日) 16:08:34.64system 'echo "*password*" | mysql -u root -p'
0380デフォルトの名無しさん
2012/05/27(日) 16:19:15.490381デフォルトの名無しさん
2012/05/27(日) 17:24:09.25Chromeで開いてるHTMLのとあるフォームに書いてある文字列全体に対して処理するってのは可能なんですか?
やはり一旦適当なtxtファイルに保存して変換処理させるのが無難ですか?
0382デフォルトの名無しさん
2012/05/27(日) 17:46:22.32「外部プログラムからのフォーム取得変更操作を受け付け、勝手にChromeに送信させることを許可するプラグイン」
があらかじめインストールされていれば可能
具体的には Watir
当たり前だけどおっそろしく脆弱な状態になるので、使用には注意
ふつうは、
・ HTML で完結する処理なら Ruby で HTML を取得してフォーム送信する
・ JavaScript や Flash が必要だけど送信データを調べてたいしたことない場合は Ruby で HTML を取得して自力で組み上げて Ruby で送信する
・ JavaScript や Flash が必要だけど送信データを調べてある程度までなら Ruby で HTML を取得して根性で送信文字列を組み上げて Ruby で送信する
という手順を踏む
どーーーーしても普通の Web ブラウザを Ruby から乗っ取って操作しなければならないという場面はそう多くはない
0383381
2012/05/27(日) 18:00:25.37私の説明がものすごく不味かったようですが、
やりたいことは、要はただのテキスト処理で、
「Chrome上で、フォームAに文字列を書いて、Rubyスクリプト実行したら、
フォームBやフォームCに自動的に文字列が埋まる。」
ということなんです。
最終的なボタンを押して送信するのは、ユーザーに任せたいんです。
ただ、それをChromeの上で(もしくは他のブラウザ)でやることは可能なのかなー・・・と。
Watirというのを少しググってみたんですけど、ブラウザを自動操縦できるらしいで、
これなら可能ですね。
ためしてみます。
0384デフォルトの名無しさん
2012/05/27(日) 18:04:33.43> Chrome上で、フォームAに文字列を書いて、スクリプト実行したら、
> フォームBやフォームCに自動的に文字列が埋まる。」
JavaScriptでやれ
それは正しくクライアントサイドJavaScriptの仕事だ
0385デフォルトの名無しさん
2012/05/27(日) 18:11:49.290386デフォルトの名無しさん
2012/05/27(日) 18:13:54.400387デフォルトの名無しさん
2012/05/27(日) 18:30:06.85最近、Chromeのnacl上で動かすためのパッチがrubyに取り込まれた。
0388デフォルトの名無しさん
2012/05/27(日) 19:03:05.80逆だったのね…
0389デフォルトの名無しさん
2012/05/28(月) 11:59:04.87{".jpg" => "image/jpeg", ....} と全部自分で書くのはしんどいので…。
0390デフォルトの名無しさん
2012/05/28(月) 12:12:12.240391デフォルトの名無しさん
2012/05/28(月) 12:22:11.41irb> 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",
...
}
0392デフォルトの名無しさん
2012/05/28(月) 13:36:19.24マルチ
0393デフォルトの名無しさん
2012/05/28(月) 13:45:22.54「初心者スレの質問レスをコピペして回ってなおかつマルチだと罵る」というよくわからん行動パターンがあるので
ここより先のタイムスタンプがあるんじゃない限り特に気にしない
0394デフォルトの名無しさん
2012/05/28(月) 14:15:06.49565 デフォルトの名無しさん [sage] 2012/05/27(日) 12:03:31.80 ID: Be:
Content-typeヘッダから拡張子を判断するにはどのライブラリ使えばいいんですか?
0395デフォルトの名無しさん
2012/05/28(月) 19:47:10.07require 'mime/types'
>> MIME::Types.of('.pdf')
=> [application/pdf]
返ってきているのは MIME::Type インスタンスの配列。
0396389
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
で期待通りの動作ができました。
0397389
2012/05/28(月) 23:31:56.72質問するに適切な場所が見つからなかったので教えてください。
mime type が決まっていないファイルに
mime type をつけるときの規定はあるのでしょうか?
"none" などを勝手につけるものなのでしょうか?
探してみましたが、情報がみつかりませんでした。
0398デフォルトの名無しさん
2012/05/28(月) 23:44:20.980400デフォルトの名無しさん
2012/05/29(火) 18:44:34.79たとえば、
$ grep -r "" * ←これをrubyプログラムから書いて、ユーザが""内など適宜編集して実行(Enter押下)する
とか、
$ irb ←rubyプログラムからirbを起動し、
irb(main:001) > .methods.sort ←これをrubyプログラムから書いてユーザが書き足して実行
良い方法はありませんか?
0401デフォルトの名無しさん
2012/05/29(火) 19:41:10.11<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>の内容が全て含まれるはずなのですが、
そこからどうやって、個々の要素を指定して絞り込めばいいのでしょうか?
0402デフォルトの名無しさん
2012/05/29(火) 19:54:45.83XPathでぐぐれ
NokogiriやHpricotが受け付ける「検索文字列」はオリジナルではなく、別途独立して定義されたものだ
あと、現状、Hpricotを使うメリットはない
0403デフォルトの名無しさん
2012/05/29(火) 19:58:13.29たぶん、それを使わされる人はぜんぜん喜ばないと思うの
他の方法を考えたほうがいい
なお、一番簡単に実現できるのは、ヒストリに無理矢理追加しておいて、上キーなどで呼び出してもらうこと
0404uy
2012/05/29(火) 20:40:04.87略語展開をどこでも使えるようにキーロガー作って
「AA0」までタイプして特定キーおしたら
AA0を消して、AAリストからその場所にAA貼り付けるとか
文字列貼り付けるってツールは作った事あったな
微妙すぎるから捨てた
0405デフォルトの名無しさん
2012/05/29(火) 20:52:44.74CSSセレクタでは>>401に書かれてることはできないのですか?
Xpathより簡単みたいだからこっちにしたのですが
Hpricotの方が日本語のサイト多いのでとりあえずこっちにしました
0406デフォルトの名無しさん
2012/05/29(火) 20:58:09.63どこかにサンプルなどはないでしょうか?
http://d.hatena.ne.jp/subuntu/20070614
ここのソースを動かしてみたところ
一応作れてはいるのですがタイトルバーが残ってしまっています
0407デフォルトの名無しさん
2012/05/29(火) 21:02:15.69Nokogiriは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使うとどうにかなる、かも
0408uy
2012/05/29(火) 21:18:17.510409デフォルトの名無しさん
2012/05/29(火) 21:19:37.47ありがとうございます
Hpricotもcssセレクタは使えるんですが、ただNokogiriとはだいぶ違うようです
0410デフォルトの名無しさん
2012/05/29(火) 21:26:23.96ヒストリの方法はすでにやってみたんですが、もっと良い方法がないだろうかと・・・
ちなみに、>>400に書いた単純な内容だけをしたいわけではないです
プログラム側でコマンドを完成させて実行する方向で考えてみます
0411デフォルトの名無しさん
2012/05/29(火) 22:54:00.82という文字列をputsにて
登録日:2012/05/20
社員番号:NTDF-452
という風に出力させたいのですが、どうすればいいでしょうか?
0412デフォルトの名無しさん
2012/05/29(火) 23:13:35.68Perlの
@a = <>;
と同様の処理をRubyで、文字の少なさにこだわって書く場合
どのようなコードになりますか?
0413デフォルトの名無しさん
2012/05/29(火) 23:32:47.690414デフォルトの名無しさん
2012/05/29(火) 23:35:32.64$< は行単位のEnumerableなので、直後に何かメソッドを
呼ぶならlines不要。
$<.each { ... }
0415デフォルトの名無しさん
2012/05/29(火) 23:35:40.58a=*$<
0416デフォルトの名無しさん
2012/05/29(火) 23:36:10.170417デフォルトの名無しさん
2012/05/29(火) 23:37:06.720418414
2012/05/29(火) 23:38:59.660419デフォルトの名無しさん
2012/05/29(火) 23:40:52.78読み込んで行分割まで済んでいるべき。
0420uy
2012/05/29(火) 23:42:29.71"登録日:2012/05/20社員番号:NTDF-452" =~ /(.*?\d{4}\/\d{1,2}\/\d{1,2})(.*)/
puts $1
puts $2
0421デフォルトの名無しさん
2012/05/29(火) 23:46:12.16lines = STDIN.readlines
とかだよな。字面だけで何やってるかわかるし。
0422デフォルトの名無しさん
2012/05/30(水) 00:17:25.80puts "登録日:2012/05/20社員番号:NTDF-452".split(/(?=登録日|社員番号)/)
0423デフォルトの名無しさん
2012/05/30(水) 00:34:27.00動かないみたいです・・・
>>422
ありがとうございました
中身はあまり理解できませんでしたが、自家製のlengthを使ったsliceよりも綺麗でした
0424>>412
2012/05/30(水) 03:27:53.61ご回答、ありがとうございました。
参考にします。
>>421
おっしゃるとおりです。
ただ、ワンライナで標準入力から読み取る簡便な記述を知りたかったので、
>>412の質問をした次第です。
0425デフォルトの名無しさん
2012/05/30(水) 07:47:34.94動作が変わっちゃうよ
Perlの<>に対応するのはRubyだとARGF
0426デフォルトの名無しさん
2012/05/30(水) 10:40:11.510427デフォルトの名無しさん
2012/05/30(水) 14:02:38.49どういうのを作りたいのかよくわかんないけど
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
の中にあるよ.
0428デフォルトの名無しさん
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/
0429デフォルトの名無しさん
2012/05/30(水) 18:38:54.84def dosomething (a)
end
みたいに宣言して関数として呼び出すこともできるんですか?
オブジェクト指向型言語であれば、一応はクラスを定義してその中にdefを設けて、
そのインスタンスにメソッドを実行させるのが妥当かなと思ったんですが・・・
どっちで書くべきか迷っています
0430デフォルトの名無しさん
2012/05/30(水) 18:54:23.17わかりやすければどうでもいいよ
0431デフォルトの名無しさん
2012/05/30(水) 20:51:58.39再利用するんでなければ、なんかてきとーに手続き的に書いちゃっていいよ
クラスなくてもなんとかなるって
0432デフォルトの名無しさん
2012/05/30(水) 23:14:59.53分かりました
ありがとうございました
0433デフォルトの名無しさん
2012/05/30(水) 23:42:42.87ループの直前で最初の要素を削って、ループ抜けたあと最初に戻すとかは思いつきましたが・・・
0434デフォルトの名無しさん
2012/05/30(水) 23:57:58.77とでもすればいんじゃなかろうか
0435デフォルトの名無しさん
2012/05/31(木) 00:00:32.24やってみます
有難う御座いました
0436デフォルトの名無しさん
2012/05/31(木) 01:32:59.58実は「トップレベルに書いた関数」もRubyでは「とある場所に属するメソッド」として扱われてるんだけどね
0437uy
2012/05/31(木) 03:23:41.880438デフォルトの名無しさん
2012/05/31(木) 06:03:58.49土をコネコネ
0439デフォルトの名無しさん
2012/05/31(木) 07:10:44.46なんの慰めにもならんな
0440デフォルトの名無しさん
2012/05/31(木) 07:40:49.12やはり胡散臭い人の方がろくろはしっくりくるな
0441デフォルトの名無しさん
2012/05/31(木) 07:44:02.02「あなたが利用しているのは実はオブジェクトで、使ってるのはメソッドなんですよ!」とか言われてもな
0442デフォルトの名無しさん
2012/05/31(木) 10:14:16.63「クラスとは〜オブジェクトとは〜タイヤキの〜インスタンスが〜ジュークボックスの〜」とか考える必要なし
0443uy
2012/05/31(木) 16:38:34.93def to_s
"(´・ω・`)"
end
end
p n
こういう挙動を最近知ったんだけど、
こういう細かいrubyの挙動ってどこにも書かれてなくねって思う
0444uy
2012/05/31(木) 16:46:04.09def a
p 1
end
end
a
def a
p 2
end
a
これってなんなの??
0445デフォルトの名無しさん
2012/05/31(木) 17:02:20.09ジュークボックスで説明されても日本人にはよくわかりません
というのはたぶん悩んだんだろうなあと勝手に思ってる
0446デフォルトの名無しさん
2012/05/31(木) 17:09:07.730447デフォルトの名無しさん
2012/05/31(木) 17:17:50.290448デフォルトの名無しさん
2012/05/31(木) 17:19:05.25なんの慰めにもならんな
0449デフォルトの名無しさん
2012/05/31(木) 18:52:31.73b) 配列に1回につき最大に5個まで格納して、
c) その配列を関数に渡して処理していき
d) ファイルの終わりまでa)を繰り返す
というアルゴリズムを書きたいのです。
a)とc)とd)は問題なく書けるのですが、b)はどうやれば綺麗にいくのか分かりません。
IO.foreach("a.txt") do |s|
#処理
end
この#処理のところに入れるわけですが、until i = 5みたいなループをもう1つ入れるべきですか?
0450uy
2012/05/31(木) 19:03:08.12p s
end
IO.foreach("a.txt").each_slice(5) do |s|
func s
end
0451デフォルトの名無しさん
2012/05/31(木) 19:12:05.52> 配列に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
0452449
2012/05/31(木) 19:33:52.55こんなに早く解答もらえて本当に助かりました。
要件が不明瞭だったようですいませんが、
その通りで、13行あるとしたら、5行、5行、3行に分裂するってことです
本当にありがとうございました
0453デフォルトの名無しさん
2012/06/01(金) 06:53:10.75ttp://www.sanin-chuo.co.jp/news/modules/news/article.php?storyid=532264004
0454デフォルトの名無しさん
2012/06/01(金) 07:04:51.570455デフォルトの名無しさん
2012/06/01(金) 08:09:12.13勉強したのに合格させないことが目的の試験じゃない
0456デフォルトの名無しさん
2012/06/01(金) 08:25:02.42なんらかの意図を感じる
0457デフォルトの名無しさん
2012/06/01(金) 09:22:28.560458デフォルトの名無しさん
2012/06/01(金) 09:28:21.950459デフォルトの名無しさん
2012/06/01(金) 09:47:09.420460デフォルトの名無しさん
2012/06/01(金) 09:49:32.51いやこれ山陰中国地方のローカルニュースですので
Rubyと名がついていればとりあえずオッケーな地場産業トピックみたいなもんだろ
深い意味はない
0461デフォルトの名無しさん
2012/06/01(金) 10:13:10.570462デフォルトの名無しさん
2012/06/01(金) 20:26:04.050463デフォルトの名無しさん
2012/06/01(金) 20:59:26.29最低限の線画を描く
ベース色をバケツツールで塗る
明暗で簡易影
陰影で濃い影
パーツは後から別レイヤーで張り付ける
レイヤーを結合せずにクリッピングして陰影で影つけ
その後は発光と陰影しまくる
でもペイントソフトごとに陰影、明暗、発光はパラメータ違うので頼りすぎはまずい
肌色だけは素で色をおいて影、光をつけるのが無難な気がする
服、髪は多少色変わってもばれない
肌色だけはばれるうさ
0464デフォルトの名無しさん
2012/06/01(金) 21:27:01.67. )
,―ヽ__(__、―
,/ ノ ヽ ~\
/ ノ IPA ヽ ~\
/ ノ ヽ、 `ヽ
| ノ / ̄\ / ̄~ヽ ヽ i
| ノ | ノ
\ | <●> <●> ( )
\ | | | i /
| / ヽ レ
i (●_●) /
i、 ,-――-、 ・ /
i、 <(EEEEE)> ∵/ おまえら小学生が受かる試験落ちたりしてないよなw
i、 \ ./ /
\ ーー ,ノ
,,.....イ.ヽヽ、ー-―一ノ゙-、.
: | '; \_____ ノ.| ヽ i
| \/゙(__)\,| i |
> ヽ. ハ | ||
0465デフォルトの名無しさん
2012/06/01(金) 22:30:28.42ttp://www.tokyo-np.co.jp/s/article/2012060101001707.html
0466デフォルトの名無しさん
2012/06/01(金) 23:14:12.82array_a = ["ぬ", "る", "ぽ"]
array_b = ["ぽ", "ぬ", "る"]
dif = array_a - array_b
とやったら、dif = empty になるんですが、
「HTMLをパースして特定の部分を抜き出した配列」
「ローカルのファイルを一行ずつ読み込んだ配列」
が全く同じテキストを要素に持っている場合に「-」を用いても、emptyにならないんですが。。。。
0467デフォルトの名無しさん
2012/06/01(金) 23:41:26.74再現コードを貼って
0468デフォルトの名無しさん
2012/06/01(金) 23:46:35.92p array_b
で中身同じか確認してみろ
文字コードや末尾の改行コードとかが一致してないんじゃねーの
0469デフォルトの名無しさん
2012/06/01(金) 23:58:49.76すいません
かなり長いし社外秘も多少あるので簡略化したものを作らないといけませんが
解決したので、その必要はなくなりました
>>468
その通りでした・・・pで見たら 片方にだけ要素のあとに\nが入ってました
テキスト比較ソフトも使ったのに。。。ぐぬぬ
というわけでありがとうございました
0470デフォルトの名無しさん
2012/06/02(土) 08:38:15.08約10万人と予想していた初日の来場者数は約3万2000人だった。8月12日までの3カ月間の会期に延べ1082万人の来場を見込んでいるが、
開幕後も入場者数は伸び悩んでおり、現在の傾向が続けば目標達成は困難だ。
http://headlines.yahoo.co.jp/hl?a=20120528-00000020-fsi-bus_all
0471デフォルトの名無しさん
2012/06/02(土) 16:53:18.73風紀委員会の断頭台…
なにも考えないしなにも感じない…
なにも喜ばないしなにも怖がらない…
切りさいて引き裂いて一件落着大団円……!!
0472デフォルトの名無しさん
2012/06/03(日) 13:02:35.260473デフォルトの名無しさん
2012/06/03(日) 15:05:48.75つくっているのですが、
Reck::Responseのbodyの中に
htmlソースを入れて外部css読み込みを指定したのですが
スタイルが反映されません。
cssファイルも明示的にrackアプリケーション上に読み込んだり、
content-type指定せねばならないでしょうか
<参考にしているサイト>
http://www.kaeruspoon.net/articles/845
0474デフォルトの名無しさん
2012/06/03(日) 15:12:44.62中学生がコミッタになれるしね。
老害ばかりの言語と違って、実力があれば若くても活躍できるのだよ。
0475デフォルトの名無しさん
2012/06/03(日) 15:20:32.27言語が目的じゃないなら、難しいのは却って邪魔だと思うよ
0476デフォルトの名無しさん
2012/06/03(日) 16:20:14.11# 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を解決してくれるみたい
0477473
2012/06/03(日) 18:58:08.98早速、助かりました!ちゃんとできました。
なんかRackとかNginxのDSLに慣れません。
俺サイト構築まで道は長いっす。。
0478デフォルトの名無しさん
2012/06/03(日) 19:07:41.950479デフォルトの名無しさん
2012/06/03(日) 19:08:47.84Rubyスクリプトのように書けばよろし
0480デフォルトの名無しさん
2012/06/03(日) 19:39:52.53useしたほうが楽だと思うけどなあ
0481デフォルトの名無しさん
2012/06/03(日) 19:46:54.460482デフォルトの名無しさん
2012/06/03(日) 19:53:22.57例えばどこらへんがRubyっぽくない?
DSLっていってもせいぜいRakefile程度だと思うんだけど
0483デフォルトの名無しさん
2012/06/03(日) 20:25:16.53川崎重工業と東芝は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
0484デフォルトの名無しさん
2012/06/03(日) 22:20:36.19a = []
これで配列ができるんだけど大きさを指定しないとまずくないの?
0485デフォルトの名無しさん
2012/06/03(日) 22:25:32.770486デフォルトの名無しさん
2012/06/03(日) 23:22:42.90逆に配列の存在意義ってなんなのって話になってるよね
まあコレクションだとキャストとかジェネリックスとかうざいんだけど
0487デフォルトの名無しさん
2012/06/03(日) 23:23:04.37全部コンピュータにやらせればいい
もちろん、その代償として動作速度もメモリ効率も悪くなるが
まあ、つまり、そういうわけで、RubyはCよりも遅い
0488デフォルトの名無しさん
2012/06/04(月) 08:51:37.76余談だがJavaの配列は、他にプリミティブを入れられるコンテナーがない、
とかで使い道がないわけでもない。
0489デフォルトの名無しさん
2012/06/04(月) 09:38:41.12人をバカにする。公害である。これだけ言われても電波を止めないというのであれば、
私たちのライフスタイルを変えて観なければよろしい。
高校野球もだ。NHKの中継を一切観ない。いや、中継をしているのならば受信料を拒否する。
「みなさまのNHK」が節電に反する国賊行為をしているのである。当然のことだろう。
球児たちのためにも大会はやればいい。ただし、早朝試合とナイターにする。熱中症についてあれほど
報じながら炎天下で球児に試合をさせる朝日新聞の神経が私にはわからない。
馬鹿どもに声高に抗議するのにはもう疲れたし効果がないこともわかった。だから私たちはゆるやかに
生き方を変えて、奴らを不要なものにしてしまおう。この柔らかな革命がうまくいけば、
たとえば不当な税金に対しても、日本人は立ち上がるすべを覚えるかもしれない。電力不足と、
節電などを嘘つきどもが押しつけてくるこの夏は、日本人にとってあるいは歴史的な好機になるかもしれないのだ。
静かに、したたかに、この夏を楽しもうではないか。こうすれば節電できる式の記事や番組も
無視することだ。おまえらがそういうことをやめるのが、いちばんの節電だ、ともうわかったのだから。
http://www.news-postseven.com/archives/20120604_113264.html
0490デフォルトの名無しさん
2012/06/04(月) 10:43:48.20動的配列。ただし管理はRuby側で勝手にやる。
0491デフォルトの名無しさん
2012/06/04(月) 10:48:42.15最近はそっちの言語でもあんまり理屈を教えないんだろうか
0492デフォルトの名無しさん
2012/06/04(月) 10:57:40.82たぶんあんまし深い意味はない
0493デフォルトの名無しさん
2012/06/04(月) 11:11:59.300494デフォルトの名無しさん
2012/06/04(月) 18:54:16.81おける自動車関連の調査結果「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
0495デフォルトの名無しさん
2012/06/04(月) 21:51:40.88pastebin.com/QbnBCzdb(規制中のためソースを貼りました)
0496デフォルトの名無しさん
2012/06/05(火) 00:47:55.46試してないけど、ボタンのidも指定しないとダメなんじゃないの?
0497デフォルトの名無しさん
2012/06/05(火) 02:10:16.39わかった
サイト作った人のほうでボット避けがしてあって、それに引っかかってる…としか言えん
もう解決してるかもしれないけど、せっかくなので、やり方を教える
普通、なにか「よくわからんけど、これで動作するはずなのに何故かサーバに弾かれる」ということが起こった場合、
「ふつーの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だ
0499デフォルトの名無しさん
2012/06/05(火) 03:03:57.540500デフォルトの名無しさん
2012/06/05(火) 04:31:11.31騙されるな!在日の自作自演だ!
>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/
0502デフォルトの名無しさん
2012/06/05(火) 09:09:27.731日ぶん"遅れ"たからって他の人に契約取られたりなんてしないわけだし、
実際にやってからその結果を報告されたほうが何万倍もありがたいわな
もしかしたら最近はケータイショートメールの「見たら即レス」の慣習が母体になってるのかもしれんが
0503デフォルトの名無しさん
2012/06/05(火) 22:34:13.02ヘッダに出てこないんですが・・・・原因はなぜなんでしょうか?
def send_message
mail_content =
"
<<-EndOfMail,
From: Ruby <[email protected]>
To: iPhone <[email protected]>
Subject: Update
Date: #{Time.now}
Message-Id: <[email protected]>
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
0504デフォルトの名無しさん
2012/06/05(火) 22:47:46.62Ruby ヒアドキュメント で調べて
0505デフォルトの名無しさん
2012/06/05(火) 23:43:48.36ありがとうございました
今はよく分からなかったので、<<で代入する方法に切替えました
0506デフォルトの名無しさん
2012/06/06(水) 12:06:10.73Ruby193\lib\libmsvcrt-ruby191-static.aというように
バージョン1.9.1っぽいファイル名が存在します。
これは昔のバージョンから変更されていないということでしょうか?
Ruby 1.9.3 からライセンスが変更されたので
BSDライセンスとして扱っても大丈夫かどうかが知りたいです。
0507デフォルトの名無しさん
2012/06/06(水) 12:30:21.661.9.1名義のサブディレクトリにインストールされ、1.9.1名義のバージョンファイル名がつく
ABI互換であるという印なのだが、まあこれがまた初心者には意味不明な上に部外者にも意味不明(添付ファイル名だけが継続なので)
いちおうマニュアルやらリリースノートやらには記述があるんだが、トラップではあるかと思う
単にバイナリが互換であるというだけなので、1.9.3のライセンスはBSDライセンスで(も)よい
0508デフォルトの名無しさん
2012/06/06(水) 12:35:32.58ありがとうございます。
助かりました。
0509デフォルトの名無しさん
2012/06/06(水) 20:18:33.56フジテレビ電話したら今日の番組の変更は無いと言われた
「皇族の方が亡くなられたのに変更はしないんですか?」
と聞いたら
「今のところありません。よろしくお願いします」だと
国の一大事に捏造人気アイドルの茶番をやるつもりらしい
津田大介 @tsuda
別にAKBに恨みはないし、がんばっていただきたいなと思うけど、国民的に大きく報じる話題は
ほかにもっともっとたくさんありますよねじっさい……。テレビは特に貴重な電波資源使ってるんだし。
http://twitter.com/tsuda/status/210265622502842368
東浩紀 @hazuma
同意。
http://twitter.com/hazuma/status/210266350730481664
0510デフォルトの名無しさん
2012/06/06(水) 22:34:13.07それを使うメソッドのブロックの中に書くべきですか?
そのスクリプトでどんなライブラリを利用しているかを明示する為にもファイルの先頭に記述すべき
0512デフォルトの名無しさん
2012/06/06(水) 23:33:54.65分かりました
ありがとうございました
0513デフォルトの名無しさん
2012/06/07(木) 04:14:44.75# 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 の定義が読み込まれるのが気持ち悪いと言う人がときどき出るんだけど、あんまり気にしないで欲しい
0514デフォルトの名無しさん
2012/06/07(木) 10:21:36.22詳しくありがとうございました
参考になりました
0515uy
2012/06/09(土) 03:08:16.48a = [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
0516デフォルトの名無しさん
2012/06/09(土) 06:05:24.81後ろに回すのは海外で時々見る(書く人によるらしい)
なんか宗派でもあるんだろうか
0517デフォルトの名無しさん
2012/06/09(土) 08:17:42.25戻り値メソッドチェーンするときだけカッコつけてて、指指して笑えるほどカッコ悪い
0518デフォルトの名無しさん
2012/06/09(土) 10:18:57.66=> "\"Hello\""
1.9.2p320 :005 > %q["Hello"]
=> "\"Hello\""
すいません。%Qと%qの違いがよくわからないです。
どう違うのか例をあげて教えてください、宜しくお願いします。
0519デフォルトの名無しさん
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' と同じ
シングルクォートとダブルクォートの違いがわからない場合は、これは重要なので自力で勉強してくれ
0520デフォルトの名無しさん
2012/06/09(土) 10:35:51.750521デフォルトの名無しさん
2012/06/09(土) 10:51:01.92ありがとうございます。
わからないことに関して説明不足でした。
以下コマンドラインで実行したものです。
1.9.2p320 :004 > %Q["Hello"]
=> "\"Hello\""
1.9.2p320 :005 > %q["Hello"]
=> "\"Hello\""
上記 の%q["Hello"]は"\"Hello\""となっています。僕もカキコする前そのマニュアルみたんですが
そのマニュアルの説明なら
1.9.2p320 :005 > %q["Hello"]
=> '\"Hello\"`となるような気がします。そこら辺が分かりません。
分かる ようなら宜しくお願いします。
0522デフォルトの名無しさん
2012/06/09(土) 11:07:59.80あそこに出るのはその場合、文字列をinspectしたものだと思うが
そこにシングルクォートで始まりバッククォートに終わるなんて表現は出ないよ
0523デフォルトの名無しさん
2012/06/09(土) 11:18:21.41> '\"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" として返る
0524デフォルトの名無しさん
2012/06/09(土) 11:18:22.04これってつけたほうがいいんでしょうか?
省略すると、インスタンス変数とメソッドの区別がつかなくなると思うんです
ただ、そもそも
hoge.インスタンス変数
とやっていても結局はメソッドを呼び出してるんだと言われたらそれまでですが・・・
0525デフォルトの名無しさん
2012/06/09(土) 11:40:16.58> インスタンス変数とメソッドの区別がつかなくなると思うんです
ローカル変数使用とインスタンスメソッド呼び出しの区別がつかない、だとして回答
def foo
(なんか10行くらい省略)
some_exec(hoge) # ← hogeって何? 省略部分で定義されてたローカル変数? def hoge や attr_reader :hoge とかで定義されてるメソッド?
end
別に区別つけなくてもいいです(そんな変数名忘れるくらい長いメソッド作るんじゃねえ、という意味も込めて)
Ruby パーサがインスタンスメソッドだと思ってくれない場合にのみ、メソッドのほうを hoge() とか書きます
他の言語の流儀が忘れられないような初心者の人が稀にいちいち hoge() とか書いてますが、普通の人は書かないので真似しなくていいです
普段の順番的には、メソッド定義内部で同名のローカル変数を探してからおもむろにファイル内検索するんで、
まあ、その、若干めんどくさいことには変わりないとは言えないでもなくもない
ただ、Ruby では「引数なしレシーバなしインスタンスメソッド」をめちゃくちゃ大量に使うので、
それにいちいち () つけてるほうがたぶん総量としてめんどいんじゃなかろうかという判断をみんなしてるんじゃないかな
0526デフォルトの名無しさん
2012/06/09(土) 11:55:34.25俺は最後の理由で「レシーバ.メソッド」形式に付ける意味は薄いと思う
精々、用法が「メソッド的か」「フィールド的か」という雰囲気付けくらいか
ただ「ローカル変数」と「レシーバの省略されたメソッド(関数を含む)呼び出し」
の区別をする意味で付けることも無くはないかな
0527デフォルトの名無しさん
2012/06/09(土) 15:26:42.12class 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)と出てくるのはなじぇですか?
0528デフォルトの名無しさん
2012/06/09(土) 15:38:13.14@log が初期化されていないから。
initializeメソッド(new時に呼ばれる)を定義し、その中できちんと @log を初期化すればおk。
0529デフォルトの名無しさん
2012/06/09(土) 15:39:06.110530デフォルトの名無しさん
2012/06/09(土) 15:47:30.530531デフォルトの名無しさん
2012/06/09(土) 15:48:59.32文法ミスだろうが構造ミスだろうがケアレスミスだろうが特定のデータのときだけ出るレアな例外だろうが全部握り潰してしまう
>>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
0532デフォルトの名無しさん
2012/06/09(土) 16:04:02.62例外クラスを指定しない場合はStandardErrorを指定したのと一緒では
あとattr_accessor :xしたからといって実際にインスタンス変数@xが定義されているとは限らないだろう
Hoge.new.instance_variablesするとわかる
0533デフォルトの名無しさん
2012/06/09(土) 16:06:31.72>>529
ありがとうございます!!
今回のサンプルコードは指摘通りにメソッドを呼び出してなかったんですが、
このようにメソッドの中でインスタンス変数を初期化するようにしていると、例外が発生した時にそのメソッドが呼ばれないまま
rescueの中でそのインスタンス変数を参照してしまう可能性があるので、
やや行数が増えてもinitializeの中で初期化しておくのが利口なんですかね・・・?
インスタンス変数のスコープの性質的にもその方が綺麗と言えるかもしれませんし
0534デフォルトの名無しさん
2012/06/09(土) 16:24:36.34初期値がnilであるべきならば初期化しなくても実害はないと思うけど
その場合でも俺なら明示的にnilで初期化しておくか、initialize内でtest_methodを呼んで初期化するかな
あとは attr_accessor を使わずに attr_reader にして読み取りのみにし、追記は別メソッドでやるという方法もある
それなら、その別メソッドの最初に @log の中身を確認して無ければ初期化してから処理、とできるでしょ
0535デフォルトの名無しさん
2012/06/09(土) 16:26:15.45def log
@log ||= ""
end
チェッカーに文句言われるからinitializeに全部書く、という消極的な考え方もあるが
0536デフォルトの名無しさん
2012/06/09(土) 19:52:54.36前スレだかでも同じことを言った気がするが
区別をつける必然性がないんだからつかなくても何も問題ない
hoge.fooのfooがインスタンス変数だろうがメソッドだろうがそれに意味はなく、意味があるのは戻り値だから
>結局はメソッドを呼び出してるんだと言われたらそれまでですが
それは確かにそうだがそれとこれとは別の軸の問題
そこに書かれた「hoge」が変数かメソッドか「区別がつかなくなる」と困るのは誰か、と考えればわかると思う
0537デフォルトの名無しさん
2012/06/09(土) 20:38:08.66Array#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で同じだと思っていたのですが、別になってしまいます
なぜこのようになるのでしょうか?
0538デフォルトの名無しさん
2012/06/09(土) 20:59:23.61irb> 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"
0540デフォルトの名無しさん
2012/06/09(土) 22:46:18.41ary[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"
という風になる。
0541デフォルトの名無しさん
2012/06/09(土) 23:21:02.14また、30%の人か。
Rubyは、多次元の配列はサポートしていない。
配列の要素に、配列を許容するので、多次元の配列を記述することができる。
なので、dupはこの場合役に立たない。
aを別の(独立した)メモリーアドレスbに複製するなら
(この言い方も、なんだか誤解されそう? と、言うか、わかりやすいけど、正確でない?)
b = Marshal.load(Marshal.dump(a))
とか、すると良いようだ。たぶん。
も少し、わかりやすい名前にするとか、わかりやすいところに書いとく、
とかの配慮はないみたい。
0542デフォルトの名無しさん
2012/06/09(土) 23:34:29.22マーシャルを使ってオブジェクトのディープコピーを行うのを、配列の配列を
中身まで全部コピーする方法としてマニュアルで紹介するのは、
・他の種類のオブジェクトでも一般に使える方法であること
・配列の配列をディープコピーする方法としては、書くのは簡単だが、
やることとして大げさ過ぎること
といった問題がある。
0543あ
2012/06/10(日) 00:29:26.33puts "#{foo}"
だと配列が空でも[]と出てきてしまうのですが、空白だけ出す方法はないのでしょうか?
0544デフォルトの名無しさん
2012/06/10(日) 02:02:36.83#{}の中はコードが書けるんだから、条件ごと書けば良いよ。
puts "#{foo.empty? ? "" : foo}"
0545あ
2012/06/10(日) 02:30:44.760546uy
2012/06/10(日) 08:51:27.43transposeに破壊的メソッドが存在しないのは何ででしょうか
0547デフォルトの名無しさん
2012/06/10(日) 19:56:18.69を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."というエラーメッセージだけ表示されてしまうんですが
0548デフォルトの名無しさん
2012/06/10(日) 20:09:44.75rescue => 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
0549デフォルトの名無しさん
2012/06/10(日) 20:21:21.13ありがとうございます
0550デフォルトの名無しさん
2012/06/10(日) 22:15:22.49dupで思うようにならないてっことは、
1次元の配列の要素が文字列ってことね。
そこらへん、取扱いは同じなの。
そこを、ちゃんと書くと長くなる。
ので、少し端折っただけなのに
ユースケースとしては、
パズルなんかを解くときに、総当たりしてるときに、袋に当たると、
いくらか、戻らねばならんので、あるときの状態を再現せねばならん時とか。
で、このあたりを書くと、作者さんの嫌いな「再帰的な呼び出し」
をせねばならないことが多い。
0551uy
2012/06/11(月) 06:30:58.63[[1],[2]].map(&:push,4)
とかで引数を渡せないのはなんでなんでしょうか
0552デフォルトの名無しさん
2012/06/11(月) 09:37:29.88[[1], [2]].each.with_object(4).map(&:push)
0553uy
2012/06/11(月) 09:58:33.541.8系では ?a とすると97と表示されていたのですが
1.9系になってからは
p ?a # => "a"
こうなってるんですけど、これって正しい動作なんですか?
だとすれば、?a って構文は何のためのものになったんですか?
だとすれば、アスキーコード見たいときってどうすればいいんでしょうか
"a".bytes do |m| p m end???
0555デフォルトの名無しさん
2012/06/11(月) 11:06:54.84ord
0556デフォルトの名無しさん
2012/06/11(月) 11:13:36.29それなんか意味ある?
0558デフォルトの名無しさん
2012/06/11(月) 11:53:53.19レス番号
嘘書かれてても見えないが
0559デフォルトの名無しさん
2012/06/11(月) 23:09:29.94a.insert(1,*["a","b"])
0561デフォルトの名無しさん
2012/06/12(火) 22:38:24.38プログラミング初心者の私が
答えるのはあれですが、
?aは
"a"[0]と同じように振る舞いますね。
オライリーの
初めてのRubyに書いてあります。
アスキーコードは
String#bytes.to_aのはず
0562uy
2012/06/13(水) 04:55:04.43本当に助かりました
ご教示ありがとうございます
String#bytes.to_aという発想もらい自分なりに考えてみたのですが
String#bytes.firstでそのまま受け取れることが確認できましたっ!
プログラム板でこういったやり取りをするのが僕自身の唯一のリアルです
うれしいなー(」・ω・)」うー!(/・ω・)/にゃー!
みんな答えてくれればいいものをなかなか答えてくれなくて寂しい思いを今までしてまいりました。・゚゚・(≧д≦)・゚゚・。
すぐ答えがかえってくるようなbbsができたらいいのに、あ、でもム板にもこのような心を持った方はまだご健在でいらしたのですね
少し感動してしまいました(o^∇^o)ノ
まだ外も暗い時間だというのに世界が明るくなりました凄くいいぃぃ
長梅雨の曇り空なのに外が晴れているような気分で特にいいぃぃ
このような良質ゆんゆん電波降り注がれて最高にいいぃぃれっつ\(・ω・)/にゃー!
またrubyを使っていて困った事があったら><。。このスレで質問させていただきますのでそのときは教えてくださいねっヾ(≧▽≦)ノ
それでは失礼いたしますデハデハヾ(_ _*)
0563デフォルトの名無しさん
2012/06/13(水) 05:43:21.75の
$.はなにをあらわしてるんですか?
調べてもよくわかりませんでした
0564uy
2012/06/13(水) 06:11:22.77http://doc.ruby-lang.org/ja/1.9.3/class/Kernel.html
p $:
p $LOAD_PATH
p $-I
$:.unshift っていうのは
$: っていうArray型の変数から unshift ってメソッドを呼び出してるだけ
0565デフォルトの名無しさん
2012/06/13(水) 08:42:08.97Rubyが勝手にセットするグローバル変数だよ
ユーザーからは作れない名前だからちょっとばかし特殊だが
$: はロードパスのディレクトリ配列を返す
若干わかりにくいので、どちらかというと、別名の$LOAD_PATHのほうが人気
http://doc.ruby-lang.org/ja/1.9.3/class/Kernel.html
Unix系シェルの実行パス列挙の区切り文字は : だから連想しやすいよね、という、歴史的経緯を鑑みた連想しにくい理屈がつけられている
Rubyは、これの順番でrequireするファイルを探す
unshiftだから配列の先頭に追加で、つまりは「このファイルのあるディレクトリを$LOAD_PATHの先頭に追加」だ
直後の require 'hoge' でまず最初に「自分のディレクトリにあるhoge.rb」を確実に探して欲しいときのイディオムだな
0566デフォルトの名無しさん
2012/06/13(水) 10:15:42.80パスの列挙区切りで云々というのをPerlの本で見かけた記憶がある
0567デフォルトの名無しさん
2012/06/13(水) 18:57:40.13そのきもさを継承したRubyって
0568デフォルトの名無しさん
2012/06/13(水) 19:58:14.05Perl自体がシェルから引き継いだ $$ なんてのもある。
0570デフォルトの名無しさん
2012/06/13(水) 22:37:48.1911-dfg.jpg
このような、なんの法則もない画像が1万点フォルダにあって、
それぞれの頭文字3文字だけとったフォルダを作って、分類することはできますか?
「abc」フォルダに「abc002.jpg」。
「11-」フォルダに「11-dfg.jpg」。
こんな感じで分けたいんですが可能でしょうか?
0571デフォルトの名無しさん
2012/06/13(水) 22:51:28.52でも、チェックとディレクトリ作成とファイル移動はぜんぶ自力で書かないといけないな
0572デフォルトの名無しさん
2012/06/13(水) 22:57:57.21>> if s =~ /(.{3})(.*)/ then puts $1, $2; end
abc
123456
とかやれば分離できる
0573デフォルトの名無しさん
2012/06/13(水) 22:58:35.110574デフォルトの名無しさん
2012/06/13(水) 22:59:13.570575デフォルトの名無しさん
2012/06/13(水) 23:05:20.21ひとつのフォルダにあまりにファイルが多いと、
システムが不安定になるんで、
適当にばらけたフォルダに数千ファイルくらいに、
別れてくれれば良いだけなんす。
0576デフォルトの名無しさん
2012/06/13(水) 23:05:24.52ありがとうございます
>>572
さっぱりなので、ちょっと勉強させてもらいますw
>>574
実は画像が数100万ファイルありまして。。
一覧を表示するのも難儀な状態なので、
1フォルダ当たりの画像数を減らしたいというのが発端なんです。
0578デフォルトの名無しさん
2012/06/13(水) 23:07:07.260580デフォルトの名無しさん
2012/06/13(水) 23:08:47.37それでもいい?
0582デフォルトの名無しさん
2012/06/13(水) 23:10:03.94filenames = 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)) }
0583デフォルトの名無しさん
2012/06/13(水) 23:10:28.70そのまま上書きするとコンフリクトする場合は
ファイルの日時やサイズやどちらも同じなら中身も比較して
全く同一なら削除したり移動せずにスキップしたりする機能も付けてる
0584デフォルトの名無しさん
2012/06/13(水) 23:10:46.9236*36*36=46656
フォルダ5万個って便利か? いや、別にいいけどさ
0585デフォルトの名無しさん
2012/06/13(水) 23:11:41.120586デフォルトの名無しさん
2012/06/13(水) 23:12:05.34属性フォルダ分けとかやってる奴ら頭おかしい
0587576
2012/06/13(水) 23:13:41.79ありがとうございます。
まさか希望の動作をするコードを教えていただけるとは思いませんでした。
・・・しかし、随分コンパクトな記述で可能なんですね。
私もwebクローラーとかをrubyで作ってますが、
無駄に長くて恥ずかしい限りです。
教えていただいたコードで試してみます。
ありがとうございました!!
0589デフォルトの名無しさん
2012/06/13(水) 23:18:00.97続きは Python スレでやろう
0590デフォルトの名無しさん
2012/06/13(水) 23:19:46.09シェルスクリプトも書けない奴が他の言語に手を出すな
0591デフォルトの名無しさん
2012/06/13(水) 23:20:36.780592576
2012/06/13(水) 23:22:55.44Pythonスレ、すんごいたくさんあるんですねw
どちらにいけばいいですか?
>>590
シェルスクリプトのサンプルも見せていただけるなんて!
ありがとうございます。
0593576
2012/06/13(水) 23:27:15.28テストしてみたら、完璧に動作しました!
動作も早く、完璧です。
自力でやったら何日もかかるところ(何十日?)頂いたコードで助かりました。
0594デフォルトの名無しさん
2012/06/13(水) 23:31:02.95ls *.jpg | group { $_.Name.SubString(0,3) } | % { md $_.Name; move $_.group -dest $_.Name }
0595デフォルトの名無しさん
2012/06/13(水) 23:37:04.530597デフォルトの名無しさん
2012/06/14(木) 09:25:20.61ありがとうございました
0598デフォルトの名無しさん
2012/06/14(木) 13:21:49.96PowerShellおもしろいな
0599デフォルトの名無しさん
2012/06/14(木) 20:30:49.00他の言語で言う、フラグ(boolean)を渡してif文でフラグがtrueのときに処理する、みたいなのを
やや綺麗に書けるのかなぐらいの認識なんですが
0600デフォルトの名無しさん
2012/06/14(木) 20:43:00.73ブロックで囲まれた部分もオブジェクト。
rubyではブロックも引数として関数に渡せる。
受け取った関数が受け取ったブロックを実行させたい時に命令するのが
yield
0601デフォルトの名無しさん
2012/06/14(木) 20:48:20.37i1,i2 = 1, 1
while i1 <= max
yield i1
i1, i2 = i2, i1+i2
end
end
fib_up_to(1000) {|f| print f, " "}
0602デフォルトの名無しさん
2012/06/14(木) 20:55:13.57文化財庁は「品質のよい日本製の接着剤の使用は仕方ないこと」と説明した。韓国メディアが伝えた。
崇礼門は李氏朝鮮時代の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
0603デフォルトの名無しさん
2012/06/14(木) 20:56:13.54自前でイテレータ実装したくなった時に使えばよろし
練習がてらにls('-1'){|f| puts f}とか作ってみたら
0604デフォルトの名無しさん
2012/06/14(木) 22:13:25.23ブロックとProcは区別せぇよ
0605デフォルトの名無しさん
2012/06/14(木) 22:20:48.53どうしても必要なときにしか使ってはいけないから、今はそんな程度でよい
0606デフォルトの名無しさん
2012/06/14(木) 22:21:26.09メソッドeachを定義してイテレータを実装する時に使う
class Foo
include Enumerable
def each
for x in @ary
yield x
end
end
# 以下略
自分の場合、これ以外の用途でyieldを使う事は無いなあ
0607デフォルトの名無しさん
2012/06/14(木) 22:32:14.040608デフォルトの名無しさん
2012/06/15(金) 01:58:40.24Ruby のブロック付きメソッドとイテレータ - yield の様々な使い方 | すぐに忘れる脳みそのためのメモ
http://jutememo.blogspot.jp/2008/03/ruby-yield.html
0609デフォルトの名無しさん
2012/06/15(金) 02:28:09.89Rubyist なら当然知ってる!? Proc.new と lambda の違い - (゚∀゚)o彡 sasata299's blog
http://blog.livedoor.jp/sasata299/archives/51488276.html
・Ruby ではほぼすべてがオブジェクト(うんうん。らしいねらしいね)
・だたしブロックはオブジェクトではない(ほほぉ〜)
・ブロックをオブジェクトにしたものが Proc(そ、そういうことかー)
0610uy
2012/06/15(金) 05:39:26.46やたら個人ブログのURLはって「ほらソース」みたいなレスをみるんだけど
無名PGの個人ブログなんてソースにならねーだろ
個人ブログに書かれたものなんてWikipedia以下だと認識してる
自演乙って事かい?
0611デフォルトの名無しさん
2012/06/15(金) 05:51:06.85mac 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がアクティブになったのが原因なのでしょうか?
戻す方法がわかりません。宜しくお願い致します。
0612デフォルトの名無しさん
2012/06/15(金) 06:20:06.26個人負債の増加速度は経済協力開発機構(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
0613デフォルトの名無しさん
2012/06/15(金) 07:37:43.45良いアイデアありがとう。
0614デフォルトの名無しさん
2012/06/15(金) 08:37:31.20Wikipediaは誰でも編集出来るが故に、内容の質も上から下まで様々
個人ブログは良くも悪くも、その個人の質である程度一定してる
その違いだよ
0615デフォルトの名無しさん
2012/06/15(金) 08:41:10.21板全体であぼーんされていて誰からもレスがもらえないからってとうとう自演を始めた…
0616デフォルトの名無しさん
2012/06/15(金) 09:08:05.62MacPortsのrubyを普通にインストールすると、
コマンド名は ruby (1.8)と ruby19 (1.9) になるから、
1.9のほうを+nosuffix付きで入れたのでない限り。
両方アクティブにしても共存できるはず。
これ以上はrubyとは本質的には関係ないので 新・mac板 で。
0617デフォルトの名無しさん
2012/06/15(金) 09:08:39.610618デフォルトの名無しさん
2012/06/15(金) 13:00:29.30スレ違いだったんですね、すいません。
適宜deactivateしてみたのですが、うまくいきません。。
新・mac板いってきます。有難う御座いました。
0619デフォルトの名無しさん
2012/06/15(金) 17:15:44.340620デフォルトの名無しさん
2012/06/15(金) 17:25:03.87ゲーム作成が(実質)専門となってるような言語やシステムを使うといい
WindowsならHSPとか
0621デフォルトの名無しさん
2012/06/15(金) 17:35:56.54http://toro.2ch.net/gamedev/
ほい
個人的には、Rubyという言語自身と並行して学ぶ理由はないと感じる
Rubyでたいていのものを作れて、Cでもゲーム作れるくらいのAPIに熟達したような人が
「あえてRuby経由でゲーム作ってみた」というのに挑戦するためのライブラリならいくつかあるんだが、
これに自力検索等で到達できなかった、または見てもそういうものだってわかんなかったってことは、
Rubyとゲームに使えるWindows APIの両方の知識が足りてないってことなんで、Rubyでゲームを作ることは「できない」でいいかと思う
0622デフォルトの名無しさん
2012/06/15(金) 17:44:01.850623uy
2012/06/15(金) 20:04:11.21ズブの初心者には無理だけど、ある程度rubyわかっててC++でゲーム作れるくらいの奴ならゲームの種類によっては
選択肢にあがってもおかしくないのに、やってる奴少なすぎてもったいない
0624デフォルトの名無しさん
2012/06/15(金) 20:09:44.21ttp://www.amazon.co.jp/dp/4839917299/
0625デフォルトの名無しさん
2012/06/15(金) 20:12:49.24頂いた情報基にさがしてみます。
0626デフォルトの名無しさん
2012/06/15(金) 20:58:18.200627デフォルトの名無しさん
2012/06/15(金) 21:10:53.28セルを指定して順番に入力していき全データを書き終えたら終了、というような
サンプルプログラムってありませんか?
バージョンは1.8.7ですがググると古いものがヒットします
0628デフォルトの名無しさん
2012/06/15(金) 21:26:21.130629デフォルトの名無しさん
2012/06/15(金) 22:07:50.56津
ttp://nyaos.org/d/index.cgi?p=[Ruby]+win32ole
ttp://jp.rubyist.net/magazine/?0004-Win32OLE
0630デフォルトの名無しさん
2012/06/15(金) 22:39:01.97gemじゃないやつを含んでもいいのであれば
Ruby/SDLとかStarRubyとかDXRubyとか
(もしかしたら最近は他にも新しいライブラリがあるかも)
上の方では懐疑的なレスもあったが
俺は普通にゲームは作れると思う
HSPと比べてRubyでゲームが作りにくいかと言われると、別にそんなこともない
ただ、最近のRPGツクールではRubyが組み込みで入ってるから
RPGツクールに頼らず自前でやるべきかどうかは一度考えた方がいい
そこそこの速度が必要だとか、RPGツクールでは作りにくい特殊なシステムだとか
もしくはできるだけお金をかけずにゲームを作りたいとかなら
上記ライブラリを試してみるのがよいと思う
0631デフォルトの名無しさん
2012/06/15(金) 23:16:01.160632デフォルトの名無しさん
2012/06/15(金) 23:53:08.07もしもHSPの言語部分を丸ごとRubyに取り替えたとして
速度的に成り立つんだろうか?
0633デフォルトの名無しさん
2012/06/16(土) 02:37:21.43hash = {}
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 が入ってしまいます。なぜでしょうか?
0634デフォルトの名無しさん
2012/06/16(土) 02:52:32.65p ary.sizeしてみるんだ
0635デフォルトの名無しさん
2012/06/16(土) 03:00:10.026と出ました。。。ああ。
((ary.size)/2).times do
にしたらうまく行きました。ださいコードですが。答え見たらこんなでしたが。なるほどね。。。
while key = array.shift
value = array.shift
hash[key] = value
end
0636デフォルトの名無しさん
2012/06/16(土) 05:16:57.44今のRubyでスタックやキューを初心者に教える意味はあるのか?
スタックやキューと言えない配列に対してArray#popやArray#shiftをさせる意味はあるのか?
>>635
ということで、それ悪問だから忘れていいよ
def str2hash(str)
arr = str.split
Hash[*arr]
end
まあ、*による変数展開をいきなり教えるのもどうよって感じではあるんだが、すくなくともArray#shiftよりは使うはず
変数になってない場合は動作しないので注意、たとえば Hash[*"key value".split] はうまく動かない
0637uy
2012/06/16(土) 06:00:45.28hash = {}
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 ]
0638デフォルトの名無しさん
2012/06/16(土) 06:02:40.760639デフォルトの名無しさん
2012/06/16(土) 07:30:16.67いや普通にshiftは多用するだろ
他の人のコード見てたらよく見かけることもあるし
「スタックやキューの概念が難しいから」で避けてよいものではない
0640デフォルトの名無しさん
2012/06/16(土) 07:41:16.92キューじゃないものから「先頭を削って返す」ためだけに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
0641デフォルトの名無しさん
2012/06/16(土) 07:56:25.030642デフォルトの名無しさん
2012/06/16(土) 10:42:26.27Hash[str.split(/\s+/).each_slice(2).to_a] #奇数でも大丈夫、最後の足りないvalueはnilになる
Hash[] の引数は配列の配列でも大丈夫
Hash#to_aしたときに出来るやつ
0643633
2012/06/16(土) 12:49:29.25仰るとおり、たのしいRubyでした。まつもとさんのRuby本で挫折したのでこっち呼んでます。
0644デフォルトの名無しさん
2012/06/16(土) 13:56:49.06RubyInstaller(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を使う場合は、どこかに追加の設定が
必要なのでしょうか?
恐れ入りますがご教授戴きたくお願い致します。
0645デフォルトの名無しさん
2012/06/16(土) 13:58:41.76デフォルトのカラースキームだと、ローカル変数が色分けされていません
またコメントもできれば斜線ではなく、緑色とかにしたいんです
http://www.dotup.org/uploda/www.dotup.org3096545.jpg
どこをいじればいいのでしょうか?
0646645
2012/06/16(土) 14:51:29.67テーマでした
0647デフォルトの名無しさん
2012/06/16(土) 15:19:30.02ほぼFAQであり、なおかつその指摘も英語で書かれるであろうと思われるので読まれないであろうと思われ、
さらに原因と対処に気付くかどうかもWindows初心者であるがゆえにいつまでもないと思われるので
結局はいつまで経っても直らないであろうと思われる
インストール時に英語読まなかっただろ
「Add Ruby executables to your PATH」という項目があって、チェックボックスが外れてたはずだ
Rubyのスタートメニューからプロンプトを起動するという使い方以外をするときは、ここにチェックを入れる
もちろん、インストール時にやらなくてもあとからすることもできるが、PATH環境変数の概念がない場合はそれ自体思いつかないという罠が
「Rubyディレクトリの中のbinディレクトリを、環境変数PATHに追加する」という行為を行なう必要がある
使ってるWindowsでどうやるかまでは知らないのでぐぐってくれ
0648デフォルトの名無しさん
2012/06/16(土) 15:38:54.700649デフォルトの名無しさん
2012/06/16(土) 17:49:10.8024時間テレビで放送されたAKB48のCMで、日の丸が修正され消された
↓
画像
http://image.space.rakuten.co.jp/lg01/52/0001119252/85/img0552ae48zik5zj.jpeg
記事 イザ
http://wellbetogether.iza.ne.jp/blog/entry/1773715/
0650デフォルトの名無しさん
2012/06/16(土) 20:33:37.21どこを立て読みとおもった私は擦れてますね。
超遅レスですがどーいたしまして。
0651デフォルトの名無しさん
2012/06/16(土) 20:56:58.61日本でだけ使用されてるなら、そりゃ全部日本語なんだろうけどね
英語圏でも使用されてるから、そりゃそれは英語なんだろうな
英語で書かれたものが日本語になるような機能は残念ながらついてない
0652644
2012/06/16(土) 21:23:49.74おそらく私の説明が悪かったものと思います。申し訳ありません。
imgur.com/FTyvD
Rubyへのパスは通しており、コマンドプロンプトからのデバッグは可能です。
また、ActiveScriptRubyを使った場合はEmacsからのデバッグはできるのですが、
RubyInstaller版を使った場合は、Emacs経由でのデバッグはできない(例えばs
コマンドが無視される)という状態になっています。
RubyInstallerの場合、RubyInstaller専用の設定をinit.elに入れないとダメなのか、
何らかのgemをいれないとダメなのか、そのあたりの見当が付かずお尋ねした次第です。
不勉強で申し訳ありません。
0653644
2012/06/16(土) 21:32:44.79i.imgur.com/sHYoF.jpg
0654デフォルトの名無しさん
2012/06/16(土) 21:38:31.830655644
2012/06/16(土) 21:49:25.27C:\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
0656デフォルトの名無しさん
2012/06/16(土) 23:23:36.830657644
2012/06/16(土) 23:58:06.73i.imgur.com/wyAIm.jpg
……Aptanaなりvim-rubyでも使った方がいいのかと疑い始めている次第。
Emacsを覚えようかと、Emacs + Rubyの構成に手を出したのがまずかったのかも知れません。
0658デフォルトの名無しさん
2012/06/17(日) 00:30:24.63普段使ってるものでやったほうがよいよ。
0659644
2012/06/17(日) 00:33:41.58そうですな。書く以前の段階でハマって意地になってるかもしれませんわ。
普段はサクラかAptana、Debian使ってるときはVimですんで、そっちでやることにします。
0660デフォルトの名無しさん
2012/06/19(火) 17:34:54.48テキスト(文字列)を適当な文字aに格納して、それを
file = "test.csv"
open(file,"wb") do |f|
f.print a
ってやってみるとことまではできました
このあと「これはこのセルに書き込みたい」という条件を付け足したいのですが、
正規表現を使いまくる感じでしょうか?
0661デフォルトの名無しさん
2012/06/19(火) 21:45:41.85.exl形式のファイルに出力したいのか.cvsでもいいのか
既存ファイル等をExcelで開いてその上でセルの内容を上書きしたいのか
等々、もうちっとやりたい事を詳しく書けば知ってる人が教えてくれるだろう
0662デフォルトの名無しさん
2012/06/19(火) 22:15:05.41は、順序が逆でしょ。
カンマ、スペース、タブ区切りなどの、テキストファイルを読み込む方法をEXCELは、標準で持ってますよ。
それが出来ないのなら、そこらのPC教室に行って来い、で良いと思う。
真面目にレスすると >>661 みたいになるの?
MSは基本、非公開だし、バージョン変わると、自分のとこも継承できないのに。
0663662
2012/06/19(火) 22:26:20.00カンマ区切りにして、
hoge.csv
にすると、ファイラー(エクス なんとか)でクリックすると、EXCELでopenしてくれるかもね。
0664662
2012/06/19(火) 22:40:42.74もともと、テキストファイルには、そのような情報が無いから。
0665662
2012/06/19(火) 23:04:02.81か、
ごめんね。
セルの位置は、改行とレコードの区切りでなんとかしてもらわねばならんと、思う。
参照して、合計を出すとか、テキストファイルではできないから。
Rubyでできないとかではなく、テキストファイルはそんなもの。
0666デフォルトの名無しさん
2012/06/20(水) 02:52:33.27exlap.rbとか使うと良いんじゃないでしょうか?
臨時串で書き込んでるのでurl貼れないのですが、exlap.rbで検索するとすぐ見つかります。
0667デフォルトの名無しさん
2012/06/20(水) 08:21:10.51まず、理解レベルの確認。
*.csvを「エクセルファイル」と勘違いする初学者も居るけど、
*.csvはエクセル専用ではなくて、「カンマ区切りのテキストファイル」だと理解してるよね?
次に、以下のどれをやりたいかによって方法が違う。
1.*.xlsを新規作成or追加書き込みor書き換える。
2.*.csvを新規作成or追加書き込みor書き換える。
*.csvファイルをExcelに手動でインポートすると、指定セルにデータが配置される。
3.Excelを起動後または起動済みExcelのセルに自動的に書き込んでいく。
0668デフォルトの名無しさん
2012/06/20(水) 08:36:46.880669661
2012/06/20(水) 08:40:36.76.exlじゃなくて.xlsね
0670デフォルトの名無しさん
2012/06/20(水) 17:08:41.12p /hoge/
これはおもろい
いろんなスクリプトの先頭にp = 1と書き込んでやろうw
0671デフォルトの名無しさん
2012/06/20(水) 17:44:21.050672デフォルトの名無しさん
2012/06/20(水) 20:51:26.31p = 1
p(/hoge/)
0673デフォルトの名無しさん
2012/06/20(水) 21:00:14.71puts puts
0674デフォルトの名無しさん
2012/06/20(水) 21:02:49.70パーサ書いたこともないんだと思う
っていうかスコープ…
>>672
そんなことしなくても、メソッドだと思える書かれ方をされている場合はメソッドのように動作する
$ ruby -e "p=1; str='hello'; p str"
"hello"
むしろこれはRubyの正規表現リテラルの問題
0675デフォルトの名無しさん
2012/06/21(木) 06:29:30.600676デフォルトの名無しさん
2012/06/21(木) 06:57:07.940677デフォルトの名無しさん
2012/06/21(木) 07:00:49.78p "hoge" # "hgoe"を出力。これが大丈夫なのに
p /hoge/ # SyntaxErrorになる。なんで?
この挙動が目を引いたってことなんだろう
pの先に正規表現リテラルが来ても代入ではなくメソッドコールだと区別できそうなものだけど
0678デフォルトの名無しさん
2012/06/21(木) 08:01:55.69p /hoge/iなんかだとSyntaxErrorじゃなくてNameErrorになるし
0679デフォルトの名無しさん
2012/06/21(木) 09:22:34.66> p = 1.0; hoge = 2.0; i = 3.0
=> 3.0
> p /hoge/i
=> 0.16666666666666666
ふおお
0680デフォルトの名無しさん
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/
0681デフォルトの名無しさん
2012/06/21(木) 10:22:48.340682デフォルトの名無しさん
2012/06/21(木) 13:21:18.47http://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? ここで帰って行っているのね。
よくこんなの考えついたなぁ。
0683デフォルトの名無しさん
2012/06/21(木) 23:12:30.52何か特別な発想が入ってる?
0684デフォルトの名無しさん
2012/06/21(木) 23:50:46.610685デフォルトの名無しさん
2012/06/22(金) 00:06:12.64Windowsでもにたようなプロセスごとのスタック量の上限はあると思う。
0686uy ◆QIYIaM7QCo
2012/06/22(金) 01:18:34.44再帰できる回数が10分の1くらいになってる
しかもなにやら1.9のほうは再帰できる回数が
メモリ配置の関係なのか、8000〜15000回あたりを彷徨って不規則という
0687デフォルトの名無しさん
2012/06/22(金) 05:53:27.67inject
# =>"m1:15:"
↑ここで配列が空になっているから呼ばれたところに戻るんだけども。
関数の動作は続いているんだねぇ。
呼ばれた関数に戻るって考えればわかるけど
終了条件をきちんと理解してなかったな。
List配列>inject1>inject2>inject3>inject4>inject5>nil>戻る ×
List配列>inject1>inject2>inject3>inject4>inject5>nil>inject5>inject4>inject3>inject2>inject1>戻る ○
自分は上だと勘違いしてた。
mに答えが入っているはずなのにm2をみるとmがどんどん減っていく、
どこに答えを確保してるんだ?
0688デフォルトの名無しさん
2012/06/22(金) 08:20:01.23チケット購入者 各 位
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/
0689uy
2012/06/22(金) 14:23:46.56何この初心者
自分でかいてみりゃいいのに
class List < Array
def inject m , &b
inject b[m , shift], &b ; rescue ; m
end
end
0690デフォルトの名無しさん
2012/06/23(土) 00:04:33.22a = 4
p [i, a]
}
5.times {|i=3, a|
a = 4
p [i, a]
}
ブロック変数とブロックローカル変数の違いがよくわからない。
0691デフォルトの名無しさん
2012/06/23(土) 04:00:54.34a = 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
本来は ; で区切るべきだけど「余計なブロックパラメータ」として記述してもなんかふつーに動く
0692uy
2012/06/23(土) 05:52:22.05p [i, a]
}
5.times {|i=->{p 9}.call,a|
p [i, a]
}
キリッ
0693デフォルトの名無しさん
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)
0694デフォルトの名無しさん
2012/06/23(土) 17:00:39.86だからRuby1.8ではできなかったし1.9でも導入揉めたんだよ
(おそらくはメソッド定義のとこだけ見て)できないのは不自然だとか言った人が「慎重に使えば大丈夫」とか言ってだな
0695デフォルトの名無しさん
2012/06/23(土) 20:05:39.83http://d.hatena.ne.jp/Megumi221/20090731
0696デフォルトの名無しさん
2012/06/23(土) 20:39:19.502012/6/23 11:24
ttp://www.j-cast.com/mono/2012/06/23136697.html
0697uy ◆pdu1UZmweE
2012/06/25(月) 17:17:42.21p (/a/../z/) # => bad value for range (ArgumentError)
正規表現の範囲オブジェクトって作れるの?作れないの?
0698デフォルトの名無しさん
2012/06/25(月) 20:22:51.68判定になってるな。
/a/ <=> /a/ は 0(等しい) が
/a/ <=> /z/ は 比較できず、nilが返るのでそこでエラー
0699デフォルトの名無しさん
2012/06/25(月) 22:45:15.03メソッドの仮引数と<=>は関係ない
0700デフォルトの名無しさん
2012/06/25(月) 22:54:38.75リファレンスのclass Range読んだの?
0701デフォルトの名無しさん
2012/06/25(月) 23:01:53.21id_cmp = rb_intern("<=>") の意味分かる?
0702デフォルトの名無しさん
2012/06/26(火) 13:02:46.04foo(a, b) と foo(a..b) を勘違いしてる?
0703デフォルトの名無しさん
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 に<=>メソッドがあるのだろうか?
0704644
2012/06/27(水) 02:09:52.44自己解決しました。
Devkitが使用する「rb-readline」が悪さをしていたためです。
git clone git://github.com/oneclick/rubyinstaller.git
でDevkitを作るためのスクリプトを落とし、rb-readline関連のレシピや
タスクを削除してrubyをビルドしたところ、Emacsからのステップ実行に成功しました。
以上、ご報告まで。
0705デフォルトの名無しさん
2012/06/27(水) 12:33:37.29if 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#{}のところに動かした回数を表示するにはどうしたら良いでしょうか?
0706デフォルトの名無しさん
2012/06/27(水) 13:21:53.690707デフォルトの名無しさん
2012/06/27(水) 13:47:22.61if 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を使わないで実現できる方法があればそちらを。
0708デフォルトの名無しさん
2012/06/27(水) 13:53:02.15def __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)
0709デフォルトの名無しさん
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)はエラーになるしで・・・
正規表現などでピックアップして展開するしかないですかね?
0710デフォルトの名無しさん
2012/06/27(水) 16:02:05.26× %(str2)では変数名が表示されるだけだし、eval(str2)はエラーになるしで・・・
○ %(line)では変数名が表示されるだけだし、eval(line)だとnilになるしで・・・
いくつかテスト書きながら投稿したので混ざってしまいました。
0711デフォルトの名無しさん
2012/06/27(水) 16:03:26.66def 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
0712デフォルトの名無しさん
2012/06/27(水) 16:21:02.11ただ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") # 区切り文字として改行文字を利用
0713709
2012/06/27(水) 16:42:26.81おおお
なるほど・・・!
シングルクォート文字列を含むダブルクォート文字列を生成してevalで評価すればいい
けどダブルクォートで挟むと重複した時エラーになるのでひと工夫ふた工夫、ということですね?
パズルみたいだ・・・ありがとうございました!
0714デフォルトの名無しさん
2012/06/27(水) 16:49:23.91調べてみるといいかも
$ cat test.erb
Time.now
<%= Time.now %>
$ erb test.erb
Time.now
2012-06-27 16:44:05 +0900
0715709
2012/06/27(水) 17:12:50.60これもチェックしてみます。ありがとうございます。
組み込み(?)だけでも結構スクリプト向けの機能があるんですね。
0716デフォルトの名無しさん
2012/06/27(水) 21:49:13.21rubyを実行するときに、
ruby test.rb
だとうまく実行されるんですが、
直接$ test.rbをで実行しようとすると
values: command not found
puts: command not found
などのエラーが出てきます。
パスは通してるし、ファイル内の#!/usr/bin/rubyの記述も間違ってないようなんですが、どうしてもエラーが出てきます。
どうすればうまく$ test.rbで実行できますでしょうか。
0717デフォルトの名無しさん
2012/06/27(水) 21:54:33.59間違ってます
以上
0718デフォルトの名無しさん
2012/06/27(水) 22:04:56.11# -*- 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!"
0719716
2012/06/27(水) 22:31:04.98ファイルを削除して記述しなおしたら実行できました。
shebangについては、「おまじない」としてでなくどういうものかを読んでいたのですが必ず1行目に書くのは知りませんでした。
細かなところもあやふやなまま進めないようにしたいと思います。
早いレスと指摘ありがとうございます。
0720デフォルトの名無しさん
2012/06/27(水) 22:55:14.89それ動作の理屈知らんってことでふつうにおまじないや
0721デフォルトの名無しさん
2012/06/28(木) 00:01:09.34vimから!ruby %かirb、Rails,apache+passenger環境でしか動かしたことないんだ
0722デフォルトの名無しさん
2012/06/28(木) 00:13:03.54#coding:utf-8
で動くのになんで
# -*- coding: utf-8 -*- は -*- とかはいってんの?
オシャレのつもりなの?
0723デフォルトの名無しさん
2012/06/28(木) 00:43:48.75Emacsがコメント内のモード指定とかを認識する時に -*- -*- を使う、はず。
0724デフォルトの名無しさん
2012/06/28(木) 00:58:04.40UnixやLinux系のシェルにテキストファイルを実行させようとする場合
その一行目の内容が #! で始まる文字列ならば
#!に続く文字列を、それを開く実行ファイルのフルパスとみなす
Windowsだと関係ないけどな、あれは関連付けでやるから
0725デフォルトの名無しさん
2012/06/28(木) 06:28:09.80-*- -*- は 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 になるぞ
あんまり変なこと書くとエラーになって手処理を聞かれるので注意
0726デフォルトの名無しさん
2012/06/28(木) 10:10:04.530727デフォルトの名無しさん
2012/06/28(木) 21:14:33.860728727
2012/06/28(木) 21:20:02.480729デフォルトの名無しさん
2012/06/28(木) 21:27:36.77エロ画像を収集するのに使っています。
0730デフォルトの名無しさん
2012/06/28(木) 21:32:03.060731デフォルトの名無しさん
2012/06/28(木) 22:03:51.210732727
2012/06/29(金) 00:00:22.22いいすね。自分もやってみます。
>>730
結合するといっぺんに観られて良いってことですか?
>>731
面白そうですね。挑戦してみます。
0733デフォルトの名無しさん
2012/06/29(金) 01:24:34.22例えば列の幅を設定するときは
ss.Columns("A").ColumnWidth = 20
ですがこのような感じで書けますか?
0734デフォルトの名無しさん
2012/06/29(金) 11:09:56.40Excelは触らなくなって久しいから適当な事ぬかすと
マクロを記録してVBAのソースを見たらいいんじゃねえかな
あーググったら .WrapText = True とか出てきた
0735デフォルトの名無しさん
2012/06/29(金) 12:34:18.38WrapTextでうまくいかないと思ってたら自分が書き方間違えてましたw
0736729
2012/06/29(金) 21:21:07.53……冗談で言ったんだが済まんかった orz
watirとかでWebアプリの自動テストしたり、雑事の自動化とかに使っている。
0737732
2012/06/29(金) 22:59:42.96>>736
えっ?
watir丁度勉強し始めたところでした。mechanizeではうまくいかないのをwatir利用しようと思ってます。
0738デフォルトの名無しさん
2012/06/30(土) 03:15:41.88a = [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
0739デフォルトの名無しさん
2012/06/30(土) 03:48:50.39a.each_slice(3).to_a
#=> [[59, 11, 90], [25, 81, 9], [4, 95, 2], [44, 19]]
0740デフォルトの名無しさん
2012/06/30(土) 06:31:42.25あれは非sageだとIDがあって専用ブラウザを使ってない人が多くて
なおかつ板の住人なら誰でも答えられる(板の"新着"にさえなればいい)質問が多い雑談板の流儀
IDがなくて専用ブラウザ率が特大でスレごとに話題が特化されているム板ではほとんど意味がない
0742デフォルトの名無しさん
2012/06/30(土) 15:36:36.540743デフォルトの名無しさん
2012/06/30(土) 19:39:48.470744デフォルトの名無しさん
2012/06/30(土) 19:58:17.690745uy
2012/06/30(土) 21:50:13.310746デフォルトの名無しさん
2012/07/01(日) 01:25:00.36> 英数字。[0-9A-Za-z_] と同じ。
> 多バイト文字に対応した正規表現では、日本語のいわゆる全角文字にもマッ チします。
> [0-9A-Za-z_0-9A-Za-z] とでも言えましょうか。
と書かれているんですが、実際はは「あいうえお」にもマッチしてしまうようですが、
自分がドキュメントの解釈を間違えてるんでしょうか?
0747デフォルトの名無しさん
2012/07/01(日) 01:31:20.19perl時代のRegexpルールを沢山抱えておりまして…
0748デフォルトの名無しさん
2012/07/01(日) 01:34:48.68wはwordの略で、単語にマッチするメタ文字です。
> 多バイト文字に対応した正規表現では、日本語のいわゆる全角文字にもマッ チします。
「あいうえお」は全角文字ですよね。
0749デフォルトの名無しさん
2012/07/01(日) 01:36:04.54これはドキュメントの記述の方が間違ってる。「あいうえお」にマッチするのが正しい
内容の更新のタイミングの違いとかがあって、新リファレンスでは間違っているが
旧リファレンスでは正しい記述になっているという不思議な状態
http://www.ruby-lang.org/ja/old-man/html/_C0B5B5ACC9BDB8BD.html
るりまプロジェクトでもチケット(報告)が上がっていないようなので
報告しておいたほうが良いかもしれない
0750デフォルトの名無しさん
2012/07/01(日) 01:39:49.18なるほど、旧ドキュメントのこっちの記述が正しいのですね。ありがとうございます
> 多バイト文字に対応した正規表現では、日本語のいわゆる全角文字(ひらがな・カタカナ・漢字・全角記号)にもマッチします。
0751デフォルトの名無しさん
2012/07/01(日) 01:46:24.090752デフォルトの名無しさん
2012/07/01(日) 11:09:10.80古くなればなるほど放置されたままになる可能性は高いな。
チケットをageするには何かレス付ければいいの?
0753デフォルトの名無しさん
2012/07/01(日) 11:29:54.32国際化対応したのは有名な話だから、
正規表現が全角に引っかかりそうなくらい
わかっとけよキリッ、ってことじゃないんですか。
でも¥wがまともに使えないのは半分バグすね。
0754デフォルトの名無しさん
2012/07/01(日) 11:34:47.48失礼。あらら。。
0755デフォルトの名無しさん
2012/07/01(日) 14:49:58.67http://doc.ruby-lang.org/ja/1.9.2/doc/spec=2fregexp.html
> \w
> 英数字。[0-9A-Za-z_] と同じ。
疑いだしたらきりがないけど、これは正確なのかな?
0756デフォルトの名無しさん
2012/07/01(日) 14:51:05.97バッドノウハウになるんでしょうけど
0757デフォルトの名無しさん
2012/07/01(日) 15:09:35.50Latin-Xでどう動作させるかの時点でひたすらめんどくさい
0758デフォルトの名無しさん
2012/07/01(日) 15:36:57.79「単語」でアクセントつき文字の並びがヒットしたりすんの?
0759デフォルトの名無しさん
2012/07/01(日) 16:46:40.42#<Encoding:UTF-8>
% ruby -e "p 'Läther'.scan(/\w+/)"
["L", "ther"]
% ruby -e "p 'Läther'.scan(/[[:word:]]+/)"
["Läther"]
なんでこうなるんだろう。\wと[[:word:]]は同じでよさそうなものだけど
0760デフォルトの名無しさん
2012/07/01(日) 17:50:35.84http://svn.ruby-lang.org/repos/ruby/tags/v1_9_2_0/NEWS
タグみたいな、機械処理するパターンにマッチさせる時によく使うから
ASCIIオンリーのほうが都合がいいんじゃないの、みたいな判断だと
思ったが記録を探せぬ。
0761デフォルトの名無しさん
2012/07/01(日) 18:25:52.17ChangeLog:
> Sun Aug 16 00:30:33 2009 NARUSE, Yui <[email protected]>
> ...
> * 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] に置き換えるのは大変です。可読性、保守性の面でも
> 望ましくないと思います。
0762デフォルトの名無しさん
2012/07/01(日) 21:26:34.20まあヨーロッパ系の言語はスペース区切りの単語配列みたいなもんだからなw
日本語とはちょっと苦労度は違うだろうね
0763デフォルトの名無しさん
2012/07/02(月) 10:23:26.24char[] str; str = "hoge"; //NG
ひとつの記号に複数の意味を与えないでください
0764デフォルトの名無しさん
2012/07/02(月) 11:19:57.020765デフォルトの名無しさん
2012/07/02(月) 11:41:55.28char *str; str = "hoge"; //OK!!
0766デフォルトの名無しさん
2012/07/02(月) 18:50:35.990767デフォルトの名無しさん
2012/07/02(月) 21:19:43.360768デフォルトの名無しさん
2012/07/03(火) 01:31:18.280769デフォルトの名無しさん
2012/07/03(火) 15:47:18.37=> "1"
ruby-1.9.3-p0 :008 > a = ?11
SyntaxError: (irb):8: syntax error, unexpected '?'
a = ?11
この構文はなんですか?
1文字の数字を文字列化する?
詳しいページがあればお願いします。
0770デフォルトの名無しさん
2012/07/03(火) 16:01:11.99http://doc.ruby-lang.org/ja/1.9.3/doc/spec=2fliteral.html
なんで数値リテラルに分類されてるんだろ。Cみたい
0771デフォルトの名無しさん
2012/07/03(火) 16:38:09.21昔は文字コード返してたような
そのままになっちゃってんじゃね
0772デフォルトの名無しさん
2012/07/03(火) 16:50:18.48いわれてみればそうだった。トン
0773デフォルトの名無しさん
2012/07/03(火) 20:30:27.53誰得なんだこれ
0774デフォルトの名無しさん
2012/07/03(火) 21:15:20.681.9だと取りあえず1.8の記法がエラーにならない程度の意味しか
ない気がする。
0775デフォルトの名無しさん
2012/07/04(水) 20:47:05.43ちなみに前は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とあるので、
その辺りも踏まえて、何か上手い方法はないかと悩んでいます。
0776デフォルトの名無しさん
2012/07/04(水) 21:25:34.83継承を使った差分記述ではいかが?
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を定義する
0777デフォルトの名無しさん
2012/07/04(水) 21:34:03.47RubyでExcel操作するくらいしか用途が思いつかないならRubyなんてやめちまえ
0778デフォルトの名無しさん
2012/07/04(水) 21:46:36.68# 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
0779776
2012/07/04(水) 22:04:50.03X: def initialize
O: def initialize(app)
>>777
>ていうかExcelにはVBAという立派な操作・記述言語があるんだから素直にそっち使え
せいぜい数十stepくらいならVBAでもいいけど、それを超えた規模のコードになると
Rubyプログラミングに慣れた人ならVBAはまどろっこしくなると思うよ
極論を言えば、WindowsにはWSHがあるんだからRubyは一切必要無し...になる訳で
>RubyでExcel操作するくらいしか用途が思いつかないならRubyなんてやめちまえ
Windows上でのRubyプログラミング入門として(=最初の一歩として)、
OLEによるExcel操作はとても良い題材だと思うよ
自分の抱える日常的な作業を自動化/効率化するのに活用するのが、Rubyの主用途だから
0780デフォルトの名無しさん
2012/07/04(水) 22:39:57.83>>779
ありがとうございました。
是非とも参考にして取り入れてみたいと思います。
>>778
ありがとうございました。
それも是非参考にします。
>>777
以前はVBAでやっていたのですが、クラス継承などがなく、全体的にRubyのほうが機能が多かったんです。
また個人的にもRubyには別件で触れたのですが、言語仕様がすごく気に入りましたので
可能であれば他のプロジェクトで使いたいと思いました。
0781デフォルトの名無しさん
2012/07/04(水) 22:40:16.11あなたに頼んでるわけじゃないんだから、そんなに怒らなくても、、、
いま、俄にブームなのはこれでしょ
ttps://github.com/randym/axlsx
0782デフォルトの名無しさん
2012/07/04(水) 22:50:12.79いくつものコードを記述するよりは、シート毎にそれぞれの値の参照先を定義した表を作って、
それに基づいてデータを引っ張ってくるコードを一つだけ書く方がいいと思うけどな
シート名 値1列名 値2列名 値3列名 ...
SheetA A B D
SheetA' A C D
SheetB C V AN
SheetC AA AB AZ
こうしとけば列名(列番号)を弄るだけでプログラムがわからない人でもメンテできるよね
開始・終了位置の定義(検出)とかCSV書き出しとか、下手にコード書くよりExcelの関数や
機能を使った方が簡単だったり速かったりもするのだけど、Ruby関係ないのでこの辺で
0783デフォルトの名無しさん
2012/07/04(水) 23:58:25.09ありがとうございます。
VBAで書く場合はそれも検討したいと思いますが、ただその場合、
コードは1つだけで済みますか?
Rubyは関係ないので、もちろんご回答は気が向いたときでお願いします。
0784デフォルトの名無しさん
2012/07/05(木) 00:46:31.08多機能のでかいアプリ(ライブラリ)をどんだけ使いこなせるかという話なので
それでもRubyを使う意義があるとすれば、正規表現や入り組んだデータ構造
を気楽に扱いたいとか、外部とデータをやりとりするといった場合じゃないかな
0785デフォルトの名無しさん
2012/07/05(木) 01:42:12.00VBSで書けば出来るじゃん。って?まぁまぁそれは…
0786デフォルトの名無しさん
2012/07/05(木) 03:26:22.80使う範囲のすべての列をCSV中間ファイルに出してから、
Rubyプログラムで必要な項目を読むんではダメ?
0787デフォルトの名無しさん
2012/07/05(木) 07:47:06.76セル1個ずつアクセスしてたら遅すぎてやってられなかったわ
列のずれはお好みの方法で
0788デフォルトの名無しさん
2012/07/05(木) 08:34:58.50ありがとうございます
中間CSVというのは、シートもしくは外部ブックを作るという意味ですか?
>>787
ありがとうございます。
メモリ内に全て読み込んでから処理するという意味でしょうか?
あえてRubyでやる意味は薄い・・・かもしれませんが、
Rubyでも遜色なくできるのであれば、今後のためにもRubyでもやりたいです。
0789デフォルトの名無しさん
2012/07/05(木) 08:35:27.81http://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
0790デフォルトの名無しさん
2012/07/05(木) 09:22:22.28セキュリティ上、ワンタイムのページトークンを発行し、
input hiddenのトークン値や
セッションクッキーをブラウザから送信させ、
サーバではあらかじめ記録した
["セッションID" => "ページトークン"]
でこちらが発行したページかどうかを照合したいです。
rackのセッションクッキーの実装について
http://takumakei.blogspot.jp/2009/06/sinatrasession.html
こちらのソースコードは読めます。
でも私そもそものところがわかっていません。
rack、もしくはサーバからのセッションIDの取り出し方です。
rackでは、sesshon[:hoge] = "aiueo"
とハッシュの出し入れをすればクッキーがセットされるようですが、
そのセッションの値を取り出せないと
["セッションID" => "ページトークン"]が実現できない気がしまして。
それとも、"aiueo"があるかnilかどうかで判別できる仕組みが成立するのでしょうか
長いですがよろしくおねがいします
0791デフォルトの名無しさん
2012/07/05(木) 18:22:29.85Rails? ならこっちの方がいいかも
http://kohada.2ch.net/test/read.cgi/php/1329492840/
0792デフォルトの名無しさん
2012/07/05(木) 22:00:17.57session[: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
0793デフォルトの名無しさん
2012/07/06(金) 09:38:03.83お前らは何かに熱中してるか?
おそらく何も熱中してないだろう
俺は女子小学生のパンチラにハマっている
お前らも熱中するものを持つと人生が豊かになるぞ
0794デフォルトの名無しさん
2012/07/06(金) 10:16:20.330795デフォルトの名無しさん
2012/07/07(土) 00:40:07.13レスありがとうございます
それだとaiueoしか、
出てこないですよね。
値がaiueoとはいっている、
つまりnilではないことで
ログイン状態を確認するだけなら
いいとおもいますが、session id
そのものにはアクセスできませんよね。
最初の要望実現するには、
Rack::RequestとかRack::Abstract::ID
継承してごにょごにょするしか
なさそうですね…。うう
0796デフォルトの名無しさん
2012/07/07(土) 10:23:41.150797デフォルトの名無しさん
2012/07/07(土) 11:28:28.530798デフォルトの名無しさん
2012/07/07(土) 12:49:41.93HTMLの属性値として書かれてるときはブラウザ側で除去されるべきだっただろうか
>>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に渡して自力移動するのがいちばん簡単だと思う
0800デフォルトの名無しさん
2012/07/07(土) 17:47:21.44自前でセッションIDを"aiueo"のとこにセットするわけじゃないのか。ごめん
Rackが使ってるセッションIDはenv["rack.session.options"][:id]で取れるみたいだけど
ユーザがこれを使うのが適切かどうかは正直わからない
0801デフォルトの名無しさん
2012/07/08(日) 01:34:14.97rubyに存在しますか?
0802デフォルトの名無しさん
2012/07/08(日) 02:19:20.460803デフォルトの名無しさん
2012/07/08(日) 05:08:18.28http://www.sponichi.co.jp/society/news/2012/07/07/kiji/K20120707003630800.html
島根県は7日、松江市の焼き肉店「焼肉とらじ」で6月29日に
牛の生レバーなどを食べた小学生から50代の男女8人が下痢や
発熱など食中毒の症状を訴えたと発表した。いずれも症状は軽く、
回復に向かっている。
8人とも生レバーを食べたとみられ「最後になるので食べた」
と話している人もいるという。
県によると、症状が出たのは同店で会食した11人のうちの8人で、
生レバーのほかに焼き肉やサラダなどを食べた。検査をしたところ、
5人から食中毒菌カンピロバクターが検出された。
県は11日まで5日間の営業停止処分とした。
最後になるので食べた
最後になるので食べた
最後になるので食べた
0804デフォルトの名無しさん
2012/07/08(日) 08:37:31.05breakに引数的なものを渡しても戻り値として扱っちゃうからなあ
catch〜throw文か例外処理が似てるといえば似てる
0805デフォルトの名無しさん
2012/07/08(日) 11:03:08.05throwはラベル付きbreakや大域脱出gotoの代替に使うことが多いな
0806デフォルトの名無しさん
2012/07/08(日) 14:06:05.99(たぶん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]
0807デフォルトの名無しさん
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とシェルのそれが違っててもいいのですが
できれば、ちゃんと仕様を明文化しておいて欲しいですねぇ
0808デフォルトの名無しさん
2012/07/08(日) 14:34:38.580809デフォルトの名無しさん
2012/07/08(日) 15:38:20.62そもそも上の2つはWindowsのcmd.exeのワイルドカード展開でRuby関係ない。
Dir.globの仕様はマニュアルにあるよ。
http://doc.ruby-lang.org/ja/1.9.3/class/Dir.html
0810デフォルトの名無しさん
2012/07/08(日) 16:06:19.66まあ、それはそうなんですけどね
調べてみたら
{} はブレース展開
[] ? * はパス名展開
って言うんでしょうか
ワイルドカード と呼べるのは ? と * だけなのかな
Windowsしか使ってないので
{} や [] の展開はRuby内でしか使ったことないです
0811デフォルトの名無しさん
2012/07/08(日) 16:12:57.59WindowsXPなんで
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']"
[]
はマッチしません
[〜]はファイル名部分じゃないと使えないような感じです
そこんとこ、どうなってるのかなと
0812790
2012/07/08(日) 17:34:36.34レスありがとうございます。一応自己解決しました。
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
0813デフォルトの名無しさん
2012/07/08(日) 19:16:10.13scriptingbridgeをバリバリつかってる人いますか?
0814デフォルトの名無しさん
2012/07/09(月) 00:21:49.79ruby 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ラインタイムがワイルドカードを展開するだけですが
0815デフォルトの名無しさん
2012/07/10(火) 10:01:45.90いよいよ日本での韓流ブーム終焉の日が近づいている。親韓流、親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/
0816デフォルトの名無しさん
2012/07/11(水) 11:48:32.01配列とfor文と添え字を使って書いてるんですが、
大きい数字からfor文を回すにはどういう方法があるでしょうか?
今は
for i in 0..5
j = 5 - i
# jを使って処理
end
としてるんですが、もっときれいな書き方はありますか?
0817デフォルトの名無しさん
2012/07/11(水) 11:52:15.43お前らは何かに熱中してるか?
おそらく何も熱中してないだろう
俺は女子小学生のパンチラにハマっている
お前らも熱中するものを持つと人生が豊かになるぞ
0818デフォルトの名無しさん
2012/07/11(水) 11:52:34.500819デフォルトの名無しさん
2012/07/11(水) 12:27:52.72arr = ["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
0820デフォルトの名無しさん
2012/07/11(水) 13:05:45.846.downto(3)
という表現があるんですね。
ありがとうございます、これを使うことします。
0821デフォルトの名無しさん
2012/07/11(水) 13:09:19.79とかオブジェクト指向の観点から考えると気持ち悪い
0822デフォルトの名無しさん
2012/07/11(水) 13:22:11.53今回の場合Rangeリテラルをto_aしてreverseするしかないというのは、整数にupto/downtoと終端とブロックを渡すのと同レベルでモヤモヤする
0823デフォルトの名無しさん
2012/07/11(水) 13:23:09.100824uy ◆Qe4wwDKtLk
2012/07/11(水) 17:14:10.73reverse_eachとか必要なくて別の場所であれこれやって、eachでいけるようにさせるだろ
逆にすると可読性が下がる
物凄くおかしなもの書いているならdownto使ってもいいけど
普通のソースコードでdowntoが必要になってるなら
どこかで何かが逆になってるからdowntoが必要になってんだよ
0825デフォルトの名無しさん
2012/07/11(水) 17:18:55.89やあ、ゴミカスuy君!
0826uy ◆Qe4wwDKtLk
2012/07/11(水) 18:06:36.010827デフォルトの名無しさん
2012/07/11(水) 22:16:29.470828デフォルトの名無しさん
2012/07/11(水) 22:24:35.480829デフォルトの名無しさん
2012/07/12(木) 02:11:34.05array = [ 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 } # 空配列になって処理なし、エラーも出ない
0830デフォルトの名無しさん
2012/07/12(木) 03:25:56.31リテラルで書けたら楽だとは思うが、すくなくともそれはRangeの役目ではない
とか言ってるうちにupto/downto/stepが単独でEnumerator返すようになった
irb> p 0.step(10,2).map{|x| x*3}
[0, 6, 12, 18, 24, 30]
0831デフォルトの名無しさん
2012/07/12(木) 16:46:15.74[3,4,5,6].each_with_index do |a,b|
p b
end
で、1〜4を出力するようなことがしたいです
0832デフォルトの名無しさん
2012/07/12(木) 16:51:18.76Rubyは欠陥言語だから無理
0833デフォルトの名無しさん
2012/07/12(木) 17:36:14.190834デフォルトの名無しさん
2012/07/12(木) 17:56:38.34irb> [3,4,5,6].each.with_index(1){|x,i| puts "#{i}個目は#{x}"}
1個目は3
2個目は4
3個目は5
4個目は6
0835デフォルトの名無しさん
2012/07/12(木) 18:05:06.85まあいいか
0836デフォルトの名無しさん
2012/07/12(木) 19:08:49.240837デフォルトの名無しさん
2012/07/12(木) 19:17:42.33引数に渡すことができたんですね
ありがとうございます
0838デフォルトの名無しさん
2012/07/12(木) 19:46:05.39違う
これはEnumerable#with_indexという別物だ
each_with_index自体にはこんな機能はない
0839デフォルトの名無しさん
2012/07/12(木) 19:57:49.730840デフォルトの名無しさん
2012/07/13(金) 15:08:48.320841デフォルトの名無しさん
2012/07/13(金) 15:44:55.69Ruby使ってない方はスレへのご参加を御遠慮ください
0842デフォルトの名無しさん
2012/07/13(金) 15:50:54.590843デフォルトの名無しさん
2012/07/13(金) 19:28:37.58each.with_indexはeachオブジェクトのwith_indexメソッド
each_with_indexはeachオブジェクトのメソッドではなくeach_with_indexというメソッド
オブジェクト志向理解してこい
0844デフォルトの名無しさん
2012/07/13(金) 19:37:43.32o 眼科逝って来い
0845デフォルトの名無しさん
2012/07/13(金) 20:10:54.130846デフォルトの名無しさん
2012/07/13(金) 23:10:28.02http://d.hatena.ne.jp/keyesberry/20111221/p1
と結論する次第である(キリッ)
以上(キリッ)
http://d.hatena.ne.jp/masatoi/20101102/1288654204
マクロが必要なときのみ、LISPを選ぶように。(キリッ)
0847デフォルトの名無しさん
2012/07/14(土) 01:17:41.55コンピュータ界ではC言語の呪いが如何に強力だったのかが分かるなぁ
0848デフォルトの名無しさん
2012/07/14(土) 03:33:50.200849デフォルトの名無しさん
2012/07/14(土) 18:17:43.380から始まってる方が数学的に都合が良いことって多くね?
0850デフォルトの名無しさん
2012/07/14(土) 18:28:17.740851デフォルトの名無しさん
2012/07/14(土) 19:13:31.380852デフォルトの名無しさん
2012/07/14(土) 21:32:26.29Excelの桁とか列とか
0853デフォルトの名無しさん
2012/07/14(土) 22:11:19.71for文が「変数名、初期値、最終値(、増分)」の形式なら1オリジンが好き
0854デフォルトの名無しさん
2012/07/14(土) 22:22:37.14逆はどうしても面倒じゃね?
0855デフォルトの名無しさん
2012/07/14(土) 22:31:59.09+1とするんじゃなくて、要素数=最終添字と考えるのが1オリジンだと思う
0856デフォルトの名無しさん
2012/07/15(日) 03:06:06.78一番目じゃねえゼロ番目だバカヤロウ!
と言って殴るわ妹なんて居ないけど
0857デフォルトの名無しさん
2012/07/15(日) 23:40:58.77これ使ったらオススメとか、このやり方から覚えた方がいい!
などあれば教えて下さい!
0858デフォルトの名無しさん
2012/07/15(日) 23:59:29.230859デフォルトの名無しさん
2012/07/16(月) 00:38:19.49そっか、ありがとう
0860デフォルトの名無しさん
2012/07/16(月) 01:43:53.23とりあえず初心者は
.methods.sort でメソッド表示して、すべてのメソッドの動作を覚えるべき
0861デフォルトの名無しさん
2012/07/16(月) 01:46:55.19irbかなとりあえず
履歴・メモリー機能付き関数電卓としてどうぞ
0862デフォルトの名無しさん
2012/07/16(月) 11:04:11.01エディタは何使う予定なの?
0863デフォルトの名無しさん
2012/07/16(月) 13:02:47.37分からなくても、とりあえず見てみます
>>861
リファレンスマニュアルにあったのでirbをとりあえずやってみますね
ありがと
>>862
ネットで探して一番良さそうだったcot editorです
皆さんありがとう
0864デフォルトの名無しさん
2012/07/16(月) 13:09:08.93Rubyのことなんてすっぱり忘れて、必要になったらまたそのときいらっしゃい
0865デフォルトの名無しさん
2012/07/16(月) 13:38:58.17動的webサイトを作るのが目的です
0866デフォルトの名無しさん
2012/07/16(月) 16:19:41.300867デフォルトの名無しさん
2012/07/16(月) 16:55:13.580868デフォルトの名無しさん
2012/07/16(月) 16:59:29.480869デフォルトの名無しさん
2012/07/16(月) 17:06:34.600870デフォルトの名無しさん
2012/07/16(月) 18:25:39.90これは
x = a if a
と書くしかないですかね?もっとスマートな書き方は無いでしょうか。
ちなみに、
x = a || x
これはaがnilでも代入操作自体は行われてしまうので駄目です。
0871デフォルトの名無しさん
2012/07/16(月) 19:28:21.870872デフォルトの名無しさん
2012/07/16(月) 19:46:23.48知らん。
ってかいうか、変数にnilが入るようなプログラムを書く人は嫌いです。
0873デフォルトの名無しさん
2012/07/16(月) 20:51:30.83どーせ自分で答えドヤ顔で用意してんだからとっとと言えば?
0874790
2012/07/16(月) 21:15:17.22macports (mac osxのパッケージインスコ&&バージョン管理システム)
rvm(rubyのパッケージインスコ&&バージョン管理システム)
これを入れて、Ruby ver.1.9.3で
勉強はじめたほうがいいです。
ruby1.8だと記法が違いすぎます。
テキストエディタのこだわりがないなら、
GNU Emacs for MACOSX
http://emacsformacosx.com/
つかえばいいとおもいます。
Ruby用のシンタックスハイライト設定無しで
使えますので、便利です。
0875デフォルトの名無しさん
2012/07/16(月) 21:15:59.820876デフォルトの名無しさん
2012/07/16(月) 22:00:17.09rvmつこたことないけども
0877デフォルトの名無しさん
2012/07/16(月) 22:48:39.83ありがとうございます。
色々つまづいてますが、頑張って覚えます!
0878uy
2012/07/17(火) 00:03:35.44def 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 しね
0879デフォルトの名無しさん
2012/07/17(火) 00:45:06.850880デフォルトの名無しさん
2012/07/17(火) 08:45:50.94OpenSSL 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
0881デフォルトの名無しさん
2012/07/17(火) 09:37:13.711.8.7は最後のリリース出たんだっけ?
0882デフォルトの名無しさん
2012/07/18(水) 13:57:58.80それ以降コマンドプロンプトでバージョンの確認すらできなくなった……
泣きそうだれか助けて
0883デフォルトの名無しさん
2012/07/18(水) 13:58:51.67それ以降コマンドプロンプトでバージョンの確認すらできなくなった……
泣きそうだれか助けて
0884デフォルトの名無しさん
2012/07/18(水) 13:59:42.770885デフォルトの名無しさん
2012/07/18(水) 14:29:37.190886デフォルトの名無しさん
2012/07/18(水) 14:55:01.510887デフォルトの名無しさん
2012/07/18(水) 22:47:13.00FORTRANのコンパイラを入れたときに環境変数の設定が変わったのが原因だったみたいです
0888デフォルトの名無しさん
2012/07/19(木) 01:16:22.770889デフォルトの名無しさん
2012/07/19(木) 01:20:28.89バージョンは1.9.3です。
0890デフォルトの名無しさん
2012/07/19(木) 06:47:15.020891デフォルトの名無しさん
2012/07/19(木) 06:58:27.32ttp://ruby.learncodethehardway.org/book/intro.html
0892デフォルトの名無しさん
2012/07/19(木) 07:34:03.21嫌儲に帰れば?
0893uy
2012/07/19(木) 14:36:43.37ネット上ではガチ初心者歓迎の色はないよね
rubyのチュートリアルは最新版のやつは少ない、まともなサイトは無いといっていい
結局古い情報のruby入門 + 個人サイト/ブログの日記記事をみて覚えるか
公式サイト関係のページで覚えるしかない
http://www.ruby.or.jp/ja/tech/development/ruby/tutorial/
0894デフォルトの名無しさん
2012/07/19(木) 15:46:09.200895デフォルトの名無しさん
2012/07/19(木) 20:54:06.97あれは結構有名
サイト名と言語や技術だけ変えて同じとこが30個くらいサイト運営してるんだよね
コピペだらけで質も悪いので、根本からどうにかしたいところではある
0897デフォルトの名無しさん
2012/07/19(木) 21:47:14.520898デフォルトの名無しさん
2012/07/19(木) 21:49:24.20ほとんどの人がレス自体を表示してないから、どんなに間違っていても誰にも見えず誰も訂正しない
なにが書いてあったのかはわからないが、そもそも誰も内容を吟味しないから、その話を聞くのはやめたほうがよい
0899デフォルトの名無しさん
2012/07/19(木) 21:50:29.50だから素人の知ったかブログなんだよ!
ネットから無秩序にコピペして集めてきただけだもの!
0900デフォルトの名無しさん
2012/07/19(木) 21:55:00.33うーん、何所のことが分からない。
できれば名指ししてくれると有りがたい。
それかそこにたどり着く方法でも良いです。
0901デフォルトの名無しさん
2012/07/19(木) 22:05:23.93今もそうなってるのかどうかはわからん
0902デフォルトの名無しさん
2012/07/19(木) 22:19:47.26cppdrive.jp
webword.jp
rubylife.jp
pythonweb.jp
phpbook.jp
perlplus.jp
officepro.jp
adminweb.jp
ajaxtower.jp
がぜんぶ同じとこだという話だったはず
まあ、それ以上でもそれ以下でもない
0903デフォルトの名無しさん
2012/07/19(木) 22:26:04.58ま、コピペで著作権を侵害してるなら話は別ですが。
0904デフォルトの名無しさん
2012/07/20(金) 05:41:11.49アフィサイトモデルとして成功してんだか割に合わないんだかすっごい微妙なとこだな
0905デフォルトの名無しさん
2012/07/20(金) 07:28:45.28コピペだらけで質も悪いので、根本からどうにかしたいところではある
0907デフォルトの名無しさん
2012/07/21(土) 09:44:02.42http://engawa.2ch.net/test/read.cgi/poverty/1342751788/
0908デフォルトの名無しさん
2012/07/22(日) 02:28:03.62Rails使ったWebサービス作り以外ではどんな場所で使われているんですか?
0909デフォルトの名無しさん
2012/07/22(日) 03:23:13.160910デフォルトの名無しさん
2012/07/22(日) 05:23:35.078 等分されたうち 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
0911デフォルトの名無しさん
2012/07/22(日) 08:24:05.05民主党の多くの議員が帰化人でした。
続き
http://plaza.rakuten.co.jp/1958kn/diary/201112240000/
0912デフォルトの名無しさん
2012/07/22(日) 08:38:13.89Rails以外のWebプログラミング
自分用のコマンドラインアプリや、日常の作業を便利にするためのスクリプト
ゲーム制作(RPGツクール用のスクリプト用含む)
GUIアプリ(稀)
0913デフォルトの名無しさん
2012/07/22(日) 10:37:23.09円弧書く前に中心点をmove_toするだけでした
すみません
0914デフォルトの名無しさん
2012/07/22(日) 20:14:47.52「その1 あいうえお その2 12345 その3 abc…そのn ○○○」
のように書いてあるテキストを綺麗にまとめるプログラムを書きたいです
理想の出力結果は
その1
あいうえお
その2
12345
その3
abc
:
そのn
○○○
のようにすることなのですが「その●」の部分で詰まってます
・表示させる文字そのものに1ずつ足していく方法
・数字がいくつまであるか分からないけれど全部終わったらオシマイ
以上のところを教えて下さい
0915デフォルトの名無しさん
2012/07/22(日) 20:23:13.42そんなんだとマイナーで授業に一切出てない書き方での回答が来るぞ
正規表現と、Stringクラスのsplitメソッドとscanメソッドの使い方を勉強すればなんとかなるかも
分割キーにしたい正規表現で大元の長い文字列を切って配列にすればいい
0916デフォルトの名無しさん
2012/07/22(日) 20:33:01.10ありがとうございます
自分の利便のためにexcelに書き込むプログラムを書きはじめたのですがまあ自分への宿題ですw
セルへの書き込みなどは勉強したのですが肝心のテキストの部分でハテナです
タグに囲まれている部分だけを抜き出す,とかなら分かるのですが…
0917デフォルトの名無しさん
2012/07/22(日) 20:38:21.94それ使え
0918デフォルトの名無しさん
2012/07/22(日) 20:47:14.69単語ではなく長い文章だったり箇条書きだったりカンマ使ってたりめちゃくちゃなのですorz
「そのn」を表示→「そのn」と「そのn+1」の間を表示(正規表現?)→「そのn+1」を表示
を繰り返すのって可能ですか?
そして「そのn+1」が存在しなくなったら終了にしたいんです
0919デフォルトの名無しさん
2012/07/22(日) 21:03:34.75そんな後出し後出しで質問されて付き合うほど暇じゃないでしょ皆
0920uy
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
ででででっていう
0921uy
2012/07/22(日) 21:18:27.79その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
でっていう
0922デフォルトの名無しさん
2012/07/22(日) 21:20:52.440923uy
2012/07/22(日) 21:31:52.83で?って思った
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
0924uy
2012/07/22(日) 21:47:04.32"その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
# -終了-
0925デフォルトの名無しさん
2012/07/23(月) 01:50:40.860926デフォルトの名無しさん
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)
初歩の初歩で脱落しそうだ
0927デフォルトの名無しさん
2012/07/23(月) 18:27:55.28ruby 1.8だね。
デフォルト引数値は後から順にしか指定できない。
sing(num, word="la") という定義ならOK
1.9だともっと柔軟に指定できるようになってる。
0928デフォルトの名無しさん
2012/07/23(月) 18:33:04.381.8.7 やんね?俺も詳しいことはしらんので下参照。
ちなみに、1.9.x ならエラーにならない。
> ただし実引数との対応を取るため、i番目の引数にデフォルト値を指定したならば、 i+1番目以降でも全てデフォルト値を指定するか、可変長引数を利用しなければなりません(詳細は後述)。
ttp://doc.ruby-lang.org/ja/1.8.7/doc/spec=2fdef.html#method
0929デフォルトの名無しさん
2012/07/23(月) 19:04:13.92sing( , 10)
って書きたいな
0930uy
2012/07/23(月) 20:37:26.41a , b = sing , 10
0931デフォルトの名無しさん
2012/07/23(月) 21:13:39.76なんでもいいけどRubyでforは使うな
それを君に教えたのはどこのどいつだ
0932デフォルトの名無しさん
2012/07/23(月) 21:17:16.690933デフォルトの名無しさん
2012/07/23(月) 21:31:36.64その言語で現在一般的な書き方を最初に憶えることは非常に重要
def sing(word = 'la', n=10)
n.times do
print word
end
puts '~'
end
sing('hu', 10)
0934uy
2012/07/23(月) 22:21:16.40俺の「初心者あやmれ」
と同レベルの書き込み
0935デフォルトの名無しさん
2012/07/23(月) 23:53:41.40今jruby1.7のpreviewを使ってみたんだが、なんか遅いね。
これ本当に早くなってんの?
一発目は大抵遅いから同じコマンド2回打ったけど、やっぱ遅い。
javaも1.7.05使ってるんだけど…centos6
gem -vとかやっても4秒かかる。
0936デフォルトの名無しさん
2012/07/23(月) 23:56:28.68わからないから、速くなっていかないんでわ?
0937デフォルトの名無しさん
2012/07/24(火) 00:06:48.01そういうものなんですかね?
とりあえず、もう少し使い続けてみます。
java -version 早い
jruby -v 遅い。情報が表示された後に1秒くらい終わらない。
gem -v 遅い。表示に4秒かかる。
0938デフォルトの名無しさん
2012/07/24(火) 00:11:48.65jrubyは起動させっぱなしで使う
0939デフォルトの名無しさん
2012/07/24(火) 00:17:39.34Eclipseが遅いとかいうのももうアホかと…
0940デフォルトの名無しさん
2012/07/24(火) 00:31:44.07コンピュータの電源入れてOSが立ち上がってアプリケーションロゴがくるくる回ってウィンドウが出切って使える状態になるとこまでを含めて計測して
「遅い!」
とか文句言われてもけっこう困る
しかもちょこっと操作しただけですぐウィンドウ閉じてコンピュータの終了を指示して電源が落ちるまでも時間に含めてる
そんなん、遅いの当たり前じゃないか
その、実際にちょこっと操作したときのレスポンスの具合を見てよ
0941デフォルトの名無しさん
2012/07/24(火) 01:04:54.190942デフォルトの名無しさん
2012/07/24(火) 17:39:03.230943デフォルトの名無しさん
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
0944デフォルトの名無しさん
2012/07/24(火) 18:01:11.590945デフォルトの名無しさん
2012/07/24(火) 18:20:26.30おっと 926 です。
みんなの貴重な意見がめっちゃありがたい。
なるほど。forは使わんようにするぞ。
0946デフォルトの名無しさん
2012/07/24(火) 19:14:54.970947デフォルトの名無しさん
2012/07/24(火) 21:27:30.71Pathname は組み込みにしてしまって File と改名し、
File の方は FileIO あたりに改名した方が良いかと思いますがいかがでしょうか?
mruby とか知らんけど。
0948デフォルトの名無しさん
2012/07/24(火) 21:42:07.880949デフォルトの名無しさん
2012/07/26(木) 08:34:27.40君がJavaかぶれということがよく分かった
0950デフォルトの名無しさん
2012/07/27(金) 01:18:03.87これ明らかにrailsじゃないの?
ツイッターってrailsから書きなおしたんじゃないの?
0951デフォルトの名無しさん
2012/07/27(金) 01:25:35.400952デフォルトの名無しさん
2012/07/27(金) 01:51:27.09なぜ普通なんだ?
0953デフォルトの名無しさん
2012/07/27(金) 01:53:29.480954デフォルトの名無しさん
2012/07/27(金) 05:33:48.48というかRailsでなくても、
例えばMySQLも別アプリだけど普通だろ?
SQL文投げてあっあっあっってしてるだろ?
そういうこと
0955デフォルトの名無しさん
2012/07/27(金) 07:09:01.690956デフォルトの名無しさん
2012/07/27(金) 13:27:21.19ttp://tech.a-listers.jp/2011/06/16/orm_is_an_antipattern/
0957デフォルトの名無しさん
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 のバグかとも思ったんですが、スクリプトファイル書いて実行してもエラーでした。
ドキュメントの方が間違いでしょうか?
0958デフォルトの名無しさん
2012/07/27(金) 16:51:35.95あ、それはマニュアルが古いな
「式展開の中でも外でも同一のルールが適用されます」が正解
# は行末までがコメントだから、式展開内で現われても「とにかく行末まで」が無視される
だから
p "#{ "string" # comment
}"
は(「# comment\n」が無視されて) "string" という文字列を表示する
p "**#{<<EOS}**"
string
EOS
は「次の行からEOSまで」を表示する
0959デフォルトの名無しさん
2012/07/28(土) 08:47:54.15https://gihyo.jp/dp/ebook/2012/978-4-7741-5286-8
ウェブ上では電子書籍版(PDF)を販売開始。
書籍版は7月31日に発売。
0960デフォルトの名無しさん
2012/07/28(土) 15:27:09.55javascriptをviewに直書きしてたり、
画像をDBに保存してたり、
DBの設計が糞過ぎて1つのテーブルに100個近いカラムがあったり
CSSがカオスでasset pipeline機能すら使ってなかったり
どうしようもなく糞ゴミカス低学歴PGしかいないゴミ会社に転職してしまった
0961デフォルトの名無しさん
2012/07/28(土) 15:51:30.43見た瞬間、
____
/ \ 。 。 。
/ _ w _\_=Q_______ 。 。 。
/ _____| | ヘ____ヘ_|____ ___
/⌒| ((_____.| | Σ ________(○)__(○) バキッ!!
/ |. ι (___人__) | | '' , ' ' , | 。
| l\ | .| | | | 。
ヽ -一ー_~、⌒) |r┬-| | |. | 。 。 。
ヽ ____,ノ `ー'´ 。 。 。
となるレベルを体験した俺から言わせればな。
0962uy
2012/07/28(土) 19:30:08.08「じゃあこんなに社員PGいらないな」ってなるだけ
まじめに社畜コードかいてるのなんて新人だけ
古参は首をきられないようにもっと別の場所で戦ってるんだよ
その冗長したソースコードにも意味がある
0963デフォルトの名無しさん
2012/07/28(土) 20:06:40.970964デフォルトの名無しさん
2012/07/28(土) 21:03:55.08テキストファイルの中を検索して(←ここまではわかる)
あるテキストに一致する部分があれば実行、一致するものがなければスキップして次へ
という部分で手こずってます
while文だと思うのですが、正規表現をどう組み込んで良いのかよくわかりません
お願いします
0965デフォルトの名無しさん
2012/07/28(土) 21:14:18.98>>964
> テキストファイルの中を検索して(←ここまではわかる)
思ってるのはたぶん使い方違います
> while文だと思うのですが
それもたぶん違います
「実行」などという、どこで仕込まれたんだか知らないけど奇妙な概念を捨ててください
テキストファイルに対してやりたいことを
最後まで
書きなさい
そうすればたぶん誰かが教えてくれます
0966デフォルトの名無しさん
2012/07/28(土) 21:16:42.16とかすれば取れるだろ
0967デフォルトの名無しさん
2012/07/28(土) 21:18:45.54一行ずつ読むなら
each_line
いまどこまで書けてるのかソース貼るといいかも
0968デフォルトの名無しさん
2012/07/28(土) 21:26:13.92while line = gets
puts line
end
初心者が初心者に教える、いいねぇいいねぇ
0969デフォルトの名無しさん
2012/07/28(土) 21:30:06.65それは標準入力から1行ずつ読み込んで行単位で処理するとき「のみ」のかなり限定された書き方だ
通常は使わないし、それが書いてあったら何らかの特殊な用途のスクリプトだと警戒する
0970デフォルトの名無しさん
2012/07/28(土) 21:39:40.87普通に使いまくりだし、警戒って何を警戒するのよw
あ、もしかしてパイプとかフィルタとか普段使わない人?
だとしたら有り得るかも。
乳首いじるみたいにマウスばっかりカチカチしてるんでしょ。
えっちな香具師め。
0971デフォルトの名無しさん
2012/07/28(土) 21:43:57.120972デフォルトの名無しさん
2012/07/28(土) 21:44:03.510973デフォルトの名無しさん
2012/07/28(土) 21:45:37.36一番不幸なのは間違いを教えてもらえないこと
漏れはまちがってたら教えてあげるし
俺が間違ってたら誰かがおしえてくれる
そのかわりボランティアだ
だから対価として煽り、すかっとさせてもらうゼ!
0974デフォルトの名無しさん
2012/07/28(土) 21:49:32.200975デフォルトの名無しさん
2012/07/28(土) 21:50:28.380976デフォルトの名無しさん
2012/07/28(土) 21:52:51.800977デフォルトの名無しさん
2012/07/28(土) 21:57:01.74>>964が詰まってる理由もそこだろうなあとは思うんだが
2012年現在、行指向でテキストファイルを「すこしずつ」読むメリットは薄い
標準入力から全文をreadしてメモリに読み込んだほうが学習上も便利だろう
0978デフォルトの名無しさん
2012/07/28(土) 22:00:24.660979デフォルトの名無しさん
2012/07/28(土) 22:04:53.40>>968みたいなの使ってるならそれは捨てろ
0980デフォルトの名無しさん
2012/07/28(土) 22:15:14.610981デフォルトの名無しさん
2012/07/28(土) 22:15:16.98メモリばっか食いやがって
0982デフォルトの名無しさん
2012/07/28(土) 22:33:06.06よっぽどなサーバ用途ならまだしも
ふつうの人はぜんぶ一気にメモリに読み込んでscanなりreadlinesなりeach_lineなりが妥当
0983デフォルトの名無しさん
2012/07/28(土) 23:10:53.610984デフォルトの名無しさん
2012/07/29(日) 00:15:06.350985デフォルトの名無しさん
2012/07/29(日) 03:42:16.59話は変わってくるけど、ただそのオーダーのテキストをさばくのは
Rubyでは厳しいケースも多いだろう
0986デフォルトの名無しさん
2012/07/29(日) 12:17:32.84そういう場合はIO.foreachを使ってループ処理することで
パフォーマンスと扱いやすさの両方を確保できる。らしい
0987デフォルトの名無しさん
2012/07/29(日) 13:32:49.41言いたくはないけど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を本当はよく知らない人のサンプルとかにはよく出る
あと新スレ
0988デフォルトの名無しさん
2012/07/29(日) 13:36:14.960989デフォルトの名無しさん
2012/07/29(日) 13:48:27.82openに渡すfilepathを一旦変数にしたらガードのために数十行くらい条件判定分岐処理がつけられて、
それがないのはカスだとも言えるが、そういうとこは別に本質ではあるまい
0990デフォルトの名無しさん
2012/07/29(日) 13:55:19.04while line = gets
...
end
を使ったりするんだよ。
0991デフォルトの名無しさん
2012/07/29(日) 14:26:50.970992デフォルトの名無しさん
2012/07/29(日) 14:35:19.11http://toro.2ch.net/test/read.cgi/tech/1343539588/
テンプレ補完必要があればおねがい
>>989
むしろ本質
ファイル名をハードコーディングしたらruby foo.rb < bar.txtできない
また一気読みでは稼働中サーバの出力をフィルタして随時出力できない
while getsはruby -nでも使われてる
要はwhile line = gets; はフィルタの王道
0993964
2012/07/29(日) 16:13:36.45やりたいことはWEBサイトからテキストを取ってくることです
ruby1.8でメカナイズ使ってます
FacebookやTwitterによくある「もっと読む」みたいなテキストをクリックしていきたいのです
文字列を検索してクリックする、というところはできてます
ただ、「もっと読む」をどんどんクリックしていって全部を表示し終えると、
最終的に「もっと読む」って表示されなくなるじゃないですか
そこまで行ったら、次の処理(テキスト全体から必要な部分を取ってくること)に移りたいのです
CとMATLABをちょっといじったことのある初心者です。おねがいします。
0994デフォルトの名無しさん
2012/07/29(日) 17:55:01.34そもそもテキストファイルって書いてる時点で間違っていたことに気づきました
ほんとすみませんです。
0995デフォルトの名無しさん
2012/07/29(日) 17:58:53.87これが意味不明。実装できてるところまでのソースを晒してみ。
一般的には非同期のページングと同じ考え方で実装するけど
何か全然違う方法でやってるみたいだからソース見ないと意味分からない。
0996デフォルトの名無しさん
2012/07/29(日) 18:06:19.68page = agent.get('http://aaa.com/')
agent.page.link_with(:text => 'もっと読む'.toutf8).click
こんなかんじです
0997デフォルトの名無しさん
2012/07/29(日) 18:07:26.500998uy
2012/07/29(日) 22:48:12.850999デフォルトの名無しさん
2012/07/29(日) 22:49:56.991000デフォルトの名無しさん
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
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。