ふらっと C#,C♯,C#(初心者用) Part130at TECH
ふらっと C#,C♯,C#(初心者用) Part130 - 暇つぶし2ch850:デフォルトの名無しさん
17/09/02 12:50:09.28 TQXuPiZd0.net
>>840
和訳ありましたか、ありがとうございます
.NETとやらが必要になったタイミングで買おうと思います

851:デフォルトの名無しさん
17/09/02 13:47:13.38 GeyJWChH0.net
書籍もいいがM$燻製のChannel9とかもありじゃね
偶に裏話とかあるし
なんでC#(名称)になったとか(あっ知ってたらスルーね)

852:デフォルトの名無しさん
17/09/02 15:49:15.96 u30btijYd.net
>>841
.NETが必要じゃないc#の用途の方が珍しいと思われ

853:デフォルトの名無しさん
17/09/02 19:11:00.76 h042tsov0.net
>>837
えーでも結局誰かが書いたコードを辞書的に調べたいからそういう本欲しいんでしょ?
最新に対応してないのは困るなぁ
タプルとか出てこないね
最近書籍の対応遅いよね

854:デフォルトの名無しさん
17/09/02 19:55:06.66 9/Pt0bz9M.net
>>844
小さなバージョンアップを繰り返すようになったからね
C#開発のメインストリームがWeb系のバリバリな連中の方に移ってしまって、
書籍の主な購買層であったドカタ系が完全に取り残されて新機能に興味を示さなくなってしまったのも大きい

855:デフォルトの名無しさん
17/09/02 20:56:25.71 tnM/ItCw0.net
>>831
独習とイディオム読んだ独学だけど、一通りの事はできるようになったよ。
api呼んでみたり、データベース連携したりね、
独学やったあと、イディオム読めばええんちゃう?

856:デフォルトの名無しさん
17/09/02 21:24:01.88 RAK1J/Hs0.net
URLリンク(iup.2ch-library.com)
このプログラムを作りたいんだけど
仕様が
・ルートフォルダ
手入力でディレクトリ先のパスフォルダを削除する事ができる
・参照
押してフォルダを選択してパスをルートフォルダのテキストボックスに表示
start
・クリックするとカレンダーが出てきて、そこから日付を選択
End
・start~Endの期間の日付フォルダをまとめて削除できる
上記二つはできたけどstart~endが分からん…
新人プログラマーで入ってまだ4日目なんですが
20時間以上やってるけど全くできない…
みんなこんなの本当にできるの?
入ってすぐ社内ではもう既に無能扱いされてますヾ(。>?<。)ノ

857:デフォルトの名無しさん
17/09/02 21:28:50.88 w/8WFstaM.net
>>847
そりゃそうだよ
無能に決まってるじゃん
そんな問題は10分でできるようになってから入社するのが世界の常識
日本は非常識だから素人でも雇っちゃうけどね

858:デフォルトの名無しさん
17/09/02 21:35:22.95 RAK1J/Hs0.net
>>848
やっぱそーなんですねぇ(´・ω・`)
日曜日1日使って、出来なかったら
向いてないので退職してきます
有難うございます

859:デフォルトの名無しさん
17/09/02 21:36:31.07 NoLppLbV0.net
>>847
日付でなく例えば連番で100から1000までならできるよな?
日付をDateTimeにして同じようにやればいい
比較演算子普通に使えるし
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
でもいいし好きなほうで

860:デフォルトの名無しさん
17/09/02 21:40:57.91 hCVoOyCG0.net
>>847
「C# Forms カレンダー」と「C# ファイル 削除」でググれ

861:デフォルトの名無しさん
17/09/02 21:50:00.25 TQXuPiZd0.net
>>842
C#に決まった由来は気になるので時間あるときにみてみます
>>843
となると遅かれ早かれ必要になりそうですね
学ぶタイミングが難しい気もしますが
>>844
もともとその用途で購入を考えてましたが周りの方が言う通り
ネットの恩恵に預かろうかと思います
>>846
参考になる経験談ありがとうございます
WEBの勉強で不足を感じたら独習→イディオムのように勧めていこうかと思います

862:デフォルトの名無しさん
17/09/02 22:08:20.57 E5+eBi390.net
>>847
勉強の基本なんだけど。
「分からない」時にはなにが分からないかを列挙して、それをさらに細かい要素に分解していく。
分解して考えれば・調べれば分かるようになったら、それをひとつひとつ解決していく。
847 を読んでもなにが分からないのかこちらに伝わらない。
つまり自分でなにが分からないのか分かってないんでしょ。
もっと整理してみたら?
ちなみに新人というか数年程度のヤツにそんなたいしたことは求めてない。
きちんと適切な質問を出来るようになればそれで OK だと思うよ。(ちょー難しい要求だが)
特に1年目なんて、なにを聞いても許される二度とない重要な期間なんだから、それを有効活用しない手はない。
最悪なのは自分で抱え込んでなにも進まない状態だよ。

863:デフォルトの名無しさん
17/09/02 22:11:52.21 9PaYDv7F0.net
>>849
今できることよりも
継続して勉強できるかどうかのほうがずっと大事
1~2年継続して勉強すれば周りのやつ全員追い抜けるよ
ただし基礎的な能力が高いやつに限るが
(論理的思考力、自然言語能力、メタ認知能力等)

864:デフォルトの名無しさん
17/09/02 22:18:11.21 9PaYDv7F0.net
>>849
>>853のアドバイスをよく聞くといい
自然言語能力・メタ認知能力をある程度身につけてる良い手本
勉強の仕方を勉強すること

865:デフォルトの名無しさん
17/09/02 22:26:21.45 NYkisN1vM.net
思考の言語化能力だな

866:デフォルトの名無しさん
17/09/02 22:44:12.81 fbxz7fkLM.net
>>848
床上手な処女理論

867:デフォルトの名無しさん
17/09/02 22:46:27.15 w/8WFstaM.net
無能な働き者に分類される人は自然言語に傾倒しがちだよね
ダラダラと長く曖昧でわかりにくい文章が数式なら僅かな記述で明確に表現できることもある
理解するのに時間がかかる難解な文章が図表なら瞬時に把握できることもある
もちろん自然言語を全て否定する訳ではないがバランス感覚は大事なんだな
自然言語はあくまでツールのひとつ

868:デフォルトの名無しさん
17/09/02 22:52:16.04 o1ErZR2S0.net
最近、イディオム買って読んでるけど、この本読んでる方って多いんでしょうか?
独習C♯読んでから、独学で色々とプログラム作ってましたけど、
OOPの考え方とかまったく知らないでやってたもので、コードが散らかってます
staticおじさんになってたり、クラス分けても結局再利用しないような内容、関数コピペ
メインメソッドから分離してるだけで、メインメソッドに膨大な量書いてるのと大差無い感じです
再利用の仕方とか勉強する為にイディオム本どうかなって見ましたが、みなさんはどの様に覚えたんでしょうか?

869:デフォルトの名無しさん
17/09/02 22:53:55.94 DlxVwJvMa.net
>>849はまだ入って4日目だろ
こんなツール作らせてる教育環境がどうかしてるんじゃないの?

870:デフォルトの名無しさん
17/09/02 23:02:32.93 T/CezPj/0.net
>>860
せめてツール作らせるなら段階的にやらせるわな
クラスやメソッドの組み合わせ考えずに、とりあえず出来ましたで終わりそう

871:デフォルトの名無しさん
17/09/02 23:03:27.85 PfNbROPa0.net
経験者として派遣で投入されたんじゃない?

872:デフォルトの名無しさん
17/09/02 23:05:22.40 w/8WFstaM.net
>>859
再利用は出来れば良いね程度の気持ちで
クラス分けの目的は色々あるけど主に責務の分割な
例えばパソコンに暖房がついてたら嫌だろ
持ち運びもできず
夏場は邪魔になるだけ
暖房機能が壊れたら壊れてないパソコン部分もまとめて修理に出さないといけない
普通と勝手が違うから暖房の起動方法がわからない(セットのパソコンでコントロール?リモコン?)
パソコンを拡張したいけど暖房機能を壊してしまわないか不安になる
問題だらけだ
だからパソコンとエアコンに責務を分けようってわけ
これなら先に挙げたようなアホくさい問題が全部解決するだろ

873:デフォルトの名無しさん
17/09/02 23:17:35.26 o1ErZR2S0.net
>>863
機能の分離でクラス分けすると今度は必要なクラス探すの大変になる感じですかね?
後はどこまで繋げてどこから分離するかも中々難しく感じます
例えばエアコンのコレクションを扱うとして、エアコンの寒暖房機能、温度検知機能、タイマー機能、設定
などエアコンの中を細かくするのが苦手なんですよね
自分がよく作るのは株価を扱うプログラムですが・・・

874:デフォルトの名無しさん
17/09/02 23:22:10.23 Q8fEI/lK0.net
>>863
どうでもいいがテレビデオを思い出した
>>864
>中を細かくするのが苦手なんですよね
それはクラス設計つーより、要件定義の段階でないの
要件が明確なら、作るべきクラスも自然に決まって来るっしょ

875:デフォルトの名無しさん
17/09/02 23:27:14.80 PfNbROPa0.net
>>864
オブジェクト指向設計の本質は、設計を人間の感覚に合わせることだよ
分けることを目的にしたらダメ
人間の直感は設計の指針として明確でわかりやすいし、
オブジェクトの単位が直感に合っている限りは破綻しない(というか、少々無理が出ても破綻したように感じない)

876:デフォルトの名無しさん
17/09/03 00:23:14.14 VHdSJmfv0.net
>例えばパソコンに暖房がついてたら嫌だろ
俺もそう思っていた時期があったけど
Skylake-XとVEGAの組み合わせだと真剣に暖房かもしれない
こういうのも出るし
URLリンク(www.apple.com)
後、質問者に何か助言できるなら、オブジェクト指向はそんなに真剣にしなくてもよいよ
大事なのは手続き型プログラミングが
・データ構造
・制御構造
という二大要素で出来上がっていることに気づくこと
データ構造とアルゴリズムともいう
データ構造と制御構造をそれぞれ別々に思い描いて
その上で、データ構造と制御構造の両方を持つ「class」に分割するには
何処で切り分けたら一番「制御構造の見通しが良いか」を考える
大事なのは制御構造について意識することで、というのもオブジェクト指向でやると
データ構造の方は勝手にきれいになるから意識する必要はないのでね
C#のasync/awaitも制御構造をきれいに保つための仕組みだしね
最近の流行りというか、流れ、トレンド

877:デフォルトの名無しさん
17/09/03 00:28:40.22 VHdSJmfv0.net
なんであまりオブジェクト指向に肩入れしていると
この人はややこしい人だと思われる風潮
オブジェクト指向設計というのは
制御構造とデータ構造という二つのものを考えて
小分けにしてclassという一つのものにまとめる作業
と考えていいと思うよ
二つのものを綺麗に切って一つにして小分けにするのは
高度な作業かもしれないけど、十や百じゃなくて高々二つなんで
まぁ慣れです

878:デフォルトの名無しさん
17/09/03 00:33:37.65 WT48SvB10.net
>>866
設計書を表現することだろ?
直感は人間同士でズレる
過去の自分とも

879:デフォルトの名無しさん
17/09/03 00:57:51.36 ksmau7/rM.net
実装レベルの設計とドメインのモデリングの話がごっちゃになってる気がする
ドメインモデルはまず人間の感覚から入って、そこから実装に落としていく段階で制御構造の観点を入れていく感じだね

880:デフォルトの名無しさん
17/09/03 01:05:30.75 8T0wjaPz0.net
ありがとうございます
OOPの人間の感覚に合わせる意識が大事であって、分けることを目的にしないってのは大事だなって思います
難しいですが・・・
そういう意味だと、プログラムを少し修正したい、機能追加したいって思った時にバグが出にくい、追加しやすい状態にしたいですね
OOPに拘りは特に無く、あくまでソース管理や生産性の向上が目標です
曖昧な目標なので、実現するための手段で手こずってますが
自分の作るプログラムは目的上、同じデータから色んな値を作ったり検証させるので、使いまわせるところは汎用性がほしいんですよね
毎回別のプログラム作るたびにプロジェクト作って一部関数使いまわし、既存プロジェクトのクラス参照で使ってますが、
いつの間にかプロジェクト別で関数が別物になってしまったり、参照クラスの仕様変更で他のプロジェクトに影響出たり、設計が大変なので・・・

881:デフォルトの名無しさん
17/09/03 09:32:19.26 wl+VODG10.net
>>847
いまいるおっさんたちは就職する時点でアマチュアプログラマ歴10年以上だよ
新卒でプログラミング経験なしだと無能扱いされて当然
まずは答えを見つけて写経しろ
ペンでもキーボードでもいいから丸暗記するまで書き写せ
話はそれからだ
ちなみにベテランだったら30秒ぐらいで作るぞ

882:デフォルトの名無しさん
17/09/03 09:47:28.95 jdcIxspg0.net
コントロールを配置するだけで30秒はかかるんだけど

883:デフォルトの名無しさん
17/09/03 09:50:38.93 evIIJ2cg0.net
高校から始めたから、新卒時点で10年以上では無かったな
大学から始める様な人もいるし、適当言い過ぎだろ
新卒未経験は流石に、採用されてもPGじゃなく別部署に回される気がするが

884:デフォルトの名無しさん
17/09/03 10:30:41.79 QlhluFUqM.net
新人は研修する前提だから最初からそんなに高度なことはできなくてもいい
実験データのテキスト読み込んでデータベース化しましたとか
サークルのWebサイトをメンテナンスしてましたとか
論文書くために自力でLinux TeX環境整えましたとか
エロ画像収集ツール自作しましたとか
そういう学生らしい微笑ましいIT体験談を聞ければ充分
あとはやばそうな精神疾患とか障害がなければ合格だね
ただし
何にもしてこなかったけど興味と熱意はありますってやつと
エクセルでマクロ組んでましたをやたら強調する意識たかそうなやつ
プログラムは書かないけどITパスや基本情報をアピールするやつ
これは地雷なのでその場で不採用にチェックします

885:デフォルトの名無しさん
17/09/03 10:39:56.06 u3w+/QXpa.net
あと彼女いないやつは不採用だな
あれは人間として駄目すぎる

886:デフォルトの名無しさん
17/09/03 10:43:23.41 bPltp/aL0.net
「ぼくにとってはコンパイラが彼女のような存在でした」

887:デフォルトの名無しさん
17/09/03 11:50:36.53 c9bJJ/ld0.net
おまえら全員マ板で語れ

888:デフォルトの名無しさん
17/09/03 11:53:04.09 0sJDT6fHa.net
オブジェクト指向はプロジェクトが大きくなるほどベストの設計は存在しないんじゃないかと思う
ベストを目指しベターを繰り返していくけど結局正解はないと思い知らされる

889:デフォルトの名無しさん
17/09/03 11:55:32.51 evIIJ2cg0.net
成果物に問題がなくて、そこそこ保守性が良ければ
無理にベストを目指す必要も無いからね
ベターをベストにする労力を掛けるより、
その労力で別の事をした方がいい

890:デフォルトの名無しさん
17/09/03 12:06:31.17 QlhluFUqM.net
>>879
そういうものだよ
だからカイゼンを繰り返せるように設計する
最悪な設計は間違った設計ではなく変更が難しい設計
現代のOOPの常識だね

891:デフォルトの名無しさん
17/09/03 12:21:22.74 ksmau7/rM.net
変更のしやすさって開発スタイルに依存するからなあ
システムを作る側とそれを利用する側とで責任が分かれてる体制下においては、
綺麗なドメインモデルを継続的に改善し続けるなんて不可能
ひたすらコントローラでSQLを垂れ流す方が遥かに変更しやすい

892:デフォルトの名無しさん
17/09/03 12:28:56.71 QlhluFUqM.net
長大で無数のSQLなんてメンテしたくないよ
リポジトリパターンにしておけば1時間もかからない仕様変更に何日もかかるようになる
テストの工数も考えると辟易するね

893:デフォルトの名無しさん
17/09/03 12:31:00.27 Tnu26RxGd.net
>>882
コントローラーでSQL垂れ流しって時点で、UnitTest考慮ゼロだな

894:デフォルトの名無しさん
17/09/03 13:53:29.42 ksmau7/rM.net
設計フェーズでちゃんと客と握ってれば仕様変更は客に相応のコストを請求すればいいでしょ
変更にかかる工数はトランザクションスクリプトなら高精度で簡単に見積もれる
変更しない前提ならテストなんか画面でポチポチしてExcelにスクショ貼り付けた方が早い
>>882で変更しやすいと言ったのは運用保守フェーズに入ってからの話ね

895:デフォルトの名無しさん
17/09/03 14:03:02.81 QlhluFUqM.net
簡単に変更コスト見積れるトランザクションスクリプトのシステムなんて見たことないな
どこで何をやってるかすぐにはわからない
SQLが酷いと優しく言っても地獄

896:デフォルトの名無しさん
17/09/03 15:50:56.57 SkKZ7pGs0.net
> だからカイゼンを繰り返せるように設計する
思いつきで仕様決める奴の理想。現実は一度決めた仕様を捨てることは困難。

897:デフォルトの名無しさん
17/09/03 17:12:55.58 QlhluFUqM.net
>>887
仕様と実装の区別も付かないあたり初心者スレらしくて微笑ましい

898:デフォルトの名無しさん
17/09/04 18:45:09.41 hB0i/ETq0.net
List<int> suuji に入ってる一桁、数百の整数リストを3個ずつに纏めて新たなList<int> suujibunkatuに入れる作動を希望
C#の仕組みを理解するためにいろいろな方法を試しています
以下ソース
List<int> suuji = new List<int>();
//この後、suujiにはLoopで回した一桁の数字が数百入ります
List<int> suujibunkatu = List<int>();
foreach (var unit in suuji.Chunks(3))
{
Console.WriteLine(unit);
suujibunkatu.Add(unit);
}
//以下ネットからコピペした拡張メソッド
public static class Extensions
{
// 指定サイズのチャンクに分割する拡張メソッド
public static IEnumerable<IEnumerable<T>> Chunks<T>
(this IEnumerable<T> list, int size)
{
while (list.Any())
{
yield return list.Take(size);
list = list.Skip(size);
}
}
}

899:デフォルトの名無しさん
17/09/04 18:45:33.53 hB0i/ETq0.net
やりたいことはforeachの中でList<int>suujibunkatu に三個ずつに纏められたunitの中身を次々に入れていく作動です
ここで、以下のエラーがでます
引数 1: は 'System.Collections.Generic.IEnumerable<int>' から 'int' へ変換することはできません。
場所はsuujibunkatu.add(unit)のunitに赤線になります
引数1 はList<int> suujiの最初の数字である1だと思います。
どうやって解消したら良いでしょうか?
unitに入ってるのがint[]のような配列だと思うのですが…それが原因なのかもわかりません
int[]に入ってる配列をint化する必要があるという感じでしょうか?
拡張メソッドの中身はまだ理解できてないので、拡張メソッドの方を改造しない方向で、のちのち拡張メソッド内を把握していこうと思っています
3つずつまとめる他の方法は出来るのですが、この拡張メソッドの中身を把握するために、使う部分でのエラーをなくしたいと思ってます
よろしくお願いします

900:デフォルトの名無しさん
17/09/04 18:57:40.46 otT4pCTb0.net
>>890
List<int> suujibunkatu = List<int>();にint[]をAddしようとしてエラーになってる
3つずつ格納するならList<int[]>にしないと

901:デフォルトの名無しさん
17/09/04 19:01:00.81 00KK6mcG0.net
エラーメッセージに全て書いてあるのに何で読まないんだろ

902:デフォルトの名無しさん
17/09/04 19:03:22.90 hB0i/ETq0.net
>>891
うぉぉおできました
ありがとうございました
なるほど…

903:デフォルトの名無しさん
17/09/04 19:09:27.18 btcIVubBM.net
リストリスト最強

904:デフォルトの名無しさん
17/09/04 19:11:52.70 GCSWB22g0.net
リスト入れ子で使ってたけど、最近はクラスで中身決めてから使うようにしてます・・・

905:デフォルトの名無しさん
17/09/04 19:17:38.96 btcIVubBM.net
リスト<クラス>も最強!!

906:デフォルトの名無しさん
17/09/04 19:18:16.98 J/PDDIf7M.net
ディクショナリリストリストディクショナリディクショナリリストリスト…

907:デフォルトの名無しさん
17/09/04 19:24:49.60 4D/EyHyVM.net
>>896
最も強いモノが二つあるのか

908:デフォルトの名無しさん
17/09/04 19:30:38.82 2WJ6m4B/a.net
リストはイケメンだったって葉加瀬太郎が言ってた

909:デフォルトの名無しさん
17/09/04 21:15:16.49 xzNFEqQH0.net
もしかして:フランツ・リスト

910:デフォルトの名無しさん
17/09/05 12:51:24.34 gmADSVwC0.net
女性客はリストの演奏で興奮のあまり失神者多発だったからなあ

911:デフォルトの名無しさん
17/09/05 15:32:58.15 MGmieXBfM.net
俺クラオタだけどこういう流れイラっとする

912:デフォルトの名無しさん
17/09/05 15:34:47.87 VPTccCtg0.net
クラシックオタクなのかクラスオタクなのか

913:デフォルトの名無しさん
17/09/05 15:39:07.58 MGmieXBfM.net
>>903
こういうのイラっとする

914:デフォルトの名無しさん
17/09/05 20:51:37.63 n1w+1UPx0.net
クラクラオタクだろ

915:デフォルトの名無しさん
17/09/06 01:29:30.86 nkmkM8Yj0.net
練習でコンソールアプリケーションで迷路のようなのを作ってます
開始からゴールまでの時間を表示することはできたのですが、これを毎回記録しつつ、あなたは○○秒です~現在○位です!
のようなランキングを表示できたらと思ってますが、どのような方法が考えられるのでしょうか?

916:デフォルトの名無しさん
17/09/06 01:46:25.57 t+GbP5lP0.net
>>906
MySQL使ってDB構築してるわ
DB構築、そこからプレイヤーのidをキーに保持して、秒を保存すればええんでね?
ランキングはListとかでソートしてインデックス+1で表示
同率とかの処理必要ならメソッド作る感じで
オススメのDBはよく分からないけど

917:デフォルトの名無しさん
17/09/06 02:18:50.02 x6m+UIsj0.net
>>906
1. 記録はファイル出力/ 順位表示時に毎回ソート
2. SortedList等を使って記録時にソート済みでファイル出力、起動時等にSortedListの構築が必要
3. DBに記録、順位表示はDBからソートした結果を取得して表示
自分だけでプレイするのなら1で十分だと思うが
練習なら上から順番にやっていくのでもいいかもね
DB使うならSQL CEかSQLiteかな

918:デフォルトの名無しさん
17/09/06 05:50:00.34 zWRlsEKn0.net
ブラウザに記録する、Web Storage
どこかのサイトのランキング・サービスとか

919:デフォルトの名無しさん
17/09/06 09:07:50.25 xhMucLYd0.net
つか、その程度のデータならxmlかjson使ってクラスをシリアライズするのが良いよ

920:デフォルトの名無しさん
17/09/06 10:04:14.65 h6l6T9rKM.net
適当なBaaS使うのが簡単だろうね
やる気があればAWSで API Gateway + Lambda + DynamoDB ならほぼメンテナンスフリーで余裕で無料枠に収まる

921:デフォルトの名無しさん
17/09/06 15:39:28.12 rdtIk74+M.net
普通 Redis

922:デフォルトの名無しさん
17/09/06 18:48:35.84 yZhXwa1n0.net
① 記憶媒体からデータを読み込む。読み込んだ順番を保ちつつリストを作成する
② ゲーム開始→終了
③ ①のリストの先頭から見て行き、新しい記録より大きい要素の1つ前に挿入する。(挿入した位置が順位)
④ 表示処理
⑤ リストデータを記憶媒体へ書き込む
ソートは不要。
DBを使う要件がないのであれば記憶媒体はtxtファイルで十分。

923:デフォルトの名無しさん
17/09/06 19:04:59.84 s9ZfYQxla.net
>>906
テキストファイル名に名前秒数を適当な区切りを入れて保存
山田,60,田中,75,伊藤,81.scr
エクスプローラーからF2で編集可能
エディタもいらない
もちろんファイル名に使えない文字はあらかじめ除外だ

924:デフォルトの名無しさん
17/09/06 23:29:32.24 kZeUfc0W0.net
ネットを見ていたら、インターフェースで依存性を排除するコードが
例として出ていたのですが「コンストラクタでengineに実装を注入する」とある部分は、どのように書けるのでしょうか?
インターフェースには実装が書けず、コンストラクタでメソッドを書くこともできないので見当がつきません
よろしくお願いします
public interface Engine
{
void start();
}
public class Car
{
public Engine engine;
public Car()
{
// コンストラクタでengineに実装を注入する
}
public void go()
{
engine.start(); // <- Engineはインターフェースなので依存性がなくなった
}
}

925:デフォルトの名無しさん
17/09/06 23:38:07.92 ygscOEFy0.net
Engineインターフェースを実装したエンジンのインスタンスを
何らかの手段で手に入れてengineに代入しろってことだな
つまり、君の買った車にはエンジンが付いてないので
買ってくるか、自分で作るか、好きにしてもらったらよいが
エンジン作る部分までは説明しないよ、ってことだな

926:デフォルトの名無しさん
17/09/06 23:53:04.33 tZ2T0w/m0.net
>>915
CarはEngineに依存してるよ
インターフェース使えばEngineの実装には依存しないようにできるけど
インターフェースなので依存性がなくなったというのは認識として間違ってると思う
んで実装を注入する方法はいくつかあって、例えばコンストラクタ・インジェクションなら
Carインスタンスを生成するときにEngine実装のインスタンスを渡してあげるイメージ
public Car(Engine engine)

927:デフォルトの名無しさん
17/09/07 00:04:50.83 25clT2YI0.net
>>915
要はインターフェースの使い方が分からないってことかな。
URLリンク(ideone.com)

928:デフォルトの名無しさん
17/09/07 00:30:22.69 jomVuFMWa.net
>>915
依存性云々はとりあえず今は聞き流して、インターフェイスの使い方を覚えるのがいいねw

929:デフォルトの名無しさん
17/09/07 00:35:28.14 n13wzRyY0.net
>>915
基本的にフィールドをpublicにしちゃだめ
メソッド名はPascal
質問とは無関係だけど

930:デフォルトの名無しさん
17/09/07 01:19:40.93 /528PZB30.net
>>915
なんで依存性を無くしたいの?
変更が必要になったら変更に必要なお金を貰えばいいじゃない?
君が依存性を無くした機能が将来的に役に立つ可能性は100%なの?

931:デフォルトの名無しさん
17/09/07 06:29:42.71 yYQdIYqd0.net
>>921
こういう質問からズレた的はずれなこと言うやつってどこにも湧くよな
yahoo知恵袋とかにも多いけど

932:デフォルトの名無しさん
17/09/07 06:52:28.02 /528PZB30.net
初心者スレだし
意味のないことをやってる人間を止めるのも優しさだろ
明らかに意味がない

933:デフォルトの名無しさん
17/09/07 07:06:09.22 jEqK5EjrM.net
>>921
将来保守される保障あんの?
で、突き詰めたらメインメソッドだけで良いという結論に行き着きそうだな

934:デフォルトの名無しさん
17/09/07 07:21:08.70 /528PZB30.net
>>924
実際、機能10個作って10年で内3つしか変更が入らないときって
残りの7つに費やした依存性解消の時間って無駄じゃね?
いつ精算できんの?
変更することになってからゆっくり金貰って変更すればいいよ
予めやっておく必要も金も時間も欠片もない

935:デフォルトの名無しさん
17/09/07 07:32:44.67 oeWMtJN8M.net
>>921
え?ユニットテストしないの?
まじかよ

936:デフォルトの名無しさん
17/09/07 07:33:51.36 j+BNBbb90.net
>>915 を書き直すとこういう感じだろうか
public class Car
{
 private Engine engine;
 public Car(Engine engine)
 {
  // engineのインスタンス生成は外部で行い、
  // その参照をEngineインターフェースの変数として保持する
  // (渡されたクラスにEngineインターフェースが実装されているか
  //  どうかしか感知しない)
  this.engine = engine;
 }
 public void go()
 {
   // コンストラクタで渡されたEngineを使うので、 <


937:br>   // インスタンスの実装には依存しない   // (実際に渡されるクラスで変更があっても、   //  それがEngineインターフェースに関わらない部分なら影響がない)   engine.start();  } } あと、↓に従ってくれると、他の人からも読みやすい インターフェイスの名前付けのガイドライン https://msdn.microsoft.com/ja-jp/library/cc433279(v=vs.71).aspx "インターフェイス名には、この型がインターフェイスであることを示すために、プリフィックス I を付けます。" メソッドの名前付けのガイドライン https://msdn.microsoft.com/ja-jp/library/cc433282(v=vs.71).aspx "Pascal 形式を使用します。"



938:デフォルトの名無しさん
17/09/07 07:41:56.97 KHq0qyGqd.net
>>921
いつの時代の話だよ

939:デフォルトの名無しさん
17/09/07 07:43:59.67 KHq0qyGqd.net
>>927
命名規則持ち出すんなら、メソッド名もPascalにしろよ
それからフィールドはreadonlyにして_engine、thisは消せ

940:デフォルトの名無しさん
17/09/07 07:46:39.37 NVMcPyFE0.net
>>926
依存先を先に作ればいいだけだよ
まさかDI使うプロジェクトは作るクラス全部疎結合にするとでも思ってるのか?

941:デフォルトの名無しさん
17/09/07 08:00:06.40 oeWMtJN8M.net
>>930
それ結合テスト

942:デフォルトの名無しさん
17/09/07 08:02:41.36 j5w9yEfWM.net
下位のモジュールを結合した状態で単体テストするのはおかしなことではないでしょ
MSだって普通にクラスの中でnewしてるよ
見境なくDIすると結合したときとのギャップが大きくなりすぎる
○○サービスと呼べるような粒度の低いクラスだけにとどめるのがいいと思ってる

943:デフォルトの名無しさん
17/09/07 08:10:18.52 oeWMtJN8M.net
>>932
対象を選ぶのは当たり前

944:デフォルトの名無しさん
17/09/07 08:13:41.08 KHq0qyGqd.net
>>930
こいつUnitTestしたことないだろ

945:デフォルトの名無しさん
17/09/07 08:17:23.55 oeWMtJN8M.net
粒度も基準としてはあるが
自前のコードで完全に制御できないものはどこかで注入したほうがいいな
注入は別にインターフェースでなくてもいい
単にoverrideでもdelegateでも用途(今の文脈だとユニットテストか)に合えば良い
古い言語だとテスト用のモジュールをリンクしたり
マクロやインクルードで注入することもある

946:デフォルトの名無しさん
17/09/07 08:50:12.82 j5w9yEfWM.net
>>934
単体テストと結合テストの違いはテストケース
単体でも通るテストか、結合してないと通らないはずのテストか、それだけのこと
開発順序の都合とかネットワークに依存しててクソ遅いとか意図的に発生させるのが難しいエラーがあるといった特別な理由がない限り、
単体でも通るテストを結合して動かすことはなんら単体テストの意義を損なうものではないよ

947:デフォルトの名無しさん
17/09/07 10:51:28.81 KHq0qyGqd.net
>>936
素人おつ

948:デフォルトの名無しさん
17/09/07 10:57:46.90 eu6mSuii0.net
職場はユニットテスト何それ?だから1メソッドが数百行どころか千行超えるコードざらに見かけます・・・

949:デフォルトの名無しさん
17/09/07 12:10:02.38 tK2euLNeM.net
>>936
結合してテストして失敗したら
テスト対象が悪いのか依存先が悪いのか切り分けが面倒だろ
やれやれだぜ

950:デフォルトの名無しさん
17/09/07 12:18:14.16 CjGXGOTyM.net
>>938
作り直しレヴェルだろw

951:デフォルトの名無しさん
17/09/07 12:23:19.06 tK2euLNeM.net
>>938
レビューしないの?

952:デフォルトの名無しさん
17/09/07 12:30:07.79 j5w9yEfWM.net
>>939
よく考えよう
それ結合テストで起きる問題を先送りにしてるだけだろ?
むしろ単体テストレベルで見つかったほうが範囲が絞られてる分原因を特定しやすいよね

953:デフォルトの名無しさん
17/09/07 12:42:10.15 SGJxgazo0.net
ワッチョイ b769-ZN1Y)
ワッチョイ 236e-nkYL)
ブーイモ MM26-nkYL)


954:デフォルトの名無しさん
17/09/07 12:47:41.77 lOf9v6000.net
>>938
わかる
汎用機型のプログラミングから抜け出せなかった企業はこれからどんどん終わってくよね

955:デフォルトの名無しさん
17/09/07 12:52:28.11 /528PZB30.net
>>926
それしないとユニットテストってできないの?
無駄なことやってない?
使い方知らないの?

956:デフォルトの名無しさん
17/09/07 12:58:50.81 vdmBVUrpa.net
質問者そっちのけで盛り上がってるねw
>>915が読んだ記事の著者のいう依存性の排除っていうのは恐らく、
Enineのコードが修正されてもCar側のコードがその影響を受けないようにする、
っていう程度の意味。(CarとEngineは別の人やチームが書いてると考えて)
そのための手段として、Carのコードでは具体的なクラスEngineではなく、
Car側のコードを書いている人、または第三者が定義したIインターフェイスEngineを使い、
EngineにはIEngineの実装を強制する。
そうすればEngineを書いている人はIEngineによって拘束され、
Car側(Engineを使う側)のコードが動かなくなるような変更はできなくなる。
まあたぶんこんな感じ。
だけど、下位の側のコード(この場合はEngine)を拘束するために
わざわざインターフェイスを使って抽象度を上げる(つまり可読性は下がる)必要が
本当にあるのかは、個人的にはかなり疑問。鶏を割くのに牛刀を使う感がある。
まあ質問者に確実に言えるのは、上にも書いたけど
依存性云々なんて理解しなくても問題ないから安心して読み飛ばしていいよってことw

957:デフォルトの名無しさん
17/09/07 13:03:19.68 NBIMX30y0.net
依存性をどっかで断ち切らないと、変更の影響が波及し過ぎるからだよ
その例で言うなら、Carの実装内容がEngineに直接依存してると
Engineを修正した時に、Carも修正しなくちゃならなくなるので、それを断ち切りたい訳だ
実際には、その2クラス間にしか依存関係が発生しないなら纏めて修正でもそこまで困らないんだけど
クラスAにクラスBが依存、クラスBにクラスCが依存、クラスCにクラスDが依存……って連鎖してく様な形になってると最悪で
クラスAを修正した結果、クラスB~Dも全部修正とかになる可能性がある

958:デフォルトの名無しさん
17/09/07 13:04:43.74 vyrcxkNNM.net
>>944
汎用機は

959:948
17/09/07 13:06:37.62 vyrcxkNNM.net
すまん
汎用機は細かくプロセス分けて作るから単体テストはわりと容易だよ
そのノリでVBやJavaモノリシックなアプリを作ろうとしたところでおかしくなった

960:デフォルトの名無しさん
17/09/07 13:39:50.81 /528PZB30.net
>>947
設計変わってねぇのに
テスト数が増える話してんの?
ないとは言い切れないないけど考慮に入れるには頭悪くね?

961:デフォルトの名無しさん
17/09/07 15:14:35.43 EkI2HYTy0.net
ここにはまともな人ほとんどいないのな

962:デフォルトの名無しさん
17/09/07 15:21:06.66 MHVyagna0.net
まともな人は質の低いところには集まらないからな

963:デフォルトの名無しさん
17/09/07 15:27:09.98 /528PZB30.net
>>951
まともじゃない人って
何年もビジネスでやってるのに
金にならないプログラム組む人?

964:デフォルトの名無しさん
17/09/07 15:34:12.42 QW6AKtGa0.net
ID:/528PZB30 (6回)

965:デフォルトの名無しさん
17/09/07 15:38:11.33 QvUFBIyZ0.net
未だにVB5の保守案件を手放せていない俺は、きっとまともじゃないです

966:デフォルトの名無しさん
17/09/07 15:44:45.27 /528PZB30.net
>>954
単発に言われてもねw

967:デフォルトの名無しさん
17/09/07 16:48:04.48 CjGXGOTyM.net
1秒毎にボーリング処理するなかであるクラスのメソッドを呼び出す場合、毎回newするのは悪手ですか?staticが基本でしょうか?

968:デフォルトの名無しさん
17/09/07 17:29:06.04 wvM1rF390.net
自分で分かってるくせに
中身をしらん俺には答えは分からんがな

969:デフォルトの名無しさん
17/09/07 17:37:51.97 hyVDvgFsa.net
>>957
staticってのは意味不明だけど(フィールドじゃないの?)
基本的にどっちでも書きやすい方でOK
もちろん高価な共有リソースを使う場合は別

970:デフォルトの名無しさん
17/09/07 17:42:49.39 1h1pdgP4M.net
>>957
重いリソース抱えてないなら毎回インスタンス作って良いよ

971:デフォルトの名無しさん
17/09/07 19:00:31.87 eu6mSuii0.net
>>957
new のコストが重いならこんな手も
方法: ConcurrentBag を使用してオブジェクト プールを作成する
URLリンク(msdn.microsoft.com)(v=vs.110).aspx

972:デフォルトの名無しさん
17/09/07 19:18:39.04 KSI/qa2l0.net
>>957
そのメソッドをアクセスしやすい場所に置けばいいだけじゃないの?
単純に使うクラスにメソッドをコピーするか必要なメソッドだけ分離してクラスにして今まで使っていたクラスではフィールドで持っておけばいい

973:デフォルトの名無しさん
17/09/07 21:02:39.11 EkI2HYTy0.net
>>957
>>958の言うとおり
1秒毎にポーリングする処理というだけでは
毎回newするのが悪手かどうかstaticメソッドにするのがいいかどうかは誰も分からない
1. どういう選択肢があるのか考える(調べる)
2. それぞれのメリット・デメリット/トレードオフを理解する
3. 状況や目的に最も適している選択肢を選ぶ
こういう選択思考を繰り返すのが設計・コーディング時の考え方の基本
他にも選択肢あるから怠けず1.からやるのがいい
状況や目的をきちんと提示すればいいアドバイスが貰えるかもね

974:デフォルトの名無しさん
17/09/07 21:13:30.58 /528PZB30.net
もう実際にやってパフォーマンスモニタでログでもとってみりゃいーじゃん的な

975:デフォルトの名無しさん
17/09/07 21:29:02.21 EkI2HYTy0.net
パフォーマンス的に問題ないかを確認するのが目的ならね。

976:デフォルトの名無しさん
17/09/07 21:51:07.93 rUDH3LDL0.net
JSON のシリアライズで教えてください。
派生先クラスのインスタンスを、派生元クラスのシリアライザで処理できないでしょうか。
こんなクラスがあるとします。 (書き方については大目に見てください)
class Data;
class ItemData : Data;
これをこんなことは出来ない物でしょうか。
var data = new ItemData();
(new DataContractJsonSerializer( typeof( Data ) )).WriteObject( stream, data );
この場合なら、こんな風に回避できるのですが。
(new DataContractJsonSerializer( data.GetType() )).WriteObject( stream, data );
こんなクラスのインスタンスに (AssemblyDataのインスタンス).data = new ItemData(); でシリアライズしようとすると実行時にエラーになります。
class AssemblyData
{
public Data data {set; get;}
}
ネットで見た範囲では DataContractJsonSerializer は多態に対応していると書かれた記事もあったのですが、どうにもうまくいかず。
方法があるようでしたら教えてください。

977:デフォルトの名無しさん
17/09/07 21:51:39.39 f+yzxXuh0.net
EventArgsとか毎回newしてるし全然問題ないでしょ

978:デフォルトの名無しさん
17/09/08 00:31:12.15 VpThhHIU0.net
>>966
例外メッセージにどうすれば良いか書かれてると想うけど
> DataContractSerializer を使用している場合は DataContractResolver を
> 使用することを検討するか、静的に認知されていないすべての型を既知の型の
> 一覧に追加してください。このためには、たとえば KnownTypeAttribute 属性を
> 使用するか、シリアライザーへ渡される既知の型の一覧にこれらの型を追加します。

979:デフォルトの名無しさん
17/09/08 07:43:59.68 F2F5K69aM.net
newの質問したものです。
newにかかるオーバーヘッドの時間調査して、パフォーマンスを比較するのを怠ってましたが、やはりやってみないとわかりませんね。
やります。皆さん色々アドバイスありがとうございます。

980:デフォルトの名無しさん
17/09/08 10:31:16.74 y+E+UDjYa.net
いやいやいや、それはどっちかというと頓珍漢な言い掛かりの部類でアドバイスじゃないと思うよw
今年は何年よw
コンストラクタ呼び出しが時間的に高コストなんてよっぽど特殊なクラス以外ありえないよwww
µsオーダでもmsオーダーでもなく、たった1回/秒の呼び出しなんだからw
だから最初から言ってるように、普通は書きやすい方法で書いて何も問題ないよ本当。

981:デフォルトの名無しさん
17/09/08 11:43:10.75 b0hnqFHTH.net
いわゆる無駄な最適化の部類だとは思うが
まぁ自分で検証するというのれは良いことなのでどんどんやるといい

982:デフォルトの名無しさん
17/09/08 13:15:47.36 bqhsPJxB0.net
>>970
いや、気にしてるのはnew連発の穴ボコメモリだろ?
そのうちosがうまいことやってくれるのはなんとなくわかるがそのコストって具体的にどうよ?
ってのが本当に知りたいことだろ?
環境次第だしパフォーマンスモニタ動かしてみろよって話
3日も動かすと5秒だけ動作が止まるような動きをするってなったらそれが運用上許容できるのか?バグるのか?
それもやっぱりやって見なきゃわからないんちゃうん?

983:デフォルトの名無しさん
17/09/08 13:55:53.86 y+E+UDjYa.net
>>972
何がいやか分からないけど、だから最初から
高価な共有リソースを使う場合は別だと言ってるでしょ
今頃何を言ってるのかね
そういう例外的なケースを除けば、毎秒数個のオブジェクトを使い捨てにしたって
問題なんか起こらない。
そんなのXPの時代だってそうだから

984:デフォルトの名無しさん
17/09/08 14:00:38.33 0UBMFtit0.net
データベースへのコネクションを using で括ると
コネクションプールが機能しなくなる?

985:デフォルトの名無しさん
17/09/08 14:30:27.51 bqhsPJxB0.net
>>973
問題起こらないってどういう範囲で言ってるの?
何度も確保したnewの領域をosがどう処理するから問題ないって言ってるの?
仕様によっては問題起きるよ
1つはメモリ限界ギリギリまでガベコレしないときは定期タスクの動きを止めてメモリ処理するよ
1分以上止まっちゃってたことあるよ

986:デフォルトの名無しさん
17/09/08 15:23:04.74 Ej7G00WUa.net
>>975
具体的にどうぞ。
君が問題が起こる具体的な一例を挙げればそれで話は終わる。
もちろん、極端な特殊例でなくどこでもありうるような一般的なものでお願いしますよ。
あのねえ、今はPC-98の時代じゃないんですけどw

987:デフォルトの名無しさん
17/09/08 15:38:29.56 bqhsPJxB0.net
>>976
は?
で?何が問題ないって?

988:デフォルトの名無しさん
17/09/08 15:40:34.40 bqhsPJxB0.net
とりあえずガベコレ動くときにプログラムの動作止まっちゃうよって1つあげてるよね

989:デフォルトの名無しさん
17/09/08 16:26:18.98 VL+fdMeQM.net
>>978
すぐに使い捨てるなら確実にGen0GCで回収されるから止まる原因になることはないよ

990:デフォルトの名無しさん
17/09/08 16:45:28.16 Ej7G00WUa.net
こっちは具体例上げるけど、もっと高頻度(例えば10回/秒とか)で
画面を更新する必要があるアプリなんてごく普通にあるわけで、
そういう場合、例えばGDI+なら、ペンとかブラシとかデバイスコンテキスト(普通は作るのはシステム側で
ユーザーコードじゃないけど)とか、描画ごとに使い捨てすることになるけど、
こんなのが問題を引き起こすなら使い物にならないよ。
実際.NET1.1の時代に今じゃ考えられないような貧弱なWin98のマシンで
そういうアプリをテストしたことあるけど、何の問題もなかったよ。
当たり苗だけどw

991:デフォルトの名無しさん
17/09/08 17:11:08.88 bqhsPJxB0.net
>>979
とりあえず解決した方法は
10分に一度程度で強制ガベコレ実行することで解決したよ
溜めるとガベコレの時間は長くなるっぽい
やってみた感じね
パフォーマンスモニタでもメモリリークしてる?ってぐらい増えてく
ガベコレが動くと解消される
でもそのとき10秒タスクなんかは動かない
小刻みに強制ガベコレを実行しておくとそれが解消される
そんな動きをしている
その動きをされると困るときに小刻みに強制ガベコレを実行する必要がある

992:デフォルトの名無しさん
17/09/08 17:14:12.49 bqhsPJxB0.net
これが問題があったときな
これを問題ないって言われちゃうとどう返していいかわからんけどね

993:デフォルトの名無しさん
17/09/08 17:19:26.30 bqhsPJxB0.net
ちなみに趣味でゲームも作ってるけど
頻繁に強制ガベコレを動かさないと
重いガベコレを実行されるときがある
ゲームでは多少重い動作をした程度なので問題にならないが
これを周期的にデータを収集するタスクを動かしてるときにやられると不味いときがある

994:デフォルトの名無しさん
17/09/08 17:23:06.63 dMUjO8jT0.net
だから具体的にどんなサイズのオブジェクトを
どういう頻度でインスタンス化したのか教えてくれないと
そういうどんくさい実装も可能だろうね
でも一般的な話じゃないよねとしか言えないんだよ

995:デフォルトの名無しさん
17/09/08 17:34:00.33 bqhsPJxB0.net
>>984
それがわかったところでだからどうなの?
何がしたいん?

996:デフォルトの名無しさん
17/09/08 17:36:30.75 bqhsPJxB0.net
まあ、今回の件がどうなのかパフォーマンスモニタで測ってやってみんのが一番いいよね
そのアプリが連続実行される要件に合わせてって話だけど

997:デフォルトの名無しさん
17/09/08 18:02:05.09 mcCYyLIS0.net
>>980
描画ごとに使い捨てにするのはデバイスコンテキストのハンドルで
デバイスコンテキスト自体じゃないじゃないんじゃないのかな?
少なくとも一般的には
あとスレ立てヨロ

998:デフォルトの名無しさん
17/09/08 18:15:42.38 Ej7G00WUa.net
>>987
立てたよ
URLリンク(mevius.2ch.net)
少なくともマネージドオブジェクト(Graphics)は毎回使い捨てだと思うよ。

スレ立てのために久しぶりにブラウザで表示したらずいぶんデザイン変わってるんだな。
こんなくだらないことするのなら専用ブラウザなんか使わなくても
もっと使いやすいようにすりゃいいのに...
まあ、もう2ch亡くなっても誰も困らんか

999:デフォルトの名無しさん
17/09/08 19:40:16.45 wFGdJLM3a.net
nmecabに例の辞書入れて動かしてたら時々遅くなって何かと思ったらガベコレだった
サービスにぶっこんでて気付かなかった

1000:デフォルトの名無しさん
17/09/08 19:46:39.40 hqG5pPGU0.net
>>970
これがゆとりかぁ。

1001:デフォルトの名無しさん
17/09/08 19:50:01.67 KtAqYxG/0.net
質問者がいなくなった後の要件のはっきりしない議論とか次に持ち越すなよ
>>988
スレたて乙

1002:デフォルトの名無しさん
17/09/08 20:23:30.10 Ej7G00WUa.net
>>990
いや、君が人間的に幼稚なだけ。
どうでもいいけど、反論するなら事実で反論してよ

1003:デフォルトの名無しさん
17/09/08 20:26:02.00 Ej7G00WUa.net
つーか、今時毎秒オブジェクトを使い捨てしたぐらいで何か問題が起こると
真顔で主張するって、大丈夫かしらん。
普段どんなコード書いてるのかねw

1004:デフォルトの名無しさん
17/09/08 20:32:43.87 bIIt/y+7a.net
そもそもポーリング処理じゃなくて
ボーリング処理だからな
何が行われてるのかさっぱりわからない

1005:デフォルトの名無しさん
17/09/08 20:38:17.46 HXP4jN1T0.net
>>994
これは恥ずかしい
ポーリング(polling)とは、通信やソフトウェアにおいて、
競合を回避したり、送受信の準備状況を判断したり、
処理を同期したりするために、複数の機器やプログラムに対して
順番に定期的に問い合わせを行い、一定の条件を満たした場合に
送受信や処理を行う通信及び処理方式のことである。

1006:デフォルトの名無しさん
17/09/08 20:38:39.24 hqG5pPGU0.net
キミの用途はそうではなくても、常識としてnewやstringは遅いという認識を共有してくれないかな。
今時とか、普段とか、遅くて使い物にならなかった昔のJava屋のセリフそのままじゃないか。
どんな時代でもCPUのリソースは有限なんだよ。

1007:デフォルトの名無しさん
17/09/08 20:39:35.74 HXP4jN1T0.net
>>994
ボーリングってなんだよwww

1008:デフォルトの名無しさん
17/09/08 20:49:45.90 13cy/HVma.net
>>995
>>997
元のレスをよく見ろよ
>>957

1009:デフォルトの名無しさん
17/09/08 21:00:17.89 Ej7G00WUa.net
穴を掘るだけの簡単なお仕事です

1010:デフォルトの名無しさん
17/09/08 21:03:18.12 Ej7G00WUa.net
>>996
上から目線で頓珍漢なことを言ってるお型を見るほど滑稽な物はないなw

1011:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 52日 14時間 22分 33秒

1012:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch