5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Ruby 初心者スレッド Part 35

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

2 :デフォルトの名無しさん: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/

3 :デフォルトの名無しさん: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/

4 :デフォルトの名無しさん: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/

5 :デフォルトの名無しさん: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等外部第三者ライブラリの対応が超適当特に英語圏産
 初心者を脱した人が外部ライブラリの開発コミュニティに参加してくれたりすることを期待中

6 :デフォルトの名無しさん: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版とみなさないスクリプトがまだあるので、それは自力で毎回書き換える必要あり

7 :デフォルトの名無しさん:2010/03/04(木) 13:29:20
      ,―ヽ_(((((_、―
   ,/  ノ       ヽ  ~\
  /   ノ   IPA    ヽ   ~\
/   ノ           ヽ、  `ヽ
|    ノ / ̄\   / ̄~ヽ ヽ    i
|   ノ              |  ノ
\  |  <●>  <●>  (  )
 \ |      | |       i /
    |      /  ヽ       レ
   i     (●_●)      /  
    i、    ,-――-、   ・ /
    i、  <(EEEEE)> ∵/    >>1 乙ぴょん
      i、  \   ./  /
       \   ーー   ,ノ       
  ,,.....イ.ヽヽ、ー-―一ノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |

8 :デフォルトの名無しさん:2010/03/04(木) 18:32:00
RUBYOPTに指定可能なオプションの一覧はどこかにありませんか?
設定したら怒られたので

9 :デフォルトの名無しさん:2010/03/04(木) 18:42:06
>>8
どんなオプションを指定して怒られた?

10 :デフォルトの名無しさん:2010/03/04(木) 18:42:29
drvwEIKUW

11 :デフォルトの名無しさん:2010/03/04(木) 18:50:55
>>6
OneClickInstallerでも1.8.7や1.9.1があるけど駄目なのか?

12 :デフォルトの名無しさん:2010/03/04(木) 18:56:09
>OneClickInstallerでも1.8.7や1.9.1があるけど
どこ?
One-Click Installer は 1.8.6 で終了して RubyInstaller に変更されたもんだとばかり

13 :デフォルトの名無しさん:2010/03/04(木) 18:59:34
普通にダウンロードページにあるけど。とういうよりRubyのダウンロードサイトじゃここが見やすくて良い思うが。
http://rubyinstaller.org/download.html

14 :デフォルトの名無しさん:2010/03/04(木) 19:01:10
>>13
うん、で、どこ?

15 :デフォルトの名無しさん:2010/03/04(木) 19:01:55
ああこれがRubyInstallerなのか、公式ではOne-Click Installerってなってるな

16 :デフォルトの名無しさん: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/

17 :デフォルトの名無しさん:2010/03/04(木) 19:20:13
いや日本のダウンロードページhttp://www.ruby-lang.org/ja/downloads/
の各環境用バイナリのOne-Click Ruby Installer for Windowsのリンク先は
RubyInstallerになってるよねって。

18 :デフォルトの名無しさん:2010/03/04(木) 19:31:02
>>9
何を指定したかは問題ではありません。
指定可能なオプションを知りたいのです。

19 :デフォルトの名無しさん:2010/03/04(木) 19:35:32
drvwEIKUW

20 :デフォルトの名無しさん:2010/03/04(木) 19:54:46
今日本屋でRubyの本見てたけど沢山あったわ。これだけ書籍が出てるとは。
たのしいRuby 第2版 Rubyではじめる気軽なプログラミングって本も読んだけどあれは
初心者向けじゃないな、というより本読むのが得意な人じゃないとキツそうだ。
プログラミングの本は〇〇の絵本がやっぱり初心者には最適だと思う。

21 :デフォルトの名無しさん:2010/03/04(木) 19:58:28
>>20
たしかに小中学校でプログラミング教えるには
たのしいRubyは少しハードルが高いかもしれないな

22 :デフォルトの名無しさん:2010/03/04(木) 20:00:30
>>18
ruby --help で出てくるのはすべてを網羅していないので、man ruby


23 :デフォルトの名無しさん:2010/03/04(木) 20:01:30
なぜ嫌味な答えしか出来ないのか・・・

24 :デフォルトの名無しさん:2010/03/04(木) 20:12:05
>>20
アンク兄貴オッスオッス

初心者にとって独学はどんな本を買ったって難しいよ
逆に言えば誰か教えてくれる人がいれば多少難しい本でもどうってことはない

25 :デフォルトの名無しさん:2010/03/04(木) 20:15:00
>>17
なってない
依然として One-Click Installer を指している
http://rubyinstaller.org/download.html から One-Click Installer が無くなってもそのままだったら考えてもいい

26 :デフォルトの名無しさん:2010/03/04(木) 20:19:09
>>25
編集が追いついてないってことで勘弁してやって
リンク先にも"Legacy"って書いてあることだし

27 :デフォルトの名無しさん:2010/03/04(木) 20:33:02
>>22
ありがとうございました。当方Windows環境なのでman rubyできません。
てっきりman rubyに記載されていることはRubyリファレンスマニュアルで
網羅されているだろうと思っていましたがman rubyにしか記載がないものもあるのですね。

28 :デフォルトの名無しさん:2010/03/04(木) 20:36:59
>>26
公式的にはいきなりRC2を推すわけにはいかんということなんだろうなとか思ってる
RubyInstaller正式版が出ればOneClickInstallerの記述は消えると思う

29 :デフォルトの名無しさん:2010/03/04(木) 20:41:11
>>8
に関連して質問なんですけど
Rubyのコマンドラインオプションで指定できて
RUBYOPTで指定できないオプションってあるんですか?

Rubyのmanpageにもそんなことは書いてないので疑問に思いました。

30 :デフォルトの名無しさん:2010/03/04(木) 20:44:33
何度もレスが出てるが代表的な有効オプションはdrvwEIKUWの9種(およびこれらの長い版)だ
これ以外はrubyが切り落とすかエラーにするはず

31 :デフォルトの名無しさん:2010/03/04(木) 20:53:25
ハチドリ本p.410には以下のように書いてある

  なお、環境変数のRUBYOPTには、-W, -w, -v, -d, -I, -r, -K, -E, -T
  オプションを自由に組み合わせて指定できる。

ソースコードを除く公式ドキュメントでは見つけられなかった。
誰か捕捉plz.


32 :デフォルトの名無しさん: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.


33 :デフォルトの名無しさん:2010/03/04(木) 21:01:02
ソース以外は知らんなー。

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

とか理由はわからんでもないんだけどね。


34 :デフォルトの名無しさん:2010/03/04(木) 21:06:10
-Sとか指定できると便利じゃね?

35 :デフォルトの名無しさん:2010/03/04(木) 21:10:37
おまいらインタプリタとコンパイラどっちが好き?

36 :デフォルトの名無しさん:2010/03/04(木) 21:12:17
インテグラちゃん

37 :デフォルトの名無しさん:2010/03/04(木) 23:38:01
>>35
中間コードインタプリタ

38 :デフォルトの名無しさん:2010/03/05(金) 01:17:11
それ、Z-80の頃からあるぞ。N-BASICのPコード。

39 :デフォルトの名無しさん:2010/03/05(金) 01:34:14
>>984

しかも Rails をかぶせた Ruby は Ruby であって Ruby ではないからなぁ


40 :38:2010/03/05(金) 01:52:34
誤解の無いよう、追記。
Pコードのファイルを生成する訳ではないのですね。
当時の2次記憶装置は一般的には、カセットテープだったので。

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

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

嫌われ者の年寄りは、もう寝る。


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

つまり>>37はYARVが好き==1.9が好きだってことだ

42 :デフォルトの名無しさん:2010/03/05(金) 02:04:37
Ruby1.9を嫌いな人なんていません

めんどくさいと思ってる人は多そうだけど

43 :38:2010/03/05(金) 02:16:56
>>42
私も
ruby 1.9.1p376 (2009-12-07 revision 26041) [i686-linux]
を常用しています。
実行速度が、速いから。

暇なので、パズルの解法のコードなんぞを書いておりますが、
棺桶が近いので、あんまり待って居られない。

44 :デフォルトの名無しさん:2010/03/05(金) 02:21:00
折り返し人生のほうが短いおっさんは日付が変わったらとっとと寝ろ

45 :デフォルトの名無しさん:2010/03/05(金) 02:23:00
早起きかもしれないじゃないかー

46 :デフォルトの名無しさん:2010/03/05(金) 02:27:47
別に寿命と限ったもんじゃないよね

47 :デフォルトの名無しさん:2010/03/05(金) 02:29:41
夜食食ってるときに寿命以外の死亡原因の話するのやめてほしいって言うか本スレでやれ

48 :デフォルトの名無しさん:2010/03/05(金) 02:51:56
PコードってBASICでも利用されてたのか
なんかPascal処理系の印象が強い気がする

49 :デフォルトの名無しさん:2010/03/05(金) 08:17:43
ほんとに Pascal-P の中間コードなのかなぁ?
単に BASIC の内部表現ってだけだったと思うけど。

中間コードを「Pコード」と呼ぶと思い込んでるだけなんでない?

50 :デフォルトの名無しさん: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
です。

51 :デフォルトの名無しさん:2010/03/05(金) 10:50:00
>>49
BASICのほうのPコードはMS用語。pseudocodeのことらしい。

52 :デフォルトの名無しさん: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ではその手の問答は向かない

53 :デフォルトの名無しさん: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で割ったときの余りの等しさ」とか、図形の
「合同」(形のみ。向きは考えない) 「相似」(加えて比率も考えない)とか。


54 :デフォルトの名無しさん:2010/03/05(金) 11:07:58
>>53
やっぱ原文たどったよな
これ日本語に訳した人が悪いわ

55 :デフォルトの名無しさん:2010/03/05(金) 11:09:39
>>52
> eql? は #hash の値が内部表現の配列の hash に再定義されてて、
> 内部配列的にはハッシュ同等ではないので
偽を返す、だな

56 :デフォルトの名無しさん:2010/03/05(金) 11:24:31
個々の実装による、で一蹴されるものがいくつか…

57 :デフォルトの名無しさん:2010/03/05(金) 11:26:32
要するにRubyでequalityの意味を問うのはナンセンスで、
equalityとequivalenceの違いがわかるというのは数学的な素養が
あるか否かを見極める質問という感じですかね。

58 :デフォルトの名無しさん:2010/03/05(金) 11:28:49
元の記事的には、単に計算機科学の質問をすればいいだけだと思う
あとは「ファイルコピーの関数を書いて欲しいが何か質問は?」と聞く

59 :デフォルトの名無しさん:2010/03/05(金) 11:37:00
原文見てきた

いわゆる等価と等値の区別がつきますか質問でしかないようだが
なんで数学とかよくわからん話になってるのん

60 :デフォルトの名無しさん:2010/03/05(金) 11:40:34
>>59
日本語での等価と等値がおおむね一緒だからだよ

61 :デフォルトの名無しさん:2010/03/05(金) 13:14:07
原文が identity と equality なら簡単な話だったんだがな。


62 :デフォルトの名無しさん:2010/03/06(土) 02:46:26
その辺は元々区別してない日本人教祖の致命的な弱点かもな。

63 :デフォルトの名無しさん:2010/03/06(土) 03:08:27
直接の元ネタは Common Lisp かね?
ただ、Rubyの場合はオブジェクト指向的な整理がされているし
それぞれの述語の意味も違う

64 :デフォルトの名無しさん:2010/03/06(土) 03:19:41
質問なんですが、Ruby[Cygwinで時前コンパイル]のスクリプトをOcraで実行ファイルにしたとき、
できた実行ファイルにはCygwinのDLLがなにやら色々入ってないみたいなんです。
Ocraで実行ファイル作成時に出るDependencyリストにも無いファイルが無いというエラーが作った実行ファイルから
はかれるんですが、どうやったら調べられるのか、どのCygwinのDLLを同じフォルダにコピーしたらいいのか、
しってはるひといらはりますか?

65 :デフォルトの名無しさん:2010/03/06(土) 04:31:33
たのしいRuby 第3版
ttp://www.amazon.co.jp/gp/product/4797357401/
3月31日発売

66 :デフォルトの名無しさん: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]


67 :66:2010/03/06(土) 05:48:31
すみません。fedora11でした。


68 :デフォルトの名無しさん:2010/03/06(土) 08:39:10
rubyにXMLパーサーある?

69 :デフォルトの名無しさん:2010/03/06(土) 09:05:45
あるよ
REXMLとかXMLParserとか。それぞれ向き不向きがあるので、とりあえず触ってみると良い。

70 :デフォルトの名無しさん:2010/03/06(土) 09:11:43
>>66
REXML::Parsers::StreamParser.new('<?xml version="1.0" encoding="utf-8"?><xml>日本語</xml>', nil)

これは通る。
xmlのエンコーディングってどうやって省いたときはどうなるのが
正しいんだっけ……


71 :デフォルトの名無しさん:2010/03/06(土) 09:25:14
http://www.w3.org/TR/xml/#charencoding

BOMもエンコーディング宣言もなければ
文書はUTF-8で書かれているものと想定するだろね

72 :66:2010/03/06(土) 10:30:08
レスありがとうございます。

>>70
考えてみれば、XMLではない文字列を通す必要は無いんですね。
1.8では通ってたので、勘違いしちゃいました。


73 :デフォルトの名無しさん:2010/03/06(土) 10:45:37
とはいえ、エンコーディング検出処理のところで read(2)で 2*文字*
読んでるのは間違いのような気もするな。識者求む。
rexml/source.rb
class IOSource#initialize



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

関連でこういうのも
http://www.clear-code.com/blog/2009/5/11.html

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

googleの検索結果にはかろうじて出てくるから
キーワードをダイレクトで指定してそれを
スクリプトか何かでチェックしてるのか?

76 :デフォルトの名無しさん:2010/03/06(土) 11:10:55
ちょ、著者じゃないよ!
出版社でもないからネ.

77 :デフォルトの名無しさん:2010/03/06(土) 11:13:44
アマゾンの回し者だな

78 :デフォルトの名無しさん:2010/03/06(土) 11:16:36
>>74
めんどくさくねえよ
むしろ1.8のほうが「2文字」読み込むのに難儀する
2文字読むのと2バイト読むのとメソッドがきちんと分かれてる1.9のほうがわかりやすい

添付なんだし誰か突っ込んどけという説はあるな
REXMLなんて使ってる人いないんだろうなという感じの

79 :デフォルトの名無しさん:2010/03/06(土) 11:49:54
>>69
ありがとう。使ってみる。

80 :デフォルトの名無しさん:2010/03/06(土) 12:09:16
著者降臨age

81 :デフォルトの名無しさん: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です。

82 :デフォルトの名無しさん:2010/03/06(土) 18:40:48
rubyでAPIを処理できますか?

83 :デフォルトの名無しさん:2010/03/06(土) 18:45:42
>>81
ブツは http://gems.rubyforge.org/gems/rubyzip-0.9.4.gem にある
ようだな。とりあえず gem install --verbose rubyzip

>>82
どの?


84 :デフォルトの名無しさん:2010/03/06(土) 19:10:31
windowsAPIです

85 :デフォルトの名無しさん:2010/03/06(土) 21:33:00
>84
http://www.ruby-lang.org/ja/man/html/Win32API.html

これでいいのか?

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

Linux環境だとgnome2つかって下記のように簡単に作れるみたいですが・・・・
http://alohakun.blog7.fc2.com/blog-entry-809.html

87 :デフォルトの名無しさん:2010/03/06(土) 22:29:20
>>86
すげぇw

88 :デフォルトの名無しさん:2010/03/06(土) 22:33:59
>>81
install 時も -r を付ければいいような気もしますが、どうですか?


89 :デフォルトの名無しさん:2010/03/06(土) 22:55:48
>>86
ブラウザって方法次第ではこんなに簡単に作れるのか・・。Rubyブラウザいいねえ

90 :デフォルトの名無しさん:2010/03/06(土) 23:05:10
GUIライブラリだけでRuby関係ないんだが

91 :デフォルトの名無しさん:2010/03/06(土) 23:07:31
Trident使うライブラリってMFC以外にあんの?

92 :デフォルトの名無しさん:2010/03/06(土) 23:23:48
IEコンポーネントとして呼べばいい
Tk→OpTcl→InternetExplorer
どっちにしてもRubyの関わる分はたいそう少ない

93 :デフォルトの名無しさん:2010/03/07(日) 00:38:05
>>86
win32oleでIEコンポーネント操作すりゃいいんじゃないかね。
前にC#でやったことがあるが、COMがわかってりゃ別段困難ではない。

94 :デフォルトの名無しさん:2010/03/07(日) 00:42:46
COM/Interopがわかってるような人間はこのスレで質問するわけがない

95 :デフォルトの名無しさん:2010/03/07(日) 01:10:25
これから言語の勉強しようとしているのですが
RubyでGUYツール作れますか?
C#のようにマウスでコントロール配置できたりしますか?

96 :デフォルトの名無しさん:2010/03/07(日) 01:11:25
まず言語とIDEの区別ができるようになろうな。


97 :デフォルトの名無しさん:2010/03/07(日) 01:16:47
GUYツールワロタ

98 :デフォルトの名無しさん:2010/03/07(日) 01:25:56
RubyでGUI用のIDEはありますか?

99 :デフォルトの名無しさん:2010/03/07(日) 01:33:05
ないんじゃない?

ttp://jp.rubyist.net/magazine/?0001-RubyGUI#l10
この記事の内容って今も大きい変化ない?

100 :デフォルトの名無しさん:2010/03/07(日) 01:38:58
IDEといえば、CodeGearどうしたのかと思ったらDBツールの会社と
合併して、今は3rdRail以外にTurboRubyなんての出してたのね。



101 :デフォルトの名無しさん:2010/03/07(日) 01:41:30
見た感じ3rdRailと同じようにEclipseのプラグインぽいなー
と思いつつ機能一覧を見たら、3rdRailからRails関連を取っ払っ
た感じだった。


102 :デフォルトの名無しさん:2010/03/07(日) 01:42:30
Turboなんとかって命名には不吉な匂いしかしない

103 :デフォルトの名無しさん:2010/03/07(日) 01:46:25
今はDelphiもそこの製品扱いなのか……



104 :デフォルトの名無しさん:2010/03/07(日) 01:53:11
勉強のためならGladeでいんじゃね?
コードエディタとかついてないとイヤなの?


105 :デフォルトの名無しさん:2010/03/07(日) 02:04:21
C#用のIDEってそんなこと出来るのか

106 :デフォルトの名無しさん:2010/03/07(日) 02:06:42
ホームページビルダーみたいな出力だったらいやだな
どうなんだ

107 :デフォルトの名無しさん:2010/03/07(日) 02:20:37
wxRuby+wxFormBuilderでも使っとけ

108 :デフォルトの名無しさん:2010/03/07(日) 02:27:29
>>107
いいねそれ
遊んでみよう

109 :デフォルトの名無しさん:2010/03/07(日) 07:04:30
>>81
こちらでは問題なくインストールいけたが
Ubuntu 9.04 on coLinux

110 :デフォルトの名無しさん:2010/03/08(月) 11:29:43
>>86
遅いレスだが情報サンクス
半信半疑でやってみたがあっさり動いた(Ubuntu9.04)
おもしろいね

111 :デフォルトの名無しさん:2010/03/08(月) 12:48:25
この言語はどういったユーザーを主に対象にしているんでしょうか?
ぐぐってみるとWebアプリケーションとのことだけど
Windowsデスクトップアプリを主に作る場合はおすすめできないですか?

112 :デフォルトの名無しさん:2010/03/08(月) 12:52:12
>>111
> Windowsデスクトップアプリを主に作る場合はおすすめできないですか?
1ミリもおすすめできません
とても大雑把には C# で試してみることをおすすめします
物足りないなら他の Java なりなんなりを使えばよろし
C# で挫折しないなら他の言語も我慢できましょう

113 :デフォルトの名無しさん:2010/03/08(月) 13:51:13
Rubyの初心者向け的立ち位置って微妙だよね
このご時世にコンソールアプリケーションが基本とか華がないにも程がある

得意分野が狭いからわかりやすいんだけどさ
これでデフォルトでウィンドウ制御しないといけないとかだったらめんどくて吐く

114 :デフォルトの名無しさん:2010/03/08(月) 14:18:23
しつもん
freeze って実際はどんなときに使うの? マニュアル読まない人用?
あと、TypeError という汎用な例外が出るのはなんで?
ModifyFrozenObject とかそういう特有の例外ならよかったのに

115 :デフォルトの名無しさん:2010/03/08(月) 14:32:39
>>111
いろいろな使い方があると思うけど

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

C++とかで書いても良いけどこういうのはrubyの方が楽
逆に手の込んだもの書く時はC++の方が楽というか安心
単に慣れの問題かも知れんが

116 :111:2010/03/08(月) 14:43:33
調べてみたところ、LL系とコンパイラ系の両方1つづつ
覚えていると良いらしいので簡単だと言われている
RUBYをやってみようと思ったのですが
実際どういう感じで使われているのかがよくわからなくて
質問させていただきました
WEBアプリを作ることはまずないんですが
>>115さんのようなことができるならちょっと興味があります

117 :デフォルトの名無しさん:2010/03/08(月) 14:50:22
>>116
やめとけ
君の考えているようなものではない

118 :デフォルトの名無しさん:2010/03/08(月) 15:00:05
>>114
例外について。

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



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

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

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

しかしWindowsは違う
ごく一般的にはウィンドウアプリケーションじゃないとどうにもならん
そして、それは「Rubyを使うべき分野」ではない(苦行の趣味に近い)

120 :デフォルトの名無しさん:2010/03/08(月) 15:09:45
Windowsでプログラミングしたことない、、一度も。

121 :デフォルトの名無しさん:2010/03/08(月) 15:51:30
俺もWindowsはないな。MS-DOSはTurbo PascalとSmalltalk/VとModula-2ぐらいだな。

122 :デフォルトの名無しさん:2010/03/08(月) 16:12:21
>>116
Rubyがそれほど簡単だとは思わないけど。

123 :デフォルトの名無しさん:2010/03/08(月) 16:35:37
簡単かどうかで言えばかなり簡単な部類
ただし、プログラミング初心者には難しい

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

Perlは基本がわからないわけではないんだがなんともいえず挫折した、とかいような素養で充分なんだが
それに該当するものをRuby単体独学で身につけるのは意外と辛いしRubyの役目かどうかもちと怪しい

124 :デフォルトの名無しさん:2010/03/08(月) 16:40:59
中学生に EPSON BASIC(中古・マニュアルのみ) → 大学で Perl4 → KENT CGI(笑) → うーんなんか違う
という経緯をたどった俺には Ruby はどんぴしゃべったりで一生もの
「ちょっと遅いけどでも許す」ということを本当に口に出して言ったことをよく覚えている
Ruby1.4 くらいだったかなあ

125 :デフォルトの名無しさん:2010/03/08(月) 16:43:45
どんな顔か想像ついたw

126 :デフォルトの名無しさん:2010/03/08(月) 16:44:39
ブラック会社みたいな物言いだな> 他の言語で基礎素養を身につけた方歓迎

127 :デフォルトの名無しさん:2010/03/08(月) 16:48:07
>>126
めっちゃ平たく言うと完全初心者を歓待するためのドキュメント準備がない
こんなとこでもいまだに適切な分野の人員不足が足引っ張ってる状態
書籍ならなんとかなりそうな気もするんだが、オンラインでもある程度あったほうがいいよね

PerlとかPythonとかはnewbieを扱うための準備をかなり前からしてる
Rubyはどっちかってと「わかってる人向け」で突っ走ってきたので

128 :111:2010/03/08(月) 16:51:19
インストールで挫折した
ネットも繋がないといけない?ようで気味悪いので削除しました
皆様ありがとうございました

129 :デフォルトの名無しさん:2010/03/08(月) 16:53:59
よーしrubyのためにwindows消して
ubuntuいれちゃうぞー

130 :デフォルトの名無しさん:2010/03/08(月) 16:57:52
パパやめて!Windows消すぐらいならVMwareかVirtualBox使って!

131 :デフォルトの名無しさん:2010/03/08(月) 17:01:47
もともと持ってないならまだしもわざわざ自分から捨てるような権利でもないな

というかそのへんは本スレでやれ

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

確かにターミナル使ったことない人にはわかりにくいだろう


133 :デフォルトの名無しさん:2010/03/08(月) 19:09:23
つまり新しい言語に対応できない無能なおっさんが
いきついた場所がRubyということですね

134 :デフォルトの名無しさん:2010/03/08(月) 19:14:54
>>133
真面目にそんなこと言っているのだとしたら、そうとう恥ずかしいぞ。

135 :デフォルトの名無しさん:2010/03/08(月) 20:32:51
真面目じゃなくても恥ずかしいわw

136 :デフォルトの名無しさん:2010/03/08(月) 20:36:12
今時、小学生でもLinuxでサーバ構築できるというのに...

137 :デフォルトの名無しさん:2010/03/08(月) 22:47:11
ここほど口だけ出来る奴が居座ってる初心者スレは無いよな。

138 :デフォルトの名無しさん:2010/03/08(月) 23:07:40
そんなことを言っても出せないものは出してあげられませんよ

139 :デフォルトの名無しさん:2010/03/08(月) 23:12:27
逆に貧相なCMD.exeでもRubyで花を咲かせることができる
windowsユーザーだってRuby使ってるぜ

140 :デフォルトの名無しさん: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原理主義者テラモエス

141 :デフォルトの名無しさん:2010/03/09(火) 00:03:36
逆に、WindowsでRubyをバリバリに使ってる人ってガチガチに独自の快適コンソール環境を構築してそうだよなあ。

142 :デフォルトの名無しさん:2010/03/09(火) 00:42:22
ある課題があって、それをRubyで解決したいのですが御知恵を。。。
課題というのは、仕事でつかってるIBM系のメインフレームのデータセット?
という1レコード3Kbyte程度のバイナリファイルをFTPでおとしてきて
読み込み加工して出力し、またメインフレーム上に戻す(できれば)という
ものです。

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

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



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

バイナリファイルの扱い自体は別に困難じゃない。
unpackして適当に加工してまたpackすりゃいい。
問題はEBCDICの扱いになるかな。なんかライブラリあったかなあ?

144 :デフォルトの名無しさん:2010/03/09(火) 00:52:39
さっそくありがとうございます。
pack,unpackの扱いについては、このあたりで良いですか?
ttp://www.ruby-lang.org/ja/man/html/pack_A5C6A5F3A5D7A5ECA1BCA5C8CAB8BBFACEF3.html


145 :デフォルトの名無しさん:2010/03/09(火) 00:56:11
バイナリ列をバイナリのまま扱った経験がないとしたら茨の道と言わざるを得ないが
Rubyはそのへんを助けるようなことはしない

146 :デフォルトの名無しさん:2010/03/09(火) 01:04:49
COBOLとRubyって、すごい対比だなw
金融機関の人間だけど、そういう場合は必ずいったんRDBに入れたり最悪でもCSVかTSVに変換してるなぁ。
つまり汎用機→情報系用に変換→各種処理→戻し変換→汎用機というルート。
変換にはうちはF*TRANを使ってる。
iconvとかでもEBCDIC扱えるみたいね。

データセットを直接扱うなんて、
リスクが高すぎてうちでは絶対に許してくれない。

147 :デフォルトの名無しさん:2010/03/09(火) 01:17:23
質問に?が多すぎ。
バイナリ、とは言うが、実はASCIIの文字列かいな。
.txt の処理は、Rubyだとより柔軟にできる訳だが、今からでは、間に合わないでしょ。
SEDとか、AWKのスクリプトも書けないのか、それともそんなものも知らないのか。
おそらく、今から勉強しても間に合わないから、あなたの得意なエクセルで作業をスタート。
あとは、時間との勝負。
だな。

148 :デフォルトの名無しさん:2010/03/09(火) 01:19:28
F*TRANって、FORTRAN?
なんで伏字にするの?

149 :デフォルトの名無しさん:2010/03/09(火) 01:24:45
FORTRANに嫉妬しているから。


150 :デフォルトの名無しさん:2010/03/09(火) 01:33:02
>>148
http://www.bsc.fujitsu.com/services/ftran/

151 :デフォルトの名無しさん:2010/03/09(火) 01:34:01
c#なら10行書けば済む処理だな

152 :149:2010/03/09(火) 01:41:46
それは、知らんかった。
音(的には)P-TOSのなんとかに似ているね。

153 :デフォルトの名無しさん:2010/03/09(火) 01:42:02
>>150
こんなのあるのか。笑ってしまった。

154 :デフォルトの名無しさん:2010/03/09(火) 02:31:05
>>145
まさにその茨の道を進もうとしてるようですよ。

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

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

>>146手掛かりくれてありがとう。

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

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

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

ぶっちゃけこれ使わずに「お前が困る動作組み合わせは全部書いてあるからちゃんとマニュアル読め」でもいい
マニュアル読まない人が(あるいはうっかりで)よくないタイミングで破壊的動作をしてしまっても
変更して欲しくないとタグ付けされたオブジェクトだったらメソッド動作の時点でエラー出して守ってあげよう、
そんな若さと渋さの間で揺れるナイス・サーティのアナタに贈る鼻歌みたいな応援歌

156 :デフォルトの名無しさん:2010/03/09(火) 12:32:47
a = [ [ ] ]
a.freeze
a.frozen? #=> true
a[0].frozen? #=> false

なんだよな。
当然といえば当然なんだが。


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

Array#freeze がそういう「外の入れ物だけフリーズさせる」ような動作にたまたまなってるだけ
freeze の実装自体はもっと柔軟に対処が可能

158 :デフォルトの名無しさん:2010/03/09(火) 12:50:48
freeze は

def hoge!
 raise_if_frozen
 …
end

とか

def hoge! … end
freeze_method :hoge!

とかいう仕組みを作って簡易に利用できるほうがよかったと思う

159 :デフォルトの名無しさん:2010/03/09(火) 12:58:03
freeze 自体が Ruby 文化とあまり適合しないと言われているから
うまい構文糖や実装ポリシーが
熱心に研究されていないんじゃないかなあ

160 :デフォルトの名無しさん:2010/03/09(火) 13:11:39
evil rubyたのしいです。


161 :デフォルトの名無しさん:2010/03/09(火) 13:11:51
private や protected の動作がイマイチなのと根っこはたぶん一緒だよね

162 :デフォルトの名無しさん:2010/03/09(火) 13:44:44
if hoge && fuga.size > 0

if hoge && !fuga.empty?
どっちがいい?
どっちでもない別の表現がいい?

163 :デフォルトの名無しさん:2010/03/09(火) 13:46:31
あと
if fuga.size > 0

unless fuga.empty?
にした方がいいんだろうか?

どれもお好きなようにっていう程度だろうか

164 :デフォルトの名無しさん:2010/03/09(火) 14:07:25
>>162-163
字面が違うから意味が違う

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

そんな感じ

あと配列なら Enumerable 由来の any? とか all? とかの利用も考えるといい

165 :デフォルトの名無しさん:2010/03/09(火) 16:21:52
>>164
書き忘れてましたfugaはArrayインスタンスです

配列であれば162も163もそれぞれ動作は同じですよね?

166 :デフォルトの名無しさん:2010/03/09(火) 16:51:22
なにを心配してるのかわからん
sizeが整数や実数を返す可能性とか考えてる?

167 :162:2010/03/09(火) 17:42:10
心配しているわけじゃなく
意味が同じなら書き方としてどっちがRubyっぽいのかなと思って

>>162,163で例に出した形の文は今まで前者で書いてたんですけど
empty?を使う方がいいという意見を別のところでも見たので。
特に>>162の方は否定(!)をつけてまでempty?にするのがいいのかどうかってことです

168 :デフォルトの名無しさん:2010/03/09(火) 17:49:23
? を使う述語があるならそっちのほうがいいという話にはどうしてもなるな

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

&& などで繋ぐ場合は !foo.empty? みたいな記述はけっこう容認されてる雰囲気
if !foo.empty? だけだったら unless foo.empty? 使えという話になるんだけど

169 :デフォルトの名無しさん: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? のほうが若干ですが動作速度が速いはずです。

170 :デフォルトの名無しさん:2010/03/09(火) 19:01:57
「要素があるか」を調べたいのに「空か」を調べてさらに加えて否定まで付けなきゃならんのは如何なものかってことじゃろ

171 :デフォルトの名無しさん:2010/03/09(火) 19:35:09
だから標準で all? とか any? とかあるって
それで不足ならメソッドに掃き出すことを厭ってはならね

172 :デフォルトの名無しさん:2010/03/09(火) 19:41:12
unlessがあるんだから使おう、と思うか、他の言語と同じようにifで書こう、と思うか、は
微妙なところだな。自分の場合、何年かの周期でふらふらしてる。

173 :デフォルトの名無しさん:2010/03/09(火) 19:42:39
メソッドフル活用派とプリミティブ派のたたかいはまだつづく

174 :デフォルトの名無しさん:2010/03/09(火) 19:44:37
Pythonスレ
社会人が多く、大人の発言
初心者に優しい

Rubyスレ
キチガイ、偏執狂、厨房の巣窟

175 :デフォルトの名無しさん:2010/03/09(火) 19:49:56
要素の数が0以外なら真を返す、みたいなメソッドがないことが問題をややこしくしてる
本当はこのへんは対称性があってもいい(なくてもいいが)

うまいメソッド名が思いつかなかったっぽい雰囲気はあるが

176 :デフォルトの名無しさん:2010/03/09(火) 19:56:30
>>170
(誤) さらに加えて
(正) かてて加えて

177 :デフォルトの名無しさん:2010/03/09(火) 20:05:28
any? はよいんだけど、 [ nil ].any? #=> false なので
要素が1つでもあるか、という判定としては万能ではないかもなー。


178 :デフォルトの名無しさん:2010/03/09(火) 20:11:51
万能ではないも何も
> 要素の数が0以外なら真を返す、みたいなメソッドがない
という話が既に

179 :デフォルトの名無しさん:2010/03/09(火) 20:18:35
def hage?

end

def fusa?
!hage
end

みたいなメソッド定義はよく見る
empty? も時流に乗るべきだとは思う

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




181 :デフォルトの名無しさん:2010/03/09(火) 22:33:53
懐古厨乙

182 :デフォルトの名無しさん:2010/03/09(火) 22:37:02
>>181
レスしたのお前だけだぞ

183 :デフォルトの名無しさん:2010/03/09(火) 22:41:39
おっさん多いなこのスレ。。

184 :デフォルトの名無しさん:2010/03/09(火) 22:51:59
うんにゃ、知らない奴はレスしないだけ
バックグラウンドがたまたま見えただけに過ぎない

185 :デフォルトの名無しさん:2010/03/10(水) 04:22:42
メソッドと変数が見分けがにくいな

186 :デフォルトの名無しさん:2010/03/10(水) 09:11:00
ローカル変数のように見えて実はメソッド、というのはままある。


187 :デフォルトの名無しさん:2010/03/10(水) 09:19:08
「値は必ず確固としたオブジェクト」なので、メソッドだろうがローカル変数だろうが
値を返すキーワードが実際は何でできてるのかは使用者からは区別する必要ないよねというポリシーがある

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

代入が文脈依存なのはそれなりに面倒
selfの有無で同じ名前を2回使い分けられるということでもあるが

188 :デフォルトの名無しさん:2010/03/10(水) 09:26:35
さすがにそれはどうでもよくないだろー
local_var()もできないんだし

189 :デフォルトの名無しさん:2010/03/10(水) 10:01:42
問題になる状況自体が問題だと思うぞ
どういうネーミングだよ

190 :デフォルトの名無しさん:2010/03/10(水) 10:10:12
めっちゃプリミティブな名前のインスタンスメソッドを作って、なおかつローカル変数もそのままの名前である場合
uri とか

191 :デフォルトの名無しさん: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. なによりも、負担は将来の子ども達が背負わなければならない。

国会答弁にて、政府も設計に難があるのは認めていますが、今後検討するという理由で、この欠陥を
そのまま推し進めようとしています。まだ諦めるのは早いです。できる限りの手を尽くしましょう!!
-- ここまで --

192 :デフォルトの名無しさん:2010/03/10(水) 10:57:01
スレ違い

193 :デフォルトの名無しさん:2010/03/10(水) 10:58:59
>>192
レスしたのお前だけだぞ

194 :デフォルトの名無しさん:2010/03/10(水) 13:02:57
>>191
民主は売国政党だからな


195 :デフォルトの名無しさん:2010/03/10(水) 17:09:34
初心者は1.8.7をインストールすればいいんでしょうか?

196 :デフォルトの名無しさん:2010/03/10(水) 17:36:37
はい、そうです。

197 :デフォルトの名無しさん:2010/03/10(水) 17:37:07
はい

Windowsならhttp://arton.hp.infoseek.co.jp/indexj.html
ただしコマンドプロンプトの知識がどうしても必要

198 :デフォルトの名無しさん: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をそれぞれ呼び出したとき、
結果は変わらないと思うんですが、処理速度に違いは出ますか?

199 :デフォルトの名無しさん:2010/03/10(水) 18:49:57
def method3(i)
case i
when 0...1000, 2000...3000, 4000...5000 then true
else false
end
end

ほんとうに整数ならこれが速くてわかりやすい
整数なのならわざわざ配列作る必要はない

200 :デフォルトの名無しさん:2010/03/10(水) 19:22:30
int x=1000;
for(int i=0;i<=x;x*i)
{
}

201 :デフォルトの名無しさん:2010/03/10(水) 19:40:05
(0...1000).include?(x) は 0<=x && x<1000 と同じだけど
(0...1000).to_a.include?(x) は配列の要素を一つずつ比較するので当然遅くなる

202 :デフォルトの名無しさん:2010/03/10(水) 19:48:12
処理が遅いってどういうとき遅いの?

203 :デフォルトの名無しさん:2010/03/10(水) 20:05:01
>>202
実際に遅いかどうかプログラム作って確かめてから考えたほうがいい
机上で遅そうだと思っても意外と許容範囲内であることは多い

204 :デフォルトの名無しさん:2010/03/10(水) 20:09:02
.NETで作ったdllは参照できますか?

205 :デフォルトの名無しさん:2010/03/10(水) 20:16:00
dll <-> COM <-> Ruby

206 :デフォルトの名無しさん:2010/03/10(水) 20:18:58
へー、COMなら参照できるのか

どういう原理なんだ?

207 :デフォルトの名無しさん:2010/03/10(水) 20:38:42
COM Ruby でぐぐると…わあ微妙

208 :デフォルトの名無しさん:2010/03/10(水) 22:27:35
pause(2) に相当するメソッドでないんですかね。
とりあえずKernel.#sleepによる無限スリープで代用していますが

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

sleep(0) してもすぐ戻ってきやがる。
マニュアルと実際の挙動が違うのはなぜ?
ちなみに引数を省略した場合は仕様通りなんですけど。

209 :デフォルトの名無しさん:2010/03/10(水) 22:33:11
pause(2)ってサスペンドの時に発行される奴だっけ?

Process.kill :STOP, $$
じゃだめですかね?


210 :デフォルトの名無しさん:2010/03/10(水) 22:34:53
>>209
ああ、それいいかもです。

ところでKernel.#sleepの挙動がマニュアルと異なるのが気になりますw
sleep(0) ですぐリターンするのは何故でしょう??

211 :デフォルトの名無しさん:2010/03/10(水) 22:38:10
まあ個人的にはただしい挙動だとは思いますが。
シェルから sleep 3 を実行すると0秒後に復帰しますし、永久にスリープはしませんね。はい。

212 :198:2010/03/11(木) 00:38:23
みなさん、ありがとうございます。
method1の代わりには、ご提示くださったmethod3が確かに良さそうですね

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

かと言って、データのクラスにmethod1や3のような記述をしても、
データを管理しているイメージはないですよね

213 :デフォルトの名無しさん: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だと永久スリープとある。

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



214 :デフォルトの名無しさん: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)

とかやる気なの?

215 :デフォルトの名無しさん:2010/03/11(木) 01:24:00
Rubyでできないことって何?

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

と答えるのが一番実態に近いと思うん
説明してだいたいをわかってもらえるような人はそういう聞き方しないので

217 :デフォルトの名無しさん:2010/03/11(木) 01:33:05
そっか

218 :デフォルトの名無しさん:2010/03/11(木) 02:40:42
ものそい他人任せだが、他の初心者にやさしい「見た目わかりやすい」言語を学んでからだと
Rubyのような言語の立ち位置がよく理解できるかと思う

最初からRubyだけ与えられている状態はけっこう不幸だ
だから大学1年の授業にRubyを使うとかいうのは俺はあまりいいと思わん

219 :212:2010/03/11(木) 02:53:01
>>214
そんな感じのをやる気なのですが

220 :デフォルトの名無しさん: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)

221 :デフォルトの名無しさん:2010/03/11(木) 06:08:59
tcl入れてないんじゃね?

222 :デフォルトの名無しさん:2010/03/11(木) 10:16:02
そのRuby自体が、tkをサポートしてないRubyに見える

223 :デフォルトの名無しさん:2010/03/11(木) 11:27:44
net/httpライブラリでデフォルトのリクエストヘッダを設定する賢い方法ない?

http.rbのHTTPGenericRequest#initializeを直に書き換えるのは気持ち悪いよな

224 :デフォルトの名無しさん:2010/03/11(木) 11:44:58
そのような動作をするクラスやメソッドを別途作る
net/http そのものを弄ることは推奨されない
固定の HTTP ヘッダが必要なら、固定の HTTP ヘッダを追加して Net::HTTP オブジェクトを作るメソッドを作る

225 :デフォルトの名無しさん:2010/03/11(木) 11:46:51
手順的に不正確だった
> 固定の HTTP ヘッダを追加して Net::HTTP オブジェクトを作るメソッドを作る

Net::HTTP オブジェクトを作って固定の HTTP ヘッダを追加して返すメソッドを作る

226 :デフォルトの名無しさん:2010/03/11(木) 11:57:11
そこまで書くなら Net::HTTP オブジェクト自体はヘッダのデータ持たないと思うにゃん

227 :デフォルトの名無しさん: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']

228 :デフォルトの名無しさん:2010/03/11(木) 12:19:50
/aaa\/bbb/
という正規表現文字列にマッチする正規表現というのはどう書けばいいんでしょうか。

\/.*?\/
と書いて、中の\/にマッチしないように
\/[^\\\/]*?\/
としてもダメでした。


229 :デフォルトの名無しさん: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/"]

どこまで汎用になればいい?
本当にマッチさせたいものはなに?

230 :220:2010/03/11(木) 12:41:00
http://jp.rubyist.net/magazine/?0011-CGIProgrammingForRubyBeginners-2#l2
ここに書いてある通り、One clickインストーラーをインストールしたので
tkは自動で入っているらしいのですが
tk.rbで検索してもHDD内のどこにもなかったんですが
やっぱりインストールされていないということなのでしょうか?

231 :デフォルトの名無しさん: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年も前の記事をほいほい参考にすべきではない

232 :デフォルトの名無しさん:2010/03/11(木) 13:47:54
>>224-227
Thanks!
やっぱソコソコ手間かかるか

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

俺仕様ってことで推奨されない方法で行きます

233 :デフォルトの名無しさん:2010/03/11(木) 13:53:49
>>228
str = "hoge/aaa\/bbb/fuga"
re = /\/[^\/]++\/[^\/]++\//
p str.slice(re) #=> "/aaa/bbb/"

234 :デフォルトの名無しさん:2010/03/11(木) 13:59:46
>>232
Net::HTTP を直接使用することは極力避けたほうがいい(第一面倒だ)
自作のスクリプトで何度も使うというのならそのようなライブラリを自作するチャンス

俺は wget を定義して require 'orelib/wget' してしばらく使い回してたぞ

235 :232:2010/03/11(木) 14:15:56
>>234
>極力避けたほうがいい
それはどうして?
net/httpのAPIは結構気に入ってるんだけど

コネクションがスレッドセーフじゃないとか
Errno系の例外が不親切とかそこら辺?

236 :デフォルトの名無しさん:2010/03/11(木) 14:28:03
Net::HTTP は抽象度がわりと低いほうだからじゃないでしょうかぬ
システム的な問題ではないと推測

237 :220:2010/03/11(木) 15:25:24
>>231
仰る通り単体のRubyを入れていたようです
oldと書いていたので新しいもののほうがいいと思って
そっちをダウンロードしてしまったみたいです

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

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

そしていろいろぐぐっているとVisualuRubyはすでに入っているようなので
こちらでGUIを作りたいと思います
ありがとうございました

238 :デフォルトの名無しさん: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(?)するには
どうしたら良いのでしょうか?

239 :デフォルトの名無しさん:2010/03/11(木) 17:08:07
>>213
あんまりよくわからんなりにソースを読んで見たところ(Windows版Ruby1.8.7だとして)

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

るりまが間違ってるんじゃないだろうか?
あんまり自信があるわけじゃないので
だれか詳しい人、正確な説明よろしく


240 :デフォルトの名無しさん:2010/03/11(木) 17:08:27
自分で答言ってる

if File.exist?(outfile)
print "#{outfile} は存在しています。上書きしますか ? (y/[n]): "
$stdout.flush
exit if $stdin.gets =~ /\Ay/i
end

241 :デフォルトの名無しさん:2010/03/11(木) 17:09:19
>>238
flushって言葉を知ってるなら
IOのインスタンスでありprint等の出力先である$stdoutにそれをすればいい
と言えばわかるんじゃないかな

242 :238:2010/03/11(木) 17:25:47
>>240, 241

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

情けないことに$stdinの方をflushして
動かんなー、と悩んでました・・・。

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

もう疲れたよ・・・

244 :デフォルトの名無しさん:2010/03/11(木) 18:11:21
ActiveScriptRuby(ActiveRubyというものは存在しないしこう表現してもいけない)は
デフォルトで C:\Program Files\ruby-1.8 にインストールするはずだが
C:\Ruby にインストールされるのは RubyInstaller の Ruby

245 :デフォルトの名無しさん:2010/03/11(木) 18:18:22
RubyInstallerをアンインストールしなかったのか
予想外だ

というかRubyでGUIなんかわざわざやろうという人はもっと熟練して賢いもんだと思ってた

246 :デフォルトの名無しさん:2010/03/11(木) 18:24:04
やはりTkへのアクセスの存在は隠したほうがいいのかもしれない
もう応対がめんどくさすぎる
デフォルトOFFのRubyInstallerの判断は賢い
…正式版じゃないからかもしれないが

どうしてもTkに処理を渡したいとき用のライブラリであって、
Rubyでウィンドウを作るためにあるわけじゃない
なんでRubyでウィンドウアプリケーションを作ろうと考えるのかもう全く理解できない

247 :220:2010/03/11(木) 18:32:29
簡単なのはRubyと聞いたのでやろうと思ったんだけど
まさかインストールするだけで2日かかるなんて

248 :220:2010/03/11(木) 18:35:42
>>244
空白開いてるといけないとかどこかで見たから
デフォルト変えてD;\直下にインストールしただけ
エラー表示されるときのパスもちゃんとインストールされた
場所のTCLを参照しているし、でもエラーが出る

RubyInstallerはActivescriptRubyを入れる前に
ちゃんとアインインストールしました
残ったフォルダも直接削除しましたし

249 :デフォルトの名無しさん:2010/03/11(木) 18:38:28
>>247
簡単だよ

ただ、OS操作とコマンドライン文化に不慣れなプログラミング初心者が独学でやっても簡単だと言った人がいたなら
俺が許可するのでグーで殴れグーで

250 :デフォルトの名無しさん:2010/03/11(木) 18:40:00
>>249
スレのテンプレすら読めない人も追加で

251 :220:2010/03/11(木) 18:46:47
>>246
>なんでRubyでウィンドウアプリケーションを作ろうと考えるのかもう全く理解できない

ここを見たので、この通りやろうとして躓きました
http://jp.rubyist.net/magazine/?0002-FirstProgramming
逆になぜ作ってはだめなのか私にはわかりません
そういった説明もないですし

252 :デフォルトの名無しさん:2010/03/11(木) 18:48:50
>>250
そだな、>>1の注意書きとか読めてないような人にはたぶん無理だな

253 :デフォルトの名無しさん:2010/03/11(木) 18:51:41
Rubyを使ってる人は程度が低いので、Ruby以外の知識が要求されるGUIプログラミングを否定しようとします
そういった人に騙されないようにしましょう

254 :デフォルトの名無しさん:2010/03/11(木) 19:00:11
>>253
今のお前恐ろしくつまんないんだけど…

255 :デフォルトの名無しさん:2010/03/11(木) 19:05:13
いや、Rubyとかじゃなく、GUIに関するドキュメント少なすぎるだけだと思う。
LinuxでGTKプログラミングやろうとすると多くの人が挫折するし。

256 :220:2010/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
など・・

こんな感じです

257 :デフォルトの名無しさん: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 がなんかしてるんだろうと思う

258 :デフォルトの名無しさん:2010/03/11(木) 19:29:51
Ruby と Tk をインストールしてから一度も RDE を再起動してない場合はこうなるな

259 :デフォルトの名無しさん: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

ウインドウを出すところまでは普通に動くね

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

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

>>259
そのTCLはActiveScriptRubyに入っているTCLですか?
それとも別途インストールしたほうのTCLでしょうか?
どこかのサイトにRubyが参照しているライブラリのディレクトリを表示する
コマンドが書かれていたんですけど、閉じてしまってわからなくなった

261 :デフォルトの名無しさん:2010/03/11(木) 20:00:39
詰まる初心者の9割はRDE使ってるよな
なんなの

262 :デフォルトの名無しさん:2010/03/11(木) 20:12:21
>>261
誘蛾灯みたいなもんだと思う

コマンドプロンプト上から ruby -e "require 'tk'; Tk.mainloop" を実行してウィンドウが出るのに
RDE のエディタ部に require 'tk';Tk.mainloop と書いて F5 押してエラーログが出るなら RDE の問題

263 :デフォルトの名無しさん:2010/03/11(木) 20:58:57
zipとrarを回答する短いプログラムを作ろうと思っているんだけど、
OSのコマンドを使わずに作りたい

できればwindowsとlinuxのどっちでも動くようにしたい
教えてエロい人!!

264 :220:2010/03/11(木) 21:01:03
初心者は蛾扱いか
プログラマってこういう人間ばっかりか

265 :デフォルトの名無しさん:2010/03/11(木) 21:05:01
>>263
ソース読んでそういうライブラリ作るとか。
tarは自分で作ったことあるよ。

266 :デフォルトの名無しさん:2010/03/11(木) 21:10:03
正直RDEというだけで話聞く気9割減

267 :デフォルトの名無しさん:2010/03/11(木) 21:13:10
>>264
1〜2日くらいしか考えてないんだろ
そんくらいで怒るなよ
みんな親切にしてるじゃないか

268 :デフォルトの名無しさん:2010/03/11(木) 21:16:51
>>263
コマンドじゃなければいいだけなのならほぼ全てのスクリプト言語でできるぞ
その言語環境がインストールされていることが前提だが
というかシェルに展開を任すような処理をしてる言語を俺は知らない

269 :263:2010/03/11(木) 21:18:06
>>265
tarを解凍するコードをRubyで書くのって、面倒じゃないんですか?
Rubyの文法がまだ分からないんでorz

頑張って作ってくれと頼まれたもので..

270 :デフォルトの名無しさん:2010/03/11(木) 21:21:00
>>269
いやtarの展開だけなら数百行でおk。
アーカイブに追加するのは、ちゃんとテストしないと恐ろしいのでやめた。
面倒なら外部コマンドに投げるのが楽。

271 :デフォルトの名無しさん: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行くらいで展開する

272 :デフォルトの名無しさん:2010/03/11(木) 21:27:13
あ、Zipってそっちか
それはrubygemからの追加インストールがいるな

273 :263:2010/03/11(木) 21:27:41
>>268
zipを解凍するライブラリーはrubyにもあると思いますが、
rarはライセンスのせいでライブラリーが・・・と思ったので

>>270
さすがに、制限時間があるなかで「Rubyの文法 + 解凍のコード」を
書くのは厳しいですね〜

274 :デフォルトの名無しさん:2010/03/11(木) 21:47:28
@hoge = hoge
こんなコードがrubyにはあるわけですが、
perlと同じく変数は宣言しなくていいんですか?

最近のperlはmyをつけて、変数を宣言するのが一般的になってきていると思うのですが

275 :デフォルトの名無しさん: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 でも設定して試してみて

276 :デフォルトの名無しさん:2010/03/11(木) 21:55:04
>>274
Rubyの変数はハコではない

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

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


…実際は宣言してるはずなんだが、完全に隠蔽されててRubyスクリプトからは見えないし触れないし関われない

277 :デフォルトの名無しさん:2010/03/11(木) 22:02:08
プログラミングがしてみたい、というだけなら
今はMSのSmall Basicがいいんじゃなかろうか。


278 :デフォルトの名無しさん:2010/03/11(木) 22:07:28
>>277
うん、マニュアルだけ見れば十分な既言語取得済該当言語初心者はいつもそう言う

プログラミング初心者に本当に必要なのは十万の解説と百万のサンプル

279 :274:2010/03/11(木) 22:19:12
>>276
オブジェクトは既に存在していて、オブジェクトに対して名前をつけているってことか?

@var = hogeはjavaでいうと

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

と同じになるの?

280 :デフォルトの名無しさん:2010/03/11(木) 22:24:11
>>275
ごめん、もうアンインストールした
この2日間、時間の無駄使いしただけだった

281 :220:2010/03/11(木) 22:31:58
環境変数という言葉すら初耳の状態からスタートしたおれにとって
まさに>>278の言う通り

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

俺の考えている初心者とプログラマーの初心者の立ち位置が違いすぎた
あなた達とはもう2度と出会うことはないでしょう
さようなら

282 :デフォルトの名無しさん:2010/03/11(木) 22:36:06
>>278
その見地ならJavaが最適ってことで。
でもなぜかJavaを勧める人はあんまりいない、気がする。

283 :デフォルトの名無しさん:2010/03/11(木) 22:42:04
>>281
本当にもう見ていないことを期待して書くが、たとえば
キーボードやマウスの使い方、エクスプローラの使い方なんかは言語の範疇外だ
それと同様、コマンドプロンプトやOSの環境変数、標準のインストーラ動作なんかは言語解説の範疇外
コマンドプロンプトに日本語を表示したら化けたとかそういうのも本来無関係
文字コードって何ですかとかシフトジス?ってなんですかとかそういうの知らないのも問題外
HTTPとURI関連のライブラリ使うならRFC準拠の基礎知識くらいは持ってから来いやポートの説明からか泣くぞオラ

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

もし他の(お金持ちでそれゆえ親切な)言語でプログラミングの楽しさを身に付けたなら、
そのときは気が向いたときにでも振り返ってRubyを検討してみてくれると嬉しい

284 :デフォルトの名無しさん:2010/03/11(木) 22:46:46
すこぶるRDEは嫌われてるみたいですが、
ここに居る人はどんな環境使ってるんですかね?

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

ちなみに仕事はソフトウェア関連ではなく超初心者です。

285 :デフォルトの名無しさん:2010/03/11(木) 22:47:03
最近はさすがに減ったが、「プログラミングの全くの初心者にもRubyは簡単」という喧伝が多すぎたな
プログラミングの経験がなくても結構使うまでいける言語である保証は頑張ってしたいところだが、
そこまでの道のりがどなたにも簡単かと言われるとかなり大きな疑問符

286 :デフォルトの名無しさん:2010/03/11(木) 22:49:52
>>284
えまくすくりーんぷてぃー
何らかの手段でLinuxを起動して接続してその上でRuby使うのがたぶん一番妥当
Windows上でRuby使うとかなんかボリショイサーカス見てる気分になる

287 :デフォルトの名無しさん:2010/03/11(木) 22:50:44
やろうとしたことが GUI でしかも IDE 使用という
二重のトラップにかかったのが不幸だったといわざるを得ない

『たのしい Ruby 』とか適当な初心者本買って
コマンドプロンプト+テキストエディタでリベンジしてほしいな
地味だけど

288 :デフォルトの名無しさん:2010/03/11(木) 22:54:57
>>287
コマンドプロンプトではエラーなく動作してる時点で
「あっじゃあこっちでやりますRDEはステで」
という判断にならなかったのがなんかもう供養塔立てて忘れないよう祀るレベル

今度から「RubyではGUIできません」と答えることにしようと思う

289 :デフォルトの名無しさん:2010/03/11(木) 23:10:44
>>281
プログラミング初心者ならそれこそ1日や2日でマスターできるもんじゃないんだから、
根気よくやらないといかんよ・・・

毎日プログラミングし続けて3年くらい使い続ければそこそこプログラミングできるようになる。
頑張れ

290 :デフォルトの名無しさん:2010/03/11(木) 23:13:57
>>281
誰にGUIをRubyなら簡単にできると教えてもらったのか知らんが、そいつを殴ってもいいぞ

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

Delphiでゲーム作ってプログラミング覚えた俺だけど、いきなりRubyやってたら多分挫折してる

291 :デフォルトの名無しさん:2010/03/11(木) 23:23:23
最近で見たRuby初心者でいえば、チンパン団のロプロスはすごかったな。
ニートから1年くらいでphp→Rubyと来てtwitter関連のwebサービス立ち上げて、アフィリエイトで飯食ってる。

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

何がいいたいかって、GUIじゃなくてwebに興味持てばまだよかったと思う

292 :デフォルトの名無しさん:2010/03/11(木) 23:25:56
アフィリエイトって w

293 :デフォルトの名無しさん:2010/03/11(木) 23:33:24
しょうもないこと言うやつばっかりになったな

294 :デフォルトの名無しさん:2010/03/11(木) 23:37:41
moduleってC++のnamespaceやjavaのpackageと同じ?

295 :デフォルトの名無しさん:2010/03/11(木) 23:39:29
クラウドだのシンクライアントだのって数年前のサーバサイドに先祖返りしてるけど
Railsは本命にはならんだろうな
なんだかんだ言ってcgi+javascriptがこの先も主力だろう

296 :デフォルトの名無しさん:2010/03/11(木) 23:55:12
> なんだかんだ言ってcgi+javascriptがこの先も主力だろう
> なんだかんだ言ってcgi+javascriptがこの先も主力だろう
> なんだかんだ言ってcgi+javascriptがこの先も主力だろう
> なんだかんだ言ってcgi+javascriptがこの先も主力だろう
> なんだかんだ言ってcgi+javascriptがこの先も主力だろう

297 :デフォルトの名無しさん:2010/03/12(金) 00:00:44
気持ちはわかるが5行はやりすぎだ落ち着け

298 :デフォルトの名無しさん:2010/03/12(金) 00:04:14
RoR と cgi+javascript じゃ目指してるものが違うから住み分けるんじゃないの?
サイトの数としては後者の方が多くなるだろうけど

299 :デフォルトの名無しさん:2010/03/12(金) 00:10:38
>>294
C++のnamespaceとJavaのpackageが同じに見えるのなら、
moduleも同じだということにしてもいい。
あ、classも同じでいいよ。

300 :294:2010/03/12(金) 00:14:15
>>299
そんじゃ、moduleもpackageみたいに使います
あえて言うなら、何か違いありますか?

今のところ趣味でプログラミングしているんで、namespaceを使うことが無いんだよね〜
だから、namespaceとpackageの細かな違いがわかんない

301 :デフォルトの名無しさん:2010/03/12(金) 00:15:24
このスレっていつもこんな感じなのか?
プログラムというよりは「自宅サーバ板」のおまけスレみたいだな

302 :デフォルトの名無しさん:2010/03/12(金) 01:15:58
3月は春休み

303 :デフォルトの名無しさん:2010/03/12(金) 01:41:29
>>301
あなたがここに来たのと同じような理由の人がいます

304 :デフォルトの名無しさん:2010/03/12(金) 04:47:02
CentOS5のrubyが、rubygemsを入れるには古いので、
RPMとソースインストールを共存させようと思いました。
RPMは/usr/bin、ソースインストールは/usr/local/binに入るので、
位置的には問題なく入ったのですが、
このままだとRPMのrubyが優先的に使われます。
ソースインストールのrubyが優先的に使われるようにするにはどうすればいいですか?

305 :デフォルトの名無しさん:2010/03/12(金) 05:11:32
>>281
Cygwin の Ruby なら簡……と言いかけたがダメだなこりゃw

306 :デフォルトの名無しさん:2010/03/12(金) 08:24:01
>>304
PATH


307 :304:2010/03/12(金) 08:45:44
ありがとうございます。
よく見たら/usr/local/binが先に書いてあるので
このままでもソースインストールのrubyが優先されました

308 :デフォルトの名無しさん:2010/03/12(金) 08:59:02
共存か…CentOSにalternative的なものって無かったっけ

309 :デフォルトの名無しさん:2010/03/12(金) 10:19:39
>>308
man 8 alternatives
chkconfigパッケージに入ってる。


310 :デフォルトの名無しさん:2010/03/12(金) 11:04:29
>>304
うん、Linuxのパスについての勉強しれ
rubyインタプリタは自分の場所を考慮して起動用設定ファイルを読むから、
/usr/local/bin/ruby と /usr/bin/ruby と /home/ore/usr/local/bin/ruby くらい違えば小細工ゼロで共存するはず

311 :デフォルトの名無しさん:2010/03/12(金) 12:47:40
updating newgem でメモリ使い切って10分くらいガリガリ言ってる…

312 :デフォルトの名無しさん:2010/03/12(金) 13:14:55
最近のrubygem updateはプア環境ではまた辛くなってる
1.2くらいの頃が一番よかった

313 :デフォルトの名無しさん:2010/03/12(金) 13:35:05
スワップに突入するくらいメモリがない場合は
一旦アンインストールしてから再インストールしたほうが所要時間的には早いよね
アップデート対象のgem一覧を返して終了する、みたいなオプションがないのが辛い

314 :デフォルトの名無しさん:2010/03/12(金) 14:00:19
>>263
7-zipインストールを前提にした上で、それをコマンドラインから叩くのが楽かな。


315 :デフォルトの名無しさん:2010/03/12(金) 14:15:22
>>314
win32のゲームの配布でRubyスクリプト使ってアーカイブ作ってたときは、俺も7zip使ってたな。
外部コマンドあるならそっちも手っ取り早い

316 :デフォルトの名無しさん: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使うもんなんでしょうか?

317 :デフォルトの名無しさん:2010/03/12(金) 14:45:15
>>316
基本的にはソース読む
公開されてる部分のドキュメントが内容を正しく反映しているとは限らないし、
端折られてる部分の重要性のほうが高いことがほとんどだから

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

ちなみに「Rubyにはprivateやprotectedは不要」派でございます

318 :デフォルトの名無しさん:2010/03/12(金) 15:34:10
>>316
自分が参考にする大まかな順番

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

riとrdocは中身は同じだからrdocでもいいと思う。好みで。

319 :デフォルトの名無しさん:2010/03/12(金) 16:26:18
超初心者向けの言語でない事は確実だな。
教祖が使ってるデビアンから入る必要が有るし。特に広く一般に普及してるウィンドウズからは敷居が高い。

320 :デフォルトの名無しさん:2010/03/12(金) 16:31:50
>privateメソッドだからといって説明をしなくてもいいということには絶対にならない
>ちなみに「Rubyにはprivateやprotectedは不要」派でございます

リファクタリングのコストが高くなりすぎないか?

321 :デフォルトの名無しさん:2010/03/12(金) 16:33:37
>>319
お前Ruby以外使ったことないだろ

322 :デフォルトの名無しさん:2010/03/12(金) 18:44:12
拡張子の変更がうまくいきません
foo = "foo.c"
File.extname(foo) = ".o"
とするとエラーが出ます

323 :デフォルトの名無しさん:2010/03/12(金) 18:51:52
extnameが返すのは左辺値じゃない。

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




324 :デフォルトの名無しさん: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"

325 :デフォルトの名無しさん:2010/03/12(金) 19:23:30
rubyの処理系(windows)の違いを教えてください
ActiveScriptRubyと公式な実装(ビルドが沢山ある?)があるみたいですが

326 :デフォルトの名無しさん:2010/03/12(金) 19:25:51
>>325
C#なら何も悩むことはないよ

327 :デフォルトの名無しさん:2010/03/12(金) 19:27:05
>>322
C#ならファイル名変更なんて簡単に一行でできるのに
かわいそw

328 :デフォルトの名無しさん:2010/03/12(金) 19:30:20
>> 323
sub_extなんてものがあったのですね。
ありがとうございます。勉強になりました。
以前リファレンスを探したときは見つけられませんでしたので見直しましたが
やはり1.9のリファレンスにsub_extがありません。

>>324
違います

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

あとは>>6
これでは端折ったが要はActiveScriptRubyがMSWin32でRubyInstallerがMinGW32
この言葉が理解できないならこれ以上の情報は不要なので素直にActiveScriptRuby使え
これはほぼ全てのスクリプトでWindows環境だと思ってもらえる
通常の利用上の問題はないから

330 :デフォルトの名無しさん:2010/03/12(金) 19:36:13
>>329
windowsで公式な実相が無いなら、適当に選ぶことにしますわ
thx

331 :デフォルトの名無しさん:2010/03/12(金) 19:38:10
>>328
riには普通にあったよ
るりまにはないようだ

332 :デフォルトの名無しさん:2010/03/12(金) 19:39:34
>>329
ftp://ftp.ruby-lang.org/pub/ruby/binaries/
これはどういう位置づけなの?

333 :デフォルトの名無しさん:2010/03/12(金) 19:46:00
>>330
適当に選んでは駄目
実用上、コンパイラが何かということよりも
プラットフォーム文字列にwin32の文字列が含まれているかどうかが重要

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

mingw32はRubyに慣れた人向け
スクリプトの修正とかできない人が使ったらどーでもいいとこで詰まるぞ

334 :デフォルトの名無しさん:2010/03/12(金) 19:49:13
>>332
こんぱいるしたひとがるびーのさばにふぁいるをおいてる

インストーラつきじゃないから少なくとも初心者スレで話題に出すようなもんでもないかと

335 :デフォルトの名無しさん:2010/03/12(金) 19:54:58
>>332
そういやこれは結局どうなったんだっけ
本気で「ふぁいるおきば」以上の意図はないんだっけ
根性入れて更新するけど公式にサポートしたバイナリではないとかそんな立ち位置なんだっけか

336 :デフォルトの名無しさん:2010/03/12(金) 19:58:21
Rubyにはサポートレベルというものがあるんだが、
実はWindows系とMacOSXとFreeBSDは同じレベルにあるんだよな。
とてもそんな扱いを受けているようには見えないが。


337 :デフォルトの名無しさん:2010/03/12(金) 19:58:50
ガラクタの寄せ集め言語なんていらない

338 :デフォルトの名無しさん:2010/03/12(金) 20:05:45
Pathologically Eclectic Rubbish Listerのこと?


339 :デフォルトの名無しさん:2010/03/12(金) 20:13:26
初期Rubyユーザが母なるPerlを叩く図式は最高にかっこわるかったな

340 :デフォルトの名無しさん:2010/03/12(金) 20:13:38
RubyでGUIは鬼門、という方向に話が流れてるなあ…
Pythonのように、インストールすれば即座にTkも使える状態になってれば
少しは違ったんだろうか…
かといって、VisualuRubyを推すのもどうなんだという気もするし…
アレはWindows限定だし…

言語の作者自身が「Windowsなんか知らね」属性の人だったのが
そもそも不幸の始まりだったのだろうか…
Windows嫌ってる人って、GUIも否定的な人が多い印象もあるし

341 :デフォルトの名無しさん:2010/03/12(金) 20:13:40
何も見ずにもう一回書いてみろ

342 :デフォルトの名無しさん:2010/03/12(金) 20:14:07
うが。何故瞬間に2レスも間に入るw

343 :デフォルトの名無しさん: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
と怒られてしまいました。右も左も分からないので解決策をご教示願います。

344 :デフォルトの名無しさん:2010/03/12(金) 20:25:04
>>343
とりあえず、てきとうな解説サイト(お勧めは特にない)か本読め

345 :343:2010/03/12(金) 20:25:16
すみません、追記です。
print Wdhの結果は何も表示されませんでした。

346 :343:2010/03/12(金) 20:33:33
>>344
ありがとうございました。

347 :デフォルトの名無しさん:2010/03/12(金) 20:40:36
>>344でよかったのだろうか…

348 :デフォルトの名無しさん:2010/03/12(金) 20:43:31
>>347
適切ではあったとは思う
変数の規則知らない上にエラーの読み方わからんのではさすがに遠隔ではどうにも

349 :デフォルトの名無しさん:2010/03/12(金) 20:45:44
単純には、文字列(String)は整数(Integer)ではないから割り算したいなら
変換しろ、ってだけのことなんだけど。

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



350 :デフォルトの名無しさん:2010/03/12(金) 20:53:25
>>349
>Wdh
>print Wdhの結果は何も表示されませんでした

351 :デフォルトの名無しさん:2010/03/12(金) 20:59:49
>>343
たのしいRuby 第3版
http://www.amazon.co.jp/dp/4797357401/

352 :343:2010/03/12(金) 21:25:59
数々のエスパーレスありがとうございます。
すみません、Wdhが読み込まれてない原因はHTMLのFORM文にミスがあったせいでした。

>>349
個人的にRubyの変数に型はないからString/Integerは気にしなくておkという先入観があったのですが、この先入観はトチ狂ってるのですね。
エラーは脱せていませんがおすすめの書籍と関連サイトで粘ってみようと思います。ありがとうございました。

353 :デフォルトの名無しさん:2010/03/12(金) 21:28:19
変数には型はない。
オブジェクト(値・モノ)には型(クラス)がある。

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



354 :デフォルトの名無しさん:2010/03/12(金) 21:29:51
>>331
へぇそうなんだ
riはファイル数削減のため削除した
ウィルスチェックを毎日フルスキャンする義務があるんで
消したらだいぶスキャン時間が短くなった

355 :デフォルトの名無しさん:2010/03/12(金) 21:33:08
何度でも言われるがRubyの変数は箱ではなくただのラベル
いつ剥がれるか(変数名で参照できる範囲)は決まってるが、貼る先のオブジェクトは区別しない

356 :343:2010/03/12(金) 21:41:39
わかり易い説明ありがとうございます。
なるほど、ラベルに入ったオブジェクトの型は明示してやる必要があるのですね。
アドバイス通りに検索するとすぐに解答がありました。
Wdh=cgi["width"].to_i
として解決しました。

357 :デフォルトの名無しさん:2010/03/12(金) 21:52:41
>>356
違う
Rubyには型は存在しない
クラスは型ではない
>>353は誤り

358 :デフォルトの名無しさん:2010/03/12(金) 21:56:58
タコツボここに極まれり、か

359 :デフォルトの名無しさん:2010/03/12(金) 22:01:38
そもそも型とかいう考え方は即ごみ箱に捨てろ

360 :デフォルトの名無しさん:2010/03/12(金) 22:08:36
型(Type)だな
一時期オブジェクトの説明に間違って使われたタイヤキの鋳型(flask)が後を引いて…はいないか

361 :デフォルトの名無しさん:2010/03/12(金) 22:11:13
>>360
あれは「型」という字にはタイプとテンプレートと鋳型の3つがあるということを失念した例示だったと思う…
タイプやテンプレート相当のものを持った言語を中途半端に習った人大混乱

362 :デフォルトの名無しさん:2010/03/12(金) 22:15:51
この流れはすごいなあ
というかたのしいRubyってタイヤキの例え使ってなかったか

363 :デフォルトの名無しさん:2010/03/12(金) 22:25:27
>>362
うん使ってる
言われてみれば言葉の選び方的にあまりよくないな
鯛焼きのカタという言葉は「変数の型」を想起させて混同させる可能性があるのか
第3版が出ようかというときに新しすぎる知見だろそれ

鋳型ならいい?

364 :デフォルトの名無しさん:2010/03/12(金) 22:34:09
タイヤキの型って、まさしく鋳型じゃない?
>>363の言葉選びのポイントがよくわからん

365 :デフォルトの名無しさん:2010/03/12(金) 22:44:17
>>363
型ってのはそもそも値の集合と操作の集合なので
別にRubyに使ってもなんもおかしくない

んでクラスとインスタンスは英語で言うところのaとtheの関係なので
タイヤキの鋳型とタイヤキでなんも問題ない

366 :デフォルトの名無しさん:2010/03/12(金) 22:51:37
数学的な話ではなく、変数の型とクラスの型の2つの混同で
クラスを従来の変数の型のようなものとして誤解してしまう可能性があるという話では
>>356のように

367 :デフォルトの名無しさん:2010/03/12(金) 23:02:35
それは「変数に型があるかデータに型があるか」の話
型ってそもそもなによって話とは無関係

368 :デフォルトの名無しさん:2010/03/13(土) 00:09:45
>>336
Windowsならスレッドがちゃんと動くが他のプラットフォームだと動かない、
とかいう罠があったりしたこともあるので、なかなか侮れない。


369 :デフォルトの名無しさん:2010/03/13(土) 00:13:40
Unicode の U+2295 みたいな表記を Ruby1.8 で該当バイナリ文字列に変換する方法はありませんか

370 :デフォルトの名無しさん:2010/03/13(土) 00:24:07
>>369
「U+2295」が文字列という前提で

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

1.分割します。

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

2.1バイト目と2バイト目をごにょごにょします。Array#pack() 、かなあ?

371 :デフォルトの名無しさん: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};"})



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

/U\+([0-9a-fA-F]{4,6})/
でいける?

373 :デフォルトの名無しさん:2010/03/13(土) 00:37:46
>>371
間違ってるぞ

puts NKF.nkf('-w, --numchar-input', s.gsub(/U\+([\da-f]+)/i){"&#x#{$1};"})

374 :デフォルトの名無しさん:2010/03/13(土) 00:52:39
1.8では、量が多くない場合はNKFに頼るのが間違いないと思う
1.9だと簡単なんだけど

375 :デフォルトの名無しさん: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]

うひょう

376 :デフォルトの名無しさん:2010/03/13(土) 04:18:36
本来はiconv使うべきとは思うが、実用的なのはnkfだしなあ。

377 :デフォルトの名無しさん: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, の , が余計

378 :66:2010/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]

379 :デフォルトの名無しさん:2010/03/13(土) 06:46:02
ライブラリのインストールに滅茶苦茶時間掛かるんだが
なにこれ

380 :デフォルトの名無しさん:2010/03/13(土) 10:12:06
gem search -r hoge
searchっていちいち入力するの面倒いだけど、searchの短いオプションって無いの?

381 :デフォルトの名無しさん: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)


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

PythonのPython Image LibraryみたいなRubyの画像処理ライブラリってありますか?

383 :デフォルトの名無しさん:2010/03/13(土) 11:13:21
>>382
ありません
ImageMagickインストールしてgem install rmagickするしかないねえ

384 :デフォルトの名無しさん:2010/03/13(土) 11:13:50
用途にもよるけど、既存のCで書かれた画像処理ライブラリを
Rubyから呼び出して使うことが多いと思う。

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

ImageMagickは機能過多だ、サムネが作りたいだけなんだという
人向けにImageScienceというのもあるな。サムネ作成専用。

385 :デフォルトの名無しさん:2010/03/13(土) 11:15:29
>>381
スレの勧めないバージョンインストールしておきながら
お勧めなら引っかからない基本的エラーで文句言うような人はスルー
というのが正しいかと思う

お勧めでなくても入り口以外で引っかかってるなら質問どうぞ

386 :デフォルトの名無しさん:2010/03/13(土) 11:19:17
>>378
バグっぽい気がしたのでチケット切ってみた。 #2955


387 :デフォルトの名無しさん:2010/03/13(土) 11:21:38
>>383-384
なるほど、ありがとうございます。
画像出力より入力の機能の方を重視したいので
PILと同程度のライブラリとなるとImageMagickをつかないといけないんですか・・・
FFIするならGIL辺りが良さそうですね。
参考になりました。


388 :デフォルトの名無しさん:2010/03/13(土) 11:23:54
春休みスレ

389 :デフォルトの名無しさん:2010/03/13(土) 11:32:34
>>388
間違ってるならあとから正せばいい

質問者には数時間くらいは待ってもらえるといいかもしれん

390 :デフォルトの名無しさん: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"

あくまで例なのでコッチのほうがいいとか指摘してください

391 :デフォルトの名無しさん:2010/03/13(土) 11:58:15
あんまりコマンドのエイリアスは設定しない方がいいって
誰か言ってなかった?

392 :デフォルトの名無しさん:2010/03/13(土) 12:03:40
* 別の環境に移ったときになんぞこれってなるからエイリアスすんな派
* 自分好みに環境をカスタマイズしてこそUNIXのシェルだろJK派

どっちを選ぶも自由

393 :66:2010/03/13(土) 12:03:56
>>386
ありがとうございます!

文句を言いたいわけじゃなく、バグなのか仕様なのか自分の勘違いなのか自信が持てないから、
このスレを利用させてもらっちゃったんですが、相応しくなかったみたいですね。
すみません。
もう書くの止めときます。


394 :380:2010/03/13(土) 12:46:52
>>381
seaね、ありがとう
>>390
linuxを使っているならaliasを使うけど、
今はwindowsを使っているからそんな方法があるなんてわからんかったよ

395 :デフォルトの名無しさん:2010/03/13(土) 12:55:19
>>393
1.9.1だったなら俺も>>385に同意だけど、1.9.2devは本スレが妥当じゃないかな

396 :デフォルトの名無しさん:2010/03/13(土) 12:55:54
ライブラリが全然整理されてない印象<Ruby

397 :デフォルトの名無しさん:2010/03/13(土) 13:11:18
うおお、ライブラリが全然整理されてない印象さんがRubyと喋ったぞ

398 :デフォルトの名無しさん:2010/03/13(土) 13:45:08
<Rubyでなくて>Rubyだと思う
固定された意味はないけど

質問
エンコーディングプラグマ、通称マジックコメント、は、
該当するマルチバイト文字のようなもんが書かれてないようなライブラリを
自作して公開する場合はつけないほうがいい?

399 :デフォルトの名無しさん:2010/03/13(土) 13:45:51
あ、>>398は1.9.1の場合ね

400 :デフォルトの名無しさん: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\ はちゃんとあるんだけどね
環境変数が問題なのかな?

401 :デフォルトの名無しさん:2010/03/13(土) 13:52:19
>>400
動かないのならエラーメッセージを貼っておくれ

スクリプトをダブルクリックして実行したのなら
コマンドプロンプトから実行して

402 :デフォルトの名無しさん:2010/03/13(土) 13:59:36
おー、WindowsでQtライブラリ使ってる人初めて見た

403 :デフォルトの名無しさん:2010/03/13(土) 14:08:03
rubygemsでインストールしたパッケージのヘルプってどうやって見れますか?

404 :デフォルトの名無しさん:2010/03/13(土) 14:09:59
>>398
書かない場合は US-ASCII を指定したのと同義。
ASCII文字しかないなら書いても書かなくても結果は同じ。

8ビット目が立ったシングルバイト文字は入れてないよね?


405 :デフォルトの名無しさん:2010/03/13(土) 14:12:27
>>403
riかrdocか。
gem server を起動して http://localhost:8808/ でも読める。


406 :デフォルトの名無しさん:2010/03/13(土) 14:13:09
正規表現の動作が変わるんじゃなかったか

407 :400:2010/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/

408 :デフォルトの名無しさん: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\

409 :デフォルトの名無しさん:2010/03/13(土) 14:17:57
>>407
require 'rubygems'
require 'Qt4'

410 :デフォルトの名無しさん:2010/03/13(土) 14:25:42
>>406
US-ASCIIなソースにUS-ASCII以外のマジコメを書く場合?

411 :400:2010/03/13(土) 14:26:51
>>409
文法を覚える前にテストをするもんじゃないですねwww
助かりました、ありがとうございます

412 :デフォルトの名無しさん:2010/03/13(土) 14:44:08
>>403
HTMLファイルでいいならシェルから

gem environment

した出力の

- GEM PATHS:

の1行目(になかったら2行目)の場所の doc ディレクトリの中に

413 :デフォルトの名無しさん:2010/03/13(土) 16:20:07
#=>って習慣なの?

414 :デフォルトの名無しさん:2010/03/13(土) 16:25:32
>>413
http://doc.okkez.net/187/view/help

415 :デフォルトの名無しさん:2010/03/13(土) 16:26:05
習慣かどうかはしらん
ふつうコメントの直後にスペースをひとつ挟むから
# => value だよな
はちどりのRuby本もそうなってる

416 :デフォルトの名無しさん:2010/03/13(土) 16:39:23
個人的にはあまり好きではない
まあ、書籍向けの表現だと思う

417 :デフォルトの名無しさん:2010/03/13(土) 17:23:40
gem install -r XXXX
ERROR: could not find gem XXXX locally or in a repository
何これ?

418 :デフォルトの名無しさん:2010/03/13(土) 17:33:32
文字通り。


419 :デフォルトの名無しさん:2010/03/13(土) 17:33:47
>>417
その質問に至った経緯をまず聞こうか

420 :413:2010/03/13(土) 17:37:04
>>419
linuxでそう入力しただけだけど
得にそれ以外に何もしていない

421 :420:2010/03/13(土) 17:37:46
名前を間違えた
>>417

422 :420:2010/03/13(土) 17:39:28
ごめん、ただのスペルミスですたorz

423 :デフォルトの名無しさん:2010/03/13(土) 17:39:54
まずはgem search- rを使うんだ、でその結果から選ぶがよろし
自分で入力せずに素直にbash,zshの補完機能に頼った方がいいと思う

424 :デフォルトの名無しさん:2010/03/13(土) 21:46:53
他の言語のisXXXメソッドは、XXX?とrubyではなってるみたいですね
三項演算子とかと一緒に使うと読みにくいと思います
お前らはどうやっていますか?

return windows.visible? ? 値A : 値B

425 :デフォルトの名無しさん:2010/03/13(土) 22:07:58
それほどでも・・・
return (windows.visible?) ? 値a : 値b


426 :デフォルトの名無しさん:2010/03/13(土) 22:10:57
ぶっちゃけ、うっかり
window.visible? A : B
と書いて怒られることはよくある。


427 :424:2010/03/13(土) 22:13:57
そんなもんですか
そんじゃ気にしないようにしますわ

428 :デフォルトの名無しさん:2010/03/13(土) 22:20:29
条件演算子はぶっちゃけそれほど使わない
不自然感を感じてるうちにifとかに書き換わるのでむしろラッキー

429 :デフォルトの名無しさん: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

どちらが好ましい書き方なんでしょうか?

430 :デフォルトの名無しさん: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)


431 :429:2010/03/13(土) 23:43:14
>>430
なるほど、ありがとうございます。

432 :デフォルトの名無しさん:2010/03/14(日) 00:00:43
前者は昔の名残だね。

433 :デフォルトの名無しさん:2010/03/14(日) 00:10:16
前者は return @array.to_enum unless block_given? を最初
にやればよさそうだけど、今回は無理に使うこともないな。


434 :デフォルトの名無しさん:2010/03/14(日) 00:16:42
javaかC++のプログラマのための、Ruby入門のサイトを教えてください

435 :デフォルトの名無しさん:2010/03/14(日) 00:19:42
http://www.google.co.jp/search?q=Ruby%E5%85%A5%E9%96%80&ie=UTF-8

436 :デフォルトの名無しさん:2010/03/14(日) 00:21:15
C++やJavaの特有事情は忘れて勉強したほうが習得はうまくいきそうな気がする
それこそBasicの制御構造レベルの知識だけある人のほうが吸収早そう

437 :デフォルトの名無しさん:2010/03/14(日) 00:44:12
>>424
return windows.visible?? a : b
疑問符を二個つなげてすげー疑問って雰囲気を醸し出す

438 :デフォルトの名無しさん: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]
/あ


439 :デフォルトの名無しさん:2010/03/14(日) 02:15:40
>>430
前者の書き方しか知らなかった。

440 :66:2010/03/14(日) 07:03:08
>>395
今度から本スレに書きます。

>>438
ありがとうございました。
確認しました。


441 :デフォルトの名無しさん:2010/03/14(日) 08:44:47
春休みで盛況だなw

442 :デフォルトの名無しさん:2010/03/14(日) 11:49:30
moduleってパッケージとMixinを、実現するための予約語なんだよね
Mixinは実装を持ったインターフェイスみたいなもんだから、
moduleはmoduleを継承する事ができるの?

443 :デフォルトの名無しさん:2010/03/14(日) 12:18:51
>>438
乙乙!!

444 :デフォルトの名無しさん: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]

445 :デフォルトの名無しさん:2010/03/14(日) 12:40:44
じゃあ継承でいいじゃん

446 :デフォルトの名無しさん:2010/03/14(日) 12:46:49
>>445
よくねー

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

class 俺 < 翼
end

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

class 俺
機能追加 翼
end

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

実際は
俺 = 人間.new(params)
俺.extend(翼)
とするのが妥当ではあるがまあ細かいこと気にするな禿げるぞ

447 :442:2010/03/14(日) 13:12:23
>>444,>>446
ありがとう

>>445
なりすましっぽく見えるレスだな

448 :デフォルトの名無しさん: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を使うべきなのか

宜しくお願いします。

449 :デフォルトの名無しさん:2010/03/14(日) 23:25:51
>>448
他のスレから飛ばされてきたなら、
飛ばされましたって書かないとダメだよ

450 :デフォルトの名無しさん:2010/03/14(日) 23:39:50
>>448
死んでいいよ

451 :デフォルトの名無しさん:2010/03/14(日) 23:41:46
Dir.globのワイルドカードはあまり知らんが(Windowsユーザーなもので)
否定形なのはRubyでやったほうが無難だと思う

Dir.glob(i.sub(/\/?$/,'/**/*')).reject{|e| test(?d,e) or e =~ /\.txt$/i}


452 :デフォルトの名無しさん:2010/03/14(日) 23:43:52
i ってなんだろう?
そもそもグロブでいいのか。

453 :デフォルトの名無しさん: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


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





455 :デフォルトの名無しさん: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


456 :デフォルトの名無しさん:2010/03/14(日) 23:48:38
>>454
それはない

457 :デフォルトの名無しさん: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"]


458 :デフォルトの名無しさん:2010/03/14(日) 23:57:18
はいはい勘違いゴルファーは帰ってね

459 :デフォルトの名無しさん:2010/03/14(日) 23:58:40
[^(txt)]を検証しただけじゃね?

460 :デフォルトの名無しさん:2010/03/15(月) 00:00:42
マニュアル嫁でよくね?

461 :デフォルトの名無しさん:2010/03/15(月) 00:01:32
どっちでもいいよ…

462 :デフォルトの名無しさん:2010/03/15(月) 00:04:39
ここは初心者スレだろ?
テンプレ読めない奴はカエレ
暴れるなら本スレでやr

463 :デフォルトの名無しさん:2010/03/15(月) 00:05:49
検証が漏れてないかどうかはどうやって検証すればいいのかという

464 :デフォルトの名無しさん:2010/03/15(月) 00:11:10
>>458
どこをゴルフと誤認したのか気になる。


465 :デフォルトの名無しさん:2010/03/15(月) 01:18:47
rmdir -rで綺麗さっぱり消せばいいのにw

466 :デフォルトの名無しさん:2010/03/15(月) 01:54:20
RubyをWindowsで開発環境構築する方法教えてください。
OSはWindows7です

467 :デフォルトの名無しさん:2010/03/15(月) 01:55:11
開発環境ってたとえばなーに

468 :デフォルトの名無しさん: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 < 正規表現活用)ですし、プラットフォーム
毎に微妙な挙動差も考えるとムダにドツボにはまりそうですし、(少なく
とも「初心者」は)あまり積極的に使わない方がよくない?


469 :デフォルトの名無しさん:2010/03/15(月) 02:33:02
>>468
書いてるあなたがすでにglobの罠にはまっているという。
再帰的に走査したいんだよ。> **/

470 :デフォルトの名無しさん:2010/03/15(月) 02:42:35
Dir.glob('**/*') は許容されるべき
というか普通はこれしか使わない
残りは返ってきた配列に入った文字列を正規表現とかでどうにかする
短く1行で書かないと家にいる妻がスナイパーに撃たれるとかそういう時にのみグラブ条件を書く

471 :デフォルトの名無しさん:2010/03/15(月) 04:18:21
1行記述を強要する妻かw

472 :468:2010/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




473 :デフォルトの名無しさん:2010/03/15(月) 05:24:32
>>471
強要しているのはスナイバーかと。>>470 は愛妻家なんですね。

474 :デフォルトの名無しさん:2010/03/15(月) 08:55:46
いや恐妻家なんだろうw

475 :デフォルトの名無しさん:2010/03/15(月) 09:57:07
要求を呑まないと何も知らない家族が射殺されるというのはわりとポピュラーな展開かと

グラブ文字処理はメソッド独自だから、明白な全抜き出し以外は正規表現などを駆使、という方向性は妥当
グラブ処理の時点で小細工すると後々遺恨になるぞ

476 :デフォルトの名無しさん:2010/03/15(月) 10:41:36
なるほど

477 :デフォルトの名無しさん:2010/03/15(月) 12:43:17
>>466
まずはテンプレくらい嫁よ

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

これでなんとかなるだろ。Rails開発ならcoLinuxかPortableUbuntu入れろ。

478 :デフォルトの名無しさん:2010/03/15(月) 12:44:12
>>466
あ、あと、c:\Program Files\以下にはRubyをインスコしない方がいいみたい。
RubyGemsが動作しないとかの報告があった
(今のバージョンはどうかしらん)

479 :デフォルトの名無しさん:2010/03/15(月) 12:53:05
ねこび〜ん勢力の工作を検知しました

480 :デフォルトの名無しさん:2010/03/15(月) 13:02:44
Windowsでも、XPなら
c:\usr\local\ruby
とかにインストールした方が精神衛生上よろしい気がする
UACとか入るとそう簡単にはいかないんだろうけど

481 :デフォルトの名無しさん:2010/03/15(月) 13:17:04
>>479
ねこび〜んはダメだね
コードの補完が遅すぎて使えない

482 :デフォルトの名無しさん:2010/03/15(月) 13:35:16
ActiveScriptRubyはデフォルトのインストール場所が性善説に過ぎる
ttp://d.hatena.ne.jp/kitamomonga/20100202/ruby_watir_crash_with_autoitx3
まあこれは間違えるほうが悪いんだけれども

483 :デフォルトの名無しさん:2010/03/15(月) 14:06:24
array = [1,2,3,4,5]とすると配列ができますが、わかんなくなりませんか?
javaとかだったら、IDEが配列だよって教えてくれるけど

やっぱり、最初にこうするべきなんですかね?
array = Array.new


484 :デフォルトの名無しさん:2010/03/15(月) 14:20:31
>483
ならない

Array.new はリテラルに比べると遅い。

485 :デフォルトの名無しさん:2010/03/15(月) 14:21:39
>>477
>・るびまのchmをダウンロード
リファレンスchmならASRに同梱されてたはず
それと初心者スレでるりまとは呼ばない方がいいよ

486 :483:2010/03/15(月) 14:27:49
>>484
そうですか
ありがとうございます

487 :デフォルトの名無しさん:2010/03/15(月) 14:44:11
a = [1, 2, 3, 4, 5] はわけわかんなくならないが

hogedata = []



hogedata = {}

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

hogedata = Array.new

と書くことはある
要素が入ってれば配列なのか Hash なのかは一発なのでわざわざ初期化なんてしない

488 :デフォルトの名無しさん:2010/03/15(月) 15:14:22
>>485
> それと初心者スレでるりまとは呼ばない方がいいよ
なんで?


489 :デフォルトの名無しさん:2010/03/15(月) 16:05:56
というかるりまるびまってなんですか?

490 :デフォルトの名無しさん:2010/03/15(月) 16:18:20
ここは大喜利すべきか

491 :デフォルトの名無しさん:2010/03/15(月) 16:21:11
まあ、マニュアルという認識でいいよ
chm形式のマニュアル読んでれば十分

492 :デフォルトの名無しさん:2010/03/15(月) 16:24:11
>>488
マイナーな専門用語は避けるべき。初心者スレだし。

493 :デフォルトの名無しさん:2010/03/15(月) 16:25:13
>>488
まさにこの流れが理由
るびまと区別がついてないならなおさら

494 :デフォルトの名無しさん:2010/03/15(月) 16:50:12
何やら貢献できたようで何より
1.9.1は初心者向けじゃなかったのかー
今まさにダブルクリッコするところだったぜー
ここに来てよかった
ってことでActiveScriptRubyなるものをダウソしてきます

495 :デフォルトの名無しさん:2010/03/15(月) 16:51:41
ここIDないのね
494は489の人てことでw

496 :デフォルトの名無しさん:2010/03/15(月) 17:31:53
質問です
エクセルで書かれた名簿を整理して出力するプログラムを書いているのですが、
名前、郵便番号、住所の分離が上手くいきません
与えられた名簿は半角or全角スペースで区切られているのでsplitを使おうと試みているのですが、
例えば以下のように記述すると"―"や"県"が消えてしまいます

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

何か良い知恵があればなにとぞご教授お願いします
ちなみに元のプログラムではputsせず、分離後にある配列に入れています

497 :496:2010/03/15(月) 17:34:18
追記失礼します
rubyはver1,87を使用しております

498 :デフォルトの名無しさん:2010/03/15(月) 17:48:49
>>496
Excelってことなので、WindowsでSJISのソースコードとして、
スクリプトの先頭に

#! ruby -Ks

もっと推奨の方法があったかもしれない

499 :496:2010/03/15(月) 17:51:44
>>498
ご教授いただいたとおりにしたところ速やかに改善されました!
ありがとうございます

500 :デフォルトの名無しさん: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だとそのような問題は起きない(のかな?)


501 :デフォルトの名無しさん:2010/03/15(月) 18:05:26
るびまってRubyのマニュアルのことだったの?
Ruby Magazineの事だと思ってた

502 :デフォルトの名無しさん:2010/03/15(月) 18:15:09
>>491
どもです
礼するの忘れてやした

503 :デフォルトの名無しさん:2010/03/15(月) 18:16:09
るびま:Rubyist Magazine
るりま:Ruby reference manual

Ruby Magazineだと思いこんでると、無関係な記事が多すぎるように映るかもね

504 :デフォルトの名無しさん:2010/03/15(月) 18:16:29
>>501
どっちでもいいよ
いやよくはないが
初心者的にはるびまは読むべきではない
古くて有害な情報が渾然一体となっている

505 :デフォルトの名無しさん:2010/03/15(月) 18:19:31
>>503
それ、テンプレに入れたらどうかね?

506 :デフォルトの名無しさん:2010/03/15(月) 18:24:13
Rubyinstか。失礼。
上のほうよく見たらるびまとるりまの区別が付いてない(人がいる)って話だったのね
読み違えてたわ

507 :デフォルトの名無しさん:2010/03/15(月) 18:27:44
まだ間違ってるぞw

508 :496:2010/03/15(月) 18:29:54
>>500
亀ですが、ありがとうございます
これを気に文字コードにも意識を向けてみます

509 :デフォルトの名無しさん:2010/03/15(月) 19:16:01
くっ
Rubyist

510 :デフォルトの名無しさん:2010/03/15(月) 19:51:11
includeは名前空間を使えるようにするものってことで、おk?
C++@namespaceみたいな感じ

511 :デフォルトの名無しさん:2010/03/15(月) 19:53:43
なんというか include はふつうに include だと思うのだが
既存言語の機能になぞらえないと理解し難いほど複雑難解な概念なのだろうか

512 :デフォルトの名無しさん:2010/03/15(月) 20:00:50
includeの動作的には本当に>>444だよね
メソッドを探す順番の指定をする方法のひとつ

513 :デフォルトの名無しさん:2010/03/15(月) 20:07:50
モジュールの存在理由のほうがムズカシイかもしれない

514 :510:2010/03/15(月) 20:34:24
読んでいた記事が間違えていたらしい

本当の使い方は、結局なんなんだろ?
Mixinを実現するためにしか使わないのか

515 :デフォルトの名無しさん:2010/03/15(月) 20:39:59
モジュールは、メソッドを用途ごとにまとめるためのしくみ
メソッドがあるだけで、オブジェクトには依存しない機能のカタマリ

共通の機能をメソッドから追い出して別途メソッドを作るのと同じように、
共通の機能をクラスから追い出して別途モジュールを作る(でincludeする)というのも妥当

516 :デフォルトの名無しさん:2010/03/15(月) 20:45:11
Mixinのためと単なる名前空間のため両方に使われる

517 :510:2010/03/15(月) 20:54:21
>>515-516
thx

518 :デフォルトの名無しさん:2010/03/15(月) 22:17:04
プロパティも実装されていない糞言語

519 :デフォルトの名無しさん:2010/03/15(月) 22:27:30
それで遊んでくれるのはPythonスレぐらいだぞ
ここは意外とDRY

520 :デフォルトの名無しさん:2010/03/15(月) 22:52:35
クラスインスタンス変数とは、そのクラスオブジェクトの特異クラスに属する
インスタンス変数という理解で正しいですか?

521 :デフォルトの名無しさん: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って何が違うのさ?

522 :デフォルトの名無しさん: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


523 :デフォルトの名無しさん:2010/03/15(月) 23:22:49
特異メソッド上で書くからわかりにくい?

class Hoge
@hoge2="hoge2"
end

p Hoge.instance_variable_get(:@hoge2)

は "hoge2" を返すよ

524 :デフォルトの名無しさん: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'"

いちおう念のために言っておくと
クオート文字列にマッチする正規表現を求めているわけじゃなくて
文字集合内で後方参照や部分式呼出しができるか否かの確認ね

525 :デフォルトの名無しさん:2010/03/16(火) 00:23:29
>>457が何でそうなるのか解説求む

526 :デフォルトの名無しさん:2010/03/16(火) 00:27:01
>>525
>>454


527 :デフォルトの名無しさん:2010/03/16(火) 00:28:31
globってワイルドカードでも正規表現でもないのか
なんでこんな面倒なもん作ったんだ

528 :デフォルトの名無しさん:2010/03/16(火) 00:31:15
いや、zshの**を取り込んでるくらいで、
ワイルドカード(UNIXシェルの、だが)だよ。


529 :デフォルトの名無しさん:2010/03/16(火) 00:31:34
ああ勘違いしてたわ txtだけはじかれてるのかと思った

530 :デフォルトの名無しさん:2010/03/16(火) 00:32:09
ほぼワイルドカードじゃね?

531 :デフォルトの名無しさん:2010/03/16(火) 00:32:50
あら遅レス失礼した

532 :デフォルトの名無しさん:2010/03/16(火) 00:33:41
globにlsコンパチの引数受け付けるようにしてくれ

533 :デフォルトの名無しさん:2010/03/16(火) 00:34:20
>>532
UNIXで誰がファイル名展開をやってるか知ってるかい?


534 :デフォルトの名無しさん:2010/03/16(火) 00:44:33
えっ? 誰かがやってるなんてことあるわけないでしょう?

535 :デフォルトの名無しさん:2010/03/16(火) 03:16:47
echo *

536 :デフォルトの名無しさん:2010/03/16(火) 03:27:47
もうshellの機能をrubyに組み込むべきだなw
login shellを/bin/rubyshにできていいかもしれないw

537 :デフォルトの名無しさん:2010/03/16(火) 07:53:49
RubyShell って面白そうだな。
誰も使わないだろうけど。

538 :デフォルトの名無しさん:2010/03/16(火) 07:55:47
RashだかRushってシェルがなかったっけ

539 :デフォルトの名無しさん:2010/03/16(火) 08:46:18
イラネ

540 :デフォルトの名無しさん:2010/03/16(火) 09:30:18
とある人のウェブページに、perlをログインシェルとして使ってみた報告があるぞ。
一度読んでおくといい。

541 :デフォルトの名無しさん:2010/03/16(火) 09:33:51
いやRushが既にあるから

542 :デフォルトの名無しさん:2010/03/16(火) 11:51:29
コマンドライン引数は定数じゃないの?
普通に文字列を代入できるんだけど

543 :デフォルトの名無しさん:2010/03/16(火) 12:01:40
>>542
Rubyの定数は、警告 warning: already initialized constant ARGV
は出るけど代入自体はできる。

あ、あと、 ARGV << 'hoge' なんてのは「定数への代入」じゃないからな。


544 :デフォルトの名無しさん: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'


545 :デフォルトの名無しさん:2010/03/16(火) 12:18:43
代入はできるけど、データのコンテナとして ARGV を使うのはおすすめはしない
ただ、これは

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

というような変遷をどうしてもみんな辿るので今はまだ気にしなくてもいいとも言える

546 :542:2010/03/16(火) 12:25:44
とにかくコマンドライン引数には入れるなってことでしょ

547 :デフォルトの名無しさん:2010/03/16(火) 12:47:18
def hoge=
この=って何?

548 :デフォルトの名無しさん:2010/03/16(火) 13:00:04
>>547
そのまんま
「hoge=」 という5文字の名前のメソッド

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

foo.set_hoge(v) とするよりも foo.hoge = v と書けたほうがなんかわかりやすくね、という理由で特別扱いされてる

549 :デフォルトの名無しさん:2010/03/16(火) 13:07:59
「プログラミングRuby 第2版 言語編」ですが、今から読むには
古すぎますか?それとも第3版が出て、絶版になる前に読んでおく
べき?

たのしいRuby、Well-Grounded Rubyist、初めてのRuby
は読みました。


550 :デフォルトの名無しさん:2010/03/16(火) 13:08:28
>>548
理解した、ありがとう

551 :デフォルトの名無しさん:2010/03/16(火) 13:16:29
>>548
>「hoge=」 という5文字の名前のメソッド

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

一応引数無しでも定義できるけど__send__使わないと引数なしでは呼べない

552 :デフォルトの名無しさん:2010/03/16(火) 13:17:42
>>551
Rubyの演算子はメソッドですよ

553 :デフォルトの名無しさん:2010/03/16(火) 13:24:32
Rubyのユーザーは学生と暇人が多いのか?
C/C++のスレには全然書き込みが無いんだけど

Rubyは簡単だから、学生に人気があるのかな

554 :デフォルトの名無しさん:2010/03/16(火) 13:29:41
最近質問が多いね、春休みなんじゃないの?
まあ俺も春休みだけど。。

555 :デフォルトの名無しさん:2010/03/16(火) 13:30:46
去年からずっとやすm

556 :デフォルトの名無しさん:2010/03/16(火) 13:31:17
仕事探せ

557 :デフォルトの名無しさん:2010/03/16(火) 13:32:16
>>555
勝った!

558 :デフォルトの名無しさん:2010/03/16(火) 13:33:11
>>557
お前は必死に仕事探せ

559 :デフォルトの名無しさん:2010/03/16(火) 13:35:25
学生と暇人とニートがいないとプログラミング言語は成長致しませぬゆえ

560 :デフォルトの名無しさん:2010/03/16(火) 13:37:43
学生と暇人なんて放っておいても沸いてくるんだから
無職連中はとりあえず生活基盤作れ

561 :デフォルトの名無しさん:2010/03/16(火) 13:39:35
暇な香具師を無料で奉仕させてこそオープンソースだしな。

562 :デフォルトの名無しさん:2010/03/16(火) 14:18:15
>>549
初めてのRuby(yugui本)を読んで自分のものと出来たのなら
好きに進んでいいよ。


563 :デフォルトの名無しさん:2010/03/16(火) 14:43:10
Rubyはいつになったら仕様が固定されるの?
安心して使えない

564 :デフォルトの名無しさん:2010/03/16(火) 14:48:04
1.8 は少なくともあと5年は使えるな。

565 :デフォルトの名無しさん:2010/03/16(火) 15:06:10
>>562
レスどうも。
ツール作りでもしてみます。

566 :デフォルトの名無しさん:2010/03/16(火) 15:08:40
本の内容が新しいかどうかという話なら、新しくはない

1.8.7の1.9新機能入りプログラミングができないというのはなんとも歯痒い
が、それはWebの情報でアップデートできる程度なので問題はなさそうかも
むしろ最初からこれ教えたら混乱しそう

567 :デフォルトの名無しさん:2010/03/16(火) 16:19:22
>>563
固定化されることはないと思う

568 :デフォルトの名無しさん:2010/03/16(火) 16:22:33
>>563はそもそも使わないからどうでもいい

569 :デフォルトの名無しさん:2010/03/16(火) 18:52:28
ちなみに今から使い始めるならどのバージョンがお勧めなんだ

570 :デフォルトの名無しさん:2010/03/16(火) 18:58:53
>>569はテンプレも読まないからどうでもいい

571 :デフォルトの名無しさん:2010/03/16(火) 18:58:54
始めるだけなら 1.8.7 の最新だと思うが、
最新(p249)はString#inspectで最後の多バイト文字が文字化けするという
デバッグや実験中に微妙にイラッとするバグがある。
気になるなら p174 で。
1.9系は夏に1.9.2が出るのでそのときまた判断だな。


572 :デフォルトの名無しさん:2010/03/16(火) 19:16:27
やっと1.9sp2が出るのか。

573 :デフォルトの名無しさん:2010/03/16(火) 19:18:21
それはまだ
1.9正式が出ただけ
sp1が今度出る

574 :デフォルトの名無しさん:2010/03/16(火) 19:22:45
>>571
$KCODE を設定した上で p で日本語を表示しようとした場合に最後の文字がバイト列のままになる


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

どういう日本語を普段扱ってるかで違うんだろうな、このへん

575 :デフォルトの名無しさん:2010/03/16(火) 19:25:49
p の意義からしてエンコーディングを考慮するほうが正当
ShiftJIS 文字列とか表示されて端末乱れるのはイラッとくるが

576 :デフォルトの名無しさん:2010/03/16(火) 19:34:14
オブジェクトを機能拡張するためにモジュールで拡張したんだけど
さらに状態の保持が必要な機能追加がしたくなった
モジュールへの修正じゃ対応できないの?

577 :デフォルトの名無しさん:2010/03/16(火) 19:35:16
require 'Hoge'
include Hoge
なんで、requireにはシングルクォートを付けないと怒られるのに
includeには付けなくても怒られないの?

たまたま、そうなっただけなのかな〜

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

include の引数はモジュール名、つまり定数

579 :デフォルトの名無しさん:2010/03/16(火) 19:44:08
>>576
すれば

include はするたびにその順番に機能する

580 :デフォルトの名無しさん:2010/03/16(火) 19:44:15
require 'Hoge' は主ファイル名だからじゃね?

581 :デフォルトの名無しさん:2010/03/16(火) 19:46:41
>>578-580
ありがとう

582 :576:2010/03/16(火) 19:47:24
>>579 (and all)
どうすれば状態を保持できますか?

583 :デフォルトの名無しさん:2010/03/16(火) 19:51:32
状態って何

584 :デフォルトの名無しさん:2010/03/16(火) 19:52:35
>>577
requireも単なる関数的メソッドとして実装されているのも理由の一つ
Hogeというキーワードはrequireの実行を終える前には当然定義されていないし
予約語でもないから、リテラルを使うしか渡す方法(requireメソッドを実行する方法)がない

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

Symbolでもよさそうだけどそのへんは>>578なんだろう

585 :576:2010/03/16(火) 20:01:14
もともとのオブジェクト以外に追加の情報を保持したいんですが
たとえば配列クラスに最大値を保持するなど

586 :デフォルトの名無しさん: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

なんか頭の悪そうなコードですまん

587 :デフォルトの名無しさん: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]

588 :576:2010/03/16(火) 21:18:59
では言い直します。
自分で書いたクラスのオブジェクトに追加の情報を持たせるには、
継承したり別のクラスに包含すれば可能だけど、すでにModuleで拡張しているので
そこはできるだけ触らずにModuleに少し書き足す程度で実現できないか?
Module内でインスタンス変数的な情報を保持する何かを定義できないか?

589 :デフォルトの名無しさん: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

590 :デフォルトの名無しさん: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

591 :デフォルトの名無しさん:2010/03/16(火) 21:55:33
591レス目
ズレている人はレスデータの再読み込みをしてください

592 :576:2010/03/16(火) 22:01:45
それだとobj.barを書かなければいけません。
質問は、Module内を書き換えるだけで、外側には一切手を加えずに@fooを初期化できるかということです。

593 :デフォルトの名無しさん:2010/03/16(火) 22:02:14
なにその出来の悪いGUIのリストみたいな現象

594 :デフォルトの名無しさん:2010/03/16(火) 22:04:28
module内でinitialize書き直したら?

595 :デフォルトの名無しさん:2010/03/16(火) 22:08:09
>>594
それはできない

596 :デフォルトの名無しさん:2010/03/16(火) 22:16:53
ほんとにできない?

597 :576:2010/03/16(火) 22:18:32
>>590
インスタンスが作成された時点でincludeされたmoduleを通して
何かしらinitialize的メッセージが送られるようなことは無いよねって話です
あるいはC言語で言うところのスタティック変数は無いよねってことでも結構です


>>594もう試した

598 :デフォルトの名無しさん: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

599 :デフォルトの名無しさん:2010/03/16(火) 22:21:22
>>595
めんどくさい、が正解だと思う
include先が継承とかしてたらsuper呼ばんといかん

600 :576:2010/03/16(火) 22:51:09
>>598
すばらしい!!
ありがとうございました。

601 :デフォルトの名無しさん:2010/03/17(水) 00:02:54
読み込むモジュールを変えるとinitializeが
スイッチされるってのは面白いかも

なんか騙されてるような気もするなあ

602 :デフォルトの名無しさん:2010/03/17(水) 00:16:58
まあ、あまり性質のよいものではない

603 :デフォルトの名無しさん:2010/03/17(水) 00:26:10
複雑なマッチ条件を使いたい場合、
if /hoge/ =~ obj.str and /huga/ !~ obj.str and ...
と延々と続いて見づらいのですが、スマートに書けますか?


604 :デフォルトの名無しさん:2010/03/17(水) 00:27:24
>>603
メソッドにしてしまうのがひとつの手ではある
基本的には全部書くしかない

605 :デフォルトの名無しさん: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行超えるなら独立のメソッドにする

606 :デフォルトの名無しさん:2010/03/17(水) 01:02:19
なるほど。ありがとうございます。

607 :デフォルトの名無しさん:2010/03/17(水) 03:52:24
&&= 使った方が無駄なマッチングがないんじゃないかな。
正規表現のマッチくらいでそんなに重くなったりしないけど〜。

608 :デフォルトの名無しさん:2010/03/17(水) 08:17:07
>>481
aptanaよりは軽いぞw

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

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

テキストエディタレベルの単語補完ならばNetBeansでも高速できる(デフォだとたしかCtrl+K)。

609 :デフォルトの名無しさん:2010/03/17(水) 08:43:03
現在の単語に続く語を見つけるだけならEmacsでも超高速でできるぞ

610 :デフォルトの名無しさん:2010/03/17(水) 09:03:06
>>482
> ttp://d.hatena.ne.jp/kitamomonga/20100202/ruby_watir_crash_with_autoitx3
複数引数のsystemを使うべきところだな。
クォートだとなんだの気にする必要がなくなる。


611 :デフォルトの名無しさん:2010/03/17(水) 09:33:26
>>609
もちろん、vimでもxyzzyでも単語の補完はできるけど、>>481はそういうこといってるんじゃないんだろうし
インテリセンスみたいなやつだろ

612 :デフォルトの名無しさん:2010/03/17(水) 09:52:28
>>575
> ShiftJIS 文字列とか表示されて端末乱れるのはイラッとくるが
これは 1.9.2 の改善点の一つ

613 :デフォルトの名無しさん:2010/03/17(水) 11:07:47
実行しているスクリプトが置かれているディレクトリを調べる方法を教えてください

614 :デフォルトの名無しさん:2010/03/17(水) 11:10:40
__FILE__

615 :デフォルトの名無しさん:2010/03/17(水) 11:12:36
File.dirname($0)

616 :デフォルトの名無しさん:2010/03/17(水) 11:19:01
Dir.pwd

617 :613:2010/03/17(水) 11:25:40
絶対パスで欲しいんですが

618 :デフォルトの名無しさん:2010/03/17(水) 11:27:05
expand_path … は内部で呼ばれてるからいらないんだっけか

619 :デフォルトの名無しさん: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"


620 :デフォルトの名無しさん:2010/03/17(水) 11:38:49
>>481
>>608

NetBeansの文脈依存補完ってどのレベルまで補完してくれるの?
変数の参照先オブジェクト(のクラス)を推測したり
メソッドチェーンの返り値を推測して
続きのメソッド名を補完できたりする?

621 :デフォルトの名無しさん:2010/03/17(水) 11:40:27
>>618
だいぶ前にあったのは expand_path の基点となる第2引数が自動で dirname されてるという話だと思った
dirname の中で expand_path が使われるということはないように見える

622 :613:2010/03/17(水) 11:51:55
>>619
ありがとうございます

623 :デフォルトの名無しさん:2010/03/17(水) 11:53:48
$0 と __FILE__ ってどうちがうんですか?

624 :デフォルトの名無しさん:2010/03/17(水) 11:59:29
$0 は実行中のスクリプトのファイル名
__FILE__ はそれが書かれているファイル自身のファイル名

スクリプトファイルを実行した場合は両者が一致する。
requireなどで他のファイルから読み込まれた場合は一致しない。


625 :デフォルトの名無しさん: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 ')'
と表示されます。
でも「表示する」の部分を「日本語で表示」に変えるとちゃんと文字化けします。
原因がプログラムで解決できるものなのかエディタを変えないといけないと解決できないのかも分からないので、
どうしたらよいかを教えてくれないでしょうか?

626 :デフォルトの名無しさん:2010/03/17(水) 12:29:10
俺はこのサイト(正確には「このチュートリアルサイト群」)はあまり好きではない
初期のSEOがあまりに迷惑で悪い印象が残ってしまっている

はともかく

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

ぶっちゃけ、日本語文字列を直接書いてしまったファイルが、-Ks などのエンコーディング指定なしで
日本語文字列を含んだRubyスクリプトとしてきちんと解釈される保証はない
「うわーまともに動いてねーよ」と納得したら次のステップに行ってよし

627 :デフォルトの名無しさん:2010/03/17(水) 12:36:07
回答ありがとうございます。納得してから気にせず先に進みたいと思います。

どうしても出費を抑えたいのでそういったサイトに頼っているのですが…
自業自得か。orz

628 :デフォルトの名無しさん:2010/03/17(水) 12:37:44
文字列変えるだけでパースエラーになったりならなかったりってのは
エンコーディングの不一致とは関係ないんじゃない?

表 (SJISのダメ文字のひとつ) の位置が問題なのかな。


629 :デフォルトの名無しさん:2010/03/17(水) 12:41:59
RubyってWindows用だといろいろあるじゃないですか
Linux用の場合は1つしかないのでしょうか?
このへんであまり考えたくない為、もしLinuxで1つしかなのでしたらLinuxで始めたいと思います。

630 :デフォルトの名無しさん:2010/03/17(水) 12:42:37
それエンコードの不一致でおきる問題ですがな

631 :デフォルトの名無しさん:2010/03/17(水) 12:43:33
>>629
1.6.x
1.8.x
1.9.x
いろいろある
Rails のバージョンによってもさらにバリエーションがw


632 :デフォルトの名無しさん:2010/03/17(水) 12:43:42
>>629
まあ動作的にはひとつとみなしてよいかと
少なくともWindowsのような面倒なことはない

633 :デフォルトの名無しさん:2010/03/17(水) 12:44:44
Windows 版のどこがどう問題なのですか

634 :デフォルトの名無しさん:2010/03/17(水) 12:46:21
スレでWindowsという文字を見ると不機嫌になってしまうおじちゃんからいじめを受けます

635 :デフォルトの名無しさん:2010/03/17(水) 12:48:55
Windowsで使いたければPython使った方が良いんじゃない?
RubyはWindowsのメンテナが不足気味。LinuxかMacで使うべき。

Rails だって Windows はサポートしてなくて、今までたまたま
動いてたけどいつの間にか動かなくなったとか聴いた。

636 :デフォルトの名無しさん:2010/03/17(水) 12:50:04
ほらな

637 :デフォルトの名無しさん:2010/03/17(水) 12:51:34
漏れもそう思う
RubyはWindowsと相性が悪い
Pythonの方がWindowsとの親和性は高い
*nixの場合はどっちでも相性が良い
つまりPython>Rubyであって
Rubyを選ぶ理由がないんだよなぁ

638 :デフォルトの名無しさん:2010/03/17(水) 12:57:48
つまりC#最強ということですね

639 :デフォルトの名無しさん:2010/03/17(水) 12:57:50
Pythonってインデントで書くから気持ち悪い

640 :デフォルトの名無しさん:2010/03/17(水) 12:59:06
VBみたいな記述のRubyのが気持ち悪い

641 :デフォルトの名無しさん:2010/03/17(水) 13:02:12
end ってw

642 :デフォルトの名無しさん:2010/03/17(水) 13:04:56
Rubyはプログラミングと関係ない部分で手間がかかる

643 :デフォルトの名無しさん:2010/03/17(水) 13:08:02
>>637
そんなポータビリティが常に必要か?
たとえばMacOSXで動作しないバイナリを吐く言語で書く意味は何?

644 :デフォルトの名無しさん:2010/03/17(水) 13:11:22
うん、あなたはRubyをWrite once, run anywhereの再来だと吹き込まれたのかもしれないが、それは違う
それを暴いたのは俺たちかもしれないが、殴るなら暴いた人間ではなくあなたを騙した人間を殴れ

645 :デフォルトの名無しさん:2010/03/17(水) 13:12:45
IronRubyが出る頃には、まともになってる?

646 :デフォルトの名無しさん:2010/03/17(水) 13:17:27
>>644
似たようなものに「Rubyは初心者にも簡単」があるな

パソコン初心者やプログラミング言語初心者の人にとって独習可能なほど易しいとはそれほど思えない

647 :デフォルトの名無しさん:2010/03/17(水) 13:34:44
初期(または現在も)の謳い文句に「Cで拡張ライブラリを書くのも簡単」があった
これも

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

という意味だったからな

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

それはマニュアル見れば一目瞭然
「Cのあれ」「コマンドのあれ」「Perlのやつ」という表現ばかりだ
最近は文章上は若干表現が砕かれたが、知識として知っていることが前提なのは何も変わらないのでむしろ

648 :デフォルトの名無しさん:2010/03/17(水) 13:37:57
隔離スレに帰れ

649 :デフォルトの名無しさん:2010/03/17(水) 13:39:04
質問スレだしなあ

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

こんな感じ?

650 :デフォルトの名無しさん:2010/03/17(水) 13:42:47

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

こうだ

651 :デフォルトの名無しさん:2010/03/17(水) 13:44:48
Windows上で便利に使いこなしてるおれは勝ち組

652 :デフォルトの名無しさん:2010/03/17(水) 13:53:45
Ruby厨っていつも言い訳してるよねw

便利ってなんだよw
まともなIDEもないのに便利も糞もあるか
ライブラリはバグだらけで使えない
バージョン変わると言語仕様も変わってソース書き直しw

653 :デフォルトの名無しさん:2010/03/17(水) 13:55:38
>>620
(NetBeans勧めておいてなんだが)文脈依存補完は重くてあまりつかってないんだが、
あまり優秀でない感じがした。irbの補完とどっこいどっこい

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

どんな技術で補完してるかは詳しくないので公式サイトなりでも調べてもらった方がよい気がする

654 :デフォルトの名無しさん:2010/03/17(水) 13:56:32
なんか春を感じるな

655 :デフォルトの名無しさん:2010/03/17(水) 13:57:21
>>646
(Windowsユーザー以外の、パソコン初心者以外には)「Rubyは初心者にも簡単」

656 :デフォルトの名無しさん:2010/03/17(水) 14:08:29
>>655
それは初心者とは言わない

コンソールでちまちまやっているのが日常のやつなんて一部
それなのに「初心者がはじめるにはどの言語か」という発言だけで
Rubyすすめるバカがいるからな

657 :デフォルトの名無しさん:2010/03/17(水) 14:12:21
>>656
あれは意図的な悪意だろ
俺らが止めることはもはやできない

658 :デフォルトの名無しさん:2010/03/17(水) 14:29:59
>>625です。エディタので文字コード指定再読み込みをUTF−8
でしたらちゃんとエラー表示がなくなり日本語が表示されましたので一応ご報告を。

659 :デフォルトの名無しさん:2010/03/17(水) 14:47:00
なんでもできるなら迷わずC#だな
これでできないことはないし
非常に便利

Rubyのどこが便利なんだよwwアホかw

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

Rubyについて Part 39
http://pc12.2ch.net/test/read.cgi/tech/1265467681/

661 :デフォルトの名無しさん:2010/03/17(水) 15:06:32
これから学ぶならPHPではなくパイソンかルビーがオヌヌメ
って記事読んでこのスレに来たけど騙されたか・

662 :デフォルトの名無しさん:2010/03/17(水) 15:12:20
>>661
C#がいいよ
未だに進化し続けている言語はこれぐらい

663 :デフォルトの名無しさん:2010/03/17(水) 15:19:37
>>662
Pythonは進化は一休み宣言してる
Rubyは進化のためなら互換性を切り捨てることを厭わない

664 :デフォルトの名無しさん:2010/03/17(水) 15:20:58
>>661
これから(   のために)学ぶなら(   な)PHPではなく
(   な)パイソンか(   な)ルビーが(   の点で)(   な人に)オヌヌメ

これが全部埋まってないようなものは与太
信じるほうが悪い

665 :デフォルトの名無しさん:2010/03/17(水) 15:22:23
女に嫌われるタイプだなw

666 :デフォルトの名無しさん:2010/03/17(水) 15:22:52
PHPっていらない子なの?

667 :デフォルトの名無しさん:2010/03/17(水) 15:23:37
>>666
>>664

668 :デフォルトの名無しさん:2010/03/17(水) 15:37:34
むしろRubyは初心者向け言語ではない難しい言語だっていう
イメージをもっと広めてもらいたい

Rubyが超得意ですキリッっていっても
初心者向け言語ねプッ初心者いらね
とあしらわれるのが現状の就職戦線だからな

669 :デフォルトの名無しさん:2010/03/17(水) 15:39:20
rubyをやる気なくしてきた…(´;ω;`)

670 :デフォルトの名無しさん:2010/03/17(水) 15:41:50
今のところプログラムの話題なし

Ruby擁護レス、批判レス、バグ報告レスだけ

671 :デフォルトの名無しさん:2010/03/17(水) 15:44:53
Rubyで就職狙うなんてありえんわww

これがWindowsもないころなら
簡単と言ってもよかったがな
今更文字処理得意ですなんて言われてもな
真っ黒い画面で文字打つだけって最近のガキじゃ無理だな

672 :デフォルトの名無しさん:2010/03/17(水) 15:49:34
Rubyをやりたくてやるんじゃない、やってしまうのがRubyist

673 :デフォルトの名無しさん:2010/03/17(水) 15:51:22
>>671
加齢臭がします><

>真っ黒い画面で文字打つだけって最近のガキじゃ無理だな
小学生でも出来るよそんな事^^

674 :デフォルトの名無しさん:2010/03/17(水) 15:53:18
Rubyistはスキルも性格もいいので開発メンバーからは良くたよりにされる
だがたよりにされたいからRubyをやってもダメだと言う事が最近わかった
Rubyをやるのは真にRubyistの人だからRubyをやりたくてやるんじゃないやってしまう者がRubyist
PHPerはざんねんがはっきりいってスキルはつかわないし性格も裏メールとかイマイチだから信頼されにくい

675 :デフォルトの名無しさん:2010/03/17(水) 15:53:46
つまんねっていってるんだよ

C#ならいきなりGUIが作れます

676 :デフォルトの名無しさん:2010/03/17(水) 15:54:55
>>674
妄想乙

Ruby信者は各スレを荒らしている
キチガイばかりが集まった低脳集団
だから就職でも嫌われるんだよ

677 :デフォルトの名無しさん:2010/03/17(水) 15:55:50
ブロントさんネタがどこでも通じると思ったら大間違い。


678 :デフォルトの名無しさん:2010/03/17(水) 15:56:02
>>661 >>669
結局、用途によるよ

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

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

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

「Rubyはプログラミングを楽しみたい人のための言語」というように言われるが、それはあるとおもうよ。
(ただし、環境整えるの面倒とか、Windowsでこのライブラリ動かねーとか普通にあるのはおいておいてだな)

679 :デフォルトの名無しさん:2010/03/17(水) 15:56:21
Ruby信者=C++も使えないバカ

ここはC言語わからなくて逃げ出しちゃった子の巣窟

680 :デフォルトの名無しさん:2010/03/17(水) 15:57:22
一人変なのがすみついたな・・・

681 :デフォルトの名無しさん:2010/03/17(水) 15:58:11
初心者スレでここは云々言われても

682 :デフォルトの名無しさん:2010/03/17(水) 15:58:51
ぶっちゃけ、ここが本スレじゃないの?

683 :デフォルトの名無しさん:2010/03/17(水) 15:59:44


684 :デフォルトの名無しさん:2010/03/17(水) 16:01:16
>>678
それぐらいならC#で余裕で出来るな

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

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

初心者=Windowsユーザーではない
大部分の初心者がWindowsユーザーということだ

685 :デフォルトの名無しさん:2010/03/17(水) 16:03:11
まともにレスするのが馬鹿らしくなってきた。。。

686 :デフォルトの名無しさん:2010/03/17(水) 16:04:39
>>684
C#スレから来ました

スレとは関係ないんですが、もしかしてニートですか?
僕も30歳ニートです。

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

> Rubyはプログラミングを楽しみたい人のための言語
個人的にはこれが気になる。
趣味だから楽しんでなんぼだし

688 :デフォルトの名無しさん:2010/03/17(水) 16:11:19
楽しくないよバグだらけで
GUIすらまともに作れない
IDEもないじゃねぇ

689 :デフォルトの名無しさん:2010/03/17(水) 16:14:08
オーケー
IDEをNGワードにした
WIDEとかAIANMEIDEN(ローマ字綴り)とかの話題をしないようにお願い

690 :デフォルトの名無しさん: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じゃなくても問題ないだろう。

691 :デフォルトの名無しさん:2010/03/17(水) 16:20:14
I.D.Eもない糞言語なんて今時やってられるかよ
真っ黒い画面で文字打つだけで何が便利だよww
どこが楽しいんだよwww笑わせるなww

692 :デフォルトの名無しさん:2010/03/17(水) 16:24:52
ID欲しいな。
IDEは別にいいや。


693 :デフォルトの名無しさん:2010/03/17(水) 16:30:07
この荒らし他のスレでもいるっぽい?数日続くようなら後でまとめて運用に報告してくるんで、スルーしといて下さい。
下手にレスしてまきぞえ規制くらってもしらん

694 :デフォルトの名無しさん:2010/03/17(水) 16:43:06
批判されると荒しとかどんだけゆとりなんだよ

695 :デフォルトの名無しさん:2010/03/17(水) 16:45:18
>>694
荒らしかどうかは内容によらない

696 :デフォルトの名無しさん:2010/03/17(水) 16:51:26
>>693
C#スレにコピペ荒ししたのお前だな
報告しておいたから

697 :デフォルトの名無しさん:2010/03/17(水) 17:16:52
コア開発者というのはだいたい10人くらいなのだが、その半分くらいはWindows使ってるはず。
Windows向けのコードも数人書いてるし、定期的にビルドもされている。

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

Windowsで動かないライブラリがあるのはその逆も真なはずだからいいよね。

698 :デフォルトの名無しさん:2010/03/17(水) 17:39:30
>>697
1.8.7-p160のような話も混じってるのかもね

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

もしかしたらASRでも一発でいける方法・設定があるのかもしれないけど俺は知らない

699 :デフォルトの名無しさん:2010/03/17(水) 17:40:51
てかRubyがJava|C++|C#|Pythonじゃないって、だからなんなのって感じ

700 :デフォルトの名無しさん:2010/03/17(水) 17:41:38
>>699
PerlやPHPもIDEがないから流行ってないんだよきっと

701 :デフォルトの名無しさん:2010/03/17(水) 18:04:31
ぶっちゃけインタプリタで最強なのはPHPしかないよ
Rubyはメモリ関係が弱いって言うじゃんしかもWinは動作保証してないんでしょ
Pythonはあの独特なコーディングと日本語訳がないから英語読めない人お断りじゃん


702 :デフォルトの名無しさん:2010/03/17(水) 18:04:32
IDEらっきょ

703 :デフォルトの名無しさん:2010/03/17(水) 18:05:58
いや別に最強とか決めるためにプログラム言語使ってるわけじゃないんで

704 :デフォルトの名無しさん:2010/03/17(水) 18:09:19
ASRをインスコしてデスクトップのショートカットをダブルクリックしたら
コマンドプロンプトが起動した…

WINのrubyってコマンドでプログラム書くの?
自分は何か致命的なミスをおかしてますか?

705 :デフォルトの名無しさん:2010/03/17(水) 18:11:18
>>704
実行環境であって開発環境ではない

706 :デフォルトの名無しさん:2010/03/17(水) 18:12:23
>>705
なる
もーちょっとあちこち見て回ります

707 :デフォルトの名無しさん:2010/03/17(水) 18:13:10
>>704
文法に沿って書いたテキストファイルをruby.exeに読み込ませると
ruby.exeが必要なRuby用ファイルを読み込んで
テキストファイル内で指定された動作を対象ファイルとかに対して行う

動作を指定したいことがないような人には無用の長物

708 :デフォルトの名無しさん:2010/03/17(水) 18:15:54
>>704
あれはRubyを実行するのに都合のいい設定済みのコマンドプロンプト

709 :デフォルトの名無しさん:2010/03/17(水) 18:18:22
>>704
コンパイルするときいちいちコマンドプロンプトで
ファイル名書いてやらないとだめだよ
またライブラリ使うとオプションも書かないとだめだし
何度もテストするのにいちいちファイル名を文字入力しなければならない

710 :デフォルトの名無しさん:2010/03/17(水) 18:22:25
スレ住民一同苦笑しております

711 :デフォルトの名無しさん:2010/03/17(水) 18:23:23
しまったコンパイラじゃなかったわ

712 :デフォルトの名無しさん:2010/03/17(水) 18:27:58
>>707-709
ども
開発環境はRDE?
なんか上の方でRDEは嫌われてるっぽいんですが
というか仮想OSでUBUNTU辺りでやった方が良いの?
もーなにがなんだかw

>>710
ここで自分の質問が問題あるならこれをもってROMに戻ります
問題あるならここにでも行って帰ってくんなと言う誘導でも下さいね

713 :デフォルトの名無しさん:2010/03/17(水) 18:28:46
>>712
>>709は無視
無視してないの君だけだ

714 :デフォルトの名無しさん:2010/03/17(水) 18:33:34
>>712
RDEはRuby無関係のRDE固有のトラブルを自力で切り分けて解決できる人向け
「普通のRubyではできるのにRDEでは違うということはRDEが悪い」という判断ができないと無理

基本はテキストエディタさえあれば作成は可能で、それだけで作ってる人もわりといるが、
そういうことに慣れていないならそれだけで嫌になる可能性はたいへん高い

715 :デフォルトの名無しさん:2010/03/17(水) 18:36:46
>>712
多分インストールする時点で挫折するでしょう
ここではインストール方法は教えないので自力でやってください

716 :デフォルトの名無しさん:2010/03/17(水) 18:39:52
>>712
>>710>>709 あて

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

コマンドプロンプトの使い方がわからなかったら
カレントディレクトリっていう概念とCD、DIRコマンドの使い方だけ抑えてくれ
テキストエディタは保存と編集だけできれば十分

717 : ◆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!

と黒い画面の次の行に表示される
そんな程度

718 :デフォルトの名無しさん:2010/03/17(水) 18:50:57
>>713-716
了解
しばらくエディタでやってみます

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

>>717
めんどくさいことわざわざどうも

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

↑この作業を毎回しなければならないのは苦痛でしかない
C#ならF5押すだけで済む

720 :デフォルトの名無しさん:2010/03/17(水) 19:09:45
a.rbをダブルクリックでおk

721 :デフォルトの名無しさん:2010/03/17(水) 19:10:33
インタプリタの意味が無いな

722 : ◆Y4m3jU.1h. :2010/03/17(水) 19:12:12
>>719
コマンドプロンプトの履歴は上キー
一覧から選びたいならF7
コマンドライン入力中に履歴補完したいなら入力途中でF8
ファイル名補完は設定によってはタブでも動作する

723 :デフォルトの名無しさん:2010/03/17(水) 19:15:35
rubyで出来たpukiwikiのパーザってありますか??
pukipaはtableが使えないのでダメでした

724 : ◆Y4m3jU.1h. :2010/03/17(水) 19:16:09
あと

>>719
> C#ならF5押すだけで済む
それはC#の機能ではない
そもそもC#に編集機能などない
それはVisualStudioの機能だ

725 :デフォルトの名無しさん:2010/03/17(水) 19:25:26
>>709
csc /t:winexe hoge.cs /r:PresentationFramework.dll /r:PresentationCore.dll /r:WindowsBase.dll

こうですね、わかりません

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

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

あと妙な書き込みにレスつけてると相手の思う壺。

727 : ◆Y4m3jU.1h. :2010/03/17(水) 19:55:35
>>726
こうやって可視化すると文句言えるんだな

728 :デフォルトの名無しさん:2010/03/17(水) 19:59:36
この板はIDあったほうがいいなと思うことはある

729 :デフォルトの名無しさん:2010/03/17(水) 20:21:10
C#荒し厨(C#厨ではない)にはレスつけずスルー推奨
C#スレ見たけどあっちでも嫌われてるじゃねーか(そりゃそうか

730 :デフォルトの名無しさん:2010/03/17(水) 21:01:16
>>724
そんなのわかっているし、そういう発言自体がナンセンスなの
言語だけでプログラミングできるとでも思ってるわけ?
開発ツールがなければできないだろ
電波飛ばして直接ハードディスクにデータ書き込む気?

731 :デフォルトの名無しさん:2010/03/17(水) 21:02:54
>>727
名無しではみんな強気だからな

732 :デフォルトの名無しさん:2010/03/17(水) 21:25:50
匿名になると無責任になるってばっちゃが言ってた

733 :デフォルトの名無しさん:2010/03/17(水) 21:26:00
C#で湧いてくる人を見ると
『あぁブビ厨ってこんな感じだったんだろうなぁ』
と、当時が偲ばれてノスタルジックになれる
・・・かもしれない

734 :デフォルトの名無しさん:2010/03/17(水) 21:29:36
最近Rubyはじめた初心者だけど、IDEとか使わない方が
覚えることが少なくて楽だと思う

確かにDOSプロンプトで作業するとなんかイライラするけど、
cygterm (cygwin+teraterm) の端末なら快適

735 :デフォルトの名無しさん:2010/03/17(水) 21:36:14
cygwinならminttyもいいぞ
"mintty -"でログインシェルで起動するのを忘れずに

736 :デフォルトの名無しさん:2010/03/17(水) 22:25:38
DOSプロンプトなんてとっくに滅んで存在しないだろ。
NT系は最初から「コマンド プロンプト」だぜ。

つか、現代のコマンドプロンプトは、ヒストリついてるし、
最初からファイル名補完有効だし、意外と便利。

737 :デフォルトの名無しさん:2010/03/17(水) 22:30:40
UTF-8も満足に表示出来ないターミナルで便利とかちょっと
PowerShellならまあ…っていまだに使い方わからんけど

738 :デフォルトの名無しさん:2010/03/17(水) 22:30:48
最近はPowerShellとか言うやつじゃないのか。

739 :デフォルトの名無しさん:2010/03/17(水) 22:35:13
コマンドプロンプトからPowerShellを起動した場合はUTF-8表示できなかったような
ただPS用にISEっていう統合環境があってそれなら表示できる

ただPSは肝心の文法がキメラでして

740 :デフォルトの名無しさん:2010/03/17(水) 23:03:53
統合開発環境ってのはまずそいつの使い方を知らないと勉強を進められんからな
知ってりゃいろんな事がボタンひとつで出来るかもしらんが環境変わるとまた使い方を調べにゃならん
そしてWindowsはこれがないとプログラミングがまともに出来ない

741 :デフォルトの名無しさん:2010/03/17(水) 23:17:35
コマンドプロンプトUTF-8非対応のおかげで、rspecとかautotestで文字化けするから
spec_helperとかでモンキパッチで変換かますか、
autotestでCtrl+Cで強制終了してしまうのを我慢してUTF-8対応cygwinターミナル使うかという感じだ。

PowerShellだと表示出来るのかな、試してみるか・・・
結局、UTF-16に変換かまさないといけなかったらあまりおいしくないなあ

742 :デフォルトの名無しさん:2010/03/17(水) 23:19:46
>>740
IDEというか統合環境のいいところは、1つ覚えたら大体他もそれなりに使える、というところじゃないかなぁ?
そんなにカスタマイズしなくても馬鹿でも使えるからいいんであって。

emacsとかvimはカスタマイズしないとまともに使えないだろw

743 :デフォルトの名無しさん:2010/03/17(水) 23:22:51
エディタとコマンドプロンプトの切り替えにAlt+Tabがあれば基本なんとかなるだろ
必須になる意味がわからん
まさかマウスクリックでタスク切り替えしてるのか

744 :デフォルトの名無しさん:2010/03/17(水) 23:27:18
>エディタとコマンドプロンプトの切り替えにAlt+Tabがあれば基本なんとかなるだろ
そんな環境でプログラミングしてるのか大変だな

745 :デフォルトの名無しさん:2010/03/17(水) 23:29:29
>>741
ISEはあくまでPowerShell用の環境
コマンドプロンプトの上位互換的使いかたはできないと思われ

もしISEのプロンプトからirbとかしようものなら
延々入力を待ち続けてCtrl+Breakするまで戻ってきますん

746 :デフォルトの名無しさん:2010/03/17(水) 23:30:16
エディタカスタマイズ派
統合開発環境派
メモ帳+Alt+Tab派

他には?

747 :デフォルトの名無しさん:2010/03/17(水) 23:30:46
脳内にRubyインタプリタ実装派

748 :デフォルトの名無しさん:2010/03/17(水) 23:33:58
cmd.exeでUTF-8の表示だけできれば満足ならプロパティでフォントをMSフォントに変更してchcp 65001してやりゃいい
入力はあきらめた方がいいけど

749 :デフォルトの名無しさん:2010/03/17(水) 23:45:08
ここは本スレか

750 :デフォルトの名無しさん:2010/03/17(水) 23:49:27
本スレです。

751 :デフォルトの名無しさん:2010/03/18(木) 00:12:00
なんというかココ酷いね

752 :デフォルトの名無しさん:2010/03/18(木) 02:39:30
rubyで出来たpukiwikiのパーザってありますか??
pukipaはtableが使えないのでダメでした

753 :デフォルトの名無しさん:2010/03/18(木) 02:47:05
なんでこんなに粘着アンチは毎日ネガキャンに必死なんだろうな
周囲の環境を否定することでしか自我を保てない哀れな野郎だ

754 :デフォルトの名無しさん:2010/03/18(木) 03:31:29
Windows厨なんで開発環境といったら
・メモ帳
・TeraPad
・RDE
・Eclipse
ぐらいしかしらんなぁ
IronRubyに限るなら
・SharpDevelop
っていうのもありだな

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

そういうのが嫌いなら、TeraPadとかの高機能テキストエディタがいいね
何にも設定しなくても、それなりに見やすい。
動作も、さくさくしてる。
IDE使ってると見落としがちな、Rubyそのものの動作を体感できる。
初心者は逆にこっちのほうが良いかもね。
しばらく、メモ帳つかってメンドクセーって思うようになったら、IDEつかってみたら?

755 :デフォルトの名無しさん:2010/03/18(木) 09:12:18
>>748
chcp 65001するとまともに使えない@Vista

756 :デフォルトの名無しさん:2010/03/18(木) 10:53:23
そういうのが嫌いなら、TeraPadとかの高機能テキストエディタがいいね
                               ^^^^^^^^^^^^^^^^^^^

757 :デフォルトの名無しさん:2010/03/18(木) 10:59:46
>>756
ttp://www.vector.co.jp/vpack/filearea/win/writing/edit/terapad/

758 :デフォルトの名無しさん:2010/03/18(木) 11:01:13
メモ用紙で充分

759 :デフォルトの名無しさん:2010/03/18(木) 11:03:56
自由帳と脳内インタプリタでおk

760 :デフォルトの名無しさん:2010/03/18(木) 11:25:58
require するファイルがたくさんある場合 thread を使って並列に読み込むと
速くなりますか?
何か副作用はありませんか?

761 :デフォルトの名無しさん:2010/03/18(木) 11:27:54
>>760
速くならない

762 :デフォルトの名無しさん:2010/03/18(木) 11:35:30
結局I/Oでブロックされそうだな。

763 :デフォルトの名無しさん:2010/03/18(木) 11:44:42
インストール時に1枚のファイルにするようにするとかの気遣いが欲しいところ
require 'hoge' するとでっかいひとつ
require 'hoge/foo' だと個別

764 :デフォルトの名無しさん:2010/03/18(木) 12:00:57
>>761-763
ありがとうございます!
>>763
それは自分がライブラリを作って公開する場合の心得ってことですよね

765 :デフォルトの名無しさん:2010/03/18(木) 12:50:22
Rubyのスレッドの実装っていまどうなってるんだっけ

766 :デフォルトの名無しさん:2010/03/18(木) 12:55:03
>>765
実装の話題は本スレで

767 :デフォルトの名無しさん:2010/03/18(木) 12:57:23
じゃあ質問を変えるよ

requireに限らず、ボトルネック回避以外の目的にスレッドを使って高速化することはできる?

768 :デフォルトの名無しさん:2010/03/18(木) 12:58:17
>>767
できない
少なくとも1.8ではできない

769 :デフォルトの名無しさん:2010/03/18(木) 13:00:38
C++で作られているライブラリのバインディングを使っているのですが、
列挙型ってどうすればいいんですか?

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

こんな事を書いてる記事もあるわけですが、いちいちこんなに面倒くさい事をしないとダメなのかな

770 :デフォルトの名無しさん:2010/03/18(木) 14:34:37
p true and false #=> true
p true && false #=> false

なんで?
あれなんか凄い勘違いしてる?

771 :デフォルトの名無しさん:2010/03/18(木) 14:44:51
>>770
p (true and false)

772 :デフォルトの名無しさん: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

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

まず、左辺を評価して、結果が真であった場合には右辺も評価します。and は同じ働きをする優先順位の低い演算子です。
and を伴う式をメソッドの引数に渡す場合は二重に括弧が必要となります。

774 :デフォルトの名無しさん:2010/03/18(木) 14:49:36
かぶりすぎワロタ

775 :デフォルトの名無しさん:2010/03/18(木) 14:54:56
>>771-773
thx 把握した
そして and or が嫌いになった

condition = hoge and fuga

condition = (hoge and fuga)

condition = hoge && fuga
としなきゃいけないわけか

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



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

集合とかの AND や OR とかのように and や or を使うことはできない
記号優先なのが Perl っぽいといえば Perl っぽいといえなくもなく

778 :デフォルトの名無しさん:2010/03/18(木) 15:02:43
a == 0 and b < 0

779 :デフォルトの名無しさん:2010/03/18(木) 15:05:47
perl のは or die と書きたかったがためだけにこうしたような気がしてならない

780 :デフォルトの名無しさん:2010/03/18(木) 15:56:10
>>779
十中八九そうだと思う・・・


781 :デフォルトの名無しさん:2010/03/18(木) 15:57:03
Perl はどうかしらんが Ruby で foo or bar and baz は (foo or bar) and baz なので注意。
foo || bar && baz は foo || (bar && baz)

782 :デフォルトの名無しさん:2010/03/18(木) 17:03:27
RubyもPHPみたいにCGIとして動作させることができるの?


783 :デフォルトの名無しさん:2010/03/18(木) 17:05:01
もちろん

784 :デフォルトの名無しさん:2010/03/18(木) 17:15:00
Rubyというか
標準出力を吐けるものならなんでもCGIで使用可能
むしろCGIって名前自体がそういう意味なんだと思うけど
httpdでハンドラが適切に設定されている必要はある

785 :デフォルトの名無しさん:2010/03/18(木) 17:29:01
>>782
ただしすこし遅い
PHPやPerlより確実に遅い(mod_rubyでも素のPHPに勝てるか怪しい)
遅くてもいいようなまったり用途向け

786 :デフォルトの名無しさん: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

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





788 :デフォルトの名無しさん:2010/03/18(木) 17:44:01
Perlすらgeekしか知らないような頃、CでCGI書いてる会社の先輩が
いて、あきれるやら感心するやら。
# もちろんCで書くことが必要な状況ならそうすべきだけど。


789 :デフォルトの名無しさん:2010/03/18(木) 17:53:38
なぜあきれるやら関心するやらなのか解りかねる。

790 :デフォルトの名無しさん:2010/03/18(木) 17:56:59
感心ならともかく呆れるのは理解できない

791 :デフォルトの名無しさん:2010/03/18(木) 18:00:13
rubyでcgi書いててそこから呼ぶモジュールはがんがんCで書いてたなあ

792 :デフォルトの名無しさん:2010/03/18(木) 19:17:07
>>754
つvim

793 :デフォルトの名無しさん:2010/03/18(木) 19:55:06
つい先日もCでCGIを書く仕事があった。
非常にアホ臭いとは思ったが、呆れるとか感心するとかいうようなものでもないな。

794 :デフォルトの名無しさん:2010/03/18(木) 20:04:24
で?

795 :デフォルトの名無しさん:2010/03/19(金) 00:02:39

文字列:ABC=DEFG
パターン:ABC
文字列がABCから始まるかを調べる方法ありませんか?

796 :デフォルトの名無しさん:2010/03/19(金) 00:04:32
/\AABC/

797 :デフォルトの名無しさん:2010/03/19(金) 00:06:41
>>796
それで理解できる人はそういう質問はしないと思う

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


「正規表現」についての知識は必須なので、
使いやすい簡単なのだけは覚えておくといい

798 :795:2010/03/19(金) 00:09:40
>>797
これくらいの事なら、メソッドで準備されているかな?と思ったので

799 :デフォルトの名無しさん:2010/03/19(金) 00:11:05
こういうのも。

s = 'ABC=DEF'
s.start_with?('ABC') #=> true


800 :デフォルトの名無しさん:2010/03/19(金) 00:12:36
正規表現で簡単にできる「これくらいの事」をすべて
メソッドで装備していたらかなり煩雑だと思う

801 :デフォルトの名無しさん:2010/03/19(金) 00:13:45
>>800
そこから先は本スレでどうぞ

802 :デフォルトの名無しさん:2010/03/19(金) 00:14:31
ruby -e 'p String.instance_methods - Object.instance_methods'
とかやって、それっぽい名前のメソッドがないか探してみるのもよい。


803 :デフォルトの名無しさん:2010/03/19(金) 00:16:35
>>799はRuby1.8.7以降とRuby1.9.1以降限定
初心者的に大きな問題はないとは思うが

>>800
String#include?さんなめんあ

804 :デフォルトの名無しさん:2010/03/19(金) 00:19:18
start_with? なのか
starts_with? 派との間で血みどろの抗争が繰り広げられたに違いない

805 :デフォルトの名無しさん:2010/03/19(金) 00:21:37
>>804
ruby的には、is_a? 以外は原形不定詞を使うとかいう約束だったと思う。
三単現派は ActiveSupport を使えば starts_with? を定義してくれる。


806 :デフォルトの名無しさん:2010/03/19(金) 00:25:24
JavaはstartsWith, endsWithなんだな

>>805
なるほど
この場合主語が単数なのはほぼ異論無いとして、一人称なのか二人称なのか三人称なのか。
意外と深い?のでその原則は結構ナイスかも。
って日本人ユーザからすると面倒なだけとか。

807 :デフォルトの名無しさん: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

808 :デフォルトの名無しさん:2010/03/19(金) 00:33:55
is_a? との類推で三単現にしてしまうんだよなあ
まったく is_a? は鬼っ子だ

初心者の皆さんにおかれましては is_a? は表記的に時代遅れなので kind_of? 使ってくださいね

809 :デフォルトの名無しさん:2010/03/19(金) 00:36:36
>808
is_a? と kind_of? は意味が違うことをわかってんの?

810 :804:2010/03/19(金) 00:39:03
>>805
興味深いマジレスありがとう
原型不定詞ってなんだっけってなったのは内緒

811 :デフォルトの名無しさん: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

812 :デフォルトの名無しさん:2010/03/19(金) 00:47:43
>>809
あまり is-a と kind-of を区別してるとは思えないし、そもそも実装上区別してねえ
んなこと言うなら is_a? から kind_of? と instance_of? の機能を、kind_of? から instance_of? の機能外せ

813 :デフォルトの名無しさん:2010/03/19(金) 00:48:17
instance_of? と混ざったかな?


814 :804:2010/03/19(金) 00:49:18
>>807
d。読んできた

他の名前との一貫性からstart_withになったけど
Pythonに敬意を表してstarts_withにするのしないのって話もあったのかw

815 :デフォルトの名無しさん:2010/03/19(金) 01:42:41
File.exist?
File.exists?
みたいに両方あるのもあるよね。

816 :デフォルトの名無しさん:2010/03/19(金) 01:46:21
ポリシーのまったく無かった時代の古いメソッドだな
まあ今もポリシーとか薄いけど

817 :デフォルトの名無しさん:2010/03/19(金) 01:59:49
だからRubyは汚いんだよ。
Pythonの美しさをみ・・Pythonも似たようなもんか。

818 :デフォルトの名無しさん:2010/03/19(金) 02:04:58
メソッド(に相当するもの)の名前のつけ方は似たようなもんだな
どこも決定打に欠ける
永遠の問題なのかもしれない

819 :デフォルトの名無しさん:2010/03/19(金) 06:22:30
rubyはCASを目指しているのですか?

820 :デフォルトの名無しさん:2010/03/19(金) 06:39:55
カス

821 :デフォルトの名無しさん:2010/03/19(金) 07:20:02
そろそろrubyの次の言語で再出発する季節だな。
今度はguiとideとrails標準で。

822 :デフォルトの名無しさん:2010/03/19(金) 08:16:52
こうして >>821 は旅立って行ったのであった。

ー完ー

823 :デフォルトの名無しさん:2010/03/19(金) 10:52:45
アップキャストとダウンキャストがないから不便だ

824 :デフォルトの名無しさん:2010/03/19(金) 11:02:38
e-

825 :デフォルトの名無しさん: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にするか・・・

826 :デフォルトの名無しさん:2010/03/19(金) 13:10:31
Makefile とか configure 読めないのに cygwin 使おうとする男の人って…

827 :デフォルトの名無しさん:2010/03/19(金) 13:16:42
なんかインストールだけでなく運用自体が茨の道のようにも見える
mswin32でやったほうがよさそうなふいんき

828 :デフォルトの名無しさん:2010/03/19(金) 13:23:04
>>826
そりゃここでこちょこちょ勧める人がいるからだろ
ぶっちゃけ初心者にはcolinux+Debianとか勧めておけばいいのに

cygwinはwin,*nix両方知らなきゃいけないから難しいよ

829 :デフォルトの名無しさん:2010/03/19(金) 13:23:31
>>825
こういうひとってなんでRubyやめようと思わないのかな

830 :デフォルトの名無しさん:2010/03/19(金) 13:25:06
はじめに Ruby ありきなんだよな
目的と手段を取り違えるタイプ

831 :デフォルトの名無しさん:2010/03/19(金) 13:26:35
>>828
俺は勧めてないしテンプレにも一文字もないぞ

>>830
Rubyで遊んでみるのが目的なのに他の手段でウィンドウ作ってどうする

832 :デフォルトの名無しさん:2010/03/19(金) 13:51:22
色々勉強足らずのようなので精進します
Rubyありきなのはどうしようもないですがcygwinありきだった点を直そう
おとなしくmswin32でいじることにします

833 :デフォルトの名無しさん:2010/03/19(金) 13:52:10
「Rubyの初心者」のスレなのに
「プログラムの初心者」と決めつけて・勘違いして回答してるのが何人かいるな

834 :デフォルトの名無しさん:2010/03/19(金) 13:55:21
>>833
「OS操作や他言語プログラミング等にある程度造詣があってRubyに挑戦しようとしてる人」
の質問はそれなりに洗練されている

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

プログラミング経験者なのにPC初心者向けな回答をされたという場合は
そりゃ質問の書き方がまずいのだろ

835 :デフォルトの名無しさん:2010/03/19(金) 14:14:38
>>829
なんでRubyやめようと思うと思うの?

836 :デフォルトの名無しさん:2010/03/19(金) 14:32:24
なんでRubyやめようと思うと思わないの?

837 :デフォルトの名無しさん:2010/03/19(金) 14:42:45
思わないことに理由を求められても

838 :デフォルトの名無しさん:2010/03/19(金) 14:53:56
>>837
このひとはなにもかんがえてません
ずっといます

839 :デフォルトの名無しさん:2010/03/19(金) 15:04:33
いったい誰と戦っているんだ

840 :デフォルトの名無しさん:2010/03/19(金) 15:07:15
中高生の春休みにはまだちょっと早いと思うんだが、
ここ数日どのスレもなんか雰囲気違うな

841 :デフォルトの名無しさん:2010/03/19(金) 15:13:29
もっと簡単に使えるrubyみたいな言語が有ればいいのにね。
visual rubyとかmsが用意すればいいのに。

842 :デフォルトの名無しさん:2010/03/19(金) 15:14:59
諦めきれずにやってたらインストールできた
単純に-lrubyが足りなかっただけでした
やっぱり次につまずくまでcygwinで行こうと思います

843 :デフォルトの名無しさん:2010/03/19(金) 20:39:12
>>841
簡単に使えるってどういう意味よ。

844 :デフォルトの名無しさん:2010/03/19(金) 22:09:24
るび厨って未だにema糞だから言語、エディタ、デバッガ、ライブラリ、ドキュメントが
高度に統一された環境がどれほど快適であるか理解できないんだろうね。

845 :デフォルトの名無しさん:2010/03/19(金) 22:11:15
Rubyを使ってない人がなんでこのスレにいるの?

846 :デフォルトの名無しさん:2010/03/19(金) 22:30:11
かまってくれるからだろう

847 :デフォルトの名無しさん:2010/03/19(金) 22:59:43
1.9 への覚悟を決めた
さっき 1.8.7 を入れた

848 :デフォルトの名無しさん:2010/03/20(土) 09:10:20
visual basicみたいなrubyがあればいいってことだろ。
phpなんかも、php + sql starter見たいなの配布してるしねえ。
rubyもそういうお手軽さを提供しないと、いつまでもマニア向けのまま終わる事に成る。

849 :デフォルトの名無しさん:2010/03/20(土) 09:21:20
Windows環境で手軽なものが必要だろうね
LinuxとかUnix系使ってる場合は使い始めるのにそんなに壁無いと思う

850 :デフォルトの名無しさん:2010/03/20(土) 09:24:08
PerlやPythonやPHPでIDEセットみたいなものが普及したらそのとき考える
他の言語で普及してないということはそれなりに理由があるもんだ

それと、Rubyはバージョンが1未満のころから一貫してマニア向けでしかない
これはPerlも同じ

851 :デフォルトの名無しさん:2010/03/20(土) 09:49:47
「マニア向け」の意味に依るけど,Unix系使ってきて他の言語
知ってるととっつきやすいけどな
別にRubyだけってわけでなく他の言語メインに使ってる

852 :デフォルトの名無しさん:2010/03/20(土) 09:57:27
というかRuby自体どう見ても第二言語だろ
sedやawkを知ってるとアホみたいに作業効率が上がるのと同じ
単語操作はCでもできるがsedやawk経由のほうが作業速度は速い

853 :デフォルトの名無しさん:2010/03/20(土) 09:58:10
rubyからメールを送れるプログラムてできる?
ただし、OSがHomeeditionこれて無理かな?


854 :デフォルトの名無しさん:2010/03/20(土) 10:01:02
>>853
できるよ
普通にSMTP操作すればいい

855 :デフォルトの名無しさん:2010/03/20(土) 10:05:26
地味に難易度上げてるな

856 :デフォルトの名無しさん:2010/03/20(土) 10:08:27
>>851
Windows で Ruby のとっつきにくさって
言語の仕様とか経験とか以前に
インストールの面倒臭さとか
cygwin/mingw混在とか
本質と関係ないどうでも良い部分で
無駄に時間取られることだよ

857 :デフォルトの名無しさん:2010/03/20(土) 10:17:33
>>853
できるけど、それを質問してくるレベルの知識ではできない。


858 :デフォルトの名無しさん:2010/03/20(土) 10:19:14
おっさんしゃべり場になってるな

859 :デフォルトの名無しさん:2010/03/20(土) 10:23:00
>>855
当たり前だ
自動車ってどうやってエンジンかけて運転するんですかという小学生の質問に
仔細に答えるわけにはいかない

860 :デフォルトの名無しさん:2010/03/20(土) 10:29:40
>インストールの面倒臭さとか
>cygwin/mingw混在とか

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

言い換えればその面倒さはRuby本体以外の部分にある

861 :デフォルトの名無しさん:2010/03/20(土) 10:34:29
cygwin使っておきながら、他のコンソールアプリケーションとのバッティングに文句言うとかありえん

862 :デフォルトの名無しさん:2010/03/20(土) 10:38:17
ActiveScriptRubyをダウンロードしてダブルクリックしていくつかボタンクリックする作業が難しいというような人は
Rubyにまだ向いてないとおもう

863 :デフォルトの名無しさん:2010/03/20(土) 10:54:15
初心者スレでいうのもなんだけど、そこまで初心者に媚びる必要はないと思う。

864 :デフォルトの名無しさん:2010/03/20(土) 10:58:50
>>799
s = 'ABC=DEF'
s.rindex('ABC', 0) #=> true
s.rindex('DEF', 0) #=> false
なら古いバージョンでも動く


865 :デフォルトの名無しさん:2010/03/20(土) 11:54:19
>ttp://rubyist.g.hatena.ne.jp/hsyd/20060621/p3
>foo{|arg|
> puts "given block. arg=#{arg}"
>}

argには何が入るの?


866 :デフォルトの名無しさん:2010/03/20(土) 11:59:33
>>865
yield の引数

867 :865:2010/03/20(土) 12:04:20
>>866
thx

868 :デフォルトの名無しさん:2010/03/20(土) 13:15:16
>>863
激しく同意。

自分はさらに極端で、プログラム初心者、PC初心者は放置でいい気がする。
第二言語としてRubyを使おうとしてる初心者に対して優しくするのはよいと思うけど。

869 :デフォルトの名無しさん:2010/03/20(土) 13:27:46
んなこといったらこのスレ自体いらんがな

870 :デフォルトの名無しさん:2010/03/20(土) 13:30:23
>>869
いいえ

871 :デフォルトの名無しさん:2010/03/20(土) 13:34:33
×しょしんしゃ
○しょしんもの
これを受け入れる

872 :デフォルトの名無しさん:2010/03/20(土) 13:40:24
こっち系の才能のある人ってやっぱりアスペとかコミュ能力に問題抱えてる人が多いのかしら
そう思わせるレスが多い

873 :デフォルトの名無しさん:2010/03/20(土) 13:42:47
俺の〜の頃はとか語りだしちゃう馬鹿
誰もお前には聞いてない

874 :デフォルトの名無しさん:2010/03/20(土) 13:47:00
お前にもな

875 :デフォルトの名無しさん:2010/03/20(土) 13:48:30
やめろやめろ喧嘩になる

876 :デフォルトの名無しさん:2010/03/20(土) 13:53:34
話は変わるけど、1.8.7-p249でUTF-8の文字列をinspectすると末尾の全角文字が
文字化けする状態は放置されたままなんだね。
とりあえず、string.cを修正してからmakeすれば直るんだけど。
1.8.8では直るらしいから、それでいいじゃんと思われてるのかな。


877 :デフォルトの名無しさん:2010/03/20(土) 14:10:09
p249の次のパッチレベルリリースで直るんじゃない。
緊急再リリースするほどの問題ではないという判断なのでしょう。

878 :デフォルトの名無しさん:2010/03/20(土) 16:56:07
javaのinstanceofのように、変数とクラスを比較して同じか調べたいのですが
誰か教えてください


879 :デフォルトの名無しさん:2010/03/20(土) 17:25:57
kind_of?

880 :デフォルトの名無しさん:2010/03/20(土) 17:39:03
>>879
thx

881 :デフォルトの名無しさん:2010/03/20(土) 17:42:42
OneClickInstallerでRubyをインストールしてしまったので、1.8.7にバージョンアップしたいのですが、
現在インストールしているRuby1.8.6をアンインストールすべきでしょうか?

Ruby on Rails と Ruby gemsもインストールしているので、アンインストールしていいものか悩んでいます。
よろしくお願いします。

882 :デフォルトの名無しさん:2010/03/20(土) 18:11:00
>>881
Rubyのバージョンアップはアンインストール前提
既存の Ruby の設定を考慮する Windows 用インストーラーというのも今のところ存在しない

現時点で gem list するとインストール済み gem 一覧が出てくるのでそれメモっておいて 1.8.7 でもインストールしろ
1.8.6 → 1.8.7 であるなら GEMHOME に該当するディレクトリを退避して上書きでも動作はするはずだが保証はしない

883 :デフォルトの名無しさん: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環境で起動

パッケージが違うとはいえ、混沌とした
アンインストールまじおすすめ

884 :デフォルトの名無しさん:2010/03/20(土) 18:54:37
>>882
>>883
ありがとうございます。大人しくアンインストールしておきます。

885 :878:2010/03/20(土) 19:36:17
毎度、お世話になっています
また、ちょっとおしえてください

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

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

こういう処理をしたかったのですが、クラスはClassって型なんですね
なんか勘違いしていました

886 :デフォルトの名無しさん:2010/03/20(土) 19:49:17
Rubyに型はない
(以下既存ループ)

>>885
Rubyにおけるクラスとインスタンスという概念をとりあえず勉強しろ
(オブジェクト指向としてのクラスとインスタンスという大仰な概念は不要)
話はそれから

887 :デフォルトの名無しさん: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

888 :デフォルトの名無しさん:2010/03/20(土) 20:47:14
そろそろこういう>> =>書き方をするひとが出てくるんじゃないかと思ってた

889 :デフォルトの名無しさん:2010/03/20(土) 20:48:50
>>> じゃないだけいいだろう

890 :デフォルトの名無しさん:2010/03/20(土) 20:49:57
irbの出力のこと?

891 :デフォルトの名無しさん:2010/03/20(土) 20:50:30
>>888
$ mv ~/.irbrc dot.irbrc
$ irb --simple-prompt
>> 1
=> 1


892 :デフォルトの名無しさん:2010/03/20(土) 20:54:14
>>891
退避しなくても -f オプションがあるよ

$ irb --simple-prompt
irb> exit
$ irb -f --simple-prompt
>>


893 :デフォルトの名無しさん:2010/03/20(土) 20:55:51
ここまで10分
なんというフルボッコ

894 :デフォルトの名無しさん:2010/03/21(日) 00:24:53
kind_ofって必要かね。
RubyでいうとMix-inとかで解決すべきところだと思うのだが。
Javaだとインタフェースになるのかな。

895 :デフォルトの名無しさん:2010/03/21(日) 00:30:40
は?

896 :デフォルトの名無しさん:2010/03/21(日) 00:33:35
型を調べて処理を分岐するようなのはダックタイピングじゃないって言いたいのかな
別にそんなにこだわる必要ないと思うけど

897 :デフォルトの名無しさん:2010/03/21(日) 00:34:25
>>894
まず、そうゆうネタは本スレに振った方がいいと思う
主張っぽいのがあるなら特に

その上で、Mix-inで解決ってのは意味がわからんが
Mix-inされてるかどうかって所にkind_of?なんかの使い道もあろうと

898 :デフォルトの名無しさん:2010/03/21(日) 00:40:46
でもkind_fとタイプした瞬間「これでいいのかなぁ」というなんとも後ろめたい感情が沸き起こるわけですが…。
自分だけですかね。
オブジェクト指向だの大見得切っといてこんなことしちゃっていいのかしらウフフ、的なね。

899 :デフォルトの名無しさん:2010/03/21(日) 00:45:11
何について言ってんの?

900 :デフォルトの名無しさん:2010/03/21(日) 00:47:21
kind_ofとか、呼び出された側で型判定して動作を変えるのはポリモーフィズムじゃないよねという話。

901 :デフォルトの名無しさん:2010/03/21(日) 00:49:03
>>894
このくらいのレベルの話で本スレに行かなきゃならんのか・・・

902 :デフォルトの名無しさん:2010/03/21(日) 00:50:16
だからっつって、method_missing前提もどうかって話にも
なるんじゃないかと思う

903 :デフォルトの名無しさん:2010/03/21(日) 00:57:31
>>901
いや、ココ、初心者スレ、だーよ

904 :デフォルトの名無しさん:2010/03/21(日) 00:58:52
呼び出された側ってどっちだい?

905 :デフォルトの名無しさん:2010/03/21(日) 00:59:49
なんでkind_ofにつっかかってるのかわからんね

906 :デフォルトの名無しさん:2010/03/21(日) 01:03:13
インスタンスにメソッド追加できるんだし
結局、スタイルの問題でしょ?

まぁ、確かにライブラリとかで kind_of 連発してたら
しょんぼり感が漂うな

907 :デフォルトの名無しさん:2010/03/21(日) 01:03:41
>>894だけで終わってたらどう頑張ってもふわっふわな話になるわ
具体的事例がないならとりあえず本スレ行っとけ

908 :デフォルトの名無しさん:2010/03/21(日) 01:05:23
Mix-inとかで解決ってのが謎を深める

909 :デフォルトの名無しさん:2010/03/21(日) 01:08:34
インスタンスがあるメソッドを持つことを確認するのに kind_of を使ってる
ってことなんでしょ

インターフェースで強制すべきってことでMix-inという話になる
で、906に続く


910 :デフォルトの名無しさん:2010/03/21(日) 01:10:49
>>909
その上で、何が不満なのかを書かないと話にならない

あんたが言うように使うこともあるだろうし、それはまさにJavaのインターフェイスの
使い方の一つだけど、それがRubyで「できる」ことに問題があるのかな?

911 :デフォルトの名無しさん:2010/03/21(日) 01:12:46
kind_of?と関係ない話だ

912 :デフォルトの名無しさん:2010/03/21(日) 01:13:20
いや、おれ894じゃないから知らないよw
「謎」って言うから書いただけ
全く不満はございません

913 :デフォルトの名無しさん:2010/03/21(日) 01:17:19
Mix-inで強制とかできるの?

914 :デフォルトの名無しさん:2010/03/21(日) 01:19:19
そりゃkind_of?で弾けば可能だ。あれ?

915 :デフォルトの名無しさん:2010/03/21(日) 01:21:14
Rubyはとりあえず自分が今すぐに便利ならそれで良いやって言語だった。そうだった。

916 :デフォルトの名無しさん:2010/03/21(日) 01:26:03
本当に文句を付けたいところは動的型付けなんじゃ?

917 :デフォルトの名無しさん:2010/03/21(日) 09:10:19
1..10を1..無限にするには、どうすればいいの?

918 :デフォルトの名無しさん:2010/03/21(日) 09:15:14
Rangeオブジェクトではできない
1から始めて整数値をえんえん増やす処理をさせたい場合はそのようにループを書く

919 :デフォルトの名無しさん:2010/03/21(日) 11:48:29
ダックタイピングってさ、例えばオブジェクトが read というメソッドを持っていることを仮定するわけじゃん?
さらにいえば、そのreadメソッドがこちらが期待する動作を仮定しているじゃん?

こういうのって問題にならないのかな。
組み込みクラスならまだしも、ユーザ定義のクラスでこんなにうまくいくの?

920 :デフォルトの名無しさん:2010/03/21(日) 11:50:23
うん

921 :デフォルトの名無しさん:2010/03/21(日) 11:53:24
>>920
名前ってどうするの?

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

※ そんなこといったらモジュールの名前空間も衝突す(ry

922 :デフォルトの名無しさん:2010/03/21(日) 12:01:18
ダックタイピングしたいなら ruby やめて python にするといいよ

923 :デフォルトの名無しさん:2010/03/21(日) 12:03:59
inspectメソッドみたいに、固定的に名前を決めちゃうのもどうかなぁ、って思うんだけど。
実質 Ruby の予約語じゃね?

例えば p メソッドは、inspectがオブジェクトを文字列に変換してくれることを期待しているから
ユーザ定義のクラスでも、そのことを念頭に置いて、メソッド名を決めなくちゃいけない。

924 :デフォルトの名無しさん:2010/03/21(日) 12:08:16
ある動作を期待されるメソッドをユーザが別の動作で定義して動作がうまくいかない場合は
別の動作で定義したユーザが悪い

925 :デフォルトの名無しさん:2010/03/21(日) 12:15:38
>>924
だから、その名前をどうするかって話だよ。

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

するとAさんは、「お前、なんでreadなんて名前にしたの?氏ね」
と文句を言われる。なんで?

926 :デフォルトの名無しさん:2010/03/21(日) 12:17:27
× 文句を言われる
○ 文句を言う

927 :デフォルトの名無しさん:2010/03/21(日) 12:19:23
>なんで?

原因分かってるのに聞くなよ

928 :デフォルトの名無しさん:2010/03/21(日) 12:21:19
ああ、inspectメソッドみたいに全てを把握しないといけないのか。
メソッド名も、メソッド定義も気をつけないとなー。

929 :デフォルトの名無しさん:2010/03/21(日) 12:21:41
しかしつまらんスレだな

930 :デフォルトの名無しさん:2010/03/21(日) 12:22:47
何を問題としてるかわからん

read というメソッドがあるライブラリを拾ってきて、ブラックボックス的に使ったら
たまたま名前が同じだけで期待しない動作だった、ってのを懸念してるように
見えるけど


931 :デフォルトの名無しさん:2010/03/21(日) 12:31:54
静的型かじってないとまるで理解できない悪寒

932 :デフォルトの名無しさん:2010/03/21(日) 12:32:24
そんなことを心配するなんて
あなた(俺様)は何も悪くありません
どんなAPIを設計するかはあなた(俺様)の自由
APIが使いにくいからといっても,あなた(俺様)が文句を言われる筋合いは全くないでしょう
ユーザーは単にあなた(俺様)のライブラリを使わなければよいのですから

933 :デフォルトの名無しさん:2010/03/21(日) 12:34:20
まあそれはいいとしても、inspectって固定的に決めちゃうのはどうなの?
initializeもか。

934 :デフォルトの名無しさん:2010/03/21(日) 12:38:50
追加するとき問題になる場合は、先頭に__を付ければ解決

935 :デフォルトの名無しさん:2010/03/21(日) 12:43:00
Object#__send__
がいい例だね...

936 :デフォルトの名無しさん:2010/03/21(日) 13:11:09
initialize も inspect も使いたいように使ったらいいんじゃないっスか?
別に予約語でもなんでもないんだから

937 :デフォルトの名無しさん:2010/03/21(日) 13:17:45
広く普及している使い方に反する使い方をしていれば
フィードバックを貰って改定するとか、俺流を貫いて淘汰されるとか
するんじゃないかね。


938 :238:2010/03/21(日) 13:40:16
FAQかもしれないけど、空の配列をハッシュのデフォルトにする
方法はないですか?もう下のようなコードを書くのはうんざり・・・。

animals = Hash.new
...
if animals[:dog]
 animals[:dog] << "pochi"
else
 animals[:dog] = ["pochi"]
end

939 :デフォルトの名無しさん:2010/03/21(日) 13:45:22
animals = Hash.new([])

940 :939:2010/03/21(日) 13:46:43
ああ、そういやこれはダメだったな

941 :デフォルトの名無しさん:2010/03/21(日) 13:53:08
>>938
> もう下のようなコードを書くのはうんざり
そういうクラスを作ればいいだけでは…

942 :デフォルトの名無しさん:2010/03/21(日) 13:53:09
animals = Hash.new{|h,k| h[k] = []}

943 :デフォルトの名無しさん:2010/03/21(日) 13:57:55
>>938
あんまり変わらないけど、これはどう?

animals = Hash.new
animals[:dog] ||= []
animals[:dog] << "pochi"


944 :デフォルトの名無しさん: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"

945 :デフォルトの名無しさん:2010/03/21(日) 14:03:28
あれ?Hashってキーが見つからないときのデフォルト値って設定出来なかったっけ?

946 :238:2010/03/21(日) 14:04:02
>>941
確かに自分の場合、Hashを拡張してしまうのが早いかも。

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

ありがとう。

947 :238:2010/03/21(日) 14:11:36
>>945

普通のデフォルト値として[]を渡すと、同じArrayインタンス
が使いまわされるので、目的に適わないのです。その点、
942のコードなら大丈夫。

948 :デフォルトの名無しさん:2010/03/21(日) 20:43:00
みんなが便利を目指してる訳ではないしな。
教祖のrubyの教えを信じるものはrubyで救われるが、信じない異教徒にはrubyは助けに成らない。

949 :デフォルトの名無しさん: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


950 :デフォルトの名無しさん:2010/03/21(日) 23:01:10
>>948
俺なんか別にどの言語も信者ではないな
どの言語でも何でこんなアホなんだと思う場面あるし
実際は言語がアホな場合も自分がアホな場合もあるけど…


951 :デフォルトの名無しさん:2010/03/21(日) 23:06:15
レスもらえないからとうとう自演を始めた

952 :デフォルトの名無しさん:2010/03/21(日) 23:14:39
>>951 ??

953 :デフォルトの名無しさん:2010/03/21(日) 23:18:25
ほかでやってね

954 :デフォルトの名無しさん:2010/03/21(日) 23:30:12
「Rubyの言語仕様策定において最も重視しているのはストレスなくプログラミングを楽しむことである (Enjoy programming)」
この部分においてはRUBYは他の言語の追随を許さないのでしょうか?
これから学ぼうと思ってるのですがここ見ててそんな疑問が浮かびました
皆さんの印象で結構ですのでお願いします

955 :デフォルトの名無しさん:2010/03/21(日) 23:31:23
馬鹿な俺様が初めて使いこなせた言語

956 :デフォルトの名無しさん:2010/03/21(日) 23:33:34
>>954
初プログラミングならたぶん快適
他の静的型付け言語の経験があるならキイイイイイイイッってなるかもしれん

957 :デフォルトの名無しさん:2010/03/21(日) 23:35:37
いろんな意味で細かいことを気にしない人は楽しめるんじゃなかろうか

958 :デフォルトの名無しさん:2010/03/21(日) 23:36:07
>>954
そんなこと気にせずさっさとインスコして試したらいいよというのが正直な印象
有名どころの言語をあれこれ使ってみて自分に合うのを選んだらよろし

959 :デフォルトの名無しさん:2010/03/21(日) 23:37:53
プログラミング初心者はとにかく処理系と戦いながら何度も試行錯誤を重ねることがわりと重要なので、
そういう点ではRubyは優れているといってよろしかろう?

960 :デフォルトの名無しさん:2010/03/21(日) 23:42:47
ただしWindowsを除く。


961 :デフォルトの名無しさん:2010/03/21(日) 23:47:42
対話環境がある言語は有利だわな
Windowsプラットフォーム固有の問題を出せるまで使い倒したなら
もう初心者卒業だろうw

962 :デフォルトの名無しさん:2010/03/22(月) 00:02:26
>>942
だと代入せずに参照しただけで要素が追加されてしまうので
animals = Hash.new {[]}
animals[:dog] <<= "pochi"


963 :デフォルトの名無しさん:2010/03/22(月) 00:03:11
Windowsなら.NETにREPLがあるF#がガチ
いまVS2010RC入れて触ってみたんだけど、これは良いわ
インタラクティブシェルのキーバインドがreadlineじゃなくてcmd.exeなのと
VS2008には有ったemacs系のキーバインドが無くなっちゃったのが
個人的には痛いけど、これからプログラムの勉強始める人なら関係ないよね


964 :デフォルトの名無しさん:2010/03/22(月) 00:08:29
色々どもです954です
でもおいらWINDOWS環境だw

965 :デフォルトの名無しさん:2010/03/22(月) 00:14:34
Smalltalkやってたので言語覚えるのは比較的楽なんだけど、環境が良く分からん
1.9だと、まだデバッガが対応していない?

966 :デフォルトの名無しさん:2010/03/22(月) 00:18:37
デバッガって標準添付されてるでしょ
なのに動かないの?

967 :デフォルトの名無しさん:2010/03/22(月) 00:19:32
>>964
VMwareにubuntuでも入れとけ

968 :デフォルトの名無しさん:2010/03/22(月) 00:24:57
>>966
あー、いきなりRadRailsのIDEでデバッグしようとしてるのがいけないのか
リファクタリングツールとかないと生きていけない体になっているので、いきなりIDEに手を出したのが不味かったのかも

969 :デフォルトの名無しさん:2010/03/22(月) 00:25:40
>>965
いわゆるデバッガと言われて想像するような性能のものは無い
言語仕様的な問題なんじゃないかとうっすら想像中

970 :デフォルトの名無しさん:2010/03/22(月) 00:30:27
>リファクタリングツールとかないと生きていけない体になっている



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

の間に関連性を見出そうと頑張っています
しばらくお待ちください


971 :デフォルトの名無しさん:2010/03/22(月) 01:12:54
いきなり(Rubyでも)IDEに手を出した(そしてがっかりした)
ってことだろうね

972 :デフォルトの名無しさん:2010/03/22(月) 02:53:12
Smalltalkやってたぐらいだから、IDEどっぷりでしょ
Smalltalkは言語というより環境そのもの。EclipseとかでKentが再現しようと頑張ってるけど及ばない領域が多い
今でこそそこそこ使えるIDEが出てきたけど、RubyのIDEは正直糞レベル

973 :デフォルトの名無しさん:2010/03/22(月) 09:44:03
rubyの文字列連結って超不便じゃね?
FixnumとStringの連結くらいでエラー出すなよな

974 :デフォルトの名無しさん:2010/03/22(月) 09:54:42
あらゆる種類のオブジェクトがString相手の+メソッドを特別扱いすべきだと?

975 :デフォルトの名無しさん:2010/03/22(月) 09:55:27
>973

"#{foo}" 使えよ

976 :デフォルトの名無しさん:2010/03/22(月) 09:57:35
強く型付けされた言語で、
あたかも暗黙の型変換が起きたかのような挙動は危険すぎる
to_s で明示的に変換するべき

977 :デフォルトの名無しさん:2010/03/22(月) 09:58:19
動的型言語における暗黙の型変換はエラーの温床になる

978 :デフォルトの名無しさん:2010/03/22(月) 10:01:25
何でこのスレはキチガイばっかり何ですか?

979 :デフォルトの名無しさん:2010/03/22(月) 10:27:34
きちがいがきちがいをよぶ
きちがいにしかきちがいはみえない

980 :デフォルトの名無しさん:2010/03/22(月) 10:47:57
Array#joinは勝手に変換するけどな。

[1,2,3,[{:a=>"a", :b=>"b"}],].join #=> "123bbaa"

981 :デフォルトの名無しさん:2010/03/22(月) 10:51:22
順序の無いハッシュまで変換してるとか最高にすかぽんたんですね

982 :デフォルトの名無しさん: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"}


983 :デフォルトの名無しさん:2010/03/22(月) 11:39:11
勝手に変えんな

984 :デフォルトの名無しさん:2010/03/22(月) 11:40:11
rubyでstringの文字コードを調べる方法ないですか?
#!ruby -Kuと$KCODEで指定しているのですが、
C++のフレームワークを経由して表示させたい文字列を取得しているため

985 :デフォルトの名無しさん:2010/03/22(月) 11:42:56
>>984
文字エンコーディング情報を別途保持して渡すか、require 'guess' して NKF.guess(str) した数値を
NKF::SJIS とか NKF::UTF8 とかと比較する

次スレ立てるよ

986 :デフォルトの名無しさん:2010/03/22(月) 11:44:37
>>985
GJ

987 :985:2010/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」

988 :デフォルトの名無しさん:2010/03/22(月) 11:54:04
ERROR:スレ立ては●を使うと出来ますよ。

989 :デフォルトの名無しさん:2010/03/22(月) 11:54:06
RubyInstaller使いやすかったよ

990 :デフォルトの名無しさん:2010/03/22(月) 12:00:24
じゃあ>>988さん●使ってスレたてお願いしますね

>>987の心中をエスパーしてみた

991 :デフォルトの名無しさん:2010/03/22(月) 12:03:05
しかしくだらんスレだな

992 :デフォルトの名無しさん:2010/03/22(月) 13:55:06
スレたていってきますよ

993 :デフォルトの名無しさん:2010/03/22(月) 14:05:27
次スレです
なかよくつかってね

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

不備があったらテンプレのあとによろしく

994 :デフォルトの名無しさん:2010/03/22(月) 14:18:18
>>989
RubyInstallerだからだめという話にはなってねー
中身がMinGW32であることが、問題切り分けとスクリプト手修正のできない初心者には厳しいという話

995 :デフォルトの名無しさん:2010/03/22(月) 16:10:38
馬鹿にはrubyは無理。

梅。

996 :デフォルトの名無しさん:2010/03/22(月) 16:16:51
むしろバカはruby意外は無理

997 :デフォルトの名無しさん:2010/03/22(月) 16:19:09
バカには何渡してもできないからどうしようもない

998 :デフォルトの名無しさん:2010/03/22(月) 17:54:48
パカは優秀

999 :デフォルトの名無しさん:2010/03/22(月) 18:02:44
ふふっ♪ばーか♪

1000 :デフォルトの名無しさん:2010/03/22(月) 18:08:05


1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

241 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)