[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/09 17:32 / Filesize : 211 KB / Number-of Response : 864
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Ruby 初心者スレッド Part 21



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」を開こうとしたら無理だったんだけど






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<211KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef