トップページ⇒tech
1001コメント310KB

Ruby 初心者スレッド Part 35

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2010/03/04(木) 11:00:57
プログラミング言語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つをすること。ここで回答を待つよりそのほうが早い。
 ・モジュール名やエラーメッセージでググる
 ・マニュアルで引っかかったクラスの記述を探す http://www.ruby-lang.org/ja/man/
 ・FAQを一応読む http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・エラーメッセージ(自力で訳さずなるべくそのままで)
 ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。

■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0002デフォルトの名無しさん2010/03/04(木) 11:02:23
【よくあるしつもん】
Q:
いちからRubyを始める初心者向けのRuby入門書は何がありますか?

A:
プログラム作成自体の初心者なら
 ・「たのしいRuby 第2版 Rubyではじめる気軽なプログラミング」
  http://www.amazon.co.jp/dp/4797336617/
文法は理解済み(orリファレンスで乗り切る既言語習得者)の場合のRuby様式を知る必携2冊目
 ・「初めてのRuby」
  http://www.amazon.co.jp/dp/4873113679/

以下は外れが少ないとされている本です。必ず立ち読みした上で自分の目的とレベルに応じて購入してください。
 ・「Rubyレシピブック 第2版 268の技」(初心者向け)
  http://www.amazon.co.jp/dp/4797340045/
 ・「プログラミングRuby 第2版 言語編」(初心者向け)
  http://www.amazon.co.jp/dp/4274066428/
 ・「Ruby Way 第2版」(脱初心者向け)
  http://www.amazon.co.jp/dp/4798115339/
 ・ 「Rubyクックブック ―エキスパートのための応用レシピ集」(脱初心者向け)
  http://www.amazon.co.jp/dp/4873113245/

以下の本は言語作者が書いた最新本ですがとりあえず初学者向けではありません。
 ・「プログラミング言語 Ruby」(言語として深く知りたい人向け)
  http://www.amazon.co.jp/dp/4873113946/
0003デフォルトの名無しさん2010/03/04(木) 11:03:38
Ruby 公式・非公式便利サイト2009

・Ruby Home Page 【公式、お役立ち度が微妙】
 http://www.ruby-lang.org/ja/
・Rubyリファレンスマニュアル 【検索機能休止中、Googleなどの併用を】
 http://www.ruby-lang.org/ja/man/
 http://www.ruby-doc.org/ 【詳しい英語版】
・HTMLヘルプ版リファレンスマニュアル配布さん 【Windowsで便利、検索も無論可能】
 http://elbereth-hp.hp.infoseek.co.jp/ruby.html
・Programming Ruby - The Pragmatic Programmer's Guide 【好評書籍の初版がネットで、ただし英語】
 http://www.ruby-doc.org/docs/ProgrammingRuby/
・Rubyist Magazine - るびま 【ライブラリ紹介などの読み物、過去のコードレビューは一読の価値あり】
 http://jp.rubyist.net/magazine/

・逆引きRuby 【やりたいことから探すWiki、最近元気ないので編集者募集】
 http://www.namaraii.com/rubytips/
・はてなキーワード > Ruby 【うっかりどっさりまとまったリンク集、説明なし】
 http://d.hatena.ne.jp/keyword/Ruby

・RubyForge 【○○をやりたい管理されたライブラリを探すならここ、英語】
 http://www.rubyforge.org/
・GitHub 【○○をやりたいコードをとにかく探すならここ、英語】
 http://github.com/

・日本Rubyの会 【最近はオフライン勉強会の寄り合い場と化しているので近くで勉強会があれば】
 http://jp.rubyist.net/
0004デフォルトの名無しさん2010/03/04(木) 11:05:14
●関連スレ
Rubyについて Part 39
http://pc12.2ch.net/test/read.cgi/tech/1265467681/
●アンチスレ
・Rubyについて(アンチ専用) Part004
http://pc12.2ch.net/test/read.cgi/tech/1249737531/
●Railsスレ
【Ruby】Ruby on Rails Part9
http://pc11.2ch.net/test/read.cgi/php/1266563593/
●Windows用スレ
・【ActiveScript】RubyをWindowsで使うスレ【GUI】
http://pc11.2ch.net/test/read.cgi/tech/1155031689/
●Ruby 1.9 系列スレ
・魁け! Ruby 1.9.X
http://pc11.2ch.net/test/read.cgi/tech/1201603546/

●前スレ
Ruby 初心者スレッド Part 34
http://pc12.2ch.net/test/read.cgi/tech/1264635554/
Ruby 初心者スレッド Part 33
http://pc12.2ch.net/test/read.cgi/tech/1259990485/
Ruby 初心者スレッド Part 32
http://pc12.2ch.net/test/read.cgi/tech/1256332692/
0005デフォルトの名無しさん2010/03/04(木) 11:08:12
バージョンに関するよくある質問

・Ruby 1.8.5
 レンタルサーバ等にいまだに残ってる非安定な古いバージョン
 1.8.6 にすらなってない理由はたぶん管理の手抜きなので怒ってよい

・Ruby 1.8.6
 過去の長期政権と数の暴力で一大勢力圏を維持中の旧安定版
 公開スクリプトはこれでも動作するべきではあるんだがそろそろ 1.8.7 に譲ってくれ

・Ruby 1.8.7
 1.9 シリーズの機能をいくつか足したハイブリッドなバージョン、初学者にこそお勧め
 1.9 系機能は 1.8.6 では動かないが「えーマジ1.8.6!? 1.8.6が許されるのは小(AA略」と煽ってよい

・Ruby 1.9.0
 不安定にして先鋭機能が超満載の開発版バージョンだったもの
 1.9.x は本来全てが開発版の呼称だったのだが、事情が変わって(ここ笑うところ)1.9.1 は安定板に

・Ruby 1.9.1
 満を持して登場の 1.9 系列安定板(本体は 1.8.6 程度には使えるということになっている)
 本体と添付ライブラリの動作は問題がないのだがgem等外部第三者ライブラリの対応が超適当特に英語圏産
 初心者を脱した人が外部ライブラリの開発コミュニティに参加してくれたりすることを期待中
0006デフォルトの名無しさん2010/03/04(木) 11:41:38
Windows で Ruby を使う初心者はとりあえず ActiveScriptRuby のほうインストールして慣れろ
OneClickInstaller 使って数年前のバグあり Ruby をわざわざいまさらインストールする必要もないし
RubyInstaller のほうは MinGW32 版なので古い gem ライブラリではバイナリが用意されない

 ■ とにかく迷いたくない普通の人 … ActiveScriptRuby
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
7zip 対応のアーカイバでないとダウンロードしたファイルを展開できないので注意
「mingw32」をWindows版とみなさないスクリプトがまだあるので、それは自力で毎回書き換える必要あり
0007デフォルトの名無しさん2010/03/04(木) 13:29:20
      ,―ヽ_(((((_、―
   ,/  ノ       ヽ  ~\
  /   ノ   IPA    ヽ   ~\
/   ノ           ヽ、  `ヽ
|    ノ / ̄\   / ̄~ヽ ヽ    i
|   ノ              |  ノ
\  |  <●>  <●>  (  )
 \ |      | |       i /
    |      /  ヽ       レ
   i     (●_●)      /  
    i、    ,-――-、   ・ /
    i、  <(EEEEE)> ∵/    >>1 乙ぴょん
      i、  \   ./  /
       \   ーー   ,ノ       
  ,,.....イ.ヽヽ、ー-―一ノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |
0008デフォルトの名無しさん2010/03/04(木) 18:32:00
RUBYOPTに指定可能なオプションの一覧はどこかにありませんか?
設定したら怒られたので
0009デフォルトの名無しさん2010/03/04(木) 18:42:06
>>8
どんなオプションを指定して怒られた?
0010デフォルトの名無しさん2010/03/04(木) 18:42:29
drvwEIKUW
0011デフォルトの名無しさん2010/03/04(木) 18:50:55
>>6
OneClickInstallerでも1.8.7や1.9.1があるけど駄目なのか?
0012デフォルトの名無しさん2010/03/04(木) 18:56:09
>OneClickInstallerでも1.8.7や1.9.1があるけど
どこ?
One-Click Installer は 1.8.6 で終了して RubyInstaller に変更されたもんだとばかり
0013デフォルトの名無しさん2010/03/04(木) 18:59:34
普通にダウンロードページにあるけど。とういうよりRubyのダウンロードサイトじゃここが見やすくて良い思うが。
http://rubyinstaller.org/download.html
0014デフォルトの名無しさん2010/03/04(木) 19:01:10
>>13
うん、で、どこ?
0015デフォルトの名無しさん2010/03/04(木) 19:01:55
ああこれがRubyInstallerなのか、公式ではOne-Click Installerってなってるな
0016デフォルトの名無しさん2010/03/04(木) 19:10:55
>>15
なってない
Ruby オフィシャルの One-Click Installer は依然として
http://rubyforge.org/frs/download.php/47082/ruby186-27_rc2.exe か
http://rubyforge.org/frs/download.php/29263/ruby186-26.exe を指してる

RubyInstaller の存在を公式として紹介してるのは英語ページだけ
http://www.ruby-lang.org/en/downloads/
0017デフォルトの名無しさん2010/03/04(木) 19:20:13
いや日本のダウンロードページhttp://www.ruby-lang.org/ja/downloads/
の各環境用バイナリのOne-Click Ruby Installer for Windowsのリンク先は
RubyInstallerになってるよねって。
0018デフォルトの名無しさん2010/03/04(木) 19:31:02
>>9
何を指定したかは問題ではありません。
指定可能なオプションを知りたいのです。
0019デフォルトの名無しさん2010/03/04(木) 19:35:32
drvwEIKUW
0020デフォルトの名無しさん2010/03/04(木) 19:54:46
今日本屋でRubyの本見てたけど沢山あったわ。これだけ書籍が出てるとは。
たのしいRuby 第2版 Rubyではじめる気軽なプログラミングって本も読んだけどあれは
初心者向けじゃないな、というより本読むのが得意な人じゃないとキツそうだ。
プログラミングの本は〇〇の絵本がやっぱり初心者には最適だと思う。
0021デフォルトの名無しさん2010/03/04(木) 19:58:28
>>20
たしかに小中学校でプログラミング教えるには
たのしいRubyは少しハードルが高いかもしれないな
0022デフォルトの名無しさん2010/03/04(木) 20:00:30
>>18
ruby --help で出てくるのはすべてを網羅していないので、man ruby
0023デフォルトの名無しさん2010/03/04(木) 20:01:30
なぜ嫌味な答えしか出来ないのか・・・
0024デフォルトの名無しさん2010/03/04(木) 20:12:05
>>20
アンク兄貴オッスオッス

初心者にとって独学はどんな本を買ったって難しいよ
逆に言えば誰か教えてくれる人がいれば多少難しい本でもどうってことはない
0025デフォルトの名無しさん2010/03/04(木) 20:15:00
>>17
なってない
依然として One-Click Installer を指している
http://rubyinstaller.org/download.html から One-Click Installer が無くなってもそのままだったら考えてもいい
0026デフォルトの名無しさん2010/03/04(木) 20:19:09
>>25
編集が追いついてないってことで勘弁してやって
リンク先にも"Legacy"って書いてあることだし
0027デフォルトの名無しさん2010/03/04(木) 20:33:02
>>22
ありがとうございました。当方Windows環境なのでman rubyできません。
てっきりman rubyに記載されていることはRubyリファレンスマニュアルで
網羅されているだろうと思っていましたがman rubyにしか記載がないものもあるのですね。
0028デフォルトの名無しさん2010/03/04(木) 20:36:59
>>26
公式的にはいきなりRC2を推すわけにはいかんということなんだろうなとか思ってる
RubyInstaller正式版が出ればOneClickInstallerの記述は消えると思う
0029デフォルトの名無しさん2010/03/04(木) 20:41:11
>>8
に関連して質問なんですけど
Rubyのコマンドラインオプションで指定できて
RUBYOPTで指定できないオプションってあるんですか?

Rubyのmanpageにもそんなことは書いてないので疑問に思いました。
0030デフォルトの名無しさん2010/03/04(木) 20:44:33
何度もレスが出てるが代表的な有効オプションはdrvwEIKUWの9種(およびこれらの長い版)だ
これ以外はrubyが切り落とすかエラーにするはず
0031デフォルトの名無しさん2010/03/04(木) 20:53:25
ハチドリ本p.410には以下のように書いてある
。
  なお、環境変数のRUBYOPTには、-W, -w, -v, -d, -I, -r, -K, -E, -T
  オプションを自由に組み合わせて指定できる。

ソースコードを除く公式ドキュメントでは見つけられなかった。
誰か捕捉plz.
0032デフォルトの名無しさん2010/03/04(木) 20:55:16
答えはすぐそこにあったのですね…

VMwarePlayerを導入してUbuntuをセットアップしRubyを追加してman rubyしたところ
-Tも入れて10種が指定可能なようです。

Note that RUBYOPT can contain only -d, -E, -I, -K, -r, -T, -U, -v, -w, -W, --debug,
--disable-FEATURE and --enable-FEATURE.
0033デフォルトの名無しさん2010/03/04(木) 21:01:02
ソース以外は知らんなー。

-n -p -a -F -i -l -0 -S -C -x などはワンライナー向けなので常時
指定された状態になっては困る。
--help とか --version とか --copyright などは「表示して終わり」
のタイプだから環境変数に設定するもんでもない。

とか理由はわからんでもないんだけどね。
0034デフォルトの名無しさん2010/03/04(木) 21:06:10
-Sとか指定できると便利じゃね?
0035デフォルトの名無しさん2010/03/04(木) 21:10:37
おまいらインタプリタとコンパイラどっちが好き?
0036デフォルトの名無しさん2010/03/04(木) 21:12:17
インテグラちゃん
0037デフォルトの名無しさん2010/03/04(木) 23:38:01
>>35
中間コードインタプリタ
0038デフォルトの名無しさん2010/03/05(金) 01:17:11
それ、Z-80の頃からあるぞ。N-BASICのPコード。
0039デフォルトの名無しさん2010/03/05(金) 01:34:14
>>984

しかも Rails をかぶせた Ruby は Ruby であって Ruby ではないからなぁ
0040382010/03/05(金) 01:52:34
誤解の無いよう、追記。
Pコードのファイルを生成する訳ではないのですね。
当時の2次記憶装置は一般的には、カセットテープだったので。

そのカセットテープのモーターの制御のリレーの接点を「微小時間測定器」で測定すると、
1回目と、2回目以降では明らかな違いがありました。
t検定する必要がないくらい。

中間コードをファイルにはき出したりしたのは、80186のCOBOLの頃かと。
これは、中間コードを実行するために、××の環境が必要とかで、
販売戦略的な意味合いが強い感じ。

嫌われ者の年寄りは、もう寝る。
0041デフォルトの名無しさん2010/03/05(金) 02:03:17
>>37の言ってる中間コードって
YARVが処理するためにパース後のASTから
生成されるバイトコードだと思われ

つまり>>37はYARVが好き==1.9が好きだってことだ
0042デフォルトの名無しさん2010/03/05(金) 02:04:37
Ruby1.9を嫌いな人なんていません

めんどくさいと思ってる人は多そうだけど
0043382010/03/05(金) 02:16:56
>>42
私も
ruby 1.9.1p376 (2009-12-07 revision 26041) [i686-linux]
を常用しています。
実行速度が、速いから。

暇なので、パズルの解法のコードなんぞを書いておりますが、
棺桶が近いので、あんまり待って居られない。
0044デフォルトの名無しさん2010/03/05(金) 02:21:00
折り返し人生のほうが短いおっさんは日付が変わったらとっとと寝ろ
0045デフォルトの名無しさん2010/03/05(金) 02:23:00
早起きかもしれないじゃないかー
0046デフォルトの名無しさん2010/03/05(金) 02:27:47
別に寿命と限ったもんじゃないよね
0047デフォルトの名無しさん2010/03/05(金) 02:29:41
夜食食ってるときに寿命以外の死亡原因の話するのやめてほしいって言うか本スレでやれ
0048デフォルトの名無しさん2010/03/05(金) 02:51:56
PコードってBASICでも利用されてたのか
なんかPascal処理系の印象が強い気がする
0049デフォルトの名無しさん2010/03/05(金) 08:17:43
ほんとに Pascal-P の中間コードなのかなぁ?
単に BASIC の内部表現ってだけだったと思うけど。

中間コードを「Pコード」と呼ぶと思い込んでるだけなんでない?
0050デフォルトの名無しさん2010/03/05(金) 10:32:07
等値についていまいちわかりません。
(等価(同値)はWikipediaを見て理解しました。)
Rubyだと以下のどれがどれなんでしょう?

1. object_id が一致
 ex. 1.equal? 1 #=> true
   1.0.equal? 1.0 #=> false
2. クラスが一致 + 値が一致
 ex. 1.0.eql? 1.0 #=> true
   1.eql? 1.0 #=> false
3. クラス不一致 + 値が一致
 ex. 1 == 1.0 #=> true
4. 比較して大小つかず
 ex. 1 <=> 1.0 #=> 0

元ネタはZDNet Japanの記事「プログラマーの力量を見極める」
ttp://japan.zdnet.com/sp/feature/07tenthings/story/0,3800082984,20409456,00.htm
です。
0051デフォルトの名無しさん2010/03/05(金) 10:50:00
>>49
BASICのほうのPコードはMS用語。pseudocodeのことらしい。
0052デフォルトの名無しさん2010/03/05(金) 10:52:06
>>50
Rubyはそのへんただのメソッドで、各々のクラスのメソッド定義で動作が自由に変わる
それぞれのクラスのそれぞれのメソッドのマニュアル読め

一般的には
euqal? は Object#equal? そのままで ObjectID の同一性を比較する
eql? は多くの場合 Object#eql? そのままで「オブジェクトのハッシュ値」の同一性を比較する
オブジェクトのハッシュ値は Object#hashで、再定義されることも多い(通常は ObjectID)
== は多くの場合クラスごとに再定義され、そのクラス固有の同一性判定(「意味上同じっぽい」かどうか)を行う

a = URI.parse("http://example.com/") と b = URI.parse("http://EXAMPLE.com/") は
object_id が違うので equal? は偽を返す

eql? は #hash の値が内部表現の配列の hash に再定義されてて、
内部配列的にはハッシュ同等ではないので真を返す
['http', 'example.com', '/'].hash == ['http', 'EXAMPLE.com', '/'].hash が偽

== はこれも再定義されてて、ホストが大文字でも小文字でも規格上は同一とみなさなければならないので
そのように細工された上で何らかの手段で比較されて真を返す

というわけで、Rubyではその手の問答は向かない
0053デフォルトの名無しさん2010/03/05(金) 11:00:57
>>50
原文を参照すると、 equality と equivalence の違いを問われているんだけど、
これ数学的な話なのかねえ。

Ruby的にはともかく、数学的には
x ※ x であり(反射律)
x ※ y であるとき y ※ x であり(対象律)
x ※ y かつ y ※ z であるとき x ※ z である(推移律)
ような関係 ※ を equivalence という。

equality はそのうち通常等号(=)で表される(相等)関係。
他の equivalence の例としては、
「整数の世界で、nで割ったときの余りの等しさ」とか、図形の
「合同」(形のみ。向きは考えない) 「相似」(加えて比率も考えない)とか。
0054デフォルトの名無しさん2010/03/05(金) 11:07:58
>>53
やっぱ原文たどったよな
これ日本語に訳した人が悪いわ
0055デフォルトの名無しさん2010/03/05(金) 11:09:39
>>52
> eql? は #hash の値が内部表現の配列の hash に再定義されてて、
> 内部配列的にはハッシュ同等ではないので
偽を返す、だな
0056デフォルトの名無しさん2010/03/05(金) 11:24:31
個々の実装による、で一蹴されるものがいくつか…
0057デフォルトの名無しさん2010/03/05(金) 11:26:32
要するにRubyでequalityの意味を問うのはナンセンスで、
equalityとequivalenceの違いがわかるというのは数学的な素養が
あるか否かを見極める質問という感じですかね。
0058デフォルトの名無しさん2010/03/05(金) 11:28:49
元の記事的には、単に計算機科学の質問をすればいいだけだと思う
あとは「ファイルコピーの関数を書いて欲しいが何か質問は?」と聞く
0059デフォルトの名無しさん2010/03/05(金) 11:37:00
原文見てきた

いわゆる等価と等値の区別がつきますか質問でしかないようだが
なんで数学とかよくわからん話になってるのん
0060デフォルトの名無しさん2010/03/05(金) 11:40:34
>>59
日本語での等価と等値がおおむね一緒だからだよ
0061デフォルトの名無しさん2010/03/05(金) 13:14:07
原文が identity と equality なら簡単な話だったんだがな。
0062デフォルトの名無しさん2010/03/06(土) 02:46:26
その辺は元々区別してない日本人教祖の致命的な弱点かもな。
0063デフォルトの名無しさん2010/03/06(土) 03:08:27
直接の元ネタは Common Lisp かね?
ただ、Rubyの場合はオブジェクト指向的な整理がされているし
それぞれの述語の意味も違う
0064デフォルトの名無しさん2010/03/06(土) 03:19:41
質問なんですが、Ruby[Cygwinで時前コンパイル]のスクリプトをOcraで実行ファイルにしたとき、
できた実行ファイルにはCygwinのDLLがなにやら色々入ってないみたいなんです。
Ocraで実行ファイル作成時に出るDependencyリストにも無いファイルが無いというエラーが作った実行ファイルから
はかれるんですが、どうやったら調べられるのか、どのCygwinのDLLを同じフォルダにコピーしたらいいのか、
しってはるひといらはりますか?
0065デフォルトの名無しさん2010/03/06(土) 04:31:33
たのしいRuby 第3版
ttp://www.amazon.co.jp/gp/product/4797357401/
3月31日発売
0066デフォルトの名無しさん2010/03/06(土) 05:45:46
irb上で、
>REXML::Parsers::StreamParser.new('日本語', listener)
Encoding::CompatibilityError: incompatible character encodings: ASCII-8BIT and UTF-8
となるのですが、バグですかね?

環境:fedora10、ruby 1.9.2dev (2010-03-06 trunk 26825) [i686-linux]
0067662010/03/06(土) 05:48:31
すみません。fedora11でした。
0068デフォルトの名無しさん2010/03/06(土) 08:39:10
rubyにXMLパーサーある?
0069デフォルトの名無しさん2010/03/06(土) 09:05:45
あるよ
REXMLとかXMLParserとか。それぞれ向き不向きがあるので、とりあえず触ってみると良い。
0070デフォルトの名無しさん2010/03/06(土) 09:11:43
>>66
REXML::Parsers::StreamParser.new('<?xml version="1.0" encoding="utf-8"?><xml>日本語</xml>', nil)

これは通る。
xmlのエンコーディングってどうやって省いたときはどうなるのが
正しいんだっけ……
0071デフォルトの名無しさん2010/03/06(土) 09:25:14
http://www.w3.org/TR/xml/#charencoding

BOMもエンコーディング宣言もなければ
文書はUTF-8で書かれているものと想定するだろね
0072662010/03/06(土) 10:30:08
レスありがとうございます。

>>70
考えてみれば、XMLではない文字列を通す必要は無いんですね。
1.8では通ってたので、勘違いしちゃいました。
0073デフォルトの名無しさん2010/03/06(土) 10:45:37
とはいえ、エンコーディング検出処理のところで read(2)で 2*文字*
読んでるのは間違いのような気もするな。識者求む。
rexml/source.rb
class IOSource#initialize

0074デフォルトの名無しさん2010/03/06(土) 10:55:28
ソース見てないけど2バイトじゃなくて2文字読んでるから
BOMの判定としてどうなのってこと?
1.9はめんどくさいね

関連でこういうのも
http://www.clear-code.com/blog/2009/5/11.html
0075デフォルトの名無しさん2010/03/06(土) 11:03:07
>>65
こういう新刊情報ってどうやって入手してるの?
ソフトバンククリエイティブの新刊情報にはまだ出てないし、
amazonでも検索に引っかからないし

googleの検索結果にはかろうじて出てくるから
キーワードをダイレクトで指定してそれを
スクリプトか何かでチェックしてるのか?
0076デフォルトの名無しさん2010/03/06(土) 11:10:55
ちょ、著者じゃないよ!
出版社でもないからネ.
0077デフォルトの名無しさん2010/03/06(土) 11:13:44
アマゾンの回し者だな
0078デフォルトの名無しさん2010/03/06(土) 11:16:36
>>74
めんどくさくねえよ
むしろ1.8のほうが「2文字」読み込むのに難儀する
2文字読むのと2バイト読むのとメソッドがきちんと分かれてる1.9のほうがわかりやすい

添付なんだし誰か突っ込んどけという説はあるな
REXMLなんて使ってる人いないんだろうなという感じの
0079デフォルトの名無しさん2010/03/06(土) 11:49:54
>>69
ありがとう。使ってみる。
0080デフォルトの名無しさん2010/03/06(土) 12:09:16
著者降臨age
0081デフォルトの名無しさん2010/03/06(土) 15:21:58
gemのインストールで困っています。
searchでは見える&installでは見えないという状況です。

% gem search -r rubyzip
*** REMOTE GEMS ***
rubyzip (0.9.4)
rubyzip2 (2.0.1)
viva-rubyzip (0.9.1.2)

% gem install rubyzip
ERROR: could not find gem rubyzip locally or in a repository

ほかのgemでも同じ状況でした。
環境はFedora12 on VirtualBoxです。
0082デフォルトの名無しさん2010/03/06(土) 18:40:48
rubyでAPIを処理できますか?
0083デフォルトの名無しさん2010/03/06(土) 18:45:42
>>81
ブツは http://gems.rubyforge.org/gems/rubyzip-0.9.4.gem にある
ようだな。とりあえず gem install --verbose rubyzip

>>82
どの?
0084デフォルトの名無しさん2010/03/06(土) 19:10:31
windowsAPIです
0085デフォルトの名無しさん2010/03/06(土) 21:33:00
>84
http://www.ruby-lang.org/ja/man/html/Win32API.html

これでいいのか?
0086デフォルトの名無しさん2010/03/06(土) 21:54:25
ruby を使って windowsで 簡易ブラウザを作りたい
と思っているんですが簡単に実現出来る方法はないでしょうか?

Linux環境だとgnome2つかって下記のように簡単に作れるみたいですが・・・・
http://alohakun.blog7.fc2.com/blog-entry-809.html
0087デフォルトの名無しさん2010/03/06(土) 22:29:20
>>86
すげぇw
0088デフォルトの名無しさん2010/03/06(土) 22:33:59
>>81
install 時も -r を付ければいいような気もしますが、どうですか?
0089デフォルトの名無しさん2010/03/06(土) 22:55:48
>>86
ブラウザって方法次第ではこんなに簡単に作れるのか・・。Rubyブラウザいいねえ
0090デフォルトの名無しさん2010/03/06(土) 23:05:10
GUIライブラリだけでRuby関係ないんだが
0091デフォルトの名無しさん2010/03/06(土) 23:07:31
Trident使うライブラリってMFC以外にあんの?
0092デフォルトの名無しさん2010/03/06(土) 23:23:48
IEコンポーネントとして呼べばいい
Tk→OpTcl→InternetExplorer
どっちにしてもRubyの関わる分はたいそう少ない
0093デフォルトの名無しさん2010/03/07(日) 00:38:05
>>86
win32oleでIEコンポーネント操作すりゃいいんじゃないかね。
前にC#でやったことがあるが、COMがわかってりゃ別段困難ではない。
0094デフォルトの名無しさん2010/03/07(日) 00:42:46
COM/Interopがわかってるような人間はこのスレで質問するわけがない
0095デフォルトの名無しさん2010/03/07(日) 01:10:25
これから言語の勉強しようとしているのですが
RubyでGUYツール作れますか?
C#のようにマウスでコントロール配置できたりしますか?
0096デフォルトの名無しさん2010/03/07(日) 01:11:25
まず言語とIDEの区別ができるようになろうな。
0097デフォルトの名無しさん2010/03/07(日) 01:16:47
GUYツールワロタ
0098デフォルトの名無しさん2010/03/07(日) 01:25:56
RubyでGUI用のIDEはありますか?
0099デフォルトの名無しさん2010/03/07(日) 01:33:05
ないんじゃない?

ttp://jp.rubyist.net/magazine/?0001-RubyGUI#l10
この記事の内容って今も大きい変化ない?
0100デフォルトの名無しさん2010/03/07(日) 01:38:58
IDEといえば、CodeGearどうしたのかと思ったらDBツールの会社と
合併して、今は3rdRail以外にTurboRubyなんての出してたのね。

0101デフォルトの名無しさん2010/03/07(日) 01:41:30
見た感じ3rdRailと同じようにEclipseのプラグインぽいなー
と思いつつ機能一覧を見たら、3rdRailからRails関連を取っ払っ
た感じだった。
0102デフォルトの名無しさん2010/03/07(日) 01:42:30
Turboなんとかって命名には不吉な匂いしかしない
0103デフォルトの名無しさん2010/03/07(日) 01:46:25
今はDelphiもそこの製品扱いなのか……

0104デフォルトの名無しさん2010/03/07(日) 01:53:11
勉強のためならGladeでいんじゃね?
コードエディタとかついてないとイヤなの?
0105デフォルトの名無しさん2010/03/07(日) 02:04:21
C#用のIDEってそんなこと出来るのか
0106デフォルトの名無しさん2010/03/07(日) 02:06:42
ホームページビルダーみたいな出力だったらいやだな
どうなんだ
0107デフォルトの名無しさん2010/03/07(日) 02:20:37
wxRuby+wxFormBuilderでも使っとけ
0108デフォルトの名無しさん2010/03/07(日) 02:27:29
>>107
いいねそれ
遊んでみよう
0109デフォルトの名無しさん2010/03/07(日) 07:04:30
>>81
こちらでは問題なくインストールいけたが
Ubuntu 9.04 on coLinux
0110デフォルトの名無しさん2010/03/08(月) 11:29:43
>>86
遅いレスだが情報サンクス
半信半疑でやってみたがあっさり動いた(Ubuntu9.04)
おもしろいね
0111デフォルトの名無しさん2010/03/08(月) 12:48:25
この言語はどういったユーザーを主に対象にしているんでしょうか?
ぐぐってみるとWebアプリケーションとのことだけど
Windowsデスクトップアプリを主に作る場合はおすすめできないですか?
0112デフォルトの名無しさん2010/03/08(月) 12:52:12
>>111
> Windowsデスクトップアプリを主に作る場合はおすすめできないですか?
1ミリもおすすめできません
とても大雑把には C# で試してみることをおすすめします
物足りないなら他の Java なりなんなりを使えばよろし
C# で挫折しないなら他の言語も我慢できましょう
0113デフォルトの名無しさん2010/03/08(月) 13:51:13
Rubyの初心者向け的立ち位置って微妙だよね
このご時世にコンソールアプリケーションが基本とか華がないにも程がある

得意分野が狭いからわかりやすいんだけどさ
これでデフォルトでウィンドウ制御しないといけないとかだったらめんどくて吐く
0114デフォルトの名無しさん2010/03/08(月) 14:18:23
しつもん
freeze って実際はどんなときに使うの? マニュアル読まない人用?
あと、TypeError という汎用な例外が出るのはなんで?
ModifyFrozenObject とかそういう特有の例外ならよかったのに
0115デフォルトの名無しさん2010/03/08(月) 14:32:39
>>111
いろいろな使い方があると思うけど

俺は簡単な書き捨てスクリプトに主に使ってる
ファイルの名前を書き換えたりとか,複数のファイルからデータ
抽出してまとめ直すとか,ファイルのデータフォーマット変えるとか
そういうのを大量に行いたい時使うこと多い

C++とかで書いても良いけどこういうのはrubyの方が楽
逆に手の込んだもの書く時はC++の方が楽というか安心
単に慣れの問題かも知れんが
01161112010/03/08(月) 14:43:33
調べてみたところ、LL系とコンパイラ系の両方1つづつ
覚えていると良いらしいので簡単だと言われている
RUBYをやってみようと思ったのですが
実際どういう感じで使われているのかがよくわからなくて
質問させていただきました
WEBアプリを作ることはまずないんですが
>>115さんのようなことができるならちょっと興味があります
0117デフォルトの名無しさん2010/03/08(月) 14:50:22
>>116
やめとけ
君の考えているようなものではない
0118デフォルトの名無しさん2010/03/08(月) 15:00:05
>>114
例外について。

あまり例外の階層構成については細かく考えられていない。
現在TypeErrorを返している一部はArgumentErrorを返すべき(逆だった
かも)といった指摘も現在進行形で存在する。数学のほうの例外
体系もErrnoとは分けて作るような動きがあったかな。

0119デフォルトの名無しさん2010/03/08(月) 15:05:13
>>117
使ってるの普通にWindowsだろうしな
コマンドプロンプトの使用の概念から慣れていかないと

RubyがLinuxやらCGIやらと親和性が強くて便利だと言われる理由は
「普段使ってるもの」をRubyスクリプトで直接パワーアップさせることができるから

普段からコンソール使ってコマンドラインプログラムを利用してるLinuxやCGIなんかの場合は
Rubyで作ることができるものがそれそのものと同種のものだから、即取り入れることができる
それこそ、覚えた日から即生活が豊かになる

しかしWindowsは違う
ごく一般的にはウィンドウアプリケーションじゃないとどうにもならん
そして、それは「Rubyを使うべき分野」ではない(苦行の趣味に近い)
0120デフォルトの名無しさん2010/03/08(月) 15:09:45
Windowsでプログラミングしたことない、、一度も。
0121デフォルトの名無しさん2010/03/08(月) 15:51:30
俺もWindowsはないな。MS-DOSはTurbo PascalとSmalltalk/VとModula-2ぐらいだな。
0122デフォルトの名無しさん2010/03/08(月) 16:12:21
>>116
Rubyがそれほど簡単だとは思わないけど。
0123デフォルトの名無しさん2010/03/08(月) 16:35:37
簡単かどうかで言えばかなり簡単な部類
ただし、プログラミング初心者には難しい

リアル師匠にあたる人がいればなんてことないが、これはどの言語でも同じか

Perlは基本がわからないわけではないんだがなんともいえず挫折した、とかいような素養で充分なんだが
それに該当するものをRuby単体独学で身につけるのは意外と辛いしRubyの役目かどうかもちと怪しい
0124デフォルトの名無しさん2010/03/08(月) 16:40:59
中学生に EPSON BASIC(中古・マニュアルのみ) → 大学で Perl4 → KENT CGI(笑) → うーんなんか違う
という経緯をたどった俺には Ruby はどんぴしゃべったりで一生もの
「ちょっと遅いけどでも許す」ということを本当に口に出して言ったことをよく覚えている
Ruby1.4 くらいだったかなあ
0125デフォルトの名無しさん2010/03/08(月) 16:43:45
どんな顔か想像ついたw
0126デフォルトの名無しさん2010/03/08(月) 16:44:39
ブラック会社みたいな物言いだな> 他の言語で基礎素養を身につけた方歓迎
0127デフォルトの名無しさん2010/03/08(月) 16:48:07
>>126
めっちゃ平たく言うと完全初心者を歓待するためのドキュメント準備がない
こんなとこでもいまだに適切な分野の人員不足が足引っ張ってる状態
書籍ならなんとかなりそうな気もするんだが、オンラインでもある程度あったほうがいいよね

PerlとかPythonとかはnewbieを扱うための準備をかなり前からしてる
Rubyはどっちかってと「わかってる人向け」で突っ走ってきたので
01281112010/03/08(月) 16:51:19
インストールで挫折した
ネットも繋がないといけない?ようで気味悪いので削除しました
皆様ありがとうございました
0129デフォルトの名無しさん2010/03/08(月) 16:53:59
よーしrubyのためにwindows消して
ubuntuいれちゃうぞー
0130デフォルトの名無しさん2010/03/08(月) 16:57:52
パパやめて!Windows消すぐらいならVMwareかVirtualBox使って!
0131デフォルトの名無しさん2010/03/08(月) 17:01:47
もともと持ってないならまだしもわざわざ自分から捨てるような権利でもないな

というかそのへんは本スレでやれ
0132デフォルトの名無しさん2010/03/08(月) 18:34:28
Ruby が簡単かどうかは >>119 さんもが書いているいるように
それまでの慣れや経験に依るだろうね
Unix, Linuxを使って来てシェルスクリプト,sed, awk 等
使ってきた人間だと簡単に感じる
本一冊(hunt/thomas)通勤中読んでいたらすぐに簡単なものは書けるようになった

確かにターミナル使ったことない人にはわかりにくいだろう
0133デフォルトの名無しさん2010/03/08(月) 19:09:23
つまり新しい言語に対応できない無能なおっさんが
いきついた場所がRubyということですね
0134デフォルトの名無しさん2010/03/08(月) 19:14:54
>>133
真面目にそんなこと言っているのだとしたら、そうとう恥ずかしいぞ。
0135デフォルトの名無しさん2010/03/08(月) 20:32:51
真面目じゃなくても恥ずかしいわw
0136デフォルトの名無しさん2010/03/08(月) 20:36:12
今時、小学生でもLinuxでサーバ構築できるというのに...
0137デフォルトの名無しさん2010/03/08(月) 22:47:11
ここほど口だけ出来る奴が居座ってる初心者スレは無いよな。
0138デフォルトの名無しさん2010/03/08(月) 23:07:40
そんなことを言っても出せないものは出してあげられませんよ
0139デフォルトの名無しさん2010/03/08(月) 23:12:27
逆に貧相なCMD.exeでもRubyで花を咲かせることができる
windowsユーザーだってRuby使ってるぜ
0140デフォルトの名無しさん2010/03/08(月) 23:49:53
でも根本的に向いてない。
教祖自らウィンドウズ使ってないしねえ。

教祖と同じデビアンから入信してみるのがいいんじゃ?
まあシェルでまずは挫折して逃げ出すと思うが。

http://pc11.2ch.net/test/read.cgi/linux/1267107714/
Debian GNU/Linux スレッド Ver. 63
http://pc11.2ch.net/test/read.cgi/linux/1154631461/
Debian原理主義者テラモエス
0141デフォルトの名無しさん2010/03/09(火) 00:03:36
逆に、WindowsでRubyをバリバリに使ってる人ってガチガチに独自の快適コンソール環境を構築してそうだよなあ。
0142デフォルトの名無しさん2010/03/09(火) 00:42:22
ある課題があって、それをRubyで解決したいのですが御知恵を。。。
課題というのは、仕事でつかってるIBM系のメインフレームのデータセット?
という1レコード3Kbyte程度のバイナリファイルをFTPでおとしてきて
読み込み加工して出力し、またメインフレーム上に戻す(できれば)という
ものです。

そのバイナリファイルとは別に、項目名と、その項目の値は何バイト目から
何バイトがPACだ、小数点以下は何桁だ、CHARだというレイアウトファイル
なるものがあります。文字コードはEBCDICというものらしいです。

このままじゃデータをエクセルに落して、手作業でやらされる羽目になります。。。
どう料理していけば良いでしょう?

0143デフォルトの名無しさん2010/03/09(火) 00:44:40
どう加工するかによるだろそりゃ。

バイナリファイルの扱い自体は別に困難じゃない。
unpackして適当に加工してまたpackすりゃいい。
問題はEBCDICの扱いになるかな。なんかライブラリあったかなあ?
0144デフォルトの名無しさん2010/03/09(火) 00:52:39
さっそくありがとうございます。
pack,unpackの扱いについては、このあたりで良いですか?
ttp://www.ruby-lang.org/ja/man/html/pack_A5C6A5F3A5D7A5ECA1BCA5C8CAB8BBFACEF3.html
0145デフォルトの名無しさん2010/03/09(火) 00:56:11
バイナリ列をバイナリのまま扱った経験がないとしたら茨の道と言わざるを得ないが
Rubyはそのへんを助けるようなことはしない
0146デフォルトの名無しさん2010/03/09(火) 01:04:49
COBOLとRubyって、すごい対比だなw
金融機関の人間だけど、そういう場合は必ずいったんRDBに入れたり最悪でもCSVかTSVに変換してるなぁ。
つまり汎用機→情報系用に変換→各種処理→戻し変換→汎用機というルート。
変換にはうちはF*TRANを使ってる。
iconvとかでもEBCDIC扱えるみたいね。

データセットを直接扱うなんて、
リスクが高すぎてうちでは絶対に許してくれない。
0147デフォルトの名無しさん2010/03/09(火) 01:17:23
質問に?が多すぎ。
バイナリ、とは言うが、実はASCIIの文字列かいな。
.txt の処理は、Rubyだとより柔軟にできる訳だが、今からでは、間に合わないでしょ。
SEDとか、AWKのスクリプトも書けないのか、それともそんなものも知らないのか。
おそらく、今から勉強しても間に合わないから、あなたの得意なエクセルで作業をスタート。
あとは、時間との勝負。
だな。
0148デフォルトの名無しさん2010/03/09(火) 01:19:28
F*TRANって、FORTRAN?
なんで伏字にするの?
0149デフォルトの名無しさん2010/03/09(火) 01:24:45
FORTRANに嫉妬しているから。
0150デフォルトの名無しさん2010/03/09(火) 01:33:02
>>148
http://www.bsc.fujitsu.com/services/ftran/
0151デフォルトの名無しさん2010/03/09(火) 01:34:01
c#なら10行書けば済む処理だな
01521492010/03/09(火) 01:41:46
それは、知らんかった。
音(的には)P-TOSのなんとかに似ているね。
0153デフォルトの名無しさん2010/03/09(火) 01:42:02
>>150
こんなのあるのか。笑ってしまった。
0154デフォルトの名無しさん2010/03/09(火) 02:31:05
>>145
まさにその茨の道を進もうとしてるようですよ。

>>147
正直よくわかんね!ってところだからですよ、ええ('A`)
学生の頃も本職になった今もC++で離散系のシミュレーションとかやりつつ時期によっては
しょぼいエクセルの業務システム作りをやってますよ。(VBA嫌いなので得意じゃない)
sed,awkはそんなものがあるのは知ってたけど,perlでやってました。
バイナリとはいいつつ、ファイルレイアウトを見ると間違いなくパック10進数といった類
の補足説明があるので文字だけってことはないようですね。

とまあそんな自己紹介はいいから、とりあえず明日明後日ともうちょっと下調べして出直
してくる。納期もあってないようなもんなのでまったりやりますよ。

>>146手掛かりくれてありがとう。
0155デフォルトの名無しさん2010/03/09(火) 12:01:13
>>114
freeze は(少なくとも組み込みや添付では)破壊的動作のメソッドの動作を禁止させるフラグ立て

def hoge!
 raise "can't modify frozen Hoge" if self.frozen?
 ...
end

というメソッド定義に「自分でする」
破壊的動作や内部構造への再代入をされるとどっかに @foo||= なんかで残ってるインスタンス変数とかが
変更前のまま残ってて場合によっては食い違い動作の原因になりそうだとか
そういうおそれがあるクラスに提供する

ぶっちゃけこれ使わずに「お前が困る動作組み合わせは全部書いてあるからちゃんとマニュアル読め」でもいい
マニュアル読まない人が(あるいはうっかりで)よくないタイミングで破壊的動作をしてしまっても
変更して欲しくないとタグ付けされたオブジェクトだったらメソッド動作の時点でエラー出して守ってあげよう、
そんな若さと渋さの間で揺れるナイス・サーティのアナタに贈る鼻歌みたいな応援歌
0156デフォルトの名無しさん2010/03/09(火) 12:32:47
a = [ [ ] ]
a.freeze
a.frozen? #=> true
a[0].frozen? #=> false

なんだよな。
当然といえば当然なんだが。
0157デフォルトの名無しさん2010/03/09(火) 12:36:24
>>156
それは a つまり Array の freeze メソッドの動作に依存する
配列中の全要素に freeze を適用するという動作にしても構わない(不便だとは思うが)

Array#freeze がそういう「外の入れ物だけフリーズさせる」ような動作にたまたまなってるだけ
freeze の実装自体はもっと柔軟に対処が可能
0158デフォルトの名無しさん2010/03/09(火) 12:50:48
freeze は

def hoge!
 raise_if_frozen
 …
end

とか

def hoge! … end
freeze_method :hoge!

とかいう仕組みを作って簡易に利用できるほうがよかったと思う
0159デフォルトの名無しさん2010/03/09(火) 12:58:03
freeze 自体が Ruby 文化とあまり適合しないと言われているから
うまい構文糖や実装ポリシーが
熱心に研究されていないんじゃないかなあ
0160デフォルトの名無しさん2010/03/09(火) 13:11:39
evil rubyたのしいです。
0161デフォルトの名無しさん2010/03/09(火) 13:11:51
private や protected の動作がイマイチなのと根っこはたぶん一緒だよね
0162デフォルトの名無しさん2010/03/09(火) 13:44:44
if hoge && fuga.size > 0
と
if hoge && !fuga.empty?
どっちがいい?
どっちでもない別の表現がいい?
0163デフォルトの名無しさん2010/03/09(火) 13:46:31
あと
if fuga.size > 0
は
unless fuga.empty?
にした方がいいんだろうか?

どれもお好きなようにっていう程度だろうか
0164デフォルトの名無しさん2010/03/09(火) 14:07:25
>>162-163
字面が違うから意味が違う

が、fuga が配列みたいなもんなら、俺は empty? の活用をまず考える
empty? を使うことで否定要素が複数混じってしまうようならすっぱり諦めて size の比較とかにする

そんな感じ

あと配列なら Enumerable 由来の any? とか all? とかの利用も考えるといい
0165デフォルトの名無しさん2010/03/09(火) 16:21:52
>>164
書き忘れてましたfugaはArrayインスタンスです

配列であれば162も163もそれぞれ動作は同じですよね?
0166デフォルトの名無しさん2010/03/09(火) 16:51:22
なにを心配してるのかわからん
sizeが整数や実数を返す可能性とか考えてる?
01671622010/03/09(火) 17:42:10
心配しているわけじゃなく
意味が同じなら書き方としてどっちがRubyっぽいのかなと思って

>>162,163で例に出した形の文は今まで前者で書いてたんですけど
empty?を使う方がいいという意見を別のところでも見たので。
特に>>162の方は否定(!)をつけてまでempty?にするのがいいのかどうかってことです
0168デフォルトの名無しさん2010/03/09(火) 17:49:23
? を使う述語があるならそっちのほうがいいという話にはどうしてもなるな

!foo.empty? みたいなのにはうんざりしてるのか、
ユーザーの作るライブラリでは相反する述語がセットで定義されてることも多い

&& などで繋ぐ場合は !foo.empty? みたいな記述はけっこう容認されてる雰囲気
if !foo.empty? だけだったら unless foo.empty? 使えという話になるんだけど
0169デフォルトの名無しさん2010/03/09(火) 18:26:00
>>162
fuga.size > 0 より断然 fuga.empty? をお勧めします。
理由は、fuga.empty? はまさに「空かどうか」を調べるメソッドであり、やりたいことを明確に示しているからです。
これに対し、fuga.size > 0 は「サイズが0より大きいか」を表しており、「空かどうか」を直接表しているわけではありません。
つまり、fuga.size > 0 より fuga.empty? のほうがより抽象度の高い記述になっています。

なお Ruby では .empty? のほうが若干ですが動作速度が速いはずです。
0170デフォルトの名無しさん2010/03/09(火) 19:01:57
「要素があるか」を調べたいのに「空か」を調べてさらに加えて否定まで付けなきゃならんのは如何なものかってことじゃろ
0171デフォルトの名無しさん2010/03/09(火) 19:35:09
だから標準で all? とか any? とかあるって
それで不足ならメソッドに掃き出すことを厭ってはならね
0172デフォルトの名無しさん2010/03/09(火) 19:41:12
unlessがあるんだから使おう、と思うか、他の言語と同じようにifで書こう、と思うか、は
微妙なところだな。自分の場合、何年かの周期でふらふらしてる。
0173デフォルトの名無しさん2010/03/09(火) 19:42:39
メソッドフル活用派とプリミティブ派のたたかいはまだつづく
0174デフォルトの名無しさん2010/03/09(火) 19:44:37
Pythonスレ
社会人が多く、大人の発言
初心者に優しい

Rubyスレ
キチガイ、偏執狂、厨房の巣窟
0175デフォルトの名無しさん2010/03/09(火) 19:49:56
要素の数が0以外なら真を返す、みたいなメソッドがないことが問題をややこしくしてる
本当はこのへんは対称性があってもいい(なくてもいいが)

うまいメソッド名が思いつかなかったっぽい雰囲気はあるが
0176デフォルトの名無しさん2010/03/09(火) 19:56:30
>>170
(誤) さらに加えて
(正) かてて加えて
0177デフォルトの名無しさん2010/03/09(火) 20:05:28
any? はよいんだけど、 [ nil ].any? #=> false なので
要素が1つでもあるか、という判定としては万能ではないかもなー。
0178デフォルトの名無しさん2010/03/09(火) 20:11:51
万能ではないも何も
> 要素の数が0以外なら真を返す、みたいなメソッドがない
という話が既に
0179デフォルトの名無しさん2010/03/09(火) 20:18:35
def hage?
…
end

def fusa?
!hage
end

みたいなメソッド定義はよく見る
empty? も時流に乗るべきだとは思う
0180デフォルトの名無しさん2010/03/09(火) 22:24:10
富士通御謹製エフトランを知らん奴が意外と多いんだな
汎用機、オフコンを知らん世代が増えて来たったことだな
z/OSで仕事してたころはデータセットをFTPのBINでダウンロードして
shift-JISに変換とかよくやってたぜ


0181デフォルトの名無しさん2010/03/09(火) 22:33:53
懐古厨乙
0182デフォルトの名無しさん2010/03/09(火) 22:37:02
>>181
レスしたのお前だけだぞ
0183デフォルトの名無しさん2010/03/09(火) 22:41:39
おっさん多いなこのスレ。。
0184デフォルトの名無しさん2010/03/09(火) 22:51:59
うんにゃ、知らない奴はレスしないだけ
バックグラウンドがたまたま見えただけに過ぎない
0185デフォルトの名無しさん2010/03/10(水) 04:22:42
メソッドと変数が見分けがにくいな
0186デフォルトの名無しさん2010/03/10(水) 09:11:00
ローカル変数のように見えて実はメソッド、というのはままある。
0187デフォルトの名無しさん2010/03/10(水) 09:19:08
「値は必ず確固としたオブジェクト」なので、メソッドだろうがローカル変数だろうが
値を返すキーワードが実際は何でできてるのかは使用者からは区別する必要ないよねというポリシーがある

mes(foo) としたとき、foo が変数なのかメソッドなのかは実際どうでもいい
foo という名前が解決されてその結果返されるオブジェクトだけが重要

代入が文脈依存なのはそれなりに面倒
selfの有無で同じ名前を2回使い分けられるということでもあるが
0188デフォルトの名無しさん2010/03/10(水) 09:26:35
さすがにそれはどうでもよくないだろー
local_var()もできないんだし
0189デフォルトの名無しさん2010/03/10(水) 10:01:42
問題になる状況自体が問題だと思うぞ
どういうネーミングだよ
0190デフォルトの名無しさん2010/03/10(水) 10:10:12
めっちゃプリミティブな名前のインスタンスメソッドを作って、なおかつローカル変数もそのままの名前である場合
uri とか
0191デフォルトの名無しさん2010/03/10(水) 10:34:48
下記コピペの拡散、お願いします!

-- ここから --
欠陥だらけの悪法、民主党が準備を進めている「子ども手当」がまもなく国会を通過する見込みです。
そこで、この法案に対するクレームを直接政府に届けて、少しでも本法案を阻止できるよう動きませんか!?

クレーム先:http://www.cao.go.jp/sasshin/hatomimi/re_hato/uketsuke.html
ハトミミ「国民の声」 受付窓口
の「■ 一般受付窓口 【おかしなルール(規制・制度)】」に、「基準や要件の見直し」として、本件に関する
抗議をお願いします。実名とメールアドレスが必要となります。○制度の所管省庁 は、厚生労働省です。

なぜ本法案がまずいのか?子ども手当支給対象者、民主党支持者もじっくり考えてみてください。

【子供手当て驚愕の真実】 http://www.youtube.com/watch?v=Y4wuKv8ExeM&feature=related
驚愕の子供手当て http://5959goc.iza.ne.jp/blog/entry/1475880/
2010/3/10付の中日新聞
http://up3.viploader.net/pic/src/viploader1186653.jpg
http://viploader.net/pic/src/viploader1186654.jpg

要件をまとめると、
「外国籍の人間も支給対象」「海外在住の日本人は支給対象外」「養子も支給対象」「財源が赤字国債」
「子どもが外国にいても支給対象」「子どもの存在証明として、法的な力を持つ手段がない」
となります。これにより、以下のことが考えられます。

1. この手当目的に、日本より経済状態が低い外国において不当な養子縁組を作るケースが激増する。
2. この手当目的に、日本にやってくる外国人(特に中国人)が激増する。
3. なによりも、負担は将来の子ども達が背負わなければならない。

国会答弁にて、政府も設計に難があるのは認めていますが、今後検討するという理由で、この欠陥を
そのまま推し進めようとしています。まだ諦めるのは早いです。できる限りの手を尽くしましょう!!
-- ここまで --
0192デフォルトの名無しさん2010/03/10(水) 10:57:01
スレ違い
0193デフォルトの名無しさん2010/03/10(水) 10:58:59
>>192
レスしたのお前だけだぞ
0194デフォルトの名無しさん2010/03/10(水) 13:02:57
>>191
民主は売国政党だからな
0195デフォルトの名無しさん2010/03/10(水) 17:09:34
初心者は1.8.7をインストールすればいいんでしょうか?
0196デフォルトの名無しさん2010/03/10(水) 17:36:37
はい、そうです。
0197デフォルトの名無しさん2010/03/10(水) 17:37:07
はい

Windowsならhttp://arton.hp.infoseek.co.jp/indexj.html
ただしコマンドプロンプトの知識がどうしても必要
0198デフォルトの名無しさん2010/03/10(水) 18:11:43
def method1(x)
 return true if (0...1000).include?(x)
 return true if (2000...3000).include?(x)
 return true if (4000...5000).include?(x)
 return false
end
---
def initialize
 @arr = []
for i in 0...1000
 @arr.push(i)
end
for i in 2000...3000
 @arr.push(i)
end
for i in 4000...5000
 @arr.push(i)
end
def method2(x)
 return @arr.include?(x)
end

上のmethod1とmethod2をそれぞれ呼び出したとき、
結果は変わらないと思うんですが、処理速度に違いは出ますか?
0199デフォルトの名無しさん2010/03/10(水) 18:49:57
def method3(i)
case i
when 0...1000, 2000...3000, 4000...5000 then true
else false
end
end

ほんとうに整数ならこれが速くてわかりやすい
整数なのならわざわざ配列作る必要はない
0200デフォルトの名無しさん2010/03/10(水) 19:22:30
int x=1000;
for(int i=0;i<=x;x*i)
{
}
0201デフォルトの名無しさん2010/03/10(水) 19:40:05
(0...1000).include?(x) は 0<=x && x<1000 と同じだけど
(0...1000).to_a.include?(x) は配列の要素を一つずつ比較するので当然遅くなる
0202デフォルトの名無しさん2010/03/10(水) 19:48:12
処理が遅いってどういうとき遅いの?
0203デフォルトの名無しさん2010/03/10(水) 20:05:01
>>202
実際に遅いかどうかプログラム作って確かめてから考えたほうがいい
机上で遅そうだと思っても意外と許容範囲内であることは多い
0204デフォルトの名無しさん2010/03/10(水) 20:09:02
.NETで作ったdllは参照できますか?
0205デフォルトの名無しさん2010/03/10(水) 20:16:00
dll <-> COM <-> Ruby
0206デフォルトの名無しさん2010/03/10(水) 20:18:58
へー、COMなら参照できるのか

どういう原理なんだ?
0207デフォルトの名無しさん2010/03/10(水) 20:38:42
COM Ruby でぐぐると…わあ微妙
0208デフォルトの名無しさん2010/03/10(水) 22:27:35
pause(2) に相当するメソッドでないんですかね。
とりあえずKernel.#sleepによる無限スリープで代用していますが

> sleep(sec = 0) -> Integer
> sec が省略されたり 0 を指定した場合、他スレッドからの Thread#run
> などで明示的に起こさない限り永久にスリープします。

sleep(0) してもすぐ戻ってきやがる。
マニュアルと実際の挙動が違うのはなぜ?
ちなみに引数を省略した場合は仕様通りなんですけど。
0209デフォルトの名無しさん2010/03/10(水) 22:33:11
pause(2)ってサスペンドの時に発行される奴だっけ?

Process.kill :STOP, $$
じゃだめですかね?
0210デフォルトの名無しさん2010/03/10(水) 22:34:53
>>209
ああ、それいいかもです。

ところでKernel.#sleepの挙動がマニュアルと異なるのが気になりますw
sleep(0) ですぐリターンするのは何故でしょう??
0211デフォルトの名無しさん2010/03/10(水) 22:38:10
まあ個人的にはただしい挙動だとは思いますが。
シェルから sleep 3 を実行すると0秒後に復帰しますし、永久にスリープはしませんね。はい。
02121982010/03/11(木) 00:38:23
みなさん、ありがとうございます。
method1の代わりには、ご提示くださったmethod3が確かに良さそうですね

0...1000等はデータ的な数値(整数)で、頻繁に比較するのですが、
データ専用のクラスに数値の配列とmethod2を定義して呼び出し側のクラスから参照して比較したほうが、
呼び出し側のクラス内に直接method1を書くよりも記述のまとまりとしては良いと思ったんです

かと言って、データのクラスにmethod1や3のような記述をしても、
データを管理しているイメージはないですよね
0213デフォルトの名無しさん2010/03/11(木) 00:58:39
http://www.ruby-lang.org/ja/man/html/_C1C8A4DFB9FEA4DFB4D8BFF4.html
ここには0の場合永久スリープとは書いてないな。

RubySpecには
it "pauses execution indefinitely if not given a duration"
(引数がないなら無限に止まる)
はあるけど0を指定した場合の仕様は書いてない。
http://github.com/rubyspec/rubyspec/blob/master/core/kernel/sleep_spec.rb

でもって、るりま
http://doc.okkez.net/static/187/class/Kernel.html
には0だと永久スリープとある。

るりまの間違いだろうか。

0214デフォルトの名無しさん2010/03/11(木) 01:02:12
>>212
え、なにそれ

class HogeDataRange
def include?(x)
case x
when 0..1000, 2000...3000 then true else false
end
end
end

puts "13は含まれてるよー" if HogeDataRange.new.include?(13)

とかやる気なの?
0215デフォルトの名無しさん2010/03/11(木) 01:24:00
Rubyでできないことって何?
0216デフォルトの名無しさん2010/03/11(木) 01:26:47
>>215
あなたができそうだと思っているようなことは全てうまく行えない

と答えるのが一番実態に近いと思うん
説明してだいたいをわかってもらえるような人はそういう聞き方しないので
0217デフォルトの名無しさん2010/03/11(木) 01:33:05
そっか
0218デフォルトの名無しさん2010/03/11(木) 02:40:42
ものそい他人任せだが、他の初心者にやさしい「見た目わかりやすい」言語を学んでからだと
Rubyのような言語の立ち位置がよく理解できるかと思う

最初からRubyだけ与えられている状態はけっこう不幸だ
だから大学1年の授業にRubyを使うとかいうのは俺はあまりいいと思わん
02192122010/03/11(木) 02:53:01
>>214
そんな感じのをやる気なのですが
0220デフォルトの名無しさん2010/03/11(木) 04:49:39
http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=%B5%D5%B0%FA%A4%ADRuby%2FTk
ここの一つ目のサンプルコードをコピペして実行したのですがエラーになってしまいます
それとサンプルのVisualnovelも他のrbファイルを取り込むところで
見つけられないらしくエラーが出てしまいます
requireをしないコードは普通に実行できます
それと実行はRDEでやっています
Pathはbinが環境変数のところで通っています
何がいけないんでしょうか?

XPsp3 Ruby1.8.7 RDE1.1.1.1

C:/DOCUME~1/***/LOCALS~1/Temp/rbF.tmp:1:in `require': no such file to load -- tk (LoadError)
from C:/DOCUME~1/***/LOCALS~1/Temp/rbF.tmp:1
Complete(1)
0221デフォルトの名無しさん2010/03/11(木) 06:08:59
tcl入れてないんじゃね?
0222デフォルトの名無しさん2010/03/11(木) 10:16:02
そのRuby自体が、tkをサポートしてないRubyに見える
0223デフォルトの名無しさん2010/03/11(木) 11:27:44
net/httpライブラリでデフォルトのリクエストヘッダを設定する賢い方法ない?

http.rbのHTTPGenericRequest#initializeを直に書き換えるのは気持ち悪いよな
0224デフォルトの名無しさん2010/03/11(木) 11:44:58
そのような動作をするクラスやメソッドを別途作る
net/http そのものを弄ることは推奨されない
固定の HTTP ヘッダが必要なら、固定の HTTP ヘッダを追加して Net::HTTP オブジェクトを作るメソッドを作る
0225デフォルトの名無しさん2010/03/11(木) 11:46:51
手順的に不正確だった
> 固定の HTTP ヘッダを追加して Net::HTTP オブジェクトを作るメソッドを作る
は
Net::HTTP オブジェクトを作って固定の HTTP ヘッダを追加して返すメソッドを作る
0226デフォルトの名無しさん2010/03/11(木) 11:57:11
そこまで書くなら Net::HTTP オブジェクト自体はヘッダのデータ持たないと思うにゃん
0227デフォルトの名無しさん2010/03/11(木) 12:16:18
よーわからんがこういうの?

require 'net/http'
# Net::HTTP.version_1_2 # 1.8.7では既にtrue

def http_get(uri, header={})
Net::HTTP.start(uri.host, uri.port) do |http|
req = Net::HTTP::Get.new(uri.request_uri)
header.each_pair{|k, v| req[k] = v}
return http.request(req)
end
end

uri = URI.parse('http://www.ruby-lang.org/')
p http_get(uri, {'Accept-Language' => 'ja'}).response['location']
p http_get(uri, {'Accept-Language' => 'en'}).response['location']
0228デフォルトの名無しさん2010/03/11(木) 12:19:50
/aaa\/bbb/
という正規表現文字列にマッチする正規表現というのはどう書けばいいんでしょうか。

\/.*?\/
と書いて、中の\/にマッチしないように
\/[^\\\/]*?\/
としてもダメでした。
0229デフォルトの名無しさん2010/03/11(木) 12:37:15
irb> Regexp.new(Regexp.quote("/aaa\\/bbb/")) =~ "/aaa\\/bbb/"
0
irb> Regexp.new(Regexp.quote("/aaa\\/bbb/"))
/\/aaa\\\/bbb\//
irb> p "/aaa\\/bbb/".scan(/\/aaa\\\/bbb\//)
["/aaa\\/bbb/"]
nil
irb> p "/aaa\\/bbb/".scan(/\/.+?\\\/.+?\//)
["/aaa\\/bbb/"]

どこまで汎用になればいい?
本当にマッチさせたいものはなに?
02302202010/03/11(木) 12:41:00
http://jp.rubyist.net/magazine/?0011-CGIProgrammingForRubyBeginners-2#l2
ここに書いてある通り、One clickインストーラーをインストールしたので
tkは自動で入っているらしいのですが
tk.rbで検索してもHDD内のどこにもなかったんですが
やっぱりインストールされていないということなのでしょうか?
0231デフォルトの名無しさん2010/03/11(木) 12:53:06
>>230
OneClickInstallerを使って1.8.7になるはずがない
あれは1.8.6しか存在しない
君が使ったのはRubyInstallerで、これはtkライブラリは含まない
Windowsでtkライブラリを使いたいのなら>>6のActiveScriptRubyを使うべき
これならActiveTclが別途入ってればなんとかなる

余談だけど
> 更新日時:2005/11/16 21:36:46
5年も前の記事をほいほい参考にすべきではない
0232デフォルトの名無しさん2010/03/11(木) 13:47:54
>>224-227
Thanks!
やっぱソコソコ手間かかるか

目的を正直に白状すると,デフォルトのUAがアレなので
常時ナチュラルなUAでライブラリを使用したいだけなんだよね

俺仕様ってことで推奨されない方法で行きます
0233デフォルトの名無しさん2010/03/11(木) 13:53:49
>>228
str = "hoge/aaa\/bbb/fuga"
re = /\/[^\/]++\/[^\/]++\//
p str.slice(re) #=> "/aaa/bbb/"
0234デフォルトの名無しさん2010/03/11(木) 13:59:46
>>232
Net::HTTP を直接使用することは極力避けたほうがいい(第一面倒だ)
自作のスクリプトで何度も使うというのならそのようなライブラリを自作するチャンス

俺は wget を定義して require 'orelib/wget' してしばらく使い回してたぞ
02352322010/03/11(木) 14:15:56
>>234
>極力避けたほうがいい
それはどうして?
net/httpのAPIは結構気に入ってるんだけど

コネクションがスレッドセーフじゃないとか
Errno系の例外が不親切とかそこら辺?
0236デフォルトの名無しさん2010/03/11(木) 14:28:03
Net::HTTP は抽象度がわりと低いほうだからじゃないでしょうかぬ
システム的な問題ではないと推測
02372202010/03/11(木) 15:25:24
>>231
仰る通り単体のRubyを入れていたようです
oldと書いていたので新しいもののほうがいいと思って
そっちをダウンロードしてしまったみたいです

ActiveRubyをダウンロード
gemのアップグレード
この時点で試しに
require "tk"
したけどエラー、tcltklibbなどtk関連のファイルがあるのに開けないみたい

>これならActiveTclが別途入ってればなんとかなる
この一文がなければここで挫折してました

そしていろいろぐぐっているとVisualuRubyはすでに入っているようなので
こちらでGUIを作りたいと思います
ありがとうございました
0238デフォルトの名無しさん2010/03/11(木) 16:51:12
すみません。お尋ねします。
ファイル上書き確認のコードを書いているのですが

if File.exist?(outfile)
print "#{outfile} は存在しています。上書きしますか ? (y/n): "
answer = STDIN.gets
if /y/i !~ answer
exit;
end
end

問題ないときもあるのですが、状況によっては(その状況が
いまいちよく分からないのですが)printが実行される前に
STDIN.getsに入って、何も表示されないまま待ち受け状態に
なってしまいます。printの対象を事前にflush(?)するには
どうしたら良いのでしょうか?
0239デフォルトの名無しさん2010/03/11(木) 17:08:07
>>213
あんまりよくわからんなりにソースを読んで見たところ(Windows版Ruby1.8.7だとして)

sleep は引数が無いなら WinapiのSleep(INFINITE)で無限に待つみたいで
引数があるなら Winsockのselectっていうのを呼んでた
selectはタイムアウト0秒だとすぐに帰って来るみたいなので
sleep(0) だと sleep() とは違ってすぐに帰ってくるようだ

るりまが間違ってるんじゃないだろうか?
あんまり自信があるわけじゃないので
だれか詳しい人、正確な説明よろしく
0240デフォルトの名無しさん2010/03/11(木) 17:08:27
自分で答言ってる

if File.exist?(outfile)
print "#{outfile} は存在しています。上書きしますか ? (y/[n]): "
$stdout.flush
exit if $stdin.gets =~ /\Ay/i
end
0241デフォルトの名無しさん2010/03/11(木) 17:09:19
>>238
flushって言葉を知ってるなら
IOのインスタンスでありprint等の出力先である$stdoutにそれをすればいい
と言えばわかるんじゃないかな
02422382010/03/11(木) 17:25:47
>>240, 241

バッチリ動きました。ありがとうございました。

情けないことに$stdinの方をflushして
動かんなー、と悩んでました・・・。
02432202010/03/11(木) 18:02:05
tkの方が解説サイトや機能が多いので
TCLフォルダにActiveTCL入れてみたけど実行するとエラーになる
いろんなサイトみて環境変数にパスもちゃんと入れたのに
TCL_LIBRARY TKL_LIBRARY INCLUDE LIBなど
実行するとここを読みに行ってエラー
/Ruby/lib/ruby/1.8/i386-mswin32
ここにもActiveRuby入れたときのTCLがあるのになぜエラー?

もう疲れたよ・・・
0244デフォルトの名無しさん2010/03/11(木) 18:11:21
ActiveScriptRuby(ActiveRubyというものは存在しないしこう表現してもいけない)は
デフォルトで C:\Program Files\ruby-1.8 にインストールするはずだが
C:\Ruby にインストールされるのは RubyInstaller の Ruby
0245デフォルトの名無しさん2010/03/11(木) 18:18:22
RubyInstallerをアンインストールしなかったのか
予想外だ

というかRubyでGUIなんかわざわざやろうという人はもっと熟練して賢いもんだと思ってた
0246デフォルトの名無しさん2010/03/11(木) 18:24:04
やはりTkへのアクセスの存在は隠したほうがいいのかもしれない
もう応対がめんどくさすぎる
デフォルトOFFのRubyInstallerの判断は賢い
…正式版じゃないからかもしれないが

どうしてもTkに処理を渡したいとき用のライブラリであって、
Rubyでウィンドウを作るためにあるわけじゃない
なんでRubyでウィンドウアプリケーションを作ろうと考えるのかもう全く理解できない
02472202010/03/11(木) 18:32:29
簡単なのはRubyと聞いたのでやろうと思ったんだけど
まさかインストールするだけで2日かかるなんて
02482202010/03/11(木) 18:35:42
>>244
空白開いてるといけないとかどこかで見たから
デフォルト変えてD;\直下にインストールしただけ
エラー表示されるときのパスもちゃんとインストールされた
場所のTCLを参照しているし、でもエラーが出る

RubyInstallerはActivescriptRubyを入れる前に
ちゃんとアインインストールしました
残ったフォルダも直接削除しましたし
0249デフォルトの名無しさん2010/03/11(木) 18:38:28
>>247
簡単だよ

ただ、OS操作とコマンドライン文化に不慣れなプログラミング初心者が独学でやっても簡単だと言った人がいたなら
俺が許可するのでグーで殴れグーで
0250デフォルトの名無しさん2010/03/11(木) 18:40:00
>>249
スレのテンプレすら読めない人も追加で
02512202010/03/11(木) 18:46:47
>>246
>なんでRubyでウィンドウアプリケーションを作ろうと考えるのかもう全く理解できない

ここを見たので、この通りやろうとして躓きました
http://jp.rubyist.net/magazine/?0002-FirstProgramming
逆になぜ作ってはだめなのか私にはわかりません
そういった説明もないですし
0252デフォルトの名無しさん2010/03/11(木) 18:48:50
>>250
そだな、>>1の注意書きとか読めてないような人にはたぶん無理だな
0253デフォルトの名無しさん2010/03/11(木) 18:51:41
Rubyを使ってる人は程度が低いので、Ruby以外の知識が要求されるGUIプログラミングを否定しようとします
そういった人に騙されないようにしましょう
0254デフォルトの名無しさん2010/03/11(木) 19:00:11
>>253
今のお前恐ろしくつまんないんだけど…
0255デフォルトの名無しさん2010/03/11(木) 19:05:13
いや、Rubyとかじゃなく、GUIに関するドキュメント少なすぎるだけだと思う。
LinuxでGTKプログラミングやろうとすると多くの人が挫折するし。
02562202010/03/11(木) 19:06:06
エラー内容
D:/Ruby/lib/ruby/1.8/i386-mswin32/tcltklib.so: tcltklib: fail to open tcl_dll (LoadError)
from D:/Ruby/lib/ruby/1.8/tk.rb:6
Complete(1)

ソースコード
require "tk"
Tk.mainloop

xpsp3で以下をダウンロード
ActiveScriptRuby 1.8.7(p249) with-winsock2 tcl-stub
ActiveTcl8.5.8.1.291945-win32-ix86-threaded.exe
参考サイト
http://arton.hp.infoseek.co.jp/indexj.html
http://www.db.is.kyushu-u.ac.jp/rinkou/ruby/activescriptrubyinstallwindows.html
http://lldev.jp/ruby/tips/ruby_tk_install.html
など・・

こんな感じです
0257デフォルトの名無しさん2010/03/11(木) 19:27:32
環境変数が設定できてないか参照できていないように見える
コマンドプロンプトから

C:\>echo %TK_LIBRARY%
C:\Tcl\lib\tk8.4

C:\>echo %TCL_LIBRARY%
C:\Tcl\lib\tcl8.4

C:\>ruby -e "require 'tk'"
(何もエラーが出ないまま終了)

どうせ RDE がなんかしてるんだろうと思う
0258デフォルトの名無しさん2010/03/11(木) 19:29:51
Ruby と Tk をインストールしてから一度も RDE を再起動してない場合はこうなるな
0259デフォルトの名無しさん2010/03/11(木) 19:43:46
RubyもTclも入ってない環境だったので Windows 7 Ultimate 64-bit で試してみた

1. ActiveScriptRuby 1.8.7(p249) with-winsock2 tcl-stub をインストール
2. ActiveTcl8.5.8.1.291945-win32-ix86-threaded.exe をインストール
(インストーラは管理者として実行)

> cd "C:\Program Files (x86)\ruby-1.8\bin"
> irb
irb(main):001:0> require 'tk'
=> true
irb(main):002:0> Tk.mainloop()
# ここでTcl/Tkのウインドウが表示される
=> true

ウインドウを出すところまでは普通に動くね
02602202010/03/11(木) 19:56:49
>>257
全く同じ結果でエラーも出ませんでした
もしやと思って、test.rbをdblclickしたら普通に起動しました
ruby consoleで
>test.rbとやってもフォームが表示されました

>>258
再起動は何度もしましたが同じ結果でした

>>259
そのTCLはActiveScriptRubyに入っているTCLですか?
それとも別途インストールしたほうのTCLでしょうか?
どこかのサイトにRubyが参照しているライブラリのディレクトリを表示する
コマンドが書かれていたんですけど、閉じてしまってわからなくなった
0261デフォルトの名無しさん2010/03/11(木) 20:00:39
詰まる初心者の9割はRDE使ってるよな
なんなの
0262デフォルトの名無しさん2010/03/11(木) 20:12:21
>>261
誘蛾灯みたいなもんだと思う

コマンドプロンプト上から ruby -e "require 'tk'; Tk.mainloop" を実行してウィンドウが出るのに
RDE のエディタ部に require 'tk';Tk.mainloop と書いて F5 押してエラーログが出るなら RDE の問題
0263デフォルトの名無しさん2010/03/11(木) 20:58:57
zipとrarを回答する短いプログラムを作ろうと思っているんだけど、
OSのコマンドを使わずに作りたい

できればwindowsとlinuxのどっちでも動くようにしたい
教えてエロい人!!
02642202010/03/11(木) 21:01:03
初心者は蛾扱いか
プログラマってこういう人間ばっかりか
0265デフォルトの名無しさん2010/03/11(木) 21:05:01
>>263
ソース読んでそういうライブラリ作るとか。
tarは自分で作ったことあるよ。
0266デフォルトの名無しさん2010/03/11(木) 21:10:03
正直RDEというだけで話聞く気9割減
0267デフォルトの名無しさん2010/03/11(木) 21:13:10
>>264
1〜2日くらいしか考えてないんだろ
そんくらいで怒るなよ
みんな親切にしてるじゃないか
0268デフォルトの名無しさん2010/03/11(木) 21:16:51
>>263
コマンドじゃなければいいだけなのならほぼ全てのスクリプト言語でできるぞ
その言語環境がインストールされていることが前提だが
というかシェルに展開を任すような処理をしてる言語を俺は知らない
02692632010/03/11(木) 21:18:06
>>265
tarを解凍するコードをRubyで書くのって、面倒じゃないんですか?
Rubyの文法がまだ分からないんでorz

頑張って作ってくれと頼まれたもので..
0270デフォルトの名無しさん2010/03/11(木) 21:21:00
>>269
いやtarの展開だけなら数百行でおk。
アーカイブに追加するのは、ちゃんとテストしないと恐ろしいのでやめた。
面倒なら外部コマンドに投げるのが楽。
0271デフォルトの名無しさん2010/03/11(木) 21:25:18
>>266
Rubyを知らない人間がRDEを使うのは嫌われる
Ruby on RailsはRubyとは実質無関係なので他所で
Ruby1.9.1はとりあえず初心者は使うな
RubyInstallerはインストール後がめんどくさいから使うな
Rubyで関数と言って教える何かがあったらそいつから即手を切れ

こんなもん?

>>269
それは
「ZIPとTARの仕様構造を自力で調べてそれを展開するようなプログラムを作ることで勉強しろ」
という意味だろうから話がちょっと違う

Rubyは(少なくとも1.8は)いわゆる文字列とバイナリ列は同じなので
○バイト目から△バイト目までをどうにかする、という処理は普通に書ける

もし「外部コマンドがインストールされてないとZip用ライブラリやTar用ライブラリが動作しないのではないか」
と思っているのなら、そんなことはない
普通にインストールされていればRubyは両者をそれこそ3行くらいで展開する
0272デフォルトの名無しさん2010/03/11(木) 21:27:13
あ、Zipってそっちか
それはrubygemからの追加インストールがいるな
02732632010/03/11(木) 21:27:41
>>268
zipを解凍するライブラリーはrubyにもあると思いますが、
rarはライセンスのせいでライブラリーが・・・と思ったので

>>270
さすがに、制限時間があるなかで「Rubyの文法 + 解凍のコード」を
書くのは厳しいですね〜
0274デフォルトの名無しさん2010/03/11(木) 21:47:28
@hoge = hoge
こんなコードがrubyにはあるわけですが、
perlと同じく変数は宣言しなくていいんですか?

最近のperlはmyをつけて、変数を宣言するのが一般的になってきていると思うのですが
0275デフォルトの名無しさん2010/03/11(木) 21:51:18
>>260
> そのTCLはActiveScriptRubyに入っているTCLですか?
というか ActiveScriptRuby には Ruby と Tcl をつなぐものしか入ってなくて
Tcl は ActiveState のサイトから持ってきた ActiveTcl に入ってる

ActiveTcl をインストール済みなら環境変数 PATH を使って
Ruby/Tk が勝手に Tcl を見つけてくれるはずだよ

でもって
> もしやと思って、test.rbをdblclickしたら普通に起動しました
> ruby consoleで
> >test.rbとやってもフォームが表示されました
RDEの設定に問題があるんだろうから
RDE から ENV['PATH'] して Tcl\bin が含まれているかチェック

もし含まれていなければ環境変数 PATH か RUBY_TCL_DLL に
Tcl\bin でも設定して試してみて
0276デフォルトの名無しさん2010/03/11(木) 21:55:04
>>274
Rubyの変数はハコではない

Rubyのデータは全てオブジェクトでどこか「オブジェクト置き場」に厳然と存在してて、
「変数代入」はその置き場に転がってるオブジェクトにその名前のラベルを貼る行為に同じ

ただのラベルだから宣言はいらない
オブジェクトはすでに存在してるわけだし
@var = hoge は hoge の指す(というか hoge の返す)オブジェクトに
「@var」という4文字のラベルをつける行為


…実際は宣言してるはずなんだが、完全に隠蔽されててRubyスクリプトからは見えないし触れないし関われない
0277デフォルトの名無しさん2010/03/11(木) 22:02:08
プログラミングがしてみたい、というだけなら
今はMSのSmall Basicがいいんじゃなかろうか。
0278デフォルトの名無しさん2010/03/11(木) 22:07:28
>>277
うん、マニュアルだけ見れば十分な既言語取得済該当言語初心者はいつもそう言う

プログラミング初心者に本当に必要なのは十万の解説と百万のサンプル
02792742010/03/11(木) 22:19:12
>>276
オブジェクトは既に存在していて、オブジェクトに対して名前をつけているってことか?

@var = hogeはjavaでいうと

class Hoge {
Test test;
void setTest(Test t) {
this.test = t;
}}

と同じになるの?
0280デフォルトの名無しさん2010/03/11(木) 22:24:11
>>275
ごめん、もうアンインストールした
この2日間、時間の無駄使いしただけだった
02812202010/03/11(木) 22:31:58
環境変数という言葉すら初耳の状態からスタートしたおれにとって
まさに>>278の言う通り

教えてくれても、専門用語だらけでわからない
それでも単語ひとつひとつぐぐりながらこの2日間がんばったが
コード一つ書かないまま、いや、2行だけは書いたが
終わってしまうとはまさに予想外

俺の考えている初心者とプログラマーの初心者の立ち位置が違いすぎた
あなた達とはもう2度と出会うことはないでしょう
さようなら
0282デフォルトの名無しさん2010/03/11(木) 22:36:06
>>278
その見地ならJavaが最適ってことで。
でもなぜかJavaを勧める人はあんまりいない、気がする。
0283デフォルトの名無しさん2010/03/11(木) 22:42:04
>>281
本当にもう見ていないことを期待して書くが、たとえば
キーボードやマウスの使い方、エクスプローラの使い方なんかは言語の範疇外だ
それと同様、コマンドプロンプトやOSの環境変数、標準のインストーラ動作なんかは言語解説の範疇外
コマンドプロンプトに日本語を表示したら化けたとかそういうのも本来無関係
文字コードって何ですかとかシフトジス?ってなんですかとかそういうの知らないのも問題外
HTTPとURI関連のライブラリ使うならRFC準拠の基礎知識くらいは持ってから来いやポートの説明からか泣くぞオラ

とまあ、どこまで巻き戻ることを想定するかは残念ながらこちらで決めさせてもらわざるを得ないのだ
Rubyさんは貧乏でリソースは有限であるがゆえ

もし他の(お金持ちでそれゆえ親切な)言語でプログラミングの楽しさを身に付けたなら、
そのときは気が向いたときにでも振り返ってRubyを検討してみてくれると嬉しい
0284デフォルトの名無しさん2010/03/11(木) 22:46:46
すこぶるRDEは嫌われてるみたいですが、
ここに居る人はどんな環境使ってるんですかね?

自分は会社だとEmacs。家だとEclisp
WindowsだとEmacs使う気が失せるんですよ・・・・。

ちなみに仕事はソフトウェア関連ではなく超初心者です。
0285デフォルトの名無しさん2010/03/11(木) 22:47:03
最近はさすがに減ったが、「プログラミングの全くの初心者にもRubyは簡単」という喧伝が多すぎたな
プログラミングの経験がなくても結構使うまでいける言語である保証は頑張ってしたいところだが、
そこまでの道のりがどなたにも簡単かと言われるとかなり大きな疑問符
0286デフォルトの名無しさん2010/03/11(木) 22:49:52
>>284
えまくすくりーんぷてぃー
何らかの手段でLinuxを起動して接続してその上でRuby使うのがたぶん一番妥当
Windows上でRuby使うとかなんかボリショイサーカス見てる気分になる
0287デフォルトの名無しさん2010/03/11(木) 22:50:44
やろうとしたことが GUI でしかも IDE 使用という
二重のトラップにかかったのが不幸だったといわざるを得ない

『たのしい Ruby 』とか適当な初心者本買って
コマンドプロンプト+テキストエディタでリベンジしてほしいな
地味だけど
0288デフォルトの名無しさん2010/03/11(木) 22:54:57
>>287
コマンドプロンプトではエラーなく動作してる時点で
「あっじゃあこっちでやりますRDEはステで」
という判断にならなかったのがなんかもう供養塔立てて忘れないよう祀るレベル

今度から「RubyではGUIできません」と答えることにしようと思う
0289デフォルトの名無しさん2010/03/11(木) 23:10:44
>>281
プログラミング初心者ならそれこそ1日や2日でマスターできるもんじゃないんだから、
根気よくやらないといかんよ・・・

毎日プログラミングし続けて3年くらい使い続ければそこそこプログラミングできるようになる。
頑張れ
0290デフォルトの名無しさん2010/03/11(木) 23:13:57
>>281
誰にGUIをRubyなら簡単にできると教えてもらったのか知らんが、そいつを殴ってもいいぞ

俺ならC#を押すよ。初心者でもポトペタでいきなりGUIが作れる。
サンプルコードもネットにたくさん。フリーのコンポーネントも一杯ある。

Delphiでゲーム作ってプログラミング覚えた俺だけど、いきなりRubyやってたら多分挫折してる
0291デフォルトの名無しさん2010/03/11(木) 23:23:23
最近で見たRuby初心者でいえば、チンパン団のロプロスはすごかったな。
ニートから1年くらいでphp→Rubyと来てtwitter関連のwebサービス立ち上げて、アフィリエイトで飯食ってる。

でもロプロスはRDE使ってるんだよな。
twitter関連のwebサービスのtwilogはユーザー数数万人だが、Railsすら使ってない。
index.cgiだったぞw

何がいいたいかって、GUIじゃなくてwebに興味持てばまだよかったと思う
0292デフォルトの名無しさん2010/03/11(木) 23:25:56
アフィリエイトって w
0293デフォルトの名無しさん2010/03/11(木) 23:33:24
しょうもないこと言うやつばっかりになったな
0294デフォルトの名無しさん2010/03/11(木) 23:37:41
moduleってC++のnamespaceやjavaのpackageと同じ?
0295デフォルトの名無しさん2010/03/11(木) 23:39:29
クラウドだのシンクライアントだのって数年前のサーバサイドに先祖返りしてるけど
Railsは本命にはならんだろうな
なんだかんだ言ってcgi+javascriptがこの先も主力だろう
0296デフォルトの名無しさん2010/03/11(木) 23:55:12
> なんだかんだ言ってcgi+javascriptがこの先も主力だろう
> なんだかんだ言ってcgi+javascriptがこの先も主力だろう
> なんだかんだ言ってcgi+javascriptがこの先も主力だろう
> なんだかんだ言ってcgi+javascriptがこの先も主力だろう
> なんだかんだ言ってcgi+javascriptがこの先も主力だろう
0297デフォルトの名無しさん2010/03/12(金) 00:00:44
気持ちはわかるが5行はやりすぎだ落ち着け
0298デフォルトの名無しさん2010/03/12(金) 00:04:14
RoR と cgi+javascript じゃ目指してるものが違うから住み分けるんじゃないの?
サイトの数としては後者の方が多くなるだろうけど
0299デフォルトの名無しさん2010/03/12(金) 00:10:38
>>294
C++のnamespaceとJavaのpackageが同じに見えるのなら、
moduleも同じだということにしてもいい。
あ、classも同じでいいよ。
03002942010/03/12(金) 00:14:15
>>299
そんじゃ、moduleもpackageみたいに使います
あえて言うなら、何か違いありますか?

今のところ趣味でプログラミングしているんで、namespaceを使うことが無いんだよね〜
だから、namespaceとpackageの細かな違いがわかんない
0301デフォルトの名無しさん2010/03/12(金) 00:15:24
このスレっていつもこんな感じなのか?
プログラムというよりは「自宅サーバ板」のおまけスレみたいだな
0302デフォルトの名無しさん2010/03/12(金) 01:15:58
3月は春休み
0303デフォルトの名無しさん2010/03/12(金) 01:41:29
>>301
あなたがここに来たのと同じような理由の人がいます
0304デフォルトの名無しさん2010/03/12(金) 04:47:02
CentOS5のrubyが、rubygemsを入れるには古いので、
RPMとソースインストールを共存させようと思いました。
RPMは/usr/bin、ソースインストールは/usr/local/binに入るので、
位置的には問題なく入ったのですが、
このままだとRPMのrubyが優先的に使われます。
ソースインストールのrubyが優先的に使われるようにするにはどうすればいいですか?
0305デフォルトの名無しさん2010/03/12(金) 05:11:32
>>281
Cygwin の Ruby なら簡……と言いかけたがダメだなこりゃw
0306デフォルトの名無しさん2010/03/12(金) 08:24:01
>>304
PATH
03073042010/03/12(金) 08:45:44
ありがとうございます。
よく見たら/usr/local/binが先に書いてあるので
このままでもソースインストールのrubyが優先されました
0308デフォルトの名無しさん2010/03/12(金) 08:59:02
共存か…CentOSにalternative的なものって無かったっけ
0309デフォルトの名無しさん2010/03/12(金) 10:19:39
>>308
man 8 alternatives
chkconfigパッケージに入ってる。
0310デフォルトの名無しさん2010/03/12(金) 11:04:29
>>304
うん、Linuxのパスについての勉強しれ
rubyインタプリタは自分の場所を考慮して起動用設定ファイルを読むから、
/usr/local/bin/ruby と /usr/bin/ruby と /home/ore/usr/local/bin/ruby くらい違えば小細工ゼロで共存するはず
0311デフォルトの名無しさん2010/03/12(金) 12:47:40
updating newgem でメモリ使い切って10分くらいガリガリ言ってる…
0312デフォルトの名無しさん2010/03/12(金) 13:14:55
最近のrubygem updateはプア環境ではまた辛くなってる
1.2くらいの頃が一番よかった
0313デフォルトの名無しさん2010/03/12(金) 13:35:05
スワップに突入するくらいメモリがない場合は
一旦アンインストールしてから再インストールしたほうが所要時間的には早いよね
アップデート対象のgem一覧を返して終了する、みたいなオプションがないのが辛い
0314デフォルトの名無しさん2010/03/12(金) 14:00:19
>>263
7-zipインストールを前提にした上で、それをコマンドラインから叩くのが楽かな。
0315デフォルトの名無しさん2010/03/12(金) 14:15:22
>>314
win32のゲームの配布でRubyスクリプト使ってアーカイブ作ってたときは、俺も7zip使ってたな。
外部コマンドあるならそっちも手っ取り早い
0316デフォルトの名無しさん2010/03/12(金) 14:34:25
ちょっと質問ですが、ふつーはRubyGemsで入れたライブラリなどのリファレンスくるのって何が手っ取り早いんでしょうか?

今までRailsやってて、るりまのchmと
↓で配布されてたchmと(更新停止中)、
http://d.hatena.ne.jp/kabus/20081202
あとは最新のは http://railsapi.com/doc/rails-v2.3.5_ruby-v1.8/ とか見てたんですが、
るりまはともかく、railsのchm配布サイトが更新されてなかったり、
最後のサイトはprivateメソッドやnodocのものが乗ってなかったり、不便に感じてます・・・。

こういう不便さを解消できるものでしょうか?

また、ri入れるとRubyGemsのインスコが激遅になるんで使ってないんですが
(.gemrcに gem: --no-ri --no-rdoc とか書いてます)、
普通はri使うもんなんでしょうか?
0317デフォルトの名無しさん2010/03/12(金) 14:45:15
>>316
基本的にはソース読む
公開されてる部分のドキュメントが内容を正しく反映しているとは限らないし、
端折られてる部分の重要性のほうが高いことがほとんどだから

というかほとんどの場合:nodoc:の使い方が不正
nodocにするべきではないものまでガンガンnodocにしてある
privateメソッドを内部で呼んでいるならその動作もpublicメソッドのドキュメントに反映すべきだし
privateメソッドだからといって説明をしなくてもいいということには絶対にならない

ちなみに「Rubyにはprivateやprotectedは不要」派でございます
0318デフォルトの名無しさん2010/03/12(金) 15:34:10
>>316
自分が参考にする大まかな順番

1.ri(マクロでエディタから呼び出せると便利)
2.自動生成したUMLクラス図
3.ヘルプファイルや書籍(親切・有名なプロジェクトなら)
4.Google先生
5.ソースコード・テストファイル・スペックファイル
6.自動生成したコード片のコールグラフ(ソースに黒魔術満載の場合)
7.職場のネ申
8.2chで祈りを捧げる(時間をつぶすともいう)
9.諦める

riとrdocは中身は同じだからrdocでもいいと思う。好みで。
0319デフォルトの名無しさん2010/03/12(金) 16:26:18
超初心者向けの言語でない事は確実だな。
教祖が使ってるデビアンから入る必要が有るし。特に広く一般に普及してるウィンドウズからは敷居が高い。
0320デフォルトの名無しさん2010/03/12(金) 16:31:50
>privateメソッドだからといって説明をしなくてもいいということには絶対にならない
>ちなみに「Rubyにはprivateやprotectedは不要」派でございます

リファクタリングのコストが高くなりすぎないか?
0321デフォルトの名無しさん2010/03/12(金) 16:33:37
>>319
お前Ruby以外使ったことないだろ
0322デフォルトの名無しさん2010/03/12(金) 18:44:12
拡張子の変更がうまくいきません
foo = "foo.c"
File.extname(foo) = ".o"
とするとエラーが出ます
0323デフォルトの名無しさん2010/03/12(金) 18:51:52
extnameが返すのは左辺値じゃない。

1.9 なら Pathname('foo.c').sub_ext('.o').to_s で。
1.8 なら素直に文字列置換。


0324デフォルトの名無しさん2010/03/12(金) 18:57:48
>>322
# File.extnameメソッドは最後のドット以降の文字列(いわゆる拡張子)
# を返すだけ。設定はできない。
foo = "foo.c"
p File.extname(foo) #=> ".c"

# File.basenameメソッドは第2引数に文字列を与えるとファイル名の末尾から
# その文字列を取り除く。
p File.basename(foo, File.extname(foo)) #=> "foo"

# おそらくあなたがしたい事はこれ
p File.basename(foo, File.extname(foo)) + ".o" #=> "foo.o"
0325デフォルトの名無しさん2010/03/12(金) 19:23:30
rubyの処理系(windows)の違いを教えてください
ActiveScriptRubyと公式な実装(ビルドが沢山ある?)があるみたいですが
0326デフォルトの名無しさん2010/03/12(金) 19:25:51
>>325
C#なら何も悩むことはないよ
0327デフォルトの名無しさん2010/03/12(金) 19:27:05
>>322
C#ならファイル名変更なんて簡単に一行でできるのに
かわいそw
0328デフォルトの名無しさん2010/03/12(金) 19:30:20
>> 323
sub_extなんてものがあったのですね。
ありがとうございます。勉強になりました。
以前リファレンスを探したときは見つけられませんでしたので見直しましたが
やはり1.9のリファレンスにsub_extがありません。

>>324
違います
0329デフォルトの名無しさん2010/03/12(金) 19:31:04
公式なWindowsバイナリは存在しない
(Windowsで動作するようなソースは取り込まれているが、コンパイルしたものそのものは配布していない)
バイナリはすべて有志の個人またはネット上の第三者プロジェクトの提供による

あとは>>6
これでは端折ったが要はActiveScriptRubyがMSWin32でRubyInstallerがMinGW32
この言葉が理解できないならこれ以上の情報は不要なので素直にActiveScriptRuby使え
これはほぼ全てのスクリプトでWindows環境だと思ってもらえる
通常の利用上の問題はないから
0330デフォルトの名無しさん2010/03/12(金) 19:36:13
>>329
windowsで公式な実相が無いなら、適当に選ぶことにしますわ
thx
0331デフォルトの名無しさん2010/03/12(金) 19:38:10
>>328
riには普通にあったよ
るりまにはないようだ
0332デフォルトの名無しさん2010/03/12(金) 19:39:34
>>329
ftp://ftp.ruby-lang.org/pub/ruby/binaries/
これはどういう位置づけなの?
0333デフォルトの名無しさん2010/03/12(金) 19:46:00
>>330
適当に選んでは駄目
実用上、コンパイラが何かということよりも
プラットフォーム文字列にwin32の文字列が含まれているかどうかが重要

C:\>ruby -e "p RUBY_PLATFORM"
"i386-mswin32"

mingw32はRubyに慣れた人向け
スクリプトの修正とかできない人が使ったらどーでもいいとこで詰まるぞ
0334デフォルトの名無しさん2010/03/12(金) 19:49:13
>>332
こんぱいるしたひとがるびーのさばにふぁいるをおいてる

インストーラつきじゃないから少なくとも初心者スレで話題に出すようなもんでもないかと
0335デフォルトの名無しさん2010/03/12(金) 19:54:58
>>332
そういやこれは結局どうなったんだっけ
本気で「ふぁいるおきば」以上の意図はないんだっけ
根性入れて更新するけど公式にサポートしたバイナリではないとかそんな立ち位置なんだっけか
0336デフォルトの名無しさん2010/03/12(金) 19:58:21
Rubyにはサポートレベルというものがあるんだが、
実はWindows系とMacOSXとFreeBSDは同じレベルにあるんだよな。
とてもそんな扱いを受けているようには見えないが。
0337デフォルトの名無しさん2010/03/12(金) 19:58:50
ガラクタの寄せ集め言語なんていらない
0338デフォルトの名無しさん2010/03/12(金) 20:05:45
Pathologically Eclectic Rubbish Listerのこと?
0339デフォルトの名無しさん2010/03/12(金) 20:13:26
初期Rubyユーザが母なるPerlを叩く図式は最高にかっこわるかったな
0340デフォルトの名無しさん2010/03/12(金) 20:13:38
RubyでGUIは鬼門、という方向に話が流れてるなあ…
Pythonのように、インストールすれば即座にTkも使える状態になってれば
少しは違ったんだろうか…
かといって、VisualuRubyを推すのもどうなんだという気もするし…
アレはWindows限定だし…

言語の作者自身が「Windowsなんか知らね」属性の人だったのが
そもそも不幸の始まりだったのだろうか…
Windows嫌ってる人って、GUIも否定的な人が多い印象もあるし
0341デフォルトの名無しさん2010/03/12(金) 20:13:40
何も見ずにもう一回書いてみろ
0342デフォルトの名無しさん2010/03/12(金) 20:14:07
うが。何故瞬間に2レスも間に入るw
0343デフォルトの名無しさん2010/03/12(金) 20:24:04
Wdh=cgi["width"]
<INPUT type="text" name="width" value="50">
print Wdh
Wdh =Wdh / 2

としたところ、
undefined method `/' for "":String
と怒られてしまいました。右も左も分からないので解決策をご教示願います。
0344デフォルトの名無しさん2010/03/12(金) 20:25:04
>>343
とりあえず、てきとうな解説サイト(お勧めは特にない)か本読め
03453432010/03/12(金) 20:25:16
すみません、追記です。
print Wdhの結果は何も表示されませんでした。
03463432010/03/12(金) 20:33:33
>>344
ありがとうございました。
0347デフォルトの名無しさん2010/03/12(金) 20:40:36
>>344でよかったのだろうか…
0348デフォルトの名無しさん2010/03/12(金) 20:43:31
>>347
適切ではあったとは思う
変数の規則知らない上にエラーの読み方わからんのではさすがに遠隔ではどうにも
0349デフォルトの名無しさん2010/03/12(金) 20:45:44
単純には、文字列(String)は整数(Integer)ではないから割り算したいなら
変換しろ、ってだけのことなんだけど。

cgiがCGIクラスのインスタンスだとして、こいつの返すパラメータはかなり
変態なので、今後もいろいろ罠に掛かるかもしれない。

0350デフォルトの名無しさん2010/03/12(金) 20:53:25
>>349
>Wdh
>print Wdhの結果は何も表示されませんでした
0351デフォルトの名無しさん2010/03/12(金) 20:59:49
>>343
たのしいRuby 第3版
http://www.amazon.co.jp/dp/4797357401/
03523432010/03/12(金) 21:25:59
数々のエスパーレスありがとうございます。
すみません、Wdhが読み込まれてない原因はHTMLのFORM文にミスがあったせいでした。

>>349
個人的にRubyの変数に型はないからString/Integerは気にしなくておkという先入観があったのですが、この先入観はトチ狂ってるのですね。
エラーは脱せていませんがおすすめの書籍と関連サイトで粘ってみようと思います。ありがとうございました。
0353デフォルトの名無しさん2010/03/12(金) 21:28:19
変数には型はない。
オブジェクト(値・モノ)には型(クラス)がある。

これは、変数はどんな型のオブジェクト(値・モノ)でも指せるってこと。

0354デフォルトの名無しさん2010/03/12(金) 21:29:51
>>331
へぇそうなんだ
riはファイル数削減のため削除した
ウィルスチェックを毎日フルスキャンする義務があるんで
消したらだいぶスキャン時間が短くなった
0355デフォルトの名無しさん2010/03/12(金) 21:33:08
何度でも言われるがRubyの変数は箱ではなくただのラベル
いつ剥がれるか(変数名で参照できる範囲)は決まってるが、貼る先のオブジェクトは区別しない
03563432010/03/12(金) 21:41:39
わかり易い説明ありがとうございます。
なるほど、ラベルに入ったオブジェクトの型は明示してやる必要があるのですね。
アドバイス通りに検索するとすぐに解答がありました。
Wdh=cgi["width"].to_i
として解決しました。
0357デフォルトの名無しさん2010/03/12(金) 21:52:41
>>356
違う
Rubyには型は存在しない
クラスは型ではない
>>353は誤り
0358デフォルトの名無しさん2010/03/12(金) 21:56:58
タコツボここに極まれり、か
0359デフォルトの名無しさん2010/03/12(金) 22:01:38
そもそも型とかいう考え方は即ごみ箱に捨てろ
0360デフォルトの名無しさん2010/03/12(金) 22:08:36
型(Type)だな
一時期オブジェクトの説明に間違って使われたタイヤキの鋳型(flask)が後を引いて…はいないか
0361デフォルトの名無しさん2010/03/12(金) 22:11:13
>>360
あれは「型」という字にはタイプとテンプレートと鋳型の3つがあるということを失念した例示だったと思う…
タイプやテンプレート相当のものを持った言語を中途半端に習った人大混乱
0362デフォルトの名無しさん2010/03/12(金) 22:15:51
この流れはすごいなあ
というかたのしいRubyってタイヤキの例え使ってなかったか
0363デフォルトの名無しさん2010/03/12(金) 22:25:27
>>362
うん使ってる
言われてみれば言葉の選び方的にあまりよくないな
鯛焼きのカタという言葉は「変数の型」を想起させて混同させる可能性があるのか
第3版が出ようかというときに新しすぎる知見だろそれ

鋳型ならいい?
0364デフォルトの名無しさん2010/03/12(金) 22:34:09
タイヤキの型って、まさしく鋳型じゃない?
>>363の言葉選びのポイントがよくわからん
0365デフォルトの名無しさん2010/03/12(金) 22:44:17
>>363
型ってのはそもそも値の集合と操作の集合なので
別にRubyに使ってもなんもおかしくない

んでクラスとインスタンスは英語で言うところのaとtheの関係なので
タイヤキの鋳型とタイヤキでなんも問題ない
0366デフォルトの名無しさん2010/03/12(金) 22:51:37
数学的な話ではなく、変数の型とクラスの型の2つの混同で
クラスを従来の変数の型のようなものとして誤解してしまう可能性があるという話では
>>356のように
0367デフォルトの名無しさん2010/03/12(金) 23:02:35
それは「変数に型があるかデータに型があるか」の話
型ってそもそもなによって話とは無関係
0368デフォルトの名無しさん2010/03/13(土) 00:09:45
>>336
Windowsならスレッドがちゃんと動くが他のプラットフォームだと動かない、
とかいう罠があったりしたこともあるので、なかなか侮れない。
0369デフォルトの名無しさん2010/03/13(土) 00:13:40
Unicode の U+2295 みたいな表記を Ruby1.8 で該当バイナリ文字列に変換する方法はありませんか
0370デフォルトの名無しさん2010/03/13(土) 00:24:07
>>369
「U+2295」が文字列という前提で

(0.入力文字列の書式をチェックします。)

1.分割します。

U+ … ポイ
22 … 1バイト目
95 … 2バイト目

2.1バイト目と2バイト目をごにょごにょします。Array#pack() 、かなあ?
0371デフォルトの名無しさん2010/03/13(土) 00:27:09
>>369
require 'nkf'
s = 'U+3042 U+3044 U+3046'
puts NKF.nkf('-w, --numchar-input', s.gsub(/U\+(\d+)/){"&#x#{$1};"})

0372デフォルトの名無しさん2010/03/13(土) 00:32:54
>>371
> /U\+(\d+)/
16進数じゃない?

/U\+([0-9a-fA-F]{4,6})/
でいける?
0373デフォルトの名無しさん2010/03/13(土) 00:37:46
>>371
間違ってるぞ

puts NKF.nkf('-w, --numchar-input', s.gsub(/U\+([\da-f]+)/i){"&#x#{$1};"})
0374デフォルトの名無しさん2010/03/13(土) 00:52:39
1.8では、量が多くない場合はNKFに頼るのが間違いないと思う
1.9だと簡単なんだけど
0375デフォルトの名無しさん2010/03/13(土) 01:20:47
$ cat a.rb
require 'nkf'
sikaru = NKF.nkf('-w, --numchar-input', %w(20B9F).map{|s| "&#x#{s};"}.join)
p sikaru
puts sikaru
$ ruby -Ku ./a.rb
a.rb:2: [BUG] Segmentation fault
ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-linux]

うひょう
0376デフォルトの名無しさん2010/03/13(土) 04:18:36
本来はiconv使うべきとは思うが、実用的なのはnkfだしなあ。
0377デフォルトの名無しさん2010/03/13(土) 05:37:51
>>369
"U+20B9F".gsub(/U\+([0-9A-Fa-f]{4,6})/){[$1.to_i(16)].pack("U*")}

>>371
-w, の , が余計
0378662010/03/13(土) 05:57:18
> File.expand_path('あ', '/'.force_encoding(Encoding::ASCII))
Encoding::CompatibilityError: incompatible character encodings: UTF-8 and US-ASCII
となるのですが、これはバグ?
ちなみに実際やりたいことは、Tempfile.open('あ') です。

環境:fedora11、ruby 1.9.2dev (2010-03-06 trunk 26825) [i686-linux]
0379デフォルトの名無しさん2010/03/13(土) 06:46:02
ライブラリのインストールに滅茶苦茶時間掛かるんだが
なにこれ
0380デフォルトの名無しさん2010/03/13(土) 10:12:06
gem search -r hoge
searchっていちいち入力するの面倒いだけど、searchの短いオプションって無いの?
0381デフォルトの名無しさん2010/03/13(土) 10:50:10
スレのバージョンお勧めに従わない人間は自業自得なのでスルー

>>379
そりゃ君のパソコンがプア過ぎるのだよ
気になるなら -V をつけて gem install -V hogehoge すると固まったような時間帯に何してるのか見える
"Building native extensions. This could take a while..." はCで書かれたファイルをコンパイル中(ものによっては遅い)

ごっついライブラリだと定番ライブラリを10個くらい追加インストールするからどんなマシンでも一見とても遅いぞ
来週くらいに gem -V update しても遅いならまたおいで

>>380
sea

なにこれ超中途半端
正確には先頭から文字列にマッチするコマンド探してるので、s と se では複数マッチしてエラー
$ gem s mechanize
ERROR: While executing gem ... (RuntimeError)
Ambiguous command s matches [search, server, sources, specification, stale]
$ gem se mechanize
ERROR: While executing gem ... (RuntimeError)
Ambiguous command se matches [search, server]
$ gem sea mechanize

*** LOCAL GEMS ***

mechanize (1.0.0, 0.9.3)
0382デフォルトの名無しさん2010/03/13(土) 11:01:06
質問ですが、

PythonのPython Image LibraryみたいなRubyの画像処理ライブラリってありますか?
0383デフォルトの名無しさん2010/03/13(土) 11:13:21
>>382
ありません
ImageMagickインストールしてgem install rmagickするしかないねえ
0384デフォルトの名無しさん2010/03/13(土) 11:13:50
用途にもよるけど、既存のCで書かれた画像処理ライブラリを
Rubyから呼び出して使うことが多いと思う。

RMagick(ImageMagickのライブラリを使用)
Ruby/GD2(GD2を使用)
Rcairo(cairoを使用)
など。

ImageMagickは機能過多だ、サムネが作りたいだけなんだという
人向けにImageScienceというのもあるな。サムネ作成専用。
0385デフォルトの名無しさん2010/03/13(土) 11:15:29
>>381
スレの勧めないバージョンインストールしておきながら
お勧めなら引っかからない基本的エラーで文句言うような人はスルー
というのが正しいかと思う

お勧めでなくても入り口以外で引っかかってるなら質問どうぞ
0386デフォルトの名無しさん2010/03/13(土) 11:19:17
>>378
バグっぽい気がしたのでチケット切ってみた。 #2955
0387デフォルトの名無しさん2010/03/13(土) 11:21:38
>>383-384
なるほど、ありがとうございます。
画像出力より入力の機能の方を重視したいので
PILと同程度のライブラリとなるとImageMagickをつかないといけないんですか・・・
FFIするならGIL辺りが良さそうですね。
参考になりました。
0388デフォルトの名無しさん2010/03/13(土) 11:23:54
春休みスレ
0389デフォルトの名無しさん2010/03/13(土) 11:32:34
>>388
間違ってるならあとから正せばいい

質問者には数時間くらいは待ってもらえるといいかもしれん
0390デフォルトの名無しさん2010/03/13(土) 11:55:34
>>380
俺は面倒だから工夫してる。何度も同じコマンドうつのはDRYじゃあるめえ

Windowsなら以下の内容をgems.batとしてパスが通ったところに置いておき、コマンドラインで gems hoge で検索
gem.cmd search --details --both --all %*

Unix系でbashなら、~/.bashrcに以下を書いておいて gems hogeで検索
alias gems="gem search --details --both --all"

あくまで例なのでコッチのほうがいいとか指摘してください
0391デフォルトの名無しさん2010/03/13(土) 11:58:15
あんまりコマンドのエイリアスは設定しない方がいいって
誰か言ってなかった?
0392デフォルトの名無しさん2010/03/13(土) 12:03:40
* 別の環境に移ったときになんぞこれってなるからエイリアスすんな派
* 自分好みに環境をカスタマイズしてこそUNIXのシェルだろJK派

どっちを選ぶも自由
0393662010/03/13(土) 12:03:56
>>386
ありがとうございます!

文句を言いたいわけじゃなく、バグなのか仕様なのか自分の勘違いなのか自信が持てないから、
このスレを利用させてもらっちゃったんですが、相応しくなかったみたいですね。
すみません。
もう書くの止めときます。
03943802010/03/13(土) 12:46:52
>>381
seaね、ありがとう
>>390
linuxを使っているならaliasを使うけど、
今はwindowsを使っているからそんな方法があるなんてわからんかったよ
0395デフォルトの名無しさん2010/03/13(土) 12:55:19
>>393
1.9.1だったなら俺も>>385に同意だけど、1.9.2devは本スレが妥当じゃないかな
0396デフォルトの名無しさん2010/03/13(土) 12:55:54
ライブラリが全然整理されてない印象<Ruby
0397デフォルトの名無しさん2010/03/13(土) 13:11:18
うおお、ライブラリが全然整理されてない印象さんがRubyと喋ったぞ
0398デフォルトの名無しさん2010/03/13(土) 13:45:08
<Rubyでなくて>Rubyだと思う
固定された意味はないけど

質問
エンコーディングプラグマ、通称マジックコメント、は、
該当するマルチバイト文字のようなもんが書かれてないようなライブラリを
自作して公開する場合はつけないほうがいい?
0399デフォルトの名無しさん2010/03/13(土) 13:45:51
あ、>>398は1.9.1の場合ね
0400デフォルトの名無しさん2010/03/13(土) 13:48:35
require 'Qt4'

app = Qt::Application.new(ARGV)

hello = Qt::PushButton.new('Hello World!')
hello.resize(100, 30)
hello.show()

app.exec()
テストコード(コピペ)を動かそうとしているんだけど、動かない
>C:\Ruby\lib\ruby\gems\1.8\gems\qtruby4-2.1.0-x86-mswin32\lib\ はちゃんとあるんだけどね
環境変数が問題なのかな?
0401デフォルトの名無しさん2010/03/13(土) 13:52:19
>>400
動かないのならエラーメッセージを貼っておくれ

スクリプトをダブルクリックして実行したのなら
コマンドプロンプトから実行して
0402デフォルトの名無しさん2010/03/13(土) 13:59:36
おー、WindowsでQtライブラリ使ってる人初めて見た
0403デフォルトの名無しさん2010/03/13(土) 14:08:03
rubygemsでインストールしたパッケージのヘルプってどうやって見れますか?
0404デフォルトの名無しさん2010/03/13(土) 14:09:59
>>398
書かない場合は US-ASCII を指定したのと同義。
ASCII文字しかないなら書いても書かなくても結果は同じ。

8ビット目が立ったシングルバイト文字は入れてないよね?
0405デフォルトの名無しさん2010/03/13(土) 14:12:27
>>403
riかrdocか。
gem server を起動して http://localhost:8808/ でも読める。
0406デフォルトの名無しさん2010/03/13(土) 14:13:09
正規表現の動作が変わるんじゃなかったか
04074002010/03/13(土) 14:14:30
>>401
test.rb:1:in `require': no such file to load -- Qt4 (LoadError)
from test.rb:1
見てのとおりライブラリの読み込みに失敗しています

http://let-your-heart-soar.txt-nifty.com/blog/2008/07/qtqtrubywindow_82d9.html
この通りにやって、C++のチュートリアルは動くようになっています
でも、こんな事をやってqtrubyに関係あるのか疑問

>>402
ruby gtk2を使おうかなと思ったけど、gtk+のライブラリ全然わかんないから
linuxでもqtrubyが動けば、linuxで開発してwindowsでexeを作ろうかな〜と

それに、2週間くらい前にこんな本を買ったし
>入門 Qt 4 プログラミング
>ttp://www.oreilly.co.jp/books/9784873113449/
0408デフォルトの名無しさん2010/03/13(土) 14:15:52
>>403
gemディレクトリ/ruby/1.8とか/doc/ の中にファイルが入ってるので好きなときに読め
ActiveSriptRubyの場合はC:\Program Files\ruby-1.8\lib\ruby\gems\1.8\doc\
0409デフォルトの名無しさん2010/03/13(土) 14:17:57
>>407
require 'rubygems'
require 'Qt4'
0410デフォルトの名無しさん2010/03/13(土) 14:25:42
>>406
US-ASCIIなソースにUS-ASCII以外のマジコメを書く場合?
04114002010/03/13(土) 14:26:51
>>409
文法を覚える前にテストをするもんじゃないですねwww
助かりました、ありがとうございます
0412デフォルトの名無しさん2010/03/13(土) 14:44:08
>>403
HTMLファイルでいいならシェルから

gem environment

した出力の

- GEM PATHS:

の1行目(になかったら2行目)の場所の doc ディレクトリの中に
0413デフォルトの名無しさん2010/03/13(土) 16:20:07
#=>って習慣なの?
0414デフォルトの名無しさん2010/03/13(土) 16:25:32
>>413
http://doc.okkez.net/187/view/help
0415デフォルトの名無しさん2010/03/13(土) 16:26:05
習慣かどうかはしらん
ふつうコメントの直後にスペースをひとつ挟むから
# => value だよな
はちどりのRuby本もそうなってる
0416デフォルトの名無しさん2010/03/13(土) 16:39:23
個人的にはあまり好きではない
まあ、書籍向けの表現だと思う
0417デフォルトの名無しさん2010/03/13(土) 17:23:40
gem install -r XXXX
ERROR: could not find gem XXXX locally or in a repository
何これ?
0418デフォルトの名無しさん2010/03/13(土) 17:33:32
文字通り。
0419デフォルトの名無しさん2010/03/13(土) 17:33:47
>>417
その質問に至った経緯をまず聞こうか
04204132010/03/13(土) 17:37:04
>>419
linuxでそう入力しただけだけど
得にそれ以外に何もしていない
04214202010/03/13(土) 17:37:46
名前を間違えた
>>417ね
04224202010/03/13(土) 17:39:28
ごめん、ただのスペルミスですたorz
0423デフォルトの名無しさん2010/03/13(土) 17:39:54
まずはgem search- rを使うんだ、でその結果から選ぶがよろし
自分で入力せずに素直にbash,zshの補完機能に頼った方がいいと思う
0424デフォルトの名無しさん2010/03/13(土) 21:46:53
他の言語のisXXXメソッドは、XXX?とrubyではなってるみたいですね
三項演算子とかと一緒に使うと読みにくいと思います
お前らはどうやっていますか?

return windows.visible? ? 値A : 値B
0425デフォルトの名無しさん2010/03/13(土) 22:07:58
それほどでも・・・
return (windows.visible?) ? 値a : 値b
0426デフォルトの名無しさん2010/03/13(土) 22:10:57
ぶっちゃけ、うっかり
window.visible? A : B
と書いて怒られることはよくある。
04274242010/03/13(土) 22:13:57
そんなもんですか
そんじゃ気にしないようにしますわ
0428デフォルトの名無しさん2010/03/13(土) 22:20:29
条件演算子はぶっちゃけそれほど使わない
不自然感を感じてるうちにifとかに書き換わるのでむしろラッキー
0429デフォルトの名無しさん2010/03/13(土) 23:03:17
include Enumerable した場合、自分のクラスで each を定義しますが

def each
@array.each do |e|
yield(e)
end
end

def each(&block)
@array.each(&block)
end

どちらが好ましい書き方なんでしょうか?
0430デフォルトの名無しさん2010/03/13(土) 23:27:40
後者

irb1.9> class C; include Enumerable; def initialize; @a=[1,2,3]; end; def each(&b); @a.each(&b); end; end
irb1.9> p C.new.each
#<Enumerator:0x931483c>

irb1.9> class C; include Enumerable; def initialize; @a=[1,2,3]; end; def each; @a.each{|e| yield(e)}; end; end
irb1.9> C.new.each
LocalJumpError: no block given (yield)
04314292010/03/13(土) 23:43:14
>>430
なるほど、ありがとうございます。
0432デフォルトの名無しさん2010/03/14(日) 00:00:43
前者は昔の名残だね。
0433デフォルトの名無しさん2010/03/14(日) 00:10:16
前者は return @array.to_enum unless block_given? を最初
にやればよさそうだけど、今回は無理に使うこともないな。
0434デフォルトの名無しさん2010/03/14(日) 00:16:42
javaかC++のプログラマのための、Ruby入門のサイトを教えてください
0435デフォルトの名無しさん2010/03/14(日) 00:19:42
http://www.google.co.jp/search?q=Ruby%E5%85%A5%E9%96%80&ie=UTF-8
0436デフォルトの名無しさん2010/03/14(日) 00:21:15
C++やJavaの特有事情は忘れて勉強したほうが習得はうまくいきそうな気がする
それこそBasicの制御構造レベルの知識だけある人のほうが吸収早そう
0437デフォルトの名無しさん2010/03/14(日) 00:44:12
>>424
return windows.visible?? a : b
疑問符を二個つなげてすげー疑問って雰囲気を醸し出す
0438デフォルトの名無しさん2010/03/14(日) 00:48:41
>>386 のチケット、 r26909 で修正された。
$ ruby -ve "puts File.expand_path('あ', '/'.force_encoding('US-ASCII'))"
ruby 1.9.2dev (2010-03-13 trunk 26909) [x86_64-darwin10.2.0]
/あ
0439デフォルトの名無しさん2010/03/14(日) 02:15:40
>>430
前者の書き方しか知らなかった。
0440662010/03/14(日) 07:03:08
>>395
今度から本スレに書きます。

>>438
ありがとうございました。
確認しました。
0441デフォルトの名無しさん2010/03/14(日) 08:44:47
春休みで盛況だなw
0442デフォルトの名無しさん2010/03/14(日) 11:49:30
moduleってパッケージとMixinを、実現するための予約語なんだよね
Mixinは実装を持ったインターフェイスみたいなもんだから、
moduleはmoduleを継承する事ができるの?
0443デフォルトの名無しさん2010/03/14(日) 12:18:51
>>438
乙乙!!
0444デフォルトの名無しさん2010/03/14(日) 12:24:46
>>442
> moduleはmoduleを継承する事ができるの?
そもそも文法的に継承できない(module M2 < M1 は SyntaxError)

メソッド検索順位のひとつ上にモジュールをぶちこむ include を使う

module M1; def m; "M1!"; end; end
module M2; include M1; end # M2 の上に M1
module M3; include M2; end # M3 の上に M2
module M4; include M3; end # M4 の上に M3
class C; include M4; end # C の上に M4

p C.new.m
p C.ancestors # 継承とインクルード込みの検索優先順位を表示

結果

"M1!"
[C, M4, M3, M2, M1, Object, Kernel]

検索順位的には継承と同じなので実用上の問題はない

class C1; end
class C2 < C1; end
class C3 < C2; end
p C3.ancestors #=> [C3, C2, C1, Object, Kernel]
0445デフォルトの名無しさん2010/03/14(日) 12:40:44
じゃあ継承でいいじゃん
0446デフォルトの名無しさん2010/03/14(日) 12:46:49
>>445
よくねー

人間を継承した俺がいたとして、翼が欲しいと思ったら

class 俺 < 翼
end

するのか? 俺は翼の一種なのか? 俺は翼の子分か? 人間且つ翼の俺って何?
翼って機能だろ

class 俺
機能追加 翼
end

とするのが筋だろ、わかりやすいし、渾然一体になる継承よりは機能外すのも簡単そうだ
だから翼はモジュールにして、includeで追加する

実際は
俺 = 人間.new(params)
俺.extend(翼)
とするのが妥当ではあるがまあ細かいこと気にするな禿げるぞ
04474422010/03/14(日) 13:12:23
>>444,>>446
ありがとう

>>445
なりすましっぽく見えるレスだな
0448デフォルトの名無しさん2010/03/14(日) 23:18:08
○引数で複数のディレクトリパスを与える
○与えられたディレクトリに対して再帰的にファイルを全て削除する
○ただし.txt拡張子が付くファイルのみ削除しない

プログラミングに不慣れながらこんなスクリプトを書こうと思い、以下のようになりました。

#!/usr/bin/ruby
require 'fileutils'
ARGV.each do |i|
FileUtils.rm(Dir.glob(i + '**/*[^(txt)]'), :force => true)
end

突っ込みどころなどありましたら教えていただけないでしょうか。
簡単なテストをすると意図したように動くのですが少し不安なので質問させていただきました。
自分で怪しいと思ってる箇所は以下の2箇所です。
�@ i + '**/*[^(txt)]' こんな指定の仕方でいいのだろうか
�AそもそもFileUtilを使うべきなのか

宜しくお願いします。
0449デフォルトの名無しさん2010/03/14(日) 23:25:51
>>448
他のスレから飛ばされてきたなら、
飛ばされましたって書かないとダメだよ
0450デフォルトの名無しさん2010/03/14(日) 23:39:50
>>448
死んでいいよ
0451デフォルトの名無しさん2010/03/14(日) 23:41:46
Dir.globのワイルドカードはあまり知らんが(Windowsユーザーなもので)
否定形なのはRubyでやったほうが無難だと思う

Dir.glob(i.sub(/\/?$/,'/**/*')).reject{|e| test(?d,e) or e =~ /\.txt$/i}
0452デフォルトの名無しさん2010/03/14(日) 23:43:52
i ってなんだろう?
そもそもグロブでいいのか。
0453デフォルトの名無しさん2010/03/14(日) 23:45:01
require 'fileutils'
noop = verbose = ARGV.include?(':noop')
ARGV.each do |s|
pathlist = Dir.glob(File.join(s, '**/*'))
pathlist.delete_if{|path| File.extname(path) == '.txt'}
pathlist.each do |path|
FileUtils.rm(path, :force => true, :noop => noop, :verbose => verbose)
end
end

$ ruby ./del.rb tgtdir :noop
0454デフォルトの名無しさん2010/03/14(日) 23:45:48
*[^(txt)] は、
最後の文字が 開き括弧 でも t でも x でも t でも(アゲイン) 閉じ括弧 でもない
という意味になるんじゃないか?



0455デフォルトの名無しさん2010/03/14(日) 23:48:11
>>453
next ですっ飛ばしていいと思う

require 'fileutils'
noop = verbose = ARGV.include?(':noop')
ARGV.each do |s|
Dir.glob(File.join(s, '**/*')).each do |path|
next if File.extname(path) == '.txt'
FileUtils.rm_r(path, :force => true, :noop => noop, :verbose => verbose)
end
end
0456デフォルトの名無しさん2010/03/14(日) 23:48:38
>>454
それはない
0457デフォルトの名無しさん2010/03/14(日) 23:56:02
$ ls
x.c x.doc x.tex x.txt
$ ruby -ve 'p Dir.glob("*[^(txt)]")'
ruby 1.8.7 (2008-08-11 patchlevel 72) [universal-darwin10.0]
["x.c", "x.doc"]
0458デフォルトの名無しさん2010/03/14(日) 23:57:18
はいはい勘違いゴルファーは帰ってね
0459デフォルトの名無しさん2010/03/14(日) 23:58:40
[^(txt)]を検証しただけじゃね?
0460デフォルトの名無しさん2010/03/15(月) 00:00:42
マニュアル嫁でよくね?
0461デフォルトの名無しさん2010/03/15(月) 00:01:32
どっちでもいいよ…
0462デフォルトの名無しさん2010/03/15(月) 00:04:39
ここは初心者スレだろ?
テンプレ読めない奴はカエレ
暴れるなら本スレでやr
0463デフォルトの名無しさん2010/03/15(月) 00:05:49
検証が漏れてないかどうかはどうやって検証すればいいのかという
0464デフォルトの名無しさん2010/03/15(月) 00:11:10
>>458
どこをゴルフと誤認したのか気になる。
0465デフォルトの名無しさん2010/03/15(月) 01:18:47
rmdir -rで綺麗さっぱり消せばいいのにw
0466デフォルトの名無しさん2010/03/15(月) 01:54:20
RubyをWindowsで開発環境構築する方法教えてください。
OSはWindows7です
0467デフォルトの名無しさん2010/03/15(月) 01:55:11
開発環境ってたとえばなーに
0468デフォルトの名無しさん2010/03/15(月) 02:22:10
>>448
「再帰的」と書かれていますが、別に find を使うような要件ではなく
引数のディレクトリ直下のみ走査すればよさそうなので、こんなかんじ
ではいかがでしょうか。

require 'pathname'
ARGV.each do |d|
Pathname(d).children.each do |f|
f.unlink unless f.extname == ".txt"
end
end

# Pathname は標準添付ライブラリだから使ってもいいよね

ところで、Ruby に限らず Perl でも Python でも glob ってシェルの
ワイルドカード展開のエミュレートだと思いますが、機能としては中途半
端(文字列の単純比較 < glob < 正規表現活用)ですし、プラットフォーム
毎に微妙な挙動差も考えるとムダにドツボにはまりそうですし、(少なく
とも「初心者」は)あまり積極的に使わない方がよくない?
0469デフォルトの名無しさん2010/03/15(月) 02:33:02
>>468
書いてるあなたがすでにglobの罠にはまっているという。
再帰的に走査したいんだよ。> **/
0470デフォルトの名無しさん2010/03/15(月) 02:42:35
Dir.glob('**/*') は許容されるべき
というか普通はこれしか使わない
残りは返ってきた配列に入った文字列を正規表現とかでどうにかする
短く1行で書かないと家にいる妻がスナイパーに撃たれるとかそういう時にのみグラブ条件を書く
0471デフォルトの名無しさん2010/03/15(月) 04:18:21
1行記述を強要する妻かw
04724682010/03/15(月) 05:11:59
>>469
うへ、自分がドツボにはまっていました、というか **/* の意味を
知らんかった orz

>>470
を参考に Pathname.glob でも使えばよいのでしょうが、あえて
Find 利用ということで:

require 'pathname'
require 'find'
Find.find(*ARGV) do |f|
t = Pathname(f)
t.unlink if t.file? and t.extname != ".txt"
end


0473デフォルトの名無しさん2010/03/15(月) 05:24:32
>>471
強要しているのはスナイバーかと。>>470 は愛妻家なんですね。
0474デフォルトの名無しさん2010/03/15(月) 08:55:46
いや恐妻家なんだろうw
0475デフォルトの名無しさん2010/03/15(月) 09:57:07
要求を呑まないと何も知らない家族が射殺されるというのはわりとポピュラーな展開かと

グラブ文字処理はメソッド独自だから、明白な全抜き出し以外は正規表現などを駆使、という方向性は妥当
グラブ処理の時点で小細工すると後々遺恨になるぞ
0476デフォルトの名無しさん2010/03/15(月) 10:41:36
なるほど
0477デフォルトの名無しさん2010/03/15(月) 12:43:17
>>466
まずはテンプレくらい嫁よ

・ActiveScriptRubyをインスコ
・るびまのchmをダウンロード
・NetBeans IDE(統合開発環境)をインスコ

これでなんとかなるだろ。Rails開発ならcoLinuxかPortableUbuntu入れろ。
0478デフォルトの名無しさん2010/03/15(月) 12:44:12
>>466
あ、あと、c:\Program Files\以下にはRubyをインスコしない方がいいみたい。
RubyGemsが動作しないとかの報告があった
(今のバージョンはどうかしらん)
0479デフォルトの名無しさん2010/03/15(月) 12:53:05
ねこび〜ん勢力の工作を検知しました
0480デフォルトの名無しさん2010/03/15(月) 13:02:44
Windowsでも、XPなら
c:\usr\local\ruby
とかにインストールした方が精神衛生上よろしい気がする
UACとか入るとそう簡単にはいかないんだろうけど
0481デフォルトの名無しさん2010/03/15(月) 13:17:04
>>479
ねこび〜んはダメだね
コードの補完が遅すぎて使えない
0482デフォルトの名無しさん2010/03/15(月) 13:35:16
ActiveScriptRubyはデフォルトのインストール場所が性善説に過ぎる
ttp://d.hatena.ne.jp/kitamomonga/20100202/ruby_watir_crash_with_autoitx3
まあこれは間違えるほうが悪いんだけれども
0483デフォルトの名無しさん2010/03/15(月) 14:06:24
array = [1,2,3,4,5]とすると配列ができますが、わかんなくなりませんか?
javaとかだったら、IDEが配列だよって教えてくれるけど

やっぱり、最初にこうするべきなんですかね?
array = Array.new
0484デフォルトの名無しさん2010/03/15(月) 14:20:31
>483
ならない

Array.new はリテラルに比べると遅い。
0485デフォルトの名無しさん2010/03/15(月) 14:21:39
>>477
>・るびまのchmをダウンロード
リファレンスchmならASRに同梱されてたはず
それと初心者スレでるりまとは呼ばない方がいいよ
04864832010/03/15(月) 14:27:49
>>484
そうですか
ありがとうございます
0487デフォルトの名無しさん2010/03/15(月) 14:44:11
a = [1, 2, 3, 4, 5] はわけわかんなくならないが

hogedata = []

は

hogedata = {}

との区別がわけわかんなくなることはある
ので、そういうときは

hogedata = Array.new

と書くことはある
要素が入ってれば配列なのか Hash なのかは一発なのでわざわざ初期化なんてしない
0488デフォルトの名無しさん2010/03/15(月) 15:14:22
>>485
> それと初心者スレでるりまとは呼ばない方がいいよ
なんで?
0489デフォルトの名無しさん2010/03/15(月) 16:05:56
というかるりまるびまってなんですか?
0490デフォルトの名無しさん2010/03/15(月) 16:18:20
ここは大喜利すべきか
0491デフォルトの名無しさん2010/03/15(月) 16:21:11
まあ、マニュアルという認識でいいよ
chm形式のマニュアル読んでれば十分
0492デフォルトの名無しさん2010/03/15(月) 16:24:11
>>488
マイナーな専門用語は避けるべき。初心者スレだし。
0493デフォルトの名無しさん2010/03/15(月) 16:25:13
>>488
まさにこの流れが理由
るびまと区別がついてないならなおさら
0494デフォルトの名無しさん2010/03/15(月) 16:50:12
何やら貢献できたようで何より
1.9.1は初心者向けじゃなかったのかー
今まさにダブルクリッコするところだったぜー
ここに来てよかった
ってことでActiveScriptRubyなるものをダウソしてきます
0495デフォルトの名無しさん2010/03/15(月) 16:51:41
ここIDないのね
494は489の人てことでw
0496デフォルトの名無しさん2010/03/15(月) 17:31:53
質問です
エクセルで書かれた名簿を整理して出力するプログラムを書いているのですが、
名前、郵便番号、住所の分離が上手くいきません
与えられた名簿は半角or全角スペースで区切られているのでsplitを使おうと試みているのですが、
例えば以下のように記述すると"―"や"県"が消えてしまいます

puts '山田 太郎   〒0000−0000 山田県山田333-333-333-333'.split(/[  〒]+/)

何か良い知恵があればなにとぞご教授お願いします
ちなみに元のプログラムではputsせず、分離後にある配列に入れています
04974962010/03/15(月) 17:34:18
追記失礼します
rubyはver1,87を使用しております
0498デフォルトの名無しさん2010/03/15(月) 17:48:49
>>496
Excelってことなので、WindowsでSJISのソースコードとして、
スクリプトの先頭に

#! ruby -Ks

もっと推奨の方法があったかもしれない
04994962010/03/15(月) 17:51:44
>>498
ご教授いただいたとおりにしたところ速やかに改善されました!
ありがとうございます
0500デフォルトの名無しさん2010/03/15(月) 17:53:59
Rubyが取り扱う文字のエンコーディングを指定しなければASCIIとして扱われてしまうのでそういうことになる
Ruby 1.8まででは
1 Ruby起動時にスイッチで -Ks とかで指定する
2 スクリプト先頭に
#!ruby -Ks
とか書いておくとスクリプト実行時にそのスイッチが考慮される
3 $KCODE を設定する
4 個々の正規表現のオプションでエンコーディングを指定する

ただし1,2はスクリプト自体のエンコーディングと正規表現の振る舞いの両者を変更するが
3,4だと正規表現の振る舞いを変えるだけなので
スクリプトがシフトJISで書かれていると
p "表"  # エンコーディングを正しく指定しないと 文字列リテラルが終了してないことに("\225\" と同じ扱い)
とかのいわゆるダメ文字(2バイト目が\)問題にぶち当たる

UTF-8やEUC-JPだとそのような問題は起きない(のかな?)
0501デフォルトの名無しさん2010/03/15(月) 18:05:26
るびまってRubyのマニュアルのことだったの?
Ruby Magazineの事だと思ってた
0502デフォルトの名無しさん2010/03/15(月) 18:15:09
>>491
どもです
礼するの忘れてやした
0503デフォルトの名無しさん2010/03/15(月) 18:16:09
るびま:Rubyist Magazine
るりま:Ruby reference manual

Ruby Magazineだと思いこんでると、無関係な記事が多すぎるように映るかもね
0504デフォルトの名無しさん2010/03/15(月) 18:16:29
>>501
どっちでもいいよ
いやよくはないが
初心者的にはるびまは読むべきではない
古くて有害な情報が渾然一体となっている
0505デフォルトの名無しさん2010/03/15(月) 18:19:31
>>503
それ、テンプレに入れたらどうかね?
0506デフォルトの名無しさん2010/03/15(月) 18:24:13
Rubyinstか。失礼。
上のほうよく見たらるびまとるりまの区別が付いてない(人がいる)って話だったのね
読み違えてたわ
0507デフォルトの名無しさん2010/03/15(月) 18:27:44
まだ間違ってるぞw
05084962010/03/15(月) 18:29:54
>>500
亀ですが、ありがとうございます
これを気に文字コードにも意識を向けてみます
0509デフォルトの名無しさん2010/03/15(月) 19:16:01
くっ
Rubyist
0510デフォルトの名無しさん2010/03/15(月) 19:51:11
includeは名前空間を使えるようにするものってことで、おk?
C++@namespaceみたいな感じ
0511デフォルトの名無しさん2010/03/15(月) 19:53:43
なんというか include はふつうに include だと思うのだが
既存言語の機能になぞらえないと理解し難いほど複雑難解な概念なのだろうか
0512デフォルトの名無しさん2010/03/15(月) 20:00:50
includeの動作的には本当に>>444だよね
メソッドを探す順番の指定をする方法のひとつ
0513デフォルトの名無しさん2010/03/15(月) 20:07:50
モジュールの存在理由のほうがムズカシイかもしれない
05145102010/03/15(月) 20:34:24
読んでいた記事が間違えていたらしい

本当の使い方は、結局なんなんだろ?
Mixinを実現するためにしか使わないのか
0515デフォルトの名無しさん2010/03/15(月) 20:39:59
モジュールは、メソッドを用途ごとにまとめるためのしくみ
メソッドがあるだけで、オブジェクトには依存しない機能のカタマリ

共通の機能をメソッドから追い出して別途メソッドを作るのと同じように、
共通の機能をクラスから追い出して別途モジュールを作る(でincludeする)というのも妥当
0516デフォルトの名無しさん2010/03/15(月) 20:45:11
Mixinのためと単なる名前空間のため両方に使われる
05175102010/03/15(月) 20:54:21
>>515-516
thx
0518デフォルトの名無しさん2010/03/15(月) 22:17:04
プロパティも実装されていない糞言語
0519デフォルトの名無しさん2010/03/15(月) 22:27:30
それで遊んでくれるのはPythonスレぐらいだぞ
ここは意外とDRY
0520デフォルトの名無しさん2010/03/15(月) 22:52:35
クラスインスタンス変数とは、そのクラスオブジェクトの特異クラスに属する
インスタンス変数という理解で正しいですか?
0521デフォルトの名無しさん2010/03/15(月) 23:00:11
ごめん、さっき違うスレで質問したけど理解してなかったorz

3 class Hoge
4  def self.set
5    @hoge = "dynamic"
6    $hoge = "static"
7  end
8
9  def self.out
10    puts @hoge
11    puts $hoge
12   end
13 end
14
15 Hoge.set
16 Hoge.out

実効結果
dynamic
static

$hogeと@hogeって何が違うのさ?
0522デフォルトの名無しさん2010/03/15(月) 23:12:55
理解してたらああは言わん
クラスインスタンス変数はクラスオブジェクトが存在する限り存在する

Hoge と書くことで定数 Hoge に Class クラスのインスタンスが Ruby によってセットされる
(同名のクラス定義がなかった場合は定数とみなされ、事前に代入されてない未定義定数でエラー)
で、Hoge.set を実行することでインスタンス変数 @hoge がインスタンスの中でふつうに設定される
それが属するインスタンスとは Class クラスのインスタンスで、つまり定数 Hoge が指すものだ
だから、無理矢理 Hoge の内容を nil にするとインスタンス変数 @hoge はスコープごと失なわれる

irb> class Hoge; def self.set; @hoge='hoge'; end; end
irb> Hoge.set
irb> p Hoge.instance_variable_get(:@hoge)
"hoge"
irb> Hoge = nil
(irb):4: warning: already initialized constant Hoge
irb> p Hoge.instance_variable_get(:@hoge)
nil
0523デフォルトの名無しさん2010/03/15(月) 23:22:49
特異メソッド上で書くからわかりにくい?

class Hoge
@hoge2="hoge2"
end

p Hoge.instance_variable_get(:@hoge2)

は "hoge2" を返すよ
0524デフォルトの名無しさん2010/03/15(月) 23:38:33
"プログラミング言語 Ruby" のp.326のなかほどに
クオート文字列にマッチすることを意図した正規表現の例が以下のように
載ってるんだけど,文字集合内で番号指定後方参照ってできたっけ?

/(['"])[^\1]*\1/

わがRuby1.9.1ではこうなった

re = /(['"])[^\1]*\1/
p %('\1')[re] #=> nil
p %('hoge'hoge')[re] #=> "'hoge'hoge'"

いちおう念のために言っておくと
クオート文字列にマッチする正規表現を求めているわけじゃなくて
文字集合内で後方参照や部分式呼出しができるか否かの確認ね
0525デフォルトの名無しさん2010/03/16(火) 00:23:29
>>457が何でそうなるのか解説求む
0526デフォルトの名無しさん2010/03/16(火) 00:27:01
>>525
>>454
0527デフォルトの名無しさん2010/03/16(火) 00:28:31
globってワイルドカードでも正規表現でもないのか
なんでこんな面倒なもん作ったんだ
0528デフォルトの名無しさん2010/03/16(火) 00:31:15
いや、zshの**を取り込んでるくらいで、
ワイルドカード(UNIXシェルの、だが)だよ。
0529デフォルトの名無しさん2010/03/16(火) 00:31:34
ああ勘違いしてたわ txtだけはじかれてるのかと思った
0530デフォルトの名無しさん2010/03/16(火) 00:32:09
ほぼワイルドカードじゃね?
0531デフォルトの名無しさん2010/03/16(火) 00:32:50
あら遅レス失礼した
0532デフォルトの名無しさん2010/03/16(火) 00:33:41
globにlsコンパチの引数受け付けるようにしてくれ
0533デフォルトの名無しさん2010/03/16(火) 00:34:20
>>532
UNIXで誰がファイル名展開をやってるか知ってるかい?
0534デフォルトの名無しさん2010/03/16(火) 00:44:33
えっ? 誰かがやってるなんてことあるわけないでしょう?
0535デフォルトの名無しさん2010/03/16(火) 03:16:47
echo *
0536デフォルトの名無しさん2010/03/16(火) 03:27:47
もうshellの機能をrubyに組み込むべきだなw
login shellを/bin/rubyshにできていいかもしれないw
0537デフォルトの名無しさん2010/03/16(火) 07:53:49
RubyShell って面白そうだな。
誰も使わないだろうけど。
0538デフォルトの名無しさん2010/03/16(火) 07:55:47
RashだかRushってシェルがなかったっけ
0539デフォルトの名無しさん2010/03/16(火) 08:46:18
イラネ
0540デフォルトの名無しさん2010/03/16(火) 09:30:18
とある人のウェブページに、perlをログインシェルとして使ってみた報告があるぞ。
一度読んでおくといい。
0541デフォルトの名無しさん2010/03/16(火) 09:33:51
いやRushが既にあるから
0542デフォルトの名無しさん2010/03/16(火) 11:51:29
コマンドライン引数は定数じゃないの?
普通に文字列を代入できるんだけど
0543デフォルトの名無しさん2010/03/16(火) 12:01:40
>>542
Rubyの定数は、警告 warning: already initialized constant ARGV
は出るけど代入自体はできる。

あ、あと、 ARGV << 'hoge' なんてのは「定数への代入」じゃないからな。
0544デフォルトの名無しさん2010/03/16(火) 12:03:05
$ ruby -e "ARGV=nil"
-e:1: warning: already initialized constant ARGV

いやきちんと定数として警告出ますが

というかただの定数に過ぎない
Rubyはこれを起動時から用意してるだけで、用意したあとは特別扱いをしない
ただの配列を指す定数で、配列としての動作に従う
配列だから、要素を弄る限りはオブジェクトIDが同一で、定数としての適正を失わない

irb> arr = [1, 2, 3]
irb> arr[0] = 'one'
irb> ARGV[0] = 'one'
0545デフォルトの名無しさん2010/03/16(火) 12:18:43
代入はできるけど、データのコンテナとして ARGV を使うのはおすすめはしない
ただ、これは

グローバル変数と定数を使う→
クラス変数を使う→
インスタンス変数だけを使う→
全部引数での受け渡しにする→
引数の数が大量になって鬱陶しいのでアクセサメソッド経由のインスタンス変数と引数の併用にする

というような変遷をどうしてもみんな辿るので今はまだ気にしなくてもいいとも言える
05465422010/03/16(火) 12:25:44
とにかくコマンドライン引数には入れるなってことでしょ
0547デフォルトの名無しさん2010/03/16(火) 12:47:18
def hoge=
この=って何?
0548デフォルトの名無しさん2010/03/16(火) 13:00:04
>>547
そのまんま
「hoge=」 という5文字の名前のメソッド

ただ、末尾に = があるメソッド定義を Ruby は特別に扱うので、引数つきで定義しておいたほうがいい
あと、foo.hoge = と = の前に空白があっても、Ruby はとりあえず foo のメソッドの中から hoge= を探す

foo.set_hoge(v) とするよりも foo.hoge = v と書けたほうがなんかわかりやすくね、という理由で特別扱いされてる
0549デフォルトの名無しさん2010/03/16(火) 13:07:59
「プログラミングRuby 第2版 言語編」ですが、今から読むには
古すぎますか?それとも第3版が出て、絶版になる前に読んでおく
べき?

たのしいRuby、Well-Grounded Rubyist、初めてのRuby
は読みました。
0550デフォルトの名無しさん2010/03/16(火) 13:08:28
>>548
理解した、ありがとう
0551デフォルトの名無しさん2010/03/16(火) 13:16:29
>>548
>「hoge=」 という5文字の名前のメソッド

通常の方法では代入文でしか呼べないから、ただのメソッドではなく演算子定義の一種と見た方がいい

一応引数無しでも定義できるけど__send__使わないと引数なしでは呼べない
0552デフォルトの名無しさん2010/03/16(火) 13:17:42
>>551
Rubyの演算子はメソッドですよ
0553デフォルトの名無しさん2010/03/16(火) 13:24:32
Rubyのユーザーは学生と暇人が多いのか?
C/C++のスレには全然書き込みが無いんだけど

Rubyは簡単だから、学生に人気があるのかな
0554デフォルトの名無しさん2010/03/16(火) 13:29:41
最近質問が多いね、春休みなんじゃないの?
まあ俺も春休みだけど。。
0555デフォルトの名無しさん2010/03/16(火) 13:30:46
去年からずっとやすm
0556デフォルトの名無しさん2010/03/16(火) 13:31:17
仕事探せ
0557デフォルトの名無しさん2010/03/16(火) 13:32:16
>>555
勝った!
0558デフォルトの名無しさん2010/03/16(火) 13:33:11
>>557
お前は必死に仕事探せ
0559デフォルトの名無しさん2010/03/16(火) 13:35:25
学生と暇人とニートがいないとプログラミング言語は成長致しませぬゆえ
0560デフォルトの名無しさん2010/03/16(火) 13:37:43
学生と暇人なんて放っておいても沸いてくるんだから
無職連中はとりあえず生活基盤作れ
0561デフォルトの名無しさん2010/03/16(火) 13:39:35
暇な香具師を無料で奉仕させてこそオープンソースだしな。
0562デフォルトの名無しさん2010/03/16(火) 14:18:15
>>549
初めてのRuby(yugui本)を読んで自分のものと出来たのなら
好きに進んでいいよ。
0563デフォルトの名無しさん2010/03/16(火) 14:43:10
Rubyはいつになったら仕様が固定されるの?
安心して使えない
0564デフォルトの名無しさん2010/03/16(火) 14:48:04
1.8 は少なくともあと5年は使えるな。
0565デフォルトの名無しさん2010/03/16(火) 15:06:10
>>562
レスどうも。
ツール作りでもしてみます。
0566デフォルトの名無しさん2010/03/16(火) 15:08:40
本の内容が新しいかどうかという話なら、新しくはない

1.8.7の1.9新機能入りプログラミングができないというのはなんとも歯痒い
が、それはWebの情報でアップデートできる程度なので問題はなさそうかも
むしろ最初からこれ教えたら混乱しそう
0567デフォルトの名無しさん2010/03/16(火) 16:19:22
>>563
固定化されることはないと思う
0568デフォルトの名無しさん2010/03/16(火) 16:22:33
>>563はそもそも使わないからどうでもいい
0569デフォルトの名無しさん2010/03/16(火) 18:52:28
ちなみに今から使い始めるならどのバージョンがお勧めなんだ
0570デフォルトの名無しさん2010/03/16(火) 18:58:53
>>569はテンプレも読まないからどうでもいい
0571デフォルトの名無しさん2010/03/16(火) 18:58:54
始めるだけなら 1.8.7 の最新だと思うが、
最新(p249)はString#inspectで最後の多バイト文字が文字化けするという
デバッグや実験中に微妙にイラッとするバグがある。
気になるなら p174 で。
1.9系は夏に1.9.2が出るのでそのときまた判断だな。
0572デフォルトの名無しさん2010/03/16(火) 19:16:27
やっと1.9sp2が出るのか。
0573デフォルトの名無しさん2010/03/16(火) 19:18:21
それはまだ
1.9正式が出ただけ
sp1が今度出る
0574デフォルトの名無しさん2010/03/16(火) 19:22:45
>>571
$KCODE を設定した上で p で日本語を表示しようとした場合に最後の文字がバイト列のままになる

だ
p で日本語を表示しようとさえしなければ問題はないし、俺は表示しようと思ったこともない
というかむしろ p を使うような事態のときは1.9でもデフォルトでバイト列表示しろやわかりにくいわぼけー

どういう日本語を普段扱ってるかで違うんだろうな、このへん
0575デフォルトの名無しさん2010/03/16(火) 19:25:49
p の意義からしてエンコーディングを考慮するほうが正当
ShiftJIS 文字列とか表示されて端末乱れるのはイラッとくるが
0576デフォルトの名無しさん2010/03/16(火) 19:34:14
オブジェクトを機能拡張するためにモジュールで拡張したんだけど
さらに状態の保持が必要な機能追加がしたくなった
モジュールへの修正じゃ対応できないの?
0577デフォルトの名無しさん2010/03/16(火) 19:35:16
require 'Hoge'
include Hoge
なんで、requireにはシングルクォートを付けないと怒られるのに
includeには付けなくても怒られないの?

たまたま、そうなっただけなのかな〜
0578デフォルトの名無しさん2010/03/16(火) 19:41:28
>>577
require は基本的にはファイルパス
実際のファイルの大文字小文字が考慮される
(が、あまりにも面倒なのでファイル名の時点で小文字だけにしようという取り決めがある)

include の引数はモジュール名、つまり定数
0579デフォルトの名無しさん2010/03/16(火) 19:44:08
>>576
すれば

include はするたびにその順番に機能する
0580デフォルトの名無しさん2010/03/16(火) 19:44:15
require 'Hoge' は主ファイル名だからじゃね?
0581デフォルトの名無しさん2010/03/16(火) 19:46:41
>>578-580
ありがとう
05825762010/03/16(火) 19:47:24
>>579 (and all)
どうすれば状態を保持できますか?
0583デフォルトの名無しさん2010/03/16(火) 19:51:32
状態って何
0584デフォルトの名無しさん2010/03/16(火) 19:52:35
>>577
requireも単なる関数的メソッドとして実装されているのも理由の一つ
Hogeというキーワードはrequireの実行を終える前には当然定義されていないし
予約語でもないから、リテラルを使うしか渡す方法(requireメソッドを実行する方法)がない

「Hogeをrequireしろ」「Hogeってなんだ?」
「Hogeを読めばわかる」「だからそのHogeって何だよ」
NameError: uninitialized constant Hoge

Symbolでもよさそうだけどそのへんは>>578なんだろう
05855762010/03/16(火) 20:01:14
もともとのオブジェクト以外に追加の情報を保持したいんですが
たとえば配列クラスに最大値を保持するなど
0586デフォルトの名無しさん2010/03/16(火) 20:22:21
>>585
エスパー発揮で

obj = [1,2,3]
obj.instance_eval{ @mymax = self.max }
obj.define_singleton_method(:mymax){ @mymax }
p obj.mymax

なんか頭の悪そうなコードですまん
0587デフォルトの名無しさん2010/03/16(火) 20:25:30
>>585
本当にしたいことを書いたほうがいいと思う

include ではクラスにもともとあるメソッドを上書きすることができる
でも、おそらくはそれが解決方法ではないと思われ

組み込みや標準添付のクラスを拡張することは好ましいこととは考えられてない(オープンクラスのくせに)
自分でクラスを作ってインスタンス変数とかにオブジェクトを保持するほうがいい
オブジェクトの操作は自作のクラスのメソッド経由で行う

class HogeData
def initialize(a)
raise ArgumentError, 'must be Array' unless a.kind_of?(Array)
@hogedata = a
end
def <<(e)
return if @hogedata.size > 2
@hogedata << e
end
def data; @hogedata; end
end


irb> hoge = HogeData.new([1,2])
irb> p hoge.data
[1, 2]
irb> hoge << 3
irb> p hoge.data
[1, 2, 3]
irb> hoge << 4
irb> p hoge.data
[1, 2, 3]
05885762010/03/16(火) 21:18:59
では言い直します。
自分で書いたクラスのオブジェクトに追加の情報を持たせるには、
継承したり別のクラスに包含すれば可能だけど、すでにModuleで拡張しているので
そこはできるだけ触らずにModuleに少し書き足す程度で実現できないか?
Module内でインスタンス変数的な情報を保持する何かを定義できないか?
0589デフォルトの名無しさん2010/03/16(火) 21:34:12
>>588
よくわからんけどこれでダメ?
ダメならどうダメかをコードとして提示してくれると他の案を言えるかも

module M
end

class C
include M
def foo
@foo
end
end

module M
def bar
@foo = :bar
end
end

obj = C.new
obj.bar
p obj.foo #=> :bar
0590デフォルトの名無しさん2010/03/16(火) 21:53:46
>>586
Moduleの使い方・考え方が間違ってるような気がするなあ

あるクラスがModuleをincludeした時点でそのクラスのインスタンスは
存在していないわけだからインスタンス変数を設定したり保持したり
できないでしょ
アクセサの定義ならModuleでもできるけど

module M
 def data
  @data
 end
 def data=(arg)
  @data = arg
 end
end

class C
 include M
end
0591デフォルトの名無しさん2010/03/16(火) 21:55:33
591レス目
ズレている人はレスデータの再読み込みをしてください
05925762010/03/16(火) 22:01:45
それだとobj.barを書かなければいけません。
質問は、Module内を書き換えるだけで、外側には一切手を加えずに@fooを初期化できるかということです。
0593デフォルトの名無しさん2010/03/16(火) 22:02:14
なにその出来の悪いGUIのリストみたいな現象
0594デフォルトの名無しさん2010/03/16(火) 22:04:28
module内でinitialize書き直したら?
0595デフォルトの名無しさん2010/03/16(火) 22:08:09
>>594
それはできない
0596デフォルトの名無しさん2010/03/16(火) 22:16:53
ほんとにできない?
05975762010/03/16(火) 22:18:32
>>590
インスタンスが作成された時点でincludeされたmoduleを通して
何かしらinitialize的メッセージが送られるようなことは無いよねって話です
あるいはC言語で言うところのスタティック変数は無いよねってことでも結構です


>>594もう試した
0598デフォルトの名無しさん2010/03/16(火) 22:20:06
module M
 def self.included(klass)
  klass.class_eval do
   def initialize
    @foo = :bar
   end
  end
 end
end


class C
 def initialize
  @foo = :baz
 end
 attr_reader :foo
 include M
end

p C.new.foo #=> :bar
0599デフォルトの名無しさん2010/03/16(火) 22:21:22
>>595
めんどくさい、が正解だと思う
include先が継承とかしてたらsuper呼ばんといかん
06005762010/03/16(火) 22:51:09
>>598
すばらしい!!
ありがとうございました。
0601デフォルトの名無しさん2010/03/17(水) 00:02:54
読み込むモジュールを変えるとinitializeが
スイッチされるってのは面白いかも

なんか騙されてるような気もするなあ
0602デフォルトの名無しさん2010/03/17(水) 00:16:58
まあ、あまり性質のよいものではない
0603デフォルトの名無しさん2010/03/17(水) 00:26:10
複雑なマッチ条件を使いたい場合、
if /hoge/ =~ obj.str and /huga/ !~ obj.str and ...
と延々と続いて見づらいのですが、スマートに書けますか?
0604デフォルトの名無しさん2010/03/17(水) 00:27:24
>>603
メソッドにしてしまうのがひとつの手ではある
基本的には全部書くしかない
0605デフォルトの名無しさん2010/03/17(水) 00:31:44
自分が時々やるのは
match1 = obj.str =~ /hoge/
match2 = obj.str !~ /fuga/
match3 = obj.str =~ /fuge/
if match1 and match2 and match3
 body_stmt
end
こう。

でも条件分岐だけで10行超えるなら独立のメソッドにする
0606デフォルトの名無しさん2010/03/17(水) 01:02:19
なるほど。ありがとうございます。
0607デフォルトの名無しさん2010/03/17(水) 03:52:24
&&= 使った方が無駄なマッチングがないんじゃないかな。
正規表現のマッチくらいでそんなに重くなったりしないけど〜。
0608デフォルトの名無しさん2010/03/17(水) 08:17:07
>>481
aptanaよりは軽いぞw

そもそもRubyの文脈考慮するコード補完でまともに高速に補完できるIDEみたことない。
俺もそれは困っているし、もっとよいIDEがあればぜひ教えて欲しい。

irbとかJavaとかC#みたいにバンバン補完できればいいんだけどねー。早々簡単にできないのわかってていってるけどw

テキストエディタレベルの単語補完ならばNetBeansでも高速できる(デフォだとたしかCtrl+K)。
0609デフォルトの名無しさん2010/03/17(水) 08:43:03
現在の単語に続く語を見つけるだけならEmacsでも超高速でできるぞ
0610デフォルトの名無しさん2010/03/17(水) 09:03:06
>>482
> ttp://d.hatena.ne.jp/kitamomonga/20100202/ruby_watir_crash_with_autoitx3
複数引数のsystemを使うべきところだな。
クォートだとなんだの気にする必要がなくなる。
0611デフォルトの名無しさん2010/03/17(水) 09:33:26
>>609
もちろん、vimでもxyzzyでも単語の補完はできるけど、>>481はそういうこといってるんじゃないんだろうし
インテリセンスみたいなやつだろ
0612デフォルトの名無しさん2010/03/17(水) 09:52:28
>>575
> ShiftJIS 文字列とか表示されて端末乱れるのはイラッとくるが
これは 1.9.2 の改善点の一つ
0613デフォルトの名無しさん2010/03/17(水) 11:07:47
実行しているスクリプトが置かれているディレクトリを調べる方法を教えてください
0614デフォルトの名無しさん2010/03/17(水) 11:10:40
__FILE__
0615デフォルトの名無しさん2010/03/17(水) 11:12:36
File.dirname($0)
0616デフォルトの名無しさん2010/03/17(水) 11:19:01
Dir.pwd
06176132010/03/17(水) 11:25:40
絶対パスで欲しいんですが
0618デフォルトの名無しさん2010/03/17(水) 11:27:05
expand_path … は内部で呼ばれてるからいらないんだっけか
0619デフォルトの名無しさん2010/03/17(水) 11:31:17
ああ、やっぱいるよな

>>617
:~$ cat a.rb
p File.dirname(__FILE__)
p File.dirname(File.expand_path(__FILE__))
:~$ ruby a.rb
"."
"/home/ore"
:~$ ruby /home/ore/a.rb
"/home/ore"
"/home/ore"
0620デフォルトの名無しさん2010/03/17(水) 11:38:49
>>481
>>608

NetBeansの文脈依存補完ってどのレベルまで補完してくれるの?
変数の参照先オブジェクト(のクラス)を推測したり
メソッドチェーンの返り値を推測して
続きのメソッド名を補完できたりする?
0621デフォルトの名無しさん2010/03/17(水) 11:40:27
>>618
だいぶ前にあったのは expand_path の基点となる第2引数が自動で dirname されてるという話だと思った
dirname の中で expand_path が使われるということはないように見える
06226132010/03/17(水) 11:51:55
>>619
ありがとうございます
0623デフォルトの名無しさん2010/03/17(水) 11:53:48
$0 と __FILE__ ってどうちがうんですか?
0624デフォルトの名無しさん2010/03/17(水) 11:59:29
$0 は実行中のスクリプトのファイル名
__FILE__ はそれが書かれているファイル自身のファイル名

スクリプトファイルを実行した場合は両者が一致する。
requireなどで他のファイルから読み込まれた場合は一致しない。
0625デフォルトの名無しさん2010/03/17(水) 12:09:46
相談です。
ttp://www.rubylife.jp/ini/japan/index5.htmlのページにある
1 #! ruby -Ku
2 print("表示する")
3 [EDF]
というプログラムをterapadで作り保存してコマンドプロンプトで実行すると、
そのページに依れば文字化けした言葉が出てくるはずなのですが、しかし
test1-3.rb:2: unterminated string meets end of file
test1-3.rb:2: syntax error, unexpected $end, expecting ')'
と表示されます。
でも「表示する」の部分を「日本語で表示」に変えるとちゃんと文字化けします。
原因がプログラムで解決できるものなのかエディタを変えないといけないと解決できないのかも分からないので、
どうしたらよいかを教えてくれないでしょうか?
0626デフォルトの名無しさん2010/03/17(水) 12:29:10
俺はこのサイト(正確には「このチュートリアルサイト群」)はあまり好きではない
初期のSEOがあまりに迷惑で悪い印象が残ってしまっている

はともかく

>>625
あんま気にするな
表示する端末のサポートするエンコーディングと
文字列のエンコーディングが合致していないとまともに動作しない、が本質

ぶっちゃけ、日本語文字列を直接書いてしまったファイルが、-Ks などのエンコーディング指定なしで
日本語文字列を含んだRubyスクリプトとしてきちんと解釈される保証はない
「うわーまともに動いてねーよ」と納得したら次のステップに行ってよし
0627デフォルトの名無しさん2010/03/17(水) 12:36:07
回答ありがとうございます。納得してから気にせず先に進みたいと思います。

どうしても出費を抑えたいのでそういったサイトに頼っているのですが…
自業自得か。orz
0628デフォルトの名無しさん2010/03/17(水) 12:37:44
文字列変えるだけでパースエラーになったりならなかったりってのは
エンコーディングの不一致とは関係ないんじゃない?

表 (SJISのダメ文字のひとつ) の位置が問題なのかな。
0629デフォルトの名無しさん2010/03/17(水) 12:41:59
RubyってWindows用だといろいろあるじゃないですか
Linux用の場合は1つしかないのでしょうか?
このへんであまり考えたくない為、もしLinuxで1つしかなのでしたらLinuxで始めたいと思います。
0630デフォルトの名無しさん2010/03/17(水) 12:42:37
それエンコードの不一致でおきる問題ですがな
0631デフォルトの名無しさん2010/03/17(水) 12:43:33
>>629
1.6.x
1.8.x
1.9.x
いろいろある
Rails のバージョンによってもさらにバリエーションがw
0632デフォルトの名無しさん2010/03/17(水) 12:43:42
>>629
まあ動作的にはひとつとみなしてよいかと
少なくともWindowsのような面倒なことはない
0633デフォルトの名無しさん2010/03/17(水) 12:44:44
Windows 版のどこがどう問題なのですか
0634デフォルトの名無しさん2010/03/17(水) 12:46:21
スレでWindowsという文字を見ると不機嫌になってしまうおじちゃんからいじめを受けます
0635デフォルトの名無しさん2010/03/17(水) 12:48:55
Windowsで使いたければPython使った方が良いんじゃない?
RubyはWindowsのメンテナが不足気味。LinuxかMacで使うべき。

Rails だって Windows はサポートしてなくて、今までたまたま
動いてたけどいつの間にか動かなくなったとか聴いた。
0636デフォルトの名無しさん2010/03/17(水) 12:50:04
ほらな
0637デフォルトの名無しさん2010/03/17(水) 12:51:34
漏れもそう思う
RubyはWindowsと相性が悪い
Pythonの方がWindowsとの親和性は高い
*nixの場合はどっちでも相性が良い
つまりPython>Rubyであって
Rubyを選ぶ理由がないんだよなぁ
0638デフォルトの名無しさん2010/03/17(水) 12:57:48
つまりC#最強ということですね
0639デフォルトの名無しさん2010/03/17(水) 12:57:50
Pythonってインデントで書くから気持ち悪い
0640デフォルトの名無しさん2010/03/17(水) 12:59:06
VBみたいな記述のRubyのが気持ち悪い
0641デフォルトの名無しさん2010/03/17(水) 13:02:12
end ってw
0642デフォルトの名無しさん2010/03/17(水) 13:04:56
Rubyはプログラミングと関係ない部分で手間がかかる
0643デフォルトの名無しさん2010/03/17(水) 13:08:02
>>637
そんなポータビリティが常に必要か?
たとえばMacOSXで動作しないバイナリを吐く言語で書く意味は何?
0644デフォルトの名無しさん2010/03/17(水) 13:11:22
うん、あなたはRubyをWrite once, run anywhereの再来だと吹き込まれたのかもしれないが、それは違う
それを暴いたのは俺たちかもしれないが、殴るなら暴いた人間ではなくあなたを騙した人間を殴れ
0645デフォルトの名無しさん2010/03/17(水) 13:12:45
IronRubyが出る頃には、まともになってる?
0646デフォルトの名無しさん2010/03/17(水) 13:17:27
>>644
似たようなものに「Rubyは初心者にも簡単」があるな

パソコン初心者やプログラミング言語初心者の人にとって独習可能なほど易しいとはそれほど思えない
0647デフォルトの名無しさん2010/03/17(水) 13:34:44
初期(または現在も)の謳い文句に「Cで拡張ライブラリを書くのも簡単」があった
これも

 「(動作上速度等で不満があれば、あなたが使い慣れている)Cで拡張ライブラリを書くのも
 (たとえばこんなふうにC言語でずらっと書けばほら)簡単」

という意味だったからな

初心者として想定しているレベルがそもそもぜんぜん違う
C言語をある程度使えることは当然だし、Perlや主要UNIXコマンドの動作を知っていることや
文字エンコーディングの知識をもっていることも当たり前とされている
(初心者の想定としてはワークステーションの使い方教えられて慣れた感じの大学3年生くらい?)

それはマニュアル見れば一目瞭然
「Cのあれ」「コマンドのあれ」「Perlのやつ」という表現ばかりだ
最近は文章上は若干表現が砕かれたが、知識として知っていることが前提なのは何も変わらないのでむしろ
0648デフォルトの名無しさん2010/03/17(水) 13:37:57
隔離スレに帰れ
0649デフォルトの名無しさん2010/03/17(水) 13:39:04
質問スレだしなあ

 ・ Ruby自体は便利
 ・ ただしコンピュータ初心者やプログラミング初心者が独習可能なほど易しいかは怪しい
 ・ Windows上ではあまり便利ではない
 ・ Rubyは便利だが、儲かることや役に立つこととは別の便利さ

こんな感じ?
0650デフォルトの名無しさん2010/03/17(水) 13:42:47

 ・ Rubyは自分のため
 ・ Javaは給料のため
 ・ Pythonは他人のため
 ・ Rubyがコンピュータ初心者やプログラミング初心者が独習可能なほど易しいかは怪しい
 ・ Rubyは自分のために使うと便利だが、Windows上ではあまり便利ではない

こうだ
0651デフォルトの名無しさん2010/03/17(水) 13:44:48
Windows上で便利に使いこなしてるおれは勝ち組
0652デフォルトの名無しさん2010/03/17(水) 13:53:45
Ruby厨っていつも言い訳してるよねw

便利ってなんだよw
まともなIDEもないのに便利も糞もあるか
ライブラリはバグだらけで使えない
バージョン変わると言語仕様も変わってソース書き直しw
0653デフォルトの名無しさん2010/03/17(水) 13:55:38
>>620
(NetBeans勧めておいてなんだが)文脈依存補完は重くてあまりつかってないんだが、
あまり優秀でない感じがした。irbの補完とどっこいどっこい

静的型付けの言語みたいに hoge.(ドット) ってうっていきなりリファレンス替わりにいきなり補完の候補だして
書き始めることはできない感じだった。補完速度の遅さももちろんあるが、候補が多すぎる。
メソッド名途中まで書いてからならかなりしぼれる。この辺はirbもそうだけど。

どんな技術で補完してるかは詳しくないので公式サイトなりでも調べてもらった方がよい気がする
0654デフォルトの名無しさん2010/03/17(水) 13:56:32
なんか春を感じるな
0655デフォルトの名無しさん2010/03/17(水) 13:57:21
>>646
(Windowsユーザー以外の、パソコン初心者以外には)「Rubyは初心者にも簡単」
0656デフォルトの名無しさん2010/03/17(水) 14:08:29
>>655
それは初心者とは言わない

コンソールでちまちまやっているのが日常のやつなんて一部
それなのに「初心者がはじめるにはどの言語か」という発言だけで
Rubyすすめるバカがいるからな
0657デフォルトの名無しさん2010/03/17(水) 14:12:21
>>656
あれは意図的な悪意だろ
俺らが止めることはもはやできない
0658デフォルトの名無しさん2010/03/17(水) 14:29:59
>>625です。エディタので文字コード指定再読み込みをUTF−8
でしたらちゃんとエラー表示がなくなり日本語が表示されましたので一応ご報告を。
0659デフォルトの名無しさん2010/03/17(水) 14:47:00
なんでもできるなら迷わずC#だな
これでできないことはないし
非常に便利

Rubyのどこが便利なんだよwwアホかw
0660デフォルトの名無しさん2010/03/17(水) 14:55:30
>>652 >>659
もりあがっているところ申し訳ないのだが、その手の話題は本スレでお願いしたい。

Rubyについて Part 39
http://pc12.2ch.net/test/read.cgi/tech/1265467681/
0661デフォルトの名無しさん2010/03/17(水) 15:06:32
これから学ぶならPHPではなくパイソンかルビーがオヌヌメ
って記事読んでこのスレに来たけど騙されたか・
0662デフォルトの名無しさん2010/03/17(水) 15:12:20
>>661
C#がいいよ
未だに進化し続けている言語はこれぐらい
0663デフォルトの名無しさん2010/03/17(水) 15:19:37
>>662
Pythonは進化は一休み宣言してる
Rubyは進化のためなら互換性を切り捨てることを厭わない
0664デフォルトの名無しさん2010/03/17(水) 15:20:58
>>661
これから(   のために)学ぶなら(   な)PHPではなく
(   な)パイソンか(   な)ルビーが(   の点で)(   な人に)オヌヌメ

これが全部埋まってないようなものは与太
信じるほうが悪い
0665デフォルトの名無しさん2010/03/17(水) 15:22:23
女に嫌われるタイプだなw
0666デフォルトの名無しさん2010/03/17(水) 15:22:52
PHPっていらない子なの?
0667デフォルトの名無しさん2010/03/17(水) 15:23:37
>>666
>>664
0668デフォルトの名無しさん2010/03/17(水) 15:37:34
むしろRubyは初心者向け言語ではない難しい言語だっていう
イメージをもっと広めてもらいたい

Rubyが超得意ですキリッっていっても
初心者向け言語ねプッ初心者いらね
とあしらわれるのが現状の就職戦線だからな
0669デフォルトの名無しさん2010/03/17(水) 15:39:20
rubyをやる気なくしてきた…(´;ω;`)
0670デフォルトの名無しさん2010/03/17(水) 15:41:50
今のところプログラムの話題なし

Ruby擁護レス、批判レス、バグ報告レスだけ
0671デフォルトの名無しさん2010/03/17(水) 15:44:53
Rubyで就職狙うなんてありえんわww

これがWindowsもないころなら
簡単と言ってもよかったがな
今更文字処理得意ですなんて言われてもな
真っ黒い画面で文字打つだけって最近のガキじゃ無理だな
0672デフォルトの名無しさん2010/03/17(水) 15:49:34
Rubyをやりたくてやるんじゃない、やってしまうのがRubyist
0673デフォルトの名無しさん2010/03/17(水) 15:51:22
>>671
加齢臭がします><

>真っ黒い画面で文字打つだけって最近のガキじゃ無理だな
小学生でも出来るよそんな事^^
0674デフォルトの名無しさん2010/03/17(水) 15:53:18
Rubyistはスキルも性格もいいので開発メンバーからは良くたよりにされる
だがたよりにされたいからRubyをやってもダメだと言う事が最近わかった
Rubyをやるのは真にRubyistの人だからRubyをやりたくてやるんじゃないやってしまう者がRubyist
PHPerはざんねんがはっきりいってスキルはつかわないし性格も裏メールとかイマイチだから信頼されにくい
0675デフォルトの名無しさん2010/03/17(水) 15:53:46
つまんねっていってるんだよ

C#ならいきなりGUIが作れます
0676デフォルトの名無しさん2010/03/17(水) 15:54:55
>>674
妄想乙

Ruby信者は各スレを荒らしている
キチガイばかりが集まった低脳集団
だから就職でも嫌われるんだよ
0677デフォルトの名無しさん2010/03/17(水) 15:55:50
ブロントさんネタがどこでも通じると思ったら大間違い。
0678デフォルトの名無しさん2010/03/17(水) 15:56:02
>>661 >>669
結局、用途によるよ

(異論はあるだろうが)初心者=Windowsとして・・・

・ちょっとした文字列処理とかの書き捨てるようなスクリプトには便利
・mechanizeとか使って、コピペサイトや2chからエロ画像とか自動収集してきてzip化!!1とかに便利
・かっちょえー、webサービス作りたい!!11とかならcoLinuxかVMWareか入れてRails学ぶ
・別にちょっとしたCGI的webアプリならRailsじゃなくてもいい(やってる人はやってる)

他の言語でもできる、と言われたらそうだけどw

「Rubyはプログラミングを楽しみたい人のための言語」というように言われるが、それはあるとおもうよ。
(ただし、環境整えるの面倒とか、Windowsでこのライブラリ動かねーとか普通にあるのはおいておいてだな)
0679デフォルトの名無しさん2010/03/17(水) 15:56:21
Ruby信者=C++も使えないバカ

ここはC言語わからなくて逃げ出しちゃった子の巣窟
0680デフォルトの名無しさん2010/03/17(水) 15:57:22
一人変なのがすみついたな・・・
0681デフォルトの名無しさん2010/03/17(水) 15:58:11
初心者スレでここは云々言われても
0682デフォルトの名無しさん2010/03/17(水) 15:58:51
ぶっちゃけ、ここが本スレじゃないの?
0683デフォルトの名無しさん2010/03/17(水) 15:59:44
ぷ
0684デフォルトの名無しさん2010/03/17(水) 16:01:16
>>678
それぐらいならC#で余裕で出来るな

まずインストールでこける

無事インストールできてもRubyは日本語リファレンスが充実していない
サンプルがない
ユーザー数が少ない
Rubyスレは低脳ばかり
就職で使えない
特異言語のRuby覚えても他の言語で応用が効かない
ライブラリはバグだらけ
メンテナンス作業をするために時間をとられてWindowsユーザーはまずプログラミングに集中できない

初心者=Windowsユーザーではない
大部分の初心者がWindowsユーザーということだ
0685デフォルトの名無しさん2010/03/17(水) 16:03:11
まともにレスするのが馬鹿らしくなってきた。。。
0686デフォルトの名無しさん2010/03/17(水) 16:04:39
>>684
C#スレから来ました

スレとは関係ないんですが、もしかしてニートですか?
僕も30歳ニートです。
0687デフォルトの名無しさん2010/03/17(水) 16:09:21
>>678
仮想osにubuntuでも入れれば使いやすくなると言うこと?
将来性の面ではrubyはいいと言うのをよく見かけるけど、
これに関しては他のと比較してどうですか?

> Rubyはプログラミングを楽しみたい人のための言語
個人的にはこれが気になる。
趣味だから楽しんでなんぼだし
0688デフォルトの名無しさん2010/03/17(水) 16:11:19
楽しくないよバグだらけで
GUIすらまともに作れない
IDEもないじゃねぇ
0689デフォルトの名無しさん2010/03/17(水) 16:14:08
オーケー
IDEをNGワードにした
WIDEとかAIANMEIDEN(ローマ字綴り)とかの話題をしないようにお願い
0690デフォルトの名無しさん2010/03/17(水) 16:20:12
>>687
とりあえず仮想OSの話だけ。

webアプリ作るのに便利なRailsというRubyで動く代表的なwebフレームワークがあるんだけど、
それを使うには仮想OSやcoLinuxでUbuntuでも入れた方が、格段にトラブルが少ない、ということ。

Railsのコア開発者がそもそもWindows使ってなくて、Windowsだとイマイチ不安定だったり起動が遅かったりするのと、
Windowsでそのまま動かせないライブラリなんかがあったりする。
最終的に動作させるOSもUbuntuとかのUnix系OSになるだろうし、
仮想OSにUbuntuかCentOS入れて開発した方が楽ということ。

ただし、そもそもRailsは共有レンタルサーバーだと動かしにくい(というか重い)のに注意。
だからRails使わずにCGIで頑張って作ってる人もいることはいる。Railsばかり注目されて目立たないけど。


ちなみに、ちょっとしたスクリプト書いたり学習する分には別に仮想OSじゃなくても問題ないだろう。
0691デフォルトの名無しさん2010/03/17(水) 16:20:14
I.D.Eもない糞言語なんて今時やってられるかよ
真っ黒い画面で文字打つだけで何が便利だよww
どこが楽しいんだよwww笑わせるなww
0692デフォルトの名無しさん2010/03/17(水) 16:24:52
ID欲しいな。
IDEは別にいいや。
0693デフォルトの名無しさん2010/03/17(水) 16:30:07
この荒らし他のスレでもいるっぽい?数日続くようなら後でまとめて運用に報告してくるんで、スルーしといて下さい。
下手にレスしてまきぞえ規制くらってもしらん
0694デフォルトの名無しさん2010/03/17(水) 16:43:06
批判されると荒しとかどんだけゆとりなんだよ
0695デフォルトの名無しさん2010/03/17(水) 16:45:18
>>694
荒らしかどうかは内容によらない
0696デフォルトの名無しさん2010/03/17(水) 16:51:26
>>693
C#スレにコピペ荒ししたのお前だな
報告しておいたから
0697デフォルトの名無しさん2010/03/17(水) 17:16:52
コア開発者というのはだいたい10人くらいなのだが、その半分くらいはWindows使ってるはず。
Windows向けのコードも数人書いてるし、定期的にビルドもされている。

Windowsで遅いってよく言われるのは、バイナリモードの話と、プロセスの起動が遅いって話じゃないかな。
前者はFAQだし、後者はcygwinのconfigureで顕著だけどWindows自体の話だからどうにもならん。

Windowsで動かないライブラリがあるのはその逆も真なはずだからいいよね。
0698デフォルトの名無しさん2010/03/17(水) 17:39:30
>>697
1.8.7-p160のような話も混じってるのかもね

ライブラリの不満は動くかどうかよりも
バイナリが用意されていない(gem install一発で使えない)のほうが多い気がする

もしかしたらASRでも一発でいける方法・設定があるのかもしれないけど俺は知らない
0699デフォルトの名無しさん2010/03/17(水) 17:40:51
てかRubyがJava|C++|C#|Pythonじゃないって、だからなんなのって感じ
0700デフォルトの名無しさん2010/03/17(水) 17:41:38
>>699
PerlやPHPもIDEがないから流行ってないんだよきっと
0701デフォルトの名無しさん2010/03/17(水) 18:04:31
ぶっちゃけインタプリタで最強なのはPHPしかないよ
Rubyはメモリ関係が弱いって言うじゃんしかもWinは動作保証してないんでしょ
Pythonはあの独特なコーディングと日本語訳がないから英語読めない人お断りじゃん
0702デフォルトの名無しさん2010/03/17(水) 18:04:32
IDEらっきょ
0703デフォルトの名無しさん2010/03/17(水) 18:05:58
いや別に最強とか決めるためにプログラム言語使ってるわけじゃないんで
0704デフォルトの名無しさん2010/03/17(水) 18:09:19
ASRをインスコしてデスクトップのショートカットをダブルクリックしたら
コマンドプロンプトが起動した…

WINのrubyってコマンドでプログラム書くの?
自分は何か致命的なミスをおかしてますか?
0705デフォルトの名無しさん2010/03/17(水) 18:11:18
>>704
実行環境であって開発環境ではない
0706デフォルトの名無しさん2010/03/17(水) 18:12:23
>>705
なる
もーちょっとあちこち見て回ります
0707デフォルトの名無しさん2010/03/17(水) 18:13:10
>>704
文法に沿って書いたテキストファイルをruby.exeに読み込ませると
ruby.exeが必要なRuby用ファイルを読み込んで
テキストファイル内で指定された動作を対象ファイルとかに対して行う

動作を指定したいことがないような人には無用の長物
0708デフォルトの名無しさん2010/03/17(水) 18:15:54
>>704
あれはRubyを実行するのに都合のいい設定済みのコマンドプロンプト
0709デフォルトの名無しさん2010/03/17(水) 18:18:22
>>704
コンパイルするときいちいちコマンドプロンプトで
ファイル名書いてやらないとだめだよ
またライブラリ使うとオプションも書かないとだめだし
何度もテストするのにいちいちファイル名を文字入力しなければならない
0710デフォルトの名無しさん2010/03/17(水) 18:22:25
スレ住民一同苦笑しております
0711デフォルトの名無しさん2010/03/17(水) 18:23:23
しまったコンパイラじゃなかったわ
0712デフォルトの名無しさん2010/03/17(水) 18:27:58
>>707-709
ども
開発環境はRDE?
なんか上の方でRDEは嫌われてるっぽいんですが
というか仮想OSでUBUNTU辺りでやった方が良いの?
もーなにがなんだかw

>>710
ここで自分の質問が問題あるならこれをもってROMに戻ります
問題あるならここにでも行って帰ってくんなと言う誘導でも下さいね
0713デフォルトの名無しさん2010/03/17(水) 18:28:46
>>712
>>709は無視
無視してないの君だけだ
0714デフォルトの名無しさん2010/03/17(水) 18:33:34
>>712
RDEはRuby無関係のRDE固有のトラブルを自力で切り分けて解決できる人向け
「普通のRubyではできるのにRDEでは違うということはRDEが悪い」という判断ができないと無理

基本はテキストエディタさえあれば作成は可能で、それだけで作ってる人もわりといるが、
そういうことに慣れていないならそれだけで嫌になる可能性はたいへん高い
0715デフォルトの名無しさん2010/03/17(水) 18:36:46
>>712
多分インストールする時点で挫折するでしょう
ここではインストール方法は教えないので自力でやってください
0716デフォルトの名無しさん2010/03/17(水) 18:39:52
>>712
>>710 は >>709 あて

とりあえずWindowsでやってみて不満が出るようなら
仮想マシン+Ubuntuへの乗換えを検討してみたらいいんじゃないか
出回ってる本で勉強するぐらいならWindowsでもまったく問題ないよ

コマンドプロンプトの使い方がわからなかったら
カレントディレクトリっていう概念とCD、DIRコマンドの使い方だけ抑えてくれ
テキストエディタは保存と編集だけできれば十分
0717 ◆Y4m3jU.1h. 2010/03/17(水) 18:47:27
めんどくさ

>>712
なんらかの、IDEと呼ばれるタイプの開発環境を使用したことがないのなら何も勧めない
>>714の言うようにRDEは初心者が使うものではない

どうしてもウィンドウが3つくらいないと死ぬとかそういう病気の場合は
EclipseかNetBeansがいちおうRubyに対応している
ただ、IDEを使ったことがないなら使用は勧めない
IDEの余分な操作で余計に混乱すると思うから

メモ帳でも開いて

puts "Hello, Ruby!"

と1行書いて "a.rb" とでもしてファイル保存して
ruby console ダブルクリックして a.rb を黒い画面にドラッグアンドドロップしてEnterすると

Hello, Ruby!

と黒い画面の次の行に表示される
そんな程度
0718デフォルトの名無しさん2010/03/17(水) 18:50:57
>>713-716
了解
しばらくエディタでやってみます

>>715
インストールは何のインスコを指してるのか判然としないが
とりあえず自力でやります

>>717
めんどくさいことわざわざどうも
0719デフォルトの名無しさん2010/03/17(水) 19:07:10
ruby console ダブルクリックして a.rb を黒い画面にドラッグアンドドロップしてEnterすると

↑この作業を毎回しなければならないのは苦痛でしかない
C#ならF5押すだけで済む
0720デフォルトの名無しさん2010/03/17(水) 19:09:45
a.rbをダブルクリックでおk
0721デフォルトの名無しさん2010/03/17(水) 19:10:33
インタプリタの意味が無いな
0722 ◆Y4m3jU.1h. 2010/03/17(水) 19:12:12
>>719
コマンドプロンプトの履歴は上キー
一覧から選びたいならF7
コマンドライン入力中に履歴補完したいなら入力途中でF8
ファイル名補完は設定によってはタブでも動作する
0723デフォルトの名無しさん2010/03/17(水) 19:15:35
rubyで出来たpukiwikiのパーザってありますか??
pukipaはtableが使えないのでダメでした
0724 ◆Y4m3jU.1h. 2010/03/17(水) 19:16:09
あと

>>719
> C#ならF5押すだけで済む
それはC#の機能ではない
そもそもC#に編集機能などない
それはVisualStudioの機能だ
0725デフォルトの名無しさん2010/03/17(水) 19:25:26
>>709
csc /t:winexe hoge.cs /r:PresentationFramework.dll /r:PresentationCore.dll /r:WindowsBase.dll

こうですね、わかりません
0726デフォルトの名無しさん2010/03/17(水) 19:53:08
>>◆Y4m3jU.1h.
全レスはとても親切だと思うんだけど,
入門書の第1章を読めばわかるレベルの質問ならば
入門書を挙げるだけでいいと思う。

なにも読まずにつまづいて調べもせずに
いきなり人に聞こうとする質問者に
手を差し伸べてたらキリがない。

あと妙な書き込みにレスつけてると相手の思う壺。
0727 ◆Y4m3jU.1h. 2010/03/17(水) 19:55:35
>>726
こうやって可視化すると文句言えるんだな
0728デフォルトの名無しさん2010/03/17(水) 19:59:36
この板はIDあったほうがいいなと思うことはある
0729デフォルトの名無しさん2010/03/17(水) 20:21:10
C#荒し厨(C#厨ではない)にはレスつけずスルー推奨
C#スレ見たけどあっちでも嫌われてるじゃねーか(そりゃそうか
0730デフォルトの名無しさん2010/03/17(水) 21:01:16
>>724
そんなのわかっているし、そういう発言自体がナンセンスなの
言語だけでプログラミングできるとでも思ってるわけ?
開発ツールがなければできないだろ
電波飛ばして直接ハードディスクにデータ書き込む気?
0731デフォルトの名無しさん2010/03/17(水) 21:02:54
>>727
名無しではみんな強気だからな
0732デフォルトの名無しさん2010/03/17(水) 21:25:50
匿名になると無責任になるってばっちゃが言ってた
0733デフォルトの名無しさん2010/03/17(水) 21:26:00
C#で湧いてくる人を見ると
『あぁブビ厨ってこんな感じだったんだろうなぁ』
と、当時が偲ばれてノスタルジックになれる
・・・かもしれない
0734デフォルトの名無しさん2010/03/17(水) 21:29:36
最近Rubyはじめた初心者だけど、IDEとか使わない方が
覚えることが少なくて楽だと思う

確かにDOSプロンプトで作業するとなんかイライラするけど、
cygterm (cygwin+teraterm) の端末なら快適
0735デフォルトの名無しさん2010/03/17(水) 21:36:14
cygwinならminttyもいいぞ
"mintty -"でログインシェルで起動するのを忘れずに
0736デフォルトの名無しさん2010/03/17(水) 22:25:38
DOSプロンプトなんてとっくに滅んで存在しないだろ。
NT系は最初から「コマンド プロンプト」だぜ。

つか、現代のコマンドプロンプトは、ヒストリついてるし、
最初からファイル名補完有効だし、意外と便利。
0737デフォルトの名無しさん2010/03/17(水) 22:30:40
UTF-8も満足に表示出来ないターミナルで便利とかちょっと
PowerShellならまあ…っていまだに使い方わからんけど
0738デフォルトの名無しさん2010/03/17(水) 22:30:48
最近はPowerShellとか言うやつじゃないのか。
0739デフォルトの名無しさん2010/03/17(水) 22:35:13
コマンドプロンプトからPowerShellを起動した場合はUTF-8表示できなかったような
ただPS用にISEっていう統合環境があってそれなら表示できる

ただPSは肝心の文法がキメラでして
0740デフォルトの名無しさん2010/03/17(水) 23:03:53
統合開発環境ってのはまずそいつの使い方を知らないと勉強を進められんからな
知ってりゃいろんな事がボタンひとつで出来るかもしらんが環境変わるとまた使い方を調べにゃならん
そしてWindowsはこれがないとプログラミングがまともに出来ない
0741デフォルトの名無しさん2010/03/17(水) 23:17:35
コマンドプロンプトUTF-8非対応のおかげで、rspecとかautotestで文字化けするから
spec_helperとかでモンキパッチで変換かますか、
autotestでCtrl+Cで強制終了してしまうのを我慢してUTF-8対応cygwinターミナル使うかという感じだ。

PowerShellだと表示出来るのかな、試してみるか・・・
結局、UTF-16に変換かまさないといけなかったらあまりおいしくないなあ
0742デフォルトの名無しさん2010/03/17(水) 23:19:46
>>740
IDEというか統合環境のいいところは、1つ覚えたら大体他もそれなりに使える、というところじゃないかなぁ?
そんなにカスタマイズしなくても馬鹿でも使えるからいいんであって。

emacsとかvimはカスタマイズしないとまともに使えないだろw
0743デフォルトの名無しさん2010/03/17(水) 23:22:51
エディタとコマンドプロンプトの切り替えにAlt+Tabがあれば基本なんとかなるだろ
必須になる意味がわからん
まさかマウスクリックでタスク切り替えしてるのか
0744デフォルトの名無しさん2010/03/17(水) 23:27:18
>エディタとコマンドプロンプトの切り替えにAlt+Tabがあれば基本なんとかなるだろ
そんな環境でプログラミングしてるのか大変だな
0745デフォルトの名無しさん2010/03/17(水) 23:29:29
>>741
ISEはあくまでPowerShell用の環境
コマンドプロンプトの上位互換的使いかたはできないと思われ

もしISEのプロンプトからirbとかしようものなら
延々入力を待ち続けてCtrl+Breakするまで戻ってきますん
0746デフォルトの名無しさん2010/03/17(水) 23:30:16
エディタカスタマイズ派
統合開発環境派
メモ帳+Alt+Tab派

他には?
0747デフォルトの名無しさん2010/03/17(水) 23:30:46
脳内にRubyインタプリタ実装派
0748デフォルトの名無しさん2010/03/17(水) 23:33:58
cmd.exeでUTF-8の表示だけできれば満足ならプロパティでフォントをMSフォントに変更してchcp 65001してやりゃいい
入力はあきらめた方がいいけど
0749デフォルトの名無しさん2010/03/17(水) 23:45:08
ここは本スレか
0750デフォルトの名無しさん2010/03/17(水) 23:49:27
本スレです。
0751デフォルトの名無しさん2010/03/18(木) 00:12:00
なんというかココ酷いね
0752デフォルトの名無しさん2010/03/18(木) 02:39:30
rubyで出来たpukiwikiのパーザってありますか??
pukipaはtableが使えないのでダメでした
0753デフォルトの名無しさん2010/03/18(木) 02:47:05
なんでこんなに粘着アンチは毎日ネガキャンに必死なんだろうな
周囲の環境を否定することでしか自我を保てない哀れな野郎だ
0754デフォルトの名無しさん2010/03/18(木) 03:31:29
Windows厨なんで開発環境といったら
・メモ帳
・TeraPad
・RDE
・Eclipse
ぐらいしかしらんなぁ
IronRubyに限るなら
・SharpDevelop
っていうのもありだな

個人的には、RDEが好きなんだが
バグが多いのと、開発が止まっているのが難点だな
IDEは、どっちかというと、オレのように頭の悪いやつ向けだな
オブジェクトがどこにあるとか、どこにどのメソッドがあるとか
解りやすくしてくれる。
ただし、設定が面倒で、動作がもっさりしてる。

そういうのが嫌いなら、TeraPadとかの高機能テキストエディタがいいね
何にも設定しなくても、それなりに見やすい。
動作も、さくさくしてる。
IDE使ってると見落としがちな、Rubyそのものの動作を体感できる。
初心者は逆にこっちのほうが良いかもね。
しばらく、メモ帳つかってメンドクセーって思うようになったら、IDEつかってみたら?
0755デフォルトの名無しさん2010/03/18(木) 09:12:18
>>748
chcp 65001するとまともに使えない@Vista
0756デフォルトの名無しさん2010/03/18(木) 10:53:23
そういうのが嫌いなら、TeraPadとかの高機能テキストエディタがいいね
                               ^^^^^^^^^^^^^^^^^^^
0757デフォルトの名無しさん2010/03/18(木) 10:59:46
>>756
ttp://www.vector.co.jp/vpack/filearea/win/writing/edit/terapad/
0758デフォルトの名無しさん2010/03/18(木) 11:01:13
メモ用紙で充分
0759デフォルトの名無しさん2010/03/18(木) 11:03:56
自由帳と脳内インタプリタでおk
0760デフォルトの名無しさん2010/03/18(木) 11:25:58
require するファイルがたくさんある場合 thread を使って並列に読み込むと
速くなりますか?
何か副作用はありませんか?
0761デフォルトの名無しさん2010/03/18(木) 11:27:54
>>760
速くならない
0762デフォルトの名無しさん2010/03/18(木) 11:35:30
結局I/Oでブロックされそうだな。
0763デフォルトの名無しさん2010/03/18(木) 11:44:42
インストール時に1枚のファイルにするようにするとかの気遣いが欲しいところ
require 'hoge' するとでっかいひとつ
require 'hoge/foo' だと個別
0764デフォルトの名無しさん2010/03/18(木) 12:00:57
>>761-763
ありがとうございます!
>>763
それは自分がライブラリを作って公開する場合の心得ってことですよね
0765デフォルトの名無しさん2010/03/18(木) 12:50:22
Rubyのスレッドの実装っていまどうなってるんだっけ
0766デフォルトの名無しさん2010/03/18(木) 12:55:03
>>765
実装の話題は本スレで
0767デフォルトの名無しさん2010/03/18(木) 12:57:23
じゃあ質問を変えるよ

requireに限らず、ボトルネック回避以外の目的にスレッドを使って高速化することはできる?
0768デフォルトの名無しさん2010/03/18(木) 12:58:17
>>767
できない
少なくとも1.8ではできない
0769デフォルトの名無しさん2010/03/18(木) 13:00:38
C++で作られているライブラリのバインディングを使っているのですが、
列挙型ってどうすればいいんですか?

>Ruby には言語の機能としての列挙型がない。
>ちょっと使いたいことがあって、いくつかのパターンで列挙型ぽく振舞うものを書いてみた。

こんな事を書いてる記事もあるわけですが、いちいちこんなに面倒くさい事をしないとダメなのかな
0770デフォルトの名無しさん2010/03/18(木) 14:34:37
p true and false #=> true
p true && false #=> false

なんで?
あれなんか凄い勘違いしてる?
0771デフォルトの名無しさん2010/03/18(木) 14:44:51
>>770
p (true and false)
0772デフォルトの名無しさん2010/03/18(木) 14:46:36
>>770
演算子の優先順位のせい

ttp://www.ruby-lang.org/ja/man/html/_B1E9BBBBBBD2BCB0.html#and

p true and false #=> (p true) and false
p true && false #=> p false
0773デフォルトの名無しさん2010/03/18(木) 14:48:24
http://www.ruby-lang.org/ja/man/html/_B1E9BBBBBBD2BCB0.html#and

まず、左辺を評価して、結果が真であった場合には右辺も評価します。and は同じ働きをする優先順位の低い演算子です。
and を伴う式をメソッドの引数に渡す場合は二重に括弧が必要となります。
0774デフォルトの名無しさん2010/03/18(木) 14:49:36
かぶりすぎワロタ
0775デフォルトの名無しさん2010/03/18(木) 14:54:56
>>771-773
thx 把握した
そして and or が嫌いになった

condition = hoge and fuga
も
condition = (hoge and fuga)
か
condition = hoge && fuga
としなきゃいけないわけか
0776デフォルトの名無しさん2010/03/18(木) 14:57:11
ちなみにPerl5の同様の演算子を踏襲している。
式2つをえせ英語として読めるように書きたいときはand/or を使う感じ。
do(it) || raise;
do it or raise;

0777デフォルトの名無しさん2010/03/18(木) 15:02:08
そだな
ttp://perldoc.jp/docs/perl/5.6.1/perlop.pod

集合とかの AND や OR とかのように and や or を使うことはできない
記号優先なのが Perl っぽいといえば Perl っぽいといえなくもなく
0778デフォルトの名無しさん2010/03/18(木) 15:02:43
a == 0 and b < 0
0779デフォルトの名無しさん2010/03/18(木) 15:05:47
perl のは or die と書きたかったがためだけにこうしたような気がしてならない
0780デフォルトの名無しさん2010/03/18(木) 15:56:10
>>779
十中八九そうだと思う・・・
0781デフォルトの名無しさん2010/03/18(木) 15:57:03
Perl はどうかしらんが Ruby で foo or bar and baz は (foo or bar) and baz なので注意。
foo || bar && baz は foo || (bar && baz)
0782デフォルトの名無しさん2010/03/18(木) 17:03:27
RubyもPHPみたいにCGIとして動作させることができるの?
0783デフォルトの名無しさん2010/03/18(木) 17:05:01
もちろん
0784デフォルトの名無しさん2010/03/18(木) 17:15:00
Rubyというか
標準出力を吐けるものならなんでもCGIで使用可能
むしろCGIって名前自体がそういう意味なんだと思うけど
httpdでハンドラが適切に設定されている必要はある
0785デフォルトの名無しさん2010/03/18(木) 17:29:01
>>782
ただしすこし遅い
PHPやPerlより確実に遅い(mod_rubyでも素のPHPに勝てるか怪しい)
遅くてもいいようなまったり用途向け
0786デフォルトの名無しさん2010/03/18(木) 17:29:44
Full Book Now Available For Free!
http://blog.rubybestpractices.com/posts/gregory/022-rbp-now-open.html

http://sandal.github.com/rbp-book/pdfs/rbp_1-0.pdf
0787デフォルトの名無しさん2010/03/18(木) 17:31:38
>>783-784
サンクス
それ出来るならちょうどよかった
PHP以外に何か軽くでも使えるように勉強しようと思ってたんだ



0788デフォルトの名無しさん2010/03/18(木) 17:44:01
Perlすらgeekしか知らないような頃、CでCGI書いてる会社の先輩が
いて、あきれるやら感心するやら。
# もちろんCで書くことが必要な状況ならそうすべきだけど。
0789デフォルトの名無しさん2010/03/18(木) 17:53:38
なぜあきれるやら関心するやらなのか解りかねる。
0790デフォルトの名無しさん2010/03/18(木) 17:56:59
感心ならともかく呆れるのは理解できない
0791デフォルトの名無しさん2010/03/18(木) 18:00:13
rubyでcgi書いててそこから呼ぶモジュールはがんがんCで書いてたなあ
0792デフォルトの名無しさん2010/03/18(木) 19:17:07
>>754
つvim
0793デフォルトの名無しさん2010/03/18(木) 19:55:06
つい先日もCでCGIを書く仕事があった。
非常にアホ臭いとは思ったが、呆れるとか感心するとかいうようなものでもないな。
0794デフォルトの名無しさん2010/03/18(木) 20:04:24
で?
0795デフォルトの名無しさん2010/03/19(金) 00:02:39

文字列:ABC=DEFG
パターン:ABC
文字列がABCから始まるかを調べる方法ありませんか?
0796デフォルトの名無しさん2010/03/19(金) 00:04:32
/\AABC/
0797デフォルトの名無しさん2010/03/19(金) 00:06:41
>>796
それで理解できる人はそういう質問はしないと思う

str = "ABC=DEF"
if /\AABC/ =~ str then
puts "ABCから始まっています"
else
puts "ABCから始まってません"
end


「正規表現」についての知識は必須なので、
使いやすい簡単なのだけは覚えておくといい
07987952010/03/19(金) 00:09:40
>>797
これくらいの事なら、メソッドで準備されているかな?と思ったので
0799デフォルトの名無しさん2010/03/19(金) 00:11:05
こういうのも。

s = 'ABC=DEF'
s.start_with?('ABC') #=> true
0800デフォルトの名無しさん2010/03/19(金) 00:12:36
正規表現で簡単にできる「これくらいの事」をすべて
メソッドで装備していたらかなり煩雑だと思う
0801デフォルトの名無しさん2010/03/19(金) 00:13:45
>>800
そこから先は本スレでどうぞ
0802デフォルトの名無しさん2010/03/19(金) 00:14:31
ruby -e 'p String.instance_methods - Object.instance_methods'
とかやって、それっぽい名前のメソッドがないか探してみるのもよい。
0803デフォルトの名無しさん2010/03/19(金) 00:16:35
>>799はRuby1.8.7以降とRuby1.9.1以降限定
初心者的に大きな問題はないとは思うが

>>800
String#include?さんなめんあ
0804デフォルトの名無しさん2010/03/19(金) 00:19:18
start_with? なのか
starts_with? 派との間で血みどろの抗争が繰り広げられたに違いない
0805デフォルトの名無しさん2010/03/19(金) 00:21:37
>>804
ruby的には、is_a? 以外は原形不定詞を使うとかいう約束だったと思う。
三単現派は ActiveSupport を使えば starts_with? を定義してくれる。
0806デフォルトの名無しさん2010/03/19(金) 00:25:24
JavaはstartsWith, endsWithなんだな

>>805
なるほど
この場合主語が単数なのはほぼ異論無いとして、一人称なのか二人称なのか三人称なのか。
意外と深い?のでその原則は結構ナイスかも。
って日本人ユーザからすると面倒なだけとか。
0807デフォルトの名無しさん2010/03/19(金) 00:27:07
>>804
1.9から降りてきて1.8.7からだよなという確信が持てなくて検索したとき
最初は starts_with? でやったことは秘密だ
ttp://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-talk/216680?216576-217484
0808デフォルトの名無しさん2010/03/19(金) 00:33:55
is_a? との類推で三単現にしてしまうんだよなあ
まったく is_a? は鬼っ子だ

初心者の皆さんにおかれましては is_a? は表記的に時代遅れなので kind_of? 使ってくださいね
0809デフォルトの名無しさん2010/03/19(金) 00:36:36
>808
is_a? と kind_of? は意味が違うことをわかってんの?
08108042010/03/19(金) 00:39:03
>>805
興味深いマジレスありがとう
原型不定詞ってなんだっけってなったのは内緒
0811デフォルトの名無しさん2010/03/19(金) 00:42:42
>>809
横からだけど、kwsk

古いのと一応最新ぽいのでも同じ扱い(てか丸移し)だけど、違うの?
ttp://www.ruby-lang.org/ja/man/html/Object.html#is_a.3f
ttp://doc.okkez.net/static/191/method/Object/i/kind_of=3f.html
0812デフォルトの名無しさん2010/03/19(金) 00:47:43
>>809
あまり is-a と kind-of を区別してるとは思えないし、そもそも実装上区別してねえ
んなこと言うなら is_a? から kind_of? と instance_of? の機能を、kind_of? から instance_of? の機能外せ
0813デフォルトの名無しさん2010/03/19(金) 00:48:17
instance_of? と混ざったかな?
08148042010/03/19(金) 00:49:18
>>807
�d。読んできた

他の名前との一貫性からstart_withになったけど
Pythonに敬意を表してstarts_withにするのしないのって話もあったのかw
0815デフォルトの名無しさん2010/03/19(金) 01:42:41
File.exist?
File.exists?
みたいに両方あるのもあるよね。
0816デフォルトの名無しさん2010/03/19(金) 01:46:21
ポリシーのまったく無かった時代の古いメソッドだな
まあ今もポリシーとか薄いけど
0817デフォルトの名無しさん2010/03/19(金) 01:59:49
だからRubyは汚いんだよ。
Pythonの美しさをみ・・Pythonも似たようなもんか。
0818デフォルトの名無しさん2010/03/19(金) 02:04:58
メソッド(に相当するもの)の名前のつけ方は似たようなもんだな
どこも決定打に欠ける
永遠の問題なのかもしれない
0819デフォルトの名無しさん2010/03/19(金) 06:22:30
rubyはCASを目指しているのですか?
0820デフォルトの名無しさん2010/03/19(金) 06:39:55
カス
0821デフォルトの名無しさん2010/03/19(金) 07:20:02
そろそろrubyの次の言語で再出発する季節だな。
今度はguiとideとrails標準で。
0822デフォルトの名無しさん2010/03/19(金) 08:16:52
こうして >>821 は旅立って行ったのであった。

ー完ー
0823デフォルトの名無しさん2010/03/19(金) 10:52:45
アップキャストとダウンキャストがないから不便だ
0824デフォルトの名無しさん2010/03/19(金) 11:02:38
e-
0825デフォルトの名無しさん2010/03/19(金) 13:03:05
wxRubyをいじってみたくて導入しようとしたら
cygwin用が用意されてなくてコンパイルもそのままじゃ出来なかった
↓みたいに_rb_〜〜が見つからないって大量に言われるんだけど
Rubyのソースとか必要なのか?どっかのパス指定ができてないだけなのか?

/home/hoge/wxruby-2.0.1/src/Icon.cpp:1410: undefined reference to `_rb_define_class_under'

/usr/lib/ruby/1.8/i386-cygwin/ruby.h:697: undefined reference to `_rb_cFixnum'

色々いじってコンパイルしてみてるけど諦めてRuby自体mswinにするか・・・
0826デフォルトの名無しさん2010/03/19(金) 13:10:31
Makefile とか configure 読めないのに cygwin 使おうとする男の人って…
0827デフォルトの名無しさん2010/03/19(金) 13:16:42
なんかインストールだけでなく運用自体が茨の道のようにも見える
mswin32でやったほうがよさそうなふいんき
0828デフォルトの名無しさん2010/03/19(金) 13:23:04
>>826
そりゃここでこちょこちょ勧める人がいるからだろ
ぶっちゃけ初心者にはcolinux+Debianとか勧めておけばいいのに

cygwinはwin,*nix両方知らなきゃいけないから難しいよ
0829デフォルトの名無しさん2010/03/19(金) 13:23:31
>>825
こういうひとってなんでRubyやめようと思わないのかな
0830デフォルトの名無しさん2010/03/19(金) 13:25:06
はじめに Ruby ありきなんだよな
目的と手段を取り違えるタイプ
0831デフォルトの名無しさん2010/03/19(金) 13:26:35
>>828
俺は勧めてないしテンプレにも一文字もないぞ

>>830
Rubyで遊んでみるのが目的なのに他の手段でウィンドウ作ってどうする
0832デフォルトの名無しさん2010/03/19(金) 13:51:22
色々勉強足らずのようなので精進します
Rubyありきなのはどうしようもないですがcygwinありきだった点を直そう
おとなしくmswin32でいじることにします
0833デフォルトの名無しさん2010/03/19(金) 13:52:10
「Rubyの初心者」のスレなのに
「プログラムの初心者」と決めつけて・勘違いして回答してるのが何人かいるな
0834デフォルトの名無しさん2010/03/19(金) 13:55:21
>>833
「OS操作や他言語プログラミング等にある程度造詣があってRubyに挑戦しようとしてる人」
の質問はそれなりに洗練されている

そういうような質問にはそれなりの回答が返ることが多い

プログラミング経験者なのにPC初心者向けな回答をされたという場合は
そりゃ質問の書き方がまずいのだろ
0835デフォルトの名無しさん2010/03/19(金) 14:14:38
>>829
なんでRubyやめようと思うと思うの?
0836デフォルトの名無しさん2010/03/19(金) 14:32:24
なんでRubyやめようと思うと思わないの?
0837デフォルトの名無しさん2010/03/19(金) 14:42:45
思わないことに理由を求められても
0838デフォルトの名無しさん2010/03/19(金) 14:53:56
>>837
このひとはなにもかんがえてません
ずっといます
0839デフォルトの名無しさん2010/03/19(金) 15:04:33
いったい誰と戦っているんだ
0840デフォルトの名無しさん2010/03/19(金) 15:07:15
中高生の春休みにはまだちょっと早いと思うんだが、
ここ数日どのスレもなんか雰囲気違うな
0841デフォルトの名無しさん2010/03/19(金) 15:13:29
もっと簡単に使えるrubyみたいな言語が有ればいいのにね。
visual rubyとかmsが用意すればいいのに。
0842デフォルトの名無しさん2010/03/19(金) 15:14:59
諦めきれずにやってたらインストールできた
単純に-lrubyが足りなかっただけでした
やっぱり次につまずくまでcygwinで行こうと思います
0843デフォルトの名無しさん2010/03/19(金) 20:39:12
>>841
簡単に使えるってどういう意味よ。
0844デフォルトの名無しさん2010/03/19(金) 22:09:24
るび厨って未だにema糞だから言語、エディタ、デバッガ、ライブラリ、ドキュメントが
高度に統一された環境がどれほど快適であるか理解できないんだろうね。
0845デフォルトの名無しさん2010/03/19(金) 22:11:15
Rubyを使ってない人がなんでこのスレにいるの?
0846デフォルトの名無しさん2010/03/19(金) 22:30:11
かまってくれるからだろう
0847デフォルトの名無しさん2010/03/19(金) 22:59:43
1.9 への覚悟を決めた
さっき 1.8.7 を入れた
0848デフォルトの名無しさん2010/03/20(土) 09:10:20
visual basicみたいなrubyがあればいいってことだろ。
phpなんかも、php + sql starter見たいなの配布してるしねえ。
rubyもそういうお手軽さを提供しないと、いつまでもマニア向けのまま終わる事に成る。
0849デフォルトの名無しさん2010/03/20(土) 09:21:20
Windows環境で手軽なものが必要だろうね
LinuxとかUnix系使ってる場合は使い始めるのにそんなに壁無いと思う
0850デフォルトの名無しさん2010/03/20(土) 09:24:08
PerlやPythonやPHPでIDEセットみたいなものが普及したらそのとき考える
他の言語で普及してないということはそれなりに理由があるもんだ

それと、Rubyはバージョンが1未満のころから一貫してマニア向けでしかない
これはPerlも同じ
0851デフォルトの名無しさん2010/03/20(土) 09:49:47
「マニア向け」の意味に依るけど,Unix系使ってきて他の言語
知ってるととっつきやすいけどな
別にRubyだけってわけでなく他の言語メインに使ってる
0852デフォルトの名無しさん2010/03/20(土) 09:57:27
というかRuby自体どう見ても第二言語だろ
sedやawkを知ってるとアホみたいに作業効率が上がるのと同じ
単語操作はCでもできるがsedやawk経由のほうが作業速度は速い
0853デフォルトの名無しさん2010/03/20(土) 09:58:10
rubyからメールを送れるプログラムてできる?
ただし、OSがHomeeditionこれて無理かな?
0854デフォルトの名無しさん2010/03/20(土) 10:01:02
>>853
できるよ
普通にSMTP操作すればいい
0855デフォルトの名無しさん2010/03/20(土) 10:05:26
地味に難易度上げてるな
0856デフォルトの名無しさん2010/03/20(土) 10:08:27
>>851
Windows で Ruby のとっつきにくさって
言語の仕様とか経験とか以前に
インストールの面倒臭さとか
cygwin/mingw混在とか
本質と関係ないどうでも良い部分で
無駄に時間取られることだよ
0857デフォルトの名無しさん2010/03/20(土) 10:17:33
>>853
できるけど、それを質問してくるレベルの知識ではできない。
0858デフォルトの名無しさん2010/03/20(土) 10:19:14
おっさんしゃべり場になってるな
0859デフォルトの名無しさん2010/03/20(土) 10:23:00
>>855
当たり前だ
自動車ってどうやってエンジンかけて運転するんですかという小学生の質問に
仔細に答えるわけにはいかない
0860デフォルトの名無しさん2010/03/20(土) 10:29:40
>インストールの面倒臭さとか
>cygwin/mingw混在とか

gemがどうのapacheがどうのとなるとメンドイけど
単体で使うだけのインストールなら
mswin32のzipをダウンロードして解凍してPATHをとおすだけ

言い換えればその面倒さはRuby本体以外の部分にある
0861デフォルトの名無しさん2010/03/20(土) 10:34:29
cygwin使っておきながら、他のコンソールアプリケーションとのバッティングに文句言うとかありえん
0862デフォルトの名無しさん2010/03/20(土) 10:38:17
ActiveScriptRubyをダウンロードしてダブルクリックしていくつかボタンクリックする作業が難しいというような人は
Rubyにまだ向いてないとおもう
0863デフォルトの名無しさん2010/03/20(土) 10:54:15
初心者スレでいうのもなんだけど、そこまで初心者に媚びる必要はないと思う。
0864デフォルトの名無しさん2010/03/20(土) 10:58:50
>>799
s = 'ABC=DEF'
s.rindex('ABC', 0) #=> true
s.rindex('DEF', 0) #=> false
なら古いバージョンでも動く
0865デフォルトの名無しさん2010/03/20(土) 11:54:19
>ttp://rubyist.g.hatena.ne.jp/hsyd/20060621/p3
>foo{|arg|
> puts "given block. arg=#{arg}"
>}

argには何が入るの?
0866デフォルトの名無しさん2010/03/20(土) 11:59:33
>>865
yield の引数
08678652010/03/20(土) 12:04:20
>>866
thx
0868デフォルトの名無しさん2010/03/20(土) 13:15:16
>>863
激しく同意。

自分はさらに極端で、プログラム初心者、PC初心者は放置でいい気がする。
第二言語としてRubyを使おうとしてる初心者に対して優しくするのはよいと思うけど。
0869デフォルトの名無しさん2010/03/20(土) 13:27:46
んなこといったらこのスレ自体いらんがな
0870デフォルトの名無しさん2010/03/20(土) 13:30:23
>>869
いいえ
0871デフォルトの名無しさん2010/03/20(土) 13:34:33
×しょしんしゃ
○しょしんもの
これを受け入れる
0872デフォルトの名無しさん2010/03/20(土) 13:40:24
こっち系の才能のある人ってやっぱりアスペとかコミュ能力に問題抱えてる人が多いのかしら
そう思わせるレスが多い
0873デフォルトの名無しさん2010/03/20(土) 13:42:47
俺の〜の頃はとか語りだしちゃう馬鹿
誰もお前には聞いてない
0874デフォルトの名無しさん2010/03/20(土) 13:47:00
お前にもな
0875デフォルトの名無しさん2010/03/20(土) 13:48:30
やめろやめろ喧嘩になる
0876デフォルトの名無しさん2010/03/20(土) 13:53:34
話は変わるけど、1.8.7-p249でUTF-8の文字列をinspectすると末尾の全角文字が
文字化けする状態は放置されたままなんだね。
とりあえず、string.cを修正してからmakeすれば直るんだけど。
1.8.8では直るらしいから、それでいいじゃんと思われてるのかな。
0877デフォルトの名無しさん2010/03/20(土) 14:10:09
p249の次のパッチレベルリリースで直るんじゃない。
緊急再リリースするほどの問題ではないという判断なのでしょう。
0878デフォルトの名無しさん2010/03/20(土) 16:56:07
javaのinstanceofのように、変数とクラスを比較して同じか調べたいのですが
誰か教えてください
0879デフォルトの名無しさん2010/03/20(土) 17:25:57
kind_of?
0880デフォルトの名無しさん2010/03/20(土) 17:39:03
>>879
thx
0881デフォルトの名無しさん2010/03/20(土) 17:42:42
OneClickInstallerでRubyをインストールしてしまったので、1.8.7にバージョンアップしたいのですが、
現在インストールしているRuby1.8.6をアンインストールすべきでしょうか?

Ruby on Rails と Ruby gemsもインストールしているので、アンインストールしていいものか悩んでいます。
よろしくお願いします。
0882デフォルトの名無しさん2010/03/20(土) 18:11:00
>>881
Rubyのバージョンアップはアンインストール前提
既存の Ruby の設定を考慮する Windows 用インストーラーというのも今のところ存在しない

現時点で gem list するとインストール済み gem 一覧が出てくるのでそれメモっておいて 1.8.7 でもインストールしろ
1.8.6 → 1.8.7 であるなら GEMHOME に該当するディレクトリを退避して上書きでも動作はするはずだが保証はしない
0883デフォルトの名無しさん2010/03/20(土) 18:16:30
OneClickInstaller 1.8.6とASR 1.8.7を共存させたら

・cmdからruby script.rb
->1.8.6環境で起動

・ruby consoleからruby script.rb
・cmdからscript.rb
・rbファイルのダブルクリック
->1.8.7環境で起動

パッケージが違うとはいえ、混沌とした
アンインストールまじおすすめ
0884デフォルトの名無しさん2010/03/20(土) 18:54:37
>>882
>>883
ありがとうございます。大人しくアンインストールしておきます。
08858782010/03/20(土) 19:36:17
毎度、お世話になっています
また、ちょっとおしえてください

def test value
 str = String.new
 if str == value ←同じ型か? どうか調べたい!!
  p "同じ型"
 else
  p "違う型だよ"
 end
end

test(strと比較するクラス名)

こういう処理をしたかったのですが、クラスはClassって型なんですね
なんか勘違いしていました
0886デフォルトの名無しさん2010/03/20(土) 19:49:17
Rubyに型はない
(以下既存ループ)

>>885
Rubyにおけるクラスとインスタンスという概念をとりあえず勉強しろ
(オブジェクト指向としてのクラスとインスタンスという大仰な概念は不要)
話はそれから
0887デフォルトの名無しさん2010/03/20(土) 19:55:52
>> a = "hello"
=> "hello"
>> b = 3
=> 3
>> a.kind_of?(String)
=> true
>> a.kind_of?("world".class)
=> true
>> a.kind_of?(b.class)
=> false
0888デフォルトの名無しさん2010/03/20(土) 20:47:14
そろそろこういう>> =>書き方をするひとが出てくるんじゃないかと思ってた
0889デフォルトの名無しさん2010/03/20(土) 20:48:50
>>> じゃないだけいいだろう
0890デフォルトの名無しさん2010/03/20(土) 20:49:57
irbの出力のこと?
0891デフォルトの名無しさん2010/03/20(土) 20:50:30
>>888
$ mv ~/.irbrc dot.irbrc
$ irb --simple-prompt
>> 1
=> 1
0892デフォルトの名無しさん2010/03/20(土) 20:54:14
>>891
退避しなくても -f オプションがあるよ

$ irb --simple-prompt
irb> exit
$ irb -f --simple-prompt
>>
0893デフォルトの名無しさん2010/03/20(土) 20:55:51
ここまで10分
なんというフルボッコ
0894デフォルトの名無しさん2010/03/21(日) 00:24:53
kind_ofって必要かね。
RubyでいうとMix-inとかで解決すべきところだと思うのだが。
Javaだとインタフェースになるのかな。
0895デフォルトの名無しさん2010/03/21(日) 00:30:40
は?
0896デフォルトの名無しさん2010/03/21(日) 00:33:35
型を調べて処理を分岐するようなのはダックタイピングじゃないって言いたいのかな
別にそんなにこだわる必要ないと思うけど
0897デフォルトの名無しさん2010/03/21(日) 00:34:25
>>894
まず、そうゆうネタは本スレに振った方がいいと思う
主張っぽいのがあるなら特に

その上で、Mix-inで解決ってのは意味がわからんが
Mix-inされてるかどうかって所にkind_of?なんかの使い道もあろうと
0898デフォルトの名無しさん2010/03/21(日) 00:40:46
でもkind_fとタイプした瞬間「これでいいのかなぁ」というなんとも後ろめたい感情が沸き起こるわけですが…。
自分だけですかね。
オブジェクト指向だの大見得切っといてこんなことしちゃっていいのかしらウフフ、的なね。
0899デフォルトの名無しさん2010/03/21(日) 00:45:11
何について言ってんの?
0900デフォルトの名無しさん2010/03/21(日) 00:47:21
kind_ofとか、呼び出された側で型判定して動作を変えるのはポリモーフィズムじゃないよねという話。
0901デフォルトの名無しさん2010/03/21(日) 00:49:03
>>894
このくらいのレベルの話で本スレに行かなきゃならんのか・・・
0902デフォルトの名無しさん2010/03/21(日) 00:50:16
だからっつって、method_missing前提もどうかって話にも
なるんじゃないかと思う
0903デフォルトの名無しさん2010/03/21(日) 00:57:31
>>901
いや、ココ、初心者スレ、だーよ
0904デフォルトの名無しさん2010/03/21(日) 00:58:52
呼び出された側ってどっちだい?
0905デフォルトの名無しさん2010/03/21(日) 00:59:49
なんでkind_ofにつっかかってるのかわからんね
0906デフォルトの名無しさん2010/03/21(日) 01:03:13
インスタンスにメソッド追加できるんだし
結局、スタイルの問題でしょ?

まぁ、確かにライブラリとかで kind_of 連発してたら
しょんぼり感が漂うな
0907デフォルトの名無しさん2010/03/21(日) 01:03:41
>>894だけで終わってたらどう頑張ってもふわっふわな話になるわ
具体的事例がないならとりあえず本スレ行っとけ
0908デフォルトの名無しさん2010/03/21(日) 01:05:23
Mix-inとかで解決ってのが謎を深める
0909デフォルトの名無しさん2010/03/21(日) 01:08:34
インスタンスがあるメソッドを持つことを確認するのに kind_of を使ってる
ってことなんでしょ

インターフェースで強制すべきってことでMix-inという話になる
で、906に続く
0910デフォルトの名無しさん2010/03/21(日) 01:10:49
>>909
その上で、何が不満なのかを書かないと話にならない

あんたが言うように使うこともあるだろうし、それはまさにJavaのインターフェイスの
使い方の一つだけど、それがRubyで「できる」ことに問題があるのかな?
0911デフォルトの名無しさん2010/03/21(日) 01:12:46
kind_of?と関係ない話だ
0912デフォルトの名無しさん2010/03/21(日) 01:13:20
いや、おれ894じゃないから知らないよw
「謎」って言うから書いただけ
全く不満はございません
0913デフォルトの名無しさん2010/03/21(日) 01:17:19
Mix-inで強制とかできるの?
0914デフォルトの名無しさん2010/03/21(日) 01:19:19
そりゃkind_of?で弾けば可能だ。あれ?
0915デフォルトの名無しさん2010/03/21(日) 01:21:14
Rubyはとりあえず自分が今すぐに便利ならそれで良いやって言語だった。そうだった。
0916デフォルトの名無しさん2010/03/21(日) 01:26:03
本当に文句を付けたいところは動的型付けなんじゃ?
0917デフォルトの名無しさん2010/03/21(日) 09:10:19
1..10を1..無限にするには、どうすればいいの?
0918デフォルトの名無しさん2010/03/21(日) 09:15:14
Rangeオブジェクトではできない
1から始めて整数値をえんえん増やす処理をさせたい場合はそのようにループを書く
0919デフォルトの名無しさん2010/03/21(日) 11:48:29
ダックタイピングってさ、例えばオブジェクトが read というメソッドを持っていることを仮定するわけじゃん?
さらにいえば、そのreadメソッドがこちらが期待する動作を仮定しているじゃん?

こういうのって問題にならないのかな。
組み込みクラスならまだしも、ユーザ定義のクラスでこんなにうまくいくの?
0920デフォルトの名無しさん2010/03/21(日) 11:50:23
うん
0921デフォルトの名無しさん2010/03/21(日) 11:53:24
>>920
名前ってどうするの?

たとえば hoge というメソッドが期待している振る舞いをすると仮定しているが
その「hoge」という名前は、IPアドレスのように偉い人たちが統一的に管理しているわけでもなく
みんなそれぞれ勝手に決めるわけでしょ?

※ そんなこといったらモジュールの名前空間も衝突す(ry
0922デフォルトの名無しさん2010/03/21(日) 12:01:18
ダックタイピングしたいなら ruby やめて python にするといいよ
0923デフォルトの名無しさん2010/03/21(日) 12:03:59
inspectメソッドみたいに、固定的に名前を決めちゃうのもどうかなぁ、って思うんだけど。
実質 Ruby の予約語じゃね?

例えば p メソッドは、inspectがオブジェクトを文字列に変換してくれることを期待しているから
ユーザ定義のクラスでも、そのことを念頭に置いて、メソッド名を決めなくちゃいけない。
0924デフォルトの名無しさん2010/03/21(日) 12:08:16
ある動作を期待されるメソッドをユーザが別の動作で定義して動作がうまくいかない場合は
別の動作で定義したユーザが悪い
0925デフォルトの名無しさん2010/03/21(日) 12:15:38
>>924
だから、その名前をどうするかって話だよ。

俺様ライブラリのクラスで、readというメソッドを定義したとする。
でも俺様ライブラリのreadメソッドは、IOクラスの振る舞いはしないとする。
ところが、Aさんが俺様ライブラリをIOクラスの振る舞いをすると期待して使ってしまう。

するとAさんは、「お前、なんでreadなんて名前にしたの?氏ね」
と文句を言われる。なんで?
0926デフォルトの名無しさん2010/03/21(日) 12:17:27
× 文句を言われる
○ 文句を言う
0927デフォルトの名無しさん2010/03/21(日) 12:19:23
>なんで?

原因分かってるのに聞くなよ
0928デフォルトの名無しさん2010/03/21(日) 12:21:19
ああ、inspectメソッドみたいに全てを把握しないといけないのか。
メソッド名も、メソッド定義も気をつけないとなー。
0929デフォルトの名無しさん2010/03/21(日) 12:21:41
しかしつまらんスレだな
0930デフォルトの名無しさん2010/03/21(日) 12:22:47
何を問題としてるかわからん

read というメソッドがあるライブラリを拾ってきて、ブラックボックス的に使ったら
たまたま名前が同じだけで期待しない動作だった、ってのを懸念してるように
見えるけど
0931デフォルトの名無しさん2010/03/21(日) 12:31:54
静的型かじってないとまるで理解できない悪寒
0932デフォルトの名無しさん2010/03/21(日) 12:32:24
そんなことを心配するなんて
あなた(俺様)は何も悪くありません
どんなAPIを設計するかはあなた(俺様)の自由
APIが使いにくいからといっても,あなた(俺様)が文句を言われる筋合いは全くないでしょう
ユーザーは単にあなた(俺様)のライブラリを使わなければよいのですから
0933デフォルトの名無しさん2010/03/21(日) 12:34:20
まあそれはいいとしても、inspectって固定的に決めちゃうのはどうなの?
initializeもか。
0934デフォルトの名無しさん2010/03/21(日) 12:38:50
追加するとき問題になる場合は、先頭に__を付ければ解決
0935デフォルトの名無しさん2010/03/21(日) 12:43:00
Object#__send__
がいい例だね...
0936デフォルトの名無しさん2010/03/21(日) 13:11:09
initialize も inspect も使いたいように使ったらいいんじゃないっスか?
別に予約語でもなんでもないんだから
0937デフォルトの名無しさん2010/03/21(日) 13:17:45
広く普及している使い方に反する使い方をしていれば
フィードバックを貰って改定するとか、俺流を貫いて淘汰されるとか
するんじゃないかね。
09382382010/03/21(日) 13:40:16
FAQかもしれないけど、空の配列をハッシュのデフォルトにする
方法はないですか?もう下のようなコードを書くのはうんざり・・・。

animals = Hash.new
...
if animals[:dog]
 animals[:dog] << "pochi"
else
 animals[:dog] = ["pochi"]
end
0939デフォルトの名無しさん2010/03/21(日) 13:45:22
animals = Hash.new([])
09409392010/03/21(日) 13:46:43
ああ、そういやこれはダメだったな
0941デフォルトの名無しさん2010/03/21(日) 13:53:08
>>938
> もう下のようなコードを書くのはうんざり
そういうクラスを作ればいいだけでは…
0942デフォルトの名無しさん2010/03/21(日) 13:53:09
animals = Hash.new{|h,k| h[k] = []}
0943デフォルトの名無しさん2010/03/21(日) 13:57:55
>>938
あんまり変わらないけど、これはどう?

animals = Hash.new
animals[:dog] ||= []
animals[:dog] << "pochi"
0944デフォルトの名無しさん2010/03/21(日) 14:00:31
if animals[:dog]
 animals[:dog] << "pochi"
else
 animals[:dog] = ["pochi"]
end

↓これでもいける。

animals[:dog] ||= []
animals[:dog] << "pochi"

↓これでもいける。

(animals[:dog] ||= []) << "pochi"
0945デフォルトの名無しさん2010/03/21(日) 14:03:28
あれ?Hashってキーが見つからないときのデフォルト値って設定出来なかったっけ?
09462382010/03/21(日) 14:04:02
>>941
確かに自分の場合、Hashを拡張してしまうのが早いかも。

>>942
Hashをブロックで初期化できるとは知りませんでした。
これは覚えておかないと!

ありがとう。
09472382010/03/21(日) 14:11:36
>>945

普通のデフォルト値として[]を渡すと、同じArrayインタンス
が使いまわされるので、目的に適わないのです。その点、
942のコードなら大丈夫。
0948デフォルトの名無しさん2010/03/21(日) 20:43:00
みんなが便利を目指してる訳ではないしな。
教祖のrubyの教えを信じるものはrubyで救われるが、信じない異教徒にはrubyは助けに成らない。
0949デフォルトの名無しさん2010/03/21(日) 21:26:18
ttp://pc12.2ch.net/test/read.cgi/tech/1265467681/628
ttp://pc12.2ch.net/test/read.cgi/tech/1267668057/948
0950デフォルトの名無しさん2010/03/21(日) 23:01:10
>>948
俺なんか別にどの言語も信者ではないな
どの言語でも何でこんなアホなんだと思う場面あるし
実際は言語がアホな場合も自分がアホな場合もあるけど…
0951デフォルトの名無しさん2010/03/21(日) 23:06:15
レスもらえないからとうとう自演を始めた
0952デフォルトの名無しさん2010/03/21(日) 23:14:39
>>951 ??
0953デフォルトの名無しさん2010/03/21(日) 23:18:25
ほかでやってね
0954デフォルトの名無しさん2010/03/21(日) 23:30:12
「Rubyの言語仕様策定において最も重視しているのはストレスなくプログラミングを楽しむことである (Enjoy programming)」
この部分においてはRUBYは他の言語の追随を許さないのでしょうか?
これから学ぼうと思ってるのですがここ見ててそんな疑問が浮かびました
皆さんの印象で結構ですのでお願いします
0955デフォルトの名無しさん2010/03/21(日) 23:31:23
馬鹿な俺様が初めて使いこなせた言語
0956デフォルトの名無しさん2010/03/21(日) 23:33:34
>>954
初プログラミングならたぶん快適
他の静的型付け言語の経験があるならキイイイイイイイッってなるかもしれん
0957デフォルトの名無しさん2010/03/21(日) 23:35:37
いろんな意味で細かいことを気にしない人は楽しめるんじゃなかろうか
0958デフォルトの名無しさん2010/03/21(日) 23:36:07
>>954
そんなこと気にせずさっさとインスコして試したらいいよというのが正直な印象
有名どころの言語をあれこれ使ってみて自分に合うのを選んだらよろし
0959デフォルトの名無しさん2010/03/21(日) 23:37:53
プログラミング初心者はとにかく処理系と戦いながら何度も試行錯誤を重ねることがわりと重要なので、
そういう点ではRubyは優れているといってよろしかろう?
0960デフォルトの名無しさん2010/03/21(日) 23:42:47
ただしWindowsを除く。
0961デフォルトの名無しさん2010/03/21(日) 23:47:42
対話環境がある言語は有利だわな
Windowsプラットフォーム固有の問題を出せるまで使い倒したなら
もう初心者卒業だろうw
0962デフォルトの名無しさん2010/03/22(月) 00:02:26
>>942
だと代入せずに参照しただけで要素が追加されてしまうので
animals = Hash.new {[]}
animals[:dog] <<= "pochi"
0963デフォルトの名無しさん2010/03/22(月) 00:03:11
Windowsなら.NETにREPLがあるF#がガチ
いまVS2010RC入れて触ってみたんだけど、これは良いわ
インタラクティブシェルのキーバインドがreadlineじゃなくてcmd.exeなのと
VS2008には有ったemacs系のキーバインドが無くなっちゃったのが
個人的には痛いけど、これからプログラムの勉強始める人なら関係ないよね
0964デフォルトの名無しさん2010/03/22(月) 00:08:29
色々どもです954です
でもおいらWINDOWS環境だw
0965デフォルトの名無しさん2010/03/22(月) 00:14:34
Smalltalkやってたので言語覚えるのは比較的楽なんだけど、環境が良く分からん
1.9だと、まだデバッガが対応していない?
0966デフォルトの名無しさん2010/03/22(月) 00:18:37
デバッガって標準添付されてるでしょ
なのに動かないの?
0967デフォルトの名無しさん2010/03/22(月) 00:19:32
>>964
VMwareにubuntuでも入れとけ
0968デフォルトの名無しさん2010/03/22(月) 00:24:57
>>966
あー、いきなりRadRailsのIDEでデバッグしようとしてるのがいけないのか
リファクタリングツールとかないと生きていけない体になっているので、いきなりIDEに手を出したのが不味かったのかも
0969デフォルトの名無しさん2010/03/22(月) 00:25:40
>>965
いわゆるデバッガと言われて想像するような性能のものは無い
言語仕様的な問題なんじゃないかとうっすら想像中
0970デフォルトの名無しさん2010/03/22(月) 00:30:27
>リファクタリングツールとかないと生きていけない体になっている

と

>いきなりIDEに手を出した

の間に関連性を見出そうと頑張っています
しばらくお待ちください
0971デフォルトの名無しさん2010/03/22(月) 01:12:54
いきなり(Rubyでも)IDEに手を出した(そしてがっかりした)
ってことだろうね
0972デフォルトの名無しさん2010/03/22(月) 02:53:12
Smalltalkやってたぐらいだから、IDEどっぷりでしょ
Smalltalkは言語というより環境そのもの。EclipseとかでKentが再現しようと頑張ってるけど及ばない領域が多い
今でこそそこそこ使えるIDEが出てきたけど、RubyのIDEは正直糞レベル
0973デフォルトの名無しさん2010/03/22(月) 09:44:03
rubyの文字列連結って超不便じゃね?
FixnumとStringの連結くらいでエラー出すなよな
0974デフォルトの名無しさん2010/03/22(月) 09:54:42
あらゆる種類のオブジェクトがString相手の+メソッドを特別扱いすべきだと?
0975デフォルトの名無しさん2010/03/22(月) 09:55:27
>973

"#{foo}" 使えよ
0976デフォルトの名無しさん2010/03/22(月) 09:57:35
強く型付けされた言語で、
あたかも暗黙の型変換が起きたかのような挙動は危険すぎる
to_s で明示的に変換するべき
0977デフォルトの名無しさん2010/03/22(月) 09:58:19
動的型言語における暗黙の型変換はエラーの温床になる
0978デフォルトの名無しさん2010/03/22(月) 10:01:25
何でこのスレはキチガイばっかり何ですか?
0979デフォルトの名無しさん2010/03/22(月) 10:27:34
きちがいがきちがいをよぶ
きちがいにしかきちがいはみえない
0980デフォルトの名無しさん2010/03/22(月) 10:47:57
Array#joinは勝手に変換するけどな。

[1,2,3,[{:a=>"a", :b=>"b"}],].join #=> "123bbaa"
0981デフォルトの名無しさん2010/03/22(月) 10:51:22
順序の無いハッシュまで変換してるとか最高にすかぽんたんですね
0982デフォルトの名無しさん2010/03/22(月) 11:15:11
Hash#to_s の挙動は 1.9 で変わった

irb1.9> puts [1,2,3,[{:a=>"a", :b=>"b"}],].join
123{:a=>"a", :b=>"b"}
0983デフォルトの名無しさん2010/03/22(月) 11:39:11
勝手に変えんな
0984デフォルトの名無しさん2010/03/22(月) 11:40:11
rubyでstringの文字コードを調べる方法ないですか?
#!ruby -Kuと$KCODEで指定しているのですが、
C++のフレームワークを経由して表示させたい文字列を取得しているため
0985デフォルトの名無しさん2010/03/22(月) 11:42:56
>>984
文字エンコーディング情報を別途保持して渡すか、require 'guess' して NKF.guess(str) した数値を
NKF::SJIS とか NKF::UTF8 とかと比較する

次スレ立てるよ
0986デフォルトの名無しさん2010/03/22(月) 11:44:37
>>985
GJ
09879852010/03/22(月) 11:47:14
ERROR:新このホストでは、しばらくスレッドが立てられません。
またの機会にどうぞ。。。

>>6の新稿

Windows で Ruby を使う初心者はとりあえず ActiveScriptRuby の 1.8.7 をインストールして慣れろ
OneClickInstaller は単に古すぎ、RubyInstaller は MinGW32 版で現状扱い怪しい、cygwin 版は cygwin マニア専用
IDE のお勧めは特にない(せいぜい汎用のEclipseかNetBeans)、RDE は古くて独自すぎで Ruby に慣れた人向け

■ Windows でとにかく迷いたくない普通の人 … ActiveScriptRuby 1.8.7
ttp://arton.hp.infoseek.co.jp/indexj.html
 の題字のでかい 「ActiveScriptRuby 1.8.7(p249) with-winsock2 tcl-stub」

 マニュアルはWebで見ることもできるが手元にあると便利、1.8.7 の HTML ヘルプ版が
ttp://www.ruby-lang.org/ja/documentation/
 の「Rubyリファレンスマニュアル刷新計画 chm版 1.8.7用」

 夢のお告げ等、何かの間違いで Ruby の知識がないうちから 1.9.1 を使って苦しみたいマゾい人は
ttp://www.artonx.org/data/asr/ の「Ruby-1.9.1-p数字 Microsoft Installter Package」
0988デフォルトの名無しさん2010/03/22(月) 11:54:04
ERROR:スレ立ては●を使うと出来ますよ。
0989デフォルトの名無しさん2010/03/22(月) 11:54:06
RubyInstaller使いやすかったよ
0990デフォルトの名無しさん2010/03/22(月) 12:00:24
じゃあ>>988さん●使ってスレたてお願いしますね

と>>987の心中をエスパーしてみた
0991デフォルトの名無しさん2010/03/22(月) 12:03:05
しかしくだらんスレだな
0992デフォルトの名無しさん2010/03/22(月) 13:55:06
スレたていってきますよ
0993デフォルトの名無しさん2010/03/22(月) 14:05:27
次スレです
なかよくつかってね

Ruby 初心者スレッド Part 36
http://pc12.2ch.net/test/read.cgi/tech/1269233796/

不備があったらテンプレのあとによろしく
0994デフォルトの名無しさん2010/03/22(月) 14:18:18
>>989
RubyInstallerだからだめという話にはなってねー
中身がMinGW32であることが、問題切り分けとスクリプト手修正のできない初心者には厳しいという話
0995デフォルトの名無しさん2010/03/22(月) 16:10:38
馬鹿にはrubyは無理。

梅。
0996デフォルトの名無しさん2010/03/22(月) 16:16:51
むしろバカはruby意外は無理
0997デフォルトの名無しさん2010/03/22(月) 16:19:09
バカには何渡してもできないからどうしようもない
0998デフォルトの名無しさん2010/03/22(月) 17:54:48
パカは優秀
0999デフォルトの名無しさん2010/03/22(月) 18:02:44
ふふっ♪ばーか♪
1000デフォルトの名無しさん2010/03/22(月) 18:08:05
千
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。