Wikiの件、情報感謝
でも人が少ないんじゃね・・・・・・
編集する人が少ないという点で言えば、旧Wikiリファレンスもどっこいどっこいではある
ただまぁ、やっぱり参入障壁が高くなってしまったのは一つのデメリットだよな
バージョン間の違いについての正確さを求めるための、やむを得ない制限なのだろうとは思うが
またすぐそうやって釣ろうとする
なに釣られてんの?
質問だよ
kconv と iconv と uconv (とNKF)はどれをメインで使っていけばいいの?
1.8.6 使いだけど 1.9 系列も視野に入れてアドバイスくれくれ
>>11 1.9だとStringにencodeというメソッドが追加されるのでどれも使わなくていい。
1.9.4 くらいでは何も require しなくてもよくなってる
といいなあ
外国の人は怒りそうだけど
>>11 文字コードの自動認識が必要ないならuconv
自動認識が欲しいならkconv(もしくはnkf)
uconvは標準添付されてないのが糞
iconvでいーじゃん。
iconvは引数の順番がいつまでたっても覚えられない
require 'iconv' したら String#toutf8 とかも定義されればいいと思うのは俺だけ?
ダックタイピングwのRubyなんだろ?なんでoriginのインターフェイスにこだわるかな
>>18 エンコーディングメソッドいくつ定義する気だよ。
とりあえず、あるだけでいいんじゃね?
どうせラッパのラッパなんだから、それほどの手間じゃ無かろうが
KconvとのAPI互換性だけでも有意義だとは思うが
>>18 そういった意味では、NKFは糞だな。今日日Unixerでもnkfを日常的に使ってる
人間なんて、少なくとも若手ではそんなにいないんじゃね?
require 'iconv'で String#toeuc tosjis toutf8などが定義されるとして、
元コードは何と想定すればいいんだろうか。$KCODE?
>>22 Kconvではそうなの?Kconv::AUTOの自動検出ってそういう意味だったのか?
それでは統一しづらいな
そこでKconv.guessですよ。(本末転倒)
>>19 そこはmethod_missing経由で動的に定義するということで。
iconvは不正な文字列だと例外起こすから結構面倒。
意外に(?)nkfが使いやすい。
nkf/kconvは使いやすいけど、バージョンによってUTF-8に対応してないのが致命的
Rubyのiconvでも//IGNOREとか//TRANSLIT使えるんじゃないの?
初めてのRubyがなんか売り切れてた件について
デカい誤植で回収かなんかですか?
完全解説が完全説解になってたくらいなら上からシール貼っちゃえばわかりませんって
下手に大きな文字だと脳がスルーして却って間違いに気づけないんだよな
初めてのRubyはなんかわりと人気らしいぞ
ちょっと前に初心者向けRuby本出した人涙目
普通に言語仕様が解説されてるだけなんだが、まとめ方がすごくうまいんだわ。
他の人が書いたら退屈になってもおかしくないのになぜか面白い。
コンパクトなので気軽に手に取れて、知りたい情報が簡単に探せる。
同じところを何度も読み返したくなってしまうほど文章の質が高い。
まあ俺がおおざっぱにRubyを知ってる初級者だからよけい面白く感じたという
のはあるかもしれないが、完成度は高いと思うよ。
32 :
デフォルトの名無しさん:2008/07/10(木) 19:44:28
会員の高野光弘とやらが、非常識な言動をしていることについて、
日本Rubyの会はどう考えているのでしょうか?
定数の探索順とかまでちゃんと書いてある?
>>32 このスレに書き込んでいるあなたが非常識な行動を繰り返していることについて、
このスレ住人として遺憾に思っているのですが、あなたはどう考えていますか。
どんなことを言ったわけ?
>>32だけじゃきになるじゃまいか
etags使い物にならないことに気がついた.
ポリモーフィズムで同じメソッド名が複数あるとき,
タグジャンプ先のクラスを選べない.
Emacs で implementers_of みたいな検索できるツールはないのかな
etagsがだめならgtagsがあるじゃない、と思ったがあれはRubyに対応してたっけ
>>39 対応してない
> support C, C++, Yacc, Java and PHP4.
前々から思ってたけど、EmacsってRubyプログラミング環境としてはあまりよくないよね
言語としての盛り上がりの割には便利環境ができてないのは確かだ
というような話を3年くらい前にもしたような気がする
お前ら本当はRubyでたいしたこと書いてないんだろ、という気がせんでもない
自分でRuby用のクロスプラットフォームなエディタを作りたい! と常々思っているんだが
コード解析して色付けるのが面倒で、今でも机上の空論どまり
>>42 みんな普通のエディタで書いてるんだよきっと
NetBeans とか使いやすい?
インストールしようとしてみればわかる
普通のエディタか。
VimとかEmacsとかとか
Winだと何がいいんだろー、サクラエディタとか?
>>46 サクラは、デフォルトでRubyダメだった気が・・・自分で足すのめんどくさいし・・・
まあ大人しくVimで良いと思うんだけどねw
最近は、Notepad++ってのがいい感じ。日本語気にしないのならだけどw
でもまあRubyなんてRailsくらいしか無いんだし、Windowsでサポートされないのも当然と言えば当然なのかもね
環境よりライブラリの方が重要な気がするし・・・
誰もxyzzy使ってないのか・・・ruby-modeもあるよ
標準で入ってないだろ>ruby-mode
標準で入ってるのを探す方が難しいんじゃないか
Emacsにも入ってないし。
色付けとインデントしてくれるだけならGeditがやってくれる。
sakuraはカーソル移動が糞になってからエディタとして見捨てた
[ruby-dev:35409]
こりゃひどいな。誰だよ学生の藤森くんって。
そろそろ ruby 1.8.8?
エディタが継続をサポート?
明示的に保存して終了しなくても自動保存して再開してくれるステキ機能です
>>53 それより早く1.9.1を出してください><
予告を信じるとすると、今年のクリスマスだからまだ半年先か・・・長いな
>>57 1.9を使う人間ならsvn-snapshotを取得しなさい><
1.9はイイヨイイヨー
>>56 なるほど。
Rubyで継続というと、ついついcallcc/Continuationクラスのことだと
思ってしまうのさ。
あ、適当に喋ったのに納得した
>>58 exerbやRuby/SDLをruby1.9で使いたいんです><
exerbはともかくRuby/SDLは使えるじゃん。何か問題あったっけ?
63 :
61:2008/07/12(土) 18:22:56
今ようやく気づいたんだが
exerbの最新版(4.7.0)には、開発版コアとしてruby1.9.0関連のファイルが含まれているようなので
なんとかしてコンパイルできればruby1.9.0でも使えるかもしれない
>>62 そうなのか!? と思ってruby1.9.0-2で試してみたら
Segmentation Faultで落ちた(´;ω;`)ウッ…
>>44 ちょっと触ってみた感じでは悪くなさそう
Eclipseより導入楽だし、軽くて使いやすいと感じた
俺自身はあんまりIDE使わないから、細かな評価は出来ないが
>>63 Ruby/SDL普通に動いたが。まさかgemやら1.8のバイナリ使ったとかじゃないだろうな
1.9でextconfしてもダメなら、どんなスクリプト走らせたか見せてくれ
66 :
63:2008/07/12(土) 20:59:27
>>65 ということは、俺の環境に何か問題があるのだろうか……
走らせたスクリプトは、Ruby/SDL付属のサンプルコード(どれを走らせても同じエラー)
環境は
Windows XP Home
ruby 1.9.0 (2008-06-20 revision 17482) [i386-mswin32]
Ruby/SDL 2.0.1a(win32版)
exerb未使用(ruby.exeから直接実行)
ちなみにRuby/SDL側の推奨するバージョンはruby1.8.6ですが、ruby1.8.7で動くのは確認しました
バイナリ版なのでextconf.rbは未使用
だからよ、そのRuby/SDLは1.8用のバイナリだ
1.9は1.9用のバイナリを自分でコンパイルしなきゃならんの
68 :
66:2008/07/12(土) 22:08:21
>>67 すまない、ようやく理解した。情報ありがとう
とりあえずコンパイルできるかどうか挑戦してみる。無理そうならruby1.9.1対応のバイナリ待つ
ねえねえ、どうしてやってからレスしないの?
あなた個人を責めてるわけではないから教えてよ
70 :
66:2008/07/12(土) 22:31:50
>>69 Ruby/SDLの配布ファイル名は「rubysdl-2.0.1a-mswin32-1.8.6-p114.zip」となっている
このファイル名からすると、ruby1.8.6-p114を使わないと正常に動かない?
↓
しかし実際には、1.8.6でも1.8.7でも問題なく動く
↓
ということは、ここに書いてあるバージョンは参考程度のもので
同じmswin32版であればrubyのバージョンにかかわらず同じバイナリが使えるはず!
↓
なら動作しない原因は、今のPC環境にある?
という思い込みのため
NetBeansを「軽い」とか言う奴を信用するのはバカ
>>72 IDEとしては相対的に軽いって話
誰もテキストエディタと比較してない
いまどきIDEが重いとか言ってるやつはPC買い換えろよw
それはそれで正しいが、IDEが重いというそもそもが異常ではある
IDEってなんであんなに重いんだ
大雑把に言って、テキストエディタに色々な便利機能を追加しただけのアプリケーションのはずなのに
非常に賢い動作をする動的補完が便利さと引き換えに重たい
…ということになっている
Emacsの略語展開の動作を知ってるとどうにもウソ臭いがな
あれを進化させてなんであんなに重たくなるんだよ
しかも各社のIDEが揃いも揃って全部動作重たいとか何か談合とかでもしてるんかオラ
起動が遅いのはJavaのせいなのでまああれはあれで
補完リストの自動ポップアップとか、「自動的」な機能を無効化するだけでかなり軽くなる
明示的に補完したい時は特定のキーを押す(Ctrl+space等)設定にしておくと良い
# 補完機能を無効化するんでなくて、自動補完機能を無効化する点に注意
Emacsの略語展開(笑い)
こんなしょぼいのと一緒にするなよ
断言してもいいが本質的には一緒だ
対象データと分岐判断がちょっと(ちょっと?)膨大だが
>断言してもいいが本質的には一緒だ
なんというRuby全否定・・・
メソッド名ぐらい覚えろよ・・・
でも、irb/compeletionで出来るぐらいの補完もruby-modeで出来ても
いいかもね。
>>80 >断言してもいいが本質的には一緒だ
>対象データと分岐判断がちょっと(ちょっと?)膨大だが
うんにゃ、全然違う。
Emacsのdabbrevは文字列のパターンマッチしているだけ。
EclipseやNetBeansの補完はコードを構文解析したりclassファイルを読み込んでやっている。
これがパターンマッチと同じわけがない。
Emacsは文字列を編集していて、IDEはコンパイラを内蔵して構文木を編集している。
何その面白機能
というかそういう解説はいったいどこに存在してるんだ?
cygwin 版 ruby なんですが。
fn = "c:/foo/bar/hoge.rb" のとき
File.exist?(fn) && File.directory?(File.dirname(fn)) が true で
load(fn) とか require(fn) は OK なのに、
$:.unshift(File.dirname(fn))
require('hoge')
が失敗するのは何かの嫌がらせですか?
cygwin なんか使うのが悪いですか?
きちんとCygwin形式のファイルパスで書け
だったら $0 や __FILE__ も Cygwin パスに変換して下さいよ。
あるいは最初から c:/xxx/script.rb 呼び出しをエラーにして下さいよ。
中途半端なのが一番サポートが面倒だ。
いやいやいやいや、Cygwin 使うような奴が "c:/foo/bar/hoge.rb" とかそもそも書くなよ
それは /cygdrive/c/foo/bar/hoge.rb だろ
そりゃ俺はそう書かねえよw
開発環境が Cygwin 前提なんよ。だがまあそれはいいんだ。
確認したかったのは、最近の Cygwin は c:/xxx 形式もそれなりに取り扱えるように
なってるっぽいけど、なんで Ruby の特定のケースだけそうじゃないのか、ってこと。
仕様ならそれでいいんだ。避ける手段はいくらでもあるし。
しつもーん
ブログとかあるいは何かプログラム公開サーバでスクリプト書くじゃないですか
begin
File.open(path){|f| f.read}
rescue Errno::ENOENT
raise "#{path} does not exist!"
end
という例外キャッチ&メッセージを実際のスクリプトで書くのはほとんど意味ないよね?
Errno::ENOENT の例外を読めばみんなわかるから普通はいらないよね?
>>92 そのファイルが何かにもよる
ほげ用ファイルが読み込めません例外というのを作って出したほうがわかりやすいこともあるだろう
が、ライブラリ使用者が引数で指定したファイルが存在しないのでそもそも読めませんというような場合は
組み込みのエラーを出すほうがたぶん親切だろうと思う
558 デフォルトの名無しさん [] Date:2008/07/17(木) 00:20:12 ID: Be:
>> 552
仕事でRuby使ってる俺から言わせるとPythonめちぇめちゃ速いですw
561 デフォルトの名無しさん [sage] Date:2008/07/17(木) 14:58:10 ID: Be:
558じゃないけど、Rubyはcsvパーサが遅いです
29万件の処理で
Ruby 45分
Python15秒でした
45分wwwwwwwwwwwwwwwwwwwwwwwwwww
そのせいで高速な非標準csvパーサがごろごろしているruby
標準を捨てれば無問題
うむ、有名な話だな
csv.rb は遅いぞ
どのくらい遅いかというと FasterCSV という恥ずかしい名前のライブラリがデファクトになるくらい
というか、Python の CSV パーサはあれ中身 Python じゃなくて C だから比較対象としては不適
Python がインストールされてる場合は Ruby から Python を呼ぶのが最速とかわけわからん事態に
もともと標準添付のCSVパーサは遅いし、PythonのはCで書かれてる
RubyでもLightCSV・CSVScanとかを使えばだいぶマシになるとの話
rubyのくそwebスクリプトで例外垂れ流してるやつあるけど、あれなんなの
iPhoneの設定ユーティリティがRailsらしいね
まじrailsのおかげで世界に広がるな>ruby
>>99 phpに比べれば数も少なくて可愛いもんだぜ
railsをdevelopmentモードで動かしてる企業サイトとか有ったなあ
実際、「標準添付のライブラリが遅い」という事実は、Pythonと比較して欠点だとは思う
これに限った話じゃないが、Rubyの標準添付ライブラリってなんかアンバランスだよな
「せっかく1.9で新しくなるんだからもっと便利で強力なの付けてくれよ」ってのがいろいろある
全体的に見ればとても充実しているライブラリ群なのに、妙なところで古いの使ってるというか
何でどんどん置換していかないんだろうか
まつもと氏が熱心じゃないから?
>>101 Rubyの糞ライブラリを知ってればそんなこと言わないで済んだのにな
Railsって嫌われてるのん?
>>107 わりと別物なので、混同する人は嫌がられるな
Rubyの性質をうまく使った成功例ではある・・・・・
CSVパーサもそうだし、インスコ時のRDocもそうだけど、
大量のデータに使われることが明らかなのに
なんで最初から速度を考えて作らないの? バカなの?
> 大量のデータに使われることが明らかなのに
どれくらい明らか?
どれくらい大量?
どれくらいの頻度で?
>>111 つか、インストールのときRDoc遅えとか感じないの?
94とか見てもなにも思わないの?
もし開発側の人間でそんなこと想像できないようじゃ正直終わってる
どうせ早すぎる最適化云々、とかいって何も手を打たねえんだろwww
csv.rbをたまに使うけど遅いと感じたことないなあ
もしcsvの処理で何分もかかるとしたらcsvなんかで管理しようとしてんのが
そもそもおかしいんで、俺ならsqlite使うわ
>>113 …CSVは可搬フォーマットであることが存在理由なの
誰が好き好んでテキストベースで行志向な単一ファイルにデータを保存したがるんだよ
>>111の返しを、実名で、本気で、やりかねないのがRubyの人達だからねぇ。
>>112 それを困ったもんだと思ってるなら、こんなとこでくだ巻いてないで、もうちょっと改善の見込みがある手段取れよ。
少なくとも、今まで改善されなかったってことは、それが問題だと思って行動したやつがいなかったってことだから。
何も自分でコード書けとは言わん。MLで問題提起するなり、
ttp://redmine.ruby-lang.org/ に登録するなりすればいい。
それでも動かなきゃ、その程度のコミュニティってことだろう。
118 :
デフォルトの名無しさん:2008/07/20(日) 03:54:41
pythonのはcだからなんて詭弁すぎて笑えんな。もしcが有効なら、rubyに最初からcで組み込んでおいて然るべきだろうな。うんざりするほどメソッドを多重に組み込むくせに地味なパーサはどうせ嫌がって誰もやらないというオチだろ。
>>118 誰かが作ったのを見て鼻で笑う準備なら、
既にコミュニティの全員が整えてるんですけどねw
Rubyのコア部分に関してはYARVとか順調に進んでるわけで、
添付ライブラリを便利そうだというだけで増やそうとするのが問題な気がするなあ。
標準に取り込むなら、C++ Boost みたいにきちんとした Formal Review のプロセスを
設けるとか… あるいは RAA や Gems を CPAN レベルまで育てるか…
>>118 Cでエクステンションを作るとCの問題を抱える
たとえば、PythonのCSVモジュールはUnicodeで書き込めないし、ヌル文字で問題を起こす
たかがスクリプト言語のモジュールのくせにバイナリで、参照・訂正するには本体ソースコードを持ってきて自分でコンパイルしないといけない
>>118みたいな人がいなければもう少し早く事が進む
これは断言してもいい
>>123 煽りとかでなく本当に理屈がわからないから説明してくれるとありがたい
文句言う人と実装する人に何の関係が?
>>121 Net::HTTP がもう少し書きやすくて URI モジュールを活用してれば open-uri っていらないよな
ユーザーが Ruby 本体の記述能力を活用するだけでいけると思うんだ
Net::HTTPなんかすぐに見限ったな
>>125 open-uri は URI に open メソッドをつけたのがパラダイム
関数的メソッド open の拡張などというのはただの目くらましに過ぎない
Net::HTTP は
HTTP::Access として URI の下に置かれて隠蔽されるべき
強化すべきは File.open に対応する URI.open
ついたのは read メソッドだっけ、まあ言いたいことはたいして変わらないからいいや
みんなライブラリにはいろいろ言いたいことあるんだな
このスレで意見まとめて、ITSかruby-devに提案したらいいんじゃね?
ちょうど1.9.xでのライブラリ見直しやってて、いいタイミングだし
>>127 それは単に Net::HTTP を使わせる解説が撲滅されれば問題なしだな
「ユーザーが使うのは open-uri だけ、Net::HTTP はライブラリ内で呼ばれるライブラリ」
という認識になれば不幸な事故も減るかと
さあ net/http.rb のマニュアルページからエンドユーザ向けの使用例を消すんだ
>>131 現在は多くのネットアクセスライブラリが Net::HTTP をそういう扱いしてるな
稀~に open-uri を使ってる気軽なやつもあるが
結局は過去のRuby解説が足引っ張ってるって感じなのかね
改行してまで三項演算子使う人って馬鹿なの? if って打つと死ぬの?
>>134 できるね。行末を演算子かバックスラッシュにすれば。
puts true ?
1 :
2
各節が長くなれば、有効な場合もあるかもと思うんだが。
>>131 Net::HTTP.start(uri.host, uri.port) というのが結局最後までマニュアルに載らなかったのが残念だ
殺すなー
まだ生きてるー
あらららら
eroani?
>>131 open-uriはオレオレ証明書を問答無用ではじくのがつらい。
社内限定サーバとかでオレオレ証明書を使ってるとこがあるんす。
外人さん製のライブラリがあります
日本語のファイルを読ませることがあるんですが、もちろんそんなんUTF-8以外考慮されてません
「もし既にエンコード変換関係のライブラリがrequieされててNKFクラスが存在してたら
読み込んだファイルをNKFでこっそりUTF-8に変換する」
というローカライズっぽい処理をメソッド上書きで入れるというのは邪悪ですか?
>>142 いや、実のRubyらしい対策じゃないか?
Railsの邪悪さに比べればまだまだ。
NKF と UTF8 はバージョンがめんどくさいので
Rubyのバージョンの限定がないのなら、いきなり NKF.nkf しておいて
NKFってなんすか食えるんすか例外を rescue して通常処理させたほうがいいかも
>>129 いい意見だとは思うけど、今のところcsvの話しか出てないぞ
ほかに何があるだろう・・・mailreadとか、ERbとか?
Test::Unitやcgi.rbの置き換えについては、もうMLで話されてるみたいだし
>>142 言うまでもないかもしれないが
やるなら直接上書きするより、サブクラスを作って上書きした方が良いよ
また引っかかってる人がいたぞ
win32 では -0 や -0.0 が 0 や 0.0 になるってマニュアルかどっかにでっかく書いとけ
-0.0 はともかく -0 は 0 だろ
ていうか -0 とか -0.0 ってなんなの? マイナスつけないと怒られるの?
>>150 宿題スレで指摘があったが、マイナス 0 は
-0 …… -1 < x < 0
-0.0 …… -0.1 < x < 0
の x の範囲を示すことがある
これらを仮に「0とかでいいじゃん?」ということにすると、
2 …… 2 =< x < 3
1 …… 1 =< x < 2
0 …… -1 < x < 1
-1 …… -2 < x =< -1
と、 0 の代表する範囲だけが幅 2 になってしまう
-1 に含めることにしてもやっぱそこだけ「幅」が 2 だ
HTML版マニュアル生成元データとしてのRDocの
ちょうわかりやすい書き方を解説したサイトってない?
IEEE754ではそういう数が定義されている。
整数ではふつう無理(2の補数で表現する限り)。
>>151 ??数学とかコンピュータの理屈とか、全く疎いんだけど
2 …… 2 =< x < 3
1 …… 1 =< x < 2
0 …… 0 =< x < 1
-1 …… -1 <= x < 0
ではいけないの?良ければもうすこし詳しくお願いします。
ドビックリ最大限の法則
範囲の代表の値をどう取るか(切り上げや切り下げの方向)については数学は特に定めない
適当に宣言したあとに好きなようにやるといい
158 :
152:2008/07/23(水) 00:22:18
あれ?
みんなどうやって書いてるん?
あるいはRDocなんて書いてない?
>>158 誰かの書いたのをコピペして消して使ってるから形式とかわからん
うん、あれよくわからんよね
マニュアルつきソース作ろうと思ってもどこにどういうの書くべきかさっぱりだ
(= で見出しがつくとかそういうRdoc文法システム本体の話ではないので注意)
Rubyにマニュアルが少ない理由がわかった気がする
>>161 何がわからないのかがわからない。
RDocの文法の話じゃないとすると、
引数や戻り値はこう書く、みたいなのが知りたいってこと?
javadocなら@autherとか@paramsとか決まったキーワードがあるけど
rdocにはそんな決まりが無いよね、見出しレベルをいくつにするとか
標準添付ライブラリのソースも記述が統一されてないから参考にならない
== Example: だったり === Examples だったり
そんなときこそ異界からの使者Railsですよ
まーあれだ、
# ここ1
module Hoge
# ここ2
class Mage
# ここ3
attr_reader
# ここ4
def initialize(param)
# ここ5
end
# ここ6
def hage(para,para2=nil)
# ここ7
end
end
end
にどんな書き方で何を書くべきかというのが全く決まってないというのはなんかアレだと思う
メソッドの中の5と7は無視されるんだっけ?
もう、Podにしちゃいなよ。
168 :
デフォルトの名無しさん:2008/07/23(水) 22:13:24
初めまして
こちらでも質問させてください
今rubyで
「XPathとDOMが相互変換できるライブラリ」
というものを探しています。
結構調査してるのですが、なかなか見つからず。。
どなたか教えてください。
なんか、swin.dllの作り方がよくわからないから
ActiveScriptRubyを導入したんだが・・・。
configure勉強せねば無理か
しかしdllが何をしてるかもわからんし何がなんだか
手が付けやすいとこんな適当な人でも使えちゃう
使えた方が助かるし誰も別に困らないが
>>169 日本語でおk
というか、チラシの裏でおk
そうですね
>>170 dllがソースコンパイルしないとダメで、
Rubyのインタプリタのソースが必要らしくて
やり方がいまいち・・・makeでエラー出るんだよね・・・
Rubyのインタプリタのソースとswin.cとかのソースを全部
パスの通った同じフォルダに入れてGNUmakefile.inとかを
所定のディレクトリに入れてってやったんだが
正直自分もよくわからないから、元から入ってる環境を
利用させていただいて、それで決着した
もし他に同じような人がいて困ってたらなんかの足しにはなるし
>>171 だからエスパーさせんな、と。
dllとかswinとか言ってるんだからWindowsの話だよな。
まず、rubyインタプリタのソースなんかはいらない。
ちゃんとrubyがインストールされていてパスが通っているなら、
swinなら展開したらextconf.rbがあるはずだから、ruby extconf.rbで
Makefileができる。
それでmake(VC++ならnmake)でうまくいくはず。
うまくいかないのなら、
* rubyはどこから手に入れてどうやって入れたのか
* extconf.rb実行時にエラーが出るのか、出るならどんなエラーか
* make時にエラーが出るのか、出るならどんなエラーか
を書け。
今のところ、君の書いてることは誰の「なんかの足し」にもならんよ。
SWinってActiveScriptRubyについてこなかったっけ?
>>173 ありがとう、ActiveScriptRubyインスコして動作確認できたので、それ使うことにした。
>>172 ありがとうございます。
Cygwinでrubyを使っているんですが、
ruby.exeと他のコマンドなどがあるpathの通った場所に
ファイルをコピーペーストしてmakeすれば
いいみたいですね。別のとこで展開してました。
今回はswinだけActiveScriptRubyからコピーして
利用することにします。また今度やってみます。
正規表現中にーがあるとpremature end of regular expression: /・・・と
エラーが出るようですね。「ー」を「..」に置き換えると出なくなりました。
rubyの種類とバージョンは 1.8.7 (2008-06-20 patchlevel 22) [i386-cygwin]です。
>>166 そう
class や def の前に説明を書かなければいけない
>>174 初心者スレに行けばいいと思うよ。
permeture...は、-Kオプションについて調査することをお勧めする。
次のるびまはRDocについて書くといいぞ
Loggerが使われるようになったのはあの解説のおかげだろ
それは良案
ただ、るびまの次巻が出ないんだよな・・・・・・そろそろ出てもいいはずなのに
Ruby会議で忙しかったんだろうか
rubyが人類の負の遺産になりつつあるな。
>>177 ただRDocとだけ言うと
>>159のように文法解説されて
「HTMLに変換できるなんて超便利だよね!」という勘違い記事で終わる予感
「自作Rubyスクリプトにマニュアルをつけよう」という視点にしてもらわないと困る
RRSE含めて「マニュアルシステムに自作マニュアルを組み込むとEmacsメソッド補完で説明が出て便利」とかそういうの
> RRSE
うおーなんぞこれー
>>177 > Loggerが使われるようになったのはあの解説のおかげだろ
かもね
>>146 せめて日本庭園と西洋庭園にしてくれよ
日本人にはRubyの良さが分かるんだ!
>>154 数学じゃね?
-0はマイナス側からの極限 0.9999・・・-1
+0は・・・てやつ
それとプログラムの関係はしらないが
RubyとPythonは日本語と英語の世界に似てるんだよね・・・・
日本語
・複雑なルール、豊かな表現力
・知ってる人にはわかりやすいが、知らない人は戸惑うことが多い
・自由で割と新たな表現を容認する方
・日本ローカル。喋る外人は少ない
英語
・シンプルなルール、それなりの表現力
・知らない人でもわかりやすいが、貧弱さにイラつく人もいる
・SVO強制。非常に保守的。
・ほぼ世界共通語。日本人を含めエキスパートが沢山いる。
俺にわかるのは
>>185が英語を苦手としている という事だけです
英語のルールって、シンプルとはとてもいえないよな・・
古英語に、バイキングに侵略されてた頃のノルド語がまじって、
更に、キリスト教の影響で、ラテン語がまじってるから、
語源やルールが多重にまじってて、ごちゃごちゃ。
日本語は文法が整然とされていて綺麗というのは常識だけどね
そんな常識ないぞ。
「ぞうは鼻が長い」のために一生かかるのが日本語だぞ?
まあとりあえず英語がシンプルとか勘違いしてるやつは、
childの複数形がなぜchildsではなくchildrenかに疑問を持って調べてみるべき。
あとなぜchildの発音はチャイルドなのにchildrenの発音がチャイルドレン
じゃないかも調べてみるべき。
そりゃ日本語に比べたら英語の歴史は短いが、そうはいっても千年以上の歴史がある。
シンプルなわけがない。
>>189 それは、むしろ文法が整然としてるせいもあるんじゃないのかな?
日本語は、文法はシンプルなんだけど、
そのせいもあって、同音異義語がもの凄く多い。
(微妙なアクセントで全然意味が変わってしまう。
ただし、そのレベルになると、大半の日本人でも実は使いこなせていない。
ベテランのNHKのアナウンサークラスじゃないと・・・)
あと日本語は、省略が異様に効く言語なんで、それもキツイらしいね・・
「愛してる」だけで、周りの文脈も考えれば、100%正確に通じてしまうってのは、
実はめずらしいそうな・・
英語で、
I love you.
Love you.
Love
は、全部意味が違う
おまいら突っ込むところは他にあるだろう
というかわざと避けてるのか
2chで不正確なマッピングの例え話に興じる奴は100%低脳な法則
>>187 ノルマンコンクェストってキリスト教のせいだっけ?
というか、単純に語彙数を比較しても、英語圧勝なんだが……。
>>196 へえ。具体的な数字があれば、いい豆知識w
>>195 古英語>ノルマンコンクエストの影響>キリスト教の布教の影響
なんで、そこは分けて取って欲しかったんだ・・
ちょw多い
なんだこの流れw
English板に迷い込んだのかと思った
tips は初心者スレ
仕様・ドキュメント・コミュニティの話題はアンチスレ
それ以外の雑談は本スレで!
二行目おかしいだろw
全部だろ
1行目は正しくないか?
rubyの使いかたについてはこのスレじゃやらないよね
205 :
201:2008/07/27(日) 22:39:09
ネタといえばネタなんだが、現状こうなってしまいがちでない?
分かんないことがある。本スレに書いて「初心者スレに逝け」とか言われるのはイヤ
→せっかくだから、俺はこの初心者スレを選ぶぜ!
仕様とかに疑問を持つ。本スレに書いて「MLに書け」とか言われても、そこまでする気はない
→せっかくだから(ry
俺は初心者スレを見て、勉強させてもらってるが。
どうせならクソRD捨ててもっとまともな設計にして欲しいよな。
言語オタを名乗るんだったらもっとこだわって欲しいところだぜ。
まあ、reStructuredText移植で十分だと思うけど、あれはパーサーに優しくないから
そのあたりを再設計すりゃ良いかな。
>>207 よし、あんたにまかせた。よろしく
と、matzが言っております
ぶっちゃけJava・PHPでデファクトのJavaDocでいい
##
# 簡単なコメント
#
# 詳細なコメント詳細なコメント詳細なコメント
# 詳細なコメント詳細なコメント詳細なコメント
#
# @param
# @return
・・・ぷw
まあ実際、人手が足りないのは事実らしい
マンパワーが足りないってだけの理由で後回しになっている領域がけっこうあるそうで
>>210 これは逆切れに近いんだが、声がぜんぜん聞こえてこないんだよね
困ってるなら困ってるって言えよ
悲劇のヒーロー気取ってんじゃねえよ
213 :
207:2008/07/29(火) 01:36:24
前に自作構造化テキストルール&HTMLコンバーターをMLに投げたけど、
コメント一つなくスルーされたんだよね。
Ruby関係者は誰も興味ないんかね。
reStructuredTextを移植するほどRubyに労力かけたくないしなぁ。
>>213 Linuxカーネルでもそういうことあるってね。
コメントくらいはあるだろうけど
別の方法でやろうとしてたんだと言わえてで却下、とか
取り込まれたと思ったら全然別のやり方で再実装されてた、とか
コネ作らないと採用されにくいという
まあ、ポッと出のやつのパッチは採用しづらいってのはあるわな
馬の骨のやつのコード取り込んだとして2年後誰が保守するの?って話だ
>>213 あとはあれだ、
修正が大きいとすぐ理解できないので、
パッチ読む優先度が下がってうやむやとか
>>212 ・・・・・もしかして、需要と供給を誰も把握してない?
他のコミュニティだとどうやってんのかね
>>213 諦めるな。スルーされてもされても
投げつづける熱意が必要なのさ...
めっちゃわかりやすいかめっちゃ便利かどっちかだな
コネというのは言葉が悪いが、信頼あってのコードだから…
コードには人格はくっついてないんだけどね
まあなんぞ色々あるんだよ、うん
たまたま興味ある人が見てなかったということもあるから、
サイトでも作ってのっけて公開するんだ
…Web公開されたようなコードってRubyライセンスは取り込めたっけ?
>>220 公開するときに、取り込めるようなライセンスを明示しておけばいい。
初心者スレ向けなんだけどさ。
# hoge.rb
class Hoge
def initialize
return Array.new
end
end
============
# main.rb
require 'hoge'
hoge = Hoge.new
hoge.push('a')
ってやったら
undefined method `push' for #<Hoge:0x401c2844> (NoMethodError)
って言われるのなんで?
new の返り値は配列にならないの?
>>222 しかしその理屈だと
class Hoge
def initialize
@param = nil
end
end
という Hoge クラスを new したら中身が nil になってたいへん悲しい状況に
稀に見かける initialize の最後に self を書いてるスクリプトはこれが原因か?
これやったことある
「Arrayを継承するほどでもないんだよなー」と思って
「そうだ、newの返り値が配列ならいいんじゃね?」みたいな
しかし、仮にHoge.newがArrayクラスのインスタンスになったとすると
Hogeクラスに書いたインスタンスメソッドは動作しないぞ、ArrayはHogeじゃないんだから
継承は最後の武器とか言いながら継承しか言わないおまえらが大嫌いだ
「Arrayのメソッドを主に使う+自作メソッドを時々使う」の場合はArrayを継承するのが妥当?
継承を使うときのチェックポイント(Ruby版)
1.is-a関係があるか
2.継承後もインターフェースを維持しているか
3.メソッドの実装を共有しているか
(出典:るびま)
使ってる時の感覚として、Rubyの場合、継承はそんなに怖くないような
Javaとかだと継承には恐怖を覚えるんだが
>>225 委譲(delegate,forwardable)も選択肢の一つ
>>225のような要求なら継承の方が楽だけど
Array を直接いじるよりは継承したクラスを作ってそっちをいじるほうが
安心感はあるな。たとえば
>>225 そもそも「継承は最後の武器」と言ってる人がどのくらいいるのかがあやしい
>>229 知識としてはRuby界隈では一般教養だと思うが、
意味や元ネタまで知っている人は少ないと思う。
無理やりやるならこんな感じか。
module Hoge
def hoge
:ok
end
def self.new
[].extend(Hoge)
end
end
hoge = Hoge.new #=> []
hoge.push("a") #=> ["a"]
hoge.hoge #=> :ok
元ネタを勘違いして覚えてる人は少なくないと思う
>>212 逆切れじゃなくて言いがかりだな。
> 困ってるなら困ってるって言えよ
どうすればいいんだ?ダイレクトメールでも送ってほしいのか?
TV CMでも流せってのか?
>>227で言ってるがレシピブックにも書いてある
丸投げ
require 'delegate'
class MyArray < DelegateClass(Array)
def initialize
super []
end
end
a = MyArray.new
a.push 3
p a #=> [3]
一部だけ
require 'forwardable'
class MyArray2
def initialize
@array = []
end
extend Forwardable
def_delegator :@array, :push
end
a2 = MyArray2.new
a2.push 5
p a2 #=> #<MyArray2:0xb7cc9fa4 @array=[5]>
>>233 見てるこっちが恥ずかしいから、大人になるまで書き込まないでね。
自分で使うぶんには継承であまり問題ないわな
「変なメソッド使うと内部データに不整合がおきます」とかマニュアルに書けばいい
パッケージとして他者に提供するときに制限したい場合に特に意味があるわけで
確かに、private の意味がわからなかった
「呼べなくするなんて面倒なことしないでそもそも呼ばなきゃいいじゃん?」
みたいな
--unittestオプションを付けたらアクセス制限を無視するようになればいいのに
Rubyではprivateなんて使わないけど
rails使うときは適宜private使わないと危険だと思うんだが
俺だけ?
>>222 >ってやったら
>undefined method `push' for #<Hoge:0x401c2844> (NoMethodError)
>って言われるのなんで?
>new の返り値は配列にならないの?
initialize() の戻り値が new() の戻り値になるわけじゃない。
p hoge して hoge が Array じゃないことを確認したら?
>>240 あのへんはアクセス制御を使わないと危険なようにできてる
最近のRubyではtcl/tk8.5が使えるようになってるというので
Ubuntuでtcl8.5-dev と tk8.5-devをインストールしてmakeしてみましたが
どうもtclを認識してくれません。
ちゃんと
/usr/include/tcl8.5/{tcl.h,tk.h}
はあるのですが、extconfで
tcl.h ... no
と言われてしまいます。どうやってmakeしたらいいのでしょうか
./configure --with-tcl-dir=...とか付けた?
245 :
243:2008/08/02(土) 00:45:37
すみません。
./configure --enable-tcltk_stubs --with-tcl-include=/usr/include/tcl8.5
--with-tcllib=tclstub8.5 --with-tklib=tkstub8.5
とやって自己解決しました
こういうの自動検出してほしいですねえ。そのためのextconf.rbじゃないかと
おもうのですが。Ruby/Tkがイマイチ不人気なのもそういう原因があるんじゃないかと思う
置いてありそうなディレクトリ候補を全部列挙させるのも無理があるだろう。
最近はやりの hoge_config --cflags みたいにして調べるコマンドが付いてる
やつならいいんだけどね。
Ruby/Tkって不人気なの?
というかconfigureのオプションと関係があるとは思わなかったw
でも関係あるでしょう。
PythonのTkinterは何も考えなくても
./configure
make
しただけで動くし。デフォルトで作られないライブラリなんか怖くて使えないよ。
ところで、rubyはリポジトリが汚いんだね。trunk/直下にいろいろゴチャゴチャ置いて
あって見通しが悪い。コアの部分はSrcにしまうとかすべきだろう。
docに置いてあるファイルがしょぼいのもドキュメント軽視の原因なんじゃないだろうか
gtkのがいいじゃん
>>248 逆だな
matzがドキュメント軽視なのが原因
ドキュメント重視な開発者なんていません
全員が仕方なく書いてるんです
コード書いてるほうが楽しいに決まってます
>>251 コードから完璧なドキュメントを生成するコードを書く作業に移るんだ
>>252 作業に移る前に完璧なドキュメントの定義をください
まあドキュメントは人が書ける人があんまりいないからしゃーないとして、
(そのへん日本人が苦手なのは日本語ウィキペディアをみれば分かる)
とりあえず、Ruby/Tkは変なオプションつけないとビルドできない欠陥仕様を早く治すべき。
ヘッダの自動検出をサボってるかバグがあるんじゃねーのかな
他の外部ライブラリは別に変なオプションいらずでビルドできるんだし。
255 :
デフォルトの名無しさん:2008/08/02(土) 13:38:51
ねえ
「メソッドに別な動作させたいときはこのクラスを継承した別のクラス作るの推奨」ってライブラリがあるんだ
その思想自体には賛成なんだけどさ、元のクラスのinitializeとかにバカみたいに引数と初期値があって
いちいち書き写すのめんどくさいんだ
なにか便利あるいは定番な方法ってないかな
def hoge(para1, para2, para3=nil, para4=nil, para5={:hogedat=>[]})
処理A
処理B
super
end
めんどいです
じゃあ開発者以外にドキュメントをかかせればいいのか?
xmlなんかは読み切れんくらいドキュメントがあると思うが、
あれは誰が書いてるんだ?
マジレスするとCPAN並に付属ドキュメントを強制するのがよい
書くのめんどいと言いつつもドキュメントの重要性自体は全員が理解するところだろう
なるべくドキュメントを書きやすい雰囲気に持っていくってことだな
だからRDocでソースコードからマニュアル作る場合にどう書くのが定番なのかさっさとみんなで決めろタコ
>>255 こうするといいよ
def hoge(*args)
処理A
処理B
super
end
>>256 WS-* みたいなのは実装可能性すら無視して規格書を厚くするのが仕事になってるから。
そういう風になると規格自体もぐちょんぐちょんだし。
262 :
デフォルトの名無しさん:2008/08/02(土) 13:59:35
CPANはPoDがないと登録できないんだっけ
マニュアル記述がないと警告するツールもあったはず
Perlはそういうとこ進んでるよな
264 :
デフォルトの名無しさん:2008/08/02(土) 14:13:47
>>254 extconf軽く見る限りはバージョンの新しい方からライブラリ探してる気配はした
バグってるのかなあ
>>262 おお参考になる
しっかしRDocを使ったドキュメント以前に、
RDocの使用法に関するドキュメントが不足しているというw
>>267 自演じゃないよwww
>>266 一回でも「RDoc」でググった?
というかどれだけドキュメントがあれば不足していないといえるのか。
RDocを決まったフォーマットで書かないと
RAAに挙げさせない。gemさせない
ってことだろ
>270
公式にRDocの解説すら無いのに?
自分ところのドキュメントをどうにかしない限り、そんなことできないよ。
三点リーダーつきでまで言うこっちゃないねえ(w
3点リーダーは2つ続けて使うのが基本……
とか言うと読点すらない文章で基本も何もないわとか言われたりするが
確定というか決定だね。いまお前がそう決めたw
いかにスレ読んでない連中が多いかの傍証にはなるな
何考えて書き込んでるんだかちょっと興味はある
>>268 そうそう。extconf.rb 内でがんばって find_library してるけど
あんま意味ないと思う。
例えば MinGW で tk ビルドすると、
-lgdi32 -lcomdlg32 -limm32 -lcomctl32 -lshell32
あたりが必要なんだが、当然こんなのは考慮してくれない。
で、そのために tkConfig.h があるわけで、この中に DEFS, LIBS のほかにも
PREFIX や LIB_SPEC とか必要な情報は全部入ってる。
現状、thread 関連のチェックだけに tkConfig.h 見るとか、中途半端すぎる感じ。
そうだね。ext/tkのextconfは重複部分も多くてあんまりスマートじゃないね。
tkにもテストが欲しいんだけどGUIのテストってどうやるのかな。
pythonだと、tclにメッセージを送るテストぐらいはやってるようだ。
「Ubuntuで開けない」って変な表現だな
パッケージで入れてるlibcあたりがクラッシュでもするのか?
まあOgg/Theora形式なのはオープンソース野心的でいいんじゃないかと思う
一般的環境ではそもそも再生できないというのも排他性をうまく表現してる
動画形式の素晴らしさの宣伝を兼ねた再生ソフトウェアの紹介くらいはしておいて損はないと思うんだがな
あとできれば動画とPDFはファイルサイズ併記してほしい
>>283 VLCでもmplayerでも開けたよ。
Totemはコーデックが足りてないのか無理だったけど。
1.8と1.9でThread中でのexitの意味が変わってるとは知らなかった。
# test.rb
Thread.new {
sleep 1
exit(0)
}
sleep 5
puts "Hello, 2ch"
1.8なら何も出力せず、1.9なら"hello, 2ch"が出力される。
Google StreetView でNaCL見学しようかと思ったけど見れネー。
島根のド田舎ってことをすっかり忘れてた。
見られるのはまだ日本の極一部じゃねーか。
なんかずいぶん前から
trunk/ruby/lib/mkmf.rb:4:in `require': no such file to load -- rbconfig (LoadError)
でコンパイルできないんだけど、よく開発続けられるなあ
>>290 --- common.mk (revision 18422)
+++ common.mk (working copy)
@@ -668,7 +668,7 @@
srcs: {$(VPATH)}parse.c {$(VPATH)}lex.c $(srcdir)/ext/ripper/ripper.c transcodes
-transcodes: enc.mk
+transcodes: enc.mk $(RBCONFIG)
$(MINIRUBY) -run -e mkdir -- -p "$(EXTOUT)/$(arch)/enc/trans" enc/trans
$(MAKE) -f enc.mk RUBY="$(MINIRUBY)" MINIRUBY="$(MINIRUBY)" $(MFLAGS) srcs
rbconfig.rbを生成してない問題はこれで解決するけど、どっちにしても
今はencまわりでごにょごにょやってるんでmakeできないけどね。
ごめん、こっちのほうが正しいか。enc.mkの作成に必要なmkmfの
実行にRBCONFIGが必要という話でした
-enc.mk: $(srcdir)/enc/make_encmake.rb $(srcdir)/enc/Makefile.in $(srcdir)/enc/depend \
+enc.mk: $(RBCONFIG) $(srcdir)/enc/make_encmake.rb $(srcdir)/enc/Makefile.in $(srcdir)/enc/depend \
基本的な質問します
FileTest.exist? ってありますよね
Ruby を Linux で使用してるんですが、これって HDD にアクセスしてますか?
files100list.each do |path|
FileTest.exist?(path)
end
ってやったら、実際に HDD に 100 回アクセスしてるんですか?
や、「既にダウンロードしてたらサーバからダウンロードしない」というのを
unless FileTest.exist?(uriから計算した保存ファイル名) then
res = www_download(uri)
File.open(uriから計算したファイル名,'w'){|f| f.write(res)}
end
というように「HDD に存在してたらスキップ」という処理にしたんですが、ちょっと気になって
>>295 …まあ、たまたまキャッシュに残ってれば別だろうけど、プログラムとファイルシステムの関係上、普通はそうなんじゃね
原始的ではないWebブラウザはURL履歴をデータベースファイルに保存して参照してるわけだし
どーしても気になるならダウンロード成功時にURLを配列に保存しまくっておいて
スクリプト起動時に読み込んで「成功履歴配列にURLがあったらすっ飛ばす」とかするのはどうよ
stat(2)の結果なら、たいていのFSではキャッシュしてるとは思う。
atime(最終アクセス時刻)を持ってる環境だと書き換えるのかな。
というかstat(2)でatime変わるんだっけ?
# とドツボにはまった
僕のノートにはHDDが載っていないので何をしても
内部のHDにアクセスは起こりません(><)
>>297 stat(2)は、ディレクトリエントリは叩くけどファイルの実体は叩くわけじゃない、
ということがわかればおk。
あ、これは俺も気になったことはあるけど、Rubyあんまり関係ないな
find /usr -print をやるとわかるんだが
1度目はガリガリ言う(不幸なことに最近のHDDは音が鳴らない)けど2度目以降は静かなもんだ
ls -R /usr をしても無音で動く(これも1回目だとディスクアクセスがある)
findの結果をファイルに保存した直後に
$ cat result.txt | ruby -ne 'p FileTest.exist?($_.chomp)'
してもディスクはディレクトリをガリガリ走査しない
なんかかわいいなw
そろそろるびま更新されないかなー
304 :
デフォルトの名無しさん:2008/08/10(日) 23:27:39
2~3日様子見した俺様最強伝説
最新に常に追従しない俺様最強
毎日
svn up && autoconf && ./configure && make install-nodoc
している俺様が最大の勝利者
310 :
デフォルトの名無しさん:2008/08/12(火) 00:59:56
>>306 1.8.7と1.8.6って確かリリース担当者が別人だよね?
何で同じミスをしてるんだwww
>>310 テストケースが同じだからだろ
テストケースに抜けがあってすべてのバージョンの修正に不備がありました。
チャンチャン
312 :
デフォルトの名無しさん:2008/08/12(火) 01:21:28
>>311 テストだけでチェックをしてるんなら
リリース担当者なんていらないじゃんwww
使うに値しない言語ってことですか。
>>314 なんかイリュージョンが見えてるのでは。
素人でごめんなしあ、ちょっと質問をば
貸し鯖(atpage)でruby使うにはどうしたらいいんですか
mySQLってやつ使わなきゃできないのでしょうか
プロジェクトの命名権があるのは、金をひっぱってくるけど
技術にうとい人だから仕方ない。
--- string.c (revision 18542)
+++ string.c (working copy)
@@ -2861,7 +2861,7 @@
rb_str_splice_0(VALUE str, long beg, long len, VALUE val)
{
if (beg == 0 && RSTRING_LEN(val) == 0) {
- rb_str_drop(str, len);
+ rb_str_drop_bytes(str, len);
OBJ_INFECT(str, val);
return;
}
nakadaさん・・・
>>317 Ruby関係ないのでレンタルサーバのスレなり問い合わせ先なりで聞け
>>316 Rubyで核施設制御かと思った
んなことしたら即日メルトダウンするぞw
>>323 rubyが歴史に名を刻む日になるな
悪い意味で
325 :
デフォルトの名無しさん:2008/08/19(火) 03:50:06
変なこと聞きますが、
Stringを継承したクラスとStringの構造の違いって、RBASICのklassが違うだけでしょうか?
cString2 = rb_define_class("String2", rb_cString);
str = rb_str_new2("test");
RSTRING(str)->basic.klass = cString2;
みたいに、rb_str_newした後でklass入れ替えるとかって、無しですかね?
>>325 違いはそうだが、何をしたいんだ?
> rb_str_newした後でklass入れ替えるとかって、無しですかね?
基本的になしの方向で。
>>310 > 1.8.7と1.8.6って確かリリース担当者が別人だよね?
今は同じ。
リリースマネージメントなんて(技術的に)面白い仕事でもないし、
プロに任せちゃえばいいのにね
329 :
325:2008/08/19(火) 06:04:06
>>326 そですね。
今さっき、rb_str_new5 (rb_str_new_with_class) なんてのがあるのを知った所で、
たぶん、これが欲しかったもののようです。
>>329 念のために言っとくけど、そいつの第一引数はrb_cStringかそのサブクラスじゃ
なくて、そのインスタンスだから、最初にまず一つ作らない限り使えない。
Cレベルでインスタンスを生成する正式な方法はrb_class_new_instance()。
>>328 プロってどこにいるの?
プロというからには金を取ると思うんだけど、誰が払うの?
アラブの石油王に軽く1億くらい融資してもらえばいいじゃん
キーワード引数っぽいハッシュの仮引数を criteria って呼ぶ人がいるのはどこが発祥?
>>334 別にばかげたことだとは思わないが…
互換性の問題ってのはそれなりに難しい問題だよ、大昔から…
「xterm は vt100 のバグまで忠実に再現した」って、話を聞いた記憶がある
安全性と妥当性のために互換性切捨てたら文句言うくせにな
どうしろと
Ruby's FAQ
Q: 鬼車とは?
A: 次期Rubyに搭載予定の正規表現ライブラリ。
Ruby's FAQ (by ●●t●)
Q: 鬼車とは?
A: 次期Ruby専用の正規表現ライブラリ。
>336
仕様が無いんだからしょうがないじゃない。
コンセプトも方針も共有できてないんだから迷走するのは当然ですな。
>>332 融資って、返さないといけないんだけど、そのことを理解してる?
いや、奴は金融に強いんだぜ
もちろん、1億を種に投資して数倍にして、
後で利子つけて返すんつもりだったんだよ
イスラム金融なら利子じゃなくて配当じゃないか?
ふつーのオープンソース系の感覚で、
1.8.xでxが大きい方が不安定ってまず思わないよなあ
その辺からしてクレイジーなルビー
新参ですごめんなさい
345 :
デフォルトの名無しさん:2008/08/20(水) 07:54:43
>310
ruby 1.8 系のブランチから適当な時期に1.8.xをリリースするまでが武者さん、
リリースされた1.8.xのブランチをメンテするのが卜部さん
ちなみに、1.9のリリースはささださん
>344
1.8.4以前はそもそもパッチリリースが存在せず、(しかも超不安定)
1.8.5は終了したんですが、何と比べてるんですか。
1.9.1はYuguiさんじゃなかったっけ
>>347 どこが矛盾してるのかわからん。
ruby_1_8から新しい1.8.xを切り出してリリースするのが武者さん。
切り出された後の1.8.xのパッチリリースをするのが卜部さん。
349 :
デフォルトの名無しさん:2008/08/21(木) 00:05:11
本来初心者用スレで質問すべきかと思ったのですが、スレに書き込めなかったためこちらに書き込ませていただきます。
普段はperl書きで最近rubyを勉強し始めたのですが、rubyでのハッシュのハッシュ、配列のハッシュの書き方がよくわかりません。
perlでは
$hash{$key1}{$key2} = $value
push @{$hash{$key}}, $value
のように使っているのですがrubyでの書き方を説明している良いサイト、資料など教えていただけないでしょうか。
『たのしいRuby』 13.7.1で紹介されている方法ではなく、上記のような記述の方法はないのでしょうか。
色々とサイトを見て回ったつもりなのですがこれというサイトが自力では見つかりませんでした・・・。
> 『たのしいRuby』 13.7.1で紹介されている方法
本が手元にないとさっぱりわからん斬新な説明法だな
えーと、入れ子になった(ネストした)ハッシュのことだと推定
Ruby は(Ruby も?)「ハッシュのキー指定が連続している」というような特別扱いはしない
ハッシュ h があったとして、h['key1']['key2']['key3'] は、
h['key1'] … ハッシュ h のキーが 'key1' なペアの返り値のオブジェクト
h['key1']['key2'] … ↑のオブジェクトを obj とするなら単に obj['key2'] の返り値
h['key1']['key2']['key3'] … ↑の(中略)単に obj['key3'] の返り値
という恐ろしく単純な解釈を経てる
「hの中の'key1'の'key2'の'key3'のハッシュ」ではなく「h['key1']の返り値の['key2']の返り値の['key3']」だ
第二版の『たのしいRuby』 13.7.1 に何が書いてあるかわからんので変なことしか言えん
上記の場合は h['key1'] と h['key1']['key2'] が 存在しないと「次のキー」が探せなくてメソッドエラーになるよ
存在しないキーを勝手に作ってくれるということはない
>>349 hash[key1][key2] = value
hash[key].push(value)
で良さそうな気がするけど、そういうことではない?
Perlも別に多次元配列なんてないからイメージとしては
>>350みたいに
なると思うけど
あっちはリファレンスで実現するから、むしろややこしい気がする
352 :
デフォルトの名無しさん:2008/08/21(木) 01:03:20
レス、ありがとうございます!
まさしくネストしたハッシュをを記述したいのですが、rubyでコーディングしてもうまく機能してくれず・・・。
具体的には、100個のファイルがあり、それぞれのファイルが同じフォーマットのCSVで
第1カラムから第2カラムまで有る時に、
hash[ファイル名][第1カラム] = 第2カラム
という記述か、
perl風に書けば
push @{$hash{ファイル名}{第1カラム}}, 第2カラム
という構造のデータをrubyで記述したいと考えてます。
ちなみに、『たのしいRuby』13.7.1で紹介されているハッシュのハッシュは
table = {"A"=>{"a"=>"x", "b"=>"y"},
"B"=>{"a"=>"v", "b"=>"w"} }
といったネストしたハッシュの記述です。
失礼いたしました。
>>352 >>350に初心者スレのエスパー能力を垣間見たw
参照時ではなく、ハッシュを作るときの記述、という意味か。
エスパーの練習をしてみると、作りたいのは配列のハッシュのハッシュか
hash = {
'file1' => {'col1' => ['col2', 'col2', ... ], 'col1' => [ ... ], ... }
'file2' => {'col1' => ['col2', 'col2', ... ], 'col1' => [ ... ], ... }
...
}
っていう感じのものかと創造。
ハッシュ・配列を最初に初期化してやればいいんじゃない?
hash = {}
hash['file1'] = {}
hash['file1']['col1'] = [] if hash['file1']['col1'].nil?
hash['file1']['col1'] << col2
# 上記、それぞれの段階でループ
こんな感じでいける?
# やっぱり初心者スレの方がよさそう
Ruby の悪いとこは、マニュアルいきなり self とか書くところだな
>>352 ということで、既存のハッシュオブジェクトにペアを追加したいときは self[key]=val の形式を使う
h[key] = value
とすると、ハッシュ h に 「key => value」 の組が追加される
一番間違いのない方法は、最初にファイルをリストしたときにハッシュのキーを作ってしまうこと
h = Hash.new
filelist.each do |filename|
h[filename] = Hash.new
end
こうしておけば、h[ファイル名][第1カラム] = 第2カラム と書いたときに 「h[ファイル名] が nil だったよエラー」が出ない
個人的にはネストしたハッシュをネストしたままアクセスするのは番地思考であまり好きではない
ファイル読み込んだタイミングで
hash[ファイル名] = {}
行をパースするタイミングで
hash[ファイル名][第一カラム] = 第二カラム
にすればいけそうだけどなあ。
files.each do |file|
hash[file.name] = {}
file.readlines.each do |line|
a = line.split(',')
hash[file.name][a[0]] = a[1]
end
end
検証はしてない
みんな同じ事書いててワロタ
357 :
デフォルトの名無しさん:2008/08/21(木) 21:31:18
みなさんありがとうございます!
355さんのコードを参考にさせてもらいました。
それにしてもやっぱりperl脳から切り替えないとダメですね。。。
1.9 をインストールする
…この
> MCmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmCCmmmmmmmmmmmmmmmmmmmmmmmmmmmm
っていう楽しげなの何? いや、なんとなくわかるけど
EEEEEEEEEEFEEFFEEEEF.FFEEEEEEE
しつもんー
require 'hoge' すると、 hoge/huga/mage.rb で SyntaxError が起こるんだよ
まあぶっちゃけその部分が 1.9 に対応してないだけなんだけどさ
なんとかして手元のスクリプトの中で上書きとかできないかな?
>>358 モジュールクラスメソッドメソッドメソッドメソッドメソッドメソッドメソッド
__METHOD__!!!
1.9 はちょっとやそっとではわけわからんのがなあ
文字エンコーディングの扱い方とか、今のところどういうポリシーで行けばいいんだ?
Web サーバから持ってきたファイルを正規表現でどうにかするっていうモジュールで UTF-8 変換とかしていいのか?
今のところ「ruby1.9 --encoding=Binary ./hoge.rb で動かしてください」というのが一番多い気がする
--encoding=Binary でとりあえず動くというのはそれはそれで凄いことのような気もするが
外人さん向けモジュールで日本人くらいしか喜ばない NKF とかホイホイ使うわけにもいかん
1.9 対応とかしようかなーと思っていじったらエンコーディングに関するエラーがバカみたいに出て諦めた
「普通に」動かすための暫定版ガイドとかあると嬉しいかも
もしかしてモジュールの全ファイルの先頭に -*- coding: binary -*- とか書けばうまくいくのか?
ああ、みんな一度は 1.9 対応させようとしてエンコード問題に引っかかるんだな
俺が発狂したのはこれ
> in `=~': incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string) (ArgumentError)
モジュールの正規表現のとこ全部 force_encoding しなきゃならんのかと思って目の前が真っ暗に
>>352 こんなこともできるよ
存在しないキーを勝手に作ってくれるハッシュ
(eban さんとこ経由 ruby-talk:311341)
hash = Hash.new {|h, k| h[k] = Hash.new(&h.default_proc) }
>>366 //uを明示してるからじゃない?
$ ./ruby -Ku -v -e 's = "\x8f".force_encoding("ASCII-8BIT"); p [/./=~s,(/./u=~s rescue $!)]'
ruby 1.9.0 (2008-08-22 revision 18769) [i686-linux]
[0, #<ArgumentError: incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string)>]
キーの集合を別の集合にマッピングするのは、配列だと map でできるけど、
そのマッピング用の Hash 作るのはけっこう面倒くさくね?
リファレンスマニュアルだと、zip して flatten して * 展開とか書いてあるけど
ちょっとあんまりな感じ。というわけで、こんなのはどうだろう。
def Hash.map_from(keys, &block)
if block
Hash[ keys.inject({}) {|h, k| h[k] = block[k]; h } ]
else
Hash[ keys.inject({}) {|h, (k, v)| h[k] = v; h } ]
end
end
使い方:
keys = ['aaa', 'x', 'foge']
Hash.map_from(keys, &:size)
#=> {"aaa"=>3, "x"=>1, "foge"=>4}
Hash.map_from(keys, &:intern)
#=> {"aaa"=>:aaa, "x"=>:x, "foge"=>:foge}
Hash.map_from(keys.each_with_index)
#=> {"aaa"=>0, "x"=>1, "foge"=>2}
ここは偉いひとも見てるぽいので書いてみた。BTS? とかはよく知らん。
優先順位付きキュー(Priority Queue)の実装ってありませんかね?
fuqueue!
>>369 確かに見てるっちゃ見てるのかもしれんが、一部だけだろうし
MLに投げた方がやっぱり良いんじゃね?
毎日新聞もその多大な影響力を認めたことだし
もう2chのRubyスレは見てませんみたいな振りはやめようぜw
>374
・ライセンス的にグレー(実際はかなり真っ黒)
・受付管理が面倒になる
・そもそも2chチェックするのが面倒
だから無いんじゃない?
・2ちゃんにマジレスするのはかっこわるい
という昔ながらの考え
これが一番だw
前スレ辺りに中の人が出没してた気もするが
そういう事例が仮にあったとしても、ほとんど偶然だと考えたほうがいいw
2chに書かれたコードをライセンスソフトウェアに取り込むのは至難の業
2ch自体をrubyで再構成すれば無問題
>>380 何故そうなるのかはわからんが、やるとしてもサーバ用の
Rubyコンパイラが必要だな
718 名前:仕様書無しさん[sage] 投稿日:2008/08/26(火) 22:36:26
MatzはIPAに育てられたのに恩義を全然感じてないのは
おかしいと思う
>>383 燃料投下か?初耳だな
その前にIPAは受験料払った俺様に恩義を感じろと言いたい
経産大臣の印刷署名のペラ紙一枚送って対等だと思うなよ
>>384 俺も金はいくらか払ったが、IPAフォントだけでおつりが来るくらい有り難いと思ってる
あとはHaru(PDFライブラリ)が使い物になってくれれば十分過ぎるかもw
matzも支援を受けてたのか
YARVとかexerbは未踏なんちゃらに選ばれてた記憶があるが
m17n関連で未踏やってたような。
税金収めてる椰子はIPAに感謝する必要ないんだぜ
IPAは俺様の税金で成り立っている
何かできる恩返しがあるとすれば、
まあせいぜい税金で得られた成果を有効活用するぐらいか
>>388 LunaとAirWeb関連に使った金は返して欲しい。
なにが未踏なのか分からん。
もう製造とかITに税金使わず
国策と農業と資源採掘に税金つぎ込んで欲しいよ。
他国に根源的なリソース抑えられたら手も足も出ないからな。
>>390 そういう無駄につぎ込めるのは、ぶっちゃけ税金(と、意味不明な無償の奉仕)だけだぞ
試行錯誤の必要性がわからんわけでもあるまいに
>>391 思いっきりスレ違いだと思うが、一応言っとくか・・・右翼乙
それで1億3千万、農業国家で食わせてみろってんだ
理想は平和でいいとは思うけどね・・・それも資源とか言ってる
時点でだめか
また今日も見えない敵と戦う日々ですか
最近の2chはとりあえずウヨサヨニートといっておけばいいみたいな安易さを感じないわけにはいかない
>>394 プチウヨは「見えない敵」ではなく「見えるゴミ」です
>>396 仮にそうだとしても、「見えないゴミ」だと思ってくれ。ここでは。
rake clean と打ったつもりが、gem clean と打っていた
自給率100%は非現実的だが、それに近づける努力は必要だろう。
その話まだ続いてたのかw
その努力のために、対外的に通用する可能性のある産業の育成を放棄していいとも思わんぞ
というわけで、IPAは未踏の枠を増やして俺に金をよこせ。ばら撒き万歳。
男女共同参画事業とかいって駅に啓蒙ポスター貼るみたいな無意味なことする
よりはロケットとかスパコンとかプログラマ育成とに金掛けろよ
そこで天才女を引っ張ってくればいいんだからさ。
目指せ明日のグレース・ホッパーだよ。
成果型評価になってから、官僚は年度内に成果が出ない物は
ガンガン切り捨てるよ。
未来を見据えてなんてのは無くなった。
LL Futureで大ウケしたやつかw
おまいらが教えてくれないから、LL Future 行き忘れたではないか。
>>405 チケット買った1000人のうち来なかった200人の一人か
つーかなんで忘れるん。
407 :
405:2008/09/02(火) 21:28:26
仕事でバタバタしてるうちに忘れてしまった(泣)。
んで
>>404 見てあーしまったって感じ。
ていうか同士が200人も居るのか。
任天堂法務部の方から参りました。
409 :
デフォルトの名無しさん:2008/09/05(金) 10:19:51
いつのまにか業界人のゴミだめになってる件について。
なら話題を振ってください
Matzの会社を財務分析してみたんだが。
http://d.hatena.ne.jp/AntiSeptic/20080704/p1 などと思わせぶりな言い方をするものだから覗いてみりゃ、
なんて事無い田舎の零細企業の財務諸表であって、面白くもなーんともなかったわけだ。
それにしても、この程度の収益で2007年度って、
あの会社にとっては多分空前絶後の景気のいい年だったはずだの
Rubyとゆー「鉱脈」があるだの言っているのは何なのだ。
Geekのヨタ話というのは、いつもこんなしょぼいスケールで行われているのか?
あそこの技術者の平均レベルは、他の普通の会社よりはずっと高いと思うって、
これじゃあ、技術なんてIT企業の収益とは何の関係も無いと証明しているようなもんじゃねえか。
そもそも、この会社が何をやっているのかがHPを見た限りではよく分からん。
要は受託開発だろ労働力を人月で売ってるだけだろマーケ屋がこねくりあげた横文字得意げに使ってなに悦に入ってやがんだコラ。
更には製品・サービス部門まであって、なにやら参考価格が書いてあるところを見ると、
多分にパッケージっぽい印象を受けるが、それでいて全体の粗利率が26%程度ではどうしようもないだろ。
あそこに入りたい人は、損益計算書も注意して見ておくといい。まぁこれはどんな会社でも同じだけど、
ここを見るといろんなことが見えて来る。株価指標を計算してみるのもいい(非公開会社でもね)。
古いネタだな
ソースが ogochan か。お前が言うな、ってこういう時に使う言葉かな…
414 :
デフォルトの名無しさん:2008/09/05(金) 22:14:39
githubどうっすか?
415 :
デフォルトの名無しさん:2008/09/06(土) 04:03:53
>>411 rubyネタだったら誰かは釣られたかもしれないが、おまえの株式分析自慢だったらオナニーでしかないな…
AntiSeptic って、話題になりそうないちゃもん付けネタを必死に追求してる
芸人だろw
以下のようなYAMLデータを・・・
---
- apple: 2
- orange: 3
実行結果
[{"apple"=>2}, {"orange"=>3}]
以下のように!pairsでデータの型を組(要素が 2 つの配列)に明示的に指定できますよね・・・
---
!pairs
- apple: 2
- orange: 3
実行結果
[["apple", 2], ["orange", 3]]
実行結果は[["apple:", 2], ["orange:", 3]]になったらすっきりするのになあと思うのはわたしだけ?
それとも実際の結果のような動作のほうが都合がよかったからこういう仕様なのでしょうか?
だとしたらそれは何?
418 :
デフォルトの名無しさん:2008/09/07(日) 06:23:52
女性なのにフェミニズムが嫌いな人が多いのは何でですか?
>実行結果は[["apple:", 2], ["orange:", 3]]になったら
その仕様だと、解析時にappleと2の区切りをどうやって判定するんだ
そもそも、何がどうすっきりするのかが分からない
>>419 解析時じゃなくて結果の"apple:"←このコロンです。
だから何ですっきりするんだよ
>>417 それは君が Ruby の初心者で、コレクションの要素を扱う方法を知らないからだよ
each とか map とか使ってるか?
コレクションでもいいんですけど、setterをやりたいときどうやるんですか?
もはや意味不明
デンターシステマw
YAMLもわかんねークズばっかだな。糞スレ。
427 :
デフォルトの名無しさん:2008/09/07(日) 10:20:36
女が混じると、こうも糞スレになるとは…
もう創価学会しかないな…
>>427 えっ?
そこ行くと女とやりまくれるんですか????
名字に
金、木、米、村、山、川、林、森、中、上、下、東、
西、南、北、大、小、島、辺、高、塚、藤、麻、岡、
清、宮、松、竹、梅、崎、野、部、沢、池、橋、田、
井、谷、石、吉、本、前、福、浦、原、内、尾、遠、
↑の漢字が入ってると間違いなく在日
まめちしきな
案外近くにいると思うよ
昔winnyあたりで流出した在日・同和名鑑どこかにないですか?
住所とか書いてあるやつですけど、引っ越してきた奴がキチガイなんで、こいつのことを警察にいくら問い合わせても教えてくれないで調べたいんです。
どなたか海外のFTPとかにアップしといてくれませんか?
なんでyamlの仕様の話がRubyスレに出てくるんだ。
1.8から標準ライブラリになったからじゃないの?
YAMLはRubyとは無関係
HTTPの仕様をRubyに聞くのに似ている
ようするに、
わからないから出て行け!!
ようするに問題の切り分けも出来ない香具師だってことを露呈してるわけ。
というわけで後から採用された標準ライブラリに関する話題は全部それぞれ専門スレ立ててね!
問題の切り分けが出来ない人がもう一人いた。
最初は相手してたのにわからなくなったからって冷たいですねw
439 :
デフォルトの名無しさん:2008/09/07(日) 20:25:57
創価学会はいいところなんですか?
何でもいいから動作速度10倍にしてくれ
いまのままじゃ使い物にならん
どういう用途において?
442 :
デフォルトの名無しさん:2008/09/07(日) 20:46:02
おまえが10倍速でプログラミングすれば、今のままでも使い物になるな
rexmlはなんであんなに遅いの?
Javaでxerces2使うより100倍くらい遅い気がする。
>>443 Hpricot使えばいいだろ
rexmlが遅いといってもBeautifulSoupよりは速い
>>444 BeautifulSoupってそんなに遅いんだっけ
もしベンチマーク結果とかあればおしえて
Hpricotってそんなに速いのか
Hpricotは別に速いわけじゃない
パース部がCで普通に動作してるだけ
Rubyスクリプトから見れば相対的に速い
あと枚挙とかのRuby実装部分の速度はただのRuby
「Hpricot速いぜ!」とか浮かれてsearchとか使いまくってるとどんどん遅くなる
448 :
デフォルトの名無しさん:2008/09/08(月) 10:00:30
おまんこから血が噴き出してるんですがどうしたらいいのでしょうか?
>>447 searchやatに関わるあたりを全部Cで書いたらもっと速くなるかな?
そうでもないか
450 :
デフォルトの名無しさん:2008/09/08(月) 11:06:41
層化だと10倍なんですか?
比較なら自分でちょこっとやればいいじゃん
…って、BeautifulSoup って Python のライブラリじゃねーか
ふつーに考えれば Python で作ったもののほうが若干速い傾向にあると思うんだけど
rails使える月1000円以下のサーバ教えてください(日本語サービスで)
なかったらphp使います
PHP使った方が早いならそうすれば。
Railsを満足行く速度で使うことのできる共用レンタルサーバはないよ
Webサーバの設定をいじれる専用サーバならなんとかなるかもしれない
HpricotってXMLパーサーじゃなくてHTMLパーサーじゃん。
DOMかSAXっぽくアクセスしたいのに違う物だされても…
つ Hpricot.XML
これじゃ駄目か?
HpricotでXMLがてきとーにパースできることを知らない人は結構多い
XHTMLとかもふつうに読めるぞ
require 'rubygems'
require 'open-uri'
require 'hpricot'
rss = URI.parse('
http://dailynews.yahoo.co.jp/fc/rss.xml').read
doc = Hpricot.XML.parse(rss)
puts doc.search('//rss/channel/item/title').map{|e| e.inner_text} # is utf-8
「早く解散を」43% 読売調査
大分 教員交代に児童涙も
釦膕鏤
防カビ剤 ポッカレモン回収
池袋中華街構想に地元反発も
露鵬は「怒りで震えるほど」
プロ野球 新人王争いの行方
大河「天地人」に小栗、上地ら
あ、1個化けてる
>>457 うちでは化けなかったけど、とりあえず、XMLがメソッドだから
parseいらなくね?
>>455 DOMでいいならXPATHでも問題ないだろ
今更だけど、MacRubyって、MacPerlとかMacIEとかの
前例にも懲りずめげないネーミングだなあ
いじけるなよささださん
ライブラリmatrixのVectorってあんまり使う人いないのかな
irb(main):001:0> RUBY_VERSION
=> "1.8.4"
irb(main):002:0> require 'matrix'
=> true
irb(main):003:0> v1=Vector[1,2,3]
=> Vector[1, 2, 3]
irb(main):004:0> v2=Vector[1,2,3]
=> Vector[1, 2, 3]
irb(main):005:0> v1==v2
=> true
irb(main):006:0> v1.equal? v2
=> false
irb(main):007:0> v1.eql? v2
=> false
irb(main):008:0> [v1.hash, v2.hash]
=> [25, 25]
Hashのキーにしたらヒットしなくて発覚
ttp://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/matrix.rb?view=log > alias eqn? ==
現時点でまだ直ってないっぽい。
↓ここにも気付いている人がいた
ttp://yueda.issp.u-tokyo.ac.jp/weda/blog/?date=20080807
ちなみにMatrixで同等の列ベクトルを表現した時と挙動が違う、というのが問題点ね
犯人はマツ
matrixとかあのへんの数学はコントリビュータの力が弱くてな
え?数学ライブラリ、チョコチョコ使ってるんだけど。複素数の方だけどw
volatileってのは要するにレジスタ変数のことだってだれか教えてやれw
意外とみんなの知識が雑
意外?
wsdl2rubyの質問はここでいいですか?
msn live searchのapiがrubyでどうしても使えない。
wsdl2rubyでクラスを作ろうと思ったんだがエラーが出てどうにもならない。
もしかしたらwsdl2ruby.rbが古いのかもしれないが。
誰かrubyでmsn api使ったことある人いる?
>>464 につけたし
> [1.hash, 1.0.hash]
=> [3, 45637]
> 1.eql? 1.0
=> false
> [[1].hash, [1.0].hash]
=> [1, 45639]
> [1].eql? [1.0]
=> false
> [Matrix[[1]].hash, Matrix[[1.0]].hash]
=> [3, 45637]
> Matrix[[1]].eql? Matrix[[1.0]]
=> true
これはObject#eql?の規約に違反してるっぽい
ボクの考えたRuby改善案ネタって盛り上がるだけで生産性に乏しいのが玉に亀裂
と誤爆してみる
と、嘆くだけしか能がない糞でした…
大学の友人が「マッツしてくるわ」って言うもんだから
なんのことかと思ったら「松屋で牛丼を食うこと」を「マッツする」というらしい。
うむ。デニるとか言ってた記憶があるな
1.9でWindowsではスクリプトのファイル名 $0 の文字コードはWindows-31Jとかになったほうが良いんじゃないだろうか
使用法を表示しようとして
puts "使用法: #{File.basename($0)} -a [-b] 入力ファイル [出力ファイル]"
とかやったら、スクリプトのファイル名が日本語だと
incompatible character encodings: ASCII-8BIT and Windows-31J (EncodingCompatibilityError)
となって、素直に連結できない
コナミのQMADSのサーバースクリプトRubyで動かしてるっぽいけど
落ちまくりだな。やっぱRuby重いんだな。
>>482 多分、元twitterの中の人が運用してるんだよ
>>480 ./ruby -v tmp/ほげ.rb
ruby 1.9.0 (2008-09-14 revision 19337) [i386-mingw32]
使用法: ほげ.rb -a [-b] 入力ファイル [出力ファイル]
File.basename($0).encode(__ENCODING__) にしたほうが確実だと思うが。
>>484 >>475的観点で、コードとテスト結果が矛盾してるなあと思って調べたら、
テストケースにtypo発見しちゃった
test/matrix/test_vector.rb (revision 19338)
> @v4 = Vector[1,0, 2.0, 3.0]
test/matrix/test_matrix.rb (revision 19338)
> @m4 = Matrix[[1,0, 2.0, 3.0], [4.0, 5.0, 6.0]]
× 1,0
○ 1.0
へっへっへ
>>484 もうひとつ
[1] == [1.0]
# => true
[[1]] == [[1.0]]
# => true
require 'matrix'
# => true
Vector[1] == Vector[1.0]
# => true
Matrix[[1]] == Matrix[[1.0]]
# => true
この流れは理に適っていると思うので、
> assert_not_equal @v1, @v4
> assert_not_equal @m1, @m4
こうはならないと思います
しまった、書き込み前に茶を1杯飲んだら先を越された。
まぁせっかくなので書いておくと、wikipediaにもその話が載ってるね。
http://ja.wikipedia.org/wiki/FORTRAN これを初めて目にしたのはエキスパートCプログラミングだったかな。
面白くていい本だったのだが、人に貸したら行方不明になってしまった。
今更買い直す気にはなれないけど実に残念だ。
ちなみに、redmine.ruby-lang.orgの「チケット」のページの下のリンクからとれる
CSV形式の出力は、符号化がめたくたになっているような気がする。
Atom形式は大丈夫っぽい。
>>484 まとめると、Matrix/Vectorの #eql? は #== とも #equal? とも違って、
Array#eql? に基づいたものでなければいけないんじゃないでしょうか、ということね
質問!
クラス内で定義されていないメソッドがいきなり使われてたりするんだけど、どうなってるのかがわからない。(当然継承とかincludeもしていない。)
例えば、R-specとかは、describe~endの中にテストを記述するけど、普通、自身のクラス外で定義されたものってのは、
HogeClass::describe
とかって使うもんじゃないの?
普通にdescribeってかいたら、自クラス内のdescribeメソッドを探すんじゃないかと思うんだけど。。。
誰か教えてください。
describeが定義されているのは
spec.rb =>
spec/extensions.rb =>
spec/extensions/main.rb のSpec::Extensions::Main::describeとして。
このファイルの最後で
include Spec::Extensions::Main
してるので、トップレベルで見えることになる。
>495
ありがとうございます!
例えば、hoge.rbのテストhoge_spec.rbを実行するときは、
# ruby hoge_spec.rb
です。
spec/extensions/main.rbは、hoge_spec.rbの中では呼び出されていません。どうして、hoge_spec.rbを実行中にspec/extensions/main.rbが実行されるのかがわからないのですが。。。
require 'spec'もしてないの?
498 :
デフォルトの名無しさん:2008/09/15(月) 17:26:52
Hashkellは玄人好みでムズイ…
Haskellは見た目が。。
個人的にLispよりさらに無理
はい擦れ違い擦れ違い
>>499 見た目って?
かなりすっきりしてると思うけどな
>>485 1.9.0-4使ってたんですが
最新版では対処されてたんですね
>ruby -ve "puts $0.encoding"
ruby 1.9.0 (2008-08-26 revision 18849) [i386-mingw32]
ASCII-8BIT
>ruby -ve "puts $0.encoding"
ruby 1.9.0 (2008-09-15 revision 0) [i386-mingw32]
Windows-31J
初めて最新版スナップショットからビルドしてみたけど
Subversion入れてないとrevisionが生成されないのかな
そんなことよりPythonスレに来てるRuby坊なんかしろよ屑
>>503 Rubyスレに来てるhaskell厨なんとかしてカス
RubyスレでもPython勧誘が定期的に出没する
個別に対応してくれ
dtrees :: [Char] -> [Term]
まずこんな宣言の仕方が気にくわない!数学かよと思う。なぜ今までのCとかの
宣言方法じゃダメだったんだと。
dtrees ds = concat [ joins ls rs | (ls,rs) <- [ lrs xs ys | (xs,ys) <- splits1 ds ]]
次にこんなのとか右から左に矢印がいくなんて信じられないね!
507 :
デフォルトの名無しさん:2008/09/15(月) 20:59:25
>>505 いや、俺たちの希望はエホバにあるはず!
輸血禁止!!
Matzが出血多量になったらどうする?
強制的に輸血するほうがruby界のためなのか、
そのまま死んでもらっても困らないのか
510 :
730:2008/09/15(月) 21:29:59
>>508-509 Matz って Jehovah's witness なの? Mormon かと思ってた。
つまりマンモグラフィーマンボみたいなものか
いや、あってるよ。
酒、タバコ、お茶禁止な人です
>>513 Mormon ならば輸血は OK じゃん。
他人の信仰を茶化すのはどうかと思うが。
あと、純潔を守らないといけなんいだよね
rubyってオフ会もできないじゃん orz
518 :
730:2008/09/16(火) 00:05:15
面白くて新規性があるアイデアを思いついたんですが、
完成させたら来年のruby会議で発表とかしても良いですか?
ちなみにニートです。
>>502 > 初めて最新版スナップショットからビルドしてみたけど
> Subversion入れてないとrevisionが生成されないのかな
snaphot.tar.gzだとparse.hも入ってないな。
生成用スクリプトが古いと思われ。
鼻糞…塩味。食べごたえがあって美味 。緑色が高品質とされる 。空腹時の定番。
耳垢…苦い。細かい毛が混じっていて、粉っぽい。水分が多いとニオイはトップクラスに分類される
目ヤニ…塩味。とにかく堅くて、小さい。歯応えが萎びた納豆に似ている
爪の垢…薄い塩味。もさっとしている。意外に量が多く、食べごたえあり。通は足の親指のモノを好む
ニキビ芯…味なし。ゴマみたい。
ヘソのゴマ…味なし。歯応えは体調によってまちまち。香りは独特
フケ…粉っぽい。1か所に大量に集めて食うのがベター 。まれににフケの中央に小さいカサブタが付いてくる事があるが、これはまぎれもなくプレミア物。
肛門の回りに付着するカス…まれにGET出来るが極めて貴重。歯応えが神がかっている
膿…ジュルジュルして口で絡み合う。味は苦いが飲み応えがグッド!!
毛根の透明の物質…味なし。稀に歯応え最強のモノがGET出来る。玉袋付近の毛が高確率
歯クソ…モノによる。食材、潜伏期間などによってまちまち。一般には肉類、三日間熟成、発酵がよいとされる
チンカス…ほぼ味なし。マシュマロのような見た目。マニアには絶大な支持と人気を誇るニオイ最強品といっても過言ではない
舌苔…パサパサした中に若干の潤いあり(口内の状況により様々)薄い粘土の味がする。
fusianaまでしてコピペ君って馬鹿だな、まで読んだ
ふしあなさんじゃなくて、navi2chだろ。
RubyとCOBOLで生産性が同じwww
Ruby\(^o^)/
おい、PythonスレのRuby坊マジどうにかしろ屑ども
\(^o^)/なんて言ってる場合じゃねぇから
どうしろと
>>527 お前をどうにかしてほしいが、python スレの住人に頼んでも困るだろうからやめとく。
>>529 とりあえずPythonスレ覗いてみ、オレなんてカワイイもんだから
>>527 このスレで君がそれを書いたことでその人も報われたことでしょう
∧_∧
( ´・ω・) なんかここ居心地いいな
( つ旦O
と_)_)
Rubyの普及にはRubyたんなる萌えキャラが必要だな
>>530 そういう話じゃなくて、Python スレの住人はお前さんをどうこう出来ないだろ? って話だ。
なんでここの住人に、その「Ruby坊」をどうこう出来るって思うのさ。
>>534 そのぐらいわかってるよ
なんかこっちのスレの方が楽しそうだったのさ
なんていうか、Enjoy Programmingをスローガンの一つにしてるぐらいなんだから
もうちょっと陽気でも良いと思うんだ
地中海か南米へGO
OSたん(「~たん」ネーミング)ブーム以前のキャラのまとめ、ってどこかに
ないかのう。マジとことかえここが最古か?
やっぱ水島上等兵をベースにすべきだろ
>>540 やっぱRubyたんは
世界中の高貴とされる衣装の中から「自分の好きなパーツ」をパクりまくった独自の衣装を着て、
他のすべてのキャラを上から目線で見下す勘違い女じゃないとな。
イカれたグリグリ目のヤンデレだろ。なんせカルトだもの
死んだ魚の目
口元だけ不気味に笑っている
絢爛豪華な調度品に囲まれ
常に上から目線
やべ、「るびまの竪琴」というフレーズが今脳内ブームに
Rubyの個性ってどんな点なのか、真面目に考えた
・赤い宝石
・オブジェクト指向
・動的なインタープリタ言語。柔軟すぎるぐらい柔軟
・他の言語を(基本的には)尊敬している
・他の言語の気に入ったところを積極的に取り入れる
・遅い遅いとバカにされる
・親切で分かりやすいドキュメント? なにそれ?
・今はRailsのおかげで知名度が右上がり
・・・擬人化のイメージが湧かないな
「まつもと ゆきひろ」が平仮名なのはルビの大きさで印字するためなんですよ、うふふ
・和製だが、和風というよりハイカラ
でもRailsの糞さが浮き彫りになってきたじゃん。
twitterがRailsやめるとかやめないとか
Railsの糞さを擁護するつもりは全然ないが、パフォーマンスボトルネックを
徐々に置き換えていくことができるということを実証した点で、twitterの
やってることはRubyでのWebサービス提供の非常にいい運用例になってる。
>>551はRailsを勘違いしている
または業務未経験
>>552 Rails並の中級フレームワークで、部分的置き換えが容易なものってそう多くないよね
>>548 そこまで挙げてイメージ湧かないとな?俺は余裕で勃起したが。
・赤い宝石 ∴ 目が赤くて髪は白。神秘系のロリ
・動的なインタープリタ言語。柔軟すぎるぐらい柔軟
∴ 体がやぁらかい。体操が得意。常にブルマを着用
・他の言語を(基本的には)尊敬している ∴ 従順で頑張り屋
・親切で分かりやすいドキュメント? なにそれ?
∴ ツンデレ
・今はRailsのおかげで知名度が右上がり
∴ Railsたんに校内ミスコンに無理やり出場させられ、優勝。一躍校内のアイドルに
> 一躍校内のアイドルに
んで、使ってみてがっかりするんですね。わかります。
ゆるゆるオマンコのrubyたん
質問です
皆さんがrubyプログラミングするとき使っているエディタは何ですか?
vim
お勧めが知りたいならOSくらい書けと
アナタが使っている環境を聞きたいだけです。
OS不問
Windows:メモ帳、サクラエディタ、Xyzzy
Linux:nano、leafpad、gedit、kate、emacs
MacOSX:nano、(KDEとは関係ないほうの)KEdit
Windows
ちっちゃいのならRDE、Meadow(使い分けは気まぐれ)
ある程度以上大きくなるとNetBeans
Mac: vim, TextMate あー無難杉
Windows : EmEditorはここでも異端ですか
notepad++
Ruby では小さいのしか書いてないから vi か emacs で基本書き捨てだな。
あれ、なんかきのうの書き込みが見当たらない
と、このようにRubyを使うと健忘症もひどくなります。
本スレに投げてみよう
str = "hoge"
って「strに"hoge"を代入する」でいい?
Rubyでの = は代入ではないよね?
マニュアルで代入って言ってるんだから代入って言葉使っとけ
ただのラベルづけだという内部動作を理解した上でなら、代入と呼んでいいと思う
「代入ってあの代入だろ?」と他の言語の知識を持ち込んでしまう原因になるのだけは避けたいところ
>>575 > 「代入ってあの代入だろ?」と他の言語の知識を持ち込んでしまう原因になるのだけは避けたいところ
具体的にどの言語の代入のどういう知識を持ち込んでしまうと困るのかkwsk
Javaとかでいうオブジェクトのコピーのことでは?
Javaの代入ではコピーは起きませんが?
>577
それを言うならC++な
Javaは基本型(数値など)は即値、オブジェクトは参照だから
Rubyとは割と似てる方ではないかと
C++の場合
変数がオブジェクトへの参照でなく、オブジェクトそのものを保持でき
代入は基本的にコピーだから、その場合に実体がコピーされる
参照コピーなら明示的に参照を得ることになる
>>579 C++ と Java 使ってて初めその差でちょっと混乱した
P(ryの事ですね、分かります
>>581 なんでこんな短い文章を最後まで読めないの?バカなの?
>>581 過激な特徴をタイプしながら一人で興奮してるのはわかるけど、
こんな特徴を挙げちゃったら、殆どの人間を「C#信者」扱いできなくなると思うんだが。
(だって、流石にここまでの奴はまずいないものな)
> 関数名にCamelCaseが来るという時点でまず C# 使わない人間から見ると異常。
こいつが変な宗教持ってるんじゃね?
lowerCamelCaseはHaskellやOCamlでよく見る
どうしてCamelCaseなのにPerlやOCamlで見ないのは何故なんだぜ
DelphiもHejlsbergが作った言語じゃなかったっけか
require 'ripper'
p Ripper.lex("puts __ENCODING__")
>[Ripper FATAL] unknown token 306 (RuntimeError)
なんでだろか
ruby 1.9.0 (2008-08-26 revision 18849) [i686-linux]
ripperがrubyの変更に追いついてないとか?
TempとTmpは、どっちかに統一せいやと前から思ってました
>>584 >
>>581 > > 関数名にCamelCaseが来るという時点でまず C# 使わない人間から見ると異常。
気持ちはわかる。好みの問題だが。MSってCamelCaseが好きな印象がある。
delete!
的な表記をあえてCでやると何になる?
deleteThis
deleteSelf
deleteMe
...
なんかRubyがらみのCのソース書くときの決まりみたいのはあったりするのかな。
delete_bang(obj)
みたいな感じ?
よくわからんけど,拡張なら慣習たくさんありそう
// from gmp
prefix_clear(obj);
prefixにはobjの型とかその辺
>>594 CはOOPLではない。パラダイムが違う機構を持ち込んでも混乱のもと。
おとなしく
int type_delete(T *obj)
にしておけ。
>>594 真面目に書けば
delete_destructively
かなw
delete_アーッ
アッー間違えた
>>519 snapshotに parse.h と revision.hを入れて欲しいです
せめて revision.h だけは入れて~
parse.c を消せば parse.y から parse.[ch]は生成されるので
とは、いってもmakeでエラー出て止まるのもなんなので
parse.h が無いときも parse.c ごと生成しなおすルールになってるべきだとは思いますが
>>600 希望はここに書いたところでどうにもならないぞ
591は給与がやすすぐる
>>602 バカだなあ、給料が一回り安くても好きなことしたい・新しいことしたいって層にアピールしてるに決まってるだろ
全然安く思えんのですが、それは俺が田舎在住だからでしょうか
東京って初任給25万でも安いのか
田舎の人間には分からない世界だ
なんでお前ら591の給料を知ってるんだ
Guy Decouxさんのご冥福をお祈りします。
Matzにっき(9/5)で言及されたときにはもうお亡くなりになってたんだね。
20代で30万…ゴクリ
そら「とうきょうさ行くだ 」ってなるわ
普通に住むだけで10万近く減るけどな
まあどっちもどっちって感じだ
東京での派遣の仕事が田舎県のハロワで大量にあるけど、
あれって田舎の基準では高給なんだよね
住むとこのこと考えたら給料に見合わないと思うんだけどなあ
あれはある意味騙しに近い
まあ、オフィシャルと言えるほどのはできてねってことだな
`gsub!': broken Windows-31J string (ArgumentError)
とか出されても何をどうしていいのかまったくわかりません
force_encodingしまくる作業に・・・
>>615 Encoding についてきちんと学べ
>>617 みたいなのは to_s しまくってるスクリプトがアホっぽいのと同じ
gsubだから正規表現がからんできて面倒だよ。普通の人には
ripperなんだけど
require 'ripper'
require 'pp'
pp Ripper.lex(<<EOS)
def my_while(cond, &body)
while cond.call
body.call
end
end
a = 0
my_while -> { a < 5 } do
puts a
a += 1
end
EOS
これが、[[7, 20], :on_rbrace, "}"]] で終わっちゃう
ruby 1.9.0 (2008-08-26 revision 18849) [i386-mswin32]
ビルド環境がないので、最新で直ってるのかは知らない
->って何
->使うような人には自力で直してパッチを投げて欲しい。
>>620 おーおれもなるなと書こうと思ったらリビジョンそれより低かった
意味ねー
gsub・scanのブロックパラメータをMatchDataにするやつは、新しい名前付けて入れちゃえばいいのに
subm gsubm scanm
subx gsubx scanx
sub2 gsub2 scan2
putsfっていつになったら実装されるの?
いつになったらも何も、初耳ですが。
つーか、どういうモノ?
そりゃ名前からして、 printf のフォーマットの最後の \n を省略できるんだろう
期待大だなw
def putsf(fmt, *args)
puts fmt % args
end
みたいな?
>>627 良かったじゃん、長年待ってたっぽいけど、
26時間ほどで実装されたぞ。
大儀である!
結局
>>627はネタだったのかな
それとも、本当にputsfっていうのあったの?
普通のセンスならあって当然の関数ではある
>>635 結局は
>>630でしかないじゃん。まあ、それを言ったらputsもそうか。
でも、
>>631(の中身だけ)でいいじゃん
String#% は知らなかったから為にはなったけど、普通のセンスってのもどうかと
普通のセンス = 出力メソッドには常に改行付きも準備しろ、ですか。
うーん。ばかげてるような気はするが、putsがあってしかも便利だと
いう点で否めないような気もしてきたw
有れば便利かも知れんが,
printfのフォーマット文字列にリテラル以外を書くのはあまりよろしくないし,
別に\nくらい自分で書けば済むよなあと
Cに無いからって理由で実装されないだろうな
RubyのString#%はPythonの演算子に倣ったものだが、
実は単に sprintf の別名だったりするな。
puts にはArrayの要素を改行区切りで出力するって役目があるが
書式付けるとホントに\n省略だけの役目だよなあw
個人的には self.method(:メソッド名) とか
map{|x|x.メソッド}の略記法が欲しいかな
(1..10).map(&:to_s)
>>643 その辺もputsのやっかいな所なんじゃないの?
ってかちょっと前にもそう言うレスを見たような
単純に to_s して "\n" つけて出すだけじゃないっていう
だから、
>>627に戻ると putsf にはどういう動作を期待してるんだろう?
しょうもない話にはよく食い付くな
2chのスレに何を期待してるんだ
互換性軽視のわりに小汚い因習を引きずってるのがなんだかね。
初心に立ち返ってドびっくり最小限の法則に基づいて文法およびライブラリを整理してもらいたい。
>>648 それはver2.1とかになるの?
Ruby 3.0とかで再来年のクリスマスとかそう言う話かなぁ
Ruby2が来年とかヤメテ
しばらくRuby1.9.xを充実させてくれればいいよ
>>648 因習がないのが嫌なら自分で言語をたちあげればいいんじゃね
"".split(/x/)
これが[""]を返すようになって欲しい
ruby厨ってすぐ「嫌なら自分で言語作ればいいんじゃない?」って言うよね
教祖の教えそのままで面白い
いやいや、自分で勝手に組み込みクラスすら拡張できる言語なのにもかかわらず
「○○が欲しい」って言われたら自分で言語作ってねと言うしかあんめえ
妹「今日の夕飯なにがイイ~?」
俺「ドリアー」
妹「じゃあ作って」
俺「……はい」
(´・ω・`)
俺「今日の夕飯なにがイイ~?」
俺「ドリアー」
俺「じゃあ作って」
俺「……はい」
(´・ω・`)
Matzさん、楽天の糞システムから個人情報が流出してるようです
>>658 マジならこんなところにそういうこと書くなクソ野郎
楽天ってrubyなの?
perlだよ
Matzは楽天技術研究所のフェローでしょ
ふぇろーって何なの?
語感からすると、顧問よりもアドバイザーよりもさらに薄い感じ?
辞書では特別研究員とか名誉会員っぽいこと書いてるけど、Matzのは
実体としては協賛・協力程度のニュアンスかな、とも思う
名義貸し、とまで言うと言い過ぎなんだろうけど
fellow なんてピンキリ。薄いのもあるし、IBM fellow みたいに
権威あるものもある。その言葉だけで判断できるものではない。
フェローはすっごい適当な役職名でなあ
とりあえず何フェローなのかくらいソースに当たろうぜ
ttp://www.rakuten.co.jp/info/release/2007/0531.html > まつもと氏にRubyやオープンソースソフトウェアの活用に関する助言・指導をいただきます。
> 楽天技術研究所において楽天の大規模サービス開発の経験および環境を活かした共同での技術研究を実施してまいります。
というわけで、技術助言職および共同研究員ってとこかね
動いてるプログラムに対する責任はたぶん言うほど無いな
もちろん楽天のセキュリティに対して全責任を負っているわけではないが、
セキュリティホールを産んでしまうような言語仕様にしてしまった責任は免れないと思うよ。
言語仕様と言うより担当者のミスだろ、単に
>>669 > セキュリティホールを産んでしまうような言語仕様にしてしまった責任は免れないと思うよ。
セキュリティーホールを生まない言語仕様になってる言語の具体例を教えて下さい
「ような」とか「みたいな」に歪んだ夢を一杯詰め込んで、それをガソリン代わりに
根拠・論拠の世界を一気に突き抜けてお花畑に到達するのがアホの慣わし。
セキュリティホールを出すような言語設計をしたのが開発者の責任なら、
今頃びよーねすっぽすっぽ先生は終身刑だろw
プログラムは全てTeXで書かれるようになるな
Matzいわく
「現状だとまあ無いよりマシな程度」
「今のところ、もっとうまいセキュリティモデルのアイディアは無い」
「ネタがあるなら前向きに検討してみたい」
LL Futureでもいろいろ言われてたね
ただ、セキュリティは利便性とかパフォとかとのトレードオフだから
なかなか難しい。セキュリティ専用言語ならともかく、汎用のもので言語設計者が
出来ることって今のところあんまりないんじゃないかな。
言語設計よりむしろフレームワークとか実用の段階で対処すべき問題だと思うけど
質問質問。
Windows版Ruby、ActiveScriptRubyなんかを使うと、起動だけがバカみたいに遅いんだけど、対処法はある?
@echo off
echo %time%
ruby -e "require 'mechanize'; puts 'hello!'"
echo %time%
echo %PROCESSOR_IDENTIFIER%
実行
22:18:14.18
hello!
22:18:19.34
x86 Family 6 Model 8 Stepping 6, GenuineIntel
これは遅いって。
coLinuxあるいはGNU/Linuxを使う。
Windowsはプロセスの実行が遅くてスレッドの実行が速い。
GNU/Linuxはその逆。
cygwin上で./configureを実行するとあまりの遅さに老衰死するぞ
ちなみにDebian
$ time ruby -e "require 'rubygems'; require 'mechanize'; puts 'hello!'"
hello!
real 0m1.573s
user 0m1.340s
sys 0m0.230s
$ cat /proc/cpuinfo | grep MHz
cpu MHz : 400.925
>>679 PentiumIIIで起動に5秒か
ゴミだな
今までWindowsで使っていて起動にそんなかかった事が無い。
ruby -e "puts 'hello'" 程度ならまさに一瞬で起動して終わる。
特定の環境の問題ではなかろうか。
>>683 なんでわざわざほぼ最小構成を持ち出すの?
railsをバリバリ使ったものを-rdebugで実行とかやったら楽しそうだな
>>684 むしろ、なんで起動時間の確認に余分なライブラリを
requireする時間まで持ち出すのかわからん。そこは既に起動後の話だし。
で、rubygemsをrequireすれば、それだけでそれなりに時間がかかのは事実だけど、
それでもソコまでかかった事は一度も無いなぁ。
>>677 そのくせ、rubyで書けばセキュアです、っていうふいんき出してるよねw
Rubyって日本とアメリカ以外で使われてるの?
>>683 > ruby -e "puts 'hello'" 程度ならまさに一瞬で起動して終わる。
ほい
rubygem を require したのは時間かかるのをわかりやすくしただけ
11:35:25.96
hello!
11:35:26.96
ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
x86 Family 6 Model 8 Stepping 6, GenuineIntel
ちなみに ruby -v は本当に一瞬
@echo off
echo %time%
ruby -e "puts 'hello!'"
echo %time%
ruby -v
echo %PROCESSOR_IDENTIFIER%
なんだろね
rubygemsだけなら一瞬だったから、dllの配置とかそういう問題かもしれない
>>692 手元の環境だとこんな感じだった。
ちなみに、ASRのruby console上でバッチファイルを起動したよ。
環境やRuby(ASR)のバージョンの問題なのかな。
14:28:29.95
hello!
14:28:29.98
ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-mswin32]
14:28:30.00
x86 Family 6 Model 15 Stepping 6, GenuineIntel
相変わらずスラッシュドットって寒気がするほどキモイな。
オワタLinux
++と--はいつ実装されるの?ActiveSupport導入したらいける?
>>698 そもそも難しいと思う
というか、インクリメントなんてRubyでそんな頻繁に使うか?
年に数回とかそういうイベント的なもんじゃね?
別に += 1 で何も困らんしなあ
破壊的なら succ! 実装すりゃ良いし
むしろ += すら必須じゃないんだぜ?(便利ではあるけど)
前置ならだいぶ昔から実装されてるぜ。
>>698 --ならすぐ実装してやるぞ。
Index: parse.y
===================================================================
--- parse.y (revision 19655)
+++ parse.y (working copy)
@@ -6344,4 +6344,5 @@ parser_yylex(struct parser_params *parse
case '#': /* it's a comment */
+ comment:
/* no magic_comment in shebang line */
if (parser->line_count == (parser->has_shebang ? 2 : 1)
@@ -6768,4 +6769,5 @@ parser_yylex(struct parser_params *parse
case '-':
c = nextc();
+ if (c == '-') goto comment;
if (lex_state == EXPR_FNAME || lex_state == EXPR_DOT) {
lex_state = EXPR_ARG;
おまいらときたらネタばっかり
マジレスすると ++ がないことの害悪は
++ が使えないこと自体ではなく ++ が使えないというごくまっとうなクレームが
何度も何度も発生することである。どう考えてもインターネッツリソースの無駄なので
早々に実装して不毛なループを根絶してもらいたい。
変数を特殊なメソッドしか持たない特殊なオブジェクトとして抽象化するとか
>704
でも ++ どころか += が無い言語なんてザラにあるのだが。
むしろ1インクリメントする演算子があるのってC系だけじゃね?
C系しか知らない香具師がそれがあたりまえだと思って喚いてるだけ
+=1ができるから当然
++もできるはずという類推を裏切るから
みんなビックリしちゃうんだよ
C なら for 文やらポインタ演算で頻繁に使うけど
Ruby なら each があるから普通にイラネ
> +=1ができるから当然
> ++もできるはずという類推を裏切るから
そんな類推しないだろう
+=1 が出来るなら *= も出来るだろう、とかならわかるが
序数的なインターフェイスとして、Rubiniusなんかだったら実装できることなんだろうけど、
この手の問題のやっかいなのは、Matzを信仰してるrubyistが、Matzが言ったことに対して、
思考停止してしまっているという点にあると思う
だから ++ 専用の記法として設定したくなるほどどこでそんなに使うんだよ
a = 1
b = a
a++
これで b も 2 になるほうがいいと思うなら、自分でそういう俺Rubyをforkすれば?
そういう見方しかできないからアホのままなんだよ
>>714 オブジェクトとかどうでもいいから ++ を実装しろというほうがRubyではアホ
仮にa++を入れるとしたら
a += 1の糖衣構文って形になるだろうな
でも=記号無しに「変数へのオブジェクトの代入」を行うのは、確かにわかりにくくて嫌だ
Q. なんで+=があるのに++がねーの?
A. まっつんが常に一貫性のある行動を取るとは限らないからです。
今ないのと同様に、要不要にかかわらずある日突然気分次第で付くかもしれません。
>>716 succ! を実装するという手もある
実行した時点で self 自体がオブジェクトごと変更される極悪メソッドになるが
あと Integer を整数コンテナにするとか
せっかく即値にしたのに意味ねーよとは思うけど、世界中のRubyスクリプトを遅くするだけの価値が ++ にはあるのだろう
matz rubyでは、処理系までリフレクションが及ばないので、今の形なだけなのに、
++なんか存在するのがおかしいと思ってるのはどうかしてる
どういうふうに「処理系までリフレクションが及ぶ」ようになれば、
どのようにして++を実装するんですか?
変数を操作するだけじゃん
オブジェクトを操作することまでしか思考が及ばないのかね
>>721 a++ とは書けても 1++ とは書けないの?
それってRubyとしては変だよね。
1++ と書けないのなら a++ とも書けないのは正常。
なら現状で問題ないじゃん。
a++はともかく(1+=1と書けないけどa+=1と書けるわけだし)、
.succ!みたいなメソッド形式はさすがに破綻してるでしょ
っていうかネタだと思ったんだが
変数オブジェクトだと思えば
726 :
デフォルトの名無しさん:2008/10/02(木) 12:07:02
この視野の狭い奴らを、Matz Ruby世代と呼ぶ
問題は導入できるかできないかではない。
いつ導入するかだ。
>>721 Rubyに変数という物体はない
オブジェクトに名前がついてるだけだ
名前を付け替えたいなら代入しろ
まさにMatz Ruby世代
「現行のRubyでは今のところ変な実装になる意見しかないのでRuby作者を説得できてない」が正しい表現
++ 使いたい派はRubyらしい実装方法を提唱すること
>Matz Ruby世代
「便利だから」と後先考えずに、新しい文法をやたらと導入したがる新世代よりマシです
文法どころじゃなくて処理系自体の話なんだが、まったく理解できてないみたいね
Rubinius だったらできそうだという話を検索で見つけて、
ろくろく読みもせずに喜んでる厨がいると聞いて飛んできました。
735 :
デフォルトの名無しさん:2008/10/02(木) 13:02:50
できるできないの話じゃなくて、やるやらないの話だと何度言えば
++を実装しなかったら鳥取の県境を30cm島根方向にずらすぞ
a += 1 が、 a = a + 1 なように、
a++ が、a = a.succ になるような感じ?
++はともかく
Object#becomeはどうなったんだっけ
わかった!
a=.succ
a.++ならば作れる?
プリプロセッサ通して
#define ++ +=1
すりゃいいだけだろ。頭使えよ。
>>741 いちいちcpp呼び出して済む話ならこんな流れにならんと思う。
>>740 class Integer
define_method("++") do self + 1 end
end
1.send("++") #=> 2
メソッド呼出しで代入を起こすのは無茶だとあれほど言ったのにおまいらときたら
でも1が全部2の意味になったら面白いねw
a = a.succ方式なら何にも問題にならないけど
>>742 ちょっと長いね。
こうはできないの?
a = 1
a.++
print a #=> 2
a=a.+(x)はよくて、a=a.succがいけないのはなんでじゃろ
++がsucc!じゃなくて、succと代入ということ
把握した
750 :
134:2008/10/02(木) 19:37:06
C/C++のプログラムにrubyを埋め込むことは出来ませんか?参考になるサイトが
あれば教えて下さい><
751 :
750:2008/10/02(木) 19:37:46
まちがった↑ 134ではないです。すみません
>>752 ありがとうございます。
試してみたところ簡単なプログラムは動きました。
今、ヘッダファイル覗いてるんですがわくわくしてきましたw
だから a += 1 の構文糖にすればいいと何度言ったら。
=がないのに代入してるのは気持ち悪いとかいうやつは
=がついてるのに代入でもない#[]=とかはどんな気持ちで見ているんだ。
Countableモジュールでも作ってそれに#++と#--を実装すればいいよ
a += 1の糖衣構文?ワロタ
そもそも a++ なんて醜い表記は捨てるべきだと思うんだ。C言語でも。
haskellなら</>とか<+>とかもありという‥
阻害はしてないだろ
バージョン番号
もうちょっとで整数1の差になるな
>>755 Ruby は self のオブジェクトを別のオブジェクトに変更することはできない
irb> class Integer; def countup; self +=1; end; end
SyntaxError: compile error
(irb):1: Can't change the value of self
だから、++ の実装は文法というかシンタックスシュガー用のパーサ動作の変更を必要とする
単純にクラスにメソッドを追加しただけでは動作しない
C系信者って怖いなあ、C系以外認めないってことなの?
そんな調子でCOBOLやらLisp系全般やらPrologやDelphiやPythonにも
「++演算子の実装を要求する!」とか言って突っ掛かってるんだろうか
Delphiから来たオイラには全く理解出来んわ
実際 ++ なんて、ポインタ操作を除けばfor文やwhileのカウント程度にしか
使われてないだろ
そんなに欲しいほどRubyで使用頻度高いか?
>>765 >>712 gsubはgsub!込みで45000
+=1は30000
だからかなり頻度は高いと言える。
>>764 Delにも専用のインクリメント機能Inc(a)がある。こっちは手続きだけど。
結局は、++を自己代入の一種として定義しちゃえばいい感じだね
信者からするとmatzを否定されたみたいで嫌なのかな
ひさしぶりのるびまきてたんだな
>>767 違う、自己代入だとa++でaの指しているのが違うオブジェクトになるのが嫌なんだ
かといって破壊的にやると
>>713の問題がある
しかもそうした諸問題の割に、導入してもたいしたメリットがない(明示的にa+=1と書けばいいじゃん、という話になる)
>>768 今見てきた
珍しくHotlinksが載ってなかったことと、桑田さんの頑張りが目立った
しかしついに半年か・・・次は1.9.1の後かな
>766
だがInc()がRubyに欲しいかと言われると微妙
(そもそもInc()自体あんまり使わなかったってのもあるが)
あっても構わんが、無くても何も不便に思わん
たった数文字違いで全く同じこと出来るんだから別にいいやと思う
そんな数文字で嫌ならキーワードの冗長なDelphiなんて使わんしw
つか頻繁に使うわけでないgsubと比較してどうする
each とか検索してみたら吹くよ?
>a++でaの指しているのが違うオブジェクトになるのが嫌なんだ
これって、++がsucc!であるのが当然と思ってるから、そうなのであって
実は全然問題にならないことだと思う
rubyにおいて++をどう定義づけるかが問題で、こうでなくてはならない!というものではなくて
succ!的なイメージを捨て去ればいいだけのことじゃない?
a+=1だって違うオブジェクトになるわけだし、そうなることがわかってれば、
その範囲で使うだけのことかと
>導入してもたいしたメリットがない
そもそも自分も++が無くてかまわない立場で、
ただ、昔はmatzの説明でそういうもんかと納得してたけど、今はちょっと違うかなと思いはじめた
少し考え方を変えることで、どうとでもなるようなことだったんだなと
実装するのがめんどくせーくらいのつもりでで言っただけなのに
ここまで必死に擁護されるとも思わなかっただろうなw
いやオブジェクトと変数のセマンティック的にありえないのだがw
ていうか必死なのはどっちだよwwwww
俺はMatzを擁護するワケでもなく、要らない
Pythonとかも無いんだが、そっちにも入れろって言うワケ?
>>772 実装するのが面倒なのはなぜか、ということを考えると主張の根幹が見えるよ
オブジェクト指向であることを崩せば実装は非常に簡単だけど、それをしたくないんだろう
Rubyであることを保持しつつ ++ を実装する方法があれば、Ruby作者だって前向きに考えるさ
++ 作ってくれというほうの主張はそういうの無しにとても利己的だから、こうやって非難されるんだよ
せめて実装可能な方法論くらい持ち込んでくれ
変数の操作というのは、代入という究極魔法でどうにでもなるってことじゃなくて?
なんとなくなんだが、++ 導入派の人たちは
i = 0
while (i < 3) do
tmp = i
i++
puts "#{tmp}です!"
end
が「1です!」から始まるんじゃないかと思ってる節があるんだがどうだろう
なんか同じところでループしそうな雰囲気
よくわからないのが、文字列等なら破壊的メソッドがあって
オブジェクトIDを保持しながら操作できるのに、数値は無理なの?
例えば文字列をASCII順にシフトする String#++ みたいなものが
あったとしても、別にかまわないんでしょ?
だから、自己代入にすれば何ら問題はないという話なのに、最初に戻すなって
結論としてはRubyの整数の実装が糞ってことみたいだな。
プリミティブがある言語がいいならJavaでも使ってろって
>>778 文字列は「入れ物」なんだけど、整数は即値なんだよね
Integer には concat や replace に該当するものがないだろ
数値の変更がオブジェクトの変更なんだ
>>780 じゃあ数値は全部数値格納オブジェクトになるけど、Ruby が遅いって文句言うなよ
>>778 いいかげん、「即値」という概念がわからないやつは黙った方がいい
>>775 ++は正直どうでもいいんだけどさ
aliasとかundefあたりは思いっきり「オブジェクト指向であること」を
崩しまくってると思うんだがどうよ?
即値まで使ってんのにおっそいよなRuby。
>>785 ++ ごときで崩したくねーという思いがあるのではないかと推測
Rubyやってると「++ は別になくてもいいかな」とか思う
>>786 本来「超おっそい」シロモノだった完全完璧オブジェクト指向スクリプト言語を、
頻繁に使われる整数などを即値にして妥協することで「まあ遅い」のレベルに引き上げたのですよ
そのへんの順番を勘違いしてはいけませぬぬぬ
完璧超人が正義超人になったようなもんだな
いや、「今のままだと入れるのめんどいから意味の通る実装募集中」のようなことをMLでRuby作者が言った
10年近く前の話だが
駄目だこりゃ。
もう唯一まともな実装と言っていいRuby.NETに期待だな。
IronRuby ?
794 :
750:2008/10/04(土) 00:06:14
以前、C/C++への組み込みについて質問させて頂いたんですが、組み込む際に
windowsではlibmsvcrt-ruby18.dll.aへリンクさせれば出来たのですが、
linux上ではどのファイルにリンクさせれば出来るのかが分かりません。
ご教示お願いします。
libruby.soに類するモノがあるなら -Lそれがあるディレクトリ -lruby
libruby-static.aがあれば -Lそれがあるディレクトリ -lruby-static
かしら。
libruby-static.aかなと私も思ったんですが、違うみたいなんですよね。
でlibruby.1.8.so.1.8.6をリンクさせたら出来ました。ありがとうございました。
-staticのほうはリンカで静的リンクを明示しないと使ってくれないのではないか。
>792
VB.NET に ++ は無いけどな。
>>784 Fixnumが即値かどうかじゃなくてNumericがimmutableだからだろ
その影響で即値じゃないBignumにもFloatにも破壊的メソッドは無い
++ が(変数ではなく、オブジェクトを改変する意味で)破壊的メソッドだったら
a = 2
b = a
a++
とやったときに、b が 3 になってしまう。
なら「a++ は a = a.succ のsyntax sugar」ってことでいいんじゃないかと思うんだが。
副作用のせいで定義できない挙動は、未定義動作としておけばよい。
個人的には、最近データ統計とるプログラム書く機会が多くて、+= 1 をやたら書く
ハメになったから、++ があったほうが嬉しいとは思った。
++a を a += 1 の syntax sugar とすることはできるけど
a++ は難しいわな。
そう考えると、なくていいように思う。
さあFixnumの+を再定義する作業に戻るんだ
a++は
proc{|tmp| tmp = a; a = a.succ; tmp}.call(nil)
の syntax sugar にしてみるとか
いつまでこんな下らないネタをひっぱるんだ。
ruby-devに投稿する勇気もないやつらがぐだぐだ言っても無駄だし
たいした機能じゃない。
a+=1がa++になって何がうれしいんだ。
またいつもの、途中までは自分がお利口さんのつもりで偉そうに議論しまくって、
穴を指摘されたり態度の厨臭さを指摘されたら、途端に「便所の落書きに何を期待してるんだ?」で
逃げる展開が始まるんすかw
>>806 perl、c、java を仕事柄やっていて、++を使うことがなんだかんだ多いので
ruby でも書けたほうが、書き間違えるストレスが減る
これをストレスに感じるようなら、他の重要な部分で致命的な勘違いを
してる可能性がある。rubyの使用を停止することをおすすめする。
>>808 いいじゃん、言語にメリハリがつく。
RubyはC, Java, Perlとは違う言語なんだし、出来ることと出来ないことが
あって当然でしょ?
できるならできるにこしたことないじゃん
朝日新聞の電話調査によるとRubyを避ける要因の3.2%は++がないことだからな。
Rubyの今後の発展を考えたら対応する価値が十分にあると思うよ。
>>811 出来ないというより、「言語哲学によりさせない」って感じかな。
Javaが多重継承できないのと一緒。
>>812 ネタはいいよつまらないから。
まゆつば
こんな他言語エミュレーションてんこ盛りの言語に言語哲学も何も。
whileだの$!だのいろいろくっつけておいて++だけ頑なに拒否?
>>813 Javaで多重継承できないのは哲学というより、多重継承では一貫性を保つのが難しくなる側面
(たとえばC++でvirtual継承で無理やり何とかしてるダイアモンド継承の問題)があるからでしょ。
別に Ruby に ++ があって一貫性を保つように実装するのが難しいとは思えない。
++ でオブジェクトを破壊しないことを大前提にすれば、特に問題ないのでは?
とりあえず、a = a.succにするのかa = a + 1にするのかでずいぶん違ってくるよね
.succを使うとかなり変な用法ができそう
つ[ruby-list:6233]
まあMLでやらない時点でただの暇つぶしの雑談なんだろうけど
> var = var.succ
>
>という案ですね.まあ,採用するならそれしかないかな,とは思っ
>ているんですけど,
しょうゆうことですね
>>816 設計上の選択肢としては、別に単一継承+インタフェースでなくてもいいわけで
・多重継承+ややこしい規則(C++、Eiffelなど)
・単一継承+mix-in(Rubyなど)
でもよかった。どれも一長一短ある
じゃあなぜインタフェースを採用したかと言われると、もうそれは哲学としか言いようがないのでは
>>818 それなりに真剣ではあるけど、自尊心が能力に大きく先行してるから、
過去の発言で現在の自分がジャッジされる空間、ヘタ打った時にそれを無かったことに
できない空間では、とてもじゃないけど怖くてモノ言えないんですよ。
人格攻撃でRubyを防衛してる人たちは言うことがひと味違う
多重継承自体は短所のがデカイと思うけど
>>822 まぁ実際にはRuby批判のほうが圧倒的に人格攻撃多いんだけどね。
++あってもいいよねくらいの話なのに、すごい必死で否定しようとしてて、
その人達の的外れな意見に興ざめしたよ。程度が低い
>>821 いや
>>818下一行は俺ってばネタにマジレスしてるよ、っていう自虐
もし本気な人がいたらごめんなさい、開発者に見えるところでやってください
って書いた時点で思い出したけどいるじゃん
>>656
>>825 自分と違う意見の人達がどいつもこいつも「必死に的外れなことを言っている」
ようにしか見えない一種の病気があって、大抵は20代前半にピークを迎えるけど、
君のもそれじゃないの?
828 :
デフォルトの名無しさん:2008/10/04(土) 21:12:24
最初から実装されてたら普通に使うんでそ?
829 :
デフォルトの名無しさん:2008/10/04(土) 21:17:04
>>827 713,743,777みたいなやつは?
盛り上がってまいりました
最初から無かったってのが大きいよな
本当に、ただそれだけのことなんだけど
>>829 質問の意図がはっきりしないけど、雰囲気から察するに、
ある勢力の中から「変なの」をちょっと捕まえて、その「変さ」を勢力全体に当てはめて
一気に全否定するデザインパターンを使いたがってます?
本質的な問題としてさ、C とかの ++ のある言語でさ、ループカウンタ以外で ++ を使うことってある?
まず無いよな?
ループカウンタのようなもの以外では明示的に1を足すよな?
んで、ループカウンタの大部分はRubyではブロックつきメソッドで用が足りるよな?
ループカウンタ用途以外ではRubyでは +=1 とかでよくね?
eachで間に合うみたいな的外れなのも出続けるのはなんでだろうね
ここは下手にCに似せると、逆に混乱が起きそうで・・・・・・
何で前置と後置両方無いのかとか、評価順序が変わらないのかとか
ループ変数での需要が無いぶん、
わざわざ演算子として用意するだけの需要があるのかって疑問も出てくるだろうし
(たぶん使う人は使うんだろうけどさ)
++が欲しいって人のほとんどは、あまりRubyを使い込んでいないんだろう。
おそらくeach_with_indexも知らないレベル。
なぜ他の言語の文法を、代替手段があり、なおかつなぜ入れないかの
説明もしてるのに、採り入れろと騒ぐのかわからん。
837 :
デフォルトの名無しさん:2008/10/04(土) 21:37:19
まともなプログラムを書く人はwhileとかも使いますから、
そういうことは言わない方がいいのでは?
>>833 > 本質的な問題としてさ、C とかの ++ のある言語でさ、ループカウンタ以外で ++ を使うことってある?
for文の中で if (要素を見て判定) ++found; みたいなことをする時、found += 1; と書いてる奴は少ないと思う。
事足りる論で語り出したら、+= も要らないとかになるのか
事足りる論で語り出したら、Ruby も要らないとかになるのか
この話題の引っ張りようを見ると
普段このスレが、どれくらい話題に飢えているのかが分かるな
>838
配列など.select{|v|条件式}.size
タブインデントを何にするか、とか定番の盛り上がりネタなだけでしょ
一見誰でも参加できるしねw
典型的な自転車置場の議論。1.9.0 の話題でもしろよ。
>>842 いやRubyの話じゃなくて、
「C とかの ++ のある言語」で「ループカウンタ以外で ++ を使う」例を書いたんだ。
じゃあ次は、Rubyスクリプトを書くときに
どんなエディタor開発環境を使うかの話をですね(以下loop do~end
GNU Emacsにruby-modeが結局入らなくなってしまったのがとても悲しい
英語でドキュメント書く人いないの?関数や変数の説明がないと取り込まれないしなー
受益者負担でどうぞ
>>842 DBやIOストリームから1行ごと読み込んで、別の処理もしつつカウントもしたい場合は?
拡張モジュールで、あるライブラリを読み込むにはどうしたらいいですか。
つまり
require 'rubygems'
ということを C で行なう方法です。
あとクラスを参照するには
VALUE klass = rb_const_get(rb_str_new2("ClassName"));
でいいでしょうか。
>>847 どのバージョンだと入らないの?
ちなみに俺は GNU Emacs 22.1.1 使ってるけど ruby-mode あるよ
>849
DB関連は疎いから割愛しておくけど
現在の行ならIO#linenoで判るし
IOもEnumerableをincludeしてるから、selectも同じく使えるが。
ちなみにブロック内には別の処理だって挟めるから「別の処理もしつつ」はあまり問題にならんかと。
まあ、全く内容を保持する必要がなく、カウント/集計のみ取りたいというのであれば
素直に+=1するけど。
…むしろ別の言語の癖でcnt=cnt+1とわざわざ書いてしまうこともあるけれどw
個人的には、メソッド型マクロを導入する!とか斜め上に行ってほしいが無理だろうな
>>852 集計なんかは、単一の対象だけを数え上げることは稀だから、selectじゃ難しいんじゃね?
それにデータが大量にある場合、selectだと条件に一致した元のデータがメモリ上に積まれてしまうのも難点だわな
それだと一種類の対象しか数えられないじゃん
>>850 >拡張モジュールで、あるライブラリを読み込むにはどうしたらいいですか。
rb_require("hoge");
>あとクラスを参照するには
任意のクラスであればそのとおり。
組み込みクラスであれば、
rb_cObject
などの変数を利用できる。詳細は ruby.h。
>855
「別に積まれても良くね?」と思ってしまう俺はRuby脳
まあ、積まなくても+=1で無問題だが
積まれてもいい時は簡単な方、それでは困るときは積まない方を選べばいいだけの話です
s = source+10;
d = destination+5;
for (i = 0; i < n; i++) {
*d++ = *s++;
}
みたいなんを、添字がもっと鬱陶しい感じの式になる時に使うことはあるな。
でも ruby で ++ 使いたくなったってのはずいぶん昔のことになる。
「+=1でいいところをどうしても++でないと嫌」ってのは、
Cを使ってて後置++でならコンパクトに書けるとき、くらいだのう。
>>861 それはダメな使い方では
少なくとも非常に紛らわしい
駄目も何もCの定石じゃん
駄目な定石の典型例だな
もう++憎けりゃ袈裟まで憎い状態だなw
Matzが最初から実装してたら、こんな精神異常者を生むことはなかったろうに
++がある言語を使えばいいだけだろw
>>863 紛らわしいって、いったい他のどんな可能性と紛れるんだ?
D言語と区別がつかないとかじゃね
++ はいいけど、= の代入と両方あるから
> *d++ = *s++;
の場合は代入と increment の前後を考えるし、++ を
使うと副作用があるか確認が必要だと思う。
ミスしやすいから ++ を non-trivial なものと混ぜるなという
安全ルールがあったと思うんだが。
空気読まずに素人の便乗質問ですが、Cとかで++後置の場合は、
評価された後に副作用?としてインクリメントされる、みたいな理解で
問題ないですか?
>>861の場合を妄想すると、
*d に *s を代入し、この式の次の処理までのどっかのタイミングで
両方ともインクリメントされてる、ていう風に動作するの?
そういうワケわからんことになるから
++ の戻り値は使わない方が良い
個人的なコードなら構わんが
他の人がメンテナンスする可能性があるなら地球がヤバイ
アホの集まり
>>871 こと文字列の操作に関しては、
イディオム的によく使われる書き方だと思うが
有名な例としてstrcpy
void strcpy(char *s1, char *s2)
{
while(*s1++ = *s2++)
;
}
一応確認したが
>>861 みたいな使い方はやはり定石では無いと思う。
ttp://www.learncpp.com/cpp-tutorial/33-incrementdecrement-operators-and-side-effects/ > As a general rule, it is a good idea to avoid the use operators that
> cause side effects inside of compound expressions. This includes all
> assignment operators, plus the increment and decrement operators. Any
> operator that causes a side effect should be placed in it’s own
> statement.
繰り返さないが Stroustrap が書くの手伝ったルールでも (AV199)
ttp://www.research.att.com/~bs/JSF-AV-rules.pdf >>872 基本的にそういうことになる。ついでに operator precedence も考えない
といけないから*(p++) であることを認識することも必要。
この場合は変なことしない限り平気だと思うけど、やはり
>>872 のような
疑問が出るし、一瞬にしろ間違いがありえないか考えなければならないから
バラした方が良いと俺は思うし、そうしてる。考えるだけ面倒。
C使ってる時代 pointer arithmetic 振り回して、ついでに無駄(と思った)
カッコ削って「わからん奴がアホ」みたいな調子でやってた時もあったけど、
数年たって読んだら自分でも考えないと読めなくて反省した記憶がある。
>>873 「地球がヤバイ」って気に入った
googleの結果貼り付けて議論した気になってるとか
>数年たって読んだら自分でも考えないと読めなくて反省した記憶がある。
だからアホなんだよ
たしかK&Rかプログラミング作法かなんかでイディオムだって書かれてたよ
実際良く見るし定石って言っても問題ないかと(良いか悪いかは別)
どんだけ複雑で理解しにくいコードになりうるのかはしらんけど
少くとも
>>861程度なら定石でしょ
まあこの話は置いとくとして
仮に
>>861のような使い方が一般的にダメだとしたら
ますますRubyに++なんていらなそうだが
漏れもRubyに移った当初はendがうぜーとか++がなんでないんだよとか
思ってたけど、馴れるとどうでもよくなったなあ。
そりゃ++があっても慣れたらどうでもいい話さ
ところで、この話題いつまで続くの?
次のるびまが出るまで
半年間も続くの?
>>877 安全のためのルールがあるって書いたから一応根拠出しただけだよ。
君の方が煽るだけで議論だと思ってるのかな?
言ってることが間違ってるという反論があるならどうぞ。
チームで coding するときは誤解や間違いを避けるためにそれなりのルールがある。
案
君
言
チ
?
>872
っ C++STD2003 5.2.6.1
The value obtained by applying a postfix ++ is the value that the operand had
before applying the operator.
[Note: the value obtained is a copy of the original value ]
つーか strcpy の実装みたいなのなんか、副作用のある書き方を避けても
++ は間違いなく使うわな
>>850 > あとクラスを参照するには
VALUE klass = rb_path2class("ClassName");
891 :
デフォルトの名無しさん:2008/10/06(月) 07:09:10
定期的に新人君のガス抜きのために必要なんだよ++の話題はw
じゃあそろそろCR+LFの話題へ変えてみようか…
定番の文字セット・エンコードネタでもいいんじゃね?
いつもは何を話題にしてるんだ? 1.9のエンコーディングの話?
モルモン教の話
クリスマスにリリースすることの話
++は2.0までに入れておいてくれればいいよ。
それは入れなくていいって意味か?
いつまでMatzが中心でいられるかという問題も
言語仕様の保守が委員会とかに移行しても、作者の影響力って相当残りそうな感じだが
Python・PHPとかだとどうなんだろう?
1.9・2.0でどんだけコケるか
クリスマスに1.9.1がリリースされたとして、その後の展開が気になるな
果たして1.9.1が、どれくらい使われはじめるのか
そしてどれくらい混乱を巻き起こすのか
>>900 PHPって今も作者が影響力を持っているの?
Perlのlwall、Pythonのguido、Rubyのmatzあたりに比べると
名前の露出が少ない気がするな。誰だっけ?
PHPがperlで書かれたweb用フレームワークだった頃の人は
もう蚊帳の外じゃないのかなぁ。
PHPは個人というよりZend社が作者な気がする
質問です。LinuxZaurus(QT)、WindowsMobile6、Win32(デバッグ用)で共通に使えるGUIライブラリってありますか?
リナザヴ向けと、WM6向けのGUIをそれぞれ分けて作ると手間なので出来るだけ共通化して書きたいのですが…
質問の答えになってないけど、モバイル機のスペックでRubyまともにいごくんかな・・・
ruby-listにきてた社内公募とかいうやつは間違えて送信しちゃったのかな
++ が必要という説得力のある理由が無いからいいよ
とか言いながら、あったら使うんだろ?
もし ++ があるのに += 1 とか書いてたら格好悪いもんな。
一般に ++ のある言語は、プリミティブな数値を破壊的にインクリメントしているわけだけど、
数値すらも(実装上はともかく概念的には)オブジェクトである Ruby では、++ は素直に実装しづらい。
でもだからこそ、Ruby である程度一貫性を保ちながら実装できたら、成果として大きいとは思う。
ですよねー
100.timesとかFixnumがメソッドをもちえる言語なんてビックラですよ
あってもいいというよりRuby哲学から考えてないとおかしい。
特別扱いの代物になることだけは絶対に確かだな
そういうのがRubyにいくつあるか自体は別にいいんだが、
++の代替可能っぷりと実装困難性からして
「特別扱いにしてでも導入する価値」は低いとは言わざるを得ない
導入希望側の主張はそのへんの現在位置を踏まえた上でやって欲しいと思う
あって当然&代替不能&実装簡易と思ってるのは君たちだけだ
>>916 ビックラしたというのは否定はしないわ
というか、upto とかはいいんだが、times が整数の持つメソッドだってなんかイメージと違わね?
字面を優先したんだろうな
100 timesという順序で並ぶと、英語的に綺麗になるから
でも確かに、timesを予約語にして
loop 100 times do
とかやった方が良かったんじゃないかなーとは思う
>>919 >特別扱いの代物になることだけは絶対に確かだな
>
>そういうのがRubyにいくつあるか自体は別にいいんだが、
>++の代替可能っぷりと実装困難性からして
>「特別扱いにしてでも導入する価値」は低いとは言わざるを得ない
これが現時点での結論だよな
ぐだぐだ言いたい人には言いたいだけ言わせた方がいいよw
>>923 だよねwこんなところで言うならMLになげりゃいいのにw
ここ見てると否定派のほうがキチガイになってるのはなんでだろうか
>>924 >だよねwこんなところで言うならMLになげりゃいいのにw
べつにそこまでするようなことでもない
てか、10年以上前にMLで議論されとる。
まんどくせ、意味わかんね。で終了
>>925 君が否定派をキチガイとして見たくてたまらない肯定派だからじゃない?
自覚の有無にかかわらず。
>>920 Smalltalkだとif文やwhile文あたりも論理型オブジェクトへの
メッセージ送信だったりしてビックラできる。
(a > 10) ifTrue: [ Transcript show: 'a is greater than 10.' ].
みたいなー。
>>925 別に俺は ++ あれば使う派だけど、無くても別にいいや。
ただ、++ あるべきだという理由はどんなのあるの?
ちょっと便利程度しか思いつかんのだが。
+=1が++と書くだけで済むようになるのは超絶的に便利!
断然追加すべき!
そう思わない人間はキチガイ!
下手な煽り方をするなと
a = 0
b = a += 1
がわかりにくいような気はする
a = 0
b = a++
だとわかりやすい
まあ
a = 0
b = a = a + 1
でいいんだけどさ
a += 1 だとホワイトスペースを入れないと見にくいので、4文字になるけど、
a++ならホワイトスペース入れなくていいので、2文字ですむ。
>>935 そのレベルの話なら別に
a = 0
b = a
a += 1
でいいじゃん。わかりやすいよ。
>>935 その例はむしろ不味い
下手にCの後置インクリメント演算子を連想すると
bは0になってしまう
>>937 偏見だが、++ 推進派の人にとっては2行目が常用不能だと思う
>935
2番目は一番解りにくい例じゃん…
C系の++演算子(前置/後置)の戻り値使ったことある?
CからRubyにきてはまる
a = 0
b = ++a
puts b # =0 あれっ?
なんちゃって
単項演算子 の + - って面白いな
puts +-+-+-+-+a
とか通るのが
いっそ、selfのすり替えが出来るリフレクションを追加して
単項の ++ 演算子も新設して破壊的にすり替えるとか
わかりにくいもなにも、Ruby の ++ は succ! 相当であることが期待されてるわけだし、返り値は +1 された数値だろ
他の言語でどういう動作になってるかは知ったこっちゃねえと思うが
そんなエミュレーションまで面倒見切れねーよ
「self のオブジェクトを切り替えるメソッドだが、返り値は切り替え前の self」とかありえねー
> var = var.succ
>
>という案ですね.まあ,採用するならそれしかないかな,とは思っ
>ているんですけど,
Matzだってこういってるのに何言ってんだか
うーん、でも ++ が導入されたとしたら
ary[i++] = ....
みたいなのも想定されるだろうから、後置だったらインクリメント前の値を返さないと文句が殺到しそう
そんな動作だと、前置以上に面倒くさいな
そうやってどんどん要求が膨れあがるんだろう…
そもそもRubyはC言語じゃないし
「要求が膨れあがる」で思ったが
実は += があるから ++ を入れろなんて変な要求が出てくるんじゃね?
自己代入があるんだから ++ も入れられるだろ、って感じで
ならいっそ += も削除しちゃえば良いんじゃね
既存コードはオプション付ければ動くってことで
ちょっとコードが長くなるだけで、意外と困らない気がするんだが、どうよ?
だからキチガイって言われるんだよ
これ、前に書いてた人と違う人がまたループさせてるの?
ちょっと前と同じことを繰り返してるように思えるんだが
DRY的に自己代入は要るだろ
a+=1はrepeatしてないので++は無くてもいいが
それ、DRY?絶対に何か間違ってると思う。
なんで++要らないって言ってるほうが話を蒸し返してループさせちゃうのか理解に苦しむ
953 :
sage:2008/10/11(土) 03:32:00
いや、だからDRY = 話をループさせるな。だろ。
ループさせたくないなら、決定的な結論か、もっとおもしろい話題を提供すればよろしかろ
つーか実装するのは簡単なんだからやりゃいいのに
a = b++ は a = b; b = b.succ に、 a = ++b は b = b.succ; a = b になるようにすればいいだけじゃん
b = b + 1 と書きたい人の自由を制限するわけでもないし
2++は無理だろ
2+=1が無理なのと同様
これだけ混乱を呼ぶ話題なのに、まだ簡単に導入できるとか言うのか
実際、++を導入した時点で、
>>945みたいなことをやる人間が出るのは想像に難くない
>>954 左の例おかしくないか
b = 2
a = b++
p(a, b) #=> 2, 3
>>956は問題わかってねえな
じゃあ
x = 2
a = x+++3
でもいいや
これは現行の Ruby では 5 だ
++ が導入されたら 6 になるのか?
a = x++3
これはパースエラー?それとも 5 ?
959 :
957:2008/10/11(土) 06:45:16
すまん、見直してみたら例は別におかしくなかった
>
>>945みたいなことをやる人間が出るのは想像に難くない
というか、
eval [1, 2, nil, nil, 3].join('+')
の返り値が 7 になるのは勘弁して欲しいわけで…
>>958 それこそ書くべきじゃないコードじゃないの
もう否定する為の材料の探し方が末期的になってきたなw
>>961 違う
++ の導入には Ruby パーサの動作を変える必要がある
そのとき、現行で許されている書き方をどうするかという問題は避けて通れない
++(--)欲しい人はどんな時に++使いたいの?
ちょっと使いたい部分のソース見せてよ
出来れば2,30行くらいのメソッドでたのむ
>>960 うちでは6になったけど?バージョンは1.8.6
>>958 >a = x++3
まあもし実装されるとしたらパースエラーだろう
字句解析は最長一致が原則だから、
x、++、3に分解される。意味が通らんね
>>963 うん、1+2+++3 だから 6 だな
++ 構造が導入された場合は 1 + 2++ + 3 で 7 になる予定
x+++y はたしかに許されてはいるが、こんなコードが有益になる場面はなさそうだな
こんなの無理やりわざと書かなきゃ出てこないだろ
>>965 ああなるほど「導入されたら」の話なのね
つまり++を導入するなら+++とか/*とか考えうる
全ての演算子を導入すれば一件落着ということか
>>966 配列回して足すより文字列連結でevalのほうが速い時とかどうだろう(あるのかどうかは知らない)
Rubyのパースで今までエラーにしてないものをエラーにしてまで追加する価値のあるものにも思えないが…
現在許されてる加算記号の連続と被ってるからマズいんだよな
<+ とか <- とか新しい書き方で導入するのはどうだろう
その現実的にまず出てき得ないコードを諦めてもらうくらいの価値はあると思うけど
前にも出てきたけど複雑な集計とか、あとは順番にiterateするのでなくカーソル的な挙動が必要な場合とか
>>969 だから self 切り替えの特殊な succ! でいいじゃんよ
本質的なインクリメントは実装できてるだろ
++ という2文字が使いたいという病気の人は無視でいい
+=1が駄目で++がいいというのは正直よくわからんのだ
明示的に整数を足してるのがよくないのか?
+=1じゃ、ary[i++]=hogeが書けないのではないかと
++は十分メジャーな演算子ですので