他、テンプレに追加するべきURLはありますか?
乙です。
おつかれーしょん
で前スレからの続きで、「Ruby関連(の書籍)はやはり一時期の乱発&共倒れのせいで
すっかり各出版社の扱いが冷えきってしまっている」(by ムトゥ神)件について。
12 :
デフォルトの名無しさん:05/02/12 10:09:26
むーん氏をいれろよ。おつ
スレ立て乙。あのまま1000越えするんじゃないかと思ったよ。
>>11 実務で使われそうに無い言語の解説書だから、出版社サイドも、けっきょくオタクの余暇を紛らわせる程度の暇つぶし本扱いしかしなかったんだろうな...。
んで、イカもの扱いがヒートアップした、と。
このスレみている女子、いらっしゃいましたら挙手願います。
17 :
デフォルトの名無しさん:05/02/12 11:13:28
日経BPが夢想本をだして一人前
18 :
デフォルトの名無しさん:05/02/12 11:15:12
/ ̄ ̄ ̄ ̄\
| ┌──┐ |
| ┝┛┗┥ |
| |(・)..(・) | |
| | = = | |
/ |ヽ、3 ノ |
| | | ̄ ̄| i |
ノ(⌒| ノV~V| |⌒)
| |^|| | ノ◎i | ||^|
| | .|| |ノ ◎ i| || .|
┌┤├┐.∧ | || |
└┴┴┘ノ i | |〇、
| λ Vノ ∧iVノ |
ノ ノ | ノ ノ i i‘ |
X .LL...L....LL......l
| | | |
(⌒ )( ⌒)
 ̄ ̄  ̄ ̄
参考
ttp://www3.nhk.or.jp/anime/ojaru/charactor/chara/usui.html
amritaで、<dl><dt><dd>の繰り返しってどうやるの?
<dl>
<dt id="text">foo</dt>
<dd id="desc">bar</dd>
</dl>
これで<dt>と<dd>だけ繰り返したい。ダミータグでも使うのかな。
じゃあruby書籍でおすすめはどれ?
21 :
デフォルトの名無しさん:05/02/12 12:03:54
ピカチュウ本と抹茶本
どっちも外人orz
話を突きつめていくと出版業界の体質の問題に帰結しそうな悪寒
>19
ダミータグだろうねぇ
テンプレートがHTMLに準拠しなくなるけど。
>>19 <dl id="list">
<dt id="text">foo</dt>
<dd id="desc">bar</dd>
</dl>
として、
model[:list] = []
model[:list] << {:text=>'foo', :desk=>'bar'}
model[:list] << {:text=>'foo', :desk=>'bar'}...
とするのが正解。
>>20 オブジェクト指向言語Ruby
たのしいRuby
Rubyソースコード完全解説
ぐらいかなぁ。安心して勧められるのは。
27 :
928:05/02/12 15:12:31
>26
ウソツクナ
よりによって「オブジェクト指向言語Ruby 」かよ……
>25
<dl> <dt>foo1</dt><dd>bar1</dd> </dl>
<dl> <dt>foo2</dt><dd>bar2</dd> </dl>
となりますな……
>>26 RHGはrubyの本じゃないよ。Cとかインタプリタの本じゃん
おすすめは256本の極道編と言ってみるテスト(XPだけに)
>19
そう言えばそんなのもあったなぁ
オレテンプレートでもWeb::Templateみたいに
独自マークアップを使えるようにしとくかな
>>30 それでそのオレテンプレートはいつ公開されるんですか
IPAや地元ではIT活性化の振りをして素人にLinux/Ruby使わせたり、推進のポーズ。
しかし本音はわかるやつだけ使えればいいような発言。
その辺りが出版にも現れてるのかも
>>31 名前欄 (の元レス) にばっちり書かれてるような気がするのは俺の気のせいか?
>>34 thx。すでに公開してたのね
>>33 そんなとこみてなかったよ ヽ(`Д´)ノウワーン
>>32 属性値の命名規則がややこしくて書く気がおこりません…
>>34 の間違い
siki-templateへのコメントです。
>>29 いや、RHGはRubyの本としてこれ以上のものは無いくらい良い本だよ。
>36
確かになぁ。ただAmritaでサポートしていない
・XHTML、XMLに準拠(id属性以外を使用して指定できる)
・デフォルト値を指定できる
・要素と属性を等価に処理する
・テンプレートからのフィルター処理指定をサポート
:
:
とか高度化してったら、あんな風になっちゃった。
……まあ、あれでも「良くあのルールであの機能を押し込めたなぁ」と
自分で感心しているぐらいだしね……
でも、簡単に使うのなら、
・要素を変更するときは、適当な属性の値を“$(Rubyで指定するラベル)”にする
・属性を変更するときは、その属性の値を“@(Rubyで指定するラベル)”にする
・それ以外はオマケ
ぐらいで大丈夫だよ。
>>39 Amritaでも
テンプレート内のマーキングを"id"以外に変更することは可能
Amrita alteredなら
要素と属性を等価に処理することも可能
>>38 いいというか、定数のスコープの話とかちゃんと書いてあるのって RHG くら
いな気がするね。特異メソッドとか特異クラスの話もそう。
でも Ruby の本として、というとちょっと違うよな。やっぱり C についての本だと思う。
>43
なんだ……テンプレートごとに1つだけか……
class, title属性で指定できるのは進歩だけど、痛し痒しだなぁ
>>44 テンプレートに複数指定できてなにかメリットがあるの?
そもそも、classやtitleとか正規な属性を使っちゃうのはまずいと思うんだが
>45
>テンプレートに複数指定できてなにかメリットがあるの?
全てのタグで(必要に応じて)デフォルト値を設定できる、とかかな。
あと、(validにこだわるなら)要素の種類によって使える属性が違うから、
複数指定できると柔軟性が上がるよね。
#まあ、class, title, idあたりなら、ほとんど全ての要素にあるけどね……
>そもそも、classやtitleとか正規な属性を使っちゃうのはまずいと思うんだが
まあねぇ。
ただ、テンプレートをvalidなものにすることにこだわるなら、これぐらいしか使えないのよ。
#classはelementの属するクラスを、titleはelementの付加情報を示すための
#ものだから、idよりはまだ安全に使えるよね。
>>34 リンク先より。
> <span class="$$@title@$id" />
> <span class="$$title@title" />
> <title id="test_title" class="test_title"></title>
これがよくわからん。
#技術的じゃなくマーケティング的な意見ですまんが、
#紹介ページに載せる例は、もっとわかりやすいものにしたほうがいいぞ。
#じゃないと、これをみただけだと使う気をなくす。
> t = Template.new("オレは<span id="@type">リンゴ</span>が食べたい" )
> t.parse({ :target => 'food' })
> # => "オレは<span id="food">リンゴ</span>が食べたい"
@typeと:targetがどうつながるのかわからん。:typeの間違い?
なんだよー、おもしろいネタやってるじゃんか。
>>45 > そもそも、classやtitleとか正規な属性を使っちゃうのはまずいと思うんだが
しょうがねーだろ、HTMLじゃあ「ツールが自由に使ってよい属性」がないんだから。
XHTMLが普及してnamespace使えるようになるまでは、idとかclassとか使ってしのぐしかないんだよ。
しかも使いたい属性が人によってidだったりclassだったり独自の属性だったりするんだから、
「ツールが解釈する属性名」を指定できるのはいいことだろ。
>>46 > #まあ、class, title, idあたりなら、ほとんど全ての要素にあるけどね……
あとはstyleな。styleにCSSではない記述をするとブラウザでは単に無視されるだけだから、デザイン上問題なく使える。
あとは「CSSの設定をぜんぶclass属性とタグ名とCSSファイルで設定する」ということに、デザイナーが納得してくれるかどうか。
でもtitleという技があったのな。参考になった。さんくす。
>>48 >HTMLじゃあ「ツールが自由に使ってよい属性」がない
んなら、テンプレート用のマーカーなんて埋める時点で、
validなHTMLではないか、validであっても変なHTMLにはなっちゃうわけだろ?
じゃあ、どのへんに落としどころを作るのが現実的なのか、ってのが気になってる。
ひとつの現実的な基準はブラウザで正常に表示されるかどうかだと思うんだが、、
適当にくっつけた変な属性(例えばhogeとか)がはいってるだけで、変になっちゃうもん?
idやらclassやらに記述するほうがよほどまずいことが起こりそう。
styleだと、まずい処理は起こらなくてもstyle属性を使えなくなるデメリット結構でかいでしょ。
HTML規格外の適当な属性値でっちあげて一つ決め打つほうがすっきりしそーなもんだけど。
で、そーゆーこと考えてると、
>>46の
>あと、(validにこだわるなら)要素の種類によって使える属性が違うから、
>複数指定できると柔軟性が上がるよね。
の柔軟性ってほんとに使いどころあんのか?という疑問もわくんだよね。
ブラウザの挙動とかオーサリングツールの挙動とかに詳しくないんで、
おかしなこと言ってるかもしれんが、どうよ?
自然言語処理系の海外の学会に参加した時に、スペイン人と、ドイツ人から
Rubyを薦められました。わたしはOSX10.3.7ユーザーですが、最初からRuby
がインストールされているのにも、驚きました。
初歩的な質問で恐縮ですが、Rubyの言語自体を開発、保守している中心的な
メンバーは、何人程度なのでしょうか? 中心となるような研究機関などはご
ざいますか?
研究機関で開発、保守される実用的な言語ってどんな言語があるの?
へーirbに
irb(main)000:0> help :inject
なんてのがあるのか、便利になったものだなあ〜と思ってやってみたら、
それ以降のエコーバックが消えちゃうんですが、どうすりゃいいんだろ。
rdoc/ri/rI_display.rbがpopenとreopenで端末制御やってんのはわかるけど、そのへん詳しく知らないんだよね。
誰かわかる人いる?
>47
>これがよくわからん。
確かに……これはわからんな……ちょっとバラして&コメント入れて書くと、
<span class="$$@title@$id" /> #弟タグのid属性にtitleというキーを指定
<span class="$$title" /> #弟タグの要素にtitleというキーを指定
<span class="$$@title" /> #弟タグのclass属性にtitleというキーを指定
<title id="test_title" class="test_title"></title>
ということです。
#いいかげん推敲しないとなぁ
>@typeと:targetがどうつながるのかわからん。:typeの間違い?
間違いです。修正しました。
|
|
>>50 |
|
/V\ ,J
/◎;;;,;,,,,ヽ
_ ム::::(;;゚Д゚)::| ジー
ヽツ.(ノ::::::::::.:::::.:..|)
ヾソ:::::::::::::::::.:ノ
` ー U'"U'
>>51 OCamlとか言ってみるテスト(実用的かなぁ)。
sikiって、AmritaのAmrita::ExpandByMemberみたいに
Hashじゃないオブジェクトをモデルデータにすることはできるの?
>48
そういやXHTMLだとnamespaceが使えるね。
XHTML前提にしているならnamespace使えばいいのか
……DTDが使いものにならなくなるけど
>49
落としどころは難しいよね。
結局、デザイナーの使うブラウザとかオーサリングツールによって
決まってくる話で、ライブラリ実装者(プログラマ)が決めることは
できないんだよね。
ある程度妥協せざるをえないけど、できるだけ決定する自由を
デザイナーに残しとかないとね。
ちなみにSikiTemplateでは独自タグを実装して
[[[{{{ class="$$@title@$id" /}}}]]]
[[[{{{ class="$$title" /}}}]]]
[[[{{{ class="$$@title" /}}}]]]
#^スペース重要
<title id="test_title" class="test_title"></title>
とすりゃ良くなったので、どうでも良くなったけどね。
>57
Template.use_execute = true
とすることで、Executeというクラスデータを使えるようになります。
ただ、セキュリティの問題があるので、
・モデルデータでは、Hashで明示的に指定する必要がある
・テンプレートでは、「キー.コマンド」というように指定する必要がある
というふうにAmritaよりも制限が強いです。
>>49 > んなら、テンプレート用のマーカーなんて埋める時点で、
> validなHTMLではないか、validであっても変なHTMLにはなっちゃうわけだろ?
だからamritaが人気なんだろ。
> 適当にくっつけた変な属性(例えばhogeとか)がはいってるだけで、変になっちゃうもん?
> idやらclassやらに記述するほうがよほどまずいことが起こりそう。
だからid属性だけですむamritaが人気なんだろ。あとはHTMLコメントを使う方式かどっちか。
> HTML規格外の適当な属性値でっちあげて一つ決め打つほうがすっきりしそーなもんだけど。
それはプログラマーの都合をデザイナーに押し付けてるだけ。
自分でプログラムもHTMLも両方書くなら、規格外の属性つかおうが何しようがだれも文句いわねーよ。
でもそんなものを使うとブーたれるやつらと一緒だから困ってんじゃねーか。
規格外の適当な属性をでっちあげてDWとかGLが使えなくなると、大変問題なの。
Java使いからEclipse取り上げるようなもん。
> の柔軟性ってほんとに使いどころあんのか?という疑問もわくんだよね。
自分が使わん機能をとやかくいうな。
独自属性つかうくらいならidやclassやstyleを選ぶ人間もいるんだよ。
そんなときは属性名を切り替える機能は必要。
> ブラウザの挙動とかオーサリングツールの挙動とかに詳しくないんで、
> おかしなこと言ってるかもしれんが、どうよ?
おかしいとはいわんが、考察が浅い。
つーかそんなにいうなら、デザイナーが文句たれないすばらしいテンプレートエンジンをおまえがつくってくれ。
中心的なメンバーというか、ChangeLog を書いた回数が多い人のリストを
どっかの日記で見たんだけど、どこだったっけ?
リストが見たきゃ
$ ruby -e 'ARGF.inject(Hash.new(0)){|r,j| r[$1]+=1 if j.match(/\A\w.*<(.*@.*)>/); r}.collect{|a| a.reverse}.sort.each{|a| puts a.join("\t")}' ChangeLog doc/ChangeLog-1.8.0
とでもすればすむんだけど。
>>62 日記つうか matz 氏が ruby-dev に。
>>61 >>規格外の適当な属性をでっちあげてDWとかGLが使えなくなると、大変問題なの。
そういうオーサリングツールやブラウザの挙動に詳しくないので、
なにをするとどう使えなくなるのか具体的なところが知りたい。
デザイナーがどこに文句いうか、でもいいや。
つまり正規属性をテンプレートにつかって変な文字列つっこんじゃうのと、
hoge属性をテンプレートに使うのと、どちらのほうがオーサリングツールに優しいのか。
あ、そんなのオーサリングツール依存なんだから、選択肢ふやしとけよってだけの話?
だれもそのへん真面目に検証してないの?
深い考察をキボンヌ
>>64 HTMLの仕様書よめ。それにはんするものはエラーがでる。それだけだ。
・id属性やclass属性に「@」とか記号いれる → エラー
・style属性に記号 → セーフ
・独自属性→とうぜんエラー
・独自タグ→とうぜんエラー
ただしDWはPHPやJSPに対応しているので、そのモードでやれば<?php ... ?>や${...}がエラーにならん。くやしい。
つか、DWの体験版ダウンロードして自分で検証しろ。
>>66 > ・独自属性→とうぜんエラー
> ・独自タグ→とうぜんエラー
このへんは単に無視されるってのは最近のHTMLでは成り立たなくなったの?
DW って何?オーサリングツールのことを DW っていうの?
>>67 そりゃブラウザのはなしだろ。デザインツールは違うわい。
つまりホームページビルダーとかでテンプレート作るってことだよね。
学生で趣味プログラマの僕から見ると、なんかすごく不安。
ナニが不安やねん。
予想外のテンプレートとか与えられそうで。
テキストレベルで予想できないというか。
>61
>あとはHTMLコメントを使う方式かどっちか。
それいいね。
[[[{{{タグ}}}]]]だけじゃなくて<!--[[[{{{タグ}}}]]]-->にも対応するようにしました。
>>68 Macromedia Dreamweaverのことかな?
76 :
デフォルトの名無しさん:05/02/14 00:00:10
質問です。
vmware で socket 関数が使えないことって
ありますか?
エラーメッセージが
`initialize': getaddrinfo: Name or service not known (SocketError)
と出ます。
あとGLというのはAdobe GoLiveのことだと思ふ。
>>76 ゲストOSが何かしらんが、うちのFreeBSD5.3-STABLEでは使えてるよ。
WEBrickすげーな。なんかasahi-netが規制受けてるんで、
シェルアカウント持ってる別のところにこいつでproxy作ってやったらすぐに動いた。
こんなに簡単にできちゃうのね。
うちのIPからしかリクエスト受け付けないからopen proxyでもないし、便利便利。
>>80 殆どるびまに載ったまんまなんだけど、IP見て例外を上げるようにしたのと、
proxy特有のヘッダを出さないようにしたところが違うくらい。
こんなもん。すげー簡単。
CLIENT_HOST='your.ip.address.here'
auth_proc = Proc.new do |req, res|
raise WEBrick::HTTPStatus::Unauthorized unless req.peeraddr.include?(CLIENT_HOST)
end
s = WEBrick::HTTPProxyServer.new({
:Port => 8080,
:ProxyAuthProc => auth_proc,
:ProxyVia => false
})
Signal.trap('INT') do
s.shutdown
end
s.start
へー。簡単なんだね。
さんくす。
setup.rb で、インストール時にシンボリックリンクをはることはできますか。
つまり、
/usr/bin/foo_1.2.3
/usr/bin/foo -> foo_1.2.3
みたいなこと。
setup.rbに手をいれないとだめ?
Amritaのドキュメントの無さはどうにかしてほしい。
というかリファレンスマニュアルが欲しい。切実に。
未知のメソッドがあまりにも多すぎる。
過去にリファレンスがあったような形跡はあるのに……
まずRDoc使うところから。
Kwartz はどうですか
個人的にはプレゼンテーションロジックが独自言語じゃなかったら理想に近い気がする
独自言語で萎えるんでオレは試してないが、試した人いる?
>>85 もちろん使ってはみたが、せいぜいメソッドの一覧止まり。
解説が少なすぎて、クラスやメソッドの把握にはほとんど役に立たなかった(安定版で確認)。
もしかして「ソースがドキュメントだ。バグも完全に記述されている」の体現なのか
>>86 ロジックが(見た目)CSSっぽいな。
ちょっと興味がわいたので、これから試してみます。
>86
「オレはRubyで加工したいんだ!!」とか言いたくなるよね……
Kwartzのどのへんが気に入った?
>>88 何動かしてる?ソース晒したら?
とりあえず考えついた可能性を確率高そうな順に並べると、
1. スクリプトに問題がある
2. VMWareかゲストOSの設定に問題がある
3. rubyのSocketライブラリがバグってる
4. ruby本体がバグってる
5. VMWareかゲストOSがバグってる
少なくともVMWareであるがゆえにrubyが動かないってことは
あんまないんじゃないかな。
Mac OS XのRubyが1.6.8から1.8に上がるのって、やっぱりTigerからなんだろうか。
まあソースから入れりゃいいんだけど。
92 :
デフォルトの名無しさん:05/02/15 05:59:57
>>86 正直すまんかった。
独自言語やめてJavaScriptライクな文法にしたバージョンを、ちょうどきのうリリースした。
つーか、タイミングよすぎる。ジサクジエンかと思った。
>>89 プレゼンテーションロジックをRubyで書けるバージョンも作っていたが、ポリシーにあわんと判断してやめた。
> Kwartzのどのへんが気に入った?
そりゃこっちがききたい質問じゃ。
>>91 Finkとかのパッケージなら、すでに1.8はあったと思う。
>>94 > そういや、MacOS Xはgccが入っていなくて、DeveloperKitをいれないとだめなんだっけ。
インストーラがハードディスクに入ってるし、パッケージ版OSの
CDにも収録されているから、ダブルクリック一発で入りますよ。
一般人のレベルに対する意識の相違だな
>>96 コンパイルといってもキーボード打つだけじゃん。
打たなくても展開先に移動してから./configure && make && make installをコピペしてくれでもいいし。
別にソース読めと言っているわけじゃなし。
まあインストーラがあるに越したことはない気はするが。
でもインストーラがあってもDLLのバージョンせいで動かないとか辛すぎ。
MinGWのデフォルトランタイムライブラリがmsvcr71になれば直るが、今のone-click installerと
ebanさんとこの拡張ライブラリに互換性がないのはちょっと気が遠くなるな。
一般人のレベルに対する意識の相違だな
なんだRubyってDLLHell問題抱えてるのかウンコだな
それっていわゆるDLLHell問題とは別物のような。
単に憶えたての単語「DLLHell問題」を使いたかっただけでしょ。
>>99 甘やかしすぎだ。
だいたいconfigure && make installも出来ないのにone-click installerでRubyをインストールしたところで
Ruby製のアプリケーションを使えるとは全く思えないのだが。
なんだまたbot厨か
105 :
86:05/02/15 21:09:58
>>93 > 独自言語やめてJavaScriptライクな文法にしたバージョンを、ちょうどきのうリリースした。
> つーか、タイミングよすぎる。ジサクジエンかと思った。
いや新しいバージョンが RAA に登録されてたので見に行って、独自言語か〜と思った。
最近ここでテンプレートライブラリが話題になってたしね。
以前のバージョンでも良さそうだけど独自言語が・・・と思った記憶はある。
新しいバージョンは、いわれてみれば確かに Javascript ライクだけど、どうせなら Ruby で完結して欲しい。
>
>>89 > プレゼンテーションロジックをRubyで書けるバージョンも作っていたが、ポリシーにあわんと判断してやめた。
>
> > Kwartzのどのへんが気に入った?
> そりゃこっちがききたい質問じゃ。
RubyでWebアプリを書いてる視点から見て Kwartz の良さそうなところは、テンプレートが eruby 形式に展開されるので
それなりの速度が期待できるところとか、ドキュメントが整備されているところとか、テンプレートとプレゼンテーションロジック
を容易に分けれるところとかかなあ。
106 :
86:05/02/15 21:10:21
つづき。
テンプレートとプレゼンテーションロジックの分離は意識すれば自分でできるけど、あらかじめその仕組みが
用意されているのは嬉しい。Presentation Pattern Catalog なんかがまとめられているのも素晴らしい。まあ、
コンテキストとか適用範囲とかの説明がないのでパターンというよりイディオムっぽい気もするが。
プレゼンテーションロジックを独自言語でやってるのは、いくつかの点でメリットがあるのは確かだと思う。
でも、Ruby で Web アプリを作っていて、Java や PHP を使う予定のない俺からすれば、独自言語を使う
のは余計なコストでしかない。いや、独自言語といっても十分すぎるほど簡単だけど、頭のモードを切り替え
ないといけないからね・・・
コロンとかつけ忘れそうだし。
Java とか PHP で Web アプリを作る人も同じように感じるんじゃないかな。
>86
俺は独自言語でもいいと思っているけど。
テンプレートに特化してるなら覚えなければならないことはたかが知れてるし。
それにKwarzの場合はJava版やPHP版もあるから、独自言語にしておけば例えば
PHPからJavaに乗り換えるなんて場合にコストがかからなくて済むでしょ。
話は変わるけどRubyist Magazine 0005号出てるね。
* 巻頭言
* Rubyist Hotlinks 第 5 回 増井俊之さん
* Ruby ではじめるプログラミング 第 4 回
* Rubyist が知りたいかもしれない RGSS の世界
* CGIKit、TapKit を利用した Web アプリケーションの作成
* 続・RubyOnRails を使ってみる
* Ruby Library Report 第 4 回 win32utils 日本語版 (英語版)
* lily でブログカスタマイズ 第 3 回
* Win32OLE 活用法 第 3 回
* RubyNews
* RubyEventCheck
* 編集後記
増井さんのインタビュー記事中にakrさんが出ている件について
110 :
86:05/02/15 23:27:46
>>107 > それにKwarzの場合はJava版やPHP版もあるから、独自言語にしておけば例えば
> PHPからJavaに乗り換えるなんて場合にコストがかからなくて済むでしょ。
そういったメリットがあることは確かだし、それを否定するつもりはないよ。
ただ、その乗り換えがどの程度発生するのかかなり疑問でもある。
独自言語のほかに、Ruby や Java や PHP でプレゼンテーションロジックが
書けるといいんだけど。そうすれば、1つの言語で閉じたいやつはその言語
を使えばいいし、将来の乗換えを気にするやつは独自言語を使えばいい。
たとえば、Ruby でプロトタイピングして、製品は Java で作る場合とかなら
独自言語は嬉しいかもしれない。でも、それ以外なら YAGNI ってこと
>107, 110
XSLTチックなのはどうなのかな……
まあ、イビツだと思うけどね。
>>109 出てこない方が気味が悪い気がするけど?
そういえば、Kwartzってこういうイメージでいいのかな?
Kwartz
−デザイン−− |−−ロジック−−|−−データ
プレゼンデータ |プレゼンロジック | コード
プログラム側にデータしか任せないのは珍しいよね。
nilぽ
>>109 拝見しましたがMWさんのインパクトには到底敵いませんな。
Kwartzがらみでもうひとつ。
プレゼンロジックとデータが(テンプレートの仕組みとして)
分離しているのって便利だと思う? > ALL
SikiWikiでも仕組みを用意しようかねぇ……
>>105 なんだ、内部関係者かと思ったのだが違うようだな。
> 独自言語を使うのは余計なコストでしかない。
> いや、独自言語といっても十分すぎるほど簡単だけど、頭のモードを切り替えないといけないからね・・・
おまえはRDBを使うか?もし使うなら、SQLを使うだろ。あれこそ本当に頭のモードを切り替えなきゃいけないぐらい
まったく違う言語だ。あれを使いこなせるなら、プレゼンテーションロジックが独自言語でも問題なく使えるはず。
SQLの宣伝文句のひとつに、「プログラミング言語が変わってもデータにアクセスする部分は変える必要がない」
というのがある。しかしこれは逆にインピーダンスミスマッチを引き起こしている原因でもあり、OODB主義者が
批判するネタでもある。OODBならメインプログラムで使っている言語でデータアクセスとデータの保存ができるからね。
86がRDBを使わずOODBのみを使うのであれば、86の主張はよくわかる。おまえは正しい。
しかしRDBを使ってSQLを書いているのであれば、プレゼンテーション層でだけ独自言語を否定するのはおかしい。
独自言語なら「プログラミング言語が変わってもプレゼンテーション層は変える必要がない」からな。
>>106 > Java とか PHP で Web アプリを作る人も同じように感じるんじゃないかな。
そうでもない。JavaでもVelocityやJSTLがあるが、あれだって十分な独自言語だ。
PHPでもSmartyが使われるが、それも独自言語だ。
独自言語でも、メジャーになれば使われる。Kwartzはマイナーだから使われない。それだけだ。
つづき:
それからJavaScriptじゃなくてRubyやPHPで書きたいというのは、プログラマーの発想。
でもKwartzが目指しているのはデザイナーにとって使いやすいテンプレートシステム。
デザイナーからしてみれば、RubyやPHPで書くのはたいへん苦痛なんだよ。100歩譲ってJavaScript。
Ruby使いがRuby以外で書くのを嫌がるように、デザイナーも自分が知ってる言語以外で書くのは嫌なの。
またプログラマーはたいてい1つか2つの言語を知っていれば間に合うし、ほかの言語の仕事なら断るだろうが、
デザイナーはそうもいかず、PHPを使うプロジェクトならPHPを使わなくちゃいけないし、
Javaを使うプロジェクトならVelocityやJSP、最近ならStrutsのカスタムタグを覚えなくちゃいけない。
これってバカバカしくないか?なんでプログラマーの都合にデザイナーが合わせなきゃいけないんだよ。
amritaのように素のHTMLが使えるテンプレートシステムを使ってくれりゃいいのに、プログラマーの都合で
やれ<?php ... ?>を埋め込んでくれだとか、やれ#foreach()を使ってくれだとか、そんなのばっか。
しかもそれがプロジェクトごとにバラバラで、せっかく使い方を覚えたころにはもう終わり、
別のプロジェクトが始まればまた新しいやり方を押し付けられる。んなもんやっとれるかい。
そんなプログラマーの都合を押し付けるようなことはやめて、プログラマーとデザイナーとが
ほんとうに気持ちよく共同作業できるような仕組みが必要なはずなんだよ。
そしてそのためには、プログラマーがちょっとだけ歩み寄ってJavaScriptなり独自言語を受け入れるだけでよい。
デザイナーがRubyやPHPをマスターするより、プログラマーがJavaScriptをマスターするほうが
圧倒的にコストが低いからな。
またJavaScriptにしてやればデザイナーが自分でプレゼンテーションロジックを書いたり変更したり
してくれるから、実はプログラマーの負担も減るんだよ。あまり気づかれていないけど。
つづき:
だた、デザイナーとの共同作業なんかしないであろう86のためにいっておくと、
KwartzではRubyコードやPHPコードを直接埋め込む機能がある(というかあった)。
以前のバージョンなら
:element(members)
::: members.each_with_index { |member, i|
@stag
@etag
@cont
::: }
:end
みたいに書くことができた。けどだれも使わんかったので削った。
>>110 > 独自言語のほかに、Ruby や Java や PHP でプレゼンテーションロジックが
> 書けるといいんだけど。そうすれば、1つの言語で閉じたいやつはその言語
> を使えばいいし、将来の乗換えを気にするやつは独自言語を使えばいい。
その考えは間違ってない。実際、PHP版ではそれをやった。プレゼンテーションロジックを、
独自言語とPHPとを混在させて書けるようにしていて、「:」で始まる文は独自言語、
そうでなければPHPのコードとみなして処理をしていた。
ttp://www.kuwata-lab.com/kwartz-php/reference.ja.html でも実際にやってみると、コードとドキュメントがかなり複雑になるのに比べて、得られるメリットが少ないんだよ。
これでメリットがあるのはプログラマーだけで、デザイナーからみればこんなのメリットでもなんでもない。
デザイナーにしてみればRubyやPHPで書けるよりも、JavaScriptで書けるほうがずっとうれしい。
#このことを去年のうちに気づいていればよかったんだが。
プレゼンテーションロジックなんて、しょせん条件分岐と繰り返しと代入ぐらいしかないんだから、
そのくらいJavaScriptだろうと独自言語だろうと書けるだろ、おまえらプログラマーならそのくらいできるだろ、
ということにしといてくれ。
> たとえば、Ruby でプロトタイピングして、製品は Java で作る場合とかなら
> 独自言語は嬉しいかもしれない。
おれはまさにこのパターンなんだよ。
自分のアイデアを説明するためのプロトタイプはRubyでサクッと作るんだけど、
それをチームで開発しましょうとなると、Javaを使わないといけない。シクシク。
つづき:
「Rubyでプレゼンテーションロジックが書ける」といったとき、86は
(a) Rubyのプログラムをパースする。出力先に応じてPHPやJSPに変換してやる。
(b) Rubyのプログラムはパースせず、そのまま出力するだけ。PHPやJSPへの変換はあきらめる。
のどっちを意識している?
はっきりいって、Rubyの文法は複雑すぎるから(a)はムリ。Rubyのサブセットにするしかないけど、
そうなると(a)のメリットはあまりない。
(b)ははっきりいって楽。
>>121で書いた機能はまさにそのまんま。
しかしこれだと、複雑なプレゼンテーションロジックだと文法エラーが非常に見つけにくくなる。
というのも、Kwartzではテンプレートを出力用スクリプトに変換するから、(b)の場合だと
変換したあとの出力用スクリプト(例えばeRubyスクリプト)でデバッグしなきゃいけない。
複雑なeRubyスクリプトで文法エラーがあると、原因を見つけるのはかなり困難。
(やってみればわかる。というか、楽な方法があったら教えてほしい)。
これは、Kwartzに限らず、トランスレータ一般につきまとう問題。
例えばJSPもそう。Servletに変換されたあとでコンパイルエラーが報告されても、
もとのJSPの何行目でエラーになっているのかわからん。
これを防ぐには、やはりプレゼンテーションロジックをちゃんとパースして、文法エラーが
あればプレゼンテーションロジックのレベルでエラーを指摘するしかないと思ってる。
そしてちゃんとパースするには、Rubyの文法は複雑すぎ、というかバリエーションありすぎ、
ついでにいうと、プレゼンテーションロジックごときではRubyの文法はオーバースペック。
JavaScriptとかPHPぐらいSyntaxが簡単なら、パースできるんだけどね。
Kwartzの人の言ってることには共感するだけどなぜ喧嘩腰?
さいご:
あとプレゼンテーションロジックをまじめにパースすると、いろんな小細工ができる。
例えば「グローバル変数とローカル変数を解析する」機能とか。
ttp://www.kuwata-lab.com/kwartz/users-guide.ja.04.html#topics-analyze ほかには「ローカル変数の名前を "_var" のように変えちまう」機能とか。
これは、プレゼンテーションロジックで定義した変数名が、メインプログラムで使っている
変数名とかぶってしまうと、メインプログラムのデータを意図せずに変更してしまうという
問題を解決するための方法。まだ未実装だけと、「グローバル変数とローカル変数を解析する」
という機能がすでにあるから、そんなに難しくはない。たぶん次のリリースぐらいでは載るはず。
もちろん、いろんな言語の出力用スクリプトが生成できるというメリットもある。
Rubyしか使ってないとわからんかもしれんが、複数のプロジェクトを相手にしなきゃいけない
弱小デザイン会社だと、これは泣けるほどありがたい。
#というかStruts死んでほしい。カスタムタグなんて、デザイナーをばかにしてるとしか思えん。
というわけで、Rubyを直接記述することのデメリットと、独自言語をまじめにパースすることの
利点を挙げてみたのだが、どうっすか。
それでもRubyを使いたいというのはあるかもしれんが、そこをちょっと我慢するだけで
いろんな利点があることだけは知っといて。
早朝から長いかきこみですまん。
>>124 けんかにみえたらすまん。知り合いのデザイナーの愚痴がうつっただけだ。というか、デザイナーの気持ちの代弁?
>>126 ですます調にして、語尾をたまに伸ばすと
受ける印象が柔らかくなりますよー。
個人的にいろいろと苦労があるようですね
>>126 rubyスレだと共感は得られにくいのは仕方ない。
基本的にここ(というかruby界隈全部なんだけど)は他の言語と比べても信者の割合が高いからね。
どうでもいいけど、
kwartz -l eruby -p example1.plogic example1.html > example1.rhtml
これをするのがめんどくさい。なんとかならん?
>>126 力説乙。こーいう本気汁たっぷりなのは大歓迎だ。
自分が知らん現場での様子が観れて楽しいしな。(御苦労は察するに余りあるが)
ロジック内に書けるのが@stag, @cont, @etag, @elementだけみたいだけど、
外部のplogicファイルが指定できたら便利じゃないかな。
たとえば<html><head>...</head>と
<address>...</address></html>の部分なんかは
title以外全てのファイルで共通にしたいとかあるわけで。
header_and_footer.html
<html><head><title id='title' /></head><body id='body /><address>hoge@tare</address></html>
に対して
plogic: {
@include('header_and_footer.html', 'header_and_footer.plogic', {'title' => 'hoge', 'body' => @cont})
}
みたいな。文法カッコワルイ。
Gemをはじめて使ってみようと思ったのだけど、
--remote でインストールしようとすると
Updating Gem source index for:
http://gems.rubyforge.org から先に進んでくれません。
何が起こっているのでしょうか?
一度、Ctrl-C したときは
yaml/baseemitter.rb:175:in `map' : Interruput ....
てなことになりました。
136 :
86:05/02/16 20:23:44
んー、kwartz の中の人は、使いたくないなら使うなって思ってるかもしれませんが。
>>119 SQLは使うけど、それはしかたないから使ってるのであって好きで使ってるわけでもない。
本当は PStore ですむならそれだけにしておきたいよ。
目的を達成するのに必要なら SQL でも Java でも PHP でも C++ でも C# でも使う。
そんなのあたりまえだよね。kwartz の独自言語も kwartz が必要なら使うと思う。
でも、それが嬉しいかというと、嬉しくないといってるだけ。
> 独自言語でも、メジャーになれば使われる。
だから独自言語でもいい、というのはおかしいと思うけど。
Velocity や JSTL や Smarty を使ってるプログラマな人たちは、みんな喜んで使ってるの?
HTML を直接出力するのに比べればはるかに楽だけど、もっと楽な方法を求めてははだめなの?
よく使われてるというのと、使ってて気持ちがいいのとは違うんじゃないかな。
メジャーだっていうのを選択基準にするなら、そもそも Ruby は使ってないよ。
137 :
86:05/02/16 20:24:47
> これってバカバカしくないか?なんでプログラマーの都合にデザイナーが合わせなきゃいけないんだよ。
まったくだね。
でもそんなことを言われると、なんでデザイナの都合にプログラマがあわせないといけないんだよ、っていいたくなるよ。
そんな対立こそバカバカしいんだから、kwartz の良さをアピールしたいなら、そんな言いかたは避けたほうがいいような気がする。
未踏でやったからしかたなく公開してるっていうならともかく。
プログラマがあわせるほうがコストが低いというのは現実的な解だと思うよ。
でも、あわせる必要がないときまであわせなくてもいいという選択肢を用意するのも、現実的な解の1つじゃないかな。
難しいから無理っていうわけでもないみたいだし。
> amritaのように素のHTMLが使えるテンプレートシステムを使ってくれりゃいいのに
amrita を使う場合はプレゼンテーションロジックは Ruby で書くことになるよね。ここで amrita を
引き合いに出すなら、それこそ、プレゼンテーションロジックは Ruby でいいじゃんって思ってしまうわけですが。
もちろん、amrita はプレゼンテーションロジックのコードをビジネスロジックのコードと簡単に
混ぜることができるので、そのへんはいまいち。テンプレートと、>121 みたいな不自然なコードじゃなくて、
普通の *.rb から eruby 形式を生成できるのが理想なんだけど。
eruby 形式を生成できれば、オーサリングツールでテンプレートを作って Ruby on Rails とかでも使える嬉しさがあるしね。
138 :
86:05/02/16 20:25:25
前にも書いたけど、kwartz のように独自言語を使うのにもメリットがあると思ってるし、それは最初から否定してないよ。
ただ、俺にはそのメリットの大半はいらないから Ruby で書ければなってだけで。
まあ、kwartz の中の人がいろいろ書いてくれたおかげで、少なくとも、kwartz はデザイナ優先で
プログラマは妥協しないとだめっていうポリシーだというのはわかった。それはそれでありだと思う。
独自言語を気にしない人とか、妥協の結果得られるものが嬉しい人も少なからずいると思うし。
個人的には、デザイナ優先だけじゃなくて、デザイナとプログラマの両方が妥協せずに
もっと幸せになれる方法はないのかなって思うけどね。
>>135 はじめて gems で何かをインストールしたときは、かなり待たされた記憶がある。
マシンのスペックとかにもよるのかもしれないけど。
>126
Application-Oriented Languageの利点はわかるけど……
−デザイン−− |−−ロジック−−|−−データ
プレゼンデータ |プレゼンロジック | コード
デザイナー | プログラマー
という守備範囲のうちは、ロジックとデータを別の言語体系で
扱うのは面倒だなぁ
−デザイン−− |−−ロジック−−|−−データ
プレゼンデータ |プレゼンロジック | コード
デザイナー | プログラマー
というのなら、ロジックを扱うのにシンプルな言語体系を採用しても
仕方無いかな、と思う。
いっそのこと全然雰囲気の違う(&XMLベースの)XSLTチックな
方が使う気になるけど、デザイナーはXSLTよりもJavaScriptの
方が慣れてるかな……
>>139 One-Click Ruby Installerの最新版が出たばかりの頃にダウソして、
gemを使ったことがあるけど、特に問題はなかったよ。
> 俺にはそのメリットの大半はいらないから Ruby で書ければなってだけで。
> 俺には
これが全てを物語ってる気がした。
俺には、この話題は興味ないからどうでも良いけど。
>>142 kwartz が提供するといっているメリットをすべての人が欲しいわけじゃないってだけだろ
お前にはな
86のいいたいことはわかった。
>>136 > だから独自言語でもいい、というのはおかしいと思うけど。
>>137 > でも、あわせる必要がないときまであわせなくてもいいという選択肢を用意するのも、現実的な解の1つじゃないかな。
↑ ここらへんはちゃんと筋が通ってるし、いってることは正しい。
おれは「プレゼンテーションロジックをRubyやPHPで直接書く」という方法をPHP版で実験してみて
思ったようなメリットが出せなかったし、もう気力もないから、今の仕様が変わることはない。
もし86が理想に燃えるなら、ぜひ作ってみてくれ。
ちなみに、途中まで実装して捨てたバージョンでは、プレゼンテーションロジックファイルを次のような感じで記述するはずだった。
module members ## element declaration
def initialize()
@value = member
@attr = { "bgcolor" => color }
end
def plogic()
member_list.each do |member|
@stag
@body
@etag
end
end
end
最初はすばらしいアイデアだと思ったが、デザイナーのことを考えて結局やめた。
つづき:
もし今の仕様のままで、Rubyでもプレゼンテーションロジックを書けるようにするとなると、たぶんこんな感じになる。
#members {
plogic: {
<% member_list.each do |member| %>
@stag;
@cont;
@etag;
<% end %>
}
}
これはPHP版でもやってた仕様。こんな仕様でよければ実装は難しくない。
これで86が満足するかはしらんが。
さいご:
あと、これは誤解だから訂正させてくれ。
>>137 > amrita を使う場合はプレゼンテーションロジックは Ruby で書くことになるよね。ここで amrita を
> 引き合いに出すなら、それこそ、プレゼンテーションロジックは Ruby でいいじゃんって思ってしまうわけですが。
amritaは「素のHTMLが使えるテンプレート」の例としてだしたのであって、ここではプレゼンテーションロジックのことは関係ない。
「amritaやXMLCのように」と書けばよかったか。
> そんな言いかたは避けたほうがいいような気がする。
いや、2ちゃんでそんなこといわれても・・・
>>134 おもしろい。Zope PageTemplateのmetalみたいなものか。
実はその機能はDreamweaverにはあって、テンプレートシステム側ではなくてHTML作成時にDreamweaverにやらせることができるんだよね。
だから今まで困ってなかったのか。
ちょっと考えてみる。
148 :
86:05/02/16 23:08:55
>>145 > 最初はすばらしいアイデアだと思ったが、デザイナーのことを考えて結局やめた。
素晴らしいアイディアだったのに (´Д⊂ヽ
別に理想に燃えてはいないが、気がむいたらやってみるよ
要は「デザイナーは馬鹿だからプログラマの都合を押しつけるわけにはいかない」
ということですよね。なんかそういう考えもちょっとどうかなあと思うけど。
編集ツールしか使えなくてHTML自体理解してないデザイナーなんかも多いぞ。
>>149 どうやったらそんなまとめになるのか。
「デザイナーはプログラマーの都合を押し付けられて困ってる」とか
「デザイナーはRubyやPHPを使いたがらない。それはプログラマーがJavaScript使いたがらないのと同じ」とかは書いているが。
馬鹿がいるとしたら勝手な解釈するやつのことだろ。
>>147 > いや、2ちゃんでそんなこといわれても・・・
「便所の落書き」だからといって、どんな口調(論調?)でもいいというわけではない
丁寧語を使えとは言わないが、見る人間のことを考えた書き方は大事だよ。
いや、それは便所の落書きだと思ってないからだろ。
いいえ、それはお便所の落書きだと思ってらっしゃらないからでしょう。
いえいえ、それこそはお便所様のお落書きだと思わしであそばせないからでござりますことでしょう。
>>134 仕様を考えてみた。
まずページ全体のデザインを担当するテンプレートを用意する。
page.html:
<html lang="ja">
<head><title id="value:title">...</title></head>
<body>
メニュー:
<div id="replace:menu">
・メニュー1<br>
・メニュー2<br>
</div>
</body>
</html>
つづき:
コンテンツデータを表すテンプレートを用意する。
contents.html:
<html><body>
<ol id="menus">
<li id="value:menu">メール</li>
</ol>
</body></html>
contents.plogic:
#menus {
plogic: {
@stag;
foreach (menu in menu_list) {
@cont;
}
@etag;
}
}
つづき:
これを、こんなかんじでコンパイルする。
$ kwartz -c contents.html -p contents.plogic page.html > page.rhtml
contents.htmlのうち、id="..." がついたエレメントだけが使われ、<html><body></body></html>は捨てられる。
出力用スクリプトはこれ。
page.rhtml:
<html lang="ja">
<head><title><%= title %></title></head>
<body>
メニュー:
<ol id="menus">
<% for menu in menu_list do %>
<li><%= menu %></li>
<% end %>
</ol>
</body>
</html>
これでいけるんじゃないかと思うが、どうだろう。
実装するのはまだ先になるけど。
>156
プレゼンテーションデータの統合なら、SSIを真似して
<!--#include kwartz_file="パス" -->
とかの方が理解しやすいと思います。
>>156 <div id="replace:menu">は<div id="replace:menus">のミス?
その仕様だと多重に埋め込めなくないかな。
たとえばサイトの構造が
<サイト全体><コンテンツ種別><コンテンツ /></コンテンツ種別></サイト全体>
みたいになってる場合は
page.html
<html><head>...</head><body><div id="replace:content_type" /></body></html>
content_type.html
<html>...<body><div id="content_type">...<div id="replace:content" />...</div></body></html>
content.html
<html>...<body><div id="content">...</div></body></html>
とかやりたいと僕は思う。
idのマッチングをするのはデザイナー向けっぽくてまた賛否両論かも。でもおもしろい。
replace:...のidがマッチされずに残った場合警告でも出るんですかね。
ただ、デザイナーさんがオーサリングツール使って全種のテンプレートを
作ってくれちゃうシチュエーションをメインターゲットにして、
趣味プログラマが個人サイト作るのに使うのを意図しないのであればそもそも不要な機能かもね。
>>159 ネタかもしらんが今回の目的にそれは全く意味ない。
そろそろスレ違いだと叩かれそうだ。ゴメソ
>>161 > <div id="replace:menu">は<div id="replace:menus">のミス?
そのとおり。すまん。
> その仕様だと多重に埋め込めなくないかな。
できると思う。頭の中にある設計なら、これでいけるはず。
kwartz -c content_type.html,content.html page.html > page.rhtml
> replace:...のidがマッチされずに残った場合警告でも出るんですかね。
でる。現バージョンでも出るはず。
>ネタかもしらんが今回の目的にそれは全く意味ない。
その通りだが、
>>159のいう機能は、これはこれで需要がある。今回も正式リリース時には実装しているはず。
ただ前のバージョンではプレゼンテーションデータファイルとプレゼンテーションロジックファイルの両方を読み込めたんだけど、
今回のバージョンでは仕組みが変わったのでプレゼンテーションデータファイルしか読み込めないと思う。
強引に2/14にリリースしたから、未実装の機能がけっこう残ってる。すまない。
updateしても特にアナウンスはしないから、RAAをチェックしといてくれ。
今気づいたのだが、もしかして
>>86はRailsユーザか?ならRubyで書くことにこだわるのはわかるような気がする。
Railsはまだ試してないが、eRubyを使うんじゃなかったっけ?
そして、もしテンプレートに複雑なRubyコードを埋め込まないといけないのなら、もしかしたら現行のKwartzでは力不足なのかもしれん。
おれには、86はただのRubyユーザではなくて「デザインのわかるRubyユーザ」のようにみえたのだが、
それにしてはJavaScriptを拒絶してたから、なんか違和感があった。
自分でデザインもやる人間ならJavaScriptぐらいできるはずで、そんなやつが「Rubyで書きたい」というのは
むりやりクレームをつけようとしているのかと思った。
しかし、もしRailsユーザだとすれば、その要求は理解できる。謎はとけた?
もしこの仮説が正しいとして、そうならそうといってほしかった。
「Rubyで書きたい」というのと「Rubyで書けないと困る」というのでは、議論の前提条件がまったく違うからな。
ちょっと時間をとってRailsを勉強してみる(とれるのか?)
独自にテンプレート言語をつくるのが楽しいのはわかるんだけど、
実務上はDWの吐いたライブラリとテンプレートも読み込めないと使いにくい。
あと、id属性は使わないほうがいいんじゃないかな。
オーサリングツールがJavaScriptを吐くことがあるから名前の衝突を気にしないといけない。
DOMはクライアントサイドが扱うけど、テンプレート適用はサーバーサイドの出来事だし、
テンプレート言語はコメントにおくのが無難のような。
amrita2はどうよ
>>164 過去ログ読め。それらの意見に対する返答は一通り書かれた。
kwartzはDWとかの吐いたテンプレートを使う状況を
主なターゲットにしてる(んだと思う)。
しかしスレタイ変えた方がいいな。
>166
>164の内容は新たな指摘だと思うけど……
>164
SikiTemplateでこんなの実装したナリよ。どう?
かっこがウザいのは仕様です。(これなら重複しないだろう……どうにかしたいけど)
require 'xml/siki-template'
t = Template.new(
'<!--[[[{{{dummy class="$$title_text" /}}}]]]-->'+ #弟タグの要素にtitle_textというキーを指定
'<!--[[[{{{dummy class="$$@title@$id" /}}}]]]-->'+ #弟タグのid属性にtitleというキーを指定
'<!--[[[{{{dummy class="$$@title" /}}}]]]-->'+ #弟タグのclass属性にtitleというキーを指定
'<title id="test_title" class="test_title"></title>' )
#dummyはなくても可
r = t.parse( { :title => 'Title', :title_text => 'Text' } )
p r #<title class="Title" id="Title">Text</title>
>165
もうリリースされたっけ?
>169
来週か……プログラムの構造はHackしやすくなっているかな?
passive template APIはおもしろそうだね。
171 :
デフォルトの名無しさん:05/02/19 00:26:35
VisualuRuby使いたいんだけど、
最新版は自分でswin.soをコンパイルしないといけないっぽい。
だれか、コンパイルしてアップしてくださいm( __ __ )m
amrita2 って何が変わったの?
>>164 > 独自にテンプレート言語をつくるのが楽しいのはわかるんだけど、
> 実務上はDWの吐いたライブラリとテンプレートも読み込めないと使いにくい。
それも検討したのだが、必ずしも必要ではなくて「できたらいいね」ぐらいの要求であることと、
今の実装だとタグとコメントの両方を解析するのが面倒なため、パスしてる。
ちなみに、DWのテンプレートを解釈するようなテンプレートエンジンは今までみたことないんだが、あったら教えてくれ。
> あと、id属性は使わないほうがいいんじゃないかな。
> オーサリングツールがJavaScriptを吐くことがあるから名前の衝突を気にしないといけない。
id属性は「HTMLファイルで重複してはいけない」から、オーサリングツールで容易にチェックできるため、かえって向いていると思うのだが。
どうしてもいやなら、使用する属性を設定またはコマンドオプションで変更してくれ。
> DOMはクライアントサイドが扱うけど、テンプレート適用はサーバーサイドの出来事だし、
> テンプレート言語はコメントにおくのが無難のような。
前半と後半とのつながりがわからん。コメントを使う方式では、ほんとうにHTMLタグをコメントするときに困る(HTMLではコメントのネストができないから)。
>>166 > kwartzはDWとかの吐いたテンプレートを使う状況を主なターゲットにしてる(んだと思う)。
んなことはない。
とりあえず、こっちで議論しないか。amrita2やRailsの話題も含めて。
【Ruby】RubyでCGI
http://pc5.2ch.net/test/read.cgi/php/988948655/
>174
おお、そういうスレあったのね。
では皆さん、さようなら〜
Amrita2のベンチは向こうに貼り付けます。
>>119 >おまえはRDBを使うか?もし使うなら、SQLを使うだろ。あれこそ本当に頭のモードを切り替えなきゃいけないぐらい
Kwartzを独自言語じゃなくてSQLにしろってことね。
>独自言語でも、メジャーになれば使われる。Kwartzはマイナーだから使われない。それだけだ。
>独自言語でも、メジャーになれば使われる。Kwartzはマイナーだから使われない。それだけだ。
こういう怠惰な現状肯定を認めてしまうと、
技術者は予め与えられた道具を黙って使っていればいい
ということになって、イノベーションの可能性を阻害する。
まあRubyも安定期に入ったってことだ
いつまで創業期黎明期じゃまずいだろ
Hikiにはユーザー用のMLってないの?
>>179 ないみたいだねえ
ユーザML なら自分で作るという手もある
>>177 現状を述べたまで。努力を放棄したとはどこにも書いてないだろ。
しかしどうやったらこんな解釈をするのか。
>>181は以前試したが、標準添付の中でも動かなくなるのがあったり、
かなり影響大きそう。
ところで、ツッコミにもある野分さんの案はどうよ?
ruby的にはこっちのほうが合ってるような気もするんだが…
>174, 177, 182
なんだよ、こっちに戻ってきてるの?
誘導するならサマリの作成&誘導をちゃんとやりなさい。
>174
>id属性は「HTMLファイルで重複してはいけない」から、オーサリングツールで
>容易にチェックできるため、かえって向いていると思うのだが。
複数箇所に同じデータを代入するようなケースに対応できませんが……
#ページのタイトルと大見出しを同じにするとか
>コメントを使う方式では、ほんとうにHTMLタグをコメントするときに困る
タグのコメントもリスク高いですな(合法だけど)
HTMLタグをコメントするケースって多いのかしらん?
>177
>こういう怠惰な現状肯定を認めてしまうと、
手間をかける以上のイノベーションがあるのが前提だけどね。
JavaScriptライクなの作成中とのことだけど、そっちの方がデザイナーの
学習コストが少なくていいかもね。繰り返しになるけど、XSLTもいいと思う
#デザイナーにロジックをいじらせるつもりならだけど
>>184 |複数箇所に同じデータを代入するようなケースに対応できませんが……
|#ページのタイトルと大見出しを同じにするとか
alias
>185
それはプログラム側で対応しろということかな?Kwartzには無いよね?
「同じデータを使いたい」というのは、デザイン側の問題であることが
多々あるので(上記の例とか)、プレゼンテーションデータ側で処理したい
ケースとかあると思うけど。
>>186 lambdaに対して何らかのメソッド呼び出しするのが違和感あるんだよね。
「.callだから嫌」というわけじゃないと思う。
でも、
>関数的呼出しの関数名部分がローカル変数のときには、そのローカル変数の値に「call」メソッドを適用する
って解決はすごくださいなぁ…。
>>184 テンプレートシステムと関係ない点へのつっこみだから、こっちに書いたまでだ。よくよめ。
>>186 [ruby-dev:24313]でまつもとさんも書いてるように、
単純だけどすごく強力そうだしねぇ。
影響がどの程度になるか予想しがたい。
ちなみに、Module.newはブロックを受け取るから、sendを使う必要はない。
特異メソッドでも可。
super()
(class << self; self; end).class_eval {
method_name.each {|i| alias_method i, :call}
}
self
>>188 schemeなんかだと変数と呼び出しは構文的に分かれてるからいいけど、
rubyじゃそうもいかないし。
どういう感じがいいわけ?
だからこういう感じ。
f = lambda{|x| p x}
f(12)
どういうアプローチで実現するのが綺麗かは思いつかない。
()を[]同様メソッドにするのがいいと思うんだけど、
引数無しメソッドの扱いが困るのもわかる。
メソッド呼び出しで()を省略できないようにすれば
何とかなるんだろうが仕様変更が大きすぎるだろうね。
2.0で変えりゃいいじゃん
195 :
デフォルトの名無しさん:05/02/21 03:44:45
Rubyでは、こういう時は、こういう風に書くっていうのを勉強したくて、
いくつか、プログラムのソースを読もうと思うのですが、
Rubyらしく書いてあるプログラムって、どんなのがありますか?
webrickとか、tDiaryとか、どうなんでしょうか?
「あおきにっき」でぐぐれ
みてどうするの?
>>198 アルゴリズムをパクる、、,じゃ無くて、真似る(学ぶ)。
この人のソースも結構きれいだとおもうんだけど。
http://cgi.2lbox.org/ 各種言語(RubyをはじめPerl,PHPなど)のBBSプログラムを比較検討したりと、けっこう私は勉強させてもらっています。
あれ、既出?
>>199 なんか特に見るところもないソースだな
つーか配布するならライセンスくらい書こうぜ
レシピブックって、
初心者が、リファレンスみたいに使うのかと思ったら、
よく考えたら、これをサラッと書けるようになれば、
中級者くらいになれそうですね。
レシピブックやってみます。
ありがとうございました。
あんなので中級者なのか? (´Д`)
まあ初級中級上級のクラス分けなんて相対的なもんやし。
>>192 みたいな変更ってそんなに影響範囲大きいの?
既存のコードが動かなくなったりする?
>>204 Perlからtieを借りてくればいい。
>>199 全体的に良くまとまってて、きれいなソースだとは思う
だが、parse_tagtokatext(タグとかテキスト)というメソッドの命名はどうなんだ
>>207 ...........まぁ、いいんじゃなかろか。わかりやすいし。
>207
どうせなら
yomotoru_tagu_toka_tekisuto
くらいテッテ的にやってもらいたい
>>209 みんな忘れてると思うが、Ruby は日本語の識別子が使える
だから、
def タグとかテキストを解析(文字列)
end
でいこうぜ
日本語の文字って大文字と見做されるんじゃなかったっけ?
だから漢字とかで識別子をはじめると定数扱いになったような。
>> 210
きもち悪いことに、本当にできた。試してみるもんだ。
#!/usr/bin/ruby -Ke
def こんな場合の気分って(こんなとき)
case こんなとき
when "恋したとき"
return "もんもん"
when "デスマーチ","阪神が負けた"
return "てんぱってる"
when "猫にそっぽを向かれた"
return "それはないよね"
end
end
print こんな場合の気分って('阪神が負けた')
exit
なにもここまで自由度が高く無くても(*_*;;)、と。
呆れるやら、..待て、なんかこれ結構使い道あるんじゃねぇか?と企ててみたり。
>>212 ちゃうよ。小文字と同じ。だから直接こういうのはできない。
class くらす; end
識別子に日本語が使えるのは別にrubyの特権でもなかろう。
VBでもJavaでも使えるぞ。
>>214 逆だったか。サンキュー。
とは覚えていても使わない豆知識だなこれはw
>>205 動かなくなるのもある。
method = method(arg)
みたいなの。
添付ライブラリにも2,3ヵ所あるが、一般にどの程度影響があるかまでは調べてない。
>>218 うーん、それで既存のコードが動かなくなることは無いように思えるのですが、
添付ライブラリの2,3ヶ所ってどこらへんでしょうか?
俺が言ってたのは、
class << foo
def bar(*a); yield a; end
def baz; [3,2,1]; end
end
foo.bar 1, 2, 3 do |a| p a; end #=> [1,2,3] これはOK
foo.baz.sort #=> NoMethodError: undefined method `sort' for #<Proc:...>
なんてことになりそうなこと。
これだけでも多くの既存のコードが動かなくなると思うが、
>>193はすべてのメソッド呼び出しでカッコ省略不可にしようと言ってるのかな。
だとしたら上のfoo.barも通らなくなってさらに多くの既存コードが動かなくなるね。
attr_readerで困るのはカッコ完全省略不可の場合?
method = method(arg)はそれはそれで困るが、互換性という意味では上記の問題の方が大きいと思う。
>>220 代入の左辺でmethodという変数ができるから、右辺のmethod()はその変数への
呼び出しと見なされてしまう。
> 添付ライブラリの2,3ヶ所ってどこらへんでしょうか?
sample/test.rbとtest/ruby/test_iterator.rbの
lambda = lambda{44} とか marity_test あたり。
f.(2)とかかれたら
f.call(2)と同義とするとかで、いいんじゃないか
にんげんだもの
文字列を作るときに、%Qとか、%qって使ってる人いるんですか??
なんか、微妙に使いにくいというか、何をエスケープしたら十分なのかよくわからん。
%Q(abc(def)はエラーで、%q(abc(def))は通るんですよね。
なんか、不思議だ。
改行っていうのと、行末$の関係がよくわからないので、以下のようにしてみたら
どちらも同じ結果になってしまいました。
改行と$って、違う概念なんでしょうか??
test = "abc\ndef\nghi\n\n"
test.each{|line|
p line =~ /$\n/
}
でも
test = "abc\ndef\nghi\n\n"
test.each{|line|
p line =~ /\n$/
}
>>225 "や'や#{}が混ざってる時に使う。
そうじゃなけりゃ""や''で十分。
225の例のように括弧を含む文字列をわざわざ%Q()や%q()で書こうとするのは
はっきり言って無意味。
>>226 p "s" =~ /\n/
p "s" =~ /$/
「行末」は「位置」で、「改行」は「(「改行」という) 文字」、っていう違いかな。
229に補足すると、行末は文字列の最後か改行の前。幅をもたない。
>>225 %Q(abc(def))はエラーにならんのだけど。
カッコの対応が取れてないのはtypoではなくソースでもそう書いたのか?
>何をエスケープしたら十分なのかよくわからん。
気持ちわかる。俺もあまり自信ないが、
%qはシングルクォートを書きたいとき\'ではなく'と書く(書かなくてはならない)、ほかは''と同じ、
\Qはダブルクォートを書きたいとき\"ではなく"と書ける(\記法が有効なので\"と書いてもいい)、ほかは""と同じ、
じゃないかな。
>>227 #{}って関係ある?
>>227 下記のような違いがあるということかな?
%Q( #{ Time.now } ) # => " Wed Feb 23 15:48:08 JST 2005 "
%q( #{ Time.now } ) # => " \#{ Time.now } "
>>232 あ、これは"〜"と'〜'の違いっていうだけか。
良く分かってませんでした。失礼しました...。
ただ単に文字列中に ' を入れたいなら " でくくればいいし、
ただ単に文字列中に " を入れたいなら ' でくくればいいのだが、
文字列中に #{} と " の両方を入れたいなら " でくくるのはちょっと、
という話ではないだろうか。
>>231 %Q(abc(def) が通らないっていうのはすごくヘンだと思うぞ。なんで文字列の
中でカッコのマッチングをわざわざ取ってるんだ?
%Q|abc(def| とか、他の記号を使うとオーケーなのにね。
%記法をつかうなら中に入らない文字を使えってことかな。
ヘンとか言われてもそういう仕様なので・・・
つーか、
> %記法をつかうなら中に入らない文字を使えってことかな。
という認識は、きっと逆で、
中でかぶらない任意の文字を区切り文字として使いたい、
という場合に%記法を使うのが正しい使い方と思われ。
>>235 確かに不思議な仕様ではあるね。
なんとなく%Q(()) => "()"としたかったのかな。
他の言語(Perlとか)からごっそり取り込んだだけの仕様だったりする?
ところでもし
>>225==
>>235なら、
>%Q(abc(def)はエラーで、%q(abc(def))は通るんですよね。
でわざわざ%Qと%qを使った理由を教えてくれ。
238 :
226:05/02/23 18:34:01
>>228-230 $が、改行の前か、文字列の最後ってことは、色々調べて書いてあったんですが、
その上で、226を実行すると、/\n$/っていうのがabc\nにマッチしてしまう理由がわからないのです。
$が改行の前なら、マッチして欲しくないんですが。
225!=235
あ、今知ったんですが、%qとか%Qって、括弧()じゃなくてもつかえるんですね!!
これなら、便利かも。
ところで、やっぱり、変な仕様である気はしますね。%q(()のエラー。
>>239 それを知らなかったのなら仕方ないか。
%記法は、括弧のときだけ特別に中身の対応をチェックするようになっている。
親切なような、余計なお世話のような。
%Q'文字列中に"をエスケープなしで'
%q"文字列中に'をエスケープなしで"
とか書いたりもするなあ。
でもさ
# Perl では $ は改行の前と文字列末尾にマッチする
とあるけど
print "true\n" if "\n" =~ /$\n/;
はperlでマッチしないのね。
でもrubyだとマッチする。
>>243 Perlでは$は、改行文字そのものとマッチするが後方参照しても文字列が取り
出せないもの、としているということなのかな。
perl -e 'print "true\n" if "\na" =~ /$a/;' # => 改行の後にaだから真
ruby -e 'print "true\n" if "\na" =~ /$a/;' # => 改行の直前の後にaだから偽
となるね。
"\na" =~ /^a/ が Perl では成立しないが Ruby では成立するとか、この辺はいろいろ面倒だな。
246 :
デフォルトの名無しさん:05/02/23 20:21:12
質問です。
["a", "b"] → "["a", "b"]" のように
Array クラスを String クラスにしたいんですが、どうすればいいでしょうか?
>>245 "\na" =~ /^a/は複数行モードの問題じゃね?
"\na" =~ /^a/mにすればperlもrubyもマッチする
>>247 Ruby はデフォルトで複数行モードがセットされてるってこと?
>>248 サンクス。inspect覚えておきまつ。
>>251 マジで?
Ruby には s なんて無い (Shift_JIS モードになるオプションに当てられてる) わけだけど、
どうやって単行モードにするの?
make test-all は make install が済んだことが前提でしょうか?
/usr/local/bin/ruby が存在しなくてエラーになりまくりなのですが。
>>255 ・・・知らなかった、サンクスorz
$KCODE= = 'SJIS'にしてみた
res256.gsub!(/\$KCODE= = 'SJIS'/,"$KCODE = 'SJIS'") # orz
259 :
226:05/02/24 00:05:30
p "abc\n" =~ /$\n$/ #=> 3
p "abc\n" =~ /$$$\n$$$/ #=> 3
なるほど。
>258
むしろNオプションでネコミミモード
……どんなモードやねん、と自分で突っ込んでおく
>>262 されてないんだけど、ruby-talk の間違い?
spam判定されてた。スマソ OTL
266 :
デフォルトの名無しさん:05/02/24 11:45:27
Railsを使ってみようと思って、Ruby one click installer 1.8.2final(windows)
をインストールして、ruby gemsを使ってみたんですが、
indexをupdateするってところで、とまってしまいます。
どうしても無理みたいなので、
ActiveScriptRubyをインストールして、gemsもインストールして使うことにしました
ruby install.rbでインストールは成功したのですが、
実際使おうとすると、
C:\Documents and Settings\Toshihiro>gem
ruby: No such file or directory -- C:/Program (LoadError)
ってなります。
このエラーって、どのレベルのエラーでしょう。。
どうもパスにスペースが入ってるところに問題があるみたいです。
実は、gemsって、Windowsではそのまま使えなかったりするんでしょうか??
ところで、one click installerでみなさん、使えてるのでしょうか??
267 :
266:05/02/24 11:53:06
ActiveScriptRubyを、c:\rubyにインストールして解決です。
やはり、パスにスペースが入ってるとうまくいかないようです。>gems
デフォルトで、RubyGems添付になって、
RAAに登録されているのは、Gem形式で配布されればいいのに。。
268 :
266:05/02/24 12:00:09
269 :
266:05/02/24 13:17:41
誰か、gems使わないrailsのインストール方法教えてください。
るびま見たら、actionmailとか必要みたいなので、インストールしようと思ったら、
RAAにないし。。
RAAからrailsだけとってきて、インストールしたらいいのかな??
271 :
266:05/02/24 19:18:53
ちょっと、気になったんですけど
僕のインストール方法は、
ruby setup.rb を実行しただけなんですよ。
それで、同じフォルダに
post-install.rb ってあって、それを実行したら、
C:/Documents and Settings/Toshihiro/デスクトップ/rubygems-0.8.4/rubygems-0.8.4/post-install.rb:40:in `install_windows_batch_files': uninitialized constant Config (NameError)
from C:/Documents and Settings/Toshihiro/デスクトップ/rubygems-0.8.4/rubygems-0.8.4/post-install.rb:72
Completed(1)
こう出てしまいます。ここに問題があるんでしょうか。。
あと、ruby gemsのインストールマニュアルって見つからないんですが、どこかにあります??
http://rubygems.rubyforge.org/wiki/wiki.pl?RubyGems それと、updating gem source ..... って出た後、10分くらい待ってみたけどだめでした。
(???: ??????????? ??) <-- translated online
翻訳してくれ。
(これ: 文字化け ?) <-- translated online
274 :
デフォルトの名無しさん:05/02/24 22:16:41
276 :
デフォルトの名無しさん:05/02/24 22:59:38
質問です。
[1, a, 2, b, 3, c] → [[1, a], [2, b], [3, c]]
としたいのですが、何かイイ方法ありませんか?
初心者でスマソ。
効率とか考えずに。
Hash[*[1, a, 2, b, 3, c]).to_a
ary = [1, a, 2, b, 3, c]
Hash[*ary].to_a # => [[1, a], [2, b], [3, c]]
あ、これじゃあ順番が保存されない可能性があるか。ゴメン。
負けた……orz
もういっちょ。
ary = [1, a, 2, b, 3, c]
ary2 = Array.new(ary.length/2)
ary2.length.times { |i| ary2[i] = [ary[i*2], ary[i*2+1]]}
美しくないですが。
ary2, a = [], nil
ary2 << [a, ary.shift] while a = ary.shift
>>277,
>>278 ありがとうございました。Rubyならwhileやfor文を使わなくても
きれいに書けるかなと思ったんですが、なかなか難しいみたいですね。
欝になるほど汚いコードコンテストの会場はここですか?
>>282 > Rubyならwhileやfor文を使わなくても
そーいや、ここしばらくイテレータ以外で繰り返し処理かけてないな。
>>> ary = [1, 'a', 2, 'b', 3, 'c']
>>> zip(ary[::2], ary[1::2])
[(1, 'a'), (2, 'b'), (3, 'c')]
もうRubyだめだな
汚すぎる
そこだけ見て判断するのはどうかと思うが、Pythonのスライスは便利だよな。rangeと共に重宝してます
Pythonだと a[1:] とかけるのが、Rubyでは a[1,a.size-1] と書かなければいけない、など
細かい事言えば、どちらも得意/不得意な事はあるんだけど
(0...a.length/2).map{|i| a.values_at i*2,i*2+1 }
(0...a.length/2).map{|i| a[i*2,2] }
Rubyの場合、特異クラスでメソッド追加出来るので、汚い部分はメソッドのなかに閉じ込めて、
>>287 >Rubyでは a[1,a.size-1] と書かなければいけない
a[1..-1]
289 :
デフォルトの名無しさん:05/02/25 18:12:10
Rubyで "[a,b]" を [a, b] と評価する関数ってあったっけ?
Proc オブジェクトをそのまま文字列にマーシャリングしたいんですが、
うまいやり方とかあるでしょうか。
proc = Proc.new do |foo|
...
end
みたいな proc があったとき、
proc.to_s
#=> "Proc.new do |foo|
...
end
みたいにソースコードをそのまま取り出したいんですが・・・
> 276
ary.values_at(*(0..ary.length-1).select{|a| a%2==0}).
zip(ary.values_at(*(0..ary.length-1).select{|a| a%2!=0}))
ぱっと見て何をやってるかわからない1行よりは、素直な5行のほうがいいコード
5行がいやならメソッドに切り出せばいいし
RubyにCとかで言うところのマクロはありますか?
プリプロセッサに直接対応するものはない。
でもプリプロセッサの個々の機能に対応するRubyの機能はないとは限らない。
>>294 と、素直な5行のコードも書けない奴がほざいております。
じゃあ5行で。
array = [1, 'a', 2, 'b', 3, 'c']
result = []
while e = array.shift do
result << [e, array.shift]
end
まあ、やってることは >281 とかわらんが。
どうでもいいが、インデント修正。
array = [1, 'a', 2, 'b', 3, 'c']
result = []
while e = array.shift do
result << [e, array.shift]
end
>>298 >>299 Nice post!!
トリッキーなのも
「一行書き捨て、今後もう使わんだろー」っていうスクリプトならいいけど、
プログラムとして継続的につかい、しかも他人との共同作業であればなおさら、
ちょっとわかりやすすぎるし、ちょっと長いけど、単純な記述のほうが
あとあとうれしいもんだ〜ね。
........聞いてるかっ福沢!<だれやねん。
ソースが仕様書 なRubyなのになにをいまさら.
>>300 自分突っ込みは痛いんで、もう死んだほうがいいと思うよ?
Rubyでヘンだと思うところは
empty_array = []
empty_hash = {}
みたいな空データを作ってから、そのあと
<< で要素を追加していくところ。
副作用を利用したコードって、わかりやすい?
305 :
デフォルトの名無しさん:05/02/26 12:31:47
ary = [1, a, 2, b, 3, c]
ary2 = ([[,]])ary
>>304 def mkpair(cs)
if cs.nil? || cs.length < 2; []
else ; [[cs[0],cs[1]]] + mkpair(cs[2..-1]) ; end
end
p mkpair([1, 'a', 2, 'b', 3, 'c'])
副作用もループもなしで
tail recursionきたー
しかしRubyの汚く詰めて書いたほうが勝ちって風潮はいったいどこから来てるんだろう
Matzが1行プログラム好きだから
>>309 それはあなたの思い込みでしょう。
そもそもそんな風潮なんてないし、
そもそも詰めて書いたら汚いなんてこともないし、
そもそも勝ち負けなんてないし。
>>308 def mkpairs(cs)
def loop(rs,cs); (cs.nil? || cs.length<2) ? rs : loop(rs+[[cs[0],cs[1]]], cs[2..-1]); end
loop([],cs)
end
p mkpairs([1, 'a', 2, 'b', 3, 'c', 4])
>>307 は tail recursion じゃないと思われ。こっちの方がシンプルか?
def mkpair(cs)
(cs.nil? || cs.length<2) ? [] : [[cs[0],cs[1]]] + mkpair(cs[2..-1])
end
p mkpair([1, 'a', 2, 'b', 3, 'c', 4])
313 :
デフォルトの名無しさん:05/02/26 14:56:50
>>307 >>312 どちらも
[[[1, 'a']], [[2, 'b']], [[3, 'c']]]
こうなってしまいませんか?
>>313 実行してみると、きちんと [[1, "a"], [2, "b"], [3, "c"]] が出てくるけど。
316 :
デフォルトの名無しさん:05/02/26 21:59:35
ruby/tkの使い方がよくわからず、こまっとります
たとえば変数aを1秒間に10回監視しa=1の時、正方形の中身を赤
2の時は青、それ以外の時黒に塗るというのはどう書けばいいのでしょうか?
>315
ごきげんよう。
>>285 pythonやyorickの添え字増分は便利だねえ。rubyでまねるならこうかな。
class Array
alias_method(:aref, :[])
def [](*a)
range, by = *a;
return aref(*a) unless a.size == 2 and range.is_a?(Range)
tmp = aref(range)
tmp.values_at(*(0..(tmp.size-1)/by).map{|i| i*by})
end
end
ary = [1, 'a', 2, 'b', 3, 'c']
p ary[0..-1, 2].zip(ary[1..-1, 2])
>>316 tkに限らず、1秒に10回と正確に指定するのは無理だと思う。
ためしに sleep 0.1 のループを別の忙しいループと並べて走らせたら、
100回で1割程度の遅れがでた。
>正確に
論点はそこではないだろ
誰が見てもわかりやすい、メンテしやすいコーディングという面から考察した場合
イテレータを使うというのはどうなんだろう・・
rubyらしいコーディング・・ かぁ・・・・ むーん
とりあえず、何でrubyが読みやすい言語ってことに
なっている(売りにしている)のかがよくわからん。
慣れれば書きやすいとは思うが読みやすいとは全然思わない。
perlより、というプリフィックスをつけるんだ!
無駄にいろんな機能を使いこなそうとせずに
普通に書いてる分にはきれいで読みやすいと思うけどね。
>>321 イテレータって問題なの?
Rubyを知らない人にはわからんだろうけど。
>>322 じゃあ例えば何なら読みやすい?
lisp
んー、確かにRubyがよくわかってる人なら問題ないのかもしれないけれど
「ん、 なんだ この識別子は・・」 ->defってるところを探す
「ふむ・・ ここか・・ なになに?・・」
ここで思考停止になるパターン多そうな気がしない?
yield、イテレータの引数、渡されるブロック、ブロックパラメータ・・・
「んん?? これが・・ こうなって・・あれれ?」
インタフェイスを複雑にしない
適切な名前をつける
>>328 例えば、String型のデータを作るとき。
str_test01 = ""
とせずに、
str_test02 = String.new("")
とすると、大量な文字の羅列が積み重なるファイルの中では
ひとつひとつの行では、一見わずかな効果しか無いようだが、
積み重なったとき、実感できるほどに「見通し」が良くなるような気がする。
タイプの量は増えるけど、後々を考えると、どうだろう。
イテレータの使い方とか表面的なことすらわかってない人を
「Rubyをちょっとはわかっている人」と言えるのか?
いや、イテレータの理論とかは俺も知らないが。
他の有名な言語ではあまり見ないfeatureだから
他の言語を知っている(特に手続き型な言語しか知らない)Ruby初学者には
直感が働かないところかもしれないけどね。
しかしそんなやつにRubyのソースをメンテさせたりするな。
Cしか知らないやつにC++のソースをメンテさせるのと同じくらい無茶だ。
>>329 言いたいことが全然伝わってこない。
例が""じゃString.newを書き足しても冗長なだけに見える。
さらに変数名がstr_だったら普通Stringだと伝わるだろう。
これはまさに
>>328の言うとおり。
多分例が悪いんだと思う。それともまた型の話か?
>>303 > 名前: デフォルトの名無しさん Mail: sage 投稿日: 05/02/26 12:01:09
> Rubyでヘンだと思うところは
> empty_array = []
> empty_hash = {}
> みたいな空データを作ってから、そのあと
> << で要素を追加していくところ。
え? Hashって、<< で要素を追加できたっけ?
[]=といいたいんだろう。たぶん。
>303
ケースによるけど、Array の場合は
* ブロック付きの Array.new
* Enumerable#collect
などで、空データに追加していく形式を避けることができるかもしれない。
Hash の方は
enum.inject({}){|h,k| h[k] = yield(k); h}
とか
enum.inject({}){|h,args| k, v = *yield(*args); h[k]=v; h}
みたいなことをしてくれる初期化メソッドが用意されててもいい気がする。
--
というか、
>>303がヘンじゃないと思うのがどういう書き方なのか
教えてもらえるとありがたい。
コレクションを新しく作ったら中が空なのは自然だと思うが。
Java で
ArrayList arrayList = new ArrayList();
arrayList.add("java");
とやるのが変じゃないと思うなら、
[] とか << を使うのが変ってことなんだろうね。
336 :
デフォルトの名無しさん:05/02/27 21:02:17
>>321 お前もうずっとCOBOL使っとけ。
「お前の望むような形での誰が見てもわかりやすい」言語だぞ。
まともなプログラマは吐き気を覚えるけど。
イリテータを使うのは、むかつく
array = [1, 'a', 2, 'b', 3, 'c']
require 'enumerator'
p array.enum_for(:each_slice,2).to_a
# => [[1, "a"], [2, "b"], [3, "c"]]
ヤボだなあ
>>338 COBOL-Rubyのブリッジを作ったら松江の会社に雇ってもらえるかも。
>>338 イテレータの使用はわかりやすいとして
定義は わかりやすい、見やすい書式だ と思うか?
通りすがりだけど、
yieldというキーワードがちょっとわかりにくいのをのぞけば、
十分わかりやすいと思うよ。
ルビオタにそんなこと聞いたら答えは明らかだろ。
Rubyに初心者が寄り付かないのはHSPが大盛況である理由と正反対の理由だから。
HSP みたいな普及はしなくていいよ。
そうか、 yield のおかげで初心者が寄り付かなくなってくれていたのか。
yield 様様だな。
yieldがいやなら、&blockで受けて、block.callしとけ。
イテレータってメソッド毎に最大1つしか渡せず、
変数のスコープがちょっと変な無名高階関数だと思ってるけど間違ってる?
手続き型言語と関数型言語のいいとこどりをめざした感じで
個人的には結構好き。この2つの制限がなければもっと嬉しいけど。
> メソッド毎に最大1つ
これは文法的に動かないだろうな。
> 変数のスコープ
こっちはたぶんRuby2で変わるはず。
最近、イテレータブロックを複数渡すようにする話があったようななかったような。
素直にlambdaにすりゃいいのに
クロージャネストさせるとデバッグできないって某shiroさんも言ってたぞ
>>352 ポインタきぼん。
どう渡してどう区別するんだ?
hoge() foo:{...} bar:{...}
def hoge
foo:yield
end
メッセージパッシングモデルのOOPがレシーバ1つに特化したのと同じで、
クロージャ1つに特化したイテレータ文法はそれなりに成功してると思うけどなあ。
複数わたすなら明示的に普通の引数の一つとした方がよいだろうね。
ブロックとProcオブジェクトの微妙過ぎな違いもなくして統一し、
{ |a,b| ... } をRubyにおけるlambda式の表現としてどこにでも書けるように
するのがいいと思う。
その場合、|引数|を必須にするってこと?
今のparse.yで実装できるかなぁ。
Ruby2って今のparse.yを使うの?
イテレータって名前がいやらしいよね
イレテーナ?
>>360 >>356は
>>356の意見でしょ。ロードマップにあるわけではなく。
>>358は「Ruby2で全部書き直すならそれもありじゃん?」ってことじゃないかな。
んで、Ruby2って全部書き直すんだっけ。大幅な改造だと思ってた。
だって1.9が2の実験版だとしたら、
1.9から1.8に頻繁にバックポートされてるのがちょっと不思議だし。
バックポートされてんのは、だいたいバグフィックスでない?
>>356は以外と簡単だな。パッチで100行もいかなかった。
1.10マダー?
pack と unpack で「レシーバの型はどっちだったっけ?」と毎回リファレンスマニュアルを引いてるのは漏れだけ?
packとunpackはテンプレート文字列が覚えられないので自らは使わない。
あんなのはPerlの悪習さ!(負け惜しみ)
互換性のない型への型変換を行うほぼ唯一の方法だったりするわけだが。
しかし、packとunpackでレシーバの型を悩む理由がよくわからん…
型変換に使うもんなのか。
バイナリ文字列の生成/パースと簡易Marshalくらいの用途しか考えてなかった。
素人でスマソ
もちろん普通はそういう用途に使うわけだけどね
Array#pack => String, String#unpack => Array
だっけ。
どうしてpackがArrayのメソッドなんだろうって、変換する要素がひとつの時に悩む。
>>374 自分も同じ。型ってこの場合chatとかbyteの事だと思う。
データ構造定義するときに一度wrapper method定義してしまえば、
あとは、pack/unpackを直接呼ぶ事は少ないけどね。
Time.parse("aaaaa") とかが例外にならないのって意図された動作なの?
>>377 意図された動作だと思う。例外を出すコードも見当たらないし。
Time.parseはParseDate.parsedateの結果を元にTimeオブジェクトを
用意するけど、足りない部分は第二引数(省略時はTime.now)で補われる。
ParseDate.parsedate("aaaaa")
# => [nil, nil, nil, nil, nil, nil, nil, nil]
この結果から、結局Time.nowと同じ結果が得られる。
これが望まれた動作かどうかは別の話だけど。
>>377 "aaaa".to_i が 0 になったりするあたり、 Ruby ではこのテのメソッドは原
則的に「パースできるとこまでパースして、その結果をもとに値を決定する」
というポリシなのでは。
単に C の atoi() や strtol() の仕様を継承してるだけのような。
nkf を捨てる時期に来ていることに気づく人がそろそろ出て来てもいいんですよ。
>>379 Integer("aaaa")
# => ArgumentError: invalid value for Integer: "aaaa"
aString.to_i と Integer(aString) は別物なんだよね。
TimeとDateとDateTimeとrequire "time"したあとのTimeで
いつも悩む。rfc2822メソッドはどれだっけとか。
>381
基本的に同意。まるで外部プロセスを起動するかのような使い方がもにょって仕方がない。
こないだから半分冗談でJcode.pmをRubyにベタ移植したらどうだろうとかやってるが
仕事がしんどくて10%の進捗のまま半月放置中さ´`,、(´∀`)´`,、
……誰かがんがってくれぇ(つ´д`;)
>>385 いや、界面の設計は割とどうでもいいと思ってるのよ。
問題はもっと別のところにあるわけなのだが・・・
ruby-icu キボンヌ
>386
そうなのか。ヘタレな同意でスマンカッタ
>>386 どんな問題?
個人的にはインタフェース(と動作)がまともなら中身はどうだっていいんだが
・・・いや、nkf のインタフェースがいけてるという意味じゃないよ?
PerlIOみたいな文字コード変換はどうよ
インターフェースも動作もいけてない、それで中身がまともならよかったけど
中身もまともじゃない、ということでは。
念のために言うと、nkfをライブラリとして使ってることによる問題なのであって、
コマンドとしてのnkfがどうこう、という話ではないよ。
syckとnkfは読む気にならんな。
YAML は仕様からして糞なので。 spec 読んだら XML の方がマシと思えるよ。マジで。
>>394 YAML::StoreみたいなXML::Storeってあったっけ?
あるならそちらに乗り換えたい。
spec とか読まずにフィーリングでさくさく書いてるやつ (=俺) には
YAML のほうがあってるってことかな。
Rubyist はこういうやつが多いと思ってたけどそうでもないんだな。
個人的には結構 YAML 使ってるけどまだ妙な仕様にはまったことはない。
使い方が足りないだけか。
他言語間でデータやりとりし始めると死にたくなってくるから。マジで。
>>396 俺も使っているし自分で書いたりもするけど、
Ruby 1.8.2までに少しずつ出力結果や入力時の解釈が変わってきているので、
YAML(syck)のバージョンを跨いで同じデータを扱う時には
注意が必要だった。なかなか気付けない事が多いけどorz
400 :
デフォルトの名無しさん:05/03/05 03:49:46
違う。
__FILE__の仕様読み返せヴォケ。
るbyさいこう
Ruby再考!!!!!!
405 :
デフォルトの名無しさん:05/03/05 21:36:14
marshalに格納されているデータを更新日順に並べることってできませんか?
例えば5万件以上含まれているとき、古い方から1万件削除、とかそういうことをやりたいのですが
marshal使うのやめてテキストにはき出して処理するしか方法がないんですかね
>>405 テキストかmarshalかは関係ないと思うけど?
更新した時刻のデータが入ってるならそれ見ればいいし、入ってないなら無理だ。
具体的にmarshalをどんな使い方してるのかが分からないと何とも。
>>406 hashに単語の登場回数を1対1で記録しています
処理させるデータの変遷によって、最近は見なくなったな〜
というような単語に関しては古い方に回していって消えてくれる
といった処理をさせたいのですが。
どうしたものでしょ
marshalどこ?
>>408 hashをmarshalにdumpしてるのです
marshal はまったく関係ないような気がするんだけど、気のせいかな。
411 :
デフォルトの名無しさん:05/03/05 23:31:06
ttp://raa.ruby-lang.org/announce20050304.html > In reaction to a discussion on ruby-talk ML, raa-admin checked links of
> whole RAA projects today (Mar 4 2005). In what follows, you can see the
> result. Please find your project and check the result.
ところで、なんでわざわざ英語で書くんだろうね。
馬鹿?
…?
米礼讃主義だからだ。
所詮戦争に負けた国だ。
日本人にフィードバックしても得るところがないからだよ。戦争とかは関係ない。
まつもとが日本人嫌いだからに決まってんじゃん
ていうか英語で書けば世界中の人が読めるのに
わざわざ日本語で書く理由が分からない
>ていうか英語で書けば世界中の人が読めるのに
ちゃんと読める英語を書ければね。
もはやネタに近いが、お米の国の人との交渉の席で
「マイ・フェイス、ドント・スタンド!!」
とのたまったお役人が居たそうで……
で、その役人と何の関係があるんだい?低脳君
最近、米語が世の中で一番単純な言葉のような気がしてきた。
三単現は理不尽だから止めて欲しいけど……
オタ向けの貧相な技術文書だけ読んでればそう勘違いしてしまっても不思議ではない
>419
ん。だから、藻前さんのように、ちゃんと読める英語を書ける香具師なんて
日本にそうそういねーよ、って話。
だから何?
もうラテン語で書けばええやん
Rubyを勉強しようと思うんですが、おすすめの本はありますか?
世界宝石百科
Ruby のどんなことを勉強したいのか書かないと。
とりあえず気楽に読み書きできるようになりたいだけなら、
ある程度 C とか他言語の知識があれば Web で十分じゃないかな。
たけーよ
まったくの初心者なのでわかりません。
おすすめの言語みたいなので勉強しようと。
この手の本としては普通くらいじゃね?
>431
>428ならフリーだぞ。
256倍を乱発してこけまくったせいで
各出版社がRubyに関する本を出すのに躊躇するようになったって話だ
仕事でネットワーク管理やっているんだけど,net/ipaddr が非常に使いづらい。
で,RAA を探したら net/netmask なんてものがあった。
RAA - netmask
http://raa.ruby-lang.org/project/netmask/ これが異常に使いやすくて,必要な機能が全部入っている (IPv4 だけだけど)。
個人的には net/netmask が標準ライブラリになってほしいんだけど,
なんで net/ipaddr が標準ライブラリになっているの?
This library is deprecated if you are using 1.8.0,
which includes the much more complete 'ipaddr' library.
とか書かれているけど,ipaddr は全然 complete じゃないよなあ。
>>420 >>424 エスペラントという選択肢もあるぞ
>>425 プログラミングに馴染みがないなら、とりあえず「たのしいRuby」で。
他には上で挙がってた「プログラミングRuby」なんかもお薦め。
256倍シリーズはお薦めできない。いい本と悪い本がごちゃ混ぜになってるから
>>440 ありがとうございます。プログラミングRubyでやってみます。
rubyごときで本買う気が起きない。
Perl様の為なら喜んで大人買いするがな。
静的なスコープってなに?
Perlはラクダ本がオライリージャパンお得意の分冊になったのがショボーン
>>437 それを釣りというならお前も釣られてんな
>>444 変数と値の対応関係とか(スコープ)が実行時ではなく、コンパイル時に決定さ
れていること。 Lisp の話だけど、
http://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/comparison.html の中程で動的スコープと静的スコープの説明をしているのがわかりやすいかも。
Ruby で説明すると、
a = 10
l = lambda { a }
def m(a, l)
l.call()
end
m(30, l) # => 静的なら10、動的なら30になる
つまり、コンパイルする段階で、 l の中の a が何を指しているか決まってい
るので、どこで実行しても参照先が変わることはない。これが静的スコープ。
動的なら、実行時にaの対応先を調べることになり、mの第一引数が該当するか
ら結果が30になる。
>変数と値の対応関係とか(スコープ)が実行時ではなく、コンパイル時に決定さ
>れていること。
この説明ってよく見るけど不正確じゃない?
動的スコープの言語がコンパイルできないみたいな印象を受けるよ。
>>447 すごいよくわかった。さんくす。
つまり、Procオブジェクトlの中で変数aが現れたとき、それがコンパイル時点で決まっていれば静的スコープ、コンパイル時には決まっていなくて実行時に探索するのが動的スコープなのね。
447の説明ではlambdaというかProcオブジェクトを使っていて、この話はブロックでも同じことだとおもうけど、メソッド定義内でのローカル変数でも似たような話になるのかな。
あと、静的スコープと動的スコープはどっちがいいの?直感的には、動的スコープはわかりづらくデバッグしにくいように思うんだけど。
>>439 情報ありがd。ちょと不透明だね。
しかし Dan タンの放置っぷりはすさまじいな……。合掌。
>>449 メソッド定義内でも同じように議論もできるんだけど、 Ruby の現在の実装だ
とメソッド内は完全に別世界だから例として上手くないかな、と思ったので
Proc にした。たとえば、
a = 10
def x()
a
end
っていう時の a は Ruby だとエラーになっちゃうからね。 Scheme みたいな
レキシカルスコープな言語で似たようなことを書くと、 a は 10 を指してエ
ラーにならない。とはいえ、後ろの m をメソッドじゃなくて Proc にした方
が簡単だったかな。
ちなみに、動的スコープだと、たとえば再帰関数で毎回同じ引数を渡したりと
かいったことを省略して大域的に書いたり、ということを比較的容易に書ける
らしい。実は漏れもよくは知らない。でも、現状で動的スコープ言語が今では
ほとんどないということからして、やっぱりわかりづらいんだと思う。
EmacsLispが動的スコープだっけ。
あと Perl の local かな、有名所では。
>>448 でも指摘されているが
>>447 の説明と
>>449 の理解は間違っていると思うぞ。
コンパイルがどうこうは定義じゃない。
そういう実装が多い (気がする) だけ。
今更だがこういう話をするのに Ruby は不適切じゃないか?
そもそもかなりのスレ違いだと思うが…。
>>453 じゃあ正しく説明してくれ。「コンパイル時」を「構文解釈時」にすりゃOKなんて逃げはなしで。
>そもそもかなりのスレ違いだと思うが…。
某松日記にでてたんで。
動的スコープってキモイな・・・
たまーに便利なこともあるよ。
文脈依存スコープと呼べば無問題
言葉の定義については、実行時か実行前程度でいいんじゃない?それはともかく
>>451 mをprocにすると結果が変わってくる。
メソッドないのブロックではスコープが隔離されてるだけなので
これを以て動的/静的スコープと判断するのは不適切なのでは?
>>447の場合、aの値が伝搬されてないだけとも言える。
a = 10
l = lambda{|b| eval "a", b}
def m(a,l)
l.call binding
end
m 30, l
もっと単純に
a = 10
l = lambda { a }
a = 20
l.call
> でも、現状で動的スコープ言語が今ではほとんどないということからして、
Pythonも動的スコープ, rubyも動的スコープだと思ってたんだけど?
静的だとしたら上のコードの実行結果と矛盾しませんか?
>>449 有効な利用方法は、クロージャ、遅延評価。
書いてから勘違いにきがついた。
>>459はスルーよろしく
matzって、なんて読むの?
魔ッ
orz
魔ッ蔵?
ま゛
マットゼット
ザット
まっつん
[ruby-talk:127803]
> Matz once told me that "matz" is Japanese for "pine"!
パイン?
トミーと
クロノと
ケンサンバ
ゆうべからeval.cが要C99になってる。
あと、pp.rbのInspectKeyが古いまんま。
つーか、スレッドローカル変数いじっただけで[BUG]ってのは、
厳しすぎるんでは。
> ゆうべからeval.cが要C99になってる。
いろんな環境でコンパイルできなくなると思うが、なんか意味あんの?
>>475,476
eval.cについては、そういうことじゃなくて、単なるバグでは。
もう直されたみたいだけどね。
>>475 関係ないけど、関数定義(の引数)のスタイルはいい加減、C89にならんもんかいね。1.9とかで。
何かにつけては結局規格を頼りにしてんのだから、そろそろやめません?
Cは可読性低いからLispかHaskellで書き直して欲しいよ。
そんな事より[ruby-list:40650]の意図をつかみかねて夜も眠れないのは漏れだけですか、そうですか。
>>480 Rubyネタの振りをしたspamだと思えばよいかと
単に実行するだけでいいんだから随分質の低い募集だな。
あのセンスがわかるかどうかが一次選考の決め手なのかな。
あのプログラムの可読性はどうよ?
取り立てて良くも悪くもないんじゃない?
俺は105点だった。実行はしてないけど。
必要とするスキルをお持ちで無いようです。
>>478 規格を頼りにするのと関数定義スタイルを変えるのになんの関係が。
K&Rスタイルが規格違反になったわけでもないのに。
>>488 ANSI-Cを頼りにする→処理系の前提としてANSI-Cがある→K&Rスタイルを貫くことに互換性の面では意味がない→ANSIスタイルにしたってええやん
ってつもりでした。
互換性のためにやってるんじゃなくて、単に作者の好み
[ruby-core:3518] (From: Matz)
> | What is holding back a conversion of the K&R code
> | to use prototypes ?
>
> My preference. I like prototypes. But I dislike the new style
> argument list, especially when the list becomes large with type
> names.
# blade で ruby-core は検索できないのね……。
規格をベースに考えるというのと、規格(の一部)以外は無視する
というのは違う。
規格非対応処理系ってのは、結構あるわけで。
現にまた一つ-devに出てるとこだし。
ハァ?
何がチミの心の琴線に触れて瞬間沸騰してしまったのかは知らないが
ちっとは落ち着けよwwwwwww
何に対して具体的事例を示して欲しいんだい?
こうやって「僕は頭が悪くないんです!」と言いたいだけなのは分かるが
指針もロクに示さずに「低能」「脳ミソの内部がショート」「薄っぺらな知識」
「現実を無視して揚げ足取り」と罵詈雑言を弄してるだけじゃ「頭が悪い」と思われても仕方が無いぞワラ
すとやんって日本人なん?
>>493 ハァ?
何がチミの心の琴線に触れて瞬間沸騰してしまったのかは知らないが
ちっとは落ち着けよwwwwwww
誰でも良いから心の琴線で何かが瞬間沸騰したところを見せてくれ(−−;
今日の使えるフレーズ
「何がチミの心の琴線に触れて瞬間沸騰してしまったのかは知らないが
ちっとは落ち着けよ」 ――― 493
-talk:133197に日本人がいないことについて
日本人は絶滅しますた
思えば少子化が酷かったしね
子供のときに川でねずみ食べてる日本人を見たことあるよ
Ruby2.0のブロックローカル変数の書き方があんまりきれいじゃない件について
ブロックのパラメータ変数って、なんで||で囲む必要があるの??
2.0から、()で囲むようにすればいいじゃん。
>>507 こんなかんじ?
foo do (bar, baz)
...
end
foo {(bar, baz) ... }
>>507 Smalltalkからアレンジした書き方じゃなかったかな。
>>507 式はカッコで括れるから、引数一個の時にコンフリクトするんじゃね?
511 :
デフォルトの名無しさん:05/03/12 18:52:52
Windows CEでrubyやりたいんだけど、CE版 ruby見当たらないよ。
1.8以降ではwinceディレクトリがあるだろ。
バイナリなら……シラネ。
URI で infoseek なんかでよくあるアンダースコアが付いたホスト名でエラーになるのはどうにかならないかなあ?
それで正常だと思うが。
どうしてもそういうのを処理する必要があるならuri/common.rbをコピって
アンダースコアを追加して、先にrequireするようにしたらいいんじゃない?
URI といえば。以下は仕様なのかな。バグなのかな。
URI.extract("
http://") #=> ["http//"]
URI.parse("
http://") #=> URI::InvalidURIError: bad URI(absolute but no path): http//
気持ち的には extract で返される uri は必ず parse が通って欲しいんだけど。
a = []
URI.extract($_).each { |u| a.push(URI.parse(u)) } while io.gets
みたいのではまるんだよね。
>アンダースコアが付いたホスト名
RFC違反だからinfoseekに通報白
>>510 ブロックのパラメータ変数を||で括ってると、
|を含んだ式が中に書けないっていうのは、
そこでブロックのパラメータ変数部分が終わってしまうように見えるからじゃないの?
式の中で出てくる括弧は、(で始まって、)で終わるから、パラメータの終わりと間違うことはない。
つまり、始まりと終了で、違う記号(対応する記号)な記号を使えば、
問題ないと思うけど。
k「phルウィyvフィvlヴィyvlんんぃうlgんぅgんぅgんぃうgんぅgflgぃうfぅ
>>517 > 式はカッコで括れる
a = 1
(a) => # 1
> 引数一個
block{(a)} # => パラメータ変数? カッコでくくった式?
こうしてRubyは無計画な構文を作りまくってグダグダになった
はい、ジャンガジャンガジャンガジャンガ〜
523 :
デフォルトの名無しさん:05/03/13 22:32:11
WebアプリケーションフレームワークのDivって使いたいんですけど、
これって、ドキュメントないみたいですね。
使い方の書いたページも探したけど見つからないんですけど、
どこかにあれば教えてください。
rubyって構文だけじゃなくて意味論も無計画だよね…。
[ruby-list:40519] What is singletonclass.superclass ?や
[ruby-dev:25808] break & retry in blockや
[ruby-dev:25866] Re: conflict method and local variableあたりを見てると、
「オブジェクト指向の中心に近い意味論をそんなフィーリングで実装してたのっ!?」とか
「深遠だと言われていたイテレータの理論もそんなフィーリングでっ!?」とか叫びたくなってくる。
確かに、理論的なモデルそのままに実装したら今以上に遅くなるし、
理論を極めようとしたらHaskellみたいになって一般人には使えなくなるから
どこかで折り合いつけるのは必要なんだろうけど…。
そろそろRuby10年の経験を元に、新しい言語を再設計する神に期待。
526 :
523:05/03/14 02:23:08
>>524 サンクス。
dRuby本か、divipのソース、付属のサンプル読むくらいみたいですね。
2003-9のUNIX USERと。古いなぁ〜
↑ブラクラ
↑大嘘書くな。
しかし、URLを見たときは、alangという人の日記かと思ってしまった。
↑グロ
↑春厨
/;;;::::---,::::::::::::::::::::::::::::::ヽ
/:/ ヽ;;;;;;:::::::::::::::::__:::::ヽ
. {/ ,..---_ ヽ:::;:-'"r''ヾ、:ヽ ,_._
l r=''" `' }= ノ.l:::::', {.'ヽi __
,!,,、 ' ´ ,..ノ:::::::l,.>-‐!l `` ヽ、
. i r,i ヽ.._ `'" l;:-'''ll ,.- !l ヽ--._ヽ,....,
〉~l =..ノ`ヽ、 _....-'ニ-t-l"il...--''-.| _,...ニ--'‐''''
. i ヽイ r、ゥマフ` '''""´ /-!、/;;;;;;;;;;;;;Y
ヽ ヽ`f_/ ノ ,.....,/rァ 〃-、;;;_;;;;;;;`、
\ヽ / /r'ア/ / /| .:::/ |\::::`、
\ /〃//,..-‐''!::::`、. ヽ ヽ:::::`、
ヽ .,_ ノ// / ,..`、‐l `、 ヽ'"`、
-==ニ二二二二二二二二二二二二二ニ二 ``'''ー-、-`-‐`'''l'''''"
`'''''''''''''''ー―==、--... ______.....>---‐~''=、-....二> [■
-==三三三三ニニニニニ''-`=-`=-、 ,ニ、'''ー-ニニ=--`' `ー―┴―
`~~~''''''''''''ーニニニニー=- ,,,,,,ヽ三三ゝヽ 二二 ̄ ̄~ヾヽ
,.../ f;;;;;| `~~""'''ー、;;;;;;;;;;;;;;;;;`~"'''ー--....-<"ヾ
/ l;;;;;;;l `~"ー-:::::__;ヘ;;;;;::::::::::二二
r'''" l;;;;;;;l `ー' `、
/ l;;;;;;;l
↑だれ?
↑おまえ
↑だるだ?
//
/ .人
/ (__)
/ ∩(____)
/ .|( ・∀・)_
// | ヽ/
" ̄ ̄ ̄"∪
∩∩ 人 V∩
(7ヌ) 人 人 (_ ) 人 (/ /
/ / (_ ) (_ ) (__) (_ ) ||
/ / (__) (__) _(・∀・ ) (__) ||
\ \( ・∀・)―--( ・∀・ ) ̄ ⌒ヽ(・∀・ ) //
\ /⌒ ⌒ ̄ヽ、 /~⌒ ⌒ /
| |ー、 / ̄| //`i /
| | | / (ミ ミ) | |
| | | | / \ | |
| | ) / /\ \| ヽ
/ ノ | / ヽ ヽ、_/) (\ ) ゝ |
| | | / /| / レ \`ー ' | | /
人 +
(__)
. + (__∧_∧
( ( )
/⌒'/⌒' ~ `) +
. + ( く( く ノ | イ
ヽ,_'ァヽ,_'ァ , .| +
+ .ノヽ.ノヽ ._λ_ ) +
./ ./ ノ| ノ
( ( -く |ー(
\ \ └,.| .) +
/ /,┘/ (__)
n 人 人 n
(ヨ ) (_ ) (_ ) ( E)
/ | (__) (__) | ヽ
\人/( ・∀・)∩(・∀・ )ヽ/ 人
_n (_ )u ( ⌒) uu)∩_ (_ )
( l (__) ./,. 人 i ,,E)__)
\ \ (・∀・ ) / /_) ./ .ノ( ・∀・ ) n
ヽ___ ̄ ̄ ) / /____) ,/ ./ ̄ \ ( E)
/ ̄| . 人 / / ・∀・) / フ 人 ./ヽ ヽ_//
| |. (__) / (__) \_///
| |. (__)\ 人 ヽ (__) / /人
,― \( ・∀・) (__) ∩ ・∀・)∩ ./ .(__)
| ___) | ノ (__) 〉 _ノ / ∩(__)
| ___) |)_) (,,・∀・) ノ ノ ノ / .| ( ・∀・)_
| ___) | ( O┬O .し´(_) .// | ヽ/
ヽ__)_/ ≡ ◎-ヽJ┴◎
\ 人 /
// \ (__) / 人
/ .人 \ (____) / (__)
/ (__) \ ( ・∀・) /(祭)(__)
/ ∩(____) \ ∧∧∧∧/ Y ( ・∀・)
/ .|( ・∀・)_ < > Φ[_ソ__y_lつ
// | ヽ/ < . > |_|_| |
" ̄ ̄ ̄"∪ < > し'´J ,*′
─────────< >──────────
人 ||||||||||||< > 人
(__) | < > (__)
(____) | /∨∨∨∨\ (__) ∩ミ
(・∀・,,) | / 人 .\ ⊂(・∀・,,⊂⌒ヽつ
( O┬O | .../ (__) .\
◎-ヽJ┴◎ | / (__) .\
/ (>=◎( ・∀・) (´⌒(´⌒;; \
/_./ 〉⊂_ノ` (´⌒(´≡
〈/ )/__,ミ ≡≡≡(´⌒;;;≡≡
(_/^´ (´⌒(´⌒;;
541 :
デフォルトの名無しさん:05/03/14 22:40:09
曼荼羅
おいら「おいすー^^」
また鬱期に入ったのか。とりあえずsage進行で。
544 :
デフォルトの名無しさん:05/03/14 23:39:14
もしかしてMF?
しもんきん 陛下 めどい おちんちんランド 必殺仕事人 ゆめりあ 曙 赤提灯 メイデン系(水銀燈、雛苺、水銀灯… くそみそ、オンドゥル ガンダム ディアッカ 二次裏 マジか ちょいあ 双葉
うほっ 性欲を持て余す 痔悪化、ウホ・・・ 虹裏 仮面ライダー E&E タートルズ img 種 沙耶 としあき プリキュア
Me dat鯖 img鯖 「」 ふたなり ふたば 双葉 わはー むすー ちょいあー 足コキ みさくら 戦隊 やらせて ハリケンジャー
響鬼 アスラン アムロ サスケ ハットリくん スリーサイズ教えて 赤影 下乳 富野 生きろっ リュミーン
キタ━━━━━━(゚∀゚)━━━━━━ !!!!! 童貞 クリボー スパイダーマン ブレイド アージュ最高
誰このじじぃ すっちゃ フェラ 泣くな シャア 若本 通常のザクの3倍 いまか 無職童貞 もう寝なさい アッガイ ハロワ
ニート 東京プリン キリコ デスノート 中の人 ダディ 剣山尖った NARUTO マリオ ルイージ 添い寝 俺の嫁
スネーク 生きろ GJ ハァハァ マクロス おちんちんランド ドラえもん ホリえもん ライブドア DS PSP ひどい
エヴァ エヴァンゲリオン 2k イデオン 性欲をもてあます 好きだ ユーゼス もへっ orz 若本規夫にも反応したよ
バストは何cm?スパロボ 泣かないで ララァは私のお母さんになった人かもしれんのだ ハンター×ハンター ジオンの残光 キモい
萌え 結婚して シャア 姫さま 月姫 ジオング 緑はいらない子 ゼノサーガ ピッタン♪ ガトー ギレン 好きだ 好き
ソニー ガンキャノン リンファ H ジョジョ 特攻野郎Aチーム マツケンサンバ マツケン けばい カミーユ ジュドー ウッソ
むーん氏降臨か?
ruby on rails をインストールしました。インストールはすんなりいきましたが、
activerecordのテストをしようとして、
http://jp.rubyist.net/magazine/?0004-RubyOnRails の ruby -I "connections/native_mysql" base_test.rb
を実行したら以下のようなエラーになりました。
何が駄目?
./../lib/active_record/base.rb:212:
uninitialized constant ActiveRecord::Base::ClassInheritableAttributes (NameError)
ルヴィって読むのな。なぜか自分でも分からんがラヴィって読んでたよ。
ルビーだが?
ルゥビだが?
Rubyの読み方決定戦が、始まる・・・!
∩∩⌒ヽ∩
(゚x゚)((ノ))ソ | |
ソ从i|゚ ヮ゚从 < 天罰! | | ドガッ
. ⊂).合f ) 人
. Zくんl,/ < >__Λ∩
し// // V`Д´)/
>>549 // /
. Z//Z 彡
(。x。)
U U
>>555 そのページの主張は、至極もっともだと思うけれども
「楽しいからWikiを使う」という観点が抜けているのが気になる。
Rubyの場合はドキュメント書きたくないってことだからな。
ツールは関係ない。
Rubyのドキュメント?
PickAxeサイトとrdocがあるじゃん
あれで十分だよ
英語読めないやつはなでしこでも使ってろ
>PickAxe
王道編ですな。邦訳本があるがな。
>>553 どうもgemのインストールの仕方か使い方が間違っていたようで、
gemを使わずにインストールしたらあのエラーは出なくなりました。
WEBrick::HTTPProxyServer を使っているのですが、
* ある特定の URL なら本物のサーバにアクセスせずに別のコンテンツを返す
* URL に応じて上流のプロキシサーバを変える
といったことはできるでしょうか?
ProxyContentHandler より前に handler hook があると良さそうなんですけど。
あと、コンテンツがでかいと危険な気がしなくもないんですが、これは気のせいですね。
ところで、RAAにgonzuiを採用して、RAAに登録されてるコードを
検索できるようにするという話はないの?
>>562 そういう発想は出てこないようなんだよねえ。やってもらえるとありがたいんだけど。
CPANにすらあるのに。
せっかくのアーカイブも勿体ないよね・・・。
ってかRAAに使うっていうのはgonzuiのようなものなら絶好のアピールでしょ。
bladeのコードを出せ出せというのが時々あるのを見ればわかる。
しょぼかったときはしょぼさ加減もアピールされてしまうけどさ。
未踏縛りとかあるんかねえ?
あと今のところバージョナップ毎に db 作り直さなきゃいけないとかがちょっと。
つーか、誰か自分の鯖持ってるひとが試験的に上げてみるとかはないの?
単純にまだベータ版だからじゃないの
>>568 Proxy Error
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /.
Reason: Could not connect to remote machine: Connection refused
とか出てるよ?だからまだやめといた方がいいんじゃね?
>>565 そう思うなら自分でやったら。
プログラムより先に言葉が出てくるのは老化の証拠だ。
はあ?
MoonWolfがまだ生きていたら同じことを言うだろうなぁ。
(死んでません)
つか、リソースは確保できるのか?
CPANと違って専用のダウンロードサイトすら用意されていないわけだが。
馬鹿な質問だったらごめん。
CPANとかRAAとかでgonzui使ってなにか嬉しいことあるの?
ある特定のプロジェクト内でソースコード検索したくなる理由はわかるんだけど、
こういうプロジェクト集めましたってところで
READMEとかだけでなく敢えてソースコード全体の検索をする理由がよくわからない。
従来の検索をなくすわけでないなら、あって困ることはないだろうけどね。
例えばあるクラスの使い方がわからない時に検索。
そのクラスを実際に使ってるコードが見つかる。
>>574 リファレンスが糞な事を言い訳できる効果があります
つまりCPANやRAAをサンプルプログラム集として使うってこと?
>>561 HTTPProxyServer は HTTPServer のサブクラスなんで
WEBrick::HTTPServer の :RequestCallback が使えると思います。
>>580 rubyってcvs head?
だとしたらruby extconf.rbで常にえらーメッセージが出るように
なっているんだよねぇ。面倒だから報告してないけど。
それかな?
>>583 ムカつくextconf.rbだな。
別ディレクトリでコンパイルできんじゃないか。
--- bdb-0.5.4/extconf.rb.orig2004-12-30 19:10:31.000000000 +0900
+++ bdb-0.5.4/extconf.rb2005-03-20 22:57:46.000000000 +0900
@@ -15,6 +15,6 @@
end
-subdirs = Dir["*"].select do |subdir|
- /\Abdbxml/ !~ subdir && File.file?(subdir + "/extconf.rb")
+subdirs = Dir.entries($srcdir).select do |subdir|
+ /\Abdbxml/ !~ subdir && /\A\./ !~ subdir && File.file?(File.join($srcdir, subdir, "extconf.rb"))
end
@@ -60,8 +60,9 @@
test: $(DLLIB)
EOF
- Dir.foreach('tests') do |x|
+ Dir.foreach(testdir = $srcdir + '/tests') do |x|
next if /^\./ =~ x || /(_\.rb|~)$/ =~ x
+ x = File.join(testdir, x)
next if FileTest.directory?(x)
- make.print "\t-#{CONFIG['RUBY_INSTALL_NAME']} tests/#{x}\n"
+ make.print "\t-#{CONFIG['RUBY_INSTALL_NAME']} -C \"$(srcdir)\" tests/#{x}\n"
end
ensure
@@ -71,6 +72,14 @@
subdirs.each do |subdir|
STDERR.puts("#{$0}: Entering directory `#{subdir}'")
+ Dir.mkdir(subdir) unless File.directory?(subdir)
Dir.chdir(subdir)
- system("#{CONFIG['RUBY_INSTALL_NAME']} extconf.rb " + ARGV.join(" "))
+ if $srcdir == '.'
+ srcdir = ''
+ elsif (srcdir = File.expand_path($srcdir)) == $srcdir
+ srcdir = "#{$srcdir}/#{subdir}/"
+ else
+ srcdir = "../#{$srcdir}/#{subdir}/"
+ end
+ system("#{CONFIG['RUBY_INSTALL_NAME']} #{srcdir}extconf.rb " + ARGV.join(" "))
Dir.chdir("..")
STDERR.puts("#{$0}: Leaving directory `#{subdir}'")
>>583 > rubyってcvs head?
ruby 1.9.0 (2005-02-16) [i686-linux]
> だとしたらruby extconf.rbで常にえらーメッセージが出るように
> なっているんだよねぇ。面倒だから報告してないけど。
> それかな?
そうかもです。
一応、ログはこんな感じです。
extconf.rb: Entering directory `src'
checking for db_version() in -ldb-4.3... no
checking for db_version_4003() in -ldb-4.3... no
checking for db_version() in -ldb43... no
checking for db_version_4003() in -ldb43... no
checking for db_version() in -ldb-4.2... yes
creating Makefile
extconf.rb: Leaving directory `src'
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
src/mkmf.logの最後の個所
--------------------
have_library: checking for db_version() in -ldb-4.2... -------------------- yes
"gcc -o conftest -I/usr/lib/ruby/1.8/i686-linux -I/usr/lib/ruby/1.8/i686-linux -I/usr/include
-O2 -march=i586 -mcpu=i686 -fmessage-length=0 -Wall -Wall -fno-strict-aliasing -fPIC conftest.c -L"/usr/lib" -L"/usr/lib"
-lruby-static -ldb-4.2 -ldl -lcrypt -lm -lc"
conftest.c: In function `t':
conftest.c:4: warning: implicit declaration of function `db_version'
checked program was:
/* begin */
/*top*/
int main() { return 0; }
int t() { db_version(); return 0; }
/* end */
--------------------
これでmkmf.logは終了
>>586 それだね。
Makefileはちゃんとできているから気にせずmakeするべし。
590 :
デフォルトの名無しさん:2005/03/26(土) 23:25:48
>>589はやまださんなのかな?
gonzuiマジデキタ━━━━━━━━━━(゚∀゚)━━━━━━━━━━!!!!!
> コードを補完するには、他にもドキュメントが必要なんだ
他のドキュメントはどこよ……matz
http://localhost/test/kagemai086/html/user.cgi CGI Error
The specified CGI application misbehaved by not returning a complete set of HTTP headers. The headers it did return are:
C:\Inetpub\bin\ruby-1.8.2-i386-mswin32\bin\ruby.exe: No such file to load -- ubygems (LoadError)
WinXPSP2+IIS+kagemai動かすと上のエラーが出るんだけどubygemsって何者?
-rubygems => -r ubygems
Gonzui 採用!
とてもいいニュースだ。
>>593 ruby -rubygems と書けるように
ubygems が rubygems の alias になってる。
> ubygems が rubygems の alias になってる。
誰か止めろよ。
alias つっても、require 'rubygems' してるだけの
ubygems.rb がインストールされるってことなので。
-rubygems なんて間違った指定を救済するためだけに
うびーじぇむず なんて意味不明な名前のライブラリを用意するそのセンスが
ついていけんのよ。
自分の事しか考えていない。
間違った指定の救済じゃなくて、
-rrubygems ではなく -rubygems と
あたかも元からあるオプションのように書けるのが目的。
groff -man も気に入らんな
> あたかも元からあるオプションのように
見えんよ。元からあるなら --rubygems のはずだろ。
ハイフンなんて1個でも2個でも変わらん、オプションの長短の区別なんて気にしない、
というそのセンスが、ついていけんのよ。
そのへんに転がってるやくたいもないツールならそれでも構わんが、rubyは言語だぞ?
OSとアプリケーションを支えるインフラなんだぞ?
俺もその辺は姑息な対応してるなと思う。
このスレに
>>601 がわかる香具師がまるでいない罠。
ていうかun.rbは?
個人的には groff -man みたいな UNIX 的なセンスに馴染みがあるので、
-r ubygems は割とすんなり受け入れられるんだけども。
オプション指定時の「-rubygems」のわかりやすさと、
エラー発生時の「No such file to load -- ubygems」のわかりにくさで、
トレードオフの問題なのかなあ。
roffなんて1960年代、まだメモリがビットいくらだった時代の産物だぞ。
んな昔の慣習を真似すんなよ。そういうのが良いと思ってるんなら別だが。
>>608 そういうのが良いと思ってるからやっているわけだが?
明示的でないエラーを返すコンベンション。センス悪いよ。
gcc -libertyのibertyライブラリとかもあるね。
gem作ってるやつらのセンスが悪いのは
もっと他のところで責められるべきだと思う。
現在勉強中なのですが、良いone-liner集みたいなページありますか?
>>614 勉強中ならone-linerではない普通のプログラムで勉強したら?
うるせーヴォケ
>615
614は「one-liner」の勉強中に500ルピー。
Windowsでhtmlファイルをデフォルトに指定されているブラウザーから開くにはどうすればできますか?
>>618 Win32APIをrequireして、ShellExecuteを呼ぶとか
620 :
619:2005/03/30(水) 01:05:58
むー、タブブラウザに関連づけしているはずなのにIEで開いてしまうな・・・
require 'Win32API'
SW_SHOW = 5
def shell_execute_open(file = nil, parameters = nil, directory = nil, showcmd = SW_SHOW)
shell_exec = Win32API.new('shell32', 'ShellExecute', %w(p p p p p i), 'i')
shell_exec.call(nil, 'open', file.to_s, parameters.to_s, directory.to_s, showcmd)
end
shell_execute_open("./index.html")
621 :
614:2005/03/30(水) 01:14:57
>>615 616は私ではないです。
言葉足らずで申し訳ないです。Cでは大袈裟な規模のものはシェルスクリプトとかで
書くんですが、Rubyも面白そうなので始めてみようかとした際に、普段gawkなんかで
書いてる一行処理がRubyでもっとエレガントに書けるのかなと思ったのです。
そこでそういった「Ruby小技集」みたいのないかなー、と・・・
ひょっとすると、one-linerってこういう意味ではないのでしょうか?
>>620 'open'を0だかnilにしてみたら。
>>621 いや、そういう意味でいいと思うよ、one-linerは。
でも、one-linerは、俳句みたいなもので、世界全体を一瞬で切り取った上で
その真髄だけを一編にまとめる芸術なわけだから、世界全体を把握する能力が
ないとちんぷんかんぷんになる。
きっと
>>615が言ってるのはそういうことだろう。
で、one-linerを集めたページだけど、見当たらないんだよなあ、これが。
もちろん、いろんなページでone-linerを見かけたりはするんだけどね。
The RWikiあたりで探してみるのはどうかな。
>>623 なるほど、理解致しました。単なる実用以上の「内匠の術」というニュアンスのが強いんですね。
RWikiを覗きつつ、通常技を修行して腕を磨くこととします。
お返事ありがとうございました
>>624 いやー、単なる実用のやっつけ仕事であることも多いんだけどね。
ただ、短いから簡単ということはなくて、短いからこそ高度な技であることも
多いよ、ということでひとつ。
もうだめぽ・・ SAKURAのコントロールパネルなんだけども
これでログイン出来ないのは何が悪いのか教えてぽorz
SSLじゃない普通のPOSTでクッキー使ったセッションのログイン(hikiの管理ページとか)は出来てるのに・・
これで二日くらいつぶれてるぽorz
$KCODE = 'e'
require 'http-access2'
require 'cgi'
id = ""
pw = ""
h = HTTPAccess2::Client.new
h.set_cookie_store("cookie.dat")
h.ssl_config.set_trust_ca('verisign-all.pem')
h.ssl_config.verify_depth = 4
uri = "
https://secure.sakura.ad.jp/member/"
q = {}
q['id'] = CGI::escape(id)
q['pw'] = CGI::escape(pw)
q['level'] = '3'
q['url'] = ''
res = ""
res = h.post(uri, q)
h.save_cookie_store
print res.header.dump
print "===\n"
print res.body.content
>>626 調べてやるからIDとパスワードよろ。
まあ、あれだ。出来ないことはやらない、でよくね?
そんな事で2日もつぶしてるってことは、
別にスクリプトで回さなきゃいけないほど忙がしいわけじゃないんだろ。
手作業でやりゃいいじゃん。
628 :
626:2005/03/31(木) 02:32:58
>>627 ようするに、DDNSのIP設定ツールのような感じで
SAKURAで管理しているgTLDのサブドメインに自宅設定したいんだよね
ゾーン設定を自動でやるためにログインが必要なんだけど
ログインフォームにPOSTしてもまたログインフォームが出てくるorz
ブラウザでログインしたクッキーを使って自前でcookie.datをでっち上げてやれば
一応先に進むことは出来るんだけど、それじゃなぁ・・・orz
REXMLでDOMプログラミングしようとしたんだけど、REXMLってDOMじゃなくない?
>>629 そもそも REXML が DOM って誰が言ってるの?
ドム>>>>>>>>>>グフ>>>>>>>ザク
Ω「ああっ、俺を踏み台(ry」 Ω「ザクとは違(ry」 Ω「連邦の(ry」
RubyOnRails の記事、今回が一番役に立った。
近所のドムドムは数年前にウェンディーズに変わってますが、何か?
今日 cvs update してみたら、なんか面白そうなのがいろいろ追加されてた。
635 :
デフォルトの名無しさん:2005/04/02(土) 17:30:29
Cのincludeみたいにファイルを分割する方法と取り込む方法を
教えてください!!
636 :
デフォルトの名無しさん:2005/04/02(土) 17:34:53
教えてください!!
open(file, "r"){|f|
f.each{|x|
exec(x)
}
}
配列のイテレータのなかで、その配列自体にプッシュしつつ、
その付け加えられた要素も評価してみました。
p ar = [1,2,3]
ar.each{ |i|
if i==2 then ar << 4 end
if i==4 then ar << 5 end
}
p ar
ここで each や collect/map を使うと ar = [1,2,3,4,5] となり
collect!/map! では、配列が変になってしまいました。
非破壊/破壊的メソッドとして、こうした挙動でいいのでしょうか?
あんたcollect!/map!の意味わかってるか?
ar.map! { |i|
if i == 2 then ar << 4 end
if i == 4 then ar << 5 end
i
}
なら期待通りになると思うよ。
641 :
639:2005/04/03(日) 05:49:12
>>640 さん
あっ、そうか。
返す値が、要素を置き換えるかどうか、の話なんですね。
勉強になりました。感謝。
642 :
デフォルトの名無しさん:2005/04/03(日) 15:06:56
2chで嫌な使い方されそうなサービスだな・・・
みんな開発環境は何使ってるの?
Windows + xyzzy + cygwin な俺は既に負けですかね
またアンケートの時間でつか?
Windows + xyzzy + VC++6
主にWindows + NoEditor。Rubyは1.8.2(mswin32)
Windows + VC7 + メモ帳 勝ち組み
>648
RubyってVCでも開発できるの?
>>651 mswin32版。人によってはmswince版。
eclipse流用のひよこ組
Debian(coLinux) + xyzzy。
RoRをDebian/sargeに入れようとしてるんだけど
Debianのrubyパッケージがごちゃごちゃしててうまく入らない。
誰かうまくいった人いるかな。
RoRもDebianのパッケージにしてくれればいいのになー。
Windows + xyzzy + mswin (One-Click Ruby Installer上書き)
rubyでできたエディタ欲しいなぁ。
xyzzyはソース無いからいじくれないし……
>654
gemは使えないの?
>>651 プロジェクト管理・ソース管理・ソース編集にVisualStudio使うのは普通にできるよ。
実行は標準入力がないものなら外部ツールとして実行して出力結果を下のペインに出せるし
標準入力が必要なら外部ツールとしてコマンドプロンプトで実行もできる。
>657
絶対わからんよ……
あと、ライセンスがどうなっているのかわからんから、何にもできないね。
#怖いのでろくにソース読んでないけど
rubyを組み込んだエディタということなら、vimもあるしなあ。
xyzzyのソースのURLって直接貼るのは遠慮してほしいなーと言ってたような。
エディタとか以前に、安定してて普及しててそれなりにサポートされてて
windowsで動いてrubyらしく使えるGUIライブラリを切望。
作者によると、迎合するくらいなら人気なくてもいいらしいな
rubyで統合GUIってだけでIPA採択されそうだな
金はもらうが、例によってマニュアルはなしだな
>>654 apt-get install rails
でダメ? sid ならこれで入るけど……。
FreeBSD ports に rails まだー?
>>668 pkg_delete で問題にならない? ports の作り方わかんないのでそのへんが心配で。
FedoraCore3の開発ツールのデフォルトの設定で
Rubyのチェックがはずされている件について
>pkg_delete で問題にならない?
scriptでgem -deleteすればいいんじゃない。
>>671 むむ、 script がよくわかってないです。
port の作り方を勉強して出直して来ます。
普通に
portinstall devel/ruby-gems
gem install rails
でいいんでないの?
railsとはどんなものなのか1行から3行程度で説明してくさい
線路です。
いじわるね
「Webアプリのめんどくさいことを抽象化しました」
使えないけどとりあえずクラスにしてみました
お前の尺度で考えたらあかんよ
680 :
デフォルトの名無しさん:2005/04/06(水) 23:13:51
matz氏の言うmethod_missingプログラムと、
KernelをincludeしないObjectクラスを作ることって、
直接的に関係あります??
そんなクラス作ったからって、method_missingプログラムがやりやすくなるのかなぁ。
誰か教えて。
>680
例えば、『equal?というメソッドを呼び出したときもmethod_missingを
実行したい』とかを考えてみればよろし。
Objectを使用すると、すでに定義済のメソッドをさらにoverrideしなきゃ
いかんから面倒なんでしょ。
#たかがそれだけ、と言えるかもしれんが……
682 :
デフォルトの名無しさん:2005/04/07(木) 00:28:12
>>683 ものすごい勢いで世界中からツッコミが入っている件について
Kernelで定義済みのメソッドを取り消すモジュール作れば良いんじゃないの?
>>662 WindowsだけでいいならApollo使え
Delphi嫌いだからRuby始めたのに・・・
指定したディレクトリ以下のサブディレクトリを巡回するのってどうすればいいですか?
再帰
find.rb
巡回もなにも、Dir.glob('n/**/*') { |f| } でいいじゃん
"Vanilla" つーのはどのへん由来なの?
> vanilla [アメリカにおけるアイスクリームのデフォルト風味から]
> adj. 通常の風味(flavor)の。標準の。
『ハッカーズ大辞典』より。
「何も入ってない」とか「いろんな物を付け加ける前の状態」いう意味で
よく使われる気がする
>>694 おお、サンクス。 Jargon に載ってたのね。
真っ先に調べろよ。>自分
naidbs
>>696 思いついても投稿するほどのものではない、とだいたいの奴がすぐにやめる一例
Vanilla はたぶん Flavor からだろう。
Flavor は Lisp の一種で、Mix-in を最初に実装した言語。
そのルートクラスが Vanilla
JoJoか?
誰か「太一」の英訳をcontributeしてくれまいか
一単語にならんかな?
Big One
DAO
なんとなくそんな予感がしてたけど akr さんのでしたか。
>>704みたいに即レスしてる人はこのスレずっと見張ってるの?
このスレに住んでいる妖精さんです
project-name project-name
すればわかるよ!
と書こうと思ったのに、そんな風に即レスされると書けないじゃないか!
鼻よりruby
>711
誰も突っ込まなかったけど、MoinMoin使っているんだよね……
713 :
デフォルトの名無しさん:2005/04/10(日) 02:15:47
>>276 亀レスだが、イイ方法思いついたので書いてみる。
#1.6とかの古いRubyだと動かないので注意。
def foo(ary, n=2)
Array.new(ary.size/n){
Array.new(n){ ary.shift }
}
end
p(foo([0,1,2,3,4,5])) #=> [[0,1],[2,3],[4,5]]
p(foo([0,1,2,3,4,5],3)) #=> [[0,1,2],[3,4,5]]
715 :
デフォルトの名無しさん:2005/04/10(日) 03:39:52
RUBYYYYYYYYYYYYYYYYYYYYYY
716 :
デフォルトの名無しさん:2005/04/10(日) 06:01:39
ここで聞いていいのかわからないけど、
RSSをメールで送信するようなサンプルってどこかに無いですか?
探してみたけどPerlのしか見つからない…
うわー……
Rubyって商標とか取ってなかったっけ?
後出しのIntelからいちゃもん付けられそうで嫌だなぁ……
>>719 ソフトウェアとハードウェアだと分野(?)が違うから、とか?
複数の分野で取ってるんですかね?
たぶんIntelの嫌がらせ
うわー……
Rubyで商標取れるわけないだろ……
多くの分野に渡って商標を取る事はできるけど、
「Ruby」の場合普通名詞だし、他分野に対する商標は無理じゃないのか?
つうか、IntelがRubyって名前を使っても別にデメリットは無いだろ。
Intelが大ゴケして「Ruby」って名前にネガティブイメージが付かない限りw
君のような人を見ると、近年の中学生の語学力低下は本当に目に余るものがあると思うようになりますね。
あと君。自分でスレチガイだから終了だの、あいてもスレチガイだから終了だのほざいておきながら
やっぱり終了せずに書くのは何故なのかね。
あれかね、反論されると悔しいから、最後に発言するのは自分じゃないと気がすまないタイプの人なのかね。(苦笑
ああ、図星を指されたからといって「お前だってそうだろ」的な小学生の水掛け論みたいな返答はよこさなくて
いいです。それこそ馬鹿馬鹿しいですからw
まあ「窓」をあらわす普通名詞の複数形は商標とれるんだけどね。
Word という名前には震撼した
ヲタってこういううんこみたいなネタが大好きだよね
企業の基幹部分を担う開発部門にとって、重要なプロジェクト
にも安心して使える言語はわずかしかない。C#とJavaとXML
とSQL、他にもう1〜2の言語だけというのが一般的だ。この点
で言えば、従来、Pythonは「テスト」もしくは「オモチャ」用の
言語として一括りにされてきた。しかし、今回のカンファレンス
の講演は、しばしば、そうした評価を覆すものだった。
そうした講演の中で最も象徴的なのは、カンファレンスの冒頭
に置かれたMicrosoft Common Language Runtimeチ
ームの技術者Jim Huguninによる基調講演だろう。講演で
は、Pythonの.NET完全対応版リリース0.7が発表されただ
けでなく、Pythonに関する Microsoftのビジョンも明らか
にされた。それによると、基本的に、IronPythonプロジェクト
が完了すれば、Pythonは.NET開発で一般に使われているC#
などの言語を補足し生産性を高めるために使われるだろうと M
icrosoftは見ているという。実際、各種の講演では、一般的
な言語に比べてPythonを使えばコーディング時間が半減す
ることを示す実験や事例が紹介されていた。
Microsoftは、開発者にPythonを含むパッケージを提供し
たいと考えているようだ。.NETインフラストラクチャを補強し、
しかも従来のライブラリやデバッグ・ツールが使えるものが欲し
い。そこで目を付けたのが、使いやすく保守もしやすく、手早く
プログラミングができる言語だったのだ。
IronPythonはShared Source Licenseになってしまったのが残念。
prefixはドライブレター禁止。
コンパイルしてるところと別のドライブにインストールしたいときはどうすれば?
matzが事あるごとにPythonを執拗に攻撃してるけど
結局世間の関心は(俺基準による)文法の完成度にはなかったって事だな。
それを理解できる脳がないから宗教なんかに入っているんだと思うよ
宗教の話は宗教論争になるぞ
>>733 確かに「俺基準」だよなあ。
どこがきれいなのかさっぱりわからん。
特に読む方は最悪だと思う。
大規模プロジェクトではまず使えない。
>特に読む方は最悪だと思う。
そりゃPerl.succですから。
>>738 お前も「俺基準」でそう判断してるんだから、人のこと言えないって気付こうね。
>>733 何が「結局」なん?話が飛んでるな。大丈夫?
松本さん、どうして2chだとそんなに口調が変わるんですか?
ダンプ松本
角田も見てるくらいだから、ダンプ松本も見てないとはいいきれんな。
ダンプ松本とならセックスできる。
よって俺基準ではダンプ松本>>>>>>>Matz
正直
>>744 を尊敬する。
漏れには無理だ。立たん。
童貞は女ならなんでもいいと思うからねぇ。
>>743 見てたとしても、速攻読み飛ばされてるだろうな。どうでもいいので。
松本さん、毎日巡回ご苦労様です。
matzが2チャンネラーってのは本人が言ってなかったっけ?
>>731 「Postfixでラブレター禁止」
に見えた。
PostItでラブレター禁止
なんにせよラブレター禁止
モジュールなどのパッケージアーカイブ作成の、最近のトレンドってなんでしょうか?
現在は setup.rb を使っているのですが、
make install 前に make test で Test::Unit するようにしようと思ったとき、
ファイル・ディレクトリ構成など、みんなふつーどうやってるのかなと思った次第。
恋文と言え、恋文と
「職場での繁殖行為禁止」
in 白夜書房の編集部
RailsってTMailを含んでいるから、
ActionMailerはLGPLなんだよね?
サービスを提供するだけなら、
「今の」LGPLならソースを渡す必要性は無いんだけど、
ちょっと気になった。
教えてエロイ人。
今日はmatzさん来ないねぇ。
スクリプトのある場所のフルパスを得るにはどうすればいいんですか?
$0
>> 761 >> 763
少なくともcygwin上だとどちらも相対パスになってしまうんですが…
じゃあ絶対パスに展開すればいいじゃん
File.expand_path
__FILE__や$0は呼ばれ方に依存する。絶対パスで指定して実行すれば絶対パス
になるし、相対パスで指定して実行すれば相対パスになる。
うへ、踏んじまった。
ま、面白そうだから請求が来るのを楽しみに待つか。
[ruby-list:40779] [ANN] Exerb 3.3.0-preview1
yuyaさん乙。ずーっと待ってました。
gem installしたpostgresライブラリがDBIで認識されないらしく、エラーになります。
うまくいってる人いますか?
詳しく説明すると、
gem install --remote postgres
してから
require 'dbi'
dbh = DBI::connect("DBI:Pg:test", "username", "password")
すると
/usr/lib/site_ruby/1.8/dbi/dbi.rb:490:in `load_driver': is not a class/module (
TypeError)
from /usr/lib/site_ruby/1.8/dbi/dbi.rb:392:in `_get_full_driver'
from /usr/lib/site_ruby/1.8/dbi/dbi.rb:372:in `connect'
というエラーがでます。
しかしgem installではなく、ruby extconf.rb; make; make install した場合はうまく動作します。
gem installしたpostgresをDBIでも使うにはどうしたらいいのでしょうか。
connectの引数を"DBI:Pg:test"じゃなくて"DBI:pg:test"にしてみたら?
load_driverは、最初に"DBD/#{driver_name}/#{driver_name}"をrequireして
みて、失敗したら$:を順に"DBD/#{driver_name.downcase}"というディレクト
リを探していくようだ。一方gemでインストールされたライブラリはちょっと
特殊なところに置かれるから、$:からは探せない。
ということで、おそらく最初からdowncaseしたドライバ名を使えばいいのでは
ないかと。
-talkのあのバカ騒ぎは一体なんでつか?
発端は[ruby-talk:136898]あたりかなぁ?
最初は「ri Classで出てくる図はおかしい」という指摘をしてたんだけど、
どっからああなったのやら。よく分からん。
metaobj = class << Object; self; end
p Object < metaobj # => false
p metaobj === Object # => true
p metaobj < Class # => true
たしかに、Object---->(Object)は継承関係じゃなくてインスタンスだ、って
のはあってるんだけど。
事情をよく理解してないけど、その挙動とあの図はどこか矛盾してる?
あと、Iliasって人は有名な熱狂的Smalltalkerか、それともただの電波?
いや、metaclassがclassのインスタンスであると認めたくないのかなと思って。
熱狂的な電波。
777 (*^ー゚)b
あるライブラリhogehoge.rbがインストールされているディレクトリを調べる
調べてください。
>>775 > 事情をよく理解してないけど、その挙動とあの図はどこか矛盾してる?
「矢印は継承関係を表す」って書いてあるのが合ってない。だから
[ruby-talk:139216]では「縦の矢印」と書き加える、という話になってるんだ
けど。
でも「metaclassはオブジェクトじゃない」という主張は根拠も論旨もサパー
リ理解不能。
>>778 "hogehoge.rb"なら下記のような方法でも。
"hogehoge.so"には対応してませんが。
> def print_library_path( file_name )
> $LOAD_PATH.each do | x |
> path = x + '/' + file_name
> puts( path ) if File.exist?( path )
> end
> end
>
> print_library_path( 'cgi.rb' )
#! /usr/bin/ruby
require 'English'
require 'rbconfig'
def File.absolute?(path)
expand_path(path) == path
end
class << $:
DLEXT = Config::CONFIG["DLEXT"]
e = Config::CONFIG["DLEXT2"]
DLEXTs = [DLEXT]
unless e.empty?
DLEXT2 = e
DLEXTs << DLEXT2
end
EXTs = ['rb'] + DLEXTs
dlexts = DLEXTs.grep(/\A(?!s?o\z)/){|e|Regexp.quote(e)}.join('|')
DLEXT_Pattern = %r"\.(?:s?o|#{dlexts})\z"
def loadable?(path, exts, all = false)
found = []
exts.each do |ext|
begin
s = File.stat(n = "#{path}.#{ext}")
if s.file? and s.readable?
found << n
break unless all
end
rescue
false
end
end
return *found
end
def feature_type(lib)
case lib
when /\.rb\z/
[$PREMATCH, ["rb"]]
when DLEXT_Pattern
[$PREMATCH, DLEXTs]
else
[lib, EXTs]
end
end
def find_first(lib)
feature, exts = feature_type(lib)
return loadable?(feature, exts) if File.absolute?(feature)
each do |path|
return path if path = loadable?(File.expand_path(feature, path), exts)
end
nil
end
def find_all(lib)
feature, exts = feature_type(lib)
return loadable?(feature, exts, true) if File.absolute?(feature)
list = map do |path|
path if path = loadable?(File.expand_path(feature, path), exts, true)
end
list.compact!
list unless list.empty?
end
def find(*libs)
libs.collect(&method(:find_first))
end
end
if __FILE__ == $0
require 'optparse'
cmd = :find
opt = nil
ARGV.options do |opt|
opt.banner << " lib..."
opt.on("-a", "--all") {cmd = :find_all}
opt.parse!
end or abort(opt)
puts $:.send(cmd, *ARGV)
end
No, Thank YOU!
かっこよすぎ
文字入れるときとか、何かというと ' シングルクォーテーション使うの、もうやめないか?
ダブルクォートのほうが見やすいんだよ
RubyはDelphiのパクリ言語だからシングルクォートが本流なのは間違いない。
世間の標準はダブルクォートだし、
もう世間様に合わせる社会性ある言語になると腹をくくってるんだから、
もうダブルクォートでいいんだよ
シングルクォートはその必要があるときだけ使おう
世間の標準はPy(ry
RubyはSmalltalkの(ry
なんとなくbegin endと{}の話題に近いな。
へいわだねぇ…。
~~
旦
すなこん
なんか「Rubyでつくる人工無脳」って本が出てたけど、
読んだ人どう?面白かった?
大変だ!perlという言語を使ってみたのだが
Rubyよりもめちゃくちゃ使いやすい!
こんな素晴らしい言語があったのかと感動した。
Rubyの開発者が言語のスタイルについて色々言っていたけど
それを具現化した物はRubyじゃなくて、
perlだと思えるようになってきたよ。
そりゃだいへんだ
>>796 人口無能には興味ないんだが一時期の関連本の出版ブームよりはよっぽど面白そうだな。
(たまたま)Rubyを使った〜本が増えればいいんだけど
Rubyでクイックソートしてみるアルゴリズム本なんて需要はないですかそうですか。
>>796 ttp://www.kakutani.com/20050430.html#p01 >カバーが「Ruby?」となっていてステキだ。プログラムにさほど親しんでいない人向けに、
>人工無脳をつくる「手段」としてRubyを紹介。あくまでRubyも手段でしかないので、
>記述は簡潔だけれど、本文だけでなくコラムでのフォローもポイントが押さえてあって
>わかりやすい。本文にもさりげなく遊びゴコロがまぶしてあって、バランス感覚を感じる。
>単純なテキストベースのものからGUI、応答のバリエーションと続き、最後はSOAPでググる、
>という展開も自然で興味深く、オブジェクト設計についても、専門用語は一切でてこないけれど、
>SRP(単一責任原則)やOCP(開放/閉鎖原則)を満たすような誘導がしてある。素晴らしい。
絶賛だな。
Rubyのブロックって、いわゆるクロージャだと思うのですが、
なぜクロージャと呼ばずブロックと呼ぶのでしょうか。
'{'と'}'で囲っているからといわれればそれまでなんですが、
あきらかにCやJavaのブロックとは違うし紛らわしいので、
なぜクロージャと呼ばないのか不思議です。
Rubyとは間接的にしか関係ないとは思うのですが、wema で一般の人がwema.confにアクセスできないようにするには
どう設定すればいいのでしょうか?
素のままだと、パスワードなども丸見えなので。
ここをWWWから見えない位置にする
component/ConfigPage/ConfigPage.rb: File.open('./wema.conf','w'){|f|
lib/wemaapp.rb: File.open('wema.conf','r'){|f|
一行にいつくかのアイテムが空白でくぎられてあるファイルの、
たとえば、第一列目を抜き出すにはどうしたらいいんでしょう?
いまは、正規表現にマッチさせて、グルーピングさせてから、参照してます。
awk 見たいに、 $1 みたいな感じな方法はないでしょうか??
一列目や最終列なら、^ や $ が使えるのでタイプ量はすくないけど、
他のところだと、タイプするのがだるい。。。
普通に split[0] とか?
807 :
805:2005/05/04(水) 00:34:29
そうだよね。split があるよね。
頭が腐ってる。。。もうだめだよ、ままん。
ありがとう。
808 :
デフォルトの名無しさん:2005/05/04(水) 00:47:41
railsで使われてる、ActiveRecordって、単体でも使えるんですよね。
この場合って、データベースの設定ファイルはどこに書けばいいんでしょうか??
809 :
808:2005/05/04(水) 01:33:39
単にDQN同士でちちくりあってるだけのように見えるが
どこに blade の話題が載ってるの?
MLのログつながりだろ。仮に裁判やっても負けるとは思えないが。
あぁ、そういう話ですか。
というか、 ruby-* の場合、
ML 案内ページにも過去メール参照ページが紹介されてるわけですから、
ML に登録した時点でログ公開に同意したと思って良いと思いますが。
後付けでログ参照ページを設置する場合は揉めるケースもよくあるようですが。
815 :
デフォルトの名無しさん:2005/05/04(水) 10:13:15
>しかしながら、メーリングリストに投稿したメールにメールアドレスが掲載されており、
>削除しなければ個人情報保護を元に訴えるという旨のメールが来ました。
bladeの存続はMWタソの気分次第ってことかー
816 :
デフォルトの名無しさん:2005/05/04(水) 13:45:51
One-Click Ruby Installer for Windowsの日本語特化バージョン
はどっかでダウンロードできませんかね。
即hiki使えるのが魅力。
818 :
801:2005/05/05(木) 22:04:55
>>802 いみがわかんないんだけど、smalltalkでブロックと呼んでいるから、ということでしょうか。
ブロックは 1 メソッドコールに 1 個までだったり、
引数のスコープが怪しかったりするし、
大体表記的に first class とはいいにくいと思う。
あえていうなら closure なのは Proc だろう。
そして手続き型言語の Ruby としては
Closure より Proc のほうがしっくりくる (主観)
どこかで「呼び出しメソッドを自由に設定できるProc」というのを見たことある気がするんだが
誰か知らないか?
[ruby-dev:24302]
[ruby-dev:25772]の方がかっちょええよ
823 :
& ◆XV7or8STL2 :2005/05/07(土) 14:45:59
いま、rails 勉強中で、まだインストールもしていない状況なんですが
railsとamrita2って、そのままで連携できるんでしょうか??
Googleして、メーリングリストを見たりしてると、
rails-amrita2 bridgeのパッチを当てないといけないようにも、
あてなくてもいいようにも見えるんですが、
パッチは必要でしょうか??
0.11.1からbridge取り込まれたんじゃなかったっけ?
対応しているテンプレートはAmrita2とKwartz、SikiTemplate
かしらん?他には?
825 :
823:2005/05/08(日) 01:04:29
>>824 でも、Viewに何使うかって、どこで指定するんでしょう。。
いきなり、Amritaのtemplateファイルがviewディレクトリに置かれていても
ERBファイルとして認識してエラー出すだけのような気がするのですが。。
あと、script/generate amrita_scaffold Recipe とかあると便利なんだけどなぁ。
>>825 > script/generate amrita_scaffold Recipe
なにそれ
それと別に、
ERBでいいじゃんと思うのが一つ
テンプレートなんつーものは発展途上だし、
オブジェクトとページのマッピングなんて、かっこつけんな、とも思う
手軽に定義できるスクリプト言語であれば、例えばJavaやC#よりは、
ページとオブジェクトのマッピングしやすい面はあると思うけど
828 :
823:2005/05/08(日) 02:21:10
>>826 Railsやったことあります??
Railsって、データベースをCRUDするための画面
(ActiveRecord::Baseクラスに対してCRUDするための画面)を
script/generate scaffold ってコマンドで自動生成してくれるんです。
でも、その画面って、当然ERBで書かれてるから、
せっかく、AmritaをRailsで使えるようにしてくれてるのなら、
script/generate amrita_scaffold なんてのもあれば、もっと楽できる気がした。
(自分で書いても、全然大した量じゃないんだけど。)
あと、
Amritaって、Amrita2で、かなり良くなってますよ。
ERBだと、GoLiveとかでデザインした後に、HTMLにコード書き込む必要あるけど、
Amrita2だと、その必要ないです。ホントに。
たしかに、僕のように、個人レベルならERBでもいいかもしれないけど、
Railsの目標とする使われ方だと、Amrita2の方が有利だと思うけど。
個人レベルでも、GoLive起動して、ちゃちゃっと修正してアップとかできると、かなり楽だと思う。
829 :
823:2005/05/08(日) 02:28:13
個人的なAmrita2の使い方というか、理解ですけど、
HTMLから、Rubyスクリプトを呼び出せるって感じで理解しています。
<div id="test"> </div>
だと、Presentaion Object(PO)のtestメソッドを呼び出せて
<div id="test2"><div id="test2_test"></div></div>
だと、Presentation Objectのtest2の指すオブジェクトのtest2_testメソッドが呼び出せるという風に。
これだと、GoLiveとかで、デザインができますよね。
831 :
823:2005/05/08(日) 02:37:31
832 :
の:2005/05/08(日) 03:03:23
>831
まあねぇ
ただ、
・Rubyの自然な表記( []演算子 )でテンプレートと対応付けしている。
・Controllerには対応付けのための最低限の情報(変数名/ラベル名……みたいなの)
しか入っていない
だから、自分としては妥協できる範囲だと思っています。
もともとControllerはModelとViewを制御するためのものだから、Viewのインターフェイス
(変数名)についての情報は持っているはずだし。
833 :
823:2005/05/08(日) 03:21:33
Railsが、configディレクトリ以下で使いたいTemplateエンジンを簡単に指定できるようにしてくれればいいのに。。
ちなみに、
http://amrita2.rubyforge.org/rails/todoapp1/ ↑ここを見ると、railsにパッチを当てるとamritaは
helperディレクトリにpresentationクラス
viewディレクトリにtemplateクラス
を、controllerに何も書かなくてもできます。
ぼくが聞きたかったのは、最新のrailsでは、こういうことがパッチ無しでできるのかということだったのですが、
どうも無理っぽいですね。。
パッチあてるのって、あんまり気持ちよくないんですね。。
「メーリス」って何?
テンプレートを使えばGoLiveでデザインできる みたいな話あるけど
それって幻想だと思うんだよね。
どうしたって、自前でのコーディングが絶対必要で、
GoLive使ってデザインするほうが反ってコストがかかったりする。
HTMLコードが崩れたり、どうしてもそうなる。
ならば、コーディングベースで効率のいい方法を考えたほうがいい。
ERBは多少はゴタゴタするけど、単純でいい。
テンプレートのライブラリは、どれも安定感は欠けるね、仕様的な。
まぁ、しばらくは試行錯誤が必要だ。
>>834 メーリングリストの略じゃないかな?初めて見ました。
個人的にはMLと表記する方がまだ分かりやすいような。
そもそも、"メーリングリスト"なら略す必要を感じないけど。
メリークリスマス
メーリスっていうML系言語の処理系を書いてますます事態を混沌とさせる人きぼん。
「メーリスってMLだよ」がわけわからなくなります。
つまんな〜い
ぐぐって高々 8,360 件を「普通」って言われてもなあ。
今は 12,700 件みたいだ。たった 30 分で 1.5 倍に増えたなw
メーリスという語感が気持ち悪い。
844 :
デフォルトの名無しさん:2005/05/08(日) 23:49:28
Rails + Amrita, Rails + XTemplate?
http://rails.yanime.org/rssfwd/preview?url=http://www.rubyweeklynews.org%2Findex.xml ↑ここに次のように書いてるんだけど
Greg McIntyre asked “Has anybody thought about putting Amrita/XTemplate support in Rails?”
Jeff Barczewski said that DHH had added templating support to Rails, based on work from Jamis Buck. (As far as he could recall.)
This provides hooks for invoking whatever templating engine you wish to use.
ここに書いてるhookってなんのことでしょうか??
どうやって使うか誰か教えてください。m(_ _)m
なんかrailsややこしいぞ。
845 :
デフォルトの名無しさん:2005/05/09(月) 00:00:16
846 :
デフォルトの名無しさん:2005/05/09(月) 00:12:01
リファレンスマニュアルがわかりづらい&読みづらいのは仕様ですか?
どう変えたら分かりやすい&読みやすいか例示希望
つ[MSDN]
微妙に「ある程度わかってんだろ」的な説明とかあるし(なんていうか端折りすぎ)、
「コード〜と同じ」とか、〜の部分の説明にリンク貼ってあればましだけどそれも無い
所もあるし飛んだ先もわかり辛いし。
854 :
デフォルトの名無しさん:2005/05/10(火) 01:05:55
>>852 わかりやすいねぇ〜。っていうか、ruby-lang.orgからのリンクもこれにしてくれればいいのに。
っていうかすべきだろ、おい。
論文が書き終わったっていうことは1.8.3に期待してもいいですか。
>>854 するとまた英語読めないとか暴れだす奴が出てくる。
RDoc ってわかりやすいかなあ?
>>854 その「わかりやすい」って言葉が曖昧でわかりづらい。
もうすこし何がどうわかりやすかったか教えてほしい。
お願いします。
英語で書いてあったのでわかりやすかったです。
結局、ドキュメントにいちゃもんつけてる奴らは、単に煽りたかっただけなのか。
そういうことしたいのですかに
こういうJavaのマニュアルのような癖だらけリンクだらけのマニュアルは
かえって目的の情報にたどり着きにくくて読みにくい。と思うのは俺だけじゃないはず
>>863 どのへんが「癖だらけ」?
というのを解説してくれると役立つのは俺だけじゃないはず
[ruby-list:40817]
Moonwolfたん出番でそ
MW!
>>864 いろいろあるけど一番嫌なのは、サンプルが載ってないから
必要なメソッドや関係するメソッドを見つけ出すのに謎のカンと経験が必要なこと。
そもそも文章で緻密に説明されるより、簡潔なサンプルをいくつか載せて
「ある程度わかってんだろ」的な説明をしてくれる方がありがたい。と思う派なので
>>869 あ、ほんとだ。思ったより悪くないかも?
現状に不満じゃないから乗り換える気はしないけどね。
RDocやJavaのマニュアルでもう一つ不満なのは、フレームの一覧表示。
クラス一覧に、添付ライブラリのクラスまで含めて
ABC順にずらっとクラス並べられると、なぜか読む気が減退する。
ライブラリ単位での一覧が欲しい。ファイル一覧なんていらないから。
そしてMSのHTMLHLEPにいきついた・・
>>71 検索機能もついてるしね。
UNIX の man と info はもういいよ…
普段 CUI で生活してるのですが w3m で RDoc は辛すぎます。
rdoc --one-fileでフレームなしにする事も出来るけど、
微妙だったような記憶がある。
RDocの call-seq: に書く -> の右側には戻り値を書くんだけど、
>>869を見てもarray だったりan_arrayだったり書き方が
定まっていないような気がする。
何かこう書くと良い、みたいな情報はありますか?
>>875 今よく読んでみたら
array ... selfと同じ意味
an_array ... 新たに生成されたarray
っぽいですね……orz。スレ汚し失礼しました。
>>873 普段CUIなら、ri使えばいいじゃない
riよりはデフォで日本語のrefe使う
質問です。
2つのシーケンスseq1, seq2 があって、seq1の各要素のうち、seq2に含まれていないものをリストで返すには
どうすれば出来るでしょうか?
たとえば
seq1 = [0,1,2,3,4]
seq2 = [1,2]
の場合
[0,3,4]
が求めるものです。
リファレンスを斜め読みしながら
seq1.select{ |x| seq2.all? {|y| y != x}}
見たいなのはかけたのですが、ruby ならもっと簡単にかけるのではないかと。
881 :
879:2005/05/11(水) 23:50:46
>>880 ありがと(はぁと
それにしても、めちゃくちゃ簡単ですね。
>>879 重複要素が全部消えるから注意な。
[0,0,1,1] - [1] #=> [0, 0]
"なんと、Rubyはダントツの一位。ま、しょせんお遊びだけど、それでも嬉しい。"
とか書いておきながら、Pythonが二位のことが他で使われると怒るmatz萌え。
matz日記ってFirefoxで表示するとおかしくない?
上の日にちへのリンクのチップヘルプが出るの遅いし
改行が変な文字コードで表示されるし。
IEだと普通に見られる。
信仰が足りません。
Stringクラスのself=~ otherって
>>正規表現 other とのマッチを行います。マッチが成功すればマッチした位置のインデックスを、そうでなければ nil を返します。
ってなってるけど、帰ってきたインデックスってどこを指してんの?マッチしたところの始めの文字?
後、インデックスの説明って何処にあんの?
>>886 マッチしたところの始めの文字。
インデックスの説明は String クラスの self[first..last] のところにある。
が、後方参照なので確かに不親切だな。
>>886 いままで何も気にせず括弧でくくって$1とか使ってた
サンキュー
891 :
デフォルトの名無しさん:2005/05/14(土) 00:42:40
Rite(Ruby2.1??)っていつでるんですか??
ロードマップってどこかにあるんですか??
892 :
日曜プログラマ:2005/05/14(土) 00:45:09
Testっていうのをやったことがなくて、
どういうものかも、どうやってするのかも知らないんですが、
なにかいいサイトありますか??
あと、もし良かったら、どういうことをテストするのか、
概念だけでも教えてもらえると嬉しいです。
unixのシェルと一緒でファイルがある、属性はどうかってのに使うんじゃね?
満員電車の中、吊革に手を通して立つ。
車窓越しに、暮れなずむ東京の空を飽かず眺める。
ふと、髪に重みがかかる。
目をおろすと、小さな女の子が、精一杯手を伸ばして、エルルゥの輪につかまっている。
それだけでなく、立つのに疲れたのだろう、こっくりこっくりと船をこぎはじめた。
エルルゥはかわいそうに思って女の子を抱き上げてやる。
辺境の女は子守など苦労のうちに入らない。
あまり大柄でない彼女がそうするのを見て、前のサラリーマンが席を譲ってくれた。
女の子を膝に載せ、抱きしめるようにしながらエルルゥも眠る。
東京は大きい。東京は迷う。東京は何もかも疲れることばかり。
かたんことんと規則正しい音に包まれ眠る。
駅の名が彼女を起こすまで眠る。
おやすみ。
>>891 明確な日付は明言されていないと思うけど、どうでしたっけ?
ロードマップも同じく。
>>892-893 Test::Unit? FileTest?
>>894 Ruby Foundationを作るのが先かも。
898 :
892:2005/05/14(土) 01:30:13
Test::Unitのことです。
Railsはじめたんですけど、Railsって、Testできるのが利点のようなのですが、
普通のプログラムでもTestってやったことがなくて、
全然理解できないです。
それで、普通のプログラムにおけるTestから勉強しようと思ってます。
>>897のRubyUnitを勉強する方針でいいでしょうか??
時間はやってきた。
彼は、流れ出る人波に押されつつも、最後まで彼女を見ていた。
「また、逢えるといいですね」
ホームに響き渡るベルの中で、彼はその声を聞き逃さなかった。
ドアが閉まり、電車はゆっくりと動いていった。
彼は電車が見えなくなるまで、ずっと眺めていた。
長い、長い一日が、今日からまた始まろうとしている。
●戦中戦後の世代(〜1935)
戦争を経験し日本を見事復興させ今の日本経済を作り上げた最強の世代
戦国時代の武将なみのレベルの高さで感服。一部勘違いあり。
●団塊世代(1945〜1949)
自分達が日本を作り上げたと思ってる"超"勘違い世代。 お前らが作ったのは借金。キチガイ多し。
戦中戦後の世代への反発で左全開。行動力や根性は多少は持ち合わせているがたいした事は無い。
唯一評価できるのは繁殖力の高さ。ただしあまりにも高すぎて未だにエロイ事件を起こすのもこの世代。
日本を滅ぼそうと密かにたくらんでいる。もういいから早く団体で中央線にダイブして欲しい。
●バブル世代(1960〜1969)
未だにバブルもう一回とか言ってるバカや、バブル後の脱力感で魂まで抜けた奴が多く基本的に左率高め。
未だに金銭感覚が狂ってるため消費率は高めなのが救いだがほとんどは無能。企業内でがん細胞化している世代
●団塊Jr(1970〜1974)
親世代の団塊に反発 戦後世代の爺さんに無条件で可愛がられ内緒で小遣いを貰いリアル昔話を
聞かされるなど隔世遺伝で右全開。ただし世代人口が一番多いにもかかわらず出生率を下げていたりと、
繁殖力は極めて低い。団塊の付けを一手に引き受けているのもこの世代。100年後の日本史には悲惨な世代として登場予定
●無味無臭世代(1975〜1979)
いたの?
●無気力世代(1980〜1984)
あきらめモード全開。やる気ナッシング。パラサイト多すぎ。 気持ちはわかるが、仕事しろよと。
愚痴らせたり文句言わせたりすると最強な所や、他人に頼りまくるところは団塊そっくり。
近親憎悪なのか団塊への反感で右率高めというかめんどくさいので右。
●DQN世代(1985〜1995)
セックルセックル!小学生のうちから無駄なセックスしすぎ。おまえら大丈夫かよマジで?あんま期待して無いけど頑張って。
●日本終焉を見守る世代(1996〜)
戦後動き出した日本の鼓動がゆっくりと止まるのを見守ることになる世代。彼らの未来は暗く冷たい。
waros
>●無味無臭世代(1975〜1979)
(・c_・`)ソッカー
>>903 自分主義の世代だから、他者から認識され辛いんだろうね
DQN世代なのに童貞な人はどうすれば良いですか?
1950〜1959はどんなん?
Rubyのスコープが分かりづれえよう。
Perl5みたいに myと { } でスコープ一目瞭然仕様が欲しいよ
なんとかしてくれmatzやん。
スコープは気にしない。変数とメソッドの区別もしたくないし。
だってほら、結局ローカル変数しか使わないじゃん。
先頭は小文字ばっかりじゃん。
頭に$なんて誰も使わないじゃん。
頭に&があると関数とかいう方がよっぽど便利じゃん。
s='yo! '
3.times do
print(s = 'ho! ')
end
外側の変数が優先されるルールって風変わりだと思うんですが
なんでこうなってるんでしょ?
教えてエロい人。
>>910=908?
わけわからん
つか、俺は Ruby のスコープも一目瞭然なんだけど
インスタンス変数も定数も使いまくるし
釣りやチラシの裏なら自宅のトイレでお願いします
その例では何が言いたいのかわからん。
>>911 どういうこと?
# => ho! ho! ho!
ブロック内部の値が出力されるけど?
915 :
911:2005/05/15(日) 12:57:44
C言語だと、同名のグローバル変数とブロック内ローカル変数が宣言されている場合
ブロック内では後者が優先されますよね?
だからRubyを始めたときには、
>>911の例だと'yo! yo! yo!'と
出力されないことに違和感がありました。
定義とか宣言とかは、最も内側のものが優先される傾向があると思うんですが
上の例はどうしてそうなっていないのかな…と。
916 :
911:2005/05/15(日) 13:00:18
うわ!すごい勘違いをしてるみたいです。
忘れてください。失礼しました。
917 :
911:2005/05/15(日) 13:14:06
連投すみません。次のような場合を考えていました。
s='yo!'
1.times do
puts(s = 'ho!')
end
puts s
>>915に書いた理由で、2回目のputsで'yo!'とならないことに
違和感があると思ったんです。
int s = 0;
for(int i = 0; i < 1; i++) {
printf("%d\n", s = 1);
}
printf("%d\n", s);
たまにRubyのスコープについてよく分からないと言う人がいますが
これは「Rubyはグローバル変数のみ使える」という仕様を知らないための
勘違いが原因だと思われます。
そもそもRubyにはローカル変数は実装されていません。
分かりやすさを追求するRubyの変数は全てグローバルです。
その昔、Ruby1.0がリリースされたとき、変数に$をつけないと
場合により値が参照できなくなるというバグが存在しました。
しかしこれを応用してグローバル変数でローカル変数を実現するRubyistが増えたため
バージョン1.3でこのバグを正式な仕様としました。
このような経緯があるため、Rubyにはローカル変数があるという誤解が広まったのですが
基本的にRubyはグローバル変数onlyの言語です。
しらじらしい大嘘つく奴がいますな。
なかなか書けないネタだ。
ruby-coreのIlias見ててMWを思い出しちゃったよ。
へー
1.8.3って何か大きな変化ある?
>>917 CやJavaと違って、Rubyではローカル変数を明示的に宣言することができません。
そのため、>917 の例でいえば
s='yo!'
1.times do
puts(s = 'ho!')
end
puts s
「s='ho!'」の変数sがブロック内だけのローカル変数であることを指定することができません。
Cでも、ブロック内での変数宣言がなければRubyと同じようなスコープになります。
char *s = "yo!";
for(int i = 0; i < 1; i++) {
char *s; /* ← これがなければ、ブロックローカルにはならない */
s = "ho!";
}
という説明でどうでしょう?
>>911
926 :
925:2005/05/15(日) 22:01:49
ちなみに919ではありません。
読むに、ブロックパラメータ直後に `;' を付けたものが、
ブロックローカル変数になるんじゃまいか?
読んだけど、外側の変数と名前が重複するとエラーになるのだから
これはローカル変数の宣言とは、また違う物でしょう。
変数の前方宣言みたいな物だと考えたほうが良いのでは?
>>929 確かにローカル変数ではないっぽいけど、
何にどう使う物なのかさっぱりわからない…。
s = nil # <- 適当な代入による変数宣言
ary.each { |x| s = x if ... }
p s
が
1.times do |; s|
ary.each { |x| s = x if ... }
p s
end
みたいに書ける…?
ブロックの仮引数のところでしか使えないんじゃ
全然嬉しくないよな、これ…。やっぱり勘違いしてるかな。
>>929 俺も前方、ブロック突入時の変数宣言のようなものという印象を受けた
[[1,2],[2,3],[3,4]].each {|a,b; c=0|
c+=a*b
p c
}
これ使い方あってる?
;以降のって何度も評価されるのかそれとも最初の一回だけなのか
毎回評価するんじゃないかな。
最初の一回だけならeachの直前でc=0すればいいと思う。
いやそれじゃスコープの問題が元に戻るのでは
その表記で最初の一回だけ評価ってすごく直感に反するのは俺だけ?
そもそもいまいち用途がわからん。
スコープっつっても、外に同じ名前の変数があったら
エラーにするだけなんでしょ。なんでα変換しないんだろう。
従来の挙動との互換性を保つためじゃないの?
その制約を受け入れた上でブロックローカルな変数を明確化したいという
ニーズに応える方策としてありじゃないかと思うけど。
firstとかlastとか頻出そうなメソッドを用意させたも全く別の
ブロックを考えるとか
Proc2.new{|a,b|
at_first{c=0}
body{c += a*b}
at_last{p c}
}
>>934 同意。最初の要素を参照するときに下みたいなコードが
書きたくなると思う。何かキモイ
(1..10).each do |i ; first=i|
p [first,i]
end
マイナーバージョンアップでも激しく仕様がかわるRubyなんだから、
メジャーバージョンアップでなまじっか互換性とか気にしなくてもいいのに…。
従来のブロックのスコープは本当に残念なんだし。
マイナーバージョンアップでも互換性とか気にする方向で考え変えて欲しいんだが
マイナーバージョンアップで互換性無視するがアレなのはともかく、
ブロックのスコープの腐った仕様を変えるには絶好の機会なのに、
事態を悪化させようとしてるようにしか見えないです。
(a) Rubyにレキシカルスコープを導入する
(b) ブロック変数の初期値を設定できるようにする
多くの人は(a)を求めていたのだが、
実装された運用は(b)だったというオチか。
レキシカルスコープって何?
静的スコープとは別物?
同じ物
じゃあ、Rubyって現状は静的スコープじゃないの?
945 :
911:2005/05/16(月) 21:20:39
>>925 Cのブロック内での変数宣言と同じことが、なぜできないのかなと思いまして。
例えば、ブロックの内側と外側とでstrという別の変数を使いたいときにちょっと困ります。
たいした問題じゃないといえばそうなんですが、
このようになっている理由や背景を知りたいと思い、質問しました。
ですが、一連の議論を見ていると頭の中が混沌としてきました…
さっさとlet構文を導入しやがれ。
matzタソはスコープを指示する宣言子がキライらしーので、それは永遠にありえないよーな気がする。>var, myあるいはlet相当
ブロックパラメータだけα変換する、他は現状と同じ、で問題なくね?
外部のスコープをもってくる変数に、お得意の頭記号をつければいいじゃないの。
somearray.each{|str|
str = \str + str
}
とか。
さらに外の変数を見るときは\\strですか。
そこまでして外部の変数をみる必要はあるんかいな。
でも発想は好きかも。
同じ名前だけど場所(スコープ)によって別物という方が分かりにくい気がします。
別の変数なら名前も違えるという、現行Ruby方式に慣れちゃってるのかな?
内側のブロックでうっかり同名の変数を使ってしまい、
外側の値を変えてしまうというのは、確かによろしくないとは思いますが。
スクリプトが長くなったり、入れ子が深くなったりすると、
なるべくメソッドとして分割するようにしてることもあって、
今の仕様で不満を覚えてないんです。今後の仕様が気になる、気になる...。
だな。スコープが把握できないほどメソッドがでかいのは危険な匂い、と。
規模がでかくなって、複数人で開発を行なうとこまらない?
たまに
s = nil; ary.each { |x| s = x }
を
s = nil; ary.each { |s| }
と書くみたいに、(この例に意味はないけど)
ブロックパラメータは束縛じゃなく代入だという仕様を
意図して使うやつがいるんだよね。
これさえなければ現状でもいいんだけどね。
コーディング規約レベルで、でかいメソッド作るな、とか。
たまにRubyのスコープについてよく分からないと言う人がいますが
これは「Rubyはグローバル変数のみ使える」という仕様を知らないための
勘違いが原因だと思われます。
そもそもRubyにはローカル変数は実装されていません。
分かりやすさを追求するRubyの変数は全てグローバルです。
その昔、Ruby1.0がリリースされたとき、変数に$をつけないと
場合により値が参照できなくなるというバグが存在しました。
しかしこれを応用してグローバル変数でローカル変数を実現するRubyistが増えたため
バージョン1.3でこのバグを正式な仕様としました。
このような経緯があるため、Rubyにはローカル変数があるという誤解が広まったのですが
基本的にRubyはグローバル変数onlyの言語です。
ローカル変数を隠匿することもできんのか
このクソ言語は?
もうオブジェクト指向以前の問題だな。
958 :
デフォルトの名無しさん:2005/05/18(水) 10:53:10
メソッドに入れてしまえばいいんだよ
そもそも外でごちゃごちゃやっててローカルも何もないもんだ
>>958 そのページの「CVS最新版スナップショット」ってヤツが 1.9 相当だよ。
>>957 >ローカル変数を隠匿する
どういう意味?
962 :
958:2005/05/18(水) 16:58:04
rubyって,自分で定義したクラスの配列ってできないのですか?
class hoge
def initialize
@hoge = 0
end
end
hoge = Array.new
hoge[hoge.size] = hoge.new
こんな感じで,自分が定義したクラスのインスタンスの配列を
作って使おうとしたのですができません
ぐぐってみたのですが,なかなか情報が見つけられませんでした
やり方,もしくは情報へのポインタを教えていただけないでしょうか
クラス名は必ず大文字で始めること。
また、君は自分の作ったクラスのインスタンスを生成してない。
class Hoge
def initialize
@hoge = 0
end
end
hoge = Array.new
hoge[hoge.size] = Hoge.new
Rubyサイコウ
>>964 レスありがとうございます.
すいません.これは例なので,本当に書いてたコードでは,
クラス名は大文字で始まっています
>また、君は自分の作ったクラスのインスタンスを生成してない。
どういうことですか?僕は,
hoge = Array.new
これで配列ですよって宣言して,
hoge[hoge.size] = Hoge.new
この部分で,配列の要素が自分で定義したHogeというクラスのインスタンスだと
初期化しているつもりなのですが…
hoge[hoge.size] = Hoge.new
やりたいことがよくわからん
EnumerableとかとMix-inしたいとか?
実際はそこの処理を何回かループさせて,
配列の最後尾にどんどんインスタンスを追加していきたいのです
hoge.sizeは最初ゼロで要素が追加されるたびに1ずつ増えていきますよね
ループ
hoge[hoge.size] = Hoge.new
hoge[hoge.size].setHoge(1)
ループend
こんな感じです
もしくはループとか関係なくて,ただ単純に自分が定義したクラスの
配列を作りたいのです.WEB調べたのですが,情報が見つからなくて…
EnumerableとかMix-inというのは分からないです…
> 自分が定義したクラスのインスタンスの配列を作って使おうとしたのですができません
もちろんできる。
どうやってできないことを確かめたのか書いてくれ。
hoge[hoge.size] = Hoge.new
hoge[hoge.size].setHoge(1)
2行目のhoge.sizeは1行目より1大きいぞ。
基本的にはその通りで動くはず。実際にどういうコードで、なぜ動かないと判
断したかがわからないな……。クラスの方に問題はないのか?
>>969 >hoge[hoge.size] = Hoge.new
>hoge[hoge.size].setHoge(1)
>2行目のhoge.sizeは1行目より1大きいぞ。
ああ,そういうことですか!
では,
hoge = Array.new
hoge[0] = Hoge.new
hoge[0].setHoge(1)
hoge[1] = Hoge.new
hoge[1].setHoge(1)
ならOKってことですか?
明日確かめてみます.どうもありがとうございました.
また,明日確かめてみてできなかったら質問します.
短時間に何度もレスしていただきありがとうございました.
>>970 明日,
>>969さんの言う通りにやってみます
まずは,配列のとこだけテストする簡単なコード書いてみます
できなかったら,そのコードを持って帰ってきて,
また質問します.
色々とありがとうございます
973 :
970:2005/05/20(金) 00:09:10
あ、そうかそうか。
それと971のような場合は、
x.times { |i| hoge[i] = Hoge.new; hoge[i].setHoge(1) }
とか、
Array.new(x) { ... }
とかいった書き方をした方がわかりやすいよ。たぶん。
最後に足すだけなら push とか << 使えば余計な混乱しないだろうに。
>>963 の言う「hogeの配列」は C++ の
hoge_class hoge[N];
みたいなのを指してるんだと思われ。
予め初期化されたインスタンスが用意されてるようなもの。
>>975 なるほど、お前頭いいな。
しかし上の議論で、
hoge[hoge.size] = Hoge.new
hoge[hoge.size - 1].setHoge(1)
と来るかと思ったら
>>971だったから
失礼ながら正直ワラタ。
977 :
963:2005/05/20(金) 21:53:47
アドバイスを元にやり直してみたらできました.
どうもありがとうございました
ちなみにrubyってphpで言う可変変数ってないんですか?
今日色々探したのですが見つからなかったもので...
知ってる方がいらっしゃったら教えてください
連続質問に答えると教えて君がわいて出そうだから
答えたくないYOって感じならばスルーしてください
そのようなものが特別に用意されているわけではないが、そういうことをした
い場合はたいてい eval する。
a = "hello"
eval %Q(#{a} = "world")
puts a # => hello
puts hello # => world
>978
ありゃ? 手元の1.8.2(mswin32)だと
4: undefined local variable or method `hello' for main:Object (NameError)
って言われちまったよ(´・ω・`)
てか、Hash使えばいいような気がするのは漏れだけですかそうですか
> てか、Hash使えばいいような気がするのは漏れだけですかそうですか
いや待て、漏れを忘れるな。
981 :
963:2005/05/20(金) 22:54:23
sample1 = sample[1]
sample2 = sample[2]
sample3 = sample[3]
sample4 = sample[4]
以下10まで続く
こんなんをループでサクっと片づけたいのです
982 :
デフォルトの名無しさん:2005/05/20(金) 23:00:49
Ruby入門者用の書籍はなにがいいかな?
友人が教えてくれというんだが最近忙しいんで・・・。
まあ意味無いけど evalで可能だな
985 :
979:2005/05/20(金) 23:50:25
a = "hello"
の前に
hello = nil
入れたら動いた。まぁそりゃそーだ罠 orz
スレ汚し失礼。
trueclassとfalseclassに分かれてるのは、あれはいったい何の意味があるんだ?
実はif文の条件分岐は、それぞれのクラスの多態性を利用してるとか?
>>986 > trueclassとfalseclassに分かれてるのは、あれはいったい何の意味があるんだ?
同じクラス(たとえば BooleanClass)のインスタンスの方がいい/自然、ってこと?
zero-one-infinity じゃないけど、インスタンスが二種類しか存在しない
クラスってのは、個人的にちょっと座りが悪く感じる。
それよりも、二つクラスがあってそれぞれの singleton instance の方が自然かと。
TrueClass と FalseClass に共通するスーパークラスとして
BooleanClass が欲しい、と思うことはたまにある。テスト書く時とか。