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

533 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 17:25:24 ]
UTF8のBOMを含むStringからBOMを取り除く方法は?

534 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 17:38:35 ]
>>533
toutf8

535 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 17:41:57 ]
iirb> require 'kconv'
irb> text = File.open('test.txt'){|f| f.read}
=> "\357\273\277test\ntest\ntest\n"
irb> text.toutf8
=> "test\ntest\ntest\n"

まあ、ある意味盲点ではあるな

536 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 18:05:57 ]
盲点ってかただの副作用では
そういうのこそ、メソッドを用意すればいいのに

537 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 18:11:30 ]
>>536
nkf -w8 はBOM を除去する

538 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 18:18:58 ]
というよりは、 BOM 無し UTF-8 を出力する、だね

539 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 18:21:47 ]
BOMについては特につけることも取ることもしない、というスタンスなんだっけか

540 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 18:35:22 ]
.toutf8もNKFも、余計な変換をしそうで怖いです。
やりたいのはBOMを除くことだけで、変換とかいっさい必要ないんですが。

あと、BOMを含むかどうかの判定方法もお願いします。
今は str.unpack('H6').first == "efbbbf" としてるんですけど、どう考えても頭悪い方法です。


541 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 18:54:51 ]
BOM = "\357\273\277"
str[0,3] = "" if str[0,3] == BOM
str.sub(/\A#{BOM}/, "")

こういうのでいいんじゃない?



542 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 18:58:20 ]
str.sub!(/\A\xEF\xBB\xBF/, '')
あたりで

543 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 19:00:35 ]
Ruby 1.8.7以降だとString#start_with?ってのがあるからそれで判定しても

544 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 22:53:34 ]
自分でString#bom?とか適当なメソッドを定義すればいい
表面上スマートに見えても内部は泥臭いなんて当たり前

545 名前:530 mailto:sage [2009/04/21(火) 00:17:20 ]
>>531-532
レスありがとうございます
やってみました…が、外部プロセスの実行が終了したあとにI/Oパイプが開いている気が…
io.each_lineで読み出し中にProcess.kill(9, io.pid)しても実行時間が変わりません
仕様かな…

546 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 01:13:24 ]
>>545
io.closeするだけで良いんじゃね?

547 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 10:33:13 ]
require したファイルの一覧って取得できますか

548 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 10:42:06 ]
自己レスですが
>>547
$LOADED_FEATURES というのがあるらしい。
マニュアルは読んでみるものですね。

549 名前:464 mailto:sage [2009/04/21(火) 12:39:37 ]
riに失敗してしまうのですが、これはどのようなエラーでしょうか?
回避する方法はありませんでしょうか?

> ri String#lines
(ruby installed directory)/lib/ruby/gems/1.8/gems/rdoc-2.2.0/lib/rdoc/ri/driver.rb:532:in `lookup_ancestor': undefined method `+' for nil:NilClass (NoMethodError)
from (ruby installed directory)/lib/ruby/gems/1.8/gems/rdoc-2.2.0/lib/rdoc/ri/driver.rb:610:in `run'
from (ruby installed directory)/lib/ruby/gems/1.8/gems/rdoc-2.2.0/lib/rdoc/ri/driver.rb:605:in `loop'
from (ruby installed directory)/lib/ruby/gems/1.8/gems/rdoc-2.2.0/lib/rdoc/ri/driver.rb:605:in `run'
from (ruby installed directory)/lib/ruby/gems/1.8/gems/rdoc-2.2.0/lib/rdoc/ri/driver.rb:588:in `each'
from (ruby installed directory)/lib/ruby/gems/1.8/gems/rdoc-2.2.0/lib/rdoc/ri/driver.rb:588:in `run'
from (ruby installed directory)/lib/ruby/gems/1.8/gems/rdoc-2.2.0/lib/rdoc/ri/driver.rb:311:in `run'
from (ruby installed directory)/lib/ruby/gems/1.8/gems/rdoc-2.2.0/bin/ri:5
from (ruby installed directory)/bin/ri:19:in `load'
from (ruby installed directory)/bin/ri:19
> ri --version
ri 2.2.0
>ruby --version
ruby 1.8.7 (2008-06-20 patchlevel 22) [i386-mswin32]

550 名前:549 mailto:sage [2009/04/21(火) 12:46:51 ]
名前の464はミスです。キニシナイでくだしあ

551 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 13:06:36 ]
gemで自分でriを入れたのか。
それを消せばいいんじゃね?



552 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 21:28:24 ]
1年前のスクリプトを眺める

…ライブラリそのものをナチュラルに継承すんな、っていうか重要メソッド上書きすんな
ライブラリのオブジェクトをインスタンス変数に保持してメソッドを依頼するラッパー操作クラス作るだけで十分じゃねーか

来年には「この改造無駄だったなー」と思えるようになるのだろうか

553 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 22:58:43 ]
家庭用プログラムのテスト駆動開発とかなんかそのへんでしつもん

a というメソッドを作ってる最中に、その中の特定の処理を a' というメソッドに分けたとして、

def a
 aaaaa
 bbbbb
 ccccc
 ...

 ↓

def a'
 bbbbb
 ccccc
end
def a
 aaaaa
 a'
 .....

その a' についてのテスト項目は作るほうがいい?
それとも、 a についてのテストをちょこっと詳しくする程度で、a が完動したことをもって「隠して」おくのが普通?

554 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 23:35:11 ]
「普通」がまだ決まってない。
テストしろ、とかpublicなメソッドのテストがパスしてるんだからおkとか、
モックとかスタブとか使えば、とか。

555 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 01:07:07 ]
privateなメソッドはそもそもテストできないようなテストフレームワークもあるような?

556 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 01:11:35 ]
テストしまくり中はメソッドのアクセス制御は敢えてしないと思うんだが
ユーザーからの隠蔽だけが目的の場合(つまり大多数の場合)はふつうにめんどくさいじゃん?

557 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 01:18:51 ]
>>553
基本的には作らないが、他のメソッドからも使う(ような気がする)場合は仕様書的にspecファイルに書く
return するものがたくさんあるようなメソッドにうっかり育ててしまった場合もやっぱ書く

最初は全部書いてたんだけど、describe がメソッド 1個に対応するような使い方をしてると引数とかで正直非常にめんどい

558 名前:549 mailto:sage [2009/04/22(水) 07:43:36 ]
>>550
うは。確かにgemのrdocに入っているんですね。
gem update rdocしたらエラーでなくなった!!

でも…

> ri String#lines
Updating ri class cache with 5126 classes...
Nothing known about String#lines

うーん。こういうことって普通にあるの?

gemのrdocのriが駄目かと思ってrdoc消してみたら、

>ri String#lines
(ruby directory)/lib/ruby/site_ruby/1.8/rubygems.rb:805:in `report_
activate_error': Could not find RubyGem rdoc (>= 0) (Gem::LoadError)
from (ruby directory)/lib/ruby/site_ruby/1.8/rubygems.rb:24
3:in `activate'
from (ruby directory)/lib/ruby/site_ruby/1.8/rubygems.rb:50
:in `gem'
from (ruby directory)/bin/ri:18

orz

559 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 10:22:13 ]
インスタンス変数へのアクセスと、クラス変数へのアクセスと、ローカル変数へのアクセスを
速い順にならべるとどうなりますか。
クラス変数へのアクセスはだいぶ遅そうだとは思いますが、インスタンス変数とローカル変数へのアクセスにどのくらい違いがあるのか知りたいです。

560 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 10:27:08 ]
>>559
これが速度に影響するような用途のプログラムであるなら、Rubyで作らないほうがよい
ブロックつきメソッドとか使われてたら奇声上げてキーボード投げつけるレベル

ちなみに

     アクセス遅い                               アクセス速い
 クラス変数 > インスタンス変数 > ブロック外のローカル変数 > ブロック内のローカル変数

こんな順番だったと思うが、どっかに言及があったはず

561 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 10:38:03 ]
tips: Hash[:symbol] > Struct > Hash["string"] >>>>>(越えられない壁) >>>> OpenStruct



562 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 12:57:25 ]
PHPのuniqid() に相当する関数やライブラリはありますか。
uniqid()とはこんなやつです。
ttp://php.benscom.com/manual/ja/function.uniqid.php

563 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 13:05:03 ]
>>562
例えば、これでどう?

require "securerandom"
p SecureRandom.uuid

564 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 13:09:46 ]
テンプレに入れてもよさそうなRuby関連Googleブック検索
ruby - Google ブック検索
books.google.co.jp/books?lr=&as_brr=3&q=ruby&btnG=%E6%9B%B8%E7%B1%8D%E3%81%AE%E6%A4%9C%E7%B4%A2

565 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 13:14:49 ]
def uniqid(prefix = "", more_entropy = false)
id = "%s%x" % [prefix, Time.now.to_f*1_000_000]
id << ".%.8d" % rand(100_000_000) if more_entropy
id
end


566 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 18:23:16 ]
>>563
SecureRandom.uuidは1.8.7じゃ使えないからなぁ。


require "rubygems"
require "uuidtools"
p UUID.timestamp_create


567 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 20:21:26 ]
>>564
「赤毛のアン」が検出されるんだが・・・?

568 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 22:18:55 ]
Rubyも赤いからいいんじゃない?

569 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 08:38:48 ]
どこでいいからまからんでここで聞きます

下記のようなプレゼンの外見のテンプレートがRuby界隈では最近流行っているのですが、
このプレゼンはどのようなツールもしくは、テンプレートで作られているのでしょうか?
Sinatraで鼻歌まじりのWeb開発
www.slideshare.net/dara/sinatraweb

570 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 09:47:29 ]
そんな「Ruby界隈」は知らない。

571 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 09:55:18 ]
>>570
気を悪くしたらすいません。
なかなか見やすいと感じたので気になっているのです。



572 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 09:59:30 ]
>>571
気を悪くしたんじゃなくて、それが流行ってるのは「Ruby界隈」と言えるほど広い世界でもないし中心に近くもないだろ、と。

で、その辺の人たちはKeynote使ってるんじゃないの。

573 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 10:17:56 ]
もしかして、「高橋メソッド」のことを言ってるとか?

574 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 11:58:51 ]
>>569
このプレゼンはおもしろかった。

このなかで Rails は「ちょっとしたことをやるには大げさ」とあるが、
自分は Java → Ruby ときたけど、Java の web フレームワークに比べれば
Rails はずっと軽くて楽だと感じる。

この sinatra というのは、流行っているんですか?

575 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 12:08:02 ]
最近名前聞くねぇ。
使ったことないというか、そっち方面は全然手がけないんだが。

576 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 12:23:36 ]
Winでファイルのアーカイブフラグが立っているかを判定したり
フラグをセットしたりするのってどうやるの?

577 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 12:49:38 ]
>>576
File::Stat に見当たらないということはサポートされてないのかなあ
自分には Win32API の GetFileAttribute/SetFileAttribute を呼ぶくらいしか思いつかない


578 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 13:25:25 ]
標準では無いよ
gemのWindowsファイルシステム操作ライブラリで見た覚えがあるので適当なの使え

579 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 14:43:45 ]
win32-fileにあったと思う


580 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 16:05:39 ]
opensslライブラリのマニュアルを読んでいるんですけど
www.ruby-lang.org/ja/man/html/OpenSSL_Cipher_Cipher.html
pkcs5_keyivgen('str') で生成したキーを取り出すことってできないんでしょうか。

581 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 17:29:42 ]
rubyscript2exeが動かなくなってしまいました。非常に困っています。
何か解決策はありませんでしょうか?

> rubyscript2exe test.rb
Tracing test ...
Gathering files...
c:/DOCUME~1/unkoman/LOCALS~1/Temp/tar2rubyscript.d.5684.1/rubyscript2exe/require2lib.rb:60:in `gatherlibs':
undefined method `list' for Gem::Specification:Class (NoMethodError)
from c:/DOCUME~1/unkoman/LOCALS~1/Temp/tar2rubyscript.d.5684.1/rubyscript2exe/require2lib.rb:30
from test.rb:1
hellow
Couldn't execute this command (rc=256):
d:\software\ruby\bin\ruby -r 'enumerator.so' -r 'rubygems/rubygems_version.rb' -r 'rubygems/defaults.rb'
-r 'thread.so' -r 'thread.rb' -r 'etc.so' -r 'rbconfig.rb' -r 'rubygems/exceptions.rb' -r 'rubygems/requirement.rb'
-r 'rubygems/version.rb' -r 'rubygems/dependency.rb' -r 'rubygems/gem_path_searcher.rb' -r 'rubygems/user_interaction.rb'
-r 'rubygems/platform.rb' -r 'rubygems/specification.rb' -r 'rubygems/source_index.rb' -r 'rubygems/builder.rb'
-r 'stringio.so' -r 'yaml/error.rb' -r 'syck.so' -r 'yaml/ypath.rb' -r 'yaml/basenode.rb' -r 'yaml/syck.rb' -r 'yaml/tag.rb'
-r 'yaml/stream.rb' -r 'yaml/constants.rb' -r 'rational.rb' -r 'date/format.rb' -r 'date.rb' -r 'yaml/rubytypes.rb'
-r 'yaml/types.rb' -r 'yaml.rb' -r 'Win32API.so' -r 'rubygems/config_file.rb' -r 'rubygems/custom_require.rb' -r 'fileutils.rb'
-r 'rubygems.rb' -r 'ubygems.rb' -I 'c:/DOCUME~1/unkoman/LOCALS~1/Temp/tar2rubyscript.d.5684.1/rubyscript2exe'
-I 'c:/DOCUME~1/unkoman/LOCALS~1/Temp/tar2rubyscript.d.5684.1'
-I 'd:/software/ruby/lib/ruby/gems/1.8/gems/rubyscript2exe-0.5.3/bin'
-I 'd:/software/ruby/lib/ruby/gems/1.8/gems/rubyscript2exe-0.5.3/lib'



582 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 17:30:30 ]
-I 'd:/software/ruby/lib/ruby/site_ruby/1.8' -I 'd:/software/ruby/lib/ruby/site_ruby/1.8/i386-msvcrt'
-I 'd:/software/ruby/lib/ruby/site_ruby' -I 'd:/software/ruby/lib/ruby/vendor_ruby/1.8'
-I 'd:/software/ruby/lib/ruby/vendor_ruby/1.8/i386-msvcrt' -I 'd:/software/ruby/lib/ruby/vendor_ruby'
-I 'd:/software/ruby/lib/ruby/1.8' -I 'd:/software/ruby/lib/ruby/1.8/i386-mswin32'
-I '.' -I 'd:/home/test/ruby/' -I 'c:/DOCUME~1/unkoman/LOCALS~1/Temp/tar2rubyscript.d.5684.1/rubyscript2exe'
-I 'c:/DOCUME~1/unkoman/LOCALS~1/Temp/tar2rubyscript.d.5684.1/rubyscript2exe/lib' -I 'c:/DOCUME~1/unkoman/LOCALS~1/Temp/tar2rubyscript.d.5684.1/rubyscript2exe'
-I 'c:/DOCUME~1/unkoman/LOCALS~1/Temp/tar2rubyscript.d.5684.1/rubyscript2exe/lib' -r 'c:/DOCUME~1/unkoman/LOCALS~1/Temp/tar2rubyscript.d.5684.1/rubyscript2exe/require2lib.rb' 'test.rb'
Stopped.

> ruby --version
ruby 1.8.7 (2008-06-20 patchlevel 22) [i386-mswin32]
> gem --version
1.3.2

583 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 18:55:38 ]
undefined method `list' for Gem::Specification:Class (NoMethodError)

Gem::Specification.listメソッドはgem 1.3.1になら存在する。
1.3.2では削除されたようだ。
gatherlibsを修正するか、gemコマンドをダウングレードする。
そしてrubyscript2exeの開発元に連絡をする。


584 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 19:26:02 ]
>>583
ありがとう。
どうやらそのようですね。RubyGems1.3.2のスレッドでも話題になってたみたいです。

RubyGems 1.3.2 - ruby-talk-google | Google グループ
groups.google.com/group/ruby-talk-google/browse_thread/thread/cc65ca7852f2d562

そこで紹介されていた、Ocraというrubyscript2exeみたいなパッカーがあったので試してみています(windowsのみですが)
larsch's ocra at master - GitHub
github.com/larsch/ocra/tree/master

Ocraそこそこコンパクトな上に、起動が早くてよさげです。
rubyscript2exeは今まで何でもうごいてたので、同じようにスクリプトが動くか検証してみます。

585 名前:デフォルトの名無しさん mailto:sage [2009/04/23(木) 19:28:40 ]
x Ocraそこそこコンパクトな上に、起動が早くてよさげです。
o Ocraそこそこコンパクトな上に、exe化したプログラムの起動が早くてよさげです

586 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 23:45:20 ]
どうして、ruby -pの後のgsubはレシーバが省略できるのですか?
いつも使ってて便利だなあと思ってるけど不思議に思ってます。

ruby -p -i.bak -e'gsub(/hoge/, "fuga")' data.out



587 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 00:17:28 ]
>>586
関数的メソッド gsub が呼ばれているだけだ(こいつは $_ をレシーバとして扱う)
String#gsub が直接ワンライナー用にいじられて呼ばれているとかそういうわけではない

588 名前:デフォルトの名無しさん [2009/04/25(土) 08:35:56 ]
class SomeClass
 @@message = "call myself Mr.#{@name}!"
 def initialize(name)
  @name = name
 end
end

このまま@@messageを参照すると、@nameが未定義の段階で定義しているため出力は"call myself Mr.!"となります。
このように後で@nameに値が入ったとき(あるいは変更されたとき)
@@messageを参照する段階で@nameを再度当てはめるとしたら、どのように書けばよいでしょうか。

589 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 08:46:15 ]
クラス変数を使わない

いやわりとマジで
特定のインスタンスの状態に左右されるクラス変数というのは奇妙
特定のインスタンスの変数を参照する大域変数というのはそれは普通インスタンス変数にする
というか、@@name を initialize の中で毎回変更してそれを @@message で参照するという形ではダメなん?

590 名前:588 mailto:sage [2009/04/25(土) 09:24:21 ]
>>589
ありがとうございます。た、たしかに言われてみたら使い方もちょっとおかしいし、
そもそもクラス変数でやってたのがよくなかったんですね・・・
試しに@@messageをメッセージを返すインスタンス"メソッド"にしてみたら問題なく置き換えられました。
なお試してみますm(_ _)m

591 名前:デフォルトの名無しさん [2009/04/25(土) 17:51:40 ]
はじめまして。困ってます;至急お願いします。
Rubyをはじめようと思うのですがどうすればいいかわかりません。
まず公式HPに行ってもどれをダウンロードすればいいかわかりません。
ソースコード以外に実行ファイルが見当たりません。
何かをインストール等する必要はないのですか?
僕はパソコンは上級者と言ってもいいほどなんでもできるのですが
ここまでわけのわからないことは初めてで焦っています。
まずルビーのプログラムを書く段階までのやり方を教えてください。




592 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 17:54:17 ]
またそんな玄人的なネタを投下してw

593 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 17:57:30 ]
初心者だから教えてくれ、という意味?

それは唯の対処療法で根本的原因の解決ではない。
頭痛がするから薬を使って誤魔化すのと同じこと。
また困った時に同じように薬使ってごまかすのかな。

使い方はそこらへんに結構転がっているよ。
自分の環境構築するのも技術の一つだよ。

594 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 18:00:46 ]
いや、上級者だといってるだろ

595 名前:デフォルトの名無しさん [2009/04/25(土) 18:09:52 ]
もしかしてメモ帳で書く、ということですか?
エディターみたいなものは公式サイトで配布していないのですか?
他の候補で見ていたC#なら公式サイトでMicrosoft Visual Basic 2008 Express Editionというのが配布されていました。
簡単に作りたかったのでRubyを選んだのですが本当に困っています。
小さいころにHSP(Hot Soup Processor)をやったことがあるのですがそこの公式サイトでもエディターやテストするためのものが公式サイトで配布されていました。
僕は今そのようなものを探しているのですが見当たりません。
そのようなものは存在しないのですか?

596 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 18:11:17 ]
>>591
> ルビーのプログラムを書く段階までのやり方

1.エディタを用意します。なんでもいいです。目的はテキストファイルを作成することです。
  例えばMS-DOSに馴染んでいれば、最悪
    copy con hello.rb
  なんてのでも大丈夫です。

2.思う通りのるびーのプログラムを書いたら、その内容をテキストファイルとして保存して下さい。

※ 上記の2は、書くまでの段階では必要ではありませんので、飛ばしても結構です。

以上です。

597 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 18:13:16 ]
>>596
俺は君が好きだな

598 名前:デフォルトの名無しさん [2009/04/25(土) 18:17:09 ]
>>593さんの書き込みをヒントに「ruby 開発環境」と検索したところ
RDEというエディターを見つけました。とりあえず解決しましたので
回答していただいたみなさまありがとうございました。

599 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 18:21:05 ]
IDEがないというのは上級者にとっては最初に焦る事態なのか
なるほど

600 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 18:27:39 ]
>>599
俺は20代だけど、周りみてると統合環境から入るやつが大半だった
学生の時分とかね


601 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 18:28:02 ]
つメモ帳 でよかったのか
PC上級者は、プログラムは専用アプリで書くものと思いがちってことなのかな
勉強になった



602 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 18:29:33 ]
時代は巡るねぇ。

603 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 18:31:58 ]
どっちかというと
下地が分からないからIDEなんだと思う。


604 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 18:41:18 ]
紙に書いてパンチカードで打ってた時代があったとか、知識や想像の範囲外なんだろうな
デバッグは全部プリントアウトとか
そんなの実際には知らんから、もしかして俺騙されてる?

605 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 18:45:09 ]
プログラム全体が一望できた時代は、デバッグは全部プリントアウトでも良かったし
それの方が効率が良かったんだよ
今はテストケース無しでは不可能だろう、そうするとIDEの力を借りる必要が出てくる。
今ではIDEが使えないのでは上級とは言えないだろう。

606 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 18:49:51 ]
用は
IDEしか使えないと
IDEを使ってる
ではぜんぜん違うということでしょ?

607 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 18:50:12 ]
「IDEが使えない」と
「IDEがないと何も出来ない」はぜんぜん違うよ。


608 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 18:50:27 ]
>>605
だが待って欲しい
それは本当に、まずルビーのプログラムを書く段階まで、に必要な事だろうか
ってあんまりこれ引っ張るのもなw

609 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 18:50:52 ]
全部を知る必要も無いって事でもある

610 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 18:56:08 ]
パンチカードの思いでをちょっと
あれは一瞬で行が入れ替えられる、それを活用したデバッグやトラインアドエラー作業はいろいろと面白い効率の高さがあった。
でもね、あれはCOBOLやFORTRANの時代のプログラムが行単位で記述されているから効率がいいんだ。
今の自由文法でそれは可能だろうか?、否ですね。
今の時代には今のやり方があるって事だ。

611 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 18:56:46 ]
先生! make や rake は IDE に入りますか?
あるいは、IDE 足り得ますか?



612 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 19:00:29 ]
>>610
ていうかプログラミングの形態ではなくて、backgroundはどうなっているか
を理解しているかどうかの話だと思ってた。

613 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 19:03:08 ]
背景を追うと、ではどこまで追う気だって話になる、どこかで打ち止めしておかないと、話が進まない。
まあ、中にはC++のように背景無しでは思わぬ罠にはまる、しかもはまっている事に気づいていないなどという恐ろしい言語もあるのですべてとは言わない。

614 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 19:04:00 ]
>>611
IntegratedなEnvironmentでないとIDEとは呼べないと思う。


615 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 19:05:03 ]
>>603
>>606-607
>>612

もちろん、言うまでもなく、そうだろ。
ネタ〜マジの間のどのへんでつきあってるのかわかりにくい流れだな、これ。

616 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 19:05:48 ]
ネタと信じたいと思いつつマジレス、あたりで。


617 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 19:06:30 ]
>>591
www.ruby-lang.org/ja/downloads/
1.Windows版(mswin32、mingw)の場合
どこかでバイナリを配ってる
2.cygwinの場合
同じくバイナリ配られてる
3.Mac OS Xの場合
MacPortで入れればOK
4.Ubuntuの場合
sudo apt-get install ruby
5.Debianの場合
su -
apt-get install ruby
exit
6.Fedoraなどの場合
su -
yum install ruby
exit
7.その他Unix系の場合
まずgccやmakeがあることを確認
ソースコードを持ってきて解凍する(やり方はさすがに知ってるだろJK)
configureのあるディレクトリにcd
./configure
make
su
make install
exit

618 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 19:23:48 ]
>>617
で、どうやってプログラム書くんですか><

って質問だったりするんだなこれが。
解決済みだし、もういいじゃんw

619 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 19:25:24 ]
>>618
初心者スレにはちょっとヤな感じ。自重しよう。

620 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 19:26:02 ]
とりあえず、大体皆が同じ認識を持ってることは分かったから
なんか嬉しい。

621 名前:デフォルトの名無しさん mailto:sage [2009/04/25(土) 21:38:18 ]
>>618
1.まず適当なテキストエディタ(Windowsなら極論すればメモ帳でもいいが
あとあとつらくなる)を準備しましょう
2.次にこのようなプログラムを書きましょう
puts "Hello, world"
3.これを拡張子rbにして保存しましょう(メモ帳の場合はすべてのファイルにしてから
適当な名前.rbと名前欄に入力)
4.次にこのようにコマンドを入力しましょう(カレントディレクトリはさっきの
プログラムの場所で、rubyへのパスはすでに通っていると仮定する)
ruby さっきのプログラム名
5.すると次のように表示されるでしょう
Hello, world
これでプログラムが実行できていることがわかります



622 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 03:58:24 ]
IDE無しのほうが分かり易いというか、IDEの使い方覚えるのが面倒。

汎用IDEといえばこのあたり?

pc12.2ch.net/test/read.cgi/tech/1218959013/
【Java】NetBeans Part4【Sun】
pc12.2ch.net/test/read.cgi/tech/1238338503/
Eclipse統合M27【Java/C/PHP/Ruby/Python/Perl】
pc12.2ch.net/test/read.cgi/tech/1239945063/
プログラマーがよく使うソフト
pc12.2ch.net/test/read.cgi/tech/1191875993/
Emacs Lisp 3
pc12.2ch.net/test/read.cgi/tech/1081517094/
統合開発環境Eclipseプラグイン開発QA


623 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 07:44:04 ]
「IDEが面倒」と思ってる人に聞きたいんだけど
Ruby開発において、それでもやっぱりIDEが役に立つ場面ってある?

何度か手を出そうとはしたんだけど、その度にやる気が出ず挫折している
「IDEのこんな部分が便利」という点があれば教えてほしい

624 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 08:41:18 ]
RadRails使っているよ。補完重すぎるし、候補で過ぎて意味ねえ
そんなにすごいいいかって言われると、ないよりマシって感じ。てか重い

625 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 08:51:16 ]
RadRailsのいいところ

・GUIでデバッグできる。
・メソッドにカーソル合わせるとドキュメント表示(今は日本語化ける)
・インテリセンスみたいな構文考慮した補完が効く(重い、候補多すぎ)
・ファイル構造をツリー表示
・rake タスクをGUIで選択実行

他なにかあるかなー。文脈非依存の単語補完とかスニペットはテキストエディタでもあるしな。
基本的には、他のIDEと一緒だと思うけど、
全体的にはまだまだ。とりあえず、IDEほしいという人向け。
Visual StudioとかCodeGear(Borland)みたいなIDE想像したら駄目。

あと、>>624も言っているけど、静的型言語のIDEみたいな補完じゃない。
インテリセンスとかで高速で補完しまくってガリガリ書いていくのを経験してきた人が使ったら、
たぶんガッカリすると思うよ。


NetBeansはプロジェクトルートに.rb置けないww ので即アンインストールした
あと、クリップボード処理がうんこ。まともにコピー、ペーストもできないIDEワロタ
めちゃくちゃ軽くて初見はすばらしかったんだけどね

626 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 08:54:36 ]
RadRails追加。というか、ほとんどEclipseの機能だと思うけど

・インクリメンタルでメソッド選択してジャンプ
・インクリメンタルにファイル検索して開く
・指定ファイルの指定行に飛ぶブックマーク機能

Aptanaの機能も入れるなら、Aptana Cloudと連携してIDEから一発デプロイとかまあ、あるけどさ
(でもどうせデプロイはCapistranoとかで書いてるでしょみなさんは)

627 名前:デフォルトの名無しさん mailto:sage [2009/04/26(日) 08:56:54 ]
NetBeansは、autotest対応はよかったな。
autotest/screenみたいに、エディタの下に色つきで表示出る

628 名前:デフォルトの名無しさん [2009/04/26(日) 22:43:18 ]
1.8.7とVistaHPという環境でコマンドラインからRubyファイルを実行すると
pメソッドもprintメソッドも日本語が文字化けします。
起動オプションで -Ks を指定しても文字化けします。
ファイルのエンコーディングはUTF-8ですがSHIFT-JISで保存し直しても文字化けします。
NetBeansでデバッグすると、printでは文字化けしませんがpだと文字化けします。
何が原因でしょうか?

629 名前:ごすけ [2009/04/26(日) 22:59:17 ]
こんばんは。質問させてください。
/*引数(自然数)n(<=1000)の入力に対して1~nの間の素数をすべて求めて、
コンソールに表示するプログラムを作成せよ。(ちなみに1は素数ではない)*/
のC言語でのプログラムの作り方を教えてください。ルートは使わず、なるべくfor文で
お願いします。

630 名前:デフォルトの名無しさん mailto:sage [2009/04/27(月) 00:56:22 ]
pc12.2ch.net/test/read.cgi/tech/1240226599/
C/C++の宿題片付けます 125代目

631 名前:デフォルトの名無しさん mailto:sage [2009/04/27(月) 09:54:55 ]
>>628
Vistaのことはわかんけど、

>NetBeansでデバッグすると、printでは文字化けしませんがpだと文字化けします。

これはしょうがないんじゃないかな。他の環境でも同じだと思う。

-- hoge.rb --
puts 'ほげ'
p 'ほげ'

-----------

$ ruby hoge.rb
ほげ
"¥343¥201¥273¥343¥201¥222"

正確に言うと、これは文字化けではなくて、文字列をバイナリ表記したもの。
p は引数をinspectした結果を表示するけど、日本語を含む文字列だとinspectするとバイナリ表記になってしまう。





632 名前:デフォルトの名無しさん mailto:sage [2009/04/27(月) 13:32:05 ]
array への追加についての質問です。
DBのいくつかのテーブル数分検索し、検索結果を配列に追加したいです。

my_array = []
for table_name in table_names
 my_array.push = my_func(table_name)
end

上記のコードだと、my_func が返す array を、my_array の要素とするので2重の配列になってしまいます。

result = my_array + my_func とすると、
配列の後ろにどんどん要素を追加することができ、これが自分のやりたいことなのですが、
Rubyのリファレンスをみると、array の + は my_array は変更せず、左辺に新しい配列を作成します。

上記の for table_name in table_names は結構なループ量になり、
かつ my_func が返すレコード件数(配列のサイズ)も大きいため、毎回
新しい配列を作って返すのは、コストが高いのではと懸念しています。

そこで下記のようなコードを書きましたが、+ でつなげるのと下記のコードと、
どちらがいいでしょうか?

my_array = []
for table_name in table_names
 result = my_func(table_name)
 result.each do |val|
  my_array.push val
 end
end

633 名前:デフォルトの名無しさん mailto:sage [2009/04/27(月) 13:58:34 ]
my_array.concat(my_func(table_name))







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

前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