1 名前:one [2009/05/16(土) 10:06:50 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 【Ruby1.9.1 は従来版とは異なる部分も多く、書籍や解説やライブラリのサポートがまだありません】 【自力で解決できない壁で悩むことのない最新安定版の Ruby1.8.7 での学習をお勧めします】 ※1.8.7 は 1.8 系と 1.9 系の橋渡しをするためのリリースで、1.9 系 の便利新機能の一部が利用可能です 関連スレやURLは>>2-5 あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。 ■質問する人へ 質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。 ・モジュール名やエラーメッセージでググる ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/ ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ 質問には以下を書くこと。へたくそな質問は再提出を要求される。 ・詳しい内容(「動きません」「うまくできません」では回答しようがない) ・エラーメッセージ(自力で訳さずなるべくそのままで) ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる)) ・最終的にやりたいこと(もっとよい方法がある場合が多いので) 回答してくれた人には「ありがとう」のひとことをいってあげて。 ■回答する人へ 相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。 それができないならこないこと(だって初心者スレだもん)。 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
31 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 04:55:44 ] ruby %* | pause 確か、こんな感じのdo_ruby.batファイルとか作って.rbに関連付けておけばよかった気がした。 失敗した時だけ待つ 常に待つなら、 ruby %* pause
32 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 05:04:21 ] まー実際問題としてはいちいちダブルクリックとかフォーカス当ててEnterとかやってられんのだがね
33 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 05:16:27 ] まあ、世の中には少しだけ便利なバッチファイルとしてrubyを使う人も いるわけで、定形の作業用スクリプトをたまに起動するだけなら >>32 なんて問題にならないし、 人に説明する場合でも、コマンドプロンプトを開いてコマンドを入力させるより アイコンをダブルクリックの方が楽だったりする 場合もある
34 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 08:14:42 ] >>31 それ知らなかったよ。サンクス
35 名前:34 mailto:sage [2009/05/17(日) 09:04:59 ] 正確には、ruby %* || pause だね
36 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 14:26:56 ] >>35 一見パイプの拡張かと思ったらexitコードの論理和かよ cmdで使えたなんて知らなかった
37 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 14:47:10 ] >>35 うる覚えだった。スマソw
38 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 14:52:47 ] 「うろ覚え」な。 今覚えとこうな。
39 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 15:16:47 ] 得意げに typo に突っ込んでいるかも知れないという危惧を 少しは抱くべきではないだろうか
40 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 15:21:33 ] >>39 ttp://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=%E3%81%86%E3%82%8B%E8%A6%9A%E3%81%88&num=50
41 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 15:27:59 ] 「うる覚え」は少なくとも誤記ではないな 「う・る・お・ぼ・え」と書くつもりで正しく書いてるだけだ その人にとっては「うる覚え」が完全に正しい もちろん「うろ覚え」が辞書上も多数派的にも"正しい"が、 だからといって今更「うる覚え」がなくなるわけでもなく
42 名前:デフォルトの名無しさん [2009/05/17(日) 15:30:24 ] /) ///) /,.=゙''"/ / i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!! / / _,.-‐'~/⌒ ⌒\ / ,i ,二ニ⊃( ●). (●)\ / ノ il゙フ::::::⌒(__人__)⌒::::: \ ,イ「ト、 ,!,!| |r┬-| | / iトヾヽ_/ィ"\ `ー'´ /
43 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 20:31:45 ] 今日1日かけて自作スクリプトのクラス名やメソッド名を書き換えてそれに伴う構造再構成をした 見通しがちょっとよくなったような気がする Rubyあんまり関係ないな
44 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 20:35:40 ] def hoge h = Hash.new … return h end というメソッドを勢いで作ってしまうことはある 適切な名前を付けるべきだとは思うんだけどね
45 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 21:12:55 ] CRubyでは通るけどJRubyではまだ通らないようなテストがあります。 で、とりあえずこのテストをJRubyで通るようにするのはあとまわしにすることに決定しました。 このとき、そのテストに『今はテストが失敗するけどあとまわしにするよ』というような目印をつける方法が Test::UnitかRSpecにあったと思うんですけど、どなたかご存じないですか。 ぐぐろうにもキーワードが思いつきません。
46 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 21:16:01 ] >>44 「スコープが広いものにほど明瞭な(長い)名前を付けよ」って一般原則からすれば メソッドが十分短いならhは許されるだろう。hogeは不味いだろうけど というか、極端に長すぎるのも考え物 記述密度が上がって逆に可読性を落としてしまう Linusに言わせれば >Modula-2 や Pascal のプログラマとは違って、C言語プログラマは 「こ >の変数は一時的に使われるカウンターである(ThisVariableIsATemporaryCounter)」 >などというような気のきいた名前は使いません。C言語プログラマは、"tmp" な >どの十分に書きやすく、それでいて少なくとも分かりにくくはならない変数名を >選ぶものです。 Rubyも立場的には近いと思う to_sとか、意味が通る限りにおいて短い名前を希求する
47 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 21:19:50 ] >>45 RSpecのpendingのことかな 詳しくはるびまの連載記事に載ってる
48 名前:デフォルトの名無しさん mailto:sage [2009/05/17(日) 21:39:47 ] >>47 それです。さんきゅー。あいしてる。
49 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 11:07:46 ] >>12 >File.open('file.xml', 'r+') do |f| > f.flock(File::LOCK_EX) > f.truncate(0) > f.rewind > f.write('<?xml version="1.0" ?>') >end 'r+' だとファイルが存在しなかったときにエラーになるよね。 それがいやで、自分は 'r+' じゃなくて 'a' にしてるんだけど、なにか問題あるでしょうか。 詳しい人のコメント求む。
50 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 11:18:10 ] 'a' はファイルの最後から書き込む 'r+' はファイルの先頭から書き込む 対象のファイルが全くの空である場合は動作が「たまたま」同一
51 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 11:20:57 ] なら IO::CREAT|IO::WRONLY で
52 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 11:24:10 ] >>49 「あるはずのファイルが無い」とか「書けるはずなのに(権限などで)書けない」なんてのは 似たようなもんで、どのみちきっちりやるならチェックなり例外処理なりしなきゃいけない。 つまり、こまけぇこた(ry
53 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 11:38:29 ] >>49 def exclusive_write(path, content) body = lambda{|f| f.flock File::LOCK_EX f.write content f.truncate f.tell } File.open(path, 'r+', &body) rescue Errno::ENOENT File.open(path, 'w', &body) end 自分の過去を掘り返してきたらこんなんが出てきた。 正しいかどうかは…。
54 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 11:48:30 ] >>48 > あいしてる これは、 あいしてる ( ^з^)-☆Chu!! までやるべき
55 名前:17 mailto:sage [2009/05/18(月) 17:02:45 ] 前スレの982です(ファイルアクセスが他のソフトとぶつかる場合で質問)。 皆さんのレスを一通り見ましたが、File.openの箇所で工夫するというのが定石 なのでしょうか? 本を読んでいたら、 File.readable?(path) と File.writable?(path) なるものが ありましたが、(これらが未だ登場しないといいうことは)使うと何か弊害が 生じるのでしょうか?
56 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 17:54:21 ] >>50 >'a' はファイルの最後から書き込む >'r+' はファイルの先頭から書き込む そうなんだけど、今の場合は f.truncate(0) して f.rewind(0) してから書き込んでいるから、 最初のファイルポインタの位置は関係ないよね。 >>51 これって何?初めて見るんだけど。マニュアルに書いてある?
57 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 18:05:17 ] >>56 ttp://www.ruby-lang.org/ja/man/html/File_Constants.html
58 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 18:07:42 ] >>52 そういえば昔、CGIだけどレンサバの容量の制限(quota?)でファイルが書けず、 1日分のデータが無くなったってトラブルがあったな・・・(遠い目
59 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 18:11:38 ] /) ///) /,.=゙''"/ / i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!! / / _,.-‐'~/⌒ ⌒\ / ,i ,二ニ⊃( ●). (●)\ / ノ il゙フ::::::⌒(__人__)⌒::::: \ ,イ「ト、 ,!,!| |r┬-| | / iトヾヽ_/ィ"\ `ー'´ /
60 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 18:46:21 ] マジックコメントをとりあえず強制的に utf-8 あたりで自動挿入する機能とかないかな Emacsでいいんだけど
61 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 19:00:04 ] ttp://d.hatena.ne.jp/rubikitch/20080307/magiccomment
62 名前:デフォルトの名無しさん mailto:sage [2009/05/18(月) 21:16:28 ] 1.9に添付されてるruby-mode.elを使え
63 名前:デフォルトの名無しさん [2009/05/19(火) 01:53:42 ] wonko.com/files/crackup-1.0.1.tar.gz こいつのソース見てくれ。殆どの処理が module として定義されて 普通に実行しただけでは何も起こらないよね? これはどうなっているの? よくわからないけど、rubygems がゴニョゴニョしていると考えていいのかい。
64 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 02:20:21 ] crackup-1.0.1$ rak "at_exit|END" lib/crackup.rb 288| at_exit do まったく読み込んでないが、これじゃないか。
65 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 02:26:30 ] 単純にmodule直下で色々やってるだけっぽいけど
66 名前:63 [2009/05/19(火) 02:36:16 ] >>65 すまん、勘違いしていた。さんくす。
67 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 08:09:15 ] >>60 検索すると、マジックコメントが Ruby(と Ruby が参考にした Python)独自のものだと思ってる人がちょくちょくいる模様 これ Emacs 自身が解釈する文字列で、読み込むファイル全般で効くから -*- coding: utf-8 -*- の行があったら Emacs はその文字エンコーディングだとみなして読み込むから 嘘だと思ったら -*- ruby -*- とだけ書いた hoge ファイルを Emacs で読み込んでみるといい いわゆる拡張子がなくて判断情報がないはずなのに ruby-mode になるからさ -*- perl -*- と書いたら perl-mode に、 -*- html -*- と書いたら html-mode になる
68 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 09:50:33 ] >>67 ほー知らなかった。emacsはそういう機能があるんだな。vimも似たようなのなのなかったっけ?
69 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 11:28:56 ] >>68 67 じゃないけど jp.rubyist.net/magazine/?0025-Ruby19_m17n#l18
70 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 16:27:04 ] Rubyの、文字列中に任意の式を埋め込む機能は式展開という名前らしいですが、 これを英語でいうと何といいますか。
71 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 16:58:19 ] まんまだけどembedded expressionとか?
72 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 17:20:32 ] ruby-doc.org の Programming Ruby だと、その他のエスケープと一緒に substitution となってるな。
73 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 20:31:20 ] 少しお聞きします。 メソッドチェーンの途中で nil があってもそれ以後予期に計らってくれる便利なハックや方法はありませんでしょうか? Delphi Prismのコロン演算子みたいなのです(例がマイナーすぎてスマソ・・) Colon Operator - Delphi Prism prismwiki.codegear.com/en/Colon_Operator
74 名前:73 mailto:sage [2009/05/19(火) 20:36:41 ] すいません。 >>73 ですが、既存のgemsとかのユーティリティ的なものがあればそれキボンという感じです。 わがままですいません…。 Activeなんたらとかにないのかなーと探しているのですが、見つからず
75 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 20:40:43 ] ((o = obj.hoge()) && (o = o.page()) && (o = o.moge()) && o.done()) || (puts "nil!!!") ・・・ごめん、忘れてw
76 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 20:59:01 ] 演算子として使いたいなら、言語機能として組み込まれないとどうにもならないように思える あえて小手先の拡張でなんとかするなら・・・こんな感じか? obj.send_if_defined(:method1).send_if_defined(:method2)
77 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 21:08:54 ] >>73 眺めた程度ではリンク先の意味を理解できず申し訳ないのだけど 良きに計らうっていうのは具体的にどういう挙動を期待してる? ふとこんなのを思いついた class Nil; def method_missing; return nil; end
78 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 21:22:12 ] >>73 メソッドチェーンを使わないか、 期待した返り値にならない場合は例外出して抜けるメソッドだけをチェーンに使うか、 NoMethodError を rescue する
79 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 21:59:40 ] >>70 variable interpolation いや、 expression interpolationだな。
80 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 22:00:42 ] >>73 ActiveSupportのObject#tryおよびそれの同等品でどうか。 実態はsendだが、nilにだけはnilを返すように定義されている。
81 名前:デフォルトの名無しさん mailto:sage [2009/05/19(火) 22:17:57 ] ま た R a i l s か でもこれ確かに便利だな ttp://d.hatena.ne.jp/takihiro/20090204/1233745492
82 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 01:11:27 ] tryを1.9に取り込むって話はどうなったんだっけ?
83 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 01:18:26 ] >>82 catch〜tryのtry? それとも
84 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 01:39:50 ] haskellのめいびーがうんたらかんたら
85 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 02:18:00 ] >>82 名前がよければ採用してもいいという話になっていたと思うが、 誰かが思い出させないとそれきりかな? いちおうRedmineには入っていたハズ。
86 名前:73 mailto:sage [2009/05/20(水) 04:16:49 ] ActiveSupportのtryですね。確かにそんな感じですw ちょっと使ってみようと思います。 > require 'activesupport'; [4649, "HageUnko", nil].map{|i| i.try(:+, i) } [9298, "HageUnkoHageUnko", nil] ありがとうございました。
87 名前:デフォルトの名無しさん [2009/05/20(水) 04:51:55 ] WinXP-ProでRubyは1.8.6です。 ttp://www.func09.com/wordpress/archives/154 を参考にSocketサーバーを作りたいと思っています。 先ずは、server_client.rb中の require "socket_server" について調べましたが、 リファレンス ttp://www.ruby-lang.org/ja/man/html/socket.html には socket_server というライブラリはありません。 もしかして、ある時期から単に socket になったのでしょうか? 参考サイトの日付は2007年10月です。
88 名前:87 mailto:sage [2009/05/20(水) 06:35:46 ] (補足) 目標は、厳密にはXMLSocketサーバーです。
89 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 10:43:00 ] obj = PStore.new(path) pstore = obj.transaction p pstore.roots pstore.close とすると、2行目で止まって、Ctrl+C すると /usr/lib/ruby/1.8/pstore.rb:296:in `flock': Interrupt from /usr/lib/ruby/1.8/pstore.rb:296:in `transaction' from /home/俺/上記ファイル.rb:2:in `hoge_method' というようになるようになってしまったんだが、 似たような現象にぶち当たった経験があるとかで原因の心当たりある人いる?
90 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 11:31:07 ] flockってことはファイルロックしっぱなしなんじゃないのか? 他のスクリプトやエディタ(てことはないか・・・)が開いててロックしているとか
91 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 12:34:18 ] >>90 あ、ほんとだ、超でっかいpstoreのトランザクションの奥で同じファイルをPStore.newしてる 何がどうなっていつのまにこうなったんだ、これ まあいいや、ありがとう
92 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 15:02:35 ] >>79 >interpolation さんくすです
93 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 15:17:04 ] 存在してないファイルからpstoreで読み込んだときに何が返るかの記憶法あるかな nil だったか空のハッシュだったかぜんぜん覚えられないんだが
94 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 15:17:49 ] irbでさくっと試せ
95 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 15:21:43 ] わざわざターミナル開いて irb require 'pstore' PStore.new('1').transaction{|p| p[p.roots.first]} これを打つのがしんどいから聞いてるんだよ逆切れ
96 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 15:25:05 ] PStoreでハッシュを保存してるとわけわかめになることが全くないでもない というかなんであれは ENOENT とか発生しないのは何故?
97 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 15:34:21 ] >>93-95 言うのをめんどくさがるから却ってめんどくさくなる好例だなw まあそのコードが一発で出てきたところから推測できるように rootsの初期値は空のArray nilもHashもfirstが通らん
98 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 15:49:54 ] pstore は、ファイルが存在しているかどうかを全く関知しない ファイルがそもそも存在しない場合も、 ファイルはあるけど登録が空である場合も、 ファイルがあって何らかのデータが登録されてる場合も、 transaction の返り値オブジェクトの [] メソッドはハッシュのように振舞うし、 fetch メソッドはキーの有無をチェックして例外を出す ということで、 ファイル自体が無い場合もそのキーでの登録が無い場合も一律 nil だな nil をキーとして何かデータが登録されていると誤動作するであろう pstore 利用スクリプトは時々見る
99 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 18:00:35 ] ruby 1.8.6 で日本語を slice しようと思ってます。 ttp://taiyaki.org/ruby/jstring/ が定番でしょうか? 最終版が 2003-5-7 ですが、枯れているのか 放置されているのか分からなくて。
100 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 18:14:13 ] >>99 UTF-8で、 puts "日本語".scan(/./u)[1] とかではいかんのでしょうか?
101 名前:99 mailto:sage [2009/05/20(水) 18:32:30 ] >>100 できました。ステキ。 /./u の u がないともっとステキなのですが、 これはどうしようもないのでしょうか。
102 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 18:41:55 ] じゃあメソッド作って隠せ それで>>99 と同じになる
103 名前:デフォルトの名無しさん mailto:sage [2009/05/20(水) 18:47:03 ] >>101 $KCODE設定だけでいけるんじゃないかと。 詳しくは知らない ttp://www.ruby-lang.org/ja/man/html/FAQ_C6FCCBDCB8ECA4CEBCE8A4EAB0B7A4A4.html
104 名前:デフォルトの名無しさん [2009/05/21(木) 00:14:09 ] ファイルからUTF8のテキストデータを読んだのですが、 p line[0,2] としても期待どおりに文字を切り出せません。 どう書けばよいのでしょうか?
105 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 01:01:58 ] >>104 期待とは line = 'こんにちは' のとき line[0,2] #=> 'こん' ということ? 1.8系 $KCODE = 'u' 前提 1.8.6 までなら line.split(//)[0,2].join 1.8.7 なら line.chars.to_a[0,2].join でも。 おまけ line[0, 6] # 漢字(1文字3バイト)のみからなるのが確実な場合 1.9系 エンコーディングが正しければ、それで期待どおりになる。
106 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 01:25:29 ] >>105 ありがとうございます。うまくいきました。
107 名前:デフォルトの名無しさん [2009/05/21(木) 02:02:56 ] 1〜10の数字のうち、ランダムに5個を選ぶ記述で悩んでいます。 単純に r=rand(10) r=r+1 を5回やるとしても、5,4,8,8,7と同じ数が並ぶ 可能性があり、条件式で判別するのは元の数が増えた場合を考えると スマートではないような気がします。 (数が増えて100万個の中から1000個を選ぶとか) 何か良い方法はありますか?
108 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 02:37:07 ] >100万個の中から1000個を選ぶ 大きな量でも扱える方法が少量の際でもスマートとは限らないから 別個に考えた方がいいと思う とりあえず一例 ary = [] (1..10).each{|i| ary << i } 5.times{ puts ary.delete_at(rand(ary.length)) } もちろん数が大きい時には向かない
109 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 02:38:04 ] なんで書き込んだ直後に(1..10).to_aを思い出すかなorz
110 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 02:48:19 ] numbers=[] while numbers.size<5 numbers|=[rand(10)] end こんな感じかな 乱数の出てきた順番がどうでもいいならSet使ったほうが良いと思うが
111 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 02:49:31 ] >>107 step.0 選ばれた数の総数 n = 0 step.1 1を選ぶ確率 5/10 step.2 2を選ぶ確率 (5-n)/9 step.3 3を選ぶ確率 (5-n)/8 ... nが5になるまでstepごとに0から1の一様乱数を発生させて確率以下ならその数を選択することを続ける
112 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 03:54:58 ] それと選ぶ総数が全体数の半分以上なら選ばない数の方を選択して それを全体から除外するようにしたほうが特に全体数が多い場合は現実的な効率はいいと思う 起こりうる最悪ケースではどちらでも変わらないし全体数の半分程度を選ぶとかではあまり関係ないけど それから全体数が多いときは一様乱数の有効数字の桁数が問題になるかもしれないので 0から1の浮動小数でなく選択確率の分母以下の整数値をランダムに生成して分子と比較するとかの方がいいかも でもそれでよくなるかどうかは乱数の生成方法次第だしそもそも100万個くらいならこれは問題ないのかな?
113 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 04:19:05 ] 100まんこのランダム抽出程度なら手抜きで作っても普通に終わるだろ result = Array.new max = 1_000_000 ; period = max / 100 $stdout.sync = true print 'prepareing...' ; base = (1..max).to_a ; puts "done" while e = base.delete_at(rand(base.size)) do result << e print '.' if (result.size % period).zero? end puts p result.size p result[0],result[max] ごめん嘘ついた インジケータ1個も出ない(w
114 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 05:50:28 ] spec_helper.rb って spec コマンドが勝手に探して自動で読んでくれる便利なファイル名とかそういうのじゃないのね require '../../../spec_helper' とか spec ファイルの最初に書くのカッコ悪いんだけどもこれは構造上仕方ないのかな
115 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 06:01:28 ] それだとカレントディレクトリ以外で spec コマンド使ったときに動作しないぞ require "#{File.expand_path(File.join(File.dirname(File.expand_path(__FILE__)), '..', '..', '..', 'spec_helper'))}" こうだな 長大なファイルパスを記述するのが面倒だから spec_helper を使おうと思ってる人には逆に憂鬱かもしれん しかしこれ1行で済むとも言えるが
116 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 08:04:42 ] >>107 [*1..10].sample(5) [*1..1_000_000].sample(1000)
117 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 08:09:23 ] >>115 なんでわざわざ同じことを何回も繰り返す? require File.expand_path('../../../../spec_helper', __FILE__)
118 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 09:32:24 ] File.expand_path の第2引数の扱いは undocumented だからな 現在は File.exppand_path して File.dirname されているということを知ってる人がどれだけいるのやら つまり、以下の4つは同じように /full/path/basedir/dir/file を返す File.expand_path('dir/file', '/full/path/basedir')) # マニュアルを素直に読む場合、第2引数はフルパス File.expand_path('dir/file', 'basedir')) File.expand_path('dir/file', File.dirname(File.expand_path('file_in_basedir')))) File.expand_path('dir/file', 'file_in_basedir')) というか、このへんは実験終了と称して次のバージョンくらいでぽっと無くなりそうで嫌だ
119 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 11:40:41 ] 第二引数なし・pathnameなしで一番短いのはこれかな require File.join(File.dirname(__FILE__), '../../../spec_helper') でも確かに、spec_helper.rbを自動or独自メソッドで読んでくれれば一番早いとは思う
120 名前:デフォルトの名無しさん [2009/05/21(木) 12:08:01 ] メモリ上で文字列の圧縮・展開を行いたいです。 そういったライブラリはありますか?
121 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 12:20:56 ] よーわからんが irb> require 'zlib' irb> str = "プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 【Ruby1.9.1 は従来版とは異なる部分も多く、書籍や解説やライブラリのサポートがまだありません】 【自力で解決できない壁で悩むことのない最新安定版の Ruby1.8.7 での学習をお勧めします】 ※1.8.7 は 1.8 系と 1.9 系の橋渡しをするためのリリースで、1.9 系 の便利新機能の一部が利用可能です" irb> p str.size 560 irb> z = Zlib::Deflate.deflate(str) irb> p z.size 375 こういう話ではなく?
122 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 12:53:49 ] >>121 ありがとうございます。zlibを調べてみますね。
123 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 13:31:52 ] すいません。 >>87 をお願いします。
124 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 13:48:27 ] >>123 socket_server.rb はライブラリではなく単なるアプリケーションで、同じページの server_client.rb の次に説明されてる
125 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 16:16:25 ] rspecにて、spec/hello_spec.rbから hello.rbを起動テストしようとしています。 しかし、NetBeansの "rspecテスト"からrspecを起動した場合だけテストに失敗してしまいます。 コマンドプロンプトから spec spec/hello_spec.rb では問題ないのですし、直接 ruby hello.rbでも問題ないです。 warningの文字列で、テストしているので起動時の "-w" をとれば成功するようになるのですが、 コマンドプロンプトからは -w をつけても問題ないのが気になります。 'my script should have no errors or warnings' FAILED expected not: =~ /warning/n, got: "(Rubyインストールディレクトリ)/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:138: warning: d:/my_home/.gem/ruby/1.8:(Rubyインストールディレクトリ)/lib/ruby/gems/1.8/specifications: Invalid argument\nHelloWorld\n" ./spec/hello_spec.rb:15: ./spec/hello_spec.rb:13:in `chdir' ./spec/hello_spec.rb:13: hello_spec.rbのソース require File.join(File.dirname(__FILE__), '/spec_helper.rb') describe "my script" do before do @bin_path = File.join(File.dirname(__FILE__), "/../hello.rb") end it "should have no errors or warnings" do pending "Hangs on JRuby" if PLATFORM =~ /java/ Dir.chdir(File.join(File.dirname(__FILE__), "/../")) do output = `ruby -w #{@bin_path} --help 2>&1` output.should_not =~ /warning/n output.should_not =~ /Error/n end end end
126 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 16:23:38 ] =~ というマッチャは見たことないな
127 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 16:35:42 ] >>124 さんきゅう。 同時に、「SocketServerというクラスがリファレンスにないぞ・・・」と思って いましたが、これも下の socket_server.rb で定義していたんですね。 納得。
128 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 17:06:27 ] >>125 推測だが、コマンドプロンプトとNetBeansが それぞれ違う場所にインストールされたrubyを使っていて、それで何かの問題が起こっているのでは? 実際にsource_index.rbの138行目見れば何か分かるかもよ >>126 あるよ
129 名前:125 mailto:sage [2009/05/21(木) 18:40:11 ] >>126 正規表現のマッチャみたいです。 >>128 ありがとうさんです。 source_index.rb見てても何故かよーわからんくて、 使われているのがNetBeans標準のjrubyでなくちゃんとMatzRubyにしたよなー、 と思って設定を見直していたころ、gemパスがバグっていたことになっていたことに気づきました。 1行1パスなのに、何故か、 /my_home/.gem/ruby/1.8:(Rubyインストールディレクトリ)/lib/ruby/gems/1.8 と : で区切って2つパスが記述してありました…(´・ω・`) 削除して、/my_home/.gem/ruby/1.8 だけにしたところ、 問題なく動きました! 今思うと、source_index.rbはの該当行はgemパスの処理のところでした。 おかげさまで、無事に解決いたしました。 ありがとうございました。
130 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 19:38:56 ] >>116 [*1..10]も1_000_000も知らなかった 前者のはRange#to_aと優劣あるんだろうか
131 名前:デフォルトの名無しさん mailto:sage [2009/05/21(木) 19:44:56 ] >>109-112 , 116 Thx ごめんなさい。未だ試してないです。
132 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 00:16:37 ] >>118 > File.expand_path の第2引数の扱いは undocumented だからな Converts a pathname to an absolute pathname. Relative paths are referenced from the current working directory of the process unless <i>dir_string</i> is given, in which case it will be used as the starting point. 「dir_stringを始点として絶対パスに展開する」とちゃんと書いてあるだろ。 > 現在は File.exppand_path して File.dirname されているということを知ってる人がどれだけいるのやら 勝手にdirnameしてるわけではなくて、>>117 は>>114 より'..'が一つ多い。
133 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 00:18:05 ] >>130 [*1..10]のほうが(1..10).to_aより短い。 遅いけどな。
134 名前:デフォルトの名無しさん [2009/05/22(金) 05:39:26 ] スレ違いな質問で申し訳ないが、GnomeVFSのSSH接続で、鍵を指定することはできないの? 普通に ssh://user@host と指定しただけでは ~/.ssh 下しか探さないみたい。 Net::SSH は鍵を指定できたんだけど。。
135 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 15:46:03 ] eRubyについて教えてほしい eRubyで書かれたファイルの中に eRubyで書かれたファイルを埋め込みたい なんか出来そうな気がするのだけど イメージがまとまらないので、できるのなら教えてほしい。 具体的な運用としては Apacheで*.rhtmlのファイルをeRubyを通すように設定したサーバで 運用したいと思っている。 で、ページを構成する細かい部品をeRubyで書いて そのレイアウトをeRubyで定義できないかな〜って感じです。
136 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 16:03:52 ] <% require 'erb' %> <%= ERB.new(File.open(filename).read).result %> じゃダメなんだっけ?
137 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 16:09:11 ] >>132 日本語マニュアル不備だよね 基本の添付ライブラリのマニュアルが英語とかなにそれ
138 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 16:35:47 ] >>136 それでいけました ただ、単にERBオブジェクト作ってあげるだけでよかたんか。 これで、ヒャッホ〜イ!できそうです。ありがとう。
139 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 16:50:58 ] >>133 サンクス 数文字程度長いぐらいならわかりやすいほうが好みだから [*1..10]を選ぶ理由はなさそうだ
140 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 17:42:51 ] >>137 ri File.expand_path
141 名前:140 mailto:sage [2009/05/22(金) 17:44:48 ] いや、これも英語か。 ソースから抜き出してるから、日本語版を作るとなると ソースに日本語でドキュメントを書くか、 自動生成を諦めるかになるのかな。
142 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 17:46:35 ] ja.po 形式はどうだろう
143 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 17:49:56 ] そういえば、rubyをgettext対応させた人っていないのかな。
144 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 17:55:05 ] >>143 スクリプトの話?本体の話? 前者はライブラリがある
145 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 17:56:24 ] >>132 第2引数は /path/to/file を渡しても /path/to/ とみなして処理される 相対パスを渡しても、絶対パスに変換したあとで基点とみなされる startint point という語にそれだけの処理の意味を任せるのは初耳だ
146 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 18:16:07 ] >>141 日本語版のリファレンスにはReFeというツールが付属していてだな
147 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 18:30:33 ] >>145 > 第2引数は /path/to/file を渡しても /path/to/ とみなして処理される 違う。あやふやな知識で書くより、ちゃんと試してみることをすすめる。 File.expand_path("foo", "/path/to/file") #=> "/path/to/file/foo" File.expand_path("foo", "/path/to/") #=> "/path/to/foo" File.expand_path("../foo", "/path/to/file") #=> "/path/to/foo" File.expand_path("../foo", "/path/to/") #=> "/path/foo" > 相対パスを渡しても、絶対パスに変換したあとで基点とみなされる > startint point という語にそれだけの処理の意味を任せるのは初耳だ これも違う。重要なのは戻り値は絶対パスだということ。 File.expand_path("foo", "path") が "path/foo" だったら絶対パ スじゃないだろ? 絶対パスを返すという仕様が前提なんだから、相 対パスは他にどう扱いようがあるというんだ。
148 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 18:50:06 ] >>144 ruby-gettext-packageは知ってる。 本体の出力メッセージとかの話。
149 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 18:55:53 ] GNU gettextはLの付かないGPLだから、使うとRubyを Ruby's ライセンスではなくGPLで配布する必要が生じるかも。
150 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 18:56:19 ] www.nicovideo.jp/watch/sm5071807
151 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 19:01:06 ] 「読まない人は日本語でも読まない」wwww
152 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 19:16:33 ] インタプリタの出すメッセージは用語みたいなもんだから 翻訳するとかえってめんどくさいことになりそうな
153 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 19:23:19 ] 入ります
154 名前:デフォルトの名無しさん [2009/05/22(金) 19:28:51 ] みんな なでしこ やったことある?
155 名前:デフォルトの名無しさん mailto:sage [2009/05/22(金) 19:40:55 ] このスレでその質問をするココロは?
156 名前:デフォルトの名無しさん [2009/05/23(土) 02:19:17 ] @port = port if( !port.nil? ) の解釈で質問です。 最初の@はインスタンス変数で、右辺のifは修飾子だと思うのですが、 ()内の「?」の意味が分かりません。 これがは文字コードリテラルとは思えませんし・・・ どういう意味(役割り)なのでしょうか?
157 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:24:44 ] nil? というメソッドです
158 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:48:30 ] いちおう補足、リファレンスでObjectクラスのインスタンスメソッドを眺めてみて しかしなんというか、不慣れな時期にそのコードというのは運が悪いな せめて @port = port unless port.nil? と書いてほしい
159 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:53:02 ] うーん。識別子に使える文字等の解説が見つからない。 ttp://www.ruby-lang.org/ja/man/html/_BBFAB6E7B9BDC2A4.html#a.bc.b1.ca.cc.bb.d2 ↑これ、ぶっちゃけ不正確じゃね?
160 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 02:59:45 ] >>157-159 さんきゅうです。 つまり if( !port.nil? ) というのは、「portが無効でないなら(不活性でないなら)〜」 ということでOKですか?
161 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 03:05:25 ] うんにゃ。 if( !port.ni? ) → if()
162 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 03:07:57 ] あら。途中で書き込んだ。 if( !port.ni? ) → if( !port.nil? == true ) → if( port.nil? == false ) で理解してくらはい。 port.nil? は boolean を返すことが期待されてるメソッドです(たぶん)。
163 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 05:05:12 ] Ruby に Boolean などというものはありませんが何か あーでも結構使ってるなー >>156 A if COND という構造だということはわかってるんだよね if はメソッドではなく制御構造だから、このカッコは引数のカッコではなく式を作る「まとめカッコ」だ 中身1つだけだから、本当はこのカッコは必要ない で、最初の ! は否定の NOT だ ttp://www.ruby-lang.org/ja/man/html/_B1E9BBBBBBD2BCB0.html#not 直後にあるものの真偽の概念を逆転する つぎの port はなんらかのローカル変数またはメソッド呼び出しで、 ドットで繋がってる nil? は port の返り値のクラスの nil? というメソッド port のクラスで再定義されていないのなら、それは Object#nil? で、オブジェクトが nil である場合に true を返す まとめると、 「port の返り値が nli でない場合に、@port に port の返り値を代入する」 となる
164 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 05:14:20 ] Rubyではよっぽどでない限り @port = port unless port と書くけどな ・ port に false が入る可能性があって、それは nil とは違う処理が必要 ・ port が nil であるというのが何か重要なサインであってソース読み下し上目立たせたい というのでない限り、今回でいうところの 「port に何か入ってたら @port に入れとく」 というフツーの意図である限り、 Ruby では unless を使う
165 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 05:35:31 ] >>164 .gsub("unless", "if")
166 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 05:58:35 ] 「nil でない」なら if だと思う
167 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 10:07:30 ] # データからHTMLを作って返す def html html = String.new … return html end というように、メソッド内のローカル変数名とそのメソッドの名称が全く同じなのって、ある程度は紛らわしいですよね できれば避けるべきなんでしょうか?
168 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 10:58:18 ] 再帰のような処理と混同する可能性があるってこと? メソッド内1行目でローカル変数として定義されてれば読んでて混乱はしないと思う if (html = init_data) then みたいにどっかの文の途中でこっそり変数定義を使ってることがあるとか、 変数とメソッドを混ぜて使い倒してる処理があるとか、そういうのが1ヶ所でもあれば注意深く読む
169 名前:デフォルトの名無しさん [2009/05/23(土) 11:28:11 ] IOのexpertな方、教えてください >< # afio - manipulate archives and files COMMAND = "afio -oZ -" IO.popen(COMMAND, "r+") do |src| Find.find("/etc") do |f| src.puts(f.chomp) end src.close_write File.open("myArchive.afz", "w") {|dst| dst.write(src.read)} end afioコマンドが pipe_wait になって終了しません。 何が悪いのでしょうか?
170 名前:169 [2009/05/23(土) 11:49:24 ] ちなみに、コマンドライン上から $ find /etc | afio -oZ - 1>./myArchive.afz とやれば、何も問題なく動作するんです。 ワケワカメで頭が破裂しそうです ><
171 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 11:52:44 ] afioコマンドが、入力を読み切らずに何か書き出そうとして固まってるとか?
172 名前:169 [2009/05/23(土) 13:22:11 ] afioで作成されたアーカイブをバイナリエディタで読んでいてふと思ったのですが、 なにやらヘッダらしきものが書かれていて、その後ろにgzipで圧縮されたバイナリがずらーと並んでいる感じです。 このバイナリファイルをハッキングして、自分でライブラリを書いてしまえばいいと思いました。 外部のコマンドに投げるよりはよりキレイに書けるとおもいまつ。 ありがとうございました。
173 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 13:25:37 ] >>169 原因は>>171 の通りだろう。 アーカイブデータをなんか加工したいというんでなければ、直接書き出させた方がよい。 あとFind.findからyieldされるパス名はchompする必要はない、というかしてはいけない。 COMMAND = "afio -oZ myArchive.afz" IO.popen(COMMAND, "w") do |src| Find.find("/etc") {|f| src.puts(f)} end
174 名前:デフォルトの名無しさん mailto:sage [2009/05/23(土) 13:39:58 ] >>172 manpageによるとcpioフォーマットだな Except in special cases discussed below, afio will create archives with the same format as ASCII cpio(1) archives. 以下に述べる特殊なケースをのぞいて、afioはASCII cpio(1)アーカイブと同じ フォーマットでアーカイブを作成する。 When creating an archive, the `large ASCII' header is used by afio to cover the following situations: アーカイブを作成する際、以下の場合は「large ASCII」ヘッダが使用される。 o A file has a size larger than 2 GB ・ 2GBよりも大きいファイル o The archive contains more than 64K files which have hard links ・アーカイブ中のハードリンクが64Kを越えるファイル o A file, directory, or special file has a UID or GID value larger than 65535. ・65535より大きいUIDやGIDを持つファイル、ディレクトリ、特殊ファイル
175 名前:169 [2009/05/23(土) 21:41:37 ] すみません、最後に勉強のためにも教えてください。 納得したらもう寝ます。 >>171 にある、STDINからの入力を読み終わる前に、STDOUTに出力してしまうということがあり得るのでしょうか。 全て入力した後に IO#close_write も呼びましたし、他に意識することって何でしょうか。 Pythonの os.popen2 で同様の事をやってみたのですが、あっさりうまくいって クソワロタ状態です (;_;) >>173 ファイルシステムに頼らずにゴニョゴニョしたいので、開いたままで 何とか出来ないかと考えておりました。... 無理そうなら他の方法も探しますが。 > あとFind.findからyieldされるパス名はchompする必要はない、 > というかしてはいけない。 すみません、確かにchompする必要はありませんでしたね。 でも「してはいけない」というのは何か致命的にまずい問題があるのでしょうか。 以上、よろしくお願いします。
176 名前:デフォルトの名無しさん [2009/05/23(土) 23:24:38 ] whileの条件による終了(ループ脱出?)が分かりません。 下記は受信サーバー側のSocket通信の記述で、クライアントからの 信号s(オブジェクト)を受信したらRubyを終了したいのですが・・・ while true Thread.start(gs.accept) do |s| print(s, " is accepted\n") puts(s.gets) s.close break # ここでは無効 end end どう変更すべきでしょうか?
177 名前:169 [2009/05/24(日) 00:19:36 ] あああ、pythonでうまくいったというのは勘違いでした。(test caseのミス) でも IO.popen("cat | afio -oZ -") のように、catコマンドをクッションにしてみたらうまくいきました。 なんでだろうね。 バッファの関係?? 朝起きたらlinux板でも行って聞いてみます。。もう疲れた。
178 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 01:15:44 ] >>175 > >>171 にある、STDINからの入力を読み終わる前に、STDOUTに出力してしまうということがあり得るのでしょうか。 もちろんあり得る。それはプログラムの構造次第。afioの場合ファイル名を受 け取れば処理できるんだから、一つ分出力してもなにも不思議じゃない。 >>177 は、catでバッファリングされてclose_writeされるまでafioに何も渡されて ないんだろ。 > >>173 > ファイルシステムに頼らずにゴニョゴニョしたいので、開いたままで > 何とか出来ないかと考えておりました。... 無理そうなら他の方法も探しますが。 書き込みと読み込みでThreadをわける。 IO.popen(COMMAND, "r+") do |src| Thread.start do Find.find("/etc") do |f| src.puts(f.chomp) end src.close_write end File.open("myArchive.afz", "w") {|dst| dst.write(src.read)} end > でも「してはいけない」というのは何か致命的にまずい問題があるのでしょうか。 "\n"で終わるファイル名を正しく扱えない。
179 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 01:19:36 ] >>176 mth = Thread.current while true Thread.start(gs.accept) do |s| print(s, " is accepted\n") puts(s.gets) s.close mth.raise(SystemExit) end end
180 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 01:32:45 ] >>176 gsってTCPServer? サンプルをコピーしたとするとwhileで囲う必要もスレッドを生成する必要も無いと思う s = gs.accept print(s, " is accepted\n") puts(s.gets) exit
181 名前:176 mailto:sage [2009/05/24(日) 02:49:36 ] >>179-180 Thx 確かにwhile文無しでもOKでした。 今回は ttp://www.ftnk.jp/~fumi/cl/2007-11-24-1.html を参考にしました。 すいません。もう一つ質問です。 上記HPのクライアント側を改変して2行のテキスト「memo.txt」を読み込み サーバーに渡すように data = File.read("memo.txt") puts data # チェック用 s.puts(data) を書きました。 クライアント側では2行で表示されるのですが、サーバーの表示 puts(s.gets) では最初の1行目のみが表示されます。 これは何故でしょうか?
182 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 03:57:22 ] 文字列がcopy on writeじゃないのが他の言語と違って結構ハマることが多いのですが、 何か気をつける方法ってないのでしょうか? Rubyでは全部オブジェクトってのはわかっているつもりなのですが…。 #!ruby -Ku a = "hage" b = a b << "UNKO==!!" def change_string(s) s << "(((^^)))))" end change_string(b) puts a, b 結果: hageUNKO==!!(((^^))))) hageUNKO==!!(((^^)))))
183 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 04:50:17 ] >>181 IO#gets が何をするメソッドなのかマニュアルで調べてみ >>182 それって別に文字列に限った話じゃないよね 配列、ハッシュ、その他のオブジェクト、なんでも当てはまる オリジナルでは無くてコピーが必要なら必ずdup,clone、を徹底するしかないかな
184 名前:176 mailto:sage [2009/05/24(日) 05:02:30 ] >>183 どうも。 readに変えたらOKでした。
185 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 05:45:31 ] >>182 Rubyのあらゆる変数(や定数)はただの参照タグだ a = HogeObject.new は HogeObject.new の処理の最後を辿って(return してた)そのオブジェクトに存在を許して それに a という参照タグを1個つけるという行為 b = a は a の処理の最後を辿って、つまりは a の返り値のオブジェクト、に b という参照タグを追加する行為 Ruby スクリプトは変数の名前を後生大事に覚えてるわけじゃない Rubyはスクリプトのそれが変数名だとわかったら、その変数が参照している先にあるオブジェクト (の保管場所を表す数値「オブジェクトID」)だけを記憶する だから、 a = なにか b = a と書いた時点で、変数 a も変数 b も全く同一のオブジェクトを指す(つまり、一般的にはあまり意味がない) a = "なにか" p a.object_id b = a p b.object_id p a.object_id == b.object_id
186 名前:182 mailto:sage [2009/05/24(日) 05:51:03 ] >>183 >>185 せっかく説明してくださって申し訳ないのですが 原理をわかってて言ってるのです…(´・ω・`) 他の言語のつもりで書いちゃうと、ついバグを埋め込んでしまう まあ、ユニットテストしっかりしろってことになるのだと思いますが…。
187 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 05:52:21 ] で、既存のオブジェクトを破壊せずに、その内容を利用した新たなオブジェクトを作りたい場合は、 その既存のオブジェクトを破壊しないような方法を意図的に使う a = "hage" b = a + "ADD" def change_string(s) s + "CHINGE!" end c = change_string(a) p a, b, c 結果: "hage" "hageADD" "hageCHINGE!" オブジェクトを「足して」新たなオブジェクトを作るようなメソッドが提供されていなかったらどうするか、というのなら そりゃ>>183 の言うようにオブジェクト内容自体を複製して新たなオブジェクトを作る dup や clone を使うしかあんめえ
188 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 05:54:44 ] >>186 「わかってない」と思う わかってるのなら“絶対に間違えない”から 逆にいうと、オブジェクトと変数の関係を理解するまではよーわからんバグで悩まされて 変数は安全のためにと称して全部 initialize やメソッド定義の 1行目で dup することになるんだけどな
189 名前:182 mailto:sage [2009/05/24(日) 05:57:44 ] >>188 「わかってる」のと「間違えない」というのは等しくないですよ。 わかってて、正しいことができるなら、俺は今頃、億万長者になってる
190 名前:182 mailto:sage [2009/05/24(日) 06:00:14 ] 変なところだけレスして煽りっぽくなってしもうた orz 流してくださいwww >>187 ああ、なるほど、確かに既存のオブジェクトを破壊しないでコピーされる場合は、OKですね。 >>188 メソッドなどで渡された引数とかなるべくdupするわけですか。なるほど。
191 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 06:01:54 ] >>189 いいえ、理解してないんです 「他言語を使いこなす俺がこれごときを理解できていないはずがない」というようにプライドが邪魔をしてるだけです 本当は理解してないのを見なかったことにして「他の言語と違って結構ハマる」と問題を差し替えているのです これは特に目新しい概念というわけでもありません きちんと理解しましょう
192 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 06:27:16 ] むしろ Ruby に慣れると、ほかのスクリプト言語で「同じデータ」を使う必要性が出てきたときに メモリでどういう状態になってるのかがとっても気になる Ruby なら同じものを使い倒してるということが感覚的にわかって安心できるんだけれど
193 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 06:41:45 ] >>190 よく読め dup なんてまずしない しなければならないときはもちろんするが、普通はしないで済む方法を考える 「とりあえず dup」をしないとわけがわからなくなる初心者は dup する、と言ってるだけ いい解説に出会えない独学系初心者の多くが通る無駄道ではあるが、 こんな期間は短いほどいいし、これに嵌る前に回避できれば最高だ
194 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 06:44:59 ] >>182 「copy on write」とかいってる時点でまるでわかってない
195 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 07:51:49 ] >>167 >というように、メソッド内のローカル変数名とそのメソッドの名称が全く同じなのって、ある程度は紛らわしいですよね >できれば避けるべきなんでしょうか? 心配なら変数名を _html とかに変えればオK >>194 ワハハ、その通りだ
196 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 08:09:06 ] 俺は「わかってれば絶対に間違えない」とは思わないな 他言語の経験が短い俺でも、たまにdupし忘れることがある 結局は慣れだろう ただ、時々ではなくて頻繁に間違えるというのであれば、ちゃんと理解できていないのかもしれない 実際に間違えたコード例を晒してもらえれば、もう少し具体的なアドバイスができるかも
197 名前:182 mailto:sage [2009/05/24(日) 08:35:40 ] >>194 うーん?頼む! 2chでよくあるのだけど、「コイツはアホ」とか「わかってない」とか言う時は「何故か」を明らかにしてほしいです。 言っている本人は本当にそうなのか判断できず、煽りかと思ってしまうので。 "copy on write"は書き換えたら、コピーされるという意味の用語です。 この言い方は一般的じゃないのかな? Delphiの組み込みのstringの機能がそう呼ばれているわけなんですが。 (ただ、この辺はけっこうマジック的な扱いで、 Delphiでも文字列と似たような振る舞いをする動的配列では、 copy on writeはしなかったりとDelphiの中でもけっこう戸惑う扱いです) >193 慣れたら、dupしないように書く、ということでしょうか?
198 名前:182 mailto:sage [2009/05/24(日) 08:40:25 ] ああ、でも書いていて思ったけど、 オブジェクトのメソッド呼び出しで copy on write がどうのって確かに変だよなー。 そもそも、組み込み型じゃないん(というよりコンパイラが特別扱いしてない)だし とはいえ、それよりも、 俺が聞きたいのは、どうすれば気をつけられるんでしょうか?ってことなんですが、 その答えは「理解しろ」ってことなんでしょうから、「お前はわかってない」なんていわれるんですよね…。
199 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 08:54:52 ] > どうすれば気をつけられるんでしょうか? 無駄に破壊的メソッドを使わないってだけでいいんではないかと思った。
200 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 09:02:24 ] >>185 が普段使いで必要十分な一般的な理解 これができない場合は無理
201 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 09:10:34 ] オブジェクトと参照の問題ってだけだからな
202 名前:196 mailto:sage [2009/05/24(日) 09:14:13 ] >>197-198 >どうすれば気をつけられるんでしょうか? 実際に間違えてるコードを見ないと、何とも言えないが とりあえず破壊的メソッドと非破壊的メソッドの違いを意識することは大事 あと copy on write に関しては、「Rubyにその概念はない」としか言えない なぜなら 破壊的メソッド → オブジェクトの内容を直接書き換える(オブジェクトのコピーはしない) 非破壊的メソッド → 元のオブジェクトのデータを読んで、それを元に新しいオブジェクトを生成して返す であって、どちらの場合も「書き換えたときにコピーする」という動作はしてないから "abc\n".chomp! # 文字列 "abc\n" の内容を変更する(新しい文字列は生成しない) "abc\n".chomp # 文字列 "abc\n" を元に、新しい文字列 "abc" を生成して返す
203 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 09:15:54 ] ・代入したり引数で渡すだけじゃコピーされないよ ・破壊的なメソッドには大概 ! とか = とか付いてるから目安にして気をつけてね としか
204 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 10:06:47 ] mutableと言いたいんだろcowじゃなくて てかcowは実装の詳細であってプログラマからは掩蔽されるものだ
205 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 10:09:22 ] >>197 きみはもしかしたらcopy on writeについては理解しているのかもしれないけど それがRubyとはまったく関係ないことが理解できてない
206 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 10:13:21 ] インスタンス変数の配列の要素への代入とか、ちゃんと最初にdupなりしておかないと わけわからんようにはなりそうだけどね。
207 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 10:28:53 ] >>206 どっかでの変更がリアルタイムに反映されるなにやら便利な配列として扱うような気もする ともあれ、目的を確定させた上で処理すべきだな とりあえず○○するとかそういうのはありえん
208 名前:169 [2009/05/24(日) 13:03:40 ] >>178 | \ __ / _ (m) _ピコーン |ミ| / `´ \ ('A`) ノヽノヽ くく そうか、子プロセスが終了するまで親プロセスはwait状態になるのか! IO.popen("ruby -e 'sleep(30)'", "w") do |io| p io.puts("my message") #=> nil puts "ok, all finished !" # After a few seconds... p io.close_write #=> nil puts "closed?" end うわー、完全に失念していましたよ。 wait状態だから、実際には IO#.close_write がコールされずに止まっていたわけか。 Threadを生成してやってみたらうまくいきました! 本当にありがとうございましたです。
209 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 14:56:40 ] ちゃうねん。 system(3) とかだと子が終わるのを待つけど、popenは同時に実行するためのAPI。 その例だと、何も読み込まない ruby -e 'sleep(30)' に io.puts("my message") で 書き込もうとして固まってるわけ。
210 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 15:58:43 ] 169の環境はMS-DOSなのかも知れない
211 名前:169 [2009/05/24(日) 16:23:30 ] ピコーン!今度こそわかりました。 IO.popenでafioコマンドにパイプを確立し、IO#.writeで標準入力に読み込ませる。 afio君は標準入力から来たファイル名を開いて、適切なフォーマットで標準出力に吐き出そうとする。 afio「さあバイナリができましたわよ。もらってちょうだい!随時出力するから。」 しかしreadされないため、 afio「なにやってんの!早くreadしてよ。わたしのバッファサイズはそんなに大きくないのよ。 メモリだって有限なんだから。あなたがreadしない限りいつまでもwaitするわ!」 ということなんですね。
212 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 18:00:14 ] 少しお聞きしたいのですが、 railsでrake db:migrateを行うと mysqlが以下のエラーを吐くのですが、 >rake db:migrate (in d:/web/redmine/redmine) == 1 Setup: migrating ========================================================= -- create_table("attachments", {:force=>true}) rake aborted! undefined method `each' for #<Mysql:0x803e550> (See full trace by running task with --trace) これって、MySQL 5.1はWindowsだとダメヨという既知な問題なのでしょうか? xamppごとMySQL 5.1を入れてしまっているもので、MySQL 5.0で上書きしてよいものかどうか・・・ Nabble - RubyOnRails Users - rake aborted! undefined method `each' for #<Mysql: www.nabble.com/rake-aborted!-undefined-method-%60each%27-for--%3CMysql:-td20760472.html
213 名前:212 mailto:sage [2009/05/24(日) 19:08:38 ] >>212 のサイトにあったInstantRailsのlibmySQL.dllを (rubyインスコディレクトリ)/bin に配置したところ、 無事にdb:migrateできました。 5.0のDLLだろうと思うので不安ではあるのですが、様子を見ながら使ってみようと思います。 >The problem is that libmysql.dll shipped with Mysql doesn't play well > with ruby 2.2.. > The solution is to download the libmysql.dll from: > instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/libmySQL.dll > and save this in your ruby bin directory ありがとうございました。
214 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:12:09 ] pc11.2ch.net/test/read.cgi/php/1241100447/ 【Ruby】Ruby on Rails Part7
215 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:24:50 ] 文字列を spl iして、文字種類の境界で分ける方法はありますか。 たとえば x=("abc123+456def").split(/??書き方不明/) とすると x[0]="abc" x[1]="123" x[2]="+" x[3]="456" x[4]="def" みたいにしたいのですが。
216 名前:デフォルトの名無しさん mailto:sage [2009/05/24(日) 23:44:58 ] >>215 「文字種」の定義次第では可能。
217 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 00:02:58 ] >>215 たとえば、シンプルでいいなら下記のようなことはできる(splitじゃないけど) "abc123+456def".scan(/[a-zA-Z]+|\d+|\W+/) #=> ["abc", "123", "+", "456", "def"] んだから、>>216 の言うとおり「文字種」を定義すれば可能。 で、それを定義してるUnicodeブロックなるものもあるらしい ttp://module.jp/blog/regex_unicode_prop.html Rubyでは鬼車採用の1.9以降、になるのかな? 詳しくないけど、参考になれば
218 名前:デフォルトの名無しさん [2009/05/25(月) 03:58:48 ] Rubyの使用メモリ量を調べるにはどう書けば良いのですか?
219 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 04:05:30 ] >>218 できません
220 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 05:24:54 ] Ruby自体から知る方法は確かにないが、環境依存で外部ツールを読んで取得するライブラリがrubygemにあったと思う
221 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 08:25:31 ] undefined method `inner_text' for nil:NilClass (NoMethodError) …う、うぜえ
222 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 12:13:12 ] どうでもいいけど、委譲関係ってマニュアルもるびまも要領得ないよね
223 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 12:16:27 ] メモリ使用量、ヒープの個数くらい Cのメモリマネージャから取れるようにしておけばいいのに 無理な環境は0にしておいて
224 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 12:29:00 ] >>222 あんま多用して欲しくないんだよ たぶん
225 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 15:11:55 ] GnomeVFS for Python の gnomevfs.get_file_info() ※ に相当する GnomeVFS for Ruby のメソッドをご存じの方いましたら教えてください。 ※ www.pygtk.org/pygnomevfs/gnomevfs-functions.html#function-gnomevfs--get_file_info
226 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 15:31:28 ] これ廃止予定じゃない?
227 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 15:34:51 ] >>225 File.statじゃあかんの? gtkとかgnomeとかってAPIコロコロ変えるから嫌い
228 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 15:38:36 ] >>227 VFSごしにウンタラカンタラしたいのだろう
229 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 15:41:44 ] Gnomeの開発者も、VFSはもうやる気がないみたいだがw
230 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 15:48:04 ] >>221 asin = doc.at('ASIN').inner_text こんなのだろ doc.at('ASIN') が nil になる可能性があるから tag_asin = doc.at('ASIN') asin = if tag_asin then tag_asin.inner_text else nil end みたいに場合分けで書かなければいけない こういうのってなんかイイ書き方ないもんかね
231 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 15:53:09 ] >>230 >>73-86
232 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 18:23:28 ] >>219-220 てんきゅう
233 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 19:07:46 ] >>217 >scan(/[a-zA-Z]+|\d+|\W+/) ありがとうございます。 scan にこんな使い方があったんですね。 こんな正規表現の記法は知りませんでした。 あまり難しいことはまだ無理なので、これでいきます。
234 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 19:45:24 ] >>222 疲れてるときは全然読めないな 何言ってるかさっぱりわからん 用途別にまとめてくれてると頭に入ると思う
235 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 19:54:10 ] >>233 一応補足しておくと、 \W とかの文字クラス表現は中身を確認しておいた方がいいよ 例示だから適当でいいんだけど、>>217 のは "_" とかスルーするね。 また、改行やスペースの扱いとか、意図通りに動かすためにはちょっと気をつけて。
236 名前:デフォルトの名無しさん mailto:sage [2009/05/25(月) 23:24:11 ] 本格的なものが必要なら、 StringScannerとかを使って自力で解析器を書くべきかもしれない
237 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 14:06:21 ] 質問 トップレベルにて定義されたメソッドの一覧を取得する方法はありますか? toplevel_methods = Object.private_instance_methods toplevel_methods -= Kernel.private_instance_methods で、大体は絞り込めるのですが、トップレベルに未知のモジュールが include される 場合などを考えるとこのやり方では心もとないです。 トップレベルで定義されたメソッドだけをきれいに抽出する方法はないものでしょうか。
238 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 15:00:51 ] Object.private_instance_methods(false) * 1.8 系だと initialize も含まれる * ふつうに、 class Object def bar end private :bar end とした場合との区別がつかない
239 名前:237 mailto:sage [2009/05/27(水) 15:25:23 ] 自己レス あれこれ考えた結果、無理にトップレベルでやろうとするのが間違いと気付きました。 モジュールでラップして MyModule.instance_methods(false) で済みますね お騒がせしました。
240 名前:デフォルトの名無しさん [2009/05/27(水) 20:50:38 ] 初心者です。Webrickでキャッシュプロキシを作ろうと思ったのですが、 実装例を見つけられませんでした。とりあえず書いてみたのですが問題があります。 1.ヒットした場合にWebサーバにアクセスしないでブラウザに戻す方法がわからない。 2.WEBrick::HTTPResponseのインスタンスを単純に復元しただけでは上手く表示できない。 #/usr/bin/ruby 1.8.7p72 webrick 1.3.1 winXP require 'webrick' require 'webrick/httpproxy' db = Hash.new() rcHandler = Proc.new() do |req, res| if db.key?(req.unparsed_uri) res = db[req.unparsed_uri] end end handler = Proc.new() do |req, res| db[req.unparsed_uri] = res end config = { :BindAddress => '127.0.0.1', :Port => 8080, :ProxyContentHandler => handler, :RequestCallback => rcHandler } s = WEBrick::HTTPProxyServer.new(config) [:INT, :TERM].each{|sig| Signal.trap(sig){s.shutdown}} s.start 実装例とかヒントをいただけたらありがたく思います。
241 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 21:09:52 ] NicoProxy2とか
242 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 21:56:44 ] かなり前の知識しかないけど、webrickってresponseしかいじれないんじゃなかったっけ。 requestは無理だったきがす
243 名前:デフォルトの名無しさん mailto:sage [2009/05/27(水) 22:14:41 ] >>240 俺がやってるのはこんな感じ class MyProxyServer < WEBrick::HTTPProxyServer def proxy_service(req,res) if req.request_uri がキャッシュされてるなら # キャッシュを読み込んでresにセット else super # resをキャッシュファイルに保存 end end end
244 名前:240 [2009/05/27(水) 22:51:04 ] >>243 なるほど、マイリマシタ。 RequestCallbackハンドラなんて要らなかったよう。 方向を間違えると収拾つかなくなるいい例ですね。 ありがとうございました。
245 名前:240 [2009/05/27(水) 22:56:46 ] >>242 リクエストはRequestCallbackハンドラで変更可能だと思います。 一応、240のプログラムは完動品ですので、よかったら試してみてください。 どうもありがとう
246 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 14:16:14 ] RubyGemsのアップデートに失敗してしまいます。 ねーよって言われるんですが、どうしたものでしょうか? Windowsでのアップデートは失敗した覚えがないのですが… > sudo gem update --system Updating RubyGems... Bulk updating Gem source index for: gems.rubyforge.org Attempting remote update of rubygems-update ERROR: While executing gem ... (Gem::GemNotFoundException) Could not find rubygems-update (> 0) in any repository 環境: ・Ubuntu 8.04 LTS ・Ruby -v ruby 1.8.6 (2007-09-24 patchlevel 111) [i486-linux] (aptitudeで入れた) ・RubyGems 0.9.4 (aptitudeで入れた)
247 名前:246 mailto:sage [2009/05/28(木) 14:24:30 ] すいません。5回くらい試していたら、無事に入りました 恐れ入ります。
248 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 14:35:40 ] バージョン1.1以前のrubygemsは粗大ゴミなのでとっとと入れ替えましょう Debianパッケージでrubygemをインストールするとrubygemのアップデートが実質不可能になるのでアンインストールすることをお勧め まあ、そうするとDebianパッケージシステムで管理できない野良パッケージシステムができてしまうんだけど、 まあ、背に腹は変えられん
249 名前:デフォルトの名無しさん [2009/05/28(木) 16:52:12 ] array[0][:value] == 'dog' || array[0][:value] == 'cat' みたいなのをもっと短くできんもんでしょうか? array[0][:value].equal?('dog', 'cat') みたいな感じに。rubyならできるような気がするのですが・・どなたか教えていただけるとうれしいです。
250 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 16:57:42 ] ['dog', 'cat'].include?(array[0][:value])
251 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 16:58:23 ] ['dog', 'cat'].include? array[0][:value]
252 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 19:51:25 ] %w[dog cat].include?(array[0][:value])
253 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 19:59:58 ] case array[0][:value] when 'dog', 'cat' end じゃだめなの?
254 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 20:11:25 ] 用途による >>249 みたいなのは後置の if みたいなので1行で条件が書けることが望まれてるんだろう
255 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 20:15:34 ] >>253 短くなってないじゃん。 >>254 case str when "dog","cat"; true; else; false; end
256 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 20:25:04 ] Windowsで、RubyとC言語で書かれた2つのプログラムでテキストファイルを使って情報をやりとりしたいんだけど Rubyからテキストファイル開くときにC言語のプログラムから読み書き禁止させたいんだけど、そういうことできるの? C言語だと_fsopenてのがあるけど、RubyのFile.open にはそういう機能ないっぽいんだけど・・・
257 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 20:31:59 ] >>255 1行にまとめることができるというのと、1行で書けるというのには天と地ほどの差があるのだよ
258 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 20:41:16 ] >>257 そうか? 少なくともこの場合、戻り値のある式であればいいんじゃね?
259 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 21:07:32 ] ちょうどいま Object#in? (定義はinclude?の主客転倒)という メソッドの導入の是非についてのスレッドがML(えーごの)で出てますな。 # 何度めやら。
260 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 21:23:49 ] >>256 _fsopen は C言語の機能ではない。 _fsopen はなんか「読み書き禁止」なんてしなくてむしろ共有読み書きをするっぽい。 Rubyでファイルの共有とか排他とかはFile#flock
261 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 21:25:11 ] include? を持つ引数を取って、みたいな感じかな あってもいいんじゃないとか思うが、あんまり賛同されてなさそうな雰囲気
262 名前:デフォルトの名無しさん [2009/05/28(木) 22:20:05 ] (∀`*) (●´Д`) { {
263 名前:デフォルトの名無しさん mailto:sage [2009/05/28(木) 23:29:10 ] >>259 なんかそれ実際に使えるようにしたライブラリなかったっけ どこかで見た記憶はあるんだけど、思い出せない
264 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 00:15:36 ] facetあたりじゃね?
265 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 00:28:23 ] ほんとだ ttp://facets.rubyforge.org/doc/api/core/classes/Kernel.html#M000425
266 名前:249 [2009/05/29(金) 00:47:11 ] おー色々ありがとうございます。 結局 ['dog', 'cat'].include?(array[0][:value]) これがいいかな、と・・後置のif文なので。 in?みたいなメソッド、今のところは無いんですねぇ。 今MLで話になってるみたいですが、in?みたいなの導入のネガティブな点って何があるんでしょう?
267 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 01:10:58 ] >>266 > これがいいかな、と ぶっちゃけ、それしか出てないという気もw (caseはネタだろ) でも、 > 後置のif文なので ってのは、caseでもいけるっていう話で > 今MLで話になってるみたいですが、in?みたいなの導入のネガティブな点って これのことだろうな↓ ttp://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-core/23543?23446-23591 斜め読みでは、 「あったら便利だぜ」 vs 「んなもんKernelに入れるってのはどうなの」 って感じに見える。 過去にもあったんなら、もうちょっと丁寧な話もしてたのかな。 詳しい人の解説を期待してみたりして。
268 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 01:16:02 ] Kernel#in? (Objectじゃなかた)への反対意見は * どこかの集合に含ま「れる」というのはメンバーの特性と言えるのか * 実装は簡単だから自分の環境でやっとけばいいじゃん * すべてのオブジェクトの名前空間を汚染してまで導入すべきもの? などがあるようだ。
269 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 08:58:43 ] >>264-265 SUGEEEEE! こんなライブラリがあったのか 今まで全然知らなかったんだけど、実はけっこう有名なライブラリ?
270 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 09:06:31 ] アプリケーションサーバに興味のある人にとってはそこそこ有名 わざわざそんなことやろうという人そのものが稀なので、それ以外の人にとってはさっぱり
271 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 12:54:49 ] -talkだと結構名前を見かけるが、実は日本じゃあまり知られてない?
272 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 13:12:30 ] 日本のRubyユーザーってRubyを何に使ってるのか正直よくわからん
273 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 13:22:19 ] >>272 同感。 最近別言語から Ruby をはじめたんだけど、 有名アプリも少ないし、日本語の扱いや Rails 以外だと Web が面倒だったり。開発環境も貧弱。 1.9 の非互換で騒がれていないものな。 PHP なら 4 → 5 で騒がれたけど。 1 日でできる blog くらいしか作ってないのか?という感じ。
274 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 13:28:11 ] 1日で作れるような100行単位の日常スクリプトを作り倒しまくってるというのは確かだと思う かつてのUnixユーザーがシェルスクリプト作りまくるのが日常だったように、 Rubyユーザーは自分用スクリプトを作りまくって日常を便利に過ごす んが、まあ、これはこれで一部の人だろうな 最近作った・手直ししたもの挙げていけばアクティブユーザーの傾向が少しでも掴める?
275 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 13:34:17 ] Rubyについて Part 35 pc12.2ch.net/test/read.cgi/tech/1238194350/
276 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 13:41:13 ] >>275 Rubyに関係ないスレのURL張られても困る > 島根 > 島根 > 鳥取 > 島根 > 鳥取 > 島根
277 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 16:34:09 ] ゲーム と言いたいところだが、今のところRubyベースで有名なゲームは皆無に等しいな RPGツクールのスクリプトで使われてはいるが 274の言うように日常のツールとして使うと超便利で、あと他には * 大小問わずWebアプリケーション(CGIアプリケーション)を作りたいとき * RADを使わずにGUIアプリを作りたいとき(WxRubyなどを使う) * 簡単な数値・確率計算がしたいとき なんかに使う 特にRakeの便利さは異常 俺はもうRakeなしでは快適なPCライフを送れない >>273 Webアプリならそこそこ有名なのはあるよ。tDiaryとか あとWeb周りが面倒だったのは昔の話で、今はWEBrickやRackがあるからむしろ楽なはず
278 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 16:50:24 ] 処理が少しくらい遅くても重くても作りやすくてメンテしやすいほうがいいこともある、という裏方用途にガッチリはまったので、 Rubyが表舞台に出てくるのは、Rubyが普及すれば普及するほど減るような気がしてならない 「シェルスクリプトって使ってる人いるんですか? シェルスクリプトのメジャーなアプリケーションってなんですか?」 という問いに答えにくいのとおそらく一緒になる という空想 ある程度使えるようになれば普段で使えるじゃん、と気づく日が来る(ただしコンピュータ利用環境依存)んで、 初心者の人は肩肘張らずにダラダラやるといいと思う 質問ある方どうぞん
279 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 16:58:23 ] 時間があったら絶対に Java | C | PHP で書き換えるから、と言われつつ ずっと Ruby スクリプトのまま時々呼ばれて便利に動いてる、みたいなのが個人的理想 UNIX文化に傾倒して夢見すぎかもしれないが、理想くらい楽しく行きたいと思う
280 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 18:25:30 ] 便利スクリプトに使ってますよ。ベターPerlみたいな感じ。 ゲームのスクリプトを生成したりとか、 他の言語のサポート用スクリプトにベターmakeなrakeもつかってる
281 名前:デフォルトの名無しさん [2009/05/29(金) 21:20:18 ] 日本人作った言語なら日本語のドキュメント豊富なはず。 PerlやPHPの方が日本語の資料多いじゃん。 他に移行。
282 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 21:23:48 ] >>281 ばいばーい。
283 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 23:26:24 ] ドキュメントが豊富でも言語自体に魅力が無ければ意味が無い perlやphpが魅力的だと思うなら、お前にrubyは向いてないよ
284 名前:デフォルトの名無しさん mailto:sage [2009/05/29(金) 23:38:15 ] 幼女から熟女まで余裕でいける俺にはなんの苦も無いぜ。
285 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 00:33:30 ] >>281 には KENT の Perl入門がお似合い
286 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 01:01:24 ] るりまってあんま読まれてないのかな?
287 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 03:14:26 ] 大小問わずウェブは辞めといたほうが吉。 基本は使い捨てだよ。メンテ必要なのは向いてない。
288 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 05:45:29 ] 君の見てるウェブはメンテナンスフリーなんだな うらやましいよ
289 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 05:58:42 ] いやいや、PerlやPHPの方がよいと思ったら、すでにそっちへ行ってるw PHPはドキュメントは豊富。これはPHP案件の時マジ助かった。 しかし、ちょっと踏み込むと全然ドキュメントなかったりする… DateTimeクラス?とかドキュメントなくて、なきそうになった 2chでDateTimeについて質問したら、PHPがオブジェクト指向言語だと思うなよ、とか あげくに、オブジェクト指向言語氏ねとか煽られるし。所詮その程度。 Perlは10年前にやったがモダンPerl覚える気ねえや… モダンPerl憶えるくらいならRubyの方がラクチン 幸い、Perlの資産は書き捨てばっかで少なかったし
290 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 09:49:53 ] お尋ねします。 あるファイル内の文字列を一文字単位で並び替えることは可能でしょうか? それを各行単位とファイル単位の二種類のやり方で並び替えたいのです。 1.元ファイルの例 あいうえお かきくけこ さしすせそ 2.各行単位の並び替えで希望する結果 おえういあ こけくきか そせすしさ 3.ファイル単位の並び替えで希望する結果 そせすしさこけくきかおえういあ 実際の文字列は例と違ってバラバラなので、 A-Z や Z-A のようなソート機能は使えません。 このようなプログラムをRubyで組みたいのです。
291 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 09:59:22 ] reverse でいいんじゃね?
292 名前:デフォルトの名無しさん [2009/05/30(土) 10:04:07 ] 俺ならスタックに入れてreverse
293 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 10:08:04 ] irb(main):006:0> puts "あいうえお".reverse ィえういあ なんか化けるな。KCODE='s'のせいか? WindowsだとUTF-8でirb使う手段がないんだが、みんなどうしてるんだろ
294 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 10:10:26 ] str.split(//).reverse.join
295 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 10:14:41 ] str.split(//E).reverse.join # E は str の文字エンコーディング1文字 どう小細工しても文字ごとの配列を作らざるを得ないので素直に巨大な配列を作るべし
296 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 13:02:26 ] gsub!(/\n/,"") で改行が削除(置換)できません。何故?
297 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 13:08:08 ] できてるけどなあ。 ¥nのバックスラッシュが 0x5Cではなく 0xA5 になってるとか。 実は改行が ¥r¥n だったとか。
298 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 13:19:47 ] \n は「改行」という集合じゃないんだよね あくまで LF という文字そのもの 1個 LF 以外の改行があるならそれも併記しないと駄目
299 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 13:22:56 ] >>297 \n , \r\n , \r の全部でやってみましたが変わりません。 Windows環境だから \r\n ですが、 今まで \n で問題なくマッチてしていました。試しに、 line.gsub!(/\n/,"問題") でやってみたら行末に「問題」が追加されて改行はそのままですし。 置換のはずが追加の動作になっています。 理由がサッパリ判りません。
300 名前:デフォルトの名無しさん [2009/05/30(土) 13:27:44 ] >>299 そもそも line には \n が含まれているのか? p line でデバッグしてみ。
301 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 13:28:12 ] 対象文字列を inspect とか dump とかしてみるといいよー。
302 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 13:39:47 ] >>300 置換前を p line してみると各行に \n がありました。 置換後には \n が無くなっていました。 これを見ると置換は成功しているようです。 エディターの問題なんでしょうか。 でもエディタ側で CR+LF , CR .LF を区別して表示してみると CR+LFが残っているんですよね。 もうちょっと頑張って原因を探ってみます。
303 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 13:45:12 ] File.openするときに binary モードになってないとか、 あと、DOS窓からコピーすれば CRLF になるとか。
304 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 13:55:40 ] >>302 原因を探るも何も、それが全てじゃ>改行コードの(意図しない)混在 自分でも > Windows環境だから \r\n ですが、 と書いているように、環境(というかむしろそのデータを吐き出すアプリ)に依って、 その3パターンが入り乱れるなんて、不注意でよくあるケース。 # CR単独、ってのはほぼないけど。 FTPのアスキーモードでファイルの上げ下げをしたり、また適当な設定のエディタで 読み書きすることによっても、テキストデータの改行コードはさくさく変換されつづける。 たまに CRCRLFとかになってて悲しくなることがある。 個人的には、アスキーモードとかテキストモードとか言う改行コードの自動変換処理を 絡ませてろくな事になった記憶がない。 Windowsだけど、自分のスクリプトやそこで使うデータは全部LFで保存してる。 # メモ帳で読めないとか知ったこっちゃない。
305 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 19:59:29 ] Ruby初心者ですが、他言語の経験はそれなりにあります。 やりたいこと。 Rubyで外部コマンドを起動して、それを任意のタイミングで終了させたいです。 より詳細に。 自分のプログラムの通信をTCPdumpを使って調べたい。 ただし、何回も実験を繰り返すので、手で起動、終了を繰り返すのは避けたい。 今考えている手法 マルチスレッドでプロセスをつくり、その上でTCPdumpを走らせる。 メインのスレッド上では、自分のプログラムを起動し、しばらくするとそれが終了する。 すると、マルチスレッド上のTCPdumpにシグナルを送って停止させる。 これを数十回繰り返す。 どのように解決すればよいでしょうか。 もしよろしければアドバイスいただけると助かります。
306 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 20:13:13 ] これまた Ruby 関係ないな 動いてる tcpdump に SIGINT か SIGTERM を適当に送れ
307 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 20:13:17 ] 書き忘れましたが、起動の仕方は分かります。 ただ、Ctrl-cで終了させるプログラムをどのように停止させるかが分かりません。
308 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 20:18:22 ] なるほど。こっちもOSのコマンドを利用するわけですか。 ジョブ番号を出す、tcpdumpのジョブ番号を取得、kill ってわけですね。 めんどうですが、その方法でやることにします。 ありがとうございました。
309 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 20:25:09 ] どう見ても他言語の経験もそれなりにしかありません、の間違いだな。 質問も回答も全くRuby関係ないw
310 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 20:39:04 ] >>308 Rubyから子プロセスにシグナルを送れるよ。
311 名前:デフォルトの名無しさん mailto:sage [2009/05/30(土) 20:52:34 ] >>310 おお、本当ですか。 今調べてみたんですが、それは www.ruby-lang.org/ja/man/html/Process.html であっておりますでしょうか? これを使ったら、 process.pidの値を取得して、 kill(pid) のように出来るので 上のコードよりかは幾分綺麗になりそうですね。 ありがとうございます。
312 名前:デフォルトの名無しさん [2009/05/31(日) 02:29:50 ] 文字列を与えられた時、アルファベットを大文字小文字区別せずに出現頻度順に小文字で並べた文字列を返すプログラムを作る問題がわかりません。
313 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 02:38:47 ] 何がわからないの?宿題は自分でやるもんですよ?
314 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 06:34:44 ] >>312 誘導 pc12.2ch.net/test/read.cgi/tech/1200175247/
315 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 16:06:17 ] hoge::huga と hoge#huga はどういう意味ですか?
316 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 16:12:59 ] クラス名やメソッド名を連結するときの表記に使う :: と # の違いだと解釈 :: はクラスやメソッドや定数を連結する表記に使い、実際のスクリプト上でもそのように動作する # はインスタンスメソッドを表す表記に用いられ、実際のスクリプト上では動作しない、マニュアル専用の表記 A::B::C は Aクラス(かモジュール)の中にあるBクラス(かモジュール)の中にあるCクラス(かモジュール)、 または、 Aクラス(かモジュール)の中にあるBクラス(かモジュール)の中にある定数C 原理上、スクリプトを参照しない限り、見かけではこの2つを区別できない A#hoge は、Aクラスのインスタンスメソッドhoge a#hoge は、オブジェクト a のクラスで定義されているインスタンスメソッド hoge マニュアルのどっかに書いてあった気がする
317 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 16:40:18 ] >>316 ありがとうございます。
318 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 16:43:22 ] >>316 クラス名#メソッド名 という表記、例えば String#upcase というのを見るのですが、 これはStringクラスのインスタンスの持つupcaseというメソッド、という意味でいいですか? 見ようによってはクラスメソッドに見えます。
319 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 16:49:56 ] インスタンスメソッドを URI#path のように # つきで書くような人間は、 クラスメソッドは絶対に URI.parse のように . で繋げて書くから混同されてる可能性は(誤記以外には)ない 安心しれ
320 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 17:34:25 ] >>316 これ、テンプレでFAQに入れといていい気がする。 俺も毎回なんだっけ?と迷うからなんだけど
321 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 18:03:24 ] なんでそんなに迷うんだよ… 特殊なのはインスタンスメソッドのマニュアル記載法の # だけで、あとは通常のスクリプト内記法と一緒じゃんよ ドットは 「マニュアルでのクラスメソッド」 「スクリプト内のインスタンスメソッド」 「スクリプト内のクラスメソッド」 の3つがあってややアレだが、 たいていの場合、 . の左は「明らかにクラス名」か「明らかに変数名」のどっちかだろ? 左が@始まりや全部小文字の変数名だったらとりあえずインスタンスメソッドの起動記法だと思え だから、マニュアルに “小文字.メソッド” があったら変数に対するコピペ実行可能なインスタンスメソッドチェーンだ 例: arr.join の場合、「arrはローカル変数っぽい」から、「arrが指すオブジェクトのクラスのインスタンスメソッドjoin」だとみなす 「変数arrにクラスオブジェクト本体が入ってたらクラスメソッドが起動する可能性が」とか余計なことは考えない 左が大文字で始まってる「明らかにクラス名」の場合はクラスメソッドのマニュアル記載法&スクリプト内のクラスメソッドだ 例: uri.path と URI.parse は連結法はドットで同一だが、 前者は変数っぽいので「変数uriの指すオブジェクトのクラスのインスタンスメソッドpathを起動するようにする」という指示記述 後者はクラスっぽいので「クラス(またはモジュール)URIのクラスメソッドparse」を指すマニュアル記述または起動指示 文字化して書いててどうでもよくなってきた もしかして、この辺の区別って実は本当の初心者にはつけづらかったりする?
322 名前:デフォルトの名無しさん [2009/05/31(日) 18:11:06 ] 本当の初心者って?
323 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 18:16:53 ] オブジェクトに属するメソッドとクラスに属するメソッドの違いをてきとーにより分けられない人
324 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 19:41:33 ] >>321 なげーよ もっと簡潔にかけるだろ、あんたなら
325 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 19:55:06 ] テンプレ用に短いのキボン
326 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 20:39:30 ] つカルシウム
327 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 22:05:45 ] やっとプログラミングに慣れきた者ですが、 ネットや本のコードを読むときで、 一つ一つのステ−トメントや式を追う時に、 これが、 インスタンス変数、ローカル変数、定数(クラスもその一種?)、メソッド と判別できるようになって、 少し自信がつきました。 デ−タ?の動き?だけでにとどまらずに、、変数のパタ−ン、メソッドと変数の見分けなどを意識できるようになるのが、 本当の初心者には一つの壁だと思います。 テンプレを書くまで、実力が上がってないけれど、、
328 名前:デフォルトの名無しさん [2009/05/31(日) 22:38:19 ] >>326 カルシウムって・・・ やめろよ頭悪いと思われるぞ。
329 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 22:39:45 ] >>328 乳酸菌取れよ
330 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 13:36:21 ] カルシウムと言われて真っ先に金属カルシウムを思いつく>>328 さんは秀才 「ナトリウムの過剰摂取は身体によくない」と言われて「水と反応して火花散らすから当然だな」 「カルシウムを摂ると身体にいい」と言われて「あんなにイオン化傾向が高いものを摂取するなんて信じられん」 このスレ何のスレだっけ
331 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 13:58:23 ] >>321 みたいなのは『初めてのRuby』あたりに書いてないかい
332 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 14:03:31 ] 3ヶ月前に作りかけだったスクリプトの製作を再開しようとしたのだが コメントつきなのになにやってるかさっぱりわからん
333 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 14:07:53 ] スクリプトでそんなに長いの書くなよ。 一画面に収まらなくなってきたらもっとまともな言語使うべき。
334 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 14:15:39 ] >>333 まともってなに? 委員会が設計したこと?
335 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 14:20:53 ] >>334 事前コンパイル&リンクが必要な言語はコンパイル時間の間に精神を落ち着けることができるので コンパイル不要な言語より質の高いプログラムを記述することができます
336 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 14:48:38 ] スクリプト言語でさくっと作って浮いた時間でお茶でも飲む方がいいよ
337 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 16:02:12 ] >>335 >事前コンパイル&リンクが必要な言語はコンパイル時間の間に精神を落ち着けることができるので でもコードを書いているときに多大なストレスを感じてしまうんだよな、 事前コンパイル&リンクが必要な言語は。むずかしいのう。
338 名前:デフォルトの名無しさん mailto:sage [2009/06/01(月) 16:49:06 ] そんなにあの間が好きならsleepでも噛ませとけw
339 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 02:09:00 ] in?の話がちょっと出てる。 qwik.jp/lang-Pattern/DSL.html
340 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 08:54:16 ] リンクの貼り方がわかりにくすぎるよ…パパン
341 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 08:58:17 ] リンクだったのか。気づかんかった
342 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 09:08:26 ] というか「対応するサイトがありません」と言われる
343 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 10:36:18 ] 339 じゃないけど ttp://qwik.jp/lang-pattern/DSL.html
344 名前:デフォルトの名無しさん mailto:sage [2009/06/02(火) 13:02:24 ] Apache 2.2 + Passenger 環境で、 現在 Rails アプリを DocumentRoot 直下に a/ や b/ に置き、 RailsBaseURI /a RailsBaseURI /b にして example.com/a/ example.com/b/ のように複数動かしています。 Sinatra も example.com/c/ example.com/d/ のように複数動かしたいのですが、どうすればいいでしょうか。 サブドメインを取らないで実現したいのです。 RailsBaseURI のような SinatraBaseURI があれば簡単なのですがw