1 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 04:30: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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
536 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 00:43:57 ] どなたかアドバイスください。ruby1.8.7です。 require 'tk' がうまく いきません。以下のようなメッセージが表示されます。 in `require' : no such file to load --tk (LoadError) どうすればいいでしょうか?
537 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 00:46:52 ] >>536 Tcl/Tkが入ってないんじゃね?
538 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 00:48:23 ] >>536 tkライブラリを見つけられなかった。 tkがインストールされない環境(ってなんだろ?)か $LOAD_PATHがおかしいんじゃない?
539 名前:536 mailto:sage [2008/12/17(水) 01:02:12 ] sudo find / -name tk で検索したところ /usr/local/lib/ruby/1.8/test/unit/ui/tk /usr/lib/ruby/1.8/test/unit/ui/tk が見つかったんですけどこれとは違うんでしょうか? ちなみに echo $LOAD_PATHでは何も表示されませんでした。
540 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 01:13:10 ] >>534 質問者の求める「正規表現の使えるglob」が提供されて無いから別解を提示しただけ 分かりにくいってのはわざとそうしてるんだから許してよ >>539 それ違う OS何?tcl/tk入ってる?wishコマンド使える?
541 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 08:10:32 ] >>535 >改行が存在しない文字列に対して ^ と $ は不適 逆だろ。改行が存在しない文字列だからこそ ^ や $ を使っても構わない。
542 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 08:13:15 ] >>540 >分かりにくいってのはわざとそうしてるんだから許してよ なんでそんなことをするの 分かりやすく書けないのをごまかしてるだけじゃねーのかよ
543 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 08:22:36 ] >>541 あまりRubyの正規表現に詳しくない人間が見たら 「ああ^と$は文字列先頭と末尾なんだな。Perlと同じなんだな」とか 勘違いしちゃうよ
544 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 08:44:02 ] >>534 >system "start #{filenames.join(' ')}" system 'start', *filenames でよくね?
545 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 10:21:20 ] >>544 そんなこと言ったら2行目はメソッドチェーンで消えるし、 対象ディレクトリが専用ディレクトリならそもそも Dir.glob のワイルドカードつき文字列でも充分だ 君が *引数 をオボエタテだからだからといってわざわざ難しくする必要はない
546 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 10:28:48 ] >>541 目に見えない文字や場所にマッチする正規表現は慎重に使ったほうがええぞ 半角空白にマッチさせるために \s を使ったりしないだろ それと同じこと
547 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 10:30:19 ] >>545 544じゃないけど、一般にsystemの引数は ' ' でjoinするより * で渡すほうが空白を含むファイル名等の問題をより安全に回避できるので、* のほうがお勧めだけどね
548 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 10:37:16 ] *の引数展開はマニュアルでも辺鄙なとこにしか書いてないからな 使うなら堂々と初心者向け解説の3ページ目から使いまくるくらいの感じにして欲しいとは思う
549 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 10:45:05 ] ` mkdir foo mkdir bar ` みたいに途中でシェルスクリプトだらだら書けるようなやり方ってない? 上の書き方だとmkdir fooだけ実行されるっぽい
550 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 10:49:19 ] `` はシェルコマンドを実行したいときに使う記法じゃないぞ 返り値が必要なときに使うもんだ system 使え
551 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 10:57:56 ] >>544 >>547 やってみた?
552 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 11:17:32 ] 534です。 >>547 たいへん参考になりました。 ただ初心者スレで使うには説明が必要ですね。
553 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 11:21:00 ] >>550 system " mkdir foo mkdir bar " でも変わらなかった
554 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 11:31:24 ] >>553 シェルスクリプトとみなせる環境であるなら全部実行できるはず 動作しないとしたらWindowsかCygwinだな
555 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 11:33:20 ] 渡した文字列がshに渡るんだから mkdir foo; mkdir bar だろう。 つーかそんなことしなくても、 mkdir foo bar でいいだろう。
556 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 11:35:50 ] >>555 最新5レスしか読めない携帯からのご参加ですか?
557 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 11:38:56 ] >>555 mkdir したいって話じゃねーだろ >>553 Windowsではでっかいひとつのスクリプトとして実行するしかなさそうだな
558 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 11:39:43 ] つーか、全部シェルスクリプトで書けば? system "foo.sh" したらいいやん
559 名前:540 mailto:sage [2008/12/17(水) 12:15:12 ] >>542 初心者にはメソッドチェーンが読みにくいかもしれない、とは思ったけど 読み解くのも勉強になるだろうと思ってそのまま書いた grep と system(*args) は知らなかったから書き直すよ target = 'D:/desktop/*' filter = /\d+test.txt/ command = 'start' system(*Dir.glob(target).grep(filter).unshift(command))
560 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 14:15:15 ] >>559 >system(*Dir.glob(target).grep(filter).unshift(command)) なぜわざわざunshiftを使うのか分からん。>>544 の通りに system command, *Dir.glob(target).grep(filter) でええやん。
561 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 14:34:26 ] すっごい前に、配列からの抽出にpopとshiftを使う子がスレにいたな キューじゃないものに pop とか使ったらダメよ混乱するから
562 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:00:35 ] >>530 RubyのselectはSQLのselectじゃなくて Smallltalkのselectに由来するって知ってるか?
563 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:09:54 ] >>561 普通に使ってるし、混乱するって話もあまり聞かないぞ そもそもpopやshiftを使わないとすると、代わりにどんな風に書くんだ?
564 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:14:58 ] >>562 「外来語」の detect と select で悩むくらいなら find と find_all を使うなあ、俺は というかなんでそこで SQL が出てくるんだ?
565 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:21:17 ] 当時の様子は知らないし、同じくキューでない配列にも普通にpop/shiftは使うけど 配列から取り除くことが作用ではなく副作用になる場合以外、 「配列から取り除く(ついでに値を得る)」ではなく 「値を得る(ついでに取り除く)」だと思ってるとミスするという話かと。 def get_first(ary) ary.shift end ary = [1,2,3] put get_first(ary) # aryが破壊される
566 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:35:31 ] >>563 同意 queue じゃなくても、popもshiftも使うよな
567 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:38:04 ] キューでもないのにpopが積極的に必要になる場面が思いつかない イテレータ拒絶派か何かか?
568 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:42:26 ] >>567 split結果の先端や終端にゴミついてるのが確実なときに切り落とすためとか。
569 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:55:45 ] >>568 delete_at(0) 配列先頭のデータが欲しいときに data = arr.delete(0) と書くのが奇妙なのと同程度には # 先頭は不要 arr.shift と書くのは奇妙だと思う shift に関してはコマンドライン引数を順に扱うときに shift コマンドを使った経験が後を引いてるのかもしれないが、 ここは Ruby だし shift は変
570 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 15:57:55 ] そろそろ誰の何の質問の答えているのかはっきりさせようか
571 名前:デフォルトの名無しさん [2008/12/17(水) 15:58:58 ] じゃあどう書けばRuby的なの?
572 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 16:19:46 ] 配列を破壊しなければうまくいかないかどうかによって違うんじゃね
573 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 16:19:54 ] >>570 >質問・要望・雑談などどうぞ。 >>569 奇妙なのはそのコメント文だろうw 代入操作がないことから不要なことは自明。 返値があるものは代入しないといけないなんてルールはないし。 >>565 のように先頭や末尾の要素を配列から取り除くのが主の操作で、 popやshiftにそれ以上の意味(=キュー専用)はないと考えてる。 だからdelete_at使えというのは、firstやlastもat(0)やat(-1)にしろと 言っているように聞こえる。 キューでない配列に対してpopやshiftがよろしくないなら Array#pop #shift #push #unshiftは廃止してQueueクラスを用意するべき。 運用で制限しようとするほうがおかしい。 (threadのものと名前がかぶるけどそれはさておき)
574 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 19:49:45 ] 難しく考えたことねえな ところでその考え方だとpopはキューに使っちゃダメだろ あれはスタックに使うものでは?
575 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 21:13:20 ] >>569 切り捨てるより、shiftで切り出された結果を使う方が多い param = ARGV.shift line = lines.shift とか
576 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 21:39:05 ] each でブン回すのが Ruby 的ではあるんだろうな
577 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 21:54:01 ] >>574 push⇔shift unshift⇔pop これでキューが出来上がる。ただし左がエンキュー、右がデキュー
578 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 21:59:30 ] 素直にQueueクラス作れよ、というのは昔から言われてはいたな というか、説明もないしキューの概念知らない人もそこそこいるのでは
579 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 22:02:02 ] unshiftだけ遅いから注意が必要
580 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 22:26:23 ] unshift遅くなくね?
581 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 22:33:43 ] >>578 自慢だが知らん popやshiftは配列から1個取る便利メソッドだと思ってる
582 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 23:47:16 ] >>531 丁寧な解説をありがとうございます。 Rubyの「オブジェクト指向」という考え方が何となく判って来た気がします。 つまり、文字列などの何らかのデータをオブジェクトとして扱い、 その内容に変更を加えたデータ(や当該コード)もオブジェクトにでき、 更にそのオブジェクトに変更を加えたデータも・・・・・ という事が限りなくできる、ということなんですね。 つまり「全てがオブジェクト」なんですよね? そして、そのあらゆる段階でのオブジェクト(データ)に自分で名前を付けることによって、 任意の段階でのデータ(オブジェクト)をコードのどこでも簡単に使い回しできるようにしたものが、 Rubyのオブジェクト指向、だと理解しました。 そして、初心者が常に気を付けるべき点は、 データを処理するためのメソッドが「どのオブジェクトを対象としているのか」という点にある、 というのが>>531 でのアドバイスの要点だと思いました。 基本的な理解はこれで合っているでしょうか? (^^;)
583 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 23:53:26 ] Rubyは肯定(否定)戻り読みには対応していないんでしょうか? 肯定(否定)先読みには対応しているようですが。 使っているエディターがPerl準拠の正規表現なので 今までは戻り読みが使えて便利だったのです。
584 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 00:02:13 ] lookbehind は鬼車が要るはず
585 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 00:29:31 ] >>580 a = []; 50000.times { a.push(0) } と a = []; 50000.times { a.unshift(0) } を比べてみな
586 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 00:33:16 ] yield
587 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 00:57:28 ] >>584 ほほう。こういうものがあるんですね。 次期Rubyに搭載予定だそうで凄そうです。 それで鬼車のホームページには、 >* 5.xはUnicode Property/Scriptを提供 >* 2.xはRuby1.6/1.8組込みライブラリとして動作する。 (2006年末で保守を終了) と書いてありますが、どちらをインストールしたら良いんでしょうか。 詳しい方がいらっしゃったら御教示願います。
588 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 08:51:32 ] >>580 じゃないが、試してみて >>585 の優しさを知った。 50000 は絶妙なとこだな。(celeron 1.3GHz)
589 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 09:31:25 ] そんな中古でも売ってないような激遅CPUで話にしゃしゃり出られても困る
590 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 09:47:36 ] 今の平均的なCPU速度ってどのくらいなのかね 自分でちょっと重い処理するライブラリとか公開したときちょっと気になる
591 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 09:51:40 ] >>589 Core2Duoでも相当差が付くぞ
592 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 09:59:23 ] >>589 そのご立派なCPUで500000とか試してみなよ。
593 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 10:05:52 ] 噛み付かれた>>588 カワイソス
594 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 10:09:49 ] >>590 2GHzくらいじゃね
595 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 10:17:43 ] てかPentium4からこっちはよくわからん理由で処理速度が違うから周波数アテにならん
596 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 11:26:59 ] 公開するライブラリの重さなんて気にしなくてもいいんでは? 使う人次第で負荷なんて桁で変わるんだし。 軽く使えるノウハウでもついでに書いとけば喜ばれると思うけど。
597 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 12:02:34 ] RubyのArrayはリストとかじゃなくてまんま配列なので、 pushと違ってunshiftは必ずメモリのコピーが発生するから ってことかな>速度差
598 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 12:34:38 ] IronRubyって終わったんでしょうか?
599 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:12:50 ] >>587 どちらもインストールしないでrubyの1.9.1をインストールする。 まだリリースされてないけど。
600 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:13:58 ] >>598 終わったというか、まだ始まってない。 そもそもIronRubyの動作基盤であるDLRがまだリリースされてないし。
601 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:19:49 ] Ruby で「静的 HTML に変換して出力してくれる入力テンプレシステム」って何がありますか? * で始めると見出しとか、 - で始めるとリストとか、そういうので適当な日記的 HTML を楽に書きたいです 日記や Wiki みたいな動的機能はいらないです サーバにアップロードするときに Ruby スクリプトで変換して FTP するとか、そんな感じなんですが
602 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:36:51 ] RD は死んでる? gem でイイのないもんかね
603 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:41:45 ] Hiki に Wiki 書法用のパーサが付いてたような気が
604 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:42:53 ] WikiCreoleパーサをさがしてみるといいんじゃないか? あるかどうか知らんけど。
605 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:48:25 ] RedCloth とか BlueCloth とか。 日本語がちゃんと扱えるかどうかは知らないけど。
606 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 16:08:25 ] つWikiforme 使いやすいとは言えないがかなり面白い。 これとTenjin組み合わせれば・・・とか妄想してる。
607 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 16:09:43 ] rake で sh "command" としたときに、command が画面に表示されないんですが、そんなものでしょうか。 どんなコマンドが実行されているか表示されてほしいんですけど。
608 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 17:18:08 ] Installing ri documentation Installing rdoc documentation これでバカみたいに遅いのはなぜ? 中で何やってこんなに遅いの?
609 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 17:21:52 ] ソースコードを解析してドキュメントを作ってるから、だと思う。多分
610 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 17:29:06 ] ファイルが細かくて多いと死ヌほど時間かかる印象
611 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 17:30:06 ] あれってなんで事前作成してないんだろ。 環境によって出力結果変わったりするもの?
612 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 17:31:55 ] >>611 できるものがでかいから。
613 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 17:35:48 ] まあつまりファイルサイズをケチってるわけだな 実際のドキュメントを見るとわかるがまあ結構デカい デフォルトデザインのドキュメントくらい添付してもいいと思うんだが、 まあ、全パッケージの全バージョンを保持してるわけだし、 それぞれに2種類のドキュメントをさらに保持というのは確かに辛いかもしれず
614 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 17:53:36 ] 回答サンクス。でも所詮は圧縮効率よさげなテキストでしょ。 パッケージはgzipとかしてるだろうし、試しにzipアーカイブに・・・ rubygems-1.3.1/rdoc/ 2,425,167byte -> zipped 820,211byte 把握したw
615 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 18:16:02 ] 余裕じゃん
616 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 18:45:30 ] >>603 HikiDocか。 >>601 Hikiのは古いから、HikiDocでぐぐって(単体で保守されてる) あとはRakeと連携して細かいところを自分で書けばおっけーじゃね。
617 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 19:17:03 ] >>601 Marukuもあるよ 高機能な割に、いまいち安定しないが
618 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 19:26:32 ] >>611 >あれってなんで事前作成してないんだろ。 事前に作成できるよう指定できるよ。 ようは各gem作者がそれを指定してないだけ。
619 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 20:10:37 ] >>599 鬼車のを今の1.86で組み込んで使うことはできないんでしょうか? 戻り読みの正規表現が使えないと非常に困るのです。 ネットで調べたら「VC++で鬼車をコンパイル云々」と出て来ましたが、 プログラミングはRubyから始めたばかりなので、 別のプログラムが必要とかになるとお手上げなのです。 何とかならないものでしょうか。鬼車の2.x系で構わないので。
620 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 20:18:19 ] 鬼車を使うか旧来のregexエンジンを使うかはコンパイルオプションで 決まっちゃうので、自分でコンパイルがお手上げなら、鬼車を有効に してあるバイナリを探すしかない。あるかどうか知らないけど。 駄目ならRubyでやるのを諦めるしかないと思うけど。
621 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 21:13:29 ] 鬼車gemもあるな。 リテラルの/.../だと組込の正規表現クラスを使ってしまうので、 全部明示的にメソッド呼んで組み立てる必要があるが。
622 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 21:29:29 ] gem のライブラリのファイルをどこで誰が読んでるかを調べる方法はある? gem 'package_name', '=1.0.0' でバージョンを指定してるはずなんだけど、 /usr/lib/ruby/1.8/rubygems.rb:142:in `activate': can't activate package_name (>= 1.0.1, runtime), already activated package_name-1.0.0 (Gem::Exception) という例外が出て動作しない 1.0.0 を指定してるんだから 1.0.0 だけ読んでくれよ っていうかバージョン指定でインストールさせるライブラリの作者は安易に require だけすんな氏ね
623 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 21:32:02 ] >>620 レスありがとうございます。 戻り読みが使えないのは大変に困るので、 素人でもコンパイルと言うものができるなら挑戦してみようと思います。 ええと、ネットで調べたのですが、 Rubyと鬼車のソースを手に入れて解凍し、 鬼車の解凍フォルダをRubyの解凍フォルダに入れて、 Visual C++ Toolkit 2003 Commandでコマンドを入力してコンパイル で、基本的な流れは良いんでしょうか。 鬼車を組み込むために特別なことは必要ないのでしょうか? >>621 できれば他の正規表現と全く変わらないように使いたいので、 鬼車を組み込んだRubyの方がありがたいのです。
624 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 21:39:26 ] >>623 なんかすごいことしようとしてるなー ちなみに、その戻り読みが必要な正規表現ってどんなの? もしかしたら、戻り読みが必要ないかたちに書き換えられるかもしれないし。
625 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 22:13:45 ] >>624 > なんかすごいことしようとしてるなー そんなに素人には敷居が高いのでしょうか? 確かに戻り読みは全ての正規表現に使うわけではないので、 >>621 さんの鬼車gemというのを使った方が良いのでしょうか。
626 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 22:17:53 ] たぶん、 Object.const_set('Regexp', ORegexp)とかしてしまえば(警告出る)、 Regexp.newで作った後は同じように使える(と思う)から、 /.../と書けない以外はそれなりに使えるんじゃないだろうか。
627 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 22:18:01 ] コンパイルとか一回やっとくと後々役に立つこともあるだろうから やっといてもいいと思うけど。 Cygwinじゃダメなの?
628 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 22:58:02 ] >>607 -v
629 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 23:06:19 ] >>623 「鬼車を組み込むために特別なこと」は鬼車のドキュメントに書いてある。 それに従えば大丈夫だと思うよ。
630 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 23:48:15 ] 「ひらがな ←→ カタカナ」の変換ってどうやるんでしたっけ。
631 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 23:56:38 ] >>630 Ruby単体では難しいな NKFに頼るのが妥当か
632 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 00:01:56 ] プログラムのlogを自分宛にメールで送りたいと思ったんだがpop before smtpってよくわからん ○行処理完了,×行目失敗,△行目失敗...ぐらいのちょっとしたものなのに
633 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 00:05:43 ] >>632 そのまんまだよ smtpの前にpopでただアクセスすればいい 履歴はサーバが短時間記憶してくれているから普通にsmtpでアクセスだ メール関連は詳しく説明するとSPAM送るアホが出るからどこも親切にはしてくれないだろうね
634 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 00:15:20 ] >>631 サンクス
635 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 00:51:58 ] >>630-631 一方向の変換ならString#trじゃダメ?
636 名前:デフォルトの名無しさん mailto:sage [2008/12/19(金) 09:48:35 ] aという配列の要素に、正規表現でキャプチャした値を入れたいです。 具体的には a[0]=$1 a[1]=$2 以下同様です。 これを 0.upto(4) do i a[i]=$(j+1) end とかやってもコンパイルエラーがでてしまうのですが、組み込み変数$1,$2・・・に イテレータを利用してアクセスできる方法はありますか?