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


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

Ruby 初心者スレッド Part 34



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

★注意★ Ruby 1.9.1 は初心者にはまだ時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
   (理由:現時点では多くの有名ライブラリやアプリが 1.9.1 に完全対応していないためです。)
 1.8.7 でも 1.9 系に導入された新機能のいくつかが利用可能なため、1.8.7 を習得すれば将来スムーズに 1.9 系に移行できるでしょう。

関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の 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を読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

303 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 10:51:12 ]
>>294
それ面白そうだなw 使ってみるか

304 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 11:12:10 ]
>>303
やめとけ
警告多すぎて森に隠れる木の状態になるぞ
igonoreの指定も面倒だし

305 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 11:14:38 ]
何事も原理主義はよくないと思います

306 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 11:16:32 ]
めちゃくちゃ実利だと思うが…

307 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 11:26:24 ]
定義済みのクラス特異メソッドをprotectedにするのってどうすればいいんでせう?

class DB
protected
self.new
super
end
end

してもクラス外で普通にDB.newできてしまったorz

308 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 11:28:00 ]
protectedにしてどうしたいの?

309 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 11:31:07 ]
具体的には、DBのインスタンスを作成する手段をDB.openに限定したいんです。
db.closeするのを忘れたくないんで。

310 名前:307 mailto:sage [2010/02/07(日) 11:40:07 ]
class Hoge
private
def self.hoge
puts 'hoge'
end
end
Hoge.hoge

でも動いちゃいますね……
そもそもクラスメソッドをprivateにするのってどうすりゃいいんでしたっけ?

311 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 11:40:33 ]
「DBクラスいじるならopen使え」とマニュアルに大きな赤い字で書いておけ
それとブロックつきopenの提供で充分



312 名前:307 mailto:sage [2010/02/07(日) 11:42:15 ]
www.gesource.jp/weblog/?p=473

吊ってきたいと思います。
スレ汚しすいませんでした。

313 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 11:48:31 ]
>>258

素直にgnuplot使うのが手っ取り早い
rgplot.rubyforge.org/


314 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 12:24:44 ]
rubyのprivateにはいつも混乱させられる
うまい覚え方はないものか

315 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 12:44:35 ]
俺も覚えられてない・・・
privateがC++なんかのprotected相当なんだっけ?

316 名前:デフォルトの名無しさん [2010/02/07(日) 13:01:40 ]
rubyのprivateは、
「任意のレシーバに対する呼び出しが出来ない」
関数っぽく書く呼び出し方のみが可能ってことね。


317 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 13:06:54 ]
「RubyでC++やJava再現しようぜ時代」の負の遺産
こんなオモチャ機能は1.9で無くなってもよかった

318 名前:デフォルトの名無しさん [2010/02/07(日) 13:07:32 ]
privateよりprotectedのほうが理解されていないと思う。


319 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 13:17:06 ]
>>317
少なくとも名称は変えるべきだったよなあ

320 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 13:23:05 ]
>>316
つまり、
class Chinko
  private def manko
  end
end
の場合、

class Chinko内で
def sounyu
  manko
end

のような呼び出しはOKだが、

chinko = Chinko.new
chinko.manko
は駄目なんだっけ?

321 名前:デフォルトの名無しさん [2010/02/07(日) 13:29:10 ]
ifの条件文のレイアウトのことなのですが、改行が問題になるケースってあるでしょうか?
if name == "foo" ||
name == "bar"
#do something
end

()や:が必須の言語ですと気分的にも安心なのですが、
Rubyではあまり改行してるの見ない気もします。
一応、上のコードは問題ちゃんと判定されているし、
条件文内の代入文もきちんと評価されていますが、どうも不安です。
条件文の後にthenを入れておけば確実なのかなとも思うのですが・・・



322 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 13:30:37 ]
マニュアルくらいは読め
Rubyのprivateは単に見栄え上の判断しかしない

323 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 13:33:43 ]
>>321
カッコ書いて条件部分を式にすればいいじゃん

時々、カッコ書いたら死ぬ病の人が紛れ込んでるんだけど、そういう人は Ruby 使ったら駄目よ

324 名前:320 mailto:sage [2010/02/07(日) 13:36:27 ]
こんなん書いている間にマニュアル読めよ、試せよという感じですね、すいません。
  chinko = Chinko.new
  chinko.manko

   private method `manko' called for #<Chinko:0xxxxxxx> (NoMethodError)
で駄目ですね。
  tansyou.send :manko
みたいにsend経由だとOKなんですね。

325 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 13:37:53 ]
質問させて下さい。

たまにブログなどで見かけるように、

puts 1 + 1 # => 2

のように、出力結果をコメントで文の右に追加してくれるスクリプトがあったと思うのですが、
どなたか御存知ありませんか?

326 名前:325 mailto:sage [2010/02/07(日) 13:41:06 ]
>>325 ですが、自己解決しました。
xmpfilter でした。

「ruby 実行結果 コメント」で検索したらでてきました。
xmpfilter で Ruby のコードに実行結果をコメントに表示 | すぐに忘れる脳みそのためのメモ
jutememo.blogspot.com/2008/06/xmpfilter-ruby.html

eigenclass - xmpfilter: automagic Test::Unit assertions/RSpec expectations and code annotations
eigenclass.org/hiki/xmpfilter

327 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 15:13:27 ]
クロージャとプロシージャの違いがわからないのですが…
sortメソッドを使うときに、a.sort{|a,b|a<=>b}とか書きますよね。この場合はどちら?

328 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 15:18:41 ]
そんな小難しい外の用語を使わずに、ブロック引数、でよい。

329 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 15:38:31 ]
クロージャとプロシージャは別概念

クロージャは生成時の情報(コンテクストと呼ばれる)を閉じ込めて保有するオブジェクト及びブロックの総称
一般的にbindingメソッドを持つ
例 Procインスタンス, Bindingインスタンス, ブロック

プロシージャは手続きオブジェクト及びブロックの総称
一般的にcallメソッドを持つ
例 Procインスタンス, Methodインスタンス, ブロック

>>327の例の場合
ブロック生成時の情報は特にブロック内に閉じ込められていない。
だからクロージャとしては使われていない。
もっぱら手続きを実行するためのブロックなのでプロシージャとして使われている。

クロージャの例
def hoge
var = "hoge"
Proc.new{var}
end
closure = hoge
#p var #=> undefined local variable or method `var'
p eval('var', hoge.binding)


330 名前:329 mailto:sage [2010/02/07(日) 15:41:57 ]
MethodインスタンスではなくUnboundMethodインスタンスか

331 名前:デフォルトの名無しさん mailto:sage [2010/02/07(日) 16:02:44 ]
説明は

「Rubyではコンテキスト情報の保存にBindingクラスのオブジェクトを用いる」

でいいじゃん
それ使えばコンテキスト依存の処理になるからおおむねクロージャだ
使わない(使わなくてすむ)ならただのプロシージャ(可搬性のある処理のかたまり)



332 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 21:28:39 ]
2年前に書いたスクリプトを流したら90秒もかかった
当時は14秒で終えてたのに

333 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 21:35:39 ]
いつどこでどのように流されたんですか

334 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 23:54:49 ]
実行することを流すと言います。

335 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 00:08:40 ]
スパゲティコードをまるでソウメンのように流すのですね

336 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 00:24:48 ]
そうです。まさにスパゲティです。

337 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 01:23:06 ]
ためしにVMware上のUbuntuで動かしたら2.4秒だった

338 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 07:43:24 ]
IronRuby 6.4秒

339 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 18:16:30 ]
Windows版Ruby 1.8 -> 1.9で
テキストモードでのファイル読み込みが10倍ほど遅くなってるのでそのせいか?

読み込み時のエンコーディングをASCII-8BITとかにしてもさほど変わらんので
universal newlineとかいう改行コードの差異を吸収してLFに変換するのが遅いのだろうか
バイナリモードで読んでからforce_encodingすると1.8と同程度になるよ

自分は趣味程度にしか使ってないので困らないけど
巨大なログを処理する人とかだと、地味にいやな性能劣化なんだろうな


340 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 18:34:44 ]
日英辞書テキストのEDICT(SJISに変換済み、5.3MB、10万行)を Mingw版Ruby 1.8.7p160 で
ruby -e "open(ARGV.shift,'r'){|f|f.read}" edict
すると 0.42秒
Mingw版Ruby 1.9.1p0 では107秒
ちょっ、200倍遅いorz

ruby -e "open(ARGV.shift,'rb'){|f|f.read.force_encoding('cp932')}" edict
バイナリモードで 0.46秒
ruby -e "open(ARGV.shift,'rb'){|f|f.read.force_encoding('cp932').gsub!(/\r\n|\n|\r/,?\n)}" edict
などと改行変換もすると 3.72秒

K6-2 450MHzのWindows2000なんでちょっと遅いし、Rubyも最新のじゃないですが


341 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 18:35:14 ]
>>339
migw32使え



342 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 18:59:11 ]
10倍ですか...
へんに差異を吸収しようとせずエンコーディング毎に処理して欲しいもんだ
コンパイラが古いとはいえ、まさか仮想環境や.NETに負けるとは思わなかった。

↑↑↑はパズル問題を解くスクリプトで読み込みはほんの少し
書き出しは途中経過も出してるんでかなり多い
1.8.6: 220"、1.9.0: 14"、1.9.1: 90"

343 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 19:06:59 ]
スクリプト foo が多重起動しないようにするにはどうやればいいですか。
後から起動した方をすぐに殺したいです。

344 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 19:23:33 ]
ファイルを利用して排他的にするとか。
あまり好きじゃないけど。

345 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 19:27:46 ]
ロックファイルがなかったらロックファイルを作る
ロックファイルがあったら「起動中です」と言ってexit(1)する
スクリプト終了時にロックファイルを消去する

こんなのがいちばん簡単だと思う
強制終了でロックファイル消去プロセスを飛ばすと使用者層によっては悲惨だけど

346 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 19:34:15 ]
migw32どこ? 古いのしか見つからない

347 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 19:44:48 ]
mswin32(ActiveScriptRuby、gem対応の標準)
ttp://www.artonx.org/data/asr/
mingw32(RubyInstaller/OneClickInstaller、gemの古パッケージはバイナリがなくDevelopment Kitが要ることも)
ttp://rubyinstaller.org/download.html

とりあえずp0 の1.9.1 は産業廃棄物なので使って文句言うの禁止で

348 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 20:42:28 ]
ありがとうございます。ちょっとだけ速くなりました。

ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-mswin32]
time:4.984375

ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-mingw32]
time:3.421875

IronRuby 0.9.3.0 on .NET 2.0.0.0
time:5.890625

ruby 1.9.1p243 (2009-07-16 revision 24175) [i486-linux] ※VMware
time:2.392678477


349 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 23:03:02 ]
まねしてもいいよ。

unless [
   exp1,
   exp2,
   exp3,
   exp4,
   ...
].include? false
   puts "true!"
end


350 名前:デフォルトの名無しさん mailto:sage [2010/02/09(火) 23:22:03 ]
>>349
釣りだよな?
Enumerable#all?
Enumerable#any?
と同じ結果を望んでるなんてことないよな?

351 名前:sage [2010/02/10(水) 00:13:38 ]
f=lambda{|x,y| x+y}
["sa","ka","wa"].map(&f.call(_,"by"))

みたいに、第二変数の束縛を先にやってから
procをつくりたいのですが、どうすればいいのでしょう?
map{...}はなしで。



352 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 00:18:31 ]
カリー化したいんでしょ?
おれそれ諦めた。

353 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 00:26:48 ]
こう?
f=lambda{|x,y| x+y}
p ["sa","ka","wa"].map(&f.curry.call("by"))

354 名前:sage [2010/02/10(水) 00:50:33 ]
お!できてる。
順番は逆だったけど、あとは適当に。

355 名前:デフォルトの名無しさん [2010/02/10(水) 00:59:39 ]
class Proc
  $__ = Object.new

  def cut(*args_part)
    Proc.new{| *args |
      call(*args_part.map{| arg |
        arg == $__ ? (args.shift) : arg
      })
    }
  end
end

f=lambda{|x,y| x+y}
p ["sa","ka","wa"].map(&f.cut($__,"by"))
# => ["saby", "kaby", "waby"]

まったく勧めないけど一応

356 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 08:30:40 ]
>>341
mingw版入れろはわかるけど面倒だからパッケージ作ってくれ頼む。RubyGemsとか入っているヤツ
Windowsはaptとかねーんだよ
外人でもいいけど、こういうのはどこに頼めばいいの?
ActiveScriptRubyに上書きしてもいいのかな

>>347
OneClickInstllerも1.8系は1.8.6だから古いよね

357 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 08:32:02 ]
しかし、RubyInstallerってmingw32版だったのね
そして、1.8.7版が来てる!!!サンクス

問題はアップデートだな。OneClickInstaller時にアップデートしようとしたらアンインストールしろ!とか言われたからな・・・

358 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 08:59:35 ]
Ruby Installer はかなり昔から mingw32 だった
>>356みたいな人間が発展を阻害する

359 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 09:26:54 ]
阻害してるという意味ではどっちもどっちだと思う

まー、mingw32は正式版じゃないからな
正式版だけ使いたいという人にはお勧めしない
現状の正式版は中身のRubyが全然「安心の正式版」じゃないけどな
インストーラーが未熟でも中身のRubyがバグフィックスされてることのほうが重要だと思う

360 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 09:44:31 ]
>>359
正式版ってなによ
どこにそんなことが書いてある

361 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 09:51:15 ]
解読してみた

まー、(現在公開されている)mingw32(のRuby Installer)は(まだrc2で)正式版じゃないからな
(rcやベータではない)正式版(のインストーラー)だけ使いたいという人には(まだ)お勧めしない
現状の(唯一の)正式版(として公開されてるOne Click Installer)は中身のRuby(の本体のパッチレベル)が(古くて)
全然「安心の正式版」(と言えるような組み合わせ)じゃないけどな
インストーラーが未熟でも中身のRubyがバグフィックスされてることのほうが重要だと思う

こんなんでどう



362 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 10:03:30 ]
わかりやすい

363 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 13:07:09 ]
>>361
thanxよくわかったw

364 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 18:00:13 ]
MSVC版では出来なくてmingw版だけで動く機能
あるいはその逆で
どんなのがありますか

365 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 18:06:00 ]
そーゆーもんはない
機能で分かれてるわけじゃない

わかんなかったら mswin32 である ActiveScriptRuby 使っとけ

366 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 19:23:29 ]
インストーラーとしてはmingwよりone click installerの方が正式版のため信頼できるが、
中身のRuby自体はmingwの方が新しい
って理解でいいの?

367 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 19:28:38 ]
thread とか lock とかは mingw の方が信頼性があるような気がする

368 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 19:31:35 ]
>>367
GIL使ってる限り信頼性は変わらない

369 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 19:38:19 ]
OneClickInstallerはインストーラー含めて正式版が作られてる
RubyInstallerはまだインストーラー含めてrc版(ベータと正式の中間)

OneClickInstallerで入るRubyはmswin32で作られている
RubyInstallerで入るRubyはmingw32で作られている

mswin32は従来のタイプの「Windows版Ruby」でgemライブラリでは確実にバイナリがある
 古いコンパイラで作ってあるせいか、環境によってはなぜか動作が遅いことがある
 どうせアップグレード時は全消し推奨なんで面倒の少ないこっち使って慣れろという説も根強い
mingw32は今後主流になるもので最終更新日が古いgemライブラリではバイナリ自前コンパイルも
 動作速度が遅くなる報告は少ないが、gemバイナリの自前コンパイル強要はめどい
 サイトのDevelopment KitをRubyを標準インストールしたディレクトリに上書きコピーすればいいだけだが
 あと、mingw32をWindows環境のRubyの印だと認識してないスクリプトがまだあるので手直しが要ることも

370 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 19:58:39 ]
あああ、なんかわけわからないことに
mswin32 版を使う場合は ActiveScriptRuby のほうインストールしろ
OneClickInstaller 使って数年前の Ruby をわざわざいまさらインストールする必要もない

 ■ とにかく迷いたくない普通の人 … ActiveScriptRuby
面倒がない mswin32 版のみ提供、ActiveTcl を別途入れると tcl でウィンドウも描けるぞ(要Tcl言語知識)
ttp://arton.hp.infoseek.co.jp/indexj.html
1.9.1 を使いたい人は
ttp://www.artonx.org/data/asr/
の「Ruby-1.9.1-p数字 Microsoft Installter Package」を使わせてもらえ
なに、自分のとこだけ妙に処理が遅い? 宝くじ並の外れ環境だからマシン買い換えろ

 ■ トラブっても自分で手直しする根性あるから遅くなる可能性ないほうがいい … RubyInstaller
古いコンパイラ製ではない mingw32 版の提供がメイン
ttp://rubyinstaller.org/download.html
古いgemパッケージでWindows環境だとみなしてくれずにコンパイラが走って「make がない」と言われること有り
それを乗り越えるためにコンパイラ環境が入ってる「Development Kit」をインストールしておくのを推奨
ttp://wiki.github.com/oneclick/rubyinstaller/development-kit
上記解説にもあるが、RubyInstallerの標準ディレクトリ構成の場合は上書きだけでよい(設定ファイル記述不要)
7zip でないとダウンロードしたファイルを展開できないので注意
スクリプト内での条件分岐で「mingw32」をWindowsとみなさないものが稀にあるので、それは手動で書き換える必要あり

371 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:08:43 ]
長い

 ・ 初心者は ttp://www.artonx.org/data/asr/ の 1.8.7 だけ使え、トラブル起きたらここで聞け

でいいじゃん



372 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:16:28 ]
てか本来は arton.hp.infoseek.co.jp/indexj.html でいいんだよね

どうでもいいけどこのサイト meta charset と本文 HTML のエンコーディング食い違ってるぞ
見るたびに毎回エンコーディング指定やり直さないといかん

373 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:22:12 ]
先生,「1.8が許されるのは小(ry」と煽ってもいいのはいつ頃ですか

374 名前:デフォルトの名無しさん [2010/02/10(水) 20:22:56 ]
1.8.6はともかく1.8.7は数年無理。


375 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 20:24:29 ]
先生,JRubyが「Ruby 1.9 compatible now」になるのはいつ頃ですか

376 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 21:00:20 ]
>>369-370
とりあえず Windows で Ruby がめちゃくちゃ面倒糞いということがわかりました
ほんとうにありがとうございました

377 名前:デフォルトの名無しさん [2010/02/10(水) 21:01:13 ]
>>375
見た感じ遠い未来に見える。
kenai.com/projects/jruby/pages/Ruby1_9Support


378 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 21:02:47 ]
>>372
それは作者がUTF-8の普及だか何かのためにわざとやってるらしいよ


379 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 21:08:40 ]
>>377
そもそもなんでそんな時間かかるんだよ
何がネックになってるんだ

380 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 21:12:04 ]
>>379
Java からも読めるように作ること

Java VM 上で単独で動く ruby インタプリタを作るだけなら
たぶんもっと早くにプロジェクト完了してるんじゃないかな

381 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 21:55:57 ]
つか1.8.7って鬼車使えるの?



382 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 22:18:29 ]
黙れカス

383 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 22:19:06 ]
ごばく

384 名前:デフォルトの名無しさん [2010/02/10(水) 22:26:55 ]
>>381
gem install oniguruma

組み込みになるわけではないので制約はあるが。
oniguruma.rubyforge.org/use.xhtml

385 名前:デフォルトの名無しさん mailto:sage [2010/02/10(水) 23:22:59 ]
oniguruma を使うようなひとなら mingw とか入れてるような
気がします・・・知らずに joni 使ってるひとも嫌少ないだろう・・・

386 名前:デフォルトの名無しさん [2010/02/10(水) 23:49:30 ]
>>381 ってjrubyの話なん?


387 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 03:58:52 ]
>>384
Requirements
* Oniguruma regular expression library (>= 4.x.x)

ってことは
自分でOnigurumaをコンパイルするか
バイナリをどこからともなく拾ってくる必要があるってことか

./configure
make
make install
で済む話ではあるが

388 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 22:37:00 ]
irb> p "ねこだいすき"
"\343\201\255\343\201\223\343\201\240\343\201\204\343\201\231\343\201\215"
irb> $KCODE="u"
irb> p "ねこだいすき"
"ねこだいす\343\201\215"

なんだこれ

389 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:22:03 ]
下のようなループってrubyだとどう書きますか?
for (i = rect->lx, j = rect->ly; i <= rect->hx; i++) map[i][j] = TRUE;

390 名前:デフォルトの名無しさん [2010/02/11(木) 23:24:17 ]
最近出るようになった気がする。
$ cat test.rb
# coding: utf-8
p 'ねこだいすき'

$ rvm 1.8.7-p72,1.8.7-p160,1.8.7-p174,1.8.7-p249,mput ruby -Ku test.rb
ruby-1.8.7-p72: ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin10.2.0]
"ねこだいすき"

ruby-1.8.7-p160: ruby 1.8.7 (2009-04-08 patchlevel 160) [i686-darwin10.2.0]
"ねこだいすき"

ruby-1.8.7-p174: ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin10.2.0]
"ねこだいすき"

ruby-1.8.7-p249: ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin10.2.0]
"ねこだいす¥343¥201¥215"

mput-head: ruby 1.9.2dev (2010-02-10 trunk 26632) [x86_64-darwin10.2.0]
"ねこだいすき"

391 名前:デフォルトの名無しさん [2010/02/11(木) 23:26:15 ]
>>389
jは変化してないけどいいの?
iだけならuptoでよいでしょう。




392 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:41:26 ]
>>391
ありがとうございます!

これをrubyに書き換えて勉強中でした。
ttp://racanhack.sourceforge.jp/rhdoc/coderect.html

393 名前:デフォルトの名無しさん [2010/02/11(木) 23:52:42 ]
>>388
redmine.ruby-lang.org/repositories/revision/ruby-18?rev=26103

usa, 2009年12月15日 11:50 AM

string.c (rb_str_inspect): wrong result of UTF-8 inspect because of the mistake of calculation. reported by eban via IRC.

これかな。

あれ、1.8.7-p248 がクリスマスリリースだったはずだが…


394 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 23:56:35 ]
Iconv::IllegalSequenceを見るのはもう飽きたお…

395 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 03:35:08 ]
何か一揆にperl5の時代に戻った気がするなw
教祖様が日本語処理ぐらい最初からまともに組み込んでてくれれば。

396 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 06:07:00 ]
iconvとnkfってどう違うの?
どう使い分けたらいいの?

397 名前:デフォルトの名無しさん [2010/02/12(金) 08:13:29 ]
nkfは
- shift_jis, euc-jp, iso-2022-jp, utf-8しか使えない。
- 改行コードの変換ができる。
- カタカナやアルファベットの全角半角変換ができる。
- base64のデコード/エンコードができる。

iconv
- いろんなコードが変換できる。

398 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 08:28:43 ]
>>372

ttp://www.artonx.org/diary/20100211.html#c01

399 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 08:33:31 ]
文字コード変換ならiconvが上で
その他機能がnkfにはあると
そういうこと?

400 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 08:51:30 ]
そもそも文字コード変換に上とか下とかあるんかいな
1.9のencodeとNKF/iconv/kconv/uconvの違いも教えてほしい

401 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 09:14:29 ]
動作が違うとかは置いとくと
対応してる文字コードが多いほうが上っていうことでしょ

String#encodeはよくわからんが
ttp://jp.rubyist.net/magazine/?0009-BundledLibraries



402 名前:デフォルトの名無しさん [2010/02/12(金) 09:17:58 ]
encodeは文字列のバイト表現を指定のものに変換したStringを作り、エンコード情報を設定。
encode!は自分自身の持つバイト列とエンコード情報を変える。
force_encodingは自分自身のエンコード情報のみ変える。バイト列はそのままで解釈が変わる。

kconvはnkfをラッピングして文字コード変換のみ、簡単にできるようにしたもの。

uconvはたしか標準じゃないよな?
euc-jp, cp932(shift_jisの亜種), utf16, ucs-4に対応している。
rubyでutf-8が扱えるようになったのはuconv作者の提案したコードがもとになってる。
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/4186


403 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 09:28:13 ]
>>400
NKFはguessができるので、現在のエンコーディングが何かわからなくても変換ができる
ただ、日本語関連(とMIME)しか認識できないしLatin-1とかの指定もできない

iconvはguessができないので、現在のエンコーディングを正確に(本当に正確に)指定しないと変換できない
そのかわり、NKFではできなかったような文字エンコーディングの値の保持解釈ができる
SHIFT_JISとCP932やEUC-JPとEUC-JP-MSを使い分けられる(可能性がある)のはiconvだけ
ただし、相手のマシンにインストールされている外部iconvのバージョンと対応に依存するのでやや面倒
iconv実装にはでっかい版と小さい版があり、外人産は小さい版だけを使うことが多いのでファッキンガッデム

1.9のEncodingはiconvを使ってる
kconvはNKFを使ってる
uconvはめんどくさいからもう使うな、使わなくても用は済むはず






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<176KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef