Ruby 初心者スレッド Part 24at TECH
Ruby 初心者スレッド Part 24 - 暇つぶし2ch472:デフォルトの名無しさん
09/01/12 14:56:09
> 外部と提携する時は必ず社員も加える事になっています
いやそんなこたわかってる(というかそんな理由しかありえん)
それでもなお、
「依頼する会社が○○で開発するから話合わせるために○○を覚えろ」
というのは完全に間違っている

というか、それでは何の解決にもなっておらず、遠からず同じ大火傷が起こるだろう

473:デフォルトの名無しさん
09/01/12 15:29:14
会社の事情も何も分からんのに、そんな脊髄反射でスレ違いな話することもなかろう

474:デフォルトの名無しさん
09/01/12 15:36:57
企業様におかれましては仕様固めるとか意思伝達スムーズにするとかのほうにリソース割いてほしいのう
開発言語なんて1ミリも知らなくていいのにっていうかむしろそっちに入り込まれると邪魔

475:デフォルトの名無しさん
09/01/12 18:21:32
>>445
created_on というカラムを作ればレコードの作成日が
勝手に残る(ようにActiveRecordが面倒みてくれる)けど、それではだめ?


476:デフォルトの名無しさん
09/01/12 18:32:32
今日さ、普段使ってるファイルでFile#flock(File::LOCK_EX)のテストしてたんだよね。
そしたらFile.open("hoge", "w")したとたん中身消えちゃって涙目になった。

477:デフォルトの名無しさん
09/01/12 18:51:39
この前、アホアホに彼女と行きましたそうしたら、奥の座敷に、芸能人が10人ぐらいいました。
その中でアホアホ鍋食べていたら、芸能人の人が一緒に飲もうよと、誘ってくれました。
凄くうれしいかたよ。
それから、毎週アホアホに言っています。


478:デフォルトの名無しさん
09/01/12 20:31:09
プログラム上でウェブサイトにpostしたいのですが、
そういうライブラリがあれば教えて下さい

479:デフォルトの名無しさん
09/01/12 20:33:41
標準の net/http
gem の httpclient
gem の Mechanize
好きなの選べ

480:デフォルトの名無しさん
09/01/12 20:38:35
ありがとうございます!

481:デフォルトの名無しさん
09/01/13 00:03:14
>>478
Mechanizeが直感的で一番かんたんじゃないかな?
わかりにくいけど

482:デフォルトの名無しさん
09/01/13 01:26:33
>>481
>Mechanizeが直感的で一番かんたんじゃないかな?
>わかりにくいけど

パラドックス?

483:デフォルトの名無しさん
09/01/13 08:38:42
おまいら高卒アラサーだと雌でも食いつき悪いのな。
どんだけ二次元嗜好なんだよwww


まあコンピュータ言語知識のあるPGやSEでも糞な仕様作るのはいくらでもあるので、ユーザ側でコンピュータ言語知識有ってもいいでしょ。
結局、IT業界って客商売だし、お金出す側の客が、システムの奥深くまで把握して金出したいって要求なんだから迷惑とか関係無いわな。

ほぼ、Cの実務知識無さそうだし、現状取り組むならrubyもCも変わらないね。
>>448に上げてある、システム開発するうえで前提と成る基礎スキルの習得がまずは必要だと思う。
依頼予定の会社のruby使用のシステムの詳細をもう一度確認したら?
Ruby on Rail使う予定というなら、
【Ruby】Ruby on Rails Part6
スレリンク(php板)l50
とか、どーぞ。


貴重な体験だと思うので、日記でも付けて、あとで書籍化でもすると、ルビー神の一人に成れて世界変わるかもしれないwww

484:デフォルトの名無しさん
09/01/13 10:32:08
>>436
>hash = {}
>[:a, :b, :c].each {|k| hash[k] = @hash[k] }
>という処理をもっと簡単に書く方法があれば教えてください。

たぶん、ない。
class ::Hash
 def elems_at(*keys)
  h = {}
  keys.each {|k| h[k] = self[k] }
  h
 end
end
とでもして、hash = @hash.elems_at(:a, :b, :c)としとけ。

>>437
>hash = @hash.dup()
これは違うだろ。選択した要素だけを選び出すのであって、要素をすべてコピーするわけではない。

>>440
>hash.merge!(@hash)
上に同じ。

>>442
>hash = Hash[*@hash.find{|k, v| [:a, :b, :c].include?(k)}.flatten]
include? は線形探索だから、それを何度も行うのは効率悪そう

485:デフォルトの名無しさん
09/01/13 11:20:42
>>hash = Hash[*@hash.find{|k, v| [:a, :b, :c].include?(k)}.flatten]
>include? は線形探索だから、それを何度も行うのは効率悪そう
[:a, :b, :c]に対しての探索だから3要素ならたいしたことないんじゃないの

486:デフォルトの名無しさん
09/01/13 12:02:02
そりゃ本来のデータなんてスレに書きこまんだろ
例示のために3要素にしてるに過ぎない可能性が高い

ていうか、>>436で用が済むんだけどね
これより妥当で遅れない汎用な書き方はまず無いと思われ
基本的な記法を使い倒せる技術最強伝説

487:デフォルトの名無しさん
09/01/13 13:20:46
うん、>>436が一番、やりたいことが素直にコードになってていいと思う。

hash = [:a, :b, :c].inject({}){|h, k| h[k] = @hash[k] ; h }
こんなんもあるけど、自分ならやらない。

488:デフォルトの名無しさん
09/01/13 21:30:11
でもまあ初心者はmapとか使わずeachしか使ってなかったりするからなあ。
eachじゃない書き方があれば教えてあげるのは悪いことでもない。

489:デフォルトの名無しさん
09/01/13 22:34:17
今、ドラクエやってるんだけど、太陽の石ってどこにありましたっけ?

490:デフォルトの名無しさん
09/01/13 23:19:46
みつかりました
ありがとうございました

491:デフォルトの名無しさん
09/01/14 00:13:04
>>490
ざけんなw

492:デフォルトの名無しさん
09/01/14 01:04:46
>>436
keys = [:a, :b, :c]
hash = Hash[*keys.zip(@hash.values_at(*keys)).flatten]

これでもできるような気がするけど、自分ならやらない。



493:デフォルトの名無しさん
09/01/14 02:57:57
Time.nowを簡単に日本語で出力する方法はないでしょうか?
今は、
puts Time.now.strftime('%Y-%m-%d(%a) % %H:%M:%S')
とやっています。%aは ["日", "月", "火", "水", "木", "金", "土"][Time.now.wday]
に置き換えればよいと思いますが・・・

> ruby -v
ruby 1.8.7 (2008-06-20 patchlevel 22) [i386-mswin32]


494:デフォルトの名無しさん
09/01/14 03:02:36
標準ではない。そのへんはその要領で自分で書いておくれ。

495:デフォルトの名無しさん
09/01/14 03:45:37
>>494
ありがとう。適当に書いてみます

496:デフォルトの名無しさん
09/01/14 03:50:57
>>493
TimeでなくDateTimeクラスなら以下のように:

$ irb -rdate -rational -Ku -f
irb> RUBY_DESCRIPTION
=> "ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin9.5.0]"
irb> Date::const_set('ABBR_DAYNAMES', %w(日 月 火 水 木 金 土))
warning: already initialized constant ABBR_DAYNAMES # ミナカッタコトニ
=> ["日", "月", "火", "水", "木", "金", "土"]
irb> t = Time.now
=> Wed Jan 14 03:47:50 +0900 2009
irb> dt = DateTime.civil(t.year, t.month, t.day, t.hour, t.min, t.sec, Rational(t.utc_offset, 86400))
=> #<DateTime: 21209863247/8640,3/8,2299161>
irb> dt.strftime('%Y年%m月%d日(%a) %H:%M:%S')
=> "2009年01月14日(水) 03:47:50"


497:デフォルトの名無しさん
09/01/14 10:56:07
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ  まピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ


498:デフォルトの名無しさん
09/01/14 11:12:39
>>488
map は写像製造だし、写像を作ること以外に使うべきではない

499:デフォルトの名無しさん
09/01/14 11:33:28
498の読解力のなさは委譲


500:デフォルトの名無しさん
09/01/14 12:24:21
Array.new と Array::new の違いは何ですか?

501:デフォルトの名無しさん
09/01/14 12:40:02
>>500
字面の雰囲気

502:デフォルトの名無しさん
09/01/14 12:41:33
>>500
スクリプト作者の出身言語および硬直思考の頑な度

503:デフォルトの名無しさん
09/01/14 12:45:21
>>500
タイプ数

ネタなのかも知れんが、一応マジレスしとくと定数とかのからみで "::" を使うと
面倒引き起こす可能性が無いとはいえないから、理由が無いなら "." を使っとこ

504:デフォルトの名無しさん
09/01/14 12:56:20
メソッド起動に :: を使うことは Ruby では極めて稀というかメリットは何もないよ
他人の書いたスクリプト中で クラス::メソッド という記法を見つけたら心の中でm9(^Д^)プギャーしとくといい
自分から使う理由はないからさ

505:デフォルトの名無しさん
09/01/14 13:01:33
>>501-504
サンクス
違いはないけど、ドットを使ったほうRuby流なんすね

506:デフォルトの名無しさん
09/01/14 13:29:36
クラスメソッドとインスタンスのメソッドの呼び出し方に違いはありますか

507:デフォルトの名無しさん
09/01/14 16:59:10
rubyでアンテナサイトつくってみたいんですけど
何をしたらよいのかわかりません。

何かよい書籍とかありませんか?
実際のアプリケーション作成となると、全くわかりません。

508:デフォルトの名無しさん
09/01/14 17:01:03
>>506
ないっす

File = Class.new(IO)
def Fie.basename(...)
 ...
end

File.basename("aaa/bbb") # => "bbb"

クラスもClassクラスのインスタンスなもんで。

509:デフォルトの名無しさん
09/01/14 17:59:41
(゚∀゚)ラヴィ!!

510:デフォルトの名無しさん
09/01/14 18:26:19
>>507
作るな

511:デフォルトの名無しさん
09/01/14 18:35:30
まあねえ
ネットに関するプログラムは自力で学んでもらってなんぼだしな
何していいのかわからないなら作るのはまだ早い

512:デフォルトの名無しさん
09/01/14 18:56:25
アンテナみたいな、作り方によっては他人に迷惑をかけまくるものは、
「何をしたらよいのかわかりません」レベルの人間には手を出して
ほしくないね。

とりあえずもっと別のところから修行するんだ!

513:デフォルトの名無しさん
09/01/14 19:13:47
その別のところというお題で適当なものを考えてあげようか。
初心者が上達するには題材が必要だろう。

youtubeのRSSを定期的にとってきて、関心のあるキーワードに引っかかったエントリをメールで送信してくれるようなプログラム。


514:デフォルトの名無しさん
09/01/14 20:51:58
>>507
まずはHTTPの仕組み、それと既存のアンテナがどんなことやってるのかを学ぶべき

513のお題も学習に良さそうだ
ただメール送信はちょっとややこしいから、エントリの表題をシェルに表示するぐらいでいいかも

515:デフォルトの名無しさん
09/01/14 21:58:54
すいません、まだドラクエやってるんですが、竜王ってどこにいましたっけ?

516:デフォルトの名無しさん
09/01/14 21:59:53
竜王城

517:デフォルトの名無しさん
09/01/14 22:00:52
玉座の後ろの隠し階段だよ

518:デフォルトの名無しさん
09/01/14 22:12:27
ryuou.castle.search('ryuou')

519:デフォルトの名無しさん
09/01/14 22:15:02
一緒に世界征服しようとしたらバッドエンドだ、気を付けろ

520:デフォルトの名無しさん
09/01/14 22:26:02
昔ファミコンでやってた時何も知らずにバッドエンドだった時は放心した。。。
パスワードとらずにやってたから初めからやり直しだったなwww
苦い青春だったぜ

521:デフォルトの名無しさん
09/01/15 00:41:39
Mac OS X で ruby-1.9.1-rc1 をコンパイルすると、i686ではなくi386になる。
$ ruby -v
ruby 1.9.1 (2008-12-30 patchlevel-0 revision 21203) [i386-darwin9.6.0]
i386用にコンパイルされていると遅いよね?
i686用にコンパイルしたいんだけど、どうしたらいい?


522:デフォルトの名無しさん
09/01/15 04:03:10
誰かrarff使っている人いますか?

523:デフォルトの名無しさん
09/01/15 07:29:43
>>520
2か3で誰かと入れ替わるイベントもあったよな。どっかの王様だっけ?
あん時はパニックになって友達に泣きついたが、あとから考えると
恥ずかしかったな。

524:デフォルトの名無しさん
09/01/15 08:41:56
古いバージョンで動いてたスクリプトを最新版で動くようにする変換機とかありますか?

525:デフォルトの名無しさん
09/01/15 10:03:15
>>524
原理的に無理でしょう
人間の手で書き換えるしかないんじゃないかと

526:デフォルトの名無しさん
09/01/15 15:20:40
>>523
3で王様になるイベントだな。
あれは最初どうにもならんでリセットしたわw

527:デフォルトの名無しさん
09/01/15 17:31:34
irb> file.scan(re[:method])
RegexpError: Stack overflow in regexp matcher

ぬう
これでカッコ多いか生意気な

528:デフォルトの名無しさん
09/01/16 04:09:51
下位互換性確保のために、古いバージョンの実行環境を残しておくのは重要。

529:デフォルトの名無しさん
09/01/16 05:16:24
Ruby 初心者スレッド Part 22
スレリンク(tech板:322番)

322 名前:デフォルトの名無しさん[sage] 投稿日:2008/10/02(木) 18:02:43
バッチファイルにしてやればエラーが出てもポーズさせるようにできるよ。
ruby -x "%~0" || pause
と書けばエラーが出たときに限ってとまる。

test.bat
ruby -x "%~0"
pause
goto :eof

#!ruby
put "hello"



530:デフォルトの名無しさん
09/01/16 05:18:42
うぉ途中で送信した

>>529について質問なのですが、
ruby -x (スクリプト名) と指定することはどういう意味があるのでしょうか?
特に -x なのですが、マニュアルを読んでも意味がわかりません。

これはバッチを実行した時にその作業ディレクトリをスクリプトのディレクトリに移動するという意味でしょうか?


531:デフォルトの名無しさん
09/01/16 05:32:56
#!ruby より上を読み飛ばすってことじゃないかな?
全体でバッチファイルになってるけど、rubyスクリプトとして実行されるのは下の2行だけっていう。

532:デフォルトの名無しさん
09/01/16 10:23:47
最近、『ケント・ベックのSmalltalkベストプラクティス・パターン』に中身が似てるっぽい
『実装パターン』て本が出ましたが、Ruby使いにとってはどちらがより役に立ちますか?
前者がSmalltalkのコードで説明してて、後者はJavaですよね。

両方読んでみた人いますか?

533:デフォルトの名無しさん
09/01/16 11:55:55
>>532
似たことが書いてありますが、SBPPは動的言語向け、IPは静的言語向けの内容なので
どちらかを選ばなければならないなら、Ruby使いにはSBPPのほうを薦めます。

もちろん、お金と時間に余裕があるならば、両方読むのが吉です。

534:デフォルトの名無しさん
09/01/16 13:30:06
>>531
あーーそういう意味か!わかりました。
batファイル自身がRubyスクリプトになっててそのまま実行できるようになってるんですね。

535:デフォルトの名無しさん
09/01/16 20:29:35
win32oleをつかってADO経由でsqlserverのテーブルに
対して読み書きを行おうと思っています。

connectionオブジェクトのゲットは出来ました。
recordsetオブジェクトのゲットも出来ました。
recordsetの各feilds("項目名").valueに値をセットして
updateメソッドで反映出来るのも確認できました。

「よし、出来た」
そう思ったのもつかの間。
「テストテーブルだけど初期値(null)に戻しておくか」
そう思った時に壁につぶかりました。
rsTest.feilds("項目名").value = nil
こうすると例外が出てしまいます。
初期値(null)が入っている時は

p rsTest.feilds("項目名").value
結果:nil
になったのですが…。

DBのnull≠nilで初期値がp関数でnil表示されるのは
型が返還された結果だというのはおぼろげながら
想像はつくのですが、ではADOのFeildオブジェクトに
nullをセットするにはどうしたらいいのでしょうか?

レコードセットでの操作を諦めてSQL文で操作した
方がいいのでしょうか?

環境
OS:WINDOWS2000 rubyのバージョン1.8

536:デフォルトの名無しさん
09/01/16 21:10:26
うちはnilで出来てる

537:デフォルトの名無しさん
09/01/17 00:01:52
ADOのconnectionが作れたならSQL発行すればいいじゃん

538:535
09/01/17 02:06:05
>>536
nilのままでOKなんですか。
となると呼び出し方がおかしいとか
バージョンとかの相性の問題ですかねぇ

>>537
最終的にはそうなりそうです。
ただ、nil以外は値をちゃんと設定できるだけに
何か手順があるのかなと思いまして。

まぁ、ちょっと悔しくてなんとか
足掻けないかなぁと思っただけなんです。



539:デフォルトの名無しさん
09/01/17 06:38:14
URLリンク(ml.postgresql.jp)

540:デフォルトの名無しさん
09/01/17 06:50:04
URLリンク(www.vbalab.net)

541:デフォルトの名無しさん
09/01/17 07:13:16
URLリンク(www.atmarkit.co.jp)

542:デフォルトの名無しさん
09/01/17 07:49:14
>>533
ありがとうございます。参考になりました。

543:535
09/01/17 09:43:17
>>539-541
ありがとうございます。
Ruby側じゃなくて、ADOサイドの問題の可能性が高そうですね。
色々試してみます。


544:デフォルトの名無しさん
09/01/17 10:28:41
テーブルの定義の問題だと思う

545:デフォルトの名無しさん
09/01/17 11:11:32
自分のコーディングが怪しいと思わないところが問題だと思う

546:デフォルトの名無しさん
09/01/17 14:14:56
PStore.new('test.pstore').transaction(read_only=true) do |pstore|
 ...
end

の read_only=true がただのメソッド説明用の表現であり、
実際は引数に true を渡す普通のアレだということを数年使ってきてやっとさっき気づいた

PStore.new('test.pstore').transaction(true) do |pstore|
 ...
end

pstore の時だけなんか引数で代入?みたいな特別な記法があるんだなーとずっと思ってた

547:デフォルトの名無しさん
09/01/17 15:01:17
特別な記法はある

548:デフォルトの名無しさん
09/01/17 15:49:46
>>547
特定のクラスだけ通用する記法みたいなのは特にないよ
返り値が評価されるだけだ

549:デフォルトの名無しさん
09/01/17 16:06:28
いや、トップレベルに read_only= という関数的メソッドを定義するライブラリかもしれないじゃないか

550:デフォルトの名無しさん
09/01/18 03:57:37
KDE3 の korundum.rb にはあった、KDE モジュールの ListView クラスと ListViewItem クラスが、
KDE4 の korundum4.rb にはありません。

これは何か別のクラスで置き換わったのでしょうか。
よろしくお願いします。

551:デフォルトの名無しさん
09/01/18 15:25:00
ちょっとした質問があります。

UTF-8(BOM付き)とUTF-8n(BOMなし)を判別する簡単な方法はありませんでしょうか?

NKF.guess だと 両方とも 5(=UTF8) としか帰ってこず、
判別できませんでした。

552:デフォルトの名無しさん
09/01/18 15:28:41
対象をUTF-8のBOMと照合したらいいじゃまいか

553:デフォルトの名無しさん
09/01/18 15:29:45
BOMとマッチさせるだけだよなぁ。


554:デフォルトの名無しさん
09/01/18 15:55:56
特定のウィンドウやソフトから流れる音楽の音量を音楽編集ソフトで音量増幅したようにリアルタイムで増幅したいのですが。
ルビーでできますか。どのような方法で可能なのですか。

555:デフォルトの名無しさん
09/01/18 16:09:01
>>554
できるとしてもRubyとしての仕事ではなく、
他のプログラムのコア部分に処理を形通り依頼する(データを丸投げして呼び出す)というやり方になる
Rubyは関係ないな

556:デフォルトの名無しさん
09/01/18 16:16:20
>>550
一応答える
知らんがな

KDEスレのほうがたぶん変更理由とかに詳しいと思われ

557:デフォルトの名無しさん
09/01/18 16:26:36
>>554
OSやウィンドウ(アプリ)が何なのかによるんじゃないの?

↓LeopardでAppleScriptを介してiTunesのボリュームを変える
とか書かれても参考にならんでしょ?

require 'osx/cocoa'
include OSX

def iTunesVolume(volume)
script = NSAppleScript.alloc.initWithSource <<-EOF
tell application "iTunes"
set sound volume to #{volume}
end tell
EOF
error = OCObject.new
script.executeAndReturnError(error)
end


558:デフォルトの名無しさん
09/01/18 16:33:04
>>556
そうですか。すまんす。
KDEスレを探してみます。

559:デフォルトの名無しさん
09/01/18 17:21:34
>>557
特定の曲だけにしたいんです

560:デフォルトの名無しさん
09/01/18 18:04:17
.wavとか.mp3とかの元データを変えずに、
再生中に特定の曲だけボリュームを上げたいってことか。


561:デフォルトの名無しさん
09/01/18 18:06:14
Windowsなら腐るほど該当アプリケーションあるけどな

562:デフォルトの名無しさん
09/01/18 18:21:32
>>560
>>561
その方は私の質問に便乗している方ですのでお間違いないように。
私の希望はあくまでも、ウィンドウやソフトから流れる音をミュート以上にリアルタイムで増幅する方法です。

>>555
>>557
そうですか..。
いや、SDLとかいうルビーのゲーム用ライブラリーで音楽が扱えていたことと、
パソコン上で再生された音や特定のウィンドウの音を録音できるフリーウェアがたくさんあったので、そんなに難しいことではないのかなと質問させていただきました。
ミュートの調整による増幅以上に増幅する方法をさがしているので。

563:デフォルトの名無しさん
09/01/18 19:10:47
意味が分からない

564:デフォルトの名無しさん
09/01/18 19:25:49
>>562
他のフリーウェアがどうやってるのかは分からないが
Ruby覚え立てでスパッと出来るほど簡単なものではない
OSによってもやり方が違うし

565:デフォルトの名無しさん
09/01/18 19:52:49
ミュートの意味がおかしくね?

566:デフォルトの名無しさん
09/01/18 20:37:45
>>562
出来ないから諦めろ、て言われたら諦めてくれる?

567:デフォルトの名無しさん
09/01/18 21:30:31
>>564
OSはウィンドウズです。
>Ruby覚え立てでスパッと出来るほど簡単なものではない
そうですか?初心者向けと聞きましたが。
それに分からないから(これから勉強するので)初心者質問スレに質問したのですが。

>>566
分かる人を待ちますよw

568:デフォルトの名無しさん
09/01/18 21:32:54
このスレは成りすましお断りですよ

569:デフォルトの名無しさん
09/01/18 21:44:28
>>567
初心者向けだと言ったやつに聞けばいいのでは?
特定のアプリを外部制御するならまだしも
Windowsで再生してる音の波形から曲を判定し音量コントロールなんて俺はやりたくない。

570:デフォルトの名無しさん
09/01/18 21:50:22
タスクトレイにある「音量」をいじればいいよ。
それと同等の操作ならRuby初心者でもできるだろうけど
それ以上を求めるなら間違いなく待ちぼうけになる。

571:デフォルトの名無しさん
09/01/18 21:54:19
>>569

>特定のアプリを外部制御するならまだしも
>Windowsで再生してる音の波形から曲を判定し音量コントロールなんて俺はやりたくない。
pcに流れる音全体でもいいですよ(できれば個別にですが)。
ただリアルタイムで音量を増幅できれば。
それとフリーの録音かソフトが個別の音を録音できていることから考えると、
pc上に流れた全ての音がミックスされてスピーカーで流れているだけで、
スピーカーから流れる前段階のどこかで、個別の音声はプログラムで取得する方法があるような気がします。

572:デフォルトの名無しさん
09/01/18 21:56:21
よくわからないが,>>561>>567を見ると煽りたくなる衝動に駆られる
この気持ちどうしよう

573:デフォルトの名無しさん
09/01/18 21:56:27
だから、できるって
ただし、Rubyは無関係
他のサウンドとOSの深いとこを触るドライバやライブラリを直接いじるしかない
そのいじり方を学んでから、Rubyで通信する方法を聞きに来な

574:デフォルトの名無しさん
09/01/18 22:05:26
>>567
>そうですか?初心者向けと聞きましたが。
Rubyは初心者向けかもしれんが
お前がやろうとしていることは、確実に上級者向けどころか前人未踏に近い領域だ

> それに分からないから(これから勉強するので)初心者質問スレに質問したのですが。
他の人も散々言ってるように、それは「Rubyの」初心者質問スレで解決できる質問じゃない
素直に諦めてくれ

575:デフォルトの名無しさん
09/01/19 03:00:31
>>567
できりょ。

・Rubyをインストールする
・Vistaをインストールする
・タスクトレイから音量ミキサを開く
・アプリケーションごとの音量を調整する

な?簡単だろ?

ちなみに、Win32のデバイスドラバとかWin32APIとか絡みそうなものはRubyと激しく相性が悪い。
そもそも、Win32をゴリゴリやるのは向かないだろ。
C#(.NET)とかC++の方がまだ向いてる。


576:デフォルトの名無しさん
09/01/19 04:25:20
>Win32のデバイスドラバとかWin32APIとか絡みそうなものはRubyと激しく相性が悪い。
mjsk
kwsk


577:デフォルトの名無しさん
09/01/19 05:10:11
>・Rubyをインストールする
>・Vistaをインストールする
>・タスクトレイから音量ミキサを開く
>・アプリケーションごとの音量を調整する

これは上から順に見てワロタwww
上から順にしようとしたらできない事書いてあるし久々オモローwww

578:デフォルトの名無しさん
09/01/19 08:55:50
オモローって自分から使ってる人久しぶりに見た

579:デフォルトの名無しさん
09/01/19 09:39:59
rubyのRPMを探しているのですが、見つかりません
どこにありますか?

580:デフォルトの名無しさん
09/01/19 09:53:00
>>579
最新のものにこだわらなければ、
大抵のLinuxディストリなら標準で入ってるんじゃね?
OSと、欲しいRubyのバージョンは何?

581:デフォルトの名無しさん
09/01/19 11:22:21
yum install ruby で入らないのか?

下手に探すより環境をしっかりさせろ。

582:デフォルトの名無しさん
09/01/19 11:23:09
yum じゃなければ apt-get

583:デフォルトの名無しさん
09/01/19 11:56:52
1.8.6に1.8.7のinjectでのシンボルによる二項演算子指定を実現するのは以下でいいと思います?

class Symbol
def to_proc
proc { |obj, *args| obj.__send__(self, *args) }
end
end

module Enumerable
alias _inject inject

def inject(*init, &block)
if not block
begin
return _inject(&init[0])
rescue
return _inject(init[0], &init[1])
end
end
_inject(*init, &block)
end
end

584:デフォルトの名無しさん
09/01/19 18:14:58
emacs(meadow)でRuby書くときにこれこそ入れておけっていうelispありますか?
ruby-modeとruby-electric位しかruby周辺は入れてません.


585:デフォルトの名無しさん
09/01/19 18:35:54
ハッシュってキーもバリューも日本語いけるんだな!ちとおらびっくりしたぞ!

586:デフォルトの名無しさん
09/01/19 22:16:48
激しく実行環境依存で嵌まりそうだけどな。

587:デフォルトの名無しさん
09/01/19 22:24:07
可搬性がなければならないプログラムを作らなければならない必要性というのは
現代のRuby用途では意外と低い

588:デフォルトの名無しさん
09/01/19 22:58:55
自分んとこ(か、日本語が通ることが確定してる特定の環境)で使っておしまいというスクリプトのほうが多いな、確かに
外に出すんでなけりゃ日本語使ってもいいと思うけどね
日本語べったりになってるとアルファベットでどう書くか悩むことになるけど

589:デフォルトの名無しさん
09/01/19 23:01:44
形態素とか使ってたら日本語使った方が簡単そうだな

590:デフォルトの名無しさん
09/01/20 00:22:14
Ruby1.8.6です。REXMLのverは3.1.6です。
URLを与えたらそこから文書を抜き出してきて、それをyahooの形態素解析にかけるとXML形式でレスポンスが返るので
それをREXMLで解析するプログラムを作ったのですが、
wikipedia(全体ではなく開けるものもある)やその他一部のページで、REXMLの解析中にParseExceptionエラーが起きてしまうのですが、
エラー文を見ても意味がよく分からなく、同じような症状?が出た方も中々いないようなのでお手上げです。

以下エラー文です。
#<REXML::ParseException: Declarations can only occur in the doctype declaration.
Line:
Position:
Last 80 unconsumed characters:
<!doctype html public "-//W3C//DTD HTML 4.01//EN" "URLリンク(www.w3.org)


591:デフォルトの名無しさん
09/01/20 00:32:17
明らかにXMLじゃないじゃん、それ
Yahooからの返事がXMLじゃないエラーか何かなんだと思うよ

592:デフォルトの名無しさん
09/01/20 00:35:52
!DOCTYPE宣言が二重になってるとかなんだろうな

593:590
09/01/20 01:51:53
>>591
エラーでしたら400等が表示されるはずなのですが、、

>>592
二重になるのってどこが問題なんですかね..

594:デフォルトの名無しさん
09/01/20 02:07:54
>>593
400等が表示って、ちゃんとHTTPレスポンスヘッダはチェックしてる?


595:デフォルトの名無しさん
09/01/20 02:09:06
しまった脊髄反射的なレスだった。
とりあえずREXMLに食わせるまえにファイル出力してみればいいよ。

596:デフォルトの名無しさん
09/01/20 02:33:58
エラーになるURL晒すのが早いと思うが

597:デフォルトの名無しさん
09/01/20 04:34:23
ネット系の問題に自分でデバックすら出来ないレベルか。なんか目的にたどり着くのは無理っぽい。


いつも使う必須のスクリプトが環境依存で引っ越して問題が出るのは良くある事。
まあその時に必要に迫られて書き直すと見通しよく成っていいプログラムに成る事は多いが。車輪の再生産気味だが。

598:デフォルトの名無しさん
09/01/20 06:11:08
リファクタリングが車輪の再生産って言われるとやる気なくします><

599:デフォルトの名無しさん
09/01/20 06:25:09
>>593
ステータスコードが200だからといって信頼していいわけじゃないぞ

600:デフォルトの名無しさん
09/01/20 08:21:46
ruby 1.8.6 WindowsXP SP3です。

実例ではないのですが、100までの数をカウントするプログラムに、
標準入力から入力された数字を現在の数字に足す機能を加えたいと思っています。
色々調べたところ、スレッドというものを使えばよいのかな、という結論に達したので
以下のようなプログラムを書いてみましたが、思うような動作をしてくれません。
どなたかお知恵を貸していただけないでしょうか?

j = 1
t = Thread.new do
  while (j < 100)
    sleep 1
    p j.to_s
    j += 1
  end
end

while (j < 100)
  i = gets.chomp
  j += i.to_i
end


601:デフォルトの名無しさん
09/01/20 08:41:42
これは・・・

602:デフォルトの名無しさん
09/01/20 08:45:58
自然数k,p,q,m,nについて
k=mp+nq(m>=0,n>=0)を満たす(m,n)の組の数をv(k)とするとき
p=3, q=7, kが1から100までのときの結果vの一覧を出力したいです
Rubyではどのように書いたらいいですか?


603:デフォルトの名無しさん
09/01/20 08:53:52
>>600
うちではうごいた

604:デフォルトの名無しさん
09/01/20 08:55:22
>>602
m=0あるいはn=0のとき自然数じゃなくなるけどいいの?

605:デフォルトの名無しさん
09/01/20 08:58:43
>>604
すみません間違えました
 x 自然数k,p,q,m,nについて
 o 自然数k,p,qについて
あと、m,nは「0以上の整数」です
よろしくおながいします

606:デフォルトの名無しさん
09/01/20 08:59:23
>>603
うちでは数の表示がgets.chompに邪魔されて、リターンを押すまで
数え上げるほうのスレッドの実行がとまっているみたいなんです。

環境はLinuxとかでしょうか?

607:デフォルトの名無しさん
09/01/20 09:09:14
>>606
cygwinです

608:デフォルトの名無しさん
09/01/20 09:10:44
>>602
p = 3
q = 7
(1..100).each do |k|
 v = 0
 (0..(k/p)).each do |m|
  (0..((k-m*p)/q)).each do |n|
   if k == m*p + n*q
    v += 1
   end
  end
 end
 print "v(#{k})=#{v}\n"
end

609:デフォルトの名無しさん
09/01/20 09:20:36
>>607
ありがとうございます。
実際にこの処理を使用するプログラムでは拡張ライブラリ使用&exerbでexe化を
考えています。Cygwinでは正常にexe化できないようなのでmswin32でなんとかならないか
もうちょっと調べてみます。

610:デフォルトの名無しさん
09/01/20 09:21:13
>>600
mswin32ではgetsがブロックする。

611:デフォルトの名無しさん
09/01/20 09:27:05
リファレンスのどっかにあったと思ってたんだけど、やっと見つけた。
URLリンク(www.ruby-lang.org)

612:デフォルトの名無しさん
09/01/20 09:30:49
>>608
こうかな
p = 3
q = 7
t = 0
u = 0
(1..100).each do |k|
 v = 0
 (0..(k/p)).each do |m|
  if (k-m*p)%q == 0
   v += 1
  end
 end
 print "v(#{k})=#{v}\n"
 u += v
 if v > 0
  t += 1
 end
end
print "total #{t}, #{u}\n"


613:デフォルトの名無しさん
09/01/20 09:41:30
>>609
exerb+cygwinでexe化うまくいってるよ
なんか変なライブラリくっつけてない?

614:デフォルトの名無しさん
09/01/20 09:59:05
>>602
参考になるのかな
URLリンク(d.hatena.ne.jp)

615:デフォルトの名無しさん
09/01/20 10:09:17
アンカミス
>>600

616:デフォルトの名無しさん
09/01/20 10:34:43
>>614
ドンピシャです。ありがとうございます!

>>610-611
なるほど、mswin32だと修正を待つしかない・・・のかな?
と思ったけど回避策ってあるもんなんですね。引き出しを増やさなきゃ。

>>613
win32/sapi5を使っているのと、HDD容量に難があったのでCygwinは入れてませんでした。
2日前にHDDを注文したので届いたらCygwinでもやってみます。

レス下さった方々、ありがとうございました。

617:デフォルトの名無しさん
09/01/20 12:17:42
>>616
>なるほど、mswin32だと修正を待つしかない・・・のかな?

バグじゃないから修正はされないんじゃないかな。
1.9では問題ないみたいだけど。

618:デフォルトの名無しさん
09/01/20 12:52:49
>>608
共通一次ですね

619:デフォルトの名無しさん
09/01/20 12:54:26
>>616
_kbhit入れたバージョンでも
一文字だけ入れてenterしないときって止まるよね

620:デフォルトの名無しさん
09/01/20 13:05:14
>>617
バグじゃないんですかね?ruby-list 36068ではバグみたいに言われてる気がするけども。
1.9では問題ないとは!バージョンあげようかなぁ。

>>619
止まりますね。でも、そのほうが便利な気がしないでもないです、私の場合。

621:デフォルトの名無しさん
09/01/20 13:51:52
>>614の方法だとキー入力するまでひたすらビジーループなんだが

622:デフォルトの名無しさん
09/01/20 15:42:40
>>620
Windowsでselectがコンソールに対して効かないのは仕様だろう。
バグだと思うならMSに言ってみるのがいいんじゃないか。

623:デフォルトの名無しさん
09/01/20 19:56:56
>>621
そんなことないですよ

624:デフォルトの名無しさん
09/01/20 22:05:16
h = {"direct"=>"5",
  :list=> {"6"=>"南西","7"=>"西","8"=>"北西","1"=>"北","2"=>"北東","3"=>"東","4"=>"南東","5"=>"南"}}
上のハッシュをh.ya2yaml すると
  direct: "5"
  ? !ruby/symbol list
  :
    ? "1"
    : 北
    ? "2"
    : 北東
    ? "3"
    : 東
    ? "4"
    : 南東
    ? "5"
    : 南
    ? "6"
    : 南西
    ? "7"
    : 西
    ? "8"
    : 北西
となるのですが、’?’はどういう意味ですか。
そもそも "8":北西 という感じで出力されると思っていたのですが,
期待と違った結果でした。
ruby 1.8.6 (2008-03-03 patchlevel 114)


625:デフォルトの名無しさん
09/01/20 22:48:19
1.9っていつリリースされる予定なの?

626:デフォルトの名無しさん
09/01/21 01:17:39
RC2出てから

627:デフォルトの名無しさん
09/01/21 02:00:38
>>626
知らないなら答えきゃいいじゃん

628:デフォルトの名無しさん
09/01/21 02:08:46
Japanese O.K.

629:デフォルトの名無しさん
09/01/21 02:09:29
RC2出たな

630:デフォルトの名無しさん
09/01/21 03:13:17
a=[1,1,1,2,2,3,4,5,5,5]の配列を
b=a|aにしたら[1,2,3,4,5]となりますが、
1->3個,2->2個,3->1個,4->1個,5->3個のように
どの要素が何個かぶっていたかというのはどのようにしたらいいでしょうか?

631:デフォルトの名無しさん
09/01/21 03:26:54
とりあえずは普通に数えればいい

overlap = Array.new
b.each do |bb|
count = 0
a.each do |aa|
count = count + 1 if aa == bb
end
overlap << [bb, count]
end
overlap.each do |i, n|
puts "#{i} の重複は #{n} 個です"
end

めんどくさい人向け

overlap = b.map{|e| [e, a.grep(e).size] }

632:デフォルトの名無しさん
09/01/21 03:27:07
h=Hash.new
h.default=0
a.each do |i| h[i]+=1 end

俺も初心者に毛が生えた程度なので、より良いのがあれば指摘求む

633:デフォルトの名無しさん
09/01/21 03:28:53
def uniq_c(org)
 counts = {}
 org.uniq.each{|e| counts[e] = org.count(e) }
 counts
end

とか。#countがどっから入ったか怪しいけど。
こーいう要望は割と定番なのでRuby "uniq -c"とかでググるとよろし

634:デフォルトの名無しさん
09/01/21 03:32:36
確認したらArray#countはRUBY_VERSION >= '1.8.7'だった。代わり
org.count(e)
-> org.select{|x| e == x }.size

635:デフォルトの名無しさん
09/01/21 03:40:38
最初のが一番マシだな
それ以降のはただのオナニー

もしかしたら演算記号メソッドで何かどうにかすればなんかどうにかなると思ったかもしれないけど、
残念ながらそういうのは無い
2つの配列の関係を解析して返すメソッドというのはあっても面白そうだとは思うが、きっとおおむね無駄だ

636:デフォルトの名無しさん
09/01/21 03:53:14
>>631-634
ありがとございました
書き込んだ後,配列について調べてたらuniqっていうのがあるんですね.
>>635
そうです.なにかメソッドがあるのかなと思ったのですが.
数え上げしていけばいいくらいなんで無駄になりますよね.

637:デフォルトの名無しさん
09/01/21 05:27:54
どこがオナニーなんだよ。数え上げる時は普通にHashを使うだろ
つーか>>631の最初のコードはズボラ過ぎる

638:デフォルトの名無しさん
09/01/21 05:38:19
a.inject(Hash.new{0}){|h,v| h[v] += 1 ; h }

639:デフォルトの名無しさん
09/01/21 05:54:27
>>632が一番マシですね

640:デフォルトの名無しさん
09/01/21 06:12:44
普通に考えれば>>632だよな
少なくとも「最初のが一番マシ」はねーよw

641:デフォルトの名無しさん
09/01/21 09:10:58
ハッシュは順番が保存されないのがなー

642:デフォルトの名無しさん
09/01/21 09:22:00
この場合はたぶん順番必要ないよね

643:デフォルトの名無しさん
09/01/21 11:52:07
正規表現を使って一致を見てるんだけど
正規表現のパターンの中に「図」っていう漢字をいれると

warning: regexp has `}' without escape

ってwarningでるんだけど何とかならないですか?



644:デフォルトの名無しさん
09/01/21 11:55:22
その漢字の文字エンコード(普通、そのスクリプトのファイルの文字エンコード)を正規表現に指定しろ
っていうか、そのへんは解説なりなんなりでフォローがあったと思うんだが

645:デフォルトの名無しさん
09/01/21 12:04:10
>>643
ファイルのエンコードは何つかってる?

646:643
09/01/21 12:30:03
>>644-645
返事ありがとうございます。

/図/
ってやってるのでエンコードの指定は特に何にもやってないです
Regexpクラスかなんかをつかってそのインスタンスにエンコードを指定するってことですか?
ファイルはShift-Jisでやってます

647:デフォルトの名無しさん
09/01/21 13:00:30
require 'jcode'
$KCODE = 'SJIS'
でとりあえずいいんじゃないの

648:643
09/01/21 13:06:04
>>647
うまく行きました
ありがとうございます

649:デフォルトの名無しさん
09/01/21 13:07:18
jcode厨がまだいたとは
jcodeは正規表現には全く関与しない

650:デフォルトの名無しさん
09/01/21 13:39:33
>>643
-Kオプションについて調べるがよい

651:デフォルトの名無しさん
09/01/21 14:10:38
いちいち起動するたびに -K オプション付けなくちゃいけないの?

652:デフォルトの名無しさん
09/01/21 14:16:18
1行目
#!ruby -Ks

653:デフォルトの名無しさん
09/01/21 14:29:03
>>652
i see.

654:デフォルトの名無しさん
09/01/21 18:46:15
データが文字列の内容に数字をふったものを対象にして
数字でソートする場合どんな感じでやればいいでしょうか。
文字数字のままやると小さい数字が後にきたりして、ソートがおかしくなるのですが。


655:デフォルトの名無しさん
09/01/21 19:01:10
全部同じ桁にする

656:デフォルトの名無しさん
09/01/21 19:02:29
sort メソッドの説明は気の利かない書き方をしてるからね
あれはブロックの結果がどうなるかでソートされるんだ

irb> puts ['30歳', '2歳', '10歳'].sort
10歳
2歳
30歳
irb> ['30歳', '2歳', '10歳'].each{|a| puts a.scan(/\d+/)[0].to_i}
30歳
2歳
10歳
irb> puts ['30歳', '2歳', '10歳'].sort_by{|a| a.scan(/\d+/)[0].to_i}
2歳
10歳
30歳


657:デフォルトの名無しさん
09/01/21 19:05:00
>>654
数字を振るというのが文字列と別枠なら
hash = {3=>"c",2=>"b",1=>"a"}
hash.sort.map{|v| v.last}

658:デフォルトの名無しさん
09/01/21 19:12:11
irb> ['30歳', '2歳', '10歳'].each{|a| puts a.scan(/\d+/)[0].to_i}
30歳
2歳
10歳

659:デフォルトの名無しさん
09/01/21 19:25:19
>>658
あ、すまんね
そこのへんだけ直前に書き換えたんだ
案の定間違ってるな

irb> ['30歳', '2歳', '10歳'].each{|a| p a.scan(/\d+/)[0].to_i}
30
2
10

ってことで、ブロック内で数字部分を抜き出して整数にしてるんだということがわかってもらえればよかった
それぞれの要素に対して「数字部分を抜き出して整数にしたもの」で比較してソートすれば、おそらくうまくいく

660:デフォルトの名無しさん
09/01/22 01:31:38
>>600
とりあえずC#(.NET3.5)では

int j = 1;
Thread t = new Thread(new ThreadStart(() => {
while (j < 100) {
Thread.Sleep(1000);
Console.WriteLine(j);
j += 1;
}
}));
t.Start();

while (j < 100) {
String i = Console.ReadLine();
j += Convert.ToInt32(i);
}

これが動いたから、IronRubyなら動くかもよw

661:デフォルトの名無しさん
09/01/22 04:51:23
>>659
そこまで書いたなら最後まで書けばいいのに。
['30歳', '2歳', '10歳'].sort_by {|a| a.scan(/¥d+/)[0].to_i }
または
['30歳', '2歳', '10歳'].sort_by {|a| a =~ /¥d+/; $&.to_i }


662:デフォルトの名無しさん
09/01/22 14:26:38
['30歳', '2歳', '10歳'].sort_by {|a| a[/\d+/].to_i }


663:デフォルトの名無しさん
09/01/22 14:40:21
いや短くすることに意味はないから
そんなこと言ったら

%w.30歳 2歳 10歳..sort_by{|l|l.to_i}

が標準で最短だぞ

664:デフォルトの名無しさん
09/01/22 14:45:30
たぶん単位とかだと思うけど、そういうのデータの中に含めるのってどうなんだろう
「1.5メートル」より「90センチ」の方が大きくなったりするんだろ?
さすがに「2メートル」と「5キロ」とかは混在していないと思うが

665:デフォルトの名無しさん
09/01/22 14:51:57
生のデータを生のまま極力取り込んでおきたいという需要はそこそこあると思うよ
数値だけとかに正規化しとけというのはいやもう全くその通りではあるんだが

666:デフォルトの名無しさん
09/01/22 14:58:56
>>665
そういうのはラッパクラス作って都合の良い方でアクセスできるようにしとく

667:デフォルトの名無しさん
09/01/22 15:11:59
>>664-665の見てる世界と>>666の見てる世界は違うな

668:デフォルトの名無しさん
09/01/22 15:20:43
データがアクセスされるのは一つの言語からだけとは限らないぞ
3つ言語使ってたら全部の言語でラッパークラスを実装するのか?

669:デフォルトの名無しさん
09/01/22 15:32:09
それはまんどくさい(´・ω・`)

670:デフォルトの名無しさん
09/01/22 15:34:58
>>668
1つの言語からだけのことのほうが圧倒的に多いと思うがどうかね
君は移植性の高いC言語を使うべきだと思うよ

671:デフォルトの名無しさん
09/01/22 15:46:13
>君は移植性の高いC言語を使うべきだと思うよ
うむ

672:デフォルトの名無しさん
09/01/22 16:10:58
データきたないと前の担当者に殺意を抱いたりするよなw

673:デフォルトの名無しさん
09/01/22 16:24:45
>>667
全くだ
汎用DBソフトに格納される業務データしか扱ったことがないのだろう

674:デフォルトの名無しさん
09/01/22 16:33:35
ほんとにどうでもいい話なんだけど

>>673
そういう人って稀にいるよね
業務でしかプログラミングに関わってない人
それはそれで仕事として効率もいいし好ましいことも多いが、話が全然合わんので困る

675:デフォルトの名無しさん
09/01/22 20:13:33
仕事でやっててプログラミングを好きな人はまだ良いが
好きでもなく仕事だからってやってる奴のソースはだいたい汚い。
そういう時は殺意抱くなwww

676:デフォルトの名無しさん
09/01/23 01:33:48
>>664
>たぶん単位とかだと思うけど、そういうのデータの中に含めるのってどうなんだろう

Measureというライブラリを使うと単位系を操ることができる
URLリンク(d.hatena.ne.jp)

677:デフォルトの名無しさん
09/01/23 02:30:36
>>675
たしかに
a1=1
a2=2
a3=3
...
と延々と書かれていたことがある
配列+ループにするとか考えろと思ったが
行数で単価計算されるなら上の方が正解なのかも知れない

678:デフォルトの名無しさん
09/01/23 03:00:00
配列として保持するコストを嫌ったのかもしれない

679:デフォルトの名無しさん
09/01/23 03:09:40
世の中には虚しいこともあるんだね

680:デフォルトの名無しさん
09/01/23 03:57:53
>>678がたぶん正解だと思う
行数稼ぎか配列利用法が理解できなかった(または利用禁止)な可能性も充分あるが

681:デフォルトの名無しさん
09/01/23 04:01:09
つか、言語と実行環境に強く依存するな
配列にしてしまうと保持と参照コストが妙に高くなる言語というのはなんかどっかにあったはず

682:デフォルトの名無しさん
09/01/23 04:39:18
array=[a,b2c,d2e,f,g]を[a,[b,c],[d,e],f,g]に分解するにはどうすればいいですか?

683:デフォルトの名無しさん
09/01/23 04:46:41
>>682
標準的な方法はないから、まあ好きにやれ
要素ごとに正規表現で分割して自力で配列を作るしかないな

684:デフォルトの名無しさん
09/01/23 04:55:12
>>682
split("2")とpushでOKじゃね?

685:デフォルトの名無しさん
09/01/23 05:18:20
[a,b2c,d2e,f,g]

['a','b2c','d2e','f','g']
という意味なのか?

686:デフォルトの名無しさん
09/01/23 05:23:33
>>685
この文脈ではそう考えるのが自然じゃね
配列の要素が参照している変数名の英字部分を
ネストした配列の要素の参照の変数名に反映したいという込み入った希望かもしれんが

687:デフォルトの名無しさん
09/01/23 05:34:30
こうですか?わかりません

>> ['a','b2c','d2e','f','g'].map{ |e| /2/ =~ e ? e.split(/2/) : e }
=> ["a", ["b", "c"], ["d", "e"], "f", "g"]

688:デフォルトの名無しさん
09/01/23 06:33:01
EOFにマッチする正規表現、または"末尾"がEOFであることを手短にチェックする方法ないですかね

キー1: 値1
キー2: 値2[EOF]


689:227
09/01/23 07:22:40
昔のことになりますが、カテゴリ取得に関して質問したものです。
ログを見ていたら同じようなことが質問されていたのでまた、質問をさせていただきます。

search('a').select{|a| /cat_/ =~ a['href']}.map{|a| a.inner_text}
カテゴリが一つだけ指定されている場合は上のものでうまく言っていたのですが、
一つの記事で二つ以上指定されている場合にうまくいきません。
理想としてはcategory=["A",["A","B"],"A","B",["A","B","C"]]
のようにしたいのですが


690:デフォルトの名無しさん
09/01/23 07:50:36
rubyってhtmlspecialcharsあるの?

691:デフォルトの名無しさん
09/01/23 07:52:37
>>689
もっと具体的なhtmlの例を出してくれないと答えられないような…

692:デフォルトの名無しさん
09/01/23 07:58:05
>>689
selectってなんだっけ、findだっけfind_allだっけ
…allのほうか

カテゴリってのは一番下にあるやつだな、他のブログではタグとか言われてるものだ

>>246では例が悪いので、適当な大手のアルファルアモザイク例に出すぞ
URLリンク(alfalfa.livedoor.biz)

これから
[
 ["ネット・PC・技術", "短レス"],
 ["ネット・PC・技術", "短レス"],
 ["ネット・PC・技術", "知識・薀蓄"],
 …
]
という配列を抽出したいという要望でいいか?

「記事単位でsearchかけてから、それの返り値のHpricot::Elemなどに対してmapを使う」が答
なにをどうやって記事単位とみなすかはそのサイトのHTML構造読め

693:デフォルトの名無しさん
09/01/23 08:11:05
>>690
あるよ

694:デフォルトの名無しさん
09/01/23 08:17:26
>>691
>>692さんが例に上げたサイトのようなものです。
>>692さんが書かれたような配列です。記事単位はデザインの雛形によって変わってくるので調査済みです。
今移動中なんで確認できませんが,
記事単位.search('a').select{|a| /cat_/ =~a['href']}.map{|a|a.inner_text}みたいなものですか?

695:デフォルトの名無しさん
09/01/23 08:17:35
require 'rubygems'
require 'hpricot'
require 'open-uri'
require 'kconv'

doc = Hpricot.parse(URI.parse('URLリンク(blog.livedoor.jp)').read)
result = doc.search('div.hentry').map{|div|
[div.at('h3.title%20entry-title').inner_text,
div.search('a').find_all{|e| /archives\/cat_/ =~ e['href']}.map{|e| e.inner_text}]
}

result.each do |post|
puts "#{post[0]}[#{post[1..-1].join(', ')}]".toutf8 # 画面表示のエンコードに合わせること
end

けっか:
FF11、バグを利用してアイテムを複製した500人の廃人を強制退会処分に
[びっくりニュース, ゲーム]
次期ロシア正教会総主教のネット人気投票、日本人大主教がダントツ1位に…「日本アニメのファンが原因」とロシアマスコミ
[びっくりニュース, 国際]
「孫悟空」の起源は韓国のサルだった…韓国教授が主張
[痛いニュース, 韓国・北朝鮮]
パッケージに萌えキャラが描かれた「ツンデレカレー」「萌カレー」他が馬鹿売れ
[おバカなニュース, 食生活]
「若者、結婚が遅い…どんな恋愛してるのか」「日本はなぜ子供産むのが難しいのか」など、小渕大臣が少子化分析チーム
[痛いニュース, 政治・経済]



タグのネスト云々はこういうことをやりたいのだと推測
タグが1個しかない場合も要素1の配列になるので注意

696:デフォルトの名無しさん
09/01/23 08:23:21
>>695
ありがとうございます。すぐに確認できませんが,帰宅したら確認します!

697:デフォルトの名無しさん
09/01/23 08:27:31
スクリプト作るの早いな

698:デフォルトの名無しさん
09/01/23 08:30:58
>>697
過去に似たようなの作った経験があれば見当つくから
あとはサイトの特徴調べるだけでこんなもんよ
早い人はもっと早いはず

というか、このスクリプトは見たままの処理しかしてないので泣きたくなるほど遅い
なんかスゴい人がXPathとか駆使して爆速に仕上げてくれることを期待

699:デフォルトの名無しさん
09/01/23 08:32:08
>>693
名前は?

700:デフォルトの名無しさん
09/01/23 08:42:52
>>699
def CGI::escapeHTML(string)
string.gsub(/&/n, '&').gsub(/\"/n, '"').gsub(/>/n, '>').gsub(/</n, '<')
end

ということで CGI::escapeHTML
require 'cgi' して使ってね
シングルクオートをエスケープすることはありません

701:デフォルトの名無しさん
09/01/23 08:50:58
今なら cgialt/util を薦めた方が良いのでは

702:デフォルトの名無しさん
09/01/23 08:52:46
標準でなくていいのならたくさんあるよそりゃ
4つgsubするだけだから自前でやれというのもありだろうし
cgiライブラリがCGI作成に最早使われてないのは公然の暗黙

703:デフォルトの名無しさん
09/01/23 08:56:32
最近は文字列エスケープユーティリティと化してるな

704:デフォルトの名無しさん
09/01/23 09:39:17
ここでスモーカー抜けるのは痛いな

705:704
09/01/23 09:43:02
ごめんなさい

706:デフォルトの名無しさん
09/01/23 10:01:47
>>699
URLリンク(www.ruby-lang.org)
結構いろいろそろってる

707:デフォルトの名無しさん
09/01/23 10:03:15
揃ってるも何も(PHPの)htmlspecialcharsの動作をするのは CGI.escapeHTML だけだぞ

708:デフォルトの名無しさん
09/01/23 10:12:43
>>707
全然知らんようだからほかにもいろいろあるって紹介したのだが
URLエンコードするのありますか?とか追加質問されたらバカバカしいだろ
リロードしてなかったから>>700は気づかなかった

709:デフォルトの名無しさん
09/01/23 10:18:11
Ruby1.9が入っていないと端末に「アナログ」と表示する.bashrc - aikeの日記
URLリンク(d.hatena.ne.jp)


710:デフォルトの名無しさん
09/01/23 10:24:50
Rails1.2.6を使って作成しているのですが、selectを動的に変化させようとすると ActionView::TemplateError (undefined method `number_select' for #<HashWithIndifferentAccess:0xb722adf0>
というのが出てしまいます。回避策があればご教授ください。

<やっていること>
index.rhtmlの中を次のようにしています。
<div id="all">
<table>
<tr><td id="first"><%= render :partial => 'first_info' %></td id="first"></tr>
<tr><td id="second"><%= render :partial => 'second_info' %></td id="second"></tr>
<tr><td id="third"><%= render :partial => 'third_info' %></td id="third"></tr>
</table>
</div id="all">

_first_info.rhtmlには次のような selectがあります。
<%= select(:first_info, :number_select, @numbers, {:selected => @select_value}, {:onchange => remote_function(:submit => :first_info, :url => { :action => :change_select }}) %>
@numbersはコントローラー側で @numbers = ActiveSupport::OrderedHash.new してデータベースから値を格納しています。

_second_info.rhtml のテキストボックスに値を入力し、ボタンを押したら、その値をDBに登録し、_first_info.rhtmlの selectのリストに入力値を追加しようと以下のように処理しています。

1.コントローラーの_second_info.rhtmlから次の関数が呼ばれる
def second
データベースへ登録
@numbers = ActiveSupport::OrderedHash.new
@numbers へデータベースの値を格納
@select_value = 1
end

2. second.rjsは _first_info.rhtmlを更新するため、次のようになっている
page[:first_info].replace_html :partial => 'first_info'


711:デフォルトの名無しさん
09/01/23 10:28:02
>>710
【Ruby】Ruby on Rails Part6
スレリンク(php板)

712:デフォルトの名無しさん
09/01/23 10:42:15
instance_variable_set の 変数名に指定する文字列って、ユーザの入力そのまま渡しても大丈夫?

713:デフォルトの名無しさん
09/01/23 10:51:53
>>712
そのクラスでありえそうな変数名用文字の集合(おおむね英数字とアンダースコア)にマッチしないものは
事前に弾いとくとかしておいたほうがいいと思う
あるいはアクセサの提供を条件にしておいて instance_methods に指定文字列があるかどうかチェックするとか
中のほうでevalしてるんじゃないかという疑問に答える知識はない

714:デフォルトの名無しさん
09/01/23 11:58:26
>>712
既存のインスタンス変数をどうされてもかまわないなら、大丈夫。

>>713
内部でevalとかはしてない。

715:デフォルトの名無しさん
09/01/23 12:19:33
>>710
>ActionView::TemplateError (undefined method `number_select' for #<HashWithIndifferentAccess:0xb722adf0>

エラーの意味は分かってる? HashWithIndifferentAccess のオブジェクトに対して number_select メソッドを呼び出して、それで undefined method になっている。

呼び出すメソッド名を間違っていないなら、呼び出す対象となるオブジェクトを確認してみてはどうだろうか。
もしそれであっているなら、Railsのバグかもね。


716:デフォルトの名無しさん
09/01/23 19:59:53
継承したクラスのオブジェクトの配列で困ってるんだけど
class SuperClass
 def <=> other
  true
 end
end

class Class1 < SuperClass
end

class Class2 < SuberClass
end

arry = []
array << Class1.new
array << Class2.new

array.sort

で、『Class1 と Class2 は比較できねぇよゴラ!』 といわれてしまうんだけど。
どうにかなんないかな?
C++の
SuperClassVecter* array = new SuperClassVecter()
Class1* c1 = new Class1()
array.push((SuperClass*)c1);
Class2* c2 = new Class2()
array.push((SuperClass*)c2);
みたいなことがやりたいんだけど、よくわからんちん。

717:デフォルトの名無しさん
09/01/23 20:10:23
エラーメッセージを勝手に訳す人間に発展の未来はないのでよく覚えておくとええぞ

あとマニュアルくらい見れ
URLリンク(www.ruby-lang.org)
> self <=> other
> self と other を ASCII コード順で比較して、self が大きい時に正、等しい時に 0、小さい時に負の整数を返します。

ということで、<=> メソッドは整数を返すように作らなければ sort で比較できない

718:デフォルトの名無しさん
09/01/23 20:13:46
>>716
Comparableメソッドをインクルードしましょ

719:デフォルトの名無しさん
09/01/23 20:42:21
というか、基本的にはクラスが違うと比較はできないよ
でもそれだと困るので
(10 < 11.1 だとエラーで、いちいち明示的に 10.to_f < 11.1 しなければならないとか超困る)
Rubyではcoerceのようなメソッドを作って汎用的なデータ構造に変換を依頼するというのが普通らしい
でもめんどいので、スーパークラスで自分のデータの大きさを規定するというのはどうだろう

class SuperClass
def initialize(data); @data=data; end
def <=>(other); self.length - other.length; end
def length; @data.length; end
end
class Class1 < SuperClass; end
class Class2 < SuperClass; end

arr = [Class2.new('second'), Class1.new('first')]
p arr.sort

結果
[#<Class1:0xb7c415f0 @data="first">, #<Class2:0xb7c41618 @data="second">]


720:デフォルトの名無しさん
09/01/23 20:53:57
>>719
標準の配列に入ってる状態で標準の sort をすると Class1 のオブジェクトが Class2 より前に出るとか
そういうほのかに邪悪の香りがする処理をしたいのでは

class SuperClass
def <=>(other); self.class::PN - other.class::PN; end
end
class Class1 < SuperClass; PN=1; end
class Class2 < SuperClass; PN=2; end
class Class3 < SuperClass; PN=3; end

arr = [Class3.new, Class2.new, Class1.new]
p arr.sort


[#<Class1:0xb7d0ce94>, #<Class2:0xb7d0cea8>, #<Class3:0xb7d0cebc>]


721:デフォルトの名無しさん
09/01/23 21:04:30
rubyのスレって親切に教えてくれるよね。

PHPは気持ち悪い連中ばっかりで寒気がする

722:デフォルトの名無しさん
09/01/23 21:15:30
どの言語も人気が出て使う人が増えてコモディティに接近するとああなるよ
このへんの待遇は単にユーザーの数の少なさの裏返しというだけに過ぎない

723:デフォルトの名無しさん
09/01/23 21:36:47
ドキュメントが完備されていないから、まだまだまともな質問が来るので、
答える方もまだブチ切れてなわけだ。

724:デフォルトの名無しさん
09/01/23 21:49:05
でもオンラインリファレンスに乗ってることでもみんな寛容に答えてるよね。
新規参入促進にはいいのかな?

俺はまだ初心者だけどrubyは書いてて楽しいね

725:716
09/01/23 22:55:11
みんなありがとう。
継承クラスのどっからでも比較できるようになったよ!

あと、ドキュメントって読みにくいよね。
せめて単語で引けるインデックスがあれば・・・

月曜にRuby始めたばっかりなんだけど

ドキュメント調べてる時間が9割以上ってどういうことなのさ!

しかも知りたいことにはほとんどたどり着けない。

726:デフォルトの名無しさん
09/01/23 22:58:55
ソース嫁ってことなのか。

727:デフォルトの名無しさん
09/01/23 23:04:07
プログラミングなんて8割くらいは調べものだと思うよ
始めたばかりならなおさら

でまあそれとは別にRubyのドキュメントは機能的に非常に貧弱だ
どうにかしないといけないという話は出るが、本当にマシになったことはまだ一度もない

728:デフォルトの名無しさん
09/01/23 23:21:48
>>727
> プログラミングなんて8割くらいは調べものだと思うよ
> 始めたばかりならなおさら

おまいは時代に追い付け

729:デフォルトの名無しさん
09/01/23 23:25:03
>>728
打鍵時間以外はほとんど全部調べ物だと思うんだが
仕様書読んだりマニュアル読んだりRFC読んだりネットの事例読んだり

730:デフォルトの名無しさん
09/01/23 23:27:03
>>725
>ドキュメント調べてる時間が9割以上ってどういうことなのさ!
初心者はまず入門書から始めることをオススメする
Webのドキュメントだけで済まそうとするのは、他の言語に精通している人だけにしとけ

731:デフォルトの名無しさん
09/01/23 23:30:16
半分はテストじゃないのか?

732:デフォルトの名無しさん
09/01/23 23:32:38
そんな時間かかるか?
っていうか、テストやらデバッグってプログラミング作成時間とは別にとって考えるもんなんじゃね?

733:デフォルトの名無しさん
09/01/23 23:36:59
Rubyのドキュメントががっかり品質なのはどう言い訳しても事実

734:デフォルトの名無しさん
09/01/23 23:44:52
どこに言い訳が?

735:デフォルトの名無しさん
09/01/23 23:47:03
思春期後期の症例の一つです<言い訳してる人を見出したい

736:デフォルトの名無しさん
09/01/23 23:52:26
じゃあ>>733は見えない人を相手してるだけか、失礼

737:デフォルトの名無しさん
09/01/23 23:55:50
>>732
「テスト駆動開発(TDD)」「振る舞い駆動開発(BDD)」「継続的インテグレーション」あたりでぐぐれ。

738:デフォルトの名無しさん
09/01/24 00:57:16
>>725
ドキュメントはchm版を見るのがおすすめ
ちゃんとキーワードでインデックスされてるのでメソッドを調べたりするのが早い

739:デフォルトの名無しさん
09/01/24 01:57:46
>>737
それだってカウントしないと思うぞ

740:デフォルトの名無しさん
09/01/24 06:56:49
慣れないうちはchm版リファレンスマジおすすめ

つーかRubyリファレンスががっかり品質だって言われるけど
他の言語のドキュメントってそんなに充実してたっけか?

>>739
テストコード→アプリコード→テストコード→アプリコード→… の手順で進めるなら
両方ともプログラミング時間に含めるべきだろう

741:デフォルトの名無しさん
09/01/24 07:30:00
Ruby ドキュメントといえば
Dave Thomas と Andy Hunt の Programming Ruby の Web 版が
見れたときは感動した。
日本語訳が出たときは、お布施のつもりで買った。

742:デフォルトの名無しさん
09/01/24 09:00:21
>>721
最近、php使い始めたんでphpの質問スレもいってるんだけど、
何故かみんな少しカリカリしているイメージw

ただ、やぱphpはリファレンスマニュアルがしっかりしている(特に公式がすばらしい)
のがいいわ。
マニュアルにコメントがつけられるらしくて(細かいところは知らん)
FAQが補足されてることも多々ある

>>740
chm使ってるけど、がっかり品質ということはないな・・・
サンプルコード的なのをものとか、メソッドに関するFAQとかをもっと載せて欲しいと思うことはあるが
Rubyに慣れるまでは使いにくかったけど、慣れてからはそこそこ使えると思った。
まあ、リファレンスだしね

743:デフォルトの名無しさん
09/01/24 12:09:14
見て、使い方を理解するのに時間がかかる感じだな。
書いてるほうは、こんなの一目見りゃ分かるだろ的ノリなんだろうけど、見てるほうはそうでもないギャップがある。
お腹いっぱいに成るほどにサンプル手繰れてもいいと思うけどね。
でもオブジェクト指向自体が、ある日突然閃くまでは意味不明の苦痛の日々だしなあ。

そういう意味で教典読んでも、修行の後、悟り開けないと付いて行けない感じ。
phpのほうは、思想的な物は無くてどうとでも使える節操無い所があるからな。結果的に出来りゃなんでもいいじゃんみたいな。
便利そうな機能も無節操に突っ込みまくってるし、実際便利ではある。rubyだと便利そうなライブラリを探して読み込む所から始まるし。

744:デフォルトの名無しさん
09/01/24 12:30:50
>でもオブジェクト指向自体が、ある日突然閃くまでは意味不明の苦痛の日々だしなあ。

はぁ?

745:デフォルトの名無しさん
09/01/24 17:22:24
>>744
閃く遥か前の段階で「自分は既に悟っている」と勘違いしてる馬鹿には
縁のない次元の話だから、無理に関わろうとしなくていいです。

746:デフォルトの名無しさん
09/01/24 18:02:39
うわぁ・・・

747:デフォルトの名無しさん
09/01/24 19:12:20
もうやめようぜ!おまいらの好きなアイドルはだれだ?
俺は長島海輝だぜ!

748:デフォルトの名無しさん
09/01/24 19:31:42
ここ↓にあるように、数字を日本語表記にするようなモジュールはありますでしょうか?

そろそろ FizzBuzz に飽きた
URLリンク(blog.livedoor.jp)

749:デフォルトの名無しさん
09/01/24 19:42:31
>>748
特にないと思う
たぶん、世界中で何十回も生産されてるコードだ
どっかであってもいいのにね

750:デフォルトの名無しさん
09/01/24 20:29:35
>>746
俺もネットやりたての中二病真っ盛りの頃、
グウの音も出ないけどそれでも何か「相手に痛いところがある」風に装いたいとき、
よくそういうの書き込んだなー。

751:デフォルトの名無しさん
09/01/24 20:31:30
calコマンドのようにカレンダーを表示したいのですが、定石みたいなのってありますか?

752:デフォルトの名無しさん
09/01/24 20:49:58
宿題スレに書き込んだのが残ってた
calコマンドのように表示するように作ったのは確かなんだが、
ぶっちゃけ表示部で何やってんだかわからん

#!/usr/bin/ruby
require 'date'
### Usage: ./cal.rb [YYYY MM]
### ./cal.rb 2007 3 #=> Mar 2007 calender
### ./cal.rb 3 2007 #=> Mar 2007 calender
### ./cal.rb #=> this month's calender
if ARGV.empty? then
t = Date.today
else
argv = ARGV[0,2].map{|s| s.to_i}
t = Date.new(argv.max{|a,b| a <=> b}, argv.min{|a,b| a <=> b}, 1)
end
(d_one, d_last) = Date.new(t.year, t.month, 1), Date.new(t.year, t.month, -1)
cal = "#{Date::MONTHNAMES[d_one.month]} #{d_one.year}".center(3*7) << "\n"
cal << Date::ABBR_DAYNAMES.inject(''){|days,name| days << name.chop.rjust(2) << ' '} << "\n"
(d_one-d_one.wday).upto(d_last+6-d_last.wday) do |d|
(cal << ' ';next) unless d.month == d_one.month
cal << d.day.to_s.rjust(2) << ' ' << "\n"*(d.wday / 6)
end
puts cal


753:デフォルトの名無しさん
09/01/24 20:55:45
>>749
自分で作ってみて、宿題スレにでも行きます

754:デフォルトの名無しさん
09/01/24 20:55:53
>>752
ありがとうございます。
読んでみますね。

755:デフォルトの名無しさん
09/01/24 21:02:39
>>754
要は、 String#rjust ってのがあるんだよ
これは指定数で右詰めする
"A".rjust(2) は "+A" を返すし(+は本来は空白)
"AB".rjust(2) は "AB" を返す
この2バイト確定の文字を空白で挟んで7つ表示して1週間を作ってる

756:デフォルトの名無しさん
09/01/24 21:04:28
joinでいいじゃんね、これ

757:デフォルトの名無しさん
09/01/24 21:38:17
>>748-749
文字を音声で読んでくれるソフトは結構出回ってる
Ruby 的には不評な Windows 系なら
Microsoft Windows Speech っつーソフトが無料だから試してみれ

日本語・ドイツ語あたりまでならなんとかなるんだが
フランス語だと死にそうだな


758:デフォルトの名無しさん
09/01/24 21:40:18
URLリンク(ja.wikipedia.org)
これをRubyから叩けば良いかも

759:デフォルトの名無しさん
09/01/24 21:47:44
…?

760:デフォルトの名無しさん
09/01/24 21:52:55
松本教信者のみなさん今日は。

761:デフォルトの名無しさん
09/01/24 22:44:08
>>757-758
Rubyの練習として、NabeAtzz問題を解いてみたかっただけなんすよ

762:デフォルトの名無しさん
09/01/25 09:14:59
Rubyのrequireという命令が、使う頻度の高い割に
すごくタイプしづらい文字なので困っています。
COBOLに慣れているので、copyというキーワードで
代替できるようにRubyを改造する方法があれば教えてください。

763:デフォルトの名無しさん
09/01/25 09:19:01
copyという文字列をrequireに置換するスクリプトをかけばいいやん

764:デフォルトの名無しさん
09/01/25 09:21:28
alias copy require

ただし、他の人がいじるスクリプトではお奨めしない
タイプしづらくてもrequireに慣れるべき

765:デフォルトの名無しさん
09/01/25 09:23:42
>>762
COBOLやれ

766:デフォルトの名無しさん
09/01/25 09:30:57
ちょっとしたbotを書いてみましたが、何か変なところがあったら教えてください。
なんか定数まわりで警告が出てますがあまり気にしないでください
ダウンロードキーは2000、2時間で消えます
URLリンク(www1.axfc.net)

767:デフォルトの名無しさん
09/01/25 10:01:25
ワロタ

768:デフォルトの名無しさん
09/01/25 10:03:57
>>762
補完系使えよ

769:デフォルトの名無しさん
09/01/25 10:19:02
require は COPY ではないので、それやりたいなら COBOL やれとしか

770:デフォルトの名無しさん
09/01/25 10:44:01
>>762
copyって入力したらrequireと変換されるように辞書に登録してしまえば

771:デフォルトの名無しさん
09/01/25 10:50:49
def copy arg
 require arg
end

772:デフォルトの名無しさん
09/01/25 11:57:24
if then →if {
end → }

に置換するC言語のマクロ思い出したww
さすが、COBOLerは発想が一味違う

773:デフォルトの名無しさん
09/01/25 11:59:45
COBOLer に限った話ではないぜ
URLリンク(www.kojima-cci.or.jp)

774:デフォルトの名無しさん
09/01/25 12:04:59
天下の元祖B shellだってそういう風に書かれていたんだけどな

775:デフォルトの名無しさん
09/01/25 12:05:55
B shell は if ~ then; ...; fi だ

776:デフォルトの名無しさん
09/01/25 12:15:51
ふぃ~

777:762
09/01/25 12:22:01
アドバイスありがとうございます。
いろいろ検討したのですが、
あらかじめ先頭行にreqireと打ち込んだ
ひな形テキストファイルを用意しておき、
ソースを書き始める時はそれを読み込む
ことにしました。

778:デフォルトの名無しさん
09/01/25 12:25:22
ほんとにrequireって打つのが苦手なんだな・・・。

779:デフォルトの名無しさん
09/01/25 12:29:39
q以外は、人指し指と中指を単純に動かすだけなんだけど、
まぁ、指の仕様も人それぞれってことなんだろうな。

780:デフォルトの名無しさん
09/01/25 12:34:00
require

781:デフォルトの名無しさん
09/01/25 12:36:57
キーボードを見ずにrequireって打てたら神 その3
スレリンク(toilet板)

782:デフォルトの名無しさん
09/01/25 12:38:17
>>775
こういう意味だよ。
URLリンク(minnie.tuhs.org)

783:デフォルトの名無しさん
09/01/25 12:56:40
requireとloadを逆にしておけばよかったのになあ

784:デフォルトの名無しさん
09/01/25 13:14:08
>>781
requrie

785:デフォルトの名無しさん
09/01/25 13:17:21
余裕だろ。

require

786:デフォルトの名無しさん
09/01/25 13:18:01
require なんてキーの配置と流れは簡単じゃん

req→右から左。キーは隣+一つ飛ばし
ui→左から右。キーは隣
re→右から左。キーは隣

3回にわけてリズムをつかめばすぐに慣れると思う
って全然Rubyの話じゃないな

787:デフォルトの名無しさん
09/01/25 13:19:31
QWERTY

788:デフォルトの名無しさん
09/01/25 13:20:21
英単語的に、qのあとはuが来ることが多いので、その部分はほとんど間違えなく指が勝手に動くな

789:デフォルトの名無しさん
09/01/25 13:23:48
test
require

790:デフォルトの名無しさん
09/01/25 13:36:28
ていうか、スクリプトの一番最初にまとめて、
またはライブラリ追加の必要性があるときにファイル先頭に移動して改めて書くようなもんだから、
その時だけゆっくり(手元見ながら)打ち込めばいいじゃんね
キーボード全体から強い光が発せられていて注視できないような構造になってるとかそういうのですか?

791:デフォルトの名無しさん
09/01/25 13:37:17
私の好きなフィギュアスケートの澤田亜紀ちゃんの名前は打ちにくい

792:デフォルトの名無しさん
09/01/25 13:43:48
      | │                   〈   !
      | |/ノ二__‐─ァ   ヽニニ二二二ヾ } ,'⌒ヽ
     /⌒!|  =彳o。ト ̄ヽ     '´ !o_シ`ヾ | i/ ヽ !   Require ...
     ! ハ!|  ー─ '  i  !    `'   '' "   ||ヽ l |

793:772
09/01/25 14:19:58
>>773
それそれw そのことだよまさに

>>777
俺ならエディタのスニッペにrequire登録しておいて、
r(スニペット補完キー)
でrequrieを補完するな

794:772
09/01/25 14:20:39
スニッペってなんだww
「スニペット」な「コードテンプレート」とかエディタや開発環境で呼び名は違うと主ウケ緒d

795:デフォルトの名無しさん
09/01/25 14:25:24
落ち着け。


796:デフォルトの名無しさん
09/01/25 16:12:24
require よりも、elsif の方が、打ちにくい。
エディタの設定で、*.rb ファイルで、elseif と書いたら、
elsif に置換しているけど。

797:デフォルトの名無しさん
09/01/25 16:13:27
ZAQ のうちにくいこと

798:デフォルトの名無しさん
09/01/25 16:28:50
ZAQは小指の爪を使ってキーボードの下から上へすべらすように

z
za
zaa
z
za

・・・できねえ

799:デフォルトの名無しさん
09/01/25 16:32:16
そんなん右手薬指で右Shift押さえながら左薬指でzaw押せばいいじゃん
ホームボジションなにそれ

800:デフォルトの名無しさん
09/01/25 16:42:36
>>799
押せてねぇw
ホームポジションなにそれは同意で、小指薬指中指で順にZAWと押せば

( ゚Д゚)・・・。

ところで>>771みたいなことするよりは>>764のほうがいいよね?
>>771みたいにラップしたほうがいいときってある?

801:デフォルトの名無しさん
09/01/25 17:49:11
requireは上段に集中してむしろ打ちやすいような。
どうしても打てないなら、つ 最終兵器dvorak

802:デフォルトの名無しさん
09/01/25 18:47:55
req(単語補完(ry
だろ、JK

803:デフォルトの名無しさん
09/01/25 19:13:48
URLリンク(www.sanspo.com)

804:デフォルトの名無しさん
09/01/25 19:17:12
>>803
誰もそんなんrequireしとらん。

805:デフォルトの名無しさん
09/01/25 19:50:19
word = ["apple", "orange", "lemon"]
を検索のキーとして
sentence = ["apple is red","orange is not blue","lemon is yellow","apple is not orange","lemon is not red"]
から何個、検索結果が出てきたか知りたいのですが、どうすればいいでしょうか?



806:デフォルトの名無しさん
09/01/25 20:03:10
>>805
配列要素をeachで枚挙することを厭ってはいけない
特にRubyではね

words = ["apple", "orange", "lemon"]
sentence = ["apple is red","orange is not blue","lemon is yellow","apple is not orange","lemon is not red"]

counts = {"apple"=>0, "orange"=>0, "lemon"=>0}
sentence.each do |s|
words.each do |word|
if /#{word}/ =~ s then
counts[word] = counts[word]+1
end
end
end

p counts


結果:
{"orange"=>2, "apple"=>2, "lemon"=>2}


807:デフォルトの名無しさん
09/01/25 20:14:18
counts = {}
words.each do |word| counts[word] = 0 end

808:デフォルトの名無しさん
09/01/25 20:15:04
>>807
スレタイ6回くらい読め

809:デフォルトの名無しさん
09/01/25 20:43:13
unko

810:デフォルトの名無しさん
09/01/25 21:52:42
久しぶりにスレみたら>>747で吹いた。
男じゃん。と思って検索したら、こんなに可愛い子が女の子なわけないじゃないか

811:デフォルトの名無しさん
09/01/25 22:18:03
ググってしまったじゃないかww

812:デフォルトの名無しさん
09/01/25 23:26:45
調べたらショタアイドル。ぐぐr必要なし

813:デフォルトの名無しさん
09/01/25 23:38:45
>>812
ぐぐってしまったじゃないか

814:デフォルトの名無しさん
09/01/25 23:45:15
密林で注文したじゃないかw

815:デフォルトの名無しさん
09/01/26 03:25:48
puts "文字"
puts "文字"
puts "\n"
srand
require 'readline'
def try_answer(prompt)
while buf = Readline.readline(prompt, true)
yield buf
end
end
difficulty = ($*[0] || 1).to_i
difficulty >= 1 or raise "#{difficulty}: Invalid difficulty direction"
answer = rand(30 * difficulty + 1)
judge_table = ["文字1","文字2","文字3"]
try_answer("文字 > ") do |line|
try = line.to_i
result = try <=> answer
puts "#{try}#{judge_table[result]}"
break if result.zero?
end

プログラミングに興味が出て、いろいろさがしてたら
学校の過去の資料にこんなプログラムがありました。
これはどんなプログラムなんでしょうか?
一文一文の意味を教えていただけないでしょうか?よろしく
おねがいします。

816:デフォルトの名無しさん
09/01/26 03:31:54
マルチは感心しないな

817:デフォルトの名無しさん
09/01/26 03:32:21
ruby経由でwgetしつつ出力を表示しつつ、log.txtにもはきつつってことをやりたいのですが、上手くいきません。
画面には表示されますが、log.txtには何も書き込まれないという・・・
これは何がおかしいものなんでしょう

Dir::chdir("/work") do
 system("wget URLリンク(example.com) | tee log.txt")
 puts "read log.txt"
 puts File.read("log.txt")
end


818:デフォルトの名無しさん
09/01/26 03:45:55
>>817
wget の出力は標準エラー出力に表示する
tee は標準出力を取り込むことしかできないから、そもそも log.txt にはなにも書き込まれない
wget URLリンク(localhost) 2>&1 | tee log.txt
Ruby あんま関係ないな

819:デフォルトの名無しさん
09/01/26 03:57:25
>>818
いけた!そっかwgetエラー出力だったのか・・・
基本的なところをうたがうべきなのにすっかり忘れてた

820:デフォルトの名無しさん
09/01/26 04:00:33
これを意識してる人はまずいないよ
これはむしろ wget の欠陥だと思う

821:デフォルトの名無しさん
09/01/26 05:47:44
Rubyでwebサーバーにアクセスしたとき
そのサイトにどんなファイルがあるか調べる方法はありますか?

822:デフォルトの名無しさん
09/01/26 06:03:15
index許可してあればリスト取り出せるけど
そうじゃなければ㍉

823:デフォルトの名無しさん
09/01/26 09:16:34
robotでも作るつもりなのかな

824:デフォルトの名無しさん
09/01/26 11:26:53
>>820
wget の場合、標準出力は -O - で取ってきたものを出力するためにあるので
(他のツールにパイプで直接流し込んだりとか)、そういう時にも一貫性を保てる
ように、メッセージは標準エラー出力というのは理にかなっている。
メッセージをファイルに取りたいなら -o filename オプションを使うという手もあるが。

Ruby 関係ないな。

825:デフォルトの名無しさん
09/01/26 11:30:37
>>822
Ruby関係ないよね
っていうか、HTMLやHTTPの勉強はしてもらってるのかね
Rubyは魔法じゃねえぞ

826:デフォルトの名無しさん
09/01/26 11:39:31
Ruby関係ないということがわかるだけでも勉強としては前進だから、どんどん聞くだけ聞いてもらってもいいけどな
回答としても「ちげーよRuby関係ねーよ」と答えるだけでいいから楽だし

Ruby内でwget使ってログ管理しようとして嵌るというのは順調なテンプレの範囲だと思う

827:817
09/01/26 12:24:18
そもそも、コマンドラインで
 wget URLリンク(example.com) | tee log.txt
ってやってみてRubyの問題なのか、そうじゃないのか切り分けるべきでしたね

なにあれ、解決したので助かりました。

828:デフォルトの名無しさん
09/01/26 13:40:37
Ruby 1.8でDir.globに複数のパターン(というか拡張子)を指定する方法は
ありませんでしょうか?

(Dir.glob("**/*.css") + Dir.glob("**/*.html")).each do |file|
 :
end
のようにするしかない?


829:デフォルトの名無しさん
09/01/26 13:44:36
>>828
マニュアルに初心者お断りな感じできちんとわかりにくく書いてあんじゃんよ
irb> Dir.glob("*")
["002.txt", "001.txt", "aaa.jpg", "bbb.jpg"]
irb> Dir.glob("*.txt")
["002.txt", "001.txt"]
irb> Dir.glob("*.txt\0*.jpg")
["002.txt", "001.txt", "aaa.jpg", "bbb.jpg"]



830:デフォルトの名無しさん
09/01/26 13:49:16
あれわかりにくいよね
素直に第一引数は配列受け取るようにすればよかったのに

831:デフォルトの名無しさん
09/01/26 15:37:35
ネットワーク上にあるExcelファイルを、
open-uriを使わずにnet/httpを使ってFileオブジェクトに格納する方法はあるでしょうか

832:デフォルトの名無しさん
09/01/26 15:52:09
>>831
bodyをそのままwriteするだけじゃダメなんだっけ?

833:828
09/01/26 15:52:40
>>829
本当だ!

> パターンを "\0" で区切って 1 度に複数のパターンを指定することもできます。
>
> p Dir.glob("f*\0b*")
> => ["foo", "bar"]

マニュアルみたつもりで見落としていました。
ありがとうございました。

834:デフォルトの名無しさん
09/01/26 15:57:50
>>832
bodyメソッドを実行すると「string contains null byte」とエラーが出てしまいます・・

835:デフォルトの名無しさん
09/01/26 16:05:54
めんどくへえ
イントラ限定のサーバかなんかで変な形式で送られてきてると予想
ヘッダはなんて言ってる?

836:デフォルトの名無しさん
09/01/26 16:10:15
レスポンスのヘッダでしょうか?

HTTP/1.1 200 OK
Date: Mon, 26 Jan 2009 07:08:59 GMT
Server: Apache/1.3.27 (Unix) (Red-Hat/Linux) mod_ssl/2.8.12 OpenSSL/0.9.6b DAV/1.0.3 PHP/4.1.2 mod_perl/1.26
Last-Modified: Mon, 26 Jan 2009 00:11:23 GMT
ETag: "3f1629-48000-497cffab"
Accept-Ranges: bytes
Content-Length: 294912
Content-Type: application/vnd.ms-excel

こんな感じです

837:デフォルトの名無しさん
09/01/26 16:10:22
>>834
エラー箇所どこ?
win32なのにバイナリモードでFile.openしてないとかいうオチはない?

838:デフォルトの名無しさん
09/01/26 16:14:04
>>837
さすがにそれはないと思いたい

839:デフォルトの名無しさん
09/01/26 16:23:08
>>837
orz おさわがせしました

840:デフォルトの名無しさん
09/01/26 16:29:17
>>838-839
初心者スレだしこんなミスもいいんじゃね?w
解決したならなによりだし(あのエラーを見たことは無いから自信はなかった)
騒がせたと懲りてるようなら、もう同じミスをしてもすぐ自分で気づくだろうから。

841:デフォルトの名無しさん
09/01/26 17:16:29
>>833
glob 構文だけを純粋に使って、*.{css,html} これでもいんじゃない。

842:デフォルトの名無しさん
09/01/26 17:29:56
>>833
・{ } コンマで区切られた文字列の組合せに展開します。

Dir.glob("**/*.{css,html}") do |file|
puts file
end


1.9だと配列で複数のパターンを渡せるようになった


843:デフォルトの名無しさん
09/01/26 17:39:27
あらら、かぶっちゃった

Dir[pattern] 形式だと1.8でも複数のパターンを指定できるよ

Dir["**/*.html","**/*.css"].each do |file|
puts file
end


844:828
09/01/26 17:40:13
>>841-842
おお、便利だ!

> { } コンマで区切られた文字列の組合せに展開します。
> 例えば、 foo{a,b,c}はfooa, foob, foocに展開されそれぞれに対してマッチ判定を行います。

> 括弧は入れ子にすることができます。例えば、 {foo,bar{foo,bar}} は
> foo, barfoo, barbar のそれぞれにマッチします。

これですね。ありがとうございました。


845:デフォルトの名無しさん
09/01/26 20:20:17
>>843
完全に単なるエイリアスだと思い込んでた…
glob構文めんどいから

["**/*.html","**/*.css"].inject([]){|r, i| r.concat Dir.glob(i) }

こんなことしてたぜ…横から感謝

846:デフォルトの名無しさん
09/01/26 22:36:34
>>843
すげー。知らんかったわw globとは別なのね

847:デフォルトの名無しさん
09/01/26 23:20:28
>>843はオレも知らんかったので助かるんだけど、でもこれっておかしいよね。
ほんとはglob()と同じにすべきだよな。わざわざこんなふうにしている意味が分からん。


848:デフォルトの名無しさん
09/01/26 23:24:54
> ほんとはglob()と同じにすべきだよな
いまさらglobを変えるわけにいかないからせめて関数的メソッドDir[]は配列を受け取るようにしたという流れだと思った
よく覚えてない

849:デフォルトの名無しさん
09/01/27 02:16:31
Dir[]とDir.globの違いはなんだろ(引数以外)
Dir[]全部列挙で、Dir.globはブロック渡すと逐一処理可能ってことか?

850:デフォルトの名無しさん
09/01/27 03:32:53
glob2とか作ってコンパチ目指したほうが。
なんか先に作った香具師の実装がアレでみんな迷惑してるの多いよね。cgiとかwww



Content-Transfer-Encoding: base64とか付いてるとか?

851:デフォルトの名無しさん
09/01/27 09:23:26
>なんか先に作った香具師の実装がアレでみんな迷惑してるの多いよね。cgiとかw
あほか
それは事実だが結果的にそうなった
つまりそういう開発ポリシーだからそうなる必然
文句云うな

852:デフォルトの名無しさん
09/01/27 09:25:48
日本語でおk

853:デフォルトの名無しさん
09/01/27 09:37:46
まぁ文句あるならもっと良いもの自分で作れってことだろ
そうやってMatzんは煽って北

854:デフォルトの名無しさん
09/01/27 11:11:36
「開発ポリシー」で互換性を残したままにするから、
結果的に古いのが残っているってことでしょ

855:デフォルトの名無しさん
09/01/27 11:36:22
Rubyのコアライブラリ近辺って「1つ目」を作る人は大量にいるけど「2つ目」を作る人がいないんだ
全部自前でクラスやメソッド改造してしまうから

Ruby1.2くらいで「このライブラリの存在は大きいので、では本格的なものを添付しましょう」という流れにならないのがRuby

856:デフォルトの名無しさん
09/01/27 13:16:40
cgi2chとかいうライブラリができたら楽しいなw

857:デフォルトの名無しさん
09/01/27 14:00:45
>>844
シェルのワイルドカード展開と一緒だよ。コマンドラインで多用しない?
diff -c nagainamaenofairumeiwonandomoutitakunai.rb{.orig,}とか。

858:デフォルトの名無しさん
09/01/27 14:16:40
確か次世代cgi.rbは、候補はあるけど決定的なものがないという理由で今のままなんだよね


859:デフォルトの名無しさん
09/01/27 14:24:55
cgi.rbをとりあえずな感じで添付したらそのまま数年維持されて癌になったという経験が尾を引いてるな

860:デフォルトの名無しさん
09/01/27 15:40:24
互換性なんかどこに残ってんだよ

861:デフォルトの名無しさん
09/01/27 16:26:19
クラス CGI2ch::BBS
クラスメソッド
CGI2ch::BBS.new([index])
最新の板一覧取得用URL(複数候補可)を指定

インスタンスメソッド
menu()
板一覧を取得
戻値 (cat, host(FQDN), board, name) のリスト
例:
[('', 'www.2ch.net', '', '2chの入り口'),
('', 'info.2ch.net', 'guide', '2ch総合案内'), ...,
('ニュース', 'mamono.2ch.net', 'newsplus', 'ニュース速報+'), ...,
('PC等', 'pc11.2ch.net', 'unix', 'UNIX'), ...
('PC等', 'pc11.2ch.net', 'tech', 'プログラム技術'), ...]

board(name)
CGI2ch::Boardのインスタンスを生成



862:デフォルトの名無しさん
09/01/27 16:26:43
クラス CGI2ch::Board
クラスメソッド
CGI2ch::Board.new(host, board)

インスタンスメソッド
subject()
スレ一覧を取得
戻値 (key, title, res) のリスト(スレッドキー, タイトル, レス数)
例:
[(1223709050, 'Rubyについて Part 33', 624),
(1233033091, '愛国Ruby', 14), ...]

thread(key)
CGI2ch::Threadのインスタンスを生成



863:デフォルトの名無しさん
09/01/27 16:27:07
クラス CGI2ch::Thread
クラスメソッド
CGI2ch::Thread.new(key)

CGI2ch::Thread.create(name, email, body)
新スレを立ててインスタンスを生成

インスタンスメソッド
read(key)

write(name, email, body)



864:デフォルトの名無しさん
09/01/27 16:27:32
>>856
こんな感じで計画中だけど
どう?

865:デフォルトの名無しさん
09/01/27 16:32:48
クラスメソッド
CGI2ch::Thread.new(board, key)

CGI2ch::Thread.create(board, name, email, body)
新スレを立ててインスタンスを生成

boardが必要かな

866:デフォルトの名無しさん
09/01/27 16:42:18
>[(1223709050, 'Rubyについて Part 33', 624),
> (1233033091, '愛国Ruby', 14), ...]

なにこれ

867:710
09/01/27 17:22:38
>>711
Railsのスレあったんですね。
気づきませんでした。

>>715
コメントありがとう。
結局原因がわからなかったので、rjsの中でhtml(<option></option>)を組み立てて、selectボックスに
対してreplace_htmlしたら回避できました。



868:デフォルトの名無しさん
09/01/27 17:29:56
>>864
計画倒れにならんようにがんがれ

869:デフォルトの名無しさん
09/01/27 17:42:31
2chの仕様なんて面倒だぞ。
専用ブラウザ開発者はマゾヒストとしか思えない。

870:デフォルトの名無しさん
09/01/27 18:00:13
>>864
スレ違い
2ch専用ブラウザの作り方
スレリンク(tech板)

871:デフォルトの名無しさん
09/01/27 18:14:12
>>862
愛国はかんべんw

872:デフォルトの名無しさん
09/01/27 18:17:05
>>871
はいはい面白いね至高のギャグだね

873:デフォルトの名無しさん
09/01/27 19:18:57
リファレンスマニュアルの使いにくさをどうにかしてください。
例えば、タイムアウトさせたい処理について調べたい場合、目次を見てもどこを見ていいのかさっぱりわかりません。

874:デフォルトの名無しさん
09/01/27 19:26:10
あ、オフィシャルサイトは検索休止中なんだっけ
timeoutで全文検索すると出てくるぞ

875:デフォルトの名無しさん
09/01/27 19:35:31
「Ruby マニュアル」でぐぐると「ruby マニュアル 検索」が関連で出てくる現状はどうにかしたほうがよい
URLリンク(www.google.com)

876:デフォルトの名無しさん
09/01/27 21:08:35
URLリンク(doc.loveruby.net)

るりまはいつになったら公式化するのだろうか

877:デフォルトの名無しさん
09/01/27 21:22:00
>>876
MLいわく、静的HTMLを吐くツールが整備されてから

878:デフォルトの名無しさん
09/01/27 23:59:46
>>864
期待してます


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch