Ruby 初心者スレッド Part 28
レス数が1000を超えています。これ以上書き込みはできません。
0001one
2009/05/16(土) 10:06:50【Ruby1.9.1 は従来版とは異なる部分も多く、書籍や解説やライブラリのサポートがまだありません】
【自力で解決できない壁で悩むことのない最新安定版の Ruby1.8.7 での学習をお勧めします】
※1.8.7 は 1.8 系と 1.9 系の橋渡しをするためのリリースで、1.9 系 の便利新機能の一部が利用可能です
関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の 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を読め」でいいので、叩かない&怖がらせない。
・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0002one
2009/05/16(土) 10:08:33Q:
いちからRubyを始める初心者向けのRuby入門書は何がありますか?
A:
プログラム作成自体の初心者なら
「たのしいRuby 第2版 Rubyではじめる気軽なプログラミング」
http://www.amazon.co.jp/dp/4797336617/
文法は理解済み(orリファレンスで乗り切る既言語習得者)の場合のRuby様式を知る必携2冊目
「初めてのRuby」
http://www.amazon.co.jp/dp/4873113679/
以下は外れが少ないとされている本です。必ず立ち読みした上で自分の目的とレベルに応じて購入してください
「Rubyレシピブック 第2版 268の技」(初心者向け)
http://www.amazon.co.jp/dp/4797340045/
「プログラミングRuby 第2版 言語編」(初心者向け)
http://www.amazon.co.jp/dp/4274066428/
「Ruby Way 第2版」(脱初心者向け)
http://www.amazon.co.jp/dp/4798115339/
「Rubyクックブック ―エキスパートのための応用レシピ集」(脱初心者向け)
http://www.amazon.co.jp/dp/4873113245
以下の本は言語作者が書いた最新本ですがとりあえず初学者向けではありません
「プログラミング言語 Ruby」(言語として深く知りたい人向け)
http://www.amazon.co.jp/dp/4873113946/
0003one
2009/05/16(土) 10:09:14Ruby Home Page 【公式、お役立ち度が微妙】
http://www.ruby-lang.org/ja/
Rubyリファレンスマニュアル 【検索機能休止中、Googleなどの併用を】
http://www.ruby-lang.org/ja/man/
http://www.ruby-doc.org/ 【詳しい英語版】
HTMLヘルプ版リファレンスマニュアル配布さん 【Windowsで便利、検索も無論可能】
http://elbereth-hp.hp.infoseek.co.jp/ruby.html
Programming Ruby - The Pragmatic Programmer's Guide 【好評書籍の初版がネットで、ただし英語】
http://www.ruby-doc.org/docs/ProgrammingRuby/
Rubyist Magazine - るびま 【ライブラリ紹介などの読み物、過去のコードレビューは一読の価値あり】
http://jp.rubyist.net/magazine/
逆引きRuby 【やりたいことから探すWiki、最近元気ないので編集者募集】
http://www.namaraii.com/rubytips/
はてなキーワード > Ruby 【うっかりどっさりまとまったリンク集、説明なし】
http://d.hatena.ne.jp/keyword/Ruby
RubyForge 【○○をやりたい管理されたライブラリを探すならここ、英語】
http://www.rubyforge.org/
GitHub 【○○をやりたいコードをとにかく探すならここ、英語】
http://github.com/
日本Rubyの会 【最近はオフライン勉強会の寄り合い場と化しているので近くで勉強会があれば】
http://jp.rubyist.net/
0004one
2009/05/16(土) 10:09:55本スレ
Rubyについて Part 35
http://pc12.2ch.net/test/read.cgi/tech/1238194350/
アンチスレ
Rubyについて(アンチ専用) Part003
http://pc11.2ch.net/test/read.cgi/tech/1207233348/
Railsスレ
【Ruby】Ruby on Rails Part7
http://pc11.2ch.net/test/read.cgi/php/1241100447/
Windows用スレ
【ActiveScript】RubyをWindowsで使うスレ【GUI】
http://pc11.2ch.net/test/read.cgi/tech/1155031689/
Ruby 1.9 系列スレ
魁け! Ruby 1.9.X
http://pc11.2ch.net/test/read.cgi/tech/1201603546/
0005デフォルトの名無しさん
2009/05/16(土) 10:16:280006デフォルトの名無しさん
2009/05/16(土) 11:33:250007デフォルトの名無しさん
2009/05/16(土) 13:00:41>982 名前: デフォルトの名無しさん Mail: 投稿日: 2009/05/16(土) 04:43:41
>ruby1.8.6です。
>ファイルアクセスが他のソフトとぶつかる場合で質問です。
>
>Rubyで周期的にXMLファイルを上書きしていますが、この上書きのタイミングと
>他のソフトによるXML読み込みが衝突した場合(と思われる時)、
> in 'initialize': Permission denied - new XML.xml (Errno::EACCES)
>
>というエラーメッセージが出ます。
>そこでRubyの振る舞いとして、他のソフトがファイルアクセス中は上書きを延期するか、
>あるいは別の方法で衝突を回避したく思います。
>何か良い方法はありますでしょうか?
>
>なお別のソフト側で衝突回避を試みましたが、上手くいかないためRubyに望みを
>託すことにしました。
0008デフォルトの名無しさん
2009/05/16(土) 13:02:31File#flock を使ってロックすればいいんじゃないでしょうか。
File.open('file.xml', 'w') do |f|
f.flock(File::LOCK_EX)
f.write('<?xml version="1.0" ?>')
end
でどうよ?
0009デフォルトの名無しさん
2009/05/16(土) 13:07:35Perlなんかでやってたときは、そのロックだと
ファイルの書き込みオープンでファイル空っぽ
→(他のプロセスからの読み出しの可能性)
→ファイルロック
になるから駄目、だったような。
Rubyのブロックでその辺どうなるんだろ
0010デフォルトの名無しさん
2009/05/16(土) 13:25:42Ruby 初心者スレッド Part 27
http://pc12.2ch.net/test/read.cgi/tech/1238632943/
0011デフォルトの名無しさん
2009/05/16(土) 13:52:090012デフォルトの名無しさん
2009/05/16(土) 13:58:53マルチプロセスだからブロックだろうとなんだろうと関係ない。
・非破壊的にopen
・ロック
・上書き
とやらないとダメだろう
File.open('file.xml', 'r+') do |f|
f.flock(File::LOCK_EX)
f.truncate(0)
f.rewind
f.write('<?xml version="1.0" ?>')
end
0013デフォルトの名無しさん
2009/05/16(土) 14:01:32書き込み禁止にしてるような気がするんだが。
そうなるとロック以前にエラーになるわけで、ポーリングしかないんじゃないかな。
0014デフォルトの名無しさん
2009/05/16(土) 14:15:40使わない方がいいと思う
0015デフォルトの名無しさん
2009/05/16(土) 16:40:280016デフォルトの名無しさん
2009/05/16(土) 17:34:470017デフォルトの名無しさん
2009/05/16(土) 18:37:17前スレ>>983さん,本スレ>>7-9,>>12-14さん、有難うぎざいます。
細かい点ですが、
前スレ>>983
直接
File.open(path,'w'){|f| f.write(data)}
するのではなく
File.open(path_v,'w'){|f| f.write(data)}
File.rename(path_v, path)
ここで、path でなく path_v としているのは、
何か意味があるのでしょうか?
0018デフォルトの名無しさん
2009/05/16(土) 18:46:57というかその質問をするってことは動作の意図わかってないんか
0019デフォルトの名無しさん
2009/05/16(土) 19:23:07最近の Linux だと NFS でもちゃんと flock できたりするから驚きだ。
0020デフォルトの名無しさん
2009/05/16(土) 20:07:01詳しくないけど、
・排他ロックしてないけど、書き込み途中(=壊れた状態)のファイルを読まれる心配がない。
(そんなことできるのかどうか知らないけど。)
・万一書き込み中にこけてもデータが壊れない。
って感じではないかと。
002117
2009/05/16(土) 21:54:36色々有難うございます。
試しに例外処理を
begin
File.open('newXML.xml', 'w') {|f|
f.write new_xml
}
rescue
puts "XML, unable!"
end
の形で使ったところ、衝突中は上書きがスキップされますが
強制終了は無くなりました。
0022デフォルトの名無しさん
2009/05/17(日) 02:33:30現在、勉強用に買った書籍付録の実行環境+DOSプロンプトで例えばABC.rbを
C:\>ABC.rb
などどして実行していますが、アイコンクリックなどの方法で実行する
ことは出来ますか?
0023デフォルトの名無しさん
2009/05/17(日) 02:46:51ダブルクリックで実行したいのなら自前でウィンドウ作る言語やったほうがいいぞ
0024デフォルトの名無しさん
2009/05/17(日) 02:58:33Exerbを使えば実行ファイルにできる
ただ、普通の(標準入力や標準出力を使う)スクリプトだと
実行してすぐにウインドウが閉じるので、あまり意味をなさない
RubyでGUIアプリケーションを作るのなら役に立つ
0025デフォルトの名無しさん
2009/05/17(日) 03:26:55可能
ただし、設定方法はOSによって異なる
「拡張子 関連付け」で検索
0026デフォルトの名無しさん
2009/05/17(日) 03:46:18たぶん、CUIに慣れていないってことなんだろうか。
キーボード入力が不慣れってことならどうしようもないけど、それはプログラミングの
上では避けては通れないので、ないことにして。
勉強の為なら、>>23-24の言うとおり、とにかくまずは標準入出力での試行錯誤が
気楽で楽しいかも。そのためには・・・
まず、Windowsのコマンドプロンプトを、少しでも使いやすくすることを考えてはどうか。
Windous2000以上なら、DOS窓でも入力補完機能が付いている。
ショボいけど、ヒストリー(コマンド履歴)機能もある。
これらを知ってると知らないとでは、かなり違うはず。
ttp://journal.mycom.co.jp/special/2002/xpcommand/001.html
あとそれでも不満なら、補完ツールを入れるという手段もある。
たぶん、ckw + NYACUS(or PowerShell) って人もそれなりにいるかと思う。
ttp://d.hatena.ne.jp/hideden/20071115/1195229532
とりあえず参考になれば。
002726
2009/05/17(日) 03:48:15○Windows2000
これは恥ずかしい;;
見なかったことにして・・・。
0028デフォルトの名無しさん
2009/05/17(日) 03:52:42thx
Exerbは確かに直ぐに終了しますが、puts "Hello, World" も
puts "Hello, World"
sleep 2
と小細工すれば動作確認出来ました。
0029デフォルトの名無しさん
2009/05/17(日) 04:02:10pts "Hello, World"
sleep 2
って書いてみ
003022&28
2009/05/17(日) 04:03:04OS) WinXP-Pro(SP2)
Mem) 4GB(実質3.24GBですがw)
Ruby) 1.8.6
>>25-26
有難うございます。
0031デフォルトの名無しさん
2009/05/17(日) 04:55:44確か、こんな感じのdo_ruby.batファイルとか作って.rbに関連付けておけばよかった気がした。
失敗した時だけ待つ
常に待つなら、
ruby %*
pause
0032デフォルトの名無しさん
2009/05/17(日) 05:04:210033デフォルトの名無しさん
2009/05/17(日) 05:16:27いるわけで、定形の作業用スクリプトをたまに起動するだけなら
>>32なんて問題にならないし、
人に説明する場合でも、コマンドプロンプトを開いてコマンドを入力させるより
アイコンをダブルクリックの方が楽だったりする
場合もある
0034デフォルトの名無しさん
2009/05/17(日) 08:14:42それ知らなかったよ。サンクス
003534
2009/05/17(日) 09:04:590036デフォルトの名無しさん
2009/05/17(日) 14:26:56一見パイプの拡張かと思ったらexitコードの論理和かよ
cmdで使えたなんて知らなかった
0037デフォルトの名無しさん
2009/05/17(日) 14:47:10うる覚えだった。スマソw
0038デフォルトの名無しさん
2009/05/17(日) 14:52:47今覚えとこうな。
0039デフォルトの名無しさん
2009/05/17(日) 15:16:47少しは抱くべきではないだろうか
0040デフォルトの名無しさん
2009/05/17(日) 15:21:33ttp://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=%E3%81%86%E3%82%8B%E8%A6%9A%E3%81%88&num=50
0041デフォルトの名無しさん
2009/05/17(日) 15:27:59「う・る・お・ぼ・え」と書くつもりで正しく書いてるだけだ
その人にとっては「うる覚え」が完全に正しい
もちろん「うろ覚え」が辞書上も多数派的にも"正しい"が、
だからといって今更「うる覚え」がなくなるわけでもなく
0042デフォルトの名無しさん
2009/05/17(日) 15:30:24///)
/,.=゙''"/
/ i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!!
/ / _,.-‐'~/⌒ ⌒\
/ ,i ,二ニ⊃( ●). (●)\
/ ノ il゙フ::::::⌒(__人__)⌒::::: \
,イ「ト、 ,!,!| |r┬-| |
/ iトヾヽ_/ィ"\ `ー'´ /
0043デフォルトの名無しさん
2009/05/17(日) 20:31:45見通しがちょっとよくなったような気がする
Rubyあんまり関係ないな
0044デフォルトの名無しさん
2009/05/17(日) 20:35:40h = Hash.new
…
return h
end
というメソッドを勢いで作ってしまうことはある
適切な名前を付けるべきだとは思うんだけどね
0045デフォルトの名無しさん
2009/05/17(日) 21:12:55で、とりあえずこのテストをJRubyで通るようにするのはあとまわしにすることに決定しました。
このとき、そのテストに『今はテストが失敗するけどあとまわしにするよ』というような目印をつける方法が
Test::UnitかRSpecにあったと思うんですけど、どなたかご存じないですか。
ぐぐろうにもキーワードが思いつきません。
0046デフォルトの名無しさん
2009/05/17(日) 21:16:01「スコープが広いものにほど明瞭な(長い)名前を付けよ」って一般原則からすれば
メソッドが十分短いならhは許されるだろう。hogeは不味いだろうけど
というか、極端に長すぎるのも考え物
記述密度が上がって逆に可読性を落としてしまう
Linusに言わせれば
>Modula-2 や Pascal のプログラマとは違って、C言語プログラマは 「こ
>の変数は一時的に使われるカウンターである(ThisVariableIsATemporaryCounter)」
>などというような気のきいた名前は使いません。C言語プログラマは、"tmp" な
>どの十分に書きやすく、それでいて少なくとも分かりにくくはならない変数名を
>選ぶものです。
Rubyも立場的には近いと思う
to_sとか、意味が通る限りにおいて短い名前を希求する
0047デフォルトの名無しさん
2009/05/17(日) 21:19:50RSpecのpendingのことかな
詳しくはるびまの連載記事に載ってる
0048デフォルトの名無しさん
2009/05/17(日) 21:39:47それです。さんきゅー。あいしてる。
0049デフォルトの名無しさん
2009/05/18(月) 11:07:46>File.open('file.xml', 'r+') do |f|
> f.flock(File::LOCK_EX)
> f.truncate(0)
> f.rewind
> f.write('<?xml version="1.0" ?>')
>end
'r+' だとファイルが存在しなかったときにエラーになるよね。
それがいやで、自分は 'r+' じゃなくて 'a' にしてるんだけど、なにか問題あるでしょうか。
詳しい人のコメント求む。
0050デフォルトの名無しさん
2009/05/18(月) 11:18:10'r+' はファイルの先頭から書き込む
対象のファイルが全くの空である場合は動作が「たまたま」同一
0051デフォルトの名無しさん
2009/05/18(月) 11:20:570052デフォルトの名無しさん
2009/05/18(月) 11:24:10「あるはずのファイルが無い」とか「書けるはずなのに(権限などで)書けない」なんてのは
似たようなもんで、どのみちきっちりやるならチェックなり例外処理なりしなきゃいけない。
つまり、こまけぇこた(ry
0053デフォルトの名無しさん
2009/05/18(月) 11:38:29def exclusive_write(path, content)
body = lambda{|f|
f.flock File::LOCK_EX
f.write content
f.truncate f.tell
}
File.open(path, 'r+', &body)
rescue Errno::ENOENT
File.open(path, 'w', &body)
end
自分の過去を掘り返してきたらこんなんが出てきた。
正しいかどうかは…。
0054デフォルトの名無しさん
2009/05/18(月) 11:48:30> あいしてる
これは、
あいしてる ( ^з^)-☆Chu!!
までやるべき
005517
2009/05/18(月) 17:02:45皆さんのレスを一通り見ましたが、File.openの箇所で工夫するというのが定石
なのでしょうか?
本を読んでいたら、 File.readable?(path) と File.writable?(path) なるものが
ありましたが、(これらが未だ登場しないといいうことは)使うと何か弊害が
生じるのでしょうか?
0056デフォルトの名無しさん
2009/05/18(月) 17:54:21>'a' はファイルの最後から書き込む
>'r+' はファイルの先頭から書き込む
そうなんだけど、今の場合は f.truncate(0) して f.rewind(0) してから書き込んでいるから、
最初のファイルポインタの位置は関係ないよね。
>>51
これって何?初めて見るんだけど。マニュアルに書いてある?
0057デフォルトの名無しさん
2009/05/18(月) 18:05:17ttp://www.ruby-lang.org/ja/man/html/File_Constants.html
0058デフォルトの名無しさん
2009/05/18(月) 18:07:42そういえば昔、CGIだけどレンサバの容量の制限(quota?)でファイルが書けず、
1日分のデータが無くなったってトラブルがあったな・・・(遠い目
0059デフォルトの名無しさん
2009/05/18(月) 18:11:38///)
/,.=゙''"/
/ i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!!
/ / _,.-‐'~/⌒ ⌒\
/ ,i ,二ニ⊃( ●). (●)\
/ ノ il゙フ::::::⌒(__人__)⌒::::: \
,イ「ト、 ,!,!| |r┬-| |
/ iトヾヽ_/ィ"\ `ー'´ /
0060デフォルトの名無しさん
2009/05/18(月) 18:46:21Emacsでいいんだけど
0061デフォルトの名無しさん
2009/05/18(月) 19:00:040062デフォルトの名無しさん
2009/05/18(月) 21:16:280063デフォルトの名無しさん
2009/05/19(火) 01:53:42こいつのソース見てくれ。殆どの処理が module として定義されて
普通に実行しただけでは何も起こらないよね?
これはどうなっているの?
よくわからないけど、rubygems がゴニョゴニョしていると考えていいのかい。
0064デフォルトの名無しさん
2009/05/19(火) 02:20:21lib/crackup.rb
288| at_exit do
まったく読み込んでないが、これじゃないか。
0065デフォルトの名無しさん
2009/05/19(火) 02:26:30006663
2009/05/19(火) 02:36:16すまん、勘違いしていた。さんくす。
0067デフォルトの名無しさん
2009/05/19(火) 08:09:15検索すると、マジックコメントが Ruby(と Ruby が参考にした Python)独自のものだと思ってる人がちょくちょくいる模様
これ Emacs 自身が解釈する文字列で、読み込むファイル全般で効くから
-*- coding: utf-8 -*-
の行があったら Emacs はその文字エンコーディングだとみなして読み込むから
嘘だと思ったら
-*- ruby -*-
とだけ書いた hoge ファイルを Emacs で読み込んでみるといい
いわゆる拡張子がなくて判断情報がないはずなのに ruby-mode になるからさ
-*- perl -*- と書いたら perl-mode に、 -*- html -*- と書いたら html-mode になる
0068デフォルトの名無しさん
2009/05/19(火) 09:50:33ほー知らなかった。emacsはそういう機能があるんだな。vimも似たようなのなのなかったっけ?
0069デフォルトの名無しさん
2009/05/19(火) 11:28:5667 じゃないけど
http://jp.rubyist.net/magazine/?0025-Ruby19_m17n#l18
0070デフォルトの名無しさん
2009/05/19(火) 16:27:04これを英語でいうと何といいますか。
0071デフォルトの名無しさん
2009/05/19(火) 16:58:190072デフォルトの名無しさん
2009/05/19(火) 17:20:32substitution となってるな。
0073デフォルトの名無しさん
2009/05/19(火) 20:31:20メソッドチェーンの途中で nil があってもそれ以後予期に計らってくれる便利なハックや方法はありませんでしょうか?
Delphi Prismのコロン演算子みたいなのです(例がマイナーすぎてスマソ・・)
Colon Operator - Delphi Prism
http://prismwiki.codegear.com/en/Colon_Operator
007473
2009/05/19(火) 20:36:41>>73 ですが、既存のgemsとかのユーティリティ的なものがあればそれキボンという感じです。
わがままですいません…。
Activeなんたらとかにないのかなーと探しているのですが、見つからず
0075デフォルトの名無しさん
2009/05/19(火) 20:40:43・・・ごめん、忘れてw
0076デフォルトの名無しさん
2009/05/19(火) 20:59:01あえて小手先の拡張でなんとかするなら・・・こんな感じか?
obj.send_if_defined(:method1).send_if_defined(:method2)
0077デフォルトの名無しさん
2009/05/19(火) 21:08:54眺めた程度ではリンク先の意味を理解できず申し訳ないのだけど
良きに計らうっていうのは具体的にどういう挙動を期待してる?
ふとこんなのを思いついた
class Nil; def method_missing; return nil; end
0078デフォルトの名無しさん
2009/05/19(火) 21:22:12メソッドチェーンを使わないか、
期待した返り値にならない場合は例外出して抜けるメソッドだけをチェーンに使うか、
NoMethodError を rescue する
0079デフォルトの名無しさん
2009/05/19(火) 21:59:40variable interpolation
いや、
expression interpolationだな。
0080デフォルトの名無しさん
2009/05/19(火) 22:00:42ActiveSupportのObject#tryおよびそれの同等品でどうか。
実態はsendだが、nilにだけはnilを返すように定義されている。
0081デフォルトの名無しさん
2009/05/19(火) 22:17:57でもこれ確かに便利だな
ttp://d.hatena.ne.jp/takihiro/20090204/1233745492
0082デフォルトの名無しさん
2009/05/20(水) 01:11:270083デフォルトの名無しさん
2009/05/20(水) 01:18:26catch〜tryのtry?
それとも
0084デフォルトの名無しさん
2009/05/20(水) 01:39:500085デフォルトの名無しさん
2009/05/20(水) 02:18:00名前がよければ採用してもいいという話になっていたと思うが、
誰かが思い出させないとそれきりかな?
いちおうRedmineには入っていたハズ。
008673
2009/05/20(水) 04:16:49ちょっと使ってみようと思います。
> require 'activesupport'; [4649, "HageUnko", nil].map{|i| i.try(:+, i) }
[9298, "HageUnkoHageUnko", nil]
ありがとうございました。
0087デフォルトの名無しさん
2009/05/20(水) 04:51:55ttp://www.func09.com/wordpress/archives/154
を参考にSocketサーバーを作りたいと思っています。
先ずは、server_client.rb中の require "socket_server" について調べましたが、
リファレンス ttp://www.ruby-lang.org/ja/man/html/socket.html には socket_server
というライブラリはありません。
もしかして、ある時期から単に socket になったのでしょうか?
参考サイトの日付は2007年10月です。
008887
2009/05/20(水) 06:35:46目標は、厳密にはXMLSocketサーバーです。
0089デフォルトの名無しさん
2009/05/20(水) 10:43:00pstore = obj.transaction
p pstore.roots
pstore.close
とすると、2行目で止まって、Ctrl+C すると
/usr/lib/ruby/1.8/pstore.rb:296:in `flock': Interrupt
from /usr/lib/ruby/1.8/pstore.rb:296:in `transaction'
from /home/俺/上記ファイル.rb:2:in `hoge_method'
というようになるようになってしまったんだが、
似たような現象にぶち当たった経験があるとかで原因の心当たりある人いる?
0090デフォルトの名無しさん
2009/05/20(水) 11:31:07他のスクリプトやエディタ(てことはないか・・・)が開いててロックしているとか
0091デフォルトの名無しさん
2009/05/20(水) 12:34:18あ、ほんとだ、超でっかいpstoreのトランザクションの奥で同じファイルをPStore.newしてる
何がどうなっていつのまにこうなったんだ、これ
まあいいや、ありがとう
0092デフォルトの名無しさん
2009/05/20(水) 15:02:35>interpolation
さんくすです
0093デフォルトの名無しさん
2009/05/20(水) 15:17:04nil だったか空のハッシュだったかぜんぜん覚えられないんだが
0094デフォルトの名無しさん
2009/05/20(水) 15:17:490095デフォルトの名無しさん
2009/05/20(水) 15:21:43irb
require 'pstore'
PStore.new('1').transaction{|p| p[p.roots.first]}
これを打つのがしんどいから聞いてるんだよ逆切れ
0096デフォルトの名無しさん
2009/05/20(水) 15:25:05というかなんであれは ENOENT とか発生しないのは何故?
0097デフォルトの名無しさん
2009/05/20(水) 15:34:21言うのをめんどくさがるから却ってめんどくさくなる好例だなw
まあそのコードが一発で出てきたところから推測できるように
rootsの初期値は空のArray
nilもHashもfirstが通らん
0098デフォルトの名無しさん
2009/05/20(水) 15:49:54ファイルがそもそも存在しない場合も、
ファイルはあるけど登録が空である場合も、
ファイルがあって何らかのデータが登録されてる場合も、
transaction の返り値オブジェクトの [] メソッドはハッシュのように振舞うし、
fetch メソッドはキーの有無をチェックして例外を出す
ということで、 ファイル自体が無い場合もそのキーでの登録が無い場合も一律 nil だな
nil をキーとして何かデータが登録されていると誤動作するであろう pstore 利用スクリプトは時々見る
0099デフォルトの名無しさん
2009/05/20(水) 18:00:35ttp://taiyaki.org/ruby/jstring/
が定番でしょうか?
最終版が 2003-5-7 ですが、枯れているのか
放置されているのか分からなくて。
0100デフォルトの名無しさん
2009/05/20(水) 18:14:13UTF-8で、
puts "日本語".scan(/./u)[1]
とかではいかんのでしょうか?
0102デフォルトの名無しさん
2009/05/20(水) 18:41:55それで>>99と同じになる
0103デフォルトの名無しさん
2009/05/20(水) 18:47:03$KCODE設定だけでいけるんじゃないかと。
詳しくは知らない
ttp://www.ruby-lang.org/ja/man/html/FAQ_C6FCCBDCB8ECA4CEBCE8A4EAB0B7A4A4.html
0104デフォルトの名無しさん
2009/05/21(木) 00:14:09p line[0,2]
としても期待どおりに文字を切り出せません。
どう書けばよいのでしょうか?
0105デフォルトの名無しさん
2009/05/21(木) 01:01:58期待とは line = 'こんにちは' のとき line[0,2] #=> 'こん' ということ?
1.8系 $KCODE = 'u' 前提
1.8.6 までなら line.split(//)[0,2].join
1.8.7 なら line.chars.to_a[0,2].join でも。
おまけ line[0, 6] # 漢字(1文字3バイト)のみからなるのが確実な場合
1.9系
エンコーディングが正しければ、それで期待どおりになる。
0106デフォルトの名無しさん
2009/05/21(木) 01:25:29ありがとうございます。うまくいきました。
0107デフォルトの名無しさん
2009/05/21(木) 02:02:56単純に r=rand(10) r=r+1 を5回やるとしても、5,4,8,8,7と同じ数が並ぶ
可能性があり、条件式で判別するのは元の数が増えた場合を考えると
スマートではないような気がします。
(数が増えて100万個の中から1000個を選ぶとか)
何か良い方法はありますか?
0108デフォルトの名無しさん
2009/05/21(木) 02:37:07大きな量でも扱える方法が少量の際でもスマートとは限らないから
別個に考えた方がいいと思う
とりあえず一例
ary = []
(1..10).each{|i| ary << i }
5.times{ puts ary.delete_at(rand(ary.length)) }
もちろん数が大きい時には向かない
0109デフォルトの名無しさん
2009/05/21(木) 02:38:040110デフォルトの名無しさん
2009/05/21(木) 02:48:19while numbers.size<5
numbers|=[rand(10)]
end
こんな感じかな
乱数の出てきた順番がどうでもいいならSet使ったほうが良いと思うが
0111デフォルトの名無しさん
2009/05/21(木) 02:49:31step.0 選ばれた数の総数 n = 0
step.1 1を選ぶ確率 5/10
step.2 2を選ぶ確率 (5-n)/9
step.3 3を選ぶ確率 (5-n)/8
...
nが5になるまでstepごとに0から1の一様乱数を発生させて確率以下ならその数を選択することを続ける
0112デフォルトの名無しさん
2009/05/21(木) 03:54:58それを全体から除外するようにしたほうが特に全体数が多い場合は現実的な効率はいいと思う
起こりうる最悪ケースではどちらでも変わらないし全体数の半分程度を選ぶとかではあまり関係ないけど
それから全体数が多いときは一様乱数の有効数字の桁数が問題になるかもしれないので
0から1の浮動小数でなく選択確率の分母以下の整数値をランダムに生成して分子と比較するとかの方がいいかも
でもそれでよくなるかどうかは乱数の生成方法次第だしそもそも100万個くらいならこれは問題ないのかな?
0113デフォルトの名無しさん
2009/05/21(木) 04:19:05result = Array.new
max = 1_000_000 ; period = max / 100
$stdout.sync = true
print 'prepareing...' ; base = (1..max).to_a ; puts "done"
while e = base.delete_at(rand(base.size)) do
result << e
print '.' if (result.size % period).zero?
end
puts
p result.size
p result[0],result[max]
ごめん嘘ついた
インジケータ1個も出ない(w
0114デフォルトの名無しさん
2009/05/21(木) 05:50:28require '../../../spec_helper'
とか spec ファイルの最初に書くのカッコ悪いんだけどもこれは構造上仕方ないのかな
0115デフォルトの名無しさん
2009/05/21(木) 06:01:28require "#{File.expand_path(File.join(File.dirname(File.expand_path(__FILE__)), '..', '..', '..', 'spec_helper'))}"
こうだな
長大なファイルパスを記述するのが面倒だから spec_helper を使おうと思ってる人には逆に憂鬱かもしれん
しかしこれ1行で済むとも言えるが
0116デフォルトの名無しさん
2009/05/21(木) 08:04:42[*1..10].sample(5)
[*1..1_000_000].sample(1000)
0117デフォルトの名無しさん
2009/05/21(木) 08:09:23なんでわざわざ同じことを何回も繰り返す?
require File.expand_path('../../../../spec_helper', __FILE__)
0118デフォルトの名無しさん
2009/05/21(木) 09:32:24現在は File.exppand_path して File.dirname されているということを知ってる人がどれだけいるのやら
つまり、以下の4つは同じように /full/path/basedir/dir/file を返す
File.expand_path('dir/file', '/full/path/basedir')) # マニュアルを素直に読む場合、第2引数はフルパス
File.expand_path('dir/file', 'basedir'))
File.expand_path('dir/file', File.dirname(File.expand_path('file_in_basedir'))))
File.expand_path('dir/file', 'file_in_basedir'))
というか、このへんは実験終了と称して次のバージョンくらいでぽっと無くなりそうで嫌だ
0119デフォルトの名無しさん
2009/05/21(木) 11:40:41require File.join(File.dirname(__FILE__), '../../../spec_helper')
でも確かに、spec_helper.rbを自動or独自メソッドで読んでくれれば一番早いとは思う
0120デフォルトの名無しさん
2009/05/21(木) 12:08:01そういったライブラリはありますか?
0121デフォルトの名無しさん
2009/05/21(木) 12:20:56irb> require 'zlib'
irb> str = "プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
【Ruby1.9.1 は従来版とは異なる部分も多く、書籍や解説やライブラリのサポートがまだありません】
【自力で解決できない壁で悩むことのない最新安定版の Ruby1.8.7 での学習をお勧めします】
※1.8.7 は 1.8 系と 1.9 系の橋渡しをするためのリリースで、1.9 系 の便利新機能の一部が利用可能です"
irb> p str.size
560
irb> z = Zlib::Deflate.deflate(str)
irb> p z.size
375
こういう話ではなく?
0122デフォルトの名無しさん
2009/05/21(木) 12:53:49ありがとうございます。zlibを調べてみますね。
0123デフォルトの名無しさん
2009/05/21(木) 13:31:52>>87をお願いします。
0124デフォルトの名無しさん
2009/05/21(木) 13:48:27socket_server.rb はライブラリではなく単なるアプリケーションで、同じページの
server_client.rb の次に説明されてる
0125デフォルトの名無しさん
2009/05/21(木) 16:16:25しかし、NetBeansの "rspecテスト"からrspecを起動した場合だけテストに失敗してしまいます。
コマンドプロンプトから spec spec/hello_spec.rb では問題ないのですし、直接 ruby hello.rbでも問題ないです。
warningの文字列で、テストしているので起動時の "-w" をとれば成功するようになるのですが、
コマンドプロンプトからは -w をつけても問題ないのが気になります。
'my script should have no errors or warnings' FAILED
expected not: =~ /warning/n,
got: "(Rubyインストールディレクトリ)/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:138: warning: d:/my_home/.gem/ruby/1.8:(Rubyインストールディレクトリ)/lib/ruby/gems/1.8/specifications: Invalid argument\nHelloWorld\n"
./spec/hello_spec.rb:15:
./spec/hello_spec.rb:13:in `chdir'
./spec/hello_spec.rb:13:
hello_spec.rbのソース
require File.join(File.dirname(__FILE__), '/spec_helper.rb')
describe "my script" do
before do
@bin_path = File.join(File.dirname(__FILE__), "/../hello.rb")
end
it "should have no errors or warnings" do
pending "Hangs on JRuby" if PLATFORM =~ /java/
Dir.chdir(File.join(File.dirname(__FILE__), "/../")) do
output = `ruby -w #{@bin_path} --help 2>&1`
output.should_not =~ /warning/n
output.should_not =~ /Error/n
end
end
end
0126デフォルトの名無しさん
2009/05/21(木) 16:23:380127デフォルトの名無しさん
2009/05/21(木) 16:35:42さんきゅう。
同時に、「SocketServerというクラスがリファレンスにないぞ・・・」と思って
いましたが、これも下の socket_server.rb で定義していたんですね。
納得。
0128デフォルトの名無しさん
2009/05/21(木) 17:06:27推測だが、コマンドプロンプトとNetBeansが
それぞれ違う場所にインストールされたrubyを使っていて、それで何かの問題が起こっているのでは?
実際にsource_index.rbの138行目見れば何か分かるかもよ
>>126
あるよ
0129125
2009/05/21(木) 18:40:11正規表現のマッチャみたいです。
>>128
ありがとうさんです。
source_index.rb見てても何故かよーわからんくて、
使われているのがNetBeans標準のjrubyでなくちゃんとMatzRubyにしたよなー、
と思って設定を見直していたころ、gemパスがバグっていたことになっていたことに気づきました。
1行1パスなのに、何故か、
/my_home/.gem/ruby/1.8:(Rubyインストールディレクトリ)/lib/ruby/gems/1.8
と : で区切って2つパスが記述してありました…(´・ω・`)
削除して、/my_home/.gem/ruby/1.8 だけにしたところ、
問題なく動きました!
今思うと、source_index.rbはの該当行はgemパスの処理のところでした。
おかげさまで、無事に解決いたしました。
ありがとうございました。
0130デフォルトの名無しさん
2009/05/21(木) 19:38:56[*1..10]も1_000_000も知らなかった
前者のはRange#to_aと優劣あるんだろうか
0131デフォルトの名無しさん
2009/05/21(木) 19:44:56Thx
ごめんなさい。未だ試してないです。
0132デフォルトの名無しさん
2009/05/22(金) 00:16:37> File.expand_path の第2引数の扱いは undocumented だからな
Converts a pathname to an absolute pathname. Relative paths are
referenced from the current working directory of the process unless
<i>dir_string</i> is given, in which case it will be used as the
starting point.
「dir_stringを始点として絶対パスに展開する」とちゃんと書いてあるだろ。
> 現在は File.exppand_path して File.dirname されているということを知ってる人がどれだけいるのやら
勝手にdirnameしてるわけではなくて、>>117は>>114より'..'が一つ多い。
0133デフォルトの名無しさん
2009/05/22(金) 00:18:05[*1..10]のほうが(1..10).to_aより短い。
遅いけどな。
0134デフォルトの名無しさん
2009/05/22(金) 05:39:26普通に ssh://user@host と指定しただけでは ~/.ssh 下しか探さないみたい。
Net::SSH は鍵を指定できたんだけど。。
0135デフォルトの名無しさん
2009/05/22(金) 15:46:03eRubyで書かれたファイルの中に
eRubyで書かれたファイルを埋め込みたい
なんか出来そうな気がするのだけど
イメージがまとまらないので、できるのなら教えてほしい。
具体的な運用としては
Apacheで*.rhtmlのファイルをeRubyを通すように設定したサーバで
運用したいと思っている。
で、ページを構成する細かい部品をeRubyで書いて
そのレイアウトをeRubyで定義できないかな〜って感じです。
0136デフォルトの名無しさん
2009/05/22(金) 16:03:52<%= ERB.new(File.open(filename).read).result %>
じゃダメなんだっけ?
0137デフォルトの名無しさん
2009/05/22(金) 16:09:11日本語マニュアル不備だよね
基本の添付ライブラリのマニュアルが英語とかなにそれ
0138デフォルトの名無しさん
2009/05/22(金) 16:35:47それでいけました
ただ、単にERBオブジェクト作ってあげるだけでよかたんか。
これで、ヒャッホ〜イ!できそうです。ありがとう。
0139デフォルトの名無しさん
2009/05/22(金) 16:50:58サンクス
数文字程度長いぐらいならわかりやすいほうが好みだから
[*1..10]を選ぶ理由はなさそうだ
0140デフォルトの名無しさん
2009/05/22(金) 17:42:51ri File.expand_path
0141140
2009/05/22(金) 17:44:48ソースから抜き出してるから、日本語版を作るとなると
ソースに日本語でドキュメントを書くか、
自動生成を諦めるかになるのかな。
0142デフォルトの名無しさん
2009/05/22(金) 17:46:350143デフォルトの名無しさん
2009/05/22(金) 17:49:560144デフォルトの名無しさん
2009/05/22(金) 17:55:05スクリプトの話?本体の話?
前者はライブラリがある
0145デフォルトの名無しさん
2009/05/22(金) 17:56:24第2引数は /path/to/file を渡しても /path/to/ とみなして処理される
相対パスを渡しても、絶対パスに変換したあとで基点とみなされる
startint point という語にそれだけの処理の意味を任せるのは初耳だ
0146デフォルトの名無しさん
2009/05/22(金) 18:16:07日本語版のリファレンスにはReFeというツールが付属していてだな
0147デフォルトの名無しさん
2009/05/22(金) 18:30:33> 第2引数は /path/to/file を渡しても /path/to/ とみなして処理される
違う。あやふやな知識で書くより、ちゃんと試してみることをすすめる。
File.expand_path("foo", "/path/to/file") #=> "/path/to/file/foo"
File.expand_path("foo", "/path/to/") #=> "/path/to/foo"
File.expand_path("../foo", "/path/to/file") #=> "/path/to/foo"
File.expand_path("../foo", "/path/to/") #=> "/path/foo"
> 相対パスを渡しても、絶対パスに変換したあとで基点とみなされる
> startint point という語にそれだけの処理の意味を任せるのは初耳だ
これも違う。重要なのは戻り値は絶対パスだということ。
File.expand_path("foo", "path") が "path/foo" だったら絶対パ
スじゃないだろ? 絶対パスを返すという仕様が前提なんだから、相
対パスは他にどう扱いようがあるというんだ。
0148デフォルトの名無しさん
2009/05/22(金) 18:50:06ruby-gettext-packageは知ってる。
本体の出力メッセージとかの話。
0149デフォルトの名無しさん
2009/05/22(金) 18:55:53Ruby's ライセンスではなくGPLで配布する必要が生じるかも。
0150デフォルトの名無しさん
2009/05/22(金) 18:56:190151デフォルトの名無しさん
2009/05/22(金) 19:01:060152デフォルトの名無しさん
2009/05/22(金) 19:16:33翻訳するとかえってめんどくさいことになりそうな
0153デフォルトの名無しさん
2009/05/22(金) 19:23:190154デフォルトの名無しさん
2009/05/22(金) 19:28:510155デフォルトの名無しさん
2009/05/22(金) 19:40:550156デフォルトの名無しさん
2009/05/23(土) 02:19:17最初の@はインスタンス変数で、右辺のifは修飾子だと思うのですが、
()内の「?」の意味が分かりません。
これがは文字コードリテラルとは思えませんし・・・
どういう意味(役割り)なのでしょうか?
0157デフォルトの名無しさん
2009/05/23(土) 02:24:440158デフォルトの名無しさん
2009/05/23(土) 02:48:30しかしなんというか、不慣れな時期にそのコードというのは運が悪いな
せめて @port = port unless port.nil? と書いてほしい
0159デフォルトの名無しさん
2009/05/23(土) 02:53:02ttp://www.ruby-lang.org/ja/man/html/_BBFAB6E7B9BDC2A4.html#a.bc.b1.ca.cc.bb.d2
↑これ、ぶっちゃけ不正確じゃね?
0160デフォルトの名無しさん
2009/05/23(土) 02:59:45さんきゅうです。
つまり if( !port.nil? ) というのは、「portが無効でないなら(不活性でないなら)〜」
ということでOKですか?
0161デフォルトの名無しさん
2009/05/23(土) 03:05:25if( !port.ni? ) → if()
0162デフォルトの名無しさん
2009/05/23(土) 03:07:57if( !port.ni? ) → if( !port.nil? == true ) → if( port.nil? == false )
で理解してくらはい。
port.nil? は boolean を返すことが期待されてるメソッドです(たぶん)。
0163デフォルトの名無しさん
2009/05/23(土) 05:05:12あーでも結構使ってるなー
>>156
A if COND という構造だということはわかってるんだよね
if はメソッドではなく制御構造だから、このカッコは引数のカッコではなく式を作る「まとめカッコ」だ
中身1つだけだから、本当はこのカッコは必要ない
で、最初の ! は否定の NOT だ
ttp://www.ruby-lang.org/ja/man/html/_B1E9BBBBBBD2BCB0.html#not
直後にあるものの真偽の概念を逆転する
つぎの port はなんらかのローカル変数またはメソッド呼び出しで、
ドットで繋がってる nil? は port の返り値のクラスの nil? というメソッド
port のクラスで再定義されていないのなら、それは Object#nil? で、オブジェクトが nil である場合に true を返す
まとめると、
「port の返り値が nli でない場合に、@port に port の返り値を代入する」
となる
0164デフォルトの名無しさん
2009/05/23(土) 05:14:20@port = port unless port
と書くけどな
・ port に false が入る可能性があって、それは nil とは違う処理が必要
・ port が nil であるというのが何か重要なサインであってソース読み下し上目立たせたい
というのでない限り、今回でいうところの
「port に何か入ってたら @port に入れとく」
というフツーの意図である限り、 Ruby では unless を使う
0165デフォルトの名無しさん
2009/05/23(土) 05:35:310166デフォルトの名無しさん
2009/05/23(土) 05:58:350167デフォルトの名無しさん
2009/05/23(土) 10:07:30def html
html = String.new
…
return html
end
というように、メソッド内のローカル変数名とそのメソッドの名称が全く同じなのって、ある程度は紛らわしいですよね
できれば避けるべきなんでしょうか?
0168デフォルトの名無しさん
2009/05/23(土) 10:58:18メソッド内1行目でローカル変数として定義されてれば読んでて混乱はしないと思う
if (html = init_data) then みたいにどっかの文の途中でこっそり変数定義を使ってることがあるとか、
変数とメソッドを混ぜて使い倒してる処理があるとか、そういうのが1ヶ所でもあれば注意深く読む
0169デフォルトの名無しさん
2009/05/23(土) 11:28:11# afio - manipulate archives and files
COMMAND = "afio -oZ -"
IO.popen(COMMAND, "r+") do |src|
Find.find("/etc") do |f|
src.puts(f.chomp)
end
src.close_write
File.open("myArchive.afz", "w") {|dst| dst.write(src.read)}
end
afioコマンドが pipe_wait になって終了しません。
何が悪いのでしょうか?
0170169
2009/05/23(土) 11:49:24$ find /etc | afio -oZ - 1>./myArchive.afz
とやれば、何も問題なく動作するんです。
ワケワカメで頭が破裂しそうです ><
0171デフォルトの名無しさん
2009/05/23(土) 11:52:440172169
2009/05/23(土) 13:22:11なにやらヘッダらしきものが書かれていて、その後ろにgzipで圧縮されたバイナリがずらーと並んでいる感じです。
このバイナリファイルをハッキングして、自分でライブラリを書いてしまえばいいと思いました。
外部のコマンドに投げるよりはよりキレイに書けるとおもいまつ。
ありがとうございました。
0173デフォルトの名無しさん
2009/05/23(土) 13:25:37原因は>>171の通りだろう。
アーカイブデータをなんか加工したいというんでなければ、直接書き出させた方がよい。
あとFind.findからyieldされるパス名はchompする必要はない、というかしてはいけない。
COMMAND = "afio -oZ myArchive.afz"
IO.popen(COMMAND, "w") do |src|
Find.find("/etc") {|f| src.puts(f)}
end
0174デフォルトの名無しさん
2009/05/23(土) 13:39:58manpageによるとcpioフォーマットだな
Except in special cases discussed below, afio will create archives
with the same format as ASCII cpio(1) archives.
以下に述べる特殊なケースをのぞいて、afioはASCII cpio(1)アーカイブと同じ
フォーマットでアーカイブを作成する。
When creating an archive, the `large ASCII' header is used by afio to
cover the following situations:
アーカイブを作成する際、以下の場合は「large ASCII」ヘッダが使用される。
o A file has a size larger than 2 GB
・ 2GBよりも大きいファイル
o The archive contains more than 64K files which have hard links
・アーカイブ中のハードリンクが64Kを越えるファイル
o A file, directory, or special file has a UID or GID value larger
than 65535.
・65535より大きいUIDやGIDを持つファイル、ディレクトリ、特殊ファイル
0175169
2009/05/23(土) 21:41:37納得したらもう寝ます。
>>171にある、STDINからの入力を読み終わる前に、STDOUTに出力してしまうということがあり得るのでしょうか。
全て入力した後に IO#close_write も呼びましたし、他に意識することって何でしょうか。
Pythonの os.popen2 で同様の事をやってみたのですが、あっさりうまくいって
クソワロタ状態です (;_;)
>>173
ファイルシステムに頼らずにゴニョゴニョしたいので、開いたままで
何とか出来ないかと考えておりました。... 無理そうなら他の方法も探しますが。
> あとFind.findからyieldされるパス名はchompする必要はない、
> というかしてはいけない。
すみません、確かにchompする必要はありませんでしたね。
でも「してはいけない」というのは何か致命的にまずい問題があるのでしょうか。
以上、よろしくお願いします。
0176デフォルトの名無しさん
2009/05/23(土) 23:24:38下記は受信サーバー側のSocket通信の記述で、クライアントからの
信号s(オブジェクト)を受信したらRubyを終了したいのですが・・・
while true
Thread.start(gs.accept) do |s|
print(s, " is accepted\n")
puts(s.gets)
s.close
break # ここでは無効
end
end
どう変更すべきでしょうか?
0177169
2009/05/24(日) 00:19:36でも
IO.popen("cat | afio -oZ -")
のように、catコマンドをクッションにしてみたらうまくいきました。
なんでだろうね。
バッファの関係??
朝起きたらlinux板でも行って聞いてみます。。もう疲れた。
0178デフォルトの名無しさん
2009/05/24(日) 01:15:44> >>171にある、STDINからの入力を読み終わる前に、STDOUTに出力してしまうということがあり得るのでしょうか。
もちろんあり得る。それはプログラムの構造次第。afioの場合ファイル名を受
け取れば処理できるんだから、一つ分出力してもなにも不思議じゃない。
>>177は、catでバッファリングされてclose_writeされるまでafioに何も渡されて
ないんだろ。
> >>173
> ファイルシステムに頼らずにゴニョゴニョしたいので、開いたままで
> 何とか出来ないかと考えておりました。... 無理そうなら他の方法も探しますが。
書き込みと読み込みでThreadをわける。
IO.popen(COMMAND, "r+") do |src|
Thread.start do
Find.find("/etc") do |f|
src.puts(f.chomp)
end
src.close_write
end
File.open("myArchive.afz", "w") {|dst| dst.write(src.read)}
end
> でも「してはいけない」というのは何か致命的にまずい問題があるのでしょうか。
"\n"で終わるファイル名を正しく扱えない。
0179デフォルトの名無しさん
2009/05/24(日) 01:19:36mth = Thread.current
while true
Thread.start(gs.accept) do |s|
print(s, " is accepted\n")
puts(s.gets)
s.close
mth.raise(SystemExit)
end
end
0180デフォルトの名無しさん
2009/05/24(日) 01:32:45gsってTCPServer?
サンプルをコピーしたとするとwhileで囲う必要もスレッドを生成する必要も無いと思う
s = gs.accept
print(s, " is accepted\n")
puts(s.gets)
exit
0181176
2009/05/24(日) 02:49:36Thx 確かにwhile文無しでもOKでした。
今回は ttp://www.ftnk.jp/~fumi/cl/2007-11-24-1.html
を参考にしました。
すいません。もう一つ質問です。
上記HPのクライアント側を改変して2行のテキスト「memo.txt」を読み込み
サーバーに渡すように
data = File.read("memo.txt")
puts data # チェック用
s.puts(data)
を書きました。
クライアント側では2行で表示されるのですが、サーバーの表示 puts(s.gets)
では最初の1行目のみが表示されます。
これは何故でしょうか?
0182デフォルトの名無しさん
2009/05/24(日) 03:57:22何か気をつける方法ってないのでしょうか?
Rubyでは全部オブジェクトってのはわかっているつもりなのですが…。
#!ruby -Ku
a = "hage"
b = a
b << "UNKO==!!"
def change_string(s)
s << "(((^^)))))"
end
change_string(b)
puts a, b
結果:
hageUNKO==!!(((^^)))))
hageUNKO==!!(((^^)))))
0183デフォルトの名無しさん
2009/05/24(日) 04:50:17IO#gets が何をするメソッドなのかマニュアルで調べてみ
>>182
それって別に文字列に限った話じゃないよね
配列、ハッシュ、その他のオブジェクト、なんでも当てはまる
オリジナルでは無くてコピーが必要なら必ずdup,clone、を徹底するしかないかな
0185デフォルトの名無しさん
2009/05/24(日) 05:45:31Rubyのあらゆる変数(や定数)はただの参照タグだ
a = HogeObject.new は HogeObject.new の処理の最後を辿って(return してた)そのオブジェクトに存在を許して
それに a という参照タグを1個つけるという行為
b = a は a の処理の最後を辿って、つまりは a の返り値のオブジェクト、に b という参照タグを追加する行為
Ruby スクリプトは変数の名前を後生大事に覚えてるわけじゃない
Rubyはスクリプトのそれが変数名だとわかったら、その変数が参照している先にあるオブジェクト
(の保管場所を表す数値「オブジェクトID」)だけを記憶する
だから、
a = なにか
b = a
と書いた時点で、変数 a も変数 b も全く同一のオブジェクトを指す(つまり、一般的にはあまり意味がない)
a = "なにか"
p a.object_id
b = a
p b.object_id
p a.object_id == b.object_id
0186182
2009/05/24(日) 05:51:03せっかく説明してくださって申し訳ないのですが
原理をわかってて言ってるのです…(´・ω・`)
他の言語のつもりで書いちゃうと、ついバグを埋め込んでしまう
まあ、ユニットテストしっかりしろってことになるのだと思いますが…。
0187デフォルトの名無しさん
2009/05/24(日) 05:52:21その既存のオブジェクトを破壊しないような方法を意図的に使う
a = "hage"
b = a + "ADD"
def change_string(s)
s + "CHINGE!"
end
c = change_string(a)
p a, b, c
結果:
"hage"
"hageADD"
"hageCHINGE!"
オブジェクトを「足して」新たなオブジェクトを作るようなメソッドが提供されていなかったらどうするか、というのなら
そりゃ>>183の言うようにオブジェクト内容自体を複製して新たなオブジェクトを作る dup や clone を使うしかあんめえ
0188デフォルトの名無しさん
2009/05/24(日) 05:54:44「わかってない」と思う
わかってるのなら“絶対に間違えない”から
逆にいうと、オブジェクトと変数の関係を理解するまではよーわからんバグで悩まされて
変数は安全のためにと称して全部 initialize やメソッド定義の 1行目で dup することになるんだけどな
0190182
2009/05/24(日) 06:00:14>>187
ああ、なるほど、確かに既存のオブジェクトを破壊しないでコピーされる場合は、OKですね。
>>188
メソッドなどで渡された引数とかなるべくdupするわけですか。なるほど。
0191デフォルトの名無しさん
2009/05/24(日) 06:01:54いいえ、理解してないんです
「他言語を使いこなす俺がこれごときを理解できていないはずがない」というようにプライドが邪魔をしてるだけです
本当は理解してないのを見なかったことにして「他の言語と違って結構ハマる」と問題を差し替えているのです
これは特に目新しい概念というわけでもありません
きちんと理解しましょう
0192デフォルトの名無しさん
2009/05/24(日) 06:27:16メモリでどういう状態になってるのかがとっても気になる
Ruby なら同じものを使い倒してるということが感覚的にわかって安心できるんだけれど
0193デフォルトの名無しさん
2009/05/24(日) 06:41:45よく読め
dup なんてまずしない
しなければならないときはもちろんするが、普通はしないで済む方法を考える
「とりあえず dup」をしないとわけがわからなくなる初心者は dup する、と言ってるだけ
いい解説に出会えない独学系初心者の多くが通る無駄道ではあるが、
こんな期間は短いほどいいし、これに嵌る前に回避できれば最高だ
0194デフォルトの名無しさん
2009/05/24(日) 06:44:59「copy on write」とかいってる時点でまるでわかってない
0195デフォルトの名無しさん
2009/05/24(日) 07:51:49>というように、メソッド内のローカル変数名とそのメソッドの名称が全く同じなのって、ある程度は紛らわしいですよね
>できれば避けるべきなんでしょうか?
心配なら変数名を _html とかに変えればオK
>>194
ワハハ、その通りだ
0196デフォルトの名無しさん
2009/05/24(日) 08:09:06他言語の経験が短い俺でも、たまにdupし忘れることがある
結局は慣れだろう
ただ、時々ではなくて頻繁に間違えるというのであれば、ちゃんと理解できていないのかもしれない
実際に間違えたコード例を晒してもらえれば、もう少し具体的なアドバイスができるかも
0197182
2009/05/24(日) 08:35:40うーん?頼む!
2chでよくあるのだけど、「コイツはアホ」とか「わかってない」とか言う時は「何故か」を明らかにしてほしいです。
言っている本人は本当にそうなのか判断できず、煽りかと思ってしまうので。
"copy on write"は書き換えたら、コピーされるという意味の用語です。
この言い方は一般的じゃないのかな?
Delphiの組み込みのstringの機能がそう呼ばれているわけなんですが。
(ただ、この辺はけっこうマジック的な扱いで、
Delphiでも文字列と似たような振る舞いをする動的配列では、
copy on writeはしなかったりとDelphiの中でもけっこう戸惑う扱いです)
>193
慣れたら、dupしないように書く、ということでしょうか?
0198182
2009/05/24(日) 08:40:25オブジェクトのメソッド呼び出しで copy on write がどうのって確かに変だよなー。
そもそも、組み込み型じゃないん(というよりコンパイラが特別扱いしてない)だし
とはいえ、それよりも、
俺が聞きたいのは、どうすれば気をつけられるんでしょうか?ってことなんですが、
その答えは「理解しろ」ってことなんでしょうから、「お前はわかってない」なんていわれるんですよね…。
0199デフォルトの名無しさん
2009/05/24(日) 08:54:52無駄に破壊的メソッドを使わないってだけでいいんではないかと思った。
0200デフォルトの名無しさん
2009/05/24(日) 09:02:24これができない場合は無理
0201デフォルトの名無しさん
2009/05/24(日) 09:10:340202196
2009/05/24(日) 09:14:13>どうすれば気をつけられるんでしょうか?
実際に間違えてるコードを見ないと、何とも言えないが
とりあえず破壊的メソッドと非破壊的メソッドの違いを意識することは大事
あと copy on write に関しては、「Rubyにその概念はない」としか言えない
なぜなら
破壊的メソッド → オブジェクトの内容を直接書き換える(オブジェクトのコピーはしない)
非破壊的メソッド → 元のオブジェクトのデータを読んで、それを元に新しいオブジェクトを生成して返す
であって、どちらの場合も「書き換えたときにコピーする」という動作はしてないから
"abc\n".chomp! # 文字列 "abc\n" の内容を変更する(新しい文字列は生成しない)
"abc\n".chomp # 文字列 "abc\n" を元に、新しい文字列 "abc" を生成して返す
0203デフォルトの名無しさん
2009/05/24(日) 09:15:54・破壊的なメソッドには大概 ! とか = とか付いてるから目安にして気をつけてね
としか
0204デフォルトの名無しさん
2009/05/24(日) 10:06:47てかcowは実装の詳細であってプログラマからは掩蔽されるものだ
0205デフォルトの名無しさん
2009/05/24(日) 10:09:22きみはもしかしたらcopy on writeについては理解しているのかもしれないけど
それがRubyとはまったく関係ないことが理解できてない
0206デフォルトの名無しさん
2009/05/24(日) 10:13:21わけわからんようにはなりそうだけどね。
0207デフォルトの名無しさん
2009/05/24(日) 10:28:53どっかでの変更がリアルタイムに反映されるなにやら便利な配列として扱うような気もする
ともあれ、目的を確定させた上で処理すべきだな
とりあえず○○するとかそういうのはありえん
0208169
2009/05/24(日) 13:03:40|
\ __ /
_ (m) _ピコーン
|ミ|
/ `´ \
('A`)
ノヽノヽ
くく
そうか、子プロセスが終了するまで親プロセスはwait状態になるのか!
IO.popen("ruby -e 'sleep(30)'", "w") do |io|
p io.puts("my message") #=> nil
puts "ok, all finished !"
# After a few seconds...
p io.close_write #=> nil
puts "closed?"
end
うわー、完全に失念していましたよ。
wait状態だから、実際には IO#.close_write がコールされずに止まっていたわけか。
Threadを生成してやってみたらうまくいきました!
本当にありがとうございましたです。
0209デフォルトの名無しさん
2009/05/24(日) 14:56:40system(3) とかだと子が終わるのを待つけど、popenは同時に実行するためのAPI。
その例だと、何も読み込まない ruby -e 'sleep(30)' に io.puts("my message") で
書き込もうとして固まってるわけ。
0210デフォルトの名無しさん
2009/05/24(日) 15:58:430211169
2009/05/24(日) 16:23:30IO.popenでafioコマンドにパイプを確立し、IO#.writeで標準入力に読み込ませる。
afio君は標準入力から来たファイル名を開いて、適切なフォーマットで標準出力に吐き出そうとする。
afio「さあバイナリができましたわよ。もらってちょうだい!随時出力するから。」
しかしreadされないため、
afio「なにやってんの!早くreadしてよ。わたしのバッファサイズはそんなに大きくないのよ。
メモリだって有限なんだから。あなたがreadしない限りいつまでもwaitするわ!」
ということなんですね。
0212デフォルトの名無しさん
2009/05/24(日) 18:00:14railsでrake db:migrateを行うと mysqlが以下のエラーを吐くのですが、
>rake db:migrate
(in d:/web/redmine/redmine)
== 1 Setup: migrating =========================================================
-- create_table("attachments", {:force=>true})
rake aborted!
undefined method `each' for #<Mysql:0x803e550>
(See full trace by running task with --trace)
これって、MySQL 5.1はWindowsだとダメヨという既知な問題なのでしょうか?
xamppごとMySQL 5.1を入れてしまっているもので、MySQL 5.0で上書きしてよいものかどうか・・・
Nabble - RubyOnRails Users - rake aborted! undefined method `each' for #<Mysql:
http://www.nabble.com/rake-aborted!-undefined-method-%60each%27-for--%3CMysql:-td20760472.html
0213212
2009/05/24(日) 19:08:38無事にdb:migrateできました。
5.0のDLLだろうと思うので不安ではあるのですが、様子を見ながら使ってみようと思います。
>The problem is that libmysql.dll shipped with Mysql doesn't play well
> with ruby 2.2..
> The solution is to download the libmysql.dll from:
> http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/libmySQL.dll
> and save this in your ruby bin directory
ありがとうございました。
0214デフォルトの名無しさん
2009/05/24(日) 23:12:09【Ruby】Ruby on Rails Part7
0215デフォルトの名無しさん
2009/05/24(日) 23:24:50たとえば
x=("abc123+456def").split(/??書き方不明/)
とすると
x[0]="abc"
x[1]="123"
x[2]="+"
x[3]="456"
x[4]="def"
みたいにしたいのですが。
0216デフォルトの名無しさん
2009/05/24(日) 23:44:58「文字種」の定義次第では可能。
0217デフォルトの名無しさん
2009/05/25(月) 00:02:58たとえば、シンプルでいいなら下記のようなことはできる(splitじゃないけど)
"abc123+456def".scan(/[a-zA-Z]+|\d+|\W+/) #=> ["abc", "123", "+", "456", "def"]
んだから、>>216の言うとおり「文字種」を定義すれば可能。
で、それを定義してるUnicodeブロックなるものもあるらしい
ttp://module.jp/blog/regex_unicode_prop.html
Rubyでは鬼車採用の1.9以降、になるのかな?
詳しくないけど、参考になれば
0218デフォルトの名無しさん
2009/05/25(月) 03:58:480219デフォルトの名無しさん
2009/05/25(月) 04:05:30できません
0220デフォルトの名無しさん
2009/05/25(月) 05:24:540221デフォルトの名無しさん
2009/05/25(月) 08:25:31…う、うぜえ
0222デフォルトの名無しさん
2009/05/25(月) 12:13:120223デフォルトの名無しさん
2009/05/25(月) 12:16:27Cのメモリマネージャから取れるようにしておけばいいのに
無理な環境は0にしておいて
0224デフォルトの名無しさん
2009/05/25(月) 12:29:00あんま多用して欲しくないんだよ
たぶん
0225デフォルトの名無しさん
2009/05/25(月) 15:11:55に相当する GnomeVFS for Ruby のメソッドをご存じの方いましたら教えてください。
※ http://www.pygtk.org/pygnomevfs/gnomevfs-functions.html#function-gnomevfs--get_file_info
0226デフォルトの名無しさん
2009/05/25(月) 15:31:280227デフォルトの名無しさん
2009/05/25(月) 15:34:51File.statじゃあかんの?
gtkとかgnomeとかってAPIコロコロ変えるから嫌い
0228デフォルトの名無しさん
2009/05/25(月) 15:38:36VFSごしにウンタラカンタラしたいのだろう
0229デフォルトの名無しさん
2009/05/25(月) 15:41:440230デフォルトの名無しさん
2009/05/25(月) 15:48:04asin = doc.at('ASIN').inner_text
こんなのだろ
doc.at('ASIN') が nil になる可能性があるから
tag_asin = doc.at('ASIN')
asin = if tag_asin then tag_asin.inner_text else nil end
みたいに場合分けで書かなければいけない
こういうのってなんかイイ書き方ないもんかね
0231デフォルトの名無しさん
2009/05/25(月) 15:53:09>>73-86
0232デフォルトの名無しさん
2009/05/25(月) 18:23:28てんきゅう
0233デフォルトの名無しさん
2009/05/25(月) 19:07:46>scan(/[a-zA-Z]+|\d+|\W+/)
ありがとうございます。
scan にこんな使い方があったんですね。
こんな正規表現の記法は知りませんでした。
あまり難しいことはまだ無理なので、これでいきます。
0234デフォルトの名無しさん
2009/05/25(月) 19:45:24疲れてるときは全然読めないな
何言ってるかさっぱりわからん
用途別にまとめてくれてると頭に入ると思う
0235デフォルトの名無しさん
2009/05/25(月) 19:54:10一応補足しておくと、 \W とかの文字クラス表現は中身を確認しておいた方がいいよ
例示だから適当でいいんだけど、>>217のは "_" とかスルーするね。
また、改行やスペースの扱いとか、意図通りに動かすためにはちょっと気をつけて。
0236デフォルトの名無しさん
2009/05/25(月) 23:24:11StringScannerとかを使って自力で解析器を書くべきかもしれない
0237デフォルトの名無しさん
2009/05/27(水) 14:06:21トップレベルにて定義されたメソッドの一覧を取得する方法はありますか?
toplevel_methods = Object.private_instance_methods
toplevel_methods -= Kernel.private_instance_methods
で、大体は絞り込めるのですが、トップレベルに未知のモジュールが include される
場合などを考えるとこのやり方では心もとないです。
トップレベルで定義されたメソッドだけをきれいに抽出する方法はないものでしょうか。
0238デフォルトの名無しさん
2009/05/27(水) 15:00:51* 1.8 系だと initialize も含まれる
* ふつうに、
class Object
def bar
end
private :bar
end
とした場合との区別がつかない
0239237
2009/05/27(水) 15:25:23あれこれ考えた結果、無理にトップレベルでやろうとするのが間違いと気付きました。
モジュールでラップして MyModule.instance_methods(false) で済みますね
お騒がせしました。
0240デフォルトの名無しさん
2009/05/27(水) 20:50:38実装例を見つけられませんでした。とりあえず書いてみたのですが問題があります。
1.ヒットした場合にWebサーバにアクセスしないでブラウザに戻す方法がわからない。
2.WEBrick::HTTPResponseのインスタンスを単純に復元しただけでは上手く表示できない。
#/usr/bin/ruby 1.8.7p72 webrick 1.3.1 winXP
require 'webrick'
require 'webrick/httpproxy'
db = Hash.new()
rcHandler = Proc.new() do |req, res|
if db.key?(req.unparsed_uri)
res = db[req.unparsed_uri]
end
end
handler = Proc.new() do |req, res|
db[req.unparsed_uri] = res
end
config = {
:BindAddress => '127.0.0.1',
:Port => 8080,
:ProxyContentHandler => handler,
:RequestCallback => rcHandler
}
s = WEBrick::HTTPProxyServer.new(config)
[:INT, :TERM].each{|sig| Signal.trap(sig){s.shutdown}}
s.start
実装例とかヒントをいただけたらありがたく思います。
0241デフォルトの名無しさん
2009/05/27(水) 21:09:520242デフォルトの名無しさん
2009/05/27(水) 21:56:44requestは無理だったきがす
0243デフォルトの名無しさん
2009/05/27(水) 22:14:41俺がやってるのはこんな感じ
class MyProxyServer < WEBrick::HTTPProxyServer
def proxy_service(req,res)
if req.request_uri がキャッシュされてるなら
# キャッシュを読み込んでresにセット
else
super
# resをキャッシュファイルに保存
end
end
end
0244240
2009/05/27(水) 22:51:04なるほど、マイリマシタ。
RequestCallbackハンドラなんて要らなかったよう。
方向を間違えると収拾つかなくなるいい例ですね。
ありがとうございました。
0245240
2009/05/27(水) 22:56:46リクエストはRequestCallbackハンドラで変更可能だと思います。
一応、240のプログラムは完動品ですので、よかったら試してみてください。
どうもありがとう
0246デフォルトの名無しさん
2009/05/28(木) 14:16:14ねーよって言われるんですが、どうしたものでしょうか?
Windowsでのアップデートは失敗した覚えがないのですが…
> sudo gem update --system
Updating RubyGems...
Bulk updating Gem source index for: http://gems.rubyforge.org
Attempting remote update of rubygems-update
ERROR: While executing gem ... (Gem::GemNotFoundException)
Could not find rubygems-update (> 0) in any repository
環境:
・Ubuntu 8.04 LTS
・Ruby -v ruby 1.8.6 (2007-09-24 patchlevel 111) [i486-linux] (aptitudeで入れた)
・RubyGems 0.9.4 (aptitudeで入れた)
0247246
2009/05/28(木) 14:24:30恐れ入ります。
0248デフォルトの名無しさん
2009/05/28(木) 14:35:40Debianパッケージでrubygemをインストールするとrubygemのアップデートが実質不可能になるのでアンインストールすることをお勧め
まあ、そうするとDebianパッケージシステムで管理できない野良パッケージシステムができてしまうんだけど、
まあ、背に腹は変えられん
0249デフォルトの名無しさん
2009/05/28(木) 16:52:12みたいなのをもっと短くできんもんでしょうか?
array[0][:value].equal?('dog', 'cat')
みたいな感じに。rubyならできるような気がするのですが・・どなたか教えていただけるとうれしいです。
0250デフォルトの名無しさん
2009/05/28(木) 16:57:420251デフォルトの名無しさん
2009/05/28(木) 16:58:230252デフォルトの名無しさん
2009/05/28(木) 19:51:250253デフォルトの名無しさん
2009/05/28(木) 19:59:58when 'dog', 'cat'
end
じゃだめなの?
0254デフォルトの名無しさん
2009/05/28(木) 20:11:25>>249みたいなのは後置の if みたいなので1行で条件が書けることが望まれてるんだろう
0255デフォルトの名無しさん
2009/05/28(木) 20:15:34短くなってないじゃん。
>>254
case str when "dog","cat"; true; else; false; end
0256デフォルトの名無しさん
2009/05/28(木) 20:25:04Rubyからテキストファイル開くときにC言語のプログラムから読み書き禁止させたいんだけど、そういうことできるの?
C言語だと_fsopenてのがあるけど、RubyのFile.open にはそういう機能ないっぽいんだけど・・・
0257デフォルトの名無しさん
2009/05/28(木) 20:31:591行にまとめることができるというのと、1行で書けるというのには天と地ほどの差があるのだよ
0258デフォルトの名無しさん
2009/05/28(木) 20:41:16そうか?
少なくともこの場合、戻り値のある式であればいいんじゃね?
0259デフォルトの名無しさん
2009/05/28(木) 21:07:32メソッドの導入の是非についてのスレッドがML(えーごの)で出てますな。
# 何度めやら。
0260デフォルトの名無しさん
2009/05/28(木) 21:23:49_fsopen は C言語の機能ではない。
_fsopen はなんか「読み書き禁止」なんてしなくてむしろ共有読み書きをするっぽい。
Rubyでファイルの共有とか排他とかはFile#flock
0261デフォルトの名無しさん
2009/05/28(木) 21:25:11あってもいいんじゃないとか思うが、あんまり賛同されてなさそうな雰囲気
0262デフォルトの名無しさん
2009/05/28(木) 22:20:05(●´Д`) { {
0263デフォルトの名無しさん
2009/05/28(木) 23:29:10なんかそれ実際に使えるようにしたライブラリなかったっけ
どこかで見た記憶はあるんだけど、思い出せない
0264デフォルトの名無しさん
2009/05/29(金) 00:15:360265デフォルトの名無しさん
2009/05/29(金) 00:28:23ttp://facets.rubyforge.org/doc/api/core/classes/Kernel.html#M000425
0266249
2009/05/29(金) 00:47:11結局
['dog', 'cat'].include?(array[0][:value])
これがいいかな、と・・後置のif文なので。
in?みたいなメソッド、今のところは無いんですねぇ。
今MLで話になってるみたいですが、in?みたいなの導入のネガティブな点って何があるんでしょう?
0267デフォルトの名無しさん
2009/05/29(金) 01:10:58> これがいいかな、と
ぶっちゃけ、それしか出てないという気もw (caseはネタだろ)
でも、
> 後置のif文なので
ってのは、caseでもいけるっていう話で
> 今MLで話になってるみたいですが、in?みたいなの導入のネガティブな点って
これのことだろうな↓
ttp://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-core/23543?23446-23591
斜め読みでは、
「あったら便利だぜ」 vs 「んなもんKernelに入れるってのはどうなの」
って感じに見える。
過去にもあったんなら、もうちょっと丁寧な話もしてたのかな。
詳しい人の解説を期待してみたりして。
0268デフォルトの名無しさん
2009/05/29(金) 01:16:02* どこかの集合に含ま「れる」というのはメンバーの特性と言えるのか
* 実装は簡単だから自分の環境でやっとけばいいじゃん
* すべてのオブジェクトの名前空間を汚染してまで導入すべきもの?
などがあるようだ。
0269デフォルトの名無しさん
2009/05/29(金) 08:58:43SUGEEEEE! こんなライブラリがあったのか
今まで全然知らなかったんだけど、実はけっこう有名なライブラリ?
0270デフォルトの名無しさん
2009/05/29(金) 09:06:31わざわざそんなことやろうという人そのものが稀なので、それ以外の人にとってはさっぱり
0271デフォルトの名無しさん
2009/05/29(金) 12:54:490272デフォルトの名無しさん
2009/05/29(金) 13:12:300273デフォルトの名無しさん
2009/05/29(金) 13:22:19同感。
最近別言語から Ruby をはじめたんだけど、
有名アプリも少ないし、日本語の扱いや
Rails 以外だと Web が面倒だったり。開発環境も貧弱。
1.9 の非互換で騒がれていないものな。
PHP なら 4 → 5 で騒がれたけど。
1 日でできる blog くらいしか作ってないのか?という感じ。
0274デフォルトの名無しさん
2009/05/29(金) 13:28:11かつてのUnixユーザーがシェルスクリプト作りまくるのが日常だったように、
Rubyユーザーは自分用スクリプトを作りまくって日常を便利に過ごす
んが、まあ、これはこれで一部の人だろうな
最近作った・手直ししたもの挙げていけばアクティブユーザーの傾向が少しでも掴める?
0275デフォルトの名無しさん
2009/05/29(金) 13:34:17http://pc12.2ch.net/test/read.cgi/tech/1238194350/
0276デフォルトの名無しさん
2009/05/29(金) 13:41:13Rubyに関係ないスレのURL張られても困る
> 島根
> 島根
> 鳥取
> 島根
> 鳥取
> 島根
0277デフォルトの名無しさん
2009/05/29(金) 16:34:09と言いたいところだが、今のところRubyベースで有名なゲームは皆無に等しいな
RPGツクールのスクリプトで使われてはいるが
274の言うように日常のツールとして使うと超便利で、あと他には
* 大小問わずWebアプリケーション(CGIアプリケーション)を作りたいとき
* RADを使わずにGUIアプリを作りたいとき(WxRubyなどを使う)
* 簡単な数値・確率計算がしたいとき
なんかに使う
特にRakeの便利さは異常
俺はもうRakeなしでは快適なPCライフを送れない
>>273
Webアプリならそこそこ有名なのはあるよ。tDiaryとか
あとWeb周りが面倒だったのは昔の話で、今はWEBrickやRackがあるからむしろ楽なはず
0278デフォルトの名無しさん
2009/05/29(金) 16:50:24Rubyが表舞台に出てくるのは、Rubyが普及すれば普及するほど減るような気がしてならない
「シェルスクリプトって使ってる人いるんですか? シェルスクリプトのメジャーなアプリケーションってなんですか?」
という問いに答えにくいのとおそらく一緒になる
という空想
ある程度使えるようになれば普段で使えるじゃん、と気づく日が来る(ただしコンピュータ利用環境依存)んで、
初心者の人は肩肘張らずにダラダラやるといいと思う
質問ある方どうぞん
0279デフォルトの名無しさん
2009/05/29(金) 16:58:23ずっと Ruby スクリプトのまま時々呼ばれて便利に動いてる、みたいなのが個人的理想
UNIX文化に傾倒して夢見すぎかもしれないが、理想くらい楽しく行きたいと思う
0280デフォルトの名無しさん
2009/05/29(金) 18:25:30ゲームのスクリプトを生成したりとか、
他の言語のサポート用スクリプトにベターmakeなrakeもつかってる
0281デフォルトの名無しさん
2009/05/29(金) 21:20:18PerlやPHPの方が日本語の資料多いじゃん。
他に移行。
0282デフォルトの名無しさん
2009/05/29(金) 21:23:48ばいばーい。
0283デフォルトの名無しさん
2009/05/29(金) 23:26:24perlやphpが魅力的だと思うなら、お前にrubyは向いてないよ
0284デフォルトの名無しさん
2009/05/29(金) 23:38:150285デフォルトの名無しさん
2009/05/30(土) 00:33:300286デフォルトの名無しさん
2009/05/30(土) 01:01:240287デフォルトの名無しさん
2009/05/30(土) 03:14:26基本は使い捨てだよ。メンテ必要なのは向いてない。
0288デフォルトの名無しさん
2009/05/30(土) 05:45:29うらやましいよ
0289デフォルトの名無しさん
2009/05/30(土) 05:58:42PHPはドキュメントは豊富。これはPHP案件の時マジ助かった。
しかし、ちょっと踏み込むと全然ドキュメントなかったりする…
DateTimeクラス?とかドキュメントなくて、なきそうになった
2chでDateTimeについて質問したら、PHPがオブジェクト指向言語だと思うなよ、とか
あげくに、オブジェクト指向言語氏ねとか煽られるし。所詮その程度。
Perlは10年前にやったがモダンPerl覚える気ねえや…
モダンPerl憶えるくらいならRubyの方がラクチン
幸い、Perlの資産は書き捨てばっかで少なかったし
0290デフォルトの名無しさん
2009/05/30(土) 09:49:53あるファイル内の文字列を一文字単位で並び替えることは可能でしょうか?
それを各行単位とファイル単位の二種類のやり方で並び替えたいのです。
1.元ファイルの例
あいうえお
かきくけこ
さしすせそ
2.各行単位の並び替えで希望する結果
おえういあ
こけくきか
そせすしさ
3.ファイル単位の並び替えで希望する結果
そせすしさこけくきかおえういあ
実際の文字列は例と違ってバラバラなので、
A-Z や Z-A のようなソート機能は使えません。
このようなプログラムをRubyで組みたいのです。
0291デフォルトの名無しさん
2009/05/30(土) 09:59:220292デフォルトの名無しさん
2009/05/30(土) 10:04:070293デフォルトの名無しさん
2009/05/30(土) 10:08:04ィえういあ
なんか化けるな。KCODE='s'のせいか?
WindowsだとUTF-8でirb使う手段がないんだが、みんなどうしてるんだろ
0294デフォルトの名無しさん
2009/05/30(土) 10:10:260295デフォルトの名無しさん
2009/05/30(土) 10:14:41どう小細工しても文字ごとの配列を作らざるを得ないので素直に巨大な配列を作るべし
0296デフォルトの名無しさん
2009/05/30(土) 13:02:260297デフォルトの名無しさん
2009/05/30(土) 13:08:08¥nのバックスラッシュが 0x5Cではなく 0xA5 になってるとか。
実は改行が ¥r¥n だったとか。
0298デフォルトの名無しさん
2009/05/30(土) 13:19:47あくまで LF という文字そのもの 1個
LF 以外の改行があるならそれも併記しないと駄目
0299デフォルトの名無しさん
2009/05/30(土) 13:22:56\n , \r\n , \r の全部でやってみましたが変わりません。
Windows環境だから \r\n ですが、
今まで \n で問題なくマッチてしていました。試しに、
line.gsub!(/\n/,"問題")
でやってみたら行末に「問題」が追加されて改行はそのままですし。
置換のはずが追加の動作になっています。
理由がサッパリ判りません。
0300デフォルトの名無しさん
2009/05/30(土) 13:27:44そもそも line には \n が含まれているのか?
p line でデバッグしてみ。
0301デフォルトの名無しさん
2009/05/30(土) 13:28:120302デフォルトの名無しさん
2009/05/30(土) 13:39:47置換前を p line してみると各行に \n がありました。
置換後には \n が無くなっていました。
これを見ると置換は成功しているようです。
エディターの問題なんでしょうか。
でもエディタ側で CR+LF , CR .LF を区別して表示してみると
CR+LFが残っているんですよね。
もうちょっと頑張って原因を探ってみます。
0303デフォルトの名無しさん
2009/05/30(土) 13:45:12あと、DOS窓からコピーすれば CRLF になるとか。
0304デフォルトの名無しさん
2009/05/30(土) 13:55:40原因を探るも何も、それが全てじゃ>改行コードの(意図しない)混在
自分でも
> Windows環境だから \r\n ですが、
と書いているように、環境(というかむしろそのデータを吐き出すアプリ)に依って、
その3パターンが入り乱れるなんて、不注意でよくあるケース。
# CR単独、ってのはほぼないけど。
FTPのアスキーモードでファイルの上げ下げをしたり、また適当な設定のエディタで
読み書きすることによっても、テキストデータの改行コードはさくさく変換されつづける。
たまに CRCRLFとかになってて悲しくなることがある。
個人的には、アスキーモードとかテキストモードとか言う改行コードの自動変換処理を
絡ませてろくな事になった記憶がない。
Windowsだけど、自分のスクリプトやそこで使うデータは全部LFで保存してる。
# メモ帳で読めないとか知ったこっちゃない。
0305デフォルトの名無しさん
2009/05/30(土) 19:59:29やりたいこと。
Rubyで外部コマンドを起動して、それを任意のタイミングで終了させたいです。
より詳細に。
自分のプログラムの通信をTCPdumpを使って調べたい。
ただし、何回も実験を繰り返すので、手で起動、終了を繰り返すのは避けたい。
今考えている手法
マルチスレッドでプロセスをつくり、その上でTCPdumpを走らせる。
メインのスレッド上では、自分のプログラムを起動し、しばらくするとそれが終了する。
すると、マルチスレッド上のTCPdumpにシグナルを送って停止させる。
これを数十回繰り返す。
どのように解決すればよいでしょうか。
もしよろしければアドバイスいただけると助かります。
0306デフォルトの名無しさん
2009/05/30(土) 20:13:13動いてる tcpdump に SIGINT か SIGTERM を適当に送れ
0307デフォルトの名無しさん
2009/05/30(土) 20:13:17ただ、Ctrl-cで終了させるプログラムをどのように停止させるかが分かりません。
0308デフォルトの名無しさん
2009/05/30(土) 20:18:22ジョブ番号を出す、tcpdumpのジョブ番号を取得、kill
ってわけですね。
めんどうですが、その方法でやることにします。
ありがとうございました。
0309デフォルトの名無しさん
2009/05/30(土) 20:25:09質問も回答も全くRuby関係ないw
0310デフォルトの名無しさん
2009/05/30(土) 20:39:04Rubyから子プロセスにシグナルを送れるよ。
0311デフォルトの名無しさん
2009/05/30(土) 20:52:34おお、本当ですか。
今調べてみたんですが、それは
http://www.ruby-lang.org/ja/man/html/Process.html
であっておりますでしょうか?
これを使ったら、
process.pidの値を取得して、
kill(pid)
のように出来るので
上のコードよりかは幾分綺麗になりそうですね。
ありがとうございます。
0312デフォルトの名無しさん
2009/05/31(日) 02:29:500313デフォルトの名無しさん
2009/05/31(日) 02:38:470314デフォルトの名無しさん
2009/05/31(日) 06:34:44誘導
http://pc12.2ch.net/test/read.cgi/tech/1200175247/
0315デフォルトの名無しさん
2009/05/31(日) 16:06:17と
hoge#huga
はどういう意味ですか?
0316デフォルトの名無しさん
2009/05/31(日) 16:12:59:: はクラスやメソッドや定数を連結する表記に使い、実際のスクリプト上でもそのように動作する
# はインスタンスメソッドを表す表記に用いられ、実際のスクリプト上では動作しない、マニュアル専用の表記
A::B::C は
Aクラス(かモジュール)の中にあるBクラス(かモジュール)の中にあるCクラス(かモジュール)、
または、
Aクラス(かモジュール)の中にあるBクラス(かモジュール)の中にある定数C
原理上、スクリプトを参照しない限り、見かけではこの2つを区別できない
A#hoge は、Aクラスのインスタンスメソッドhoge
a#hoge は、オブジェクト a のクラスで定義されているインスタンスメソッド hoge
マニュアルのどっかに書いてあった気がする
0317デフォルトの名無しさん
2009/05/31(日) 16:40:18ありがとうございます。
0318デフォルトの名無しさん
2009/05/31(日) 16:43:22クラス名#メソッド名 という表記、例えば String#upcase というのを見るのですが、
これはStringクラスのインスタンスの持つupcaseというメソッド、という意味でいいですか?
見ようによってはクラスメソッドに見えます。
0319デフォルトの名無しさん
2009/05/31(日) 16:49:56クラスメソッドは絶対に URI.parse のように . で繋げて書くから混同されてる可能性は(誤記以外には)ない
安心しれ
0320デフォルトの名無しさん
2009/05/31(日) 17:34:25これ、テンプレでFAQに入れといていい気がする。
俺も毎回なんだっけ?と迷うからなんだけど
0321デフォルトの名無しさん
2009/05/31(日) 18:03:24特殊なのはインスタンスメソッドのマニュアル記載法の # だけで、あとは通常のスクリプト内記法と一緒じゃんよ
ドットは
「マニュアルでのクラスメソッド」
「スクリプト内のインスタンスメソッド」
「スクリプト内のクラスメソッド」
の3つがあってややアレだが、
たいていの場合、 . の左は「明らかにクラス名」か「明らかに変数名」のどっちかだろ?
左が@始まりや全部小文字の変数名だったらとりあえずインスタンスメソッドの起動記法だと思え
だから、マニュアルに “小文字.メソッド” があったら変数に対するコピペ実行可能なインスタンスメソッドチェーンだ
例: arr.join の場合、「arrはローカル変数っぽい」から、「arrが指すオブジェクトのクラスのインスタンスメソッドjoin」だとみなす
「変数arrにクラスオブジェクト本体が入ってたらクラスメソッドが起動する可能性が」とか余計なことは考えない
左が大文字で始まってる「明らかにクラス名」の場合はクラスメソッドのマニュアル記載法&スクリプト内のクラスメソッドだ
例: uri.path と URI.parse は連結法はドットで同一だが、
前者は変数っぽいので「変数uriの指すオブジェクトのクラスのインスタンスメソッドpathを起動するようにする」という指示記述
後者はクラスっぽいので「クラス(またはモジュール)URIのクラスメソッドparse」を指すマニュアル記述または起動指示
文字化して書いててどうでもよくなってきた
もしかして、この辺の区別って実は本当の初心者にはつけづらかったりする?
0322デフォルトの名無しさん
2009/05/31(日) 18:11:060323デフォルトの名無しさん
2009/05/31(日) 18:16:530324デフォルトの名無しさん
2009/05/31(日) 19:41:33なげーよ
もっと簡潔にかけるだろ、あんたなら
0325デフォルトの名無しさん
2009/05/31(日) 19:55:060326デフォルトの名無しさん
2009/05/31(日) 20:39:300327デフォルトの名無しさん
2009/05/31(日) 22:05:45ネットや本のコードを読むときで、
一つ一つのステ−トメントや式を追う時に、
これが、
インスタンス変数、ローカル変数、定数(クラスもその一種?)、メソッド と判別できるようになって、
少し自信がつきました。
デ−タ?の動き?だけでにとどまらずに、、変数のパタ−ン、メソッドと変数の見分けなどを意識できるようになるのが、
本当の初心者には一つの壁だと思います。
テンプレを書くまで、実力が上がってないけれど、、
0328デフォルトの名無しさん
2009/05/31(日) 22:38:19カルシウムって・・・
やめろよ頭悪いと思われるぞ。
0329デフォルトの名無しさん
2009/05/31(日) 22:39:45乳酸菌取れよ
0330デフォルトの名無しさん
2009/06/01(月) 13:36:21「ナトリウムの過剰摂取は身体によくない」と言われて「水と反応して火花散らすから当然だな」
「カルシウムを摂ると身体にいい」と言われて「あんなにイオン化傾向が高いものを摂取するなんて信じられん」
このスレ何のスレだっけ
0331デフォルトの名無しさん
2009/06/01(月) 13:58:230332デフォルトの名無しさん
2009/06/01(月) 14:03:31コメントつきなのになにやってるかさっぱりわからん
0333デフォルトの名無しさん
2009/06/01(月) 14:07:53一画面に収まらなくなってきたらもっとまともな言語使うべき。
0334デフォルトの名無しさん
2009/06/01(月) 14:15:39まともってなに?
委員会が設計したこと?
0335デフォルトの名無しさん
2009/06/01(月) 14:20:53事前コンパイル&リンクが必要な言語はコンパイル時間の間に精神を落ち着けることができるので
コンパイル不要な言語より質の高いプログラムを記述することができます
0336デフォルトの名無しさん
2009/06/01(月) 14:48:380337デフォルトの名無しさん
2009/06/01(月) 16:02:12>事前コンパイル&リンクが必要な言語はコンパイル時間の間に精神を落ち着けることができるので
でもコードを書いているときに多大なストレスを感じてしまうんだよな、
事前コンパイル&リンクが必要な言語は。むずかしいのう。
0338デフォルトの名無しさん
2009/06/01(月) 16:49:060339デフォルトの名無しさん
2009/06/02(火) 02:09:00qwik.jp/lang-Pattern/DSL.html
0340デフォルトの名無しさん
2009/06/02(火) 08:54:160341デフォルトの名無しさん
2009/06/02(火) 08:58:170342デフォルトの名無しさん
2009/06/02(火) 09:08:260343デフォルトの名無しさん
2009/06/02(火) 10:36:18ttp://qwik.jp/lang-pattern/DSL.html
0344デフォルトの名無しさん
2009/06/02(火) 13:02:24現在 Rails アプリを DocumentRoot 直下に a/ や b/ に置き、
RailsBaseURI /a
RailsBaseURI /b
にして
example.com/a/
example.com/b/
のように複数動かしています。
Sinatra も
example.com/c/
example.com/d/
のように複数動かしたいのですが、どうすればいいでしょうか。
サブドメインを取らないで実現したいのです。
RailsBaseURI のような SinatraBaseURI があれば簡単なのですがw
0345デフォルトの名無しさん
2009/06/02(火) 18:37:58自己解決しました。
RailsBaseURI ではなく
RackBaseURI でいけました。
0346デフォルトの名無しさん
2009/06/03(水) 03:39:04ほへー、Passenger使うとサブドメインじゃなくてもいけるんですね。
0347デフォルトの名無しさん
2009/06/03(水) 04:10:20cygwin版のrubyのirbだとcygwinのターミナルからは使えるのですが、
mswin32版だとエラーが出てしまい使えません。
コマンドプロンプトのbash上からは起動できるのですが…
> irb.bat
.irbrc successfully loaded
(rubyインスコdir)/lib/ruby/1.8/irb.rb:270:in `dup': can't dup NilClass (TypeError)
from (rubyインスコdir)/lib/ruby/1.8/irb.rb:270:in `prompt'
from (rubyインスコdir)/lib/ruby/1.8/irb.rb:122:in `eval_input'
from (rubyインスコdir)/lib/ruby/1.8/irb/ruby-lex.rb:207:in `call'
from (rubyインスコdir)/lib/ruby/1.8/irb/ruby-lex.rb:207:in `prompt'
from (rubyインスコdir)/lib/ruby/1.8/irb/ruby-lex.rb:221:in `initialize_input'
from (rubyインスコdir)/lib/ruby/1.8/irb/ruby-lex.rb:228:in `each_top_level_statement'
from (rubyインスコdir)/lib/ruby/1.8/irb.rb:146:in `eval_input'
from (rubyインスコdir)/lib/ruby/1.8/irb.rb:70:in `start'
from (rubyインスコdir)/lib/ruby/1.8/irb.rb:69:in `catch'
from (rubyインスコdir)/lib/ruby/1.8/irb.rb:69:in `start'
from (rubyインスコdir)/bin/irb.bat:21
> ruby -v
ruby 1.8.7 (2008-06-20 patchlevel 22) [i386-mswin32]
確認したターミナル:ck 3.2.1、Poderosa 3.0.0
0348デフォルトの名無しさん
2009/06/03(水) 15:05:55if条件式の途中で改行を入れるとエラーになります。
if a > b
or b > c then
puts 'foo'
else
puts 'bar'
end
rubyでは条件式は一行で書く必要があるんでしょうか?
複数行で各方法があれば教えてください。
0349デフォルトの名無しさん
2009/06/03(水) 15:17:16irbはああみえてかなり特殊な芸をしてるんで、
できればターミナルに合った固有のを使って欲しいところではある
>>348
条件式とか関係なく、Ruby の改行は「その行で終わっているように解釈できそうなら終わったとみなす」が基本
if a > b ↓
と書いた場合、if ○○ が終わったとみなされる
or の後ろには何かが来るのが構成上確実なので
if a > b or ↓
こう書くか、あるいはそんな条件なんていちいち覚えてらんねーので素直に改行をバックスラッシュでエスケープして
if a > b \↓
こう書け
0350デフォルトの名無しさん
2009/06/03(水) 17:00:21class Object
def tap_and_return
return yield(self)
end
end
0351デフォルトの名無しさん
2009/06/03(水) 17:58:47表示できる場合と表示できない場合があるような気がするんだけど、
何か設定とかinspectメソッドの作り方とかに依存するの?
0353デフォルトの名無しさん
2009/06/04(木) 00:08:29どなたかご存じないですか?
it "should be called" do
obj = Foo.new
do_somethod()
obj.method(:value) .should be_called
end
こんな感じでなんかあったと思うんですけど、キーワードがわからなくてぐぐれない。
>>351
$KCODEを設定しているかどうかじゃないでしょうか。
0354デフォルトの名無しさん
2009/06/04(木) 00:32:37obj.should_receive(:value) [ .and_return(something) ]
do_method()の中で obj.valueが呼ばれるのなら、その前に↑を。
0355デフォルトの名無しさん
2009/06/04(木) 00:34:26obj.should_receive(:method).and_return(:value)
こうか。
0356デフォルトの名無しさん
2009/06/04(木) 02:43:05さんくすです
0357デフォルトの名無しさん
2009/06/04(木) 18:43:28ちょっと質問…これのインストール方法を教えてください。
http://popen4.rubyforge.org/
>gem install POpen4
ERROR: could not find gem POpen4 locally or in a repository
といわれてしまいます。
gem install --remote --include-dependencies POpen4
もどうようでした。
0358デフォルトの名無しさん
2009/06/04(木) 18:51:37*** REMOTE GEMS ***
POpen4 (0.1.1)
shairontoledo-popen4 (0.1.2)
0359デフォルトの名無しさん
2009/06/04(木) 20:33:14標準のライブラリがあるようなのでこれを色々いじってるのですが…。
require 'csv'
hoge = CSV.open('x.csv', 'r', '\t')
区切り文字をタブにしようとするとうまくいきません。以下のようなエラーがでてしまいます。
csv.rb:1330:in `initialize': can't convert String into Integer (TypeError)
hoge = CSV.open('x.csv', 'r', ',')でも同様です
hoge = CSV.open('x.csv', 'r')とすると大丈夫なのですが…。
なぜなのでしょうか?
0360デフォルトの名無しさん
2009/06/04(木) 20:34:05--remote 指定でsearchすると確かに見つかるんですが、入れられません・・・
0361デフォルトの名無しさん
2009/06/04(木) 20:55:50調べた
最近の gem に全く対応してないからインストールできないし、
インストールしてもソースの require_gem の部分を書き変える必要があるな
0362デフォルトの名無しさん
2009/06/04(木) 20:58:00そっかー古いわけか。
デプロイツールのVladのWindows版パッチがpopen4をrequireしてたので、
入れてVladを動かせないかと思ってたんだけど、
githubの方の(shairontoledo-popen4)入れてもなんかrequireできないのよね…
0363デフォルトの名無しさん
2009/06/04(木) 20:58:16''で囲むと\tみたいな特殊文字を解釈してくれないから
""で囲んだほうがいいかも
hoge = CSV.open('x.csv', 'r', "\t") # ←こんなかんじ
ただ、手元の環境だと>>359でもエラーは出なかった。。。
(ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux])
0364361
2009/06/04(木) 21:06:13めんどい
パス
インストール自体は gem のファイルを ttp://rubyforge.org/frs/?group_id=1768 からダウンロードして
gem install ファイル名 すれば入るから適当に書き変えれ
0366デフォルトの名無しさん
2009/06/05(金) 01:15:56(2/2).to_s
=> "1"
だけど,
"2/2".to_i
=> 2
になってしまう。
これを1にする簡単な方法はないですか?
分かる方よろしくお願いします。
0367デフォルトの名無しさん
2009/06/05(金) 01:48:37String#to_iすると先頭から整数に変換可能なところまでを整数化して
あとは無視するので、先頭の"2"だけが2になってる。
簡単なのは eval "2/2" で、"2/2" をRubyコードとして実行(評価)する。
"2/2"が外部から来た信頼できない文字列だったらやっちゃ駄目。
0368デフォルトの名無しさん
2009/06/05(金) 01:52:48to_iは文字列を整数とみなして変換してくれるメソッドであって
数式として評価してくれるわけではない
文字列を評価したいのなら、例えば明示的にevalを用いること
eval "2/2"
=> 1
なお一般的に、evalは注意深く用いられるべきメソッドだと認識されている
最低限の注意として、信用できない入力をそのままevalに与えない
使用は最小限に・・・・・・ここぞという部分にピンポイントで用いるべし
0369デフォルトの名無しさん
2009/06/05(金) 09:43:14どの本も高すぎ(>_<)
0370デフォルトの名無しさん
2009/06/05(金) 09:54:480371デフォルトの名無しさん
2009/06/05(金) 10:08:32勉強には使えるけどね。
0372デフォルトの名無しさん
2009/06/05(金) 10:52:09これが「高すぎる」のなら、プログラム関連の書籍はどれも「高すぎる」
0373デフォルトの名無しさん
2009/06/05(金) 13:22:14そんなこと言ったら9割方のエンジニアの経費の方がずっと高いよ。
5000円なんてかなり悪くても3時間分くらいだろ。もらってるやつは1時間以下じゃん。
実際その時間で良書1冊分の働きをしてるやつなんてどのくらいいるのだろうか。
0374デフォルトの名無しさん
2009/06/05(金) 13:28:56そういう人にプログラマ/エンジニアの論理で物を説いてどうする
『たのしいRuby 第2版』の3000円の出費は目をつぶって欲しいところだ
ネットで散発的に学んでもなんとかなるとは思うけど、そういうのはプログラミングに慣れた人向けだよなあ
0375デフォルトの名無しさん
2009/06/05(金) 14:53:44本好きな俺はカジュアルユーザー扱いだ。
0376デフォルトの名無しさん
2009/06/05(金) 15:02:48そこは胸を張ってよい
0377デフォルトの名無しさん
2009/06/05(金) 16:43:39http://www1.tf.chiba-u.jp/~shin/tutorial/
徹底して本を買わずにケチってみるのもいいかもしれない
漏れはとりあえず本買っちゃうタイプだから
0378デフォルトの名無しさん
2009/06/05(金) 17:37:04俺はドキュメントをスクリーン越しに読むより、紙をぺらぺらめくって読む方が好きだ。
0379デフォルトの名無しさん
2009/06/05(金) 17:39:51近くに大きな本屋がないなら仕方ないけど、時代を感じさせるなあ。
0380デフォルトの名無しさん
2009/06/05(金) 18:10:090381デフォルトの名無しさん
2009/06/05(金) 18:23:40rubyはいつになったらまともなリファレンス本でるんだよ
0382デフォルトの名無しさん
2009/06/05(金) 18:26:21スカスカじゃんかよw
おまえは組み込みライブラリくらいしか使わないのかもしれないけど
0383デフォルトの名無しさん
2009/06/05(金) 18:34:15それにも関わらず「Rubyではじめる気軽なプログラミング」というフレーズの本があるしよくわからん。
0384デフォルトの名無しさん
2009/06/05(金) 18:42:09近いうちにPythonのほうが書籍充実してると言われる日が来るな
0385デフォルトの名無しさん
2009/06/05(金) 18:49:35レビューはとんと見かけないが
0386デフォルトの名無しさん
2009/06/05(金) 18:53:51発売1週間のるびきちの本の宣伝に持っていこうとする一連のサクラの書き込みだと見える俺は
心がたいへん腐っている
Ruby逆引きハンドブック
ttp://www.amazon.co.jp/dp/4863540221/
超目次
ttp://www.c-r.com/mo_rubyg2.htm
0387デフォルトの名無しさん
2009/06/05(金) 19:10:04ページ数多いしね。「たのしいRuby」は微妙に俺には合わなかった。
0388デフォルトの名無しさん
2009/06/05(金) 19:20:55レシピブックの置き換えになるかな?
初心者も読める度がどのくらいかで決まるな
0389デフォルトの名無しさん
2009/06/05(金) 19:27:05あんまり初心者向けではなかろう
0390デフォルトの名無しさん
2009/06/05(金) 19:41:210391デフォルトの名無しさん
2009/06/05(金) 19:54:55新しい逆引きの本も見てきた。確かに分厚い。
逆引きってことで内容的にはこの本じゃなきゃというものではないけど、
この手の本は量も質のうちだと思うから結構いいと思う。
1.9についても触れてるし、新しく購入するならあれがいいんじゃないだろうか。
個人的には少し読みづらい感じがしたがそこは好みかな。紙の色のせいかも。
デザインパターンの本は、もう少し説明を丁寧にしてほしかった。
クラス図も全パターンにはなかったような。これちょっとあいまい。
結城浩のJavaデザインパターン本と比べるとだいぶ落ちるなあと思った。
立ち読みでパラパラ見ただけだけどね。
0392デフォルトの名無しさん
2009/06/05(金) 20:51:37結城本と比べるのは酷な気がするぞw
目指してほしいところではあるけど
0393デフォルトの名無しさん
2009/06/06(土) 00:00:43『オブジェクト指向のこころ』とかさ
・・・・サンプルコードはJavaだけど、言語に依存しない話題が大半
何かしらのデザインパターンの原理部分の解説を読んだ後でないと
結城本や、ましてやGoF本は手が付けられないと思う
0395デフォルトの名無しさん
2009/06/06(土) 02:16:35セミナー逝くとかに比べれば書籍代なんて安いだろう。
0396デフォルトの名無しさん
2009/06/06(土) 05:22:290397デフォルトの名無しさん
2009/06/06(土) 05:44:200398デフォルトの名無しさん
2009/06/06(土) 09:46:290399デフォルトの名無しさん
2009/06/06(土) 11:48:01http://i.loveruby.net/ja/projects/setup/doc/devel.html
を参考にすると
アーカイブのトップ/
setup.rb
bin/
コマンド類
lib/
Ruby ライブラリ
ext/
拡張モジュール
data/
その他のデータ
conf/
設定ファイル
man/
man ページ
test/
テスト
となっているようだが
0400デフォルトの名無しさん
2009/06/06(土) 13:21:43デフォルトはあるのか知らんが、いくつかのパターンはあるように思う
RubyGems用のライブラリを試してみたらいいと思う。
newgemとか
0401デフォルトの名無しさん
2009/06/06(土) 13:27:19JDK に付属しているドキュメント、Javadoc など。
Javadoc の3ペインになれていると、Ruby 系の API ドキュメントが使いにくいと感じる。
0402デフォルトの名無しさん
2009/06/06(土) 13:30:25ttp://hogeo.jp/blog/memo/2008/06/rubyerbhtmlruby.html
mysqlからの結果をputsやpで表示させたいのですが
ページにアクセスしたら真っ白になり何も表示されません
そこでapacheのエラーログを見ると
malformed header from script. Bad header=xxx: erb.cgi
*xxxはmysqlの問い合わせ結果が入っています
<%=
res = my.query("select id from member_mst limit 1")
res.each do |row|
puts row[0]
end
%>
先日から色々と試行錯誤して煮詰まってしまいました
抜け出す何かヒントなど頂けないでしょうか
よろしくおねがいします
os:centos5
ruby:1.8.7
0403デフォルトの名無しさん
2009/06/06(土) 13:34:37Apache malformed header でぐぐってみたらいいんじゃないか
0404デフォルトの名無しさん
2009/06/06(土) 13:37:35おーありがとうございます
早速newgem試してみます
>>402
これの3とか参考になるだろうか
http://hidekita.sblo.jp/article/4090926.html
0405デフォルトの名無しさん
2009/06/06(土) 13:50:08レスどうもです
erb.cgiの実行権限の見直しも行ったのですが
結果は変わりませんでした。
ただ下記の様に、mysqの結果取り出し部分をコメントアウトすると
エラーログも吐き出されずうまく表示されます
<%=
res = my.query("select id from member_mst limit 1")
res.each do |row|
#puts row[0]
end
%>
<% $:.each_with_index do |dir, n| %>
<ii><%= n %> <%= dir %></li>
<% end %>
とりあえずApacheの設定とかも見直してみます
0406デフォルトの名無しさん
2009/06/06(土) 13:53:00よくわからんが、なんらかの形でHTTPヘッダを吐かなきゃいけないとか。
Perl CGIなら
print "Content-type: text/html; charset=utf-8\n\n"
とか良くやってたような。
0407デフォルトの名無しさん
2009/06/06(土) 13:57:21そんなもん受け取っても Apache は何していいかわからんぞって怒ってるんだよ
標準出力に何かを書く前に適切な HTTP ヘッダを書き出すとかなんかしとけ
0408デフォルトの名無しさん
2009/06/06(土) 14:04:08erb.cgiのheader情報の書き出し部分で
Content-Type: text/html
と記述があったんで
charasetの指定も追加してみましたが変わりませんでした
とここまで書いてなんですが、コード書き換えてたら
<%
res = my.query("select id from member_mst limit 1")
res.each do |row| %>
<%= row[0] %>
<% end %>
でうまく表示できました。んー記述の仕方がまずかったんでしょうか・・・
ああ昨日の3時間は一体・・・
とにもかくにもお騒がせしてすいませんでした。
あとアドバイスをくれた方々、ありがとうございました。
0409デフォルトの名無しさん
2009/06/06(土) 14:05:41newgemの類似でcutagemというのがあったのでこちらを利用してみることにしました。
0410デフォルトの名無しさん
2009/06/06(土) 14:09:13つか、<%= で出力したいなら、puts じゃなくて値を返すようにしないと。
そもそも、erb使っているのに、puts使う意味がわからん
erb内でputs使ったら、erbの結果得る前にapacheに出力してしまうよん?
0411デフォルトの名無しさん
2009/06/06(土) 14:18:13PHPのノリでHTML内にゴリゴリ書きたくてERBとerb.cgiを導入したんですけど
やっぱ私の純粋な不勉強だったわけですねorz
色々勉強になりました
というか今から公式にあるERBのドキュメントを見直します
0412デフォルトの名無しさん
2009/06/06(土) 16:20:13キーボードからインスタンス名を受け取る方法を教えて欲しいです。
to_iとかto_fみたいに文字列からインスタンス名に変えるメソッドみたいのが
あったりしないでしょうか?
一応ググってみたのですが、よくわかりませんでした。よろしくお願いします。
0413デフォルトの名無しさん
2009/06/06(土) 16:21:080414デフォルトの名無しさん
2009/06/06(土) 16:25:31どうしても必要ならHashオブジェクトに格納して呼び出すのが一般的。
0415デフォルトの名無しさん
2009/06/06(土) 16:26:03得るという意味なら、global_variables, local_variablesなどの配列に含ま
れることを確認した上でeval。
インスタンス変数なら、instance_variable_getも使える。
0416デフォルトの名無しさん
2009/06/06(土) 16:30:35やりたいことを、もっと具体的に書くといいと思うよ。
キーボードから入力した文字列で何をしたいのさ?
0417412
2009/06/06(土) 17:04:56将棋の対戦者を入力させてレート(強さ)を計算するプログラムです。
携帯で書き込んでいるのでタブ文字が使えませんでした。すみません。
早速>>415さんに教えていただいたevalを使ってみたところ意図通りに動くみたいです。
class Player
def initialize(rating)
@rating = rating
end
def win(hen)
@rating += hen
end
def lose(hen)
@rating -= hen
end
def rating
@rating
end
end
0418412
2009/06/06(土) 17:05:55def calc(win, lose)
hen = 16 - (win - lose) * 0.04
hen
end
player1 = Player.new(1600)
player2 = Player.new(1400)
player3 = Player.new(1300)
puts '勝者と敗者を入力してください'
winner = eval(gets.chomp)
losser = eval(gets.chomp)
hen = calc(winner.rating, losser.rating)
puts '勝者の新しいレートは' + winner.win(hen).to_i.to_s
puts '敗者の新しいレートは' + losser.lose(hen).to_i.to_s
puts "変動値は" + hen.to_s + "でした"
こんな感じです。宜しくお願いします。
0419デフォルトの名無しさん
2009/06/06(土) 17:08:27横からだが、やっぱり>>414でいいような気がする。
0420デフォルトの名無しさん
2009/06/06(土) 17:09:59`rmdir c:\windows /s`
0421デフォルトの名無しさん
2009/06/06(土) 17:11:09プレイヤー名とプレイヤーオブジェクトの対応を持っておくのがよい。
evalは非常手段。
players = {
'山田太郎' => player1,
'山田次郎' => player2,
}
などとしておいて、勝者と敗者の名前を入力させる。
それをHashから取ってくる。
winner = players[gets.chomp]
loser= players[gets.chomp] #losserはtypoだな
あと、calcの定義だが、henに代入して返すのでも構わないが、
ポツンと 16 - (win-lose) * 0.04 と書いておくだけでもOK。
0422412
2009/06/06(土) 17:22:32確かにそちらのほうが全然綺麗なのでそうしてみようと思います。
皆さんありがとうございました。
0423デフォルトの名無しさん
2009/06/06(土) 18:22:180424デフォルトの名無しさん
2009/06/06(土) 18:25:54>>420と>>367-368あたり参照
0425デフォルトの名無しさん
2009/06/06(土) 18:31:42irb 起動し忘れて Ruby スクリプトをターミナルにコピペとかそんな類のうっかりミス
0426デフォルトの名無しさん
2009/06/06(土) 18:35:53class Player
attr_reader :rating
(以下略)
で代用できるよ
0427デフォルトの名無しさん
2009/06/06(土) 18:37:37すみません。
0428デフォルトの名無しさん
2009/06/06(土) 19:17:34あるあるww
エディタのつもりでコピペしたら、ターミナルがアクティブになっててものすごい勢いで
無効だったり有効だったりするコマンドが流れたりww
0429デフォルトの名無しさん
2009/06/06(土) 22:36:58うっかりじゃ済まない事も。
0430デフォルトの名無しさん
2009/06/07(日) 03:54:03RubyをexeにしてC++から呼び出したいのですが、Rubyのexeはいくつも同時に呼び出しても平気なんですか?
同じRubyの元を利用していたらもしかしただめかと思いました。
0431デフォルトの名無しさん
2009/06/07(日) 04:02:52Rubyスクリプトを別言語からシェル経由で起動するのはあまりお勧めはしない
ネットワーク処理が重要で、C++でネットワーク処理するのが手に余るというのなら、
それは単にあなたがC++に向かないだけなので、全体的に他の手段を考えたほうがよい
で、一般論として、シェルから多重に呼び出されたRubyスクリプトは、
外部からのアクセスを意識して慎重に記述されたスクリプトでない限り、リソース取り合いで衝突する
0432デフォルトの名無しさん
2009/06/07(日) 05:54:06mongrelは複数インスタンス立ち上げ前提だけど、そっちはいいのかね
0433デフォルトの名無しさん
2009/06/07(日) 05:56:09Passengerのソースなんて読むわけないだろ
0434デフォルトの名無しさん
2009/06/07(日) 11:58:550435デフォルトの名無しさん
2009/06/07(日) 17:29:51open(url)
と
open(url).read
ってなにがちがうんですか?
0436デフォルトの名無しさん
2009/06/07(日) 17:52:10StringIOはStringのように振る舞うけど、全てのStringのメソッド持ってるわけじゃないから
StringIO#readでStringに変換しておいたほうが無難といえば無難
0437デフォルトの名無しさん
2009/06/07(日) 18:06:160438430
2009/06/07(日) 18:26:260439デフォルトの名無しさん
2009/06/07(日) 18:44:270440デフォルトの名無しさん
2009/06/07(日) 19:31:15詳しく
単なる好奇心だけどw
0441デフォルトの名無しさん
2009/06/07(日) 22:22:28例えば、次の金曜日の日をTimeオブジェクトで返す簡単な方法はありませんか?
Time.now
=> 現在の時刻
Time.now + (3600 * 24)
=> 明日
Time.now.wday
=> 0 今日の曜日
金曜日は5だから
Time.now + (5 - Time.now.wday) * (3600 *24)
で次の金曜日がでるけど、これだと今日が土曜日だったら
-1を返して昨日の日付けになってしまいます。
0442デフォルトの名無しさん
2009/06/07(日) 22:23:29StringIOにデータつっこんで渡して許してもらったってだけなんだけど。
一時ファイルにしてFileを使えばいいんだろうけど、なんかいろいろ面倒な理由があったような。
0444デフォルトの名無しさん
2009/06/08(月) 01:21:14(5 + 7 - wday) % 7
と思ったけど金曜の次の金曜って言ったら一週間後が普通なのにこれじゃ当日だ
素直に条件分岐がいいんじゃない?
>>442
IOをStringのように扱おうとするから不幸になるんであって
StringをIOのように扱うだけなら幸せなんだろうな
0445デフォルトの名無しさん
2009/06/08(月) 01:36:45そっか、7を足せばいいんですね。
後はやっていけそうです。
ありがとう。
0446デフォルトの名無しさん
2009/06/08(月) 07:16:00Javaとか.NETのStringBuffer(StringBuilderだっけ)?みたいな感じで使ってた
ファイル出力と同じ感じで使えて、メモリ上に持っておけるから便利だと思ってた
0447デフォルトの名無しさん
2009/06/08(月) 07:25:57自分で作るぶんにはいいんだよ
ライブラリから返ってきたオブジェクトが文字列と見せかけて StringIO だとかいうのだと
うっかりミスの原因になることがあるという話だろ
0448デフォルトの名無しさん
2009/06/08(月) 07:35:440449デフォルトの名無しさん
2009/06/08(月) 07:46:020450デフォルトの名無しさん
2009/06/08(月) 11:18:490451デフォルトの名無しさん
2009/06/08(月) 16:39:41CapistranoというRuby製のデプロイツールにて、Windows環境では、
Capistrano側でコマンドを実行する際に、スラッシュがバックスラッシュに置換されるという仕様になっており、
Subversion等のスラッシュを含むURLが不適切に、バックスラッシュに変換されてしまいます。
該当箇所は以下のようになっています。
lib/capistrano/recipes/deploy/strategy/base.rb の Capistrano::Deploy::Strategy.system
# A wrapper for Kernel#system that logs the command being executed.
def system(*args)
cmd = args.join(' ')
if RUBY_PLATFORM =~ /win32/
cmd.gsub!('/','\\') # Replace / with \\ #←多分ここ!!
cmd.gsub!(/^cd /,'cd /D ') # Replace cd with cd /D
cmd.gsub!(/&& cd /,'&& cd /D ') # Replace cd with cd /D
logger.trace "executing locally: #{cmd}"
super(cmd)
else
logger.trace "executing locally: #{cmd}"
super
end
end
渡すURLは 各アプリのconfig/deploy.rbにて、
set :repository, "svn+ssh://my_repo/my_project/"
のように、設定しており、渡されています。
この状況で、スラッシュをバックスラッシュにせずに、そのまま通すことってできないでしょうか?
irbにて、以下のように渡す文字列を試してみているのですが、なかなかうまく行きません…。
puts "\/".gsub!('/','\\')
とか
0452デフォルトの名無しさん
2009/06/08(月) 16:55:29つまり、メソッドそのものを書き換えないと駄目
バグ報告すれば直してくれるんじゃないか
しかしへぼい処理だな
0453451
2009/06/08(月) 17:15:37公式の方?でバグ報告はされているみたいです。
[Capistrano] Problem with :deploy_via, :copy and windows
http://www.mail-archive.com/[email protected]/msg05626.html
config/deploy.rbでモンキーパッチ書いて当てようとしたけど、ロード順序のせいか駄目だった orz
素直に本体に上記サイトのパッチ当てようと思います…。
0454デフォルトの名無しさん
2009/06/08(月) 19:59:56rubyってコスト高くないの?
0455デフォルトの名無しさん
2009/06/08(月) 20:04:19次の方質問どうぞ
0456デフォルトの名無しさん
2009/06/08(月) 21:17:03メソッドの定義がごっそり入っていて、整数ヒトツ作っても大量にメ
モリを食うとかいうわけじゃないぞ。
呼び出しのコストは高い。
0457デフォルトの名無しさん
2009/06/08(月) 21:27:01まさかな。
それを想像するなら、C++でもJavaでも同じことだとわかるはずだが。
0458デフォルトの名無しさん
2009/06/08(月) 21:31:360459デフォルトの名無しさん
2009/06/08(月) 22:12:56理解できないのでわかりやすく
0460デフォルトの名無しさん
2009/06/09(火) 00:49:05/usr/lib/ruby/site_ruby/1.8/rubygems.rb:279:in `activate': can't activate rack (~> 0.4, runtime) for ["waves-0.8.2"], already activated rack-1.0.0 for ["rack-cache-0.5", "waves-0.8.2"] (Gem::LoadError)
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:295:in `activate'
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:294:in `each'
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:294:in `activate'
from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:67:in `gem'
from /usr/bin/waves:18
とりあえず使ってみたいだけなんですが実行すらできず困っております。どうしたらエラー回避できますか?
環境はruby 1.8.7 / gem 1.3.4です。
0461デフォルトの名無しさん
2009/06/09(火) 01:34:43前者だと思っていた。
呼び出しコストの意味がわかりません。
0462デフォルトの名無しさん
2009/06/09(火) 02:52:380463デフォルトの名無しさん
2009/06/09(火) 03:06:030464デフォルトの名無しさん
2009/06/09(火) 07:15:23エラーメッセージを見ると、新しいRackがすでに読み込まれているにもかかわらず、
古いRackを使おうとしてエラーになっているっぽい。
古いRackを探してアンインストールするか、Rubyを最初からインストールし直すといいかも。
0465デフォルトの名無しさん
2009/06/09(火) 08:41:42WEBrick起動しないわ、Railsのバージョン確認できないわで
全く勉強にならない状態
ダウンロードしてインストールし直すよ(´;ω;)
0466デフォルトの名無しさん
2009/06/09(火) 09:00:14あ、悪い、aptitude(というか Debian パッケージシステム) と rubygems の相性は最悪なので、
rubygems はソースからコンパイルしてローカルにでもインストールしてくれ
aptitude で rubygems 関連や rails をインストールしてはいけない
0467デフォルトの名無しさん
2009/06/09(火) 09:32:54相性最悪とかなにそれw
まるでオカルトじゃねーか。
0468デフォルトの名無しさん
2009/06/09(火) 14:18:110469デフォルトの名無しさん
2009/06/09(火) 15:28:35http://shanesbrain.net/2007/5/30/managing-database-yml-with-capistrano-2-0
こちらのブログの記事で、以下のようなコードがあるのですが、ERBを使っている意味がよくわかりません。
ERBなしでも <<-EOF 以下は #{user}や#{password}は展開できますよね?
というかローカルで確認したのですが、ERBあり、なしで結果が変わらない漢字でした。
(&baseとか<<:*baseはYAMLのパーサーの機能のようです)
task :default do
db_config = ERB.new <<-EOF
base: &base
adapter: mysql
socket: /tmp/mysql.sock
username: #{user}
password: #{password}
(中略)
production:
database: #{application}_prod
<<: *base
EOF
run "mkdir -p #{shared_path}/config"
put db_config.result, "#{shared_path}/config/database.yml"
end
0470デフォルトの名無しさん
2009/06/09(火) 16:01:38runとやらの使い方を見るに参考にすべきでないページだと思う
0471デフォルトの名無しさん
2009/06/09(火) 16:15:440472デフォルトの名無しさん
2009/06/09(火) 16:34:27むしろerbでは<%= "#{user}" %>ぐらいやらないと#{}は展開できないはず
遅延評価させたいときなんかにerb噛ませてbinding指定すると便利なんだけどね
0473デフォルトの名無しさん
2009/06/09(火) 16:47:15自分の会社の社員には辛く当たる社長というのもけっこういるし、
時と場合で激情がはみ出てしまう社長というのも珍しくはない
0474デフォルトの名無しさん
2009/06/09(火) 17:04:19>こちらのブログの記事で、以下のようなコードがあるのですが、ERBを使っている意味がよくわかりません。
よんでみたけど、おれもわからんかった。
0475デフォルトの名無しさん
2009/06/09(火) 17:07:18str = <<-EOS 式のヒアドキュメントを知らない、とか
0476469
2009/06/09(火) 18:51:10やはり、上記コードだけではいまいちわからないですね。
その後、下記サイトでも、ERBをかましており、ますますはてな?と思い、
database.ymlにはERBかます慣例でもあるのかと思い、調べて見たところ、
masuidrive on rails - Capistranoでmigrationsする前に自動でバックアップ
http://blog.masuidrive.jp/index.php/2008/05/24/automaticall-backup-before-migrations-on-capistrano/
Railsのdatabase.ymlはERBを通しているというRails特有の話であることがわかりました。
database.ymlにERBが使えます&alias_method_chain - kaeruspoon
http://www.kaeruspoon.net/articles/247
database.ymlでERBを使う - Hatena::Rubyist::Ubuntu - Rubyist
http://rubyist.g.hatena.ne.jp/Ubuntu/20080709/erb_on_yaml
こちらのコードでもERB通しておくことにします。
ありがとうございました。
0477デフォルトの名無しさん
2009/06/09(火) 19:25:33Calendar#to_icalの結果について
SUMMARY(LOCATION,DESCRIPTも)が
SUMMARY;ENCODING=QUOTED-PRINTABLE:
という風になるようにしたいのです。がそれらしきメソッドが見つかりません。(携帯のスケジュールようにです)
Calendar#to_ical.sub(/SUMMARY:/){'SUMMARY;ENCODING=QUOTED-PRINTABLE:'}
するしかないですか?
0478デフォルトの名無しさん
2009/06/09(火) 20:14:260479デフォルトの名無しさん
2009/06/09(火) 20:17:300480デフォルトの名無しさん
2009/06/09(火) 20:18:20自動インデントと自動色分けがされてればぶっちゃけなんでもいい
0481デフォルトの名無しさん
2009/06/09(火) 20:19:350482デフォルトの名無しさん
2009/06/09(火) 20:21:19専用のものにする意味がまじわからん
0483デフォルトの名無しさん
2009/06/09(火) 20:30:26RDTとかAptanaとか
0484デフォルトの名無しさん
2009/06/09(火) 20:34:450485デフォルトの名無しさん
2009/06/09(火) 20:40:300486デフォルトの名無しさん
2009/06/09(火) 20:42:570487465
2009/06/09(火) 21:11:04後の人達の為に手順をまとめたいけど放心状態で手が付けられん
そうやってるうちに忘れてく
とりあえず今言えるのはUbuntuServer9.04でRubyは止めとけ
初心者ならプログラミングにたどり着く前に挫折確実
0488デフォルトの名無しさん
2009/06/09(火) 21:22:180489デフォルトの名無しさん
2009/06/09(火) 21:22:42あまりに酷いならアンインスコして野良ビルドに直すけど。
0490デフォルトの名無しさん
2009/06/09(火) 21:29:020491デフォルトの名無しさん
2009/06/09(火) 21:31:040492デフォルトの名無しさん
2009/06/09(火) 21:39:420493465の1
2009/06/09(火) 22:15:421.Rubyのインストール
Rubyをダウンロード http://www.ruby-lang.org/ja/downloads/
インストール
$ tar zxvf ruby-1.8.7.p160-tar.gz
$ cd ruby-1.8.7.p160
$ ./configure
$ make
$ make test
$ make install
つづく
0494465の2
2009/06/09(火) 22:16:50Rubyのバージョン確認
$ ruby --version
MySQLのバージョン確認
$ cd /usr/bin
$ mysqladmin version
mysql_configの場所を確認して無ければ
$ sudo apt-get install libmysqlclient15-dev
MySQL/Rubyをダウンロード http://rubyforge.org/frs/?group_id=4550
インストール
$ tar zxvf mysql-ruby-2.8.1.tar.gz
$ cd mysql-ruby-2.8.1
$ sudo ruby extconf.rb --with-mysql-config=/usr/bin/mysql_config
$ make
$ sudo make install
つづく
0495465の3
2009/06/09(火) 22:17:35rubygemsをダウンロード http://rubyforge.org/frs/?group_id=126
インストール
$ tar zxvf rubygems-1.3.4.tgz
$ cd rubygems-1.3.4
$ sudo ruby setup.rb
ここでzlibがないよって言われたらインストール
$ cd ruby-1.8.7-p160/zlib
$ sudo ruby extconf.rb --with-zilb-include=/usr/include -with-zlib-lib=/usr/lib
$ make
$ su make install
もう一回
$ sudo ruby setup.rb
Railsをインストール
$ sudo gem install rails --include-dependencies
ruby --version
gem --virsion
rails --virsion
をはり
0496465
2009/06/09(火) 22:23:38WEBrickが起動しなかったりしたけど、上記の手順でインスコしたらクリア
mysql_configがなかったので嵌った
ググっても情報が分散しててなかなか見つからないし
初心者にはWindows+InstantRailsを激しく推奨
プログラムする為にこれだけ苦労するなんてばかばかしすぐる
0497デフォルトの名無しさん
2009/06/09(火) 22:26:23たぶん、だけど: mysqladminを探すために cd /usr/bin するのは
意味がない(ほぼ間違いなくPATHに入っている)し、
意味があるとしたら(.をPATHに含むという意味で)危険。
0498デフォルトの名無しさん
2009/06/09(火) 22:30:10作者さんに要望しよう
0499デフォルトの名無しさん
2009/06/09(火) 22:31:591.9に正式に対応する予定の3系は現在アルファ
最近コミットないんだよな……
2系はgemあるよ。
0500デフォルトの名無しさん
2009/06/09(火) 22:33:18http://www.tmtm.org/ruby/mysql/
http://www.tmtm.org/mysql/ruby/
0502デフォルトの名無しさん
2009/06/09(火) 23:52:480503デフォルトの名無しさん
2009/06/09(火) 23:53:53> プログラムする為にこれだけ苦労するなんてばかばかしすぐる
作ったアプリを本番環境に配置するときのことを考えつつ
できるだけ早い段階でその手の苦労はしておくべきだと思いますお
0504デフォルトの名無しさん
2009/06/09(火) 23:55:430505デフォルトの名無しさん
2009/06/10(水) 01:25:22なんでやねん。これは明らかに、本来しなくていいはずの苦労だろ。
本番環境だろうが開発環境だろうが、配備に手間がかからないほうがいいに決まってる。
503のようなのは老害。昔を懐かしむのはいいけど、それが正しいと思い込んでいる。
あと、本番環境への配備をみんなが必要としているわけじゃない。
話題になっているから試してみたいだけの人、あるいはインフラチームが
別にいて自分はアプリを作るだけの人、あるいはerbを書かなきゃいけなく
なったデザイナー、いろんな人がいる。
そういう人のためにも、インストールが簡単になるにこしたことはない。
だから>>465はGJ。503みたいなやつを引退させるためにも、もっと問題提起すべき。
0506デフォルトの名無しさん
2009/06/10(水) 01:31:14気持ちは分かるけど、毒吐きすぎ
間違ったエスパーしすぎ
0507デフォルトの名無しさん
2009/06/10(水) 02:14:02というか、gemで配ってるんだからgem使えよ
aptでしかもUbuntuとかサードパーティの配布形態に文句いうとか
バカすぐる
0508デフォルトの名無しさん
2009/06/10(水) 03:05:26ttp://www.sinatrarb.com/faq.html#ar-migrations などを参考にしているのですが、左記のページにしたがって rake db:create などすると
「Don't know how to build task 'db:create'」と怒られます。
rake db:create / drop / migrate / rollback などのARで使えるタスクを使いたいのですが、どうしたらいいでしょうか?
0509デフォルトの名無しさん
2009/06/10(水) 03:56:23そのページには migrate しか定義されてないように見えるけど
君のrakefileには create/drop/rollback が定義されているのか?
0510デフォルトの名無しさん
2009/06/10(水) 05:26:22インストールは簡単だよ
(あれば)./configure で make で make install だ
これ以上簡単にすることは不可能
パッケージについての注文はパッケージ配布元にどうぞ
んで、Ubuntuユーザーとしては
「/var/lib/gems/1.8/binにPATH通せ」
なんだけども
0511デフォルトの名無しさん
2009/06/10(水) 05:34:49Ubuntu/Debian での gem はユーザーディレクトリにソースからインストールするのを推奨するのは確か
0512デフォルトの名無しさん
2009/06/10(水) 07:05:30> |File.read があるのに File.write が《無い》ことに、何か積極的な理由がある
> |のでしょうか?
>
> いえ。File.readほど使いそうな気がしないという消極的な理由です。
> メモリの無駄遣いを推奨するばかりのような気がして。対称性とか
> は無視の方向で。
でも99パーセントくらいは File.open(path, 'w'){|f| f.write(s)} と毎回書いてると思う
s の元の大きさで処理を変えてるなんて全く見ないけどな
0513デフォルトの名無しさん
2009/06/10(水) 08:10:31違う違う、ディストリビューションのパッケージをインストールしても、
バージョンが古かったり、rubyは入ってもyamlその他のライブラリは
別途インストールしなきゃいけなかったり、ディストリごとの細かい
違いがあって、それが初心者じゃ解決できないのが問題。
./configure; make; sudo make install も、知っている人には簡単だけど
知らない人にはまったく簡単ではないし、呪文としか思えない。
どれもRubyそのものの問題じゃないんだけど、現状では初心者にとっては
インストールすら困難であることが、古参のユーザにはまったく理解されてない。
configure のコマンドを
>これ以上簡単にすることは不可能
といって突き放すような古株の存在がいちばんの問題。
>んで、Ubuntuユーザーとしては
>「/var/lib/gems/1.8/binにPATH通せ」
>なんだけども
だから、そういう細かいことが初心者じゃ解決できないでしょ、といってんの。
0514デフォルトの名無しさん
2009/06/10(水) 08:24:34ディストリビュータに文句言え
以上
0515デフォルトの名無しさん
2009/06/10(水) 08:26:31そんなの知らんよ
0516デフォルトの名無しさん
2009/06/10(水) 08:29:150517デフォルトの名無しさん
2009/06/10(水) 08:29:51似たような問題で悩んでるのは別にUbuntuユーザーだけじゃないのは
ググればすぐに出てくる
プログラミングしたいのになかなかそこまでたどり着けないのは苦痛以外の
何者でもないだろう、初心者スレ的に考えて
0518デフォルトの名無しさん
2009/06/10(水) 08:38:51じゃあ初心者むけにどこまでやればいいってのよ?
俺は各種ディストリのパッケージシステムで十分簡単だとおもう。
Debianのパッケージシステムを使ってRailsがうまくインストールできないってのは
ディストリの問題であって、まったく別の話だしな。
0519デフォルトの名無しさん
2009/06/10(水) 08:39:460520デフォルトの名無しさん
2009/06/10(水) 08:41:15コマンドプロンプトの知識のない人が Windows で非 IDE プログラミングが勧められないのと同じように
0521デフォルトの名無しさん
2009/06/10(水) 08:45:55切り分けできないのは仕方がない
ただ、切り分けされたらきちんとそっちに文句言え
0522デフォルトの名無しさん
2009/06/10(水) 09:01:08少なくとも 1.8.6 でさえあればまったく問題ないし、
これを提供してないディストリはそれ自体がバージョンがひとつ過去のものなはずだ
で、WEBrick が動作しないというのは、ユーザー HTTPd が許可されてないとか、逆引きがうまくないとか、
Ruby そのものとは関係のない環境要因であることがとても多い
gem が動作しないというのも、パッケージの gem のバージョンが 0.9 くらいの糞版のままだとか、
> gem update --system is disabled on Debian.
> RubyGems can be updated using the official Debian repositories by aptitude or apt-get.
とかいう、そんなエラーを自作して止めるくらいなら
リポジトリの gem.deb をとっとと最新に更新しろやオラと言いたくなるようなディストリ固有の事情だったりするし、
パスが /var/lib/gems/1.8/bin に通ってなくて rails コマンドが動作しないというのも Debian の有名な話だ
(Debian は /usr/bin 系以外でのバイナリ実行はセキュリティ確保のためにフルパスを推奨している)
0523デフォルトの名無しさん
2009/06/10(水) 09:22:19素直に自分用にコンパイルしたほうがマシ
0524デフォルトの名無しさん
2009/06/10(水) 10:15:46構築できるディストリビューションは何なの? Debian系より Fedora とかの方がラク?
0525デフォルトの名無しさん
2009/06/10(水) 10:19:51Railsのインストール程度で手間取るやつにWebapp公開とかしてほしくない
0526デフォルトの名無しさん
2009/06/10(水) 10:30:35どれもたいして変わらない
どうせ最新版追従でソースからインストールすることになるし
(パッケージでは○○ですが最新版の△△をソースからインストールします、という解説ばかりなのに注目)
まあ Linux に慣れてないとインストールはできんが
Rails やるならそもそも Ruby には慣れてるだろうし問題はなかろう
0527デフォルトの名無しさん
2009/06/10(水) 11:11:17根本的にはWindowsが一番ラク
Linuxに限るなら>>526と同意見です
0528デフォルトの名無しさん
2009/06/10(水) 11:22:23Windows の InstantRails かと
Unixなら >>526 だな。
Ubuntu 8.04 LTSにRails入れたけど、ハマりどころはあったが、ググって見た手順で大体問題なかった。
手順は新たに自ドメインのwikiにまとめといたから、後学の人のためにもなると思う。
上であーだこーだいうているひとはUnixにそもそも慣れてないのではないかと思う。
0529デフォルトの名無しさん
2009/06/10(水) 11:22:28> Rails やるならそもそも Ruby には慣れてるだろうし問題はなかろう
ところがどっこい、プログラムをまったく書いたことのない人が、
「レイルズというのを使えば簡単にウェブプログラムがつくれるらしい」
くらいの認識でセミナーに来ていたりする。
0530デフォルトの名無しさん
2009/06/10(水) 11:43:44原因の見当くらいはついたのか
0531デフォルトの名無しさん
2009/06/10(水) 11:48:07全然
症状報告が下級戦士の間だけなので黙殺されている
有名な人のマシンで症状が起こってブチ切れるのを待ってる状態
0532デフォルトの名無しさん
2009/06/10(水) 11:57:38まあ、この辺が永遠に埋まらない溝なんでしょうね
0533デフォルトの名無しさん
2009/06/10(水) 12:01:45「初心者にも使いやすいようにすること」が絶対善だと考える人は
世の中から排除したほうがいいと思う
彼らは危険だ
0534デフォルトの名無しさん
2009/06/10(水) 12:19:080535デフォルトの名無しさん
2009/06/10(水) 12:20:11ヘッヘァー
まあとりあえずあれだ、「Railsは誰にも簡単スピーディ」という文言に騙された情jyいやコンピュータ初心者の被害者さんには
なんらかのフォローがいるんじゃないかとは思わなくもない
0536デフォルトの名無しさん
2009/06/10(水) 12:24:10「誰が作ってもほぼ同じようなプログラムが作れます」とか
0537デフォルトの名無しさん
2009/06/10(水) 12:27:10スレタイ見ろwww
スレタイ見た上で、Pyちょんやドジャンゴ勧めるなら言うことは何も・・・
0538デフォルトの名無しさん
2009/06/10(水) 12:29:06「ライトワンス・ランエニウェアによりあらゆる場所でプロダクトが動作する決定版言語です」
0539デフォルトの名無しさん
2009/06/10(水) 12:35:29スローガンだけは素晴らしかった
Rails持ち上げに騙される人でなくてもあれには乗っただろう
まーそれはそれとしてRubyの質問ある方どうぞ
0540デフォルトの名無しさん
2009/06/10(水) 13:38:22>PC-UNIXに限った話ではないが
>「初心者にも使いやすいようにすること」が絶対善だと考える人は
>世の中から排除したほうがいいと思う
>彼らは危険だ
おまえこそ、ここにくるなよ
初心者スレから排除したほうがいい
0541デフォルトの名無しさん
2009/06/10(水) 13:38:36そうでないのは動かないプログラムを書く奴が多いからで悪いのはjavaじゃない
0542デフォルトの名無しさん
2009/06/10(水) 13:49:58悪いけど俺も>>533の意見に反対はしないな
排除は言いすぎだけど、初心者は苦労してなんぼ
苦労や努力の伴わない学習は身につかないよ
0543デフォルトの名無しさん
2009/06/10(水) 13:50:05経理システムを初心者に使いやすいようにするために腐心するのは、きっと何かが違う
熟練者にとって使いやすいようにする、というものが存在してもよい
初心者は学習しなければ使いにくいものになるが、そのほうが好ましいこともあるだろう
0544デフォルトの名無しさん
2009/06/10(水) 14:03:320545デフォルトの名無しさん
2009/06/10(水) 14:12:37「彼らは危険だ」の理由が全く書いてないから何とも言えないな
ただほぼ例外なく言えるのは、
頭のいいやつはいかにして苦労せず効率的に学習するかを常に模索している。
結局そいつらは高いところを目指すからやはり苦労するのだが、
おまえが言ってる苦労とは質が違うものだと思う。
0546デフォルトの名無しさん
2009/06/10(水) 14:30:20初心者の全員が「頭のいいやつ」だったら良かったね
>>533の言っている「彼ら」は初心者を甘やかす人たちの事だろ
甘やかす、とは書かれてないけどそれの何が危険かくらいわかるだろ
0547デフォルトの名無しさん
2009/06/10(水) 14:43:13低レベルの苦労の押しつけの方がはるかにばかばかしいとは思う。
0548デフォルトの名無しさん
2009/06/10(水) 14:55:05そのたとえはおかしい。
「rubyとrailsのインストール」が危険なことならわからなくもないが、そうじゃないんだから、クレーンや経理システムに例えるのはおかしい。
0549デフォルトの名無しさん
2009/06/10(水) 14:55:23御免ね、俺口下手だからうまく説明できない
自分で模索してよ、頭いいんでしょ?
0550デフォルトの名無しさん
2009/06/10(水) 15:16:44おまえその返しは最悪だろw
端から見ても引くわ
0551デフォルトの名無しさん
2009/06/10(水) 15:36:200552デフォルトの名無しさん
2009/06/10(水) 17:01:210553デフォルトの名無しさん
2009/06/10(水) 17:08:100554デフォルトの名無しさん
2009/06/10(水) 19:15:440555デフォルトの名無しさん
2009/06/10(水) 19:16:07>低レベルの苦労の押しつけの方がはるかにばかばかしいとは思う。
完全に同意。しなくていい苦労と、したほうがいい苦労があるけど、
インストールで苦しむのは間違いなくしなくていい苦労。
0556デフォルトの名無しさん
2009/06/10(水) 19:23:06世の中にはLinuxを0から構築するディストリビューションだってあるんだ
0557デフォルトの名無しさん
2009/06/10(水) 19:26:52そもそも/var下にインストールされる時点でキモいんだが、なんでそうなったん?
0558デフォルトの名無しさん
2009/06/10(水) 19:27:14■質問する人へ
■回答する人へ
0559デフォルトの名無しさん
2009/06/10(水) 19:30:12手順をわかりやすくまとめるだけで、Windowsと遜色ないくらい
敷居が低くなるんだけどその辺が認識されてない
Rubyの初心者向けインストールガイドですらLinuxは詳しい人にやって貰えだもんな
0560デフォルトの名無しさん
2009/06/10(水) 20:08:49>構造を知りたいならインストールにはなれていたほうがいい
だれも構造を知りたいなんていってないし。どっからそういう話がでてきたのだろうか。つーか何の構造がわかるようになるの?
あと
./configure; make ; su make install
を入力したところで初心者には単なる呪文としか思えないから、勉強にはならない。
>世の中にはLinuxを0から構築するディストリビューションだってあるんだ
だからどうした?世の中にはもっとひどいのがあるから我慢しろとでもいうの?問題提起すら禁止なの?
>>557
>パス通せで済む話なのか。
全然。>>495にもあるじゃん。
> ここでzlibがないよって言われたらインストール
> $ cd ruby-1.8.7-p160/zlib
> $ sudo ruby extconf.rb --with-zilb-include=/usr/include -with- zlib-lib=/usr/lib
> $ make
> $ su make install
こんなの、初心者は解決できない。こういう環境依存・ディストリ依存のつまづきが存在することを
古株のおやじは見ぬふりをする。
0561デフォルトの名無しさん
2009/06/10(水) 20:18:52って野良ビルドかよ。まあいいか。
0562デフォルトの名無しさん
2009/06/10(水) 20:19:210563デフォルトの名無しさん
2009/06/10(水) 20:22:35gems.rubyforge.orgってなくなったの?
0564デフォルトの名無しさん
2009/06/10(水) 20:24:310565デフォルトの名無しさん
2009/06/10(水) 20:24:550566デフォルトの名無しさん
2009/06/10(水) 20:55:31おまえも頭冷やしてもう寝ろ
痛々しい
0567デフォルトの名無しさん
2009/06/10(水) 23:57:58って、ruby使って見たんだが、いまいちよさがわからない。
全てがオブジェクトって、戸惑うのは最初だけかな
他の言語も最初はそうだし
0568デフォルトの名無しさん
2009/06/11(木) 00:02:48との信念の元で設計されているし、現に支持者もそれなりにいる
ただもちろん、合う合わないはあるとは思う
0569デフォルトの名無しさん
2009/06/11(木) 00:08:03参考書読みながらやってるけど、
何か独特の癖がある感じがする…
0570デフォルトの名無しさん
2009/06/11(木) 00:37:250571デフォルトの名無しさん
2009/06/11(木) 00:41:350572デフォルトの名無しさん
2009/06/11(木) 00:42:210573デフォルトの名無しさん
2009/06/11(木) 00:47:330574デフォルトの名無しさん
2009/06/11(木) 05:01:57自然言語で記述できるBASIC
0575デフォルトの名無しさん
2009/06/11(木) 05:25:54すぐにメソッドつきのデータ入れとしか思えなくなるから安心しろ
あらゆるものがオブジェクトであるとか大仰に思えるのは最初の1週間だけ
0576デフォルトの名無しさん
2009/06/11(木) 06:14:57深く知ればおのずと良さが分かるんだろうけど、勉強したてじゃかなり難しい
やはり最初は何か書籍がいいと思うが、最初の1冊ってかなり重要だと思う
0577デフォルトの名無しさん
2009/06/11(木) 19:01:10いくつか it "..." do ... end があって、同じ初期か処理をする場合は before do ... end を使いますが、
それぞれ初期化処理が違う場合ってどうかけばいいですか。
今は it "..." do ... end の中に個別の初期か処理を書いています。
0578デフォルトの名無しさん
2009/06/11(木) 19:15:30複数の、もしくは入れ子方式のdescribe(context)を使う
0579デフォルトの名無しさん
2009/06/11(木) 19:17:22できれば簡単なサンプルを書いていただけますか。すみません。
0580デフォルトの名無しさん
2009/06/11(木) 19:45:19describe do
before(:each) do
end
it do
end
end
describe do
before(:each) do
end
it do
end
end
0581デフォルトの名無しさん
2009/06/11(木) 19:52:02実際にはdescribeやitにも引数(説明)が必要
0582デフォルトの名無しさん
2009/06/11(木) 19:58:07webrickが起動しなくなったので、 ttp://d.hatena.ne.jp/unageanu/20090525/1243268383 の通りにして起動させています。
マニュアルによれば、.rbを編集してもwebrickは自動で再読み込みしてくれるとありますが、されないようです(コントローラに p "hoge" などを追記して確認しました)
再読み込みさせるにはどうしたらいいですか?
0583デフォルトの名無しさん
2009/06/12(金) 00:50:360584デフォルトの名無しさん
2009/06/12(金) 17:54:41「データ入れ」という考えだとハマるぞ、rubyでは。
0585デフォルトの名無しさん
2009/06/12(金) 18:05:19データが入ってないとオブジェクトの区別すらできないじゃん
AというオブジェクトとBというオブジェクトを区別するための情報ってデータだろ?
0586デフォルトの名無しさん
2009/06/12(金) 18:19:19オブジェクトと変数をごっちゃにするなって話だろ
> AというオブジェクトとBというオブジェクトを区別するための情報ってデータだろ?
区別する、の意味による。eql? と equal?
0587デフォルトの名無しさん
2009/06/12(金) 18:53:520588デフォルトの名無しさん
2009/06/12(金) 19:00:240589デフォルトの名無しさん
2009/06/12(金) 19:33:01君の考えは
日本語もろくに扱えないのに英語勉強してるようなもんだ
0590デフォルトの名無しさん
2009/06/12(金) 20:42:100591デフォルトの名無しさん
2009/06/12(金) 20:53:49アンカーつけることを知らないのか、
自分の発言に自信がないのか
わからんが、
基礎の話なのに
日本語もしゃべれずにあちこち手を広げたところで身につかねぇよm9(^Д^)プギャー!!
0592デフォルトの名無しさん
2009/06/12(金) 22:33:27お前は「英語を勉強するより前に、まずラテン語の基礎を学べ」と言われてそれを学ぶのか?
0593デフォルトの名無しさん
2009/06/12(金) 22:53:050594デフォルトの名無しさん
2009/06/12(金) 23:02:280595デフォルトの名無しさん
2009/06/12(金) 23:26:060596デフォルトの名無しさん
2009/06/12(金) 23:48:21データのいれものなの?
オブジェクトのいれものなの?
0597デフォルトの名無しさん
2009/06/12(金) 23:51:20文字が何文字あるのか、
カウントするプログラムはどう書くの?
0598デフォルトの名無しさん
2009/06/12(金) 23:56:08return 3
end
0599デフォルトの名無しさん
2009/06/13(土) 00:43:13m(__)m ゴメン日本人に話しかけて他と思い込んでいたよ。
0600デフォルトの名無しさん
2009/06/13(土) 01:33:10return 3 と書いてあるから、たぶん日本語は読めてるんじゃないかな。質問の回答がわからなかっただけで。許してやってくれ。
>「最終回」って文字列を取得して、
どこからどう取得するのか分からんから答え用がない。
>文字が何文字あるのか、
一文字ずつ分解して数えればいい。
ttp://www.ruby-lang.org/ja/man/html/FAQ_C6FCCBDCB8ECA4CEBCE8A4EAB0B7A4A4.html
の
10.4 日本語を含む文字列から1文字ずつ文字列を取り出すにはどうしますか
をみてくれ。
0601デフォルトの名無しさん
2009/06/13(土) 05:59:59変数の話なんて別にしてないじゃん
何かデータというもやもやしたものが形になったのがオブジェクトだろ
データが入れ物に入ったと言っても、まあ別にそう間違いでもない
ちなみにRubyの変数はラベルというメタファが一番近い
オブジェクト自体はRubyが管理してるオブジェクト置き場から一歩も動かない
ラベルをオブジェクトにぺたぺた貼ってそのラベルの名前で呼ぶ
ラベルが1枚も貼られてないオブジェクトは誰も使わないゴミとしてメモリから定期的に取り除かれる
0602デフォルトの名無しさん
2009/06/13(土) 06:16:260603デフォルトの名無しさん
2009/06/13(土) 07:39:06CPU占有率が偉く高くなる問題って報告されて無いでしょうか?
いつまでたっても直らないので気になってます。
うちの環境でcsrss.exeとruby.exeで計18%くらい、ワンコア計算で72%くらい消費します。
プロンプト待機で、何もしていなくてもです!
環境:Windows Vista SP2(32bit)
>ruby --version
ruby 1.8.7 (2008-06-20 patchlevel 22) [i386-mswin32]
0605デフォルトの名無しさん
2009/06/13(土) 09:19:53猫がいろんな軒先でえさをもらう時に
それぞれの家で
「タマ」とか
「ショコラ」とか
「プリン」とか
それぞれ別名で呼ばれるのと一緒か
猫は猫なのに
0606デフォルトの名無しさん
2009/06/13(土) 09:20:50シュールだ
0607デフォルトの名無しさん
2009/06/13(土) 13:02:15これは一応既知の仕様でいいですか?
0608デフォルトの名無しさん
2009/06/13(土) 13:15:020609デフォルトの名無しさん
2009/06/13(土) 13:53:25gem: --no-ri --no-rdoc
と ~/.gemrc に書いておく。
0610デフォルトの名無しさん
2009/06/13(土) 14:52:00例えば
str = "abc"
str2 = str
str2.chop!
とするとstrとstr2は同じオブジェクトを指しているので
strも"ab"となるのは理解できました。ですが、
str = "abc"
str2 = str + "d"
str2.chop!
str2.chop!
としても、strは"abc"のままです。
ということはstr2 = str + "d"というのは、新しく"abcd"というオブジェクトが
作られて、それをstr2が指したということになるのでしょうか?
0611デフォルトの名無しさん
2009/06/13(土) 15:00:52ドキュメントを事前に生成してから配布ってやるとやたら容量でかくなるんだよね
サーバ資源の温存に協力してると思ってください
>>610
yes
同様にString#chopなら新しくオブジェクトが作られるし
String#+の代わりにStrng#<<を使えば破壊的(オブジェクト書換)になる
str2 = str
str << "d" # str2 == "abcd"
str3 = str2.chop
# str2 = str << "d"
ちなみに代入と破壊的メソッドを同時に使うのは
返値の関係でできないことがあるから、避けておいた方が無難
0612デフォルトの名無しさん
2009/06/13(土) 15:02:000613デフォルトの名無しさん
2009/06/13(土) 15:03:40その例えいいな。これから使わせてもらおう
0614デフォルトの名無しさん
2009/06/13(土) 15:07:470615デフォルトの名無しさん
2009/06/13(土) 15:08:29>C:\Documents and Settings\hoge>ri String#+
> --------------------------------------------------------------- String#+
> str + other_str => new_str
> ------------------------------------------------------------------------
> Concatenation---Returns a new +String+ containing _other_str_
> concatenated to _str_.
>
> "Hello from " + self.to_s #=> "Hello from main"
0616デフォルトの名無しさん
2009/06/13(土) 15:12:50そして保健所の仕事が悪いと野良猫が溜まって不衛生に・・・
0617デフォルトの名無しさん
2009/06/13(土) 15:46:450618デフォルトの名無しさん
2009/06/13(土) 16:34:03つまりは、rdoc や ri は
「実際の規模のライブラリのマニュアルを生成させると、気になるくらいに処理が遅い」
ということだ
速くなる予定は今のところ特にないので、新しいマシン買うか寝てる間にインストール済ませろ
0619デフォルトの名無しさん
2009/06/13(土) 16:40:37ありがとうございます。よくわかりました。
0620デフォルトの名無しさん
2009/06/14(日) 00:04:28目標としては、(勝手な記述ですが) puts "キーコードは #{ruby_key}" とか書いて
Bキーが押される → キーコードは 66
1キーが押される → キーコードは 97
Ctrl+F → キーコードは 17と70
という感じで表示したく思います。
環境は、WinXPのRuby1.8.6です。
0621620
2009/06/14(日) 01:01:31Rubyの動作をアプリケーションのショートカットキー操作のように制御したく
思っています。
そのために、キーコードの把握をしたいです。
動作制御の例としては、Ctrl+Shift+T → 指定した外部txtの読み込み
0622デフォルトの名無しさん
2009/06/14(日) 03:03:34最初に間違いを指摘しておくと文字コードはキーコードではない
文字 B の値が 66(0x42) の場合は文字コード(アスキーコード)
押されたキーを判別する方法はプログラムの動作環境によって異なる
文字端末ならgetc,gets,curses、GUIライブラリなら個別に専用のメソッドを使う事になる
# 通常は文字コードで取得出来る、キーコードを取得出来る場合もある
だから、どんな環境でどのライブラリを使ってプログラムを作りたいのか
を教えてもらわないと答えられない
ちなみに文字の文字コードはこうすればわかる
s = "Bye"
puts s[0] #=> 66
0623デフォルトの名無しさん
2009/06/14(日) 06:28:57作ったのですが、これでrbファイルを生成しても(それが正しく動作するものであっ
ても)DOSプロンプトでEnterを押すと何も起こらず(無視されて)、次のコマンド
入力の『>』が出ます。
※ 普段はWinXP-ProのWordPadを使用
この「スルーされた」rbファイルもWordPadで再度保存すると正常に動作します。
しかしオリジナルのRubyエディタではUTF-8とShift-JISの両方でrbファイルを生成
していますが、両方共スルーされます。
考えられる原因は何でしょうか?
必要であれば、オリジナルのRubyエディタで生成させたrbファイルをUpできます。
(普通にRubyのアイコンになりますが・・・)
0624デフォルトの名無しさん
2009/06/14(日) 07:51:27状況は分かってもそのファイルがどうなってるのか分からないから
0625デフォルトの名無しさん
2009/06/14(日) 09:23:53としても何も出ない
C:> ruby wpedit.rb
と実行すれば期待通りに実行するってこと?
文字コードや改行コードを確認してみちゃどうかな
0626623
2009/06/14(日) 13:51:35レス有難うございます。
http://uproda11.2ch-library.com/182353GSO/11182353.zip でUpしました。
構成は、2個のRubyファイル(hello.rb,OSC04b.rb)とUpローダー下限サイズ
調整用のJPG1枚です。
hello.rbは単純に puts "Hello, World" だけで、OSC04b.rbは周期的にランダムな
値が画面で表示されるものです。共にこのままでは前述の通りスルーされますが、
WordPadで同名で同じ場所に保存(つまり上書き)すると正常に動作します。
当方の開発環境は、WinXP-Pro(SP2),メモリ3.24GB,実行ソフトは書籍「初めての
Rubyプログラミング」秀和システム(著:山本 団)に付録していたActiveRubyを
使っています。
(実際の実行操作はDOS上です)
0627デフォルトの名無しさん
2009/06/14(日) 14:00:33# hello.rb^Mputs "Hello, World"^M
となっている。
改行コードが ^M だな。
全部先頭のコメント行として扱われているのでは?
0628デフォルトの名無しさん
2009/06/14(日) 14:24:47>>627の言う^M ってのは、文字コードで言うと 0x0D(CR)だねえ
これを標準の改行コードと見なすのはMacだけでは
0x0A もしくは 0x0D 0x0A で保存できるように、その自作エディタとやらを
修正するのがいいとおも
0629デフォルトの名無しさん
2009/06/14(日) 14:30:14何ぞこれ
0630デフォルトの名無しさん
2009/06/14(日) 14:39:05しかし正直に言うとだな、、おっと誰か来たようだ。
0631623&626
2009/06/14(日) 15:16:06さんきゅうです。rbファイル保存時の改行を0x0Dでなく0x0Aにして解決しました!
>>629-630
主な目的はサイズ調整用です。
0632デフォルトの名無しさん
2009/06/14(日) 18:15:040633デフォルトの名無しさん
2009/06/14(日) 20:03:23OS9までな。
OSXはUNIX改行コード。
0634デフォルトの名無しさん
2009/06/15(月) 14:08:08レス有難うございます。
プログラムの目的はSocket通信で、ライブラリはsocketとthreadを使っており、
実行は通常のDOSでやっています。
とりあえず文字コードを先に把握しようと思い、下のkeyIn_02.rbを書きました。
# keyIn_02.rb
chars = "abcdefghijklmnopqrstuvwxyz 0123456789"
#
i = 0
for i in chars
puts "#{chars[i]}\n"
i+=1
end
しかし、自己代入のところで
keyIn_02.rb:7:in `+': can't convert Fixnum into String (TypeError)
と出ます。どうすべきでしょうか?
0635デフォルトの名無しさん
2009/06/15(月) 14:16:48DOSってmsdjppか?
> i = 0
> for i in chars
> i+=1
iが被ってる
0636デフォルトの名無しさん
2009/06/15(月) 14:16:49Ruby では for 構造をまず使わない
どのくらい使わないかというと、それのどこが間違ってるかマニュアルを確かめないと指摘できないくらい使わない
str = "abcdefghijklmnopqrstuvwxyz 0123456789"
0.upto(str.size) do |i|
puts str[i]
end
0637デフォルトの名無しさん
2009/06/15(月) 14:17:01てか ruby らしいスクリプトという観点からは、for はあまり使わない。
0638デフォルトの名無しさん
2009/06/15(月) 14:21:49ループの部分を下に置き換えて実行してみ
for i in chars
puts i
exit
end
0639デフォルトの名無しさん
2009/06/15(月) 14:28:02>>621に書いてある「Ctrl+Shift+T → 指定した外部txtの読み込み」と
Socket通信の繋がりがいまいちわかんない
デスクトップアプリとかユーティリティとか作りたいんじゃないの?
0640デフォルトの名無しさん
2009/06/15(月) 15:27:03てか、 for ってわかりにくいよな
あれを使いこなせる人は素直に尊敬する
0641デフォルトの名無しさん
2009/06/15(月) 15:49:020642デフォルトの名無しさん
2009/06/15(月) 17:41:311.8.7以降ならeach_char使うのがベストかと
エラーメッセージから7行目のiがStringになってると把握できるからそこから解決策を導けるようになって欲しい。
0643デフォルトの名無しさん
2009/06/15(月) 20:21:42MOONGIFTの記事よんでもイマイチよくわからない
MOONGIFT: ≫ メッセージを転送するWeb Hooksサーバ「Watercoolr」:オープンソースを毎日紹介
http://www.moongift.jp/2009/06/watercoolr/
公式:
Watercoolr - Gossip for web applications
http://watercoolr.nuklei.com/
0644デフォルトの名無しさん
2009/06/15(月) 20:22:31ソース:
jcapote’s watercoolr at master - GitHub
http://github.com/jcapote/watercoolr/tree/master
0645デフォルトの名無しさん
2009/06/15(月) 20:34:42これを頼りに自分から何かするサイトじゃない
他のサイトで紹介解説されてから手を出すのが吉
0646デフォルトの名無しさん
2009/06/15(月) 20:40:26その、「他のサイトで紹介解説」しようとしているのが643なんじゃないかな。
で、webhookはHTTPを理解してないとつらいような気がする。
643はHTTPの理解はOK? 理解してたら公式サイトの絵で十分分かると思うよ。
0647デフォルトの名無しさん
2009/06/15(月) 20:41:58ttp://watercoolr.nuklei.com/images/cooler.jpg
0648634
2009/06/15(月) 21:17:42レス有難う。
636さんの記述を下記のように改変して上手くいきました。
# KeyIn_03.rb
chars = "abcdefghijklmnopqrstuvwxyz 0123456789"
0.upto(chars.size) do |id| # 1.upto()だと98から始まる
if id < chars.size then
puts chars[id]
end
end
>>639
具合的には(621に書いている通り)キーによるRubyの動作制御です。
今回は [a〜z]:97〜122,[0〜9]:48〜57 は分かったのですが、やはり
CtrlキーやPauseキーのコードが分かりません。DOSプロンプトのバージョンは
Microsoft Windows XP [Version 5.1.2600]
です。
Rubyではキー定数というのはないのでしょうか?
(ググりましたが公式のページには見つかりませんでした)
0649デフォルトの名無しさん
2009/06/15(月) 21:29:46リアルタイムキー入力てーと、OSがハードウェアをどう抽象化してるか、
っていうわりと低いレベルのものだから、ネイティブなAPI(ioctlとかWin32APIとか)を使う必要がありそう。
0650デフォルトの名無しさん
2009/06/15(月) 21:41:22windows-prにそのへんの定義が・・・キーコードはないのか
gccあたりからwin32apiのヘッダファイルもらってきて確認するのが王道だと思うけど
その程度なら受け取ったキーコードをそのまま吐き出すコード書いて
実際にコンソールでキー入力してみたほうが早い
でもどうやってキー入力を監視してる?
getsじゃキーから文字入力を受け付けることはできても
キー自体を監視してるわけじゃないからpauseとか無理なはず
aが97っていうのもキーコードではなく文字コードだろうし
0651デフォルトの名無しさん
2009/06/15(月) 21:42:380652デフォルトの名無しさん
2009/06/15(月) 21:46:18どんな言語でも普通は標準入力を扱うから、
それで入力できないものは標準のやりかたでは取得できないんじゃないかな。
例えばCtrlキー単独とか。
DOSプロンプト用のプログラムも標準入出力が基本で、
リアルタイムのキー入力は昔ならBIOSやハード直接、今ならOSのAPIで取得するものかと。
0653デフォルトの名無しさん
2009/06/15(月) 21:53:580654デフォルトの名無しさん
2009/06/15(月) 22:08:05こんなものを投下してみる。
require 'Win32API'
getkey = Win32API.new("user32", "GetAsyncKeyState", "I", "I")
loop do
puts "ctrl\n" if getkey.call(0x11) != 0 then
end
Win32APIでgetAsyncKeyStateを呼び出して現在のキー状態をチェックする。
なんとなく!=0ではマズい気がするが。
ってゆーか仮想キーコードってどうやって調べればいいんだろね。
winuser.h参照って言ってもみんなが持ってるわけでもなし。
0655654
2009/06/15(月) 22:10:51最後に確認してから書き込めと。
0656デフォルトの名無しさん
2009/06/15(月) 22:30:38ところで"define VK_RETURN"でぐぐったらこんなん出たで
ttp://www.freefoote.com/f3c/documentation/vkey.html
0657デフォルトの名無しさん
2009/06/16(火) 00:31:55抜き出した情報 A B Cを
配列に"#{A} #{B} #{C}"
といった形で入れる際に、Cが空でも空として代入してしまいます。
変数が空かどうかを調べる条件式はどのようにすればいいでしょうか
0658デフォルトの名無しさん
2009/06/16(火) 00:42:090659デフォルトの名無しさん
2009/06/16(火) 01:31:12そういうのは言葉で説明するよりサンプルコード用意したほうがいいよ
たぶんこんな感じじゃないかと思う
m = /(\S)(\S)(\S)?/.match("ab")
a, b, c = m[1], m[2], m[3]
array << "#{a} #{b} #{c}"
このとき正規表現にマッチはしても3番目のキャプチャはないからcはnilになる
そのため配列に加わるのは"a b "になるけど
質問はこれを"a b"にしたいってこと・・・と予想はしてみたけどなんか違う気がする
悪いけど実例交えてもう一度質問をお願い
0660デフォルトの名無しさん
2009/06/16(火) 03:41:35コレ読んだらなんとなくわかりました。
はてなブックマーク Web Hookとは - はてなキーワード
http://d.hatena.ne.jp/keyword/%A4%CF%A4%C6%A4%CA%A5%D6%A5%C3%A5%AF%A5%DE%A1%BC%A5%AF%20Web%20Hook
webアプリでイベントが合った時に、別のCGIやwebサービス(のURL)を呼び出してもらうものでよいのかな。
0661デフォルトの名無しさん
2009/06/16(火) 05:25:04たぶん正しい
マッチの取得に scan のブロックと $1 や $2 を使っているのだろう
これだと「増減」に一発対応できなくて非常にめんどくさい
まあ、現実的な解は
・ scanでマッチを行う
・ $1 や scan の返り値などを使って結果を取得、一時的な変数に全部入れる
・ 個々の変数が空かどうかを .empty? などで調べて、配列に入れるためのデータを整形する
・ 配列に入れる
という手順を踏むことだと思う
0662デフォルトの名無しさん
2009/06/16(火) 08:26:20arr.each do |e|
if e.is_a?(Array)
e.each(&block) # ここでブロックを再帰的に呼び出したい
else
puts e
end
end
実際のコードはちょっと違うんですけど、ブロックを再帰的に呼び出したいというのが目的です。
0663デフォルトの名無しさん
2009/06/16(火) 09:51:180664デフォルトの名無しさん
2009/06/16(火) 09:55:31[1,2,3].each do |e|
end
というブロックがあったとして、each を認識することも [1,2,3] を認識することもできない
>>663のようにしたほうがわかりやすいし速い、というのが作者の弁
0665デフォルトの名無しさん
2009/06/16(火) 10:01:54f = proc do|e|
if e.is_a? Array
e.each do |e|
f.call e
end
else
puts e
end
end
arr.each do|e|
f.call e
end
0666デフォルトの名無しさん
2009/06/16(火) 10:02:38教祖が信者の環境の世話までする訳が無い。修行して教祖と同じ高みまで上ってこいとか言われるだけ。
0667デフォルトの名無しさん
2009/06/16(火) 12:09:400668デフォルトの名無しさん
2009/06/16(火) 12:44:30なぜそこまで&を憎む
0669デフォルトの名無しさん
2009/06/16(火) 12:50:41> m = /(\S)(\S)(\S)?/.match("ab")
array << m[1..3].compact.join(" ")
0670デフォルトの名無しさん
2009/06/16(火) 12:57:48&で書ける?
直感的には&で書けるような気がしたんだけど、
それはイテレータ(ブロック引数をとるメソッド)を自分で書く場合であって、
この場合みたいに、イテレータに渡すブロックの中でどうにかしたい場合は
&じゃどうにもならないと思ったんだけど。
0671デフォルトの名無しさん
2009/06/16(火) 13:02:58f = proc do|e|
if e.is_a? Array
e.each(&f)
else
puts e
end
end
arr.each(&f)
0672デフォルトの名無しさん
2009/06/16(火) 13:10:56忘れてた。受ける側しか使いこんでなかったw
0673デフォルトの名無しさん
2009/06/16(火) 13:15:480674デフォルトの名無しさん
2009/06/16(火) 13:16:280675デフォルトの名無しさん
2009/06/16(火) 13:18:19回答側が提示したてきとーな具体例を最適化して誰が得するのかw
0676デフォルトの名無しさん
2009/06/17(水) 01:05:23rake の途中で Makefile が作られてるんだけど、その Makefile を編集した上でコンパイルしたいです
ruby extconf.rb で Makefile を作ることはできたんだけど、これを組み込んで rake する方法がわかりません
rake tmp/中略/Makefile で tmp ディレクトリで使う Makefile だけを作ることもできたんだけど、
これから「再開」させる方法がわかりません
Makefile は extconf.rb を反映してるということがわかったんだけど、ま
0677デフォルトの名無しさん
2009/06/17(水) 10:12:010678デフォルトの名無しさん
2009/06/17(水) 10:16:230679デフォルトの名無しさん
2009/06/17(水) 12:40:31既存のPDFを弄れるRubyのライブラリはありませんでしょうか?
JavaのiTextみたいなのです。
1から生成するタイプのPDFライブラリだと、↓Prawnのようにいろいろ見つかるのですが…。
http://prawn.majesticseacreature.com/
既存のPDFを読み込んで要素を追加するようなものと、となるとなかなか見つかりません。
既存のものに外部ツールで上にのっけるみたいなのでもいいので、何かRubyでできる方法があればなーと思います。
0680デフォルトの名無しさん
2009/06/17(水) 13:41:12ググれば一発だろ
PDF Ruby ライブラリ - Google 検索
http://www.google.com/search?hl=ja&num=50&q=PDF+Ruby+%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja
0681デフォルトの名無しさん
2009/06/17(水) 16:53:07本に記載してあったサンプルを試したところ、データの送受信は成功しましたが、
分からない点が2つ出ましたので質問させて頂きます。
※コードは全文記載すると著作権上問題がありますので、若干改変しています。
# サーバー側
require 'drb'
obj = ["drb", "server"]
DRb.start_service("druby://localhost:54321", obj)
DRb.thread.join # (本より)必ずスレッドが終わるのを待つこと!
# クライアント側
require 'drb'
DRb.start_service
obj = DRbObject.new_with_uri("druby://localhost:54321")
obj.each{|i|
p i
}
Q1) 「必ずスレッドが終わるのを待つこと!」とは、具体的にどういう作業が
要求されるのでしょうか?
Q2) クライアントに "drb" "server" と出た後もサーバーは稼動状態になっています。
サーバーの処理を終了するにはどうしたら良いでしょうか?
0682デフォルトの名無しさん
2009/06/17(水) 17:15:23A1
そのまんまThread#join
メインスレッド(普段意識せずに処理を行なわせてる部分)が処理を全て終えると
子スレッドがどんな状況だろうとruby全体を終了させるから
子スレッドの終了を待つにはメインスレッドを待機させる必要がある
そしてThread#joinはその子スレッドが終わる(合流する)まで待機するメソッド
A2
Signal.trap(:INT) { DRb.stop_service }
と書いておいてInterrupt起こせばよかったと思う
0683デフォルトの名無しさん
2009/06/17(水) 21:43:16有難うございます。
やってみます。
0684デフォルトの名無しさん
2009/06/17(水) 21:44:370685デフォルトの名無しさん
2009/06/17(水) 22:13:57偶数は省く、元となる値の1/2まで総当りで割り切れるか
という条件の下でやってみたら、2..10000で10秒…
エラトステネス使えば全然早いんだろうけど
0686デフォルトの名無しさん
2009/06/17(水) 22:24:43おなじことをpythonやjava、perlでやったらどうなの?
0687デフォルトの名無しさん
2009/06/17(水) 22:51:06結果だけでなくソースも晒してくれると参考になる。
実行環境およびRubyのバージョンもあるといいな。
0688デフォルトの名無しさん
2009/06/17(水) 23:22:54なんの検証にもなってない
0689デフォルトの名無しさん
2009/06/17(水) 23:30:580690デフォルトの名無しさん
2009/06/18(木) 00:16:35N = 1000000
prime_cand = Array.new(N + 1)
2.upto(Math.sqrt(N)) do |i|
unless prime_cand[i]
(i * 2).step(N, i) {|k| prime_cand[k] = 1 }
end
end
(2 .. N).each {|i| puts "#{i}" unless prime_cand[i] }
0691デフォルトの名無しさん
2009/06/18(木) 00:21:04#include <math.h>
#define N (1000000)
int main() {
int prime_cand[N + 1] = {0};
prime_cand[1] = 1; //1は素数でない
for (int i = 2; i < sqrt(N); i++)
if (0 == prime_cand[i])
for (int k = i * 2; k <= N; k += i)
prime_cand[k] = 1;
for (int i = 1; i < N + 1; i++)
if (0 == prime_cand[i])
printf("%d\n", i);
return 0;
}
0692デフォルトの名無しさん
2009/06/18(木) 00:24:39public static void main(String[] args) {
final int n = 1000000;
final boolean prime_candidate[] = new boolean[n + 1];
prime_candidate[1] = true; //1は素数でない
for (int i = 2; i < Math.sqrt(n); i++)
if (!prime_candidate[i])
for (int k = i * 2; k <= n; k += i)
prime_candidate[k] = true;
for (int i = 1; i < prime_candidate.length; i++)
if (!prime_candidate[i])
System.out.println(i);
}
}
0693デフォルトの名無しさん
2009/06/18(木) 00:35:292chなめんなよ、クズm9(^Д^)プギャー!!
0694デフォルトの名無しさん
2009/06/18(木) 00:48:490695デフォルトの名無しさん
2009/06/18(木) 01:56:01割と可読性無視な方法
2が素数とみなされないのは仕様
N=10000 >> 1
result = Array.new
i=nil; i2=nil; j=nil
1.upto N do |i|
i2 = i << 1 | 1
result << i2 if 2.upto(i){|j| break nil if i2 % j == 0}
end
puts result
0696デフォルトの名無しさん
2009/06/18(木) 02:52:07>N=10000 >> 1
と
>i2 = i << 1 | 1
ってどういう意味?
0697681
2009/06/18(木) 04:57:57また、trap(:INT) → trap(:EXIT) も試しましたが駄目でした。
どうすべきでしょうか?
0698デフォルトの名無しさん
2009/06/18(木) 08:10:44え、いや、もちろん検索はしたのですが、
1から生成するライブラリばかりで、既存のものを読み込んで追記できるライブラリが見つからないのです・・・
0699デフォルトの名無しさん
2009/06/18(木) 08:21:55既存のPDFを読み込んで追記するには、既存のPDFをパースできるライブラリが必要。
たぶんそういうのがまだないんじゃないかな。しらんけど。
0700デフォルトの名無しさん
2009/06/18(木) 08:25:51ruby-listとかのメーリングリスト生きてるからそこで聞いてみたら?
0701デフォルトの名無しさん
2009/06/18(木) 08:26:04フォントのサブセット埋め込みにも対応してるっぽくてよさげに見えるが
0702デフォルトの名無しさん
2009/06/18(木) 08:28:110703デフォルトの名無しさん
2009/06/18(木) 09:56:24人のやることを糞呼ばわりして何もしないよりはね
0704デフォルトの名無しさん
2009/06/18(木) 10:09:07立たないよ。結果だけが曲解されながら独り歩きして風評が広まるので、むしろ害悪。
0705デフォルトの名無しさん
2009/06/18(木) 10:39:57風評が広まるのは、正しい情報を知っている人が正しい情報を広める努力をろくにしていないから。
0706デフォルトの名無しさん
2009/06/18(木) 10:46:24悪貨は良貨を駆逐する。
はっきり言って10倍努力しないと、まともな情報を広めることなんてできない。
そんなことするぐらいならコード書きますわ。
0707デフォルトの名無しさん
2009/06/18(木) 10:56:100708デフォルトの名無しさん
2009/06/18(木) 11:01:34アルゴリズムがどーたらいわれてもな、全て同じアルゴリズムで書けばいいだけだ。
つーか、rubyに最適化されたアルゴリズムがあるなら、それを教えてほしいくらいだな
rubyの場合、こうかけば早い!ってな
0709デフォルトの名無しさん
2009/06/18(木) 11:03:34する前から言い訳ばかりだな。
まずはしてから言おうぜ。
0710デフォルトの名無しさん
2009/06/18(木) 11:18:09君は相当優秀か、相当馬鹿なのかどちらかだろうな
0711デフォルトの名無しさん
2009/06/18(木) 11:22:41マジレスすんなよw
どっちかというと>>706みたいな自分では何もしないのに人の邪魔するやつこそが悪貨。
黙ってコード書いとき。
0712デフォルトの名無しさん
2009/06/18(木) 11:24:480713デフォルトの名無しさん
2009/06/18(木) 16:16:33手元の1.8.6 mswin32で試してみたらInterrupt自体が押した時には起きないね
たしかsocketの仕様がそんなだったかも
次にアクセスしたとき(socketのブロックが終わった時)に遅れて発生する
おまじないみたいな話だけど、これを足すと反応するようになった
Thread.start{ loop{ sleep 5 } }
0714デフォルトの名無しさん
2009/06/18(木) 17:08:15今頃になってから言うのもなんだけどsignalにこだわる必要なくない?
DRb.thread.join の替わりに gets 書いとけばいいと思うんだけど
0715デフォルトの名無しさん
2009/06/18(木) 17:12:270716デフォルトの名無しさん
2009/06/18(木) 17:26:12それのほうが手っ取り早いんだけど、環境書いてないからgetsは避けた
ttp://www.ruby-lang.org/ja/man/html/trap_timeout.html
0717デフォルトの名無しさん
2009/06/18(木) 19:16:250718デフォルトの名無しさん
2009/06/18(木) 19:17:030719デフォルトの名無しさん
2009/06/18(木) 20:42:43この2つのコマンドを、それぞれ引数にクラス名やメソッド名を取って使っているのですが、他に使い方はありますか?
0721デフォルトの名無しさん
2009/06/19(金) 06:43:36だったらruby勉強しておけば
Jrubyは特に勉強することってない?
0722デフォルトの名無しさん
2009/06/19(金) 06:59:44・Javaアプリのデプロイの方法
他詳しい人頼む
0723デフォルトの名無しさん
2009/06/19(金) 07:11:250724デフォルトの名無しさん
2009/06/19(金) 07:22:08prime_arr = Array.new
max = 10000
2.upto max do |x|
if(prime_arr[x] == nil)
2.upto max do |y|
if(y*x) < max
prime_arr[x*y} = 1
end
end
end
end
これで、一千万なら65sec
10億までやったらメモリ4G食い尽くした上に
スワップを数G単位で消費して未だにおわん…
0725デフォルトの名無しさん
2009/06/19(金) 07:24:45if (y*x) < max
prime_arr[x*y]
else
break
end
ね
0726デフォルトの名無しさん
2009/06/19(金) 07:29:31Java使えない人は素直にCRubyやっとれ
0727デフォルトの名無しさん
2009/06/19(金) 08:01:29結構面白そうではあるが
0728デフォルトの名無しさん
2009/06/19(金) 08:34:190729デフォルトの名無しさん
2009/06/19(金) 10:10:56これで、なんも出ないんだけど、なんで?
エラーも出ない。
0730デフォルトの名無しさん
2009/06/19(金) 10:14:48な め て る の か
0731デフォルトの名無しさん
2009/06/19(金) 10:29:24irbは入力された式を評価した値を表示するけど、
rubyはprintとかで表示しなければ、実行するだけだから。
0732デフォルトの名無しさん
2009/06/19(金) 10:47:13puts a;
これで出た。
0733デフォルトの名無しさん
2009/06/19(金) 11:00:360734デフォルトの名無しさん
2009/06/19(金) 11:09:540735デフォルトの名無しさん
2009/06/19(金) 11:18:590736デフォルトの名無しさん
2009/06/19(金) 13:33:18英語もラテン語も知らないと、英語でラテン語について記述するのは無理じゃないか?ってノリ。
rubyとjavaの基本を抑えてから、マニアックな地雷原を歩き始めるべき。
0737デフォルトの名無しさん
2009/06/19(金) 13:36:28Java VM と JRuby インストールしておけば、MRI などの Ruby の実装をインストールしなくても、
Ruby プログラムが動かせるということだね。
メリットと言えるかどうかわからないけど。
0738デフォルトの名無しさん
2009/06/19(金) 16:26:09LinuxにRuby1.8と1.9をインストールしてるのですが、
Eric4で1.9を使うとエラーが出てスクリプトが実行できません。
0739デフォルトの名無しさん
2009/06/19(金) 23:14:13(["
などの括弧を青から違う色に変える設定場所を教えてください。
0740デフォルトの名無しさん
2009/06/20(土) 00:28:160741デフォルトの名無しさん
2009/06/20(土) 00:32:380742デフォルトの名無しさん
2009/06/20(土) 00:41:38ありがとうございます。
ネットで調べると、クラスベースと言ってる人とプロトタイプベースと言ってる人がいてモヤモヤしてたのですが
なるほどそういうことでしたか。
0743デフォルトの名無しさん
2009/06/20(土) 01:21:52for i in 1..10
p i
end
p i
0744デフォルトの名無しさん
2009/06/20(土) 01:27:38ruby 1.8.7 (2009-06-08 patchlevel 173) [i686-darwin9.7.0]
ruby 1.9.1p129 (2009-05-12 revision 23412) [i386-darwin9.7.0]
0745デフォルトの名無しさん
2009/06/20(土) 01:49:17会社のCentOSでやったら出たんだが…versionみてないや
0746デフォルトの名無しさん
2009/06/20(土) 06:37:04具体的にはどんな不都合があるんでしょ。でも、ブロックは使えるよね。
0747デフォルトの名無しさん
2009/06/20(土) 06:38:34どっちもできる、だろうけど、基本クラスベースを思って置けばよいかと思うけど
0748デフォルトの名無しさん
2009/06/20(土) 17:47:13eachするときに、自動でキーでソートされてるHashライブラリか、モンキパッチみたいなのはないでしょうか?
0749デフォルトの名無しさん
2009/06/20(土) 17:49:29みんなはコマンドプロンプトから入力するときって何使ってる?
0750デフォルトの名無しさん
2009/06/20(土) 17:50:040751デフォルトの名無しさん
2009/06/20(土) 17:50:120752デフォルトの名無しさん
2009/06/20(土) 17:51:04そう思ったら、Unixのプラットフォームでやれと言われるお^^
0753デフォルトの名無しさん
2009/06/20(土) 17:53:27挿入した順を保存という意味なら1.9を使うか、あとは
ActiveSupportなどあちこちにあるOrderedHashが使える。
0754デフォルトの名無しさん
2009/06/20(土) 18:00:58てきとーにデバッグプリントしたときにキー探すのがめんどくさいんだよなw
p h.sort
配列化されるのには目をつむってほしい
each云々は、Hashはそういう使い方するものじゃないからパス
ってなんかエラーでるな
NoMethodError: undefined method `<=>' for :c:Symbol
・・・Symbol#<=>は1.9からなのか、ぜんぜん気づかなかった
0755デフォルトの名無しさん
2009/06/20(土) 18:08:07pp h
したら、キーでソートされないか?
それより最近Vimを使うようになったんですけど
VimでRubyのコメントを入力するにはどうしたらいいですか
0 i # ESC j
0 i # ESC j
...
とかめんどくさい
0756748
2009/06/20(土) 18:33:43>>753
なにそれ1.9だと、順序保存なんだ!
> ActiveSupportなどあちこちにあるOrderedHashが使える。
ま た R a i l s かwww
ActiveSupportなんでもあるなww
>>754
h.sortだと配列になるんですね…。配列になってもいいときはそれでもよいですね。
>>755
pp hash だとソートされない感じ…。
とりあえず、OrderedHash使ってみよ…
と思ったけど、HashからOrderedHashへ変換できねえよヽ(`Д´)ノ ウワァァン!!
ActiveSupportのソースみたけど、変換ルーチンねえよ!
0757デフォルトの名無しさん
2009/06/20(土) 18:41:49hash.sort.each {|v| ohash[v[0]] = v[1] }
OrderedHash知らないけどソートそのままでぶち込むならこんな感じでいいんじゃない?
0758748
2009/06/20(土) 18:43:05まあ、確かに単純変換はできんか・・・。
しこしこ変換してみます。
というか、初期化したいだけなので、地道に
hash["hage"] = "unko"
で入れていけば問題はないみたいです。
0759748
2009/06/20(土) 18:44:18結局、sortとかしたのと、変わらないか…。
とりあえず、ありがとうございました。
0760デフォルトの名無しさん
2009/06/20(土) 20:10:33>pp hash だとソートされない感じ…。
すまん勘違いだった
0761デフォルトの名無しさん
2009/06/20(土) 21:22:10commentout.vim でググるといいことがあるかも知れない
0762761
2009/06/20(土) 21:25:410763デフォルトの名無しさん
2009/06/20(土) 21:29:33I # ESC j
でいいだろうに、後ESCの場所はホームポジションの
すぐそばに変更な。
vimはコマンドと移動方法とか色々組み合わせて、
ソースも操りやすいように書いて、脳汁出すためのも
のだ。
0764デフォルトの名無しさん
2009/06/20(土) 22:23:11NYACUSとかckwtとかMinGW+Msysとか
0765764
2009/06/20(土) 22:28:030766デフォルトの名無しさん
2009/06/20(土) 23:10:27Javaであれば、'a'のようにシングルクォーテーションで括ると文字型になりますが、Rubyだと文字列になってしまいます。
0767デフォルトの名無しさん
2009/06/20(土) 23:17:090769デフォルトの名無しさん
2009/06/20(土) 23:32:37?あ
のように書く。
値はつまるところ長さ1のStringインスタンス(="あ")だが。
1.8では、この表記はそのとき使っている文字コードでの整数値になる。
0770デフォルトの名無しさん
2009/06/20(土) 23:33:370771デフォルトの名無しさん
2009/06/21(日) 01:33:420772デフォルトの名無しさん
2009/06/21(日) 02:13:590773デフォルトの名無しさん
2009/06/21(日) 09:44:59スレチだけど、The NERD Commenterがすっげー便利でずっと使ってる。
0774デフォルトの名無しさん
2009/06/21(日) 11:32:39def foo(opt1 = {}, opt2 = {})
end
foo(:a => 10, :b => 20)
こう書くと、opt2じゃなくてopt1にオプションが入るんだな
今まで末尾のHash引数に入るものだとばかり思ってた
どういう仕組みになってるんだろう
0775デフォルトの名無しさん
2009/06/21(日) 14:30:30opt1[0] =10
opt2[0] =20
このように動作してるって事だろ?
opt1[0] =10
opt1[1] =20
opt2[0] =nil
0776デフォルトの名無しさん
2009/06/21(日) 16:07:27「どういう仕組み」って不満ではなく文字通りの意味ならeval.cとparse.y読んだらよくね
0777デフォルトの名無しさん
2009/06/21(日) 16:18:071.9でもopt1に入る
0778デフォルトの名無しさん
2009/06/21(日) 17:08:54foo({:a => 10, :b => 20})
となると、もっともな挙動かとも思う
0779デフォルトの名無しさん
2009/06/21(日) 18:10:44def mes(keywordhash1, keywordhash2)
という定義のメソッドはよくない
いわゆるキーワードハッシュは、多少無理してネストさせてでも1つにまとめるべき
0780デフォルトの名無しさん
2009/06/21(日) 18:13:060781デフォルトの名無しさん
2009/06/21(日) 18:43:36ってことは、もし Ruby のバージョンが変わり、 >>776 のように opt2 に入るようになったら、
それまでの Rails は急に動かなくなるってこと?
0782デフォルトの名無しさん
2009/06/21(日) 18:57:44foo(:a => 10, :b => 20, :c=30)
と書いたときにはどういう風に引数を解釈して欲しいんだろう
0783デフォルトの名無しさん
2009/06/21(日) 18:59:47foo(:a => 10, :b => 20, :c=>30) ね
0785デフォルトの名無しさん
2009/06/21(日) 19:59:33その想定はないw
0786デフォルトの名無しさん
2009/06/21(日) 21:55:48俺はそう思ってて、ちょっとビックリしてた。
定義側の最後のハッシュになるんじゃなくて、
呼び出し側の最後の引数がハッシュにまとまるんだなーと。
0787デフォルトの名無しさん
2009/06/22(月) 01:27:100788デフォルトの名無しさん
2009/06/22(月) 02:43:530789デフォルトの名無しさん
2009/06/22(月) 10:02:32tick.tack.toe というメソッドチェーン可能なメソッドがあったとして
tick{|e|
e.tack.toe
}
tick{|e|
e.tack
}.toe
tick{|e|
e.foo
}.tack.toe
どれが tick.tack.toe と同じ値になってることが期待されるように見える?
0790デフォルトの名無しさん
2009/06/22(月) 10:10:09「どれもアリ」だ
そのへんは tick のマニュアル読むしかあんめえ
each と map の動作の違いみたいなもんだからな
ただ、tick.tack.toe のようにメソッドチェーンが繋がることがごく当たり前の当然な規定事項である場合、
一番目と二番目をサポートし、一番最後の「ブロックの中の返り値は捨てる」という動作はサポートせずに
tick{|e|
e.foo
e
}.tack.toe
とユーザーに明示的に書かせるべきだと思う
つまり inject 状態
0791デフォルトの名無しさん
2009/06/22(月) 13:52:140792デフォルトの名無しさん
2009/06/22(月) 14:00:16Rubyも同じ、というかそれ以外のGCを俺は知らない
0793デフォルトの名無しさん
2009/06/22(月) 14:03:11それを元にやることはいっしょだ。
とりあえず、リファレンスカウント方式ではない、とだけ。
0794デフォルトの名無しさん
2009/06/22(月) 16:07:21自動的に回収されるけど、運が悪いと回収されないことがある。
興味があれば「保守的ガーベージコレクション」でぐぐってみよう。
0795デフォルトの名無しさん
2009/06/22(月) 16:37:340796デフォルトの名無しさん
2009/06/22(月) 16:37:400797デフォルトの名無しさん
2009/06/22(月) 16:42:40わざわざRubyの、とか断るからには。
0798デフォルトの名無しさん
2009/06/22(月) 16:46:180799デフォルトの名無しさん
2009/06/22(月) 18:02:030800デフォルトの名無しさん
2009/06/23(火) 16:45:56コードを集めたサイトはないですか?
0801デフォルトの名無しさん
2009/06/23(火) 16:50:26arr.each do |str|
puts "<#{str}>"
end
と書かずに
puts arr.map{|str| "<#{str}>"}
と書くだけでえすぷりの香りがほら
0802デフォルトの名無しさん
2009/06/23(火) 17:04:37ありがとうございます。
巨大な配列だとメモリを使わない方法とか、
なんかそういうのも知りたくて。
0803デフォルトの名無しさん
2009/06/23(火) 17:11:19写像後のメモリを気にしなければならないのなら map は「使ってはいけない」し
配列として存在するときのメモリがそもそも気になるなら
加工済み配列を作らずに初期データででっかい each を回せ
0804デフォルトの名無しさん
2009/06/23(火) 17:21:330805デフォルトの名無しさん
2009/06/23(火) 17:30:30素直に each で1個ずつ使い捨てしたほうがまだマシかと
0806デフォルトの名無しさん
2009/06/23(火) 18:00:15ありがとうございます。
0807デフォルトの名無しさん
2009/06/23(火) 22:00:59マッピングとなんか関係ある?
0808デフォルトの名無しさん
2009/06/23(火) 22:06:22bump mappingなんかのmappingのことなら同じ意味。
0809デフォルトの名無しさん
2009/06/23(火) 22:10:20(現実と一対一で対応する紙の上の点という意味では合ってるが省略)
っていうか写像っていう言葉が出てるんだしそっちから調べてくれ
大量のA → <AからBへの変換装置> → 同数のB
この説明は間違ってるが、おーむねこれが写像だ
数学の関数も写像の概念が通る
f = 2x+1 という関数を表す Ruby コードは arr.map{|x| x*2+1}
とかいう高尚なものは一切忘れて「配列Aを配列Bにする機能」だと思ってくれてオケェ
0810デフォルトの名無しさん
2009/06/23(火) 23:06:33配列の全要素に同じ関数を適用する。
0811デフォルトの名無しさん
2009/06/23(火) 23:19:16http://ja.wikipedia.org/wiki/%E5%85%A8%E5%B0%84
0812デフォルトの名無しさん
2009/06/24(水) 03:54:22ActiveRubyなら可能ですが動作にはActiveRubyのインストールが必須で
作ったものを配布する用途にはあまり向きません
JSRubyならそのままは知らせることが可能ですが付属ライブラリがしょぼすぎます・・・orz
0813デフォルトの名無しさん
2009/06/24(水) 04:12:40一応聞こう
HTAって何?
0814デフォルトの名無しさん
2009/06/24(水) 04:43:48HTML Application。HTML + ActiveScript
0815デフォルトの名無しさん
2009/06/24(水) 04:53:42いやそれは知ってる
>>812の文面から>>812がナニをHTAとして扱ってるのか気になった
0816デフォルトの名無しさん
2009/06/24(水) 04:55:39ムチャな話だけど。
0817デフォルトの名無しさん
2009/06/24(水) 05:50:26だけ見ると、lambda式みたいだな
0818デフォルトの名無しさん
2009/06/24(水) 06:34:57試してないが、スクリプト側を子プロセスとして走らせるのはどうだろうか
Vbsでできるのか知らんけどCreateProcess + CreatePipeとか
ファイルでやり取りする程度ならShellExecute("cmd.exe /C 〜")とか
0819デフォルトの名無しさん
2009/06/24(水) 07:04:34irb> f = lambda{|x| x*2+1}
irb> p [1, 2, 3].map(&f)
[3, 5, 7]
0820デフォルトの名無しさん
2009/06/24(水) 07:40:19irb> p [山田,スズキ, 田中].map(&f)
[山田様,スズキ様, 田中様]
0821デフォルトの名無しさん
2009/06/24(水) 07:54:58map{..}.grep{...}とかやるともう。
0822デフォルトの名無しさん
2009/06/24(水) 08:10:55map は Perl5 からだよね
Ruby より早いのか
0823デフォルトの名無しさん
2009/06/24(水) 08:14:23書いててどこがコレクションでどこか変換関数でどこが変換用変数なのかよくわからん
0824デフォルトの名無しさん
2009/06/24(水) 08:25:390825デフォルトの名無しさん
2009/06/24(水) 08:29:07「ブロック処理とイテレーションが文法レベルでサポートされててかっちょええ」
というただ1点だけでここまで生き延びたんで、そう簡単に真似っこされても困る
次の質問の方どうぞ
0826デフォルトの名無しさん
2009/06/24(水) 13:10:08hoge の返り値が真かどうかを調べる hoge? というメソッドを作ったときに
def hoge?
! hoge.nil?
end
というのがびみょーになんかアレなんだけど、こー、もうちょっとイイ感じに書けないもんすかね
nil かどうか調べて、その真偽を反転するというのがなんかちょっと
0827デフォルトの名無しさん
2009/06/24(水) 13:19:57RubyからWin32OLEでIE呼んでもHTAと似たようなことはできなかったっけ?
0828デフォルトの名無しさん
2009/06/24(水) 13:29:050829デフォルトの名無しさん
2009/06/24(水) 13:51:20hoge ? true : false
end
hoge が false を返しても偽になるけど。
0830デフォルトの名無しさん
2009/06/24(水) 14:01:14def hoge?
not hoge.nil?
end
! はあんまり好きじゃないってだけだけど・・・って見た目の話じゃないのか
hogeの返値がたとえばStringかnilだっていうなら
hoge.class == String
とか
>>829
hoge.nil? ? false : true
・・・うーんw
0831デフォルトの名無しさん
2009/06/24(水) 14:21:08を返すってときに、true とか false とかを (A) に含めて欲しくない。
なので見やすさから >>829を支持する。
それかいっそ alias hoge? hoge でもいいじゃん。
0832デフォルトの名無しさん
2009/06/24(水) 14:26:21え・・・
0833デフォルトの名無しさん
2009/06/24(水) 14:43:14hoge
end
という意味でしょ
ふつうhoge?といえば@hogeに対して行うからaliasが使えないけど
>true とか false とかを (A) に含めて欲しくない
それはhogeがtrueを返すなら含めるしかないわけで、外野にはなんとも
でも言われてみれば?付きメソッドの返値がboolである必要はないんだよな
もはやhoge?の存在意義が怪しいw
もしhogeがfalseとnilを区別するなら考えなきゃならんけど
そうなると今度はnil?を避けられなくなる
0834デフォルトの名無しさん
2009/06/24(水) 15:19:40= つきのメソッドが内部変数代入を伴うと期待されるのと同じように、
[] というメソッドがキーつきフェッチを行うことが期待されるのと同じように
0835デフォルトの名無しさん
2009/06/24(水) 15:27:55hoge の返り値が nil か false 、または hoge の存在探知の結果が偽である → hoge? は false
hoge の返り値が nil でも false でもなく、 hoge の存在検知の結果も真である → hoge? は true
だろ
たとえば hoge の返り値が配列だったとして、 空の [] が返ってきたとき、
「[] は nil でも false でもないから hoge? は true を返すべき」とはならんだろ
通常は配列に詰まって返ってくるべきところ、配列が空になる事態が起こればそれは 偽 でいいじゃん?
0836デフォルトの名無しさん
2009/06/24(水) 16:02:02>? つきのメソッドは true か false のどちらかを返すべきだろう
? つきのメソッドは 真 か 偽 のどちらかを返すべきだろう
だったら賛成できる。
0837デフォルトの名無しさん
2009/06/24(水) 16:05:54だからRubyのオブジェクトは偽でなければすべて真であって、どっちかの状態しかねえんだよ
それと全く同じ状態を返すメソッドなんて hoge? として存在させる意義ねえだろ
そういうのは素直に hoge とその運用に任せるべき
if hoge then puts 'hogeあるよー' end みたいな
0838デフォルトの名無しさん
2009/06/24(水) 16:06:47昔はそう思ってたんだんだけどね
でも演算子defined?の時点で真ならString、偽ならnilを返す仕様と知ってどうでもよくなった
0839デフォルトの名無しさん
2009/06/24(水) 16:08:51その理屈はaliasの存在理由すら否定されるw
0840デフォルトの名無しさん
2009/06/24(水) 16:10:22"33" == true
"33" === true
このへんが真を返すなら
puts '真だ' if hoge === true
とか書けるのに
0841デフォルトの名無しさん
2009/06/24(水) 16:12:59違う
0842デフォルトの名無しさん
2009/06/24(水) 17:16:57何を言っているのか分からない
どの辺にマッチしてどの辺にマッチしなければ理想なんだ
0843デフォルトの名無しさん
2009/06/24(水) 17:35:35そんなPHPみたいな言語になったら躊躇なくRubyを捨てる
質問なんですけど、RSpec で複数の before() に似たような処理があるときって、
なにかまとめる方法はありますか。
今はアドホックに def xxx() を定義して複数のbefore() から呼び出しているんですが
これでいいのか疑問が湧いてきたので。
RSpec の流儀みたいなのがあれば教えてください
0844デフォルトの名無しさん
2009/06/24(水) 17:59:03値だけ書いとけばいいだけじゃん
0845デフォルトの名無しさん
2009/06/24(水) 18:05:45どなたか持ってたらいただけないでしょうか?
0846デフォルトの名無しさん
2009/06/24(水) 18:16:59同じく困って PHP を使った
0847デフォルトの名無しさん
2009/06/24(水) 18:34:300848デフォルトの名無しさん
2009/06/24(水) 18:42:490849デフォルトの名無しさん
2009/06/24(水) 18:54:35精神病院に行った方がいいよpwwww
0850デフォルトの名無しさん
2009/06/24(水) 18:55:380851デフォルトの名無しさん
2009/06/24(水) 20:27:43出産と満月(Matzにっき)
http://www.rubyist.net/~matz/20041028.html
こっちの方がうさん臭いけどな。
幾人かの医師や助産師に聞いてみたら、因果関係はないと言われた。
0852デフォルトの名無しさん
2009/06/24(水) 20:41:08それとも医師や助産婦の経験的な記憶によるものなのか?
おれはいつが満月かなんて全く意識してないから分からないのだが、
医師や助産婦はそれを意識してるということだろうか。
0853デフォルトの名無しさん
2009/06/24(水) 20:58:27http://web.archive.org/web/20060517030817/http://www.itlb.te.noda.sut.ac.jp/~ikarashi/ruby/chasen1.6.tar.gz
意外と残っているもんだ
0854デフォルトの名無しさん
2009/06/24(水) 21:23:00Windows環境ならRuby/ChaSen Win32API版もいいらしい、試してないが
ttp://www.mizimada.net/2008/02/12/rubychasen-via-win32api/
0855デフォルトの名無しさん
2009/06/24(水) 22:57:50何か追加ライブラリがないと出来ないと思うのですが、
最終的にはexerbで実行ファイルを配布可能な形にしたいので、ImageMagickは使いづらいと思っています。
image_sizeでは画素数は分かるけど色深度はしらべられないみたいです。
適当なライブラリないでしょうか。
0856デフォルトの名無しさん
2009/06/24(水) 22:58:42javascriptの関数もクロージャですが、実装は全く異なるのでしょうか?
同じクロージャでも言語によって全然実装が異なるのか、あるいはだいたい同じ実装の仕方をするものなのかを知りたいのです。
例えばjavascriptの場合、関数が呼ばれるごとにActivationオブジェクトというスコープが作られて、関数定義時のスコープチェインに追加されますが
RubyのProc#callでも同じような動作をしますか?
0857デフォルトの名無しさん
2009/06/25(木) 05:50:190858デフォルトの名無しさん
2009/06/25(木) 05:51:00(いちおうRubyではメソッド≠クロージャね。)
「クロージャの実装」とわざわざ断り書きをいれるからには、通常は変数スコープの共有方法についての話だと思ってしまった。
0859デフォルトの名無しさん
2009/06/25(木) 06:21:190860デフォルトの名無しさん
2009/06/25(木) 07:32:30まったく試してないが適当なことを言うと
Ruby/SDLで色深度の取得とかできないかな。Surfaceとして読み込んでから深度を調べる感じで
0861デフォルトの名無しさん
2009/06/25(木) 12:46:09activationレコードのことだろ?
関数呼び出しを行う言語ならどれも内部に持っていると思うけど。
それがRubyスクリプトからは見ることも触ることもできないというだけで。
0862デフォルトの名無しさん
2009/06/25(木) 14:00:49まあそう言わず
スクリプト言語に無理なことはそもそもやらせない、という原則を
Rubyにおいて良くも悪くも壊したのが Exerb だしさ
0863856
2009/06/25(木) 14:30:20ありがとうございます。
Activationオブジェクトが通常のメソッド呼び出しでも作られるとは知りませんでした。
でもそうなるとクロージャと、クロージャでない関数(またはメソッド)の実装上の違いって何なのでしょうか?
例えば入れ子の関数(クロージャ)があるときに、内側の関数が外側関数のActivationを保持するためにこのスコープを持ち歩く
という理解だったため、Activationがクロージャの機能を実現してると思ってました。
ここら辺はオライリーのJavaScript第5版という本で勉強しました。
言語に拠らないもっと根本的な知識が無いと実装を理解するのは難しいでしょうか?
0864デフォルトの名無しさん
2009/06/25(木) 14:49:30このへん詳しくないからなんだけど、javascriptだって関数実行時はローカル変数のために
いつでもactivationオブジェクトが生成されるはず
ttp://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/10_Execution_Contexts.html#section-10.1.6
>言語に拠らないもっと根本的な知識が無いと実装を理解するのは難しい
両側から攻めるべきかと
rubyで内部の話をするにはソースコード読むしかないけどw
0865デフォルトの名無しさん
2009/06/25(木) 14:52:37クロージャってのは本来変数のスコープに関しての概念だから、関数と切り離して考えた方がいいと思うよ。
Activation Record(駆動レコード)は関数呼び出しのある言語ならどれでも備えているもの。
コンパイラの本を読むとたいてい書いてある。
0866デフォルトの名無しさん
2009/06/25(木) 15:12:14オブジェクトとして見えたりはしない。
0867856
2009/06/25(木) 15:21:20なるほど…クロージャは関数とは同列では無いわけですね。少しすっきりしました。
考えてみればrubyのクロージャのブロックも単純な処理のまとまりでした。
>>864さんのリンク詳しいですね。理解が深まりました。
自分なりに考えをまとめてみると、
関数がクロージャになるのは、関数自体の機能とは無関係で、入れ子に関数を定義したときにクロージャが発生するというイメージでしょうか。
つまり、「ある処理のまとまり」をデータとして扱える言語なら確実にクロージャを実現できそうです。
Rubyのメソッドはクラスの中に定義しなければならないためメソッド単位でデータとしてretunすることが出来ないのでクロージャを実現できないと。
このように考えると、Javaの無名クラスでクロージャっぽいことが出来るけど不便だ、という評価もなんとなく分かりました。
0868デフォルトの名無しさん
2009/06/25(木) 15:55:17それらが切り離されてる具体例は知らないけど、概念としては別物
0869856
2009/06/25(木) 17:03:38コンパイラの本を探して勉強してみることにします。
0870デフォルトの名無しさん
2009/06/25(木) 17:08:26関数型言語が少しブームになってきたことを考えると、
クロージャの概念そのものについて勉強するのも良さそうですね
0871デフォルトの名無しさん
2009/06/25(木) 17:17:080872デフォルトの名無しさん
2009/06/25(木) 17:24:57Java の話だけど、無名関数は、あくまでも文法上、関数名をつけずに宣言しているだけで、内部では
オブジェクト扱いされていないからちょっと違うのでは
0873デフォルトの名無しさん
2009/06/25(木) 17:32:11ぜんぜん違う。
実行時コンテキストを持っているからクロージャー(Closure)でしょ。
0874デフォルトの名無しさん
2009/06/25(木) 17:41:40ソースは
CSV.open("./test.csv", 'w') do |writer|
writer << ["ruby", "perl", "python"]
writer << ["java", "C", "C++"]
end
CSV.open("./test.csv", 'r') do |row|
puts row
puts row
end
でなぜか実行結果が
#<CSV:0xc7c158>
#<CSV:0xc7c158>
となる。
環境は、
ruby 1.9.1p129 (2009-05-12 revision 23412) [i386-mswin32]
WindowsXP
もしかしてインストールがうまくいってないのかな?
0875デフォルトの名無しさん
2009/06/25(木) 17:45:08レキシカルスコープの時点でクロージャと呼べる気もするけど役には立たなさそうw
>>874
puts row.join(", ")
0876デフォルトの名無しさん
2009/06/25(木) 17:45:260877874
2009/06/25(木) 17:49:30ごめん、それはもうやったんだ。
file.rb:12:in `block in <main>': undefined method `join' for #<CSV:0xec3344> (NoMethodError)
とかいうエラーでる。
書き込みは出来てるんだけど、なぜか読み込めないんだ。
0878デフォルトの名無しさん
2009/06/25(木) 17:56:501.8.7だと>>874がちゃんと動くよ(openのブロック引数にArrayが入る)
仕様が変わったか別のライブラリを読み込んじゃってるんじゃない?
0879デフォルトの名無しさん
2009/06/25(木) 18:00:46だとデータ中に , を含むデータがある場合に困るね。
0880デフォルトの名無しさん
2009/06/25(木) 18:04:56require 'csv'
CSV.open("./test.csv", 'wb') do |writer|
writer << ["ruby", "perl", "python"]
writer << ["java", "C", "C++"]
end
CSV.open("./test.csv", 'rb') do |csv|
csv.each do |row|
puts row
end
end
0881デフォルトの名無しさん
2009/06/25(木) 18:24:16すげー。ありがとうございます。
0883デフォルトの名無しさん
2009/06/25(木) 18:57:54Ruby1.9.1 の csv.rb は fastercsv 寄り
通常の open または IO なんかと同じようにメソッドを使う
CSV.open("./test.csv", 'rb').each do |row|
p row
end
このへんが適解
出力は
["ruby", "perl", "python"]
["java", "C", "C++"]
0884855
2009/06/25(木) 20:35:24>>860
ありがとうございました。次の機会に試してみます
>>862
すみません、無理なことさせてますよね……
0885デフォルトの名無しさん
2009/06/25(木) 21:15:47それを勧めようとして、その前に自分で試したところで挫折したから黙ってたんだけど
JPEGの色深度のところはどうやった?
0886デフォルトの名無しさん
2009/06/25(木) 21:16:190887デフォルトの名無しさん
2009/06/25(木) 21:18:51クロージャーを実装するのは苦労じゃ〜
0888デフォルトの名無しさん
2009/06/25(木) 21:24:45すべてのJPEGに対応する必要は無く、
JFIF形式の8bitグレースケールの画像か、それ以外かを確認すればよい
という目的だったので、
JFIFであることを確認して、
それ以降をeach_byteでスキャンしてFFC0の並びになるところを探して、
そこから数バイト取得して、って流れでやりました。
0889デフォルトの名無しさん
2009/06/25(木) 22:05:26なるほど、水平サイズの直後のやつか
0890デフォルトの名無しさん
2009/06/26(金) 17:34:10ln file1.txt file3.txt
としたときに、file1.txt と file3.txt とがハードリンクされたものであることを
Rubyで調べようとしたら、どうしたらいいでしょうか。
0891デフォルトの名無しさん
2009/06/26(金) 17:38:12stat.nlink #=> ハードリンク数
stat.ino #=> iノード番号
0892デフォルトの名無しさん
2009/06/26(金) 17:50:440893デフォルトの名無しさん
2009/06/27(土) 00:52:100894デフォルトの名無しさん
2009/06/27(土) 01:14:23p x
end
p x
で、なぜエラーになるのだ
0895デフォルトの名無しさん
2009/06/27(土) 01:15:550896デフォルトの名無しさん
2009/06/27(土) 01:28:591.upto 10 do |x|
p x
end
0897デフォルトの名無しさん
2009/06/27(土) 01:35:08ループないで使用された、xが
ループ抜けた後で使うとエラー
になるという…
0898デフォルトの名無しさん
2009/06/27(土) 01:43:150899デフォルトの名無しさん
2009/06/27(土) 03:07:310900デフォルトの名無しさん
2009/06/27(土) 03:09:12なんでエラーになるかというと、ブロック内で定義された変数は、
ブロックの外では使えないからです。
0901デフォルトの名無しさん
2009/06/27(土) 05:35:22ブロックの外にあった変数がブロックの中で最後に使われてた値が残っちゃうけどね!
x = "x!"
[1,2,3].each{|x| puts "hoo"}
p x #=> 3
上記は "x!" じゃなくて 3 だよ!
s = "very important string"
puts "s is #{s} before block"
['one', 'two', 'three'].each do |count|
s = count.upcase
puts s
end
puts "after block, s is #{s}"
適当すぎる変数名をあちこちで使い回す癖のある人は気をつけたほうがいいよ!
あと見かけが似てるけど if はブロックつきメソッドじゃないから
ブロックの中で定義した新変数はブロックの外に持ち越されるよ!
[1,2,3].each{|x| y=x}
p y rescue puts "each では y ないです"
if true then
y = 4
end
p y rescue puts "if では y ないです"
0902デフォルトの名無しさん
2009/06/27(土) 05:49:081
2
3
[1, 2, 3] done!
4
5
6
[4, 5, 6] done!
とかいう表示を期待して
[[1,2,3], [4,5,6,], [7,8,9]].each do |x|
x.each{|x| p x}
puts "#{x.inspect} done!"
end
と素直に書くと非常にがっかりさんモードになる
ちなみに Ruby1.9 では期待通りに動作するのでスクリプト頒布には注意
この動作に依存したスクリプト作る人なんて滅多にいないとは思うけどね
たいていはこの動作を避けるように仮変数はそもそも別名にしてるはずだから
むしろ 1.9 の人が 1.8 用に作ってハマる可能性のほうが高そうだ
0903デフォルトの名無しさん
2009/06/27(土) 08:48:00>>896の例ではxはイテレータブロック内のみで参照できる限定されたスコープで、
>>901の例では、イテレータブロック外であらかじめ参照されているので、
イテレータブロックよりもひとつ外のスコープになる。
マトリョーシカのような入れ子構造を創造するとわかりやすい。
0904デフォルトの名無しさん
2009/06/27(土) 15:45:40a,b,c〜を返すお手軽メソッドはありませんでしょうか?
例:
(0..10).each {|x| puts get_alphabet(x) }
出力例:
a
b
c
d
e
f
g
h
i
j
0905デフォルトの名無しさん
2009/06/27(土) 15:52:560906デフォルトの名無しさん
2009/06/27(土) 16:00:14def get_alphabet(n) ; ('a'[0].ord + n).chr ; end
0907デフォルトの名無しさん
2009/06/27(土) 16:13:13ありがとうございます!
%w(a b c d ....)[i] || i
みたいにやろうとしてたww
Rubyは文字型ないからやりぬくいーと思ってました
似たようなことできるんですね
0908デフォルトの名無しさん
2009/06/27(土) 16:31:04('a'..'z').to_a[x]
p ('a'..'z').to_a[0]
"a"
p ('a'..'z').to_a[1]
"b"
0909デフォルトの名無しさん
2009/06/27(土) 17:45:161.8.6で動かなかった…(´・ω;:..
鯖で動かないハメくらった。Ubuntuめー。
0910デフォルトの名無しさん
2009/06/27(土) 17:48:42サンクス
>>905-906だと30.timesとかみたいに、アルファベット範囲超えた時に変なので、
超えたときも考慮して、こんな感じでやってみます。to_aがまあ富豪的ですが…
def get_alphabet(n) ; ('a'..'z').to_a[n] || n.to_s ; end
0911デフォルトの名無しさん
2009/06/27(土) 20:15:000912デフォルトの名無しさん
2009/06/27(土) 20:16:48File.identical?("file1.txt", "file3.txt")
0913デフォルトの名無しさん
2009/06/28(日) 06:23:01ttp://www.amazon.co.jp/dp/4798117854/
踏み込みが浅いなと思ったらやたら広範囲だったでござるを地で行く本
良くも悪くも「普通」のRubyの本がやっと出たという感じ
「本はやっぱ極力新しいほうが新しい情報も載ってていいんじゃね」
「ネット上で調べればわかるったって本で纏まってるのに意味があんだよこれだから素人は」
「Rubyなんてひとまず使えるのが一番で思想とかこまけぇこたぁいいんだよ!!」
と考える書籍大好きさん向け
プログラミング自体の初学者さんにはお勧め度が正直わりと下がるが、
いちおうまとまってはいるので if then else くらいはなんとかなる程度のRuby初心者さんの補強、
または一通り舐めてみたい他言語者さんのサブ言語習得時サポートにどうぞ
以下目次
ttp://www.seshop.com/detail.asp?pid=10586&mode=spec
Rubyの基礎知識・文法・数値・文字列(普段使う程度の1.9対応)・日時・配列・ハッシュ・
メソッドとクラス・クロージャ・例外処理・出入力・ネットワーク・スレッド
第13章 簡単なアプリケーション開発の例(単純なHTTPソケット通信サーバ)
第14章 オブジェクト指向の設計・開発(紹介)
第15章 テスト駆動開発(Test::Unitをてきとーに)
第16章 デザインパターン(さらっと)
第17章 開発に役立つツール
17.1 RDoc(文法程度)
17.2 Ruby Gems(日常利用)
17.3 Rake (日常利用できる程度の文法)
0914デフォルトの名無しさん
2009/06/28(日) 07:02:180915デフォルトの名無しさん
2009/06/28(日) 07:10:50独習Ruby (大型本)
株式会社テクノロジックアート (著)
漏れもイラネ
0916デフォルトの名無しさん
2009/06/28(日) 07:17:30> 株式会社テクノロジックアート (著)
これって地雷会社?
0917デフォルトの名無しさん
2009/06/28(日) 07:17:53とりあえず本屋で探してみよう
0918デフォルトの名無しさん
2009/06/28(日) 07:28:50>>916
うん、まあ、なんだ、翻訳モノではなんというか、こう、そう、しいて言うなら英語に強くなれるというか
翻訳+テクノロジックアート+長瀬嘉秀+アジャイルで満貫(アジャイルはUMLでも可)
今回は2つしか当てはまってないからなんとかなるよ、たぶん
0919デフォルトの名無しさん
2009/06/28(日) 08:21:54宣伝乙
0920デフォルトの名無しさん
2009/06/28(日) 08:46:25そのサイトの管理人、いたるところにURL貼り付けてる。
Amazonで買った方がいいよ
0921デフォルトの名無しさん
2009/06/28(日) 08:50:26Amazon宣伝乙
0922デフォルトの名無しさん
2009/06/28(日) 08:52:22SEShopって翔泳社のサイトだぞw
それでも中の人が工作してると思うのなら別に止めないが
ちなみに推薦書スレなんかでも貼られる頻度は高くない
貼られるのは長瀬がらみの(ry
0923デフォルトの名無しさん
2009/06/28(日) 09:10:21少なくとも検索エンジン云々よりはこのスレ向きだ
技術書スレ的にもまあ話題満載というか
0924デフォルトの名無しさん
2009/06/28(日) 09:26:16ruby wayとかの。
0925デフォルトの名無しさん
2009/06/28(日) 09:49:160926デフォルトの名無しさん
2009/06/28(日) 09:55:42オライリーの翻訳やりだした頃は印象よかったんだけど・・・
PowerShell in ActionやWindowsプログラミングの極意なんかは
途中で読むのをやめてしまった
翻訳のせいなのかは知らないが
0927デフォルトの名無しさん
2009/06/28(日) 10:44:33やっぱ例の黄色本か。
オライリーの動物本よりはとっつきやすいがな。
0928デフォルトの名無しさん
2009/06/28(日) 10:53:26インプレスの基礎シリーズでもRailsが出てるが、
メジャーなシリーズで取り上げられるというのは、
需要が出てきてるってことかもしれんのでその点は歓迎する。
0929デフォルトの名無しさん
2009/06/28(日) 10:56:300930デフォルトの名無しさん
2009/06/28(日) 14:22:23配布の予定はないけれど、エラーのときメール送るだけだからあまり大きくないのがいいなあ
0931デフォルトの名無しさん
2009/06/28(日) 14:23:161.9で使う予定は今のところない
0932デフォルトの名無しさん
2009/06/28(日) 14:30:22「送る」だけなら net/smtp
0933デフォルトの名無しさん
2009/06/28(日) 14:30:280934デフォルトの名無しさん
2009/06/28(日) 14:36:170935デフォルトの名無しさん
2009/06/28(日) 14:37:220936デフォルトの名無しさん
2009/06/28(日) 14:43:04送信自体はnet/smtpのはず
0937デフォルトの名無しさん
2009/06/28(日) 14:49:220938デフォルトの名無しさん
2009/06/28(日) 14:52:120939デフォルトの名無しさん
2009/06/28(日) 15:14:08ログ出力にLoggerを使っておうとしております。
log = Logger.new(STDOUT)
すると、標準出力にログがでます。
log = Logger.new("hoge.log")
とすると、ファイルにログが出ます。
現在困っていることには、STDOUTと"hoge.log"、両方に同時に出力したいのです。
どうしたものでしょうか?
今は、
log = Logger.new("hoge.log")
log.info("hage!!")
puts "hage!!"
みたいに両方書いているのですが、なんだかなーという感じです。
0940939
2009/06/28(日) 15:30:37なんだか、
log = Logger.new(STDOUT)
にしといて、
ruby hoge.rb | tee hoge.log
としておけばいい気がしてきました…。
0941デフォルトの名無しさん
2009/06/28(日) 15:51:10> Logger オブジェクトを生成する。
> logdev には記録するファイル名か、write と close が定義されたオブジェクト(IO オブジェクトなど)を与えます。
ということで
class Tee
def initialize(file)
@stdout, @file = $stdout, File.open(file, 'a+b')
end
def write(s); @file.write(s); @stdout.write(s); end
def close; @stdout.close; @file.close; end
end
require 'logger'
tee = Tee.new('teetest.txt')
log = Logger.new(tee)
log.info('1!')
log.info('2!')
log.info('3!')
0942デフォルトの名無しさん
2009/06/28(日) 15:55:22log4r
0943デフォルトの名無しさん
2009/06/28(日) 16:27:570944デフォルトの名無しさん
2009/06/28(日) 16:29:45>>941
なるほど、writeとcloseがあるクラスを渡しさえすればいいのかww
>>942
log4rだと logger.addで出力先を追加できるんですね…。
参考:log4rの基本的な使い方のメモ - 是非に及ばず
http://d.hatena.ne.jp/mingos/20080118/1200620800
次からこっち使います!
0945デフォルトの名無しさん
2009/06/29(月) 20:49:530946デフォルトの名無しさん
2009/06/29(月) 20:56:39他の探さんといかんな
0947デフォルトの名無しさん
2009/06/29(月) 22:11:22HTML に書き出したとき、HTML のタグをそのまま表示させるようにすることはできますか?
0948デフォルトの名無しさん
2009/06/29(月) 22:17:30<pre> で囲む記述内でならできるけど、いわゆるインラインで行う方法はない
・ 文字装飾のタグのうち先頭に\がついたものはそのまま表示する
・ HTML はそのまま表示される
・ & は & に変換される
という処理になってる
2番目と3番目が同時に行われてるのが極悪というかむしろバカ
0949デフォルトの名無しさん
2009/06/29(月) 22:19:22「&は&に変換される」が正解
普通、2番目やったら3番目はやらないもんだ
0950デフォルトの名無しさん
2009/06/30(火) 10:20:03両方を使い分ける方法はありますか?
0951デフォルトの名無しさん
2009/06/30(火) 11:40:07どうすればいいんでしょう?
OSをアップグレードしたせいで、ライブラリのバージョンがビルド時と
違うよって警告を出すモジュールがあります。特定のモジュール
だけの話なら一度削除して入れ直せばいいと思うのですが、
気持ち悪いので全部ビルドし直したいです。
yum rebuild-all
みたいな意味の操作って出来ませんか?
0952デフォルトの名無しさん
2009/06/30(火) 11:41:27ごめんなさい、yumじゃなくてgemです。
gemで入れた拡張ライブラリを全部ビルドし直したいです。
0953デフォルトの名無しさん
2009/06/30(火) 11:42:53ってか誤爆か
0954デフォルトの名無しさん
2009/06/30(火) 11:45:20要求されてるバージョンを指定してインストールすればいい
0955951
2009/06/30(火) 11:54:33rubyには関係ないlibABC-1.0.soがあって、
それにリンクしているrubyの拡張ライブラリXYZをgemで入れてあった
libABCを1.1に上げたので、XYZも念のためビルドし直した方が
いいと思うんだけど、どうすれば?という質問です。
XYZを一度削除してまたインストールすれば問題ないと思うんだけど、
それを全てのインストール済みgemについて一度に出来ませんか?
0956デフォルトの名無しさん
2009/06/30(火) 12:03:53通常は必要ない
/usr/lib ディレクトリあたりから適当に最新のを読み込んで利用する
gem ライブラリ側で警告があるとすれば、それは gem ライブラリ側でその lib に未対応だというだけだ
外部 lib の特定のバージョン限定で動作保証しているんだろう
gem ライブラリがその外部 lib のバージョンに対応するのを待つしかないな
0957951
2009/06/30(火) 13:06:51nokogiriを使ってるスクリプトがあって、これが
WARNING: Nokogiri was built against LibXML version 2.7.2, but has dynamically loaded 2.7.3
というメッセージを出すようになった。
それで、nokogiriをgemでuninstall, installし直したら出なくなって動作もしてる、
だったら他のパッケージも再インストール必要?、という事でした
>>956
基本的には気にしなくていいと言うことですね
ありがとう
0958デフォルトの名無しさん
2009/06/30(火) 13:17:28ライブラリひとつも読み込まないんだが
0959デフォルトの名無しさん
2009/06/30(火) 13:26:17たまにディレクトリに載っててもそこから読まない環境があるらしいが、その場合は Ruby 1.8.7 使え
0960デフォルトの名無しさん
2009/06/30(火) 13:36:47- /usr/local/lib/ruby1.9/gems/1.9.1
- $HOME/.gem/ruby/1.9.1/gems
- $HOME/.gem/ruby/1.9.1
- $HOME/.gem/ruby
$ ls -R $HOME/.gem/ruby/1.9.1/
$HOME/.gem/ruby/1.9.1/:
bin cache doc gems specifications
0961デフォルトの名無しさん
2009/06/30(火) 15:08:15:
みたいなメソッドの引数のHashの括弧が省略できる仕様について、どこかに
公式のドキュメントはないでしょうか?
Railsでけっこうhash引数がメソッド呼び出しに多様されていて、けっこうハマることがあったので、
どんな感じに動くようになっとるんかと、気になりました。
0962デフォルトの名無しさん
2009/06/30(火) 15:22:45もし「ハッシュでなくても動作する」とかいうのであるなら、それはメソッド定義側でそのように作ってるだけだ
0963デフォルトの名無しさん
2009/06/30(火) 15:31:15>>961
>けっこうハマることがあったので、
初心者がどうハマるのか興味あるので詳しく。
0964デフォルトの名無しさん
2009/06/30(火) 16:49:50WARNING: Nokogiri was built against LibXML version 2.6.32, but has dynamically loaded 2.7.3
こんな警告が出るんだけれど
コピペで /usr/lib/libxml2.so を 2.6.32 に戻して nokogiri.so を再コンパイルした場合は何も言われない
2.7.3 の libxml.so を /usr/lib に置いて nokogiri.so を再コンパイル(nokogiri 再インストール)したら上記警告
Ruby1.9 のときだけバージョン固定でもしてあるのかな
0965デフォルトの名無しさん
2009/06/30(火) 17:17:51dynamically loadedっつってんだから
コンパイル時にsoファイルがどうだろうと関係なかろうさ
0966965
2009/06/30(火) 17:20:272行目以降は無視してくれ
0967デフォルトの名無しさん
2009/06/30(火) 17:56:28$ cat /usr/include/libxml2/libxml/xmlversion.h | grep "define LIBXML_DOTTED_VERSION"
#define LIBXML_DOTTED_VERSION "2.6.32"
おー
(中略)
p Nokogiri::VERSION #=> "1.3.2"
p Nokogiri::LIBXML_VERSION #=> "2.7.3"
p Nokogiri::LIBXML_PARSER_VERSION #=> "20703"
お、直った
うん、どうもありがとう
0968デフォルトの名無しさん
2009/06/30(火) 23:43:10見つけた
リファレンスマニュアル>Rubyの文法>リテラル>ハッシュ式
のところ
0969デフォルトの名無しさん
2009/07/01(水) 04:10:08> 初心者がどうハマるのか興味あるので詳しく。
例えば、Railsのform_tagはこんな風な宣言になってて、
form_tag(url_for_options = {}, options = {}, *parameters_for_url, &block)
普段、
form_tag(:controller=>'items',:action=>'update')
みたいに書いていて、:method => 'get'を指定したくなった時に、
form_tag(:controller=>'items',:action=>'update', :method=>'get')
みたいに書いてうごかねーとか行ってしまったことがあります。
:controllerと:actionは url_for_options に渡すべきもので、:methodは2番目の options に渡すもので、
そもそも全然違うので、一度わかってしまえば全然悩むことではないんですが…。
まあ、本来は下記のように書くわけです。
form_tag({:controller=>'items',:action=>'update'}, :method=>'get')
>>968
ありがとう、見つけられました。
0970デフォルトの名無しさん
2009/07/01(水) 08:05:30っていうか spec1.9 みたいなコマンドないの
0971デフォルトの名無しさん
2009/07/01(水) 08:10:13それは単に gem で format-executable オプションを使う、という話ではないよな?
0972デフォルトの名無しさん
2009/07/01(水) 08:23:16>>970
gem/ruby/1.9.1/bin/spec のファイル名を spec1.9 とかそういうのに変えておけ(w
0973デフォルトの名無しさん
2009/07/01(水) 10:21:190974デフォルトの名無しさん
2009/07/01(水) 10:28:360975デフォルトの名無しさん
2009/07/01(水) 11:47:31使って文句いうぶんには問題なかろう
0976デフォルトの名無しさん
2009/07/01(水) 14:07:51配列の全ての要素が同じかどうか調べるにはどう書くのがスマートでしょうか
今のところ素直にeach回して調べてますが、もう少しスマートな書き方ありそうだなぁと思ってます
0977デフォルトの名無しさん
2009/07/01(水) 14:13:55arr.uniq.size == 1
0978デフォルトの名無しさん
2009/07/01(水) 14:14:01要素が空の場合、もしくは仲間はずれが居る場合は、falseを返します
全ての要素が同じ内容である場合のみ、trueを返します。
0979デフォルトの名無しさん
2009/07/01(水) 14:15:19あああ、最強です、ありがとうございmす
0980デフォルトの名無しさん
2009/07/01(水) 16:32:04irbでやってみた。
おおーっと思った。
0981デフォルトの名無しさん
2009/07/01(水) 21:01:12これってsite_rubyとどう使い分けるんですか?
0982デフォルトの名無しさん
2009/07/01(水) 21:41:57http://svn.ruby-lang.org/repos/ruby/tags/v1_8_7/NEWS
たとえばLinuxのディストリだと、Ruby本体以外にディストリで
パッケージングしているライブラリなんかがvendor_ruby向き。
site_rubyはホストの管理者が入れる用。
0983デフォルトの名無しさん
2009/07/01(水) 21:46:17/usr/local 以下に site_programname を作るのは勘弁して欲しい
0984デフォルトの名無しさん
2009/07/01(水) 22:40:530985デフォルトの名無しさん
2009/07/01(水) 22:50:00わかりやすい説明ありがとうございました
0986デフォルトの名無しさん
2009/07/01(水) 22:58:160987デフォルトの名無しさん
2009/07/01(水) 22:59:022005年のLLDN「キミならどう書く」のあたりのウェブ日記とかをあされば
そこにあるプログラムにそういうルーチンが含まれてると思う。
0988デフォルトの名無しさん
2009/07/02(木) 01:13:44サンクス。今自分で作ってたら、
"十"
っていう表記を入れると別の部分でsyntax errorが出るんだけど、
これってどうにか回避できない?
環境は
activescriptruby
ruby1.8
RDEで開発と実行
windowsXP
0989988
2009/07/02(木) 01:27:44option => デバッグコマンド にある
Ruby's optionのnormal modeに”-Ks”を入れたら上手くいった。
一応require 'jcode'で$KCODE='s'ってやってるんだけど。
これが効くのって正規表現だけじゃないんだな。
0990デフォルトの名無しさん
2009/07/02(木) 02:20:18自身のスクリプトは当然、実行されるよりも先にパースが行われるから
コマンドラインオプションで指定しないと間に合わない
一行目で指定しておくのが吉
#!ruby -Ks
http://www.ruby-lang.org/ja/man/html/Ruby_A4CEB5AFC6B0.html#a.a5.a4.a5.f3.a5.bf.a5.d7.a5.ea.a5.bf.b9.d4.a4.ce.b2.f2.bc.e1
>"十"
8F5C、つまりこれと同じ
"\x8F\"
0991デフォルトの名無しさん
2009/07/02(木) 11:24:170992デフォルトの名無しさん
2009/07/02(木) 11:42:090993デフォルトの名無しさん
2009/07/02(木) 11:47:360994デフォルトの名無しさん
2009/07/03(金) 01:26:40Webサーバー上での動作でPHPと比較したとき、Ruby(on Rails)の長所・短所って何ですか?
0995デフォルトの名無しさん
2009/07/03(金) 01:30:320996デフォルトの名無しさん
2009/07/03(金) 01:30:56・ PHPじゃないこと
短所
・ PHPじゃないこと
仕事で使う程度のPHPくらいなんとかしろ
精密なプログラムが必要になることも精密なプログラマが必要になることも良くも悪くもまずない
0997デフォルトの名無しさん
2009/07/03(金) 01:47:220998デフォルトの名無しさん
2009/07/03(金) 01:49:51phpがだめな理由、使わない理由も自分で説明しろよ
納得できれば注文を変えてくれる可能性
0999デフォルトの名無しさん
2009/07/03(金) 01:53:01Railsが万能であり,PHPやJavaなど既存の環境をすべて置き換えられるという訳ではない。
Railsの作者であるDavid Heinemeier Hansson氏は元々PHPユーザーであり,
いまでも37signalsのページではPHPが使われている。
Railsはしっかりしたモデルを持ったデータベースアプリケーションには向いているが,
メールフォームやアンケートなど,遷移の少ないものでは,その利点をあまり発揮しない。
またPHPなどに比べて,メモリーを消費すると言う問題もあり,
資源の少ないサーバーでの運用には注意が必要である。
http://itpro.nikkeibp.co.jp/article/COLUMN/20060424/236113/
1000デフォルトの名無しさん
2009/07/03(金) 01:55:0010011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。