ふらっと C#,C♯,C#(初心者用) Part117 [転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2015/10/02(金) 20:50:08.06ID:IGV3Viy6他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part116 [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1436344868/
■関連スレ
C#, C♯, C#相談室 Part89 [転載禁止](c)2ch.net
http://peace.2ch.net/test/read.cgi/tech/1443271409/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
0052デフォルトの名無しさん
2015/10/06(火) 16:53:27.84ID:y3L8AxGi0053デフォルトの名無しさん
2015/10/06(火) 17:01:54.18ID:H4LWLTNp0054デフォルトの名無しさん
2015/10/06(火) 17:11:09.43ID:rJsBL5CgUpdate to revisionするとか
Show logからUpdate item to revisionするとか
0055デフォルトの名無しさん
2015/10/06(火) 17:25:06.67ID:UaXFQD8wな ん の は な し ?
0056デフォルトの名無しさん
2015/10/06(火) 18:51:35.50ID:b7EIiqyOどっちにしろアップデート要るからな
0057デフォルトの名無しさん
2015/10/06(火) 19:33:53.24ID:fQuxJtVKほ、ほら、SVNが適切にマージしてくれてるでしょ(震え声
0058デフォルトの名無しさん
2015/10/06(火) 21:04:13.40ID:eiV44Wn/0059デフォルトの名無しさん
2015/10/06(火) 23:55:21.99ID:EryYYvevクラスBのメソッド内でクラスAのメソッド使用
のような関係があるとき
依存性を減らすためにコンストラクタで相手のオブジェクトを受け取り、フィールドにセット
するような作りにしたいんですが、お互いにインスタンス作るには、もう片方が必要なため、作れません
こういうときはどういう作りにすべきですか?
テストコードを書くため、メソッド内で相手クラスをnewするのは無しでお願いします
0060デフォルトの名無しさん
2015/10/06(火) 23:59:03.30ID:8uRulS560061デフォルトの名無しさん
2015/10/07(水) 00:11:55.48ID:T1RoiOzFinterface IHage { void DoHage(); }
interface IHoge { void DoHoge(); }
class Hage: IHage {
private IHoge hoge;
public Hage(Func<IHage, IHoge> hogeFactory) { this.hoge = hogeFactory(this); } }
class Hoge: IHoge { private IHage hage; public Hoge(IHage hage) { this.hage = hage; } }
これで new Hage(hoge => new Hage(hoge)) としてインスタンス作ればいい
factoryを変えればテスト時にHageにダミーのIHoge実装を食わせることもできる
0062デフォルトの名無しさん
2015/10/07(水) 00:20:04.54ID:3pa+NQnnありがとうござました
0063デフォルトの名無しさん
2015/10/07(水) 00:24:26.54ID:T1RoiOzFnew Hage(hage => new Hoge(hage))
0064デフォルトの名無しさん
2015/10/07(水) 12:27:46.25ID:dQPZGG2o0065デフォルトの名無しさん
2015/10/07(水) 12:34:11.37ID:40NgKpJyダメなのは循環参照ではなく2つのクラスが相互に密結合する設計
0066デフォルトの名無しさん
2015/10/07(水) 12:51:31.86ID:dQPZGG2oVBスレでもそんなヨタを飛ばしてるバカがいたけど、.NETのイベントも
オブザーバパターンも実行時に参照を握るだけであってコード自体が循環参照してるわけじゃない
0067デフォルトの名無しさん
2015/10/07(水) 12:51:40.38ID:wgVSxFSaMethodB内では、クラスAのセッターを呼ぶ
みたいな処理は、どういう設計がいいんだろ?
>>61みたいにするのはよくない?
0068デフォルトの名無しさん
2015/10/07(水) 12:57:52.42ID:dQPZGG2oそんなことをしたくなる(しなきゃならない)時点でもう詰んでる。
クラスの切り分け方が根本的に不適切だからそうなる。
0069デフォルトの名無しさん
2015/10/07(水) 13:13:24.70ID:UidqiOp40071デフォルトの名無しさん
2015/10/07(水) 16:36:06.20ID:dQPZGG2oAがBに依存していないと偽装するという目的のためだけにインターフェイスIBを作ってBにかぶせても
AがBに依存している実態は何も変わらない。
そんなのただの欺瞞だ。
自分の欺瞞に自分で気づいてないなら自己欺瞞だな。
0072デフォルトの名無しさん
2015/10/07(水) 16:49:51.50ID:9sdQQKJG働けクソニート
0073デフォルトの名無しさん
2015/10/07(水) 18:25:15.82ID:wgVSxFSa間でやり取りするようなクラス追加したほうがいいってこと?
0074デフォルトの名無しさん
2015/10/07(水) 19:23:58.21ID:F4sBdgXs上位のクラスはProperyChangedイベントを監視するだけでいいし、下のクラスはPrism使うだけ
0075デフォルトの名無しさん
2015/10/07(水) 19:55:05.52ID:HxdUxcN3テスト時にダミーに差し替えるためだけの形式的なインターフェイスは普通に使われてるパターンだよ
嘘だと思うならVSのコードを逆コンパイルしてみたらいい
0076デフォルトの名無しさん
2015/10/07(水) 21:41:26.09ID:sdI3RqNo2015年1月のnumの合計を出したいのですが、
どのように書けば可能でしょうか?
public class TDATA
{
public string BID { get; set; }
public DateTime day { get; set; }
public int num { get; set; }
}
static void Main(string[] args)
{
var hoge = new List<TDATA>();
hoge.Add(new TDATA() { BID = "A001", day = Convert.ToDateTime("2015/1/1"), num = 1 });
hoge.Add(new TDATA() { BID = "A002", day = Convert.ToDateTime("2015/1/20"), num = 2 });
hoge.Add(new TDATA() { BID = "A001", day = Convert.ToDateTime("2015/2/11"), num = 1 });
}
LINQを調べてみたのですが、条件が複数あると、
なかなか理解できず、よろしくお願いします。
0077デフォルトの名無しさん
2015/10/07(水) 21:58:51.87ID:T1RoiOzFwhere x.day.Year == 2015 && x.Month == 1
group x by x.BID into g;
foreach (var g in groups) {
Console.WriteLine(“BID={0}, Sum={1}”, g.Key, g.Sum(x => x.num));
}
0078デフォルトの名無しさん
2015/10/07(水) 21:59:22.05ID:T1RoiOzF訂正
into g は不要
0079デフォルトの名無しさん
2015/10/07(水) 21:59:54.31ID:7k7eABWe0080デフォルトの名無しさん
2015/10/07(水) 22:01:55.66ID:7k7eABWevar sum = hoge.Where( tdata => tdata.day.Year == 2015 && tdata.day.Month == 1 ).Sum( tdata => tdata.num );
0081デフォルトの名無しさん
2015/10/07(水) 22:06:02.97ID:T1RoiOzFそれだとBIDでグループ化されてないよ
メソッド形式でSumまで一行で書くならこう
var sums = hoge.Where(tdata => 略)
.GroupBy(tdata => tdata.BID)
.Select(g => new { BID = g.Key, Sum = g.Sum(tdata => tdata.num) });
0082デフォルトの名無しさん
2015/10/07(水) 22:45:02.75ID:NHKi3h4oモデルというのはどのように考えればよろしいでしょうか
クローラーを作ろうとしていて、新着一覧のページを定期的にチェックしていて
新着一覧のページには投稿者のIDの一覧があります。
投稿者のIDから投稿者の詳細は別のページで参照する必要があるので、投稿者のIDをキーにしてローカルに保存しようと思うのですが
この時投稿者のモデルはIDだけで作るべきなのでしょうか、それともIDとその他名前等の情報を混ぜて作るべきでしょうか。
IDだけで作ると、投稿者という同じデータなのにIDだけのモデルと、名前等全ての情報があるフルデータのモデルの二種類が出来てしまいます。
名前等全ての情報でモデルを作ると、IDしか分からない段階では名前等のプロパティが空 (null?)になってしまいます。
後者の方が個人的にはいいかなと思うのですが、モデルという物に対して、このモデルはIDしか入っていない あっちのモデルは名前とか全部入っている。だから処理を分ける必要が・・・
というのは許されるのでしょうか
008376
2015/10/07(水) 22:53:54.57ID:sdI3RqNoやはり、LINQを使えば短いコードで
実現出来るのですね。
LINQの理解が低いので、
参考にさせて頂きます。
0084デフォルトの名無しさん
2015/10/07(水) 23:09:28.07ID:1Tzy0x1lわざわざ分ける必要は無いと思う。
とりあえず、IDから名前等々、全部定義したクラスを定義しておけばいい。
データ(オブジェクト)の状態をチェックするプロパティを持たせておいて、取得済みかどうか判定できるようにしておけばいいし、
取得できてない名前とかは、適当に空文字なり返すようにしておけばいい。
0085デフォルトの名無しさん
2015/10/07(水) 23:09:28.12ID:K9vCPUNulinq使いはツール使うことばっか覚えて地頭がクソなやつばっかだからな。
0086デフォルトの名無しさん
2015/10/07(水) 23:19:26.43ID:zlFawCtp0087デフォルトの名無しさん
2015/10/07(水) 23:41:59.93ID:T1RoiOzFそもそも、IDしかわからない中途半端な投稿者オブジェクトを
新着一覧クラスの外に晒す必要があるのかよく考えたほうがいいよ。
新着一覧クラスが投稿者ID文字列のコレクションを公開するのが嫌なら
新着一覧クラス自身に投稿者詳細をダウンロードしてくるメソッドを持たせたっていい。
もちろん賛否両論あるだろうけど、オブジェクト指向に拘るのであれば
オブジェクトから情報を取り出すのはなるべく避けて、オブジェクトに命令していくようにするのが基本。
0088デフォルトの名無しさん
2015/10/07(水) 23:54:33.19ID:ac/t6J3k許されるというか基本中の基本
すべてを1つのモデルに詰め込もうとするともれなく巨大な神クラスが出来上がるぞ
文脈に合った適度な粒度のモデルを必要な数だけ作るんだよ
まずはとりあえず取得と更新を分離しろ
0089デフォルトの名無しさん
2015/10/08(木) 00:27:57.95ID:edkXggJovar page=await NicoUtil.DownloadPageAsync(url);
page.UserIds.Add(userId);
var user=GetProfile(page.UserIds[0]);
user.Id=3945887;
user.IsNicoNamaNushi=false;
user.Description="";
UserDB.Add(user);
0090デフォルトの名無しさん
2015/10/08(木) 00:51:12.57ID:7dJhmaB1IDだけだったらそれはIDでしかないじゃんw
煽り抜きで愚問だね。
0091デフォルトの名無しさん
2015/10/08(木) 02:10:27.33ID:n5xoJkAg0092デフォルトの名無しさん
2015/10/08(木) 21:32:59.63ID:9yien46Kタグを除去してテキストだけを取り出す簡単な方法ありますか?
0093デフォルトの名無しさん
2015/10/08(木) 22:05:59.40ID:O6ws46yp0094デフォルトの名無しさん
2015/10/08(木) 22:22:34.18ID:9yien46K例えば
<label>文字の中に<タグもどき>が有る場合が難しそう</label>
なので、正規表現以外で良い方法有りませんか?
0095デフォルトの名無しさん
2015/10/08(木) 22:51:05.62ID:vx3KIWo30096デフォルトの名無しさん
2015/10/08(木) 23:35:33.54ID:Xn3MaZ8G0097デフォルトの名無しさん
2015/10/09(金) 00:15:53.61ID:oggkbSfr難しいですか?
0098デフォルトの名無しさん
2015/10/09(金) 05:03:09.47ID:DnhlxVQiぐぐれよ
http://www.atmarkit.co.jp/ait/articles/1501/27/news140.html
0099デフォルトの名無しさん
2015/10/09(金) 10:27:53.18ID:oggkbSfr0100デフォルトの名無しさん
2015/10/09(金) 11:13:26.38ID:oOXSiJnlこんなところで釣りをするな
死ね
0101デフォルトの名無しさん
2015/10/10(土) 13:55:22.44ID:PcQrHOFVRectangleだと始点より右下にしかドラッグ出来ません
全方向にドラッグ出来るようにしたいのですがどうすればいいのでしょうか?
ちなみに今のコードは
g.DrawRectangle(Pens.Black, startPt.X, startPt.Y, endPt.X - startPt.X, endPt.Y - startPt.Y);
で startPtはMouseDown時 endPtはMouseMove時のマウスポインタの座標です
0102デフォルトの名無しさん
2015/10/10(土) 14:02:04.52ID:xPCYj4vK0103デフォルトの名無しさん
2015/10/10(土) 14:26:32.90ID:S6gJKsnz0104デフォルトの名無しさん
2015/10/10(土) 14:43:16.81ID:PcQrHOFV出来ましたスパルタ先生!
まだ初心者なのでminとmaxが何か分からなかったんですがMathクラスだったんですね
ありがとうございました!
0105デフォルトの名無しさん
2015/10/11(日) 17:20:59.98ID:ZCWGzTkV依存関係プロパティにすれば変わるのはわかっているのですが、煩雑なのでできれば避けたいと思っています
通常のCLRオブジェクトでは変わらず
INotifyPropertyChangedだと、オブジェクトそのものを入れ替えてしまうと変更を通知するタイミングがなくてうまくいかないような気がします
うまい方法はないでしょうか
0106デフォルトの名無しさん
2015/10/11(日) 18:39:25.15ID:o6WYp8Zd0107デフォルトの名無しさん
2015/10/11(日) 19:03:36.29ID:ZCWGzTkVプロパティの値が変わってないのでどう通知すればいいのかもわからないのですけれども
0108デフォルトの名無しさん
2015/10/11(日) 19:52:52.41ID:ZCWGzTkVただのCLRオブジェクトを入れればきちんと反映されました
自作クラスをDependencyPropertyにしてUserControlとバインドさせて
その自作クラスで普通のCLRオブジェクトのプロパティをUserControlの中にあるコントロールとバインドさせたら
入れ替えても反映しなかったということのようです
0109デフォルトの名無しさん
2015/10/11(日) 19:55:53.79ID:KbfkRHMwが有った時に、
array.Find(x => ...
array.Where(x => ...
などをやる場合に、探索を開始するindexを指定するようなことは出来ませんか?
100番目以降の要素から探索するなど。
0110デフォルトの名無しさん
2015/10/11(日) 19:58:48.31ID:EnuaFgocSkip(99)
0111デフォルトの名無しさん
2015/10/11(日) 20:02:59.11ID:ZCWGzTkV説明できた気がしないので一応テストコードの一部を貼っておきます
DependencyPropertyをやめてただのCLRオブジェクトにすると反映されるようになります
0112デフォルトの名無しさん
2015/10/11(日) 20:08:39.48ID:ZCWGzTkVPropertyMetadataの初期値はstaticなので使いまわされるんですね
お騒がせしました
0113デフォルトの名無しさん
2015/10/11(日) 20:40:49.95ID:ijISB/Tc0114デフォルトの名無しさん
2015/10/11(日) 21:24:46.54ID:lDigt0qz0115デフォルトの名無しさん
2015/10/11(日) 21:29:23.08ID:ijISB/TcXElement document = XElement.Load("sample.xml");
// ゲーム中のユニット情報をXMLの各要素へ書き込み
var query = (from p in document.Elements("Status")
select ★
query.Attribute("UnitID").Value = gameManager.unitStateList[i].unitID.ToString();
0116デフォルトの名無しさん
2015/10/11(日) 21:32:27.27ID:ijISB/Tcvar query = (from p in document.Elements("Status")
select ★
query★
すみません途中書き込みしてしまいました
しかもsageませんでしたすみません
LinkToXMLでXML操作を書きたいです
「Status要素内」の「ID」の値を「更新」したい、というのがやりたい事ですが
★の部分はどう書けばいいでしょうか?
0117デフォルトの名無しさん
2015/10/11(日) 21:35:12.30ID:ijISB/Tcやりたい事はStatus要素内にある「全ての」要素について任意の値で更新を行いたい
というものです
多分、一つしか要素がなく、それを更新するのであればFirst()で取って
Attribute(要素名).Valueで更新できると思うのですが、全ての要素の場合はどう書けばいいのかが分かりません
0118デフォルトの名無しさん
2015/10/11(日) 21:57:00.89ID:lDigt0qz{
status.ID = ...
status.Hoge = ...
}
0119デフォルトの名無しさん
2015/10/11(日) 22:30:24.51ID:o6WYp8Zd0120デフォルトの名無しさん
2015/10/11(日) 23:23:06.77ID:ijISB/Tcありがとうございます。
参考にしてやりたい事自体はできました。
XElement document = XElement.Load("sample.xml");
IEnumerable<XElement> de =
from el in document.Descendants("Status")
select el;
foreach (XElement xmlDocument in de)
{
xmlDocument.Element("id").Value = sStar.id.ToString();
xmlDocument.Element("name").Value = sStar.name.ToString();
xmlDocument.Element("class").Value = sStar.class.ToString();
xmlDocument.Element("setting").Value = sStar.seting.ToString();
}
document.Save("sample.xml");
ただ正直、全然理解できていませんが(何でforeach内のこの処理がdocumentに反映するの?とか)
0121デフォルトの名無しさん
2015/10/11(日) 23:37:17.15ID:o6WYp8Zdclass Hoge { public string Value { get; set; } }
foreach (Hoge hoge in list) {
hoge.Value = ...;
}
なんだからlistに含まれる各hogeのValue値が更新されるのは当然
XElement型のxmlDocumentとかやめてくれよ…
0122デフォルトの名無しさん
2015/10/11(日) 23:41:50.91ID:ijISB/Tcあーなるほど、意味が分かりました
>XElement型のxmlDocumentとかやめてくれよ…
ちなみにこれはなぜでしょうか?
0123デフォルトの名無しさん
2015/10/11(日) 23:52:55.34ID:o6WYp8ZdXDocumentやXmlDocument型が存在する
0124デフォルトの名無しさん
2015/10/11(日) 23:59:38.42ID:ijISB/Tcなるほど、言われてみれば確かに
何度もありがとうございました
0125デフォルトの名無しさん
2015/10/12(月) 07:16:36.14ID:oCa7NkmOありがとうございました。
array.Skip(99) .Find(x => ...
とやると、100番目以降の要素の部分配列が作成されるのは分かったのですが、
その分、処理が遅くなるなどの心配は有りませんか?
0126デフォルトの名無しさん
2015/10/12(月) 07:21:01.92ID:CF5nq9ai>100番目以降の要素の部分配列が作成される
されない
ラッパーのイテレータが作られるだけ
0127デフォルトの名無しさん
2015/10/12(月) 07:27:25.83ID:xL7Yt/Nd本題とは関係ないけど、List<T>型にarrayとかつける馬鹿が目の前にいたらしばき倒してると思う
0128デフォルトの名無しさん
2015/10/12(月) 07:53:05.78ID:oCa7NkmOありがとうございました。
もう一つ教えてください。
int[] array = new int[] { 1, 2, 3 };
foreach (var i in array)
{
i = 100;
}
iはforeach繰り返し変数なので割り当てられない
というエラーが出るのですが、どうすれば良いでしょうか?
0129デフォルトの名無しさん
2015/10/12(月) 07:57:11.52ID:CF5nq9ai普通にループ
っていうかパフォーマンスクリティカルなところでない限りは配列をインプレースで更新したりしないで新しく作っちゃうのが今風
0130デフォルトの名無しさん
2015/10/12(月) 08:13:56.48ID:oCa7NkmOということはクリティカルな場面ではforeachの中で配列を更新できますか?
0131デフォルトの名無しさん
2015/10/12(月) 09:45:46.22ID:4edlKvTHなんで?
型で正体分かるでしょ。
その為の静的言語だし。
名前が適切じゃなきゃリファクタリングすればいいだけだし、そんなことぐらいにしか突っ込めないお前の方が馬鹿だと思う
0132デフォルトの名無しさん
2015/10/12(月) 09:47:15.78ID:L/1UOsEKエンコーダ、デコーダ共に。
C++のsourceなら落ちてるけど、ポインタとかシフト演算使いまくりで移植しにくい。
誰かたすけて
0133デフォルトの名無しさん
2015/10/12(月) 10:05:29.20ID:bZxqtO6M> 名前が適切じゃなきゃ
そこに突っ込んでるだけだろ
いちいちこまけーこと言うなよ
って言うならわかるけど、問題ないだろって開き直るのもどうかと思う
0134デフォルトの名無しさん
2015/10/12(月) 10:11:31.09ID:AiKl9MOi生徒「やってなきゃやればいいだけ。そんなことぐらいにしか突っ込めないお前は馬鹿」
0135デフォルトの名無しさん
2015/10/12(月) 10:44:36.42ID:FazCyQUV「見りゃわかるんだから好きにさせろ」
結論:シーア派とスンニ派の戦いに日本は参加すべきじゃない
0136デフォルトの名無しさん
2015/10/12(月) 10:51:02.89ID:L/1UOsEK0137デフォルトの名無しさん
2015/10/12(月) 10:55:27.76ID:4edlKvTH構造が違うだけで言葉自体の意味はさほど変わらない。
そして大半はiteratorでアクセスするし、インデックスのアクセスも同じ。
どこに問題があるのか教えて欲しい。
0138デフォルトの名無しさん
2015/10/12(月) 11:00:20.66ID:ntYAJ4A2両方に命令してるからな
0139デフォルトの名無しさん
2015/10/12(月) 11:12:27.33ID:UFM1lTS3これでなんで怒ってるのかわからん。
C#のList<T>は普通の配列みたいなやつだよな
LinkedListと勘違いしてるの?
0140デフォルトの名無しさん
2015/10/12(月) 11:45:17.20ID:5cnLZ8t5うぜえんだよボケナス
0141デフォルトの名無しさん
2015/10/12(月) 11:47:29.04ID:4edlKvTHまぁできないと思うよ。問題ないもん。
0142デフォルトの名無しさん
2015/10/12(月) 11:52:34.15ID:oVmZU7gXlinked listの意味で使われarray(array list)とlist(linked list)という対比で用いられることが歴史的に多かったから発狂したんだろう。
連想配列の意味でハッシュが用いられるようなもの。
.NET Frameworkはそれを正しい意味の名前に直したんだから問題はない。
0143デフォルトの名無しさん
2015/10/12(月) 13:10:29.56ID:Tj8wl52Cできません
>>129が言ってるのは
普通は
int[] array = new int[] { 1, 2, 3 };
for( var i = 0; i< array.Length; i++ )
{
array[i] = 100;
}
みたいにやれ。
パフォーマンスとメモリが気にならないなら
array = new int[]{ 100, 100, 100 };
みたいんでいいやん ということじゃね
0144デフォルトの名無しさん
2015/10/12(月) 13:37:05.60ID:cGJWI2K10145デフォルトの名無しさん
2015/10/12(月) 13:49:06.51ID:oCa7NkmOありがとうございました。
0146デフォルトの名無しさん
2015/10/12(月) 15:00:36.92ID:4P8sYT2XConsole.WriteLine(i);
}
0147デフォルトの名無しさん
2015/10/12(月) 15:03:51.40ID:4P8sYT2Xうえのarrayとかlistとか言ってるの読みながら間違えた
ToListで
0148デフォルトの名無しさん
2015/10/12(月) 15:39:30.41ID:FazCyQUV0149デフォルトの名無しさん
2015/10/12(月) 15:49:02.21ID:E/TV++i+一回目はキャンセルできても2回目はなぜかデッドロックしてしまいます;;
以下にソースを張ります。
CancellationTokenSource tokenSource = new CancellationTokenSource();
private void button1_Click(object sender, EventArgs e){
var task1 = Task.Factory.StartNew(() =>{
var task2 = Task.Factory.StartNew(() =>{
tokenSource.Token.ThrowIfCancellationRequested();
for (int i = 0; i <=300000000; i++){
if (tokenSource.IsCancellationRequested){
return 0;
}
}
return 0;
});
if (task2.Result == 0){
task2.Dispose();
}
}, tokenSource.Token);
}
0150デフォルトの名無しさん
2015/10/12(月) 15:49:04.48ID:IrWwZ6fO一つのクラスにメソッド2つを用意すればいいだけなのに
0151デフォルトの名無しさん
2015/10/12(月) 15:51:43.51ID:wjSQdsNO■ このスレッドは過去ログ倉庫に格納されています