[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/09 17:32 / Filesize : 211 KB / Number-of Response : 864
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Ruby 初心者スレッド Part 21



1 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 01:07:21 ]
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

   【Ruby1.9 は不安定な開発版であり初心者には全く向きません】
   【最新安定版の Ruby1.8.7 の使用をお勧めします】
    ※1.8.7 は1.8 と 1.9 の橋渡しをするためのリリースです。
      1.9 の新機能の一部が利用可能なので初学者にお勧めです。
    ※ただし十分安定しているとは言えないので
      プロダクション環境での利用にはお勧めしません。

関連スレやURLは>>2-8あたりを見てください。Ruby on Railsの質問はRailsスレへ。

■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
 ・モジュール名やエラーメッセージでググる
 ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/
 ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・エラーメッセージ(自力で訳さずなるべくそのままで)
 ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

2 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 01:09:14 ]
【よくあるしつもん】
Q:
いちからRubyを始める初心者向けのRuby入門書は何がおすすめでしょうか?

A:
プログラム作成の初心者だったら
「たのしいRuby 第2版 Rubyではじめる気軽なプログラミング」
www.amazon.co.jp/dp/4797336617/

他の言語経験があるんだったら
「プログラミングRuby 第2版 言語編」
www.amazon.co.jp/dp/4274066428/
「初めてのRuby」
www.amazon.co.jp/dp/4873113679

3 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 01:10:11 ]
■前スレ
Ruby 初心者スレッド Part 20
pc11.2ch.net/test/read.cgi/tech/1214498119/

■関連スレ
Rubyについて Part 32
pc11.2ch.net/test/read.cgi/tech/1215531152/

Rubyの宿題教えてください。2限目
pc11.2ch.net/test/read.cgi/tech/1200175247/

RubyCocoa 初心者質問【Leopardバンドル記念】
pc11.2ch.net/test/read.cgi/mac/1193373811/

【ActiveScript】RubyをWindowsで使うスレ【GUI】
pc11.2ch.net/test/read.cgi/tech/1155031689/

Ruby on Rails のスレ が
pc11.2ch.net/test/read.cgi/php/1207425569/

【Ruby】Rails以外のRubyフレームワーク【alt】
pc11.2ch.net/test/read.cgi/php/1216535005/

【Rails】便利なRubyGemsを共有するスレ【Hpricot】
pc11.2ch.net/test/read.cgi/tech/1216829388/

Rubyについて(アンチ専用) Part003
pc11.2ch.net/test/read.cgi/tech/1207233348/

4 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 01:10:46 ]
■公式/非公式関連リンク
Ruby Home Page
www.ruby-lang.org/ja/

Rubyリファレンス(よくサーバーエラーになります)
www.ruby-lang.org/ja/man/
www.ruby-doc.org/ (英語)

リファレンスのHTMLヘルプ版配布
elbereth-hp.hp.infoseek.co.jp/ruby.html
# Windowsで便利

Ruby FAQ
ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ

Programming Ruby - The Pragmatic Programmer's Guide
www.ruby-doc.org/docs/ProgrammingRuby/
# 好評書籍をWebで公開中、ただし英語

逆引きRuby
www.namaraii.com/rubytips/

5 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 01:11:20 ]
RAA - Ruby Application Archive
raa.ruby-lang.org/

RubyForge
www.rubyforge.org/
# Rubyのアプリやライブラリが検索できる

GitHub RubyGems
gems.github.com/
github.com/
# 最近は RubyForge より GitHub が人気

日本Rubyの会 公式Wiki
jp.rubyist.net/
# メニューに表示されていない埋もれた情報ページ多数

Rubyist Magazine - るびま
jp.rubyist.net/magazine/
# コードレビューが好評

Ruby hotlinks 五月雨版(日記やblogのアンテナ)
www.rubyist.net/~kazu/samidare/

Rubyの本一覧
www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Ruby%A4%CB%B4%D8%A4%B9%A4%EB%BD%F1%C0%D2

<rubyXML/>
www.rubyxml.com/

Matzにっき(Ruby作者の日記)
www.rubyist.net/~matz/

6 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 01:12:00 ]
■最近できたWiki
Ruby 初心者スレッド Hiki
starlet.s145.xrea.com/ruby/hiki/

Ruby Portal
ruby.morphball.net/portal/

■プレゼンテーション
Ruby会議2008
jp.rubyist.net/RubyKaigi2008/
www.nicovideo.jp/tag/rubykaigi2008

Ruby会議2007
jp.rubyist.net/RubyKaigi2007/
www.nicovideo.jp/tag/RubyKaigi2007

日本 Ruby カンファレンス 2006
jp.rubyist.net/RubyKaigi2006/
jp.rubyist.net/RubyKaigi2006/videos.html

7 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 01:45:54 ]
>>1

8 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 01:48:45 ]
Ruby>>>>>Java
pc11.2ch.net/test/read.cgi/tech/1158807229/

アラン・ケイも認めた!Ruby>>>>>Smalltalk
pc11.2ch.net/test/read.cgi/tech/1150106090/

Ruby最高や!
pc11.2ch.net/test/read.cgi/tech/1170047838/

【Perl,PHP】LLバトルロワイヤル3【Ruby,Python】
pc11.2ch.net/test/read.cgi/tech/1215319832/

9 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 06:04:20 ]
データベースで言語環境を切り替える特許 
www.j-tokkyo.com/2004/G06F/JP2004-341819.shtml

おれ、この手の切り替え上記特許とほぼか全く同じ方法で10年以上もまえから
ずっとつかってきてるんだけど、特許違反なんのかな。。。
つーか、この程度のアイデアで特許になるってどうかしてんじゃないの??

今やってるRoRプロジェクトでも3ヶ国語対応でつかってんだが。。。

10 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 06:31:07 ]
>>9
それが公知のものであることを証明できれば特許は認められなくなるはず。
ていうか、日本語と思えなくて読む気にならんのだが、これはgettextとは一線
を画すようなものなのか?




11 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 06:58:53 ]
もう出勤だが、、、話あってみるわ。
今やってるPJ、工場のロボット制御なんだが、

物理層(ロボットとか)-シーケンサ-C/C++層-RoR層(インターフェース、DB) ユーザー

なんだが、海外にも出荷してるから、多言語化の部分全部DBのテーブルにいれてるんだよね

12 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 17:02:30 ]
Rubyにはプログラミング言語以上の価値があると思う
pc11.2ch.net/test/read.cgi/php/1217883614/

13 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 22:05:03 ]
トヨタか、手ごわいな…
リスクありそうだから、全部yamlで切り替えするということでおわった。。。
でもファイルにするのやなんだよな。

というか今までリリースしてきたアプリはどうなるんじゃ。

14 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 05:11:46 ]
>>9
こんなの、そこら中のWebアプリで使われてないか?


15 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 15:06:50 ]
質問。クラスを継承カスタマイズするのとクラスの返り値を解析する新クラス作成とどっちが一般的ですか?

ぶっちゃけた話 gem の WWW::Mechanize を使ってます。

 ・ Mechanizeオブジェクトがクッキー覚えたopen-uri的な「Webブラウザ」になる
 ・ ↑のGETの返り値はHpricotでHTML要素が解析され変数に格納されたPageオブジェクト

こんなライブラリです。で、特定のサイト、mixiとかはてなとか、ああいうのに対応させようと思います。

 A. Mechanizeを継承したクラスを作り、サイトに特化した変数を追加したりメソッドかを書き換えたりする
 B. サイトアクセス用クラスを作り、オリジナルクラスに渡す引数や返り値を「手元」で色々いじる

どっちが好ましいというか普通というか妥当でしょうか?

16 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 15:19:25 ]
AがRubyっぽいような気がする
たとえばWWW::Mechanizeを継承したMixi::Mechanizeを作るとかそういうのだろ?

17 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 16:18:59 ]
質問させてください。ruby 1.8.7 (2008-06-20 patchlevel 22) [i386-cygwin]です。
RDEを使っています。

ruby/sdlを使おうと、require 'sdl'したのですが,sdl.soが読み込めないようです。
require 'sdl'だけのスクリプトを実行すると。

/usr/lib/ruby/site_ruby/1.8/i386-cygwin/sdl.so: No such file or directory - /usr/lib/ruby/site_ruby/1.8/i386-cygwin/sdl.so (LoadError)
from /usr/lib/ruby/site_ruby/1.8/sdl.rb:17
from C:/cygwin/bin/rb3EB.tmp:1:in `require'
from C:/cygwin/bin/rb3EB.tmp:1
Complete(1)

とエラーになってしまいました。
sdl.soはC:\cygwin\lib\ruby\site_ruby\1.8\i386-cygwinにあり、
ここのパスが通っていないのかなと試しに、そのディレクトリに
print "test was loaded" だけからなるスクリプト(test.rb)を作成し
別の場所のスクリプトからrequire 'test.rb'を実行したら
問題なく 「test was loaded」と表示されました。
*.soだけが読み込めないようです。

ご教示お願いします。

18 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 18:16:52 ]
>>15
Bだろjk。委譲で済むなら委譲でいいだろ。
継承は最後の武器ってmatzが言ってた。

自分でしか使わない使い捨てスクリプトならAでいいけど。

19 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 19:41:48 ]
>>17
そのエラーはsdl.soが無いと言っているとは限らなくて、
sdl.soをDLLとして読み込む際にエラーが出たときにもそのエラーになるらしいよ。

ttp://pc11.2ch.net/test/read.cgi/tech/1155031689/n356-362

なんとなくSDLのDLLを用意していない、とかがあやしい気がする。


20 名前:17 mailto:sage [2008/08/07(木) 20:44:33 ]
>sdl.soをDLLとして読み込む際にエラーが出たときにもそのエラーになるらしいよ。
まさしくその通りでした

ttp://www.kmc.gr.jp/~ohai/rubysdl.html
によるとsdlはcygwinのrubyからでは使えないとのことでした
詳細はわかりませんが*.soがCygwin用やMinGWy用とで異なるようですね

ttp://www.cs.kyoto-wu.ac.jp/~konami/documents/ruby/sdlinstall.html
ttp://eto.com/d/RubySDLonWindows.html
を見てCygwinで頑張るか
MinGW版Rubyを使うかして解決しようと思います
どうもありがとうございました



21 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 09:04:24 ]
>>15
class HogeSite
 def initialize
  @agent = WWW::Mechanize.new
 end
 def hoge

 end
end

22 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 10:12:41 ]
>>21
module Hatena
class Mechanize < WWW::Mechanize
attr_accessor :username, :password
LOGIN_URI = URI.parse('https://www.hatena.ne.jp/login')
def login
orig_get(LOGIN_URI).forms[0].set_fields('name' => @username, 'password' => @password)
submit(page.forms[0])
end
alias orig_get get
def get(uri,param=[],ref=nil)
login if cookie_jar.empty?(LOGIN_URI)
_get(uri,param,ref)
end

class ConfigPage < ::WWW::Mechanize::Page
# is for d.hatena.ne.jp/+username+/config
def counter
@counter ||= parser.search('div.note').find{|e| /#{'ページビュー'.toeuc}/e =~ e.inner_text}.inner_text.scan(/\d+/).to_s.to_i
end
end
end

とか書けるのって便利っぽくね?
WWW::Mechanizeライブラリがアップデートして中身が大幅工事されたとき涙目だけど

23 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 10:24:00 ]
こういうライブラリを継承して改造するのは、
ライブラリの内部インスタンス変数やマニュアルにないプライベートメソッドと被るのが怖い
しかも下手すれば作成中全然気づかない可能性があって探すのも面倒なのが怖すぎる

うまく動いてるうちは概念的にも明瞭で便利だとは思う
専用ブラウザと専用データページだからね

24 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 10:27:27 ]
継承されることを考慮されてないと、すごくかぶりやすいからね

25 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:00:23 ]
そういうのは継承されることを意識したモジュール作成テクニックを語ってこそ意味があるな

26 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:14:46 ]
×そういうのは継承されることを意識したモジュール作成テクニックを語ってこそ意味があるな
○継承されることを意識したモジュール作成テクニックを教えて下さい

かぶりやすいことに対処するのは、かぶらないような冗長な名前を使います
普通はアンダースコアも使います
@__unkoclass_kusomiso__とかね

27 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:30:01 ]
モジュール名がくっついたインスタンス変数というのは時々使う
例でいうと @hatena_username とか @hatena_counter とか
ライブラリを作る側が死ぬほどめんどくさいのが難点
あと継承した人がちょっと中の変数やメソッド使おうかなと思ったときもめんどくさい

継承元にあるメソッドや変数を上書きしてたら表示する継承警告モードとかあるといいのに


28 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:41:35 ]
WWW::Mechanize には Logger クラスのインスタンスを指定する log というアクセサメソッドがあるんだが
これが agent._mechanize_logger_ だったらきっと誰も使わないだろうな

29 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:43:28 ]
WWW::Mechanizeは継承して使うようなものじゃないでしょ

30 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:43:39 ]
同じクラスに定義されたメソッドが、インスタンスで共有する変数用のsigilがあればいいのに
@.aaa とかとか



31 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:45:19 ]
>>28
名前をかぶらないようにするというのは、内部で使うインスタンス変数やプライベートメソッドのことです

32 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:54:52 ]
ていうか、Rubyのライブラリのシステムは他人が継承して使うようにできてない
(あるいは、バグっても泣かないというポリシーのもとで開放されてる)

継承は自作のクラスを自作のクラスで継承するとかそういうときに使うもんだ

33 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 12:59:49 ]
Rubyで継承を使うのは本当に難しいし、
そのうち仕様が変更される可能性の高い分野でもあるので
それも怖い

34 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 13:24:53 ]
そんなに難しくはないし怖くもないよ
>>32の最後の行が全然徹底されてないってだけだ
Rubyスクリプトとしてのソースが見えないArrayを継承してデカいクラス作るとかマゾにも程がある

35 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 13:29:13 ]
GUIなんか継承が普通ですよ

36 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 15:56:10 ]
Rubyに複数の脆弱性
ttp://www.ruby-lang.org/ja/news/2008/08/08/multiple-vulnerabilities-in-ruby/
> セーフレベルの脆弱性
> WEBrickのDoS脆弱性
> dlの汚染チェックの欠如
> resolv.rbのDNSスプーフィング脆弱性

脆弱性のあるバージョン

・全部

対処法
1.8系列、1.9系列ともにこれを反映した完全な最新版
(1.8.6-p286、1.8.7-p71、1.9のr18424)に変える
今のところ、バイナリ配布を頑張ってる人の反応は特にない

37 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 16:12:31 ]


   ま た セ ー フ レ ベ ル 4 か



38 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 16:54:41 ]
>>15
WWW::Mechanizeの使い方が間違っていると思うんだけど

39 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 17:00:16 ]
>>22
aliasしても使ってなさそうに見えるし、_getって内部メソッドか?
あらかじめloginするってだけならこれだけでよくね?

def get(*)
 login if cookie_jar.empty?(LOGIN_URI)
 super
end


40 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 17:03:27 ]
AもBも間違ってるというならCを提示すべき
てか、Aは確かにライブラリを完全把握したマッチョ向け綱渡りだが、Bってわりと普通じゃね?

時々忘れられてるがここはこれでも一応初心者スレなんで
「自爆して自覚するまで継承の便利さを味わっとけ」
というアドバイスもアリかなと思う
他人から教科書的に言われてもピンと来ないし伸びる余地も無い気がする



41 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 17:08:11 ]
>>39
Mechanize には _get は無いね
alias _get get
だったのを書き損じたとかそんなとこじゃ

42 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 17:11:23 ]
Mechanizeはagentが大域変数ばりに出張ってるとこがあんまり好きじゃない

43 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 21:51:46 ]
delegatorやforwarderの出る幕ではないのか?


44 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 23:36:15 ]
mechanizeで商売してるやつ多過ぎw

45 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 00:37:49 ]
使い道を思いつかない思考の貧困さを恥じるべきだな

46 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 00:39:49 ]
Struct厨に告ぐ
使いこなせると便利っぽい気もするのでハッシュと配列しか使ってない俺を感動させてくださいお願いします

47 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 00:46:51 ]
>>46
便利さだけで言えば、Rubyではハッシュと配列(と俺クラスのインスタンス変数)の組み合わせのほうがおおむねわかりやすくて便利です

無理してまで自分から使えなくてもいいんじゃないかなと思う
データ構造がどうなってるかスクリプトを読めればOK

48 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 01:37:25 ]
Hashに、キーが有限で順序が欲しいなぁと思ったときとか。

あとずらずらattr_accessorが並ぶだけの殆ど構造体みたいなクラスとかは、
1から書かずにStruct使うとか。コードを書かなければ書かないほどバグは減る。

49 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 04:47:43 ]
1.キー名に制約が必要なとき(変なキーを受け付けない)
2.アクセサメソッドだけじゃなくて、添え字(キー、インデクス)でのアクセスがあると便利なとき

だいたいこの2つの条件がそろうとStruct使う。
今までに使ったのは2回くらいだが。

50 名前:デフォルトの名無しさん [2008/08/09(土) 07:03:40 ]
【Ruby/SDL他】Rubyでゲーム制作・総合スレッド
pc11.2ch.net/test/read.cgi/gamedev/1207069887/125-135

Rubyスクリプトを暗号化できないか?という流れがあったのです。
RPGツクールXPではスクリプト個別ファイルを暗号化、
RPGツクールVXではアーカイブにまとめているようなのですが、
これを実現する方法はありませんでしょうか?

requireをフックして書き換えるみたいなことってできるんでしょうか?



51 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 08:26:34 ]
暗号化ってなーに?
エディタで開くと文字化けしてるという意味?

52 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 08:44:19 ]
RGSS固有の話題は元のRubyがほとんど関係ないからツクールスレでやってくれると助かるんだが

RGSSがわからない人にはRGSSスクリプトそのままで問題ないし
RGSSがわかる人にとってはeval系列使って同じ動作させれば何書いてあるかわかるわけだし
どのへんの人を対象にしてるのか謎だ

53 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 09:20:34 ]
ちゃんと嫁

54 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 09:52:43 ]
ん? ツクールと同じことすればいいだけだろ
独自バイナリを読み込めるようなrubyを作って同梱して配布すればいい

55 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 10:53:12 ]
Rubyってスクリプトの難読化は苦手なんだよね
そういう意味ではゲーム製作にはあまり向かないわ

56 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 11:13:13 ]
夜中に作った作成途中のスクリプトの構造が朝起きたらさっぱりわからん

# HERE: ここからつくる

とか再開用定型句が書いてあるのはいいんだが、場所だけじゃなく何をすればいいのかも書いてほしかった昨日の俺
とりあえずなんでもかんでもget_xxxってメソッドにするのやめようぜわけわからんわ

57 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 11:23:15 ]
先にテスト書けとまでは言わないが、コンセプトのメモとか作ってないの?

58 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 11:44:21 ]
また継承云々の話なんだけどさ
個々の画像に関するデータを溜め込んだデータ群を作ろうと思うんだ
ハッシュで用が足りることがわかってるんだ

class Gallery < Hash
def xxxx
# selfをいじるメソッド色々
end
end



class Gallery
def initialize
@data = Hash.new
end
attr_accessor :data
def xxxx
# @dataをいじるメソッド色々
end
end

って、後者のほうがいいのかなあ
いちいち gallery.data でハッシュにアクセスしないといけないのがちょっとヤなんだけど

59 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 11:58:29 ]
コレクションが必要な場合に必要なのは、コレクションのクラスではなくコレクションを持つクラスだというのをどこかで見た気がするんだがどこだったかな

確かにdataというような凡庸で他クラスと被りがちなアクセサ名しか思いつかなくてブルーになることはあるが、後者の癖をつけておいたほうがいい
あと委譲の人気の無さは異常

60 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 12:25:55 ]
後者でも、委譲用のライブラリを使えばだいぶ楽に書けたような



61 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 12:36:13 ]
Gallery is a Hashと言えるかどうか。
Hashをつかう任意の場所にGalleryを使えるか。


62 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 13:49:14 ]
委譲の解説は「なぜ委譲が好ましいのか(他の方法ではよろしくないのか)」という説明がすっぽり抜けてるものばかりだ
あれではどう頑張っても広まらんよ

63 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 14:18:12 ]
Rubyだけをやってると委譲はなかなかピンとこない
アクセサメソッドの中で他オブジェクトを動的にnewすれば用が足りたりするからな
他の言語やるといいぞ

64 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 14:57:34 ]
るびま jp.rubyist.net/magazine/?0012-BundledLibraries の例を使うが、確かに

require 'forwardable'
class MyQueue1
extend Forwardable
def initialize; @q = Array.new; end
def_delegator :@q, :push, :enq
def_delegator :@q, :shift, :deq
def_delegators :@q, :push, :shift, :size
end

class MyQueue2
def initialize; @q = Array.new; end
def push(*e); @q.push(*e); end
def shift(*e); @q.shift(*e); end
def size(*e); @q.size(*e); end
alias :enq :push; alias :deq :shift
end

class MyQueue3 < Array
alias enq push
alias deq shift
end

[MyQueue1.new, MyQueue2.new, MyQueue3.new].each do |q|
q.enq 1, 2, 3, 4, 5
q.push 6
p q.size
end

の3つは、どれも6を表示はするな

65 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 15:09:38 ]
MyQueue3 を見て「Arrayのメソッドが全部使えるなんていざというとき便利そうだ」とか思った俺
まあ、1と2で attr_accessor :q してくれてればメリットもなくなるか
でもまさか、@q を公開なんてしないよな?

66 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 15:49:24 ]
そもそも#shuffle!とかを許すキューってどうなのよw
Arrayを継承となると、Arrayが公開する100近くのメソッドについて
責任を持たないといけなくなる。お手上げだ

67 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 16:05:35 ]
責任も何も「自由に使ってください。」じゃダメなん?

68 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 16:20:32 ]
>>67
確かにごく最初は「マニュアルに書いとけばいいんじゃね?」「たくさん定義されてても使わなければ無問題だろ」だった
でもそれじゃ駄目だということがわかってきたので責任(Responsibility)という概念が生まれたわけで

無理して今から字面を理解しなくても、そういえばなんか煩いこと言われてたな程度に覚えておけばいい
オブジェクト指向プログラミングをやっていれば、ほぼ確実にこれ関連で火傷をする日が来るから
自分の作ったものが火傷したり破綻したりして初めて理解できたといえるシロモノなんで、まああまり考え込まないことだ

69 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 16:48:05 ]
require 'delegate'
foo = SimpleDelegator.new([])
foo.push(1)
foo.push(2)
puts foo.size #=> 2

これって foo = [] のほうが便利じゃね?

70 名前:デフォルトの名無しさん [2008/08/09(土) 17:43:57 ]
>>52
RGSSでやっていることを一般のゲームでもやりたいという話です。

>>54
いや、まあそういうことなんですが、
元のRubyソースに手を加えて
requireやってるところを置き換えるっつーことでよろしい?



71 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 18:38:49 ]
答えてないぞ
どこまで隠したいのかはっきりしれ
Ruby知ってる人間がirbに読み込んで数行書いたら読めてしまうものでもいいのかどうか

72 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 19:16:45 ]
String#% って、Hashをとれないんだっけ?
"name: %(name)s, age: %(age)d" % {:name=>'Hoge', :age=>20}
みたいな感じでやりたいんだけど。

73 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 19:19:47 ]
>>72
ruby-gettext-packageでそんな感じの拡張をしている。
www.yotabanana.com/hiki/ruby-gettext-api.html?ruby-gettext-api#class+String


74 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 19:23:09 ]
あ、単なる埋め込みなので、to_sでは間に合わない凝った文字列化が必要なら、
ハッシュの値のほうを '%03d% % age みたく別途フォーマットする必要がある。



75 名前:デフォルトの名無しさん [2008/08/09(土) 19:33:17 ]
>>71
できれば、ちょっとしたそのようなクイックハックは避けたいのですが、
その程度ならどのような方法があるものでしょうか?

76 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 20:05:26 ]
BASE64でエンコードするとかすればいいんじゃね

irb> eval "Y2xhc3MgSG9nZTsgZGVmIHN0cjsnSGVsbG8sV29ybGQhJztlbmQ7ZW5kO3B1\ndHMgSG9nZS5uZXcuc3Ry\n".unpack('m')[0]
Hello,World!


77 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 20:38:02 ]
ちょっとしたスクリプト作るのにも何日もかかる自分が若干イヤになるな

78 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 20:43:18 ]
>>77
作業環境が悪いんだよ! エディタとか!

79 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 20:52:37 ]
>>78
なるほど!周りのせいじゃ仕方ないな!

まあ趣味個人とはいえさすがにいまどき putty + Emacs + ruby-mode + RCS だけなのはねーよとは思うんだが
もうちょっと便利で安楽な感じにスクリプト書きたいです

80 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 21:05:52 ]
emacs + ruby-mode以外いいのあるんかい??
RadRails(eclipseのやつ)とかいろいろためしてみたが、軽さがたりねー



81 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 21:20:30 ]
+ QX9650 すれば快適になるよ

82 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 21:44:40 ]
NetBeansのRubyパッケージは結構いいかなと思ったり
JRuby、Rake、Gems、RSpec、ruby-debugとか、標準で一揃い統合されてる

83 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 22:38:18 ]
ねっこはあれでもまだ重くてなあ
まだ重いっていうかこれ以上軽くなる理由もないんだが(w

ところで、なんで重いの?

84 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 22:47:51 ]
てかWindowsのRubyはあまり使いたくないんだが…

85 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 22:55:47 ]
そんなん、ごっついエディタとしてだけ使えばいいじゃん

86 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 23:23:28 ]
Linuxでも使えるけど

87 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 23:25:00 ]
Emacs使ってる人にIDE勧めても色々な意味で無駄

88 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 23:27:46 ]
Emacs/gvimユーザーの半分くらいの人はRubyのあるマシンにターミナル経由でログインして使ってるんじゃないかね
>>79にPuTTYがあるのが象徴的というか

89 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 23:39:18 ]
ruby-electric.el がもうちょっとなあ

90 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 23:42:38 ]
Javaするときくらいだな。IDE。それでも外部エディタはemacs
IDEつかってるのは、仕事先と同じ環境でつかいたいってだけの理由だが。



91 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 23:46:05 ]
あと作業領域の広さかなー。
Emacsつかってる椰子は、メニューなんか全部みせてないだろうし。
トーパルズはviを5ターミナルくらいで開いてかいてるだっけか。


92 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 23:54:44 ]
仕事場でもLinux使うがね
C#とかじゃないなら足る

93 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 23:59:36 ]
>>91
下3行(Emacsバッファ説明・Emacsミニバッファ・GNU screenのバー)以外は全部エディタ領域だからな
IDE使ってみて「ぷろじぇくと」とかいうのが画面の左半分を占拠したときはビビった
みんな画面広いんだな

94 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 00:43:23 ]
>>89
rcodetoolsを全開で使うんだ
なんか補完する度にHDDが動いてる気がするが気のせい

95 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 03:18:08 ]
ねとびんかわいいよねとびん

96 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 04:00:07 ]
emacs-lispのrubyラッパーかいて、Rubyでも設定できるように
してくれたらーーー、学生の時みたいに時間あればなー
スーパーHaXする椰子がでてきたら はじまるのに。。。

97 名前:デフォルトの名無しさん [2008/08/10(日) 06:34:45 ]
>>80
NetBeans使っているけどなかなかいいよ。

RubyGemsは1.2まだ非対応で固まるけどw

>>93
うちはフォント小さくして、狭い画面で書いてますw

98 名前:デフォルトの名無しさん [2008/08/10(日) 06:37:32 ]
>>96
- Summary
Ruby製のテキストエディタ

- Features
o scripting in any language
o macro recording and playback
o multi-element clipboard
o multi-level undo
o parsed ("smart") indentation
o customizable multilingual syntax highlighting, with support for embedded languages (e.g. PHP, eRuby, Javascript)
o bookmarking, named and unnamed
o regular expression searching
o a customizable status line
o limited ctags support
o hooks

- Reference
purepistos.net - Diakonos
purepistos.net/diakonos/

- via
MOONGIFT - Diakonos
oss.moongift.jp/intro/i-2310.html

MOONGIFT - Diakonos レビュー
oss.moongift.jp/review/i-2319.html

99 名前:デフォルトの名無しさん [2008/08/10(日) 06:39:08 ]
MOONGIFTリンク修正

MOONGIFT: ≫ Diakonos:オープンソースを毎日紹介
www.moongift.jp/2006/08/2310/

MOONGIFT: ≫ Diakonos レビュー:オープンソースを毎日紹介
www.moongift.jp/2006/08/2319/

100 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 07:06:55 ]
>>96
el4r



101 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 10:30:41 ]
emacsユーザーならわかるとおもうが、もどきじゃだめなんだよ。もどきじゃ。


102 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 12:15:31 ]
emacsユーザーってemacsしか使えなさそうで不幸だと思う

103 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 12:57:07 ]
>>102
それには適当なIDEやエディタの名前を入れても成立するということが歴史的に知られている

104 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 14:12:42 ]
OS入れても成立する

105 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 14:57:13 ]
>>94
> rcodetools
ほう
検索するたびに2秒くらい止まるんだが日本語解説サイトとかないんかね

106 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 15:09:03 ]
ホント俺ってLinux以外使えないんだよね

107 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 15:14:28 ]
機能だけでなくバックグランドに流れている”歴史”も引きずってるからなぁ
xemacsに一時期ながれていたが、歴史の差でemacs使うようになったな。おれは


108 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 15:17:41 ]
Windowsを「使えている」人なんてごくひと握りだ
レジストリやcompmgmt.msc、NETコマンドやActiveDirectoryをいったいどれだけの人が理解してるやら
気にするな

109 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 17:50:55 ]
Windowsは、まっとうな人なら、使いこなすことに抵抗あるんだよ。

110 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 19:12:45 ]
お前らの好きなMacやLinuxが罵倒されたら嫌だろ。
ならWindowsへの皮肉は、ポケットにしまいこんでおくんだ



111 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 19:56:16 ]
でも、Windows に愛着を感じてる人って少なくない?
相対数どころか絶対数でもMacに負けてる気がする。

112 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 20:53:54 ]
ていうか>>110は何もわかってないんだよ

113 名前:デフォルトの名無しさん mailto:sage [2008/08/10(日) 21:01:04 ]
そんな感じはするが、まあ空気みたいなもんだからね
あって当然。普通に使う分には縁の下は意識しない
MSの最大公約数的な設計もあって、特に面白みというか個性があるわけでもないと

114 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 00:41:42 ]
attrの単純なアクセサが15個くらいどさっとある特定目的用クラスがあるんだが
なんか微妙に多くて微妙に筋がよくないような気がしてならない
うまく減らす方法はあるだろうか

115 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 01:51:12 ]
>>114
設計がおかしい可能性はないか?
単純なアクセサだらけのクラス自体、責務を切り分けられていないように思える。

116 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 05:00:45 ]
事務職(時給800円)なんで、俺は、会計処理の計算ぱぱっとためしたいとき、Rubyつかうけど、
15のアクセくらいなら、普通にありえるな。
会計DBのテーブルが15以上フィールドもってるっていう設計されてるときとか。



117 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 06:48:58 ]
いくつかの機能をまとめて内部クラスを作ってそこのクラス変数にすればよい

118 名前:デフォルトの名無しさん [2008/08/11(月) 07:23:42 ]
PHPでファイルに文字列を追加するプログラムを書いていたのですが、
LFSに対応していないようで、2G以上になるとエラーになりました
Rubyで扱える最大ファイルサイズはどのくらいですか?

119 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 08:33:44 ]
Ruby1.8/1.9自体は2GBより大きなファイルを扱えたはず(Windowsでは無理)
ただ、思いっきり意識してスクリプト作らないとメモリに2GB全部読み込むぞ

120 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 08:49:05 ]
>>114
扱うのめんどくさいという話だと思うんで、ハッシュにまとめておく



121 名前:デフォルトの名無しさん [2008/08/11(月) 17:06:49 ]
携帯電話から入力されたメッセージを、txt形式で鯖に貯めたいです。
一行掲示板なるものを見つけて書いてみたけど、
( ttp://www.skuare.net/2007/07/ruby_5.html )
書き込まれた内容は文字化けして読めんとです。
au、ソフトバンク、docomoなど各キャリアから書き込みたいなら、
エンコードを何とかしろという話だと思いますが、よくわかりません。
どう書けば文字化けせずにテキストを貯めておけますか?

122 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 17:31:52 ]
携帯電話のフォローをするgemは聞いたことがないなあ

とりあえず携帯電話の機種ごとのWeb通信および文字エンコードと独自文字領域についての知識が必要
これはRuby全く関係ないので自力でやってくれ

123 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 17:42:24 ]
偏見だけど、はてなブックマークで5users以上にすらなってないRuby関連記事はそもそも信用したらあかんよ
自分に合わせてゼロから作ったほうがまだ安心できる

124 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 18:10:54 ]
>>123
めちゃくちゃ偏見じゃねーか

まあしかし件の記事は自分専用のスクリプトだしな
他人や他機種のことは全く考えられてない

125 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 21:18:46 ]
jpmobile-rails.org/blog
あ、Railsじゃないのか。

126 名前:デフォルトの名無しさん [2008/08/11(月) 21:31:51 ]
Ruby/Tk について質問です。

ひとつのアプリで複数のウィンドウを開きたいんですが、TkRoot のウィンド
ウから別のウィンドウをいくつも開くにはどのクラスを使えばいいでしょうか?

試しに TkToplevel.new でウィンドウを作ってみたら、ウィンドウ自体は開く
もののその上に置いたボタンとかのウィジェットがまったく表示されませんで
した。


127 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 21:41:06 ]
>>125
jpmobileをrails依存な部分とそうでない部分に分けるという動きが
どっかであったのを見た。


128 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 22:05:41 ]
>>126
Ruby/Tkのマニュアルくらいは斜め読みするんだ

129 名前:126 [2008/08/11(月) 22:39:13 ]
>>128
Ruby/Tk はマニュアルとしてまとまった物がみつからないので、「Ruby アプリ
ケーションプログラミング」を参照しているんですが、よくわからないので困っ
てます。。。


130 名前:デフォルトの名無しさん [2008/08/12(火) 00:11:16 ]
githubから入れたgemの依存関係が解決できないです。
gemから見たときに、githubのgemは衝突回避のために username-projectname という形で
gemを提供しているのですが、あるgemで入れたソフトが
username-projectnameでなくて、projectname に依存しているという風に言ってきます。
このおかげで動かしたいgemで入れたソフトがエラーが出て動きません。

具体的には、↓ddollar-remember-the-ruby を入れようと思ったら、
ddollar's remember-the-ruby at master ? GitHub
github.com/ddollar/remember-the-ruby/tree/master
↓ddollar-preferences に依存するようなのですが(ソース確認した)、
ddollar's preferences at master ? GitHub
github.com/ddollar/preferences/tree/master
実際には、素のpreferencesがインスコされてしまって、そっちが参照されてしまいます。
(gem install時も素のpreferencesの方が入ってしまう・・・)

ddollar-preferences を入れて、素の preferences を uninstall した状態で実行しても、

(ほげまげ)/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:578:in `report_activate_error': Could not find RubyGem preferences (>= 0.1.3) (Gem::LoadError)
from (ほげまげ)/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:134:in `activate'
from (ほげまげ)/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:158:in `activate'
from (ほげまげ)/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:157:in `each'
from (ほげまげ)/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:157:in `activate'
from (ほげまげ)/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:49:in `gem'
from (ほげまげ)/ruby/bin/rtr:18
などといわれ、preferencesの方を見に行ってしまいます。
なんとかならないのかなあ・・・



131 名前:130 [2008/08/12(火) 01:04:11 ]
ここみたら手動で入れられました。
Hoe dependencies - comp.lang.ruby | Google グループ
groups.google.com/group/comp.lang.ruby/browse_thread/thread/9a5d68bafd366677

git clone git://github.com/ddollar/preferences.git preferences
cd preferences
gem install pkg/preferences-0.1.4.gem

一応これで目的のソフトは動きました。

しかしながら、これだと同じライブラリ名があるとバッティングしますね・・・。
それにgithubで他の人が作った同じライブラリが同時に入れられないw

そしてやはりというか、
 (ほげまげ)\ruby\gems\1.8\specifications\ddollar-remember-the-ruby-0.3.2.gemspec
の中の
 %q<preferences>
を全部
 %q<ddollar-preferences>
に置換しても動きます。(当然ですね)

問題はgithub内のそれぞれのユーザーのコードが、他のgithubのコードを
dependencyに追加する時にユーザー名まで入れるの?ということになりますね・・・

132 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 03:12:00 ]
>>126
toplevel = TkToplevel.new
button = TkButton.new(toplevel,:text=>'push me').pack

基本はTkHoge.new(親部品、オプション)で親部品は省略するとTk.rootになる

ruby/tkはドキュメントが足りなすぎてtcl/tkを知らないと使い物にならない
今まで見た中では「逆引きRuby/Tk」(ググれ)のページが一番まともに使える

133 名前:デフォルトの名無しさん [2008/08/12(火) 08:28:08 ]
gem instal ほげほげ

のgemのインストールが高い頻度で固まるのですが私だけでしょうか?
コマンドプロンプトでCtrl-Cを押しても止まりません。
タスクマネージャでrubyを殺すしか手段はなくなります。
インストールは、5回に一度くらいしか成功しません orz

> gem -v
1.2.0

OS:Windows XP SP2

134 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 09:07:51 ]
ASRだとしたら、自分と同じ症状だ。自分は今の最新にしたら治った。
次からはRubyのバージョンとかも書いてくれ。

135 名前:133 mailto:sage [2008/08/12(火) 10:00:05 ]
>>134
すまそ。忘れてた
>ruby -v
ruby 1.8.7 (2008-06-20 patchlevel 22) [i386-mswin32]

136 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 11:52:50 ]
というかRuby/TKはTclでTkを知ってる人が使ってるもんだとばかり思ってた
RubyのGUIってそんなもんだからさ
「○○では××と書くようなことをRuby○○ではどう書くんですか?」という質問を希望

137 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 18:22:21 ]
しつもん

PStoreありますよね
あれって、

PStore.new(path).transaction do |db|

とした時点で、db に該当するとこには pstore ファイルのまーしゃるな内容が完全に展開されてるんですよね?
data = db['hoge'] としてもメモリ的になんかいいことがあるとか何もないですよね?

138 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 18:40:46 ]
>>137

unless read_only
file = File.open(@filename, RDWR_ACCESS)
...
content = file.read()
...
if content != ""
@table = load(content)
...
def load(content) # :nodoc:
Marshal::load(content)
end
...
def [](name)
in_transaction
@table[name]
end

ということで、答は YES
transaction した時点で、Ruby は pstore ファイル全体を Marshal でロードしたデカいオブジェクトをメモリに保持する
db[hoge] というメソッドは既に存在するそのデカいオブジェクトのハッシュへの参照に過ぎない
別名をつけるかどうかは読みやすさだけで決めてよし

時々「でかいpsotreに差分だけ追加」という効率的っぽいプログラミングをしてる人を見かけるが、
あれの本当の動作は「全部引き出してフルサイズ復元してちょっと付け足してまた全体を必死で変換してディスクに書き込む」だ

139 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 21:24:43 ]
Rubyってこういうメモリを湯水のように使う処理結構多いよな

140 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 13:25:30 ]
Rubyで外部コマンドに頼らなくてはならなくなりました
んで、質問です

data.each do |param|
`command #{param}`
end

は、dataの数だけ毎回シェルを起動して終了してますか?
複数のデータそれぞれに対してコマンドを使用したい場合は

sh = Shell.new
data.each do |param|
sh.system("command #{param}")
end

としたほうが、起動するシェルは1個で済んだりしますか?



141 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 13:37:19 ]
 > によるリダイレクトや | によるフィルタとか使わない限りおおむね YES のようだ
外部コマンド使えば速くて済むもんね、と考えてのことなら前者は無駄が多いかもしれん

142 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 15:15:25 ]
% ruby -rshell -e "sh = Shell.new; 5.times do |i| sh.transact do p system('echo -n \$\$') end end"
58045
58046
58047
58048
58049


143 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 17:12:14 ]
いやそんな例出されても
transactって名前そのまんまだし

144 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 21:32:04 ]
Shellって言えば

irb> require 'shell'
irb> sh = Shell.new
irb> sh.verbose = false
irb> sh.cd('/')
shell: current dir: /

って、verbose を偽にしても notify でログが表示されるのはなんでなんだぜ?

145 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 21:34:42 ]
>>140
exec使えよ

146 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 21:50:58 ]
>>145
試行錯誤中のirbが途中で終了した
責任は取ってもらうからな

147 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 21:54:15 ]




スレで見たものをirbで何でも試すから…

148 名前:デフォルトの名無しさん mailto:sage [2008/08/13(水) 23:56:18 ]
irbが終了した責任はirbの再起動で取るよ
ってことで、sshでログインしてやるから、
IP,ID,PASS晒せや

149 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 07:30:03 ]
素朴な疑問なんだけど
破壊的メソッドって自分で定義して追加することは可能?


150 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 07:40:10 ]
>>149
追加できないかもしれないと思った理由は?



151 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 07:51:44 ]
! がついてるからシステム的に特殊なものだと思ったんじゃないかね
! つきも ? つきも = つきも普通に定義できるぞ

152 名前:149 mailto:sage [2008/08/14(木) 08:41:50 ]
たとえばStringで文字列の末尾に"foo"を追加する破壊的メソッドの定義って
どう書けば良いのでしょう?

153 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 08:49:35 ]
class String
 def append_foo!
  self << "foo"
 end
end

s = "hoge"
s.append_foo!
p s

154 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 16:04:08 ]
予定表作ろうと思うんだ
うん、Webカレンダーアプリケーションみたいなの
その日のデータ登録は自分が(コマンドラインまたはCGIで)やるだけなんだけど、結果はHTMLとして公開したい
いい感じのデータ構造をもつクラスとHTML書き出しクラスを持つライブラリとか都合よくないかな?

155 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 16:36:08 ]
>>154
そんなんライブラリはないけど
rails本に幾らでも例題あるがな

作らんでもカレンダーウェブサービスも沢山あるし

156 名前:デフォルトの名無しさん [2008/08/14(木) 16:47:29 ]
ディレクトリ名の最後のデリミッター("/")を削除する、簡単な方法ってないですか?
もしくは考慮して、"/"がなかったらつけてくれる関数なんかありませんでしょうか?

File.dirname(dir) ってやると "hoge/moge/" が "hoge"になってしまって、
かなり期待と反対の動作なんですが・・・("hoge/moge"がほしい)

157 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 16:49:23 ]
各日のイベント自体がパブリックなものなら
Google Calender か Yahoo! カレンダーに適当に登録してカレンダーを公開、が妥当な気がする
データ型についてはまあ類似例を見て研究するということで

158 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 17:00:21 ]
>>156
/foo/bar という文字列があったとして、 bar がファイルなのかディレクトリなのかは
実際に(HDDの)ファイルシステムにアクセスしないとわからないから、ある意味無理

というか、そんな不完全で不安定なディレクトリパスが欲しい理由って何?
そういうのが必要な場合の多くは必ず File.join でディレクトリとファイルを連結するようにすれば用が足りる
ディレクトリの最後にスラッシュがあろうがなかろうが、問答無用でディレクトリとみなして連結してくれる

もし、外部コマンドに渡すディレクトリ文字列を Ruby で作らなきゃいけないんだとかいう場合は
require 'pathname' したあと Pathname#realpath 使え

159 名前:デフォルトの名無しさん [2008/08/14(木) 17:16:35 ]
>>158
レスありがとう
実際にはFileTest.directory?などでディレクトリチェックをしています。

そうです。Dir.globとかに渡すときに、適当に渡されたパスに "*.hoge"とか "**/*.moge"とかを
くっつけたかったのです。最初から情報を中田氏にしたことを詫びします。
File.joinを使うのですね。
やってみます。

160 名前:156 [2008/08/14(木) 17:18:32 ]
>>158
File.joinで無事にできました!
お騒がせしました。
エスパーありがとうございました。



161 名前:デフォルトの名無しさん [2008/08/14(木) 17:47:14 ]
たまに見かける
 # :nodoc:
という記述はなんなんでしょうか?
ドキュメント生成ツールか何かようのフラグ?

162 名前:デフォルトの名無しさん mailto:sage [2008/08/14(木) 17:48:46 ]
>>161
ActiveRecord (1) -- construct_sql - Ruby on Rails 研究 - Ruby on Rails with OIAX
www.oiax.jp/rails/rails_source_code_reading_2.html

> その右にある #:nodoc は、RDoc の修飾子(modifier)の一種です。RDoc は、
> Ruby ソースコードからドキュメントを生成するプログラムです。RDcoc は
>この修飾子が添えられたクラスやメソッドをドキュメント生成の対象から外します。

RDoc用なのですね。
ありがとうございました。

163 名前:デフォルトの名無しさん [2008/08/14(木) 19:15:23 ]
Windowsのファイル名の区切り文字(バックスラッシュ、円記号)は、
Dir.globに渡しても動作しません。
スクリプトなどの引数などから指定された場合、
単純に置換する以外によい簡潔な解決策はないでしょうか?

164 名前:163 mailto:sage [2008/08/14(木) 19:27:59 ]
>>158で出ていた pathname と Pathname#realpath でいけました!
Pathname("hoge\mage\")は、Pathname#realpath で "hoge/mage/"になってくれました。

ありがとうございました。

165 名前:デフォルトの名無しさん [2008/08/15(金) 01:14:07 ]
↓なんで?

s="#&32;12:34"
/[\s(?: )](\d{2}):(\d{2})/=~s
p $1,$2   # => 12, 34

Regexp.new("[\s(?: )](\d{2}):(\d{2})")=~s
p $1,$2   # => nil, nil

166 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 02:33:56 ]
"#&32;12:34" は "#&32:12:34" の間違いだよな?

p Regexp.new("[\s(?: )](\d{2}):(\d{2})")
p /[\s(?: )](\d{2}):(\d{2})/

これを実行すりゃ分かる。

167 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 09:54:35 ]
ruby_1_8 と ruby_1_8_7 とはどう違うんでしょうか?
ruby_1_8 は次 (今だと ruby_1_8_8) の候補、みたいな感じ?

168 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 11:03:55 ]
それの名前を付けた人のポリシーによる
つまり、ソフトウェアパッケージのポリシーとか

一般的には、 1.8 とだけ書かれたものは 1.8 のうち最新版のものへのエイリアスだ
1.8.7 が用意されていれば 1.8.7 、まだ用意されてなくて 1.8.6 だけなら 1.8.6

169 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 15:27:37 ]
require 'tk'
l = TkLabel.new(:text=>'0').pack
b = TkButton.new(:command=>proc{

TkAfter.new( 100, 1, proc{
l.text=l.text.to_i+1
Tk.event_generate(b,'Button-1')
Tk.event_generate(b,'ButtonRelease-1')}
).start

}).pack
Tk.mainloop

一定間隔でラベルの数字が増え続けるようにしたかったのですが、
実際やってみると、途中で不規則に止まってしまいます。
原因と解決策(できればイベント強制発生のループの形は残したままで)を
ご教示お願いします。



170 名前:デフォルトの名無しさん mailto:sage [2008/08/15(金) 16:26:00 ]
>>169
Enter->ButtonPress-1->ButtonRelease-1(->Leave)



171 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 00:53:38 ]
TCPSocketでサーバからデータを受け取る際
リアルタイムに取得済みバイト数を得る方法はありませんでしょうか?

現在は
・サーバ側: writeでソケットに渡す
・クライアント側: readでソケットから受け取る
データ自体は問題なく受け取れています

どうやら受け取ったデータはソケットのバッファ?か何かに書いているようで
そこをリアルタイムに覗く方法が分かりません

参考になるものやヒントなどがあればよろしくお願いします


172 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 01:03:19 ]
>>171
普通覗かない覗けないから、rubyでreadできた分を
取得済みと考えていいんじゃね?

173 名前:171 mailto:sage [2008/08/16(土) 01:27:26 ]
>>172
readできた分となると
全て取得した後のサイズしか知ることができないようなのです

ごめんなさい ちょっと紛らわしかったかもしれません
必ずしもバッファを覗く必要はありません
リアルタイムに取得済みバイト数さえ取得できれば方法は問いません

バッファが覗けないとなると別の方法ですね・・・


174 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 03:23:59 ]
>>173
readpartialで少し筒読みながら自分でサイズ管理

175 名前:デフォルトの名無しさん mailto:sage [2008/08/16(土) 04:16:24 ]
>>173
よくわからんのは、
取得ってどこまで来たのを取得データと捉えたいんだ?

176 名前:171 mailto:sage [2008/08/16(土) 09:21:25 ]
>>174
readpartialですね
試してみます

>>175
どういう答え方が正しいのか分からないのですが
ソケットまで来ていれば取得済と考えています


177 名前:171 mailto:sage [2008/08/16(土) 22:02:54 ]
readpartialで解決できました
ありがとうございます

178 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 15:32:40 ]
www.aoky.net/articles/why_poignant_guide_to_ruby/index.html

179 名前:デフォルトの名無しさん mailto:sage [2008/08/17(日) 16:41:49 ]
ああそうか夏休みか

180 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 02:30:09 ]
el4rは動作が怪しい



181 名前:デフォルトの名無しさん [2008/08/18(月) 11:56:16 ]
Rubyで使われてるフォントって何?欲しいんだけど

182 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 11:59:12 ]
……よーわからんが、このロゴに使われてる字体のことか?
ttp://www.ruby-lang.org/images/logo.gif

183 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 12:11:12 ]
ああ、すまんそういうことじゃなくて

www.ruby-lang.org/ja/

ここの「Rubyとは」ってとこの横のエディタ画像のフォント

184 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 12:16:12 ]
画像じゃない気がするんだが…

#code div {
display: block;
font-family: "Lucida Console", Monaco, monospace;
padding-left: 24px;
padding-right: 24px;
}

って書いてあるんで、君のパソコンに入ってるLucida ConsoleかMonacoかmonospace
あるいはmonospaceファミリーに設定されてるフォントで勝手に表示されてる

185 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 12:18:01 ]
欲しいも何も既に持ってるってパターンだな

186 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 12:23:00 ]
>>184
画像じゃなかったのか…ありがとう

187 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 12:34:18 ]
irb> say = "I love Ruby"
irb> say['love'] = "*love*"
irb> puts say.upcase
I *LOVE* RUBY

なんぞこれ

188 名前:デフォルトの名無しさん [2008/08/18(月) 12:36:25 ]
>>184
あ、でもこれ日本語対応してないのか…くぅ、使いたかった

189 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 12:43:37 ]
Hpricotって1.9に対応する予定ってあるんですか?

190 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 12:43:39 ]
xyzzyとかはASCIIと日本語を別々のフォントに指定できるぞ
xyzzy使わざるを得なくなるのが難点か

もしWindowsXP以降(2000でもフォントによってはできる)を使ってるならFontLink機能を使う手もある
「どう考えても英字フォントを指定してるだけなのになぜか日本語も表示できる謎機能」を自力で利用する



191 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 12:49:12 ]
>>190
kwsk

192 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 13:06:35 ]
1.9は

 ・誰でもgem含めて完全に1.9のライブラリだけを使って動作するようにインストールできるよガイド

があれば対応が増えると思う
現状の1.9は「1.9に乗り換える」という覚悟がないとそもそもインストールしにくい
make install するとgemごとユーザーディレクトリにインストールされるような親切セットが欲しい

>>191
ぐぐってレジストリ書き換えろ

193 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 13:14:14 ]
gem開発者はRubyに関してちょっと詳しいだけであって、
その他のことに関しては素人に毛が生えた程度だと思ったほうがいいよな
自分用Rubyと際新安定版RubyとRuby1.9の3つくらいは維持しないといかんわけで
それに対するフォローはあっても面白いかもしれん

194 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 13:56:07 ]
PerlでいうことろのTemplate ToolkitやFillInFormみたいなモジュールはありますか?

195 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 14:58:05 ]
uri = "example.com?aaa=123&bbb=456&ccc=789"

ここからquery param形式でURIをパースしてくれるものってあるでしょうか?
今は正規表現でパースしてますが面倒で…

196 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 16:03:24 ]
query param 形式ってなんじゃらほい

irb> require 'cgi'
irb> require 'uri'
irb> uri = URI.parse('example.com?aaa=123&bbb=456&ccc=789')
irb> p CGI.parse(uri.query)
{"aaa"=>["123"], "bbb"=>["456"], "ccc"=>["789"]}

こんなん?

197 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 18:06:11 ]
>>194
あるはずだが、見つからないなあ

フォーム入りHTMLを自動生成して送る
      ↓
ユーザーがフォームを埋めて送り返してくる
      ↓
解析したが内容が不足または不当だった
      ↓
ユーザーの入力内容がフォームに記入された状態のHTMLを再度生成して再送


198 名前:195 mailto:sage [2008/08/18(月) 20:48:03 ]
>>196
まさにその通りです
自分も書いた後に「query param形式」って変な表現だと思ってました
ありがとうございます!

199 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 00:24:58 ]
JRubyを使ってSwingを叩いていてはまったのでどなたかお助けください。

Javaのクラス(具体的にはjavax.swing.event.MouseInputAdapter)を基底としてRubyのクラスを作りました。
そこで初期値を与えてnewしようとしたところ、
base.rb:24:in `__jcreate!': wrong # of arguments for constructor (NameError)
とのエラーが出てしまいます。

初期値を与えなければ正常に動作するため、Javaクラスを基底とするRubyクラスでは
初期化に工夫がいるのかと思い、調べてみたのですが、言及を発見することができませんでした。

どなたか回避方法、或いは他の原因に心当たりの方がいらっしゃいましたら教えてください。

200 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 00:34:00 ]
>>199
コンストラクタの先頭でsuper()を呼べばいいんじゃない?




201 名前:199 mailto:sage [2008/08/19(火) 00:55:17 ]
>>200
あうあ。どうもありがとうございます。
書き込み前にsuperを試したときにもsuperを括弧無しで呼んだ時には引数が引き継がれる、
というのを知らなかったので、二重にはまっていたみたいです。
明示的にsuper()を呼ばなければ引数引継ぎで自動的にsuperが呼ばれるのかしらん。
色々と調べてみます。どうもありがとうございました。

202 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 18:41:40 ]
ruby script/server -p 80

このコマンドを実行し、ポート80を使っていたapacheを停止させたところlocalhost/testでも接続できるようになりました。
これはapacheの代わりにmongrelが動いているということでしょうか。
初歩的な質問ですいません

203 名前:デフォルトの名無しさん mailto:sage [2008/08/19(火) 19:28:29 ]
Railsに関する質問はRailsスレで

204 名前:202 mailto:sage [2008/08/20(水) 01:20:53 ]
ありがとうございます

205 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 17:58:01 ]
rubyって
(2..0).to_a
ってしたらなんで[2,1,0]って配列を作ってくれないの?

そもそもRubyのRangeクラスって昇順しか認められてないの?

206 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 18:42:12 ]
失敬な
降順だろうが昇順だろうがきちんと存在しマニュアル通りに動作するぞ
2.succ は 3 で 0 より大きいから each も即終了する

…まあ、Range#first > Range#end なときは
Range#each の中で逆方向の配列作ってくれてもいいじゃんという気は
全くしないわけではない

207 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 21:04:20 ]
..はsuccを使うので、2.step(0, -1).to_aで我慢してくれ。


208 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 21:05:55 ]
それくらいならreverseする


209 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 00:38:55 ]
p (2..0).to_a # => []
p (0..2).to_a # => [0, 1, 2]

たしかに気分悪いなこれ


210 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 00:48:15 ]
>>206の言う通り以外の何物でもない
> 2.succ は 3 で 0 より大きいから each も即終了
succ を辿る実装を変えるとは思えないから、each を書き換えるしかないな



211 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 02:44:59 ]
そういえば1.9のString#succはなかなか変態らしいな。
次の意味のあるバイト列までいかに素早く進むか、みたいな。



212 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 11:06:44 ]
akr氏のあれか

213 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 18:30:19 ]
これか
cvs.m17n.org/~akr/pub/string-succ-rejectkaigi2008.pdf


214 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 19:54:18 ]
initialize 内部で望ましくない動作をしている外部クラスがあります。
特定の引数 param2 のハッシュから特定のキー 'danger' に関連するペアを、
param2.delete('danger') のように事前削除すれば問題ありません。
クラスを利用するときの引数でいちいち削除すればいいんですが、
できれば同クラス名のクラス定義をスクリプト開始時にこっそり上書きすることで楽に済ませたいです。

最初

class Hoge
alias _initialize initialize
def initialize(param1, param2)
param2.delete('danger')
_initialize
end
end

と書いたんですが、これだと self が書き換わりません。いい方法はありますか?

215 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 22:31:12 ]
どこのself

216 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 01:19:03 ]
Net::HTTP を利用してるモジュールがあるんですが、中で

body = StringIO.new
http.request_get(uri.path){|res|
res.read_body {|part|
size += part.size
body.write(part)
}
}

としてる部分がありました(request_getはrequest_postのもあります)
どうせ最後には全部メモリに入るわけだし、ふつーに

body = request_get(uri.path).body
size = body.size

でいいと思うんですが、わざわざ細かく読み込んでるのは何か理由があるんでしょうか?

217 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 08:57:37 ]
>>216
マルチスレッドのためじゃね?
最後は書いた人に聞かないとわかんないから、この質問はメーリングリストで聞いてみるのがいいだろうね。
書いた人はだれかしらんけど、たぶんメーリングリストは読んでいると思うよ。

218 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 11:19:47 ]
Ruby1.8.6 と Ruby1.8.7 をうまく共存させる方法はない?
> lib/ruby/1.8/i686-linux/rbconfig.rb:7: ruby lib version (1.8.7) doesn't match executable version (1.8.6) (RuntimeError)

219 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 11:31:28 ]
>>216
Net::HTTP の中でも同じような書き方をしてるから、それ自体は net/http.rb の改変コピペだと思う

で、>>215の言うように、net/http.rb での採用理由はたぶんマルチスレッドというかマルチタスクというかそんなのの対策だと思われる
たとえば、サーバからのファイルを HDD 上のファイルと同じノリで最初から最後までずーっとひと息に待ってると、
でかいファイルの場合はそれだけでタスクというかジョブがいっぱいになってしまう
一昔前のWindowsのフリーソフト(や現在のピーとかピーとかピーとか)に稀にあった、
ファイルをダウンロード中にビジーになって他に何もできなくなるヘボいフリーソフトのダウンローダーの動作を考えてもらうといい

220 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 11:34:11 ]
>>219 の 215 は >>217 の間違い
ぶっちゃけ net/http にお任せしてればわざわざ自前でそんなとこまで意識して書く必要はないんだけど、
繊細動作させるダウンロードクラスでも作ってるのかな?



221 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 11:38:48 ]
>>218
既にあった lib/ruby/1.8/ とかが新しくインストールした 1.8 系列で上書きされてるっぽい
lib/ruby/1.8.7/ って明示的に作れないんだっけ?
どっちにしても両方再インストールだな

222 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 11:57:48 ]
>>221
configure --with-ruby-version=full

223 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 12:02:17 ]
>>218
漏れは ./configure --prefix=/usr/local/ruby_1_8_6 とかやっとります。

224 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 17:32:27 ]
現存するクラスを完全に上書きしたいです

require 'uri'
URI = nil
require 'my-uri'

とすると希望どおりの動作にはなりますが、
> warning: already initialized constant URI
という真っ当な警告が出てしまいます

225 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 17:40:00 ]
質問なんだぜ

1. Array を継承する
2. @data = Array.new してから、@data をいじるArrayと同名のメソッドを完全自作
3. @data = Array.new してから、 @data に対してメソッドを委譲

細かいレベルの一般的実行速度で言えば 1 が一番速くて 3 が一番もったりだよな?
1 は微妙にキケンで 2 はめんどくさいから 3 をやる、という思考の流れでいいんだよね?

226 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 18:38:19 ]
>>224
require 'uri'
class Object
remove_const :URI
end
require 'my-uri'

227 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 21:25:18 ]
誰だこんな220行の建て増し温泉旅館メソッド書いたの

228 名前:デフォルトの名無しさん mailto:sage [2008/08/22(金) 21:33:53 ]
rubygemsには時々すごい変なソースが転がってる
まあインプットとアウトプットが妥当なら使うけどな

229 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 01:02:49 ]
かなり間抜け気味の質問なんですが、net::SMTPでのメール送信て、
同一ドメイン内のメアドへの送信のみでしょうか。

メールフォームCGIでそのような動作になっていて、
外部のメアドに送信しようとするときに限りエラーになります。
エラーメッセージもでているのですが、なんとなく上記部分がひっかかったので、
詳細なしで質問させていただきましたm(_ _)m

230 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 01:36:31 ]
外部にも送れるよ。




231 名前:229 mailto:sage [2008/08/23(土) 01:48:11 ]
>>230
ありがとうございます!すっきりしました。
エラーを見てチェックしなおしてみます。

232 名前:デフォルトの名無しさん mailto:sage [2008/08/23(土) 23:50:39 ]
Keep-Alive と COOKIE が使える Web アクセス用のクラスで何か良いのあるかな?

httpclient は何でもかんでも RuntimeError になって不便だった。


233 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 02:19:53 ]
gem の WWW::Mechanize が一応両方とも使える
gem isntall mechanize で Hpricot と一緒に入るはず

234 名前:232 mailto:sage [2008/08/24(日) 11:58:23 ]
>>233
WWW::Mechanize って Keep-Alive 使えたのか…知らなかった。ありがと。

ただ、割と大きいファイルを落とすつもりなので
>>216 みたいにブロックが渡せるようなのが欲しかったんだけど、
WWW::Mechanize はパっと見無理っぽいですね、残念。

235 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 12:09:27 ]
どこをどう「探した」のか気になる
ブロックなんてただのブロックなのに

236 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 12:24:12 ]
いまさらだけど、>>216のコードでなんで「全部メモリに入る」んだ?
読み込んだ部分ごとに出力に書き出してるように見えるけど

237 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 12:27:50 ]
>>220の通りで、Net::HTTPを利用している限りはソケットからfragment単位で読むからダウンロード負荷自体は問題にならない

「これまでのresponseをメモリ内で破棄しつつ最新のみIOに出力する」というダウンローダー芸はNet::HTTPではできないと思う
100MBのファイルを取得したら100MBのファイルはresponseの取得履歴としてメモリ内にどーしても一瞬保持されるはず

238 名前:232 mailto:sage [2008/08/24(日) 13:36:57 ]
>>237 まぢで?
だとすると、ブロック渡しする意味は進捗状況の確認ができるだけってこと?

ちょっと net/http.rb の中見てみた限りでは、BufferedIO にも、ReadAdapter にも
読み込んだデータを保存しているような挙動は確認できなかった。
保存されるとしたら、どこに保存されてるんだろう。

実際、read_body にブロック渡した場合と渡さない場合で
HTTPResponse#body の挙動が変わるようだ

http = Net::HTTP.start("www.example.com", 80)
p http.request_get("/index.html") {|req| req.read_body{} }.body
# >> #<Net::ReadAdapter>

http = Net::HTTP.start("www.example.com", 80)
p http.request_get("/index.html") {|req| req.read_body }.body
# >> "<html><head>...."


239 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 17:58:12 ]
YAMLの Anchor, Aliase でノードを参照する時に、
別の.ymlファイルのノードを参照するのって
どうすれば良いんでしょうか?

240 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 21:23:42 ]
>>239
できない。
やるとしたら
s = ''
s << File.read('file1.yml')
s << File.read('file2.yml')
p YAML.load(s)
とするしかない。



241 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 21:24:42 ]
>>236
>読み込んだ部分ごとに出力に書き出してるように見えるけど
部分的に書き出しても、書き出し先がStringIOオブジェクトだから
結局は全部メモリに入る。

242 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 21:27:30 ]
>>224
>現存するクラスを完全に上書きしたいです
Rubyは既存クラスを自由に書き換え可能だから、「完全に上書き」する必要はないと思うけどなあ。
もしよければ、既存クラスを書き換えるのではなく完全に上書きしたい理由を語ってみてください。
なにか新しい発見があるかも。

243 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 22:58:02 ]
module A
 def self.hoge
  puts 'Hoge'
 end
end

class B
 include A
end

これで A.hoge が B.hoge という形に mix-in されないのはどうしようもない?
継承だったらクラスメソッドも継承されるみたいなんだけど

244 名前:デフォルトの名無しさん mailto:sage [2008/08/24(日) 23:30:15 ]
>>243
こゆことがしたい?
module A
  def hoge
    puts 'Hoge'
  end
end

class B
  extend A
end


245 名前:243 mailto:sage [2008/08/24(日) 23:35:22 ]
>>244
なるほど、そういうのもあるんですね。
ただ、A の中にインスタンスメソッドもたくさんあるんですが、何とかなりませんか?

246 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 00:30:26 ]
委譲の考え方の基本がなんとなくわかった気がする

247 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 00:40:24 ]
>>245
ええっと、どういう風に書きたいってこと?

248 名前:243 mailto:sage [2008/08/25(月) 01:14:50 ]
module A
 def self.hoge # クラスメソッド
  puts 'Hoge'
 end
 def fuga # インスタンスメソッド
  self.class.hoge # self がどのクラスのインスタンスかによって変えたい
 end
end

class B
 include A
 # B は hoge を再定義するかもしれないけど、しなくてもいいようにしたい
end

b = B.new
b.fuga # B で再定義されていれば B.hoge、そうでなければ A.hoge が使われるようにしたい

# もしくは、
class C
 include A
 hoge # こういうふうにclassのコンテキストで呼び出したり・・・
end

だいたいこんな感じになってくれるとうれしいです。

249 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 04:31:05 ]
こんちは
はじめてRubyでスクリプト書いてみました
下記コードでうまいこと画像を保存できたのですが、なぜかアニメーションGIFがぶっ壊れてます
RubyでアニメーションGIFを扱うことは不可能なんでしょうか
もし可能であればライブラリや書き方など教えてほしーです

require 'open-uri'
def main
  # ニコニコ動画の画像があるパス
  url = 'www.nicovideo.jp/img/tpl/head/icon/nico/'
  # 画像のパスを全部いれておくための配列
  image_url_list = []
  # ローカルの保存先のパス
  savepath = "D:/Data/IMG/"
  # URLの生成
  0.upto(10) do |i|
  image_url_list << url + "%03d" % i + ".gif"
    puts image_url_list
  end
  # 画像を保存
  image_url_list.each do |image_url|
    filename = File.basename(image_url)
    File.open(savepath + filename, "w"){|output|
      open(image_url){|data|
        output.write(data.read)
      }
      puts("#{filename} has saved.")
    }
  end
end
main

250 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 05:21:27 ]
"wb"



251 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 05:30:51 ]
うお すげぇ
朝っぱらからありがとうございます
バイナリモードっていうのがあったんですね

あざーっす!


252 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 07:53:27 ]
>>243
こんな話?

irb(main):001:0> module M
irb(main):002:1>   def self.included(m)
irb(main):003:2>     m.module_eval do
irb(main):004:3*       def self.foo; p :foo; end
irb(main):005:3>     end
irb(main):006:2>   end
irb(main):007:1>
irb(main):008:1*   def bar; p :bar; end
irb(main):009:1> end
=> nil
irb(main):010:0> class C
irb(main):011:1>   include M
irb(main):012:1> end
=> C
irb(main):013:0> C.foo
:foo
=> nil
irb(main):014:0> C.bar
NoMethodError: undefined method `bar' for C:Class
        from (irb):14
        from :0
irb(main):015:0> C.new.bar
:bar
=> nil
irb(main):016:0> class C
irb(main):017:1>   foo
irb(main):018:1> end
:foo
=> nil

253 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 08:16:45 ]
Rubyって日本語のファイル名を開けるの?

254 名前:243 mailto:sage [2008/08/25(月) 09:11:30 ]
>>252
おー!include されるごとにメソッドを定義するわけですか。
それでいけそうです。ありがとうございます。

255 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 09:50:20 ]
open-uriでurlを開いたら自動的にbodyも読まれてテンポラリファイルができてしまいます
headを読んで色々処理してからbodyを読むようにしたいんですけど
そういうのってnet/httpとか使って自作しないといけないんでしょうか

256 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 20:35:17 ]
def config_file=(path)
h = YAML.load_file(path)
@username ||= h[:user]||h[:username]||h[:id]||h['user']||h['username']||h['id']
@password ||= h[:pass]||h[:password]||h['pass']||h['password']
end

使うキーくらいマニュアルに書いておけよ俺

>>255
はい
HEAD対応open-uriの改造をスクリプトの初めで上書きするモンキーパッチを誰かが作ってたと思ったが忘れた
とここまで書いてHTTPヘッダのことかいなと思う
まあどっちもたいして変わらんな
open-uriはFile.openが思想のベースなのでファイル読み込みは避けられないよ

257 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 20:41:55 ]
「モンキーパッチ」ってそういう意味だったんだね。

258 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 20:52:07 ]
>>257
Rubyではね
本来はゲリラパッチで、Rubyのようなシステム的に許されたなあなあのクラス上書きとはちょっと違う
代わりにduck punchingという言葉を使おうと言ってる人が一部にいるけど
本気でRailsの一部の人なので全く広まる気配はない

259 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 20:56:28 ]
変数に結果を代入したいんだけど、三項演算子と1行if文ってどっちがいいかな?

260 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 21:01:33 ]
s = (cond ? 'yes' : 'no')

s = if cond then 'yes' else 'no' end

s = if cond then
'yes'
else
'no'
end

if cond then
s = 'yes'
else
s = 'no'
end

まあ好きにせえ
3番目は微妙に嫌われてるということは知っておくといい
「Rubyのif構造は値を返す!!」とか興奮した初心者が多用するが冷静に読むと面倒だ



261 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 21:48:19 ]
>>259
あるJavaの有名人が『三項演算子は難しい機能だからif文を使いなさい』といってた。
だからif文のほうがいいよ。
だって有名人のいうことだからね!

262 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 21:55:44 ]
よく以下のような文を見るのですが、何のためにしているのでしょうか?

if __FILE__ == $0

263 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 22:02:40 ]
>>262
そのif文の中はCで言うmainにあたるってとこかな

そこより上で定義したclassのテスト的なコード書いて
おいて、requireされた場合には実行させないための
おまじない


264 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 22:06:41 ]
>>263
なるほど、そういうことか
d

265 名前:デフォルトの名無しさん mailto:sage [2008/08/25(月) 22:07:34 ]
>>264
>>263の補足というか、googleで、そのまんま "__FILE__ == $0" で検索して
トップに出てくるページを見ればいいと思うんだ。

初心者スレでググれ!って言うのは無し?


266 名前:デフォルトの名無しさん [2008/08/25(月) 23:28:23 ]
>>262-263

それは知らなかった。
勉強になった。
機会をくれてありがとう。


267 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:29:10 ]
if 文の返り値を変数に代入するのは性に会わない
似たような感覚として、

 ・do 〜 end ブロック
 ・map と inject を除く {} ブロック

の返り値を利用するのはなんかピンと来ない

268 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:39:09 ]
rubyで日本語のファイル名使えるかどうか
速く回答しやがれ!

269 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:41:04 ]
>>268
使ってみてから質問しろ。
あほか

270 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:49:51 ]
まあ問題が起きてからその状況を質問してもらったほうがええな



271 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:53:35 ]
実際にやってみて日本語名が使えない、という話なのか?
OS環境とか文字コードとか、状況を具体的に説明してごらん。


272 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:57:32 ]
Perlで日本語のファイル名のファイルをopenできないから
rubyだったら開発者がジャップだからネイティブで対応してるかと
思って質問してるんです!!!

273 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:59:40 ]
dllからデータを読み込むプログラムを書こうとしているのですが、
dl/structモジュールで構造体を入れ子にできないのですかねぇ?

そこの部分だけcharの配列で埋めて後で置き換えるしかないのでしょうか・・・

274 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 01:17:20 ]
>>272
できる。
でもRubyよりも先に日本語の使い方と質問の仕方を勉強することをおすすめする。

275 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 07:20:54 ]
「♥.txt」を開こうとしたら無理だったんだけど

276 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 07:36:19 ]
windowsなら、ユニコードのファイル名は無理

277 名前:デフォルトの名無しさん [2008/08/26(火) 08:03:16 ]
Rubyをちょこちょこ最近書き始めた初学者です。
Excelの列番号をA1形式からR1C1形式へ変換するプログラムを書こうとしています。
A→1
AA→27
IV→256
てな感じで。

パッと思いついたコードとしては
require 'jcode'

num = 0
str = "IV"
str.each_char{|char| num = num * 26 + char.to_i(36)-"A".to_i(36) + 1}
p num #=>256

ですが、スマートじゃない気がしてなりません。
もっとスマートな書き方有りますでしょうか?
実行環境はWinXP、Ruby1.8.6です。

278 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 08:17:18 ]
>>276
ユニコードは日本語じゃなとでも言いたいわけ?

279 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 08:28:52 ]
inject(0) {|n, char| n * 26 + ... } くらいしか思いつかん。

あとは ('A'..'Z').to_a.index(char) で 0 .. 25 に変換とか。
# ところで require 'jcode' は全角アルファベット対応?


280 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 08:30:10 ]
>>278
Windowsが異常なだけ。




281 名前:255 mailto:sage [2008/08/26(火) 08:31:03 ]
>>256
そうっすか残念(・ω・)
net/httpなんて使うなとか言う記事みた後なんでちょっと二の足を踏んでしまいます

282 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 08:38:59 ]
困ったことあったらpythonを使え

283 名前:デフォルトの名無しさん [2008/08/26(火) 09:11:19 ]
>>279
単にString#each_charがjcodeで拡張されてるメソッドなので入れなきゃ使えないだけで・・・。
injectについてちょっと調べてみます。ありがとございます。

284 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 10:22:25 ]
>>277
('A'..'ZZ').to_a.index('IV') + 1

256

285 名前:デフォルトの名無しさん [2008/08/26(火) 10:47:07 ]
>>284
これは目からウロコ。
'A'..'ZZ'がZからAAに繰り上げしてくれるとは知らなかったです。
有難う御座いました。

286 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 10:55:45 ]
これってやっぱりあの変態さに定評のあるsuccがバックエンドになってるのかな?

287 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 11:00:17 ]
>>281
初心者は自分の手で作ることを嫌がったら駄目だぞ
だいたい、どんなことがなぜ望ましくないかなんて耳で聞いだだけじゃわからんじゃないか

Net::HTTPでgetとheadとpostをするのは基本
ラッパーメソッドを作るのも基本
ヘッダやクッキーの処理にも手を出して、うわ何これめんどくせー、となった時点で既存の外部ライブラリを探す
こうすれば、その外部ライブラリの中の挙動もある程度推測できるし、不足点やバグがあったときに対処もできる
最初から外部ライブラリだけを使ってしまったのではなかなかこうはいかない

ということで、gemで "httpclient" をインストールすれ
HEADリクエストにも対応している

irb> require 'rubygems'
irb> require 'httpclient'
irb> client = HTTPClient.new
irb> res = client.head('www.google.com/')
irb> p res.header['Location']
["www.google.co.jp/"]


288 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 11:03:19 ]
>>286
irb> p "Z".succ
"AA"

   ___l___   /、`二//-‐''"´::l|::l       l! ';!u ';/:::l ', ';::::::l ';:::::i:::::
   ノ l Jヽ   レ/::/ /:イ:\/l:l l::l   u   !. l / ';:::l ', ';:::::l. ';::::l:::::
    ノヌ     レ  /:l l:::::lヽ|l l:l し      !/  ';:l,、-‐、::::l ';::::l::::
    / ヽ、_      /::l l:::::l  l\l      ヽ-'  / ';!-ー 、';::ト、';::::l:::
   ム ヒ       /::::l/l::::lニ‐-、``        / /;;;;;;;;;;;;;ヽ!   i::::l:::
   月 ヒ      /i::/  l::l;;;;;ヽ \             i;;;;;;;;;;;;;;;;;;;l   l::l:::
   ノ l ヽヽノ    /:::l/:l /;;l:!;;;;;;;;;',               ';;;;;;;;;;;;;;;;;ノ    l:l::
      ̄ ̄    /::::;ィ::l. l;;;;!;;;;;;;;;;;l            `‐--‐'´.....:::::::::!l
   __|_ ヽヽ   /イ//l::l ヽ、;;;;;;;ノ....      し   :::::::::::::::::::::ヽ /!リ l
    | ー      /::::l';!::::::::::::::::::::  u               ', i ノ l
    | ヽー     /イ';::l          ’         し u.  i l  l
     |       /';:';:!,.イ   し    入               l l U
     |      /,、-'´/ し      /  ヽ、   u    し ,' ,'  l
     |        /l し     _,.ノ     `フ"       ,' ,'  ,ィ::/:
     |       /::::::ヽ       ヽ    /     し ,' ,' / l::
     |      /::::::::::::`‐、 し      ',  /    u   ,、-'´  l,、-
     |      ``‐-、._::::::::::` ‐ 、     ',/       , -'´`'´ ,-'´
     |      _,、-‐'"´';:::::::::イ:l';:::` ‐ 、._____,、-‐'"´  u /
   | | | |    \ l::/ l::::::/リ ';:::::lリ:::::l';:::l l:l:::::l\  u /
   | | | |



289 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 11:08:10 ]
succ大人気w

290 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 11:12:54 ]
'z'.succ が "A" ではなく "aa" なのは変態でいいと思う
まあ 9.succ が 0 ではなく 10 なんだから予想の範疇ではあるが

'10'.succ が "11" なのも変態認定してよい



291 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 11:30:48 ]
それは普通

292 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 11:43:37 ]
'99'.succ が "100" になるのは変態

というか Ruby の succ への拘りは異常
succ を便利に使うのってどの言語由来?

293 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 11:50:38 ]
perlの ++ -- 由来
rubyが異常なわけではない

294 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 14:29:46 ]
特定サイトへの頻繁なWebアクセスのキャッシュ管理をDB的にやってくれるライブラリってないすかね
{URL => HTTPヘッダ} というハッシュを1個のpstoreに保存して、スクリプトの最初に完全に読み込んで使ってるんだけど、
もっといいのあるかな

295 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 14:41:59 ]
>>294
初心者スレ的にはハッシュとPStoreでサイト用にカスタマイズするのが一番だと思う
マルチスレッドでアクセスされてPStoreが壊れそうならsqlite3とかでデータベース使え

Railsのどこかに何かあるような気もするが、たぶん超ごっついと思われ

296 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 20:29:54 ]
alias suck succ

297 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 22:44:20 ]
>>294
揮発してもかまわないなら memcached

298 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 02:07:50 ]
ruby 1.8.7では
 [7,6,5].map.with_index{|x, i| x*i}
ができないので、かわりに
 [7,6,5].each_with_index.map{|x, i| x*i}
と、やるのを見かけました。

ならば inject.with_index 的な意味で
 [7,6,5].each_with_index.inject(0){|r, x, i| r+x*i}
と、できるのでは!と思ってやったところ、
 in `*': no implicit conversion from nil to integer (TypeError)
というエラーがでます。

色々試したところ
 [7,6,5].each_with_index.inject(0){|r, x, i| p x}
とやると
 [7, 0]
 [6, 1]
 [5, 2]
と出力されました。
injectの第2ブロック引数 には
[元配列の要素,インデックス] という配列が
渡されているようです。
(第3ブロック引数は何も渡されない)

なーんか、違和感があるんですけど、そんなことないですか?

299 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 02:34:14 ]
>>298
[7,6,5].each_with_index.inject(0){|r, (x, i)| r+x*i}

300 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 18:02:07 ]
rails2.1の入門教えてください



301 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 18:12:11 ]
アバウトだのう

Rails初心者スレってないんだよね、そう言えば
需要が微妙だけど…

302 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 18:14:29 ]
beginとendが予約語なので、範囲の開始と終了を表す変数名で困ってます
Rubyで一般的な開始と終了の変数名のペアってありますか?
文法ミスにならないようにbeginとendを慎重に使うというのは勘弁してください

303 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 18:21:47 ]
Rangeクラスではfirst、lastが使われている

304 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 18:36:52 ]
beginning-ending
opening-close(closing)
beg ed

305 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 20:21:49 ]
start finish


306 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 20:27:06 ]
finishはないわー

307 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 20:27:28 ]
a z

308 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 20:50:19 ]
仮引数では s と e をよく使う
が、文字列の s と 配列要素の e と被るのが難点

309 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 21:00:29 ]
start と stop
@begin と @end

310 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 21:01:43 ]
>>302
>範囲の開始と終了を表す変数名

from と to でいいような気がしてきた



311 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 21:12:25 ]
from と to は変換が絡む処理に見える
ファイルの移動とか
文字列の変換とか

312 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 21:19:30 ]
_beginと_endで

313 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 23:40:10 ]
>>311
そんなことないと思うけどなー
変換が絡む処理なら src と dst (source と destination) だよ

314 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 23:41:41 ]
ほほう
from,toじゃなくてsrc,dstかメモっとこ

315 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 23:52:09 ]
srcとdstはC時代の遺物のような気もする
いや、フルスペルで書くと長すぎるが

316 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 01:18:47 ]
dstは躊躇うけどdestだと受け入れてしまう気がする

317 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 02:27:59 ]
ええー

318 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 05:26:58 ]
src に「開始地点」以外の意図が多すぎるから、src - dst はピンと来ないなあ
dst と書かれていても何のことか悩んでググる自信がある

319 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 07:58:21 ]
s(tart) - g(oal)
in - out
src -dst
from - to
begin - end

ruby - ?

320 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 08:23:45 ]
b(egin) e(nd)
k(ey) v(alue) - ペア構造のキー値
r(et) e(lement) - reduce の 第一引数、第二引数

読んでもらおうという気が見えないコードが書けます



321 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 13:13:24 ]
使えるのが Ruby だけというのもよくないと思うので、PHP5 の勉強も始める

うっひょーこの関数全部フラットでこのまま覚えるのクラスによるクラス分けとかないの
配列(ハッシュ)からペア取り除くのに unset($array['key']) って書かないといけないのね
ずっと前にちょっとだけ齧った Perl4 を思い出した

322 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:20:00 ]
関数って普通フラットじゃね?
メソッドならレシーバいるけど

323 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:47:36 ]
パッケージとか、名前空間に入れられることもあると思う

324 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:53:45 ]
標準(添付・内部)ライブラリがRubyのように全部クラス構造になってて
配列は配列クラスのインスタンスで操作はメソッドを経由して行うとか言うことは確かにないな
PHP5はクラスを作れるが、内部は普通にPHP関数での遣り取りだ
インターフェースとしてのオブジェクト指向だね

325 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 18:18:09 ]
質問です。

#!/usr/local/bin/ruby
print "Content-type: text/html\n\n"

require "csv"
csv = CSV.open('file.csv,'r')

csv.each_with_index do |line,n|

a[n] = line[0]
b[n] = line[1]
puts

end

print"<html><body>#[a]</body></html>"
print"<html><body>#[b]</body></html>"

csv.close

このプログラムをうpしたのですが内部サーバーエラーが出てしまいます。
自分では間違っているところが見つけられませんでした
どうすれば正常に作動するでしょうか。
回答お願いします。

326 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 18:32:58 ]
~$ ruby -c test.rb
test.rb:5: syntax error, unexpected tIDENTIFIER, expecting ')'
csv = CSV.open('file.csv,'r')
^
test.rb:5: unterminated string meets end of file


327 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 18:33:35 ]
file.csvのところのクォーテーションが足りない
aもbも初期化されていないので配列かハッシュを代入すると良い
#[a]でなくて#{a}
htmlタグは1度以上出力しないほうが良い

試してないけどぱっと見てこのぐらい
あといきなりCGIよりも一度コマンドラインで試した方がエラーが見えてわかりやすい

328 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 19:38:00 ]
expectationsっていいんですか?
何か場当り的な網羅性の無いテストを推奨するような作りに見えるんですが

329 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 20:05:50 ]
>>320
俺は reduce は acc(mulator) e(lement) が好きだな。
あ、もちろんコードにあわせて sumとかにすることもあるけど。

330 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 20:35:27 ]
>>328
それは「あんな実行速度の遅いRubyのどこがいいのかわからない」という主張と同質だぞ



331 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 22:36:41 ]
>>326,>>327

回答ありがとうございました。
次からはコマンドラインで一度試してみます。

332 名前:デフォルトの名無しさん [2008/08/29(金) 06:33:27 ]
小林と申します。

メーリングリストの利用自体がはじめてで、安易な行動をとり
皆様に不快な思いをさせてしまいましたこと、心からお詫び申し上げます。
大変申し訳ございませんでした。

333 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 06:34:15 ]
I'm sorry . This is Test Mail
これはテストメールです。

334 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 08:52:27 ]
信者としては
こんなバカでも使えるわかりやすいRuby♥
と、 宣伝材料にしたいところだ。

335 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 10:41:33 ]
net/httpとWindowsのバージョンに関する質問です。
Ruby1.8.6+exerb最新版で固めたプログラム内でnet/httpを使用しています。
そのプログラムはVistaSP1とXPSP2では正常に動作しますが、XPSP3だと接続時に
「接続済みの呼び出し先が一定の時間を過、、、」と出て接続すらできない状態です。
なにかそのあたりの情報がありましたら、ぜひ教えてください。
宜しくお願いします。


336 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 15:27:37 ]
>>335
rubyのせいとかOSのバージョンが違うせいとか考える前に、問題のマシンでちゃんとネットワークに繋がってるのか調べた方がいい。
プロクシなしで普通にブラウザで外が見えるのか、とか。


337 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:48:45 ]
>>295
sqliteより、RubyレベルでまーしゃるしたHashのほうが速くて便利だと思う

338 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 22:11:31 ]
質問です

Webブラウザのように実際的な短時間でサムネイル画像を取得したいです
1個ずつサムネ画像URLをアクセスしてると10秒くらいずっとだらだらアクセスしててなんか申し訳ないです
(「申し訳ないのでスクリプトで取得すること自体を止める」ということは考えてないですごめんなさい)
スレッドをいくつか生成してアクセスすれば同じように所要時間を短縮できますか?

339 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 22:20:59 ]
このへんは一意な答がないんだよな
「多くの場合必ずしも好ましくない」というアドバイスが多すぎる

昔からの有名なものに「サーバ負荷考えてファイルアクセスのたびにスリープ入れろ」というのがあるが、
Keep-Alive全盛の今となってはクライアント側でスリープされて数十KBの接続を引き伸ばされるくらいなら
複数接続してもらってとっとと完了してもらって手放してもらえたほうがまだ有難かったりする

340 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 22:53:53 ]
>>338
Rubyのスレッドってそういう動作時間縮める用途に使えたっけ?



341 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 23:00:46 ]
IO待ちの間は他のスレッドに切り替わる…かもしれない

342 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 23:34:35 ]
ttp://slashdot.jp/article.pl?sid=06/12/20/0854256 を思い出した

>>338
Net::HTTP.start(host, 80){|http|
# 各画像ファイルをこのブロックの中でGET
}
こんな感じで多分望みの挙動になると思う

343 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 23:42:39 ]
require 'open-uri'
require 'benchmark'
uris = %w(www.yahoo.co.jp/ pc11.2ch.net/tech/ www.yahoo.com/).map{|e| URI(e)}

Benchmark.bm(2) do |x|
x.report{
uris.each do |uri|
uri.read
end
}
end
sleep 2
Benchmark.bm(2) do |x|
x.report{
threads = Array.new
uris.each do |uri|
threads.push(Thread.new { uri.read })
end
threads.each{|thread| thread.join}
}
end

# 結果
user system total real
1.150000 0.080000 1.230000 ( 2.655373)
user system total real
1.210000 0.060000 1.270000 ( 1.583636)

344 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 23:52:01 ]
外部待ちがないぶん、スレッド使ったほうが全体としては速いな

345 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 00:21:01 ]
そろそろNet::HTTP.startの中でThread#joinして意味不明の挙動に悩んでる頃なんじゃないかと思う

346 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 01:55:11 ]
変数名::メソッド

という書き方に違和感を感じるとともに、Rubyらしさも感じます。

347 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 02:36:56 ]


348 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 07:31:27 ]
こういうのじゃね

html = uri.read
case uri.host
when /www.example.com/ then
parser = TableParser_www_example_com
when /www.example.jp/ then
parser = TableParser_www_example_jp
end
datatable = parser::parse(html)

最初は文字列として連結して eval("#{classname}.#{method}") するしかないよなと思ってたんだが
普通にメソッド呼び出しのドットがくっついたときはさすがに参った

349 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 10:14:30 ]
てゆーか実はダラダラしてるほうが行儀正しいって突っ込みは無いのかよ

350 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 12:13:35 ]
>>349
あなたの使ってるWebサーバの設定を見直してみることをお勧めする



351 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 17:51:26 ]
java使いなんですがrubyに興味あって調べてます。
それで、rubyのホームにあるAPIは読みにくいので、どこかお勧めないでしょうか。
英語のサイトを探してもないみたいなんで・・

rubyはリテラルが多いので、少し使わないとすぐ忘れちゃうんですよね。

352 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 18:06:25 ]
刷新中の新リファレンスマニュアルはどう?
ttp://doc.loveruby.net/refm/api/

353 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 18:08:17 ]
と思ったけどリテラル一覧はないか。

これが見づらいということなんだよねぇ?
ttp://www.ruby-lang.org/ja/man/html/_A5EAA5C6A5E9A5EB.html

354 名前:デフォルトの名無しさん [2008/08/30(土) 18:21:25 ]
APIはいつもみるんで、MSDNみたいにリンクが多いよりは、Java docみたいな単純なテキスト(とページ内参照 a.htm#ref)のほうがいいと使いやすいと思います。

1.9のそれも使いやすそうですね。
文章多めで説明長・解説つきなら英語でやった方がいいんじゃないですか。
で、日本語のは短い説明だけで、よくアクセスされる必要な記事・解説は、英語の翻訳で済ますと効率的な設計かなと思います。

もしjavascriptでfile i/oができるなら、rubyじゃなくて、jsつかうんで。なぜなら、言語の機能よりも、文章がまとまってるって事が大事じゃないでしょうか。

ルビリストとかモルモンぽいんじゃなく、まともな人なら、コレが妥当なところでしょうか。
www.ruby-doc.org/core-1.8.7/index.html



355 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 18:29:33 ]
と、ここで提案してもしょうがないですし
JavaScript使いたいならJavaScript使ってくださいとしか

356 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 18:30:55 ]
C#とかDとかrubyはリテラル多すぎw

単純な制御とか処理はいちいちAPI探すの面倒だし、イテレーターつかわないんでwhile/forでいいよ。

OOも魅力的だけど、制御とか処理とかと関係ないし、肝心なOOのライブラリがないじゃんw

357 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 20:53:45 ]
昔VB5を少しだけやったときウィンドウに表示されてたんですけど
rubyは違うんですか?

プログラムは全くの初心者です・・・

358 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 20:57:09 ]
ウィンドウはプログラム言語がわざわざ出力先として敢えて作っているだけです
プログラムの基本は入力(と処理と以下略)と出力であって、
Rubyは入力だけを受け取って出力だけを行います

てか何か解説とか入門とか読んで試してるんではないん?

359 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 21:04:41 ]
>>358
Rubyの場合は出力先を指定しなければいけないのですか?
メモ帳とか・・・?

>>1のたのしいRubyをこの前買って 疑問に思ったから書き込みました

360 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 21:49:51 ]
増えていく可能性のある配列を再帰的に処理する場合ってどうすればいいですか?
以下のような感じのやつで2を表示させたいですが1で繰り返しが終わります。

#!/usr/bin/ruby -Ku

@i=[1]

@i.each{|a|
p a
b=2
@i << b
@i.delete(a) if b != nil
}



361 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 22:41:54 ]
>>360
挿入して削除したら、増えてないじゃん

362 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 22:46:38 ]
イテレータの中で要素数を増減させるのはあんまりよろしくないよなあ
javaだと例外飛んで怒られるくらいだし

363 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 23:15:09 ]
再帰的に、というのがわからんが、
単純に、

a = 0
while a < @i.size do
 ...
 a += 1
end

と書けば?

364 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 23:31:23 ]
>299
遠くからすみません。
そんな書き方できるんですね。
ありがとうございました。

でも、何で括弧がいるんだという辺りは
よく理解できませんでした。
勉強します。

365 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 23:42:04 ]
>>361
書き方へんなのでごめんなさい
回している配列が途中で条件によって増えていって
そうじゃない場合は増えなくなるので最後には
配列がなくなってほしかったんです。
って書いてて意味が分からなく。。

>>362
何となく駄目ってのは分かるのですが
今作ってるやつだと
それ以外思いつかなったので。

>>363
ありがとう
最後にretryつけたらそれでもいけたので
駄目だったらその方法試してみます。


366 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 00:26:55 ]
ああ、配列の要素の値を元にした処理の結果で、配列の要素が増えたり減ったりするんだな
で、新たに増えた配列の要素も、要素増減の処理に使うんだ

…なんかどっか設計が間違ってるような気もするが…

367 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 00:43:19 ]
スタックとかキューとか知ったら幸せになれそうなんだが違うのかな

368 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 01:25:17 ]
よくよく考えると反復処理とは言えないようなことを、イテレータでやっちゃうもんだから
ややこしいんじゃないか

369 名前:360 mailto:sage [2008/08/31(日) 01:39:14 ]
>>366,367,368
精進します。
とりあえず動くっぽいので動いてから
設計見直してみます。

370 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 02:18:00 ]
>>368
なんかそんなかんじするね

arr = [1]
while !arr.empty?
 elem = arr.shift
 value = somefunc(elem)
 unless value.nil?
  arr << value
 end
end

わかんねーや



371 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 03:32:49 ]
設計とか言う言葉を使うレベルじゃないと思うんだけど?

372 名前:デフォルトの名無しさん [2008/08/31(日) 07:06:42 ]
#! ruby -Ks

s1="あいう"
p s1.length

ar=s1.split (//)
p ar.length

日本語文字数を計算するのはコレしかないんですか?

それと、size/lengthは何か違いがあるんですか。
内部の実装で、sizeの方がsizeof (byte) * count
lengthの方が自動で str.split(//).size みたいな遅延評価
とかになってないんでしょうか?

373 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 07:57:05 ]
>>372
jcodeをrequireしてjsize/jlength
内部の実装は知らんがsize/lengthは同じだろ

374 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 14:23:42 ]
ruby-1.8.7-p72/string.c
rb_define_method(rb_cString, "length", rb_str_length, 0);
rb_define_method(rb_cString, "size", rb_str_length, 0);

再定義しない限り、Cのレベルで実体は同じ処理って事だ。


375 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 15:16:59 ]
includeのたびに新しく定義しなおすのはイケてない。
module A
 module ClassMethods
  def hoge
   puts 'Hoge'
  end
 end
 extend ClassMethods
 def self.included(m)
  super
  m.extend(ClassMethods)
 end
end
というのが定番。


376 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 15:26:16 ]
%w[A Z AA IV].map {|s| s.downcase.succ.tr("a-z", "1-9a-z").to_i(26)} # => [1, 26, 27, 256]

377 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 15:31:10 ]
すまん、アンカーつけ忘れた。
>>375>>252
>>376>>277


378 名前:デフォルトの名無しさん [2008/08/31(日) 21:31:49 ]
初心者なんですが質問です

処理を書くとき、classにした方が素敵ですか?

イテレータはeachの繰り返しにしか使ってないのですが
他に便利な使い方はありますか?


379 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 21:46:40 ]
> classにした方が素敵ですか?
メソッドにしないと非常にかっこ悪い

オブジェクト指向におけるクラスの概念はわりと高潔なものだが、
Rubyでは「処理をまとめてnewメソッドでスタートさせるもの」でもいいと思う
特に初心者のうちはクラスの使用条件というものについてうだうだ悩むのは無駄
てきとーにまとめて便利に使いながら自分で考え方見つければいい

あと、eachは基本だが、mapとfind_allの使用頻度と便利度は異常なので、
EnumerableやArrayクラスのメソッドはなるべく早く把握して適宜調べて使えるようになるといい

380 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 22:08:58 ]
>>378
>処理を書くとき、classにした方が素敵ですか?
基本的にはclassにした方が素敵
どこからどこまでをclassにするかは、プログラムの目的や個人の趣向などによる

慣れないうちは設計が難しいので
分かりやすいデータのまとまりを、class化することから始めるのがオススメ
掲示板の1記事をArticleクラスにするとか



381 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 22:15:48 ]
irb> def h(*p) ; p p.class; end
irb> h(1)
Array
irb> h(1=>2,3=>4)
Array

うわー困るうううっていうかめんどくさいいいい

382 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 22:20:13 ]
>>378
繰り返しじゃないから厳密にはイテレータの話じゃなくなるけど
IO#openみたいに後始末を自動でしたいときにも便利

383 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 22:22:21 ]
>>382
それ関係ないだろ
単にensure節の効果だ

384 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 22:22:48 ]
メソッドもクラスもしくはクラスもメソッドだったらいいのに

385 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 22:32:32 ]
たかがメソッド実行するたびに new する言語なんて遅くてやってられねえぞ

386 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 22:40:10 ]
>>381
def method(*para) は引数がまず配列になるからな
キーワード引数風ハッシュの処理するのもけっこうめんどくさい
なんかうまいライブラリとかないもんかね

387 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 22:55:49 ]
>>381
def h(a, *b) でいいんじゃないの?

388 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 23:52:11 ]
>>386
ActiveSupportを使うと、*argsで受けて、options = args.extract_options!


389 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 01:48:09 ]
feed-normalizerってどうですか?
検索してもほとんど情報が出てこないんですが

390 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 02:41:35 ]
perlおぼえたあと、
PHPとRubyでは、
どっちを学んだら相性いいですか?



391 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 03:52:48 ]
>>390
そりゃここじゃなくてperlのスレで聞きなよ
その時は「相性」という言葉を、どういう意味で使ってるのかも添えといた方がいい

392 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 06:55:48 ]
perlおぼえたら、perlを使うんじゃないの?まずはプログラムやりたいみたいだし、簡単だからVB.NETやるといいよ。

393 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 08:21:08 ]
んなもんなんのためにPerl覚えたかによると思うが。
趣味だってんなら好きにしろ

394 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 08:47:10 ]
>>390
WebやりたいならPHP、小物アプリならRuby
本格的アプリならJavaやC#

395 名前:デフォルトの名無しさん [2008/09/01(月) 10:32:08 ]
それ、全部VBでいいんでない?

396 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 10:46:23 ]
全部common lispでできるよ

397 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 10:58:01 ]
>>390
順番に意味はない。

398 名前:デフォルトの名無しさん [2008/09/01(月) 11:11:56 ]
>>394
ぜんぼ覚えるの大変だなw
C++は習得できなかったからないの?
JRubyがあるから、今のうちにJavaかな。

399 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 19:05:30 ]
サーバーサイドC++ってごっつすぎだろ

400 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 20:47:46 ]
>>390
結論からいうとPythonを覚ればそれでなんでも出来る。
軽くて速くてソースが美しいPython。文書も豊富でライブラリも充実してるPython。
仕様はかっちり、世界規模で開発されているPython(Google, MS, Yahoo!, etc.)

オープンソース系ならほぼもうPythonが事実上の標準言語になってる。

日本だけで閉じこもってて、遅くてソースが汚くて開発もいい加減なRubyとかやっても
無駄に終わる可能性があるよ




401 名前:デフォルトの名無しさん [2008/09/01(月) 21:36:57 ]
ソースが美しい・汚いとは、例えばどういうソースのことだ

402 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 21:39:56 ]
読み難い、読み辛いって読み替えればいいんじゃね?

403 名前:デフォルトの名無しさん [2008/09/01(月) 21:54:31 ]
どうしても分からないことがあります。

hash = Hash.new([])
array_a = [1, 2, 3]
array_b = [:a, :b, :c]
array_one.each do |a|
  array_two.each do |b|
    hash[b] << a
  end
end
hash # => {}

でhashに値が入らないのは何故でしょうか?
{:a=>[1,2,3], :b=>[1,2,3], :c=>[1,2,3]}
となってほしいのですが。一方、下はOKです。

hash = Hash.new(0)
array_a = [1, 2, 3]
array_b = [:a, :b, :c]
array_one.each do |a|
  array_two.each do |b|
    hash[b] += 1
  end
end
hash # => {:a=>3, :b=>3, :c=>3}

404 名前:デフォルトの名無しさん [2008/09/01(月) 21:57:34 ]
あーしまった。変数書き間違った。訂正します。

hash = Hash.new([])
array_a = [1, 2, 3]
array_b = [:a, :b, :c]
array_a.each do |a|
  array_b.each do |b|
    hash[b] << a
  end
end
hash # => {}

hash = Hash.new(0)
array_a = [1, 2, 3]
array_b = [:a, :b, :c]
array_a.each do |a|
  array_b.each do |b|
    hash[b] += 1
  end
end
hash # => {:a=>3, :b=>3, :c=>3}

???

405 名前:デフォルトの名無しさん [2008/09/01(月) 21:59:23 ]
読みやすいかどうかなら、記号が多いよりもJavaやC#のように長いメソッド名のほうが読みやすいんじゃないの?
もう、パイソンと関係ないけおd

406 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 22:08:05 ]
 [:a, :b, :c] 
は何か意味あるの?

407 名前:デフォルトの名無しさん [2008/09/01(月) 22:10:44 ]
>>406
ないです。単にシンボルの方がタイプ数が少ないという理由です。

408 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 22:13:16 ]
>>404
カッコ付きのHash.newは、該当キーがなかったときにその引数オブジェクト
自体を返す。つまり、

x = []
hash = Hash.new(x)
each/each
if hash.has_key?(b)
hash[b] << a # ここには絶対来ない
else
x << a
end
end/end
みたいな感じ。

たぶんやりたいことは、ブロック付きのnewで
hash = Hash.new {|h, k| h[k] = [] }
じゃないかな。該当キーがなかったときに、
新しく空の配列を作って hash に代入する。


409 名前:403 [2008/09/01(月) 22:29:06 ]
> たぶんやりたいことは、ブロック付きのnewで
> hash = Hash.new {|h, k| h[k] = [] }
> じゃないかな。該当キーがなかったときに、
> 新しく空の配列を作って hash に代入する。

その通りなんですが、
x = Hash.new([])
x[:a] << 1
x[:b] << 2
x # => [1, 2]
これは大丈夫なのに、何でだろうと思って。


410 名前:404 [2008/09/01(月) 22:32:02 ]
あーすみません。また書き間違った上に、なんか根本的に誤解してる>自分
出直してきます。



411 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 22:41:51 ]
>>407
タイプ数が少ないって何のこと?

412 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 22:42:16 ]
x = Hash.new([]) # だいたい x = Hash.new; x.default = [] に同義
>> x[:a] << 1
=> [1]
>> x
=> {}
>> x[:b] << 2
=> [1, 2]
>> x
=> {}
>> x.default
=> [1, 2]


413 名前:403 [2008/09/01(月) 22:50:04 ]
ほんといろいろすみません。

>411
文字列じゃなくシンボルを使った理由を聞かれているものと勘違いしました。

>412
なるほどやっと分かりました。
というか、探したらちゃんと書いてあった・・・orz
www.ruby-lang.org/ja/man/html/trap_Hash.html

414 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 23:22:22 ]
>>413
rubyのhtml help入れれ

415 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 03:07:58 ]
パイトンはやったことないからわからんなぁ。

416 名前:デフォルトの名無しさん [2008/09/02(火) 17:09:52 ]
Loggerでログファイルを毎日Rotateさせようと思ったんだけど

>> require "logger"
=> true
>> log = Logger.new("foo.log", 'dairy')
=> #<Logger:0x33fe50 ...以下略>
>> log.info "foo"
=> true
>> log.info "foo"
Logger::ShiftingError: Shifting failed. 'foo.log.20080902' already exists.
>> log.info "foo"
Logger::ShiftingError: Shifting failed. 'foo.log.20080902' already exists.

ログを出力しようとするたびに ShiftingError が出るんだけどこれって何の冗談?


うちの環境は↓
$ ruby -v
ruby 1.8.6 (2008-03-03 patchlevel 114) [universal-darwin9.0]


417 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 17:11:21 ]
infoってメソッド名がおかしいんだよ
writeに改名しろ

418 名前:416 mailto:sage [2008/09/02(火) 17:17:46 ]
logger.rbを見たら 'dairy' じゃなくて 'daily' だった.あー恥ずかしい.
しかし引数間違っててもスルーって不親切だよなあ


419 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 17:21:31 ]
ruby厨きめえwwwwww
これからはpythonの時代だろks
うぇwっうぇwwwww

420 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 17:33:45 ]
Rubyだけ使ってるとでも思ってるのかね



421 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 17:34:42 ]
煽っているようでちゃんとsageているところに
育ちの良さがにじみ出てしまっているな

422 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 17:37:31 ]
>>420
そうじゃないと都合悪すぎるだろ
やろうと思えば複数言語の比較検討ができるとか断じてあってはならない

423 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 17:41:19 ]
釣れますか?

424 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 17:47:22 ]
結局rubyなんてwebProgでしかないし、pythonのほうが将来がある

425 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 18:27:19 ]
ルビみたいにメインストリームの横に張り付いているちっぽけな貧乳は今後成長する可能性も2.3%くらいあるが、
醜く大きくなったおっぱいそんは後は垂れるだけ。

426 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 18:43:07 ]
だっておwwwwww

427 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 18:57:20 ]
どうでもいいけど最近貧乳の良さが分かってきた

428 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 20:16:15 ]
俺は最初から貧乳が好き

429 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 20:36:26 ]

もともと巨乳好きだが最近貧乳にも興味あり

430 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 21:07:59 ]
何つうか、適材適所を知らない奴はPythonあたりでもダメなんだろうな。



431 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 21:13:21 ]
Pythonの威を借るDQN

432 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 21:31:36 ]
虎ってか蛇か

433 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 22:32:23 ]
恋するプログラムを読み始めたんだけど、2−2最初のサンプルからつまづいた・・・
「ワンツー」と日本語が入力できないんですが、どうしたらいいですか?
半角英数しか使えないよ

434 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 22:35:35 ]
コマンドプロンプトならAltを押しながら、半/全キーだったかな

435 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 23:04:50 ]
企業や学校の場合はconime対策でそもそも日本語入力機能が無効にされてることも稀にあるので注意だ

ちなみにタイトルバーを右クリックすると編集用のショートカットキーコンボがわかるので利用するといい

436 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 00:17:02 ]
下手に最初から日本語使って予期せぬエラー増やすよりも
慣れるまでは全部半角英数でやるのが無難

437 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 00:17:24 ]
>434
ありがとう。解決しました。
>435
よくわからない。
範囲指定(K)ってあるけどシフト、ctrl、altと組み合わせても発動しないし

というかセーブする方法がまだ出てきてなくてこの先生きのこれるか心配です

438 名前:デフォルトの名無しさん [2008/09/03(水) 00:20:43 ]
俺たちの先生は、キノコだったのか!!

439 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 01:09:46 ]
>>437
えーとだな、コマンドプロンプト(DOSプロンプト)は、Alt+スペース で右クリックメニューの1階層目が開く
で、Eを(単独で)押すと編集メニューがさらに開いて、貼り付けとかが選べる
たとえば、クリップボードにあるURLを貼り付けたい場合は「Alt+スペース、E、P」の順にリズミカルに押せばいい

で、範囲選択だが、これは「Shift+方向キー」でコピー元の範囲選択を矩形で開始できる機能だ
コピーしたい部分を選択し終わったらEnterを押すと、それまでの反転部分が改行つきでクリップボードに入る
ぶっちゃけ使用頻度は高くないし、マウスで範囲を選んでEnterすれば同じことなのでありがたみも薄い

440 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 01:21:06 ]
rubyのCPANはどこにあるの?



441 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 01:27:58 ]
CPANはPerlの(以下略

Rubyforgeをgemコマンドで利用するのがデファクトスタンダード
CPANほどには洗練されていないし、CPANほどには無闇大量に登録されてない(そもそも少ないというかPerlが異常)

Windows版Rubyなら、最初からgemコマンドが使えたはず
LinuxとかBSDとかの場合はrubygemsのような名前のパッケージがあると思われ

442 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 01:31:52 ]
サイトとしては存在してないってこと?
ブラウザでみれるようなの。

443 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 01:32:39 ]
ああサイトはあるけど
利用の形態はgemコマンドということね。

444 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 01:33:57 ]
>>442
rubyforge.org/
# rubyforgeでぐぐれ、と書こうとしたが、ぐぐったらトップが出てこなかった。

445 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 09:10:12 ]
拡張ライブラリを作ろうと思ったんだけど
解説してるサイトに書いてある「$ make」の意味が分かりません。


446 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 09:16:33 ]
>>437
xyzzyでshell起動すると、エディタ画面でコマンドプロンプトが使えるよ。

Alt+x → 'shell' と打ってリターン

447 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 10:15:09 ]
>>445
makeコマンドを実行しろってこと。

448 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 11:06:53 ]
まあCとRubyでのプログラミングはできるわけだし、それくらいの推測はできて欲しいよな

make は UNIX コマンドだ(語弊あり)
UNIXやらLinuxやらにはたいてい入ってるが、Windowsには普通入ってない
make だけをどっかからインストールするといいが、
プロンプトが $ であるところから見て、そのサイトはWindows考慮してないんじゃないかとも思う

449 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 11:20:50 ]
まぁ、要するに仮想マシンかなんかにLinux(語弊あり)を入れた方がいいってこった

450 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 11:22:39 ]
Linux以外でRuby使う奴って馬鹿だろ?



451 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 11:27:27 ]
ううん そうでもないよ

452 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 13:28:27 ]
FreeBSDで使ってますが何か?

453 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 13:54:40 ]
BSDは基本でしょwww

454 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 14:08:53 ]
>>453
kwsk

455 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 14:12:44 ]
いや、今はMacOSバージョンXでしょ。
実質的にBSDの商用GUIバージョンのヂストリブーションだしwww
MacOSXはINTELもあったんじゃなかったか?

456 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 14:17:51 ]
つまんねえ

457 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 14:18:01 ]
本物のハッカーはソラリスじゃないの?x86あるし無料だし。
FreeBSDの設定とかよりソラリスをHPで紹介してるのとか凄くない?

458 名前:デフォルトの名無しさん [2008/09/03(水) 14:30:33 ]
ブリヂストン?

459 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 14:30:35 ]
>>456
変なの居ついたよな
当人はスレに参加しているつもりなのだろう

460 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 14:58:43 ]
そうやって排他的だとperlみたいにコミュニティーが宗教っぽくになっていくと思わないか?



461 名前:デフォルトの名無しさん [2008/09/03(水) 15:01:31 ]
rubyはもともとモルモン教なんだが?

あの貧困層の宗教で有名なモルモン教だからrubyの洗脳はperlよりもひどいよ

462 名前:デフォルトの名無しさん [2008/09/03(水) 15:02:44 ]
実際のところ、モルモンも創価学会とドッコイだろww

463 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 15:11:24 ]
perlと比べれば、rubyは後発だけあって現状の要求をみたしている言語としての出来はいいんだけどな。

464 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 15:21:48 ]
>>460
どっちかってえと公平に受け入れよとわめくほうが宗教っぽい

465 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 15:35:52 ]
惑星ソラリスは破壊されたんじゃ?

466 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 17:56:58 ]
おメーラいい加減にせえよ
スレ違いにもほどがあるw

467 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 20:40:34 ]
すいまメ〜ン!

468 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 21:18:20 ]
SonOS 4.1あたりまでの人にとってはSolarisはまがい物なんじゃなかろうか。


469 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 21:40:09 ]
>>900までこのスレはOSの話!
Rubyは別でどうぞ(違

470 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 22:57:18 ]
rubyでExcelを読み込みたいのですが、日本語が化けてしまいます
かなり調べてみたんですが、何が悪いのかわからないです。。不適切な箇所を指摘してもらえないでしょうか

require 'win32ole'
class Excel_test2

def getExcel
xl = WIN32OLE.new('Excel.Application')

book = xl.Workbooks.Open(ファイルの絶対パス)
begin
book.Worksheets.each do |sheet|
sheet.UsedRange.Rows.each do |row|
record = []
row.Columns.each do |cell|
record << cell.Value
end
puts record.join(",")
end
end
ensure
book.Close
xl.Quit
end
end
Excel_test2.new().getExcel
End

Rubyのバージョンは1.8.6
WIN32OLEのバージョンは0.7.2と出てました



471 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 23:10:11 ]
日本語が化けるだけならwin32oleはたぶん関係ないな

472 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 23:18:31 ]
「Excelを読み込む」という表現に危機感を感じる
ダブルクリックするとExcelが起動するからExcelだと思ってる人が日本中に10万人くらいいるがその類かもしれん
csvファイルやtsvファイルも読めるわけで、端末文字エンコードとあってないファイルの場合は当然化けるぞ

473 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 23:29:19 ]
どんな日本語がどう化けたか書きなさいって

474 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 23:43:56 ]
>>473
発生日 名称 マグニチュード 死者・不明者 死者の有無
              ↓
, , } O j ` [ h, ҁE s , ҂̗L
こういう感じです

475 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 23:51:50 ]
そうして>>471-472を無視する

476 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 23:54:21 ]
単に文字エンコードやExcelが扱うファイルの知識がないんだろう
Ruby以前の問題だな
win23oleはRubyほとんど関係なくて、Windowsプログラミングの知識が大量に要るぞ

477 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 23:59:14 ]
なんにも知らないくせにw

478 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 00:03:00 ]
煽ったってこれ以上は別に出ないぞ

479 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 00:04:04 ]
WIN32OLE.codepageを変えてみるとか

480 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 00:10:51 ]
読めてる以上、文字コードだけの問題だしなあ
まさか本当にUTF-8のCSVファイルだとかそんなオチだったり



481 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 00:11:18 ]
FreeBSD使ってる人は、やっぱりSunOSも知ってる人なんじゃないの?
その流れでソラリスに辿り着くか、派手好きはMacOSXかなってことなんだけど。
デビアンはイマイチゴチャゴチャだし、オープンで英語得意なら、やっぱFreeBSDのままかなw
そういえば、物理学科のハッカー先生元気かな…

482 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 00:15:58 ]
MacやLinuxは女々しい奴か宗教家ぶれの奴しかいないけど、BSDは本物のハッカーしかいない。
別板にある犬小屋スレ見ればわかるだろw
windoはエサ待ち状態のサルばかりか?

483 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 00:18:41 ]
とりあえず Excel 2007 で直接日本語を入力して xls および xlsx 両方で保存した上で
>>470 をコマンドプロンプトからそれぞれ実行したが、特に文字化けはしなかった。
cell.Value から返るのは Shift_JIS だから、あとは表示環境の問題かと。

484 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 00:20:46 ]
>>479
WIN32OLE.codepageをUTF-8にしてみたら正常に出力されました
ありがとうございます

文字コードが正直さっぱりわかってないのでもっと勉強します。。

485 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 00:24:46 ]
スクリプトがUTF-8なのかね

486 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 00:30:54 ]
おお、勘でアドバイスしたら当たったぜ

487 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 01:29:06 ]
エスパー覚醒おめ

488 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 08:26:31 ]
>>481
BSDが染みついた人ならソラリス(2以降)にたどり着いたらUターンするだろJK


489 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 09:09:46 ]
今の時代x86で十分だし、そうするとwinかbsd/linuxでしょ。
3Dの凄い計算とか気象予測みたいなのが必要なわけでもないし。
ただ、PCを部屋に5台以上おくとクーラーとか空調もやんないといけなくなるし、PC技能とは別問題に遭遇する。

490 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 09:14:26 ]
じじいは隔離スレにカエレ



491 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 09:55:38 ]
>>490
当人はスレに参加しているつもりなのだろう

492 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 10:06:20 ]
rubyはモルモンじゃなくて、エホバじゃなかったか?
あの、デザインパターン本のキリスト教の人と同じで。

493 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 10:07:57 ]
モルモンです。

494 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 10:26:08 ]
結城さんはモルモンなの?

495 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 10:26:38 ]
プロテスタントのクリスチャンというのが怪しいよな
日本でカトリック以外なんてエホバか統一教会だし

496 名前:デフォルトの名無しさん [2008/09/04(木) 12:21:27 ]
rubyは型の宣言は不要なんですけど、実際はメソッド呼び出した後、何の型が戻るのか分からないと
次の操作が出来ないので、なんだかやりにくくないですか?
特に正規表現で引数とか戻り値がいろいろあるので、結局はOOだと型の明示が必要なのかなと思っちゃいます。エラーでも型の注意が入るし。

とにかく =~ とか $~ の旧世代のレガシーはもうOOじゃないし、廃止して欲しい。

497 名前:デフォルトの名無しさん [2008/09/04(木) 12:22:13 ]
と思いませんか?

498 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 12:24:23 ]
javaでも使ってろよ

499 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 12:29:09 ]
配列に正規表現がマッチするわけないし
数値に正規表現がマッチするのは変だろ
result = str.scan(re) でいちいち配列の配列が返ってくるのはなんか違わね? というのは確かに連綿と指摘はあるが
まあそれなら re.match(str) で MatchData オブジェクト使えばいいんじゃねという話ではある

500 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 12:37:48 ]
その辺りはマニュアルにしつこく書いとくと、日本人ならrubyに流れるんじゃないですか?
=~ [] MatchData String Regexp とかどれなのか覚えて整理するのに1日使ったんで。
perlよりはまとまってるみたいですけど、perl awkのしがらみでもあるんでしょうかw
触ってみた感想は、Javaみたく、MatchDataでまとめていいんじゃないかな。



501 名前:デフォルトの名無しさん [2008/09/04(木) 12:39:24 ]
というか、連綿とかムズカシイ言葉知ってますねww

502 名前:デフォルトの名無しさん [2008/09/04(木) 12:54:31 ]
開発者たちは、数学知ってるんだろうし、多価返却はダメだってことを分かってると思うんですけど。
既存の=~ $~ とか、class Regexpはそのままで、新規にruby regexpと称して戻りは全て1つのクラスで返るようにrubyのAPIとして新しくクラスとメソッド名を設計すればいいんじゃないですか?

あれこれクラスにまたがっていて、まったく意味不明でした。

$~はスレッド・ローカルみたいですけど、OO的というかスレッド的に馴染まないというかどうかと…

503 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 13:03:28 ]
>>502
お前実際にはスクリプト書いてないだろ

504 名前:498 mailto:sage [2008/09/04(木) 13:05:00 ]
>>502
っ【ソースコード】
っ【直談判】
っ【>>499

なんかスレのターゲットから超えてる気がするw

505 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 13:09:34 ]
>>503,504
いや、別に初心者じゃないんでw

506 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 13:14:11 ]
以上、壮大な釣りでした。

507 名前:デフォルトの名無しさん [2008/09/04(木) 13:20:42 ]
あと意味不明だったのは、
p => Object.inspect
puts => to_a => to_s
print / printf => to_s

だったかな。コレもよくオーバーライドしたり参照するんで、マニュアルによろしくですです。

ほとんど
for line in file : p line end
while line=file.gets : p line.chomp!.strip! end
しか使ってませんよ。結局やってることはOOじゃないし、eachとかいちいちAPIみるの面倒でしょw

508 名前:デフォルトの名無しさん [2008/09/04(木) 13:34:36 ]
リテラルも多いし、返却値もいくつものクラスにまたがっていて、さらにデバグの出力先もいろいろあって、忙しい言語ですね。
これでも十分複雑なんで、半年も触らないときっと忘れちゃいますよ。
javascriptの方はプロトタイプ言語で少し概念が違うんですけど、ほぼジャバと同じだし半年しても忘れることはないでしょうな。
OOとかクラスについてはjava使えるんで、regexpは、jsでIO使えるならjsでいいかなってのが感想ですw

509 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 13:56:38 ]
じゃあJavaScriptスレに行ってください。
このスレは2度と見る必要ないですよね?

510 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 14:20:33 ]
本屋で見かけた初めてのRubyが第3刷だった件について



511 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 15:00:02 ]
よい本が売れるのは問題ない
店によっては入った週に売り切れたりするのは立ち読みしにくいのでやめてほしい

512 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 19:22:54 ]
>>500
>=~[]MatchDataStringRegexpとかどれなのか覚えて整理するのに1日使ったんで。

StringとRegexpをマッチさせたらMatchDataが作成される、というだけで、
何も難しくないと思うんだけど、どのへんがわかりにくかったですか?

>触ってみた感想は、Javaみたく、MatchDataでまとめていいんじゃないかな。

Javaもjava.lang.Stringとjava.util.regex.Patternとjava.util.regex.Matcherを使っているから同じだと思うんですけど、どこが違うと思いますか?

>>502
>既存の=~$~とか、classRegexpはそのままで、新規にrubyregexpと称して戻りは全て1つのクラスで返るようにrubyのAPIとして新しくクラスとメソッド名を設計すればいいんじゃないですか?

これは意味がよくわからないんですけど、どういうクラスとAPIを提案しているのか、もっと詳しく説明してみてください。
もしかしたら、すごくいいクラス設計が提案されているかもしれないので。
よろしくお願いします。


513 名前:デフォルトの名無しさん mailto:sage [2008/09/04(木) 19:28:04 ]
>>507
>あと意味不明だったのは、
>p=>Object.inspect
>puts=>to_a=>to_s
>print/printf=>to_s
>
>だったかな。コレもよくオーバーライドしたり参照するんで、マニュアルによろしくですです。

この書き込みのほうが意味不明。どれもマニュアルにそのまんま書いてあるんだけど、マニュアルをどうして欲しいの?

514 名前:デフォルトの名無しさん [2008/09/05(金) 01:20:25 ]
pack/unpack の指定も記号的で意味不明なんで、一文字で略さないで、ちゃんと定数やエナムにして
意味を含めてくれませんか?パブリックなライブラリなわけで、自分仕様のライブラリじゃないでしょw

パールのしがらみをもったままなんでしょうけど、このままだと第2のパールに成り下がるだけじゃないですかね。
regexpは別言語でもできるんですけど、ネイティブへのアクセスは、POSIXの機能が結構使えるルビーが(グルーとしては)一番かなって思うんですけど、この辺りどうでしょうか?


515 名前:デフォルトの名無しさん [2008/09/05(金) 01:22:10 ]
それと、クラスの設計はやっつけ仕事じゃなくて、普通は後から変更できないんで、数年かけてちゃんと設計してもらって、パールの猿真似ばかりやってないで、仕様をまとめてもらった方がいいですよ。
ルビーには特異クラスって業もあるんですけど、初めのライブラリを新規に用意するのは、そういうプロトタイプ的な機能に頼って期待する以前の問題じゃないかなと思います。

516 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 01:22:11 ]
>>514
お前実際にはスクリプト書いてないだろ
マニュアル逐次読みしながら論う釣りは帰れ

517 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 01:31:15 ]
自 分 で 作 れ

518 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 01:48:04 ]
>>516-517
コードを書こうとして、packの機能を使おうとしたら「複雑すぎw」てことじゃないの?まあ、サルにはこの気持ちは一生理解できないんだろうけどw

519 名前:デフォルトの名無しさん [2008/09/05(金) 01:53:41 ]
pack/unpack は機能が豊富だから独立したクラスにして欲しい。1.9のfutureで頼んます。

520 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 01:58:07 ]
packはあれはUNIXそのままが一番わかりやすいしなあ
正規表現が全くオブジェクト指向じゃないとか
sprintfやstrftimeのフォーマット文字列が意味不明だと文句言われるのと
割と似ていると思う



521 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 01:58:09 ]
>Ruby 1.9.1の仕様は9月25日で凍結されます
急げ

522 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 02:10:16 ]
急いでないんで、1.9.8まで待ちますw

printfはインタプリタなんで、packの引数による機能指定と、全然関係ないと思うんですけど?

APIも仕様も熟読しないような、ナンチャッテさんはその程度ですかw

523 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 02:16:40 ]
>>520
るびまで青木さんが、
packの書式なんて誰も覚えてねーよバーカバーカとか書いた上で
自前で簡単なDSLを定義してたようなw

524 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 02:24:10 ]
なんか、rubyが旧世代のダメ出しされてるってかんじーww


525 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 02:41:14 ]
>printfはインタプリタ
詳しく説明願います

526 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 02:45:10 ]
あなたが勉強不足なだけなんでしょうな。

527 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 02:55:19 ]
初心者スレで粋がるのがかわいいじゃないか

528 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 02:58:22 ]
仕様に対する不満はスレ違いだ。本スレかアンチスレにでも行け。
つーか、メーリングリストで言えよ…

529 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 02:59:55 ]
メーリングは、「あーでも、こーでも」いってて皆でモルモンしてるじゃんw

530 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 03:03:46 ]
API君の日本語が意味わからなくて、対応に困ります



531 名前:デフォルトの名無しさん [2008/09/05(金) 03:05:22 ]
本スレってあそこか。
業界通っぽくしてるサルばかりじゃないの?
所詮下請けにかわりないし、愚痴ってるだけで、BSDじゃないけどサル小屋かなww

532 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 03:06:15 ]
日本語でおk

533 名前:デフォルトの名無しさん [2008/09/05(金) 03:10:37 ]
>>529-532

はいはい。IPAが男女共同参画会議に出席するようですよ。

534 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 03:12:38 ]
ボクちゃんは賢いですねー
おりこうさんだからv8でもいじって、遊んでましょーね

535 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 03:15:12 ]
>>527
そうやって羨ましがってばかりいないで、少しはプログラミング言語 Ruby に貢献したらどうよ?
どうせおまえみたいな無能は、指くわえてみてるだけじゃないの??

536 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 03:18:12 ]
IPAは税金ばっかり使って、結局フォントだけが成果物じゃん。もう国がサポートすることもないし、解散でいいよ

537 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 03:19:21 ]
誰が何の話してるかわけわからんぞ

538 名前:デフォルトの名無しさん [2008/09/05(金) 03:20:12 ]
はいはい。ここは初心者スレなんで、愚痴は「サル小屋」でやってくださいましww

539 名前:デフォルトの名無しさん [2008/09/05(金) 03:43:25 ]
あのー、IPAでいいんで、漢字コンソール(KONのクローン)作ってもらえまんせか?
konが今となっては機能不足なので、freebsd入れずにwindows使う羽目になってるんですが。
英語には不自由はしてないんですけど、クライアントの送信とかログとかも含めて開いたファイルの中身が文字化けしたら何のファイルなのかさっぱりなんで、漢字端末よろしくです。

540 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 04:38:04 ]
ジャバとかルビーとかパールとかカタカナ表記が流行ってるんですか



541 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 04:43:48 ]
>>539
使ったことないけどjfbtermとか

542 名前:デフォルトの名無しさん [2008/09/05(金) 12:09:44 ]
jfbtermはポーツにあるみたい

543 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 12:19:21 ]
konって何年前だよ。ほんと生きた化石みたいなやつだな。

544 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 12:21:30 ]
konの表示は当時からしょぼかった・・・やっぱ資本の差かな・・・フォントの次はIPAさん、俺からも頼のんます

545 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 18:11:37 ]
おっさんは引き際というものを知らんな

546 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 19:58:37 ]
カタカナ表記で書いてる奴は基本的に釣りでしょ。

547 名前:デフォルトの名無しさん mailto:sage [2008/09/05(金) 22:35:11 ]
ルビー

548 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 00:30:31 ]
>>514
>pack/unpackの指定も記号的で意味不明なんで、一文字で略さないで、ちゃんと定数やエナムにして
>意味を含めてくれませんか?
これは無理です。printf()の書式とおなじようなものだと考えてください。
あなたがprintf()の書式にも文句言う人だとどうしようもないですが。。。

>>515
>それと、クラスの設計はやっつけ仕事じゃなくて、普通は後から変更できないんで、数年かけてちゃんと設計してもらって、パールの猿真似ばかりやってないで、仕様をまとめてもらった方がいいですよ。

どうも正規表現あたりのクラス設計に不満があるようですが、どういう設計をお望みでしょうか。
String, Regexp, MatchData の3つがあるのは Javaでも同じですが、どこがわかりにくいですか?またどう変更してほしいのですか?

>ルビーには特異クラスって業もあるんですけど、初めのライブラリを新規に用意するのは、そういうプロトタイプ的な機能に頼って期待する以前の問題じゃないかなと思います。

言っていることが意味不明なので、わかりやすく書き直してください。


549 名前:デフォルトの名無しさん [2008/09/06(土) 04:01:49 ]
なんだこいつ?新手の荒らしか?

550 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 04:29:03 ]
require/includeでクラスやモジュールを使いたいのですが、

ruby "-I c:\myruby\mylib" source.rb

とやってソース内部でrequire/includeとやってもロードされてないようです。
何が足りないんでしょうか?



551 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 04:51:35 ]
>>548
おまえが無能だって事はよく分かった。

552 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 05:03:00 ]
頭が良いが性格は悪い、というキャラを目指す奴の大半は
どっちも悪いキャラに終わるよな。

553 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 05:25:14 ]
>>552
どれとどれが「どっちも」ってのなんだ?
これだけで、おまえが低学歴なのがよーく分かるw

554 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 05:45:12 ]
目の前の文章の意味すらわからないのに、
目に見えない色んなことは次々と「わかっちゃう」のも
特徴の一つだね。

555 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 06:41:29 ]
低学歴は夜間の大学を受験したらどうだ?学歴でバカにされるの嫌だろw

556 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 08:27:04 ]
ロジックとかは経験でカバーできます。


557 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 08:34:40 ]
>>552 カンベとかルビキチとか。

558 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 08:57:57 ]
>>556
そうすると、経験でカバーできないのはなんでしょうか?

559 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 10:44:41 ]
>>550
サーチパスにC:¥myrubyを追加して、そこからmylibをrequireするなら、
ruby -I C:¥myruby -r mylib source.rb


560 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:04:42 ]
>>550
バックスラッシュは直後の文字をエスケープするから、
"c:\myruby\mylib" は c : \m y r u b y \m y l i b と解釈される

ruby -I "c:/myruby/mylib" source.rb

または

ruby -I "c:\\myruby\\mylib" source.rb

で動作するはずだ

スクリプト開始時の require 前に $LOAD_PATH 配列に "c:/myruby/mylib" という文字列を要素として追加してもよい
なるべく配列の先頭に入れるといいと思う



561 名前:デフォルトの名無しさん [2008/09/06(土) 11:22:07 ]
ご親切にありがとうございます。
 $: . push ("c:/myruby") ;
としてるんですけど、ソース1行目に、
 #! ruby -I "c:/myruby"
だと無理みたいです。

それと、ruby -help でみると、-Idirectory -rlib -Kcode とかなっていて、空白いるのかいらないのか不明だし、なんかヘルプの方が混乱しているみたいです。
公式レファレンスの説明も1行あるかないかだし、やる気なくなりました。
BSDのインストールと日本語化が困難でやる気なくなって、vine linuxで済ますアレと同じ感覚ですw

あと、module Mymo とinclude/require関数とかも日本語だと説明不足で英語サイトだと著者の思想も込みで説明が詳しすぎて、結局モルモン思想はウザくてやる気が起きません。
rubyのコミュニティーは、rubyプラットフォームをツールとして広める気があるんのか疑っちゃいますw

562 名前:デフォルトの名無しさん [2008/09/06(土) 11:27:24 ]
関数とカッコの前後に空白どうとか言う警告を削除してもらえませんか?

 obj . push ( a , b )

じゃ言語としてダメでありサポートしないのか、それともいいのかハッキリしてもらえませんかねー
こんなところまでモルモン思想の押し付けをワーニングするのはもう止めませんか?ウザいんですけどw

563 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:34:32 ]
>>561
スクリプト1行目のShebang行は規則に則った単なる文字列だ
シェルで実行されるわけではない
シェルと同じ動作をすることを期待されても困る

564 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 11:57:30 ]
お前らが優しいのは十分わかったから、いい加減かまってちゃんの相手をするのはやめてくれ

565 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 12:02:05 ]
ライブラリの設計が悪いんだろw

566 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 13:12:43 ]
ここんとこ毎日初心者スレにくるところをみると、どこでも相手にされてないようだな。

567 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 13:15:47 ]
というよりも、戻り値の型で

p nil==false # false

は勘弁して欲しいけど。
このスレのレベルだと、どうしてなのか分からないんだろうと思う。

568 名前:デフォルトの名無しさん [2008/09/06(土) 13:17:36 ]
ルビーは犯罪者も使ってるんですよ!刑務所の犯罪者たちにエサを上げないで下さい!!

569 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 13:22:22 ]
本スレのITドカタたちよりは技術的な質問が多いな。あのスレはカスばっかりでもうダメだろ…

570 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 13:25:40 ]
たしか…



571 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 13:40:21 ]
>>566
おまえもスレに張り付いて、いったい何やってんだ?仕事もしてないんだろw

572 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 13:46:21 ]
それが罵り言葉になる環境にいるなんて可哀想


573 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 13:46:56 ]
土方は蔑称だから使っちゃダメだよ。

574 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 13:47:30 ]
571は今日が土日だということを理解できていないらしい

575 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 13:47:49 ]
宇宙大王の言い分
このスレ: 低学歴・無能の集まりなので分かってくれない
ML: モルモンなので分かってくれない
リアル: 大人は分かってくれない

アドバイス
あなたを分かってあげられるのはあなただけ。自分を大切にしてあげて。

576 名前:デフォルトの名無しさん [2008/09/06(土) 13:52:49 ]
はいはい。もう分かったから死ね

577 名前:デフォルトの名無しさん [2008/09/06(土) 13:56:57 ]
rubyを使うようなのはwebクーチャーとか言う職業の人たち、つまりITドカタでしょwwww
たーまにbsdとかも使ってるシステムの奥の方の人も居るけどwwwww
2chでIPAの愚痴を言うようじゃ、仕事も大したことやってないし、せいぜい雑用係のカス野郎ってことが良く分かるwwwwwwwwカスw

578 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 13:58:32 ]
いや、IPAは無駄だろ。除法処理技術者の資格をもっていても、もっていなくても、別に金にならないし。

579 名前:デフォルトの名無しさん [2008/09/06(土) 14:14:12 ]
WEB開発とか雑魚だろ。しかも文系でどこにも就職出来なかったような雑魚だしな。

べつにrubyのCソースを追いかけてるわけでもないし、なんか生意気な奴が多いようだけど、雑魚だろw

いちど、みっちりCをやって、GCのソースとか見てみたらどうよ?雑魚ちゃんww

580 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 14:16:05 ]
そんな雑魚相手に弱いものいじめしなくても…彼らは雑魚なりに一所懸命生きてるんだからさ……



581 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 14:19:16 ]
>>340
いやいや、デンターシステマ超極細毛(かため)以外認めんぞw

582 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 14:23:01 ]
僕だってれっきとしたWEBクリエーターだ!クリーチャーじゃないぞ!!

583 名前:デフォルトの名無しさん [2008/09/06(土) 14:26:09 ]

弱いものいじめ反対!

いつか必ず天罰が下るぞ!!




584 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 14:37:10 ]
>除法処理技術者
煽りじゃなく「割り算のプロ」っぽくていいな。それ。

585 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 14:41:13 ]
>>581
君、いつもつまんない

586 名前:デフォルトの名無しさん [2008/09/06(土) 18:10:54 ]
s="あい"#sjis
puts s.dump

dump以外に、
”あい”を文字コードの列(配列)にするのと、
その配列から”あい”(SJIS)に戻す方法はどうやるのでしょうか。

587 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 18:45:25 ]
dumpのどのへんが不満? バックスラッシュが邪魔?
配列にならないところ? 数値が8ビット整数じゃないところ?

588 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 19:12:45 ]
RUBY_VERSION >= "1.8.7" だったら
[*str.each_byte]
とかかな

589 名前:デフォルトの名無しさん [2008/09/06(土) 20:02:53 ]
あのーバイト列(特にバイト配列)からStringにするにはどうするんでしょうか?
packとかは無しですよw



590 名前:デフォルトの名無しさん [2008/09/06(土) 20:04:01 ]
dumpは、戻り値がStringなんでArrayじゃないし、たぶん外部用(serialization)じゃないですか?
なので、関数内部のローカルで処理する用途とは少し違います。

とくに、str[k]="あ"というかんじに出来るのないでしょうか?
結局ルビーは、パールと同じで日本語(多言語)対応じゃないしなんか使いにくいのでどうせなら、
jcodeでStringにアドオンなんかしないで組み込みクラスをrubyの方が用意したらどうですか?
class JapaneseString とかかな。



591 名前:デフォルトの名無しさん [2008/09/06(土) 20:06:07 ]

str.setJavaneseCharCodePointAt(index, "あ");

APIはこんなところでしょうか。

592 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 20:14:52 ]
不覚にもJavaneseに吹いた

でも初心者スレを荒らすのは勘弁してね

593 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 20:20:11 ]
javaを語る人はjavanese

594 名前:デフォルトの名無しさん [2008/09/06(土) 20:39:48 ]
いやいや、マジで困ってるんですが…
serializationは、dumpのStringはrubyだとtaint/untaintの腐ったレベルに影響あると思うんでdumpは外部用だと思います。
それでdumpは使えないので、他にsjis, euc, u16, u8とかの一文字をstrに追加できるセッターないですか?

595 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 20:49:09 ]
matz.dump # ダンプ松本

596 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 20:58:56 ]
Matzは神ですけど、matz は orz みたく凹んこで反省してるように見えませんか?

597 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 21:02:05 ]
[*str.bytes]
↑↓
bytes.map{|b| b.chr }.join

だろうか

598 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 21:44:48 ]
Javaneseってジャワ語という意味だったな


599 名前:デフォルトの名無しさん [2008/09/06(土) 21:54:41 ]
str.concatとarr.push使って自分で実装しました。
というか、スクリプトはテキスト(日本語)処理が主要な用途なんで、これぐらい(ライブラリ作成者側が面倒でも)当然用意しておくべきじゃないですか?

>>597
ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-mswin32]
なんで無理です。あと、よくわかないんですけど、[*str.each_byte]は間接参照か何かですか?
イテレータとか使うといちいちAPIみないといけなくなって面倒なんで、この程度の処理はwhileで実装です。
というか、こういう処理はwhileで十分あって、関数ポインタやデリゲートの用途じゃあるまいし、イテレーターなんてカッコつけて使うもんじゃないですよw

600 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 21:57:48 ]
>>589-591, 594
まず目的として何がやりたいのかを説明しろ
そこがわからないと適切なアドバイスもできん



601 名前:600 mailto:sage [2008/09/06(土) 21:58:56 ]
ごめんね、スルーしなかった俺が悪かった

602 名前:デフォルトの名無しさん [2008/09/06(土) 22:01:48 ]
イテレーターは自分で作ったclassやライブラリーのデータ構造をイテレートするときのもので、
StringやArrayみたいな組み込みで汎用用途じゃ、あまり向かないじゃないでしょうかね。用意されてはいるが継承用かな。
といっても、Stringには一文字処理のget/set可能なイテレートを当然に用意しておいてもらえませんかね。
とくにbyteとchar用のsetがないじゃん。

603 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:08:42 ]
1.9使えばいいんじゃね?

604 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:22:14 ]
そろそろ飽きた

605 名前:デフォルトの名無しさん mailto:sage [2008/09/06(土) 22:33:11 ]
[*"foo".bytes].map(&:chr).join # => "foo"
なにコレ?

606 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 02:02:43 ]
>>567
nil に対する比較演算は nil を返してほしい口?
つうか、なんで勘弁してほしいわけ?

607 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 02:35:21 ]
全てがオブジェクトじゃなくていい派でしょ

608 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 03:13:47 ]
>>602
>イテレーターは自分で作ったclassやライブラリーのデータ構造をイテレートするときのもので、
>StringやArrayみたいな組み込みで汎用用途じゃ、あまり向かないじゃないでしょうかね。用意されてはいるが継承用かな。

どこをどう見て、そう判断したんですか。

>といっても、Stringには一文字処理のget/set可能なイテレートを当然に用意しておいてもらえませんかね。
>とくにbyteとchar用のsetがないじゃん。

Ruby1.8では、文字列はただのバイト列なので、Javaのように文字単位での扱いはあまり得意じゃありません。
ただ、文字単位で扱わなくても済む場合がほとんどなので、あなたが「1文字ずつ扱って何をしようとしているか」をまず書いてみてください。
きっとだれかが、1文字ずつではない処理方法を提示してくれると思います。

それから、全般的に日本語に不自由されているようですが、もっと人に伝わるような文章を書いてください。
エスパーするにも限度があります。



609 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 03:25:03 ]
>>606-608
>>564

610 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 04:00:37 ]
>>608
質問者に、質問し返す人いますが、あなたは少ししつこい。
あなたのプログラミングスタイルと全く違う人もたくさんいるんですけど、あなたは一生Webクリーチャーでいいんで、黙っててくれませんか?
一文字の処理を所望なのに、一文字の処理じゃない方法を提示する必要はないでしょ。
あなたに仕事を任せても、全く仕様を読まないでいつも失敗ばかりしてるんだろうと思うんで、あなたはその辺にいるゴミか何かでしょうか?
とにかくVBとかの方が儲かりますよ。




611 名前:デフォルトの名無しさん [2008/09/07(日) 04:10:34 ]
>エスパーするにも限度があります。

>>608を読んでみても、おまえが無能なのがよく分かるな
おまえのエスパーなど誰も期待してないけど?


612 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 04:13:57 ]
たぶん>>608は低学歴で脳みそ文系ちゃんだから相手しちゃダメ。
いつまでもこのスレに居座っていてみんな迷惑してんだからw

613 名前:デフォルトの名無しさん [2008/09/07(日) 05:38:13 ]
>>608

モルモン教に入信したいなら、まずは創価学会を脱退してからですよ。



614 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 05:45:54 ]
>字単位で扱わなくても済む場合がほとんどなので

split(//)とかで結局文字単位になるんだし、文の前後が矛盾してるじゃん。
こいつは何のことをいってんだ?

それと、Javaは文字単位char[]でなくてStringで処理しますが、知らないことに無駄口しない方がいいんじゃないですか?
日本語の文法から勉強なさった方がいいんじゃないですか。

615 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 05:55:02 ]
だから文系プログラマーにかまうな。思考盗聴されて頭おかしくされちゃうぞ!

616 名前:デフォルトの名無しさん [2008/09/07(日) 06:31:32 ]
思考盗聴か…層化じゃ当然だよな……

617 名前:デフォルトの名無しさん [2008/09/07(日) 07:01:15 ]
仕事してんのに一人でも女がいるとホント面倒だよなwww
女は端っこでマンコの手入れでもして、いつでも準備OKにしてればいいんじゃね?

618 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 08:17:32 ]
>>608
落ち着け
こんな時は冷静にスルーだ

619 名前:デフォルトの名無しさん [2008/09/07(日) 09:13:37 ]
さすがにプログラマに女はいないだろw
数学の女、哲学の女、以上にキモイな。
仮に想像したとしても、頭モサモサのフケだらけ、体臭はニンニク臭いなんじゃないの?

そんなキモ女はどこで道を間違っちゃったんだろうな…

620 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 09:22:41 ]
catch io exception



621 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 11:31:25 ]
>>617
俺もそう思う。
まず連中は論理的に説明しても理解しない。「できない」じゃなくて「しない」なんだよ。
生意気にも「いいじゃないですか〜」とか言ってて許されるとか思ってる。
「俺が上司なんだよ!!!なめんなよ首にすんぞ」
とか思っても労働法違反になるので言わないです、ごめんなさい。
ついて行きたいと思わせる男の魅力が足りないのでしょうね、ごめんなさい。
そういえば、大学時代も「いい人」止まりだったなぁ・・・
付き合ったは良いけど卒業後すぐに分かれたなぁ・・・
一回しかえっちしてないよ・・・ちなみに童貞×処女

622 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 11:32:56 ]
>>619
と思いたいんですね

623 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 11:51:51 ]
引数 param で受け取ったものが配列でも「 1個」でも each で同様に回したい、という場合

param.to_a.each do |e|
...

と書くのが単純だったと思うんですが、
warning: default `to_a' will be obsolete
とか生意気で妥当な警告が出ます。
わりと頻繁に使うメソッド内でのことなんですが、どう対処するのが自然ですか?
param = [param] unless param.is_a?(Array)
と書くべきですか?
「このメソッドは配列しか受け取らないので 1個だけのときは事前に hoge([para]) にしろ」
とマニュアルレベルで警告するべきですか?

624 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 12:11:16 ]
>>623
配列かどうか調べて、配列じゃない場合は配列に入れるという動作が "正しい"
もしくは、マニュアルなどで「配列しか受け付けません」と明記する
[*param].each do |e| とすると文字数減った上に見かけ動作も一緒だが、無駄に穴掘って埋めてる感じが超キモい

これはそもそも

irb> def disp(param); param.to_a.each{|e| puts e }; end
irb> disp('hoge')
hoge
irb> disp(1)
(irb):1: warning: default `to_a' will be obsolete
1
irb> class Integer; def to_a; [self]; end; end
irb> disp(1)
1

ということで、「オブジェクトを to_a する意図が不明瞭なので頼るな」という意図の警告だ
obj.to_a と [obj] が同じとは限らないし、違うことのほうが妥当なこともある
配列の要素にしたいのなら、to_a ではなく明示的に配列作ってそこに入れろという話

irb> Time.now
Sun Sep 07 12:01:10 +0900 2008
irb> Time.now.to_a
[14, 1, 12, 7, 9, 2008, 0, 251, false, "JST"]
irb> [Time.now]
[Sun Sep 07 12:01:18 +0900 2008]


625 名前:デフォルトの名無しさん [2008/09/07(日) 12:13:26 ]
PGやSEとか頭脳労働なら、女がいるような職場には行きたくないな。
電話オペとか事務とか誰がやっても同じなら男女雇用機会もわかるけど、
女のセンスとか女のやさしさなど、PGやSEにまったく不要で逆にあると面倒なんじゃないか?

受付や事務で雇うならともかく、女をPGやWEBデザインで雇うようなところは資本もないし
金も技能もないベンチャーはすぐ潰れるのがおちw

今のベンチャーの生き残り方法は、創価学会と手を組むか、堀江豚みたく株屋とつるむぐらいしかないんじゃないの?

626 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 12:13:28 ]
[ param ].flatten(1)

flattenの引数ってどのバージョンからだったかのう。



627 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 12:15:21 ]
おまいらの妄想には飽きたぜ。
いい加減どっか外にいけ

628 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 12:22:16 ]

いまでは「Webデザイン」とかかっこ良さそうな臭いがしますが、海外のスクリプト言語
紹介ではJavaScript(とその亜種)の人口は多くPerlなどが続くと紹介されますが、
2008年現在、そのなかにrubyの文字は一度も出てきません。

しょせんrubyは、(にっぽんの)文系 IT ドカタ専用なんです!
犯罪囚人の女も使ってます!
コミュニティーはモルモン教です!

負け組みの人たちが都合よく集まったというところでしょうか…
ライブラリは冗長が多いけど言語の出来はいいんですけどね……

629 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 12:27:01 ]
言語側がto_a, to_i とか用意しといて下位互換を無くすようなこと一度でもすると、もうそういう言語・ライブラリは信用されないんじゃないか?
OOや継承をなんだと思ってんだ?

>ということで、「オブジェクトを to_a する意図が不明瞭なので頼るな」という意図の警告だ 
obj.to_a と [obj] が同じとは限らないし、違うことのほうが妥当なこともある

これを公式レファレンスに記載すればよろしい

630 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 12:35:34 ]
>>626
1.9のどっか



631 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 12:35:44 ]
確かにruby使ってる人たちがexcel,word出身のナンチャッテばかりだと、そんなやつらと話があうはずないな。

632 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 12:51:44 ]
excel,wordすらまともにry

633 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 12:52:10 ]
arr=[11,22,33]
puts *arr
puts &arr

マニュアルみてもないんですが、* & これは演算子ですか?

634 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 12:55:44 ]
blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/45334
からのスレッド参照


635 名前:デフォルトの名無しさん [2008/09/07(日) 12:56:58 ]
怪しいソフトハウスは五万とあるが胡散臭いからすぐ分かる。たいてい、そういうところはDQNしかいないし長くても5年で潰れる。どう考えてみても、文系乙だな

636 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 12:59:12 ]
>>634
演算してるわけじゃないしな
展開記号とでも呼べばいいのかしら

637 名前:デフォルトの名無しさん [2008/09/07(日) 13:09:04 ]
* & ですけど、関数引数なら演算子とは呼ばないけど、式文中なので演算子ですよ。
リンク先のMATZ本人はその意味で言ってるんですけど、たぶんこのスレレベルだと理解できないんでしょうね。
やっぱ文系用スクリプトを使うお気軽ルビリストには、その程度の理解度でいいんでしょうか?

638 名前:デフォルトの名無しさん [2008/09/07(日) 13:12:42 ]
理解できない人はC言語をみっちりやってくださいなw

639 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 13:24:26 ]
背伸び with マニュアル のスレはここですか?

640 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 13:45:03 ]
いいえ、基礎を積むスレです。



641 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 14:53:17 ]
配列の中での*はlispでの準クオート中の式を,@付けて評価→展開するものが元ネタっぽい。
だけど関数定義のときに引数定義の中で使われると、
lispの引数リストで使われる&restとか ...みたいな可変長引数みたいになる、ややこしいな。
&付きでProcを呼び出すものはなんだろう、C++のメンバ関数ポインタ?

def foo(*x)のときの*x言うのはrest引数構文
puts *arrの*arrは展開構文
puts &arrの&arrはProc変数渡し構文

Matzも*や&単体では意味が無いって言ってるし、こんなのでいいんじゃない?
さらにこういう前後の状況によって決まる類の「なんとか構文」なんてものは、
仕様書のある言語ではよくあるものだし。

642 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 15:00:53 ]
Rubyとか超ウケル

643 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 15:23:21 ]
puts &arr ってするとエラーが出るんですけど。。。
(ruby 1.8.6 (2007-06-07 patchlevel 36) [i386-mswin32])

wrong argument type Array (expected Proc) (TypeError)

644 名前:デフォルトの名無しさん [2008/09/07(日) 15:40:31 ]
エラーが出ていいんだよ。エラーを読める程度の英語をちゃんと身につけないとねw


645 名前:デフォルトの名無しさん [2008/09/07(日) 15:44:12 ]
「文系 Web 2.0」 じゃ、やっぱ話題について来れないんだろうな…
java.net(英語)にも妄想オタクな奴が多いけど、サーバ・サイドだから学歴は高い奴多いしくおかしな文章を書いたりしないな。
だけどrubyは無能な文系ばかりしかいないようだ…メーリングをググってもゴミのごたくばかりだろ…
Matzはいつも大変だな…

646 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 15:45:04 ]
>>644
あっ、エラーでいいんですか。
みなさん、とうとうと解説されているので、てっきり意味のある文だと思いました。

647 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 16:03:30 ]
>>646
>>633を構ってないだけだ

648 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 16:07:49 ]
>>641
文法上サポートしている構文というなら別にそれで文句はないですが、マニュアルに書いといてください。

p [*[11,22,33]] が出来るところを見ると、単項式として値を返すので、言語上の分類としては演算子じゃないかなと思います。


649 名前:デフォルトの名無しさん [2008/09/07(日) 16:14:26 ]
>>646-647
君たちはprocを理解してないのに偉そうにしてていいの?もっと一所懸命に勉強しないと!

650 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 16:29:34 ]
>>648 の笑いどころ
lisp という単語出てきたとたん、腰が引ける。
2ch に来て「マニュアルに書いといてください。 」
理系の高学歴様は、ギャグのセンスもさすがだなw



651 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 16:45:51 ]
>>646
そんなことよりおマンコはちゃんと洗っといた方がいいですよ。いつ何があるかわからないし・・・

652 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 16:48:00 ]
変数名がかぶっても、ブロックの中だけ有効にするにはどうすればいいのでしょうか?

a = 1

1.times do
a = 2
end

puts a # 1になって欲しい

653 名前:デフォルトの名無しさん [2008/09/07(日) 16:52:22 ]
それよりも >>641がC++どころかCすらも理解してないのにはビックリした!

654 名前:デフォルトの名無しさん [2008/09/07(日) 16:54:20 ]
質問なので、age失礼します。
携帯でGoogle chartを使おうと、以下のようにchartのアドレスをhtmlに埋めました。

puts <<-EOD
<html><body>
<img src="chart.apis.google.com/chart?chs=150x150&cht=lc&chd=t:20,40,50,60,40,10,3">
</body></html>
EOD

結果、auやvodaphoneでは見えたのですが、docomoではグラフが見えません。そこで調べてみると、docomoではpngを読まないため、gifにコンバートしろとのこと。
ttp://ke-tai.org/blog/2007/12/10/googlechart/
しかし、Rubyで同様のコンバートを行うにはどうしたら良いか、そしてどうやってhtmlに埋め込んでいいかわかりません。やり方が乗っている場所でも結構ですので、どなたか教えていただけませんか。よろしくお願いいたします。

655 名前:デフォルトの名無しさん [2008/09/07(日) 16:58:35 ]
>>652

>>649

656 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 17:12:31 ]
>>652
変数名がかぶってる限りは無理
ちゃんと違う変数名で定義するしかない

657 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 17:20:44 ]
>>656
そうなんですか。
Perlのように、局所化するmyとかはないんですね。。。

658 名前:656 mailto:sage [2008/09/07(日) 17:21:10 ]
追伸
初心者スレの範疇を外れるけど、現在のruby1.9.0系(開発版)では
ブロックローカルな変数を定義する(=名前がかぶっても問題ない)文法がある
たぶんruby1.9.1にも入るはず

659 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 17:25:32 ]
>>656-658
やっぱり、このレベルなのか…

660 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 17:36:39 ]
>>658
今後のRubyには実装される予定なんですね
了解しました。



661 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 17:44:55 ]
ローカル変数として同じの使ってるぶんには被るの許容するしかないな
まあ不便っちゃ不便

662 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 17:46:54 ]
クロージャとかイテレーターって知ってる?

663 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 17:49:18 ]
JRubyでYAML使おうとしています。
日本語をdumpすると"\343\203\206\343\202\271\343\203\210"な感じで出力されてしまいます。
RubyのSyckでも日本語をバイナリとして扱ってしまうという、似た感じの問題があり、
パッチやら何やら書かれているようですが、
JRuby(JvYAML?)において日本語文字列のまま出力させる方法はありませんでしょうか?


664 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 18:02:09 ]
>>663
Ya2YAML
JRubyで試したことはないが、pure rubyだからたぶん動くんじゃないかな

665 名前:663 mailto:sage [2008/09/07(日) 18:18:46 ]
>>664
どうもありがとうございます。
でも、Ya2YAMLはSyck用のバイナリ認識するとこを修正なんだそうです。
JRubyの場合はJvYAML(JvYAMLb)だそうですので、Pure Rubyか否かは関係なさそうです……。

gihyo.jp/dev/serial/01/yaml_library/0006
日本語全然使えない、とか書いてあるところもあったりして。
普通に表示したりする分には問題無いのですが、可読性という意味で言うと価値が激減。
dumpすると頭に"---"がつく辺りもRubyの最新版と挙動が違ったりするのですよね。細かいですが。
Javaのライブラリを使っていなければRubyを使うのですけれども……。

666 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 18:19:14 ]
>>654
ImageMagickプログラムを使うか、それをRubyから使うRubyMagickを使う
自分のサーバに「Google Chartにデータ渡して結果を受け取りGIFに変換して画像を吐くCGI」として置くしかないな

667 名前:654 mailto:sage [2008/09/07(日) 18:36:53 ]
ありがとうございます。
なるほど、直接コンバートできるような手立ては無いということですね。
では、画像吐き専門のcgiを作ることにします。
(PHPでやるかもです)

668 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 18:39:30 ]
>>665
楽してないでそれぐらい自分で実装したらどうよ?

669 名前:663 mailto:sage [2008/09/07(日) 18:52:47 ]
>>668
すみません。スキルがゴミなもので、解決策が自分だけの力では思い浮かばず、
一週間程悩んだ挙げ句に、こうして初心者スレで質問させていただいている次第です。

実装、というのはYAMLのパーサを実装ということでしょうか?
言語内DSL(もどき)を作って、YAMLを使わない方法に逃げることは一応考えているのですが……。

670 名前:デフォルトの名無しさん [2008/09/07(日) 18:56:36 ]
いつも「おっきいチンチン」のこと想像しながらWebしてます!



671 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 19:11:23 ]
YAMLをあきらめてJSONを使う。

672 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 19:20:17 ]
YAMLで作ったデータをどこに持ってくのかにもよるな

673 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 19:25:19 ]
>>665
Ya2YAMLのソースコード読んでみたが、Syckに依存してるらしきところはないよ
だからSyckかJvYAMLかは関係ないはず

674 名前:663 mailto:sage [2008/09/07(日) 20:16:56 ]
>>664 >>673
う、すみません。Ya2YAMLをちょっと勘違いしていました。
ちゃんとソース読んできます。どうもありがとうございます。

675 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 20:30:49 ]
ゴミなんでしょ?もう来るな。

676 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 00:13:21 ]
コテつけろよ

677 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 15:11:49 ]
デンターシステマのかためより、やらかめの方がいいですよ。
どうせ堅めを使っても歯ぐきから血が出るだけなんで。

678 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 17:27:16 ]
歯ぐき弱すぎじゃね・・・?
個人差は有るだろうけど、
いっぺん歯科で相談してみたほうがいい。

679 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 17:42:29 ]
普通は1から10まで足して55になるんですが、逆に10から9,8と足していく文はどうなるんでしょうか。



680 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 18:03:12 ]
やっぱり55になります



681 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 18:23:32 ]
逆から足して同じ結果にならないなら大発見かもしれん

682 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 18:25:57 ]
BEとLEで結果が違います

683 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 18:30:58 ]
>>681
多項式級数式ではそういうことがよく起こりますが…もしかして無能?

684 名前:デフォルトの名無しさん [2008/09/08(月) 18:46:45 ]
どっちが頭いいかをふっかけてくる奴がいっちゃん無能


685 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 18:57:42 ]
無能はすぐage進行にしたがるww

686 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 18:58:12 ]
>>679
よくわからんけど、こんなのかな。

i = 10
sum = 0
while i > 0
 sum += i
 i -= 1
end


i = 0
sum = 0
while (i += 1) <= 10
 j = 10 - i
 sum += j
end


sum = 0
(1..10).to_a.reverse.each {|i| sum += i }


687 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 19:01:41 ]
downto

688 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 19:05:54 ]
ruby1.8.7きめぇえええええ
[*(1..10)].reverse.inject(0,&:+) # => 55

689 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 19:15:31 ]
&:+って何?

690 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 19:19:51 ]
みなさん、ありがとうございます。
ちゃんと55になりました。
逆走もあったんですか…



691 名前:デフォルトの名無しさん [2008/09/08(月) 19:21:59 ]
>>688
これは可読性以前の数学パズルの世界じゃないの?
rubyのキモさは、Cのポインタをほうふつさせるキモキモだなw

692 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 19:25:02 ]
委譲の英訳ってtransferでいいの?
辞書だとそうなってるけどプログラミングでもそうなん?

693 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 19:27:54 ]
>>692
オブジェクト指向における委譲はdelegation

694 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 19:31:54 ]
サンクス
delegateってメソッドポインタの事かと思ってたけど
委譲の意味でも使うのか。

695 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 21:19:05 ]
>>694
C#のやつのことなら、delegateをそういう機能に使うキーワードにしたって
だけで、突き詰めた意味は結局委譲。



696 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 21:28:31 ]
めそっどぽいんたってなんじゃらほ

697 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 21:37:20 ]
(1..10).reverse_each.inject(:+)

698 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 22:00:35 ]
>>696
C#を調べろ、としか言いようがない。
要するに関数ポインタのC#版。

699 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 22:08:03 ]
>>696
特定のインスタンスの特定のメソッド(GUI部品とか)を呼び出すためのポインタ
特定のクラスのオブジェクトにメソッド実行を依頼すると考えれば根っこは同じ

という説明はどうだろう

700 名前:デフォルトの名無しさん mailto:sage [2008/09/08(月) 22:18:00 ]
わっかりやすいのう



701 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 02:18:37 ]
質問です

関数オブジェクトと普通の関数を呼び出すときのコストってどちらも同じですか?

702 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 02:41:11 ]

・Rubyには厳密な関数はない
・Rubyには関数オブジェクトもないっていうかまあこのへんは別にいいや

てことで、普通のメソッド定義とProc(lambda)オブジェクトの比較と読み替える

  Procの呼び出しコストの重さは異常

以上

使うと面倒な概念をとても簡潔に表現できるけど、多用すると明らかに遅くなるので注意
便利なのでほいほい作る傾向にあるが、何度も使う部分に組み込む場合は、できれば丁寧に分析してメソッドにしたほうがいい

703 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 06:12:15 ]
Rubyってメソッドもオブジェクトなの・・・?

704 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 06:44:11 ]
>>703
オブジェクト化することもできる

705 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 07:23:00 ]
そんなことしたマンコは臭うけどな

706 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 08:30:13 ]
javascriptバカにすんな

707 名前:デフォルトの名無しさん [2008/09/09(火) 08:32:52 ]
臭いのは勘弁して・・・

708 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 09:08:56 ]
javascriptはコンソールから起動して使える実装がないじゃん。ここ、バカ丸出しww

709 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 09:09:38 ]
毎日が夏休み

710 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 09:17:50 ]
>>703
ブロックつきメソッドの {|x| ...} 部分を「持ち歩ける」と考えてもらうと間違いない



711 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 09:24:09 ]
>>708
>javascriptはコンソールから起動して使える実装がないじゃん。ここ、バカ丸出しww

spidermonkeyもrhinoもコンソールから起動できるじゃん。
バカ丸出しはおまえwww

712 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 09:38:26 ]
javascriptは組み込み向けの設計ってこと忘れてるおまえは、バカ丸出しww

713 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 11:25:13 ]
話題のv8のshellが普通にいい感じですよ

714 名前:デフォルトの名無しさん [2008/09/09(火) 11:33:16 ]
個人の著作を売り物にするようなところだしmixiと同じだな。
そのうち違う波が来て潰されるんだろうな…

715 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 11:40:34 ]
>>702
そうなんですか。
昨日からruby勉強し始めて、全部関数オブジェクトにしたら一貫性あるかな?
とか思っていたんですが、重いなら仕方ないですね。。

716 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 11:45:08 ]
全部ラムダ式にすればいいと言うわけですね

717 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 12:07:13 ]
質問です。

配列のmap関数で適用する手続きの代わりに関数オブジェクトを使うことはできませんか?

718 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 12:18:26 ]
関数オブジェクトって何ですか?

Procオブジェクトですか、ブロックですか?

719 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 12:23:08 ]
たとえば、
hoge = lambda{|x| x+1}
このhogeという値にバインドした関数オブジェクトをmapで使うことはできませんか?

720 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 12:26:52 ]
(1..10).map &hoge




721 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 12:32:47 ]
>>720
おお、すばらしいです

では、次の質問ですが、
関数オブジェクト同士で関数合成ってどうやるんですか?

722 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 12:37:10 ]
procとlambdaで作ったオブジェクトってイマイチ分からないのですが、簡単に言えば何が違うんですか?

723 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 12:46:54 ]
ttp://www.hinet.mydns.jp/tdiary/?date=20080220

724 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 12:49:57 ]
>>721
例えばこんなのがある
Function Composition 2.0 Ruby Banter #006
media.fngtps.com/rubybanter/2007/006/

725 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 13:04:29 ]
>>721 >>722
そのオブジェクトは Proc オブジェクト
違いはこのへんに ttp://doc.loveruby.net/refm/api/view/method/Kernel/m/lambda

726 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 13:10:13 ]
「関数オブジェクト」なんてないということをとりあえず前提として話してくれ。
なんで執拗に「関数オブジェクト」と言い続けるんだ?

727 名前:717=721 mailto:sage [2008/09/09(火) 13:10:26 ]
>>721>>722は別人です

728 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 13:12:54 ]
func do |x| p x end
func { |x| p x }

の違いでしたか・・・

729 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 14:22:21 ]
質問です

ある変数の型が何なのか調べる方法はありますか?

730 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 14:37:19 ]
質問です。
hoge = Array.new(10){|i| i}.map{|x| x+1}

hoge = Array.new(10){|i| i}.map!{|x| x+1}
ではリソースの使い方に違いがありますか??



731 名前:デフォルトの名無しさん [2008/09/09(火) 14:41:59 ]
 

732 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 14:44:20 ]
>>729
Rubyの変数には型はありません

733 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 14:47:11 ]
>>732
では、たとえば配列の要素をすべて足す関数を作って、
整数と文字が入り交じった配列を渡してしまった場合はどうなるんですか?

734 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 14:48:14 ]
配列の要素の型に応じて違う処理をさせる方法はありませんか?

735 名前:デフォルトの名無しさん [2008/09/09(火) 14:48:49 ]
精子はやっぱり飲んじゃった方がいいかな?

736 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 14:52:28 ]
>>732
型が無いというのも誤解を生む表現だと思うのですが、
ではどのオブジェクトのインスタンスなのか調べる方法は無いんでしょうか?

737 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 14:53:56 ]
>>730
メモリとかを気にするのに Array.new に引数をつけてる人は久しぶりに見た
nil が 10個生成されて直後に置き換えられるから最初のArray.newが一番無駄なんじゃね

で、map と map! の差だけで、見たままの動作で、見たままのメモリ消費だと思われる
配列要素が 1万個とかバカみたいに多いときは後者のほうが一瞬だけ若干得
ただ、後者のような書き方はあまりしないかな

738 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 14:54:09 ]
どのクラスのインスタンスなのか、でした。

739 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 14:56:26 ]
>>736
型はない
a = 10 したあとに a = 'str' としても動作する以上、変数に型は無いと言って差し支えない

で、オブジェクトがどのクラスに属しているかはclassメソッドを使うとわかる

740 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 14:56:36 ]
>>730
前者は配列が2個作られる。後者は1個だけ。課題か何かか?

>>733
足せないものを足そうとした時にエラー

>>734
kind_of? で仕分ける



741 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:00:56 ]
Rubyの変数は本気でただのラベルだからな
他の言語では変数はいわゆる箱のようなメタファで説明できて、箱には形が決まってたりするもんだが

>>734
動作一緒だが、kind_of? ではなく is_a? を勧めたほうがよいと思う

742 名前:230 mailto:sage [2008/09/09(火) 15:07:39 ]
>>740
課題ではありません。
昨日からruby勉強中なんですよ。
夏休みだけど暇なんで。

743 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:08:01 ]
このスレの住人は糞ばかりだし、飲んじゃった方がいいよw

744 名前:230 mailto:sage [2008/09/09(火) 15:10:45 ]
>>737
最適化してはくれないんですね。

745 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:11:17 ]
>>733
要素が順番に問題なく + メソッドに渡される

不適なオブジェクトが + メソッド内(で使ってる他のメソッド)でチェックされているなら、
TypeError か何か決められた例外が発生してそこで処理が止まる

ある意味めんどくさいとも言えるな
だから、「要素に数値だけが入っていることを配列登録時にチェックするArrayクラス」のようなものを作ったりする

746 名前:230 mailto:sage [2008/09/09(火) 15:13:53 ]
>>745
なるほど。
静的型付け言語に慣れているせいで、ちょっとその辺はぎこちなくなります。

747 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:14:33 ]
>>744
「どうせ直後で数値が全要素に代入されるんだから最初に nil 入れるのやめようぜ、
あ、ちょっと待って、map が続いてるからそれもまとめて 1回で処理しよう」
という判断は Ruby はしない

というか無茶言うな
そういうのはスクリプト作成者が事前に考えてくれ

748 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:16:32 ]
nilの実装はintの0x00だけど?

749 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:19:27 ]
>>747
遅延評価のHaskellなら朝飯前なんだがな

750 名前:デフォルトの名無しさん [2008/09/09(火) 15:20:40 ]
あのー横から失礼しますが、
rubyの有用なサンプル・スクリプトはどこかにないでしょうか?



751 名前:730 mailto:sage [2008/09/09(火) 15:22:01 ]
>>737
度々すみません。
たとえば1〜1000が順番に格納されている配列を生成するのに効率的な方法を教えてください

752 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:24:33 ]
>>751
(1..1000).to_a

753 名前:730 mailto:sage [2008/09/09(火) 15:25:58 ]
>>752
ありがとうございます

754 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:27:54 ]
>>748
んなこと言ったら文字列は全部ただのバイト列だぞ(1.8限定)

755 名前:デフォルトの名無しさん [2008/09/09(火) 15:28:26 ]
>nil が 10個生成されて直後に置き換えられるから最初のArray.newが一番無駄なんじゃね 

こういうのは、こいつの妄想じゃね?

756 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:31:24 ]
>rubyの有用なサンプル・スクリプトはどこかにないでしょうか?
どういうのを求めてるのかよく分からんが
「逆引き Ruby」でぐぐったら幸せなんじゃないかな

757 名前:デフォルトの名無しさん [2008/09/09(火) 15:37:25 ]
そういう逆引きじゃなくて、文字を数えるwc伝統的プログラムが集まったサンプル集です。
"hello world\n"の延長みたいなものなんですが、どこにもないんでしょうか?

758 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:40:53 ]
>>757
意図はわかった
Rubyコミュニティとしては特にないので、個人で書かれた入門ページでも適当に探すといい
もとろん間違ってる可能性もあるが、初学者ならおそらく同じように間違うわけでそれはそれで意義があるだろう

というか、そういうのがきちんとまとまったページってのは他の言語でも稀なんじゃないかなー
あれば楽しそうな気もするけどね

759 名前:デフォルトの名無しさん [2008/09/09(火) 15:44:54 ]
あのー・・・・rubyは初めて触るんですけど、他の言語はバリバリ使いwwなんですが・・・・・・・・・

760 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:45:45 ]
>>750 サクれ



761 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:47:28 ]
昔は「○○コマンドのクローンを作ってみよう」というのは教材としてわかりやすかったんだけどね

今はCUIコマンド自体の使用頻度が少なくて
「wcってなんですか?」
「いったいどういうときに使うんですか?」
「コマンドまたはファイル名が違いますって表示されました」
という状態で

762 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:49:18 ]
>>741
> >>734
> 動作一緒だが、kind_of? ではなく is_a? を勧めたほうがよいと思う

Rationalきぼんぬ。ピッケル本のどこかに書いてあったっけ?(ふとそんな気がしないでもない)


763 名前:デフォルトの名無しさん [2008/09/09(火) 15:57:09 ]
一応K&Cとかさくっと読んじゃったんですけど・・・ないですか。
日本語だと公式サイトの説明も適当だし(文章を書くのが面倒なんでしょうけど)、それなら有用なサンプルがあると理解が深まるんじゃないのかなと…

764 名前:デフォルトの名無しさん [2008/09/09(火) 15:58:45 ]
ごっちゃになってたけど、CのK&Rでした。C言語教徒には失礼・・・

765 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 15:58:59 ]
K&C・・・ああ、ケンタッキーとチキンのことか。

766 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 16:01:32 ]
モルモン教教徒はすぐ我慢汁が出ちゃうのがなんともねぇw

767 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 16:07:45 ]
K&Rは難しすぎでさくっとなんか読めないよ。
あの超難しいといわれてる「ポインタ」を当然知ってるって前提だろうが。

768 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 16:16:59 ]
ポインタを超難しいと言っている人を久しぶりに見た。
ああ、教鞭を執らなくなって結構経つなぁ・・

769 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 16:19:13 ]
>>748
nilの実装はunsigned longの4だが?
環境によってはunsigned longじゃなくてもっと大きい型のこともあるが。

770 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 16:19:35 ]
K&Rを難しいと言っているぐらいだからHaskellの遅延評価やモナドなんか常軌を逸するだろうな。



771 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 16:20:26 ]
>>766
モルモン教とRubyにどんな関係があるんですか?
前々から気になっていましたが。

772 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 16:21:57 ]
大多数の大学生のような集団にとってきちんと理解しようとする場合「超難しいと言われてる」でいいと思う

773 名前:デフォルトの名無しさん [2008/09/09(火) 16:22:11 ]
>>770
というか、Cのポインタが難しくてLispに逃げたくせに偉そうにするなww

774 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 16:26:14 ]
にわかC使いがLL言語を叩くスレ

775 名前:730 mailto:sage [2008/09/09(火) 16:28:05 ]
$ time ruby -e 'test = Array.new(100000){|i| i}'

real 0m0.220s
user 0m0.120s
sys 0m0.100s
$ time ruby -e 'test = (0..100000).to_a'

real 0m0.130s
user 0m0.120s
sys 0m0.010s

本当ですね。

776 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 16:35:27 ]
>>775
それ、どういう処理なのか理解してないでしょ?笑えるんだけどw

777 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 16:36:26 ]
>>771
Ruby開発者がばりばりのモルモン教

778 名前:デフォルトの名無しさん [2008/09/09(火) 16:37:03 ]
まあ、どうあがいたってポインタは難しいからね・・・

779 名前:デフォルトの名無しさん [2008/09/09(火) 16:40:38 ]
>>770
先生はモルモン教さんですか?

780 名前:730 mailto:sage [2008/09/09(火) 16:40:58 ]
>>776
どういうメソッドが使われたかはプロファイラを使えばわかるみたいですね。

$ ruby -r profile -e 'test = (0..100000).to_a' % cumulative self self total
time seconds seconds calls ms/call ms/call name
100.00 0.08 0.08 1 80.00 80.00 Range#each
0.00 0.08 0.00 1 0.00 80.00 Enumerable.to_a
0.00 0.08 0.00 1 0.00 80.00 #toplevel
$ ruby -r profile -e 'test = Array.new(100000){|i| i}' % cumulative self self total
time seconds seconds calls ms/call ms/call name
100.00 1.15 1.15 1 1150.00 1150.00 Array#initialize
0.00 1.15 0.00 1 0.00 1150.00 Class#new
0.00 1.15 0.00 1 0.00 1150.00 #toplevel



781 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 16:47:27 ]
そういえば、さっきの妄想君は死んだのか?

782 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 16:50:15 ]
K&Rのサンプル集とか面白かったんで、これと似たようなサンプル(課題)を是非コミュニティーでやってください!お願いします!

783 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 16:50:38 ]
ブロック使う方は毎要素でyieldしてるからその差じゃね?

784 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 17:06:24 ]
>>782
Rubyのサンプルに限らず他言語でのサンプルをRubyで書いてみたらいいんじゃね

785 名前:730 mailto:sage [2008/09/09(火) 17:09:44 ]
大まかにrubyのことがわかってきたので自己テストのためにリバーシプログラム書いてみますね。

786 名前:デフォルトの名無しさん [2008/09/09(火) 17:14:10 ]
str=""

str << x
str .concat x

ま、好きな方を使え。どうせ行き詰まるんだろうけどw

787 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 17:29:07 ]
>>750
書籍 「Rubyレシピブック」 お勧め。

788 名前:デフォルトの名無しさん [2008/09/09(火) 17:55:56 ]
APIは熟読するぐらいに読まないと。

789 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 19:14:23 ]
コード書いてるそばから一発でriやrefe2xでドキュメントを閲覧したり
ソースコード上の定義やCによる実装に飛べるようなエディタの支援が無いとキツイな



790 名前:730 mailto:sage [2008/09/09(火) 20:43:52 ]
質問です

ある変数が取り得る値の範囲をあらかじめ定めることは可能でしょうか?
たとえば、代入時に0〜10までの値以外の値が代入されそうになったとき、
例外を発生させるようなメカニズムなど。



791 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 20:49:40 ]
まずは初心者向けサイトで勉強したらどうよ?

792 名前:デフォルトの名無しさん [2008/09/09(火) 20:56:53 ]
>>790
ある変数て…
Ruby の変数には型がないって、このスレの今日の部分にも書いてあるよね
とりあえず、入門書を読んでみなよ

793 名前:730 mailto:sage [2008/09/09(火) 21:04:08 ]
>>792
それは理解しましたが、
私が聞きたいのは型に関することではなく(実質は型のようなものでしょうが)、
ヒューマンエラーで誤って100などの数字を代入しないよう、
安全な代入操作を行いたいだけなんです。

ヒューマンエラーで誤って100などの数字を代入しないために。

794 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 21:06:56 ]
>>793
if文って知ってる?

795 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 21:08:48 ]
レヴェルの低いのがからんどるな

796 名前:デフォルトの名無しさん [2008/09/09(火) 21:10:03 ]
たぶんチンコがはえてないんだろw

797 名前:730 mailto:sage [2008/09/09(火) 21:10:37 ]
>>794
代入文を書く直前にif文を書かずに済む方法はありますか?

798 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 21:11:01 ]
>>790
オブジェクトという言葉を一度も使ってないことが気にかかる
Rubyはすべてのものがオブジェクトだ
変数と呼ばれるものは、該当するクラスをnew(とか)して作ったオブジェクト(インスタンス)に名前を付けたものに過ぎない
変数という入れ物は存在しない

オブジェクトというものについて勉強することを勧めるよ
これを大まかにでも理解しないままRubyの勉強を進めるとか遠回り過ぎて気が遠くなる

で、回答は
「オブジェクトに登録するときのメソッドをフックする、または専用の登録用メソッドを作成する」
というのが一般的だと思われる

799 名前:デフォルトの名無しさん [2008/09/09(火) 21:11:35 ]
はよ初心者サイト行け

800 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 21:11:58 ]
>>790
class C
def foo=(v)
raise if v < 0 || v > 10
@foo = v
end
def foo
@foo
end
end

o = C.new
o.foo = 11



801 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 21:12:43 ]
>>794
if文知ってるとチンコはえてきますか?

802 名前:730 mailto:sage [2008/09/09(火) 21:12:55 ]
>>798
ありがとうございます。


803 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 21:13:17 ]
>>790
ローカル変数やインスタンス変数に入る値(=代入されるオブジェクトの内容)を、自動的に制限する方法は
基本的には存在しない。テストで頑張るのが常道

ただし、アクセサメソッドを上書きすることで

obj.parameter = 100

といった代入の形に限り、何らかの制限を行うことはできる

804 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 21:14:50 ]
>>798 の毒され方が気になる

805 名前:デフォルトの名無しさん mailto:sage [2008/09/09(火) 21:19:41 ]
>>804
確かに、かなりの重症患者だろうな…
ラムダ使いも、度がすぎると全く未知の方法を編み出すんだろう…

806 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 00:41:31 ]
>>790
言語レベルで規制はできない。
やりたかったら、不正な値ならraiseするんかな

807 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 00:54:41 ]
>>806
そのへんは一応>>798ではある、んだが

Rubyにおける「変数のイレモノ」の実体はそれの指すオブジェクトだからな
他の言語における「変数作成時に何かしたい」は「オブジェクト作成・操作時に何かする」だろう

というか、他の言語での変数ってデータのカタマリを指すラベルのようなものじゃないのか?

808 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 01:39:07 ]
>>790の言語経験がわかんないよね。
アセンブリとかCOBOLとかperlとかかね。

案外Pythonとかhaskellとかバリバリ使ってるのに
釣りに来ただけだったりw

809 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 07:08:07 ]
「変数には型がない。オブジェクトには型がある。」
といくら説明しても理解できない人にぶちあたると徒労感でいっぱいになる。



810 名前:デフォルトの名無しさん [2008/09/10(水) 07:09:54 ]
関数型言語使ってる人とは、これほどパラダイムが違うなんて思ってもみなかったは…



811 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 10:03:17 ]
>>809
そりゃその2つの間には関連性は希薄だからな
並べられて説明されるほど混乱するのはあたりまえだと思う

812 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 11:00:52 ]
オブジェクトについてのことを変数の文脈の「型」を絡めて説明するのは誤解招いてキケンだと思う…

813 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 12:46:47 ]
メタ議論は他所でやれ

814 名前:730 mailto:sage [2008/09/10(水) 12:57:05 ]
オブジェクト指向でプログラミングするとバグ取りが大変ですね。
久しぶりにこの感覚味わいました。

815 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 14:52:26 ]
Cだといくら難しくても構造体とポインタは避けて通れないからね…

816 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 15:03:12 ]
文法レベルで躓く男の人って・・・

817 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 15:40:58 ]
Perlだと、呼び出しの後に関数の定義があっても、きちんと認識してくれるのですが、

---------------------------------------------------
func();

sub func {
print "in func";
}
---------------------------------------------------

以下、Rubyだとエラーが出ます。

---------------------------------------------------
func #=>undefined local variable or method `func' for main:Object (NameError)

def func
print "in func"
end
---------------------------------------------------

エラーを出さないようにするには、関数を呼び出しの前に書くしかないのでしょうか?

818 名前:pl791.nas924.p-hokkaido.nttpc.ne.jp mailto:sage [2008/09/10(水) 16:30:23 ]
>>817
Rubyには関数はない
クラスやオブジェクトに関数があるということもない
メソッドのことを関数だと解説している本やサイトがあるなら晒せ

で、答はYES
クラスやメソッドの定義式の評価は実行時に行われる
実行時ということは1行目から順に実行されてるときということで、
つまり定義前のメソッドが書かれてた場合はエラーだ

まあぶっちゃけた話をするとすぐ慣れる
関数定義みたいに後ろに倉庫的にどっさりあったほうがすっきりするよねと思うことは今もあるが

819 名前:pl791.nas924.p-hokkaido.nttpc.ne.jp mailto:sage [2008/09/10(水) 16:31:19 ]
お、何だ何だ

820 名前:デフォルトの名無しさん [2008/09/10(水) 16:50:03 ]
長い説明よりスクリプトの方にしてちょ



821 名前:p3070-ipad304kobeminato.hyogo.ocn.ne.jp mailto:sage [2008/09/10(水) 17:02:55 ]
メソッドと関数の違いがわかりませんえん

822 名前:デフォルトの名無しさん [2008/09/10(水) 17:03:25 ]
>>818
そもそもオブジェクト指向というパラダイム自体不細工。
所詮は商業主義の世迷い事。
いかにも新しいことを考えましたよ、って言いたいがために新しい言葉を作っただけのこと。
本来はメソッドは関数と呼ぶべきだし、クラスも構造体と呼ぶべき。

823 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 17:33:18 ]
>>822 には触れないほうがいいよ

824 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 17:41:30 ]
>>818
サンクス
了解しました

825 名前:デフォルトの名無しさん [2008/09/10(水) 17:52:18 ]
>>823
型理論よりもちゃんとした理論体系が確立されているんですか?
間違いを通そうとして話をそらさないでくださいよ。

826 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 18:18:59 ]
オブジェクト指向の次って何があるの?

827 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 18:19:39 ]
>>825
そういう事は、それ系のスレかお前さんのブログでやってくれ。
Ruby のスレでオブジェクト指向のパラダイムを受け入れてるのは当たり前だろ。

828 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 18:25:16 ]
変数とオブジェクトの違いも曖昧な奴に、オブジェクト指向を語れるのか?
>>827と同じ意見だけど…

829 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 18:25:51 ]
しかしよく釣れるスレだなw

830 名前:デフォルトの名無しさん [2008/09/10(水) 18:26:42 ]
>>828
誰と混同してるんだ?



831 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 18:32:31 ]
>>826 エージェント指向とかアスペクト指向とか

832 名前:デフォルトの名無しさん [2008/09/10(水) 18:32:57 ]
なんだ厨房しかいないのかw

833 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 18:36:30 ]
>>826
遅延評価、monad、arrow、pi-calculus

834 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 18:39:01 ]
>>831
エイジェント指向ってのは一つのプログラムを作るための概念ではないよ。
もっとマクロな協調動作を目指したもの。
クラスタとかグリッドとかそっち方面の技術だよ。

835 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 18:40:20 ]
技術ではなくて概念 か。

836 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 19:16:46 ]
「能」という漢字を扱おうとすると必ず
unterminated string meets end of file
というエラーが出ます。どうしてでしょうか?

837 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 19:17:43 ]
ほかの漢字のときは大丈夫なんです。
「芸能」がダメで、「芸」はOKなんです。

838 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 19:27:56 ]
さあいますぐ



能\

それぞれをShift_JISで保存してバイナリエディタで開いてみるんだ

839 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 21:19:16 ]
>>837
偉大なるKENT様のご説明

文字化けについて
www.kent-web.com/pubc/jcode/index.html

840 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 21:47:26 ]
KENT様・・・



841 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 22:42:40 ]
>>801
うん。ひと晩で二、三本は生えてくるよ

842 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 22:43:37 ]
何で朝鮮人は嫌われてるんですか?

843 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 22:56:51 ]
>>842
汚くて臭いからさ

844 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 23:42:15 ]
>>831
アスペクト指向はオブジェクト指向の二番煎じ。
ITバブル時代に新しい言葉を作ってビジネス機会を作ろうと企んだが失敗に終わりそうな概念です。
ほかにもajaxとかWEB2.0とか、いろんな言葉が作られて消えていきましたが、
全部商業主義的な目的から作られた物です。
この業界をかき乱すのもそろそろやめてほしい。

845 名前:デフォルトの名無しさん mailto:sage [2008/09/10(水) 23:44:57 ]
新しくも無いのにわざわざ特別な名前を与えていかにも新しくてすごそうに見えるように宣伝して儲ける手法。
全部誰かが裏で糸を引いているんじゃないかと思うほど手口が似ています。

846 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 00:10:05 ]
>>844
あんたが「本物のプログラマ」だという事はよく分かったから、
お菓子好きの集まるこのスレにはこないでくれ。

847 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 07:48:45 ]
>>844
ハスケルは学者ばかりですし、そっちではたくさん高級なメタ議論してますよ。

848 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 07:58:38 ]
だからさ,スレ違いだしもう触れるな,っての

849 名前:mx.narihara-lab.jp mailto:sage [2008/09/11(木) 08:38:43 ]
>>844
> アスペクト指向はオブジェクト指向の二番煎じ。

そうなの? 「MOP の二番煎じ」だとばかり思ってたんだが…


850 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 20:56:56 ]
Web2.0が商業用語ってどんだけ
商業にすらなってないわ



851 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 21:06:21 ]
>>850
今日のおまんこの締まり具合はどうですか?

852 名前:730 mailto:sage [2008/09/11(木) 21:08:49 ]
質問です

シンボルを宣言するとき:hogeのように記述しますが、
「:」というのはメソッドなのでしょうか?
「:」のようなメソッドを宣言する方法を教えてください。

853 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 21:27:10 ]
>>852
メソッドじゃない。

つーかいい加減マニュアル読めよ

854 名前:デフォルトの名無しさん [2008/09/11(木) 21:30:26 ]
RubyスクリプトがOut of memoryで終了してしまうんですが
どこでメモリ消費してるのか調べるプロファイリングツールみたいのはありますか?

855 名前:730 mailto:sage [2008/09/11(木) 21:33:41 ]
>>853
どこに書いてありますか?

856 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 21:40:14 ]
Stringを作るための ' や Array を作るための [ と ] がメソッドじゃないのと同じようなもんだな

857 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 21:41:57 ]
>>854
ruby -profile hoge.rb

ただし、これは死ぬほど重いので、rubygem の ruby-prof とかを使う

858 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 21:48:56 ]
>>855
www.ruby-lang.org/ja/man/html/_A5EAA5C6A5E9A5EB.html#a.a5.b7.a5.f3.a5.dc.a5.eb

859 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 21:49:09 ]
>>855
だから聞く前に読めよ

860 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 21:51:27 ]
Out of memory は RubyMagick でよく見たなあ



861 名前:730 mailto:sage [2008/09/11(木) 22:02:15 ]
>>858
ありがとうございます

862 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 23:41:24 ]
煽るような回答しかしてない人はわからないんですね、わかります。

863 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 08:40:45 ]
何を聞きたいのかイマイチ不明。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<211KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef