Ruby 初心者スレッド Part 30at TECH
Ruby 初心者スレッド Part 30 - 暇つぶし2ch569:デフォルトの名無しさん
09/09/03 14:18:53
>>566
(a.身長 <=> b.身長).nonzero? or (a.体重 <=> b.体重)


570:デフォルトの名無しさん
09/09/03 14:43:53
変数に型がない言語の場合、""や0が偽じゃないことで得られる恩恵の方が多い気がするな

無効値は偽であってほしいけど、正常値を数値や文字列で返す関数などは
0や""も正常値として扱うケースが多い。なので、これらが偽だと、戻り値をそのままブール式につかえない

Perlなんかだと、0も""も偽だから、これらも正常値として返す関数の戻り値をチェックするときは、
die "エラ~" unless defined get_string()
とかやって、""のケースを除外しなくちゃならない。|| とか && も有効活用できないし

571:デフォルトの名無しさん
09/09/03 14:51:51
>>570
//演算子じゃダメなの?

572:デフォルトの名無しさん
09/09/03 14:57:24
>>569
それって身長が不一致のときにtrueが返らない?

・・・返値はselfかnilなのか、よくできてるなぁ

573:デフォルトの名無しさん
09/09/03 15:00:24
0を偽にしろと言ってるのではなくて、0が返ってきてもうれしくないよねってことでしょ

574:デフォルトの名無しさん
09/09/03 15:07:10
>>573
あぁ、そっか。骨髄反射してた。さーせん

575:デフォルトの名無しさん
09/09/03 15:18:53
["foo", "Bar", "baZ"].uppereach{|i| puts i}

FOO
BAR
BAZ

みたいなマイ繰返子って作れんの?

576:newbie
09/09/03 15:46:30
>>565
黒魔術解明!!ありがと。スッキリしたぁ。

577:デフォルトの名無しさん
09/09/03 15:46:43
def uppereach
hoge.each do |x|
yield x.upcase
end
end
みたいな?(Arrayに組み込むのってどうやるんだっけ)

578:デフォルトの名無しさん
09/09/03 15:49:30
class Array
def uppereach
self.each do |s|
yield s.upcase
end
end
end

579:デフォルトの名無しさん
09/09/03 15:50:03
newbie氏はブロックがわかってないとみた。
別に黒魔術でもなんでもない。

580:デフォルトの名無しさん
09/09/03 15:59:53
黒魔術というとevil-rubyみたいな。(よいこは検索しないように)



581:newbie
09/09/03 17:23:30
>>579
今回の場合、yieldに与える処理ってことですよね?

yield自体、今日、たのしいRubyを読んで知ったばかりなので…。
わかってないといわれれば、わかってないはず。

間違ってますか?

582:デフォルトの名無しさん
09/09/03 17:44:22
yieldって文脈次第でいろんな日本語になるんだな。
イテレータの場合は何だろ。「任せる」?


583:デフォルトの名無しさん
09/09/03 18:10:50
つまり
yield (newbieさん.理解度)
てことか

584:デフォルトの名無しさん
09/09/03 18:15:22
産むかと。

585:デフォルトの名無しさん
09/09/03 18:29:16
14歳から始めるruby買ったが外した
標準命令の説明あんま書いてないし
内容が詳しくない

586:デフォルトの名無しさん
09/09/03 19:38:52
「14歳からはじめるC」なら買ったんだけど

587:デフォルトの名無しさん
09/09/03 19:50:10
標準命令って何?

588:デフォルトの名無しさん
09/09/03 19:55:19
え、なにこいつ標準命令も知らんののかwwwwバカスwwwwww
mesとかfontとかboxfとかくらい使えるようにしとけwwwwwwww

HSPの

589:デフォルトの名無しさん
09/09/03 20:01:00
まあ言いたいことはそれなりに伝わっては来る

お勧め本以外をいきなり買っても自己責任でよろしこ

590:デフォルトの名無しさん
09/09/03 20:11:40
高っかい金出して最初のデカいRuby本を買った初心者の人に比べればどうということはない

591:デフォルトの名無しさん
09/09/03 20:17:12
オライリーファン登場

592:デフォルトの名無しさん
09/09/03 20:18:32
Rubyを始めようと思っただけのプログラミング初心者の人には荷が勝ちすぎた薀蓄本だったな

知識さえあれば面白い本なんだけどね

593:newbie
09/09/03 23:11:34
>>583
どう処理されるのか自分が知りたい(w

594:デフォルトの名無しさん
09/09/03 23:28:59
>>593
自分の努力しだいだよ。
基本的なアルゴリズムをすっぽかしてきたみたいだけど
一度自分で手を動かして実装しておくと後の理解が断然楽になる。
バブルソートとか簡単なものだけでもやっとくのがオススメ。

595:デフォルトの名無しさん
09/09/04 03:44:50
いまどき、ソートのアルゴリズムを自分で書いてるような
コーディングなんてしてたら、全面的に見直して作り直したほうがいい。

596:デフォルトの名無しさん
09/09/04 04:28:47
なんだ、まだそんなこと言ってる人がいるのか
自力でのソートの実装は並び替えをさせるために書くんじゃねえよ
書けるだけの抽象化知識と基礎的な実装力があることが重要

自作のソートのコードを利用する奴は95%までバカだが、
ソートのコードを書けないのは100%ただのバカ

597:デフォルトの名無しさん
09/09/04 05:22:19
>>569
nonezero?ってながいなあ。nz? くらいでよくない?

598:デフォルトの名無しさん
09/09/04 06:04:23
よくない

599:デフォルトの名無しさん
09/09/04 09:11:11
ブロック付きのsortってほとんど使わんよな
大抵sort_byで済む

600:デフォルトの名無しさん
09/09/04 09:51:09
>>597
本気でそう思うならredmineにfeature request

601:デフォルトの名無しさん
09/09/04 11:13:11
ソートの基準が2段階のとき
sort{|o1,o2|
if o1.a != o2.a
o1.a <=> o2.a
else
o1.b <=> o2.b
end
}
みたいに使ってるな

602:デフォルトの名無しさん
09/09/04 11:35:19
rubyの場合は、配列にして比較するんでしょ。効率の善し悪しは知らないが

603:デフォルトの名無しさん
09/09/04 11:38:50
Enumerable#sort の場合は Ruby スクリプトに降りてこないから遅いわけではないよ

604:デフォルトの名無しさん
09/09/04 11:42:04
俺もほとんど.sort_byだなあ

605:デフォルトの名無しさん
09/09/04 11:42:06
>>596
> 自作のソートのコードを利用する奴は95%までバカだが、
> ソートのコードを書けないのは100%ただのバカ
うむ

説明からソートをコードに起こせない人は時々いて、そういう人は例外なくアレ
ソートをコードにする練習はソートくらいでしかうまく鍛えられないから、
初心者のままでいいと思ってないのなら文句言わず今自分の手を動かしてやるべき

606:newbie
09/09/04 16:39:29
>>601
なるほど。配列引数便利だ!

607:デフォルトの名無しさん
09/09/04 18:37:40
>>601
> ソートの基準が2段階のとき
でも条件が単純ならば大抵sort_byですむ
ブロック付sortなんてsort_byが出来てから使ったこと無いなぁ
A=Struct.new(:a,:b)
a = [A.new(2,4),A.new(2,1),A.new(1,5),A.new(1,1)]
p a.sort_by{|o| [o.a,o.b] }


文字列中の数字を数としてソートするなんかだとどう書くんだろう?
a = %w(3a 20a 100a b9 b80 b700 a9b100 a10b100)
p a.sort_by{|e| e.scan(/\d+|\D+/).map{|e| e[/\d/] ? ['0',e.to_i] : [e]}}
こんなんでいいのかな?


608:デフォルトの名無しさん
09/09/04 18:39:12
アルゴリズムの勉強していたら夏休み終わってたんだが。

609:デフォルトの名無しさん
09/09/04 19:07:19
>>608
ユークリッドの互除法を理解しただけで夏が終わった俺よりマシだ
気にすること無いぞ

610:デフォルトの名無しさん
09/09/04 20:14:34
Ruby 1 初めてのプログラミング(arton/宇野るいも 著)を買ったらRuby1.9.1が付いて来たんだが。
具体的に不便なところ(使えないもの)を教えてもらえないだろうか?
あと、このサイト(URLリンク(www.rubylife.jp))にある、
『オプション指定をプログラム内に記述』というソース内で文字コードを指定する方法が実行できないのだが、
1.9.1では使えないということなのだろう?
誰か頼む。

611:デフォルトの名無しさん
09/09/04 20:21:33
英文テキストを送って翻訳サイトで日本語化してstdoutに文字列表示するサンプルどっかにない

612:デフォルトの名無しさん
09/09/04 21:36:47
URLリンク(www.atdot.net)


613:デフォルトの名無しさん
09/09/04 21:38:56
>>610
> あと、このサイト(URLリンク(www.rubylife.jp))にある、
> 『オプション指定をプログラム内に記述』というソース内で文字コードを指定する方法が実行できないのだが、
> 1.9.1では使えないということなのだろう?
使えるよ。具体的にどう書いてどうなった?

614:デフォルトの名無しさん
09/09/04 22:07:07
使えないだろ。嘘言うな

615:デフォルトの名無しさん
09/09/04 22:12:13
>>612
すげ~。ありがとう。

いい加減CGIも勉強した方がいいのかな。
あとまだ10年くらいは通用する技術なんだろうか。

616:デフォルトの名無しさん
09/09/04 22:16:09
誰かruby-1.8.6-p383をgcc4.4.0のmingwでビルドしてない?
make testしたらエラー出るんだけど。

not ok float 1 -- ./sample/test.rb:1172
not ok float 2 -- ./sample/test.rb:1173
not ok float 3 -- ./sample/test.rb:1174

って感じでエラー。

617:デフォルトの名無しさん
09/09/04 22:21:21
>>615
CGIもできないヤツがHTTPでなにかできるとは思えないから
通用云々よりまずできるようにしとけ

618:デフォルトの名無しさん
09/09/04 23:37:02
PerlのURI::Fetchに相当するような、CacheつきWebクライアントはないでしょうか?

619:デフォルトの名無しさん
09/09/04 23:58:40
vim-rubyをインストールしたのですが、vim-ruby-install.rbのセットアップが上手くいきません。

$ gem install vim-ruby
>WARNING: Installing to ~/.gem since /usr/lib/ruby/gems/1.8 and /usr/bin aren't both writable.
>WARNIG: You don't have /home/****/.gem/ruby/1.8/bin in your PATH,
> gem executables will not run.
>Successfully installed vim-ruby-2007.05.07
>1 gem installed

$ sudo vim-ruby-install.rb
>Can't find source directory.

上のように出力されてvim-rubyのセットアップができません。
気になるのが、/usr/bin/vim-ruby-install.rbファイルは存在するのに/usr/lib/ruby/gems/1.8/gemsディレクトリにvim-rubyが無いのです。(gemからインストールした他のgemパッケージは全てここにある)
しかしgem listコマンドを叩くと他のgemパッケージとともにvim-rubyが出力される。
何か分かる方がいましたら教えてください。よろしくお願いします。

620:デフォルトの名無しさん
09/09/05 00:11:12
>>615 >>617
ajax で javascript が開発の中心になっても CGI は細々と生き残るだろう
ただし HTML は javascript の単なる loader になり
CGI はバックエンドとしての RDB - XML translator になり下がる

621:デフォルトの名無しさん
09/09/05 00:14:18
>>615
CGIっつーよりwebAPIだよ

622:デフォルトの名無しさん
09/09/05 00:14:33
ぽかーん。

623:デフォルトの名無しさん
09/09/05 00:27:34
>>620-621
わかってないならレスしなくていいよ・・・

624:デフォルトの名無しさん
09/09/05 01:09:33
pythonのようにコンソール上でコマンド1つ1つ実行させて
動作を確認させることはできないのですか?

625:デフォルトの名無しさん
09/09/05 01:12:26
つirb

626:デフォルトの名無しさん
09/09/05 04:24:09
RubyでCGI(笑)

627:デフォルトの名無しさん
09/09/05 05:26:51
>>619
眠いから論理的に読んでないが、
gem は sudo したとき(/usr に書き込み権限があるとき)と
一般ユーザーで使用したとき(/usr に書き込み権限がないとき)とで使用するディレクトリが違う
完全自動で /usr/bin にインストールして欲しいなら最初から sudo gem install しろ
gem install すると gem は $HOME/.gem/ruby/1.8 とかに入る

昔は全員が sudo しまくってたんだが、最近は sudo しないインストール方法が市民権を得ている
いまだに Rakefile で sudo ベタ書きしてるライブラリがあるがとっとと死んでくれてよい

628:デフォルトの名無しさん
09/09/05 06:16:17
>>619
何が起きたのか書いてあるじゃん

629:デフォルトの名無しさん
09/09/05 06:17:49
へ?なんで?意味がわからない。

630:610
09/09/05 06:37:13
>>613
そのサイトの該当部分は、正確には『Ruby入門 >日本語と文字コード >オプション指定をプログラム内に記述』だった。
すまん、言葉が足りんかった。
プログラムだが、これ↓を実行すると、
#! ruby -Ku
print("KCODE=", $KCODE);
こう↓なる。
test.rb:2: warning: variable $KCODE is no longer effective
KCODE=

631:デフォルトの名無しさん
09/09/05 06:55:01
いやそれはメッセージがそのまんまだが

っていうかこれの経緯の解説が無いならその本投げ捨てろ
$KCODE が動作するのは 1.8 までで、1.9 からは別な方法で指定する

632:デフォルトの名無しさん
09/09/05 07:06:23
>>630
Ruby M17Nの設計と実装
URLリンク(jp.rubyist.net)

633:デフォルトの名無しさん
09/09/05 07:18:33
こういう場合大抵その本に罪はないw

634:610
09/09/05 08:48:43
>>631-632
答えてくれてありがとう。
632のリンク先は自分が勉強不足なせいで何言ってるか半分も理解できなかったがw
本にはマジックコメントを使うと書いてあったんだが、ネットで調べてみたら別の事が書いてあったんで混乱したんだ。

やっぱり別の本買えばよかった(´;ω;`)

635:デフォルトの名無しさん
09/09/05 09:29:21
>>632はまだ理解できなくても問題ない
これは Ruby1.8 をある程度修めてて
なおかつエンコーディングの日常的知識があることを前提としている一次文書だ

Ruby 1.9.1 で初めてプログラミング言語に触れる人だとか
文字エンコーディングってナンデスカという人だとか
そういう人向けの文書ではない

そういう人向けの解説はこれをもとに出てくる…はずなんだが、ばあさんやまだかいのう

636:デフォルトの名無しさん
09/09/05 09:29:45
>>634
Yes you do.

URLリンク(www.amazon.co.jp)
URLリンク(www.amazon.co.jp)

637:デフォルトの名無しさん
09/09/05 11:19:17
>>615
CGIというか、HTMLを使った基本的なWebアプリが作れるようになれば便利
あと10年ぐらいは、HTMLやHTTPが無くなることはないだろう

638:デフォルトの名無しさん
09/09/05 11:29:25
今さすがにCGIはなあ、とか思うんだけど、
で、まあwebアプリを初心者に勧めるとして何するのが(どんなライブラリ使うのが)いいんだろ。

Railsはでかいは、デプロイ面倒だわ、慣れるとすごくいいいんだけど、初心者がいきなりやるには…。

Sinatra辺りだろうか?

639:デフォルトの名無しさん
09/09/05 11:46:14
CGIが書けずにフレームワーク扱いだす新人PGって、
交通ルール知らずに車運転するようなもんじゃないだろうか

640:デフォルトの名無しさん
09/09/05 11:50:33
どこぞのフレームワークと違って
やって無駄になるような技術ではまったくないね

641:デフォルトの名無しさん
09/09/05 11:50:51
比喩は嫌いだ

642:デフォルトの名無しさん
09/09/05 11:56:56
webアプリ初心者が序盤に作ったモノはひどいデキになって当たり前なんだから
まずはライブラリなしの生CGIでいいんだよ
薄っぺらい仕様だからとっかかりにはちょうどいい

セキュリティはこの際忘れろ、ローカルでやるかbasic認証でもかけて隠しとけ
セキュリティやらフレームワークやらはCGIの基礎がわかってから考えろ

643:デフォルトの名無しさん
09/09/05 12:11:04
KENTととほほを知ったことには感謝しなければならない
>>642で納得していただろうから

644:デフォルトの名無しさん
09/09/05 12:26:40
「考えない」んだよな
そりゃそうだ、今の時点で「動作してる」のに、何を付け加える理由があろう

むしろ、安全じゃない文字の基本的テストが標準付属していて、
それを通さないとそもそも動作しないとかそういうフレームワークがあれば

645:デフォルトの名無しさん
09/09/05 17:31:11
Railsの話題なのですが、rubyに共通する話なのでこちらで聞いてみます。
スクリプトのデバッグにruby-debugを使ってみているのですが、
b(break)コマンドでブレイクポイントを表示してくれず、現在行がブレイクポイントに追加されてしまいます。

ブレイクポイントを表示するにはどうしたらよいのでしょうか?

下記を見ると、breakでブレイクポイントの表示のはずなのですが・・・???
debug - Rubyリファレンスマニュアル
URLリンク(www.ruby-lang.org)


ruby-debug 0.10.3
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
Ubuntu 9.04 (coLinux)


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch