Rubyについて Part 43
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/04/27(水) 23:59:30.15http://www.ruby-lang.org/
= 前スレ
Rubyについて Part 42
http://hibari.2ch.net/test/read.cgi/tech/1295081752/
関連スレなどは >>2-
0951デフォルトの名無しさん
2011/06/21(火) 20:30:42.86その辺は割と行き当たりばったりでいけるみたいよ
NetBeansとかはJRuby内蔵してオブジェクト評価しちゃう
とかそんな無理矢理感漂う力押しで解決してたりとか
0952デフォルトの名無しさん
2011/06/21(火) 20:34:09.990953デフォルトの名無しさん
2011/06/21(火) 20:40:09.480954デフォルトの名無しさん
2011/06/21(火) 20:43:24.65ほとんどの場合でうまくいってコストも妥当なのなら、それでいいんじゃないかね
0955デフォルトの名無しさん
2011/06/21(火) 20:47:17.49リファクタリングの機能がほぼすべて揃っていることを言ってるんであって、
「どんなリファクタリングでも機能としてできる」って意味じゃないのでは?
0956デフォルトの名無しさん
2011/06/21(火) 20:57:35.85>>919はIDE舐めすぎってところだろうな
0957デフォルトの名無しさん
2011/06/21(火) 21:04:21.13完全自動化が難しいリファクタリングもあるしな
Template Methodの形成とか
0958デフォルトの名無しさん
2011/06/21(火) 21:26:24.57Scalaとかはパターンマッチングとかで静的に解決する見込みがあるのかな?
0959デフォルトの名無しさん
2011/06/21(火) 21:28:40.890960デフォルトの名無しさん
2011/06/21(火) 22:10:24.17ちょっとバージョン古いけど大差ないだろ。
移動
メソッドシグネチャの変更
インターフェースの抽出
スーパークラスの抽出
使用可能な場合スーパータイプを使用
プルアップ
プッシュダウン
クラスの抽出
パラメタオブジェクトの導入
総称型引数の推測
こんなもんか。
メソッドのオーバーライドだのコンストラクタの生成だの
委譲メソッドの生成だのはリファクタリングとは別枠で用意と。
それぞれの処理は全自動ではなくて、都度問い合わされたり
プレビューで確認させられたりだな。
>>957
インターフェースの抽出→メソッドのオーバーライド
って感じでやるみたいだ。
当然全自動はムリでどのメソッドを抽出するか選べってIDEが訊いてくるね。
判断は人間にさせてIDEは候補の抽出と
指示された処理の結果保証を確実にやるって割り切りのようだ。
まあ実際それで十分なんだろうな。
0961デフォルトの名無しさん
2011/06/21(火) 22:21:47.640962デフォルトの名無しさん
2011/06/22(水) 02:45:01.150963uy ◆yyC0rYWEq2
2011/06/22(水) 05:55:29.60他言語でもあったりするの?
役立ちそうでどうでも良いような画期的な機能に思えるんだけど
puts DATA.read
__END__
tes
s
ss
s
s
0964デフォルトの名無しさん
2011/06/22(水) 06:03:57.420965uy ◆yyC0rYWEq2
2011/06/22(水) 07:18:20.870966デフォルトの名無しさん
2011/06/22(水) 09:17:03.78BASICのDATA文とかENDより後に書くのが主流だったしなー
0967デフォルトの名無しさん
2011/06/22(水) 09:21:13.39カードがあって、そのあとプログラムのカードとデータのカード、とかたぶん
そういう文化。
0968デフォルトの名無しさん
2011/06/22(水) 10:26:27.67処理とデータは分けましょう。
0969デフォルトの名無しさん
2011/06/22(水) 10:39:47.28そのわりにrewindとかできるけど。
0970デフォルトの名無しさん
2011/06/22(水) 11:30:13.420971デフォルトの名無しさん
2011/06/22(水) 11:45:13.90ヒアドキュメントじゃなくて?
0972デフォルトの名無しさん
2011/06/22(水) 12:27:12.920973デフォルトの名無しさん
2011/06/22(水) 12:54:32.210974デフォルトの名無しさん
2011/06/22(水) 13:04:21.330975デフォルトの名無しさん
2011/06/22(水) 13:35:40.840976デフォルトの名無しさん
2011/06/22(水) 15:22:32.750977デフォルトの名無しさん
2011/06/22(水) 20:01:42.720978デフォルトの名無しさん
2011/06/22(水) 20:02:12.500979デフォルトの名無しさん
2011/06/22(水) 20:02:48.390980デフォルトの名無しさん
2011/06/22(水) 20:03:29.240981デフォルトの名無しさん
2011/06/23(木) 00:47:39.78CGIとかシェルスクリプトで書いてたとかw
ワロスワロスw
ハードディスクに保存するよりフロッピーにラベルを貼って保存した方が遥かに便利とかかいてあってワロスワロスw
会社にPCが一台しかないのでメールなんて使いもんにならん。
一部のオタク用の道具であり一般に普及する事はないだろう。
ワロスワロスw
古い本ってとっておくと後で楽しいわw
0982デフォルトの名無しさん
2011/06/23(木) 00:48:53.300983デフォルトの名無しさん
2011/06/23(木) 07:35:16.18入力した数字の3乗根を求めるプログラムを作ったのですが、
bigdecimalを使っても計算精度があたりません・・・。
どうすればいいのでしょうか
0984デフォルトの名無しさん
2011/06/23(木) 07:57:59.89http://codepad.org/qb8xTVbg
こっちのほうが見やすいかもしれません。
0985デフォルトの名無しさん
2011/06/23(木) 08:02:31.13とりあえず、途中で min と max がただの整数になってる
Ruby の変数は箱ではなく、オブジェクトに貼られたラベルだ
BigDecimal オブジェクトに max という変数名をつけたからといって、max という変数名が常に BigDecimal になるわけじゃない
if m * m * m >= n
max = BigDecimal::new(m.to_s)
end
min = max - BigDecimal::new('1.0')
mid = (min + max) / BigDecimal::new('2.0')
とか書いたら
15 # input
0.25E1
0.225E1
0.2375E1
0.24375E1
0.246875E1
0.2453125E1
0.24609375E1
0.246484375E1
0.2466796875E1
0.24658203125E1
という表示になったけどこれでいっすか
0986デフォルトの名無しさん
2011/06/23(木) 08:12:08.17アルゴリズムが変なようにも見えるが……
二分法の骨格はこれだけ
http://codepad.org/gbpyRRAB
0987デフォルトの名無しさん
2011/06/23(木) 08:13:25.55ありがとうございました!
E1は消せませんか?
0988デフォルトの名無しさん
2011/06/23(木) 08:17:04.06おかしいですか・・・?
入力された数字の3乗根が整数の場合はすぐに出力して
そうじゃなかったら二分法で近似値を出力しようとしています。
>>984をみてもらったら
>>983よりわかりやすいかと思います
0989デフォルトの名無しさん
2011/06/23(木) 08:28:53.3610倍した値が出ないですか?
って意味で です
0990uy ◆KOAgYBL/Xg
2011/06/23(木) 08:41:23.17これか?
違えば自分で関数を調べるが良い
min = BigDecimal::new("5.0")
min.methods.sort.each do | f |
begin
print f , "\t\t\t"
puts eval" min.#{f} "
rescue
p f
end
end
0991デフォルトの名無しさん
2011/06/23(木) 08:44:30.56mid.to_s("F")
0992デフォルトの名無しさん
2011/06/23(木) 08:46:03.280993デフォルトの名無しさん
2011/06/23(木) 08:53:00.31なんのためにBigDecimalなんて遅いライブラリ使ってまで計算したんだよ
0994デフォルトの名無しさん
2011/06/23(木) 23:00:30.94ありがとうございました!
>>993
BigDecimalがないと小数点15桁以降が表示されないからです。
0995uy ◆yyC0rYWEq2
2011/06/23(木) 23:27:44.70http://www.dotup.org/uploda/www.dotup.org1732354.jpg
http://www.dotup.org/uploda/www.dotup.org1732358.jpg
Rubyで大規模なプログラム無理ぽとか、言ってるやつが信じられない
擬似OSとか10分で余裕で作れるレベル・・・・・・・
0996デフォルトの名無しさん
2011/06/23(木) 23:30:47.27いますぐWindowsで動くxmonadのサブセットを作るんだ
マジで神になれるぞ
0997uy ◆yyC0rYWEq2
2011/06/23(木) 23:43:09.81つうか速度を落としてでもソースコードを小さくしてる
ウィンドウ周りと、エディタと、STGかいてそれで1000行程度・・・・・
xmonadってHaskellでかかれてるってことは、関数ごとにコンパイルとかしてるんだろそれ
Rubyの速度でウィンドウマネージャ?システム? 作るのは実用的ではない・・・・・・
オブジェクト100個で処理落ちする
だから、どうせ処理落ちするから、吹っ切れてソースコードの小ささのみを求めてる・・・・
趣味のレベル・・・・・・・・
0998デフォルトの名無しさん
2011/06/23(木) 23:43:45.89そうでなきゃスクリプト言語の意味なす……。
「Rubyでも大規模なプログラムが書ける」ということを示したいなら、
短時間で一定のプログラムを書けることを示すんじゃなくて、
実際に「大規模なプログラム」を書いて見せなきゃダメだお。
・大規模で
・C/C++、あるいはせめてJavaやC#で書き直したくなるほどには重くなくて
・Rubyであるおかげでそれらの言語より短時間でスマートなコードで書けた
プログラムを書いてからまたどうぞ。
0999デフォルトの名無しさん
2011/06/23(木) 23:49:59.65まともに動くようにRubyで書けば「Rubyでも大規模開発できる」って認められるんじゃないかな。
1000uy ◆yyC0rYWEq2
2011/06/23(木) 23:52:47.70俺はそもそもソースコードが異質であり、何か大規模なものかいても例外とされる・・・・
[ [ oo.x , oo.y ] , [ oo.x + 20 , oo.y ] ].each do | ( x , y ) |
oo.node_task_template({ :x => x , :y => y , :d => Image.new(10,20,[100,100,150]) ,
:misaka => "user_shot" , :hdc => main ,
}) do | yu |
oo.y -= 2
next oo.delete if oo.y < 0
oo.search_up(/game_stage/).search_down_all_test(/tek_\d.*/).each do | key , value |
if Lumia.blockhit oo.x , oo.y , oo.d.width , oo.d.height , value.x , value.y ,
value.d.width , value.d.height
oo.search_up(/game_stage/).eval_do.push %!
(1..10).each do | i |
mm.node_task_template({ x: #{main.x} + #{oo.x} + #{oo.d.width/2} , y: #{main.y} + #{oo.y} + #{oo.d.height/2} ,
d: Image.new(4,4,[100,100,200]),
limit: 155 , add: 1 , :hdc => Window ,
speed: 0.5, angle: i*36 , misaka: "misaka",
feadin: ({ limit: 254 , add: 1 }) ,
rot: ({ limit: 400 , add: 1 }) ,
scalex: ({ start: 1 , limit: 2 , add: 0.01 }) ,
scaley: ({ start: 1 , limit: 2 , add: 0.01 }) ,
}) do |yu , c|
# Window.drawFont(oo.x, oo.y, "test#{c}", Yuyuko.font)
それに、arcadia(IDE)?
だって大規模といえば大規模だろ
もうRubyで大規模開発をやってる奴はやっている
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。