[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 05/09 14:12 / Filesize : 98 KB / Number-of Response : 347
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Ruby 初心者スレッド Part 32



1 名前:デフォルトの名無しさん [2009/10/24(土) 06:18:12 ]
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

★注意★ Ruby 1.9.1 は初心者にはまだ時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
   (理由:現時点では多くの有名ライブラリやアプリが 1.9.1 に完全対応していないためです。)
 1.8.7 でも 1.9 系に導入された新機能のいくつかが利用可能なため、1.8.7 を習得すれば将来スムーズに 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を読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

85 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 08:15:39 ]
Ruby1.9.1 の Windows 用でそれをするとはいろいろな意味でチャレンジャーというか煽り屋というか

86 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 08:20:42 ]
そんなんただのラブレターだろ
「いますぐRuby1.9.1の最新版パッチのWindowsバイナリを公開しろ、
さもなくば基幹的デファクトスタンダードライブラリのアップデート不能を以ってRubyの価値を減じる」
というラブコール

87 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 08:26:30 ]
最新版のWindowsバイナリー! 早く来てくれー!

俺もコンパイルに成功すれば、Windowsバイナリ公開したいのに
make test-allがなかなか通らない……
メンテナの方々はどんな作業をやってるんだろう

88 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 08:33:12 ]
ttp://rubyforge.org/frs/?group_id=167
ruby-1.9.1-p243-i386-mingw32 は一応ないわけでもない

89 名前:12 mailto:sage [2009/10/26(月) 10:14:19 ]
>>13-18
Thanks
rspecはちゃんとck(cygwin)でも色分けできるんですけどね・・・。

TERMはcygwinでした。export TERM=xtermとかにもしてみたけど駄目ですタ(この辺よく理解してないです)

>>17
ついでにPower Shellも入れてみたんですが、UTF-8対応して中田 orz
nkfでUTF-16にしても化けるし意味わからんちん

90 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 12:49:19 ]
とりあえず ruby が糞だということは良く伝わりました
本当にありがとうございました

91 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 12:57:45 ]
ラブレターなら直接相手に言わないと伝わらないんじゃないか

92 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:07:20 ]
>>91
リア充は帰れ

ラブレターってのは
「○○って△△さんのこと好きなんだって」
「えーうそー△△ちゃん可哀想〜」
みたいに周りからじっくり攻めていくのが正しい姿

93 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:10:00 ]
明らかに周りからも祝福されてねーじゃねーか



94 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:24:46 ]
なにごとも一度でうまくいくことはそうそうないよ
突然話を振るよりも事前のネゴとコネと日頃のコミュニケーションが大事

95 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 13:33:47 ]
>>92
> 「えーうそー△△ちゃん可哀想〜」
やめろ

96 名前:デフォルトの名無しさん mailto:sage [2009/10/26(月) 14:57:09 ]
クソワラタwww

97 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 04:59:52 ]
ruby1.8.7をcheckinstallでRPMパッケージを作成してインストールしたのですが、
ri -cコマンドを打っても標準ライブラリのクラスが表示されません。(Railsのクラスのみ表示される)
ri GCと打ってもNothing known about GCと出力されるのです。
これはrubyのriドキュメントがインストールされてないということでしょうか?
RPMパッケージでインストールせずにconfigureでオプション付けたりしないといけないのかな。

98 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 05:51:33 ]
>>97
checkinstallはよくわからないけど、自前でコンパイルするときは
./configure
make
sudo make install
sudo make install-doc # ドキュメントのインストール
が必要だった気がする

99 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 05:59:15 ]
質問です。Mershall使ってインスタンスの状態を保存しているのですが
一度インスタンスをnewしてdumpした後、その後オブジェクトを変更して
追加されたor削除されたクラス変数を検知して初期化したいです
どのようにしたらいいでしょうか 以下のようなソースです

class DataObj
attr_accessor :cnt
def initizalize
@cnt=0
end
end

class SaveData
attr_accessor :data
def initialize(file_name)
load(file_name)
end
 def load(file_name)
if File.exist?(file_name)
@data = File.open(file_name, "rb"){|f| Marshal.load(f) }
else
@data= DataObj.new()
end
end
def save
File.open("test.dat", "wb"){|f| Marshal.dump(@data, f) }
end
end


100 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 06:35:07 ]
よーわからんが、Marshalはオブジェクト全体の復元しかできない
復元してからオブジェクトが同一かどうかチェックするしかないな

101 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 06:52:34 ]
>>100
そうですね、Marshalだとかそういうライブラリは、この際あまり関係なかったですね
保存時のオブジェクトが復元時のインスタンスのオブジェクトと違う場合を許容したい場合は
どのような処理をすればいいでしょうか、ということみたいです
クラス変数が一つ一つ存在するかチェックして、なければ初期化、しかないでしょうか

イメージとしては クラス変数にし対して obj.each{|i| i=0 if !i.exist? }
という配列処理っぽいことがやりたいです (もちろん配列じゃないのでこの操作は不適ですが)

102 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 07:22:48 ]
クラス変数は @@ で始まる
@ で始まるのはインスタンス変数
初期化の意味がわからない

特定の条件の場合にオブジェクトを同一とみなして欲しいというときは
適宜 == メソッドを再定義して new == old を行う

class C
def initialize(params=nil); @params=params; end
def ==(other)
self.instance_variables.all? do |e|
self.instance_variable_get(e) == other.instance_variable_get(e)
end
end
end

c1 = C.new('a')
c2 = C.new('b')
p c1 == c2 #=> false

c3 = C.new('a')
p c1 == c3 #=> true ('a' == 'a' が true なので)

default = C.new
c4 = C.new
[c1, c2, c3, c4].each do |c|
if c == default then puts 'default!' else puts 'modified' end
end
# => modified, modified, modified, default!


103 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 07:29:36 ]
>>101
>クラス変数が一つ一つ存在するかチェックして、なければ初期化、しかないでしょうか

よーわからんけど、オブジェクトにバージョン番号をつける方法じゃだめかな。
バージョン番号が違っていれば初期化、とか。



104 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 07:29:49 ]
===

105 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 07:43:32 ]
質問です。
1. プラットフォームがwindowsかどうかを判定する方法は、どうするのがいちばんいいでしょうか。
RUBY_PLATFORM をチェックするのが王道だと思いますが、そのチェックの仕方で悩んでいます。

2. windowではバイナリファイルの読み書きにはFile.open(file, 'rb')のように'b'をつけないといけませんが、
これはcygwinでも同じでしょうか。
('b'が必要なプラットフォームが何かを知ろうとしています)


106 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 07:58:24 ]
fopenの仕様を読みましょう

107 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 08:04:18 ]
皆さんありがとうございます
・・・恥ずかしながらインスタンス変数とクラス変数を勘違いしていました
>>103氏のいうようなバージョン管理でやろうとすると

class DataObj
attr_accessor :ver,:a,:b,:c
def initialize(obj) #
@ver=0
@a,@b,@c=0,1,2
end
end

class DataObj_1 < DataObj
attr_accessor :d,:e,:f # 変数を追加
def initialize(obj)
super
@ver=1
@a,@b,@c=obj.a,obj.b,obj.c
@d,@e,@f=3,4,5
end
end

current_version=1
a=load("save.dat")
a=Data_Obj_1 if a.ver == current_version # あるいは a === DataObj_1 かな?

ということでやりたいことは、できそうです スマートな方法とは言い難いですが・・・

108 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 08:08:23 ]
すいません、最後は a.ver が 0 のとき
if a.ver < current_version の間違いですね

109 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 09:13:30 ]
>>105
1. は ttp://jp.rubyist.net/magazine/?0017-CodeReview#l17


110 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 09:32:33 ]
>>109
その記事にある「Win32API.soがrequireできるかどうか」は、
1.9だと全部ダメとか、1.8でもWINE環境でrequireできちゃう
とかあるので注意。

2の方は、いわゆるDOSISHなプラットフォームが該当する。
具体的にはcygwin以外のWindows、DOS(djgpp)、
x68000(human68k)、OS/2(emx)

111 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 09:37:09 ]
自動で判断するぶんには RUBY_VERSION =~ /mswin|mingw/ でいいんじゃね
クラス変数とかに結果入れておいてユーザーが変更可能にしておくとかすれば喜ばれそう

112 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 09:52:38 ]
バイナリ扱う時に環境判断せずに「とりあえずbつけとけ」ではだめなんだっけ?

113 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 09:55:16 ]
ミリ秒の差が数千万円になるようなエッジな環境では命取り



114 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 09:55:44 ]
>>112
それが望ましいっす。

115 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 10:32:51 ]
>>107
Marshalで保存したオブジェクトは自分のクラスを記録してるから
別のクラスのインスタンスとして復元する事は出来ない
Hashを中間データとして使う方法をすすめる
ついでにmarshal_dumpとmarshal_loadについて調べておくといい

116 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 10:39:58 ]
>>102で用が済むと思うのだが

117 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 11:09:13 ]
質問します。
ディレクトリ内にあるhtmlファイルの読み込みで、Data/a/1.htmlを読み込ませたあと
Data/b/1.html→Data/c/1.html・・・とずらずらとディレクトリ違いの同じ名前のhtmlファイルを
読み込ませるにはどうしたらいいですか?

118 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 11:12:47 ]
それに必要なのはなんだと思う?
というようなとこから考えて欲しいと思った

とりあえずいちばん簡単なの

dirs = ['a', 'b', 'c', 'd', 'e', 'f', ...]

dirs.each do |dir|
File.open("#{Data/#{dir}}/1.html"){|f| f.read}
end

119 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 11:13:36 ]
>>117
Dir.glob("Data/*/1.html") do |file| ... end


120 名前:117 mailto:sage [2009/10/27(火) 11:24:16 ]
即レスどうもです!
とても参考になります!
ちょっくら試してみます。
ありがとうございました!

121 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 22:59:08 ]
しつもーん!
どこからも参照されなくなったオブジェクトは GC によって破棄されるだよね?

loop { /正規表現オブジェクト/ }

この場合 /正規表現オブジェクト/ はループのたびに生成されるの?

122 名前:中田 mailto:sage [2009/10/27(火) 22:59:18 ]
>>89
Power ShellのUTF-8対応なんてしらん


123 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 23:04:27 ]
>>121
いいえ、固定の正規表現リテラルはパース時にチェックされ、スクリプト内で1回だけ生成され保持参照されます

ただし、変数を #{ } などで含んでいる場合は毎回変数を参照して新規作成される
最初の1回だけにしたい場合は //o と o オプションをつける
この理屈で言うと、/re/ がたくさんあるとメモリ食う



124 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 23:19:19 ]
>>123
なるほど、ありがとうございました。

125 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 23:23:51 ]
>>12
cygwin1.5系や素のcmd.exeは未だにCP932だから、UTF-8はそのままだと表示できません。
考えられる方法はだいたい以下の通り。
(1)素のcmd.exeにて、nkfでCP932に変換して表示
(2)cmd.exe にて chcp 65001 によって UTF-8 モードにして UTF-8 を表示 (挙動妖しい)
(3)cygwin 1.5 にて、nkf で CP932 に変換して表示
(4)cygwin 1.7 (デフォルト UTF-8) にて UTF-8 で表示 (開発途上)

まぁ、どれもろくでもないんで、cucumberだったらHTMLにでも書き出して、
ブラウザで見た方がいいんじゃないですかね。

126 名前:デフォルトの名無しさん mailto:sage [2009/10/27(火) 23:31:54 ]
そーいえば、PowerShellはシェルとしてはcmd.exeとしては同レベルです。
コネがある方がいらっしゃいましたら、ちゃんとUnicode通るようになんとかしてやってください

127 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 00:05:56 ]
WriteConsoleWでがんばってください

128 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 09:30:42 ]
"123.6"をdecimalの123.6に変換するメソッド(例えばto_iのようなもの)はないでしょうか?

129 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 09:39:40 ]
decimalではなくてfloatでした。すいません。

130 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 09:56:03 ]
>>128
マニュアル嫁
文字列だから String のマニュアルを読む
ttp://www.ruby-lang.org/ja/man/html/String.html

131 名前:12 mailto:sage [2009/10/28(水) 09:59:20 ]
ロックマンが海外で『Mega Man』の名称に変更された理由とは… - Game*Spark
gs.inside-games.jp/news/196/19696.html



1993年に発行されたGame Playersマガジンのカプコン副社長Joseph Morici氏のインタビューによると、
当時日本で作られたロックマンのローカライズを検討していたMorici氏は、“Rockman”というタイトル名が単純に気に入らなかったそうです。

  ”あのタイトルは酷すぎました。そこでMega Manという名前を思いついたんです。
  するとそのアイデアは気に入られて北米版で使われることになりました。ゲーム内容は日本版と全く同じでしたけどね。”



パッケージ画像
gs.inside-games.jp/_files/images/9696.jpg

 ___
/ ||Mega|| ∧_∧
|.....||Man || (     )  どうしてこんなことに…
| ̄ ̄\三⊂/ ̄ ̄ ̄/
|    | ( ./     /

132 名前:12 mailto:sage [2009/10/28(水) 10:00:08 ]
誤爆

133 名前:12 mailto:sage [2009/10/28(水) 12:03:40 ]
変なもん誤爆しちゃった…

>>12 の件ですが、結論から言いますと、
--color を引数に明示的に指定することで解決しました。

コマンドプロンプトでは色づけされる、んならすでに指定してたんじゃないんかい!と言われそうなのですが、
実際には指定しておらず、
.featureファイルに以下の記述をして「i18nで日本語を使う」とcucumberに知らせていた場合にだけ、
何故かコマンドプロンプトのみ色付けされるようでした。
# language: ja

--colorの指定は、ルートディレクトリにcucumber.ymlファイルを置いて、

default: features -f pretty --color -l ja

のように記述することで、デフォルトの引数を指定できました。

とりあえず、解決ということでありがとうございました。



134 名前:12 mailto:sage [2009/10/28(水) 12:04:50 ]
連投スマソ

>>125
ありがとうございます。

もっとロクでもない方法(?)として、以前はRUBY_PLATFORMがwin32でTERMがnilのときだけ、
$stdout.writeでSJISにnkfで変換する方法も使ってました。
Railsスレあたりに投下した覚えがあるので検索すればでてくるかも。

cygwinはUTF-8化用のDLLを入れてあり、ターミナルソフトのck.exeでUTF-8を表示できるのですが、
cygwin上でwin32のautotest使うと、テストが再実行しようとCtrl+Cを押すと何故かされず、即終了してしまうんですよね。

最近は、coLinuxのUbuntuを入れて、かなり普通にあたりまえに動くしUTF-8も問題ないので、それでもいいか、という気がしています…。

135 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 12:19:05 ]
cygwinのttyはWindowsのコンソールとは見なされないからね。
それはもうcygwinとmswin32を組み合わせるのが悪いとしか言いようがない。

136 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 15:05:18 ]
拡張モジュールの中で struct FRAME や struct RNode を触りたいんですけど、ruby.hには含まれていなくて困っています。
今はnode.cから extern strct RNode { ... }; を自分のソースにコピーしていますが、
もっといい方法があると思うので、ぜひ教えてください。


137 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 15:42:49 ]
rbbrのツリーってタブおしたら落ちない?再現率100%なんだけど

138 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 16:56:22 ]
>>136
node.cって何?

1.8ならenv.h、node.hが普通にあるはず。
1.9なら方法はないので諦めてください。

139 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 19:18:40 ]
拡張ライブラリのソースを ext/foo/foo.c に置いたら、extconf.rb も同じ場所に置かないといけない?
それともextやREADMEと同じ場所においておくもの?

140 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 19:21:51 ]
gem なら Rakefile に gem.extensions = 'ext/extconf.rb' とか直接書く

141 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 20:42:02 ]
>>139
基本的には同じところに置かないといけない。
別のところにも置くことはできるけど、それを聞いてくるということは、説明してもしかたなさそう。

142 名前:デフォルトの名無しさん mailto:sage [2009/10/28(水) 22:54:07 ]
>>136
何のために?
99%方針が間違ってる。

143 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 17:06:54 ]
htmlファイルの読み込みについてなんですが、
マッチングでマッチした文字列以降を表示させるにはどうすればいいですか?



144 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 17:13:22 ]
HTML あんま関係ないな

簡単なのは「キーとなる文字列の直後から必要な別のキーの直前まで」をマッチさせること
$1 とか $2 とかの正規表現の勉強をするといい

# <title></title>で囲まれた文字列
/<title.+?>(.+?)<\/title>/i =~ html
puts $1

145 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 17:14:47 ]
>>143
コードを書いて実行すればいいよ

146 名前:143 mailto:sage [2009/10/29(木) 17:26:50 ]
>>144-145
あざっす!!

147 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 18:17:28 ]
フォームから入力されたユーザー名とパスワードで
Kerberos認証をしたいのですが何か方法はありますでしょうか?
(ApacheのBasic認証にKerberosを利用するのではなく、
Rubyで作成したCGIの任意の箇所で認証処理をしたいです。)

ライブラリ等あればいいのですが…。
Kerberos認証を行うシェルを作成して、
CGIからユーザー名とパスワードを渡して実行させるしかないですかね?

148 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 20:26:46 ]
>>143
$'

149 名前:デフォルトの名無しさん mailto:sage [2009/10/29(木) 21:34:35 ]
>>147
使ったことないけど、rubyforge.org/projects/krb5-auth/ とかかな。


150 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 10:12:29 ]
質問
Time#to_i の秒数って、時差というかタイムゾーンとかどうなってますか?

151 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 11:07:10 ]
そのオブジェクトが地方時か協定世界時かにかかわりなく、
to_iが返すのはUnixタイム。

152 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 11:11:15 ]
あのへんは UTC とはなんぞやということを外部で習ってるということ前提だからな
Ruby で初めて意識したという人にとってはやや不親切だ

153 名前:デフォルトの名無しさん mailto:sage [2009/10/30(金) 11:19:13 ]
to_i で整数にして計算して at で戻すと一瞬わけわからんことに



154 名前:デフォルトの名無しさん mailto:sage [2009/10/31(土) 04:36:09 ]
教祖がデビアン住人だしな。世界の外の事は知らない。

155 名前:デフォルトの名無しさん mailto:sage [2009/10/31(土) 07:35:31 ]
>>154
どういう意味?


156 名前:デフォルトの名無しさん mailto:sage [2009/10/31(土) 10:27:39 ]
教祖とか宗教とかモルモンとかそういう単語の入ったレスは読み飛ばしてOK
NGにしておいても一向に損をしないことを保証する

157 名前:デフォルトの名無しさん mailto:sage [2009/10/31(土) 16:53:54 ]
Pentium4(HT)のWindowsXP環境で
CPUを100%使い切って計算しようとおもったら、マルチスレッド対応にしないとだめかな?
タスクマネージャーみたら、なんかCPUに余力が有るみたいなんだが・・・

158 名前:デフォルトの名無しさん mailto:sage [2009/10/31(土) 17:05:46 ]
複数プロセス同時に動かすのは?

159 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 21:12:16 ]
>>157
HTは、1コアを2コアに見せかける技術だから、1コアをもし使いきっているなら、
タスクマネージャでどう表示されようが、100パーセント使い切ることになるように思うけど、どうだろう。
ファイルやネットワークの入出力がある場合は100パーセントになりにくいけど、
非同期I/Oを使って頑張れば100になるんじゃないかなー。

最近のCPUは2コアが普通だから、158のように複数プロセス起動しないとだめだろうね。

160 名前:デフォルトの名無しさん mailto:sage [2009/11/01(日) 23:49:32 ]
そんなことまで考えてプログラミングしてるのか
すごいなお前ら

161 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 00:06:26 ]
"begin a,b,a,a,b end"
のような、中身が繰り返しているような文字列のマッチはどんなふうにするのがいいでしょうか?
/begin ((a|b),)*(a|b) end/
とすればできましたが、2回同じこと(a|b)を書いているのがちょっと気になります
あと、できれば繰り返しの部分を$1,$2,$3・・・のようにあとで取得したいのですが、可能でしょうか?



162 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 04:12:38 ]
>>161
>2回同じこと(a|b)を書いているのがちょっと気になります
正規表現なら我慢して書くしかないように思う。

>繰り返しの部分を$1,$2,$3・・・のようにあとで取得したい
マッチする個数がわからないと難しい。
/begin ((a|b)(,(a|b))*) end/
として、
$1.split(/,/)
とするぐらいか?

あと (a|b) は、もしほんとにaとbを使うだけなら[ab]のほうがいい。
/begin ([ab](,[ab])*) end/


163 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 08:00:11 ]
ここはRubyスレなので、Rubyの正規表現なら、という話なら、
(?<名前>任意の表現) と
\g<名前> の組み合わせでできる。

/begin ((?foo<(a|b)>),)*\g<foo> end/



164 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 08:06:53 ]
Rubyの正規表現と称して>>163がOniguruma実装限定の正規表現持ち出してきたのが笑える

165 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 08:23:44 ]
begin 〜 end だけ抽出しておいてそれに (a|b) の scan かけるんじゃだめなん

166 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 10:51:59 ]
>>164
1.9ならOnigurumaが標準だろ

167 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 10:55:27 ]
そんな寝言は1.8.7を撲滅してからほざくがよいぞ
それまでは両バージョン用併記か注釈で対応バージョン明記

168 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 10:58:37 ]
スレとしては 1.8.7 が推奨バージョンなんだから、
1.9 限定動作は「1.9.1 だとこれで一発」みたいなコメントはつけとくべきかもな

169 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 11:04:48 ]
普段く1.9の質問したら、氏ね、1.8使えと煽るくせに、
正規表現は1.9で書き込むとか、
ここの住人はダブルスタンダードだな、おい

170 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 11:24:05 ]
1.9でレスしてもいいんだがそうと明記すべきだぬ

171 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 11:24:40 ]
いつの話だよ
さすがに今1.9を使うなって奴はいないだろ

172 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 11:28:12 ]
>>169
だって君の言う「ここの住人」って、一人しか居ないわけでもなければ、
まったく同じ考え方をする集団ってわけでもないもの。
ダブルスタンダード認定は、前者と後者が同じ人間によって書き込まれたことを
確認してからでないと。

173 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 11:32:48 ]
初心者が使用すべきものと熟練者が使用して便利なものとは違うということをいまさら講釈しないといかんのか



174 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 16:05:25 ]
1.9はsp2出るまで町だな。

175 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 16:27:06 ]
1.9.3のこと?

176 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 17:33:30 ]
2.0マダー

177 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 17:39:55 ]
>>171
います

178 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 21:01:12 ]
>>168
>1.9 限定動作は「1.9.1 だとこれで一発」みたいなコメントはつけとくべきかもな

だな。1.8.7からの新機能の場合もその旨書いておいてほしいよね。
今度から>>1に追加しといてもらおう。

>>171
>いつの話だよ
>さすがに今1.9を使うなって奴はいないだろ

おまえはまず>>1を声だして100回読め




179 名前:デフォルトの名無しさん mailto:sage [2009/11/02(月) 21:27:12 ]
>>158-159
繰り返しの計算処理なんだわ
具体的には、ニューラルネットの実装やってる
はんぱない回数の計算が学習には必要なんだけど
1プロセスだと、スレッド分けしても、複数CPUは使ってくれないってことかな?

だとすると、プロセス間通信とかを眼中にいれて設計しないとダメってことかな?
ってことは、向かうところはdRubyあたり?

180 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 01:06:18 ]
ほう、膨大な計算量を必要とする分野にも進出してるんだなあ

181 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 03:07:06 ]
>>180
実用とか研究とかじゃなくて趣味だけどね。
Rubyでやってもいいんじゃない?ってかんじで

182 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 06:53:38 ]
Rubyの入門書では、サンプルプログラムの出力を大抵以下のように書いてます。
puts 'Hello World!'
ですがたまに以下のように書き方も見かけます。
$stdout.puts 'Hello World!'

どっちも正しいと思いますが行儀の良い書き方という意味では後者になるのですか?

183 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 07:07:13 ]
意味不明。内部でやってることは同じだし後者には何のメリットも無い。



184 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 07:16:11 ]
printf("Hello World\n");と
fprintf(stdout,"Hello World\n");の違いみたいなもんだぞ
簡略できるようにしてあるのにあえて冗長に書く必要はないと思う

185 名前:デフォルトの名無しさん mailto:sage [2009/11/03(火) 07:48:49 ]
冗長に書く意味があることはありうる

が、これに限ってはまず無いだろうな
前者の関数的メソッド puts の出力先を捻じ曲げるためには $stdout をいじるしかないわけだが
それをすると後者の $stdout.puts も捻じ曲がるんで意味がない
Ruby における 関数的メソッド puts と $stdout は不可分だ(C の puts を知ってると引っかかるかも)
もしなんらかの気の迷いで関数的メソッド puts の出力先の $stdout が標準出力以外になってるなら
それは putserr とか putsfile とかなんかメソッドを新たに作るべき

むしろ後者を書かれるとがっかりだ
むしろそのサイトなり解説書なり晒せ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<98KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef