Ruby初心者スレッドPart6
レス数が1000を超えています。これ以上書き込みはできません。
0001980
2006/05/18(木) 11:09:57関連スレやURLは2以降。Ruby on Railsの質問はWebProg板のRailsスレで。
■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
・ぐぐる
・マニュアルで探す http://www.ruby-lang.org/ja/man/
・FAQを読む http://ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
・詳しい内容(「動きません」「うまくできません」では回答しようがない)
・エラーメッセージ(なるべくそのままで)
・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
宗教的な話題は禁止します。
0002デフォルトの名無しさん
2006/05/18(木) 11:12:07Rubyについて Part 22
http://pc8.2ch.net/test/read.cgi/tech/1147897915/
#関連スレ
【Agile】Ruby on rails相談所【DRY】
http://pc8.2ch.net/test/read.cgi/php/1118663500/
RUBYの宿題教えてください。
http://pc8.2ch.net/test/read.cgi/tech/1106572657/
【最高言語】 Rubyist Magazine創刊 【ルビま!】
http://pc8.2ch.net/test/read.cgi/tech/1094825807/
#過去スレ
Ruby初心者質問スレPart1
http://pc5.2ch.net/test/read.cgi/tech/1100534824/
Ruby初心者質問スレPart2
http://pc8.2ch.net/test/read.cgi/tech/1107799347/
Ruby初心者質問スレPart3
http://pc8.2ch.net/test/read.cgi/tech/1125587131/
Ruby初心者スレッドPart4
http://pc8.2ch.net/test/read.cgi/tech/1137927749/
Ruby初心者スレッドPart5
http://pc8.2ch.net/test/read.cgi/tech/1143403165/
0003デフォルトの名無しさん
2006/05/18(木) 11:13:45Ruby Home Page
http://www.ruby-lang.org/ja/
リファレンス
http://www.ruby-lang.org/ja/man/
http://www.ruby-doc.org/ (英語)
FAQ
http://ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
Programming Ruby - The Pragmatic Programmer's Guide … 書籍をまるごと公開
http://www.ruby-doc.org/docs/ProgrammingRuby/
RAA - Ruby Application Archive … Rubyのアプリやライブラリが検索できる
http://raa.ruby-lang.org/
RubyForge … sourceforge.netのRuby特化版
http://www.rubyforge.org
日本Rubyの会 公式Wiki - 日本Rubyの会Wiki … Ruby関連のニュースとか
http://jp.rubyist.net/
Rubyist Magazine - るびま … RubyのWebマガジン
http://jp.rubyist.net/magazine/
0004デフォルトの名無しさん
2006/05/18(木) 11:15:50Matzにっき … Ruby作者の日記
http://www.rubyist.net/~matz/
Ruby hotlinks 五月雨版 … Ruby関連の日記やblog
http://www.rubyist.net/~kazu/samidare/
Rubyの本一覧
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Ruby%A4%CB%B4%D8%A4%B9%A4%EB%BD%F1%C0%D2
<rubyXML/>
http://www.rubyxml.com/
Ruby Weekly News @ Ruby Garden
http://www.rubygarden.org/rurl/html/
0005デフォルトの名無しさん
2006/05/18(木) 11:21:09#過去ログ
Ruby初心者質問スレPart1
http://pc5.2ch.net/test/read.cgi/tech/1100534824/ (行方不明)
Ruby初心者質問スレPart2
http://pc8.2ch.net/test/read.cgi/tech/1107799347/
http://makimo.to/2ch/pc8_tech/1107/1107799347.html
Ruby初心者質問スレPart3
http://pc8.2ch.net/test/read.cgi/tech/1125587131/
http://makimo.to/2ch/pc8_tech/1125/1125587131.html
Ruby初心者スレッドPart4
http://pc8.2ch.net/test/read.cgi/tech/1137927749/
http://makimo.to/2ch/pc8_tech/1137/1137927749.html
Ruby初心者スレッドPart5
http://pc8.2ch.net/test/read.cgi/tech/1143403165/
http://makimo.to/2ch/pc8_tech/1143/1143403165.html
#本スレ
Rubyについて Part 22
http://pc8.2ch.net/test/read.cgi/tech/1147897915/
#関連スレ
【Agile】Ruby on rails相談所【DRY】
http://pc8.2ch.net/test/read.cgi/php/1118663500/
RUBYの宿題教えてください。
http://pc8.2ch.net/test/read.cgi/tech/1106572657/
【最高言語】 Rubyist Magazine創刊 【ルビま!】
http://pc8.2ch.net/test/read.cgi/tech/1094825807/
0006デフォルトの名無しさん
2006/05/18(木) 11:24:23>>1乙
0007デフォルトの名無しさん
2006/05/18(木) 11:30:140008デフォルトの名無しさん
2006/05/18(木) 11:34:47http://www.hyuki.com/writing/techask.html#direct
◎RubyってEXE形式にできますか?
Exerb
http://exerb.sourceforge.jp/
RubyScript2Exe (A Ruby Compiler)
http://www.erikveen.dds.nl/rubyscript2exe/index.html
◎ActiveScriptRuby
お前ら、wsh使ってますか? part5
http://pc8.2ch.net/test/read.cgi/win/1126543183/
◎多分Wikiの話はWebProg板向きの話題
WEBプログラミング@2ch掲示板
http://pc8.2ch.net/php/
◎前回の祭り
TMTOWTDI(一つ目の質問とその答えを参照せよ。)
http://slashdot.jp/developers/03/03/14/0258247.shtml?topic=86
ヒューメイン・インタフェース
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?HumaneInterface
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/133347
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/133505
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/7968
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/7980
http://wiki.rubygarden.org/Ruby/page/show/Irb/TipsAndTricks
0009デフォルトの名無しさん
2006/05/18(木) 11:51:41ttp://jp.rubyist.net/magazine/?0014
ttp://chem.tf.chiba-u.jp/~shin/tutorial/
ttp://elbereth-hp.hp.infoseek.co.jp/ruby.html
ttp://www.amazon.co.jp/gp/product/4797314087/
ttp://www.amazon.co.jp/gp/product/4894714531/
ttp://www.seshop.com/detail.asp?pid=3585
ttp://www.notwork.org/rubyrecipebook/
ttp://www.shiro.dreamhost.com/scheme/trans/being-popular-j.html
ttp://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=Bruce+Eckel%A4%CE%A1%D6Ruby%A4%CB%A5%A4%A5%A4%A5%BF%A5%A4%A5%B3%A5%C8%A1%D7%A5%B3%A1%BC%A5%CA%A1%BC
ttp://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E9%96%A2%E6%95%B0
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby%A5%EA%A5%D5%A5%A1%A5%EC%A5%F3%A5%B9%A5%DE%A5%CB%A5%E5%A5%A2%A5%EB
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=%A5%DE%A5%CB%A5%E5%A5%A2%A5%EB%A5%C0%A5%A6%A5%F3%A5%ED%A1%BC%A5%C9
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=FAQ%3A%3A%C6%FC%CB%DC%B8%EC%A4%CE%BC%E8%A4%EA%B0%B7%A4%A4
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=FAQ%3A%3A%C6%FC%CB%DC%B8%EC%A4%CE%BC%E8%A4%EA%B0%B7%A4%A4#a10.2e6.20.a4.d2.a4.e9.a4.ac.a4.ca.a4.f2.a5.bd.a1.bc.a5.c8.a4.b9.a4.eb.a4.cb.a4.cf.a4.c9.a4.a6.a4.b7.a4.de.a4.b9.a4.ab
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby%CD%D1%B8%EC%BD%B8
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=Array#collect
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=YAML;em=yaml
ttp://shakenbu.org/yanagi/d/20050214.html#p02
ttp://d.hatena.ne.jp/fbis/20060504/1146736766
0010デフォルトの名無しさん
2006/05/18(木) 11:54:09ttp://rubyforge.org/projects/win32utils/
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/99508
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/99540
ttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shfileoperation.asp
ttp://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-list/40890?40768-41017
ttp://homepage1.nifty.com/MADIA/vb/API/SHFileOperation.htm
ttp://msdn2.microsoft.com/ja-JP/library/5fbah944(VS.80).aspx
http://pc8.2ch.net/test/read.cgi/tech/1016362068/
ttp://age.s22.xrea.com/talk2ch/
ttp://rbt.sakura.ne.jp/kana/torikomi
ttp://www.cozmixng.org/~rwiki/?cmd=view;name=RSS+Parser
ttp://i.loveruby.net/w/RubyExtensionProgrammingGuide.html
ttp://diary.lampetty.net/20050110.html#p02
0011デフォルトの名無しさん
2006/05/18(木) 14:37:070012デフォルトの名無しさん
2006/05/18(木) 18:32:02charset が iso-2022-jp, euc-jp, shift_jis の場合は
元の content が「日本語」で書かれていると想定できるから
アレで良いかも知れないけど、
charset が utf-8 の場合は、
元の content が何語で書かれてるか想定はできないので、
NKF で自動的に変換するのはまずくないかな。
0013デフォルトの名無しさん
2006/05/18(木) 19:47:52おれもちょうどcgi.rb見直してたとこなんだけど、outとかHTMLタグ生成関連って分離できねーの?
思ったより行数あるなーとおもったら、あれ取ったら半分以下になったよ。
cgi/http.rb
cgi/cookie.rb
cgi/html.rb
とかにわけて、cgi.rbはそいつらをrequireするだけにしてほしい。
0014デフォルトの名無しさん
2006/05/18(木) 19:49:290015デフォルトの名無しさん
2006/05/18(木) 19:52:470016デフォルトの名無しさん
2006/05/18(木) 19:54:40では早速やってください
0017デフォルトの名無しさん
2006/05/18(木) 19:56:57ここが本スレってことで
0018デフォルトの名無しさん
2006/05/18(木) 20:03:42本スレの代用なんかに使われて、ここまで荒れたら困るよ
0019デフォルトの名無しさん
2006/05/18(木) 20:19:30つか今までだれも提案しなかったの?
0020デフォルトの名無しさん
2006/05/18(木) 20:20:320021デフォルトの名無しさん
2006/05/18(木) 20:22:410022デフォルトの名無しさん
2006/05/18(木) 20:43:230023デフォルトの名無しさん
2006/05/19(金) 00:22:16ActiveRubyで、テキストファイルを一行位置ファイルに分割するプログラムを
書こうとしているのですが、改行コードをLFのみにすることが出来ません。出
来たファイルの改行コードは、すべてCR+LFになってしまいます。
count = 1
while gets
file_name = "hogehoge" + count.to_s + ".tsv"
foo = File::open("tsv/" + file_name, "w")
foo.print NKF.nkf('-Lu', $_)
foo.close
count += 1
end
どこが間違っているのでしょうか?
0024デフォルトの名無しさん
2006/05/19(金) 00:32:580025デフォルトの名無しさん
2006/05/19(金) 00:38:41Winでファイルへ書き込む場合"w"はテキストモードって言って
簡単に言うと改行コードとかをWinが自動で\r\n直してしまう。
"wb"って感じでbを付けて、バイナリモードにしなきゃ。
Rubyリファレンスマニュアル - 組み込み関数#open
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=%C1%C8%A4%DF%B9%FE%A4%DF%B4%D8%BF%F4#open
Rubyリファレンスマニュアル - Win32ネイティブ版Rubyの互換性問題
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=Win32%A5%CD%A5%A4%A5%C6%A5%A3%A5%D6%C8%C7Ruby%A4%CE%B8%DF%B4%B9%C0%AD%CC%E4%C2%EA
0026デフォルトの名無しさん
2006/05/19(金) 00:51:17chompしたり"\n"つけたりしなきゃいかんのかなと思ったんだけど
何かこれでちゃんとLFだけになるみたい
require 'kconv'
ARGF.each_with_index do |line, i|
filename = "hogehoge#{i}.tsv"
open('tsv/' + filename, 'wb'){|f| f.print line.toutf8}
end
0027デフォルトの名無しさん
2006/05/19(金) 01:17:31http://www.geocities.co.jp/Bookend-Ohgai/6832/syk_sb2.html
カルト - Wikipedia
http://ja.wikipedia.org/wiki/%E3%82%AB%E3%83%AB%E3%83%88
カルトの定義とだましのテクニック(蓮月)
http://www.jimmin.com/2000b/page_021.htm
新興宗教とは?
http://park8.wakwak.com/~kasa/Religion/prologue.html
0028デフォルトの名無しさん
2006/05/19(金) 07:05:480029デフォルトの名無しさん
2006/05/19(金) 07:21:33htreeというライブラリがそれっぽいかと思ったけど違うかも。
0030デフォルトの名無しさん
2006/05/19(金) 07:43:10ども、できました。qwikのほうにhtree-to-wabisabiなんてのが入ってたんですね
0031デフォルトの名無しさん
2006/05/19(金) 11:29:27ActiveScriptRuby?
ActiveStateはrubyだしてないよな。
0033デフォルトの名無しさん
2006/05/19(金) 11:46:49便利だけど質問と答えを見る限りは全く便利そうに見えないな。
0034デフォルトの名無しさん
2006/05/19(金) 11:51:02具体的にどうとは言えんがなんかあまり便利そうには見えん
0035デフォルトの名無しさん
2006/05/19(金) 16:15:180036デフォルトの名無しさん
2006/05/19(金) 18:56:54<start>
中略
<end>
の用に囲まれている部分を抜き出したり置換する場合です。
0037デフォルトの名無しさん
2006/05/19(金) 18:58:22じゃなくて、えーと、正規表現を使います、とかいう答えでいいのかな?
0038デフォルトの名無しさん
2006/05/19(金) 19:26:48抜き出し方が分からないんです
0039デフォルトの名無しさん
2006/05/19(金) 19:54:450040デフォルトの名無しさん
2006/05/19(金) 19:55:58ぜんぶ読み込んで、正規表現で抜き出す。
str = File.read('file.txt')
str.scan(/<start>(.*?)<end>/m) do
matched = $1
puts matched
end
あとは、一行ずつ読み込んで、開始パターンにマッチしたらフラグをたて、終了パターンにマッチしたらフラグをおろすという方法がある。
0041デフォルトの名無しさん
2006/05/19(金) 20:40:01ありがとうございます
ところでそういうブロックが同じ文章中にいくつもあって
2番目のブロックだけ処理したい場合がわかりません
最初の<start>と最後の<end>が対応してしまうような
0042デフォルトの名無しさん
2006/05/19(金) 20:47:41試してから書くべきではないか。
0043デフォルトの名無しさん
2006/05/19(金) 21:04:19if (/^<start>$/=~$_)..(/^<end>$/=~$_)
0044デフォルトの名無しさん
2006/05/20(土) 03:57:372番目のブロックというのが何をさしているのかわからない。
...<start>...<end>...<start>...<end>... のようになっているだけだったら、教えられた方法でできる。
...<start>...<start>...<end>...<end>... のように入れ子になっているんだったら、もうちょっと難しいやり方が必要。
ほんとうにやりたいことは何なのかをもっと詳しく。
0045デフォルトの名無しさん
2006/05/20(土) 04:25:08<start>
abcde
fghij
<end>
<start>
klmno
prqst
<end>
こういう内容の空行を含むtxtがあったとして
str = open("file.txt").read
str.scan(/<start>(.*?)<end>/m) {
matched = $1
puts matched
}
これだと
abcde
fghij
klmno
prqst
こう表示されるのですわ。
klmno
prqst
これだけあるいは最初のabcde〜だけを選択して抜き出せればってことなのですが。
0046デフォルトの名無しさん
2006/05/20(土) 05:51:56よくわからんが
i = 0
str.scan(/<start>(.*?)<end>/m) {
i += 1
matched = $1
puts matched if i > 1
}
じゃだめなのか?
0047デフォルトの名無しさん
2006/05/20(土) 07:22:41マッチした文字列が<start>か<end>を含んでいたら、その要素は削除するとか。
0048デフォルトの名無しさん
2006/05/20(土) 07:25:240049デフォルトの名無しさん
2006/05/20(土) 09:40:38ひとつ。puts だとわけがわからなくなる。 p 使え。正規表現やってるときは特に。
もうひとつ。ブロックを使ってるときに「これの2番目に出てくるやつを…」とか考えるのは面倒なのでやめとけ。
str = open("file.txt").read
matchedarr=str.scan(/<start>(.*?)<end>/m)
p matchedarr
実行結果:
[["\nabcde\n\nfghij\n"], ["\nklmno\n\nprqst\n"]]
目的っぽいスクリプト:
str = open("file.txt").read
matchedarr=str.scan(/<start>.(.*?).<end>/m).flatten
puts matchedarr[1]
抜き出したいのが2番目かどうかは実は内容によって決まるとかいうなら
配列matchedarrに対してfindやgrep使って目的の要素探せ
0050デフォルトの名無しさん
2006/05/20(土) 13:24:12ども
45で書いたものの出力結果をどうにかして配列に入れようとしていたのですが
scanを使えばそのまま入ってくれるのですね
参考になりました。
0051デフォルトの名無しさん
2006/05/21(日) 16:00:43バックスラッシュをつけたら、そのバックスラッシュも表示されてしまいました。
0052デフォルトの名無しさん
2006/05/21(日) 18:24:09Vine の Ruby は 1.8.2 のくせに Kconv::UTF8 が定義されてねぇぇぇーーーーー!!!
$ ruby --version
ruby 1.8.2 (2004-11-03) [i386-linux]
$ irb
irb(main):001:0> require "kconv"
=> false
irb(main):002:0> Kconv::EUC
=> 2
irb(main):003:0> Kconv::UTF8
NameError: uninitialized constant Kconv::UTF8
from (irb):3
なにこれ…。
0053デフォルトの名無しさん
2006/05/21(日) 20:13:201.8.4をコンパイルしろというお告げではないか?
0054デフォルトの名無しさん
2006/05/21(日) 21:34:21そのRuby(多分 1.8.2 preview 2)にはまだKconv::UTF8がなかった、
というオチではないかと。
いずれにしろ最新版、せめて1.8.2にはしてもらったほうがいいと思う。
0055デフォルトの名無しさん
2006/05/21(日) 21:51:10ruby --version は 1.8.2 ってでるけど
rpm -qi したら version 1.8.1 って書いてありました。
0056デフォルトの名無しさん
2006/05/21(日) 21:56:55VineSeedにしたら1.8.4になった
0057デフォルトの名無しさん
2006/05/21(日) 22:31:430058デフォルトの名無しさん
2006/05/22(月) 01:10:47試してないけど、実態参照か数値参照でやってみれ。
0059デフォルトの名無しさん
2006/05/22(月) 01:14:51そういえば、使わてもらってる鯖が Vine で困ったことがあったな。
0060デフォルトの名無しさん
2006/05/22(月) 14:08:58自分でがんばって作った便利スクリプトと同じか上等なサービスが既に展開されてるとなんか寂しい。
ヤッホーテレビ欄を取り込んで注目フレーズをgrepして自分用ページで表示するとかいうの作ってたら
ライブドア.comがなんか始めた。
ttp://tv.livedoor.com/rss/make_url
ヤッホー天気予報を取り込(中略)ライブドア.comがなんか始めた。
ttp://weather.livedoor.com/weather_hacks/ical.html
「気になるアーティストの曲がラジオでかかることがわかったら録音して曲近辺を切り出してBGMの完成」
とかいうこともやってるがこれはさすがのライブドアでも公開できまいやーいやーいグスン
ちなみに録音と切り出し行為自体は外部プログラムでRubyは全然関係ない
0061デフォルトの名無しさん
2006/05/22(月) 16:25:470062デフォルトの名無しさん
2006/05/22(月) 17:49:57適当な名前のハッシュ変数に適当な入れ子構造でデータ保持するのって
データ書き換えたり読み込んだりという点においてはあんまご利益変わらなくね?
0063デフォルトの名無しさん
2006/05/22(月) 18:27:05どちらかというとその中身のほうが重要なんだが。
0064デフォルトの名無しさん
2006/05/22(月) 19:22:170065デフォルトの名無しさん
2006/05/22(月) 19:42:440066デフォルトの名無しさん
2006/05/22(月) 20:04:30例えば中身はただの配列なんだけど、頭からウン番目までの仕様が決まってるんだったら、そこの要素だけはメソッドでもアクセスできるとか、そんな程度を定義しとくだけでもあとあと楽できるよ。
0067デフォルトの名無しさん
2006/05/22(月) 23:03:440068デフォルトの名無しさん
2006/05/22(月) 23:51:050069デフォルトの名無しさん
2006/05/23(火) 01:16:40作ってるんですが、どうすりゃいいかが思い浮かばないです。
とりあえず・・・
・OptionParserで-vを定義する
・ARGV.shiftでコマンドライン引数からパターンを抜き出す。
・パターンに[^hoge](hoge以外にマッチする正規表現)を前後からくっつける
って具合でやってるんですが、上手く行きません。Rubyじゃ[^]って使えないんでしたっけ?
0070デフォルトの名無しさん
2006/05/23(火) 01:33:35「うまくいかない」だけじゃ正直わかんないんだが、
Rubyに限らず[](character class)は底に含まれる文字の集合/補集合に
マッチするもんなんだけど、その辺勘違いしてるってことないか?
> ・パターンに[^hoge](hoge以外にマッチする正規表現)を前後からくっつける
ここ読むとひじょーにアヤシイんだが。
0071デフォルトの名無しさん
2006/05/23(火) 02:20:47ええと、まず実装したいのは
Unixのgrep -vのような機能
・正規表現にマッチしない部分を出力
で、
http://www.ruby-lang.org/ja/man/?cmd=view;name=%C0%B5%B5%AC%C9%BD%B8%BD#a.ca.b8.bb.fa.a5.af.a5.e9.a5.b9
の文字クラスってあたりを読んだんですが・・・。
>>・パターンに[^hoge](hoge以外にマッチする正規表現)を前後からくっつける
>ここ読むとひじょーにアヤシイんだが。
正直自分でも、あやしいです。
require 'optparse'
patopts = 0
opt = OptionParser.new
opt.def_option("-i" , "case insensitive"){
patopts = Regexp::MULTILINE
}
opt.parse!
temp1 ="[^"
temp2 =".]$"
pattern = temp1 + ARGV.shift + temp2
p pattern
regexp = Regexp.compile(pattern,patopts)
ARGF.each{|line|print line if (regexp =~ line)
}
なんか分からなくて、無理矢理やってる感が。。。
0072デフォルトの名無しさん
2006/05/23(火) 02:54:00e, g, h, o の4文字のどれにも当てはまらない文字にマッチするよ
0073デフォルトの名無しさん
2006/05/23(火) 02:56:09e, g, h, o のどれにも当てはまらない文字
にマッチ
0074デフォルトの名無しさん
2006/05/23(火) 06:18:56試してないけどこんなんでいいんじゃない?
pattern = ARGV.shift
regexp = Regexp.new(pattern)
while line = gets()
print line unless line =~ regexp
end
0075デフォルトの名無しさん
2006/05/23(火) 07:05:520076デフォルトの名無しさん
2006/05/23(火) 07:06:37それだと改行越えするときに問題起きる
0077デフォルトの名無しさん
2006/05/23(火) 09:17:16kwsk
0078デフォルトの名無しさん
2006/05/23(火) 09:49:33http://wilcoding.xs4all.nl/Wilco/View.aspx?NewsID=193
0079デフォルトの名無しさん
2006/05/23(火) 09:52:470080デフォルトの名無しさん
2006/05/23(火) 15:03:04grep -v を実装したいんでしょ?だったら行ごとでよくね?なんで改行越えが問題になるの。
・・・と思ったけど、エスパー発揮してみた。
以下は「hogehoge」以外の部分を出力するスクリプト。
str = ARGF.read()
str.scan(/(.*)hogehoge/m) do
unmatched = $1
print unmatched
end
rest = $'
print rest if rest
0081デフォルトの名無しさん
2006/05/23(火) 16:59:39今はinspectで文字列にしてからassert_equal()しているんですけど、
なにかの拍子でinspectの結果がちょこちょこ変わるので困ってます。
json = { :x=>1, :y=>2 }
json.inspect #=> {:x=>1, :y=>2}だったり{:y=>2, :x=>1}だったり
inspectがキーの値でソートしてくれればいいんですけど。
0082デフォルトの名無しさん
2006/05/23(火) 17:08:100083& ◆bLDZf./c4g
2006/05/23(火) 17:16:460084デフォルトの名無しさん
2006/05/23(火) 20:41:270085デフォルトの名無しさん
2006/05/23(火) 20:45:110086デフォルトの名無しさん
2006/05/23(火) 20:52:10テスト対象となっているオブジェクトはハッシュと配列とが入れ子になっているので、めんどくさいので全体をinspectして文字列に変換しています。
もしかして、入れ子になっていても問題なく==で比較できるんでしょうか。試してガッテン。
0087デフォルトの名無しさん
2006/05/23(火) 21:11:10http://bruby.sourceforge.jp/
0088デフォルトの名無しさん
2006/05/23(火) 21:37:37自分でも試してみようよ。
{:x => 1, :y => [1, 2, 3], :z => {:a => [4, 5]}} == {:z => {:a => [4, 5]}, :x => 1, :y => [1, 2, 3]}
=> true
0089デフォルトの名無しさん
2006/05/23(火) 21:42:41ハッシュ(のキー)には順序が無いので{1 => 2, 3 => 4} == {3 => 4, 1 => 2}。
0090デフォルトの名無しさん
2006/05/23(火) 22:29:03ありがたい。
brubyって、exerbで使われてるんだな。
もしかして、exerbってコンパイルしてたりする
0091デフォルトの名無しさん
2006/05/23(火) 22:50:47ブロックつきメソッド通すとハッシュから配列になることはあるけどな
irb> h = { 'k1' => 'v1', 'k2' => 'v2' }
=> {"k1"=>"v1", "k2"=>"v2"}
irb> h.find{ |k,v| k=='k1' }
=> ["k1", "v1"]
いやまあ配列を返すってきちんと書いてはあるんだがなんか悲しい
0092デフォルトの名無しさん
2006/05/23(火) 23:25:34言ってる意味がわかんない
0093デフォルトの名無しさん
2006/05/24(水) 00:53:23言ってる意味はわかるが言いたいことはわからない。
0094デフォルトの名無しさん
2006/05/24(水) 01:14:240095デフォルトの名無しさん
2006/05/24(水) 01:22:40これがもの凄いトートロジーに見えるのは俺が変なのかな?
0096デフォルトの名無しさん
2006/05/24(水) 03:06:29言葉の技巧はいいからもうちょいわかりやすく喋れ、という気はしなくもないが
0097デフォルトの名無しさん
2006/05/24(水) 05:47:330098デフォルトの名無しさん
2006/05/24(水) 05:50:16コンパイルはしていない
ソースをアーカイブしてローダーとRuby実行環境付けてexe化してるだけ
とりあえずオプションでソースを圧縮するかしないかを選べる
暗号化・難読化は未対応
0099デフォルトの名無しさん
2006/05/24(水) 13:48:14while line=file.gets
print line
end
file.close
これってのは一行ずつ読み込んで、最後の行まで達したらその次の行でnilを返されるからwhileが終了するってのでおk?
0100デフォルトの名無しさん
2006/05/24(水) 13:56:410101デフォルトの名無しさん
2006/05/24(水) 14:03:25あと、この手のループってのはたくさん使う機会が出てくるのだと思うけど、
while使ったやり方が一番スマートって認識でおk?
0102デフォルトの名無しさん
2006/05/24(水) 14:05:260103デフォルトの名無しさん
2006/05/24(水) 14:07:12・each 使うほうがいい
・ファイルディスクリプタはあんまり長い間あけっぱなしにしないのが賢いらしい
→ lines = File.readlines(filename) #これだとオープンとクローズ書かなくて済むし
lines.each do |line|
print line
end
0104デフォルトの名無しさん
2006/05/24(水) 14:11:18これからも似たような例でwhile使われてたりしたら、自分で変換してみることにします。
ありがとです。
0105デフォルトの名無しさん
2006/05/24(水) 14:42:43標準入力からユーザー入力を受け付ける場合とか。
while input=STDIN.gets.chomp do
break if input=='exit'
puts "#{input}さん、こんにちは!"
end
あるいはFile.readとかで変数として一気に格納するには
ちょいと大き過ぎるファイルを相手にする場合とか。
(こっちの理由の場合が多いと思う)
0106デフォルトの名無しさん
2006/05/24(水) 14:48:57File::foreach(filename) { |line|
puts line
}
0107デフォルトの名無しさん
2006/05/24(水) 14:50:20> ・ファイルディスクリプタはあんまり長い間あけっぱなしにしないのが賢いらしい
巨大なファイルをフィルタリングしたくなったときに、んなことないだろと思ってIO::readしてたコードが問題になる気がしてて、
ケースバイケースなのはわかるんだけど、開けっ放しイクナイの実例が記憶にないので教えていただけると大変嬉しいです。
0108デフォルトの名無しさん
2006/05/24(水) 14:54:28そこはinputじゃなくnameとかのほうが好ましい希ガス
名前として扱われる変数は名前っぽい名称で使うことを癖にしとくといい
0109デフォルトの名無しさん
2006/05/24(水) 15:00:12とするとファイルでもないものに each do |line| とかline(行)を使うのは好ましくない?
0110デフォルトの名無しさん
2006/05/24(水) 15:29:490111デフォルトの名無しさん
2006/05/24(水) 15:41:47場合によるのでは。
たとえばファイル名が入ってることを想定してるならfilenameのほうが適切な気がする。
なんかのテキストデータを単に各行マッチングかけて、とかするときはlineで合ってると思う。
fpはシラネ。fはよく使うけど。それどこの文化?
0112デフォルトの名無しさん
2006/05/24(水) 15:46:08fp結構あるな
0113デフォルトの名無しさん
2006/05/24(水) 15:48:00FILE *fp;
と宣言してる気がする。
つーか、ポインタは変数名の末尾が p で、
ポインタのポインタとかになると pp(FILE **fpp; とか)とかしてたな。
その辺の名残と思われ。
0114デフォルトの名無しさん
2006/05/24(水) 16:10:14fdでも使っとけ
0115デフォルトの名無しさん
2006/05/24(水) 17:24:01d は何の略?
Perlのサンプルソースなら、fh が多い気がする。C++ なら fin, fout が多い気がする。
0116デフォルトの名無しさん
2006/05/24(水) 17:40:020117デフォルトの名無しさん
2006/05/24(水) 17:52:59ttp://www.ruby-lang.org/ja/man/?cmd=view;name=String#split
Rubyのバージョンによって扱いが変わるみたい。
0118デフォルトの名無しさん
2006/05/24(水) 18:00:41見てもサッパリ分からないので、とりあえず後者を使っておくことにします。
0119デフォルトの名無しさん
2006/05/24(水) 18:02:19fd はファイルディスクリプタのことだろう。
File.open('hoge.txt') はなんと呼ぶのが正しいんだろうな
0120デフォルトの名無しさん
2006/05/24(水) 19:03:05http://jp.rubyist.net/magazine/?0013-BundledLibraries
> 詳しい解説はしませんが、 User-Agent, If-Modified-Since については設定した方が 望ましい
というところの、設定方法がよくわからず。マニュアルも読んだんだけれども…。
諸賢のみなさま教えくださいませ。
0121デフォルトの名無しさん
2006/05/24(水) 19:29:02できないことはするな
必要なことができないのならそもそもするな
下手糞なWebフェッチャを作る奴は全員氏ね
というかあれだ、それはHTTPについての知識が要る。
「HTTPヘッダ」とかそういうのについて勉強したのちに適切なヘッダを発行させろ。
0122デフォルトの名無しさん
2006/05/24(水) 19:50:08大人しくはてなアンテナ使った方が幸せになれる希ガス
0123デフォルトの名無しさん
2006/05/24(水) 20:05:30ツンデレ?
0124デフォルトの名無しさん
2006/05/24(水) 20:21:28Fileオブジェクトなんだからfoでどうだろう
0125デフォルトの名無しさん
2006/05/24(水) 21:29:400126デフォルトの名無しさん
2006/05/24(水) 21:37:49>下手糞なWebフェッチャを作る奴は全員氏ね
鯖管理者? ごくろうさま。
0127デフォルトの名無しさん
2006/05/24(水) 21:53:58わざわざオブジェクトって言わなくたって全部オブジェクトなんだから、o を取って f ってことで。
0128デフォルトの名無しさん
2006/05/24(水) 21:59:26より具体的な名前があるならそれをつけたほうがいい、
という話であって、代入時に自明な名前(fgetsだからinputとか)
をつけること自体は悪くないだろ。
その名前は代入時以外にも使われるんだから。
0129デフォルトの名無しさん
2006/05/24(水) 22:04:24俺も{}を使った一行ブロックのときは
基本的にxで統一してるな
do〜endならだいたい名前付けるけど
0130デフォルトの名無しさん
2006/05/24(水) 22:19:020131デフォルトの名無しさん
2006/05/24(水) 22:36:45俺はそうしてる
>>130
kwsk
0132デフォルトの名無しさん
2006/05/24(水) 22:38:50groovyは、
{ x | println x }
と
{ println it }
これが一緒ってことか
0133デフォルトの名無しさん
2006/05/25(木) 00:02:08farポインタ
0134デフォルトの名無しさん
2006/05/25(木) 00:04:510135デフォルトの名無しさん
2006/05/25(木) 00:49:52オープンできるファイル数に制限があった頃の名残じゃないかなぁ
今でもあると思うけど
そんだけくらいですまん
0136デフォルトの名無しさん
2006/05/25(木) 04:21:36$_よりはいいよ。意味わかるし
0137デフォルトの名無しさん
2006/05/25(木) 06:28:18module Math
module_function
def max(x, y)
x > y ? x : y
end
end
なんてのがあるかと思いましたが、ないようです。
どっかにあったような気がしたんですが、見つかりません。
0138デフォルトの名無しさん
2006/05/25(木) 07:13:33$_も意味分かるからいいと思うけど
省略可っていうのがあれだ
0139デフォルトの名無しさん
2006/05/25(木) 07:50:22Enumerableモジュールあたりにmaxメソッドとかなかったっけ
[x,y].max とかできたような気が
0140デフォルトの名無しさん
2006/05/25(木) 09:08:32書いてあることが難しすぎて分からない事が多いです。
もっと平易な表現で書いてあるものは無いでしょうか?
それとも、リファレンスを読めるレベルになるまで、様々な入門サイト等で勉強した方が良いのでしょうか?
0141デフォルトの名無しさん
2006/05/25(木) 09:22:36わからないことはここで聞いたらいいよ。
MLでもいいけどこっちの方が簡単。
とりあえず何をしたくて何を調べたのか。
コード書いたのならコードも可能な範囲で晒すとよい。
コードの意図も書くと尚よいな。
0142デフォルトの名無しさん
2006/05/25(木) 09:34:57どういうところがわからんのかがわからんので確かなことは言えんが、おーむねYESだ。
一般に、リファレンスマニュアルは専門用語を理解した人向けに書かれている。
つか、「リファレンス読むと便利」のリファレンスっていうのは
「組み込みクラス/モジュール/例外クラス」と「添付ライブラリ」のあたりの一覧を指してるはず。
その前にある言語仕様や文法についてのところはみんなあんま読んでないと思うぞ。
この辺は解説本や初心者サイトあたりで概略つかんだほうがいい。
0143デフォルトの名無しさん
2006/05/25(木) 09:42:33ttp://www.namaraii.com/rubytips/
マニュアルはマニュアル語を最大限理解した人にとって最大限に便利になるように書かれてるから
“普通”に読んでるだけではやたら小難しく書いてあるように感じるかもしれない
マニュアルとして記述が不足してるという場合も多々あるけどな
0144デフォルトの名無しさん
2006/05/25(木) 09:51:04最初の勉強には書籍がお勧め
できれば購入した方が良いけれど、図書館で探してもいい
俺のお薦めは「たのしいRuby」
0145デフォルトの名無しさん
2006/05/25(木) 10:51:16レスありがとうございます。
書籍の購入も視野に入れて、勉強してみます。
その上でどうしてもわからなかったら、コードやエラーコードを晒して、
添削していただこうと思います。
アドバイスありがとうございました。
0146デフォルトの名無しさん
2006/05/25(木) 11:43:26がんばれ。
0147デフォルトの名無しさん
2006/05/26(金) 04:09:240148デフォルトの名無しさん
2006/05/26(金) 07:17:000149デフォルトの名無しさん
2006/05/26(金) 07:24:330150デフォルトの名無しさん
2006/05/26(金) 07:55:45それとも、もっと他の意味なども含めてという事でしょうか?
0151デフォルトの名無しさん
2006/05/26(金) 08:17:04ゝ ''〃//,,, ,,..`ミミ、_ノリ}j; f彡
_) 〃///, ,;彡'rffッ、ィ彡'ノ从iノ彡
>';;,, ノ丿川j !川|; :.`7ラ公 '>了
_く彡川f゙ノ'ノノ ノ_ノノノイシノ| }.: '〈八ミ、、;.)
ヽ.:.:.:.:.:.;=、彡/‐-ニ''_ー<、{_,ノ -一ヾ`~;.;.;)
く .:.:.:.:.:!ハ.Yイ ぇ'无テ,`ヽ}}}ィt于 `|ィ"~
):.:.:.:.:|.Y }: :! `二´/' ; |丶ニ ノノ
) :.: ト、リ: :!ヾ:、 丶 ; | ゙ イ:} 逆に考えるんだ
{ .:.: l {: : } ` ,.__(__,} /ノ
ヽ ! `'゙! ,.,,.`三'゙、,_ /´ 「エスケープシーケンスを使いたくない時に
,/´{ ミ l /゙,:-…-〜、 ) |
,r{ \ ミ \ `' '≡≡' " ノ シングルクォーテーションする」と考えるんだ
__ノ ヽ \ ヽ\ 彡 ,イ_
\ \ ヽ 丶. ノ!|ヽ`ヽ、
\ \ヽ `¨¨¨¨´/ |l ト、 `'ー-、__
0152デフォルトの名無しさん
2006/05/26(金) 08:27:23__,,/ _, ----`ヽ
/ _ ___ 、\
/ / i \ \\
,'./ i ヽ:. ヽ:.:.. ヽ.ヽ
,'/ / .ハ ヽ ヽ:.:.:.:. ヽ::.. ヽヽ
|i .i i .i / ヽ ト 、 \、:.:.:. ',:.',:.:.lヽ}
|i .i l :N_, -弋 \弌弋ナ:}:.:} わかりました。
|i∧ ', :{ ,ィjモト \ イjミトイイV
.| :メヽ.', `ozZ} izN。ハ::{ そういう風に考えてみます。
| :ヾ_! ゝ "゙゙ ' `゙ ハ.:',
| :.:_イ .:.ヽ. (二フ , イ :.:.:!:.ヽ ありがとうございました。
/ rィイ | :.:.ヽ: >r/`<ノ .:.::.}ヽ、\
/ ∧l;l ! :.:.:.://{二 ̄ .} ..:..::リ//ハ.:\
/ .{. ',ヾ、ヽi .:.:.{ /(^` |.:.:.:.//: : :.}: . ヽ.
/ / ) ヽ ヾ、ヽ:.ハ ヤ{ ∧/.-‐'": : |:.:. i ',
./ .,イ .:..} : :\ヾレ'ハ ∧__ノノハヾ、 : : : l:.:.: .ハ ',
{ /| .:.:ハ : : :i Y {ヾ`Yヽニン'ノ}: : } : : : :/:.:.:/ }:.}
V | .:.:/:.:|_,ィ' ̄ ヽ三{ `ー-ノ : イ : : :/:.:i.:{ リ
ヽ:.:{、.:.V : : ヘ : : {: : :/:.::∧|
ヽ! )人 : : :人 : : : / \!
" ヽ : : : : :/イ{ :.ノ: : : :.\
\__///: :\______/: : : : : : : ヽ
/ //: : :|;|: : : : : : i: : : __: : : : ',
/ 、 {;{ |;| . : i/. : : : : : :|
/ `Y;{. . . .|;|. : : : /i: : : : : : : : :l
0153デフォルトの名無しさん
2006/05/26(金) 08:54:41これはときどきみかけるけど、結局は「好きにして」としか言いようがない。
0154デフォルトの名無しさん
2006/05/26(金) 09:33:26気にせずダブルクォートで統一するかどちらかだろう
変数が展開されるダブルクォート乱用は本来好ましくないんだが
Rubyでは #{ } がないと動かないからあんま気にしなくていいな
0155デフォルトの名無しさん
2006/05/26(金) 09:42:03kwsk
0156デフォルトの名無しさん
2006/05/26(金) 09:44:27式展開を忘れてるじゃないの。
ダブルクォートの時は式展開してくれるけど、シングルクォートだと式展開されないんだから。
わかってるとは思うけど%記法とヒアドキュメントでも同じことが言えるんだからね。
0157デフォルトの名無しさん
2006/05/26(金) 09:47:22shとかperlとかの話っしょ。 ruby では関係ない。
青木さんのコーディングスタイルから。これもひとつの考え方として。
http://i.loveruby.net/w/RubyCodingStyle.html
> まず、エスケープや式展開がなく、一行のときは常に「'」。このほうが見やすいじゃないか。
> エスケープや式展開があるときは「""」にする。ちなみに、\n はできるだけ使わず puts を使うほうが好きだ。
> 「"」が文字列中に出てきてバックスラッシュが多くなるときは迷わず % 文字列を使う。
> 最後に使うのがヒアドキュメント。これを使うとインデントの最中に割り込んでくるので気持ちわるい。 <<-HEREDOC を使えばインデントはできるが、インデント部分が取り除かれるわけではないので、例えば出力するための文字列には使えない。
おれは基本的に "" を使っていて、それでややこしい時に % を使ってるなぁ。
0158デフォルトの名無しさん
2006/05/26(金) 09:47:35str = Q(あほ >>#{148} , ばか >>#{151} , かわいい >>#{152}\n)
とかで統一してるけど
0159デフォルトの名無しさん
2006/05/26(金) 10:26:360160デフォルトの名無しさん
2006/05/26(金) 10:47:170161デフォルトの名無しさん
2006/05/26(金) 10:48:51ひとつの空白にまとめるなんて
アホな仕様にならないといいな。
0162デフォルトの名無しさん
2006/05/26(金) 11:41:44変わらないこともないこともないこともないけど、
そんなの気にするよりもっと他にチューニングすべきことが山のようにあるはず。
0163デフォルトの名無しさん
2006/05/26(金) 11:56:51俺のATOKタンだったら怒りそうな文章だな。
0164デフォルトの名無しさん
2006/05/26(金) 12:10:060165デフォルトの名無しさん
2006/05/26(金) 12:35:500166デフォルトの名無しさん
2006/05/26(金) 12:41:55これを気にする人は読み込み時のファイルサイズ増大を嫌ってインデントの空白も取り去ってるだろうがね
0167デフォルトの名無しさん
2006/05/26(金) 12:44:480168デフォルトの名無しさん
2006/05/26(金) 13:17:29禿同
とりあえずyarvベースになってからだな。
0169デフォルトの名無しさん
2006/05/26(金) 13:32:19コンパイル終わったら差が無いんだし。
0170デフォルトの名無しさん
2006/05/26(金) 13:45:14あるだろ。
文字列の展開は静的な処理じゃないんだから。
0171デフォルトの名無しさん
2006/05/26(金) 13:50:52シングルクォートとダブルクォートの比較をしてるんだから、
文字列の展開があるようなケースは関係ないでしょ。
0172デフォルトの名無しさん
2006/05/26(金) 14:25:340173デフォルトの名無しさん
2006/05/26(金) 14:33:260174デフォルトの名無しさん
2006/05/26(金) 18:21:15"#{value}"
この二つだと当然スピードは変わる。
'value'
"value'
これらの場合はどうなんだろうね。展開しなくてもいいような文字列だから、
''と同じ扱いをするようにコンパイルをするのか、それともそのままなのか。
そのままなら、'value'の方が速いって事になるんじゃない?
0175デフォルトの名無しさん
2006/05/26(金) 18:55:47しかし、
> ''と同じ扱いをするようにコンパイルをするのか、それともそのままなのか。
に答えられる香具師がなかなか現れないという初心者スレクオリティ。
0176デフォルトの名無しさん
2006/05/26(金) 19:12:04Stringオブジェクトにさえなってしまえば元々どうクォートされていようがその先は関係ない。
パースするとこは確実に処理が違うし、それ故速度も違う。
でも気にするほどじゃない。
0177デフォルトの名無しさん
2006/05/26(金) 21:28:28なんとなく単語ならシングル、文ならダブルを使ったりする
ハッシュのキーとかなら、なんとなく文字列でなくシンボルを使ったりする
0178デフォルトの名無しさん
2006/05/26(金) 21:57:21という都市伝説。
0179デフォルトの名無しさん
2006/05/26(金) 22:31:16attr :sgr0
同じクラス内に、@sgr0 っていう変数があるのですが、これと何か関係してるのでしょうか?
0180デフォルトの名無しさん
2006/05/26(金) 22:31:41軽量言語なんだから、とにかく早くできればいいいんだよ。
そういや今年のLLゴンって行くやついる?
0181デフォルトの名無しさん
2006/05/26(金) 22:35:00マニュアル
http://www.ruby-lang.org/ja/man/?cmd=view;name=Module;em=attr#attr
0182デフォルトの名無しさん
2006/05/26(金) 22:50:27ごめんなさい。
マニュアルを見て理解不能だったので質問させてもらいました。
0183デフォルトの名無しさん
2006/05/26(金) 23:03:12attr :sgr0
は
def sgr0
@sgr0
end
と同義、とそのマニュアルには書いてある
0184デフォルトの名無しさん
2006/05/26(金) 23:26:34都市伝説なのか?
0185デフォルトの名無しさん
2006/05/26(金) 23:26:35return @sgr0
end
これならわかると思う
returnをやたら省略したがるのはRubyの悪い癖
0186デフォルトの名無しさん
2006/05/26(金) 23:45:23あっ!、わかりました。
hoge.sgr0で@sgr0の値が取れるということですね。
サンクス。
0187デフォルトの名無しさん
2006/05/26(金) 23:48:51こんなんありましたけど。
ttp://www.fdiary.net/ml/learn-ruby-in-kansai/msg/1233
0188デフォルトの名無しさん
2006/05/27(土) 00:33:37あったほうがわかりやすいよな。
メソッドの最後の行に変数だけ書かれてると「書き間違い?」とか思うぞ。
0189デフォルトの名無しさん
2006/05/27(土) 02:07:09という都市伝説。
0190デフォルトの名無しさん
2006/05/27(土) 02:28:520191デフォルトの名無しさん
2006/05/27(土) 03:52:22ここによるとreturnは必須らしいな。
0192デフォルトの名無しさん
2006/05/27(土) 06:24:12callerだと呼び出し元のメソッド名はわかりますが、今実行しているメソッド名は取得できないようです。
0193デフォルトの名無しさん
2006/05/27(土) 08:18:450194デフォルトの名無しさん
2006/05/27(土) 09:18:000195デフォルトの名無しさん
2006/05/27(土) 09:24:08x = bar(y, z) do
...
end
こういう書き方のこと?
0196デフォルトの名無しさん
2006/05/27(土) 09:53:35> return を省略した方が格段にパフォーマンス良いからね。
メソッド末尾のreturnは内部的に省略されるようになったから、
ほとんどの場合変わらない。
と思ったらこれ1.9 featureだったか。
0197194
2006/05/27(土) 10:15:17いや、たとえば
(1..16).to_a.map do |x|
if x < 10
next x
else
next (?a + x - 10).chr
end
end
みたいな。
return が書ければ分かりやすい気もするんだけど、仕方ないんだろうね。
0198デフォルトの名無しさん
2006/05/27(土) 10:34:200199デフォルトの名無しさん
2006/05/27(土) 10:57:37吐いた
0200デフォルトの名無しさん
2006/05/27(土) 11:52:51さんくすこ。caller()は引数をとれるんですね。
0201デフォルトの名無しさん
2006/05/27(土) 22:29:140202デフォルトの名無しさん
2006/05/27(土) 23:35:04そう かんけいないね
メ几
→木又してでもうばいとる
ゆずってくれ たのむ!!
0203デフォルトの名無しさん
2006/05/28(日) 12:42:090204デフォルトの名無しさん
2006/05/28(日) 12:44:22<tr><td><small>* 分割による調整については、<a href="http://help.yahoo.co.jp/help/j
p/fin/quote/historical/his_07.html">こちら</a>を参照してください。</small></td><td
align=right><small>[<a href="t?s=6758.t&a=1&b=1&c=1980&d=5&e=28&f=2006&g=d&q=t&y=
50&z=6758.t&x=.csv">前の50件</a> | <a href="t?s=6758.t&a=1&b=1&c=1980&d=5&e=28&f=
2006&g=d&q=t&y=150&z=6758.t&x=.csv">次の50件</a>]</small></td></tr></table></td><
/tr></table></center><br>' #本来は一行です
print $1
とすると下のように延々マッチしてしまいます。
http://help.yahoo.co.jp/help/jp/fin/quote/historical/his_07.html">こちら</a>を参照
してください。</small></td><td align=right><small>[<a href="t?s=6758.t&a=1&b=1&c=1
980&d=5&e=28&f=2006&g=d&q=t&y=50&z=6758.t&x=.csv">前の50件</a> | <a href="t?s=6758
.t&a=1&b=1&c=1980&d=5&e=28&f=2006&g=d&q=t&y=150&z=6758.t&x=.csv"> #これも出力結果は1行です
最後のリンクだけ取り出したいのですが何が間違ってるのでしょうか?
t?s=6758.t&a=1&b=1&c=1980&d=5&e=28&f=2006&g=d&q=t&y=150&z=6758.t&x=.csv
↑こういうのが欲しい
0205デフォルトの名無しさん
2006/05/28(日) 13:01:47みたいにしてみたらどうだ?
0206デフォルトの名無しさん
2006/05/28(日) 13:04:24そりゃ
/<a href="(.*?)次の/
にマッチするのは
「<a href="」の次から最初の「次の」の前まで
だろ。イメージ的には。
/\| <a href="(.*?)">次の/
でどうだ。
“本文”に「|、スペース、Aタグ」の順番の文字列が出てこないことが前提だけど。
0207sage
2006/05/28(日) 13:09:43ども
/<a href="([^"]*?)">次の/
で行けました
最短マッチで後方が指定してあれば
その直前を拾ってくれるかと思ったんですが
[^"]こいつがいったい何なのか、今から調べてきます
0208デフォルトの名無しさん
2006/05/28(日) 14:35:24教えてください〜。
とりあえず、ctrl + spaceを押すと
自己定義変数名などは出てくれます。
putsなども出してくれます。
クラスメソッド名までは出してくれません。
そういう物なのでしょうか。
OS:XP
eclipse 3.1.1 + rdt 8.0?(org.rubypeople.rdt-0.8.0.604272100PRD.zip)
0209デフォルトの名無しさん
2006/05/29(月) 03:36:260210デフォルトの名無しさん
2006/05/29(月) 08:17:23exyファイルを生成し、exerb.exeを実行してみたのですが
どうやら3.2.0のバイナリはexy形式に対応していないらしく
unknown directiveエラーになってしまいます。
exy形式でも実行できるバイナリって、どこかで配布していませんか?
0211デフォルトの名無しさん
2006/05/29(月) 08:18:41エクリプスが、全クラスインクルードしまくってサーチしてくれるとは思えないけどな。
自己定義変数名もそのファイル内程度でしょ。
0212デフォルトの名無しさん
2006/05/29(月) 08:59:01ブラウザで *.rhtml を指定したら実行されるかってことかな?
デフォルトではたぶん実行されないようになっている。
.htaccess をかけばもしかしたら使えるようになるかもしれない。
だめだったら CGI プログラムから *.rhtml を読み込むようにするしかないと思う。
require 'cgi'
cgi = CGI.new
print cgi.header('text/html; charset=UTF-8')
require 'erb'
trim_mode = 1
erb = ERB.new('file.rhtml', $SAFE, trim_mode)
print erb.result(binding())
0213デフォルトの名無しさん
2006/05/29(月) 21:38:39漏れは、
http://arton.hp.infoseek.co.jp/indexj.html
にある
ActiveScriptRubyに同封されているのを使っている。
0215デフォルトの名無しさん
2006/05/30(火) 00:07:16取り急ぎのお礼なんていらねーって
0216デフォルトの名無しさん
2006/05/30(火) 14:01:46いては、どうなったんですか?
もう下火ですか?
0217デフォルトの名無しさん
2006/05/30(火) 14:02:510218デフォルトの名無しさん
2006/05/30(火) 14:22:100219デフォルトの名無しさん
2006/05/30(火) 14:37:05スレを間違えてはおられませんか?
本スレでは、そんな話で盛り上がっていたようですが
ここは初心者スレですので
どうなったのか、と聞かれても、別にそういう話題は扱っていませんよ
0220デフォルトの名無しさん
2006/05/30(火) 15:19:10def initialize
@child = Bar.new(self)
end
end
class Bar
def initialize(parent)
@parent = parent
end
end
こういう関係の二つのオブジェクトを作る時、子オブジェクトに親オブジェクトがどれかを伝えるには
newメソッドにselfを引き渡す他に方法はないでしょうか
例えばクラスの継承関係をあらわすancestorsメソッドのように
生成元オブジェクトを表すようなメソッドや変数は存在しませんか?
0221デフォルトの名無しさん
2006/05/30(火) 18:02:52クラスの親子関係とオブジェクトの親子関係をごっちゃにしている。
class Foo < Bar はクラスの親子関係を表しており、ancestorで調べられる。
インスタンスオブジェクトには基本的に親子関係はない。あるのは他オブジェクトへの参照のみ。
それを人が見て親子関係だと見なしているだけ。
繰り返す。オブジェクトには親子関係はない。
もし、newにselfを渡すのが面倒くさいというだけなら、次のようにするとよい。
class Foo
def initialize
@child =Bar.new
@child.parent = self
end
end
class Bar
attr_accessor :parent
end
0222
2006/05/30(火) 19:10:48レスありがとうございます。
ちょっと、意図をよくご理解いただけなかったようですが
子クラスから親クラスを参照するように、というのは喩えとして出したまでのことです。
またparent、childなどのプロパティを設定したのも、設計上のものであってクラス継承を意図したものではありません。
要は、あるオブジェクトA内で、別のオブジェクトBを生成するときに、
AからBに明示的にselfなどの情報を伝達する他に、BからAを特定する方法はないか、ということです。
Bar.parentをattr_accessorで定義してしまうと
Bar外部から自由にparentが書き換え可能になってしまうわけですから
設計上はあまり好ましいことではないですよね。
この種のプロパティはread onlyにするのが普通だと思いますので。
ですから、それより他に手がないということであれば、new(self)で生成時に自分自身への参照を送るしか
ないのかな、と思うのですが、newメソッドに他に引き渡すべきデータがあるときには、new(data, self)とか
なっちゃって、どうもあんまり美しくない気がするんですよねえ・・・
0223デフォルトの名無しさん
2006/05/30(火) 20:28:21美しくない気がする理由もよく分からない。
0224デフォルトの名無しさん
2006/05/30(火) 20:29:40Object#instance_variable_setを使えば、Bar#parentなしでできる。
class Foo
def initialize
@child = Bar.new
@child.instance_variable_set("@parent", self)
end
end
>AからBに明示的にselfなどの情報を伝達する他に、BからAを特定する方法はないか
ない。わかるのは、メソッド呼び出しの関係ぐらい。
caller()を使えばメソッド呼び出しの情報はわかるが、そこにはクラスの情報が含まれていない。
0225デフォルトの名無しさん
2006/05/30(火) 20:30:12呼び出し元のBindingを取り出す方法があればいいか、とか思うんだけどね。
なんとなくこんなの思いついたけど、事実上何も変わってない。
class Foo
def initialize
@child = Bar.new{self}
end
end
class Bar
def initialize
@parent = yield
end
end
0226デフォルトの名無しさん
2006/05/30(火) 21:24:20成程、たいへん参考になりました。
どうもありがとうございました。
0227デフォルトの名無しさん
2006/05/30(火) 21:30:11set_trace_func(Proc.new do |event, file, line, id, binding, klass|
case event
when "call"
$STACK.push(eval("self", binding))
when "return"
$STACK.pop
end
end)
class A
attr_reader :b
def initialize
@b = B.new
end
end
class B
attr_reader :owner
def initialize
@owner = $STACK[-2]
end
end
a = A.new
p(a.b.owner)
0228デフォルトの名無しさん
2006/05/30(火) 22:04:14すごい力技だが正直感動した。
0229デフォルトの名無しさん
2006/05/30(火) 22:09:26すごいことはわかったから、多少なりとも解説をいれてくれ。
ここは初心者スレだ。わかるやつだけわかればいいという、まるでRubyのリファレンスマニュアルみたいなのは勘弁。
0230デフォルトの名無しさん
2006/05/30(火) 22:20:400231デフォルトの名無しさん
2006/05/30(火) 22:35:40っていうか
まで読んだ。
0232227
2006/05/30(火) 23:00:23後からその self の履歴をさかのぼって参照する、というものです。
$STACK = []
class A
def initialize
$STACK.push(self)
@b = B.new
$STACK.pop
end
end
class B
def initialize
$STACK.push(self)
@owner = $STACK[-2]
$STACK.pop
end
end
a = A.new
p(a.b.owner)
これは >>227 と似たようなことをやろうとしているもの。
上記でいちいち push して pop しているところ、
組み込みメソッドの set_trace_func を使うことで、
その push pop を一カ所にまとめて書いています。
set_trace_func の詳細はリファレンスマニュアルを読んでください。
set_trace_func以外は特に難しいことはしていないつもりだけどどうかな。
0233デフォルトの名無しさん
2006/05/30(火) 23:48:50$STACK = self
@parent = $STACK
でも同じ?
スタックにしてすべてのオブジェクトの生成を監視した方が
汎用性が高いってこと?
0234デフォルトの名無しさん
2006/05/31(水) 04:50:36GJ
0235デフォルトの名無しさん
2006/05/31(水) 09:13:21A以外からBオブジェクトを生成しないと仮定できれば、それでも良いですね。
>>232に書いたように、各メソッド内でselfを管理してもそんなに違いは
無いんですよ。ただ、いちいち書くのが面倒で、Rubyには便利なメソッドが
用意されているのでそれを使おう、これに尽きます。
全てのメソッド呼び出しを管理しているのは今回は成り行き上なのですが
(管理するselfを選別するほうが面倒そうですし)、
A -> B -> (なにか) -> A -> B -> ... などのネストにも対応できるので、
便利といえば便利だと思います。
0236デフォルトの名無しさん
2006/05/31(水) 12:01:540237デフォルトの名無しさん
2006/06/02(金) 15:51:08と何かに書いてあったけど
小分けにして何度もファイルの入出力を行うのもマシンの負担となると何かに書いてあった
かといってファイルを長時間開きっぱなしにしたまま一行ずつちまちま処理するのもあまりよろしくないようで
一般的にはどうするのが最良とされているのでしょうか
たとえば何万行もあるcsvファイルの3列目の値が"HOGE"となっている行だけを抽出して新たなcsvファイルを作りたいときとか
0238デフォルトの名無しさん
2006/06/02(金) 16:05:270239デフォルトの名無しさん
2006/06/02(金) 17:30:04100M超なら切り分けて読み込むけど。
0240デフォルトの名無しさん
2006/06/02(金) 17:31:360241デフォルトの名無しさん
2006/06/02(金) 17:32:120242デフォルトの名無しさん
2006/06/02(金) 17:37:44じゃあ何を聞きたいか詳しく説明しる
0243デフォルトの名無しさん
2006/06/02(金) 19:19:320244デフォルトの名無しさん
2006/06/02(金) 21:46:130245デフォルトの名無しさん
2006/06/02(金) 21:50:220246デフォルトの名無しさん
2006/06/02(金) 22:04:360247デフォルトの名無しさん
2006/06/02(金) 23:02:590248デフォルトの名無しさん
2006/06/02(金) 23:07:380249デフォルトの名無しさん
2006/06/03(土) 07:55:090250デフォルトの名無しさん
2006/06/03(土) 14:07:51>>249 を消してやるのに!
0251237
2006/06/03(土) 22:38:42なんだか無難な感じですね。参考にします。
>>239
大変参考になりました。
>>241
それだとファイル開きっぱなしになるのでは?
>>244-248
まあ、そういわずにRubyを使う前提でよろしくお願いします;
あと、シェルスクリプトとかgrepとかcatとかの話もunixをまったく知らないのでご勘弁ください…なにぶん初心者なもので…orz。
0252デフォルトの名無しさん
2006/06/03(土) 23:08:39考慮してのことだと思うんだけど、同じスクリプトからのアクセスだったら
排他制御をしっかりしとけばいい話だと思う。
そうでないとしても、本当にそんなことを気にする必要があるのかな。
0253237
2006/06/03(土) 23:27:27>本当にそんなことを気にする必要があるのかな。
ハイ、まさにそこなんです;
一般に言われている「〜の場合には〜した方がよい」的なのがあれば、変なクセが付く前にその定番的手法を身につけておきたいっていう気持ちがありまして。
このへんに関して特に一般論が存在せず「お好きなように」ということであれば、気にせずreadlinesなりファイル開きっぱなしでeach_lineなりで処理したいと思います。
0254デフォルトの名無しさん
2006/06/04(日) 08:13:29それが変な癖であって何か問題が生じるということに気づいたら
それを修正していくことで段々ノウハウわかっていくんだから
最初から定番的方法だけ効率的に覚えていこうなんざおこがましいってもんよ
0255デフォルトの名無しさん
2006/06/04(日) 14:33:41一気に読み込んだほうがいい場合もあるし、一行一行処理した方がいい場合もある。
何のためのプログラムなのか、どんなとき使うのかを考えれば
どうやるのがベストかは自ずと分かるような気がする。
0256デフォルトの名無しさん
2006/06/04(日) 15:13:02世間様に氾濫する「俺流プログラミングテクニック」が矯正されてるかというとあんまそうでもないことを鑑みるに
最初から「正しく」覚えるのは学習コストの面から言っても悪くない選択だと思うぞ
Rubyの場合は「どう書いてもたいてい正しいし趣味レベルではたいして変わらん」というのが少なくないけどな
0257デフォルトの名無しさん
2006/06/04(日) 22:23:03そのために失敗の経験をすることは無駄ではない
経験があることで初めて最初から悪いコードを避け良いコードを書くことが出来る
良いコードだけ都合良く覚えようなんて虫が良過ぎる
0258デフォルトの名無しさん
2006/06/04(日) 22:34:06俺も無駄とは思わないけど
そんなに暇あるわけじゃないし
良いコードを都合よく覚えてなんの問題があるというのか
よほどの天才以外はどうせそれでも失敗するんだし
0259デフォルトの名無しさん
2006/06/04(日) 22:52:12始めから良いコードに揉まれるのも良いと思うがね。
Perl の KENT 厨や、PHP 使いなんか見ると特にそう思う。
0260デフォルトの名無しさん
2006/06/04(日) 23:03:51それならいいよ
良いコードを都合よく覚えると失敗しないと思ってる馬鹿がいるからね
0261デフォルトの名無しさん
2006/06/04(日) 23:32:37楽は許さない
自分と同じに苦労せよ
0262デフォルトの名無しさん
2006/06/05(月) 00:02:06読みやすいし、初期のころはセキュリティホールになるだろって
言うコードもあったけど、最近はいいんでない?
スクリプトに生の管理パスワード書かせる仕様はやめた方がいいと思うけど。
0263デフォルトの名無しさん
2006/06/05(月) 00:09:43>読みやすいし、初期のころはセキュリティホールになるだろって
>言うコードもあったけど、最近はいいんでない?
読んだの?
評判だけで判断するより読めば分かる話だよ。
0264デフォルトの名無しさん
2006/06/05(月) 00:39:54なんか典型的なバカ上司だな
0265sage
2006/06/05(月) 01:00:59まあでもどちらかというと、暇がないのに、効率を気にしているのに、
こんなスレ覗いてる香具師がアホっぽいな。
あといきなり細部に拘るようなプログラマは概して使えないと思われ。
ファイル操作のとこだけ鉄板教えてもらってあとどうするつもりなんだこいつは。
教えて君が一生許させるなら別にいいが大抵はそうじゃないんだぞ。
0266デフォルトの名無しさん
2006/06/05(月) 02:43:13まともな香具師ならKENT使わないし、自分で最低限エンコードハックぐらいするでしょ。
何万行もあるならその時点でperlやrubyって選択肢は無いね。プロトタイプぐらいは作るかも知れないけど、最終的にはCで組む。面倒だから最初からCで組むなあ。
0267デフォルトの名無しさん
2006/06/05(月) 03:17:32> ファイル操作のとこだけ鉄板教えてもらって
じゃあファイル操作のところだけは鉄壁になるな。
いい癖がつくことはいいことだ。
0268デフォルトの名無しさん
2006/06/05(月) 03:34:56こんなもの使ったら身にならないとか本質がわからないとか言って
コードの再利用がありえるのならコーディングスタイルの再利用があってもいい
0269デフォルトの名無しさん
2006/06/05(月) 06:10:17>何万行もあるならその時点でperlやrubyって選択肢は無いね。プロトタイプぐらいは作るかも知れないけど、最終的にはCで組む。面倒だから最初からCで組むなあ。
おれなら逆だな。何万行にもなるプログラムだからこそPerlやRubyで書いて、行数を減らす。
これをCで書いたら大変すぎ。Cで1万行になるコードはスクリプト言語だと千行で済むから、大きいプログラムほどスクリプト言語で書いて楽をする。
そして、本当に速さが必要な部分だけをCで書く。
0270デフォルトの名無しさん
2006/06/05(月) 06:13:18Cで構造化プログラミングしてないんですか?
0271デフォルトの名無しさん
2006/06/05(月) 08:08:45はぁ?バカですか?
0272sage
2006/06/05(月) 09:19:55状況にも因るかな。
→人間が楽したい(させなければいけない)OR機械に楽させたい(させなければいけない)。
0273デフォルトの名無しさん
2006/06/05(月) 09:24:330274デフォルトの名無しさん
2006/06/05(月) 09:24:57sageはそこじゃなかった orz
0275デフォルトの名無しさん
2006/06/05(月) 10:40:530276デフォルトの名無しさん
2006/06/05(月) 10:59:220277デフォルトの名無しさん
2006/06/05(月) 11:06:400278デフォルトの名無しさん
2006/06/05(月) 11:09:350279デフォルトの名無しさん
2006/06/05(月) 12:32:50File::(open|read|write|close)する部分は実アプリだとごくごく一部だけどな。
まあ教えてやってよ。鉄板コードを。その都度。
0280デフォルトの名無しさん
2006/06/05(月) 12:55:53最早負け惜しみにすら聞こえんな
0281デフォルトの名無しさん
2006/06/05(月) 13:58:20たとえばどんなとこが駄目なの?
おれが敢えて挙げるとすれば、グローバル変数がやたらと多いくらいしか
不満はないんだけど、他にはどういうところが良くない?
巷でよく使われているスクリプトの中には、絶望的なくらい汚いソースの
ものもあるけど、KENTってかなりましな方だと思っている。
0282デフォルトの名無しさん
2006/06/05(月) 14:05:250283デフォルトの名無しさん
2006/06/05(月) 14:11:460284デフォルトの名無しさん
2006/06/05(月) 15:11:42そりゃそうだ。
勝ち負けの話じゃねえんだから。
0285デフォルトの名無しさん
2006/06/05(月) 15:18:440286デフォルトの名無しさん
2006/06/05(月) 15:19:34アレは明らかに皮肉なのだが。
0287デフォルトの名無しさん
2006/06/05(月) 15:44:450288デフォルトの名無しさん
2006/06/05(月) 16:12:340289デフォルトの名無しさん
2006/06/05(月) 16:30:41わざわざkentライクなもの作るくらいならrorで作る。
なんでもperlで済ませようとするperl廚とは違うよ。
0290デフォルトの名無しさん
2006/06/06(火) 00:41:11これだけはガチ
0291デフォルトの名無しさん
2006/06/06(火) 09:00:09Rubyはお手本がないから困る。
0292デフォルトの名無しさん
2006/06/06(火) 10:13:450293デフォルトの名無しさん
2006/06/06(火) 10:15:540294デフォルトの名無しさん
2006/06/06(火) 10:18:490295デフォルトの名無しさん
2006/06/06(火) 15:25:07適当に書くとそうなるってことはその利用感覚が「普通である」証拠
「凡人が普通に適当に使う」と足元を撃ち抜く仕様であるというのなら
それは言語作者やモジュール作者が気を遣うべき箇所だと考える
…Perlくらい有名なら「定型動作しかしないがガチガチにセキュアなネット利用モジュール」とか
誰か作ってそうなもんだけど
0296デフォルトの名無しさん
2006/06/06(火) 20:06:44どこだっけか。
0297デフォルトの名無しさん
2006/06/07(水) 18:55:43perlの綺麗なソースっていうと、たとえばどんなのがあるかな。
0298デフォルトの名無しさん
2006/06/07(水) 19:31:1510年前の大学生のようなコードかくなっていう記事。
前にこのスレでも見かけたのだがどこだったか。
0299デフォルトの名無しさん
2006/06/07(水) 20:07:460300デフォルトの名無しさん
2006/06/07(水) 20:40:38http://d.hatena.ne.jp/fbis/20060504/1146736766
0301デフォルトの名無しさん
2006/06/07(水) 21:33:500302デフォルトの名無しさん
2006/06/07(水) 21:37:170303デフォルトの名無しさん
2006/06/07(水) 21:41:170304デフォルトの名無しさん
2006/06/07(水) 22:19:19プログラム始めようと思い人に相談すると、最初はRubyを進められました。
で、参考書買おうと思いますが、何かお勧めを教えてください。
達人プログラマーガイドというのが、評判よさそうですが、玄人向きですよね。
(相談した人はあまり参考書に詳しくありませんでした)
0305デフォルトの名無しさん
2006/06/07(水) 22:23:49目指すものにもよるがな
Amazon.co.jp:たのしいRuby―Rubyではじめる気軽なプログラミング: 本
http://www.amazon.co.jp/exec/obidos/ASIN/4797314087/
発売は古いが普通に学ぶだけならおおむね問題ない
というかこれ以外いいのがないのが実情
0306デフォルトの名無しさん
2006/06/07(水) 23:01:33会社の環境と学びやすさから勧められました。
ある程度マスターしたらJavaに進んで、それからは自由に。
という感じ。
はじめたらまた来ますね。
0307デフォルトの名無しさん
2006/06/07(水) 23:03:41オブジェクト指向って、ふっと発想の転換でアハッするものだしねえ。
0308デフォルトの名無しさん
2006/06/07(水) 23:10:57amazonはアホみたいな値段ついてるし。
0309デフォルトの名無しさん
2006/06/07(水) 23:16:10それは非オブジェクト指向の経験があるからでしょ
最初からプログラミングとはこういうもんだよ、
つって覚えれば、発想の転換なんて必要ないだろ
オブジェクト指向って苦労するのは、転換が必要なときであって
最初からそれで覚えるなら、そんなに難解ではないと思うんだけど、どうよ
0310デフォルトの名無しさん
2006/06/07(水) 23:19:17オブジェクト指向むずかしいって言う人しばしば見かけるけど
個人的にはオブジェクト指向になんら違和感は覚えなかったし
むずかしいって言う人は非オブジェクト指向からの乗り換えに苦労した人ではなかろうか
というか俺はいまだにポインタとかの方が難解だと思う
0311デフォルトの名無しさん
2006/06/07(水) 23:19:27>>305だと133ページまでロクな解説は出てこないから安心しろ(w
それまでは「なんかドットの後ろにやらせたいことつけるらしい」程度の理解でいいし
なんならずっとその程度の理解でもいい
0312デフォルトの名無しさん
2006/06/07(水) 23:45:29それだよ
「なんかドットの後ろにやらせたいことつけるらしい」ってのに気づいたとき
急にRubyがわかるようになった
0313デフォルトの名無しさん
2006/06/08(木) 01:12:37それって、VBすら出来なくないか?
0314デフォルトの名無しさん
2006/06/08(木) 01:45:43読んでみたけど、Perlは糞と言うイメージがいっそう強くなったんだが。
こんなの気にして書くくらいならRuby,Python,次点でPHP(Perlよりてきとう)のほうがいいよ。
汎用性はともかく勉強目的で
気楽に実行だけならLisp系インタプリタでもいいな。
でなきゃCインタプリタとかttp://labs.cybozu.co.jp/blog/kazuho/archives/c/
0315デフォルトの名無しさん
2006/06/08(木) 03:27:06CPU的にどう動くのか理解できなかった。
0316デフォルトの名無しさん
2006/06/08(木) 04:02:470317デフォルトの名無しさん
2006/06/08(木) 12:45:15と思う。
0318デフォルトの名無しさん
2006/06/08(木) 12:45:59ポインタなくて非オブジェクト指向系の言語からの乗換えが一番大変な気がする。
0319デフォルトの名無しさん
2006/06/08(木) 12:51:430320デフォルトの名無しさん
2006/06/08(木) 13:06:19と思う。
0321320
2006/06/08(木) 13:08:37要るっちゃあ要る。けど必須ではない。くらいか。
0322デフォルトの名無しさん
2006/06/08(木) 13:24:430323デフォルトの名無しさん
2006/06/08(木) 13:39:52んなこたーない。クラスがないインスタンスベースの言語はどうなる?
>>320
それらの要不要は「オブジェクト指向」の文脈による。
ttp://d.hatena.ne.jp/sumim/20040525/p1
0324デフォルトの名無しさん
2006/06/08(木) 18:03:22Rubyユーザは、Perl から乗り換えたタイプの人が一番多い気がする。
一応 Perl はOOPLだけどさっ。
0325デフォルトの名無しさん
2006/06/08(木) 20:25:31ファイル名はfile、ディレクトリ名はdirという変数をよく使うんですが、
ファイルでもディレクトリでもどっちもとるような変数を何にするかでよく困ります。
ディレクトリもファイルの一種というのがUNIXの設計だそうですが、
一般的な間隔だとファイルとディレクトリ(フォルダ)は別のものだと思うんです。
で、「ファイルまたはディレクトリ」を表すような適当な用語を知らないんで、
もしなんかいい名称があれば教えてください。
変数名重要。
0326デフォルトの名無しさん
2006/06/08(木) 20:27:440327デフォルトの名無しさん
2006/06/08(木) 20:39:480328デフォルトの名無しさん
2006/06/08(木) 20:51:24File.open(file){|file|
file=file.read
}
とかどれも違和感ないもの
0329デフォルトの名無しさん
2006/06/08(木) 20:54:04pathか。。。path。。。path。。。
なんか、pathだとfileともdirectoryとも違う、微妙に別の概念のような気がするんですが、そんなことないですか。
>>327
それはちょっとやだなあ。file_or_dirもなんかかっこわるい。
せっかくのアドバイスに文句いって申し訳ない。
0330デフォルトの名無しさん
2006/06/08(木) 20:55:40そうなんですよね。
・ファイル名
・ファイルオブジェクト
・ファイルの中身
のどれもfileで表しそうだから、それぞれ
・filename
・f
・content
とかにしてます。
0331デフォルトの名無しさん
2006/06/08(木) 21:24:500332デフォルトの名無しさん
2006/06/08(木) 21:35:430333デフォルトの名無しさん
2006/06/08(木) 22:18:52つか、ファイルもディレクトリも取り得る変数ってどんな状況?
0334デフォルトの名無しさん
2006/06/08(木) 22:20:41はてなのRubyがリンク集になっているのに気づいたw
誰だよこれやったの。
0335デフォルトの名無しさん
2006/06/08(木) 22:25:51ディレクトリをopen()してread()しているときです。
ディレクトリの要素はファイルかもしれないし、ディレクトリかもしれない。
>>331
エントリかあ。それもいいかも。
0336304
2006/06/08(木) 22:27:40下手に本買うならネットで学習したほうがよい?
0337デフォルトの名無しさん
2006/06/08(木) 22:48:45pathだな
どうせそのあとファイルなのかディレクトリなのか調べるんだろ
そのときRubyリファレンスでは、
> File.directory?(path)
> FileTest.directory? と同じです。
ほらpathだ、と言おうとしたら
> FileTest.directory?(filename)
> filename がディレクトリの時、真を返します。
こっちはfilenameだった・・・orz
0338デフォルトの名無しさん
2006/06/08(木) 23:38:42>>305は初心者向けなんだが、>>304がずっと初心者でいるつもりならそ
う思ってもいいかも。
0339デフォルトの名無しさん
2006/06/08(木) 23:42:20いえ、尼では品切れみたいで手に入りにくそうなので、
他のよさそうなのをお尋ねしているのですが。
0340デフォルトの名無しさん
2006/06/08(木) 23:49:10(広義の)file でいいんじゃねーの?
regular fileもディレクトリもデバイスファイルその他も「ファイル」なんだし。
0341デフォルトの名無しさん
2006/06/09(金) 00:59:17漏れもfile_or_directoryがいいとおもう。
0342デフォルトの名無しさん
2006/06/09(金) 02:36:34初心者から入るならウサギ本を(高いけど)買えばこれ一冊で間違いないよ。書評みてみ。
http://www.amazon.co.jp/exec/obidos/ASIN/4894714531/
英語が読めるなら原書で買えば、最新版にも対応してるしちょっと安いぞ。あんまり変わらないけどね。
0343デフォルトの名無しさん
2006/06/09(金) 02:52:52しいて買うなら、Rubyプログラミング基礎講座、かな。新しいし。
たのしいRubyは半分以上がリファレンスみたいなものだから、一通り読んだらなくてもかまわないんだが、
PC版HTMLヘルプがすこうし使いづらいんで、紙のマニュアルが手元にあるとはじめのうちは心強い。
>プログラム始めようと思い
配列・文字列・正規表現・ファイル入出力とかある程度できないうちは、他の本よんでもなあ。
とりあえず、本買う前にrubyco(るびこ)の日記とRubyistMagazineでも読んでみそ。
0344デフォルトの名無しさん
2006/06/09(金) 07:10:46> 新しいし
そういう理由で物を勧めるな
0345デフォルトの名無しさん
2006/06/09(金) 09:46:06今それを買うのは時期的に微妙・・・
0346デフォルトの名無しさん
2006/06/09(金) 10:39:26プログラミングRuby 言語編
http://www.amazon.co.jp/gp/product/4274066428/
0347デフォルトの名無しさん
2006/06/09(金) 10:53:39プログラミングRuby 第2版 言語編
ttp://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06642-8
> 定評があるRubyの解説書を、Ruby作者の監訳により日本語に翻訳(言語編)
プログラミングRuby 第2版 ライブラリ編
ttp://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06643-6
> 定評があるRubyの解説書を、Ruby作者の監訳により日本語に翻訳(ライブラリ編)
今月発売らしいが具体的に何日かはよくわからん
あとあんま入門書っぽくない
あとウサギ本は入門書としてはちと小難しいぞ、英語ベースだし
ジュークボックスの例えにピンとくる日本人がどれだけいるやら
他のまともな文法の言語の経験がない場合は読み進めるのは辛いと思う
>>343の本は現在入手可能で初心者のほうを向いた安い本だが…なんか…なんか…つまんねえ
Rubyは手段であるという視点で学べるが利用モチベーションが上がらないという器用な本
0348デフォルトの名無しさん
2006/06/09(金) 11:39:17そうなんだよ、Rubyプログラミング基礎講座、この本つまらんよな
教科書みたい
0349デフォルトの名無しさん
2006/06/09(金) 11:47:56それをどういうふうにプログラムにすりゃいいかっていうがプログラムを書くために肝心なところであって、
そういうのはあんまり本で読んだことないんだけど俺は。
俺の場合UNIXシェルプログラミングとかの本で、入力に対してif ;then;else;fiとか
globしてwhileしてgrep|sort|awkしてとか、そんなののほうがわかりやすかったよ。
ちょうどそのときテスターで入ったとこがHP-UXで処理結果ファイルからシェルでサマリ出したりとか
してたんで目標があってモチベーションが高かったから理解できたんだと思っている。
Rubyもその昔静的にRDからHTMLに吐く日記ツールをなんとなく必要に迫られて作って使ってたから今それなりに使えてる。
つまり、自分のニーズに合わないサンプルなんかで勉強しても身に付かない
目標、目的もないでは、モチベーションが低いのでプログラミングは学習できない、と言いたい。
なので、目的があるならそれを書いたら誰かピンポイントな本を知ってるかも知れないよ。
それはRuby本じゃないかもしれないけど。
Rubyに限らず要件を満たすための手順をどうプログラムに変換するかっていう
考え方の壁だけ越えればあとはだいたい大丈夫だしほとんどの言語は使えると思うんだけどな。
0350デフォルトの名無しさん
2006/06/09(金) 12:32:32「水流をやわらげ、水はねを防ぎます」まで読んだ
0351デフォルトの名無しさん
2006/06/09(金) 15:37:14> あわせて買いたい
> 『Rubyプログラミング基礎講座』と『恋するプログラム―Rubyでつくる人工無脳』、どちらもおすすめ!
これはどうよ。
0352デフォルトの名無しさん
2006/06/09(金) 16:05:43Rubyの入門書としてはいかがなものかと。
0353デフォルトの名無しさん
2006/06/09(金) 16:09:160354デフォルトの名無しさん
2006/06/09(金) 16:22:160355デフォルトの名無しさん
2006/06/09(金) 16:47:580356デフォルトの名無しさん
2006/06/09(金) 16:55:170357デフォルトの名無しさん
2006/06/09(金) 18:09:52掃いて捨てるほど書籍のあるPerlのほうが好ましいともいえる
0358デフォルトの名無しさん
2006/06/09(金) 19:20:080359デフォルトの名無しさん
2006/06/09(金) 21:05:43初心者には「たのしいRuby」、中級者以上にはウサギ本でOK。
0360デフォルトの名無しさん
2006/06/09(金) 21:23:37なんつーかPerlのように使いこなしの「コツ」みたいなのは特になくって
技術的な知識あればマニュアルがすらすら読める感じ。
0361デフォルトの名無しさん
2006/06/09(金) 21:40:250362デフォルトの名無しさん
2006/06/09(金) 22:15:200363デフォルトの名無しさん
2006/06/09(金) 22:36:49マニュアル読めるレベルの予備知識ね。
Java/C++を使えるなら、すらすら掛けるまで3日とかからないはず。
0364デフォルトの名無しさん
2006/06/09(金) 22:51:400365デフォルトの名無しさん
2006/06/09(金) 23:18:36サンクス。
勉強になった。
0366デフォルトの名無しさん
2006/06/10(土) 04:16:54全通りの組み合わせを出力するにはどんなやり方が賢いですか?
a-b-cとc-b-aは区別しますし、a-a-aや、a-aも出力したいです。
nは最大でも10程度なので、簡単なアルゴリズムで良いと思うのですが。
0367デフォルトの名無しさん
2006/06/10(土) 08:00:59arr = ['a', 'b', 'c']
arr.each do |x|
arr.each do |y|
arr.each do |z|
puts "#{x}-#{y}-#{z}"
end
end
end
0368デフォルトの名無しさん
2006/06/10(土) 08:56:35def repeated_permutation(n)
if n == 1
each {|x| yield [x]}
else
each do |x|
repeated_permutation(n-1) do |y|
yield [x] + y
end
end
end
end
end
ary = [1,2,3,4,5]
ary.repeated_permutation(1) {|a| puts a.join("-")}
ary.repeated_permutation(2) {|a| puts a.join("-")}
ary.repeated_permutation(3) {|a| puts a.join("-")}
0369デフォルトの名無しさん
2006/06/10(土) 13:27:29うわ、さすが綺麗。
ありがとう
0370デフォルトの名無しさん
2006/06/10(土) 15:35:36あと俺はこれを参考にあるプログラムを書こうと思っているが気合いが入らない。
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/26545
0371デフォルトの名無しさん
2006/06/11(日) 04:54:22重複しない全通りの組み合わせを出力するにはどんなやり方が賢いですか?
a-b-cとc-b-aは区別します。
a-a-aや、a-aは出力しません。
1,2,3 のときは
1,2,3
1,3,2
2,1,3
2,3,1
3,1,2
3,2,1
の6通りを出力です。
0372デフォルトの名無しさん
2006/06/11(日) 06:39:19def f(arr)
arrの要素eについて繰り返す
arrからeを取り除いたものをarr1とする
arr1が空なら
print e, "¥n"
そうでなければ
print "#{e}-"
f(arr1)
end
end
end
まずは自分で考えような。
で、Rubyの宿題を出すような学校ってどこ?
0373デフォルトの名無しさん
2006/06/11(日) 18:50:51マルチ?
0374デフォルトの名無しさん
2006/06/11(日) 20:50:03今度のの方が簡単になってる
0375デフォルトの名無しさん
2006/06/11(日) 21:03:580376デフォルトの名無しさん
2006/06/11(日) 21:41:22このスレのすぐ上だった
0377デフォルトの名無しさん
2006/06/11(日) 21:49:39http://pc8.2ch.net/test/read.cgi/tech/1142573697/
これか!
0378デフォルトの名無しさん
2006/06/11(日) 22:51:360379デフォルトの名無しさん
2006/06/11(日) 23:16:270380デフォルトの名無しさん
2006/06/12(月) 16:29:11ttp://itpro.nikkeibp.co.jp/article/NEWS/20060612/240648/
0381デフォルトの名無しさん
2006/06/13(火) 13:09:57貴社のの力不足により,事例を中心とした一部のご紹介にとどまってしまいましたこ
とをお詫びいたします。
貴社じゃおかしくないか?
0382デフォルトの名無しさん
2006/06/13(火) 13:53:500383デフォルトの名無しさん
2006/06/13(火) 14:03:55そしてスレ違い
0384デフォルトの名無しさん
2006/06/13(火) 14:05:290385デフォルトの名無しさん
2006/06/13(火) 15:04:350386デフォルトの名無しさん
2006/06/13(火) 15:29:01他人事のように感じる。
0387デフォルトの名無しさん
2006/06/14(水) 20:34:52調べてみたけれど見つかりません…
ある条件を満たす最初の正の整数を求めたいんですが、
今は、
1.upto(10000000000000) {
}
と適当に大きい数を上限にしていますが、
上限を無しで、条件を満たしたらbreakにしたいのです
0388デフォルトの名無しさん
2006/06/14(水) 20:48:37end
0389デフォルトの名無しさん
2006/06/14(水) 21:18:06end
0390デフォルトの名無しさん
2006/06/14(水) 22:00:42ありがとうございます
やっぱそうなりますか
schemaか何かで
ループの範囲で 0..
って書いてたのを見たので
0391デフォルトの名無しさん
2006/06/14(水) 22:07:46i=0
loop do
break if calc(i)
i=i+1
end
と
i=0
until calc(i) do
i=i+1
end
のどっちがカッコイイかはよくわからない
0392デフォルトの名無しさん
2006/06/14(水) 22:19:15p $.
}
0393デフォルトの名無しさん
2006/06/14(水) 22:24:05ループからの脱出個所が1箇所だけ(untilのとこ)なら後者
ループからの脱出個所がbreakとかreturnとかでたくさんあるなら前者
0394デフォルトの名無しさん
2006/06/14(水) 23:29:13当社じゃないの? おまいらビジネスマナー研修すら受けてない?
0395デフォルトの名無しさん
2006/06/14(水) 23:51:18つか、書いた本人が「弊社の力不足」なんて言ったら、それこそ他人事みたいだ。
0396デフォルトの名無しさん
2006/06/15(木) 00:37:30なんとか or die
みたいなのをやるのってどうするんでしょ
0397デフォルトの名無しさん
2006/06/15(木) 00:44:06resume
ensure
end
0398デフォルトの名無しさん
2006/06/15(木) 00:47:30ああいう妙に便利な感じにはできない
できると便利だと思うんだがRubyには輸入されなかった
0399デフォルトの名無しさん
2006/06/15(木) 01:03:43なんとか or raise "ほげほげ"
0400デフォルトの名無しさん
2006/06/15(木) 01:05:36オブジェクト指向的じゃないような
0401デフォルトの名無しさん
2006/06/15(木) 01:20:00f = open('file') or raise "error"
とかけるよ。
0402デフォルトの名無しさん
2006/06/15(木) 01:27:010403デフォルトの名無しさん
2006/06/15(木) 01:56:410404デフォルトの名無しさん
2006/06/15(木) 03:13:00なら rescue 演算子で良いんじゃないの?
0405デフォルトの名無しさん
2006/06/15(木) 09:00:05なんとか rescue(STDERR.puts "エラーだよ: #{$!}")
begin
なんとか
rescue => err
STDERR.puts "エラーだよ: #{err}"
end
「なんとか」が自作でエラー時にfalseを返すものである場合
なんとか or raise
なんとか or raise('姉さん事件です')
…これは「なんとか」の中で素直に例外を発生させてくれ
dieほどお手軽便利なものはないな
事前の用意がご面倒でも範囲を指定して待ち構えて例外を捕捉するのがRuby流なんじゃないかな
0406デフォルトの名無しさん
2006/06/15(木) 10:27:34一人称が「記者」って見慣れないな。
「筆者」なら見るが。
この場合素直に「私」でいいとオモタ。
>>396
openでdieしたいだけならRubyではエラーの場合ほっとけばその場で自動的にdieすっから何もしなくていいぞ。
例外時デフォルトでor dieするRubyは先進的だなあ。
0407デフォルトの名無しさん
2006/06/15(木) 16:35:53筆者ってああいうレポートの場合にも使うの?
あと、「私」は私的な印象が強い感じがする。
0408デフォルトの名無しさん
2006/06/15(木) 20:01:310409デフォルトの名無しさん
2006/06/15(木) 20:15:160410デフォルトの名無しさん
2006/06/15(木) 20:15:510411デフォルトの名無しさん
2006/06/15(木) 20:24:58下のような一括してテキストの一部を置換するスクリプトを書きましたが
この場合グローバル変数を使う以外に方法がないのでしょうか?
グローバル変数は使ってはいけないように言われている気がするのですが
file = Dir.glob("./*.html")
file.each {|t|
File.open(t) {|f|
content = f.read
$ncontent = content.gsub(/aaa.ne.jp/, "bbb.ne.jp/")
}
File.open("./2/" + t.gsub(/.\//, ""), "w") {|f2|
f2.write($ncontent)
}
}
0412デフォルトの名無しさん
2006/06/15(木) 20:43:14ブロックの外でも利用したい変数があるならブロックが開始される前に代入して存在させておけばよい
なんとなく気持ち悪いがこれは仕方がない
file = Dir.glob("./*.html")
file.each {|t|
ncontent = '' # File.openのブロックの外で利用したいので
File.open(t) {|f|
content=f.read
ncontent = content.gsub(/aaa.ne.jp/, "bbb.ne.jp/")
}
File.open("./2/" + t.gsub(/.\//, ""), "w") {|f2|
f2.write(ncontent)
}
}
っていうかいろいろ変だな
aaa.ne.jpの正規表現はきっと望んだ形ではないだろうしf2はfでよかろう
0413デフォルトの名無しさん
2006/06/15(木) 20:44:563行目に、"ncontent = nil"とすればグローバル変数を使わずに住むし、File.openでブロックを
使わなくてもグローバル変数にする必要が無い。
ただその程度のスクリプトならグローバル変数でもかまわないと思う。
スクリプトはちゃちゃっと書いて、さっと動かすもんだし。
0414デフォルトの名無しさん
2006/06/15(木) 20:46:10わかりました、どうも
確かに気持ち悪いですね
aaa.ne.jpは書き込み時に適当に書いてしまいました
正規表現が身に染みこんでいないので適当か不適当かまで
考えてなかったです
0415411
2006/06/15(木) 20:49:28> ただその程度のスクリプトならグローバル変数でもかまわないと思う。
確かに(^_^;
でもやっぱり気になりますね
Cの宣言みたいな物だと思っておけばいいのかな
0416デフォルトの名無しさん
2006/06/15(木) 20:53:40files.each {|file|
replaced = String.new
File.open(file) {|f|
content = f.read
replaced = content.gsub(/aaa\.ne\.jp/, 'bbb.ne.jp/')
}
File.open("./2/" + file, "w") {|f|
f.write(replaced)
}
}
>>413
スコープを理解できないという理由でグローバル変数を使うのは危険で無駄
0417デフォルトの名無しさん
2006/06/15(木) 20:55:52グローバル変数にしたんじゃないの?
0418デフォルトの名無しさん
2006/06/15(木) 20:59:54書き捨てスクリプトでもグローバル変数を使う機会はまずなくなるな。
普段のスクリプトを書くときも書き捨てを書くときもたいてい同じ書き方になる。
>>417
スコープの範囲というかスコープの扱い方を知ってるかどうかだと思う。
ブロック前に変数に代入しておくとか、そういうことをたまたま知らなかっただけでは。
0419デフォルトの名無しさん
2006/06/15(木) 21:03:48いや、議論するつもり無いんで読み捨ててください。
0420デフォルトの名無しさん
2006/06/15(木) 21:04:500421419
2006/06/15(木) 21:07:02でもそれはプログラマとしての強迫観念のなせる業であって、俺自身なぜローカルにするのだと
聞かれると答えられないんだよね・・・
0422デフォルトの名無しさん
2006/06/15(木) 21:09:41スコープという安全装置のないグローバル変数を使わずにすむ
まああれだ、どんな小さなスクリプトでも必ずクラスを作ってスクリプトの最後に
Hoge.new
の一行で実行させるとかそんな細かい手前勝手ポリシーの一種だと思ってもらえれば
0423デフォルトの名無しさん
2006/06/16(金) 00:20:39更に初期化子に何でもかんでもさせるんじゃない!! という強迫観念にとらわれた漏れなんぞは
hoge = Hoge.new # initializeにはできるだけ「初期化」に関わることしか書かない。例外上がるようなのも書かない
hoge.setup # 例外が上がるかも? な「初期化」はここ
hoge.do_work # お仕事本体
とわざわざ分ける……意味ねーって? いいじゃねーかヽ(`Д´)ノ
0424デフォルトの名無しさん
2006/06/16(金) 00:50:13goto文みたいなもんだ
0425デフォルトの名無しさん
2006/06/16(金) 00:54:10あんまりいくない。
おまじないを強要させてるだけ。
そのクラスを使う側のことも考えろ。
0426デフォルトの名無しさん
2006/06/16(金) 02:28:22読み出し順間違えて、はじょうしそうだなw
0427デフォルトの名無しさん
2006/06/16(金) 02:31:08インタプリタだから、あると面白いと思うんだけど。
0428デフォルトの名無しさん
2006/06/16(金) 02:31:56そういうときはIO.read
Dir.glob("./*.html") {|t|
content = File.read(t)
content = content.gsub(/aaa\.ne\.jp/, "bbb.ne.jp/")
File.open("./2/" + t.sub(/.\//, ""), "w") {|f2|
f2.write(content)
}
}
0429デフォルトの名無しさん
2006/06/16(金) 02:33:06USB メモリにインストールすればいいだけ。
0430デフォルトの名無しさん
2006/06/16(金) 03:12:00それに対してPerlは100MB前後。その分ライブラリが充実してるとも言えますが。
0431デフォルトの名無しさん
2006/06/16(金) 07:29:21USB HDDに入れて持ち歩いてる
0432デフォルトの名無しさん
2006/06/16(金) 09:42:33俺の場合、USBメモリにrubyを放り込んだ上で
NYAOSとJmEditorを入れて簡易開発環境にしてる
NYAOSのおかげで環境変数設定の手間も要らないぜ
本当はRDEを使いたいんだけど
RDEはレジストリ使ってるみたいなので断念
0433デフォルトの名無しさん
2006/06/16(金) 10:58:14> 読み出し順間違えて、はじょうしそうだなw
はじょう?
波状?
0434デフォルトの名無しさん
2006/06/16(金) 11:06:17ttp://www.google.co.jp/search?q=%E7%A0%B4%E7%B6%BB+%E3%81%AF%E3%81%98%E3%82%87%E3%81%86
0435デフォルトの名無しさん
2006/06/16(金) 13:36:08自分がほしいものとしては、これといって思いつかないんだけど。
0436デフォルトの名無しさん
2006/06/16(金) 15:06:180437デフォルトの名無しさん
2006/06/16(金) 19:00:430438デフォルトの名無しさん
2006/06/16(金) 19:27:52←なぜか変換できない
ていうアレと同じロジックだよ。
0439デフォルトの名無しさん
2006/06/16(金) 22:53:55ごめん。破綻のことを言ってるって全然わからなかったorz
0440デフォルトの名無しさん
2006/06/16(金) 23:32:26a href="なんとか" という文字なときに処理をしたいのですが、
以下のような感じでできました。
ちょっと、冗長です。
もう少しスマートにできまないでしょうか?
if !(line =~ /<a href="http:/) and line =~ /<a / then
0441440
2006/06/16(金) 23:44:20line.gsub!(/(<a href=")([^"]*")/) { $1 + "http://ほげほげ/" + $2}
として、置換をしたいのですが、
http://が含まれているときだけ、は置換したくないのです。
上記の、ifの例だと複数置換できませんよね・・・
0442デフォルトの名無しさん
2006/06/17(土) 00:07:500443デフォルトの名無しさん
2006/06/17(土) 00:43:38line.gsub!(%r{<a href="((?!http://[^"]*?)[^"]*?)"}){
%!<a href="http://ほげほげ/#{$1}"!
}
0444440
2006/06/17(土) 01:14:03line.gsub!(/(<a href=")([^"]*")/) do
head = $1
url = $2
if $2 =~ /^http:/ then
head + url
else
head + "http://ほげほげ/" + url
end
end
>>442-443
わお。
いろいろやり方ありますね。
参考になります!
0445デフォルトの名無しさん
2006/06/17(土) 01:16:100446440
2006/06/17(土) 01:16:46<a href="nantoka">hoge</a><a href="http://kantoka">hoge</a>
とあったときにうまくいかないキガス・・・・
0447デフォルトの名無しさん
2006/06/17(土) 01:44:08HTML解析用のクラスが置いてある。
0448デフォルトの名無しさん
2006/06/17(土) 18:48:59どこかに、Rubyに関する高橋メソッドのプレゼンテーションがありました。
内容は
「Rubyはひとつの書き方を強制することはない。
行末のセミコロンや、引数の括弧をつけることも許す。
プログラマがRubyに習熟するにつれ、自然によりRubyらしい
エレガントな記述に導かれていく」
という感じのものでした。
URLを忘れてしまいましたので、ご存知の方、お教えいただけませんか?
0449デフォルトの名無しさん
2006/06/17(土) 21:04:34ttp://www.rubycolor.org/takahashi/yapc2006/
仕事場で読んじゃだめだぞ
0450デフォルトの名無しさん
2006/06/18(日) 03:17:08俺ならここまでやるかな
class Hoge
def setup!
setup
return self
end
end
Hoge.new.setup!.do_work
0451450
2006/06/18(日) 03:18:510452デフォルトの名無しさん
2006/06/18(日) 06:12:290453デフォルトの名無しさん
2006/06/18(日) 11:18:490454デフォルトの名無しさん
2006/06/18(日) 14:12:52initializeで例外発生したときにそのインスタンスいぢって大丈夫なんだっけ?
(よくあるでしょ、初期化子が完了しないとインスタンスに触れただけであぼーんな言語)
0455デフォルトの名無しさん
2006/06/18(日) 14:21:38initialize で例外発生したらインスタンス取得できないと思ふ。
0456デフォルトの名無しさん
2006/06/18(日) 14:23:42initializeはたんなる初期化のメソッドにすぎないから、initalizeで失敗したオブジェクトは
「initialize()が完了しなかったオブジェクト」以外の何者でもない。
0457デフォルトの名無しさん
2006/06/18(日) 14:45:58どんな定義の場合OKなんでしょうか?
0458455
2006/06/18(日) 15:09:21initialize で例外発生したときのそのインスタンスってどうやって取得するの?
0459デフォルトの名無しさん
2006/06/18(日) 15:18:21def initialize
$a = self
raise
end
>>456は知ったか
0461デフォルトの名無しさん
2006/06/18(日) 15:43:13てか、その前に、
>initializeで例外発生したときにそのインスタンスいぢって大丈夫なんだっけ?
initilalizeで例外発生したときに、そのインスタンスを弄るというのは
どんな状況か答えろ
0464デフォルトの名無しさん
2006/06/18(日) 16:28:08スタンス間違ってそうな気もする
0465デフォルトの名無しさん
2006/06/18(日) 16:59:33http = Net::HTTP::start(host, port)
p Time.now.to_f
CGIから↑のメソッドを呼び出すと毎回約20秒かかっているようです
普通のrubyスクリプトだと1秒もかかりません
原因分かる人いませんか?
0466デフォルトの名無しさん
2006/06/18(日) 17:11:16httpdは?
CGIはマルチプロセス?モジュール?
0467デフォルトの名無しさん
2006/06/18(日) 17:18:33httpd: Apache 1.3
CGI: マルチプロセス
です
0468側近中の側近 ◆0351148456
2006/06/18(日) 17:47:270469デフォルトの名無しさん
2006/06/18(日) 19:10:580471デフォルトの名無しさん
2006/06/18(日) 21:15:29Emerald とか作ろうかと冗談半分で言ってたことがあったような?
0472デフォルトの名無しさん
2006/06/18(日) 21:39:580474454
2006/06/19(月) 00:28:12皆さん申し訳ない。初期化中に例外投げるなってどっかで習い覚えた気がしてたんだが
改めて調べたらC++のバッドプラクティスの話だったようで。
スレ汚し失礼しますた。
0475デフォルトの名無しさん
2006/06/19(月) 00:31:20そんなことどこに書いてた?
デストラクタの間違いじゃないか?
0476デフォルトの名無しさん
2006/06/19(月) 15:11:41ttp://www.cmagazine.jp/src/kinjite/cpp/exception.html
0477デフォルトの名無しさん
2006/06/19(月) 15:48:10そのページの内容は糞。
しかも、デストラクタ内での例外に関する説明は嘘八百。
0478デフォルトの名無しさん
2006/06/19(月) 23:19:55一発で思い通りに動作した覚えがない
ってゆーか、このへんのリファレンスマニュアルもうちょっとだけわかりやすく書いてくれ
何度読んでもピンとこないぞ
0479デフォルトの名無しさん
2006/06/19(月) 23:33:59分かる人カモン
0480デフォルトの名無しさん
2006/06/19(月) 23:34:08hash1 << hash2 のようなもの
hash1をhash2の内容で*更新*(hash1は変わる)
hash1.update(hash2)
hash1 + hash2 のようなもの
hash1とhash2を*混ぜる*だけ(hash1はそのまま)
hash1.dup.update(hash2)
hash1.merge(hash2)
字面は混ぜるだけのはずなのにhash1が書き換わる危険なメソッドがmerge!
つまりupdateと同じ動作
こんな理解でどうだ
っていうかハッシュ同士の演算って定義されてないのな
なんで?
0481デフォルトの名無しさん
2006/06/20(火) 00:00:21読んだが、糞というほど間違っては居ない。お前が糞
0482デフォルトの名無しさん
2006/06/20(火) 00:02:58あっそ。じゃ、あのとおりにやれば?
0483デフォルトの名無しさん
2006/06/20(火) 00:03:230484デフォルトの名無しさん
2006/06/20(火) 00:19:360485デフォルトの名無しさん
2006/06/20(火) 01:34:01まてまて、そういう切捨て方はよくない。
>>481
あの考えでは、標準C++ライブラリやSTLはバッドノウハウだらけなんだけど、それはどう思う?
それから、あの考えだと、コードがポインタだらけになりかねないんだけど、そうれはどう思う?
Effective C++は読んだことある?(読んでるからえらいって言ってるわけじゃないよ)
0486デフォルトの名無しさん
2006/06/20(火) 01:46:520487デフォルトの名無しさん
2006/06/20(火) 05:04:200488デフォルトの名無しさん
2006/06/20(火) 07:53:100489デフォルトの名無しさん
2006/06/20(火) 08:19:092版、3版共に読んでるが何か?
Cマガジンの記事はコンストラクタで絶対に例外を投げるなと言ってるわけではないだろ。
投げるならちゃんと後始末をしろ、しないなら投げるな。と書いてある。
事実、チームで開発する場合、全ての人がそういう精神を持っていないことは明白。
何が間違っている?
デストラクタは例外投げたら完全に死ぬってのが抜けてるだけだろ。
EffectiveC++の表現だけを神聖視して、
ちょっとでも違う表現を何でもかんでも糞扱いするのは低脳の証。
0490デフォルトの名無しさん
2006/06/20(火) 09:24:200491デフォルトの名無しさん
2006/06/20(火) 10:08:07デストラクタで例外出していいの?
コンストラクタで例外出していいの?
コンストラクタで自分自身をグローバル変数に保存していいの?
0492デフォルトの名無しさん
2006/06/20(火) 11:27:32しかし、あの記事を読んで、「コンストラクタで例外をスローするのはバッドノウハウ」と
思考停止してしまうのはいかがなものか。
0493デフォルトの名無しさん
2006/06/20(火) 11:40:31コンストラクタでは初期化は行わず、initializeメソッドを常に用意し、呼び忘れを
防ぐために必ずfactoryメソッドを用意する。
これのどこが「賢い」やり方なんだ?これこそが、無駄にコードを複雑にする
バッドノウハウだろうが。
あの記事の代わりに、Effective C++にあるような、例外が起こる可能性がある
オブジェクトを、安全にコンストラクタ内で初期化する方法を載せといたほうが
よっぽどまし。
デストラクタの件は、「例外は絶対に投げちゃいけない」だ。
それ以外の説明は糞。
0494デフォルトの名無しさん
2006/06/20(火) 11:42:50例外処理を使えない、使わないプログラマとで働くのは嫌なものだが、なあに、かえって免疫力がつく。
0495デフォルトの名無しさん
2006/06/20(火) 11:43:170496デフォルトの名無しさん
2006/06/20(火) 12:20:32つーのは変だわな。
0497デフォルトの名無しさん
2006/06/20(火) 18:00:41newがこける状況なら回復しても悲惨だから許容する。
致命的な場合だけは投げるというポリシーで良い。
0498デフォルトの名無しさん
2006/06/21(水) 00:59:08分かる人koikoi
0499デフォルトの名無しさん
2006/06/21(水) 08:52:57>CGIから↑のメソッドを呼び出す
どんな風に呼び出すん?
#!/usr/local/bin/ruby
require 'net/http'
def get_head_code(host,port)
stime = Time.new.to_f
http = Net::HTTP::start('www.ruby-lang.org',80)
head = http.head('/')
ftime = Time.new.to_f
[stime.to_s, ftime.to_s, head.code,host].join("\n")
end
puts "Content-type: text/plain\n"
puts get_head_code('www.google.co.jp',80)
exit
WindowsXP Apache/2.0.58 ASR1.8.4.2 ADSL1.5M だけど1秒もかからんなあ。
#=>
1150847371.265
1150847371.765
302
www.google.co.jp
0500デフォルトの名無しさん
2006/06/21(水) 08:55:47○ http = Net::HTTP::start(host,port)
0501デフォルトの名無しさん
2006/06/21(水) 12:35:33>>477,481,482,485,487,489,492,493あたりが低脳な連中だな。
つーか>>491の回答が気になるので、エロい人、教えておくれ。
0502デフォルトの名無しさん
2006/06/21(水) 12:55:30何を持ってOKというか分からんが、
可能かどうかで判断するとすれば、
×デストラクタで例外出していいの?
○コンストラクタで例外出していいの?
○コンストラクタで自分自身をグローバル変数に保存していいの?
になると思われ。
グローバル変数に保存は使い道が思い浮かばないがね。
0503デフォルトの名無しさん
2006/06/21(水) 13:07:000504デフォルトの名無しさん
2006/06/21(水) 13:33:56そもそもファイナライザはあってもデストラクタはないもんな。
>>501
ファイナライザで例外出すのは可能なんだけど
>ObjectSpace.define_finalizer | proc の呼び出しで発生した大域脱出(exitや例外)は無視されます。
Rubyではオブジェクトを明示的に破棄しないし、いつGCされるかわからないし、無意味。
グローバル変数に保存するのは、自分でしなくてもどっかですればいいだけだから、悪手だと思う。
コンストラクタで例外は必要なだけ出していいと思うよ。
0505デフォルトの名無しさん
2006/06/21(水) 13:51:05もともtRubyの話から発展した話題だから、そう目くじらたてんでもいいだろ。
現に君は>>491の内容に対して判断がつかなかったんだろう?
0506デフォルトの名無しさん
2006/06/21(水) 13:53:31言語じゃないんで、他のOOPLと同じように判断すればいいってことだよ。
0507デフォルトの名無しさん
2006/06/21(水) 13:54:190508デフォルトの名無しさん
2006/06/21(水) 14:00:31Rubyでもそうだと思い込んだ奴。
0509デフォルトの名無しさん
2006/06/21(水) 14:23:520510デフォルトの名無しさん
2006/06/21(水) 14:45:310511デフォルトの名無しさん
2006/06/21(水) 14:52:440512デフォルトの名無しさん
2006/06/21(水) 14:59:420513デフォルトの名無しさん
2006/06/21(水) 18:01:460514デフォルトの名無しさん
2006/06/21(水) 19:14:240515デフォルトの名無しさん
2006/06/21(水) 19:45:440516デフォルトの名無しさん
2006/06/21(水) 19:49:480517デフォルトの名無しさん
2006/06/21(水) 19:54:110518デフォルトの名無しさん
2006/06/21(水) 19:57:220519デフォルトの名無しさん
2006/06/21(水) 19:57:55実用的なプログラミング時に何のために、どんなときに使ったりする物なのでしょうか?
0520デフォルトの名無しさん
2006/06/21(水) 20:02:010521デフォルトの名無しさん
2006/06/21(水) 20:04:30そうでなければ構造体を定義したり、それに関連する関数を作ったりとか、
クラス定義に類似した作業が結局必要になる。
0522デフォルトの名無しさん
2006/06/21(水) 20:13:16「関連する関数とかをひとつにまとめておく入れ物」ぐらいに考えときゃいい
その点ではモジュールも似たようなもんだが
クラスの場合は「その型のコピー(インスタンス)をたくさんつくることができる」
そして「各コピーごとに変数とかを保持することができる」
というのがポイントだ
他にも継承とかいろいろあるけど
まあ最初のうちはこんなもんだろ
0523デフォルトの名無しさん
2006/06/21(水) 21:04:48あってるか知らないけどこの理解で特に困ったことはない
プログラム自体もあまり知らないなら
タイヤキ(インスタンス)とタイヤキ作るときの型(クラス)
という理解で十分だと思う
0524デフォルトの名無しさん
2006/06/21(水) 21:21:37オブジェクト指向ってよりGCがあるかないかの問題だろう
0525デフォルトの名無しさん
2006/06/21(水) 21:24:430526デフォルトの名無しさん
2006/06/21(水) 21:28:38C++でもbad_allocが飛ぶような状況って
ミドルウェア側の致命的な問題やヒープの破壊など、
どうせ検知してもエラー吐いて落ちることしかできないありさまだよ。
0527デフォルトの名無しさん
2006/06/21(水) 23:22:57require 'net/http'
print "Content-Type: text/html\n\n"
p Time.now.to_f
http = Net::HTTP::start('www.2ch.net', 80)
p Time.now.to_f
res = http.get('/')
p res.code
ブラウザからCGIとして実行すると
1150899495.98265 1150899516.2025 "200"
1150899563.27309 1150899583.4663 "200"
1150899615.03507 1150899635.2512 "200"
1150899647.47004 1150899667.6945 "200"
こんな感じでだいたい20秒かかる
なんで?
みやびちゃんのおっぱいが小さすぎてすいません
0528527
2006/06/21(水) 23:31:51IPだと1秒かからん
0529デフォルトの名無しさん
2006/06/21(水) 23:32:110530デフォルトの名無しさん
2006/06/22(木) 00:08:44パケット覗いてみれば 名前解決かはっきりするんじゃね?
はっきりしても直せるかは知らんが。
0531デフォルトの名無しさん
2006/06/22(木) 00:14:28>みやびちゃんのおっぱいが小さすぎてすいません
これは何だ
0532デフォルトの名無しさん
2006/06/22(木) 03:02:010533デフォルトの名無しさん
2006/06/22(木) 14:30:30で、みやびちゃんって何?
0534デフォルトの名無しさん
2006/06/22(木) 14:55:25rubyスクリプトから hoge.exe の標準入力に文字列データを渡して
hoge.exe の標準出力からの処理結果を再び rubyスクリプトで受け取りたいのですが
上手いやりかたはありますか?
ret = `hoge.exe`
だとデータを渡せないし、
io = IO.popen('hoge.exe', 'w')
io << data
だとデータを受け取れない・・・
0535デフォルトの名無しさん
2006/06/22(木) 15:07:21と言いたいところなんだが、.exeとか言ってるからWindowsなんだろうなあ。
微妙。
ruby aaa.rb | hoge | ruby bbb.rb
とかでいいんじゃん?
0536デフォルトの名無しさん
2006/06/22(木) 15:10:05io << data
io.close_write
nanika = io.read
io.close_read
0537534
2006/06/22(木) 15:20:11聞いてみて良かったっす(T_T)
ありがとうございます!
0538デフォルトの名無しさん
2006/06/22(木) 15:22:33今さっきputsしたあとgetsで刺さるので悩んでたよ。
サンクス。
0539デフォルトの名無しさん
2006/06/22(木) 16:19:45ヘルプにのってるやん
winhelpいれなさい
0540デフォルトの名無しさん
2006/06/22(木) 22:04:03こういう技を覚えたのですが
ruby -e 'i = 1; j = 2; print "%02d %02d" % i, j'
だとエラーが出ます。変数2つの時はどう書くんでしょ?
0541デフォルトの名無しさん
2006/06/22(木) 22:08:190542デフォルトの名無しさん
2006/06/22(木) 22:11:08ありがと
0543デフォルトの名無しさん
2006/06/22(木) 22:12:200544デフォルトの名無しさん
2006/06/22(木) 22:25:16あー、( )をつけるのが面倒でprintfを使うのをさけようとしたんですが
rubyでは省略できるんですか
0545デフォルトの名無しさん
2006/06/22(木) 22:46:12[ ] や { } がそばにあって見にくい場合は省略する人も多い
0546デフォルトの名無しさん
2006/06/22(木) 22:50:18def func arg1, arg2
p arg1, arg2
end
なんつーような書き方してた。
0547デフォルトの名無しさん
2006/06/23(金) 00:06:240548デフォルトの名無しさん
2006/06/23(金) 00:13:46包括関係がわかりにくいから基本的には省略しないのが「普通」な気がする
Rubyのパーサ(だっけ?)はメソッドの引数の数を知ってるから
明示的なカッコがなくてもひと目でメソッドと引数部分を区切れるけど
人間の目は引数をいちいち考えて
「これはこのメソッドに渡ってこれも渡って」
とか考えないといけなくて却って不便だと思う
0549デフォルトの名無しさん
2006/06/23(金) 00:43:570550デフォルトの名無しさん
2006/06/23(金) 01:22:240551デフォルトの名無しさん
2006/06/23(金) 03:45:42双方向バイブ
に見えた orz
0552デフォルトの名無しさん
2006/06/23(金) 06:40:17ttp://jp.rubyist.net/magazine/?0014-Hotlinks#f29
> *29 括弧 : collect/map 対立以外にも、Ruby コミュニティには括弧を省略す
> べきでない派と省略できるところでは省略すべし派の対立がある。須藤さん
> は省略しない派だが、ささだは省略する派。省略する派をささだ以外見たこ
> とがないのだけれど。ちなみに、優先順位の影響などがあるために、完全に
> 括弧を排除した Ruby スクリプトを書くというのは結構難しい。
----
>>548
> Rubyのパーサ(だっけ?)はメソッドの引数の数を知ってるから
> 明示的なカッコがなくてもひと目でメソッドと引数部分を区切れるけど
そんなことはやってない
0553デフォルトの名無しさん
2006/06/23(金) 13:46:150554デフォルトの名無しさん
2006/06/23(金) 13:50:46普段の自分と違うコーディングスタイルをとるもんなんじゃないの?
0555デフォルトの名無しさん
2006/06/23(金) 14:50:540556デフォルトの名無しさん
2006/06/23(金) 15:01:360557デフォルトの名無しさん
2006/06/23(金) 16:55:17ちょ、おまwww
ていうか、>>552で自分一人と認識してるから>>547とは合わないだろwww
0558デフォルトの名無しさん
2006/06/23(金) 17:23:59として、引数にhtml\*.htmlを与えると、最初の一つのファイルしか表示されません。
ディレクトリ内のすべての.htmlを表示したいのですが、何まずいのでしょうか?
mswin32 rubyです。
0559デフォルトの名無しさん
2006/06/23(金) 17:34:08cmd.exeかなにかわからんが、そのコマンドラインをrubyに渡す前に展開してるのが原因。
展開されないようにシングルクォーテーションで囲んで渡せ。
なお、mswin32版は良く分からんが、パス区切り文字は/を使ったほうが良い。'html/*.html'を渡せ。
0560デフォルトの名無しさん
2006/06/23(金) 17:42:52その通りでした
くくった所、期待通りの挙動
/も参考にさせていただきます。
0561デフォルトの名無しさん
2006/06/23(金) 20:42:56標準入力からデータを与えて
標準出力 (実行結果) を得る
方法が分かりません。
入力を与えて出力を捨てるなら open('|command', 'w') {|f| ... }
入力を与えずに出力を得るだけなら `command`
で済むのですが、両方を同時に実現できるのでしょうか?
0562デフォルトの名無しさん
2006/06/23(金) 20:47:390563デフォルトの名無しさん
2006/06/23(金) 21:06:500565デフォルトの名無しさん
2006/06/23(金) 23:14:50組み合わせた配列を求めるにはどのようにすればいいのでしょうか。
個数(n)と配列(a)が入力され、r==a.sizeとすると、出力は、nCr個の配列がでる感じです。
出力の順序や、計算時間、オブジェクトがコピーされるのかなどはいまのところ気にしていません。
例をあげると以下のようになります。
p kumiawase(2,[1,2,3,4]).map{|x| x.sort}.sort
=> [[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]]
4C2=(4*3)/(2*1)=6 6個の配列が出る。
p kumiawase(3,["a","b","c","d"]).map{|x| x.sort}.sort
=> [["a", "b", "c"], ["a", "b", "d"], ["a", "c", "d"], ["b", "c", "d"]]
4C3=4C1=4 4個の配列が出る。
よろしくお願いします。
0566デフォルトの名無しさん
2006/06/23(金) 23:29:460567565
2006/06/23(金) 23:58:41宿題ではないです。独学でrubyを勉強しています。
再帰をつかっていろいろやっているのですが、うまくいきません。
↓n=1以外で変な結果が出る失敗例
def kumiawase(n,a)
kumiawase2(n,a).map{|x| x.sort}.sort.uniq
end
def kumiawase2(n,a)
n==1 and return a.map{|x| [x]}
r=[]
a.size.times{|i|
b=a.dup
x=b.delete_at(i)
r<<kumiawase2(n-1,b)
}
r
end
0568デフォルトの名無しさん
2006/06/24(土) 01:01:52RUBYの宿題教えてください。
http://pc8.2ch.net/test/read.cgi/tech/1106572657/l50
0569デフォルトの名無しさん
2006/06/24(土) 01:10:15yield を使ってブロックで処理するのと、yieldを使わないでふつーの再帰で処理するの
class Array
def combination(r)
if r == 0
yield []
elsif r == size
yield self
else
x = (ary = dup).shift
ary.combination(r - 1){|y| yield [x] + y } # self[0] を含む
ary.combination(r){|y| yield y } # self[0] を含まない
end
end
end
[1, 2, 3].combination(2) {|c| p c }
def kimiawase(n, a)
case n
when 0
return [[]]
when a.size
return [a]
else
x = (ary = a.dup).shift
return kimiawase(n-1, ary).map{|y| [x] + y} + kimiawase(n, ary)
end
end
p kimiawase(2, [1, 2, 3])
0570デフォルトの名無しさん
2006/06/24(土) 01:52:22おお、>>565じゃないけど勉強になりますた。
0571デフォルトの名無しさん
2006/06/25(日) 13:16:16http://www3.nikkei.co.jp/nkave/data/index.cfm
postを受け付けてもらえません。
下の場合、99.36という値を得たいのですが
http://www3.nikkei.co.jp/nkave/data/index.cfm
にふつうにアクセスした場合の、15,124.04が返ってきてしまいます。
どう修正すればいいのでしょうか?
require 'net/http'
response = nil
Net::HTTP.start('www3.nikkei.co.jp') {|http|
response = http.post('/nkave/data/index.cfm', 'yyyy=1950&mm=1&dd=11')
print response.body.scan(/<td><span class="onedown"><b>(.*?)<\/b><\/span><\/td>\s*<\/tr>/m)
}
0572デフォルトの名無しさん
2006/06/25(日) 13:25:300574デフォルトの名無しさん
2006/06/25(日) 13:59:32とりあえず
p response
で
#<Net::HTTPOK 200 readbody=true>が返ってきてることを確認して
p response.body
で目的のHTMLファイルが送られてきてることを確認したあと
ローカルにそのファイルを保存しておもむろにirbを起動し
file=File.read('index.htm')
としたあと
p file.scan(/<td><span class="onedown"><b>(.*?)<\/b><\/span><\/td>\s*<\/tr>/m)
して正規表現に誤りがないか確かめる
かなあ
0575571
2006/06/25(日) 14:13:13http://www.garbagecollect.jp/ruby/mswin32/ja/download/stable.html
ここの最新版ruby 1.8.4 (2006-06-12) に問題があったようです。
ruby 1.8.4 (2006-04-14)でもだめです。
ruby 1.9.0 (2006-04-15)にしてみたら99.36が返ってきました。
これバグですよね
0576572
2006/06/25(日) 14:20:38ruby 1.8.1 (2003-12-25) [i386-cygwin]
0577574
2006/06/25(日) 14:47:31ruby 1.8.2 (2005-04-11) [i386-linux]
ぶっちゃけそんなのはどうでもよくて、データがどのように扱われていったか手と目で確かめろって
不具合が出る部分があるならそこを自作スクリプト上で極力絞り込め
バグかどうか考えるのはその部分が判明してからだ
0578デフォルトの名無しさん
2006/06/25(日) 15:02:38しかしあんな短いスクリプトでミスが起きるはずがないだろ
0579デフォルトの名無しさん
2006/06/25(日) 15:19:29ruby 1.8.4 (2005-12-24) [i386-mswin32]
0580デフォルトの名無しさん
2006/06/25(日) 15:20:09>>575で動かすと何らかの理由で
Content-Type: application/x-www-form-urlencoded
をサーバに送ってないな。
require 'net/http'
response = nil
Net::HTTP.start('www3.nikkei.co.jp') {|http|
header={'Content-Type'=>'application/x-www-form-urlencoded'}
response = http.post('/nkave/data/index.cfm', 'yyyy=1950&mm=1&dd=11',header)
print response.body.scan(/<td><span class="onedown"><b>(.*?)<\/b><\/span><\/td>\s*<\/tr>/m)
}
これなら99.36が表示されるはず
添付ライブラリのバグだと思う
0581デフォルトの名無しさん
2006/06/25(日) 21:47:35exerbなんかで、exeは作れるみたいですが・・・
0582デフォルトの名無しさん
2006/06/25(日) 21:54:46DLLは作れない。
COMなら作れる。
0583デフォルトの名無しさん
2006/06/25(日) 22:41:05誰もその仕組みのものを作ろうとしないだけで。
0584デフォルトの名無しさん
2006/06/25(日) 23:31:160585デフォルトの名無しさん
2006/06/26(月) 00:01:53ちょっと違うんじゃないの?
ってシロモノだからなぁ
0586デフォルトの名無しさん
2006/06/26(月) 04:49:290587デフォルトの名無しさん
2006/06/27(火) 11:10:17$ ls /tmp/
sqlite.rb test.db
$ cat sqlite.rb
require 'rubygems'
require_gem 'sqlite-ruby'
# db = SQLite::Database.new('test.db') # 1
# db = SQLite::Database.new('./test.db') # 2
# db = SQLite::Database.new('../tmp/test.db') # 3
# db = SQLite::Database.new('/tmp/test.db') # 4
上記のスクリプトで、# 4の場合のみエラーが出てしまいます。
$ ruby sqlite.rb
/usr/lib/ruby/gems/1.8/gems/sqlite-ruby-2.2.3/lib/sqlite/database.rb:117:in `open': unable to open database: /tmp/test.db (SQLite::Exceptions::DatabaseException)
from /usr/lib/ruby/gems/1.8/gems/sqlite-ruby-2.2.3/lib/sqlite/database.rb:117:in `initialize'
from sqlite.rb:7
1.sqlite-rubyで絶対パスを扱うことはできませんか?
2.バージョンによっては可能なのでしょうか?
Railsのconfig/database.ymlで相対パスで書いていても、
勝手に絶対パスに直されてしまうのでエラーが出てしまって困っています。
@@環境
ruby 1.8.4 (2005-12-24) [i386-cygwin]
sqlite-ruby 2.2.3
sqlite 2.8.17
0588デフォルトの名無しさん
2006/06/27(火) 15:58:34ls -ld /tmp してみよう。
0589デフォルトの名無しさん
2006/06/27(火) 17:42:21自作クラスに dup 書くときによく感じるんだけど、インスタンス変数を
コピーするためだけに、attr_writerを指定するのって良くないですよね。
0590デフォルトの名無しさん
2006/06/27(火) 17:59:33どうも勘違いしてるみたいだが
元々Rubyのインスタンス変数には可視性なんてない。
言うなれば全てprivateみたいなもん。
attr_系がやってる事はpublicな変数を定義してるのではなくて
【インスタンス変数にアクセスする為のpublicメソッドを定義】している。
具体的に言うと
attr_accessor :name
は
def name
return @name
end
def name=(val)
@name = val
end
と同じ。だからこの場合なら protected :name
:name= とやれば多分望みに近い動作になるはず
0591590
2006/06/27(火) 18:02:010592589
2006/06/27(火) 18:55:29了解です。
attr_* はただのシンタクスシュガーで変数には
直にアクセスは出来ない仕様になってるんですね。
教えていただいたように、protected なメソッドで
アクセスすることにします。
0593デフォルトの名無しさん
2006/06/27(火) 19:19:520594589
2006/06/27(火) 23:12:20とりあえず現状では十分な感じですけど。
言語によってprotectedの動作が異なるって言うのは
なんとなく知っていたけれど、それぞれの細かい違いは
知らないし、実用的なソフトを作る上でどれくらいの影響を
もたらすものか分かんないです。OOPは奥が深い(気がする)。
その内じっくり勉強しようと思ってるけど、なかなかその内がやって来ない。
0595デフォルトの名無しさん
2006/06/27(火) 23:51:32> /tmpがない、または書き込み権限がない、というオチ?
> ls -ld /tmp してみよう。
1,2,3,4は全て同じパスを見ているのですが・・・?
0596デフォルトの名無しさん
2006/06/28(水) 00:51:36なんでsqlite3を使わないのかと小一(ry
0597デフォルトの名無しさん
2006/06/28(水) 00:59:57みてみたけど sqlite-ruby はあんま大したことしてなくて、けっきょく sqlite_open を呼んでるだけっぽいな。
コマンドラインで
sqlite /tmp/test.db
とかはできてる?
あと、なぜいま sqlite2 ?
0598デフォルトの名無しさん
2006/06/28(水) 01:01:00あぁ、3だとできるんですね。
どうもありがとうございました。
0599デフォルトの名無しさん
2006/06/28(水) 01:52:03sqliteはrubyのコンパイル時からやり直しでもしないと、rubyに組み込めないし。
まずはmysqlとかrorが前提にしてる環境で作ったほうがいいよ。
応用は動作確認してからじゃないと、何が悪いか切り分け出来なくて、解決策が見つけにくくなる。
0600デフォルトの名無しさん
2006/06/28(水) 01:56:58> まずはmysqlとかrorが前提にしてる環境で作ったほうがいいよ。
> 応用は動作確認してからじゃないと、何が悪いか切り分け出来なくて、解決策が見つけにくくなる。
mysqlでは動きますよ?どこをどう曲解したらそうなるんでしょうか?
0601デフォルトの名無しさん
2006/06/28(水) 09:29:17バージョンも最新みたいだし。
tracとかMLとかないのかね。
>>595
同じパスを参照してるってどうやって確かめたの?
>>587で1〜3の場合ls -l /tmp/test.dbするとファイルがあるってこと?
0602デフォルトの名無しさん
2006/06/29(木) 12:01:35これで公開している、DocumentRoot以下全てにユーザ認証をかけたいのですが、
何かよい方法はあるでしょうか。
リファレンスマニュアルのWEBrick::HTTPAuth::BasicAuthを参考にしながら
mount_proc('/')とするとres.bodyで書いたものしか表示できず、公開部分が表示できなく
なってしまいます。
webrickはリファレンスマニュアルのWEBrick::Config::HTTPと同じように
書いています。
0603デフォルトの名無しさん
2006/06/29(木) 16:52:10require "webrick"
callback = Proc.new{|req, res|
WEBrick::HTTPAuth.basic_auth(req, res, "WEBrick's realm") {|user, pass|
user == 'webrick' && pass == 'supersecretpassword'
}
}
httpd = WEBrick::HTTPServer.new(
:DocumentRoot => File::dirname(__FILE__),
:RequestCallback => callback,
:Port => 10080
)
trap(:INT){ httpd.shutdown }
httpd.start
0604デフォルトの名無しさん
2006/06/29(木) 17:03:29と思っているのは俺だけだってのはもうとっくにわかってるからほっといてくれよな。
0605602
2006/06/29(木) 18:38:48ありがとうございます。
そのままコピペして実行してみたのですが、なぜか認証なしで
実行ディレクトリが表示されてしまいました。
RequestCallbackがなぜか動いていないような感じがします…
0606デフォルトの名無しさん
2006/06/29(木) 19:52:00これから始めようという人にもオススメできますか?
仕様の変更とかで動かないと、この本で勉強してもおもしろくないだろうし・・・・
0607デフォルトの名無しさん
2006/06/29(木) 20:02:20オススメできない。なぜなら、来月には第二版の翻訳が出るから。
もうちょっとだけ待て。
http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06642-8
http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=4-274-06643-6
0608デフォルトの名無しさん
2006/06/29(木) 20:04:490609デフォルトの名無しさん
2006/06/29(木) 20:24:32英語版1版だったら無料で読める
0610デフォルトの名無しさん
2006/06/29(木) 22:13:560611デフォルトの名無しさん
2006/06/30(金) 02:36:09:RequestCallbackを:RequestHandlerに変えたらどうなる?
その前にRubyのバージョンいくつ?
0612602
2006/06/30(金) 08:57:40ありがとうございます。
求めている動作がおこなえました。
Rubyのバージョンは、
WEBrick/1.3.1 (Ruby/1.8.1/2003-12-25)
となっています。
0613デフォルトの名無しさん
2006/06/30(金) 09:30:020614デフォルトの名無しさん
2006/06/30(金) 15:11:59でも今度出るのは2冊組で高くつくし、普通の用途なら旧版でも十分だから
今のうちに買っておくのも悪くない。内容は既刊の中で未だトップレベルだ。
0616606
2006/07/01(土) 06:20:44これからもよろしくです。
0617デフォルトの名無しさん
2006/07/03(月) 15:45:04ruby1.8での日本語変換はどうすればできるのですか?
初歩的な質問ですいません。
0618デフォルトの名無しさん
2006/07/03(月) 16:39:22詳しく
0619デフォルトの名無しさん
2006/07/03(月) 16:43:39しかし改行がどうすればいいのかわかりません。
0620デフォルトの名無しさん
2006/07/03(月) 16:53:400621デフォルトの名無しさん
2006/07/03(月) 17:08:20String#gsub!("\r\rn", "\n") みたいので言いんじゃね?
0622デフォルトの名無しさん
2006/07/04(火) 00:59:37>>619 がサッパリな質問なのは同意するが、その回答もサッパリだな。
0623デフォルトの名無しさん
2006/07/04(火) 01:31:32さっぱり
0624デフォルトの名無しさん
2006/07/04(火) 08:53:45単純にsqliteの問題。sqliteスレにでも逝けば?
0625デフォルトの名無しさん
2006/07/04(火) 17:59:16Ruby が意外に健闘してるのか、Python が意外に普及してないのか、その両方なのか……
0626デフォルトの名無しさん
2006/07/04(火) 19:23:37#!/usr/local/bin/ruby
open(file,"r"){|f|
while line = f.gets
if /pattern/ =~ line
print line
end
end
}
このようなコードでeuc_jpコードのファイルから日本語で正規表現を行おうとしたのですが、
日本語がshift-jisに認識され文字化けが起きてうまくいきません。どうすれば正しく認識して
くれるのでしょうか。環境はWindowsXP上のCygwinでRubyは1.8.4,エディタはmeadowを使ってます。
0627デフォルトの名無しさん
2006/07/04(火) 19:39:27つまり、Ruby はちゃんと処理してるんじゃない?
require "kconv"
して
print line.tosjis
してみたり、
require "nkf"
して NKF#guess で文字コードをちゃんと見てみたらどうよ?
あと、一行目と2行目を足して
#!/usr/local/bin/ruby -Ke
とするのが普通。
それじゃあ、2行目は、ただコメントアウトされてるんじゃないか?
0628デフォルトの名無しさん
2006/07/04(火) 19:55:01以下の ck というターミナルなら複数のコードに対応していて、問題なさそうなことを確認した。
Cygwin で libpng12 を入れないと起動しなかったけど。
http://www.geocities.jp/cygwin_ck/
0629デフォルトの名無しさん
2006/07/04(火) 20:35:18返信ありがとうございます、それが原因のようでした。リンク先のやつ早速
導入させていただきます。
0630tojis はトジス
2006/07/05(水) 00:36:34>print line.tosjis
ruby では、to_i, to_s, to_f があるから、
to_sjis, to_utf8 とかになるのが普通だと、見るたびに思う。
もう、何度も話題にしているような気がするけど・・・
0631デフォルトの名無しさん
2006/07/05(水) 00:40:13ほら、これでevenだ。普通じゃなくなったよ。
0632デフォルトの名無しさん
2006/07/05(水) 00:56:21> ほら、これでevenだ。
不用意な言葉使いを皮肉ろうとするあまりに、
根拠なしに文句言うだけのノイズになっちゃう例?
0633デフォルトの名無しさん
2006/07/05(水) 00:58:27エンコードの数だけメソッドを用意するんかい。
といって-Keだとかkconvだとか$kcodeみたいなK(たぶんKanjiのK)なんちゃらっ
てのも前時代的だよねえ。
PerlIOはスマートな解決法だと思う。
0634デフォルトの名無しさん
2006/07/05(水) 01:02:58tojisというメソッドも違和感なし。
toiとかtosなら違和感ある。
0635デフォルトの名無しさん
2006/07/05(水) 01:44:44両方使えるべきであると思うがどうか
0636デフォルトの名無しさん
2006/07/05(水) 01:55:570637デフォルトの名無しさん
2006/07/05(水) 03:18:16今年1月初頭にRuby人気が上がったきっかけは
Ruby Harvey vigil this afternoon
だったのかww
0638デフォルトの名無しさん
2006/07/05(水) 13:20:13URLの拡張子のせいだな。
0639デフォルトの名無しさん
2006/07/05(水) 14:28:11いくつかの便利メソッドを追加したKconv+を作ろうぜ
0640デフォルトの名無しさん
2006/07/06(木) 01:23:08まだ頑張ってくれてるのだろうか
0641デフォルトの名無しさん
2006/07/06(木) 11:03:250642デフォルトの名無しさん
2006/07/06(木) 15:01:440643デフォルトの名無しさん
2006/07/06(木) 15:05:270644デフォルトの名無しさん
2006/07/06(木) 15:51:35Unicode に統一されてないからなどの話?
そんなのが、Matz 日記あたりに最近あったな。
0645デフォルトの名無しさん
2006/07/06(木) 15:57:390646デフォルトの名無しさん
2006/07/06(木) 17:49:060647デフォルトの名無しさん
2006/07/06(木) 18:05:150648デフォルトの名無しさん
2006/07/06(木) 20:30:020649デフォルトの名無しさん
2006/07/06(木) 20:54:530650デフォルトの名無しさん
2006/07/07(金) 01:42:56utf8 flag というろくでもない機構
0651デフォルトの名無しさん
2006/07/07(金) 08:41:03if /pattern/e =~ line
こんなんでいけないものか
0652デフォルトの名無しさん
2006/07/07(金) 11:38:30連載やめて本を出してください。
0653デフォルトの名無しさん
2006/07/07(金) 12:17:21連載ってそれ自体はそんなお金入んないか
0654デフォルトの名無しさん
2006/07/07(金) 12:33:480655デフォルトの名無しさん
2006/07/07(金) 13:49:05高校生みたいなやつが発売日に関してしつこく質問したり
マーケティングって言葉を使いたくてしょうがなさそうな頭の悪いやつが
ぐだぐだ言ったから、翻訳する気がなくなったのかなと思ったりw
ググっててそれらしいやりとりを見つけた。
それともただ忙しいのか・・・・もしくは生後確認に一生懸命なのか・・・・
お盆休みにゆっくり読みたかったorz
0656デフォルトの名無しさん
2006/07/07(金) 14:33:30もっと早く書けるようになりたい
っていうか来年1月からISBNが13桁に変わるなんて知らなかった
>>655
してやったりと思ってるかもしれないぞ
0657デフォルトの名無しさん
2006/07/07(金) 16:41:07> お盆休みにゆっくり読みたかったorz
ゆっくり1.8.5をインストールしてくれ。
0658デフォルトの名無しさん
2006/07/07(金) 22:21:54パールを元にしてルビーって作ったんですよね?
パール 時代遅れのテキスト処理で見辛い
ルビー 作者が日本人でコード見易い。ただ教科書が少ない
って聞いたんですけどそれぞれの特徴教えてください
0659デフォルトの名無しさん
2006/07/07(金) 22:33:37いろんな関数を知っていなければいけないので
使いこなすのにコツがいる。
Ruby
メソッド名や使い方がある程度統一されているので、
基本を押さえていればおおよそ使い方が分かる。
文字列から整数への変換はto_iだが、
浮動少数から整数への変換もto_i。
0660デフォルトの名無しさん
2006/07/07(金) 22:43:29先駆者にして常に時代の最先端を行く。
メジャーバージョンアップの度にぶっとんだ仕様をぶち込んできて
ユーザーの度肝を抜く。
もうすぐperl6が出るということになっているが、いつになるのやら。
ruby
perlの機能を参考にして作られた。
マイナーバージョンアップの度に予期せぬ仕様変更をぶち込んできて
ユーザーの怒りを呼ぶ。
もうすぐruby1.8.5が出るということになっているが、いつになるのやら。
0661デフォルトの名無しさん
2006/07/07(金) 22:54:280662デフォルトの名無しさん
2006/07/07(金) 22:56:2930行以上になるならRuby
イメージで言うと、
Rubyのプログラムは行数に比例して複雑になり、
Perlのプログラムは行数の二乗に比例して複雑になる。
PHPなら行数の1.5乗に比例して複雑になる。
こんなのもある。
ttp://www.geocities.jp/shido_takafumi/py/python1.html
0663デフォルトの名無しさん
2006/07/07(金) 23:00:39ただしPerlの方がドキュメントいっぱいあるし
先人の作ったライブラリいっぱいあるし
CGIで使えるレンタルサーバーいっぱいある
0664デフォルトの名無しさん
2006/07/07(金) 23:09:580665デフォルトの名無しさん
2006/07/07(金) 23:14:06あのへんで今とりあえず飯が食える言語はPHPだと思う
あと2〜3年は食いっぱぐれないでそ
変な言語が流行っちゃったなあ
0666デフォルトの名無しさん
2006/07/07(金) 23:22:04Function func()
MsgBox "Hi!"
End Function
Set document.OnLoad = GetRef("func")
って書けるんですけど、
これを ActiveScriptRuby で書くにはどうしたらいいでしょう?
def func()
# なにか
end
document.OnLoad = func
とやっても、func の呼び出しになっちゃうんですよね〜。
0667デフォルトの名無しさん
2006/07/07(金) 23:42:30そこはJavaScriptみたくbodyのonload属性に仕込む。
<body onload="func" language="RubyScript">
0668デフォルトの名無しさん
2006/07/08(土) 08:43:05すみません、HTML で使うんじゃないんですよ。
単に、拡張子.rb のスクリプトファイル内で、com のイベントを拾いたいんです。
相手は GetIDsOfNames せずに、単に Invoke(dispid=0) してくるだけなので、
document.onload=proc{ puts "Hi!"}
としたら一応動きました。
これを、
def func
puts "hi!
end
document.onload=(なにか演算子?)func
に書き換える方法が知りたいんです。
0669デフォルトの名無しさん
2006/07/08(土) 09:18:28COM知らないんだがw
method(:func)
はどう?
0671デフォルトの名無しさん
2006/07/08(土) 19:04:14PHPなんて言語じゃないよな
0672デフォルトの名無しさん
2006/07/08(土) 21:22:16う〜、ばうあう!!
がうがうがうあ、がうがう!!
0673デフォルトの名無しさん
2006/07/08(土) 22:58:23PHP はくそだよなぁ。
Python がはやるならまだ納得できるが。
0674デフォルトの名無しさん
2006/07/09(日) 00:04:36多元配列?
% ls -l dir*
dir_a:
total 0
-rw-r--r-- 1 rubyuser rubyuser 1 9 Jul 00:00 file_aa
dir_b:
total 0
-rw-r--r-- 1 rubyuser rubyuser 2 9 Jul 00:00 file_ba
-rw-r--r-- 1 rubyuser rubyuser 3 9 Jul 00:00 file_bb
0675デフォルトの名無しさん
2006/07/09(日) 00:10:000676デフォルトの名無しさん
2006/07/09(日) 00:15:12しっかり作るなら>>675
0677デフォルトの名無しさん
2006/07/09(日) 05:10:01多重連想配列ですかね。
動かしてないけどこんな感じ?
dir = Hash.new
dir["dir_a"] = { "file_aa" => 1 }
dir["dir_b"] = { "file_ba" => 2 }
dir["dir_b"] = { "file_bb" => 3 }
たぶん、
{"dir_a"=>{"file_aa"=>1}, "dir_b"=>{{"file_ba"=>2}, {"file_bb"=>3}}
になる。
0678デフォルトの名無しさん
2006/07/09(日) 05:47:45entry[:size] = 0
entry[:leaves] = []
leavesがあるならDir なければFile
の方がいい気がするがどうだろ
0679デフォルトの名無しさん
2006/07/09(日) 16:12:49dir_name_class = Struct.new(:dir_name, :file_name, :byte_size)
data = []
data[0] = dir_name_class.new("dir_a", "file_aa", 1)
data[1] = dir_name_class.new("dir_b", "file_ba", 2)
data[2] = dir_name_class.new("dir_b", "file_bb", 3)
data.each_index {|number|
i = 0
data[number].members.each {|value|
if i != 0 then
printf", "
end
i += 1
printf("%s = %s", value, data[number].send(value).to_s)
}
printf("\n")
}
実行結果
dir_name = dir_a, file_name = file_aa, byte_size = 1
dir_name = dir_b, file_name = file_ba, byte_size = 2
dir_name = dir_b, file_name = file_bb, byte_size = 3
0680デフォルトの名無しさん
2006/07/09(日) 16:13:19dir_name_hash = Hash.new
dir_name_hash["dir_a"] = { "file_aa" => 1 }
p dir_name_hash["dir_a"].keys
dir_name_hash["dir_b"] = {{ "file_ba" => 2 }, { "file_bb" => 3 }}
p dir_name_hash["dir_b"].keys
p dir_name_hash
実行結果
["file_aa"]
[{"file_ba"=>2}]
{"dir_a"=>{"file_aa"=>1}, "dir_b"=>{{"file_ba"=>2}=>{"file_bb"=>3}}}
配列の配列はおk。
dir_name_array = []
dir_name_array.push ["dir_a", "file_aa", 1]
dir_name_array.push ["dir_b", "file_ba", 2]
dir_name_array.push ["dir_b", "file_bb", 3]
p dir_name_array
実行結果
[["dir_a", "file_aa", 1], ["dir_b", "file_ba", 2], ["dir_b", "file_bb", 3]]
0681デフォルトの名無しさん
2006/07/09(日) 18:51:10> ハッシュのハッシュは無理。
> dir_name_hash["dir_b"] = {{ "file_ba" => 2 }, { "file_bb" => 3 }}
dir_name_hash["dir_b"] = { "file_ba" => 2, "file_bb" => 3 }
0682デフォルトの名無しさん
2006/07/10(月) 16:26:3310.times do |t|
if t%2 == 0
puts('ワンツー')
else
puts(kick)
end
end
でエラーが出てしまうんですけどどうしてでしょう?
0683デフォルトの名無しさん
2006/07/10(月) 16:31:50どんなエラーが出たのかコピペすれ。
てか、そのプログラム過去に見た記憶が・・・
0684デフォルトの名無しさん
2006/07/10(月) 16:40:33(irb):7; parse error,unexpected tINTEGER, expecting $
kick ='ローキック'
10.times do |t|
if t%2 == 0
puts('ワンツー')
else
puts(kick)
end
end
^
from(irb):7
from:0
です。
0685デフォルトの名無しさん
2006/07/10(月) 16:48:47$KCODE = 's'
0686デフォルトの名無しさん
2006/07/10(月) 16:51:53irb じゃなくて、ruby -d スクリプトフィアル の結果はどうなる?
0687デフォルトの名無しさん
2006/07/10(月) 16:55:00どうゆう意味っすか???
0688デフォルトの名無しさん
2006/07/10(月) 17:20:360689デフォルトの名無しさん
2006/07/10(月) 18:17:29スレッドで動かすとワンツーキックの順序が崩れるかもとかそんな説明のスクリプトじゃない?
0690デフォルトの名無しさん
2006/07/10(月) 18:58:220691デフォルトの名無しさん
2006/07/10(月) 19:57:29いや、ちゃんと動くぞ。irbでやったけど。
$ ruby -v
ruby 1.8.2 (2005-04-11) [x86_64-linux]
0692デフォルトの名無しさん
2006/07/10(月) 20:50:05ruby -v
ruby 1.8.4 (2005-12-24) [i386-mswin32]
irb(main):002:0> kick='ローキック'
10.times do |t|
if t%2==0
puts('ワンツー')
else
puts(kick)
end
end
SyntaxError: compile error
(irb):2: parse error, unexpected tINTEGER, expecting $
kick='ローキック'
10.times do |t|
if t%2==0
puts('ワンツー')
else
puts(kick)
end
^
from (irb):2
from :0
0693デフォルトの名無しさん
2006/07/10(月) 21:05:00それじゃあエラーにもなるよ。
それってDOS窓上のirbにコピペしてるの?
0694デフォルトの名無しさん
2006/07/10(月) 21:20:32どうすれば改行できるんすか??
0695デフォルトの名無しさん
2006/07/10(月) 21:36:03ASRのRuby Console上のirbに、
このスレからソースをコピペしてみた。
irb(main):001:0> kick='ローキック'
=> "\203\215\201[\203L\203b\203N"
irb(main):002:0> 10.times do |t|
irb(main):003:1* if t%2==0
irb(main):004:2> puts('ワンツー')
irb(main):005:2> else
irb(main):006:2* puts(kick)
irb(main):007:2> end
irb(main):008:1> end
ワンツー
ローキック
ワンツー
ローキック
ワンツー
ローキック
ワンツー
ローキック
ワンツー
ローキック
=> 10
irb(main):009:0>
うまく動かない状態を再現できない。
0696デフォルトの名無しさん
2006/07/10(月) 21:53:23ありがtぷございます。
>>695
0697デフォルトの名無しさん
2006/07/10(月) 22:39:100698デフォルトの名無しさん
2006/07/11(火) 09:58:23ttp://www.amazon.co.jp/gp/product/4839917299/249-3059969-1619569?v=glance&n=465392
0699デフォルトの名無しさん
2006/07/11(火) 10:02:07で、なにが原因でうごかなくて、どうやって解決したの?
それがなくて「できました」だけじゃあ、参考にならんなあ。
0700デフォルトの名無しさん
2006/07/11(火) 10:11:390701デフォルトの名無しさん
2006/07/11(火) 10:52:060702デフォルトの名無しさん
2006/07/11(火) 16:11:480703デフォルトの名無しさん
2006/07/11(火) 19:21:46同じ質問はさすがにもう来ない。
キチガイが荒らす場合以外は。
0704デフォルトの名無しさん
2006/07/11(火) 22:46:350705デフォルトの名無しさん
2006/07/11(火) 22:56:24上から配列に入れてreverseしたものを表示しろ。
0706デフォルトの名無しさん
2006/07/11(火) 22:57:00できました
ども
0707デフォルトの名無しさん
2006/07/11(火) 23:15:03末尾から適当に区切って読み込んでいけるスクリプトが書ければ
初心者から初級者にランクアップできるぞ。1
0708デフォルトの名無しさん
2006/07/12(水) 00:11:17このようにその日の最高と最低気温を記録したデータあります。
2006/06/27,23.3,20.9
2006/06/28,25.5,23.0
2006/06/29,33.3,27.6
2006/06/30,24.6,22.1
2006/07/01,33.7,31.7
2006/07/02,30.1,28.0
2006/07/03,29.4,20.4
2006/07/04,31.3,30.0
2006/07/05,25.5,19.8
2006/07/06,28.8,21.0
2006/07/07,32.6,25.7
2006/07/08,22.0,16.5
また、例年の平均気温の週ごとのデータもあります。
2006/07/01,27.9,24.5
2006/07/08,24.4,20.0
日付を比較して週ごとのデータを日ごとのデータにくっつけたいんです
2006/06/27,23.3,20.9,27.9,24.5
2006/06/28,25.5,23.0,27.9,24.5
2006/06/29,33.3,27.6,27.9,24.5
2006/06/30,24.6,22.1,27.9,24.5
2006/07/01,33.7,31.7,27.9,24.5
2006/07/02,30.1,28.0,24.4,20.0
2006/07/03,29.4,20.4,24.4,20.0
2006/07/04,31.3,30.0,24.4,20.0
2006/07/05,25.5,19.8,24.4,20.0
2006/07/06,28.8,21.0,24.4,20.0
2006/07/07,32.6,25.7,24.4,20.0
2006/07/08,22.0,16.5,24.4,20.0
(続く)
0709デフォルトの名無しさん
2006/07/12(水) 00:15:30日ごとのデータの日付の/を削除し整数値のデータに変換した後で
週ごとのデータをeachで全て読み込み、そのデータと大小比較して
貼り付けるという物を考えたのですが、複雑すぎるような気がして
混乱しています。
もっと単純な方法はない物でしょうか?
0710デフォルトの名無しさん
2006/07/12(水) 00:19:33ただ、/を削除して整数値に変換する必要はないね。文字列のまま比較してよし。
次に比較でなく、日付から相当する「週」のラベル(日)を出すロジックを考えるといいかも。
あとはハッシュなり配列なりで工夫して。
もっとうまい手もあると思うけどね。
0711デフォルトの名無しさん
2006/07/12(水) 00:24:24df = open('daily')
wf = open('weekly')
w, wt = wf.gets.chomp.split(/,/, 2)
df.each do |dl|
&nbp; d, t = dl.chomp.split(/,/, 2)
&nbp; while d > w
&nbp; &nbp; w, wt = wf.gets.chomp.split(/,/, 2)
&nbp; end
&nbp; puts [d, t, wt].join(',')
end
wf.close
df.close
0712デフォルトの名無しさん
2006/07/12(水) 00:30:29Non-Breakable whiteSPace(区切り候補にならない空白)の略
0713デフォルトの名無しさん
2006/07/12(水) 00:31:23あとエラーチェックとか全然してない。
0714デフォルトの名無しさん
2006/07/12(水) 00:34:44やっぱりその方法もありなんですか
今の腕だと結構ハードで
>>711-713
参考にさせていただきます
ありがとうございました
0715デフォルトの名無しさん
2006/07/12(水) 04:35:14> あとはハッシュなり配列なりで工夫して。
こんなのか?
require 'date'
delta = nil
weeklyh = {}
IO.foreach('weekly') do |l|
a = l.split(/,/,2)
d = Date.parse(a[0])
weeklyh[d.cweek]= a[1]
delta ||= (7 - d.cwday)
end
IO.foreach('dayly') do |l|
d = Date.parse(l[/\d+\/\d+\/\d+/]) + delta
puts l.chomp + ',' + weeklyh[d.cweek]
end
0716デフォルトの名無しさん
2006/07/12(水) 05:38:05どちらがおすすめでしょうか? 差がよくわからなくて...
0717デフォルトの名無しさん
2006/07/12(水) 06:49:12おすすめのしようがない
0718716
2006/07/12(水) 07:45:35あと、ゆくゆくWindowsのGUIを使ったスクリプトも作りたいです。
0719デフォルトの名無しさん
2006/07/12(水) 09:39:580720デフォルトの名無しさん
2006/07/12(水) 10:12:46違いはよく知らないんだけど。
0721デフォルトの名無しさん
2006/07/12(水) 12:37:30mswin32版ruby+RDE
0722デフォルトの名無しさん
2006/07/12(水) 12:45:00とりあえずこれつかっとけ。
0723デフォルトの名無しさん
2006/07/12(水) 12:52:500724デフォルトの名無しさん
2006/07/13(木) 01:37:38こんな感じのランダムな数字があって、これを4文字ずつに切り分けるにはどうしたらいいんでしょう?
unpackを使うらしいのですが
unpack("a4")
とやっても7408が切り出されるだけで、残りが無視されてしまいます
0725デフォルトの名無しさん
2006/07/13(木) 01:44:36どうでしょうか
0726デフォルトの名無しさん
2006/07/13(木) 01:51:48なるほど、その手がありましたか
どうも
0727デフォルトの名無しさん
2006/07/13(木) 05:17:23どんどん延長しますね。
楽しみにしているのが馬鹿馬鹿しく思えてきました。
つーか、もう出さなくてもイイですよ。
0728デフォルトの名無しさん
2006/07/13(木) 05:48:300729デフォルトの名無しさん
2006/07/13(木) 11:01:37学ぶ時間があるのなら迷わず乗り換えちまえ。
言語はそれぞれに独特の考え方があって視野を広げてくれる。
自分の都合で言語を選べるのは恵まれているのだから
チャンスは生かせばいい。
0730デフォルトの名無しさん
2006/07/13(木) 11:43:27今回RDF/XMLを使おうと思うんだけど、それに関するいい書籍はありませんか?
Rubyの本を調べてみたけど、どれもピンとこないので実際に読んでる人に
教えて貰いたいんだけど・・・
いいのがあったら購入を考えてるのでお願いします
0731730
2006/07/13(木) 11:56:47Rubyを使ってRDF/XMLを作れる、使えるような事を書いてる本です。
Rubyについてはそこそこ本が出てますけど、
具体的な中身がわからないので・・・
0732デフォルトの名無しさん
2006/07/13(木) 12:00:56ttp://www.cozmixng.org/~kou/ruby_de_xml
0733デフォルトの名無しさん
2006/07/13(木) 12:50:45去年そうそうに英語版買った俺が買ち組。1冊だし、安いし。
0734デフォルトの名無しさん
2006/07/13(木) 13:54:500735デフォルトの名無しさん
2006/07/13(木) 17:56:26host = 'www.amazon.co.jp'
directory = '/test'
h = Net::HTTP.new(host, 80)
while htmlfile = DATA.gets
htmlfile = htmlfile.chomp
resp, data = h.get(directory + "/" + htmlfile, nil)
data.each { |i| puts i }
end
__END__
product/B0000AIRN3/250-6594702-0116251?v=glance&n=561958
このやり方でamazonのページを取得できないのですがなぜでしょうか?
ちなみにほかのサイトは取得できました。
0736デフォルトの名無しさん
2006/07/13(木) 18:06:110737デフォルトの名無しさん
2006/07/13(木) 18:12:080738デフォルトの名無しさん
2006/07/13(木) 18:26:34こっちが正しいやつです。すみません。
require 'net/http'
host = 'www.amazon.co.jp'
directory = '/gp'
h = Net::HTTP.new(host, 80)
while htmlfile = DATA.gets
htmlfile = htmlfile.chomp
resp, data = h.get(directory + "/" + htmlfile, nil)
data.each { |i| puts i }
end
__END__
product/B0000AIRN3/250-6594702-0116251?v=glance&n=561958
これも試してみましたが、>>737さんのおっしゃるとおり何も取得できません。
http://www.amazon.co.jp/gp/product/B0000AIRN3/250-6594702-0116251?v=glance&n=561958
↑このページは存在するのに、なぜ何も取得できないのでしょうか?
0739デフォルトの名無しさん
2006/07/13(木) 18:30:57ヒント: 301 MovedPermanently
0740738
2006/07/13(木) 18:44:13とありましたが、こういった場合はどうやって取得すればよいのでしょうか?
0741デフォルトの名無しさん
2006/07/13(木) 18:48:550742デフォルトの名無しさん
2006/07/14(金) 16:26:44tp://blog.koss.jp/article_346.html
の方法に従ってdebain/sergeにインストールしたんですが。
eruby上でエラー構文を書くと、webの表示で「500 Internal Server Error」となってしまいます。
こういうものなんでしょうか?
もう少し親切にエラーで怒ってくれないものでしょうか。
0743デフォルトの名無しさん
2006/07/14(金) 16:28:16rescue
end
0744742
2006/07/14(金) 16:42:27つまり構文のエラーを突っ込んでくれるような機能はデバッガ等を導入しろって事だと理解しますた。
0745デフォルトの名無しさん
2006/07/14(金) 16:46:280746デフォルトの名無しさん
2006/07/14(金) 16:52:48ユーザーに対してInternelServerErrorを表示するのは当たり前
Webサーバのエラーログあたりを見ろ
Rubyが返してるエラーが書き出されてるはずだ
0747742
2006/07/14(金) 16:56:47ご指摘ありがとうございます、apacheのログを確認してみようと思います。
これ以上簡便なエラー表示方法は無いのでしょうか?
デバッグ中はweb上からエラー表示するとか・・
0748デフォルトの名無しさん
2006/07/14(金) 17:05:15エラーや例外の出す標準エラー出力を全部捕捉して標準出力に書き直せばいんでないの
0749デフォルトの名無しさん
2006/07/14(金) 17:34:45標準エラー出力を捕捉して書き直しってけっこう大変だと思うが。
>>743のいうように、rescue Exceptionで、文法エラーも含めて全部捕捉して、
書き出すのが楽だと思う。
それでも捕捉できなかったら、ローカルで、ruby -cとやってみること。
0750デフォルトの名無しさん
2006/07/14(金) 17:55:59セキュリティ上良くない場合もあるからね
500しか言わなくて良いよ
0751デフォルトの名無しさん
2006/07/14(金) 22:48:20Perl だとサクッと出来る。
0752デフォルトの名無しさん
2006/07/14(金) 22:50:50簡単に見つける方法なんじゃないだろうか。
もしそうだとしたら、こんなのはどうでせう?
$ erb -x file.rhtml | ruby -wc
erb -x で file.rhtml を rubyスクリプトに変換し、それを ruby -wc で構文チェックかけてます。
0753デフォルトの名無しさん
2006/07/15(土) 00:36:16文法エラーはスクリプトの実行前に発生するので無理だが、
実行時のエラー出力は$stderrを変えておけば捕捉できる。
$stderr = StringIO.new
begin
...
ensure
err = $stderr.string
unless err.empty?
puts err
end
end
0754デフォルトの名無しさん
2006/07/15(土) 01:08:54perlだったらCGI::Carpってのがあるけど、rubyにはないのだろうか。
0755デフォルトの名無しさん
2006/07/15(土) 09:16:31#!/usr/bin/ruby
END { puts "Content-type: text/html\n\n<h3>#{$@}<br>#{$!}" if $!}
hoge.to_s
puts "Content-type: text/html\n"
puts "<html>"
…
puts "</body></html>"
exit
#=>
D:/www/cgi-bin/index.cgi:3
undefined local variable or method `hoge' for main:Object
0756デフォルトの名無しさん
2006/07/15(土) 11:06:31つーかタグ閉じろよ。サニタイズしろよ。
0757デフォルトの名無しさん
2006/07/15(土) 11:59:20syntax error も捕捉してくれるんだっけか?
0758デフォルトの名無しさん
2006/07/15(土) 12:09:470759デフォルトの名無しさん
2006/07/16(日) 11:59:32しない。
つーか捕捉する側のコードがerrorだったらそもそも走らない。
別ファイルに分けてloadするか、evalするかしないと無理。
0760デフォルトの名無しさん
2006/07/16(日) 13:48:02begin
load "foo"
rescue Exception => e
print "Content-Type: text/plain\n\n"
print "#{e.backtrace[0]}: #{e.to_s} (#{e.class})\n"
e.backtrace[1 .. -1].each do |bt|
print "\tfrom #{bt}\n"
end
end
0761デフォルトの名無しさん
2006/07/16(日) 18:04:10=cut
ところで今日
proc do
retry if gets
end.call
ってやったら retry 出来なくてびっくりした
0762デフォルトの名無しさん
2006/07/16(日) 20:35:33require 'nkf'
title = Array.new
url = "http://money.jp.msn.com/newslist.aspx"
def get_title(url)
body = NKF.nkf("-s", open(url).read)
title << body.scan(/<div class="newsheadlinelist">(.*?)<\/div>/)
if /<a href='(.*?)'>次へ>/s =~ body
next_url = $1
get_title(next_url)
end
end
get_title(url)
title.each {|i|
print i, "<br>\n"
}
なんでこれ
msn.rb:8:in `get_title': undefined local variable or method `title' for main:Obj
ect (NameError)
とか言われるんでしょうか?
一番外で最初に宣言してるのですが
0763デフォルトの名無しさん
2006/07/16(日) 20:40:07C とかとはちょっと違うんだよね。
変数をグローバルスコープで使いたい場合は、title じゃなくて $title としましょう。
0764デフォルトの名無しさん
2006/07/16(日) 21:15:06…なんでかはよくわからん。
Rubyのいくつかのスコープは字面は同じなのに不思議な挙動を示すことがある。
書き捨てならグローバル変数にしてしまうか、引数でメソッド内部に持ち込め。
0765デフォルトの名無しさん
2006/07/16(日) 21:57:15do〜endや{〜}は外のも読める入れ子のスコープ
if〜endやwhile〜endはスコープを作らない
0766デフォルトの名無しさん
2006/07/16(日) 21:57:45なるほど、グローバル変数ですか
ども
0767デフォルトの名無しさん
2006/07/16(日) 22:02:480768デフォルトの名無しさん
2006/07/16(日) 22:07:42変数表でしっかり管理していれば
グローバルが最強なのはどの言語にも言えること。
変数スコープはバグの温床。
0769デフォルトの名無しさん
2006/07/16(日) 22:10:450770デフォルトの名無しさん
2006/07/16(日) 22:11:44筋が悪いにもほどがある。
0771デフォルトの名無しさん
2006/07/16(日) 22:13:34>>770は取り消す。
0772デフォルトの名無しさん
2006/07/16(日) 22:14:18プログラム構造が複雑怪奇でどうしても如何ともし難いときに
最終奥義としてうやうやしくこっそりと最低限の用量で慎重に使うものだ
でも実際上はフツーの人が作るプログラム程度においては破綻の原因にはなりっこない罠
0773デフォルトの名無しさん
2006/07/16(日) 22:18:13したときに破綻のトリガーになったりする。
0774デフォルトの名無しさん
2006/07/16(日) 23:07:18グローバル変数なんて一生使いたくなくなるから。
0775デフォルトの名無しさん
2006/07/16(日) 23:32:33グローバル変数の使い方教えて何が悪い。
0776デフォルトの名無しさん
2006/07/16(日) 23:35:250777デフォルトの名無しさん
2006/07/17(月) 07:12:460778デフォルトの名無しさん
2006/07/18(火) 05:42:04良い方法はないでしょうか?Rubyは1.8です
0779デフォルトの名無しさん
2006/07/18(火) 08:09:50ttp://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Matrix
いちおうtransposeメソッドもあるみたい。
長さの不揃いな配列の配列を、Matrixオブジェクトに変換してみてはどうだろう。
0780デフォルトの名無しさん
2006/07/18(火) 12:04:54そういうのを解説したサイトとかありませんか?
0781デフォルトの名無しさん
2006/07/18(火) 12:09:23ありがとうございます。
ですがこれ、数値が前提みたいで……
扱いたいのは自作クラスのインスタンスなんです。
一応自分でこんなのを作ってみました。
でも、もう少しサラっと書けないかなぁと思います。
def trans_aryary(src)
dst = []
row = 0
begin
tmp = []
found = nil
src.each do |col|
tmp.push col[row]
found ||= col[row]
end
dst.push(tmp) if found
row += 1
end while found
return dst
end
0782デフォルトの名無しさん
2006/07/18(火) 12:26:11そんなピンポイントな解説サイトなんてあってたまるかー
いや、あっても楽しそうな気もするが
せっかくの自作なら自力で作っていくのもいいんじゃね
RSSを読んでREXMLでパースするもやたら遅すぎるので正規表現で適当に区切って
1回目の表示はうまくいったけど未読と既読の管理の実装どうしようというとこで是非挫折してくれ(w
0783デフォルトの名無しさん
2006/07/18(火) 13:02:330784デフォルトの名無しさん
2006/07/18(火) 13:33:01title一覧からクリックしてdescriptionを表示した記事だけを既読として扱うのかとか
titleとdescriptionをセットでずらずら一覧表示して全部既読ということにしてしまうのか
メーラーのような既読処理のほうが間違いはないが、数十数百の記事になるととてもとても
0785デフォルトの名無しさん
2006/07/18(火) 13:35:370786780
2006/07/18(火) 13:41:38確かに。でも他の言語ならあってもおかしくない気も・・・
挫折前提ですかw
とりあえずでいいから動くものを作りたいです
そっからカスタマイズでいいので・・・
未読既読は後でもいいかなとか
0788デフォルトの名無しさん
2006/07/18(火) 14:50:21ttp://internet.kill.jp/wiki/index.php?%B5%BB%BD%D1%2FRuby%A4%C7RSS
「Ruby RSS」でぐぐっただけだから、内容までは知らん。
0789デフォルトの名無しさん
2006/07/18(火) 16:24:29インストールして、コントローラーに
htpasswd :user=>"foo", :pass=>"bar"
と入れて実行してみると
undefined local variable or method `htpasswd_options' for #<BbsController:0x409d1014>
となって、エラーになってしまう。なんでだろ?知っている人おしえてください。
0790デフォルトの名無しさん
2006/07/18(火) 18:41:01http://pc8.2ch.net/test/read.cgi/php/1151254378/
Railsはこっち
0791780
2006/07/18(火) 19:56:27おーサンキューです。調べが足りなかったですね。
でも、ほんとに読み込むだけだな・・・
これをWebにするならRailsを使わないと駄目なわけか・・・
0792780
2006/07/18(火) 19:58:01CとかのCpadみたいな・・・
探してるんですが、英語版しか無いんで・・・
0793デフォルトの名無しさん
2006/07/18(火) 20:04:540794デフォルトの名無しさん
2006/07/18(火) 20:30:110795デフォルトの名無しさん
2006/07/18(火) 21:13:05それなんて日記?
0796デフォルトの名無しさん
2006/07/18(火) 21:17:210797780
2006/07/18(火) 22:09:35ありがとうございます。早速インストールしたのですが
日本語化の仕方が分からない・・・
TransrationFileってどこだー!
0798デフォルトの名無しさん
2006/07/18(火) 23:03:19ttp://rubyde.sourceforge.net/hiki/ja/Initial%2BSetting.html
0800デフォルトの名無しさん
2006/07/19(水) 04:40:16ttp://www.tea4miki.org/articles/2004/11/15
ここのサイトを見て、RubyでRSSを自動生成する物を作れると知って
このプログラムをうってみたのですが、
なぜかエラーが出ます・・・どうすればいいか分かる方いませんか?
0801デフォルトの名無しさん
2006/07/19(水) 05:20:190802デフォルトの名無しさん
2006/07/19(水) 06:46:400803デフォルトの名無しさん
2006/07/19(水) 07:12:08たぶん、「RSSを構築する」の部分ソースを動かしたのだと思うが。
Ruby をちゃんと普通に学習するなり、このサイトをベースにしてちゃんと学習するなりして、
本家行って RSS の仕様(英語)をちゃんと読んで、
両者を理解して上で自分で作らないと、むしろ茨の道な気がするが。
俺は自前で作ったことあるけど、あまり苦労しなかったし。
0804デフォルトの名無しさん
2006/07/19(水) 08:26:12def transpose_nonsquarematrix(mtx)
max = mtx.map{ |array| array.size }.max
mtx.map{ |e| e.concat( Array.new(max - e.size, nil) ) }.transpose
end
0805800
2006/07/19(水) 14:11:19そうです。RSSを構築するの部分のソースを動かしたんですけど、
RDE使ってデバッグした所、
1行目と
rss=のところの行にエラーが出て何これ?って感じでした・・・
Rubyの本は注文したのですが、まだ届いてない状況。
自前で作るのが難しそうなので、こういったサイトを頼りにしてたのですが・・・
0806デフォルトの名無しさん
2006/07/19(水) 15:08:54わかったからエラー内容をコピペ汁。
0807800
2006/07/19(水) 15:16:18C:/DOCUME~1/○○○/LOCALS~1/Temp/rb13.tmp:11:in `make': wrong number of arguments (2 for 1) (ArgumentError)
from C:/DOCUME~1/○○○/LOCALS~1/Temp/rb13.tmp:11
Completed(1)
実行するとこんなエラーが出ます・・・
0808デフォルトの名無しさん
2006/07/19(水) 15:33:440809デフォルトの名無しさん
2006/07/19(水) 15:53:2911行目でmakeという関数を実行しようとしたが、(rb13.tmp:11: in `make')
引数の数が違っていますよ。(wrong number of arguments)
引数に1つだけ値を渡すべきところに2つ渡されていますよ。((2 for 1))
というエラーが出ているようだ。
0810デフォルトの名無しさん
2006/07/19(水) 19:40:27ttp://www.tea4miki.org/articles/2004/11/15 では
Ruby version 1.8.1を使っているが、>>807もそれにあわせている?
ruby -vの実行結果をコピペして欲しい。
ttp://www.cozmixng.org/~rwiki/?cmd=view;name=RSS+Parser%3A%3AReference.ja
ここを読むと最新版はRSS::Maker.makeの引数の数が変わっているので
エラーになるのだろう。
0811デフォルトの名無しさん
2006/07/19(水) 20:20:15class Hoge
def initialize(str)
i = 0
strs = str.to_s.split(/\t/)
strs.each do |s|
self[i] = s
i = i + 1
end
end
def []=(x,y)
end
end
みたいに見よう見まねで書いてみたんですが[]=がうまくいかないです。
どうかヒントだけでも
0812デフォルトの名無しさん
2006/07/19(水) 20:23:51ではヒントをあげよう。
見 よ う 見 ま ね で 書 く な
以上。
クラスの作り方とメソッドの作り方を勉強してからいじれ。
0813デフォルトの名無しさん
2006/07/19(水) 20:28:520814デフォルトの名無しさん
2006/07/19(水) 20:30:301.8.2から1.8.3の境目って結構そーいうの多いよね
0815デフォルトの名無しさん
2006/07/19(水) 20:34:25「動かなくても文句言わない」が付随すると思うぞ
0816デフォルトの名無しさん
2006/07/19(水) 20:40:02def initialize(str)
@strs = str.to_s.split(/\t/)
end
def [](x)
return strs[x]
end
end
0817デフォルトの名無しさん
2006/07/19(水) 20:46:330818デフォルトの名無しさん
2006/07/19(水) 20:48:00いやまあ確かにそうなんだけど
演算子の多重定義とか言ったってC++のoperator+とかみたいに
構造が見てれば分かるような記法じゃないみたいだし
せっかく買った入門書には変態的な例が一つだけ載っていてしかも
「このような真似はしないほうがいいでしょう」とか書いてあって
ちょっと相当参ってます。なにとぞ
0819デフォルトの名無しさん
2006/07/19(水) 20:48:34へ?何で?
0820デフォルトの名無しさん
2006/07/19(水) 20:48:54本当に申し訳ない。んでは
0821デフォルトの名無しさん
2006/07/19(水) 21:07:37return @strs[x]
だった
すまん
0822デフォルトの名無しさん
2006/07/19(水) 22:18:59あまり複雑な事をやらせて、そのうち例外処理とかまではいったら
目も当てられないだろう。
initializeはあくまでインスタンスを作成する為の処理だと思う。
0823デフォルトの名無しさん
2006/07/19(水) 22:29:530824デフォルトの名無しさん
2006/07/19(水) 22:47:07def initialize(str)
@strs = str.to_s.split(/\t/)
end
def [](x)
return @strs[x]
end
def each
@strs.each {|s| yield s }
end
end
h = Hoge.new("aho\tbaka\thage")
h.each {|s| p s}
0826デフォルトの名無しさん
2006/07/19(水) 22:54:280827デフォルトの名無しさん
2006/07/19(水) 22:54:541.8.4用に書き換えようよ
0828800
2006/07/19(水) 23:02:34from C:/DOCUME~1/Owner/LOCALS~1/Temp/rb398.tmp:3
Completed(1)
1.8。1に変えました。
でも
C:/DOCUME~1/Owner/LOCALS~1/Temp/rb398.tmp:3:in `require': No such file to load -- rss/1.0 (LoadError)
from C:/DOCUME~1/Owner/LOCALS~1/Temp/rb398.tmp:3
Completed(1)
こんなエラーが・・・
0829デフォルトの名無しさん
2006/07/19(水) 23:06:040830デフォルトの名無しさん
2006/07/19(水) 23:13:430831800
2006/07/19(水) 23:27:41RSSパーサですよね?インストールしました。ですが、
C:/DOCUME~1/Owner/LOCALS~1/Temp/rb3A1.tmp:6:in `require': No such file to load -- uconv (LoadError)
from C:/DOCUME~1/Owner/LOCALS~1/Temp/rb3A1.tmp:6
Completed(1)
と出ます。uconvって何だ・・・
まだ何かインストールしないと駄目なんですかね?
0832デフォルトの名無しさん
2006/07/19(水) 23:30:16そんなレベルじゃ、初心者スレでも相手にされないって。思考しない向上心も無い初心者なんてクソだ。
RDE の事情なんて知ったこっちゃないが、
恐らく、C:/DOCUME~1/Owner/LOCALS~1/Temp/rb398.tmp:3 がソースファイルなんだろ?
公式のマニュアルで require を知れ。わざわざクォートで括って強調してくれてるんだろ?
そうすれば、$LOAD_PATH 以下に foo.rb やら bar.so があるかどうか、自然と調べるだろうに。
$ ruby -e 'p $LOAD_PATH' とかやってみな。
0833800
2006/07/19(水) 23:33:41すみません・・・
831のエラーは、requireってCで言うインポートみたいなもんですよね?
で、インポートする為のファイルが読めないってエラーだと思うんですが・・・
で、tmpの6行目だからuconvつーものが読めないって事だと思うんですが違いますかね?
0834800
2006/07/19(水) 23:35:51いけるかどーか分かりませんがとりあえずインストしてみます。
0835800
2006/07/19(水) 23:50:48ruby extconf.rb
make
make install
と順番に入れると書いてあったのでそのようにしたのですが、
makeの所で、
’Make'は内部コマンドまたは外部コマンド・・・
と出てきて認識してくれません。
ruby exconf.rbでは、ちゃんとcreating makefileと出るんですが・・・
原因分かる方いませんか?
0836デフォルトの名無しさん
2006/07/20(木) 00:02:17ドザはこれだから。
0837デフォルトの名無しさん
2006/07/20(木) 00:05:11OS板でもどうぞ。
まずはRoRが前提としてる環境を理解したほうがいいよ。
0838デフォルトの名無しさん
2006/07/20(木) 00:15:32Cにインポートなんてものはない。
0839800
2006/07/20(木) 00:22:40ごめん。Javaだった・・・
makeがなぜかできねぇぇぇぇ・・・
どういう事だろ?環境変数のPATHはちゃんと通してるはずなんだけど・・・
0840デフォルトの名無しさん
2006/07/20(木) 00:31:54とりあえず、Ruby 以前の問題だから出直してきた方がいいよ。
初心者スレッドだからって、何聞いてもいいわけじゃない。
0841デフォルトの名無しさん
2006/07/20(木) 00:35:100842デフォルトの名無しさん
2006/07/20(木) 00:43:59つhttp://www.garbagecollect.jp/ruby/mswin32/ja/download/ext.html
0843デフォルトの名無しさん
2006/07/20(木) 00:45:41お前のような奴がスレを駄目にする
後に続く何百何千の人間が迷惑を被る
0844デフォルトの名無しさん
2006/07/20(木) 00:50:19すまん。
実際そんなにいるのか知らんけど、
後につづく、何千もの人間の人、すまんかった。
0845デフォルトの名無しさん
2006/07/20(木) 01:06:571年で1000人くらいにはなるかと(w
0846800
2006/07/20(木) 01:11:57すみませんでした。皆様にはご迷惑おかけしました。
なんかRubyの本体を解凍した中&インストした中にmakeが無いのは如何に?って感じですが・・・
パチもん掴まされたのか、そういうものなのか・・・
何はともあれせめてまともに動くようになってからまた来ます。
0847デフォルトの名無しさん
2006/07/20(木) 01:38:43間違った回答に誘導される人にとって迷惑だと。
てっきり、「安易に回答する」ことに対して
>843に説教いただいたのかと
思ってました。
すみませんでした。
あと>846は、まともに動くようになったら、もう来なくていいと思った。
0848デフォルトの名無しさん
2006/07/20(木) 02:25:07> なんかRubyの本体を解凍した中&インストした中にmakeが無いのは如何に?って感じですが・・・
おまえさん、makeってコマンドがどーゆーものか知らないのかえ?
0849デフォルトの名無しさん
2006/07/20(木) 02:30:43さて「makeがないって言われます」なんてFAQ項目が必要なのかな?
# 正直言うと、ことこの板でそんなこと言ってるのは「マウスが机の端まで来てもう動かせません」
# って困ってるのと同レベルな気もしないでもない
0850デフォルトの名無しさん
2006/07/20(木) 02:52:07ruby 1.8.1 の環境で
rss 0.1.5
uconv 0.4.12
xmlparser 0.6.8
xmlscan 0.2.3
をなんとか入れてみましたが、
やはりエラーが出てしまいます。
( >>800 さんが指摘していたエラーも一通り出ましたが
上のいくつかをインストールしたら消えました )
/usr/lib/ruby/1.8/date/format.rb:228:in `dup': can't dup NilClass (TypeError)
from /usr/lib/ruby/1.8/date/format.rb:228:in `_parse'
from /usr/lib/ruby/1.8/parsedate.rb:9:in `parsedate'
from /usr/lib/ruby/1.8/time.rb:137:in `parse'
from ./makerss.rb:17
0851デフォルトの名無しさん
2006/07/20(木) 02:54:17>>807,809をよーく読むべし。
0852851
2006/07/20(木) 02:57:040853デフォルトの名無しさん
2006/07/20(木) 04:16:33ここまで厳しくされるのを見てると、Windowsユーザーへの風当たりを感じる
Linuxユーザーは「make知ってて当然」みたいに考えてるのかもしれないが
WindowsでRuby動かす初心者がそんなもん知ってるわけ無いだろ
実際、俺はRuby初めてから3年目にコンパイルという概念を知った
0854デフォルトの名無しさん
2006/07/20(木) 04:39:03俺ドザーだが「makeがない」言われたら
「make.exe」か「make.com」でググるぐらいするよ。
0855デフォルトの名無しさん
2006/07/20(木) 04:41:17Windowsユーザーだから、makeを知らないから、というよりは、
質問の仕方、自分で調べる姿勢、テンプレ読んでないという問題でしょう。
>>850
rssに付属してるサンプルも動かない?
0856デフォルトの名無しさん
2006/07/20(木) 05:18:410857デフォルトの名無しさん
2006/07/20(木) 05:50:21せっかく、スクリプト言語だったり Ruby なのに。
端から見てて、他人のソースで考えずに愚痴るくらいなら、自分で考えて1から書いた方が早そうだ。
ところで、なんでわざわざ非標準添付の uconv 使ってるんだろ?
そもそも、半角等を考慮すると nkf 一択だった記憶があるんだが。
0858デフォルトの名無しさん
2006/07/20(木) 07:48:18プログラミング(メジャーでもない言語でしかも非GUIなスクリプト言語)を始める人というのは
なんつーかそれなりにパソコンに詳しい人であろうというのをあちこちで期待されてる節があって
そういう知識というか勘を持たないままプログラミングを始める人が増えてるのは喜ばしいやら寂しいやら
0859デフォルトの名無しさん
2006/07/20(木) 07:52:26「どすぷろんぷとって何ですか?」
「…わかったよ悪かったよ2000からはコマンドプロンプトだよなどうせ俺は古い人間だよリターンキーだよ」
「こまんどぷろんぷとって何ですか?」
「皮肉じゃなくて普通に知らないのかよ…」
0860デフォルトの名無しさん
2006/07/20(木) 08:39:41動作確認したソースをコピペするよ。元のサンプルに出来るだけ合わせた。
あとは好きにして。
require "open-uri"
require "kconv"
require "rss/maker"
response = URI.parse("http://www.tea4miki.org/articles/2004/11/15").read
lastmodified = response.last_modified
rss = RSS::Maker.make("1.0") do |maker|
maker.channel.about = "http://www.tea4miki.org/rss"
maker.channel.title = "プログラマっ子の足跡"
maker.channel.description = "藤本美貴様の指先を見つめるプログラマっ子のサイトです"
maker.channel.link = "http://www.tea4miki.org/"
maker.items.do_sort = true
item = maker.items.new_item
item.link = "http://www.tea4miki.org/articles/2004/11/15"
item.title = "Rubyを使ってRSSを生成する"
item.date = lastmodified
end
File.open("rss.txt", "w") do |file|
file.puts(rss.to_s.toutf8)
end
0861850
2006/07/20(木) 10:01:53素人の私には何がなんやらさっぱり分かりませんが
そのコードで動作しました。 ( 当方 ruby 1.8.1 です )
本当にありがとうございました。
0862デフォルトの名無しさん
2006/07/20(木) 10:24:380863デフォルトの名無しさん
2006/07/20(木) 11:13:110864デフォルトの名無しさん
2006/07/20(木) 13:03:27elispで言うとこの query-replace-regexp-eval とかみたいに
置換後の文字列を評価して返す方法って、Rubyでどうするんでしたっけ?
0865デフォルトの名無しさん
2006/07/20(木) 13:34:43string.gsub(/regexp/) { eval($~[0]) }
っていうような感じで何とかなるのかな。
0866デフォルトの名無しさん
2006/07/20(木) 14:01:47つまり、string.sub(/hoge/, huga) でいいと思うんだが、違うか?
0867デフォルトの名無しさん
2006/07/20(木) 14:44:54Cみたくポインタとかあるのでしょうか?
def aaa( test )
test = "bbb"
end
st = "aaa"
p st ###1
aaa(st)
p st ###2
0868デフォルトの名無しさん
2006/07/20(木) 15:08:410869デフォルトの名無しさん
2006/07/20(木) 15:13:45testの指すものがStringなら
def aaa(test)
test.replace('bbb')
end
0870デフォルトの名無しさん
2006/07/20(木) 15:13:520871デフォルトの名無しさん
2006/07/20(木) 15:38:200872デフォルトの名無しさん
2006/07/20(木) 17:53:38余談だけど、「引数の中身を書き換える」ってのはあんまりRuby的じゃないので、
可能なら他の方法をお勧めする
0873デフォルトの名無しさん
2006/07/20(木) 18:22:300874デフォルトの名無しさん
2006/07/20(木) 23:45:41B,2
C,3
みたいな列と行を記した入力が合って
A B C
1○
2 ○
3 ○
というテキストの表を出力するとします。
1.列名の配列を作る
2.HashのHashをつくって、hash[行][列]="○"とする
3.列名の配列と、hash.keys を捜査して表を出力する
って泥臭い方法でコード書いてみたいんですが、
もっと、Ruby っぽいシンプルな書き方ありませんでしょうか?
0875デフォルトの名無しさん
2006/07/21(金) 00:01:510876デフォルトの名無しさん
2006/07/21(金) 00:09:17トリッキーなコードを求めているのではないとすれば、無い。
0877デフォルトの名無しさん
2006/07/21(金) 00:27:56m.to_aで配列の配列に戻して配列ごとに1があったら○を出力
うまくいきそうにないな
0878デフォルトの名無しさん
2006/07/21(金) 00:33:220879864
2006/07/21(金) 00:44:03ほぼその通りでした。
"hoge_huga_hage".gsub(/(^|_)([a-z])/){$2.upcase} # => "HogeHugaHage"
みたいな感じ。ありがとうございました。
0880デフォルトの名無しさん
2006/07/21(金) 01:08:23nkf-utf8になったのは1.8.2からだからだろう。
0881デフォルトの名無しさん
2006/07/21(金) 01:53:46http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=ruby+1.8.2+feature
ですね。なるほど納得です。
フォローありがとう。
RSS は UTF-8 にしておいた方が無難なので、uconv を使った訳か。
0882デフォルトの名無しさん
2006/07/21(金) 02:57:46ActivePerl の ppmみたいな仕掛けが必要ってこと?
あればいいとは思うけど、とてもそこまでのリソースがあるとは思えない。
そもそも、なかむらさんが VC++のランタイムライブラリの名前変更にかなり
頭にきてるみたいだし(ruby-core 参照してね)、基準となるバイナリをどの
コンパイラによるものにするとかいろいろ障害があるね。
0883874
2006/07/21(金) 07:11:36while gets
a=$_.split(/,/)
hoge[a[0]][a[1]]="○"
end
hoge.fieldseparator=nil
hoge.rowseparator="\n"
puts hoge.to_s
とすれば表になる、みたいなのがあればいいなと
思いましたが、ないですか。
勉強がてら自分でクラスにまとめてみます。
ありがとうございました。
0884デフォルトの名無しさん
2006/07/21(金) 09:50:40なんか最初に書いてたことと問題が違う気がするんだが?
初心者の向きにはこっちの方がわかりやすい気がする。
"hoge_huga_hage".split("_").map{|x| x.capitalize}.join => "HogeHugaHage"
0885デフォルトの名無しさん
2006/07/21(金) 14:05:03それでちょうど One Click Installer の Curt Hibbs も悩んでたりするようだね。
0886デフォルトの名無しさん
2006/07/22(土) 10:41:07require 'nkf'
url = 'http://money.www.infoseek.co.jp/MnJbn/jbnindex/'
def getn(url)
url1 = 'http://money.www.infoseek.co.jp/'
str = NKF.nkf("-s", open(url).read)
str.scan(/<li><a href="(.*?)"> (.*?)<\/a><small class="source"> \- (.*?)<\/small><\/li>/){|i|
urlb = url1 + i[0]
print "<a href=\"#{urlb}\">#{i[1]}</a> #{i[2]}<br>\n"
}
if str.match(/次の40件/s)
str.scan(/<a href="(.*?)">次の40件/s)
print "#"
nurl = url1 + $1.to_s
getn(nurl)
end
end
getn(url)
再起してくれないのですがどこを直せばいいんでしょう?
http://money.www.infoseek.co.jp/MnJbn/jbnindex/
ここのニュースの次の40件をどんどんさかのぼってきたいんです
0887デフォルトの名無しさん
2006/07/22(土) 11:09:42んで、どうしてもファイルからリンクを抜き出さないと駄目なの?
http://money.www.infoseek.co.jp/MnJbn/jbnindex/?st=41
http://money.www.infoseek.co.jp/MnJbn/jbnindex/?st=81
http://money.www.infoseek.co.jp/MnJbn/jbnindex/?st=121
「続き」のURLはこう続いてるように見えるんだけど。
sleep 3 とか挟んだ上で(この手のでsleep無しは下品)eachでぶん回せばいいのでは。
0888デフォルトの名無しさん
2006/07/22(土) 11:20:38規則性に乗っ取って取得するのもいいんですが
この場合何でうまくいかないのかそれが気になる物で
0889デフォルトの名無しさん
2006/07/22(土) 11:34:28>>888
「str.scan(/<a href="(.*?)">次の40件/s) がブロックを伴ってないから」
要は { } の書き忘れですな
いじょ
0890デフォルトの名無しさん
2006/07/22(土) 11:57:41str.scan(/<a href="(.*?)">次の40件/s) {|i|
print "#"
nurl = url1 + i[0]
getn(nurl)
}
こういうことですか?
でも駄目なようです..
自動で動く版、よかったら見せてください。
0891デフォルトの名無しさん
2006/07/22(土) 12:20:19print "#"
nurl = url1 + i[0]
p nurl # 内容確認
getn(nurl)
}
ということで渡すurlがどうなってるか確認してみるといい。
ぶっちゃけURLが間違ってる
Infoseekのほうで「次の40件」という文字列を含まない別のページを返してきてるから
2度目のgetnのココで何もマッチせずに終わってる。
0892デフォルトの名無しさん
2006/07/22(土) 12:35:38どうもありがとうございました
あんな間違いが起きていたと考えてなかったです
0893デフォルトの名無しさん
2006/07/22(土) 12:56:45ruby -ropen-uri -rhpricot -e 'h="http://money.www.infoseek.co.jp";a="href";d=Hpricot(open("#{h}/MnJbn/jbnindex/"));(d/"#content//li/a").each{|i|i.attributes[a]=h+i.attributes[a];puts i}'
0894デフォルトの名無しさん
2006/07/22(土) 13:04:28なんでもかんでも302を返してリダイレクトするインフォシークのアホ仕様の被害者さんですな。
net/httpでアクセスしてればもうちょっと早くに異変に気づけたと思うんだけども。
open-uriはリダイレクトでも無言で辿って別のページを取り込んでしまうので注意(抑制法はある?)。
def check(server,path)
Net::HTTP.start(server, 80){ |http|
response=http.get(path)
puts "net/http"
puts "response.message: #{response.message}"
puts "title: #{response.body.scan(/<title>.+?<\/title>/)}"
}
html=open("http://#{server}#{path}").read #2chブラウザでは"に見える
puts "open-uri"
puts "title: #{html.scan(/<title>.+?<\/title>/)}"
end
check('money.www.infoseek.co.jp','/MnJbn/jbnindex/?st=41') # 正しいURL
check('money.www.infoseek.co.jp','//MnJbn/jbnindex/?st=41')# 誤りなURL
結果:
net/http
response.message: OK
title: <title>ニュース 一覧 - Infoseek マネー</title>
open-uri
title: <title>ニュース 一覧 - Infoseek マネー</title>
net/http
response.message: Moved Temporarily
title:
open-uri
title: <title>株価 外為 信用情報 - Infoseek マネー</title>
0895デフォルトの名無しさん
2006/07/22(土) 13:21:27302の移動先に自動でアクセスするopen-uriの挙動は正当なもんだと思うぞ
0896デフォルトの名無しさん
2006/07/23(日) 16:58:00h=Hash.new({})
が正解?
0897デフォルトの名無しさん
2006/07/23(日) 18:20:210898デフォルトの名無しさん
2006/07/23(日) 18:22:07漏れは
h = Hash.new
h['hoge'] = fuga
で使ってるけど
0899デフォルトの名無しさん
2006/07/23(日) 19:22:03ハッシュのハッシュを使うにしても
該当のキーが存在しない場合にも空ハッシュを返したいならそれで正解
nilを返されると困る場合やnil判定すると処理がややっこになる場合か
個人的にはそういう理由がなければデフォルトのまま生成して
素直にnil返して貰った方が気が楽かなぁ
0900デフォルトの名無しさん
2006/07/23(日) 19:43:04不正解、かも。用途によるが。
h = Hash.new({})
h1 = h["ahaha"]
h1["hoge"] = "fuga"
p h["a"]["hoge"] #=> "fuga"
h = Hash.new() {|k, k| h[k] = defvalue } とか h = Hash.new() { raise } あたりの
方が当り障りがないことが多いと思う。
0901デフォルトの名無しさん
2006/07/23(日) 21:39:31ブロック形式で指定した方が良いかもね
0902デフォルトの名無しさん
2006/07/23(日) 21:40:510903デフォルトの名無しさん
2006/07/23(日) 22:31:450904デフォルトの名無しさん
2006/07/23(日) 22:40:22>elseifじゃなくてelsifにヤラレタ。
昔の英語の ruby ml で、何度も見た。
0905896
2006/07/23(日) 22:46:58h={}
while なにか
h[それか]={} if h[それか]==nil ※
h[それか][これか]=あれか
end
hashのhashを作るとき、※の処理をするのが冗長な気がしたので、
h=Hash.new({})
と書いてみたら ※ の行を削除しても
とりあえず動いたんですが、
この書き方でいいのかな〜。
ハッシュのハッシュの初期化にはなんか別の書き方があるのかな〜
と思って質問しました。
0906デフォルトの名無しさん
2006/07/23(日) 23:19:11h = Hash.new({})
h[1][2] = 3
p h[4] #=> {2 => 3} が表示されるけど、{} であって欲しいでしょ?
あと、関係ないけどキーが登録されているかどうかは
Hash#[] == nil じゃなくて、Hash#key?、 Hash#include? あたりで調べた方がいい。
0907デフォルトの名無しさん
2006/07/24(月) 16:22:18> そういう目的なら、Hash.new({}) よりも Hash.new(){ Hash.new } がよいね。
それ違うくない?
irb> hoge = Hash.new{Hash.new}
=> {}
irb> hoge[1][2] = 3
=> 3
irb> hoge[4]
=> {}
irb> hoge[1]
=> {}
↑こうなるよ?
↓こっちが正解だと思うけど
irb> fuga = Hash.new{|h,k| h[k] = {}}
=> {}
irb> fuga[1][2] = 3
=> 3
irb> fuga[4]
=> {}
irb> fuga[1]
=> {2=>3}
0908りぃか
2006/07/24(月) 18:40:51学校の課題で三角形の塗りつぶしをやっているのですが、エラーが消えなくて困っています。
エラーはこんな感じです。
「triangle.rb:219:in '-': nil can't be coerced into Fixnum (TypeError)」
使用環境はruby 1.6.7 (2002-03-19) [i386-linux]です。
プログラミング初心者です、どうかよろしくおねがいします。
0909デフォルトの名無しさん
2006/07/24(月) 18:47:33引かれる数にあたる変数か何かの値がnilなので
引き算を実行できないぞバカなんとかしろバカ
だそうな
0910デフォルトの名無しさん
2006/07/24(月) 18:51:31エラーの前後のソース書け
長くなるようなら↓へ池
RUBYの宿題教えてください。
http://pc8.2ch.net/test/read.cgi/tech/1106572657/
0911デフォルトの名無しさん
2006/07/24(月) 19:01:520912りぃか
2006/07/24(月) 19:02:08v = vertices()
x0 = v[0][0]
x1 = v[1][0]
x2 = v[2][0]
それからxの大小関係で場合分けをして、小さい順にax,bx,cxってしました。
問題の219行目が
my = (ay-cy)*(fx-cy)/(ax-cx)+cy
です。
0913りぃか
2006/07/24(月) 20:24:16あと909さんありがとうございました。
ayやcxに数字入れてみたら、ちゃんと三角形が表示されました。
なぜaxとかのままだとnilになってしまうのか、教えていただきたいです。
よろしくおねがいします。
0914デフォルトの名無しさん
2006/07/24(月) 20:31:500915デフォルトの名無しさん
2006/07/24(月) 20:49:210916デフォルトの名無しさん
2006/07/24(月) 21:00:200917デフォルトの名無しさん
2006/07/24(月) 21:35:49途中飛ばされると分からん
0918デフォルトの名無しさん
2006/07/24(月) 21:51:310919デフォルトの名無しさん
2006/07/24(月) 21:54:010920デフォルトの名無しさん
2006/07/24(月) 23:02:19if n ??? 3 then
print n, "は", 3, "の倍数ではありません。\n"
0921デフォルトの名無しさん
2006/07/24(月) 23:05:120922デフォルトの名無しさん
2006/07/24(月) 23:07:110923デフォルトの名無しさん
2006/07/25(火) 00:07:430924りぃか
2006/07/25(火) 03:02:36ご指摘ごもっともです。ありがとうございます。
長くなりますが、書いてみます。邪魔だったらごめんなさい。
セミコロンを使ってる部分は、本当は改行してます。
require 'gfc'; require 'line_utils'; class Gfc; class Triangle
def fill(g,c)
v = vertices() # v = [[x0,y0],[x1,y1],[x2,y2]]; color=c[0]
g.draw_line(v[0][0],v[0][1],v[1][0],v[1][1],color)
g.draw_line(v[1][0],v[1][1],v[2][0],v[2][1],color)
g.draw_line(v[2][0],v[2][1],v[0][0],v[0][1],color)
x0 = v[0][0]; x1 = v[1][0]; x2 = v[2][0]; y0 = v[0][1]; y1 = v[1][1]; y2 = v[2][1]
if x0 < x1; if x0 < x2; ax = x0; ay = x0; if x1 < x2; bx = x1; by = y1; cx = x2; cy = y2
(上と同様に、if,elseを使って場合分け、省略)end
## ax < bx < cx となるようにした
fx = ax
## ここから下は,なぜかaxとかがnilになる.
fx.upto(cx) do |x|
my = (ay-cy)*(fx-cx)/(ax-cx)+cy
if fx < bx; ny = (ay-by)*(fx-bx)/(ax-bx)+by
else; ny = (by-cy)*(fx-cx)/(bx-cx)+cy; end
g.draw_vline(my,ny,x,color)
fx = fx + 1
end; end; end; end
g=Gfc.new(300,300,Gfc::COLOR_COLOR); t=Gfc::Triangle.new [[120,60],[50,190],[220,130]]
g.fill_figure(t,[0,0,255]); g.view
draw_lineというのは自分で定義したもので、線分を書くプログラムです。
何故axなどがnilになってしまうのでしょうか??(>_<)
0925デフォルトの名無しさん
2006/07/25(火) 05:53:56RUBYの宿題教えてください。
http://pc8.2ch.net/test/read.cgi/tech/1106572657/
0926デフォルトの名無しさん
2006/07/25(火) 14:09:03どうやってそうしたんだよ。そこがバグってるに決まってるだろ。
0927デフォルトの名無しさん
2006/07/25(火) 14:13:15文字列クラスのメモリ領域を開放するのって↓のやり方で正しいですか?
str = ""
それとクラス関数で
class IniParam
def get_string( key, default )
ret = default
f = open("myprog.ini", 'r')
ini = f.read
f.close
ini.scan(/^#{key} *=.*/){ |s|
ret = s.gsub(/^#{key} *= *(.*)/, '\1')
}
ret
end
end
上記のget_string関数を呼び出した後で
ローカルで使った ini のメモリ領域って開放されますか?
0928デフォルトの名無しさん
2006/07/25(火) 14:57:140929デフォルトの名無しさん
2006/07/25(火) 15:01:27>文字列クラスのメモリ領域を開放するのって↓のやり方で正しいですか?
いいえ。その後解放されるかもしれないしされないかもしれません。
あと、どうでもいいけど、普通は str = nil とするかと思います。
>ローカルで使った ini のメモリ領域って開放されますか?
いいえ。その後解放されるかもしれないしされないかもしれません。
どうでもいいけど、「開放」じゃなくて「解放」な。
0930デフォルトの名無しさん
2006/07/25(火) 15:38:06unless /hoge/ =~ でやるのが普通なんでしょうか?
0931デフォルトの名無しさん
2006/07/25(火) 15:40:430932デフォルトの名無しさん
2006/07/25(火) 15:41:38解ってからかってる方に1るびま
0933デフォルトの名無しさん
2006/07/25(火) 15:44:52Rubyのメモリの解放は、GCが勝手にやってくれるので
あまり気にしなくてもいい
どうしても意図的にやりたければ
str = nil
GC.start
でおk
>>930
一応、unlessの方が一般的だと思われる
0934デフォルトの名無しさん
2006/07/25(火) 16:15:53>Rubyのメモリの解放は、GCが勝手にやってくれる
だから、解放されるかもしれないしされないかも(ry
0935デフォルトの名無しさん
2006/07/25(火) 16:31:27ども
そんなの初めて知りました
0936デフォルトの名無しさん
2006/07/25(火) 17:09:140937デフォルトの名無しさん
2006/07/25(火) 18:03:030938デフォルトの名無しさん
2006/07/25(火) 18:04:240939デフォルトの名無しさん
2006/07/25(火) 18:06:210941デフォルトの名無しさん
2006/07/25(火) 19:05:470942927
2006/07/25(火) 19:44:56レスありがとうございます。いろいろ考えましたが、ガベコレに任せることにします。
別件でまた質問で恐縮なのですが
sec_files.each { |s|
dist_files.each { |t|
break if /^#{s.file}$/ == t.file
}
disp_string "削除:[#{s.id}] #{s.file}" if $~ == nil
}
↑の処理するときに、一度も内側のイテレータ通らなかった時って、
$~ が不定だと思うんですが、$~ = nil って勝手に代入しても大丈夫でしょうか?
それとも何かほかの良い方法がありますでしょうか?
0943デフォルトの名無しさん
2006/07/25(火) 19:52:52いまのところ、不定じゃなくてnilになると思うが、変わるかもしれないし、
普通に一時変数を使ったらどうだ?
0944デフォルトの名無しさん
2006/07/25(火) 20:00:04は、
unless $~
と書く方がいいよ。
0945デフォルトの名無しさん
2006/07/25(火) 21:50:41意味違ってるじゃん。 unless肯定派にしても unless $~.nil? だろ。
0946デフォルトの名無しさん
2006/07/25(火) 22:30:08dist_filesに一致しないものについてdisp_stringを呼びたいんなら、any?を
使うほうがわかりやすいと思う。
あと、RegexpとStringでマッチさせたいなら==じゃなくて=~だな。
pat = /^#{s.file}$/
unless dist_files.any? {|t| pat =~ t.file}
disp_string "削除:[#{s.id}] #{s.file}"
end
0947デフォルトの名無しさん
2006/07/25(火) 23:26:08そもそも$~.nil?にする必要がないもの
値がfalseである可能性があるならともかく
そうでなければわざわざnil?を使う必要はない
0948デフォルトの名無しさん
2006/07/26(水) 00:06:16可読性って知ってるか?
0949デフォルトの名無しさん
2006/07/26(水) 01:08:14どっちが自然に感じるかは人による
俺はnil?付けない派だなー
0950デフォルトの名無しさん
2006/07/26(水) 01:38:050951デフォルトの名無しさん
2006/07/26(水) 01:56:330952デフォルトの名無しさん
2006/07/26(水) 02:00:14if厨ってなんだ
0953デフォルトの名無しさん
2006/07/26(水) 02:22:31実用上は大差ないだけに
0954デフォルトの名無しさん
2006/07/26(水) 09:19:320955デフォルトの名無しさん
2006/07/26(水) 10:16:26GDは2001年に開発がストップしているみたいなのですが。
0956デフォルトの名無しさん
2006/07/26(水) 10:36:20そもそも、rubyでGUIを作るか? 他にツールはいくらでもあるが、
まあ、ruby/tkか、ruby/Gtkだろ。
0957デフォルトの名無しさん
2006/07/26(水) 11:40:20マジか
0958デフォルトの名無しさん
2006/07/26(水) 13:28:420959デフォルトの名無しさん
2006/07/26(水) 14:02:50RMagickとかそんな答えを期待しているような気がするが。
imlibのラッパーがあるならそれでもいいかも。
0960デフォルトの名無しさん
2006/07/26(水) 14:58:130961デフォルトの名無しさん
2006/07/26(水) 14:59:16cygwinのbashで、rake.batは入るんですが、rakeが(スクリプト)が入ってくれません。
rakeを入れる方法はないですか?
0962デフォルトの名無しさん
2006/07/26(水) 18:11:22>cygwinのbashで、rake.batは入るんですが、
意味がわからん。
0963デフォルトの名無しさん
2006/07/26(水) 19:20:310964デフォルトの名無しさん
2006/07/26(水) 20:30:23cygwinのbashから実行したいからrakeスクリプトそのものが欲しいんだけど、
ということか。
で、意味はわかったけど、解決方法は知らん。
誰か詳しい人、よろ。
0965デフォルトの名無しさん
2006/07/26(水) 20:54:580966デフォルトの名無しさん
2006/07/26(水) 22:40:36rake.batが、rakeで実行できればいいんだけどねー
って、alias作ればいいのか orz
0967デフォルトの名無しさん
2006/07/27(木) 01:18:44バーチャルPCも無料公開されてるし。
0969デフォルトの名無しさん
2006/07/27(木) 13:17:59ありがとうございます。
参考にします。
0970デフォルトの名無しさん
2006/07/27(木) 15:24:000971デフォルトの名無しさん
2006/07/27(木) 18:36:31完全ではないのかな?
ruby -Ke -e 'p(/[^あ]い/ =~ "あい")'
がマッチしないのに
ruby -Ke -e 'p(/[^あ]い/i =~ "あい")'
がマッチしてしまう。
0972デフォルトの名無しさん
2006/07/27(木) 22:05:01バージョンは?
0973デフォルトの名無しさん
2006/07/28(金) 03:09:50それ()1.8系列のバグ。
何ヶ月か前の ruby-list で報告されてたはず。
1.8.5のpreviewか。1.8.4でもstable-snapshotなら多分おk
0974デフォルトの名無しさん
2006/07/28(金) 06:40:11正規表現機能にバグがあるのかよ。
やっぱ個人が開発してるフリーソフトは恐くて業務には使えんなあ…
0975デフォルトの名無しさん
2006/07/28(金) 07:17:34はい、次の方〜
0976デフォルトの名無しさん
2006/07/28(金) 07:21:32ビジネスではコスト意識が出てくるから、繊細な作業ってカットされる。
針の穴に糸を通すような作業は、時間を浪費できるフリーソフトならではのものだよ。
なお、漢字を100%きっちりサポートする正規表現エンジンはかなり少数派。
(だからRubyの正規表現エンジンは次世代で交代する)
この辺り、世間的に認知されてないから、どこもサポートが悪いの。
0977デフォルトの名無しさん
2006/07/28(金) 10:43:450978971
2006/07/28(金) 11:32:16ありがとう。バグか制限かが知りたかったんです。
それでプログラミングの方針が変わりますから。
バージョンは 1.8.4 リリース版です。
0979デフォルトの名無しさん
2006/07/28(金) 13:52:130980デフォルトの名無しさん
2006/07/28(金) 13:56:40IGNORECASEの有無によって日本語文字の正規表現の挙動が変化すること自体
「ぜってーありえねー」と思うんだがどうか
0981デフォルトの名無しさん
2006/07/28(金) 14:05:45「ありえねー」と考えるほうがありえねー。
ありえるだろ。
0982デフォルトの名無しさん
2006/07/28(金) 14:07:040983デフォルトの名無しさん
2006/07/28(金) 14:17:300984デフォルトの名無しさん
2006/07/28(金) 14:22:38しても聞けないし、前聞けたのまで出来なくなっちゃったんですけどどうしたらいいですか?
0985デフォルトの名無しさん
2006/07/28(金) 14:22:48何を言いたいのか良く分からんが、だからこそ修正された。
0986デフォルトの名無しさん
2006/07/28(金) 14:49:38小学生大嫌い板、あるいは、日本語のお勉強板に行け。
0987デフォルトの名無しさん
2006/07/28(金) 15:10:38drubyをWindowsで動かそうとして、ttp://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-list/37530?37432-39039
から始まるスレッドで
# dhello.rb
require 'drb/drb'
class World
def hello
'Hello, World.'
end
end
uri = ARGV.shift
DRb.start_service(uri, World.new)
puts DRb.uri
puts '[return] to exit'
gets
というサンプルがあって、Windowsで使う場合は、
getsはスレッド全部をとめるから、
Thread.list.each do |t|
t.join
end
にしておけって書いてあるのですが、実行すると確かにそれでうまくはいくのですが、
CPUパワーが100%になってしまいます。もちろん全力でループしているせいなのですが、
これってなんとかならないんですか?CPUを浪費せずに待ちたいです。
0988デフォルトの名無しさん
2006/07/28(金) 15:17:470989デフォルトの名無しさん
2006/07/28(金) 16:42:45私はJavaやPerlも一通り入門程度の本で学んだだけだけど、
就職の時にRubyが出来たほうが、他と違う言語が出来るという
事でアピールになるかなと思って、しっかり勉強してみようかな
と思ってます。止めた方がいいですか?
0990デフォルトの名無しさん
2006/07/28(金) 16:50:13そもそも入門書読んだ程度で「できる」なんて言うな。
0991デフォルトの名無しさん
2006/07/28(金) 16:51:13>>989
Rubyを使っていて他人から評価されることはまず無い
あとは好きにしろ
誰か新スレ立てて
0992デフォルトの名無しさん
2006/07/28(金) 17:12:090993デフォルトの名無しさん
2006/07/28(金) 17:12:430994デフォルトの名無しさん
2006/07/28(金) 17:27:57sleepすると、スレッド全部がsleepするから使えない。
だから逃げ道としてwhileで回しているわけだ。
んで、やり方継続募集中。
0995デフォルトの名無しさん
2006/07/28(金) 17:28:11だれがうまいものを書けと(ry
0996デフォルトの名無しさん
2006/07/28(金) 17:34:20他の部分は好きな人が適当に書くってことで
0997デフォルトの名無しさん
2006/07/28(金) 17:40:56そういう動機ならやめとけ
あと馬鹿にする輩が多いのは
PerlでもJavaでもPHPでもPythonでもかなりいるから
Rubyに限った話ではない
0998デフォルトの名無しさん
2006/07/28(金) 17:53:59テリトリーを侵されたりするのを恐れる小心者。
まともに使いこなしてる香具師は馬鹿にしたりはしないから。
0999デフォルトの名無しさん
2006/07/28(金) 18:10:32http://pc8.2ch.net/test/read.cgi/tech/1154077799/
1000デフォルトの名無しさん
2006/07/28(金) 18:11:26GJ!
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。