1 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 01:07:21 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 【Ruby1.9 は不安定な開発版であり初心者には全く向きません】 【最新安定版の Ruby1.8.7 の使用をお勧めします】 ※1.8.7 は1.8 と 1.9 の橋渡しをするためのリリースです。 1.9 の新機能の一部が利用可能なので初学者にお勧めです。 ※ただし十分安定しているとは言えないので プロダクション環境での利用にはお勧めしません。 関連スレやURLは>>2-8 あたりを見てください。Ruby on Railsの質問は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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
175 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 04:16:24 ] >>173 よくわからんのは、 取得ってどこまで来たのを取得データと捉えたいんだ?
176 名前:171 mailto:sage [2008/08/16(土) 09:21:25 ] >>174 readpartialですね 試してみます >>175 どういう答え方が正しいのか分からないのですが ソケットまで来ていれば取得済と考えています
177 名前:171 mailto:sage [2008/08/16(土) 22:02:54 ] readpartialで解決できました ありがとうございます
178 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 15:32:40 ] www.aoky.net/articles/why_poignant_guide_to_ruby/index.html
179 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 16:41:49 ] ああそうか夏休みか
180 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 02:30:09 ] el4rは動作が怪しい
181 名前:デフォルトの名無しさん [2008/08/18(月) 11:56:16 ] Rubyで使われてるフォントって何?欲しいんだけど
182 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 11:59:12 ] ……よーわからんが、このロゴに使われてる字体のことか? ttp://www.ruby-lang.org/images/logo.gif
183 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 12:11:12 ] ああ、すまんそういうことじゃなくて www.ruby-lang.org/ja/ ここの「Rubyとは」ってとこの横のエディタ画像のフォント
184 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 12:16:12 ] 画像じゃない気がするんだが… #code div { display: block; font-family: "Lucida Console", Monaco, monospace; padding-left: 24px; padding-right: 24px; } って書いてあるんで、君のパソコンに入ってるLucida ConsoleかMonacoかmonospace あるいはmonospaceファミリーに設定されてるフォントで勝手に表示されてる
185 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 12:18:01 ] 欲しいも何も既に持ってるってパターンだな
186 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 12:23:00 ] >>184 画像じゃなかったのか…ありがとう
187 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 12:34:18 ] irb> say = "I love Ruby" irb> say['love'] = "*love*" irb> puts say.upcase I *LOVE* RUBY なんぞこれ
188 名前:デフォルトの名無しさん [2008/08/18(月) 12:36:25 ] >>184 あ、でもこれ日本語対応してないのか…くぅ、使いたかった
189 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 12:43:37 ] Hpricotって1.9に対応する予定ってあるんですか?
190 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 12:43:39 ] xyzzyとかはASCIIと日本語を別々のフォントに指定できるぞ xyzzy使わざるを得なくなるのが難点か もしWindowsXP以降(2000でもフォントによってはできる)を使ってるならFontLink機能を使う手もある 「どう考えても英字フォントを指定してるだけなのになぜか日本語も表示できる謎機能」を自力で利用する
191 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 12:49:12 ] >>190 kwsk
192 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 13:06:35 ] 1.9は ・誰でもgem含めて完全に1.9のライブラリだけを使って動作するようにインストールできるよガイド があれば対応が増えると思う 現状の1.9は「1.9に乗り換える」という覚悟がないとそもそもインストールしにくい make install するとgemごとユーザーディレクトリにインストールされるような親切セットが欲しい >>191 ぐぐってレジストリ書き換えろ
193 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 13:14:14 ] gem開発者はRubyに関してちょっと詳しいだけであって、 その他のことに関しては素人に毛が生えた程度だと思ったほうがいいよな 自分用Rubyと際新安定版RubyとRuby1.9の3つくらいは維持しないといかんわけで それに対するフォローはあっても面白いかもしれん
194 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 13:56:07 ] PerlでいうことろのTemplate ToolkitやFillInFormみたいなモジュールはありますか?
195 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 14:58:05 ] uri = "example.com?aaa=123&bbb=456&ccc=789 " ここからquery param形式でURIをパースしてくれるものってあるでしょうか? 今は正規表現でパースしてますが面倒で…
196 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 16:03:24 ] query param 形式ってなんじゃらほい irb> require 'cgi' irb> require 'uri' irb> uri = URI.parse('example.com?aaa=123&bbb=456&ccc=789 ') irb> p CGI.parse(uri.query) {"aaa"=>["123"], "bbb"=>["456"], "ccc"=>["789"]} こんなん?
197 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 18:06:11 ] >>194 あるはずだが、見つからないなあ フォーム入りHTMLを自動生成して送る ↓ ユーザーがフォームを埋めて送り返してくる ↓ 解析したが内容が不足または不当だった ↓ ユーザーの入力内容がフォームに記入された状態のHTMLを再度生成して再送
198 名前:195 mailto:sage [2008/08/18(月) 20:48:03 ] >>196 まさにその通りです 自分も書いた後に「query param形式」って変な表現だと思ってました ありがとうございます!
199 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 00:24:58 ] JRubyを使ってSwingを叩いていてはまったのでどなたかお助けください。 Javaのクラス(具体的にはjavax.swing.event.MouseInputAdapter)を基底としてRubyのクラスを作りました。 そこで初期値を与えてnewしようとしたところ、 base.rb:24:in `__jcreate!': wrong # of arguments for constructor (NameError) とのエラーが出てしまいます。 初期値を与えなければ正常に動作するため、Javaクラスを基底とするRubyクラスでは 初期化に工夫がいるのかと思い、調べてみたのですが、言及を発見することができませんでした。 どなたか回避方法、或いは他の原因に心当たりの方がいらっしゃいましたら教えてください。
200 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 00:34:00 ] >>199 コンストラクタの先頭でsuper()を呼べばいいんじゃない?
201 名前:199 mailto:sage [2008/08/19(火) 00:55:17 ] >>200 あうあ。どうもありがとうございます。 書き込み前にsuperを試したときにもsuperを括弧無しで呼んだ時には引数が引き継がれる、 というのを知らなかったので、二重にはまっていたみたいです。 明示的にsuper()を呼ばなければ引数引継ぎで自動的にsuperが呼ばれるのかしらん。 色々と調べてみます。どうもありがとうございました。
202 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 18:41:40 ] ruby script/server -p 80 このコマンドを実行し、ポート80を使っていたapacheを停止させたところlocalhost/test でも接続できるようになりました。 これはapacheの代わりにmongrelが動いているということでしょうか。 初歩的な質問ですいません
203 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 19:28:29 ] Railsに関する質問はRailsスレで
204 名前:202 mailto:sage [2008/08/20(水) 01:20:53 ] ありがとうございます
205 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 17:58:01 ] rubyって (2..0).to_a ってしたらなんで[2,1,0]って配列を作ってくれないの? そもそもRubyのRangeクラスって昇順しか認められてないの?
206 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 18:42:12 ] 失敬な 降順だろうが昇順だろうがきちんと存在しマニュアル通りに動作するぞ 2.succ は 3 で 0 より大きいから each も即終了する …まあ、Range#first > Range#end なときは Range#each の中で逆方向の配列作ってくれてもいいじゃんという気は 全くしないわけではない
207 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 21:04:20 ] ..はsuccを使うので、2.step(0, -1).to_aで我慢してくれ。
208 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 21:05:55 ] それくらいならreverseする
209 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 00:38:55 ] p (2..0).to_a # => [] p (0..2).to_a # => [0, 1, 2] たしかに気分悪いなこれ
210 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 00:48:15 ] >>206 の言う通り以外の何物でもない > 2.succ は 3 で 0 より大きいから each も即終了 succ を辿る実装を変えるとは思えないから、each を書き換えるしかないな
211 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 02:44:59 ] そういえば1.9のString#succはなかなか変態らしいな。 次の意味のあるバイト列までいかに素早く進むか、みたいな。
212 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 11:06:44 ] akr氏のあれか
213 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 18:30:19 ] これか cvs.m17n.org/~akr/pub/string-succ-rejectkaigi2008.pdf
214 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 19:54:18 ] initialize 内部で望ましくない動作をしている外部クラスがあります。 特定の引数 param2 のハッシュから特定のキー 'danger' に関連するペアを、 param2.delete('danger') のように事前削除すれば問題ありません。 クラスを利用するときの引数でいちいち削除すればいいんですが、 できれば同クラス名のクラス定義をスクリプト開始時にこっそり上書きすることで楽に済ませたいです。 最初 class Hoge alias _initialize initialize def initialize(param1, param2) param2.delete('danger') _initialize end end と書いたんですが、これだと self が書き換わりません。いい方法はありますか?
215 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 22:31:12 ] どこのself
216 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 01:19:03 ] Net::HTTP を利用してるモジュールがあるんですが、中で body = StringIO.new http.request_get(uri.path){|res| res.read_body {|part| size += part.size body.write(part) } } としてる部分がありました(request_getはrequest_postのもあります) どうせ最後には全部メモリに入るわけだし、ふつーに body = request_get(uri.path).body size = body.size でいいと思うんですが、わざわざ細かく読み込んでるのは何か理由があるんでしょうか?
217 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 08:57:37 ] >>216 マルチスレッドのためじゃね? 最後は書いた人に聞かないとわかんないから、この質問はメーリングリストで聞いてみるのがいいだろうね。 書いた人はだれかしらんけど、たぶんメーリングリストは読んでいると思うよ。
218 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 11:19:47 ] Ruby1.8.6 と Ruby1.8.7 をうまく共存させる方法はない? > lib/ruby/1.8/i686-linux/rbconfig.rb:7: ruby lib version (1.8.7) doesn't match executable version (1.8.6) (RuntimeError)
219 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 11:31:28 ] >>216 Net::HTTP の中でも同じような書き方をしてるから、それ自体は net/http.rb の改変コピペだと思う で、>>215 の言うように、net/http.rb での採用理由はたぶんマルチスレッドというかマルチタスクというかそんなのの対策だと思われる たとえば、サーバからのファイルを HDD 上のファイルと同じノリで最初から最後までずーっとひと息に待ってると、 でかいファイルの場合はそれだけでタスクというかジョブがいっぱいになってしまう 一昔前のWindowsのフリーソフト(や現在のピーとかピーとかピーとか)に稀にあった、 ファイルをダウンロード中にビジーになって他に何もできなくなるヘボいフリーソフトのダウンローダーの動作を考えてもらうといい
220 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 11:34:11 ] >>219 の 215 は >>217 の間違い ぶっちゃけ net/http にお任せしてればわざわざ自前でそんなとこまで意識して書く必要はないんだけど、 繊細動作させるダウンロードクラスでも作ってるのかな?
221 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 11:38:48 ] >>218 既にあった lib/ruby/1.8/ とかが新しくインストールした 1.8 系列で上書きされてるっぽい lib/ruby/1.8.7/ って明示的に作れないんだっけ? どっちにしても両方再インストールだな
222 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 11:57:48 ] >>221 configure --with-ruby-version=full
223 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 12:02:17 ] >>218 漏れは ./configure --prefix=/usr/local/ruby_1_8_6 とかやっとります。
224 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 17:32:27 ] 現存するクラスを完全に上書きしたいです require 'uri' URI = nil require 'my-uri' とすると希望どおりの動作にはなりますが、 > warning: already initialized constant URI という真っ当な警告が出てしまいます
225 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 17:40:00 ] 質問なんだぜ 1. Array を継承する 2. @data = Array.new してから、@data をいじるArrayと同名のメソッドを完全自作 3. @data = Array.new してから、 @data に対してメソッドを委譲 細かいレベルの一般的実行速度で言えば 1 が一番速くて 3 が一番もったりだよな? 1 は微妙にキケンで 2 はめんどくさいから 3 をやる、という思考の流れでいいんだよね?
226 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 18:38:19 ] >>224 require 'uri' class Object remove_const :URI end require 'my-uri'
227 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 21:25:18 ] 誰だこんな220行の建て増し温泉旅館メソッド書いたの
228 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 21:33:53 ] rubygemsには時々すごい変なソースが転がってる まあインプットとアウトプットが妥当なら使うけどな
229 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 01:02:49 ] かなり間抜け気味の質問なんですが、net::SMTPでのメール送信て、 同一ドメイン内のメアドへの送信のみでしょうか。 メールフォームCGIでそのような動作になっていて、 外部のメアドに送信しようとするときに限りエラーになります。 エラーメッセージもでているのですが、なんとなく上記部分がひっかかったので、 詳細なしで質問させていただきましたm(_ _)m
230 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 01:36:31 ] 外部にも送れるよ。
231 名前:229 mailto:sage [2008/08/23(土) 01:48:11 ] >>230 ありがとうございます!すっきりしました。 エラーを見てチェックしなおしてみます。
232 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 23:50:39 ] Keep-Alive と COOKIE が使える Web アクセス用のクラスで何か良いのあるかな? httpclient は何でもかんでも RuntimeError になって不便だった。
233 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 02:19:53 ] gem の WWW::Mechanize が一応両方とも使える gem isntall mechanize で Hpricot と一緒に入るはず
234 名前:232 mailto:sage [2008/08/24(日) 11:58:23 ] >>233 WWW::Mechanize って Keep-Alive 使えたのか…知らなかった。ありがと。 ただ、割と大きいファイルを落とすつもりなので >>216 みたいにブロックが渡せるようなのが欲しかったんだけど、 WWW::Mechanize はパっと見無理っぽいですね、残念。
235 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 12:09:27 ] どこをどう「探した」のか気になる ブロックなんてただのブロックなのに
236 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 12:24:12 ] いまさらだけど、>>216 のコードでなんで「全部メモリに入る」んだ? 読み込んだ部分ごとに出力に書き出してるように見えるけど
237 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 12:27:50 ] >>220 の通りで、Net::HTTPを利用している限りはソケットからfragment単位で読むからダウンロード負荷自体は問題にならない 「これまでのresponseをメモリ内で破棄しつつ最新のみIOに出力する」というダウンローダー芸はNet::HTTPではできないと思う 100MBのファイルを取得したら100MBのファイルはresponseの取得履歴としてメモリ内にどーしても一瞬保持されるはず
238 名前:232 mailto:sage [2008/08/24(日) 13:36:57 ] >>237 まぢで? だとすると、ブロック渡しする意味は進捗状況の確認ができるだけってこと? ちょっと net/http.rb の中見てみた限りでは、BufferedIO にも、ReadAdapter にも 読み込んだデータを保存しているような挙動は確認できなかった。 保存されるとしたら、どこに保存されてるんだろう。 実際、read_body にブロック渡した場合と渡さない場合で HTTPResponse#body の挙動が変わるようだ http = Net::HTTP.start("www.example.com", 80) p http.request_get("/index.html") {|req| req.read_body{} }.body # >> #<Net::ReadAdapter> http = Net::HTTP.start("www.example.com", 80) p http.request_get("/index.html") {|req| req.read_body }.body # >> "<html><head>...."
239 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 17:58:12 ] YAMLの Anchor, Aliase でノードを参照する時に、 別の.ymlファイルのノードを参照するのって どうすれば良いんでしょうか?
240 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 21:23:42 ] >>239 できない。 やるとしたら s = '' s << File.read('file1.yml') s << File.read('file2.yml') p YAML.load(s) とするしかない。
241 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 21:24:42 ] >>236 >読み込んだ部分ごとに出力に書き出してるように見えるけど 部分的に書き出しても、書き出し先がStringIOオブジェクトだから 結局は全部メモリに入る。
242 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 21:27:30 ] >>224 >現存するクラスを完全に上書きしたいです Rubyは既存クラスを自由に書き換え可能だから、「完全に上書き」する必要はないと思うけどなあ。 もしよければ、既存クラスを書き換えるのではなく完全に上書きしたい理由を語ってみてください。 なにか新しい発見があるかも。
243 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 22:58:02 ] module A def self.hoge puts 'Hoge' end end class B include A end これで A.hoge が B.hoge という形に mix-in されないのはどうしようもない? 継承だったらクラスメソッドも継承されるみたいなんだけど
244 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 23:30:15 ] >>243 こゆことがしたい? module A def hoge puts 'Hoge' end end class B extend A end
245 名前:243 mailto:sage [2008/08/24(日) 23:35:22 ] >>244 なるほど、そういうのもあるんですね。 ただ、A の中にインスタンスメソッドもたくさんあるんですが、何とかなりませんか?
246 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 00:30:26 ] 委譲の考え方の基本がなんとなくわかった気がする
247 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 00:40:24 ] >>245 ええっと、どういう風に書きたいってこと?
248 名前:243 mailto:sage [2008/08/25(月) 01:14:50 ] module A def self.hoge # クラスメソッド puts 'Hoge' end def fuga # インスタンスメソッド self.class.hoge # self がどのクラスのインスタンスかによって変えたい end end class B include A # B は hoge を再定義するかもしれないけど、しなくてもいいようにしたい end b = B.new b.fuga # B で再定義されていれば B.hoge、そうでなければ A.hoge が使われるようにしたい # もしくは、 class C include A hoge # こういうふうにclassのコンテキストで呼び出したり・・・ end だいたいこんな感じになってくれるとうれしいです。
249 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 04:31:05 ] こんちは はじめてRubyでスクリプト書いてみました 下記コードでうまいこと画像を保存できたのですが、なぜかアニメーションGIFがぶっ壊れてます RubyでアニメーションGIFを扱うことは不可能なんでしょうか もし可能であればライブラリや書き方など教えてほしーです require 'open-uri' def main # ニコニコ動画の画像があるパス url = 'www.nicovideo.jp/img/tpl/head/icon/nico/ ' # 画像のパスを全部いれておくための配列 image_url_list = [] # ローカルの保存先のパス savepath = "D:/Data/IMG/" # URLの生成 0.upto(10) do |i| image_url_list << url + "%03d" % i + ".gif" puts image_url_list end # 画像を保存 image_url_list.each do |image_url| filename = File.basename(image_url) File.open(savepath + filename, "w"){|output| open(image_url){|data| output.write(data.read) } puts("#{filename} has saved.") } end end main
250 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 05:21:27 ] "wb"
251 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 05:30:51 ] うお すげぇ 朝っぱらからありがとうございます バイナリモードっていうのがあったんですね あざーっす!
252 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 07:53:27 ] >>243 こんな話? irb(main):001:0> module M irb(main):002:1> def self.included(m) irb(main):003:2> m.module_eval do irb(main):004:3* def self.foo; p :foo; end irb(main):005:3> end irb(main):006:2> end irb(main):007:1> irb(main):008:1* def bar; p :bar; end irb(main):009:1> end => nil irb(main):010:0> class C irb(main):011:1> include M irb(main):012:1> end => C irb(main):013:0> C.foo :foo => nil irb(main):014:0> C.bar NoMethodError: undefined method `bar' for C:Class from (irb):14 from :0 irb(main):015:0> C.new.bar :bar => nil irb(main):016:0> class C irb(main):017:1> foo irb(main):018:1> end :foo => nil
253 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 08:16:45 ] Rubyって日本語のファイル名を開けるの?
254 名前:243 mailto:sage [2008/08/25(月) 09:11:30 ] >>252 おー!include されるごとにメソッドを定義するわけですか。 それでいけそうです。ありがとうございます。
255 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 09:50:20 ] open-uriでurlを開いたら自動的にbodyも読まれてテンポラリファイルができてしまいます headを読んで色々処理してからbodyを読むようにしたいんですけど そういうのってnet/httpとか使って自作しないといけないんでしょうか
256 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 20:35:17 ] def config_file=(path) h = YAML.load_file(path) @username ||= h[:user]||h[:username]||h[:id]||h['user']||h['username']||h['id'] @password ||= h[:pass]||h[:password]||h['pass']||h['password'] end 使うキーくらいマニュアルに書いておけよ俺 >>255 はい HEAD対応open-uriの改造をスクリプトの初めで上書きするモンキーパッチを誰かが作ってたと思ったが忘れた とここまで書いてHTTPヘッダのことかいなと思う まあどっちもたいして変わらんな open-uriはFile.openが思想のベースなのでファイル読み込みは避けられないよ
257 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 20:41:55 ] 「モンキーパッチ」ってそういう意味だったんだね。
258 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 20:52:07 ] >>257 Rubyではね 本来はゲリラパッチで、Rubyのようなシステム的に許されたなあなあのクラス上書きとはちょっと違う 代わりにduck punchingという言葉を使おうと言ってる人が一部にいるけど 本気でRailsの一部の人なので全く広まる気配はない
259 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 20:56:28 ] 変数に結果を代入したいんだけど、三項演算子と1行if文ってどっちがいいかな?
260 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 21:01:33 ] s = (cond ? 'yes' : 'no') s = if cond then 'yes' else 'no' end s = if cond then 'yes' else 'no' end if cond then s = 'yes' else s = 'no' end まあ好きにせえ 3番目は微妙に嫌われてるということは知っておくといい 「Rubyのif構造は値を返す!!」とか興奮した初心者が多用するが冷静に読むと面倒だ
261 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 21:48:19 ] >>259 あるJavaの有名人が『三項演算子は難しい機能だからif文を使いなさい』といってた。 だからif文のほうがいいよ。 だって有名人のいうことだからね!
262 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 21:55:44 ] よく以下のような文を見るのですが、何のためにしているのでしょうか? if __FILE__ == $0
263 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 22:02:40 ] >>262 そのif文の中はCで言うmainにあたるってとこかな そこより上で定義したclassのテスト的なコード書いて おいて、requireされた場合には実行させないための おまじない
264 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 22:06:41 ] >>263 なるほど、そういうことか d
265 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 22:07:34 ] >>264 >>263 の補足というか、googleで、そのまんま "__FILE__ == $0" で検索して トップに出てくるページを見ればいいと思うんだ。 初心者スレでググれ!って言うのは無し?
266 名前:デフォルトの名無しさん [2008/08/25(月) 23:28:23 ] >>262-263 それは知らなかった。 勉強になった。 機会をくれてありがとう。
267 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:29:10 ] if 文の返り値を変数に代入するのは性に会わない 似たような感覚として、 ・do 〜 end ブロック ・map と inject を除く {} ブロック の返り値を利用するのはなんかピンと来ない
268 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:39:09 ] rubyで日本語のファイル名使えるかどうか 速く回答しやがれ!
269 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:41:04 ] >>268 使ってみてから質問しろ。 あほか
270 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:49:51 ] まあ問題が起きてからその状況を質問してもらったほうがええな
271 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:53:35 ] 実際にやってみて日本語名が使えない、という話なのか? OS環境とか文字コードとか、状況を具体的に説明してごらん。
272 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:57:32 ] Perlで日本語のファイル名のファイルをopenできないから rubyだったら開発者がジャップだからネイティブで対応してるかと 思って質問してるんです!!!
273 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:59:40 ] dllからデータを読み込むプログラムを書こうとしているのですが、 dl/structモジュールで構造体を入れ子にできないのですかねぇ? そこの部分だけcharの配列で埋めて後で置き換えるしかないのでしょうか・・・
274 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 01:17:20 ] >>272 できる。 でもRubyよりも先に日本語の使い方と質問の仕方を勉強することをおすすめする。
275 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 07:20:54 ] 「♥.txt」を開こうとしたら無理だったんだけど