Ruby 初心者スレッド Part 50
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2012/07/29(日) 14:26:28.92質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
RoRはスレ違いよ
前スレ
Ruby 初心者スレッド Part 49
http://toro.2ch.net/test/read.cgi/tech/1336507487/
るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
逆引きRuby
http://www.namaraii.com/rubytips/
0082デフォルトの名無しさん
2012/08/14(火) 14:33:36.43よっしゃ実行した次はなにすればいい? って返せ
0083デフォルトの名無しさん
2012/08/14(火) 14:35:31.13?
0084デフォルトの名無しさん
2012/08/16(木) 02:34:12.27うまく動いていたプログラムの中身をまるまるコピー
→新規作成でまるまる貼り付け
→名前を付けて保存
とやったらエラーが出るようになりました
調べたら改行の文字コードの問題っぽい気がするのですがどうやって直せば良いのでしょうか
RDE使ってます
0085デフォルトの名無しさん
2012/08/16(木) 02:47:51.68全然ちがうところ間違えてました
スルーしてください
0086デフォルトの名無しさん
2012/08/17(金) 23:09:56.09当方、macrubyにてプログラムをくんでいますが、
どうやったら終了時に実行されるメソッドを記述できるのかわかりません。
起動時に<def applicationDidFinishLaunching(a_notification)〜>が実行されるように、
終了時にもなにか構文みたいなものがあると思うのですが、ご存知の方いらっしゃいますか?
<def applicationWillTerminate(notification)>とか
<def windowWillClose(notification)>とかを試してみましたが、ピクリとも動きません・・・
0087デフォルトの名無しさん
2012/08/18(土) 01:32:56.88新Mac板にも前はRubyスレあった気がしたんだが…今見たら見付からないな
Googleで「applicationDidFinishLaunching site:developer.apple.com」でググったら
それっぽい資料がいくつかヒットするけど、どれかに無い?Terminateとか付いてるのあるからその辺りに
0088デフォルトの名無しさん
2012/08/18(土) 15:58:01.66レスありがとうございます! なんだかんだでできました!
def applicationWillTerminate(sender)で動きました!
もう一ヶ月くらい煮詰まっていたから嬉しい! 本当にありがとうございました!
0089デフォルトの名無しさん
2012/08/18(土) 18:30:47.12例えば全角チルダとか割り当ての無い文字があるとエラーになりますがその文字だけを無視するにはどうすればいいでしょうか?
0090デフォルトの名無しさん
2012/08/18(土) 19:54:06.14:undef => :replace, :replace => ''
0091デフォルトの名無しさん
2012/08/18(土) 20:32:28.42ありがとうございます
0092uY
2012/08/19(日) 06:50:09.11at_exit { } とか END { } 動かないの?
0093デフォルトの名無しさん
2012/08/19(日) 14:07:20.87xcodeでマックアプリを組んでいますが、残念ながら動かないです。
多少のobject-cの知識がないとmacrubyは厳しいです。
でも見た目のいいアプリがrubyで作れるのは最高です!
0094uY
2012/08/19(日) 17:02:01.770095uY
2012/08/19(日) 17:03:05.20Enumeratorを継承したクラスの使い方ってこれであってますか?
http://ideone.com/5m5qa
やりたいことは、
Enumerator.new内でまわしてるオブジェクトに外部から
>p y.cc.x
こんな感じにアクセスしたいって事なんですけど
なんかsuperって引数が暗黙的に渡される?っぽいじゃないですか
けどEnumerator.newのinitializeは引数が渡されるとブロックが評価されてない?ので
superとは別にEnumerator.newを呼び出してEnumを作ってます
一応動いてますけど、二重になってる気がして不安なんですけど
0096uY
2012/08/19(日) 21:22:10.76ブロックじゃなくてlambdaで渡したらうごきましたもういいです
class B < Enumerator
def initialize h
a = super do|y| loop{ y.yield 1 } end
p a.next # => 5
a = super &(lambda do|y| loop{ y.yield 1 } end)
p a.next # => 1
end
end
B.new [5,6,7]
0097uY ◆gXFLM6waxs
2012/08/20(月) 21:05:12.74:aaaa
ってやると
p Symbol.all_symbols
ここに追加されますけど、
p Symbol.all_symbols.size
1_000_000_0.times do|i| :"#{i}" end
p Symbol.all_symbols.size
このくらい生成してやると
`intern': symbol table overflow (symbol 2095337) (RuntimeError)
こうなる事が分かりました
いらなくなったシンボルを削除する方法ってあるんでしょうか?
0098uy
2012/08/21(火) 04:28:14.40シンボルは大事に使っていくことにします
0099デフォルトの名無しさん
2012/08/21(火) 04:39:46.44このプログラム(main.rb)は、README.rbを読み込んで、出力するものです。
https://github.com/217/VMacs
このバグに2時間ほど悩んだのですが、どうにも解決できませんでした。
ライブラリの相性の問題なのでしょうか?
わかる方がいらっしゃったら、教えてください。
0100デフォルトの名無しさん
2012/08/21(火) 06:24:28.99Linuxでも確認。このケースでは、setposの後にrefresh呼び出しで解消できるけど、
cursesを使う時は、表示が乱れるので標準出力へのprintは避けた方が無難。
cursesの作法で色指定するといいよ。
0101デフォルトの名無しさん
2012/08/21(火) 07:30:26.12あれは「クラスに属する関数なら::で呼ぶのがオブジェクト指向言語の常識」という、
ローカル実装を普遍定義と勘違いした痛い面倒な人を飼い馴らすための時代遅れの機能
0102デフォルトの名無しさん
2012/08/21(火) 11:01:55.720103デフォルトの名無しさん
2012/08/21(火) 11:04:50.50まあ、どっちも似たようなもんだけど
Rubyでの呼び方が絶対的にタダシイわけではないけれど、
Rubyではそう使うということになってるんだから、Rubyにおいては極力そのように使ってほしいよね
0104デフォルトの名無しさん
2012/08/21(火) 15:54:50.08:: だと大文字で始まる名前が定数と解釈されるので、メソッドと解釈させるには関数呼び出しの () が必要になる。
. で記述すると一貫して () を省略出来る。
0105デフォルトの名無しさん
2012/08/21(火) 20:12:53.72とりあえずsetposの後にrefresh呼び出したら動きました。
Cursesで色指定する事が出来るのを知りませんでした。なんとか動きました。
ありがとうございました。
0106デフォルトの名無しさん
2012/08/22(水) 21:58:17.440107デフォルトの名無しさん
2012/08/23(木) 00:14:29.47やはり以下のように外部変数を置くしかないのでしょうか?
v = 0; arr.map{ |i| v+=i }; return v
0108デフォルトの名無しさん
2012/08/23(木) 00:34:08.73irb> puts [1,2,3].inject{|r,x| r +=x}
6
それがスコープで消えるかどうかの違いでしかない
0109デフォルトの名無しさん
2012/08/23(木) 00:37:49.69単純に足すだけならこれでもk
(1..10).to_a.inject(:+)
#=> 55
0110デフォルトの名無しさん
2012/08/23(木) 00:39:02.62[1, 2, 3].inject {|a, b| a + b }
ではダメなん?
0111デフォルトの名無しさん
2012/08/23(木) 00:50:58.00現在のRubyにおける一般的最短は arr.inject(:+)
中身的には>>110
変数内部効率ウンタラを求めてるんじゃなくて単に見かけで変数がなければいいだけだと思うので、Ruby1.9でarr.inject(:+)するかRuby1.8/1.9で>>108しろ
0112デフォルトの名無しさん
2012/08/23(木) 03:17:55.02操作Aのあと操作Cを行う,ということを繰り返したいのですが,
もし操作Cでエラーが出る場合はAとCの間に操作Bを行わなければなりません
操作A
while
begin 操作C
rescue 操作Bやってから操作C
0113デフォルトの名無しさん
2012/08/23(木) 03:19:08.54今書いているプログラムが
操作A
while
begin 操作C
rescue 操作Bやってから操作C
end
さらにCのあとにやりたいこと
end
0114デフォルトの名無しさん
2012/08/23(木) 03:20:46.42>>113のように書いているのですが,操作A→Cだけで済むようなときにエラーが出てしまいます
こういうパターンって例外処理ではないのでしょうか?
0115uY
2012/08/23(木) 03:35:51.05# 操作C
next ########################NEXT#########################
rescue
# 操作Bやってから操作C
end
# さらにCのあとにやりたいこと
0116デフォルトの名無しさん
2012/08/23(木) 03:39:57.72ちょっと話を整理して欲しい所
操作Cを実行せずに、操作Cでエラーが出るかは分からないのだから
「もし操作Cでエラーが出たら、操作Cの前に操作Bをやる」
という制御の流れは実現不可能だ
基本的な制御構造はA→C→A→C→……だと思われるので
while 条件
操作A
操作C
end
でいいと思う。ここにどう操作Bを足すかは、やりたいことによる
0117デフォルトの名無しさん
2012/08/23(木) 03:48:46.33ありがとうございます
今回は操作Bを行うきっかけが「Cができるかできないか」としか書けないので
例外を使う方法で考えてみました
なのでBは例外的に必要というよりは,「CができないならBをつかう」という一種の選択肢なのです
2回に1回くらいBを使わなければならないので...
0118デフォルトの名無しさん
2012/08/23(木) 05:36:06.48本当にそうとしか表現できないのなら、なにをしたいのか本当は自分でもわかっていない
>>112と>>117の時点でまったく別のことを喋っている
自分でもわかっていない粒度・抽象度のものを私たちが理解して回答してあげることはできない
ということで、いっそ全部喋るか、適切な粒度にざくざく切るという行為に時間かけろ
Rubyには条件分岐とループと例外によるジャンプしかないんだから
0119デフォルトの名無しさん
2012/08/23(木) 06:50:57.470120デフォルトの名無しさん
2012/08/23(木) 07:15:20.40「例外を使うべき例外的場面」なんてのは例外使いまくって火傷どころか焼死しないとピンと来ない
公開ライブラリでないのなら、初心者はぜひ例外使いまくって泣いてください
0121デフォルトの名無しさん
2012/08/23(木) 08:27:20.67rescue節で実行している操作Cで出た例外を捕捉する記述がないから
begin
操作C
rescue
操作B
retry # beginに戻る
end
0122デフォルトの名無しさん
2012/08/23(木) 08:36:49.47マニュアルの制御構造を参照してね。
begin
〜
rescue ErrorA
ErrorA例外時の処理
rescue
StandardErrorとサブクラス例外時の処理
else
例外が発生しなかった時の処理
ensure
必ず実行する処理
end
0123デフォルトの名無しさん
2012/08/23(木) 08:52:53.65else if を使いこなせない馬鹿のための syntax sugar
0124デフォルトの名無しさん
2012/08/23(木) 09:29:22.650125uy
2012/08/23(木) 09:31:21.62どんな発展途上国からおこしの技術者だよ
0126デフォルトの名無しさん
2012/08/23(木) 18:04:09.25> p IPAddr.new("10101100000100000000101000000001")
#<IPAddr: IPv6:1010:1100:0001:0000:0000:1010:0000:0001:0000:0000:0000:0000:0000:0000:0000/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff>
と解釈されてしまいます。自分でunpackして作るしかないのでしょうかね。。
0127デフォルトの名無しさん
2012/08/23(木) 18:43:00.68'172.16.10.1'
0128デフォルトの名無しさん
2012/08/23(木) 19:05:10.86それだとエラーになったので、素直に2進数で渡してみたよ。
ruby1.9.1 -e "require 'ipaddr';p IPAddr.new(0b10101100000100000000101000000001,Socket::AF_INET).to_s;"
"172.16.10.1"
0129uy
2012/08/23(木) 19:07:27.38'172.16.10.1'
0130デフォルトの名無しさん
2012/08/23(木) 19:34:37.52a = "10101100000100000000101000000001"
p IPAddr.new(a.to_i(2) ,Socket::AF_INET).to_s
=> "172.16.10.1"
0131デフォルトの名無しさん
2012/08/23(木) 19:56:56.340132デフォルトの名無しさん
2012/08/23(木) 20:07:18.830133デフォルトの名無しさん
2012/08/23(木) 20:11:58.61http://www.nikkei.com/article/DGXNASDG2303P_T20C12A8CC1000/
北海道旭川市の西川将人市長は23日の記者会見で、市が運営する旭山動物園から逃げた
ヨーロッパフラミンゴの捕獲作業で、フラミンゴをおびき寄せるために用意したおとり1羽が死に、
1羽が行方不明になったことを陳謝した。
市長は「フラミンゴは1羽25万〜30万円。市民に損害を与えて申し訳ない。
犠牲になったフラミンゴにも申し訳ないと思っている」と述べた。
2羽のフラミンゴはキタキツネに襲われたとみられ、動物園には電話で苦情が約50件寄せられた。
市長は「捕獲して戻すことが重要な役割だ」として捕獲作業を継続する方針を示した。
同時に「寒くなれば南に飛んでしまう可能性があるので、なるべく早く連れ戻したい」と述べた。
紋別市・コムケ湖で今月17〜18日に行われた動物園による捕獲作業では、逃げたフラミンゴの捕獲に失敗し、
おとりで用意した4羽のうち2羽を失った。園は既に、おとりを使った捕獲の中止を決めている。〔共同〕
0134デフォルトの名無しさん
2012/08/25(土) 09:42:26.82Scl = 20
num = [rand(Scl) + 1]
while num.size <= Scl
elm = rand(Scl) + 1
num.each {|i|
if
num[i] != elm
num << elm
end
}
puts "num_size = #{num.size}"
end
print num
これだと、同じ数が並ぶわ、配列のサイズもバラバラで全くうまくいきません
0135デフォルトの名無しさん
2012/08/25(土) 09:51:32.760136デフォルトの名無しさん
2012/08/25(土) 14:30:00.74ただ、1.9では .to_a は使えない様なので arry.shuffle で良さそうですね
ありがとうございました。
0137デフォルトの名無しさん
2012/08/25(土) 15:32:57.30とか考えたけど、shuffle1つで済むのか
やっぱりArrayとかEnumerableとかのメソッドは流し見して覚えておくべきだね
0138uy ◆gXFLM6waxs
2012/08/26(日) 00:57:04.781日10個ずつ確実に覚えるよりも
1日100個を流し読みしたほうが効率いいんだよ
0139デフォルトの名無しさん
2012/08/26(日) 14:04:13.44crontabの設定で対象のrubyプログラムの標準出力のみ/dev/nullにリダイレクトしていますが、rescueで捕捉したエラーについてはメールされるのを防ぎたいです。
warnでエラーを確認したいのは直接実行する時だけで、cron実行時は想定していないエラーのみ確認したいのです。
0140デフォルトの名無しさん
2012/08/26(日) 14:26:31.17ruby のコマンドラインオプションに -W0 を追加する
0142デフォルトの名無しさん
2012/08/27(月) 23:56:21.48Netbeansは打ち切られていて。。
0143デフォルトの名無しさん
2012/08/27(月) 23:59:47.860144デフォルトの名無しさん
2012/08/28(火) 00:37:49.99emacsのruby-modeって、rubyの方がサポートしてるんじゃなかった?
0145デフォルトの名無しさん
2012/08/28(火) 22:47:30.79Ruby1.8でMeCabを使おうと思っているのですがすでにサンプルプログラム落ちてたりしませんかね…
0146デフォルトの名無しさん
2012/08/28(火) 22:54:20.630147デフォルトの名無しさん
2012/08/28(火) 23:00:53.46MeCabと言ったら日本語解析しかないだろう。出てくる語句の頻度で判定するなんて言うまでもなく。
あ、質問者じゃないから。
migemoならプログラムから使ったことあったな。そういえばあの超便利ソフトもとはrubyか。
0148デフォルトの名無しさん
2012/08/28(火) 23:01:09.83http://blog.64p.org/entry/2012/08/28/131329
rubyからCPANモジュールを動かすことは技術的に可能?
0149デフォルトの名無しさん
2012/08/28(火) 23:01:35.250150デフォルトの名無しさん
2012/08/28(火) 23:06:47.51jsで、perlインタプリタを作るまでやるか!?
と思ったけどc++で書かれ、実体はバイナリなのね。
0151デフォルトの名無しさん
2012/08/28(火) 23:19:46.07意味的な話じゃなくて字面上の類似なら文字列の距離として
定義されているものを使えるように思う。
レーベンシュタイン距離とかハミング距離とか。
0152デフォルトの名無しさん
2012/08/29(水) 00:33:19.21こういうこと?
def norm doc
sum = 0.0
doc.each_value{|v| sum += v * v}
Math.sqrt(sum)
end
def cosine_similarity doc1,doc2
sum = 0.0
(doc1.keys & doc2.keys).each {|k| sum += doc1[k] * doc2[k]}
sum / (norm(doc1) * norm(doc2))
end
doc1 = {"私" => 1, "太郎" => 1} # 単語の頻度
doc2 = {"私" => 1, "花子" => 1}
puts cosine_similarity doc1,doc2
0153デフォルトの名無しさん
2012/08/29(水) 00:46:21.53参考までに。
Octopress/JekyllでGroongaによる類似文書検索機能を使う
http://arika.org/2012/07/28/jekyll-and-groonga-similar-search/
0154デフォルトの名無しさん
2012/08/29(水) 05:02:47.750155デフォルトの名無しさん
2012/08/29(水) 18:10:00.840156デフォルトの名無しさん
2012/08/29(水) 20:57:05.07Class C を共通で使いたくなりました。file C.rb で require "A" を "B" 、A::hoge を B::hoge
にするだけですが、class C (file C.rb) は1つのままにしたいです。さらに、Class C を
インスタンスするときにA,B を指示する I/F にはしたくないです。module A,B の wrapper を
用意してclass C はそれを使い、module の切り替えは global チックに行いたいのですが、
その wrapperをどのように記述したらよいかが、わかりません。。
file A.rb
module A
module_function
def hoge(x,y)
end
end
file B.rb
module B
module_function
def hoge(x,y)
end
end
file C.rb
require "A"
class C
def initilize(z)
@x = z
def hoge(w)
A::hoge(@x,w)
end
end
0157デフォルトの名無しさん
2012/08/29(水) 21:58:08.61AとBを同時に使う必要が無いのであれば
AとBはクラス名を同じにしてそれぞれでrequire 'C'すればいんでね
そうでないなら例えばこんなん
class C
def self.m=(mod) ; @m = mod ; end
def self.m ; @m ; end
def hoge(w) ; self.class.m::hoge(@x,w) ; end
end
C.m = A
0158uy
2012/08/30(木) 02:01:13.96module_function
def hoge x , y
p :a
end
end
module B
module_function
def hoge x , y
p :b
end
end
class C
class << self
attr_accessor :mod
end
def initialize z
@x = z
end
def hoge w
self.class.mod.method(__method__).call @x , w
end
end
C.mod = B
c = C.new 2
c.hoge 4
0159デフォルトの名無しさん
2012/08/30(木) 23:22:57.36やりたいことができました。本当に助かりました
動的なケースと静的なケースどちらも教えて
いただけて感激です。
確かに静的なケースでは、異なるファイル名で
準備しておいて require しながら起動すれば、
自然に使えますね。依存関係でこり固まっていた
思考が溶けた気分です。
0160デフォルトの名無しさん
2012/08/30(木) 23:23:43.380161デフォルトの名無しさん
2012/08/31(金) 06:45:57.23> (1..20).sort_by{rand}
それ、考えなしの安直プログラマーが高確率でやらかす、典型的なやってはいけないアンチパターンだな。
これは偏りが発生するのでアウト。確率論の問題としては良い題材だから、理由は自分で考えてみるといい。
ぐぐるとこれと同じパターンをやらかす人間が多くて唖然とするが。
0162デフォルトの名無しさん
2012/08/31(金) 10:42:37.54shuffleが無かった時代に、偏ってもいいからサクッと書きたい用途でよく使われてたんだよ
当時から「ちゃんと混ぜるならちゃんと書く」という風に知られてた
0163デフォルトの名無しさん
2012/08/31(金) 11:36:15.90sort_by{rand(20)} とか sort{rand-0.5} とかやるならともかく
0164デフォルトの名無しさん
2012/08/31(金) 12:21:11.0262.6418390534633
irb> a=(1..6).to_a; r=Hash.new{|h,k| k=0}; 1000000.times{r[a.sort_by{rand}] +=1}; d=r.values; p Math::sqrt(d.inject(0){|x,y| x+y*y}/d.size-(d.inject(0){|x,y| x+y}/d.size)**2)
61.37589103222861
うん、たいして変わらんですな
0165デフォルトの名無しさん
2012/08/31(金) 12:47:16.122: a = [1,2,3,4,5]
3:
4: a.each do |b|; c = b; end
5: p c
6:end
これだとcのスコープが4行目内だけになってエラーになりますが
そこで3行目に
c = nil
と入れているんですがこれでいいでしょうか?
もっとスマートな方法はないでしょうか
0166デフォルトの名無しさん
2012/08/31(金) 12:53:56.710167デフォルトの名無しさん
2012/08/31(金) 13:17:29.57スコープがそのようになっているんだから、そのように書くのがいちばんスマートだと思うがなにか問題ある?
0168uy
2012/08/31(金) 14:40:17.282: a = [1,2,3,4,5]
3: p a.last
6:end
0169uy
2012/08/31(金) 14:46:12.18変数宣言がイヤだって事か
元コードみないとわからんけど、eachじゃなくてinjectとかeach_with_objectでやって
そのイテレータの戻り値をcに格納すれば
0170デフォルトの名無しさん
2012/08/31(金) 15:17:26.34このイディオムはsort_byだから問題ないんだろうと思ってたが
0171デフォルトの名無しさん
2012/08/31(金) 15:37:46.80いるよねー、ランダムのラの字を行った瞬間に脊髄反射で食って掛かるひとw
0172デフォルトの名無しさん
2012/08/31(金) 22:21:59.27ありがとうございます
すいません
説明不足でしたがブロック内で初めて変数を使うとスコープがそのブロック内になってしまうので
>>165のようにブロックの前で変数を宣言するのか(グローバル変数は使うべきではないですよね)もっといい方法があるのか知りたかったということです
>>168>>169
なるほどこれは便利ですね
0173デフォルトの名無しさん
2012/08/31(金) 22:45:17.75>>137は偏るの?
0174デフォルトの名無しさん
2012/09/01(土) 10:10:46.31>>163のパターンは偏るはず
sort_by{rand}はほとんど偏らないけどshuffleよりかなり重い
0175デフォルトの名無しさん
2012/09/02(日) 14:15:38.97def a; p "this is method a"; end
end
class MyClass
include MyModule
def b; p "this is method b"; end
a rescue p "no such method"
b rescue p "no such method"
end
MyClass.new
これでメソッドaとbがないと怒られてしまうのは何ででしょう?
クラス定義の中ではレシーバselfはカレントクラスであるMyClassを参照するはずなのでメソッドa,bを呼べるのでは、と思ったのですが…
0176デフォルトの名無しさん
2012/09/02(日) 14:31:05.87そして、インスタンスメソッドはクラス定義のclass...endの文脈では呼べない
class C
def a; end
a
end
が3行目でNoMethodError起こすのと同じ理屈
これで納得しない場合はincludeとはなんぞやという話になる
0177デフォルトの名無しさん
2012/09/02(日) 15:36:55.010178デフォルトの名無しさん
2012/09/02(日) 19:00:21.38調べてみたりしてなんとなくincludeの役割がわかりましたが、次のコードが動かない理由がわからないです
module MyModule
def self.a; p "this is method a"; end
end
class MyClass
include MyModule
end
MyClass.a
aメソッドをクラスメソッドではなくインスタンスメソッドとして定義してextendしたら MyClass.a で実行できることは確認しました
includeもextendもクラスメソッドは相手にせず、インスタンスメソッドしか見ないという事なんでしょうか
0179デフォルトの名無しさん
2012/09/02(日) 20:00:57.17あるのはクラスインスタンスのインスタンスメソッド。
あとはincludeとextendが何をするものかを考えれ。
0180デフォルトの名無しさん
2012/09/02(日) 20:42:44.15横から勝手に訂正させてもらうね
×あるのはクラスインスタンスのインスタンスメソッド。
○あるのはクラスインスタンスの特異メソッド。
0181デフォルトの名無しさん
2012/09/02(日) 20:44:52.28普段考えるぶんにはそれでもいいし統一概念ですっきりするんだけど、でも本当はやっぱり違う…
0182デフォルトの名無しさん
2012/09/03(月) 00:25:02.82モジュール側のメソッド内でそのクラスのインスタンス変数にアクセスするのって普通ですか?
■ このスレッドは過去ログ倉庫に格納されています