Ruby 初心者スレッド ..
[2ch|▼Menu]
289:デフォルトの名無しさん
10/02/07 09:53:55
>>277
それがあるんだよ
たまに
def hoge()                                        p 123                                        end

みたいに改行せずにエディタの80文字の折り返しだけで次の行へいったつもりでソース書く馬鹿がいるんだよ
(っていうか昔の糞エディタだと2行に分かれていたものが1行に繋がってしまうケースとか良くあったんだ)

290:デフォルトの名無しさん
10/02/07 09:56:36
10行君は初心者。

291:デフォルトの名無しさん
10/02/07 09:58:11
>>284
いや、実態は携帯で長ったらしくスクロールさせてページ切り替わると
リロードが増えてアクセス数も増えるみたいな都市伝説があるらしい

仮に100歩ゆずってそれでリロードされるのが事実だとしても
そんな方法でアクセス数増やしてなにが嬉しいのかと

292:デフォルトの名無しさん
10/02/07 09:59:30
>>289
emacsですねわかります

293:デフォルトの名無しさん
10/02/07 10:00:10
>>288
それは従来のプログラミング言語の話だろ
わざわざRubyにそのまま持ち込む必要はない

294:デフォルトの名無しさん
10/02/07 10:01:16
Reekっていうコードチェッカを興味本位で使ってみたが
メソッド定義が10行以上だと「長い」と指摘してくるな

295:デフォルトの名無しさん
10/02/07 10:02:31
あんまり長くなるとインデントも深くなってくることが多いからな
すっきりさせるために短く書くのは悪いことじゃない罠

296:デフォルトの名無しさん
10/02/07 10:04:24
>>292
一太郎だろ

297:デフォルトの名無しさん
10/02/07 10:05:50
>>291
アメーバだっけ?芸能人ランキングのあるやつ
改行増やしてPV増やしてランキングの上を目指すんだって
本当かどうかは知らない

298:デフォルトの名無しさん
10/02/07 10:09:36
資源の無駄遣いだなぁ

エコに反してるから改行撲滅キャンペーンした方がいいぞ

299:デフォルトの名無しさん
10/02/07 10:10:03
ああNON STYLEの石田だっけ?

300:デフォルトの名無しさん
10/02/07 10:10:45
とりあえず、お前らの権限で fileutils.rb とか net/imap.rb に
10行ルール適用してもらってよ。

301:デフォルトの名無しさん
10/02/07 10:32:50
>>291 >>297
あれはPVアップ界王拳の一種で、ケータイで見たときに複数のページに分割されるのでPVがあがるってやつ
芸能人もそうだけおdPV多いとアメブロはお金もらえる仕組みがある

最近PCの情報サイトでもページ分割するのちらほら見るよね、携帯向けじゃなくても
あれPV上げるため

302:デフォルトの名無しさん
10/02/07 10:44:45
>>293
言語の話じゃなくて環境の話じゃね?

303:デフォルトの名無しさん
10/02/07 10:51:12
>>294
それ面白そうだなw 使ってみるか

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

305:デフォルトの名無しさん
10/02/07 11:14:38
何事も原理主義はよくないと思います

306:デフォルトの名無しさん
10/02/07 11:16:32
めちゃくちゃ実利だと思うが…

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

class DB
protected
self.new
super
end
end

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

308:デフォルトの名無しさん
10/02/07 11:28:00
protectedにしてどうしたいの?

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

310:307
10/02/07 11:40:07
class Hoge
private
def self.hoge
puts 'hoge'
end
end
Hoge.hoge

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

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

312:307
10/02/07 11:42:15
URLリンク(www.gesource.jp)

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

313:デフォルトの名無しさん
10/02/07 11:48:31
>>258

素直にgnuplot使うのが手っ取り早い
URLリンク(rgplot.rubyforge.org)


314:デフォルトの名無しさん
10/02/07 12:24:44
rubyのprivateにはいつも混乱させられる
うまい覚え方はないものか

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

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


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

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


319:デフォルトの名無しさん
10/02/07 13:17:06
>>317
少なくとも名称は変えるべきだったよなあ

320:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/07 13:29:10
ifの条件文のレイアウトのことなのですが、改行が問題になるケースってあるでしょうか?
if name == "foo" ||
name == "bar"
#do something
end

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

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

323:デフォルトの名無しさん
10/02/07 13:33:43
>>321
カッコ書いて条件部分を式にすればいいじゃん

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

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

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

325:デフォルトの名無しさん
10/02/07 13:37:53
質問させて下さい。

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

puts 1 + 1 # => 2

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

326:325
10/02/07 13:41:06
>>325 ですが、自己解決しました。
xmpfilter でした。

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

eigenclass - xmpfilter: automagic Test::Unit assertions/RSpec expectations and code annotations
URLリンク(eigenclass.org)

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

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

329:デフォルトの名無しさん
10/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
10/02/07 15:41:57
MethodインスタンスではなくUnboundMethodインスタンスか

331:デフォルトの名無しさん
10/02/07 16:02:44
説明は

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

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

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

333:デフォルトの名無しさん
10/02/08 21:35:39
いつどこでどのように流されたんですか

334:デフォルトの名無しさん
10/02/08 23:54:49
実行することを流すと言います。

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

336:デフォルトの名無しさん
10/02/09 00:24:48
そうです。まさにスパゲティです。

337:デフォルトの名無しさん
10/02/09 01:23:06
ためしにVMware上のUbuntuで動かしたら2.4秒だった

338:デフォルトの名無しさん
10/02/09 07:43:24
IronRuby 6.4秒

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

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

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


340:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/09 18:35:14
>>339
migw32使え

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

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

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

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

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

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

346:デフォルトの名無しさん
10/02/09 19:34:15
migw32どこ? 古いのしか見つからない

347:デフォルトの名無しさん
10/02/09 19:44:48
mswin32(ActiveScriptRuby、gem対応の標準)
URLリンク(www.artonx.org)
mingw32(RubyInstaller/OneClickInstaller、gemの古パッケージはバイナリがなくDevelopment Kitが要ることも)
URLリンク(rubyinstaller.org)

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

348:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/09 23:03:02
まねしてもいいよ。

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


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

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

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

352:デフォルトの名無しさん
10/02/10 00:18:31
カリー化したいんでしょ?
おれそれ諦めた。

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

354:sage
10/02/10 00:50:33
お!できてる。
順番は逆だったけど、あとは適当に。

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

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

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

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

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

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

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

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

361:デフォルトの名無しさん
10/02/10 09:51:15
解読してみた

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

こんなんでどう

362:デフォルトの名無しさん
10/02/10 10:03:30
わかりやすい

363:デフォルトの名無しさん
10/02/10 13:07:09
>>361
thanxよくわかったw

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

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

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

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

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

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

369:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/10 19:58:39
あああ、なんかわけわからないことに
mswin32 版を使う場合は ActiveScriptRuby のほうインストールしろ
OneClickInstaller 使って数年前の Ruby をわざわざいまさらインストールする必要もない

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

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

371:デフォルトの名無しさん
10/02/10 20:08:43
長い

 ・ 初心者は URLリンク(www.artonx.org) の 1.8.7 だけ使え、トラブル起きたらここで聞け

でいいじゃん

372:デフォルトの名無しさん
10/02/10 20:16:28
てか本来は URLリンク(arton.hp.infoseek.co.jp) でいいんだよね

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

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

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


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

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

377:デフォルトの名無しさん
10/02/10 21:01:13
>>375
見た感じ遠い未来に見える。
URLリンク(kenai.com)


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


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

380:デフォルトの名無しさん
10/02/10 21:12:04
>>379
Java からも読めるように作ること

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

381:デフォルトの名無しさん
10/02/10 21:55:57
つか1.8.7って鬼車使えるの?

382:デフォルトの名無しさん
10/02/10 22:18:29
黙れカス

383:デフォルトの名無しさん
10/02/10 22:19:06
ごばく

384:デフォルトの名無しさん
10/02/10 22:26:55
>>381
gem install oniguruma

組み込みになるわけではないので制約はあるが。
URLリンク(oniguruma.rubyforge.org)

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

386:デフォルトの名無しさん
10/02/10 23:49:30
>>381 ってjrubyの話なん?


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

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

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

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

390:デフォルトの名無しさん
10/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:デフォルトの名無しさん
10/02/11 23:26:15
>>389
jは変化してないけどいいの?
iだけならuptoでよいでしょう。


392:デフォルトの名無しさん
10/02/11 23:41:26
>>391
ありがとうございます!

これをrubyに書き換えて勉強中でした。
URLリンク(racanhack.sourceforge.jp)

393:デフォルトの名無しさん
10/02/11 23:52:42
>>388
URLリンク(redmine.ruby-lang.org)

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:デフォルトの名無しさん
10/02/11 23:56:35
Iconv::IllegalSequenceを見るのはもう飽きたお…

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

396:デフォルトの名無しさん
10/02/12 06:07:00
iconvとnkfってどう違うの?
どう使い分けたらいいの?

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

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

398:デフォルトの名無しさん
10/02/12 08:28:43
>>372

URLリンク(www.artonx.org)

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

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

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

String#encodeはよくわからんが
URLリンク(jp.rubyist.net)

402:デフォルトの名無しさん
10/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作者の提案したコードがもとになってる。
URLリンク(blade.nagaokaut.ac.jp)


403:デフォルトの名無しさん
10/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はめんどくさいからもう使うな、使わなくても用は済むはず

404:デフォルトの名無しさん
10/02/12 09:36:07
>>401
そのリンクは読んだけど総花的であんまり参考にならなかった

・M17N(1.9)/NKF/iconv/kconv/uconvで変換結果に差が出ることがあるか
・速度の違い
・推測の精度
・使い分けのシチュエーション

がよくわからんのですよ

405:デフォルトの名無しさん
10/02/12 09:38:35
>>403
わかりやすい

406:デフォルトの名無しさん
10/02/12 09:44:20
ってことは,事実上 iconv と NKF の二種類しか変換器は存在しないわけね
でメールみたいに入力のエンコーディングがよく解らん場合はNKF.guessをつかえと
入力のエンコーディングが固定されてる場合はiconvでおkでOK?

1.9のM17Nはguessしてくれてるんだと思ってたわ。

407:デフォルトの名無しさん
10/02/12 09:47:44
> メールみたいに入力のエンコーディングが
のあとに続くのが
> よく解らん場合
なのがショックだ
あれは99パーセントくらいの確率でヘッダに書いてあるまんまだと思うのだが最近は違うんか

408:デフォルトの名無しさん
10/02/12 09:49:41
メールやHTMLが文字化けするのはヘッダのエンコーディングと実際のエンコーディングが違うからなんじゃないの?

409:デフォルトの名無しさん
10/02/12 09:55:24
日本人しか使わないプログラムなのならNKFでいいよ
外国の人も使うならiconv「でなければならない」
MechanizeとかではNKFを組み込んでしまった日本人がいて、その部分がえんえん障害になってる
iso-8859-xはNKFのShiftJISに誤爆することがあるんだが、そのへんの処理を考慮してない


410:デフォルトの名無しさん
10/02/12 09:59:50
>>407
メールの現実を知らなさ過ぎる

411:デフォルトの名無しさん
10/02/12 10:11:38
1.9のencodeは青学の先生のライブラリ(transcode)じゃないの?


412:デフォルトの名無しさん
10/02/12 10:37:03
>>411
URLリンク(jp.rubyist.net)
URLリンク(naruse.biz)
URLリンク(www.sw.it.aoyama.ac.jp)
これか

1.9のM17Nはiconvじゃなくてtranscodeみたいだ
また兄弟が増えちまった
よくわからなくなってきた

413:デフォルトの名無しさん
10/02/12 11:04:08
1.9のEncodingの中の人はIconvだと思ってたIconvの例外出すやんキュピーンやん
と思ってたんだが出なかった
あれー、昔はIconvが例外出してなかったっけ、気のせいか

irb> "@".encode(::Encoding::SHIFT_JIS)
Encoding::UndefinedConversionError: "\xE2\x91\xA0" from UTF-8 to Shift_JIS
irb> "@".encode(::Encoding::CP932)
"?@"


414:デフォルトの名無しさん
10/02/12 11:08:15
うちは大家族ですから^^;
おとーちゃんビシッと言ってやりな

って言うは簡単だけど結構面倒だよね…

415:デフォルトの名無しさん
10/02/12 11:54:27
うっぜぇ変なもん作るなよ
rubyってiconvすら実装されてない糞言語だったのか

416:デフォルトの名無しさん
10/02/12 11:58:46
馬鹿発見。


417:デフォルトの名無しさん
10/02/12 12:15:08
みてみて!
Ruby でクイックソート書いてみた。

def qsort(ary)
  return [] if ary.empty?

  v = ary.shift
  left, right = ary.partition{|e| e < v}
  qsort(left) + [v] + qsort(right)
end

ary.dup とかした方がいいのだろうか。
ま、いいや。

418:デフォルトの名無しさん
10/02/12 12:27:58
irb> Iconv.conv('shift_jis', 'utf-8', "\302\273")
Iconv::IllegalSequence: "\302\273"
irb> Iconv.conv('cp932', 'utf-8', "\302\273")
Iconv::IllegalSequence: "\302\273"

» (&raquo; 、RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK (U+00BB)、終わりギュメ)
を含むUTF-8文字列をIconvでShift_JISっぽい文字列にしたいんですが…

419:デフォルトの名無しさん
10/02/12 12:43:39
>>417
受け取ったArrayを中途半端に破壊してるのは……まあ確かにまずいかも
アルゴリズム的な補足をするなら、単純かつ美しい実装ならそれでもいいけど、
実用上はピボットの取り方を工夫しないといけない

420:デフォルトの名無しさん
10/02/12 12:44:32
irb1.9> "\302\273".encode('SHIFT_JIS')
Encoding::UndefinedConversionError: "\xC2\xBB" from UTF-8 to Shift_JIS

そもそもだめぽい

421:デフォルトの名無しさん
10/02/12 12:58:36
Ruby M17N は transcode という独自実装
Iconvは環境依存な上にWindowsだとないから、Ruby M17N で使うことはできなかった
なお、libiconvのCP932周りのサポートが腐ってるのも致命的だとされた

> そのかわり、NKFではできなかったような文字エンコーディングの値の保持解釈ができる
> SHIFT_JISとCP932やEUC-JPとEUC-JP-MSを使い分けられる(可能性がある)のはiconvだけ

nkf もできるよ

> メールやHTMLが文字化けするのはヘッダのエンコーディングと実際のエンコーディングが違うからなんじゃないの?

そんな根本的に違う指定ってそんなにあったっけ?

422:デフォルトの名無しさん
10/02/12 13:00:01
>>418
変換表に定義されてないんで、変換前に別の文字にgsubするのが正解

423:デフォルトの名無しさん
10/02/12 13:13:10
>>418
422が書いているようにgsubするのもありだが
変換時の戻り値で分岐するというやり方もある
詳細は下記の "Encoding::Converter#primitive_convert" の項目参照
URLリンク(jp.rubyist.net)

424:デフォルトの名無しさん
10/02/12 13:26:50
>>421
実際にメーラーを書いて運用してみたらいい

425:デフォルトの名無しさん
10/02/12 14:06:43
kconvの "\302\273".tosjisでは"\x91\xB9"になるな
エラー出して教えてくれたほうがマシかも

426:デフォルトの名無しさん
10/02/12 17:04:09
>>424
単にCP50221って話じゃないの、それだとguessは悪手なんだが

427:デフォルトの名無しさん
10/02/12 18:29:23
reg2 = Regexp.new("A(.*)CD(.*)EF")
str1 = "AbbccCDasdaEF"
str1 =~ reg2

これで得られる$1と$2をループかなにかで
添字をつけて取得できないものでしょうか?

428:デフォルトの名無しさん
10/02/12 18:55:24
>>427
Regexp.last_matchとか$~のこと?

429:427
10/02/12 19:21:56
>>428
$~がMatchDataってオブジェクトになってるのか
ありがとう、解決しました。



430:デフォルトの名無しさん
10/02/12 19:39:54
>>427
foo = reg2.match str1 とすれば、foo にその MatchData が入る

431:デフォルトの名無しさん
10/02/12 19:54:03
kconvとかnkfの話はrubyと関係ねぇ…

432:デフォルトの名無しさん
10/02/12 20:14:00
kconvは関係あるな
nkfは関係ないがNKFは関係あるな

433:デフォルトの名無しさん
10/02/12 21:08:09
Ruby1.9で勉強していた(>>1を読んでませんでしたorz)のですが、
Railsもやってみたいということで、1.8をインストールしたいです。
ですが、Synaptic(Ubuntuのパッケージマネージャ)に1.8のフルインストールパッケージがありませんでした。
なので公式サイトにあるソースコードからインストールしようと思うのですが、
うまく1.9と共存できるのでしょうか?
宜しくお願いします。

434:デフォルトの名無しさん
10/02/12 21:26:32
1.8と1.9ならおおむね問題はない
ユーザーディレクトリにインストールしても動くぞ

435:デフォルトの名無しさん
10/02/12 21:32:17
ありがとうございます、今やったところ
1.9が/usr、1.8が/usr/local
にたまたまなのか入ったので問題なさそうです。
とりあえずrubyとirbコマンドは1.8で起動するようにしました。

436:デフォルトの名無しさん
10/02/12 21:35:41
へえ、いつの間にか1.8なくなってたのか

437:デフォルトの名無しさん
10/02/12 21:42:43
参考までに、./configure するときに
1.8.7$ ./configure --prefix=$HOME --program-suffix=187 && make install
1.9.1$ ./configure --prefix=$HOME --program-suffix=19 && make install
とすると $HOME/bin/ruby187 $HOME/bin/ruby19 などが出来る。

最近はコマンド一発でruby環境を切り替えられる rvm という便利なツールもある。
(多少不安定だが)


438:デフォルトの名無しさん
10/02/12 22:14:07
このようなデータがある時に、重複したデータ削除したいです。
irb(main):001:0> address = Array.new
=> []
irb(main):006:0> p address
[{"name"=>"taro", "tel"=>"11111111111"}, {"name"=>"hanako", "tel"=>"22222222222"}, {"name"=>"hanako", "tel"=>"33333333333"}, {"name"=>"taro", "tel"=>"11111111111"}]

重複している {"name"=>"taro", "tel"=>"11111111111"} を削除したいです。
調べてみて uniq 使えば良いかなと思ったのですが、違うようです。
わかる方、アドバイス貰えると助かります。

439:デフォルトの名無しさん
10/02/12 22:21:44
uniqでいいように見えるんだけど。


440:デフォルトの名無しさん
10/02/12 22:31:06
>>439
失礼しました。uniq で良かったようです。

441:デフォルトの名無しさん
10/02/12 23:15:20
rsenseってなんですか?

442:デフォルトの名無しさん
10/02/13 00:11:16
Rubyコードを補完してくれるもの
ruby rsenseでググるといろいろ情報が見つかるよ

443:デフォルトの名無しさん
10/02/13 00:27:21
>>442
ありがとうございます.メッセで飛んできて「使ってみたらおもしろいかも」って言われて気になってました.
URLリンク(github.com)
これですね.でもどうやって使えばいいんですか?

444:デフォルトの名無しさん
10/02/13 00:47:08
こいつ自体はファイルとその中での位置を与えると補完候補を返すというコマンドに
すぎないので、好みのエディタのマクロでそれを呼び出して候補を表示する部分は
自作する必要があると思う。


445:デフォルトの名無しさん
10/02/13 03:44:36
>>444
ありがとうございます.Emacs使ってるんで色々みてみます.といってもなんかドキュメント少ないみたいですが;

446:デフォルトの名無しさん
10/02/13 09:23:42
$gem install newgem
したら
ERROR: Error installing newgem:
rubigen requires thoughtbot-shoulda (>= 2.10.2, runtime)
とか出てきて
さらにthoughbot-shouldaを探しても見つからないんですが
newgemのインストールの仕方を教えてください

$ gem --version
1.3.5

$ ruby --version
ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-mswin32]

447:デフォルトの名無しさん
10/02/13 09:34:58
gem install thoughtbot-shoulda --source=URLリンク(gems.github.com)

448:デフォルトの名無しさん
10/02/13 09:36:14
「or を伴う式をメソッドの引数に渡す場合は二重に括弧が必要となります。 」
ってどういう意味?


449:デフォルトの名無しさん
10/02/13 09:43:24
そういうことはしないでくださいね、の意

450:デフォルトの名無しさん
10/02/13 09:43:36
puts(nil or "a") だめー

puts((nil or "a")) おk

451:デフォルトの名無しさん
10/02/13 09:51:56
>puts (nil or "a")
a

普通にいけたけど?

452:デフォルトの名無しさん
10/02/13 09:55:07
それ括弧なし

453:デフォルトの名無しさん
10/02/13 09:57:32
>>448
それ余計な文言だよな
査読者や編集者がやっぱり必要だと思う

「メソッドの引数にする場合にはorを伴う演算部分を括弧でくくって式にする必要があります」が正解

p(false or "yes!")

だと「p (false が偽だったら "yes!"」と解釈されて文法エラーになる
false or "yes!" がひとつの処理の塊だとわからせるために式として括弧で括り、
 (false or "yes!")
なおかつ、これ全体を引数として指定してるんだということをわからせるために引数としての括弧を省略せずに使う
 p()
にさっきのカッコつき式を適用して
 p((false or "yes!"))
となる

なお、>>451のように引数括弧相当の存在が明確な場合はエラーにならない
この括弧は引数の括弧ではなく式を作る括弧だ

454:デフォルトの名無しさん
10/02/13 10:13:03
ありがとうございます。
もしかしてメソッド名と引数を括る括弧の間を空白で空けてはいけない?
(第一引数の式を括る括弧と解釈される?)

455:デフォルトの名無しさん
10/02/13 10:26:20
メソッドの引数のカッコはメソッド名と分かれてはいけない

が、分かれた場合は「引数のカッコを省略して引数の全体(または一部)をカッコで括った」と解釈される
おおむね同じ動作をするので、実際上はみんな深く考えてない

puts("ruby") #=> "ruby" をメソッドに渡す
puts ("ruby") #=> ("ruby") の結果をメソッドに渡す


456:デフォルトの名無しさん
10/02/13 10:36:24
ありがとうございました。
ロジカルシンキングではなくイマジネーションでってことですね


457:デフォルトの名無しさん
10/02/13 10:51:47
いや物凄い論理的だと思うが

引数括弧を省略するのがコンセンサスになってるのはpとかputsとかごく一部だぞ
それ以外の普通のメソッドはとりあえず括弧つけとく派が多数派だ
irbとかだと読み返すこともないから適当に省略しまくってるが

458:デフォルトの名無しさん
10/02/13 10:55:08
>>456
意味不明なときは感覚なものととらえてしまうけど、
しばらくRuby使ってなれてきたらロジカルなものだと理解できるようになるよ、がんがれ

459:デフォルトの名無しさん
10/02/13 11:34:23
ちょっと使ってみたんだけど、この言語(というか処理系?)、は多項式時間や指数関時間な計算をブチ転がそうとすると圧倒的に遅いわね…
なによ…まったく!

460:デフォルトの名無しさん
10/02/13 12:45:56
そこらへんのしっかりしたドキュメントが無いから
どうしても試行錯誤で感覚的にならざるを得ない

461:デフォルトの名無しさん
10/02/13 13:33:34
>>460
カッコで括ったら式になるってちゃんと書いてあるだろ

462:デフォルトの名無しさん
10/02/13 13:35:08
そんなところで試行錯誤した覚えはないなあ

463:デフォルトの名無しさん
10/02/13 13:42:42
p(2*10) #=> 20
p (2*10) #=> 20

p(2*10)*2
NoMethodError: undefined method `*' for nil:NilClass
p (2*10)*2 #=> 40

464:デフォルトの名無しさん
10/02/13 13:45:38
> メソッドの引数のカッコはメソッド名と分かれてはいけない
これが書いてないだろ?

465:デフォルトの名無しさん
10/02/13 13:49:36
>>459
O(nlogn)の近似アルゴリズムに変えるか、Inline C 使うか、
そもそも C で書け。

466:デフォルトの名無しさん
10/02/13 17:42:27
      ,―ヽ_(((((_、―
   ,/  ノ       ヽ  ~\
  /   ノ   IPA    ヽ   ~\
/   ノ           ヽ、  `ヽ
|    ノ / ̄\   / ̄~ヽ ヽ    i
|   ノ              |  ノ
\  |  <●>  <●>  (  )
 \ |      | |       i /
    |      /  ヽ       レ
   i     (●_●)      /  
    i、    ,-―-、   ・ /
    i、  <(EEEEE)> ∵/    多項式時間や指数関時間な計算が遅いのは当たり前だろ
      i、  \   ./  /
       \   ーー   ,ノ       
  ,,.....イ.ヽヽ、ー-―一ノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |

467:デフォルトの名無しさん
10/02/13 19:53:39
多項式時間や指数関時間の計算をRubyでやる男の人って・・・

468:デフォルトの名無しさん
10/02/13 20:57:16
マルチバイトの文字列のうち、ASCIIの制御文字にあたるもの(NULLとかCRとか)
を削除するには
sub /\s+/, ''
でいいですか?

0x00〜0x1fだけを削除するにはどうしたらよいですか?

469:デフォルトの名無しさん
10/02/13 21:18:32
irb> p "ね\001こ\t大\025す\177き\n".gsub(/[[:cntrl:]]/){''} == "ねこ大すき"
true
irb> p "ね\001こ\t大\025す\177き\n".gsub(/(?![[:space:]])[[:cntrl:]]/){''} == "ね こ\t大すき\n"
true


470:デフォルトの名無しさん
10/02/13 21:18:33
普通に
/[\x00-\x1f]/
じゃダメなの?

471:デフォルトの名無しさん
10/02/13 21:21:50
飼ってたインコを食べたので猫はきらいです

472:デフォルトの名無しさん
10/02/13 21:29:55
>>469
名前つきでわかりやすそうに見えて実はわかりにくいというなんとも

473:デフォルトの名無しさん
10/02/13 21:30:57
キャリッジリターンやラインフィードは立派なコントロールコードですよ

474:デフォルトの名無しさん
10/02/13 21:35:40
>>470
いいんじゃまいか

475:デフォルトの名無しさん
10/02/13 21:42:39
> 0x00〜0x1fだけを削除するにはどうしたらよいですか?
こういうの見るたび、DELは消さなくていいんだろうか、といつも思う

476:デフォルトの名無しさん
10/02/13 21:55:53
ISO-2022-JP文字列に対して実行してESC(0x1B)を消されてしまえー。


477:デフォルトの名無しさん
10/02/13 22:07:14
>>467
Ruby を愛しています
ゆるしてください

478:デフォルトの名無しさん
10/02/13 22:25:51
童貞のくせに愛なんて言葉を軽々しく使うな

479:デフォルトの名無しさん
10/02/13 22:46:25
rubyはJavaの1000倍の生産性があると聞いてやってきました

480:デフォルトの名無しさん
10/02/13 22:54:29
エロ画像を一括でスクリプトとか書くならそれぐらいあるかもしれない

481:デフォルトの名無しさん
10/02/13 23:05:47
RubyでJSON(と言うかJavaScriptのオブジェクトの記述)をパースしたいのですが
require "yaml"
p YAML.load('{"num":"123456789"}')
とかやるとエラーになってパースできません。何か良い方法があったら教えてください
p YAML.load('{"num": "123456789"}')
ならパースできるようですが、JavaScript的にはどっちでも通るはず・・・

482:デフォルトの名無しさん
10/02/13 23:39:39
# 正しいところを見ているのかちょっと自信がないけど。

URLリンク(yaml.org)

Explicit Values
An explicit value is denoted by the “:” indicator, followed by separation spaces.

仕様かも?



483:デフォルトの名無しさん
10/02/14 00:41:07
面倒でなければ、gem install jsonで
JSON.parse(json_str)
するのが簡単で確実。

484:デフォルトの名無しさん
10/02/14 08:04:15
ちょっとあなた
RubyInlineでインスタンス変数を参照する方法がわかりませんわよ

485:デフォルトの名無しさん
10/02/14 10:32:41
URLリンク(jp.rubyist.net) にもコロンの後にはスペースとしつこく書いてあるな。
YAMLのフロースタイルがJSONとして評価できたとしても、逆ではないってことかな。


486:デフォルトの名無しさん
10/02/14 10:34:53
>>484
使ったことないけど、Cの世界にいるときは rb_obj_ivar_get じゃねーの?

487:デフォルトの名無しさん
10/02/14 10:38:14
Wikipedia項目リンク

他のデータ記述法との関係
但し、厳密にはJSONはYAMLのサブセットではない[3]。具体的には配列とハッシュの区切りを
それぞれ, のようにカンマ+スペースの形にしたときにのみYAMLのサブセットとなる。したがっ
て、YAML.loadといったYAMLのルーチンを流用してJSONデータを読み込む場合は、あらかじ
め区切りの文字をYAMLと互換性を保つようにしておく必要がある。


488:デフォルトの名無しさん
10/02/14 12:42:36
さすがにJSONをYAMLのライブラリで読むのは横着だろうw

489:デフォルトの名無しさん
10/02/14 13:02:11
何でそんなしょぼいところで非互換性持たせてるんだ

490:デフォルトの名無しさん
10/02/14 13:11:56
たまたま似てるだけであって互換性を意図的に持たせようとしたわけではないから。


491:デフォルトの名無しさん
10/02/14 13:20:42
たまたまと言い張るには似すぎだろ


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5390日前に更新/176 KB
担当:undef