トップページ⇒tech
1001コメント292KB

Ruby について Part 3

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。

Ruby Home Page
http://www.ruby-lang.org/ja/

<前スレ>
Rubyについて Part 2
http://pc3.2ch.net/test/read.cgi/tech/1028906179/

<過去スレ>
Rubyについて
http://pc3.2ch.net/test/read.cgi/tech/1012096319/
0053デフォルトの名無しさんNGNG
>>52
なわけねーだろ。
ネット初心者がこーゆーとこに来るのは、どうかと思うぞ。
0054デフォルトの名無しさんNGNG
吉と出るか凶と出るか
0055デフォルトの名無しさんNGNG
レスありがとう。
俺素人だからよくわからないが
アク禁にしないのは何か理由るのかな・・?
0056名無しrubyistNGNG
荒らしと見分けるために、名前欄に何か入れるようにしない?

>>45
ガイシュツだったような気がする。

つか、WideStudioって結構使われているの?
使いやすい?
005745NGNG
今検索したら、前スレ666で既出でしたね。
すみませぬ。

#これ荒らしなの? 2chがイカレタのかと思ってた。
0058case 名無し:NGNG
http://pc3.2ch.net/test/read.cgi/tech/1040297337/110
> 荒らしというより、スクリプトのバグでは?IP実験を始めた途端に他のスレの
> 書き込みがPC板全般に流れてきてるみたい。
という噂が。
0059名無しrubyistNGNG
>>57
うん、荒らしらしい。
詳しくは自治スレ見るとわかるよ。

プログラム板自治スレッド
http://pc3.2ch.net/test/read.cgi/tech/1029122103/
0060デフォルトの名無しさんNGNG
昨日、ruby-talkに登録してみたら、本日分だけで70通以上来てびびった。
これと比較するとruby-listはおとなしめだな。

興味を持った話題。
Win32Serial Extension Library for Ruby
WindowsのシリアルポートをRubyで使うライブラリ。
ttp://grub.ath.cx/win32serial/

Rubyで制御とかできるのかな。
0061デフォルトの名無しさんNGNG
だれかに突っ込むの手伝ってくだいよぉ
0062デフォルトの名無しさんNGNG

実質的には上告はもう無理らしい。

うれしいなぁ。


0063デフォルトの名無しさんNGNG
>>56
徹底できるわけがないから無駄なことやめて unix 板へでも逝け。
ここはもう人いないよ。
0064名無しrubyistNGNG
>>63
それもそうだな。
俺、窓使いだけどおじゃまさせてもらいます。
0065デフォルトの名無しさんNGNG
あーっはっは!
久しぶりに笑ったよ!
0066デフォルトの名無しさんNGNG
公開トリップ?そんな魅力も何にもないトリップなんて
わざわざ使う人いないと思うけど…
どこで公開されてるの?そんな糞トリップ公開されてもねぇ
同じ人が串でも使っているんじゃ?
0067デフォルトの名無しさんNGNG
お疲れさまでした〜
0068山崎渉NGNG
(^^)
0069irbについてNGNG
irbを電卓代わりに使いたいのですが
自前のモジュール(関数郡)を組み込んだり
一度プロセスを終了しても変数の値を保存しておいたりすることはできますか?
0070デフォルトの名無しさんNGNG
1. 普通に require すればいい
2. Marshal や PStore
0071山崎渉NGNG
(^^)
0072irbについて NGNG
>2. Marshal や PStore
使った変数すべてを自動的に保存復旧したいのです。
a=3
exit
再起動
p a
3
みたいに。
0073デフォルトの名無しさんNGNG
>>72
irb で打ち込んだのを全て保存しておいて、
起動時に読ませるようにすれば?
0074デフォルトの名無しさんNGNG
>>72
irb を終了させなければいいのでは?
0075デフォルトの名無しさんNGNG
>>72
local_variables()を使えばいけそう。
と思ったが、ローカル変数だと、ちいと辛いな・・
bindingでうまくいかないかな?

ちと、やってみます。
007675NGNG
require 'pstore'

class VarsStore
  def initialize(storefile)
    @store = PStore.new(storefile)
  end
  
  def save(bind)
    hash = {}
    eval("local_variables", bind).each do |name|
      val = eval("#{name}", bind)
      if val.equal?(self)
        next
      end
      hash[name] = val
    end
    @store.transaction do
      @store["local"] = hash
    end
  end

-----
つづく
007775NGNG
つづき
-----

  def load(bind)
    hash = nil
    @store.transaction do
      hash = @store["local"]
    end
    hash.each do |key, val|
      $varsstore_val = val
      eval("#{key} = $varsstore_val", bind)
    end
  end
end
007875NGNG
requireして、
セーブ
VarsStore.new("hoge").save(binding)
ロード
VarsStore.new("hoge").load(binding)

とする、今のところBindingを指定しないとだめ。
ローカル変数にダンプできないオブジェがあるとエラーを吐く。
保存できるクラスは限定させた方がいいかな?(NumericかStringのみとか、、、)
あとは、適当に改造してみてね。>>72
0079デフォルトの名無しさんNGNG
Win32APIを使う必要が出てきたのですが、
Win32API.new に関するリファレンスは
どっかに転がってないでしょうか?
0080デフォルトの名無しさんNGNG
>>79
ほれ。
http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=Win32API
0081デフォルトの名無しさんNGNG
http://www.ruby-lang.org/~rubikitch/refm/
ここのページのファイルって拡張子が.gzだけど、どうして?
(ダウソして中身みてみたらアーカイブになってなかったけど)
0082デフォルトの名無しさんNGNG
>>81
君がダウンロード時に自動的にgzip展開するブラウザを使ってるんだろう。
0083デフォルトの名無しさんNGNG
>>81
http://www.ruby-lang.org/ の設定がヘボいから。
0084デフォルトの名無しさんNGNG
RubyUnit の Ruby 標準添付バージョン Test::Unit では、
サンプルコードとして以下のようなものが添付されてます。

-- tc_adder.rb

class class TC_Adder < Test::Unit::TestCase
..

--

ファイル名、クラス名なんですけども、もはや
ファイル名の頭に「tc_」、クラス名の頭に「TC_」っていうのは、
業界標準なんでしょうか。
0085デフォルトの名無しさんNGNG
ruby-modeでC-jをenterでできるようにしたいのですが、.emacsにどのような設定をすれば
よいのでしょうか。
0086デフォルトの名無しさんNGNG
>>84
TestCaseの略では。
0087デフォルトの名無しさんNGNG
C-m
0088デフォルトの名無しさんNGNG
>>84
漏れは RubyUnit(runit) の表記の方が好き。
Adder -> AdderTest のように suffix をつける。
0089デフォルトの名無しさんNGNG
>>84
Adder -> TestAdderって付ける漏れは標準でないのか…。
そして、ファイル名はtestadder.rbだし。

ファイル名とクラス名を同じにするのは普通なんじゃないの?
それとも漏れがJavaなんかやっている所為でそれになれているから?
0090デフォルトの名無しさんNGNG
ちゅうか、RubyUnit じゃなくて Test::Unit をRuby の標準添付ライブラリに採用するっていうのが
どうにも違和感がある。RubyUnit からの移行は、Ruby の動的な言語仕様のおかげで、移行のための
コードもそんなに書かなくて済むけど(今後、XML::Dom だの出てくるだろう)ちょっとな。

(メソッド名でも assert_equals, assert_equal という違いがある なんで統一しない? < Test::Unit)

今更、Rubyにライブラリのネーミング規則云々っていうのは似合わないような気がしてる。
0091デフォルトの名無しさんNGNG
eaocf-18p157.ppp15.odn.ne.jp
0092デフォルトの名無しさんNGNG
Rubyって最近、すごい分野の狭い話題で1冊の本になってるのが多いですよね。
Ruby+GtkとかeRubyとかRuby+XMLとか…
あんなんでよく本が1冊も書けるなあ、っていうか、買う人いるの?
他の言語の開発者だったら、あんなの1冊ずつ買ってたら絶対置き場所なくなる。
0093デフォルトの名無しさんNGNG
>>92
そっか? Amazonで、Javaあたりで検索すれば、Swingで、Appletで、DBで、XMLで、
Webサービスで、……という具合なんだが。アプリケーションドメイン毎に本が出る
のは当然じゃないだろか?
0094デフォルトの名無しさんNGNG
>>92
入門書だけで10冊や20冊ぐらいある言語を見ると、
そっちの方がある意味おかしくないかい?

まあ、256本のやつは確かに異常だけどさ…。
でも、極道編は俺にとって面白かったぞ。
UnitTestの入門書としては。
0095デフォルトの名無しさんNGNG
www.ruby-lang.orgもやっと最近流行のWeblog風になりましたけど、なんだかまだ
寂しげですね。素直にZope使ってはいかがですか?
0096デフォルトの名無しさんNGNG
確かに他の言語と比べたらアート的な部分に関して(RWiki といい)今ひとつモダンな感じがしないね。
0097デフォルトの名無しさんNGNG
そーだね。Ruby界隈はカタい雰囲気ある。
HTMLはStrictじゃないと許さん、みたいな。
0098デフォルトの名無しさんNGNG
オンラインでリファレンスを見てると、たまにやたらと重いときがあるんで、
ローカルで見るようにしよと思ってドキュメントをダウソして解凍してみたら
形式がRDでやんの。
HTMLの形式でも配ってくれればいいのに。

HTMLのやつもあったけど、リンク切れがあちこちにあるし、
ひとつのファイルに連結されてるからIEじゃ重くて使いにくいし。
0099Rubist@田中ノーベル賞NGNG
そんなチミにはミラーサイトをお勧めする

http://www.vsl.gifu-u.ac.jp/freeman/misc/ruby-docs-1.6.7/refm-ja/
0100デフォルトの名無しさんNGNG
オブジェクト指向原理主義、オープンソース界のアルカイーダ
HTMLはStrictにしる!ドキュメントはRDにしる!!
Windows、Mac OSは消去してLinux/BSDにしる!

スローガン:
 欲 し が り ま せ ん 勝 つ ま で は
0101デフォルトの名無しさんNGNG
rd2 で HTML に変換すれば?
0102Rubist@カラアゲNGNG
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
んこんこんこんこんこんこんこんこんこんこんこんこんこんんこんこんこ
0103Rubist@カラアゲNGNG
>97
俺のようなマイルドな奴もいるぜ、ヒヒヒ。。
010498NGNG
http://www7.tok2.com/home/misc/ruby.html
よくさがしてみたら、Windows版のHTML Helpってのがあった。
0105デフォルトの名無しさんNGNG
>103
ごめん, 厨のこと忘れてた。
0106デフォルトの名無しさんNGNG

美的感覚といえば、Ruby はインデントの主流が2なのもどうかと思う。
正直見づらい。

(RDフォーマットは賛美両論ありながらも、俺は気に入ってる)
0107デフォルトの名無しさんNGNG
>>106
賛否、だろ。
賛美なら一論。
0108デフォルトの名無しさんNGNG
>>106
何の言語でもインデント 2 で書きますが何か?
…趣味で作るやつは、だけど。
0109デフォルトの名無しさんNGNG
>>108
原理主義者だから、GNUスタイルのインデント 2なのね。
0110デフォルトの名無しさんNGNG
ruby は2がしっくりくるなぁ
C あたりは4
0111デフォルトの名無しさんNGNG
文字列にある文字列が含まれてるか判断するのに正規表現より
index()を使ったほうが速いだろうと思っていて、いままで全部index()
を使ってきたけど、念のために速さを調べてみたら正規表現のほうが
速かった。
ちょっとショック。

if str.index('hoge') ...

if str =~ /hoge/ ... # こっちのほうが速い
0112デフォルトの名無しさんNGNG
>>109

あれ、linux カーネルは tab の 8 で書かれてなかったっけ。
0113デフォルトの名無しさんNGNG
インデントにスペース使う奴はドキュソ
0114デフォルトの名無しさんNGNG
オレはスペース派。
違う環境に持っていってもインデントが崩れないのが好き。
0115デフォルトの名無しさんNGNG
>>111
え?ほんとう?
0116デフォルトの名無しさんNGNG
>>111
String#indexをBM searchでも使って書き直して送るべし。

0117デフォルトの名無しさんNGNG
>>115
調べなおしてみたら、文字列が短いときとか最初のほうでマッチするとき
は、index()のほうが速かった。
0118デフォルトの名無しさんNGNG
if text.upcase == 'HOGEHOGE'
if text =~ /^hogehoge$/i

大文字小文字無視して等しいか調べるときも、正規表現が速かった。
1.7ではcasecmpというのがあるみたいだけど、入れるのが面倒だから
調べられない。
0119名無しさんNGNG
http://i.loveruby.net/ja/ruby/codingstyle.html
にrubyのコーディングスタイルについての文章がある。
俺も3スペースインデントしてたけど、最近は2スペースだな。

ま、どんな言語でもその標準ライブラリが何で書かれてるかに
従ったほうがいいと思う。あんまり変なスタイルだと、それだけ
で気も悪がられる気がする。
だからCで外部モジュール書くときもついK&Rで書いてしまう。
0120デフォルトの名無しさんNGNG
2スペースだと、年とってから苦労しますよ。4ぐらいにしときなさい。
0121デフォルトの名無しさんNGNG
普段、抽象化抽象化と煩い奴に限って、
インデントをタブ文字で抽象化しないのは何故だ?
0122デフォルトの名無しさんNGNG
環境依存だからです。
0123デフォルトの名無しさんNGNG
スクリプト言語でタブインデントする根拠は希薄
0124デフォルトの名無しさんNGNG
スクリプト言語でオブジェクト指向する根拠は希薄
0125デフォルトの名無しさんNGNG
動的オブジェクト指向は書き捨てでも役に立つぞ
0126Rubist@カラアゲマイルドNGNG
Rubyyyy>>>>>>>>>>>>>>>perl.
HTML>>>>>>>>>>>>>>>>>>rd
0127デフォルトの名無しさんNGNG
http://mapbrowse.gsi.go.jp/mapsearch.html
で検索できる地形図から2.5万、5万、20万の地形図を合成
して作ろうと思っています。
例えば、5339は東京(20万分1地勢図)で、
5339??(??は00〜77)が東京(1/20万地勢)に含まれる1/2.5万地形図で、計64枚あります。
(メッシュコードの概念はhttp://www.biodic.go.jp/kiso/col_mesh.html参照)
Web上からは以下で落とせます。
for j in {1..4}
  do
    for i in {00..77} 
      do 
        wget -q "http://mapbrowse.gsi.go.jp/mapimagef25k/5339/5339${i}${j}.png"
      done
  done
このpng画像は1/2.5万地形図を約*4分割したもので、
1→南西、2→南東、3→北西、4→北東となっていて、4枚合わせて2.5万になります。
(*:実は少しダブって分割されています。)
0128デフォルトの名無しさんNGNG
一気に合成する方法として、例えば、ImageMagick の
% convert -crop (ca)x(db)+a+b orange.gif blue.gif
の機能を使って、
png画像→1/2.5万
1/2.5万→1/5万
1/2.5万→1/20万
1/5万→1/20万
とする方法が考えられます。
この変換スクリプト、誰か書いてくださいませんでしょうか。
僕にはそこまでできません。

す み ま せ ん が 誰 か 助 け て く だ さ い 。




0129デフォルトの名無しさんNGNG
winのmutexみたいに、プロセスをまたいで排他処理を行う方法は
rubyには無いのでしょうか?

(flockくらいしか方法は無いのでしょうか?)
0130127NGNG
メッシュコードの概念は
http://nlftp.mlit.go.jp/ksj/mesh.html
の方がわかりやすいかも。

% convert -crop
を使うのは2.5万の4分割がダブっているからです。
きれいに分割できればあとはタイルのようにくっつけるだけですが
僕にはできませんでした‥‥‥










0131デフォルトの名無しさんNGNG
>>111でindex()より正規表現が速いって書いたものです。

↓このように書いてたものを
while true
text.index('hoge')
end

↓このように書き直してみたら、正規表現とほぼ同じ速さになりました。
t = hoge
while true
text.index(t)
end

リテラルがあると遅くなるのかなぁ?
0132デフォルトの名無しさんNGNG
>>129
http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=Mutex
これでいいか?thread.rbにあるので、
require 'thread'
して、使ってね。
0133デフォルトの名無しさんNGNG
>>132
それはプロセス内でしか使えないのでは?
0134デフォルトの名無しさんNGNG
>>129
RAAで、semaphoreとかSysV IPCとか入れて探してみれば。

0135デフォルトの名無しさんNGNG
>>133
あ、勘違いスマソ。
プロセス間ね、スレッド間だと思っていた。
0136デフォルトの名無しさんNGNG
勘違いばかりなので責任感じて…

>>134さんが言っているのはたぶん、
http://www.ruby-lang.org/raa/list.rhtml?name=sysvipc
これのことでしょ。
でもプラットフォームによっては使えなさそう…。

flockもプラットフォームによるので、、まあ、UNIX系なら問題ないか。
つか、簡単に使えるのがあったら、CGIがめちゃくちゃ楽になるな〜。
0137デフォルトの名無しさんNGNG
>> 131
> リテラルがあると遅くなるのかなぁ?

構文解析結果のノードの中の文字列をそのまま使用できないので、
毎回、'hoge'文字列のコピーが行われます。
変数を使用する場合は、その変数の値の文字列が
そのまま使用されます。
0138山崎渉NGNG
(^^)
0139デフォルトの名無しさんNGNG
>>137
> 構文解析結果のノードの中の文字列をそのまま使用できないので、
> 毎回、'hoge'文字列のコピーが行われます。

補足すると、文字列自体はStringオブジェクトの間で共有されるので、
文字列のコピーというよりは、Stringオブジェクトのコピーが
毎回行われるということです。
0140デフォルトの名無しさんNGNG
arr.each{|i|...}
の|i|を省略可能にしてくれ。
0141デフォルトの名無しさんNGNG
その場合決め打ちで i になるわけ? そんなのヤだ。
0142デフォルトの名無しさんNGNG
文字列linesをファイルに書き出したいのですが
もっと簡潔に書けないでしょうか?
open("log", "w"){|f|
lines.each{|s|
f.puts s
}
}
0143デフォルトの名無しさんNGNG
>>142
f.puts lines.join("\n")
0144デフォルトの名無しさんNGNG
★http://jsweb.muvc.net/index.html★
 ★こんなサイト見つけました★
0145デフォルトの名無しさんNGNG
>>144 ブラクラ
0146デフォルトの名無しさんNGNG
>>143
joinはいらないのでは?

f.puts lines
0147デフォルトの名無しさんNGNG
IO.popenで起動したプロセスが終了したのを認識するのってどうすればいいんでしょうか?
厨な質問でスマソ
0148デフォルトの名無しさんNGNG
>>147
読み込みならそれが終わるまででいいんでないの。
書き出しなら先に終了されたらエラーになるでそ。

どうしてもやりたきゃ pid をとって waitpid。

0149デフォルトの名無しさんNGNG
http://www.ruby-lang.org/ja/man-1.6/?cmd=view;name=Process
0150デフォルトの名無しさんNGNG
スレ違いかもしんないですが、
Rubyで実装されたWikiを利用するとしたら、

* Tiki
* asWiki

どちらをオススメしますか? パッと見、似たような感じだけど……。
# RWikiはdaemonが必要だからちょっと敬遠。

amritaを使っているのでaswikiかなあ、とは思っているんですが、
「Tikiのほうがイイってば!」ってなポイントがあれば知りたい。
0151デフォルトの名無しさんNGNG
☆★▼▽▲△●○■□◆◇◇◆□■○●△▲▽▼★☆

今月もお小遣いすくなってきたよ・・・トホホ。
そんなあなたにこのサイト!!あなたのお小遣いを
1円でも多くして見せます!!
損はさせません!!早速アクセスをどうぞ!
↓   ↓   ↓
http://finito-web.com/kanemou/index.html

☆★▼▽▲△●○■□◆◇◇◆□■○●△▲▽▼★☆
0152デフォルトの名無しさんNGNG
>>150
Hikiっていうのもあるよ
http://www.namaraii.com/hiki/
■ このスレッドは過去ログ倉庫に格納されています