Rubyについて Part47
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
2012/01/16(月) 13:15:31.00質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
前スレ
Ruby 初心者スレッド Part 46
http://hibari.2ch.net/test/read.cgi/tech/1317790320/
るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
逆引きRuby
http://www.namaraii.com/rubytips/
0809デフォルトの名無しさん
2012/07/29(日) 22:59:26.520810デフォルトの名無しさん
2012/07/29(日) 23:01:59.10このpaper糞つまらん。
0811デフォルトの名無しさん
2012/07/30(月) 01:59:15.10最近イテレータ内でcase文やifとか使ってendが連なった場合に
イテレータだけ { } で書く事もある
0812デフォルトの名無しさん
2012/07/30(月) 03:17:53.00常に等価なら良いんだが、
{...}はdo...endに出来ても、
do...endは{...}に出来ないケースとかある。
0813デフォルトの名無しさん
2012/07/30(月) 03:22:16.34それが Rooby
0814デフォルトの名無しさん
2012/07/31(火) 19:24:54.47もう rubyuno に
0815デフォルトの名無しさん
2012/07/31(火) 20:13:26.120816デフォルトの名無しさん
2012/08/01(水) 19:57:38.42VBAを取っ払って、代わりにjavaやrubyを使えるようなものを出すと、
ひょっとして数年後に大ヒットしないかな
0817デフォルトの名無しさん
2012/08/01(水) 20:02:01.15>LibreOffice では、以下のスクリプト言語がサポートされています。
>LibreOffice Basic
>JavaScript
>BeanShell (Java)
>Python
0818デフォルトの名無しさん
2012/08/01(水) 20:06:05.89知らなかった、サンキュ
しらべてみます
0819デフォルトの名無しさん
2012/08/01(水) 20:25:14.020820デフォルトの名無しさん
2012/08/01(水) 20:35:44.190821デフォルトの名無しさん
2012/08/01(水) 20:39:40.880822デフォルトの名無しさん
2012/08/01(水) 20:41:24.88LibreOfficeって、旧OpenOfficeだったんですね
昔、installlしたことあるが ほとんど使わず、java使えるとは知らなかった
0823デフォルトの名無しさん
2012/08/01(水) 21:01:00.57まあ個人で完結するぶんにはLibraOfficeでなんら問題ないけど
客がそのデータじゃないと受け取らないからとかの理由でOffice入れてる層は
素直にMSから買ったほうがトラブルなくていいわ
あーあとOpenOffice時代は破線や点線がサポートされてなかったのが結構いやだったなあ
0824デフォルトの名無しさん
2012/08/01(水) 23:09:01.370825デフォルトの名無しさん
2012/08/01(水) 23:18:17.390826デフォルトの名無しさん
2012/08/02(木) 12:28:48.170827デフォルトの名無しさん
2012/08/03(金) 00:08:41.24http://itpro.nikkeibp.co.jp/article/NEWS/20120802/413736/
0828デフォルトの名無しさん
2012/08/03(金) 00:22:21.010829デフォルトの名無しさん
2012/08/03(金) 00:44:03.850830デフォルトの名無しさん
2012/08/03(金) 01:37:54.870831デフォルトの名無しさん
2012/08/03(金) 05:23:35.280832デフォルトの名無しさん
2012/08/05(日) 11:34:17.750833uy
2012/08/05(日) 13:57:08.830834デフォルトの名無しさん
2012/08/05(日) 17:28:09.150835デフォルトの名無しさん
2012/08/05(日) 19:46:49.76なるほど、ありがとうございます!
0836デフォルトの名無しさん
2012/08/06(月) 13:42:07.44http://www.ruby.or.jp/ja/news/20120806.html
・ 事業の実施体制(体制図などで具体的に)
・ C言語やRuby本体の開発経験
・ Rubyコミュニティへの貢献経歴
・ ML等で英語で遣り取りできる技能っぷり
・ 自分からの提案金額
などを提案書に書いて提出
個人や法人格でもOKだけど、ぶっちゃけ短いし安いのでお手空きな個人事業主(フリーランス)やってる人が好ましいかと思われる
それとも広告として割り切ってみる?
0837デフォルトの名無しさん
2012/08/06(月) 13:58:47.96Railsの改造したほうがいいのか別の環境に乗り換えた方が良いのか。
プログラマはPHPでスクラッチするから時間とお金ちょうだいとか言うんだが・・・
0838デフォルトの名無しさん
2012/08/06(月) 14:15:49.890839デフォルトの名無しさん
2012/08/06(月) 14:19:25.600840デフォルトの名無しさん
2012/08/06(月) 14:26:01.41でおk
0841デフォルトの名無しさん
2012/08/06(月) 14:27:52.03要は前のRoR2.1のプログラムにバグがあった場合、それを今回修正することで
責任範囲が自分たちにのしかかってくるのを回避するため。
つまりは、金は改造分だけ、サポートは全システムみたいなことを恐れている。
どうせ全部振ってくるんだろ?だったら全部面倒見てやるから、うちらの
保証しやすいように金と時間をよこせや、ってことだ。
0842デフォルトの名無しさん
2012/08/06(月) 14:30:30.130843デフォルトの名無しさん
2012/08/06(月) 14:51:53.70リニューアルと称してごっそり作り直すことでカネをもらうのが狙い
0844デフォルトの名無しさん
2012/08/06(月) 17:31:24.19/ ノ ヽ ( ノ⊂ ̄))) ̄⊃
/|ヽ (_ノ ._ ̄ 0'ヽ 0'
/ |ノ .) (_) ヽ i ( むしゃむしゃしていた。
∋ノ | /――、__ ./(∩∩) 草なら何でもよかった。
/ /| ヽ__ノ | / ./ 今は反芻している。
| ( | ( ’’’ | ( /
|__ヽ. L_ヽ Lヽ_ヽ
''" ""''"" "'''''" ""''"" ''" ""''"" ''" ""''"" ''" ""''"" "''
0845デフォルトの名無しさん
2012/08/06(月) 17:59:48.18ああいうの、一行(ステップ)いくらで契約するのかな
ソースみるとやたら不要部分が多い
javascriptなど必要ないのに使ってたり
0846デフォルトの名無しさん
2012/08/06(月) 18:05:33.600847デフォルトの名無しさん
2012/08/06(月) 19:12:15.37囲い込みの基本中の基本だろ
Appleの常套手段
0848デフォルトの名無しさん
2012/08/06(月) 19:26:50.56金出して雇う形でやろうってのは
凄く前向きな話だし、いいことだと思うんだけど、
価格が……。
フルタイムじゃなくて期間半年の中でのパートタイムで、
時間のある学部生さんやってみませんか?
ってコンセプトなのかな。
0849デフォルトの名無しさん
2012/08/06(月) 19:50:52.14多分そうでしょう
コミュニティに名前を売るためのインターンみたいなもんだろね
0850デフォルトの名無しさん
2012/08/06(月) 22:24:13.81あの糞コミュニティーに入れるとは思えないがwww
0851デフォルトの名無しさん
2012/08/06(月) 22:27:15.511日1パッチ
うーん、無理だw
0852デフォルトの名無しさん
2012/08/07(火) 10:27:29.34いや、会社に金を落とさせることによって、就業中に Ruby いじる理由を用意する、っていうプロジェクトなんだよ。
Google の 20% ルールみたいのがどの会社にもあるわけじゃないから、金を出して 20% なり 30% なりを捻り出してやろうとしてるわけ。
0853デフォルトの名無しさん
2012/08/07(火) 10:47:08.840854デフォルトの名無しさん
2012/08/07(火) 11:32:43.43なるほど。
その場合、会社側からは月あたり0.2人月で
自社でのSES契約をRubyアソシエーションから請けてるふうに
見えるのかな。
成果評価(≒納品物)とかの問題をスンナリ合意できるなら
上手くいくかもしれないね。
0855デフォルトの名無しさん
2012/08/07(火) 11:41:25.38単に**優秀な**学生さんか、もしくは土日夜間に自宅でやってくれるプロを
募集中ということでしょ
0856デフォルトの名無しさん
2012/08/07(火) 12:02:38.310857uy
2012/08/07(火) 12:49:03.540858デフォルトの名無しさん
2012/08/07(火) 13:57:09.14自宅でやってくれているプロは既にいるんだよ。
そこで敢えて金を出すと言ってる理由を考えろ。
0859デフォルトの名無しさん
2012/08/07(火) 20:00:10.79RHG
0861デフォルトの名無しさん
2012/08/08(水) 00:40:03.46実装の技法なんかは普通に参考になるよ。
0862デフォルトの名無しさん
2012/08/08(水) 07:00:11.940863デフォルトの名無しさん
2012/08/08(水) 07:37:57.16韓国の就職ポータルサイト「サラムイン」は12日、同国の成人女性532人を対象に実施した、セクハラ性的暴力に関する調査結果を発表した。
半数を超える50.6%が「セクハラ、性暴行など性犯罪の被害に遭った経験がある」と答え、うち半数近くが「加害者は面識のある人物」と答えた。
複数の韓国メディアが報じた。
被害を受けた場所は、「道端」がもっとも多い29.4%(複数回答)で、交通機関(27.5%)、学校や塾、
事務室(22.7%)、飲み屋(15.6%)、静かな路地(14.5%)、階段やエレベーター(10.4%)だった。
多くの女性が性犯罪の被害を受けていたが、10人中6人(62.8%)は犯罪への対応方法が分からなかったり、不利益を恐れ、積極的な対応ができずにいた。
http://news.searchina.ne.jp/disp.cgi?y=2012&d=0416&f=national_0416_144.shtml
0864デフォルトの名無しさん
2012/08/08(水) 08:56:04.354割の人が正直に答えただけ
実際は遥かに多い
0865u
2012/08/08(水) 13:02:20.41delegateで
メソッド名がfの時は委譲の後に__setobj__で
新しいオブジェクトを指定しても正しく動くんですが
http://ideone.com/JaoyM
メソッド名がtestの場合は
なんか元のObject#testを参照してるようで
上手くいかないけど なんなの????
http://ideone.com/FI3FS
てか__setobj__の正しい引数は
c.__setobj__ ( b )
のようだけど、それならメソッドfの場合は
c.__setobj__ SimpleDelegator.new( b )
でも正しく動いちゃってるのはなんなの?
0866デフォルトの名無しさん
2012/08/08(水) 19:33:13.960867デフォルトの名無しさん
2012/08/08(水) 19:59:11.27Kernel.private_instance_methods.grep(/test/) #=> [:test]
Kernel#test って何だろ?
0868デフォルトの名無しさん
2012/08/08(水) 20:50:48.26動いちゃってるのは単に
c→SimpleDelegator.new( b )で出来るデリゲータ→b
と二段階に委譲してるんじゃね?
0869デフォルトの名無しさん
2012/08/08(水) 20:52:25.260870uy
2012/08/08(水) 20:58:31.59testは、ファイル操作の1つ
http://doc.ruby-lang.org/ja/1.9.3/class/Kernel.html
Kernelに存在するメソッド名とかぶると全部だめ
Mix-inの順序とかでこうなってんのかな
0871uy
2012/08/08(水) 21:01:10.78include kernelとあった
これをコメントアウトしたら正しく動いた
このinclude必要なの?なんなの?
0872uy
2012/08/08(水) 22:33:52.34つまり
delegate.rbの76行目あたりのmethod_missingだ
2重に委譲した場合は
# target.respond_to?(m) ? target.__send__(m, *args, &block) : super(m, *args, &block)
この時点ではまだtestが定義されていない?ので
この時に
#target.__send__(m, *args, &block) これを行うと__send__でKernelのtestを呼んでしまう
respond_to?(m) はprivateもpublicも関係ないから
で、このときにprivate_methodsにKernel#testを元々もっているのはSimpleDelegator#のインスタンスだから
そこに委譲されている( b )にKernel#testはない。
target.test のようには呼び出すと、一度method_missingが呼ばれて
method_missing再帰が起こる
そして次の
target = self.__getobj__
では
Kernel#testをもっているオブジェクト == self で、それの .__getobj__ を呼ぶので
c.__setobj__ SimpleDelegator.new( b ) の ( b )の部分のオブジェクトが帰ってくる
で、このbにはpublic、にのみtestメソッドが存在しkernel#testは存在しない
で結局何が言いたいかというと
その部分をevalで書き換えたら動いた
target.respond_to?(m) ? eval("target.#{m}( *args , &block)") : super(m, *args, &block)
0873uy
2012/08/08(水) 22:46:16.22・kernelに存在するメソッド名では2重委譲が上手くいかない
・kernelに存在しないメソッド名ならば2重委譲が上手くいく
これは引数のチェックをしてエラーを出すか
__setobj__ に SimpleDelegator.newが渡されるような状況がきてしまっても
動くようにすべきだと俺様は思った
c.__setobj__(c)
のような場合においては
raise ArgumentError, "cannot delegate to self" if self.equal?(obj)
ここに引っかかってエラーはでるようになっていたが、引数のエラーチェックはそれしかない
0874uy
2012/08/08(水) 23:08:00.16__getobj__や__setobj__をもっているほぼそっくりで似たようなオブジェクトを委譲しようとしても
これは失敗するから2重委譲させる事はありえなくて、
76行目のところのmethod_missing内でもう一度method_missingが呼ばれてしまったら
その時点でこれはエラーにすべきだと俺様は結論付いたんだけど?
0875デフォルトの名無しさん
2012/08/09(木) 01:23:40.130876デフォルトの名無しさん
2012/08/09(木) 01:36:17.53まあ定期的にイベントは発生してる方じゃないの
0877デフォルトの名無しさん
2012/08/09(木) 05:30:04.45うまくいかないのは最初のmethod_missingのtarget.__send__が
targetのprivateな:testを呼び出せてしまうから
二発目のmethod_missingが呼ばれないせいだろ
0878uy
2012/08/09(木) 06:57:47.78begin
ensure
end
はあるがrescueがかかれてない
書き忘れと予想
ただ単に2重委譲が動くか動かないかの問題じゃなくて
Simpledelegateと同名のメソッドをもつ全く違う挙動のクラスを渡した場合に爆発するよそこ
0879uy
2012/08/09(木) 07:50:49.58http://ideone.com/YRLqy
相当確率は低いがバグの元
動的言語の問題点を見た
0880デフォルトの名無しさん
2012/08/09(木) 09:05:44.180881デフォルトの名無しさん
2012/08/09(木) 11:20:26.981〜10行は一見正しく動いているように見えるが、
c.test を c.__send__ :test の形式で呼び出そうとするとKernelモジュールの:testを呼びにいってしまう
Kernelモジュールのメソッドをオーバライドしたオブジェクトに対するSimpleDelegatorが、
この時点でもうダメなんだよ
16行目以降とはまた別の問題
0882デフォルトの名無しさん
2012/08/09(木) 12:36:34.47それは__send__はそのままでsendを再定義するのが正しい気がする
__send__を使うような人は自力でなんとかするべき
0883デフォルトの名無しさん
2012/08/09(木) 12:57:05.38SimpleDelegatorの場合には具体的にどうしろと?
>>881の問題に関しては、SimpleDelegatorは加害者であり被害者でもあるの。
SimpleDelegatorが、Kernelモジュールのメソッドをオーバライドしたオブジェクトに対して、
__send__がうまく動かないオブジェクトを生成する。
そして、SimpleDelegator自身が、上記のような__send__が動かないオブジェクトに対して、
__send__を使う可能性がある。
0884デフォルトの名無しさん
2012/08/09(木) 14:16:02.30いっそmethod_missingの__send__をpublic_sendに変えちゃったら駄目かなあ
privateメソッドを呼べなくしちゃう
publicで再定義した場合は普通に呼べる(>>865の下の例みたいなやつ)
0885デフォルトの名無しさん
2012/08/09(木) 14:23:25.650886デフォルトの名無しさん
2012/08/09(木) 14:24:44.87869 名前:デフォルトの名無しさん [sage]: 2012/08/08(水) 20:52:25.26
自演か……
875 名前:デフォルトの名無しさん [sage]: 2012/08/09(木) 01:23:40.13
世間の関心をつなぎとめる話題とか定期的に出さないの
876 名前:デフォルトの名無しさん [sage]: 2012/08/09(木) 01:36:17.53
最近はmruby、来年はRuby2.0が控えてるから
まあ定期的にイベントは発生してる方じゃないの
880 名前:デフォルトの名無しさん [sage]: 2012/08/09(木) 09:05:44.18
Rubyの欠陥である
884 名前:デフォルトの名無しさん [sage]: 2012/08/09(木) 14:16:02.30
>>883
いっそmethod_missingの__send__をpublic_sendに変えちゃったら駄目かなあ
privateメソッドを呼べなくしちゃう
publicで再定義した場合は普通に呼べる(>>865の下の例みたいなやつ)
0887デフォルトの名無しさん
2012/08/09(木) 14:29:25.420888デフォルトの名無しさん
2012/08/09(木) 14:59:56.84> 世間の関心をつなぎとめる話題とか定期的に出さないの
美女ruby、(美女カレンダーを真似たやつ)
小中学生ruby学校、ruby大会
0889デフォルトの名無しさん
2012/08/09(木) 15:12:58.930890デフォルトの名無しさん
2012/08/09(木) 17:09:46.640891デフォルトの名無しさん
2012/08/09(木) 18:45:19.86Delegatorのmethod_missingは
・デリゲータ自身がそのメソッドを持ってたらselfに__send__
・持ってなかったらtargetに__send__
・targetも持ってなかったらsuper
ただし
・Kernelのprivateメソッドは概ねモジュール関数だからそれらはundefしてしまう
って感じかなあ
デリゲータに存在するメソッドは再定義出来なくなるわけだけど、
・to_sなど一部のメソッドは元々undefしてある
・object_idとかclassはデリゲータのを呼んで欲しい
・methodsとかはデリゲータで再定義してそれ経由で委譲先のも呼んでる
・testとかは問題なくなる。その代り本来の用途で使いたくても委譲先頼りになる
protected関係はどうあるべきかよく分からないから適当
0892デフォルトの名無しさん
2012/08/09(木) 18:52:32.08もうちょっと考えないと
0893デフォルトの名無しさん
2012/08/09(木) 20:05:52.97無かったらきれいに解決する方法は無さそうな気がしてきた
0894デフォルトの名無しさん
2012/08/10(金) 17:45:25.570895デフォルトの名無しさん
2012/08/12(日) 08:39:21.60だいたい同じ
なにがなんだかわからんこともあるが、どうせ間違ってるか意義がないかどっちかなのでどちらにしても表示させる理由はない
0896デフォルトの名無しさん
2012/08/13(月) 12:34:33.05結構名無しでも書き込んでるし、
その名無しuyに対して、結局レスもらったりレス返したりやってると思うよ
そこら辺は気持ち的に大丈夫なのですか?
0897デフォルトの名無しさん
2012/08/13(月) 12:52:04.490898デフォルトの名無しさん
2012/08/13(月) 12:59:50.390899デフォルトの名無しさん
2012/08/13(月) 16:15:16.650900デフォルトの名無しさん
2012/08/13(月) 18:26:59.400901デフォルトの名無しさん
2012/08/13(月) 19:58:36.88中途半端どころか知識が欠如してたuy
0902uy
2012/08/13(月) 21:27:26.30# then iterator block ...
if 5 then | n |
p n # = > 1
end
# then times ...
if 5 then.times do | n |
p n # = > 1 2 3 4 5
end
# unless else map iterator ...
b =
unless [1,2,3]
else.map do | n |
p n * 2 # = > 1 2 3
end
p b # = > 2 4 6
# object if ...
[1,2,3].if 10 then | a , b |
p a # = > 1 2 3
p b # = > 10
end
0903uy
2012/08/13(月) 21:28:44.69# object if else ...
[1,2,3].if false then | a , b |
else | a , b |
p a # = > 1 2 3
p b # = > false
end
# proc case
d = []
f = -> n { n == 2 }
case f
when 1
d << 1
when 2
d << 2
when 3
d << 3
end
p d # = > [1 , 2]
# for ...
for [1,2,3]
print $_ # => 1 2 3
print # => 1 2 3
end
みてくださってありがとうございました
0904uy
2012/08/13(月) 21:30:48.60これは。、
# then iterator block ...
p n # = > 5
これでした。、
0905デフォルトの名無しさん
2012/08/13(月) 21:59:38.700906デフォルトの名無しさん
2012/08/14(火) 01:45:29.65エスケープシーケンスを使うとこうなってしまうのですが...
http://www.imgur.com/HkuZT.png
0907デフォルトの名無しさん
2012/08/14(火) 01:55:57.12ありがとうございました
0908uy
2012/08/15(水) 19:00:43.98なんかこんな感じのコード混ぜたら一定確率で落ちて [BUG] Segmentation faultでたんですけど
(GCをオフにしておくと落ちない 気がする)
f = ->{
p 1
}
tmp = f.clone
f = ->{
tmp.call
p 2
}
f.call
レス数が900を超えています。1000を超えると表示できなくなるよ。