10/12/21 22:13:27
基本RubyとRailsはCPUコストやメモリコストが他のスクリプト言語や他のコンパイル済み言語よりも高い
これは単純に(ある程度の)足し算というレベルで高い
ごっつい処理をたくさんの人に提供、とかいうのだと、最終的にPHPのほうが最低2倍は捌ける人数多いと思う
でも、それでもRubyを使う人がいる
この世のあらゆるプログラムをCで記述しないのと同じような理屈
Rubyで初期開発して、処理負荷が間に合わなくなったら他の言語に移る、というのは
Ruby的にはまったく悲しむべき問題ですらない
むしろRubyの優位性を示す出来事であるとすら思う人が多いはず
公開プロダクトを最初から最後までRubyで運用し倒しましたとかいうのは
その人がお金持ちか基地外か過疎プロダクトかどれか
274:デフォルトの名無しさん
10/12/21 23:04:46
>>273
matzはtwitterがscalaを採用したことを、負けたと思ってるみたいだけどな
275:デフォルトの名無しさん
10/12/21 23:52:11
Ruby(onRails)を高速化すれば戻って来てもらえると本気で思ってる節があるな
276:デフォルトの名無しさん
10/12/22 01:13:36
Rubyの適用範囲がもっと広ければなあと考える事は
特に作者としては自然なことだと思うが
277:デフォルトの名無しさん
10/12/22 08:07:10
URLリンク(jp.rubyist.net)
Net::HTTP.Proxy メソッドは、
Net::HTTP を継承したクラスを作成して、
作成した クラスを返します。
Ruby は非常に柔軟な言語であるため、
メソッド中に動的にクラスを作成して、
そのクラスを返すということが可能です。
このメソッドの中にクラスって意味がわかりません。
普通、クラスを作ってその中にメソッドを定義するのではないですか?
278:デフォルトの名無しさん
10/12/22 08:11:08
質問です
Windowsで下記のプログラムを-Eを付けて実行するとEncoding::UndefinedConversionErrorが
発生します。どのように修正すべきか教えていただけませんか
# coding: utf-8
require 'pstore'
db = PStore.new("pstest")
str = "あいうえお"
db.transaction{ db[1] = str }
db.transaction{ puts db[1] }
C:\home\mechanize>ruby -v
ruby 1.9.1p429 (2010-07-02 revision 28523) [i386-mswin32]
C:\home\mechanize>ruby -Ecp932:utf-8 hoge.rb
C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:499:in `write': "\xE3" from ASCII-8BIT to UTF-8
in conversion from ASCII-8BIT to Windows-31J (Encoding::UndefinedConversionError)
from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:499:in `save_data_with_fast_strategy'
from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:473:in `save_data'
from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:335:in `block in transaction'
from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:361:in `synchronize'
from C:/PROGRA~1/RUBY-1~1.1/lib/ruby/1.9.1/pstore.rb:321:in `transaction'
from hoge.rb:5:in `<main>'
279:デフォルトの名無しさん
10/12/22 08:55:56
ああ、pstoreの中のFile.newが外部エンコーディングに引っ張られてるのか
…これどうしよう
>>277
たいしたことしてない
Net::HTTP.Proxy メソッドの定義見るとわかるが、ClassクラスのオブジェクトをClass.newで作って、
それにmodule_evalでクラスインスタンス変数の定義書いて、そのClassオブジェクトを返すようにしてる
klass = Class.new
klass.module_eval{
attr_reader :name
def initialize
@name='A'
end
}
p klass.new.name #=> 'A'
ぶっちゃけこんなマニュアルの中でこんな宣伝する必要なんてないと思うけどね
1.9時代においては削除されるべき無用で紛らわしい雑談だと思うよ、個人的には
280:デフォルトの名無しさん
10/12/22 09:11:16
>>279
マニュアルじゃなくて雑誌記事でわ?
281:デフォルトの名無しさん
10/12/22 09:13:01
pstoreするときだけ外部エンコーディングの影響をなくしたこれなら動く
当たり前だが
# coding: utf-8
require 'pstore'
db = PStore.new("pstest")
str = "あいうえお"
@evacuated_encoding_for_pstore = Encoding.default_external
Encoding.default_external = Encoding::ASCII_8BIT
db.transaction{ db[1] = str }
db.transaction{ puts db[1] }
Encoding.default_external = @evacuated_encoding_for_pstore
puts してるのは UTF-8 エンコーディングの UTF-8 バイナリ列のままだから
コマンドプロンプトでは化けるので注意
282:デフォルトの名無しさん
10/12/22 09:28:50
>>281
ありがとうございました。
リファレンスちゃんと理解できるよう出直します。
私のところでは、化けずに出力されてます。
283:デフォルトの名無しさん
10/12/22 09:33:59
どっちかというと、File にエンコーディングを指定できない(または固定しない) PStore 側がへなちょこなんだと思う
ユーザー側にあんまり非はないし、この対処をマニュアルから読み取るのは不可能なんじゃないかな
284:デフォルトの名無しさん
10/12/22 10:19:08
>>275-276
言語のユーザーや仕事の開発者としては、Ruby向いてないところに差し迫ったら乗り換えて当然と思ってしまうけど
Matzは立場上(本気でそう思ってなくても)悔しがらないとあかんのでは?w
285:デフォルトの名無しさん
10/12/22 10:44:23
>>277
>メソッド中に動的にクラスを作成して、
>そのクラスを返すということが可能です。
>
>このメソッドの中にクラスって意味がわかりません。
メソッドの中でクラスを作成し、それを返す。ただそれだけ。
これはもとのマニュアルが悪いな。「動的に」なんて初心者にわかるはずがない。
直すなら
「メソッドの中でクラスを作成して返します」
「メソッドを実行するたびにクラスを作成して返すことができます」
とか。
286:デフォルトの名無しさん
10/12/22 11:18:44
>>284
それは単に表面的なスタイルの問題じゃないの?
インデント強制だからPython は嫌だとか言ってる人たちを思い出すな
287:デフォルトの名無しさん
10/12/22 11:20:24
どこをどう読めば>>284がスタイルの問題になるのかまったくわからない。
アンカーミスだよな?
288:286
10/12/22 11:22:51
>>287 すまん。確かに275-276が違う所をさしてるように見えてしまった
289:デフォルトの名無しさん
10/12/22 12:22:12
最近Rubyはじめたんですが、クロージャのような無名の処理はみなさんどうやって文書化してます?
290:デフォルトの名無しさん
10/12/22 12:27:25
ソースがドキュメント
291:デフォルトの名無しさん
10/12/22 15:23:46
jrubyのnkfが壊滅的なのですがどうすればいいんでしょうか
jrubyで文字コード変換するなということなんだろうか
292:デフォルトの名無しさん
10/12/22 16:21:18
>>291
もうJava標準APIを呼んでしまえ。
String#getBytesとかエンコード指定付きコンストラクタとか
Reader/Writerとか。
293:デフォルトの名無しさん
10/12/22 19:09:44
>>274
>matzはtwitterがscalaを採用したことを、負けたと思ってるみたいだけどな
うそだぁ
ソースは?