Ruby 初心者スレッド ..
282:デフォルトの名無しさん
09/05/29 21:23:48
>>281
ばいばーい。
283:デフォルトの名無しさん
09/05/29 23:26:24
ドキュメントが豊富でも言語自体に魅力が無ければ意味が無い
perlやphpが魅力的だと思うなら、お前にrubyは向いてないよ
284:デフォルトの名無しさん
09/05/29 23:38:15
幼女から熟女まで余裕でいける俺にはなんの苦も無いぜ。
285:デフォルトの名無しさん
09/05/30 00:33:30
>>281 には KENT の Perl入門がお似合い
286:デフォルトの名無しさん
09/05/30 01:01:24
るりまってあんま読まれてないのかな?
287:デフォルトの名無しさん
09/05/30 03:14:26
大小問わずウェブは辞めといたほうが吉。
基本は使い捨てだよ。メンテ必要なのは向いてない。
288:デフォルトの名無しさん
09/05/30 05:45:29
君の見てるウェブはメンテナンスフリーなんだな
うらやましいよ
289:デフォルトの名無しさん
09/05/30 05:58:42
いやいや、PerlやPHPの方がよいと思ったら、すでにそっちへ行ってるw
PHPはドキュメントは豊富。これはPHP案件の時マジ助かった。
しかし、ちょっと踏み込むと全然ドキュメントなかったりする…
DateTimeクラス?とかドキュメントなくて、なきそうになった
2chでDateTimeについて質問したら、PHPがオブジェクト指向言語だと思うなよ、とか
あげくに、オブジェクト指向言語氏ねとか煽られるし。所詮その程度。
Perlは10年前にやったがモダンPerl覚える気ねえや…
モダンPerl憶えるくらいならRubyの方がラクチン
幸い、Perlの資産は書き捨てばっかで少なかったし
290:デフォルトの名無しさん
09/05/30 09:49:53
お尋ねします。
あるファイル内の文字列を一文字単位で並び替えることは可能でしょうか?
それを各行単位とファイル単位の二種類のやり方で並び替えたいのです。
1.元ファイルの例
あいうえお
かきくけこ
さしすせそ
2.各行単位の並び替えで希望する結果
おえういあ
こけくきか
そせすしさ
3.ファイル単位の並び替えで希望する結果
そせすしさこけくきかおえういあ
実際の文字列は例と違ってバラバラなので、
A-Z や Z-A のようなソート機能は使えません。
このようなプログラムをRubyで組みたいのです。
291:デフォルトの名無しさん
09/05/30 09:59:22
reverse でいいんじゃね?
292:デフォルトの名無しさん
09/05/30 10:04:07
俺ならスタックに入れてreverse
293:デフォルトの名無しさん
09/05/30 10:08:04
irb(main):006:0> puts "あいうえお".reverse
ィえういあ
なんか化けるな。KCODE='s'のせいか?
WindowsだとUTF-8でirb使う手段がないんだが、みんなどうしてるんだろ
294:デフォルトの名無しさん
09/05/30 10:10:26
str.split(//).reverse.join
295:デフォルトの名無しさん
09/05/30 10:14:41
str.split(//E).reverse.join # E は str の文字エンコーディング1文字
どう小細工しても文字ごとの配列を作らざるを得ないので素直に巨大な配列を作るべし
296:デフォルトの名無しさん
09/05/30 13:02:26
gsub!(/\n/,"") で改行が削除(置換)できません。何故?
297:デフォルトの名無しさん
09/05/30 13:08:08
できてるけどなあ。
¥nのバックスラッシュが 0x5Cではなく 0xA5 になってるとか。
実は改行が ¥r¥n だったとか。
298:デフォルトの名無しさん
09/05/30 13:19:47
\n は「改行」という集合じゃないんだよね
あくまで LF という文字そのもの 1個
LF 以外の改行があるならそれも併記しないと駄目
299:デフォルトの名無しさん
09/05/30 13:22:56
>>297
\n , \r\n , \r の全部でやってみましたが変わりません。
Windows環境だから \r\n ですが、
今まで \n で問題なくマッチてしていました。試しに、
line.gsub!(/\n/,"問題")
でやってみたら行末に「問題」が追加されて改行はそのままですし。
置換のはずが追加の動作になっています。
理由がサッパリ判りません。
300:デフォルトの名無しさん
09/05/30 13:27:44
>>299
そもそも line には \n が含まれているのか?
p line でデバッグしてみ。
301:デフォルトの名無しさん
09/05/30 13:28:12
対象文字列を inspect とか dump とかしてみるといいよー。
302:デフォルトの名無しさん
09/05/30 13:39:47
>>300
置換前を p line してみると各行に \n がありました。
置換後には \n が無くなっていました。
これを見ると置換は成功しているようです。
エディターの問題なんでしょうか。
でもエディタ側で CR+LF , CR .LF を区別して表示してみると
CR+LFが残っているんですよね。
もうちょっと頑張って原因を探ってみます。
303:デフォルトの名無しさん
09/05/30 13:45:12
File.openするときに binary モードになってないとか、
あと、DOS窓からコピーすれば CRLF になるとか。
304:デフォルトの名無しさん
09/05/30 13:55:40
>>302
原因を探るも何も、それが全てじゃ>改行コードの(意図しない)混在
自分でも
> Windows環境だから \r\n ですが、
と書いているように、環境(というかむしろそのデータを吐き出すアプリ)に依って、
その3パターンが入り乱れるなんて、不注意でよくあるケース。
# CR単独、ってのはほぼないけど。
FTPのアスキーモードでファイルの上げ下げをしたり、また適当な設定のエディタで
読み書きすることによっても、テキストデータの改行コードはさくさく変換されつづける。
たまに CRCRLFとかになってて悲しくなることがある。
個人的には、アスキーモードとかテキストモードとか言う改行コードの自動変換処理を
絡ませてろくな事になった記憶がない。
Windowsだけど、自分のスクリプトやそこで使うデータは全部LFで保存してる。
# メモ帳で読めないとか知ったこっちゃない。
305:デフォルトの名無しさん
09/05/30 19:59:29
Ruby初心者ですが、他言語の経験はそれなりにあります。
やりたいこと。
Rubyで外部コマンドを起動して、それを任意のタイミングで終了させたいです。
より詳細に。
自分のプログラムの通信をTCPdumpを使って調べたい。
ただし、何回も実験を繰り返すので、手で起動、終了を繰り返すのは避けたい。
今考えている手法
マルチスレッドでプロセスをつくり、その上でTCPdumpを走らせる。
メインのスレッド上では、自分のプログラムを起動し、しばらくするとそれが終了する。
すると、マルチスレッド上のTCPdumpにシグナルを送って停止させる。
これを数十回繰り返す。
どのように解決すればよいでしょうか。
もしよろしければアドバイスいただけると助かります。
306:デフォルトの名無しさん
09/05/30 20:13:13
これまた Ruby 関係ないな
動いてる tcpdump に SIGINT か SIGTERM を適当に送れ
307:デフォルトの名無しさん
09/05/30 20:13:17
書き忘れましたが、起動の仕方は分かります。
ただ、Ctrl-cで終了させるプログラムをどのように停止させるかが分かりません。
308:デフォルトの名無しさん
09/05/30 20:18:22
なるほど。こっちもOSのコマンドを利用するわけですか。
ジョブ番号を出す、tcpdumpのジョブ番号を取得、kill
ってわけですね。
めんどうですが、その方法でやることにします。
ありがとうございました。
309:デフォルトの名無しさん
09/05/30 20:25:09
どう見ても他言語の経験もそれなりにしかありません、の間違いだな。
質問も回答も全くRuby関係ないw
310:デフォルトの名無しさん
09/05/30 20:39:04
>>308
Rubyから子プロセスにシグナルを送れるよ。
311:デフォルトの名無しさん
09/05/30 20:52:34
>>310
おお、本当ですか。
今調べてみたんですが、それは
URLリンク(www.ruby-lang.org)
であっておりますでしょうか?
これを使ったら、
process.pidの値を取得して、
kill(pid)
のように出来るので
上のコードよりかは幾分綺麗になりそうですね。
ありがとうございます。
312:デフォルトの名無しさん
09/05/31 02:29:50
文字列を与えられた時、アルファベットを大文字小文字区別せずに出現頻度順に小文字で並べた文字列を返すプログラムを作る問題がわかりません。
313:デフォルトの名無しさん
09/05/31 02:38:47
何がわからないの?宿題は自分でやるもんですよ?
314:デフォルトの名無しさん
09/05/31 06:34:44
>>312
誘導
スレリンク(tech板)
315:デフォルトの名無しさん
09/05/31 16:06:17
hoge::huga
と
hoge#huga
はどういう意味ですか?
316:デフォルトの名無しさん
09/05/31 16:12:59
クラス名やメソッド名を連結するときの表記に使う :: と # の違いだと解釈
:: はクラスやメソッドや定数を連結する表記に使い、実際のスクリプト上でもそのように動作する
# はインスタンスメソッドを表す表記に用いられ、実際のスクリプト上では動作しない、マニュアル専用の表記
A::B::C は
Aクラス(かモジュール)の中にあるBクラス(かモジュール)の中にあるCクラス(かモジュール)、
または、
Aクラス(かモジュール)の中にあるBクラス(かモジュール)の中にある定数C
原理上、スクリプトを参照しない限り、見かけではこの2つを区別できない
A#hoge は、Aクラスのインスタンスメソッドhoge
a#hoge は、オブジェクト a のクラスで定義されているインスタンスメソッド hoge
マニュアルのどっかに書いてあった気がする
317:デフォルトの名無しさん
09/05/31 16:40:18
>>316
ありがとうございます。
318:デフォルトの名無しさん
09/05/31 16:43:22
>>316
クラス名#メソッド名 という表記、例えば String#upcase というのを見るのですが、
これはStringクラスのインスタンスの持つupcaseというメソッド、という意味でいいですか?
見ようによってはクラスメソッドに見えます。
319:デフォルトの名無しさん
09/05/31 16:49:56
インスタンスメソッドを URI#path のように # つきで書くような人間は、
クラスメソッドは絶対に URI.parse のように . で繋げて書くから混同されてる可能性は(誤記以外には)ない
安心しれ
320:デフォルトの名無しさん
09/05/31 17:34:25
>>316
これ、テンプレでFAQに入れといていい気がする。
俺も毎回なんだっけ?と迷うからなんだけど
321:デフォルトの名無しさん
09/05/31 18:03:24
なんでそんなに迷うんだよ…
特殊なのはインスタンスメソッドのマニュアル記載法の # だけで、あとは通常のスクリプト内記法と一緒じゃんよ
ドットは
「マニュアルでのクラスメソッド」
「スクリプト内のインスタンスメソッド」
「スクリプト内のクラスメソッド」
の3つがあってややアレだが、
たいていの場合、 . の左は「明らかにクラス名」か「明らかに変数名」のどっちかだろ?
左が@始まりや全部小文字の変数名だったらとりあえずインスタンスメソッドの起動記法だと思え
だから、マニュアルに “小文字.メソッド” があったら変数に対するコピペ実行可能なインスタンスメソッドチェーンだ
例: arr.join の場合、「arrはローカル変数っぽい」から、「arrが指すオブジェクトのクラスのインスタンスメソッドjoin」だとみなす
「変数arrにクラスオブジェクト本体が入ってたらクラスメソッドが起動する可能性が」とか余計なことは考えない
左が大文字で始まってる「明らかにクラス名」の場合はクラスメソッドのマニュアル記載法&スクリプト内のクラスメソッドだ
例: uri.path と URI.parse は連結法はドットで同一だが、
前者は変数っぽいので「変数uriの指すオブジェクトのクラスのインスタンスメソッドpathを起動するようにする」という指示記述
後者はクラスっぽいので「クラス(またはモジュール)URIのクラスメソッドparse」を指すマニュアル記述または起動指示
文字化して書いててどうでもよくなってきた
もしかして、この辺の区別って実は本当の初心者にはつけづらかったりする?
322:デフォルトの名無しさん
09/05/31 18:11:06
本当の初心者って?
323:デフォルトの名無しさん
09/05/31 18:16:53
オブジェクトに属するメソッドとクラスに属するメソッドの違いをてきとーにより分けられない人
324:デフォルトの名無しさん
09/05/31 19:41:33
>>321
なげーよ
もっと簡潔にかけるだろ、あんたなら
325:デフォルトの名無しさん
09/05/31 19:55:06
テンプレ用に短いのキボン
326:デフォルトの名無しさん
09/05/31 20:39:30
つカルシウム
327:デフォルトの名無しさん
09/05/31 22:05:45
やっとプログラミングに慣れきた者ですが、
ネットや本のコードを読むときで、
一つ一つのステ−トメントや式を追う時に、
これが、
インスタンス変数、ローカル変数、定数(クラスもその一種?)、メソッド と判別できるようになって、
少し自信がつきました。
デ−タ?の動き?だけでにとどまらずに、、変数のパタ−ン、メソッドと変数の見分けなどを意識できるようになるのが、
本当の初心者には一つの壁だと思います。
テンプレを書くまで、実力が上がってないけれど、、
328:デフォルトの名無しさん
09/05/31 22:38:19
>>326
カルシウムって・・・
やめろよ頭悪いと思われるぞ。
329:デフォルトの名無しさん
09/05/31 22:39:45
>>328
乳酸菌取れよ
330:デフォルトの名無しさん
09/06/01 13:36:21
カルシウムと言われて真っ先に金属カルシウムを思いつく>>328さんは秀才
「ナトリウムの過剰摂取は身体によくない」と言われて「水と反応して火花散らすから当然だな」
「カルシウムを摂ると身体にいい」と言われて「あんなにイオン化傾向が高いものを摂取するなんて信じられん」
このスレ何のスレだっけ
331:デフォルトの名無しさん
09/06/01 13:58:23
>>321みたいなのは『初めてのRuby』あたりに書いてないかい
332:デフォルトの名無しさん
09/06/01 14:03:31
3ヶ月前に作りかけだったスクリプトの製作を再開しようとしたのだが
コメントつきなのになにやってるかさっぱりわからん
333:デフォルトの名無しさん
09/06/01 14:07:53
スクリプトでそんなに長いの書くなよ。
一画面に収まらなくなってきたらもっとまともな言語使うべき。
334:デフォルトの名無しさん
09/06/01 14:15:39
>>333
まともってなに?
委員会が設計したこと?
335:デフォルトの名無しさん
09/06/01 14:20:53
>>334
事前コンパイル&リンクが必要な言語はコンパイル時間の間に精神を落ち着けることができるので
コンパイル不要な言語より質の高いプログラムを記述することができます
336:デフォルトの名無しさん
09/06/01 14:48:38
スクリプト言語でさくっと作って浮いた時間でお茶でも飲む方がいいよ
337:デフォルトの名無しさん
09/06/01 16:02:12
>>335
>事前コンパイル&リンクが必要な言語はコンパイル時間の間に精神を落ち着けることができるので
でもコードを書いているときに多大なストレスを感じてしまうんだよな、
事前コンパイル&リンクが必要な言語は。むずかしいのう。
338:デフォルトの名無しさん
09/06/01 16:49:06
そんなにあの間が好きならsleepでも噛ませとけw
339:デフォルトの名無しさん
09/06/02 02:09:00
in?の話がちょっと出てる。
qwik.jp/lang-Pattern/DSL.html
340:デフォルトの名無しさん
09/06/02 08:54:16
リンクの貼り方がわかりにくすぎるよ…パパン
341:デフォルトの名無しさん
09/06/02 08:58:17
リンクだったのか。気づかんかった
342:デフォルトの名無しさん
09/06/02 09:08:26
というか「対応するサイトがありません」と言われる
343:デフォルトの名無しさん
09/06/02 10:36:18
339 じゃないけど
URLリンク(qwik.jp)
344:デフォルトの名無しさん
09/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
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5391日前に更新/107 KB
担当:undef