1 名前:デフォルトの名無しさん [2008/01/16(水) 17:41:27 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 関連スレやURLは>>2-7 あたりを見てください。Ruby on Railsの質問はWebProg板のRailsスレで。 ■質問する人へ 質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。 ・ぐぐる ・マニュアルで探す www.ruby-lang.org/ja/man/ ・FAQを読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ 質問には以下を書くこと。へたくそな質問は再提出を要求される。 ・詳しい内容(「動きません」「うまくできません」では回答しようがない) ・エラーメッセージ(なるべくそのままで) ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる)) ・最終的にやりたいこと(もっとよい方法がある場合が多いので) 回答してくれた人には「ありがとう」のひとことをいってあげて。 ■回答する人へ 相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。 それができないならこないこと(だって初心者スレだもん)。 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
152 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 20:13:18 ] >>149 テキストエディタの正規表現を使って置換することはできるんですが、プログラミングに関してはパーです >>150 ああ・・・でも変更を加えたいファイルはテキストベースなんです。 人間が簡単に読めるってのが売りのデータ形式なんで、データそのものを、62進数の文字列に変換 とかっていうのはいただけないです >>151 わかりました
153 名前:デフォルトの名無しさん [2008/01/21(月) 21:05:30 ] >>150 インデックスを使うっていうだけだよねこれ
154 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 21:25:14 ] >>153 もう一度読み返してみたら”それらをファイル名の集合体として別途管理する”って書いてあることに気付きました
155 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 21:32:54 ] FS(BTree系)+OSのディレクトリキャッシュで管理するか、 DBMSのテーブル(典型的にはBTree系)+DBMSのキャッシュで 管理するかの違いだけのような気がする
156 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 21:44:16 ] >>150 スラドで袋だたきされてる奴だろw
157 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 21:46:22 ] 技術的には奇特人間大賞みたいなもんで別段問題ないっす プレスリリースがアホっぽいので話題になってるだけ
158 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 21:52:33 ] まぁでも、初心者に勧めるようなもんじゃないな。
159 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 22:18:02 ] 今ならPythonだな
160 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 22:21:27 ] スラドの関連ストーリーがLyee関係になってて 可哀想だった・・・・そこまでひどくはないと思うし・・・・・
161 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 22:48:06 ] Ruby検定がコンピュータベースで全国200個所で受験可能に − @IT ttp://www.atmarkit.co.jp/news/200801/21/ruby.html やったね!
162 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 22:50:03 ] 松江詣でをする理由が無くなったな
163 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 22:58:17 ] Ruby検定なんてあったのか そんなもん取ってなんの役に立つんだ?
164 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 23:02:39 ] そりゃー、おめー、あれだー、現行の幾つか前のバージョンの仕様ならちゃんと理解してた、つーことをだな
165 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 23:12:17 ] >>163 面接のときの話のネタになる、ということが言われております
166 名前:デフォルトの名無しさん mailto:sage [2008/01/21(月) 23:26:29 ] とりあえずここは初心者スレだ
167 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 11:25:47 ] >>145 ruby-mode って組み込みクラスのメソッド補完とかできないの? 他のモードにはある C-c C-c での実行とか マニュアル表示とかも無理?
168 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 15:48:50 ] すみません教えてください。 自分のIPアドレスを知るためのhttpクライアントを作ろうとしています。 普通のページは .get できるのですが、CGIの返してくるものを取れません。 以下のコードです(URLは架空)。 require 'net/http' Net::HTTP.version_1_2 Net::HTTP.start('YourIP.com ', 80) { |http| response = http.get('/ip.cgi') puts response.body }
169 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 16:07:10 ] >>168 require 'open-uri' html = open('YourIP.com/ip.cgi ').read puts html open-uriで逆に面倒になることが事前にわかってる場合以外はopen-uri使い続けれ 上記でhtmlが空になる、あるいはopenでエラーが出る場合はCGIが悪い
170 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 18:14:32 ] >>156 URLキボンヌ
171 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 21:08:40 ] # 最近rubyの質問がすくねえな >>168 まず、以下の点について答えよ ・そのCGIはお前が書いたモノかどうか ・http.post での結果
172 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 22:12:18 ] 質問です。 Ruby 1.9以降で正規表現関係はどう変わりますか? 鬼車がどうこうというのは、あちこちで目にするのですが、 具体的な変更点が詳しく分かるサイトとかあれば教えてください。
173 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 22:50:45 ] 質問です あるディレクトリにある全てのファイルの中身を見て処理を行いたい場合の定石などありますでしょうか? 自分は Dir.entries("ディレクトリ名") do |file| File.open("ディレクトリ名" + file) なんだかの処理 end end とかやっているのですが、いまいちです Dirでディレクトリ内部のファイル一覧を取得するとどうもStringにしてくれるみたいですが、Fileをうまいこと取得できたりしないのでしょうか? ついでにCやJavaでインクリメントする場合 value++ とか書きますよね Rubyだと++はないようですが、どうするのがいいのでしょうか? よろしくお願いいたします
174 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 22:52:23 ] value += 1 とするしかない
175 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 22:58:41 ] >>173 Dir.glob("./hoge/*").each do |path| File.open(path){|f| … } end おそらくこれが一番人気 他のDirもPathnameの各メソッドもビミョーに使い勝手が悪い インクリメントは作者がやだって言ってるので>>174 以外の方法はないよ
176 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 23:08:39 ] >>174-175 さんくすです 助かりました 参考にさせてもらいます value+=1はあったのですね てっきり、+=も無いと思っていたのでvalue = value + 1と書いてましたw
177 名前:デフォルトの名無しさん [2008/01/23(水) 00:58:08 ] >>170 >>150 スラッシュドット ジャパン | データをすべてファイル名扱いにして高速検索を実現? slashdot.jp/developers/08/01/20/2052246.shtml
178 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 01:01:16 ] >>177 関連エントリー。アルファブロガーの反応 404 Blog Not Found:ニセ情報科学? - ISSEI blog.livedoor.jp/dankogai/archives/50988968.html
179 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 09:38:29 ] >>169 うまくいきました。 ありがとうございます。 >>171 cgiは、とりあえず既存のものです。 読むのがうまくいったので、送る方のcgiも自作するつもり。 .startでSocketErrorになっていました。 http.post は行っていません。
180 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 09:59:37 ] >>179 >.startでSocketErrorになっていました。 ×Net::HTTP.start('YourIP.com ', 80) { |http| ○Net::HTTP.start('YourIP.com', 80) { |http|
181 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 10:18:36 ] そのアルファブロガー(笑)はどうでもいい
182 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 10:40:38 ] >>180 御指摘感謝
183 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 15:45:18 ] 重複順列の中で各要素を必ず最低一つは含むものを生成するコードって効率よく書けます? 下のように書いてみたけど、全重複順列を生成して後でチェックするのはいまいちな感じ。 class Array def each_perm(k) if k == 1 each{|x| yield [x]} else each do |x| each_perm(k-1) do |y| yield [x]+y end end end end end k = 5; ary = [1,2,3] ary.each_perm(k) do |x| p x if x.uniq.size == ary.size end
184 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 16:15:20 ] ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/26519 irb> a = Array.new irb> power(3, 5){|x| a.push([1,2,3].values_at(*x))} irb> p a.size 243 3 個の異なった要素から重複を許して 5 個取り出す重複順列の総数は 3Π5 つまり 3^5 で 243
185 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 16:54:13 ] >>184 レスどうも。values_atって初めて見たかも。 やりたかったのは、各要素を最低一つを含むっていうので [1,2,3]つから5つ取り出した順列だと [1,1,1,2,3],[1,1,1,3,2],[1,1,2,1,3],,, という感じのものでした。うーん、閃きそうで閃かない。
186 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 17:03:57 ] 重複順列を全て生成してから不適なの弾くのがやっぱ素直なんじゃね?
187 名前:デフォルトの名無しさん [2008/01/23(水) 17:51:04 ] >>177-178 そういえばファイルの保護ってファイル名に対してはかからないんだよね。 つまり、データをファイル名に使うことで・・壊れやすくなる。 ファイルサイズを0にするやつは、データを盗まれないようにする方法としては使えるね。 一旦デコードしないとコピーができないから。 企業のページでは >次世代Web基盤技術 とか言ってるけど、なんでWebなんだろ。 データを取り扱うときに通常のファイル形式にしないといけないはずだが。 >独自のプログラムとデータ構造により、圧倒的なコストパフォーマンスを実現 ・・・ ああ、コストパフォーマンスについてはそうかも。 DBMSを使うとそれにライセンス料を払う必要があるが、OS標準の機能なら追加料金がかからない。 ・・・ フリーのDB使えばいいけど、遅いって話もなくもないし。
188 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 18:56:40 ] スレ違いを理解できない低脳は去ね
189 名前:デフォルトの名無しさん [2008/01/23(水) 21:07:53 ] おい リファレンスマニュアル検索できなくなってるんだけど www.ruby-lang.org/ja/man/html/index.html
190 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 21:18:24 ] マニュアル本体をCGIやめて静的HTMLにしたって聞いたからその関係なんだろう
191 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 21:31:23 ] Ruby、かっこわるい
192 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 21:32:38 ] 検索できないって終わってるなw つかプログラミング言語の公式サイトが検索アプリもまともに作れないとか
193 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 21:34:22 ] e? オヒサルで検索してる奴なんてこの世に存在するの?
194 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 21:40:20 ] ローカルで検索すればいいのにね。
195 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 21:40:58 ] Namazuとか使えば簡単にインデックス作れそうだけどな。 俺が暇になったときにまだ検索できないようなら作ってみよ
196 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 21:45:15 ] トップページには検索機能があるが、Radiantで管理してる部分だけの 対応みたいだな。 リファレンスはやっつけで静的HTML化したからカバーしてない(つーか 忘れてるだろ、おそらく)んだろうな。
197 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 22:35:23 ] VisualuRubyって今だに開発続いてるの? RADっぽいお手軽開発環境探してるんだけどやっぱしないかなぁ?
198 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:11:49 ] Ruby使いって低脳多いんだな いちいち全PCにマニュアルインスコしてられっかよwwwwww
199 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:21:11 ] ActiveRubyのアイコンが気に入らないので XP風の普通のRubyファイル用のアイコンを探しています。 Perl用とかC用とかも有ればベストなのですが、 オーソドックスな普通のアイコンはありませんか?
200 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:22:42 ] 何がどうオーソドックスなんだ…
201 名前:デフォルトの名無しさん [2008/01/23(水) 23:29:42 ] site:ruby-lang.org オプションをつけてGoogle検索すればいいだけじゃね?
202 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:46:33 ] Ruby Iconで検索するとそこそこのが見つかる
203 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 10:48:55 ] ftpを試みていますが、うまくいきません。 require 'net/ftp' ftp = Net::FTP::open("qwerty.com",'user','****') puts ftp.status # OK puts ftp.nlst # NG ftp.close 以上のコードで status は実行するのですが nlst でエラーになります。 御意見いただけませんでしょうか。
204 名前:デフォルトの名無しさん mailto:NLISTが動かない鯖に一票sage [2008/01/24(木) 11:05:00 ] ただエラーって言われてもねえ
205 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 11:27:56 ] >>204 オーソドックスなFTPで ls と手入力するとファイルリストを見られるのですが、Rubyでは以下のエラーになります。 c:/ruby/lib/ruby/1.8/net/ftp.rb:241:in `getresp': 425 Failed to establish connec tion. (Net::FTPTempError) from c:/ruby/lib/ruby/1.8/net/ftp.rb:264:in `sendcmd' from c:/ruby/lib/ruby/1.8/monitor.rb:242:in `synchronize' from c:/ruby/lib/ruby/1.8/net/ftp.rb:262:in `sendcmd' from c:/ruby/lib/ruby/1.8/net/ftp.rb:336:in `transfercmd' from c:/ruby/lib/ruby/1.8/net/ftp.rb:421:in `retrlines' from c:/ruby/lib/ruby/1.8/monitor.rb:242:in `synchronize' from c:/ruby/lib/ruby/1.8/net/ftp.rb:419:in `retrlines' from c:/ruby/lib/ruby/1.8/net/ftp.rb:609:in `nlst' from ftp_up$.rb:5 dir も同様です。
206 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 11:30:29 ] NATの内側にいてパッシブモードでないとか?
207 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 11:39:57 ] FTPのエラーコードがわかれば瞬殺だな Rubyの出す例外はきちんと書こうぜ >>206 んだなす ftp.passive=trueしたあとにコマンド実行させれば動くはず
208 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 13:36:59 ] >>206 ,207 passive=true にしてみましたがダメでした。 以下はstatus表示後のエラー表示です。 c:/ruby/lib/ruby/1.8/net/ftp.rb:159:in `initialize': 接続済みの呼び出し先が一定 の時間を過ぎても正しく応答しなかったため、接続できませんでした。または接続済みの ホストが応答しなかったため、確立された接続は失敗しました。 - connect(2) (Errno:: ETIMEDOUT) from c:/ruby/lib/ruby/1.8/net/ftp.rb:159:in `open' from c:/ruby/lib/ruby/1.8/net/ftp.rb:159:in `open_socket' from c:/ruby/lib/ruby/1.8/net/ftp.rb:317:in `transfercmd' from c:/ruby/lib/ruby/1.8/net/ftp.rb:421:in `retrlines' from c:/ruby/lib/ruby/1.8/monitor.rb:242:in `synchronize' from c:/ruby/lib/ruby/1.8/net/ftp.rb:419:in `retrlines' from c:/ruby/lib/ruby/1.8/net/ftp.rb:609:in `nlst' from ftp_up$.rb:9 exec で ftp 呼んで実行手順をファイルで渡すことにします。 御指導ありがとうございました。
209 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 20:58:18 ] ASCII-8BIT ってなんですか?
210 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:10:30 ] >>209 このスレではまだしばらくは縁のない言葉です。
211 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 23:24:09 ] これから正規表現を書き溜めていく気マソマソ どうせなら鬼車に乗りたいので 早く1.9系安定してくだされぇ〜! を言い訳に作業をサボる自分・・・ヨワッ
212 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 01:49:10 ] すみませんが、質問です。 open パス名 do |file| 例外発生 end となった場合、オープンされたファイルは自動的にクローズされるのでしょうか?
213 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 02:14:22 ] ブロック付きopenは、 begin open 付いてきたブロックであれこれ作業 ensure close end という意味。ensureは例外になろうがなるまいが実行されるよ。
214 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 02:19:42 ] >>213 ありがとうございます。これで安心して作業ができます。
215 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 04:28:52 ] すみません。 C++で書かれたプログラムをrubyに移植しているのですが、参照で困りました。 RubyにはC++でいう参照はありますか。 それもクラスインスタンスではなくint等の組み込み型を参照として渡すことはできますか。
216 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 05:48:31 ] Rubyでは、数値とSymbol以外はすべて参照
217 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 05:53:26 ] 引数の参照渡しのことかも。 それは確かできなかったはず
218 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 06:12:03 ] >>215 >int等の組み込み型を参照として渡すことはできますか。 integerやfloatはできない。それ以外はすべて参照。 引数の参照渡しのことなら、できない。 まず具体的にどんなことがしたいかをプログラムで書いてみて。
219 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 06:29:21 ] >>218 簡単に説明しますと、オブジェクト内部で条件が真のときに引数の参照に値を代入し、boolで関数の結果を返す関数です。 bool Hoge::GetData(int condition,float &buffer) { if(condition == this->condition) { buffer = this->my_float_value; return true; } return false; }
220 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 07:05:58 ] >219 ・関数が失敗の場合は、例外を返せば良い ・Rubyのメソッドは複数の値を返せる(return a, b とすれば a, b = get_data() で受け取れる) ・bufferがオブジェクトの一部分なら、オブジェクト自体を渡す選択肢も ・配列として受け渡しすれば、擬似的な参照渡しになる お好きなのをどうぞ。
221 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 07:13:09 ] Ruby的には条件が真なら数値を、偽ならnilを返すようにするとかっこいいよね 戻り値がnilか否かをチェックすれば真偽をチェックしたことになるから
222 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 07:19:09 ] >>220-221 なるほど。 ありがとうございました。
223 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 07:26:32 ] すみません 同じ値のはずの2つのstringオブジェクトを==で比べると、なぜかfalseが返ってきます。 デバッグで見ても、2つのオブジェクトは全く同じ値でした。 どこか処理がまずくてスタックが壊れてるのでしょうか?
224 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 07:32:44 ] >223 JavaじゃなくてRubyの話なんだよな? p 変数 で見ても全く同じ?
225 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 07:39:37 ] はい。同じでした。 if str1 == str2 return; end p str1 + " " + str2 このようなコードなのですが、if文でリターンせずにpによって 「同じ文字 半角スペース 同じ文字」 が表示されました。
226 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 07:55:25 ] +で結合せずに、どういう出力が出るか試してみ p str1 p str2 p str1.class p str2.class あとRubyのバージョンを書いて
227 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 08:00:09 ] どうもすみません。 結果です。 あ あ String String と表示されました。 バージョンは1.8.1です。
228 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 08:20:26 ] 1.8.1で文字列もクラスも同じ……となると、原因が全く分からないな あとはコード全体を見ないことには
229 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 09:02:14 ] >>227 "あ" ではなく あ と表示されたのなら問題ないんじゃね
230 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 09:14:01 ] >>228 gonzo.dip.jp/~gonzo/cgi-bin/uploader2/upload.cgi?mode=dl&file=2078 アップしました。 見辛くて申し訳ありません。 なにかトンチンカンなことをやってバグを誘発しているのでしょうか(><)
231 名前:230 mailto:sage [2008/01/25(金) 09:14:26 ] DLkeyはrubycsvです。
232 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 09:15:08 ] >>221 0が真になるのは良いとして falseも真という意味ですよね nilだけが偽と
233 名前:230 mailto:sage [2008/01/25(金) 09:27:04 ] ソースに誤植がありました × check( i , GetElementString( i , "通常" , n ) ); ○ check( i , GetElementString( i , "通常ポーズ" , n ) );
234 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 09:35:34 ] …。全角空白混じってるしトップレベルのmainを実行してる場所がないぞ。 で、41行目の > if( elem_name.to_s == @definition_names[i].to_s ) で、同じデータのはずなのにfalseが返ることがあるという質問でいい?
235 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 09:37:50 ] >>234 すみません全角混じっていましたか。 質問は全くその通りです。
236 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 09:54:58 ] ifにelseを追加してみる。つまりfalseのときにelem_nameと@definition_names[i]を表示させてみる else print "[ #{elem_name} <=> #{@definition_names[i]}] " 結果を整形してみる [ 攻撃 <=> 通常ポーズ] [ 死亡 <=> 通常ポーズ] [ 死亡 <=> 攻撃] [ ダメージ <=> 通常ポーズ] [ ダメージ <=> 攻撃] [ ダメージ <=> 死亡] [ 勝利 <=> 通常ポーズ] [ 勝利 <=> 攻撃] [ 勝利 <=> 死亡] [ 勝利 <=> ダメージ] [ 瀕死 <=> 通常ポーズ] [ 瀕死 <=> 攻撃] [ 瀕死 <=> 死亡] [ 瀕死 <=> ダメージ] [ 瀕死 <=> 勝利] [ 攻撃 <=> 通常ポーズ] [ 死亡 <=> 通常ポーズ] [ 死亡 <=> 攻撃] [ ダメージ <=> 通常ポーズ] [ ダメージ <=> 攻撃] [ ダメージ <=> 死亡] [ 勝利 <=> 通常ポーズ] [ 勝利 <=> 攻撃] [ 勝利 <=> 死亡] [ 勝利 <=> ダメージ] [ 瀕死 <=> 通常ポーズ] [ 瀕死 <=> 攻撃] [ 瀕死 <=> 死亡] [ 瀕死 <=> ダメージ] [ 瀕死 <=> 勝利] [ 攻撃 <=> 通常ポーズ] [ 死亡 <=> 通常ポーズ] [ 死亡 <=> 攻撃] [ ダメージ <=> 通常ポーズ] [ ダメージ <=> 攻撃] [ ダメージ <=> 死亡] [ 勝利 <=> 通常ポーズ] [ 勝利 <=> 攻撃] [ 勝利 <=> 死亡] [ 勝利 <=> ダメージ] [ 瀕死 <=> 通常ポーズ] [ 瀕死 <=> 攻撃] [ 瀕死 <=> 死亡] [ 瀕死 <=> ダメージ] [ 瀕死 <=> 勝利] [ 攻撃 <=> 通常ポーズ] [ 死亡 <=> 通常ポーズ] [ 死亡 <=> 攻撃] [ ダメージ <=> 通常ポーズ] [ ダメージ <=> 攻撃] [ ダメージ <=> 死亡] [ 勝利 <=> 通常ポーズ] [ 勝利 <=> 攻撃] [ 勝利 <=> 死亡] [ 勝利 <=> ダメージ] [ 瀕死 <=> 通常ポーズ] [ 瀕死 <=> 攻撃] [ 瀕死 <=> 死亡] [ 瀕死 <=> ダメージ] [ 瀕死 <=> 勝利] ということで同じ文字はないよ。csvデータはUTF-8なんだけどスクリプト本体のほうはUTF-8なの? アップロードのときにミスったんだと思ってたけど、もしこのままならスクリプトはShiftJISになってるよ
237 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 10:38:17 ] >>236 お手数おかけしました。 ということは、コードの問題ではなくて、環境固有の問題なのでしょうか。 実は実行環境はRPGツクールVXなのです。 こちらの環境ではelseで付け加えて値を見ると、同じ文字の組み合わせがありました。 ツクール内部で呼び出しているので、通常の環境とは異なっているのかもしれませんね。
238 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 12:33:45 ] すみませんが、Cygwin上でRubyをお使いの方に質問です。 ディレクトリからファイル名のリストを取得し、WIN32OLE 経由で MS-Word の COMコンポーネントに一つずつ渡そうとしています。 Wordに与えるファイル名は絶対パスである必要があるようなので、個々のファ イル名にFile.expand_path を適用してから渡しています。 ところが、File.expand_path の戻り値が /cygdrive/c/... や、/home/ユーザ 名 になってしまうのです。もちろん Word が必要としているのは C:\ で始ま るパスなので、Wordがファイルを開くことができません。 File.expand_path(ファイル名).gsub(%r!^/cygdrive/c/!, "C:/").gsub(%r!/home/!, "/C:/cygwin") とやれば何とかなりますが、どうも不恰好です。もっと良い方法はないでしょ うか?
239 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 12:43:09 ] cygpath -d /cygdrive/c
240 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 12:44:27 ] $ cygpath -w '/cygdrive/c/program files' c:\program files $ cygpath -d '/cygdrive/c/program files' c:\PROGRA~1
241 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 12:50:17 ] >>238 まあcygwinのシステムに乗っかってる以上根本的にはどうしようもない WindowsアプリケーションとしてのRuby使え C:\Documents and Settings\俺\デスクトップ\新しいフォルダ>ruby -e 'puts File.expand_path("csvloader.txt")' C:/Documents and Settings/俺/デスクトップ/新しいフォルダ/csvloader.txt
242 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 12:54:58 ] >>232 >0が真になるのは良いとして >falseも真という意味ですよね >nilだけが偽と うんにゃ。nilとfalseが偽と見なされる。 成功したときは数値を返し、失敗したときはnilを返す。falseは返さない。 これでいいじゃん?
243 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 12:57:12 ] 正規表現目当てでRubyに挑戦中 str1=str2 でなく str1=str2.dup と書かなきゃコピーにならんとこは わたしのような初心者にはドエライ罠だったんですけど・・・
244 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 13:09:18 ] >>243 「明示的な複製」が自力で必要な場面は意外と少ないんだ データを返す組み込みクラスのメソッドの多くは結果を複製して返す 知らないとどこかで絶対に一度は嵌るが、知ってしまうと意外とそうでもない >>242 falseは(Rubyには型としては無いけど)booleanで使うといいよね nilはそれ以外の「空」とか「無し」とか 「失敗」をfalseにするかnilにするかは若干迷うけど、「成功」がtrueという値になると思えるならfalseだな if文ではfalseもnilもelseに行くから深く考えなくてもいいし
245 名前:238 mailto:sage [2008/01/25(金) 13:13:23 ] 皆さん、ありがとうございます。 >>239->>240 wdoc = wordOLEObject.Documents.open `cygpath -w #{File.expand_path 'Readme'}` こんな感じでしょうか? これだと、今度は逆にCygwin以外のWindows環境では動きません。環境の判別法 ははないものでしょうか? 欲を言えば、分岐なしでどちらの環境でも動くならありがたいのですが。 >>241 Cygwin版のRubyと共存させるわけですか...。それも一つの手だなあ。 ActiveScriptRuby 使いたいし。 ただ、環境が安定するかどうかが不安です。
246 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 14:03:12 ] >>245 環境の判別はRUBY_PLATFORMで。 分岐なしで動くようにするのは無理。 強いて言えば238で自分で書いてるのが分岐なしで動くようにする方法になるのかもしれんが。
247 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 14:05:07 ] > 分岐なしで どこをどう作っても内部的には分岐使ってる 気にすんな
248 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 14:16:30 ] 最初は抵抗あるけど、サブルーチンだと割り切ってメソッドに切り分ければ あ〜ら不思議あら不思議
249 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 14:19:51 ] あえてCygwin版を使うメリットって何? Cygwin環境で閉じた使い方をする分にはパス周りのトラブルが少ないのから?
250 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 14:22:48 ] 昔は全部Cygwinでないとどうにもならなかったんだよ 5年くらい前の話
251 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 15:09:02 ] >>250 つまり、今はそうでもないってこと?
252 名前:238 mailto:sage [2008/01/25(金) 15:09:49 ] みなさん、再度ありがとうございます。 結局、通常のWindows版のRubyを入れて、絶対パスで呼び出すようにしました。 "/cygdrive/c/program Files/ruby-1.8/bin/ruby.exe" ... これで問題なく、Cygwinからでも呼び出せました。 ただ厳密には、CygwinのコンソールでEmacs22を起動し、その中のeshellでで す。Emacsの通常のshellモードでは、表示が少しおかしいようです。 >>246 > 分岐なしで動くようにするのは無理。 そうですか...。それは仕方ありませんね。 >>249 > あえてCygwin版を使うメリットって何? 単純に、Cygwin環境でデフォルトで呼び出されるのがそれだからです。 またPythonが、通常のWindows版はCygwin環境と相性が良くなかったのです。 (対話コンソールをCygwin環境で呼び出すと、画面に何も出ない) だからRubyもWindows版を使うのは避けていました。 ちなみにこのやり取りも Cygwin Emacs22のNavi2chでやっております。 Linux機もあるのですが、Cygwinにはいろいろ便利なことがあるので。