Ruby 初心者スレッド ..
[2ch|▼Menu]
376:デフォルトの名無しさん
09/01/11 02:28:22
変な質問なうえにおそらく出来ないんだろうけど一縷の望みをかけて質問
メソッドの入れ子って出来ますか?
たとえば、
def method1
 処理
 def method2
  処理
 end
end
としたら、method1だけ呼びだしたらmethod1の処理のみで終了。
method1.method2みたいに呼びだしたら両方の処理を実行、みたいな。

この書き方だと
URLリンク(www.ruby-lang.org)
みたいになっちゃうから無理なのは明白だけど・・・

method1に引数を与えてmethod2の処理をif文でくくって引数の値で処理するか否かを
決めるって方法もあるけど、見た目的にごちゃごちゃするから嫌というか・・・

なんかいい方法あったら教えてください。

377:370
09/01/11 02:31:30
>>375
ありがとございます。
昨日Rubyはじめたばっかりでいろんなサイトからつぎはぎで趣味プログラムしてたんで
リファレンスマニュアルというのをみてませんでした。まず、一読してみます!

378:デフォルトの名無しさん
09/01/11 02:32:20
>>376
無理
素直にモジュール使って、Mod1.method1としなされ

379:デフォルトの名無しさん
09/01/11 02:34:20
>>376
それではmethod2を定義しているだけで,method2を呼び出してはいない

def method1
puts "call method1"
def method2
puts "call method2"
end
method2
end

380:379
09/01/11 02:35:59
ごめんはやとちりした

381:376
09/01/11 02:45:25
>>378
無理かぁ・・・ありがと
Mo1.method1・・・method2はどこへ?
実はmethod1の処理がイテレータを含んでいて、変数を一周するたびに初期化して使うんだけど、
場合によっては初期化する前にmethod2の処理でその変数を使いたいから↑のようなことに・・・
モジュールだとダメそうなのでおとなしく引数と条件文で動かします。。

>>380
ドンマイw

382:デフォルトの名無しさん
09/01/11 02:47:47
>>376
def method1
 処理1
 Proc.new do
  処理2
 end
end

method1
method1.call

近いことを無理やりやろうとすれば、
こんなのは思いつくが、普通はやらない
端的に言って不気味すぎる

383:デフォルトの名無しさん
09/01/11 03:00:57
いやいや、初心者のこんな突拍子もないアイデアから、すごいアイデアがでたりする。
1000個に1個ぐらい。
だから初心者は1000個のアイデアを出すんだ!

384:デフォルトの名無しさん
09/01/11 03:14:53
callが気に食わない

def method1
 処理1
 pr = Proc.new do
  処理2
 end
 pr.instance_eval "alias :method2 :call"
 pr
end

method1
method1.method2



385:376
09/01/11 03:22:55
>>382
おお、できるんだ!?
ありがと〜

ぶ、不気味なのか・・・

>>384
求めていたものが完璧に・・・お見事です。

お二方、ありがとうございます。

386:デフォルトの名無しさん
09/01/11 03:40:36
開発環境なに使ってますか?
自分はLinuxでは基本Netbeansで、ちょっとした修正はemacsで。
eclipseとかもあるけどどんな開発環境使っているか気になったので・・・。

387:デフォルトの名無しさん
09/01/11 03:59:55
vi

388:デフォルトの名無しさん
09/01/11 04:07:59
今時 vi はないだろう vi は。
俺は断然 vim だな。

389:デフォルトの名無しさん
09/01/11 04:10:20
メモ帳

390:デフォルトの名無しさん
09/01/11 04:14:26
俺はEclipseにRubyプラグイン
editer使ってる人は補完なくて大丈夫なの?

391:デフォルトの名無しさん
09/01/11 04:25:12
いや、もちろんエディタにも補完はあるよ
VimのRubyに対する補完はかなり強力。それ以上に操作性が好きで使っているけど

392:デフォルトの名無しさん
09/01/11 04:29:52
ずっとEmacs
ちなみにMatzもEmacs

まあ人に何が良いか,って聞かれたらNetbeans勧めるかもな

393:デフォルトの名無しさん
09/01/11 04:30:07
viの学習曲線の最初でくじけたのでemacsで

394:デフォルトの名無しさん
09/01/11 07:48:14
俺は断然 vi

395:デフォルトの名無しさん
09/01/11 08:18:34
あんな日本語も通らない化石エディタよく使う気になるな

396:デフォルトの名無しさん
09/01/11 08:56:02
個人用途なので基本的にはどうでもいいんですが気になるので質問します

HTMLとかから正規表現とかでデータ抜き出して、データ保管クラスのインスタンス変数に保管します。
initialize の時点でたくさんのインスタンス変数に値を入れたいんですが、

def initialize(params, data)
@a = params[:a]
@b = params[:b]
@c, @d, @e = parse_in_init(data)
end



def initialize(params, data)
@a = params[:a]
@b = params[:b]
make_c_d_e(data)
end
def make_c_d_e(data)
@c = someprocess1(data)
@d = someprocess2(data)
@e = someprocess3(data)
end

って、どっちが見通しいいもんでしょう?
ちょっと面倒でも明示的に代入の形を見せる前者のほうが初期化プロセスっぽく見えて好ましい?

397:デフォルトの名無しさん
09/01/11 09:03:43
>>396
YES

ただ、make_c_d_e みたいなそれっぽいのが initialize の直後に定義されてれば
「あーinitializeの続きかー」と思って読むから別に気にはしない
Util.parsehtml とかどっか遠いとこに定義されてるクラスメソッドがinitializeで呼ばれてるとやる気なくす

398:デフォルトの名無しさん
09/01/11 09:38:12
def initialize(params, data)
@params = params
@data = parse_in_init(data)
end


399:デフォルトの名無しさん
09/01/11 09:43:49
>>398
なにそのユーザー丸投げルーチン

いちいちハッシュの引数で参照するのがめんどいまたは間違いやすいからインスタンス変数にしてんじゃねの

400:デフォルトの名無しさん
09/01/11 09:45:50
>>399
@params を書き込み可能にしておけば外部からデータ追加するのも楽々だぜ?

401:デフォルトの名無しさん
09/01/11 10:09:51
>>400
外部からデータを追加する必要があって、なおかつその方法しか考えられないようなときなら一理あるけど
そうでなければ、ここでハッシュを使うのは問題が大きすぎる

402:デフォルトの名無しさん
09/01/11 10:15:06
Javascriptだと
a={'hoge': huga, 'hage': fuga};
a.hoge
a.hage
にアクセス出来ていいんだよね


403:デフォルトの名無しさん
09/01/11 10:17:30
Ruby でもやろうと思えば出来るっしょ

404:デフォルトの名無しさん
09/01/11 10:17:39
アクセサ作ればいい
めんどくさいけど

405:デフォルトの名無しさん
09/01/11 10:24:49
StructA = Struct.new(:hoge, :hage)
a = StructA.new('huga', 'huga')
p a.hoge
p a[:hoge]
p a[0]

"huga"
"huga"
"huga"
オーイエー

>>402
どっかのgemにそんなのあったな



406:デフォルトの名無しさん
09/01/11 10:44:53
来たなStruct厨
総員迎撃準備

407:デフォルトの名無しさん
09/01/11 10:51:36
Structって嫌われてんの?

408:デフォルトの名無しさん
09/01/11 11:01:58
Struct.newにJSONぶっこめる?

409:デフォルトの名無しさん
09/01/11 11:09:18
>>407
他言語から来た人がArrayやHashを使い込むことなく安易に使うものの代表だから、嫌がられてはいるね
まずはArrayとHashを使い倒してからにして欲しいなと思う所存

>>408
分けてくれ

410:デフォルトの名無しさん
09/01/11 11:38:19
>>395
通るぞ?@Solaris10

411:デフォルトの名無しさん
09/01/11 11:39:19
URLリンク(www.ruby-lang.org)
ここの検索こわれてるみたいなんだけどいつ治りますか

412:デフォルトの名無しさん
09/01/11 11:41:36
>>410
動物は一度鎖に繋がれてしまうと鎖が杭から外れていても
逃げられないと思い込んでしまうものなのです

413:デフォルトの名無しさん
09/01/11 11:42:25
>>410
それは日本語パッチ当たってるんじゃね

てか、「お前らが使ってるのは vi じゃなくて vi クローンのどれかまたは vim だろ」というツッコミを
誰かがしないと終わらんな

414:デフォルトの名無しさん
09/01/11 12:25:43
>>413
OS標準。つか、Solarisは遠い昔から、日本語localeが入ってりゃちゃんと日本語使える。(viに限らず。そのせいで痛い目にあうこともまれにあるが)

415:デフォルトの名無しさん
09/01/11 13:15:48
emacs入ってない環境はたくさんあるけど、viが無い環境は稀。
まあ開発環境は何でも好きなの自分で入れろよと思うけどな。

416:デフォルトの名無しさん
09/01/11 14:49:23
だからメモ帳最強って何度言わせるんだよ!!

417:デフォルトの名無しさん
09/01/11 14:55:18
Windows環境でJmEditorとRDEとNotepad++を使い分ける俺に隙はなかった

418:デフォルトの名無しさん
09/01/11 15:08:19
>>415のようなことを稀に聞くが、vi でファイル編集できない人間などおらん

419:デフォルトの名無しさん
09/01/11 15:21:16
Windows環境で、class Hoge(もしくは、def hoge、each do |x|)と打ってリターンをすると、
以下のように、endを付けインデントした位置にカーソルを持ってくるエディタはありますか?

class Hoge[Retrun]

  ↓

class A
 |
end

420:デフォルトの名無しさん
09/01/11 15:25:32
Meadow(or Xyzzy)を入れて自分で作れってのはなし?

421:デフォルトの名無しさん
09/01/11 15:25:41
>>419
xyzzyをカスタマイズ

422:デフォルトの名無しさん
09/01/11 15:46:14
>>420-421
自分でカスタマイズする技量がないのであきらめます

423:デフォルトの名無しさん
09/01/11 15:53:58
Solarisのviはずいぶん昔から日本語通るぞ。SunOS4は忘れたが。
ただ、Localeに縛られるので、Shift_JISのファイルなんかが来ちゃうと面倒。
LANG=とsettermでなんとかなった気もするけど、もう忘れた。

って無駄レスだな。

424:デフォルトの名無しさん
09/01/11 16:08:58
以下、Personクラスの配列membersを、名前→性の順でソートすると、名前のソートがくずれます。
くずれないようにソートするにはどうすればいいのでしょうか?

class Person
attr_reader :name, :sex
def initialize(name, sex)
@name, @sex = name, sex
end

def show
[@name, @sex]
end
end

members = []
members.push Person.new("sasaki", "male")
members.push Person.new("kato", "famale")
members.push Person.new("fukada", "male")
members.push Person.new("akai", "female")

p members.map {|p| p.show }
#=> [["sasaki", "male"], ["kato", "famale"], ["fukada", "male"], ["akai", "female"]]

p members.sort_by {|p| p.name}.sort_by {|p| p.sex}.map {|p| p.show }
#=> [["kato", "famale"], ["akai", "female"], ["fukada", "male"], ["sasaki", "male"]]
#=> 望ましい結果 [["akai", "female"], ["kato", "famale"], ["fukada", "male"], ["sasaki", "male"]]

425:デフォルトの名無しさん
09/01/11 16:12:32
members.sort_by {|p| [p.name, p.sex]}
じゃね?

426:デフォルトの名無しさん
09/01/11 16:21:48
配列の比較に関してはドキュメントが弱いんだよね

[1,2,2] < [1,2,3]
[1,1,2] < [1,2,2]
[1,4,4] < [2,1,1]

x でソートしたあとに y でもソートしたいという場合は、Rubyでは
data.sort_by{|a| [a.x, a.y]}
と書く

427:デフォルトの名無しさん
09/01/11 16:28:14
>>425
それだと、

[["akai", "female"], ["fukada", "male"], ["kato", "famale"], ["sasaki", "male"]]

となり、性のソートがくずれてしまいました。

428:デフォルトの名無しさん
09/01/11 16:55:33
>>427
どうソートしたいのか考えれ
崩れるも何も、ソートする順番の問題に過ぎない
class Person
attr_reader :name, :sex
def initialize(name, sex)
@name, @sex = name, sex
end
def show
[@name, @sex]
end
def Person.sort_sex(sex)
if sex=='male' then 1 else -1 end
end
end

members = []
members.push Person.new("sasaki", "male")
members.push Person.new("kato", "famale")
members.push Person.new("fukada", "male")
members.push Person.new("akai", "female")

members.sort_by {|p| [Person.sort_sex(p.sex), p.name]}


429:デフォルトの名無しさん
09/01/11 17:09:06
>>428
うまくいきました。
サンクス。

430:デフォルトの名無しさん
09/01/11 18:13:53
URLリンク(diaspar.jp)

431:デフォルトの名無しさん
09/01/11 19:37:19
Hpricot::Elem.new(Hpricot::STag.new('form'))
をノコギリで書き換えようと思い
Nokogiri::XML::Node.new('form')としたら
ArgumentError: wrong number of arguments (1 for 2)
のエラーが出ました。
RDocには,new(name)、と引数は一つなのですが,どうしてでしょう。このnameはStringで与えてもだめ?


432:デフォルトの名無しさん
09/01/11 19:53:44
>>431
URLリンク(nokogiri.rubyforge.org)
第2引数はNokogiri::XML::Documentっぽい
ドキュメントが間違ってるんだろうな

433:デフォルトの名無しさん
09/01/11 22:53:05
>>419
Aptanaとか、EclipseベースのIDEならいけるんじゃないかな。

434:デフォルトの名無しさん
09/01/11 23:17:19
>>419
どうせEmacs使わんだろうけどコメントしとく

emacsのruby-electric-modeだと
defスペース
と打った時点でendが補完される

その後 ruby-mode の ruby-reindent-then-newline-and-indent を使って改行すればインデントも同時にされる

この程度ならEmacsユーザならごく当たり前のこと
というかRuby用の動作があるエディタならみんな似たようなことできるでしょ?

435:デフォルトの名無しさん
09/01/12 00:38:32
>>419
Vim の場合

runtime/ftplugin/ruby.vim
runtime/indent/ruby.vim
を調べてみたけど、そういうのなかった。

%HOME%/vimfiles/ftplugin/ruby.vim か
$HOME/.vim/ftplugin/ruby.vim に、
以下を入れておけば、OK

inoreab <buffer> module module<cr>end<up><end>
inoreab <buffer> class class<cr>end<up><end>
inoreab <buffer> def def<cr>end<up><end>
inoreab <buffer> do do<cr>end<up><end>
inoreab <buffer> case case<cr>end<up><end>
inoreab <buffer> begin begin<cr>end<up><end>

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


437:デフォルトの名無しさん
09/01/12 01:14:36
hash = @hash.dup()

438:デフォルトの名無しさん
09/01/12 01:45:16
>>435
endwise.vim というプラグインがある
URLリンク(www.vim.org)

439:デフォルトの名無しさん
09/01/12 03:17:20
>>419
EclipseかNetBeansでsnipet使うのはどうだろうか?
リターンでは無理だが別のキーで、コードの展開はできるぞ

440:デフォルトの名無しさん
09/01/12 04:15:34
>>436
hash.merge!(@hash)

441:デフォルトの名無しさん
09/01/12 07:19:55
>>436
それが一番短い部類
「○○というキーを持つペアを [k, v] の配列で返す」みたいなメソッドって標準には無いんだよね

hash = Hash[@hash.find{|k, v| [:a, :b, :c].include?(k)}]


442:デフォルトの名無しさん
09/01/12 07:22:22
書いててなんか短いなとは思ったんだ

hash = Hash[*@hash.find{|k, v| [:a, :b, :c].include?(k)}.flatten]

うーん

443:デフォルトの名無しさん
09/01/12 07:31:20
hash という変数名は全てのオブジェクトに存在する hash っていうメソッド名と被るから、
特に拘りがあるのでなければ避けておいたほうが吉


プログラム(1行のみ):

p hash

結果:

22412530


適当なハッシュの変数名は h が人気
h と書かれていれば、ほぼ全員がハッシュかなと推測してくれる

444:デフォルトの名無しさん
09/01/12 09:09:34
遅延評価はあるから
バックくおーとみたいなのはできるかもしれない

445:デフォルトの名無しさん
09/01/12 10:04:50
ActiveRecordでsqlite3のDEFAULT CURRENT_DATEに
相当するのは何?
今,record.date = Date::todayみたいにいちいちやってるのだけど,
なんだか,もっとスマートな方法がある気がするので,質問

446:デフォルトの名無しさん
09/01/12 11:02:22
質問です。
スキルアップのためにRubyでビジネス向けシステムを作れという課題が出ました。
勤怠管理システムのような物を作ろうかなと考えています。
私の言語スキルはCのみでオブジェクト言語は概念しかわかりません。
Cは基本情報合格しました。
とりあえずRuby1.8をインストールしようとしましたが失敗しました。
(コンソール画面から先に進めません)

こんな初心者にお勧めのRuby書籍を教えてください。
前述の通り、インストールから失敗してしまいましたので
インストール方法も解説している物が欲しいです。
最終的に簡単なシステムを作らなければいけないので
入門系と実践系の物をお勧めいただければと思います。
どうかよろしくお願いします。

447:デフォルトの名無しさん
09/01/12 11:08:49
>>446
何をもって「失敗した」と言ってるの?
Rubyインストールしただけだったら別に開発環境が入るわけじゃないぞ。
あと使ってるOSは?

448:デフォルトの名無しさん
09/01/12 11:14:05
Ruby学習者に必要なもの(ある程度持っていると暗黙のうちに仮定されているもの)

 ・ OSへのある程度の習熟
 ・ コマンドライン操作
 ・ HTTPとウェブに関する基礎知識
 ・ データベース利用に関する基礎知識(Rails限定)
 ・ PerlかUNIX Cの教科書的な基礎知識

449:デフォルトの名無しさん
09/01/12 11:19:00
>>448
…持ってなくてもいいが、まあ、持ってないとひたすらに遠回りではあるな
歩行練習と自転車乗る練習を同時にするようなもんで、学習量と学習時間が倍くらいになる

>>446
本当にCで自分用プログラム作れるだけの技量があるか怪しいと思うんだが、コマンドライン操作はできるかい

450:デフォルトの名無しさん
09/01/12 11:22:55
できるだろ
Cができるってことはmakeとかも使えるってことなんだから

451:デフォルトの名無しさん
09/01/12 12:13:45
>私の言語スキルはCのみでオブジェクト言語は概念しかわかりません。
>Cは基本情報合格しました。
Cができるなんてどこにも書いてないぞ


452:デフォルトの名無しさん
09/01/12 12:16:51
Cが出来てRUbyで着ない香具師なんていない
初心者詐称
釣り決定

453:デフォルトの名無しさん
09/01/12 12:19:53
> こんな初心者にお勧めのRuby書籍を教えてください。
>>2

454:デフォルトの名無しさん
09/01/12 12:21:46
>>446
よろしければその会社でのあなたの給料と実質労働時間を教えてください

455:デフォルトの名無しさん
09/01/12 12:23:32
>スキルアップのためにRubyでビジネス向けシステムを作れという課題が出ました。
会社員だなんてどこにも書いてないぞ

456:デフォルトの名無しさん
09/01/12 12:26:23
インストールも出来ない初心者向きの本を勧めれば回答終了じゃないのか、これ。

457:446
09/01/12 12:35:30
早いお答えありがとうございます。
こちらの回答が遅くて申し訳ありません。

下で個別にもレスしますがCの実践的な開発経験はありません。
資格試験(基本情報)で問題として出されるレベルのプログラムを
一人で完成させる事はできます。
わかりにくいようでしたらプログラムの基礎の基礎(ループやメモリ)だけは
わかるズブの素人としてご指導頂ければ、と思います。

>>447
RailsをインストールするためにDOS画面にコマンドを打ち込んでも
NoFound〜的文章が表示されて先に進みません。
今、手元にインストールしようとしたマシンがないので
正確なエラー文はわかりません。
インストールガイドはネット上で見つけた動画を参考にしたのですが
これもインストールするパソコンにブックマークしていたので
今この場ではわかりません。

わからない事が多くてすいません。
「これが必要」という情報があれば調べてきます。

OSはWindowsVistaです。

458:デフォルトの名無しさん
09/01/12 12:36:15
オライリーの「初めてのRuby」。まじおすすめ。
Railsやるならなんだろう?

459:446
09/01/12 12:36:27
>>448
・ OSへのある程度の習熟
ある程度、がどのくらいかわからないのですがマニュアルを見て
再インストールはできました

・ コマンドライン操作
ほとんど使用したことがありません。
試験勉強のためにログオンやログオフ、プリンタの操作を数回だけ。

・ HTTPとウェブに関する基礎知識
基礎知識なら何とか…
ウェブページが表示される仕組み程度はわかります。

・ データベース利用に関する基礎知識(Rails限定)
データベースの概念やSQL文までは一通りわかります。

>>449
図々しいのですが、持っていない人間が効率的に学習できる順番など
もしありましたら教えていただけませんか…?

>コマンドライン操作
ほとんど使用したことがありません。
試験勉強のためにコマンドライン一覧のようなマニュアルを見てやった時は
とりあえずできました。

自分用プログラムを作ったことはありません。

・ PerlかUNIX Cの教科書的な基礎知識
Perl・UNIXはわかりません。
Cの教科書的なことならわかります。(解説書も持っています)


460:446
09/01/12 12:50:45
>>450
Cの知識はありますが実践経験はありません。
makeのやり方も解説を読む限りでは理解できたのですが
そこまで辿り着けませんでした…。

>>451
試験に合格できただけなのでたぶんできないと思います。

>>452
Cもできないようです…

>>453
入門・はじめて〜と付いている物が多すぎて…
一番最初に読むと良い物を教えていただけないでしょうか。
(できればインストール法が詳細に載っているとありがたい)

461:デフォルトの名無しさん
09/01/12 12:51:17
>RailsをインストールするためにDOS画面にコマンドを打ち込んでも
>NoFound〜的文章が表示されて先に進みません。
>今、手元にインストールしようとしたマシンがないので
>正確なエラー文はわかりません。

インストールしようとしたマシンが使える環境になったらまたおいで


462:446
09/01/12 12:51:32
>>454
>>455
会社員ですがプログラミング職ではありません。
ずっと経理でやってきました。
自主的に基本情報を取得したところ社長がそれを聞きつけて

「手当て出すからもっと本格的に勉強しろ。
今度経理システムの作成をソフトウェア会社に依頼するから
それまでに一通りわかるようになって開発に加われ。
依頼予定の会社はRuby使うって言ってるからRuby勉強しろ


要約するとこんな感じです。
「とりあえず実際に使える物を作ったら覚えるだろ」という事らしい。

29歳の高卒女。情報系の学歴はなし。
実質労働時間は9時間くらいかな。
今までの仕事(経理)をする時間を引いたら毎日3時間程度。
でも来週で引き継ぎ終わるから、そしたら9時間Ruby学習に充てていい。

>>456
そういう物を教えていただけるとありがたいです。

463:446
09/01/12 13:01:04
>458
ありがとうございます。
レビューなどを見ると入門より少し難しいようなのでこれを一冊と
もっと基礎的な物がないか捜してみようと思います。

464:デフォルトの名無しさん
09/01/12 13:19:44
>>462
それはチャンスって言えばチャンスだね。でも、フルタイム学習に
あてていいとなると、失敗した時のリスクも結構大きいかも。
研修参加も可能かどうか相談したほうがいい。

環境のインストールから、ということであればまずはこのへんの本でも。
URLリンク(www.amazon.co.jp)

ただし、環境のインストールについては過剰に詳しく書いてあるけど、
言語要素についてはあまりにさらっとしてるし本質的な理解には至らない
かもしれないので、これでざっと環境を作ってサンプルとか動かして
みたら、さっさと他の方法もあたったほうがいいと思う。

あと、ギブアップするなら傷が深くならないうちにお早めに。

465:デフォルトの名無しさん
09/01/12 13:33:43
>>463
だから >>453 も言ってるが >>2 を見れ

しかし、プログラミングもできないのに SI 名乗る人たちがいるのに、
>>462 のような理由でプログラミングの勉強をしろとは、
社長はなかなかの大人物。(か、ちょっと勘違いしちゃってるのか、分からんが)
先は途方も無く長いけどがんがって下さい。

466:デフォルトの名無しさん
09/01/12 14:13:30
断ったほうがいいと思う

467:デフォルトの名無しさん
09/01/12 14:16:57
良いチャンスだとは思うが、
ちゃんとした研修を受けれないなら断るのも手か。

468:デフォルトの名無しさん
09/01/12 14:28:34
>>466
だな
自社のシステムを学習者に任せるとか根本的にありえない
こっちから人出せば開発依頼費が浮くとか勘違いしてるだけに過ぎない

469:デフォルトの名無しさん
09/01/12 14:38:27
>>468
馬鹿発見
こういうのは社長がシステム会社側に余分に数百万金積んでんの

470:デフォルトの名無しさん
09/01/12 14:45:08
なにそのお妾さんシステム

471:446
09/01/12 14:47:06
いろいろアドバイスありがとうございました。
とりあえず今から都市部の大きな本屋に行って自分に合いそうな
初心者向け書籍を探してみようと思います。
あとはみなさんのアドバイス頂いた物をネット注文予定。

最後の方、個別にお礼をレスできなくてすいません。

うちは小さな会社で社長もワンマンなので残念ながら研修や断るという選択肢はありません。
社長が大昔に配送業務を外部委託したときに超ぼったくりされた苦い思い出から
外部と提携する時は必ず社員も加える事になっています。
もし私が断ったらエクセルワードくらいしか使えない経理部長がやらされそう…
一応期間的には半年くらいは貰えるようですが、厳しい道のようですので
最悪の場合は転職の覚悟もしておくことにしますw

丁寧にいろいろありがとうございました!

472:デフォルトの名無しさん
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
特定の曲だけにしたいんです


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

5504日前に更新/246 KB
担当:undef