Ruby 初心者スレッド ..
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
俺もネットやりたての中二病真っ盛りの頃、
グウの音も出ないけどそれでも何か「相手に痛いところがある」風に装いたいとき、
よくそういうの書き込んだなー。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5503日前に更新/246 KB
担当:undef