Ruby 初心者スレッド Part 17
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/01/16(水) 17:41:27関連スレやURLは>>2-7あたりを見てください。Ruby on Railsの質問はWebProg板のRailsスレで。
■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
・ぐぐる
・マニュアルで探す http://www.ruby-lang.org/ja/man/
・FAQを読む http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
・詳しい内容(「動きません」「うまくできません」では回答しようがない)
・エラーメッセージ(なるべくそのままで)
・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0002デフォルトの名無しさん
2008/01/16(水) 17:42:03一からRubyをはじめる初心者向けのRuby入門書は何がお薦めでしょうか?
A: プログラ自体の初心者だったら「たのしいRuby 第2版 Rubyではじめる気軽なプログラミング」
他の言語経験があるんだったら「プログラミングRuby 第2版 言語編」
0003デフォルトの名無しさん
2008/01/16(水) 17:45:20Ruby 初心者スレッド Part 16
http://pc11.2ch.net/test/read.cgi/tech/1197120980/
■関連スレ
Rubyについて Part 30
http://pc11.2ch.net/test/read.cgi/tech/1200106073/
Rubyの宿題教えてください。
http://pc11.2ch.net/test/read.cgi/tech/1106572657/
http://pc11.2ch.net/test/read.cgi/tech/1200175247/
【ActiveScript】RubyをWindowsで使うスレ【GUI】
http://pc11.2ch.net/test/read.cgi/tech/1155031689/
Ruby on Rails
http://pc11.2ch.net/test/read.cgi/tech/1191381506/
Rubyについて(アンチ専用) Part002
http://pc11.2ch.net/test/read.cgi/tech/1200210768/
0004デフォルトの名無しさん
2008/01/16(水) 17:47:27Ruby Home Page
http://www.ruby-lang.org/ja/
Rubyリファレンス(よくサーバーエラーになります)
http://www.ruby-lang.org/ja/man/
http://www.ruby-doc.org/ (英語)
リファレンスのHTMLヘルプ版配布
http://elbereth-hp.hp.infoseek.co.jp/ruby.html
# Windowsで便利
Ruby FAQ
http://ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
Programming Ruby - The Pragmatic Programmer's Guide
http://www.ruby-doc.org/docs/ProgrammingRuby/
# 好評書籍をWebで公開中、ただし英語
逆引きRuby
http://www.namaraii.com/rubytips/
0005デフォルトの名無しさん
2008/01/16(水) 17:53:42http://raa.ruby-lang.org/
RubyForge
http://www.rubyforge.org/
# Rubyのアプリやライブラリが検索できる
日本Rubyの会 公式Wiki
http://jp.rubyist.net/
# メニューに表示されていない埋もれた情報ページ多数
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
# コードレビューが好評
Matzにっき(Ruby作者の日記)
http://www.rubyist.net/~matz/
Ruby hotlinks 五月雨版(日記やblogのアンテナ)
http://www.rubyist.net/~kazu/samidare/
Rubyの本一覧
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Ruby%A4%CB%B4%D8%A4%B9%A4%EB%BD%F1%C0%D2
<rubyXML/>
http://www.rubyxml.com/
0006デフォルトの名無しさん
2008/01/16(水) 17:54:46Ruby 初心者スレッド Hiki
http://starlet.s145.xrea.com/ruby/hiki/
Ruby Portal
http://ruby.morphball.net/portal/
0007デフォルトの名無しさん
2008/01/16(水) 18:02:44未だバグが多く、不安定です。
正式な日本語ドキュメントも出ていません。初心者は手を出さないように。
安定版リリースの1.8.xを使いましょう。
Changes in Ruby 1.9(英語)
http://eigenclass.org/hiki.rb?Changes+in+Ruby+1.9
0008デフォルトの名無しさん
2008/01/16(水) 18:08:10間違いとか重要なのに入ってないURLとかあればよろしく
0009デフォルトの名無しさん
2008/01/16(水) 18:27:060010デフォルトの名無しさん
2008/01/16(水) 20:03:390011デフォルトの名無しさん
2008/01/16(水) 20:05:11:デフォルトの名無しさん:2008/01/16(水) 15:05:44
質問です。2つの文字のコマンドラインで入力された2つの文字列のレーベンシュタイン距離(編集距離)を求めたいです。
ただし、kakasiとtakasaは通常なら距離が2になるのですが、3にしたいです。
要するに母音に対して変換が行われたときのみ距離を2倍にしたいです。
できれば〜倍かはコマンドラインから指定できるとなお良いです。
扱う文字はaiuなどではなく、kakisuなど子音を含むものとします。nnやnya等も考えません。
つまり配列にいれるなら奇数のとこに必ず母音が入るというものです。
通常の距離を求めるコードは以下にソースはっておくので、どなたか改造、アドバイスお願いします。
0012デフォルトの名無しさん
2008/01/16(水) 20:05:37:デフォルトの名無しさん:2008/01/16(水) 15:07:31
class String
def levenstein(other, ins=1, del=1, sub=1)
# ins,del,subは重みつきコスト
return nil if self.nil?
return nil if other.nil?
dm = [] # 距離行列
# 最初の行の値を初期化する
dm[0] = (0..self.length).collect { |i| i * ins }
fill = [0] * (self.length - 1)
0013デフォルトの名無しさん
2008/01/16(水) 20:09:32:http://pc11.2ch.net/test/read.cgi/tech/1197120980/988:2008/01/16(水) 17:33:21
続きです。
#重要な比較
dm[i][j] = [
dm[i-1][j-1] + (self[j-1] == other[i-1] ? 0 : sub),
dm[i][j-1] + ins,
dm[i-1][j] + del].min
end
end
#行列の最後の値が文字列間のレーベンシュタイン距離となる
dm[other.length][self.length]
end
u1 = gets
u2 = gets
yyy = u1.levenstein(u2)
puts yyy
#yyyが距離になります。
end
よろしくお願いします。
0014デフォルトの名無しさん
2008/01/17(木) 00:15:570015デフォルトの名無しさん
2008/01/17(木) 00:36:05マルチスレッドを使用して非同期のP2P形式チャットプログラムを作りたいのですが、
クライアント側から送信しないとサーバ側で送信できません(同期通信になってる)
非同期にする方法がイマイチわからないので、できればサンプル等を用いてご指導お願いします。
最終的に作りたいものは、ユーザ1がユーザ2に接続し、任意のタイミングで文字列を送受信する
プログラム(メッセンジャーみたいな感じ)です。よろしくお願いします。
Windows XP(mswin32)/1.6.8
0016デフォルトの名無しさん
2008/01/17(木) 00:43:110017デフォルトの名無しさん
2008/01/17(木) 00:43:43こんなのがある。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/123789
short codingになってて読みにくいので、自力でわかりやすく整形してくれ。
0018デフォルトの名無しさん
2008/01/17(木) 02:00:33それら全てを(正常)終了させる、といったコードはどうなりますか?
0019デフォルトの名無しさん
2008/01/17(木) 02:13:180020デフォルトの名無しさん
2008/01/17(木) 07:04:04実行環境:
ruby: 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
OS: Windows XP Professional Version2002 SP2
サーバ:
002120
2008/01/17(木) 07:10:21実行環境:
ruby: 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
OS: Windows XP Professional Version2002 SP2
サーバ:Apache2
内容:
特定のURIから画像をひっぱてきて表示したいのですが、
うまくいかない場合があります。
うまくいくURI
requri = "http://www.google.co.jp/intl/ja_jp/images/logo.gif"
うまくいかないURI
requri = "http://mt1.google.com/mt?v=ap.66&x=3&y=2&n=404&s=Gal&zoom=15"
上記URIに対し下記の処理を実行して画像を表示します。
require 'open-uri'
uri = URI.parse(requri)
str = uri.read
print 'Content-type: '+ str.content_type + "\n\n"
STDOUT.binmode #これやらないと画像などのバイナリ系が勝手に文字列エンコードされました。
print str
うまくいくURIの場合はCGIとして呼び出すと画が表示されますが、
うまくいかないURIの場合、 str = uri.read のところで
c:/ruby/lib/ruby/1.8/open-uri.rb:287:in `open_http': 403 Forbidden (OpenURI::HTTPError)
とエラーが返ってきます。
ブラウザのアドレス欄に うまくいかないURIを直接入力してジャンプした場合はFobiddenになりません。
cgi経由だとうまくいかないようです。
以上です。よろしくおねがいします。
0022デフォルトの名無しさん
2008/01/17(木) 07:49:360023デフォルトの名無しさん
2008/01/17(木) 08:07:21ttp://www.studyinghttp.net/status_code
0024デフォルトの名無しさん
2008/01/17(木) 08:40:40>from a computer virus or spyware application.
恐らくヘッダが足りないと見た
0025デフォルトの名無しさん
2008/01/17(木) 09:05:59あんまRuby関係ないな
HTTPステータスコードと「サーバから拒否される理由」を勉強するべき
アクセルとブレーキを物理的に踏めるからといって交通標識を知らずに車を公道で運転することはできない
0026デフォルトの名無しさん
2008/01/17(木) 09:14:500027デフォルトの名無しさん
2008/01/17(木) 09:21:02小手先の迂回方法だけ教えてもゴミ増やすだけだ。ステータスコードとその意味を知らないなんて致命的。
どうせどっかで学ばないといけないんだし早いほうがいい。
0028デフォルトの名無しさん
2008/01/17(木) 09:48:43別にRFC2616見たからって、そこからヘッダが足りない、
という答えを導き出すことはまず不可能だと思うがね。
RFC的にはクエリ自体は合法なわけだし。
0029デフォルトの名無しさん
2008/01/17(木) 10:00:330030デフォルトの名無しさん
2008/01/17(木) 10:01:240031デフォルトの名無しさん
2008/01/17(木) 10:22:13RFCを出すまでもなく、おまえは話の本質が分かってないわけだがw
0032デフォルトの名無しさん
2008/01/17(木) 10:38:110033デフォルトの名無しさん
2008/01/17(木) 12:28:440034デフォルトの名無しさん
2008/01/17(木) 12:33:52何しに来たんだこいつは?
0035デフォルトの名無しさん
2008/01/17(木) 12:34:50あんな風になる。
0036デフォルトの名無しさん
2008/01/17(木) 12:57:41たしかに >>25 >>27 あたりは本当に酷いな
0037デフォルトの名無しさん
2008/01/17(木) 12:58:580038デフォルトの名無しさん
2008/01/17(木) 13:12:550039デフォルトの名無しさん
2008/01/17(木) 13:14:580040デフォルトの名無しさん
2008/01/17(木) 13:15:130041デフォルトの名無しさん
2008/01/17(木) 13:16:250042デフォルトの名無しさん
2008/01/17(木) 13:34:44ただ困ったことに、程度の低い罵り合いの多くは
「本人達は自分のレスが賢さの反映だと思っているから」続くんだよね。
俺は頭が良くて性格が悪い人間なんだ、そんな俺のレスは馬鹿の目から見れば
程度が低い罵りに見えるのだろう、でも本当は賢いから俺は言葉を巧みに操れるんだ俺にはわかる、ってね。
0043デフォルトの名無しさん
2008/01/17(木) 13:43:37日本語で書き直してもらえませんか?
0044デフォルトの名無しさん
2008/01/17(木) 13:53:56都合の悪いものを避けようとする君の本能は、いま凄く正しく動いた。
0045デフォルトの名無しさん
2008/01/17(木) 13:55:21が
>>42の例
0046デフォルトの名無しさん
2008/01/17(木) 13:57:040047デフォルトの名無しさん
2008/01/17(木) 13:57:130048デフォルトの名無しさん
2008/01/17(木) 14:02:150049デフォルトの名無しさん
2008/01/17(木) 14:17:580050デフォルトの名無しさん
2008/01/17(木) 14:21:370051デフォルトの名無しさん
2008/01/17(木) 14:24:02そういうことを考えないとrubyを覚えることはできないのでしょうか?
難しそうで残念です。
0052デフォルトの名無しさん
2008/01/17(木) 14:31:54最後の行が特に意味不明だ…
俺は…できる、俺にはわかる。って、自分のことが自分でわかるってなにそれw
0053デフォルトの名無しさん
2008/01/17(木) 14:41:06おまえみたいなサル程度の脳じゃ理解できないんだろ
0054デフォルトの名無しさん
2008/01/17(木) 14:44:13--yydebug というオプションをつけると、構文解析の過程が表示されます。
0055デフォルトの名無しさん
2008/01/17(木) 14:47:23馬鹿が見ればこうなんだろうが実際はこうなんだ、という構図が、俺にはわかる、ってことだろ。
そもそも下の2行は、自分で一方的に自分の賢さを認めて完結しちゃってる自称おりこうさんの思考を
書いてるんだから、基本的に自己完結であるのは当然だ。
0056デフォルトの名無しさん
2008/01/17(木) 15:23:06おまえがキモイのは分かったからw
0057デフォルトの名無しさん
2008/01/17(木) 15:45:27S/N悪くなるだけで。
本気で言い争いしてるんだったら氏んでくれ。
煽り合いで退屈を紛らわしているんだったら他の場所へ行かないかな。
0058デフォルトの名無しさん
2008/01/17(木) 16:00:33そういうこと言うからいつまでも続くし、やめてもらえませんか?
0059デフォルトの名無しさん
2008/01/17(木) 16:14:080061デフォルトの名無しさん
2008/01/17(木) 16:37:18kwsk
0062前スレ988現11
2008/01/17(木) 16:38:04すいません。
# 最初の列の値を初期化する
for i in 1..other.length
dm[i] = [i * del, fill.flatten]
end
# 行列に値を入れる
for i in 1..other.length
for j in 1..self.length
0063デフォルトの名無しさん
2008/01/17(木) 16:48:040064デフォルトの名無しさん
2008/01/17(木) 18:16:28大学の授業とかで専門的に学ぶような事柄だから
そもそも知らないって人が見ただけで理解できなくても桶
0065デフォルトの名無しさん
2008/01/17(木) 18:19:560066デフォルトの名無しさん
2008/01/17(木) 18:23:53たったひとつの専門タームが理解出来ないために
文章全体が意味不明のように感じるのはよくあること
0067デフォルトの名無しさん
2008/01/17(木) 18:26:210068デフォルトの名無しさん
2008/01/17(木) 18:26:392
$ hoge takasu clinic
6
っていう結果が欲しいだけだろ
0069前スレ988現11
2008/01/17(木) 19:44:41その通りに近いでございます。sagu sageだったら”1”ってゆー結果が得られますが”2”ってゆー結果にしたいです。
この場合だとeを置換してuにしますが、母音を扱うため2になるということです。
母音は必ず偶数文字目に出るとします。(sasasaはありえるが、asaはありえない)
おそらく僕がゆとり世代だからというのがすべての原因です。。。すいません。
0070前スレ936
2008/01/18(金) 00:00:43>Ruby関係なく、リソース開放などの処理するときはGCに依存しちゃダメだろwww
>明示的に書かないと・・・
>C#とかJavaとかでもそうだぜ?
>C#で言えば、Disposeみたいなの
すまん、おれがアホすぎる理由を教えてくれ。
Dispose なんか使わん。IDisposable 実装して、 usingでRAII だろ常考ということ?
0071デフォルトの名無しさん
2008/01/18(金) 04:48:18某サーバにアップして実行すると、時々20桁になってしまいます。。。
ちなみにローカルとアップ先のサーバのRubyバージョンは1.8.5で同じです。
何故でしょうか?
cgi = CGI.new
cgi.out{sprintf("%010u", Time.now.to_s.hash)}
0072デフォルトの名無しさん
2008/01/18(金) 04:56:24オブジェクトIDは10桁でなければならないって決まってるわけでもないし
007371
2008/01/18(金) 04:56:52これが原因でしょうか??
0074デフォルトの名無しさん
2008/01/18(金) 05:08:08007571
2008/01/18(金) 05:35:31とりあえず、無理やりこんな感じで解決した事はしたのですが…
sprintf("%010u", [Time.now.to_s.hash].pack('L').unpack('L')[0])
0076デフォルトの名無しさん
2008/01/18(金) 07:12:170077デフォルトの名無しさん
2008/01/18(金) 08:35:000078デフォルトの名無しさん
2008/01/18(金) 12:06:59007971
2008/01/18(金) 18:04:42う〜ん、二回実行されている事はないと思うのですが…
>>77
とりあえず、>>75の方法で解決出来たので、これでやってみます。
>>78
そういうのがあるんですか。
もしそうならそれが原因でしょうね。
0080デフォルトの名無しさん
2008/01/18(金) 18:23:17sprintf("%010u", Time.now.to_s.hash % 10000000000)
のようにすれば一応は収まるような気がする。
0081デフォルトの名無しさん
2008/01/18(金) 19:12:19正規表現スレかプログラム初心者で問う事かもしれないと、
思ったんですが特定の書籍の記述についての質問なので
こちらでさせてくだされ。
「オブジェクト指向スクリプト言語Ruby(まつもと氏/石塚氏 共著)」の
78ページと81ページにある
/\w\w\w+,?\s*(\w\w\w)\s*[\d:]+\s*(\d{4})/
最初の英数字三文字の一回以上の繰り返しのあとにカンマがあります。
これはメタ文字ですか?
それとも「+と?」と「+?」を書き分けるためのものですか?
0082デフォルトの名無しさん
2008/01/18(金) 19:32:52メタ文字関係ない。まごうかたなき "," という文字。
メールヘッダなんかに使われる時刻文字列にマッチする正規表現だね。
"Fri, 18 Jan 2008 19:30:43 +0900"
みたいな文字列で、最初の部分に曜日があるんだけど、そこにマッチする。
0083デフォルトの名無しさん
2008/01/18(金) 20:14:230084デフォルトの名無しさん
2008/01/18(金) 20:21:56つかえが取れました。感謝!
0085デフォルトの名無しさん
2008/01/18(金) 23:05:33008611
2008/01/19(土) 00:47:43class String
def levenstein(other, ins=1, del=1, sub=1)
# ins,del,subは重みつきコスト
return nil if self.nil?
return nil if other.nil?
dm = [] # 距離行列
# 最初の行の値を初期化する
dm[0] = (0..self.length).collect { |i| i * ins }
fill = [0] * (self.length - 1)
# 最初の列の値を初期化する
for i in 1..other.length
dm[i] = [i * del, fill.flatten]
end
# 行列に値を入れる
for i in 1..other.length
for j in 1..self.length
008711
2008/01/19(土) 00:48:21dm[i-1][j-1] + (self[j-1] == other[i-1] ? 0 : sub),
dm[i][j-1] + ins,
dm[i-1][j] + del].min
end
end
#行列の最後の値が文字列間のレーベンシュタイン距離となる
dm[other.length][self.length]
end
u1 = gets
u2 = gets
yyy = u1.levenstein(u2)
puts yyy
#yyyが距離になります。
end
よろしくお願いします。
0088デフォルトの名無しさん
2008/01/19(土) 18:39:10そのcgiを、htmlと同一サーバ内に置いてhtmlにアクセスした場合は
問題なくクッキーが設定されるのですが
cgiを別サーバに置いて、外部呼出しにした場合
Mozilla系のブラウザでは問題ないのですが、IEの場合クッキーが設定されません…
以下がクッキーを設定するコードです。
Cgi = CGI.new
cookie = CGI::Cookie::new({'name' => 'TEST', 'expires' => Time.now + 200})
Cgi.out("cookie" => cookie){''}
0089デフォルトの名無しさん
2008/01/19(土) 19:00:55dm[i-1][j-1] + (self[j-1] == other[i-1] ? 0 : sub),
の行をどうにかすればいいような気がする
009011
2008/01/19(土) 19:09:21dm[i-1][j-1] + (self[j-1] == other[i-1] ? 0 : sub),
dm[i][j-1] + ins,
dm[i-1][j] + del
のところをいじれば良い・・・
多分sub.ins.delそれぞれがij行列の奇数要素で行われた場合
sub * g1
gi = gets
みたいにできればいいかなって思うんですが、、、
うまくかけません。。。
0091デフォルトの名無しさん
2008/01/19(土) 23:53:36Mozillaがセキュリティぶっちぎってるだけのような……
てゆーかXSSじみたことをさせようとしてるように見えるんだが
cgiを別サーバに置く理由は? 負荷とか実行権限ないとか?
0092デフォルトの名無しさん
2008/01/20(日) 00:08:33www.example.comとhoge.example.comならできるけど、www.example.comとwww.example.jpではダメ
前者でIEが動作しないってのはIEのクッキー設定で厳しくなってるだけのような気もするが
0093デフォルトの名無しさん
2008/01/20(日) 00:17:100094デフォルトの名無しさん
2008/01/20(日) 00:29:08009593
2008/01/20(日) 00:42:18う〜ん、そうですか。
やっぱり機種依存文字を含んでる時点でもうよろしくないですよね。
なにかしらの回避策を考えてみます。どうもです。
0096デフォルトの名無しさん
2008/01/20(日) 00:53:34009788
2008/01/20(日) 01:38:05いや、別に悪意のある事をしようとはしてないです。
cgiを別サーバに置く理由は、ちょっと負荷が気になるので
メインのhtmlがあるサーバに置きたくないだけなんです。
>>92
一応、問題なく外部呼出しからクッキーが設定出来たFirefoxで見ると
クッキーのpathはcgiがあるサーバのものになってます。
もし下の様な場合
http://www.main.com/ck.html ←imgタグでcgiの呼び出しを記述した観覧用のhtmlがるURL
http://www.cgi.com/ck.cgi ←クッキーを設定するcgiのURL
"http://www.main.com/ck.html" にアクセスすると
Firefoxのクッキーのパスは "http://www.cgi.com/" になってました。
0098デフォルトの名無しさん
2008/01/20(日) 01:56:55Mozzilaは他のドメインのクッキー上書きできるのか?w
0099デフォルトの名無しさん
2008/01/20(日) 07:08:35「アクセスしたサイトからのクッキーのみ許可」が出来るブラウザって
結構あるし、自分はそれが出来るブラウザでは必ず設定してるけど、
そーゆー事する人には提供しなくてもいいサービスなの?
0100デフォルトの名無しさん
2008/01/20(日) 12:37:48スクリプトをutf8で書いているため出力がutf8です。
スクリプト自体に変更を加えず、つまりruby.exeへの変数を弄くって出力を
utf8からShift_JISにすることは出来ないでしょうか?
宜しくお願いします _ _
0101デフォルトの名無しさん
2008/01/20(日) 13:04:42default_externalがうまいこと変更されるんじゃないかな。
0102デフォルトの名無しさん
2008/01/20(日) 13:06:19>>7
0103デフォルトの名無しさん
2008/01/20(日) 13:08:23難しいこと考えずに出力後にShift_JISに変換すれば用は足りると思われ
0104デフォルトの名無しさん
2008/01/20(日) 13:32:02そんな方法があるのか? あるなら俺も知りたい
Windows環境だとShift-JIS以外の出力が文字化けするのが……
0105デフォルトの名無しさん
2008/01/20(日) 13:33:570106デフォルトの名無しさん
2008/01/20(日) 13:36:00ニ・ワク・ヌ、ケ
C:\>ruby -r 'nkf' -e "puts NKF.nkf('--euc','日本語です')" | nkf -s
日本語です
標準出力に関してはこういうことでは…
ファイルに書き出したのがShift_JIS以外だってのはファイル探して変換かけるとか
0107デフォルトの名無しさん
2008/01/20(日) 13:49:350108デフォルトの名無しさん
2008/01/20(日) 16:23:03#<struct
report="3件(3人)",
inheritor="1品",
comment="4件のコメントを読む">
上を下のようにしたいのですが。
#<struct
report="3",
inheritor="1",
comment="4">
0109デフォルトの名無しさん
2008/01/20(日) 17:05:52class Struct::Dog
def map!(&block)
if block
size.times {|i| self[i] = block.call(self[i]) }
end
self
end
end
d = dog.new("taro", 9) #=> #<struct Struct::Dog name="taro", age=9>
d.map! {|m| m*2} #=> #<struct Struct::Dog name="tarotaro", age=18>
0110デフォルトの名無しさん
2008/01/20(日) 17:25:02dog = Struct.new("Dog", :name, :age)
d = dog.new("taro", 9) #=> #<struct Struct::Dog name="taro", age=9>
mapped = d.map {|m| m*2}
d = dog.new(*mapped) #=> #<struct Struct::Dog name="tarotaro", age=18>
0111デフォルトの名無しさん
2008/01/20(日) 17:39:01今のIEは、アクセスしたサイトからのクッキー以外はデフォでブロックしますね
0112デフォルトの名無しさん
2008/01/20(日) 17:41:50Windowsなら、UTF-8対応のターミナル使え
俺のお勧めは Poderosa
たぶん、puttyもいけるんじゃね?
0113デフォルトの名無しさん
2008/01/20(日) 17:57:23.NETの2.0入れないと動かないようなターミナルなんぞ問題外のさらに外
0114デフォルトの名無しさん
2008/01/20(日) 18:08:01リモートでしか使ってない
0115デフォルトの名無しさん
2008/01/20(日) 18:18:11.NET 2.0入れてないプログラマなんぞ問題外のさらに外
0116デフォルトの名無しさん
2008/01/20(日) 18:18:51Poderosa 3 なら、.NET 1.0で動くよ
0117デフォルトの名無しさん
2008/01/20(日) 18:19:450118デフォルトの名無しさん
2008/01/20(日) 19:05:36余計なお世話だけど
それらの値はStructに代入する前に数値型に直しておく方がいいと思う
0120デフォルトの名無しさん
2008/01/20(日) 19:44:50ttp://www.amazon.co.jp/dp/4839926689
ちょっと気になる
0121デフォルトの名無しさん
2008/01/20(日) 19:49:20どの程度加筆されるかにもよるけど期待大
0122デフォルトの名無しさん
2008/01/20(日) 19:51:36漏れのバカバカバカ
0123デフォルトの名無しさん
2008/01/20(日) 20:01:01載ってる例以外の事をしたいと考えたときに頼りになるかどうかはわからん
あとこれはどうでもいいんだが
def method_hoge arg
…
end
ってdefで引数カッコ省略の書き方をしてるのがどーにも性に合わん
0124デフォルトの名無しさん
2008/01/20(日) 20:02:43> Javaや.NET CLRなどの膨大なソフトウエア資産を活用する方法まで
mjsk
0125デフォルトの名無しさん
2008/01/20(日) 20:03:280126デフォルトの名無しさん
2008/01/20(日) 20:15:59ttp://book.mycom.co.jp/support/e1/ruby_windows/
> 第1回 Win32OLEことはじめ
> 第2回 Excel
> 第3回 ADODB
> 第4回 Outlook
> 弟5回 Web自動巡回
> 弟6回 Windowsアプリケーションの自動操作
> 弟7回 他の言語でのCOM
> 弟8回 WMI
> 弟9回 iTunes
> 弟10回 Exerb
> 弟11回 RubyCLR
> 弟12回 RjbとApache POI
> 弟13回 JRuby
5回目から弟になってるのはコピペ検知用の罠か何かか
0127デフォルトの名無しさん
2008/01/20(日) 20:31:21Win32APIはあんまり書いてなさそうなのが残念だけど買っちゃおうかな
OLEとか情報集めるの大変だしね
0128デフォルトの名無しさん
2008/01/20(日) 21:06:130129デフォルトの名無しさん
2008/01/20(日) 21:24:290130デフォルトの名無しさん
2008/01/20(日) 22:06:51class Object
def instance_variable_exist?(name)
self.instance_variables.include?(name)
end
end
としているんですけど、効率が悪いので、なんかもっといい方法あったら教えてください。
0131デフォルトの名無しさん
2008/01/20(日) 22:13:380132デフォルトの名無しさん
2008/01/20(日) 23:10:07そう思う奴のうち実際に書ける奴は半分以下
さらにそのうち本当に書く奴は1割以下
俺? もちろん最初の書ける奴、の上限で除外orz
0133デフォルトの名無しさん
2008/01/20(日) 23:10:33条件な
0134デフォルトの名無しさん
2008/01/20(日) 23:15:48発売日に買って斜め読みした俺がコメント.
ExcelやOutlook,IEについては筆者セレクションによるメソッドやプロパティが
ちょろっと紹介されてる.ちょっと便利.
ただ,基本は限られた紙面に広範囲な情報を詰め込んでいて
個々のトピックについてはビックリするほどに紹介レベル.
ExerbRuntimeモジュールなんてメソッドすら載ってないよ.
でも,いつもexe化するのにしか使って無くて,そんなモジュールの存在を知らず
普通にdl/win32使ってexeのパス取得してた俺ショック.
WMIもPowershellの紹介とかで名前は聞いたことがあったし
デフォルトで実行パスにwbemが含まれているので気にはなっていたけど,使えるねこれ!
NICのIPアドレス取得するのにipconfig使ってて,一瞬,DOS窓が表示されるのがウザかったんだけど
WMIで解決しました.
上級者は必要ないかもしれないけど,初心者は買って損のない本.
0136デフォルトの名無しさん
2008/01/20(日) 23:46:141.9からじゃないか?
0137デフォルトの名無しさん
2008/01/20(日) 23:59:071.8.6 から追加されてる
0139デフォルトの名無しさん
2008/01/21(月) 00:10:10何という親切なコメント。ありがとね
そのあたりの知識も不足してる気がするし買うことにするよ
0140デフォルトの名無しさん
2008/01/21(月) 00:12:50安定版という意味では変わらないか
0141デフォルトの名無しさん
2008/01/21(月) 00:41:00ホントだすまん。
Refeでしか確認してなかったよ。
0142デフォルトの名無しさん
2008/01/21(月) 04:30:380143デフォルトの名無しさん
2008/01/21(月) 04:40:530144デフォルトの名無しさん
2008/01/21(月) 09:10:19そんなのあるんだ。それってどのバージョンから定義されているかわかりますか。
わしがもってるマニュアルには載ってなかったので。
0145デフォルトの名無しさん
2008/01/21(月) 16:14:08マニュアルには反映されてない可能性が
Emacs上でRubyスクリプト書いてる人はいる?
・rbファイルをruby-modeで読み込む
・普通に全部手書きする
・普通に別窓のコンソールでスクリプトを実行しエラーを目測
・普通に方向キー連打で該当行に到達
・普通に別起動のHTMLヘルプを見ながら修正
という、よく考えたらかなり無駄っぽい動きをしてる気がする俺をたしなめてくれ
0146デフォルトの名無しさん
2008/01/21(月) 16:43:12めっ
0147デフォルトの名無しさん
2008/01/21(月) 17:10:38Emacs自体に動的略語展開があるから、
一度読み込んだファイルに書いてある単語は2回書く必要はないかと
> 方向キー連打で該当行に到達
M-x goto-line
0148デフォルトの名無しさん
2008/01/21(月) 19:33:420149デフォルトの名無しさん
2008/01/21(月) 19:46:23それの期限を限りなく引き延ばすための技術や話術
普通に学んでる限りはそんなことをとりたてて聞いたりしないもんだ
聞かなきゃならないってことはRubyの基本やコンピュータの知識がなってないってことだから
0150デフォルトの名無しさん
2008/01/21(月) 19:51:43すばらしいアイディアがあるよ
http://itpro.nikkeibp.co.jp/article/COLUMN/20080104/290425/
0151デフォルトの名無しさん
2008/01/21(月) 20:03:08入門書何冊かチェックして
テキストフィルタの話してるのを買って読めばいいよ
0152デフォルトの名無しさん
2008/01/21(月) 20:13:18テキストエディタの正規表現を使って置換することはできるんですが、プログラミングに関してはパーです
>>150
ああ・・・でも変更を加えたいファイルはテキストベースなんです。
人間が簡単に読めるってのが売りのデータ形式なんで、データそのものを、62進数の文字列に変換 とかっていうのはいただけないです
>>151
わかりました
0153デフォルトの名無しさん
2008/01/21(月) 21:05:30インデックスを使うっていうだけだよねこれ
0154デフォルトの名無しさん
2008/01/21(月) 21:25:14もう一度読み返してみたら”それらをファイル名の集合体として別途管理する”って書いてあることに気付きました
0155デフォルトの名無しさん
2008/01/21(月) 21:32:54DBMSのテーブル(典型的にはBTree系)+DBMSのキャッシュで
管理するかの違いだけのような気がする
0156デフォルトの名無しさん
2008/01/21(月) 21:44:16スラドで袋だたきされてる奴だろw
0157デフォルトの名無しさん
2008/01/21(月) 21:46:22プレスリリースがアホっぽいので話題になってるだけ
0158デフォルトの名無しさん
2008/01/21(月) 21:52:330159デフォルトの名無しさん
2008/01/21(月) 22:18:020160デフォルトの名無しさん
2008/01/21(月) 22:21:27可哀想だった・・・・そこまでひどくはないと思うし・・・・・
0161デフォルトの名無しさん
2008/01/21(月) 22:48:06ttp://www.atmarkit.co.jp/news/200801/21/ruby.html
やったね!
0162デフォルトの名無しさん
2008/01/21(月) 22:50:030163デフォルトの名無しさん
2008/01/21(月) 22:58:17そんなもん取ってなんの役に立つんだ?
0164デフォルトの名無しさん
2008/01/21(月) 23:02:390165デフォルトの名無しさん
2008/01/21(月) 23:12:17面接のときの話のネタになる、ということが言われております
0166デフォルトの名無しさん
2008/01/21(月) 23:26:290167デフォルトの名無しさん
2008/01/22(火) 11:25:47ruby-mode って組み込みクラスのメソッド補完とかできないの?
他のモードにはある C-c C-c での実行とか マニュアル表示とかも無理?
0168デフォルトの名無しさん
2008/01/22(火) 15:48:50自分のIPアドレスを知るためのhttpクライアントを作ろうとしています。
普通のページは .get できるのですが、CGIの返してくるものを取れません。
以下のコードです(URLは架空)。
require 'net/http'
Net::HTTP.version_1_2
Net::HTTP.start('http://YourIP.com', 80) { |http|
response = http.get('/ip.cgi')
puts response.body
}
0169デフォルトの名無しさん
2008/01/22(火) 16:07:10require 'open-uri'
html = open('http://YourIP.com/ip.cgi').read
puts html
open-uriで逆に面倒になることが事前にわかってる場合以外はopen-uri使い続けれ
上記でhtmlが空になる、あるいはopenでエラーが出る場合はCGIが悪い
0170デフォルトの名無しさん
2008/01/22(火) 18:14:32URLキボンヌ
0171デフォルトの名無しさん
2008/01/22(火) 21:08:40>>168
まず、以下の点について答えよ
・そのCGIはお前が書いたモノかどうか
・http.post での結果
0172デフォルトの名無しさん
2008/01/22(火) 22:12:18Ruby 1.9以降で正規表現関係はどう変わりますか?
鬼車がどうこうというのは、あちこちで目にするのですが、
具体的な変更点が詳しく分かるサイトとかあれば教えてください。
0173デフォルトの名無しさん
2008/01/22(火) 22:50:45あるディレクトリにある全てのファイルの中身を見て処理を行いたい場合の定石などありますでしょうか?
自分は
Dir.entries("ディレクトリ名") do |file|
File.open("ディレクトリ名" + file)
なんだかの処理
end
end
とかやっているのですが、いまいちです
Dirでディレクトリ内部のファイル一覧を取得するとどうもStringにしてくれるみたいですが、Fileをうまいこと取得できたりしないのでしょうか?
ついでにCやJavaでインクリメントする場合
value++
とか書きますよね
Rubyだと++はないようですが、どうするのがいいのでしょうか?
よろしくお願いいたします
0174デフォルトの名無しさん
2008/01/22(火) 22:52:230175デフォルトの名無しさん
2008/01/22(火) 22:58:41Dir.glob("./hoge/*").each do |path|
File.open(path){|f|
…
}
end
おそらくこれが一番人気
他のDirもPathnameの各メソッドもビミョーに使い勝手が悪い
インクリメントは作者がやだって言ってるので>>174以外の方法はないよ
0176デフォルトの名無しさん
2008/01/22(火) 23:08:39さんくすです
助かりました
参考にさせてもらいます
value+=1はあったのですね
てっきり、+=も無いと思っていたのでvalue = value + 1と書いてましたw
0177デフォルトの名無しさん
2008/01/23(水) 00:58:08>>150
スラッシュドット ジャパン | データをすべてファイル名扱いにして高速検索を実現?
http://slashdot.jp/developers/08/01/20/2052246.shtml
0178デフォルトの名無しさん
2008/01/23(水) 01:01:16関連エントリー。アルファブロガーの反応
404 Blog Not Found:ニセ情報科学? - ISSEI
http://blog.livedoor.jp/dankogai/archives/50988968.html
0179デフォルトの名無しさん
2008/01/23(水) 09:38:29うまくいきました。
ありがとうございます。
>>171
cgiは、とりあえず既存のものです。
読むのがうまくいったので、送る方のcgiも自作するつもり。
.startでSocketErrorになっていました。
http.post は行っていません。
0180デフォルトの名無しさん
2008/01/23(水) 09:59:37>.startでSocketErrorになっていました。
×Net::HTTP.start('http://YourIP.com', 80) { |http|
○Net::HTTP.start('YourIP.com', 80) { |http|
0181デフォルトの名無しさん
2008/01/23(水) 10:18:360182デフォルトの名無しさん
2008/01/23(水) 10:40:38御指摘感謝
0183デフォルトの名無しさん
2008/01/23(水) 15:45:18下のように書いてみたけど、全重複順列を生成して後でチェックするのはいまいちな感じ。
class Array
def each_perm(k)
if k == 1
each{|x| yield [x]}
else
each do |x|
each_perm(k-1) do |y|
yield [x]+y
end
end
end
end
end
k = 5; ary = [1,2,3]
ary.each_perm(k) do |x|
p x if x.uniq.size == ary.size
end
0184デフォルトの名無しさん
2008/01/23(水) 16:15:20irb> a = Array.new
irb> power(3, 5){|x| a.push([1,2,3].values_at(*x))}
irb> p a.size
243
3 個の異なった要素から重複を許して 5 個取り出す重複順列の総数は 3Π5 つまり 3^5 で 243
0185デフォルトの名無しさん
2008/01/23(水) 16:54:13レスどうも。values_atって初めて見たかも。
やりたかったのは、各要素を最低一つを含むっていうので
[1,2,3]つから5つ取り出した順列だと
[1,1,1,2,3],[1,1,1,3,2],[1,1,2,1,3],,,
という感じのものでした。うーん、閃きそうで閃かない。
0186デフォルトの名無しさん
2008/01/23(水) 17:03:570187デフォルトの名無しさん
2008/01/23(水) 17:51:04そういえばファイルの保護ってファイル名に対してはかからないんだよね。
つまり、データをファイル名に使うことで・・壊れやすくなる。
ファイルサイズを0にするやつは、データを盗まれないようにする方法としては使えるね。
一旦デコードしないとコピーができないから。
企業のページでは
>次世代Web基盤技術
とか言ってるけど、なんでWebなんだろ。
データを取り扱うときに通常のファイル形式にしないといけないはずだが。
>独自のプログラムとデータ構造により、圧倒的なコストパフォーマンスを実現
・・・
ああ、コストパフォーマンスについてはそうかも。
DBMSを使うとそれにライセンス料を払う必要があるが、OS標準の機能なら追加料金がかからない。
・・・
フリーのDB使えばいいけど、遅いって話もなくもないし。
0188デフォルトの名無しさん
2008/01/23(水) 18:56:400189デフォルトの名無しさん
2008/01/23(水) 21:07:53リファレンスマニュアル検索できなくなってるんだけど
http://www.ruby-lang.org/ja/man/html/index.html
0190デフォルトの名無しさん
2008/01/23(水) 21:18:240191デフォルトの名無しさん
2008/01/23(水) 21:31:230192デフォルトの名無しさん
2008/01/23(水) 21:32:38つかプログラミング言語の公式サイトが検索アプリもまともに作れないとか
0193デフォルトの名無しさん
2008/01/23(水) 21:34:22オヒサルで検索してる奴なんてこの世に存在するの?
0194デフォルトの名無しさん
2008/01/23(水) 21:40:200195デフォルトの名無しさん
2008/01/23(水) 21:40:58俺が暇になったときにまだ検索できないようなら作ってみよ
0196デフォルトの名無しさん
2008/01/23(水) 21:45:15対応みたいだな。
リファレンスはやっつけで静的HTML化したからカバーしてない(つーか
忘れてるだろ、おそらく)んだろうな。
0197デフォルトの名無しさん
2008/01/23(水) 22:35:23RADっぽいお手軽開発環境探してるんだけどやっぱしないかなぁ?
0198デフォルトの名無しさん
2008/01/23(水) 23:11:49いちいち全PCにマニュアルインスコしてられっかよwwwwww
0199デフォルトの名無しさん
2008/01/23(水) 23:21:11XP風の普通のRubyファイル用のアイコンを探しています。
Perl用とかC用とかも有ればベストなのですが、
オーソドックスな普通のアイコンはありませんか?
0200デフォルトの名無しさん
2008/01/23(水) 23:22:420201デフォルトの名無しさん
2008/01/23(水) 23:29:42オプションをつけてGoogle検索すればいいだけじゃね?
0202デフォルトの名無しさん
2008/01/23(水) 23:46:330203デフォルトの名無しさん
2008/01/24(木) 10:48:55require 'net/ftp'
ftp = Net::FTP::open("qwerty.com",'user','****')
puts ftp.status # OK
puts ftp.nlst # NG
ftp.close
以上のコードで status は実行するのですが nlst でエラーになります。
御意見いただけませんでしょうか。
0204デフォルトの名無しさん
2008/01/24(木) 11:05:000205デフォルトの名無しさん
2008/01/24(木) 11:27:56オーソドックスなFTPで ls と手入力するとファイルリストを見られるのですが、Rubyでは以下のエラーになります。
c:/ruby/lib/ruby/1.8/net/ftp.rb:241:in `getresp': 425 Failed to establish connec
tion. (Net::FTPTempError)
from c:/ruby/lib/ruby/1.8/net/ftp.rb:264:in `sendcmd'
from c:/ruby/lib/ruby/1.8/monitor.rb:242:in `synchronize'
from c:/ruby/lib/ruby/1.8/net/ftp.rb:262:in `sendcmd'
from c:/ruby/lib/ruby/1.8/net/ftp.rb:336:in `transfercmd'
from c:/ruby/lib/ruby/1.8/net/ftp.rb:421:in `retrlines'
from c:/ruby/lib/ruby/1.8/monitor.rb:242:in `synchronize'
from c:/ruby/lib/ruby/1.8/net/ftp.rb:419:in `retrlines'
from c:/ruby/lib/ruby/1.8/net/ftp.rb:609:in `nlst'
from ftp_up$.rb:5
dir も同様です。
0206デフォルトの名無しさん
2008/01/24(木) 11:30:290207デフォルトの名無しさん
2008/01/24(木) 11:39:57Rubyの出す例外はきちんと書こうぜ
>>206
んだなす
ftp.passive=trueしたあとにコマンド実行させれば動くはず
0208デフォルトの名無しさん
2008/01/24(木) 13:36:59passive=true にしてみましたがダメでした。
以下はstatus表示後のエラー表示です。
c:/ruby/lib/ruby/1.8/net/ftp.rb:159:in `initialize': 接続済みの呼び出し先が一定
の時間を過ぎても正しく応答しなかったため、接続できませんでした。または接続済みの
ホストが応答しなかったため、確立された接続は失敗しました。 - connect(2) (Errno::
ETIMEDOUT)
from c:/ruby/lib/ruby/1.8/net/ftp.rb:159:in `open'
from c:/ruby/lib/ruby/1.8/net/ftp.rb:159:in `open_socket'
from c:/ruby/lib/ruby/1.8/net/ftp.rb:317:in `transfercmd'
from c:/ruby/lib/ruby/1.8/net/ftp.rb:421:in `retrlines'
from c:/ruby/lib/ruby/1.8/monitor.rb:242:in `synchronize'
from c:/ruby/lib/ruby/1.8/net/ftp.rb:419:in `retrlines'
from c:/ruby/lib/ruby/1.8/net/ftp.rb:609:in `nlst'
from ftp_up$.rb:9
exec で ftp 呼んで実行手順をファイルで渡すことにします。
御指導ありがとうございました。
0209デフォルトの名無しさん
2008/01/24(木) 20:58:180210デフォルトの名無しさん
2008/01/24(木) 21:10:30このスレではまだしばらくは縁のない言葉です。
0211デフォルトの名無しさん
2008/01/24(木) 23:24:09どうせなら鬼車に乗りたいので
早く1.9系安定してくだされぇ〜!
を言い訳に作業をサボる自分・・・ヨワッ
0212デフォルトの名無しさん
2008/01/25(金) 01:49:10open パス名 do |file|
例外発生
end
となった場合、オープンされたファイルは自動的にクローズされるのでしょうか?
0213デフォルトの名無しさん
2008/01/25(金) 02:14:22begin
open
付いてきたブロックであれこれ作業
ensure
close
end
という意味。ensureは例外になろうがなるまいが実行されるよ。
0214デフォルトの名無しさん
2008/01/25(金) 02:19:42ありがとうございます。これで安心して作業ができます。
0215デフォルトの名無しさん
2008/01/25(金) 04:28:52C++で書かれたプログラムをrubyに移植しているのですが、参照で困りました。
RubyにはC++でいう参照はありますか。
それもクラスインスタンスではなくint等の組み込み型を参照として渡すことはできますか。
0216デフォルトの名無しさん
2008/01/25(金) 05:48:310217デフォルトの名無しさん
2008/01/25(金) 05:53:26それは確かできなかったはず
0218デフォルトの名無しさん
2008/01/25(金) 06:12:03>int等の組み込み型を参照として渡すことはできますか。
integerやfloatはできない。それ以外はすべて参照。
引数の参照渡しのことなら、できない。
まず具体的にどんなことがしたいかをプログラムで書いてみて。
0219デフォルトの名無しさん
2008/01/25(金) 06:29:21簡単に説明しますと、オブジェクト内部で条件が真のときに引数の参照に値を代入し、boolで関数の結果を返す関数です。
bool Hoge::GetData(int condition,float &buffer)
{
if(condition == this->condition)
{
buffer = this->my_float_value;
return true;
}
return false;
}
0220デフォルトの名無しさん
2008/01/25(金) 07:05:58・関数が失敗の場合は、例外を返せば良い
・Rubyのメソッドは複数の値を返せる(return a, b とすれば a, b = get_data() で受け取れる)
・bufferがオブジェクトの一部分なら、オブジェクト自体を渡す選択肢も
・配列として受け渡しすれば、擬似的な参照渡しになる
お好きなのをどうぞ。
0221デフォルトの名無しさん
2008/01/25(金) 07:13:09戻り値がnilか否かをチェックすれば真偽をチェックしたことになるから
0222デフォルトの名無しさん
2008/01/25(金) 07:19:09なるほど。
ありがとうございました。
0223デフォルトの名無しさん
2008/01/25(金) 07:26:32同じ値のはずの2つのstringオブジェクトを==で比べると、なぜかfalseが返ってきます。
デバッグで見ても、2つのオブジェクトは全く同じ値でした。
どこか処理がまずくてスタックが壊れてるのでしょうか?
0224デフォルトの名無しさん
2008/01/25(金) 07:32:44JavaじゃなくてRubyの話なんだよな?
p 変数
で見ても全く同じ?
0225デフォルトの名無しさん
2008/01/25(金) 07:39:37if str1 == str2
return;
end
p str1 + " " + str2
このようなコードなのですが、if文でリターンせずにpによって 「同じ文字 半角スペース 同じ文字」 が表示されました。
0226デフォルトの名無しさん
2008/01/25(金) 07:55:25p str1
p str2
p str1.class
p str2.class
あとRubyのバージョンを書いて
0227デフォルトの名無しさん
2008/01/25(金) 08:00:09結果です。
あ
あ
String
String
と表示されました。
バージョンは1.8.1です。
0228デフォルトの名無しさん
2008/01/25(金) 08:20:26あとはコード全体を見ないことには
0229デフォルトの名無しさん
2008/01/25(金) 09:02:14"あ"
ではなく
あ
と表示されたのなら問題ないんじゃね
0230デフォルトの名無しさん
2008/01/25(金) 09:14:01http://gonzo.dip.jp/~gonzo/cgi-bin/uploader2/upload.cgi?mode=dl&file=2078
アップしました。
見辛くて申し訳ありません。
なにかトンチンカンなことをやってバグを誘発しているのでしょうか(><)
0231230
2008/01/25(金) 09:14:260232デフォルトの名無しさん
2008/01/25(金) 09:15:080が真になるのは良いとして
falseも真という意味ですよね
nilだけが偽と
0233230
2008/01/25(金) 09:27:04× check( i , GetElementString( i , "通常" , n ) );
○ check( i , GetElementString( i , "通常ポーズ" , n ) );
0234デフォルトの名無しさん
2008/01/25(金) 09:35:34で、41行目の
> if( elem_name.to_s == @definition_names[i].to_s )
で、同じデータのはずなのにfalseが返ることがあるという質問でいい?
0235デフォルトの名無しさん
2008/01/25(金) 09:37:50すみません全角混じっていましたか。
質問は全くその通りです。
0236デフォルトの名無しさん
2008/01/25(金) 09:54:58else
print "[ #{elem_name} <=> #{@definition_names[i]}] "
結果を整形してみる
[ 攻撃 <=> 通常ポーズ] [ 死亡 <=> 通常ポーズ] [ 死亡 <=> 攻撃] [ ダメージ <=> 通常ポーズ] [ ダメージ <=> 攻撃] [ ダメージ <=> 死亡]
[ 勝利 <=> 通常ポーズ] [ 勝利 <=> 攻撃] [ 勝利 <=> 死亡] [ 勝利 <=> ダメージ] [ 瀕死 <=> 通常ポーズ] [ 瀕死 <=> 攻撃]
[ 瀕死 <=> 死亡] [ 瀕死 <=> ダメージ] [ 瀕死 <=> 勝利] [ 攻撃 <=> 通常ポーズ] [ 死亡 <=> 通常ポーズ] [ 死亡 <=> 攻撃]
[ ダメージ <=> 通常ポーズ] [ ダメージ <=> 攻撃] [ ダメージ <=> 死亡] [ 勝利 <=> 通常ポーズ] [ 勝利 <=> 攻撃] [ 勝利 <=> 死亡]
[ 勝利 <=> ダメージ] [ 瀕死 <=> 通常ポーズ] [ 瀕死 <=> 攻撃] [ 瀕死 <=> 死亡] [ 瀕死 <=> ダメージ] [ 瀕死 <=> 勝利]
[ 攻撃 <=> 通常ポーズ] [ 死亡 <=> 通常ポーズ] [ 死亡 <=> 攻撃] [ ダメージ <=> 通常ポーズ] [ ダメージ <=> 攻撃] [ ダメージ <=> 死亡]
[ 勝利 <=> 通常ポーズ] [ 勝利 <=> 攻撃] [ 勝利 <=> 死亡] [ 勝利 <=> ダメージ] [ 瀕死 <=> 通常ポーズ] [ 瀕死 <=> 攻撃]
[ 瀕死 <=> 死亡] [ 瀕死 <=> ダメージ] [ 瀕死 <=> 勝利] [ 攻撃 <=> 通常ポーズ] [ 死亡 <=> 通常ポーズ] [ 死亡 <=> 攻撃]
[ ダメージ <=> 通常ポーズ] [ ダメージ <=> 攻撃] [ ダメージ <=> 死亡] [ 勝利 <=> 通常ポーズ] [ 勝利 <=> 攻撃] [ 勝利 <=> 死亡]
[ 勝利 <=> ダメージ] [ 瀕死 <=> 通常ポーズ] [ 瀕死 <=> 攻撃] [ 瀕死 <=> 死亡] [ 瀕死 <=> ダメージ] [ 瀕死 <=> 勝利]
ということで同じ文字はないよ。csvデータはUTF-8なんだけどスクリプト本体のほうはUTF-8なの?
アップロードのときにミスったんだと思ってたけど、もしこのままならスクリプトはShiftJISになってるよ
0237デフォルトの名無しさん
2008/01/25(金) 10:38:17お手数おかけしました。
ということは、コードの問題ではなくて、環境固有の問題なのでしょうか。
実は実行環境はRPGツクールVXなのです。
こちらの環境ではelseで付け加えて値を見ると、同じ文字の組み合わせがありました。
ツクール内部で呼び出しているので、通常の環境とは異なっているのかもしれませんね。
0238デフォルトの名無しさん
2008/01/25(金) 12:33:45ディレクトリからファイル名のリストを取得し、WIN32OLE 経由で MS-Word の
COMコンポーネントに一つずつ渡そうとしています。
Wordに与えるファイル名は絶対パスである必要があるようなので、個々のファ
イル名にFile.expand_path を適用してから渡しています。
ところが、File.expand_path の戻り値が /cygdrive/c/... や、/home/ユーザ
名 になってしまうのです。もちろん Word が必要としているのは C:\ で始ま
るパスなので、Wordがファイルを開くことができません。
File.expand_path(ファイル名).gsub(%r!^/cygdrive/c/!, "C:/").gsub(%r!/home/!, "/C:/cygwin")
とやれば何とかなりますが、どうも不恰好です。もっと良い方法はないでしょ
うか?
0239デフォルトの名無しさん
2008/01/25(金) 12:43:090240デフォルトの名無しさん
2008/01/25(金) 12:44:27c:\program files
$ cygpath -d '/cygdrive/c/program files'
c:\PROGRA~1
0241デフォルトの名無しさん
2008/01/25(金) 12:50:17まあcygwinのシステムに乗っかってる以上根本的にはどうしようもない
WindowsアプリケーションとしてのRuby使え
C:\Documents and Settings\俺\デスクトップ\新しいフォルダ>ruby -e 'puts File.expand_path("csvloader.txt")'
C:/Documents and Settings/俺/デスクトップ/新しいフォルダ/csvloader.txt
0242デフォルトの名無しさん
2008/01/25(金) 12:54:58>0が真になるのは良いとして
>falseも真という意味ですよね
>nilだけが偽と
うんにゃ。nilとfalseが偽と見なされる。
成功したときは数値を返し、失敗したときはnilを返す。falseは返さない。
これでいいじゃん?
0243デフォルトの名無しさん
2008/01/25(金) 12:57:12str1=str2
でなく
str1=str2.dup
と書かなきゃコピーにならんとこは
わたしのような初心者にはドエライ罠だったんですけど・・・
0244デフォルトの名無しさん
2008/01/25(金) 13:09:18「明示的な複製」が自力で必要な場面は意外と少ないんだ
データを返す組み込みクラスのメソッドの多くは結果を複製して返す
知らないとどこかで絶対に一度は嵌るが、知ってしまうと意外とそうでもない
>>242
falseは(Rubyには型としては無いけど)booleanで使うといいよね
nilはそれ以外の「空」とか「無し」とか
「失敗」をfalseにするかnilにするかは若干迷うけど、「成功」がtrueという値になると思えるならfalseだな
if文ではfalseもnilもelseに行くから深く考えなくてもいいし
0245238
2008/01/25(金) 13:13:23>>239->>240
wdoc = wordOLEObject.Documents.open `cygpath -w #{File.expand_path 'Readme'}`
こんな感じでしょうか?
これだと、今度は逆にCygwin以外のWindows環境では動きません。環境の判別法
ははないものでしょうか?
欲を言えば、分岐なしでどちらの環境でも動くならありがたいのですが。
>>241
Cygwin版のRubyと共存させるわけですか...。それも一つの手だなあ。
ActiveScriptRuby 使いたいし。
ただ、環境が安定するかどうかが不安です。
0246デフォルトの名無しさん
2008/01/25(金) 14:03:12環境の判別はRUBY_PLATFORMで。
分岐なしで動くようにするのは無理。
強いて言えば238で自分で書いてるのが分岐なしで動くようにする方法になるのかもしれんが。
0247デフォルトの名無しさん
2008/01/25(金) 14:05:07どこをどう作っても内部的には分岐使ってる
気にすんな
0248デフォルトの名無しさん
2008/01/25(金) 14:16:30あ〜ら不思議あら不思議
0249デフォルトの名無しさん
2008/01/25(金) 14:19:51Cygwin環境で閉じた使い方をする分にはパス周りのトラブルが少ないのから?
0250デフォルトの名無しさん
2008/01/25(金) 14:22:485年くらい前の話
0251デフォルトの名無しさん
2008/01/25(金) 15:09:02つまり、今はそうでもないってこと?
0252238
2008/01/25(金) 15:09:49結局、通常のWindows版のRubyを入れて、絶対パスで呼び出すようにしました。
"/cygdrive/c/program Files/ruby-1.8/bin/ruby.exe" ...
これで問題なく、Cygwinからでも呼び出せました。
ただ厳密には、CygwinのコンソールでEmacs22を起動し、その中のeshellでで
す。Emacsの通常のshellモードでは、表示が少しおかしいようです。
>>246
> 分岐なしで動くようにするのは無理。
そうですか...。それは仕方ありませんね。
>>249
> あえてCygwin版を使うメリットって何?
単純に、Cygwin環境でデフォルトで呼び出されるのがそれだからです。
またPythonが、通常のWindows版はCygwin環境と相性が良くなかったのです。
(対話コンソールをCygwin環境で呼び出すと、画面に何も出ない)
だからRubyもWindows版を使うのは避けていました。
ちなみにこのやり取りも Cygwin Emacs22のNavi2chでやっております。
Linux機もあるのですが、Cygwinにはいろいろ便利なことがあるので。
0253デフォルトの名無しさん
2008/01/25(金) 17:01:180254デフォルトの名無しさん
2008/01/25(金) 18:35:50一部をアップした結果「その部分だけでは分からない」と言われたんだろ?
そういうときはファイルそのものをアップしてもらった方が手っ取り早い
特に初心者には、どこがどこに影響を及ぼしてるのか、簡単には分からないんだから
0255デフォルトの名無しさん
2008/01/25(金) 21:41:18こーゆーので我慢する、もしくは(cygwin|windows)を捨てる
def cygpath(opt,path) ; return `cygpath #{opt} #{File.expand_path(path)}` ; end
def winpath(path)
path = File.expand_path(path)
if RUBY_PLATFORM =~ /cygwin/ # ? cygwin 環境と一致する奴
# return `cygpath -w #{path}`
return path.sub(%r!^/cygdrive/(.)/!, '\1:/').sub(%r!^/home/!, 'c:/cygwin/')
end
return path
end
0256デフォルトの名無しさん
2008/01/26(土) 10:14:26puts i
i-=2 if gets == "prev" # 逆方向に進ませたい!
}
みたいな事やろうと思ったらwhileと自前の変数でやるしかないんですかね。
0257デフォルトの名無しさん
2008/01/26(土) 10:18:40残念ながら、自前で書かないと出来ないですね。
# 外部イテレータが欲しい。
0258デフォルトの名無しさん
2008/01/26(土) 10:27:29とかできたらいいのに。
0259デフォルトの名無しさん
2008/01/26(土) 10:27:500260デフォルトの名無しさん
2008/01/26(土) 12:38:23遅レスだが、なんでrubydb使ってないの?
エラー行へのジャンプも普通にあるよ?
んでもって、refe.elとか使えばEmacs上でヘルプも見れる
もし、*nix環境ならfastRI入れてri-ruby.el入れるといいんじゃない?
↑はSoftware Design2月号のEmacs特集の受け売りで
俺はWin環境でMeadowだから使ってないけど
0261デフォルトの名無しさん
2008/01/26(土) 12:42:42WSHのFileSystemObjectを使うのが常套手段
http://jp.rubyist.net/magazine/?0004-Win32OLE
0262デフォルトの名無しさん
2008/01/26(土) 13:28:37導入時は喜ばれるが1週間くらいして無言で外されることで有名
0263デフォルトの名無しさん
2008/01/26(土) 14:52:22それぐらいなら手で打てってことかもしれんが
Meadowでxmpfilter使っている人います?
cmdproxy.exeで試したんだけど、スクリプト評価後にプロンプトや
ロゴ表示が残ってしまってションボリな感じ
0264デフォルトの名無しさん
2008/01/26(土) 18:57:37実行時に"Enter password for /home/localuser/.ssh/id_rsa:"とでて入力を要求されます
#!/usr/bin/env ruby
require 'rubygems'
require 'net/ssh'
Net::SSH.start(
'192.168.11.3',
:username => 'remoteuser',
:password => 'mypassword' ) do | session |
session.process.popen3('echo "Hello"') do |i, o, e|
STDOUT << o.read << "\n"
end
end
実行時にパスフレーズを要求されないようにするにはどうのようにすればよいですか?
0265デフォルトの名無しさん
2008/01/26(土) 20:12:24のためのログインパスワードであって、秘密鍵ファイルを読むための
パスフレーズではないのでは?
でもって、
Public/private keys are always tried before the explicit password authentication, even if you provide a password.
(http://net-ssh.rubyforge.org/chapter-2.html)
なので、公開鍵認証が行われている、と。
パスフレーズのほうは、空にするか、ssh-agentとかにお任せすることになるのではないでしょうか。
0267デフォルトの名無しさん
2008/01/26(土) 22:27:33これをRubyでデコードするにはどうしたらいいですか。
つまり '¥uXXXX' からunicode文字を得たいです。
0268デフォルトの名無しさん
2008/01/26(土) 22:34:210269デフォルトの名無しさん
2008/01/26(土) 22:38:37>>268 でいいと思うけど、後ならnkfを使うかな
0270デフォルトの名無しさん
2008/01/26(土) 22:42:46仕組みがさっぱりわからないので、参考になるページがあれば教えてください。
0271デフォルトの名無しさん
2008/01/26(土) 22:57:30Unicodeの解説とか読めばいいんじゃね
0272デフォルトの名無しさん
2008/01/26(土) 23:00:34Rubyコード的には、
¥uXXXXのXXXX部分(文字列)を16進数に変換してpack('U')でUnicode文字にしてる。
0273デフォルトの名無しさん
2008/01/26(土) 23:10:010274デフォルトの名無しさん
2008/01/26(土) 23:15:140275デフォルトの名無しさん
2008/01/26(土) 23:19:22逐語的に訳すとこんな感じ?
"\u"より後に続く数字またはa, b, c, d, e, fの2文字の組を
1個から6個ずつまとめてから16進数に変換する
Rubyリファレンスマニュアルの正規表現のページと見比べてみりゃ
なんとなくわかるんじゃない?
0276デフォルトの名無しさん
2008/01/26(土) 23:29:49Unicode文字がそこまで定義されてないから実質的には
4オクテットまで考慮すればいいみたいね。
0277デフォルトの名無しさん
2008/01/26(土) 23:32:20神ならぬ>>276には思い至ることすらできなかったのであった
0278デフォルトの名無しさん
2008/01/27(日) 00:09:270279デフォルトの名無しさん
2008/01/27(日) 00:50:46小飼が自分で作ったツールを自慢するためにBlogでRuby用のサンプルを書いてたきがする。
0280デフォルトの名無しさん
2008/01/27(日) 10:53:261. りんご なら単純な部分一致
2. *.jpg ならワイルドカード
3. /\d+/ なら正規表現
としたいんですが一番下は1.の/home/のようなパス指定と区別がつきません。
正規表現を表す文字列で他に一般的な表記はないんでしょうか?
0281デフォルトの名無しさん
2008/01/27(日) 11:20:410282デフォルトの名無しさん
2008/01/27(日) 13:04:12なんてのをそのままevalしないようにね。
0283デフォルトの名無しさん
2008/01/27(日) 13:10:01ruby-electric.el はどこがダメ?
0284デフォルトの名無しさん
2008/01/27(日) 13:21:31「正規表現で入力する」という専用入力プロンプトあるいはオプションスイッチを作る
ユーザーが一番欲しい、一番頻繁に使うと推測される機能は1と2だろ
3は見つからないあるいは見つけにくいときに使う機能であるべき
0285デフォルトの名無しさん
2008/01/27(日) 13:42:06guiならチェックボックスとか
>>283
デフォルトだとクォーテーションや"|"も閉じちゃうので
正規表現を書くときにウザいからじゃね?
0286デフォルトの名無しさん
2008/01/27(日) 14:08:19エスケープ文字があるときに
正規表現オブジェクトを作るのはどう?
もちろん最初と最後の"/"は取り除いて
if inputString.include?('\\') && inputString =~ /^\/.*\/$/
re = Regexp.new(inputString[1..-2])
Dir.glob("*").{|fileName| print fileName if fileName =~ re}
else
Dir.glob(inputString).{|fileName| print fileName}
end
0287デフォルトの名無しさん
2008/01/27(日) 14:15:41エスケープ文字のない正規表現書けなくない?
0288デフォルトの名無しさん
2008/01/27(日) 14:29:160289286
2008/01/27(日) 14:46:08文字列先頭の'/'、文字列最後の'/'、文字列中の'\'と暗黙なスイッチを
無駄に3つ追加してて、直感的に使えず全然ダメですわ
やっぱ、素直に284の言うとおりにした方がよいと思う
0290デフォルトの名無しさん
2008/01/27(日) 19:41:23Rubyで生成したテキストを流し込み
フィルタが処理した結果を受け取りたいでし。
どう書けば良いのでしょうか?
一旦ファイルに出力して、`sort` とかで受け取るしかないですか?
0291デフォルトの名無しさん
2008/01/27(日) 19:53:17一度きっちりIPCとかパイプとか標準入出力とかフィルタとか調べとくと吉
その点Rubyアプリケーションプログラミングとかいいと思うんだが
まるで話題にならないのは中身が硬派すぎるからなんだろうか
0292デフォルトの名無しさん
2008/01/27(日) 19:58:38読み書き両方ならIO.popenかな。
0293デフォルトの名無しさん
2008/01/27(日) 20:18:09あの本は読んでると眠くなる
100パーセント日本語の本なのに眠くなる理由は正直よくわからん
0294デフォルトの名無しさん
2008/01/27(日) 20:26:59ありがとうございました。
>291 ではフィルタの結果を出力することは出来ましたが
結果が受け取れませんでした。
そこで >292 に紹介された IO.popen を
リファレンスマニュアルの例文を元に使ってみたのですが
反応が返ってこなくなってしまい、^C しました。
コマンドプロンプトや、バッチファイル上での
パイプの使い方は知っていたのですが…
>291 さんの言う通り、もう少しパイプについて調べてみます…。
0295291
2008/01/27(日) 20:36:19フィルタの中身にもよるけどこれでいけると思う
open("| sort", "w+"){|io|
io.write("c\nb\na")
io.close_write()
res = io.read()
}
0296デフォルトの名無しさん
2008/01/27(日) 20:51:10ありがとうございました!
close_write() がポイントっぽいですね。
0297デフォルトの名無しさん
2008/01/27(日) 22:57:47sort は入力を全部受け付けてからでないと処理できないっしょ
close_write で入力は終わったって知らせてやらなきゃ。
0298デフォルトの名無しさん
2008/01/27(日) 23:12:150299デフォルトの名無しさん
2008/01/27(日) 23:14:210300デフォルトの名無しさん
2008/01/27(日) 23:17:25に対して「Array#sort使え」というのはかなりマト外してるな
まあ、よっぽど特殊なコマンドでない限り、テキストいじりならRuby内部でなんとかなるのも事実ではあるが…
0301デフォルトの名無しさん
2008/01/28(月) 02:13:27def main()
eval(ARGV.join(";"))
STDOUT << hoge << "\n"
end
if __FILE__ == $0
main
end
みたいなshowhoge.rbを作ってshowhoge.rb "hoge=\"Hello\""を実行したのですが
Helloと表示されません。 引数をevalしてオプションを解析する手間を省きたいのですが失敗していますorz
0302デフォルトの名無しさん
2008/01/28(月) 02:31:27require 'shellwords'
def main()
pairs = Shellwords.shellwords(ARGV.join(' '))
pairs.each do |pair|
(k,v) = pair.split(/=/)
puts "#{k}は#{v}です"
end
end
if __FILE__ == $0
main
end
~$ ruby syukudai.rb hoge="Hello" huga='World' hage=\!
hogeはHelloです
hugaはWorldです
hageは!です
ただしこれだと"や'を変数に入れることができない
0303デフォルトの名無しさん
2008/01/28(月) 02:55:17C++出身?
0304デフォルトの名無しさん
2008/01/28(月) 03:03:32もしくは@hogeに
0305デフォルトの名無しさん
2008/01/28(月) 03:16:11宿題は宿題スレへ
Rubyの宿題教えてください。2限目
http://pc11.2ch.net/test/read.cgi/tech/1200175247/
0306デフォルトの名無しさん
2008/01/28(月) 04:02:280307デフォルトの名無しさん
2008/01/28(月) 04:44:13エラーになる理由は↓参照
リファレンスマニュアル>Ruby 言語仕様>実行>変数と定数>ローカル変数
要するに定義されてない変数(メソッド)を使おうとしてエラーになってる
だから eval('STDOUT << hoge << "\n"') なら実行出来る
オプション解析なら >>306 の言う通り optparse 使うべき
eval にこだわるなら >>304 の様にあらかじめ変数を定義しておく
0308デフォルトの名無しさん
2008/01/28(月) 05:18:32def main()
hoge =""
eval(ARGV.join(';'))
STDOUT << hoge << "\n"
end
if __FILE__ == $0
main
end
と
foo.rb "hoge='Hello'"
で
Hello は表示されるが。
def main()
eval(ARGV.join(';') + ";" + %Q(STDOUT << hoge << "\n"))
end
if __FILE__ == $0
main
end
これもいけた。
0309デフォルトの名無しさん
2008/01/28(月) 08:37:420310デフォルトの名無しさん
2008/01/28(月) 08:46:36例えば rm_f 'filename' とあれば、実行時にどのファイルを削除しようとしているかが表示されてほしいです。
0311デフォルトの名無しさん
2008/01/28(月) 09:47:450312デフォルトの名無しさん
2008/01/28(月) 11:07:09-vつけても表示されませんけど?
0313デフォルトの名無しさん
2008/01/28(月) 17:42:26myhash[:aaa] = "aaa" #これと
myhash["aaa"] = "aaa" #これがどう違うのか分かりません><
0314デフォルトの名無しさん
2008/01/28(月) 18:14:06キーが違う。
0315デフォルトの名無しさん
2008/01/28(月) 19:13:53irb> h = Hash.new
irb> arr = ['レ','イ','ク']
irb> h[arr] = '配列だよ'
irb> puts h[arr]
配列だよ
前者はたまたま文字列ではないシンボルを使ってるだけの話
シンボルで設定されてるハッシュならシンボルでアクセスしないと動作しないけどな
0316デフォルトの名無しさん
2008/01/28(月) 21:28:19rm_f 'hoge', :verbose => true
全般にわたって制御する方法はねーのかな。
>>313
混乱させてしまうが、ActiveSupportというRailsの一部でもあるライブラリを
導入すると、HashWithIndifferentAccessというクラスが定義される。
myhash = {}.with_indifferent_access
のようにして作成すると、
myhash[:aaa] と myhash['aaa'] が同じモノを参照するようになる。
(実際には文字列側に正規化されている)
0317デフォルトの名無しさん
2008/01/28(月) 21:37:26どっかでmodule FileUtils::DryRunとかすればいいんだがどうだろね
0318デフォルトの名無しさん
2008/01/28(月) 21:46:19日本語を含むソースコードを保存しようとすると
「Symbol's function definition is void: coding-system-to-mime-charset」
と言われて保存できません。どなたか解決策ご存知の方いらっしゃいませんか。
0319デフォルトの名無しさん
2008/01/28(月) 21:51:15DryRunって:noop=>trueだよな。
常時ONにしたら何も実行しなくなるんじゃない?
0320デフォルトの名無しさん
2008/01/28(月) 22:03:44そりゃ、表示だけして実行はしないよ
そういうオプションだもの
表示後に実行もして欲しいかどうかはわからんのでその辺は適当に
どうせ教えてもらったのを文字通り組み込むわけじゃないだろ
該当するマニュアルとか見てから組み込むわけだし
0321デフォルトの名無しさん
2008/01/28(月) 22:07:25> Symbol's function definition is void: coding-system-to-mime-charset
なんでこれが読めないの?
Ctrl x RET f
して候補を入力しろよ
0322デフォルトの名無しさん
2008/01/28(月) 22:18:58で、<Author>著者名</Author>とか<Publisher>出版社</Publisher>とか<Title>書名</Title>とかを20種類くらい得たいです。
しかし、xmlの構造が一定ではなくて、「<Publisher>が無い」というような抜けが稀にあります。
なので、固定の巨大な正規表現でがばっと抜き出すということができません。
#パターン1
h['Author'] = xml.scan(/<Author>(.+?)<\/Author>/).flatten
h['Publisher'] = xml.scan(/<Publisher>(.+?)<\/Publisher>/).flatten
h['Title'] = xml.scan(/<Title>(.+?)<\/Title/).flatten
#パターン2
RE = # 下の結果をあらかじめ直にコピペしたもの
# Regexp.union(/<(Author)>(.+?)<\/Author>/,/<(Publisher)>(.+?)<\/Publisher>/,/<(Title)>(.+?)<\/Title/)
xml.scan(RE).each do |a|
a.compact!
h[a[0]] = a[1]
end
どっちがメモリとかCUP時間とかの負荷少なくて済みそうですか?
ちなみにrexmlとかごっついパーサは3秒くらい止まるので候補になりませんでした
0323デフォルトの名無しさん
2008/01/28(月) 22:25:43これまではパターン1でxmlを何度もscanしてきたんですが、
「10KBの文字列に何度もアクセスする」という現状にだんだん不安になってきて
「選択入りの長い正規表現で一度だけアクセスしたほうがリソース的にまだマシなんじゃ?」とか思った次第です。
0324デフォルトの名無しさん
2008/01/28(月) 22:26:03対策教えて下さい。
ruby 1.9はMacOS 10.3 PPC G3です。
$ ./configure --prefix=/opt/local --program-suffix=19
checking build system type... powerpc-apple-darwin7.9.0
checking host system type... powerpc-apple-darwin7.9.0
checking target system type... powerpc-apple-darwin7.9.0
checking for gcc... gcc
$ sudo gem19 install mechanize
Password:
Building native extensions. This could take a while...
ERROR: Error installing mechanize:
ERROR: Failed to build gem native extension.
/opt/local/bin/ruby19 extconf.rb install mechanize
checking for main() in -lc... yes
creating Makefile
make
gcc -I. -I/opt/local/include/ruby-1.9.0/powerpc-darwin7.9.0 -I/opt/local/include/ruby-1.9.0 -I. -fno-common -g -O2 -pipe -fno-common -o hpricot_scan.o -c hpricot_scan.c
ext/hpricot_scan/hpricot_scan.rl: In function `hpricot_scan':
ext/hpricot_scan/hpricot_scan.rl:172: error: structure has no member named `ptr'
ext/hpricot_scan/hpricot_scan.rl:185: error: structure has no member named `ptr'
ext/hpricot_scan/hpricot_scan.rl:185: error: structure has no member named `len'
ext/hpricot_scan/hpricot_scan.rl:186: error: structure has no member named `len'
ext/hpricot_scan/hpricot_scan.rl:202: error: structure has no member named `ptr'
make: *** [hpricot_scan.o] Error 1
Gem files will remain installed in /opt/local/lib/ruby/gems/1.9.0/gems/hpricot-0.6 for inspection.
Results logged to /opt/local/lib/ruby/gems/1.9.0/gems/hpricot-0.6/ext/hpricot_scan/gem_make.out
0325デフォルトの名無しさん
2008/01/28(月) 22:27:53> ruby 1.9をインスコした
お前にはまだ早い
即刻アンインストールして1.8.6にしろ
0326デフォルトの名無しさん
2008/01/28(月) 22:40:01どこを直していいのかわからないような初心者が1.9使っちゃダメ
「おい、1.9でhogehogeが動かないから直してやったぜ。これがパッチな」
というのが正しい使いかた。
0327デフォルトの名無しさん
2008/01/28(月) 22:46:330328デフォルトの名無しさん
2008/01/28(月) 22:47:180330デフォルトの名無しさん
2008/01/28(月) 22:49:38お前の周りでは「やっとβ版が出たのでシステムをこれに移行しました」とかいうことがあるのか?
しないだろ? 試しに遊んでみて納得する程度だろ?
0331デフォルトの名無しさん
2008/01/28(月) 22:51:550332デフォルトの名無しさん
2008/01/28(月) 22:52:34>>7
0333デフォルトの名無しさん
2008/01/28(月) 22:53:170334デフォルトの名無しさん
2008/01/28(月) 22:57:161234567...とかの複数桁の数字を桁ごとに分割してそれぞれ扱いたいのですが、
どうやるのが一番解りやすいでしょうか?
0335デフォルトの名無しさん
2008/01/28(月) 23:03:38作者に苦情のメールを送る。
0336デフォルトの名無しさん
2008/01/28(月) 23:03:521.9では文字列のアクセスの時RSTRING_PTRやRSTRING_LENを使わなくてはいけないのが原因っぽい
0337デフォルトの名無しさん
2008/01/28(月) 23:05:44num = 1234567
num.to_s.split(//).each do |n|
ketagoto(n.to_i)
end
0338デフォルトの名無しさん
2008/01/28(月) 23:06:49ともかくemacs --versionの結果を。
0339デフォルトの名無しさん
2008/01/28(月) 23:06:50digits = x.to_s.split(//).map {|digit| digit.to_i} とか。
x = 123456789
digits = []
while x > 0
x, y = x.divmod(10)
digits.unshift(y)
end
という書き方もあるか。
0340デフォルトの名無しさん
2008/01/28(月) 23:11:27初心者という言葉の意味を履き違えたオナニーヲタは帰れ
自分のブログででもやってろ
0341デフォルトの名無しさん
2008/01/28(月) 23:12:55ruby1.9.xじゃ添付ライブラリに入らない雰囲気なんでそ?
RubyのGUIツールキットは何を使っていくのが正解なの?
0342334
2008/01/28(月) 23:14:36ありがとうございます。
0343デフォルトの名無しさん
2008/01/28(月) 23:15:35339の前半は338と同じわけだから後半につっこんでるんだよな。
どっちかというとループ組んでちまちまやってる後半のほうが
初心者向けだと思った俺は変?
0344デフォルトの名無しさん
2008/01/28(月) 23:17:220345デフォルトの名無しさん
2008/01/28(月) 23:19:24とりあえずスレ的には配列に変換してeachで回せる状況にするのが素直かと…
0346デフォルトの名無しさん
2008/01/28(月) 23:25:17パターン1で20回scanするのならおそらくはパターン2を基本にするのがまだマシかと…
俺なら正規表現が長くなりすぎないようにパターン1でおおまかに小分けにしたものにパターン2を適用するけどな
0347デフォルトの名無しさん
2008/01/28(月) 23:28:16GUIを使わないのが正解じゃなかろうか。
保守性も考えたGUIのソフトは大概組み込みRubyな感じ。
0348デフォルトの名無しさん
2008/01/28(月) 23:33:50無理してショボいGUIつけたスタンドアロンアプリケーションは斜陽っぽいぞ
0349デフォルトの名無しさん
2008/01/28(月) 23:42:20オマェの方こそ、厨房なんじゃネェの?
324には--program-suffix=19とかgem19って
書いてあるんだから、どう見たって1.8系と併存してんだろ?
なのにアンインストールしろだなんて
本当はソースヨメネェから、対処できなくてごまかしてんじゃね?
0350デフォルトの名無しさん
2008/01/28(月) 23:43:14て
ま
い
り
ま
し
た
0351デフォルトの名無しさん
2008/01/28(月) 23:45:16http://zoomtv.atspace.com/?G84Bds9WGIY377?qL_yJKe8kRI11+i_QH1mo46-A27?anB5SSsiolI36+8hj9PlJg0pA17@OnAirAlien
0352デフォルトの名無しさん
2008/01/28(月) 23:49:110353デフォルトの名無しさん
2008/01/28(月) 23:53:370354デフォルトの名無しさん
2008/01/28(月) 23:53:52手を出したこと自体が誤り
映画で言うとスタンドバイミー
0355デフォルトの名無しさん
2008/01/28(月) 23:54:412ちゃんはギャーギャー騒げば大勝利だからな
もう何も言わないおめでとさん
0356デフォルトの名無しさん
2008/01/28(月) 23:57:320357デフォルトの名無しさん
2008/01/28(月) 23:59:181.9関連は使用を正当化するアホ初心者が沸いて困る。
0358デフォルトの名無しさん
2008/01/29(火) 00:01:07>curl -O ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.0-0.tar.gz
これはMac上がりのニワカBSDヤーを懲らしめようとする巧妙な釣りだなw
0359デフォルトの名無しさん
2008/01/29(火) 00:21:390360デフォルトの名無しさん
2008/01/29(火) 00:24:49β版リリースを大々的に宣伝するからだろw
0361デフォルトの名無しさん
2008/01/29(火) 00:30:35改良よろ。
つーか、無駄に記述がおおいな。このページ。
0362デフォルトの名無しさん
2008/01/29(火) 00:33:46ベクトル空間モデルの考え方から,コサイン尺度を用いてベクトル間の
類似度を求めることができるじゃないですか?
このコサイン尺度の計算式ってプログラムでどう書けば良いのでしょうか?
0363デフォルトの名無しさん
2008/01/29(火) 00:36:54Ruby固有の話じゃなさそうだから、このへんがいいんじゃないの?
プログラミングの為の数学と算数 vol.3
http://pc11.2ch.net/test/read.cgi/tech/1197063023/
科学技術計算
http://pc11.2ch.net/test/read.cgi/tech/1104421606/
計算アルゴリズム【�U】
http://pc11.2ch.net/test/read.cgi/tech/1129376543/
0364デフォルトの名無しさん
2008/01/29(火) 00:49:290365デフォルトの名無しさん
2008/01/29(火) 01:07:57「どこのレイヤーで躓いてるのかが把握できない」というあたりが
初心者ゆえんだな。
0366デフォルトの名無しさん
2008/01/29(火) 01:09:090367デフォルトの名無しさん
2008/01/29(火) 01:34:44Webprog板を追い出されました
0368デフォルトの名無しさん
2008/01/29(火) 02:21:05これを実行すると
hoge.rb:1: warning: don't put space before argument parentheses
0
0
0
0
となります。
なぜ p (i%1).class は Fixnum と出力されないんでしょうか?
ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-mswin32]
0369デフォルトの名無しさん
2008/01/29(火) 02:36:32(p(i%1)).class と解釈されるからじゃなかろうか
0370デフォルトの名無しさん
2008/01/29(火) 02:39:59irb(main):004:0> (0..1).each{|i| p((i%2).class) }
Fixnum
Fixnum
=> 0..1
0371デフォルトの名無しさん
2008/01/29(火) 15:38:23以下のようにつらつらと書くと,とても手間が掛かるので,
もっと簡単に行う方法はないのでしょうか?
$KCODE="SJIS"
str = '2007年(01|02|03|04|05|06|07|08|09|10|11|12))月'
str.gsub!('(01|02|03|04|05|06|07|08|09|10|11|12)','(0[1-9]|1[0-2])')
str.gsub!('01|02|03|04|05|06|07|08|09','0[1-9]')
str.gsub!('10|11|12|13|14|15|16|17|18|19','1\d')
str.gsub!('20|21|22|23|24|25|26|27|28|29','2\d')
str.gsub!('30|31|32|33|34|35|36|37|38|39','3\d')
str.gsub!('40|41|42|43|44|45|46|47|48|49','4\d')
str.gsub!('50|51|52|53|54|55|56|57|58|59','5\d')
str.gsub!('60|61|62|63|64|65|66|67|68|69','6\d')
str.gsub!('70|71|72|73|74|75|76|77|78|79','7\d')
str.gsub!('80|81|82|83|84|85|86|87|88|89','8\d')
str.gsub!('90|91|92|93|94|95|96|97|98|99','9\d')
str.gsub!('10|11|12','1[0-2]')
p str
0372デフォルトの名無しさん
2008/01/29(火) 15:51:380373デフォルトの名無しさん
2008/01/29(火) 16:22:31strの中身が以下の様だったりする場合にも対応したいので.
str = '2007年(01|02|03|04|05|06|07|08|09|10|11)月' => 2007年(0[1-9]|1[01])月
str = '2007年(10|11|12)月' => 2007年1[0-2]月
str = '(2007年(10|11|12)月|2008年(01|02|03|04|05|06|07|08|09|10|11|12)月)' => (2007年1[0-2]月|2009年(0[1-9]|1[0-2])月)
str = '01|02|03|04|05|06|07|08' => 0[1-8]
str = '11|12|13|14|25|26|27|28' => 1[1-4]|2[5-8]
といった感じに変換されるようなモジュールなどはありませんか?
0374デフォルトの名無しさん
2008/01/29(火) 16:22:59まず何がしたいのか分からん
0375デフォルトの名無しさん
2008/01/29(火) 16:31:410376デフォルトの名無しさん
2008/01/29(火) 16:37:29>>373だろ
要は、/1|2|3|4|5/ を /[1-5]/ に変換するようなうまい方法はないか、という質問
変換用のペアを自前で記述したものを作って総置換かける以外の方法はないような気がする
Rangeオブジェクトを使うと '11|12|13|14|15|16|17|18|19' を (11..19).to_a.join('|') にできるがその程度だろう
0377デフォルトの名無しさん
2008/01/29(火) 16:41:23そうですか.ゴリゴリ書いてみます.
ありがとうございました.
0378デフォルトの名無しさん
2008/01/29(火) 16:42:58そもそも正規表現ってなんだっけ?と考えてしまったろぉ
0379デフォルトの名無しさん
2008/01/29(火) 16:45:00外部から正規表現を受け取って短く変換して返すというアプリケーションを作ってるなら、わりと無駄だと思うのでやめとけ
正規表現の記述が短くなったからといって正規表現としての効率が上がるとは限らない
冗長に記述したほうが速いぜということもままあるはず
で、もし、既に存在する正規表現を手作業でくっつけてるために変換を欲してるのなら、
Regexp.joinで正規表現をくっつけることも検討するといい
0380デフォルトの名無しさん
2008/01/29(火) 16:47:43を
http://eroero.com/eroero1.jpg
http://eroero.com/eroero2.jpg
http://eroero.com/eroero3.jpg
http://eroero.com/eroero4.jpg
http://eroero.com/eroero5.jpg
展開するのってどうやるの?
0381デフォルトの名無しさん
2008/01/29(火) 16:53:36自動ではできないと思う
自分で都合のいいマッチ条件を書いて場合分けして置換するしかないんじゃね
与えられた文字列で{数字A-数字B}を検知したら数字Aから数字Bまでのeachを起動してその部分を数字に置換する、とか
zshなんかでは専用の処理が既に組み込まれてたりしたはず
0382デフォルトの名無しさん
2008/01/29(火) 16:56:30手を出すような処理が必要になる、つまり自分で正規表現処理系を新しく
実装して、とかいうことになる。
0383デフォルトの名無しさん
2008/01/29(火) 17:04:130384デフォルトの名無しさん
2008/01/29(火) 17:06:03のほうがいいんじゃまいか、そんで
http://eroero.com/eroero{1,3,5}.jpg
がいいな
0385デフォルトの名無しさん
2008/01/29(火) 17:06:400386デフォルトの名無しさん
2008/01/29(火) 17:08:42実在するドメインに迷惑かけないように
0387デフォルトの名無しさん
2008/01/29(火) 17:09:34ええ.ありがとうございます.
ただし,私の場合,スピードを求めているのではなくて,
可読性の向上と255文字制限を回避するためなのです.
255文字制限は他のプログラムで存在するので対策が必要です.
他のプログラムで,あるデータベースから自動的に生成された
年月日などの規則性のある,連続した数字の羅列を,
正規表現で表現し,さらに簡潔な表記に変換した後,
テキストで出力し,そのファイルを別のプログラムで使用する
という形のプログラムを作成中です.
ちょっと組んでみたのですが,かなり面倒ですねw
2桁の数字で真面目にやったら1000行超えちゃいますね.
ああ面倒だ.頻出の物だけで済ませるか.
数字を纏める事一つでここまで手こずるとは予想外でした.
0388デフォルトの名無しさん
2008/01/29(火) 17:49:12要件が曖昧な気がするな。
例) 01, 02, 11, 13
これの要約表現として、
a) [0-1][1-3]
b) 0[1-2]|11|13
のどちらのようなものを求めるか、もわかりにくい。
数値としての範囲を記述させようという b)のようなら、正規表現は向かないだろう。
a)のように各桁独立で、0-9範囲の文字として処理させるなら、20行もいらないと思うが。
0389デフォルトの名無しさん
2008/01/29(火) 18:21:59基本的には「元の正規表現と等価である」というのが要件です.
a)の場合は元の数値を含んでいますが,それ以外の
03や12なども含んでしまいますから等価ではないと思います.
そのあたりの厳密性が要求されるのでb)が望ましいと言えます.
思いついたアルゴリズムとしては,|で区切った数値を
全て配列に書き出して,ソートして,一つ一つ取り出して,
連続しているようなら[ - ]で繋ぐという様なアルゴリズムで
やろうかなと思います.
0390デフォルトの名無しさん
2008/01/29(火) 18:32:10とあてずっぽうを言ってみるテスト
0391238
2008/01/29(火) 19:45:54>>255
うう、Cygwinは捨てたくないし、Winを捨てたら Win32OLEが使えませんし、ちょ
と困ります。その関数もさすがに煩雑ですし。
>>261
おお!この手があったか!ありがとうございます。さっそく読んでみます。
0392デフォルトの名無しさん
2008/01/29(火) 20:11:08perlのRegexp::Assembleのソース読んでみれば。
0393デフォルトの名無しさん
2008/01/29(火) 20:20:28単純なalternationだけでいいなら、
いったん全部をトライ木に突っ込むのが簡単。
0395デフォルトの名無しさん
2008/01/29(火) 21:39:06正規表現として解釈する必要が本質的に無いとかいうオチは無いだろうか
0396デフォルトの名無しさん
2008/01/29(火) 23:53:140397デフォルトの名無しさん
2008/01/29(火) 23:55:06Rubyはmswin32の1.8系です。
RubyからMeCab(形態素解析ツール)を呼ぼうと次のように書いたのですが、
関数内での結果受け取り部分をどう書くのがよいかわかりません。。
プロンプトでMeCabの動作は、上記のようにオプションなしに呼んだ場合、文字列の入力を促され、
入力すると複数行の結果とEOS(文字列)が返って、次の入力待ちになります。
私\t説明
の\t説明
名前\t説明
EOS
・・(入力待ち)
以下ではこの流れをそのまま書きました。(続く)
0398397続き
2008/01/29(火) 23:55:58result = []
io = open("|C:/MeCab/bin/mecab.exe", "r+")
io.puts str
#ここで解析結果受け取り(後述)
io.close; result
end
result_array = parse("私の名前") #結果を配列で受け取る
ここで、入力待ち状態になったところをRubyでどう受け取ってMeCabを終わらせたらいいのかわからないのです。
nilなどが返るわけじゃないみたいですし・・・
自分なりに書いたコードは以下で、一応動いています。(上記関数内のコメント部分に入る)
while 1
word = io.gets.chomp!
break if /\AEOS\z/ =~ word
result << word
end
io.puts "^C" #こんなわけないような・・・
EOSの行は不要なのでこうしたのですが、MeCab以外の場合のことを考えるとこれじゃダメですよね。
もっと一般的な書き方があったら、おしえてください。(入力待ちになったら終了、など)
0399デフォルトの名無しさん
2008/01/30(水) 00:02:55一般論として、相手側がまだ出力を続けているけど遅延か何かでたまたまデータが来ないのか、はたまた出力が終わって今度は入力待ちになったのか、を知る方法はない。
今回の例だったら、EOSが来て相手の出力が終わったことはわかるんだから、もう用がないならio.closeでOK。
0400デフォルトの名無しさん
2008/01/30(水) 00:04:03あと、回答とは違うがmecab-rubyを使うという選択肢はなし?
0401397
2008/01/30(水) 00:22:58ありがとうございます。入力待ちで信号が来るわけじゃないんですね。
mecab-rubyはcygwin版でないとインストールが面倒そうだったので
早々にあきらめてしまいました。
過去スレにはWin32APIを介して・・というのも出ていたのですが
自分のスキルでは未知の領域なので同様に^^;
0402デフォルトの名無しさん
2008/01/30(水) 02:41:18まちがって終わらない Thread を作ってしまい、Cygwin を走らせている
アプリごと止めたんですが、改めて実行したら deadlock エラーがでました。
しかたがないので再起動してみたんですが、それでも deadlock がおきます。
ためしに irb を起動してみたらこのようにゾンビ化した Thread が残っています。
$ irb
irb(main):001:0> Thread.current
=> #<Thread:0x1003c978 run>
これ、どうやって消すんでしょうか?
0403デフォルトの名無しさん
2008/01/30(水) 03:05:51それ単なる自分のスレッドだから。
アプリでdeadlockが起こってるってのはなんかロックとして使ってるファイルでも
消してないんじゃないか?tmpとか見てみれ
0404デフォルトの名無しさん
2008/01/30(水) 03:55:40> それ単なる自分のスレッドだから。
そうみたいですね。 はやとちりでした。
どうやら自分が Thread の扱い方を理解していないだけみたいです。 orz
0405デフォルトの名無しさん
2008/01/30(水) 16:09:34「でっかいHTMLから<title>を抜き出す」という場合
html.scan(/<title>(.+?)<\/title>/)
みたいな書き方するんだけど、これよく考えたらhtml内で</title>が終わった後もえんえんサーチしてるよね。
「ひとつ見つけたらそこで終了させる」というような指定はできない?
0406デフォルトの名無しさん
2008/01/30(水) 16:17:57'123451'.scan(/(1)/){p Time.now.to_f}
1201677254.19416
1201677254.19554
ということで、マッチするものが見つかるたびにブロックを実行してるようなので
'123451'.scan(/(1)/){ p $1; break}
"1"
即breakすれば桶
0407デフォルトの名無しさん
2008/01/30(水) 16:18:550408デフォルトの名無しさん
2008/01/30(水) 16:23:14p $1 if /<title>(.*?)<\/title>/ =~ html
0409デフォルトの名無しさん
2008/01/30(水) 17:08:380410デフォルトの名無しさん
2008/01/30(水) 18:07:49これなんだろうと思ってリファレンスマニュアル見たけど無いよ
slice(regexp[, nth]) の間違いだな
0411デフォルトの名無しさん
2008/01/30(水) 18:45:11何か良い方法があったら教えてください
シリアルポート操作クラスはあるようですがWin用だったりして
WinとLinuxであまりコードを変えたくないのですが…
Winでmodeコマンド&IO.openを使う方法を試しているのですが
`MODE COM4 BAUD=115200 PARITY=N DATA=8 STOP=1`
com = open("COM1", 'r+b')
sleep(1)
com.syswrite("AT@K20\r")
sleep(0.1)
while true
$> << com.sysread(1)
end
com.close
よろしくお願いします
0412デフォルトの名無しさん
2008/01/31(木) 01:03:43いろいろ試したのですが文字化けが直りません。
(以前のPCでは表示された気がしたのですが設定方法忘れてしまいました)
RDE v1.1.1 / Ruby-mswin32 v1.8.6 / WindowsXP SP2
RDE設定
・フォント(設定&エディタ設定): MS Pゴシック、文字セット:日本語
・Ruby通常オプション: 「-Ku」(無しでも試したがダメ)
・コードウィンドウ>文字コード変換: japanese.dll(Y SJIS)にunicode.dllを追加(Y SJIS)
・コードウィンドウ>文字コード・ 「UTF8N + 改行:LF」
コード先頭に#!○○/ruby -Kuや$KCODE = 'u'、2行目に日本語のコメントを付けてもダメでした
文字コード変換のDLLのSJISを変更しないとダメなのでしょうか?(方法が判らないです)
0413デフォルトの名無しさん
2008/01/31(木) 15:20:33念を押すと、fpsのみでいいんだけども。
0414デフォルトの名無しさん
2008/01/31(木) 16:55:01CXX = 'g++'
CXXFLAGS = '-Wall -g'
TARGET = 'hellorake.exe'
SRCs = FileList['./*.cpp']
OBJs = SRCs.sub(/$/, '.o')
task :default => TARGET
class Rake::Task
alias :preqs :prerequisites
end
require 'rake/clean'
CLEAN.include(OBJs)
CLEAN.include(TARGET)
rule('.cpp.o' => [proc {|o| o.sub(/\.cpp\.o$/, '.cpp') }]) do |t|
sh "#{CXX} #{CXXFLAGS} -o #{t.name} -c #{t.source}"
end
file TARGET => OBJs do |t|
sh "#{CXX} -o #{t.name} #{t.preqs}"
end
だとうまくいくのですが
「rule('.cpp.o' => [proc {|o| o.sub(/\.cpp\.o$/, '.cpp') }]) do |t|」の部分をシンプルにしようと思い
「rule '.cpp.o' => '.cpp' do |t|」にしたらDon't know how to build task './hellorake.cpp.o'と言われてしまいます
Matzの呪いかと思ったのですがC言語なソースにしても同じでした><
0415デフォルトの名無しさん
2008/01/31(木) 18:20:10> 実行中のDirectXのfpsを取得するライブラリーとかない?
うーん。見たことないな・・・
DirectXの録画ソフトだと大抵ついている機能だから、
作者に頼んでみるとか、
オープンソースのソースを見て自分で作るとか
0416415
2008/01/31(木) 18:27:34試してないが、この辺とか
Taksi: Video capture/Screen capture for 3D applications
http://taksi.sourceforge.net/
他にも sourceforge に似たソフトがあったと思う
あと、ムービー録画するソフトに関してはこちらの方が詳しい
【鑑賞】 ムービースレッド 【作成】 part2
http://game14.2ch.net/test/read.cgi/gamef/1167265823/
0417デフォルトの名無しさん
2008/01/31(木) 19:22:03OBJs = SRCs.sub(/\.cpp$/, '.o')
rule '.o' => '.cpp' do |t|
なら動くが、二重のsuffixには対応しないんじゃね?
0418デフォルトの名無しさん
2008/01/31(木) 19:50:080419デフォルトの名無しさん
2008/01/31(木) 19:51:220420デフォルトの名無しさん
2008/01/31(木) 20:37:42UTF8の文字列に対して、正規表現で何かする場合に、
「〜」という文字が使えない気がするのですが、何故でしょうか?
Ruby1.8.6をWindowsで使ってます。
0421420
2008/01/31(木) 21:15:20--------------------------
require 'kconv'
s = "〜あはははは〜"
if s =~ /〜.*〜/ then puts "Done"
else puts "Failed"
end
if s =~ /あ.*は/ then puts "Done"
else puts "Failed"
end
t = Kconv.tosjis(s)
u = Kconv.toutf8(t)
if u =~ /〜.*〜/ then puts "Done"
else puts "Failed"
end
if u =~ /あ.*は/ then puts "Done"
else puts "Failed"
end
----------------------
↑を実行すると
Done
Done
Failed
Done
となります。何か間違ってるところがあるのか、教えていただければ嬉しいです。
0422デフォルトの名無しさん
2008/01/31(木) 21:27:23正規表現の後ろにuってつけてみたらどうだ
/〜/u みたいに
0423デフォルトの名無しさん
2008/01/31(木) 21:30:10文字コード指定してないんだから、そりゃマッチしなくて当然だ
初期状態では、正規表現はマルチバイト文字列にマッチしないようにできてる
(少なくとも確実にマッチするという保証はない)
$KCODEを設定するか、あるいは正規表現に文字コード指定をつけるかしないとダメ
0424デフォルトの名無しさん
2008/01/31(木) 21:34:09ウエーブダッシュ:〜
全角チルダ:~
のふたつあるのが問題かなーとおもったけど、ちがうのか
0426420
2008/01/31(木) 21:47:28それは全く知りませんでした。
今、後半の「〜」をウエーブダッシュというので、書き換えて
やったらうまくいきました!!
本当に有難うございます。
ちなみにこの話っていうのはよく知られた問題なのでしょうか?
0427デフォルトの名無しさん
2008/01/31(木) 21:49:291. どんな$KCODE指定をつけたのか書くこと
2. tosjis&toutfで、正しく文字コードを変換できているかどうかをチェックすること
0428デフォルトの名無しさん
2008/01/31(木) 21:52:10〜のつもりだった部分が全部ウェーブダッシュだったとかよくあるよな
0429420
2008/01/31(木) 22:03:021. $KCODE='UTF-8'としました。
コードのファイルはUTF-8で保存してます。
2. チェックの仕方が良く分からないので、ソースの文字コード指定で
以下のようにしましたが、変化無かったです。
t = Kconv.kconv(s, Kconv::SJIS, Kconv::UTF8)
u = Kconv.kconv(t, Kconv::UTF8, Kconv::SJIS)
>>428
そうなんですか!よくある問題なんですね。。勉強になります。
ホント有難うございました。こんな早くに解決するとは、、
422さん,423さんもありがとうございました。
0430デフォルトの名無しさん
2008/01/31(木) 22:06:400431デフォルトの名無しさん
2008/01/31(木) 22:10:020433デフォルトの名無しさん
2008/01/31(木) 22:42:26で、規格は〜をウェーブダッシュにしろといってるが、これは1994年製。
だから、互換性重視するWindowsで〜をUnicodeにするとみんな全角チルダになる。
規格通り変換テーブルを実装すると〜の変換先はウェーブダッシュになるから大変な目に
Unicodeの絡みであと問題になりやすいのは、MACがファイル名をNFDして持ち出してくることかな
043486
2008/01/31(木) 23:33:29文字列の距離を求めることはできるのですが、
母音(aiueo)の挿入、置換、削除が行われたときのみ、重みを1じゃなくて2としてで距離を計算したいんです。
kasaとsasaの距離は1
kasaとkasuの距離は2
といった感じです。どなたかよろしくお願いします。
0435デフォルトの名無しさん
2008/02/01(金) 00:08:29s.split('').zip(t.split('')).inject(0){|x,y| y[0] == y[1] ? x : x += (y[0] =~ /[aiueo]/ ? 2 : 1) }
end
kyori('kasa', 'sasa')
=> 1
kyori('kasa', 'kasu')
=> 2
0436デフォルトの名無しさん
2008/02/01(金) 00:37:55良く知らんけど、1992年にすでにCP932->Unicodeの変換表とかまであったの?
kernel32.dll に MultiByteToWideChar とかのユニコード変換系APIが
追加されたのは NT3.1以降、95以降らしい。
それ以前に互換性が問題になるほど外部に公開されてたAPIとか変換表ってあったん?
0437デフォルトの名無しさん
2008/02/01(金) 00:40:19もちつけ。
0438デフォルトの名無しさん
2008/02/01(金) 01:19:06ttp://slashdot.jp/~yasuoka/journal/357074
とかかな
0439デフォルトの名無しさん
2008/02/01(金) 05:37:10file = open("test.txt")
print file.read
:in `initialize': No such file or directory - test.txt (Errno::ENOENT)
in `open'
と表示されます。
どなたか教えてください。
0440デフォルトの名無しさん
2008/02/01(金) 05:42:36そのままの意味。
test.txtがないから開けない。
0441デフォルトの名無しさん
2008/02/01(金) 06:35:57返答ありがとうございます。
test.txt があることは何度も確認しているのですが、
どうしても、エラー表示がでるので、他のファイルで試してみます。
0442デフォルトの名無しさん
2008/02/01(金) 06:46:11カレントディレクトリ、というものを意識してください。
0443デフォルトの名無しさん
2008/02/01(金) 07:34:53'デスクトップ'
の文字コードが違うとか
0444デフォルトの名無しさん
2008/02/01(金) 08:43:40>>443
ありがとうございます。
保存する前に実行していたので、エラーが出たようでした。
保存後実行で解決しました。
044586
2008/02/01(金) 11:08:20ありがとうございます。確かに距離はでましたが、
例えばyとyyyyの距離は挿入が3回行われるため距離3にしたいのです。
またuとyyyyなら距離4にしたいのです。
すいません、仕様不足でしたが、修正ソースお願いできないでしょうか?
044686
2008/02/01(金) 11:13:37なのでyuとyayaなら距離は5となります。
日本語からローマ字に変換したもの同士を比較してるのですが、もし母音が一文字なのが余計でしたら
例えば変換規則をxaなどとして必ず偶数番目に母音を入れることも可能です。
きゃとかしゃも何とかします。
0447デフォルトの名無しさん
2008/02/01(金) 11:31:53格好よく書かなければいけないという縛りを勝手に感じることがあるがそんなもん無視しろ
望む結果を出すプログラムであることが第一だ
0448デフォルトの名無しさん
2008/02/01(金) 11:35:210449デフォルトの名無しさん
2008/02/01(金) 11:46:39何かよくわからない素晴らしいメソッドを使って1行で書けるのかもしれないが、今自力で作ることのほうが重要
まあ、半年後にはRubyどころかプログラミング言語すら使ってないっていうパターンもあるだろうけどな
そういう場合は自己探求に任せるのは双方にとって馬鹿らしくはある
045086
2008/02/01(金) 13:28:59s.split('').zip(t.split('')).inject(0){|x,y| y[0] == y[1] ? x : x += (y[0] =~ /[aiueo]/ ? 2 : 1) }
という一文が何をしているのかよくわからなくって・・・
動作はするのに理解できてないのがわからず、修正しようにもできないのが現状です。
ですので、もしよかったらこの一文もご教授ください。。。ググッてみましたが.zipがうまく探せないです。
0451デフォルトの名無しさん
2008/02/01(金) 13:39:13初心者に自分の技術(と信じてるもの)を見せびらかして悦に浸る人種
0452デフォルトの名無しさん
2008/02/01(金) 13:46:29意図的に書いてる奴は放置として、気づいた人が平易なほうに書き直すのがよいかと思われ
0453デフォルトの名無しさん
2008/02/01(金) 13:59:12とりあえず脊髄反射的にバラしてみる
s_splitted = s.split('')
t_splitted = t.split('')
zipped = s_splitted.zip(t_splitted)
zipped.inject(0){|x,y|
y[0] == if y[1] then
x
else
x += if y[0] =~ /[aiueo]/ then
2
else
1
end
end
}
split ttp://www.ruby-lang.org/ja/man/html/String.html#split
zip ttp://www.ruby-lang.org/ja/man/html/Enumerable.html#zip
inject ttp://www.ruby-lang.org/ja/man/html/Enumerable.html#inject
0454デフォルトの名無しさん
2008/02/01(金) 14:36:46class String
def levenstein(other)
return nil if self.empty?
return nil if other.empty?
# 距離行列のサイズを確定
row_size = self.size + 1
col_size = other.size + 1
dm = []
row_size.times do
dm << Array.new(col_size)
end
# 距離行列の値を初期化
for row in 0...row_size
dm[row][0] = row
end
for col in 0...col_size
dm[0][col] = col
end
(↓に続く)
0455デフォルトの名無しさん
2008/02/01(金) 14:37:36# 距離の計算
for row in 1...row_size
for col in 1...col_size
c1 = self.slice(row - 1, 1)
c2 = other.slice(col - 1, 1)
if c1 == c2 then
cost = 0
elsif c1 =~ /[aiueo]/ then
cost = 2
else
cost = 1
end
dm[row][col] = [
dm[row - 1][col] + 1, # 挿入
dm[row][col - 1] + 1, # 削除
dm[row - 1][col - 1] + cost # 置換
].min
end
end
#行列の最後の値が文字列間のレーベンシュタイン距離となる
return dm.last.last
end
end
puts 'kasa'.levenstein('sasa') #=> 1
puts 'kasa'.levenstein('kasu') #=> 2
puts 'yu'.levenstein('yaya') #=> 4
0456454
2008/02/01(金) 14:41:23あとは自分で何とかしてくれ
もしコードの内容にミスがあったら、誰か突っ込んでほしい
045786
2008/02/01(金) 18:54:01ありがとうございます。ソースまでのっけてくださって。
本来ならここで後は組み合わせろとなるところを
>>454
おかげで助かりました。
ただ、例えばauとyauuの距離が2になってしまうのでちょこっと改造しておきます。
if c1 == c2 then
cost = 0
elsif c1 =~ /[aiueo]/ then
cost = 2
else
cost = 1
end
のへんをいじってやってみます。
>>451から>>456にいたるまで、皆さん本当にどうもありがとうございました。
045886
2008/02/01(金) 19:05:37今見てやってみたら一瞬で改造できました。笑
ほんとにこんな長いソースを実ソースも見ずにやっていただいてありがとうございます。
僕も、もうちょっと勉強して、僕みたいな香具師を助ける側になれるようがんばります。
0459デフォルトの名無しさん
2008/02/01(金) 20:00:08すまんそれはネタというか冷やかしで書いたもので
挿入とか削除とかに対応してないから使えないだろうな、とは思ってた。
勿論、技術をひけらかすつもりもない。
というか俺も素人だからそんなに大したコードじゃないと思うんだが・・・
zipは二つの配列からペア配列を作るメソッド
a=[:a,:b,:c]
b=[1,2,3]
c=a.zip(b) #=> [[:a,1],[:b,2],[:c,3]]
ハッシュ作るときとかにたまに使う
Hash[*c.flatten] #=> {:a=>1, :b=>2, :c=>3}
0460デフォルトの名無しさん
2008/02/02(土) 00:54:44テキスト処理にわざわざスクリプト書きたくないんだけど。
0461デフォルトの名無しさん
2008/02/02(土) 01:01:47一行で書きたいならawk使ったほうがいいような気がする
0462デフォルトの名無しさん
2008/02/02(土) 01:14:450463デフォルトの名無しさん
2008/02/02(土) 01:26:22ここにいますよー。
Rubyの宿題スレにもそこそこいる
0464デフォルトの名無しさん
2008/02/02(土) 01:27:19正規表現使った時にそいつら使えるぜ
0465デフォルトの名無しさん
2008/02/02(土) 01:27:590466デフォルトの名無しさん
2008/02/02(土) 01:31:20-aオプション(とゆーことは、-nか-pオプションも)付けたときだけだが
$F[0]、$F[1]、……が$1、$2……相当。
$0は$_
リファレンスのコマンドラインオプションのとこ参照
ちなみにそこ読めば書いてあるが$_をフィールドセパレータで分割したのが$Fなんで$FはArray
0467デフォルトの名無しさん
2008/02/02(土) 01:32:30ワンライナーでかけたからといって、自己満足でしかない。
0468デフォルトの名無しさん
2008/02/02(土) 01:32:330469デフォルトの名無しさん
2008/02/02(土) 01:32:40みたいに書こうと思えば書けるが、
Perl みたいな変態的な省略は�_
0470デフォルトの名無しさん
2008/02/02(土) 01:37:02それだ。ありがと。
フィールドセパレータはどうやって設定するんだろう。。
>>467
君ってあまりコマンドラインシェル使ったこと無いでしょ。
0471デフォルトの名無しさん
2008/02/02(土) 01:38:25いや、トテモトテモ使ってるよ。
0472デフォルトの名無しさん
2008/02/02(土) 01:41:120473デフォルトの名無しさん
2008/02/02(土) 01:45:300474デフォルトの名無しさん
2008/02/02(土) 01:47:350475デフォルトの名無しさん
2008/02/02(土) 01:53:220476デフォルトの名無しさん
2008/02/02(土) 02:08:310477デフォルトの名無しさん
2008/02/02(土) 03:02:51どうすればいいの?
0478デフォルトの名無しさん
2008/02/02(土) 03:21:41普通に書けるけど?
> ruby -Ks -e "Dir.glob('*'){|x|p x}"
0479デフォルトの名無しさん
2008/02/02(土) 08:06:42> ruby -Ks -e "Dir.glob('*'){^|x^|p x}"
0482デフォルトの名無しさん
2008/02/02(土) 13:43:33しかし、「データがありません」という場合どうするかで悩んでます。
a) 空のハッシュ {} を返す
b) 偽である nil を返す
c) 自作の例外を発生させる
どれが妥当でしょか。
このハッシュは別の大きなハッシュに {サイト名 => parsed_hash} のように格納される予定です。
データがありませんの大きな理由として
「過去のハッシュとの差分がゼロ」
「HTML中にパースすべき該当項目なし」
「そもそもサーバにアクセスできない」
等があります。
0483デフォルトの名無しさん
2008/02/02(土) 14:05:59下記のようなコードを書いてerbに変数ItemListの内容を出力しようと思います。
PHPのテンプレートエンジンのSmartyのようにassignメソッドがあればいいのですが
どうも見当たりません。
変数のスコープの問題だと思うのですが、どうやって出力すればいいのでしょうか?
def initialize
@cgi=CGI.new
end
# 商品一覧
def doItemList
@erb = ERB.new("item_list.tpl")
im=ItemManager.new()
itemList=im.getItemList(10)
display()
end
# テンプレート出力
def display(contentType="text/html")
print "Content-Type: #{contentType}\n\n"
print @erb.result(binding)
end
0484デフォルトの名無しさん
2008/02/02(土) 14:49:15まずはダウンロードしてこなきゃ!!o(^-^)o
0485デフォルトの名無しさん
2008/02/02(土) 14:54:20俺がよく書くのは
> ruby -e "puts ENV['PATH'].split(';')"(sortを加えることも)
だって、生のPATH記述って読み辛いんだもの…。
0486デフォルトの名無しさん
2008/02/02(土) 15:00:05なんだかすごく助けられた気がする
深謝
0487デフォルトの名無しさん
2008/02/02(土) 15:09:33erbを一度も使ったことのない俺がWeb上の解説を読んで適当に回答するよ!
> in `display': undefined local variable or method `itemList' for #<MyCGI:0x4030ed9c> (NameError)
こんなエラーが出るという質問だと推測。itemListをインスタンス変数あたりに書き変えると動いたよ!
require 'erb'
class MyCGI
def doItemList
im = ItemManager.new
@itemList = im.getItemList(10)
@erb = ERB.new(DATA.read)
display
end
def display(contentType="text/html")
@contentType = contentType
@erb.run(binding)
end
end
class ItemManager
def getItemList(n); (1..n).to_a; end
end
MyCGI.new.doItemList
__END__
Content-Type: <%= @contentType+"\n\n" %>
<%= @itemList.join(',') %>
0488デフォルトの名無しさん
2008/02/02(土) 15:17:35erbスクリプト内で使ってる名前の変数が読めないとダメっぽいという話。たぶん。
だからこれでも動く。displayに引数があるのは気持ち悪いのでoutputに変更(というかdisplayはto_sの以下略)
require 'erb'
class MyCGI
def doItemList
im=ItemManager.new
itemList=im.getItemList(10)
@erb = ERB.new(DATA.read)
output(itemList)
end
def output(itemList, contentType='text/html')
@erb.run(binding)
end
end
class ItemManager
def getItemList(n); (1..n).to_a; end
end
MyCGI.new.doItemList
__END__
Content-Type: <%= contentType+"\n\n" %>
<%= itemList.join(',') %>
0489デフォルトの名無しさん
2008/02/02(土) 15:17:35レスどうもです。
やっぱり、スコープの問題なんですね。
MyCGIのインスタンス変数にしてしまうってのが・・・
なんか書き方として気持ち悪いような。
itemListのまま使いたいとすれば、def doItemListの中でerbを使うしかないって事ですかね?
やっぱり、assign欲しい・・・
0490デフォルトの名無しさん
2008/02/02(土) 15:54:52あとerb使うときはERB::Utilでエスケープするようにしてくれえ
0491デフォルトの名無しさん
2008/02/02(土) 16:42:55ただ、bindingしたあとにローカル変数を「追加」するのは面倒なので注意
この場合、display内でcontentTypeを設定してitem_list.tplで使用するのは面倒
# item_list.tpl
<%=h itemList.map{|e| "<#{e}>"}.join(' ') %>
# out.rb
require 'erb'
class MyCGI
include ERB::Util
def doItemList
@erb = ERB.new(File.open("item_list.tpl").read)
im=ItemManager.new()
itemList=im.getItemList(10)
binding_data = binding
display(binding_data)
end
def display(binding_data,contentType='text/html')
print "Content-Type: #{contentType}\n\n"
print @erb.result(binding_data)
end
end
class ItemManager
def getItemList(n) ['あ','い','う','え','お']; end
end
MyCGI.new.doItemList
0492デフォルトの名無しさん
2008/02/02(土) 17:14:24ハッシュを加工するなら空のハッシュを返すかも
HTMLから抜き出すならnilでいいんじゃね
0493デフォルトの名無しさん
2008/02/02(土) 17:30:02assignあると明示的にこれ使いますよってできるから、わかりやすいんですよ。個人的には。
Railsだと、erbのスコープはどうなってるんでしょう?
0494デフォルトの名無しさん
2008/02/02(土) 17:48:35いっそのことPHPで書けば?
0495デフォルトの名無しさん
2008/02/02(土) 19:35:170496デフォルトの名無しさん
2008/02/02(土) 19:41:330497デフォルトの名無しさん
2008/02/02(土) 19:43:30>ネット上の、時々更新されるHTMLをパースしてハッシュにして返すメソッドを作りました。
>しかし、「データがありません」という場合どうするかで悩んでます。
>
>a) 空のハッシュ {} を返す
>b) 偽である nil を返す
>c) 自作の例外を発生させる
「データがありません」を表すなら、b) がよい。
a) は、データがない場合とある場合とを同じように扱いたい場合に採用する設計。
c) はやりすぎ。
ただ、b)とa)はそう大差がない。
0498デフォルトの名無しさん
2008/02/02(土) 19:55:28>やっぱり、assign欲しい・・・
あんま関係ないけど、Erubisだとできるみたい。assignじゃなくてHashつかうんだけど。
def doItemList
@eruby = Erubis::Eruby.new(DATA.read)
itemList = ItemManager.new.getItemList(10)
output(:itemList=>itemList)
end
def output(hash)
print @eruby.evaluate(hash)
end
>>490
>あとerb使うときはERB::Utilでエスケープするようにしてくれえ
これもErubis::EscapedEruby使うとデフォルトでエスケープされる。
0499デフォルトの名無しさん
2008/02/02(土) 20:23:12>>488もじゃね?
表示したいデータをローカル変数にした状態でrunするので問題ないと思うんだけどなあ
変数の参照を全部持ってくbindingがイヤなんだろ、つまり
0500デフォルトの名無しさん
2008/02/02(土) 20:26:23*.rhtmlでローカル変数を変更したら、それがもとのプログラムにも影響与えるじゃん。問題ありだろ。
0501デフォルトの名無しさん
2008/02/02(土) 20:48:21def main
include ERB::Util
erb = ERB.new(DATA.read)
str = 'strは文字列だよ!'
puts str
message = 'こんにちは'
print erb.result(binding)
puts str
end
main
__END__
<%=h message %>
<% str='strが変更されました' %>
=============================
~$ ruby erb.rb
strは文字列だよ!
こんにちは
strが変更されました
~$
ぬう
0502デフォルトの名無しさん
2008/02/02(土) 20:59:250503デフォルトの名無しさん
2008/02/02(土) 21:12:24require 'erb'
class MyCGI
def main
str = 'default'
p str
msg1 = 'Hello'; msg2 = 'World'
output(msg1, msg2)
p str
end
def output(msg1, msg2)
erb = ERB.new(DATA.read)
erb.run(binding)
end
end
MyCGI.new.main
__END__
<%= "#{msg1},#{msg2}!" %>
<% str='**CHANGED**' %>
- - - 8< - - - 8< - - - 8< - - - 8< - - - 8< - - -
$ ./test.rb
"default"
Hello,World!
"default"
0504デフォルトの名無しさん
2008/02/02(土) 21:33:11っていうのがきっとErubisなんだろうな…
0505デフォルトの名無しさん
2008/02/02(土) 21:38:29出力結果のHTMLをキャッシュするという話なら、それはテンプレートエンジンとは別に用意する機能だよ。
テンプレートエンジンに持たせる機能じゃない。
0506デフォルトの名無しさん
2008/02/02(土) 21:56:08つSmarty
0507デフォルトの名無しさん
2008/02/02(土) 22:17:06そこまでは気を遣ってないというかそれは自力でやれというか
…Erubisにはあるようなことが書いてあるなあ
ttp://www.kuwata-lab.com/erubis/users-guide.06.html#topics-caching
0508デフォルトの名無しさん
2008/02/02(土) 23:35:37その高速化の手段の一つとして、キャッシュすることも挙げてたからな。
Preprocessing 何つー機能もあるくらいだし
0509デフォルトの名無しさん
2008/02/02(土) 23:38:540510デフォルトの名無しさん
2008/02/03(日) 02:08:48より具体的にはTest::Unitを使いたいんだが、そのログをファイルにしたい。
ぱっとリファレンスを読んだ限りじゃそういう類の見つからないし、なんかいい方法ないですか。
もし複数いい方法があれば、それぞれの違いについて簡単な解説つきだととても助かる。
0511デフォルトの名無しさん
2008/02/03(日) 02:10:550512デフォルトの名無しさん
2008/02/03(日) 02:21:20def checkSite( address )
url = URI.parse(address)
res = Net::HTTP.start(url.host, url.port){|http|
http.head(url.path)
}
# HTTP_OKなら
if res.code == 200 then
p res['content-type']
else
p res['content-type']
puts "error : " + res.code.to_s
end
end
実行結果が
"text/html;charset=UTF-8"
error : 200
になります
res.code == 200なのにifでうまくひっかかりません
これは何を勘違いしているのかご指摘お願いしますm(__)m
0513デフォルトの名無しさん
2008/02/03(日) 02:25:000514デフォルトの名無しさん
2008/02/03(日) 02:27:07こういうのは自分で実際にデータを表示して試行錯誤
require 'uri'
require 'net/http'
url = URI.parse('http://www.2ch.net/')
res = Net::HTTP.start(url.host, url.port){|http|
http.head(url.path)
}
p res.code
の実行結果
$ ./http.rb
"200"
つまりはそういうこと
0515デフォルトの名無しさん
2008/02/03(日) 02:29:21ならOK
0516デフォルトの名無しさん
2008/02/03(日) 02:31:10>>514
>>515
さっそくのお返事ありがとうございます、解決しました
res.codeは数値だと思い込んでいて(.to_sできるし)ハマっていました
0517デフォルトの名無しさん
2008/02/03(日) 02:46:58require 'net/http'
Net::HTTP.version_1_2
uri = URI.parse('http://www.2ch.net/')
res = Net::HTTP.start(uri.host, uri.port){|http|
http.head(uri.path)
}
if res.code_type == Net::HTTPOK
p res
end
0520510
2008/02/03(日) 03:21:00>>511
えと、それが出来るのならそうしたんだ。
ただ、残念ながら、telnetが禁止されてるレンタルサーバー上で、念のためモジュールテストを行いたくて、
そいでそういうニーズが出てきてるんだよ。
だから、そうやってコマンドラインでリダイレクトできれば楽なんだけど、コマンドラインそのものが扱えないというわけ。
まぁもっとも、UnixもRubyも初心者なので、その回答で正しいのなら…もう少し説明してくれると助かる。
0521デフォルトの名無しさん
2008/02/03(日) 03:25:56system("ruby unko.rb > benki.txt")
0522510
2008/02/03(日) 03:34:55ありがとう。なるほど。
後は必要に応じて加工し放題だな。
0523デフォルトの名無しさん
2008/02/03(日) 03:39:09$stdout=File.open('output.txt','w')
$stderr=File.open('errors.txt','w')
puts 'テストだよん'
raise 'エラーだよん'
これ以降、puts や print の標準出力は$stdoutで指定したoutput.txtに、
例外とかのエラー出力は$stderrで指定したerrors.txtに書き込まれる
が、これは意外とめんどいんで、シェルのリダイレクト代わりに使うなら>>521で十二分かと
0524デフォルトの名無しさん
2008/02/03(日) 03:41:42標準入力の情報を渡す必要がありそう。
0525デフォルトの名無しさん
2008/02/03(日) 03:45:40自分でデータ渡してるだろうから多分問題ないだろう。
0526デフォルトの名無しさん
2008/02/03(日) 04:28:14いまどきtelnetなんてどこでも禁止されてるだろ
0527デフォルトの名無しさん
2008/02/03(日) 04:31:17ファミコンとかゼロックスとかと同じような感じ
0528デフォルトの名無しさん
2008/02/03(日) 05:29:460529デフォルトの名無しさん
2008/02/03(日) 06:18:090530デフォルトの名無しさん
2008/02/03(日) 11:46:240531デフォルトの名無しさん
2008/02/03(日) 12:17:56デーモンはともかく、クライアントとしてのtelnetはPOPやHTTPみたいな
プロトコルを手で喋る(?)ときに重宝するから入っていそうだが。
とはいえ、デフォでは入ってないかもな。
0532デフォルトの名無しさん
2008/02/03(日) 12:37:16表示は「とにかく一覧として表示されればいい(新着が存在することを明示しなくていい)」とします。
昨日抽出したとある本のデータのハッシュは以下の通りでした。PStoreで保存します。
book = {'title'=>書籍名, '著者'=>著者名, 'review'=>['面白かった。','まあまあだと思った。']}
で、今日アクセスしてHTMLをスキャンした結果が
today = {'title'=>書籍名, '著者'=>著者名, 'review'=>['面白かった。','まあまあだと思った。']}
という、昨日と中身同じな未更新の内容でした。相手のHTMLには最終更新日などの情報はありません。
1) ハッシュの上書きの特徴を利用し、強制的にbook.update(today)してbookを今日の結果として表示させる
2) reviewの中身を比較して違いがあった場合のみbook.update(today)とかしてbookを表示する
2通りの手段があると思うんですが、2ってもしかして比較に時間かかったりしますか。
プログラム的には「差分が存在した場合のみ変数を更新」というのがいいような気はするんですが。
サイトから抜き出した要素がある日突然減ってることはありません(今日はtitleが無いとか)。
0533デフォルトの名無しさん
2008/02/03(日) 12:51:42データの量にもよるけど、単純な比較に致命的な時間がかかる事はあまり無いと思う。
その前提なら変化があるのは review の項目だけだろうから、これだけでいいのでは?
today['review'] == yesterday['review']
0534デフォルトの名無しさん
2008/02/03(日) 12:56:59いきなり全体に上書きしてもデータ上は問題ないのなら1でいいんでないかい
つまり「過去ログは不要で今日のサイトの状況のみをリアルに反映する」のが目的ならね
ある日のレビューが
'review'=>['面白かった。','まあまあだと思った。','↑厨の連投自演乙wwww']
になってて、翌日に
'review'=>['面白かった。','まあまあだと思った。']
に戻ってた場合とかは、1の方法だとレビュー削除を検知も保存もできないけど、2ならやろうと思えばできる
0535デフォルトの名無しさん
2008/02/03(日) 13:02:23>>533のように変化しうるキーの値だけ更新するのが本当なんだろうけど、
100項目くらいなら全部をupdateしちゃって問題ないと思う
0536デフォルトの名無しさん
2008/02/03(日) 19:45:26test taskが成功したときのみinstall taskを実行して欲しいです
exitで終了させる方法しか思いつきません
task :default => [:install]
task :test => OUT do |t|
%x{ #{Dir.pwd + '/' + t.preqs[0]} }
if $? != 0
print "sippai\n"
#exit(1)
end
end
task :install => :test do |t|
print "install...\n"
end
0537デフォルトの名無しさん
2008/02/03(日) 19:52:190538デフォルトの名無しさん
2008/02/04(月) 00:26:55適当なでかいハッシュにキーと値のペアで格納したほうがマシだよね?
0539デフォルトの名無しさん
2008/02/04(月) 00:31:220540デフォルトの名無しさん
2008/02/04(月) 00:36:25> 構造体クラス。
> Struct.new はこのクラスのサブクラスを新たに生成します。
> 個々の構造体はサブクラスから new を使って生成します。
> 個々の構造体サブクラスでは構造体のメンバに対するアクセスメソッドが定義されています。
…ハッシュでいいや
0541デフォルトの名無しさん
2008/02/04(月) 00:37:03・後でメソッド持たせたくなった時、楽
・項目名を間違っていた場合すぐ判る
・その一連のデータにどんな項目があるかが一目瞭然
0542デフォルトの名無しさん
2008/02/04(月) 00:49:19Hashでkeyを指定するのとaccessorでインスタンス変数にアクセスするのってたいして変わらん気がする
もっと複雑怪奇なデータ構造なら破綻するのかもしれないけど
あとただのデータの癖にメソッドたくさん持ってるのは気持ち悪い
おまえらは素直にアプリケーションクラスにいじられてればいいんだよ
0543デフォルトの名無しさん
2008/02/04(月) 01:02:19# その1 -----------------------------
interval = nil
interval = 10 if 適当な条件
…
sleep interval if interval
# その2 -----------------------------
if 適当な条件 then
interval = 10
else
interval = nil
end
…
sleep interval if interval
# その3 -----------------------------
interval = 10 if 適当な条件
…
sleep interval if defined?(interval)
# -----------------------------------
どれがいいかな?
intervalはここでしか使わないんですが。
今までは何の疑いもなくインスタンス変数を消費して
sleep @interval if @interval
とか書いてたんですがこれを機にインスタンス変数の乱用減らそうかと
0544デフォルトの名無しさん
2008/02/04(月) 02:04:310545デフォルトの名無しさん
2008/02/04(月) 02:30:29"abcde"[2]が"a"がでないのをどう受け止めるかによって変わりそう。
0546デフォルトの名無しさん
2008/02/04(月) 04:07:12こーゆーのは?
interval = ( 適当な条件 ? 10 : 0 )
:
sleep(interval)
ローカル変数で間に合うくらい近い場所ならこーするけど
sleep(10) if 適当な条件
0547デフォルトの名無しさん
2008/02/04(月) 09:06:08卑近実際の使い勝手が悪いのには反論の余地はないな
いちいちアスキー文字に変換されないのは便利なこともあるんだろうが
>>543
ローカル変数の初期値のスタンスに関する問題だということでいいよな
その2かそれに類するものであるべきだとは思う
その1のようにnilを指定したあとで別オブジェクトに挿げ替えるというのは気持ち悪い
あと、その3は常にtrueになるような気がしてならんのだが
0548デフォルトの名無しさん
2008/02/04(月) 12:01:440549デフォルトの名無しさん
2008/02/04(月) 12:18:20だったらString.eachはString.each_lineではなくString.each_byteと同じものにしとけバーカバーカ
>>544
$KCODE='e'
puts 'あいうえお'[4,2]
"う"
0550デフォルトの名無しさん
2008/02/04(月) 12:31:02驚き最小の原理というのは(Matzの)驚きが最小って意味。
Cでも"abcdef"[0]は"a"じゃないじゃん。ブロック変数がローカルでないのも
Cの
int i = 42;
for (i = 0; i < 100; i++) {
process();
}
i => 99
って動作を踏まえたものだし、それなりに根拠はある。
1.9だと両方とも変わったんだけど、?aという記法は残して欲しかったな。
0551デフォルトの名無しさん
2008/02/04(月) 12:46:47記法自体は残ってるよ。挙動を変えないでほしかった、という意味かな。
0552デフォルトの名無しさん
2008/02/04(月) 12:52:31どう書いていいのか全く思いつかなくなっててとてもショック
そんなにまじめに勉強してたわけじゃないけどさー
いかん、これでは「Rubyしか使えない可哀想な人」になってしまう
0553デフォルトの名無しさん
2008/02/04(月) 13:00:27Yes。Emacsの記法だっけか。
>>552
RubyはPerlの互換だから、RubyのほかにPerlだけ使えてもあんまり意味ないけど
。
そういや最近話題のarcでは("abcdef" 0)が#\aなんだよな。
0554デフォルトの名無しさん
2008/02/04(月) 13:30:03というディレクトリに
main.rb
sub.rb
uri.rb
という3つのファイルがあって、main.rbからsub.rbとuri.rbを読み込んで中のクラスやモジュールを利用したいです。
一番好ましい書き方は何ですか?
main.rbの実行時のカレントディレクトリは/home/me/rubyだけとは限りません。
0555デフォルトの名無しさん
2008/02/04(月) 13:55:420556デフォルトの名無しさん
2008/02/04(月) 13:57:0830ってヤケにでかい塊だな。
0557デフォルトの名無しさん
2008/02/04(月) 14:02:59__FILE__はフルパスとは限らないので
$: << File.expand_path("..", __FILE__)
のほうがいい。
0558デフォルトの名無しさん
2008/02/04(月) 14:17:24> cat uri.rb
class URI
MSG="このファイルは#{__FILE__}です"
end
> cat main.rb
$LOAD_PATH << File.expand_path("..", __FILE__)
require 'uri'
puts URI::MSG
> ruby ./main.rb
main.rb:3: uninitialized constant URI::MSG (NameError)
横着せずに require をフルパスつきで読み込んだほうが確実だと思う
0559デフォルトの名無しさん
2008/02/04(月) 14:28:41q.length × 1.5 =>8
てしたいのですが、うまいことぐぐれないので助けてください。
0560デフォルトの名無しさん
2008/02/04(月) 14:35:40ぐぐる以前に体系的に一通りRubyの基礎を学ぶといいぞ
0561デフォルトの名無しさん
2008/02/04(月) 14:43:430562デフォルトの名無しさん
2008/02/04(月) 14:46:08$LOAD_PATH.unshift(File.expand_path("..", __FILE__))
0563デフォルトの名無しさん
2008/02/04(月) 14:47:22いや、意味は不明だがとりあえずは比較だろ
q = 'abcd'
if (q.length * 1.5 >= 8.0) then
puts 'とりあえず8かそれ以上です(何が?)'
else
puts 'とりあえず8未満です(何が?)'
end
0564デフォルトの名無しさん
2008/02/04(月) 14:49:44それだと添付ライブラリの uri を require 'uri' で読めなくならないか
自作ファイルのほうを特別扱いするのが妥当かと思われ
0565デフォルトの名無しさん
2008/02/04(月) 14:52:57パスが変わってないと読み込んでくれないってことか
0566デフォルトの名無しさん
2008/02/04(月) 16:30:370567デフォルトの名無しさん
2008/02/04(月) 16:32:090568デフォルトの名無しさん
2008/02/04(月) 16:42:170569デフォルトの名無しさん
2008/02/04(月) 16:44:49とらえず、既存の仕事をRubyで置き換える意味はないよ
0570デフォルトの名無しさん
2008/02/04(月) 16:45:26自分も1000行行った事ないけど字面が好きだから細々と使ってるよ。
正直細かい機能はほとんどしらねぇw
0571568
2008/02/04(月) 16:51:22単にruby流行ってるみたいなんで興味持った、っていう程度です。スンマセン
でもちょっとかじってみようかな。perlからの乗り換えも結構多いようですね
0572デフォルトの名無しさん
2008/02/04(月) 17:02:29一通り使ってみた後にはPerlでのプログラミングの筋もよくなってるという矯正効果つき
0573559
2008/02/04(月) 19:39:054文字を入れて出力したいのは6ってゆー数字です。
0574デフォルトの名無しさん
2008/02/04(月) 20:00:09体系的に一通りRubyの基礎を学ぶといいぞ
0575デフォルトの名無しさん
2008/02/04(月) 20:03:24どんなプログラム言語でもExcelとかでも
「かける」は*で「わる」は/とか
プログラム以前の問題かもな
0576デフォルトの名無しさん
2008/02/04(月) 20:05:20=> 6.0
0577デフォルトの名無しさん
2008/02/04(月) 20:11:19いや四則演算の記号はRubyの基礎だろ
>>576
要件満たしてないぞ
0578559
2008/02/04(月) 21:10:540579デフォルトの名無しさん
2008/02/04(月) 22:31:14おすすめな方法ありますか?
libpcapなら以下の方法があるみたいなんですけど・・・
http://www.goto.info.waseda.ac.jp/~fukusima/ruby/pcap/doc-ja/index.html
0580デフォルトの名無しさん
2008/02/04(月) 22:32:10とりあえず、6.0を四捨五入させて6にしかたったのなら
(q.length*1.5).round と書くといいよ。
0581デフォルトの名無しさん
2008/02/05(火) 18:19:56やっぱり物足りないなぁと思い始めてきました。
まだ趣味でやってる範囲なのですが本などを買ってやったほうがいいんですかね?
インターネットで解説見れば無料だから・・・っていうのは甘いですか?
0582デフォルトの名無しさん
2008/02/05(火) 18:23:290583デフォルトの名無しさん
2008/02/05(火) 18:34:140584デフォルトの名無しさん
2008/02/05(火) 18:39:06空き時間に小説感覚で読んだりはするけどw
慣れてきちゃえば、実用的にデジタルデータの方が楽というか。
0585初心者
2008/02/05(火) 20:10:35ブラウザでRubyが受け取った値をCのプログラムに渡して、Cで計算してRubyで
返すなんてことできますか?
0586デフォルトの名無しさん
2008/02/05(火) 20:13:35Ruby っつーかプログラミングと日本語の初心者だな。
0587初心者(プログラミング、日本語、2ちゃんねる)
2008/02/05(火) 20:14:360588デフォルトの名無しさん
2008/02/05(火) 20:23:22Rubyでhttpなデータをダウンロードして
それをCで書いたルーチンに処理させて結果をRubyで受け取りたいって事か?
それともサーバ側でRubyなCGIを動かしてボトルネックになりそうな部分をCで書きたいということか?
どっちもとりあえず可能とだけいっておく。
0589デフォルトの名無しさん
2008/02/05(火) 20:24:09ここが曖昧。Ruby組み込みブラウザか? とか言ってみる。
それともCGIなのか。COMでAcviteScriptRubyを呼ぶのか。
>Cのプログラムに渡して、Cで計算して
Cで書かれた実行ファイルが既にあるのか、計算部分を
拡張ライブラリとして書き下ろすのか。
>Rubyで返す
X:で -> O:に
あるいはさらにRubyからブラウザになにか反映させるということか?
ざっと見てこれぐらいオモタ
0590デフォルトの名無しさん
2008/02/05(火) 21:32:460591デフォルトの名無しさん
2008/02/05(火) 23:09:440592デフォルトの名無しさん
2008/02/05(火) 23:10:500593デフォルトの名無しさん
2008/02/05(火) 23:12:270594デフォルトの名無しさん
2008/02/05(火) 23:25:570595デフォルトの名無しさん
2008/02/06(水) 00:00:15すべての投稿から、「すでに投稿された文面が再度登場していたら、
その数だけレス番付きで抽出する」
というものはできないでしょうか。
要は何がやりたいのかと言うと、
「スレッドがコピペ投稿だらけ」になっており、
レス削除要請を行いたいのです。
ただ、そのコピペの数が尋常じゃないので抽出が困難なのです。
「文面の95%が一致していたらコピペとみなす」機構が嬉しいです。
0596デフォルトの名無しさん
2008/02/06(水) 00:00:590597デフォルトの名無しさん
2008/02/06(水) 00:02:54本が無くてもWebページで身につけられるのは事実
ただ、はじめのうちは本があった方が理解しやすい
とりあえず、本屋・図書館で立ち読みしてみてはどうだろう
必要だと思ったなら買えば(借りれば)いい
0598デフォルトの名無しさん
2008/02/06(水) 00:04:02あれはWebで調べられるし、あんまり意味ない
0599デフォルトの名無しさん
2008/02/06(水) 00:07:520600デフォルトの名無しさん
2008/02/06(水) 00:24:14あれは辞書みたいなもんだからテキストそのものにはならない。
0601デフォルトの名無しさん
2008/02/06(水) 00:36:37丸投げするなら「Rubyの宿題スレ」の方があってるかもしれん
ただ、すぐに流れるかもしれんが。
もし自分でやりたいのなら、ここで質問しまくったらできる範囲だと思う。
あと、プログラム組んだことなくて、極力自分でやりたくないなら、宿題ス(ry
ヒント的なもの
・datのDLは、 open-uri でいけるだろう
・datの中身は、cvsみたいなものなので、cvsライブラリか、eachlinesあたりで
・完全一致ならハッシュ取って調べるのが楽。
・類似度判定が一番問題
AAに特化ということで、記号の数をデータとしてとって、とか。
専門じゃないので厳密なやり方はわからん
あとは、datのサンプルがいくつかいるだろう。
0602デフォルトの名無しさん
2008/02/06(水) 00:45:25メーリングリストはどれを購読するのがお勧めですか?
0603デフォルトの名無しさん
2008/02/06(水) 00:56:000604デフォルトの名無しさん
2008/02/06(水) 01:01:22類似度判定はこのスレの上の方にでてた
レーベンシュタイン距離とか何とかで出来るんじゃね?
0605デフォルトの名無しさん
2008/02/06(水) 02:26:58「2chの全板取得」とか「24時間丸ごと10分ごとに板の全スレの新着取得」とか
そういう馬鹿をする人間が必ず出ている(確定事項)なので
プログラム板の最後の良心の欠片として自力で調べてもらうということになってる
板自治を気取るのではなく自分の見てるスレだけから抜き出したいのなら、
自分の使ってる2ch専用ブラウザのローカルのログを加工するといい
作ったことのある初心者から言うと2ch仕様の調べもの込みで休日の朝から夜までかかった
全くのRuby素人なら1週間くらいかかるんじゃなかろうか
0606デフォルトの名無しさん
2008/02/06(水) 02:33:35下手に簡易って、探せば適当なライブラリがいっぱいありそうだが。
0607デフォルトの名無しさん
2008/02/06(水) 02:42:460608デフォルトの名無しさん
2008/02/06(水) 03:03:110609デフォルトの名無しさん
2008/02/06(水) 08:13:24#ifdef DEBUG
hoge();
#endif
のように、デバッグモードのときだけhoge()を実行するコードを書くのに良い方法はありますか?
0610デフォルトの名無しさん
2008/02/06(水) 08:15:390611デフォルトの名無しさん
2008/02/06(水) 08:25:26hoge if $DEBUG
0612デフォルトの名無しさん
2008/02/06(水) 08:46:22ありがとうございます(^^)
0613デフォルトの名無しさん
2008/02/06(水) 08:49:28if $DEBUG
str='string!'
end
p defined?('s')
これの場合、pで真が表示される
いわゆる「実行させない」ようにさせるだけ(これで充分なことが大半だが)
真にNameErrorを出すような芸当をさせる簡易な書き方は知らない
0614デフォルトの名無しさん
2008/02/06(水) 10:32:45「今から始める」人が、MLの購読で得るものは少ないと思うが
敢えて言うなら、日本語で質問ができるruby-list
0615デフォルトの名無しさん
2008/02/06(水) 19:20:38pythonでいうところの.pycみたいのが作られないんだけどそういうもん?
0616デフォルトの名無しさん
2008/02/06(水) 19:27:250617デフォルトの名無しさん
2008/02/06(水) 19:28:570618デフォルトの名無しさん
2008/02/06(水) 19:42:000619デフォルトの名無しさん
2008/02/06(水) 20:48:17いま、Fileオブジェクトを引数に持ち、ファイルに結果を書き込むメソッドを考えています
引数がFileオブジェクトの場合はそのファイルに書き込み、nullの場合は標準出力に書き込んで欲しいと考えています
そこで
class hoge
def print(file)
if(file ==null)
××××
end
file.puts "なんだかの結果、書き出し"
end
end
と書いているのですが、××××の部分をfile = selfとかしてもダメです
なにかいい方法はあるのでしょうか?
file.putsが複数回出てくるのでif文でnullの時だけputs ""にして、それ以外はfile.puts ""にするのややりたくありません
よろしくお願いいたします
0620デフォルトの名無しさん
2008/02/06(水) 20:51:22io = STDOUT if io == null
io.puts "hoge"
end
0621デフォルトの名無しさん
2008/02/06(水) 20:58:130622デフォルトの名無しさん
2008/02/06(水) 21:00:32ありがとうございます
助かりました
STDOUTとか、その辺の定数みたいなものは自然と身についていくものなんでしょうか?
ちょっと前にもARGVに気が付かず、コマンドライン引数を取得する方法に悩んでしまいました
0623デフォルトの名無しさん
2008/02/06(水) 21:03:530624デフォルトの名無しさん
2008/02/06(水) 21:19:02まあそうなんですけど、私みたいな日曜プログラマはプログラム書きながらわからんところだけ調べるスタイルなので
それに、どの言語もそうですけど、マニュアル分厚くて読む気しない
0625デフォルトの名無しさん
2008/02/06(水) 21:23:36逆引きRuby www.namaraii.com/rubytips/
0626デフォルトの名無しさん
2008/02/06(水) 21:25:08傍から見ててテンプレ嫁ググレカスとか書き込もうと思ったよ
0627デフォルトの名無しさん
2008/02/06(水) 21:34:270628デフォルトの名無しさん
2008/02/06(水) 21:47:040629デフォルトの名無しさん
2008/02/06(水) 21:47:54この場合「組み込み定数」って項目がリファレンスのトップレベルにあるしなあ。
0630デフォルトの名無しさん
2008/02/06(水) 21:56:32Rubyのオンラインマニュアルは充分「厚い」部類に入ると思うぞ
やっぱ3000円出してたのしいRuby第2版買わないとどうにもならん
最初に4時間ほど使って本読んでおけば10分で見つかるものを
オンラインヘルプとへなちょこチュートリアルで1時間かけて探すのはアホらしい
0631デフォルトの名無しさん
2008/02/06(水) 21:58:40本気で言ってる?
「組み込み定数」という文字のどこをどう見れば
「RubyにはSTDOUTというIOオブジェクトの定数があってputsやprintのデフォルトになってる」って思いつくんだ?
0632デフォルトの名無しさん
2008/02/06(水) 22:03:550633デフォルトの名無しさん
2008/02/06(水) 22:05:460634デフォルトの名無しさん
2008/02/06(水) 22:11:120635デフォルトの名無しさん
2008/02/06(水) 22:23:40もう何も言えることは無いものな・・・。
0636デフォルトの名無しさん
2008/02/06(水) 22:28:41とりあえず>>622には、俺も書籍の購入をすすめる
でもそれに加えて、リファレンスマニュアルの内容は一通り把握した方が良い
(どこに何が書いてあるか、が分かるぐらいには)
HTML Help版なら検索も楽だよ
0637デフォルトの名無しさん
2008/02/06(水) 23:00:28スクリプト言語Rubyの2分冊のやつ買ったけど、ほとんど見ないしWebの
リファレンスですませてる。
Webのリファレンスですまない内容って、結局本にものってなくて、
メーリングリスト検索か、ソース読むしかないし。
0638デフォルトの名無しさん
2008/02/06(水) 23:01:470639デフォルトの名無しさん
2008/02/07(木) 01:46:460640デフォルトの名無しさん
2008/02/07(木) 02:03:540641デフォルトの名無しさん
2008/02/07(木) 02:08:180642デフォルトの名無しさん
2008/02/07(木) 02:15:54(期待も込めて)ハゲドウ
0643デフォルトの名無しさん
2008/02/07(木) 02:27:37無理。
0644デフォルトの名無しさん
2008/02/07(木) 02:28:42お前何も分かってないんだな。
0645デフォルトの名無しさん
2008/02/07(木) 02:38:59ttp://www.ruby-lang.org/ja/man/html/debug.html
0646デフォルトの名無しさん
2008/02/07(木) 02:39:53それはまともじゃない
0647デフォルトの名無しさん
2008/02/07(木) 02:55:29引きずり込もう、なんとしても。
どうしたらいいか?
-なにはともあれラリーウォールと合意を採る
-Perlモード作って、Perl6完全互換Rubyを作る
-Perlコミュニティを取り込む
-。。。
こりゃ不可能だww
だがカリスマ性は重要。MatzはMatzだが、ラリーと
どうしても比較してしまう。
0648デフォルトの名無しさん
2008/02/07(木) 06:19:43Ruby and Ruby on Rails cheat sheets >> Scott Klarr
http://www.scottklarr.com/topic/104/ruby-and-ruby-on-rails-cheat-sheets/
0649デフォルトの名無しさん
2008/02/07(木) 07:00:19Ruby本スレ向きの話題だが・・・
ジョークで言っているのだろうが、現実的に考える
人というのは、振り向け振り向けと言っても、振り向いてくれないもの
向こうから来てくれる魅力のあるものを提供する必要がある
-Parrot上でRubyを実装
-RubyからもPerlの膨大なライブラリを使えるようにする
-ちょっと使ってみようと思わせる、移行しても不利益がないと感じさせる
-多くのPerlの人たちがRubyに興味を持つ
-そのうちラリーウォールが気に留める
だな
引きずり込もうと考えてはあかんと思う。得たいならまずは与えることだろう。
0650デフォルトの名無しさん
2008/02/07(木) 08:04:180651デフォルトの名無しさん
2008/02/07(木) 08:40:510652デフォルトの名無しさん
2008/02/07(木) 10:13:44これ確かあったんだけど、もうメンテされてないんだよな。
0653デフォルトの名無しさん
2008/02/07(木) 11:55:46kwsk
とりあえず、Acme::JapaneseAvActress が動けばいい
0654デフォルトの名無しさん
2008/02/07(木) 13:00:43ttp://www.yoshidam.net/Ruby_ja.html#perl
自分は試せる環境がないのでそのへんはよろしく。
「Ruby Susieプラグイン」でググると手繰って辿り着けたハズ。
0655デフォルトの名無しさん
2008/02/07(木) 17:04:38テンプレートにこう書いといて
<tr id="table1">
<td id="name"><td id="author">
</tr>
data = {
:table1=>[
{ :name=>"Ruby", :author=>"matz" },
{ :name=>"perl", :author=>"Larry Wall" }
]
}
こうすりゃサンプルにある通り
<tr>
<td>Ruby</td>
<td>matz</td>
</tr>
<tr>
<td>perl</td>
こうでますよね。 この時に tr の属性値を変えるのってどうすればできるんでしょうか?
:table1=>[ Amrita::a(:value => "test"){:name => "Ruby"} ]
だと文法エラーになっちゃうんですよね...
Amritaのバージョンは調べ方がわからなかったので
ファイルの作成日時だけ書かせて頂くと、2003/03/09になっています
0656デフォルトの名無しさん
2008/02/07(木) 23:04:16あるとしたら、その機能って必要?他の機能で代用可能?
0657デフォルトの名無しさん
2008/02/07(木) 23:07:02S式
0658デフォルトの名無しさん
2008/02/07(木) 23:08:32Lispにあるものをすべて備えているわけがない
すべて備えたらそれはただのLispだ
本スレで聞くといろいろ細かいこと教えてもらえるかもよ
0659デフォルトの名無しさん
2008/02/08(金) 01:31:39どうしてRubyにはインクリメントならびにデクリメント演算子がないのでしょうか?
実質 x += 1 で何も問題はないのですが、
この表記は個人的になんか気に入らないので、納得のいく理由が欲しいのです。
調べたりしてもなぜないのかまで踏み込んでいるところが見つからなくて……よろしくお願いします。
前置や後置でややこしいからかな……などと思いましたが、
それならば後置限定で採用するなりすればいいじゃないかと思うのは浅知恵でしょうか?
ならびに x.next x.succ で後置インクリメントじみた挙動が実現できるのは知っていますが、
インクリメントの意味合いでこのメソッドを使用するのは感心できる行為なんでしょうか?
またその場合、インクリメントはメソッド、デクリメントは演算子とアシンメトリになってしまうのですが、
なんかもう全部ひっくるめて、ここらへんはどう解釈すればいいんでしょうか?
0660デフォルトの名無しさん
2008/02/08(金) 01:41:44現行のRubyにインクリメント演算子が無いのは言語作成者のポリシー。
10年も前のMLでの発言だが、基本的には変わってないはずだ。
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/5323
> すんません.この件は以前から指摘されているのですが(演算子はC
> に似ているのに++と--は対応する演算子が無い),++の動作が本質
> 的に「変数を操作する」ものであるため,変数がオブジェクトでな
> いRubyでは導入できないでいます.++や--の「オブジェクト指向的
> 意味」がRubyの他の部分と整合性を保ったまま定義できれば採用し
> たいのですが….
うまい実装の仕方があれば要望として取り入れると思うぞ。
0661デフォルトの名無しさん
2008/02/08(金) 01:47:56> x.next x.succ で後置インクリメントじみた挙動が実現できる
できないと思うぞ
i = i.succ
と書くことは
i += 1
と書くのと見栄え的にも手間的にもたいして変わらないんじゃないかと
0662デフォルトの名無しさん
2008/02/08(金) 01:49:15例えばループ書くのに使うときとかは、ブロック使ってメソッドに抽象化して使う
ようにして、元が多少ダサくなるのは見逃してくれ。
0663デフォルトの名無しさん
2008/02/08(金) 01:57:55「整数オブジェクトを破壊的に変更できないから」というのもあると思う
0664デフォルトの名無しさん
2008/02/08(金) 02:11:45Matzらしくもない。こんなんとっとと取り込んじまえばイイヤン。
0665659
2008/02/08(金) 02:15:06まとめてですみません。素早いお返事ありがとうございます。
確かにそう考えると合点がつきますね。
自分で考えても全然納得できなかったのですが、ようやくすっきりしました。
ありがとうございます。
>>661
できませんね……
succをリファレンスで調べたときに「インクリメントの代替はあるじゃん!」と勘違いして、
そのままずっと勘違いし続けてたみたいです。重ね重ねありがとうございます。
0666デフォルトの名無しさん
2008/02/08(金) 02:18:500667デフォルトの名無しさん
2008/02/08(金) 02:20:24え〜納得しちゃうの?w
ごねようぜ・・・w
0668デフォルトの名無しさん
2008/02/08(金) 02:35:19「しんたっくすしゅがーとかでさいようしましょうよ〜」とかでいいですか?w
いや本当はちょっとごねたいんですけど、なにぶん『初心者スレッド』で質問している程度なんで
納得した先にできることがないっす。
+= とか本当は嫌いなんだけどなあ……みたいな感じで。
0669デフォルトの名無しさん
2008/02/08(金) 02:41:47かわいくゴネたら、俺がパッチ作って匿名でRubyメーリングリストに
なげるっていう条件でどう?w
かわいくなかったら、作らないw
0670デフォルトの名無しさん
2008/02/08(金) 03:40:39単なる名札。
0671デフォルトの名無しさん
2008/02/08(金) 03:59:32先日、io-languageスレで、++ を実装しようとしてこねくり回してたところだったんで、
タイムリーすぎて吹いた
なんでスマートにできないかというと、
メソッド内で、メソッドを呼んだオブジェクトを、格納した変数に代入できないから。
で、スマートな解決法はある。
Fixnum なら、Fixnum に 中身のデータを設定するメソッドを作ってやればいい。
例えば、Fixnum.set_value() みたいな。
ただし、Rubyのソースをいじるはめになるだろう
どーしても、Rubyのコードでやりたければ、Fixnumのメンバを持った、
Fixnumのラッパーを作るしかないだろうな。
そうすれば、簡単に実現できる。
結局、数字のリテラルを書くように使えず、そのクラスをいちいち new しないといけないのが面倒だが
0672デフォルトの名無しさん
2008/02/08(金) 04:00:27> メソッド内で、メソッドを呼んだオブジェクトを、格納した変数に代入できないから。
メソッド内で、メソッドを呼んだオブジェクトを格納した変数に、オブジェクトを代入できないから。
0673デフォルトの名無しさん
2008/02/08(金) 04:02:27ゲ、>>663 が簡潔にまとめてるじゃないか ・・・ orz
0674デフォルトの名無しさん
2008/02/08(金) 05:28:31残念ながら松本が++が嫌いだと言ってますので多分ないでしょう。
0675デフォルトの名無しさん
2008/02/08(金) 06:12:21で万事解決
0676デフォルトの名無しさん
2008/02/08(金) 07:59:16> a.++
> で万事解決
だーかーらー
Rubyの数関係のオブジェクトはイミュータブル、ってのがわかってないダロオマエ
0677デフォルトの名無しさん
2008/02/08(金) 08:24:510678デフォルトの名無しさん
2008/02/08(金) 08:48:360679デフォルトの名無しさん
2008/02/08(金) 09:05:54これじゃ、まともなリファクタリングブラウザも作れないだろう…と。
0680デフォルトの名無しさん
2008/02/08(金) 09:14:09でよくね
0681デフォルトの名無しさん
2008/02/08(金) 09:36:37b = a
a.++!
p b
0682デフォルトの名無しさん
2008/02/08(金) 10:24:560683デフォルトの名無しさん
2008/02/08(金) 10:39:02irb> p [n, 100, 99+1, 101-1, 99.succ, 'd'[0], '100'.to_i].map{|e| e.object_id}
[201, 201, 201, 201, 201, 201, 201]
Rubyでは、同じ整数値である限り、同じオブジェクト
0684デフォルトの名無しさん
2008/02/08(金) 11:33:22プリミティブ型があるJavaからも馬鹿にされたくはないな
0685デフォルトの名無しさん
2008/02/08(金) 11:53:57スゲー
0686デフォルトの名無しさん
2008/02/08(金) 12:53:58同じ整数値っていうかFixnumの場合だけじゃまいか
irb(main):002:0> [(2 ** 30).object_id, (2 ** 30).object_id]
=> [21803310, 21802580]
0687デフォルトの名無しさん
2008/02/08(金) 12:59:06>Smallalk 使いから見ると Ruby はリフレクションが貧弱だよね。
>これじゃ、まともなリファクタリングブラウザも作れないだろう…と。
SmallalkじゃなくてSmalltalkな。
それはいいとして、>>679にはぜひSmalltalkのよさを語ってほしいな。
Smalltalkの強力なリフレクション機能がどんなものか知りたい。
0688デフォルトの名無しさん
2008/02/08(金) 13:22:15たとえば(リファクタリングとは直接関係ないけど)、くだんの #++ とかの実装は、
Ruby の貧弱なイントロスペクションじゃ逆立ちしても無理…とかいう話?
0689デフォルトの名無しさん
2008/02/08(金) 14:20:18#++は>663,671,672,676,683。README.EXT(.ja)を参照。
誤解を恐れずに簡略すると実はFIXNUMだけオブジェクトじゃない。
オブジェクトじゃないから状態(値)を変更できない。
値の変更は変数に対する操作(代入)で代用。
0690デフォルトの名無しさん
2008/02/08(金) 14:25:58>>681 の p b で 2 が出力されておk、という人は多くないと
思うわけだが。
0691デフォルトの名無しさん
2008/02/08(金) 14:54:58これだからrails厨どもは
0692デフォルトの名無しさん
2008/02/08(金) 14:57:01Smalltalk も SmallInteger(Fuxnum 相当)は事情は同じだよ?
0693デフォルトの名無しさん
2008/02/08(金) 16:26:09SmallTalkスレで聞いてきたよ。
アラン・ケイも認めた!Ruby>>>>>Smalltalk
http://pc11.2ch.net/test/read.cgi/tech/1150106090/169-171
SmallTalkでも、破壊的に変更できない事情は同じで、
そこを強力なメッセージとリファクタリングの言語機能でカバー
力技だから、スマートでないと言われたらそうかもしれない。
Matzは嫌がりそうw
0694デフォルトの名無しさん
2008/02/08(金) 16:27:46o リフレクション
>>687-688にturareta
0695デフォルトの名無しさん
2008/02/08(金) 16:47:16だが Squeak Smalltalk を参考に作られた Rubinius ならきっとやってくれる!
0696デフォルトの名無しさん
2008/02/08(金) 16:49:360697デフォルトの名無しさん
2008/02/08(金) 20:39:22自作のモジュールに含まれるクラスから自由にぺとぺと触れる変数が欲しいんだけど…
0698デフォルトの名無しさん
2008/02/08(金) 20:42:400699デフォルトの名無しさん
2008/02/08(金) 20:54:51そうなのかーありがとー!
ちなみに↓のが「@@tempって初期化されてなくね?」って言われるのはなんでなん?
ttp://www.ruby-lang.org/ja/man/html/_CAD1BFF4A4C8C4EABFF4.html#a.a5.af.a5.e9.a5.b9.ca.d1.bf.f4
のいちばん最初の例とか見ると平気そうに思えるんだけど…
module Test
@@temp = "test"
class TestTest
# def initialize
# @@temp = "test2"
# end
def print
puts @@temp
end
end
end
Test::TestTest.new.print
0700デフォルトの名無しさん
2008/02/08(金) 21:04:400701デフォルトの名無しさん
2008/02/08(金) 21:09:55モジュールを継承することはできないからincludeする。…できないはず。まあいいや。
module Test
@@temp = "test"
class TestTest
include Test
# def initialize
# @@temp = "test2"
# end
def print
puts @@temp
end
end
end
Test::TestTest.new.print
個人的にはあまりきれいに思えない
0702デフォルトの名無しさん
2008/02/08(金) 21:18:33継承?わからんので教えてほしいかも
>>701
自分が所属してるモジュールもincludeできるのかー
でも、確かに美しくないね
質問を変えると、例えばDBの接続やらなんかのオブジェクトを
同じモジュールのクラス間で共有して使い回したいとすると、
なんかいい方法ってある?
0703デフォルトの名無しさん
2008/02/08(金) 21:23:190704デフォルトの名無しさん
2008/02/08(金) 21:23:30クラス内定数にハッシュ設定して読んだり書いたりしたほうがマシ
module Test
TEMP = {'str1'=>"test"}
class TestTest
def initialize
TEMP['str2']='test2'
end
def print
p TEMP
end
end
end
Test::TestTest.new.print
$ ruby test.rb
{"str1"=>"test", "str2"=>"test2"}
0705デフォルトの名無しさん
2008/02/08(金) 21:26:37そもそも、たいていの場合ならクラス間で共有して使いまわすよりも
initializeの引数として渡した方が(コンポジションにした方が)いいと思う
0706デフォルトの名無しさん
2008/02/08(金) 21:29:030707デフォルトの名無しさん
2008/02/08(金) 21:40:53そんなんできるのかー
でも定数に読み書きするのはなんかきもちわるい気もするなぁ…
>>705
いちいち渡すのがめんどくさい気がしたんだ
0708デフォルトの名無しさん
2008/02/08(金) 21:52:59定数ってのは、同じオブジェクトを指し続けているという意味であって
その中の状態は不問だからな。
オブジェクトのほうを不変にするには.freezeする。
0709デフォルトの名無しさん
2008/02/08(金) 21:56:53少数のオブジェクトにまとめろよw
それができないようなクラス構成なのかもしれないけど
>>707
渡すのが面倒なのは確か
でもテストのことを考えると、引数で明示的に「どの値を使うか」を指定できる方が便利だよ
0710デフォルトの名無しさん
2008/02/08(金) 21:58:21STR.replace('after')
puts STR
これはSTRが指すオブジェクトが変更されないから警告出ないよね
このへんまで説明してる初心者向け解説はあまり見ないけど
0711デフォルトの名無しさん
2008/02/08(金) 22:01:28そう書かれるとなんか自然に見えてきたぞ…
>>709
DBの接続とかMechanizeのオブジェクトとかを渡したいので「どの値」とかは特に関係ない件
むしろRuby慣れてないから引数でオブジェクト渡すと参照渡しになってるのかどうかさえ知らん
0712デフォルトの名無しさん
2008/02/08(金) 22:15:07自分で注意深くコードを書いて試すといい
ちなみにいわゆる参照渡しだ
class Test
def initialize(str,h)
@str = str; @h = h
end
def modify
@str.replace('MODIFIED')
@h['MODIFIED'] = 'MODIFIED'
end
end
str = 'default'
h = {'key'=>'value'}
Test.new(str,h).modify
p str
p h
# ================================
$ ruby ./test.rb
"MODIFIED"
{"MODIFIED"=>"MODIFIED", "key"=>"value"}
0713デフォルトの名無しさん
2008/02/08(金) 22:22:01昔はこれを意識したコードを書いてたんだけど
最近はもうこういうとこに気を遣って手品みたいなことするのめんどくさくなって
class Test
def initialize(str,h)
@str = str.dup; @h = h.dup
end
def modify
@str.replace('MODIFIED')
@h['MODIFIED']='MODIFIED'
end
def result
return @str,@h
end
end
str = 'default'
h = {'key'=>'value'}
test = Test.new(str,h)
test.modify
(str,h) = test.result
puts str
p h
こんなコード書いてる
たいていこれで済むし
0714デフォルトの名無しさん
2008/02/08(金) 22:25:420715デフォルトの名無しさん
2008/02/08(金) 22:37:350716デフォルトの名無しさん
2008/02/08(金) 22:39:50とりあえずRubyにCGIパラメータ渡したいんだけど。
ブラウザでちまちまやるの面倒くさくて。。。
0717デフォルトの名無しさん
2008/02/08(金) 22:49:23require 'cgi'
cgi = CGI.new
p cgi.params
~$ ruby cgi.rb 'title=ruby&creator=matz'
{"creator"=>["matz"], "title"=>["ruby"]}
0718655
2008/02/08(金) 22:51:13何か質問の仕方、もしくは場所がまずかったですか?
0719デフォルトの名無しさん
2008/02/08(金) 22:56:010720デフォルトの名無しさん
2008/02/08(金) 22:57:44それ言っちゃうと、Array#shiftとかも不統一だよね。
0721デフォルトの名無しさん
2008/02/08(金) 23:02:17!がついてないからといって破壊的じゃないとは限らない。
0722デフォルトの名無しさん
2008/02/08(金) 23:21:24ヒアドキュメントを記述して、頭の方でruby-indent-exp(再インデント)を実行しても、
終端行以降に記載した部分がインデントされません。
もし対処法ありましたら、教えて下さい。
(もしくはそういう書き方をしないのでしょうか)
--
def hoge()
print <<-EOT
こんばんは。
EOT # <= ここ以下インデントされない
end
def foo()
print <<-EOT
こんにちは。
EOT
end
--
emacs->22.1
ruby-mode-> r15297
0723デフォルトの名無しさん
2008/02/08(金) 23:34:26ごめん普通に見逃してた
Amrita.aを使うなら
:table1=> Amrita::a(:value => "test"){[:name => "Ruby"]}
でOK
今やるなら、それよりもamrita-alteredの属性値展開を使う方がいいと思う
0724デフォルトの名無しさん
2008/02/08(金) 23:42:35ふつうに
QUERY_STRING='a=1&b=2' ruby mycgi.rb
とすればよくね?
POSTなら
ruby mycgi.rb < request.txt
まあWindowsならどうやるのか知らないけど。
0725デフォルトの名無しさん
2008/02/08(金) 23:45:45def hoge
=begin
なんとか
=end
end
を
def hoge
=begin
なんとか
=end
end
にして潰してくれたときには参った
最新版では直ってるのかね
>>722
終端文字列の直後の行を正しいインデント量に手動で直してから再インデント
0726デフォルトの名無しさん
2008/02/09(土) 00:15:46ありがとうごぜえますだ。
0727722
2008/02/09(土) 00:53:14↓こんな感じでグダグダです
def hoge
=begin
なんとか
=end
end
>終端文字列の直後の行を正しいインデント量に手動で直してから再インデント
うまくいかないですorz
emacs 21.4でも同じ
0728デフォルトの名無しさん
2008/02/09(土) 03:25:48Susie::Plugin library for Rubyを使いたいのですが、ソースからコンパイルするしかないのでしょうか?
ttp://www.yoshidam.net/Ruby_ja.html#susie をDLし解凍したものを ruby\lib\ruby\1.8\susie 下に
置いてもrequire "susie"ができないので…
他にsusieを使う方法ってあるのでしょうか?(COM経由とかではなく)
0729デフォルトの名無しさん
2008/02/09(土) 10:08:510730デフォルトの名無しさん
2008/02/09(土) 10:10:360731デフォルトの名無しさん
2008/02/09(土) 10:21:37コマンド実行後に独自の入力プロンプト(入力待ち)状態になるコマンド(ftp, sqlplus 等)を実行したあとに、
さらに、そこへ入力を続けるようなことはどうすれば出来るでしょうか。
以前、どこかのサイトでその方法を見かけて、使ったことがあったのですが、
そのコードが手元に残っていなく、サイトを探してもみあたらなかったため、
質問させて頂きました。
よろしくお願いいたします。
0732デフォルトの名無しさん
2008/02/09(土) 11:00:53標準で付いてるexpect.rbが使えるケースかも?
0733デフォルトの名無しさん
2008/02/09(土) 18:16:41スパムを誤認したメールがたまりまくって手動では無理なため、一括で、教育しなおしたいのですが、
httpのPOSTを簡単に扱えるライブラリはないでしょうか?
hpricot的にお手軽にPOSTしたいのですが・・・
0734デフォルトの名無しさん
2008/02/09(土) 18:25:440735デフォルトの名無しさん
2008/02/09(土) 18:29:23WWW::Mechanize というのを発見しました。
お騒がせしました。ありがとうございました。
> net/http
んーなんていうか、httpを意識しないといけない、低レイヤーっぽい感じがします。
hpricot使ったら他に移れないくらい便利だったので、
似たような高レベルなラッパーがないかな、と。
0736デフォルトの名無しさん
2008/02/09(土) 18:32:55いや、贅沢なこと言ってる自覚はあるが
>>735
WWW::Mechanizeが利用できる環境なのならそれ使うといいぞ
0737735
2008/02/09(土) 19:00:000738デフォルトの名無しさん
2008/02/09(土) 19:50:450739735
2008/02/09(土) 21:18:13それなら失礼しますた
0740デフォルトの名無しさん
2008/02/09(土) 21:48:52コマンドラインのドキュメントヘルプを試したのですが、いまいちどれがどうなのかわかりません。
ri:標準。英語ドキュメント。サンプルソースなどもしっかり
refe:gem install refeで入る。日本語ドキュメント。全然少ない。メソッド名の部分一致検索ができる。
rdoc:標準。エラーでて動かず
riは、詳細が載っていてわかりやすいのですが、
検索しずらい・・・
refeみたいに、部分一致だったらいいのに
0741デフォルトの名無しさん
2008/02/09(土) 22:18:25$HOMEでもどこでもすきなようにインストールすればいいじゃん。
0742デフォルトの名無しさん
2008/02/09(土) 22:38:10> rdoc:標準。エラーでて動かず
rdocはriのデータを作るコマンド。
0743デフォルトの名無しさん
2008/02/09(土) 22:51:39なにそのめちゃくちゃ端折った説明
現状は「英語でいいならri、日本語がいいならReFe」という住み分けになっとる
ReFeの内容がヘナチョコなのは日本語マニュアルがヘナチョコだからだな
むしろ俺はRDocとかRDとかのマニュアル用書式がわからん
何のときに == で書くのかとかさっぱりだ
0744デフォルトの名無しさん
2008/02/09(土) 22:57:07傾ければ、Rubyはもっと愛されると思う。願望だけど。
「そんなの面白くない」とか「Matzは開発を優先すべきで、他の人が
やったほうがいい」という反論は重々承知だが。
0745デフォルトの名無しさん
2008/02/09(土) 23:00:05例の分厚くて黄色くて背が硬い本で痛いほどわかっただろうに
0746デフォルトの名無しさん
2008/02/09(土) 23:02:37いやでもな、とてつもなく優れたオープンソース開発者が、とてつもなく
優秀なドキュメントを提供する人間である例が目の前にあるとさ。
すごい!と思ってしまうのよね。Vimの開発者のことだけど。
0747デフォルトの名無しさん
2008/02/09(土) 23:03:35今のRubyユーザー数ならWikiシステムあたりを使って一斉に取り掛かれば
1年くらいで今の倍くらいのボリュームにならんかね
0748デフォルトの名無しさん
2008/02/09(土) 23:05:30RDだかRDocだかで記述しないと取り込めないからRDだかRDocだかで書いてね、というのがかなり壁
PukiWiki互換で書いていいよと言われたら一気に進みそうな気がする
0749デフォルトの名無しさん
2008/02/09(土) 23:09:040750デフォルトの名無しさん
2008/02/09(土) 23:24:35http://doc.loveruby.net/
0751デフォルトの名無しさん
2008/02/10(日) 02:39:040752デフォルトの名無しさん
2008/02/10(日) 02:57:580753デフォルトの名無しさん
2008/02/10(日) 04:51:26MLのやり取り見てると、正直もう1.8+αで良いと思うし。
0754デフォルトの名無しさん
2008/02/10(日) 05:15:38ありがとう
マニュアル用のコマンドとして使えるのは ri と refe なのね。
gemsに fxri っつーri GUIフロントエンドがあったから入れたら、まだ使いものにならなかった orz
・起動が遅い
・riのエントリーの読み込みに20分近くかかる(全部よんでると20000エントリくらいになる)
・全部読みこまないと、検索できないw
・検索中に、カラムをクリックすると落ちたwwww
・読み込んだ データ をキャッシュしないので、次回起動時もまた20分かか(ry
読み込んだ後は、リアルタイムに部分一致検索できるし、
irbが立ち上がっててすぐ試せるので、すごく理想的!
いいのにもったいない!!
そして今気づいたのですが、rubyのdocディレクトリに Programming Ruby のHTMLヘルプがついているんですね。
英語だけど、サンプルコードはあるし、入門にはよいですね。
0755デフォルトの名無しさん
2008/02/10(日) 11:15:300756デフォルトの名無しさん
2008/02/10(日) 11:33:43>>750読め
0757デフォルトの名無しさん
2008/02/10(日) 11:40:12変なのが混じりにくいわけでむしろそれ自体は頼もしいとも思うぞ
この調子だといつ完成するのかわからんのが難だが
0758デフォルトの名無しさん
2008/02/10(日) 11:53:100759デフォルトの名無しさん
2008/02/10(日) 19:08:04自作のクラスのマニュアルとか作れたらRRSEで楽だろうなと思うんだけどね
メソッドにカーソルが当たったらEmacs下部のミニバッファに1行マニュアル表示
0760デフォルトの名無しさん
2008/02/10(日) 19:36:18require "Kconv"
puts "隕".toutf8.tosjis
とかするとなんも表示されなかったりするんだけどなんでだ?
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]に標準添付のヤツ
0761デフォルトの名無しさん
2008/02/10(日) 20:23:41puts "隕".toutf8
の時点で空文字列が返っているのなら
kconv が文字コードの判定に失敗してる。
0762デフォルトの名無しさん
2008/02/10(日) 20:32:17require 'nkf'
p "隕".toutf8
p "隕".kconv(Kconv::UTF8,Kconv::SJIS)
p NKF.nkf('-Sw',"隕")
# 結果
"\356\242\246" # 誤り
"\351\232\225" # 正しい
"\351\232\225" # 正しい
0763デフォルトの名無しさん
2008/02/10(日) 22:44:270764デフォルトの名無しさん
2008/02/10(日) 23:40:14秀丸やEmEditorにおける(?<!pattern)です。
具体的にしたいことは、"B"の前に"A"が来ないときだけ
"A"の前に"_"を加えるという処理を行いたいのです。
CB #=> C_B
AB #=> AB
0765デフォルトの名無しさん
2008/02/10(日) 23:54:13string.gsub(/(\A|[^A])B/, '\1_B')
1.9:
string.gsub(/(?<!A)B/, '_B')
0766764
2008/02/10(日) 23:54:36× "A"の前に"_"を
○ "B"の前に"_"を
0767デフォルトの名無しさん
2008/02/11(月) 00:03:08勘
あるいは
運
0768764
2008/02/11(月) 00:03:10すみません。間違いに気づいて訂正を書いている間にレスをいただいたようです。
ありがとうございました。
1.9では実装されているのですね。
0769デフォルトの名無しさん
2008/02/11(月) 05:02:35把握した
>>763
いや、"隕"が入ってるときにおかしくなるなぁつー話だったさサンプル悪かったごめん
0770デフォルトの名無しさん
2008/02/11(月) 07:15:07エンコーディングは可能な限り明示的にすべきと思うけどね。
0771デフォルトの名無しさん
2008/02/11(月) 09:27:46「selfのエンコーディングが△△だと推測した上で○○に変換する」という動作をしてる
だから、△△であろうという部分の推測がコケると変な文字列になる
元の文字列のエンコーディングは指定しておくべき
10文字くらい余分に書かないといけないが、そのほうが動作も確実に速い
0772デフォルトの名無しさん
2008/02/11(月) 11:54:23検索できるマニュアルって自分で追加して作れるの?
0773デフォルトの名無しさん
2008/02/11(月) 12:12:22いや、やってやれなくはなさそうだけど
0774デフォルトの名無しさん
2008/02/11(月) 21:27:24テキストエディタでも、全角文字少ないと誤認するのと一緒だよなあ
0775655
2008/02/11(月) 22:46:06Amrita使ってる人って少ないのかな(´・ω・`)
>>723
なるほど、そう書くんですね!
…ということは tr の属性値を項目ごとに変えるのはできないわけですよね、、
amrita-altered を試してみることにします
0776デフォルトの名無しさん
2008/02/12(火) 00:47:19うまい方法はないでしょうか?
下のコードで大体はうまくいくのですが
例にあげてるように短めのカタカナは判別、変換に失敗してしまいます
$KCODE="UTF8"
require "cgi"
require 'nkf'
class String
def to_utf8
NKF::UTF8 != NKF::guess(self) ? NKF::nkf("-w", self) : self
end
end
print "Content-type:text/html;charset=utf-8\n\n"
print ENV['PATH_INFO'].to_utf8
#アテレコ NG
#アテレコテ OK
#アテレコア NG
#アレコテ OK
#テレアコ NG
0777デフォルトの名無しさん
2008/02/12(火) 00:52:230.769u 1.022s 0:01.79 99.4% 0+0k 0+0io 0pf+0w
% time ruby -e '(0...10000000).sort'
3.170u 0.259s 0:03.42 100.0% 0+0k 0+0io 0pf+0w
0778デフォルトの名無しさん
2008/02/12(火) 01:13:47「UTF8以外で送ってきたら頃す」とCGIを使うページのトップに朱書きする
0779デフォルトの名無しさん
2008/02/12(火) 01:31:27そのコード違うぞ
ボトルネックはこれだ
$ time ruby -e '(0...1000000).to_a'
real 0m2.535s
user 0m2.040s
sys 0m0.490s
Range#to_aは内部的には以下と似たようなことをしてて、
数値が大きくなるとこれが非常に遅い
arr = Array.new
range.each do |i|
arr.push(i)
end
return arr
0780デフォルトの名無しさん
2008/02/12(火) 01:44:25「9 27 45 81」は3の倍数でしょうか9の倍数でしょうか? という問いに近い
これは「6」や「3」や「321」が含まれない限り同定できない
0781776
2008/02/12(火) 02:01:17無理なもんなんですか…。
wikiとかで似たような処理をしてるかと思ってたんですが
基本的に違う処理なんですね。
>>778の方法だと法律上ややこちらが不利な気がするので
guessで判断できないときは別の処理にまわすことにします
0782デフォルトの名無しさん
2008/02/12(火) 02:08:50Webブラウザ経由の場合はUserAgentを見るという手も…
UTF-8なページからPOSTさせるとか
0783デフォルトの名無しさん
2008/02/12(火) 02:16:44Windows標準フォントを引っ張るのってどうやればいいでしょう?
例えばTTFフォント指定で"MS ゴシック"と指定すると、
どのコンピュータでも一意にMSゴシックを引っ張るという事です
0784デフォルトの名無しさん
2008/02/12(火) 02:27:26そいつがどういうバイナリになってるかを調べる手があったはず。
0785デフォルトの名無しさん
2008/02/12(火) 02:37:26おーちょっと感動した
覚えとこ
>>783
全く使ったこともなければ実行環境もないが
> font = SDL::TTF.open('sample.tff', 24)
という表記方法から考えて、どうしかして%WINDIR%\Fonts\msgothic.ttcにアクセスすればいいんじゃね
とここまで書いてTTCじゃダメだろと思った
TTCはTTFのカタマリだけど、TTFしか読めませんというやつはTTCは普通読めない
Ruby/SDLには「いくつか埋め込み用フォントがあるようだけど、それでは用足りない?
0786デフォルトの名無しさん
2008/02/12(火) 04:26:23Miyakoのソースでも見たらどうかな?
0787デフォルトの名無しさん
2008/02/12(火) 08:37:53ttp://www.kmc.gr.jp/~ohai/fontlist_rb.html
ちなみにTTCは、Ruby/SDLのリファレンスでは読めることになっているが
俺の手元で試した限りでは成功しなかった
Miyakoではどうやってるんだろう……
0788デフォルトの名無しさん
2008/02/12(火) 16:28:420789デフォルトの名無しさん
2008/02/12(火) 17:51:40ダウンロード状況を「30%」など表示するにはどうしたらいいですか?
TCPSocket#readで数バイトずつチマチマ取得するしかないでしょうか?
0790デフォルトの名無しさん
2008/02/12(火) 18:00:130791デフォルトの名無しさん
2008/02/12(火) 18:04:000792デフォルトの名無しさん
2008/02/12(火) 18:05:13ttp://0xcc.net/ruby-progressbar/
あとはopen-uriでopenするときに
:content_length_proc で 最初のサイズ設定
:progress_proc で進捗伝達
をさせるようにすればいい
0793デフォルトの名無しさん
2008/02/12(火) 18:17:14uri = URI.parse('http://gems.rubyforge.org/yaml')
total = 0
count = (0..100).to_a
open(uri,
:content_length_proc => lambda {|n| total = n; puts "#{n}バイトいきます"},
:progress_proc => lambda {|n|
pc = (n.to_f/total*100).to_i
if pc == count.first then
puts "#{pc}%終了"
count.shift
end
}).read
# =====================================
$ ruby ./progress.rb
16047764バイトいきます
0%終了
1%終了
2%終了
3%終了
0794デフォルトの名無しさん
2008/02/12(火) 18:48:25とり得るキーが多めにあった場合とか、うまく処理する方法ってありますか?
キーは1個の場合も4個の場合もあり、複数のキーが互いに必須なこともあります。
0795デフォルトの名無しさん
2008/02/12(火) 18:53:08なるほどこりゃ便利ですね
open-uriのライブラリを掘り下げてみましたら
なるほどキモになってる部分は Net::HTTPResponse#read_body {|str| .... } ですね
ありがとうございました
0796デフォルトの名無しさん
2008/02/12(火) 18:55:43まず、まずい処理がどんなものか説明してもらおうか。
0797デフォルトの名無しさん
2008/02/12(火) 19:00:04素直にやるとこうだと思うぞ
def hoge(h)
case h
when h.has_key?(:param1) ...
when h.has_key?(:param2) && h.has_key?(:param3) ...
else raise "引数が不正です"
end
end
:param1と:param2は背反でないと処理上困るのになぜか同時に指定されてる、
とかいうエラーへの対処は無視しろめんどくさくなるから
「同時に指定したら死刑」とかいう立て札でも立てとけ
0798デフォルトの名無しさん
2008/02/12(火) 19:01:42質問の意味が良く分からないが・・・
>キーは1個の場合も4個の場合もあり、
case hash.size
when 0
when 1
・・・
>複数のキーが互いに必須なこともあります。
if hash.key?(foo) && hash.key?(bar)
こんな感じじゃないか?
0799デフォルトの名無しさん
2008/02/12(火) 21:35:04open-uriってお手軽なだけかと思ったら、意外に融通利いてびっくりだ
0800デフォルトの名無しさん
2008/02/12(火) 22:13:34>>310>>316
今北なので、亀レスで申し訳ない
nowrite(true)、verbose(true) メソッドを使えばそれ以降
:noop=>true、:verbose=>true がデフォルトで設定される…はずなのだが
Rakeのバグでshとruby以外のメソッドに適用されない
つづく
0801800
2008/02/12(火) 22:15:10Index: rake.rb
===================================================================
--- rake.rb (revision 639)
+++ rake.rb (working copy)
@@ -871,8 +871,8 @@
module FileUtils
RUBY = File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name'])
- OPT_TABLE['sh'] = %w(noop verbose)
- OPT_TABLE['ruby'] = %w(noop verbose)
+ OPT_TABLE['sh'] = [:noop, :verbose]
+ OPT_TABLE['ruby'] = [:noop, :verbose]
# Run the system command +cmd+. If multiple arguments are given the command
# is not run with the shell (same semantics as Kernel::exec and
@@ -970,10 +970,10 @@
FileUtils::OPT_TABLE.each do |name, opts|
default_options = []
- if opts.include?('verbose')
+ if opts.include?(:verbose)
default_options << ':verbose => RakeFileUtils.verbose_flag'
end
- if opts.include?('noop')
+ if opts.include?(:noop)
default_options << ':noop => RakeFileUtils.nowrite_flag'
end
0802デフォルトの名無しさん
2008/02/12(火) 22:28:06問です。
クラス・モジュール定義内ではインスタンスメソッドの外に定義したインスタ
ンス変数はクラスオブジェクト(Klass)のインスタンス変数になり、インスタン
スメソッドとはselfが異なるのでアクセスできません。
class Klass
@a = 1 <--
def foo \
@a <-----+-- 別物(selfが異なる)
end
end
Klass.new.foo => nil
しかし、トップレベルで定義したインスタンス変数はトップレベルで定義した
メソッドからselfが同一なのでアクセスすることができます。
@a = 1 <--
def foo \
@a <-----+-- 同一(selfが一緒)
end
foo => 1
なぜトップレベルではメソッド定義内のselfとメソッド定義の外のselfが同一
になるのでしょうか。
rubyインタプリタが起動時に
Object.new.instance_eval { *ここがトップレベル* }
のようにしてトップレベルを作っていると解釈すればよいのでしょうか。
0803デフォルトの名無しさん
2008/02/12(火) 22:39:00p self
def hoge
p self
end
hoge
p self.class
$ ruby top.rb
main
main
Object
0804デフォルトの名無しさん
2008/02/12(火) 23:07:32トップレベルのselfはObjectのインスタンスで評価するとmainというものが返っ
てくるというのは理解できるのですが、トップレベルがどのようにして作られ
てselfが設定されているのかがわかりません。
あと、なぜトップレベルのselfはmainという表記で#<Object:0x294dc>みたいな
表記にならないのでしょうか。
そういう言語仕様なのでしょうか...
0805デフォルトの名無しさん
2008/02/12(火) 23:24:52トップレベルをオブジェクト指向として悩むのはあまりよくないぞ
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/8965
まあ、Module#privateされたでっかいObjectクラスの中身だと考えられなくもないけど
0806デフォルトの名無しさん
2008/02/12(火) 23:39:52RubyのCソースは一部の例外を別にすれば見やすいから追いかけてみるとよい。
0807804
2008/02/12(火) 23:58:30>>805さん
bladeのスレッド読んでみました。確かにEiffelやJavaよりもいきなり制御を書
けてしまうrubyのほうがありがたい気がします。
そういえば質問する前にbladeでnamazu検索してみたのですが、結果のリストが
表示されませんでした。壊れているんでしょうか?
>>806さん
そうですね。rb_internあたりで萎えてしまうのですが。頑張って読んでみます。
0808デフォルトの名無しさん
2008/02/13(水) 00:01:03今じゃgoogle site:使ってるなあ
0809804
2008/02/13(水) 00:24:48>>806さん、ソース読んでみました。
main_to_s
rb_define_singleton_method(ruby_top_self, "to_s", main_to_s, 0);
拍子抜けしました。Init_Objectあたりをもっと深く読んでみようと思います。
ありがとうございました。
0810783
2008/02/13(水) 02:49:21確かにttcは読み込めなかったので
Miyako入れる方向で探っていく事にします
それにしてもruby/SDLの文字表示がこんなに弱いとは…
0811デフォルトの名無しさん
2008/02/13(水) 04:33:24釣られてるよ。
>>777のpythonのコードは、sortに()が付いてないから実際にはソートしてない。
0812デフォルトの名無しさん
2008/02/13(水) 07:53:37irb(main):001:0> l=[100,101,102,103,104,105,106,107,108,109]
=> [100, 101, 102, 103, 104, 105, 106, 107, 108, 109]
irb(main):002:0> l.each_with_index do |item,idx|
irb(main):003:1* puts "hit #{item}"
irb(main):004:1> l.delete_at idx if 0==item%2
irb(main):005:1> end
hit 100
hit 102
hit 104
hit 106
hit 108
=> [101, 103, 105, 107, 109]
irb(main):006:0>
意図したとおり奇数だけ残せたのですがhitの表示がなぜ偶数だけになっているか分かりません
delete_atするより前でputs "hit #{item}"してるので全要素がputsされると思ったのですが。。。
0813デフォルトの名無しさん
2008/02/13(水) 08:07:34p l
とか
puts "hit #{item} at #{idx}"
にして見れば分かる
delete_ifを使えばいいよ
0814812
2008/02/13(水) 08:28:52delete_if使ってみます
0815デフォルトの名無しさん
2008/02/13(水) 09:05:53python -c 'range(0,10000000).sort'
real 0.0859320 user 0.0468750 sys 0.0312500
python -c 'range(0,10000000).sort()'
real 0.0771435 user 0.0312500 sys 0.0468750
>>779
ruby -e '(0...10000000).sort'
real 2.1707595 user 1.6875000 sys 0.1406250
ruby -e '(0...1000000).to_a
real 0.3525165 user 0.2500000 sys0.0937500
0816デフォルトの名無しさん
2008/02/13(水) 09:10:38ruby -e '(0...10000000).to_a
real 1.6034130 user 1.4531250 sys 0.1406250
0817デフォルトの名無しさん
2008/02/13(水) 10:14:36irb> p 10_000_000
10000000
0818デフォルトの名無しさん
2008/02/13(水) 10:41:43でもMiyakoでは特に変なことしてないみたいだぞ?
api/font.rb を「TTF」で検索してみ
0819デフォルトの名無しさん
2008/02/13(水) 14:09:52range(0,10000000).sort() のソートにほとんど時間がかからないはず。
(参考:http://svn.python.org/view/*checkout*/python/trunk/Objects/listsort.txt)
Rubyはどうなのよ
0820デフォルトの名無しさん
2008/02/13(水) 15:29:39rubyはクイックソートだから、整列済みのものには不利だな。
0821デフォルトの名無しさん
2008/02/13(水) 15:34:42それもあるけど、1.9だとシステム提供のqsortでなく割と高速なqsort実装を使っているので、その例だとPythonとほぼ互角の速度になる。
0822デフォルトの名無しさん
2008/02/13(水) 18:19:53本文だけを文節単位でわかち書き(半角スペースを挿入する)して
返すスクリプトを書きたいと思っています。
そのため、RubyからCaboChaにテキストを渡して処理しようと
CaboCha0.53をインストールしたのですが、
肝心のCaboChaの呼び出し方がさっぱりわかりません。
CaboCha公式サイト(http://chasen.org/~taku/software/cabocha/libcabocha.html)
には「詳しくは, ruby/README…をご覧ください.」と書いてあるのですが
そのruby/READMEがCaboChaインストールフォルダ内に見つからず…
どなたか、インストール方法とRubyからの呼び出し方を
教えていただけますでしょうか。
●実行環境
WindowsXP SP2
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]
※One-Click Installer - Windows 1.8.6-26 Final Release 使用
CaboCha 0.53(Binary package for MS-Windows)
0823デフォルトの名無しさん
2008/02/13(水) 19:18:25CaboCha というのは全く使ったことがないけど、
そのページから落せるソース cabocha-0.53.tar.gz には
ruby/README は入ってたよ。
中を読むとさらに test.rb を読めとあって、test.rb 内には
コメントとかまったく書いてないんだけど、まあその辺は C ライブラリの
方を見て予想しろってことなんじゃないかと。
あ、Windows での tar.gz の伸長には適当になんかフリーソフトを探してくれ。
0824デフォルトの名無しさん
2008/02/13(水) 20:44:51ip = ENV['REMOTE_ADDR']
host = ''
begin
host = Socket.gethostbyname(ip)[0]
rescue
host = ip
end
Cgi.out{host}
これでちゃんとリモホ名に変換出来る鯖と
出来ない鯖があるんですが、鯖の問題なんですよね?
0825デフォルトの名無しさん
2008/02/13(水) 20:52:30SocketError: host not found
が出るという話ならRubyのバージョンが悪いとかなんとかいうことになってた気がする
エラー時にコマンドラインから外部コマンド使うとなんとかなるかも
0826デフォルトの名無しさん
2008/02/13(水) 21:08:44すみません…
助言ありがとうございました!
0827デフォルトの名無しさん
2008/02/13(水) 21:31:37require 'socket'
cgi = CGI.new
begin
cgi.out{Socket.gethostbyname(ENV['REMOTE_ADDR'])[0]}
rescue
cgi.out{CGI.escapeHTML($!.inspect)}
end
う〜ん、こうやっても特に例外は出てない様です…
変換出来ない鯖のRubyのversionは1.8.5でした…
0828783
2008/02/14(木) 02:31:38IPAフォントというフリーのttfを見付けたので
Miyakoを入れずとも日本語表示は出来ました
ただ、新たな問題としてボールドとイタリックの書体設定が出てきました
見る限りSDLやMiyakoにそういう機能は無いようですし…
そもそもこういう書体設定はどういう理屈でやってるんでしょうか
0829デフォルトの名無しさん
2008/02/14(木) 02:35:27とりあえず何かのファイルにENV全体を書き出してみたら?
CLIENT_IPとかX_FORWARDED_FORとかVIAとかなら取れるかもしれない。
0831デフォルトの名無しさん
2008/02/14(木) 07:29:33正規表現でこういうのは無理?
p "X(1)((2)Y)Z".gsub(/\([0-90-9]+\)/g, '')
やりたいこと
・(1)(2)を両方取り除く
わからんこと
・gオプションって無い?
・全角0-9の指定は無理?
※cygwin版ruby
0832デフォルトの名無しさん
2008/02/14(木) 07:30:270833デフォルトの名無しさん
2008/02/14(木) 07:36:47gオプションってマッチを1回で止めない、ってperlのおぷそんだったけ?
それならデフォルトでそうなんじゃなかったっけか。
0834デフォルトの名無しさん
2008/02/14(木) 07:37:15gsub
0835デフォルトの名無しさん
2008/02/14(木) 07:47:34>>833
jcodeじゃgsubないっぽい
[0123456789]て書かないと駄目くさい
>>834
そうだった、gは必要ないな
0836デフォルトの名無しさん
2008/02/14(木) 10:51:43jcodeをrequireして、
str.tr("0-9", "0-9").gsub(...)
ただ他の関係ない全角数字も巻き込まれる :-)
0837デフォルトの名無しさん
2008/02/14(木) 11:00:58ありがとう。
結局、rubyバインディングをインストールするには
Win用のCaboChaバイナリのほかに
UNIX用のCaboChaとSWIGを落としてきて自分でmakefileしないと
いけないようですね。
0838デフォルトの名無しさん
2008/02/14(木) 11:20:26ズイキはないのっ!?
0839デフォルトの名無しさん
2008/02/14(木) 11:40:53半角開きカッコ・半角または全角数字・半角閉じカッコ
の並びを消去したいなら、正規表現はそれで問題ないぞ
(たしかにgオプションは存在しないのでつけたら駄目だが)
もし動作しないというなら、それは単に文字コード指定の問題だろう
対象文字列がShift_JISやらCP932やらならsを、日本語EUCならeつけろ
irb> p "X(1)((2)Y)Z(3)45".gsub(/\([0-90-9]+\)/e, '')
"X(Y)Z45"
0840デフォルトの名無しさん
2008/02/14(木) 14:16:13確認してみたら通ったよ。
何が悪かったかといえば、コマンドラインで-Kオプションつけずに
ネイティブでないエンコード使ってたからぽい
だからコンパイル時にエラーになってた。
0841デフォルトの名無しさん
2008/02/14(木) 15:26:24ttp://d.hatena.ne.jp/sumim/20080214/p1
…バイトコードを探して加算するという力技
0842デフォルトの名無しさん
2008/02/14(木) 16:26:06Rubyはなぜかそれをやらなかったんだよね、
フレームのオブジェクト化。
0843デフォルトの名無しさん
2008/02/14(木) 16:26:390844デフォルトの名無しさん
2008/02/14(木) 16:54:11matzは、か?
0845デフォルトの名無しさん
2008/02/14(木) 16:59:21しないほうがいいんじゃね?>>841なんてどうかんがえても力業だし
0846デフォルトの名無しさん
2008/02/14(木) 17:07:430847デフォルトの名無しさん
2008/02/14(木) 17:15:38特に悪影響がないのなら導入すればいいわけで
0848デフォルトの名無しさん
2008/02/14(木) 18:33:31何度も何度も済みません…
ttfのフォントで半角英数文字列を出力すると
全角幅で出てしまうんですが、何か調整する機能は無いのでしょうか?
一応ゴリ押しすれば、
文字列を各文字に分割して文字幅取りつつ各個表示
という風に行けそうではありますが…
0849デフォルトの名無しさん
2008/02/14(木) 19:45:01何を言ってるのかよく分からないのですが、とりあえず
http://mono.kmc.gr.jp/proj/rubysdl/?Works
にある作品で、該当しそうなことをやってるものの
ソースを読んでみたらどうでしょうか。
高橋メソッドとか文字表示に特化してそうだし、
ソースをちょっと見てみた限りTTF使ってるみたいだし、
実行してみてないので想像ですが、半角/全角が
区別されずに表示されるという事もないんじゃないかなあと思います。
0850デフォルトの名無しさん
2008/02/14(木) 20:27:32俺の環境ではそういった現象は起こっていない(半角は半角幅で出力される)
もう少しkwsk
0851デフォルトの名無しさん
2008/02/14(木) 20:35:06ruby/sdlではなくfreetypeの仕様っぽい
プロポーショナルなフォント使えば大丈夫だったと思う
0852848
2008/02/14(木) 20:49:34フォントはIPAゴシックです
SDL.init(SDL::INIT_EVERYTHING)
screen = SDL.set_video_mode(SCREEN_W, SCREEN_H, 16, SDL::SWSURFACE)
SDL::TTF.init
font = SDL::TTF.open("IPAFont/ipag.ttf", 24)
font.style = SDL::TTF::STYLE_ITALIC
font.draw_blended_utf8(screen, "abc", 0, 32, 255, 255, 255)
これで全角幅で出ます(Pゴシックも同じ)
「abc」でなく「a b c」という感じ
0853848
2008/02/15(金) 03:47:05色々試しましたがどうもフォント依存の問題みたいですね
Arialだと普通に間合いが詰まってましたし
…しかし日本語フォントで
サイズ一定以下にすると表示がバグるとか不具合もあるようで
これ本当にゲーム作れるのか…?
0854デフォルトの名無しさん
2008/02/15(金) 04:07:32ここで愚痴るより作者にメールを送れYO!
反応のある確率はここより低いかもしれんが、
もしあった場合より的確な答が返ってくるだろうし
パッチも当たるかもしれないじゃん。
0855デフォルトの名無しさん
2008/02/15(金) 04:33:18なにがわるいんだろ?
0856デフォルトの名無しさん
2008/02/15(金) 15:31:04>>797
case h
when h.has_key?(:param1) ...
これって期待通りの動作しなくね?
0857デフォルトの名無しさん
2008/02/15(金) 16:07:580858デフォルトの名無しさん
2008/02/15(金) 16:10:42h.has_key?(:param1) === h って何が起こるの?
0859デフォルトの名無しさん
2008/02/15(金) 16:43:47h が === 的に true と同一なら true、同一でないなら false が返る
Hash は TrueClass に属してないから常に false だね
0860デフォルトの名無しさん
2008/02/15(金) 16:46:09Hash は TrueClass にも FalseClass にも属してないから結果は常に false だね
に変更
0861デフォルトの名無しさん
2008/02/15(金) 19:22:31Matz御大による、初等Ruby講座(と探訪Ruby)の
存在を知り拝読(中)
しっかし、なんつーわかりやすさなんでしょう
なんでもないと思ってたとこでも
目からうろこが、ぽろぽろぽろぽろ…
開発者自身の手でここまでやさしく書かれた
ドキュメントがあったなんて!と
ちょっと感動しました
過ぎるほど今更ですみません
0862デフォルトの名無しさん
2008/02/15(金) 20:21:59逆じゃないよ。(when式)===(case結果)で合ってる。
0863デフォルトの名無しさん
2008/02/15(金) 21:33:48だから>>858はそう書いてるんじゃないか?
0864デフォルトの名無しさん
2008/02/15(金) 21:49:36じゃなくて
case
なんだろうね。
0865デフォルトの名無しさん
2008/02/15(金) 22:13:01$ gem install --no-ri --no-rdoc hpricot
make
cc -I. -I. -I/usr/local/lib/ruby/1.8/i386-freebsd6 -I. -fPIC -O2 -fno-strict-aliasing -pipe -fPIC -c hpricot_scan.c
cc -shared -Wl,-soname,hpricot_scan.so -L'/usr/local/lib' -Wl,-R'/usr/local/lib' -o hpricot_scan.so hpricot_scan.o \
-Wl,-R -Wl,/usr/local/lib -L/usr/local/lib -L. -lruby18 -lc -lcrypt -lm -pthread -lc
make install
/usr/bin/install -c -o root -g wheel -m 0755 hpricot_scan.so /home/俺/rubygems/gems/hpricot-0.6/lib/i686-linux
install: /home/俺/rubygems/gems/hpricot-0.6/lib/i686-linux/hpricot_scan.so: chown/chgrp: Operation not permitted
*** Error code 71
0866デフォルトの名無しさん
2008/02/16(土) 00:35:29Ruby1.8.5にて、ユーザー権限でgem install hpricotしようと思いました。
しかし、root権限でインストールしようとしてしまってうまくいきません。
/usr/bin/install -c -o root -g wheel -m 0755 hpricot_scan.so
レンタルサーバ(さくら)なので rbconfig の CONFIG の INSTALLキーに
/usr/bin/install -c -o root -g wheel という文字列が入ってしまってるからのようです。
これを変更した上でgem install を実行させることはできますか?
0867866
2008/02/16(土) 01:25:16さくらインターネットでrubygemsのインストールでコケる場合の対処
/usr/local/lib/ruby/1.8/i386-freebsd6/rbconfig.rb を見ると
> CONFIG["INSTALL"] = ENV['RB_USER_INSTALL'] ? '/usr/bin/install -c' : '/usr/bin/install -c -o root -g wheel'
とかいう記述がある
よって
setenv RB_USER_INSTALL true
とかコマンドラインで入力してから rubugemsをインストールすればいい
(試してないけどたぶんrubygemsのインストール時1回のみでおk)
あーもう寝る
0868デフォルトの名無しさん
2008/02/16(土) 02:52:50宗教じみてるので釣りかと思った
0869デフォルトの名無しさん
2008/02/16(土) 02:58:43そんなに分かりやすいのか・・・買う価値ありかね?
0870デフォルトの名無しさん
2008/02/16(土) 03:48:49>>866-867
さくらの共有?Railsまともにうごきます?
0871デフォルトの名無しさん
2008/02/16(土) 04:21:29まだVineが人気の時代じゃね?
0872デフォルトの名無しさん
2008/02/16(土) 10:07:47FastCGI入ってないけどそれでもよければ
0873デフォルトの名無しさん
2008/02/16(土) 10:16:34自分用かバックグラウンド動作用か
0874デフォルトの名無しさん
2008/02/16(土) 11:15:370.769u 1.022s 0:01.79 99.4% 0+0k 0+0io 0pf+0w
% time ruby -e '(0...10000000).sort'
3.170u 0.259s 0:03.42 100.0% 0+0k 0+0io 0pf+0w
0875デフォルトの名無しさん
2008/02/16(土) 11:58:20まともに使えない上に、同じ鯖の人に迷惑になりそうな(´・ω・`)
0876デフォルトの名無しさん
2008/02/16(土) 12:02:23結局、プロセスをしばらく立ちあげといてって方法なので、レンサバだと無理そうだった・・・
CGIでRailsをまともに動かす - 古橋貞之の日記
http://d.hatena.ne.jp/viver/20080209/p1
0877デフォルトの名無しさん
2008/02/16(土) 13:00:28file = open('test.txt','r').read
とか
file = File.open('test.txt','r').read
ってしたときって、test.txtを開いたときに使ったIOオブジェクトってcloseされてる?
readの中で実はブロックとか使っててcloseしてるとか
0878デフォルトの名無しさん
2008/02/16(土) 13:06:30close はしてないので File.read("test.txt") を使ったほうがいい。
バイナリモードの指定ができないくそインターフェイスだけど。
0879デフォルトの名無しさん
2008/02/16(土) 13:18:180880デフォルトの名無しさん
2008/02/16(土) 13:26:210881デフォルトの名無しさん
2008/02/16(土) 13:47:030882デフォルトの名無しさん
2008/02/16(土) 13:52:34私も知らずに手に入れたんですけど
初等講座が190ページ、探訪が96ページ
雑誌連載ならではの密度(基本2段組でビッシリ)ですので
これ目当てで買っても損はないかと思います。
ただ、PDFの2段組は読みづらいです。
私はスレタイどおりの初心者なので
正直、中盤以降はナナメ読みになりましたが
ハッシュと正規表現の置換のところで
そう書いてくれればわかる!という開発者ならではの
曇りのない記述に出会えたので
これだけで個人的には得した気分です。
0883デフォルトの名無しさん
2008/02/16(土) 14:04:340884デフォルトの名無しさん
2008/02/16(土) 14:05:150885デフォルトの名無しさん
2008/02/16(土) 14:05:32休刊になったLinux Magazine全部入りDVDを入手
Matz御大による、初等Ruby講座(と探訪Ruby)の
存在を知り拝読(中)
0886デフォルトの名無しさん
2008/02/16(土) 14:06:09失礼しました
0887デフォルトの名無しさん
2008/02/16(土) 14:07:33>雑誌連載ならではの密度(基本2段組でビッシリ)ですので
>これ目当てで買っても損はないかと思います。
ここだけ出版される予定はないの?
0888デフォルトの名無しさん
2008/02/16(土) 14:08:060889デフォルトの名無しさん
2008/02/16(土) 14:16:30http://ruby-sapporo.org/live
0890デフォルトの名無しさん
2008/02/16(土) 14:18:560891デフォルトの名無しさん
2008/02/16(土) 15:51:50「そのサイト専用の正規表現使ってHTMLからdivやtable単位でscanで切り出して配列にしさらに正規表現で切り出す」
ということをしたほうが速いということに至った
もっと一般的なことするまでさよならHpricot
0892デフォルトの名無しさん
2008/02/16(土) 16:33:24第1回 はじめの一歩
第2回 条件判断とループ
第3回 オブジェクトと変数
第4回 配列
第5回 ハッシュ(または連想配列)
第6回 文字列の操作
第7回 パターンマッチ
第8回 入出力
第9回 数と電卓
第10回 CGI
第11回 Rubyで作るCGI
第12回 CGIの道具箱
第13回 ファイル処理
第14回 ネットワークプログラミング
番外編 Rubyカンファレンスレポート
第15回 プロセスとフォーク
第16回 スレッド(その1)
第17回 スレッド(その2)
第18回 データの保存
第19回 XMLとYAML
第20回 XMLとYAML(その2)
第21回 エクストリーム・プログラミング
第22回 独習Ruby
第23回 再入門オブジェクト指向
最終回 ここからのRuby
0893デフォルトの名無しさん
2008/02/16(土) 16:34:31第1回 Rubyの国へようこそ
第2回 テスト第一主義
第3回 Wiki Wiki
第4回 Blogの世界
第5回 アスペクト指向
第6回 RubyとEmacs
第7回 Instiki
第8回 テンプレート
第9回 DBM
第10回 tDiary
第11回 Webアプリケーションの基礎
第12回 Webアプリケーションの基礎(その2)
第13回 Webアプリケーションフレームワーク
第14回 マークアップ・マークダウン
第15回 ダイコン
最終回 ネタのタネ
0894デフォルトの名無しさん
2008/02/16(土) 18:25:28WWW::Mechanizeもそうだけど、ドキュメントがないからどうやったら早いのかわかりずらいよね。
俺も苦労した。
ただいっておくけど、
> 「そのサイト専用の正規表現使ってHTMLからdivやtable単位でscanで切り出して
> 配列にしさらに正規表現で切り出す」
ってのが楽にできるのが、Hpricotですよ。
0895デフォルトの名無しさん
2008/02/16(土) 20:28:240896デフォルトの名無しさん
2008/02/17(日) 05:08:19>>891みたいな、「それ今知っている技術でやった方が早いよ」と思う人にはやはり勧められない。
文句言うだけなので、やめておいた方がいい。
Hpricotは、半分は「おおーすげー」って感動するためにあるようなものでし、
基本この手のライブラリは、ソース読まないとまともに使えないし、
とにかく早く(速くじゃないよ)やりたいなら、
導入コストがでかいので、gemで入るような既存のライブラリを使うことは勧めない。
0897デフォルトの名無しさん
2008/02/17(日) 05:30:32rexmlを使うと10秒近くかかるので
最低限の機能としてはXPATHが使えればいいです。
0898デフォルトの名無しさん
2008/02/17(日) 05:43:42http://mono.kmc.gr.jp/~yhara/rubyscraping/?Hpricot
0899デフォルトの名無しさん
2008/02/17(日) 09:38:02http://wota.jp/ac/?date=20070115#p01
0900デフォルトの名無しさん
2008/02/17(日) 10:57:19html.scan(/<table class="nested"><tr><td>(.+?)<\/tr><\/td><\/table>\r\n<div class="box1/)
みたいな感じ
「どう言っても対応する</div>だとしか言えない」とかいう場合はHpricotのようなパーサの出番
あとHpricotを使っておきながらto_htmlしたものとかを正規表現でscanしたら負けなのでよろしく
0901デフォルトの名無しさん
2008/02/17(日) 11:03:30Rubyの記事だけ抜き出してうんこpdfの段組をばらして
htmに変換してついでにHTML Help形式にもコンバートして売って欲しい・・・
0902デフォルトの名無しさん
2008/02/17(日) 11:08:50HpricotのXMLモードかlibxml-ruby
0903デフォルトの名無しさん
2008/02/17(日) 11:44:50Hpricotが拡張ライブラリ使ってるから早いんじゃね?
使ったことはないが
0904デフォルトの名無しさん
2008/02/17(日) 15:20:46ActiveSriptRuby で入れた ruby 1.8.6 には入っていないようです。
0905デフォルトの名無しさん
2008/02/17(日) 15:55:12Hpricotインストールしてみたけどまだ5秒ぐらいかかる。
libxml-rubyはgemでインストールしようとしたらエラーが出たので挫折。
ただHipricotより圧倒的に速そうだ。
0906デフォルトの名無しさん
2008/02/17(日) 16:12:42pty拡張の一部なので(ext/pty/lib/expect.rb)、
ptyのないシステムには入っていないかも知れない。
0907デフォルトの名無しさん
2008/02/17(日) 21:04:17お勧めの面白そうな言語ある?
PerlとCとJavaは除外で
0908デフォルトの名無しさん
2008/02/17(日) 21:05:340909デフォルトの名無しさん
2008/02/17(日) 21:11:070910デフォルトの名無しさん
2008/02/17(日) 21:18:30Haskellあたりを食い散らかして「作れるもんねーよ」と嘆く
そしてRubyに戻ってくると…「俺こんな汚いコードや粗悪なアルゴリズム書いてたのか!」
とりあえずはLisp系列か関数型言語のどっちかだろ
0911デフォルトの名無しさん
2008/02/17(日) 21:58:410912デフォルトの名無しさん
2008/02/17(日) 22:28:38@one, @two, @three, @four, @five ...
とインスタンス変数をたくさん持ったオブジェクトAがあり、
@one, @two, @three
というように上の一部に対応するインスタンス変数(のみ)を
持ったオブジェクトBがあります。
Bのインスタンス変数すべてが対応するAのそれと同じ対象を
参照していればtrue、そうでなければfalseを返すメソッドが
ほしいのですが、どうすればキレイに書けるでしょうか?
0913デフォルトの名無しさん
2008/02/17(日) 22:29:320914デフォルトの名無しさん
2008/02/17(日) 22:33:31なんかの書き間違いかと思ったら、パイクソかよ。
0915デフォルトの名無しさん
2008/02/17(日) 22:53:00そういう全比較の結果に頼らなければならないこと自体が何か非常にまずい
0916デフォルトの名無しさん
2008/02/17(日) 22:57:00よくわかんないけど、Object#instance_variables とか Object#instance_variable_get とか使えばいいんじゃないか。
a = A.new
b = B.new
b.instance_variables.each do |varname|
val = b.instance_variable_get(varname)
if val != a.instance_variable_get(varname)
puts "b.#{varname} != a.#{varname}"
break
end
end
0917912
2008/02/17(日) 23:09:35自分もそんな気はしてたんですが、アプリの終了時に
上書き保存のダイアログを出すかどうか調べる方法として、
こんなへたれロジックしか思いつきませんでした・・・。
>>916
これ、いただきます。感謝です。リフレクション系のメソッドが
なかなか自然に浮かんできません。修行します・・・。
0918デフォルトの名無しさん
2008/02/18(月) 00:08:57もっといい方法があるはず
リフレクション無しでやれないかどうか、頭を捻って考えるべき
どうしても思いつかないなら、ここでソース(or具体的なクラス構成)を提示して
「どんな方法があるか」を質問すればいい
0919デフォルトの名無しさん
2008/02/18(月) 01:34:54オブジェクトで表現してみるとか。比較一つでいいし。
関係ないこと纏めてもしゃーないからやっぱ
設計しだいだけど
0920デフォルトの名無しさん
2008/02/18(月) 05:45:53変更した時にフラグを立てることは出来んの?
0921デフォルトの名無しさん
2008/02/18(月) 09:10:09カプセル化の意味ねー。
0922デフォルトの名無しさん
2008/02/18(月) 09:11:50rubyといえばMIX-INって記憶してるんだけど。
0923912
2008/02/18(月) 09:37:09リフレクション無しでというのが基本なんですよね。
もいっかい考えてみます。またよろしくです。
>>919
オブジェクトで表現して比較というのは考えたんですが、
どうやったら同一性を定義できるのかわからなくなって
とりあえず変数比較でお茶をにごした次第です。
>>920
undo/redoを実装していて、どっちみちオブジェクトの状態を
保存しておく必要があってフラグにはしませんでした。
でもやっぱりあったほうがいいのかも。
0924デフォルトの名無しさん
2008/02/18(月) 10:05:240925デフォルトの名無しさん
2008/02/18(月) 10:14:380926912
2008/02/18(月) 11:24:18オブジェクト自体じゃなくて変数の参照先の同一性の間違いです。
が、考えてみると普通に一個一個見ていけばいいだけですね。
そうすると面倒くさくなってやっぱり916がいいような気が。
0927デフォルトの名無しさん
2008/02/18(月) 11:42:06instace_variable_get使うつもりだったのをオブジェクトにして、
アクセサつけてprotectedにして。
0928デフォルトの名無しさん
2008/02/18(月) 11:42:18・出力結果
http://news23.org/pict/news7342.jpg
・環境
OS Windows 2000
使ったライブラリ http://raa.ruby-lang.org/project/ruby-amazon/
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]
・文字コード
ソースの文字コード sjis
コマンドプロンプトの文字コード 932(sjis)
・出力メソッド
print、puts、pでほとんど同じ
・実行
ruby -Ks amazos.rb
(ソース中に文字コード指定なし)
0929デフォルトの名無しさん
2008/02/18(月) 11:52:25自己解決しました
require 'nkf'
出力したい文字列.tosjis
0930デフォルトの名無しさん
2008/02/18(月) 19:52:140931デフォルトの名無しさん
2008/02/18(月) 20:13:49いやそのまんまだし
元のXMLを自力で解析してれば文字列がUTF-8のままだって気づいたんだろうけどね
初心者が一足飛びにモジュールだけ使うのも考えもんだな
0932デフォルトの名無しさん
2008/02/18(月) 20:25:260933デフォルトの名無しさん
2008/02/18(月) 21:27:030934デフォルトの名無しさん
2008/02/18(月) 21:38:160935デフォルトの名無しさん
2008/02/18(月) 21:38:320936デフォルトの名無しさん
2008/02/19(火) 00:52:15www.ruby-lang.org に置いてあるマニュアルのスナップショット版(rd形式)
を html に変換するにはどうすれば良いのでしょうか?
0937デフォルトの名無しさん
2008/02/19(火) 00:53:560938デフォルトの名無しさん
2008/02/19(火) 01:02:01すみません。
RDのマニュアルはどこにありますか?
0939デフォルトの名無しさん
2008/02/19(火) 01:20:410940デフォルトの名無しさん
2008/02/19(火) 01:33:24できれば最新版を参照したいので、スナップショットから
HTML版を構築したいのです。
0941デフォルトの名無しさん
2008/02/19(火) 07:10:47GUIアプリだと、変更時にフラグを立てる
Undoの実装などにコマンドパターンを使うから、
フラグ立てひとつ処理が増えたとしても影響ない
0942デフォルトの名無しさん
2008/02/20(水) 16:36:58あ...言ってみたかっただけです
0943デフォルトの名無しさん
2008/02/20(水) 17:02:47というのが手作業で面倒なのでrakeというものでやってみようと思いました
…ファイルから2次的ファイルが生成されるようなやり方でないと記述できない? *.cと*.oのような
0944デフォルトの名無しさん
2008/02/20(水) 17:10:49よーわからんが、
「オブジェクトファイルより新しければコンパイル実行」
という判断の元になる「オブジェクトファイル」に該当するものが
RubyスクリプトのFTP転送という仕事には存在しないから
新しいファイルだけを転送ということをさせることができなくね?
という質問でいいか
0945デフォルトの名無しさん
2008/02/20(水) 20:59:53Rakeについてる rake/contrib/ftptools.rb がそれっぽいけど
# This file is still under development and is not released for general use.
だそうな
Rake::FileTaskみたいにRake::Taskを継承して、タスクを実行する必要があるか
判定するメソッドneeded?を定義してやればできそう
0946デフォルトの名無しさん
2008/02/20(水) 21:43:21相手側にシェルアカウントがあればそのまま、自宅にSSH鯖があればCGI経由で
rsync/SSHとかできるけどね。
0947デフォルトの名無しさん
2008/02/20(水) 22:01:26ディレクトリにあるファイルより新しければFTP転送
Rubyスクリプトが大量にある場合はちと悲惨だが…
0948デフォルトの名無しさん
2008/02/20(水) 22:14:03次回はそのファイルより新しいものだけを転送。
でいいじゃん。
0949デフォルトの名無しさん
2008/02/20(水) 22:17:500950デフォルトの名無しさん
2008/02/20(水) 22:49:55950を踏んだ訳だが
0951デフォルトの名無しさん
2008/02/20(水) 23:03:55踏む前に書いたくせに!
0952デフォルトの名無しさん
2008/02/20(水) 23:41:46>>950
流れが速いわけじゃないし埋めるのも手間だし別に970とか980とかでもいいような気もする
0953デフォルトの名無しさん
2008/02/20(水) 23:59:39別に使わなくてもいいよ
いや真面目な話、Rakeの依存解決が使えない場面なんていくらでもある
そういう場合は無理にRakeの機能に頼らなくてもいい
0954デフォルトの名無しさん
2008/02/21(木) 01:29:52ふだんから使ってるぜ
0955デフォルトの名無しさん
2008/02/21(木) 14:01:50Matzはどう思ってるんだろう?
個人的には、まともにオブジェクトを指向した
最初の環境はDelだったりする
塚越一雄著「Delphiオブジェクト指向プログラミング」
には足向けて寝られない
これが本当に役に立ったのは他でもないRubyでなんだけど
0956デフォルトの名無しさん
2008/02/21(木) 18:22:25ttp://diaspar.jp/node/5
にある、amazon APIのサンプルを実行したら、
2008-05-28 : 0132084945 : Intro to Java Programming, Comprehensive
2008-02-29 : 4797346418 : 繧・&縺励>PHP 繧・&縺励>繧キ繝ェ繝シ繧コ
のように日本語が文字化けしてしまいます。
Windows XP, Ruby 1.8.2 なので頭に、
#! -Ks
としています。
0957デフォルトの名無しさん
2008/02/21(木) 18:24:520958デフォルトの名無しさん
2008/02/21(木) 18:44:45Amazonが何を出力してるか理解してない人は利用禁止
普通にAWSとか勉強してからおもむろに便利に使うべし
0959956
2008/02/21(木) 19:15:42require 'kconv'
Kconv.tosjis(変換したい文字列)
で解決しました。
>>958
まぁ、そう言わないでくださいよ。
0960デフォルトの名無しさん
2008/02/21(木) 22:00:53文字のエンコードの存在をしることってあると思うんだけど
ネット使わないのかな
0961デフォルトの名無しさん
2008/02/21(木) 22:04:320962デフォルトの名無しさん
2008/02/21(木) 22:48:36と思ってみたり。
hikiのプラグインにしてもライブラリ公開して自分のIDをデフォにするってなんかコスイような・・・
・・・まぁ好きにすればいいよね。
0963デフォルトの名無しさん
2008/02/21(木) 23:22:45確かに実際、最近ブラウザのエンコーディング手で切り替えた経験がないわ
あるいはUTF-8のページが増えてきて、とりあえずビールならぬとりあえずUTF-8
って方式が当たるようになってきたのかも
0964デフォルトの名無しさん
2008/02/21(木) 23:26:290965デフォルトの名無しさん
2008/02/21(木) 23:28:16ホスティングタイプのブログへ流れたからかな。
0966デフォルトの名無しさん
2008/02/21(木) 23:39:100967デフォルトの名無しさん
2008/02/21(木) 23:41:35特に Boost 日本語訳のページとかひどいもんだ・・・。
0968デフォルトの名無しさん
2008/02/21(木) 23:44:150969デフォルトの名無しさん
2008/02/22(金) 00:05:44素晴らしい文字コード認識精度をはじき出してくれますよ
0970デフォルトの名無しさん
2008/02/22(金) 00:07:19UTF-8って宣言してるのにShift_jisで書いちゃったりしてるわけ?
0971デフォルトの名無しさん
2008/02/22(金) 00:09:090972デフォルトの名無しさん
2008/02/22(金) 00:34:46.htaccessなら多分シカトされない
0973デフォルトの名無しさん
2008/02/22(金) 01:06:520974デフォルトの名無しさん
2008/02/22(金) 01:14:10・HTMLのmeta http-equiv
・実際の文字コード
全部ばらばらとかなー。一応優先順位はあった気がするんだが。
確実に判定出来るコードの文字からなる語句(「美乳」とかがそうらしい)を
HTMLの中にコメントで埋めるとかいう小技があった時代も。
0975デフォルトの名無しさん
2008/02/22(金) 01:16:120976デフォルトの名無しさん
2008/02/22(金) 05:16:05海外のプログラマが美乳好きだっただけなんじゃね?
0977デフォルトの名無しさん
2008/02/22(金) 05:34:05あれは馬鹿除けのためにわざとやってるという噂だが
0978デフォルトの名無しさん
2008/02/22(金) 05:37:16それはApacheの設定ミスだなw
0979デフォルトの名無しさん
2008/02/22(金) 05:53:43美乳テーブルな。あれは EUC 決め撃ち用だよ。
0980デフォルトの名無しさん
2008/02/22(金) 08:27:16参考にしたいんだけど
0981デフォルトの名無しさん
2008/02/22(金) 09:21:46そりゃRDoc自身だろ
0982デフォルトの名無しさん
2008/02/22(金) 10:06:11require 'sdl'
SDL.init(SDL::INIT_AUDIO)
SDL::Mixer.open
input = open('test.wav', 'rb')
SDL::Mixer::Wave.load_from_io(input)
以上のようなコードを実行すると、load_from
0983982
2008/02/22(金) 10:12:03(続き)
以上のようなコードを実行すると、load_from_ioのところで
cannnot seek backward (SDL::Error)
というエラーになってしまうのですが、「後方を探せない」というのはどういうエラーなのでしょうか?
後方互換性絡みの何かがあるのでしょうか?
環境は以下の通りです
ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-mswin32]
SDL1.3.1(Windowsバイナリ版)
0984982
2008/02/22(金) 10:20:58もしかしてと思い、rubyを1.8.6最新版にしてみましたが、結果は同じでした
0985デフォルトの名無しさん
2008/02/22(金) 10:54:230986デフォルトの名無しさん
2008/02/22(金) 10:55:35cannot seek backward は「逆方向にシークできない」だろう。
なんでそんなシークをしようとしてるのかはわからんけど。
0987デフォルトの名無しさん
2008/02/22(金) 11:46:50使ってる人がたまたまいれば回答はしてくれるかもしれないが
0988デフォルトの名無しさん
2008/02/22(金) 11:46:530989デフォルトの名無しさん
2008/02/22(金) 11:49:55Ruby1.9は不安定な開発版であり初心者の使用には全く向きません。最新安定版のRuby1.8.6の使用を強くお勧めします。
関連スレやURLは>>2-7あたりを見てください。Ruby on Railsの質問はWebProg板のRailsスレで。
という文言を>>1に書いてくれ
0990デフォルトの名無しさん
2008/02/22(金) 12:12:520991デフォルトの名無しさん
2008/02/22(金) 14:52:08http://pc11.2ch.net/test/read.cgi/tech/1203658291/
試したら立っちゃった
0992デフォルトの名無しさん
2008/02/22(金) 17:33:530993982-984
2008/02/22(金) 20:38:14「逆方向シーク」に心当たりがありませんし
Ruby/SDLについて訊ける場所もなさそうなので、とりあえず諦めます
>>988
三種類ぐらいのwavで試しても読み込めませんでしたし
SDL::Mixer::Wave.loadを使えば普通に読み込めるので、それはないと思います
0994デフォルトの名無しさん
2008/02/22(金) 21:20:240995デフォルトの名無しさん
2008/02/22(金) 21:42:23バグかもしれないから開発者と連絡とったらいいんじゃない
0996デフォルトの名無しさん
2008/02/22(金) 22:27:140997デフォルトの名無しさん
2008/02/23(土) 10:28:280998デフォルトの名無しさん
2008/02/23(土) 12:54:14http://pc11.2ch.net/test/read.cgi/tech/1203658291/
0999デフォルトの名無しさん
2008/02/23(土) 12:54:43http://pc11.2ch.net/test/read.cgi/tech/1203658291/
1000デフォルトの名無しさん
2008/02/23(土) 12:55:32http://pc11.2ch.net/test/read.cgi/tech/1203658291/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。