- 1 名前:one [2009/05/16(土) 10:06:50 ]
- プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
【Ruby1.9.1 は従来版とは異なる部分も多く、書籍や解説やライブラリのサポートがまだありません】 【自力で解決できない壁で悩むことのない最新安定版の Ruby1.8.7 での学習をお勧めします】 ※1.8.7 は 1.8 系と 1.9 系の橋渡しをするためのリリースで、1.9 系 の便利新機能の一部が利用可能です 関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の 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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
- 302 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 13:39:47 ]
- >>300
置換前を p line してみると各行に \n がありました。 置換後には \n が無くなっていました。 これを見ると置換は成功しているようです。 エディターの問題なんでしょうか。 でもエディタ側で CR+LF , CR .LF を区別して表示してみると CR+LFが残っているんですよね。 もうちょっと頑張って原因を探ってみます。
- 303 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 13:45:12 ]
- File.openするときに binary モードになってないとか、
あと、DOS窓からコピーすれば CRLF になるとか。
- 304 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 13:55:40 ]
- >>302
原因を探るも何も、それが全てじゃ>改行コードの(意図しない)混在 自分でも > Windows環境だから \r\n ですが、 と書いているように、環境(というかむしろそのデータを吐き出すアプリ)に依って、 その3パターンが入り乱れるなんて、不注意でよくあるケース。 # CR単独、ってのはほぼないけど。 FTPのアスキーモードでファイルの上げ下げをしたり、また適当な設定のエディタで 読み書きすることによっても、テキストデータの改行コードはさくさく変換されつづける。 たまに CRCRLFとかになってて悲しくなることがある。 個人的には、アスキーモードとかテキストモードとか言う改行コードの自動変換処理を 絡ませてろくな事になった記憶がない。 Windowsだけど、自分のスクリプトやそこで使うデータは全部LFで保存してる。 # メモ帳で読めないとか知ったこっちゃない。
- 305 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 19:59:29 ]
- Ruby初心者ですが、他言語の経験はそれなりにあります。
やりたいこと。 Rubyで外部コマンドを起動して、それを任意のタイミングで終了させたいです。 より詳細に。 自分のプログラムの通信をTCPdumpを使って調べたい。 ただし、何回も実験を繰り返すので、手で起動、終了を繰り返すのは避けたい。 今考えている手法 マルチスレッドでプロセスをつくり、その上でTCPdumpを走らせる。 メインのスレッド上では、自分のプログラムを起動し、しばらくするとそれが終了する。 すると、マルチスレッド上のTCPdumpにシグナルを送って停止させる。 これを数十回繰り返す。 どのように解決すればよいでしょうか。 もしよろしければアドバイスいただけると助かります。
- 306 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 20:13:13 ]
- これまた Ruby 関係ないな
動いてる tcpdump に SIGINT か SIGTERM を適当に送れ
- 307 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 20:13:17 ]
- 書き忘れましたが、起動の仕方は分かります。
ただ、Ctrl-cで終了させるプログラムをどのように停止させるかが分かりません。
- 308 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 20:18:22 ]
- なるほど。こっちもOSのコマンドを利用するわけですか。
ジョブ番号を出す、tcpdumpのジョブ番号を取得、kill ってわけですね。 めんどうですが、その方法でやることにします。 ありがとうございました。
- 309 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 20:25:09 ]
- どう見ても他言語の経験もそれなりにしかありません、の間違いだな。
質問も回答も全くRuby関係ないw
- 310 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 20:39:04 ]
- >>308
Rubyから子プロセスにシグナルを送れるよ。
- 311 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 20:52:34 ]
- >>310
おお、本当ですか。 今調べてみたんですが、それは www.ruby-lang.org/ja/man/html/Process.html であっておりますでしょうか? これを使ったら、 process.pidの値を取得して、 kill(pid) のように出来るので 上のコードよりかは幾分綺麗になりそうですね。 ありがとうございます。
- 312 名前:デフォルトの名無しさん [2009/05/31(日) 02:29:50 ]
- 文字列を与えられた時、アルファベットを大文字小文字区別せずに出現頻度順に小文字で並べた文字列を返すプログラムを作る問題がわかりません。
- 313 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 02:38:47 ]
- 何がわからないの?宿題は自分でやるもんですよ?
- 314 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 06:34:44 ]
- >>312
誘導 pc12.2ch.net/test/read.cgi/tech/1200175247/
- 315 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 16:06:17 ]
- hoge::huga
と hoge#huga はどういう意味ですか?
- 316 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 16:12:59 ]
- クラス名やメソッド名を連結するときの表記に使う :: と # の違いだと解釈
:: はクラスやメソッドや定数を連結する表記に使い、実際のスクリプト上でもそのように動作する # はインスタンスメソッドを表す表記に用いられ、実際のスクリプト上では動作しない、マニュアル専用の表記 A::B::C は Aクラス(かモジュール)の中にあるBクラス(かモジュール)の中にあるCクラス(かモジュール)、 または、 Aクラス(かモジュール)の中にあるBクラス(かモジュール)の中にある定数C 原理上、スクリプトを参照しない限り、見かけではこの2つを区別できない A#hoge は、Aクラスのインスタンスメソッドhoge a#hoge は、オブジェクト a のクラスで定義されているインスタンスメソッド hoge マニュアルのどっかに書いてあった気がする
- 317 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 16:40:18 ]
- >>316
ありがとうございます。
- 318 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 16:43:22 ]
- >>316
クラス名#メソッド名 という表記、例えば String#upcase というのを見るのですが、 これはStringクラスのインスタンスの持つupcaseというメソッド、という意味でいいですか? 見ようによってはクラスメソッドに見えます。
- 319 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 16:49:56 ]
- インスタンスメソッドを URI#path のように # つきで書くような人間は、
クラスメソッドは絶対に URI.parse のように . で繋げて書くから混同されてる可能性は(誤記以外には)ない 安心しれ
- 320 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 17:34:25 ]
- >>316
これ、テンプレでFAQに入れといていい気がする。 俺も毎回なんだっけ?と迷うからなんだけど
- 321 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 18:03:24 ]
- なんでそんなに迷うんだよ…
特殊なのはインスタンスメソッドのマニュアル記載法の # だけで、あとは通常のスクリプト内記法と一緒じゃんよ ドットは 「マニュアルでのクラスメソッド」 「スクリプト内のインスタンスメソッド」 「スクリプト内のクラスメソッド」 の3つがあってややアレだが、 たいていの場合、 . の左は「明らかにクラス名」か「明らかに変数名」のどっちかだろ? 左が@始まりや全部小文字の変数名だったらとりあえずインスタンスメソッドの起動記法だと思え だから、マニュアルに “小文字.メソッド” があったら変数に対するコピペ実行可能なインスタンスメソッドチェーンだ 例: arr.join の場合、「arrはローカル変数っぽい」から、「arrが指すオブジェクトのクラスのインスタンスメソッドjoin」だとみなす 「変数arrにクラスオブジェクト本体が入ってたらクラスメソッドが起動する可能性が」とか余計なことは考えない 左が大文字で始まってる「明らかにクラス名」の場合はクラスメソッドのマニュアル記載法&スクリプト内のクラスメソッドだ 例: uri.path と URI.parse は連結法はドットで同一だが、 前者は変数っぽいので「変数uriの指すオブジェクトのクラスのインスタンスメソッドpathを起動するようにする」という指示記述 後者はクラスっぽいので「クラス(またはモジュール)URIのクラスメソッドparse」を指すマニュアル記述または起動指示 文字化して書いててどうでもよくなってきた もしかして、この辺の区別って実は本当の初心者にはつけづらかったりする?
- 322 名前:デフォルトの名無しさん [2009/05/31(日) 18:11:06 ]
- 本当の初心者って?
- 323 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 18:16:53 ]
- オブジェクトに属するメソッドとクラスに属するメソッドの違いをてきとーにより分けられない人
- 324 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 19:41:33 ]
- >>321
なげーよ もっと簡潔にかけるだろ、あんたなら
- 325 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 19:55:06 ]
- テンプレ用に短いのキボン
- 326 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 20:39:30 ]
- つカルシウム
- 327 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 22:05:45 ]
- やっとプログラミングに慣れきた者ですが、
ネットや本のコードを読むときで、 一つ一つのステ−トメントや式を追う時に、 これが、 インスタンス変数、ローカル変数、定数(クラスもその一種?)、メソッド と判別できるようになって、 少し自信がつきました。 デ−タ?の動き?だけでにとどまらずに、、変数のパタ−ン、メソッドと変数の見分けなどを意識できるようになるのが、 本当の初心者には一つの壁だと思います。 テンプレを書くまで、実力が上がってないけれど、、
- 328 名前:デフォルトの名無しさん [2009/05/31(日) 22:38:19 ]
- >>326
カルシウムって・・・ やめろよ頭悪いと思われるぞ。
- 329 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 22:39:45 ]
- >>328
乳酸菌取れよ
- 330 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 13:36:21 ]
- カルシウムと言われて真っ先に金属カルシウムを思いつく>>328さんは秀才
「ナトリウムの過剰摂取は身体によくない」と言われて「水と反応して火花散らすから当然だな」 「カルシウムを摂ると身体にいい」と言われて「あんなにイオン化傾向が高いものを摂取するなんて信じられん」 このスレ何のスレだっけ
- 331 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 13:58:23 ]
- >>321みたいなのは『初めてのRuby』あたりに書いてないかい
- 332 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 14:03:31 ]
- 3ヶ月前に作りかけだったスクリプトの製作を再開しようとしたのだが
コメントつきなのになにやってるかさっぱりわからん
- 333 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 14:07:53 ]
- スクリプトでそんなに長いの書くなよ。
一画面に収まらなくなってきたらもっとまともな言語使うべき。
- 334 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 14:15:39 ]
- >>333
まともってなに? 委員会が設計したこと?
- 335 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 14:20:53 ]
- >>334
事前コンパイル&リンクが必要な言語はコンパイル時間の間に精神を落ち着けることができるので コンパイル不要な言語より質の高いプログラムを記述することができます
- 336 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 14:48:38 ]
- スクリプト言語でさくっと作って浮いた時間でお茶でも飲む方がいいよ
- 337 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 16:02:12 ]
- >>335
>事前コンパイル&リンクが必要な言語はコンパイル時間の間に精神を落ち着けることができるので でもコードを書いているときに多大なストレスを感じてしまうんだよな、 事前コンパイル&リンクが必要な言語は。むずかしいのう。
- 338 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 16:49:06 ]
- そんなにあの間が好きならsleepでも噛ませとけw
- 339 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 02:09:00 ]
- in?の話がちょっと出てる。
qwik.jp/lang-Pattern/DSL.html
- 340 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 08:54:16 ]
- リンクの貼り方がわかりにくすぎるよ…パパン
- 341 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 08:58:17 ]
- リンクだったのか。気づかんかった
- 342 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 09:08:26 ]
- というか「対応するサイトがありません」と言われる
- 343 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 10:36:18 ]
- 339 じゃないけど
ttp://qwik.jp/lang-pattern/DSL.html
- 344 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 13:02:24 ]
- Apache 2.2 + Passenger 環境で、
現在 Rails アプリを DocumentRoot 直下に a/ や b/ に置き、 RailsBaseURI /a RailsBaseURI /b にして example.com/a/ example.com/b/ のように複数動かしています。 Sinatra も example.com/c/ example.com/d/ のように複数動かしたいのですが、どうすればいいでしょうか。 サブドメインを取らないで実現したいのです。 RailsBaseURI のような SinatraBaseURI があれば簡単なのですがw
|

|