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

Rubyについて Part 10

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。

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

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


0002デフォルトの名無しさんNGNG

= 過去スレ
: Rubyについて Part 8
http://pc5.2ch.net/test/read.cgi/tech/1079975637/
: Rubyについて Part 7
http://pc2.2ch.net/test/read.cgi/tech/1074235226/
: Rubyについて Part 6
http://pc2.2ch.net/test/read.cgi/tech/1067623825/
: Rubyについて Part 5
http://pc2.2ch.net/tech/kako/1063/10630/1063028224.html
: Ruby について Part 4
http://pc2.2ch.net/tech/kako/1056/10569/1056944114.html
: Ruby について Part 3
http://pc2.2ch.net/tech/kako/1042/10420/1042004759.html
: Rubyについて Part 2
http://pc3.2ch.net/tech/kako/1028/10289/1028906179.html
: Rubyについて
http://pc3.2ch.net/tech/kako/1012/10120/1012096319.html

0003デフォルトの名無しさんNGNG

= 関連リンク
: リファレンス
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

0004デフォルトの名無しさんNGNG
4.get!
0005デフォルトの名無しさんNGNG
5.get?
0006デフォルトの名無しさんNGNG
1 << 乙
0007デフォルトの名無しさんNGNG
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に落ち着いた。
シンプルなヘルプを上から下まで一読してあっさり動いたよ。
0008デフォルトの名無しさんNGNG
>RMagick といえば、cygwin で動かせた人います?
動いてますよ。
0009デフォルトの名無しさんNGNG
>>7
少なくともPerlよりは使いやすそうだと思ったが…
オフィシャルのリファレンスが全て日本語だし。わかりやすいかと聞かれると微妙だけど…
0010デフォルトの名無しさんNGNG
とっつき難くはある
0011デフォルトの名無しさんNGNG
Perlのほうがとっつきやすいね。Rubyはオブジェクト指向向きに出来てるけど
Perlはベタ書きでダラダラやってもそれなりに苦労せずに動かせるから。

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

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

002019NGNG
よく調べたらわかりました。
正規表現ですね。
002117NGNG
>>18

それでできました。さんくすです!
0022デフォルトの名無しさんNGNG
・・・

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行を、優先度、スレッド名、スレッド番号を持つマクロに変換するには
どのようにしたらよいでしょうか?
002322NGNG
誤爆しました。すんません。
0024デフォルトの名無しさんNGNG
Tabとスペース混ぜてインデントする人に聞きたいんだけど、どうしてあんなことしてるの?
しかもタブ幅は8。
エディタによって激しく読みづらくなる
0025デフォルトの名無しさんNGNG
>>24
Emacs だとデフォルトでそうなっちゃうと思う。
漏れも以前そうだったけど、最近は (setq-default indent-tabs-mode nil) としてる。
0026デフォルトの名無しさんNGNG
>>24 emacsのデフォルトの挙動だからでは。

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

WinだとなぜかNoEditorだが。
0034デフォルトの名無しさんNGNG
gVimメインだけど、テキストの関連付けがVxEditorだから何故かメインの座にはVxが座ってる。
0035デフォルトの名無しさんNGNG
Cを米国とすると
Rubyは北朝鮮
Basicは中国みたいなもんだな
0036デフォルトの名無しさんNGNG
>>35
ん?その心は?
0037デフォルトの名無しさんNGNG
Winで書くことがメインなんでK2Editor
0038デフォルトの名無しさんNGNG
Winで書くことがメインなんでzyzzy
0039デフォルトの名無しさんNGNG
名前間違えてまで必死棚
0040デフォルトの名無しさんNGNG
WindowsではやはりRDEだな。
あれは本当によくできている。

eclipseプラグインのやつにも、もう少しがんばってくれれば面白いものができそうな感じなんだけど
00411NGNG
あ、参考図書忘れてた……

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

……て、読んだほうがいい本って、ホント無いな(除く王道編)。
0042デフォルトの名無しさんNGNG
>>41
たのしいRuby
http://www.notwork.org/sbp-ruby/
Rubyレシピブック
http://www.notwork.org/rubyrecipebook/
は?
0043デフォルトの名無しさんNGNG
『プログラミングRuby』はよい入門書のように思ったけど、どう?
0044デフォルトの名無しさんNGNG
初心者向けなら原先生の「Ruby プログラミング入門」も良いと思う。
0045デフォルトの名無しさんNGNG
Rubyレシピブックって良いの?
00461NGNG
>42
ごめん、両方とも立読みしかしていないけど……


> たのしいRuby

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

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


> Rubyレシピブック

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

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

00471NGNG
>43
マジお勧め。これでRubyの概要がだいたい判る。

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

(できないような悪寒はしています)
0050デフォルトの名無しさんNGNG
>>49
え?普通に
$ ruby -d hoge.cgi
でできねぇか?
0051デフォルトの名無しさんNGNG
デバッガを使いたいんなら debug.rb を require すればいいよ
$ ruby -rdebug foo.rb
0052デフォルトの名無しさんNGNG
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がサボってないか?
0053デフォルトの名無しさんNGNG
ほ、ほんまや……何があった?
0054デフォルトの名無しさんNGNG
1001の文章を、板独自にカスタマイズできるようになったらしい。
005550NGNG
ごめ。最近仕事がPerlなもんで。
0056デフォルトの名無しさんNGNG
DoSアタックで1001スレストプロセスが落ちたのかと思ったよ:D
0057デフォルトの名無しさんNGNG
> 1000 名前:デフォルトの名無しさん[sage] 投稿日:04/09/14 21:58:51
> matz は日記のかわりにドキュメントを書いてほしい

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

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


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

分からないからドキュメントを見たいのに。
006349NGNG
>>50
>>51
う〜ん、その場合、フォームとかクッキーとかはどうすればいいんでしょ?
0064デフォルトの名無しさんNGNG
>>62
最小限の記述で必要十分な説明をする能力に欠けてるような気がする。
ドキュメントの質が低い。分量同じでももっとまともなのかけるだろ普通。
業務ではいったいどんなドキュメント書いてるのかね。
Windows向けのフリーウェアやライブラリの方がよっぽどちゃんとしたヘルプがついてるよな。
ルビ厨ってプロ意識に欠けてるよ。いくら趣味でやってるとはいえプロのプライドっつうもんがあるだろ。
0065デフォルトの名無しさんNGNG
matzがドキュメントよりソース読め派だからどうしようもない。
あと、Rubyを広める気は本当に全く無いんだと思う。
0066デフォルトの名無しさんNGNG
Moonwolfさん、Planetについて激しく勘違いしてるような気が。
とはいえ、人力であれだけできるというのもすごいけど。
0067デフォルトの名無しさんNGNG
>63
フォームは標準入力から、クッキーは環境変数 HTTP_COOKIE から渡せるよ。
0068デフォルトの名無しさんNGNG
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=StringIO
0069デフォルトの名無しさんNGNG
CGI クラスって、new を2回やるとインスタンスがおかしくなりますけど(標準入力を二度読めないから?)
他の CGI ライブラリだと、解決されてたりしますか?
0070 ◆FIcNi4f8js NGNG
なんでわざわざ2回newするの?
0071デフォルトの名無しさんNGNG
ドキュメントが悪いっていう香具師はもう漏れ的には釣りとしかいいようがない。
これ以上何が足りないっていうのか。
0072デフォルトの名無しさんNGNG
>>71
釣り乙
0073デフォルトの名無しさんNGNG
松七誌出乙
0074デフォルトの名無しさんNGNG
ローカル内輪言語に何期待しても無駄。
HSPのがよっぽどオープンでフレンドリーだよ。
0075デフォルトの名無しさんNGNG
>>71
HSPやRubyみたいな厨言語に期待するお前がアホ
0076デフォルトの名無しさんNGNG
>>74
釣り乙
0077デフォルトの名無しさんNGNG
>>76
>>71みたいな馬鹿を見るとあながち釣りにも見えん。
0078デフォルトの名無しさんNGNG
>>66はスルーですか。そうですか。
実際にPlanet blogをやるのであれば、Pythonで書かれているaggregator
(http://www.planetplanet.org/)のRuby版を作るところからはじめた方が
いいのかな。Planet PHPもPHPなaggregatorを使っているし。
0079デフォルトの名無しさんNGNG
ドキュメント書けとかほざいてるやつは、
一体何のドキュメントが足りないのか言ってみろ。
0080デフォルトの名無しさんNGNG
>>7
0081デフォルトの名無しさんNGNG
変数の中身が文字列か配列かを判断したいんだけど、変数の中身のタイプを判別するにはどうしたらいい?
0082デフォルトの名無しさんNGNG
>78
moonwolf氏のblogがあったことを今知った
0083デフォルトの名無しさんNGNG
>>81
if v.class == String
elsif v.class == Array
end
0084デフォルトの名無しさんNGNG
>>81
case
when v.is_a?(String)
...
when v.is_a?(Array)
...
end
でも可。 is_a? の場合はサブクラスでも拾われるという差がある。
0085デフォルトの名無しさんNGNG
>>84
ふつーこうしない?

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

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

で===の中はこんな

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

なんでしょう。
0093デフォルトの名無しさんNGNG
>>87
あれこれ推測するのも良いけど、ドキュメント読んだ方が早いと思いますよ。
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Object#self.20.3d.3d.3d.20other
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Module#self.20.3d.3d.3d.20obj
0094デフォルトの名無しさんNGNG
=== って一応、比較演算子なんでしょ?
比較演算子で、左右入れ替えると結果がことなるって気持ち悪いな。
0095デフォルトの名無しさんNGNG
記号の見た目は左右対象だけど、
主に所属関係・包含関係をチェックするメソッドだから、
左右入れ替えて結果が同じ方が気持ち悪いな。
0096デフォルトの名無しさんNGNG
===なんて記号をつかわなければよかったのにね。
0097デフォルトの名無しさんNGNG
#!/usr/local/bin/ruby -Ke

class Object
alias :∋ :===
end

v = "aString"

if String ∋ v
puts "String"
elsif Array ∋ v
puts "Array"
end
0098デフォルトの名無しさんNGNG
もうクックルにしか見えない!
0099デフォルトの名無しさんNGNG
>>98
オレモダヨ
0100デフォルトの名無しさんNGNG
rubyのロゴって何ですか?
結局ナスカの地上絵風ので決定だったのですか?
0101デフォルトの名無しさんNGNG
>>97
Ruby って2バイト文字の識別子使えるのか・・・・。
知らんかったよ。
0102デフォルトの名無しさんNGNG
>>101
そうなんだよね。

ってなわけで、 2バイト文字で AA な Ruby コード募集。
0103デフォルトの名無しさんNGNG
半角括弧使用禁止、*使用禁止、;使用禁止、半角スペース使用禁止


つらい
0104デフォルトの名無しさんNGNG
禁止じゃないだろ
0105デフォルトの名無しさんNGNG
>>103
__call__しろ
0106デフォルトの名無しさんNGNG
こんなファイル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
----------------
書いたんだが、

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

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

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

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

ところで、その機能はどんな表記で利用できるの?
0121デフォルトの名無しさんNGNG
http://cvs.m17n.org/~akr/diary/ が IE で見れないんですが、みなさん見れますか?
0122デフォルトの名無しさんNGNG
>121
漏れも見えない。
つーか、IEとFirefoxでそれぞれソース表示させたら全然違うし。
0123デフォルトの名無しさんNGNG
>>121
w3m
0124デフォルトの名無しさんNGNG
>>121

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

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

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

------------------------
やれやれ。
0125デフォルトの名無しさんNGNG
>>121-124
メジャーなブラウザでは見れないようにしてるみたいね
>>123が言うように、いつもw3mでみてる。
0126デフォルトの名無しさんNGNG
>>107-110,115
アリガトー

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

勉強になりまスタ
0127デフォルトの名無しさんNGNG
erbもevalしてるけどな
0128デフォルトの名無しさんNGNG
evalやinstance_evalを安易に使う風潮があるよな。
0129デフォルトの名無しさんNGNG
>>126
テンプレートの対象がHTMLならamritaも便利ですよ。
0130デフォルトの名無しさんNGNG
>>116
70年代前半のLISPかSmalltalkのどっちか。
0131デフォルトの名無しさんNGNG
プログラミングまったく初めてでRubyを勉強するために
「たのしいRuby」を買ってきたんですが
いきなり文字列だとかメソッドだとか言われてもちんぷんかんぷんです。
基礎の基礎の考え方から勉強できるような本はないでしょうか。
0132デフォルトの名無しさんNGNG
釣り?
0133デフォルトの名無しさんNGNG
>>131
そこでHSPですよ。
0134デフォルトの名無しさんNGNG
> リファレンスマニュアルは参照している。
> だが、作者の頭の中にしかない仕様は参照できない。
どうよ?
0135デフォルトの名無しさんNGNG
>>131

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

って,すこしむつかしいかな。
0136デフォルトの名無しさんNGNG
>>131
とりあえず自分の名前を表示するプログラムを作ってみよう。覚えるには使ってみるのが一番だと思う。
あとは「自分が書いたプログラムで何をしたいか」だな。
0137デフォルトの名無しさんNGNG
「簡単なプログラム」でこれはないだろう・・・
難しくはないにしても激しくわかりづらい。
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
0138デフォルトの名無しさんNGNG
だれかさんが言ってたけど、
結城浩先生,Rubyに転ばないかな〜。
0139デフォルトの名無しさんNGNG
結城氏はPerlやJavaなどの実用度や完成度の高く普及した環境にしか興味がないんだよ。
コードの字面で一喜一憂するほど子供じゃないからね。
0140デフォルトの名無しさんNGNG
宗教上の理由もあったりして。
0141デフォルトの名無しさんNGNG
wxRubyのサンプル(images.rbw)なんだけど
> paint do | dc |
>  dc.clear
>  dc.draw_bitmap(@bitmap, 0, 0, false)
> end
って何やっているんだかわかる人いる?
paint do | dc |とendの働きがさっぱりわからん…
doってRubyのマニュアルにもないしwxRubyのマニュアルにも見あたらないし…
0142デフォルトの名無しさんNGNG
>>137
読解力無いの?それは「『簡単なプログラム』の例」ではないでしょ。

# 書かれた当時は irb も無かったはず。
0143デフォルトの名無しさんNGNG
>>141
……ネタか?
do … end は { … } と(ほとんど)同じだが。


ところでみなさま、do … end と { … } の違いって何?優先順位だけ?
昔は「値を返す時は{ … }」だったみたいだけど。(Rubyist Magazine より)
0144デフォルトの名無しさんNGNG
質問を釣り扱いしたりネタ呼ばわりするRubyコミュニティって腐ってますね。
0145デフォルトの名無しさんNGNG
さすがに、ブロックを質問するのは、かなりありえない。
0146デフォルトの名無しさんNGNG
>>145
だよな。
リファレンスマニュアルにだってちゃんと・・・、と思ったら見当たんねー。
どこかに書いてある?
0147デフォルトの名無しさんNGNG
matzの脳内
0148146NGNG
yield から辿って「メソッド呼び出し」の「イテレータ」で見つかった。
こりゃふつーは捜し当てられないんじゃなかろうか。
0149デフォルトの名無しさんNGNG
>>146
Rubyの文法 > メソッド呼び出し > ブロック付きメドッド呼び出し
0150デフォルトの名無しさんNGNG
メソッド呼び出し - ブロック付きメソッド呼び出し
ttp://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%A5%E1%A5%BD%A5%C3%A5%C9%B8%C6%A4%D3%BD%D0%A4%B7#a.a5.d6.a5.ed.a5.c3.a5.af.c9.d5.a4.ad.a5.e1.a5.bd.a5.c3.a5.c9.b8.c6.a4.d3.bd.d0.a4.b7

ってURL長ぇな……
0151141NGNG
>>143
ごめんなさい。大マジです。マヌケな質問に答えてくれてありがとうございます。
do〜endと{〜}ってほとんど同じなんですか…
書き換えてみたらそのまま動きました。

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

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

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

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

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

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

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

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

# Firefox0.9.2(Japanese,Windows)では見れてまつ。
0159デフォルトの名無しさんNGNG
「Content-Encoding deflate」でぐぐれ
0160デフォルトの名無しさんNGNG
冗長といえば
a+=1
0161デフォルトの名無しさんNGNG
>>140
そういえば結城さんもクリスチャンだよな。
0162デフォルトの名無しさんNGNG
>>160
そして「なんで Fixnum#++ がないの?」と話はループ・・・
0163デフォルトの名無しさんNGNG
ちょっとわかりにくいんだけど…
class A < CC
 @@foo = 'hoge'
 class B < DD
  def hoge
   ここで@@fooを読み書きしたい
  end
 end
end
の場合どうしたらいい?
0164デフォルトの名無しさんNGNG
>>163
class A で @@foo のアクセスメソッドを定義してやれば?
0165デフォルトの名無しさんNGNG
>>140
プロテスタント(結城)とモルモン(まつもと)だもんな。
ヤバイよな。
0166デフォルトの名無しさんNGNG
>>115
String#replace(other) を置き換える方が怖くない?
0167デフォルトの名無しさんNGNG
>>166
あわわわ、確かに。 (元々の String#replace の存在をすっかり忘れてた・・・)
0168163NGNG
>>164
なるほど。できました。

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

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

PDF版安いなぁ……
0170デフォルトの名無しさんNGNG
>>166-167
そういえば、知らないうちにメソッドを置きかえてたというのを防止することってできるの?
0171デフォルトの名無しさんNGNG
>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)

0172デフォルトの名無しさんNGNG
スマン、抜けてた

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)
0173デフォルトの名無しさんNGNG
あ、-W のときはちゃんと教えてくれるのね
0174デフォルトの名無しさんNGNG
% ruby -W -e 'class String; def replace; end end'
-e:1: warning: method redefined; discarding old replace
0175デフォルトの名無しさんNGNG
クラス変数があってほんとによかったと思うことってどれくらいあるのかな。
0176デフォルトの名無しさんNGNG
>175
グローバル変数的な使い方を良くするよ。
0177デフォルトの名無しさんNGNG
一度でいいから言ってみたい。
「次のようにすると core を吐きます。」
0178デフォルトの名無しさんNGNG
>>177
そんなに大したもんじゃないつーか
泡沫Rubyistの俺でも数回でたことある。
仕事で普通に使ってたら出て支障きたした。
むしろBug出すぎw
ただ頑張って直してパッチ書いて
取り込んでもらった時は嬉しかった。
0179デフォルトの名無しさんNGNG
仕事で普通に使うことを許される会社っていいな。
0180デフォルトの名無しさんNGNG
$1とかってスレッドごとに独立してるの?
0181デフォルトの名無しさんNGNG
試せよ
0182デフォルトの名無しさんNGNG
ディレクトリ移動を行うスクリプトを書きたいのですが、
Dir.chdir だとスクリプト内でしかディレクトリ変更が効きません。
% pwd
/home/ruby
% ruby -e'Dir.chdir("/home")'
% pwd
/home/ruby

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

なにか方法はあるのでしょうか?
0183デフォルトの名無しさんNGNG
>>182

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

0186デフォルトの名無しさんNGNG
moonwolf氏が空回りしてると思う人の数→(1)
0187デフォルトの名無しさんNGNG
matz七誌出乙
0188デフォルトの名無しさんNGNG
Ruby Garden の松は matz ということでFA?
0189デフォルトの名無しさんNGNG
詮索好きだなぁ・・・
0190デフォルトの名無しさんNGNG
>>186
ruby-listの読書会のはともかく、首藤プラネットは良いと思う。
リンク先見るかどうか、寸評のおかげで決められるし。
0191デフォルトの名無しさんNGNG
>>186
日本人にはめずらしく行動力だけはズバ抜けていて、そこはマジで尊敬するけど…


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


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

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

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

>>193
ヤレヤレ厨うざい。
0195デフォルトの名無しさんNGNG
>>191
あれを行動力というのか?まあそうかもしれんけど。
Moonwolfの行動力って、るびきちのそれと似てるんだよね。
0196デフォルトの名無しさんNGNG
planetって本来どういうのなの?
0197デフォルトの名無しさんNGNG
>>196
ttp://dontstopmusic.no-ip.org/diary/20040914.html#c05
0198デフォルトの名無しさんNGNG
さんくす。アグリゲータの一種なのね。
0199デフォルトの名無しさんNGNG
DevがCoreで埋まってるなw
http://blade.nagaokaut.ac.jp/ruby/ruby-dev/24201-24400.shtml#latest
0200デフォルトの名無しさんNGNG
そういや bdb1-0.2.2 のバグはどうなった?
0201デフォルトの名無しさんNGNG
やっぱrubyはまだベータレベルだな(w
0202デフォルトの名無しさんNGNG
akr さんと同レベルの人があと2,3人にたら、まつもとさんは過労死しそうな予感。
0203デフォルトの名無しさんNGNG
akrって誰?
0204デフォルトの名無しさんNGNG
>>195
> あれを行動力というのか?まあそうかもしれんけど。
> Moonwolfの行動力って、るびきちのそれと似てるんだよね。
うーん、本人には失礼かもしれないけど、同意してしまう。
0205デフォルトの名無しさんNGNG
age
0206デフォルトの名無しさんNGNG
ruby-talkウイルス来すぎ
0207デフォルトの名無しさんNGNG
>>203
金光さん
0208192NGNG
Window::refreshで解決しました。

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

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

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

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

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

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

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

一応 __FILE__ つうのもあるけど、起動スクリプトからの相対パスみたいだね。
絶対パスを取るにはどうすりゃいいのかね?
0223sai10sight ◆m7YeytgDFE NGNG
「$0」で絶対パスが分かりませんか?
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%C1%C8%A4%DF%B9%FE%A4%DF%CA%D1%BF%F4
0224デフォルトの名無しさんNGNG
>>222
サンクス。__FILE__から取得したパスを加工すれば何とかなりそうです。
mswin32なせいかコードが置いてある場所とは違うところからコードを実行すると
絶対パスが返ってくるようです。

>絶対パスを取るにはどうすりゃいいのかね?
File.expand_path(__FILE__)
はどう?
0225デフォルトの名無しさんNGNG
>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"

#...は省略部分

といった感じ。
0226shigeNGNG
0227デフォルトの名無しさんNGNG
Windowsのパスに厳密にマッチする正規表現ってどんなの?
0228デフォルトの名無しさんNGNG
全部を正規表現では書かないか、厳密にはしないのがいいんじゃないか。

パスの途中の予約語の出現禁止とか、
ショートとロングとか、
全体の長さとか、
いろいろまんどくさそだ。
0229デフォルトの名無しさんNGNG
MoonWolf氏に関しては、やってることは凄いと思うんだが、単に躁鬱病患者が
躁期に入っているだけにも見える。
もしそうなら、鬱期に入った途端に全てのプロジェクトが中断してしまうわけで、
うかつに氏のやってることに賛同できない。
せめて複数人でプロジェクトを立ち上げてくれればいいんだが、他人の協力は
拒んでいるようだし。
0230デフォルトの名無しさんNGNG
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)
0231デフォルトの名無しさんNGNG
つうか、planet.ruby-lang.org作って海外のRuby hackersのblogを
集約してくれるとすごく欲しい。
0232230NGNG
-- 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"
とかも自動で出て欲しい。
0233デフォルトの名無しさんNGNG
FileTesterクラスと単項マイナス演算子でファイルテスト演算子を実現できないかな?
0234デフォルトの名無しさんNGNG
require 'shugyo'
0235230NGNG
Perl ―> Ruby 本はあるが、Bash ―> Ruby 本は無いな。
基本的なことやけど、var=~/bin を Ruby ではどう書くのかとか。

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

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

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

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

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

# もれはこないだWikiにちょっと貢献したぞ
0241デフォルトの名無しさんNGNG
また話がループしそうな悪寒
0242デフォルトの名無しさんNGNG
ライブラリとか書くとき、どの形式でドキュメント書きゃいいかわかんないんだよね。
0243デフォルトの名無しさんNGNG
「Ruby で日々のシステム管理を楽にする本」
0244デフォルトの名無しさんNGNG
カッコの入れ子に対応してマッチする正規表現って書けますか?

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

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

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

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

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

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

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

i = 0xFFFFFFa8 #=>-88
i = 88       #=>88
0253デフォルトの名無しさんNGNG
>>245=>>250
粘着乙
0254デフォルトの名無しさんNGNG
ふと思ったんだけど、オフィシャルのリファレンスマニュアルに
載っているサンプルコードのライセンスってどうなっているんだ?

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

とりあえず
 i = 0xFFFFFFa8 #=> 4294967208
だよ。
0257252NGNG
>>256
スマン
符号の向きと絶対値が欲しい。

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

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

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

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

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

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

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

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

すいません、他薦ですが。
0264デフォルトの名無しさんNGNG
>>262
>>253
0265デフォルトの名無しさんNGNG
ほらきた。
Ruby使いって貶されると、
すぐ言葉少なになるよね。
もう貶されるのに慣れちゃった?

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

0266デフォルトの名無しさんNGNG
>>261
じゃあ -1 を16進表現にしたらどうなるかと思ったら、

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

fが無限に続いてるってことか?
0267デフォルトの名無しさんNGNG
>>253
いや、>>245はまともな意見いってるとおもうけどな
0268デフォルトの名無しさんNGNG
>>267
それは失礼。では以下のように訂正

>>250=>>262=>>265
粘着乙
0269デフォルトの名無しさんNGNG
>>265
Ruby ユーザには厨が多いというが、
こういう変な粘着も多いな。
0270デフォルトの名無しさんNGNG
rubyyyyyyyyyyyyyyyyyyyyyyyy is No1
0271デフォルトの名無しさんNGNG
>>266
だね。
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=sprintf%A5%D5%A5%A9%A1%BC%A5%DE%A5%C3%A5%C8#x
0272デフォルトの名無しさんNGNG
そういや、Ruby2.0の開発ってどこで議論しているの?


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

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

>267
気でも狂ったか?
>270
そんなこと書いているヒマあったらコード&ドキュメント書け。
0273デフォルトの名無しさんNGNG
> そういや、Ruby2.0の開発ってどこで議論しているの?
matzの脳内
0274デフォルトの名無しさんNGNG
Ruby教本部
0275デフォルトの名無しさんNGNG
やべぇ、松江に辿り着く前に鳥取の砂地獄にのまれちまう。
0276デフォルトの名無しさんNGNG
>>275
そのまま来んでください。
0277デフォルトの名無しさんNGNG
どういう経路で松江に行くんだよっ!
0278デフォルトの名無しさんNGNG
巡礼の途中で鳴門の渦潮にのまれて、気がついたときには
Debian教の信者になっていました。
0279デフォルトの名無しさんNGNG
まつもとさんの9/21の日記って、どこのこと?
0280デフォルトの名無しさんNGNG
ここのことだろ。
お前ら態度悪すぎだよ。しかも個々のレスの質が低い。
ネットワークトラフィックを浪費することを自覚して反省しろ。
0281デフォルトの名無しさんNGNG
>>280の言葉に「私は正しい」とか「管理する立場だから」とかいう慢心があった
ことは否定できない。間違っていたのは>>280の方だ。あやまれ。
0282デフォルトの名無しさんNGNG
ゴメンチャイ
0283のNGNG
Programming Rubyの"Ruby.new"の章の翻訳がようやっと終わった。
http://www.fiercewinds.net/programming/Ruby/ProgrammingRuby-0.4/Readme.html

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

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

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

# 声援だけならだれでもできるって...とほほ。
0286デフォルトの名無しさんNGNG
>>283
乙
0287デフォルトの名無しさんNGNG
MoonWolfタソが早くも息切れ気味のようです。
0288デフォルトの名無しさんNGNG
>>287
>>229 の予言が早くも的中したわけだが。
0289のNGNG
>284
wikiベースも考えたけど、日本語版の存在がなぁ……
アレはOPLじゃなさそうだから、翻訳に混在すると不味いです。
誰が翻訳したかわかるようにしないとね。一応

0290デフォルトの名無しさんNGNG
もともと金が絡まない話なんだから中断も予測範囲内。
0291デフォルトの名無しさんNGNG
なんか「うわ、釣れてるw」とか言ってるんですよ。

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

なんかRubyと相性いいかも。
0293デフォルトの名無しさんNGNG
TK入れるのマンドクサ
0294デフォルトの名無しさんNGNG
Ruby/GTK2 のドキュメント揃えて欲すい、英語で良いから。
大きな変更点である、TreeView周りのマヌアルが欠けてる……
0295デフォルトの名無しさんNGNG
畑耕すのにつまようじ使うようなもんだな>RubyでGUI
0296デフォルトの名無しさんNGNG
前の方でwxRubyはRubyっぽく書けないという話が出ていたけど、
他のGUIツールキットはどんな感じですか?
0297デフォルトの名無しさんNGNG
>>292
Tkってかなりでかくない?
インストールもコピーして終わりってわけにもいかないし
0298デフォルトの名無しさんNGNG
というかTclはイラネ。
でも世間ではTcl捨ててる実装の方が少数派なんだよな。
0299デフォルトの名無しさんNGNG
net/httpでmultipart/form-dataなものを送信できますか?
0300L ◆eruX6eXBcA NGNG
>>299
Part7で出てる。
googleキャッシュにしか残ってないようだ。
0301デフォルトの名無しさんNGNG
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)

もうちょっとでうまくいきそう。でもわからん。
0302デフォルトの名無しさんNGNG
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
0303デフォルトの名無しさんNGNG
次のようにすると core を吐きます。
↓
0304デフォルトの名無しさんNGNG
$ ruby -e 'puts "core"'
0305デフォルトの名無しさんNGNG
>>303
浴びるほど酒を飲む。
0306デフォルトの名無しさんNGNG
>>300-302

ありがとうございます。
参考になりました。
0307デフォルトの名無しさんNGNG
>305
内臓まで吐いたらあ〜るになってしまう。
0308デフォルトの名無しさんNGNG
文字列を連結するのに配列使うよりString#concatの方がかなり速いけどもっと速い方法ってある?
0309デフォルトの名無しさんNGNG
>>308
http://i.loveruby.net/w/OptimizingRubyProgram.html
とあるね。
0310308NGNG
>>309
thx.
それ読んだ上でもちっと速い方法はなにかないかなと…
無茶言ってスマソ

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

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

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

>>314
mswinです。
0318デフォルトの名無しさんNGNG
いちおう努力はされてるみたいだけどね。

$ /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
0319デフォルトの名無しさんNGNG
% /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
0320デフォルトの名無しさんNGNG
Emacs系エディタをお使いの方へ

(setq-default indent-tabs-mode nil) を設定しましょう。
これを設定しないと、スペースとタブが混ざってしまいます。
0321デフォルトの名無しさんNGNG
混ざってるとなんかまずい事でもあるの?
0322デフォルトの名無しさんNGNG
他のエディタで表示が崩れるから。
個人的にはもう一歩進んでPerlを使うことを推奨したい。
これによって多くの人にとって可読性・保守性が大幅に向上するからね。
0323デフォルトの名無しさんNGNG
はいはい
0324デフォルトの名無しさんNGNG
>>322
2〜3行目に関しては、
みんな十分知った上で Ruby を使ってるんですよっ ☆
0325デフォルトの名無しさんNGNG
>>322
2行目:Rubyを戻したらPerlだよな…進ませたら何になるんだろう?
3行目:Perlより読みやすいからRuby使い出しました!
0326デフォルトの名無しさんNGNG
>>322
他のエディタで表示が崩れるなら、
個人的にはもう一歩進んでEmacsを使うことを推奨したい。
これによって多くの人にとって可読性・保守性が大幅に向上するからね。
0327デフォルトの名無しさんNGNG
俺ならモードとかタブ幅の設定とかはソースに書くけど。
0328デフォルトの名無しさんNGNG
>>325
groovy とかかね。
0329デフォルトの名無しさんNGNG
☆
0330デフォルトの名無しさんNGNG
そうだな。いろんなプロジェクトをいじる場合はスタイル決めうちじゃマズーだろ。
emacs なら file variable 推奨。vimにも同様の機構はありそうだ。
0331デフォルトの名無しさんNGNG
タブがどうのと粘着してる奴って
今時タブを態々8以外にちまちま指定してるわけ?
もしかしてviとかで自分でちまちまハードタブつかってインデントしてるとか?
0332デフォルトの名無しさんNGNG
HSPネタ以来の盛り上がりだな
0333デフォルトの名無しさんNGNG
タブ幅は3だろー。
0334デフォルトの名無しさんNGNG
きっとプロポーショナルフォントをつかってるんだろうな
0335デフォルトの名無しさんNGNG
>>333
tDiaryまわりのひと?
0336デフォルトの名無しさんNGNG
>>335
shugo さんも以前 3タブ (SPC 3 つ?) だったような。
0337デフォルトの名無しさんNGNG
331ってなんかかわいそう。
0338デフォルトの名無しさんNGNG
>308
連結だけならarray.joinのほうが速いかも。
0339デフォルトの名無しさんNGNG
わたなべひろふみさんて何歳ぐらいのかたのですか?
0340デフォルトの名無しさんNGNG
transamiさんて何歳くらいのかたですか?
0341292NGNG
レスがついていたので、いちおう。

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

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

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

Tab幅とは別に、インデント幅は2でも4でも何でもいいけど。
0348デフォルトの名無しさんNGNG
タブを使わない奴は抽象度が低い
0349デフォルトの名無しさんNGNG
おれもTAB=2だけど
かなり読みやすいよ
最近長い名前扱うから特に
0350デフォルトの名無しさんNGNG
インデントはブロックレベルだけで行なわれるわけではない
0351デフォルトの名無しさんNGNG
質問です。
Arrayの中に入れるオブジェクトをFixnumとか特定の型のオブジェクトに
限定することってできますか?(他のを入れようとすると例外を投げるとか)

継承して[]=とかのメソッドを全部オーバーライドすると面倒だし。
0352デフォルトの名無しさんNGNG
>351
できない。
0353デフォルトの名無しさんNGNG
これは有名なRubyの限界
0354351NGNG
>>352,353
ありがとー
0355デフォルトの名無しさんNGNG
>>347
あなたがインデント幅は2でも4でもなんでもいいと思っているように、世の中には、
タブ幅は2,4,8のどれでもいいと思っている人もいるのだよ。
0356デフォルトの名無しさんNGNG
>>351
継承はしないで、つかうメソッドだけ委譲したほうがいいじゃない?
0357デフォルトの名無しさんNGNG
無理やり実現する必要はないだろ
元々そういうもんなんだから
0358デフォルトの名無しさんNGNG
何ら手を加えずに機能を増やすってのが無茶だと思うが。
forwatable を改造して委譲先のメソッドを呼ぶときに
型チェックするようにしたら?
0359デフォルトの名無しさんNGNG
タブ幅の話がまだ続いているようですが、そういえばRuby用の
ソースコード整形ツールって何かあります?
0360デフォルトの名無しさんNGNG
map! みたいに引数の型がチェックできないこともあるんだから。
たいていの場合は必要なメソッドだけ定義するのがいいと思うぞ。
数値とそれ以外みたいな分け方なら NArray というのもある。
0361デフォルトの名無しさんNGNG
配列の要素の型を指定できなくて困ったことってないんだけど、どんなときに困る?
それとも気分の問題?
0362デフォルトの名無しさんNGNG
本気でわからないならただのアホだな
0363デフォルトの名無しさんNGNG
使う側が呼び出しの規約を守るべきだと思うけどね。
型を限定すると Array の強みが失われるんだし。
もし型を限定したいならそういうクラスを作ればいいだけかと。
0364デフォルトの名無しさんNGNG
>>355
はーい、質問です。
・「タブ幅は2,4,8のどれでもいい」なら、8でもいいわけだよね?なぜわざわざ2や4に設定するの?
・「タブ幅は2,4,8のどれでもいい」といいながら、なぜ他人にはタブじゃなくてスペースを使ってインデントするよう言ってくるの?どれでもいいなら、気にしないでいいじゃん。

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

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

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

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

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

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


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

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

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

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

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

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

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

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

タブでインデントするならタブだけを使い、
タブとスペースを混ぜるな、ということ。
0375デフォルトの名無しさんNGNG
ようするにema糞厨は氏ねと
0376デフォルトの名無しさんNGNG
>>373
え、るbyて整形ツールみたいなのないの?
るbyスクリプトで書けないの?
ちょっと、かっこわるいですよ?
0377デフォルトの名無しさんNGNG
ようするに matz 氏ねと?
0378デフォルトの名無しさんNGNG
ようするにあれだろ、LispじゃなくてRubyで拡張するEmacsもどき作ろうぜって話だろ?
とりあえず名前はRemacsでいい?
0379デフォルトの名無しさんNGNG
前にエイプリルフールネタか何かであったな。
0380368NGNG
>371
ホントの理由は >374 だね。
インデントについてはエディタごとに挙動が異なるので、やりづらいったらありゃしない。
最近はタブ文字をスペース8コに置き換えてからハクるけどな。

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


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

全てのエディタでファイル種類ごとにインデントとか設定できる訳じゃ無いんでな。
0381デフォルトの名無しさんNGNG
>>378
それはそれで面白そうだけど、整形ツールって言ったら普通はC/C++で
言うところのGNU indentとかastyleのようなものを指すと思う。
0382デフォルトの名無しさんNGNG
>最近はタブ文字をスペース8コに置き換えてから
お前も普通に糞だな
0383デフォルトの名無しさんNGNG
本来ならmatzの特権でコーディングスタンダードを定めるべきなんだが
本人からして変態エディタ愛好家だからそれも無理なんだよな。不幸なことに。
0384デフォルトの名無しさんNGNG
むしろスレ違いな議論にいつまでも粘着してる連中をスペースで置換したい。
0385デフォルトの名無しさんNGNG
>>383
コーディング規約ならあるよ。matzさんじゃないけど。
http://shugo.net/ruby-codeconv/codeconv.html
0386デフォルトの名無しさんNGNG
>>364
すげー使い易くなった
0387デフォルトの名無しさんNGNG
>>385
作者以外が決めたものなんてなんの価値なんてないだろ
0388デフォルトの名無しさんNGNG
CなんかK&R以外のコーディング規約がいくつもありますが何か?
0389デフォルトの名無しさんNGNG
>>380
>全てのエディタでファイル種類ごとにインデントとか設定できる訳じゃ無いんでな。
おいおい、素人ユーザーじゃあるまいし、プログラマがそんなこというかね。
プログラマなら「ファイル種類ごとにインデントとか設定」できるエディタを使うべきだろ。
この言い訳を聞いていると、「エディタがないとインデントできないからLispやSchemeは使わない」とか
「すべてのブラウザで使えるわけじゃないからCSSは使わない」というのと同じだな。
0390デフォルトの名無しさんNGNG
Rubyは素人が楽しくプログラミングがコンセプトじゃないのか?
0391デフォルトの名無しさんNGNG
それはHSPです。
0392368NGNG
>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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

いまどきこんなの気にしてる奴なんているのか?
まあ415がいるわけだが(w
つーか逆を言えばこんなこと気にするぐらいならRubyなんて使ってられないだろ(w
さらに言えばRubyではこんなアホな方法で速度アップするしかないのか?
コメントもおちおち書いてられないじゃないか。
まるで古代のBASICだな。
インデントにタブなんか使う人間はそろそろ引退してくれ。
0420368NGNG
>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キーでタブの代わりにスペースが挿入されるようになっているし。
0421デフォルトの名無しさんNGNG
ふつータブ幅とインデント幅は別じゃないの?
emacs でも vi でもタブは8でインデントは4にしてるけど
0422デフォルトの名無しさんNGNG
>>421
シーッ。ここはそういう区別がついてないワナビー君たちを眺めて楽しむべきだよ
0423デフォルトの名無しさんNGNG
そしてふりだしにもどる
0424デフォルトの名無しさんNGNG
何わなびなの?
0425デフォルトの名無しさんNGNG
>>418
それ、おもしろい。長い行の折り返しでは、前の行のインデント分はタブで行って、それ以降はスペースを使って字下げすればいけるんじゃないか。

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

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

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


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

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

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

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


>>421
おれもそうしてる。
0426デフォルトの名無しさんNGNG
追記。

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

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

(setq-default indent-tabs-mode nil)
0428デフォルトの名無しさんNGNG
>>425
うーん、

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

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

ネタもコミュニティの勢いも尽きたからって宗教論争でスレ盛り上げるのやめたら?
みっともないよ
0431デフォルトの名無しさんNGNG
Symbol#=== と Symbol#== ではどっちが速いの?
return 100 と、ただ 100 とだけ書いたのではどっちが速いの?
0432デフォルトの名無しさんNGNG
ネタもコミュニティの勢いも公的資金も尽きたか
ただの詐欺集団じゃん
0433デフォルトの名無しさんNGNG
>>431
自分で実験してみれ
0434デフォルトの名無しさんNGNG
>>431
Symbol#===とSymbol#==の定義はどう違うのかをまず調べようと思って
リファレンスマニュアル見に行ったけどどこに書いてあるのかさっぱり
わからなかった。これが噂の貧弱なマニュアルか...
0435デフォルトの名無しさんNGNG
Symbolって使ったこと無いんだけど…
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Object#self.20.3d.3d.20other
と
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Object#self.20.3d.3d.3d.20other
の違いの事じゃないのか?
0436デフォルトの名無しさんNGNG
しかしTabだとファイルサイズが減るってすげえセンスだな。
カルチャーショック受けた。今時分こんなこと聞くなんて。
絶対一緒に仕事はしたくないね。
0437デフォルトの名無しさんNGNG
>>434
そんなあなたに refe 。

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

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

んで、本題に戻ると、Symbol#== と Symbol#=== は、結局同じもの(と読める)なので
速度差はないんじゃないの?
0439デフォルトの名無しさんNGNG
組み込みクラスは ri に書いてあるんじゃないの?
ri は標準装備だろ。
0440437NGNG
そうだ、思い出した。
FreeBSD ports の refe だと >>437 のように継承元のメソッドを探してくれないので、
refe を新しいバージョンのにしてもらえないでしょうか?> knu タン
0441デフォルトの名無しさんNGNG
[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)

有意な差は無さそうだ。
0442437NGNG
>>439
ri は継承元のメソッドまでは表示してくれないんじゃなかったでしたっけ?

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

nobu氏の応援により、なんとかなりそうなふいんき。
0444デフォルトの名無しさんNGNG
ついにMoonwolfが鬱に〜orz
0445デフォルトの名無しさんNGNG
うちではこうしないと ext/ripper/ripper.y でこけちゃうみたい。

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

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

みなさんどうですか??
0449デフォルトの名無しさんNGNG
>>448
そのコードのどこでオブジェクトのコピーを期待する?
コピーを示すようなコードない。全部参照。名札を付けてるだけ。
似たようなオブジェクトがほしいならCloneを作ればいい。
0450デフォルトの名無しさんNGNG
C/C++知らないと、ポインタとかリファレンスとかの概念がわかんないんでしょ、たぶん。
0451デフォルトの名無しさんNGNG
>>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が存在する前からタブ幅をいじるやつはいたと思うけど。
ちょっと荒らしっぽくなったけど、本当にその理由が分からなくて聞いてるだけなんで、タブ幅を変えてる人がいたら理由というか利点を教えてください。長年の疑問なんです。
気分悪くした人ごめんなさい。
0452デフォルトの名無しさんNGNG
あのね、タブ幅を変えてるっていう発想がおかしいの。
タブ幅は決まってないの。
0453デフォルトの名無しさんNGNG
>>451
タブ幅を4にしてタブのみでインデントってのは、
オートインデントがなかったDOS時代のエディタからの影響だと思う。
つまり単にそういう「伝統」あるいは「習慣」。
0454デフォルトの名無しさんNGNG
ema糞の激ローカルルールはポータビリティーが低くて迷惑。
ただそれだけの話なんだよ。さっさと理解しとけ。
0455デフォルトの名無しさんNGNG
と、Emacsen をロクに使い熟せなかったアフォが、腹癒せに叫いています。
もしくは、Emacen をロクに使い熟せないアフォが迷惑かけています。


 -- 終了 --
0456デフォルトの名無しさんNGNG
俺もEmacsは使いこなせていないけど、

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

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


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

def x
 Hash.new
end

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

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

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

そうです。他にArrayの[]、Hashの{}、Regexpの//などがあります。
0461448NGNG
あ、なんか破壊的、非破壊的という話もなんとなくわかりそうです
ありがとうございました。
0462368NGNG
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秒か……
0463368NGNG
>451
>結局、タブ幅をいじってる理由はなんだったの?
何だよ、まだ続いていたのか。

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

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

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

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

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

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

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

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

>>464

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


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

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

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



Q.E.D.

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

Emacs利用者は、.emacs に以下の設定をしよう
(setq-default indent-tabs-mode nil)
0476デフォルトの名無しさんNGNG
>>475
> Emacs利用者は、.emacs に以下の設定をしよう

matz 氏にもよーく言い聞かせておいて下さい。
0477デフォルトの名無しさんNGNG
>Rubyでのインデント幅は半角スペース2個が推奨
タブ使えよぼけ
0478デフォルトの名無しさんNGNG
>>477
釣れますか?
0479デフォルトの名無しさんNGNG
ネタ引っ張り杉。
必要に応じてuntabifyすればいいだけの話。
0480デフォルトの名無しさんNGNG
>必要に応じてuntabifyすればいいだけの話。
タブ使えよぼけ
0481デフォルトの名無しさんNGNG
天然無能477=480がこのスレに常駐しているようです。
0482デフォルトの名無しさんNGNG
Cのselectにあたる機能を使いたいのですが、
rubyではどういう関数を使うことできますか?教えてくださいませ。

たとえば、一定時間にgetsの処理が終了しなければ、
そのままfunc1(key)を実行したいのですが。
  key = "default_key"
  key = STDIN.gets # ← 一定時間でスキップして
  func1(key)      # ← これを実行したい
0483デフォルトの名無しさんNGNG
るbyのselect使えよ
0484デフォルトの名無しさんNGNG
>>482
IO.select
0485デフォルトの名無しさんNGNG
timeoutってのが使えませんか?
0486デフォルトの名無しさんNGNG
>>475
> Rubyでのインデント幅は半角スペース2個が推奨
> Emacs利用者は、.emacs に以下の設定をしよう

ruby-mode.elはすでにそうなってる。
0487475NGNG
>>486
ごめん、かなりコメントしにくい。
つーか、もう、引っ張るな。
0488482NGNG
スマソ。使い方が分かりません。
STDIN.getsを1秒おきにすっとばしてほしいのですが。

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

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

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

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


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

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

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

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

>>499
スマソ。正直、自分ではどうやって実装すればよいのか分かりません。
babylonとかドクターマススとか翻訳系のツールの場合、
結構その手の処理が実現できているんで、もしかしたらできるのかなぁなんて。
0501デフォルトの名無しさんNGNG
以下を実行すると表示まで時間はかかりますが一応実行できます。
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
}
}
0502デフォルトの名無しさんNGNG
vrubyよく分かってないが、とりあえず勘で"vrtooltip"って入れて検索してみtらこれがヒットした。
ttp://www.osk.3web.ne.jp/~nyasu/vruby/referer/vr/VRTooltip.html
0503デフォルトの名無しさんNGNG
>>501
そのワーニングでしょ。相手の証明書が確認できてないってこと。たぶんその
ための待ち時間なんじゃないかと思う。

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

というあたりかな。
1.で警告が出て、2.でちゃんと遅くないなら、相手のサーバの設定の問題。プ
ログラムは悪くない。
0504デフォルトの名無しさんNGNG
>>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 を
セットすればいいようです。
0505デフォルトの名無しさんNGNG
>>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を表示すればよいか分からん。
0506デフォルトの名無しさんNGNG
>491
>だからね、タブ使ったところで「気持ち程度」しか速くならないって言ってるでしょ。


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

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

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

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

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

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

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

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

Ruby でつかえる早い XML 処理系あったら教えてくれ。
0536デフォルトの名無しさんNGNG
REXML::StreamParser は?
0537デフォルトの名無しさんNGNG
>>533
ruby-list 参照しろよ。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/39961
0538デフォルトの名無しさんNGNG
ema糞ユーザーは時代遅れの常識知らず

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

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

>>509氏のいうとおり、VCでがりがり書かないと無理?
0545デフォルトの名無しさんNGNG
>>544
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/tooltip/usingtooltips.asp
0546デフォルトの名無しさんNGNG
tooltipならvrubyでも使えるじゃん。
http://vruby.sourceforge.net/samples.html
0547546NGNG
ガイシュツだった。吊ってくる。
0548sai10sight ◆m7YeytgDFE NGNG
>544
VisualuRubyのサンプルに"クリップボードの監視"という例があります。
参考になりませんかね?
http://vruby.sourceforge.net/samples.html
0549529NGNG
>>530
サンクス
使ってみます。
0550デフォルトの名無しさんNGNG
最初からDelphi使えよ
0551デフォルトの名無しさんNGNG
幾重にも入れ子になった配列を丸々コピーする手っ取り早い方法って何かあります?
0552デフォルトの名無しさんNGNG
>>551
Marshal
0553デフォルトの名無しさんNGNG
>>500
これだと思うが。
問題はサンプルがVBだということだ(がそんなに変わらん)
http://support.microsoft.com/default.aspx?scid=kb;JA;112649
ウィンドウハンドルとウィンドウテキストが取得できるから、
そのウィンドウハンドルに対してTooltipを描画すればよい、はずだが
vrubyではウィンドウハンドルは直接扱えないのな。
Swin::Window::hWndの付け替えとかしても大丈夫なのか?
対象コンポーネントのハンドラを持ったWindowが作れるならそいつに
VRToolTip::addToolすりゃいいんじゃないの。
0554551NGNG
>>552
thx
できました
0555デフォルトの名無しさんNGNG
>>550
(´,_ゝ`)プッ
Apolloもロクに知らないうんこ野郎はうんこだけをいじるのがお似合いだ。
0556デフォルトの名無しさんNGNG
>>553
かなり参考になりました。でも、自分ではうまくスクリプトを組めない…
> vrubyではウィンドウハンドルは直接扱えないのな。
> Swin::Window::hWndの付け替えとかしても大丈夫なのか?
ほかのtoolkitでもいいので、この部分どなたか簡単なサンプルを…
0557デフォルトの名無しさんNGNG
どうもこんちは
methodの中のソースコードをそのまま文字列として返す
方法ってありますか?
0558デフォルトの名無しさんNGNG
>>557
Ripperでググれ
0559デフォルトの名無しさんNGNG
解としては>>558で正しいんだけど、そんなことよりも>>557はソースコードで何をやりたいのかが気になってしょうがない。
0560デフォルトの名無しさんNGNG
メソッドオブジェクトのシリアライズとか、JavaScriptのtoSource()とか?
0561デフォルトの名無しさんNGNG
Rubyで実装されているnkf2.03並みの文字コード変換ライブラリってあります?
Uconvだと元の文字コードが判別できないので…
0562デフォルトの名無しさんNGNG
>>561
「Rubyで実装されている」というのはPure Rubyでということ?
それから「nkf2.03並み」というのは具体的にはどういうこと?
これらがはっきりしないと回答のしようがないけど。
0563561NGNG
>>562
すまん

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

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

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

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

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

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

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

毎回、|i| 書くのがマンドクセ。
0578デフォルトの名無しさんNGNG
>>576
そのうち unicode 対応 nkf が入るでしょ。

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

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

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

有名なこの人まで褒めてると嬉しいね
0584デフォルトの名無しさんNGNG
デフォルトイテレータなんかあったらRuby使うのやめる。
0585デフォルトの名無しさんNGNG
>>577
エディタで補完しろ。
0586577NGNG
>>578
groovy についてぐぐったところ、どうやら
it がデフォルトイテレータっぽいですね。

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

そゆ時はmapでないの?
0591588NGNG
ちょっと説明不足スマソ。
イテレータの中で参照したい要素が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
}
0592デフォルトの名無しさんNGNG
Rubyにシステムの標準の文字コードを取得する方法ってあったっけ?
0593デフォルトの名無しさんNGNG
>>591
1.8なら Enumerable#zip が使えるかも。

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

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

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

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

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

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

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

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

長い文字列は効くなぁ
0615デフォルトの名無しさんNGNG
そりゃ整数みたいなもんだからな。
0616デフォルトの名無しさんNGNG
ハッシュのキーにするとき、
文字列 h["test"] よりも、シンボル h[:test] のほうが、
一打少なくてすむので、ちょと楽。
0617デフォルトの名無しさんNGNG
>>616
タイプ量はもっと違うな。ホームポジションからの移動距離はさらに違う。
0618デフォルトの名無しさんNGNG
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
0619デフォルトの名無しさんNGNG
>>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
}
0620デフォルトの名無しさんNGNG
>>619
レスさんくす
open-uri使えば,普通にできました
なにぶん初心者なもので,すんまそん

0621デフォルトの名無しさんNGNG
irb-history って標準添付されませんか?
0622デフォルトの名無しさんNGNG
で、>>618 はなにがマズいの?
0623デフォルトの名無しさんNGNG
>>622
んー手元の環境で実行してみたら、普通のサーバの普通のページなら取り出せ
たよ。

ただ、http://pc5.2ch.net/test/read.cgi/tech/1095004337/の場合は302でフォ
ワードしてるみたいだから、それを扱う部分を自分で作らないとダメみたいだ
ね。で、 open-uri ならそこまで込みでやってくれるという話。
0624デフォルトの名無しさんNGNG
>>623
http://pc5.2ch.net/test/read.cgi/tech/1095004337/ は
open-uri や net/http でも User-Agent を送らないと見れない。
# socket では…どう書くんだろ
0625デフォルトの名無しさんNGNG
>>624
「リクエストヘッダ」で調べてみろ
0626デフォルトの名無しさんNGNG
open-uriがPOSTにも対応してくれたらなあ。
0627デフォルトの名無しさんNGNG
そこでRuby cURLですよ。
0628デフォルトの名無しさんNGNG
MoonWolfさん、たいへんなことになってるな。
0629デフォルトの名無しさんNGNG
Rubyのスレッドがネイティブ化する可能性ってあるんですか?
0630デフォルトの名無しさんNGNG
というか monazilla.org の仕様書嫁
0631デフォルトの名無しさんNGNG
>>628
相変わらず何かをはじめる行動力はすごいな。
持続力の方は(検閲削除)
0632デフォルトの名無しさんNGNG
ここはMLウォッチスレですか?
0633デフォルトの名無しさんNGNG
このスレのレスをMLに自動でポストするスクリプトはどう書けばいいですか?
0634デフォルトの名無しさんNGNG
>>632
いいえ。MWウォッチスレです。
0635デフォルトの名無しさんNGNG
Rubyでミリ秒取ってくるのどうやるの?

C言語で言うclock()か何かあればいいんだけど。
0636デフォルトの名無しさんNGNG
Process.times とか?
0637デフォルトの名無しさんNGNG
>>635
何のミリ秒?
0638デフォルトの名無しさんNGNG
Rubyのソースの処理の一部の実行時間取りたいので

start = clock();

〜何かの処理〜

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

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

0639デフォルトの名無しさんNGNG
>>638
ベンチには興味がないので良く知らんが、
>>614 などに良く上がってる方法じゃだめなのか?
1ms単位の値に見えるけど。
0640デフォルトの名無しさんNGNG
Time.nowでいけました。
ありがとうございました。
0641デフォルトの名無しさんNGNG
Pythonスレ荒れてるな。Rubyist騙って何が楽しいんだか。
0642デフォルトの名無しさんNGNG
どうせこのスレに粘着してたアフォの仕業だろ。
0643デフォルトの名無しさんNGNG
Dir.glob なんですが、"{ "をエスケープする方法ってないの?
たとえば、「ファイル名が"{"で始まるモノ」ってどうかきゃいいの?

Dir.glob("C:/{*") も、Dir.glob("C:/\{*") もダメですた。
0644デフォルトの名無しさんNGNG
Dir.glob("C:/\\{*")
0645デフォルトの名無しさんNGNG
>>643
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Dir;em=Dir.glob
> ruby 1.7 feature: ワイルドカードはバックスラッシュによりエスケープすることができます。
> (ダブルクォートの文字列中では 2 重にエスケープする必要があることに注意してください)
0646デフォルトの名無しさんNGNG
>>621
irb-historyってなんだっけ。
irb/ext/history.rbとは別?
0647デフォルトの名無しさんNGNG
>>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

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

class MyArray
def initialize *arr
@arr = arr
end
def each
@arr.each(&proc)
end
end
0652648NGNG
>>649
抽象化ですか、だからとっつきにくいのかな.
>>651
a = MyArray.new
a = [1, 2, 3, 4]
a.each{|x| print x} #=>1234
などとやってみたのですが、やっぱりよく分かりません。
もう少しサンプルを見せていただけないでしょうか。
0653デフォルトの名無しさんNGNG
>>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やってて無いことに気付いた時に悲しい場面が昔あった。
何だったか忘れたが。
0654デフォルトの名無しさんNGNG
ファイルに格納した文字列を読み込むプログラムを作成したのですが、
ある文字列を読み込んだところで、nil になり、正しく読み込めなくなりました。
これは、文字コードの問題なんでしょうか?ちなみに、shift-jis使ってます。
0655デフォルトの名無しさんNGNG
うんだめ
0656デフォルトの名無しさんNGNG
>>654
読み込みはどういう処理にしてるんですか?
スクリプトを公開してみては?
0657デフォルトの名無しさんNGNG
>>650=>>655
団長!こいつがRubyistを装ってPythonスレを荒らした犯人です!
0658654NGNG
>>656

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

while text = in_file.gets do
out_file.print text
end
0659デフォルトの名無しさんNGNG
>>658
なるほど。あとは"問題のある行"の内容でしょうね。
EOFコードが入ってて、ファイルの終端とみなしてるとか。
その行の内容(文字コード)は確認済みですか?
実例をここで示せます?
0660654NGNG
>> 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になっています。
0661デフォルトの名無しさんNGNG
>>660
UNIXとかCygwin使ってるなら、そのファイルの問題の行をodでダンプ
してみたら?
0662デフォルトの名無しさんNGNG
>>660
text = ''; open('foo.txt', 'rb'){|f|text = f.read}
みたいに全部読み込んじゃってからString#で処理するんじゃダメか?
0663660NGNG
>>661
やってみます。
さっき、DOSプロンプトで実行してみたら、nilになりませんでした。
cygwinだと文字列の取り扱いでよくエラーでる気が..
でも、わけあってcygwinでやらねば。

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

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

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

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

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

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

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

threadでも試してみたものの、
やっぱりSTDIN.getsしようとすると途端に調子が悪くなります。
0675デフォルトの名無しさんNGNG
STDIN.gets 以外の方法を考える方が早いのかも
0676デフォルトの名無しさんNGNG
>>674
あ、cygwinだとfork動かなかったかも。
なんせwin上でRuby使ってたの何年も前なので許してたもれ。
0677デフォルトの名無しさんNGNG
>635
解っているとは思うけど、分解能はmsオーダー無いヨ
0678デフォルトの名無しさんNGNG
>>676
一応実装されてるよ。
0679デフォルトの名無しさんNGNG
>>638
require "benchmark" して Benchmark.bmbm か Benchmark.measure をつかう。
Process.times を使ってるみたいだから分解能はたぶん処理系依存。
0680デフォルトの名無しさんNGNG
Rubyに特許侵害の疑い
http://www.itmedia.co.jp/enterprise/articles/0410/05/news016.html
0681デフォルトの名無しさんNGNG
拡張ライブラリで質問です。
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")));

というところがあやしいとわかったのですが、どう直せば良いでしょう?
0682デフォルトの名無しさんNGNG
>>680
それはRubyだけの問題じゃないというかスレ違い。
0683デフォルトの名無しさんNGNG
Marshalのデータフォーマットってどの位の頻度でバージョンアップされているの?
0684デフォルトの名無しさんNGNG
(・∀・)埋め!
0685デフォルトの名無しさんNGNG
>>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の方が良くないか。
0686デフォルトの名無しさんNGNG
morqってどうなったの?
0687デフォルトの名無しさんNGNG
morzになりますた。なんちゃって。
0688デフォルトの名無しさんNGNG
MoonWolfさんに質問です!
ここもサポートの窓口対象らしいですが
ここで依頼するときはどうすればいいのでしょうか?
何も気にせず疑問のみ書けばMoonWolfさんがいつの間にか返答してくれるのですか?
0689デフォルトの名無しさんNGNG
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]]
今日思いつきで、こんなコードを書いてみた。
でも、毎回イテレータ書くのマンドクサイので、標準の機能であったら教えて。
0690MoonWolf ◆BwMoonWLvE NGNG
>>688
MoonWolfと名指ししてもらえば、回答します。
名指しされてない場合は、気が向いたら回答します。
0691デフォルトの名無しさんNGNG
汚ねぇソースだなw
0692デフォルトの名無しさんNGNG
>>685
ID2SYMでもrb_str_new2してもうまくいきました。ありがとうです。
で、ID2SYMのほうを使います。

でも ID2SYM って、README.EXTに書いてないじゃん。
0693デフォルトの名無しさんNGNG
>>691
また、お前か。
キレイに書き直せるモンならやってみろ、と。
まぁ、オマエには無理だろが(w
0694デフォルトの名無しさんNGNG
>>689
ttp://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=
Array%A4%F2%B3%C8%C4%A5%A4%B9%A4%EB
0695デフォルトの名無しさんNGNG
アホな質問なんですが、p/puts と print ってどう違う(使い分ける)んですか?
0696デフォルトの名無しさんNGNG
p デバッグ用
puts 最後に改行文字がつく
print 何もつかない
0697デフォルトの名無しさんNGNG
パターンマッチを行うスクリプトで,以下の部分がエラーになってしまいます.
"premature end of regular expression"と出るのですが,何が原因なんでしょうか?

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

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

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

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

0709デフォルトの名無しさんNGNG
>707

>単なるbridge(以下略

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

それを言ったらZopeなんかものすごいことになってるのだが。
0712デフォルトの名無しさんNGNG
>>711
まぁそう妬むなよ
0713デフォルトの名無しさんNGNG
>>711
落ちてるのはmojiタソのところだけです。
0714デフォルトの名無しさんNGNG
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/ (開発室)
0715デフォルトの名無しさんNGNG
HashのキーにSymbolを使うとなかなか(・∀・)イイ!!
順番が関係ない物はArrayよりHashの方が扱いやすいし
0716デフォルトの名無しさんNGNG
>>715
むかーし、HashのキーにSymbol使って、
それをMarshalしてえらい目に遭ったことがあるw
今は大丈夫なのかねえ。
0717715NGNG
>>716
げっ、構造の丸ごとコピーにMarshal使ってる…
今のところ変な挙動はないようだが…((( ;゚Д゚)))ガクガクブルブル
0718デフォルトの名無しさんNGNG
リファレンスによると、Marshal.loadとrestoreは

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

らしい
この辺は関係あるのかな。
0719デフォルトの名無しさんNGNG
Ruby の glob で使えるワイルドカードって、
Ruby 独自のモノなんですか?それとも Unix のでは
標準的なものなんですか?
0720デフォルトの名無しさんNGNG
>>719
ワイルドカード自体、シェルによって方言がある。
だから標準かと言われると、まあまあいい線いってんじゃないのて答になるかな。
0721デフォルトの名無しさんNGNG
>>719
POSIX に glob(3) ってのがあるね。実装的には Ruby のは独自みたいだけど。
0722デフォルトの名無しさんNGNG
Rubyは寄せ集め。
いわば雑種。
今更誰が親かなんてわかんない。
0723デフォルトの名無しさんNGNG
Rubyのglobってzshをベースにしてるんじゃないのかと思ってた。
他のシェルに **/ とかはないと思ったけど。
まあzshはもっとリッチに指定できるけど、煩雑すぎるだろうね。

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

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

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

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

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

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

>>734
くだらんツッコミだけど、まだリリースされてないバージョンを書かないで欲しい。じゃないとプレビューの存在意義から考えても、リリース後ごっちゃになるっていう意味でも、うれしくない。
0736デフォルトの名無しさんNGNG
>>730
いまから勉強を始めるなら、Ruby より Python ですか?
0737デフォルトの名無しさんNGNG
>>736
HSP
0738デフォルトの名無しさんNGNG
「コード生成」って具体的にはどういうものですか?
0739デフォルトの名無しさんNGNG
puts 'puts "hello, world"'
0740デフォルトの名無しさんNGNG
Ripper って何ぞや、ってのがまとめられてるドキュメントってありますか?
できれば日本語で。
0741デフォルトの名無しさんNGNG
http://www.loveruby.net/d/?date=20040922#p02
くらいしかないんじゃないかな、今のとこ。
0742デフォルトの名無しさんNGNG
>>741
ありがとうございます。かなりわかってきました。面白そうですね。
IRC bot の安全版 eval プラグインみたいのが作れたりするかな?
0743デフォルトの名無しさんNGNG
死ね
0744デフォルトの名無しさんNGNG
一連のアンチカキコはPythonスレで飼われているキチガイですので誤解なきよう
0745デフォルトの名無しさんNGNG
Pythonスレでもアフォが暴れてるよ
もうね、アボガド(ry
0746デフォルトの名無しさんNGNG
パワーズ
0747江戸川コナンNGNG
わかったぞ!Python、Rubyの両スレで暴れていた真犯人はHSP厨、お前だ!
0748デフォルトの名無しさんNGNG
マジレスすると Python の方が Ruby より言語仕様は格上。
Ruby は些細なこと(例えばこの前の言語バトル)で満足感を得るぐらいs
0749デフォルトの名無しさんNGNG
マジで質問ですがどの辺りが格上なんですか?
0750デフォルトの名無しさんNGNG
直観でw
いや、Ruby は必死だしw
なにかとねw
0751デフォルトの名無しさんNGNG
どうみても一番必死なのはオマエ
0752デフォルトの名無しさんNGNG
日本限定だし・・・正直国産レッテルとか不要だな・・・
判で押したような考えの日本人だけの愛用者・・・オモロイ奴がいない・・・
0753デフォルトの名無しさんNGNG
外国でも使ってるヤツいるだろ。
rubyの影響受けた言語も新しく産まれてるし。
0754デフォルトの名無しさんNGNG
> rubyの影響受けた言語も新しく産まれてるし。
具体的には何?
0755デフォルトの名無しさんNGNG
JVMで動くGroovy。将来Javaで標準サポート予定。
ちなみにGroobyは意図的にRubyに発音似せたらしいよ。
0756デフォルトの名無しさんNGNG
>>748
発想自体が違うよ。
Ruby と Python を比べるなんて、
C と Pascal を比べるのと同じくらい不毛。
0757デフォルトの名無しさんNGNG
ごめんPythonもRubyも全然知らないで荒らしたいだけだったんだwww
0758デフォルトの名無しさんNGNG
ArrayとHashって使い所が結構難しいな
名札を使いたければHash
順番が大切ならArray
indexを使いたいならHash
出し入れの速度ならArray?
かな…まだまだありそうだ…
0759デフォルトの名無しさんNGNG
>>754
groovy
0760デフォルトの名無しさんNGNG
>>758
でかいけど中身が疎ならHash、とか?

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

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

その転載。

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

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

つぅかフクロウ本に書いてあるね
Python > Ruby
0772デフォルトの名無しさんNGNG
Ruby/Python がある以上、Python 以下という事だけは無いな。
0773デフォルトの名無しさんNGNG
>>771
ん?どこに書いてるっけ?

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

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

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

a = A.new    <ここで※1になったかどうかを検出したい
な感じです。
0779デフォルトの名無しさんNGNG
>>778
例外出して受けたら?
0780776NGNG
>>779
ありがとうございます
例外使ってみます
0781774NGNG
>>775
thx
Class.new で生成したクラスオブジェクト、ってこと?
そうです。

やっぱり任意に解放することはできませんか…
どうしても困る事じゃないんですけどね。
0782デフォルトの名無しさんNGNG
変数宣言が不要 が売りみたいですが、perlの use strict みたいなことできませんか。
ってかそんなんなくてもええからrubyスタイルでバグ少なくする方法教えてくれ。
0783デフォルトの名無しさんNGNG
>>782
test first で書く
0784デフォルトの名無しさんNGNG
ライバルはHSPのみ、か
0785デフォルトの名無しさんNGNG
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

これで、破壊的メソッドと、非破壊的メソッドの重要性もわかりそう。
0786デフォルトの名無しさんNGNG
>>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!} の知識が必要になるで)

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

def construct
$name = "hoge1"
addControl(VRStatic, "st1", $name, 0, 0, 100, 30)
…
end
def btn1_clicked
$name="hoge2"
…
end
0790デフォルトの名無しさんNGNG
>>*破壊*
>*band厨ですか?

いみふめー
0791デフォルトの名無しさんNGNG
*鑑定*
0792デフォルトの名無しさんNGNG
>>787
http://www.google.co.jp/search?q=%E3%82%BF%E3%83%96%E3%82%92+site%3Aruby-lang.org
0793デフォルトの名無しさんNGNG
>>782
俺のイメージでは変数の宣言不要というのはちょっと違う。
宣言と代入が同時というイメージ。まあグローバルとかは違うけれど。まあ-wあるし。
この仕組みは結構よく出来てるよね。Pythonとか由来なのかな?
これだと意外に単純なスペルミスにははまらない。
0794デフォルトの名無しさんNGNG
*破壊*の巻物 (Scroll of *Destruction*)
0795デフォルトの名無しさんNGNG
Destruction Baby
0796デフォルトの名無しさんNGNG
Love is destructive
0797789NGNG
自己レスソマソ。>>789 @st1.caption = "hoge2"するだけだった…
0798デフォルトの名無しさんNGNG
古代万色ドラゴンはあなたをひっかいた - more -
########################
DDDDDDDDD@DDDD
########################
0799デフォルトの名無しさんNGNG
暗黒の魔法書[Ruby-DBウェブデザイン]を自動破壊します。
0800デフォルトの名無しさんNGNG
Countdown to Extinction
0801デフォルトの名無しさんNGNG
滅茶苦茶凝ったRubyのGUIのスクリーンショットなどあれば紹介していただけませんか?
Rubyでどこまで完成度の高い or 洗練されたGUI作れるのか参考にしたいのですが。
0802デフォルトの名無しさんNGNG
>>801
GUIって言語に依存するもんじゃないよ。
0803デフォルトの名無しさんNGNG
TkにSDLの窓を入れられるんだから
他のGUIにもSDLの窓を入れられたらいいのに、と夢想
0804801NGNG
>>802
あいや、失礼。そもそもは、
(たとえば)Macのアプリのようなwindow装飾って、
どのくらいコードを書けば実現できるんだろなぁと素朴な疑問なわけです。
半透明の効果を使ったりとか、凝ったインターフェースを
Rubyで書く場合のテクニカルな方法をいろいろ参考にしたかったので…
0805デフォルトの名無しさんNGNG
>>804
それはRubyじゃなくてGUIツールキットの実装如何
そのような機能を持ったGUIツールキットなら実現できるかと

それにGUIの半透明処理なんてRubyでやったら遅くて使い物にならない気が…
0806デフォルトの名無しさんNGNG
>804
そこでRubyCocoaですよ。
0807デフォルトの名無しさんNGNG
>804 
そこでwxRubyですよ。 
0808デフォルトの名無しさんNGNG
ルビ厨はGUIに不自由なので能力的に実現不可能です。
0809デフォルトの名無しさんNGNG
とHSP厨がほざいております。
0810デフォルトの名無しさんNGNG
VC/VC.NETあたりと比較されて言われるならまだ納得がいくが
HSP相手には言われたくないなw
0811デフォルトの名無しさんNGNG
>>805
> それにGUIの半透明処理なんてRubyでやったら遅くて使い物にならない気が…
「気が…」ではなくて、実際に凝ったことをRubyでやってみたらどうなるのか、
コードやパフォーマンスを確認したいのが >>801 さんの主張だと思われ。
0812デフォルトの名無しさんNGNG
GUIツールキット次第
0813デフォルトの名無しさんNGNG
>>812
>>808
0814デフォルトの名無しさんNGNG
てゆーか、それ、GUIじゃなくてただの画像処理じゃん。
0815デフォルトの名無しさんNGNG
samidareっていまダウンロードできますか?
0816デフォルトの名無しさんNGNG
半透明処理するのに最終的にネイティブメソッド呼ぶなら何使ってもそう変わらんはず。
ウィンドウのプロパティとしてアルファ値が設定できる環境ならなおさら。
設定したらあとは環境任せで言語側の処理はないから。
Win32APIでいうと
SetWindowLong(hVimWnd, GWL_EXSTYLE,
GetWindowLong(hVimWnd, GWL_EXSTYLE) | WS_EX_LAYERED);
pSetLayeredWindowAttributes(hVimWnd, 0, gbAlpha, LWA_ALPHA);
UpdateWindow(hVimWnd);
したらあとはWindowsが勝手にやってくれる。
0817デフォルトの名無しさんNGNG
そんな事したら移植性のかけらも無いな
0818デフォルトの名無しさんNGNG
そこでWine
0819デフォルトの名無しさんNGNG
幾つか半透明化できるアプリを wine で起動してみたが、半透明にならなかったぞ?
0820デフォルトの名無しさんNGNG
半透明処理ってX11だとR6.8が必要だっけ?
0821デフォルトの名無しさんNGNG
半透明処理をサポートしてるGUIツールキットってある?
もう十分標準的な機能だよね?
0822デフォルトの名無しさんNGNG
.NET Framework, VCL
0823デフォルトの名無しさんNGNG
>>807
Mac版のwxRubyってどうよ?
Win版はImageとDC周りに挙動不審なところがあるよ…○| ̄|_
0824デフォルトの名無しさんNGNG
VRuby+WIN32APIでSetLayeredWindowAttributes駆使したプログラム書いても
そんなに大変じゃなかったけど。
0825デフォルトの名無しさんNGNG
rubyタイプ数多すぎ
0826デフォルトの名無しさんNGNG
http://www.fdiary.net/ml/ruby/msg/403

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

外出ですか?
0830デフォルトの名無しさんNGNG
京女で教えてみたい(謎
0831デフォルトの名無しさんNGNG
>>829
またオナニー書籍が上梓されるのか・・・紙の無駄だよ。
0832プログラミング初心者NGNG
ruby/tkで作ったウィンドウの上に、
Excelのコンポーネントをのせる
(表現がおかしいいかもしれないですけど、Excelを使いたいってことです)
ことってできますか??
できるなら、サンプルちょっと書いてみてもらえませんか?
0833デフォルトの名無しさんNGNG
Pythonにしとけよ
0834デフォルトの名無しさんNGNG
必死だなw
0835デフォルトの名無しさんNGNG
>>832
人に頼りすぎ
0836デフォルトの名無しさんNGNG
>>832
できるなら、質問する前にもうちょっと調べてもらえませんか?
0837デフォルトの名無しさんNGNG
>>832
できるなら、自力で挑戦してどこまで出来たのか教えてもらえませんか?
0838デフォルトの名無しさんNGNG
そこで、Moonwolfさんの出番ですよ。
0839デフォルトの名無しさんNGNG
Rubyの最大の欠点はこの腐ったコミュニティが原因だよ
0840デフォルトの名無しさんNGNG
>>839
> この腐ったコミュニティ
なんで?キリスト教系宗教団体じゃなかったの?
0841名メ本Ruby無職にクリティカル NGNG
名メ本Ruby無職にクリティカル
0842プログラミング初心者NGNG
VisualuRubyで、IEならわかりました。
これはActiveXとかいう技術を使ってるようなのですが、
ActiveXってインターネットに対応するための技術(?)のような説明が書いてあって
なぜ関係あるのかわかりません。
Excelはまた別なのかな??

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

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

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

ていうかvruby使った方がよさそうだが。
0844デフォルトの名無しさんNGNG
わざわざGUIの超不得手なRubyでがんばって実装する理由はないんだが。
0845デフォルトの名無しさんNGNG
>>843
ありがとうございます。

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

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

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

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

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

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

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

def self_char(keycode, keydata)
p keycode
end

しても、矢印キーだけは無反応なんですけど…
0857デフォルトの名無しさんNGNG
http://www.fdiary.net/ml/ruby/msg/421
http://www.fdiary.net/ml/ruby/msg/423
http://www.fdiary.net/ml/ruby/msg/425
0858デフォルトの名無しさんNGNG
ルビ教信者さんは今月のリナマガのまつもと教祖の駄文コラムにも盲目的に絶賛するの?
0859デフォルトの名無しさんNGNG
?
0860デフォルトの名無しさんNGNG
>>847
配列をハッシュに登録するのって、ループでまわさなくても、やる方法ってなかった?
0861デフォルトの名無しさんNGNG
>>860
ary = %w[ alpha bravo charlie delta ]

hash = ary.inject({}) { |h,k| h[k] = 1; h }
hash['alpha'] # => 1
0862デフォルトの名無しさんNGNG
data = ['foo',true,'bar',true...];
Hash[*data]

コンストラクタで渡してやってもできるみたい。
0863デフォルトの名無しさんNGNG
>>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)が発生するはず。
いまのところ支障はないみたい。
0864デフォルトの名無しさんNGNG
>858
どの記事? 最近雑誌も立ち読みできんからなー。
0865デフォルトの名無しさんNGNG
ttp://itpro.nikkeibp.co.jp/free/ITPro/NEWS/20041012/151080/

Ruby 好きだったけど島根県と聞いて激しくがっくり・・・orz
0866デフォルトの名無しさんNGNG
>>865
なぜに?どの都道府県ならがっくりしなかったんでしょう?
0867デフォルトの名無しさんNGNG
>>866
さ い た ま?
0868デフォルトの名無しさんNGNG
ttp://www.rubyist.net/~matz/20040906.html#p05
> けど、Rubyって「島根発」とか「島根県内技術者が作った」ってイメージはあんまりないよな。
0869856NGNG
>>863
ありがとうございます。完璧にうまくいきました。
0870デフォルトの名無しさんNGNG
こういうのがあったら嬉しかったりするだろうか?

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

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

0874デフォルトの名無しさんNGNG
core を吐くと次のようになります。
0875デフォルトの名無しさんNGNG
>>872
溜まった膿を出しているところです。
0876デフォルトの名無しさんNGNG
>>870
Regex.quoteと何が違うのか。
0877デフォルトの名無しさんNGNG
>>876
タイプ量が減るのが(゚д゚)ウマーという話だと思う

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

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

>addHandler(256,"keydown", MSGTYPE::ARGINTINT,nil)#WM_KEYDOWN
0882デフォルトの名無しさんNGNG
>>868
けど、Rubyって「日本発」とか「日本国内技術者が作った」ってイメージはあんまりないよな。
0883デフォルトの名無しさんNGNG
思いっきり国産臭ぷんぷんなんですが
嫌窓厨多いし
0884デフォルトの名無しさんNGNG
嫌窓厨はだいたいUN*X使ってるっしょ。
TRONマンセーな香具師ばっかなら国産臭いけどなw
0885デフォルトの名無しさんNGNG
TRONは組み込み系の世界標準を目指しているらしいし
0886デフォルトの名無しさんNGNG
>>885
世界標準を目指しているにしてはさっぱりな気がするが…
このままじゃ増大するコンピューティングパワーとオープンソースOSに押されて
永久に一部で細々の日陰物になりそう
0887デフォルトの名無しさんNGNG
B
0888デフォルトの名無しさんNGNG
I
0889デフォルトの名無しさんNGNG
AkRubyほしい
0890デフォルトの名無しさんNGNG
範囲オブジェクトって連結できないでしょうか?
こういうのがやりたいのですが、スマートな方法はあるでしょうか?
(1..2 + 4..5).each { |i| p i }
0891デフォルトの名無しさんNGNG
>>890
Range から Array にするとか。
((1..2).to_a + (4..5).to_a).each{|i| p i}
0892デフォルトの名無しさんNGNG
>>890
標準では連結する機能がないのでは?
とりあえずこうすれば実現できますが、スマートではありませんね。
((1..2).to_a + (4..5).to_a).each { |i| p i }
0893デフォルトの名無しさんNGNG
あらら、かぶった。失礼しました。
0894デフォルトの名無しさんNGNG
ありがとうございます。
考えてみたら、Range を連結したものは Range といえるか微妙な気もしてきました。
やっぱり挙げていただいたように Array として開くのがいいかなあ。
範囲がでかくて Array が巨大になりそうだったら素直にこうするしかないか。
[1..2, 4..5].each { |r| r.each { |i| p i } }
0895デフォルトの名無しさんNGNG
範囲と範囲を連結すると、だぶったり穴があいたりするだろ。
それは範囲とは呼べん罠。
>>890が欲しいものは単なる数列が詰まった配列みたいだし。
0896デフォルトの名無しさんNGNG
配列の内包表記のサポートまだー?
0897デフォルトの名無しさんNGNG
ある範囲とある範囲の集合も立派な範囲だと思うがな。
そんなに違和感ないし。
Rangesクラス作って894の方式でeachするeach作ればいいんでないの。
まあ、基本的には単なる配列なんだけど。

何を親クラスにするか微妙だが。
Rangeか?
0898デフォルトの名無しさんNGNG
RangeとRangeを足したら、
それらの中の最小値と最大値から構成されるRangeを返す、
ってのが自然だと思う。
0899sai10sight ◆m7YeytgDFE NGNG
>>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 }
0900sai10sight ◆m7YeytgDFE NGNG
あ。インデントに失敗...。読みにくくてごめん。
0901デフォルトの名無しさんNGNG
>>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*")
}
}
}
}
0902デフォルトの名無しさんNGNG
>>899
やっぱり何度みても汚ないコードだね
0903sai10sight ◆m7YeytgDFE NGNG
>>902
あぁっ。申し訳ない。
もし良かったら、改善すべき点を指摘していただけます?
0904デフォルトの名無しさんNGNG
より一般的に考えるなら、範囲集合に重複があったときにどうするか、とかも
考えた方が良い気がする。たとえば、
[1..5, 3..7]
これに対しては each すると、 1..7 としてふるまってくれる方が自然な気が
する。一方、抜けに対しては抜けを対処したい。

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

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

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

class UserForm < VRForm
end

一応self.visible = false
とかは試してみたんですけど、うまくいきませんでした。
0907881NGNG
>>905
ありがとうございます。
なんか難しいですね(^^;)

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

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

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

なんとかいい方法はないものでしょうか?
0909デフォルトの名無しさんNGNG
>>907
難しいつうか…
どっちみちCUIと比べるとGUIはめんどくさいと思う。
あと、GUIプログラミングの知識も必要かと。イベントとかの概念はここから来ているので…
Windowsで使われているイベント名とかならMSのサイトにあるMSDNライブラリで調べられるかと
0910デフォルトの名無しさんNGNG
なぜ Tkinter を使わないのか理解に苦しむ。
GUI実装 は Ruby を捨てて Python を選択するのが自然だろう?
0911デフォルトの名無しさんNGNG
GUIはC++以外全部ダメ。
0912デフォルトの名無しさんNGNG
>>910
馬鹿の分際で朝っぱらから粘着乙
0913デフォルトの名無しさんNGNG
>>912
信者の最後の抵抗乙
0914デフォルトの名無しさんNGNG
>>910
なぜTcl/Tkを使わないのか理解に苦しむ。
Tk使うならTclを選択するのが自然だろう?
0915デフォルトの名無しさんNGNG
>>914
Python の方が書き易いから。
0916デフォルトの名無しさんNGNG
実例示さないと説得力ゼロだけど。
0917デフォルトの名無しさんNGNG
vruby使う人が増えてきてるようですね。
作ったのをどっかに公開して下さいよ。
やっぱ人が書いたものが参考になるので。
0918デフォルトの名無しさんNGNG
作ったけどソースが美しくないので・・・
0919vruby入門NGNG
なんか、vrubyの話題ばかりで申し訳ないんですが、
↓こういうのって、うまく使えません??
http://www.vector.co.jp/soft/win95/prog/se267009.html

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

self.show 6
6はSW_MINIMIZE
WindowsAPIのShowWindowで調べてみて。
0923デフォルトの名無しさんNGNG
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
0924vruby入門NGNG
>>923は
多分、僕の書いたことに対して、vrubyだけでできるということなんだと思うんですが、
表示される、内容の意味が全くわかりません。
だれか解説お願いします。ちょっと教えてもらえれば、あとは自分でしらべるので。お願いします。

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

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

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

def self_traylbuttonup(iconid)
self.show 9
self.top true
end
0932デフォルトの名無しさんNGNG
vrubyの話と Win32API の使い方の話がごちゃまぜになっててわかんねー。
0933デフォルトの名無しさんNGNG
RubyからSystem.Windows.Formが呼べたら幸せなのにね。
0934デフォルトの名無しさんNGNG
そこで ActiveRuby ですよ
0935デフォルトの名無しさんNGNG
>933
Win32OLEと.NETのCOMサポートの連携でなんとかなるんかな? どうなんだろ。
0936デフォルトの名無しさんNGNG
>>933
スレの前の方で出ていた.NET bridgeを使う。
0937デフォルトの名無しさんNGNG
>>929
Ruby/gtk2 を調べててここにたどり着いたけど、いきなり >>929 を読んでしもた。
かなり引けた…が、もう少し調べてみるか…。
0938デフォルトの名無しさんNGNG
>>920
908です。自己解決しました。
PeekMessageを呼んでメッセージを消すことができました。
timeとpointapiは0でも動いたようです。
vrubyにもちょっと改造を加える必要がありました。
といってもmsghandlerで受け取るmsgを自前の
変数にコピーしておくだけですが。
しばらくこれで様子をみてみます。
0939デフォルトの名無しさんNGNG
リファレンスってAND検索できないんだね。RWikiの仕様?
かなりトホホだと思うんだけど……
0940デフォルトの名無しさんNGNG
>>939
HTMLHelp版を使うってのはどうよ
0941デフォルトの名無しさんNGNG
CVSからソースを拾ってきてconfigure のあと make すると parse.y でエラーになります。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/21447
↑なんかが関係しているみたいですが、Rubyの問題なのか、自分の環境で何か
不備がある(インストールで足りないものがある etc)のかどっちなんですか?

gcc -g -O2 -I. -I. -c parse.c
parse.y: 関数 `parser_yylex' 内:
parse.y:6362: 警告: 代入により、キャストなしで整数からポインタを作りました
parse.y:6365: error: dereferencing pointer to incomplete type
parse.y:6367: error: dereferencing pointer to incomplete type
parse.y:6369: error: dereferencing pointer to incomplete type
parse.y:6378: error: dereferencing pointer to incomplete type
parse.y:6380: error: dereferencing pointer to incomplete type
parse.y:6380: error: dereferencing pointer to incomplete type
parse.y:6382: error: dereferencing pointer to incomplete type
make: *** [parse.o] エラー 1
0942デフォルトの名無しさんNGNG
Rubyist Magazine 0002号 <http://jp.rubyist.net/magazine/?0002>;
* 巻頭言
* Rubyist Hotlinks 第 2 回 前田修吾さん
* Ruby ではじめるプログラミング
* Apollo な日々 -- Windows で Ruby を始める
* WEBrickでプロキシサーバを作って遊ぶ
* Nora チュートリアル 第 2 回
* Ruby Library Report 第 1 回 IoC コンテナ
* rpm を Ruby でいじる
* ちょっと特異な特異メソッド入門
* Ruby の落とし方
* オープンソースカンファレンス 2004 Ruby BoF 参加レポート
* Ruby Conference 2004 レポート
* 動物無宿
* RubyEventCheck
0943デフォルトの名無しさんNGNG
次回はakrさんの記事はmatzさんの落とし方です。
0944デフォルトの名無しさんNGNG
月狼たん、キモイくらいにマシな写真になったな
0945デフォルトの名無しさんNGNG
月狼氏は男性なの?
0946デフォルトの名無しさんNGNG
>>944
ホントだワロタw
1号の写真はイジメだよなあれじゃ。
0947デフォルトの名無しさんNGNG
まだキモイ
0948MoonWolf ◆Hhaz8D6rR. NGNG
まだキモいですか……次号は茶髪ですよ(^^;
0949デフォルトの名無しさんNGNG
Apolloやるなら、vrubyもやってほしい。
今回のApolloみたいな、まじめな記事でなくて、
ほんと適当な説明でいいから、
応用の効くような話を。
0950デフォルトの名無しさんNGNG
Rubyってちゃんと動くんですか?
0951デフォルトの名無しさんNGNG
>>944
川俣さんと比べるとどっちがイケメンなんだろう?
http://www.atmarkit.co.jp/fdotnet/opinion/kawamata/2001_02.html
0952sai10sight ◆m7YeytgDFE NGNG
>>950
ちゃんと動いてますよ。ぜひ確かめてください。
不具合が全く無いという訳ではありませんが、
実用に差し支えるようなものは極めて稀でしょう。
その場合でもMLで報告すれば対応は早いようですし。
0953デフォルトの名無しさんNGNG
akrタン、キタ━━━━━━(゚∀゚)━━━━━━━!!!!!
0954デフォルトの名無しさんNGNG
>>951
イケメン?・・・・イケ・・・・メン?
アヒャヒャヒャヒャヒャーーーー
0955デフォルトの名無しさんNGNG
月狼たんの写真変遷は「Rubyを使ってみるみるイケメンに!」という広告です
0956デフォルトの名無しさんNGNG
Perl嫌いな人はお前らが思っているより大勢いるんだが(大爆笑)

インターネット上で叩かれるのみならず、市販の書籍でも
「私(監修者)はPerlがダイキライなので、この章はとばして読んでください。」
なんて言われる始末ぷぷぷ。

別の本では「Perlなど触りたくもないのですが、仕方がなく」と嫌々ながらwwwwwwwwwwwwwww

「もっとも、世界中のPerlプログラムなど、どれも皆単なる偶然で動いているだけなのでしょうから、
その意味で典型的なPerlプログラムと言えますが(わらい)」とか書かれたり。

ちなみに、残念ながら捏造でも何でもないwwwwww

ぷぷぷ。
ぷぷぷぷぷ。
Rubyやってて良かったよ。お前らと一緒にされるのはごめんだ。
汚らしいゴミperlerめ。プログラマ板から出ていくまでお前らを叩き続けてやるからな。
汚らしい。
糞虫。
嫌な気分になってくれれば幸いだ。俺はそれを望んでいる。
ゴキブリに感情があるのか知らんが。
0957デフォルトの名無しさんNGNG
なんでruby儲って救いようがないぐらい痛いのだろうか・・・
CPANの二番煎じのような活動をして嬉しいの?
0958デフォルトの名無しさんNGNG
>>956
回りくどいruby叩き乙。

>>957
はいはい、そうですね。
それでいいから、もう自演とか粘着は止めてね。
0959デフォルトの名無しさんNGNG
CPANの二番煎じのような活動ってなんだろ。
0960デフォルトの名無しさんNGNG
>>938
最後にSKIP_DEFAULTHANDLERを置くらしい。

def edit1_char(ansi,keydata)
messageBox "入力しました[#{ansi.chr}]",self.caption,0
SKIP_DEFAULTHANDLER
end
0961デフォルトの名無しさんNGNG
>>957
 
 キミの人生にとってRubyが悪さをしているようなら、まつもと氏に
 苦情を言ってみたら?
 特に問題ないのであれば、放っておいてくれないかい?

 それもできないくらいにキミは「痛い」のかな?
0962デフォルトの名無しさんNGNG
>>960
むちゃむちゃ助かりました。ありが�d
0963デフォルトの名無しさんNGNG
ホントしょうがない奴等だな。perlerは。
基地害rubyist騙りもよく飽きないもんだw
たまには別の歌を歌え。
0964デフォルトの名無しさんNGNG
>>961
おまいはこれでも読んでHSP信者に改宗すべし。
http://research.microsoft.com/~emeijer/Papers/HSP.pdf
0965デフォルトの名無しさんNGNG
まだ、HSPのキチガイが粘着してたのかよ。
畑が違うのだから、誘わても誰も改宗などしないだろ。
逆に、誘われなくても必要があれば使うだろうし。
0966デフォルトの名無しさんNGNG
まぁRubyなんてHSPのライバルでもしてるのがお似合いな訳で。
0967デフォルトの名無しさんNGNG
hspなんかは32世紀に残るべき言語ではないな。
0968デフォルトの名無しさんNGNG
そうだな。Perl とは格が違うよ。比較すること自体がナンセンス。相手にならない。
0969デフォルトの名無しさんNGNG
.NETに乗れない言語はHSPだろうがRubyだろうが死滅する。
間違いない。
0970デフォルトの名無しさんNGNG
Perlは糞。Perl6は何時になったら出るの?ねぇw
0971デフォルトの名無しさんNGNG
ルビ厨ってデブ厨とよく似てる。どっちもなぜか第三者に対して異常に攻撃的。
それでいてコミュニティは排他的。
0972デフォルトの名無しさんNGNG
(わらい)
0973デフォルトの名無しさんNGNG
>>965-972
>>964
0974デフォルトの名無しさんNGNG
Haskell Server Pages
0975デフォルトの名無しさんNGNG
Rubyist Magazineの
http://jp.rubyist.net/magazine/?0002-WCNewsPaper#l7
を読んで、
「オブジェクト指向言語ってすごく不自然なプログラミングをさせるんだな。
こんなの初心者に向いてるか?」
と思った。オブジェクト指向を勧める人の意見を聞いてみたい。

題材は、七並べみたいなもので、
二つのカードが隣り合わせに置けるかどうか判定する、というもの。

普通は(OOPに染まってない初心者がいれば意見歓迎)
「トランプは…数字のカードとジョーカーがあるんだよな」
と考えるのではないかと思うのだけど、筆者は、

トランプの数字カードをCardクラス(基底クラス)にして、
そのメソッドとして数字カード用の判定する関数を実装し、
その上で、
Jokerを特異メソッド(Ruby)か継承(Java)でそのメソッドをオーバーライド
することで表現してる。

疑問:
    なんでいわゆる「トランプ」そのものじゃなくて
    「七並べ用のカード」なんてものを定義しようと思うんだろう?
    それに、他のゲームに流用できなくなってしまってる。

    Jokerが数字カードの一種っておかしくない?
    トランプには数字カード*と*Jokerとがあるんだと思うんだけど。
0976デフォルトの名無しさんNGNG
特異メソッドの説明上無理やりそうやってるだけなんじゃないの
0977デフォルトの名無しさんNGNG
>975 馬鹿丸出し
0978デフォルトの名無しさんNGNG
>>975
マルチすんなボケが
http://pc5.2ch.net/test/read.cgi/tech/1092932484/494-
0979デフォルトの名無しさんNGNG
>>976
そもそも説明してる人が特異なんだから仕方がない。
とかいいつつファンですけどw

>>978
そのスレも相当痛いな。
0980デフォルトの名無しさんNGNG
おれもそれ変だと思う
0981デフォルトの名無しさんNGNG
結局vRubyとかwxRubyて何がしたいのかわからん。
Rubyでこんなことが出来るよ、
じゃなくてムリヤリRubyで実現しますた!って感じ。
0982デフォルトの名無しさんNGNG
>普通のプログラマが少しでも「普通のやつらの上を行け」るのは、Ruby になるような気がしています。

Ruby関係の文章って痛すぎるんですが
0983デフォルトの名無しさんNGNG
それを言うな。
0984デフォルトの名無しさんNGNG
Ruby最高1!!!!!!!!!!!!!!
0985デフォルトの名無しさんNGNG
>>982
元ネタはLispだよ
0986デフォルトの名無しさんNGNG
その元ネタの文章もかなり痛いんだけど
>Ruby になるような気がしています。
何がなにやらわからない。
0987デフォルトの名無しさんNGNG
我々には希望が欲しいのだよ。
984みたいなキチガイは希望を見失った負け犬。
Rubyを信じたはいいが暗礁に乗り上げ裏切られたことに気付きながらも
自分を認めようとせず前に進む事を辞めた亡者。
だから叫ぶ。

Ruby最高

と。
0988Ruby!!!!!!!!!!!!!!NGNG
             __,,,,,,                              /  ̄ ̄ ̄ ̄\
         ,.-'''"-─ `ー,    ,--─'''''''''''i   ,-、,,           /、         ヽ
      ,.-,/        /;i   /::::::::::::::::::::::!   |,,  \          |・ |―-、       |
     (  ,'          i;;;;;|  i:::::::::::::::::::::;ノ    ヽ-、,,/''ー''' 7    q -´ 二 ヽ       |
      `''|          |;;;;;;i   |:::::::::::::::::::::}        ``ー''    "ノ_ ー  |     |
        !       '、;;;/   '、:::::::::::::::::::i                \. ̄`  |      /
        '、 `-=''''フ'ー'''    ヽ、::::::::::/ヽ、-─-、,,-'''ヽ          O===== |
         \_/         ヽ--く   _,,,..--┴-、 ヽ        /          |
                         ``"      \> ___  /  /        |
                                    \〜〜|=◯_ノ          |
0989デフォルトの名無しさんNGNG
”Ruby最高”は周期的に2chに貼り付けるスクリプトのテストだと思えばいい。
Ruby最高と言って誰もとがめない場所は匿名のここしかないからね。
0990デフォルトの名無しさんNGNG
留びぃが意の言語はkそ
0991デフォルトの名無しさんNGNG
この(>>988)、”最高”の文字がどこにもない、
”Ruby!!!!!”
は今まで信じていたRubyに裏切られた瞬間を言葉に表現したものだ。
信じられないものを見た、その憎しみが込められている。
正確には
”なんてこった、Ruby!!!!!”
かもしれない。
0992デフォルトの名無しさんNGNG
         l;;llllll||lll从从WWWl||ll,,ツ从ツツノlイノ'彡ヽ
         イ从、从从从从从ll|| |リ从////ノノ彡;j
        jl从从从从;;;;;;;;;;;;从;;;;;/;;;;;;;;;、、、;;-ー、イ彡:}
       (ミミ;;ッ''"゙ ̄ '、::::゙`゙''ー、/"´:::  :::: |;;;;;彡|
        }ミミ;;;} :::  {:: ゙:::::、:::    :::ィ ,,:::: };;;;イ;;l
        jミミ;;;;} :::  ヽ::::ミヽ::  |  ノ  W::  |;;;;彡:|
          }ミ;;;;;;} ::: ヾ {:::::ミ ヽ j イ|从 ":::: };;;;;;彡{
         iミ゙;;;ノ::::::  \'、 }}: l||イ /,ィ;;、、-ーーヾ'ァ;;イ、
        {;;;;リ:レ彡"三三ミヽ,,リ{{,,ノ;;;;ィ≦==ミ'" |;;〉l.|
        l"';;;l ゙'''<<~(::) >>::)-ら::ィ'ー゙-゙,,彡゙  .:|;l"lリ
          |l ';;', ::: ー` ̄:::::::ミ}゙'~}彡ィ""´   .:::lリノ/
         l'、〈;', :::    :::::::t、,j iノ:::、::..    ..::::lー'/
   ,、,,,/|  ヽヽ,,', ::.、    :::::(゙゙(  ),、)、ヽ::.  イ ::::l_ノ
)ヽ"´   ''''"レl_ヽ,,,', ヾ'ー、:::;r'"`' ゙'';;""  ゙l|  ::j ::: |: l,,,,
         ゙''(,l ', l| リ {"ィr''''' ーー''ijツヽ  l| :" l  |',`ヽ,
   き 利    (l :'、 `',. 'l| |;;゙゙゙゙"""´ー、;;| ノ:  / /リヽ \
.    く  い    Z::::ヽ '、 ゙'t;ヽ ` ´ ノ;;リ   ,r' //  |
   な. た     >; :::ヽ  ::ヽミニニニ彡'"  , '::::://  |
   ┃ ふ     フヽ ::\ : ミー―― "ノ , ':::: //:   |
   ┃ う      }ヽヽ :::::\::( ̄ ̄ ̄ /:::://:    |
   ┃ な     }| ヽヽ :::::`'-、竺;;ニィ'::://    |    l
   // 口    (: |  ヽ ヽ :::: ::::::...  :://     |    |
)  ・・.  を    (  |  ヽ ヽ::  ::::::... //      リ.    |
つ、       r、{  |   ヽ ヽ   //      /     |
  ヽ      '´    |   ヽ  ヽ //      /     |
0993デフォルトの名無しさんNGNG
いや違う、988のAAで見て判るように、
”Ruby!!!!!”
は憎しみの攻撃的な意思表現として使われる。
正確には
”Rubyぶっ殺す!!!!!”
である。
0994デフォルトの名無しさんNGNG
肝心なことを忘れていた。
988の様な例はスクリプトのテストでない場合が多く、
書き込みの意図が表面化しそうになると、
その憎しみがそのまま荒らしと化す。
だから我々は、放置しなければならない。
放置こそ最善の策だった。
うっかりしてた。
0995デフォルトの名無しさんNGNG
頼むから荒らさないでくれ
0996デフォルトの名無しさんNGNG
しかし放置したからと言って体質が改善されるわけではない。
病気は眠るだけでは治らない。
体力は回復するだろうが、
薬や切除で患部を取り除かなければ、いずれ再発する。
これはRubyが抱えた不治の病かもしれない。
0997デフォルトの名無しさんNGNG
残念なことに、この病気は感染する。
今や無関係なスレにまで侵食し、
プログラム板の被害は甚大である。
0998デフォルトの名無しさんNGNG
そもそも、Rubyスレが立った当初からこの病気に罹っていたと思う。
なぜだろうか。
それはRubyのコミュニティ自体が病的であったからだろう。
0999デフォルトの名無しさんNGNG
患者を多く抱えたコミュニティは、本来医者の役割であったはずの側も
その病に冒されがちであり、もはや感染源を完全に絶つことは困難と言っていい。
1000デフォルトの名無しさんNGNG
[BUG] Segmentation fault
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。