↓ということなので,本スレに投げてみます
586 :デフォルトの名無しさん :sage :2006/09/05(火) 10:34:49
環境:ruby 1.8.4 (2005-12-24) [i386-mswin32]
WEBrick使ってるんですけど、特定のホストで例外が起きます。
調べてみると、ホスト名の認識がまずいようで、
URI::parse('(p)
http://shacho_soft.at.infoseek.co.jp/diablo_calc/calc.html')
上記のホストで、ホスト名にアンダースコアが含まれてるために host ではなくて registry が設定されてしまい
InvalidURIErro例外が発生します。WEBrick的には HTTPStatus::BadRequest です。
uri/common.rb の↓の部分でアンダースコアが含まれてないから、上手くいかないんだと思うんですけど
DOMLABEL = "(?:[#{ALNUM}](?:[-#{ALNUM}]*[#{ALNUM}])?)"
TOPLABEL = "(?:[#{ALPHA}](?:[-#{ALNUM}]*[#{ALNUM}])?)"
HOSTNAME = "(?:#{DOMLABEL}\\.)*#{TOPLABEL}\\.?"
こういうのって、きっちりRFCにしたがってるんだと思いますが
どうにかして上手く回避する方法はないでしょうか?
たぶん、アンダースコアを含めれば上手くいくんでしょうけど、
この手の問題って、過去に問題になってる気がするので、賢い方法があったら教えてください
588 :デフォルトの名無しさん :sage :2006/09/05(火) 12:58:45
>>586 俺もいつも困ってるんだが、なんかうまい方法ないかねえ。
589 :デフォルトの名無しさん :sage :2006/09/05(火) 13:10:33
>>588 本スレにぶん投げるといいことあるかも
死ね
こっちは慈善事業でやってんじゃねえんだ
Matz is nice, so we are nice.
>>618 WebrickはRFCに沿ったURIしか対応していないのでムリ
URIってアンダースコアだめなんか!?
だめだお。ハイフン使おう。
URIじゃなくてホスト名じゃなかったっけ?
625 :
デフォルトの名無しさん:2006/09/18(月) 21:59:27
すみません、初心者です。
ほんとに初歩の部分やってます。
WINDOWSのメモ帳にプログラムを記述して、
ruby.rbってファイル名で保存すると、
ruby.rb.txtっていう、テキスト型ファイルになってしまうんですが・・・
どうしたらよいのでしょうか?
死ね
こっちは慈善事業でやってんじゃねえんだ
627 :
デフォルトの名無しさん:2006/09/18(月) 22:01:51
>>626 じゃあどんな事業でなさってるんですか?
メモ帳捨てろ
629 :
デフォルトの名無しさん:2006/09/18(月) 22:04:56
>>625 Windowsの基礎知識。
Windowsは初期設定で
「登録されているファイルの拡張子は表示しない」
という設定がオンになってるのでオフにしる
どこで設定を変えるかはWindowsのバージョン込みでググれ
>>629 口答えするな。
口から糞を垂れる前と後にsirと言え!
632 :
デフォルトの名無しさん:2006/09/18(月) 22:07:22
解りにくいか。追記:例えばWin2000なら
「Windows2000 登録されているファイルの拡張子は表示しない」な
634 :
デフォルトの名無しさん:2006/09/18(月) 22:09:34
Windowsユーザーは軽視されてるよね
次のバージョンからJAVAで開発してくれない?
>636
JRubyが〜あるじゃないか〜♪
>>618 require 'uri.rb'
module URI
def self.parse(uri)
scheme, userinfo, host, port,
registry, path, opaque, query, fragment = self.split(uri)
if scheme && @@schemes.include?(scheme.upcase)
@@schemes[scheme.upcase].new(scheme, userinfo, [host, registry].join(), port,
nil, path, opaque, query,
fragment)
else
Generic.new(scheme, userinfo, [host, registry].join(), port,
nil, path, opaque, query,
fragment)
end
end
end
u = URI::parse('
http://shacho_soft.at.infoseek.co.jp/diablo_calc/calc.html')
puts u.host
これでいいのかは知らん。
デスヨネ。
やはり定数を弄るしかないか。
↓はどう?定数の優先度で無理矢理回避してるんだけど…
require 'uri'
module URI
ABS_URI = Regexp.new(REGEXP::ABS_URI.to_s.gsub(/-a-zA-Z\\d/, '-_a-zA-Z\d'))
REL_URI = Regexp.new(REGEXP::REL_URI.to_s.gsub(/-a-zA-Z\\d/, '-_a-zA-Z\d'))
end
u = URI::parse('
http://shacho_soft.at.infoseek.co.jp/diablo_calc/calc.html')
puts u.host
そして二ヵ月越しでakrを無視するmatz
643 :
デフォルトの名無しさん:2006/09/19(火) 09:18:31
今から帰るからそしたらガウスなんとかで円周率やってみる。
2ch のクラスライブラリでおすすめってありますか?
646 :
641:2006/09/19(火) 18:18:39
>>644 http://www.forkosh.com/mimetex.html とりあえず↑のページを表示して、Bad URLにならないよう直したのが↓のコード
require 'uri'
module URI
DOMLABEL = "(?:[#{PATTERN::ALNUM}](?:[-_#{PATTERN::ALNUM}]*[#{PATTERN::ALNUM}])?)"
PCHAR = "(?:[#{PATTERN::UNRESERVED}:@&=+$,\\[\\]\\{\\}`]|#{PATTERN::ESCAPED})"
URIC = "(?:[#{PATTERN::UNRESERVED}#{PATTERN::RESERVED}\\^\\{\\}\\\\\\]|#{PATTERN::ESCAPED})"
X_ABS_URI = PATTERN::X_ABS_URI.gsub(PATTERN::DOMLABEL, DOMLABEL).gsub(PATTERN::URIC, URIC).gsub(PATTERN::PCHAR, PCHAR)
X_REL_URI = PATTERN::X_REL_URI.gsub(PATTERN::DOMLABEL, DOMLABEL).gsub(PATTERN::URIC, URIC).gsub(PATTERN::PCHAR, PCHAR)
ABS_URI = Regexp.new('^' + X_ABS_URI + '$', Regexp::EXTENDED, 'N')
REL_URI = Regexp.new('^' + X_REL_URI + '$', Regexp::EXTENDED, 'N')
end
DOMLABEL はホスト名の部分。オリジナルに _ を追加
PCHAR はパス名の部分。MSNの画像で Bad URL になるんで []{}` を追加
URIC はクエリーの部分。mimetexで Bad URL になるんで ^{}\ を追加
ほかにエラーになる文字があったら自分で追加してくれ
それと3連続 gsub がカッコ悪いんで、スマートな書き方あったら誰かよろしく
っつか、
>>618で元の質問したの俺なんだよなぁ
コピペ張られて自分で答えるという、一人やらないかウホッな気分
647 :
644:2006/09/19(火) 18:50:32
648 :
デフォルトの名無しさん:2006/09/19(火) 19:23:28
標準ライブラリの問題点も自分ですぐに直せるのがちょっと良いところかも
逆にいえば、自分で直さないといけないのが辛いところ