Ruby初心者質問スレPart2
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
05/02/08 03:02:27Ruby Home Page
http://www.ruby-lang.org/ja/
前スレ
Ruby初心者質問スレPart1
http://pc5.2ch.net/test/read.cgi/tech/1100534824/
本スレ
Rubyについて Part 14
http://pc5.2ch.net/test/read.cgi/tech/1103997158/
0002デフォルトの名無しさん
05/02/08 03:03:17: 【Ruby】RubyでCGI
http://pc5.2ch.net/test/read.cgi/php/988948655/
: 【最高言語】 Rubyist Magazine創刊 【ルビま!】
http://pc5.2ch.net/test/read.cgi/tech/1094825807/
= 関連スレ?
: RUBYの宿題教えてください。
http://pc5.2ch.net/test/read.cgi/tech/1106572657/
= 関連リンク
: リファレンス
http://www.ruby-lang.org/ja/man/
: Ruby Weekly News @ Ruby Garden
http://www.rubygarden.org/rurl/html/
: ruby-cvs
http://rrr.jin.gr.jp/rwiki?cmd=view;name=ruby-cvs
: Ruby hotlinks 五月雨版
http://rrr.jin.gr.jp/~znz/samidare/
: 日本Rubyの会
http://jp.rubyist.net/
: Rubyist Magazine
http://jp.rubyist.net/magazine/
: <rubyXML/>
http://www.rubyxml.com/
: Matzにっき
http://www.rubyist.net/~matz/
0003デフォルトの名無しさん
05/02/08 03:22:390004デフォルトの名無しさん
05/02/08 03:26:230005デフォルトの名無しさん
05/02/08 03:55:350006デフォルトの名無しさん
05/02/08 10:18:01可能性がわずかにはあるかも。開発にRubyを使う案件って稀みたいです。
C++など他の言語で開発する際に、支援ツールをさくっと作るには便利ですよ。
私もそれでかなり重宝してます。
0008デフォルトの名無しさん
05/02/08 12:03:30実質的に統合されるなら削除依頼出します。
0009デフォルトの名無しさん
05/02/09 07:08:10別に統合しなくても良いと思うよ
0010デフォルトの名無しさん
05/02/09 14:03:12前スレも3ヶ月で1スレ消費程度に需要があったし。
……MW 祭りやらスクリプト爆撃の影響が、かなりある気がするけど。
0011デフォルトの名無しさん
05/02/09 15:07:28MW版Rubyの進捗状況が気になって同氏のWikiを拝見しようと思ったら、
サーバが落ちてました...。一時的なダウンなのかな?
0012デフォルトの名無しさん
05/02/09 16:48:49なお、進捗なんてないのでいちいち見る必要はなさそうです。
0013デフォルトの名無しさん
05/02/09 20:44:560014デフォルトの名無しさん
05/02/10 09:24:150015デフォルトの名無しさん
05/02/11 14:07:470016デフォルトの名無しさん
05/02/13 08:38:33文字列を外からあたえて、それに応じてインスタンスを
作成する方法に関してです。以下では、簡単のために、
ClassAと ClassB の二つにして説明します。
class ClassA
def initialize
end
def out
puts 'AAAA'
end
end
class ClassB
def initialize
end
def out
puts 'BBBB'
end
end
(1)引数で ClassA もしくは ClassB という文字列を与えて、
二つを使いわけることを考えます。
もちろん、場合分けして明示的に書けば可能です。
(次の記事に続きます)
0017デフォルトの名無しさん
05/02/13 08:39:15以下のようにeval を使うことになります。
(ここももっと良い方法があれば教えてください。)
str = ARGV.shift # 引数として ClassA を与える
eval('x = ' + str +'.new')
eval('x.out' ) # << ==== (*)
(3) 質問は(*)の行に関してですが、
(Q1) evalを使わないとエラーになるのは何故でしょうか。
(Q2) x を使った作業が以下に延々と続くとした場合、
逐一evalを使用するのがうっとおしい。
何か回避策があるでしょうか。
以上です。よろしくお願いします。
0018デフォルトの名無しさん
05/02/13 09:49:45x.out
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/40021
からのスレッドが参考になると思う。
0019デフォルトの名無しさん
05/02/13 10:55:08結城さんのデザインパターン本(Javaによる)を読みながら
rubyに引きなおして考えています。そのなかでの疑問でした。
教えていただいたスレッドによると、FAQのようですが、
かずひこさんもすぐには思い付かなかった様子ですので、
サンデープログラマとしてはちょっと安心もしてます。<grin>
勉強になりました、感謝します。
(Q1)の関係でbindingというのも知りました。
0020デフォルトの名無しさん
05/02/13 16:06:51クラス名があらかじめ列挙できるなら
hash = { "ClassA" => ClassA, "ClassB" => ClassB, }
klass = hash[ARGV.shift]
obj = klass.new if klass
クラス名があらかじめわからない場合は、この方法は使えないけど。
0021デフォルトの名無しさん
05/02/13 17:28:560022デフォルトの名無しさん
05/02/13 20:47:33goRua <ttp://www.unixuser.org/~haruyama/software/goRua/> とか
0023デフォルトの名無しさん
05/02/18 19:25:18/tmp/mysql.sock がなくて経由できなくて使えないのだが、そういうものなの?
0024デフォルトの名無しさん
05/02/18 20:33:42ttp://kobe.cool.ne.jp/matsut/ruby_mysql.html
ttp://www.mysql.gr.jp/mysqlml/mysql/msg/9811
002523
05/02/18 21:00:23ありがとん。
つか、普通に 127.0.0.1 で逝けたのね orz
ちゃんと設定すれば hostname でも可能なのかもしれない。
Ruby/MySQL の方は MySQL の方のバージョンが高くて駄目ぽ。
あとは地道におぼえていこう......
0026デフォルトの名無しさん
05/02/25 01:56:52みたいに String を bigram に分割したいのですが、
どう書くのが普通なんでしょうか。
下のメソッドみたいな1文字ずつに分割しといて後で2つくっつける方法よりも、
2文字マッチさせて1文字ずらす方法の方が効率よさそうに思うのですが
うまくコードが書けません。
def bigram(str)
prev = nil
str.scan(/./).inject([]) do |result,ch|
result << prev+ch if prev
prev = ch
result
end
end
0027デフォルトの名無しさん
05/02/25 02:21:18(0..(s.size-2)).collect{|i| s[i..i+1]}
#=> ["ru", "ub", "by"]
0028デフォルトの名無しさん
05/02/25 04:14:350029デフォルトの名無しさん
05/02/27 00:36:12「File.openできません」と言われます。ensureではだめなの
でしょうか?
dir = Dir.open(".")
begin
dir.collect{|f| [f]}.each do |fname|
begin
file = File.open(@dir + fname, "w")
while line = file.gets
print line
end
file.close
rescue
file.close
raise
end
end
ensure
dir.close
end
0030デフォルトの名無しさん
05/02/27 02:07:02Dir.foreach('.') do |fname|
next unless FileTest::file?(|fname|)
fp = File.open(@dir + |fname|, "w")
...
end
0031デフォルトの名無しさん
05/02/27 02:08:34Dir.foreach('.') do |fname|
next unless FileTest::file?(fname)
fp = File.open(@dir + fname, "w")
...
end
0032デフォルトの名無しさん
05/02/27 05:53:060033デフォルトの名無しさん
05/02/27 09:35:41a[1,2,3,4]
a[1,0] = 6
a == [1,6,2,3,4]
最後の評価がtrueにならないのはなぜですか?
0034デフォルトの名無しさん
05/02/27 09:36:25の誤りですた
0035デフォルトの名無しさん
05/02/27 10:18:43ありがとうございます。nextとFileTestを組み合わせるのが、
私には理解しやすかったです。(まつもとさんのruby本では、
FileTestの記述が少ないですね。)
0036デフォルトの名無しさん
05/02/27 11:19:06parenthrsize argument(s) for future version.
理由がよくわかりません・・・
0037デフォルトの名無しさん
05/02/27 12:46:35何がしたいのか分からんが
a = [1,2,3,4]
a[1,0] = 6
p a
0038デフォルトの名無しさん
05/02/27 15:07:17将来問題が出る可能性のある書き方をしているから。
というか、実際のコードを出さない理由がよくわかりません・・・
0039デフォルトの名無しさん
05/02/27 15:15:500040デフォルトの名無しさん
05/02/27 16:11:31失礼しますた。
class Point
attr_reader :x,:y
def initialize(x,y)
@x = x
@y = y
end
def eql? other
self.class == other.class and
@x == other.x and
@y == other.y
end
end
p1 = Point.new(1,1)
p2 = Point.new(2,3)
p1.eql? p2 # 警告
p1.eql?(p2)
0042デフォルトの名無しさん
05/02/27 16:39:48構文解釈の問題だ
0043デフォルトの名無しさん
05/02/27 17:08:56括弧の省略が重なった時に出るんじゃないの?
$ ruby -e 'p p 0, 1'
-e:1: warning: parenthesize argument(s) for future version
0
1
nil
p(p(0,1)) なのか p(p(0),1) なのか曖昧なので、
(今のところ前者と解釈してるけど)今後はこの書き方はやめようね、と。
004440
05/02/27 17:27:56puts p1.eql? p2
とやってました。
puts(p1.eql?,p2)とputs p1.eql?(p2)
が近い将来曖昧になりえるということですね。
どうもありがとうございました。
0045デフォルトの名無しさん
05/02/27 17:30:34プログラムを書く場合エンコードの指定とかってできますか?
0046デフォルトの名無しさん
05/02/27 17:55:41もしくは $KCODE = 's' を指定する
で、駄目?
0047デフォルトの名無しさん
05/02/27 19:01:22> puts(p1.eql?,p2)とputs p1.eql?(p2)
> が近い将来曖昧になりえるということですね。
もともと曖昧なので「これからはそういう書き方はヤメロ」といわれてるのだよ。
0048デフォルトの名無しさん
05/02/27 19:03:07SJISの文字コードのテキストファイルの中身を全てSJISの文字コードのコンソー
ルに表示するだけなら、エンコードの指定って関係ないはずだが。
IO.foreach("inputfile"){|line| print line}
0049デフォルトの名無しさん
05/02/28 02:36:270050デフォルトの名無しさん
05/02/28 05:43:58print なら解るが。
0051デフォルトの名無しさん
05/02/28 08:22:15でかいファイルだとメモリが…
0052デフォルトの名無しさん
05/02/28 13:43:35printとwriteの違いは何?
0053デフォルトの名無しさん
05/02/28 14:27:51違いっていうか、 Kernel#write ってそもそもあったっけ?
0054デフォルトの名無しさん
05/02/28 17:35:48ソースを確認してないけど、
print, puts, putc, << ここら辺は内部で write が呼ばれてるんだっけ?
でも、>>45 で「コンソールに表示する」と書かれてるから、
>>49 のままでは使えないと思っただけ。
$stdout.write(File.read("inputfile")) なら解る。
ズレたこと言ったのならゴメンよ。
0055デフォルトの名無しさん
05/03/02 05:11:46write 変換なし
0056デフォルトの名無しさん
05/03/02 14:31:530057デフォルトの名無しさん
05/03/02 14:59:330058デフォルトの名無しさん
05/03/02 21:09:27IO.foreach("inputfile", &method(:print))
$stdout.write(File.read("inputfile"))
0059デフォルトの名無しさん
05/03/02 23:21:06STDOUT.write nil
とか。あとprintは$_、$,、$\を使う、戻り値がprint => nil、write => 出力できたバイト数、とか。
0060デフォルトの名無しさん
05/03/03 02:32:320061デフォルトの名無しさん
05/03/03 02:42:040062デフォルトの名無しさん
05/03/03 12:56:48>>54
0063デフォルトの名無しさん
05/03/04 00:43:300064デフォルトの名無しさん
05/03/05 06:23:160065デフォルトの名無しさん
05/03/05 06:39:580066デフォルトの名無しさん
05/03/05 09:37:10なんでInteger#succ!がないんだろ
0067デフォルトの名無しさん
05/03/05 10:58:590068デフォルトの名無しさん
05/03/05 14:24:191.succ!ってやったら1==2になっちゃうなんてのはイヤだろ?
0069デフォルトの名無しさん
05/03/05 15:08:03007067
05/03/05 15:14:36O Fixnumがimmutableだから
007169
05/03/05 15:38:52O Fixnum が mutable な Ruby
つられて間違ってしまった・・・orz
0072デフォルトの名無しさん
05/03/05 22:39:170073デフォルトの名無しさん
05/03/05 22:57:05Cで1++ってやったら1==2なんのか?あ?
0074デフォルトの名無しさん
05/03/06 00:55:270075デフォルトの名無しさん
05/03/06 03:00:400077デフォルトの名無しさん
05/03/09 06:25:27p "『".gsub!('a','A')
がうちの環境ではnilになるのですがどうしてですか。
コードはEUCです。
0078デフォルトの名無しさん
05/03/09 06:37:06str = "『"
p str.gsub!('a','A') #=> nil
p str #=> "『"
str = "abc"
p str.gsub!('a','A') #=> "Abc"
p str #=> "Abc"
対して gsub は、変更した文字列を返し(変更されなかったらコピー)、
元の文字列はそのままです。
str = "『"
p str.gsub('a','A') #=> "『"
p str #=> "『"
str = "abc"
p str.gsub('a','A') #=> "Abc"
p str #=> "abc"
0079デフォルトの名無しさん
05/03/09 06:45:47やってみたら、本当ですね。
!のあるなしでかなり違うのですね。
初心者バレバレです。精進します。
0080デフォルトの名無しさん
05/03/09 18:55:16仮に漏れがバカだとしてバカでも知っている常識すら知らないことを威張るなよ低能が。
0081デフォルトの名無しさん
05/03/09 19:09:44!が末尾についているメソッドは、ついていないメソッドと同等の効果があっ
て自身を変更する。戻り値については nil だったりいろいろ。
なので、戻り値は考えないで自分自身を書換える場合は gsub! などを使い、
自分自身を書換えずに戻り値を使いたい場合は gsub を使う、とかいう風に使
いわけるといいよ。
といっても、文法的に決まってたりとかいう事ではぜんぜんないので、そのメ
ソッドが自分自身を本当に破壊的に変更するかどうかはあらかじめ確認しとい
た方がいい(Array#rejectあたりが典型例)。
0082デフォルトの名無しさん
05/03/09 20:55:05>>1 のページのチュートリアルは何故あんなにセンスが悪いんすか?
0083デフォルトの名無しさん
05/03/09 21:15:43m9(^Д^)プギャ-
0084デフォルトの名無しさん
05/03/10 01:51:54だからといって foo が破壊的でないとは限らない。
0085デフォルトの名無しさん
05/03/10 18:58:09喋れば喋るほど知能の低下を如実に現してる。
こーいうのが偉そうに喋ってたのかよw
相手してた奴が恥ずかしいなw
0086デフォルトの名無しさん
05/03/10 19:54:41その説が結論に至る過程が正しくないということです。
ですから、結論を肯定することも否定することもその説が正しいかどうかの検証にはなりません。
理論というものは例で補強されるものではなく理屈で補強されるものです。
例などはなくても考え方の筋道が通っていれば正しいのですし、
逆にいくら例があっても筋道の通っていない考え方は間違いなのです。
なお誤解のないように付け加えておきますが、「例を示す」というのは筋道の通った考え方の一つです。
例を示さなくていいとか例を示してはいけないというわけではありません。
例を示しさえすればいいというのが間違いなのです。
0087デフォルトの名無しさん
05/03/10 21:43:56完璧に同意。
そして理論というものはトップダウンにかくと分かりやすいものなのだが、
その理論の入り口にいる時にはトップダウンに抵抗を感じるもの。
そのことがマニュアルやチュートリアルをかくことを難しくしているのだと思う。
こういう時は「目的」や「例」などをふんだんに使いながら低い所から登って行くしかない。
0088デフォルトの名無しさん
05/03/11 01:11:160089デフォルトの名無しさん
05/03/11 01:31:230090デフォルトの名無しさん
05/03/11 18:32:39が動かなくなったんですが、良い解決策ありませんか?
「erb使え」ちゅうのは無しで。
str = '"a" = #{a}'
s = "12"
puts eval( str.inspect )
以前の結果、"a" = 12
現在の結果、"a" = #{a}
0091デフォルトの名無しさん
05/03/11 18:36:13s="12" は、a="12" の間違いです。
0092デフォルトの名無しさん
05/03/11 19:17:51puts eval(str.inspect.gsub(/\\(?=#[$@{])/n, ''))
inspectとevalはできるかぎり逆変換になることが期待されるので、
今のほうが本来意図された動作。
009392
05/03/11 19:27:230094デフォルトの名無しさん
05/03/11 21:22:18いや、inspectにはそんなことは期待されてない。
evalしたいならString#dumpを使うのが正しい。
それ以外は92の言ってる通り。
0095デフォルトの名無しさん
05/03/11 21:53:070096デフォルトの名無しさん
05/03/11 22:10:52でも inspect にそんなことを期待している人は意外と多い罠。
0097baka
05/03/11 22:43:31そんなことできるソフトなさそうなので自分でちゃっちゃっとスクリプト書こうと思っています。
といってもあまりノウハウがないので、なにか参考になるページあったら教えてください。
0098デフォルトの名無しさん
05/03/11 23:08:02で、Rubyはどの程度書けるわけ?
0099デフォルトの名無しさん
05/03/11 23:33:48逆に聞くけど、お前はどの程度なわけ?
0100baka
05/03/12 00:01:08汎用的なのだと難しいから、ひとまず今変換したいやつだけ変換できれば良いので。
ちょっとRAAを覗いてみます。Rubyコミュニティってなんとなく感じ悪い…
0101デフォルトの名無しさん
05/03/12 00:28:48ところでTeX2pageってこれ?
http://www.ccs.neu.edu/home/dorai/tex2page/tex2page-doc.html
Schemeとかで動くって書いてあるから多分別物だと思うけど……。
0102デフォルトの名無しさん
05/03/12 18:15:10調べるのがよいとおもわれ。
0103デフォルトの名無しさん
05/03/15 06:33:570104デフォルトの名無しさん
05/03/15 12:51:08またそういう感じの悪いことを言うんだからもう。
0105デフォルトの名無しさん
05/03/16 21:30:01探しているんですが、googleで "ruby cgi auth", "ruby pear auth"
などと検索してもいまひとつ見つかりません。
どなたかご存知の方は教えてください。
0106デフォルトの名無しさん
05/03/17 00:17:540107105
05/03/17 10:00:48PEARというのはPHPの(公式の?)ライブラリで、RUBYで言うと
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=%C5%BA%C9%D5%A5%E9%A5%A4%A5%D6%A5%E9%A5%EA
に相当するものとして認識しています。
PEARのAuthの説明は
ttp://pear.php.net/manual/ja/package.authentication.php
にあります。
CGI用の認証関連のライブラリが、どこかに無いものか。
と探していた次第です。
0108デフォルトの名無しさん
05/03/17 10:15:55ttp://www.google.co.jp/search?hl=ja&q=ruby+pear+%E8%AA%8D%E8%A8%BC&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
ttp://www.google.co.jp/search?hl=ja&q=ruby+cgi+%E8%AA%8D%E8%A8%BC&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja
0109デフォルトの名無しさん
05/03/17 11:41:150110デフォルトの名無しさん
05/03/17 18:42:59大好評発売中!
http://openuser10.auctions.yahoo.co.jp/jp/user/dancexxx1960?
市販SOFTやオンラインSOFTのパスワード集です。
オークション関係から画像・OS・表計算・CAD・・・・etc
国内・国外のあらゆる分野のSoftを解析済です。
これを初めて手にされた時には、驚愕される事でしょう。
そして・・・手当たり次第にインストールを始める筈ですw
パソコンをご使用の方なら、必ず!満足されると思います。
解析結果のデータベースには15,000点を越えるパスワードが入ってます。
このパスワード集から検索するだけで、登録や制限解除が出来てしまいます。
シェアウェアを購入して、正規登録したのと同じ状態になります。
余りにもデータが多すぎる為、辞書引のようなパスワード検索SOFTで提供します。
シェアウェア以外にもパッケージ版をVectorなどでオンライン販売してるSOFTにも
多数対応しています。これらをダウンロードして無期限に試用する事も可能です(^^;
WindowsXPやOfficeなどのCDキー(プロダクトキー)ジェネレーターを使えば複数のパソコンに
インストールする事も可能です。デスクトップとノートPCなど2台以上持ってる場合は特に有効ですね。
オンラインSOFTを購入した経験は有りますか?
ありとあらゆる分野の優れたSOFTが、数多くありますよね。
しかし、ほとんどが試用期間や機能制限をして、「気に入ったら購入してください」です。
もう少し使いたいが使用期限切れで、削除・・・再インストールを繰り返していませんか?
0111デフォルトの名無しさん
05/03/17 20:29:32通報しますた
0112デフォルトの名無しさん
05/03/19 12:57:23Hello を Hellow と書く人ってよくみるなあ
0113デフォルトの名無しさん
05/03/19 19:12:250114デフォルトの名無しさん
05/03/19 19:25:20たとえば、クラスFooを定義したとします。
class Foo
...
end
そのあとで、やっぱ名前空間をわけようと思って、モジュールFooを作りました。
module Foo
class Foo
...
end
end
ここで、モジュール名とクラス名とを同じにしてしまいました。でもちょっと気持ち悪い。
こんなとき、どんなモジュール名(またはクラス名)にしたらいいでしょうか。
よい命名ルールがあれば教えてください。
Javaならパッケージ名には小文字を使うので、悩まなくてすむのですけど。
package foo;
class Foo
...
end
0115デフォルトの名無しさん
05/03/19 21:24:020116デフォルトの名無しさん
05/03/20 00:44:13機能を表す名前。
0117デフォルトの名無しさん
2005/03/21(月) 12:07:05機能を表す名前が1つしか思いつかないため、なやんでます。
module Visitor
class Visitor
...
end
class FooVisitor < Visitor
...
end
class BarVisitor < Visitor
...
end
end
0118デフォルトの名無しさん
2005/03/21(月) 14:30:400119デフォルトの名無しさん
2005/03/21(月) 21:49:59別に気持ち悪くはない。
0120デフォルトの名無しさん
2005/03/21(月) 22:40:15こういうのはケースバイケースなので、一例として。
> module Visitor
> class Visitor
外側のmoduleがメインになって内側のclass表にでない、
サブクラスも外部からしか使わないってんなら、
Visitor::BaseとかVisitor::Abstractにして、
class ForFoo < Base; end
class ForBar < Base; end
なんてするかも知れない。
なんとかVisitor,なんとかVisitorと繰り返すのは好みじゃないし。
0121デフォルトの名無しさん
2005/03/23(水) 15:21:42エディタでの色分けが不完全だったりするのが多いですよね。
皆さん何でRubyを書いてるでしょう・・・?
0122デフォルトの名無しさん
2005/03/23(水) 16:04:260123デフォルトの名無しさん
2005/03/23(水) 17:25:020124デフォルトの名無しさん
2005/03/23(水) 18:37:000125デフォルトの名無しさん
2005/03/23(水) 19:53:050126デフォルトの名無しさん
2005/03/23(水) 20:47:220127デフォルトの名無しさん
2005/03/23(水) 20:50:200128デフォルトの名無しさん
2005/03/23(水) 21:01:060129デフォルトの名無しさん
2005/03/23(水) 22:54:56さらに作業環境が変わるとvimになったりするが。
0130デフォルトの名無しさん
2005/03/23(水) 22:55:40Ruby for チラシの裏うpきぼんぬ
0131デフォルトの名無しさん
2005/03/23(水) 23:02:47アンケートはそろそろこのへんで終了してよろしいでしょうか?
0132デフォルトの名無しさん
2005/03/23(水) 23:47:130133121
2005/03/24(木) 03:35:170134デフォルトの名無しさん
2005/03/26(土) 02:09:230135デフォルトの名無しさん
2005/03/26(土) 09:52:430136デフォルトの名無しさん
2005/03/26(土) 12:27:35ヒィィ!!!
0137デフォルトの名無しさん
2005/03/26(土) 23:11:050138デフォルトの名無しさん
2005/03/27(日) 23:48:292chに浸り過ぎて読解力なしの厨房
0139デフォルトの名無しさん
2005/03/28(月) 02:07:092ちゃんねらに高度な読解力を要求する勘違い
0140デフォルトの名無しさん
NGNGサイズ比を計算するスクリプトを作ってみた。> ruby a.rb directory
一応目的の結果が得られるのですが、ハッシュのキーソートの部分やら
もっと簡潔に出来ないでしょうか?
wfsize = {}
mfsize = {}
ARGV.each { |dir|
dir = dir.sub(/\\$/, "")
Dir.glob(dir + "/*.{[wW][aA][vV],mp3}") { |f|
bf = File.basename(f, ".*")
if /\.wav$/i =~ f then
wfsize[bf] = File.stat(f).size
else
mfsize[bf] = File.stat(f).size
end
}
}
wfsize.to_a.sort { |a, b|
String(a).upcase <=> String(b).upcase
}.each { |w|
printf "%-40s圧縮率:%3d%%\n", w[0], Integer(mfsize[w[0]]) * 100 / Integer(w[1])
}
0141デフォルトの名無しさん
NGNG> Dir.glob(dir + "/*.{[wW][aA][vV],mp3}") { |f|
へぇ。こんなんできるんだ。
> wfsize.to_a.sort { |a, b|
> String(a).upcase <=> String(b).upcase
> }.each { |w|
> printf "%-40s圧縮率:%3d%%\n", w[0], Integer(mfsize[w[0]]) * 100 / Integer(w[1])
> }
wfsize.keys.sort_by {|e| e.upcase }.each {|bf|
printf "%-40s圧縮率:%3d%%\n", bf, mfsize[bf] * 100 / wfsize[bf]
}
0142デフォルトの名無しさん
NGNG>printf "%-40s圧縮率:%3d%%\n", bf, mfsize[bf] * 100 / wfsize[bf]
>}
そうそ、この部分をハッシュのキーそのままで使いたかったんだよね。
試行錯誤しても出来なかった・・・
すごく直感的に処理できている。勉強になりました。ありがと
それとsort_by は1.6では使えないんだね。
0143デフォルトの名無しさん
2005/04/02(土) 20:15:23お願いします、教えてください。
Cygwin上で、ruby 1.8.2 を走らせておりますが、次のような
スクリプトを書いたときの挙動が理解できません。
#!/usr/bin/ruby
p str = 'this'
p "#{str}"
p #{str}
2、3行目では "this" と表示してきますが、4行目は長さゼロの
文字列のようです。これはどうしてですか?素人考えでは、これも
"this" ときていいんじゃないかと思うんですが。どうなんでしょう?
0144デフォルトの名無しさん
2005/04/02(土) 20:20:250145デフォルトの名無しさん
2005/04/02(土) 20:27:40問題を簡潔に書こうとしすぎて、スクリプトを削っていったらコメントになっちゃった。
すいません。
実はこれを、正規表現の中に埋め込んで、/#{str}/ と書いていたんだけど、
どういうわけか、マッチするはずの文字列にマッチしてくれない(すっごい簡単な
文字列だから、絶対マッチするはずなんですけど)。
というようなことでした。うーん、もう一回スクリプトを検討してみますが。
0146デフォルトの名無しさん
2005/04/02(土) 22:15:56メタ文字をエスケープしていないとか。
0147デフォルトの名無しさん
2005/04/02(土) 22:46:23ゴメン、女なら教えたんだが。
0148デフォルトの名無しさん
2005/04/03(日) 15:06:26http://www.rubyurl.com/
0149デフォルトの名無しさん
2005/04/04(月) 13:55:45ar = ["a", "b", "c"]
ar.each {|x| print x, "は配列arの添え字", XXXX, "の要素 " }
#=> aは配列arの添え字0の要素 bは配列arの添え字1の要素 ...
ブロック内で今処理されている配列の添え字を知りたいのですが、
良い方法はないでしょうか。for i in 0...ar.size を使えば目的は達成
できるのですが、あんまりきれいじゃないと思ったので。
そういう時にはeach_with_indexをどうぞ。
0151149
2005/04/04(月) 14:32:26ar.each_with_index {|x, i| print x, "は配列arの添え字", i, "の要素 " }
で、できました。Mix-inとかあまり分かってないのでリファレンスきちんと読んでみます
ありがとうございました。
0152デフォルトの名無しさん
2005/04/05(火) 23:13:48コモンダイアログで、ファイルを複数開きたいのですが、
def open_clicked
fn=SWin::CommonDialog::openFilename(self,[ ["ログファイル","*.txt"]])
end
みたいな感じですが、これだと一個しか開けません。
OFN_ALLOWMULTISELECTを指定するらしい、ということまではわかったのですが、
どのように書けばよいのでしょうか?
0153デフォルトの名無しさん
2005/04/06(水) 18:15:31その辺はswin/vrubyでは定数宣言されてないようだ。
まともなサンプルではないが
require 'vr/vruby'
require "swin"
RFactory=SWin::LWFactory.new SWin::Application.hInstance
mw=RFactory.newwindow(nil)
fn=SWin::CommonDialog::openFilename(mw,[ ["ログファイル","*.txt"]], 0x80000 | 512)
とりあえずOFN_EXPLORER | OFN_ALLOWMULTISELECTと同意。
MinGWのcommdlg.hから値をとりました。
vrubyみたいにWStructというモジュールを定義してその中で定数宣言しとけば良い。
0154デフォルトの名無しさん
2005/04/07(木) 17:04:31しかもAPIがごそごそ変わっています。
情報があまりないので、苦労しています。
たとえば、
Gdk::LINE_SOLID
がGtkでは、使えていたのにGtk2では、
Gdk::GC::LINE_SOLID
でないとだめになった。こんなことどこにも書いていない。
どこかに、Gtk2の(特にGdk)のAPIがまとめてないでしょうか。
0155デフォルトの名無しさん
2005/04/07(木) 17:21:03http://ruby-gnome2.sourceforge.jp/
0156デフォルトの名無しさん
2005/04/07(木) 18:42:03ご教示ありがとうございます。
そこも、見ましたが、ドキュメントがまだ整備されていません。
初心者なので、整備に参加することも出来ず手をこまねいています。
APIもGtk2のみです。ソースを見てもわからずお手上げです。
0157デフォルトの名無しさん
2005/04/07(木) 19:32:16いや、英語の方ね (一応)
Gtk2 のみじゃなくて、Gdk を含む他のもあると思ったが、
見事に Gdk::GC の部分のドキュメントは未整備だな orz
http://ruby-gnome2.sourceforge.jp/hiki.cgi?Ruby%2FGDK
0158デフォルトの名無しさん
2005/04/09(土) 16:57:46実は、2重ループをしたくて、
j=0;k=0
while k<5
while j<3
p j,k
j=j+1
end
k=k+1
p k
end
というようなプログラムでwhileを2つ使ったのですが
内側のループが一回しか実行されません。
rubyでは、ゆるされない表現なのでしょうか。
0159デフォルトの名無しさん
2005/04/09(土) 17:02:16ゆるされる表現だと思いますがjの初期化位置が違うのではないでしょうか
0160デフォルトの名無しさん
2005/04/09(土) 17:06:08ありがとうございます。
恥ずかしい限りです。
0161デフォルトの名無しさん
2005/04/20(水) 15:04:30挙動がわかんないのでご教授願いたく・・・
require 'net/http'
target = "localhost"
path = "/"
h = Net::HTTP::new(host=target)
p h
p h.get(path)
Thread.start{
h = Net::HTTP::new(host=target)
p h
p h.get(path)
}
このコードで一回目はちゃんと200で帰ってくるのですが
スレッドの中のは結果をとってきてくれません。
スレッド中で例外が発生した場合はそのスレッドは死んじゃうとの記述があったので
p h.get(path) rescue p $!
にしてもどうも補足してくれなくて・・・
ちなみに環境はruby 1.8.1 (2003-12-25) [i386-cygwin]です
0162デフォルトの名無しさん
2005/04/20(水) 15:25:27Thread.start{
h = Net::HTTP::new(host=target)
p h
p h.get(path)
}.join
ということでなくて?
これならスレッドが終わるまえにスクリプトが終わってる
0163デフォルトの名無しさん
2005/04/20(水) 15:47:23・・・なるほど
joinしないと作ったスレッドが終わる前にメインスレッドが
終わってしまうということですね。
ありがとうございました。
0164デフォルトの名無しさん
2005/04/25(月) 00:03:030165デフォルトの名無しさん
2005/04/25(月) 00:39:26リファレンスマニュアル見てもわからんの?
前者は行頭に、後者は文字列の先頭にマッチ。
たとえば "a\nb\nc\n" なら、
前者は "a" の前と "b" の前と "c" の前にマッチするが、
後者は "a" の前にしかマッチしない。
0166デフォルトの名無しさん
2005/04/25(月) 23:35:33どうもありがとうございました
0167デフォルトの名無しさん
2005/04/27(水) 00:06:130168デフォルトの名無しさん
2005/04/27(水) 00:23:180169デフォルトの名無しさん
2005/04/27(水) 08:33:13$ ruby -e 'p 1.0/0.0'
Infinity
下記のリファレンスマニュアルでは、メモリサイズの制約だけとありますね。
ttp://www.expansys.jp/product.asp?code=120505
0171デフォルトの名無しさん
2005/04/27(水) 19:42:500172デフォルトの名無しさん
2005/04/28(木) 20:47:220173デフォルトの名無しさん
2005/04/28(木) 21:24:150174デフォルトの名無しさん
2005/04/28(木) 22:32:42お。どんな感じです?近所の書店には未入荷でして。
ネットで予約した方が早かったかな?
0176デフォルトの名無しさん
2005/04/28(木) 23:12:09今37ページでオブジェクトの解説してます。
ruby初めてだけど、他の言語知ってるなら
充分理解できるようにわかりやすくかかれている感じ。
それより先は読んでないからまだ何とも言えないです。
所で、実行ファイルってrb形式のヤツですよね?
実行するとアクセスが拒否されましたってダイアログが出て実行できないんだけど
これは何故なのか…
付属のCD-ROMの収録内容かな?実行環境はLinux?Windows?
Windowsなら、拡張子でRubyインタプリタを関連付いてますか?
あとは文字通りで、何かのアクセス権がないから?
手元にあれば試してみるんだけどなぁ。
0178デフォルトの名無しさん
2005/04/29(金) 00:08:290179デフォルトの名無しさん
2005/04/29(金) 00:12:04winです。
付属のサンプルもですけど、多分ruby全体がダメだと思います。
なんなんだろうか…
アンインストールして入れ直してみるかな
0180デフォルトの名無しさん
2005/04/29(金) 09:21:54という本か。SSTP とか懐しいな。
面白そうだ、俺も買ってみよう。
0181デフォルトの名無しさん
2005/04/29(金) 13:41:21ファイルのプロパティを開いて 読み取り専用のチェックを外す
とよひとおもふ
0182デフォルトの名無しさん
2005/04/29(金) 13:46:03HDDにCPしてから>>181 で、初めて実行可能になるきがするが
0183デフォルトの名無しさん
2005/04/29(金) 16:54:430184デフォルトの名無しさん
2005/04/29(金) 20:25:07……あ、最近ギャルゲもエロゲもあんまりやらなくなったなぁ´`,、(´∀`)´`,、
0185デフォルトの名無しさん
2005/04/29(金) 21:16:39まきまきかわいいよまきまき。
0186デフォルトの名無しさん
2005/04/29(金) 21:42:490187デフォルトの名無しさん
2005/04/29(金) 22:54:320188デフォルトの名無しさん
2005/04/29(金) 23:10:45windowsの表示をクラシックモードにしたりをrubyでやりたいのですが
出来ますでしょうか?
0189デフォルトの名無しさん
2005/04/29(金) 23:57:59http://www.ruby-lang.org/ja/man/?cmd=view;name=win32%2Fregistry.rb
これで何とかならん?
0190デフォルトの名無しさん
2005/04/30(土) 11:08:53例えば、次のようなスクリプトを実行したとします。
rubyのバージョンは1.8.2, Tkのバージョンは8.3.5, OSはLinuxです。
--- ここから ---
#!/usr/local/bin/ruby -Ke
require 'tk'
font = TkFont.new({'size' => '12'})
scr = TkScrollbar.new.pack('fill' => 'y', 'side' => 'right')
txt = TkText.new('font' => font).pack('expand' => 'true', 'fill' => 'both', 'side' => 'right')
txt.yscrollbar(scr)
Tk.mainloop
--- ここまで ---
このとき、TkTextウィジェット内での日本語入力は可能で、同じTkText内でのコピペも問題ありません。
しかし、例えばこのプログラムをふたつ立ち上げて、一方のTkText内の日本語を他方にコピペすると
文字化けしてしまいます。
なにか解決方法はないでしょうか。よろしくお願いします。
Linux上のruby 1.8.2、tk 8.4.9で試したところ、
プログラム間でのコピー&ペーストで文字化けしません。
他のプログラムとの間でも同様に文字化けするのでしょうか?
クリップボードを監視変更するようなプログラムが動作していませんか?
0192190
2005/04/30(土) 15:06:52>他のプログラムとの間でも同様に文字化けするのでしょうか?
問題となっているプログラムを仮にAと呼ぶと
mlterm -> mlterm: OK
mlterm -> A: NG
A -> mlterm: NG
A -> A : OK
ただし、別の新しいプロセスとして立ち上げたものをA'とすると
A -> A': NG
です。
>クリップボードを監視変更するようなプログラムが動作していませんか?
XfceのClipboard Managerが動いていましたが、
これを落としても文字化けしました。
0193デフォルトの名無しさん
2005/04/30(土) 18:19:29print '能'
このプログラムで"が閉じられていないというエラーが出ます。
ちなみにlinuxでは動作しますが、win32だと駄目です。
KCODEの設定をしても駄目みたいです。
こういうことって結構あるのですか?
0194デフォルトの名無しさん
2005/04/30(土) 19:04:59rdindex (1.2.2) を使いたいと思っているのですが、
インストールに失敗します。
$ ruby setup.rb config
とすると、~/.rdindex がないと言われるので、
{package_root}/dot.rdindex をコピーして続行しました。
$ ruby setup.rb setup
とすると、
{package_root}/rdindex-1.2.2/bin/rdindex/rdindex:2:in `require': No such file to load -- rdindex (LoadError)
と怒られます。
どうやらパッケージ内にこのファイルが無いようにも思えます。
({package_root}/setup/rdindex.rb はインストール用?)
正常に使用できるようにするには、どの様にすれば良いでしょうか?
0195デフォルトの名無しさん
2005/04/30(土) 19:25:19print "能\"
とでもしてください。
多分、
print "ソ"
print "表"
あたりでも同じ事が起こると思う。文字コードの問題かと。
0196190
2005/04/30(土) 20:34:33tcl/tk-8.4.9をインストールしてrubyもリビルドして試したところ
文字化けしませんでした。
8.3.5に拘る理由もないので、この機会にバージョンアップすることにします。
ありがとうございました。
0197デフォルトの名無しさん
2005/04/30(土) 22:37:47$KCODEは実行の際に関係する設定だから。
その問題はパースの際の問題なので
Rubyの引数に-Ksするかスクリプトの一番上に#! ruby -Ks
として解決。
0198デフォルトの名無しさん
2005/05/01(日) 01:43:23>>197
サンクスです
0199デフォルトの名無しさん
2005/05/01(日) 02:58:06例えば下のブロックの中に tmp というローカル変数を作りたいのですが
どのように書けば良いでしょうか。
tmp = 1
… {
# ここ
}
print tmp
0200デフォルトの名無しさん
2005/05/01(日) 10:10:13当然、そのスコープでのローカル変数になるから、
素直に、ブロック外かブロック内のどちらかの変数名を変更するか、
別の種類の変数などを利用していく方が、自然じゃないかな。
# for はちょっと特殊なので気をつけよう
0201デフォルトの名無しさん
2005/05/01(日) 18:57:35悲惨な結果になるような気がしてきた。
0202デフォルトの名無しさん
2005/05/01(日) 19:38:14Rubyの仕様上、ムリ。違う変数名にしろ。
というか、こんなことできる言語って他にあるか?
C++だとネストしたブロック内で同名の別変数を使えますね。
そういう言語に慣れてると混乱するかも。
今回の事例だと、変数名を変えるのが無難かも。
あるいは、該当部分を別のメソッドに分割するとか。
0204デフォルトの名無しさん
2005/05/01(日) 20:23:43名前に関係なく自由に変数のスコープを記述できるな。
0205デフォルトの名無しさん
2005/05/01(日) 20:59:10def initialize
@x = "xxx"
end
class B
def initialize
p @x
end
end
end
A::B.new
class A の @x を class B のメソッドから参照するには、どうすれば
Rubyリファレンスマニュアルの下記ページには以下の記述があります。
http://www.ruby-lang.org/ja/man/?cmd=view;name=%A5%AF%A5%E9%A5%B9%A1%BF%A5%E1%A5%BD%A5%C3%A5%C9%A4%CE%C4%EA%B5%C1
> クラス定義はネスト(入れ子)にして定義できます。
> 以下の例で入れ子の外側のクラス Foo と内側のクラス Bar の間には
> (定数 Bar が Foo の中の定数 Foo::Bar であること以外には)
> 継承関係などの機能的な関連はまったくありません。
205のスクリプトの「A::B.new」ではA#initializeを実行することが無く、
そもそもクラスAの@xが存在しません。
普通にAとBのクラスを定義する場合と同じなので、Aの@xを参照するなら、
まずAのインスタンスを作る必要があります。
そして、Aでは「attr_reader( :x )」のようにして参照用のメソッドを
用意しておきます。
もしかして、本来の意図は「class B < A」といった継承関係でしょうか?
0207デフォルトの名無しさん
2005/05/02(月) 13:20:19こういうオブジェクトを e = {"a" => "1", "b" => "2", "c" => "3"}
みたいなハッシュに変換したいんですが
どう書けばいいんでしょ?
3時間ほど悩んでます
とりあえず、こんな感じ?つっこみ歓迎。
def to_hash( array )
hash = Hash.new
array.each do | x |
if /(.+)=(.+)$/ =~ x
hash[ $1 ] = $2
end
end
return hash
end
x = ["a=1", "b=2", "c=3"]
p to_hash( x )
0209デフォルトの名無しさん
2005/05/02(月) 13:37:06p ["a=1", "b=2", "c=3"].inject({}) { |r,e| k,v = e.split(/=/, 2); r[k] = v; r }
0210デフォルトの名無しさん
2005/05/02(月) 13:45:09p ["a=1", "b=2", "c=3"].inject({}) { |r,e| r.store(*e.split(/=/, 2)); r }
0211207
2005/05/02(月) 13:46:51両案とも、あっさりうまくいってしまいました
>>208
正規表現使う案はさすがに思いつかなかったです(わら
>>209, 210
injectは知らなかったです、勉強になりました。
ありがとう
うぁ、injectを忘れてました。まだ頭が1.6系...。
それにsplitで十分かつすっきりしますね。ううむ、まだまだだなぁ。
0213デフォルトの名無しさん
2005/05/03(火) 00:21:03追加していくという流れで、配列、条件分岐から、正規表現、GUI、
webサービス、マルコフ辞書までと幅広い内容です。
ひとつ気になる点としては、作者が死んじゃってることくらいです。
遺稿になっちゃったんですね。
こういう書籍を書ける人が...もったいないなぁ。
0215デフォルトの名無しさん
2005/05/03(火) 09:39:26プログラムの実行を強制的に終了させる命令。
それが無理なら、せめてプログラムの末尾にGOTOさせたいんだけど、そんな命令もない。
まったく不便な世の中になったもんだ。
0216デフォルトの名無しさん
2005/05/03(火) 09:53:13何のために強制終了させたいのか、GOTOが欲しいのかが分かりませんが、
まずは216の通りにexitでしょうねぇ。異常終了を表すならabortというのも。
プログラムの末尾にジャンプさせるということであれば、例外を使う方法もありかも。
begin
何かの処理
if 終了条件 == true
raise
end
rescue
例外処理(あるいは何もしない。)
end
exitなどの詳細はリファレンスマニュアルを参照してみてください。
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=%C1%C8%A4%DF%B9%FE%A4%DF%B4%D8%BF%F4#exit
0218デフォルトの名無しさん
2005/05/03(火) 15:48:19などのサンプル | リファレンス が載ってるところはないでしょうか
0219215
2005/05/03(火) 18:24:10ありが�d(涙)
CGIの書き込みチェックに使いたかったんです。
raiseでムリヤリ例外を発生させてrescue節に飛ばす方がなんとなくRubyらしくてイイですね。
exitは初めて知りました・・・まだまだ知らないことばかりです;
0220デフォルトの名無しさん
2005/05/04(水) 09:56:200221218
2005/05/04(水) 13:59:58スレ汚してすいませんでした。
0222デフォルトの名無しさん
2005/05/04(水) 22:21:07秀丸とかterapadとかrdeとかいろいろあるけど、
どれでやってますか?
0223デフォルトの名無しさん
2005/05/04(水) 22:24:150224デフォルトの名無しさん
2005/05/04(水) 22:38:26ごくまれにviとcat
0225デフォルトの名無しさん
2005/05/04(水) 22:51:360226デフォルトの名無しさん
2005/05/04(水) 22:58:12xemacsのruby-mode。
0228デフォルトの名無しさん
2005/05/05(木) 11:09:18vim
0229デフォルトの名無しさん
2005/05/05(木) 12:48:29おまいら、「Ruby でエディタ何使ってますか?」スレ立ててそこでやれ。
0230デフォルトの名無しさん
2005/05/05(木) 12:53:09Visual Studio
0231デフォルトの名無しさん
2005/05/06(金) 08:11:49a = Array.new(10, 0)
for i in 1..100
case rand(10)
when 0; a[0] += 1
when 1; a[1] += 1
when 2; a[2] += 1
when 3; a[3] += 1
when 4; a[4] += 1
when 5; a[5] += 1
when 6; a[6] += 1
when 7; a[7] += 1
when 8; a[8] += 1
when 9; a[9] += 1
end
end
このやり方だとrand(100)とかrand(1000)にすると、
when 0; a[0] += 1 をたくさん書かないといけません
何かスマートな方法がないでしょうか?
よろしくお願いします
0232デフォルトの名無しさん
2005/05/06(金) 08:16:150233デフォルトの名無しさん
2005/05/06(金) 08:21:10そんなレス付ける暇があったらコードで示してやればいいのに。
性格悪い奴だな。
0234デフォルトの名無しさん
2005/05/06(金) 08:35:420235デフォルトの名無しさん
2005/05/06(金) 08:56:16RDE
0236デフォルトの名無しさん
2005/05/06(金) 13:33:39Ruby にも test/jarh.rb きぼんぬ。
0237デフォルトの名無しさん
2005/05/06(金) 17:17:11ttp://jarp.does.notwork.org/ruby/jarh.rb ←これを入れてもらう?
test/ よりも sample/ の方がいいかもしれない。
sample/ 以下って2年以上変更されてないファイルがほとんどだけど変更しない方針なのかな。
0238デフォルトの名無しさん
2005/05/06(金) 17:33:07こんなソッコーで回答してもらえるとは
ありがとうございました
0239デフォルトの名無しさん
2005/05/06(金) 22:56:54どの言語でもsampleの中って骨董品ばかりじゃない?
0240デフォルトの名無しさん
2005/05/06(金) 23:31:45そんなレス付ける暇があったらコードで示してやればいいのに。
性格悪い奴だな。
0241デフォルトの名無しさん
2005/05/08(日) 12:48:04Rubyって拡張子が cgi だと require できないのでしょうか。
もしそうなのであれば、拡張子が cgi のファイルをテストするいい方法はどのようなものでしょうか。
0242デフォルトの名無しさん
2005/05/08(日) 13:11:400243デフォルトの名無しさん
2005/05/08(日) 13:13:15require "hoge.cgi"
でいけない?
0244デフォルトの名無しさん
2005/05/08(日) 13:32:36現在は、ファイルをコピーして拡張子を rb にのものに置き換える処理のあとに require しています。
もうひとつ質問なのですが、
コンソールでは動くテストケースなのですが、
eclipse の RDT で動かそうとすると、
"起動中" 中に内部エラーが発生しました。
java.lang.RuntimeException: Unable to execute interpreter: -I "C:\data\workspace\ws1\calendar" -I "testunit" -- "No file specified in configuration" testunit/test_calendar.rb 6789 false TCMyCalendar
というエラーが出て、実行されません。
6789 という数字に覚えがないのですが、このエラーを回避するにはどうしたらよいのでしょうか。
0245デフォルトの名無しさん
2005/05/08(日) 13:44:100246デフォルトの名無しさん
2005/05/08(日) 13:52:41*.cgi って Ruby 以外なんでもアリなんだから、
ライブラリをロードする require が *.rb, *.so 限定な方が自然だろう。
> ていうかphpみたいに拡張子.rbにしてもうちょっと自己主張すればいいのに。
どゆいみ?
勘違いじゃなければ、httpd 側の設定の話な気がする。
0247デフォルトの名無しさん
2005/05/08(日) 14:03:03「ある条件を満たす要素以降の要素」に対して
処理をしたい時はどうすればよいのでしょう?
Cで書くなら↓のような感じなのですが
eachを使うと条件を満たした行しか得られないようなので・・
for(i=0; i<MAX-1; i++){
if(array[i] == 条件)
for(j=i; j<MAX-1; j++){
したい処理
}
}
}
0248デフォルトの名無しさん
2005/05/08(日) 14:21:55泥臭くやると
array[ array.index(条件) ... array.length].each { |e|
# eに対して「したい処理」
}
かな。だれかエレガントな解キボンヌ
0249デフォルトの名無しさん
2005/05/08(日) 14:37:13end = array.length
for x in start..end do
したい処理
end
もしくは、
array[start, end].each do |item|
したい処理
edn
とか?
0250デフォルトの名無しさん
2005/05/08(日) 14:41:02あと end = array.length にて end 使ったらマズい悪寒 orz
ブロックの終端以外の end は fin にでも書き換えてくれ
0251247
2005/05/08(日) 14:45:18ありがとうございます。試してみます。
0252247
2005/05/08(日) 14:45:440253デフォルトの名無しさん
2005/05/08(日) 17:00:20同じクラスのクラスメソッドを呼ぶときってどうしていますか?
・AruClass.classmethod()
・self.class.classmethod()
これ以外の方法はあるのでしょうか?
0254デフォルトの名無しさん
2005/05/08(日) 17:02:28例えば hash[:a][:b][:c] に x という別名を作って、
x にvalueを代入すると hash[:a][:b][:c] にも代入される、みたいな事を
したいのですが。
0255254
2005/05/08(日) 18:16:180256デフォルトの名無しさん
2005/05/08(日) 22:55:45なぜそれ以外の方法が必要なのか述べよ(250字)
0257デフォルトの名無しさん
2005/05/09(月) 01:31:37クラス名を書くのはクラス名が変わったとき(あってはならないが)めんどい。
self.class だと長い。
せめて class って直接書いて構文エラーにならなければいいのになぁ。
0258デフォルトの名無しさん
2005/05/09(月) 08:36:38> せめて class って直接書いて構文エラーにならなければいいのになぁ。
予約語だしなぁ。
それにclassを認めるとdefもifもwhileも…とか出てきそうでイヤ。
0259デフォルトの名無しさん
2005/05/10(火) 00:20:04なぜ継承があるのでしょうか?
0260デフォルトの名無しさん
2005/05/10(火) 09:46:46mix-inがあれば継承がなくても実装の共有は可能になるが、通常の親子関係が
コーディングの助けになる場面もあるわけで(kind_of?)、無理に継承を排除する
必要もないということかと。
0261デフォルトの名無しさん
2005/05/11(水) 11:07:20いわけだが。
0262デフォルトの名無しさん
2005/05/11(水) 14:14:26requireだと拡張子.rbや.soを補おうとしているからと思われ。
load "hoge.cgi"してみるとか。
0263デフォルトの名無しさん
2005/05/13(金) 06:47:55def name
return @name
end
def name=(name)
@name = name
end
def hello
print "俺は" + @name + "だ"
end
end
alex = Person.new
alex.name = "アレックス"
alex.hello
ツクールXPに入ってるRubyのマニュアルの
インスタンス変数の項目の例文なんですが、
5行目の(name)が
変数としてのnameなのか関数としてのnameなのか教えてもらえないでしょうか?
0264263
2005/05/13(金) 06:52:31プログラム自体初心者なもので、自分の質問が的確な質問かどうかも
わからない状態です。
的外れな事を質問していたらすみません。
0265デフォルトの名無しさん
2005/05/13(金) 07:35:07変数でも関数でもなく引数かな。よーするに変数か。
(name) 内の name は "アレックス" を受けている。
ここら辺を参考に
ttp://www.ruby-lang.org/ja/man/?cmd=view;name=FAQ%3A%3A%A5%E1%A5%BD%A5%C3%A5%C9#a5.2e2.20.2b.a4.e4-.a4.cf.b1.e9.bb.bb.bb.d2.a4.c7.a4.b9.a4.ab
たぶん、代入する感じでインスタンス変数にアクセスする手法だと思う (よく知らない)
普通に書くと以下の感じになるか? # というか attr_write を使う
class Person
def name
return @name
end
def instans_write(arg) # def name=(name)
@name = arg # @name = name
end # end
def hello
print "俺は" + @name + "だ"
end
end
alex = Person.new
alex.instans_write("アレックス") #a lex.name = "アレックス"
alex.hello
0266デフォルトの名無しさん
2005/05/13(金) 07:51:13寝惚けとる
1.8.3 の preview は何まで出るんだろうか……
0267263
2005/05/13(金) 08:04:20レスありがとうございます!
class Person
def name
return @name
end
def name=(name)
@name = name
end
def hello
print "俺は" + @name + "だ"
end
end
alex = Person.new
alex.name = "アレックス"
alex.hello
(name)内のnameが変数としてのnameなら、234段目のnameメソッドはなんの為にあるんでしょうか?
234段目を消しても、ちゃんと動くので、もう混乱してしまって・・・
以下マニュアルより転載。
>この例では @name というインスタンス変数を用意し、name、name= というメソッドを使って
>オブジェクトの外からアクセスできるようにしています。このようなメソッドをアクセサと呼びます。
無知な質問を何度もすみません;;
0268デフォルトの名無しさん
2005/05/13(金) 08:17:00参考URL先で理解できました。
ありがとうございました、後スレ汚し失礼しました。
0269デフォルトの名無しさん
2005/05/22(日) 09:21:170270デフォルトの名無しさん
2005/05/22(日) 09:54:09下の alex.name = "アレックス" が実はメソッド呼出しになっている。name
と = の間に空白があるが、実は ``name='' メソッドを呼出しており、その引
数が "アレックス" になってる。
このメソッドの仮引数は name で @name = name なんだから、仮引数 name の
値をインスタンス変数である @name に渡してるっつーこと。ようはセッター。
なので、 alex.name = "アレックス" なら、 alex のインスタンス変数@name
に "アレックス" が入るという寸法。
あとは、
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=FAQ%3A%3A%A5%E1%A5%BD%A5%C3%A5%C9
の 5.4 を読め。
0271デフォルトの名無しさん
2005/05/22(日) 10:12:02うはぁ・・・めちゃくちゃわかりやすい・・・
理解できたと思いますTДT)大感謝です。
name = の空白は関係なかったんですね。
迷惑ついでに答え合わせしていただけるとありがたいのですが
処理の流れとしては、
Personクラスを作成、@nameを定義。
Personのインスタンスalexを作成。
"アレックス"を引数に指定してname=を呼び出し。
仮引数nameに"アレックス"を受けてそのまま@nameに代入。
helloを呼び出して、表示。
・・・という感じであってるでしょうか?
0272デフォルトの名無しさん
2005/05/22(日) 11:09:49initialize 内で初期化してるなら、まだ解るけど。
p alex.name を追加してみれば解ると思うが、
name メソッドを使用した時に @name が返り値となるように設定している。
全然利用されてないけど、その本の別の場所で使ってるのかな?
正直、その例文だけみると、初心者だと少し混乱するものしょうがない駄目サンプルな気がする。
# >>265 で、かなりヒントを込めたつもりだったんだけどなぁ orz
0273デフォルトの名無しさん
2005/05/22(日) 11:16:58Rubyについて Part 16
http://pc8.2ch.net/test/read.cgi/tech/1116667484/
0274デフォルトの名無しさん
2005/05/22(日) 17:24:14む、
def name
return @name
end
はこの例文ではやっぱり使われてなかったのですね。
この部分だけ消しても動いたので、どういうモノなのか微妙で
恐らく return @name と書くだけでnameメソッドを呼び出さなくても@nameが定義されるんだろうと解釈してました。
丁寧でわかりやすく、本当にありがとうございました。
もっと勉強してなるべく人に頼らないで済むよう頑張ります!
0275デフォルトの名無しさん
2005/05/25(水) 10:26:030276デフォルトの名無しさん
2005/05/25(水) 20:14:50http://www.cyber.sccs.chukyo-u.ac.jp/sirai/classes/BasicsComp/
0277デフォルトの名無しさん
2005/05/25(水) 20:48:220278デフォルトの名無しさん
2005/05/25(水) 20:57:190279デフォルトの名無しさん
2005/05/25(水) 22:23:110280デフォルトの名無しさん
2005/05/26(木) 16:33:050281デフォルトの名無しさん
2005/05/26(木) 20:58:59http://pc8.2ch.net/test/read.cgi/tech/1106572657/l50
0282デフォルトの名無しさん
2005/05/28(土) 06:12:13あるディレクトリのなかの、
すべてのファイルの名前、
すべてのディレクトリの名前を出力するには
Rubyでならどう書く?
0283デフォルトの名無しさん
2005/05/28(土) 07:06:560284デフォルトの名無しさん
2005/05/28(土) 07:09:10xmlで出力先とかレベルとか設定できますか?
0285デフォルトの名無しさん
2005/05/28(土) 08:33:30「1段だけ(ディレクトリがあってもその中を見ない)」なのかわからんが、
前者なら
require 'find'
Find.find('/path/to/directory') { |f| puts f }
後者なら単に
puts Dir.entries('path')
0286デフォルトの名無しさん
2005/05/28(土) 08:35:13Dir.foreach(path) do |each_file|
puts each_file
end
>>284
Logger の方が使い方は楽。
ログのローテーションや YAML/XML で設定ファイルを書きたいなら log4r。
詳しくはサイト読めばわかるけど、例としてはこんなん。
require 'log4r'
require 'log4r/configurator'
Log4r::Configurator.load_xml_string(DATA.read)
logger = Log4r::Logger['bar']
logger.debug('test')
__END__
<log4r_config>
<outputter name="file" type="FileOutputter">
<filename>foo.log</filename>
</outputter>
<logger name="bar" level="DEBUG" trace="true">
<additive>false</additive>
<outputter>file</outputter>
</logger>
</log4r_config>
0287デフォルトの名無しさん
2005/05/28(土) 09:01:43ゴミ箱.捨てる(path)
</code>
のように、
消去したいディレクトリのパスだけ入力すれば、そのディレクトリの中味を全部消し去ってくれるようなモジュールって、ある?
0288デフォルトの名無しさん
2005/05/28(土) 09:25:08FileUtils::rm_r とか?
0289デフォルトの名無しさん
2005/05/28(土) 09:30:38例えばC側をコンパイルしなおさずに、
外部のrubyスクリプトを書き換えてC内の変数を弄る、とか
逆にCからrubyスクリプトで書いた関数を実行する、とか。
0290デフォルトの名無しさん
2005/05/28(土) 09:39:08前者: Ruby で扱えるようにした変数であればできる。
要は C で拡張ライブラリを書くということだが。
int i とか char s[20] とか任意の変数にアクセスするのは無理。
後者: ファイルやスクリプト文字列を与えて実行することはできる。
http://www.google.co.jp/search?q=ruby+%E7%B5%84%E3%81%BF%E8%BE%BC%E3%81%BF
0291デフォルトの名無しさん
2005/05/28(土) 09:53:04組み込っていうんですか。ありがとうございました。
0292デフォルトの名無しさん
2005/05/28(土) 09:56:18サンクス
ちょうどlog4rのサンプル探してたのよ
0293デフォルトの名無しさん
2005/05/28(土) 10:30:03>FileUtils::rm_r
さんきう! いやー似たようなものつくろうとしたけど夜中3時間粘ってやっぱりめんどくさくなった(^^;)
すごいうれしい機能盛りだくさん。おしえてもらえて助かりました!
0294デフォルトの名無しさん
2005/05/28(土) 19:18:22private def foo
end
これは気持ち悪いでしょ
private
def foo
end
--
def foo
end
private: foo
0295デフォルトの名無しさん
2005/05/28(土) 21:15:29説明してくれないと、賛同も反対もできないよ?
0296デフォルトの名無しさん
2005/05/28(土) 23:28:310297デフォルトの名無しさん
2005/05/29(日) 01:11:48RAAからダウンロードしたものを
$ tar xvzf rdindex-1.2.2.tar.gz
$ cd rdindex
$ cp dot.rdindex ~/.rdindex
$ ruby setup.rb config
とすると
setup.rb:643 warning: parenthesize argument(s) for future version
.....
setup.rb: config done.
となり、警告がちょっと気になりつつ。。
$ ruby setup.rb setup とすると
setup.rb:643 warning: parenthesize argument(s) for future version
...
/home/zaurus/rdindex-1.2.2/bin/rdindex/rdindex:2:in `require': No Such file to load -- rdindex(LoadError)
と言われたのでダメだろうなぁと思いつつ、パスのとおっているところにrdindex-1.2.2のsetupディレクトリにあるrdindex.rbを置いて再度configからやり直すと
setupのあとに
/opt/QtPalmtop/lib/ruby/site_ruby/1.8/rdindex.rb:4: undefined superclass `InstallerHook' (TypeError)
となります。
一応、手順通りに行ったつもりですが、他になにか行うべきことは何でしょうか?
rubyのバージョンは1.8.0(2003-08-04)[arm-linux]です。
0298デフォルトの名無しさん
2005/05/29(日) 14:14:08> setup.rb:643 warning: parenthesize argument(s) for future version
これはsetup.rbが古いだけなので、新しいsetup.rbで上書きすればOK。
気にする必要はないけど。
> パスのとおっているところにsetupディレクトリにあるrdindex.rbを置いて
それはインストール時に読まれるファイルだから、コピーする必要はない。
> 一応、手順通りに行ったつもりですが、他になにか行うべきことは何でしょうか?
> rubyのバージョンは1.8.0(2003-08-04)[arm-linux]です。
bin/rdindex/rdindexでrequire 'rdindex'してる割には、lib/PATHCONVだけで
lib/rdindex.rbがないな。
パッケージングミスだと思う。
0299297
2005/05/29(日) 15:11:04レスありがとうございます。
> パッケージングミスだと思う。
rdindex1.2.2のリリースから一年近くパッケージングミスのままということは
以下のいずれかなのでしょうか…
1.rdindexを使っている方はいない
2.1.2.2より以前のものを使用中
3.rdindexに代わるメソッド名の補完、メソッドの説明をしてくれるものを使用中
昨日、Rubyの256倍魔道編を読んで便利そうだと思い、是非ともEmacsにこんな機能を
と思ったのですが、現在主流と思われるメソッドの補完、説明を行ってくれるemacs-lispが
あれば教えてください。
0300297
2005/05/30(月) 00:11:53rdindex.elでエラー出力(警告)を破棄するようにして、
bin/rdindex内でRDの開始を判断するところをいじって、なんとかEmacsから使える
ようになりました。
ただ、結構適当にいじってしまったので余分なものまでインデックスにはいっちゃってる
ような気が…
wc -l ~/ruby/rdindex.dat が
1.6のマニュアルでは2016行、1.8のマニュアルでは4391行となりました。
通常に使える方、このぐらいの量であってるでしょうか?
0301デフォルトの名無しさん
2005/05/30(月) 01:17:300302デフォルトの名無しさん
2005/05/30(月) 01:28:25http://www.ruby-lang.org/ja/man/?cmd=view;name=%A5%AF%A5%E9%A5%B9%A1%BF%A5%E1%A5%BD%A5%C3%A5%C9%A4%CE%C4%EA%B5%C1#a.a5.e1.a5.bd.a5.c3.a5.c9.a4.ce.c9.be.b2.c1
以下は同じ返値。
def foo
return "a"
end
def bar
"a"
end
0303デフォルトの名無しさん
2005/05/30(月) 02:16:480304デフォルトの名無しさん
2005/05/30(月) 08:12:40$ ruby -rNodeDump -e 'def foo;return "a";end'
NodeDump V0.9
NODE_DEFN: method 10577 (foo)
NODE_SCOPE:
NODE_BLOCK:
NODE_ARGS: count = 0
additional default values:
NODE_STR: "a"
$ ruby -rNodeDump -e 'def foo;"a";end'
NodeDump V0.9
NODE_DEFN: method 10577 (foo)
NODE_SCOPE:
NODE_BLOCK:
NODE_ARGS: count = 0
additional default values:
NODE_STR: "a"
0305デフォルトの名無しさん
2005/05/30(月) 11:59:130306デフォルトの名無しさん
2005/05/30(月) 13:32:13これだからRuby厨は
0307デフォルトの名無しさん
2005/05/30(月) 14:13:520308デフォルトの名無しさん
2005/05/30(月) 14:37:420309デフォルトの名無しさん
2005/05/30(月) 14:59:50$thread = Thread.new{
Timer.new(5){ $thread.run }
なんか処理
$thread.stop
}
とすると5秒ごとに$threadが実行されるような
0310デフォルトの名無しさん
2005/05/30(月) 15:12:58loop {
Thread.new{
なんか処理
}
sleep 5
}
ということ?
それとも、5秒ごとにスレッドをちょっと動かし、ちょっと動かし、としたいのかな?
0311デフォルトの名無しさん
2005/05/30(月) 15:57:04それだと処理に掛かった時間分5秒からズレます。
0312デフォルトの名無しさん
2005/05/30(月) 16:13:01ズレないと思うが?
0313デフォルトの名無しさん
2005/05/30(月) 17:00:39そういう厳密な話をRubyでやりたいわけもなさそうなので省略。
0314デフォルトの名無しさん
2005/05/30(月) 20:19:46310の言う通り、何が望みなのかよくわからない。
0315デフォルトの名無しさん
2005/05/30(月) 20:44:270316309
2005/05/30(月) 21:43:055〜10分(不定)掛かる処理を1時間ごと(毎時0分等)に繰り返すとかです。
loop {
$st = Time.now
なんか処理
sleep 60*60 - (Time.now - st)
}
これと同じことをもっとスマートに書けませんか?
>>309は間違えてました。すみません。
$thread = Thread.new{
Timer.new(5){ $thread.run }
loop{
なんか処理
$thread.stop
}
}
0317デフォルトの名無しさん
2005/05/30(月) 22:20:180318デフォルトの名無しさん
2005/05/30(月) 22:33:53>310以外の何を求めているのか。。
0319デフォルトの名無しさん
2005/05/30(月) 22:49:25つまりcrondもどきをrubyで書くってことになるんだろうか。
誰か作ってなかったっけ?
0320デフォルトの名無しさん
2005/05/31(火) 00:30:40の中のWallpaperStyleの値を参照したり変更したりを
win32/registryにて試みているのですが、さっぱり出来ません。
どのように書けばいいのでしょうか?
参考までにご教授ください、よろしく願いいたします。
0321デフォルトの名無しさん
2005/05/31(火) 08:10:34参照もできない?
それとも変更しても表示が変わらない?
後者なら更新を通知する必要がありそうな気がするけど。
0322デフォルトの名無しさん
2005/05/31(火) 11:02:48>>313 の指摘をふまえたうえで、 >>310 のどこが不満か説明きぼんぬ。
0323デフォルトの名無しさん
2005/05/31(火) 12:15:17まあ面白いからよしw
0324デフォルトの名無しさん
2005/05/31(火) 23:22:17嘘つくことは可能?
ネットワークの実験してるんですが
いちいちIPアドレスとMACアドレス変更するのが
面倒なんですが。
出来るのなら何かヒント教えてください。
0325デフォルトの名無しさん
2005/06/01(水) 00:45:000326デフォルトの名無しさん
2005/06/01(水) 01:39:28試行回数を記録しようとすると、「undefined method `+' for nil:NilClass」などと言って怒られます。
どうすればよいのでしょうか?
srand
val = rand(100)
callcc{|$input|}
print "値を入れてください> "
$charange += 1
n = gets.to_i
====長いので、下に続きます=========
0327デフォルトの名無しさん
2005/06/01(水) 01:39:50if n > val
puts "もうちょっと小さい値です"
$input.call
elsif n < val
puts "もうちょっと 大きい値です"
$input.call
else
printf "正解です。試行回数: %d回", $charange
end
0328デフォルトの名無しさん
2005/06/01(水) 01:41:17$charange が初期化されてないんじゃね?
0329デフォルトの名無しさん
2005/06/01(水) 01:45:540330デフォルトの名無しさん
2005/06/01(水) 06:38:240331デフォルトの名無しさん
2005/06/01(水) 15:02:27気になるがw
0332デフォルトの名無しさん
2005/06/01(水) 20:03:310333デフォルトの名無しさん
2005/06/01(水) 20:05:140334デフォルトの名無しさん
2005/06/01(水) 23:00:230335デフォルトの名無しさん
2005/06/02(木) 00:44:560336デフォルトの名無しさん
2005/06/04(土) 16:21:420337デフォルトの名無しさん
2005/06/04(土) 19:12:34C/migemo はただのCのライブラリなんで、このスレはスレ違いかと。
「Ruby の 拡張ライブラリとして C/migemo を使いたい」という話なら
doc/README_j.txt の API リファレンスを参考にどうぞ。
素直にオリジナルの Migemo を使うのが楽だと思うけど。
0338デフォルトの名無しさん
2005/06/05(日) 13:55:23ついでにひとつのクラスにどのぐらいメソッド詰め込んでる?
こんな場合はこれぐらいと教えてもらえると、より興味深い。
0339デフォルトの名無しさん
2005/06/05(日) 14:45:290340デフォルトの名無しさん
2005/06/05(日) 15:11:39print "[", i, "," if i.first?
print i, "]" if i.last?
print i, "," if i.middle?
}
結果
[1,2,3]
こんな感じの書き方は出来ないですか?
0341デフォルトの名無しさん
2005/06/05(日) 15:19:54puts "["+[1, 2, 3].join(", ")+"]"
かな。
もう少し具体的に、最初と最後だけ識別したい時は
[1...-1]で真ん中だけ取り出すか、
each_with_indexを使って i==0で判定するか、
をやると思う。
0342デフォルトの名無しさん
2005/06/05(日) 20:48:420343デフォルトの名無しさん
2005/06/06(月) 00:32:53sep = "["
[1,2,3].each do |i|
print sep, i; sep = ","
end
puts "]"
という書きかたも、あることはある。
0344デフォルトの名無しさん
2005/06/06(月) 00:44:47"[%s]" % [ [1,2,3].join(",") ]
0345デフォルトの名無しさん
2005/06/06(月) 04:53:38一個だけのときはこうしちゃうなあ。
"[%s]" % [1,2,3].join(",")
0346デフォルトの名無しさん
2005/06/06(月) 08:29:590347デフォルトの名無しさん
2005/06/06(月) 08:56:52結果の文字列を[と]で挟むのを忘れるぞ。
何のために文字列に入れたんだか。
0348デフォルトの名無しさん
2005/06/06(月) 11:17:08上記URLのサンプルを動かして、適当に書き込んでから
ブラウザで「更新」すると
最後に書き込んだメッセージがもう一度投稿されてしまいます。
これを防ぐ手段として、「#ファイルの書き込み」の一つ下の行を
> if senddata && log[0]!="#{senddata}\n"
のように書き換える方法があると思いますが
幅が利かないので、出来れば log[0] との比較はしたくありません。
そこで input["senddata"] の方を nil にしてしまいたいんですが
その方法を教えてもらえませんか?
0349デフォルトの名無しさん
2005/06/06(月) 11:47:48ここはメトリクスのないインターネッツですね
0350デフォルトの名無しさん
2005/06/06(月) 16:06:47そんなメソッドあったんだねぇ
0351デフォルトの名無しさん
2005/06/06(月) 20:43:230352デフォルトの名無しさん
2005/06/06(月) 22:18:35繰り返しの最初なのか最後なのかを判定する方法を用意してくれる言語もあるけど(Velocityとか)、Rubyはそういう方法は用意されてないので、自分で頑張るしかないです。
a = [1, 2, 3]
last = a.length - 1
a.each_with_index do |n, i|
if i == 0
print "[", n, ","
elsif i == last
print n, "]"
else
print n, ","
end
end
こじんてきには>>343がおすすめ。
>>351
[1,2,3] と表示させる方法を>>341は質問質問しているわけじゃない。それがわかっててそんな回答するのは、いけず。
0353デフォルトの名無しさん
2005/06/06(月) 23:18:27というか、何も表示されないだけど ( % についてのWarningはでる)
0354353
2005/06/06(月) 23:19:40p とか print つけてなかった orz
0355デフォルトの名無しさん
2005/06/07(火) 17:17:40> 幅が利かない
ってどういうこと?
> そこで input["senddata"] の方を nil にしてしまいたいんですが
> その方法を教えてもらえませんか?
それってブラウザが勝手にやってることなんじゃないかと思うけど。
tDiaryじゃ一度redirectさせてreloadしても再送しないようにしてるみたい。
0356デフォルトの名無しさん
2005/06/08(水) 00:35:03とりあえず動いているのですが dwOSVersionInfoSize = 148 の部分と、
最後の szCSDVersion を文字列にする部分をもっときれいに書く方法はないでしょうか。
require "dl/import"
require "dl/struct"
module Kernel32
extend DL::Importable
dlload "kernel32"
typealias("TCHAR", "unsigned short")
OSVERSIONINFO = struct [
"DWORD dwOSVersionInfoSize",
"DWORD dwMajorVersion",
"DWORD dwMinorVersion",
"DWORD dwBuildNumber",
"DWORD dwPlatformId",
"TCHAR szCSDVersion[128]",
]
extern "BOOL GetVersionEx(OSVERSIONINFO*)"
end
ver = Kernel32::OSVERSIONINFO.malloc
ver.dwOSVersionInfoSize = 148
Kernel32::getVersionEx(ver.to_ptr)
puts ver.szCSDVersion.pack("s128").unpack("a128")[0][/^[[:print:]]+/, 0]
0357348
2005/06/08(水) 12:21:37>幅が利かない
このソース、「掲示板」ってことになってますが
これを実用レベルの掲示板にするには、発言以外にも、
名前やら時刻やらを一緒にログファイルへ保存する必要が出てきますよね?
2005/06/08 12:00 山田 > よう!
↑
こんな形で。
こうなると単純に != しただけでは判定できなくなるし、
かと言って、名前(山田)と発言(よう!)で部分検索しても
2005/06/08 12:05 山本 > 『山田 > よう!』って随分軽いな!
というような、一部コピペの発言も拒否してしまうし・・・。
ってことで、あまり幅が利かなさそうだなあと思いました。
>input["senddata"]
仰るように、ブラウザの仕業みたいです。
クッキー使えばどうとでもなるんでしょうが、まったく分からないので、
二重投稿防止のためだけにもう一つ別のログファイルを用意して、
それで何とか対処することにしました。
正しいかどうかわかりませんが redirect って言うのは、
bbs.cgi→a.html→bbs.cgi みたいに一旦別のページに飛ばすって意味であってますか?
0358デフォルトの名無しさん
2005/06/08(水) 12:53:070359デフォルトの名無しさん
2005/06/08(水) 15:29:37CGI特有の質問はWebProg板へGO!
http://pc8.2ch.net/test/read.cgi/php/988948655/
【Ruby】RubyでCGI
0360デフォルトの名無しさん
2005/06/08(水) 18:57:02ちょっと調べてみたんですが書式の説明はあっても実際のクラスやメソッドにどう説明をつけて
どうドキュメントを生成すればいいのかがよく分かりません。
そのあたりの説明が載っているサイトがあったら紹介してもらえないでしょうか。
0361デフォルトの名無しさん
2005/06/08(水) 19:38:290362デフォルトの名無しさん
2005/06/08(水) 21:22:250363デフォルトの名無しさん
2005/06/08(水) 21:51:42http://www.ruby-doc.org/stdlib/libdoc/rdoc/rdoc/index.html
0364デフォルトの名無しさん
2005/06/09(木) 02:58:20次の1.と2.の手順は、重複しているような気がします。
1.MySQLでデータベースを作っているとき、
subarticle_id INTEGER REFERENCES SUBARTICLES (id),
こういう風にカラムを作成することで、subarticle_idという外部キーとsubarticlesデータベースのidを関連づけられますよね。
2.また、ActiveRecord::Baseを継承してクラスを作るとき、belongs_toや、has_manyなどを使って、改めて関連についてのメソッドを追加しますよね。
これって、重複していますよね。
これはつまり、MySQLレベルでのREFERENCES以降の文は、必要ないということになるのでしょうか??(あるいは、書いてはいけない??)
MySQLレベルでは、別に二つのtebleを関連づけなくても、ActiveRecordレベルで関連づけさえすればいいということでしょうか??
ちょっと、SQL初心者で言ってることがわかりにくいかもしれませんが、よろしくお願いします。
0366デフォルトの名無しさん
2005/06/09(木) 10:20:520367デフォルトの名無しさん
2005/06/09(木) 20:41:290368デフォルトの名無しさん
2005/06/09(木) 21:00:42MySQLって制約はただ書ける(シンタックスエラーにならない)だけで
実際には機能しないんじゃなかったっけ?
0369デフォルトの名無しさん
2005/06/11(土) 00:41:28ちょっとしたことなので、メーリングリストでいうほどでもないようなことなのですが。。
0370デフォルトの名無しさん
2005/06/11(土) 00:52:08日記とかこことかで言ったことが採用されることもないじゃないが、
大体は一度MLで議論されることになる。
0371デフォルトの名無しさん
2005/06/11(土) 02:19:55その展開したディレクトリを保存するっていうのを、Rubyから行うには
どうすればいいでしょうか??
0372デフォルトの名無しさん
2005/06/11(土) 08:08:35tarを実行するには `tar -xzvf #{filename}`
展開したディレクトリを保存するというのは、なんのことかよくわからん。
0373デフォルトの名無しさん
2005/06/11(土) 12:19:51system("tar -zxvf hoge.tgz") とか
system(%w"tar -zxvf hoge.tgz") とか
終了を待たないなら
spawn(%w"tar -zxvf hoge.tgz") とか
出力一行ごとになんかするなら
IO.foreach("|tar -zxvf hoge.tgz")とか
IO.popen(%w"tar -zxvf hoge.tgz") do |tar|
tar.each do |line|
end
end
とか、やりたいことに応じてやり方もいろいろあるわけだが。
展開した時点で保存されているものだと思う。普通は。
0374372
2005/06/11(土) 15:19:58コマンドを実行されて、その終了も待ってくれるんですね。
ありがとうございます。
0375デフォルトの名無しさん
2005/06/11(土) 21:37:08任意に変えたいんだけど、どうするのがいいのかな?
例えば、Canvasに点を打ちたい場合に、
Canvasにフォーカスされてたらマウス入力から
Entrybノフォーカスさb黷スらx,y入力からとか
詳細はしょりますが
$focus = TkVariable.new
canvas.bind('FocusIn', proc{$focus.value = 'canvas'})
entry.bind('FocusIn', proc{$focus.value = 'entry'})
button(:command=>proc{$focus.wait; create_point})
def create_point
if $focus == 'canvas'
...
else if $focus == 'entry'
...
end
end
みたいなやり方しかないのでしょうか?
Ruby/Tkというか、Ruby初心者なので、良い方法あったら教えてくださいませ
0376デフォルトの名無しさん
2005/06/11(土) 22:57:11create_point = proc{}
by_mouse = proc{...}
by_entry = proc{...}
canvas.bind('FocusIn', proc{create_point = by_mouse})
entry.bind('FocusIn', proc{create_point = by_entry})
button(:command=>proc{create_point.call})
0377デフォルトの名無しさん
2005/06/11(土) 23:17:09おお!
サブルーチンへのリファレンス(Ruby的にはなんて言うのかな)
を使うんですね
この方が美しいですね
Thx!
0378デフォルトの名無しさん
2005/06/12(日) 00:12:28>サブルーチンへのリファレンス(Ruby的にはなんて言うのかな)
Ruby的にはProcオブジェクトでつ。多分
0379デフォルトの名無しさん
2005/06/12(日) 00:55:030380375
2005/06/12(日) 01:57:00Procオブジェクトへのcallメソッド呼び出しってことで
納得デス
この3日間Rubyでアプリのプロト作ってますが
よいツールですね、マジで
型が無いのとスコープがわかりづらいのに初めはちょっと
違和感がありましたが
感動しきり
Ruby本買って真面目に取り組みマス
0381デフォルトの名無しさん
2005/06/12(日) 02:54:45Ipv4ならバインドすれば出来るんですが
#!ruby -Ks
require 'socket'
include Socket::Constants
udp = UDPsocket.open()
udp.bind("192.168.1.23",2323)
udp.send( "test", 0, '192.168.0.3', 2323 )
Ipv6だと要求したアドレスのコンテキストが無効です。
っていわれます。指定の仕方が間違ってると思うんすけど
わかりません。教えてください。OSはXPです。
#!ruby -Ks
require 'socket'
include Socket::Constants
u = UDPsocket.open(AF_INET6)
u.bind("fe80::820:5dff:4e86:fb41",2323)
u.send("test", 0, "ff3e::1", 2323)
0382デフォルトの名無しさん
2005/06/12(日) 04:03:32感動するのは最初のうちだけ
限界が見えてくると色々と不満も(ry
0383デフォルトの名無しさん
2005/06/12(日) 07:56:54startでは一瞬プロンプトが出て気持ち悪いです。
ruby.exeと同じディレクトリにrubyw.exeってのがありませんか?
rubyw.exeを使えば、コマンドプロンプトを表示することなく実行できますよ。
但し、標準入出力が必要なスクリプトには使えませんので、ご注意を。
0385381
2005/06/12(日) 09:09:57いけた。
u.bind("<Ipv6アドレス>%6",2323)
0386デフォルトの名無しさん
2005/06/12(日) 15:56:49書いたプログラムと、その出力結果をみなさんどのように確認されながら作業されていますか?
私は、いつもmiというエディタをつかって作業をしています。
www.mimikaki.net
Rubyの実行結果をショートカット1つで出力・表示できるところが、とても気に入っています。カスタマイズによってはPerlもHTMLもおなじように出力できます。
しかし、そういったことができるエディタというのは他にもあるのでしょうか?
寡聞にして知らず、お伺いをたてる次第です。
是非ご意見を。
0387デフォルトの名無しさん
2005/06/12(日) 18:05:400388デフォルトの名無しさん
2005/06/12(日) 18:47:380389デフォルトの名無しさん
2005/06/12(日) 18:54:24Mac板で聞いたら。つかマクロ組めるエディタならなんだって出来るだろ。
Winにはfreeride,sciteつうのがrubyのインストール時に勝手についてきたが。
0390デフォルトの名無しさん
2005/06/12(日) 22:26:27RPGをプレイするウインドウに表示できなくても別窓に表示して再生が終了するとムービーの窓が消えるとか。
とにかくRPGXPでムービーを再生する
0391デフォルトの名無しさん
2005/06/12(日) 22:56:41ruby-mode.el
0392デフォルトの名無しさん
2005/06/12(日) 22:58:42普通に出来ますが?
0393デフォルトの名無しさん
2005/06/13(月) 16:43:09イベント一覧にはないし、enterbrainのFAQにもそのイベント項目は2003まであったけどXPにはない
とあります
そこをRGSSで・・・・
0394デフォルトの名無しさん
2005/06/13(月) 17:02:340395デフォルトの名無しさん
2005/06/13(月) 17:07:550396デフォルトの名無しさん
2005/06/13(月) 17:17:22以下どう読むとどうなるか
BGM→繰り返し再生
ME→いったっきりで繰り返さない
SE→繰り返さない、mapのBGMはとまらない
0397デフォルトの名無しさん
2005/06/13(月) 20:18:42もう解決したんだからアレだけど、2003っていつからXPより古くなったんだ。
0398デフォルトの名無しさん
2005/06/13(月) 20:32:230399デフォルトの名無しさん
2005/06/13(月) 20:56:15↑WebProg板に、Ruby on Railsのスレたてました。
こっちもよろしく。
0400デフォルトの名無しさん
2005/06/13(月) 21:34:142000 → XP
2000 Server → Server 2003
だったと思ってたが。
ttp://www.microsoft.com/japan/windowsserver2003/howtobuy/licensing/default.mspx にも
>Windows Server 2003 の発売日に Windows XP Professional のライセンスを保有するユーザーは、
とあるけど……漏れのカンチガイ(・∀・)?
0401デフォルトの名無しさん
2005/06/13(月) 21:39:44ツクール厨のためにRGSSスレも立ててくれよ
もうこんなやりとりうんざりだ
0402デフォルトの名無しさん
2005/06/13(月) 22:30:58あってるから安心しる
0403デフォルトの名無しさん
2005/06/13(月) 23:48:25RPGツクールXP買ったけどインスコしてない俺に言わせれば、分割するまでもない。
別にレス多くないし。
0404デフォルトの名無しさん
2005/06/14(火) 00:35:14初心者スレなんだからガマンせい。ガマンしたくないなら
0405デフォルトの名無しさん
2005/06/14(火) 00:35:52こういうのは水際で防がないと駄目。
0406デフォルトの名無しさん
2005/06/14(火) 01:01:55彼らは、Rubyスクリプトレベルの質問と、ツクールAPIレベルの質問の区別がつかず、
同じ場所で聞いているからだ。
ツクールスレをゲーム製作の板にたてるべきだな。
0407デフォルトの名無しさん
2005/06/14(火) 01:05:32今のうちにちゃんとローカルルールを決めて
それを徹底させて二度とこのネタで議論しないように。
というわけで言いっぱなしで逃げずにちゃんとまとめとけ。
0408デフォルトの名無しさん
2005/06/14(火) 01:24:45お前が一番言いっぱなしな件について。
0409デフォルトの名無しさん
2005/06/14(火) 02:10:42なにを訳の分からんことを言ってるんだ?
0410デフォルトの名無しさん
2005/06/14(火) 10:00:34どうせどうわけても駄目な奴は駄目なので、ツクール厨が来て馬鹿なこと
聞くたびに思う存分叩けばいいんじゃないの?
0411デフォルトの名無しさん
2005/06/14(火) 23:53:49たしかあったはずだが。
dat落ちしたか?
0412デフォルトの名無しさん
2005/06/16(木) 15:53:29"恋するプログラム〜Rubyでつくる人工無脳"はいかが?
好みによりけりですが、序盤は入門編といった内容です。
0414デフォルトの名無しさん
2005/06/16(木) 18:47:52あの本の著者ってもう死んでるらしいね
内容もあんまし良くなかったな
0415デフォルトの名無しさん
2005/06/16(木) 20:19:17壮絶なデビューだな
0416デフォルトの名無しさん
2005/06/16(木) 20:40:150417デフォルトの名無しさん
2005/06/17(金) 00:06:03これは1.8からtime.c持ってきて、とかいうような単純な方法では無理?
0418デフォルトの名無しさん
2005/06/17(金) 01:44:050419デフォルトの名無しさん
2005/06/17(金) 02:10:26さすがに「恋する〜」は、入門書、オブジェクト指向の学習書としてはオススメしかねる。
人工無脳という目的に偏りすぎていて、カバーしている内容が偏っているし内容も薄い。
実用例、他人のソースを見てみたい人にっていうなら、まだわかるけど。
俺は「Rubyプログラミング入門」から入った。
http://www.linux.or.jp/bookreview/BR44.html
0420デフォルトの名無しさん
2005/06/17(金) 03:22:46ttp://i.loveruby.net/ja/rhg/
ttp://www.amazon.co.jp/exec/obidos/ASIN/4844317210/
0421デフォルトの名無しさん
2005/06/17(金) 14:30:49それはOSとかの話になる。
TimeはOSなどとのやりとりに使うtime_tのラッパーであって、time_tは
1970/1/1 00:00:00 GMTを基準にすることになってるので、負の値を許す環境
でないと無理。
外部の日付とかをちゃんと扱いたいならDateとかDateTimeを使うべき。
0422デフォルトの名無しさん
2005/06/17(金) 14:38:0320AB年C月は何日あるか
って調べる関数とかないのでしょうか?
0423デフォルトの名無しさん
2005/06/17(金) 14:45:090424デフォルトの名無しさん
2005/06/17(金) 14:52:59atじゃなくてnewかcivil
0425デフォルトの名無しさん
2005/06/17(金) 15:12:360426デフォルトの名無しさん
2005/06/17(金) 17:15:040427デフォルトの名無しさん
2005/06/17(金) 17:21:42ん? >>423-424 のでちゃんと 29 って出てくるよね?
0428デフォルトの名無しさん
2005/06/18(土) 01:51:46宜しくお願いいたします。
0429デフォルトの名無しさん
2005/06/18(土) 02:00:42原則4で割り切れる年はうるう年
ただし100で割り切れて400で割り切れない年はうるう年ではない
0430デフォルトの名無しさん
2005/06/18(土) 02:02:50適当なこと言うな
0431デフォルトの名無しさん
2005/06/18(土) 02:07:42(形動)
ある状態・目的・要求などにうまくあうこと。ほどよくあてはまるさま。ふさわしいさま。相当。「適当な大きさにきざむ」
0432デフォルトの名無しさん
2005/06/18(土) 02:41:43「―にはぐらかす」「―なことを言う」
0433デフォルトの名無しさん
2005/06/18(土) 03:06:02その場合、誤差はどれくらい?
0434デフォルトの名無しさん
2005/06/18(土) 07:05:06http://www.echizenya.co.jp/mini/colum/uruudosi.htm
0435デフォルトの名無しさん
2005/06/18(土) 12:08:47ローマ法王グレゴリウス13世
0436デフォルトの名無しさん
2005/06/18(土) 12:11:480437デフォルトの名無しさん
2005/06/18(土) 12:20:10false
$ ruby -rdate -e 'p Date.new(2000,1,1).leap?'
true
0438デフォルトの名無しさん
2005/06/18(土) 13:12:05( ゚,_ゝ゚)バカジャネーノ
0439デフォルトの名無しさん
2005/06/18(土) 14:44:08Ruby2.0 では Year クラスの標準サポートが望まれる。
0440デフォルトの名無しさん
2005/06/18(土) 15:06:56何すんだ?それ。
ちなみに、>>437の二つ目の月日は省略可能。
0441デフォルトの名無しさん
2005/06/18(土) 15:10:350442デフォルトの名無しさん
2005/06/18(土) 15:23:20いや、 Year::leap?(2005) としたいだけです・・・
0443デフォルトの名無しさん
2005/06/18(土) 15:42:04「センセてきとー」→「ふむ、適していて当たっていると」
「センセいいかげーん」→「良い加減だと」
と切り返されっぱなしだったのを思い出したよ>431
0444デフォルトの名無しさん
2005/06/18(土) 15:52:35$ ruby -rdate -e '[2000,2004,2005,2100,2400].each{|y|
puts "#{y} is #{Date.leap?(y) ? "" : "not "}leap year"
}'
2000 is leap year
2004 is leap year
2005 is not leap year
2100 is not leap year
2400 is leap year
0445デフォルトの名無しさん
2005/06/18(土) 21:40:150446デフォルトの名無しさん
2005/06/18(土) 22:03:160447デフォルトの名無しさん
2005/06/18(土) 22:03:310448デフォルトの名無しさん
2005/06/18(土) 22:03:530449デフォルトの名無しさん
2005/06/18(土) 22:30:440450デフォルトの名無しさん
2005/06/18(土) 22:42:470451デフォルトの名無しさん
2005/06/18(土) 22:45:540452デフォルトの名無しさん
2005/06/18(土) 22:56:190453fushianasan
2005/06/19(日) 13:49:570454デフォルトの名無しさん
2005/06/19(日) 18:43:04れを呼ぶと、`undefined method'と怒られるんですが、これってmod_rubyの制
限ですか?
普通のCGIやコマンドラインではちゃんと実行できるんですが。
0455454
2005/06/19(日) 19:01:31http://www.modruby.net/doc/faq.ja.jis.html
0456デフォルトの名無しさん
2005/06/20(月) 11:52:16あとPerlでもコマンドラインで実行できればお願いします。
Linuxのawkではできたのですが、友人のcygwinで実行できないらしくて
■入力ファイル=1.lst
NAME,TITLE,DT,DD
NAME2,TITLE2,DT2,DD2
NAME3,TITLE3,DT3,DD3
■awkコマンド
awk 'BEGIN{FS=","}{print "<dt title=\"" $2 "\"><a name=\"" $1 "\">" $3 "<\/a><\/dt><dd>" $4 "<
\/dd>"}' 1.lst > 2.lst
■出力ファイル=2.lst
<dt title="TITLE"><a name="NAME">DT</a></dt><dd>DD </dd>
<dt title="TITLE2"><a name="NAME2">DT2</a></dt><dd>DD2 </dd>
<dt title="TITLE3"><a name="NAME3">DT3</a></dt><dd>DD3 </dd>
ruby -F',' -a -p -l -e '$_ = %Q(<dt title="#{$F[1]}"><a name="#{$F[0]}">#{$F[2]}</a></dt><dd>#{$F[3]}</dd>)' 1.lst >2.lst
0458デフォルトの名無しさん
2005/06/20(月) 12:49:29すばやい回答ありがとうございました。大変勉強になりました!
0459デフォルトの名無しさん
2005/06/20(月) 17:16:066・19人権擁護法案に反対する国民集会の音声ファイル(各20-40MB)
http://www.powup.jp/jinken/20050619/1_hiranuma_furukawa.mp3
http://www.powup.jp/jinken/20050619/2_hirata.mp3
http://www.powup.jp/jinken/20050619/3_otsukotsu.mp3
http://www.powup.jp/jinken/20050619/4_chihougiinn.mp3
3番目は特におもしろい
0460デフォルトの名無しさん
2005/06/21(火) 15:11:43極めて遅レスだが、自称エレガントな例
f=true #フラグをループの外のスコープで定義
array.delete_if{ |x| f &&= !(条件) }.each do
したい処理
end
delete_unlessがあればいいのに。。。 こっちがわかりやすいよね。
f=false
array.delete_unless{ |x| f ||= (条件) }.each do
したい処理
end
0461デフォルトの名無しさん
2005/06/21(火) 15:40:09247のCのはヘンなんだが、最初に条件を満たした要素から
最後まで each で処理するんであれば、248-249 のようにやるべき。
自分なら
array[(array.index(条件)..-1].each { 処理 }
かな。
# filter、take、drop、take_if、drop_if とかいった関数的なメソッドがあればいいんだけど。
0462460
2005/06/21(火) 15:48:06それじゃ修正してこれでどうでせう?
f=nil
a.map{ |x| x if (f ||= (条件)) }.compact.each do
したい処理
end
0463デフォルトの名無しさん
2005/06/21(火) 23:36:47if 条件..true
したい処理
end
end
0464デフォルトの名無しさん
2005/06/21(火) 23:43:13trueじゃなくてfalse。
0465460
2005/06/22(水) 00:21:13array.index(条件)
の (条件) ってどう指定したらいいんでしょう?
>>464
脱帽です。勉強になりました。
0466デフォルトの名無しさん
2005/06/22(水) 01:09:03を配布しているサイトはどこでしょうか?
osはXP home です。お手数かけますがよろしくお願いいたします。
0467デフォルトの名無しさん
2005/06/22(水) 01:31:310468デフォルトの名無しさん
2005/06/22(水) 01:34:08ないだろう、1.8.3のインストーラなんて。
0469デフォルトの名無しさん
2005/06/22(水) 02:37:271,8,2でした。。。
0471デフォルトの名無しさん
2005/06/22(水) 08:47:300472ブチ初心者
2005/06/22(水) 09:31:210473デフォルトの名無しさん
2005/06/22(水) 13:48:25どういう文脈で出てきたの?
0474デフォルトの名無しさん
2005/06/23(木) 00:32:50ってできないんですね。newメソッドがないとサブクラス
作れないんですけど、こうなっているのは
Fixnum(というかNumeric)のサブクラスを作る必要性
がないからってことなんでしょうか?
0475デフォルトの名無しさん
2005/06/23(木) 01:03:10サブクラスは作れないが、Numericのサブクラスは作れる。
lib/{complex,matrix,rational}.rbあたりが実例。
0476デフォルトの名無しさん
2005/06/23(木) 01:26:21awkみたいな処理ってこうやって出来るんだ・・・
知らんかった。awkのスクリプト書き直して勉強してみるか・・・
オプションを使えばループや表示を省略できるので、
ワンライナーには便利ですね。
もっとも、凝り始めると目的を忘れて熱中しちゃいますが...。
0478デフォルトの名無しさん
2005/06/23(木) 16:37:26なんとなくわかったよ。さんくす。
それとこっちの記事が参考になった。
http://www.notwork.org/~gotoken/mag/cmagazine/gokudo/3rd/
0479デフォルトの名無しさん
2005/06/23(木) 20:13:12スクリプトが作動するカレントディレクトリより下位のフォルダ
の外部コマンドをディレクトリを移動せずにオプション付きで実行し、
パイプを生成したいのですが、どう書けばよいですか?
スクリプトが動作するフォルダはfoo、外部コマンドはfoo\bar\baz\bin.exe
読み込みファイルはfoo\bar\baz\abc.conf
path = "foo\\bar\\baz\\"
out_p = IO.popen("#{path}bin.exe -option #{path}abc.conf", 'r+')
こんな感じでやってみたんですが、実行できませんでした。
0480デフォルトの名無しさん
2005/06/24(金) 00:11:400481デフォルトの名無しさん
2005/06/24(金) 16:04:21どの文字がどの数字に対応しているか知りたいです。
コマンドラインで簡単にわかる方法ありませんか?
0482デフォルトの名無しさん
2005/06/24(金) 16:36:42man ascii とか?
0483デフォルトの名無しさん
2005/06/24(金) 16:50:190484デフォルトの名無しさん
2005/06/24(金) 16:52:48普通に計算すると
1 - 5 = -4
ってなっちゃうけど
1 - 5 = 251
みたいに計算したい
0485デフォルトの名無しさん
2005/06/24(金) 17:23:041 - 5 = 252 じゃないの? (1 - 5) % 256 で。
0486デフォルトの名無しさん
2005/06/24(金) 18:34:230487デフォルトの名無しさん
2005/06/24(金) 18:36:000489479
2005/06/24(金) 22:49:28スクリプトは下記の方法でバッチファイルにしています
http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=Win32%B4%C4%B6%AD%A4%C7ruby%A4%F2%C6%B0%A4%AB%A4%B9
実行時のエラーはこんな感じです
sample.bat:23:in `popen': No such file or directory - \foo\bar\baz\bin.exe -option \foo\bar\baz\abc.conf (Errno::ENOENT) from sample.bat:23
0490デフォルトの名無しさん
2005/06/24(金) 23:01:410491デフォルトの名無しさん
2005/06/24(金) 23:04:010492490
2005/06/24(金) 23:20:15waitで探していた…orz
0493デフォルトの名無しさん
2005/06/24(金) 23:44:02そのエラーメッセージには、479のコードにはない先頭の\があるように見えるのは気のせいか?
写し間違い?
でないなら、パスが通ってないとか、コマンド名を指定した文字列のミスとかじゃないの。
0495デフォルトの名無しさん
2005/06/25(土) 00:22:41それ全然相対パスじゃないし・・・
ドライブレターがないという意味では相対なのかもしれないが
0496デフォルトの名無しさん
2005/06/25(土) 01:08:13irbsh[00:56](main):029:0> p RUBY_PLATFORM
"i386-mingw32"
irbsh[00:56](main):030:0> p RUBY_VERSION
"1.8.3"
irbsh[00:56](main):027:0> IO.popen("\\windows\\system32\\route"){|io|puts io.read}
Manipulates network routing tables.
ROUTE [-f] [-p] [command [destination]
……以下略。……
irbsh[00:58](main):034:0> IO.popen("\\dummypath\\command -opt \\foo\\bar"){|io|puts io.read}
Errno::ENOENT: No such file or directory - \dummypath\command -opt \foo\bar
from (irbsh):34:in `popen'
from (irbsh):34
from :0
irbsh[01:02](main):038:0> IO.popen("c:/windows/system32/route print"){|io|puts io.read}
===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
ということで、コマンドが見つからないせいではないか。
ちゅかバッチファイルにするのはとりあえずやめて、問題を切り分けようよ。
popenしてdirだけするテストとかさ。
そもそも`\foo\bar\baz\bin.exe -option \foo\bar\baz\abc.conf'は動くの?
0497479
2005/06/25(土) 12:21:17path = "\\bar\\baz\\"
out_p = IO.popen("#{path}bin.exe -option #{path}abc.conf", 'r+')
こうでした
0498デフォルトの名無しさん
2005/06/25(土) 16:50:520499デフォルトの名無しさん
2005/06/25(土) 18:22:53環境 ActiveScriptRuby
スクリプトが作動するカレントディレクトリより下位のフォルダ
の外部コマンドを、ディレクトリを移動せずにオプション付きで実行し、
パイプを生成したいのですが、どう書けばよいですか?
スクリプトが動作するフォルダはfoo、外部コマンドはfoo\bar\baz\bin.exe
読み込みファイルはfoo\bar\baz\abc.conf
sample1.rb
---------------------------------------------------------------
path = "bar\\baz\\"
out_p = IO.popen("#{path}bin.exe -option #{path}abc.conf", 'r+')
----------------------------------------------------------------
ruby sample1.rb
sample1.rb:7:in `popen': No such file or directory - bar\baz\bin.exe -option
bar\baz\abc.conf (Errno::ENOENT) from sample1.rb:7
写し間違いがおおくてすいません(これで完璧なはずorz)
0500デフォルトの名無しさん
2005/06/25(土) 18:33:03path = "bar\\baz\\"
p Dir.pwd
p Dir.glob("#{path}bin.exe")
0501デフォルトの名無しさん
2005/06/25(土) 18:39:02さては、スクリプトをカレントディレクトリ以外に置いて実行してるな?
で、path はスクリプトからの相対ディレクトリなんだろう?
だとしたら、これでどうだ?
path = File.expand_path("bar/baz", File.dirname(__FILE__))
out_p = IO.popen("#{path}/bin.exe -option #{path}/abc.conf", 'r+')
0502499
2005/06/25(土) 21:07:44ruby sample1.rb
"C:/Documents and Settings/ユーザー名/foo"
[]
です
>>501
この方法で動作しているようです。読み込みファイルが読み込みできない
ようですが、パスにスペースが入っているからだと思います。
0503デフォルトの名無しさん
2005/06/25(土) 21:49:18スペースか。そりゃ君が悪いよ。
path = "bar\\baz\\"
out_p = IO.popen(%Q("#{path}bin.exe" -option "#{path}abc.conf"), 'r+')
0504デフォルトの名無しさん
2005/06/26(日) 01:27:260505デフォルトの名無しさん
2005/06/26(日) 02:09:030506デフォルトの名無しさん
2005/06/27(月) 16:52:12あるんでしょうか。
ないとしたら、正規表現で<....>みたいなのを除去するってことで、ひとまず
セキュリティ的にOKなんでしょうか。
初心者で申し訳ないのですが、アドバイスをお願いします。
0507デフォルトの名無しさん
2005/06/27(月) 21:13:070508デフォルトの名無しさん
2005/06/27(月) 22:42:26好きにしてくれ。
strip_tagsに相当する機能が標準添付のライブラリには無いような。
htmlsplitというライブラリがRAAにありますが、これは該当しないかな?
"<〜>"を単純に除去する程度で良ければ、
String#gsubなどで実装してしまっても良いのではないでしょうか。
あとはCGI::escapeHTMLで記号類を変換しちゃうとか。
0510デフォルトの名無しさん
2005/06/27(月) 23:58:54一部を除いて演算子もメソッドであることはわかった。
が、Arrayクラスのhoge[10]とかの
"["と "]"はメソッドなのかがわからない。
メソッドならオーバロードできると思うけど、、
もしかして、Arrayの[]記法は非メソッドですか?
Hushも同様にわからない。
0511デフォルトの名無しさん
2005/06/28(火) 00:04:36リファレンスマニュアルに書いてあるけど
Array#[]もHash#[]もメソッドでつ。
以下、しょーもないサンプル
class Hoge
def [](val)
"#{val} from Hoge"
end
end
hoge = Hoge.new
puts hoge['aaa']
0512デフォルトの名無しさん
2005/06/28(火) 00:30:580513510
2005/06/28(火) 00:43:35thxxxx!
たしかにリファレンスにメソッドであると明記してありますね。
ただ、オーバロードの仕方が書いてないし、
メソッド定義の記法が独特ですね。覚えにくいし想像しにくい。。
記号で始まるメソッド( + とか - とか ) のメソッド呼び出しは
. を省略できるというルールがあるから、
def +(val)
っていうメソッド定義は納得かつ覚えやすかったけど。。
配列だから[]でアクセスできるのは当然だと思うし、
オーバロードもできちゃうし(あんまり使わないかもしれないけど)、
仕様的には申し分ないです。ってか、rubyおもしろいな。
>512 演算子メソッドって何だよん。。
0514デフォルトの名無しさん
2005/06/28(火) 01:43:57(とゆーか漏れはそう納得した)んだが
Rubyの演算子メソッドってどこに起源があるんだろう? C++と共通のスーパー言語(って何だw)かな?
0515デフォルトの名無しさん
2005/06/28(火) 12:31:301 + 2 * 3 が 9 になっちゃう (優先順位とか無い) よね。
0516デフォルトの名無しさん
2005/06/28(火) 23:14:53def +@
みたいに書く。
0517デフォルトの名無しさん
2005/06/30(木) 02:01:55irb(main):001:0> a=b="a"
=> "a"
irb(main):002:0> b << "b"
=> "ab"
irb(main):003:0> p a
"ab"
=> nil
こういうのってリファレンスマニュアルのどこに説明があるの?
0518デフォルトの名無しさん
2005/06/30(木) 03:06:24a=b="a" みたいに、連続した表記はちょっと見たかんじでは見当たらないが、
特別に説明するものでも無い気がするし……
<< は、String のところにベタに載ってるし、p は組み込み関数の所に載ってる。
ttp://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%C1%C8%A4%DF%B9%FE%A4%DF%B4%D8%BF%F4;em=p%28%29
というか、初心者なら適当な本を買った方が良いよ。
学習には、リファレンスマニュアルと学習本では、やっぱり学習に分がある。
0519デフォルトの名無しさん
2005/06/30(木) 03:23:250520デフォルトの名無しさん
2005/06/30(木) 05:12:23$ irb
irb(main):001:0> a=b="a"
=> "a"
irb(main):002:0> b = "b"
=> "b"
irb(main):003:0> p a
"a"
=> nil
との違い。a=b="a"かa << "b"かどちらが作用してるのかがわからなかったから
0521デフォルトの名無しさん
2005/06/30(木) 05:13:00>>518
0522デフォルトの名無しさん
2005/06/30(木) 06:56:040523デフォルトの名無しさん
2005/06/30(木) 08:59:44リファレンスマニュアルをよく読めと言いたいところだが、確かにズバリ明記
されているわけではないな。 Ruby の本を読むと大概説明してあるんだが……。
b << "b" は b が参照するオブジェクトを破壊的に変更する。 a = b だから
a と b は参照先のオブジェクトが同じ。ゆえに a も変更される。
b += "b" にしてみたり、 object_id メソッドを使って調べてみたりするといい。
0524デフォルトの名無しさん
2005/06/30(木) 09:59:27その話を進めると例の「変数とは○○だ」「変数とは○○のようなもの」の話で香ばしくなるのでそれ以上はやめとけ。
というか既に全く同じ話がruby-listにある。スレッドの大本はARGVのfrozenの話だけど。
ttp://www.ruby-talk.org/cgi-bin/scat.rb/ruby/ruby-list/38183
正確にはこっから下。
ttp://www.ruby-talk.org/cgi-bin/scat.rb/ruby/ruby-list/38187
0525デフォルトの名無しさん
2005/06/30(木) 17:18:11リファレンスのnet/httpの項見てもそれらしい記述無いし…
open-uriで出来るみたいだけどこれだと何故か途中で転送が切れる…orz
require 'open-uri'
arc = ''; open('http://hoge.net/foo.dat', 'rb', "Referer" => 'http://hoge.net/'){|f|arc = f.read}
p arc.size
# => 2363
foo.datのサイズは6MByteくらいあるんだが…
0526デフォルトの名無しさん
2005/06/30(木) 17:45:10手元ではそのopen-uriのでできたよ。
サイズも合ってたしApacheにログも残った。
0527525
2005/06/30(木) 18:45:36require 'open-uri'
require 'net/http'
Net::HTTP.start('pc.watch.impress.co.jp', 80) {|http|
p http.get('/docs/2005/0630/pana.jpg').body.size
}
arc = ''; open('http://pc.watch.impress.co.jp/docs/2005/0630/pana.jpg', 'rb'){|f|arc = f.read}
p arc.size
# => 32782
53
どうなっているんだ…il||li ○| ̄|_
0529525
2005/06/30(木) 19:08:18ruby 1.8.1 (2003-12-25) [i386-mswin32]
使っていたのが原因ですた
ruby 1.8.2 (2004-12-25) [i386-mingw32]
にしたら正常に動くようになりますた…orz
0530526
2005/06/30(木) 19:14:29リファレンスにあるようにヘッダーはハッシュで渡せる。
http.get(path,{'REFERER'=>'http://localhost/'})
0531デフォルトの名無しさん
2005/06/30(木) 21:23:00で使われているget_responseって何ですか?
Net::HTTPのメソッドのようだけど検索しても出てこなくて詳細不明…
0532デフォルトの名無しさん
2005/07/01(金) 07:46:02URLをGETしてレスポンスにして返してくれるクラスメソッド
0533デフォルトの名無しさん
2005/07/01(金) 10:04:46/hoge\x00/
とか書いても引っ掛からない
後述の環境で試してみたら下記のような結果になりました。
こういうことではないのかな?
irb(main):002:0> /hoge\x00/ =~ "This is hoge\x00 for test"
=> 8
ruby 1.8.2 (2005-04-11) [i386-linux]
irb 0.9(02/07/03)
0535533
2005/07/01(金) 13:24:48やってみたら確かに引っ掛かる…何か寝ぼけていたのか…orz
トンクス
0536デフォルトの名無しさん
2005/07/01(金) 22:53:00とかいうオチはあるっけ?
0537デフォルトの名無しさん
2005/07/02(土) 10:58:53あとはVMSくらいだが、これはとんでもなく違うんで、その程度の違いじゃ驚かんな。
0538デフォルトの名無しさん
2005/07/02(土) 13:33:00ここの問題を練習がてらやっていたのですが、下コードしか思い浮かびません。
もっとスマートなやり方を教えて頂けませんか?
s = Array(10..99)
t = Array(100..999)
print("1st: ", rand(10), ", 2nd: ", s[rand(s.size)], ", 3rd: ", t[rand(t.size)])
低レベルな質問で申し訳ないです…
0539デフォルトの名無しさん
2005/07/02(土) 14:01:39ベタにはこうか。
print("1st: ", rand(10), ", 2nd: ", 10+rand(90), ", 3rd: ", 100+rand(900), "\n")
あと、個人的にだけど、配列の初期化は(10..99).to_aのほうが直感的な気がする。
0540デフォルトの名無しさん
2005/07/02(土) 14:19:31method(%q|hoge#fuga|)とかで対応する括弧の移動とか、
M-;のcomment-dwimがうまく働かないっす。
%q||でなく//でも同じ。
0541デフォルトの名無しさん
2005/07/02(土) 14:29:55なんでこれが思い浮かばなかったんだろうか…
ありがとうございました!
0542デフォルトの名無しさん
2005/07/02(土) 20:58:35それで、Digest::MD5 クラスを使おうとしているのですが、
require 'digest/md5' とすると、
/usr/lib/ruby/1.8/i386-cygwin/digest/md5.so: dlopen,
Win32 error 126 - /usr/lib/ruby/1.8/i386-cygwin/digest/md5.so (LoadError)
from zzz.rb:2
というエラーが出てしまいます。一方、require 'digest/sha2'だとエラーは出ません。
これは自分の環境だけなのでしょうか…。
0543デフォルトの名無しさん
2005/07/03(日) 02:24:080544デフォルトの名無しさん
2005/07/03(日) 02:31:270545デフォルトの名無しさん
2005/07/03(日) 09:21:570546デフォルトの名無しさん
2005/07/03(日) 12:52:39はい、あります。どうやら実体は
(cygwinインストールディレクトリ)\lib\ruby\1.8\i386-cygwin\digest
にあるようなのですが(なぜ usr がパスに入っていないのかは謎です。
ls では /usr/lib/ruby/1.8/i386-cygwin/digest でリストできるので
そこであることは間違いないと思います)、そこにある md5.so を消すと、
zzz.rb:1:in `require': No such file to load -- digest/md5 (LoadError)
というものにエラーメッセージが変化します。ですから、ファイルが
ないという問題ではないようです。
ls -l でリストしてみても、
-rwxr-x---+ 1 xxxxx Users 6656 Jan 19 06:21 md5.so*
-rwxr-x---+ 1 xxxxx Users 15360 Jan 19 06:21 sha2.so*
とアクセス権は同じなので、その問題でもないようなのですが…。
cygwin が何かおかしいんでしょうかね…。何回か再インストール
してみたんですけど…もう一回やり直してみようかな…
0547546
2005/07/03(日) 12:57:28>にあるようなのですが(なぜ usr がパスに入っていないのかは謎です。
mount -f -s -b "(cygwinインストールディレクトリ)/lib" "/usr/lib"
でマウントされていました。
0548デフォルトの名無しさん
2005/07/03(日) 22:16:37> Win32 error 126 - /usr/lib/ruby/1.8/i386-cygwin/digest/md5.so (LoadError)
126はERROR_MOD_NOT_FOUNDだな。そのmd5.soが必要としてるdllが見付からないんでは?
objdump -p /usr/lib/ruby/1.8/i386-cygwin/digest/md5.so | grep 'DLL Name'
を試してみ。
0549546
2005/07/04(月) 01:00:19レスありがとうございます。
コマンドを実行してみたところ、
DLL Name: cygruby18.dll
DLL Name: cygcrypto-0.9.7.dll
DLL Name: cygwin1.dll
DLL Name: KERNEL32.dll
DLL Name: cygruby18.dll
と出ました。どうやら /bin ディレクトリが dll 検索パスに入っ
ていなかったのが原因のようです。…で、いったん Windows の環境変数 PATH に
値をセットしてエラーが出なくなるのを確認して、cygwin のサイトを見たら、
なんかデフォルトで PATH がそこに設定されるみたいなことが書いてあったので
Windows の設定から PATH の設定をなくして再度挑戦したら動きました…。
なぜ何も設定しなくても動くようになったのかはわかりません。
もしかしてcygwin インストール後に Windows 再起動が必要だった
りするのかも…(再度挑戦するまでの間に別の件でWindowsの
再起動をしています。ちなみにOSはXPです)。
直接的な原因はわからずじまいなのですが、動くようになって助かりました。
ありがとうございました。
0550546
2005/07/04(月) 23:47:49/usr/lib/ruby/1.8/i386-cygwin/digest/md5.so: No such file or directory - /usr/li
b/ruby/1.8/i386-cygwin/digest/md5.so (LoadError)
from zzz.rb:2
というエラーになりました。調べてみると、
cygcrypto-0.9.7.dll(とKERNEL32.dll)がありませんでした。
前回と今回でなぜエラーメッセージが変わったのか、前回にはな
ぜ cygcrypto-0.9.7.dll があったのか、それは謎ですが…、いろ
いろで調べていたところ、ruby とは別に openssl のインストール
が必要なことを知りました。そしてそれを入れてみたところ、見事
に動くようになりました。
お騒がせしてすみませんでした。ありがとうございました。
0551デフォルトの名無しさん
2005/07/05(火) 13:06:58少なくとも今のEmacs添付のライブラリを使うかぎり、
そこまで対応するのは無理と思われ。
埋め込み式じゃない#は、quote以外ではエスケープすることを勧める。
0552デフォルトの名無しさん
2005/07/06(水) 04:14:23wINDOWSではなにかあったらとりあえず再起動がデフォです(W
0553デフォルトの名無しさん
2005/07/06(水) 04:17:58"This is a pen", "This is the pen"なら"This is "を返すようなの。
0554デフォルトの名無しさん
2005/07/06(水) 07:12:17str1 = "This is a pen"
str2 = "This is the pen"
i = 0
i += 1 while str1[i] && str1[i] == str2[i]
p str1[0,i] #=> "This is "
0555デフォルトの名無しさん
2005/07/06(水) 11:43:51http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=2%A4%C4%A4%CE%CA%B8%BB%FA%CE%F3%A4%CE%C0%E8%C6%AC%A4%AB%A4%E9%C5%F9%A4%B7%A4%A4%CA%B8%BB%FA%CE%F3%A4%F2%C8%B4%A4%AD%BD%D0%A4%B9;em=2%A4%C4%A4%CE%CA%B8%BB%FA%CE%F3
を参考にするとよろし。
0556デフォルトの名無しさん
2005/07/06(水) 12:02:110557デフォルトの名無しさん
2005/07/07(木) 01:15:26rubyじゃ、頑張りすぎないことが大事なんだよ。
0558デフォルトの名無しさん
2005/07/07(木) 01:20:040559デフォルトの名無しさん
2005/07/07(木) 01:46:141.1 ベタなループを避けるために不自然なコードを書く奴は完全な敗北者
(例外) ネタとして楽しむのが目的な場合はこの限りでない
0560デフォルトの名無しさん
2005/07/07(木) 01:51:59今時のマシンじゃC/C++の場合ちょっとやそっと非効率な
コード書いても体感できることも少なくなってきている品
0561デフォルトの名無しさん
2005/07/07(木) 02:52:10そのカリカリにチューンした例、見せてよ。是非!!
0562デフォルトの名無しさん
2005/07/07(木) 16:05:08IO.pipeだとでかい文字列突っ込むとハングる(?)様だし…
ファイルからの読み込みとメモリ上のデータの読み込みのI/Fを一本化したいです
FileオブジェクトをStringオブジェクトに見立てるでも問題ないです
新規にクラスを定義すれば出来るけどもっと簡単な方法がないかなと…
0563デフォルトの名無しさん
2005/07/07(木) 16:27:38StringIOは?
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=StringIO
0565デフォルトの名無しさん
2005/07/07(木) 17:10:010566デフォルトの名無しさん
2005/07/07(木) 17:33:250567デフォルトの名無しさん
2005/07/07(木) 18:35:10避けたい理由を書かないと叩かれて終わりなわけだが。
あとStringIOは標準添付の拡張ライブラリなので普通は使えるはず。
0568デフォルトの名無しさん
2005/07/07(木) 20:57:070569デフォルトの名無しさん
2005/07/07(木) 22:36:020570デフォルトの名無しさん
2005/07/07(木) 22:53:230571デフォルトの名無しさん
2005/07/08(金) 15:45:45最初から付いてくるライブラリ。require して使えるもの全部。require しなくても使えるのは組み込み。
0572デフォルトの名無しさん
2005/07/08(金) 16:27:250573デフォルトの名無しさん
2005/07/08(金) 17:44:460574デフォルトの名無しさん
2005/07/08(金) 18:22:59matz にきいてくれ。
ttp://www.rubyist.net/~matz/20030602.html
0575デフォルトの名無しさん
2005/07/08(金) 23:41:060576デフォルトの名無しさん
2005/07/09(土) 00:16:22> >>570
> 最初から付いてくるライブラリ。
今は「標準添付ライブラリ」と呼ぶのが主流じゃないかな。
0577デフォルトの名無しさん
2005/07/09(土) 00:33:490578デフォルトの名無しさん
2005/07/09(土) 01:26:15物凄い富豪的な解決法なので実際の運用状況と応相談だが、Fileオブジェクトを read しちゃって String にするという荒技はあるかもしらん。
0579デフォルトの名無しさん
2005/07/09(土) 01:56:000580デフォルトの名無しさん
2005/07/09(土) 13:35:54> 物凄い富豪的な解決法なので実際の運用状況と応相談だが、Fileオブジェクトを read しちゃって String にするという荒技はあるかもしらん。
逆だろ、したいことは。
> IO.pipeだとでかい文字列突っ込むとハングる(?)様だし…
>>562はdeadlockという言葉について小一時間調べてこい。
0581デフォルトの名無しさん
2005/07/09(土) 17:44:57a = 'ああああ12いいいいい345ううう12ええええ3おお'
という全角文字列から全角数字が2つ以上現れる箇所のスタート位置を示す
配列を得たいのです。
このケースでは、[4,11,17] です。文字コードはSJISです。
a.scan(/[0-9]{2,}/)までは判ったのですが、あとが続きません。
教えてください。
こんなのはいかがですか?結果はバイト単位になりますけど。
a = 'ああああ12いいいいい345ううう12ええええ3おお'
positions = Array.new
a.scan( /[0-9]{2,}/ ) { positions << Regexp.last_match.begin( 0 ) }
p positions # => [8, 22, 34]
0583581
2005/07/09(土) 19:21:36last_matchですか。勉強になります。
begin(0)はカッコがなくても、マッチの先頭のオフセットを返すんですね。
スタート位置付きのindexを使ってaから直接取ってくるのもあるかと
思ったんですが、なるほどですね。
(2)もひとつ教えてほしいのですが、
a.scan(/./s) do |item|
string_array.push item
end
みたいにして全角文字を含む配列を使おうとしています。
これに対応して、stringクラスで、全角文字を1と数えるような
indexはあるんでしょうか。byte単位で判定するから、そもそも無理ですか。
なにせ日本生まれのrubyですから、ひょっとしてそういうサービスもあるかと
思いまして。
0584デフォルトの名無しさん
2005/07/09(土) 21:51:23どこか日本語で、RubyGemsについて解説してくれているサイトとかないだろうか?
>>583
具体的に何がやりたいのかがよく分からないので、何とも言えないが
とりあえずリファレンスでjcode.rb(添付ライブラリ)を調べてみると幸せになれるかも
0585581
2005/07/09(土) 23:35:31(日本語のtrなんかは使ったことありました。)
a.jindex('あ') と言う感じなものはなかったようです。
0586デフォルトの名無しさん
2005/07/09(土) 23:59:18jcode.rbを使うならこんな感じ?
a[ 0, a.index( 'あいう' ) ].jsize
jcode.rbを使わない方法も即席で考えてみました。
a[ 0, a.index( 'あいう' ) ].scan( /./s ).size
0590デフォルトの名無しさん
2005/07/10(日) 18:16:48ようやインストール方法を知りたいということ?
それともgemの中身の説明とかがほしい?
具体的に何を知りたいのか書いてもらえますか。
0592581
2005/07/10(日) 20:45:49不明な点がありましたら、また質問させてもらいます。
その節はよろしくお願いします。
gemって自動取り込み装置ですか?
わたしはwindows上でrubyを利用してますが、時々install.rbがうまくいかな
いことがあり、何でも自動でするのも良し悪しだなあと思うことがあります。
何をしているか要点だけ書いたメモが付いていて、代替的な方法があれば、
手でやっても良いなあ、と思うことがあります。
gem とかRailsとかが流行っているみたいですけど、自分の感覚を超えた自動
化って何か落ち着かない感じがあるんじゃないかと思います。出来上がりは
確かに時間はかからないようですけど、その仕掛けを納得するのが難しく、時
間がかかりそうに思います。
すみません、初心者の分際で。
0593デフォルトの名無しさん
2005/07/11(月) 02:02:22どうすればよいでしょうか?
ググッてみたのですが、分かりませんでした。
0594デフォルトの名無しさん
2005/07/11(月) 07:43:50じゃ、ヤフってみたらどうでしょうか?
0595デフォルトの名無しさん
2005/07/11(月) 09:04:02http://raa.ruby-lang.org/
RAAも関連リンクに入れといてくれ。>次スレ立てるやつ
0596デフォルトの名無しさん
2005/07/11(月) 16:21:53loadで実験しているんだけどエラーになる
test.rb
p $:
load "nkf.so"
#普通のライブラリがロードできないと話にならないのでnkf.soで実験
#=>
[〜, "."]
test.rb:2:in `load': ./nkf.so:1: Invalid char `\220' in expression (SyntaxError)
from test.rb:2
>dir
〜
2005/07/03 19:18 729,088 msvcrt-ruby18.dll
2005/07/03 19:19 119,808 nkf.so
2005/07/03 19:20 395,154 ruby.exe
〜
>ruby -v
ruby 1.8.2 (2004-12-25) [i386-mingw32]
何で…?
0597デフォルトの名無しさん
2005/07/11(月) 17:41:58至極もっともな意見だと思う
しかしそれでも、雑多なライブラリをインストールする場合、その手間を省きたい場合はあるわけで。
「代替的な方法」を提示した上で、rubygemsやinstall.rbみたいな自動化にも対応してくれるのがベストかな
>>596
ほんとだ、require "nkf.so"なら正常に出来るのに……
0598デフォルトの名無しさん
2005/07/11(月) 17:44:27そのエラーは、拡張ライブラリを無理矢理 ruby スクリプトと解釈しようとしてエラーになっているんだろう。
普通に require 'nkf.so' ってやればできるはずだけど?
0599597
2005/07/11(月) 18:02:22596ではないが、疑問が氷解した。ありがとう
あと、今気づいたんだが>>596でrequireではダメっぽいって言ってるのは
もしかして拡張子を指定していないからでは?
requireで補完してくれる拡張子は、.rb/.dll/.soだけだったはず
0600596
2005/07/11(月) 19:04:54そうなのか…
ということは拡張子が.rb/.dll/.so以外の物を読み込むことは不可能か…?
>copy /y nkf.so nkf.foo
>ruby
require "nkf.foo"
^Z
-:1:in `require': No such file to load -- nkf.foo (LoadError)
from -:1
0601デフォルトの名無しさん
2005/07/11(月) 19:11:100602デフォルトの名無しさん
2005/07/11(月) 21:13:320603593
2005/07/11(月) 22:30:37ありがとうございます。これから試してみます。
0604デフォルトの名無しさん
2005/07/11(月) 23:41:08何がしたいんだ?
> ということは拡張子が.rb/.dll/.so以外の物を読み込むことは不可能か…?
単にできるかどうか知りたいということだけなら、不可能でFA。
他にやりたいことがあって袋小路に入ってるんなら、本来の目的を書けばもう
ちょっと別の答えがあるかもしれない。
0605596
2005/07/12(火) 05:06:50mingw/mswinのRubyの拡張の実体はDLLということなのでRubyのライブラリ以外の機能も一緒に実装したい
が、ライブラリ以外の機能を利用するアプリが特定の拡張子(.rb/.dll/soどれもNG)じゃないと認識してくれない
それぞれを分ければいい話なのだがファイルの数を出来るだけ増やしたくなかったので一緒に出来ないかと考えた
う〜ん…無理ならあきらめるべきか…どうしても必修な機能ってわけでもないしなぁ…
0606デフォルトの名無しさん
2005/07/12(火) 09:17:370607デフォルトの名無しさん
2005/07/13(水) 01:07:24> が、ライブラリ以外の機能を利用するアプリが特定の拡張子(.rb/.dll/soどれもNG)じゃないと認識してくれない
rubyとそのアプリとどっちがメインになるわけ?
ruby本体まるごとプラグインにするということはできないではない。
Beckrb: http://www.tietew.net/becky/beckrb/
0608デフォルトの名無しさん
2005/07/13(水) 01:11:53本スレに移動したほうがよくはないか?
どうせ答えるやつは同じなんだし。
0609596
2005/07/13(水) 02:03:58まさにそのような感じのことをやっています
それで、Rubyスクリプトのデバッグ用の関数、クラスもプラグインに統合できないかなと
どうしても必要なわけではないので簡単に行かないようならあきらめます
0610デフォルトの名無しさん
2005/07/13(水) 02:38:34> まさにそのような感じのことをやっています
> それで、Rubyスクリプトのデバッグ用の関数、クラスもプラグインに統合できないかなと
だとしたら>>607のような構成にしない限り↓は不可能だと思うんだが。
> どうしても必要なわけではないので簡単に行かないようならあきらめます
なんか考えてることがずれてる?
0611デフォルトの名無しさん
2005/07/13(水) 22:13:41gemを作成する手順は以下のページに説明がある。
RubyGems User Guide | RubyGems Manuals
http://docs.rubygems.org/read/chapter/5
* gemspecファイル(foo.gemspec)を作る。
* gem build foo.gemspecを実行する。
gemspecファイルの内容については以下のページに説明がある。
RubyGems GemSpec Reference | RubyGems Manuals
http://docs.rubygems.org/read/chapter/20
RakeやRailsなど、rubygemsでインストールできるパッケージに含まれる
Rakefileなどを読んだりすれば、何とかなりそうな気がする。
と、自分で試してもいないのに書いてみるテスト。
0613デフォルトの名無しさん
2005/07/16(土) 01:46:110614デフォルトの名無しさん
2005/07/16(土) 04:04:250615デフォルトの名無しさん
2005/07/16(土) 04:44:590616デフォルトの名無しさん
2005/07/16(土) 05:14:21文字列の代わりに使えるならどんどん使っていくべきだと思われる
(参考:ttp://i.loveruby.net/w/OptimizingRubyProgram.html)
俺はいつもハッシュのキーとして使ってるよ↓
DIR_PATHS[:data]
DIR_PATHS[:log]
0617デフォルトの名無しさん
2005/07/16(土) 10:33:240618617
2005/07/16(土) 10:42:120619デフォルトの名無しさん
2005/07/16(土) 20:19:01e = REXML::Element.new( "new_element" )
e.text = "<<"
とすると
e.to_s # => "<<"
となってしまうのはバグですか。それとも仕様ですか。
& は自動的にエスケープしてくれるもんだと思っていましたが。
0620デフォルトの名無しさん
2005/07/16(土) 20:20:51e.text = "<<"
とすると
e.to_s # => "<new_element><<<new_element>"
の間違いです。すみません
0621デフォルトの名無しさん
2005/07/16(土) 21:38:570622デフォルトの名無しさん
2005/07/16(土) 21:46:49new メソッドの引数 raw であいまいさを回避することはできました。
それでも 620 で書いた現象は腑に落ちませんが…。
どうもありがとうございました。
0623デフォルトの名無しさん
2005/07/20(水) 14:32:440624でふぉるとぺーぺー
2005/07/20(水) 22:59:05だから配列を使って、以下のようにやってみました。"."で区切るってことをやりたいのですが、
Str = ("123.456.789")#IPと思って
array = Str(/"."/)
でarrayの[2]の中身を抽出したいんですけど(789の部分)、この書き方間違ってます?
789って文字を表示させたいんですよねー。
これで
print array[2]
ってやってもERRORでるし。
どうやったらいいのでしょう?
0625デフォルトの名無しさん
2005/07/20(水) 23:02:57array = str.split "."
でどう?
0626& ◆1nX/btnIr6
2005/07/20(水) 23:21:59できましたー!!ありがとうございます!
d(゚Д゚)☆スペシャルサンクス☆( ゚Д゚)b
でもなんでダブルクォーテーションだけで良かったんですか?
仕様でしょうか?
0627デフォルトの名無しさん
2005/07/20(水) 23:40:140628デフォルトの名無しさん
2005/07/20(水) 23:54:19splitの第1引数(区切り)には文字列も指定できる。
詳しくは↓のsplitを参照
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=String
0629デフォルトの名無しさん
2005/07/21(木) 00:15:56(・∀・)ほう
わかりました。ありがとうございます。(TдT)
0630デフォルトの名無しさん
2005/07/21(木) 01:54:30私は27歳のOLしてるのぉ〜〜〜っ♪(#⌒〇⌒#)キャハ
うーんとー、私メル友がすっごくすっごく欲しくってー、\(⌒∇⌒)/
探してたら(◎_◎)なんとっ!☆彡(ノ^^)ノ☆彡ヘ(^^ヘ)☆彡(ノ^^)ノ☆彡
素敵な掲示板♪を発見!!!!(^o^)//""" パチパチパチ
あやしい所とか…{{ (>_<;) }} ブルブルすごい数の掲示板がありますけど、
これ全部1人の方が管理しているんですか?(@@;)すごすぎ …
てなわけで、ついつい書いちゃったのらー(o^v^o) エヘヘφ(`∇´)φカキコカキコ♪
メル友に、なってくれるよねっ。(*^-^*) お・ね・が・い♪(* ̄・ ̄)ちゅ♪ッ
え?くれないのぉ〜?(;¬_¬)そんなのいやいや〜〜、ガ━━━*ワ)━━━ン
なってくれなかったら、( `_)乂(_´ ) 勝負! \(^o^)/
☆○(゜ο゜)o ぱ〜んち、☆(゜o(○=(゜ο゜)o バコ〜ン!!("※)=◯)`ο)・;'パーンチ
(>_<) いてっ!ダメ!! ゛o(≧◇≦*)oo(*≧◇≦)o″ダメ!!
(☆o☆)きゃ〜〜(@_@;)やられた〜〜(o_ _)o ドテッ ガ━━〔Ё;)━━ン!
(+_+) 気絶
0631デフォルトの名無しさん
2005/07/21(木) 11:22:03Thread.start {
fh = open("| ping ***.**.***.***")
count = 0
while !fh.eof
if count <= 3 then
print fh.gets
count = count + 1
else
exit
end
fh.close
}
を実行したいのですけど、最後の"}"がsyntax errorになります。
何が間違っているのでしょうか??
0632デフォルトの名無しさん
2005/07/21(木) 11:31:390633デフォルトの名無しさん
2005/07/21(木) 11:58:05いや、ifに対応するendがないのかもしれんけど。
0634デフォルトの名無しさん
2005/07/21(木) 12:02:57寝不足が単純ミスにつながったー ( p_q)エ-ン
ありがとうございました。
0635デフォルトの名無しさん
2005/07/21(木) 14:30:28Navi2ch なんかで読んでると、 >>631 みたいなインデントの方がありがたい。
0636デフォルトの名無しさん
2005/07/21(木) 14:43:55(゚Д゚)ハァ?
0637デフォルトの名無しさん
2005/07/21(木) 14:48:530638デフォルトの名無しさん
2005/07/21(木) 14:54:370639デフォルトの名無しさん
2005/07/21(木) 14:57:45哀れな >>636 がいるスレはここですか?
0640デフォルトの名無しさん
2005/07/21(木) 15:37:52ここでの見栄えなんか関係なく。
0641デフォルトの名無しさん
2005/07/21(木) 15:58:390642デフォルトの名無しさん
2005/07/21(木) 16:28:060643デフォルトの名無しさん
2005/07/21(木) 16:33:16いやだから、 Navi2ch なら >>631 が適切にインデントしてたことがわかる、
って言ってるのに。
0644デフォルトの名無しさん
2005/07/21(木) 16:35:44>>631みたいにまともに改行してる場合にも気付かないという奴は死んだって構わない。
0645デフォルトの名無しさん
2005/07/21(木) 16:36:55print fh.gets
count = count + 1
あたりはされてない
0646デフォルトの名無しさん
2005/07/21(木) 16:50:11もな。
なんでこんなくだらないネタばっかりレスが付くんだよ。
0647デフォルトの名無しさん
2005/07/21(木) 16:50:34Thread.start {
fh = open("| ping ***.**.***.***")
count = 0
while !fh.eof
if count <= 3 then
print fh.gets
count = count + 1
else
exit
(end) <抜けている
end
fh.close
}
こんな感じ?
0648デフォルトの名無しさん
2005/07/21(木) 17:08:46・誰でも参加できる単純なネタだから
・くだらないことに熱くなっちゃう人が紛れ込んでるから
0649デフォルトの名無しさん
2005/07/21(木) 17:26:130650デフォルトの名無しさん
2005/07/21(木) 18:44:05class String
def indices(arg, &block)
pos = 0
while not (pos = index(arg, pos)).nil? do
yield pos
pos += 1
end
end
end
"hogehogefugagufa".indices(/h./) {|a| p [a, $~] }
みたいなのを作ったんだけど、こう書くと$~が取得できないんだね。
スコープの関係上そうなるのは分かったんだけど、$~に値が入るように
書き換えることもできる?
0651デフォルトの名無しさん
2005/07/21(木) 20:03:11yield pos, $~
で良いと思うけど。
0652650
2005/07/21(木) 21:41:50ありがと。やるなら $~ にこだわりたいなぁ。無理なのかな。
自作クラスに正規表現を使ったメソッドつけるときに
ヤな感じになったりしそうなんだけど。
0653デフォルトの名無しさん
2005/07/21(木) 21:58:410654デフォルトの名無しさん
2005/07/21(木) 23:06:18ともに初心者レベルだけど。
0655デフォルトの名無しさん
2005/07/21(木) 23:21:30class String
def indices(arg, &block)
pos = 0
setter = eval("proc{|m|$~=m}", block)
while (pos = index(arg, pos)) do
setter.call($~)
yield pos
pos += 1
end
end
end
0656デフォルトの名無しさん
2005/07/21(木) 23:22:36Stringに突っ込むのが一般的なの?
0657650
2005/07/21(木) 23:48:52なるほどねぇ。eval に第二引数とかあったんだ。
あと、nilがfalseで評価されるってのも言われるまで
忘れてた ノ(´д`*)
勉強になりました。
0658デフォルトの名無しさん
2005/07/22(金) 09:46:020659デフォルトの名無しさん
2005/07/22(金) 19:13:19rubyからC++やJava, Perl, C#を扱うことはできますか?
可能ならサンプルもお願いします
0660デフォルトの名無しさん
2005/07/22(金) 19:42:18できますが Ruby 初心者がサンプル見たくらいで扱いこなせる代物ではありません。
0661デフォルトの名無しさん
2005/07/22(金) 19:43:290662デフォルトの名無しさん
2005/07/22(金) 19:49:24gonzui の langscan あたりが参考になると思います。
とか言ってみるテスト
0663デフォルトの名無しさん
2005/07/22(金) 21:09:53「恋するプログラム」を買ってきてrubyインスコしてrdeをダウンロードしてきて最初のサンプルを打ってみると、
ruby-1.8\bin\ruby.exe: No such file to load -- debug2 (LoadError)と出てしまうのですが、どうすればよいのでしょうか?
0664デフォルトの名無しさん
2005/07/22(金) 22:08:12どっかからdebug2.rbというファイルを見付けてきて、
ruby -e "puts $:" で出て来るディレクトリのどこかにおく。
0665デフォルトの名無しさん
2005/07/22(金) 22:58:35ありがとうございます。
0666デフォルトの名無しさん
2005/07/23(土) 00:00:16インストールしたのは RMagick-win32-1.7.0-mswin32 で
Rubyのバージョンは ruby 1.8.3 (2005-05-12) [i386-mswin32]。
インストールが終わって、サンプルスクリプトを実行したんだけど
`require': no such file to load -- RMagick (LoadError)
とエラーがでるんだよね。
ruby\lib\ruby\gems\1.8\gems\RMagick-win32-1.7.0-mswin32\lib を
$: に追加するとエラー出さずに動いてくれたから、RUBYLIB に上の
PATHを追加すればとりあえず正常に動くようになるとは思うんだけど
RubyGemsって、インストールする度にRUBYLIBにPATH追記しないと
いけない仕様なの?
それともインストールが完全に成功してなかったのかな。
0667デフォルトの名無しさん
2005/07/23(土) 00:23:46他のgemパッケージをインストールしてみて、それもパス追記が必要ならRubyGemsがおかしい。
パス追記が必要でなければ、RMagickのgemパッケージがおかしい(or Windowsでテストしてない。)
0668名無しさん@Linuxザウルス
2005/07/23(土) 03:54:46>俺はいつもハッシュのキーとして使ってるよ↓
そこで、(出力の時などに)キーでソートしたいときに困る訳ですよ。
結局to_sするはめに..
0669デフォルトの名無しさん
2005/07/23(土) 03:58:16頻繁にソートするとなると、そーときはArrayでも使うだろうし。
0670デフォルトの名無しさん
2005/07/23(土) 06:49:52変換しないようにしたいんだけど、こんなエラーがでるのよ。
`to_i': super: no superclass method `to_i' (NoMethodError)
誰か助けて。
class String
def to_i
if /^-?\d+$/ =~ self
return super()
end
return self
end
end
foo = "-10"
p foo.to_i
0671デフォルトの名無しさん
2005/07/23(土) 08:26:50Stringのスーパークラス(Object)にto_iメソッドは定義されていない
というか、オーバーライドするのなら return self だけで十分じゃないか?
0672デフォルトの名無しさん
2005/07/23(土) 10:53:00orig_to_i = instance_method(:to_i)
define_method(:to_i) do
if /^-?\d+$/ =~ self
return orig_to_i.bind(self).call
end
return self
end
end
0673670
2005/07/23(土) 12:03:59ごめん。エラーの意味はわかったんだけど
なんでreturn selfだけで十分なのかわかんない。(´・ω・`)
>>672
ありがとう、あなたは私の恩人です。トム。
わからんメソッドだらけだからリファレンス読んでくる。
0674671
2005/07/23(土) 12:21:55"300".to_iで"300"を返すようにしたいのかと思ったんだ
で、トムこと>>672のコードでも上手くいくけど
こういう書き方もある↓
class String
alias to_i_original to_i
def to_i
if /^-?\d+$/ =~ self
return self.to_i_original
else
return self
end
end
end
0675トム?
2005/07/23(土) 20:17:43ただ、aliasはローカルスコープじゃないから
二重三重に定義し直そうとするとはまる。
0677デフォルトの名無しさん
2005/07/24(日) 14:45:11オレもgemsはぜんぜん知らないんだけど、 require_gems てのがあるんじゃなかったっけか?
0678デフォルトの名無しさん
2005/07/24(日) 22:30:490679デフォルトの名無しさん
2005/07/25(月) 12:37:48html.each_childで子要素全てにアクセスできる、みたいな。
(htmlsplit.rbにツリー構成機能を足したような感じ)
REXMLでも同じ事はできるんだけれども、もっと軽くてシンプルなものを探してます。
0680デフォルトの名無しさん
2005/07/25(月) 12:49:270681デフォルトの名無しさん
2005/07/25(月) 13:20:000682デフォルトの名無しさん
2005/07/25(月) 16:17:220683デフォルトの名無しさん
2005/07/25(月) 19:21:25詳細な情報を出力してくれるライブラリの名前なんだっけ。
前やったことあったきがするのであると思うんだけど。
raaで調べようかと思ったら、落ちてるし。
0684デフォルトの名無しさん
2005/07/25(月) 19:45:440685デフォルトの名無しさん
2005/07/25(月) 19:46:510686679
2005/07/27(水) 00:28:20「自分で書くよりまず既存の物を探せ」という親からの遺言で
>>681
こんなライブラリがあったんですね
教えていただいてありがとうございます!
結局は自分で書いてしまいましたが
0687デフォルトの名無しさん
2005/07/27(水) 01:27:22ぜひどこかで公開してください!
0688デフォルトの名無しさん
2005/07/27(水) 03:08:470689デフォルトの名無しさん
2005/07/27(水) 04:27:57入れ子がグダグダになってたり、閉じ用のタグが無くても良いものもあったりなどなど。
……というか、ライブラリあったのね。
昔、REXML ではダメポな HTML を処理しようとして、作りかけて投げた。
結局は、決め打ちで処理して良しとした。
0690679
2005/07/27(水) 11:06:17時にはRBProf のことも思い出してあげてください
>>687
htmlsplit.rb が必要で
その場しのぎで書いたために、ライブラリですが
それでもよろしければ、参考にどうぞ。
ttp://scl.littlestar.jp/revwiki/view.cgi?HTMLScanner
0691679
2005/07/27(水) 11:08:54正しくは
「htmlsplit.rb の機能に頼っているうえ
その場しのぎで書いたために、使い勝手に欠けるライブラリですが... 」
です。
0692デフォルトの名無しさん
2005/07/27(水) 14:39:05他の人のソースコードを読むと参考になることが多いので。
>>690
多謝です。拝見いたします。
0693デフォルトの名無しさん
2005/07/27(水) 15:03:55ttp://shugo.net/archive/ruby-prof/
ttp://svn.shugo.net/src/ruby-prof/trunk/
0694デフォルトの名無しさん
2005/07/27(水) 15:45:01ツールを探していたところ
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1374332
>ruby -r "net/http" -e "Net::HTTP.get_print 'hostname','/yyy.mda'" > yyy.mda.savefile
という記載を見つけrubyをインストールして上記スクリプトを実行するところまで
辿り付きました。っが、ダウンロードする画像がすべて壊れてしまいます。
まだrubyについてこれから勉強していく前段階なので
自分の環境がおかしいのかこのスクリプトに何か足りないのかも分かりません。
お手数ですが、誰かこのスクリプト確認していただけませんでしょうか
ruby -r "net/http" -e "Net::HTTP.get_print 'ca.c.yimg.jp','/weather/1122445680/weather.yahoo.co.jp/weather/jp/images/satellite/img/jp_1.jpg'" > jp_1.jpg
0695デフォルトの名無しさん
2005/07/27(水) 16:02:34ひょっとしてWindows?
だとしたら、Net::HTTP.get_print 〜 の前に、$stdout.binmode を入れてみて。
0696デフォルトの名無しさん
2005/07/27(水) 18:34:360697デフォルトの名無しさん
2005/07/27(水) 23:45:07試しにマニュアル読んでみたけど、使い方が今ひとつはっきりしなかった
0698Omoti輸卒@特殊投機強襲部隊 ◆rzOmotimAo
2005/07/28(木) 06:32:58RGSSで、
外部プログラムである、IEをゲーム中から
起動するのはどうかけばいいですか?
0699Omoti輸卒@特殊投機強襲部隊 ◆rzOmotimAo
2005/07/28(木) 06:36:570700デフォルトの名無しさん
2005/07/28(木) 10:48:52きちんとsageてください
話はそれからです
というか、RGSSからIEを起動して何に使うんだ
0701Omoti輸卒@特殊投機強襲部隊 ◆rzOmotimAo
2005/07/28(木) 12:00:13こちらの希望のページを開かせようとおもって
あげ
execなんとか、をつかえばいいのか
0702デフォルトの名無しさん
2005/07/28(木) 12:01:380703デフォルトの名無しさん
2005/07/28(木) 12:17:18俺は RGSS だからといって冷たく当たる気は無いけど。
別スレ立てろと言ってた人の気持が、ちょっと分かった。
0704Omoti輸卒@特殊投機強襲部隊 ◆rzOmotimAo
2005/07/28(木) 13:22:47●RPGツクールXPの付属スクリプト
●Rubyを元にしている
●規約でリバースエンジニアリング不可なので
外部ライブラリ等を作成困難
●RGSSそのものもクローズドソースなのでユーザーが
発展させることは困難
体験版ダウンロード
http://www.enterbrain.co.jp/digifami/products/rpgxp/download.html
Google検索
「RGSS」
http://www.google.co.jp/search?hl=ja&q=RGSS&lr=
0705デフォルトの名無しさん
2005/07/28(木) 13:32:090706デフォルトの名無しさん
2005/07/28(木) 13:45:29というようなIPアドレスを格納した配列があるのですが、
これを昇順に並べて返すよい方法はないでしょうか? 上の例だと
{ '192.168.2.1', '192.168.10.3', '192.168.10.10', '192.168.9.100'}
となれば言いのですが。 一旦12ケタの数字に直すのが一番でしょうか?
0707デフォルトの名無しさん
2005/07/28(木) 14:02:01他には 8bit ずつ処理するとか、2進数に戻すなど。
0708デフォルトの名無しさん
2005/07/28(木) 14:22:12メールアドレス欄には「sage」とだけ書くこと。
余分な物を書くとageと同じ扱いになる。
>>706
splitなんかで12桁に戻すのがベストだと思う
他にいい方法もないだろうし
0709デフォルトの名無しさん
2005/07/28(木) 14:56:110710デフォルトの名無しさん
2005/07/28(木) 15:32:18うそつき。
0711デフォルトの名無しさん
2005/07/28(木) 15:51:48並べ替え後の順序が間違ってない?
require "ipaddr"
ipaddr_list = ['192.168.10.3', '192.168.2.1', '192.168.10.10', '192.168.9.100']
p ipaddr_list.sort { |a, b| IPAddr::new(a).to_i <=> IPAddr::new(b).to_i }
0712デフォルトの名無しさん
2005/07/28(木) 16:26:00>>710
ギャースマンカッタ
0713デフォルトの名無しさん
2005/07/28(木) 22:02:53sort_by使えよ。
0714デフォルトの名無しさん
2005/07/28(木) 22:17:07ギャースマンカッタ (真似)
0715デフォルトの名無しさん
2005/07/28(木) 22:21:58Enumerable#sort_by! って無いのね?
0716デフォルトの名無しさん
2005/07/28(木) 22:42:050717デフォルトの名無しさん
2005/07/28(木) 22:56:32まあそっちは Array#sort! があるからあまり気にならないけど。
0718デフォルトの名無しさん
2005/07/28(木) 23:47:22なんかclass_evalとかinstance_evalとかを駆使した方法を見た覚えがあるのだが。。
0719デフォルトの名無しさん
2005/07/29(金) 00:39:49evalなしでも実現できる。includeでなくextendを使えばいい
0720デフォルトの名無しさん
2005/07/29(金) 07:00:410721デフォルトの名無しさん
2005/07/29(金) 13:33:39module_function
0722Omoti輸卒@特殊投機強襲部隊 ◆rzOmotimAo
2005/07/29(金) 14:57:49RGSSでIEをゲーム中に起動して
特定のURLを表示する方法、わかりました!
0723デフォルトの名無しさん
2005/07/29(金) 22:33:030724デフォルトの名無しさん
2005/07/30(土) 15:28:540725デフォルトの名無しさん
2005/08/01(月) 01:14:15いまだ
File.open(file_name,"w").write(contents_body)
FileUtils.mv(file_name,dir_path)
みたいに作ったファイルをわざわざ一度移動させるのが、
なんかもっさりしとってめんどくさい。
下記のような方法じゃ駄目ですか?
File.open(dir_path + "/" + file_name,"w").write(contents_body)
0727デフォルトの名無しさん
2005/08/01(月) 01:18:400728デフォルトの名無しさん
2005/08/01(月) 09:44:23それ専用のメソッドを作るのが良いと思うよ
>>726
その方法だとディレクトリが存在しないときにエラーが出てしまう
0729デフォルトの名無しさん
2005/08/01(月) 12:39:25>その方法だとディレクトリが存在しないときにエラーが出てしまう
・・・存在しなければ自動的に作ってしまうメソッドを組むしかないか。
でも、そんなメソッドがあると、コードのなかで混乱しそうだ。
「突然」作成されるディレクトリ。
やはり一度作成されたことを、明示的にコードのなかで記述しておいたほうが良さそう。
0730デフォルトの名無しさん
2005/08/01(月) 13:12:55>やはり一度作成されたことを、明示的にコードのなかで記述しておいたほうが良さそう。
多少冗長でも、わかりやすいプログラム、
「プレゼンテーションとしてのコーディング」を意識する、ってとこでしょうか?
0732デフォルトの名無しさん
2005/08/01(月) 14:06:55みなさん File::join はお嫌いですか?
ごもっとも。ファイルの所在のことだけを示してたんで、
書き込んだ後のことは考慮してませんでした。
自分ではopenにブロックを渡して自動的にcloseするようにしてます。
>>728
最終的にファイルを配置するディレクトリは存在するものと思ってました。
そのディレクトリが存在しない場合も考慮するのであれば、
そもそものFileUtils.mvでも駄目ですよね?
対象ディレクトリの有無を検査するとかmkdirを実行するとかは、
ファイルを生成する前の処理しておくもんだとばかり...。
0734デフォルトの名無しさん
2005/08/01(月) 17:02:190735デフォルトの名無しさん
2005/08/01(月) 17:43:20GCのときに勝手にcloseするんでなかったっけ。
明示的に閉じた方が良いってのは分かるけど。
あれ?下記のいずれでもエラーになるんです。
ディレクトリを作らせる指定が必要?
ruby 1.8.2 (2005-04-11) [i386-linux]
FileUtils.mv( 'junk.dat', 'new-dir/junk.dat' )
FileUtils.mv( 'junk.dat', 'new-dir/' )
/usr/lib/ruby/1.8/fileutils.rb:590:in `rename': Not a directory - junk.dat or new-dir/ (Errno::ENOTDIR)
from /usr/lib/ruby/1.8/fileutils.rb:590:in `mv'
from /usr/lib/ruby/1.8/fileutils.rb:579:in `fu_each_src_dest'
from /usr/lib/ruby/1.8/fileutils.rb:861:in `fu_each_src_dest0'
from /usr/lib/ruby/1.8/fileutils.rb:861:in `fu_each_src_dest'
from /usr/lib/ruby/1.8/fileutils.rb:579:in `mv'
from -e:1
0737デフォルトの名無しさん
2005/08/02(火) 12:51:02こっちで同じスクリプトを実行したら、1.8.1, 1.8.2 共にエラー無く動作したんだが……
もちろんディレクトリも自動で作ってくれた
なぜ
0738デフォルトの名無しさん
2005/08/02(火) 16:27:000739デフォルトの名無しさん
2005/08/02(火) 17:27:550740デフォルトの名無しさん
2005/08/02(火) 19:13:060741デフォルトの名無しさん
2005/08/02(火) 20:05:280742デフォルトの名無しさん
2005/08/02(火) 20:17:34`ruby -run -e mkdir -- -p #{dir_path}`
`ruby -run -e touch -- #{dir_path}/#{file_name}`
0743デフォルトの名無しさん
2005/08/02(火) 21:43:160744デフォルトの名無しさん
2005/08/02(火) 22:30:43つーか、元のお題がすっ飛んでる気がするが、気のせいか?
0745デフォルトの名無しさん
2005/08/03(水) 12:25:280746デフォルトの名無しさん
2005/08/04(木) 03:08:14いろいろと便利な機能があるんだなぁ
installとかtouchとかmkpathとか、どことなくステキ
0747デフォルトの名無しさん
2005/08/04(木) 08:34:27cgi = CGI.new
cgi['hoge'].class
としたら String って返ってきたもんでさぁ
cgi['hoge'][2..3] とか cgi['hoge'][2, 2] などやってみたら nil になるワケよ。
むろん、文字列の数は範囲内だし、cgi['hoge'].length はちゃんと文字列数が返ってくる。
ワケワカンネ と思ってマヌアル見直してみたら、配列を返すとある。
もー、意味不明。久々にハマりましたよ。
0748デフォルトの名無しさん
2005/08/04(木) 13:03:05とりあえずここ↓の CGI Adjuster を使うべし
http://www.nslabs.jp/rubycgi-18compat.rhtml
ただし Session::PStore には対応していないことに注意
0749デフォルトの名無しさん
2005/08/04(木) 16:00:010750デフォルトの名無しさん
2005/08/04(木) 17:11:460751デフォルトの名無しさん
2005/08/05(金) 11:49:17っていう書き方がおすすめ。
0752デフォルトの名無しさん
2005/08/06(土) 02:15:51好き嫌いじゃなくて単に知られていないだけでは。
0753デフォルトの名無しさん
2005/08/06(土) 11:27:17ちょっと一つ、このスレで聞きたいことがあるんだ
Ruby関連のドキュメントが不足してるってよく言われるけど
実際、どんなドキュメントが有れば便利なんだろう?
ライブラリの使い方とか?
0754デフォルトの名無しさん
2005/08/06(土) 12:26:56俺の場合
・リファレンスマニュアルが所々書き方が曖昧なところある
→試してみないと動作がわからない
・組み込みに関する資料が少ない
・ライブラリの作り方に関して詳しい資料が少ない
0755ruby 1.8.2
2005/08/06(土) 14:43:00規制開始日,時,規制解除日,時,備 考
05.8.4,05:32:25,05.8.4,16:50:25,YahooBB218128★050804臨時地震アスベスト等マルチポスト報告★2
05.8.3,14:35:09,05.8.3,23:53:22,YahooBB221017★20050728 もてない男性板 嵐商事報告スレ 2
05.8.1,15:16:25,05.8.3,00:48:29,YahooBB218122★20050728 もてない男性板 嵐商事報告スレ 2
この場合、規制開始日時 と 規制解除日時の差をとって、
日時分秒に変換するには、どうすんの?
d1="05.8.4"; t1="05:32:25"
d2="05.8.4"; t2="16:50:25"
dtm1 = Obj.method(d1 + t1); dtm2 = Obj.method(d2 + t2)
sa = dtm2 - dtm1
puts sa.to_readable_format()
こんな感じで、読みやすい出力が欲しいです。
この時間を色々調べて、最長、最短の規制、発生頻度とか調べたい。
文字列から、時間オブジェクトは得られないの?
"2005-08-04 12:34:56".to_time みたいな。
0756デフォルトの名無しさん
2005/08/06(土) 15:03:50a="2005-08-04 12:34:56"
p Time.parse(a)
0757デフォルトの名無しさん
2005/08/06(土) 15:18:42ライブラリの作り方の資料、あったらいいなぁ
ライブラリ向けのクラス設計のコツとかも知りたい
0759デフォルトの名無しさん
2005/08/06(土) 18:49:47(offline mode: enter name=value pairs on standard input)
を終了するのに何を入力すればいいの?
^Zを送るとOSの処理の方が優先されてRubyがサスペンドしてしまう…(汗
0760デフォルトの名無しさん
2005/08/06(土) 19:03:010761デフォルトの名無しさん
2005/08/06(土) 19:36:42ありがとう。できました。
0762デフォルトの名無しさん
2005/08/06(土) 22:00:41ドキュメントの数ではない。質だ。わかりにくいドキュメントがたくさんあってもないのと同じ。
あと、リファレンスマニュアルでのクラスの説明では、先頭にメソッド一覧をつけてほしい。
またどんなドキュメントにしたらいいかは、www.php.netを参考にしたらいいかも。PHPユーザから不満を聞いたことがないくらいだし、よくできてると思う。
0763デフォルトの名無しさん
2005/08/06(土) 22:56:18ttp://www.ruby-doc.org/core/
質に関しては知らないけどな。
単に、誰がコストを払うかの問題だろ。
ユーザを増やさなきゃ、改善される確率は低いままだろね。
あと、Ruby製で良いマニュアル作成ツールを作らないと (w
0764デフォルトの名無しさん
2005/08/06(土) 23:47:39マニュアルとかっていうより、Rubyをつかったソースをもっと見てみたい。
(マニュアルはttp://www.ruby-lang.org/ja/man/archive/で結構間に合う)
特に、オブジェクトパターンをRubyでやったらどうなるのか。とか。
Javaみたいな回りくどい言語でデザインパターンを解説されるより、Rubyみたいな容赦なくシンプルに綴れる言語の方が、理解が早いと思うんだけれど。
あとはRuby on Railsの邦文資料などなど。
#てめぇで書けって話しだな。
0765デフォルトの名無しさん
2005/08/07(日) 02:48:13cgi = CGI.new
cgi.each_pair{ |k, v| puts k + v }
なんてやってみたら例外発生しちゃうのな。
もー意味不明。Hash で格納してるんだよな?
p cgi してみたら #["hoge"] なんかあるんだが、これのせい?
またまた、ハマりましたよ。
…… WEBrick::CGI を試してみるか orz
0766デフォルトの名無しさん
2005/08/07(日) 03:13:16CGI.new で生成されるオブジェクトは、あくまで CGI オブジェクトであって Hash ではない
なので each_pair というメソッドは使えない
each_pair を実行したいなら、 cgi.params.each_pair と書くべし。
0767デフォルトの名無しさん
2005/08/07(日) 11:40:560768765
2005/08/07(日) 12:48:03漏れが未熟者でした orz
0769753
2005/08/07(日) 13:18:27みんな意見ありがとう。超☆感謝
ちょっと考えてることがあるので
もし実現できそうになったら、ここで公開したいと思う
0770デフォルトの名無しさん
2005/08/07(日) 13:40:42ベテランも使いにくい、初心者にも使いにくい、
いったい、なんだこれ?
0771デフォルトの名無しさん
2005/08/07(日) 13:42:18きっと・・・
0772デフォルトの名無しさん
2005/08/07(日) 13:49:13やめて希望的観測やめて
0773デフォルトの名無しさん
2005/08/07(日) 19:06:04されるの?
0774デフォルトの名無しさん
2005/08/07(日) 23:05:220775デフォルトの名無しさん
2005/08/08(月) 01:19:59サンプルを参考に以下のように
require 'open-uri'
proxy_addr = 'bc-vip.atl2.corp.earthlink.net:8080'
open("http://www.ruby-lang.org", proxy_addr) {|f|
f.each_line {|line| p line }
}
プロクシサーバを介してウェブファイルを取得しようとしているのですが、
invalid access mode bc-vip.atl2.corp.earthlink.net:8080 (URI::HTTP resource is r
ead only.)
c:/program files/ruby/lib/ruby/1.8/open-uri.rb:131:in `open_uri'
Press ENTER to close the window...
などというエラーが発生してしまいます。
どなたかプロクシを介したウェブページの取得方法を教えていただける方はいませんでしょうか。
よろしくお願い致します。
0776デフォルトの名無しさん
2005/08/08(月) 01:44:09open("http://www.ruby-lang.org", :proxy => proxy_addr) {|f|
じゃね。
http://www.ruby-lang.org/ja/man/?cmd=view;name=open-uri.rb
0777デフォルトの名無しさん
2005/08/08(月) 03:10:34ありがとうございます。
確かに、そうですね。ただ、それでもうまくいきません。
undefined local variable or method `proxy' for main:Object
D:/My Documents/マイ ノート/Ruby/aa3/untitled1.rb:3
Press ENTER to close the window...
となります。他にご回答はありませんでしょうか?
0778デフォルトの名無しさん
2005/08/08(月) 03:14:01proxy の前のコロン(:)はちゃんと入ってるか?
0779デフォルトの名無しさん
2005/08/08(月) 03:31:28コメントありがとうございました。
require 'open-uri'
proxy_addr = 'bc-vip.atl2.corp.earthlink.net:8080'
open("http://www.ruby-lang.org", :proxy => proxy_addr) {|f|
f.each_line {|line| p line }
}
とproxyの前にコロンを入れてみましたが、同じく
undefined method
と出てしまいました。
他に試すべき点はありますでしょうか?
よろしくお願い致します。
0780デフォルトの名無しさん
2005/08/08(月) 09:46:14open("http://www.ruby-lang.org", "proxy" => proxy_addr) {|f| ...
とか
proxy_addr = 'http://192.168.11.22:7979'
open("http://www.ruby-lang.org", :proxy => proxy_addr) {|f| ...
とか
open("http://www.ruby-lang.org", {:proxy => proxy_addr}) {|f| ...
とかいろいろ思いつくだろ?
0781デフォルトの名無しさん
2005/08/08(月) 10:10:05プロキシの指定は下記のようにしないとまずくありませんか?
proxy_addr = 'http://bc-vip.atl2.corp.earthlink.net:8080/'
0783デフォルトの名無しさん
2005/08/08(月) 11:46:34手始めに、Linuxでエディタの作るバックアップファイルを削除するスクリプトを
つくろうと思ったのですが、対象ファイル(例えば、#hoge.txt#)を正規表現で補足
してくれません。内容は以下のようなもので、エラーの内容もよく分からないのです。
どなたか原因ご指摘下さい。
irb(main):001:0> str = "#hoge.txt#"
=> "#hoge.txt#"
irb(main):002:0> /^#.+#$/ =~ str
SyntaxError: compile error
(irb):2: unterminated string meets end of file
(irb):2: syntax error
from (irb):2
0784デフォルトの名無しさん
2005/08/08(月) 12:12:39自分でいうのも何ですが、これはもうれっきとした夏です。真夏です
0785デフォルトの名無しさん
2005/08/08(月) 12:24:44$ ruby -e '/#$/'
-e:1: unterminated string meets end of file
-e:1: syntax error
BUGじゃね?
0786デフォルトの名無しさん
2005/08/08(月) 12:41:570787デフォルトの名無しさん
2005/08/08(月) 12:46:04どうなんでしょう…。難しいことは分かりませんが、
下でうまくいきました。#はメタ文字?それとも全く意味が変わってる?
よくは分かりません。
irb(main):001:0> str = "#hoge.txt#"
=> "#hoge.txt#"
irb(main):002:0> /^\#.+\#$/ =~ str
=> 0
0788デフォルトの名無しさん
2005/08/08(月) 13:19:06エスケープしないとエラーが出るのはおかしい……と思う
多分本体側のバグだろう
とりあえず今のところは>>787の方法でOK
0789デフォルトの名無しさん
2005/08/08(月) 13:41:28ほんとに夏だな。すげー夕立もきたし。
0790デフォルトの名無しさん
2005/08/08(月) 15:47:35こんな仕様があったのか・・知らなかった
0791デフォルトの名無しさん
2005/08/08(月) 16:55:14>>780
本当にありがとうございました!
やっとうまくいきました。
今まではどこが駄目だったのか検証してみます。
0792デフォルトの名無しさん
2005/08/08(月) 23:53:181.8.3はクリスマスまで出ないのでしょうか?
ruby_1.8の
ext/enumerator 以下が空なのはHEADで移動になったときの
cvs ci のミスなのでしょうか?
0793デフォルトの名無しさん
2005/08/09(火) 03:09:37また質問させていただきます。
open-uriライブラリを使ってウェブサイトのHTMLを取得しても、カウンターが回らない現象が確認できたのですが、これは何故かどなた説明していただけますでしょうか。
よろしくお願いいたします。
0794デフォルトの名無しさん
2005/08/09(火) 03:40:570795デフォルトの名無しさん
2005/08/09(火) 04:52:430796デフォルトの名無しさん
2005/08/09(火) 05:41:45>>795
そうだったんですか、ありがとうございました。
もう少し自分で調べてみますが、カウンターが反応するようにすることへの何かアドバイスがいただければ幸いです。
0797デフォルトの名無しさん
2005/08/09(火) 05:46:270798デフォルトの名無しさん
2005/08/09(火) 06:39:46rubyも同じように組み込むことが出来るのでしょうか?
導入の手引きなどありましたら紹介してください
0799デフォルトの名無しさん
2005/08/09(火) 06:42:52> ruby_1.8の
> ext/enumerator 以下が空なのはHEADで移動になったときの
> cvs ci のミスなのでしょうか?
cvs upのミス。-dと-Pをつけれ。
詳しくは cvs -H up
0800デフォルトの名無しさん
2005/08/09(火) 12:21:23盲点だな
0801デフォルトの名無しさん
2005/08/09(火) 13:13:15そもそものカウンターの仕組みを考えてみれ。
小学生の夏休みの自由研究にはちょうどいいくらいだろう。
0802デフォルトの名無しさん
2005/08/09(火) 13:51:54access.logを解析してhtmlをupdateするdaemonが常駐してる
0803デフォルトの名無しさん
2005/08/09(火) 14:35:170804デフォルトの名無しさん
2005/08/09(火) 17:44:520805デフォルトの名無しさん
2005/08/09(火) 17:54:240806デフォルトの名無しさん
2005/08/09(火) 19:49:590808デフォルトの名無しさん
2005/08/09(火) 20:14:14でもきっと内心はどろどろ。
0809デフォルトの名無しさん
2005/08/09(火) 22:18:220810デフォルトの名無しさん
2005/08/09(火) 22:28:370811デフォルトの名無しさん
2005/08/09(火) 22:30:18http://pc8.2ch.net/test/read.cgi/tech/1122823349/
0812デフォルトの名無しさん
2005/08/11(木) 18:23:52NKF.guessはイマイチ上手く動かないようだし1.8.1以前と1.8.2以降で挙動が違うみたいだし…orz
>ruby -v
ruby 1.8.2 (2004-12-25) [i386-mingw32]
test.rb(euc-jp)
require 'jcode'
require 'nkf'
$KCODE = 'e'
p NKF.guess('あいうえお')
p NKF.guess1('あいうえお')
p NKF::EUC
p NKF::ASCII
#=>
5
2
2
5
0813デフォルトの名無しさん
2005/08/11(木) 18:56:45EUCとSJISは絶対に判別不能な組み合わせが存在するから、
自動判別はあてにせず、文字コードを明示的に指定できるように
しておくべき。
0814デフォルトの名無しさん
2005/08/11(木) 18:57:450815デフォルトの名無しさん
2005/08/11(木) 18:59:540816デフォルトの名無しさん
2005/08/11(木) 20:33:07http://rubyurl.com/EBT3p
を読むとか。
Mconvとかよさげ。
0817812
2005/08/11(木) 22:37:01>自動判別はあてにせず、文字コードを明示的に指定できるように
>しておくべき。
判別機能を使用したいスクリプトはフォームからの入力をうけるCGIなので
入力されるコードを限定することは不可能なんです
イタズラ防止目的でEUC以外のデータが入ってきたらエラーを返すようにしようかと思っているのですが…
>>816
サンクス
NKF.guessってeuc-jpの判別精度はかなり悪いね…(汗
MconvはGPLみたいだし…
他のはどうやってLinux用バイナリを作るかって問題が…<実際動かす鯖はLinuxなので。自分はLinuxマシンはない
どうするか…orz
0818デフォルトの名無しさん
2005/08/11(木) 22:44:350820デフォルトの名無しさん
2005/08/11(木) 23:46:48JISのほうが条件はずっと絞られる。
0821デフォルトの名無しさん
2005/08/12(金) 01:01:57"アイ"(sjis) ← "\xb1\xb2" → "渦"(euc)
だから、受け側を EUC-JP にするのは、結構最悪の選択肢だと思う。
(イタズラ防止目的なら特に)
「他の文字コードの入力を誤判定しないように」という目的なら、
受ける文字コードは、
1. ISO-2022-JP(ESC があるから間違えない)
2. UTF-8
3. Shift_JIS(ただし半角カナは捨てる←EUC-JP の入力を拾うから)
上から順番におススメ。
あと、>>819 の「バイナリデータをぶち込まれた場合に通しちゃう」というのが
よく分からない。 文字コードの validate するなら通すはずがないと思うけど。
と、素人考えを書いてみましたよ……。
0822デフォルトの名無しさん
2005/08/12(金) 01:03:12うまく作れません。例えば、
class Foo
def initialize(a)
@a = a
end
end
class Bar < Foo
def initialize(a, b)
super(a)
@b = b
end
end
bar = Bar.new("aaa", "bbb")
てな具合にやると「allocator undefined for Bar」と
エラーが出てしまいます。どうすれば良いのでしょうか。
0823デフォルトの名無しさん
2005/08/12(金) 01:21:01それをそのままコピペして実行したらちゃんと動くけど。
最後に
p bar
をつけたら
#<Bar:0x402a5e30 @a="aaa", @b="bbb">
こうなった。
0824822
2005/08/12(金) 01:48:31ですね。。。
本番プログラムは違う箇所でまちがっているのかな。
ご迷惑をおかけしました。せっかくなので、質問です。
new と initialize メソッドの違いが良く分からないのですが。
>>822 で initialize を new に変えても同じことですか?
0825デフォルトの名無しさん
2005/08/12(金) 02:17:08オブジェクトの生成は誰がすることになるのか考えてみればどうだろう。
0826812
2005/08/12(金) 02:29:09説明不足でスマン
文字コードの範囲内で化ける分には特に問題ないんです
CGIの最終的な出力先はメールなのですが露骨にバイナリなメールが送信されて万が一メーラーが
誤動作したりするのは出来れば避けたいので
def euc?(text)
text.gsub!(/([\xa1-\xfe][\xa1-\xfe])|(\x8e[\xa1-\xdf])|(\xa4[\xa1-\xf3])|(\xa5[\xa1-\xf6])|(\x8f[\xa1-\xfe][\xa1-\xfe])|([\x20-\x7e])|(\x0d|\x0a)/n, '')
text.size == 0
end
こんな感じでチェックさせる事にします。これで少なくとも変なコントロールコードとかエスケープコードが
送られるようなことはなくなるはず…
0827デフォルトの名無しさん
2005/08/12(金) 02:56:41重箱の隅だけど、引数を破壊するのはどうかと。
0828デフォルトの名無しさん
2005/08/12(金) 02:57:45???
0829デフォルトの名無しさん
2005/08/12(金) 03:04:420830812
2005/08/12(金) 04:08:15あ、素で忘れてた…orz
今のコードじゃ問題ないのは確認したけどあとでコード使いまわしたときにはまる可能性はありそうなので
dupしておいた。
>>828
たとえばフォームの内容をJISに変換してsendmailでメールで送信する様なスクリプトの場合
文字コードのチェックを行わない場合フォームにバイナリデータを貼るとかしたらコントロールコードとかが
混じったメールが送信されたりしない?
スクリプトとかからやればバイナリファイルの中身をフォームの値として送り込むことも可能な気がするけど
0831デフォルトの名無しさん
2005/08/12(金) 05:12:14と思って、試しにバイナリ貼ったメールを送ってみようかと思ったが、ヤンクできなかった。
他のメーラをインストールするのマンドクセ。
鯖 postfix だし。
0832デフォルトの名無しさん
2005/08/12(金) 08:03:46そのコードでは
> てな具合にやると「allocator undefined for Bar」と
このエラーがでるわけはない。
FooがDataのサブクラスとかなんとか、重要なところを書いてない。
0833デフォルトの名無しさん
2005/08/12(金) 12:19:11emacs+rd-mode。
0835デフォルトの名無しさん
2005/08/12(金) 13:14:150836デフォルトの名無しさん
2005/08/12(金) 13:41:37文字コード判別じゃなくて、単に EUC-JP かどうかがわかればいいのであれば、
Kconv::iseuc(str) なんてのがありますけど、もう解決しちゃってますかそうですか。
0837デフォルトの名無しさん
2005/08/12(金) 13:44:37newはクラスメソッド
initializeはインスタンスメソッド
クラスがnewでオブジェクトを生成した後オブジェクトは自身をinitializeで初期化する
あぁ、何を書いてるんだ...。>自分
もちろん834はemacs+ruby-modeの間違いでございます。
"el4r - EmacsLisp for Ruby"というプログラムが登場したので、
ますますemacsを使うことになるかも。
0839デフォルトの名無しさん
2005/08/12(金) 15:42:33わたしはマカーだが、miで充分、事足りる。
0840デフォルトの名無しさん
2005/08/12(金) 15:46:46UNIX/Linuxはもちろん、Windowsでも同じ使用感を得られるからね。
X11やWinのGUIは使いたくないし。
0841デフォルトの名無しさん
2005/08/12(金) 16:12:14>俺はマカーだからこそemacsを使ってる。
>UNIX/Linuxはもちろん、Windowsでも同じ使用感を得られるからね。
そんなにいろいろOSを使わないとしたら、まーエディタぐらい好きなのを使えって。
秀丸でRUBYっていうのはあまり聞かないけれど。
0842デフォルトの名無しさん
2005/08/12(金) 16:39:16というように、tcsh上から実行しようとすると、下記のように怒られます。
/Users/****/Sites/****/****.rb:3:in `require': No such file to load -- ****.rb (LoadError)
はて?
0843デフォルトの名無しさん
2005/08/12(金) 16:57:48ruby -e "p $:" の結果と LoadError の出ている ****.rb のパスを確認してみれ。
0844842
2005/08/12(金) 17:21:46>伏字にするなよ。特に /Users/ の後ろ。
しつれい。こんな感じ。
---------
/Users/ownerName/Sites/cgi-bin/Ctr_test/logic/test.rb:9:in `require': No such file to load -- tool.rb (LoadError)
---------
tool.rb」は「test.rb」と同じディレクトリ「logic」に入っている。
---------
で、$:をpで確認してみた。あー、この環境変数の中に納められているpathのエントリしか実行しないのか。
---------
tcsh上から
ownerName% setenv RUBYLIB /Users/ownerName/Sites/cgi-bin/Ctr_test/logic
としたところ、無事実行できた。
---------
こんなタコな質問にヒントをありがとう>>843
0845デフォルトの名無しさん
2005/08/13(土) 16:59:37rubyで日本語を入力するにはどうしたらよいのでしょうかORZ
何かソフトが必要なのでしょうか。
0846デフォルトの名無しさん
2005/08/13(土) 17:06:06もちっと、やりたいことを詳しく説明するか、
とりあえずアルファベットで良いから、サンプルスクリプトを貼ってごらん。
0847デフォルトの名無しさん
2005/08/13(土) 17:21:54人工無脳が作ってみたくて「恋するプログラム rubyでつくる人工無脳」という本を購入したのですが
print("ワンツー¥n")という分を練習なのですがその日本語が入力できないです。
半角英数しか表示されないので日本語が入力できません。
インストールもちゃんとできていると思うのですが。
プログラミングは以前にコボルをちょろっとやっていた時はXFERボタンと南下のボタンを押せば日本語に変換できたのですが
いろいろいじってみても日本語にならないです。
もしかして全部半角英数でやるべきなのでしょうか。
具具ってみてのですが見つからなかったと思います。探し方がおかしいでしょうかorz
0848デフォルトの名無しさん
2005/08/13(土) 18:57:45そんなことはないです。
というか XFER ってことは PC98 使いなのか?
環境が Windows なら南下(何か?)ってのは、大抵 Ctrl だと思うのだが。
FreeBSD かなぁ。それだと IME に依存するんでちと分からない。
そもそも、2ch に日本語で投稿できてるのだから、そういった話じゃないだろうけど。
ちなみに、それはコンソールで `ワンツー' が入力できないということ?
「恋するプログラム」なら irb での話かもしれないかな。
それは Ruby とは別問題の可能性が高いと思う。
一旦エディタでスクリプトを保存して、それを実行してみたら良いと思う。
0849デフォルトの名無しさん
2005/08/13(土) 19:26:55レスありがとうございます。
環境はwinXPです。以前学校でcobolの授業で使ったpcがwin98でしたのでXFERボタンを使いました。言葉足らなくて申し訳ないです。
2ch含め、他のところでは日本語で入力できますが、irbとruby consol使うと言語バーも小さくなってしまって変換の仕方がわからないのですorz
メモ帳で日本語文章打ってコピペしたら入力できました。質問内容スレ違いっぽいかったですね、すみません。
丁寧に教えてくださりどうもありがとうございました。これからしっかり勉強して覚えようと思います○┓ペコリ
0850デフォルトの名無しさん
2005/08/13(土) 21:52:33コマンドプロンプトって日本語入力できなかったっけ?
とりあえずRDEあたりとか使ってみちゃどうよ。
http://homepage2.nifty.com/sakazuki/rde.html
0851デフォルトの名無しさん
2005/08/13(土) 22:00:53d:\temp>irb -Ks
irb(main):001:0> a="あいう"
=> "あいう"
irb(main):002:0>
0852デフォルトの名無しさん
2005/08/13(土) 22:23:29それを覚えていて、DOS/V 機でそれをしようとしてハマったという感じかな。
コンソールでもメモ帳と同じ方法で日本語モードに変わると思うけど。
しかし、Linux の VT ならまだしも、cmd.exe へコピペという発想が凄いな。
試してみたら、C-v ではなく右クリしたらコピペされた。ちょっとビックリ。
0853845
2005/08/14(日) 07:45:20レスありがとうございます。
alt+半角/全角でキーで日本語入力できました!!
最後までコピペで乗り切るところでしたorz
紹介sいていただいたRDE使ってみようと思います。
感謝です○┓ペコリ
0854デフォルトの名無しさん
2005/08/15(月) 02:44:07Eclipse + RDT(Ruby Development Tools) 環境を準備しようとしているのですが、実行設定の画面で「An error has occurred. See error log for more details.」というエラーが発生してしまいます。しかしerror logがどこにも見当たりません。
DOJA(DoCoMoの携帯端末のエミュレータ)などは問題なくEclipseにインストールすることができました。
どなたかお分かりになる方いらっしゃいましたら解決方法をよろしくお願いします。
0856デフォルトの名無しさん
2005/08/15(月) 03:30:36RDE ついに1.0Release間近!?
http://homepage2.nifty.com/sakazuki/rde.html
FreeRIDE RubyOneClickInstallerでインストールした場合の標準添付
http://rubyforge.org/projects/rubyinstaller/
http://rubyforge.org/frs/?group_id=31
Mondrian Ruby IDE 開発手放したと思いきや、かなり使いやすくなってる。いつの間に!
http://www.mondrian-ide.com/download.html
0857zaqdadc75de.zaq.ne.jp
2005/08/15(月) 03:30:530858デフォルトの名無しさん
2005/08/15(月) 03:56:33>>855
プログラムする以前の問題だったので初心者板が適用かと思ってしまいました(笑)
error logとは「workspaceフォルダ\.medtadata\.log」というファイルだということがわかりました。
Rubyと関係しそうなメッセージは以下のようなものなのですが、
!ENTRY org.eclipse.ui 2 0 2005-08-15 02:33:43.734
!MESSAGE Warnings while parsing the commands from the 'org.eclipse.ui.commands' and 'org.eclipse.ui.actionDefinitions' extension points.
!SUBENTRY 1 org.eclipse.ui 2 0 2005-08-15 02:33:43.734
!MESSAGE Commands need a name: plug-in='org.rubypeople.rdt.ui', commandId='org.rubypeople.rdt.ui.edit.text.ruby.comment'.
!SUBENTRY 1 org.eclipse.ui 2 0 2005-08-15 02:33:43.734
!MESSAGE Commands need a name: plug-in='org.rubypeople.rdt.ui', commandId='org.rubypeople.rdt.ui.edit.text.ruby.uncomment'.
!SUBENTRY 1 org.eclipse.ui 2 0 2005-08-15 02:33:43.734
!MESSAGE Commands need a name: plug-in='org.rubypeople.rdt.ui', commandId='org.rubypeople.rdt.ui.edit.text.ruby.content.assist.proposals'.
!ENTRY org.eclipse.jface 4 2 2005-08-15 02:36:55.296
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jface".
!STACK 0
java.lang.NoClassDefFoundError: org/eclipse/ui/internal/dialogs/ListContentProvider
at org.rubypeople.rdt.internal.debug.ui.launcher.RubyEnvironmentTab.addLoadPathTab(RubyEnvironmentTab.java:65)
at org.rubypeople.rdt.internal.debug.ui.launcher.RubyEnvironmentTab.createControl(RubyEnvironmentTab.java:56)
パッと見わかる方いらっしゃいますか?
0859デフォルトの名無しさん
2005/08/15(月) 07:42:060860デフォルトの名無しさん
2005/08/15(月) 09:49:11FreeRIDE と MondrianRubyIDE って、どんな感じなのだろうか。
SS すらないと、面倒でちょっと試してみる気が起きない。
まぁ、ruby-mode で、あまり不満は無いから、使わないだろうけど。
0861デフォルトの名無しさん
2005/08/15(月) 10:39:020862822
2005/08/15(月) 21:43:42initialize メソッドを使うようにします。
遅くなってしまって申しわけないです。
0863デフォルトの名無しさん
2005/08/17(水) 00:44:51バグ落ちだいぶ減ったし、アイコンオシャレになったし
0864デフォルトの名無しさん
2005/08/17(水) 17:35:54RubyWinのが安定してるし、それよかxyzzyのが使いやすい。
0865デフォルトの名無しさん
2005/08/17(水) 18:58:320866デフォルトの名無しさん
2005/08/17(水) 22:46:27xyzzyはなにげに印刷が便利
0867863
2005/08/17(水) 22:49:50xyzzyやMeadowは、Windowsに慣れた人間には使いづらい
とはいえ、どちらも個人の好みのレベルではある
0868デフォルトの名無しさん
2005/08/18(木) 14:30:03以下の仮説は正しいでしょうか。
a. コンパイルしたものを変数に入れたのを参照するよりもリテラルで書いた方が速い
b. 正規表現を定数から参照するよりもローカル変数から参照した方が速い
% /usr/bin/time ruby -e 'str = "hoge"; 1000000.times { /og/ =~ str }'
1.04 real 1.03 user 0.00 sys
% /usr/bin/time ruby -e 'str, re = "hoge", /og/; 1000000.times { re =~ str }'
1.22 real 1.22 user 0.00 sys
% /usr/bin/time ruby -e 'str, RE = "hoge", /og/; 1000000.times { RE =~ str }'
1.39 real 1.39 user 0.00 sys
% ruby -v
ruby 1.8.2 (2004-12-25) [i386-freebsd4]
0869デフォルトの名無しさん
2005/08/18(木) 21:35:120870デフォルトの名無しさん
2005/08/18(木) 21:53:41確かにそうかもしれないですね。
ふと思ったのですが、正規表現に限らず、一般的な話として、
ループなどで頻繁に参照する場合には、定数を直接参照するよりも、
一時的にローカル変数に入れてからそちらを参照する方が良い (速い) のでしょうか?
0871デフォルトの名無しさん
2005/08/18(木) 23:41:38速いかどうかは詳しく知らないが、気になるのは
速い = 良い
が成り立つかどうかはケースバイケースだということ。
0872デフォルトの名無しさん
2005/08/19(金) 11:32:51遅い = 良い
が成り立つケースを一つ上げてください。
0873デフォルトの名無しさん
2005/08/19(金) 11:35:32一般に速度は
String以外のリテラル > メソッドスコープのローカル変数 >
ブロックスコープのローカル変数 > インスタンス変数 > 定数
グローバル変数はたぶん、メソッドスコープのローカル変数よりやや遅いかも。
0874デフォルトの名無しさん
2005/08/19(金) 11:53:01それは十分条件だけど、必要条件じゃないな
0875デフォルトの名無しさん
2005/08/19(金) 12:53:50「それ」ってどういう命題?
0876デフォルトの名無しさん
2005/08/19(金) 13:34:220877デフォルトの名無しさん
2005/08/20(土) 01:12:04遅い = 良い
が成り立つケースを一つ上げてください。
0878デフォルトの名無しさん
2005/08/20(土) 01:46:11和暦→西暦ならParseDateが使えそうなんですが…
出来れば標準で付いてくるライブラリで出来ると嬉しいです
0879デフォルトの名無しさん
2005/08/20(土) 02:04:04平成と昭和ってどこで切り替わるの?
0880デフォルトの名無しさん
2005/08/20(土) 08:02:150881デフォルトの名無しさん
2005/08/20(土) 09:50:510882デフォルトの名無しさん
2005/08/20(土) 14:19:07遅い=良い(遅い方がマシ)
と言えないだろうか?
細かな速度改善は Ruby のバージョンが変わると役に立たなくなるかもしれない
0883デフォルトの名無しさん
2005/08/20(土) 15:12:41へぇ
0884デフォルトの名無しさん
2005/08/20(土) 20:23:520885デフォルトの名無しさん
2005/08/20(土) 20:44:07速度だけしか変わらないのなら速い方がいいに決まってる。
可読性が上がるとか、保守性が高くなるとか、そういうことなら
速度より優先しても良いとは思う。
0886デフォルトの名無しさん
2005/08/20(土) 21:20:390887デフォルトの名無しさん
2005/08/20(土) 22:31:050888デフォルトの名無しさん
2005/08/20(土) 22:32:02遅い = 良い
が成り立つケースを一つ上げてください。
0889デフォルトの名無しさん
2005/08/20(土) 22:43:08遅くて使い易い vs 速くて使い難い
だろ。
つか、スレ違い。
比較スレに行くなり、一生全て C でも使ってろよ。
0890デフォルトの名無しさん
2005/08/20(土) 23:58:41Ruby並に使いやすいCが誕生すればそれでいいわけだよ
0891デフォルトの名無しさん
2005/08/21(日) 02:00:370892デフォルトの名無しさん
2005/08/21(日) 02:35:480893デフォルトの名無しさん
2005/08/21(日) 12:23:46Ruby: 1993年開発開始
少なくとも gcc よりも Ruby の方が遅いですね
0894デフォルトの名無しさん
2005/08/21(日) 22:20:11ruby-mode.el ,inf-ruby.el,rubydb2x.elで
できるようになるのは何なのでしょう。
またそのキーバインドはどうなっているのでしょうか。
0895デフォルトの名無しさん
2005/08/21(日) 23:18:100896デフォルトの名無しさん
2005/08/21(日) 23:20:31File::dirname($0)
でどうでせう
0897デフォルトの名無しさん
2005/08/21(日) 23:26:41即レスthx
組み込み変数の方だったのか…組み込み定数の方探してた…orz
キーバインドの件は、調べたいモードでdescribe-bindingsをやってみるとか?
0899デフォルトの名無しさん
2005/08/23(火) 00:34:10おお、こんな便利なコマンドがあったのか。
thx!!!
0900デフォルトの名無しさん
2005/08/23(火) 18:11:39パッと思い付いたのはこんなんですが、なんかイマイチなので。
ary.join("\n") << "\n"
ary.inject("") { |t, l| t << l << "\n" }
0901デフォルトの名無しさん
2005/08/23(火) 18:32:16とかかなあ。
ary.join("\n") だけにしといて、末尾の改行は出力時の puts でやるとかかな。
x = ""; StringIO.new(x).puts ary とかはどうだ。
0902デフォルトの名無しさん
2005/08/23(火) 22:24:010903デフォルトの名無しさん
2005/08/24(水) 00:21:53依存しているのが何となく気に入らないけど、カコイイな。
自分でやるなら collect/map してjoinでやるだろうけど。
0904デフォルトの名無しさん
2005/08/24(水) 00:26:09injectを使うなら、<<のところは+でいい。
0905デフォルトの名無しさん
2005/08/24(水) 00:28:53"foo\nbar\nbaz\n" を最終的にどこかに出力するんなら、
その時までずっと ary のまま持ってて puts するという手も。
0906デフォルトの名無しさん
2005/08/24(水) 00:40:180907デフォルトの名無しさん
2005/08/24(水) 00:49:30現在は約 12日遅れで更新中。そのうち追いつくでしょう。
0908デフォルトの名無しさん
2005/08/24(水) 01:07:31よくわかりました
ありがとうございます
0909デフォルトの名無しさん
2005/08/24(水) 15:53:40簡単なスクリプトを作ろうと思っているのですが、例えば禁煙タイマーのようなものを
想定していただければそう遠くありません。
つまり、a時点とb時点を設定し、その間の時間差を求めたいのですが
irb(main):001:0> a = Time.now; b = a + 60 * 60 #a時点1時間後
=> Wed Aug 24 16:51:47 JST 2005
irb(main):002:0> p b-a
3600.0
=> nil
というので、時間差がsecでしか出てきません。これをある程度、月や週などのまとまった
単位を使って求めたいのですが何かよい方法はないのでしょうか?
もちろん、求めるだけなら簡単なのですが、ゴタゴタとコードを書くのが醜いと思ったので
質問とさせてください。
0910デフォルトの名無しさん
2005/08/24(水) 16:11:52http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Date
0911デフォルトの名無しさん
2005/08/24(水) 16:18:47ありがとうございます。むぅ、難しそうなクラスですね。
Time.local(0, 1, 1, 1, 0, 0)時間を設定して経過時間足して、後はstrftimeでうまく
行きそうなことに気づきました。どうも、すみませんでした。ありがとうございました。
0912デフォルトの名無しさん
2005/08/24(水) 16:26:51自前でメソッド用意すれば良い。そんなに複雑にならないかと。
ちなみに俺は、月変わりの処理などが面倒なので、
一旦、起算時に変えて、計算後また必要な形に戻してる。むしろ sec だらけ。
ちゃんと期待した値が返ってるから良いのかもしれないが、
b = a + 60 * 60 みたいに、Time + Fixnum オブジェクトみたいな形は、
Ruby 的に、かなり気持ち悪いと思うんだが……
0914デフォルトの名無しさん
2005/08/24(水) 16:42:39テキストを適当にエスケープするのにお手軽な方法があれば教えてください。
エンコーディングは UTF-8 だけに対応で構いません。
0915デフォルトの名無しさん
2005/08/24(水) 18:15:130916デフォルトの名無しさん
2005/08/24(水) 18:16:27> → >
みたいなやつ?
それともCDATAセクションとかそーゆー話?
0917デフォルトの名無しさん
2005/08/24(水) 18:17:110918デフォルトの名無しさん
2005/08/24(水) 18:26:58なるほど、 CGI::escapeHTML とかでも十分そうですね。
そういえばと思って rss/utils.rb を見てみたら、同じようにやってますね。
0919デフォルトの名無しさん
2005/08/24(水) 22:49:08先日 Exuberant Ctags を試したのですが、いまひとつでした。
Ruby と相性の良いものがあれば、ご教示ください。
0920デフォルトの名無しさん
2005/08/25(木) 11:08:21「Perlの$_を流用したのは失敗だった。」
と言う記述を見かけたのですが、$_の何がまずいのでしょうか?
0921920
2005/08/25(木) 11:29:37スラッシュドット ジャパン | まつもとゆきひろ 答える
http://slashdot.jp/article.pl?sid=03/03/14/0258247&topic=86
>Larryはずっと昔から私の尊敬する人物のトップ10には入っていて、
>彼がRubyについて知っているというだけで感激モノです。
>また、Rubyのローカル変数のスコープの点に気がついた彼はやっ
>ぱりとても鋭い人だと思います(古今最高のルネッサンス人かどうか
>は別として)。私自身もこれはRubyの最大の欠点だと思っていて、
>機会があれば直したいと思っているので。
これ↑は>>920の質問と関係しているのでしょうか?
それともまた違う欠点でしょうか?
0922デフォルトの名無しさん
2005/08/25(木) 14:04:07暗黙の引数かつ戻り値なとこ。
>>921はまた別の話。
0923920
2005/08/25(木) 15:28:16レスありがとうございます。
要するに変数が表に出てこないためソースが読みにくくなるという意味でとらえていいのでしょうか?
>>921の質問は、色々とググって推測しました。
Perlでは局所変数は、myとlocalできちんと宣言するけれども、Rubyではそれがないから
ソースの可読性が落ちるということでしょうか?
my 宣言とレキシカル (lexical) 変数
http://sonic64.hp.infoseek.co.jp/2002-11-01.html
0924デフォルトの名無しさん
2005/08/25(木) 16:24:27これも参考にどうぞ
ttp://www.rubyist.net/~matz/20031121.html#p02 ← 失敗したと思ってる点
ttp://www.rubyist.net/~matz/20050309.html#p03 ← Ruby 2.0 の仕様
0925デフォルトの名無しさん
2005/08/25(木) 16:29:15可読性が落ちるから美しくないのは分かるけど、
ワンライナーや短いフィルタだと重宝する時もあるから、廃止はつらい。
ライブラリになって、ワンライナーで毎回 -rxxx って指定するのも面倒っちゃ面倒だけど。
0927デフォルトの名無しさん
2005/08/26(金) 00:19:26ライブラリに括り出すってのはどういうことをイメージしてる?
メソッドスコープからスレッドローカルのグローバルにして、
あとは勝手にアクセスさせるって話?
0928デフォルトの名無しさん
2005/08/26(金) 07:06:39VRTextやTRTreeviewにテキストを直接渡しただけでは文字化けしてしまいます
VRRichedit なら文字コードを自動判別してくれるようなのですが
Richedit以外のフォームでUTF-8の表示を行うにはどうすればいいのでしょうか?
0929デフォルトの名無しさん
2005/08/26(金) 08:20:33NKF.nkf("-Ws", str)
0930デフォルトの名無しさん
2005/08/26(金) 15:23:42日本語とアクセント記号付きの英字を同時表示させたいので
できればUTF-8のままで扱いたいんです
0931デフォルトの名無しさん
2005/08/26(金) 16:17:56じゃあUCS2に変換してから渡せば?
NKF.nkf("-Ww16L", str)
0932925
2005/08/26(金) 18:16:14スマン。$_ がメソッドスコープってこと知らなかったよ。
要は Regexp.last_match 関連($&, $1, ...)と同じ扱いなわけね。
そう考えると、別に $_ もそんなに悪くない気がしてきた。
(ユーザじゃなくて)Ruby を実装する側は
Regexp のマッチ → 本質的には一個のメソッド → 管理が楽
gets や readline → いろんなところで → 管理が大変
という違いがあるのかな?(StringIO#gets でも $_ は変更されるみたいだし)
0933デフォルトの名無しさん
2005/08/26(金) 19:19:300934デフォルトの名無しさん
2005/08/26(金) 20:26:020935デフォルトの名無しさん
2005/08/26(金) 21:44:05標準で、もちっとまからんかのぅ
0936デフォルトの名無しさん
2005/08/26(金) 22:32:51if (match = str.match(/re/)) ...
みたいに MatchData オブジェクトが返ってくるからいいけど、
gsub なんかだと Regexp.last_match 経由しかないもんな。
0937デフォルトの名無しさん
2005/08/27(土) 00:10:07あと困るのがwhenでマッチさせたときだな。
0938デフォルトの名無しさん
2005/08/27(土) 00:14:52MatchData#to_str を実装すれば過去のコードも救え……ないわな。やっぱナシか。
0939微妙に初質スレじゃなくなってるが
2005/08/27(土) 01:29:52みたいのは救えない。
逆にこれを救ってしまうと変える意味がなくなってしまう。
0940928
2005/08/27(土) 04:13:05utf-16の出力オプションをすべて試してみたんですが文字化けしてしまいます
ruby のバージョンは1.8.2(cygwin)です。
とりあえず特殊英字を使わなければsjisで表示ができるので今回はこれで我慢することにします
ありがとうございました。m(_ _)ノシ
0941デフォルトの名無しさん
2005/08/27(土) 20:40:14Programming Ruby: The Pragmatic Programmers' Guide, Second Edition
http://www.amazon.com/exec/obidos/tg/detail/-/0974514055/102-5531784-5437727
0942デフォルトの名無しさん
2005/08/27(土) 21:17:10Matz が UNIX USER 9月号で、
「邦訳が予定されている」と書いている。
0943デフォルトの名無しさん
2005/08/27(土) 21:24:22サンクス。
0944デフォルトの名無しさん
2005/08/27(土) 23:39:551.8 対応のお薦めのリファレンス本みたいなのってあります?
0945デフォルトの名無しさん
2005/08/28(日) 08:24:06htmlマニュアルを自分で印刷。
0946デフォルトの名無しさん
2005/08/28(日) 12:07:47Wiki
0947デフォルトの名無しさん
2005/08/28(日) 20:50:180948デフォルトの名無しさん
2005/08/28(日) 22:13:440949デフォルトの名無しさん
2005/08/28(日) 23:24:01原著も買う→原著の表紙を切り取って(or カラーコピー……これは著作権法の許容範囲……だよね? )
訳書にノリでペタリ→ウマー
0950デフォルトの名無しさん
2005/08/29(月) 08:59:59「自分」が「他者に対して」何かする時は、気をつけるべきだけれども。
0951デフォルトの名無しさん
2005/08/29(月) 20:44:45class B
end
end
とするのと
class A::B
end
とするのって何か違いがあるんでしょうか?
0952デフォルトの名無しさん
2005/08/29(月) 21:07:210953デフォルトの名無しさん
2005/08/29(月) 21:39:52class A
end
class A::B
end
0954デフォルトの名無しさん
2005/08/29(月) 21:48:34>>953はModule Aが既に存在していればエラー。
0955デフォルトの名無しさん
2005/08/29(月) 21:49:400956デフォルトの名無しさん
2005/08/29(月) 23:01:300957デフォルトの名無しさん
2005/08/29(月) 23:03:40最初からA、A::Bの構成が決まってれば前者。
とか云ってみるテスト。
0958デフォルトの名無しさん
2005/08/29(月) 23:12:02ちょっと原著第2版をめくってみた。
Unitテスト, irb, RDoc, RubyGems あたりの記述がある程度しっかりなされてる感じ。
あと、WEBrickやSOAP、System Hookなんかについてちょろちょろと加筆してある。
組み込みクラスのリファレンスは1.8で追加されたものもしっかり網羅されていていいね。
ただ、標準ライブラリは簡単な例の記述にとどまっているので、過度の期待は禁物。
とはいえ、比較的新しい内容もここまでコンパクトに収まってるのはすごいけど。
翻訳を待つかどうかはともかく、リファレンスになるようなRuby本って最近少ないから、
買い換えても損はないかも。
0959デフォルトの名無しさん
2005/08/30(火) 02:46:03標準添付のライブラリに関して。
0960デフォルトの名無しさん
2005/08/30(火) 03:08:090961デフォルトの名無しさん
2005/08/30(火) 08:14:13「Ruby-DBウェブデザイン」という本はAmazonでものすごく酷評されてましたので避けるとして、
「基礎から学ぶWebデータベースプログラミング」という本は評価が特にありませんでした。
後者の方に関しての感想をお持ちの方や他にお薦めの本があれば教えてください。
0962デフォルトの名無しさん
2005/08/30(火) 08:20:40今からやるんだったら、ウェブ上で Rails を勉強するのが一番早い。
それ以外で勉強しても、結局 Rails に置き直したくなるだろうし。
0963デフォルトの名無しさん
2005/08/30(火) 09:06:56読んでさっぱりわからないのですが、難しくはありませんか?
わかりやすい説明をしているサイトや本があれば知りたいのですが。
一応頑張ってみようとは思いますが、難しそうなのでできるかどうかわかりません。
他にお薦めの本などがありましたら引き続きお願いします。
色々検討してみたいと思っています。
0964デフォルトの名無しさん
2005/08/30(火) 09:20:53Agile Web Development With Rails: A Pragmatic Guide
http://www.amazon.co.jp/exec/obidos/ASIN/097669400X/
0965デフォルトの名無しさん
2005/08/30(火) 09:29:39翻訳予定ありますか?日本語でなら是非とも読んでみたいです。
0966デフォルトの名無しさん
2005/08/30(火) 09:33:06出る予定らしいぞ。いつになるかは知らん。
0967デフォルトの名無しさん
2005/08/30(火) 09:40:38そうですか。早く出ればいいのですが。
0968デフォルトの名無しさん
2005/08/30(火) 09:40:41alexandriaをFC4にインストールしました。
日本語の本のISBNをいれると、本の題名が化けます。
コードは、ja-JP.UTF-8になっているので、メニューは日本語になります。
どこを直せば、日本語の書名が出るのでしょうか。
0969デフォルトの名無しさん
2005/08/30(火) 10:40:20でも、Ruby製とはいえソフト固有の問題をここで質問するのはどうなんだろ……
ttp://rubyforge.org/tracker/index.php?func=detail&aid=2030&group_id=205&atid=863
ttp://arika.org/diary/20040613#p02
0970デフォルトの名無しさん
2005/08/30(火) 11:47:43Apache/1.3.26
ユーザを登録した場合、ApacheのDocumentRoot "/var/www/html/"に"/var/www/html/user/ユーザ名"という感じでユーザ名でディレクトリを作成したいのですが、
Apacheのerror.logに
mkdir: cannot create directory `/var/www/html/user/ユーザ名: Permission denied
とでます。
これはどう権限を変更すればいいのでしょうか?
ちなみに、このディレクトリを作成するコマンドはクラスとして、rubyのライブラリ保存ディレクトリに保存しています。
(/var/www/html/に保存しても、結果は同じです。)
ディレクトリを作成するRubyのコードは
ttp://www.openspc2.org/reibun/Ruby/unix/001/
を参考にしました。
0971デフォルトの名無しさん
2005/08/30(火) 12:15:43まず、CGIを実行しているユーザーを特定しましょう。
OSや設定によって違うけれども、www とか nobody とか、apache とかが多い。
SuExec で、他のユーザーになっているかもしれないけど。
それから、そのユーザーで /var/www/html/user に書き込みが出来るか(ディレクトリが作れるか)
調べてみましょう。
0972デフォルトの名無しさん
2005/08/30(火) 12:22:19あぁ!そうでした!(;´Д`)すいません。
ユーザ名とグループ名のnobodyが思い出せませんでした。ご迷惑おかけしましたm(_ _"m)ペコリ
0973デフォルトの名無しさん
2005/08/30(火) 12:46:14まあ、あなたのレベルに拠るからね。
「さっぱり分からない」のは、ruby が分からんのか、CGIの仕組みが分からんのか、
Railsの仕組みが分からんのか、それにも拠るからね。
0974951
2005/08/30(火) 13:18:18ええと、やりたいことは、
class A
class B
class C
...
end
end
end
というコードがあるのですが、インデントが深すぎコードが見づらく書きづらいので、
class A
class B
end
end
class A::B::C
...
end
と書き換えようと思ったのですが、
このような書き換えを行うと何か副作用が生じたりするでしょうか?
何か思わぬ落し穴や注意すべき点などあれば教えてください。
0975デフォルトの名無しさん
2005/08/30(火) 13:59:34なんでそんなにクラスを入れ子にするのよ?
0976デフォルトの名無しさん
2005/08/30(火) 14:02:26どっかで継承関係を忘れたりしてなければ問題ない。
0977951
2005/08/30(火) 14:03:40具体的に言うと、弊社の名前、部署の名前、プロジェクト名などを付けています。
Company::Division::Project::Klass みたいな。
0979951
2005/08/30(火) 17:04:51class A
B = 1
class C
def b
B
end
end
end
p A::C::new.b
を、先述のように、
class A::C; def b; B; end; end
のように書き直すと NameError になりますね。
class A::C; def b; A::B; end; end
のようにしないとダメなようです。
このあたり、リファレンスマニュアルを見てもいまいちピンとこないのですが、
定数参照は、モジュールの階層を検索していっているのではなくて、
モジュール定義のネストを検索しているということでしょうか?
0980デフォルトの名無しさん
2005/08/30(火) 19:42:59Javaのパッケージの影響か。。。
名前空間のためだけならモジュール使えば?
'#{弊社の名前}_#{部署の名前}_#{プロジェクト名}' みたいにでもして。
0981デフォルトの名無しさん
2005/08/30(火) 19:47:51お前んとこは社内でプロジェクト名がかぶるのか。
組織変更とかあったら大変だな。
0982デフォルトの名無しさん
2005/08/30(火) 20:26:240983デフォルトの名無しさん
2005/08/30(火) 21:58:420984951
2005/08/30(火) 22:15:03社名・部署名を使うかどうかはともかくとして、
モジュールの階層をカテゴリで分類して名前空間の衝突を避ける、
というのは一般的ではないということでしょうかね。
標準添付ライブラリなどでもそういう例がいくつかあるように思うのですが。
いずれにせよ、ここでこれ以上聞いても満足な回答が得られそうにないので、
このへんにしたいと思います。
0985デフォルトの名無しさん
2005/08/30(火) 23:25:26いや、社名・部署名を使うことが問題だって言ってるのに、ともかくとされても。
0986デフォルトの名無しさん
2005/08/31(水) 00:37:490987デフォルトの名無しさん
2005/08/31(水) 01:36:330988デフォルトの名無しさん
2005/08/31(水) 03:34:160989デフォルトの名無しさん
2005/08/31(水) 03:35:430990デフォルトの名無しさん
2005/08/31(水) 04:46:450991デフォルトの名無しさん
2005/08/31(水) 05:04:44起動って……何のよ? Ruby か?
Windows(NT系) なら "ファイル名を指定して実行" → cmd [OK] して以下をやってみる。
C:\...> ruby --version
C:\...> ruby -e 'puts "Hello, World!"'
既に Ruby スクリプトを書いたのなら、
そのスクリプト(例えばファイル名 sample.rb)があるディレクトリで以下をやってみる。
C:\...> ruby sample.rb
インタプリタなんだから、スクリプトと組み合わせる。
DOS が分からないのなら、まずそこから学習しなきゃならんのかも。
開発環境などによっては、不要かもしれない。
Windows のやつは、ダブルクリックで実行できる様になってたのもあった気がするが。
0992デフォルトの名無しさん
2005/08/31(水) 05:32:54レスありです
ところで迷惑ついでに教えて欲しいんですが
日本産ルビーと外国産ルビーってなんかしら関係あるんですか?
どっちが先?
0993デフォルトの名無しさん
2005/08/31(水) 06:04:58ttp://www.rubyist.net/~matz/
日本産も外国産もないと思うよ。同一。
基本的には、作者が日本人という関係で、
まず日本で普及して、海外にも普及してったという流れかと。
最近では、海外の方が勢いがありそうだけど。
0994デフォルトの名無しさん
2005/08/31(水) 06:15:480995デフォルトの名無しさん
2005/08/31(水) 06:18:37【Agile】Ruby on rails相談所【DRY】
http://pc8.2ch.net/test/read.cgi/php/1118663500/
0996デフォルトの名無しさん
2005/08/31(水) 07:21:07外国産というとミャンマーのが有名だな。
0997デフォルトの名無しさん
2005/08/31(水) 07:22:490998デフォルトの名無しさん
2005/08/31(水) 08:11:12Rubyはわかってると思います。
CGIの仕組みはおぼろげながらもわかってると思います。
Railsの仕組みがさっぱりわかりません。
あとデータベース関係が初歩的な事しかわかりません。
0999デフォルトの名無しさん
2005/08/31(水) 12:23:26じゃあ、Rails は、
データベースの情報を元にビュー(テンプレート)やコントローラー、
モデル用のスクリプトを適当に自動生成して運用する
というのはオッケイ?
「ビュー」「コントローラー」「モデル」で引っかかるの?
1000デフォルトの名無しさん
2005/08/31(水) 15:47:04そこらへんがやっと理解できてきました。
と言っても、実はWEB+DB PRESS vol.28という本を買ってきました。
丁度Ruby on Railsの特集記事があって丁度そういうような事が書いてありますね。
面白そうです。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。