【RoR】Rubyについて Part 41【CPAN vs RubyGems】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/08/11(水) 05:48:14仲良く使ってね。
Ruby Home Page
http://www.ruby-lang.org/ja/
= 前スレ
Rubyについて Part 40
http://hibari.2ch.net/test/read.cgi/tech/1272248179/
過去スレ・関連スレは >>2-
0153デフォルトの名無しさん
2010/09/11(土) 09:15:51escape は parse 可能を保証しないんじゃなかったっけ
0154デフォルトの名無しさん
2010/09/11(土) 19:01:25URI.escapeはURIとして使えない文字をescapeするだけで、
その結果が正しいURIになるとは限らない。
議論の結果、使い物にならないって事で廃止予定です。
0155デフォルトの名無しさん
2010/09/11(土) 19:44:370156デフォルトの名無しさん
2010/09/11(土) 19:47:43URI 全体を特定の正規表現でチェックして一気に置換とか本当はありえないんだよね
Addressable::URI の方向性は正しい
0157デフォルトの名無しさん
2010/09/12(日) 16:05:26Rails3系ではrubyは1.9系を使おうと思ってるよ。
0158デフォルトの名無しさん
2010/09/12(日) 18:05:120159デフォルトの名無しさん
2010/09/12(日) 18:14:41で
0160デフォルトの名無しさん
2010/09/12(日) 18:24:210161デフォルトの名無しさん
2010/09/12(日) 18:28:41あんなに可愛かったのに、GCの対象になったらしい。
0162デフォルトの名無しさん
2010/09/12(日) 18:38:540163デフォルトの名無しさん
2010/09/12(日) 18:41:14本の献辞に memory of Bram and Sweetie π とあって(兎の名前だと知られるまで)
読者はなんだそりゃと思ったという。
0164デフォルトの名無しさん
2010/09/12(日) 22:09:22どんなわかりやすい嘘だよw
0165デフォルトの名無しさん
2010/09/13(月) 08:46:48おまいがしっかりと参照してやってれば…
0166デフォルトの名無しさん
2010/09/13(月) 09:13:33GC は関係ないんじゃないかなぁ
0167デフォルトの名無しさん
2010/09/13(月) 09:27:240168デフォルトの名無しさん
2010/09/13(月) 09:35:05ゆきひろ でいいんじゃね?
0169デフォルトの名無しさん
2010/09/13(月) 09:40:10フイタw
0170デフォルトの名無しさん
2010/09/13(月) 10:29:090171デフォルトの名無しさん
2010/09/13(月) 15:09:32モルモン
0172デフォルトの名無しさん
2010/09/13(月) 16:29:35force_encoding("binary") とかのほうが数万倍マシだ
っていうか外人産ライブラリからこれを取り除いて欲しいんだけど外人さんをどう説得すればいいですか
0173デフォルトの名無しさん
2010/09/13(月) 16:34:40String#valid_encoding? が false になる例を1ダースくらい持っていく
全てに対して force_encoding(Encoding::ASCII_8BIT) して、全てが true になることを示す
valid_encoding? という字面は強力なのでたいていあちらさんが折れるぞ
ほんとは encoding が valid かどうかを示してるわけじゃないんだけど、
そんな知識があるならそもそも force_encoding('UTF-8') なんてしないから大丈夫バレない
0174デフォルトの名無しさん
2010/09/13(月) 18:35:07もちろんいろいろ検討した結果なんだろうけど
0175デフォルトの名無しさん
2010/09/13(月) 18:41:08UTF-8に変換しないといけなくなるじゃないか
0176デフォルトの名無しさん
2010/09/13(月) 19:05:48当時は EUC がベストと思われてたから
0177デフォルトの名無しさん
2010/09/13(月) 20:12:52ゆとり世代の自分からしたらUTF-8しかありえないんですけど^^;
0178デフォルトの名無しさん
2010/09/13(月) 20:30:39EUCがベストって1.9のデフォルトはUS-ASCIIじゃんかよ
0179デフォルトの名無しさん
2010/09/13(月) 20:37:46>>176は>>174がRuby1.8の話をしてると思ってる
0180デフォルトの名無しさん
2010/09/13(月) 20:50:02RubyはLatin-1だろ
0181デフォルトの名無しさん
2010/09/13(月) 23:07:24それやるとWindowsとの親和性が上がっちゃうから
0182デフォルトの名無しさん
2010/09/14(火) 04:01:090183デフォルトの名無しさん
2010/09/14(火) 08:01:26http://www.atmarkit.co.jp/news/201009/13/spell.html
0184デフォルトの名無しさん
2010/09/14(火) 08:44:50まつもとゆきひろ氏は、こう書いている。
「Rubyは君を信頼する。Rubyは君を分別のあるプログラマとして扱う。
Rubyはメタプログラミングのような強力な力を与える。
ただし、大いなる力には、大いなる責任が伴うことを忘れてはいけない」
コアクラスも書き換え可能である「オープンクラス」というのが典型だが、Rubyではプログラマ自身が自覚している限り、
破れないルールは少ない。例えば、クラス定義の中にある「private」以降に定義があるメソッドはレシーバを省略した形
でなければ呼び出せないため、事実上クラスメソッドのように振る舞う。しかし、動的ディスパッチと呼ばれる引数に
メソッド名を指定する方法だと、当該クラスと関係のないコンテクストからですら呼び出せてしまう。これは一見危険な
ことだが、このことによってクラスを動的に拡張して、一群のメソッドを追加するような“魔法”が、Rubyでは1行で実現
できてしまう。Perrotta氏は、「Rubyの世界では、private()は命令ではなく提案だと考えられている。これはRubyの
哲学に不可欠なものだ」と書籍の中で説明している。
結局、メタプログラミングとは強力で危険な、特殊なプログラミング技法なのか? どこで使い、どこで使うべきでないのか?
同書のエピローグには、禅問答のような短いやりとりが掲載されている。山の頂で瞑想している師匠に向かって、
「メタプログラミングの真髄とは何ですか」と、ひと通り学び終わった弟子が問うシーンがある。Perrotta氏は、
師匠にこう言わせている。
「メタプログラミングというものなど存在しない。すべてはただのプログラミングじゃ。去るがいい。静かに瞑想させておくれ」
どう見ても宗教です本当にあり(ry
0185デフォルトの名無しさん
2010/09/14(火) 08:59:260186デフォルトの名無しさん
2010/09/14(火) 09:02:41別にRubyに限った話ではない
例えばこの辺りの思想は、おそらくC譲りのもの
それを宗教と呼ぶのは自由だが
0187デフォルトの名無しさん
2010/09/14(火) 09:11:52C→自分の足を撃て
Pascal→コンパイラはあなたに自分の足を撃たせない
みたいな。
0188デフォルトの名無しさん
2010/09/14(火) 09:12:57「メタプログラミングの真髄とは何ですか」と、ひと通り学び終わった弟子が問うシーンがある。Perrotta氏は、
師匠にこう言わせている。
「メタプログラミングというものなど存在しない。すべてはただのプログラミングじゃ。去るがいい。静かに瞑想させておくれ」
の部分だろ問題あるのは
0189デフォルトの名無しさん
2010/09/14(火) 09:14:360190デフォルトの名無しさん
2010/09/14(火) 09:21:480191デフォルトの名無しさん
2010/09/14(火) 10:11:55セッションを聞いていたけど、Perrotta 氏の話は
面白くてとても謙虚な方だったよ。
Perrotta 氏は Java の Hibernate のコミッタでもあるそうだが、
本人も「元はJavaプログラマだったけど ruby をやりはじめて、
はじめは(railsなどの、rubyに見られる)黒魔術がなにがなんだか
わからなかった」と言っていた。
冒頭はそのときの体験談なんかもあったよ。
英語もすごい聞きやすかったな
# というかセッション後の質疑応答時間で、聴衆の外人から
# 「あなた(Perrotta)は アメリカ人ではないのに、
# どうしてそんなに英語が上手いの?」と聞かれていて
# 会場が沸いていた
0192デフォルトの名無しさん
2010/09/14(火) 11:01:52外人ハッカーのZenへの憧れを知らないと見える。
0193デフォルトの名無しさん
2010/09/14(火) 11:08:300194デフォルトの名無しさん
2010/09/14(火) 11:08:520195デフォルトの名無しさん
2010/09/14(火) 11:15:000196デフォルトの名無しさん
2010/09/14(火) 11:39:250197デフォルトの名無しさん
2010/09/14(火) 12:32:22公式のドキュメントかリファレンスマニュアルにいれとけよっていうくらいのまとめだな
http://media.pragprog.com/titles/ppmetr/spells.pdf
Google Doc経由 http://docs.google.com/viewer?url=http://media.pragprog.com/titles/ppmetr/spells.pdf
0198デフォルトの名無しさん
2010/09/16(木) 15:06:06システムが使ってる Ruby はどうしてる?
まさか自分の .rvm ディレクトリにシンボリックリンク張ってるわけじゃないよね?
0199デフォルトの名無しさん
2010/09/17(金) 05:25:15システム用の Ruby は別途固定のものをインストールする
システム用に rvm をインストールしてもいい
人数分プラス 1 の Ruby がインストールされる状態
ディスクの無駄遣いだな
0200デフォルトの名無しさん
2010/09/17(金) 08:25:47unless File.exist?
File.open('filename', 'w') {|f| f.write(data) }
end
だと、File.exists? と File.open とがアトミックに行われるわけではないので、
File.exist? と Filee.open とのあいだで別プロセスによりファイルが作成される
可能性があります。
これを避けるにはどうしたらいいでしょうか。
0201デフォルトの名無しさん
2010/09/17(金) 08:39:570202デフォルトの名無しさん
2010/09/17(金) 08:44:42ファイルの存在チェックからファイル作成までの間に誰かが割り込む可能性はない
ただし管理者自身のアクセスまたは管理者の許したプロセスやユーザを除く
0203デフォルトの名無しさん
2010/09/17(金) 08:49:32ttp://doc.okkez.net/187/view/library/fcntl
Fcntl::O_EXCL | Fcntl::O_CREAT を指定して IO.sysopen すればできるんじゃないかな?
0204デフォルトの名無しさん
2010/09/17(金) 08:56:56| を処理する間に割り込んで欲しくないのだろ
0205デフォルトの名無しさん
2010/09/17(金) 09:08:520206デフォルトの名無しさん
2010/09/17(金) 09:43:55節子それメソッドやない、open に渡すフラグや
0207デフォルトの名無しさん
2010/09/18(土) 11:21:330208デフォルトの名無しさん
2010/09/18(土) 21:59:370209デフォルトの名無しさん
2010/09/18(土) 22:11:180210デフォルトの名無しさん
2010/09/18(土) 23:27:00実際、psychって(従来のsyckと比べて)どの辺が素晴らしいんだ?
日本語の情報が少なくてよくわからない
0211デフォルトの名無しさん
2010/09/18(土) 23:57:30* (今のところ)メンテナ(ひげの山男)にアクセスが取れる。
(syckの_whyは失踪した)
* 対応しているYAMLの仕様が新しいらしい。
* BOM付きUTF8が読めた。(自分で作ることは決してないんだけど)
パフォーマンスの差は知らぬ。
0212デフォルトの名無しさん
2010/09/20(月) 01:12:160213デフォルトの名無しさん
2010/09/22(水) 11:31:23…なるか
…なるよな
迂闊に既存のデータをテストデータとして添付するのはまずいか
困ったー
0214デフォルトの名無しさん
2010/09/22(水) 20:26:030215デフォルトの名無しさん
2010/09/22(水) 23:58:49Javaとかが君を信頼してないから、そう書いたんじゃないか?
確かにK&Rにも同じようなこと書いてあった気がするけどな。
0216デフォルトの名無しさん
2010/09/23(木) 11:06:45そのための方法を教えてください。たぶんマクロかなんかあるんだとおもうけど。
0217デフォルトの名無しさん
2010/09/23(木) 11:12:13できませんか?
0218デフォルトの名無しさん
2010/09/23(木) 11:20:14バージョン自体は
RUBY_VERSION "1.9.2"
RUBY_VERSION_MAJOR 1
RUBY_VERSION_MINOR 9
RUBY_VERSION_TEENY 1
あたり。
1.9.1と1.9.2はABI互換性があるので、TEENY は 1 のまま。
俺の場合はエンコーディング処理の有無の違いだったので、HAVE_RUBY_ENCODING_H
を使った。
0219217
2010/09/23(木) 11:21:560220デフォルトの名無しさん
2010/09/23(木) 12:06:18RUBY_VERSIONという定数はなさそうだけど。
include/ruby-1.9.1/ruby/version.h あたりに載ってるかと思ったけどなかった。
>>218
えーとこれはRubyスクリプトでの話?
今は拡張モジュールの話なので、Cレベルでのやり方を教えて下さい。
#if RUBY_MINOR_VERSION == 9
#endif
とかできないっすかね
0221デフォルトの名無しさん
2010/09/23(木) 12:19:41>HAVE_RUBY_ENCODING_Hを使った。
よく読んでなかったけど、そんな方法があるのか。
調べたら HAVE_RUBY_VM というのがあったから、これを使うことにした。
ありがとう。
ところでruby1.9のvmに、拡張ライブラリからアクセスしたいんだけど、
vm_core.h とかを読み込んだり、そこに載っている関数を呼び出したりするには
どうしたらいいんでしょうか。
もちろん未公開関数だとか仕様が変更される可能性があるといったリスクは
承知の上でのはなしです。
0223218
2010/09/23(木) 12:32:44version.h は include の外にあるので、公開APIではなかった。
0224デフォルトの名無しさん
2010/09/23(木) 23:18:06File.expand_path 必須?
0225デフォルトの名無しさん
2010/09/23(木) 23:19:13すごく不思議
0226デフォルトの名無しさん
2010/09/23(木) 23:31:25640KBあればじゅうぶんですよ
0227デフォルトの名無しさん
2010/09/24(金) 06:56:340228デフォルトの名無しさん
2010/09/24(金) 11:03:36Ruby 1.9.2から、requireでカレントディレクトリを見に行かなくなってるけど
それと関係ある?
0229デフォルトの名無しさん
2010/09/24(金) 12:24:02>ところでruby1.9のvmに、拡張ライブラリからアクセスしたいんだけど、
>vm_core.h とかを読み込んだり、そこに載っている関数を呼び出したりするには
>どうしたらいいんでしょうか。
まさに自分も同じことで悩んでいるんだけど、どうしようもなさそう。
そもそもruby/vm.hってほとんど空でなにも定義されてないから、
外部から触るのは無理っぽい。
0230デフォルトの名無しさん
2010/09/24(金) 13:20:23公開したくないのかなぁ。
RubyVMとかRubyVM::InstructionSequenceとかのC実装は公開APIだと
思っていいんだろうか。
0231デフォルトの名無しさん
2010/09/27(月) 09:06:39将来の実装変更の自由を奪っちゃうからというのもあるだろうし、
まだ拡張ライブラリでどんなAPIが要求されるかの知見が十分に得られてないからってのもあるだろうね
ユースケースを添えてこんなC APIが欲しいってのを出せば、
既存のは将来の互換性、ないものは追加を考えてくれるかもなので、ruby-devに投げるといいよ
0232デフォルトの名無しさん
2010/09/27(月) 16:56:08後は AOT コンパイラさえ揃えば不満はないっす
0233デフォルトの名無しさん
2010/09/28(火) 03:39:41VMにどんなAPIが必要かなんて、VM作ったことのない人にはわかるかよ。
とりあえずVM内部のデータにアクセスできればそれでいい。
それよりRubyのバグ登録って、どこでどういう手順でやればいいの?
当然どっかに説明が書いてあるんだろうけど、どこを見ればいいんだ?
0234デフォルトの名無しさん
2010/09/28(火) 08:20:24Redmineに行ったらあとは見りゃわかるだろう……
0235デフォルトの名無しさん
2010/09/28(火) 10:00:10いやわからんだろ
0236デフォルトの名無しさん
2010/09/28(火) 14:00:58メーリングリストに投げたら登録してくれるんじゃないの
ただし、脆弱性がらみのバグ見つけちゃった!!ってときははpublicなところに登録したらいかんけど
Ruby - SecurityFixProcess - Ruby Issue Tracking System
http://redmine.ruby-lang.org/wiki/ruby/SecurityFixProcess
0237デフォルトの名無しさん
2010/09/28(火) 14:27:140238デフォルトの名無しさん
2010/09/29(水) 00:04:44なるほど、まったくわからん
0239デフォルトの名無しさん
2010/09/29(水) 00:10:10修正コードも合わせて貼るとなおよし。
そうすればもっと報告しやすい環境を整えてくれるよw
0240デフォルトの名無しさん
2010/09/29(水) 00:16:39> 修正コードも合わせて貼るとなおよし
2chに書かれたコードは取り込めません
0241デフォルトの名無しさん
2010/09/29(水) 01:19:05対応してくれることもあるぐらいの話
0242デフォルトの名無しさん
2010/09/29(水) 01:40:33「たまに有益なレスが着いているのを聞いている」ので、
駄レスはいらないけど有益なレスが着いていたら ML に転送してほしい、と言っていたぞ。
0243デフォルトの名無しさん
2010/09/29(水) 01:57:220244デフォルトの名無しさん
2010/09/29(水) 02:11:16のかな。
0245デフォルトの名無しさん
2010/09/29(水) 02:29:39いやもっと低いって
1000に1つもあればいいほう
0246デフォルトの名無しさん
2010/09/29(水) 02:30:08なおのことややこしくなる
そんなコードを取り込むわけには、さすがにいかないのだろう
0247デフォルトの名無しさん
2010/09/29(水) 05:48:42レスじゃなくてスレだから万に一つって事な
0248デフォルトの名無しさん
2010/09/29(水) 06:31:142ch自体がライセンスだからな
メジャーなソフトウェアライセンスと一見競合しそうな以上、スレにコードを貼るのはそもそも危険
0249デフォルトの名無しさん
2010/09/29(水) 07:10:28ああ
素で読み間違えてた
あなたのおっしゃるとおりです
0250デフォルトの名無しさん
2010/09/29(水) 10:38:10・当然無保証
・著作権者はなし(誰でも流用してよい)
・バグもあるので、嘘を嘘と見抜けないと・・・・
これじゃあ PDS と同じかな
0251デフォルトの名無しさん
2010/09/29(水) 12:38:08うっかり他人の著作権侵害してるかもしれんぞ
0252デフォルトの名無しさん
2010/09/29(水) 13:18:24引用元の著作権まで譲渡するわけにはいかんだろ
■ このスレッドは過去ログ倉庫に格納されています