Rubyについて Part 10

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。

Ruby Home Page
http://www.ruby-lang.org/ja/

= 前スレ
: Rubyについて Part 9
http://pc5.2ch.net/test/read.cgi/tech/1087999575/


2デフォルトの名無しさん:04/09/13 00:52:58
3デフォルトの名無しさん:04/09/13 00:54:52

= 関連リンク
: リファレンス
http://www.ruby-lang.org/ja/man/
: Ruby Weekly News @ Ruby Garden
http://www.rubygarden.org/rurl/html/
: ruby-cvs
http://rrr.jin.gr.jp/rwiki?cmd=view;name=ruby-cvs
: Ruby hotlinks 五月雨版
http://rrr.jin.gr.jp/~znz/samidare/
: 日本Rubyの会
http://jp.rubyist.net/
: Rubyist Magazine
http://jp.rubyist.net/magazine/
: <rubyXML/>
http://www.rubyxml.com/
: Matzにっき
http://www.rubyist.net/~matz/

= 関連スレッド
: rubyを語るスレッド 4
http://pc.2ch.net/test/read.cgi/unix/1060537252/
: 【最高言語】 Rubyist Magazine創刊 【ルビま!】
http://pc5.2ch.net/test/read.cgi/tech/1094825807/l50

4デフォルトの名無しさん:04/09/13 03:54:14
4.get!
5デフォルトの名無しさん:04/09/13 09:22:48
5.get?
6デフォルトの名無しさん:04/09/13 11:05:43
1 << 乙
7デフォルトの名無しさん:04/09/13 14:33:05
Rubyってどうしてこんなに使いづらいんですか?

554 名前:デフォルトの名無しさん[sage] 投稿日:04/09/09 17:52
埋め込みはRubyでやろうかと思ったけど面倒そうなので一分であきらめた。
埋め込みたければ言語にはこだわらずにメジャーなの使ったほうがいいんじゃないの。

555 名前:デフォルトの名無しさん[sage] 投稿日:04/09/09 21:56
簡単だけどな・・・
どこが難しかったの?

556 名前:デフォルトの名無しさん[sage] 投稿日:04/09/09 23:12
>>555
難しいという以前にRubyの低レベルな知識が皆無な状態で
ここからここまでを読めば埋め込みできるってドキュメントが見つからなかったから。
ついでに技術デモになるようなexeも実際に採用したフリーウェアも見当たらなかった。

557 名前:デフォルトの名無しさん[sage] 投稿日:04/09/10 00:37
Apolloはチェックしたのか?
ttp://www.moriq.com/apollo/

558 名前:デフォルトの名無しさん[sage] 投稿日:04/09/10 02:00
チェックしたよ。その上での>556。
WEB眺めてもApollo\Docを眺めても(だいたいApolloのヘルプなんて置いてないし)
どこから手をつけていいのかわからなかったし
簡単に行きそうな気配が微塵もしなかった。

で結局DMokeyに落ち着いた。
シンプルなヘルプを上から下まで一読してあっさり動いたよ。
8デフォルトの名無しさん:04/09/13 14:42:53
>RMagick といえば、cygwin で動かせた人います?
動いてますよ。
9デフォルトの名無しさん:04/09/13 14:46:45
>>7
少なくともPerlよりは使いやすそうだと思ったが…
オフィシャルのリファレンスが全て日本語だし。わかりやすいかと聞かれると微妙だけど…
10デフォルトの名無しさん:04/09/13 14:52:47
とっつき難くはある
11デフォルトの名無しさん:04/09/13 15:05:11
Perlのほうがとっつきやすいね。Rubyはオブジェクト指向向きに出来てるけど
Perlはベタ書きでダラダラやってもそれなりに苦労せずに動かせるから。

保守は絶対したくないけどさ。
12デフォルトの名無しさん:04/09/13 15:09:27
ダラダラ書く程度なら、PerlもRubyも大差ないと思うけど。
13デフォルトの名無しさん:04/09/13 15:14:00
ブロック終端が基本的に(少なくとも入門サイトレベルでは)endで、
インデント+endでダラダラ書きすぎると、ブロック構造読み取り(&デバッグ)
すらも大変になってくるから、if {}ってな感じのPerlのほうがそういう用途には
向いてるんじゃないかと思う。
14デフォルトの名無しさん:04/09/13 15:18:19
{}が読みやすいって、慣れの問題なんじゃない?
Cがはやり始めたころは、{}は読みにくい、begin,endが良いって意見が根強かったけど。
15デフォルトの名無しさん:04/09/13 15:24:51
生のVimでブロック終端間移動(%コマンド)が通るから{}が好きだったり
16デフォルトの名無しさん:04/09/13 15:32:24
商いねぇ
17デフォルトの名無しさん:04/09/13 15:36:45
すいません。eRubyでライブラリのロードパスを追加するにはどうすればいいんですか?
18デフォルトの名無しさん:04/09/13 15:50:11
>>17
こういう方法は?
<% $LOAD_PATH << '追加したいパス' %>
19デフォルトの名無しさん:04/09/13 16:02:34
オブジェクト指向スクリプト言語RubyのP163に下のようなコードが
あるだけど、%rの意味がわかりません。

case http_header_analyze(sock)
when %r|^/$|

2019:04/09/13 16:07:39
よく調べたらわかりました。
正規表現ですね。
2117:04/09/13 16:31:53
>>18

それでできました。さんくすです!
22デフォルトの名無しさん:04/09/13 18:15:44
・・・

pthread_t theThread;

void *thread_code(void *t)
{
・・・
}


main()
{
・・・

pthread_attr_init (&attr);
sched_param.sched_priority = 4;
pthread_attr_setschedparam (&attr, &sched_param);
ret = pthread_create (&theThread, &attr, thread_code, (void *) 0 );

・・・
}

優先度4のスレッド(thread_code 0)を作る部分なのですが、

main の中のこの4行を、優先度、スレッド名、スレッド番号を持つマクロに変換するには
どのようにしたらよいでしょうか?
2322:04/09/13 18:16:26
誤爆しました。すんません。
24デフォルトの名無しさん:04/09/13 20:23:35
Tabとスペース混ぜてインデントする人に聞きたいんだけど、どうしてあんなことしてるの?
しかもタブ幅は8。
エディタによって激しく読みづらくなる
25デフォルトの名無しさん:04/09/13 20:30:40
>>24
Emacs だとデフォルトでそうなっちゃうと思う。
漏れも以前そうだったけど、最近は (setq-default indent-tabs-mode nil) としてる。
26デフォルトの名無しさん:04/09/13 20:33:20
>>24 emacsのデフォルトの挙動だからでは。

emacs使いの人は (setq indent-tabs-mode nil) してからコードを書いて欲しい
27デフォルトの名無しさん:04/09/13 20:33:25
>>24
ホワイトスペースという言語がある。
お前がインデントだと思っている部分はおそらくホワイトスペースで書かれている。
一つのソースがコンパイラを使い分けることで二通りの解釈ができるということだ。
28デフォルトの名無しさん:04/09/13 20:35:25
emacs厨って何度言っても絶対に変態的インデントやめないんだよな・・・
マジ迷惑
29デフォルトの名無しさん:04/09/13 20:40:42
emacs厨ってどんな言語使ってるんですか?
Rubyですか?
Cとかではないですよね?
30デフォルトの名無しさん:04/09/13 20:41:27
elisp
31デフォルトの名無しさん:04/09/13 20:42:52
>>29
不思議な質問だ。
32デフォルトの名無しさん:04/09/13 20:44:31
Ruby厨ってどんなエディタ使ってるんですか?
emacsですか?
秀丸とかではないですよね?
33デフォルトの名無しさん:04/09/13 20:52:18
viヵゎぃぃょvi

WinだとなぜかNoEditorだが。
34デフォルトの名無しさん:04/09/13 20:54:19
gVimメインだけど、テキストの関連付けがVxEditorだから何故かメインの座にはVxが座ってる。
35デフォルトの名無しさん:04/09/13 21:23:31
Cを米国とすると
Rubyは北朝鮮
Basicは中国みたいなもんだな
36デフォルトの名無しさん:04/09/13 21:39:44
>>35
ん?その心は?
37デフォルトの名無しさん:04/09/13 21:42:56
Winで書くことがメインなんでK2Editor
38デフォルトの名無しさん:04/09/13 21:45:37
Winで書くことがメインなんでzyzzy
39デフォルトの名無しさん:04/09/13 21:46:42
名前間違えてまで必死棚
40デフォルトの名無しさん:04/09/13 22:15:47
WindowsではやはりRDEだな。
あれは本当によくできている。

eclipseプラグインのやつにも、もう少しがんばってくれれば面白いものができそうな感じなんだけど
411:04/09/13 22:27:32
あ、参考図書忘れてた……

Ruby使うなら読め

・王道編
  http://www.rubycentral.com/book/
  http://www.pearsoned.co.jp/washo/prog/wa_pro44-j.html



好みに応じて……
・256本
  http://www.ascii.co.jp/searchA/namazu.cgi?query=Ruby%A4%F2256&idxname=www.ascii.co.jp

・オブジェクト指向スクリプト言語Ruby
  http://www.ascii.co.jp/books/detail/4-7561/4-7561-3254-5.html

……て、読んだほうがいい本って、ホント無いな(除く王道編)。
42デフォルトの名無しさん:04/09/13 22:48:19
>>41
たのしいRuby
http://www.notwork.org/sbp-ruby/
Rubyレシピブック
http://www.notwork.org/rubyrecipebook/
は?
43デフォルトの名無しさん:04/09/13 23:01:14
『プログラミングRuby』はよい入門書のように思ったけど、どう?
44デフォルトの名無しさん:04/09/13 23:06:23
初心者向けなら原先生の「Ruby プログラミング入門」も良いと思う。
45デフォルトの名無しさん:04/09/13 23:12:10
Rubyレシピブックって良いの?
461:04/09/13 23:21:58
>42
ごめん、両方とも立読みしかしていないけど……


> たのしいRuby

これって、Class作成まで言及していたっけ?オブジェクト指向は
自分で用途に沿ったクラスを設計して使うというのが重要だと思うので、
クラスを使うところまでしか無いんじゃなぁ……

初心者向けにはいいかもね


> Rubyレシピブック

大半がリファレンスマニュアルに書かれているような気が……
もうちょっと(リファレンスに載っていないような)Tips的な内容を
期待していたんだけど……

まあ、リファレンスマニュアルよりわかりやすいから、そういう目的で
使うならいいかもね

471:04/09/13 23:25:58
>43
マジお勧め。これでRubyの概要がだいたい判る。

Programming RubyのライセンスはOpen Publication Licenseなんで、
誰か和訳して公開してくれないかな。
4842:04/09/13 23:51:03
>>46
『たのしいRuby』はクラスの作成についても書いてあるよ。モジュールとか
Mix-in とかの説明もちゃんとある。 GUI をやらなければ説明はひととおりあ
るし。
まあ、初心者向けにはよいかも、という意見には同意。
49デフォルトの名無しさん:04/09/14 00:46:54
おう、お前ら、cgi のソースコードデバッグってできるのか?
できるんだったら、すいません、やり方教えてください。

(できないような悪寒はしています)
50デフォルトの名無しさん:04/09/14 00:57:09
>>49
え?普通に
$ ruby -d hoge.cgi
でできねぇか?
51デフォルトの名無しさん:04/09/14 07:47:23
デバッガを使いたいんなら debug.rb を require すればいいよ
$ ruby -rdebug foo.rb
52デフォルトの名無しさん:04/09/14 22:01:20
998 :デフォルトの名無しさん :04/09/14 21:57:40
スレに対するサービス拒否アタックまで残り2


999 :デフォルトの名無しさん :04/09/14 21:58:02
↓当スレに対するサービス拒否アタック↓


1000 :デフォルトの名無しさん :04/09/14 21:58:51
matz は日記のかわりにドキュメントを書いてほしい


1001 :1001 :Over 1000 Thread



208 KB [ 2ちゃんねるも使っている 完全帯域保証 専用サーバ Big-Server.com ] 30,000円/月
★ 転送量無制限タイプも新登場。


なんか、1001がサボってないか?
53デフォルトの名無しさん:04/09/14 22:29:35
ほ、ほんまや……何があった?
54デフォルトの名無しさん:04/09/14 22:32:14
1001の文章を、板独自にカスタマイズできるようになったらしい。
5550:04/09/14 22:32:18
ごめ。最近仕事がPerlなもんで。
56デフォルトの名無しさん:04/09/14 22:32:56
DoSアタックで1001スレストプロセスが落ちたのかと思ったよ:D
57デフォルトの名無しさん:04/09/14 23:34:05
> 1000 名前:デフォルトの名無しさん[sage] 投稿日:04/09/14 21:58:51
> matz は日記のかわりにドキュメントを書いてほしい

こころから同意。
いや、本当に。
お願い。

日記のかわりにコードを書くでも可。
58デフォルトの名無しさん:04/09/14 23:39:41
ドキュメントといえば、 Ripper ってどうなの?
akr さんが軽く突っ込みを入れていたけど。
59デフォルトの名無しさん:04/09/14 23:42:21
>>57
matz が日記に書いたら勝手に実装してくれる小人さん多数きぼんぬ。
60デフォルトの名無しさん:04/09/14 23:42:30
るびまのインタビューに「あなたはなぜドキュメントを書かないのか」って質問入れてくれ。
61デフォルトの名無しさん:04/09/14 23:58:04
>>57-


すぐ実装したら仕事なくなっちゃうでしょ。適当に時間稼いで間を持たせないと・・・
62デフォルトの名無しさん:04/09/15 00:12:47
こういう流れになると「お前がドキュメントを書け」と言われそうだが、
ドキュメントって、分かってる人じゃないと書けないのよね。

分からないからドキュメントを見たいのに。
6349:04/09/15 00:26:42
>>50
>>51
う〜ん、その場合、フォームとかクッキーとかはどうすればいいんでしょ?
64デフォルトの名無しさん:04/09/15 00:45:29
>>62
最小限の記述で必要十分な説明をする能力に欠けてるような気がする。
ドキュメントの質が低い。分量同じでももっとまともなのかけるだろ普通。
業務ではいったいどんなドキュメント書いてるのかね。
Windows向けのフリーウェアやライブラリの方がよっぽどちゃんとしたヘルプがついてるよな。
ルビ厨ってプロ意識に欠けてるよ。いくら趣味でやってるとはいえプロのプライドっつうもんがあるだろ。
65デフォルトの名無しさん:04/09/15 01:48:16
matzがドキュメントよりソース読め派だからどうしようもない。
あと、Rubyを広める気は本当に全く無いんだと思う。
66デフォルトの名無しさん:04/09/15 02:22:45
Moonwolfさん、Planetについて激しく勘違いしてるような気が。
とはいえ、人力であれだけできるというのもすごいけど。
67デフォルトの名無しさん:04/09/15 02:31:08
>63
フォームは標準入力から、クッキーは環境変数 HTTP_COOKIE から渡せるよ。
68デフォルトの名無しさん:04/09/15 02:49:36
69デフォルトの名無しさん:04/09/15 03:50:28
CGI クラスって、new を2回やるとインスタンスがおかしくなりますけど(標準入力を二度読めないから?)
他の CGI ライブラリだと、解決されてたりしますか?
70 ◆FIcNi4f8js :04/09/15 09:24:42
なんでわざわざ2回newするの?
71デフォルトの名無しさん:04/09/15 09:56:51
ドキュメントが悪いっていう香具師はもう漏れ的には釣りとしかいいようがない。
これ以上何が足りないっていうのか。
72デフォルトの名無しさん:04/09/15 10:00:59
>>71
釣り乙
73デフォルトの名無しさん:04/09/15 10:03:10
松七誌出乙
74デフォルトの名無しさん:04/09/15 10:06:31
ローカル内輪言語に何期待しても無駄。
HSPのがよっぽどオープンでフレンドリーだよ。
75デフォルトの名無しさん:04/09/15 10:07:09
>>71
HSPやRubyみたいな厨言語に期待するお前がアホ
76デフォルトの名無しさん:04/09/15 10:21:20
>>74
釣り乙
77デフォルトの名無しさん:04/09/15 10:23:14
>>76
>>71みたいな馬鹿を見るとあながち釣りにも見えん。
78デフォルトの名無しさん:04/09/15 10:44:29
>>66はスルーですか。そうですか。
実際にPlanet blogをやるのであれば、Pythonで書かれているaggregator
(http://www.planetplanet.org/)のRuby版を作るところからはじめた方が
いいのかな。Planet PHPもPHPなaggregatorを使っているし。
79デフォルトの名無しさん:04/09/15 10:57:49
ドキュメント書けとかほざいてるやつは、
一体何のドキュメントが足りないのか言ってみろ。
80デフォルトの名無しさん:04/09/15 11:36:05
>>7
81デフォルトの名無しさん:04/09/15 11:43:05
変数の中身が文字列か配列かを判断したいんだけど、変数の中身のタイプを判別するにはどうしたらいい?
82デフォルトの名無しさん:04/09/15 11:49:45
>78
moonwolf氏のblogがあったことを今知った
83デフォルトの名無しさん:04/09/15 13:20:22
>>81
if v.class == String
elsif v.class == Array
end
84デフォルトの名無しさん:04/09/15 13:33:07
>>81
case
when v.is_a?(String)
...
when v.is_a?(Array)
...
end
でも可。 is_a? の場合はサブクラスでも拾われるという差がある。
85デフォルトの名無しさん:04/09/15 14:16:26
>>84
ふつーこうしない?

case v
when String
when Array
end
86デフォルトの名無しさん:04/09/15 15:38:20
>>85
うそ〜?と思ったが、そのコードで動くのね。
しかし、'case v'って言ったら、vの値を評価してるかの
ように思えるが、vの型を評価するの?
87デフォルトの名無しさん:04/09/15 15:47:48
>86
===が、右辺にClassが来るときは……ってオーバーライドされてるんでなかろか。
知らんけど。
88デフォルトの名無しさん:04/09/15 15:55:24
>> 85,86,87
if String===v
...
elsif Array===v
...
end
89デフォルトの名無しさん:04/09/15 16:35:30
>>88
でもさぁ、
>p "a"===String
は false なんだけど、
・・・と書き込もうと思ったが、
String==="a" は true なのね・・・・・orz
===って右と左を区別するのか。よぐわがんね。
90デフォルトの名無しさん:04/09/15 16:48:16
cgiでSocket関係を使うと
getaddrinfo: no address associated with hostname. (SocketError)  とか
getaddrinfo: servname not supported for ai_socktype. (SocketError)
がでるんだけどなんで?

コマンドラインで動かすときは大丈夫なんだけど、cgiのときと何が変わるの?
91デフォルトの名無しさん:04/09/15 16:48:42
>89
まぁ、そういうトリッキーなことを考えずに、
素直にis_a?使っとけってことじゃないかなぁ。
===使ったってメソッド呼んでることに違いはないんだし。
92デフォルトの名無しさん:04/09/15 16:58:22
>>89
===演算子もメソッドだから。
String === "a" は String.===("a")。

で===の中はこんな

def String.===(obj)
obj.is_a?(self)
end

なんでしょう。
93デフォルトの名無しさん:04/09/15 17:10:37
94デフォルトの名無しさん:04/09/15 17:43:02
=== って一応、比較演算子なんでしょ?
比較演算子で、左右入れ替えると結果がことなるって気持ち悪いな。
95デフォルトの名無しさん:04/09/15 17:52:12
記号の見た目は左右対象だけど、
主に所属関係・包含関係をチェックするメソッドだから、
左右入れ替えて結果が同じ方が気持ち悪いな。
96デフォルトの名無しさん:04/09/15 18:12:30
===なんて記号をつかわなければよかったのにね。
97デフォルトの名無しさん:04/09/15 18:59:41
#!/usr/local/bin/ruby -Ke

class Object
alias :∋ :===
end

v = "aString"

if String ∋ v
puts "String"
elsif Array ∋ v
puts "Array"
end
98デフォルトの名無しさん:04/09/15 19:03:15
もうクックルにしか見えない!
99デフォルトの名無しさん:04/09/15 20:35:48
>>98
オレモダヨ
100デフォルトの名無しさん:04/09/15 20:40:50
rubyのロゴって何ですか?
結局ナスカの地上絵風ので決定だったのですか?
101デフォルトの名無しさん:04/09/15 20:57:54
>>97
Ruby って2バイト文字の識別子使えるのか・・・・。
知らんかったよ。
102デフォルトの名無しさん:04/09/15 21:31:02
>>101
そうなんだよね。

ってなわけで、 2バイト文字で AA な Ruby コード募集。
103デフォルトの名無しさん:04/09/15 21:58:53
半角括弧使用禁止、*使用禁止、;使用禁止、半角スペース使用禁止


つらい
104デフォルトの名無しさん:04/09/15 22:37:21
禁止じゃないだろ
105デフォルトの名無しさん:04/09/15 23:16:20
>>103
__call__しろ
106デフォルトの名無しさん:04/09/15 23:45:24
こんなファイルtemplate.txt(他人が更新する)を用意して
----------------
おはようございます。〜〜

#{month}月#{day}日: 〜〜
----------------

こんなソース
----------------
#!/usr/bin/env ruby

tmp = ""
File.open("template.txt") { |f|
tmp = f.read
}

month = 9
day = 15

text = eval %Q|"#{tmp}"|
puts text
----------------
書いたんだが、

もっとスマートな書き方ない?
107デフォルトの名無しさん:04/09/16 01:03:39
>106
$ cat t.txt
<%=month%>月<%=day%>日
$ ruby -rerb -e 'month,day = 9,15; puts ERB.new(ARGF.read).result' t.txt
9月15日
108デフォルトの名無しさん:04/09/16 01:05:23
漏れも eruby 使うのが王道だと思うが、あえて、ちみのコードにてをいれると

>month = 9
>day = 15
>
>puts eval('"'+IO.read('template.text)+'"')

って感じになりました。 '"'+〜'"'ってのが汚い感じだけど。
109108:04/09/16 01:07:07
puts eval %Q|"#{IO.read('template.txt')}"|
で行けました・・・・orz
110デフォルトの名無しさん:04/09/16 01:07:14
>>106だと、templateに"が入ったときがよくない
111デフォルトの名無しさん:04/09/16 01:18:12
>>97
$ ruby -e p [1,2] === 1'
false
$ ruby -r set -e 'p Set[1,2] === 1'
false
11281:04/09/16 01:59:18
なんか沢山レスが付いてる。thx
結構いろいろな方法があるみたいだな。勉強になるよ。
113デフォルトの名無しさん:04/09/16 02:25:34
blikiのソースって公開されないのかなあ
114デフォルトの名無しさん:04/09/16 17:19:17
>>111
>>95=>>97 です。
確かに「包含関係」って言ったのは正しくないみたいですね。
さらに、数学苦手なので、「所属性」を表す記号を (そもそも存在するのかさえも)
知らないので適当書きました。
すいません。
115デフォルトの名無しさん:04/09/16 17:29:57
>>106
eval 使うのは怖くない?

class String
def replace(words); self.gsub(/#\{(\w+)\}/) { words[$1] }; end
end
words = { "month" => month, "day" => day, }
puts text = tmp.replace(words)
116デフォルトの名無しさん:04/09/16 17:48:57
2.0の引数名を指定して引数渡すのってオリジナルなのそれともなんかのパクリ?
117デフォルトの名無しさん:04/09/16 18:25:07
>>116
VBにもその機能があるのは知ってる。
VBがなにからパクったか、あるいはオリジナルなのかは知らん。
118デフォルトの名無しさん:04/09/16 18:35:16
>>116
オレがはじめてみたのはAdaで時期は80年代だった。
119デフォルトの名無しさん:04/09/16 20:30:52
>116
漏れの個人的意見としてはObjective-Cっぽくも感じる。
(あれは引数名がメソッドシグニチャに埋め込まれてるつー方がまだ正確か)
120デフォルトの名無しさん:04/09/16 21:41:41
>>116
CGI とか見たく、hash でその機能を実現してるのもあるよね。
実行速度的は hash と変わらない感じなのかな。

ところで、その機能はどんな表記で利用できるの?
121デフォルトの名無しさん:04/09/16 22:11:16
http://cvs.m17n.org/~akr/diary/ が IE で見れないんですが、みなさん見れますか?
122デフォルトの名無しさん:04/09/16 22:16:29
>121
漏れも見えない。
つーか、IEとFirefoxでそれぞれソース表示させたら全然違うし。
123デフォルトの名無しさん:04/09/16 23:36:09
>>121
w3m
124デフォルトの名無しさん:04/09/16 23:39:14
>>121

macOS10.3.5 ブラウザSafari1.2.3ですが閲覧不可です。
以下のメッセージが表示されています。
------------------------
ページ “http://cvs.m17n.org/~akr/diary/” を開けませんでした。

エラー:無効なサーバ応答(NSURLErrorDomain:-1011)

、エラー番号とこのメッセージが表示される前に行った動作の説明を記載して、“Safari”メニューから“Apple にバグレポートを送信”を選択してください。

------------------------
やれやれ。
125デフォルトの名無しさん:04/09/16 23:52:17
>>121-124
メジャーなブラウザでは見れないようにしてるみたいね
>>123が言うように、いつもw3mでみてる。
126デフォルトの名無しさん:04/09/16 23:58:41
>>107-110,115
アリガトー

テンプレート系は、CGIじゃなくてもerb使うのが王道なのね。
evalは最後の手段と。
>>115は面白いな。

勉強になりまスタ
127デフォルトの名無しさん:04/09/17 00:19:38
erbもevalしてるけどな
128デフォルトの名無しさん:04/09/17 00:25:41
evalやinstance_evalを安易に使う風潮があるよな。
129デフォルトの名無しさん:04/09/17 01:27:23
>>126
テンプレートの対象がHTMLならamritaも便利ですよ。
130デフォルトの名無しさん:04/09/17 01:53:48
>>116
70年代前半のLISPかSmalltalkのどっちか。
131デフォルトの名無しさん:04/09/17 03:02:06
プログラミングまったく初めてでRubyを勉強するために
「たのしいRuby」を買ってきたんですが
いきなり文字列だとかメソッドだとか言われてもちんぷんかんぷんです。
基礎の基礎の考え方から勉強できるような本はないでしょうか。
132デフォルトの名無しさん:04/09/17 03:19:45
釣り?
133デフォルトの名無しさん:04/09/17 05:46:24
>>131
そこでHSPですよ。
134デフォルトの名無しさん:04/09/17 06:05:58
> リファレンスマニュアルは参照している。
> だが、作者の頭の中にしかない仕様は参照できない。
どうよ?
135デフォルトの名無しさん:04/09/17 08:26:14
>>131

本じゃないのがちとつらいけど,
http://ruby.mirror.easynet.be/ja/uguide/uguide00.html
とか、どう?

って,すこしむつかしいかな。
136デフォルトの名無しさん:04/09/17 09:35:07
>>131
とりあえず自分の名前を表示するプログラムを作ってみよう。覚えるには使ってみるのが一番だと思う。
あとは「自分が書いたプログラムで何をしたいか」だな。
137デフォルトの名無しさん:04/09/17 10:20:30
「簡単なプログラム」でこれはないだろう・・・
難しくはないにしても激しくわかりづらい。
Ruby入門ではなくRubyによるプログラミングの入門書ってのは確かにないかもな。
line = ''
indent=0
$stdout.sync = TRUE
print "ruby> "
while TRUE
l = gets
unless l
break if line == ''
else
line = line + l
if l =~ /,\s*$/
print "ruby| "
next
end
if l =~ /^\s*(class|module|def|if|case|while|for|begin)\b[^_]/
indent += 1
end
if l =~ /^\s*end\b[^_]/
indent -= 1
end
if l =~ /\{\s*(\|.*\|)?\s*$/
indent += 1
end
if l =~ /^\s*\}/
indent -= 1
end
if indent > 0
(ry
138デフォルトの名無しさん:04/09/17 10:58:52
だれかさんが言ってたけど、
結城浩先生,Rubyに転ばないかな〜。
139デフォルトの名無しさん:04/09/17 11:21:03
結城氏はPerlやJavaなどの実用度や完成度の高く普及した環境にしか興味がないんだよ。
コードの字面で一喜一憂するほど子供じゃないからね。
140デフォルトの名無しさん:04/09/17 11:42:34
宗教上の理由もあったりして。
141デフォルトの名無しさん:04/09/17 13:04:14
wxRubyのサンプル(images.rbw)なんだけど
> paint do | dc |
>  dc.clear
>  dc.draw_bitmap(@bitmap, 0, 0, false)
> end
って何やっているんだかわかる人いる?
paint do | dc |とendの働きがさっぱりわからん…
doってRubyのマニュアルにもないしwxRubyのマニュアルにも見あたらないし…
142デフォルトの名無しさん:04/09/17 13:15:20
>>137
読解力無いの?それは「『簡単なプログラム』の例」ではないでしょ。

# 書かれた当時は irb も無かったはず。
143デフォルトの名無しさん:04/09/17 13:32:55
>>141
……ネタか?
do … end は { … } と(ほとんど)同じだが。


ところでみなさま、do … end と { … } の違いって何?優先順位だけ?
昔は「値を返す時は{ … }」だったみたいだけど。(Rubyist Magazine より)
144デフォルトの名無しさん:04/09/17 13:54:01
質問を釣り扱いしたりネタ呼ばわりするRubyコミュニティって腐ってますね。
145デフォルトの名無しさん:04/09/17 14:05:23
さすがに、ブロックを質問するのは、かなりありえない。
146デフォルトの名無しさん:04/09/17 14:07:22
>>145
だよな。
リファレンスマニュアルにだってちゃんと・・・、と思ったら見当たんねー。
どこかに書いてある?
147デフォルトの名無しさん:04/09/17 14:08:37
matzの脳内
148146:04/09/17 14:12:21
yield から辿って「メソッド呼び出し」の「イテレータ」で見つかった。
こりゃふつーは捜し当てられないんじゃなかろうか。
149デフォルトの名無しさん:04/09/17 14:12:44
>>146
Rubyの文法 > メソッド呼び出し > ブロック付きメドッド呼び出し
150デフォルトの名無しさん:04/09/17 14:13:28
151141:04/09/17 14:14:30
>>143
ごめんなさい。大マジです。マヌケな質問に答えてくれてありがとうございます。
do〜endと{〜}ってほとんど同じなんですか…
書き換えてみたらそのまま動きました。

リファレンスマニュアルの機能別検索を見て無い無い思っていたんですけど
メソッド呼び出しの所にあったんですね…_| ̄|○ il||li
152143=150:04/09/17 14:20:09
でも言われてみれば、「doって何だろ?」と思った人が検索する時に
ここにたどり着くのは容易じゃないかもなあ。

どうすりゃ分かりやすいだろう。
・do は予約語っぽい → 予約語一覧から、それぞれ関係ある項目にリンクを貼る
とかか?

>>151
ネタ扱いして失礼。最初どんな風に検索してどのページを見たか
(そしてどこで諦めたか)を教えてくれると、リファレンスを改善できて助かる。

153146:04/09/17 14:26:11
>>149, >>150
スマソ。以前手元にコピーしてきてた古いの見てた。
# 当時は「イテレータ」だった。
154デフォルトの名無しさん:04/09/17 14:32:29
初学者にとってはRubyは同機能異表記な機能が多すぎて混乱する上に
冗長な表記を避けて書かれた既存のコードを読む場合可読性が非常に低く
暗号的という意味ではPerlと大差なかったりするとかしないとか。
155141:04/09/17 14:45:28
>>152
俺の場合…
・doって制御構造で使われていたような…→for/whileとかであるけど単独の使用例は見つからず→空振り
・んじゃ検索で「do」を…→当然のように大量引っ掛かかる→あきらめ
・なら機能別検索で…→do単独の項目が見つからず→お手上げ
でした。
できればリファレンスマニュアルが項目ごとに全文検索できればいいのですが…
今の構造じゃ難しそうですね。

>>154
大なり小なり言語にはつきまとう問題だと思う。オブジェクト指向な言語ほど顕著かも
C++なんかも他人のコードはかなり読みにくい気がする。
確かにRubyは自由度が高すぎる感はあるよね。あと、"ほぼ"同機能なコードがあったりとか。
156デフォルトの名無しさん:04/09/17 14:48:46
>>154
>初学者にとってはRubyは同機能異表記な機能が多すぎて混乱する
「他人の書いたコードを読む時」ってことかな。

両方知ってて好きな方を使う分にはいいけど、初学者は
「この例に出てくるcollectって何? mapとは違うの? …(調べる)…って一緒かよ!」
みたいになる、と。

>冗長な表記を避けて書かれた既存のコードを読む場合可読性が非常に低く
こっちはよく分からないので例キボン。

個人的には、Hashでよく使われる「var ||= value」は可読性が低いと思う。
 hash['key'] = value unless hash['key']
が冗長なんで
 hash['key'] ||= value
なんて書きたくなる気持ちは分かるけど……。
157デフォルトの名無しさん:04/09/17 14:49:32
there is more than one way to do itだよ
matzがLarryについて尊敬する点ってのはここなんだろう
158122:04/09/17 15:09:08
>125
たいがい亀だが
Firefoxはマイナーってことでせうか。

# Firefox0.9.2(Japanese,Windows)では見れてまつ。
159デフォルトの名無しさん:04/09/17 15:17:51
「Content-Encoding deflate」でぐぐれ
160デフォルトの名無しさん:04/09/17 15:19:53
冗長といえば
a+=1
161デフォルトの名無しさん:04/09/17 15:29:08
>>140
そういえば結城さんもクリスチャンだよな。
162デフォルトの名無しさん:04/09/17 16:47:52
>>160
そして「なんで Fixnum#++ がないの?」と話はループ・・・
163デフォルトの名無しさん:04/09/17 17:28:52
ちょっとわかりにくいんだけど…
class A < CC
 @@foo = 'hoge'
 class B < DD
  def hoge
   ここで@@fooを読み書きしたい
  end
 end
end
の場合どうしたらいい?
164デフォルトの名無しさん:04/09/17 17:38:43
>>163
class A で @@foo のアクセスメソッドを定義してやれば?
165デフォルトの名無しさん:04/09/17 18:18:11
>>140
プロテスタント(結城)とモルモン(まつもと)だもんな。
ヤバイよな。
166デフォルトの名無しさん:04/09/17 19:58:58
>>115
String#replace(other) を置き換える方が怖くない?
167デフォルトの名無しさん:04/09/17 20:18:25
>>166
あわわわ、確かに。 (元々の String#replace の存在をすっかり忘れてた・・・)
168163:04/09/17 20:33:16
>>164
なるほど。できました。

やってみて思ったんだけど変数のようにデータを出し入れできるオブジェクトって作れなかったっけ?
Aの下にそのようなクラスが定義してB::hogeないでオブジェクトを生成すればデータの出し入れが
便利になりそうだと思ったんだけど…
連続で質問すまん
169デフォルトの名無しさん:04/09/17 20:57:17
Programming Ruby (2nd. Ed.) あげ

http://www.pragmaticprogrammer.com/titles/ruby/index.html

PDF版安いなぁ……
170デフォルトの名無しさん:04/09/17 21:07:12
>>166-167
そういえば、知らないうちにメソッドを置きかえてたというのを防止することってできるの?
171デフォルトの名無しさん:04/09/17 21:21:13
>170
moduleで囲ってmoduleごとfreezeかねぇ


module B
  def self.teste; p 'test' end
end

module B
  def self.teste; p 'test2' end
end #=>can't modify frozen object (TypeError)

172デフォルトの名無しさん:04/09/17 21:22:10
スマン、抜けてた

module B
  def self.teste; p 'test' end
end

B.freeze

module B
  def self.teste; p 'test2' end
end #=>can't modify frozen object (TypeError)
173デフォルトの名無しさん:04/09/17 21:43:49
あ、-W のときはちゃんと教えてくれるのね
174デフォルトの名無しさん:04/09/17 21:44:45
% ruby -W -e 'class String; def replace; end end'
-e:1: warning: method redefined; discarding old replace
175デフォルトの名無しさん:04/09/18 00:47:28
クラス変数があってほんとによかったと思うことってどれくらいあるのかな。
176デフォルトの名無しさん:04/09/18 01:12:39
>175
グローバル変数的な使い方を良くするよ。
177デフォルトの名無しさん:04/09/18 02:21:22
一度でいいから言ってみたい。
「次のようにすると core を吐きます。」
178デフォルトの名無しさん:04/09/18 03:21:29
>>177
そんなに大したもんじゃないつーか
泡沫Rubyistの俺でも数回でたことある。
仕事で普通に使ってたら出て支障きたした。
むしろBug出すぎw
ただ頑張って直してパッチ書いて
取り込んでもらった時は嬉しかった。
179デフォルトの名無しさん:04/09/18 05:48:27
仕事で普通に使うことを許される会社っていいな。
180デフォルトの名無しさん:04/09/18 09:09:55
$1とかってスレッドごとに独立してるの?
181デフォルトの名無しさん:04/09/18 11:08:17
試せよ
182デフォルトの名無しさん:04/09/18 11:54:25
ディレクトリ移動を行うスクリプトを書きたいのですが、
Dir.chdir だとスクリプト内でしかディレクトリ変更が効きません。
% pwd
/home/ruby
% ruby -e'Dir.chdir("/home")'
% pwd
/home/ruby

動作としては、こんな感じにしたいのですが。
% pwd
/home/ruby
% cd.rb /home
% pwd
/home

なにか方法はあるのでしょうか?
183デフォルトの名無しさん:04/09/18 12:03:21
>>182

それはRuby云々ではなくUNIX FAQ。
結論だけ言うと「普通は無理」。
まともな方法では親プロセスには影響できない。
184デフォルトの名無しさん:04/09/18 12:08:29
>>182
カレントディレクトリというのはプロセスごとに持っている情報。
子プロセスが作られるときには親プロセスのを引き継ぐけど、
子プロセスから親プロセスのそれは変更できない。
185182:04/09/18 13:16:35
>>183 >>184
なるほど。ありがとうございました。
じゃあ、 Rubyスクリプトの出力を受け取って 
cd を実行するようなシェルスクリプトをつくって
% . hoge.sh
としてカレントシェル内で実行する、って方法か
alias hoge='. hoge.sh'
にしておくとか。

186デフォルトの名無しさん:04/09/19 11:46:37
moonwolf氏が空回りしてると思う人の数→(1)
187デフォルトの名無しさん:04/09/19 13:19:53
matz七誌出乙
188デフォルトの名無しさん:04/09/19 14:34:57
Ruby Garden の松は matz ということでFA?
189デフォルトの名無しさん:04/09/19 14:54:06
詮索好きだなぁ・・・
190デフォルトの名無しさん:04/09/19 15:21:15
>>186
ruby-listの読書会のはともかく、首藤プラネットは良いと思う。
リンク先見るかどうか、寸評のおかげで決められるし。
191デフォルトの名無しさん:04/09/19 15:43:45
>>186
日本人にはめずらしく行動力だけはズバ抜けていて、そこはマジで尊敬するけど…


 あ れ は P l a n e t と は 言 わ な い よ な 。


むしろ、ruby-talk便りとかそっちの方が正確だろうな。
あるいはRuby Watchとか。
192デフォルトの名無しさん:04/09/19 17:53:33
wxRubyに関するサンプルとか資料がまとまっている所ってどっかある?

画像の動的な書き換え方がわからなくて…
何かイベントがあったときに表示されている画像を書き換えたいんだけど
Image書き換えてサーフィスに変換してbitbltで転送しても画面が書き換わってくれない。
いったん別のウインドウで隠して再度アクティブにすれば書き換わってくれるのだが…_| ̄|○
193デフォルトの名無しさん:04/09/19 17:55:15
>>192
ソースを読んでドキュメントとチュートリアルとサンプルと
その他雑多な資料を作成してください。
あなたがやらない限り未来永劫ないままです。
194デフォルトの名無しさん:04/09/19 19:56:01
>>192
wxRubyそのもののドキュメントはあまりない。wxWidgetsのドキュメントも
見た方がいいと思う。わからないことあったら↓で質問すれば。

【GUIライブラリ】wxWindowsでのひょーん
http://pc5.2ch.net/test/read.cgi/tech/1052186697/

>>193
ヤレヤレ厨うざい。
195デフォルトの名無しさん:04/09/20 00:19:23
>>191
あれを行動力というのか?まあそうかもしれんけど。
Moonwolfの行動力って、るびきちのそれと似てるんだよね。
196デフォルトの名無しさん:04/09/20 01:02:18
planetって本来どういうのなの?
197デフォルトの名無しさん:04/09/20 01:08:35
198デフォルトの名無しさん:04/09/20 01:31:50
さんくす。アグリゲータの一種なのね。
199デフォルトの名無しさん:04/09/20 01:43:01
200デフォルトの名無しさん:04/09/20 01:53:02
そういや bdb1-0.2.2 のバグはどうなった?
201デフォルトの名無しさん:04/09/20 09:53:13
やっぱrubyはまだベータレベルだな(w
202デフォルトの名無しさん:04/09/20 10:16:21
akr さんと同レベルの人があと2,3人にたら、まつもとさんは過労死しそうな予感。
203デフォルトの名無しさん:04/09/20 12:29:47
akrって誰?
204デフォルトの名無しさん:04/09/20 13:28:55
>>195
> あれを行動力というのか?まあそうかもしれんけど。
> Moonwolfの行動力って、るびきちのそれと似てるんだよね。
うーん、本人には失礼かもしれないけど、同意してしまう。
205デフォルトの名無しさん:04/09/20 13:31:14
age
206デフォルトの名無しさん:04/09/20 13:41:46
ruby-talkウイルス来すぎ
207デフォルトの名無しさん:04/09/20 13:51:56
>>203
金光さん
208192:04/09/20 14:21:08
Window::refreshで解決しました。

wxRuby使うと激しくRubyらしからぬコードになるような気がするのは気のせいか…?(´・ω・`)
209デフォルトの名無しさん:04/09/20 14:35:09
>>201
>やっぱrubyはまだベータレベルだな(w

だからハックのやり甲斐があるんじゃない?御輿に乗るだけが能じゃないでしょ?
210デフォルトの名無しさん:04/09/20 21:04:59
例えばRubyで,2chの特定のスレッドを定期巡回して,1000まで到達したら,
ローカルにテキストファイルとして保存するようなプログラムを書きたいのですが,
どのような方法が良いでしょうか?
URLとかスレッドごとに変わってしまうので,その辺がややこしくて...
211デフォルトの名無しさん:04/09/20 21:07:20
>>210
巡回スレ全てに更新チェックを行い
更新されているスレのデータを差分取得。
1000でスレが止まったら巡回スレからはずす。
212デフォルトの名無しさん:04/09/20 21:10:17
1001まで行ったら無視する。
213デフォルトの名無しさん:04/09/20 21:10:54
特定のスレを追うんならURLは変わらんだろう?
何を考えてるのかわからん。
214210:04/09/20 21:14:04
>>211

返信ありがとうございます.
巡回してるスレッドが1000に到達したら,新しいスレッドを自動的に巡回
できるようにしたいのですが,その部分はやはり手動でやらなくては
ならないでしょうか?
215デフォルトの名無しさん:04/09/20 21:15:37
>>214
ちょっと考えればわかるだろ
216デフォルトの名無しさん:04/09/20 21:18:59
>>214
2chには次スレを明示するシステムがないから無理
次スレ
http://pc5.2ch.net/test/read.cgi/tech/1095479831/
とかってパターンを検出して飛ばせばいいけど
そこが正しいとは限らないし。

>>215
お前は失せろ
217デフォルトの名無しさん:04/09/20 21:31:47
210とは違うんだが、時々鯖が変わったりするみたいだけどそれは問題ないの?
アホなこと言ってたらゴメソ
218デフォルトの名無しさん:04/09/20 21:56:48
>>217>>214に対しては完璧な方法は無理。

ただ、設定ファイルを簡潔にして管理しやすくすれば、鯖の移動くらいは設定
ファイルを置換一発で可能というくらいにはできるはず。鯖の移動なんてそん
な頻繁には起きないし、それでいいんでは?

次スレの検出は、自分もラスト30くらいのレスからパターン検出くらいしか思
いつかないな。
219デフォルトの名無しさん:04/09/20 22:01:58
>>217
2chブラウザはスレ一覧更新すると移転追いかけるから、
板移転時はスレ一覧(subject.txt)を取りにいくと30xと移転先のLocationを返されるんだと思う
Rubyマニュアルのnet/httpのところにリダイレクトへの対応について載ってるよ
220デフォルトの名無しさん:04/09/20 23:26:25
とりあえず Monazilla.org のドキュメントに目を通せ

ttp://www.monazilla.org/
221デフォルトの名無しさん:04/09/20 23:39:51
Rubyってコードが置いてあるディレクトリの取得ってできたっけ?
コードが置いてあるディレクトリ以外からスクリプトを実行したときも
コードが置いてあるディレクトリと同じ所にあるファイルをrequireとかしたいんだけど…
222デフォルトの名無しさん:04/09/20 23:53:31
>221

一応 __FILE__ つうのもあるけど、起動スクリプトからの相対パスみたいだね。
絶対パスを取るにはどうすりゃいいのかね?
223sai10sight ◆m7YeytgDFE :04/09/20 23:59:51
224デフォルトの名無しさん:04/09/21 00:03:23
>>222
サンクス。__FILE__から取得したパスを加工すれば何とかなりそうです。
mswin32なせいかコードが置いてある場所とは違うところからコードを実行すると
絶対パスが返ってくるようです。

>絶対パスを取るにはどうすりゃいいのかね?
File.expand_path(__FILE__)
はどう?
225デフォルトの名無しさん:04/09/21 00:09:46
>223
ダメでした @ mswin32 1.8.1

>224
>File.expand_path(__FILE__)
「カレントを移動していない」という前提が必要ですな。

p File.expand_path(__FILE__)  # => D:/.../test_testfield.rb"
FileUtils.cd( "lib" )
p File.expand_path(__FILE__)  # => D:/.../lib/test_testfield.rb"

#...は省略部分

といった感じ。
226shige:04/09/21 00:23:52
227デフォルトの名無しさん:04/09/21 00:26:02
Windowsのパスに厳密にマッチする正規表現ってどんなの?
228デフォルトの名無しさん:04/09/21 00:44:18
全部を正規表現では書かないか、厳密にはしないのがいいんじゃないか。

パスの途中の予約語の出現禁止とか、
ショートとロングとか、
全体の長さとか、
いろいろまんどくさそだ。
229デフォルトの名無しさん:04/09/21 12:50:37
MoonWolf氏に関しては、やってることは凄いと思うんだが、単に躁鬱病患者が
躁期に入っているだけにも見える。
もしそうなら、鬱期に入った途端に全てのプロジェクトが中断してしまうわけで、
うかつに氏のやってることに賛同できない。
せめて複数人でプロジェクトを立ち上げてくれればいいんだが、他人の協力は
拒んでいるようだし。
230デフォルトの名無しさん:04/09/21 13:24:16
Bash スクリプトを書いていて、文字列処理で難儀になっても、
そのまんま Bash で押し通すことがあるんや。

Ruby で書き直すのが難儀な部分。
(1) getopts と case を GetoptLong に書き直すこと。
全体的な構造の書き直しと、GetoptLong::REQUIRED_ARGUMENT 等の定数が難儀。
(2) -d, -w やらなんやらファイルテスト演算子を、
FileTest.directory?(), FileTest.writable?() に書き直すこと。
# _d, _w で代替したいちうわけや。
(3) -nt, -ot やらなんやらファイルテスト演算子相当メソッド。
FileTest.newer?(file1, file2), FileTest.older?(file1, file2)
231デフォルトの名無しさん:04/09/21 13:29:06
つうか、planet.ruby-lang.org作って海外のRuby hackersのblogを
集約してくれるとすごく欲しい。
232230:04/09/21 13:31:24
-- sample --
$ cat sample.sh
#!/usr/bin/bash
while getopts a:b:cde Opt; do
case "$Opt" in
a ) echo "a has $OPTARG";;
b ) echo "b has $OPTARG";;
c|d|e) echo "$Opt specified.";;
* ) exit 1;;
esac
done
[ $OPTIND -gt 1 ] && shift $((OPTIND-1))
[ -d "dir" ] && echo "dir"
[ "a.txt" -nt "b.txt" ] && echo "a.txt is newer than b.txt"
echo "end of the script.";
exit 0
-- end --
Bash から Ruby へ書き直しの指針みたいなものおまへんか。
require 'bash' とかすると、楽になるライブラリーおまへんか。
"option requires an argument -- b"
"illegal option -- x"
とかも自動で出て欲しい。
233デフォルトの名無しさん:04/09/21 13:33:25
FileTesterクラスと単項マイナス演算子でファイルテスト演算子を実現できないかな?
234デフォルトの名無しさん:04/09/21 13:33:35
require 'shugyo'
235230:04/09/21 15:45:39
Perl ―> Ruby 本はあるが、Bash ―> Ruby 本は無いな。
基本的なことやけど、var=~/bin を Ruby ではどう書くのかとか。

ワテは、Bash から離れたいとは思いまへん。
Ruby で OO しようとも思いまへん。
ただ、ちーとばかし難儀になりよったとき助けてくれればええのや。
それなのに Ruby ときたら・・・

ワテが楽できなければ、サーバーの Ruby ライブラリ更新するつもりはない。
いちいち、ドキュメント読まなければならへんし。
おっちゃんは忙しいや、調べさせるな。
# Ruby 自体は気に入っとる。
236デフォルトの名無しさん:04/09/21 16:09:21
> Perl ―> Ruby 本はあるが、Bash ―> Ruby 本は無いな。

そりゃ単にニーズが無いからでしょ。
237デフォルトの名無しさん:04/09/21 16:28:03
>230
文字列処理がマンドクセとこだけ、インラインでRubyスクリプト書いて
``で結果取ったら如何か。
238デフォルトの名無しさん:04/09/21 16:28:50
>>230
Bash と Ruby はターゲットが微妙に違うんだと思うけど。
シェルスクリプトで楽なところは、シェルスクリプトでやればいいし。
面倒なとこ(正規表現とか)だけワンライナーで Ruby に渡せばそれでいいんじゃ
ないかな、と思います。

というのが元の「そのまま Bash で押し通す」って意味? 無理して Ruby に
する必要はないと思う。

書いてあることは、やろうと思えばそんなに難しいことではないでしょう。た
とえば、def _d(v); FileTest.directory?(v); end のようなものを全部自作
しておくとか。一度作っておけば、あとは使い回せるしね。
239デフォルトの名無しさん:04/09/21 17:00:29
Object指向言語に向かって、調べるのが面倒と言われても……
と、思った。
240デフォルトの名無しさん:04/09/21 17:16:35
とりあえずSunのJava API Docsを見習ってほしい。

# もれはこないだWikiにちょっと貢献したぞ
241デフォルトの名無しさん:04/09/21 17:56:39
また話がループしそうな悪寒
242デフォルトの名無しさん:04/09/21 18:12:46
ライブラリとか書くとき、どの形式でドキュメント書きゃいいかわかんないんだよね。
243デフォルトの名無しさん:04/09/21 21:51:24
「Ruby で日々のシステム管理を楽にする本」
244デフォルトの名無しさん:04/09/21 22:56:37
カッコの入れ子に対応してマッチする正規表現って書けますか?

たとえば、Cの関数の第1引数の一覧を抜き出そうとして、/\w+\(([^)]+)[,)]/
と書くと $1 には第1引数が入りますが、
foo((x+y)+z)
と書くと、"(x+y"までしか入りません。

正規表現では無理!racc 使えって言われるような感じもするんですが、
racc だとCの文法全部 .y ファイルに書かないといけないので、
正規表現ですませられないかなぁ・・・と思ってるんです。
245デフォルトの名無しさん:04/09/21 23:12:22
絶対無理です。
246デフォルトの名無しさん:04/09/21 23:14:21
>>244
端的に言うと正規表現「だけ」で書くのは無理。文脈自由文法の世界だから。
ただ、 Perl では正規表現を独自拡張して、こういうのに対応しているね。

とはいえ、 racc/yacc を使えというのはさすがに大仰すぎると思う。

対処法1:
入れ子の数の限度が決まっているなら、その数まで対応するように書くことは
できる。たとえばその例題なら、/\w+\((.*?(\(.*?\))?.*?)\)/ とかね。

対処法2:
関数を自分で書く。開きカッコが来たら自分自身を呼んで、閉じカッコが来た
らそれまでスキャンした内容を返す関数を書くだけだから、簡単だと思う。
StringScanner とかあるし。

どうせ racc とかは、BNF(みたいなやつ)から関数を自動生成するためのプロ
グラムに過ぎないから、たいした手間じゃなきゃ自分で書く方が楽な場合もあ
る。
247デフォルトの名無しさん:04/09/22 01:06:14
おもいっきりスレ違いだけど、perlreの言語クラスって何に相当するの?
248デフォルトの名無しさん:04/09/22 01:09:07
L4+α
249デフォルトの名無しさん:04/09/22 01:50:22
>>230
Rubyはシェルスクリプトの代替に向いていないです。
Getopt::Stdやファイルテスト演算子もある Perl で良いと思う。
CPANもあるし、perldocもあるので調べる苦労が少ない。
250デフォルトの名無しさん:04/09/22 06:45:58
>CPANもあるし、perldocもあるので調べる苦労が少ない。
Rubyはプログラミングには向いていないです。
251デフォルトの名無しさん:04/09/22 07:46:22
>>246
>Perl では正規表現を独自拡張して
そうなんですか?おもしろそうですね。調べてみます。

対処法1だと、ちょっと汎用性におとるので、対処法2で
検討してみたいと思います。scan とか遅いんだろうなぁと
思ってましたが、StringScanner なんてのが
あるんですね。勉強になりました。
252デフォルトの名無しさん:04/09/22 15:00:47
正、負の数両方あり得る場合で負の数を認識する簡単な方法ってある?

i = 0xFFFFFFa8 #=>-88
i = 88       #=>88
253デフォルトの名無しさん:04/09/22 15:26:39
>>245=>>250
粘着乙
254デフォルトの名無しさん:04/09/22 18:36:30
ふと思ったんだけど、オフィシャルのリファレンスマニュアルに
載っているサンプルコードのライセンスってどうなっているんだ?

http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%C7%DB%C9%DB%BE%F2%B7%EF
を見ても、コード自体の扱いについては書いていないみたいだし…
255デフォルトの名無しさん:04/09/22 18:42:20
>>254
コード自体も同じ条件じゃないの?
256デフォルトの名無しさん:04/09/22 18:47:29
>>252
何がしたいのかわからないので、もっと詳しく。

とりあえず
 i = 0xFFFFFFa8 #=> 4294967208
だよ。
257252:04/09/22 20:06:37
>>256
スマン
符号の向きと絶対値が欲しい。

一応、
i = 0xFFFFFFa8
if i > 0x7FFFFFFF then
 i = 0xFFFFFFFF - biHeight + 1
 sign = 'minus'
else
 sign= 'plus'
end

とかやれば実現できるけどイマイチスマートじゃないので…
258デフォルトの名無しさん:04/09/22 20:17:27
>>257
さっぱり言ってる意味わかんねー。

[0xffffffa8].pack("I").unpack("i")[0]
259258:04/09/22 20:37:17
>>257
絶対値は Numeric#abs で取れるからいいとして、
符号の方は、直球だけどこんな感じかなあ。

class Numeric
def sign
(self > 0) ? :plus : ((self < 0) ? :minus : :zero)
end
end

これで >>252 の答えになってるか全く自信ないけど。
260デフォルトの名無しさん:04/09/22 22:24:47
Rubyでシェルプログラミングの話題が出てるのに、
「Rubyシェルプログラミング -irb&irbsh徹底活用-」
という本の話題が、全く出ないことにワラタ。
261デフォルトの名無しさん:04/09/22 22:41:19
252は、Rubyでは巨大な数が自動的に Bignum になるのを知らないんじゃないの?
i = 0xFFFFFFa8
i.class # => Bignum

Ruby で普通にやってるかぎり、一番上のビットが立っちゃって負数になるこ
とはないよ。 >>258 みたいな例はあるか。

>>260 irbsh ってスクリプト書けるの?
262デフォルトの名無しさん:04/09/22 23:42:03
いやでも、
Rubyで挫折って、わかる気がするなあ。
ずっと意味不明なバージョンアップ追ってたら頭おかしくなりそうだし、
何を作ってもとろい速度のスクリプト眺めてると鬱になりそうじゃん?
かといって思想のまるでない開発ML覗いても、PerlとPythonの猿真似しか話題ないし、
こんなの与えても娯楽を常に要求する一般人は見向きもしない。
そもそもUNIXでしか見掛けない、哀れな言語、というのが一般人の見解だし。
そうそう、最近CVSあぼーんで言語の信用かなり悪くしたよね。
この事件でRubyはビジネスで成功できないことがまた証明されてしまったわけだ。
昔からRubyは関係者同士で常に足を引っ張って成長しない。
お金の匂いしないよね。全然。
そんな言語だから、挫折が常態であるのは必然なんだと思う。
263デフォルトの名無しさん:04/09/23 00:16:06
> 仕事向けならDBとWeb用フレームワークだろうけど、本がないな。

『Ruby-DBウェブデザイン』
http://www.cqpub.co.jp/hanbai/books/18/18681.htm

すいません、他薦ですが。
264デフォルトの名無しさん:04/09/23 00:20:50
265デフォルトの名無しさん:04/09/23 00:24:07
ほらきた。
Ruby使いって貶されると、
すぐ言葉少なになるよね。
もう貶されるのに慣れちゃった?

ちょっと、心をおちつけて。
Rubyを知らなかったあの頃を思い出してごらん。
あの頃の君達は希望に満ち溢れていたよね。
そう、今まで君達は、とっても悪い夢を見ていたんだ。
Rubyなんか捨てて、あの頃見ていた希望を取り戻そうよ!

266デフォルトの名無しさん:04/09/23 00:24:26
>>261
じゃあ -1 を16進表現にしたらどうなるかと思ったら、

irb(main):001:0> "%x"%-1
=> "..f"

fが無限に続いてるってことか?
267デフォルトの名無しさん:04/09/23 00:28:49
>>253
いや、>>245はまともな意見いってるとおもうけどな
268デフォルトの名無しさん:04/09/23 00:52:27
>>267
それは失礼。では以下のように訂正

>>250=>>262=>>265
粘着乙
269デフォルトの名無しさん:04/09/23 01:02:08
>>265
Ruby ユーザには厨が多いというが、
こういう変な粘着も多いな。
270デフォルトの名無しさん:04/09/23 01:03:22
rubyyyyyyyyyyyyyyyyyyyyyyyy is No1
271デフォルトの名無しさん:04/09/23 01:20:33
272デフォルトの名無しさん:04/09/23 01:23:50
そういや、Ruby2.0の開発ってどこで議論しているの?


>265
>Rubyを知らなかったあの頃を思い出してごらん。

あまり変わらないなぁ。
Rubyを知らなかったころは……DelphiでプロパティLove/C++でTemplate Loveだったしなぁ

>267
気でも狂ったか?
>270
そんなこと書いているヒマあったらコード&ドキュメント書け。
273デフォルトの名無しさん:04/09/23 01:29:02
> そういや、Ruby2.0の開発ってどこで議論しているの?
matzの脳内
274デフォルトの名無しさん:04/09/23 01:30:29
Ruby教本部
275デフォルトの名無しさん:04/09/23 01:39:05
やべぇ、松江に辿り着く前に鳥取の砂地獄にのまれちまう。
276デフォルトの名無しさん:04/09/23 02:14:40
>>275
そのまま来んでください。
277デフォルトの名無しさん:04/09/23 02:59:46
どういう経路で松江に行くんだよっ!
278デフォルトの名無しさん:04/09/23 03:12:40
巡礼の途中で鳴門の渦潮にのまれて、気がついたときには
Debian教の信者になっていました。
279デフォルトの名無しさん:04/09/23 10:44:49
まつもとさんの9/21の日記って、どこのこと?
280デフォルトの名無しさん:04/09/23 10:58:30
ここのことだろ。
お前ら態度悪すぎだよ。しかも個々のレスの質が低い。
ネットワークトラフィックを浪費することを自覚して反省しろ。
281デフォルトの名無しさん:04/09/23 13:17:58
>>280の言葉に「私は正しい」とか「管理する立場だから」とかいう慢心があった
ことは否定できない。間違っていたのは>>280の方だ。あやまれ。
282デフォルトの名無しさん:04/09/23 13:37:38
ゴメンチャイ
283:04/09/23 14:03:06
Programming Rubyの"Ruby.new"の章の翻訳がようやっと終わった。
http://www.fiercewinds.net/programming/Ruby/ProgrammingRuby-0.4/Readme.html

ヤッテラレマセン。誰か助けて(除くプログラミングRuby読んだことのある人)

"Classes, Objects, and Variables"は1月後ぐらいかな……チュートリアル終了するの
いつになるかなぁ……
284デフォルトの名無しさん:04/09/23 14:12:20
wiki ベースにでもしてくれれば手伝うよ。
285デフォルトの名無しさん:04/09/23 14:21:52
Ruby初学者(しかもプログラミング初体験)です。

>>283
わたしはなにもできないんですけれど、
完成を期待してます。
がんばってください!

# 声援だけならだれでもできるって...とほほ。
286デフォルトの名無しさん:04/09/23 14:39:41
>>283
287デフォルトの名無しさん:04/09/23 21:02:40
MoonWolfタソが早くも息切れ気味のようです。
288デフォルトの名無しさん:04/09/23 21:08:37
>>287
>>229 の予言が早くも的中したわけだが。
289:04/09/23 21:32:37
>284
wikiベースも考えたけど、日本語版の存在がなぁ……
アレはOPLじゃなさそうだから、翻訳に混在すると不味いです。
誰が翻訳したかわかるようにしないとね。一応

290デフォルトの名無しさん:04/09/24 01:53:25
もともと金が絡まない話なんだから中断も予測範囲内。
291デフォルトの名無しさん:04/09/24 02:16:18
なんか「うわ、釣れてるw」とか言ってるんですよ。

「反応少なすぎ」って、どんな反応があるもんだと期待してたんですかね。
292デフォルトの名無しさん:04/09/24 04:25:34
Ruby/Tkってかなりお手軽ですね。

なんかRubyと相性いいかも。
293デフォルトの名無しさん:04/09/24 09:10:04
TK入れるのマンドクサ
294デフォルトの名無しさん:04/09/24 09:15:32
Ruby/GTK2 のドキュメント揃えて欲すい、英語で良いから。
大きな変更点である、TreeView周りのマヌアルが欠けてる……
295デフォルトの名無しさん:04/09/24 09:15:32
畑耕すのにつまようじ使うようなもんだな>RubyでGUI
296デフォルトの名無しさん:04/09/24 09:55:10
前の方でwxRubyはRubyっぽく書けないという話が出ていたけど、
他のGUIツールキットはどんな感じですか?
297デフォルトの名無しさん:04/09/24 11:15:17
>>292
Tkってかなりでかくない?
インストールもコピーして終わりってわけにもいかないし
298デフォルトの名無しさん:04/09/24 11:50:12
というかTclはイラネ。
でも世間ではTcl捨ててる実装の方が少数派なんだよな。
299デフォルトの名無しさん:04/09/24 12:12:43
net/httpでmultipart/form-dataなものを送信できますか?
300L ◆eruX6eXBcA :04/09/24 13:34:33
>>299
Part7で出てる。
googleキャッシュにしか残ってないようだ。
301デフォルトの名無しさん:04/09/24 13:52:39
505 名前:501[sage] 投稿日:04/02/18 19:58
うーん、こんな感じかなー。

filename = 'hoge.txt'
str = File.open('hoge.txt') { |f| f.read }
name = 'upfile'
cont_type = "text/html"
boundary = 'foooobarrrbazzz'

### データ
data = <<END
--#{boundary}
Content-Disposition: form-data; name="#{name}"; filename="#{filename}"
Content-Type: #{cont_type}

#{str}

--#{boundary}--
END

### ヘッダー
header = {
'Content-Length' => data.length.to_s,
'Content-Type' => "multipart/form-data; boundary=#{boundary}",
}
require 'net/http'
http = Net::HTTP.new('192.168.0.1', 80)
resp_header, resp_body = http.post('/cgi-bin/hoge.cgi', data, header)

もうちょっとでうまくいきそう。でもわからん。
302デフォルトの名無しさん:04/09/24 13:54:21
508 名前:501[sage] 投稿日:04/02/18 21:41
>>505
"\r" をいれたらうまくいった。

### データ
data = <<END
--#{boundary}\r
Content-Disposition: form-data; name="#{name}"; filename="#{filename}"\r
Content-Type: #{cont_type}\r
\r
#{str}
\r
--#{boundary}--\r
END
303デフォルトの名無しさん:04/09/24 14:05:32
次のようにすると core を吐きます。
304デフォルトの名無しさん:04/09/24 14:13:32
$ ruby -e 'puts "core"'
305デフォルトの名無しさん:04/09/24 14:25:27
>>303
浴びるほど酒を飲む。
306デフォルトの名無しさん:04/09/24 15:23:32
>>300-302

ありがとうございます。
参考になりました。
307デフォルトの名無しさん:04/09/24 15:54:53
>305
内臓まで吐いたらあ〜るになってしまう。
308デフォルトの名無しさん:04/09/24 18:39:21
文字列を連結するのに配列使うよりString#concatの方がかなり速いけどもっと速い方法ってある?
309デフォルトの名無しさん:04/09/24 19:13:44
310308:04/09/24 19:35:31
>>309
thx.
それ読んだ上でもちっと速い方法はなにかないかなと…
無茶言ってスマソ

ある程度でかいデータを処理しようとするとちょっとの差がもろに
実行時間に響くんだよな…_| ̄|○
311デフォルトの名無しさん:04/09/24 19:39:30
>310
これ言ったらおしまいかもだけど
それならC/C++で書いた方が……
312308:04/09/24 19:59:32
>>311
やっぱそうか…C/C++でやれば一瞬で終わることはわかっているんだけど
複数のプラットフォームで動かすことを考えているのでC/C++の使用はちょっと難しかったり…

とりあえず地道に詰めてみるよ…

nByteごとに分割処理って配列にしてからeachするよりもwhileとString#self[nth, len]の
方がかなり速いのね…
313デフォルトの名無しさん:04/09/24 22:11:05
>>312
速度が要求される部分だけC/C++で拡張モジュール書くというのはダメ?
というか移植性で問題になるところって何かあるの?
314デフォルトの名無しさん:04/09/25 01:09:16
>308
プラットフォームはなに?
Cygwinだったらmswinに変更するだけで随分違うよ
315デフォルトの名無しさん:04/09/25 01:24:22
Ruby/Qt,QtRubyのプログラムを
windows上で開発したいんですけど
方法ありますか?
316デフォルトの名無しさん:04/09/25 01:26:21
ttp://uema2.s8.xrea.com/ruby-mswince/
これ使えているだれかいる?
317308:04/09/25 01:52:35
>>313
独自にRuby以外で拡張モジュールを作ってしまうと実行する側で
拡張モジュールのコンパイルを求めることになってしまうから…
配布用のスクリプトなのでできればRubyのみにしたいんです。

>>314
mswinです。
318デフォルトの名無しさん:04/09/25 02:34:21
いちおう努力はされてるみたいだけどね。

$ /usr/bin/time ruby168 -e 's = "" ; 1000000.times{s.concat("a")}'
1.41 real 1.26 user 0.12 sys
$ /usr/bin/time ruby181 -e 's = "" ; 1000000.times{s.concat("a")}'
0.79 real 0.77 user 0.00 sys
319デフォルトの名無しさん:04/09/25 05:10:46
% /usr/bin/time ruby -ve 's = ""; 1000000.times{s.concat "a"}'
ruby 1.6.7 (2002-03-19) [i386-linux]
5.01user 0.60system 0:05.60elapsed 100%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (221major+397minor)pagefaults 0swaps

% /usr/bin/time ruby-1.8p2 -ve 's = ""; 1000000.times{s.concat "a"}'
ruby 1.8.2 (2004-07-29) [i686-linux]
4.27user 0.02system 0:04.29elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (228major+389minor)pagefaults 0swaps
320デフォルトの名無しさん:04/09/25 10:53:51
Emacs系エディタをお使いの方へ

(setq-default indent-tabs-mode nil) を設定しましょう。
これを設定しないと、スペースとタブが混ざってしまいます。
321デフォルトの名無しさん:04/09/25 11:13:08
混ざってるとなんかまずい事でもあるの?
322デフォルトの名無しさん:04/09/25 11:17:25
他のエディタで表示が崩れるから。
個人的にはもう一歩進んでPerlを使うことを推奨したい。
これによって多くの人にとって可読性・保守性が大幅に向上するからね。
323デフォルトの名無しさん:04/09/25 11:18:01
はいはい
324デフォルトの名無しさん:04/09/25 12:41:19
>>322
2〜3行目に関しては、
みんな十分知った上で Ruby を使ってるんですよっ ☆
325デフォルトの名無しさん:04/09/25 12:57:48
>>322
2行目:Rubyを戻したらPerlだよな…進ませたら何になるんだろう?
3行目:Perlより読みやすいからRuby使い出しました!
326デフォルトの名無しさん:04/09/25 13:24:48
>>322
他のエディタで表示が崩れるなら、
個人的にはもう一歩進んでEmacsを使うことを推奨したい。
これによって多くの人にとって可読性・保守性が大幅に向上するからね。
327デフォルトの名無しさん:04/09/25 13:38:57
俺ならモードとかタブ幅の設定とかはソースに書くけど。
328デフォルトの名無しさん:04/09/25 13:44:35
>>325
groovy とかかね。
329デフォルトの名無しさん:04/09/25 13:45:01
330デフォルトの名無しさん:04/09/25 14:55:20
そうだな。いろんなプロジェクトをいじる場合はスタイル決めうちじゃマズーだろ。
emacs なら file variable 推奨。vimにも同様の機構はありそうだ。
331デフォルトの名無しさん:04/09/25 15:42:52
タブがどうのと粘着してる奴って
今時タブを態々8以外にちまちま指定してるわけ?
もしかしてviとかで自分でちまちまハードタブつかってインデントしてるとか?
332デフォルトの名無しさん:04/09/25 16:31:04
HSPネタ以来の盛り上がりだな
333デフォルトの名無しさん:04/09/25 16:39:27
タブ幅は3だろー。
334デフォルトの名無しさん:04/09/25 16:46:15
きっとプロポーショナルフォントをつかってるんだろうな
335デフォルトの名無しさん:04/09/25 17:27:03
>>333
tDiaryまわりのひと?
336デフォルトの名無しさん:04/09/25 19:30:34
>>335
shugo さんも以前 3タブ (SPC 3 つ?) だったような。
337デフォルトの名無しさん:04/09/26 02:11:27
331ってなんかかわいそう。
338デフォルトの名無しさん:04/09/26 02:30:54
>308
連結だけならarray.joinのほうが速いかも。
339デフォルトの名無しさん:04/09/26 02:43:28
わたなべひろふみさんて何歳ぐらいのかたのですか?
340デフォルトの名無しさん:04/09/26 02:52:07
transamiさんて何歳くらいのかたですか?
341292:04/09/26 03:00:37
レスがついていたので、いちおう。

Tkってそんなインストール面倒なのかな?
うちで使ってるのは、FreeBSD と Windows だけど
FreeBSDはPorts一発で、コンパイル時間もほとんどかからなかったし、
Windowsの場合だとActiveTclとかいうのでインストールした。
インストールは確かに手軽じゃないけど、書き方が手軽ってこと。

そりゃ、ウィジェットとか少ないのかもしれないけど、
逆に全部、把握できるくらいだから、ちょうどいいかも。
それに、書く行数が少ない気がする。初心者向きかも。

感じ的には、Zope(Pyだけど)とかよりtDiaryが
使ってて気持ちいいって感じ。(うまく言えないけど)
342デフォルトの名無しさん:04/09/26 03:02:54
LISP使い始めてからタブ幅2ですが。
ただのスペースと区別が付けばいいので。
343デフォルトの名無しさん:04/09/26 03:35:04
Zopeとtdiaryを比較するのはいかがなものかと。
あまりに違いすぎて(ry
344デフォルトの名無しさん:04/09/26 03:38:42
>>342
複数人で開発とかしたことある?
345デフォルトの名無しさん:04/09/26 03:40:23
俺もタブ幅2。GNU Coding Standardsの影響もあるけど、そもそも幅を多めに
取るのが好きじゃないので。でも世間では4か8が多いんだろうな。
346デフォルトの名無しさん:04/09/26 03:47:36
>>343
禿同。
プラットフォームそのものと一Webアプリを同列に比較するのは乱暴杉。
347デフォルトの名無しさん:04/09/26 09:07:52
>>331
おれは331に同意だな。
Tab幅を8以外にする理由が分からんし、Tab幅を8にした環境が用意できない理由もわからん。
「Tabが8じゃない人が読むとインデントが崩れるからTabを使うな」っていわれたことがあるんだけど、
なんでそんな設定をしているやつのためにわざわざこっちが合わせなきゃならんのか。
思わず「じゃあTabを8にしてから読んでください」と捨て台詞をいうところだった。

Tab幅とは別に、インデント幅は2でも4でも何でもいいけど。
348デフォルトの名無しさん:04/09/26 09:18:43
タブを使わない奴は抽象度が低い
349デフォルトの名無しさん:04/09/26 10:50:22
おれもTAB=2だけど
かなり読みやすいよ
最近長い名前扱うから特に
350デフォルトの名無しさん:04/09/26 11:49:27
インデントはブロックレベルだけで行なわれるわけではない
351デフォルトの名無しさん:04/09/26 11:52:36
質問です。
Arrayの中に入れるオブジェクトをFixnumとか特定の型のオブジェクトに
限定することってできますか?(他のを入れようとすると例外を投げるとか)

継承して[]=とかのメソッドを全部オーバーライドすると面倒だし。
352デフォルトの名無しさん:04/09/26 12:04:26
>351
できない。
353デフォルトの名無しさん:04/09/26 12:11:04
これは有名なRubyの限界
354351:04/09/26 12:23:44
>>352,353
ありがとー
355デフォルトの名無しさん:04/09/26 12:27:19
>>347
あなたがインデント幅は2でも4でもなんでもいいと思っているように、世の中には、
タブ幅は2,4,8のどれでもいいと思っている人もいるのだよ。
356デフォルトの名無しさん:04/09/26 12:42:25
>>351
継承はしないで、つかうメソッドだけ委譲したほうがいいじゃない?
357デフォルトの名無しさん:04/09/26 12:58:18
無理やり実現する必要はないだろ
元々そういうもんなんだから
358デフォルトの名無しさん:04/09/26 13:14:42
何ら手を加えずに機能を増やすってのが無茶だと思うが。
forwatable を改造して委譲先のメソッドを呼ぶときに
型チェックするようにしたら?
359デフォルトの名無しさん:04/09/26 13:56:05
タブ幅の話がまだ続いているようですが、そういえばRuby用の
ソースコード整形ツールって何かあります?
360デフォルトの名無しさん:04/09/26 14:40:59
map! みたいに引数の型がチェックできないこともあるんだから。
たいていの場合は必要なメソッドだけ定義するのがいいと思うぞ。
数値とそれ以外みたいな分け方なら NArray というのもある。
361デフォルトの名無しさん:04/09/26 14:49:35
配列の要素の型を指定できなくて困ったことってないんだけど、どんなときに困る?
それとも気分の問題?
362デフォルトの名無しさん:04/09/26 14:51:34
本気でわからないならただのアホだな
363デフォルトの名無しさん:04/09/26 15:55:02
使う側が呼び出しの規約を守るべきだと思うけどね。
型を限定すると Array の強みが失われるんだし。
もし型を限定したいならそういうクラスを作ればいいだけかと。
364デフォルトの名無しさん:04/09/26 17:26:25
>>355
はーい、質問です。
・「タブ幅は2,4,8のどれでもいい」なら、8でもいいわけだよね?なぜわざわざ2や4に設定するの?
・「タブ幅は2,4,8のどれでもいい」といいながら、なぜ他人にはタブじゃなくてスペースを使ってインデントするよう言ってくるの?どれでもいいなら、気にしないでいいじゃん。

純粋にね、タブ幅を8以外に設定する理由がほんとにわからないの。355のような「8でなくてもいい」というのが理由とは思えない。
365デフォルトの名無しさん:04/09/26 17:51:34
ルビ厨ってアホばっかでつね
366デフォルトの名無しさん:04/09/26 17:53:23
動的な型と静的な型にはそれぞれ特長/欠点があるからね。

Arrayは汎用目的で作られているから、型チェックの機構を盛り込まなかったんじゃない?

それに、
・オブジェクトが指定したメッセージを受け付ける
・メッセージを渡した後に、正しい結果を返す
だったら、オブジェクトを渡される側はオブジェクトの中身を気にする必要ないし。

まあ、やるんだったらAdapter パターンでも使って型チェックを追加かねぇ
367デフォルトの名無しさん:04/09/26 17:57:50
実行時の型チェックって
アスペクト指向じゃ無理なのかね
特異アスペクトなんてあるのか知らんけど
368デフォルトの名無しさん:04/09/26 18:09:16
はーい、355じゃないけど回答でーす。

>「タブ幅は2,4,8のどれでもいい」なら、8でもいいわけだよね?なぜわざわざ2や4に設定するの?

プログラムじゃない文章とか読む/書くときに便利だからです。
Outlook Expressとかタブ幅4だしね。
#Winは4が一般的じゃない?


・「タブ幅は2,4,8のどれでもいい」といいながら、〜〜

インデントするときにTab+Spaceで行いやがるクソエディタが存在するからです。
Emacsなんかもそうですな。

それに、↑の話にも関連するけど、Outlook Express使うようなユーザーに
「タブ幅8文字にしてくれ」というよりも、プログラマに「スペース使ってくれ」と
言ったほうが納得してもらいやすいから。
369デフォルトの名無しさん:04/09/26 18:15:48
タブ/スペースとか幅とかEmacs/ViとかRubyと関係ない.
他にスレ立ててやってほしい.
370デフォルトの名無しさん:04/09/26 18:29:54
> プログラムじゃない文章とか読む/書くときに便利だからです。
> Outlook Expressとかタブ幅4だしね。
> #Winは4が一般的じゃない?

これは「タブ幅は2,4,8のどれでもいい」ってのと矛盾してるね。

> インデントするときにTab+Spaceで行いやがるクソエディタが存在するからです。
> Emacsなんかもそうですな。

タブ幅とインデント幅をごっちゃにして考えてるね。
371デフォルトの名無しさん:04/09/26 18:31:51
>>368
なぜここでOutlookがでてくるのかわからん。Outlookでプログラム書くわけじゃないだろ。

>#Winは4が一般的じゃない?
メモ帳でもタブは8だろ。

>プログラムじゃない文章とか読む/書くときに便利だから
じゃあプログラムとそれ以外で設定を自動的にかえるようにすればいいじゃん。
モードごとにタブ幅を設定するなんて簡単だろ。
その程度のことを自分でやらずに、他人に設定を強要するのはいかがなものか。
ていうか、ほんとにこんなことが理由なのか?もっと説得力のある理由はないのか?
372デフォルトの名無しさん:04/09/26 18:35:04
>>359はスルーですか、そうですか。
373デフォルトの名無しさん:04/09/26 18:35:46
>>372
せっかくripperが入ったんだから、誰か作って
374デフォルトの名無しさん:04/09/26 18:38:11
別に、タブでインデントするなとは言わない。

タブでインデントするならタブだけを使い、
タブとスペースを混ぜるな、ということ。
375デフォルトの名無しさん:04/09/26 18:38:53
ようするにema糞厨は氏ねと
376デフォルトの名無しさん:04/09/26 18:41:27
>>373
え、るbyて整形ツールみたいなのないの?
るbyスクリプトで書けないの?
ちょっと、かっこわるいですよ?
377デフォルトの名無しさん:04/09/26 18:41:39
ようするに matz 氏ねと?
378デフォルトの名無しさん:04/09/26 19:00:13
ようするにあれだろ、LispじゃなくてRubyで拡張するEmacsもどき作ろうぜって話だろ?
とりあえず名前はRemacsでいい?
379デフォルトの名無しさん:04/09/26 19:31:52
前にエイプリルフールネタか何かであったな。
380368:04/09/26 19:32:01
>371
ホントの理由は >374 だね。
インデントについてはエディタごとに挙動が異なるので、やりづらいったらありゃしない。
最近はタブ文字をスペース8コに置き換えてからハクるけどな。

Emacs(のデフォルト)はほんとにクソですな。そのくせGNUコーディング規約のインデントは
8文字じゃなかったりするし……


>じゃあプログラムとそれ以外で設定を自動的にかえるようにすればいいじゃん。

全てのエディタでファイル種類ごとにインデントとか設定できる訳じゃ無いんでな。
381デフォルトの名無しさん:04/09/26 19:36:00
>>378
それはそれで面白そうだけど、整形ツールって言ったら普通はC/C++で
言うところのGNU indentとかastyleのようなものを指すと思う。
382デフォルトの名無しさん:04/09/26 19:36:14
>最近はタブ文字をスペース8コに置き換えてから
お前も普通に糞だな
383デフォルトの名無しさん:04/09/26 19:43:48
本来ならmatzの特権でコーディングスタンダードを定めるべきなんだが
本人からして変態エディタ愛好家だからそれも無理なんだよな。不幸なことに。
384デフォルトの名無しさん:04/09/26 19:46:29
むしろスレ違いな議論にいつまでも粘着してる連中をスペースで置換したい。
385デフォルトの名無しさん:04/09/26 19:49:22
>>383
コーディング規約ならあるよ。matzさんじゃないけど。
http://shugo.net/ruby-codeconv/codeconv.html
386デフォルトの名無しさん:04/09/26 19:50:15
>>364
すげー使い易くなった
387デフォルトの名無しさん:04/09/26 19:53:15
>>385
作者以外が決めたものなんてなんの価値なんてないだろ
388デフォルトの名無しさん:04/09/26 20:39:20
CなんかK&R以外のコーディング規約がいくつもありますが何か?
389デフォルトの名無しさん:04/09/26 20:46:08
>>380
>全てのエディタでファイル種類ごとにインデントとか設定できる訳じゃ無いんでな。
おいおい、素人ユーザーじゃあるまいし、プログラマがそんなこというかね。
プログラマなら「ファイル種類ごとにインデントとか設定」できるエディタを使うべきだろ。
この言い訳を聞いていると、「エディタがないとインデントできないからLispやSchemeは使わない」とか
「すべてのブラウザで使えるわけじゃないからCSSは使わない」というのと同じだな。
390デフォルトの名無しさん:04/09/26 21:00:08
Rubyは素人が楽しくプログラミングがコンセプトじゃないのか?
391デフォルトの名無しさん:04/09/26 21:10:13
それはHSPです。
392368:04/09/26 21:11:37
>389
>おいおい、素人ユーザーじゃあるまいし、プログラマがそんなこというかね。

( ゜Д゜)

 素人はRuby使うな……と。ふうン。

じゃあ逆に聞いてみるけど、タブ文字を使うメリットって何?
特に(スペースと混在させてまで)使うメリットは無いと思うんだけど。
「Emacsのデフォルトだから」っつうのはなしよ。

それに、いくつかのコーディングスタイルじゃ「タブを使うな」つうてるのにね
ttp://website-beta.mozilla.or.jp/hacking/mozilla-style-guide.html
http://community.borland.com/article/0,1410,10280,00.html


> 374の言う通り、タブだけ/スペースだけつうのならオレもOKよ
FreeBSDのコーディングスタイルもも、タブ(だけ)でインデントするみたいだし。
ttp://www.freebsd.org/cgi/man.cgi?query=style&apropos=0&sektion=0&manpath=FreeBSD+4.8-RELEASE&format=html


393368:04/09/26 21:21:18
……解った!!>389 は他人にコードを見られる前提でプログラムしていないな。
確かにそれなら「タブ幅を8文字にしているやつは気でも狂っているんじゃない?」て
言っても別に害は無いわな。
394368:04/09/26 21:34:29
ごめん
×タブ幅を8文字にしているやつは
○タブ幅を8文字にしていないやつは
395デフォルトの名無しさん:04/09/26 21:45:47
オプソは混沌としてるのが好きなんでしょ。
くだらない字面で自己主張するのが好きなんでしょ。
なんでもばらばらで非効率的なのが好きなんでしょ。
わけのわかんない理屈こねて正当化する必要はないんだよ。
396デフォルトの名無しさん:04/09/26 21:50:12
>>395
あなたといっしょにしないでください。
397デフォルトの名無しさん:04/09/26 21:58:22
それにしてもRubyで作られた有料ソフトが
世間にでてこねーな、ようするに使い物に
ならんということだ
www.onitama.tv/product.html
にあるHSP製の有料ソフトみたいな
ハイレベルなのはひとつもない
398デフォルトの名無しさん:04/09/26 22:06:32
むしろHSPでB2Bのサービスしてるやつがいるのかが知りたいところだ。
399デフォルトの名無しさん:04/09/26 22:15:23
ActiveStateがRubyで商売はじめてくれると嬉しい。
400デフォルトの名無しさん:04/09/26 22:18:30
>397
ホントにHSPで書いているのかな?プログラムのほとんどがDLLだったりして……

C++ & 適当なフレームワークの方がいいと思うんだけど
401デフォルトの名無しさん:04/09/26 22:23:54
これは超極秘裏情報なんで口外して欲しくはないんだが
次世代言語としてHSPがLiveDoorに買収されることになったんだよ。
402デフォルトの名無しさん:04/09/26 22:25:32
HSPに代わる燃料としてTAB幅が出現するも、
既にRubyスレ住人はHSPについて十分な知識があり即レス可能であったため、
TAB幅にはHSPよりも多くの利点があるにも関わらず、
RubyスレはHSPを燃料として使いつづけた。

これは、PerlとRubyの関係にも当てはまる。
デファクトスタンダードのものと置き換わるには、かなり大きな利点が無ければいけない。
なぜなら、デファクトスタンダードであることは、とても大きな利点であるからだ。
403デフォルトの名無しさん:04/09/26 22:39:00
>>401-402
妻蘭
404デフォルトの名無しさん:04/09/26 22:47:48
>>400
過去のHSPスレにコミケで入手した奴のレスがあったが、
特製DLLを少し使ってるそうだ。
おにたま氏の方がまつもと氏よりもハッカーとしての才能が
あるんだろうが、なにせヲタだからな〜。
405デフォルトの名無しさん:04/09/26 22:54:08
ヤバイ。Rubyヤバイ。まじでヤバイよ、マジヤバイ。
Rubyヤバイ。
まず遅い。もう遅いなんてもんじゃない。超遅い。
遅いとかっても
「VBと同じくらい?」
とか、もう、そういうレベルじゃない。
何しろダイナミック。スゲェ!なんかコンパイラとか無いの。最適化とかJITとかを超越してる。動的だし超遅い。
しかもモジュールはC言語で作るらしい。ヤバイよ、C言語だよ。
だって普通は言語自身で作成するじゃん。だって自分の書いたソースがそのままモジュールにならなかったら困るじゃん。いまどきC言語でデバッグとか困るっしょ。
書いたソースが増えてって、まとまった機能を抽出できそうなのに、モジュール化するために1からC言語に書き換えるとか泣くっしょ。
だから他の言語は自身で作成できる。話のわかるヤツだ。
けどRubyはヤバイ。そんなの気にしない。C言語頼りまくり。Ruby使ってるんだかC言語使ってるんだかよくわかんないくらい二刀流。ヤバすぎ。
モジュールはC言語で作るっていたけど、もしかしたらPerlでプリプロセスするかもしんない。でもPerlって事にすると
「じゃあ、Ruby使ってる意味ってナニよ?」
って事になるし、それは誰もわからない。ヤバイ。誰にも分からないなんて凄すぎる。
あと超寒い。HSPと競ってる。タブ幅で言うと8。ヤバイ。寒すぎ。バナナで釘打つ暇もなく死ぬ。怖い。
それに超役立たずで何もできない。案件超ガラガラ。それに超のんびり。ロハとか平気で出てくる。ロハて。小学生でも言わねぇよ、最近。
なんつってもRubyは電波が凄い。荒らしとか平気だし。
うちらなんて電波とかたかだかMLで出てきただけで上手く扱えないからアクセス規制したり、放置してみたり、検閲削除したりするのに、
Rubyは全然平気。電波を電波のまま扱ってる。凄い。ヤバイ。
とにかく貴様ら、Rubyのヤバさをもっと知るべきだと思います。
そんなヤバイRubyスレに書き込んでる俺とか超偉い。もっとがんばれ。超がんばれ
406デフォルトの名無しさん:04/09/26 23:01:57
藻前ら釣られすぎ
407デフォルトの名無しさん:04/09/26 23:04:47
税金使ってんだからもっとマシなもんにしろというのが本音かな
408デフォルトの名無しさん:04/09/26 23:08:30
暇を持てあましている>>405、いつもいつも粘着乙
409デフォルトの名無しさん:04/09/26 23:11:13
>405

>何しろダイナミック。スゲェ!なんかコンパイラとか無いの。
動的<->静的 のどっちに比重を置くか、だよね。
Rubyの場合は極端に動的にしちまっているから、その代償としてコンパイラとか
最適化が死ぬほど難しいんだけど。
ただ、遅さの大部分がGCのせいらしいから、世代別GCとか参照カウンタGCとかに
すればある程度は良くなると思うけどね……

>モジュールはC言語
拡張モジュールのこと?普通のモジュール(Module, Class)はRubyで書けるけど……

>荒らしとか平気だし
まあねぇ。
>俺とか超偉い
でもさ、もうちょっと情報の精度と密度を上げようよ。
410デフォルトの名無しさん:04/09/26 23:15:26
>>397
RPGツクールが使っているんじゃなかったっけ?

それと、俺は業務で ruby を使ってプログラムを作り、客先に納入しているよ。
(一部Cを使っているけど)
411デフォルトの名無しさん:04/09/26 23:15:37
>>409
そんな、テンプレレスにマジレスせんでも・・・
412デフォルトの名無しさん:04/09/26 23:19:54
>>380
> >371
> ホントの理由は >374 だね。

なら、最初から論点をそこに絞って主張しなよ。わかりにくいなぁ。
わざと煽ってるんだろうけどさ。

まあ、気持ちは良くわかったので、少なくとも今後俺が書くスクリプトは
タブとスペースを混在させないように気をつけるよ。
413デフォルトの名無しさん:04/09/26 23:23:59
410の会社に転職したいと思った香具師の数→(1)
414デフォルトの名無しさん:04/09/26 23:45:58
matz自身Rubyでモノ作って飯食ってるって言ってなかったっけ?
(印税や講演料の類を除いた上での話)
415デフォルトの名無しさん:04/09/26 23:46:18
>>392
> 素人はRuby使うな……と。ふうン。

どうやったらそんな解釈が・・・それは曲解だろ。
それにわざわざタブ幅を独自に設定するやつが素人とも思えんし、素人のことを考えるならなおさらタブ幅は変えないほうがよくないか。

> じゃあ逆に聞いてみるけど、タブ文字を使うメリットって何?

ファイルサイズが小さくなるから。Javaのようにコンパイルする言語だと意味ないけど、インタプリタはスクリプトを毎回読み込む必要があるから、スクリプトはなるべく小さくしたい。効果は気持ち程度だろうけど、特にCGIはね。

つうかね、そんなことを聞くまえに、タブ幅を変更するメリットって何よ?「Outlookが4に設定してあるから」が本当に理由なのか?
ちゃんとした理由があればタブ幅が8じゃない環境も考慮するけど、その理由がぜんぜん明確に説明されなくて、ただ単にタブを使うなといわれるだけじゃ納得できねいだろ。

>>393
> ……解った!!>389 は他人にコードを見られる前提でプログラムしていないな。

話ずれてる。今はなぜタブ幅を変更するのか、変更することにどんなメリットがあるかを問題にしている。
タブ幅を変えるやつこそ、他人のコードを読むことを前提にしてない、といえないか。
「タブが8じゃない人のことを考えてプログラム書け」といわれるのは、「メモ帳しか使えない人のことを考えて文字コードはSJIS、改行は\r\nで書け」といわれるぐらい意味わからん。
416デフォルトの名無しさん:04/09/26 23:57:58
タブ幅の話はもう疲れた。早く結論出して。
417デフォルトの名無しさん:04/09/27 00:37:43
418デフォルトの名無しさん:04/09/27 00:54:03
どこで見たか忘れたけど(tDiary回りだっけ?)
・インデントはタブ文字オンリー。
・タブ文字の表示幅は自分の好きな値にする。
→同じコードが各人の好みどおりに表示されて(゚д゚)ウマー
という意見に納得したので、オレはそうしている。ちなみにオレの表示幅は2。

……だけど、長い行を途中で折り返した時
func( foo, bar,
   baz ) # ←この行のインデント
の見た目をキレイにするには、上のやり方だと無理なんだよなあ。
419デフォルトの名無しさん:04/09/27 01:05:21
>>415
>ファイルサイズが小さくなるから。Javaのようにコンパイルする言語だと
>意味ないけど、インタプリタはスクリプトを毎回読み込む必要があるから、
>スクリプトはなるべく小さくしたい。

いまどきこんなの気にしてる奴なんているのか?
まあ415がいるわけだが(w
つーか逆を言えばこんなこと気にするぐらいならRubyなんて使ってられないだろ(w
さらに言えばRubyではこんなアホな方法で速度アップするしかないのか?
コメントもおちおち書いてられないじゃないか。
まるで古代のBASICだな。
インデントにタブなんか使う人間はそろそろ引退してくれ。
420368:04/09/27 01:08:21
>415
>素人のことを考えるならなおさらタブ幅は変えないほうがよくないか。
素人に限らず、多くの人を相手にする場合は不確定要素(タブ)は使わないのが
ベターだと思うけどね。あるいはタブ文字しか使わないか……

>スクリプトはなるべく小さくしたい。
全然変わらないんじゃない?文字数の違いなんて全体の数ppmぐらいしか
影響しないと思うけどね。
#WinXP環境があったらtimeitで実行時間を調べられるんだけどなぁ


> つうかね、そんなことを聞くまえに、タブ幅を変更するメリットって何よ?
> 「Outlookが4に設定してあるから」が本当に理由なのか?
タブ幅8だと深過ぎない?見やすさだとタブ幅2〜4ぐらいがベターだと思う。
同じ理由でタブ幅4にしているユーザーも結構いると思うけど。
ttp://www.namikilab.tuat.ac.jp/~sasada/diary/vote.cgi?mode=show&no=11
http://pc5.2ch.net/test/read.cgi/prog/1063471069/ (Thanks >417)

#今じゃタブ幅は8のまま調整しないけどね。
#Tabキーでタブの代わりにスペースが挿入されるようになっているし。
421デフォルトの名無しさん:04/09/27 02:16:33
ふつータブ幅とインデント幅は別じゃないの?
emacs でも vi でもタブは8でインデントは4にしてるけど
422デフォルトの名無しさん:04/09/27 02:59:52
>>421
シーッ。ここはそういう区別がついてないワナビー君たちを眺めて楽しむべきだよ
423デフォルトの名無しさん:04/09/27 03:10:53
そしてふりだしにもどる
424デフォルトの名無しさん:04/09/27 03:57:51
何わなびなの?
425デフォルトの名無しさん:04/09/27 07:30:58
>>418
それ、おもしろい。長い行の折り返しでは、前の行のインデント分はタブで行って、それ以降はスペースを使って字下げすればいけるんじゃないか。

>>419
>つーか逆を言えばこんなこと気にするぐらいならRubyなんて使ってられないだろ(w

そうか?Symbol#===とSymbol#==の速度差や、return 100 とただの 100 の速度差を気にする人間がいるくらいだぞ、別にスクリプトサイズを気にしたっておかしくないだろ。
サイズをうまく小さく出来ると、読み込みを行うシステムコールの呼び出し回数を減らすことができるんだから、おれは気にする。ディスクI/Oを減らすのは高速化の基本だし、なによりロジックにまったく手を入れることなく高速化できる方法なんだから。
HTMLファイルの余計な空白を削除するツールがあるのも、おんなじ理由だろ。Googleのトップページのソースを見てみろ、改行さえ削ってるぞ。そこまでしてサイズを減らしたいってことだよ。やりすぎだとは思うが。

というかな、419も話ずれてる。「スクリプトサイズや速度は気にしない」ことと「タブ幅を8以外に設定する」こととは関係ないだろ。


>>420
>素人に限らず、多くの人を相手にする場合は不確定要素(タブ)は使わないのが
>ベターだと思うけどね。あるいはタブ文字しか使わないか……

それは「タブ文字を使わない理由」であって「タブ幅を変更する理由」ではないだろ。
また話がずれてるんだよな。わざと言ってるのか?

>全然変わらないんじゃない?文字数の違いなんて全体の数ppmぐらいしか
>影響しないと思うけどね。

「全体の数ppmぐらいしか影響しない」からといって「タブ幅を変更する」理由にはならないでしょ?


>>421
おれもそうしてる。
426デフォルトの名無しさん:04/09/27 07:35:26
追記。

>>420
>タブ幅8だと深過ぎない?見やすさだとタブ幅2〜4ぐらいがベターだと思う。

それ、インデント幅とタブ幅とをごっちゃにしている。インデント幅は2でも4でも何でもいいよ。でもそれとタブ幅とは別問題。
427デフォルトの名無しさん:04/09/27 07:42:11
とにかく、Emacs では
よくわからない人は設定しておいて。

(setq-default indent-tabs-mode nil)
428デフォルトの名無しさん:04/09/27 07:53:53
>>425
うーん、

>Symbol#===とSymbol#==の速度差や

とスクリプトの文字数が減らせるってのは議論の次元が異なると思うぞ。
Symbol方面の速度差ってのはループで如実に効いてくるが、
スクリプトの字面はパース時にしか効いてこない。
後者はまず無視できるファクターだ。
無視できない場合はevalを使ったときだが、こいつはここでの議論にはまず関係ない。
429デフォルトの名無しさん:04/09/27 07:59:56
ボトルネックは考えるより探せ、と思う。
まぁ、コーディングによる速度チューニングを愉しみとすることもありだとは思う。
430デフォルトの名無しさん:04/09/27 09:56:33
動的静的
インデント
実行速度
・・・

ネタもコミュニティの勢いも尽きたからって宗教論争でスレ盛り上げるのやめたら?
みっともないよ
431デフォルトの名無しさん:04/09/27 10:46:41
Symbol#=== と Symbol#== ではどっちが速いの?
return 100 と、ただ 100 とだけ書いたのではどっちが速いの?
432デフォルトの名無しさん:04/09/27 11:21:15
ネタもコミュニティの勢いも公的資金も尽きたか
ただの詐欺集団じゃん
433デフォルトの名無しさん:04/09/27 11:28:24
>>431
自分で実験してみれ
434デフォルトの名無しさん:04/09/27 11:52:04
>>431
Symbol#===とSymbol#==の定義はどう違うのかをまず調べようと思って
リファレンスマニュアル見に行ったけどどこに書いてあるのかさっぱり
わからなかった。これが噂の貧弱なマニュアルか...
435デフォルトの名無しさん:04/09/27 11:55:46
436デフォルトの名無しさん:04/09/27 11:58:48
しかしTabだとファイルサイズが減るってすげえセンスだな。
カルチャーショック受けた。今時分こんなこと聞くなんて。
絶対一緒に仕事はしたくないね。
437デフォルトの名無しさん:04/09/27 12:21:20
>>434
そんなあなたに refe 。

% refe Symbol#==
(中略)
% refe Symbol#===
(後略)
438デフォルトの名無しさん:04/09/27 12:40:52
>>434
== と === は Symbol 由来のメソッドじゃないので、その上位クラス(Object)の
ページを見ないといけないみたい。

かといって、すべてのクラスの説明に継承しているメソッドもすべて書いていたら
とんでもない量になってかえって読みにくくなるだろうし。やっはり refe のような
プログラムで参照するのが良いんじゃないかなあ。

んで、本題に戻ると、Symbol#== と Symbol#=== は、結局同じもの(と読める)なので
速度差はないんじゃないの?
439デフォルトの名無しさん:04/09/27 12:52:48
組み込みクラスは ri に書いてあるんじゃないの?
ri は標準装備だろ。
440437:04/09/27 12:58:44
そうだ、思い出した。
FreeBSD ports の refe だと >>437 のように継承元のメソッドを探してくれないので、
refe を新しいバージョンのにしてもらえないでしょうか?> knu タン
441デフォルトの名無しさん:04/09/27 12:59:21
[object.c]
(前略)
rb_define_method(rb_mKernel, "==", rb_obj_equal, 1);
(中略)
rb_define_method(rb_cSymbol, "===", rb_obj_equal, 1);
(後略)

Symbol#=== は定義されてるけど、
Symbol#== は定義されてない(ので Object#== が呼ばれる)。
一段噛ませてある分、==の方がほんの少し遅い?

メソッド探索はキャッシュされるんだっけ?
それなら速度差は最初の1回だけなんだろうけど。

$ ruby -v
ruby 1.8.1 (2003-12-25) [i686-linux]
$ time ruby -e '10_000_000.times{:foo===:foo}'
real: 7.39s(user: 7.39s, system: 0.00s)
$ time ruby -e '10_000_000.times{:foo==:foo}'
real: 7.40s(user: 7.40s, system: 0.00s)

有意な差は無さそうだ。
442437:04/09/27 13:03:44
>>439
ri は継承元のメソッドまでは表示してくれないんじゃなかったでしたっけ?

と思って試そうと思ったら、 FreeBSD ports の ruby-ri の方は BROKEN なんですね。
なんでだろ?
443デフォルトの名無しさん:04/09/27 14:09:37
>>202
> akr さんと同レベルの人があと2,3人にたら、まつもとさんは過労死しそうな予感。

nobu氏の応援により、なんとかなりそうなふいんき。
444デフォルトの名無しさん:04/09/27 14:20:21
ついにMoonwolfが鬱に〜orz
445デフォルトの名無しさん:04/09/27 14:29:08
うちではこうしないと ext/ripper/ripper.y でこけちゃうみたい。

% diff ruby/parse.old.y ruby/parse.y
1199c1199
< $$ = $1
---
> $$ = $1;
446デフォルトの名無しさん:04/09/27 15:15:29
>>444
早くも力尽きたか。
それはそれとして、いろいろ調べていたらArtima DeveloperにRuby Buzz
なるPlanetっぽいものを見つけた。
http://www.artima.com/buzz/community.jsp?forum=123

ただこれ、PerlやPythonのBuzzもあるんだけど、激しくPlanetとかぶって
いる気がするんだけど、どう使い分けているのかよくわからない。
447デフォルトの名無しさん:04/09/27 18:44:48
>>426
わからんやっちゃ
その区別自体が無意味で有害だっつうの
448デフォルトの名無しさん:04/09/27 19:22:44
ぶらぶらネットしてたら、自分がたまに混乱することが書いてあった。
オブジェクトのコピーに関して↓
http://ponx.s5.xrea.com/bibo/20030302.html#p01
こういうのって、頭の中がごちゃごちゃになってくる。
これってオブジェクト指向言語におこることですよね。
僕は、Java→Rubyなんですけど、Javaの頃から、オブジェクトのコピーに関して、うまく頭の整理ができてません。

みなさんどうですか??
449デフォルトの名無しさん:04/09/27 19:36:28
>>448
そのコードのどこでオブジェクトのコピーを期待する?
コピーを示すようなコードない。全部参照。名札を付けてるだけ。
似たようなオブジェクトがほしいならCloneを作ればいい。
450デフォルトの名無しさん:04/09/27 20:02:09
C/C++知らないと、ポインタとかリファレンスとかの概念がわかんないんでしょ、たぶん。
451デフォルトの名無しさん:04/09/27 20:18:27
>>447
インデント幅とタブ幅の区別は無意味か。新しい意見だな。
おれはインデント幅 != タブ幅にしているからこの区別は重要だと思ってるんだが、447はいつも一緒なのか?
よければ、なぜ無意味であるかをもうちょっと語ってくれ。

>>428
Symbol#===とSymbol#==の速度差はこちら↓をどうぞ。以外と差があって驚いた。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/39935
でも>>441をみると、差はないね。なぜ?

>>436
ファイルサイズは結構へるよ。といっても5〜10パーセントくらいだけど。
仮に1行80文字として、そのうち先頭に8個の空白があってそれをタブ1文字に置き換えたとすると、7文字減る。
80文字のうち7文字減るから 7/80 = 8.75パーセント減ることになる。
特にRubyは
module XXX
  class YYY
    def ZZZ
      if ...
        ....
のように意外とネストが深くなるから、タブ使うと思ったより減る。
まあインデント幅が2だとあんまり関係ないかもしれんが、おれは4にしているから。
つうか、ファイルサイズが減っても速度は気持ち程度しか変わらん。うまくいってもシステムコールの呼び出しが1回減る程度。それは前に書いたとおり。

また話がそれた。結局、タブ幅をいじってる理由はなんだったの?今まででた理由らしきものは「Outlookが4だから」ということらしいが、ほんとにこれが理由?Outlookが存在する前からタブ幅をいじるやつはいたと思うけど。
ちょっと荒らしっぽくなったけど、本当にその理由が分からなくて聞いてるだけなんで、タブ幅を変えてる人がいたら理由というか利点を教えてください。長年の疑問なんです。
気分悪くした人ごめんなさい。
452デフォルトの名無しさん:04/09/27 20:32:53
あのね、タブ幅を変えてるっていう発想がおかしいの。
タブ幅は決まってないの。
453デフォルトの名無しさん:04/09/27 20:41:48
>>451
タブ幅を4にしてタブのみでインデントってのは、
オートインデントがなかったDOS時代のエディタからの影響だと思う。
つまり単にそういう「伝統」あるいは「習慣」。
454デフォルトの名無しさん:04/09/27 20:48:50
ema糞の激ローカルルールはポータビリティーが低くて迷惑。
ただそれだけの話なんだよ。さっさと理解しとけ。
455デフォルトの名無しさん:04/09/27 22:04:20
と、Emacsen をロクに使い熟せなかったアフォが、腹癒せに叫いています。
もしくは、Emacen をロクに使い熟せないアフォが迷惑かけています。


 -- 終了 --
456デフォルトの名無しさん:04/09/27 22:07:24
俺もEmacsは使いこなせていないけど、

  い  い  加  減  、  他  所  で  や  れ
457デフォルトの名無しさん:04/09/27 22:52:03
タブは一切使わずスペースキーを叩きまくる派ですが何か?
458デフォルトの名無しさん:04/09/27 23:33:20
いい加減こっちに行け。
http://pc5.2ch.net/test/read.cgi/prog/1063471069/
459448:04/09/27 23:33:55
>>449
もしかして、オブジェクトっていうのは、「クラス.new」した時にのみ作られるってことでいいですか?
この考え方でいいなら、「名札」って話も理解できました。

整数とか、""でくくってStringオブジェクトをつくれるのは、例外的な書き方ですね。


間違ってたら指摘お願いします。
460デフォルトの名無しさん:04/09/27 23:46:24
>>459
基本的にはそうですけど、陽に「クラス.new」とは書かなくても
新しいオブジェクトを返す物は作れます。

def x
 Hash.new
end

とか。使用局面ではxだけです。
Hash[]なんかは字面ではnewがありませんが新たにオブジェクト作りますし。

で、メソッドがオブジェクトのコピーするしないとかいうことを考えるんじゃなくて、
そのメソッドは破壊的か否かに気をつけるべきかと。

>整数とか、""でくくってStringオブジェクトをつくれるのは、例外的な書き方ですね。

そうです。他にArrayの[]、Hashの{}、Regexpの//などがあります。
461448:04/09/27 23:58:15
あ、なんか破壊的、非破壊的という話もなんとなくわかりそうです
ありがとうございました。
462368:04/09/28 00:39:20
fn = "testtab.rb"; A = 2; B = 50000
symbol = (タブかスペースx8)
File.open( fn, "w+b" ) do | f | f << (symbol * A + "t='test'\n") * B end
`ruby testtab.rb` #何回か繰り返す
starttime = Time.now
`ruby testtab.rb`
endtime = Time.now
p endtime - starttime
というテストプログラムを作ってテストしてみました。

A=10, B=100000
tab:  1.062
space: 1.281

A = 2, B = 500000
tab:  7.672
space: 7.843

A=10, B=100000
tab:  0.109
space: 0.125

A = 2, B = 50000
tab:  0.485
space: 0.531

といった感じで、「確かに効くけど、どうよ?」といった結果になりました。
100万個タブ使って0.2秒か……
463368:04/09/28 00:54:02
>451
>結局、タブ幅をいじってる理由はなんだったの?
何だよ、まだ続いていたのか。

>420
>タブ幅8だと深過ぎない?見やすさだとタブ幅2〜4ぐらいがベターだと思う。
>同じ理由でタブ幅4にしているユーザーも結構いると思うけど。
>453
>タブ幅を4にしてタブのみでインデントってのは、
>オートインデントがなかったDOS時代のエディタからの影響だと思う。
>つまり単にそういう「伝統」あるいは「習慣」。
つうことかねぇ。Delphiのエディタもオートインデントなかったしなぁ。
今は普通にオートインデントあるからタブ使ってインデントする必要もないけど、
昔は……と言ってもDOS時代ほど古くは無いと思うけど……タブでインデントしていた
風習からタブ幅2〜4ぐらいが好まれていたと思う。
タブだけでインデントしていれば、別に4でも8でも関係無いしね。
464デフォルトの名無しさん:04/09/28 01:07:27
レベルの低いという問題ではない。
タブとスペースが混ざったクソコードは
Ruby の標準ライブラリにも大量に存在する。
465デフォルトの名無しさん:04/09/28 01:17:06
別にrubyに限ったことじゃなくて、CやPerlや他の言語でもいくらでも
大量に存在するでしょ。
いい加減こっちに行って。
http://pc5.2ch.net/test/read.cgi/prog/1063471069/
466デフォルトの名無しさん:04/09/28 01:29:20
>>464
> タブとスペースが混ざったクソコードは
> Ruby の標準ライブラリにも大量に存在する。
そこでPythonですよ。(w
467デフォルトの名無しさん:04/09/28 01:38:00
ripper 使ってコード整形プログラム書いとけ。
468デフォルトの名無しさん:04/09/28 01:40:08
>>453
>つまり単にそういう「伝統」あるいは「習慣」。

そうですか、そんな理由ですか。でも今までで一番説得力のある回答だ。納得しました。

>>452
> あのね、タブ幅を変えてるっていう発想がおかしいの。
> タブ幅は決まってないの。

そうなの?でもいわれてみればそうだよな、タブ幅がANSIとかで規定されてるなんて聞いたことないしな。
タブ幅=8ということ自体が「伝統」あるいは「習慣」といえるのか。

>>462=368
>100万個タブ使って0.2秒か……

わざわざありがと。「気持ち程度」速くなることが確認できてよかったよ。

>>463=368
>何だよ、まだ続いていたのか。

ああ続いてたよ、368が論点のずれた回答ばっかくれたからね。
連続投稿おつかれさん。

>>464

標準ライブラリはなにかコーディングスタンダード決めてもいいような気はするね。
関係ないけどREXMLのソースがインデント幅8で驚いた。もちろんタブを使ってた。


>>453>>452の回答で長年の疑問が解けたと思います。ありがとうございました。
スレ汚してすまんかった。
469368:04/09/28 02:03:30
>468
>「気持ち程度」速くなることが確認できてよかったよ。  
なんかなぁ……今回は確認してやったけど、自分で確認しようとは思わなかったの?
「タブ使ったほうが速いんだ」て主張するまえに実際にテストしてみるもんだ。
どの程度速くなるか調べるつもりもなく主張するのって恥ずかしくない?

実行速度を気にしてスペース&タブなんて(一貫性の無い)インデント使うぐらい
だったら、インデントを削除した実行用ファイルを用意したら?
そっちの方がタブ使うより速くなるよ。
470デフォルトの名無しさん:04/09/28 02:58:49
とりあえず、NGワードにタブを設定しよう、うん。そうしよう。
471デフォルトの名無しさん:04/09/28 09:17:34
まだやってんのかインデントにはTAB使えよ
472デフォルトの名無しさん:04/09/28 15:16:43
ていうかここで368の相手をするのはやめれ。
473デフォルトの名無しさん:04/09/28 15:52:49
俺にはタブとかの話題以前に368はまともで、
468はちょっと神経おかしいと思う。
ま、病院行くほどの事はないかもしれないが、
匿名に慣れちゃった人の言動って怖いね。
コテハンが当たり前だったniftyとかの時代ではありえない人間像だ。
474デフォルトの名無しさん:04/09/28 16:33:03
> 俺にはタブとかの話題以前に368はまともで、

他所に移動しない(もしくは一方がもう一方を誘導しようともしない)
時点でどっちも相当いかれてる。
475デフォルトの名無しさん:04/09/28 16:35:32
だな。
2chなんかで、自分の優越を誇示しようとする人間は全員キチガイ。



Q.E.D.

Rubyでのインデント幅は半角スペース2個が推奨

Emacs利用者は、.emacs に以下の設定をしよう
(setq-default indent-tabs-mode nil)
476デフォルトの名無しさん:04/09/28 16:43:48
>>475
> Emacs利用者は、.emacs に以下の設定をしよう

matz 氏にもよーく言い聞かせておいて下さい。
477デフォルトの名無しさん:04/09/28 16:45:20
>Rubyでのインデント幅は半角スペース2個が推奨
タブ使えよぼけ
478デフォルトの名無しさん:04/09/28 16:49:59
>>477
釣れますか?
479デフォルトの名無しさん:04/09/28 17:53:24
ネタ引っ張り杉。
必要に応じてuntabifyすればいいだけの話。
480デフォルトの名無しさん:04/09/28 20:34:18
>必要に応じてuntabifyすればいいだけの話。
タブ使えよぼけ
481デフォルトの名無しさん:04/09/28 21:01:56
天然無能477=480がこのスレに常駐しているようです。
482デフォルトの名無しさん:04/09/28 21:54:17
Cのselectにあたる機能を使いたいのですが、
rubyではどういう関数を使うことできますか?教えてくださいませ。

たとえば、一定時間にgetsの処理が終了しなければ、
そのままfunc1(key)を実行したいのですが。
  key = "default_key"
  key = STDIN.gets # ← 一定時間でスキップして
  func1(key)      # ← これを実行したい
483デフォルトの名無しさん:04/09/28 21:59:32
るbyのselect使えよ
484デフォルトの名無しさん:04/09/28 22:16:26
>>482
IO.select
485デフォルトの名無しさん:04/09/28 22:52:37
timeoutってのが使えませんか?
486デフォルトの名無しさん:04/09/28 23:14:00
>>475
> Rubyでのインデント幅は半角スペース2個が推奨
> Emacs利用者は、.emacs に以下の設定をしよう

ruby-mode.elはすでにそうなってる。
487475:04/09/28 23:38:49
>>486
ごめん、かなりコメントしにくい。
つーか、もう、引っ張るな。
488482:04/09/29 03:53:29
スマソ。使い方が分かりません。
STDIN.getsを1秒おきにすっとばしてほしいのですが。

IO.select([STDIN],nil, nil, 1)
key = STDIN.gets
489デフォルトの名無しさん:04/09/29 05:11:38
>>488
こんな感じ?
key = "default_key"
key = STDIN.gets.chomp if IO::select([STDIN], nil, nil, 1)
func1(key)
490488:04/09/29 06:07:41
>>489
うーん。win32で実行しているのですけど、一秒おきに飛ばしてくれません。
while 1
 key = "default_key"
 key = STDIN.gets.chomp if IO::select([STDIN], nil, nil, 1)
 p key
end
で、キー入力なしで延々と"default_key"と表示されつづけるような使い方をしたいのですが。
491デフォルトの名無しさん:04/09/29 08:22:16
>>469=368

・・・はあ?
だからね、タブ使ったところで「気持ち程度」しか速くならないって言ってるでしょ。
また論点がずれてるんだよ。速さうんぬんを問題にしてたんじゃなくて、タブ幅をいじる理由を問題にしてたの。
もう他の人に教えてもらったからいいけど、いいかげん論点からずれたような「主張するのって恥ずかしくない?」

368は質問に回答しようとしてるわけじゃないよね?相手を叩きたい、自分が勝ちたいっていう気持ちが先にあって、それから叩ける材料を探しているんじゃないか。だから論点を外れたところばかりつついてくる。
議論のポイントになるところでは自分の旗色が悪いまたは反撃できないから、それ以外のところに攻撃材料を求めて相手をなんとか叩こうとしているだけじゃん。どうせなら、452のように口は悪くてもいいから核心をつくようなことをいってくれ。

願わくば、368みたいなのがだれかの上司じゃありませんように。自分の優位性を無理にでも主張するような上司じゃ、部下がかわいそう。


> >「気持ち程度」速くなることが確認できてよかったよ。
> なんかなぁ……今回は確認してやったけど、自分で確認しようとは思わなかったの?

皮肉ってんだよ。わかりにくくてごめんな。
492デフォルトの名無しさん:04/09/29 09:03:09
Rubyで大げさなウィンドウではなくtooltipだけを表示したいのですが、方法はないでしょうか?
特にtooltipにこだわるつもりもなく、ウィンドウ枠とかを無くすやり方でもよいのですが。
あるアプリのテキストに対してrubyスクリプトを実行して、
簡易のポップアップ情報を提示するようなプログラムを組みたいのです。
どうかご教授くださいませ。
493デフォルトの名無しさん:04/09/29 09:35:50
>>490
win32だとgetsでtimeoutは動かないらしいから、
selectも動かないかも。
494デフォルトの名無しさん:04/09/29 09:37:02
スレ違い>>491はスルーでおながいします。
495デフォルトの名無しさん:04/09/29 09:38:38
>>492
ツールキットは何使ってるの?
496デフォルトの名無しさん:04/09/29 10:38:05
>願わくば、368みたいなのがだれかの上司じゃありませんように。
>自分の優位性を無理にでも主張するような上司じゃ、部下がかわいそう。
予想通りリア厨か
497デフォルトの名無しさん:04/09/29 11:07:24
>>493
調べずに書いて失礼しました。Windows版の制約なんですね。
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=trap%3A%3Atimeout
498デフォルトの名無しさん:04/09/29 11:08:52
環境依存ですが、次のようにやるとcoreをはきます。

~$ ruby --version
ruby 1.8.2 (2004-09-28) [i386-mingw32]
~$ ruby -r iconv -e ''
Segmentation fault (core dumped)
499デフォルトの名無しさん:04/09/29 11:26:44
>>492
> あるアプリのテキストに対してrubyスクリプトを実行して、

っていう部分をどう実装するつもりなのかが激しく気になる。
マウスカーソルをかざすとか、選択してボタンを押すとか、
とにかくそういったイベントに応じて外部のプログラムを
起動するという機能がその「あるアプリ」に備わっていない
限りどうしようもない訳だが。
500492:04/09/29 14:19:59
>>495
vr/vrubyですが、もし他のツールキットでできるんなら乗り換えますので。

>>499
スマソ。正直、自分ではどうやって実装すればよいのか分かりません。
babylonとかドクターマススとか翻訳系のツールの場合、
結構その手の処理が実現できているんで、もしかしたらできるのかなぁなんて。
501デフォルトの名無しさん:04/09/29 14:27:27
以下を実行すると表示まで時間はかかりますが一応実行できます。
httpsの表示は時間がかかる物なんでしょうか?
それから、warning: peer certificate won't be verified in this SSL session.が
表示されますが、なにか足らないのでしょうか??


require 'net/https'
http = Net::HTTP.new('xxxxx', 443)
http.use_ssl = true
http.start {
http.request_get('/') {|res|
print res.body
}
}
502デフォルトの名無しさん:04/09/29 14:48:43
vrubyよく分かってないが、とりあえず勘で"vrtooltip"って入れて検索してみtらこれがヒットした。
ttp://www.osk.3web.ne.jp/~nyasu/vruby/referer/vr/VRTooltip.html
503デフォルトの名無しさん:04/09/29 15:01:09
>>501
そのワーニングでしょ。相手の証明書が確認できてないってこと。たぶんその
ための待ち時間なんじゃないかと思う。

確認するには、
1. 今回実行してみたサーバに対して、普通のブラウザで https経由でアクセ
スしてみる。たぶん何か警告のメッセージが出るはず。
2. 正しく https でアクセスできることがわかってる他のサイトでも試してみる

というあたりかな。
1.で警告が出て、2.でちゃんと遅くないなら、相手のサーバの設定の問題。プ
ログラムは悪くない。
504デフォルトの名無しさん:04/09/29 15:20:40
>>501
相手のサーバ証明書が確認できてないというのは >>503 のとおりですね。
警告を出さないようにするには、
CA の証明書を用意してきちんと確認するようにするか、
サーバ証明書の確認をしないようにすればいいと思います。
前者ならば、PEM 形式の CA 証明書のファイルを用意して、
その path を http.ca_file= か http.ca_path= でセットしたうえで、
http.verify_mode= で OpenSSL::SSL::VERIFY_PEER をセットすればいいようです。
後者ならば、http.verify_mode= で OpenSSL::SSL::VERIFY_NONE を
セットすればいいようです。
505デフォルトの名無しさん:04/09/29 15:45:47
>>502
require 'vr/vrtooltip'
class Window_for_ToolTip < VRForm
MAP = [0,0,80,80]
def construct
self.move 0,0,80,80
tt = createTooltip; tt.addToolArea MAP, "てすと"
end
end
VRLocalScreen.start(Window_for_ToolTip)

試しに書いてみたけど、元になるウインドウを自前で用意できない場合には、
どうやってtooltipを表示すればよいか分からん。
506デフォルトの名無しさん:04/09/29 15:52:46
>491
>だからね、タブ使ったところで「気持ち程度」しか速くならないって言ってるでしょ。


こういう馬鹿が変なこと言い出せなくさせるために
中間コード形式にもコンパイルするようにしてくれ。>まつもと各位
中間コード形式で配布できるようにな。
それぐらいできんだろ?>まつもと各位
507デフォルトの名無しさん:04/09/29 15:55:45
Tabにしないと配布の準備の手間がかかるだろ馬鹿が!
馬鹿どもはだまってTabいれりゃいんだよ!Tabだよ!Tabだ!!Tab!!!
508デフォルトの名無しさん:04/09/29 16:11:23
>>506-507
( ‘д‘)⊂彡☆))Д´)パーン
509デフォルトの名無しさん:04/09/29 16:14:41
>>500
> 結構その手の処理が実現できているんで、もしかしたらできるのかなぁなんて。

できるとしてもVCでゴリゴリ書かないと無理だろうな〜
510デフォルトの名無しさん:04/09/29 18:00:41
>>503
>>504
ありがとうございました
511デフォルトの名無しさん:04/09/29 18:30:18
>>500
babylonはOCRだそうです。
512デフォルトの名無しさん:04/09/29 21:19:16
mswin32 版のRubyを使ってるんですが、Dir.glob って日本語フォルダに対応してないんでしょうか?
パスに日本語が混じるとマッチしないんですが・・・。
513デフォルトの名無しさん:04/09/29 21:30:29
$KCODE = s
514デフォルトの名無しさん:04/09/29 21:41:53
え〜っと、'C:\あ'というフォルダがあったとして、
>p Dir.glob('C:/*')
は'C:\あ'を含みますが、
>p Dir.glob('C:/あ/*')
とすると、'C:\あ'の下にあるファイルは一切表示されません。

ちなみに、
>$KCODE='s'
>p Dir.glob('C:/あ/*')
でもだめですた。
515デフォルトの名無しさん:04/09/29 22:04:59
>>514
ruby 1.8.1 (2003-12-25) [i386-mswin32]だけど、$KCODE無しでも普通に表示されたよ。
516デフォルトの名無しさん:04/09/29 22:53:37
>>514
そのスクリプトの文字コードは Shift_JIS なんですよね?
517デフォルトの名無しさん:04/09/29 22:55:57
>>513
Windowsのバージョンは何?
518514:04/09/29 23:05:44
>>515
ruby のバージョンはうちも同じです。
え〜、やってみたら「あ」だったら大丈夫みたいですね^^;

えっと、「府」が入ってるとだめみたいです。
これJISコードが 495C なので、 \ が 5C だからかなぁと
思ったら、卑(485C)はOKなんですよね〜。
なんでだろ。
519514:04/09/29 23:06:51
>>517
Windows XP SP2 です。
ちなみに、ファイルシステムは NTFS です。
520デフォルトの名無しさん:04/09/29 23:20:01
>>512
まだ対応してないんじゃなかったっけ?
# [ruby-list:39957] あたりのスレッドを参照。
521デフォルトの名無しさん:04/09/29 23:41:13
>>499,500
選択されたテキストをクリップボードに持ってくれば
(他の方法でもいいけど)なんとでもなる。
522500:04/09/29 23:47:23
>>521
クリップボード内の文字列が変更されたという
イベントをRubyで拾えるってこと?
523デフォルトの名無しさん:04/09/29 23:48:51
>>522
それは出来るだろうけど、そういう意味じゃないと思うよ。
524368:04/09/30 00:27:51
>491
……もうちょっとRubyにからめて話そうよ。ただでさえスレ違いと怒られているのに……

>いいかげん論点からずれたような「主張するのって恥ずかしくない?」
>368 「プログラムじゃない文章とか読む/書くときに便利」
>420 「タブ幅8だと深過ぎない?」
  ->オートインデントの無い/効かないエディタとかでインデント代わりに
    タブを使うとき見やすい
つうことだけど……あと、Winでもエディタはタブ幅8が普通ですな。スマン

と、蛇足はここまでにして >469の自己フォロー。インデント無しにした場合も
テストしてみました。
タブ数(A) = 2; 行数(B) = 1000000の場合で
 18.406(タブ)
 19.016(スペース)
 18.329(インデント無し)
です。200万個で0.08秒……ゴミですな。
ただ、スペースだけのインデントも考慮すればそれなりの効果はあるかな?
#これぐらい>491には突っ込んでもらいたいところだけど……
525デフォルトの名無しさん:04/09/30 00:30:38
>>524
ていうか何でこのスレに粘着してるの?
526デフォルトの名無しさん:04/09/30 00:32:03
>>525
予想だが
・Rubyを知らない
・TABならわかる
・Rubyを知らないけど粘着したい年頃
527デフォルトの名無しさん:04/09/30 00:32:51
もうちょっとましな表現使った方がいいかな。
s/粘着/固執/
に読みかえて。
528デフォルトの名無しさん:04/09/30 00:42:00
>526
Ruby使っているね。
・タブなら解る
・インデントはわからない
・実は、>368 と>491は変人同士気が合う
じゃない?
529デフォルトの名無しさん:04/09/30 00:42:22
RubyのアーカイブにはXMLの処理系が入っているみたいだけど
(lib/ruby/1.8/wsdl/、lib/ruby/1.8/xmlrpc/、lib/ruby/1.8/xsd/あたり?)
これのドキュメントってどこかにある?できれば日本語だと嬉しい
さっぱり使い方がわからない…(´・ω・`)

ドキュメントがないようならお勧めのXML処理系があったら教えて
530デフォルトの名無しさん:04/09/30 00:45:03
>529
REXMLが入っている。
http://www.cozmixng.org/~kou/ruby/rexml/
かな……
531デフォルトの名無しさん:04/09/30 00:55:02
ソフ板のMeadowスレにまで波及してる悪寒
532デフォルトの名無しさん:04/09/30 01:01:13
>>531
あ、やっぱり思った? Rubyを出すと荒れるかなあとおもって静観してた。
それでなくても荒れ気味な感じ。
533512:04/09/30 01:12:42
>>520
対応してないんですか・・・oTL
はじめて ruby に失望を感じちゃったよ。
534デフォルトの名無しさん:04/09/30 01:13:22
毎週ネコのタブがネズミのインデントを追いかけ回すという話を思いついてしまった。
535デフォルトの名無しさん:04/09/30 01:16:27
Ruby 好きな漏れは XML も Ruby で XML 処理したいのは
やまやまなんだが、耐えきれないほど遅い。

極力、xsl 使って、xsl じゃあどうにもならんときだけ、
Ruby 使ってる。

Ruby でつかえる早い XML 処理系あったら教えてくれ。
536デフォルトの名無しさん:04/09/30 01:18:09
REXML::StreamParser は?
537デフォルトの名無しさん:04/09/30 01:28:58
538デフォルトの名無しさん:04/09/30 01:29:00
ema糞ユーザーは時代遅れの常識知らず

783 名前:名無しさん@お腹いっぱい。[sage] 投稿日:04/09/27 18:34:22 ID:N1fOBDqK
>>782
8以外の奴っているのか?
インターネット上で例があるなら示してくれ。
539デフォルトの名無しさん:04/09/30 01:31:26
540デフォルトの名無しさん:04/09/30 01:36:31
>>375 = >>454 = >>583
毎回乙。
余程、Emacsが理解できずに悔しい思いをしたんだな。哀れな……
541デフォルトの名無しさん:04/09/30 01:39:32
>>535
よしだむさんの XMLParser (James Clark さんの expat の wrapper) は速いですよ。
542533:04/09/30 01:44:25
>>537
それは見たんだけどね。
VC++ もってなく、cygwin とか BCC とか環境ととのえるの
マンドクさいしので、ビルドすんのやだし。
HEAD 使うのはちょっと不安な感じなのよ。バグとかではまりたくないし。

はやく 1.9 正式版でないかな〜。
543デフォルトの名無しさん:04/09/30 06:05:21
さすがに HEAD を常用するのはちょっと怖いなぁ
544500:04/09/30 08:14:43
>>521
> 選択されたテキストをクリップボードに持ってくれば
文字列をスクリプトに渡す部分以外に
クリップボードに持ってきた後、どう画面に(簡易)表示できるか気になっているのですが、
簡単なサンプルを紹介していただけませんか?

>>509氏のいうとおり、VCでがりがり書かないと無理?
545デフォルトの名無しさん:04/09/30 08:44:29
546デフォルトの名無しさん:04/09/30 10:23:48
tooltipならvrubyでも使えるじゃん。
http://vruby.sourceforge.net/samples.html
547546:04/09/30 10:26:19
ガイシュツだった。吊ってくる。
548sai10sight ◆m7YeytgDFE :04/09/30 12:53:40
>544
VisualuRubyのサンプルに"クリップボードの監視"という例があります。
参考になりませんかね?
http://vruby.sourceforge.net/samples.html
549529:04/09/30 14:11:17
>>530
サンクス
使ってみます。
550デフォルトの名無しさん:04/09/30 14:16:56
最初からDelphi使えよ
551デフォルトの名無しさん:04/09/30 14:43:26
幾重にも入れ子になった配列を丸々コピーする手っ取り早い方法って何かあります?
552デフォルトの名無しさん:04/09/30 14:46:13
>>551
Marshal
553デフォルトの名無しさん:04/09/30 15:14:57
>>500
これだと思うが。
問題はサンプルがVBだということだ(がそんなに変わらん)
http://support.microsoft.com/default.aspx?scid=kb;JA;112649
ウィンドウハンドルとウィンドウテキストが取得できるから、
そのウィンドウハンドルに対してTooltipを描画すればよい、はずだが
vrubyではウィンドウハンドルは直接扱えないのな。
Swin::Window::hWndの付け替えとかしても大丈夫なのか?
対象コンポーネントのハンドラを持ったWindowが作れるならそいつに
VRToolTip::addToolすりゃいいんじゃないの。
554551:04/09/30 15:34:31
>>552
thx
できました
555デフォルトの名無しさん:04/09/30 16:14:55
>>550
(´,_ゝ`)プッ
Apolloもロクに知らないうんこ野郎はうんこだけをいじるのがお似合いだ。
556デフォルトの名無しさん:04/09/30 17:36:18
>>553
かなり参考になりました。でも、自分ではうまくスクリプトを組めない…
> vrubyではウィンドウハンドルは直接扱えないのな。
> Swin::Window::hWndの付け替えとかしても大丈夫なのか?
ほかのtoolkitでもいいので、この部分どなたか簡単なサンプルを…
557デフォルトの名無しさん:04/09/30 23:40:58
どうもこんちは
methodの中のソースコードをそのまま文字列として返す
方法ってありますか?
558デフォルトの名無しさん:04/10/01 00:22:35
>>557
Ripperでググれ
559デフォルトの名無しさん:04/10/01 01:03:11
解としては>>558で正しいんだけど、そんなことよりも>>557はソースコードで何をやりたいのかが気になってしょうがない。
560デフォルトの名無しさん:04/10/01 09:20:23
メソッドオブジェクトのシリアライズとか、JavaScriptのtoSource()とか?
561デフォルトの名無しさん:04/10/01 09:43:03
Rubyで実装されているnkf2.03並みの文字コード変換ライブラリってあります?
Uconvだと元の文字コードが判別できないので…
562デフォルトの名無しさん:04/10/01 13:45:00
>>561
「Rubyで実装されている」というのはPure Rubyでということ?
それから「nkf2.03並み」というのは具体的にはどういうこと?
これらがはっきりしないと回答のしようがないけど。
563561:04/10/01 14:32:45
>>562
すまん

>Pure Ruby
そうです。できればRubyで書かれた物だと嬉しいです
よくよく見てみたらUconvもバイナリのライブラリでしたね…(汗

>nkf2.03並み
具体的にやりたいことは
・SJIS、EUC、UTF-8の判別機能
・SJIS、EUC、UTF-8の相互変換
です。
一応機能的には外部のnkf2.03を呼べばできるんですけどオーバーヘッドが結構馬鹿にならないので…
564デフォルトの名無しさん:04/10/01 14:35:30
>>563
[ruby-dev:24277], [ruby-dev:24282] あたりが参考になるかと。
565デフォルトの名無しさん:04/10/01 14:35:57
ああごめん。 Pure Ruby か。
566デフォルトの名無しさん:04/10/01 16:43:48
Rubyに限らずlegacy charset ⇔ Unicodeの変換をCを使わずに実装してる
モジュールってあまりないような希ガス。Jcode.pmのJcode::Unicode::NoXS
くらい?
567デフォルトの名無しさん:04/10/01 16:46:31
sqlite-ruby-2.1.0 をインストールしようとしたのですが、
taball を展開すると、見慣れた extconf.rb や setup.rb などは無く、
Rakefile, sqlite-ruby.gemspec といった怪しげなファイルがあり、
一体なんじゃこりゃー、な状態になってしまいました。

このあたりのインストールのしきたり (gem って何?) について
説明してあるドキュメントがあれば教えて下さい。
日本語で無ければ英語でも構いません。
568デフォルトの名無しさん:04/10/01 16:56:04
>>567
RakefileはRakeというビルド用のツールで使われるファイル。
http://rake.rubyforge.org/
gemspecはRubyGemsというパッケージマネージャで使われるファイル。
http://rubygems.rubyforge.org/wiki/wiki.pl

RubyGemsについてはやまださんの日記にも情報が出ている。
http://arika.org/diary/20040813
569デフォルトの名無しさん:04/10/01 17:01:18
つうかREADME見たけどruby install.rbでインストールできないか?
570デフォルトの名無しさん:04/10/01 17:10:40
>>568
ありがとうございます。これでなんとかなりそうです。

>>569
すいません、 README が見当たらないのですが・・・
571デフォルトの名無しさん:04/10/01 17:16:13
あ、節穴でした。 ./api/files/README.html にありました。
api つうディレクトリにインストール手順が入ってるとは・・・
572デフォルトの名無しさん:04/10/01 22:44:39
module Lock
def Lock.lock(lockfile)
File.open(lockfile, 'w') do |f|
f.flock(File::LOCK_EX)
yield
end
end
end

というようにロックを作ろうと思ったのですが、
使ってみるとErrno::EBUSYというのがまれに発生しました。
これってどういうことでしょうか?
573デフォルトの名無しさん:04/10/01 22:54:48
>572
ttp://www.linux.or.jp/JM/html/LDP_man-pages/man3/errno.3.html
その例外こそ、別のどこかでロックがかかっているという知らせなのでわ。
574デフォルトの名無しさん:04/10/01 23:04:31
ロックがかかっているときに別プロセスからflockしようとすると、
ロックが解除されるまで待たされるのが普段の動作だと思います。
試してみると、実際にそうなります。

ただ、一度だけEBUSYというのが発生して、何だろうと思ったわけです。
575デフォルトの名無しさん:04/10/02 00:11:47
>>566
rbuconv
576デフォルトの名無しさん:04/10/02 01:06:49
確かに文字コード自動認識周りは何故かRuby1.8では弱くなってるよな。
Unicode非対応だし。なんか前はもうちょっとましだった気がするけど。
ソースもファイルも最初から全部Unicodeなら$KCODE="UTF8"しとけば良いけど。
適当なサイトから文字コード判別方法だけ持ってきて判別できたら
あとはiconvでも良いような気がするけど。
iconv標準だし。
http://kasumi.sakura.ne.jp/~gm/gpj/dev/tips/other/kanji.shtml
とか。
577デフォルトの名無しさん:04/10/02 01:21:26
[1,2,3].each{ |i| p i }
の "|i|" って省略できないの?
たとえば $# はデフォルトイテレータとか決まってれば、
[1,2,3].each{ p $# }
とかけるのでラクチンなんですが。

毎回、|i| 書くのがマンドクセ。
578デフォルトの名無しさん:04/10/02 01:35:56
>>576
そのうち unicode 対応 nkf が入るでしょ。

>>577
そんなときに goovy
579デフォルトの名無しさん:04/10/02 02:06:38
>>575
あ、それは知らなかった。しかし約49倍も遅いのか。
ttp://www.rubyist.net/~tamura/d/?date=20030417#p03
580デフォルトの名無しさん:04/10/02 02:20:52
>>577
個人的には、デフォルトのイテレータというのは気持ち悪くて嫌だな。
each_with_index とか File#open はどうなる?とか、イテレータが入れ子に
なったら考えるのもイヤだし……。

確かにちと煩雑だけど(名前考えるのマンドクセ)、引数を使わなければ省略で
きるし、今のままでいいんじゃないかと思うな。
581デフォルトの名無しさん:04/10/02 02:23:12
$# を見ただけで反射的にいやな気分になってしまう。
582デフォルトの名無しさん:04/10/02 02:46:03
$_とかPerl由来(だっけ?)の省略記法はなくす方向で、という風になってるから
新設はまずないと思うな。残すだろうけど非推奨ってことで。

あとおれも580に同意。気持ち悪いと思う。
583デフォルトの名無しさん:04/10/02 07:41:57
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?MovingAwayFromXslt

有名なこの人まで褒めてると嬉しいね
584デフォルトの名無しさん:04/10/02 08:13:43
デフォルトイテレータなんかあったらRuby使うのやめる。
585デフォルトの名無しさん:04/10/02 08:53:00
>>577
エディタで補完しろ。
586577:04/10/02 09:08:46
>>578
groovy についてぐぐったところ、どうやら
it がデフォルトイテレータっぽいですね。

そういうのが ruby にも欲しいなぁ・・・。($it とかで)
587デフォルトの名無しさん:04/10/02 10:21:48
>586
引数が複数の場合はどうするの?
588デフォルトの名無しさん:04/10/02 10:27:33
デフォルトイテレータはいらないけどイテレータが何回回ったかのデフォルトカウンタは欲しいかも
in用の配列とoutの配列を用意して片っ端から処理していくなんて場合に初期化してからカウンタを
回すのが美しくない。デフォルトカウンタも美しくないと言われるとそれまでだが…
589sai10sight ◆m7YeytgDFE :04/10/02 10:37:54
>>588
Enumerableクラスにメソッドを追加するとか、
既存のメソッドを再定義するとかして、
自動的にカウンタを提供できませんかね?
あ、それだと既存のeach_with_indexでいいのか...。
590デフォルトの名無しさん:04/10/02 10:44:18
> in用の配列とoutの配列を用意して片っ端から処理

そゆ時はmapでないの?
591588:04/10/02 11:40:02
ちょっと説明不足スマソ。
イテレータの中で参照したい要素が2つ以上あるって事

いろんなパターンが思いつくけど一例としてはこんな感じかな…
a = [1, 6, 3,…]
b = [134, 579, 946,…]
o = Array.new(n)

i = 0
o.map!{|v|
 f1(v, a[f2(i)], b[f3(i)])
 i += 3
}
592デフォルトの名無しさん:04/10/02 11:51:44
Rubyにシステムの標準の文字コードを取得する方法ってあったっけ?
593デフォルトの名無しさん:04/10/02 12:05:43
>>591
1.8なら Enumerable#zip が使えるかも。

a = [1, 6, 3,…]
b = [134, 579, 946,…]

o = a.zip(b).map{|tmp|
 f1(v, *tmp)
 i += 3
}
594デフォルトの名無しさん:04/10/02 12:14:25
漏れなら
a.size.times { |i|
o[i] = f1(a[f2(i)], b[f3(i)])
}
とかかな……。確かに map_with_index は欲しいときはある。
まあ確かに Range と zip を組み合わせばできるんだけど。
595デフォルトの名無しさん:04/10/02 12:19:19
>>592
そもそもシステムの標準の文字コードって存在するのかな?
596デフォルトの名無しさん:04/10/02 12:51:36
ruby 1.8.1(mswin32) で rexml 使おうとすると、
iconv.dll が見つからないというエラーがでます。

このエラーを回避するためには、
ruby のフォルダに iconv.so ってフォルダがあるんですが、
これをリネームすればいいんでしょうか?
597デフォルトの名無しさん:04/10/02 12:59:52
>>596
どうぞ。
ftp://ftp.gnu.org/gnu/libiconv/

iconv.so は iconv.dll を Ruby で使えるようにするプログラム。
598デフォルトの名無しさん:04/10/02 13:42:00
その場合のiconv.dllとは香り屋のでいいんじゃないのか?
mswin32使ってないけど。
http://www.kaoriya.net/#LIBICONV
そしてどうせ書くなら近いサーバにしようや。
ftp://ftp.dnsbalance.ring.gr.jp/pub/GNU/libiconv/
599デフォルトの名無しさん:04/10/02 14:07:55
>>595
現在のlocaleで使われているcodesetを取得するという話?
Cならnl_langinfo(CODESET)が使えるが(使えない環境もあるけど)、
Rubyにはそれに相当するものはなかったよなあ。
600557:04/10/02 15:27:27
>>558
どうもありがとう
1.8では今の所動きそうにないので諦めます
601デフォルトの名無しさん:04/10/02 20:28:30
Rubyの開発者ってcronとかで毎日CVSからコンパイルしていたりするの?
602デフォルトの名無しさん:04/10/02 21:33:41
開発者自身はcronするまでもなくmake叩きまくるだろ。作ったままコンパイルせずにチェックインとかは普通ありえない。
603デフォルトの名無しさん:04/10/02 21:46:12
matz がコンパイル通らないコードを commit したとか
リリースしたバージョンが cvs に存在しなかったってのは伝説ですか
604デフォルトの名無しさん:04/10/02 21:49:02
Continuous Integration、マジおすすめ
605デフォルトの名無しさん:04/10/02 22:02:49
require 'md5' と require 'digest/md5' って両方あるのか……

と思ったら、ただ単に require してるだけだった
606596:04/10/02 23:13:42
>>587,>>598
ありがとう。近場のほうからダウソさせてもらいましたら、
ちゃんと動きました。
これから REXML 勉強します。
607デフォルトの名無しさん:04/10/03 09:20:10
Stringでなく、Symbolを使う利点ってなんですか?

いまいち、どういう時にSymbolを使うべきかわかりません。
608デフォルトの名無しさん:04/10/03 10:30:02
>>607
使わなくちゃいけないところで使えばいい。
あるいは、あなたが知る/知らないにかかわらず、内部で使われてる。
609sai10sight ◆m7YeytgDFE :04/10/03 11:52:07
>>607
C++のenumの感覚で使ってます。
状態遷移を示す定数として:standby→:processing→:doneとか、
曜日に対応する値として:monday〜:sundayとか。
実際の値に興味が無く、名前で区別できれば良い場面で重宝してます。
610デフォルトの名無しさん:04/10/03 12:33:04
enum感覚で Symbol 使ってると、スペルミスに気付かずハマることが結構あるなあ。
だから Symbol を直接使うんじゃなくて、定数に代入しといてその定数を使うようにしてる。

include Module.new {
 [:FOO, :BAR, :BAZ].each {|sym| const_set(sym, sym)}
}
p FOO #=> :FOO
611デフォルトの名無しさん:04/10/03 13:00:09
コピーする必要がないところ使うのがよいかも。
定数の値とかハッシュ引数のキーとか。
612デフォルトの名無しさん:04/10/03 13:26:27
>>607
大量に使う時に軽い
613デフォルトの名無しさん:04/10/03 13:27:00
比較とかで効率が違うよね。
だいたい数%ぐらい?
614デフォルトの名無しさん:04/10/03 13:39:27
テストしますた

string = 'test' * A; symbol = string.to_sym
h = Hash.new
#Hashの中に適当に代入

h.clear
starttime = Time.now
B.times do h[string] = string end
endtime = Time.now
p endtime - starttime

h.clear
starttime = Time.now
B.times do h[symbol] = symbol end
endtime = Time.now
p endtime - starttime


A = 100(400文字); B = 1000000
String: 6.625
Symbol: 0.625

A = 10(40文字); B = 10000000
String: 15.938
Symbol: 6.265

長い文字列は効くなぁ
615デフォルトの名無しさん:04/10/03 13:50:22
そりゃ整数みたいなもんだからな。
616デフォルトの名無しさん:04/10/03 15:13:03
ハッシュのキーにするとき、
文字列 h["test"] よりも、シンボル h[:test] のほうが、
一打少なくてすむので、ちょと楽。
617デフォルトの名無しさん:04/10/03 15:51:54
>>616
タイプ量はもっと違うな。ホームポジションからの移動距離はさらに違う。
618デフォルトの名無しさん:04/10/03 17:35:01
2chの掲示板の書き込み内容を取得し,表示したいのですが,
うまくいきません.
例えば,http://pc5.2ch.net/test/read.cgi/tech/1095004337/
を指定して,標準出力する場合,下記ソースのどの部分が
まずいのでしょうか?

require 'socket'
host, port, path = "localhost", 80, "/"
if %r!http://(.*?)(?::(\d+))?(/.*)! =~ ARGV[0]
host = $1
port = $2.to_i if $2
path = $3
end
s = TCPSocket.new(host, port)
s.print "GET #{path} HTTP/1.0\r\n\r\n"
print s.read
s.close
619デフォルトの名無しさん:04/10/03 17:47:31
>>618
open-uri 使ったらいかんの?
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=open-uri.rb
---
require 'open-uri'
open("http://pc5.2ch.net/test/read.cgi/tech/1095004337/","User-Agent"=>"ruby"){|http|
puts http.read
}
620デフォルトの名無しさん:04/10/03 17:54:54
>>619
レスさんくす
open-uri使えば,普通にできました
なにぶん初心者なもので,すんまそん

621デフォルトの名無しさん:04/10/03 17:57:37
irb-history って標準添付されませんか?
622デフォルトの名無しさん:04/10/03 18:50:09
で、>>618 はなにがマズいの?
623デフォルトの名無しさん:04/10/03 19:42:24
>>622
んー手元の環境で実行してみたら、普通のサーバの普通のページなら取り出せ
たよ。

ただ、http://pc5.2ch.net/test/read.cgi/tech/1095004337/の場合は302でフォ
ワードしてるみたいだから、それを扱う部分を自分で作らないとダメみたいだ
ね。で、 open-uri ならそこまで込みでやってくれるという話。
624デフォルトの名無しさん:04/10/03 19:55:46
>>623
http://pc5.2ch.net/test/read.cgi/tech/1095004337/
open-uri や net/http でも User-Agent を送らないと見れない。
# socket では…どう書くんだろ
625デフォルトの名無しさん:04/10/03 20:43:54
>>624
「リクエストヘッダ」で調べてみろ
626デフォルトの名無しさん:04/10/03 21:18:14
open-uriがPOSTにも対応してくれたらなあ。
627デフォルトの名無しさん:04/10/03 22:39:37
そこでRuby cURLですよ。
628デフォルトの名無しさん:04/10/03 23:27:15
MoonWolfさん、たいへんなことになってるな。
629デフォルトの名無しさん:04/10/03 23:45:47
Rubyのスレッドがネイティブ化する可能性ってあるんですか?
630デフォルトの名無しさん:04/10/03 23:48:16
というか monazilla.org の仕様書嫁
631デフォルトの名無しさん:04/10/03 23:56:00
>>628
相変わらず何かをはじめる行動力はすごいな。
持続力の方は(検閲削除)
632デフォルトの名無しさん:04/10/03 23:58:35
ここはMLウォッチスレですか?
633デフォルトの名無しさん:04/10/04 00:07:25
このスレのレスをMLに自動でポストするスクリプトはどう書けばいいですか?
634デフォルトの名無しさん:04/10/04 00:14:29
>>632
いいえ。MWウォッチスレです。
635デフォルトの名無しさん:04/10/04 00:50:31
Rubyでミリ秒取ってくるのどうやるの?

C言語で言うclock()か何かあればいいんだけど。
636デフォルトの名無しさん:04/10/04 01:24:09
Process.times とか?
637デフォルトの名無しさん:04/10/04 01:30:08
>>635
何のミリ秒?
638デフォルトの名無しさん:04/10/04 01:47:38
Rubyのソースの処理の一部の実行時間取りたいので

start = clock();

〜何かの処理〜

printf("%msrc\n", clock() - start);

みたいな差分が取れればいいです。

639デフォルトの名無しさん:04/10/04 01:54:36
>>638
ベンチには興味がないので良く知らんが、
>>614 などに良く上がってる方法じゃだめなのか?
1ms単位の値に見えるけど。
640デフォルトの名無しさん:04/10/04 01:59:24
Time.nowでいけました。
ありがとうございました。
641デフォルトの名無しさん:04/10/04 02:30:57
Pythonスレ荒れてるな。Rubyist騙って何が楽しいんだか。
642デフォルトの名無しさん:04/10/04 02:34:58
どうせこのスレに粘着してたアフォの仕業だろ。
643デフォルトの名無しさん:04/10/04 02:48:19
Dir.glob なんですが、"{ "をエスケープする方法ってないの?
たとえば、「ファイル名が"{"で始まるモノ」ってどうかきゃいいの?

Dir.glob("C:/{*") も、Dir.glob("C:/\{*") もダメですた。
644デフォルトの名無しさん:04/10/04 02:59:55
Dir.glob("C:/\\{*")
645デフォルトの名無しさん:04/10/04 03:00:53
>>643
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Dir;em=Dir.glob
> ruby 1.7 feature: ワイルドカードはバックスラッシュによりエスケープすることができます。
> (ダブルクォートの文字列中では 2 重にエスケープする必要があることに注意してください)
646デフォルトの名無しさん:04/10/04 11:38:34
>>621
irb-historyってなんだっけ。
irb/ext/history.rbとは別?
647デフォルトの名無しさん:04/10/04 11:48:22
>>646

begin 666 irb-history.rb.bz2
M0EIH.3%!629363W=$:<``,W?@'@P2/?Z%_MOG6J_____0`+UUEA;J[75#4Q3
M1HH]/1,C29J9/4;4QJ830-J&FC30T`&B#*"#R4]1Z-3U#(``:&F@`-&1D#4R
M4]1D&@'J9-&@```````!(E!HFIFF1J38D/*-#(#U`9!H#8H`D#``"D1`S,P2
M&B*TVOBNC'[23Y^:.Y)D7*U^G[:GRXO4\;7?8D*(FE-5+5%=^WD@K062E6;T
ME&L@Y5CB49,WE$"#(T`=T8@',#!C!M4.&VTQL<(BD+S(&1$16J<O&]MMPKLE
M"1OV_?TW7(/*^RBA>`HHVS&Q&,-:7.!MY$SQ8.BBK,DUH91>NM*$]VR(OIL3
MR=@LQ2(HFE9+,P\+4HJIC&LL`!42_MLLX<N1S8!;F46KF".&OAE%H]7#832L
M3Y%PZCSJ9F!)=,E3C4;@YMZ!TOZU`U6@&/#(##C'X*(NKRE@\-JX,;D^-0ES
MM*X9H9U9^?\+X;T+>?F*K'O,E/`D==/+,1]B(B.N(#L,1V4HH=A)[A&GY&\L
M*"3E'BH/,71C+L5PBNA(L4A%EF(H$18\1YQ&V94JXP$3:C);7P-9L+!D`\_C
M0UN!FY.\HNP5K08MAAL>+\W=]@LM<[!#MUHQU=]@#55E(,M.RF/.*AQPIE,Q
MU7T#V@Q].2`,$2&I@YL4KGJ@E`:3M,&-M$"D..&I*@#;,R!&1S4&]%$&P[\2
MH.A:@ZN4#!'F!MLNBB>?5U-%!/"X^FEZD=@L-==P4$]10U7S!B!H9#@*H2V$
M!G*8HRWP(S(G[&=XVE-D2TWT#,A@'96$&2,.6UP6V3WY>8Q"MJ[]X@NG*L>O
M,<U=`0<C.UIXAHC0/KGT6V,8=91GJ%;%([#P,:*KS8`QB6X'6XN-Q`H)W-"1
MJ<B>@=%N/URDI77M3@1[9&@TY@LY-$]9"A):ZX)MET7P%#%IX`T@,W3&<P?O
M-MHY<)1!]0VNC!T.C+MJSWC]Q-2;)0()EJV3SOPX_5TD5'15Q9L*;V2PP2"Y
MR&#%-$APOL54$2!Y`\I0$+&/V)=!C3`/W&IS"V6?,5F]:Z84R/+6*MA4,"FF
8KC(F*LI=VYS_#Z+;?^+N2*<*$@>[HC3@
`
end

↑これです
648デフォルトの名無しさん:04/10/04 16:08:25
procがどうも今ひとつ分からんのですが、
これはどういうときに使うと嬉しい物なのでしょうか。
649デフォルトの名無しさん:04/10/04 16:15:15
メソッドの抽象化。
処理だけあとづけで追加したいときとか。選択したいときとか。
ブロックでもいいけどコールバックとか。
650デフォルトの名無しさん:04/10/04 16:23:36
matzの執拗な他言語叩きと
宗教的博愛精神の関係を教えてください。
651デフォルトの名無しさん:04/10/04 16:25:32
>>648
ブロックを別の関数に渡したいときとか

class MyArray
def initialize *arr
@arr = arr
end
def each
@arr.each(&proc)
end
end
652648:04/10/04 17:13:04
>>649
抽象化ですか、だからとっつきにくいのかな.
>>651
a = MyArray.new
a = [1, 2, 3, 4]
a.each{|x| print x} #=>1234
などとやってみたのですが、やっぱりよく分かりません。
もう少しサンプルを見せていただけないでしょうか。
653デフォルトの名無しさん:04/10/04 17:16:49
>>648
マーティン。
http://capsctrl.que.jp/kdmsnr/wiki/bliki/?Closures
perlで
http://kabocha.org/jelfe/07/21.html
C#2.0で
http://oka326.blogspot.com/2004/09/blog-post.html
groovyで
http://blog.goo.ne.jp/ikkoan/e/4a0b27b590599a30b39c7e133d3a0fc2

俺がクロージャを使うのは専らApollo使っててアクション定義するとこだな。
まあ俺は他では滅多に使わないが機能としてはあった方が楽というか
Javaやってて無いことに気付いた時に悲しい場面が昔あった。
何だったか忘れたが。
654デフォルトの名無しさん:04/10/04 17:43:30
ファイルに格納した文字列を読み込むプログラムを作成したのですが、
ある文字列を読み込んだところで、nil になり、正しく読み込めなくなりました。
これは、文字コードの問題なんでしょうか?ちなみに、shift-jis使ってます。
655デフォルトの名無しさん:04/10/04 17:51:19
うんだめ
656デフォルトの名無しさん:04/10/04 18:03:16
>>654
読み込みはどういう処理にしてるんですか?
スクリプトを公開してみては?
657デフォルトの名無しさん:04/10/04 18:08:20
>>650=>>655
団長!こいつがRubyistを装ってPythonスレを荒らした犯人です!
658654:04/10/04 18:14:17
>>656

読み込みは、簡単に書けば以下のようにしてます。
入力ファイルからある部分の文字列を読み込み、出力ファイルへ書き出すようにしています。
それだけの処理なので、文字コード依存の問題かと思ったのですが...
問題のある行を読み込むと、次の文字列からは全てnilになってしまいます。

while text = in_file.gets do
out_file.print text
end
659デフォルトの名無しさん:04/10/04 18:34:02
>>658
なるほど。あとは"問題のある行"の内容でしょうね。
EOFコードが入ってて、ファイルの終端とみなしてるとか。
その行の内容(文字コード)は確認済みですか?
実例をここで示せます?
660654:04/10/04 18:56:37
>> 659

問題の行の内容は、
「Q08.編集機能は重視するか?---CMカット程度でいい」で、この部分の文字コードは、
「48 56 46 149 210 143 87 139 64 148 92 130 205 143 100 142 139 130 183 130 233 130
169 129 72 45 45 45 67 77 nil」
となります。
「〜CM」という部分まではうまく読み込めるのですが、その後の文字でnilになっています。
661デフォルトの名無しさん:04/10/04 19:11:33
>>660
UNIXとかCygwin使ってるなら、そのファイルの問題の行をodでダンプ
してみたら?
662デフォルトの名無しさん:04/10/04 19:24:46
>>660
text = ''; open('foo.txt', 'rb'){|f|text = f.read}
みたいに全部読み込んじゃってからString#で処理するんじゃダメか?
663660:04/10/04 19:30:44
>>661
やってみます。
さっき、DOSプロンプトで実行してみたら、nilになりませんでした。
cygwinだと文字列の取り扱いでよくエラーでる気が..
でも、わけあってcygwinでやらねば。

>>662
読み込みたくない行があるのと、読み込んだ行を加工したいので、
全部読み込むやり方はできないんです。
664デフォルトの名無しさん:04/10/04 19:32:52
こんなときこそMoonWolfさんに直電を!!

http://devlog.moonwolf.com/
665デフォルトの名無しさん:04/10/04 20:14:14
Ruby 1.8.2・CGI.rbで質問です。

複数のcheckboxを選択して、それらのvalueを
Array型でフォームの値を渡すにはどうしたらいいのでしょうか?

どうしてもString型で渡ってしまうのです。
666デフォルトの名無しさん:04/10/04 20:43:13
スマソ。随分前にした質問 >>482 なのですが、
DOSプロンプトから操作するCUIのrubyスクリプトを組みたいのですが、
別スレッドでキー(標準)入力して本スレッドの挙動を操作することって事実上無理ですか?

過去スレを読んでいると、stdin.getsからは、selectもtimeoutも使えない >>493
と書いてあるのですが。別の方法や抜け道があれば教えていただけませんか?
667デフォルトの名無しさん:04/10/04 21:02:42
>>666
selectとか使えないなら、本スレッドに相当する物は
別のプロセスで動かすのはどうか。

プロセス間通信はdRubyで。
668デフォルトの名無しさん:04/10/04 21:03:21
REXMLってexerbでまとめられなのって俺だけ?
なんか普通にコンソールから実行するのと挙動が変わって
encoding.rbの39行目の
load 'rexml/encodings/UTF-8.rb'
でLoadErrorになる。上記のファイルを手動でレシピファイルに追加してもダメ。

exerbでREXML使えている人いる?
669668:04/10/04 22:09:52
自己解決しました
ttp://miyamuko.s56.xrea.com/20040831.html
どうやらexerbの仕様のようですね…
670デフォルトの名無しさん:04/10/04 22:13:39
>>652
まさにそのeachに渡す部分が後づけで変更できるでしょ。
「xをもらってそれをprintする」という処理がproc(この場合はブロック)によって
抽象化されてるから、その恩恵が得られてるわけ。
つまり、eachみたいなもんをつくろーとしたら必要になるってこった。
671デフォルトの名無しさん:04/10/04 22:50:59
>>665
CGI#[]を使ってる?
CGI#paramsではどうですか。
672648:04/10/04 23:04:23
>>653,671
マーティン読んで、eachみたいなもんに必要
ということで、procをつかめた気がします。
なるほど、抽象化なのですね。
ありがとうございました。
673648:04/10/04 23:05:16
すんません
>>670さんでした。
674デフォルトの名無しさん:04/10/05 00:14:18
>667
> selectとか使えないなら、本スレッドに相当する物は
> 別のプロセスで動かすのはどうか。
> プロセス間通信はdRubyで。
別プロセスを動かそうとしたのですが、
ひょっとしてDOS窓からはfork無理っすか?

threadでも試してみたものの、
やっぱりSTDIN.getsしようとすると途端に調子が悪くなります。
675デフォルトの名無しさん:04/10/05 00:15:25
STDIN.gets 以外の方法を考える方が早いのかも
676デフォルトの名無しさん:04/10/05 00:20:21
>>674
あ、cygwinだとfork動かなかったかも。
なんせwin上でRuby使ってたの何年も前なので許してたもれ。
677デフォルトの名無しさん:04/10/05 00:38:57
>635
解っているとは思うけど、分解能はmsオーダー無いヨ
678デフォルトの名無しさん:04/10/05 01:16:05
>>676
一応実装されてるよ。
679デフォルトの名無しさん:04/10/05 06:49:13
>>638
require "benchmark" して Benchmark.bmbm か Benchmark.measure をつかう。
Process.times を使ってるみたいだから分解能はたぶん処理系依存。
680デフォルトの名無しさん:04/10/05 13:46:52
681デフォルトの名無しさん:04/10/05 14:05:57
拡張ライブラリで質問です。
Ruby/pcap をコンパイルして実行すると、

pcap.so: warning: do not use Fixnums as Symbols

というwarningが出るんです。で、調べたところ Pcap.c の

cPcapStat = rb_funcall(rb_cStruct, rb_intern("new"), 4,
Qnil,
INT2NUM(rb_intern("recv")),
INT2NUM(rb_intern("drop")),
INT2NUM(rb_intern("ifdrop")));

というところがあやしいとわかったのですが、どう直せば良いでしょう?
682デフォルトの名無しさん:04/10/05 14:29:39
>>680
それはRubyだけの問題じゃないというかスレ違い。
683デフォルトの名無しさん:04/10/05 14:41:15
Marshalのデータフォーマットってどの位の頻度でバージョンアップされているの?
684デフォルトの名無しさん:04/10/05 14:54:12
(・∀・)埋め!
685デフォルトの名無しさん:04/10/05 16:24:58
>>680
この場合INT2NUMが返すのはIDの値を持ったFixnumであるわけだから
INT2NUMじゃなくてID2SYMでも使えばいいんじゃないだろうか。
詳しくはrefe -eしてくれ。
文字列に対するIDが欲しいならrb_str_new2()してrb_obj_id()すべきかも
と思ってrefe Struct::newしてみたらやはりID2SYMでいいんじゃないかと思った。
第二引数以降はSymbolか文字列なのでrb_str_new2でもよいが
>>メンバ名に文字列を指定できるのは後方互換性のためだと考えた方が良いでしょう
ということらしいので。

これでわかんなかったらMoonWolfに相談してみろ。
そしてPaypalでお布施しとけ。

ところでnewする場合はrb_class_new_instanceの方が良くないか。
686デフォルトの名無しさん:04/10/05 16:43:45
morqってどうなったの?
687デフォルトの名無しさん:04/10/05 16:48:17
morzになりますた。なんちゃって。
688デフォルトの名無しさん:04/10/05 16:57:36
MoonWolfさんに質問です!
ここもサポートの窓口対象らしいですが
ここで依頼するときはどうすればいいのでしょうか?
何も気にせず疑問のみ書けばMoonWolfさんがいつの間にか返答してくれるのですか?
689デフォルトの名無しさん:04/10/05 17:23:11
class Array
 def eachn(n)
  i = 0
  while i < self.size
   yield self[i,i+n]
   i += n
  end
 end
end
v=[]
[1,2,3,4,5,6].eachn(3){ |i,j,k|
 v << [i,j,k]
}
p v
v=[]
[1,2,3,4,5,6].eachn(2){ |i,j|
 v << [i,j]
}
p v
実行結果
>>[[1, 2, 3], [4, 5, 6]]
>>[[1, 2], [3, 4], [5, 6]]
今日思いつきで、こんなコードを書いてみた。
でも、毎回イテレータ書くのマンドクサイので、標準の機能であったら教えて。
690MoonWolf ◆BwMoonWLvE :04/10/05 17:28:51
>>688
MoonWolfと名指ししてもらえば、回答します。
名指しされてない場合は、気が向いたら回答します。
691デフォルトの名無しさん:04/10/05 17:48:31
汚ねぇソースだなw
692デフォルトの名無しさん:04/10/05 17:54:20
>>685
ID2SYMでもrb_str_new2してもうまくいきました。ありがとうです。
で、ID2SYMのほうを使います。

でも ID2SYM って、README.EXTに書いてないじゃん。
693デフォルトの名無しさん:04/10/05 17:55:49
>>691
また、お前か。
キレイに書き直せるモンならやってみろ、と。
まぁ、オマエには無理だろが(w
694デフォルトの名無しさん:04/10/05 18:10:28
695デフォルトの名無しさん:04/10/05 22:16:08
アホな質問なんですが、p/puts と print ってどう違う(使い分ける)んですか?
696デフォルトの名無しさん:04/10/05 22:16:58
p デバッグ用
puts 最後に改行文字がつく
print 何もつかない
697デフォルトの名無しさん:04/10/05 22:43:40
パターンマッチを行うスクリプトで,以下の部分がエラーになってしまいます.
"premature end of regular expression"と出るのですが,何が原因なんでしょうか?

for i in 0...array.length
if /#{array[i]}/ =~ line
print line
break
end
end
698デフォルトの名無しさん:04/10/05 22:54:36
>>697
array[i] に正規表現のメタ文字が入ってておかしくなってるんじゃない?こうかな?

if Regexp::compile(Regexp::escape(array[i])) =~ line
699デフォルトの名無しさん:04/10/06 00:15:15
るびきちさんとMoonwolf さんは兄弟だと聞いたのですが?
700デフォルトの名無しさん :04/10/06 09:56:15
VS.NETで作成できるWindowsインストーラーでサイレントインストール時に
インストール先をiniファイルなどやオプションなどに記述して
変更する方法はないものでしょうか。
宜しくお願いいたします。
701デフォルトの名無しさん:04/10/06 10:59:15
>700
誤爆ディスカー??
702デフォルトの名無しさん:04/10/06 11:30:06
Ruby.NETがまともに動いて
VS.NETに組み込まれる可能性なんて
絶対にないからな。
703デフォルトの名無しさん:04/10/06 11:56:24
arton氏NETRuby投げちゃってるしね。
つか、.NETは実質C#一人勝ちの世界だから気にしてもしょうがない。
これでM$がとちくるってC#Scriptなんて持ち出してきたら分からんがw
704デフォルトの名無しさん:04/10/06 13:29:10
[ruby-dev:24435] って、無限再帰を防げていないのが問題なんじゃなくて、
SystemStackError で止まらずに segmentation fault に突入しちゃってる、
というのが問題なんじゃないの?
705デフォルトの名無しさん:04/10/06 13:44:28
>704
なしてそれをMLでなくここで言いますかw
706デフォルトの名無しさん:04/10/06 13:45:44
DQN.NET
707デフォルトの名無しさん:04/10/06 14:00:12
>>700
それはインストーラ作成ツールの話だからRubyと全く関係がない。

>>702
ActiveStateがRubyに興味を示せばVisual Ruby.NETができるかもね。

>>703
単なるbridgeでいいならこんなのもあるよ。
http://www.saltypickle.com/rubydotnet/
708648:04/10/06 14:12:26
RDEで学ぶdebugの作法、のような記事があると助かります。
なければ、MoonWolfさん一つお願いできませんか。

709デフォルトの名無しさん:04/10/06 14:47:00
>707

>単なるbridge(以下略

ほー、こんなんもあるのね。
ActiveScriptRuby使えばCOM経由で……と思ったりしてたが
試してみますか。
710デフォルトの名無しさん:04/10/06 15:55:06
ライブラリを、moonwolf サーバーに置くのは、やめてください!!!
いつ行っても、手に入れられません。
tdiary も良く落ちてるし、「rubyは不安定」と思われているのは、
この2つのサーバーが原因だと思います。
711デフォルトの名無しさん:04/10/06 16:07:07
> tdiary も良く落ちてるし、「rubyは不安定」と思われているのは、
> この2つのサーバーが原因だと思います。

それを言ったらZopeなんかものすごいことになってるのだが。
712デフォルトの名無しさん:04/10/06 16:10:32
>>711
まぁそう妬むなよ
713デフォルトの名無しさん:04/10/06 16:17:03
>>711
落ちてるのはmojiタソのところだけです。
714デフォルトの名無しさん:04/10/06 16:32:30
1 名前:西郷 ★[] 投稿日:04/09/25 08:36:37 ID:???
■インターネットでご活躍の皆様へ、そしてご活躍予定の皆様へ
BIG な BIG な、サーバーを用意しました
遅い・・よく落ちる・・からの開放!さらなるステップアップへ!

http://www.maido3.com/server/


●月々\1,000からのレンタルサーバ

http://www.binboserver.com/

●無料サービス続々登場 !!
DDNS , 掲示板 , QRコード , チャット , 無料ホームページ , 無料カウンタ , etc ....

http://news.kakiko.com/

●目標 2ちゃんねる完全互換 無料レンタル掲示板 !!
使ってみてね.....

http://yy.kakiko.com/
http://yy10.kakiko.com/beta/ (開発室)
715デフォルトの名無しさん:04/10/06 19:44:30
HashのキーにSymbolを使うとなかなか(・∀・)イイ!!
順番が関係ない物はArrayよりHashの方が扱いやすいし
716デフォルトの名無しさん:04/10/06 20:07:54
>>715
むかーし、HashのキーにSymbol使って、
それをMarshalしてえらい目に遭ったことがあるw
今は大丈夫なのかねえ。
717715:04/10/06 20:46:50
>>716
げっ、構造の丸ごとコピーにMarshal使ってる…
今のところ変な挙動はないようだが…((( ;゚Д゚)))ガクガクブルブル
718デフォルトの名無しさん:04/10/06 21:50:25
リファレンスによると、Marshal.loadとrestoreは

>以前 Fixnum, Symbol が渡されない不具合があったが、 1.6.7 2002-03-15 ごろに改修済み

らしい
この辺は関係あるのかな。
719デフォルトの名無しさん:04/10/06 23:35:17
Ruby の glob で使えるワイルドカードって、
Ruby 独自のモノなんですか?それとも Unix のでは
標準的なものなんですか?
720デフォルトの名無しさん:04/10/06 23:41:42
>>719
ワイルドカード自体、シェルによって方言がある。
だから標準かと言われると、まあまあいい線いってんじゃないのて答になるかな。
721デフォルトの名無しさん:04/10/06 23:49:05
>>719
POSIX に glob(3) ってのがあるね。実装的には Ruby のは独自みたいだけど。
722デフォルトの名無しさん:04/10/07 01:02:34
Rubyは寄せ集め。
いわば雑種。
今更誰が親かなんてわかんない。
723デフォルトの名無しさん:04/10/07 01:15:58
Rubyのglobってzshをベースにしてるんじゃないのかと思ってた。
他のシェルに **/ とかはないと思ったけど。
まあzshはもっとリッチに指定できるけど、煩雑すぎるだろうね。

標準的かというと、標準の機能は備えていて、追加分がいくつかある、という
解答が正しい気がする。
724デフォルトの名無しさん:04/10/07 01:22:59
>>723
zshならば*(/)とかも使いたい!!
いやま、別にいらんけどあったら便利かな。
725719:04/10/07 01:33:19
勉強になりました。自作プログラムで Ruby と同じ形式のワイルドカードを
使えるようにしたんですが、ドキュメントに書くのに、なんて書いたら
いいかなぁ〜と思い質問しました。とりあえず「Ruby風ワイルドカード」
とでも書いておきます。
726デフォルトの名無しさん:04/10/07 02:08:21
>>725
>Ruby風ワイルドカード
わかる人少なそう…w
727デフォルトの名無しさん:04/10/07 03:38:20
ruby を入門するのに一番良い方法を教えてください。
知っている言語は sh と emacs lisp が少々です。
本でも web でもどちらでもかまいません。
よろくおねがいします。
728デフォルトの名無しさん:04/10/07 03:49:53
>>727
まずはmatzのチュートリアルかなあ。とにかく最低限の入門で、
こいつでざっとよんであたりをつけてから書籍なりなんなりかな。

http://www.ruby-lang.org/ja/20020310.html

書籍では「たのしいRuby」がおすすめ。
729デフォルトの名無しさん:04/10/07 04:09:40
シェルスクリプトが書けるなら、Rubyで書き直してみると良いと思う。
やっぱ、使って慣れるのが一番。
shとlispしか知らないのなら、
オブジェクト指向の感覚が掴み易い本が良いんじゃないかな、最初は。
自分で立ち読みして決めた方が良いと思うぞ、気に入らなかったら買い直せば良いだけだ。

あとは、興味のあるClassについて、
本家サイトのリファレンスマニュアルをぼーっと眺めてみる。
730デフォルトの名無しさん:04/10/07 04:12:12
>>728
うげぇええええええ
Python の方が良さげ。
さよなら
731デフォルトの名無しさん:04/10/07 06:43:52
否定はしない
732デフォルトの名無しさん:04/10/07 09:46:54
Ruby ってデフォでマルチバイト対応ってのがウリなだけだろ?
そんなの各言語のUTF8化でお役目御免じゃんw
過去の汚物だな >Ruby
733デフォルトの名無しさん:04/10/07 10:57:24
Unicode化についてはPython JPのMLでflame warになってた記憶があるけど。
いまだにSJIS対応Pythonなんてものが配布されてたりするし。

そういえばRubyのm17nってどうなってるの?
つうか、具体的には何を取り扱うことになってるの?
734デフォルトの名無しさん:04/10/07 11:42:37
mswin版のruby-1.8.1をwindows2000で使っているのですが
debug.rbがうまく動いてくれないのは、よくある話ですか?
ステップ実行しても先の行に進まずに、何度も同じ行を繰り返すんですが。

1.6.8と1.8.2ではちゃんと動いているのが確認できてます。
735デフォルトの名無しさん:04/10/07 11:58:03
>>733
とりあえず鬼車ダウソしてみれ。そこにあるコードはたぶんm17nなRubyでも扱うことになると思ふ。

>>734
くだらんツッコミだけど、まだリリースされてないバージョンを書かないで欲しい。じゃないとプレビューの存在意義から考えても、リリース後ごっちゃになるっていう意味でも、うれしくない。
736デフォルトの名無しさん:04/10/07 12:15:47
>>730
いまから勉強を始めるなら、Ruby より Python ですか?
737デフォルトの名無しさん:04/10/07 12:22:44
>>736
HSP
738デフォルトの名無しさん:04/10/07 12:30:46
「コード生成」って具体的にはどういうものですか?
739デフォルトの名無しさん:04/10/07 12:37:48
puts 'puts "hello, world"'
740デフォルトの名無しさん:04/10/07 13:31:20
Ripper って何ぞや、ってのがまとめられてるドキュメントってありますか?
できれば日本語で。
741デフォルトの名無しさん:04/10/07 14:17:31
http://www.loveruby.net/d/?date=20040922#p02
くらいしかないんじゃないかな、今のとこ。
742デフォルトの名無しさん:04/10/07 16:06:55
>>741
ありがとうございます。かなりわかってきました。面白そうですね。
IRC bot の安全版 eval プラグインみたいのが作れたりするかな?
743デフォルトの名無しさん:04/10/07 19:00:20
死ね
744デフォルトの名無しさん:04/10/07 19:13:57
一連のアンチカキコはPythonスレで飼われているキチガイですので誤解なきよう
745デフォルトの名無しさん:04/10/07 19:49:18
Pythonスレでもアフォが暴れてるよ
もうね、アボガド(ry
746デフォルトの名無しさん:04/10/07 19:59:16
パワーズ
747江戸川コナン:04/10/07 23:42:55
わかったぞ!Python、Rubyの両スレで暴れていた真犯人はHSP厨、お前だ!
748デフォルトの名無しさん:04/10/08 00:14:36
マジレスすると Python の方が Ruby より言語仕様は格上。
Ruby は些細なこと(例えばこの前の言語バトル)で満足感を得るぐらいs
749デフォルトの名無しさん:04/10/08 00:18:44
マジで質問ですがどの辺りが格上なんですか?
750デフォルトの名無しさん:04/10/08 00:22:43
直観でw
いや、Ruby は必死だしw
なにかとねw
751デフォルトの名無しさん:04/10/08 00:24:40
どうみても一番必死なのはオマエ
752デフォルトの名無しさん:04/10/08 00:29:58
日本限定だし・・・正直国産レッテルとか不要だな・・・
判で押したような考えの日本人だけの愛用者・・・オモロイ奴がいない・・・
753デフォルトの名無しさん:04/10/08 00:48:13
外国でも使ってるヤツいるだろ。
rubyの影響受けた言語も新しく産まれてるし。
754デフォルトの名無しさん:04/10/08 00:53:42
> rubyの影響受けた言語も新しく産まれてるし。
具体的には何?
755デフォルトの名無しさん:04/10/08 01:02:19
JVMで動くGroovy。将来Javaで標準サポート予定。
ちなみにGroobyは意図的にRubyに発音似せたらしいよ。
756デフォルトの名無しさん:04/10/08 01:28:09
>>748
発想自体が違うよ。
Ruby と Python を比べるなんて、
C と Pascal を比べるのと同じくらい不毛。
757デフォルトの名無しさん:04/10/08 01:33:55
ごめんPythonもRubyも全然知らないで荒らしたいだけだったんだwww
758デフォルトの名無しさん:04/10/08 01:40:28
ArrayとHashって使い所が結構難しいな
名札を使いたければHash
順番が大切ならArray
indexを使いたいならHash
出し入れの速度ならArray?
かな…まだまだありそうだ…
759デフォルトの名無しさん:04/10/08 01:49:40
>>754
groovy
760デフォルトの名無しさん:04/10/08 02:24:42
>>758
でかいけど中身が疎ならHash、とか?

a = []; a[0] = 1; a[10000] = 2
b = {0 => 1, 10000 => 2}

とか。Arrayでも問題無し?
761758:04/10/08 03:08:36
自己レス
>indexを使いたいならHash
適当にでっち上げたベンチマークだと相当速いんだが、実際に使うと
状況にかなり左右されるなバラツキが激しいというか最悪Arrayより遅くなる
…難しい…
762デフォルトの名無しさん:04/10/08 04:38:37
ベンチマーク以前に、「データ構造とアルゴリズム」みたいな本で一から勉強した方が良さそうな悪寒
763デフォルトの名無しさん:04/10/08 13:32:07
> インデントは2。なぜなら空間効率が高いから。
764デフォルトの名無しさん:04/10/08 13:44:45
>>763
あ、先越されちゃった。まあいいか。matzさんのコーディングスタイル。
ttp://www.rubyist.net/~matz/20041006.html#p02
765デフォルトの名無しさん:04/10/08 14:19:04
_ [Ruby]コーディングスタンダード
社内メーリングリストでRubyのコーディングスタンダードの話題が持ち上がる。
個人的には「自分で勝手に決めて」という感じなのだが、まあ、私のスタイルを参考にしたい人もいるだろうということで、まとめてみた。

その転載。

ローカル変数名はすべて小文字。単語の区切りは"_"。
インスタンス変数名は(先頭の"@"以外は)すべて小文字。
クラス名、モジュール名は、先頭は大文字、続 く単語も先頭の文字を大文字に(つまりCamelCaseStyle)。
クラス・モジュール以外の定数は全部大文字。単語の区切りは"_"。
メソッド名は一部の例外を除きすべて小文字。
述語メソッド(真偽値を返すメソッド)には末尾に"?"をつける。
"!"をつけるようなメソッドはなるたけ作らない。
ライブラリファイル名はそのファイルが提供するクラス名・メ ソッド名を小文字化したもの(もしあれば)。そのような「名前」 はできるだけ一単語のものを用いる。
モジュールをネストする時には'foo/bar'のような形にディレ クトリを分ける。
真偽値の判定には"== true"という判定を行わない。なぜなら Rubyではtrueは唯一の真値ではないから。
メソッド名とメソッド引数のまわりの括弧の間に空白を置かな い。なぜなら警告されるから。
演算子の両側に空白をいれる。または両側に空白をいれない。 当たり前。
kind_of?やisa?を使わない。DuckTyping推奨。
ライブラリファイルの末尾には if __FILE__ == $0 で囲んで テストケース(かサンプルプログラム)を書いておくとよい。
他人が使うRubyプログラムにはRDocコメントをつけておく(と 良いと思うが、自分ではなかなかできてない)。
インデントは2。なぜなら空間効率が高いから。
自明なことはコメントしない。なぜなら本当に大切なコメント が埋没してしまうから。
「未来の自分が混乱しそう」と思ったことは躊躇せずコメント する。そうでなければコメントはあまり必要ない。
「本当に必要だ」と感じた時以外はメソッドは20行以内に抑え る(数はどうでもよい、目安に過ぎない)。例外は巨大なcase文 を含むディスパッチコードくらいか。
共通機能部分はモジュールにくくり出す。
お役に立つか、立たないか。ご参考までに。
766デフォルトの名無しさん:04/10/08 14:34:23
>メソッド名とメソッド引数のまわりの括弧の間に空白を置かな い。なぜなら警告されるから。
>演算子の両側に空白をいれる。または両側に空白をいれない。 当たり前。

説明する気無いだろw
767デフォルトの名無しさん:04/10/08 14:43:12
>ライブラリファイルの末尾には if __FILE__ == $0 で囲んで テストケース(かサンプルプログラム)を書いておくとよい。
これはいいね、久しぶりにmatzの言うことで感心した。
768デフォルトの名無しさん:04/10/08 17:17:25
やっぱ、モジュールが一番充実しているのは Perl かな?
769デフォルトの名無しさん:04/10/08 17:34:05
>>768
それじゃぁ、そのPerlを目標にライブラリを充実させましょう。
770デフォルトの名無しさん:04/10/08 17:41:33
>>768
本当に*充実*か?
771デフォルトの名無しさん:04/10/08 18:30:20
>>770
CPAN内を巡回しれよ…

つぅかフクロウ本に書いてあるね
Python > Ruby
772デフォルトの名無しさん:04/10/08 18:40:26
Ruby/Python がある以上、Python 以下という事だけは無いな。
773デフォルトの名無しさん:04/10/08 18:58:51
>>771
ん?どこに書いてるっけ?

フクロウ本といえば、第1版の監訳者氏の紹介文が印象的ですね。
> 第1回 Perl Conference Japan のプログラム委員を依頼されるが、
> 基調講演に国産スクリプト言語である Ruby の話題を推薦し、
> Perl ファンからの顰蹙を買う。
774デフォルトの名無しさん:04/10/08 22:49:28
.newで生成したクラスを明示的に解放することってできたっけ?
775デフォルトの名無しさん:04/10/09 00:03:00
> .newで生成したクラス
Class.new で生成したクラスオブジェクト、ってこと?

オレの理解は↓なんだけど、間違ってたらアレなんで誰かツッコミ希望

クラスオブジェクトに限らず任意のオブジェクトについて
*そのオブジェクトを指定して明示的に解放する手段はない
*「どこからも参照されてないのに GC.start しても解放されない」可能性がある。(保守的GCだから)
776デフォルトの名無しさん:04/10/09 00:03:45
クラスの初期化時(initializeメソッド実行時)に発生したエラーを
親に伝える方法ってどんなのがありますか?
777デフォルトの名無しさん:04/10/09 00:11:59
>>776
親ってなんじゃい?
778776:04/10/09 00:28:39
>>777
具体的には
class A
 def initialize(foo)
  hoge = f(foo)
  if hoge == nil then
   ※1 エラー検出
  end
  …
 end
end

a = A.new    <ここで※1になったかどうかを検出したい
な感じです。
779デフォルトの名無しさん:04/10/09 00:36:06
>>778
例外出して受けたら?
780776:04/10/09 01:07:02
>>779
ありがとうございます
例外使ってみます
781774:04/10/09 01:28:48
>>775
thx
Class.new で生成したクラスオブジェクト、ってこと?
そうです。

やっぱり任意に解放することはできませんか…
どうしても困る事じゃないんですけどね。
782デフォルトの名無しさん:04/10/09 02:35:46
変数宣言が不要 が売りみたいですが、perlの use strict みたいなことできませんか。
ってかそんなんなくてもええからrubyスタイルでバグ少なくする方法教えてくれ。
783デフォルトの名無しさん:04/10/09 02:43:58
>>782
test first で書く
784デフォルトの名無しさん:04/10/09 03:25:12
ライバルはHSPのみ、か
785デフォルトの名無しさん:04/10/09 06:19:48
Rubyの=が、名札をつけるってことのいい例を思いついた。(初心者への説明で)

a = "old"
b = a.chop
c = "new"
d = c.chop!

p a.id => 23214536
p b.id => 23214524
p c.id => 23214512
p d.id => 23214512

これで、破壊的メソッドと、非破壊的メソッドの重要性もわかりそう。
786デフォルトの名無しさん:04/10/09 07:34:18
>>785
コメントです。

* (Ruby 1.8以降では)Object#id は推奨されていません。
 Object#object_id を使った方が無難でしょう。

* 破壊的メソッドが全て self を返すわけではありません。

* ある破壊的メソッドが self を返すケースがあったとしても、
 常に self を返すとは限りません。たとえば "".chop! は
 self でなく(変更されなかったことを表わす)nil を返します。

* 名札の話だとすれば
  a = "old"
  b = a.dup
  c = "new"
  d = c
 を、より分かりにくくした例に思えます。
 (String#{chop,chop!} の知識が必要になるで)

* 破壊的/非破壊的の方は、例になっていないように思えます。
 (このサンプルだと*破壊*されてるところが見えてないので)
787デフォルトの名無しさん:04/10/09 11:58:19
>self でなく(変更されなかったことを表わす)nil を返します。
この仕様って現実的にはどう利用するの?
788デフォルトの名無しさん:04/10/09 12:20:48
>*破壊*
*band厨ですか?
789デフォルトの名無しさん:04/10/09 12:46:54
素人質問スマソ。VRubyのVRStaticでGUIのパネルに表示した文字って
更新できますか?ボタンを押した際、hoge1→ hoge2と更新したいのですが。

def construct
$name = "hoge1"
addControl(VRStatic, "st1", $name, 0, 0, 100, 30)

end
def btn1_clicked
$name="hoge2"

end
790デフォルトの名無しさん:04/10/09 12:57:38
>>*破壊*
>*band厨ですか?

いみふめー
791デフォルトの名無しさん:04/10/09 14:02:14
*鑑定*
792デフォルトの名無しさん:04/10/09 14:12:16
793デフォルトの名無しさん:04/10/09 14:34:37
>>782
俺のイメージでは変数の宣言不要というのはちょっと違う。
宣言と代入が同時というイメージ。まあグローバルとかは違うけれど。まあ-wあるし。
この仕組みは結構よく出来てるよね。Pythonとか由来なのかな?
これだと意外に単純なスペルミスにははまらない。
794デフォルトの名無しさん:04/10/09 14:35:32
*破壊*の巻物 (Scroll of *Destruction*)
795デフォルトの名無しさん:04/10/09 15:18:33
Destruction Baby
796デフォルトの名無しさん:04/10/09 15:49:54
Love is destructive
797789:04/10/09 15:50:39
自己レスソマソ。>>789 @st1.caption = "hoge2"するだけだった…
798デフォルトの名無しさん:04/10/09 22:35:40
古代万色ドラゴンはあなたをひっかいた - more -
########################
DDDDDDDDD@DDDD
########################
799デフォルトの名無しさん:04/10/09 23:21:42
暗黒の魔法書[Ruby-DBウェブデザイン]を自動破壊します。
800デフォルトの名無しさん:04/10/10 00:07:50
Countdown to Extinction
801デフォルトの名無しさん:04/10/10 05:12:35
滅茶苦茶凝ったRubyのGUIのスクリーンショットなどあれば紹介していただけませんか?
Rubyでどこまで完成度の高い or 洗練されたGUI作れるのか参考にしたいのですが。
802デフォルトの名無しさん:04/10/10 05:20:12
>>801
GUIって言語に依存するもんじゃないよ。
803デフォルトの名無しさん:04/10/10 06:09:57
TkにSDLの窓を入れられるんだから
他のGUIにもSDLの窓を入れられたらいいのに、と夢想
804801:04/10/10 06:37:40
>>802
あいや、失礼。そもそもは、
(たとえば)Macのアプリのようなwindow装飾って、
どのくらいコードを書けば実現できるんだろなぁと素朴な疑問なわけです。
半透明の効果を使ったりとか、凝ったインターフェースを
Rubyで書く場合のテクニカルな方法をいろいろ参考にしたかったので…
805デフォルトの名無しさん:04/10/10 08:00:30
>>804
それはRubyじゃなくてGUIツールキットの実装如何
そのような機能を持ったGUIツールキットなら実現できるかと

それにGUIの半透明処理なんてRubyでやったら遅くて使い物にならない気が…
806デフォルトの名無しさん:04/10/10 08:04:16
>804
そこでRubyCocoaですよ。
807デフォルトの名無しさん:04/10/10 10:34:43
>804 
そこでwxRubyですよ。 
808デフォルトの名無しさん:04/10/10 12:13:09
ルビ厨はGUIに不自由なので能力的に実現不可能です。
809デフォルトの名無しさん:04/10/10 12:33:20
とHSP厨がほざいております。
810デフォルトの名無しさん:04/10/10 12:40:33
VC/VC.NETあたりと比較されて言われるならまだ納得がいくが
HSP相手には言われたくないなw
811デフォルトの名無しさん:04/10/10 13:03:27
>>805
> それにGUIの半透明処理なんてRubyでやったら遅くて使い物にならない気が…
「気が…」ではなくて、実際に凝ったことをRubyでやってみたらどうなるのか、
コードやパフォーマンスを確認したいのが >>801 さんの主張だと思われ。
812デフォルトの名無しさん:04/10/10 13:10:53
GUIツールキット次第
813デフォルトの名無しさん:04/10/10 13:13:08
814デフォルトの名無しさん:04/10/10 13:29:09
てゆーか、それ、GUIじゃなくてただの画像処理じゃん。
815デフォルトの名無しさん:04/10/10 14:04:10
samidareっていまダウンロードできますか?
816デフォルトの名無しさん:04/10/10 14:07:32
半透明処理するのに最終的にネイティブメソッド呼ぶなら何使ってもそう変わらんはず。
ウィンドウのプロパティとしてアルファ値が設定できる環境ならなおさら。
設定したらあとは環境任せで言語側の処理はないから。
Win32APIでいうと
SetWindowLong(hVimWnd, GWL_EXSTYLE,
GetWindowLong(hVimWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
pSetLayeredWindowAttributes(hVimWnd, 0, gbAlpha, LWA_ALPHA);
UpdateWindow(hVimWnd);
したらあとはWindowsが勝手にやってくれる。
817デフォルトの名無しさん:04/10/10 14:10:55
そんな事したら移植性のかけらも無いな
818デフォルトの名無しさん:04/10/10 15:44:59
そこでWine
819デフォルトの名無しさん:04/10/10 16:04:22
幾つか半透明化できるアプリを wine で起動してみたが、半透明にならなかったぞ?
820デフォルトの名無しさん:04/10/10 16:08:35
半透明処理ってX11だとR6.8が必要だっけ?
821デフォルトの名無しさん:04/10/10 17:12:55
半透明処理をサポートしてるGUIツールキットってある?
もう十分標準的な機能だよね?
822デフォルトの名無しさん:04/10/10 17:14:53
.NET Framework, VCL
823デフォルトの名無しさん:04/10/10 21:42:18
>>807
Mac版のwxRubyってどうよ?
Win版はImageとDC周りに挙動不審なところがあるよ…○| ̄|_
824デフォルトの名無しさん:04/10/11 10:49:46
VRuby+WIN32APIでSetLayeredWindowAttributes駆使したプログラム書いても
そんなに大変じゃなかったけど。
825デフォルトの名無しさん:04/10/11 18:37:13
rubyタイプ数多すぎ
826デフォルトの名無しさん:04/10/11 21:49:28
http://www.fdiary.net/ml/ruby/msg/403

フレームになりそうな予感。
827デフォルトの名無しさん:04/10/12 01:19:12
(・∀・)ヨガフレイム
828デフォルトの名無しさん:04/10/12 02:28:25
懐かしいなあ……
829デフォルトの名無しさん:04/10/12 05:07:15
ソフトウェアの匠―プログラミング言語からソフトウェア特許まで日本の第一人者が技術の核心を解き明かす
まつもと ゆきひろ (著), 日経バイト (編さん)
http://www.amazon.co.jp/exec/obidos/ASIN/4822206653/

外出ですか?
830デフォルトの名無しさん:04/10/12 05:09:14
京女で教えてみたい(謎
831デフォルトの名無しさん:04/10/12 05:25:19
>>829
またオナニー書籍が上梓されるのか・・・紙の無駄だよ。
832プログラミング初心者:04/10/12 06:43:41
ruby/tkで作ったウィンドウの上に、
Excelのコンポーネントをのせる
(表現がおかしいいかもしれないですけど、Excelを使いたいってことです)
ことってできますか??
できるなら、サンプルちょっと書いてみてもらえませんか?
833デフォルトの名無しさん:04/10/12 06:49:31
Pythonにしとけよ
834デフォルトの名無しさん:04/10/12 11:21:44
必死だなw
835デフォルトの名無しさん:04/10/12 11:22:03
>>832
人に頼りすぎ
836デフォルトの名無しさん:04/10/12 12:29:51
>>832
できるなら、質問する前にもうちょっと調べてもらえませんか?
837デフォルトの名無しさん:04/10/12 12:46:20
>>832
できるなら、自力で挑戦してどこまで出来たのか教えてもらえませんか?
838デフォルトの名無しさん:04/10/12 12:56:24
そこで、Moonwolfさんの出番ですよ。
839デフォルトの名無しさん:04/10/12 12:57:16
Rubyの最大の欠点はこの腐ったコミュニティが原因だよ
840デフォルトの名無しさん:04/10/12 13:04:34
>>839
> この腐ったコミュニティ
なんで?キリスト教系宗教団体じゃなかったの?
名メ本Ruby無職にクリティカル
842プログラミング初心者:04/10/12 13:49:58
VisualuRubyで、IEならわかりました。
これはActiveXとかいう技術を使ってるようなのですが、
ActiveXってインターネットに対応するための技術(?)のような説明が書いてあって
なぜ関係あるのかわかりません。
Excelはまた別なのかな??

OLEっていうのはわかります(つもり)が、どうも、ウィンドウに貼り付けることとは関係なく、貼り付けた後の操作に使うんですよね。

ヒントください。
843デフォルトの名無しさん:04/10/12 14:09:04
>>842=>>832
アプリの埋め込みにはCOMというコンポーネント技術が使われている。
昔はOLE2と言われたこともある。Active Xはマーケッティング用語だな。
で、COMのコンポーネントを埋め込むには、それがCOMのコンテナである
必要があるわけだが、tcl/tkには元々そんなもの存在しない。OpTcl
というCOM拡張があるが、これがRubyから利用できるかどうかは知らん。

http://www2.cmp.uea.ac.uk/~fuzz/optcl/default.html

ていうかvruby使った方がよさそうだが。
844デフォルトの名無しさん:04/10/12 14:53:04
わざわざGUIの超不得手なRubyでがんばって実装する理由はないんだが。
845デフォルトの名無しさん:04/10/12 14:54:17
>>843
ありがとうございます。

なるほど。でも残念。ruby/tkの本が多いから、できるだけ使いたかったのですが。。

別画面で我慢するか、vrubyを検討してみます。
846デフォルトの名無しさん:04/10/12 19:50:44
大量のデータ列(要素の数で数万)から目的のデータを探す方法で
Array#index、Hash#indexより速く見つけられるメソッドとかってある?
847デフォルトの名無しさん:04/10/12 19:58:23
>>846
データが何なのかによるけれど、データをキーに Hash を作ってやれば
O(1) で検索できる……って、そんな話じゃない?

# データ列
data = ['foo', 'bar', .....]

h = Hash.new(false)
data.each{|element| h[element] = true}

# 'baz' がデータ列に含まれるか?
h['baz'] #=> true/false
848デフォルトの名無しさん:04/10/12 20:21:17
>>846
Hashより速い方法というのは知らない。というかないのでは。 O(1) だし。

ただし、いったん Array が出来上がっているのであれば、他の構造に変換し
てから検索するよりも、 Array#index だけの方が良い場合はあるかもしれな
い(同じデータ列に対して1回しか検索しないとか)。
849デフォルトの名無しさん:04/10/12 20:47:35
C++のstd::setみたいなのを欲しい時って、
>>847みたいな感じでHashを使うのが普通だと思うんだけど、
自作したOrderedArrayとか使ってる人っていますか?
850デフォルトの名無しさん:04/10/12 20:55:15
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,./<>?;:\'"-_=+[]{}@#$%^&*()'
puts Array.new(ARGV[0].to_i > 0 ? ARGV[0].to_i : 10){ chars[rand(chars.size)].chr }.join
851デフォルトの名無しさん:04/10/12 21:01:02
>>850
パスワード生成?
852デフォルトの名無しさん:04/10/12 21:01:54
>>849
普通は Set を使うんじゃないか? まあ Set は内部的には Hash で実現してるけど……。
853デフォルトの名無しさん:04/10/12 21:11:51
Setってあったのね、知らなかった…
854デフォルトの名無しさん:04/10/12 21:20:53
標準添付のライブラリでも知られてない物は結構ありそう。
855846:04/10/12 22:12:00
>>847,848
Hashのキーとして登録すれば良かったのか!
めっちゃ速くなりました。ありがとう

>データが何なのかによるけれど
画像のカラーデータです。パレットから検索してくるのにindexだとかなり時間かかるんで
これだけ速くなるなら探すためだけにHash作っても速いかも…
856デフォルトの名無しさん:04/10/12 23:51:02
require 'vr/vruby'
include VRKeyFeasible
でGUIの画面から矢印キー↑↓を読み取る方法ってあります?

def self_char(keycode, keydata)
p keycode
end

しても、矢印キーだけは無反応なんですけど…
857デフォルトの名無しさん:04/10/13 04:02:51
858デフォルトの名無しさん:04/10/13 05:02:56
ルビ教信者さんは今月のリナマガのまつもと教祖の駄文コラムにも盲目的に絶賛するの?
859デフォルトの名無しさん:04/10/13 05:05:28
860デフォルトの名無しさん:04/10/13 09:42:39
>>847
配列をハッシュに登録するのって、ループでまわさなくても、やる方法ってなかった?
861デフォルトの名無しさん:04/10/13 11:27:48
>>860
ary = %w[ alpha bravo charlie delta ]

hash = ary.inject({}) { |h,k| h[k] = 1; h }
hash['alpha'] # => 1
862デフォルトの名無しさん:04/10/13 11:38:31
data = ['foo',true,'bar',true...];
Hash[*data]

コンストラクタで渡してやってもできるみたい。
863デフォルトの名無しさん:04/10/13 12:23:10
>>856
charイベントでは取れないんじゃない?
俺はmodule VRKeyFeasibleにkeydownイベントを追加してるよ。

require 'vr/vrhandler'
module VRKeyFeasible
def keyfeasibleinit2
addHandler(256,"keydown", MSGTYPE::ARGINTINT,nil)#WM_KEYDOWN
addHandler(260,"syskeydown", MSGTYPE::ARGINTINT,nil)#WM_SYSKEYDOWN
acceptEvents [256,260]
end
def vrinit
super
keyfeasibleinit2
end
end

これでself_keydown(keycode,keydata)が発生するはず。
いまのところ支障はないみたい。
864デフォルトの名無しさん:04/10/13 12:33:16
>858
どの記事? 最近雑誌も立ち読みできんからなー。
865デフォルトの名無しさん:04/10/13 13:44:05
ttp://itpro.nikkeibp.co.jp/free/ITPro/NEWS/20041012/151080/

Ruby 好きだったけど島根県と聞いて激しくがっくり・・・orz
866デフォルトの名無しさん:04/10/13 14:11:01
>>865
なぜに?どの都道府県ならがっくりしなかったんでしょう?
867デフォルトの名無しさん:04/10/13 14:46:53
>>866
さ い た ま?
868デフォルトの名無しさん:04/10/13 14:48:06
ttp://www.rubyist.net/~matz/20040906.html#p05
> けど、Rubyって「島根発」とか「島根県内技術者が作った」ってイメージはあんまりないよな。
869856:04/10/13 16:17:41
>>863
ありがとうございます。完璧にうまくいきました。
870デフォルトの名無しさん:04/10/13 20:35:33
こういうのがあったら嬉しかったりするだろうか?

%R/[2004-10-13] (HOGE)/ # => /\[2004-10-13\] \(HOGE\)/
871デフォルトの名無しさん:04/10/13 21:10:11
ここ島根から和歌山、奈良、京都、兵庫、三重、滋賀、大阪、果ては沖縄まで We Rock City♪
872デフォルトの名無しさん:04/10/13 21:14:13
1.8.2ってなんでまだリリースしてないの?
まさか忘れてるとか?
873デフォルトの名無しさん:04/10/13 21:55:00

1)アキラさんが頑張りすぎ
2)matzがサボりすぎ

874デフォルトの名無しさん:04/10/13 22:47:25
core を吐くと次のようになります。
875デフォルトの名無しさん:04/10/13 23:02:32
>>872
溜まった膿を出しているところです。
876デフォルトの名無しさん:04/10/13 23:31:27
>>870
Regex.quoteと何が違うのか。
877デフォルトの名無しさん:04/10/14 00:09:37
>>876
タイプ量が減るのが(゚д゚)ウマーという話だと思う

オレも Regexp.compile(Regexp.quote(str)) とか
/#{Regexp.quote(str)}/ とか書くのがウザイと思うことがよくある。

ていうか 1.9 になったすぐ後あたりで、
「/#{str}/ で自動的に quote しよう」とかいう話が出てたような気がしたけど、
その後どうなったっけ。
878デフォルトの名無しさん:04/10/14 00:57:53
>>877
忘れられてる。
879デフォルトの名無しさん:04/10/14 01:03:28
あんまりリテラル増やすのもどうかと思うけど、
たしかにRegexp.quoteの省略記法は欲しいね。
880デフォルトの名無しさん:04/10/14 03:56:49
>>870
それ便利そうだな。
881デフォルトの名無しさん:04/10/14 06:59:14
GUIのプログラムを始めて書いてるんですが、(vruby使ってます)
>>863に書いてあるような、
keydownやMSGTYPE::ARGINITINTなどという言葉は、どこで調べればいいのでしょうか?
マイクロソフトのプログラミングの本を買ったりしないといけないでしょうか?

>addHandler(256,"keydown", MSGTYPE::ARGINTINT,nil)#WM_KEYDOWN
882デフォルトの名無しさん:04/10/14 10:51:58
>>868
けど、Rubyって「日本発」とか「日本国内技術者が作った」ってイメージはあんまりないよな。
883デフォルトの名無しさん:04/10/14 11:02:39
思いっきり国産臭ぷんぷんなんですが
嫌窓厨多いし
884デフォルトの名無しさん:04/10/14 11:07:14
嫌窓厨はだいたいUN*X使ってるっしょ。
TRONマンセーな香具師ばっかなら国産臭いけどなw
885デフォルトの名無しさん:04/10/14 11:19:46
TRONは組み込み系の世界標準を目指しているらしいし
886デフォルトの名無しさん:04/10/14 12:22:43
>>885
世界標準を目指しているにしてはさっぱりな気がするが…
このままじゃ増大するコンピューティングパワーとオープンソースOSに押されて
永久に一部で細々の日陰物になりそう
887デフォルトの名無しさん:04/10/14 13:23:45
B
888デフォルトの名無しさん:04/10/14 13:56:51
I
889デフォルトの名無しさん:04/10/14 14:01:18
AkRubyほしい
890デフォルトの名無しさん:04/10/14 14:42:38
範囲オブジェクトって連結できないでしょうか?
こういうのがやりたいのですが、スマートな方法はあるでしょうか?
(1..2 + 4..5).each { |i| p i }
891デフォルトの名無しさん:04/10/14 14:52:23
>>890
Range から Array にするとか。
((1..2).to_a + (4..5).to_a).each{|i| p i}
892デフォルトの名無しさん:04/10/14 14:53:09
>>890
標準では連結する機能がないのでは?
とりあえずこうすれば実現できますが、スマートではありませんね。
((1..2).to_a + (4..5).to_a).each { |i| p i }
893デフォルトの名無しさん:04/10/14 14:53:40
あらら、かぶった。失礼しました。
894デフォルトの名無しさん:04/10/14 15:08:56
ありがとうございます。
考えてみたら、Range を連結したものは Range といえるか微妙な気もしてきました。
やっぱり挙げていただいたように Array として開くのがいいかなあ。
範囲がでかくて Array が巨大になりそうだったら素直にこうするしかないか。
[1..2, 4..5].each { |r| r.each { |i| p i } }
895デフォルトの名無しさん:04/10/14 15:09:53
範囲と範囲を連結すると、だぶったり穴があいたりするだろ。
それは範囲とは呼べん罠。
>>890が欲しいものは単なる数列が詰まった配列みたいだし。
896デフォルトの名無しさん:04/10/14 15:43:11
配列の内包表記のサポートまだー?
897デフォルトの名無しさん:04/10/14 16:10:07
ある範囲とある範囲の集合も立派な範囲だと思うがな。
そんなに違和感ないし。
Rangesクラス作って894の方式でeachするeach作ればいいんでないの。
まあ、基本的には単なる配列なんだけど。

何を親クラスにするか微妙だが。
Rangeか?
898デフォルトの名無しさん:04/10/14 16:18:56
RangeとRangeを足したら、
それらの中の最小値と最大値から構成されるRangeを返す、
ってのが自然だと思う。
899sai10sight ◆m7YeytgDFE :04/10/14 16:36:31
>>897
試しにArrayのメソッドとして書いてみました。こんな感じ?

class Array
def each_range
self.each do | range |
if range.respond_to?( 'each' )
range.each { | value | yield value }
else
yield range
end
end
end
end

[ 1..2, 4..5 ].each_range { | i | p i }
900sai10sight ◆m7YeytgDFE :04/10/14 16:36:57
あ。インデントに失敗...。読みにくくてごめん。
901デフォルトの名無しさん:04/10/14 16:37:33
>>897, >>898
私はどちらも不自然な気がしていて、 >>895 さんの指摘が正しいように思います。
確かに RangeSet クラスみたいなのを作るという手もあるかと思いますが、
その場合も親クラスは無いんじゃないでしょうか。

ちなみに、そもそも元々何をやろうと思っていたかというと、
Shift_JIS の文字の表を作ろうと思っていたのでした。

[0x81..0x9F, 0xE0..0xEF].each { |r1|
r1.each { |c1|
[0x40..0x7E, 0x80..0xFC].each { |r2|
r2.each { |c2|
print [c1, c2].pack("c*")
}
}
}
}
902デフォルトの名無しさん:04/10/14 16:41:23
>>899
やっぱり何度みても汚ないコードだね
903sai10sight ◆m7YeytgDFE :04/10/14 16:51:11
>>902
あぁっ。申し訳ない。
もし良かったら、改善すべき点を指摘していただけます?
904デフォルトの名無しさん:04/10/14 16:51:23
より一般的に考えるなら、範囲集合に重複があったときにどうするか、とかも
考えた方が良い気がする。たとえば、
[1..5, 3..7]
これに対しては each すると、 1..7 としてふるまってくれる方が自然な気が
する。一方、抜けに対しては抜けを対処したい。

Array で良いので、
def range_set(*rary)
rary.map{ |e| e.to_a }.flatten.uniq.sort
end
とか。
905デフォルトの名無しさん:04/10/15 01:41:28
>>881
ネットとvrubyのソースとにらめっこでも何とかなるとは思うけど
勉強するならwin32api関係じゃないかな。

>881が挙げた例だとkeydownというのはself_keydownみたいに
定義するための名称だからwindowsとは関係なく、
256=WM_KEYDOWNというメッセージが重要。メッセージは
WM_xxxxみたいな名前がついてる。

MSGTYPE::ARGINTINTはvrubyで定義している。これはkeydown
メソッドが2つのINT型の引数を持つことをあらわしているのだけど
なぜこんなトリックが必要かというとメッセージはwparamとlparam
の2つの引数しか取れないから、それをどう展開するかを示す必要が
あるから。
906デフォルトの名無しさん:04/10/15 01:56:12
vrubyでキーボード入力からウィンドウの最小化を呼び出したいのですけど、
どの関数が使えますでしょうか?

class UserForm < VRForm
end

一応self.visible = false
とかは試してみたんですけど、うまくいきませんでした。
907881:04/10/15 01:57:28
>>905
ありがとうございます。
なんか難しいですね(^^;)

GUIプログラムをいきなりvrubyではじめるのは厳しいのかも。
908デフォルトの名無しさん:04/10/15 02:02:26
私もvrubyを始めたばかりなんですが、VREditのcharイベント
について教えていただけませんか。

visual basicのkeydownプロシージャでは引数keyの内容を
検査して、入力をはじきたい文字だったら
key=0
とすればキー入力を捨てることができるんですが、
vrubyではどうすればよいでしょう?

私自身イベントまわりをいろいろ調べてvrubyに直接こういう
処理はないと思いましたので、APIで何とかしようと考えました。
PeekMessageでメッセージを消せるらしいところまでは
わかったのですが、これに与えるMsg構造体の中身が
コンプリートできません。Swin::Msgにはtimeとpointapiが
ないんですorz

なんとかいい方法はないものでしょうか?
909デフォルトの名無しさん:04/10/15 03:14:21
>>907
難しいつうか…
どっちみちCUIと比べるとGUIはめんどくさいと思う。
あと、GUIプログラミングの知識も必要かと。イベントとかの概念はここから来ているので…
Windowsで使われているイベント名とかならMSのサイトにあるMSDNライブラリで調べられるかと
910デフォルトの名無しさん:04/10/15 06:06:26
なぜ Tkinter を使わないのか理解に苦しむ。
GUI実装 は Ruby を捨てて Python を選択するのが自然だろう?
911デフォルトの名無しさん:04/10/15 06:12:27
GUIはC++以外全部ダメ。
912デフォルトの名無しさん:04/10/15 06:41:07
>>910
馬鹿の分際で朝っぱらから粘着乙
913デフォルトの名無しさん:04/10/15 07:35:11
>>912
信者の最後の抵抗乙
914デフォルトの名無しさん:04/10/15 08:02:52
>>910
なぜTcl/Tkを使わないのか理解に苦しむ。
Tk使うならTclを選択するのが自然だろう?
915デフォルトの名無しさん:04/10/15 08:52:59
>>914
Python の方が書き易いから。
916デフォルトの名無しさん:04/10/15 09:17:51
実例示さないと説得力ゼロだけど。
917デフォルトの名無しさん:04/10/15 10:09:51
vruby使う人が増えてきてるようですね。
作ったのをどっかに公開して下さいよ。
やっぱ人が書いたものが参考になるので。
918デフォルトの名無しさん:04/10/15 11:28:55
作ったけどソースが美しくないので・・・
919vruby入門:04/10/15 16:27:26
なんか、vrubyの話題ばかりで申し訳ないんですが、
↓こういうのって、うまく使えません??
http://www.vector.co.jp/soft/win95/prog/se267009.html

Rubyから使いたいんですが、誰かうまいコントロール(?)作ってください。
920sai10sight ◆m7YeytgDFE :04/10/15 16:55:07
>>908
本家(?)のサンプルにVREditのキー入力を検出する例はあるんですが、
その入力を無かったことにする方法はわかりません...。
VRKeyFeasibleの応用でどうにかできないかな?
http://vruby.sourceforge.net/samples.html#events
921デフォルトの名無しさん:04/10/15 17:04:11
>>919
COMのコントロールなんだからWin32OLE使えばよいのでは。
922デフォルトの名無しさん:04/10/15 17:08:25
>>906

self.show 6
6はSW_MINIMIZE
WindowsAPIのShowWindowで調べてみて。
923デフォルトの名無しさん:04/10/15 17:33:45
module VRHookWindowMessages
include VRMessageHandler

WM_COMMAND= (0x00000111)

def self_hook_window_messages(msg)
=begin
File.open('/cygdrive/c/tmp/hook_window_messages.log', 'a+b') {|f|
f.printf("hWnd:%08X, msg:%08X, wP:%08X, lP:%08X, retval:%08X\n",
msg.hWnd, msg.msg, msg.wParam, msg.lParam, msg.retval)
}
=end
returnnil
end

def msghandler(msg)
if(!self_hook_window_messages(msg))
super
end
end
end
924vruby入門:04/10/15 18:37:22
>>923
多分、僕の書いたことに対して、vrubyだけでできるということなんだと思うんですが、
表示される、内容の意味が全くわかりません。
だれか解説お願いします。ちょっと教えてもらえれば、あとは自分でしらべるので。お願いします。

printf("hWnd:%08X, msg:%08X, wP:%08X, lP:%08X, retval:%08X\n",
msg.hWnd, msg.msg, msg.wParam, msg.lParam, msg.retval)
925デフォルトの名無しさん:04/10/15 19:03:19
>>924
"ウインドウメッセージ"で検索、かな?
C/C++でWindowsアプリ作ったことないとWindowsでGUIやるのは無理だと思う。
926vruby入門:04/10/15 19:18:13
むずかしすぎる。

_∧∧__   / ̄ ̄ ̄
|( ゚'ω゚)| < 寝る!
|\⌒~\  \___
\ |⌒⌒|
927デフォルトの名無しさん:04/10/15 19:28:01
>>926
wxRubyならWindowsのこと知らんでもいけるぞ、たぶん。
928デフォルトの名無しさん:04/10/15 20:01:42
>>927
でもWindowなアプリを作るために必要な概念くらいはわかっていないと難しいと思うぞ。
あとwxRubyはあちこち挙動不審ぽいのでお勧めしない
929デフォルトの名無しさん:04/10/15 20:06:21
Ruby/gtk2 の話は全く出てこないよね。

>>294 だった人である漏れって負け組か orz
930デフォルトの名無しさん:04/10/15 20:39:58
vruby系の話ばかりでスマソ。
GUIのボタンを押してしまうと、そのボタンに操作がキャプチャされてしまい、たとえば、
def self_keydown(keycode,keydata)
end
が効かなくなってしまうのですが、何か良い対処法はないでしょうか?
931デフォルトの名無しさん:04/10/15 21:21:47
vrubyでトレイに格納したアイコンをクリックしたときに、
最前面表示にしたいのですが、self.top trueでは無理なのでしょうか?

def self_traylbuttonup(iconid)
self.show 9
self.top true
end
932デフォルトの名無しさん:04/10/15 21:55:57
vrubyの話と Win32API の使い方の話がごちゃまぜになっててわかんねー。
933デフォルトの名無しさん:04/10/15 22:11:46
RubyからSystem.Windows.Formが呼べたら幸せなのにね。
934デフォルトの名無しさん:04/10/15 22:57:47
そこで ActiveRuby ですよ
935デフォルトの名無しさん:04/10/15 23:07:00
>933
Win32OLEと.NETのCOMサポートの連携でなんとかなるんかな? どうなんだろ。
936デフォルトの名無しさん:04/10/15 23:49:17
>>933
スレの前の方で出ていた.NET bridgeを使う。
937デフォルトの名無しさん:04/10/16 00:27:42
>>929
Ruby/gtk2 を調べててここにたどり着いたけど、いきなり >>929 を読んでしもた。
かなり引けた…が、もう少し調べてみるか…。
938デフォルトの名無しさん:04/10/16 01:14:47
>>920
908です。自己解決しました。
PeekMessageを呼んでメッセージを消すことができました。
timeとpointapiは0でも動いたようです。
vrubyにもちょっと改造を加える必要がありました。
といってもmsghandlerで受け取るmsgを自前の
変数にコピーしておくだけですが。
しばらくこれで様子をみてみます。
939デフォルトの名無しさん:04/10/16 02:39:27
リファレンスってAND検索できないんだね。RWikiの仕様?
かなりトホホだと思うんだけど……
940デフォルトの名無しさん
>>939
HTMLHelp版を使うってのはどうよ