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


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

Ruby 初心者スレッド Part 35



1 名前:デフォルトの名無しさん [2010/03/04(木) 11:00:57 ]
プログラミング言語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を読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

129 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 16:53:59 ]
よーしrubyのためにwindows消して
ubuntuいれちゃうぞー

130 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 16:57:52 ]
パパやめて!Windows消すぐらいならVMwareかVirtualBox使って!

131 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 17:01:47 ]
もともと持ってないならまだしもわざわざ自分から捨てるような権利でもないな

というかそのへんは本スレでやれ

132 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 18:34:28 ]
Ruby が簡単かどうかは >>119 さんもが書いているいるように
それまでの慣れや経験に依るだろうね
Unix, Linuxを使って来てシェルスクリプト,sed, awk 等
使ってきた人間だと簡単に感じる
本一冊(hunt/thomas)通勤中読んでいたらすぐに簡単なものは書けるようになった

確かにターミナル使ったことない人にはわかりにくいだろう


133 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 19:09:23 ]
つまり新しい言語に対応できない無能なおっさんが
いきついた場所がRubyということですね

134 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 19:14:54 ]
>>133
真面目にそんなこと言っているのだとしたら、そうとう恥ずかしいぞ。

135 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 20:32:51 ]
真面目じゃなくても恥ずかしいわw

136 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 20:36:12 ]
今時、小学生でもLinuxでサーバ構築できるというのに...

137 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 22:47:11 ]
ここほど口だけ出来る奴が居座ってる初心者スレは無いよな。



138 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 23:07:40 ]
そんなことを言っても出せないものは出してあげられませんよ

139 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 23:12:27 ]
逆に貧相なCMD.exeでもRubyで花を咲かせることができる
windowsユーザーだってRuby使ってるぜ

140 名前:デフォルトの名無しさん mailto:sage [2010/03/08(月) 23:49:53 ]
でも根本的に向いてない。
教祖自らウィンドウズ使ってないしねえ。

教祖と同じデビアンから入信してみるのがいいんじゃ?
まあシェルでまずは挫折して逃げ出すと思うが。

pc11.2ch.net/test/read.cgi/linux/1267107714/
Debian GNU/Linux スレッド Ver. 63
pc11.2ch.net/test/read.cgi/linux/1154631461/
Debian原理主義者テラモエス

141 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 00:03:36 ]
逆に、WindowsでRubyをバリバリに使ってる人ってガチガチに独自の快適コンソール環境を構築してそうだよなあ。

142 名前:デフォルトの名無しさん [2010/03/09(火) 00:42:22 ]
ある課題があって、それをRubyで解決したいのですが御知恵を。。。
課題というのは、仕事でつかってるIBM系のメインフレームのデータセット?
という1レコード3Kbyte程度のバイナリファイルをFTPでおとしてきて
読み込み加工して出力し、またメインフレーム上に戻す(できれば)という
ものです。

そのバイナリファイルとは別に、項目名と、その項目の値は何バイト目から
何バイトがPACだ、小数点以下は何桁だ、CHARだというレイアウトファイル
なるものがあります。文字コードはEBCDICというものらしいです。

このままじゃデータをエクセルに落して、手作業でやらされる羽目になります。。。
どう料理していけば良いでしょう?



143 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 00:44:40 ]
どう加工するかによるだろそりゃ。

バイナリファイルの扱い自体は別に困難じゃない。
unpackして適当に加工してまたpackすりゃいい。
問題はEBCDICの扱いになるかな。なんかライブラリあったかなあ?

144 名前:デフォルトの名無しさん [2010/03/09(火) 00:52:39 ]
さっそくありがとうございます。
pack,unpackの扱いについては、このあたりで良いですか?
ttp://www.ruby-lang.org/ja/man/html/pack_A5C6A5F3A5D7A5ECA1BCA5C8CAB8BBFACEF3.html


145 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 00:56:11 ]
バイナリ列をバイナリのまま扱った経験がないとしたら茨の道と言わざるを得ないが
Rubyはそのへんを助けるようなことはしない

146 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 01:04:49 ]
COBOLとRubyって、すごい対比だなw
金融機関の人間だけど、そういう場合は必ずいったんRDBに入れたり最悪でもCSVかTSVに変換してるなぁ。
つまり汎用機→情報系用に変換→各種処理→戻し変換→汎用機というルート。
変換にはうちはF*TRANを使ってる。
iconvとかでもEBCDIC扱えるみたいね。

データセットを直接扱うなんて、
リスクが高すぎてうちでは絶対に許してくれない。

147 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 01:17:23 ]
質問に?が多すぎ。
バイナリ、とは言うが、実はASCIIの文字列かいな。
.txt の処理は、Rubyだとより柔軟にできる訳だが、今からでは、間に合わないでしょ。
SEDとか、AWKのスクリプトも書けないのか、それともそんなものも知らないのか。
おそらく、今から勉強しても間に合わないから、あなたの得意なエクセルで作業をスタート。
あとは、時間との勝負。
だな。



148 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 01:19:28 ]
F*TRANって、FORTRAN?
なんで伏字にするの?

149 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 01:24:45 ]
FORTRANに嫉妬しているから。


150 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 01:33:02 ]
>>148
www.bsc.fujitsu.com/services/ftran/

151 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 01:34:01 ]
c#なら10行書けば済む処理だな

152 名前:149 mailto:sage [2010/03/09(火) 01:41:46 ]
それは、知らんかった。
音(的には)P-TOSのなんとかに似ているね。

153 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 01:42:02 ]
>>150
こんなのあるのか。笑ってしまった。

154 名前:デフォルトの名無しさん [2010/03/09(火) 02:31:05 ]
>>145
まさにその茨の道を進もうとしてるようですよ。

>>147
正直よくわかんね!ってところだからですよ、ええ('A`)
学生の頃も本職になった今もC++で離散系のシミュレーションとかやりつつ時期によっては
しょぼいエクセルの業務システム作りをやってますよ。(VBA嫌いなので得意じゃない)
sed,awkはそんなものがあるのは知ってたけど,perlでやってました。
バイナリとはいいつつ、ファイルレイアウトを見ると間違いなくパック10進数といった類
の補足説明があるので文字だけってことはないようですね。

とまあそんな自己紹介はいいから、とりあえず明日明後日ともうちょっと下調べして出直
してくる。納期もあってないようなもんなのでまったりやりますよ。

>>146手掛かりくれてありがとう。

155 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 12:01:13 ]
>>114
freeze は(少なくとも組み込みや添付では)破壊的動作のメソッドの動作を禁止させるフラグ立て

def hoge!
 raise "can't modify frozen Hoge" if self.frozen?
 ...
end

というメソッド定義に「自分でする」
破壊的動作や内部構造への再代入をされるとどっかに @foo||= なんかで残ってるインスタンス変数とかが
変更前のまま残ってて場合によっては食い違い動作の原因になりそうだとか
そういうおそれがあるクラスに提供する

ぶっちゃけこれ使わずに「お前が困る動作組み合わせは全部書いてあるからちゃんとマニュアル読め」でもいい
マニュアル読まない人が(あるいはうっかりで)よくないタイミングで破壊的動作をしてしまっても
変更して欲しくないとタグ付けされたオブジェクトだったらメソッド動作の時点でエラー出して守ってあげよう、
そんな若さと渋さの間で揺れるナイス・サーティのアナタに贈る鼻歌みたいな応援歌

156 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 12:32:47 ]
a = [ [ ] ]
a.freeze
a.frozen? #=> true
a[0].frozen? #=> false

なんだよな。
当然といえば当然なんだが。


157 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 12:36:24 ]
>>156
それは a つまり Array の freeze メソッドの動作に依存する
配列中の全要素に freeze を適用するという動作にしても構わない(不便だとは思うが)

Array#freeze がそういう「外の入れ物だけフリーズさせる」ような動作にたまたまなってるだけ
freeze の実装自体はもっと柔軟に対処が可能



158 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 12:50:48 ]
freeze は

def hoge!
 raise_if_frozen
 …
end

とか

def hoge! … end
freeze_method :hoge!

とかいう仕組みを作って簡易に利用できるほうがよかったと思う

159 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 12:58:03 ]
freeze 自体が Ruby 文化とあまり適合しないと言われているから
うまい構文糖や実装ポリシーが
熱心に研究されていないんじゃないかなあ

160 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 13:11:39 ]
evil rubyたのしいです。


161 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 13:11:51 ]
private や protected の動作がイマイチなのと根っこはたぶん一緒だよね

162 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 13:44:44 ]
if hoge && fuga.size > 0

if hoge && !fuga.empty?
どっちがいい?
どっちでもない別の表現がいい?

163 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 13:46:31 ]
あと
if fuga.size > 0

unless fuga.empty?
にした方がいいんだろうか?

どれもお好きなようにっていう程度だろうか

164 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 14:07:25 ]
>>162-163
字面が違うから意味が違う

が、fuga が配列みたいなもんなら、俺は empty? の活用をまず考える
empty? を使うことで否定要素が複数混じってしまうようならすっぱり諦めて size の比較とかにする

そんな感じ

あと配列なら Enumerable 由来の any? とか all? とかの利用も考えるといい

165 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 16:21:52 ]
>>164
書き忘れてましたfugaはArrayインスタンスです

配列であれば162も163もそれぞれ動作は同じですよね?

166 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 16:51:22 ]
なにを心配してるのかわからん
sizeが整数や実数を返す可能性とか考えてる?

167 名前:162 mailto:sage [2010/03/09(火) 17:42:10 ]
心配しているわけじゃなく
意味が同じなら書き方としてどっちがRubyっぽいのかなと思って

>>162,163で例に出した形の文は今まで前者で書いてたんですけど
empty?を使う方がいいという意見を別のところでも見たので。
特に>>162の方は否定(!)をつけてまでempty?にするのがいいのかどうかってことです



168 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 17:49:23 ]
? を使う述語があるならそっちのほうがいいという話にはどうしてもなるな

!foo.empty? みたいなのにはうんざりしてるのか、
ユーザーの作るライブラリでは相反する述語がセットで定義されてることも多い

&& などで繋ぐ場合は !foo.empty? みたいな記述はけっこう容認されてる雰囲気
if !foo.empty? だけだったら unless foo.empty? 使えという話になるんだけど

169 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 18:26:00 ]
>>162
fuga.size > 0 より断然 fuga.empty? をお勧めします。
理由は、fuga.empty? はまさに「空かどうか」を調べるメソッドであり、やりたいことを明確に示しているからです。
これに対し、fuga.size > 0 は「サイズが0より大きいか」を表しており、「空かどうか」を直接表しているわけではありません。
つまり、fuga.size > 0 より fuga.empty? のほうがより抽象度の高い記述になっています。

なお Ruby では .empty? のほうが若干ですが動作速度が速いはずです。

170 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 19:01:57 ]
「要素があるか」を調べたいのに「空か」を調べてさらに加えて否定まで付けなきゃならんのは如何なものかってことじゃろ

171 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 19:35:09 ]
だから標準で all? とか any? とかあるって
それで不足ならメソッドに掃き出すことを厭ってはならね

172 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 19:41:12 ]
unlessがあるんだから使おう、と思うか、他の言語と同じようにifで書こう、と思うか、は
微妙なところだな。自分の場合、何年かの周期でふらふらしてる。

173 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 19:42:39 ]
メソッドフル活用派とプリミティブ派のたたかいはまだつづく

174 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 19:44:37 ]
Pythonスレ
社会人が多く、大人の発言
初心者に優しい

Rubyスレ
キチガイ、偏執狂、厨房の巣窟

175 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 19:49:56 ]
要素の数が0以外なら真を返す、みたいなメソッドがないことが問題をややこしくしてる
本当はこのへんは対称性があってもいい(なくてもいいが)

うまいメソッド名が思いつかなかったっぽい雰囲気はあるが

176 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 19:56:30 ]
>>170
(誤) さらに加えて
(正) かてて加えて

177 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 20:05:28 ]
any? はよいんだけど、 [ nil ].any? #=> false なので
要素が1つでもあるか、という判定としては万能ではないかもなー。




178 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 20:11:51 ]
万能ではないも何も
> 要素の数が0以外なら真を返す、みたいなメソッドがない
という話が既に

179 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 20:18:35 ]
def hage?

end

def fusa?
!hage
end

みたいなメソッド定義はよく見る
empty? も時流に乗るべきだとは思う

180 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 22:24:10 ]
富士通御謹製エフトランを知らん奴が意外と多いんだな
汎用機、オフコンを知らん世代が増えて来たったことだな
z/OSで仕事してたころはデータセットをFTPのBINでダウンロードして
shift-JISに変換とかよくやってたぜ




181 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 22:33:53 ]
懐古厨乙

182 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 22:37:02 ]
>>181
レスしたのお前だけだぞ

183 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 22:41:39 ]
おっさん多いなこのスレ。。

184 名前:デフォルトの名無しさん mailto:sage [2010/03/09(火) 22:51:59 ]
うんにゃ、知らない奴はレスしないだけ
バックグラウンドがたまたま見えただけに過ぎない

185 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 04:22:42 ]
メソッドと変数が見分けがにくいな

186 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 09:11:00 ]
ローカル変数のように見えて実はメソッド、というのはままある。


187 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 09:19:08 ]
「値は必ず確固としたオブジェクト」なので、メソッドだろうがローカル変数だろうが
値を返すキーワードが実際は何でできてるのかは使用者からは区別する必要ないよねというポリシーがある

mes(foo) としたとき、foo が変数なのかメソッドなのかは実際どうでもいい
foo という名前が解決されてその結果返されるオブジェクトだけが重要

代入が文脈依存なのはそれなりに面倒
selfの有無で同じ名前を2回使い分けられるということでもあるが



188 名前:デフォルトの名無しさん [2010/03/10(水) 09:26:35 ]
さすがにそれはどうでもよくないだろー
local_var()もできないんだし

189 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 10:01:42 ]
問題になる状況自体が問題だと思うぞ
どういうネーミングだよ

190 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 10:10:12 ]
めっちゃプリミティブな名前のインスタンスメソッドを作って、なおかつローカル変数もそのままの名前である場合
uri とか

191 名前:デフォルトの名無しさん [2010/03/10(水) 10:34:48 ]
下記コピペの拡散、お願いします!

-- ここから --
欠陥だらけの悪法、民主党が準備を進めている「子ども手当」がまもなく国会を通過する見込みです。
そこで、この法案に対するクレームを直接政府に届けて、少しでも本法案を阻止できるよう動きませんか!?

クレーム先:www.cao.go.jp/sasshin/hatomimi/re_hato/uketsuke.html
ハトミミ「国民の声」 受付窓口
の「■ 一般受付窓口 【おかしなルール(規制・制度)】」に、「基準や要件の見直し」として、本件に関する
抗議をお願いします。実名とメールアドレスが必要となります。○制度の所管省庁 は、厚生労働省です。

なぜ本法案がまずいのか?子ども手当支給対象者、民主党支持者もじっくり考えてみてください。

【子供手当て驚愕の真実】 www.youtube.com/watch?v=Y4wuKv8ExeM&feature=related
驚愕の子供手当て 5959goc.iza.ne.jp/blog/entry/1475880/
2010/3/10付の中日新聞
up3.viploader.net/pic/src/viploader1186653.jpg
viploader.net/pic/src/viploader1186654.jpg

要件をまとめると、
「外国籍の人間も支給対象」「海外在住の日本人は支給対象外」「養子も支給対象」「財源が赤字国債」
「子どもが外国にいても支給対象」「子どもの存在証明として、法的な力を持つ手段がない」
となります。これにより、以下のことが考えられます。

1. この手当目的に、日本より経済状態が低い外国において不当な養子縁組を作るケースが激増する。
2. この手当目的に、日本にやってくる外国人(特に中国人)が激増する。
3. なによりも、負担は将来の子ども達が背負わなければならない。

国会答弁にて、政府も設計に難があるのは認めていますが、今後検討するという理由で、この欠陥を
そのまま推し進めようとしています。まだ諦めるのは早いです。できる限りの手を尽くしましょう!!
-- ここまで --

192 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 10:57:01 ]
スレ違い

193 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 10:58:59 ]
>>192
レスしたのお前だけだぞ

194 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 13:02:57 ]
>>191
民主は売国政党だからな


195 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 17:09:34 ]
初心者は1.8.7をインストールすればいいんでしょうか?

196 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 17:36:37 ]
はい、そうです。

197 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 17:37:07 ]
はい

Windowsならarton.hp.infoseek.co.jp/indexj.html
ただしコマンドプロンプトの知識がどうしても必要



198 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 18:11:43 ]
def method1(x)
 return true if (0...1000).include?(x)
 return true if (2000...3000).include?(x)
 return true if (4000...5000).include?(x)
 return false
end
---
def initialize
 @arr = []
for i in 0...1000
 @arr.push(i)
end
for i in 2000...3000
 @arr.push(i)
end
for i in 4000...5000
 @arr.push(i)
end
def method2(x)
 return @arr.include?(x)
end

上のmethod1とmethod2をそれぞれ呼び出したとき、
結果は変わらないと思うんですが、処理速度に違いは出ますか?

199 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 18:49:57 ]
def method3(i)
case i
when 0...1000, 2000...3000, 4000...5000 then true
else false
end
end

ほんとうに整数ならこれが速くてわかりやすい
整数なのならわざわざ配列作る必要はない

200 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 19:22:30 ]
int x=1000;
for(int i=0;i<=x;x*i)
{
}

201 名前:デフォルトの名無しさん [2010/03/10(水) 19:40:05 ]
(0...1000).include?(x) は 0<=x && x<1000 と同じだけど
(0...1000).to_a.include?(x) は配列の要素を一つずつ比較するので当然遅くなる

202 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 19:48:12 ]
処理が遅いってどういうとき遅いの?

203 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 20:05:01 ]
>>202
実際に遅いかどうかプログラム作って確かめてから考えたほうがいい
机上で遅そうだと思っても意外と許容範囲内であることは多い

204 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 20:09:02 ]
.NETで作ったdllは参照できますか?

205 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 20:16:00 ]
dll <-> COM <-> Ruby

206 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 20:18:58 ]
へー、COMなら参照できるのか

どういう原理なんだ?

207 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 20:38:42 ]
COM Ruby でぐぐると…わあ微妙



208 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 22:27:35 ]
pause(2) に相当するメソッドでないんですかね。
とりあえずKernel.#sleepによる無限スリープで代用していますが

> sleep(sec = 0) -> Integer
> sec が省略されたり 0 を指定した場合、他スレッドからの Thread#run
> などで明示的に起こさない限り永久にスリープします。

sleep(0) してもすぐ戻ってきやがる。
マニュアルと実際の挙動が違うのはなぜ?
ちなみに引数を省略した場合は仕様通りなんですけど。

209 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 22:33:11 ]
pause(2)ってサスペンドの時に発行される奴だっけ?

Process.kill :STOP, $$
じゃだめですかね?


210 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 22:34:53 ]
>>209
ああ、それいいかもです。

ところでKernel.#sleepの挙動がマニュアルと異なるのが気になりますw
sleep(0) ですぐリターンするのは何故でしょう??

211 名前:デフォルトの名無しさん mailto:sage [2010/03/10(水) 22:38:10 ]
まあ個人的にはただしい挙動だとは思いますが。
シェルから sleep 3 を実行すると0秒後に復帰しますし、永久にスリープはしませんね。はい。

212 名前:198 mailto:sage [2010/03/11(木) 00:38:23 ]
みなさん、ありがとうございます。
method1の代わりには、ご提示くださったmethod3が確かに良さそうですね

0...1000等はデータ的な数値(整数)で、頻繁に比較するのですが、
データ専用のクラスに数値の配列とmethod2を定義して呼び出し側のクラスから参照して比較したほうが、
呼び出し側のクラス内に直接method1を書くよりも記述のまとまりとしては良いと思ったんです

かと言って、データのクラスにmethod1や3のような記述をしても、
データを管理しているイメージはないですよね

213 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 00:58:39 ]
www.ruby-lang.org/ja/man/html/_C1C8A4DFB9FEA4DFB4D8BFF4.html
ここには0の場合永久スリープとは書いてないな。

RubySpecには
it "pauses execution indefinitely if not given a duration"
(引数がないなら無限に止まる)
はあるけど0を指定した場合の仕様は書いてない。
github.com/rubyspec/rubyspec/blob/master/core/kernel/sleep_spec.rb

でもって、るりま
doc.okkez.net/static/187/class/Kernel.html
には0だと永久スリープとある。

るりまの間違いだろうか。



214 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 01:02:12 ]
>>212
え、なにそれ

class HogeDataRange
def include?(x)
case x
when 0..1000, 2000...3000 then true else false
end
end
end

puts "13は含まれてるよー" if HogeDataRange.new.include?(13)

とかやる気なの?

215 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 01:24:00 ]
Rubyでできないことって何?

216 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 01:26:47 ]
>>215
あなたができそうだと思っているようなことは全てうまく行えない

と答えるのが一番実態に近いと思うん
説明してだいたいをわかってもらえるような人はそういう聞き方しないので

217 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 01:33:05 ]
そっか



218 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 02:40:42 ]
ものそい他人任せだが、他の初心者にやさしい「見た目わかりやすい」言語を学んでからだと
Rubyのような言語の立ち位置がよく理解できるかと思う

最初からRubyだけ与えられている状態はけっこう不幸だ
だから大学1年の授業にRubyを使うとかいうのは俺はあまりいいと思わん

219 名前:212 mailto:sage [2010/03/11(木) 02:53:01 ]
>>214
そんな感じのをやる気なのですが

220 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 04:49:39 ]
pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=%B5%D5%B0%FA%A4%ADRuby%2FTk
ここの一つ目のサンプルコードをコピペして実行したのですがエラーになってしまいます
それとサンプルのVisualnovelも他のrbファイルを取り込むところで
見つけられないらしくエラーが出てしまいます
requireをしないコードは普通に実行できます
それと実行はRDEでやっています
Pathはbinが環境変数のところで通っています
何がいけないんでしょうか?

XPsp3 Ruby1.8.7 RDE1.1.1.1

C:/DOCUME~1/***/LOCALS~1/Temp/rbF.tmp:1:in `require': no such file to load -- tk (LoadError)
from C:/DOCUME~1/***/LOCALS~1/Temp/rbF.tmp:1
Complete(1)

221 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 06:08:59 ]
tcl入れてないんじゃね?

222 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 10:16:02 ]
そのRuby自体が、tkをサポートしてないRubyに見える

223 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 11:27:44 ]
net/httpライブラリでデフォルトのリクエストヘッダを設定する賢い方法ない?

http.rbのHTTPGenericRequest#initializeを直に書き換えるのは気持ち悪いよな

224 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 11:44:58 ]
そのような動作をするクラスやメソッドを別途作る
net/http そのものを弄ることは推奨されない
固定の HTTP ヘッダが必要なら、固定の HTTP ヘッダを追加して Net::HTTP オブジェクトを作るメソッドを作る

225 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 11:46:51 ]
手順的に不正確だった
> 固定の HTTP ヘッダを追加して Net::HTTP オブジェクトを作るメソッドを作る

Net::HTTP オブジェクトを作って固定の HTTP ヘッダを追加して返すメソッドを作る

226 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 11:57:11 ]
そこまで書くなら Net::HTTP オブジェクト自体はヘッダのデータ持たないと思うにゃん

227 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 12:16:18 ]
よーわからんがこういうの?

require 'net/http'
# Net::HTTP.version_1_2 # 1.8.7では既にtrue

def http_get(uri, header={})
Net::HTTP.start(uri.host, uri.port) do |http|
req = Net::HTTP::Get.new(uri.request_uri)
header.each_pair{|k, v| req[k] = v}
return http.request(req)
end
end

uri = URI.parse('www.ruby-lang.org/')
p http_get(uri, {'Accept-Language' => 'ja'}).response['location']
p http_get(uri, {'Accept-Language' => 'en'}).response['location']



228 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 12:19:50 ]
/aaa\/bbb/
という正規表現文字列にマッチする正規表現というのはどう書けばいいんでしょうか。

\/.*?\/
と書いて、中の\/にマッチしないように
\/[^\\\/]*?\/
としてもダメでした。


229 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 12:37:15 ]
irb> Regexp.new(Regexp.quote("/aaa\\/bbb/")) =~ "/aaa\\/bbb/"
0
irb> Regexp.new(Regexp.quote("/aaa\\/bbb/"))
/\/aaa\\\/bbb\//
irb> p "/aaa\\/bbb/".scan(/\/aaa\\\/bbb\//)
["/aaa\\/bbb/"]
nil
irb> p "/aaa\\/bbb/".scan(/\/.+?\\\/.+?\//)
["/aaa\\/bbb/"]

どこまで汎用になればいい?
本当にマッチさせたいものはなに?






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

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

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