Ruby 初心者スレッド Part 35at TECH
Ruby 初心者スレッド Part 35 - 暇つぶし2ch1:デフォルトの名無しさん
10/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つをすること。ここで回答を待つよりそのほうが早い。
 ・モジュール名やエラーメッセージでググる
 ・マニュアルで引っかかったクラスの記述を探す URLリンク(www.ruby-lang.org)
 ・FAQを一応読む URLリンク(www.ruby-lang.org)
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・エラーメッセージ(自力で訳さずなるべくそのままで)
 ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。

■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

2:デフォルトの名無しさん
10/03/04 11:02:23
【よくあるしつもん】
Q:
いちからRubyを始める初心者向けのRuby入門書は何がありますか?

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

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

以下の本は言語作者が書いた最新本ですがとりあえず初学者向けではありません。
 ・「プログラミング言語 Ruby」(言語として深く知りたい人向け)
  URLリンク(www.amazon.co.jp)

3:デフォルトの名無しさん
10/03/04 11:03:38
Ruby 公式・非公式便利サイト2009

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

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

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

・日本Rubyの会 【最近はオフライン勉強会の寄り合い場と化しているので近くで勉強会があれば】
 URLリンク(jp.rubyist.net)

4:デフォルトの名無しさん
10/03/04 11:05:14
●関連スレ
Rubyについて Part 39
スレリンク(tech板)
●アンチスレ
・Rubyについて(アンチ専用) Part004
スレリンク(tech板)
●Railsスレ
【Ruby】Ruby on Rails Part9
スレリンク(php板)
●Windows用スレ
・【ActiveScript】RubyをWindowsで使うスレ【GUI】
スレリンク(tech板)
●Ruby 1.9 系列スレ
・魁け! Ruby 1.9.X
スレリンク(tech板)

●前スレ
Ruby 初心者スレッド Part 34
スレリンク(tech板)
Ruby 初心者スレッド Part 33
スレリンク(tech板)
Ruby 初心者スレッド Part 32
スレリンク(tech板)

5:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/04 11:41:38
Windows で Ruby を使う初心者はとりあえず ActiveScriptRuby のほうインストールして慣れろ
OneClickInstaller 使って数年前のバグあり Ruby をわざわざいまさらインストールする必要もないし
RubyInstaller のほうは MinGW32 版なので古い gem ライブラリではバイナリが用意されない

 ■ とにかく迷いたくない普通の人 … ActiveScriptRuby
URLリンク(arton.hp.infoseek.co.jp)
1.9.1 を使いたい人は
URLリンク(www.artonx.org)
の「Ruby-1.9.1-p数字 Microsoft Installter Package」

 ■ トラブっても自分で手直しする根性あるから遅くなる可能性ないほうがいい … RubyInstaller
古いコンパイラ製ではない mingw32 版の提供がメイン
URLリンク(rubyinstaller.org)
古いgemパッケージでWindows環境だとみなしてくれずにコンパイラが走って「make がない」と言われること有り
それを乗り越えるためにコンパイラ環境が入ってる「Development Kit」をインストールしておくのを推奨
URLリンク(wiki.github.com)
7zip 対応のアーカイバでないとダウンロードしたファイルを展開できないので注意
「mingw32」をWindows版とみなさないスクリプトがまだあるので、それは自力で毎回書き換える必要あり

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

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

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

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

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

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

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

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

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

16:デフォルトの名無しさん
10/03/04 19:10:55
>>15
なってない
Ruby オフィシャルの One-Click Installer は依然として
URLリンク(rubyforge.org)
URLリンク(rubyforge.org) を指してる

RubyInstaller の存在を公式として紹介してるのは英語ページだけ
URLリンク(www.ruby-lang.org)

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

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

19:デフォルトの名無しさん
10/03/04 19:35:32
drvwEIKUW

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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


32:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/04 21:01:02
ソース以外は知らんなー。

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

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


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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

50:デフォルトの名無しさん
10/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の記事「プログラマーの力量を見極める」
URLリンク(japan.zdnet.com)
です。

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

52:デフォルトの名無しさん
10/03/05 10:52:06
>>50
Rubyはそのへんただのメソッドで、各々のクラスのメソッド定義で動作が自由に変わる
それぞれのクラスのそれぞれのメソッドのマニュアル読め

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

a = URI.parse("URLリンク(example.com)") と b = URI.parse("URLリンク(EXAMPLE.com)") は
object_id が違うので equal? は偽を返す

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

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

というわけで、Rubyではその手の問答は向かない

53:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/05 11:07:58
>>53
やっぱ原文たどったよな
これ日本語に訳した人が悪いわ

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

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

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

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

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

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

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

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


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

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

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

65:デフォルトの名無しさん
10/03/06 04:31:33
たのしいRuby 第3版
URLリンク(www.amazon.co.jp)
3月31日発売

66:デフォルトの名無しさん
10/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
10/03/06 05:48:31
すみません。fedora11でした。


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

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

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

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


71:デフォルトの名無しさん
10/03/06 09:25:14
URLリンク(www.w3.org)

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

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

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


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



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

関連でこういうのも
URLリンク(www.clear-code.com)

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

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

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

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

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

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

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

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

81:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/06 18:40:48
rubyでAPIを処理できますか?

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

>>82
どの?


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

85:デフォルトの名無しさん
10/03/06 21:33:00
>84
URLリンク(www.ruby-lang.org)

これでいいのか?

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

Linux環境だとgnome2つかって下記のように簡単に作れるみたいですが・・・・
URLリンク(alohakun.blog7.fc2.com)

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

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


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

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

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

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

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

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

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

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


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

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

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

URLリンク(jp.rubyist.net)
この記事の内容って今も大きい変化ない?

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



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


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

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



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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

140:デフォルトの名無しさん
10/03/08 23:49:53
でも根本的に向いてない。
教祖自らウィンドウズ使ってないしねえ。

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

スレリンク(linux板)
Debian GNU/Linux スレッド Ver. 63
スレリンク(linux板)
Debian原理主義者テラモエス

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

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

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

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



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

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

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


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

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

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

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

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

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


150:デフォルトの名無しさん
10/03/09 01:33:02
>>148
URLリンク(www.bsc.fujitsu.com)

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

def hoge!
 raise_if_frozen
 …
end

とか

def hoge! … end
freeze_method :hoge!

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

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

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


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

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

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

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

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

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

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

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

そんな感じ

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

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

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

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

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

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

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

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

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

169:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/09 19:01:57
「要素があるか」を調べたいのに「空か」を調べてさらに加えて否定まで付けなきゃならんのは如何なものかってことじゃろ

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

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

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

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

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

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

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

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

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


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

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

end

def fusa?
!hage
end

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

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




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

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

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

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

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

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


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

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

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

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

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

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

191:デフォルトの名無しさん
10/03/10 10:34:48
下記コピペの拡散、お願いします!

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

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

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

【子供手当て驚愕の真実】 URLリンク(www.youtube.com)
驚愕の子供手当て URLリンク(5959goc.iza.ne.jp)
2010/3/10付の中日新聞
URLリンク(up3.viploader.net)
URLリンク(viploader.net)

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

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

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

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

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

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


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

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

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

WindowsならURLリンク(arton.hp.infoseek.co.jp)
ただしコマンドプロンプトの知識がどうしても必要

198:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/10 18:49:57
def method3(i)
case i
when 0...1000, 2000...3000, 4000...5000 then true
else false
end
end

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

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

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

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

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

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

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

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

どういう原理なんだ?

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

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

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

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

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

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


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

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

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

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

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

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

213:デフォルトの名無しさん
10/03/11 00:58:39
URLリンク(www.ruby-lang.org)
ここには0の場合永久スリープとは書いてないな。

RubySpecには
it "pauses execution indefinitely if not given a duration"
(引数がないなら無限に止まる)
はあるけど0を指定した場合の仕様は書いてない。
URLリンク(github.com)

でもって、るりま
URLリンク(doc.okkez.net)
には0だと永久スリープとある。

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



214:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/11 01:24:00
Rubyでできないことって何?

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

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

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

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

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

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

220:デフォルトの名無しさん
10/03/11 04:49:39
URLリンク(pub.cozmixng.org)
ここの一つ目のサンプルコードをコピペして実行したのですがエラーになってしまいます
それとサンプルの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:デフォルトの名無しさん
10/03/11 06:08:59
tcl入れてないんじゃね?

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

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

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

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

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

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

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

227:デフォルトの名無しさん
10/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('URLリンク(www.ruby-lang.org)')
p http_get(uri, {'Accept-Language' => 'ja'}).response['location']
p http_get(uri, {'Accept-Language' => 'en'}).response['location']

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

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


229:デフォルトの名無しさん
10/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
10/03/11 12:41:00
URLリンク(jp.rubyist.net)
ここに書いてある通り、One clickインストーラーをインストールしたので
tkは自動で入っているらしいのですが
tk.rbで検索してもHDD内のどこにもなかったんですが
やっぱりインストールされていないということなのでしょうか?

231:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/11 13:47:54
>>224-227
Thanks!
やっぱソコソコ手間かかるか

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

242:238
10/03/11 17:25:47
>>240, 241

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

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

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

もう疲れたよ・・・

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

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

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

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

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

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

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

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

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

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

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

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

ここを見たので、この通りやろうとして躓きました
URLリンク(jp.rubyist.net)
逆になぜ作ってはだめなのか私にはわかりません
そういった説明もないですし

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

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

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

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

256:220
10/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
参考サイト
URLリンク(arton.hp.infoseek.co.jp)
URLリンク(www.db.is.kyushu-u.ac.jp)
URLリンク(lldev.jp)
など・・

こんな感じです

257:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/11 19:29:51
Ruby と Tk をインストールしてから一度も RDE を再起動してない場合はこうなるな

259:デフォルトの名無しさん
10/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
10/03/11 19:56:49
>>257
全く同じ結果でエラーも出ませんでした
もしやと思って、test.rbをdblclickしたら普通に起動しました
ruby consoleで
>test.rbとやってもフォームが表示されました

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

271:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/11 21:27:13
あ、Zipってそっちか
それはrubygemからの追加インストールがいるな

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

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

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

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

275:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/03/11 21:55:04
>>274
Rubyの変数はハコではない

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

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


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

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


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

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

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

@var = hogeはjavaでいうと

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

と同じになるの?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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


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

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

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

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

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


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

316:デフォルトの名無しさん
10/03/12 14:34:25
ちょっと質問ですが、ふつーはRubyGemsで入れたライブラリなどのリファレンスくるのって何が手っ取り早いんでしょうか?

今までRailsやってて、るりまのchmと
↓で配布されてたchmと(更新停止中)、
URLリンク(d.hatena.ne.jp)
あとは最新のは URLリンク(railsapi.com) とか見てたんですが、
るりまはともかく、railsのchm配布サイトが更新されてなかったり、
最後のサイトはprivateメソッドやnodocのものが乗ってなかったり、不便に感じてます・・・。

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

また、ri入れるとRubyGemsのインスコが激遅になるんで使ってないんですが
(.gemrcに gem: --no-ri --no-rdoc とか書いてます)、
普通はri使うもんなんでしょうか?

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

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

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

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

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

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

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

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

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

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

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

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

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




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

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

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

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

>>324
違います

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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

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

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

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

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

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

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

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

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

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

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

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



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

351:デフォルトの名無しさん
10/03/12 20:59:49
>>343
たのしいRuby 第3版
URLリンク(www.amazon.co.jp)

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

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


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