Ruby初學者スレッド Part 9
レス数が1000を超えています。これ以上書き込みはできません。
0001紅寶石
2006/11/21(火) 08:33:42マニュアル
http://www.ruby-lang.org/ja/man/
Ruby FAQ
http://ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
逆引きRuby
http://www.namaraii.com/rubytips/
Ruby リファレンスマニュアルの Windows HTML Help版
http://elbereth-hp.hp.infoseek.co.jp/ruby.html
Rubyリファレンスマニュアル刷新計画
http://doc.loveruby.net/
前スレ
Ruby初心者スレッドPart8
http://pc8.2ch.net/test/read.cgi/tech/1159424939/
>>2-10
0002デフォルトの名無しさん
2006/11/21(火) 08:35:570003デフォルトの名無しさん
2006/11/21(火) 08:39:22Rubyについて Part 24
http://pc8.2ch.net/test/read.cgi/tech/1159315598/
【Agile】Ruby on rails相談所 part2【DRY】
http://pc8.2ch.net/test/read.cgi/php/1151254378/
RUBYの宿題教えてください。
http://pc8.2ch.net/test/read.cgi/tech/1106572657/
【最高言語】 Rubyist Magazine創刊 【ルビま!】
http://pc8.2ch.net/test/read.cgi/tech/1094825807/
【ActiveScript】RubyをWindowsで使うスレ【GUI】
http://pc8.2ch.net/test/read.cgi/tech/1155031689/
0004デフォルトの名無しさん
2006/11/21(火) 08:39:54http://pc8.2ch.net/test/read.cgi/tech/1159424939/
Ruby初心者スレッドPart7
http://pc8.2ch.net/test/read.cgi/tech/1154077799/
http://makimo.to/2ch/pc8_tech/1154/1154077799.html
Ruby初心者スレッドPart6
http://pc8.2ch.net/test/read.cgi/tech/1147918197/
http://makimo.to/2ch/pc8_tech/1147/1147918197.html
Ruby初心者スレッドPart5
http://pc8.2ch.net/test/read.cgi/tech/1143403165/
http://makimo.to/2ch/pc8_tech/1143/1143403165.html
Ruby初心者スレッドPart4
http://pc8.2ch.net/test/read.cgi/tech/1137927749/
http://makimo.to/2ch/pc8_tech/1137/1137927749.html
Ruby初心者質問スレPart3
http://pc8.2ch.net/test/read.cgi/tech/1125587131/
http://makimo.to/2ch/pc8_tech/1125/1125587131.html
Ruby初心者質問スレPart2
http://pc8.2ch.net/test/read.cgi/tech/1107799347/
http://makimo.to/2ch/pc8_tech/1107/1107799347.html
Ruby初心者質問スレPart1
http://pc5.2ch.net/test/read.cgi/tech/1100534824/
0005デフォルトの名無しさん
2006/11/21(火) 08:41:42http://www.ruby-lang.org/ja/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
日本Rubyの会 公式Wiki - 日本Rubyの会Wiki
http://jp.rubyist.net/
RAA - Ruby Application Archive
http://raa.ruby-lang.org/
RubyForge
http://www.rubyforge.org/
Matzにっき … Ruby作者の日記
http://www.rubyist.net/~matz/
Ruby hotlinks 五月雨版 … Ruby関連の日記やblog
http://www.rubyist.net/~kazu/samidare/
Rubyの本一覧
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Ruby%A4%CB%B4%D8%A4%B9%A4%EB%BD%F1%C0%D2
<rubyXML/>
http://www.rubyxml.com/
Ruby Weekly News @ Ruby Garden
http://www.rubygarden.org/rurl/html/
0006デフォルトの名無しさん
2006/11/21(火) 12:55:440007デフォルトの名無しさん
2006/11/21(火) 12:57:060008デフォルトの名無しさん
2006/11/21(火) 13:11:480009デフォルトの名無しさん
2006/11/21(火) 14:23:480010デフォルトの名無しさん
2006/11/21(火) 14:44:30ドキュメントには、
Rubyの標準的な拡張ライブラリと同じです。ソースを展開したディレクトリで、
ruby extconf.rb
make
make site-install
(または make install)
と実行します。
とあるんですが、windowsXPなのでmakeが使えずインストールできません。
0011デフォルトの名無しさん
2006/11/21(火) 15:30:390012デフォルトの名無しさん
2006/11/21(火) 15:41:42それも認識されません。
0013デフォルトの名無しさん
2006/11/21(火) 15:42:590014デフォルトの名無しさん
2006/11/21(火) 15:43:45http://www.microsoft.com/japan/msdn/vstudio/express/visualc/
Visual C++ 2005 Express Edition 日本語版
Platform SDK
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
Visual C++ 2005 Express Edition と Microsoft Platform SDK を一緒に使う
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
0015デフォルトの名無しさん
2006/11/21(火) 15:52:240016デフォルトの名無しさん
2006/11/21(火) 19:15:52makeが標準で入ってるという前提でマニュアルを書くべきではない
makeの導入の仕方とかいちいち書くのも面倒だけどな
0017デフォルトの名無しさん
2006/11/21(火) 20:00:21プラットフォームでのそれぞれのコンパイル方法を説明する
ってのも無茶だろう。
0018デフォルトの名無しさん
2006/11/21(火) 20:14:26「インストールに必要なもの」という項目くらいあってもよさそうなもんだんだが、
「とにかくmakeして下さい」といった説明しかなかったりする
そりゃmakeでは必要なプログラムやライブラリのチェックはしてくれるが、
make自体がない可能性を考慮してないとか
いちいちmakeで躓くまで待たないとわからんとかそういうのはよくないだろ
makeのインストール方法の説明なんざ自前でする必要はない
とにかく、makeを始めとしてあれとこれが無いと動かない、ということはちゃんと文章化しろ
0019デフォルトの名無しさん
2006/11/21(火) 21:59:060020デフォルトの名無しさん
2006/11/21(火) 22:15:170021デフォルトの名無しさん
2006/11/21(火) 22:20:49そう思うなら、お前が全部やればいいじゃない。
おまえ以外は誰もそんなもん必要ないからさ。
0022デフォルトの名無しさん
2006/11/21(火) 22:24:10間違いなく一生遊べるおもちゃです。はい。
0023デフォルトの名無しさん
2006/11/21(火) 22:25:160024デフォルトの名無しさん
2006/11/21(火) 22:26:580025デフォルトの名無しさん
2006/11/21(火) 22:34:440026デフォルトの名無しさん
2006/11/21(火) 22:55:59極めて正しい
が、個々のメンテナに求めるクオリティではないな
マニュアル書式を統括すべきだろう
それこそDebianパッケージみたいに
0027デフォルトの名無しさん
2006/11/21(火) 23:48:17お前、自分でやってみろよ。ごくたまに居るんだよな、こういう図々しい奴。
0028デフォルトの名無しさん
2006/11/22(水) 00:08:33でも、自分の環境だから、作成者本人ならやれるぞ、これ。それほど難しい作業でもない。
それこそ「やってみればわかる」。
0029デフォルトの名無しさん
2006/11/22(水) 00:11:39「makeすら自分で考えて用立てできん奴は使わんでよし」ということにならんか
0030デフォルトの名無しさん
2006/11/22(水) 00:20:480031デフォルトの名無しさん
2006/11/22(水) 00:51:23説明だの事前用意だのの面倒くさがりがRubyを選ぶのだろう
ドキュメントやマニュアルの不親切や不備は直りそうにない
今年の6月だか7月にはどうにかなってるはずだったんじゃないん?
0032デフォルトの名無しさん
2006/11/22(水) 00:56:500033デフォルトの名無しさん
2006/11/22(水) 02:51:350034デフォルトの名無しさん
2006/11/22(水) 08:32:57「自分の環境だから」って、自分の環境にmakeがあるからそういうドキュメントになってんじゃないの?
なんか読み違えてる?
0035デフォルトの名無しさん
2006/11/22(水) 09:03:35そういう所では make 以外にも足りない物が色々ありそうだし。
頑張って書いたとしても、「それほど難しい作業でもないから書いて当然だろ」とか
言われちゃうんだろうなorz
0036デフォルトの名無しさん
2006/11/22(水) 09:33:330037デフォルトの名無しさん
2006/11/22(水) 09:50:360038デフォルトの名無しさん
2006/11/22(水) 10:15:270039デフォルトの名無しさん
2006/11/22(水) 10:16:100040デフォルトの名無しさん
2006/11/22(水) 11:06:40マニュアルなんだし必要なものくらい最低限明記しとけよ、という主張なんだろうし、
いちいち入手方法や導入方法にまで言及する必要はないのでは。
箇条書き程度だろう。
てか、適度に箇条書きしてるマニュアルのほうが多いような気もするが。
なんて言ってると>>10の拡張ライブラリにのマニュアルには
REQUIREMENTSとかの項がしっかり書かれてたりするんだよな
0041デフォルトの名無しさん
2006/11/22(水) 12:13:39頭使えない人はお金を使うべし。
0042デフォルトの名無しさん
2006/11/22(水) 12:14:250043デフォルトの名無しさん
2006/11/22(水) 23:40:46コマンドラインで使うスクリプトを書いています。
スクリプトにオプションを渡したいのですが、
オプションの処理をおこなうライブラリはあるのでしょうか。
0044デフォルトの名無しさん
2006/11/22(水) 23:43:360045デフォルトの名無しさん
2006/11/23(木) 00:11:29p ARGV
-----
./test.rb -a aaa -b bbb
["-a", "aaa", "-b", "bbb"]
これで用が済む場合も少なくない
0047デフォルトの名無しさん
2006/11/23(木) 12:00:230048デフォルトの名無しさん
2006/11/23(木) 12:20:21「readlinesで一気に配列として読み込むよりeachで各行処理したほうがこんなにメモリに優しいじゃん」
とかいうことを数値として実感して納得したいです
0049デフォルトの名無しさん
2006/11/23(木) 12:28:130050デフォルトの名無しさん
2006/11/23(木) 12:34:40…いや、どうやればコマンド単体のメモリ使用総量を調べられるのかわかんないけど
topを注視し続けるというのも現実的ではないしなあ
0051デフォルトの名無しさん
2006/11/23(木) 14:33:01多くメモリを食う方はより緩い制限で実行できなくなるだろう。
と思ったが、どのオプション使えばいいんだ。
0052デフォルトの名無しさん
2006/11/23(木) 16:25:36bash組込みのtimeじゃなくてtcshのtimeとか/usr/bin/timeとか。
0053デフォルトの名無しさん
2006/11/23(木) 16:27:28libgtop2
0054デフォルトの名無しさん
2006/11/23(木) 18:11:46効率のいいやりかたを教えてください。
例えば、"a"を2に、"b"を6に、"c"を11に、"d"を15に置き換える場合、
"aabdc"は[2,2,6,15,11]になるような処理です。
今は1文字づつcase〜whenで処理しています。
0055デフォルトの名無しさん
2006/11/23(木) 18:29:34h = {?a => 2, ?b => 6, ?c => 11, ?d => 15}
p "aabdc".unpack("C*").map{|c| h[c]}
0056デフォルトの名無しさん
2006/11/23(木) 21:49:28こんなのも。
(hのキーが?aとかの場合)
require 'enumerator'
"aabdc".enum_for(:each_byte).map{|c| h[c]}
(hのキーが"a"とかの場合。Ruby 1.9だと ?a == "a" だっけ?)
"aabdc".split(//).map{|c| h[c]} # //は空の(中に1文字もない)正規表現
# irbから動かしてString.each_charがないと騒いだのは秘密。
# ActiveSupportめ。
0057デフォルトの名無しさん
2006/11/23(木) 21:54:31よろしくおねがいします。
0058デフォルトの名無しさん
2006/11/23(木) 21:59:220059デフォルトの名無しさん
2006/11/23(木) 22:05:29def register_action(sym, &block)
__send__(:define_method, sym) do |*options|
options = options.shift || {}
block.call(options)
end
register_action(:to_folder) do |options| ... end
引数の受け取り方になんか制限つきそうな気が……
0060デフォルトの名無しさん
2006/11/23(木) 22:26:47トン! なるほどん
0061デフォルトの名無しさん
2006/11/23(木) 23:21:30ありがとうございました。
時間も半分以下に短縮できました。
0062デフォルトの名無しさん
2006/11/24(金) 00:32:00まったくの初心者なんですけど(;・∀・)
ターミナルに ruby ファイル名.rb でリターン押しても
ruby: No such file or directory -- ファイル名.rb (LoadError)
ってなります ファイルの保存場所とかにルールとかでもあるのですか?
0063デフォルトの名無しさん
2006/11/24(金) 00:44:18カレントディレクトリは確認した?
pwd
0064デフォルトの名無しさん
2006/11/24(金) 00:50:38カレントディレクトリ!?
すいませんほんとに初心者なんで…絶対パスの事かな
仮にデスクトップにそのファイルがあるならばそれを指定しなければダメと言うことですか?
ターミナル自体始めて動かしたもので
0065デフォルトの名無しさん
2006/11/24(金) 01:10:44ヒントサンクス
おお 自己解決しました Ruby自体の問題ではなくターミナルの問題でした ターミナルちっと勉強するかorz
ファイルの場所をちゃんと指定して大丈夫でした
0066デフォルトの名無しさん
2006/11/24(金) 03:09:210067デフォルトの名無しさん
2006/11/24(金) 11:56:39Rubyに限らず,Macを使いこなすにはターミナルの使い方(bash シェルの使い方)に詳しくなっておくと便利だよ。
かくいう自分は,ターミナル上でRubyを楽しんでるマカーです。
ちょっとした日常の繰り返し作業も,AppleScriptやシェルスクリプトではなくRubyスクリプトを書いて処理してます。
0068デフォルトの名無しさん
2006/11/24(金) 15:07:23#!/usr/bin/ruby -Ku -Ilib
とかくとエラーになる。ただ、
#!/usr/bin/ruby -Ilib -Ku
と、順序を変えると大丈夫。コマンドラインだと順序関係なく動くんだけど…
何か制約があるの?それとも前者だとオプション解釈上問題でも生じてる?
0069デフォルトの名無しさん
2006/11/24(金) 16:42:45ruby: invalid option - (-h will show valid options) ←たぶんこのエラーが出たはず
~$ ruby "-Ilib -Ke"
ruby: Interrupt ←エラーなし、終了のためにここでEOF
~$
スクリプトの第1行目(俗称shebang)では、複数の引数は解釈が保証されない。
たとえばLinuxでは「空白後をひとまとめにした1個の文字列」として渡される。
#!/usr/bin/env ruby -Ke がうまく動作しないのもこれが理由。
ということで、「Rubyでは-Kオプションを最初以外に書いておくとたまたま動く」が正解。
0070デフォルトの名無しさん
2006/11/24(金) 16:48:37Rubyの場合、起動したインタプリタが改めて#!行を自分で解析して
自前である程度は処理してる。
$ cat hoge
#!/bin/sh -x
echo "$@"
$ ruby hoge
とかやると、rubyがshをexecする。
0071デフォルトの名無しさん
2006/11/24(金) 17:15:45---------------------
#!/usr/bin/perl
die "OOPS! IT'S PERL!"
---------------------
~$ ruby ./perl.pl
OOPS! IT'S PERL! at ./perl.pl line 2.
なにこの素敵無駄機能
0072デフォルトの名無しさん
2006/11/24(金) 18:05:41判りやすい解説thx。-KuIlib としてやったらうまくいった。
-IlibKuだとダメみたい。libじゃなくてlibKuディレクトリを探しにいっちゃうんだろうなぁ。
こんなことドキュメントに書いてあったかな…。
くっつける処理が謎だ。普通にくっつけたら、
先の例、前者のほうが「たまたま」動きそうなもんだが…。
それと、-Cと-Iを同時指定とかしたいときはどうするんだろう…?
0073デフォルトの名無しさん
2006/11/24(金) 18:40:46__END__(Perlでもスクリプト終端)を
組み合わせると混ぜコード書けるが
素敵過ぎてオススメできないんだぜ
0074デフォルトの名無しさん
2006/11/24(金) 21:36:07shebangに書かない。
シェルスクリプトから起動するようにする。
#!/bin/sh
ruby <好きなだけオプション> <Rubyスクリプトファイル>
こんな感じ。
あんまりよろしくないけど。
ってか、そんなにオプション付けたくなるようなことってあるか?
俺の場合は、あって-Kくらいだけどなー。
-lも-CもRubyのスクリプト内でできるしな。厳密には意味が違うかもしれんが。
0075デフォルトの名無しさん
2006/11/25(土) 01:19:34はじめてしった
スクリプトの第一行目は、
#!/usr/bin/ruby -Ku -Ilib
と書いても
#!/usr/bin/ruby "-Ku -Ilib"
とひとくくりにされるわけね・・・
引数が一個だと、「一応は」動いているわけだ
0076デフォルトの名無しさん
2006/11/25(土) 10:18:58違う。そこは実装依存。
Linuxはそうなるというだけで、ほかのUNIXだと適切に解釈してくれるものもある。
0077デフォルトの名無しさん
2006/11/25(土) 14:38:06「shebangでは複数の引数を書くべきではない」
ということ。
どうしても複数の引数を与えたい場合は、>>74のように一ひねりすること。
0078デフォルトの名無しさん
2006/11/25(土) 15:04:54そうなん?
これって、どのレベルで決定されるものなんでしょ?
OS?shell?ruby?
0079デフォルトの名無しさん
2006/11/25(土) 16:19:54MAINスクリプトから,SUBスクリプトに値(オブジェクト)を受け渡ししたいのですが,
いろいろサンプルを読んでもウィジェット側からサブルーチンを呼び出す方法しか無く,
その逆の方法の参考がありません。
Ruby/Tkを子プロセス的というか関数的に使うにはどうしたらよいでしょうか?
#!ruby
# MAIN
require 'sub.rb'
include Submodule
val = String.new
result = sub(val)
resultについての処理
...
__END__
#!ruby
# SUB
moduel Submodule
require "tk"
def sub(val)
v = TkVariable.new(val)
TkRadioButton.new { text 'top'; variable v ; value 'top'; anchor 'w'
pack('side' => 'top', 'fill' => 'x')}
TkRadioButton.new { text 'middle'; variable v ; value 'middle' ; anchor 'w'
pack('side' => 'top', 'fill' => 'x')}
TkButton.new { text 'Quit' ; command 'exit' ; pack }
Tk.mainloop
end
__END__
0080デフォルトの名無しさん
2006/11/25(土) 16:29:48shebang の処理は kernel が行ってるはず
0081デフォルトの名無しさん
2006/11/25(土) 17:43:35openメソッドをwモードでファイルを作成して
どうすればよいのでしょうか?
0082デフォルトの名無しさん
2006/11/25(土) 17:48:31>>1の逆引きRuby見たか?
0083デフォルトの名無しさん
2006/11/25(土) 18:10:10はい。
.writeメソッドではないですし。
0084デフォルトの名無しさん
2006/11/25(土) 18:17:39こんなのではいかが?
http://www.namaraii.com/rubytips/?%A5%D5%A5%A1%A5%A4%A5%EB%A5%A2%A5%AF%A5%BB%A5%B9#l9
ちゃんと見よう
0085デフォルトの名無しさん
2006/11/25(土) 18:42:18すみません。ありがとうございます。無事解決いたしました。
また、続きの質問なのですがこのようなプログラムで実行すると
出力ファイル名が、outputになります。標準入力から入力した文字にしたかったのですが・・・
output = $stdin.gets.chomp
up = File.open("output","w")
"output" を"#{output}" にして式展開すると入力した文字になりますが
#{} をしなくて入力した文字にすることはどうすればよいのでしょうか?
#{}だと面倒なのですが・・
0086デフォルトの名無しさん
2006/11/25(土) 18:44:15"output" のクォートを取ってみな
0087デフォルトの名無しさん
2006/11/25(土) 23:42:37その三者で言えば OS。 shebang 行の解釈はシステムコールがやる。どっちみち77が正しい。
0088デフォルトの名無しさん
2006/11/26(日) 17:07:36そりゃexitしたらそれ以上実行されんわな。
0089デフォルトの名無しさん
2006/11/26(日) 17:20:09module Submodule
require "tk"
def sub(val)
v = TkVariable.new(val)
root = Tk.root
TkRadioButton.new {text 'top'; variable v; value 'top'; anchor 'w'
pack('side' => 'top', 'fill' => 'x')}
TkRadioButton.new {text 'middle'; variable v; value 'middle'; anchor 'w'
pack('side' => 'top', 'fill' => 'x')}
TkButton.new {text 'Quit'; command {root.destroy}; pack}
Tk.mainloop
v.value
end
end
include Submodule
result = sub("")
p result
0090デフォルトの名無しさん
2006/11/26(日) 18:17:060091デフォルトの名無しさん
2006/11/26(日) 18:58:38Rubyスクリプトをある程度書けるようになった人で
GUIがどうしても必要になった人が仕方なく止むに止まれぬ理由で使うのがRuby/Tkだよな
少なくとも、Ruby部分で躓くような人はまだ使ってはイカン
0092デフォルトの名無しさん
2006/11/26(日) 19:19:29文字列中のAをBに、EをFに、MをNに、OをPに 置換したいのですが
どうすればできるのでしょうか?
gsubメソッドだと
string.gsub(/AEMO/,'BFNP') じゃ、AEMOをBFNPと固まった文字列で置換してしまいます。
一度で各文字を置換指定するにはどうしたらよいのでしょうか?
0093デフォルトの名無しさん
2006/11/26(日) 19:30:392. gsub にブロックを渡して、マッチした文字ごとに分岐する処理を書く
3. tr を使う
http://www.ruby-lang.org/ja/man/?cmd=view;name=String#tr
"ABCDEFGHIJKMNOPQRSTUVWXYZ".tr("AEMO", "BFNP") # => "BBCDFFGHIJKLNNPPQRSTUVWXYZ"
0094デフォルトの名無しさん
2006/11/26(日) 21:48:55start = 1000
moji = ""
(0..15).step(3){|i|
moji << #{out[i,3]} + "(" + "#{start.to_i - 150 + i}" + ")" + ","
p moji
}
すみません、7行目に文法エラーと出てしまましたが、どう間違って?
ARA(850),FAF(853),・・・ みたいに表示したく。
そして、最後の文字列の , は削除したいと思っておりますが、それ以前にエラーがでてしまいます。
どうぞよろしくお願いいたします。
0095デフォルトの名無しさん
2006/11/26(日) 21:53:43> moji << #{out[i,3]} + "(" + "#{start.to_i - 150 + i}" + ")" + ","
^^^^^^^^^
ここが違う。
#{} は文字列に変数を埋め込むときに使う。
この場合out[i,3]だけでいい。
↓のようにしても(・∀・)イイ!!。
moji << "#{out[i,3]}(#{start.to_i - 150 + i}),"
0096デフォルトの名無しさん
2006/11/26(日) 21:56:32というか、前者の書き方が見にくいからこその#{}だよな。
0097デフォルトの名無しさん
2006/11/26(日) 22:03:34ありがとうございます!無事できました。
#{}を式展開とだけ覚えていたのですが、文字列中で有効なんですね。勉強になりました。
0098デフォルトの名無しさん
2006/11/26(日) 22:04:36j = start.to_i - 150 + i
moji << "#{out[i,3]}(#{j}),"
埋め込むのは変数やメソッドだけにしてこう書こうぜ
0099デフォルトの名無しさん
2006/11/26(日) 22:53:57括弧やクォートの囲みは浅くしたい
010099
2006/11/26(日) 22:56:110101デフォルトの名無しさん
2006/11/26(日) 23:58:59make_the_file unless Filetest.exist?(file)
file読み込み処理
と
begin
file読み込み処理
rescue Errno::ENOENT
make_the_file
retry
end
ってどっちが「普通」ですか?
前者は Filetest.exist? が毎回必ずディスクを余分に読みますよね
例外を待ち構えて例外が起こったときに対処したほうが素直ですか?
0102デフォルトの名無しさん
2006/11/27(月) 00:25:48俺は上が好み。
0103デフォルトの名無しさん
2006/11/27(月) 00:44:54後者はretryの取り扱いミスが怖いので前者
確かにディスクアクセスが余分で気持ち悪いけどね
本当は後者がウツクシイんだろうな、と思う
0104デフォルトの名無しさん
2006/11/27(月) 00:51:22泣いたことを思い出した
0105デフォルトの名無しさん
2006/11/27(月) 10:03:460106デフォルトの名無しさん
2006/11/27(月) 10:28:050107デフォルトの名無しさん
2006/11/27(月) 10:50:54(-1, 2) で試したところ、(-1, 1) と同じ結果がでてきたのですが・・・
0108デフォルトの名無しさん
2006/11/27(月) 11:44:03普通、Rubyでは一発ではできない。
Rubyの文字列枚挙操作は、1バイトを単位として動作し、日本語2バイト文字列を「1文字」として解釈しない。
が、1バイトの英数字だけならStringのsliceメソッドが使える。
>>106はよくある間違い(というかこれ仕様が意地悪)なので注意。
0109デフォルトの名無しさん
2006/11/27(月) 11:46:36う。すまんボケてた。
後ろ二文字ならslice!(-2, 2)とか、
めんどくさけりゃstr.slice!(-2, str.length)だな。
というかリファレンスのString#slice!を参照
0110デフォルトの名無しさん
2006/11/27(月) 11:48:36仕様で最後のslice(-1, 1) でしか無理ってことかな。
0111デフォルトの名無しさん
2006/11/27(月) 11:50:08$KCODEをきちんと指定+実行コスト度外視だったら、
arr = str.split(//)
arr.pop
str = arr.join
とか。
0112デフォルトの名無しさん
2006/11/27(月) 11:57:28ありがとうございました。無事できました。
日本語でも一発でできるようなメソッド装備すればいいのに。
0113デフォルトの名無しさん
2006/11/27(月) 11:58:15Rubyのstr[-m,n]は「末尾から数えてmバイト目から右→に向かってnバイトを範囲とする」だからね。
直感的には「末尾から数えてmバイト目から左←に向かってnバイト分」だと思うんだが。
>>111
日本語含んだ文字列ではやっぱり正規表現で分割して配列にするしかないのかな。
irb> str="ねこだいすき"
irb> puts str.scan(/(.+?).$/e)
ねこだいす
irb> str2="hoge"
irb> puts str2.scan(/(.+?).$/e)
hog
うーん。
0114デフォルトの名無しさん
2006/11/27(月) 13:01:27<< または + を使って
私は 猫が とても 大好き です という各単語(word)を順次イテレータで追加していくと
str = ""
str << word
で、「私は猫がとても大好きです」という文字列になりますよね。 これを
「です大好きとても猫が私は」のように後ろにあるやつを前にしていきたいのですが・・・
0115デフォルトの名無しさん
2006/11/27(月) 13:07:51そのwordを何で保持してるかに拠るだろ。
Arrayならreverseすればいいし。
0116デフォルトの名無しさん
2006/11/27(月) 16:10:51str[0,0] = prefix
# self[regexp]=val
str[/^/] = prefix
# sub!(pattern, replace)
str.sub!(/^/, prefix)
0117デフォルトの名無しさん
2006/11/27(月) 16:48:04db.root?('hoge')を使うしか。
db['hoge']すると例外が発生してほしいってこと?
0118デフォルトの名無しさん
2006/11/27(月) 17:48:53irb> h=Hash.new
irb> p h['hoge']
nil
これにあわせた動作なんだろうけどな
0119デフォルトの名無しさん
2006/11/27(月) 19:35:52ことがあります。
環境:ruby 1.8.5 (2006-08-25) [i386-linux]
Vine Linux 2.6.16-0vl15
自分は、rubyからshellを呼び出すときShellクラスを使っています。
今やっている事は、あるprogram1で作成したテキストファイルをgnuplot
に読み込ませてグラフを自動生成するというものです。
簡単に例を示すと・・・
#Rubyでの処理
==============
==============
==============
#Shellでの処理
sh = Shell.new
sh.system("program1") #gnuplot用スクリプトscript1生成
sh.system("gnuplot","script1") #epsファイルを出力する
#終了
のようにgnuplotを実行させたいんですが、epsファイルが作成されません
でした。しかし、ターミナルから手動でgnuplot script1を実行すると正常
にepsファイルが出力されたので、恐らくsh.system()を呼び出す時のタイミ
ングの問題かと思うのですが、詳しい方の意見を頂けたらとありがたいです。
ちなみにscript1を作成した状態でsh.system("gnuplot","script1")だけを実
行させると正常にepsファイルが作成されました。また、sh.system("gnuplot",
"script1")の前にsleep()で0.2[sec]ほど待つと正常に出力されるのですが、eps
ファイルを作成する数が多いため時間がかかり過ぎてしまいます。最終的にはル
ープを使用して複数のepsファイルを作成するので。
0120デフォルトの名無しさん
2006/11/27(月) 20:03:02system("program1")
system("gnuplot script1")
とか
`program1`
`gnuplot script1`
じゃダメですか?
0121デフォルトの名無しさん
2006/11/27(月) 20:41:05大きなファイルを扱うのですが、最後の行だけ欲しいのです。
後ろから100バイト読んで、改行コードが無かったらまた100バイト読む。
という感じで出来るかな?と思ったのですが、
「後ろから読み込む」やり方がわからないです。
0122デフォルトの名無しさん
2006/11/27(月) 21:10:250123デフォルトの名無しさん
2006/11/27(月) 21:15:37大きなファイル扱うってかいてるじゃんか。
File#seekで読み込み位置ずらしていくのがベストじゃないの?
0124デフォルトの名無しさん
2006/11/27(月) 21:17:55IO#seek(offset, IO::SEEK_END)
あたりが使えそう…だろうか。
まぁ、めんどいことになるのは確かだ。
0126デフォルトの名無しさん
2006/11/27(月) 22:51:01レシピブックにそういう話が載ってたような気がする
0127121
2006/11/27(月) 23:45:06レシピブック、今手持ちに無いので明日見てみようと思います。
それともう一つ問題が。
無限ループしてる訳では無いのですが、巨大なファイルを扱っているので
C:/workshp/test01.rb:142:in `clear': stack level too deep (SystemStackErro
r)
というエラーが出てしまいます。
これについては、
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/29569
これが参考になったのですが、gc.c(rubyのソースですよね?)を変更しないといけないし、
そのあとコンパイルも必要になるので、私が触れるレベルじゃなさそうです・・・。
何か解決策はありますでしょうか。
0128デフォルトの名無しさん
2006/11/28(火) 01:04:37普通の手法で書いてる限り巨大なファイルとスタックオーバーフローは全くなんの関係もない。
Rubyがstack level too deepと言うのは、Rubyがバグってないかぎりは関数呼び出しの階層が深すぎる場合だけ。
噛み砕いて言うと、関数から関数を呼び出してその関数から関数を呼び出して、ってのを数千回繰り返すと起きる。
つまり自分が書いてるコードが悪いだけだ。
プログラムをよく眺めて考えろ。頭の中で実行してみろ。マニュアルを読め。
ところどころでpして結果を確かめろ。思い込みでコードを書くな。
あと思い込みで質問するな。
0129119
2006/11/28(火) 01:36:42レスありがとうございます。
sh.systemをsystem()もしくは``で置き換えたところ、その症状は改善されました。
ただ、組み込み関数sytem()やバッククオート記法``を使用する場合、Pathはプログ
ラム開始時のカレントディレクトリからの相対パスしか受け付けてくれません。
例えば、
$PWD=top/にいるとき・・・
system("mkdir under/")
system("chdir under/")
system("program1")
system("gnuplot script1")
を行うとtop/under/にではなく、top/にファイル群ができてしまいます。
絶対パスを通せば何とかなりそうですが、後の都合上、相対パスが使いた
い所です。リファレンスなどを当たってみましたが、うまい方法が見付か
りません。カレントディレクトリを変更するのはsystem("chdir under/")
ではダメなのですかねぇ。バッククオートに関しては`cd under/`でエラー
が出てしまい、困っている所です。
度々、質問して申し訳ありません。system()を使った場合、カレントディ
レクトリを変更する方法をご存知の方がいらっしゃいましたら、ご意見を頂
けると助かります。
0130デフォルトの名無しさん
2006/11/28(火) 02:01:40system()で呼び出されるシェル環境は呼び出される都度
別のサブプロセスになるんじゃなかったけか。
#だから2番目のsystem()でカレントディレクトリを変更しても
# 3番目以降のsystem()にはその影響が及ばない。
system("mkdir under; cd under; program1; gnuplot script1")
としてみたらどうよ。
いやおれはRubyは知らないんだけどね。
手元の環境では上のようにして動いたぞ。
0131デフォルトの名無しさん
2006/11/28(火) 02:09:15system の中身はシェルなんだから chdir じゃなくて cd。
cd 自体の返り値を使うわけじゃないんだからバッククォートじゃダメ。
system("mkdir under; cd under; program1; gnuplot script1")
0132デフォルトの名無しさん
2006/11/28(火) 02:10:550133デフォルトの名無しさん
2006/11/28(火) 02:18:03どうせプログラムの構造について考えないなら黙ってshでやりゃすぐじゃね?
覚えてて損はないし、生きてるうちは廃れないだろ。
0134デフォルトの名無しさん
2006/11/28(火) 03:01:14Rubyとのインターフェースもファイル作ってパイプとかリダイレクトとかで済んだりする
0135127
2006/11/28(火) 04:59:41質問の仕方が悪かったですね。ごめんなさい。
ある研究で、巨大なファイルに10万程度の要素があって、その要素を繋げていくプログラムを作っています。
要素を繋げる為にいくつかの関数を用意してるのですが、関数を1000回程度呼び出した所でstack level too deep
になります。
が、こちらとしては正常な動作なので、もっと要素を繋いで行って欲しい。という訳なんです。
Linuxで動かしてみたら2000回程度呼び出したところでメモリ(2G)から溢れてスワップするようになったので、
仰るとおりプログラムを見直してみようと思います。
Windowsでは、stack level too deepを回避する手段は無さそうですね。
0136デフォルトの名無しさん
2006/11/28(火) 06:24:31再帰を非再帰の繰り返しに変更してみな
0137119
2006/11/28(火) 09:43:00レスありがとうございました。教えて頂いた方法で解決しました。
解説をして頂いて、どこが問題なのか理解できました。
fork()は、サブプロセスが立ち上がることは知っていたんですが、
system()がサブプロセスになることを知りませんでした。
>>133,134
確かに、最初からshellでやった方が楽だったような気がします。
Rubyで行う処理もあり、shellをRubyから呼び出した方が手っ取
り早いかなぁと最初は思っていたので。
この度は、お手数をお掛けしました。m(_ _)m
0138デフォルトの名無しさん
2006/11/28(火) 11:47:14require 'fileutils'というのもあるがな。
0139デフォルトの名無しさん
2006/11/28(火) 11:54:220140デフォルトの名無しさん
2006/11/28(火) 18:02:27再度書くがスタックオーバーフローが起こるのは自分の責任。
そもそもスタックがあふれるようなコードを書くべきでないだけの話。
正常な動作というのも勝手な思い込み。
WindowsもLinuxもその他色々もスタックは有限。
書き方が悪ければいずれにせよいつか起こる。
起こるまでの時間が短いか長いかの違いがあるだけ。
0141デフォルトの名無しさん
2006/11/28(火) 18:10:240142デフォルトの名無しさん
2006/11/28(火) 18:11:460143デフォルトの名無しさん
2006/11/28(火) 18:29:17行番号がループする
って話をどっかで聞いた。RHGだっけ。
0144デフォルトの名無しさん
2006/11/28(火) 18:37:08Windowsなプラットフォームで、実際に使えるスタックを十分使わな
いうちにstack level too deepになってしまうという問題が…(略)
って話が。
0145デフォルトの名無しさん
2006/11/28(火) 19:13:230146デフォルトの名無しさん
2006/11/28(火) 19:27:06それは本質ではない。
安直にスタック食い潰して死亡するコードはイクナイという話。
0147デフォルトの名無しさん
2006/11/28(火) 21:12:05プログラムを作成しています。
流れとしましては、
50万行ファイルオープン
↓
指定された5万行を配列に格納。
↓
ファイルクローズ
を考えているのですが、配列に5万行を入れて作業するのと
5万行に分割したファイルを読み込むのとではどちらが軽く処理できるのでしょうか?
しょうもない質問ですが宜しくお願いします。
0148デフォルトの名無しさん
2006/11/28(火) 21:14:19しょうもないと思うなら自分で両方実装してベンチとれや
0149デフォルトの名無しさん
2006/11/28(火) 22:04:28とか言ってみる
0150デフォルトの名無しさん
2006/11/28(火) 22:41:520151デフォルトの名無しさん
2006/11/28(火) 22:50:400152デフォルトの名無しさん
2006/11/28(火) 22:58:03というような解説はあってもいいな
0153デフォルトの名無しさん
2006/11/28(火) 23:41:05再帰。
0154デフォルトの名無しさん
2006/11/28(火) 23:49:51入門書では見たことないな
その辺のフォローはあってもいいよね
0155デフォルトの名無しさん
2006/11/29(水) 01:30:450156デフォルトの名無しさん
2006/11/29(水) 07:30:22関数定義もサブルーチンからのリターンもできない言語か
ループは大丈夫だとしても、キツいなw
gotoまみれになりそうだ
配列で仮想スタック作って自前で管理すれば
サブルーチンを扱えるかも知れんが
それはそれでどうなんだろうw
0157デフォルトの名無しさん
2006/11/29(水) 08:06:160158デフォルトの名無しさん
2006/11/29(水) 12:09:240159デフォルトの名無しさん
2006/11/29(水) 13:27:26require 'tk'
p Tk.getOpenFile
だとルートウィジェットが表示されてしまいます。
Tk.messageBox(:icon=>'warning', :type=>'ok', :message=>"Hello")
の場合は都合よくルートウィジェットは表示されないのですが,
同じようにできないだろうかと思ってます。
0160デフォルトの名無しさん
2006/11/29(水) 13:28:39本当はパイソンらしい。
0161デフォルトの名無しさん
2006/11/29(水) 14:33:42Tk.root.withdraw
0162デフォルトの名無しさん
2006/11/29(水) 15:03:36Thanks
0163デフォルトの名無しさん
2006/11/29(水) 17:08:46指導教官はぜんぜん言語名をまともに呼んだことがなかった。
「ぺいとん」とか「ぴてぃおん」とか。
0164デフォルトの名無しさん
2006/11/29(水) 17:17:30rubyで、画像に文字列を表示したいのですが(サウンドノベルゲームみたいなものの、メッセージが表示される枠のイメージ)
また、複数音声のファイル(mp3など)を、ランダムで読み込んで再生といったことをしたいのですが
参考になるようなところお願い致します。。。
vrubyのTIP系はどこをあたればよいのかわからず
0165デフォルトの名無しさん
2006/11/29(水) 17:55:18そういうのは、Ruby/SDLとか、Miyakoとか使うんじゃない?
0166デフォルトの名無しさん
2006/11/29(水) 18:29:38プログラムの関係でvrubyだけで実装しようとしております。
vrubyでの実装方法などとかはないでしょうか?
0167デフォルトの名無しさん
2006/11/29(水) 19:59:40まあ一度、MIyako使ってみろ。
Windowsでもちゃんと動く。
0168デフォルトの名無しさん
2006/11/29(水) 20:02:00SWin::Windowのメソッドをみろ。
使い方は、vr/をdopaintで検索すれば概ねわかるだろ。
音声関係は、VisualuRubyの守備範囲じゃなかろう。
0169デフォルトの名無しさん
2006/11/29(水) 20:28:53gem environment
とすると、
$RUBYLIB/rubygems/custom_require.rb:35:in `require': No such file to load -- sources (LoadError)
とでてしまいます。
何かヒントでもいいので、ご教授よろしくお願いします。
0170デフォルトの名無しさん
2006/11/29(水) 21:01:06ruby/gems/1.8/gems/sources-0.9.0
とか。
0171169
2006/11/29(水) 21:12:16ないです。
0172デフォルトの名無しさん
2006/11/29(水) 21:23:50ちゃんと用意しろ。
0173デフォルトの名無しさん
2006/11/29(水) 21:26:36ありがとうございました。やれるだけやってみます。
0174169
2006/11/29(水) 22:04:030175デフォルトの名無しさん
2006/11/29(水) 23:26:21それは本質ではない。
たった1000程度でスタックを食いつぶす実装はイクナイという話。
0176デフォルトの名無しさん
2006/11/29(水) 23:41:01PUSHは男のロマンだぜ
0177デフォルトの名無しさん
2006/11/29(水) 23:44:010178デフォルトの名無しさん
2006/11/30(木) 00:51:13> 直感的には「末尾から数えてmバイト目から左←に向かってnバイト分」だと思うんだが。
それは俺の直感には思いっきり反するんだが、どうしてくれる。
0179デフォルトの名無しさん
2006/11/30(木) 07:15:21Cだと
int gauss(int A){
hoge
}
int a(){
int C[10][10],i,j;
for(i=0;i<10;i++){
for(j=0;j<10;j++)
C[i][j]=1;
}
gauss(C);
}
で配列Cの中身はそのまま渡されるんですが・・・
0180デフォルトの名無しさん
2006/11/30(木) 07:56:52Cでは関数に配列を渡すというより
単なるアドレスを渡すという事になると思うんだけど。
#include <stdio.h>
int array_size(int *p)
{
return sizeof(p);
}
int main(void)
{
int a[] = {0,1,2};
printf("%d\n", sizeof(a));
printf("%d\n", array_size(a));
return 0;
}
それにそのコードだとコンパイルエラーでしょ?
0181デフォルトの名無しさん
2006/11/30(木) 08:37:12画像に文字を表示させるのは
フレーム型のbitmappanelを下に表示して、文字を出すことでなんとかいけました。
あとは音だけなのですが
ttp://vruby.sourceforge.net/samples.html のマルチメディア再生でいけると踏んでいるのですが
任意のフォルダ以下(sound/○○.mp3)のmp3ファイル(連番)をランダムでENTERを押したときに再生といったことをやろうとしていて
ディレクトリを読み込む段階で倒れてしまいました。。。
ご指導お願い致します。
0182デフォルトの名無しさん
2006/11/30(木) 08:52:090183デフォルトの名無しさん
2006/11/30(木) 09:03:48ヒント:google
0184デフォルトの名無しさん
2006/11/30(木) 09:09:47どうして配列が渡せないと思うのか早くコードで示せ
0185デフォルトの名無しさん
2006/11/30(木) 09:11:45具体的に配列を如何生成するかとか、他の関数に如何渡すのかとか、
添え字はどう参照されるのか基本的なことが何もかかれてない。
これじゃ他言語から新しく覚えたくてもわからん。
0186デフォルトの名無しさん
2006/11/30(木) 09:13:120187デフォルトの名無しさん
2006/11/30(木) 09:23:360188デフォルトの名無しさん
2006/11/30(木) 09:41:05def print_array(a)
a.each{|v| print v, ' ' }
end
a = [2,3,4,5,6]
print_array(a)
0189デフォルトの名無しさん
2006/11/30(木) 09:57:14スマソ
0190デフォルトの名無しさん
2006/11/30(木) 12:52:22Dir.glob
0191デフォルトの名無しさん
2006/11/30(木) 13:07:12「Cもまったくわかってません。」まで読んだ。
0192デフォルトの名無しさん
2006/11/30(木) 13:49:37----
str = "hogehoge"
sarray = Array.new(str.size){ |i| i }.sort_by{ |i| str[i..-1] }
sarray.each{ |i| puts str[i..-1] }
----
e
ehoge
ge
gehoge
hoge
hogehoge
oge
ogehoge
----
これで動作するんですけど、マルチバイトの場合はもちろん失敗します。
マルチバイト対応で何とかならないですかね?
0193デフォルトの名無しさん
2006/11/30(木) 19:14:38----
str = "ほげhogeほげ"
i = 0
sarray = []
while i < str.size
sarray.push i
if str[i].chr =~ /[\xA1-\xFE]/ then i += 2
else i += 1 end
end
sarray = sarray.sort_by{ |i| str[i..-1] }
sarray.each{ |i| puts str[i..-1] }
----
eほげ
geほげ
hogeほげ
ogeほげ
げ
げhogeほげ
ほげ
ほげhogeほげ
----
単純に2バイト文字の場合インデックスを飛ばせば良いんですね。
0194デフォルトの名無しさん
2006/11/30(木) 21:19:29$KCODE = "S"
sarray = []
s = str
until s.empty?
sarray << s
s = s.sub(/\A./, '')
end
sarray.sort!
puts *sarray
0195デフォルトの名無しさん
2006/12/01(金) 10:08:57class A
def foo
処理 A
end
end
class B < A
def foo
super
処理 B
end
def bar
処理 C
end
end
hoge = B.new
で、
hoge.barでBではなくてAのfooメソッドを呼びたいのですが
メソッドbarの処理Cは、どのように書けば良いでしょうか。
0196デフォルトの名無しさん
2006/12/01(金) 10:31:08def foo; puts "foo in A"; end
end
class B<A
alias :foo_A :foo
private :foo_A
def foo; super; puts "foo in B"; end
def bar; foo_A; puts "bar in B"; end
end
irb(main):012:0> B.new.bar
foo in A
bar in B
0197デフォルトの名無しさん
2006/12/01(金) 10:57:25a_foo_unbound = self.class.superclass.instance_method(:foo)
a_foo = a_foo_unbound.bind(self)
a_foo.call
end
もっと簡単に書けるかしら。
0198195
2006/12/01(金) 10:57:57ありがとうございました、できました。
classBでaliasをdef foo〜endの前に記述したのでfoo_Aはオーバーライド前の
classAのfooを示しているという理解でよいでしょうか?
private宣言をする意味が良くわかりません。
0200デフォルトの名無しさん
2006/12/01(金) 11:06:17>>197はinject並だから安心しろ
>>196のほうがなんぼか素直だ
0202デフォルトの名無しさん
2006/12/01(金) 17:26:58alias_methodはシンボル2つ。メソッドなので,で引数を区切る必要あり。
なんで二通りあるんだろう。
0203デフォルトの名無しさん
2006/12/01(金) 17:55:19二通りある理由は、機能が違うから、としか言いようがないかな。
0204デフォルトの名無しさん
2006/12/01(金) 19:07:070205デフォルトの名無しさん
2006/12/01(金) 19:30:26変わりません。
0206デフォルトの名無しさん
2006/12/01(金) 21:05:02その通り。
private にしているのは、意図せず foo_A で外から呼ばれないようにしたいなあという意思表示です。深い意味はありません。
ところで、
class C<B
def foo_A; puts "foo_A in C"; end
end
とすると、
irb(main):006:0> C.new.bar
foo_A in C
bar in B
=> nil
うーん、これはまあ仕方ないが。これ以上頑張るなら>197
0208デフォルトの名無しさん
2006/12/02(土) 03:39:140209デフォルトの名無しさん
2006/12/02(土) 13:54:310210デフォルトの名無しさん
2006/12/02(土) 14:12:30timesメソッドの中にif文を入れて,もし条件を満たしていれば
timesメソッドから抜けたいのですが,どうすればいいのでしょうか。
if文の中でbreakしてもtimesメソッドからは抜けられなかったので質問しました
どうかよろしくお願いします
0211デフォルトの名無しさん
2006/12/02(土) 14:33:543.times do |n|
break if n%2 == 1
puts n #=> 0だけ表示される
end
#=> 全体として nil が返る
一体どんなコード書いたんだ?
0212デフォルトの名無しさん
2006/12/02(土) 16:49:130213デフォルトの名無しさん
2006/12/02(土) 19:53:39メージ的にはこんな感じ
csv = CSV.open('file.csv', 'r')
p csv.size ##-> 行数
Arrayにしてから数えるしかないのでしょうか?
0214デフォルトの名無しさん
2006/12/02(土) 21:02:29csv を扱うライブラリーに"csv.rb"がある
マニュアルは下記、HPで。( rubyのマニュアルにあるHPはリンク切れ)
http://dev.ctor.org/doc/csv/
行数だけなら↓のようになるかな
require "csv"
filename = 'hoge.csv'
i = 0
CSV.open(filename, 'r') do |x| i += 1 ;end
p i
0215デフォルトの名無しさん
2006/12/02(土) 21:04:06nlines = open('file.csv').read.delete("^¥n").size
全部読んで、改行以外を抹殺して改行だけになったら文字数を数える。
つーかsystem("wc")するとか…
0216デフォルトの名無しさん
2006/12/02(土) 22:30:15----
case '\n':
lines++;
/* Fall through. */
case '\r':
case '\f':
if (linepos > linelength)
linelength = linepos;
linepos = 0;
goto word_separator;
case '\t':
linepos += 8 - (linepos % 8);
goto word_separator;
case ' ':
linepos++;
/* Fall through. */
----
だそうなので、Rubyが自前で\nを数えても wc とやってることは結局いっしょっぽい。
というか、wc だからといって何かすごい小細工があるわけでもない模様。
ファイルを全部メモリに保持するときのメモリの圧迫が気になるなら
ファイルを数百バイトずつ読んで捨てつつ改行だけカウントすれば。
0217デフォルトの名無しさん
2006/12/02(土) 22:40:48まあ、ファイルの改行をカウントするためだけに
ファイル開いて全部舐めてカウントして捨てて閉じるというのは
なんとなく無駄というかもったいない感じはしなくもない
0218デフォルトの名無しさん
2006/12/02(土) 22:46:06すみません。。。ボタンを押すとフォルダの中のファイル(0000.wav〜0009.wav)をランダムに再生するものを作りたいのですが
Dir.globでの操作が上手くいかず。。。お願いします。
下のはとりあえず、1個ずつ読み込んで再生しようと思ったのですが、最後しか再生されません。
VRMediaViewをmmとして、読み込むファイルをfnとして再生させています
def open_clicked
@mm.mediaclose
dirname = "sound/hoge"
Dir.glob("#{dirname}/*.wav").sort.each do |fn|
@mm.mediaopen(fn) if fn
@mm.play
end
end
これをランダムにしたいのですが、どのようにすればよいのか。。。お願い致します
0219デフォルトの名無しさん
2006/12/02(土) 22:49:31ランダムにしたいというのはどういうことなのか考える
次に、ランダムを表現するためのメソッドとかを探してみる
んで、そのメソッドをどう利用すればランダムに「なる」か考えてみる
即っとコード出しちゃう人もいそうだけど
0220デフォルトの名無しさん
2006/12/02(土) 22:56:31入門書や解説サイトには必ずある例題だと思うんだけど…
組み込み"関数"の rand を使うと乱数がもらえるぞ
0221デフォルトの名無しさん
2006/12/02(土) 23:05:37Dir.globとの組み合わせのところでうまくいかず。。。
それからディレクトリが1個読み込んで再生ではなく、一度に全部読み込んで最後だけ再生となってしまって
色々試行していたのですが、、、助け舟を頂きたく
0222デフォルトの名無しさん
2006/12/02(土) 23:13:48君が参考にしてる解説本あるいは解説サイト晒せ(w
p で色々調べるといい。
Ruby では、ドットの「前」にあるオブジェクトがどういう状態になってるか常に意識しれ。
具体的に言うと Dir.glob("#{dirname}/*.wav") がどういう風になってるか p で調べてみ。
調べたら、それをランダムに選ぶにはどうしたらいいか考える。
0223デフォルトの名無しさん
2006/12/02(土) 23:31:16ttp://www.osk.3web.ne.jp/~nyasu/software/vrproject.html
p ですか…すいません。。。仰っている意味が理解できずです
もう一度 print("hello world\n")からやり直してきます。。。
ただ、時間がもうあまり無く、解答だけでもいただけるとありがたいです。
0224デフォルトの名無しさん
2006/12/02(土) 23:41:350225デフォルトの名無しさん
2006/12/02(土) 23:43:340226デフォルトの名無しさん
2006/12/02(土) 23:57:38target = list[ (list.size() * rand()).to_i ]
p target
0227デフォルトの名無しさん
2006/12/03(日) 00:06:03ソースのとおり変更したら上手くいきました。
ただこれでは自分の身にならないので、どこのサイトで勉強をすればよいのかお教え願えますでしょうか
自分ではこのソースは書けないので。。。
本当にありがとうございました
0228デフォルトの名無しさん
2006/12/03(日) 00:06:13つーか rand(list.size) で用済まないか
0229デフォルトの名無しさん
2006/12/03(日) 00:06:540231デフォルトの名無しさん
2006/12/03(日) 00:10:260232デフォルトの名無しさん
2006/12/03(日) 00:15:34動作は一緒
英単語上のニュアンスの違いしかないんじゃないかな
「整数にする」と「切り捨てる」の違い
"3.14"を3にしたい場合は"3.14".to_i
3.14を3にしたい場合は3.14.truncate
ただ、こういうくだらないとこに拘る奴が中にいるとプロジェクトは混乱する(w
0233デフォルトの名無しさん
2006/12/03(日) 00:18:00教えてください。
Ruby/Qteなのですが、
dic = open("/home/zaurus/.anthy/private-dic.src")
dictxteuc = dic.read
dictxtu8 = dictxteuc.kconv(Kconv::UTF8,Kconv::EUC)
@dicedit.setText(dictxtu8)
#$defaultCodec.toUnicode
end
とすると、@diceditとしたQmultiLineEditの中の感じがすべて文字化けしています。
なにがわるいんでしょうか?教えてください。
ちなみに/home/zaurus/.anthy/private-dic.srcの中身は、EUC-JPのハズです。
0234デフォルトの名無しさん
2006/12/03(日) 00:29:351.8系だと Dir.glob("#{dirname}/*.wav") はwin環境だとちょっとまずい。
まじでさっさと対応版出して欲しい。
0235233
2006/12/03(日) 00:36:55教えてください。
Ruby/Qteなのですが、
def yomikomi
dic = open("/home/zaurus/.anthy/private-dic.src")
dictxteuc = dic.read
dictxtu8 = dictxteuc.kconv(Kconv::UTF8,Kconv::EUC)
@dicedit.setText(dictxtu8)
end
とすると、@diceditとしたQmultiLineEditの中の感じがすべて文字化けしています。
なにがわるいんでしょうか?教えてください。
ちなみに/home/zaurus/.anthy/private-dic.srcの中身は、EUC-JPのハズです。
0236デフォルトの名無しさん
2006/12/03(日) 00:42:10Qte のことは分からんが、どこが悪いか、まずは、各行の後でデバッグ出力出してみろ
(文字化け避けるため、それぞれ別のファイルに出した方がいいな)
まずは「どこ」が悪いのか特定するんだ。
0237デフォルトの名無しさん
2006/12/03(日) 00:58:31どうまずいの?
0238235
2006/12/03(日) 01:04:37出力された物はは確かに思った出力ではないのですけどね。
0239デフォルトの名無しさん
2006/12/03(日) 01:19:19def errlog(text,name)
File.open("/home/zaurus/rubyerror-#{name}.txt",'w'){|f|
f.write(text)
}
end
def yomikomi
dic = open("/home/zaurus/.anthy/private-dic.src")
dictxteuc = dic.read
errlog(dictxteuc,'euc') # 確認用出力
dictxtu8 = dictxteuc.kconv(Kconv::UTF8,Kconv::EUC)
errlog(dictxtu8,'utf8') # 確認用出力
@dicedit.setText(dictxtu8)
end
こうしてみろってことだろ、要は。
rubyerror-euc.txtがちゃんとEUC-JPかどうか、
rubyerror-utf8.txtがちゃんとUTF8かどうか確かめろってことかね
0240デフォルトの名無しさん
2006/12/03(日) 01:26:28dic = open("/home/zaurus/.anthy/private-dic.src")
open("1.txt","w").print dic
dictxteuc = dic.read
open("2.txt","w").print dictxteuc
dictxtu8 = dictxteuc.kconv(Kconv::UTF8,Kconv::EUC)
open("3.txt","w").print dictxtu8
まぁ、デバッガとか使えば、もっと楽なんだろうがな。
0241240
2006/12/03(日) 01:27:120242デフォルトの名無しさん
2006/12/03(日) 01:31:16仮に出力してる感がわかりやすくていい
0243235
2006/12/03(日) 01:36:22ほんとにありがとうございます。
ちなみに、ファイルは正確に変換されていたようです。
とすれば、最後の方の@dicedit.setText(dictxtu8)と
送られた先のQmultiLineEditのあたりがあやしそうですね。
ちなみに、これが初めてのプログラムなので習うというよりも、
習熟度がきわめて低いのが発想力のなさの一因なのでしょうねorz
0244デフォルトの名無しさん
2006/12/03(日) 01:39:40悩め、苦しめ、ジタバタしろ。
それが貴様の血となり肉となる。
orz する必要は全くない。
0245デフォルトの名無しさん
2006/12/03(日) 01:46:53QTe のことは分からんが、そのソースで理論上うまくゆく「はず」
ということであれば、環境変数とか設定ファイルとか、
初期化ルーチンあたりで設定するパラメータとかの値が悪いんでないかい?
(そんなもんがあるとしたらの話だが)
0246デフォルトの名無しさん
2006/12/03(日) 01:48:35ありがと。もう少しがんばってみるよ。
QmultiLineEditクラスは、マルチバイト扱ってくれんのかなぁ。
0247デフォルトの名無しさん
2006/12/03(日) 01:52:470248デフォルトの名無しさん
2006/12/03(日) 01:58:14それやってみます。m(. .)m
0249デフォルトの名無しさん
2006/12/03(日) 02:25:39sjisのbyte目が []{} なんかと被ると誤動作する。
0250235
2006/12/03(日) 02:26:13@dicedit.setText(tr(dictxtu8))
~~~
翻訳(translate)しなきゃだめだよね。
これ、一回こうなおしたと思ったのに・・・・
みんなありがと。とりあえず寝ます。
0251デフォルトの名無しさん
2006/12/03(日) 12:11:20nil.to_s が "" を返すということは積極的に使っていいもんですか?
「キー hoge がハッシュ h に登録されてないか登録されてても値が空("")のとき true」を
h['hoge'] == nil or h['hoge'].empty?
ではなく
h['hoge'].to_s.empty?
と書くのは邪悪?
0252デフォルトの名無しさん
2006/12/03(日) 12:28:06やめといたほうがいい。あれは結局引っ込んだのかな。引っ込んだとしても
またいつ復活するか分からんしなー。
railsの構成要素である active_support の blank? を使う方がいいかもしれない。
nil, 0, "", [] などに対して真を返す。
0253デフォルトの名無しさん
2006/12/03(日) 12:29:010254デフォルトの名無しさん
2006/12/03(日) 16:42:22ミニゲームを作ってHPで公開してみんなに遊んでもらう
(javaアプレットのような。)にはどうしたら良いのでしょうか。
0255デフォルトの名無しさん
2006/12/03(日) 16:48:50「javaアプレットのような」はほぼ不可能。
0256254
2006/12/03(日) 16:53:52いっそjavaに乗り換えたほうが楽なのか…
ありがとうございます。
0257デフォルトの名無しさん
2006/12/04(月) 10:23:11ところで,to_a,メソッドの振る舞いですが
#!/usr/local/bin/ruby
require 'csv'
outfile = File.open('csvout', 'wb')
CSV::Writer.generate(outfile) do |csv|
csv << ['c1', nil, '', '"', "\r\n", 'c2']
end
outfile.close
csv = CSV.open("csvout", "rb")
p csv.to_a #1->[["c1", nil, "", "\"", "\r\n", "c2"]]
p csv.to_a #2->[]
csv.close
上記のように変わってしまいます。これはそんなものなのですか?
「!』がついていないので,変化しないと思っていたのですが,知らないとうっかりしそうです。
0258デフォルトの名無しさん
2006/12/04(月) 12:48:140259デフォルトの名無しさん
2006/12/04(月) 15:27:21正確には hash.key?('key') || hash['key'].empty? だけど
このばあいだったらHash#fetch()を使って hash.fetch('key', '').empty?
(ただし hash['key'] == nil ならエラーになるかな)
いちばんいいのは
def nil.empty?; true; end
hash['key'].empty? # nilか空文字列ならtrue
nil.empty? は標準化してほしい。
0260デフォルトの名無しさん
2006/12/04(月) 21:05:01Rubyを習得して作りたいと思っているのですが、
以下のようなアプリをRuby作ることは難しいでしょうか(向いているでしょうか)?
・作りたいもの
HTMLで作られたフォーム部品を選択、もしくは入力して実行ボタンを押すと
入力した内容に沿った形式の帳票を印刷する。(帳票の形式は複数ある)
また、印刷履歴を管理し、ブラウザで参照できるようにする。
・やりたいこと
IE6上で動作し、インターフェイスと処理結果はHTMLとCSSで作る。
データ形式はXMLで値の取出しにはXPathを使う。
・制限
サーバに何かプログラム(例えばApacheなど)をインストールすることは許可されていない。
できればクライアントにも特別何かを導入したくない。(WindowsXP+IE6+ネットワークがあれば実行できるようにしたい)
クライアントの環境はWindowsXP+IE6のみ。その他の環境は考慮しなくてOK。
以上になります。
0261デフォルトの名無しさん
2006/12/04(月) 21:10:45> サーバに何かプログラム(例えばApacheなど)をインストールすることは許可されていない。
この時点で、ほぼ何も出来ないんだけど。
鯖にはRubyがインストールされていて、CGIとかで動かすことができるの?
鯖スペック詳しく。
> WindowsXP+IE6+ネットワークがあれば実行できるようにしたい
Rubyはどこで動きますか?電子の海で?
HTML+CSSで帳票ってあまり向かないような気がするんだけど大丈夫?
# 日本の帳票は変態仕様が多い
帳票のための入力データはどこから来ますか?
もしXMLなのであれば、XSLTで変換してやればおしまいのような気がするけどどう?
0262260
2006/12/04(月) 21:40:46サーバにRubyはインストールされていません。
Exerbというツールでスクリプトをexe形式にすれば
特別実行環境がなくても使えるようなので、
それを使いつつ、インターフェイスなどはIE6上でHTMLとCSSでできたら
効率的かなぁと考えたのですけれどもそんな虫のいいことはできないのでしょうか。
イメージ的には
1.イントラネット上の共有フォルダ上にあるexeを実行。
2.ブラウザが起動してフォームページが表示される。
3.フォームに必要事項を記入して実行。
4.帳票プレビューが表示される。
5.確認して印刷。
CSSならある程度使いこなせるので紙に合わせて作れると思います。
入力データはXMLです。
XPathでデータを取ってきてプログラムからHTMLを書くことを考えていましたが
ページ自体はXSLTで実現させることもできますね。気が付きませんでした。
HTML,CSS,XML,XSLTはそこそこわかるので積極的に利用しつつ
処理の部分でRubyを使っていきたいのですが上記のようなことはできないのでしょうか?
0263デフォルトの名無しさん
2006/12/04(月) 21:41:28VBAで印刷や入力補助を小細工したえくせるの帳簿ファイルを
Windowsネットワークの共有フォルダに置いてみんなに共有させる
0264デフォルトの名無しさん
2006/12/04(月) 21:57:110265デフォルトの名無しさん
2006/12/04(月) 22:05:51ページによってはCookieが有効でありませんと弾かれてしまう事があります。
これを解決できる良い方法は何かないでしょうか?
0266デフォルトの名無しさん
2006/12/04(月) 22:13:39etherealでもなんでもいいからパケット覗けばわかるっしょ。
0267デフォルトの名無しさん
2006/12/04(月) 23:15:55クライアントにexeを置くだけでは、それは無理。
IEを捨てて、アプリでなんとかするなら可能。
どちらにせよ、Rubyは不向き。
HTMLコーダのチミにも不向き。
0268デフォルトの名無しさん
2006/12/05(火) 00:15:26まぁ、ActiveScriptingRuby 使えば、Ruby でもできなくはないだろうが、
exerb 使えたっけ?あれ
0269デフォルトの名無しさん
2006/12/05(火) 09:51:13そういうアホな仕様の実現方法を考えるのは嫌いじゃないのだが考えられるのは
* ASRのHTA
* Webrickとかを使ってHTTPサーバとして動作するexeを作る
* WIN32OLEでなんとかする(フォームイベントがとれるかどうかが肝だが怪しい)
ぐらいか。
ブラウザだとHTAかHTTPしか手段がないからな。
>>268
1.8.4ならだいたい確実にできるらしい。
ttp://arton.hp.infoseek.co.jp/indexj.html
0270デフォルトの名無しさん
2006/12/05(火) 10:25:52仕様を素直に実現するなら、HTAを使うのが正解だと思うんだが、
その場合ActiveScriptEngineとしてのASRをインストールというか
登録する必要がある。
それは問題ないのかねえ?
もし俺がやるなら、2番目のWEBrickでHTTPサーバ立てる、を選ぶな。
楽だし。
0271デフォルトの名無しさん
2006/12/05(火) 14:37:43あーそりゃ問題だ。
無理。
実行時に必要なファイルだけインストールしちゃえばいいかも。
0272デフォルトの名無しさん
2006/12/05(火) 17:42:22これを詳しく教えてください。
0273デフォルトの名無しさん
2006/12/05(火) 17:55:36WEBrickを使ってHTTPサーバとして動作するスクリプトを作る。
そしてそれをExerbでexe化する。
以上。
0274デフォルトの名無しさん
2006/12/05(火) 18:08:04それはrailsでつくったアプリケーションでもできますか?
0275デフォルトの名無しさん
2006/12/05(火) 18:53:03やってる人はいるよ。
Rails製のデスクトップアプリを作った人がいる
0276デフォルトの名無しさん
2006/12/05(火) 21:50:21WindowsXPでruby-1.6.8使っててnet/httpsを使いたいんだが
Netで探したhttpsサンプル動かそうとすると
uninitialized constant Net (NameError)
とエラーがでるんだよ。
でNet-1.2.0だかが必要なのかなと(あてずっぽで)思って
そいつを探してるんだけど、
これってNet上どこにあってPCのどこにおけばいいの?
それともそもそも大間違い?
サンプルコードはこれ
require 'net/https'
Net::HTTP.version_1_2
https = Net::HTTP.new( 'www.foo.var', 443 )
https.use_ssl = true
https.ca_file = '/ca-bundle.crt'
https.verify_mode = OpenSSL::SSL::VERIFY_PEER
https.verify_depth = 5
https.start { |w|
response = w.get('/')
puts response.body
}
0277デフォルトの名無しさん
2006/12/05(火) 21:58:13どっかに単独配布時代の落ちてればいいんだが、ミツカンネ。
頑張って探すかRubyのバージョン上げてくれい。
0278デフォルトの名無しさん
2006/12/05(火) 22:00:051.8.5 使いなさい。
0279デフォルトの名無しさん
2006/12/05(火) 22:00:36ここが単独時代の跡地らしいが、ダウンロードリンク切れになってるな。
0280276
2006/12/05(火) 22:30:38ありがとう(号泣しそうです
にちゃんで久しぶりに親切な人たちを見た!お前ら大好き!
素直に1.8.Xにするずら
0281デフォルトの名無しさん
2006/12/06(水) 08:17:371.ローカル変数、インスタンス変数、(あと、Classクラスのインスタンス変数ですか)、クラス変数のスコープが、
複数ファイルにクラス定義が分割されてたり、
クラスやモジュールがネストされた関係にあったり、
後から特異的に定義されたりすると、何が何かわからなくなってしまいます。
一応、自分なりに、色々動かして、こんな感じじゃないかなぁとは思うようになったんですが
2.このことを、動的言語っていうこととか、宣言文とか、
そういう話も含めて、
こういう原則というか、思想に基づくから、
この変数は、ここまでがスコープなんだよとかいう風に
説明してくれてるような、本とかドキュメントとかないでしょうか。
3.例としては、カプセル化したいから、publicとかprivateとかあって
インスタンス変数は、元々privateなんだよ、というような説明があればいいんですが。
こういう理解は、C言語覚えて、ソース読まないといけないんでしょうか。。
それとも、アプローチの仕方が悪いんでしょうか。
読んだ本は以下の感じです。
たのしいRuby(1版)、
Rubyレシピブック
Ruby on Rails関連の本
0282デフォルトの名無しさん
2006/12/06(水) 08:38:320283デフォルトの名無しさん
2006/12/06(水) 08:46:10Excelでおk
0284デフォルトの名無しさん
2006/12/06(水) 11:59:01はいはいLotusLotus
0285デフォルトの名無しさん
2006/12/06(水) 14:12:190286デフォルトの名無しさん
2006/12/06(水) 19:37:58プログラミングRuby第二版言語編
初めてのプログラミング
この二冊は読んでおいて損はないはず
0287デフォルトの名無しさん
2006/12/06(水) 23:12:05cronからwindowを開かせるには、例えば
xterm -display :0.0
のようにXサーバを指定しなければならないようですが、
その方法が分かりません。
0288デフォルトの名無しさん
2006/12/06(水) 23:52:29RubyよりもXの質問になるね。
DISPLAY環境変数exportしておけば?
あと xhostとかで使用許可を出しておかないとたぶん表示させてくれない。
0289デフォルトの名無しさん
2006/12/07(木) 00:18:48そもそもあるのかどうかすらわからんだろう。
~/.xsessionとか~/.xinitrcあたりで、時間がくるまで眠ってるプロセスでも
バックグラウンドで走らすとか。
0290デフォルトの名無しさん
2006/12/07(木) 00:43:510291デフォルトの名無しさん
2006/12/07(木) 18:08:09こんなんもあった
http://www.ruby-lang.org/ja/man/?cmd=view;name=trap%3A%3A%A5%B9%A5%B3%A1%BC%A5%D7%A1%A2%C0%A9%B8%E6%B9%BD%C2%A4
http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=%A5%B9%A5%B3%A1%BC%A5%D7
http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=Ruby%A4%CE%B7%E7%C5%C0
http://shugo.net/jit/20050328.html
http://homepage1.nifty.com/~tetsu/ruby/tips/#var_scope
http://www.swlab.it.okayama-u.ac.jp/man/ruby/uguide/uguide22.html
http://wota.jp/ac/?date=20060309
http://idm.s9.xrea.com/ratio/2006/11/08/000535.html
このあたり読むと、わかるんじゃない??
0292デフォルトの名無しさん
2006/12/08(金) 02:01:33CSVのファイルを開いて
1,2,3,4
5,,3,6
2,,,3
↑このように保存されている
split使って
1
2
3
4
5
3
6
2
3
のように新しくCSVファイルを作りたいんですけど
どうやってやればいいですか?
すみません。。。
0293デフォルトの名無しさん
2006/12/08(金) 02:40:25まず、p を使ってスクリプト途中のデータの構造や状態を把握。把握したら適当に処理。
0294デフォルトの名無しさん
2006/12/08(金) 02:55:300295デフォルトの名無しさん
2006/12/08(金) 03:00:22puts File.read('csv').split(/,|\n/)
0296デフォルトの名無しさん
2006/12/08(金) 03:30:260297デフォルトの名無しさん
2006/12/08(金) 03:45:11ケチやな。
まぁおれにはできないけど(爆
0298デフォルトの名無しさん
2006/12/08(金) 04:48:300299デフォルトの名無しさん
2006/12/08(金) 07:19:270300デフォルトの名無しさん
2006/12/08(金) 10:03:29結果を新たに作った csv ファイルに書き込むんじゃないのか?
0301デフォルトの名無しさん
2006/12/08(金) 13:04:200302デフォルトの名無しさん
2006/12/08(金) 13:26:020303デフォルトの名無しさん
2006/12/08(金) 23:25:10Permission denied で書き換えられなくてちょっと困ってます。
どうすればいいでしょう。
環境は ruby 1.8.5 (2006-08-25) [i386-mswin32] の win2000 です。
0304デフォルトの名無しさん
2006/12/08(金) 23:30:49特異メソッドの定義方法を用いると
どうなります?
なんか、どこかで見かけた気がするんですが。。
0305デフォルトの名無しさん
2006/12/08(金) 23:43:00class << self; endの中に定義するのとの違いは? ってこと?
0306デフォルトの名無しさん
2006/12/08(金) 23:46:20obj.class.define_method(new_method_name, defined_method)
0307デフォルトの名無しさん
2006/12/08(金) 23:52:59「Classクラスのインスタンスである何らかのクラス定数」
に対する特異メソッドである。なので、通常の特異メソッドと同様、
def String.new_with_upcase(src)
new(src.upcase)
end
と出来て、
greeting = String.new_with_upcase("hello, world")
puts greeting #=> HELLO, WORLD
こういう、「書き方」を質問しているのかしらん。
0308デフォルトの名無しさん
2006/12/08(金) 23:53:55この記事、理解できないんですけど、
どういうことなんでしょう??
0309303
2006/12/08(金) 23:56:51explorerでフォルダ開いてたせいでPermission deniedが出てたようでした。
0310デフォルトの名無しさん
2006/12/09(土) 00:01:46こんな感じじゃない??
class Example
class << self
def show
puts "SHOW"
end
end
end
Example.show
0311デフォルトの名無しさん
2006/12/09(土) 03:30:44forを使った場合、midはforの外も含むスコープに含まれる。
ということは、define_methodに渡しているブロック内のmidもそれになる。
で、for終了時点でmidの中身は:getcなので、せっかく定義した
readもgetsもgetcも、全部getcを呼び出してしまう。
eachを使ってブロックの引数としてmidを使った場合は、
midのスコープはeachのブロック内で閉じる。
だから、define_methodに渡しているブロック内のmidは、
ちゃんとそれぞれ別々の物になる。
言葉で説明するとどうもうまく書けないけど、これで通じるかな?
0312デフォルトの名無しさん
2006/12/09(土) 15:10:16検索結果のページを取得したいのですが、rubyではどうすればよいのか
ヒントをお願いします。
************************************************
function postApmtData( actNamS, actMthdS , aptIdS ){
var formC = eval( "document." + frmNamS ) ;
var tempAction = formC.action ;
formC.actNamS.value = actNamS ;
formC.actMthdS.value = actMthdS ;
formC.aptIdS.value = aptIdS ;
formC.action = 'http://xxx.jp/yyy/Servlet/zzz' ;
formC.submit( ) ;
return false ;
}
************************************************
onClick="JavaScript:postApmtData('ArrNormalSearch'
,'topFromApLst'
,'588');return false;"
0313デフォルトの名無しさん
2006/12/09(土) 18:29:52require 'net/http'
Net::HTTP.version_1_2
File.open( 'result.html', 'w' ) {|f|
Net::HTTP.start('xxx.jp', 80) { |http|
response = http.post('/yyy/Servlet/zzz', \
"actNamS=ArrNormalSearch&" + \
"actMthdS=topFromApLst&" + \
"aptIdS=588")
f.write(response.body)
}
}
0314デフォルトの名無しさん
2006/12/09(土) 19:04:470315デフォルトの名無しさん
2006/12/09(土) 19:42:330316デフォルトの名無しさん
2006/12/09(土) 20:03:040317308
2006/12/09(土) 21:44:32ありがとうございます。
スコープの問題なんですね。
forを使った場合は
readメソッドの定義内では、@input.send(mid,*args)
getsメソッドの定義内では、@input.send(mid,*args)
getcメソッドの定義内では、@input.send(mid,*args)
で、結局 mid は:getc だということでしょうか。
blockを使った場合は
readメソッドの定義内では、@input.send(:read,*args)
getsメソッドの定義内では、@input.send(:getc,*args)
getcメソッドの定義内では、@input.send(:gets,*args)
という風になってるようなんですが、
スコープというより、定義するタイミングの問題でもあるんでしょうか。
ちょっと、理解できなかったですorz
0318デフォルトの名無しさん
2006/12/10(日) 00:43:170319デフォルトの名無しさん
2006/12/10(日) 00:50:21同じなんじゃないの?
0320デフォルトの名無しさん
2006/12/10(日) 04:30:550321311
2006/12/10(日) 05:19:57いや、スコープのせいで、forの場合のmidは全部同じ変数、
eachの場合のmidは3回繰り返すそれぞれで別の変数、になってる。
だから、forの場合は最後にmidに代入された:getcがmidの値になるし、
eachの場合はそうでない。
0322デフォルトの名無しさん
2006/12/10(日) 15:58:46クラスの特異メソッドは継承されるとかそういう話?
0323デフォルトの名無しさん
2006/12/10(日) 18:13:15HTMLコメントの<!-- -->を無視するんですが
どうすれば検索できるんでしょうか?
0324デフォルトの名無しさん
2006/12/10(日) 18:44:04まずコードをコピペしなさい。
0325デフォルトの名無しさん
2006/12/10(日) 18:46:00了解
0326323
2006/12/10(日) 18:58:45f = open("index.html","r")
d = f.read
f.close
p d.index("<!--link_file-->")
p d.index("<--link_file-->")
gets
検索するファイル"index.html"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Ruby</TITLE></HEAD>
<BODY>
<CENTER>
<TABLE border="1" cellspacing="0" cellpadding="0">
<TBODY>
<TR>
<TD width="200" colspan="2"><--link_file--></TD>
<TD width="590"><!--file_data--></TD>
</TR>
</TBODY>
</TABLE>
</CENTER>
</BODY>
</HTML>
結果
nil
225
0327323
2006/12/10(日) 19:00:250328323
2006/12/10(日) 19:02:38別の問題かも・・・ごめんなさい・・・あぁ
0329323
2006/12/10(日) 19:18:08検索する前に置換しちゃってました・・・
0330デフォルトの名無しさん
2006/12/10(日) 21:25:100331デフォルトの名無しさん
2006/12/10(日) 23:13:54このような文字列があったとして
string[num - 10,10]
このようにして配列を抽出するとき、numが10だと10から10個手前の文字10文字を抽出しますが
numが1だと-9,10 numが7だと-3,10となり後ろから数えた文字を抽出してしまいます。
そうではなくて、numが7だとすると 7から10個手前の文字といきたいところですが
10文字もないのである分の7文字を抽出するにはどうしたらよいのでしょうか?
普通に、[num - 10 ,10] のようにやるとnumが10より小さいと[-3,10]のようにマイナス指定になってしまいます。
マイナス指定するのではなく、10より小さいとnumから10までの文字を抽出するようにしたいのです。
0332デフォルトの名無しさん
2006/12/10(日) 23:22:22場合分けするしかないのでは?
0333デフォルトの名無しさん
2006/12/10(日) 23:31:45でいいのかな?
0334デフォルトの名無しさん
2006/12/10(日) 23:32:45string[ num < 10 ? num : num - 10, 10]とか。
0335デフォルトの名無しさん
2006/12/10(日) 23:42:28渡された引数が
true か false ならそれをインスタンス変数に保存し
それ以外(nilも)なら例外を出す
って処理を書きたいのですが
def test(b)
if b == true || b == false then
@b = b
else
raise TypeError
end
end
って冗長な気がします。
TrueClass と FalseClass を纏めるクラスもなさそうなので
クラスでの判別にすると更に冗長になりそうですし。
短い書き方無いでしょうか?
0336デフォルトの名無しさん
2006/12/10(日) 23:43:240337デフォルトの名無しさん
2006/12/10(日) 23:46:010338デフォルトの名無しさん
2006/12/10(日) 23:48:48[true, false].include?(b) くらいかな。
しかしたぶん、そのような処理を書かなきゃならんという考えが
何かの間違いだと思う。
0339デフォルトの名無しさん
2006/12/10(日) 23:56:010 or 1にする話だったからちょっと違うな。
ttp://wota.jp/ac/?date=20061121#p01
0340デフォルトの名無しさん
2006/12/10(日) 23:58:59うむ
いっそ全体を書き直したほうが今後のためにもいいかもしれん
習作的なものや作り始めたばかりなのなら思い直せ
0341デフォルトの名無しさん
2006/12/11(月) 00:19:17--- [nth, len]
nth バイト番目から長さ len バイトの部分文字列を返しま
す。nth が負の場合は文字列の末尾から数えます。
nth が範囲外を指す場合は nil を返します。
ということなので、何か根本的な勘違いしてないかい?
irb(main):004:0> 'abcdefghijklmnopqrstuvwxyz'[0,10]
=> "abcdefghij"
irb(main):005:0> 'abcdefghijklmnopqrstuvwxyz'[10,10]
=> "klmnopqrst"
# 文章で説明するよりもテストコードなり何なりで期待する結果を書いた方が
# いいような気がする。
0342デフォルトの名無しさん
2006/12/11(月) 00:33:42$stderr.puts "引数なし"
exit 1
end
これを設定したのですが、
ruby プログラム 引数1 引数2 でプログラムが正常に動作するプログラムを付くっ単おですが
引数2 を指定せずに実行すると
引数なし と設定したエラーが出ずに 引数2がないため開けないので別のエラーがでます。
if ARGV.empty? どうやらこれでは第1引数だけしか判断しないようなので
ARGV[0]
ARGV[1] をそれぞれif文で指定したのですが、できませんでした。
一括で、引数のempty? の判定をする方法はないのでしょうか?
よろしくお願いします。
0343デフォルトの名無しさん
2006/12/11(月) 00:37:09module BoolClass; end
class TrueClass; include BoolClass; end
class FalseClass; include BoolClass; end
def test(b)
@b = b if b.kind_of?(BoolClass) or raise TypeError
end
0344デフォルトの名無しさん
2006/12/11(月) 00:50:22まず、一括で引数のempty?ってのはなんか誤解してる気がする。
ARGVってのは配列で、ARGV.empty?ってのはその配列の中に
何かが入っているかどうかを判別しているんだよ。
だから、引数がまったく与えられなかったときにtrueになる。
よくわからんけど、引数の数が丁度2のときに処理をするの?
だったら、
raise 'usage: ruby プログラム 引数1 引数2' if ARGV.size != 2
とかやった方がいいんじゃない?
0345デフォルトの名無しさん
2006/12/11(月) 00:51:39len = [num, 10].min
string[0..num-1][-len,len]
0346デフォルトの名無しさん
2006/12/11(月) 00:51:55最初に
p ARGV
としたらどうなるか?
0347デフォルトの名無しさん
2006/12/11(月) 00:52:54引数の数(ARGV.size == 2)で調べるところだね、これは。
0348デフォルトの名無しさん
2006/12/11(月) 00:54:50連投スマソ
0349デフォルトの名無しさん
2006/12/11(月) 02:45:25obj.new(:foo => "hoge", :bar => "hage")
とかの先頭にコロンついた変数名をよく見るのだがこれって何?
単なる習慣?
0350デフォルトの名無しさん
2006/12/11(月) 04:06:06obj.new(:foo => "hoge", :bar => "hage")
は
obj.new({:foo => "hoge", :bar => "hage"})
と書いたのと同じ意味だ。つまり、obj#newにHashを渡している。
で、なぜSymbolオブジェクトをHashのキーにしているかというと、
・タイプしやすい。文字列に比べて1文字少なくて済む
obj.new("foo" => "hoge", "bar" => "hage")
とタイプするよりは楽だということ。
・Symbolの方がStringよりも生成時に性能的に有利。
Symbolは内部的には整数で表されてるんで。
ということかな。まあ慣習で強制されているものではないので、
SymbolではなくStringをHashのキーに取る実装もあり得るし存在している。
0351デフォルトの名無しさん
2006/12/11(月) 06:15:300352デフォルトの名無しさん
2006/12/11(月) 07:57:18Symbolのリテラルは見慣れないとぎょっとする表記だけど、
慣れたらなかなかいいもんですよ。ここは慣れですw
0353335
2006/12/11(月) 09:49:33うーん。コードが長くなってきて
クラスの海をどう渡ろうかなと。
それでちょっとだけ型判定を。
その後true/falseでなく専用のクラスを作り
そのインスタンスを2つ作り定数にしました。
いっそこうなったらトコトンやろうかと。
クラスを以てクラスを制すつもりで。
中途半端に組み込みクラスを使うより
むしろ判りやすい気がしました。
0354デフォルトの名無しさん
2006/12/11(月) 10:33:260355デフォルトの名無しさん
2006/12/11(月) 10:33:28なにかとシンボルを使いたくなる。
0356デフォルトの名無しさん
2006/12/11(月) 11:56:46例えば、ネットワークから読み込んできた文字列 sを、
s.read(2)
などのように、先頭から順番に読み込みたいのですが。
今は、
value = s[index]
index += 1
などのようにしていて、面倒です。
0357デフォルトの名無しさん
2006/12/11(月) 11:59:46StringIOを使いましょう。
http://www.ruby-lang.org/ja/man/?cmd=view;name=StringIO
0358デフォルトの名無しさん
2006/12/11(月) 12:11:50おお。ちゃんと用意されているのですね。
ありがとうございました。
0359デフォルトの名無しさん
2006/12/11(月) 12:35:05a, b = s.split(//)
print(a, b)
a,bにnilが代入された時は「空文字列」を設定したいのですが
何かエレガントな書き方はありますか?
とりあえず今は、1つずつ
a = a || ''; b = b || ''
みたいにやってるのですが、変数の数が増えると大変なので
もっと簡潔に書ける方法があると良いのですが。
0360デフォルトの名無しさん
2006/12/11(月) 12:47:550361デフォルトの名無しさん
2006/12/11(月) 13:17:32でいけるのかな。
あと
a = a || ''
は
a ||= ''
とも書ける。
0362デフォルトの名無しさん
2006/12/11(月) 13:24:58こんな場合にエラーなく処理させたいんです。
今は分割した物を、その都度 a = a || '' みたいにしてるんですが…
s = File.read('file') #空の場合もあれば 'w x|y z' みたいな場合もあり
a, b = s.split('|')
c, d = a.split(' ')
e, f = b.split(' ')
print(a, b, "\n", c, d, "\n", e, f, "\n")
0363デフォルトの名無しさん
2006/12/11(月) 13:27:58おおっ、エレガントだ!
ありがとうございました。
0364デフォルトの名無しさん
2006/12/11(月) 13:30:570365デフォルトの名無しさん
2006/12/11(月) 13:35:31そういう方法もありますね。
一つ勉強になりました。
0366356
2006/12/11(月) 13:39:44文字列、といっても中身はバイナリデータなのですが、
6A 0D 0A 00 00 51
のようなデータの場合、
seekや、readなどで、0Dが飛ばされて処理されてしまいます。
たぶん、0D0Aが改行コードと認識されているのですが、
飛ばされないようにするというか、バイナリとして扱うことはできないのでしょうか?
0367356
2006/12/11(月) 13:46:06もしかしたら、根本的な問題なのですが、
バイナリファイルを扱うのに、StringIO(IOストリーム)は向いていなかったりしますか?
今は、seekとreadなどで、読もうとしています。
0368デフォルトの名無しさん
2006/12/11(月) 13:58:39ファイルから読み込むときに既に\rが落ちてしまってるとか言うことはない?
0369デフォルトの名無しさん
2006/12/11(月) 14:01:180370デフォルトの名無しさん
2006/12/11(月) 14:01:590371デフォルトの名無しさん
2006/12/11(月) 14:04:41教えてもらった事を参考に↓みたいにしたのですが
エラーなく処理させるには、これがベストでしょうか?
s = File.read('file') #空の場合もあれば 'w,x|y,z' みたいな場合もあり
a = s.split('|')
c, d = (a[0] ? a[0] : '').split(',') + ['', '']
print c, d
0372356
2006/12/11(月) 14:05:53ファイルに出力すると、ちゃんと
6A 0D 0A 00 00 51
になっていました。
ですが、StringIO経由だと、
6A 0A 00 00 51
になってしまいます。
うむむ
0373371
2006/12/11(月) 14:10:29'a,b|c,d|e,f|g,h|..' みたいにずっと続くので
最初の分割は
a = s.split('|') みたいに配列にしないとマズイです。
x, y = a.split('|') みたいにするとマズイ。
0374356
2006/12/11(月) 14:13:47io = open(OUT_FILE + ".bin", "rb")
# StringIOで、Openした場合
# io = StringIO.open(s, "rb")
value = io.read(4)
puts sprintf('%x %x %x %x', value[0], value[1], value[2], value[3])
io.close
やはり、ファイルからバイナリモードで読み込んだときと、StringIOでOpenしたときと
挙動が違いますね。
これって仕様でしょうか?
一旦ファイルに落として、再度読み込むのを許容するしかないですかね?
0375デフォルトの名無しさん
2006/12/11(月) 14:24:49Windowsだと、binmodeで書き出ししない場合
勝手に\nが\r\nに直されてしまうから p sでチェックしてみて。
0376356
2006/12/11(月) 15:25:45あ、ファイルに書き出した時点で、\nが\r\nになっているというお話ですか?
か、確認しました!
バイナリモードで書き出したら、\nが\r\nになっているだけでした。
つ、つまり・・・
6A 0A 00 00 51
で、正しいです。StringIOは悪くないです。
俺が悪かったです orz
0377356
2006/12/11(月) 15:26:18バイナリモードで書き出したら、\nのままでした。
0378デフォルトの名無しさん
2006/12/11(月) 16:38:13p obj で、objのRubyの内部表現が見られるよ。
0379342
2006/12/11(月) 19:25:04引数がないままプログラムを実行するとエラーがでますよね
引数が1つしか指定しない場合だと、
if ARGV.empty? で引数が入力されない場合に
putsしてエラー文を出力します。
でもこれだと、コマンドラインから入力する引数(ファイル名など)が2つある場合だと
この文では、putsのエラー文ではなく、デフォルトのエラーが出てしまいます。
この2つや3つ目の引数をコマンドラインから入力するとなると、
引数が入力されなかった場合や、引数の入力が足りない場合
どのようして、指定のエラー文を出力すればよいのでしょうか?
0380デフォルトの名無しさん
2006/12/11(月) 19:30:57引数の数は丁度2個欲しいのか、丁度3個欲しいのか、
最低2個は欲しいが3個目も受け付けるのか、
それ以外なのかはっきりしろ。
それと>>344は試してみたのか?
0381342
2006/12/11(月) 19:35:29必要な引数は2つです。でも、3つや4つも一度にできるのであれば知りたいです。
引数はいずれもファイル名です。
>>344についですが、
raise 'usage: ruby プログラム 引数1 引数2' if ARGV.size != 2
引数は入力毎に異なるのでプログラム中に記述できないような気がするのですが・・・
0382デフォルトの名無しさん
2006/12/11(月) 19:37:00配列そのものに要素が「1つでも」あるのか、全くないかを判定するためのもの。
それぞれの要素が存在するかを知るためのものではない。
0383デフォルトの名無しさん
2006/12/11(月) 19:40:34optparse使え。
または、 p ARGV しながらプログラム書け。
0384デフォルトの名無しさん
2006/12/11(月) 19:44:36わかった。親切にメッセージを出した方がいいと考えたおれがバカだった。
raise if ARGV.size !=2
これでどうだ? 引数の数が丁度2でなかったときは
例外を上げてプログラムを終了する。
0385デフォルトの名無しさん
2006/12/11(月) 19:46:27def main(argv)
raise if argv.size != 2
arg1 = argv[0]
arg2 = argv[1]
# 処理
end
if __FILE__ == $0
main(ARGV)
end
0386デフォルトの名無しさん
2006/12/11(月) 20:03:34だとRubyっぽい。
0387デフォルトの名無しさん
2006/12/11(月) 22:52:29>引数は入力毎に異なるのでプログラム中に記述できないような気がするのですが・・・
…新手のギャグ?
つprintf
つ式展開
0388342
2006/12/11(月) 22:58:59raise if ARGV.size !=2
$stderr.puts "引数なし"
exit 1
end
文法エラーとでたのですが・・・
0389デフォルトの名無しさん
2006/12/11(月) 23:14:270390342
2006/12/11(月) 23:18:000391デフォルトの名無しさん
2006/12/11(月) 23:20:080392デフォルトの名無しさん
2006/12/11(月) 23:38:040393342
2006/12/12(火) 00:14:22unhandled exception
とエラーがでています。まだおかしいみたいです
0394デフォルトの名無しさん
2006/12/12(火) 00:17:44報告されてるわけ。
0395342
2006/12/12(火) 00:19:27empty?でやってたときはrescueがいらなかったので・・・
0396デフォルトの名無しさん
2006/12/12(火) 00:29:130397デフォルトの名無しさん
2006/12/12(火) 00:37:52あと、キーにシンボルを使うとキーと値が視覚的に区別しやすい。
構文強調をサポートしたエディタではなおさら。
0398デフォルトの名無しさん
2006/12/12(火) 00:41:47それありますねー。
結構でかい。
そういや、Railsで、シンボルと値の組のハッシュを多用しますけど、
シンボル名を間違えまくる。
それでも動いたりするんですが、
これはRubyの宿命ですか?
0399デフォルトの名無しさん
2006/12/12(火) 00:46:45Put(Item => 1 + 1, Width => 3);
したいのでしょうけど、記述ミスが痛いということでせう
0400デフォルトの名無しさん
2006/12/12(火) 06:13:51で、beginつけずにrescueだけつけて、
文法エラーがでてしまいました、とか言い出しそうな悪寒
0401デフォルトの名無しさん
2006/12/12(火) 06:42:08シンボルはリテラルなのでRubyに限らず間違えても(ry
補完機能つきのエディタ使えよ。
0402デフォルトの名無しさん
2006/12/12(火) 19:36:23予約語だけじゃなくて、変数までカバーしてくれるやつ。
今はeclipseのrubyプラグインを使ってるんですが、
補完機能が貧弱なので。
0403デフォルトの名無しさん
2006/12/12(火) 19:58:03厳密な補完じゃなくていいなら、(単語レベルなら)
xyzzyのRuby-modeかな。
でもこちらもオマケという程度です。
emacsとかのRuby-modeはどうなんかね?
0404デフォルトの名無しさん
2006/12/12(火) 20:01:19これの次に読むべき本は何ですか?
RubyはWebアプリのための開発言語でしか
ないのでしょうか?
何か画期的な使い道はないんですかね?
Linuxとかでsedやawkにとって変わるものでしょうか
0405デフォルトの名無しさん
2006/12/12(火) 20:06:49ある程度決まっているなら
使うシンボルを全部モジュール定数に入れておく。
実際にハッシュにアクセスする時は定数を指定。
0406デフォルトの名無しさん
2006/12/12(火) 20:07:04Windowsで、sedやawk知らんから、ruby便利に使ってます。
Rakeやら、テキスト処理から、ネットからのデータのダウンロードまでないと、
おれは死ぬ。
0407デフォルトの名無しさん
2006/12/12(火) 20:07:14sedやawkが他に取って代わられるようなものなら、とっくに取って代わられてるわけで。
0408デフォルトの名無しさん
2006/12/12(火) 20:08:28RDEはどうかな。
予約語と変数(というか編集中バッファ内の単語)両方を候補に出す。
メソッドの補完がイマイチだけど。
0409デフォルトの名無しさん
2006/12/12(火) 20:12:18真理
まあ、RubyをPerlに代わる標準スクリプト言語として採用しようとした
Linuxディストリビューションが過去存在したが…
0410デフォルトの名無しさん
2006/12/12(火) 20:19:25ネットからのデータのダウンロードなども
できるのですか もっと勉強してみます
ソケット通信とは違うんですよね?
>>407
RubyはRubyで勉強していけばいいですね
普段はC使ってます。まだ目標が無いのですが、色々な言語を
知りたいと思いRubyにしました。フリーだしオブジェクト志向で良い材料だと
思ってます。
0411デフォルトの名無しさん
2006/12/12(火) 20:28:32今は、読み書きに以下のように書いています
ioは、openで開いたものです。
def read_word(io)
value = io.read(2)
return (value[1] << 8) + value[0]
end
packとか使うんだろうか
0412402
2006/12/12(火) 20:34:04xyzzyのruby-mode、使ってました。emacsのruby-modeは
よく知りませんが、最近バージョンが上がったんだっけ。
>>408
RDE、なぜか忘れていました。使ってみます。
海の向こうではTextmateの人気が高いようで。うらやましい。
0413デフォルトの名無しさん
2006/12/12(火) 20:34:50いまのところ日本語は普通には打てないしシェアウェアだし。
シンボル補完
一部タイプしてESC、複数候補はESC連打
対象は現在ソースにあるシンボルなので、
s = file.read
s.indESC #=> s.index()
なんてことはできない。
型が字面からわかりづらい言語で、現在の型にあわせて補完やるのは難しいだろうなー。
略語展開
たとえばeawiTABとタイプすると
each_with_index { |e,i| } # eが選択された状態
になる。
おまけながら、その場でCtrl-{すると
each_with_index do |e,i|
TAB
end
になったりする。
0414402
2006/12/12(火) 20:54:11へー、そんなのあるんですね。
> いまのところ日本語は普通には打てないしシェアウェアだし。
後者はいいけど、前者は痛いですね。でも、なんかすごい
使いやすそうなのは分かりました。どっちみち、macもってないん
ですけど。
今思い出しましたが、RubyCLRの作者の人が、かなり
使いやすそうな環境を自慢してる動画を見たことがある。
あれ何だったっけ。
0415デフォルトの名無しさん
2006/12/12(火) 20:54:58読むほうはunpack、書くほうはpackだね。
0416デフォルトの名無しさん
2006/12/12(火) 23:00:09現在ベータ版。製本されて世に出るのは2月らしい。
http://www.pragmaticprogrammer.com/titles/textmate/index.html
0417デフォルトの名無しさん
2006/12/13(水) 09:41:09■ ECBやemacs-railsなどEmacsの機能をデモンストレーションしたFlash動画
http://platypope.org/yada/emacs-demo/
■ デモで扱ったElispパッケージ群
http://platypope.org/blog/2006/9/8/i-need-a-cool-european-accent
左のツリーにtortoiseSVNみたいにsvnの状態が出るのに感動した。
最近の emacs ってすごいな。
これってmeadowでも動く?
0418デフォルトの名無しさん
2006/12/13(水) 10:29:40emacsすげえな
0419デフォルトの名無しさん
2006/12/13(水) 13:22:210420デフォルトの名無しさん
2006/12/13(水) 13:25:370421342,388
2006/12/13(水) 13:41:52raise if ARGV.size !=2
rescue Errno::TypeError
$stderr.puts "引数なし"
exit 1
end
これやるとまたエラーがでたのですが、いわれたとおりにしたのに・・・
uninitialized constant Errno::TypeError (NameError)
0422デフォルトの名無しさん
2006/12/13(水) 13:57:15STDERR.puts "usage: #{$0} arg1 arg2"
exit false
end
0423デフォルトの名無しさん
2006/12/13(水) 13:58:36引数なしのraiseであがる例外は何? それをrescueしましょう。
意味的には ArgumentError なんだろうか。コマンドライン引数って。
0424342,388
2006/12/13(水) 14:00:22これをしているので指定のエラーがでます
begin
file = open(ARGV[0], "r")
file2 = open(ARGV[1], "r")
rescue Errno::ENOENT, Errno::EACCES
print("ファイルが存在しないかアクセス権限なし\n")
exit 1
end
0425デフォルトの名無しさん
2006/12/13(水) 14:03:45raiseに引数がない場合なんだが。
例外やめて>>422のように書いてもいいよ。
0426デフォルトの名無しさん
2006/12/13(水) 23:05:26聞いたんだけれどどなたか詳細ご存知ですか?
リファレンスマニュアルをググってみたんだけど見つからなくて・・・
0427デフォルトの名無しさん
2006/12/14(木) 01:43:16引数が無いならはARGV == [ ]
だもんでARGV[0]や[1]はnil
openはString、Stringにできるモノ以外が来たから
TypeErrorをあげる
0428デフォルトの名無しさん
2006/12/14(木) 01:52:20> これやるとまたエラーがでたのですが、いわれたとおりにしたのに・・・
お前、レスをまともに読んでないだろ。
0429デフォルトの名無しさん
2006/12/14(木) 02:09:030430デフォルトの名無しさん
2006/12/14(木) 07:57:420431デフォルトの名無しさん
2006/12/14(木) 08:46:57質問のようにみえるが、実はただの独り言。
0432デフォルトの名無しさん
2006/12/14(木) 16:21:29http://d.hatena.ne.jp/naoya/20061214/1166063145
はてなの中の人のプレゼンテキスト見たのですが、
Capistrano
って何?
0433デフォルトの名無しさん
2006/12/14(木) 16:28:34naoyaグループ - naoyaの日記 - Capistrano
http://naoya.g.hatena.ne.jp/naoya/20060928/1159437059
ここにありました。
複数ホストに接続して、shellを実行するソフトなんですね
0434デフォルトの名無しさん
2006/12/14(木) 17:20:05リモートで、
鯖停止メッセージを表示させて、
新バージョンをチェックアウトして、
リンク張り替えたりして、
データベース更新して、
アプリ再起動して、
鯖停止メッセージをしまう
なんていう定型タスクを実行できる。
0435デフォルトの名無しさん
2006/12/14(木) 18:25:05<% if hoge %>
ほげ〜
<% end %>
ってやると、
(改行)
ほげ〜
(改行)
になってしまうのですが、何とかする方法はないのでしょうか?
<% if hoge %>ほげ〜<% end %>
とするしかないですか?
eRubyの?方は、
% if hoge
ほげ〜
% end
とすれば、いいのですが・・・
0436デフォルトの名無しさん
2006/12/14(木) 18:34:23ERBのtrimmodeを"%"に指定したら、
% if hoge
も認識してくれました。
ありがとうございました。
0437デフォルトの名無しさん
2006/12/14(木) 19:01:090438デフォルトの名無しさん
2006/12/14(木) 19:10:20アレはわかりやすい。
0439デフォルトの名無しさん
2006/12/15(金) 15:57:441.8.4まで正常に動いていたコードの挙動が変わってしまいました。
どうも、-Kuの時の挙動が変わってるようなのですが…。
以下のサンプルは、すべて「サル」とテキストに出力するはずのものですが、
f_utf16.txtは「サ」になってしまいます。
1.8.4にするか、1.8.5でも-Keにすると「サル」になります。
#!/usr/bin/ruby -Ku
require 'iconv'
utf8_to_utf16 = Iconv.new('UTF-16LE', 'UTF-8')
# zenkaku katakana "saru"
utf8str = [0xe3,0x82,0xb5,0xe3,0x83,0xab].pack("C*")
utf16str= utf8_to_utf16.iconv(utf8str)
formated_utf16str = format("%s",utf16str)
open("utf8.txt","wb").write(utf8str)
open("utf16.txt","wb").write(utf16str)
open("f_utf16.txt","wb").write(formated_utf16str)
0440439
2006/12/15(金) 15:58:500441デフォルトの名無しさん
2006/12/15(金) 17:20:29rubyのhttpライブラリでクッキーの扱いはどうなってるのでしょうか?
ページ上のボタンをクリックしてページを開いていくのですが、どうも
クッキーを処理できてないみたいで、ブラウザでクッキーを拒否したときと
同じページを取得してしまいます… orz
Net::を使って一から書かないとだめなのでしょうか?
0442デフォルトの名無しさん
2006/12/15(金) 18:59:37一から、というか、普通にヘッダを処理すればいいと思うよ。
0443デフォルトの名無しさん
2006/12/15(金) 19:10:21単にバグ。[ruby-dev:29952] を参照。
ruby_1_8では直ってる。ruby_1_8_5では直ってない。
0444デフォルトの名無しさん
2006/12/15(金) 19:12:46どうも漢字をうまく扱うことができません。
#! ruby -Ks や $KCODE =
を使い読んでみましたが一致しません。
ほかに行わなければならない処理があるのでしょうか?
どうぞ宜しくお願いします。
0445デフォルトの名無しさん
2006/12/15(金) 19:19:18bodyと正規表現の文字コードを合わせないとダメなんじゃん?
0446デフォルトの名無しさん
2006/12/15(金) 19:38:07正規表現文字列に対しても文字コード変換という発想がありませんでした。
試してみます。
ありがとうございました。
0447デフォルトの名無しさん
2006/12/16(土) 15:18:35Rubyのmoduleで名前空間分けるってアリなの?
↓みたいな
module Hoge
module Piyo
module Foo
module Bar
class SampleClass
end
end
end
end
end
0448デフォルトの名無しさん
2006/12/16(土) 15:46:19module M
class A
...
end
class B
...
end
end
0449デフォルトの名無しさん
2006/12/16(土) 15:51:59class SampleClass
end
end
0450デフォルトの名無しさん
2006/12/16(土) 16:05:40深すぎwww
0451デフォルトの名無しさん
2006/12/16(土) 16:58:37cygwinのターミナルで irb が、
/usr/bin/ruby: no such file to load -- ubygems (LoadError)
と吐いて動かないという話をしました。
これの、原因がわかりました。
mswin32版は、One-Click Ruby Installer for Windowsでインストールしていて、
RUBYOPT=-rubygems
を設定しているせいでした。
unset RUBYOPT
で、cygwinのirbが動いてくれました。
bashだと、.bashrcに、
alias irb='unset RUBYOPT; irb'
と書くと便利です。
そのせつは、お騒がせしました。
0452デフォルトの名無しさん
2006/12/16(土) 17:43:52Ctrl+Backspaceとかで、単語削除はできないのでしょうか?
0453デフォルトの名無しさん
2006/12/16(土) 18:03:55http://rubyde.sourceforge.net/hiki/ja/Editor.html
ここにある以外はないんじゃない?
0454デフォルトの名無しさん
2006/12/16(土) 18:04:51RDE、保存後にアンドゥーもできないし、実用には遠い・・・
0455デフォルトの名無しさん
2006/12/16(土) 18:06:40eclipseの使い方知らないから使ってないけど。
0456デフォルトの名無しさん
2006/12/16(土) 18:12:59自分はRDE使ってるけど、使用し続けると、数時間後にリソースエラーとか何とかで固まるのと
保存後にアンドゥーができないのは確かに辛いよね。
HDDにファイルごと履歴残してないんだろうか。
0457デフォルトの名無しさん
2006/12/16(土) 18:46:530458デフォルトの名無しさん
2006/12/16(土) 18:56:42をもっと短く書きたいのですが、
inject?
>>457
なさそう・・・
0459デフォルトの名無しさん
2006/12/16(土) 18:57:23hoge.inject{ |i, j| i + j }
か。
0460デフォルトの名無しさん
2006/12/16(土) 19:23:16使いたいんだけどなー。
そんな漏れはJmEditor。TeraPad以外でシンプルないい
エディタないかな?
0461デフォルトの名無しさん
2006/12/16(土) 23:48:51文字列や正規表現のリテラルに結構困る
それが無ければなー
PeggyPad は文字間の調節が出来なくて
太字の単語が潰れる…
0462デフォルトの名無しさん
2006/12/17(日) 00:48:34自分も、PHPとかPerlとか他のスクリプトは
全部サクラエディタ使ってる。
単語の補完も出来るし、登録しとけば
パラメータヒントとかも出せるからそれなりに便利だし。
0463デフォルトの名無しさん
2006/12/17(日) 12:12:58ファイルのコピーってどうすればいいんでしょうか
テキスト系なら↓でコピーできるんですが、画像ファイルは途中で途切れてしまいます
def copy(inf,ouf)
dat = File.open(inf , "r") {|fr| dat = fr.read }
File.open(ouf , "w" ) {|fw| fw.write dat }
end
0464デフォルトの名無しさん
2006/12/17(日) 12:25:10def copy(inf,ouf)
File.open(ouf , "wb") {|fw| fw.write File.open(inf , "rb"){|fr| fr.read } }
end
でも、File.copy(from, to) 使っても同じようなことができるよね。
0465デフォルトの名無しさん
2006/12/17(日) 13:15:17バイナリモードで無事成功しました。
今までFile.copy(from, to)がなぜかエラーだったんで自作してたんですが
さっきrequire 'ftools'が必要な事に気づきました。
0466デフォルトの名無しさん
2006/12/17(日) 15:39:380467デフォルトの名無しさん
2006/12/17(日) 18:14:180468デフォルトの名無しさん
2006/12/17(日) 22:18:430469デフォルトの名無しさん
2006/12/18(月) 10:52:12* Rubyユーザは少数派である
* 大衆はRubyを(いろんな理由で)受け入れられない
* 現在、Rubyを受け入れられるのは「選ばれた人々」である
* つまり、彼らはある意味「選民」である
* しかし、選民意識をあまり吹かせると、ますます大衆から受け入れられない
* 結果としてますます選民になる(悪循環の予想)
0470デフォルトの名無しさん
2006/12/18(月) 12:00:240471デフォルトの名無しさん
2006/12/18(月) 12:17:35あなたのレスはRubyコミュニティーをみごとに象徴したすばらしいレスです。
0472デフォルトの名無しさん
2006/12/18(月) 12:24:22プログラムを書いたことのない初心者はお断り。
0473デフォルトの名無しさん
2006/12/18(月) 12:26:50偉そうなんだよねえ。
0474デフォルトの名無しさん
2006/12/18(月) 12:28:190475デフォルトの名無しさん
2006/12/18(月) 12:30:15なんで?
0476デフォルトの名無しさん
2006/12/18(月) 12:32:560477デフォルトの名無しさん
2006/12/18(月) 12:45:550478デフォルトの名無しさん
2006/12/18(月) 12:46:55* つまり、彼らはある意味「選民」である
* しかし、選民意識をあまり吹かせると、ますます大衆から受け入れられない
* 結果としてますます選民になる(悪循環の予想)
0479デフォルトの名無しさん
2006/12/18(月) 12:49:240480デフォルトの名無しさん
2006/12/18(月) 12:49:25向いていないような気がする。
むしろRubyには、プログラミングの概念くらいは理解しているな?的な
良くも悪くもUnix思想を受けているんじゃないかな。
0481デフォルトの名無しさん
2006/12/18(月) 12:57:38Windowsしか使ったことのない初心者はお断り。
0482デフォルトの名無しさん
2006/12/18(月) 13:05:000483デフォルトの名無しさん
2006/12/18(月) 13:30:41* プログラマは少数派である
* 大衆はプログラミングを(いろんな理由で)受け入れられない
* 現在、プログラミングを受け入れられるのは「選ばれた人々」である
* つまり、彼らはある意味「選民」である
* しかし、選民意識をあまり吹かせると、ますます大衆から受け入れられない
* 結果としてますます選民になる(悪循環の予想)
スレ違いゴメス。
0484デフォルトの名無しさん
2006/12/18(月) 14:55:03勘弁してもらえないだろうか
0485デフォルトの名無しさん
2006/12/18(月) 15:16:59JmEditor は良さ気だな。乗り換えようか。
Notepad++ は色分けの自由度が低いし
何より改行とタブの記号が自己主張しすぎてて嫌だw
0486デフォルトの名無しさん
2006/12/18(月) 15:30:28御大自ら次々にネタを投下してる言語なんだから仕方ないだろ。
修行だ、信仰心が問われているんだと思って我慢しろ。
0487デフォルトの名無しさん
2006/12/18(月) 16:56:58思ってる。ランチャー機能付いてるし、設定も簡単でイイ!
勘違いかもしれないけど、改行マークは最初から色ついてなかった
ような。とりあえずタブ記号は、スタイル設定ダイアログのGloba Styles
->Indent guidelinestyleで両方の色をデフォルトの背景色にすれば
消えるよ。
Notepad++教えてくれた人アリガトン。
0488デフォルトの名無しさん
2006/12/18(月) 17:07:480489487
2006/12/18(月) 17:21:17改行とタブの表示の有無は表示メニューから切り替えるだけでOK。
0490485
2006/12/18(月) 17:50:57違う違う。
俺は改行記号とタブ記号は表示されないと嫌なの。
でも、あくまで主役はコードであって欲しいから
目立つ改行・タブの記号は嫌なのさ。
極限まで薄い色にしたら一応見れた。…今度は見辛いが。
…これ設定ムズいな〜。
黒基調の設定がデフォで入ってるPeggyは楽だったんだが。
SciTEは…暇なときに設定やるかw
0491デフォルトの名無しさん
2006/12/18(月) 19:10:09> >487
> 違う違う。
> 俺は改行記号とタブ記号は表示されないと嫌なの。
失礼。そうだったのか。
> でも、あくまで主役はコードであって欲しいから
> 目立つ改行・タブの記号は嫌なのさ。
改行は特にすごいね(笑)
> 黒基調の設定がデフォで入ってるPeggyは楽だったんだが。
自分も黒バックが好みなのでその意味ではめんどいかな。
ちなみにJmでいまいち気に入らなかったのは、関連づけなどから
起動したときにタスクバーアイコンがアクティブにならないとこ。
0492デフォルトの名無しさん
2006/12/18(月) 20:35:170493デフォルトの名無しさん
2006/12/18(月) 21:16:490494デフォルトの名無しさん
2006/12/18(月) 21:22:050495デフォルトの名無しさん
2006/12/18(月) 22:33:55ruby-modeも黒基調もあるよ。
0496デフォルトの名無しさん
2006/12/18(月) 22:41:04xyzzyのruby-mode最低限の機能でよいのだが、
インデントが一定規則で、誤爆する
0497デフォルトの名無しさん
2006/12/18(月) 22:49:570498デフォルトの名無しさん
2006/12/18(月) 22:50:35私はEmacs使っていますけどね。
0499デフォルトの名無しさん
2006/12/18(月) 22:53:500500デフォルトの名無しさん
2006/12/18(月) 22:57:330501デフォルトの名無しさん
2006/12/19(火) 00:44:280502デフォルトの名無しさん
2006/12/19(火) 10:09:230503デフォルトの名無しさん
2006/12/19(火) 13:25:53ttp://rubyist.g.hatena.ne.jp/muscovyduck/20061114/p1
に書いてあるCGI実行サンプルを動かしてみると、常に「dump error」が出ます。
(ruby最新版を使うとエラーは出ませんでした)
webrick/httpservlet/cgi_runner.rb の Marshal.restore(dump) 周りに
問題があるようなのですが……
これって何故なんでしょうか?
1.8.0ではwebrickを使わないほうが良いのでしょうか?
0504デフォルトの名無しさん
2006/12/19(火) 14:12:530505デフォルトの名無しさん
2006/12/19(火) 15:23:030506デフォルトの名無しさん
2006/12/19(火) 16:57:37オブジェクト(Classクラスのオブジェクトも、クラスのオブジェクトも含めて)
が持ってるのは、
インスタンス変数と、インスタンスメソッドだけだと思ってたけど、
次の見て、ローカル変数も保持してるのって、わけわかめになってきた。
class Hoge
local = 1
define_method(:foo) do
p local += 1
end
define_method(:bar) do
p local += 1
end
local = 10
end
hoge = Hoge.new
p hoge.foo
p hoge.bar
(つづく)
0507506
2006/12/19(火) 17:01:04どうやら、ローカル変数のスコープの問題が関与しているようだけど、
ローカル変数は、静的にスコープが決まるとかいって、U゚Д゚U ハァ?
って感じだったので、
静的ってのを調べたら、静的って言うのは、コンパイル時に決まるらしく、
今まで、コンパイルと実行を区別してなかった、私にとっては、
理解を超越してしまってる。
↓ここが、それに関する説明っぽいけど、
http://www.ruby-lang.org/ja/man/?cmd=view;name=%BC%C2%B9%D4
スコープなんて言葉は一言もでてこないし、
ブロックって言う言葉も、普通の{}のブロックとは違うようだし、
意味不明です。
この理解は、RHGとか読んで、ソースコード読んで理解しなさいということなんでしょうか。
正直、初心者の私には、付いていけません。
eval系メソッドを使うなってことなんでしょうか。。
1.コンパイル=>実行までの流れがわかる、
2.あと、オブジェクトがどういう値を保持していて、どこからアクセス可能か
ということについて、いい本とか、サイトないでしょうか。
教えてください。お願いします
0508デフォルトの名無しさん
2006/12/19(火) 17:25:45>↓ここが、それに関する説明っぽいけど、
ここのことかな?
http://www.ruby-lang.org/ja/man/?cmd=view;name=%BC%C2%B9%D4#a.a5.ed.a1.bc.a5.ab.a5.eb.ca.d1.bf.f4
正直、このページ全体が酷い出来だな。
むしろこっちを読むべきじゃないかな。
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
これでわからなかったら、また聞いてくれ。
0509デフォルトの名無しさん
2006/12/19(火) 19:41:38>>500
xyzzyのruby-modeにおけるインデントがおかしいといってるだけであって、
ruby自体は何も非難していない。
被害妄想乙。
0510デフォルトの名無しさん
2006/12/19(火) 20:09:49じゃあスレ違いだ。xyzzyのスレに行ってやれ。
0511デフォルトの名無しさん
2006/12/19(火) 23:14:41まずクロージャ(closure)について勉強しろ。
理解できるまでは無理してdefine_method使うな。
0512デフォルトの名無しさん
2006/12/20(水) 10:39:420513デフォルトの名無しさん
2006/12/20(水) 11:21:47closureについてわからない所があれば、そこでまた質問すればいいんだ
そんなにスレを荒らそうとしないでくれ
0514デフォルトの名無しさん
2006/12/20(水) 11:22:490515デフォルトの名無しさん
2006/12/20(水) 11:43:40質問をしてあげたんだ。
君たちは謝辞を述べてから、競い合うように簡潔にして丁寧な解説を
披露しあうべきではないのかね?
0516デフォルトの名無しさん
2006/12/20(水) 12:20:380517デフォルトの名無しさん
2006/12/20(水) 15:45:21うまく質問ができない人は、必要な回答を得られないので、成長性が低くなる。
よい回答が習熟殿の指標足りうるのは、よい質問があってこそ。
テストの問題と一緒だな。
0518デフォルトの名無しさん
2006/12/20(水) 15:56:07> うまく質問ができない人は、必要な回答を得られないので、
回答できない言い訳はどうでもいい。
ただ良い回答があればそれでいい。
0519デフォルトの名無しさん
2006/12/20(水) 16:10:320520デフォルトの名無しさん
2006/12/20(水) 16:18:540521デフォルトの名無しさん
2006/12/20(水) 16:54:41修行とお布施、がんばります!!
0522デフォルトの名無しさん
2006/12/20(水) 23:01:50xyzzyなら、ruby-mode.lを直接改造して、*ruby-block-beg-re*とかを改造するといいよ。
;(defvar *ruby-block-beg-re*
; "class¥¥|module¥¥|def¥¥|if¥¥|unless¥¥|case¥¥|while¥¥|until¥¥|for¥¥|begin¥¥|do")
(setq *ruby-block-beg-re*
"¥¥<¥¥(class¥¥|module¥¥|def¥¥|if¥¥|unless¥¥|case¥¥|while¥¥|until¥¥|for¥¥|begin¥¥|do¥¥)¥¥>")
とか。ちょっとはましになる。
0523506,507
2006/12/20(水) 23:12:33>>512は私ではありません。
気をわるくしないでください
2chにつながりにくくなって、返事がおそくなりました。m(__)m
お騒がせしてすみませんでした。
みなさん、ありがとうございます。
まずは、クロージャについて勉強しようと思います。
ちょっと、ネットで調べたところ、
自分が知りたい概念と同じような気がします。
0524デフォルトの名無しさん
2006/12/21(木) 00:06:43Thread.fork {
while true
puts 'forked thread'
end
}
while true
puts 'main thread'
end
このコードは正しく動いている気がします
いつの間にか使えるようになったのでしょうか?
0525デフォルトの名無しさん
2006/12/21(木) 00:31:040526デフォルトの名無しさん
2006/12/21(木) 01:04:48ごっちゃにしてるんじゃなかろうか。
0527デフォルトの名無しさん
2006/12/21(木) 01:45:330528デフォルトの名無しさん
2006/12/21(木) 02:06:380529デフォルトの名無しさん
2006/12/21(木) 06:31:220530デフォルトの名無しさん
2006/12/21(木) 07:16:140531デフォルトの名無しさん
2006/12/21(木) 07:21:020532デフォルトの名無しさん
2006/12/21(木) 07:29:32OSのネイティブスレッドではない?
>>529-531
ワロタ。
でも本スレの流れを持ち込むのはやめてくれw
0533デフォルトの名無しさん
2006/12/21(木) 07:33:52そう、OSのネイティブスレッドではありません。
インタプリタががんばって処理します。
長所は移植性がとても高いこと。
短所はOSの支援を受けられないので、
たとえばSMPの恩恵を受けられないことです。
0534デフォルトの名無しさん
2006/12/21(木) 20:02:20while hoge..fuga
foo
end
この記法、どういうときに使うのでしょう?
0535デフォルトの名無しさん
2006/12/21(木) 21:02:05while foo in hoge..fuga
p foo
end
の間違いじゃ?
それだと無限ループしちゃうyo
0536デフォルトの名無しさん
2006/12/21(木) 21:03:20for foo in hoge..fuga
p foo
end
0537デフォルトの名無しさん
2006/12/21(木) 22:15:42とか逆切れしてみるのはどうか
0538デフォルトの名無しさん
2006/12/21(木) 23:21:37if (a==b)..(c == d)
end
みたいなのもあるんだよ。
ただ、可読性が結構低いのでお勧めは出来ないけど。
while hoge..fugaの形では使ったことはないけど
array.each do |e|
next unless (e == hoge)..(e == fuga)
......
end
みたいな形では極稀に使う。
0539デフォルトの名無しさん
2006/12/22(金) 10:43:540540デフォルトの名無しさん
2006/12/22(金) 12:05:15使い方、使い所などについて懇切丁寧に解説してる
本とかってないですかねえ。
0541デフォルトの名無しさん
2006/12/22(金) 13:08:50というメソッドだからなあ。
なんかあるかねえ。
0542デフォルトの名無しさん
2006/12/22(金) 15:48:04使いどころを説明するのは難しいね。
リフレクションあたりから説き起こして
小冊子一冊分くらいの分量は優にあるテーマだと思う。
0543デフォルトの名無しさん
2006/12/22(金) 20:31:24<状況>
実装がよく分からないクラスObjのインスタンスがあり、Obj#loadで
データを読んでくれます。Obj#loadが受け付ける引数はそのデータを
格納したファイルのファイル名のみです。
<やりたいこと>
手持ちの文字列データを突っ込みたいのですが、新たにファイルを
作ったりできません。
<試してみたこと>
StringIOを使ってみたりしました(NG)。
よろしくお願いします・・・。
0544デフォルトの名無しさん
2006/12/22(金) 21:29:55まずはソース嫁なんだけど。一応こんな感じでメソッド追加したら?
class Obj
def load_str(str)
# 何とかしてObjのインスタンス変数にアクセスする
end
end
あとは、irbなんかでObjのインスタンス変数やらメソッドやらを調べまくればokだと思う。
0545デフォルトの名無しさん
2006/12/22(金) 22:31:28Tempfile.new とかでもダメなのかな。
0546デフォルトの名無しさん
2006/12/22(金) 22:59:14IO.pipeを使って、書き込み側に手持ち文字列を突っ込んで、
読み出し側をloadの引数にすると出来たりしないだろうか。
0547デフォルトの名無しさん
2006/12/22(金) 23:05:31> Obj#loadが受け付ける引数はそのデータを
> 格納したファイルのファイル名のみです。
って書いてるから、Obj#loadの中でFile#openとか呼んでるだけなんジャマイカ?
で、File.openの引数にはTempfileとかIO.pipeの読み出し側って渡せる?
0548543
2006/12/22(金) 23:07:37GUIの設定部分をXRC(XML)ファイルとして外に出しており、何とか
これも含めて1つのexeにしたかったのです。
で、Exerbの方は外部データファイルをStringIOオブジェクトとしてしか
取得できないみたいで、一方、wxRubyはXRCをファイルとしてしか
読みません(たぶん)。
まあXRCだけexeとは別に添付ということでもいいんですけど。
こういうときにTempfile.newというのは慣例的あるいは審美的に
アリなんでしょうか?
0549543
2006/12/22(金) 23:14:58実装がよく分からないというのも、wxRuby(2)だからなんです。
拡張モジュールで、しかもSwigで作ってるらしいので、
ソースを見てもちょっと手に負えない可能性大です。
IO.pipeを調べて、一度それでやってみます。
0550デフォルトの名無しさん
2006/12/23(土) 00:12:30> if (a==b)..(c == d)
これ?ってどういう挙動すんの?
true..false
true..true
とか、って・・・
うげ、頭てんぱってきた
0551543
2006/12/23(土) 00:20:36Tempfileを作って渡す方は上手くいきました。
もともと存在するファイルのコピーを作るというのにちょっと
違和感があったのですが、ともあれ、ありがとうございました。
0552デフォルトの名無しさん
2006/12/23(土) 00:39:29本スレにあったけど
404 Blog Not Found:{perl,ruby} -nle 'print if /start/../end/'
http://blog.livedoor.jp/dankogai/archives/50720796.html
0553デフォルトの名無しさん
2006/12/23(土) 00:39:48Rangeオブジェクトじゃなくて、範囲式の特殊な用法。
http://www.ruby-lang.org/ja/man/?cmd=view;name=%B1%E9%BB%BB%BB%D2%BC%B0#a.c8.cf.b0.cf.bc.b0
0554546
2006/12/23(土) 02:22:42混乱させて済まぬ。
0555デフォルトの名無しさん
2006/12/23(土) 21:48:03全部ダンプして復元する方法はありますか?
0556デフォルトの名無しさん
2006/12/23(土) 22:12:22変数についてなら、Marshal.dump, Marshal.loadが使えるけど
スクリプト全体だと多分ないんじゃないだろうか。
0557デフォルトの名無しさん
2006/12/24(日) 00:30:47そうですか。ありがとうございます。
0558デフォルトの名無しさん
2006/12/24(日) 02:04:240559デフォルトの名無しさん
2006/12/24(日) 02:24:210560デフォルトの名無しさん
2006/12/24(日) 02:59:48YARVでできないの?
0561デフォルトの名無しさん
2006/12/24(日) 12:11:050562デフォルトの名無しさん
2006/12/24(日) 17:00:540563デフォルトの名無しさん
2006/12/24(日) 17:49:000564デフォルトの名無しさん
2006/12/24(日) 17:54:240565デフォルトの名無しさん
2006/12/24(日) 18:21:140566デフォルトの名無しさん
2006/12/24(日) 19:01:350567デフォルトの名無しさん
2006/12/24(日) 21:10:11結局はWeb関連だったらツマランわ
0568デフォルトの名無しさん
2006/12/24(日) 22:12:57バッチ処理やデータ処理で使うことのほうが多い
0569デフォルトの名無しさん
2006/12/24(日) 22:18:030570デフォルトの名無しさん
2006/12/24(日) 22:39:080571デフォルトの名無しさん
2006/12/25(月) 00:20:580572デフォルトの名無しさん
2006/12/25(月) 00:24:37以下のように、xsltで、xmlを変換するRakefileを書いています。
COPY_DIR = "../html"
SRC = FileList["*.xml"]
DOCUMENTS_DEST = SRC.ext("html").map{ |item| File.join(COPY_DIR, item) }
TEMPLATE_XSL = "template.xsl"
desc "rake all"
task :all => [:all_documents]
task :all_documents => DOCUMENTS_DEST
rule '.html' => [lambda { |f| File.basename(f.sub(/\.html$/, ".xml")) }] do |t|
sh "xsl #{t.source} #{TEMPLATE_XSL} #{t.name}"
end
TEMPLATE_XSLが変更された場合に、一番下の、rule(xslを呼び出している所)を
呼びたいのですが、いい方法はないでしょうか?
Makefileの場合、
$(COPY_DIR)%.html: %.xml $(TEMPLATE_XSL)
$(XSLT) $< $(TEMPLATE_XSL) $@
のように書けばよかったのですが・・・
0573572
2006/12/25(月) 00:31:26ruleの場合はどうやったらいいのかな、と思ったしだいです。
file INDEX_DEST => [INDEX_SRC, TEMPLATE_XSL] do
sh "xsl #{INDEX_SRC} #{TEMPLATE_XSL} #{INDEX_DEST}"
end
0574572
2006/12/25(月) 00:39:11http://pc8.2ch.net/test/read.cgi/tech/1154077799/429-433
あたりにありますね。試してみます
0575572
2006/12/25(月) 00:44:50rule '.html' => [lambda{TEMPLATE_XSL}, lambda{ |f| File.basename(f.sub(/\.html$/, ".xml")) }] do |t|
sh "#{XSLT} #{t.sources[1]} #{TEMPLATE_XSL} #{t.name}"
end
お手数掛けました。
0576デフォルトの名無しさん
2006/12/25(月) 08:11:35俺はguiスクリプトをガリガリ書いてる
apolloがあれば大抵のことは出来るしな
というか、逆にrubyに出来ない事ってなんだろう
0577デフォルトの名無しさん
2006/12/25(月) 13:46:15OSを書くとか、どうよ。
0578デフォルトの名無しさん
2006/12/25(月) 14:23:11処理速度を要求されるのは苦手だろう
0579デフォルトの名無しさん
2006/12/25(月) 14:26:130580デフォルトの名無しさん
2006/12/25(月) 15:05:21Civ4はPythonインタプリタ内蔵だったな。
0581デフォルトの名無しさん
2006/12/25(月) 15:07:52今後リリースされるバージョンでも確実に動くアプリケーション書いてみろ。
0582デフォルトの名無しさん
2006/12/25(月) 15:17:33あさっての方向に「指令」出してんだろ、この子
0584デフォルトの名無しさん
2006/12/25(月) 15:49:20誰に教わったのそれ
まあランタイム必須なものには無理だ
0585デフォルトの名無しさん
2006/12/25(月) 15:49:28「OS作る」の定義によるんじゃね?
0586デフォルトの名無しさん
2006/12/25(月) 16:44:09確かJavaで使ったOSがあったよね。
0587デフォルトの名無しさん
2006/12/25(月) 17:32:310588デフォルトの名無しさん
2006/12/25(月) 18:15:070589デフォルトの名無しさん
2006/12/25(月) 18:27:140590デフォルトの名無しさん
2006/12/25(月) 18:34:440591デフォルトの名無しさん
2006/12/25(月) 21:52:23ff=File.open("an.cyp",'w')
while(f.eof?!=TRUE)
b= f.read(89)
b= key*b;
srand
print "b=",b,"\n"
こうやると89バイトの文字列として読んでしまうので掛け算ができません。
89バイト整数としてファイルから読ませるにはどうすればいいのでしょう?
よろしくお願いします。
0592デフォルトの名無しさん
2006/12/25(月) 22:46:500593デフォルトの名無しさん
2006/12/25(月) 22:47:57力ずくでやるしか知らないが「b = f.read(89)」のあとに
c = 0
b.size.times do |i|
c = (c << 8) | b[i]
end
とすれば、変数 c に望みの整数値が出来上がる。
バイトオーダはビッグエンディアン。
リトルエンディアンの値が欲しけりゃ times の中を下ので書き換えてくれ。
c = (c) | (b[i] << (8 * i))
0594デフォルトの名無しさん
2006/12/25(月) 22:52:500595デフォルトの名無しさん
2006/12/25(月) 23:13:360596デフォルトの名無しさん
2006/12/25(月) 23:30:560597デフォルトの名無しさん
2006/12/25(月) 23:34:07irb> 89 * 8 * Math.log10(2)
=> 214.333356912755 桁か。
0598デフォルトの名無しさん
2006/12/25(月) 23:37:130599デフォルトの名無しさん
2006/12/26(火) 00:36:23そんなあなたにBigDecimalを
0600デフォルトの名無しさん
2006/12/26(火) 03:55:567^7^7
つまり7の(7の(7の階乗)乗)乗
の1の位の数字をrubyで計算してみてください
p 7**7**7 でも結果が分かるので
やってみて頂いてもいいのですが
時間がかかるのでもう少し早い方法で
プログラムしてみてください
0601デフォルトの名無しさん
2006/12/26(火) 04:31:29累乗じゃなくて?
0602デフォルトの名無しさん
2006/12/26(火) 04:38:05n = 1 -> 7
n = 2 -> 9
n = 3 -> 3
n = 4 -> 1
となるので、以降は7、9、3、1を繰り返す。
ということは、乗数を4で割った余りがわかれば1の位はわかる。
つまり、7の7乗の1の位は3になり、7の(7の7乗)乗の1の位も3。
しまった、プログラム組む前に答えがわかっちゃった。
0603デフォルトの名無しさん
2006/12/26(火) 05:48:50うまくいきました。ありがとうございます。
逆に復号したいとき、整数から文字列にして表示させるにはどうすれば
いいでしょう?よろしくお願いします。
0604デフォルトの名無しさん
2006/12/26(火) 06:03:15b= f.read(15)
bb=0
b.size.times do |i|
bb=(bb<<8)|b[i]
end
b= key*bb;
print "b=",b,"\n"
while(1)
if(a=rand(key))
#print a,"\n"
break
end
end
while(1)
if(d=rand(k2))
break
end
end
c=(b+a)^d;
ff.write(c)
こんなことやってますが、書き出されたファイルの大きさが計算と違います。
何か間違いがあるのでしょうか?2370バイトのファイルを15バイトづつ
読み込んで256ビットにして書き込みしてます。
11698バイトになってしまいます。どうしてかわかりません。
0605デフォルトの名無しさん
2006/12/26(火) 06:34:49テキストになってしまいます。
0606デフォルトの名無しさん
2006/12/26(火) 07:49:13つ array.pack
0607デフォルトの名無しさん
2006/12/26(火) 08:09:370608デフォルトの名無しさん
2006/12/26(火) 08:20:170609デフォルトの名無しさん
2006/12/26(火) 08:24:130610デフォルトの名無しさん
2006/12/26(火) 08:37:44わかりません。
0611デフォルトの名無しさん
2006/12/26(火) 09:19:320612デフォルトの名無しさん
2006/12/26(火) 09:26:59ri pack
して。
0613デフォルトの名無しさん
2006/12/26(火) 11:37:26クッキー情報を送信してHTMLボディを取得したいのですが
どなたかおおまかなサンプルを見せていただけませんか?
googleで検索したのですが、いい資料がなく困っています。
0614デフォルトの名無しさん
2006/12/26(火) 11:50:54見つけ出して送ってくれるものの、任意にセットするメソッドは
ないみたいですな。
逆に言うと、クッキーDBファイルにこっそり該当URLのクッキーを
書いておくとそれを使ってくれるぽい。
0615デフォルトの名無しさん
2006/12/26(火) 12:01:52web_agent.instance_eval do
@cookie_manager.parse(str, url)
end
とやるのかな。
あるいは parse の代わりに WebAgent::Cookie.new していろいろセットして add。
0616デフォルトの名無しさん
2006/12/26(火) 12:20:11バイトストリーム = ""
16回繰り返す { |i|
バイトストリーム << ((整数値を i バイト右シフト) と 0xff を論理積)
}
0617デフォルトの名無しさん
2006/12/26(火) 12:32:43みんな知ってるのに俺だけ知らないのはくやしいから。
使い方ちゃんと教えろ。
0618デフォルトの名無しさん
2006/12/26(火) 12:36:07そんなこと言っていると何も出来なくなる。
自分の手元にあるものだけで どうにかできるように心がけろ。
0619デフォルトの名無しさん
2006/12/26(火) 12:42:05けどね。何でルビーは違うんでしょうね。
Cはうまくいきました。でも謎の^@が大量に入って、圧縮ファイルを復元しよう
賭したら間違いなくエラーになるので原因を探しています。
0620デフォルトの名無しさん
2006/12/26(火) 12:49:260621デフォルトの名無しさん
2006/12/26(火) 13:04:40バイナリモード云々ではなく、writeの挙動を理解していない君の落ち度だ。
writeは文字列で無ければ内部で対象を文字列に変換する。
整数12345ならば文字列"12345"に変換してしまうわけだ。
以下の部分に目を通しておきなさい。
http://www.ruby-lang.org/ja/man/?cmd=view;name=IO#write
0622デフォルトの名無しさん
2006/12/26(火) 13:11:06せめてRubyもCと同じくらい勉強してから比較してやれよ。
0623デフォルトの名無しさん
2006/12/26(火) 13:19:34センセー、rubyはなぜ全角と半角の変換を自動でおこなうのですか?
0624デフォルトの名無しさん
2006/12/26(火) 13:27:57初学者には例が少ないので。
0x00が変換中に混じっているので除去しないといけないということでしょうか?
0625デフォルトの名無しさん
2006/12/26(火) 13:30:06それくらいぐぐれ
0626デフォルトの名無しさん
2006/12/26(火) 13:50:18>”w”、BER圧縮整数:1バイトあたり7ビットを使用して必要最小限のバイト数で「任意サイズの 0以上の整数」を表す数値表現。
ってのがあるので、これ使えば自分で計算する必要はない。
irb(main):001:0> File.open("testfile","wb"){|f|f.write([100**100].pack("w"))}
=> 95
irb(main):002:0> File.open("testfile","rb"){|f|f.read.unpack("w")}
=> [100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000]
0627デフォルトの名無しさん
2006/12/26(火) 13:59:26バイナリは何で保持してる?
Stringにバイナリを保持させればwriteはそのまま書いてくれる
0628デフォルトの名無しさん
2006/12/26(火) 14:08:49暗号化関数なので保存される形式はバイナリデータです。
0629デフォルトの名無しさん
2006/12/26(火) 14:25:03バイナリデータでなければならないです。
0630デフォルトの名無しさん
2006/12/26(火) 14:26:050631デフォルトの名無しさん
2006/12/26(火) 14:28:1416バイト長整数ならば >>616 で16バイト長のバイナリに変換できる。
変換したものはStringクラスのインスタンスだから、あとは >>627 のとおり。
>>626 の方法ならば一発で出来るが、7ビットにつき1ビット付加されて18バイト長になる。
0632デフォルトの名無しさん
2006/12/26(火) 14:36:06なおしています。数値演算では普通にBigintになってます。
それが書き込むときに文字列に変換されてしまうのが納得いきません。
数値をバイナリデータとして書き込みたいのです。
配列のデータにまた分解して格納しないといけないのでしょうか?
0633デフォルトの名無しさん
2006/12/26(火) 14:37:45wだと7ビットだからダメだけど。
0634デフォルトの名無しさん
2006/12/26(火) 14:41:20その方法を使っても(3)_10=(11)_2になって文字列で格納されるだけ
じゃないでしょうか?
writeが内部で文字列変換をしている以上バイナリデータを書き込む
のはwriteでは無理なんでしょうか?
0635デフォルトの名無しさん
2006/12/26(火) 14:43:470636デフォルトの名無しさん
2006/12/26(火) 15:08:17あと、readは配列を返すのではなく、バイナリデータを含む文字列を返す。
つーか、Stringから文字列とバイト列の概念を分離して、
OctetStreamクラスを新設してくれないかなあ。
その上でStringをUnicode化してくれると嬉々累々。
0637デフォルトの名無しさん
2006/12/26(火) 16:05:47今さらPythonの後を追えというのか?Matzのプライドはどうなるんだ?
0638デフォルトの名無しさん
2006/12/26(火) 16:17:37こんなことしたら書けました。w
0639デフォルトの名無しさん
2006/12/26(火) 16:20:36pythonからパクるの得意じゃん
0640デフォルトの名無しさん
2006/12/26(火) 16:28:010641デフォルトの名無しさん
2006/12/26(火) 16:35:590642デフォルトの名無しさん
2006/12/26(火) 16:53:380643デフォルトの名無しさん
2006/12/26(火) 16:57:30エロゲ開発者はトライしてみてもいいんじゃねーかな。
0644デフォルトの名無しさん
2006/12/26(火) 17:13:580645デフォルトの名無しさん
2006/12/26(火) 18:12:38正直Cのことは一端全部忘れてからRubyの勉強をした方がいいよ。
まるっきり違うから。
>>644
マイクロスレッドでググったら弾幕系がトップだな。
普通のスレッドでもProcでも継続でもなんでも好きに使えばいいと思われ。
0646デフォルトの名無しさん
2006/12/26(火) 18:30:47知らないなら黙っていたほうが恥かかないぞ。
0647デフォルトの名無しさん
2006/12/26(火) 18:36:05それを自分に適用すると人生が少しは良くなるぞ。
0648デフォルトの名無しさん
2006/12/26(火) 18:40:03ファイルBに行にあるカラム1とカラム2(たとえば100行にそれぞれ違ったカラムの値があります)
ファイルAの1行目のカラム1が、ファイルBのカラム1(全行)中に
ファイルAの1行目のカラム2が、ファイルBのカラム2(全行)中にあれば、
ファイルAの1行目の終わりに○という文字を付加します。ないなら空白のままです。
次にファイルAの2行目、3行目と次々にファイルB中にあるか確かめていきます。
このようなプログラムですと
まずファイルAの1行目をよみ、次にファイルBの行をつぎつぎと読み込んでいきますよね。
while filea=gets
.
.
while fileb=gets
.
.
end
.
.
end
のようなプログラムになると思うのですが、内にあるwhile文のfileb=getsの中で
ファイルAのカラムA,B = ファイルBのカラムA,B
という条件判定をするのですが、これで一致した場合、内にあるwhile文を抜けたいのですが
この場合、どうやってwhile文を抜ければよいのでしょうか?
0649デフォルトの名無しさん
2006/12/26(火) 18:44:10外側だとひと工夫必要だが。
0650デフォルトの名無しさん
2006/12/26(火) 19:02:50ttp://kumiki.c.u-tokyo.ac.jp/~ichiyama/mt/archives/000034.html
0651デフォルトの名無しさん
2006/12/26(火) 21:51:390652デフォルトの名無しさん
2006/12/26(火) 21:54:52RDT0.8.0(org.rubypeople.rdt-0.8.0.604272100PRD.zip)を導入しましたが、
Rubyスクリプトの動作はするものの、デバッグでブレークポイントで止めても、
変数が何も表示されません。
Rubyのバージョンはmswin版の1.8.2です。
似たような症状に悩んだ人はいませんか?
アドバイスをよろしくお願いします。
0653デフォルトの名無しさん
2006/12/26(火) 22:54:04callcc なんとなく分かった。
0654648
2006/12/26(火) 23:21:50up = File.open(output,"w")
while aline = file.gets
aline.chomp!
names, afirst, asecond, = aline.split(/\t/).values_at(0,1,2)
# afirstもasecondも数字が入る
moji = ""
while bline = file2.gets
bline.chomp!
bfirst, bsecond, = bline.split(/\t/)[0..1]
# bfirstもbsecondも数字が入る
if afirst = bfirst && asecond = bsecond
moji = "○"
break
end
end
up.print "#{names}\t#{afirst}\t#{asecond}\t#{moji}\n"
end
up.close
このようにしてプログラムを実行したところ
全ての行にmojiとして○がついています。
if文で一致する行だけ○をつけたつもりなのですが、どこがおかしいのでしょうか?
p afirst や p bsecond で確認したところ、ちゃんとsplitで分割されていました。
0655デフォルトの名無しさん
2006/12/26(火) 23:49:03if文の中、代入式になっておらんかね? しかも両方。
あと、while bline = file2.gets へ入る前に
file2.pos = 0 を加えたほうが無難そうだな。
0656デフォルトの名無しさん
2006/12/26(火) 23:53:57方法1. catchを使う
catch(:break) {
while filea=.....
while fileb=...
throw if なんか抜けたい条件
end
end
}
http://www.ruby-lang.org/ja/man/?cmd=view;name=%C1%C8%A4%DF%B9%FE%A4%DF%B4%D8%BF%F4
のcatchの項を参照。
方法2.こうする
while filea=fa.gets && fileb=f.gets
#なんかやる
end
0657648
2006/12/26(火) 23:54:50posと== にして試してみたところ、今度はチェックの○が全てつかなくなってしまいました。
if afirst == bfirst && asecond == bsecond
これではおかしいのでしょうか??
0658デフォルトの名無しさん
2006/12/26(火) 23:55:44throw if なんか抜けたい条件 (×)
throw :break if なんか抜けたい条件 (○)
0659デフォルトの名無しさん
2006/12/27(水) 00:23:28GCのライブラリは見つかりませんでした。
ImageMagickはRMagickというのが見つかりました。
とりあえず、RMagickを使うつもりですが、
他にどういう選択肢がありますか?
また、どういう方法が一般的な方法といえますか?
0660デフォルトの名無しさん
2006/12/27(水) 00:42:22それ以外だとたぶんRMagick、次点でRuby-GNOME2のGdk::Pixbufか。
拡張ライブラリは入れたくないけどImageMagickやnetpbmが入っている
のなら、コマンドを駆使して画像のサイズ変更は可能。
0661659
2006/12/27(水) 05:43:42>>660
次点でGDKですか・・・
このあたりのニーズはないんでしょうかね。
それとも、RMagickで事足りてるのか。
だとしたら、なんで標準ライブラリに含まれないのかなぁ。
RMagickインストールすんのめんどいので、コマンド駆使でがんばることにします。
ありがとうございました。
0662デフォルトの名無しさん
2006/12/27(水) 09:34:290663デフォルトの名無しさん
2006/12/27(水) 09:34:57思うけど、今のところしかたねーなー。
Pure Rubyの画像処理ライブラリ↓
http://cappuccino.jp/keisuken/ruby/pureimage/
対応ファイルフォーマットがPNGのみだが、
Affine変換があるから拡大縮小に使えるかも。
0664デフォルトの名無しさん
2006/12/27(水) 13:38:350665デフォルトの名無しさん
2006/12/27(水) 13:41:34Pythonにはあったよね、たしか。あれ、SGI依存だったかな???
0666デフォルトの名無しさん
2006/12/27(水) 13:44:54誰にとっても鬼門というわけではなかろう。
ライブラリをインストールできる権限があれば別に。
0667デフォルトの名無しさん
2006/12/27(水) 13:47:47あるようだが、圧縮/伸張のみだから、画像処理とは言い難いか。
0668デフォルトの名無しさん
2006/12/27(水) 14:16:03ttp://www.pythonware.com/products/pil/
0669デフォルトの名無しさん
2006/12/27(水) 14:33:190670デフォルトの名無しさん
2006/12/27(水) 14:52:590671デフォルトの名無しさん
2006/12/27(水) 15:07:440672デフォルトの名無しさん
2006/12/27(水) 15:24:230673デフォルトの名無しさん
2006/12/27(水) 15:25:09いつまで経ってもおさまらないじゃん。もっとマシなのが欲しい。
0674デフォルトの名無しさん
2006/12/27(水) 20:05:53どうせ大半の人はサムネールの作成ぐらいしか使わないから。
0675デフォルトの名無しさん
2006/12/27(水) 23:14:46だから404なんだぜ?
0676デフォルトの名無しさん
2006/12/28(木) 00:13:530677デフォルトの名無しさん
2006/12/28(木) 01:10:07そこまでしてRuby-GDにこだわる理由はと言われると別にないのだが
0678デフォルトの名無しさん
2006/12/28(木) 09:38:49これって正しいことですか?
毎回同じ結果になることを期待していたのですが…
Fedora Core 4/ruby-1.8.5-p12です。
thread_ary = []
n = 0
10000.times do |i|
thread_ary << Thread.new(i) { |i2| n += i2 }
end
thread_ary.each do |th|
th.join
end
p n
0679デフォルトの名無しさん
2006/12/28(木) 09:56:06n += i2 の部分を排他ロックしてないからだろ
0680デフォルトの名無しさん
2006/12/28(木) 10:17:37Mutexで排他ロックすると、うまくいきました。
Rubyの1行の文はアトミックだと勘違いしていました。
0681デフォルトの名無しさん
2006/12/28(木) 12:47:22すげえ勘違いのしかた。一体何をどう考えたら1行の文が...
0682デフォルトの名無しさん
2006/12/28(木) 16:44:57調べてみると、同じような話が出ていました。
ttp://www.atdot.net/~ko1/w3ml/w3ml.cgi/yarv-dev/msg/651
0683デフォルトの名無しさん
2006/12/28(木) 18:45:23もしアトミックだと勝手に想定して、あえてロックしなかったのなら性格に問題ありそう。
0684デフォルトの名無しさん
2006/12/28(木) 19:05:46Rubyコミュニティーの気持ち悪さを表現した、素晴らしいレスですね
0685デフォルトの名無しさん
2006/12/28(木) 19:32:48body部にてsrcで呼ばれたjavascriptを実行することは可能でしょうか?
もしあればご教授のほど宜しくお願いします。
0686デフォルトの名無しさん
2006/12/28(木) 19:50:55誰がJavascriptを解釈するの?
0687デフォルトの名無しさん
2006/12/28(木) 20:16:04JavaScriptは普通ブラウザが解釈し実行する
クライアントサイドのスクリプト。
だから単純にscriptタグを出力すればOK。
…JScriptインタプリタを使って
CGIとして実行するなら話は全く別だが。
0688デフォルトの名無しさん
2006/12/28(木) 20:37:160689デフォルトの名無しさん
2006/12/28(木) 20:43:550690デフォルトの名無しさん
2006/12/28(木) 22:38:430691デフォルトの名無しさん
2006/12/28(木) 23:54:11Segmentation fault
となりました。
これってどういう意味ですか。
0692デフォルトの名無しさん
2006/12/29(金) 00:13:13Segmentationに関するfaultだよ。字の通り見たまんま。
解消する方法は当の「プログラム」と実行環境が分からんと誰も答えようがないと思われ
0693デフォルトの名無しさん
2006/12/29(金) 00:20:10Rubyのバグをたまたまそのプログラムが突いてしまったということ
あるいは外部ライブラリとつなげたものならそれが悪さしてる可能性もある
前者なら報告した方がいい希ガス
0694デフォルトの名無しさん
2006/12/29(金) 00:22:17レス、ありがとうございます。
windows2000の上で動かしている
VineLinuxの中でOpenGLと
一緒に使っています。
0695デフォルトの名無しさん
2006/12/29(金) 05:04:53ちょっとプログラム変更すれば
動くようになるんじゃない?
0696デフォルトの名無しさん
2006/12/29(金) 05:22:480697デフォルトの名無しさん
2006/12/29(金) 15:32:30>ruby -ve "puts '%02X' % 10"
ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-mswin32]
-e:1: warning: too many arguments for format string
X #=> 本当は 0A と表示されて欲しい
% + 数字 がまずいみたいだね。
0698デフォルトの名無しさん
2006/12/29(金) 15:35:53% ruby -ve "puts '%02X' % 10"
ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-darwin]
0A
0699デフォルトの名無しさん
2006/12/29(金) 17:19:20WindowsXP+CMD.EXE+ASR1.8.5.5
だと
0A
ですよ。
VMWare上なんでコピペできんが。
環境はどういう感じ?
0700697
2006/12/29(金) 20:07:30ごめん。Rubyは悪くなかった。
cmd.exeで実行したら正しい結果が得られた。
nyacus上で実行してたんだけど、nyacusが%xxを展開してたみたいだ。
0701687
2006/12/30(土) 04:35:57ん、俺何か勘違いしてる?
真面目に何を間違えたのか判らん
0702デフォルトの名無しさん
2006/12/30(土) 11:40:570703デフォルトの名無しさん
2007/01/02(火) 02:05:470704デフォルトの名無しさん
2007/01/02(火) 02:55:330705デフォルトの名無しさん
2007/01/02(火) 06:29:320706デフォルトの名無しさん
2007/01/02(火) 06:35:270707デフォルトの名無しさん
2007/01/02(火) 08:37:25昔のままシンプルだったらよかったのにね。
0708デフォルトの名無しさん
2007/01/02(火) 08:55:06使わざるを得ない現状が何ともね。
0709デフォルトの名無しさん
2007/01/02(火) 10:11:00ラリーのいう「無精」が悪い方に出たクズとしか言い様がないな。
0710デフォルトの名無しさん
2007/01/02(火) 10:28:34C/C++修得者にとっては、PHPの方が受け入れやすいよなやっぱり。
0711デフォルトの名無しさん
2007/01/02(火) 10:57:07C文法しか使えない(というか、こだわってる)奴のたわごとにしか聞こえないよ
0712デフォルトの名無しさん
2007/01/02(火) 10:59:250713デフォルトの名無しさん
2007/01/02(火) 11:16:16「仮説が一つしか浮かばない自分の思考はどこかで猪突猛進してる」と思ったほうがいいかな
0714デフォルトの名無しさん
2007/01/02(火) 12:05:10でも実際は言語なんかどうでもよくて
研鑽しないプログラマの存在のほうが
現実には悪な場合が多い。
0717デフォルトの名無しさん
2007/01/02(火) 14:44:41711様がC文法しか使えない奴のたわごとにしか聞こえないって言ってるんだから
お前はC文法しか使えない奴なんだよ。ごまかすなクズ。
0718デフォルトの名無しさん
2007/01/02(火) 14:46:02そこからちょっとでも踏み込んで調べてみたら、
そんな印象なんか吹き飛ぶだろうに。
0719デフォルトの名無しさん
2007/01/02(火) 16:04:020720デフォルトの名無しさん
2007/01/02(火) 16:07:120721デフォルトの名無しさん
2007/01/02(火) 18:32:49while(($c = fgetc($fp)) != EOF){
hogehoge;
}
って書いたら無限ループw
0722デフォルトの名無しさん
2007/01/02(火) 18:36:06if(fugafuga){
}
って書いて唖然とするときがある
0723デフォルトの名無しさん
2007/01/02(火) 18:55:19if
hogehoge
else
fugafuga
endif
これやってしまう
0724デフォルトの名無しさん
2007/01/02(火) 19:16:01断然Cに近いんだがなぁ
0725デフォルトの名無しさん
2007/01/02(火) 19:38:17行末に;が付いたり付かなかったり
ソースを一回書いて終わりならいいんだけど
後からのメンテに面倒臭さを感じる
コンパイラに人間があわせてる感じがする
0726デフォルトの名無しさん
2007/01/02(火) 19:40:570727デフォルトの名無しさん
2007/01/02(火) 19:43:11if 〜 begin
end else begin
end
って書くようになったりするw
0728デフォルトの名無しさん
2007/01/02(火) 20:10:130729デフォルトの名無しさん
2007/01/02(火) 20:36:36「1パスでコンパイル」というのを守るための
forwardかも。
0730デフォルトの名無しさん
2007/01/02(火) 20:41:370731デフォルトの名無しさん
2007/01/02(火) 20:47:13全然否定していない。ただPascalの影響を言うやつのほとんどが
底の浅い理解をしているということなんだ。君みたいにな。
Pascalの影響はある。だが君が思っているところにではない。
720以降の議論の意味わからないだろ、君には。
0732デフォルトの名無しさん
2007/01/02(火) 21:01:08どこにPascalの影響があるの?
おれPascalやってたけど、Rubyにその影響をみたことないなあ
0733デフォルトの名無しさん
2007/01/02(火) 21:04:230734デフォルトの名無しさん
2007/01/02(火) 21:27:510735デフォルトの名無しさん
2007/01/02(火) 21:53:53>>730 じゃね?
0736デフォルトの名無しさん
2007/01/02(火) 22:05:16マジスカ
0737デフォルトの名無しさん
2007/01/02(火) 22:29:190738デフォルトの名無しさん
2007/01/02(火) 22:30:48http://jp.rubyist.net/magazine/?0009-Legwork
0739デフォルトの名無しさん
2007/01/02(火) 22:56:180740デフォルトの名無しさん
2007/01/03(水) 01:18:22Pascal の ; は俺にとってはCより解りやすい
C言語の if の
if(式) 文; else 文;
なんてかなり違和感だもん
何で一つの文にセミコロン2つあるんだよって感じ
0741デフォルトの名無しさん
2007/01/03(水) 01:34:07文が二つ入っとりますが……
0742デフォルトの名無しさん
2007/01/03(水) 02:37:040743デフォルトの名無しさん
2007/01/03(水) 02:59:460744デフォルトの名無しさん
2007/01/03(水) 04:24:43if(式) 文 else 文 end;
までで一文だっていう意味かと。
ただ、結局 >>727 みたいなことになりがちなので
C で改善されてると言えると思うんだけどなぁ。
0745デフォルトの名無しさん
2007/01/03(水) 09:24:12if 式 then 文;
if 式 then 文 else 文;
のどちらかで一文だね
elseの前にセミコロン入れると前者として扱われ
「else単独の構文はない」ため文法エラー
ブロックは begin 文; 文;... end
セミコロンは文末
ピリオドはコードの末尾
これに慣れると実際C言語のelseは気持ち悪いな
いい加減慣れたが。そもそもスレ違いだが。
0746デフォルトの名無しさん
2007/01/03(水) 14:10:39> セミコロンは文末
Pascalではセパレータだから文の間。
だからこそ
> ブロックは begin 文; 文;... end
endの前には入らないわけだ。
0747デフォルトの名無しさん
2007/01/03(水) 19:56:28Pascalのコード色々見てると
if ... begin
(単|複)文;
end else begin
(単|複)文;
end;
っていう書き方結構多いような気がする。
みんなコード書いてるうちに
;を付けたり付けなかったりするのが面倒になるんだと思う。
0748デフォルトの名無しさん
2007/01/03(水) 20:20:46それはC言語でも同じでは
Perlでいう、Tie::File 相当のモジュールってRubyにありますでしょうか?
単に配列に変換する程度の機能でしたら、自分でちょろっと
書いた方が早いですが、flockやbufferingまでやってくれるものが
欲しいのです。
まぁSQLite使えという声もあるのですが…(汗
0750デフォルトの名無しさん
2007/01/04(木) 04:55:50Tie::Fileというのがどんなものかを説明したほうがいいと思う。
0751デフォルトの名無しさん
2007/01/04(木) 06:53:030752デフォルトの名無しさん
2007/01/04(木) 10:32:24http://www.ruby-lang.org/ja/man/?cmd=view;name=PStore
0753デフォルトの名無しさん
2007/01/04(木) 18:26:110754デフォルトの名無しさん
2007/01/05(金) 01:49:27本スレでやれ
0755デフォルトの名無しさん
2007/01/05(金) 15:31:16本スレでもやらんでいい
0756デフォルトの名無しさん
2007/01/07(日) 11:02:52integer?のFloatでもtrueを返すような物を探しています
0757デフォルトの名無しさん
2007/01/07(日) 11:07:451.class.ancestors
1.0.class.ancestors
0758デフォルトの名無しさん
2007/01/07(日) 14:44:03ヒント
・クラス間の親子関係
・Object#is_a? / Object#kind_of?
0759デフォルトの名無しさん
2007/01/08(月) 02:11:33どのような指定をすればよいでしょうか?
0760デフォルトの名無しさん
2007/01/08(月) 03:29:47* RDoc::usageを再定義する
のどちらかだと思う
0761デフォルトの名無しさん
2007/01/08(月) 04:02:09ようなので、したのですがRubyProjectを立ち上げて、新しい項目としてtest.rbという名前にし
print 123
とだけ打って実行してみたのですが、まったく駄目です。
というか、c/c++を今まで勉強してきたのですが今回rubyの入門サイトをgoogleで検索して
一通りみたのですがさっぱりわからず、mainに当たる部分はどこなんだ?
という、たぶんスクリプト言語?ってのをやってる人にとっては「何いってんだ?」という
質問かもしれませんが、できたら何をどうして、どのページを参考にしたら良いのか
教えていただきたいです。
お願いします。
0762デフォルトの名無しさん
2007/01/08(月) 04:37:32おー結構あるな
それはいいとして、お前はこれまで一体何をやってきたんだ
何も身についてないじゃないか
0763デフォルトの名無しさん
2007/01/08(月) 04:47:52何がどうダメなのかちゃんと書いたほうがいいんじゃないか。
一体どういう状況なのか全く読めないぞ。それと、そのスクリプト自体は間違ってない。
0764デフォルトの名無しさん
2007/01/08(月) 04:49:59http://pc10.2ch.net/test/read.cgi/tech/1167788121/72
72 名前:デフォルトの名無しさん[sage] 投稿日:2007/01/08(月) 04:02:57
Rubyというやつに挑戦しようと思い検索したところvs2005stdにそのままインストール出来る
ようなので、したのですがRubyProjectを立ち上げて、新しい項目としてtest.rbという名前にし
print 123
とだけ打って実行してみたのですが、まったく駄目です。
というか、c/c++を今まで勉強してきたのですが今回rubyの入門サイトをgoogleで検索して
一通りみたのですがさっぱりわからず、mainに当たる部分はどこなんだ?
という、たぶんスクリプト言語?ってのをやってる人にとっては「何いってんだ?」という
質問かもしれませんが、できたら何をどうして、どのページを参考にしたら良いのか
教えていただきたいです。
お願いします。
0765デフォルトの名無しさん
2007/01/08(月) 05:02:070766デフォルトの名無しさん
2007/01/08(月) 05:13:060767デフォルトの名無しさん
2007/01/08(月) 06:20:070768デフォルトの名無しさん
2007/01/08(月) 08:24:34Rubyというやつとvs2005stdというやつの間には何の関係もない。
0769761
2007/01/08(月) 09:13:05http://www.sapphiresteel.com/IMG/pdf/rubyinsteel_userguide.pdf
のページにvs2005std以上だと使えてインストールの仕方が書いてあるんですが
まぁ、興味本位で、Rubyに触ってみたく検索したら環境を統合できそうだったので
インストールの仕方見ながらやって、環境は統合され認識もされるけど
コンパイル実行の段階で、エラーに、/Cや-rといったリンカ関係か〜?と思うような
メッセージしかでず、結局、初心者の自分には、何が足りないのかが分からずで
実行できないままで、もうめんどくさいので全部いったん消して、普通にRuby落として
PATH通して、なんかのフリーのエディタ使ってやってみます。
ずっとC/C++ばっかやっててJAVAはやったけど重いし好きじゃないし
C#はインテリセンスがうっとおしいしってな具合でそれら以外の言語をちょっと
さわりたくなったわけで・・・
まぁ、その、あれだ
マルチしてすんませんでした。
0770デフォルトの名無しさん
2007/01/08(月) 10:18:01Rubyはインタプリタ言語です コンパイルは不要です
Rubyに限らず、動的な言語にはコンパイラーはありません
ネットでインタプリタ言語を少し調べてみてください
0771デフォルトの名無しさん
2007/01/08(月) 10:48:250772デフォルトの名無しさん
2007/01/08(月) 10:58:020773デフォルトの名無しさん
2007/01/08(月) 11:30:04> C#はインテリセンスがうっとおしいしってな具合でそれら以外の言語をちょっと
いやそれ言語の機能じゃないしw
0774デフォルトの名無しさん
2007/01/08(月) 11:40:33>C#はインテリセンスがうっとおしいしってな具合でそれら以外の言語をちょっと
>さわりたくなったわけで・・・
あほが
0775デフォルトの名無しさん
2007/01/08(月) 13:50:530776デフォルトの名無しさん
2007/01/08(月) 14:00:590777デフォルトの名無しさん
2007/01/08(月) 15:11:22なぜ、/C や -r がリンカ関係なんて発想が出てくるんだ?
0778デフォルトの名無しさん
2007/01/08(月) 16:19:010779デフォルトの名無しさん
2007/01/08(月) 16:56:450780デフォルトの名無しさん
2007/01/09(火) 14:27:070781デフォルトの名無しさん
2007/01/09(火) 16:04:070782デフォルトの名無しさん
2007/01/09(火) 17:37:55言ってることは別に間違っちゃいないと思うけど。
実際まともな反論もないし、批判の内容は誹謗中傷と大して変わらないw
無駄なのにね。
0783デフォルトの名無しさん
2007/01/09(火) 18:52:350784デフォルトの名無しさん
2007/01/09(火) 19:03:260785デフォルトの名無しさん
2007/01/10(水) 06:25:15http://ruby.cenophobie.com/rubycheat.php
0786デフォルトの名無しさん
2007/01/10(水) 06:26:06なんで、phpをあーだ言っただけで、厨なんだ?
厨じゃない俺から言わせれば、phpは言語として(ry
だが・・・
0787デフォルトの名無しさん
2007/01/10(水) 06:44:13他の言語がクズであることを理解するまで。
0788デフォルトの名無しさん
2007/01/10(水) 07:00:36変な流れを断つ為にも質問は受付中
0789デフォルトの名無しさん
2007/01/10(水) 09:56:450790デフォルトの名無しさん
2007/01/10(水) 10:35:45おまえが馬鹿にして、そしてそういう台詞を言ってるんだろう。
0791デフォルトの名無しさん
2007/01/10(水) 10:38:35Linuxで、書いたスクリプトに#!行を付けて、PATH通してコマンドみたいに使いたいんですが、なにかrequireしてると実行されません。
直接コマンドラインからrubyに読ませると、スクリプトは問題なく動きます。
requireがあるスクリプトを#!行で実行する手だてはありますでしょうか。
0792デフォルトの名無しさん
2007/01/10(水) 10:39:56ソースを晒すよろし
0793デフォルトの名無しさん
2007/01/10(水) 11:24:480794デフォルトの名無しさん
2007/01/10(水) 12:06:38が落ちるんだけど、漏れだけ?
0795デフォルトの名無しさん
2007/01/10(水) 12:15:500796デフォルトの名無しさん
2007/01/10(水) 13:10:400797デフォルトの名無しさん
2007/01/10(水) 13:12:530798デフォルトの名無しさん
2007/01/10(水) 13:25:20#!/usr/bin/ruby
require 'kconv'
STDOUT.print STDIN.read.toeuc
この程度のものなんですが、PATH通してrehashしても
コマンドが見付かりません、と言われます。
(Vine Linux3.2 + tcsh + Ruby1.8.2[i386-Linux])
0799デフォルトの名無しさん
2007/01/10(水) 13:50:10略すな
訳すな
0800デフォルトの名無しさん
2007/01/10(水) 14:04:58Rubyあるいは使っている人間のどちらかに重大なバグがある。
どちらにしろ使うの止めたほうがいい。
0801デフォルトの名無しさん
2007/01/10(水) 14:29:55./hogehoge じゃなくて hogehoge で実行とか
0802デフォルトの名無しさん
2007/01/10(水) 15:15:500803デフォルトの名無しさん
2007/01/10(水) 15:48:02コマンドが見付かりません、で全文です。
(Rubyにではなくシェルが付けて来た文句)
紛らわしくてすみません。
で、結局>>802さんの指摘の通りだったようです。
結果スレ違いな質問ですみませんでした。
0804デフォルトの名無しさん
2007/01/10(水) 19:16:330805デフォルトの名無しさん
2007/01/10(水) 19:22:26そのため /usr/bin/ruby\r を実行しようとしますが、
そのコマンドは存在しないのでエラーになります。
ruby かどうかには関係ありません。
0806デフォルトの名無しさん
2007/01/10(水) 19:24:280807デフォルトの名無しさん
2007/01/10(水) 19:26:410808デフォルトの名無しさん
2007/01/10(水) 20:54:14シェルじゃないのか。
すごいな。
0809デフォルトの名無しさん
2007/01/10(水) 21:37:59馬鹿だなお前
0810デフォルトの名無しさん
2007/01/10(水) 21:42:18shebangの解釈はexecve(2)が行う。
これまでシェルが頑張ってるとでも思っていたのか。
0811デフォルトの名無しさん
2007/01/10(水) 21:47:300812デフォルトの名無しさん
2007/01/10(水) 21:51:030813デフォルトの名無しさん
2007/01/10(水) 22:35:48歳が判るような判りにくいネタを・・・ww
0814デフォルトの名無しさん
2007/01/10(水) 23:48:59#!/bin/sh
↑こういう行で何か思うところはないかね
0815デフォルトの名無しさん
2007/01/10(水) 23:59:05808じゃないが、>810を知る前は
単純にシェルがshを起動してるんだと思ってましたorz ハイアホデス
0816デフォルトの名無しさん
2007/01/11(木) 00:05:02どうみても#!の行はshellが解釈してるだろ
本当にありが(r
0817デフォルトの名無しさん
2007/01/11(木) 00:07:05ttp://www.linux.or.jp/JM/html/LDP_man-pages/man2/execve.2.html
0818デフォルトの名無しさん
2007/01/11(木) 00:27:231. 入力を、変数展開とかクォート処理ののちトークンに分割。
2. 環境変数PATHの要素のディレクトリそれぞれについて
一覧を見て、第1トークンに一致する実行ビットの立っているなものを探す。
3. 見つかったらそいつに残りトークンを添えてexec(2)系システムコールを発行してwait。
見つからなければCommand not found.
あとはカーネルの仕事。
0819デフォルトの名無しさん
2007/01/11(木) 03:01:260820デフォルトの名無しさん
2007/01/11(木) 03:16:51パイプとか
リダイレクトとか
ヒストリーとか
他には?
0821デフォルトの名無しさん
2007/01/11(木) 03:29:21一所懸命皮肉を言おうとして、全部失敗してるもんな。
0822デフォルトの名無しさん
2007/01/11(木) 07:07:440823デフォルトの名無しさん
2007/01/11(木) 08:38:41そりゃほかにも、変数の展開とか、ifなどの制御とかはあるだろうよ。
0824デフォルトの名無しさん
2007/01/11(木) 09:28:230825デフォルトの名無しさん
2007/01/11(木) 10:58:44ほっといてやれ。
0826デフォルトの名無しさん
2007/01/11(木) 19:56:13ブラウザー操作をしています。
JapaScriptポップアップが出現したら消すよう制御したいのですが
可能でしょうか?
できればWIN32OLEでの実現法を知りたいです。
宜しくお願いします。
0827デフォルトの名無しさん
2007/01/11(木) 21:23:54まじめに考えると、
自分でそういうポップアップ「だけ」出るページを作って実験するのがいいと思う。
irbからでも操作できるので実験するのがいいよ。
0828デフォルトの名無しさん
2007/01/11(木) 21:30:260829デフォルトの名無しさん
2007/01/11(木) 22:30:47↓
「コンポーネントの追加と削除」
↓
「スクリプトデバッガ」をアンインストール
0830826
2007/01/12(金) 13:52:49ブログを巡回して自作ブログ検索エンジンを作成しているのですが、
やはり net/httpだとJavaScript周りの値が拾えなくて困っています。
0831デフォルトの名無しさん
2007/01/12(金) 13:58:49ここで聞いてみたら?
http://pc10.2ch.net/test/read.cgi/tech/1166172047/
あと2chもうすぐとまっちゃうみたいなのでお早めに
0832デフォルトの名無しさん
2007/01/12(金) 20:16:21>>831
2ch止まるの?
0833デフォルトの名無しさん
2007/01/12(金) 20:18:370834デフォルトの名無しさん
2007/01/12(金) 20:40:41氏ね
0835832
2007/01/12(金) 20:45:19WSH使うんですね!
require 'win32ole'
WIN32OLE.new('WScript.Shell').Popup("hoge", 0, "error")
0836832
2007/01/12(金) 21:05:59unixなど、win32oleが上手く行かない環境の場合に、フラグ立てて、
違う処理をしたい(例えば、標準出力にメッセージを出す)のですが
begin
require 'hoge'
rescue
end
とかでも普通にエラーが出てしまいます。
コンパイル時にエラー出しているんですかね
なんとかする方法はないでしょうか?
0837デフォルトの名無しさん
2007/01/12(金) 21:07:34eval をうまく使ってみるとか。
0838デフォルトの名無しさん
2007/01/12(金) 21:10:420839デフォルトの名無しさん
2007/01/12(金) 21:12:580840デフォルトの名無しさん
2007/01/12(金) 21:13:020841832
2007/01/12(金) 21:39:07それだ(゚∀゚)
is_win32 = begin
require 'win32ol'
true
rescue LoadError
false
end
0842デフォルトの名無しさん
2007/01/12(金) 23:57:560843デフォルトの名無しさん
2007/01/13(土) 00:04:240844デフォルトの名無しさん
2007/01/13(土) 00:54:290845デフォルトの名無しさん
2007/01/13(土) 10:01:15たとえば
0846デフォルトの名無しさん
2007/01/13(土) 10:05:08たとえば、以下のようにしたいと思ってます。
class Foo
end
foo = Foo.new
# ここまで実行して、そのコンテキスト(?) で irb を起動したい。
# require "irb"
# IRB.start
# ↑だと Foo クラスは見えるのですが、foo が見えません。
0847デフォルトの名無しさん
2007/01/13(土) 10:56:23irbの呼び出しはそのとおりでいいけど、fooが見えない、というのは
スコープの問題と言っていいのだろう。
あるファイル中のトップレベルで定義したローカル変数は、同じ
ファイルの関数や、他のファイルから参照できない。
たとえ同じファイルでも、異なるメソッドからはローカル変数って
引数として渡さない限り参照できないだろ?
グローバル変数か、定数にするしかないな。
0848デフォルトの名無しさん
2007/01/13(土) 11:04:580849デフォルトの名無しさん
2007/01/13(土) 12:32:53Edit1 と Edit2 があったとします。
Edit1にフォーカスが当たった状態でタブキーを押すと
Edit2にフォーカスが移動するようにしたいのですがどのようにすればよいのでしょうか?
0850デフォルトの名無しさん
2007/01/14(日) 03:12:43i=0
while i<4
print i if (1<=i)..(2<i)
i += 1
end
を実行すると、12が表示されるのではなく、123が表示されてしまいます。
期待する12という表示はなぜ得られないのでしょうか?
0851デフォルトの名無しさん
2007/01/14(日) 06:31:47if x
などで偽と判定されるのは、
・xがfalseだったとき
・xがnilだったとき
の場合のみだ。Rangeオブジェクトはそのどちらでもないので、真になる。
0852デフォルトの名無しさん
2007/01/14(日) 07:40:290853デフォルトの名無しさん
2007/01/14(日) 07:50:33例を挙げよ。
0854デフォルトの名無しさん
2007/01/14(日) 07:57:300855デフォルトの名無しさん
2007/01/14(日) 08:06:38それは単にnilになってないだけでは
空(empty)であることとnilであることは違う
irb> unless nil then puts 'NIL' else puts 'NON-NIL'end
NIL
irb> unless '' then puts 'NIL' else puts 'NON-NIL'end
NON-NIL
irb> unless ''[0] then puts 'NIL' else puts 'NON-NIL'end
NIL
irb> arr=Array.new
irb> unless arr then puts 'NIL' else puts 'NON-NIL'end
NON-NIL
irb> unless arr[0] then puts 'NIL' else puts 'NON-NIL'end
NIL
irb> hash=Hash.new
irb> unless hash then puts 'NIL' else puts 'NON-NIL'end
NON-NIL
irb> unless hash['hoge'] then puts 'NIL' else puts 'NON-NIL'end
NIL
0856デフォルトの名無しさん
2007/01/14(日) 08:34:21これはRangeオブジェクトじゃなくて条件文の範囲式。
http://www.ruby-lang.org/ja/man/?cmd=view;name=%B1%E9%BB%BB%BB%D2%BC%B0#a.c8.cf.b0.cf.bc.b0
ここでわかるように式2が真になるまでが条件だから、
i=0 1<=iでないので偽
i=1 1<=iが成立し、同時にi<2となり、結果自体は真
i=2 上で一周しているから1<=iを調べるとこれが真で、i<2が成立しないので結果は真
i=3 i<2が成立しないので真
となる。
範囲式のふつうの使い方は、
i = 0
while i < 4
print i if (i==1)..(i==2)
i += 1
end
とかかな。
でもまあ、ふつうはこういう書き方はしない方がいいです。
おれ、このスレの回答以外でこの書き方したことないよ。
0857デフォルトの名無しさん
2007/01/14(日) 10:57:230858デフォルトの名無しさん
2007/01/14(日) 13:40:57if /re/ とか書けるっけ?
0859デフォルトの名無しさん
2007/01/14(日) 13:55:51(それ書いてもどうなるものでもなさそうだけど)
0860デフォルトの名無しさん
2007/01/14(日) 13:59:170861デフォルトの名無しさん
2007/01/14(日) 14:08:030862デフォルトの名無しさん
2007/01/14(日) 14:21:33これって、if 自身が状態を持っているようですね。ローカル変数のような。
そのため、以下のソースを実行すると、x=3,y=5と表示されることがあります。
x = 1
while x <= 4
y = 5
while y <= 9
b = y == 6
e = y == 8
printf "x=%d,y=%d\n", x, y if b..e
break if x==2 && y==6
y += 1
end
x += 1
end
0863デフォルトの名無しさん
2007/01/14(日) 16:04:08>>856
式2は (i<2) ではなくて (2<i) です。
> ここでわかるように式2が真になるまでが条件だから、
式2が偽になった回でもその一回は結果として真になる、ということですよね。
そこで、 (2<i) の部分を (2<=i) にすれば意図どおりのタイミングで偽になるように
なるかと思って試しましたが、これも123と表示される結果となりました。
そこで856の「一周しているから」という文により気づいたのですが、式2が真となった
回の次回以降は、リファレンスにあるように偽になるのではなく、式1の評価に戻る、
ということですね。
そうなると、式2を(2<=i)と変更した場合に 3 が表示される理由も分かります。
ようやっと条件式としての範囲式の意味が理解できました。
856さん、他のみなさん、ありがとうごさいました。
>>862
その式の状態が、コード単位なのかメソッドの属するオブジェクト単位なのか
スレッド単位なのかメソッド呼び出し単位なのかよく分からんことから
範囲式について調べようと思った、というのがそもそもの動機なのですが、
>856> でもまあ、ふつうはこういう書き方はしない方がいいです。
と言われているとおり、862をみると、「一周する」ということが確かな状況以外では
誰が読んでも意味不明なコードになるだろう、ということは分かりました。
もし純粋にif文単位で状態が保持されるのなら、例外で中断して再開した場合に
その式を評価した場合に状態が引き継がれたりするなどひどい泥沼になるように
思えるので、深入りせずここらで引き上げることにします。
0864デフォルトの名無しさん
2007/01/14(日) 18:40:27メソッド呼び出し単位。
状態を持っているのはifではなくて、flip-flop operatorで自動的に作られる
隠しローカル変数。
0865デフォルトの名無しさん
2007/01/14(日) 20:19:46864を見て試してみましたが、たしかにメソッド単位のローカル変数のようですね。
Proc.newやloopやtimesなどにブロックを渡してその中で範囲式を使ってみましたが、
ブロック内のローカル変数とは違って、状態は記憶されているようです。
ブロック付きopenをループやretryで複数回実行するときなどは注意が必要そうですね。
0866デフォルトの名無しさん
2007/01/15(月) 11:47:080867デフォルトの名無しさん
2007/01/15(月) 13:08:37awk/sed ではそれなりに使ったけど
perlやrubyでは使ったことない。
0868デフォルトの名無しさん
2007/01/15(月) 16:45:53http://www.ruby-lang.org/
0869デフォルトの名無しさん
2007/01/15(月) 17:00:400870デフォルトの名無しさん
2007/01/15(月) 17:08:38どもでした。
0871デフォルトの名無しさん
2007/01/16(火) 02:59:10みたいに、ローカル変数を取り消すことってできますか
0872デフォルトの名無しさん
2007/01/16(火) 05:37:090873デフォルトの名無しさん
2007/01/16(火) 11:01:25str[100,350] = "g"
でやると、一文字しか置換されないのです。かといって"ggggg…"のように長くは間違いがでそうだし
何か簡単にする方法はありませんか?
0874デフォルトの名無しさん
2007/01/16(火) 12:25:20Rubyでは同じ文字列のくり返しは乗算で実現できる。
"g"*350とか。
0875デフォルトの名無しさん
2007/01/16(火) 12:26:400876デフォルトの名無しさん
2007/01/16(火) 12:27:280877デフォルトの名無しさん
2007/01/16(火) 12:58:22nilを代入するのではダメでシンボルテーブルから変数名自体を消したいってこと?
>>872
undefはメソッドしか未定義にできないな。
これも厳密には未定義にするわけじゃなかったり。
0878デフォルトの名無しさん
2007/01/16(火) 13:06:30"g"*350000000とすると、メモリを300MBも消費しました。
なんとかする方法はないですか?
0879デフォルトの名無しさん
2007/01/16(火) 13:22:110880デフォルトの名無しさん
2007/01/16(火) 13:23:400881デフォルトの名無しさん
2007/01/16(火) 13:42:570882デフォルトの名無しさん
2007/01/16(火) 15:17:30ループでやったって置換した結果の文字列のほうは結局大きくなるんだから変わらん気がす。
てっきり勉強目的で意味がないことをやってるんだと思ってたんだけど
なんか目的があるなら、それを言えばなんか考えてくれる人がいるかもよ。
特に意味はない話ならメモリを300MB使うことなどなんら問題じゃない。
0883デフォルトの名無しさん
2007/01/16(火) 15:21:170884デフォルトの名無しさん
2007/01/16(火) 15:45:25strの両方が存在するから1つずつ置き換えていくよりメモリは余計に必要。
だと思ったんだが、もしかしてRubyでは部分文字列は共有されてるのかい?
0885デフォルトの名無しさん
2007/01/16(火) 17:31:36ファイルに保存するなら置換しながら…というか書き込みながら続ければいいわけだし
0886デフォルトの名無しさん
2007/01/16(火) 18:00:15>>885
それが一番の問題だと思う。初心者スレだからなおさらだな。
strに350MBもデータをコピーしてる時点でなんか間違ってる
可能性が大きいわけで、fillを使えば済む話じゃないかもしれん。
0887デフォルトの名無しさん
2007/01/16(火) 19:32:58いろいろと調べてみたのですが、わからないのでどなたかわかる方がいらっしゃったらよろしくお願いします。
0888デフォルトの名無しさん
2007/01/16(火) 19:33:500889デフォルトの名無しさん
2007/01/16(火) 20:44:30フォルダをクリックして確かめる。
0890デフォルトの名無しさん
2007/01/16(火) 21:23:56FileTest.exist?(filename)
filename が存在する時、真を返します。
0891デフォルトの名無しさん
2007/01/17(水) 00:28:12http://www.itmedia.co.jp/enterprise/articles/0701/15/news024.html
1回目と2回目のインタビューのリンクもあるので、Rubyファンはぜひ。
0892878
2007/01/17(水) 00:28:460893デフォルトの名無しさん
2007/01/17(水) 00:58:12クラスメソッドなら
class ClassA
・・・
end
def ClassA::method_b
・・・
end
のような形で書けるみたいですがインスタンスメソッドの場合がどうも見当たらないんです。
0894デフォルトの名無しさん
2007/01/17(水) 01:27:57ClassA.class_eval{
def foo
・・・
end
}
0895デフォルトの名無しさん
2007/01/17(水) 01:39:51できました。ありがとうございます。
0896デフォルトの名無しさん
2007/01/17(水) 02:01:02>プログラミング言語はすべて愛おしい
∩___∩ |
| ノ\ ヽ |
/ ●゛ ● | |
| ∪ ( _●_) ミ j
彡、 |∪| | J
/ ∩ノ ⊃ ヽ
( \ / _ノ | |
.\ “ /__| |
\ /___ /
0897デフォルトの名無しさん
2007/01/17(水) 02:21:12> str.fill("g",100..350)
String#fillなんてあったっけ?
0898デフォルトの名無しさん
2007/01/17(水) 02:35:38fillはArrayだった。886は間違い。
0899デフォルトの名無しさん
2007/01/17(水) 03:16:37なんでこれが、クラスではなくインスタンスのメソッドになるのか
ちっとも理解できないのだけれど……。
分かりやすいサイトプリーズ
0900デフォルトの名無しさん
2007/01/17(水) 03:20:07リファレンスに書いてあるよ。
0901デフォルトの名無しさん
2007/01/17(水) 03:23:46わかりやすいサイトは思いつかないが、スコープの問題を除けば、
class ClassA
# X
end
と、
ClassA.class_eval{
# Y
}
とでは、XとYは同じ環境になる。
単にそれだけ。
0902デフォルトの名無しさん
2007/01/17(水) 03:34:38特定のインスタンスだけに定義されたメソッドを混同していた。
さいきんruby使う暇なくて忘れてたorz
0903デフォルトの名無しさん
2007/01/17(水) 07:00:53>nilを代入するのではダメでシンボルテーブルから変数名自体を消したいってこと?
そうです。ERB用にこんなことをしたいんです。
# HashからBindingをつくる
def create_binding(_hash)
_defstr = _hash.inject('') { |_s, _e| _s << "#{_e[0]} = _hash[#{_e[0].inspect}];" }
eval _defstr
#undef _hash, _defstr # これができないものかと。
binding()
end
b = create_binding(:a=>10, :b=>'foo', :c=>%w[x y z])
0904デフォルトの名無しさん
2007/01/17(水) 09:39:30たしか Matz は I hate C++. と逝っていたと思うんだけど、
それでもいとおしいと思ってるんだね。
0905デフォルトの名無しさん
2007/01/17(水) 09:41:290906デフォルトの名無しさん
2007/01/17(水) 10:01:30むしろ一時変数なんか気にすんなって言いたいが。
そもそもevalした時点で安全でなくなっているわけだし。
ハッシュ受け取ってローカル変数なりクラス変数なりに展開するERBの子クラスを作ればいいんじゃないのか。
0907デフォルトの名無しさん
2007/01/17(水) 11:25:02流れ見ないで書き込むんだけど、evalとかで変数表を表示したときに
一時変数も一緒に出て来てしまうのが気に入らないとか?
0908デフォルトの名無しさん
2007/01/17(水) 11:56:36とりあえず現在のところローカル変数を明示的に消すことはできない
のでやりかたを変えるしかない。
0909デフォルトの名無しさん
2007/01/17(水) 12:16:34最近は本気で2chのデマを信じ込む奴が結構居るから、
これくらいのアッサリ風味でこられると本気なのか釣りなのか判断つかない。
0910デフォルトの名無しさん
2007/01/17(水) 12:36:21関係者か?
0911デフォルトの名無しさん
2007/01/17(水) 12:40:190912デフォルトの名無しさん
2007/01/17(水) 13:15:360913デフォルトの名無しさん
2007/01/17(水) 13:25:56煽りあいは本スレでお願いいたします。
0914デフォルトの名無しさん
2007/01/17(水) 23:18:09irb(main):001:0> Dir.glob("c:/本/*")
=> []
irb(main):002:0> Dir.open("c:/本") do |dir|
irb(main):003:1* dir.each do |f|
irb(main):004:2* p f
irb(main):005:2> end
irb(main):006:1> end
"."
".."
=> #<Dir:0x3a1e55c>
Windows2000/VISTAの話で入れたのはActiveScriptRuby
"本稼動"だの"本番"だのが共有ディレクトリ内にあるんだな
0915デフォルトの名無しさん
2007/01/17(水) 23:45:290916デフォルトの名無しさん
2007/01/18(木) 01:42:06空のBindingを作ってから他のローカル変数を追加すればいい。
def empty_binding
binding
end
def create_binding(h)
b = empty_binding
h = h.inject({}) {|hx, (var, val)| hx[var.to_s] = val; hx}
arg = "__a"
arg.succ! while h.key?(arg)
eval((h.keys << "nil").join(" = "), b)
h.each {|var, val| eval("proc {|__a|#{var}=__a}", b).call(val)}
b
end
# テスト
b = create_binding(:a=>10, :b=>'foo', :c=>%w[x y z])
p eval("a", b)
p eval("b", b)
p eval("c", b)
p eval("h rescue $!", b)
p eval("__a rescue $!", b)
0917デフォルトの名無しさん
2007/01/18(木) 19:10:20if /1/ =~ input
これだと、inputが11や111でもマッチしてしまいます。
input = 1の時だけマッチさせるにはどうすればよいでしょうか?
0918デフォルトの名無しさん
2007/01/18(木) 19:16:310919デフォルトの名無しさん
2007/01/18(木) 19:17:290921デフォルトの名無しさん
2007/01/18(木) 19:34:540922デフォルトの名無しさん
2007/01/18(木) 19:43:250925デフォルトの名無しさん
2007/01/18(木) 21:19:400926デフォルトの名無しさん
2007/01/18(木) 21:48:400927デフォルトの名無しさん
2007/01/18(木) 22:05:48/¥A1¥z/ =~ input.chomp
でもマッチするだろう。
0928デフォルトの名無しさん
2007/01/18(木) 23:49:47"本" のシフトJISコードの2バイト目が "{" なので
こいつをワイルドカード文字と誤認識して異常動作している
私も以前にこれに引っかかりました
Dir.open('ほげほげ').to_a
とかに変えた記憶があります
・ディレクトリエントリのみの配列になる
・ドットファイルも含まれる
・ディレクトリの再帰検索は出来ない
・パスデリミタとしてバックスラッシュも使える
という違いがありますが、大抵はこれで事足りるような気がします
シフトJISの呪いはいつまで続くのでしょうか
0929デフォルトの名無しさん
2007/01/19(金) 00:04:28-Ks で解決する問題とは違う?
0930デフォルトの名無しさん
2007/01/19(金) 02:59:37違う。純粋にglobingのルーチンの問題。
実は1.9で使われているglobingルーチンでは解決しているが、
なんのかんので1.8にバックポートされていない。
1.8.6で入れてくれ。ってリクエストしてもダメかねえ。
0931デフォルトの名無しさん
2007/01/19(金) 12:02:48リファレンスはHowToな対応できても基礎がわかってなくて不安です
で、高かったり厚くても問題ないので、1冊だけ読むならこれ、っていうお勧めの書籍ってなんでしょうか?
一応amazonとかみると「プログラミングRuby―達人プログラマーガイド」
が評判良さそうなのですが、>>281>>286でもあがってないし少し古いのでどうなんでしょか?
(ちなみに他言語はそこそこ触ってます
0932デフォルトの名無しさん
2007/01/19(金) 12:21:54webの情報でなんとかなりますよ
0933デフォルトの名無しさん
2007/01/19(金) 12:23:22Rubyソースコード完全解説
RubyHackingGuide
0934931
2007/01/19(金) 12:46:59>webの情報でなんとか
割とそうですがそういうもんでしょうか
Rubyソースコード完全解説は趣旨と違うけど面白そう
0935デフォルトの名無しさん
2007/01/19(金) 12:52:19私はwebの情報を見ながらだけど
あなたと同じように
これで大丈夫なんかいな?
基礎分かって無いで使ってるけど?
みたいな心配がありました
ちょっと趣きを変えて
Rubyソースコード完全解説
を読んでみたら
読んだあとはすらすら使えるようになってました
0936デフォルトの名無しさん
2007/01/19(金) 13:30:49> 1.8.6で入れてくれ。ってリクエストしてもダメかねえ。
ちと、そのへんの強化策を考えないといかんかねぇ。
有用そうだけど1.9からバックポートされてないのというと、こんなところか。
* multibyte path globing
* large file support
* override by forwarding
0937デフォルトの名無しさん
2007/01/19(金) 13:41:57自分はJavaからやった。
Javaは書籍が豊富だから。
回り道のように思えるけど、自分はこっちの方が効率がいいと思っている。
0938デフォルトの名無しさん
2007/01/19(金) 13:57:17override by forwarding って何?
0939デフォルトの名無しさん
2007/01/19(金) 17:51:410940デフォルトの名無しさん
2007/01/19(金) 17:53:070941デフォルトの名無しさん
2007/01/19(金) 17:56:02コレでいいだろ?
0942デフォルトの名無しさん
2007/01/19(金) 18:27:11東大生乙
0943939
2007/01/19(金) 19:37:21あとできればヒープソートの作り方も教えてください。
0944デフォルトの名無しさん
2007/01/19(金) 19:43:161始まり→2nと2n+1
0始まり→2n+1と2n+2
に入れればいい。
0945939
2007/01/19(金) 19:50:07自分でもうちょい考えたら改めて質問に来ます。
0946デフォルトの名無しさん
2007/01/19(金) 20:28:02http://pc10.2ch.net/test/read.cgi/tech/1106572657/
0947デフォルトの名無しさん
2007/01/19(金) 20:28:360948939
2007/01/19(金) 23:10:16おお!
こんなスレあったんですね!
0949デフォルトの名無しさん
2007/01/20(土) 00:22:05それはビープ。
0950デフォルトの名無しさん
2007/01/20(土) 00:31:43read()とかwrite()とかを#defineで置き換えてるのを、DLLのforwardingで置
き換えるようにするというのを勝手に「override by forwarding」と書いた。
ChangeLogにはaliasと書いてあったので、
「symbol alias by forwading」ということにしよう。
svnでいうとrevision 9502。
0951デフォルトの名無しさん
2007/01/20(土) 00:39:08Dir.globが空Array返したってだけじゃないのか?
"*"はdot fileにはマッチしないんだから。
0952デフォルトの名無しさん
2007/01/20(土) 04:19:11coding pragma を追加したいところだけど、あれは1.8には持ってこれない
という話だから、それくらいかな?
ところで署名でも集めるの?w >強化策
0953デフォルトの名無しさん
2007/01/20(土) 08:14:15お前だけだ。分かってくれたのは・・・。
もう少して危ない人になるところだった。
0954デフォルトの名無しさん
2007/01/20(土) 11:44:14レシピファイル作成をスクリプトの実行と同時に自動で行う機能があるとのことですが、
ずっとループし続けるスクリプトの場合には、自動生成できないのでしょうか?
もしあれば教えてください。
0955デフォルトの名無しさん
2007/01/20(土) 13:04:050956デフォルトの名無しさん
2007/01/20(土) 14:05:33実際、requireするのを探すだけですもんね。
ありがとうございました。
0957デフォルトの名無しさん
2007/01/20(土) 15:08:27test という文字列のあと端末の高さぶんの空行が開いた後に
プロンプトが表示されます。
この空間ができないようにするにはどうしたらいいんでしょうか?
Curses::stdscr.setpos(Curses::stdscr.cury - 1, 0)
をはさんでみるなどしてみましたがダメでした。
端末は Cygwin/ck/screen/zsh です。
require "curses"
begin
Curses::init_screen
Curses::stdscr.addstr("test\n")
Curses::stdscr.refresh()
rescue
Curses::close_screen
end
0958デフォルトの名無しさん
2007/01/20(土) 21:10:40>>928 が説明してくれている通りで、例えば'も'を含んだパスとか駄目
0959デフォルトの名無しさん
2007/01/21(日) 14:47:28と思って探したんですが見つけられませんでした
そういったライブラリってありますか?
0960デフォルトの名無しさん
2007/01/21(日) 15:14:16DOM使え。
0961デフォルトの名無しさん
2007/01/21(日) 15:35:22どうしても DOM を使わなければいけない理由がなければ、
DOM を使わないほうが楽なので。
0962デフォルトの名無しさん
2007/01/21(日) 15:38:50$TERMはなんになってる?
screen抜いてみたもダメ?
0963デフォルトの名無しさん
2007/01/21(日) 15:51:23ありがとうございます
jsを扱ってきたのでDOM処理ができれば今後も楽だなぁと思ったんですが。
単純な文字列処理でも強力なので素直にそっち使っていきます
0964デフォルトの名無しさん
2007/01/21(日) 16:23:01http://wota.jp/ac/?date=20070115#p01
とか参考になるかと。
0965デフォルトの名無しさん
2007/01/21(日) 17:20:49面白そうなモノをありがとう
しかしなぜか(←思考停止)モジュール内部でエラー出してだめだったので
人並みにruby出来るようになるまで正規表現で対応します
0966デフォルトの名無しさん
2007/01/22(月) 12:42:32http://jp.rubyist.net/magazine/?0010-CodeReview#l12
↑これを読んでいるのですが、
「リテラルへの式埋め込み」ってありますよね?
式の埋め込みは、コンパイル時にチェックがされないので、どうなのかなー?
実行してみないとわからない、と思うのですが、
みなさんは多用されてます?
ユニットテスト前提なんだろうか・・・。
0967デフォルトの名無しさん
2007/01/22(月) 13:26:08どっちみち手動でも自動でもテストはしなきゃ話にならんのだから使いたいときに使えばよい。
0968デフォルトの名無しさん
2007/01/22(月) 14:25:49少なくともSyntax Errorはコンパイル時にチェックしてるようなので
問題ないと思うんだが
0969デフォルトの名無しさん
2007/01/22(月) 18:20:35ああ、それのことか。
それに関しては1.8にバックポートされる可能性はないと思うよ。
0970デフォルトの名無しさん
2007/01/22(月) 22:34:340971デフォルトの名無しさん
2007/01/22(月) 22:55:391.8以降なら、たとえば "lit#{code}eral" は
"lit" << code.to_s << "eral" とおなじ形に解釈される。
普通のrubyコードでチェックされる点はチェックされるし、
チェックされない点はチェックされない。
0972デフォルトの名無しさん
2007/01/22(月) 23:04:32場合によるけどシンボルがそれに近い
0973966
2007/01/22(月) 23:13:37変なこと言ったかな?と思ったんですが、
どうやら、自分が言いたかったのは、ruby -c での構文チェックのことでした。
(後だしっぽくて申し訳ない)
・・・と思ったら、
hoge = 1234
puts "hoge = #{hoge_} でつ"
だろうが、
hoge = 1234
puts "hoge = " + hoge_ + "でつ"
だろうが、ruby -cは通るのか・・・orz
構文チェックってもしかして、ザルですか?(:D)rz
0974デフォルトの名無しさん
2007/01/22(月) 23:46:05だって構文としては正しいし。
self.hoge_を期待するというだけ。
0975デフォルトの名無しさん
2007/01/22(月) 23:48:50シンボルか。
サンクス。
0976デフォルトの名無しさん
2007/01/23(火) 00:14:000977デフォルトの名無しさん
2007/01/23(火) 00:29:250978デフォルトの名無しさん
2007/01/23(火) 00:50:350979デフォルトの名無しさん
2007/01/23(火) 02:47:120980デフォルトの名無しさん
2007/01/23(火) 02:58:230981デフォルトの名無しさん
2007/01/23(火) 03:01:510982デフォルトの名無しさん
2007/01/23(火) 05:56:45ちょっと滑っちゃったという図
0983デフォルトの名無しさん
2007/01/23(火) 06:12:280984デフォルトの名無しさん
2007/01/23(火) 07:10:43まったくそんなことはないわけで。
0985デフォルトの名無しさん
2007/01/23(火) 13:24:02質問受付中
0986デフォルトの名無しさん
2007/01/23(火) 14:17:33今まで作った拡張ライブラリは書き直しする必要がありますか?
0987デフォルトの名無しさん
2007/01/23(火) 14:20:28README.EXT{,.ja} の内容見たら変更は無いですね。
0988デフォルトの名無しさん
2007/01/23(火) 14:31:18でも、ここでこんなことを聞くレベルなら、まず問題ないだろう。
0989デフォルトの名無しさん
2007/01/23(火) 15:27:03今までに書いた拡張ライブラリのうちいくつかを試してみましたが、
RSTRING(s)->ptr => RSTRING_PTR(s), RSTRING(s)->len => RSTRING_LEN(s) とか、
基本的なところから引っかかってしまいました。
コンパイルまで辿り着いても、実行してみたら core 吐くし・・・
どうやら README.EXT{,.ja} の内容も更新されていないようですね。
先は長そうです・・・ orz
0990デフォルトの名無しさん
2007/01/23(火) 15:47:38Rubyのイテーレータは内部、外部どっち?
ttp://enbug.tdiary.net/20070123.html#p01
0991デフォルトの名無しさん
2007/01/23(火) 15:56:480992デフォルトの名無しさん
2007/01/23(火) 16:00:18README.EXT{,.ja}にはRSTRING_PTRとRSTRING_LENは書いてあるよ。
coreを吐くのは、それだけじゃ誰が悪いかよくわからんね。
0993デフォルトの名無しさん
2007/01/23(火) 16:02:39一概に外部イテレータがよくて内部イテレータがダメ、ということもなくて、
外部イテレータには確かに内部イテレータにできない操作もできるけど、
逆にその分扱いにくい(記述量が増える)という欠点もある。
両方使えるのが理想じゃないかね。
なお、Rubyで外部イテレータを使いたい場合は require "generator"
これ、組み込みにならないかねえ。
0994デフォルトの名無しさん
2007/01/23(火) 16:17:31ありゃありゃ、確かに書いてました。すみません。
core の方はまあ自力でなんとかしてみます。
ただ、ウチの環境 (FreeBSD 6.1) だと、拡張ライブラリ関係なく挙動が怪しいので、
拡張ライブラリの前に解決すべき問題が山のようにありそうです・・・
私のコンパイルの仕方がまずいだけなのかもしれませんが (汗)
^C で止めると core 吐いたり。
% ruby -esleep
^Czsh: bus error (core dumped) ruby -esleep
%
0995990
2007/01/23(火) 16:27:51これは(言語)実装者にとって扱いにくいという意味ですよね?
先のenbug diaryによるとPythonではコルーチンを使って平易に実装しているとあります。
このほかに何か内部イテレータのメリットってありますか?
0996993
2007/01/23(火) 16:49:52いや、993では処理系実装者にとって扱いにくいかどうかなんて考えてない。
その言語の利用者にとって、だよ。
外部イテレータを使うのも、外部イテレータを作るのも、内部イテレータの
それに対して記述量が必然的に多くなる。
Pythonのように外部イテレータを内部イテレータ的に利用するsyntax sugarを
用意すれば、使う方に関しては若干ましにはできるけどね。
というか、990で参照してる日記の先頭のリンクを辿れよ。
0997デフォルトの名無しさん
2007/01/23(火) 17:04:50>用意すれば、使う方に関しては若干ましにはできるけどね。
若干ましというより Python のほうがはるかに使いやすくねえか?
0998デフォルトの名無しさん
2007/01/23(火) 17:08:440999デフォルトの名無しさん
2007/01/23(火) 17:10:50そうか?
好みの問題もあるから、あんまり強くも言えないが、「はるかに使いやす」いとは思わないな。
せいぜい、これはこれで悪くない、くらい。
1000デフォルトの名無しさん
2007/01/23(火) 17:24:24ほかに理由などない!
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。