Ruby初心者質問スレPart3
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2005/09/02(金) 00:05:31Ruby Home Page
http://www.ruby-lang.org/ja/
前スレ
Ruby初心者質問スレPart1
http://pc5.2ch.net/test/read.cgi/tech/1100534824/
本スレ
Rubyについて Part 14
http://pc5.2ch.net/test/read.cgi/tech/1103997158/
0002デフォルトの名無しさん
2005/09/02(金) 00:08:39Ruby初心者質問スレPart2
http://pc8.2ch.net/test/read.cgi/tech/1107799347/
= 関連スレ
: 【Ruby】RubyでCGI
http://pc5.2ch.net/test/read.cgi/php/988948655/
: 【最高言語】 Rubyist Magazine創刊 【ルビま!】
http://pc5.2ch.net/test/read.cgi/tech/1094825807/
= 関連スレ?
: RUBYの宿題教えてください。
http://pc5.2ch.net/test/read.cgi/tech/1106572657/
= 関連リンク
: リファレンス
http://www.ruby-lang.org/ja/man/
: Ruby Weekly News @ Ruby Garden
http://www.rubygarden.org/rurl/html/
: ruby-cvs
http://rrr.jin.gr.jp/rwiki?cmd=view;name=ruby-cvs
: Ruby hotlinks 五月雨版
http://rrr.jin.gr.jp/~znz/samidare/
: 日本Rubyの会
http://jp.rubyist.net/
: Rubyist Magazine
http://jp.rubyist.net/magazine/
: <rubyXML/>
http://www.rubyxml.com/
: Matzにっき
http://www.rubyist.net/~matz/
0003デフォルトの名無しさん
2005/09/02(金) 00:13:480004デフォルトの名無しさん
2005/09/02(金) 12:26:49* pc5 -> pc8
* rrrのrwikiはなくなってる。
0005デフォルトの名無しさん
2005/09/02(金) 15:29:19http://pc8.2ch.net/test/read.cgi/php/1118663500/
>>4
RubyでCGI も亡くなってそれなりに経ってるな
0006デフォルトの名無しさん
2005/09/02(金) 22:10:38DicFile = "filter.dic"
@dic = Hash.new
def readDic
File.foreach(DicFile) do |line|
next if /^\s*$/ =~ line
line = line.chomp!
s1, s2 = line.split(/\t+/)
strTo = s2.scan(/./).join(Delimiter) << Delimiter
@dic[Regexp.new(s1, false)] = strTo
end
end
readDic
def textfilter(line)
@dic.each{|k, v| line.gsub!(k, v)}
puts line.gsub(/#{Delimiter}/o, "")
end
while ARGV[0] =~ /^-/
ARGV.shift
end
ARGF.each{|line| textfilter(line)}
変換対象文字を空文字へ変換する場合どうしたらいいんでしょうか。
これは「Rubyで極める正規表現」p.98、大阪弁変換テキストフィルターを多少いじったものです(使用目的は普通のテキスト変換)
読み込み辞書filter.dicは 変換対象文字の正規表現<Tab>変換文字 という書式になっています。
あいうえお<Tab>"" としても 「あいうえお」が「""」に変わるだけなので・・・ソースを変更すべきか、空文字になるようなものを辞書に書くのか?
0007デフォルトの名無しさん
2005/09/03(土) 01:00:16にはnilが代入される。
ので、 readDic 中の s1, s2 に代入した直後に s2 = s2.to_s を加えること
で、 s2 が nil の場合に空文字列にする(普通の文字列の場合は変化はない)。
しかし、実作業を知らずに書くのだが、ふつうこの程度の作業なら、
filter.dic を容易するほど一般的な仕組みにしないで、その都度 ruby コー
ドを書き捨てる気もする(ワンライナーとかで)。
0008デフォルトの名無しさん
2005/09/03(土) 02:44:12本文を書く際、< から始まる行は <p></p> で括られません。
HTML タグの場合はこれでいいんですが、
プラグインで <%= a 等と書き始める場合に困ってしまいます。
今は <p><%= a 等と書くようにしているんですが、
プログラムのどこかを変更すれば私の問題は解決できるんでしょうか?
0009デフォルトの名無しさん
2005/09/03(土) 11:47:14詳しく説明してるサイトはありませんか?
0010デフォルトの名無しさん
2005/09/03(土) 13:16:26プラグインの方を直しときゃいいんじゃないの。
0011デフォルトの名無しさん
2005/09/03(土) 14:40:06先頭に空白を入れればいいんじゃねーの?
0012デフォルトの名無しさん
2005/09/03(土) 19:36:32どれくらい詳しく教えて欲しいの?
http://www.ruby-lang.org/ja/man/?cmd=view;name=%CA%D1%BF%F4%A4%C8%C4%EA%BF%F4#a.a5.ed.a1.bc.a5.ab.a5.eb.ca.d1.bf.f4
0013デフォルトの名無しさん
2005/09/03(土) 20:24:37>ローカル変数のスコープは、宣言した位置からその変数が宣言されたブロック、
>メソッド定義、またはクラス/モジュール定義の終りまでです。
ここでブロックというのが具体的に何を指すのかが分かりません。
とりあえず
{
から
}
まではブロックのようですが、
他にはブロックは無いのでしょうか?
例えば
if x
end
のxの次の行からendまではブロックにならないのかとか、
自分で単にスコープを制限するためのブロックを作りたい時は
どうすればいいのかとかが分かりません。
0014デフォルトの名無しさん
2005/09/03(土) 20:45:16[1, 2, 3].each do |i|
# ブロック内
end
[1, 2, 3].each{ |i|
# ブロック内
}
スコープを制限するためにブロックを作るというのが、
何のためにするのかよく分らないな。
0015デフォルトの名無しさん
2005/09/03(土) 23:33:32たぶんさ、
x = 'foo'
my_scope{
x = 'bar'
}
puts x #=> 'foo' になって欲しい(けど、'bar' になる)
ってことだよね。
うーん、Ruby ではそういう場合は、別メソッドにするというのが解なのでは。
メソッドはそれぞれにスコープを持つから。
def my_method
x = 'bar'
end
x = 'foo'
my_method
puts x #=> 'foo'
0016デフォルトの名無しさん
2005/09/04(日) 00:03:09もっとスマートな方法がありそうな・・・
a = [0,0,0]
b = [0..5]
0.upto(5) do |i|
b[i] = [ a.dup, a.dup, a.dup, a.dup, a.dup, a.dup, a.dup ]
end
arr = [ b[0].dup, b[1].dup, b[2].dup, b[3].dup, b[4].dup, b[5].dup ]
0017デフォルトの名無しさん
2005/09/04(日) 00:23:01数値計算なら NArray を使うのが吉かと。
0018デフォルトの名無しさん
2005/09/04(日) 00:32:03サンクス。
数値計算でないのでこれでいいです。
0019デフォルトの名無しさん
2005/09/04(日) 00:53:40希望どうりの動作になりました。ありがとうございます。
0020デフォルトの名無しさん
2005/09/04(日) 03:59:37どなたかインターネットからテキストファイル以外のファイルをダウンロードして保存するサンプルコードか、サンプルコードへのリンクを貼り付けてもらえますか?
0021デフォルトの名無しさん
2005/09/04(日) 05:30:44以下ので画像は取得できた。テキストと同じソースだけど。"wb" くらいか?
リファレンスマニュアルの socket の項目など、関係ありそなとこも読んだら良いかと。
require 'net/http'
Net::HTTP.version_1_2
host = "www.ruby-lang.org"
directory = "/rdf.png"
get_file = "./rdf.png"
Net::HTTP.start(host, 80) do |http|
response = http.get(directory)
File.open(get_file, "wb") { |f| f.print response.body }
end
0022デフォルトの名無しさん
2005/09/04(日) 09:54:42require 'open-uri'
require 'cgi'
url = URI.parse(ARGV.shift)
filename = CGI.escape(url.to_s)
File.open(filename, 'wb'){|f| f.write(open(url).read) }
0023デフォルトの名無しさん
2005/09/04(日) 14:04:49>>22
ありがとうございました、両方ともうまくいきました。
> リファレンスマニュアルの socket の項目など、関係ありそなとこも読んだら良いかと。
そうですね、ドキュメントが読めるようにします。
0024デフォルトの名無しさん
2005/09/05(月) 23:07:41ruby-{list,dev}をsubscribeしたときの確認メールのサンプルにあったので気になりました。
extはさくらたんだったのですが。
0025デフォルトの名無しさん
2005/09/05(月) 23:37:06Matzご本人だとしたらずいぶん気負ったもんだと思ったが
新約のルカはlukeだなorz ちょっと暗黒面に堕ちてくる
0026デフォルトの名無しさん
2005/09/06(火) 08:32:190027デフォルトの名無しさん
2005/09/06(火) 14:39:23何処かに載ってませんでしょうか?
0028デフォルトの名無しさん
2005/09/06(火) 15:32:26IIS6かどうかはわからないけど、RubyをIISで動かす方法らしい。
http://gpm.jp/tito/memo/iis-config/
あとは「Ruby IIS」でググってみてください。
0029デフォルトの名無しさん
2005/09/06(火) 17:44:47> http://gpm.jp/tito/memo/iis-config/
IIS5.1では成功したのですが、IIS6では無理でした。
> あとは「Ruby IIS」でググってみてください。
やってみましたが、皆さんWindows200 or WindowsXPのようで。
0030デフォルトの名無しさん
2005/09/06(火) 18:45:25ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=14209&forum=6&5
0031デフォルトの名無しさん
2005/09/06(火) 18:48:51http://homepages.ihug.com.au/~naseby/13.html
0032デフォルトの名無しさん
2005/09/07(水) 00:21:35Rubyだけでそのようなことはできますか?
もしできるのならば、サンプルコードかなにかあれば教えてください。
0033デフォルトの名無しさん
2005/09/07(水) 04:43:460035デフォルトの名無しさん
2005/09/07(水) 12:58:25Eclipseの RDTというのが気になるのですが
使ってことがある方、使い心地はどうでしょうか?
0036デフォルトの名無しさん
2005/09/07(水) 13:42:070037デフォルトの名無しさん
2005/09/07(水) 14:09:420038デフォルトの名無しさん
2005/09/07(水) 21:05:140039デフォルトの名無しさん
2005/09/07(水) 21:19:59>>38
自分の好きなエディタで書いてる人が大多数じゃないかな。
RDE はどれくらい使われているのだろうか。
0040デフォルトの名無しさん
2005/09/07(水) 21:25:33結局自分も知りたいのね>39タン
0041デフォルトの名無しさん
2005/09/07(水) 21:31:180042デフォルトの名無しさん
2005/09/08(木) 03:29:420043デフォルトの名無しさん
2005/09/08(木) 04:56:53遅いね。
sysreadとか使うと少しは速いんだろか?
0044デフォルトの名無しさん
2005/09/08(木) 06:24:06IDE書ける日本人がいない
0045デフォルトの名無しさん
2005/09/08(木) 06:29:10Rubyが制御する箇所を減らすように書けばなんとかなるんじゃないかな。
RIFFヘッダが44バイトとかだからその辺だけ見るようにして、
あとはRuby管轄のメモリに読まずに全部ファイル操作の外部関数に渡す風にすれば。
0046デフォルトの名無しさん
2005/09/08(木) 13:12:39作者は標準のGUIライブラリというものを制定する気がないそうだ
0047デフォルトの名無しさん
2005/09/09(金) 13:18:22で書かれている、
./configure.rb --with-apxs=/usr/local/apache/bin/apxs
の部分でつまずいています。
環境は
・apache1.3
・ruby 1.8.2
・turbolinux8 server
です。
/usr/local/apache/bin/apxってとこは1.3ではどう書けば良いんでしょうか?
よろしくお願いします。
0048デフォルトの名無しさん
2005/09/09(金) 13:19:49ぁ 忘れてましたけど、mod_ruby1.2.4のインストールについての質問です。
0049デフォルトの名無しさん
2005/09/09(金) 14:23:06/usr/local/bin/apx とか /usr/bin/apx とか 〜sbin とかは試した?
locate apx してみた?
0050デフォルトの名無しさん
2005/09/09(金) 15:38:16/usr/sbin/apxって、気付いてやったんですけど、
たぶんapacheのバージョンが1.3.3以上ないとだめっぽいです。
自分のはapache-1.3.26-7です。
0051デフォルトの名無しさん
2005/09/09(金) 16:58:32005232
2005/09/12(月) 20:20:14自分で作ってみたんですが基本がいまいちわかってないのでだめだめです。
i = 2
File.open("test-1.wav", "ab"){|wfile|
File.open("test-#{i}.wav", "rb"){|rfile|
while data = rfile.gets
wfile << data
end
}
i += 1
}
(´・ω・`)?ムズカシス
0053デフォルトの名無しさん
2005/09/12(月) 20:39:30ある意味、マジレスするとまず i=2 ってのがよくないな。
そういう定数値は、一旦定数として宣言してから参照したほうがよい。
あと i += 1 のインクリメントはどこで効いてくるのか。
まずは制御構造を勉強してみたほうがいいよ。
0054デフォルトの名無しさん
2005/09/12(月) 22:13:35> File.open("test-#{i}.wav", "rb"){|rfile|
> while data = rfile.gets
ギャグでいってるのか? (AAry
0055デフォルトの名無しさん
2005/09/12(月) 22:21:45http://www.wotsit.org/
0056デフォルトの名無しさん
2005/09/12(月) 22:57:33そこを指摘するのはまだ時期尚早というものだろう。
0057デフォルトの名無しさん
2005/09/12(月) 22:58:42死んだほうがいい
0058デフォルトの名無しさん
2005/09/13(火) 00:30:33File.open("test-#{i}.wav", "rb"){|rfile|
#{i}これで1つずつ増えていくだろうと?
>>54
マジなんですよ
>>55
(´・ω・`)?ムズカシス
>>56
そうですね、まだそれまでの知識はありませんし
>>57
ヽ( `Д´)ノそんなことは言っちゃだめぇ
0059デフォルトの名無しさん
2005/09/13(火) 00:46:28とりあえず
wavファイル自体を順に継ぎ足してもただのでっかいゴミファイルにしかならない
ということが理解できるまでぐぐるなりして調べた方がよろし
# ちうか「イテレータ」いう名前なのに繰り返すとは限らないというのは
# 下手にイテレータという言葉を知ってると却って混乱するのだろうかと言ってみるテスト
# (いやさんざガイシュツなのは分かってるつもりなのでカンベソ)
006053
2005/09/13(火) 00:53:51>#{i}これで1つずつ増えていくだろうと?
なんでそう思ったの? 「なんとなく」や思いこみじゃだめだよ。
一つ一つ細かい部品に還元して考えていくのが大切だ。
初心者スレなんだから、くじけずがんがれ。
Omotiとかいうガキよりは将来性があるだろう。
>>59
君もそういう根も葉もないことを言わない。w
0061デフォルトの名無しさん
2005/09/13(火) 00:55:43まぁ、何の話か全然読んで発言してるんだが。
0062デフォルトの名無しさん
2005/09/13(火) 02:04:14>>59 のどこらへんが根も葉もないの?
0063デフォルトの名無しさん
2005/09/13(火) 02:23:51ブロック付きメソッド?
0064デフォルトの名無しさん
2005/09/13(火) 03:23:01「ブロック付きメソッド呼び出し」だね。「イテレータ」と呼んでいたのは古の昔。
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=%A5%E1%A5%BD%A5%C3%A5%C9%B8%C6%A4%D3%BD%D0%A4%B7#a.a5.d6.a5.ed.a5.c3.a5.af.c9.d5.a4.ad.a5.e1.a5.bd.a5.c3.a5.c9.b8.c6.a4.d3.bd.d0.a4.b7
0065デフォルトの名無しさん
2005/09/13(火) 14:06:40test-1.wavからtest10.wavまでを結合するだけならこう。
max = 10
output_filename = "test.wav"
File.open(output_filename, "w") do |f|
i = 0
while i <= max
i += 1
filename = "test-#{i}.wav"
data = File.read(filename)
f.write(data)
end
end
ただし、wavファイルを単に結合しても正しいフォーマットであるかどうかは別。
>>53
無理して答えるな。初心者が混乱するだけだ。
0066デフォルトの名無しさん
2005/09/13(火) 15:06:24無理して答えるな。初心者が混乱するだけだ。
っていうのは冗談だけど、曲がりなりにも wav だと言ってて、プラットフォームが
Windows だと想定されるんだから、.binmode なり "b" なり付けてやってくれよ。
0067デフォルトの名無しさん
2005/09/13(火) 15:37:270068デフォルトの名無しさん
2005/09/13(火) 15:49:280069デフォルトの名無しさん
2005/09/13(火) 18:58:17(PythonではBitTorrentがいい、って意見。 http://funk.exblog.jp/2812342/)
曰く、「細かな内容はともかく、プログラムの構成(structure)がわかりやす
い。Pythonの言語としてのパワー、Bram Cohenのエレガントなコーディング。
最高のソフトウェアは、最高の教材になる可能性を感じる。」
0070デフォルトの名無しさん
2005/09/13(火) 21:04:36やっぱ、Rubyじゃないのかな。
0071デフォルトの名無しさん
2005/09/13(火) 21:36:27Ruby 本体。
0072デフォルトの名無しさん
2005/09/13(火) 22:42:290073デフォルトの名無しさん
2005/09/13(火) 22:43:30RDoc
理由:達人プログラマーが書いてるから。
0074デフォルトの名無しさん
2005/09/14(水) 11:52:03達人プログラマーつってもこんなもんか、ってことを学ぶいい素材
0075デフォルトの名無しさん
2005/09/14(水) 21:23:2769のレベルによっておすすめが違うんじゃないかな。
まあとりあえずRails読んどけば?マイナーな素材読んではずれだったら悲惨だけど、
メジャーならはずれても損はないだろ。
0076デフォルトの名無しさん
2005/09/14(水) 21:31:36とりあえずBitChannelすすめておく。
0077デフォルトの名無しさん
2005/09/15(木) 10:22:24Rubyは純粋なオブジェクト指向ということらしので、今のところこれを習おうと考えてます。
でも世間ではJavaの方が一般的なようので、Javaを習った方がいいのでしょうか?
自分的には仕事をする訳ではないので、お手軽なRubyでいいのではと思っています。
0078デフォルトの名無しさん
2005/09/15(木) 10:33:02じゃあ、Rubyで。
人に決めてもらうより、自分で決めなさい。
0079デフォルトの名無しさん
2005/09/15(木) 11:26:18大きなものを作りたいというなら Java の方が適してるかもしれないが、
直感的な使いやすさより理論優先しているらしい面があって、面倒が多いと思う。
あと、VM の起動とコンパイルがそれなりに遅いので、気軽さは薄れる。
Python という手もあるが、日本語の本がかなり少ないのが難点になるかもしれない。
0080デフォルトの名無しさん
2005/09/15(木) 12:35:16サンクス。
1000行程度のプログラムを考えているので、Rubyでいきます。
0081デフォルトの名無しさん
2005/09/15(木) 13:25:500082デフォルトの名無しさん
2005/09/15(木) 14:10:56でも、今日は日曜日じゃないよね?
0083デフォルトの名無しさん
2005/09/15(木) 14:19:350084デフォルトの名無しさん
2005/09/15(木) 14:28:29そんなに悪い指標でもないと思うけどな。
あぁそのくらいの規模ね、って大体想像できるじゃん。
他にもっとマシな評価基準にはどんなのがある?
0085デフォルトの名無しさん
2005/09/15(木) 14:43:16車輪の再開発をしようとしてるなら謝る。
0086デフォルトの名無しさん
2005/09/15(木) 14:50:010087デフォルトの名無しさん
2005/09/15(木) 14:57:030088デフォルトの名無しさん
2005/09/15(木) 15:42:45ワシが業務に使っている。
tDiary や BaseCamp でも使われている。
どのくらい著名なところで使われていれば気が済むの?
0089デフォルトの名無しさん
2005/09/15(木) 15:50:520090デフォルトの名無しさん
2005/09/15(木) 16:14:56使われてる部分もあるんじゃない?そのシステム開発の中で。
0091デフォルトの名無しさん
2005/09/15(木) 16:18:36その中で、あんたがこれまで使ったものを挙げてみて(2)
0093デフォルトの名無しさん
2005/09/15(木) 17:04:29>>90に(1)
Rubyの比較対象の言語なんだろうから(2)
0094デフォルトの名無しさん
2005/09/15(木) 17:04:59ごめん間違えた。
>>89に(1)
だった。
0095デフォルトの名無しさん
2005/09/15(木) 17:16:54Java、PL_SQL、Cshell
0096デフォルトの名無しさん
2005/09/15(木) 17:42:11オブジェクト指向プログラムの規模を測る指標については
「オブジェクト指向メトリクス」でググるといろいろ出てくるよ.
0097デフォルトの名無しさん
2005/09/15(木) 18:32:40あちこちのディレクトリにちらばった .rb ファイルと .rhtml ファイル
(つまりrailsなんですが)を一気に指定して
rgettextするのってどうすればいいんでしょうか?
cygwin版入れて **/*.{rb,rhtml} とかするしかないですか?
0098デフォルトの名無しさん
2005/09/15(木) 19:04:06mswin32版でまったく同じことができるっしょ。
0099デフォルトの名無しさん
2005/09/15(木) 19:16:28頭からできないと思いこんでいました。
これって、何のレベルで展開されてるんでしょう?
0100デフォルトの名無しさん
2005/09/15(木) 22:58:47*、**、?、[] などの処理は ruby インタプリタが内部的に解釈してくれてる。
ワイルドカードを展開しない腐ったシェルしかない環境用のサービス機能。
0101デフォルトの名無しさん
2005/09/15(木) 23:41:32ありがとうございます
0102デフォルトの名無しさん
2005/09/16(金) 00:44:55{,}はブレースの展開(brace expansion)つってglobbingとは別。
なぜかDir.globじゃやってるけど。
0103デフォルトの名無しさん
2005/09/17(土) 20:50:281.9だと展開するようになった。
0104デフォルトの名無しさん
2005/09/18(日) 01:07:28class Test < WEBrick::HTTPServlet::AbstractServlet
def initialize
ほげほげ
end
end
のようにするとエラーが出ます。WEBrickのソースを見ると、
initializeには引数が必要なようなのですが、
こういう場合にはどうするのが標準的なRubyでの書き方なのでしょうか?
この私の書いたWEBrickに合わせて、ダミーの引数をinitializeに渡すべきですか?
それとも何か別のテクニックがあるのでしょうか。
0105デフォルトの名無しさん
2005/09/18(日) 08:11:07何でも受け付ける(もとのメソッドの引数を気にしない)なら
class Test < WEBrick::HTTPServlet::AbstractServlet
def initialize(*args)
super
ほげほげ
end
end
とか。
*args で、どんな引数の数も全て受け付ける。
(引数を伴わない)super で、もとのメソッドを、その引数付きで最初に呼んでおく(きっと
サブクラスにも必要な処理をしているだろうから)。
ただ、もとのメソッドが、
def initialize(foo, bar, &block)
ふがふが
end
とか明示的にブロックも引数に取っていたら、
def initialize(*args, &block)
とかする必要があるかも。
0106デフォルトの名無しさん
2005/09/18(日) 11:06:40superはブロックは自動的に渡すのでいらない。
渡したくないときは&nilをつける。
0107デフォルトの名無しさん
2005/09/18(日) 19:14:320108デフォルトの名無しさん
2005/09/18(日) 19:44:000109デフォルトの名無しさん
2005/09/19(月) 08:45:26*argsのように指定してsuperすれば、後は勝手にやってくれるんですね。
ありがとうございました。
0110デフォルトの名無しさん
2005/09/19(月) 12:21:58http://www.ruby-lang.org/ja/man/?cmd=view;name=CGI
↑ここにあるけど、これって完全ですか?
htmlのbackgroundカラー変更の仕方が分からん…
cgi.body()に何か引数くれてやればいいんだと思ったんだけど、ダメみたい
cgi.rb見ても def body っていう記述が無いし
0111110
2005/09/19(月) 12:26:540112デフォルトの名無しさん
2005/09/20(火) 17:23:58規定の動作をしない、何が悪いんでしょうか?
とかそういう質問もOKですか?
0113デフォルトの名無しさん
2005/09/20(火) 17:29:38まずければ誘導するし。
0114デフォルトの名無しさん
2005/09/21(水) 01:45:520115デフォルトの名無しさん
2005/09/22(木) 18:29:50通信中に相手が落ちたとかをちゃんと区別したい場合には、
exec利用で自分でpipe操作とかしなくちゃいけないんでしょうか?
Open3もcommand not foundの場合は何も検知してくれないし。
0116デフォルトの名無しさん
2005/09/22(木) 19:25:370117デフォルトの名無しさん
2005/09/22(木) 20:16:09(irb):1: command not found: hogehoge
=> #<IO:0x402f2e80>
irb(main):002:0> io.read()
=> ""
irb(main):003:0> io.write('hoge')
Errno::EPIPE: Broken pipe
from (irb):3:in `write'
from (irb):3
こんな感じで、どの段階で問題があったのか切り分けれないです。
0118デフォルトの名無しさん
2005/09/22(木) 20:30:02IO::popen() の説明には
> パイプ、あるいは子プロセスの生成に失敗した場合は例外 Errno::EXXX が発生します。
って書いてるのにそうはなってないのかな?
0119デフォルトの名無しさん
2005/09/22(木) 21:40:530120デフォルトの名無しさん
2005/09/23(金) 01:06:050121デフォルトの名無しさん
2005/09/28(水) 10:09:29--------------------------
森林 シンリン 1
冊数 サッスウ 2
質問 シツモン 3
--------------------------
から、rand(熟語数)(⇒rand(3))っていうように乱数計算してレベルを算出し、レベルに対応した熟語を(です、等の接尾辞をつけて)HTML形式で表示させ、例えば、
-------------------------------------------------
問.次の傍線部の漢字の読みを答えなさい。
森林です。
----
------------
回答入力欄(Enterで入力完了) | |
------------
-------------------------------------------------
というように学習者に読み方をキーボードから打ち込ませて、Enterで入力完了したら
それをPC側で受け取り、辞書ファイルの読み方と照合してもしあっていれば1、間違っていれば0を、
profile.txtに書き込んで、最初に戻る。以上の流れを3分ほど繰り返すプログラム。
よろしくお願いしますm(__)m どうも初心者なためか、頭がこんがらがってしまいます。。
0122デフォルトの名無しさん
2005/09/28(水) 10:11:520123デフォルトの名無しさん
2005/09/28(水) 12:42:44できてるところだけでも出してみ。
0124デフォルトの名無しさん
2005/09/28(水) 16:23:531. 辞書の class を作れ。
2. ファイルを読み込んで、辞書のオブジェクトを生成するようにしろ。
3. その辞書オブジェクトを使って、問題を表示するようにしろ。
4. どの問題を出しているのか、次のセッションに引き継ぐようにしろ。
5. 次のセッションで、問題の特定、回答の判定、記録をするようにしろ。
6. 3分たってなかったら、3. に戻れるようにしろ。
フレームワークを上手く使えば、4. は気にしなくても良い。
0125デフォルトの名無しさん
2005/09/28(水) 16:57:32ヒントが質問者のレベルに全然合ってない予感。
まずはとりあえずちゃんと「回る」モデルを作るのも手。
難しく考えずに、できるだけシンプルに。
0126デフォルトの名無しさん
2005/09/30(金) 09:35:120127デフォルトの名無しさん
2005/09/30(金) 13:17:320128デフォルトの名無しさん
2005/09/30(金) 15:53:130129デフォルトの名無しさん
2005/09/30(金) 16:00:340130デフォルトの名無しさん
2005/10/01(土) 22:57:050131デフォルトの名無しさん
2005/10/02(日) 01:50:09やっぱりラムダ計算とか意識して設計されたの?
型なしMLって感じ。
型あったら安全性が保障されるけど、それほど保障しなくてもいい
プログラムならRubyは最強かも。。。
0132デフォルトの名無しさん
2005/10/02(日) 01:53:060133デフォルトの名無しさん
2005/10/02(日) 02:26:14そうなんじゃないか。オブジェクト指向言語だけでも Smalltalk やら JavaScript とか。
0134デフォルトの名無しさん
2005/10/02(日) 09:16:28そんなあなたに。
Rubyで関数プログラミング
http://sky.zero.ad.jp/~zaa54437/programming/ruby/
0135デフォルトの名無しさん
2005/10/02(日) 11:22:19>>131 じゃないが、面白いなコレ。
Haskell の説明サイトはサッパリだったが、なんとなく解ってきた。
頭の悪い素人な俺には、これくらいじゃないとついてけない。
0136デフォルトの名無しさん
2005/10/02(日) 15:25:25Rubyはオブジェクト指向な「手続き型」言語。
関数型言語では変数への「束縛」はあっても、副作用を伴う「代入」は(基本的には)ない。
Rubyは変数への代入をもろにつかって処理を行うから、関数型言語ではない。
lambda相当の機能を取り入れているから、関数型チックなプログラムはかけるが、だからといってRubyが関数型ということはない。
もちろんRubyで関数型チックなプログラムを書くのはおまえさんの自由。別にそれを否定するつもりはない。
0137デフォルトの名無しさん
2005/10/02(日) 17:47:23どういうときに、この名前を使えるの??
Calss hogehoge
def initialize
end
def [] (x,y)
end
def []=(x,y,z)
end
end
0138デフォルトの名無しさん
2005/10/02(日) 19:03:00いろいろともちつけ
class Hoge
def [](x,y)
end
def []=(x,y,z)
end
end
h = Hoge.new
h[1,2] # [](1,2) の呼び出し
h[1,2] = 3 # []=(1,2,3) の呼び出し
リファレンスだと
http://ruby-lang.org/ja/man/index.cgi?cmd=view;name=%A5%AF%A5%E9%A5%B9%A1%BF%A5%E1%A5%BD%A5%C3%A5%C9%A4%CE%C4%EA%B5%C1
「そのほか特殊な形式をとるメソッド定義を以下に挙げます。」以下。
0140デフォルトの名無しさん
2005/10/02(日) 23:33:450141デフォルトの名無しさん
2005/10/03(月) 00:02:25require "kconv"
p Kconv::RegexpShiftjis
0142デフォルトの名無しさん
2005/10/03(月) 00:02:43sjis の文字コード表を見て、適合する正規表現を作ればOK。
0143デフォルトの名無しさん
2005/10/03(月) 00:03:350144デフォルトの名無しさん
2005/10/03(月) 01:07:25こうなりました
/\A(?:[\x00-\x7f\xa1-\xdf] | [\x81-\x9f\xe0-\xfc][\x40-\x7e\x80-\xfc])*\z/xn
これでs-jisの漢字のみにマッチできますか?
0145デフォルトの名無しさん
2005/10/03(月) 01:25:59ゴメン、なんないな。
0146デフォルトの名無しさん
2005/10/03(月) 02:23:030147デフォルトの名無しさん
2005/10/03(月) 05:55:300148デフォルトの名無しさん
2005/10/03(月) 08:00:570149デフォルトの名無しさん
2005/10/03(月) 12:43:500150デフォルトの名無しさん
2005/10/03(月) 13:26:220151デフォルトの名無しさん
2005/10/03(月) 19:21:54ruby 1.8.3 featureにそんなこと書いてましたっけ?
$ irb
irb(main):001:0> VERSION
=> "1.8.3"
irb(main):002:0> "あああ".inspect
=> "\"\\244\\242\\244\\242\\244\\242\""
irb(main):003:0> require 'yaml'
=> true
irb(main):004:0> "あああ".to_yaml
=> "!binary |\npKKkoqSi\n\n"
0152デフォルトの名無しさん
2005/10/03(月) 20:17:300153151
2005/10/03(月) 20:21:24では、to_yamlの方に関してなにかご存じの方はおりますでしょうか?
0154デフォルトの名無しさん
2005/10/04(火) 00:00:31あ、ちきしょー。
マルチバイトをmime encodeするようにしやがったか。
0155デフォルトの名無しさん
2005/10/04(火) 00:49:55UTF-8 をエンコードしちゃうのは反則 (ていうかバグ) じゃねーのか?
0156デフォルトの名無しさん
2005/10/05(水) 01:13:06と書かれたスクリプトをリダイレクトして実行すると、
行頭のスペースが無くなってしまいます。
行頭のスペースを保存してリダイレクトする方法はないでしょうか?
0157デフォルトの名無しさん
2005/10/05(水) 01:20:07環境をくやしく
漏れはWinXPSP2+Ruby1.8.2(mswin32)だが頭のスペースは残っとるようだけどなぁ
(ブラウザで見たら頭スペースは見えないだろうからスマンがHTMLソース見てくれ)
[C:\Documents and Settings\nanashi]
> echo puts " hoge" | ruby
hoge
[C:\Documents and Settings\nanashi]
> echo puts " hoge" > hoge.rb
[C:\Documents and Settings\nanashi]
> ruby hoge.rb
hoge
0158デフォルトの名無しさん
2005/10/05(水) 01:44:40環境はWinXPSP1+Ruby1.8.2(cygwin)です。
リダイレクトしなければ行頭スペースは残ります。
やっぱり環境依存なんでしょうか…
0159デフォルトの名無しさん
2005/10/05(水) 01:48:47からはみえなくするにはどうしたらいいのん??
(親のクラスを継承して、新しくつくったのが、子のクラスね)
0160デフォルトの名無しさん
2005/10/05(水) 01:58:470161デフォルトの名無しさん
2005/10/05(水) 05:34:44再現手順を希望。手元だと頭スペースは残るけど。
(WinXPSP2 + ruby 1.8.3 (2005-09-21) [i386-cygwin])
$ echo 'puts " hoge"' >! hoge.rb
$ ruby hoge.rb
hoge
0162デフォルトの名無しさん
2005/10/05(水) 05:40:53undef でどうよ?
----------------------------------------
class C1
def foo
puts "OK"
end
end
class C2 < C1
undef foo
end
C1.new.foo #=> "OK"
C2.new.foo #=> undefined method `foo'
----------------------------------------
リファレンスだと
http://ruby-lang.org/ja/man/index.cgi?cmd=view;name=%A5%AF%A5%E9%A5%B9%A1%BF%A5%E1%A5%BD%A5%C3%A5%C9%A4%CE%C4%EA%B5%C1#undef
0164デフォルトの名無しさん
2005/10/06(木) 00:34:37./hoge.so: dlsym, Win32 error 127 - ./hoge.so (LoadError)
from hogehoge.rb:2
のようにエラーが出るのですが,(ソースの2行目はrequire 'hoge.so')
どうしたら正常に使えるようになるでしょうか.
試しにC言語で作った適当なのをrequireしたときはエラーは起こりませんでした
いちおうバージョンとかは↓のとおりです.
OS:WindowsXPSP2
ruby 1.8.2 (2004-12-25) [i386-cygwin]
cygwin :1.5.17(0.129/4/2)
0166デフォルトの名無しさん
2005/10/06(木) 03:02:05よくわかんないけど↓は参考になる?
ttp://jarp.does.notwork.org/diary/200107c.html#200107261
0167デフォルトの名無しさん
2005/10/06(木) 06:09:00便利に URL エンコードしてくれるライブラリはありますか?
0168デフォルトの名無しさん
2005/10/06(木) 09:16:41つまり、Init_hoge() がない。
なんでないかというと、C++は関数名の変形が行われるから。
extern "C" しとけってこった。
0169デフォルトの名無しさん
2005/10/06(木) 12:23:46RFC 3986 (Obsoletes: 2732, 2396, 1808) ではなくて?
0170デフォルトの名無しさん
2005/10/06(木) 13:29:08URI::encode ではなくて?
0171デフォルトの名無しさん
2005/10/06(木) 14:13:10CGI::encode ではなくて?
0172デフォルトの名無しさん
2005/10/06(木) 14:24:48CGI::encode はなくね?
0174デフォルトの名無しさん
2005/10/06(木) 14:48:04URI::encode(" ") # => "%20"
CGI::escape(" ") # => "+"
HTML 4.01 17.13.4 には適合するけど RFC 3986 2.1. には適合しない悪寒。
0175デフォルトの名無しさん
2005/10/06(木) 19:08:02URI は、マニュアルの URI を見落として uri.rb の方を見ていました……
そして、強調表示で URI Module がリンクされてるのに気が付かず orz
ttp://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=uri.rb;em=uri
0176164
2005/10/06(木) 21:52:30>>168
ありがとうございました.
extern "C"入れたら動くようになりました.
C++が関数名を変えてるのが原因だったようです.
0177デフォルトの名無しさん
2005/10/08(土) 01:00:14rubyとは関係なく。
0178デフォルトの名無しさん
2005/10/08(土) 20:07:05Rationalクラスで返ってくるんだけど、
要するに単位が分からん
当然「秒」だと思ってたんだけど、以下のコード動かすと変な結果が出る
require 'date'
ONEDAYSEC = 24.0 * 60.0 * 60.0
before = DateTime.parse 'Sat Oct 8 00:00:00 2005'
sa = DateTime.now - before
seed = ONEDAYSEC / sa.denominator
puts (sa.numerator * seed) # 経過秒数?
puts (sa.numerator * seed / 60) # 経過分数?
puts (sa.numerator * seed / 60 / 60) # 経過時間?
逆引きrubyとかいうホームページにこの問題についてのサンプルあったんだけど、
どうも同一日内だと結果おかしくなるような…
0179デフォルトの名無しさん
2005/10/08(土) 20:20:200180デフォルトの名無しさん
2005/10/09(日) 09:48:04日単位
0181デフォルトの名無しさん
2005/10/09(日) 22:06:59そうか
別のやり方で解決したけど、日単位だったとしても何か変な気が
そんな気がするだけか
0182デフォルトの名無しさん
2005/10/09(日) 22:35:12いい加減なのか便利なのか知らんが、とりあえず意味不明なところがなんかPerlっぽい。
俺は、片っ端から起算時にすることにしてるが。
Rationalの整数値が日数で、小数値(?)が日数未満の時間を含む値ですよね?
t1 = DateTime.parse( "2005/10/10 12:00:00" )
t2 = DateTime.parse( "2005/10/12 12:05:00" )
d = t2 - t1
printf( "%d days, %d seconds", d.to_i, 24 * 60 * 60 * d.to_f )
0184デフォルトの名無しさん
2005/10/11(火) 00:58:10ttp://jp.rubyist.net/magazine/?0010
↓これは参考になるとおもた
あなたの Ruby コードを添削します
ttp://jp.rubyist.net/magazine/?0010-CodeReview
0185デフォルトの名無しさん
2005/10/11(火) 11:01:25これはどうかと(汗
0186デフォルトの名無しさん
2005/10/11(火) 11:29:55って言ってるだけだろ?
どこか変?
0187デフォルトの名無しさん
2005/10/11(火) 17:35:37昨今のプログラミング環境を考えれば、
色が付く環境を前提に〜 と言い切るような発言は、ある意味凄いなと言いたかっただけ。
色が付かない状況でも読み易いものの方が良い、という意見は俺も同じ。
独断と偏見の添削と断わってるし、強い意味でなく、
適当な添削をしていることくらい脳内補完してる。
他人のソースを採点といった企画では、各々心の中でツッコミだらけでしょ。
そういったものも含んで、面白いと思ったよ。
0188デフォルトの名無しさん
2005/10/11(火) 18:55:32もう全くワケワカラナス・・・
0189デフォルトの名無しさん
2005/10/11(火) 19:02:53リファレンスの「optparse::チュートリアル」じゃダメ?
http://ruby-lang.org/ja/man/index.cgi?cmd=view;name=optparse%3A%3A%A5%C1%A5%E5%A1%BC%A5%C8%A5%EA%A5%A2%A5%EB;em=optparse
0190デフォルトの名無しさん
2005/10/11(火) 19:17:190191デフォルトの名無しさん
2005/10/13(木) 17:35:16Search: google
error: No Deserializer found to deserialize a ':key' using encoding style
'http://schemas.xmlsoap.org/soap/encoding/'.
となります、どうすれば解決できるんでしょうか。
0192デフォルトの名無しさん
2005/10/13(木) 19:48:50あと、多分Rubyのバージョンを書かないと答えられないタイプの問題だと思います
0193デフォルトの名無しさん
2005/10/14(金) 01:15:280194デフォルトの名無しさん
2005/10/14(金) 02:00:520195デフォルトの名無しさん
2005/10/14(金) 04:43:030196デフォルトの名無しさん
2005/10/14(金) 04:50:470197デフォルトの名無しさん
2005/10/15(土) 13:30:000198デフォルトの名無しさん
2005/10/15(土) 19:18:290199デフォルトの名無しさん
2005/10/15(土) 20:21:190200デフォルトの名無しさん
2005/10/15(土) 22:56:38body = STDIN.read
body.scan(/ID:(.*)<\/dt>/) {|a|
id.unshift(a)
}
print id.uniq.size
書き込み人数を調べたいのでこんなの作ってみたのですが
一定以上の大きさのhtmlを読ませると0を返してきます
どこが問題なんでしょう?
0201デフォルトの名無しさん
2005/10/16(日) 00:45:31バッファのサイズが足りてないとか?
filename = 'ファイル名' # どっかから持ってくる
id = Array.new
open('filename'){|file|
file.each{|line|
id << line.scan(/お好きなように/)
}
}
#もし2chのログ解析だったらdatを解析した方がやりやすいと思う。
0202デフォルトの名無しさん
2005/10/16(日) 00:46:21<\/dt>となっているところを<dd>でokっぽい動作になりました。
@モバイル板のhtmlにて
2chってhtml出力が板によって違ったりするのだろうか。
具体的にどこの板のhtmlで問題があったのですか? >>200
0203デフォルトの名無しさん
2005/10/16(日) 00:53:36え〜っと、こういうのです
http://camani.on.arena.ne.jp/cgi-bin/test/read.cgi/aniradi/1128180268/
バッファなのかなぁ、Windowsがいけないんだろうか
0204202
2005/10/16(日) 01:19:22やっぱ<dd>じゃないですか?
314とかそれらしい数字でてきましたが、
自分で数えた訳では無いので本当にカウントできているかわかりませんが。。
0205デフォルトの名無しさん
2005/10/16(日) 01:29:00次行先頭の<dt>が付くようでした
そうやって一部を抽出して書いたのでhtmlを流し込んだときと
書式が変わってしまったようです
ども
0206202
2005/10/16(日) 01:30:07require "open-uri"
id = []
open(ARGV[0]) { |body|
body.each{ |line|
if line =~ /ID:(.*)<dd>/
id.unshift(($~).to_s)
end
}
}
print "\n",id.uniq.size
#引数にURLでカウントします。
#いやぁ、rubyってホントにすばらしい
#情報処理勉強の息抜きにこんな事ばっかりやってて良いのか
0207デフォルトの名無しさん
2005/10/16(日) 03:39:41require "open-uri"
id = Hash.new(0)
open(ARGV[0]) { |body|
body.each{ |line|
line.scan(/ID:(.*)<dd>/)
id[$1] += 1
}
}
id.sort{|b, c|
c[1] <=> b[1]
}.each{|key, value|
print "#{key}: #{value}\n"
}
print id.size
書き込み者のランキングも出るようにしました、が
IDに/が入ってるとそれが表示されないような...
気のせいかな
0208デフォルトの名無しさん
2005/10/16(日) 04:00:59require "open-uri"
id = Hash.new(0)
open(ARGV[0]) { |body|
body.each{ |line|
line.scan(/ID:(.*)<dd>/)
if $1 != nil
id[$1] += 1
end
}
}
id.sort{|b, c|
c[1] <=> b[1]
}.each{|key, value|
print "#{key}: #{value}\n"
}
print "参加者:", id.size
これでいいみたい
/は関係なかった
/とは関係なくkeyの値にnilが入っちゃうことがあって..
0209デフォルトの名無しさん
2005/10/16(日) 04:36:06CGI::Session#[]= を呼び出さずに CGI::Session#update すると
restore が呼ばれず @hash の値が nil のため
セッション情報が空になってしまいます。
initialize 時に restore を呼ぶべきではないでしょうか?
0210デフォルトの名無しさん
2005/10/16(日) 04:38:07> /とは関係なくkeyの値にnilが入っちゃうことがあって..
String#scan の使い方を勘違いしている悪寒・・・
0211202
2005/10/16(日) 18:26:25207のコードをベースにして
最後に下記コードを追加した結果 141(中途半端?) となりました。
print "nill counter = #{id[nil]}"
どこに一致してんだ?
0212デフォルトの名無しさん
2005/10/17(月) 02:11:38String#scan は、何度もマッチを繰り返す場合に使うモノだと思うので、
body.each{ |line|
if /ID:(.*?)<dd>/ =~ line
id[$1] += 1
end
}
とするか、 String#scan を使うなら、
open(ARGV[0]).read.scan(/ID:(.*?)<dd>/) {
id[$1] += 1
}
ではないかと。
# IO#scan って無いのか・・・
あと、141 になるのは件の HTML を見てみれば当然というか、
件の HTML の総行数が 3141 行といえばわかる?
0213デフォルトの名無しさん
2005/10/17(月) 05:38:16自分で書いても、たかだか数行だからない??
あと、** な関数がないか探すには、どうするものなの??
いまは、ひたすらgoogle してる。
0214デフォルトの名無しさん
2005/10/17(月) 08:08:41HTMLHelp版のRubyリファレンスマニュアルで探すのがベスト
0215デフォルトの名無しさん
2005/10/17(月) 13:31:31次の処理に移るようなプログラムを書きたいのですが
どう書けばいいでしょうか?
0216デフォルトの名無しさん
2005/10/17(月) 13:48:370217デフォルトの名無しさん
2005/10/17(月) 14:04:11でもHelp見たらWindows版だとgetsでtimeoutできないそうですね。
無念。。。
0218デフォルトの名無しさん
2005/10/18(火) 00:46:40windows版がどうかは知らないが……。
0220デフォルトの名無しさん
2005/10/18(火) 01:07:371.9では最近改善されたはず。
>>218
同じだよ。selectが動かないからtimeoutもできない。
0221デフォルトの名無しさん
2005/10/21(金) 16:00:30参考になるサイトや書籍を教えていただけないでしょうか?
プログラミング言語Ruby にチャットサーバの例があったようなないような。
実家に送ってしまったので確認できず、、、
0222デフォルトの名無しさん
2005/10/21(金) 16:35:14http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/39699
0223デフォルトの名無しさん
2005/10/21(金) 18:09:12レシピブックが役に立ちそうなので
内容を確認して購入してこようと思います。
ありがとうございました。
ML を検索していなかったことをお詫びします。
0224デフォルトの名無しさん
2005/10/23(日) 00:17:59以下のスクリプトで間違ってるところは、どこでしょうか??
@fooに値がうまく入らないで困っています。
よろしくお願いします。
require 'erb'
class MyCGI
def initialize(script)
@foo = 'bar'
@erb = ERB.new(script)
end
def build_page
@erb.run
end
end
eruby_script= <<EOS
<html>
<body>
<%= @foo %>
</body>
</html>
EOS
mycgi = MyCGI.new(eruby_script)
mycgi.build_page
0225デフォルトの名無しさん
2005/10/23(日) 00:29:43してトップレベルを使う。そういうローカルなバインディングを使いたい場合は
@erb.run(binding)
とすると動く。詳しくは、
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=ERB#ERB.23run
と
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%C1%C8%A4%DF%B9%FE%A4%DF%B4%D8%BF%F4#binding
を参考のこと。
0226デフォルトの名無しさん
2005/10/23(日) 02:38:53bindingメソッドによって、それぞれのレベル(クラスやモジュールで区切られたレベル(??))に
対応表のようなものが用意されるんですね。
で、そのbindingによって得たBindingオブジェクトによって、どのメソッドや、どの値をevalするときに対応させるかを指定できるんですね。
なんとなくわかりました。ありがとうございます。
0227デフォルトの名無しさん
2005/10/24(月) 00:27:34検索してみたら、バグだらけとか作者が消したいと思ってるとか言われてる
ページしか出てこないんですが、最新バージョンだとどうなんでしょうか?
実用レベルになってます?
0228デフォルトの名無しさん
2005/10/24(月) 00:30:160229デフォルトの名無しさん
2005/10/24(月) 09:39:470230デフォルトの名無しさん
2005/10/24(月) 20:55:480231デフォルトの名無しさん
2005/10/25(火) 00:52:49「消したいと思ってる」ってのは、VMとかに作り直すときに条件が厳しくなるから。
どういうレベルを実用というのか分からんけど、「バグだらけ」という実例は?
直せるもんなら直すけど。
0232デフォルトの名無しさん
2005/10/25(火) 05:10:33「(継続を)今後「なくす」とか言いにくい状況になったか。」との記述が。
0233デフォルトの名無しさん
2005/10/25(火) 13:08:23わからないことがあるので質問させて頂きます
puts "#$! (#{$!.class})"
ソース内に↑のような表記が出てくるのですが
これはどんな処理をしているのでしょうか?
puts関数は分かるのですが、ダブルクォーテーションの中味が
何をどう処理してるのかさっぱり想像がつきません
rubyは1.8.2です。宜しくお願いします
0234デフォルトの名無しさん
2005/10/25(火) 13:16:070236デフォルトの名無しさん
2005/10/25(火) 15:47:18On Lispに出てくるscheme版chooseとfailは
rubyのcall_ccでは実装できませんか?
0237デフォルトの名無しさん
2005/10/25(火) 16:34:110238デフォルトの名無しさん
2005/10/25(火) 16:37:300239デフォルトの名無しさん
2005/10/25(火) 16:48:06クラス=スーパー構造体だ
0240デフォルトの名無しさん
2005/10/25(火) 16:48:39よう説明しないって正直に言えよ。
0242デフォルトの名無しさん
2005/10/25(火) 17:02:41>>237 がクラスの担任の、・・・いや、なんでもない。
0243デフォルトの名無しさん
2005/10/26(水) 01:29:24なんかものを作る雛型
0244デフォルトの名無しさん
2005/10/26(水) 02:09:48組み込み変数を使わない場合には以下のようになる。
例外オブジェクトを明示的に変数へ入れるので、
こっちの方が分りやすいかと。
class MyError < StandardError
end
begin
raise MyError, "foo"
rescue MyError => e
puts "#{e} (#{e.class})"
end
#=> foo (MyError)
0245デフォルトの名無しさん
2005/10/26(水) 21:41:57どうやって書くんでしょうか?
呼び出し側
x= Hage.new
p x.hoge(:symbol)
受け手側
module Hage
def hoge(x) ← ここの表記がよく解らず
self[x]
end
end
やはり Hashクラスを取り込まないと表記できないのかなあ...
0246デフォルトの名無しさん
2005/10/26(水) 21:58:45>def hoge(x) ← ここの表記がよく解らず
そこは全然間違ってないんだけど、他が全然ダメだ。
0247デフォルトの名無しさん
2005/10/26(水) 22:07:16それで受け取れてるから安心しる
0248デフォルトの名無しさん
2005/10/26(水) 22:39:24>>246 の言う通りな気がするのだが。
「そもそも何をやりたいのか」が混乱している気も。
0249245
2005/10/27(木) 00:07:35ええと、やりたいことは(2)のような感じで、モジュール内のメソッドで、(1)のような処理を
実現したいんですが、モジュール内でどうやって書くべきなのかわからず困ってます。
多分、大きな勘違いしてるんだとは思うのですが
--- hoge.rb:モジュール側
module Hoge
module_function
def hoge
h ={}
h[:symbol]='test'
h
end
def hoge_get(k) ← ここでつまずいてる。
self[k]
end
end
--- moge.rb:呼び出し側
require "hoge.rb"
class Hash
def moge_get(k)
self[k]
end
end
m = Hoge.hoge;
p m.moge_get(:symbol) # (1)
p m.hoge_get(:symbol) # (2)
0250デフォルトの名無しさん
2005/10/27(木) 01:22:40m = Hoge.hoge
m.class #=> Hash
なんだけど、そこは期待通りなの?
それでよくて、Hash クラスの定義を書き換えたくないんなら、hoge の定義を
def hoge
h ={}
h[:symbol]='test'
def h.hoge_get(k)
self[k]
end
h
end
とでもすれば(h に特異メソッド hoge_get を持たせれば)いいんじゃない。
0251245
2005/10/27(木) 02:21:52>なんだけど、そこは期待通りなの?
はい、okです。
>(h に特異メソッド hoge_get を持たせれば)いいんじゃない。
おぉ!言われてみればその通りです。
モジュールで、インスタンスが出来ないことばかりに気が行っていて
混乱していたようです。
助かりました。 : -)
0252デフォルトの名無しさん
2005/10/27(木) 08:22:04<select name="board">
<option value="tech">マ板</option>
<option value="prog">ム板</option>
</select>
ってのはどうやるの?
select要素のname属性指定とoption要素のリストを操作したいんだけど
0253デフォルトの名無しさん
2005/10/27(木) 19:58:46class FileLikeArray
def intialize(path)
@path = path
end
def [](idx)
file = open (@path,"r")
a = file.readlines
file.close
return a[idx]
end
def [](idx)=(value)
file1 = open("temp.txt","w")
file2 = open(@path,"r")
c = 0
while line = file2.gets
if c == idx
file1.print value,"\n"
else
file1.print line
end
c += 1
end
file1.close
file2.close
File.rename("temp.txt",@path)
end
end
filelikearray = FileLikeArray.new("test.txt")
filelikearray[2] = "ほげ"
を実行すると「def [](idx)=(value)」のところでエラーがでます。なにが違うのでしょうか?
0254デフォルトの名無しさん
2005/10/27(木) 20:22:460255253
2005/10/27(木) 21:51:31ありがとうございました!動きました!
しかし[]系メソッドの定義のしかたってどこにドキュメントがあるんでしょうか。
手がかりがほとんどなく、たのしいRubyのRingArrayクラスのソースだけが参考資料でした。
「def []=(idx,value)」なんて絶対思いつかないよ・・・orz。
0256デフォルトの名無しさん
2005/10/27(木) 21:53:19Rubyリファレンスマニュアル - クラス/メソッドの定義
http://www.ruby-lang.org/ja/man/?cmd=view;name=%A5%AF%A5%E9%A5%B9%A1%BF%A5%E1%A5%BD%A5%C3%A5%C9%A4%CE%C4%EA%B5%C1#a.a5.e1.a5.bd.a5.c3.a5.c9.c4.ea.b5.c1
0257253
2005/10/27(木) 22:16:44・・・そんなところにぽつんと;
ありがとうございました。
とりあえずインターフェイスだけ配列っぽいクラスが作れるようになったので利用の幅が広がりました。
0258デフォルトの名無しさん
2005/10/27(木) 22:17:00いくつかの方法があるが、属性値の展開を利用するのが
もっとも簡単だと思う
http://www.nslabs.jp/amrita-altered.rhtml
0259デフォルトの名無しさん
2005/10/29(土) 16:39:05だけど、どのファイルでどこまでrequireすればいいの?
実行ファイルで全部requireすれば他のファイルにrequire書く必要ない?
--- main.rb ---
require 'hoge'
require 'piyo'
Hoge.new.hoge
--- hoge.rb ---
class Hoge
def hoge
Piyo.PIYO
end
end
--- piyo.rb ---
class Piyo
PIYO=123
end
0260デフォルトの名無しさん
2005/10/29(土) 18:47:19うん、必要ない
requireってのは要するに「他のスクリプトを実行する」だけだから
0261デフォルトの名無しさん
2005/10/29(土) 19:24:24以下のようなプログラムで、終了する前(acceptで待っている時)にC-cで中断しようとしても
中断されないのですが、そういうものなのでしょうか?
cygwin版の方は中断されたのですが。
require 'socket'
gs = TCPServer.new(80)
gs.accept
0262デフォルトの名無しさん
2005/10/29(土) 23:04:54X=1
def a
p X
end
end
class B < A
X=2
end
クラスAとBが↑みたいにあって
B.new.a
実行すると1になるんだけどなんで?
0263デフォルトの名無しさん
2005/10/29(土) 23:51:45tcpサーバが返してくる文字列の行数がわからない場合は
クライアント側ではどのように読んだら良いのでしょうか?
例えばサーバから3行返ってきた場合、クライアントは
s = TCPSocket.new('localhost', 12345)
s.gets #=> 1行目
s.gets #=> 2行目
s.gets #=> 3行目
で良いと思うのですが、3行ということがわからない場合
getsを呼ぶ回数をどう判定したら良いのでしょうか?
3行目をgetsしたあとs.getsとすると、4行目を読もうとして(でも存在しないので)
止まってしまうので困っています。
0264デフォルトの名無しさん
2005/10/30(日) 00:03:37p line
end
じゃあかんの?
それか全部配列に呼んでからsizeを見るとか
0265デフォルトの名無しさん
2005/10/30(日) 00:06:210266デフォルトの名無しさん
2005/10/30(日) 00:13:45>>264だと、>>263の例でいうなら4回目のs.getsで止まってしまいました。
これで半日作業が止まっていたので、助かりました。
Rubyistのみなさん、ありがとう!
0267デフォルトの名無しさん
2005/10/30(日) 00:17:43p self.class::X
0268デフォルトの名無しさん
2005/10/30(日) 00:37:41thx
わざわざself.classをつけなならんのか
0269デフォルトの名無しさん
2005/10/30(日) 04:47:02include Hoge::Piyo::Foo
Bar.new
って書くのと
Hoge::Piyo::Foo::Bar.new
って書くのは同じですか?
0270デフォルトの名無しさん
2005/10/30(日) 15:28:12module A
def hoge
end
end
class B
include A
def hoge
super.hoge
end
end
class B の hoge メソッドの中で super.hoge を呼んでるんですけど、これで
は Object クラスの hoge が呼ばれてしまいます。なんとか
module A の hoge メソッドを呼べないものでしょうか?
よろしくおねがいします。
0271デフォルトの名無しさん
2005/10/30(日) 15:29:060272デフォルトの名無しさん
2005/10/30(日) 15:36:41そのスコープで別のBarを定義してなければ。
0273デフォルトの名無しさん
2005/10/30(日) 15:45:25それだと、A#hogeが呼ばれてその結果に対してまたhogeが呼ばれるはずだが。
0274270
2005/10/30(日) 16:24:03あ、本当ですね。間違ってました。
確かに A#hoge のあと、その返り値のオブジェクトのhoge? が呼ばれました。
super を Java と同じ感じだと思っていましたが、それだけでメソッド呼び出しになるのですね。
解決しました。ありがとうございました。
0275デフォルトの名無しさん
2005/10/30(日) 16:50:47when 0 .. 19
・・・
when 20 .. 60
・・・
when ここで 60以上 の処理をしたいのですが、どう書けばいいですか?
・・・
end
else以外で書けませんか?
0276デフォルトの名無しさん
2005/10/30(日) 18:23:17とか
0277デフォルトの名無しさん
2005/10/30(日) 19:20:05……すまん。
0278デフォルトの名無しさん
2005/10/30(日) 19:41:14when (0..19) === hoge
...
when (20..60) === hoge
...
when 60 < hoge
...
end
とかは?
hogeを繰り返すのがいやだけど
>>276のはすごいな…0.0で割ると例外にならないのね。Infinityかー
0279デフォルトの名無しさん
2005/10/30(日) 20:14:12それもうifでいいじゃない
0280デフォルトの名無しさん
2005/10/30(日) 20:34:38>>276と>>277 はすぐ意味がわからないので、後で試してみます。
>>278みたいなのは思いついたんですけど、やっぱ>>279なんですかね・・・?
0281デフォルトの名無しさん
2005/10/30(日) 21:14:190282デフォルトの名無しさん
2005/10/30(日) 21:42:00それで思い出した。
Infinity とか NaN って、そういう定数が定義されてるわけじゃないんだよね。
それでハマったことがあった。
0283236
2005/10/30(日) 21:59:00嘘つき。できるじゃん。
ttp://onestepback.org/articles/callcc/choose/choose_rb.html
0284デフォルトの名無しさん
2005/10/30(日) 22:35:37when (hoge > 60 ? hoge : nil)
とか。
でも(20..60)===60はtrueだけどな。
0285デフォルトの名無しさん
2005/11/02(水) 17:40:49(obj > 60) ? obj : nil
end
で
when gt(hoge, 60)
とかどうだろう? いまいち?
0286デフォルトの名無しさん
2005/11/02(水) 18:21:19when 60..Range::Infinity
みたいにできるように。
0287デフォルトの名無しさん
2005/11/02(水) 18:41:35式抜きのcaseで使うんならメソッドにする必要はないだろ。
case hogeに対しては動かんし。
0288デフォルトの名無しさん
2005/11/02(水) 22:03:350289デフォルトの名無しさん
2005/11/03(木) 01:22:140290デフォルトの名無しさん
2005/11/03(木) 03:24:39method.method というような形になり、何か変じゃないですか?
object.method なら判るのですが
0291デフォルトの名無しさん
2005/11/03(木) 03:41:290292デフォルトの名無しさん
2005/11/03(木) 04:01:38「メソッドを呼んで、その返り値に対してメソッドを呼ぶ」という
俗に「メソッドチェーン」と呼ばれる仕組みです。二つに限らず、
たとえば gets.split.sort.reverse のようにたくさんつなげることもできます。
好みの問題ですが、メソッドチェーンの利点として、
* 「split して sort して reverse する」みたいに読める
* 無駄な一時変数を使わなくていい(上の例でメソッドチェーンを使わないと
tmp1 = gets
tmp2 = tmp1.split
tmp3 = tmp2.sort
tmp4 = tmp3.reverse
みたいに書くことになる)
という利点があります。
0293デフォルトの名無しさん
2005/11/03(木) 04:18:290294デフォルトの名無しさん
2005/11/03(木) 09:10:400295デフォルトの名無しさん
2005/11/03(木) 14:27:30省略せずに書けば「$stdin.gets.chomp」でしょうから、
「object.method」の形式ですね。
0296デフォルトの名無しさん
2005/11/03(木) 14:38:14ARGF.gets.chomp
0297デフォルトの名無しさん
2005/11/03(木) 14:39:09object.method.method -> (object.method).method -> object.method
0298デフォルトの名無しさん
2005/11/03(木) 14:43:22$stdin = File.open("/path/to/file")
puts gets.chomp
0299デフォルトの名無しさん
2005/11/03(木) 14:56:49% cat hoge.rb
$stdin = File.open("/path/to/file")
puts gets.chomp
% ruby hoge.rb hoge.rb
$stdin = File.open("/path/to/file")
0300デフォルトの名無しさん
2005/11/03(木) 15:20:12Kernel.gets.chomp
0301デフォルトの名無しさん
2005/11/03(木) 19:55:06printf("%sはここでつか?", th)
STDOUT.flush
ans = /^\s*y/i =~ gets
0302デフォルトの名無しさん
2005/11/03(木) 20:44:56require "cgi-lib"とrequire "cgi" の違いって何?
0303デフォルトの名無しさん
2005/11/03(木) 22:13:08CGI.newとCGI::newは実体は同じ。参照の仕方が違う。
普通は前者を使う気がする。
2つめの質問については、
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=cgi-lib.rb;em=cgi-lib
> このライブラリはobsoleteです。 cgi.rbを使ってください。
0304デフォルトの名無しさん
2005/11/03(木) 22:36:44なるほどそういうことか、ありがとう
特に後者はすごく簡単に調べられたんだな、申し訳ない
0305デフォルトの名無しさん
2005/11/03(木) 23:46:300306デフォルトの名無しさん
2005/11/04(金) 00:14:05クラス・モジュールと、定数に代入した(その他の)オブジェクトとを
見た目を区別するためなんじゃなかろうか。
SomeClass::some_class_method
SomeConstant.some_instance_method
みたいに。
0307デフォルトの名無しさん
2005/11/04(金) 01:09:40MyClass::FILE_SIZE
MyClass.class_eval
0308デフォルトの名無しさん
2005/11/04(金) 07:20:41false
0309デフォルトの名無しさん
2005/11/04(金) 13:17:410310デフォルトの名無しさん
2005/11/04(金) 13:54:15世の中わからないことだらけだ。
0311デフォルトの名無しさん
2005/11/04(金) 13:57:14> ERBはeRubyのRubyによる実装です。
であり、普通にRubyに標準添付されているわけだが。
0312デフォルトの名無しさん
2005/11/04(金) 14:06:38ヒント:あぱっちょ
0313デフォルトの名無しさん
2005/11/04(金) 15:26:36チラシの裏に書いてろ、な。
0314デフォルトの名無しさん
2005/11/04(金) 16:20:41くず。
むなしくない?
0315デフォルトの名無しさん
2005/11/05(土) 01:50:35とりあえずマジレスしとくと
「eRuby」は規格そのものの名称であって、実装の名称ではない。
そのため「eRubyをインストール」は間違い。
「erubyをインストール」なら正しいが、どちらにしてもERbを使った方がいいと思う
erubyはインストールに手間を食うし、サーバによっては使えないこともある
0316デフォルトの名無しさん
2005/11/05(土) 14:27:22グラフは以下のようにするとできそうです.
require "sdl"
SDL.init(SDL::INIT_VIDEO)
screen = SDL.setVideoMode(640, 480, 16, SDL::SWSURFACE)
screen.fillRect(0, 0, 639, 479, [255, 255, 255])
screen.drawRect(50, 50, 539, 379, [0, 0, 0])
screen.drawLine(50, 50, 589, 429, [0, 0, 255])
screen.drawLine(589, 50, 50, 429, [0, 0, 255])
screen.updateRect(0, 0, 0, 0)
loop do
case event = SDL::Event2.poll
when SDL::Event2::Quit
exit
end
end
Winodowsのmswin版で,Ruby/SDLは動作します.
描いた図をファイルに保存するには,どうすればよいでしょうか.
よろしくお願いします.
0317デフォルトの名無しさん
2005/11/05(土) 14:47:54で保存できました.
ありがとうございました.
0318デフォルトの名無しさん
2005/11/07(月) 21:15:15(条件を満たした時の処理)
end
と
while i< line.size do
(条件を満たした時の処理)
end
とdoを使った時では処理はどう違うのでしょうか?
どちらでやっても結果が同じになったのですが。
0319デフォルトの名無しさん
2005/11/07(月) 21:21:12おれは付ける派だけど付ける方が少数派かなあ。
0320デフォルトの名無しさん
2005/11/07(月) 21:30:59{と} に対して doとend があるというイメージがある。
0321デフォルトの名無しさん
2005/11/07(月) 21:45:590322デフォルトの名無しさん
2005/11/07(月) 22:46:490323デフォルトの名無しさん
2005/11/07(月) 23:36:48{}の方が優先順位が上だったような。
メソッド1 メソッド2 { ・・・}
メソッド1 メソッド2 do ・・・end
上記の例だとメソッド1の引数に、メソッド2+イテレータブロックの戻り値が渡され、
do endだとメソッド1にメソッド2の戻り値とイテレータブロックが渡されるです。
まぁ()を付けるべきだと思いますが。
0325デフォルトの名無しさん
2005/11/08(火) 00:06:29へーへーへー 3へー 市欄買った
0326デフォルトの名無しさん
2005/11/08(火) 00:51:330327デフォルトの名無しさん
2005/11/08(火) 05:00:54omae mona
_END
hoge <<_END_
omae mona
_END
0328デフォルトの名無しさん
2005/11/08(火) 11:33:38one+1 #=> 2
one+ 1 #=> 2
one + 1 #=> 2
one +1 #=> ArgumentError
0329デフォルトの名無しさん
2005/11/08(火) 19:39:070330デフォルトの名無しさん
2005/11/09(水) 03:10:27endとのペアリングわかりにくくないですか?
何かエディタで例えばブレス{}のペアリング
はxyzzyとかでチェック機構つけられるけど、end のペアリングチェック
ってうまい方法ありますかね。
0331330
2005/11/09(水) 03:11:10行数長くならなくても、例えばネストが深くなった場合とかも同じ
事が言えると思いますが。
0332デフォルトの名無しさん
2005/11/09(水) 03:51:580333デフォルトの名無しさん
2005/11/09(水) 09:16:540334デフォルトの名無しさん
2005/11/09(水) 10:56:31が、それくらいしか打つ手もないか。
0335デフォルトの名無しさん
2005/11/09(水) 14:50:49ネストが深くなったりメソッドが長くなったりするようなら、
複数のメソッドに分けちゃいます。
0336デフォルトの名無しさん
2005/11/09(水) 15:04:450337デフォルトの名無しさん
2005/11/09(水) 17:51:50詳しく!
0338デフォルトの名無しさん
2005/11/09(水) 18:05:08どうすれば良いでしょうか.
BMP形式ではファイルサイズが大きくなりそうですので.
GIF画像を読み込み,貼り付けることはできました.
require "sdl"
SDL.init(SDL::INIT_VIDEO)
screen = SDL.setVideoMode(640, 480, 16, SDL::SWSURFACE)
a = SDL::Surface.load("a.gif")
screen.put(a, 320, 240)
screen.updateRect(0, 0, 0, 0)
loop do
case event = SDL::Event2.poll
when SDL::Event2::Quit
exit
end
end
保存の方法を教えて下さい.
よろしくお願いします.
0339デフォルトの名無しさん
2005/11/09(水) 18:17:57と出るわけだが、これは一体どこで定義されてるんだ?
require 'socket'しても出るぞ
0340デフォルトの名無しさん
2005/11/09(水) 18:22:250341デフォルトの名無しさん
2005/11/09(水) 20:15:41def func() {
chinko
manko
unko
}
を許したら混乱する?
03420029
2005/11/09(水) 20:33:250343デフォルトの名無しさん
2005/11/09(水) 22:30:16エディタの機能でメソッドを短く閉じてる人もいる。
http://www.rubyonrails.com/media/video/rails_take2_with_sound.mov
0344デフォルトの名無しさん
2005/11/09(水) 23:30:26混乱じゃなくて衝突する。
0345デフォルトの名無しさん
2005/11/09(水) 23:40:10何か怪しげなリンクだなw
0346デフォルトの名無しさん
2005/11/10(木) 01:24:40save_bmpメソッドで保存した後、convertとかでGIFにする。
0347デフォルトの名無しさん
2005/11/10(木) 01:47:250348デフォルトの名無しさん
2005/11/10(木) 02:12:11そうですね.
BMPにしてからGIFにすることならできそうです.
それでソフトを探してみましたら,以下のソフトがありました.
wGigamaree
コマンドライン上で実行するBMP→GIF変換ソフトウェア
http://www.vector.co.jp/soft/win95/art/se343747.html
プログラムのあるフォルダに,このソフトの実行ファイルを入れて,
プログラムに,317にあるBMPで保存する行の後に,
system "wGigamaree a.bmp"
としました.
GIFで保存できるようになりました.
ありがとうございました.
0349デフォルトの名無しさん
2005/11/10(木) 03:40:56なにこれ、970x754って画面に収まらねー
0350デフォルトの名無しさん
2005/11/10(木) 04:55:35ナニこのエディタ?
0351デフォルトの名無しさん
2005/11/10(木) 10:51:27どなたかご存知の方、教えてください。
0352デフォルトの名無しさん
2005/11/11(金) 02:50:230353デフォルトの名無しさん
2005/11/11(金) 03:23:560354デフォルトの名無しさん
2005/11/11(金) 03:26:10C++とrubyが連携する方法はどんなものがありますか?
0355354
2005/11/11(金) 05:41:19すげーな、これ
0356デフォルトの名無しさん
2005/11/11(金) 10:38:09裏で変更がかかったかどうかを常にチェックしてたらやっぱメインスレッドの挙動は半分のスピードに落ちるんでしょうか。
0357デフォルトの名無しさん
2005/11/11(金) 14:30:04ふつーは「常にチェック」なんてせずに Observable 使うとかするんじゃね?
0358デフォルトの名無しさん
2005/11/11(金) 14:42:12変更したいときに呼べばいいじゃんと思った俺は初心者だがスレ準拠なので謝らない
0359デフォルトの名無しさん
2005/11/11(金) 14:45:13まず網構造とは何かがわからないんだが
0360デフォルトの名無しさん
2005/11/11(金) 15:30:510361デフォルトの名無しさん
2005/11/11(金) 15:36:240362デフォルトの名無しさん
2005/11/11(金) 17:04:38何で表現するかじゃなくて、それをどう使いたいかが見えないとなぁ。
0363デフォルトの名無しさん
2005/11/11(金) 18:26:30GC のタイミングで SEGV で落ちた時点ではあとのまつりで、
gdb で追っかけようにもどこが大元の原因なのやらさっぱりで。
デバッグ用に ElectricFence な Ruby でも用意しようかとも思いましたが面倒ですし。
0364デフォルトの名無しさん
2005/11/11(金) 20:22:25Winny本読んでP2P作ろう!
と意気込んでる所じゃね?
0365デフォルトの名無しさん
2005/11/12(土) 17:34:280366デフォルトの名無しさん
2005/11/12(土) 18:07:190367デフォルトの名無しさん
2005/11/12(土) 18:39:24グラフのことだとしたらふつうに配列を使えば表現できるんじゃないかな?
a,b,c,dの4点があって、ab,ad,acの3辺があったら、そのグラフは
[[[a,b],[a,c],[a,d],[b,c],[b,d],[c,d]],[a,b],[a,d],[a,c]]で表せるじゃん。
有向グラフも同じ要領で配列で表現可能。
0368367
2005/11/12(土) 18:42:38[[[a,b],[a,c],[a,d],[b,c],[b,d],[c,d]],[[a,b],[a,d],[a,c]]]
だった・・・orz。
0369デフォルトの名無しさん
2005/11/12(土) 19:06:04onigurumaって良いの?
0370デフォルトの名無しさん
2005/11/12(土) 19:17:51キーワードB\tどうしたこうしたー\t … …
キーワードC\tイエー\t … …
:
とかいう感じのタブ区切りファイルがあります。\tはタブ文字のつもりです。この際CSVでもいいです。
「キーワードNで代表されるN行目の内容だけを更新する」ということをしたいです。
更新個所の指定方法はなんでもいいので、簡便な感じに一発で書き換える方法はありませんか?
「ファイルを読み込んで全行を配列に保存しつつ
キーワードにヒットすればその行のぶんは置換して保存し
終わったら全配列をファイルにどかんと書き戻す」
ということを今はしてるんですが、なんかいろいろもったいない気がします。何度も呼ぶと時間かかるし。
0371デフォルトの名無しさん
2005/11/12(土) 19:40:08可変長レコードファイルの途中のレコードだけを書き換えることは基本的に無理。
それを理解した上であえて楽したいのなら、それなりの質問の仕方をして下さい。
0372デフォルトの名無しさん
2005/11/12(土) 19:49:06悪くない。
0373デフォルトの名無しさん
2005/11/12(土) 19:54:26うんにゃ、初心者スレの分を超えるような質問はしないよ。
普通にやって方法がないならそれで充分。ありがとう。
0374デフォルトの名無しさん
2005/11/12(土) 20:21:15正直、YAMLか何かに移行することを勧めるが
0375デフォルトの名無しさん
2005/11/12(土) 22:19:02楽をしたいだけなら、俺だったらそういう機能をカプセル化してハッシュみたいなクラスを作ると思う。
あと、やるんならテンポラリファイルを作って書き戻しはそっちに行い、完了してからリネームすることをオススメする。
0376363
2005/11/13(日) 02:16:360377デフォルトの名無しさん
2005/11/13(日) 11:33:08どうしたらよいですか?
File.joinを別名定義したいのですが。。。
0378デフォルトの名無しさん
2005/11/13(日) 11:50:27alias File.join_old File.join とすると文法エラーと出ます
0379デフォルトの名無しさん
2005/11/13(日) 11:57:22alias join_old join
end
0380デフォルトの名無しさん
2005/11/13(日) 12:03:15初心者スレ逸脱
0381デフォルトの名無しさん
2005/11/13(日) 14:16:01orz
あっちできいてみます。誘導ありがとうございます。
0383デフォルトの名無しさん
2005/11/14(月) 23:42:43#/bin/sh
ls
のようにコマンドを使うことは出来ないんですか?
出来る方法があったら教えてください。
0384デフォルトの名無しさん
2005/11/14(月) 23:55:060385デフォルトの名無しさん
2005/11/15(火) 00:31:340386デフォルトの名無しさん
2005/11/15(火) 00:34:390387デフォルトの名無しさん
2005/11/15(火) 07:02:24添付ライブラリのShellを使う手もありますよ。
0388デフォルトの名無しさん
2005/11/15(火) 08:00:53とかそんな話かもしれん。
まあ、たいしたことでもないんだろう。
0389デフォルトの名無しさん
2005/11/15(火) 12:09:49ことを確認するにはどうすればできますか?
0390デフォルトの名無しさん
2005/11/15(火) 13:36:35`rm /var/www/hoo`
0391デフォルトの名無しさん
2005/11/15(火) 13:37:11files = []
open(path) do |dir|
while file = dir.read
files.push file
end
end
files == [".", ".."]
end
# "."と".."の順番が違う可能性もあるか?
0392デフォルトの名無しさん
2005/11/15(火) 13:59:39Dir.foreach(path) do |f|
return false if f != "." && f != ".."
end
true
end
0393デフォルトの名無しさん
2005/11/15(火) 15:14:58ありがとうございます。
つかわしてもらいます。
0394390
2005/11/15(火) 16:27:240395デフォルトの名無しさん
2005/11/15(火) 18:08:58無理言うな。
0396デフォルトの名無しさん
2005/11/15(火) 18:17:45Dir.glob("*")
が[]だったら空、
というロジックをよく使う。
0397デフォルトの名無しさん
2005/11/15(火) 18:44:190398デフォルトの名無しさん
2005/11/15(火) 19:05:040399デフォルトの名無しさん
2005/11/15(火) 19:14:440400デフォルトの名無しさん
2005/11/15(火) 19:25:49とかはどうだろう。
0401デフォルトの名無しさん
2005/11/15(火) 23:53:16それが適切かどうかは分からないけど、そこで map はキモいので entries で。
ていうか 1.9 だとブロックなし map は Enumerator 返すし。
$ ruby -e 'p Dir.open("/").map'
#<Enumerable::Enumerator:0x101062d0>
0402デフォルトの名無しさん
2005/11/18(金) 10:06:36自分の処理も追加したいのですが、どのように書けばよいでしょうか?
既存のset_trace_funcの処理に加えて新しい処理も走るようにしたいのですが。。。
0403デフォルトの名無しさん
2005/11/18(金) 21:01:35さっぱりわかりません…orz
魔方陣は…
n=7
a=Array.new
for i in 1..n
a[i]=Array.new
end
for m in 0..n-1
for k in 0 ..n-1
i=(k+m)*2+(n+1)/2+2
j=k-m+(3*n+1)/2
a[(i-1)%n+1][(j-1)%n+1]=n*m+k+1
end
end
for i in 1..n
for j in 1..n
printf "%4d", a[i][j]
end
print "\n"
end
と書いたのですが。。。
0404デフォルトの名無しさん
2005/11/18(金) 21:48:39def sum; inject(0){|result, x| result + x }; end
end
a.flatten!
a.compact!
(0..(n-1)).each{|i|
(0..(n-1)).each{|j|
printf "%4d", a[i*n + j]
}
printf ": %4d", a[i*n, n].sum
puts
}
(0..(n-1)).each{|j|
printf "%4d", a.values_at(*(
(0..(n-1)).collect{|i| i*n + j }
)).sum
}
puts
0405デフォルトの名無しさん
2005/11/18(金) 23:54:45難しいですねorz
forなどでもっと簡単に書くことは出来ますか?
injectというのが良く分かっていなくて(;´Д`)すみません。。。
0406デフォルトの名無しさん
2005/11/19(土) 02:06:22class MagicSquare
def initialize(size)
@size = size
@rows = []
@cols = []
size.times{|r|
size.times{|c|
a = (c+r)*2+(size+1)/2+2
b = c-r+(3*size+1)/2
x = (a-1)%size
y = (b-1)%size
z = size*r+c+1
@rows[x] ||= []
@cols[y] ||= []
@rows[x][y] = @cols[y][x] = z
}
}
end
attr_reader :size, :rows, :cols
0407デフォルトの名無しさん
2005/11/19(土) 02:06:59(
rows.collect{|r|
r.collect{|x| format(x) }.join + ': ' + format(sum(r))
} + [
cols.collect{|c| format(sum(c)) }.join
]
).join("\n")
end
private
def format(x)
sprintf('%4d', x)
end
def sum(arr)
arr.inject(0){|result, x| result + x }
end
end
puts MagicSquare.new(7)
0408デフォルトの名無しさん
2005/11/19(土) 07:39:530409デフォルトの名無しさん
2005/11/19(土) 08:49:49難しいのをいつどこで覚えるかってのは深い問題だけど
0410デフォルトの名無しさん
2005/11/19(土) 09:04:23俺にも使えるようになるかもしれないが。。。
0411デフォルトの名無しさん
2005/11/19(土) 09:27:460412デフォルトの名無しさん
2005/11/19(土) 09:39:55> 合計の計算
> p [1,2,3,4,5].inject(0) {|result, item| result + item }
> これは以下のように書くのと同じです。
> result = 0
> [1,2,3,4,5].each {|v| result += v }
> p result
injectと引数を見て今回どういう動作をさせてるか瞬時に頭の中にイメージとして浮かぶ
賢い人向けの記法っぽい
0413デフォルトの名無しさん
2005/11/19(土) 09:48:08後から追加されたくらいだから、実は物凄く便利なのかもしれないじゃないか。
普段から身近に使えそうな便利な例を思いつかないが。
0414デフォルトの名無しさん
2005/11/19(土) 15:47:22wavファイル、midiファイル、mp3ファイルの再生機能が必要になりました。
これら全て(あるいは一部)をサポートしてくれるライブラリはないでしょうか?
機能はとくに必要なく、ただ再生できるだけで十分なのですが……
0415デフォルトの名無しさん
2005/11/19(土) 17:24:41俺は inject を知ってからは一時変数使うのうぜーって思いはじめてきた。
>>412 の result とかね。
0416デフォルトの名無しさん
2005/11/19(土) 18:26:17コードに無い(?)けどあれこれやってくれる部分が多めだから。
0417デフォルトの名無しさん
2005/11/19(土) 19:10:060418デフォルトの名無しさん
2005/11/19(土) 19:38:30require 'digest/md5'
def md5sum(path)
open(path, 'r') {|fp|
puts fp.inject(Digest::MD5.new){|digest, line| digest << line}.hexdigest
}
end
md5sum(ARGV[0])
0419デフォルトの名無しさん
2005/11/19(土) 19:57:50require 'digest/md5'
puts ARGF.inject(Digest::MD5.new){|digest, line| digest << line}.hexdigest
0420デフォルトの名無しさん
2005/11/19(土) 20:53:55でも配列を対象にしてる時ならともかく、
Enumerable一般を対象としていると、まだ脳が軽く拒否反応示す。
0421デフォルトの名無しさん
2005/11/19(土) 21:34:41入力の並び.inject(初期状態){|現在の状態, 現在の入力| 状態遷移関数} #=> 最終状態
0422デフォルトの名無しさん
2005/11/19(土) 22:03:14先に仕掛けを用意しておいてそれに流し込む感じ
0423デフォルトの名無しさん
2005/11/20(日) 23:09:490424デフォルトの名無しさん
2005/11/21(月) 00:50:22AddHandler cgi-script .rb
DirectoryIndex index.rb
※httpd.confで次のオーバーライドを許可しておくこと
AllowOverride Options FileInfo Indexes
0425デフォルトの名無しさん
2005/11/21(月) 07:26:290426デフォルトの名無しさん
2005/11/21(月) 23:58:100427デフォルトの名無しさん
2005/11/22(火) 10:04:14ということをてきとーな時刻精度で繰り返し行わせたいです。
loop{
メイン処理()
外部ファイルを解析()
現在から予定時刻までの秒数を計算()
sleep(秒数)
}
とか
メイン処理()
外部ファイルを解析()
system('echo ./script.rb | at 何時何分')
exit
という方法しか思いつかなかったんですが、
「次回処理時刻を指定する」一般的な方法ってありますか?
0428デフォルトの名無しさん
2005/11/22(火) 10:10:51setup.rb(install.rb) 以外での使用例は一つだけか。
ttp://raa.ruby-lang.org/gonzui/search?q=inject&fm=ruby
0429デフォルトの名無しさん
2005/11/22(火) 17:26:49それでいーんじゃないの。
あとは http://raa.ruby-lang.org/project/crontab/ とか。
0430デフォルトの名無しさん
2005/11/22(火) 19:15:07他にもあるみたいだけど? まだインデクシングの途中なのかな。
まあ 1.6 対応とか、最近更新されてないヤツとかのことを考えると
inject 使ってるのは比較的少ないのかもね。
0431デフォルトの名無しさん
2005/11/22(火) 21:59:01>>406をinjectを使わないとどうなるんでしょうか。。
0432デフォルトの名無しさん
2005/11/22(火) 22:24:15漏れもわかんねぇ(わら 気にするな
injectは合計を求めてるだけだから
def sum(arr)
result = 0
arr.each{|x| result += x }
result
end
でよくない?
0433デフォルトの名無しさん
2005/11/22(火) 22:30:30良い。
>>431
inject は気にするな。
自分の書ける方法で、自分の書きたいものが書けたら、それで良い。
0434デフォルトの名無しさん
2005/11/22(火) 23:22:44>>433
サンクスですd(⁷∀⁷d)=з
0435デフォルトの名無しさん
2005/11/23(水) 13:58:38遅レスになりますが、どうもありがとうございます。
無事、動きました。
0436デフォルトの名無しさん
2005/11/24(木) 00:41:56if pagelist.size > 0
↓
if not pagelist.empty?
↓
unless pagelist.empty?
0437デフォルトの名無しさん
2005/11/24(木) 00:50:46> すみません、”?”ってどういう意味なのでしょうか?
「〜か?」ってこと。
ただし慣用的にそう使われているだけで、制限ではない。
(true/false 以外を返すものも作れる)
> if pagelist.size > 0
サイズが 0 より多い
> ↓
> if not pagelist.empty?
Array#empty? は、Array#size == 0 と同じなので、
サイズが 0 ではない
> ↓
> unless pagelist.empty?
同じく、サイズがゼロではない
0438デフォルトの名無しさん
2005/11/24(木) 01:01:14サンクス。
0439デフォルトの名無しさん
2005/11/24(木) 01:05:320440デフォルトの名無しさん
2005/11/24(木) 01:43:560441デフォルトの名無しさん
2005/11/24(木) 01:56:31# 同時期に始めたのにもうC++喋れないorz
0442デフォルトの名無しさん
2005/11/24(木) 13:48:37C++自体にそんな用語あったっけ?
0443デフォルトの名無しさん
2005/11/24(木) 20:24:310444デフォルトの名無しさん
2005/11/25(金) 00:10:240445デフォルトの名無しさん
2005/11/25(金) 03:10:40String#index などと クラス名#なんとかという表記が文献に
出てくるのですが、この#はどういう意味でしょうか?
英語の 's に相当するものでしょうか?
0446デフォルトの名無しさん
2005/11/25(金) 03:18:470447デフォルトの名無しさん
2005/11/25(金) 03:28:47class << HTTP
def xxxx
:
というクラス定義の記述が出てきたんですが、
この << はどういう意味でしょうか?ruby本
で調べたんですが、みつかりまへん。
0448デフォルトの名無しさん
2005/11/25(金) 03:32:230449447
2005/11/25(金) 03:50:520450デフォルトの名無しさん
2005/11/25(金) 09:27:11とりあえずString#indexって書いてあったら
String.indexのこととおもっときゃいいんじゃね?
ピリオドだと読みづらいし。
0451デフォルトの名無しさん
2005/11/25(金) 10:04:000452デフォルトの名無しさん
2005/11/25(金) 10:50:41コメントと同じように見えますが。
rb2html - Ruby, Java, C++ sources to HTML
http://www.nslabs.jp/rb2html.rhtml
0453デフォルトの名無しさん
2005/11/25(金) 11:17:41いちおう、RD をコードに埋め込むという用途のためのものでもあるのだが、
RDoc全盛の今となってはとっくに廃れた話だな。
http://www.ruby-lang.org/ja/man/?cmd=view;name=%BB%FA%B6%E7%B9%BD%C2%A4#a.cb.e4.a4.e1.b9.fe.a4.df.a5.c9.a5.ad.a5.e5.a5.e1.a5.f3.a5.c8
0454デフォルトの名無しさん
2005/11/25(金) 11:20:52もちろん複数行コメントとして使える。
が、いわゆるコメントと言うよりはインラインドキュメント
としての性格が強い
0455デフォルトの名無しさん
2005/11/25(金) 12:00:22>>454
ありが�d
0456デフォルトの名無しさん
2005/11/25(金) 12:28:10String.index って書くと、Srtring のクラスメソッドに index があることになりまつ。
0457デフォルトの名無しさん
2005/11/25(金) 19:45:010458デフォルトの名無しさん
2005/11/25(金) 20:06:55だから >>451 だってばさ。
0459デフォルトの名無しさん
2005/11/25(金) 20:37:44それは>>451的記法使用派内だけでの話であって、一般的な規則ではない。
0460デフォルトの名無しさん
2005/11/25(金) 20:48:04リファレンスマニュアルや Ruby の ChangeLog などでは
String クラスのインスタンスメソッド index のことを「String#index」と表示してある。
0461デフォルトの名無しさん
2005/11/25(金) 21:43:02君は後々苦労すると思うよ。
0462デフォルトの名無しさん
2005/11/25(金) 22:26:16> String#index などと クラス名#なんとかという表記が文献に
> 出てくるのですが、この#はどういう意味でしょうか?
インスタンスメソッドを意味します。
Smalltalkで使用されていた(出力用の?)表現だったと
思いますが、昔のことなのではっきり覚えていません。
Smalltalkでは、シンボルを #indexのように表記するので
それと関係があるのかも?
0463デフォルトの名無しさん
2005/11/25(金) 22:29:15本当は実際のコード表記法との乖離という点で今の時代極めて好ましくないんだが、誰も強く言えなかった模様。
0464デフォルトの名無しさん
2005/11/25(金) 23:15:130465464
2005/11/25(金) 23:18:20クラスメソッドと区別するために用いられている表現か
0466デフォルトの名無しさん
2005/11/26(土) 00:46:10クラスメソッドはクラス内に定義されてるメソッドの事だと思うんだけど、
インスタンスメソッドって何?
0467デフォルトの名無しさん
2005/11/26(土) 00:52:24インスタンス化しないと使えないメソッド=インスタンスメソッド
クラス名.メソッド名 の形で呼び出せるメソッド=クラスメソッド
0468デフォルトの名無しさん
2005/11/26(土) 01:23:540469デフォルトの名無しさん
2005/11/26(土) 02:35:07ttp://i.loveruby.net/ja/rhg/book/
0470デフォルトの名無しさん
2005/11/26(土) 03:06:240471デフォルトの名無しさん
2005/11/26(土) 03:19:04< ≡> <`д´>
r´ ̄ハ r´ ハ
∪=i∪∧ ∧∪=i∪
丿八ゝ∩`Д´∩ヽゝ、
と´) し' \`⌒ く し'
(⌒)--(⌒) >>470
\ 丶 ヽ\丶\
0472デフォルトの名無しさん
2005/11/26(土) 04:03:56では、実際のコード表記法と乖離しない表記法とは?
0473デフォルトの名無しさん
2005/11/26(土) 10:46:59に決まってるだろ
0474デフォルトの名無しさん
2005/11/26(土) 11:03:490475デフォルトの名無しさん
2005/11/26(土) 11:05:05にでもしとけ
0476デフォルトの名無しさん
2005/11/26(土) 12:06:360477デフォルトの名無しさん
2005/11/26(土) 12:08:470478デフォルトの名無しさん
2005/11/26(土) 13:19:040479デフォルトの名無しさん
2005/11/26(土) 14:50:36その逆=java
0480デフォルトの名無しさん
2005/11/26(土) 17:58:52詳しく
0481デフォルトの名無しさん
2005/11/27(日) 00:37:53これを素直に "$1", "$2" と書けない所が変態言語。
0482デフォルトの名無しさん
2005/11/27(日) 00:42:470483デフォルトの名無しさん
2005/11/27(日) 01:13:000484デフォルトの名無しさん
2005/11/27(日) 02:21:37str = "foo\n"
$_ = str
chop # => 意味 $_ = "foo", str = "foo\n"
$_ = str
chop! # => 意味 $_ = "foo", str = "foo"
となりますが、$_ も str も同一の "foo\n" オブジェクトを指しているはず
なので、どちらの例も $_とstrがともに "foo" になると思うのですが、
前者はchopされた時に $_ にcloneが呼ばれてそれの\nが削除される
のでしょうか?
0485デフォルトの名無しさん
2005/11/27(日) 02:40:13> chop は $_ の値をコピーして、コピーの方を更新し、 $_ に再代入します。
ということです
0486484
2005/11/27(日) 02:44:520487デフォルトの名無しさん
2005/11/27(日) 02:45:10つまりオブジェクトを複製し、それに対して加工した結果をデフォルト変数$_に束縛する。
>$_ も str も同一の "foo\n" オブジェクトを指しているはず
つまりchopの呼び出しでこの前提が成り立たなくなる。また、
$_ = str
は変数strの参照$_を渡しているだけ。
よってchopが呼び出された後、元のオブジェクトはstrのみに束縛された状態になる。
この辺をきちんと理解したいなら意味論がしっかりした他の言語で勉強した方がいい。
Rubyは無茶苦茶。
0488デフォルトの名無しさん
2005/11/27(日) 02:50:49マニュアルとか。
0489デフォルトの名無しさん
2005/11/27(日) 04:23:07確かに Smalltalk 界隈では String >> indexOf: か String >> #indexOf: を使います。
しかし Smalltalk システム自身による出力も含め、前者が圧倒的にメジャーなので、
Ruby の # とは関係ないような……。
ちなみに後者は、セレクタ(メソッド名)の実体がシンボルであることを受けてと、
実際にメソッドオブジェクト(メソッドの実体。バイトコード)にアクセスする
際に、メソッド名を表わすシンボルを使うことを意識しての表記です。
(426 のおっしゃるとおり、Smalltalk ではシンボルのリテラル表記に # を使います)
例: String compiledMethodAt: #indexOf:
さらに余談ですが、処理系によっては(例えば Squeak システム)#compiledMethodAt: の
エイリアスに #>> をメソッドとして定義してあるものもあるので、String >> #indexOf: が
そのまま評価できたりもします。
で、Ruby の# ですが、私は Java のローカルルールからきたものと思っていました。
http://javafaq.jp/S004.html#S004-07
ただ、このローカルルール自体の出自はわからないので、もしかしたら Smalltalk の
件の表記も一枚かんでいるかもしれません。
0490デフォルトの名無しさん
2005/11/27(日) 10:53:470491デフォルトの名無しさん
2005/11/27(日) 11:51:45skip_until i > 5
p i #=> 6, 7
end
みたいな感じでさくっとかけないですか。flag使わないで。
0492デフォルトの名無しさん
2005/11/27(日) 11:57:39へなちょこ自作のオーバーヘッドってそんなにもあるもんかね
0493デフォルトの名無しさん
2005/11/27(日) 12:02:320494491
2005/11/27(日) 12:07:45処理するんですけど、処理中にブレーカーが落ちて
やり直しになってしまったのです(´・ω・`)ガッカリ・・・
読み終わった部分はやり直す必要ないので
処理が飛ばせるならラクチンかなと。
中断させた処理を、途中から再開させることってよくあるので
簡単な書き方があるなら知っておきたいなと思って質問しました。
0495デフォルトの名無しさん
2005/11/27(日) 13:14:27でいいんじゃねえの?
0496デフォルトの名無しさん
2005/11/27(日) 15:35:06[1,2,3,4,5,6,7,1,2,3].each do |i|
skip_until i > 5
p i #=> 6, 7, 1, 2, 3
end
0497デフォルトの名無しさん
2005/11/27(日) 15:41:59> 例のあげ方が悪かったです。こんな感じにしたいということで。
>
> [1,2,3,4,5,6,7,1,2,3].each do |i|
> skip_until i > 5
> p i #=> 6, 7, 1, 2, 3
> end
[1,2,3,4,5,6,7,1,2,3].each do |i|
next unless i > 5 .. false
p i
end
6
7
1
2
3
0498デフォルトの名無しさん
2005/11/27(日) 16:56:10( ・∀・)つ〃∩ ヘェーヘェーヘェーヘェーヘェー
条件式に範囲式使えるんだねぇ。勉強になった。
> 条件式として範囲式が用いられた場合には、式1が真になるまでは偽を返し、
> その後は式2が真を返すまでは真を返します。式2が真になれば状態は偽に
> 戻ります。..は式1が真になった時にすぐに式2を評価し(awkのように)、 ... は
> 次の評価まで式2を評価しません(sedのように)。
0499デフォルトの名無しさん
2005/11/27(日) 17:05:100500デフォルトの名無しさん
2005/11/27(日) 17:18:530501デフォルトの名無しさん
2005/11/27(日) 17:39:27ext/socket/socket.c
0502デフォルトの名無しさん
2005/11/28(月) 00:58:010503デフォルトの名無しさん
2005/11/28(月) 01:07:060504デフォルトの名無しさん
2005/11/28(月) 22:35:10s + comb1(i, p - 1)
というのをeachを使うとどうなりますか??
0505デフォルトの名無しさん
2005/11/28(月) 22:39:26doに対応するendがないのでそもそも動かない。が正解。
res = 0
(p - 1 .. n - 1).each do |i|
res += comb1(i, p - 1)
end
res
宿題は宿題スレで。
0507デフォルトの名無しさん
2005/11/28(月) 23:37:55知ってる高校生の子が高校の情報の授業で
POV-RAY使ってたりとかして、意外と高度なことを
やってるのかなーとか思ったり思わなかったり。
0508デフォルトの名無しさん
2005/11/29(火) 01:54:17状態遷移ネタとして、むしろ使われやすいのかな
0509デフォルトの名無しさん
2005/11/29(火) 02:25:160510デフォルトの名無しさん
2005/11/29(火) 03:13:11successor。由来は「自然数 successor」とかでぐぐると吉。
0511デフォルトの名無しさん
2005/11/29(火) 09:28:13教育用ならCかJAVAの方がいいと思うんだけどな
何がどうなってどう、ってのは動いてるかRubyじゃわかりにくいと思うが
0512デフォルトの名無しさん
2005/11/29(火) 10:05:07はいはい、そうですね
0513504
2005/11/29(火) 11:09:55専門でCやJAVAなどやる予定です。
0514デフォルトの名無しさん
2005/11/29(火) 11:32:49Cは分かるがJavaが教育用に向いていると思えるのはどういうわけだ
何がどうなってどう、ってのが死ぬほどわかりにくい言語だぞアレ
>>513
あえてRubyを教養に持ってくるという選択がすごい
0515デフォルトの名無しさん
2005/11/29(火) 11:54:400516デフォルトの名無しさん
2005/11/29(火) 14:30:17ヒント:実務重視
ヒント:学習性
教育用なら今更だがPascalみたいに厳格な方がいいと思うけどね。
楽な言語で始めると後で修正に苦労する。
0517デフォルトの名無しさん
2005/11/29(火) 14:49:16http://programming.newsforge.com/print.pl?sid=05/11/23/1638201
0518デフォルトの名無しさん
2005/11/29(火) 14:53:35学校で習うようなJavaのどこに実務性があるんだい?
C知ってるほうがよっぽどJava実務に役立つわい
0519デフォルトの名無しさん
2005/11/29(火) 14:58:420520デフォルトの名無しさん
2005/11/29(火) 15:08:33もしかしたら1人くらいは常用するほどハマッてくれるかもしれないし。
0521デフォルトの名無しさん
2005/11/29(火) 15:39:380522デフォルトの名無しさん
2005/11/29(火) 16:14:150523デフォルトの名無しさん
2005/11/29(火) 16:35:560524デフォルトの名無しさん
2005/11/29(火) 16:45:173年や4年で数値計算するような学部はとりあえずFortranやっとけという感じなんだろう。
0525デフォルトの名無しさん
2005/11/29(火) 16:49:03Lispをさらっと学んでおくと他の言語でも変なプログラム書く確率が減るかもしれない。
0526デフォルトの名無しさん
2005/11/29(火) 23:06:21……ってスレ違いだな。
0527デフォルトの名無しさん
2005/11/30(水) 01:16:01そのelispの関数一覧表みたいなリファレンスマニュアルのHPってどこにあるの?
同じくスレ違いだけど。
0528デフォルトの名無しさん
2005/11/30(水) 03:16:42http://www.python.jp/doc/release/lib/genindex.html
とか。いやまぁ、極端な例だけど。
多くの OOP はルートが1つなので樹系図的で、
クラス毎(≒機能毎)にメンバが揃ってるし、継承も追いやすくて分かりやすい。
lisp のマニュアルは、なんか分散しまくってて疲れまくった記憶があったんで。
ひょっとして、使いやすいオンライン・マニュアルってある?
0529デフォルトの名無しさん
2005/11/30(水) 03:18:24elispのはどこ???
Rubyなら ri とか refe とか
0530デフォルトの名無しさん
2005/11/30(水) 06:21:22いや、だから俺が訊いてたんだけど……あれ?
「elisp の関数一覧表〜」ではなくて、「elisp の、関数一覧表〜」
「elisp には他の言語にある様な関数一覧表〜」って意味だったんだけど。
ごめん、分かり難かったですね。
0531デフォルトの名無しさん
2005/11/30(水) 09:43:28凄いね、Rubyはいつの間にか世界標準になりつつある
まあそれRORのお陰なんだろうけど
0532名無しさん@Linuxザウルス
2005/12/01(木) 12:48:43へんなコードあるとすぐおちるんだけど
0533デフォルトの名無しさん
2005/12/01(木) 15:21:270534デフォルトの名無しさん
2005/12/01(木) 15:56:260535デフォルトの名無しさん
2005/12/01(木) 16:11:490536デフォルトの名無しさん
2005/12/01(木) 16:27:592005-12-01T16:21:43+0900
2005 ⇒ 05にして、末尾の時差”+0900”を取り除いて↓
05-12-01T16:21:43
最後に数字以外の文字(”-” ”T” ”:”)を取り除きたいです。
051201162143
こんな↓感じにしましたが、もっとスマートな方法はありますでしょうか?
date = DateTime.now # 2005-12-01T16:21:43+0900
date1 = date.to_s # 05-12-01T16:21:43+0900
date2 = date1[2..18] #
date3 = date2.delete('T:-') # 051201162143
0537デフォルトの名無しさん
2005/12/01(木) 16:29:01こう↓です。
date = DateTime.now # 2005-12-01T16:21:43+0900
date1 = date.to_s #
date2 = date1[2..18] # 05-12-01T16:21:43+0900
date3 = date2.delete('T:-') # 051201162143
0538デフォルトの名無しさん
2005/12/01(木) 16:32:540539デフォルトの名無しさん
2005/12/01(木) 17:16:510540デフォルトの名無しさん
2005/12/01(木) 17:17:14サンクス。
むちゃむちゃ簡単だ。。orz
0541デフォルトの名無しさん
2005/12/01(木) 17:21:37あっ、そんなんもあるんだ。
ありがとう。
0542デフォルトの名無しさん
2005/12/01(木) 23:34:26そういう用途では駄目かね?winのapacheと連携とかは難しい???
0543デフォルトの名無しさん
2005/12/02(金) 19:41:040544デフォルトの名無しさん
2005/12/02(金) 20:06:39こんなのしか思いつかなかった。(Fooはモジュール名)
0545デフォルトの名無しさん
2005/12/02(金) 20:27:21ありがとう!
↓の文章で「定数」しか表せないのかと勘違いしてたっ。
http://www.ruby-lang.org/ja/man/?cmd=view;name=Module#Module.2econstants
0546デフォルトの名無しさん
2005/12/02(金) 20:32:400547デフォルトの名無しさん
2005/12/02(金) 20:42:33>定数だよ。
........。
はぁっ!
orz ありがとうございました。。。
0548デフォルトの名無しさん
2005/12/02(金) 23:08:06utf-8問題なく扱える?
0549デフォルトの名無しさん
2005/12/03(土) 00:33:08UTF-8 は問題ないっしょ。どこかでマズイという話があった?
0550デフォルトの名無しさん
2005/12/03(土) 00:57:390551デフォルトの名無しさん
2005/12/03(土) 02:32:310552デフォルトの名無しさん
2005/12/03(土) 11:06:00ナニをメールで送るの?
0553デフォルトの名無しさん
2005/12/03(土) 15:26:040554デフォルトの名無しさん
2005/12/03(土) 16:08:45UTF-7にすれば(ry
0555デフォルトの名無しさん
2005/12/04(日) 00:08:30対応するモジュールはありますか?
0556デフォルトの名無しさん
2005/12/04(日) 01:19:55Web::Templateだったかな。
「ruby HTML::Template」で検索してみたら?
0557デフォルトの名無しさん
2005/12/04(日) 02:21:30まあ上位1ビット削ればメール自体は通るけどね。文字化けはするけど電話でもして内容訊けばいい話。
0558デフォルトの名無しさん
2005/12/04(日) 19:46:00わかりにくいよ
0559322
2005/12/04(日) 21:45:570560デフォルトの名無しさん
2005/12/04(日) 23:20:31>>322
基本的には同じ
0561デフォルトの名無しさん
2005/12/04(日) 23:35:40「 { } を使うべき場所なのか do - end を使うべき場所なのか区別しにくくて困ってます」
という質問だというのなら気持ちはわからなくもないけれど。
0562デフォルトの名無しさん
2005/12/05(月) 00:22:52どこの質スレに書き込んだんだ?
とりあえず、優先度が違った筈。
あと、OneLine で済ませたい時などは { ... } が好まれる場合が多い。
そんな感じ?
0564デフォルトの名無しさん
2005/12/05(月) 04:27:19{ } が使えない場所があります
0565デフォルトの名無しさん
2005/12/05(月) 07:34:11もしかして while とかの省略可能な do の話?それなら do end とは別モノだ。
0566デフォルトの名無しさん
2005/12/05(月) 09:14:260567デフォルトの名無しさん
2005/12/05(月) 11:56:23ttp://2lbox.org/?group=20
--- 以下引用 ---
FrogBoard Ruby版用につくったPerl HTML::Template互換
HTMLテンプレートモジュール。
対応タグ
<TMPL_VAR>
<TMPL_IF>
<TMPL_UNLESS>
<TMPL_LOOP>
<TMPL_INCLUDE>
0568デフォルトの名無しさん
2005/12/05(月) 22:39:10これは普通の変数とは違うのでしょうか?
attr :val1, :val2
0569デフォルトの名無しさん
2005/12/05(月) 23:05:010570デフォルトの名無しさん
2005/12/06(火) 08:54:23ありがとうございます。
ということは値を代入することはできないと、理解してよろしいでしょうか?
0571デフォルトの名無しさん
2005/12/06(火) 09:47:26入もできない。というかそういうモノではない。
シンボルは一種の文字列と考えるといいと思う。
ただし、コンパイル時に数値に変換されている。だから比較はメチャ速いけど
文字列として弄ることはできない、という感じで理解すればいいんじゃないかな。
0572デフォルトの名無しさん
2005/12/06(火) 11:49:490573名無しさん@Linuxザウルス
2005/12/06(火) 12:33:370574デフォルトの名無しさん
2005/12/06(火) 12:43:20例えばこんなのはいかが?
s = "あいうえおかきくけこ"
x = /^.{5}/e.match( s ).to_s
puts( x )
s = "あいうえおかきくけこ"
x = s.scan( /^.{5}/e ).first
puts( x )
0575デフォルトの名無しさん
2005/12/06(火) 12:44:581つ書き忘れました。正規表現の直後の"e"はEUC-JPの場合です。
漢字コードに合わせてsとかuに変えてくださいね。
0576デフォルトの名無しさん
2005/12/06(火) 13:08:20$KCODE='e'
s = "あいうえおかきくけこ"
puts s.split(//)[5]
0577デフォルトの名無しさん
2005/12/06(火) 13:15:04ハッシュのキーに使うとか
0578デフォルトの名無しさん
2005/12/06(火) 13:33:46それを参考に作られたようなもんです
C の #define みたいなもんです
switchで使うと速いとか
0579デフォルトの名無しさん
2005/12/06(火) 13:50:05>それを参考に作られたようなもんです
さすがにそれはないだろ
>C の #define みたいなもんです
むしろenumだと思う
0580デフォルトの名無しさん
2005/12/06(火) 14:45:50その正体はCのenumって感じだね。>Rubyのシンボル
文字列と可換なわけでもなく、値を束縛できるわけでもなく…
0581デフォルトの名無しさん
2005/12/06(火) 14:51:12ありがとうございます。
なんとなく理解できました。
0582デフォルトの名無しさん
2005/12/06(火) 14:54:22val = 3;
if (val==:val) ・・・
たまたま、:valが”3”に変換されて、このif文が正になることがあるのでしょうか?
0583デフォルトの名無しさん
2005/12/06(火) 15:12:02「数値」という説明は便宜的なものにすぎない。もちろん Ruby 内部では数値
化されて管理されているけれど、 Ruby レベルの「3」という値も、 Ruby 内
部でそのまま利用するわけでなく、値が重ならないように適宜管理されている。
したがって 582 のような状況は絶対に起こらない。
詳しくはRHGの最初の方に書いてあるよ。
0584デフォルトの名無しさん
2005/12/06(火) 15:12:07「if( val.to_i == :val.to_i )」ならあり得るかも。
「if( val == :val )」ならクラスが違うので一致しないのでは?
整数に変換して比較すると決まってるわけでもない(はず)だし。
0585デフォルトの名無しさん
2005/12/06(火) 15:23:35ありがとうございます。
なんとなく理解できました。
0586デフォルトの名無しさん
2005/12/06(火) 15:55:39>>584
了解。
普通に使う分には問題なしね。
0587デフォルトの名無しさん
2005/12/06(火) 19:08:28抜けがあると思うんで補完よろ。
ttp://www.lost-season.jp/mt/2005/10/2005102321.html
ttp://d.hatena.ne.jp/secondlife/20051026/1130319610
ttp://yowaken.dip.jp/tdiary/20051026.html#p05
ttp://jarp.does.notwork.org/diary/200510c.html#200510272
ttp://arton.no-ip.info/diary/20051028.html#p02
ttp://mput.dip.jp/mput/?date=20051028#p01
0589デフォルトの名無しさん
2005/12/07(水) 10:02:53s.slice(/\A.{5}/m)
s[/\A.{5}/m]
0590デフォルトの名無しさん
2005/12/07(水) 11:13:490591デフォルトの名無しさん
2005/12/07(水) 11:33:12kcode.rb を使うのが一番オーソドックスな方法
0592デフォルトの名無しさん
2005/12/07(水) 11:33:35ありがとう。
0593デフォルトの名無しさん
2005/12/07(水) 14:42:090594デフォルトの名無しさん
2005/12/07(水) 14:50:080595デフォルトの名無しさん
2005/12/07(水) 15:09:170596デフォルトの名無しさん
2005/12/08(木) 19:18:56(flatten が再帰的じゃないバージョン)
はないでしょうか?
0597デフォルトの名無しさん
2005/12/08(木) 19:44:53flatten に引数つけて再帰しないバージョンを選べるように(あるいは最大深さを指定)
みたいな案が出たけどそのI/Fはどうかみたいな理由で却下されたような記憶が
0598デフォルトの名無しさん
2005/12/08(木) 20:16:03Rubyについて Part 18
http://pc8.2ch.net/test/read.cgi/tech/1133988248/
0599デフォルトの名無しさん
2005/12/08(木) 22:55:55-r debug で起動すると文字化けしないんですが,
なんでだろう...?
0600デフォルトの名無しさん
2005/12/08(木) 23:19:100601デフォルトの名無しさん
2005/12/09(金) 00:50:53p [1,[2,[3,[4,5]]]].inject([]) {|r,v| Array === v ? r.push(*v) : r.push(v)}
[1, 2, [3, [4, 5]]]
0602デフォルトの名無しさん
2005/12/09(金) 00:53:370603デフォルトの名無しさん
2005/12/09(金) 01:22:18その現象を再現できてなるべく短かいスクリプトを作って、
ここに出してみると誰か分かるかも。
0604デフォルトの名無しさん
2005/12/09(金) 06:47:37#!/Usr/bin/ruby -Ku
require "curses"
include Curses
init_screen
begin
crmode
setpos(1, 1)
addstr ("日本語")
refresh
getch
ensure
close_screen
end
0605デフォルトの名無しさん
2005/12/09(金) 07:57:17め、面倒な
0606デフォルトの名無しさん
2005/12/09(金) 09:14:280607デフォルトの名無しさん
2005/12/09(金) 09:58:59最近は引く手数多で一生食い扶持に困らんだろうて。
0608デフォルトの名無しさん
2005/12/09(金) 10:09:130609デフォルトの名無しさん
2005/12/09(金) 11:46:15そのスクリプトはUTF-8になってるとして、
実行環境はどうなってますか?
OSは?
xterm、krxvt、mlterm、その他の端末環境で?
LANGの設定は?
0610デフォルトの名無しさん
2005/12/09(金) 12:47:190611デフォルトの名無しさん
2005/12/09(金) 14:40:46バカですまん. こんな風になっとります
ruby 1.8.3
MacOS X 10.4.3
LANG=ja_JP.UTF-8
TERM=xterm-color
Terminal.app 文字セットエンコーディング UTF-8
スクリプトのエンコーディング UTF-8
0612デフォルトの名無しさん
2005/12/09(金) 18:01:17にアクセスしようとして、以下のようなプログラムを組んだのですが
timeout.rb:42:in `rbuf_fill': execution expired (TimeOut::Error)
というエラーになってしまいます。
require 'net/http'
Net::HTTP.version_1_2
Net::HTTP.start( "www.ebookoff.co.jp", 80 ){ |http|
p http.get( "/ebhtml/cam_2005satei/index.html" )
}
ブラウザからhttp://www.ebookoff.co.jp/ebhtml/cam_2005satei/index.htmlに
アクセスした場合は正常に表示されるのですが、何が原因なのでしょうか?
ちなみにebookoff.co.jp以外だと、rubyからでもアクセスできます。
0613デフォルトの名無しさん
2005/12/09(金) 18:02:31http://aa5.2ch.net/test/read.cgi/nida/1130995497/
詳細は、ここをクリック↑しる
0614デフォルトの名無しさん
2005/12/09(金) 19:05:53$ wget http://www.ebookoff.co.jp/
# 動く
$ wget --user-agent=Mozilla http://www.ebookoff.co.jp/
USER_AGENT 見て拒絶してるらしい
0615デフォルトの名無しさん
2005/12/09(金) 22:06:020616デフォルトの名無しさん
2005/12/09(金) 22:57:44その上で、JavaScriptのテストができてるブラウザだけ許可とか。
0617612
2005/12/10(土) 00:48:48ありがとうございまししした。
0618デフォルトの名無しさん
2005/12/10(土) 02:03:03クライアント側からみたcookieの扱い方についてかいてあるサイトを知っていれば教えてください。
0619デフォルトの名無しさん
2005/12/10(土) 02:23:15つ ttp://www.ietf.org/rfc/rfc2965.txt
不足ならぐぐるさんにでも聞くがよろし。
0620デフォルトの名無しさん
2005/12/10(土) 14:27:40visualuRubyではどんなクラスを使えば作りやすいですか?
それとも罫線引いたりは自作しないとダメですか?
0621デフォルトの名無しさん
2005/12/10(土) 15:05:34ttp://www.forest.impress.co.jp/article/2001/09/28/cassavaeditor_1r.html
0622デフォルトの名無しさん
2005/12/10(土) 15:07:40この講義資料がとても参考になったよ。
http://www.soi.wide.ad.jp/class/20040031/slides/10/72.html
「安全なWebアプリ開発の鉄則 2004 - 高木 浩光」:
http://www.soi.wide.ad.jp/class/20040031/slides/09/
0624デフォルトの名無しさん
2005/12/10(土) 21:11:11配列成分をくっつけてでっかい文字列にしたいときに配列に対して使えばできるな。
0625デフォルトの名無しさん
2005/12/10(土) 23:52:110626デフォルトの名無しさん
2005/12/11(日) 08:13:10っていうような設定をlog4rでできますか?
0627デフォルトの名無しさん
2005/12/14(水) 18:11:200628デフォルトの名無しさん
2005/12/14(水) 21:05:02Hackすれば?
0629デフォルトの名無しさん
2005/12/15(木) 02:02:29Tcl使えば?
0630デフォルトの名無しさん
2005/12/15(木) 18:50:12wp.puts "foo"
p rp.gets
この puts や gets を似たメソッドの write などに変更すると
止まってしまうのですが、どうしてでしょうか?
0631デフォルトの名無しさん
2005/12/15(木) 19:13:350632デフォルトの名無しさん
2005/12/15(木) 19:14:15gets も write に変えたわけじゃないよな?
具体的にどう変えたのかコードを出せよ。
まあ、write + gets で出力に改行文字がないとか、write + read で read に引数なしとかなんだろうけどな。
0633デフォルトの名無しさん
2005/12/15(木) 20:48:08改行の有無でした。ありがとう。
良く分からないけど、改行が何かの役割を持ってるのかな。
これはスレ違いですね。
もうひとつ質問です。
# main.rb
IO.popen('ruby ./sub.rb', 'w') do |io|
io.puts gets
end
# sub.rb
while true
puts gets
sleep 1
end
以上2つのスクリプトを用意して
$ ruby main.rb
foo
とすると、sub.rb の2ループ目以降は gets で待ち状態にならないのですが、どうしてでしょうか?
0634デフォルトの名無しさん
2005/12/15(木) 21:00:590635633
2005/12/15(木) 21:33:29裏方なので、標準入力を待たないで nil を受けてループが廻ってるという印象ですが。
というか、以前から gets で待ってくれること自体が不思議だなぁと。
標準入力からの入力を待つようなものとやり取りするには、どうすれば良いんだろ。
Process や Thread で待たせたり、reopen で再接続すればできるのだろうか。
ちと、暇潰しに学習してみます。誰か気が向いたら、ポインタ貰えると助かります。
0636デフォルトの名無しさん
2005/12/16(金) 20:15:08が、引数リストがいちいちえっらい長くなるのが不満です。
スクリプトの最初に変数とか定数(なローカル変数)とかたくさん書いてるのも
なんか手法的に間違った方向を向いてる気もします。
#/usr/bin/ruby
val1="なんとか"
val2="かんとか"
val3="よいとか"
arr1=Array.new
: ←20個くらいある
hoge(val1,val2,val3,val4) ← これがなんかかっこ悪い
hage(val1,val5,mage(val2,val3),val6) ←入れ子とかやめたい
次は何を勉強すればきれいに書くようになると思われますか?
0637デフォルトの名無しさん
2005/12/16(金) 20:18:130638デフォルトの名無しさん
2005/12/16(金) 20:35:080639デフォルトの名無しさん
2005/12/16(金) 20:51:09どうすればよいのでしょう?
Enterを使わず、”[Q]で終了”って感じのことがしたいんです。
0640636
2005/12/16(金) 21:00:17ああ、そんな言葉は聞いたことが…インスタンスインスタンス…
「タイ焼き(インスタンス)」
('A`)
でも、なんとなく勉強する先はわかった気がします。ありがとうです。
0641デフォルトの名無しさん
2005/12/16(金) 21:04:590642デフォルトの名無しさん
2005/12/16(金) 21:23:040643デフォルトの名無しさん
2005/12/16(金) 21:34:48汎用的な方法はない。
というわけで、プラットフォームは何?
0644デフォルトの名無しさん
2005/12/16(金) 23:12:180645デフォルトの名無しさん
2005/12/16(金) 23:14:400646デフォルトの名無しさん
2005/12/16(金) 23:15:44「次」はHashクラスとかでもいいかもよ。
オブジェクト指向なんてRuby使ってるうちにわかってくるんじゃないか?
はじめは勉強するより、コードを書いていろいろ試するほうがいいかも。
0647デフォルトの名無しさん
2005/12/17(土) 07:35:39Rubyをシェルスクリプト的に書き捨て言語として使用してると虫食いのように残るのは
クラスやインスタンスの自作と活用の部分だから、きっとそこが足りないんだろう。
無理してそのへんに手を出さなくてもいいことも多いけど。コードを再利用しないなら尚更。
0648デフォルトの名無しさん
2005/12/17(土) 08:02:54自作スクリプトをるびまの添削に投稿してみるとか。
0649デフォルトの名無しさん
2005/12/17(土) 11:31:300650デフォルトの名無しさん
2005/12/17(土) 13:05:06Perlの場合はTerm::ReadKey を使用していました。
0651デフォルトの名無しさん
2005/12/17(土) 13:16:17なるほどと思うところだけ参考にすりゃいいかと。
0652639
2005/12/17(土) 16:05:05> 汎用的な方法はない。
そっか。とりあえずそれを知りたかったのですっきりしました。
> というわけで、プラットフォームは何?
linux と cygwin で動かしたい。
0653デフォルトの名無しさん
2005/12/17(土) 17:30:48require 'set
set1 = Set::new(enum = nil)
for arg in ARGV
f = open(arg)
while line = f.gets
line2 = line.split(' ')
set1.add(line2[4])
end
f.close
end
と書くと、line2 = line.split(' ')のところでunterminated string meets end of fileになります。
ちなみに、文字コードはShift-JISです。 もしよければ、解決策を教えてください。
0654デフォルトの名無しさん
2005/12/17(土) 17:59:04クラスを定義してメソッドを覚えると、すくなくとも引数はいっこ減ります。
あとは柔軟に改行入れたり、コーディング規約にそった書き方してみると割と読みやすくなる。
http://shugo.net/ruby-codeconv/codeconv.html
0655デフォルトの名無しさん
2005/12/17(土) 20:05:04一行目の文字列が閉じてない
0656デフォルトの名無しさん
2005/12/17(土) 21:15:34っていうかエラーメッセージそんなにわかりにくいかしら。
0657デフォルトの名無しさん
2005/12/17(土) 22:32:32まぁ色分けエディタあれば、こっちの仕様の方が便利なときが多いんだけどね。
0658デフォルトの名無しさん
2005/12/18(日) 00:24:08end def
end if
end do.....
こういう文法ほしいなあ
0659デフォルトの名無しさん
2005/12/18(日) 00:25:17end #class
end #def
end #if
end #do.....
とでも書いてろ。
0660デフォルトの名無しさん
2005/12/18(日) 01:13:130661デフォルトの名無しさん
2005/12/18(日) 01:21:46ムリ。既存文法と衝突する。
i = 0
if i==0
end if
p i
↑これコンパイル通るからね。
0662デフォルトの名無しさん
2005/12/18(日) 15:52:19インデントして >>659 のように書く
インデントを自動調整してくれて色分けしてくれるエディタを使う
0663デフォルトの名無しさん
2005/12/18(日) 16:03:02fed
fi
od
0664デフォルトの名無しさん
2005/12/18(日) 17:06:09なにそのBシェル
0665デフォルトの名無しさん
2005/12/18(日) 19:40:24プログラム全体をクラスにすればよい。
# メインプログラムを表すクラス
class Main
def initialize(val1, val2, val3)
@val1 = val1
@val2 = val2
@val3 = val3
@arr1 = Array.new
end
def hoge
# @val1, @val2, @val3 を使う
@val1 = ...
@val2 = ...
@val3 = ...
end
def execute
hoge()
hage()
....
end
end
# メインプログラムを実行
if __FILE__ == $0
main = Main.new("..", "..", "..")
main.execute()
end
0666デフォルトの名無しさん
2005/12/18(日) 22:21:480667デフォルトの名無しさん
2005/12/18(日) 22:22:180668デフォルトの名無しさん
2005/12/18(日) 22:29:590669デフォルトの名無しさん
2005/12/18(日) 23:13:50(変数名や定数名は、オブジェクト名じゃないから)
0670デフォルトの名無しさん
2005/12/19(月) 00:04:16クラスを作ること自体かなり大げさ(というか大ごと)だと思う。
複数人がメンテナンスするプロジェクトっぽい。
オブジェクト指向的に正しいクラス名とメソッド動作とはこの場合何ぞやとか
そういうことに悩まなくても
オブジェクト指向の便利なとこだけを利用できるのがRubyのいいとこだと思うし。
0671デフォルトの名無しさん
2005/12/19(月) 00:26:56手続き的に書いてとっ散らかってきたら(構造の繰り返しが現れる)
トップレベルでメソッドを定義、
それでも読みにくい(共通して使う変数があるなど)ならクラスを導入してる。
経験上、コードが数十行を超えるとクラスが必要になってくるよ。
0672デフォルトの名無しさん
2005/12/19(月) 00:44:18クラスを適当に作るのは若干の慣れが要るからなあ
0673デフォルトの名無しさん
2005/12/19(月) 00:49:35とにもかくにも作ってみないと慣れることもできませんので、
"クラスを作るとどうなるかな?"と思った時点でやってみるのが良いかと。
ぐだぐだの自己流のまま突き進んでしまうことさえなければ...。
0674デフォルトの名無しさん
2005/12/19(月) 01:21:39>>636 で
> 引数リストがいちいちえっらい長くなるのが不満です。
とかいてあるんだから、クラスを1つ作ってインスタンス変数を使えば
いちいち引数をいくつも渡す必要がなくなる。
それが >>665 だろ。
あとはグローバル変数をバリバリ使うか。
クラス作るのがいやなら、クラスを作らずに636の悩みを解決するようなプログラムを
670が示せ。
0675デフォルトの名無しさん
2005/12/19(月) 01:52:18クラスの生成くらいで腰が引けてちゃ問題アリだろ。OOP なんだから。
などと言いつつも、機会がなくて Ruby では Module や継承を使ったことがない俺。
0676デフォルトの名無しさん
2005/12/19(月) 16:45:32作っておけばちょっと適用範囲の狭いグローバル変数が使える、
くらいの気持ちでとりあえずおk
慣れておけばあとから便利な道具を使って楽できるようになったりする
0677デフォルトの名無しさん
2005/12/19(月) 19:03:340678デフォルトの名無しさん
2005/12/19(月) 19:48:13クラスが何かよくわからなくても、この程度は使えるだろ。
わからないままにこねくりまわすうちに、何か見えてくるかも。
class Hoge
def initialize(argv)
end
def execute
#ここに処理を書く
end
end
# メインプログラムを実行
if __FILE__ == $0
hoge = Hoge.new(ARGV)
hoge.execute()
end
0679デフォルトの名無しさん
2005/12/19(月) 20:58:160680デフォルトの名無しさん
2005/12/19(月) 22:21:20いやでない方法をとにかく模索するのが大事なんじゃねーか?
少なくとも >>636 はいやなものは分かってるんだから。
周りがクラスだ大げさだ言う必要はねーだろ。
0681デフォルトの名無しさん
2005/12/19(月) 22:27:25クラスを作るかどうかの話題になってるんだと思ってたけど。
0682デフォルトの名無しさん
2005/12/19(月) 23:02:05大げさ?
思い込みだ、ばか
0683デフォルトの名無しさん
2005/12/20(火) 10:34:25文字エンコードについての質問です。
ruby1.8.3,visualuruby,FormDesignerを使って勉強中です。
現在メモ帳(とりあえず、テキストファイルを開いて内容
をテキストフィールドに出力するのみ)を、他のサンプル
ソースを見ながら勉強しています。
メニューバーからFile->openを選択すると、ダイアログが
でてファイルを選択し、内容を見ることができるようには
なったのですが、そのファイルのエンコードによって文字
化けしてしまいます。エンコード形式が違っても、文字化
けせずに開くことはできないでしょうか?できるならヒン
トや方法を教えていただけませんか。
よろしくお願いします。
0684デフォルトの名無しさん
2005/12/20(火) 11:16:30メモ帳じゃなくてワードパッドで開いてみるとどうでしょう?
0685デフォルトの名無しさん
2005/12/20(火) 11:18:54メモ帳++でも萌ディタでもemacsでもxyzzyでも好きなの使って探してください。
0686683
2005/12/20(火) 11:38:48レスありがとうございます。
すいません、”メモ帳”を作成しているという意味です。
0687デフォルトの名無しさん
2005/12/20(火) 11:39:520688デフォルトの名無しさん
2005/12/20(火) 11:46:22なぁるほど。読み違えました...。
任意の文字コードのテキストファイルを文字化けせずに読みたいということなら、
nkf、iconv、uconvなど好みのライブラリで文字コードを識別・変換するような
処理を組み込めば良いかと。その"メモ帳"としてはshift JISを想定?
ファイルを保存する時は逆方向の変換を施すことになりますので、
開く時に識別した文字コードを記憶しておくことも必要でしょう。
ご健闘を!
0689683
2005/12/20(火) 13:49:25"conv"で色々調べてみたのですが、
すでに組み込まれているKconvを
使ってみることにしました。
結果として、うまく表示することが
でき、またひとつ勉強になりました。
ありがとうございました。
>>皆様へ
また質問があったときにお世話になる
ことかとおもいますが、よろしくお願
いします。
0690デフォルトの名無しさん
2005/12/20(火) 14:25:05>また質問があったときにお世話になる
>ことかとおもいますが、よろしくお願
>いします。
嫌です。
0691683
2005/12/20(火) 14:41:170692デフォルトの名無しさん
2005/12/20(火) 15:14:23RDE使ってRubyいじってるんだけど、Tcl使えるようにするにはどうすればいいの?
Tcl Developer Siteから、TclとTkらしきものは落としたんだが。
0693デフォルトの名無しさん
2005/12/20(火) 15:50:53のように、配列でTkButtonを作ることはできないでしょうか?
何個もボタン作るときにfor文で作りたいし、
配列で管理したいんですが。
0694デフォルトの名無しさん
2005/12/20(火) 15:58:02実例を見ながら勉強したいので。英語でもOKです。
0695デフォルトの名無しさん
2005/12/20(火) 17:13:05buttons = Array.new(10) {TkButton.new}
0696デフォルトの名無しさん
2005/12/20(火) 17:38:56中でカウンタ用変数を用意して5で割る条件分岐の他に方法があったりしますか?
回数が保存されてる組み込み変数は無いみたいなんですが。
0697デフォルトの名無しさん
2005/12/20(火) 18:10:23each_with_index
0698デフォルトの名無しさん
2005/12/20(火) 19:04:30をを
0699デフォルトの名無しさん
2005/12/20(火) 20:49:54「取り除いた値を返す」って取り除いた要素1個そのものが返るのね。
取り除いた後に残った配列がのコピーとかが直接返るわけじゃないのね。寝よ寝よ
0700デフォルトの名無しさん
2005/12/20(火) 21:44:400701デフォルトの名無しさん
2005/12/20(火) 22:25:14どうすれば出来るのでしょうか?
0702デフォルトの名無しさん
2005/12/20(火) 22:26:41どうやれば良いのでしょうか??
0703デフォルトの名無しさん
2005/12/20(火) 22:28:490704デフォルトの名無しさん
2005/12/20(火) 22:39:190705デフォルトの名無しさん
2005/12/20(火) 22:53:230706デフォルトの名無しさん
2005/12/20(火) 23:19:02サンクスです!
0707デフォルトの名無しさん
2005/12/20(火) 23:25:09DLする必要があるのですか?
DLするんだとしたらどこでDL出来るのか教えてください。。
0708デフォルトの名無しさん
2005/12/20(火) 23:26:530709デフォルトの名無しさん
2005/12/20(火) 23:28:23ここはあえて放置
0710デフォルトの名無しさん
2005/12/20(火) 23:29:23失礼しましたorz
WinXP、ruby1.8.2 mswin32で、RDEを使ってます!
0712デフォルトの名無しさん
2005/12/20(火) 23:42:130713デフォルトの名無しさん
2005/12/21(水) 00:53:08文字コードってまじめに遣ると氏ねるよ。
sjis=>utf=>sjisなんて変換して戻してみると文字化けしてたりコードが変わってる罠。
変換せずに処理する(非破壊処理)のが最強。
0714デフォルトの名無しさん
2005/12/21(水) 01:29:510715デフォルトの名無しさん
2005/12/21(水) 01:29:57あのへんはシチュエーションによっては直感的ではない。
arr = ["test","60","75","80","100","80"]
hash=Hash.new
hash.store( arr[0], arr.pop )
p hash["test"]
さてなんと表示されるでしょう、みたいな。
0716デフォルトの名無しさん
2005/12/21(水) 01:47:460717デフォルトの名無しさん
2005/12/21(水) 02:00:32と一瞬思ったが array.cdr が何を指してれば真っ当なのかよくわからなくなったのでやっぱ無し
0718デフォルトの名無しさん
2005/12/21(水) 02:13:16もしくは、
$ ruby -e 'p [0, 1, 2].shift'
して終わりだな。一瞬で確認できる。
こういった所が、Ruby の大きな利点の一つだと思う。
0719デフォルトの名無しさん
2005/12/21(水) 02:21:410720デフォルトの名無しさん
2005/12/21(水) 02:24:52その時はpush/pop/empty?くらいしか使わないから、先頭か末尾かなんて気にしないし。
意味的にスタックにプッシュじゃなくて配列に追加する時は<<を使う。
0721デフォルトの名無しさん
2005/12/21(水) 02:26:11pop! や shift! にする理由がわからないですぅ><
0722デフォルトの名無しさん
2005/12/21(水) 02:39:09deleteとかと一緒で、単語自体に自明な破壊的意味がある。
という屁理屈はどうだろう
とりあえず>>715はpopの使い道間違ってたな。
リファンレンスの説明上では「使えそう」でスレ的にちと紛らわしいのは確かかも。
arr.slice(1,arr.size) が期待のものを直接返すけど、ちょっとカッコわるい?
0723デフォルトの名無しさん
2005/12/21(水) 17:10:35`!' を付加する定義が良く分からないが、
非破壊的動作がある場合のみ `!' を付けて区別してるのだろうか。
他の言語はもっとグダグダだから、気にしたことなかった。
0724デフォルトの名無しさん
2005/12/21(水) 18:00:570725デフォルトの名無しさん
2005/12/21(水) 18:26:190726デフォルトの名無しさん
2005/12/21(水) 19:16:310727デフォルトの名無しさん
2005/12/21(水) 19:35:17返す値も動作で残った配列も同じだけれど、delete_atとpopやshiftは意図が違う。
だから、単に配列の最後を削除したいときにはpop使ったら駄目。紛らわしいから。
0728デフォルトの名無しさん
2005/12/21(水) 21:59:03ぐぐってみたけど、あまりよさそうなのは見つからんかった。
とりあえず、行番号をつけて表示するスクリプト:
i = 0
while line = gets()
i += 1
print("#{i}: #{line}")
end
#しょぼッ!
0729デフォルトの名無しさん
2005/12/21(水) 22:23:08学習用なら一行野郎とかOneLinerとかでその都度ググればすむかと。
0730デフォルトの名無しさん
2005/12/21(水) 22:26:34vr/clipboard.rb が使えそうなんで見てみましたが、open( ) のカッコの中に
何を入れればいいのか分からないです。
もし、もっと簡単にやる方法があれば教えてください。
0731デフォルトの名無しさん
2005/12/21(水) 22:33:180732デフォルトの名無しさん
2005/12/21(水) 22:37:25ActiveScriptRuby 1.8.2.5 です。
0733デフォルトの名無しさん
2005/12/22(木) 00:00:160734デフォルトの名無しさん
2005/12/22(木) 00:34:410735デフォルトの名無しさん
2005/12/22(木) 00:40:20お前の兄貴は腹が減ったら自分でご飯を炊いたもんだぞ!!
0736デフォルトの名無しさん
2005/12/22(木) 01:23:25> さてなんと表示されるでしょう、みたいな。
この問題の意図が不明。なぜhash?何がどう直感的でないのか?
0737デフォルトの名無しさん
2005/12/22(木) 01:23:370738デフォルトの名無しさん
2005/12/22(木) 08:45:18俺の直感通り"80"が表示されたけど、お前の直感って何が表示されると思ったの?
0739デフォルトの名無しさん
2005/12/22(木) 09:24:13>>736さんおはよう
0740デフォルトの名無しさん
2005/12/22(木) 09:31:15どっかに、!をつける基準は同名のメソッドがあった場合に!がついてるほうがより破壊的って意味だと書いてあった希ガス。
!をつけるかつけないかは絶対的な基準(〜は破壊的)ではなく相対的な基準(〜の方が破壊的)だと思う。
0741デフォルトの名無しさん
2005/12/22(木) 10:13:440742デフォルトの名無しさん
2005/12/22(木) 12:09:300743デフォルトの名無しさん
2005/12/22(木) 12:30:21popしたスタックがpushされた状態に破壊される
0744デフォルトの名無しさん
2005/12/22(木) 12:31:58何をpushするんだろう...?
0745デフォルトの名無しさん
2005/12/22(木) 14:42:240746デフォルトの名無しさん
2005/12/22(木) 17:33:12まじウザい
0747デフォルトの名無しさん
2005/12/22(木) 19:02:250748デフォルトの名無しさん
2005/12/22(木) 21:04:29tf2 = GetTerm.tf(name,setname)
idf2 = GetTerm.idf(setname,name,"50000")
p idf2
このプログラムでsyntax errorがおきます。このコードの中で間違ったところがあれば教えていただけませんか?
上記のクラスの定義はきっちりやっているつもりですが、もしかしたら不完全かもしれませんので、そちら側のミスということも考えられなくもないんですが、何度もチェックしているので・・・
0749デフォルトの名無しさん
2005/12/22(木) 21:16:04p idf2
の行でエラーが起きます
0750デフォルトの名無しさん
2005/12/22(木) 21:20:52意味不明なこというなキチガイが
0751デフォルトの名無しさん
2005/12/22(木) 21:21:56これだけみれば、syntax errorはでないように見えます。
全部をさらすか、問題点を絞り込んでください。
あと、「エラーが起きます」だけでなく、実際にどのようなエラーが表示されるかを書いてください。
よろしくお願いします。
0753デフォルトの名無しさん
2005/12/22(木) 23:00:370754デフォルトの名無しさん
2005/12/22(木) 23:25:27すくなくともエラーメッセージもわからない、コードも手元にないという状況
でエラーを絞り込めると思っている方がおかしいだろう。
p してはじめてエラーってことはとりあえず inspect が怪しいとかかねえと
いぐらいの意見しか出てこないと思う。
0756デフォルトの名無しさん
2005/12/22(木) 23:40:27あ、わかったぞ文法上のエラーじゃねーか?w
0757デフォルトの名無しさん
2005/12/23(金) 00:07:54pの後が全角スペースだ。
0758デフォルトの名無しさん
2005/12/23(金) 00:23:500759デフォルトの名無しさん
2005/12/23(金) 00:28:170760デフォルトの名無しさん
2005/12/23(金) 00:53:09問題点を絞り込むのが面倒だから聞いてるのに、まったく・・・
0761デフォルトの名無しさん
2005/12/23(金) 02:22:36書いた人が間違っているから
書いた人が間違っているから
書いた人が間違っているから
書いた人が間違っているから
書いた人が間違っているから
書いた人が間違っているから
書いた人が間違っているから
書いた人が間違っているから
書いた人が間違っているから
書いた人が間違っているから
0762デフォルトの名無しさん
2005/12/23(金) 08:01:02TFIDFってことは、文書検索だな?そしてこのスキルから察するに学生で
講義の課題か卒研かでそういうシステムを作ってるんだろう?
大方残された時間があまり無くて切羽詰ってきて、自分で解決できないから
ここで聞いてるってところだろう。ただそれ、人にものを頼む態度じゃなから。
>idf2 = GetTerm.idf(setname,name,"50000")
まず3行目が怪しい。なぜ第3引数の50000を数値ではなく文字列で渡す
必要がある?察するに50000って数字はに(IDFを求めるための)全体の文書数だと
思うんだが、目的を考えればこれは数値で渡すのが自然だ。
数値と文字列の違いが分かっていないなら、Rubyはお前にはまだ早い。
もし言語が選べるなら、もっとメジャーでドキュメントがそろった言語にした方が
いいぞ。(JavaとかPerlとか)
「クラス定義はきっちりやっている」?ハァ?
お前が貼り付けた4行ののうち、最初の3行を見ただけでもお前のいうクラス定義の
デタラメさが想像付くのだが。特に文書検索分野をやろうとしてるなら、もう根本的な
ところから間違ってるレベル。大方、目の前にプログラムを動かそうと躍起になってるん
だろうけど、このままじゃ完成はおぼつかないな。
煽りじゃないけど、お前、もっと基本的なところからやり直したほうがいいぞ。
0763748
2005/12/23(金) 09:17:16Ruby知らんくせに出てくんなよ
>>762
>まず3行目が怪しい。なぜ第3引数の50000を数値ではなく文字列で渡す
バカかお前。syntax errorが起きてるっつってんだろ!
そんなこと今は問題じゃねーんだよww
ケチつけたいだけだろばーーーーーか
>「クラス定義はきっちりやっている」?ハァ?
>お前が貼り付けた4行ののうち、最初の3行を見ただけでもお前のいうクラス定義の
>デタラメさが想像付くのだが
ハァァァァ?お前の貼り付けた21行のうち、中間の3行見ただけでもお前の言うレスの
デタラメさが証明できるのたが。特に俺のご指導ご鞭撻をやろうとしてるなら、もう抜本的な
ところから間違ってるレベル。大方、目の前の俺様を煽って性的興奮を得ようと躍起になってるん
だろうけど、このままじゃ射精もおぼつかないな。
煽りじゃないけど、お前、幼稚園からやり直したほうがいいぞ。
0764デフォルトの名無しさん
2005/12/23(金) 09:30:310765748
2005/12/23(金) 09:35:17お前も面白くないけど、だから何?
0766デフォルトの名無しさん
2005/12/23(金) 10:41:21たぶんそこよりずっと前に typo とか(カッコの閉じ忘れ、クォーテーション忘れとか)
があって、そういうのが巡り巡ってそこで構文エラーになってるんだろ。
0767デフォルトの名無しさん
2005/12/23(金) 10:46:01はい、次の話題どうぞ↓
0768デフォルトの名無しさん
2005/12/23(金) 11:01:11syntax errorの原因はその4行以外にある可能性がきわめて高い、ということだよ。
>上記のクラスの定義はきっちりやっているつもりですが(中略)何度もチェックしているので・・・
バグが取れないのって、大抵こういう思い込みが原因なんだよな。
これは予想(コードが無いから予想するしかない)だけど、
「クラス定義はきっちりやっているつもり」
でいる限り、そのバグは取れない」よ。
だから、コードを貼り付けてお前以外の別の目でチェックしてもらった方が早いって言ってんの。
それから、Rubyインタプリタがsyntax errorでその4行のどれかを指しているからといって、
そこに原因があるとは限らないぞ。そもそもsyntax errorはエラーの中でも原因箇所を誤り無く指摘
するのが特に苦手なエラーだ。つまり実は全然関係ない箇所が原因で、インタプリタが間違って
たまたまそこをエラー箇所として指摘しただけだ。
syntax errorの直接の原因はその4行以外にある可能性が非常に高い。
endつけ忘れとか二重引用符閉じ忘れ(閉じたつもりで実は閉じられてない)とかそういうレベルの
話の可能性が高いから、その辺を疑ってみろ。
0769デフォルトの名無しさん
2005/12/23(金) 11:36:350770デフォルトの名無しさん
2005/12/23(金) 11:45:03エラー行が特定しにくいからだろう。
0771デフォルトの名無しさん
2005/12/23(金) 13:24:40これでも詠みやがれ。
http://jp.rubyist.net/magazine/?0012
最新号発汗。
0772デフォルトの名無しさん
2005/12/23(金) 17:26:24額に汗して執筆・編集してくれたみんなに乙
0773デフォルトの名無しさん
2005/12/23(金) 19:45:530774デフォルトの名無しさん
2005/12/24(土) 02:21:16と初めは思ったが、粘着性から考えて本人か?
0775デフォルトの名無しさん
2005/12/24(土) 07:19:38話を逸らされたくない当人の粘着乙
0776デフォルトの名無しさん
2005/12/24(土) 12:03:360777748
2005/12/24(土) 13:09:080778デフォルトの名無しさん
2005/12/24(土) 14:07:05まじでまだ悩んでるんなら、とりあえず晒した4行を削って実行してみ。違うところにエラーが出ると思うよ。
0779748
2005/12/24(土) 16:49:500780デフォルトの名無しさん
2005/12/24(土) 17:16:370781デフォルトの名無しさん
2005/12/24(土) 19:20:42えーと、本物さんですか?
であれば、質問だけじゃなく、ぜひ原因と対処も書いてくださいませ。
0782748
2005/12/24(土) 19:36:200783748
2005/12/24(土) 21:05:450784デフォルトの名無しさん
2005/12/24(土) 21:12:45うーん、靴下に入ったとしても、それを各ホストにインストールしないとなぁ。
遠隔地のサーバにはいつ入れようかな...。
0785デフォルトの名無しさん
2005/12/24(土) 21:14:300787デフォルトの名無しさん
2005/12/27(火) 10:27:45ttp://printf.jugem.jp/?eid=390
これ、なんて説明すりゃいいんだろう。
テストスクリプトがそもそもx,y,zにhoge=>[a,b,c]を代入してるから、
関数内で値を書き換えているわけではないという勘違いはある。
とは言うものの、関数に何か自作クラスのインスタンスを渡してそのインスタンス変数を変更する
というのは出来るが、Fixnumの場合*=とか+=しても関数内では値を書き換えることは出来ない。
この統一感のなさみたいなものについて、どうにかうまく説明できないだろうか。
0788デフォルトの名無しさん
2005/12/27(火) 11:12:30に影響がないよ、という風に説明するとか。
逆にわかりづらいかなあ。
0789デフォルトの名無しさん
2005/12/27(火) 11:46:46boolean型の変数も"foo?"で使いたかったんだけど
syntax errorなんだよね。
変数名に"?"が使えないようにしてる理由って何ですか?
0790sage
2005/12/27(火) 16:14:32マニュアルには更新時刻をコピーすると書いてあるのですが、
実際にやってみるとコピーされる場合もあればコピーされない場合もあります。
何か直接マニュアルには書かれてない条件みたいな事でもあるのでしょうか?
0791デフォルトの名無しさん
2005/12/27(火) 20:44:12>はたしてこれでいいのだろうか。
って言ってるんだから、違うと言ってあげればいいんじゃないの?
しかしグローバル変数は避けたいが呼び出し元で与える変数を壊したい
っつーのもよく分からないな。やってみたいだけなら分からなくも
ないけど、実際にそんな使い方するかなぁ?
0792デフォルトの名無しさん
2005/12/27(火) 23:11:17Rubyでは、こういうことはしないのが普通なのでしょうか?
クラスを作って、そのクラスのメソッドで、クラスのインスタンス変数に対して、やるべきなのでしょうか。
今まで、C/C++しかやっていないため、こういうスクリプト言語の勝手は、まだよくわかっていません。
0793デフォルトの名無しさん
2005/12/28(水) 00:43:080794デフォルトの名無しさん
2005/12/28(水) 00:54:31数値ではなくて配列とか文字列を使えば
ポインタだけを渡しているんだなってのが素直に実感できるかも。
def foo(b)
b.concat("y")
end
a = "x"
foo(a)
p a #=> "xy"
0795デフォルトの名無しさん
2005/12/28(水) 01:00:310796デフォルトの名無しさん
2005/12/28(水) 03:58:40Cっぽいrubyなプログラムしか書けないなら、Cで書いた方がいいし。
日本語っぽい英語で話すくらいなら、日本語の方が不自由無く使えるのと同じ。
0797デフォルトの名無しさん
2005/12/28(水) 09:07:15「パワーユーザー以上の権限が必要」と書いてあるので、
試しにパワーユーザーでインストールしてみたら、
.rbをノートパッドに関連付けるところで
エラーになりますねコレ(WinXP Pro SP1で再現)
…もしかして、テストっていい加減?
0798デフォルトの名無しさん
2005/12/28(水) 12:08:45しない。
Cで呼び出し元の変数を変更したい場合というのは、戻り値だけじゃな
くて複数の値を返したい場合だろ?
そういうときはRubyでは多値を使う。
そのほうが入力と出力が明快になる。
0799792
2005/12/28(水) 14:44:52hoge = 0 ; #変数hogeは、Fixnumのあるインスタンスへの参照
hoge = "hello,world" ; #変数hogeは、Stringのインスタンスへの参照
#Fixnumのあるインスタンスは参照されなくなり、いずれGCによって回収される。
hoge = 1 ; #変数hogeは、Fixnumのインスタンスへの参照
hoge *= 2 ; #変数hogeは、一行上のインスタンスを2倍した、新しいインスタンスへの参照
#値が1の、Fixnumインスタンスは参照されなくなり、いずれGCによって回収される。
むりやりC++で書くとこうなのかな。
void *hoge ;
hoge = reinterpret_cast<void*>( new Fixnum(0) ) ;
hoge = reinterpret_cast<void*>( new String("hello,world") ) ;
hoge = reinterpret_cast<void*>( new Fixnum(1) ) ;
hoge = reinterpret_cast<void*>( new Fixnum( *((Fixnum *)hoge) * 2 ) ) ;
0800デフォルトの名無しさん
2005/12/28(水) 14:56:380801デフォルトの名無しさん
2005/12/28(水) 15:05:37だいたい合ってる。
RubyではFixnumは割と特別扱いなのでGCの対象にはならないけどね。
0802デフォルトの名無しさん
2005/12/28(水) 16:59:52即値(7.4)
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=FAQ%3A%3A%C1%C8%A4%DF%B9%FE%A4%DF%A5%E9%A5%A4%A5%D6%A5%E9%A5%EA
>>799
むしろ自己代入を見るべきか。
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=%B1%E9%BB%BB%BB%D2%BC%B0#a.bc.ab.b8.ca.c2.e5.c6.fe
つまりa*=2はa=a*2のシンタックスシュガー。そういうリテラルであって*=というメソッドではない。
あと混乱させるかも知れないが以下。
2.equal?(2) => true(同一インスタンス)
10000000000000000000000000.equal?(10000000000000000000000000) => false(別インスタンス)(@cygwin-i386)
でも
$ ruby -e 'a=2;b=a;a*=2;p a,b'
4
2
$ ruby -e 'a=10000000000000000000000000;b=a;a*=2;p a,b'
20000000000000000000000000
10000000000000000000000000
0804デフォルトの名無しさん
2005/12/29(木) 14:55:00riコマンドで標準エラー出力にそんなディレクトリないよって言われる。
検索してくれてはいて、その後にはきちんと解説が出てくる。
エラー出力をなくすためにはどうすればいいのかな?
0805デフォルトの名無しさん
2005/12/29(木) 18:27:18「そんなディレクトリ」ってどんなディレクトリだ?
0806804
2005/12/29(木) 18:59:53> ri StringIO#string
/cygdrive/c/Documents: No such file or directory
and: No such file or directory
Settings/my-name/ri_1608.0: No such file or directory
sh: /cygdrive/c/Documents: No such file or directory
-------------------------------------------------------- StringIO#string
strio.string -> string
------------------------------------------------------------------------
Returns underlying String object, the subject of IO.
0807デフォルトの名無しさん
2005/12/29(木) 19:24:400808デフォルトの名無しさん
2005/12/29(木) 19:59:130809804
2005/12/29(木) 23:38:09それかも!と思って設定、再起動もしてみましたが変化なしです…。
まぁ、使う分には困らないのでいいと言えばいいんですが。
cygwin版使ってるほかの人は、同じようにエラー出てないのかな。
ともあれ、808さんありがと。
0810デフォルトの名無しさん
2005/12/30(金) 00:27:13riコマンドの存在すら知らない初心者だが
Documents and Settingsフォルダを
Documentsと認識してしまってることはわかる
スペースのない所に入れなおしなさい
0811804
2005/12/30(金) 01:34:24いや、自分でコンパイル&インストールするならばそうなんだけど、
cygwinのsetup.exeでインストールされたものに対して、
何らかの設定(個人の環境変数なりruby固有の環境変数だったり)で
うまくやる方法ってあるのかな?って話で。
0812デフォルトの名無しさん
2005/12/30(金) 02:41:13まだエスパーへの道は長いな。
0813デフォルトの名無しさん
2005/12/30(金) 10:11:520814デフォルトの名無しさん
2005/12/30(金) 11:41:55TempfileがTEMPかUSERPROFILEを使ってるものと思われ。
TMPDIRかTMPを空白を含まないディレクトリに指定汁。
ちなみに、1.9だとTempfileを使わずに直接popenで食わしてるから関係なくなってるはず。
0815804
2005/12/30(金) 12:16:34また年明けにいじってみます。
とりあえずお付き合いしてもらった人、ありがと。
0816デフォルトの名無しさん
2006/01/02(月) 03:49:22派生クラスから基底クラスのインスタンス変数を参照できるとか、
クラスがクローズされないから後から関数追加してインスタンス変数を参照できてしまうとかの、
この辺の仕様が無茶苦茶怖いんですが、こんなもんなんでしょうか?
0817デフォルトの名無しさん
2006/01/02(月) 04:29:54どんなデメリットがあると想像してるのかを言ってもらえると
もうちょい詳しいアドバイスをできるかもしれない(オレ以外の誰かが)
$SAFE=4でサンドボックス作れば(一応)大丈夫、とかだと思う。
0818デフォルトの名無しさん
2006/01/02(月) 05:09:00あるクラスを拡張しようと思って派生クラスを作り、インスタンス変数を使用した。
ところが、そのインスタンス変数名が「たまたま」基底クラスのものと一致すると、
派生クラス側で書き換えたせいで基底クラスの動作がおかしくなる。
ってことはありませんか?
要はC++とかで言えばインスタンス変数は全てprotectedで宣言されているわけですよね。
これはカプセル化の概念的にどうなんだ、というのが率直な感想です。
$SAFEは知りませんでした。
さっきRubyを触り始めたばかりで分からないことだらけなんで…勉強します。
0819デフォルトの名無しさん
2006/01/02(月) 05:16:38816のスクリプトとして組み込むというのと、継承の話はあんまり関係ないですね。
アプリにスクリプトを組み込もうと思って適当なものを探していたら
Rubyが面白そうだから読み始めてる、ってことです
CとRubyの橋渡しは物凄く簡単で便利そうですねぇ。
0821デフォルトの名無しさん
2006/01/02(月) 23:13:28……そんなもん
「Matzに聞け」
以外にどー反応しろと。あとML漁れ、くらいか(そういう議論があるかどうかは知らんが)
0822デフォルトの名無しさん
2006/01/02(月) 23:29:29たしかMLで見た気がする。探すのめんどくさいが。
0823789
2006/01/03(火) 11:16:34言い出しっぺの法則で漁って来ました
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/9754
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/9758
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/9759
>@foo? という形の変数名は、実はよく使ってたりしましたが、
>これからは許されないの?
>許さないつもりです.原さんが涙を流してお願いしない限り.:-)
>もともとの仕様では「! ? はメソッド名につく」と明示されている
>はずですから.
>そうかあ。では @foo? は禁止に賛成。(^^;
・゚・(´Д⊂ヽ・゚・
0824デフォルトの名無しさん
2006/01/03(火) 17:56:33アプリに組み込んだら、些細なことですぐ変なところをアクセスして死ぬは、
GCされないようにマークしたかどうかで不安にかられたりで、
結構、大変だったよ、俺は。
でも、Perlを組み込むのよりは遥かに簡単だった。
0825デフォルトの名無しさん
2006/01/03(火) 18:20:21なんか意外と面倒そうですね。既成言語なら楽かなと思ってたのですが…
機能はRubyほど必要ないし、いっそのことbison/flexで俺言語作ろうかな。
重要なのはスクリプトの途中で処理権を本体に返せるかどうかなんで。
RubyだとcallccとかThread.stopがあるから使えそうと思ったのですが。
0826デフォルトの名無しさん
2006/01/03(火) 18:38:07マジレスすると Python にしとき。
0827デフォルトの名無しさん
2006/01/03(火) 19:22:280828824
2006/01/03(火) 19:52:27まあ俺の場合、組み込んだあと、本来スクリプト側でやるような処理を、
Cの関数(rb_xxx)だけで下手にごちゃごちゃやりすぎてハマった部分が大きい。
組み込み自体は楽だった。
0829デフォルトの名無しさん
2006/01/03(火) 20:27:06どうもありがとうございます。
とりあえずLua見てみたら、まさにコルーチンがサポートされてますね。。
うまくいきそうなんで、試してみます。ありがとうございました。
0830デフォルトの名無しさん
2006/01/04(水) 16:31:560831デフォルトの名無しさん
2006/01/05(木) 10:33:24適材適所ですよ。
0832デフォルトの名無しさん
2006/01/05(木) 10:49:260833デフォルトの名無しさん
2006/01/05(木) 18:07:070834デフォルトの名無しさん
2006/01/05(木) 18:20:060835デフォルトの名無しさん
2006/01/05(木) 23:39:48え?どうやって?
0836デフォルトの名無しさん
2006/01/06(金) 09:18:360837デフォルトの名無しさん
2006/01/06(金) 10:32:150838デフォルトの名無しさん
2006/01/06(金) 11:52:45ウェイト無しで適当な無限ループを走らせる
0839デフォルトの名無しさん
2006/01/06(金) 12:00:050840デフォルトの名無しさん
2006/01/06(金) 12:36:010841デフォルトの名無しさん
2006/01/06(金) 12:51:060842デフォルトの名無しさん
2006/01/06(金) 13:03:030843デフォルトの名無しさん
2006/01/06(金) 14:25:20他の言語なら書いてる最中に「俺なんでこんなことしてるんだろう」と冷める可能性があるが
楽しくプログラミングがモットーのRubyならその点ばっちりだ。
0844デフォルトの名無しさん
2006/01/06(金) 15:14:43その文を書いてる途中で冷めなかった?
0845デフォルトの名無しさん
2006/01/06(金) 15:59:01cp_rのバグ。ディレクトリ下にファイルが存在している場合は
preserveオプションをtrueにしてもディレクトリのタイムスタンプを保存できない。
2003年6月に
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/74611
で報告されているけど、
windows特有のバグと勘違いしたバグ報告なので未だにほったらかし。
0846デフォルトの名無しさん
2006/01/08(日) 18:14:490847デフォルトの名無しさん
2006/01/09(月) 09:10:380848デフォルトの名無しさん
2006/01/09(月) 10:03:32⊃フォント
0849デフォルトの名無しさん
2006/01/09(月) 14:33:390850デフォルトの名無しさん
2006/01/09(月) 16:00:260851デフォルトの名無しさん
2006/01/09(月) 17:50:310852デフォルトの名無しさん
2006/01/09(月) 23:31:52エディタのフォント設定でフォント選択ダイアログを表示したら
文字セットを日本語にしる。
0853デフォルトの名無しさん
2006/01/11(水) 22:23:24プログラムをどうしたらGUIで1つ1つ表示できるんでしょうか…
0854デフォルトの名無しさん
2006/01/11(水) 22:32:43全く話は違うけど、RubyでCGIやTCPサーバなんかも書けるのも知ってる?
0855デフォルトの名無しさん
2006/01/11(水) 22:55:34ん?CUIというか、コマンドラインで動作するRubyスクリプトを
どうすればGUI化できるか?という疑問ですか?
0856デフォルトの名無しさん
2006/01/11(水) 23:12:34oui
>>855
そうです!orz
0857デフォルトの名無しさん
2006/01/11(水) 23:39:12うーん、GUI化を全く想定してないスクリプトなら作り直しが吉かも。
ある程度でも入出力と処理を分離できるなら、改造で対応できるかな?
0858デフォルトの名無しさん
2006/01/12(木) 00:41:24N = 39; M = 79
row = Array.new;(M + 2).times { row.push(0) }
a = Array.new;(N + 2).times { a.push(row.dup) }
b = Array.new;(N + 2).times { b.push(row.dup) }
a[N/2][M/2] = a[N/2-1][M/2] = a[N/2+1][M/2] = a[N/2][M/2-1] = a[N/2-1][M/2+1] = 1
for g in 1..1000;printf("Generation %4d\n", g);for i in 1..N;for j in 1..M
if (a[i][j] > 0); print("*");b[i-1][j-1] += 1;b[i-1][j] += 1;b[i-1][j+1] += 1
b[i][j-1] += 1; b[i][j+1] += 1
b[i+1][j-1] += 1;b[i+1][j] += 1;b[i+1][j+1] += 1
else;print(".");end;end;print("\n");end
for i in 0..N;for j in 0..M;if (b[i][j] != 2);a[i][j] = ((b[i][j] == 3) ? 1 : 0)
end;b[i][j] = 0; end;endend
exit 0
こんなんなんですけど…
0859デフォルトの名無しさん
2006/01/12(木) 01:14:52「N = 39; M = 79」 は、 「コンソールが、縦40文字、横80文字」を想定してるみたいだね。
なので、
・「1文字=>1pixel」もしくは「1文字=>1block(8x8pixel)」と考えて
・「for g in 1..1000;」のループごとにスクリーン切り替え
・printf()による文字出力を同等数のピクセル描画に置き換え
みたいな方針でやればよいのでは。
0860デフォルトの名無しさん
2006/01/12(木) 12:16:04まず、GUIで何をどうやって表現したいのかから考えるといいのでは?
昔、MacのCで書いたときはWindow上に白と黒の長方形を描画したけど。
0861デフォルトの名無しさん
2006/01/12(木) 12:32:440862デフォルトの名無しさん
2006/01/12(木) 12:47:16n=10; puts (1..n).inject(1){|s,x| s*=x}
0863デフォルトの名無しさん
2006/01/12(木) 13:03:490864デフォルトの名無しさん
2006/01/12(木) 13:05:550865862
2006/01/12(木) 13:48:090866862
2006/01/12(木) 13:51:19n=10; puts eval((1..).to_a.join(' * '))
0867862
2006/01/12(木) 13:52:14n=10; puts eval((1..n).to_a.join(' * '))
0868デフォルトの名無しさん
2006/01/12(木) 14:56:440869デフォルトの名無しさん
2006/01/12(木) 15:01:090870デフォルトの名無しさん
2006/01/12(木) 15:34:050871862
2006/01/12(木) 16:50:47n=10; x='.'; (1..n).each{|n| x.gsub!(/./, '.'*n)}; puts x.size
0872デフォルトの名無しさん
2006/01/12(木) 17:10:37http://pc8.2ch.net/test/read.cgi/tech/1106572657/146
146 名前:デフォルトの名無しさん[] 投稿日:2006/01/12(木) 12:22:33
階乗を求めるプログラムを教えてください
0873デフォルトの名無しさん
2006/01/12(木) 20:16:02何でそこまで、置換したり join したり変な手段に拘るんだ?
0874デフォルトの名無しさん
2006/01/12(木) 20:35:150875デフォルトの名無しさん
2006/01/12(木) 22:03:500876デフォルトの名無しさん
2006/01/14(土) 16:04:48(1..10).inject{|x,y|x*y}
((n=1)..10).each{x|n*=x}
0877デフォルトの名無しさん
2006/01/14(土) 17:56:23ますます。。。
0878デフォルトの名無しさん
2006/01/14(土) 18:02:50数KBの4つほどの文字列を、繰り返し(数万回)連結するんだけど、
str1 + str2 + str3 + str4
str1 << str2 << str3 << str4
[str1, str2, str3, str4].join
で、どれが一番早い? もしくは、他の方法でも、連結されていれば可。
もっと細かく言うと、
* str1, str3 は破壊されても良い。str2, str4 は使いまわしているので、破壊されては駄目。
* 連結結果は、すぐにファイルに書き出した後は必要ない。
* バージョンは、ruby 1.8.1 (2003-12-25) もしくは ruby 1.8.4 (2005-12-17) で、出来れば前者。
ということです。よろしく。
0879デフォルトの名無しさん
2006/01/14(土) 18:17:36但し予想
0880デフォルトの名無しさん
2006/01/14(土) 18:46:31が一番速かった。
before = Time.now
10000.times do
a = 'a' * 1000
b = 'b' * 1000
c = 'c' * 1000
d = 'd' * 1000
a += b + c + d
# a << b << c << d
# a = [a, b, c, d].join
end
puts Time.now - before
% ruby -v
ruby 1.8.2 (2004-12-25) [i386-freebsd4]
実行結果は順に
3.177574
3.109941
3.093683
何回かやったが、この順番は変わらずじまい。
こっから推測だが、 << だと3回の連結でそれぞれ文字列の長さを延長する処
理が必要になる可能性があり、そのたびにメモリ上に割当て直すことになるの
に対し、 join だと全ての文字列を連結した長さの文字列を最初に用意すれば
いいのでその差じゃないかなと。
まあほとんど差はないです。
0881デフォルトの名無しさん
2006/01/14(土) 20:17:37連結結果を使い回さないなら,オンメモリで連結する必要無かろ.
0882デフォルトの名無しさん
2006/01/14(土) 20:19:190883デフォルトの名無しさん
2006/01/14(土) 20:52:53そうかな?IOといってもバッファリングが働くでしょうから、
メモリ上で結合してから書き出すのと大差ないような気が...。
検証してませんが。
0884デフォルトの名無しさん
2006/01/14(土) 22:03:17下は f.write(a); f.write(b); f.write(c); f.write(d) したやつ.
on NetBSD 3.0 / TM5800 @ 933 MHz.
user system total real
3.060000 0.080000 3.140000 ( 3.214640)
2.740000 0.020000 2.760000 ( 2.812343)
ま,IO のメソッドが相当遅いんでなければ,実 I/O が増えるわけでなし,そんなもん?
0885デフォルトの名無しさん
2006/01/15(日) 00:25:000886デフォルトの名無しさん
2006/01/15(日) 00:25:53ある
0887デフォルトの名無しさん
2006/01/15(日) 00:26:01書かれていたような気が。(実装はArrayで + でなく << 使ってね。)
本は会社に置いてきてるので、いまは確認できないけど。
0888デフォルトの名無しさん
2006/01/15(日) 00:27:13公式ドキュメントの正規表現の章に書かれていたような気が。
めんどくさいので、いまは確認しないけど。
0889デフォルトの名無しさん
2006/01/15(日) 00:31:15ありがとう。正規表現と所にサンプルがありました
0890デフォルトの名無しさん
2006/01/15(日) 00:55:40事ある毎に、なんか適当に書いてたよ orz
0891デフォルトの名無しさん
2006/01/15(日) 20:28:57標準入力にマッチした部分を表示するコマンドを作りたいのですが
文字列を正規表現に変化?させることはできますか?
while gets
if $_ =~ /ARGV[1]/ then puts $1
end
こんな感じです。
ところでLinuxには同じ機能のコマンドがあったりしますか?
0892デフォルトの名無しさん
2006/01/15(日) 20:36:080893デフォルトの名無しさん
2006/01/15(日) 20:42:07IPアドレスだけがずらずら出てくるようなことがしたいのです。
grepだと行ごと出てきてしまいます。
0894デフォルトの名無しさん
2006/01/15(日) 20:50:390895デフォルトの名無しさん
2006/01/15(日) 20:53:51$pat = ARGV.shift
while gets
print if /#{$pat}/
end
0896デフォルトの名無しさん
2006/01/15(日) 20:56:25while gets
print if $_ =~ $pat
end
0897デフォルトの名無しさん
2006/01/15(日) 21:06:27正規表現に一致した部分だけを出すんですよね?
こんな感じでどうでしょう?
#!/usr/bin/ruby
while $stdin.gets
if $_ =~ /#{ARGV[0]}/ then puts $& end
end
0898デフォルトの名無しさん
2006/01/15(日) 21:08:010899デフォルトの名無しさん
2006/01/15(日) 21:11:390900デフォルトの名無しさん
2006/01/15(日) 21:22:01ありがとうございます。
$pat = /#{ARGV.shift}/
while gets
puts $& if $_ =~ $pat
end
0901デフォルトの名無しさん
2006/01/15(日) 21:29:340902デフォルトの名無しさん
2006/01/15(日) 21:31:00じゃあ何でRubyとかPythonがあるんだろ
0903デフォルトの名無しさん
2006/01/15(日) 21:40:02Cがあるのにsedやawkやbashがあるのと似たような理屈です
0904デフォルトの名無しさん
2006/01/15(日) 21:40:540905デフォルトの名無しさん
2006/01/15(日) 21:41:290906デフォルトの名無しさん
2006/01/15(日) 21:43:430907デフォルトの名無しさん
2006/01/15(日) 21:43:590908878
2006/01/15(日) 23:02:43>>887
みなさん、ありがとう。優しい人たちばかりですね。
「ファイルに書き出すんだったら、連結させずに書き出せば?」というのは、
考えてみたら当たり前のことなのに、目からウロコです。
自分のスクリプトでも、そういうう風に出来ることがわかったので、そうします。
メモリ量が気になってもいたので、そういう意味でもぴったりでした。
感謝します。
0909デフォルトの名無しさん
2006/01/15(日) 23:49:43全然わかりません…orz
どんな感じになるんですか??
0910デフォルトの名無しさん
2006/01/15(日) 23:55:16じゃあ無理だ。
0911デフォルトの名無しさん
2006/01/16(月) 01:37:31ありがとうございます…
しかし 全然わかりませんでした…orz
どんな感じになるんですか??(>_<)
0912デフォルトの名無しさん
2006/01/16(月) 01:38:18もっかい書き込んでしまったーorz
すみません
0913デフォルトの名無しさん
2006/01/16(月) 02:23:11じゃあ無理だ。
0914デフォルトの名無しさん
2006/01/16(月) 09:32:26もっかいレスしてしまったーorz
すみません
0915デフォルトの名無しさん
2006/01/16(月) 12:03:27マッチさせたいものが複数行の場合はどうしたらいいんでしょうか?
一行だったらgetsとscanを使い処理しつづけられたのですが、
改行があるとgetsではそこまでしか読まれないのでマッチさせられません。
かといってファイル全体を一括読み込みするというのも
巨大なファイルになるとどうかと思うのですが、どんな方法がありますか?
while line = gets
line.scan($pat) { printf("%s %s\n", $1, $2) }
end
0916デフォルトの名無しさん
2006/01/16(月) 12:44:01いろいろ方法はあると思うが、一番は頭を使うことだな。
はじめは無理して一文で書こうと思わない方がいい。
0917デフォルトの名無しさん
2006/01/16(月) 13:49:43本当の最初の最初、EPSON BASIC on HC-20からPerlに移行した頃に考えたのは
「マッチ1行目がヒットしたらチェック用変数にマッチ内容を一時収納、
次のループの初めには「一時収納変数に何か入ってたらマッチ2行目とのチェックをする」ような処理を入れとく」
ってやつ。
動いたけどなんか気持ち悪くて気持ち悪くて。
今は面倒なので改行なしでファイル全部読み込んでマッチさせてる。マシンパワー万歳
0918デフォルトの名無しさん
2006/01/16(月) 15:19:27あとは ruby-mmap を使ってみるとか。
http://moulon.inra.fr/ruby/mmap.html
0919デフォルトの名無しさん
2006/01/16(月) 15:35:19実際に使った上で言ってるの?
0920デフォルトの名無しさん
2006/01/16(月) 16:40:09いいえ。まともに使えるかどうかは知らん。自分なら全部読みこんじゃって処理させるし。
0921デフォルトの名無しさん
2006/01/16(月) 18:03:12そのファイルのパターンをよーく考える
例えばこのパターンからこのパターンの間をひとまとまりとして
扱うというルールがあるならそれを利用してかたまりごとに処理する
0922915
2006/01/16(月) 19:23:53とりあえずreadlinesを使って全部読み
正規表現リテラルmで複数行にして処理できました
もう少し考えてみます
0923デフォルトの名無しさん
2006/01/16(月) 19:36:41ローカルでブラウザで開いても、CGIが実行されずソースが表示されます
OSはWinXP、ブラウザはIE、rubyはhttp://www.garbagecollect.jp/ruby/mswin32/ja/の
ruby-1.8.3です
rubyにパスは通っています
CGIにネットからアクセスするつもりはなくて、ローカルでのみ使用したいので
Apacheとかは入っておらず、上のrubyのみ導入した状態なのですが、
どうすれば実行できるようになるのでしょうか?
0924デフォルトの名無しさん
2006/01/16(月) 19:50:54Ruby以前の問題なのでWebとCGIの仕組みについて勉強汁
0926デフォルトの名無しさん
2006/01/16(月) 22:47:29とりあえずApacheとかを入れよう。
0927デフォルトの名無しさん
2006/01/16(月) 23:27:180928デフォルトの名無しさん
2006/01/17(火) 00:42:500929デフォルトの名無しさん
2006/01/17(火) 01:08:56を読んでみるとか。
0930デフォルトの名無しさん
2006/01/17(火) 02:05:380931デフォルトの名無しさん
2006/01/17(火) 02:08:42>>928
0932デフォルトの名無しさん
2006/01/17(火) 02:21:05何か入れてみます
ありがとうございました
0933デフォルトの名無しさん
2006/01/17(火) 02:37:36w3mならそれ自身でCGIを実行できますが、IEじゃないと駄目かな...?
ttp://www.mnet.ne.jp/~tnomura/w3m2.html
0934デフォルトの名無しさん
2006/01/17(火) 02:41:270935デフォルトの名無しさん
2006/01/17(火) 03:06:540936デフォルトの名無しさん
2006/01/17(火) 03:08:35何に対してのレス?
0937デフォルトの名無しさん
2006/01/17(火) 03:10:23へ〜
0938デフォルトの名無しさん
2006/01/17(火) 04:53:14穴の多いIEの事ではないのかい
0939デフォルトの名無しさん
2006/01/17(火) 04:54:57普通に ruby スクリプトとして動かして、
吐き出された結果をリダイレクトでファイルに保存して、
ブラウザに放り込めば良いんじゃね?
知識が既にあるのなら、鯖立てた方が圧倒的に楽だが
0940デフォルトの名無しさん
2006/01/17(火) 09:51:39インターネットで牧歌的時代といえばWindows95普及以前の、
まあ、いいとこ普及後で一般化するころまでだろう(少なくとも20世紀)。
ネットが性善説の影を引きずっていた、「安全」だった時代の話。
「インターネット」「牧歌的」でぐぐるとわかる。
>>934
ということでおそらく君宛て。
このご時世に、サーバーの動作すらわかってないと思われる人に
無責任にサーバー管理者任せるなとか、きっとそのへん。
0941デフォルトの名無しさん
2006/01/17(火) 09:53:470942デフォルトの名無しさん
2006/01/17(火) 10:02:59「Apacheをインストールしてネット側から悪用されないよう自分専用に的確に安全に設定してください」
って頼むのは敷居高杉だと思うなあ
0943デフォルトの名無しさん
2006/01/17(火) 14:18:38残り二割に責任は持てない
0944デフォルトの名無しさん
2006/01/17(火) 21:26:42/(?<foo>o)/.match("hoge")["foo"] # => "o"
みたいな。
0945デフォルトの名無しさん
2006/01/17(火) 22:53:35値を代入出来ませんでしょうか。
class << obj = Object.new
@v = 'hoge'
def pvar
p @v
end
end
obj.pvar # => nil ('hoge'にならない)
↓は何か気持ち悪いし不便な感じが…
class << obj = Object.new
def init
@v = 'hoge'
end
def pvar
p @v
end
end
obj.init
obj.pvar
0946デフォルトの名無しさん
2006/01/17(火) 23:01:300947デフォルトの名無しさん
2006/01/17(火) 23:09:51変数の初期化です。
特異クラス定義内に
initialize を定義しても呼ばれなかったので…
0948デフォルトの名無しさん
2006/01/17(火) 23:25:500949デフォルトの名無しさん
2006/01/18(水) 00:14:03普通はこうだな。
obj = Object.new
obj.instance_eval {@v = 'hoge'}
class << obj
def pvar
p @v
end
end
0950デフォルトの名無しさん
2006/01/18(水) 00:29:42どうすれば出来ますか?
0952デフォルトの名無しさん
2006/01/18(水) 01:50:21Rubyスクリプトは同じことを結構いろいろな方法で書けるけど、あんま変な方法で覚えてたら損じゃん。
添付ライブラリのスクリプトは勉強の参考にしていいほどきちんと洗練されてる?
0953デフォルトの名無しさん
2006/01/18(水) 02:00:49つ【レシピブック】
あと現在どんだけ保守されてんのか知らないけど
つ【逆引きRuby <ttp://www.namaraii.com/rubytips/>】
0954デフォルトの名無しさん
2006/01/18(水) 02:40:25洗練されてるかと人に聞くまえに見てみたらどうだい?
たぶん君よりは洗練されているものが多いだろう。
(たとえ「変」だとしても、それに気がつかないんならね。)
目先の損得は考えず、たくさんのソースコードを見るのが一番。
0955デフォルトの名無しさん
2006/01/18(水) 02:47:33それこそ初心者で修正の効くうちによい方向に修正しておかないと。
0956デフォルトの名無しさん
2006/01/18(水) 03:08:140957デフォルトの名無しさん
2006/01/18(水) 03:14:12なぜこう書かずそう書くのかってのはそれなりに合理的な理解に基づくものでは?
合理的な理解が背景にあるならば、初心者じゃなくても容易に修正できるだろう。
むしろ「癖」のように単に覚えればいい、というのは悪い癖つけだと思うな。
ソフトウェア作法に書かれてるような癖つけとは違う話だし。
0958デフォルトの名無しさん
2006/01/18(水) 08:11:450959デフォルトの名無しさん
2006/01/18(水) 09:17:58どのように取得すればいいのですか?
それとRDEでCookie周りを扱う良い方法ありますか?
#よいで「良い」に変換できないの初めて知った
require "cgi"
cgi = CGI.new
cookie1 = CGI::Cookie::new({ 'name' => "name", 'value' => ["name"], 'expires' => Time.now + 1000 })
cgi.out({"cookie" => [cookie1]}){""}
print "Content-type: text/html\n\n"
p cgi.cookies['name']
print <<EOF
<html>
<body>
<form action=cookie.cgi method=post enctype=multipart/form-data>
[enctype=multipart/form-data]がなければ動く
<input type=submit>
</form>
</body>
</html>
EOF
0960デフォルトの名無しさん
2006/01/18(水) 09:41:07あの添削の方向が実はおかしいんじゃないかと思うこともあったりする
0961デフォルトの名無しさん
2006/01/18(水) 18:28:48おれは可能な限りeval使いたくないからinstance_variable_set使うかな
obj = Object.new
obj.instance_variable_set(:@v,'hoge')
class << obj
def pvar
p @v
end
end
ところでclass〜endの特異クラス定義中に@vに値入れる方法ってある?
0962959
2006/01/18(水) 22:45:54Windows 2000
ruby 1.8.2 (2004-12-25) [i386-cygwin]
AN HTTP Daemon Version 1.42n
0963デフォルトの名無しさん
2006/01/18(水) 23:53:33> ところでclass〜endの特異クラス定義中に@vに値入れる方法ってある?
もちろん>>945で代入できるよ。
objじゃなくてobjの特異クラスのインスタンス変数になるけど。
0964デフォルトの名無しさん
2006/01/19(木) 01:53:25>945は出来ないと書いてあるわけだが
0965デフォルトの名無しさん
2006/01/19(木) 10:29:05だから、「何の」インスタンス変数に入れたいか、による。
0966デフォルトの名無しさん
2006/01/19(木) 15:51:49この場合、[objのインスタンス変数]と[objの特異クラスのインスタンス変数]ってどう違うの?
0967デフォルトの名無しさん
2006/01/19(木) 16:22:12持ってるインスタンスが別物。
持ち主同士は相互に結合されてるけど、@v同士はまったく関係ない。
0968966
2006/01/19(木) 17:32:44すみません、まださっぱりわかりません。
「持ってるインスタンス」ってそれぞれの場合、何を指してるのでしょうか?
[objのインスタンス変数] -> obj
[objの特異クラスのインスタンス変数] -> objの特異クラスのインスタンス
という意味ではないですよね?
「相互に結合されている」というのもよくわかりません。
特異クラスを定義した後では、obj が objの特異クラスのインスタンス
と同じと理解してるのですが。。。
0969デフォルトの名無しさん
2006/01/19(木) 18:01:51[objのインスタンス変数] -> objの@v
[objの特異クラスのインスタンス変数] -> [objの特異クラス]の@v
そのまんま。
0970デフォルトの名無しさん
2006/01/19(木) 18:33:150972デフォルトの名無しさん
2006/01/19(木) 18:38:140973961
2006/01/19(木) 18:54:14obj.pvar で参照できればなんでもよかったです
というか私自身[objのインスタンス変数]と[objの特異クラスのインスタンス変数]を
明確に区別しておりませんでした。すいませんです
まとめると
>>945の
〜
def init
@v = 'hoge'
end
〜
obj.init
のような
1.@vのための初期化のための特異メソッド定義をして、そのメソッドを呼ぶ
>>949>>961のような
2.instance_eval、instance_variable_setのようなobjに対するメソッドで@vを定義し値を入れる
以外の方法でclass〜endの特異クラス定義文中に
objがメソッドpvarで参照できる@vに値を入れる方法はあるのでしょうか
0974デフォルトの名無しさん
2006/01/19(木) 19:08:06答「ない」
問「どうしてないのでしょうか?」
答「特異クラスだからって特別扱いされてるわけじゃない。
(特異クラスでない)普通のクラスの定義文中に、
そのクラスのインスタンスに触れないっしょ? それと同じ」
問「特異クラスの場合だけ特別扱いして欲しいのですが」
答「その方法があると便利かもしれない。ruby-dev などで提案してみては」
0975デフォルトの名無しさん
2006/01/19(木) 19:15:40> クラス定義と同じ構文で特定のオブジェクトに
> メソッドやインスタンス変数を定義/追加します。
ってあるんだからインスタンス変数の追加方法もあるんじゃ?
…でも書いてないよなぁ。
0976デフォルトの名無しさん
2006/01/19(木) 20:05:44できなさそうができたりする良い面と、そこから推測される
できてよさそうなことができなかったりするよね
define_methodがあるのだから
define_variableがありゃいいんじゃないのか
0977デフォルトの名無しさん
2006/01/19(木) 20:47:47instance_variable_set とどう違うの?
0978デフォルトの名無しさん
2006/01/19(木) 21:01:41class << obj = Object.new
def singleton_method_added(name); instance_variable_set(:@var, 'hoge') end
remove_method(:singleton_method_added)
def p_var; p @var end
end
obj.p_var #=> "hoge"
0979デフォルトの名無しさん
2006/01/19(木) 21:33:190980デフォルトの名無しさん
2006/01/19(木) 22:01:48instance_variable_setはObject#のメソッドで
(特異)class定義文中ではinstance_variable_setのレシーバはここでのself、つまりobjの特異クラスになる
obj = Object.new
obj.instance_variable_set(:@v,'hoge') # instance_variable_setのレシーバはobj。これはobj.pvarで参照できる
class << obj
instance_variable_set(:@v,'not hoge') # instance_variable_setのレシーバはobjの特異クラス。obj.pvarでは参照できない
def pvar
p @v
end
end
0981デフォルトの名無しさん
2006/01/19(木) 22:29:26ruby/tkなんですが、自分でやってみたのですが、座標をどのように指定
すれば良いのか分りません…
どなたかお願いしますorz
0982デフォルトの名無しさん
2006/01/20(金) 00:34:39がんばって。
ここの 「マウスで矩形を描く」 が参考になるかも
http://www.mnet.ne.jp/~tnomura/tksample.html
0983デフォルトの名無しさん
2006/01/20(金) 00:38:46http://jp.rubyist.net/magazine/?0003-RubyTkMovement#l29
0984デフォルトの名無しさん
2006/01/20(金) 01:08:40しかし
(c, x, y, x, y, 'width'=>2)
の最初のx,yとあとのx,yは何の値なんですか??
0985デフォルトの名無しさん
2006/01/20(金) 01:34:340986デフォルトの名無しさん
2006/01/20(金) 01:55:03現在進行形ですが。。
0987デフォルトの名無しさん
2006/01/20(金) 12:10:17漏様のESPによる鑑定では、左上と右下の座標だ。
0988デフォルトの名無しさん
2006/01/20(金) 21:15:560989デフォルトの名無しさん
2006/01/20(金) 21:43:560991デフォルトの名無しさん
2006/01/21(土) 22:32:39irb> arr=["A","B","C"]
=> ["A", "B", "C"]
irb> arr.each { |elem| puts elem << "!" }
A!
B!
C!
=> ["A!", "B!", "C!"]
irb> arr
=> ["A!", "B!", "C!"]
arr が ["A","B","C"] のままになってくれないリクツはなんですか?
concat や << を使うとなんか変わるっぽいということはわかったけど、
なんでこういう動作なのかよくわかんねす。
0992デフォルトの名無しさん
2006/01/21(土) 22:37:10を使えよ
0993デフォルトの名無しさん
2006/01/21(土) 22:41:35ここが一番レス数多い模様。
0994デフォルトの名無しさん
2006/01/21(土) 23:13:29いまいち答えになってないと思われ
0995デフォルトの名無しさん
2006/01/22(日) 03:04:24> concat や << を使うとなんか変わるっぽい
まさにその通り。
変えたい時に使うのが concat や << 。
変えたくない時(くっつけた新しい文字列を作りたい時)は + を使いましょう。
0996デフォルトの名無しさん
2006/01/22(日) 08:30:260997デフォルトの名無しさん
2006/01/22(日) 10:16:16eachメソッドなのにブロック内の処理に引きずられて変なもん返してんじゃねーよ、みたいな。
違和感ってのはきっとそこだろう。
答えとしては「そういうもんだ」で、そういうふうに作られてるからということで特に明快な理由はなさそうだ。
「期待に外れた」動作をするconcatみたいなメソッドを暗記しておいて注意して使うしかないんでないかい。
0998デフォルトの名無しさん
2006/01/22(日) 11:22:520999デフォルトの名無しさん
2006/01/22(日) 11:41:111000デフォルトの名無しさん
2006/01/22(日) 12:44:3310011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。