Ruby初學者スレッド Part 9
■ このスレッドは過去ログ倉庫に格納されています
0001紅寶石
2006/11/21(火) 08:33:42マニュアル
http://www.ruby-lang.org/ja/man/
Ruby FAQ
http://ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
逆引きRuby
http://www.namaraii.com/rubytips/
Ruby リファレンスマニュアルの Windows HTML Help版
http://elbereth-hp.hp.infoseek.co.jp/ruby.html
Rubyリファレンスマニュアル刷新計画
http://doc.loveruby.net/
前スレ
Ruby初心者スレッドPart8
http://pc8.2ch.net/test/read.cgi/tech/1159424939/
>>2-10
0385デフォルトの名無しさん
2006/12/11(月) 19:46:27def main(argv)
raise if argv.size != 2
arg1 = argv[0]
arg2 = argv[1]
# 処理
end
if __FILE__ == $0
main(ARGV)
end
0386デフォルトの名無しさん
2006/12/11(月) 20:03:34だとRubyっぽい。
0387デフォルトの名無しさん
2006/12/11(月) 22:52:29>引数は入力毎に異なるのでプログラム中に記述できないような気がするのですが・・・
…新手のギャグ?
つprintf
つ式展開
0388342
2006/12/11(月) 22:58:59raise if ARGV.size !=2
$stderr.puts "引数なし"
exit 1
end
文法エラーとでたのですが・・・
0389デフォルトの名無しさん
2006/12/11(月) 23:14:270390342
2006/12/11(月) 23:18:000391デフォルトの名無しさん
2006/12/11(月) 23:20:080392デフォルトの名無しさん
2006/12/11(月) 23:38:040393342
2006/12/12(火) 00:14:22unhandled exception
とエラーがでています。まだおかしいみたいです
0394デフォルトの名無しさん
2006/12/12(火) 00:17:44報告されてるわけ。
0395342
2006/12/12(火) 00:19:27empty?でやってたときはrescueがいらなかったので・・・
0396デフォルトの名無しさん
2006/12/12(火) 00:29:130397デフォルトの名無しさん
2006/12/12(火) 00:37:52あと、キーにシンボルを使うとキーと値が視覚的に区別しやすい。
構文強調をサポートしたエディタではなおさら。
0398デフォルトの名無しさん
2006/12/12(火) 00:41:47それありますねー。
結構でかい。
そういや、Railsで、シンボルと値の組のハッシュを多用しますけど、
シンボル名を間違えまくる。
それでも動いたりするんですが、
これはRubyの宿命ですか?
0399デフォルトの名無しさん
2006/12/12(火) 00:46:45Put(Item => 1 + 1, Width => 3);
したいのでしょうけど、記述ミスが痛いということでせう
0400デフォルトの名無しさん
2006/12/12(火) 06:13:51で、beginつけずにrescueだけつけて、
文法エラーがでてしまいました、とか言い出しそうな悪寒
0401デフォルトの名無しさん
2006/12/12(火) 06:42:08シンボルはリテラルなのでRubyに限らず間違えても(ry
補完機能つきのエディタ使えよ。
0402デフォルトの名無しさん
2006/12/12(火) 19:36:23予約語だけじゃなくて、変数までカバーしてくれるやつ。
今はeclipseのrubyプラグインを使ってるんですが、
補完機能が貧弱なので。
0403デフォルトの名無しさん
2006/12/12(火) 19:58:03厳密な補完じゃなくていいなら、(単語レベルなら)
xyzzyのRuby-modeかな。
でもこちらもオマケという程度です。
emacsとかのRuby-modeはどうなんかね?
0404デフォルトの名無しさん
2006/12/12(火) 20:01:19これの次に読むべき本は何ですか?
RubyはWebアプリのための開発言語でしか
ないのでしょうか?
何か画期的な使い道はないんですかね?
Linuxとかでsedやawkにとって変わるものでしょうか
0405デフォルトの名無しさん
2006/12/12(火) 20:06:49ある程度決まっているなら
使うシンボルを全部モジュール定数に入れておく。
実際にハッシュにアクセスする時は定数を指定。
0406デフォルトの名無しさん
2006/12/12(火) 20:07:04Windowsで、sedやawk知らんから、ruby便利に使ってます。
Rakeやら、テキスト処理から、ネットからのデータのダウンロードまでないと、
おれは死ぬ。
0407デフォルトの名無しさん
2006/12/12(火) 20:07:14sedやawkが他に取って代わられるようなものなら、とっくに取って代わられてるわけで。
0408デフォルトの名無しさん
2006/12/12(火) 20:08:28RDEはどうかな。
予約語と変数(というか編集中バッファ内の単語)両方を候補に出す。
メソッドの補完がイマイチだけど。
0409デフォルトの名無しさん
2006/12/12(火) 20:12:18真理
まあ、RubyをPerlに代わる標準スクリプト言語として採用しようとした
Linuxディストリビューションが過去存在したが…
0410デフォルトの名無しさん
2006/12/12(火) 20:19:25ネットからのデータのダウンロードなども
できるのですか もっと勉強してみます
ソケット通信とは違うんですよね?
>>407
RubyはRubyで勉強していけばいいですね
普段はC使ってます。まだ目標が無いのですが、色々な言語を
知りたいと思いRubyにしました。フリーだしオブジェクト志向で良い材料だと
思ってます。
0411デフォルトの名無しさん
2006/12/12(火) 20:28:32今は、読み書きに以下のように書いています
ioは、openで開いたものです。
def read_word(io)
value = io.read(2)
return (value[1] << 8) + value[0]
end
packとか使うんだろうか
0412402
2006/12/12(火) 20:34:04xyzzyのruby-mode、使ってました。emacsのruby-modeは
よく知りませんが、最近バージョンが上がったんだっけ。
>>408
RDE、なぜか忘れていました。使ってみます。
海の向こうではTextmateの人気が高いようで。うらやましい。
0413デフォルトの名無しさん
2006/12/12(火) 20:34:50いまのところ日本語は普通には打てないしシェアウェアだし。
シンボル補完
一部タイプしてESC、複数候補はESC連打
対象は現在ソースにあるシンボルなので、
s = file.read
s.indESC #=> s.index()
なんてことはできない。
型が字面からわかりづらい言語で、現在の型にあわせて補完やるのは難しいだろうなー。
略語展開
たとえばeawiTABとタイプすると
each_with_index { |e,i| } # eが選択された状態
になる。
おまけながら、その場でCtrl-{すると
each_with_index do |e,i|
TAB
end
になったりする。
0414402
2006/12/12(火) 20:54:11へー、そんなのあるんですね。
> いまのところ日本語は普通には打てないしシェアウェアだし。
後者はいいけど、前者は痛いですね。でも、なんかすごい
使いやすそうなのは分かりました。どっちみち、macもってないん
ですけど。
今思い出しましたが、RubyCLRの作者の人が、かなり
使いやすそうな環境を自慢してる動画を見たことがある。
あれ何だったっけ。
0415デフォルトの名無しさん
2006/12/12(火) 20:54:58読むほうはunpack、書くほうはpackだね。
0416デフォルトの名無しさん
2006/12/12(火) 23:00:09現在ベータ版。製本されて世に出るのは2月らしい。
http://www.pragmaticprogrammer.com/titles/textmate/index.html
0417デフォルトの名無しさん
2006/12/13(水) 09:41:09■ ECBやemacs-railsなどEmacsの機能をデモンストレーションしたFlash動画
http://platypope.org/yada/emacs-demo/
■ デモで扱ったElispパッケージ群
http://platypope.org/blog/2006/9/8/i-need-a-cool-european-accent
左のツリーにtortoiseSVNみたいにsvnの状態が出るのに感動した。
最近の emacs ってすごいな。
これってmeadowでも動く?
0418デフォルトの名無しさん
2006/12/13(水) 10:29:40emacsすげえな
0419デフォルトの名無しさん
2006/12/13(水) 13:22:210420デフォルトの名無しさん
2006/12/13(水) 13:25:370421342,388
2006/12/13(水) 13:41:52raise if ARGV.size !=2
rescue Errno::TypeError
$stderr.puts "引数なし"
exit 1
end
これやるとまたエラーがでたのですが、いわれたとおりにしたのに・・・
uninitialized constant Errno::TypeError (NameError)
0422デフォルトの名無しさん
2006/12/13(水) 13:57:15STDERR.puts "usage: #{$0} arg1 arg2"
exit false
end
0423デフォルトの名無しさん
2006/12/13(水) 13:58:36引数なしのraiseであがる例外は何? それをrescueしましょう。
意味的には ArgumentError なんだろうか。コマンドライン引数って。
0424342,388
2006/12/13(水) 14:00:22これをしているので指定のエラーがでます
begin
file = open(ARGV[0], "r")
file2 = open(ARGV[1], "r")
rescue Errno::ENOENT, Errno::EACCES
print("ファイルが存在しないかアクセス権限なし\n")
exit 1
end
0425デフォルトの名無しさん
2006/12/13(水) 14:03:45raiseに引数がない場合なんだが。
例外やめて>>422のように書いてもいいよ。
0426デフォルトの名無しさん
2006/12/13(水) 23:05:26聞いたんだけれどどなたか詳細ご存知ですか?
リファレンスマニュアルをググってみたんだけど見つからなくて・・・
0427デフォルトの名無しさん
2006/12/14(木) 01:43:16引数が無いならはARGV == [ ]
だもんでARGV[0]や[1]はnil
openはString、Stringにできるモノ以外が来たから
TypeErrorをあげる
0428デフォルトの名無しさん
2006/12/14(木) 01:52:20> これやるとまたエラーがでたのですが、いわれたとおりにしたのに・・・
お前、レスをまともに読んでないだろ。
0429デフォルトの名無しさん
2006/12/14(木) 02:09:030430デフォルトの名無しさん
2006/12/14(木) 07:57:420431デフォルトの名無しさん
2006/12/14(木) 08:46:57質問のようにみえるが、実はただの独り言。
0432デフォルトの名無しさん
2006/12/14(木) 16:21:29http://d.hatena.ne.jp/naoya/20061214/1166063145
はてなの中の人のプレゼンテキスト見たのですが、
Capistrano
って何?
0433デフォルトの名無しさん
2006/12/14(木) 16:28:34naoyaグループ - naoyaの日記 - Capistrano
http://naoya.g.hatena.ne.jp/naoya/20060928/1159437059
ここにありました。
複数ホストに接続して、shellを実行するソフトなんですね
0434デフォルトの名無しさん
2006/12/14(木) 17:20:05リモートで、
鯖停止メッセージを表示させて、
新バージョンをチェックアウトして、
リンク張り替えたりして、
データベース更新して、
アプリ再起動して、
鯖停止メッセージをしまう
なんていう定型タスクを実行できる。
0435デフォルトの名無しさん
2006/12/14(木) 18:25:05<% if hoge %>
ほげ〜
<% end %>
ってやると、
(改行)
ほげ〜
(改行)
になってしまうのですが、何とかする方法はないのでしょうか?
<% if hoge %>ほげ〜<% end %>
とするしかないですか?
eRubyの?方は、
% if hoge
ほげ〜
% end
とすれば、いいのですが・・・
0436デフォルトの名無しさん
2006/12/14(木) 18:34:23ERBのtrimmodeを"%"に指定したら、
% if hoge
も認識してくれました。
ありがとうございました。
0437デフォルトの名無しさん
2006/12/14(木) 19:01:090438デフォルトの名無しさん
2006/12/14(木) 19:10:20アレはわかりやすい。
0439デフォルトの名無しさん
2006/12/15(金) 15:57:441.8.4まで正常に動いていたコードの挙動が変わってしまいました。
どうも、-Kuの時の挙動が変わってるようなのですが…。
以下のサンプルは、すべて「サル」とテキストに出力するはずのものですが、
f_utf16.txtは「サ」になってしまいます。
1.8.4にするか、1.8.5でも-Keにすると「サル」になります。
#!/usr/bin/ruby -Ku
require 'iconv'
utf8_to_utf16 = Iconv.new('UTF-16LE', 'UTF-8')
# zenkaku katakana "saru"
utf8str = [0xe3,0x82,0xb5,0xe3,0x83,0xab].pack("C*")
utf16str= utf8_to_utf16.iconv(utf8str)
formated_utf16str = format("%s",utf16str)
open("utf8.txt","wb").write(utf8str)
open("utf16.txt","wb").write(utf16str)
open("f_utf16.txt","wb").write(formated_utf16str)
0440439
2006/12/15(金) 15:58:500441デフォルトの名無しさん
2006/12/15(金) 17:20:29rubyのhttpライブラリでクッキーの扱いはどうなってるのでしょうか?
ページ上のボタンをクリックしてページを開いていくのですが、どうも
クッキーを処理できてないみたいで、ブラウザでクッキーを拒否したときと
同じページを取得してしまいます… orz
Net::を使って一から書かないとだめなのでしょうか?
0442デフォルトの名無しさん
2006/12/15(金) 18:59:37一から、というか、普通にヘッダを処理すればいいと思うよ。
0443デフォルトの名無しさん
2006/12/15(金) 19:10:21単にバグ。[ruby-dev:29952] を参照。
ruby_1_8では直ってる。ruby_1_8_5では直ってない。
0444デフォルトの名無しさん
2006/12/15(金) 19:12:46どうも漢字をうまく扱うことができません。
#! ruby -Ks や $KCODE =
を使い読んでみましたが一致しません。
ほかに行わなければならない処理があるのでしょうか?
どうぞ宜しくお願いします。
0445デフォルトの名無しさん
2006/12/15(金) 19:19:18bodyと正規表現の文字コードを合わせないとダメなんじゃん?
0446デフォルトの名無しさん
2006/12/15(金) 19:38:07正規表現文字列に対しても文字コード変換という発想がありませんでした。
試してみます。
ありがとうございました。
0447デフォルトの名無しさん
2006/12/16(土) 15:18:35Rubyのmoduleで名前空間分けるってアリなの?
↓みたいな
module Hoge
module Piyo
module Foo
module Bar
class SampleClass
end
end
end
end
end
0448デフォルトの名無しさん
2006/12/16(土) 15:46:19module M
class A
...
end
class B
...
end
end
0449デフォルトの名無しさん
2006/12/16(土) 15:51:59class SampleClass
end
end
0450デフォルトの名無しさん
2006/12/16(土) 16:05:40深すぎwww
0451デフォルトの名無しさん
2006/12/16(土) 16:58:37cygwinのターミナルで irb が、
/usr/bin/ruby: no such file to load -- ubygems (LoadError)
と吐いて動かないという話をしました。
これの、原因がわかりました。
mswin32版は、One-Click Ruby Installer for Windowsでインストールしていて、
RUBYOPT=-rubygems
を設定しているせいでした。
unset RUBYOPT
で、cygwinのirbが動いてくれました。
bashだと、.bashrcに、
alias irb='unset RUBYOPT; irb'
と書くと便利です。
そのせつは、お騒がせしました。
0452デフォルトの名無しさん
2006/12/16(土) 17:43:52Ctrl+Backspaceとかで、単語削除はできないのでしょうか?
0453デフォルトの名無しさん
2006/12/16(土) 18:03:55http://rubyde.sourceforge.net/hiki/ja/Editor.html
ここにある以外はないんじゃない?
0454デフォルトの名無しさん
2006/12/16(土) 18:04:51RDE、保存後にアンドゥーもできないし、実用には遠い・・・
0455デフォルトの名無しさん
2006/12/16(土) 18:06:40eclipseの使い方知らないから使ってないけど。
0456デフォルトの名無しさん
2006/12/16(土) 18:12:59自分はRDE使ってるけど、使用し続けると、数時間後にリソースエラーとか何とかで固まるのと
保存後にアンドゥーができないのは確かに辛いよね。
HDDにファイルごと履歴残してないんだろうか。
0457デフォルトの名無しさん
2006/12/16(土) 18:46:530458デフォルトの名無しさん
2006/12/16(土) 18:56:42をもっと短く書きたいのですが、
inject?
>>457
なさそう・・・
0459デフォルトの名無しさん
2006/12/16(土) 18:57:23hoge.inject{ |i, j| i + j }
か。
0460デフォルトの名無しさん
2006/12/16(土) 19:23:16使いたいんだけどなー。
そんな漏れはJmEditor。TeraPad以外でシンプルないい
エディタないかな?
0461デフォルトの名無しさん
2006/12/16(土) 23:48:51文字列や正規表現のリテラルに結構困る
それが無ければなー
PeggyPad は文字間の調節が出来なくて
太字の単語が潰れる…
0462デフォルトの名無しさん
2006/12/17(日) 00:48:34自分も、PHPとかPerlとか他のスクリプトは
全部サクラエディタ使ってる。
単語の補完も出来るし、登録しとけば
パラメータヒントとかも出せるからそれなりに便利だし。
0463デフォルトの名無しさん
2006/12/17(日) 12:12:58ファイルのコピーってどうすればいいんでしょうか
テキスト系なら↓でコピーできるんですが、画像ファイルは途中で途切れてしまいます
def copy(inf,ouf)
dat = File.open(inf , "r") {|fr| dat = fr.read }
File.open(ouf , "w" ) {|fw| fw.write dat }
end
0464デフォルトの名無しさん
2006/12/17(日) 12:25:10def copy(inf,ouf)
File.open(ouf , "wb") {|fw| fw.write File.open(inf , "rb"){|fr| fr.read } }
end
でも、File.copy(from, to) 使っても同じようなことができるよね。
0465デフォルトの名無しさん
2006/12/17(日) 13:15:17バイナリモードで無事成功しました。
今までFile.copy(from, to)がなぜかエラーだったんで自作してたんですが
さっきrequire 'ftools'が必要な事に気づきました。
0466デフォルトの名無しさん
2006/12/17(日) 15:39:380467デフォルトの名無しさん
2006/12/17(日) 18:14:180468デフォルトの名無しさん
2006/12/17(日) 22:18:430469デフォルトの名無しさん
2006/12/18(月) 10:52:12* Rubyユーザは少数派である
* 大衆はRubyを(いろんな理由で)受け入れられない
* 現在、Rubyを受け入れられるのは「選ばれた人々」である
* つまり、彼らはある意味「選民」である
* しかし、選民意識をあまり吹かせると、ますます大衆から受け入れられない
* 結果としてますます選民になる(悪循環の予想)
0470デフォルトの名無しさん
2006/12/18(月) 12:00:240471デフォルトの名無しさん
2006/12/18(月) 12:17:35あなたのレスはRubyコミュニティーをみごとに象徴したすばらしいレスです。
0472デフォルトの名無しさん
2006/12/18(月) 12:24:22プログラムを書いたことのない初心者はお断り。
0473デフォルトの名無しさん
2006/12/18(月) 12:26:50偉そうなんだよねえ。
0474デフォルトの名無しさん
2006/12/18(月) 12:28:190475デフォルトの名無しさん
2006/12/18(月) 12:30:15なんで?
0476デフォルトの名無しさん
2006/12/18(月) 12:32:560477デフォルトの名無しさん
2006/12/18(月) 12:45:550478デフォルトの名無しさん
2006/12/18(月) 12:46:55* つまり、彼らはある意味「選民」である
* しかし、選民意識をあまり吹かせると、ますます大衆から受け入れられない
* 結果としてますます選民になる(悪循環の予想)
0479デフォルトの名無しさん
2006/12/18(月) 12:49:240480デフォルトの名無しさん
2006/12/18(月) 12:49:25向いていないような気がする。
むしろRubyには、プログラミングの概念くらいは理解しているな?的な
良くも悪くもUnix思想を受けているんじゃないかな。
0481デフォルトの名無しさん
2006/12/18(月) 12:57:38Windowsしか使ったことのない初心者はお断り。
0482デフォルトの名無しさん
2006/12/18(月) 13:05:000483デフォルトの名無しさん
2006/12/18(月) 13:30:41* プログラマは少数派である
* 大衆はプログラミングを(いろんな理由で)受け入れられない
* 現在、プログラミングを受け入れられるのは「選ばれた人々」である
* つまり、彼らはある意味「選民」である
* しかし、選民意識をあまり吹かせると、ますます大衆から受け入れられない
* 結果としてますます選民になる(悪循環の予想)
スレ違いゴメス。
0484デフォルトの名無しさん
2006/12/18(月) 14:55:03勘弁してもらえないだろうか
■ このスレッドは過去ログ倉庫に格納されています