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


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

Ruby 初心者スレッド Part 27



1 名前:1様 [2009/04/02(木) 09:42:23 ]
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

   【Ruby1.9.1 は従来版とは別物であり、書籍や解説やライブラリのサポートがまだありません】
   【自力で解決できない壁で悩むことのない最新安定版の Ruby1.8.7 での学習をお勧めします】
    ※1.8.7 は 1.8 系と 1.9 系の橋渡しをするためのリリースで、1.9 系 の便利新機能の一部が利用可能です
    ※ただし 1.8.6 より安定しているとはまだ言えないので、安定性を第一とする用途には 1.8.6 をどうぞ

関連スレや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を読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

426 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 05:48:59 ]
>>425

422じゃないけど、Rubyの場合は
基本的に変数はすべて参照になっているって事でいいのかな。

irb --prompt simple
>> a = [1, 2]
=> [1, 2]
>> b = a
=> [1, 2]
>> a << 3
=> [1, 2, 3]
>> a << 4
=> [1, 2, 3, 4]
>> b.size
=> 4
>> b
=> [1, 2, 3, 4]

この場合、aとかbってのはただのラベルで配列の実体は別の場所にあるってことでいい?

427 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 06:53:21 ]
> 基本的に変数はすべて参照になっているって事でいいのかな。
いいと思うけど、俺にアンカーつける必要なくない?
他にもいい人はたくさんいるよ

428 名前:422 mailto:sage [2009/04/15(水) 08:15:18 ]
>>423
組み込みオブジェクトの内部表現が変わってもスクリプト側には
影響ないと思ってたんだけど、拡張ライブラリが駄目なのか。

>>424の言うように派生クラスにするか、Arrayを初期化するときに
内部実装を選択するヒントとかパラメータを指定できるようになれば
面白いかなって思ったんだけど。


>>425
これ、Ruby Hacking Guideってやつだよね?
Webで見れたとは、こりゃありがたい。
後でゆっくり読ませてもらうわ。

429 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 08:32:04 ]
初心者スレだったんだっけ

>>426
オブジェクトを「捕まえる」「入れておく」ことはできない
名前で参照するしかない
変数に対する = は、"右辺" の指すオブジェクトに新たなラベルをつける行為で、本当は「代入」ではない
irb> a = [1, 2]
irb> b = a
irb> a << 3
irb> p (a.object_id == b.object_id)
true

で、スレ的にもこれだけでいいと思うんだが、こっからがめんどい
irb> a = [1, 2, 3, 4, 5]
irb> p (a[0..2].object_id == a.object_id)
false

a と a[0..2] は違うオブジェクトなので、
  [1, 2, 3, 4, 5]
  と
  [1, 2, 3] ← a[0..2] が返す、できたてほやほや配列
という2つの配列オブジェクトが(Rubyの「オブジェクト置き場」に)存在しているように感じるが、実は
  [1, 2, 3, 4, 5] <共有済>
  と
  <注: id:3324 の配列を共有、0要素目から2要素目までを返す、ただし、破壊的変更が来たら配列内容をコピーして保持する>
という、1つの「share された」配列と1つの「share した」配列になってる
これらは自分が share 関係にある配列と自分が share 状態であるということを覚えていて、破壊的変更が自分に来たら share 関係にある配列にそれを通知する
通知または破壊的変更がきた場合の動作は
 ・ 自分が共有元(a)である場合は share 状態を解除し普通の配列に戻る(破壊的変更を自分が受けていた場合は受け付ける)
 ・ 自分が共有先(a[0..2])である場合は共有元の要素の参照をきちんと複製して share 状態を解除し普通の配列に切り替える
ということである、というようなてきとーな理解でいいか>>421
array.c を読めばなんか書いてあるのかね

430 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 08:40:40 ]
この最適化が入ることで、逆にそれ以外のところが遅くなるはずだが、
配列って部分参照することってそんなにあるっけ?


431 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 08:43:53 ]
>>429
ん、単純に

[ <id:0011>, <id:0013>, <id:0015>, <id:0018>, <id:0411> ]

という普通の配列と

[ a[0], a[1], a[2] ] # a が変更されたらオブジェクトIDの参照に切り替えること

の関係になるという話なんじゃないの?
や、こんな 2段階やるくらいなら最初から [ <id:0011>, <id:0013>, <id:0015>] という配列作っとけよ、という感じではあるんだが

432 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 10:03:58 ]
お、おまいらここは初心者スレだぜ( ´ー`)y─┛~~ コウドナワダイデビビラスナ

433 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 10:19:32 ]
>>420の分かってないっぷりにワロタw

434 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 10:24:56 ]
>>431
オブジェクトにラベルを新たに付けるという行為が、
配列をインデックスで参照するように指定するという行為よりずっとコストのかかる行為であった場合には、
[ a[0], a[1], a[2] ] のほうが有効だと思われ
ホントのとこはどうなのかは知らない



435 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 10:28:46 ]
また仕様バグか

436 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 10:56:44 ]
require 'benchmark'

a = (1..1000000).to_a
Benchmark.bmbm do |bm|
bm.report('a に追加'){a.delete_at(0); a.push("s")}
end
a = (1..1000000).to_a
Benchmark.bmbm do |bm|
bm.report('部分参照して追加'){a[1..-1].push("s")}
end

結果:
               user   system   total    real
a に追加        0.050000  0.000000  0.050000 ( 0.048458)
               user   system   total    real
部分参照して追加  0.050000  0.010000  0.060000 ( 0.053062)

破壊的変更した際に別に遅くなるとも思えんのでバグではないな
部分参照だけをした場合が笑えるほど速いので問題は無い

…まあ、push しただけなのにdeleteとpushの2段階と同レベルの処理速度に落ちるということ自体
コードの見かけと実際の関係上あまりよくないという観測もなくはない気もするが
(つまり、「共有の配列」から「本当の配列」に変換される、Rubyの裏側の動作がかなりごっつい)

437 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 11:21:01 ]
>>436
残念
遅いのは delete_at の部分
share の部分配列を通常の配列に変換する、というのは、
配列から要素を削除して詰める、という行為と大して変わらない

ちなみに、これがわりと速いぞ

a2 = Array.new
a2.push(*a[1..-1])

配列の一部分を得たい場合は配列のスライス arr[s..e] を使うほうがいい、ってことだな

438 名前:デフォルトの名無しさん [2009/04/15(水) 12:41:21 ]
エラーが出ても処理を止めず、最後まで実行するようにしたいのですが、どうすればよいでしょうか??
PHPのようにブラウザで実行したとき、エラーメッセージをエラーが出た部分に出力するようにしたいのです。
begin とか rescue を使えばできるのかな?と思っているのですが・・
ご教示頂けると幸いです。

439 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 13:20:37 ]
>>438
エラーが出たってことはそれ以上処理ができないということ

で、まあ、使ってるフレームワークのヘルプでも読め
処理中に起こって止まる原因となった例外をWebブラウザ上に表示させる方法がたいてい載ってる

440 名前:デフォルトの名無しさん [2009/04/15(水) 13:24:30 ]
レスどもです。
PHPの場合はエラーが発生してもなんとか最後まで実行しようとしてくれますよね??
rubyだとエラーが発生したあとの処理はどう頑張ってもやってくれないということでしょうか?

441 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 13:32:47 ]
とりあえず、いきなりCGI作るのやめろ
RubyはCGIを特別扱いしない
普通のコンソールのスクリプトでどういうことができるか勉強してからCGIやれ
きっとそっちのほうが早い

442 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 13:37:33 ]
PHPはWebブラウザから入力してWebブラウザに出力する特化型言語だからなあ…

> PHPの場合はエラーが発生してもなんとか最後まで実行しようとしてくれますよね??
いいえ

443 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 13:49:20 ]
PHPのエラーってWarningのこと言ってるの?
それ以上処理できなかったらPHPだって止まるよ

444 名前:440 [2009/04/15(水) 14:50:12 ]
あそうか、warningの時は続けて実行してくれるけれど、fatal error の時はPHPでも止まるのか・・勘違いしてました、すいません。
ありがとうございますm(_ _)m



445 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 18:26:19 ]
klassってなんですか><

446 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 18:27:25 ]
klassの部分をclassに修正してみれば分かるよ

447 名前:426 mailto:sage [2009/04/15(水) 19:57:26 ]
遅レスだが

>>429
だいたいその理解でおk
細かいこというと、共有元を破壊的に変更する場合は、シェア状態を解除
するのではなく、複製してそっちを指すようになる。つまり共有先と同じ

>>431,434
ちがう

448 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 21:36:05 ]
>>445-446
clazzを使う流儀もあるな。


449 名前:デフォルトの名無しさん [2009/04/15(水) 23:01:12 ]
このスレってmatz, yugui, yarv, shugoさんとかが名無しで答えてたりするのかなぁ

450 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 23:26:03 ]
少なくともよく答えてることはまずないと思う。
1〜2週間スレを見てればわかる。答えてたら失望するわ、おれ。

451 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 23:29:00 ]
ここまでMatzの自演

452 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 23:29:53 ]
こんな金にならないスレに顔出すより、
ブログに何か書く方が大事だろw

453 名前:デフォルトの名無しさん [2009/04/15(水) 23:34:02 ]
しかし、こういう立場のひとってブログに大きな態度で書けないよな。
リーナス君のようにならないことを祈る。。

454 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 23:36:39 ]
どっちもどっちのような



455 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 05:58:10 ]
内容見ずに態度見るような馬鹿を気にしてもしょうがないよ。
有名になると、何書いたって行為と悪意を両方増やす結果になるし。

456 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 05:59:32 ]
×行為 ○好意

457 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 09:03:10 ]
>>449
Ruby1.9には2ch bot yarvを新装備!


458 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 10:00:57 ]
RSpec で、 hogehoge.rb に対して hogehoge_spec.rb を作ったら、シェルの補完で

  hog <Tab>

と打って hogehoge.rb が一発で出るとかそういうのが阻害されてしまうから不便だ、という話をしたら

 spec ファイルは spec/ ディレクトリにまとめて入れろバカ

というツッコミが来た
知らんかった
でもこれって spec ファイルのほうからどうやってオリジナルのスクリプト読むん?

459 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 10:11:22 ]
>>458
> spec ファイルは spec/ ディレクトリにまとめて入れろバカ
Rails on Rails の流儀だな
spec ディレクトリは自動で追加される環境の人だ
自力でどうにかできるものではないので、Rails で作ってないなら無視してよし
一応 File.expand_path とか File.dirname(__FILE__) とか駆使したファイルパスを require するようにすればなんとかなるとは思うが

460 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 10:23:47 ]
>>458
俺の場合は __FILE__ を基準にして、他の場所のオリジナルを読むようにしてる
たとえばlibディレクトリなら

Pathname.new(__FILE__).dirname.parent.parent + 'lib'

で探す

461 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 10:27:58 ]
RSpec使ったことないけど
補完の問題だけを考えるとspec_hogehoge.rbにするのはどうか?

462 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 10:31:18 ]
>>458
$LOAD_PATH << ".." << "../lib"
require 'spec'
require 'hoge'
...

オフィシャルなファイルと被るファイル名の自作ファイルがあると動作しないのが難点だが、
require はまあそもそもそんなもんだな
ただ、下手に lib/ と spec/ があると、Rails の auto_spec.rb とか
なんかあのへんが動作すると期待されてしまうかもしれない

463 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 10:37:27 ]
>>461
一応、spec/*_spec.rb というファイルをまとめて実行して
一気に lib/ 内のファイルのテストを試すサポートプログラム(autospec)が存在するので、
いつか自動テスト実行を覚えた時用に hogehoge_spec.rb という名前であったほうが好ましい

が、一人で使うぶんには spec_hogehoge.rb にしておくのがいちばん無難だな、めんどくさくないし

464 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 11:37:51 ]
>>458-459
別にRails流ってこともないだろ。
Gemsとかつくる前提のときも spec/ に入れるのが一般的だし、
autotestも標準で spec/以下 と lib/を関連付けて見てくれる。

といっても、慣例でしかない気がするけど



465 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 14:18:57 ]
>>458
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')

とかかな。
いちいち書くのめんどくさけりゃ>>464のいうautotestや、
Rakeにspec/rake/spectaskのSpec::Rake::SpecTaskを使って
テスト実行を肩代わりしてもらう。

この二つはデフォでは spec/*_spec.rb を相手にするから
たかが慣習、されど慣習と。

466 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 16:28:48 ]
ねーよw

467 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 19:04:41 ]
ファイルのロックを File#flock でなく IO#fcntl で実装しようかと思ったんですが、
これシステムの struct flock に依存するから簡単には portble に書けないですかね?

468 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 20:55:51 ]
どこまでのポータビリティを求めてるのかによる。
Windowsとか言い出すなら問題外。

469 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 21:14:34 ]
あ、rspec の、エクスペクテーションの should をまとめたいと思ってメソッド定義するよね
あれってどこに書くべき?
before で作ったインスタンス変数が読めなかったり def で定義したメソッドが見えなかったりでどこがどう妥当なのかよくわからん

470 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 21:59:37 ]
>>469
何を言いたいのかよく分からないが
it (specify) を、複数の ExampleGroup で共有したいって事なら
share_as メソッドを探すと幸せになれるかもしれない

471 名前:デフォルトの名無しさん mailto:sage [2009/04/16(木) 22:09:06 ]
…たぶん、

describe Hoge do

 before :all do
  @val1 = ... ; @val2 = ...
  # (1)
 end

 (2)

 describe "#foo" do
  matomete_val_tesuto
 end

end

としたいときに、 def matomete_val_tesuto を (1) に書くか (2) に書くかって話なんじゃね
(1) に書いたら describe "#foo" の中では使えないはず
(2) に書いたら @val1 にアクセスできんな

472 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 00:13:56 ]
setter の返り値について質問
a.hoge = b.hoge = value みたいな書き方ができるようにしようと思うのですが、

def hoge=(value)
@hoge = validate(value)
@hoge
end



def hoge=(value)
@hoge = validate(value)
value
end

ではどちらがいいでしょうか?
場合によって value != validate(value) となります。

473 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 00:22:53 ]
> a.hoge = b.hoge = value みたいな書き方ができるようにしようと思う
そういうのやめとけ
めんどくさいから

ちなみに、 = つきメソッドは引数を返すように作られていることが期待されてる
つまり、

def hoge=(val)
 @hoge=val
end



474 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 00:28:15 ]
前者をよしとする人はいないんでないの
a=b=c が a==b==c にならないのはバグの元だし
オペレータオーバーライドの悪い点をわざわざ利用する必要はないよ



475 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 00:31:08 ]
今調べたら、セッターとして使うと引数が問答無用で返って、
sendで呼ぶと返した値が返る

476 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 00:37:49 ]
>>475
うわあこれ知らんかった
今まで引数の値をわざわざ返してたのにー

477 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 00:44:12 ]
…。

いや、なんつーか、 hoge = 1 の返り値は 1 だというのは知ってるよな
def set_hoge
 @hoge = 1
end

これの返り値は 1 だし、attr_* 系で作られる hoge= みたいなメソッドも引数を返す


478 名前:472 mailto:sage [2009/04/17(金) 00:48:14 ]
皆さんレスありがとうございます。

>>475
>今調べたら、セッターとして使うと引数が問答無用で返って、

ほんとだw
そもそも返り値を選択できなかったとは……

def hoge=(value)
return
end

でも引数が返ってきました。
setter の呼び出しは処理系が特別扱いしてるんですね。

479 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 01:25:51 ]
[ruby-core:00637]より。

|If an assignment method which doesn't return an argument is not
|intuitive, why don't ruby force it?

Agreed. Last time I thought that, I was too lazy to modify compiler
itself, and then forgot. I will fix it someday.

だって。

480 名前:472 mailto:sage [2009/04/17(金) 02:25:15 ]
>>479
なるほど。
その結果として 1.8 では setter の戻り値を破棄して
引数を返すように変更されたと

確認してみたらピッケル本にもそのことがちゃんと書いてありました(言語編 p76)

481 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 08:42:59 ]
>>477
バーカ

というかお前322と似てるな。バカ具合が

482 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 09:00:50 ]
わざわざ終わった話題に安全圏から罵倒、というのはつい最近どこかで

483 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 09:45:27 ]
クラスメソッドのエイリアスはどうやって定義しますか。

484 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 09:52:51 ]
class Hoge
 def self.hoge ; end
 class << self
  alias hage hoge
 end
end
これ以外の方法知らん。他のやり方があったら教えて。



485 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 10:23:07 ]
>>484
alias メソッドを使うとしたらそれくらいしかなさそうだな
あとは普通に self.hoge の中で self.hage を呼ぶしかあんめえ

486 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 10:43:50 ]
alias_methodを使うというひねりもできるが、メタクラスを使う以外の方法はない。

487 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 10:48:13 ]
rubyでcgiを作ろうと思います
postを受け取るにはどうすればいいですか

488 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 10:52:20 ]
>>487
他の言語でpostを受け取るのと同じ方法でできます。

489 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 11:05:40 ]
>>487
単純には、標準入力に環境変数CONTENT_LENGTH長だけ入ってる、はず。
マルチパートやらデコードやらいろいろあるので、ライブラリを使うのが吉。
どのライブラリをどんな風に使うのがいいのかは、詳しい人を待って(オイ)。

490 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 13:46:48 ]
>>488
うん、変わらんな
というか一度は自力でPOSTとか全部やってみたほうがいいと思うんだ

>>487
標準で cgi というライブラリがあるからそれ使え
自力で外部ライブラリをインストールしてもいい環境なのなら、
rubyforge から cgialt をインストールしてそれを cgi 互換ライブラリとして使え
他にもいくつかあるが、cgi ライブラリの使用経験とかを前提にしてたりするんで、最初は素直に cgi ライブラリ使え

491 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 14:36:38 ]
rubyのcgiはかなりアレ。

492 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 16:14:01 ]
>>468
メジャーな UNIX (Linux, *BSD, Solaris あたり) で動けば十分なんですが、
Google ソースコード検索や Koders でも Ruby の fcntl の用例が少ないみたいなんで
Ruby Inline か拡張ライブラリで fcntl(2) を直接使うことにします。

493 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 16:51:33 ]
>>491
アレって何?


494 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 17:07:46 ]
>>492
IOクラスにfcntlメソッドがあるので、わざわざそんな難しい方向に行かんでもええよ



495 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 17:07:54 ]
指示代名詞も知らないゆとり乙

496 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 17:09:43 ]
>>493
491じゃないが、仕様と実装が残念だった。
1.9系で後者は改善されたけど。

497 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 17:38:58 ]
>>494
その IO#fcntl ですが、例えば file.fcntl(Fcntl::F_GETLK, arg) するとき、
arg には struct flock に pack したものを指定する必要があるのですが、
struct flock にどんなメンバがあるかは Ruby レベルからは知り得ないので、
やっぱり C で書く必要があると思うのです。

498 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 18:01:32 ]
>>497
なんだ、そんなレベルのポータビリティでいいのか。

499 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 19:35:12 ]
>>487
今ならRack使う方がいいと思う

500 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 19:44:30 ]
初心者に標準添付以外をいきなり勧める人って何なの

501 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 20:49:03 ]
今ならgem install rackするだけだろ?

rubyみたいな日本だけのドマイナー言語を選んで、さらにcgiがやりたいなんて
茨の道を歩くのは覚悟してもらわなきゃ


502 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:01:04 ]
> rubyみたいな日本だけのドマイナー言語を選んで、さらにcgiがやりたいなんて

海外の開発系カンファレンスに何度か出席しているが、
どうみても日本より海外の方が、Ruby の関心が高い。

むしろ日本人は「Ruby 出来ない子」が多い、と感じる。

503 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:07:40 ]
> 海外の開発系カンファレンス

そういうやつらは「寿司、天ぷら、藤山、芸者」の日本好きの変わり者geekだろ。
狭いコミュニティに閉じこもって「関心が高い」じゃないだろ。

目を覚ませ。もう戦争は終わったんだ。
今は蛇言語でgwtの時代なんだよ。

504 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:12:12 ]
せめてこのスレでは、Ruby初心者に有益な情報を書くように心がけられないもんかね
Pythonがいいよってのも、Rubyのことを聞きに来た人間を迷わせる効果しかないと思うんだがね

アンチは本スレでもアンチスレでも行けばいいんだ。
初心者スレにまで顔出すことはなかろうに。本格的に人間性を疑うわ。



505 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:12:23 ]
カンファレンスは知らないがおれもそれは感じる。
新しいバージョンとかでつまづいたときググると、
役に立つのは大抵海外のサイト。向こうの方が精力的にやって気がする。
2ちゃんなんてRubyスレ全般で「1.9は使うな」だもんな。
2ちゃん見てる時点でアレだろと言われたらそれまでなのだが。

506 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:16:56 ]
裸で冬山に特攻する初心者がいれば「行くな」とも言いたくなるわな

507 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:21:08 ]
>>505
お前英語苦手だろ
英語で書いてあるというだけで凄いって思ってるだろ
海外の人だって「初心者」は Ruby 1.9 を使ってない

508 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:22:39 ]
Vimで入門始めたけど、アホらしくてNetBeans入れてみた

信じられないくらい快適になった

509 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:27:00 ]
>>507
別に得意じゃないけど英語だけですごいなんて思わないだろ。小学生かよ。
新しいことに関して日本のサイトはほとんど引っかからないし、
読んで実際に解決することが多いからそう思う。

あと「Rubyスレ全般」ってわざわざ書いてるんだからちゃんと読んでな。
たった5行なんだからさ。初心者スレに限定してないだろ。

510 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:34:10 ]
日本人はRuby初心者が多い印象がある
外国人の人にとってのRubyは日本人にとってのPythonくらいの「詳しい人向け言語」な感じ

511 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:48:53 ]
ruby-talk読んでるが、初心者らしいというかほほえましい質問が半分くらい(たいかん)

512 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 22:42:31 ]
詳しい人はこんなところこないと思うよ
前にmswinの人がキレてたじゃん
わざわざ顔出して見ず知らずのしかも自分の足下にも及ばないようなやつに、
口汚くレスされたりしてストレスためる必要ないだろ
あと日本のRuby好きはRubyで何か作るというよりも、メンテナとかをやるのが好きなのかもね

513 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 01:24:40 ]
ゴルフやってるんじゃねーの


514 名前:デフォルトの名無しさん [2009/04/18(土) 11:16:09 ]
month = 4
などの数字が入ってるとき、これを to_sなどで
"04"という風に変換したいんですが、どうすればいいですか?
month = 11
のときは、"11"です。
どうかお願いします。




515 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 11:23:44 ]
'%02d' % 2 => "02"
'%02d' % 11 => "11"

516 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 12:06:19 ]
もしくは

$ irb
irb(main):001:0> sprintf("%02d", 4)
=> "04"
irb(main):002:0> sprintf("%02d", 11)
=> "11"

517 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 12:53:26 ]
MySQLをDBIを介して使おうとしているのですが、
テーブル名一覧を取得する方法をお教えいただけないでしょうか?

dbh = DBI..connect("dbi:Mysql:test:localhost","user","password")
table_names = dbh.execute("SHOW TABLES")
p table_names

とやると全然違うものが出力されてしまいます。
すいませんが、お教えいただけますでしょうか?

518 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 13:32:41 ]
聞くときだけは丁寧だな。がんばれよw

519 名前:517 mailto:sage [2009/04/18(土) 16:44:37 ]
自己レスです。

結局DBIを介して行う方法はわからなかったので、Ruby/MySQLで接続して行いました。
require "mysql"

dbh = Mysql::new("localhost","username","password")
dbh.query("use database")
p dbh.list_tables

これで取得できそうです。

520 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 19:34:20 ]
FreeBSD 7.1-RELEASE-p4 で irb 使ってます
Delete キーを押すと ~ が表示されるんですが、同じような症状をさくっと治したという方はいませんでしょか
csh 上では普通に後ろの文字が消えます

521 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 20:26:40 ]
端末は何を使っとるん?

522 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 20:37:48 ]
ええと、アプリケーションは Windows 上の PuTTY で、端末文字列は xterm-color 、
csh から bash を起動して C-v したあとに Delete キーを押すと ^[[3~ が表示されてます(csh 上ではどうやるんだろう?)
screen 等は(まだ)使ってません
接続先は具体的にはさくらインターネットのレンタルサーバです
なんか Ruby あんま関係ないような気がひしひしとしてます

523 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 20:43:38 ]
irb を起動するとキー操作の動作が違う、という場合はいちおう Ruby スレの範疇だと思う
まあ、irb 自体が独自に何かやってるわけじゃないけどさ

524 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 21:22:16 ]
>>522
自分もさくらのレン鯖契約しているのでやってみた。
ログインシェルが csh なので、bash にしたあとで irb 起動してみたけど、
C-v したあとだったら delete キーを押すと再現したけど、
C^v しなければ、irb のプロンプト中に delete キーを押したら、ちゃんとカーソル位置の文字が消えたよ

C-v って何のためにやっているの?



525 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 21:57:44 ]
C-vは、つぎの入力文字を視覚的に表示する機能では?


526 名前:521 mailto:sage [2009/04/19(日) 00:31:07 ]
>>525
C-v って vi のと同じように、次の入力をキーコードそのまま入力する機能だと思う。
PuTTY が Delete で吐くキーコードが 1b 5b 33 7e ってことだよね。

FreeBSD 7.1-RELEASE-p4 & PuTTY 0.60 ごった煮版 2007年8月6日版だけど、
カーソル位置の文字が消えた。

もし Readline を入れてなければ入れて、
それでダメなら ~/.inputrc に↓コレ書いてみて。

"\e[3~": delete-char






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

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

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