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


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

Ruby 初心者スレッド Part 34



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

367 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 19:28:38 ]
thread とか lock とかは mingw の方が信頼性があるような気がする

368 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 19:31:35 ]
>>367
GIL使ってる限り信頼性は変わらない

369 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 19:38:19 ]
OneClickInstallerはインストーラー含めて正式版が作られてる
RubyInstallerはまだインストーラー含めてrc版(ベータと正式の中間)

OneClickInstallerで入るRubyはmswin32で作られている
RubyInstallerで入るRubyはmingw32で作られている

mswin32は従来のタイプの「Windows版Ruby」でgemライブラリでは確実にバイナリがある
 古いコンパイラで作ってあるせいか、環境によってはなぜか動作が遅いことがある
 どうせアップグレード時は全消し推奨なんで面倒の少ないこっち使って慣れろという説も根強い
mingw32は今後主流になるもので最終更新日が古いgemライブラリではバイナリ自前コンパイルも
 動作速度が遅くなる報告は少ないが、gemバイナリの自前コンパイル強要はめどい
 サイトのDevelopment KitをRubyを標準インストールしたディレクトリに上書きコピーすればいいだけだが
 あと、mingw32をWindows環境のRubyの印だと認識してないスクリプトがまだあるので手直しが要ることも

370 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 19:58:39 ]
あああ、なんかわけわからないことに
mswin32 版を使う場合は ActiveScriptRuby のほうインストールしろ
OneClickInstaller 使って数年前の Ruby をわざわざいまさらインストールする必要もない

 ■ とにかく迷いたくない普通の人 … ActiveScriptRuby
面倒がない mswin32 版のみ提供、ActiveTcl を別途入れると tcl でウィンドウも描けるぞ(要Tcl言語知識)
ttp://arton.hp.infoseek.co.jp/indexj.html
1.9.1 を使いたい人は
ttp://www.artonx.org/data/asr/
の「Ruby-1.9.1-p数字 Microsoft Installter Package」を使わせてもらえ
なに、自分のとこだけ妙に処理が遅い? 宝くじ並の外れ環境だからマシン買い換えろ

 ■ トラブっても自分で手直しする根性あるから遅くなる可能性ないほうがいい … RubyInstaller
古いコンパイラ製ではない mingw32 版の提供がメイン
ttp://rubyinstaller.org/download.html
古いgemパッケージでWindows環境だとみなしてくれずにコンパイラが走って「make がない」と言われること有り
それを乗り越えるためにコンパイラ環境が入ってる「Development Kit」をインストールしておくのを推奨
ttp://wiki.github.com/oneclick/rubyinstaller/development-kit
上記解説にもあるが、RubyInstallerの標準ディレクトリ構成の場合は上書きだけでよい(設定ファイル記述不要)
7zip でないとダウンロードしたファイルを展開できないので注意
スクリプト内での条件分岐で「mingw32」をWindowsとみなさないものが稀にあるので、それは手動で書き換える必要あり

371 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:08:43 ]
長い

 ・ 初心者は ttp://www.artonx.org/data/asr/ の 1.8.7 だけ使え、トラブル起きたらここで聞け

でいいじゃん

372 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:16:28 ]
てか本来は arton.hp.infoseek.co.jp/indexj.html でいいんだよね

どうでもいいけどこのサイト meta charset と本文 HTML のエンコーディング食い違ってるぞ
見るたびに毎回エンコーディング指定やり直さないといかん

373 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:22:12 ]
先生,「1.8が許されるのは小(ry」と煽ってもいいのはいつ頃ですか

374 名前:デフォルトの名無しさん [2010/02/10(水) 20:22:56 ]
1.8.6はともかく1.8.7は数年無理。


375 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:24:29 ]
先生,JRubyが「Ruby 1.9 compatible now」になるのはいつ頃ですか



376 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 21:00:20 ]
>>369-370
とりあえず Windows で Ruby がめちゃくちゃ面倒糞いということがわかりました
ほんとうにありがとうございました

377 名前:デフォルトの名無しさん [2010/02/10(水) 21:01:13 ]
>>375
見た感じ遠い未来に見える。
kenai.com/projects/jruby/pages/Ruby1_9Support


378 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 21:02:47 ]
>>372
それは作者がUTF-8の普及だか何かのためにわざとやってるらしいよ


379 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 21:08:40 ]
>>377
そもそもなんでそんな時間かかるんだよ
何がネックになってるんだ

380 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 21:12:04 ]
>>379
Java からも読めるように作ること

Java VM 上で単独で動く ruby インタプリタを作るだけなら
たぶんもっと早くにプロジェクト完了してるんじゃないかな

381 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 21:55:57 ]
つか1.8.7って鬼車使えるの?

382 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 22:18:29 ]
黙れカス

383 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 22:19:06 ]
ごばく

384 名前:デフォルトの名無しさん [2010/02/10(水) 22:26:55 ]
>>381
gem install oniguruma

組み込みになるわけではないので制約はあるが。
oniguruma.rubyforge.org/use.xhtml

385 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 23:22:59 ]
oniguruma を使うようなひとなら mingw とか入れてるような
気がします・・・知らずに joni 使ってるひとも嫌少ないだろう・・・



386 名前:デフォルトの名無しさん [2010/02/10(水) 23:49:30 ]
>>381 ってjrubyの話なん?


387 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 03:58:52 ]
>>384
Requirements
* Oniguruma regular expression library (>= 4.x.x)

ってことは
自分でOnigurumaをコンパイルするか
バイナリをどこからともなく拾ってくる必要があるってことか

./configure
make
make install
で済む話ではあるが

388 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 22:37:00 ]
irb> p "ねこだいすき"
"\343\201\255\343\201\223\343\201\240\343\201\204\343\201\231\343\201\215"
irb> $KCODE="u"
irb> p "ねこだいすき"
"ねこだいす\343\201\215"

なんだこれ

389 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:22:03 ]
下のようなループってrubyだとどう書きますか?
for (i = rect->lx, j = rect->ly; i <= rect->hx; i++) map[i][j] = TRUE;

390 名前:デフォルトの名無しさん [2010/02/11(木) 23:24:17 ]
最近出るようになった気がする。
$ cat test.rb
# coding: utf-8
p 'ねこだいすき'

$ rvm 1.8.7-p72,1.8.7-p160,1.8.7-p174,1.8.7-p249,mput ruby -Ku test.rb
ruby-1.8.7-p72: ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin10.2.0]
"ねこだいすき"

ruby-1.8.7-p160: ruby 1.8.7 (2009-04-08 patchlevel 160) [i686-darwin10.2.0]
"ねこだいすき"

ruby-1.8.7-p174: ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin10.2.0]
"ねこだいすき"

ruby-1.8.7-p249: ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin10.2.0]
"ねこだいす¥343¥201¥215"

mput-head: ruby 1.9.2dev (2010-02-10 trunk 26632) [x86_64-darwin10.2.0]
"ねこだいすき"

391 名前:デフォルトの名無しさん [2010/02/11(木) 23:26:15 ]
>>389
jは変化してないけどいいの?
iだけならuptoでよいでしょう。


392 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:41:26 ]
>>391
ありがとうございます!

これをrubyに書き換えて勉強中でした。
ttp://racanhack.sourceforge.jp/rhdoc/coderect.html

393 名前:デフォルトの名無しさん [2010/02/11(木) 23:52:42 ]
>>388
redmine.ruby-lang.org/repositories/revision/ruby-18?rev=26103

usa, 2009年12月15日 11:50 AM

string.c (rb_str_inspect): wrong result of UTF-8 inspect because of the mistake of calculation. reported by eban via IRC.

これかな。

あれ、1.8.7-p248 がクリスマスリリースだったはずだが…


394 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:56:35 ]
Iconv::IllegalSequenceを見るのはもう飽きたお…

395 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 03:35:08 ]
何か一揆にperl5の時代に戻った気がするなw
教祖様が日本語処理ぐらい最初からまともに組み込んでてくれれば。



396 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 06:07:00 ]
iconvとnkfってどう違うの?
どう使い分けたらいいの?

397 名前:デフォルトの名無しさん [2010/02/12(金) 08:13:29 ]
nkfは
- shift_jis, euc-jp, iso-2022-jp, utf-8しか使えない。
- 改行コードの変換ができる。
- カタカナやアルファベットの全角半角変換ができる。
- base64のデコード/エンコードができる。

iconv
- いろんなコードが変換できる。

398 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 08:28:43 ]
>>372

ttp://www.artonx.org/diary/20100211.html#c01

399 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 08:33:31 ]
文字コード変換ならiconvが上で
その他機能がnkfにはあると
そういうこと?

400 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 08:51:30 ]
そもそも文字コード変換に上とか下とかあるんかいな
1.9のencodeとNKF/iconv/kconv/uconvの違いも教えてほしい

401 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 09:14:29 ]
動作が違うとかは置いとくと
対応してる文字コードが多いほうが上っていうことでしょ

String#encodeはよくわからんが
ttp://jp.rubyist.net/magazine/?0009-BundledLibraries

402 名前:デフォルトの名無しさん [2010/02/12(金) 09:17:58 ]
encodeは文字列のバイト表現を指定のものに変換したStringを作り、エンコード情報を設定。
encode!は自分自身の持つバイト列とエンコード情報を変える。
force_encodingは自分自身のエンコード情報のみ変える。バイト列はそのままで解釈が変わる。

kconvはnkfをラッピングして文字コード変換のみ、簡単にできるようにしたもの。

uconvはたしか標準じゃないよな?
euc-jp, cp932(shift_jisの亜種), utf16, ucs-4に対応している。
rubyでutf-8が扱えるようになったのはuconv作者の提案したコードがもとになってる。
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/4186


403 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 09:28:13 ]
>>400
NKFはguessができるので、現在のエンコーディングが何かわからなくても変換ができる
ただ、日本語関連(とMIME)しか認識できないしLatin-1とかの指定もできない

iconvはguessができないので、現在のエンコーディングを正確に(本当に正確に)指定しないと変換できない
そのかわり、NKFではできなかったような文字エンコーディングの値の保持解釈ができる
SHIFT_JISとCP932やEUC-JPとEUC-JP-MSを使い分けられる(可能性がある)のはiconvだけ
ただし、相手のマシンにインストールされている外部iconvのバージョンと対応に依存するのでやや面倒
iconv実装にはでっかい版と小さい版があり、外人産は小さい版だけを使うことが多いのでファッキンガッデム

1.9のEncodingはiconvを使ってる
kconvはNKFを使ってる
uconvはめんどくさいからもう使うな、使わなくても用は済むはず

404 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 09:36:07 ]
>>401
そのリンクは読んだけど総花的であんまり参考にならなかった

・M17N(1.9)/NKF/iconv/kconv/uconvで変換結果に差が出ることがあるか
・速度の違い
・推測の精度
・使い分けのシチュエーション

がよくわからんのですよ

405 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 09:38:35 ]
>>403
わかりやすい



406 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 09:44:20 ]
ってことは,事実上 iconv と NKF の二種類しか変換器は存在しないわけね
でメールみたいに入力のエンコーディングがよく解らん場合はNKF.guessをつかえと
入力のエンコーディングが固定されてる場合はiconvでおkでOK?

1.9のM17Nはguessしてくれてるんだと思ってたわ。

407 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 09:47:44 ]
> メールみたいに入力のエンコーディングが
のあとに続くのが
> よく解らん場合
なのがショックだ
あれは99パーセントくらいの確率でヘッダに書いてあるまんまだと思うのだが最近は違うんか

408 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 09:49:41 ]
メールやHTMLが文字化けするのはヘッダのエンコーディングと実際のエンコーディングが違うからなんじゃないの?

409 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 09:55:24 ]
日本人しか使わないプログラムなのならNKFでいいよ
外国の人も使うならiconv「でなければならない」
MechanizeとかではNKFを組み込んでしまった日本人がいて、その部分がえんえん障害になってる
iso-8859-xはNKFのShiftJISに誤爆することがあるんだが、そのへんの処理を考慮してない


410 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 09:59:50 ]
>>407
メールの現実を知らなさ過ぎる

411 名前:デフォルトの名無しさん [2010/02/12(金) 10:11:38 ]
1.9のencodeは青学の先生のライブラリ(transcode)じゃないの?


412 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 10:37:03 ]
>>411
ttp://jp.rubyist.net/magazine/?0025-Ruby19_m17n#l76
ttp://naruse.biz/pub/20080621%20RubyKaigi%20RubyM17N.txt
ttp://www.sw.it.aoyama.ac.jp/2008/pub/RubyKaigiM17N.html
これか

1.9のM17Nはiconvじゃなくてtranscodeみたいだ
また兄弟が増えちまった
よくわからなくなってきた

413 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 11:04:08 ]
1.9のEncodingの中の人はIconvだと思ってたIconvの例外出すやんキュピーンやん
と思ってたんだが出なかった
あれー、昔はIconvが例外出してなかったっけ、気のせいか

irb> "@".encode(::Encoding::SHIFT_JIS)
Encoding::UndefinedConversionError: "\xE2\x91\xA0" from UTF-8 to Shift_JIS
irb> "@".encode(::Encoding::CP932)
"?@"


414 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 11:08:15 ]
うちは大家族ですから^^;
おとーちゃんビシッと言ってやりな

って言うは簡単だけど結構面倒だよね…

415 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 11:54:27 ]
うっぜぇ変なもん作るなよ
rubyってiconvすら実装されてない糞言語だったのか



416 名前:デフォルトの名無しさん [2010/02/12(金) 11:58:46 ]
馬鹿発見。


417 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 12:15:08 ]
みてみて!
Ruby でクイックソート書いてみた。

def qsort(ary)
  return [] if ary.empty?

  v = ary.shift
  left, right = ary.partition{|e| e < v}
  qsort(left) + [v] + qsort(right)
end

ary.dup とかした方がいいのだろうか。
ま、いいや。

418 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 12:27:58 ]
irb> Iconv.conv('shift_jis', 'utf-8', "\302\273")
Iconv::IllegalSequence: "\302\273"
irb> Iconv.conv('cp932', 'utf-8', "\302\273")
Iconv::IllegalSequence: "\302\273"

» (&raquo; 、RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (U+00BB)、終わりギュメ)
を含むUTF-8文字列をIconvでShift_JISっぽい文字列にしたいんですが…

419 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 12:43:39 ]
>>417
受け取ったArrayを中途半端に破壊してるのは……まあ確かにまずいかも
アルゴリズム的な補足をするなら、単純かつ美しい実装ならそれでもいいけど、
実用上はピボットの取り方を工夫しないといけない

420 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 12:44:32 ]
irb1.9> "\302\273".encode('SHIFT_JIS')
Encoding::UndefinedConversionError: "\xC2\xBB" from UTF-8 to Shift_JIS

そもそもだめぽい

421 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 12:58:36 ]
Ruby M17N は transcode という独自実装
Iconvは環境依存な上にWindowsだとないから、Ruby M17N で使うことはできなかった
なお、libiconvのCP932周りのサポートが腐ってるのも致命的だとされた

> そのかわり、NKFではできなかったような文字エンコーディングの値の保持解釈ができる
> SHIFT_JISとCP932やEUC-JPとEUC-JP-MSを使い分けられる(可能性がある)のはiconvだけ

nkf もできるよ

> メールやHTMLが文字化けするのはヘッダのエンコーディングと実際のエンコーディングが違うからなんじゃないの?

そんな根本的に違う指定ってそんなにあったっけ?

422 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 13:00:01 ]
>>418
変換表に定義されてないんで、変換前に別の文字にgsubするのが正解

423 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 13:13:10 ]
>>418
422が書いているようにgsubするのもありだが
変換時の戻り値で分岐するというやり方もある
詳細は下記の "Encoding::Converter#primitive_convert" の項目参照
jp.rubyist.net/magazine/?0025-Ruby19_m17n#l76

424 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 13:26:50 ]
>>421
実際にメーラーを書いて運用してみたらいい

425 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 14:06:43 ]
kconvの "\302\273".tosjisでは"\x91\xB9"になるな
エラー出して教えてくれたほうがマシかも



426 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 17:04:09 ]
>>424
単にCP50221って話じゃないの、それだとguessは悪手なんだが

427 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 18:29:23 ]
reg2 = Regexp.new("A(.*)CD(.*)EF")
str1 = "AbbccCDasdaEF"
str1 =~ reg2

これで得られる$1と$2をループかなにかで
添字をつけて取得できないものでしょうか?

428 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 18:55:24 ]
>>427
Regexp.last_matchとか$~のこと?

429 名前:427 [2010/02/12(金) 19:21:56 ]
>>428
$~がMatchDataってオブジェクトになってるのか
ありがとう、解決しました。



430 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 19:39:54 ]
>>427
foo = reg2.match str1 とすれば、foo にその MatchData が入る

431 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 19:54:03 ]
kconvとかnkfの話はrubyと関係ねぇ…

432 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 20:14:00 ]
kconvは関係あるな
nkfは関係ないがNKFは関係あるな

433 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 21:08:09 ]
Ruby1.9で勉強していた(>>1を読んでませんでしたorz)のですが、
Railsもやってみたいということで、1.8をインストールしたいです。
ですが、Synaptic(Ubuntuのパッケージマネージャ)に1.8のフルインストールパッケージがありませんでした。
なので公式サイトにあるソースコードからインストールしようと思うのですが、
うまく1.9と共存できるのでしょうか?
宜しくお願いします。

434 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 21:26:32 ]
1.8と1.9ならおおむね問題はない
ユーザーディレクトリにインストールしても動くぞ

435 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 21:32:17 ]
ありがとうございます、今やったところ
1.9が/usr、1.8が/usr/local
にたまたまなのか入ったので問題なさそうです。
とりあえずrubyとirbコマンドは1.8で起動するようにしました。



436 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 21:35:41 ]
へえ、いつの間にか1.8なくなってたのか

437 名前:デフォルトの名無しさん [2010/02/12(金) 21:42:43 ]
参考までに、./configure するときに
1.8.7$ ./configure --prefix=$HOME --program-suffix=187 && make install
1.9.1$ ./configure --prefix=$HOME --program-suffix=19 && make install
とすると $HOME/bin/ruby187 $HOME/bin/ruby19 などが出来る。

最近はコマンド一発でruby環境を切り替えられる rvm という便利なツールもある。
(多少不安定だが)


438 名前:デフォルトの名無しさん [2010/02/12(金) 22:14:07 ]
このようなデータがある時に、重複したデータ削除したいです。
irb(main):001:0> address = Array.new
=> []
irb(main):006:0> p address
[{"name"=>"taro", "tel"=>"11111111111"}, {"name"=>"hanako", "tel"=>"22222222222"}, {"name"=>"hanako", "tel"=>"33333333333"}, {"name"=>"taro", "tel"=>"11111111111"}]

重複している {"name"=>"taro", "tel"=>"11111111111"} を削除したいです。
調べてみて uniq 使えば良いかなと思ったのですが、違うようです。
わかる方、アドバイス貰えると助かります。

439 名前:デフォルトの名無しさん [2010/02/12(金) 22:21:44 ]
uniqでいいように見えるんだけど。


440 名前:デフォルトの名無しさん [2010/02/12(金) 22:31:06 ]
>>439
失礼しました。uniq で良かったようです。

441 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 23:15:20 ]
rsenseってなんですか?

442 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 00:11:16 ]
Rubyコードを補完してくれるもの
ruby rsenseでググるといろいろ情報が見つかるよ

443 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 00:27:21 ]
>>442
ありがとうございます.メッセで飛んできて「使ってみたらおもしろいかも」って言われて気になってました.
github.com/m2ym/rsense
これですね.でもどうやって使えばいいんですか?

444 名前:デフォルトの名無しさん [2010/02/13(土) 00:47:08 ]
こいつ自体はファイルとその中での位置を与えると補完候補を返すというコマンドに
すぎないので、好みのエディタのマクロでそれを呼び出して候補を表示する部分は
自作する必要があると思う。


445 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 03:44:36 ]
>>444
ありがとうございます.Emacs使ってるんで色々みてみます.といってもなんかドキュメント少ないみたいですが;



446 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:23:42 ]
$gem install newgem
したら
ERROR: Error installing newgem:
rubigen requires thoughtbot-shoulda (>= 2.10.2, runtime)
とか出てきて
さらにthoughbot-shouldaを探しても見つからないんですが
newgemのインストールの仕方を教えてください

$ gem --version
1.3.5

$ ruby --version
ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-mswin32]

447 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:34:58 ]
gem install thoughtbot-shoulda --source=gems.github.com

448 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:36:14 ]
「or を伴う式をメソッドの引数に渡す場合は二重に括弧が必要となります。 」
ってどういう意味?


449 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:43:24 ]
そういうことはしないでくださいね、の意

450 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:43:36 ]
puts(nil or "a") だめー

puts((nil or "a")) おk

451 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:51:56 ]
>puts (nil or "a")
a

普通にいけたけど?

452 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:55:07 ]
それ括弧なし

453 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 09:57:32 ]
>>448
それ余計な文言だよな
査読者や編集者がやっぱり必要だと思う

「メソッドの引数にする場合にはorを伴う演算部分を括弧でくくって式にする必要があります」が正解

p(false or "yes!")

だと「p (false が偽だったら "yes!"」と解釈されて文法エラーになる
false or "yes!" がひとつの処理の塊だとわからせるために式として括弧で括り、
 (false or "yes!")
なおかつ、これ全体を引数として指定してるんだということをわからせるために引数としての括弧を省略せずに使う
 p()
にさっきのカッコつき式を適用して
 p((false or "yes!"))
となる

なお、>>451のように引数括弧相当の存在が明確な場合はエラーにならない
この括弧は引数の括弧ではなく式を作る括弧だ

454 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 10:13:03 ]
ありがとうございます。
もしかしてメソッド名と引数を括る括弧の間を空白で空けてはいけない?
(第一引数の式を括る括弧と解釈される?)

455 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 10:26:20 ]
メソッドの引数のカッコはメソッド名と分かれてはいけない

が、分かれた場合は「引数のカッコを省略して引数の全体(または一部)をカッコで括った」と解釈される
おおむね同じ動作をするので、実際上はみんな深く考えてない

puts("ruby") #=> "ruby" をメソッドに渡す
puts ("ruby") #=> ("ruby") の結果をメソッドに渡す




456 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 10:36:24 ]
ありがとうございました。
ロジカルシンキングではなくイマジネーションでってことですね


457 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 10:51:47 ]
いや物凄い論理的だと思うが

引数括弧を省略するのがコンセンサスになってるのはpとかputsとかごく一部だぞ
それ以外の普通のメソッドはとりあえず括弧つけとく派が多数派だ
irbとかだと読み返すこともないから適当に省略しまくってるが

458 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 10:55:08 ]
>>456
意味不明なときは感覚なものととらえてしまうけど、
しばらくRuby使ってなれてきたらロジカルなものだと理解できるようになるよ、がんがれ

459 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 11:34:23 ]
ちょっと使ってみたんだけど、この言語(というか処理系?)、は多項式時間や指数関時間な計算をブチ転がそうとすると圧倒的に遅いわね…
なによ…まったく!

460 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 12:45:56 ]
そこらへんのしっかりしたドキュメントが無いから
どうしても試行錯誤で感覚的にならざるを得ない

461 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:33:34 ]
>>460
カッコで括ったら式になるってちゃんと書いてあるだろ

462 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:35:08 ]
そんなところで試行錯誤した覚えはないなあ

463 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:42:42 ]
p(2*10) #=> 20
p (2*10) #=> 20

p(2*10)*2
NoMethodError: undefined method `*' for nil:NilClass
p (2*10)*2 #=> 40

464 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:45:38 ]
> メソッドの引数のカッコはメソッド名と分かれてはいけない
これが書いてないだろ?

465 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 13:49:36 ]
>>459
O(nlogn)の近似アルゴリズムに変えるか、Inline C 使うか、
そもそも C で書け。



466 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 17:42:27 ]
      ,―ヽ_(((((_、―
   ,/  ノ       ヽ  ~\
  /   ノ   IPA    ヽ   ~\
/   ノ           ヽ、  `ヽ
|    ノ / ̄\   / ̄~ヽ ヽ    i
|   ノ              |  ノ
\  |  <●>  <●>  (  )
 \ |      | |       i /
    |      /  ヽ       レ
   i     (●_●)      /  
    i、    ,-――-、   ・ /
    i、  <(EEEEE)> ∵/    多項式時間や指数関時間な計算が遅いのは当たり前だろ
      i、  \   ./  /
       \   ーー   ,ノ       
  ,,.....イ.ヽヽ、ー-―一ノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |

467 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 19:53:39 ]
多項式時間や指数関時間の計算をRubyでやる男の人って・・・






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

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

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