X



ふらっと C#,C♯,C#(初心者用) Part130 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
0001ななしぃ♯ 転載ダメ©2ch.net (ワッチョイ 93aa-SrFS)
垢版 |
2017/07/18(火) 06:40:45.47ID:mH9qbH+m0
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part129
http://mevius.2ch.net/test/read.cgi/tech/1497000961/

■関連スレ
C#, C♯, C#相談室 Part94 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1492843013/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
0004デフォルトの名無しさん (ワッチョイ d896-1jjp)
垢版 |
2017/07/18(火) 11:05:24.85ID:QAHpb4DY0
情報サイト教えて下さい

例えば、
int型の連番配列全てを(for文,等を使わずに)文字列にしたり
一発で配列内の位置を特定して抜き出してから削除する(通常のコードとは違う方法)

便利な命令文とか教えて欲しいです。
0007デフォルトの名無しさん (ワキゲー MM6e-FZLt)
垢版 |
2017/07/18(火) 12:05:13.73ID:mSXXv0D2M
宿題じゃないの?
0009デフォルトの名無しさん (ワッチョイ d896-1jjp)
垢版 |
2017/07/18(火) 12:48:38.87ID:QAHpb4DY0
ビジアルC#(フォームアプリケーション)でトランプゲーム作ってます。
その為に、配列操作を簡潔にしたいと考えてます。

ボタン入力→コンソールで操作→コンソールから値を受けとる→画像出力
間違ってますか?
0011デフォルトの名無しさん (ワッチョイ d896-1jjp)
垢版 |
2017/07/18(火) 14:00:23.98ID:QAHpb4DY0
なるほど。

つまり、FlowSimulator見たいなソフトが作りたい!
って事です。
0012デフォルトの名無しさん (ワッチョイ c469-zKZC)
垢版 |
2017/07/18(火) 14:30:52.59ID:y43ZtB+J0
>>11
よくわかんねーからポーカーやろうぜ
プレーヤー2人ね
ジョーカー入れて53枚から5枚選べる?
もちろんダブっちゃ駄目よ
んでもう一人の分の5枚選べる?
一人目のカードを引いちゃ駄目よ
お互いにいらないカードを捨てて捨てた枚数補充して
お互いに捨てたカードとか相手が持ってるカード補充しちゃ駄目よ

(*゚∀゚)コール!花京院の魂をかけろ!

ここまでで何か行ったか?
なければ完璧だ!健闘を祈る!
0013デフォルトの名無しさん (ワッチョイ d896-wbEN)
垢版 |
2017/07/18(火) 18:07:34.46ID:QAHpb4DY0
>>12
自分で作れば?
0014デフォルトの名無しさん (ワッチョイ c469-zKZC)
垢版 |
2017/07/18(火) 18:26:15.96ID:y43ZtB+J0
>>13
自分で作りやすいように書いたのでもちろん作れる!
でも今時トランプゲームなんていらないや(・∀・)
んで必要な配列の処理は洗い出せたのかい?
思ってたんと違う感じになったんじゃないかな?
0020デフォルトの名無しさん (ワッチョイ d896-1jjp)
垢版 |
2017/07/18(火) 19:23:40.54ID:QAHpb4DY0
Dotfuscatorを検索したけど見つからない。
Visual Studio C# 2008でも付いてる?
0022デフォルトの名無しさん (ワッチョイ d896-1jjp)
垢版 |
2017/07/18(火) 20:00:39.41ID:QAHpb4DY0
何処にあるか分から無い。
0024デフォルトの名無しさん (ワッチョイ d896-1jjp)
垢版 |
2017/07/18(火) 20:13:24.32ID:QAHpb4DY0
>>23
フリーソフト公開したら、
わざわざ逆アセンブルして、もっとコウしろコードはこう書けとか沢山飛んで来る。
下手クソ、俺ならこう書くぞ! とか、キツイんだよ!
0026デフォルトの名無しさん (ワッチョイ d896-1jjp)
垢版 |
2017/07/18(火) 20:27:30.63ID:QAHpb4DY0
少し、混乱してるから、
一旦、落ち着く。

どうも、ありがとう。
0027デフォルトの名無しさん (ワッチョイ d896-1jjp)
垢版 |
2017/07/18(火) 21:05:16.22ID:QAHpb4DY0
参考にしたのですが、厳しいです。
Azure in microsoft Visual Studio 2017 || Anthony Cangialosi
https://www.youtube.com/watch?v=umdy7WXauz4

設定の方法を紹介しているサイトは豊富ですが、
使い方を詳細まで乗せているサイトが見つかりません。

やりたい事
Visual Studio C#2017(フォームアプリケーション)で入力したデータとモデルを指定して、
Azureへデータを渡してから、結果を受け取り。
C#内の表に格納してから、グラフを自動で作成する事はできますか?

できれば、詳しく説明しているサイトを教えて下さい。
それと、個人利用での値段も教えて下さい。
0028デフォルトの名無しさん (ワッチョイ ceac-hsux)
垢版 |
2017/07/18(火) 21:25:55.45ID:FK0nGZqt0
普通はソースごと上げても無反応なのに、たくさん指摘が飛んでくるなんてありがたい環境じゃん
無価値な指摘は無視すればいいし、有意義な指摘は参考にすればいいだけ

>>27
どこまでまわかってるのか、何がわからないのか具体的に
Azureのサービスは立てられてるの?表からグラフは作れてるのか、そこもわからないのか?
0033デフォルトの名無しさん (ワッチョイ df80-l+nO)
垢版 |
2017/07/20(木) 10:18:37.61ID:JuWBPChC0
ねーねー
Windows10でアクションセンター出すコマンドラインとかあるの?

探しきれなくて、もし出来ることがわかればC#の処理で開くことができると思うんだけど…


やっぱWinAPIなんかなぁ
0045デフォルトの名無しさん (ワッチョイ a70d-/jiT)
垢版 |
2017/07/24(月) 16:06:09.79ID:/7atmMFa0
WinForm使って3D表示するとしたら、何が一番手軽なんでしょう?
1枚絵を3D表示して色んな角度から見る程度なら、OpenTKでいいのかな?
ガッツリやるならWPFやUnityに移行した方が良いのかもしれないけども。
0047デフォルトの名無しさん (ワッチョイ a70d-/jiT)
垢版 |
2017/07/24(月) 16:34:47.01ID:/7atmMFa0
最初はBitmap画像を表示するだけだったんで、WinFormで作ったんです。
そしたら後で「これもうちょっと見易くする為に3Dで表示して」って言われたので・・・。
0051デフォルトの名無しさん (ブーイモ MMff-Czvo)
垢版 |
2017/07/24(月) 17:25:57.56ID:vlNeOTKMM
WinFormsにこだわるならElementHostでそこだけWPF使うのが簡単じゃないかな
DirectXを意識するような方法だとゲーム的な作法になるので経験ないならかなりハードルが高いよ
0066デフォルトの名無しさん (ワッチョイ 4769-I4wg)
垢版 |
2017/07/25(火) 18:46:59.69ID:IqsCpgPN0
CsvHelperでReadメソッド読んだら元の処理に差し替え出来た

ぐぐるとマッピング方式ばっかりなんだけどマッピングなんてしねーよボケがって状況なので
マッピング無し方式を見っけるのに時間かかった
0067デフォルトの名無しさん (ワッチョイ 7fa2-QK4i)
垢版 |
2017/07/25(火) 19:07:52.65ID:YE6zWRAr0
>>59
これなに?
OpenGLで高度なグラフィックコントロールができるってこと?
ってかLinux向けかな
0070デフォルトの名無しさん (ワッチョイ 8732-UCFQ)
垢版 |
2017/07/25(火) 22:02:34.46ID:Qr8ugTQa0
OpenGLをまともにサポートしていないIntelの古いオンボードビデオのPCがまだまだ生き残ってるから、
なるべく多くのPCで動かしたいアプリでOpenGLの採用は厳しいな。
0071デフォルトの名無しさん (ワッチョイ bf2a-ltyJ)
垢版 |
2017/07/25(火) 23:05:49.65ID:Voswq3dD0
いままでずっとVB.netでwinformアプリ作ってて
いい加減C#の勉強しようと思ったらnamespaceのせいでインデントが余分にいっこ右に行くんだけど
もちろんVBでも一見して見えないだけでNamespaceが宣言されてるのはわかってるんだが、インデント減らす方法ないかな
0075デフォルトの名無しさん (ワッチョイ 4769-I4wg)
垢版 |
2017/07/26(水) 10:02:54.88ID:0pf2o/yC0
TextFieldParserで思うんだけど
俺が不満なのは連続改行が処理されないことだけだったのに
このクラスは使えない認定せざるを得なかった
クラスの汎用性なんて幻想だよな
じゃ、仮にTextFieldParserの動作を今から変更ってきっとできないんだよな
少なくともそれを待っているよりはCsvHelperを使ったコードに変更したほうが話が早い
クラスなんて所詮こんなもんだよな
0076デフォルトの名無しさん (ワッチョイ a311-RAOX)
垢版 |
2017/07/27(木) 07:28:39.66ID:I7X5vmO00
ゲーム制作するためにc#を勉強しています。
確かな力が身につく「超」入門 シリーズのc#版が発売されたのですが、読まれた方はいませんか?
または他にプログラム初心者にオススメのc#の本などがあれば教えていただけますか?
0077デフォルトの名無しさん (ワントンキン MMda-VkdC)
垢版 |
2017/07/27(木) 07:34:29.37ID:SfFXzpg9M
少し古いがCLR via C#ってのがいいよ
細かいところまで嘘や誤魔化しをしないでしっかり書いてくれてる
いい入門書は初心者を煙に巻くような誤魔化しが少ない
俺はこれで入門した
0079デフォルトの名無しさん (ササクッテロロ Spb3-RAOX)
垢版 |
2017/07/27(木) 11:30:34.93ID:IIZaHOT6p
クラスとオブジェクトについてですが、クラス(雛形)に対して実体化されたものがオブジェクト(実態)と考えていいんですよね?

例えばRPGなんかでいうと

敵クラス
HP(変数)
攻撃力(変数)
HPがある数値を下回ると逃げる(関数)

スライム(敵オブジェクト)
HP 5 (メンバ変数)
攻撃力 3(メンバ変数)
HPが2以下になると逃げる(メンバ関数)

といった感じの理解で良いのでしょうか?また本によってはオブジェクトとインスタンスの説明が似ているので、違いがよくわかっていません。
0081デフォルトの名無しさん (ワッチョイ db6f-V1Wy)
垢版 |
2017/07/27(木) 11:50:59.30ID:2ra8985e0
オブジェクトはオブジェクト指向にかぎらず広い定義での「物 (変数に入れたり、引数で渡したりできる)」
でオブジェクト指向が出てきて、クラスを実体化したものがインスタンス

言い換えると、クラス(設計書)をインスタンス化(オブジェクトとして実体化)したものがインスタンスって感じでいいんじゃないかな
0085デフォルトの名無しさん (ササクッテロロ Spb3-RAOX)
垢版 |
2017/07/27(木) 12:10:08.71ID:IIZaHOT6p
凄い!短時間でこれだけ回答をいただきありがとうございます。
オブジェクトは設計図とか概念って考えた方がいいんでしょうか?
となるとさっきの敵クラスを継承したスライムクラスはオブジェクトというよりインスタンス?
0088デフォルトの名無しさん (ワッチョイ a311-5K3Y)
垢版 |
2017/07/27(木) 12:17:23.86ID:dUeJpjKg0
>敵クラスを継承したスライムクラスはオブジェクトというよりインスタンス?

class 派生クラス : 基底クラス{} // これはオブジェクト(クラス)

派生クラス 変数名 = new 派生クラス // これがインスタンス
0091デフォルトの名無しさん (ササクッテロロ Spb3-RAOX)
垢版 |
2017/07/27(木) 12:25:13.94ID:IIZaHOT6p
敵クラスもスライムも攻撃パターンもオブジェクトとして考えるみたいな感じがオブジェクト指向ですよね?(ざっくり)

c#はオブジェクト指向に基づいて作られているけど、オブジェクトという概念自体はあまり考えずともプログラムは組める、という考えでいいのでしょうか?
0092デフォルトの名無しさん (ワッチョイ a311-5K3Y)
垢版 |
2017/07/27(木) 12:27:22.18ID:dUeJpjKg0
>攻撃パターン
そこはメンバ関数じゃないかな

>オブジェクトという概念自体はあまり考えずともプログラムは組める、という考えでいいのでしょうか?
それでいいよ
正しいオブジェクト指向とは〜とか覚えなくていい 学者や思想家になるんでもなければ
覚えるべきなのは、C#での適切なコーディング
0095デフォルトの名無しさん (ササクッテロロ Spb3-RAOX)
垢版 |
2017/07/27(木) 12:37:22.98ID:IIZaHOT6p
ある本によると、
クラスを実体化したものをオブジェクトといい、実体化することをインスタンス化する、またはオブジェクトを生成する、などといいます。クラスはオブジェクトになってから初めて利用できるのです。

と書かれているのですが、実際にはクラスもオブジェクト指向で考えるとオブジェクトの一つだけれど、そこまで考えるとややこしいから無視してていいよ、って感じですかね?
0096デフォルトの名無しさん (ササクッテロロ Spb3-RAOX)
垢版 |
2017/07/27(木) 12:47:23.41ID:IIZaHOT6p
つまり

敵クラス(雛形クラス)
HP(変数)
攻撃力(変数)
HPがある数値を下回ると逃げる(関数)

スライムクラス(継承クラス)
HP 5 (メンバ変数)
攻撃力 3(メンバ変数)
HPが2以下になると逃げる(メンバ関数)

インスタンス化

スライムA、スライムB、スライムC・・・


でも言ってしまえば、これら全てオブジェクト。

という理解でよろしいでしょうか?
0099デフォルトの名無しさん (ワキゲー MMa2-1i8l)
垢版 |
2017/07/27(木) 13:12:19.93ID:xd52THukM
オブジェクトって言葉はふわふわしがちな印象だから
実際のプログラム言語ベースで考える場合とかは使わないほうが安全
C#ならクラス(構造体含む)とインスタンスで事足りる
0102デフォルトの名無しさん (ワッチョイ af69-t8sh)
垢版 |
2017/07/27(木) 14:19:50.11ID:XtIOKCvm0
リアルタイムゲームはすべてのパラメータをリアルタイムでエクセルで閲覧できるような構造で作らないとデバッグ間に合わない
縦軸インスタンス、横軸パラメータで
バグったら前後のデータを自動出力

オブジェクト指向(ツリー構造的な意味で)は合わないと思う
0103デフォルトの名無しさん (アウアウイー Saf3-qgku)
垢版 |
2017/07/27(木) 16:38:48.16ID:A+CF0/O/a
>>96
オブジェクトとは何か、みたいな哲学的疑問(笑)が気になるのは
よく分かるけど、そういうのは後回しで十分だし後回しにした方がいいと思うよw
たぶん、不毛なだけw

初心者は具体的なコード例を見て、どういうコードがどう機能するか、
何が実現できるのか、そういうところに集中した方がいいと思う
0107デフォルトの名無しさん (アウアウイー Saf3-qgku)
垢版 |
2017/07/27(木) 19:25:46.31ID:okcLdcsWa
オブジェクトはともかく、インスタンスなんて変な例えや哲学的な話じゃなくて、
もっと現実のコード寄りに「newすると作られて使えるようになる何か」
ぐらいにに理解した方がいいよw

しつこいけど、初心者にとって重要なのは「インスタンスって何?」みたいな意味論じゃなくて
インスタンスを作るコードをどう書くか、どう記述したらインスタンスのメンバーにアクセスできるか、
っていう機能主義的な具体論
0110デフォルトの名無しさん (ワッチョイ a311-RAOX)
垢版 |
2017/07/27(木) 22:08:18.79ID:I7X5vmO00
みなさんありがとうございます。>>96です。

皆さんがおっしゃるように、とにかくオブジェクトが云々と考えるより構文をたくさん打って感覚で覚えていくのが一番の近道なのかもしれません。

でも皆さんの話を聞いて少し頭の中が晴れてきました。
ありがとうございました。
0111デフォルトの名無しさん (ブーイモ MM17-goPp)
垢版 |
2017/07/27(木) 22:12:49.28ID:h5VgGO8jM
オブジェクト指向って本来はモジュール設計のベストプラクティスに現実世界のアナロジーをこじつけたものだから、
高尚な理論なんか無視して単なるモジュール化の一手法として導入すべきなんだよな
C言語を使っていれば自然とlist_add(&list, item)のようなパターンに行き着いて、
そこからのオブジェクト指向への発展はきわめて自然なもの
0112デフォルトの名無しさん (ワッチョイ 0fe4-Tef8)
垢版 |
2017/07/27(木) 22:30:42.28ID:aAe8+IMH0
>>95
とりあえずその本のタイトルと筆者をさらせ

オブジェクト指向ってのもいくつかの流派があるから、一概には言えないが
C#ベースで説明してるならその本は焼き捨てた方が良い
0114デフォルトの名無しさん (アウアウイー Saf3-qgku)
垢版 |
2017/07/27(木) 22:45:52.46ID:zjuaYXLUa
>>112
誰に向かって何を威張ってるのか知らんけど、>>95にあるような記述は
初心者向けのざっくりとした説明としてはまあ妥当なもの。

最初から重箱の隅つつく勢いで厳密に矛盾がないように書いたら初心者は理解できないよ。
ばっかじゃないの
0117デフォルトの名無しさん (ワッチョイ bedb-iPV5)
垢版 |
2017/07/27(木) 23:20:12.49ID:OcfywRta0
classって、共通の性質や特徴を有するものの分類とかいう意味みたい。
オブジェクト指向の言語は、大体がobjectを基本として、そこから色んな性質に分けていったものをクラスにして「名前をつけて」あげる。
オブジェクト指向でいうクラスは「分類整理のやり方、結果」と言えるんじゃないかな。

動物とか車とかに例えたりする説明の仕方もありだと思う。けど、分類整理のやり方という文脈がないと、継承とか派生、つまり上下・並列の概念が分かりにくくなったりしないかな。
いま目の前にライオンが2匹いたとして、同じライオンとして分類していいのか、タテガミの長さが分類のポイントなのかとか、片方は外敵から身を守るために火を噴くとか。ペンギンと比べてどの程度同じ分類が出来て、どの程度違いがあるのかとか。

まとめると、モノでも生き物でも何かしらの特徴とか性質を持っていて、特徴で分けたのがクラス。
オブジェクト指向とは指向、言い換えると、方向性としてはモノを「最小の単位」として扱うことを表している。元素や光といった、もっと根本的な最小になる要素もあるけど、そのレベルで扱おうとすると色々細かすぎたり、人が理解しにくいから。

かな?俺もよく分からなくなってきた。
個人的には日本に来るとき訳する際に、継承とかいう普段使い慣れない概念語じゃなく、「環境適応」とか「マイナーチェンジ」とかがよかったのかなと勝手に思ってる。
0118デフォルトの名無しさん (ワッチョイ a311-5K3Y)
垢版 |
2017/07/27(木) 23:32:44.71ID:dUeJpjKg0
>>117
後半に行くに連れて、段々変になっていってるぞ

最も重要な点は、
「データ(プロパティ)」と「振る舞い(メソッド)」を1つにパッケージする事だろう
一々現実世界の物体に例えて説明する必要は無い
0120デフォルトの名無しさん (ワッチョイ bedb-iPV5)
垢版 |
2017/07/27(木) 23:52:55.67ID:OcfywRta0
>>118
データと振る舞い、そこが理解できたらパッと先が開ける感あるんだけど、灯台元暗し的に回り道しちゃうよね。

質問者の人には、その疑問は忘れず、さりとて目の前の事をこなしてみて、たまーにまた疑問に立ち返って欲しいなあ。試行錯誤してるある瞬間に、パッと思い出してすんなり受け入れられる時が来ると思う。

オブジェクト指向だとかなんだとか、結局はどっかのオッチャンインスタンスが考えたものだろうし、完全な答えはないんだろうなぁ。
0121デフォルトの名無しさん (アウアウウー Sa9f-HJpE)
垢版 |
2017/07/27(木) 23:54:43.51ID:iQBWuJsZa
厳密な定義も元からないし実装によって変わるし
そもそもクラスベースじゃないものまである
設計段階と実装段階でも別のことがある
ひとくくりに語るのは難しい

でも意思の疎通はかなりできてしまうという曲者
0122デフォルトの名無しさん (アウアウイー Saf3-qgku)
垢版 |
2017/07/28(金) 00:24:58.46ID:EhJxrJBra
哲学的な話は初心者には意味ないって自分で書いておいてあれだけど、
あえてそういう話をすれば、オブジェクトっていうのは「〜であるかのように振舞う仮想機械」
だと考えるのが一番いいと思うよ。

従来の構造体+関数より分かりやすく仮想機械を記述するための仕組みがクラス。
仮想機械の組み合わせでプログラムを作りましょう、っていうのが(もっとも素朴な)オブジェクト指向
0125デフォルトの名無しさん (ドコグロ MM22-gqKx)
垢版 |
2017/07/28(金) 07:18:09.76ID:jwLN5n78M
>>117
> classって、共通の性質や特徴を有するものの分類とかいう意味みたい。
IT系(に限らんのかも知らんが)の用語は結構元の意味と違う使い方されてるから気を付けた方がいいよ
例えばネットワークカードでパケットキャプチャするためにPromiscuousモードって言うのがあるんだがあるときふとどういう意味だろう?って辞書引いて笑たし
https://dictionary.goo.ne.jp/ej/67118/meaning/m0u/
0127デフォルトの名無しさん (アークセー Sxb3-RAOX)
垢版 |
2017/07/28(金) 10:27:48.91ID:dynW8EUsx
皆さん、float、double、intの使い分けはどうされてますか?例えばドラクエのようなRPGでせいぜい4桁程度の整数しか使わない場合でしたら、intを使っておけば間違いはありませんか?
0129遊園地 (ワッチョイ be96-ywSo)
垢版 |
2017/07/28(金) 10:59:03.19ID:asrj9iFF0
bool a = true;
bool b = false;

bool c = null; // error CS0037: Null 非許容の値型であるため、Null を 'bool' に変換できません
bool d = 0; // error CS0029: 型 'int' を 'bool' に暗黙的に変換できません
0130デフォルトの名無しさん (ブーイモ MM17-goPp)
垢版 |
2017/07/28(金) 11:22:46.32ID:epWJgUcsM
>>127
普通に整数が使いたければint
アニメーションなどで込み入った計算をするときは無理に整数でやるよりdoubleの方が職人芸がいらなくて楽floatは精度の低さが問題になりやすいから描画などの最終的な出力以外には使わない方がいい
0136デフォルトの名無しさん (アウアウカー Safb-yXEd)
垢版 |
2017/07/29(土) 00:13:16.03ID:2gt99MhJa
doubleの演算って結構誤差でない?
0144デフォルトの名無しさん (ブーイモ MM17-goPp)
垢版 |
2017/07/29(土) 12:26:02.64ID:VZ2r/0rxM
double/frort(笑)の表現が2進数だからdicimal(笑)と違って誤差が…みたいな話をする奴は本質を理解してないよな
実数型は常に連続な近似値として扱うべきで、最終的には要求される精度に応じて必ず丸めて使うんだよ
decimalとは扱う問題の性質が違う
0161デフォルトの名無しさん (アウーイモ MM9f-MVxL)
垢版 |
2017/07/30(日) 15:06:34.85ID:bPp21s/fM
でもさ、ソモソモなんで型分けてるかと言うと
消費する容量が違うからじゃないの?

バリアント型って結構デカイとかないの?
例えばbyteで済むならbyteの方がよくね?
0162デフォルトの名無しさん (ワッチョイ af69-t8sh)
垢版 |
2017/07/30(日) 15:11:52.74ID:/FPaeL7f0
>>161
違うよ
型ってのはあくまで気分なんだよ
厳密に定義したらわかりやすいし
でも厳密にし過ぎると使いにくい

マシンみたいなPGにはこんなもん必要ない
メモリ上にはアドレスと実際の値
それしかない
そこになんのデータを入れてるかなんて知ったこっちゃない
0165(スププ Sd8a-BRPM)
垢版 |
2017/07/30(日) 15:42:06.12ID:P5Qwr2jWd
気分だな。unionとか使い出すともう本当どう扱いたいかの気分でしかない。
浮動小数点と巨大整数と、それらのテンソルの型作ったことあるけど、SIMD的な命令として流し込むためにバラバラにしたりしやすいように都合よく書いてた覚えがある。
0166デフォルトの名無しさん (ワッチョイ a311-5K3Y)
垢版 |
2017/07/30(日) 16:04:34.61ID:ZiKC4drW0
>>161
C#に限った話なら
byteはSystem.Byte構造体のエイリアスだし、
intはSystem.Int構造体のエイリアスだから
当然、消費するメモリ容量に差は出るが

大昔ならいざ知らず、現代のマシン環境において
そこまでメモリ容量を切り詰めて考えなきゃならん場面なんざ、そうそうねえよ
メモリを節約したきゃ、変数のスコープや生存期間を見直した方がいい
0176デフォルトの名無しさん (ワッチョイ a311-5K3Y)
垢版 |
2017/07/30(日) 18:24:40.67ID:ZiKC4drW0
パッと見で型が明確な場合は、varで問題無いと思ってる
varで訳が分からなくなるなら、メソッドを肥大化させ過ぎという意見も理解は出来る

しかし、それはそれとして
型名をきちんと書くのが手癖として身に付いてしまってるのだ
0179デフォルトの名無しさん (ワントンキン MMda-F/7S)
垢版 |
2017/07/30(日) 18:50:20.73ID:0Cb6dJF4M
型が目に見えたら何かメリットあるの?
全ての型のAPIと振る舞いを覚えてるならともかく普通覚えてないよね
public UnkoNagashi() {
Unko unko = unkodb.GetUnko();
unko.Nagasu();
unkodb.SaveUnko(unko);
}
というコードをみてなるほどunkoはUnko型なのかとわかる
でもUnko型がNagasu()以外に何をできるかは僕は知らない
そしてこの文脈ではNagasu()以外の振る舞いを知る必要もない
だったらそれって型名を書く意味あるの?
unkoがNagasu()できる事だけ知ってればいいよね
それはコードがコンパイルできる事から自明でしょ
0182デフォルトの名無しさん (アウアウカー Safb-yXEd)
垢版 |
2017/07/30(日) 19:06:43.78ID:/Qu7y73ua
>>174
デジャブかな?
もう何回みたことか。。つーか毎回言われてると思うけどカーソルあてるのそんな面倒か?
0194デフォルトの名無しさん (ワッチョイ af69-t8sh)
垢版 |
2017/07/30(日) 22:47:13.08ID:/FPaeL7f0
>>191
結構あるぜ
でもここで考えて欲しいのは
そもそもvarなんて使わなければ当てる必要などないということ
当てなければ読めないソースと
当てなくても読めるソースのちがいしかない
0199デフォルトの名無しさん (ワッチョイ af69-t8sh)
垢版 |
2017/07/30(日) 22:57:14.29ID:/FPaeL7f0
>>195
メソッド1個しか読まねーわけじゃねーじゃん
じゃあ30万行のコードのプロジェクトがあって1万行もvarがあったら
1万回もマウスの素振りすんだぞオメー

単純に害にしかならないと思う
varを本来の型に1発変換できるリファクタリングができればえーけどね
0207デフォルトの名無しさん (アウアウイー Saf3-qgku)
垢版 |
2017/07/30(日) 23:22:03.74ID:FlO7tdYLa
またアルルハイマーどものが繰り言言い合ってるのか。

繰り言を楽しく感じる奴は比喩じゃなく本当に病気だからマジでまずは精神科で
診てもらった方がいいよ。これ本当にそう思う。
重症化してからではもう遅い。
0216デフォルトの名無しさん (ワントンキン MMda-F/7S)
垢版 |
2017/07/30(日) 23:35:35.52ID:RXgrd63BM
このスレ時々タイムスリップしたのかと思う時があるな
オープン化してるし万に一つマイクロソフトが死んでもC#は残るよ
マイクロソフトが死んでもメンテナは死なん
0221デフォルトの名無しさん (ブーイモ MM17-goPp)
垢版 |
2017/07/30(日) 23:45:42.69ID:brVl3K5IM
言語なんて結局は大企業のちょっとした判断であっという間に消えるよ
最近だとGoogleがKotlinをAndroidで公式にサポートすると言っただけでScalaコミュニティが一瞬で消滅したな
0230デフォルトの名無しさん (ワッチョイ bea2-ZO1u)
垢版 |
2017/07/31(月) 00:11:11.92ID:wJdn/lI60
2.0のコードレビューはさすがに草
技術者殺し過ぎ
0232デフォルトの名無しさん (ワッチョイ 0fcf-7WXr)
垢版 |
2017/07/31(月) 00:41:53.98ID:1WKiBOmM0
Youtuberヒカルが月収を明らかに!!おはよう朝日です出演
https://www.youtube.com/watch?v=RLZGrqQnnZc
第1回案件王ランキング!YouTuberで1番稼いでるのは誰だ!
https://www.youtube.com/watch?v=asF2wQ2xhjY&;t=61s
ユーチューバーの儲けのカラクリを徹底検証!
https://www.youtube.com/watch?v=FUSb4erJSXE&;t=504s
【給料公開】チャンネル登録者4万人突破記念!YouTuberの月収公開!
https://www.youtube.com/watch?v=Y7DAQ0RKilM&;t=326s
誰も言わないなら俺がYouTuberのギャラ相場を教えます
https://www.youtube.com/watch?v=E4q-vaQh2EQ&;t=118s
YouTuberになりたいのは馬鹿じゃない!YouTuberになる方法
https://www.youtube.com/watch?v=Fr0WXXZRMSQ

最高月収5000万円だとさ。年収じゃなくて「月収」な
おまえらもyoutubeに動画投稿したほうがいい
顔出したくないならラファエルみたいに仮面かぶればいい
手っ取り早く視聴数稼ぐにはシバターみたいな有名ユーチューバーへの物申す系動画がオススメ
0238デフォルトの名無しさん (スプッッ Sdc3-3hTc)
垢版 |
2017/07/31(月) 12:34:38.89ID:l4LMfIaPd
MSもプロジェクトによっては
newみたいな明示的なとき以外var使うなって言ってる
まぁこの辺は好みもあれば運用するプログラマのレベルによるね
底へばかりならルールは厳しくせざるを得ない
0264デフォルトの名無しさん (アウアウイー Saf3-qgku)
垢版 |
2017/08/01(火) 02:08:50.05ID:yW2ASqGfa
まだやってんのか

>>262
>>250に反論してるだけなのは分かるが、そういう「訓詁学」に意味はない。
だいたいその文章はちょっとおかしい。
コンパイラに型が分かるなら"clear"じゃないかって言われたら反論できないでしょ。
0265デフォルトの名無しさん (アウアウイー Saf3-qgku)
垢版 |
2017/08/01(火) 02:29:23.89ID:yW2ASqGfa
っていうか、いい加減論点整理して終わりにした方がいいよ。

(1) varが使える場面では全部varを使え。あるいは使って問題ない

(2) var容認だが明示的に型を書いた方が分かりやすい場万もあるので、
情況によって柔軟に使い分けるべき

(3) varを使うと可読性が落ちるので一律禁止


なんか誤解してるのがいるとしか思えないが、var使え論者(というかC#プログラマの大半)の立場は、
一部のバカを除けば恐らく(2)だと思われる。

varによってむしろ可読性が落ちるケースなんか存在しないと思っている人間は、おそらくむしろ少数派。

その多数派の見解が正しいとすれば、var禁止プロジェクトは一定の合理性があることになる。
メンバーのvarを使うべき場面かどうか判断する能力が疑わしければ、
var禁止の方が多少コスト増であったとしても少なくとも安全だからだ
0268遊園地 ◆OM5/jtEIXw (ワッチョイ be96-FEN5)
垢版 |
2017/08/01(火) 08:50:27.72ID:CTbyL2210
C# 難しい
0270デフォルトの名無しさん (ワッチョイ 4bed-V1Wy)
垢版 |
2017/08/02(水) 14:06:29.12ID:/Yd2n8P20
初心者すぎて恥ずかしいんですがVisualstudioのC#でLINQをつかいAccessのDBにアクセスしようと考えています。
そこでLINQという項目をVisualstudioで探しているんですが見つけることができません。
どこを探せばよいでしょうか?
0280デフォルトの名無しさん (ワッチョイ da91-V1Wy)
垢版 |
2017/08/02(水) 21:36:57.94ID:L+93Eq5i0
用途によっては MDB 使うよ
(複数端末からアクセスしない、データサイズが知れてる等)

dbOpenTable で開いてインデックスにジャストミートした使い方だと
とにかく速い。べらぼうに速い

Access で簡単に読み書きできるのも素晴らしい
0294デフォルトの名無しさん (アウアウイー Sa29-tw3x)
垢版 |
2017/08/03(木) 21:01:13.46ID:eLAt0wVza
また始まったよ
質問者叩いてる奴こそ>>1のテンプレを「基本から見直せ」バカが。

俺はもともと「ふらっと」スレの存在意義なんか認めないけど、
こうやって質問者叩いてるバカに限ってスレ統一しろっていうと反対するのな
0297デフォルトの名無しさん (ワッチョイ 4d9d-VahU)
垢版 |
2017/08/03(木) 21:06:50.15ID:Wy5AX0em0
それは君がこのスレを便所だと思っているから言える発言であって
便所に住んでる人からしたらここが自分の部屋なんですよ

スレ民は自分が便所に住んでることを思い出してください
0298デフォルトの名無しさん (ワッチョイ 4d9d-VahU)
垢版 |
2017/08/03(木) 21:09:58.25ID:Wy5AX0em0
>>296
それはおかしい
彼はここが便所であると思っていて
ヤジは飛ばせど、関わりあいたくないと考えているのだから
質問には答えないし、そのつもりも無いハズだよ
答えるのはあくまでスレ民の仕事だと
0307デフォルトの名無しさん (ワッチョイ 5723-FJki)
垢版 |
2017/08/04(金) 21:32:08.81ID:eXZebYv+0
つい最近C#を学習し始めた者です。
null演算子について質問させてください。

null条件演算子/合体演算子を解説しているサイトや書籍に
下記のような両者の併用が紹介されていたのですが、
良く理解できませんでした。

result = a?.xxx ?? b

a.xxxのnullチェックは合体演算子がやってくれているように見えるのですが、
何故a.xxx自体にも条件演算子を設けているのでしょうか?
合体演算子だけを利用した場合とどのように違うのでしょうか?
0323デフォルトの名無しさん (ワッチョイ 3f32-aBMt)
垢版 |
2017/08/05(土) 01:07:52.45ID:L80K1fJH0
>>317
よくある処理の割に記述が長くなるから、簡潔に記述出来るように追加された文法だし。
記述が減ればそれだけバグが入り込む余地が減るし、慣れれば等価コードより読みやすい。
0328307 (ワッチョイ 5723-FJki)
垢版 |
2017/08/05(土) 02:25:47.56ID:a3wHtGnJ0
皆さんレスありがとうございます。

>>309
>>310
なるほど!
仮に>>307の式を合体演算子だけでやると、
a.xxxのnullはチェックできてもa自体のnullは検知できないから
aがnullだと例外になってしまうという事ですね、やっと理解できました
0331デフォルトの名無しさん (ワンミングク MM1b-i7eW)
垢版 |
2017/08/05(土) 08:28:33.27ID:d5W5Muf+M
自分が使う機能を他人が使えない方が悪いと考えるタイプの人間
自分が使えない機能を使う他人の方が悪いと考えるタイプの人間
どっちもどっちの気がするけど
チームや会社の成長や将来性を考えると前者の方がいいよね
後者が群れると互いの足の引っ張り合いになって永遠に停滞する
0336デフォルトの名無しさん (ワッチョイ ed7f-dE0h)
垢版 |
2017/08/05(土) 11:20:19.76ID:POjfJmBG0
うちの親戚の子供がそうだった。
生まれたときからウォシュレット付きの洋式便所だったからウォシュレットがないところは嫌がるし、、
和式にしゃがむこともできない。たぶんボットン便所なんて怖がって近寄らない。
0339デフォルトの名無しさん (ワッチョイ 7b91-dE0h)
垢版 |
2017/08/05(土) 11:43:09.69ID:YGVZb4Ys0
言語仕様は知らねー方がバカなんだよ
例えばExcelに入った商品リストの合計額調べるとき
・SUM関数使う
・セル1個ずつ選択して足す
・電卓で1個ずつ計算して記入する

どのレベルに合わせるべきかってことよ
SUM関数なんてExcel関数知らんとわからんやんセル一個ずつ足せって言うバカいるかって話
データがそもそもExcelじゃなくて紙ベースデータみたいなときはしゃーない電卓で計算するがの
0340デフォルトの名無しさん (ワッチョイ eb9d-3aaz)
垢版 |
2017/08/05(土) 12:12:37.78ID:FiPcVS8O0
>>307,309
より厳密には
result = ((a != null) ? a.xxx : null) ?? b;
と等価。三項演算子使わないとこうかな?(よく確かめてない)
if(a != null)
{
var temp = a.Value;
if( temp == null)
{
result = b;
}else{
result = temp;
}
}else{
result = b;
}

xxxがプロパティやメソッド呼び出しなら、複数回呼ぶと遅くなったり副作用があったりする可能性がある。
あと、スレッドセーフにも関わってくる
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/null-conditional-operators

MSDNにも書いてある
A?.B?.C?[0] ?? E
とかをパフォーマンスやスレッドセーフを考慮して妥当に展開すると十行では収まらないコードになる。
構造からの取り出しの場合同様の処理が連続する可能性も結構あってnullチェックで埋め尽くされるのでNull条件演算子は使えるなら使うべき
0344デフォルトの名無しさん (アウアウウー Sa1f-gAma)
垢版 |
2017/08/05(土) 14:09:36.65ID:QMwZUMGFa
?演算子の後にドット演算子が来ているようだし

単体で?だと三項演算子とかぶるからMSは ?. と ?[ (?[ ] ではない)の二つを
null条件演算子と呼んでいる

充分気持ち悪い
0347デフォルトの名無しさん (アウアウイー Sa29-9Sud)
垢版 |
2017/08/05(土) 18:41:13.40ID:JI4Kw2jEa
UI部をバージョン依存にして
中の処理をバージョン非依存とかに
する造りじゃないと駄目だな

同じc#で作ったものすら移行できないのは俺らのせいじゃなくて言語作ってる奴が馬鹿なんだから
0350デフォルトの名無しさん (ワッチョイ b361-/FH4)
垢版 |
2017/08/05(土) 20:04:55.97ID:jKU+//lw0
C#2.0で作ったプロジェクトとソースなら現行のものでビルドしたら問題なく動くんだが
初心者スレで間違った情報広められても困るし業界談義は他でやってもらえないかな
0356デフォルトの名無しさん (ワッチョイ 2b19-/FH4)
垢版 |
2017/08/06(日) 13:00:00.86ID:BrCgX9l20
元MSだった奴がいってたけど

VS2010当初でも開発に2,000人関わってたらしいよ。


旧バージョンを使って次のバージョンを作っていたとか

VS2010でVS2015といった具合
0357デフォルトの名無しさん (ワッチョイ f7f4-FEhw)
垢版 |
2017/08/06(日) 22:21:19.12ID:KuiVNrm90
SharpDevelopを使ってとあるソースを開いて、ビルドしたらNewtonsoft.Jsonが無いよ、と。

SharpDevelopに組み込まれてるNuGetでNewtonsoft.JsonをインストールしようとしたらNuGetが古過ぎてインストールできません、と。

NuGetコマンド単体の最新版を落としてNewtonsoft.Jsonパッケージを導入した。
でもビルドするとNewtonsoftっていうNamespase知りません、みたいなエラー(CS0246)に。

パッケージがGACに入ってる必要があるの?と思ってGacutil.exeを使おうとするも、Visual Studioにしか入ってないっぽい。
でも諸事情でVisual Studioはいま使えない。

何とかSharpDevelopでビルドを通したいんです。何が足らない || 間違ってるのでしょうか?
0363デフォルトの名無しさん (アウアウイー Sa29-tw3x)
垢版 |
2017/08/08(火) 20:37:03.55ID:huw00Yx4a
>>362
書いた人に聞かないと分からないでしょ

まあ、推測だけど、たぶんクラスAと一緒にしか使われない、
従属的なクラスBがあったとして、BをAの内部クラスにしたら
そういう従属的な関係が分かりやすくしたいという意図なんじゃないか。

たぶん今時の流儀じゃないと思うけど、.NET 1.0の時代からあるWindows Formなんか
そういうのいくつかあった気がする
0364デフォルトの名無しさん (ワントンキン MM73-op1F)
垢版 |
2017/08/09(水) 11:25:35.60ID:eM0BjlR2M
Formクラス1つに対応するビジネスロジッククラス1つを作ること
0個でもだめだし2以上でもだめ

っていう頭のおかしいコーディング規約を押し付けてきたバカSEがいて
そのアホくさい制約を回避するために内部クラスを多用したことがある
0369デフォルトの名無しさん (ブーイモ MM5b-X+Zd)
垢版 |
2017/08/09(水) 13:03:58.48ID:aEwDYdDeM
それを疑問に思わないレベルのバカPGばかり相手にしてるんだろうから仕方ない
PGの能力に全く期待しない前提なら悪くないルールだと思う
参考にさせてもらうわ
0370デフォルトの名無しさん (アウアウイー Sa29-tw3x)
垢版 |
2017/08/09(水) 13:21:54.76ID:25dY/z/Na
>>366
あと、内部クラスって外側の非publicのメンバにもアクセスできるので
(当然インスタンスメンバの場合は参照握ってる必要があるけど)
publicにはしたくないけどある特定のクラスにだけアクセスを許したい、
っていう事情もあった可能性もあるね。
0374デフォルトの名無しさん (ワッチョイ 9aea-J0Eq)
垢版 |
2017/08/10(木) 03:50:16.42ID:p+YoIwRr0
あるブランチの、あるブランチ(例えばmaster)との差分が
わかる方法ってないですかね?
今は別ディレクトリにクローンしてディレクトリの差分を見ています
0375デフォルトの名無しさん (ワッチョイ 9aea-J0Eq)
垢版 |
2017/08/10(木) 03:51:33.59ID:p+YoIwRr0
>>374
誤爆しました。すみません
0376デフォルトの名無しさん (ワッチョイ a332-W16a)
垢版 |
2017/08/11(金) 13:17:03.53ID:6/W84wqN0
あるファイルと削除しようとすると
「別のプロセスで使用されているため、プロセスはファイル XXXX' にアクセスできません。」と出ます。
vshost32.exe がファイルを掴んでいるので削除できないようです。

なのでVSを終了すれば削除はできます。
自分自身が掴んでいるファイルを削除するのはどうすればいいですか?
別にexeを作成して終了後に起動して削除するくらいしか思いつかないのですが・・・
0377デフォルトの名無しさん (ワッチョイ 4e61-aEKd)
垢版 |
2017/08/11(金) 14:04:52.87ID:es+zQmez0
>>376
「あるファイル」も状況もよくわからないが
プロパティからデバッグの項目開いて「Visual Studio ホスティング プロセスを有効にする」のチェックを外す
コード上で掴んだファイルがそのままとか言う話ならそのコード示して
0380デフォルトの名無しさん (ワッチョイ 4e61-aEKd)
垢版 |
2017/08/11(金) 18:38:14.54ID:es+zQmez0
>>378
それはこれだな
http://dobon.net/vb/dotnet/graphics/drawpicture2.html
ファイルパスを直接渡さなければいいのでストリームでなくてもバイト配列にしてもいい
わかりにくくなるが一行で済ませるには
(Image)new System.Drawing.ImageConverter().ConvertFrom(System.IO.File.ReadAllBytes(filename))とか
>>379
usingから外れると自動でDispose()されるから、それはC#と違う話じゃないかな
0383デフォルトの名無しさん (ブーイモ MM26-pYbA)
垢版 |
2017/08/11(金) 20:17:13.35ID:OJhNtZ6yM
クライアント側アプリでは一通りやりたいことできるようになったので、webアプリというか、サーバーサイド系に進みたいのですが、ASP.Netでお勧め書籍ありますか?
0401デフォルトの名無しさん (アウアウカー Sac3-zcd+)
垢版 |
2017/08/12(土) 06:18:07.36ID:cSGImtaOa
ASPの話題なんでちょっと聞きたいんだけど、linuxサーバー用のwebアプリ作ろうと思ったら.net coreでやるのとjavaでやるのとどっちが敷居低いかな?昔javaでちょっとやってたらマッピングやらがえらい面倒だった記憶あるんだけど
0403デフォルトの名無しさん (ブーイモ MM7f-KsLg)
垢版 |
2017/08/12(土) 10:17:36.21ID:tF3yiAv3M
>>399
今新しいのに移り変わったんだけど全然普及してない
OSSにいるライバル達が強すぎてびくともしてない
従来使ってた人が離れつつある

目新しさがないのが非常にまずい
今後新しいなにかを提案できなければ
早い時期に丸々消える可能性がある
0405デフォルトの名無しさん (ワントンキン MM8a-KsLg)
垢版 |
2017/08/12(土) 11:44:11.27ID:QUYKn6+oM
結局、今Webアプリを構築するなら、何がベストなんでしょうか?

クライアント側はjavascript一択ですよね。
サーバ側が、自分はweb formで止まっています。
.net coreなるものを調べてみればいいんでしょうか?
0409デフォルトの名無しさん (ワントンキン MM8a-KsLg)
垢版 |
2017/08/12(土) 12:03:21.67ID:QUYKn6+oM
>>407
イントラ環境で、DBを絡めた様々な情報を提供したいです。
目的によってGridViewで表示したり、グラフで表示したり。

C#縛りではないですが、VS2008時代にゴリゴリ作った経験があるので一番馴染みがあります。
0410デフォルトの名無しさん (ブーイモ MM7f-UpZk)
垢版 |
2017/08/12(土) 12:23:38.79ID:lZqlh0rmM
Node.jsとかでいいんじゃね
Coreも含めた今時のWebはWinFormsや昔のASP.NETとは全く思想が違ってて、コンポーネントというものが存在しない
MVC系なら何選ぼうが似たようなもんだから環境の整えやすさとかで選べばいいと思うよ
0415デフォルトの名無しさん (ワントンキン MM8a-ko2E)
垢版 |
2017/08/12(土) 13:22:56.93ID:rhDkRh0mM
Web初心者ならWebAPl + html + js + cssが簡単でオススメ
難解で無駄の多いサーバーサイドレンダリングは初心者には厳しい
厄介なWebフレームワークも最初は避けたほうがいい
0416デフォルトの名無しさん (スッップ Sdba-dbBP)
垢版 |
2017/08/12(土) 13:26:16.90ID:rTAthi/9d
>>415
初心者でWebAPIいきなり立ち上げさせるのか?認証はIdentityServer?
初心者だからこそフレームワークの流儀に従えば簡単にできるものを選択した方がいい
どうせイントラなんだし
0419デフォルトの名無しさん (ワントンキン MM8a-ko2E)
垢版 |
2017/08/12(土) 13:33:29.30ID:rhDkRh0mM
>>416
難しい事は考えなくていい
初心者の作るイントラサービスならCookie認証で十分
モデルバインディングとかテンプレートエンジンとかのあれこれ考えるより
素のhtmlとapiの方が素朴でずっとわかりやすいよ
0425デフォルトの名無しさん (ワッチョイ a37f-W16a)
垢版 |
2017/08/12(土) 13:43:45.21ID:3DdLvbHE0
>>415
SPAやjQueryなんかの動的DOM操作をサーバーサイドレンダリングに移行するとかの話じゃなければ
サーバーサイドの方が分かりやすいと思うがな。動的なページがほとんど無いってんなら話は別だけど。
0427デフォルトの名無しさん (スップ Sd5a-dbBP)
垢版 |
2017/08/12(土) 13:49:49.36ID:Y4jkwM06d
>>425
もともとVisualStudioでc#書いてたっぽいしね
サーバーサイドコンプレックスにまみれたフロントエンドエンジニアが、必死にHTML&javaScriptをアピールしているようにしか思えない
0433デフォルトの名無しさん (ブーイモ MMba-UpZk)
垢版 |
2017/08/12(土) 14:00:25.32ID:zLZ79VVHM
>>432
何がそんなに気に障るのが知らないけど、Web MVCへの移行を前提とした場合において、
入りやすいWeb開発プラットフォームの例としてNodeを挙げただけだよ
サーバーサイドレンダリングだけでいいなら情報の豊富なRailsやPHPの方がもっと入りやすいだろうね
君がその選択肢としてASP.NET Coreを推すなら否定するつもりはないし、俺を攻撃するよりお勧めの本やサイトでも教えてあげたら?
0435デフォルトの名無しさん (ワントンキン MM8a-ko2E)
垢版 |
2017/08/12(土) 14:48:14.56ID:rhDkRh0mM
フロントエンドとバックエンドを疎結合に保つほうが実装も保守も簡単だよ
サーバーサイドレンダリングはその点で劣る
ユーザーインターフェースはフロントエンドに責務を割り振る
サービスはrest apiでバックエンドに責務を割り振る
やることが明確で実装もシンプル、保守も楽チン
おまけに動作も軽快になってユーザーもにっこり
0436デフォルトの名無しさん (ブーイモ MM7f-KsLg)
垢版 |
2017/08/12(土) 14:51:23.91ID:tF3yiAv3M
次のASP.NET core 2.0で.net frameworkが捨てられるって
明言されてるから他に移るにはいい時期だと思うよ
海外の人達はどんどんASP.NETを捨てて新しい言語と別のフレームワークに移ってる最中

2.0が安定するのはリリースされてから1年後あたりだから本当に時期が悪い
0451デフォルトの名無しさん (ワッチョイ a3c0-aEKd)
垢版 |
2017/08/14(月) 19:11:43.71ID:Em96n+jc0
クライアント10台分のサーバ間送受信処理100回を並列で処理しようと考えているんだが、

Enumerable.Range(1, 10).AsParallel().ForAll(t =>
{ 
  Enumerable.Range(1, 100).ToList().ForEach(c =>
  {
    クライアントの送受信処理
  }
}

var taskArray = Enumerable.Range(1, 10).Select(t=>
 {
  return Task.Run(() => {  
    Enumerable.Range(1, 100).ToList().ForEach(c =>
    {
     クライアントの送受信処理
    }
}).ToArray();
Task.WaitAll(taskArray );

でそれぞれ実行すると実行順が明らかに違う理由を教えてください。
どちらも10台が順不同で各100回実行すると思いきや、なぜか前者は任意の1,2台だけ100回実行した後に残りを順不同で各100回実行して、後者は狙い通り10台順不同で各100回実行する・・・
0455デフォルトの名無しさん (ワッチョイ a3db-6KBD)
垢版 |
2017/08/15(火) 11:46:48.87ID:ReZpKiqA0
昔XPのころVS2010ExpressでC#で遊んでました
7年ぶりにまたいじってみようかと思い立ったのですが
最新版の無償版ってVS2017Comunityとかいうやつになるんですか?
これで2010時代のソリューション読み込めますか?
当時はC♯としかいってなかったはずだけど今はC#7というみたいですがずいぶん内容は変わったのでしょうか?
浦島状態ですみません。乙ちゃ〜ん!
0459デフォルトの名無しさん (ワッチョイ a3db-6KBD)
垢版 |
2017/08/15(火) 14:20:35.06ID:ReZpKiqA0
>>456-458
どうもありがとう!
なんとかインストールできました
とりあえずフォームアプリのビルドはできました
昔のソリューション読み込みまだ試してません
使い方思い出しながら頑張ります!
0461デフォルトの名無しさん (ワッチョイ fa19-aEKd)
垢版 |
2017/08/15(火) 22:19:09.81ID:4mEDxDEa0
スレ違いかもしれませんが
基本認証のID/PASSでしっかり認識される最大文字数はどうなっていますか?


桁数を増やせば安全かと思い 30桁オーバーで設定していますが
そもそも基本認証では、前方8文字までしか認識されない、といったブログがありました。
0462デフォルトの名無しさん (ワッチョイ be69-UL2x)
垢版 |
2017/08/15(火) 22:41:40.92ID:o38j9B5b0
webbrowser1のボタンを押す処理でhtmlにnameが無くても
foreach (省略)
{
      if(省略)
 {
// 要素をクリック
he.InvokeMember("click");
}
}
で今まで全て問題なく押せましたが、今日、この書き方で押せないボタンがありました。
he.InvokeMember("click");を実行しても何も反応しないということです。。
ここに居る人でこのような問題を解決した人は解決方法か解決のヒントを教えてください。
0487デフォルトの名無しさん (アウアウイー Safb-pfjY)
垢版 |
2017/08/16(水) 15:59:28.74ID:G1nlxVN/a
しょうもないことで荒れてまんなw

山形治生だと思ったけど、UNIX系の人が威張って他を見下してる
(今はそんなことないと思うけど)のは、昔メインフレーマーに同じことをされたからだって書いてたな
0497デフォルトの名無しさん (ワッチョイ 396c-oL0b)
垢版 |
2017/08/17(木) 16:54:44.90ID:fSYjKEAR0
プログラミング自体初めてで(3日目)、MSのチュートリアルをやってる最中です
https://msdn.microsoft.com/ja-jp/library/dd553230.aspx
このページの内容で質問があります

Listで並べたアイコン(text)をテープルレイアウト上に並べたラベルにランダムで次々に流し込むという内容ですが
次々に流し込むというのはテーブルレイアウトの次のマスへ順番に勝手に流れ込んでいくのですが
どこのマスへ…という指定がなくても、作動しています
で、そのテーブルレイアウトのマスを次々変えているのは簡単に言うと
foreach (Control control in tableLayoutPanel1.Controls)
でループしている間、その都度tableLayoutPanel1.Controlsを変更(適用?)して次のマスへ行く様に作動している
という認識で良いのでしょうか?
0498デフォルトの名無しさん (ワッチョイ 2b61-oL0b)
垢版 |
2017/08/17(木) 17:10:40.76ID:ur5EMh3c0
>>497
foreachは含まれる要素全てに実行される
tableLayoutPanel1.Controlsを変更じゃなくtableLayoutPanel1.Controlsに含まれる要素(inの前のControl control )にたいして実行される
デバッガでforeachの中にブレークポイント置いてcontrolの値がどう変わるか確認したほうが分かりやすい
0503デフォルトの名無しさん (ワントンキン MMd3-dsaK)
垢版 |
2017/08/17(木) 18:47:00.19ID:4gMV5zAaM
for文でデータスキャンしながら、不正データを除外するPGを
C#で書いて、SharpDevelopでVB化したら正常に動作しません。
同じ事が出来るっていう人は嘘つきだと思います。
0505デフォルトの名無しさん (ワッチョイ 2ba2-oL0b)
垢版 |
2017/08/17(木) 19:51:20.19ID:r/967Sma0
外部のアプリ(EXEファイル)を別プレセスで複数実行させるのどうやんの
0507デフォルトの名無しさん (ワッチョイ 2ba2-oL0b)
垢版 |
2017/08/17(木) 20:07:52.35ID:r/967Sma0
>>506
天才
インスタンス化したかったんだありがとう
0508デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
垢版 |
2017/08/19(土) 05:38:22.41ID:pqlrWbIe0
タプルでコレクションの中身を書けばノイズが少なくていいかと思って配列に変換するコードを書いてみたら
なんか毒々しいものが出来たんだけどどうすれば改善できる?

http://ideone.com/nfbYcC
0511デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
垢版 |
2017/08/19(土) 10:19:25.53ID:pqlrWbIe0
new[]{ hoge, hoge } だと冗長やん?
(hoge, hoge) ならスクリプト言語並みにスッキリするから
科学技術計算かなにか向けに数値のリストを渡そうなんて時にはいいよね
一次元ならint[] Nums(params int[] nums) => nums; みたいなのを書けば
Nums(3,4,5)といった感じで可読性もバッチリだけど
問題は二次元になった時
new int[][]{
 Nums(1,2),
 Nums(3,4,5)
}
毎行Numsが出てきたら冗長すぎて耐えられない
どうしてもこうしたい
var hoge = NumArray2(
 (2, 3),
 (4, 5, 6)
);
int[][] NumArray2(params IStructuralComparable[] tuples) => tuples.Select(tuple => tuple.TupleToArray<int>()).ToArray();
0514デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
垢版 |
2017/08/19(土) 13:49:29.79ID:pqlrWbIe0
http://ideone.com/RUcYj6 速度はこれでだいぶまともになると思う
0516デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
垢版 |
2017/08/19(土) 14:32:05.62ID:pqlrWbIe0
>>515
1, 2, Delim,
3,4, 5, Delim

みたいに区切りを書くの?
それだとNum(1,2)みたいにするのと冗長さは変わらんでしょ
0518デフォルトの名無しさん (ワントンキン MMd3-hOer)
垢版 |
2017/08/19(土) 15:01:44.09ID:cYLfyEivM
遅すぎわろた

public struct TupleWrapper<T> {
public TupleWrapper(object tuple) { tupleOrValue = tuple; }
public T Value => (T) tupleOrValue;
public int Length => CountItemField() < 8 ? CountItemField() : 7 + GetRest().Length;
public TupleWrapper<T> this[int index] => GetItem(index + 1);
private TupleWrapper<T> GetItem(int i) => i < 8 ? new TupleWrapper<T>(GetItemField(i).GetValue(Tuple)) : GetRest().GetItem(i - 7);
private FieldInfo GetItemField(int i) => Tuple.GetType().GetField($"Item{i}");
private TupleWrapper<T> GetRest() => new TupleWrapper<T>(GetRestField().GetValue(Tuple));
private FieldInfo GetRestField() => Tuple.GetType().GetField("Rest");
private int CountItemField() => Tuple.GetType().GetGenericArguments().Length;
private object Tuple => tupleOrValue;
private readonly object tupleOrValue;
}

var t = (
(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20),
(11, 22, 33, 44)
);
var w = new TupleWrapper<int>(t);

for (int i = 0; i < w.Length; ++i) {
for (int j = 0; j < w[i].Length; ++j) {
Console.Write($"{ w[i][j].Value } ");
}

Console.WriteLine();
}
0520デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
垢版 |
2017/08/19(土) 15:40:55.40ID:pqlrWbIe0
>>517 矩形しか使わないわけないやろ
まあ一行の個数が決まってるなら普通にTuple指定すれば型安全にちゃちゃっと書ける
0522デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
垢版 |
2017/08/19(土) 19:50:47.56ID:pqlrWbIe0
たとえば1回目の実験では15人の被験者がいました
2回目では13人で3回目は20人でN回目はM人でしたと
一人分のデータには名前とか年齢とかいろんな型のデータが使われます
これを一気に処理しようとすれば一人分のデータの型は固定の2次元ジャグ配列になるよね
このデータを書く時にVisual Studioで書けば、データ型のエラーは即検知してくれるしデータを修正するときにもエクセルとか立ち上げなくて済むしJSONみたいな冗長な型式にして可読性を犠牲にしなくてもいい
別のスクリプト言語を実行するための環境を用意しなくても済むしその言語の変な仕様に足をすくわれることもない
いいことづくめでしょ タプルを使えばね
0527デフォルトの名無しさん (ワッチョイ 9391-jLVh)
垢版 |
2017/08/19(土) 20:34:08.67ID:xhyE7NbO0
Nが少ないなら高速処理要らないんだしファイル経由でいい
N多いならそもそもデータベースかファイル群として格納しとけっていうデータやね
数値計算で扱うデータではないよ
0528デフォルトの名無しさん (アウアウウー Sa85-JJVS)
垢版 |
2017/08/19(土) 20:34:56.03ID:zNHilmkoa
だからデータはソースじゃなくて外に出せよ
c#入門したてでファイルの読み込みできないのかもしれないけど
勉強したほうがいいぞ

最低でもcsvにしとけば他でも使いやすい
0529デフォルトの名無しさん (ブーイモ MM35-I7lA)
垢版 |
2017/08/19(土) 20:51:46.08ID:y3ZCFtJSM
なるべく細かく設計するならこんな感じだな
実験(実験ID, 実験日, …)
実験結果(実験ID, 被験者ID, 項目1の結果, 項目2の結果, …)
被験者(被験者ID, 氏名, 年齢, …)
1項目ごとに結果の値が複数個あるなら項目ごとに別々の実験結果テーブルを作ったしたほうがいいかもね
0536デフォルトの名無しさん (アウアウイー Sacd-4GJO)
垢版 |
2017/08/20(日) 00:32:23.71ID:ZcNe1uIUa
どっとも同じにしか思えないけどw
CSVで起こるトラブルは全部起こるんじゃないの?
セパレーターが違うだけじゃんw

ただ、TSVってクリップボード経由でエクセルに矩形(N列×M行)のデータ
貼り付けに使えるんだよね。
それ以外の用途で使ったことないなあ
0539デフォルトの名無しさん (アウアウイー Sacd-4GJO)
垢版 |
2017/08/20(日) 01:53:56.95ID:dZsjl021a
>>537
確かにカンマの方が頻度が圧倒的に高いのはそうだね

プログラマの端くれだからどうしても「例外的な状況でも問題を起こさないか?」
って視点で考えちゃうけど、現実論としてはそうかもしれん
0543デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
垢版 |
2017/08/20(日) 05:20:55.44ID:Z/sZ4AZQ0
だから言ってるだろ
ソースに書いたほうが何もかもいいんだよ
いちいち別ファイルにして読み込んで混乱してもなんにもいいことはないし
修正にも手間がかかる
仮想的にデータを修正して結果がどうなるか調べていって新たな実験のプランを立てたりもするのだから
デリケートでミスが多い型式にするのも可読性を犠牲にするのも何も合理的じゃない
ソースにデータを書いてはいけないというのはただの思いこみに過ぎない
0546デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
垢版 |
2017/08/20(日) 09:11:36.31ID:Z/sZ4AZQ0
>>544
もちろん
C#なら一瞬 なんならプロジェクト分ければそこしかコンパイルされない
0548デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
垢版 |
2017/08/20(日) 09:19:33.42ID:Z/sZ4AZQ0
もっと根本的なことを言えば、なぜこの世にスクリプト言語があるかと言えば
プログラミングの外側にスクリプティング 作ったライブラリをただ呼び出すフェーズがあり
その外にさらにデータを作るフェーズ これはプログラミング言語を使う必要もなく
データ記述に特化したアプリを使うことが多いわけだが
出来るものは全部C#でやったほうがいい Visual Studioはそれだけ優れた記述環境だ
ライブラリを呼び出す時のインテリセンスのサポートは圧倒的だし
データの型式エラーもリアルタイムに発見できる
言語自体の記述の冗長性の低さもタプルで一段先に進んだ
0549デフォルトの名無しさん (ワッチョイ 816e-I7lA)
垢版 |
2017/08/20(日) 09:25:57.99ID:02zgg1Cu0
こういう時期あるよね
俺も経験あるわ
君が言っているようなことは誰でもみんな一度は考えて試したことがあるんだよ
プログラミングのベストプラクティスは自分の考えでやってみて壁にぶち当たって初めて身につくものだから、君はそのままでいいと思うよ
0550デフォルトの名無しさん (ワッチョイ 994d-jLVh)
垢版 |
2017/08/20(日) 09:28:02.98ID:4v9fraNU0
こういう時期あるよね
俺も経験あるわ
君が言っているようなことは誰でもみんな一度は考えて試したことがあるんだよ
プログラミングのベストプラクティスは自分の考えでやってみて壁にぶち当たって初めて身につくものだから、君はそのままでいいと思うよ
0551デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
垢版 |
2017/08/20(日) 09:47:38.37ID:Z/sZ4AZQ0
自演はするのに書き込みにロジックはない
恥ずかしいなお前
0553デフォルトの名無しさん (ワッチョイ 816e-I7lA)
垢版 |
2017/08/20(日) 09:58:05.52ID:02zgg1Cu0
>>551
君の言っていることは理屈の上では正しいからな
教科書的な否定意見を述べることはもちろんいくらでもできるけど、君がそれを受け入れないことも分かってる
なぜなら俺自身がそうだったからね
これはプログラムというものがどういう状況で使われたりどういう理由で変更されたりすることが多いか、といった、
きわめて経験的な問題であって、演繹的なロジッで白黒付けられるような問題じゃないの
0554デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
垢版 |
2017/08/20(日) 10:16:08.57ID:Z/sZ4AZQ0
>>553
議論の目的は相手を言い負かすことではないから俺が受け入れるかどうかなどどうでもいいし
ロジックでは説明できないと言い張るのも全く論理的な態度ではない 少なくともプログラマーが取るべき態度ではない

>>552
データの管理をプログラマーがやらなきゃならなくなるって話か?
データを書いて管理するのもスキルが必要だしそのスキルを学べたならC#のデータ記述ぐらい学べる
プログラミング技術ではなくデータ書式を覚えるだけなんだから
それにこの方式なら自然にデータがバージョン管理されるから何か問題が起きた時に再現したりも簡単にできる
0556デフォルトの名無しさん (ブーイモ MM35-I7lA)
垢版 |
2017/08/20(日) 10:43:36.19ID:xUVeBm+tM
>>554
その使い方を他人に教えるのは少なくとも最初はお前の仕事なんだぞ?
VSのインストール方法、ソースの変更箇所や変更方法、ビルド方法、全部教えるの?
外部のスクリプトから毎回パラメータを変更して繰り返し実行したいときはどうするの? 実験データの処理なんかだとよくあるよね
毎回本体に手を入れるの? 他人にもそれを求めるの?
0559デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
垢版 |
2017/08/20(日) 11:29:10.12ID:Z/sZ4AZQ0
だからプロジェクトを分ければそこだけしかコンパイルされない
VSの使い方は別に難しくない しかもデータを書くだけなんだから使う機能はほんの一部

データほどバックアップが必要なものはないからバージョン管理するのも当然
上書きしたデータはしばしば必要になるがデータは消えたらまず戻らない
ソースコードの変更履歴なんてのは消えても必要なら書き直せばいいだけだからな

パラメータを変えながら繰り返し実行したいならC#で書けばいい
繰り返しになるがそこだけプロジェクトを分ければそこしかコンパイルされない
スクリプト層のように一方的に使う側は書き換えても何も他に影響を及ぼさない
データのように書き換えてもプログラム上のインターフェースが変わらないものも同じだ
0563デフォルトの名無しさん (アウアウウー Sa85-JJVS)
垢版 |
2017/08/20(日) 12:08:47.92ID:IkwItTHKa
>>559
だからこそ外に出したほうがいいんではないかと普通に思うんだけど
外に出しておけばほかのツールなどでも使えるし

馬鹿な初心者はなんで食い下がりたがるんだろうか?という疑問はいつか解消されるのか
0564デフォルトの名無しさん (アウアウイー Sacd-4GJO)
垢版 |
2017/08/20(日) 12:20:57.09ID:TOwE0eF8a
なんかしょうもないことで揉めてるなあ。
こんなの要件その他しだいのケースバイケースでしょ。

まさか文字列や数値のリテラルまで否定する人はいないわけで、
そういう感覚で複雑なデータをコードに直書きした方が好都合な場合もそりゃないことはないと思うよ。

いつでもどんな場合もそうした方がいいと言ってるならお馬鹿さんだけどさ
0566デフォルトの名無しさん (ワッチョイ f932-jLVh)
垢版 |
2017/08/20(日) 12:40:50.18ID:3qMRQsNA0
c#でjsonにシリアライズしたいんですが、キーは文字、値は文字と数字としたい場合
どのような型を使えばいいのでしょうか?

例えば、jsonの表記を以下のようにしたいということです。

{
"test": [
{
"a": "aaaa",
"b": 123456789,
"c": "ccc",
"b": "987654321,
},
{
"a": "aaaa",
"b": 123456789,
"c": "ccc",
"b": "987654321,
}]
}
0572デフォルトの名無しさん (ワッチョイ 5bc8-faiX)
垢版 |
2017/08/20(日) 15:36:32.78ID:Z/sZ4AZQ0
>>563
データを別の環境から使いたいならJSON.NETでも使えばいいだけ
しかしJSONは冗長だから管理には向かないが
CSVみたいなのも自分が何の値を触ってるのかわからなくなりがちだから難しい
だから元データにはC#&VSを使うべき

タプルのいいところはもうひとつあるな こっちの方が重要かもしれないが
コードでデータを書こうとする場合、データの型とプログラムに依存関係が発生してしまう場合がある
C#でデータを書くには型が必要で プログラムで処理するにも入力する型が必要
「プログラムは再利用するものだ」という観念があるとここで型を使いまわして依存関係が発生してしまう
プログラムで処理したい型に合わせて元データを書いていると、プログラムの方の仕様変更で型が変わっても元データをいじるわけにはいかず対応が難しくなる
もともとデータはデータであってデータの汎用性を最大にするためにも変更に強くするためにもプログラムと依存関係は持つべきじゃない
依存関係はコンパイルにも影響する
しかし同じ型を二つ作ってやりとりするのはめんどくさかった
(まあJSONやCSVを使える型に直すよりはずっと楽だが)

この問題はタプルで解決する
タプルの型が使いまわせるうちはそのまま渡せばいいし
使いまわせなくなったら必要な変換コードを書けばいい
0579デフォルトの名無しさん (ワンミングク MMd3-bETP)
垢版 |
2017/08/20(日) 16:01:29.91ID:dgrWF/1pM
>>572
素晴らしいアイデアだ
是非とも世界中に広めてくれ
ちなみにこのスレのみんなはもう君の素晴らしいアイデアは理解したから
別のコミュニティに行って啓蒙した方がいいと思うぞ
業界のデファクトスタンダードになったら業務にも導入するよ
0583デフォルトの名無しさん (アウアウイー Sacd-eC16)
垢版 |
2017/08/20(日) 16:18:08.23ID:zHhVJRDSa
>>581
せめて客と打ち合わせして
誰向けにどんな頻度で読み込むのか
相談しろよ
しかしやはりテスト工数とか超無駄
頼んでもいねー機能が入っちゃってるし
コードレビューやるとこだと
会議室静まり返るわ
0592デフォルトの名無しさん (ワッチョイ 2ba2-oL0b)
垢版 |
2017/08/20(日) 17:57:07.82ID:lAN4MCjV0
Linux出来ないってなんだよ
0603デフォルトの名無しさん (ワッチョイ b111-m0BB)
垢版 |
2017/08/20(日) 20:32:10.39ID:TNLMpcMk0
C#はバージョン毎に結構あれこれ追加されて常識が変わってくからな
最新バージョンを追い掛け続けてる人とそうでない人で、話が通じなくなる事もしばしば

俺も割りと4.0くらいで頭の中が止まってるかもしれない
0610デフォルトの名無しさん (ワッチョイ 2b61-oL0b)
垢版 |
2017/08/20(日) 21:38:30.65ID:woceXaSP0
>>609
たとえば画像データだと画素データだけでなくチャンネル数や各チャンネルの大きさ、縦と横の(特に横)の長さが必要になる
これだけで例えばバイト配列といくつかのintが必要になる
0611デフォルトの名無しさん (アウアウイー Sacd-4GJO)
垢版 |
2017/08/20(日) 21:53:44.36ID:9QhbSfl9a
>>610
全然適切な例になってない気が
それ、明らかにクラスまたは構造体にまとめるべきデータでしょ

まあ、一つの型にまとめたくない複数のデータを一つのメソッドから返したい、
なんて率直に言ってうんこの臭いしか感じないね。
0613デフォルトの名無しさん (ワッチョイ 9996-jLVh)
垢版 |
2017/08/20(日) 22:07:06.65ID:lGh3jxXl0
別の場所でも入力にも使うようならクラスなりで定義すべきだけど
なんちゃらResultとか名前を付けたくなるような
特定の場所の戻り値でしか使わないデータのまとまりはタプルって感じかなあ
0614デフォルトの名無しさん (ワッチョイ 61e3-jLVh)
垢版 |
2017/08/20(日) 22:09:47.01ID:PJX+MB9c0
一連のDBと入力の整合性チェックをまとめたとき
処理途中でとってきたDBの値を使いまわしたい場合とか

Result 処理途中でとってきたDBのDtoいっぱい = checkなんちゃら(画面入力.id, 画面入力.数量)

とかのためにクラスつくるのがなんとなくイヤで
タプルで楽したくなる
0619デフォルトの名無しさん (ワッチョイ b111-m0BB)
垢版 |
2017/08/20(日) 22:45:48.34ID:TNLMpcMk0
>>617
環境変えるとビルド結果のバイナリが変わってしまうかも知れない、て不安があるとどうしてもな

C#の話じゃないけど、Borland C++ Compiler(5.5.1)のコマンドライン版は問題なく使えるのに
後発の2006年版Turbo C++に含まれてる奴は、リソースコンパイラにバグがあってコマンドラインから呼ぶと正常に機能せずにしばらく頭を捻るとか
そういうしょーもない例も過去にある
0638デフォルトの名無しさん (ブーイモ MM35-I7lA)
垢版 |
2017/08/21(月) 21:28:45.58ID:g1AySmchM
>>637
MSのサーバーがやられてバイナリが感染する可能性を考慮すると
Windows UpdateもVS本体のオンラインインストールも、あらゆるダウンロード行為が何一つ安全でなくなるので、それは考慮しなくていいだろう
その上でNuGet特有のリスクは、第三者によるレビューなしに誰でもパッケージを登録でき、登録した本人であればいつでもそれを更新できること
例えばJSON.NETの作者がこっそりマルウェアを仕込んだらとんでもない被害が出るだろうね
その点についてMSが保証するのは他人のなりすましによる登録や更新が行えないことだけで、作者の人格を信用するかどうかはお前自信の責任
0647デフォルトの名無しさん (ワッチョイ 81e6-faiX)
垢版 |
2017/08/23(水) 00:34:13.58ID:LJ4nsAN90
以下のようなHogeクラス型を定義して、List<Hoge> hoges というリストがあるとします。
class Hoge{
public string Name{ get; set; }
public int Age { get; set; }
public int Point { get; set; }
}

この時、hoges の各リストのAgeやPointの合計を1行で取れるクールなLinqを教えてください!
foreachなどでくるくるするしかないでしょうか?
0656デフォルトの名無しさん (アウアウカー Sa1d-itr+)
垢版 |
2017/08/23(水) 18:41:09.25ID:Afml/4LQa
結局やらなきゃ忘れるしな
こうすれば出来るって頭の片隅にでもあればok
もちろん知ってるに越したことはない
0662デフォルトの名無しさん (アウアウイー Sa2d-w74m)
垢版 |
2017/08/24(木) 02:24:29.26ID:Pz57oiAha
うまく動かないときに
ループのときみたいに
ハイじゃあどうして第一要素にゼロが入ってるんでしょうか?
的な追い方ができない
いっせーのせ!
で動かして途中経過が皆無なのは辛い
0673デフォルトの名無しさん (ワッチョイ 86a2-2x4P)
垢版 |
2017/08/24(木) 21:46:31.96ID:mLP6maQg0
メモリに常駐しているプロセスって簡単に取得できますか?
0676デフォルトの名無しさん (ワッチョイ a511-Q+Jn)
垢版 |
2017/08/24(木) 23:46:42.82ID:gc1mfL3U0
もしかしたらすれ違いかも知れませんが気にせず質問させていただきます

先日パソコンが壊れました
電源をつけると5秒後に再起動を繰り返してしまいます
原因がわからないのですが
どなたか対応方法などご存知の方いたら教えてください
0679デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/25(金) 12:00:23.99ID:tShs1oZ90
>>676
OSは? 機種は古いの? 型番とかわかる?
5秒で再起動する直前の画面はどうなってる?
0691デフォルトの名無しさん (ワッチョイ 396c-2x4P)
垢版 |
2017/08/26(土) 00:27:43.45ID:8TG2nidm0
http://libro.tuyano.com/index3?id=1247003
このページにある
MyObject obj = new MyObject();
obj.name = "つやの";
obj.age = 123;
obj.printData();
MyObjectクラスを使うこの部分はなんといいますか?

また、obj を変えて複数の上記のような構成を作るとそれに伴いちゃんと表示は増えますが、
objに当たる部分を必要に応じて動的に増やすということは可能のなのでしょうか?
インスタンスを動的に増やす で検索しても見当違いなものがヒットしますので、自分の中で言葉が間違ってるとは思いますが

よろしくお願いします
0692デフォルトの名無しさん (ワッチョイ a511-7WPt)
垢版 |
2017/08/26(土) 00:28:34.42ID:c9f1oCv90
よくパフォーマンス云々言う奴が居るけど
C#使う用途でLINQ程度のオーバーヘッドが気になるのってどんな場合だよ

書きやすさ捨てても速度ほしいならC++でも使ったほうがいいんじゃないの
0701デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 07:45:43.39ID:+QB1TWiX0
大規模のプログラムを解読する場合にはどういう方法でアプローチしますか?
0704デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 08:45:58.12ID:+QB1TWiX0
Winform とWpfを捨てたら何がのこるん?
0706デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 10:27:41.65ID:+QB1TWiX0
WIN32だな
0707デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 10:29:06.43ID:+QB1TWiX0
>大規模のプログラムを解読する場合にはどういう方法でアプローチしますか?

これだけど、本質的を手短に説明できるちょっとレベルの高いひといる? 
0710デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 10:38:53.50ID:+QB1TWiX0
>708
バインドって意味不明なんだが、
TEXT = データ
って書くのと
TEXT ={ バインド データコンテキスト}
って書くのでどんなメリットがあるの? というか1000万個のデータある時に1000万個にバインド
できんでしょ。バインドできるのはその中の一個だから、データを選択しないといけないよな。
でボタンを押されたら、データを選択して、データコンテキストにほりこむんだろ。代り映えがないような
きがする。
0711デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 10:40:27.67ID:+QB1TWiX0
>>701
そう、その言葉をまっていました。そのリファクタリングを掻い摘んで説明してください。
0713デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 10:45:36.83ID:+QB1TWiX0
>711
自己解決した。
0714デフォルトの名無しさん (ワッチョイ ad6e-Fy2N)
垢版 |
2017/08/27(日) 10:46:17.35ID:J8/CoBlN0
>>710
実際、大したメリットはない
最近の流れとしては、Web分野でも一時期バインドが流行っていたけど結局はユーザー操作時の代入に回帰しつつある
所詮は「手作業で代入すんのめんどくせえ」ってだけの問題であって、バインディングはそれだけのために過剰な複雑さを持ち込みすぎている
0716デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 10:48:36.94ID:+QB1TWiX0
リファクタリングで
★継承を委譲に置き換える
 継承では基底クラスのすべてのメンバを、サブクラスに許さなければならない。
 基底クラスの一部だけの機能を利用する場合は、継承の代わりに委譲を使う。

これはどういう意味?
0719デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 11:00:37.70ID:+QB1TWiX0
>>714
デザイン(View)はアーティストの俺が書いて、「土方ロジックは知らん。お前等に任した」っていう時にはいいかもしれない。
しかしその場合にもボタンと同期してデータを切り替えないといけないよね。その仕組みってどうなってるの?
ボリュームを回すから、データはそれに合わせてかえてよねっていうようなこと。
0720デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 11:01:25.93ID:+QB1TWiX0
>>718
VB6をC#に変更するんだが、VBソフトを解読する場合にはどこから手をつける?
画面数が70程度、クラスが10個、標準モジュールが30個位ある。
とりあえずクロスリファレンスを作ってみようとおもってるんだが、何か方法論とかないかなーとおもっている。
そこでリファクタリングをするというのは一つの手ではある。
0721デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 11:04:21.15ID:+QB1TWiX0
VB6ってのは知らないかもしれないが、VBAと同じで標準モジュールというのは
グローバル変数で、これが大量にあるので難儀している。
0722デフォルトの名無しさん (ブーイモ MMf1-Fy2N)
垢版 |
2017/08/27(日) 11:05:21.87ID:GFDdydysM
>>716
お前の会社の経営が厳しくなり、無能なお前をリストラしてお前の業務を外部委託することになったとする
そのとき、外部の人間を社内に常駐させるか?、それとも社外に丸投げするか? ということ
社内とのやりとりが多い業務であれば前者の方がスムーズだろうけど、
そうでもないなら後者の方が安上がりだし委託先を後で変えることも容易で好ましいだろ
0724(スプッッ Sdca-Vrzw)
垢版 |
2017/08/27(日) 11:21:08.14ID:0sFxQlMgd
>>719
デザインセンター持ってる会社なら、ホントに分業出来るから楽だと思うよ。
ボタンと同期して中身変える、ってのは、ダミーデータ返す関数と、メソッドのスタブ最初に用意して、それを渡す。なかったら「くれ」って言ってくるし。
どちらも無意味な不幸の無いプロジェクトになる。
0725デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 11:21:43.63ID:+QB1TWiX0
>>722
分かり安い説明だが、愛がない。そこもかなり重要だと思う。ところでWPFって
やったことないのだが、やってみたい。
最初はVB6のフォームのコントロールのリストと位置を拾いだせば画面は自動的に変換できそうなので
そうしようかと思ったのだが、XMALでやるってのは難しいだろうか?
0726デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 11:25:19.91ID:+QB1TWiX0
>>724
そうだね。アーティストの俺には土方仕事を丸投げできるからかなり有利かも。
0728デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 11:49:16.29ID:+QB1TWiX0
>>仕様書が無いのなら動作確認して自分で仕様書書くところから

ソースを解読してその仕様書を書く手順を考えている。うまくコンパイルして動かすこともできたん
でソースを解読しつつ整理して、最終的に変換をする。
具体的には
整理
1.クロスリファレンスをだしてグローバル変数を整理
2.画面がやたら多いので手書きで書き直すのはとっても大変だ。
しかし殆どはパラメータの設定のような単純な画面なので、画面の書き換えはプログラムで変換できそうだ。
しかし内部のイベントロジックをどうするかだな。画面はC#でもVBでも好きなように変換できるが、ロジック
はC#に変更するのは正気の沙汰ではないな。
やはりVB.netに置き換えるべき。となるとやはりVB.NET Winform以外の選択肢はないのか?
0729デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 11:56:58.26ID:+QB1TWiX0
>顧客から要望聞いてSEが再設計して仕様書作るのが正しい

もともと正しくないところから出発しているので、正しい方法は取れない。唯一できるのは
自由に作れるということだけ。しかも動きさえすればいいというレベルの客。ただし.netで
作るというのが条件でソースも提出することになっている。C#でもVBでもWPFでも問題ない。
 大半をDLLにして、上っ面だけNETでもいい。
0733デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 12:16:29.66ID:+QB1TWiX0
平和だからね。
0734デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 12:18:52.83ID:+QB1TWiX0
>プロに頼んだほうがいいよ

頼んだのだけどやる人がいない。
0735デフォルトの名無しさん (アウアウエー Sab2-A9BZ)
垢版 |
2017/08/27(日) 12:21:18.06ID:8n2Hj3z6a
>>720
VS2008まではVB6⇒VB2008へのコンバーターがついてたので、
VS2008かVB2008 Expressをなんとか手に入れて、とりあえずVB2008に変換して
みたらどうかなと。

まあ変換精度は高くないので手直ししないとまず正常に動かないし、
返還後のコードはMicrosoft.VisualBasic名前空間とかVBランタイム関数とか
使いまくりなので、それをさらにC#で書き直すのはかなり大変だと思うけど
0736デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 12:31:29.70ID:+QB1TWiX0
>>720
それは調べてやってみたが、1時間かかっても変換できなかったよ。
一時間たってキャンセルしたら1kのLogファイルが残ってた。
多分簡単なものなら変換できるだろうと淡い期待はもっている。リファクタリングして疎結合にすれば
3つに分解できそう。
 IOコントロール
 DBアクセス
 画面
IOが厄介だなーとは思う。多分この部分がよくわからないのでプロは逃げ出す。
0737デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 12:35:37.88ID:+QB1TWiX0
>使いまくりなので、それをさらにC#で書き直すのはかなり大変だと思うけど

混在してつかえるし、VBのクラスはそのまま呼び出せるので不都合のある部分だけラッパーすればいいだけでは?
それならVBで書けよって話になるかもしれないが、追加部分だけでもC#にしたい。
0741デフォルトの名無しさん (ワンミングク MM5a-fQI7)
垢版 |
2017/08/27(日) 13:29:37.85ID:Ss/d45M6M
>>740
一般論的に言ってリプレースは最後の手段だ
少なくとも数ヶ月はリファクタリング、リアーキティングなど試せることは試した上で
それでも手に負えないと判断してからリプレースに着手する
いきなりリプレースはリスクがデカすぎる
しかしながら経験上VB6の移植は結局リプレースになることが多いんだわ
0742デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 13:33:01.79ID:+QB1TWiX0
>>738
確かにそういうばあいもある。モジュールが多いのが問題だけれどもクラスを使っているから、そんなに下手なプログラムではないね。
VB6でクラスを使っているとまあまともだね。
0744(スプッッ Sdca-Vrzw)
垢版 |
2017/08/27(日) 14:21:50.71ID:0sFxQlMgd
>>726
工業デザインの人に、アーティストと言うと鉄拳飛んできたイメージだが、今のデザイナーはアーティストはなのかな。
俺もデザイン系の単位も資格も持ってるけど、アートと思った事は無いなぁ。
0746デフォルトの名無しさん (ワッチョイ 0a11-xpGE)
垢版 |
2017/08/27(日) 16:30:03.45ID:QZuIwK0r0
VB6のコードを解読しないといけないアーティストw

システムの内側からじゃなく外側から整理して
ユースケース単位や機能単位でコードリーディングしていくのが効率的
0747デフォルトの名無しさん (アウアウエー Sab2-A9BZ)
垢版 |
2017/08/27(日) 16:47:16.97ID:UU3MXRkga
プログラム本体やシステム全体の仕様が分かってるならゼロから書き直した方が
結局早いと思うけどね。

そもそも今更C#でに移行するのは、将来手を入れる可能性があるからじゃないの?
だとしたら長期的なメリットデメリットを考えてもそうした方がいいよね。

「動いてるプログラムを触ってはいけない」ってのは個人的にはダメな人の台詞だと思うね。
それ、自分のコードを理解する能力が不十分だって語るに落ちてないか?
0754デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 19:20:19.44ID:+QB1TWiX0
技術的アプローチに対してアーティスト的アプローチもある。そもそも専門家が遣らないという
のは技術的に興味がない。もしくは打算的技術者なら経済的に見てもメリットがないということだ。
つまり儲からない。そういう結論がでている。

 しかしアーティストの見解は違う。アーティストにとっては技術とか打算とかの優先順位は
かなり低い。すべての仕事はどう料理するかがアーティストのアーティストたる能力の発揮し
どころだから、技術屋から見るとかなりリスキーであっても敢てやってみる。
0755デフォルトの名無しさん (ワッチョイ dd6f-M74o)
垢版 |
2017/08/27(日) 19:24:45.57ID:+QB1TWiX0
>>752
表面的な仕様というかパラメータの設定とか動作などの取り扱い方法は客先で大体はわかる。
しかしメカの細かい動作なんかの部分は一切分からない。動作検証は客先でやってくれる。
結果が正しいかどうかは客先でわかる。
0760デフォルトの名無しさん (アウーイモ MM91-1Eq8)
垢版 |
2017/08/28(月) 21:24:49.09ID:jkZMoX4aM
>>720
昔、なんかのツール使ってVB6を.NETにしたよ。
急には上がらないから2005にして2008にして2010だったかな。
段階的に変えていく。
それぞれの.NETstudio使う。
前のバージョンを上げられるよ。
2005から2010とかは確かできない。

で、最後にC♯にすればよくね?
0766デフォルトの名無しさん (ワッチョイ 86a2-2x4P)
垢版 |
2017/08/29(火) 07:50:29.80ID:se0bVMb80
前VB6を.NETに移行する案件あったなスルーしてよかった新人突っ込んだらしいし
配列要素の1始まりとか鬼門過ぎるVB6触ったこと無いが
0768デフォルトの名無しさん (ブーイモ MM2e-Fy2N)
垢版 |
2017/08/29(火) 08:13:07.45ID:KBcajP1UM
VB.NETの配列はX(N)で宣言するとX(0)〜X(N)まで確保される仕様だから、
VB6からの移植の場合はX(0)を無視すればインデックスはだいたいそのままで動くぞ
汚いといえば汚いけどこの仕様を決めた奴は有能だと思う
0778デフォルトの名無しさん (アウアウカー Sa85-PSHs)
垢版 |
2017/08/29(火) 20:53:58.30ID:Vnq3Ax6Ua
配列の要素数があれ?ってなる
0779デフォルトの名無しさん (ワッチョイ caea-dMKE)
垢版 |
2017/08/29(火) 21:20:52.33ID:BqQa7G9t0
>>768
ソースが出てこないが.Net化の際にゼロで統一するようにしたら
ベータ版の段階で世界中からクレームのフィードバックが沢山あったので
その折衷仕様になったはず。
0780デフォルトの名無しさん (ワッチョイ caea-dMKE)
垢版 |
2017/08/29(火) 21:23:35.54ID:BqQa7G9t0
ゼロで統一じゃないや。C系に揃えるってことでした。
ExcelのCellオブジェクトと関連させる場合は
1スタートto要素数=最終行or列で合う
0783デフォルトの名無しさん (ワッチョイ fe6d-EUPY)
垢版 |
2017/08/29(火) 23:45:49.74ID:Z8GIMLiK0
抽象クラスのoverride で、型を変えるような事はできるでしょうか?

以下のようなコードが書けるかなと思ったのですが
戻り値はあくまでList<object>でないとダメみたいなので
書く方法があればお教えください

public class hoge { }
public class fuga { }

public abstract class Base
{
public abstract List<object> GetData();
}

public class SubOne : Base
{
public override List<hoge> GetData()
{
return null;
}
}

public class SubTwo : Base
{
public override List<fuga> GetData()
{
return null;
}
}
0794デフォルトの名無しさん (ワッチョイ cd03-2Mp8)
垢版 |
2017/08/30(水) 13:29:51.66ID:flwVYOal0
一見>>785でよさそうに思えるが
よくよく考えると使い道が分からん
Base<hoge> と Base<piyo> は違う型になるので
それらを継承したクラス同士も違うクラスから派生しているっつーことで
統一的には扱えなくなる
差分プログラミングがしたいならそれでよいが
なら、Baseクラスのabstractの意味は何だ?
0795デフォルトの名無しさん (バッミングク MM9f-O9jT)
垢版 |
2017/08/31(木) 07:11:58.47ID:uXMS1+GuM
783ですが、抽象化したテーブルクラスを作って、テーブル単位で選択結果を返す具象クラスを作りたかったのですが、Dapperを使うのでメソッドの戻り値がList<T>となり戻り値の型が具象クラス毎に違っています

こういう例が無さそうということはアンチパターンやってるでしょうか
0797デフォルトの名無しさん (ワントンキン MM9f-+LVy)
垢版 |
2017/08/31(木) 07:53:46.13ID:5L4gV5sHM
>>795
interface IDao<TEntity, TId> {
TEntity ReadOne(TId id);
IEnumerable<TEntity> ReadPage(int pageSize, int pageIndex);
void Create(TEntity e);
void Update(TEntity e);
void Delete(TEntity e);
}
class FooDao : IDao<Foo> { ... }

これじゃいかんのか?
0798デフォルトの名無しさん (バットンキン MM67-O9jT)
垢版 |
2017/08/31(木) 18:48:22.38ID:RNa0QExKM
>>797
テーブルのみを扱うので同様の属性という意味で抽象クラス使ったのですが、インターフェイスで選択したデータを返す機能として定義した方が良いでしょうか

抽象とインターフェイスの使い分けに今ひとつ自信がなくて
0799デフォルトの名無しさん (ブーイモ MMff-9zQU)
垢版 |
2017/08/31(木) 19:00:57.90ID:knvUk5zeM
>>798
使い分ける必要はない
is Aだのcan Aだの言ってたのは昔の話で、今時はどうしても実装を継承する必要がある場合以外は基本的にインターフェースを使う
もっというと、実装継承のために抽象クラスを使う場合はインターフェース継承とは本来区別して考えるべきで、
インターフェース←抽象クラス←具象クラス
という継承関係にするのが理想
抽象クラスはあくまで実装の共通化のためのツールに過ぎない
0803デフォルトの名無しさん (ワッチョイ cfa2-X0kF)
垢版 |
2017/09/01(金) 05:13:10.52ID:JBM8M4Dg0
MariaDBってデフォで接続できたりする?
0805デフォルトの名無しさん (ワッチョイ cfaa-gHR8)
垢版 |
2017/09/01(金) 14:07:02.06ID:RTadbuNn0
インターフェースは、has-a、部品化。車とハンドル。
抽象クラスは、is-a、継承。車と消防車

継承は、クラスに親子関係がある。
非常に似ているもの同士

部品化は、全く異なるもの同士

DI は、XMLなどの設定ファイルから、クラスを自動的に作る、ジェネレーター
0808デフォルトの名無しさん (ワッチョイ cfaa-gHR8)
垢版 |
2017/09/01(金) 15:27:41.14ID:RTadbuNn0
スッキリわかる Java入門 第2版、2014

Javaの人は皆、この本で、オブジェクト指向を学ぶ。
というか、日本では、この本しか無い

だから皆、C#をやる前に、Javaから勉強する

オブジェクト指向の最初のクイズが、is-a, has-a の例題
0811デフォルトの名無しさん (ブーイモ MMff-9zQU)
垢版 |
2017/09/01(金) 15:59:59.83ID:olFLJFhOM
この人あちこちのスレに突如出現しては的外れで一方的な持論とともに書籍を紹介する変な人だよね
書籍宣伝のボットなんじゃないかという気もするけど、もし人工知能だとしたらかなり優秀だと思う
0812スッキリ厨 (ワッチョイ cfaa-gHR8)
垢版 |
2017/09/01(金) 16:39:36.84ID:RTadbuNn0
「たのしいRuby」「みんなのPython」とか、
掌田津耶乃の「はじめてのJavaScript」では、
オブジェクト指向の説明は、数十ページ

一方「スッキリわかる Java入門」では、250ページ!
他を圧倒してる

漏れは、10言語・数十冊以上は読んでる

本を読む順番は、
1. スッキリわかる Java入門
2. たのしいRuby
3. みんなのPython

C# なんかは、後の方
0816デフォルトの名無しさん (アウアウオー Sadf-G83I)
垢版 |
2017/09/01(金) 16:59:37.83ID:G1MJZtxwa
java,ruby,pythonの入門書に共通してるのが作って覚える系の本があまりない
javaはandroidのアプリの本が数冊だが出ているがandroidなんだよね
エミュでしか動かせなかったりイマイチ

そういう意味で入門書にはc#をオススメしたい
これならwindowsアプリが具体的に作って動かせるので絶対に初心者にはこちらのがいい
csvやxlsファイルの処理やDB接続の処理が書いてあったりするのもGood
0821デフォルトの名無しさん (ワッチョイ 832d-6h2J)
垢版 |
2017/09/01(金) 21:51:22.37ID:li9KR7ak0
UnityのためにC#もちょこちょこ勉強し始めたけど、Javaと大分似てるんだなこれ
本買おうと思ったけど、完全な新規向けのじゃなくて
言語仕様についてわりとがっつり書いてあるような本でお勧めってあります?
0825デフォルトの名無しさん (アウアウイー Sac7-b8Mh)
垢版 |
2017/09/01(金) 22:08:01.94ID:XixvX44ca
クラスの機能はできるだけ簡素にを守っていると
is-aでいられるのは本当に基本的なクラスだけになる
普通にやってると絶対has-aの関係になる

継承を有効に使えるのはほんの一部
0831デフォルトの名無しさん (ワッチョイ 0311-X0kF)
垢版 |
2017/09/02(土) 09:49:42.44ID:TQXuPiZd0
約一年ぶりにプログラミングをしようと思いC#を選らびました
学生の頃にJavaやCは学習したため参考書の購入にあたって相談があります
今はこの三冊から購入を検討しています

http://www.sbcr.jp/products/4797347081.html
http://www.shoeisha.co.jp/book/detail/9784798122205
http://gihyo.jp/book/2017/978-4-7741-8758-7

最後の一冊の購入はほぼ決めているのですが、上の二冊のどちらかを読了した後読もうと考えています
Cのポインタ、Javaのオブジェクト等は理解しているつもりですので、今後辞書のように使えそうな独習C#に傾いています

上記以外でも適切な本やWebサイトがあれば教えていただきたいです。
0835デフォルトの名無しさん (ワッチョイ 0311-X0kF)
垢版 |
2017/09/02(土) 10:47:06.25ID:TQXuPiZd0
>>832
出版日から見るに最新のバージョンには対応していないように見えます

>>833
ひとまずはコンソール上で動くプログラムを作ってみようと思ってます
後々はデスクトップアプリやUnityなどに手が出せるという理由でC#にしました

>>834
英語に疎いおかげで良書でも読めません・・
0837デフォルトの名無しさん (ワッチョイ 0311-X0kF)
垢版 |
2017/09/02(土) 11:08:34.82ID:TQXuPiZd0
>>836
最新版を追うなら本では厳しいということですね
目次を流し見してみましたが確かに入門には十分すぎる内容でした
ここで勉強してから本の購入を検討してみようと思います
0845デフォルトの名無しさん (ブーイモ MM1f-9zQU)
垢版 |
2017/09/02(土) 19:55:06.66ID:9/Pt0bz9M
>>844
小さなバージョンアップを繰り返すようになったからね
C#開発のメインストリームがWeb系のバリバリな連中の方に移ってしまって、
書籍の主な購買層であったドカタ系が完全に取り残されて新機能に興味を示さなくなってしまったのも大きい
0846デフォルトの名無しさん (ワッチョイ 63e6-2DHa)
垢版 |
2017/09/02(土) 20:56:25.71ID:tnM/ItCw0
>>831
独習とイディオム読んだ独学だけど、一通りの事はできるようになったよ。
api呼んでみたり、データベース連携したりね、
独学やったあと、イディオム読めばええんちゃう?
0847デフォルトの名無しさん (ワッチョイ f31d-X0kF)
垢版 |
2017/09/02(土) 21:24:01.88ID:RAK1J/Hs0
http://iup.2ch-library.com/i/i1846363-1504354345.png
このプログラムを作りたいんだけど
仕様が

・ルートフォルダ
手入力でディレクトリ先のパスフォルダを削除する事ができる
・参照
押してフォルダを選択してパスをルートフォルダのテキストボックスに表示

start
・クリックするとカレンダーが出てきて、そこから日付を選択
End
・start〜Endの期間の日付フォルダをまとめて削除できる

上記二つはできたけどstart〜endが分からん…
新人プログラマーで入ってまだ4日目なんですが
20時間以上やってるけど全くできない…
みんなこんなの本当にできるの?
入ってすぐ社内ではもう既に無能扱いされてますヾ(。>?<。)ノ
0852デフォルトの名無しさん (ワッチョイ 0311-X0kF)
垢版 |
2017/09/02(土) 21:50:00.25ID:TQXuPiZd0
>>842
C#に決まった由来は気になるので時間あるときにみてみます

>>843
となると遅かれ早かれ必要になりそうですね
学ぶタイミングが難しい気もしますが

>>844
もともとその用途で購入を考えてましたが周りの方が言う通り
ネットの恩恵に預かろうかと思います

>>846
参考になる経験談ありがとうございます
WEBの勉強で不足を感じたら独習→イディオムのように勧めていこうかと思います
0853デフォルトの名無しさん (ワッチョイ ffea-dgwg)
垢版 |
2017/09/02(土) 22:08:20.57ID:E5+eBi390
>>847
勉強の基本なんだけど。
「分からない」時にはなにが分からないかを列挙して、それをさらに細かい要素に分解していく。
分解して考えれば・調べれば分かるようになったら、それをひとつひとつ解決していく。

847 を読んでもなにが分からないのかこちらに伝わらない。
つまり自分でなにが分からないのか分かってないんでしょ。
もっと整理してみたら?

ちなみに新人というか数年程度のヤツにそんなたいしたことは求めてない。
きちんと適切な質問を出来るようになればそれで OK だと思うよ。(ちょー難しい要求だが)
特に1年目なんて、なにを聞いても許される二度とない重要な期間なんだから、それを有効活用しない手はない。
最悪なのは自分で抱え込んでなにも進まない状態だよ。
0854デフォルトの名無しさん (ワッチョイ ff11-BPzU)
垢版 |
2017/09/02(土) 22:11:52.21ID:9PaYDv7F0
>>849
今できることよりも
継続して勉強できるかどうかのほうがずっと大事
1~2年継続して勉強すれば周りのやつ全員追い抜けるよ

ただし基礎的な能力が高いやつに限るが
(論理的思考力、自然言語能力、メタ認知能力等)
0858デフォルトの名無しさん (ワントンキン MM9f-ysE7)
垢版 |
2017/09/02(土) 22:46:27.15ID:w/8WFstaM
無能な働き者に分類される人は自然言語に傾倒しがちだよね
ダラダラと長く曖昧でわかりにくい文章が数式なら僅かな記述で明確に表現できることもある
理解するのに時間がかかる難解な文章が図表なら瞬時に把握できることもある
もちろん自然言語を全て否定する訳ではないがバランス感覚は大事なんだな
自然言語はあくまでツールのひとつ
0859デフォルトの名無しさん (ワッチョイ 0311-nZMq)
垢版 |
2017/09/02(土) 22:52:16.04ID:o1ErZR2S0
最近、イディオム買って読んでるけど、この本読んでる方って多いんでしょうか?

独習C♯読んでから、独学で色々とプログラム作ってましたけど、
OOPの考え方とかまったく知らないでやってたもので、コードが散らかってます
staticおじさんになってたり、クラス分けても結局再利用しないような内容、関数コピペ
メインメソッドから分離してるだけで、メインメソッドに膨大な量書いてるのと大差無い感じです

再利用の仕方とか勉強する為にイディオム本どうかなって見ましたが、みなさんはどの様に覚えたんでしょうか?
0863デフォルトの名無しさん (ワントンキン MM9f-ysE7)
垢版 |
2017/09/02(土) 23:05:22.40ID:w/8WFstaM
>>859
再利用は出来れば良いね程度の気持ちで
クラス分けの目的は色々あるけど主に責務の分割な

例えばパソコンに暖房がついてたら嫌だろ
持ち運びもできず
夏場は邪魔になるだけ
暖房機能が壊れたら壊れてないパソコン部分もまとめて修理に出さないといけない
普通と勝手が違うから暖房の起動方法がわからない(セットのパソコンでコントロール?リモコン?)
パソコンを拡張したいけど暖房機能を壊してしまわないか不安になる
問題だらけだ

だからパソコンとエアコンに責務を分けようってわけ
これなら先に挙げたようなアホくさい問題が全部解決するだろ
0864デフォルトの名無しさん (ワッチョイ 0311-nZMq)
垢版 |
2017/09/02(土) 23:17:35.26ID:o1ErZR2S0
>>863
機能の分離でクラス分けすると今度は必要なクラス探すの大変になる感じですかね?
後はどこまで繋げてどこから分離するかも中々難しく感じます

例えばエアコンのコレクションを扱うとして、エアコンの寒暖房機能、温度検知機能、タイマー機能、設定
などエアコンの中を細かくするのが苦手なんですよね
自分がよく作るのは株価を扱うプログラムですが・・・
0865デフォルトの名無しさん (ワッチョイ 0311-Yonq)
垢版 |
2017/09/02(土) 23:22:10.23ID:Q8fEI/lK0
>>863
どうでもいいがテレビデオを思い出した

>>864
>中を細かくするのが苦手なんですよね
それはクラス設計つーより、要件定義の段階でないの
要件が明確なら、作るべきクラスも自然に決まって来るっしょ
0866デフォルトの名無しさん (ワッチョイ 636e-9zQU)
垢版 |
2017/09/02(土) 23:27:14.80ID:PfNbROPa0
>>864
オブジェクト指向設計の本質は、設計を人間の感覚に合わせることだよ
分けることを目的にしたらダメ
人間の直感は設計の指針として明確でわかりやすいし、
オブジェクトの単位が直感に合っている限りは破綻しない(というか、少々無理が出ても破綻したように感じない)
0867デフォルトの名無しさん (ワッチョイ e303-3JEm)
垢版 |
2017/09/03(日) 00:23:14.14ID:VHdSJmfv0
>例えばパソコンに暖房がついてたら嫌だろ

俺もそう思っていた時期があったけど
Skylake-XとVEGAの組み合わせだと真剣に暖房かもしれない
こういうのも出るし
https://www.apple.com/jp/imac-pro/

後、質問者に何か助言できるなら、オブジェクト指向はそんなに真剣にしなくてもよいよ
大事なのは手続き型プログラミングが
・データ構造
・制御構造
という二大要素で出来上がっていることに気づくこと
データ構造とアルゴリズムともいう
データ構造と制御構造をそれぞれ別々に思い描いて
その上で、データ構造と制御構造の両方を持つ「class」に分割するには
何処で切り分けたら一番「制御構造の見通しが良いか」を考える
大事なのは制御構造について意識することで、というのもオブジェクト指向でやると
データ構造の方は勝手にきれいになるから意識する必要はないのでね
C#のasync/awaitも制御構造をきれいに保つための仕組みだしね
最近の流行りというか、流れ、トレンド
0868デフォルトの名無しさん (ワッチョイ e303-3JEm)
垢版 |
2017/09/03(日) 00:28:40.22ID:VHdSJmfv0
なんであまりオブジェクト指向に肩入れしていると
この人はややこしい人だと思われる風潮
オブジェクト指向設計というのは
制御構造とデータ構造という二つのものを考えて
小分けにしてclassという一つのものにまとめる作業
と考えていいと思うよ
二つのものを綺麗に切って一つにして小分けにするのは
高度な作業かもしれないけど、十や百じゃなくて高々二つなんで
まぁ慣れです
0870デフォルトの名無しさん (ブーイモ MM67-9zQU)
垢版 |
2017/09/03(日) 00:57:51.36ID:ksmau7/rM
実装レベルの設計とドメインのモデリングの話がごっちゃになってる気がする
ドメインモデルはまず人間の感覚から入って、そこから実装に落としていく段階で制御構造の観点を入れていく感じだね
0871デフォルトの名無しさん (ワッチョイ 0311-nZMq)
垢版 |
2017/09/03(日) 01:05:30.75ID:8T0wjaPz0
ありがとうございます
OOPの人間の感覚に合わせる意識が大事であって、分けることを目的にしないってのは大事だなって思います
難しいですが・・・

そういう意味だと、プログラムを少し修正したい、機能追加したいって思った時にバグが出にくい、追加しやすい状態にしたいですね
OOPに拘りは特に無く、あくまでソース管理や生産性の向上が目標です
曖昧な目標なので、実現するための手段で手こずってますが

自分の作るプログラムは目的上、同じデータから色んな値を作ったり検証させるので、使いまわせるところは汎用性がほしいんですよね

毎回別のプログラム作るたびにプロジェクト作って一部関数使いまわし、既存プロジェクトのクラス参照で使ってますが、
いつの間にかプロジェクト別で関数が別物になってしまったり、参照クラスの仕様変更で他のプロジェクトに影響出たり、設計が大変なので・・・
0872デフォルトの名無しさん (ワッチョイ 23e5-ffya)
垢版 |
2017/09/03(日) 09:32:19.26ID:wl+VODG10
>>847
いまいるおっさんたちは就職する時点でアマチュアプログラマ歴10年以上だよ
新卒でプログラミング経験なしだと無能扱いされて当然

まずは答えを見つけて写経しろ
ペンでもキーボードでもいいから丸暗記するまで書き写せ
話はそれからだ

ちなみにベテランだったら30秒ぐらいで作るぞ
0874デフォルトの名無しさん (ワッチョイ 0311-Yonq)
垢版 |
2017/09/03(日) 09:50:38.93ID:evIIJ2cg0
高校から始めたから、新卒時点で10年以上では無かったな
大学から始める様な人もいるし、適当言い過ぎだろ

新卒未経験は流石に、採用されてもPGじゃなく別部署に回される気がするが
0875デフォルトの名無しさん (ワントンキン MM9f-ysE7)
垢版 |
2017/09/03(日) 10:30:41.79ID:QlhluFUqM
新人は研修する前提だから最初からそんなに高度なことはできなくてもいい

実験データのテキスト読み込んでデータベース化しましたとか
サークルのWebサイトをメンテナンスしてましたとか
論文書くために自力でLinux TeX環境整えましたとか
エロ画像収集ツール自作しましたとか
そういう学生らしい微笑ましいIT体験談を聞ければ充分
あとはやばそうな精神疾患とか障害がなければ合格だね

ただし
何にもしてこなかったけど興味と熱意はありますってやつと
エクセルでマクロ組んでましたをやたら強調する意識たかそうなやつ
プログラムは書かないけどITパスや基本情報をアピールするやつ
これは地雷なのでその場で不採用にチェックします
0879デフォルトの名無しさん (アウアウイー Sac7-X0kF)
垢版 |
2017/09/03(日) 11:53:04.09ID:0sJDT6fHa
オブジェクト指向はプロジェクトが大きくなるほどベストの設計は存在しないんじゃないかと思う
ベストを目指しベターを繰り返していくけど結局正解はないと思い知らされる
0880デフォルトの名無しさん (ワッチョイ 0311-Yonq)
垢版 |
2017/09/03(日) 11:55:32.51ID:evIIJ2cg0
成果物に問題がなくて、そこそこ保守性が良ければ
無理にベストを目指す必要も無いからね

ベターをベストにする労力を掛けるより、
その労力で別の事をした方がいい
0882デフォルトの名無しさん (ブーイモ MM67-9zQU)
垢版 |
2017/09/03(日) 12:21:22.74ID:ksmau7/rM
変更のしやすさって開発スタイルに依存するからなあ
システムを作る側とそれを利用する側とで責任が分かれてる体制下においては、
綺麗なドメインモデルを継続的に改善し続けるなんて不可能
ひたすらコントローラでSQLを垂れ流す方が遥かに変更しやすい
0885デフォルトの名無しさん (ブーイモ MM67-9zQU)
垢版 |
2017/09/03(日) 13:53:29.42ID:ksmau7/rM
設計フェーズでちゃんと客と握ってれば仕様変更は客に相応のコストを請求すればいいでしょ
変更にかかる工数はトランザクションスクリプトなら高精度で簡単に見積もれる
変更しない前提ならテストなんか画面でポチポチしてExcelにスクショ貼り付けた方が早い
>>882で変更しやすいと言ったのは運用保守フェーズに入ってからの話ね
0889デフォルトの名無しさん (ワッチョイ f36c-X0kF)
垢版 |
2017/09/04(月) 18:45:09.41ID:hB0i/ETq0
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);
}
}
}
0890デフォルトの名無しさん (ワッチョイ f36c-X0kF)
垢版 |
2017/09/04(月) 18:45:33.53ID:hB0i/ETq0
やりたいことは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つずつまとめる他の方法は出来るのですが、この拡張メソッドの中身を把握するために、使う部分でのエラーをなくしたいと思ってます

よろしくお願いします
0906デフォルトの名無しさん (ワッチョイ 6311-7QJT)
垢版 |
2017/09/06(水) 01:29:30.86ID:nkmkM8Yj0
練習でコンソールアプリケーションで迷路のようなのを作ってます
開始からゴールまでの時間を表示することはできたのですが、これを毎回記録しつつ、あなたは○○秒です〜現在○位です!
のようなランキングを表示できたらと思ってますが、どのような方法が考えられるのでしょうか?
0907デフォルトの名無しさん (ワッチョイ 0311-nZMq)
垢版 |
2017/09/06(水) 01:46:25.57ID:t+GbP5lP0
>>906
MySQL使ってDB構築してるわ

DB構築、そこからプレイヤーのidをキーに保持して、秒を保存すればええんでね?
ランキングはListとかでソートしてインデックス+1で表示
同率とかの処理必要ならメソッド作る感じで

オススメのDBはよく分からないけど
0908デフォルトの名無しさん (ワッチョイ ff11-BPzU)
垢版 |
2017/09/06(水) 02:18:50.02ID:x6m+UIsj0
>>906
1. 記録はファイル出力/ 順位表示時に毎回ソート
2. SortedList等を使って記録時にソート済みでファイル出力、起動時等にSortedListの構築が必要
3. DBに記録、順位表示はDBからソートした結果を取得して表示

自分だけでプレイするのなら1で十分だと思うが
練習なら上から順番にやっていくのでもいいかもね
DB使うならSQL CEかSQLiteかな
0913デフォルトの名無しさん (ワッチョイ 6311-ygYq)
垢版 |
2017/09/06(水) 18:48:35.84ID:yZhXwa1n0
@ 記憶媒体からデータを読み込む。読み込んだ順番を保ちつつリストを作成する
A ゲーム開始→終了
B @のリストの先頭から見て行き、新しい記録より大きい要素の1つ前に挿入する。(挿入した位置が順位)
C 表示処理
D リストデータを記憶媒体へ書き込む

ソートは不要。
DBを使う要件がないのであれば記憶媒体はtxtファイルで十分。
0914デフォルトの名無しさん (アウアウイー Sac7-b8Mh)
垢版 |
2017/09/06(水) 19:04:59.84ID:s9ZfYQxla
>>906
テキストファイル名に名前秒数を適当な区切りを入れて保存

山田,60,田中,75,伊藤,81.scr

エクスプローラーからF2で編集可能
エディタもいらない
もちろんファイル名に使えない文字はあらかじめ除外だ
0915デフォルトの名無しさん (ワッチョイ 6f6d-bdum)
垢版 |
2017/09/06(水) 23:29:32.24ID:kZeUfc0W0
ネットを見ていたら、インターフェースで依存性を排除するコードが
例として出ていたのですが「コンストラクタでengineに実装を注入する」とある部分は、どのように書けるのでしょうか?

インターフェースには実装が書けず、コンストラクタでメソッドを書くこともできないので見当がつきません

よろしくお願いします

public interface Engine
{
void start();
}

public class Car
{
public Engine engine;
public Car()
{
// コンストラクタでengineに実装を注入する
}
public void go()
{
engine.start(); // <- Engineはインターフェースなので依存性がなくなった
}
}
0916デフォルトの名無しさん (ワッチョイ e303-3JEm)
垢版 |
2017/09/06(水) 23:38:07.92ID:ygscOEFy0
Engineインターフェースを実装したエンジンのインスタンスを
何らかの手段で手に入れてengineに代入しろってことだな

つまり、君の買った車にはエンジンが付いてないので
買ってくるか、自分で作るか、好きにしてもらったらよいが
エンジン作る部分までは説明しないよ、ってことだな
0917デフォルトの名無しさん (ワッチョイ ff11-BPzU)
垢版 |
2017/09/06(水) 23:53:04.33ID:tZ2T0w/m0
>>915
CarはEngineに依存してるよ
インターフェース使えばEngineの実装には依存しないようにできるけど
インターフェースなので依存性がなくなったというのは認識として間違ってると思う

んで実装を注入する方法はいくつかあって、例えばコンストラクタ・インジェクションなら
Carインスタンスを生成するときにEngine実装のインスタンスを渡してあげるイメージ

public Car(Engine engine)
0925デフォルトの名無しさん (ワッチョイ b769-ZN1Y)
垢版 |
2017/09/07(木) 07:21:08.70ID:/528PZB30
>>924
実際、機能10個作って10年で内3つしか変更が入らないときって
残りの7つに費やした依存性解消の時間って無駄じゃね?
いつ精算できんの?

変更することになってからゆっくり金貰って変更すればいいよ
予めやっておく必要も金も時間も欠片もない
0927デフォルトの名無しさん (ワッチョイ 8343-3TYr)
垢版 |
2017/09/07(木) 07:33:51.36ID:j+BNBbb90
>>915 を書き直すとこういう感じだろうか
public class Car
{
 private Engine engine;
 public Car(Engine engine)
 {
  // engineのインスタンス生成は外部で行い、
  // その参照をEngineインターフェースの変数として保持する
  // (渡されたクラスにEngineインターフェースが実装されているか
  //  どうかしか感知しない)
  this.engine = engine;
 }
 public void go()
 {
   // コンストラクタで渡されたEngineを使うので、
  // インスタンスの実装には依存しない
  // (実際に渡されるクラスで変更があっても、
  //  それが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 形式を使用します。"
0932デフォルトの名無しさん (ブーイモ MM26-nkYL)
垢版 |
2017/09/07(木) 08:02:41.36ID:j5w9yEfWM
下位のモジュールを結合した状態で単体テストするのはおかしなことではないでしょ
MSだって普通にクラスの中でnewしてるよ
見境なくDIすると結合したときとのギャップが大きくなりすぎる
○○サービスと呼べるような粒度の低いクラスだけにとどめるのがいいと思ってる
0935デフォルトの名無しさん (ワントンキン MM8a-SdQ8)
垢版 |
2017/09/07(木) 08:17:23.55ID:oeWMtJN8M
粒度も基準としてはあるが
自前のコードで完全に制御できないものはどこかで注入したほうがいいな
注入は別にインターフェースでなくてもいい
単にoverrideでもdelegateでも用途(今の文脈だとユニットテストか)に合えば良い
古い言語だとテスト用のモジュールをリンクしたり
マクロやインクルードで注入することもある
0936デフォルトの名無しさん (ブーイモ MM26-nkYL)
垢版 |
2017/09/07(木) 08:50:12.82ID:j5w9yEfWM
>>934
単体テストと結合テストの違いはテストケース
単体でも通るテストか、結合してないと通らないはずのテストか、それだけのこと
開発順序の都合とかネットワークに依存しててクソ遅いとか意図的に発生させるのが難しいエラーがあるといった特別な理由がない限り、
単体でも通るテストを結合して動かすことはなんら単体テストの意義を損なうものではないよ
0946デフォルトの名無しさん (アウアウエー Sa52-tij5)
垢版 |
2017/09/07(木) 12:58:50.81ID:vdmBVUrpa
質問者そっちのけで盛り上がってるねw

>>915が読んだ記事の著者のいう依存性の排除っていうのは恐らく、
Enineのコードが修正されてもCar側のコードがその影響を受けないようにする、
っていう程度の意味。(CarとEngineは別の人やチームが書いてると考えて)

そのための手段として、Carのコードでは具体的なクラスEngineではなく、
Car側のコードを書いている人、または第三者が定義したIインターフェイスEngineを使い、
EngineにはIEngineの実装を強制する。

そうすればEngineを書いている人はIEngineによって拘束され、
Car側(Engineを使う側)のコードが動かなくなるような変更はできなくなる。

まあたぶんこんな感じ。
だけど、下位の側のコード(この場合はEngine)を拘束するために
わざわざインターフェイスを使って抽象度を上げる(つまり可読性は下がる)必要が
本当にあるのかは、個人的にはかなり疑問。鶏を割くのに牛刀を使う感がある。

まあ質問者に確実に言えるのは、上にも書いたけど
依存性云々なんて理解しなくても問題ないから安心して読み飛ばしていいよってことw
0947デフォルトの名無しさん (ワッチョイ 0b11-zjjG)
垢版 |
2017/09/07(木) 13:03:19.68ID:NBIMX30y0
依存性をどっかで断ち切らないと、変更の影響が波及し過ぎるからだよ

その例で言うなら、Carの実装内容がEngineに直接依存してると
Engineを修正した時に、Carも修正しなくちゃならなくなるので、それを断ち切りたい訳だ

実際には、その2クラス間にしか依存関係が発生しないなら纏めて修正でもそこまで困らないんだけど
クラスAにクラスBが依存、クラスBにクラスCが依存、クラスCにクラスDが依存……って連鎖してく様な形になってると最悪で
クラスAを修正した結果、クラスB〜Dも全部修正とかになる可能性がある
0949948 (ブーイモ MMff-nkYL)
垢版 |
2017/09/07(木) 13:06:37.62ID:vyrcxkNNM
すまん
汎用機は細かくプロセス分けて作るから単体テストはわりと容易だよ
そのノリでVBやJavaモノリシックなアプリを作ろうとしたところでおかしくなった
0962デフォルトの名無しさん (ワッチョイ 4e61-xkdj)
垢版 |
2017/09/07(木) 19:18:39.04ID:KSI/qa2l0
>>957
そのメソッドをアクセスしやすい場所に置けばいいだけじゃないの?
単純に使うクラスにメソッドをコピーするか必要なメソッドだけ分離してクラスにして今まで使っていたクラスではフィールドで持っておけばいい
0963デフォルトの名無しさん (ワッチョイ 5a11-oWo5)
垢版 |
2017/09/07(木) 21:02:39.11ID:EkI2HYTy0
>>957

>>958の言うとおり
1秒毎にポーリングする処理というだけでは
毎回newするのが悪手かどうかstaticメソッドにするのがいいかどうかは誰も分からない

1. どういう選択肢があるのか考える(調べる)
2. それぞれのメリット・デメリット/トレードオフを理解する
3. 状況や目的に最も適している選択肢を選ぶ

こういう選択思考を繰り返すのが設計・コーディング時の考え方の基本
他にも選択肢あるから怠けず1.からやるのがいい
状況や目的をきちんと提示すればいいアドバイスが貰えるかもね
0966デフォルトの名無しさん (ワッチョイ 9aea-ShIp)
垢版 |
2017/09/07(木) 21:51:07.93ID:rUDH3LDL0
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 は多態に対応していると書かれた記事もあったのですが、どうにもうまくいかず。
方法があるようでしたら教えてください。
0968デフォルトの名無しさん (ワッチョイ dbaa-gFuG)
垢版 |
2017/09/08(金) 00:31:12.15ID:VpThhHIU0
>>966
例外メッセージにどうすれば良いか書かれてると想うけど
> DataContractSerializer を使用している場合は DataContractResolver を
> 使用することを検討するか、静的に認知されていないすべての型を既知の型の
> 一覧に追加してください。このためには、たとえば KnownTypeAttribute 属性を
> 使用するか、シリアライザーへ渡される既知の型の一覧にこれらの型を追加します。
0969デフォルトの名無しさん (ブーイモ MMff-d5PD)
垢版 |
2017/09/08(金) 07:43:59.68ID:F2F5K69aM
newの質問したものです。
newにかかるオーバーヘッドの時間調査して、パフォーマンスを比較するのを怠ってましたが、やはりやってみないとわかりませんね。
やります。皆さん色々アドバイスありがとうございます。
0970デフォルトの名無しさん (アウアウエー Sa52-tij5)
垢版 |
2017/09/08(金) 10:31:16.74ID:y+E+UDjYa
いやいやいや、それはどっちかというと頓珍漢な言い掛かりの部類でアドバイスじゃないと思うよw
今年は何年よw

コンストラクタ呼び出しが時間的に高コストなんてよっぽど特殊なクラス以外ありえないよwww
µsオーダでもmsオーダーでもなく、たった1回/秒の呼び出しなんだからw

だから最初から言ってるように、普通は書きやすい方法で書いて何も問題ないよ本当。
0972デフォルトの名無しさん (ワッチョイ b769-ZN1Y)
垢版 |
2017/09/08(金) 13:15:47.36ID:bqhsPJxB0
>>970
いや、気にしてるのはnew連発の穴ボコメモリだろ?
そのうちosがうまいことやってくれるのはなんとなくわかるがそのコストって具体的にどうよ?
ってのが本当に知りたいことだろ?
環境次第だしパフォーマンスモニタ動かしてみろよって話

3日も動かすと5秒だけ動作が止まるような動きをするってなったらそれが運用上許容できるのか?バグるのか?
それもやっぱりやって見なきゃわからないんちゃうん?
0973デフォルトの名無しさん (アウアウエー Sa52-tij5)
垢版 |
2017/09/08(金) 13:55:53.86ID:y+E+UDjYa
>>972
何がいやか分からないけど、だから最初から
高価な共有リソースを使う場合は別だと言ってるでしょ
今頃何を言ってるのかね

そういう例外的なケースを除けば、毎秒数個のオブジェクトを使い捨てにしたって
問題なんか起こらない。
そんなのXPの時代だってそうだから
0975デフォルトの名無しさん (ワッチョイ b769-ZN1Y)
垢版 |
2017/09/08(金) 14:30:27.51ID:bqhsPJxB0
>>973
問題起こらないってどういう範囲で言ってるの?
何度も確保したnewの領域をosがどう処理するから問題ないって言ってるの?
仕様によっては問題起きるよ
1つはメモリ限界ギリギリまでガベコレしないときは定期タスクの動きを止めてメモリ処理するよ
1分以上止まっちゃってたことあるよ
0976デフォルトの名無しさん (アウアウエー Sa52-tij5)
垢版 |
2017/09/08(金) 15:23:04.74ID:Ej7G00WUa
>>975
具体的にどうぞ。
君が問題が起こる具体的な一例を挙げればそれで話は終わる。
もちろん、極端な特殊例でなくどこでもありうるような一般的なものでお願いしますよ。

あのねえ、今はPC-98の時代じゃないんですけどw
0980デフォルトの名無しさん (アウアウエー Sa52-tij5)
垢版 |
2017/09/08(金) 16:45:28.16ID:Ej7G00WUa
こっちは具体例上げるけど、もっと高頻度(例えば10回/秒とか)で
画面を更新する必要があるアプリなんてごく普通にあるわけで、
そういう場合、例えばGDI+なら、ペンとかブラシとかデバイスコンテキスト(普通は作るのはシステム側で
ユーザーコードじゃないけど)とか、描画ごとに使い捨てすることになるけど、
こんなのが問題を引き起こすなら使い物にならないよ。

実際.NET1.1の時代に今じゃ考えられないような貧弱なWin98のマシンで
そういうアプリをテストしたことあるけど、何の問題もなかったよ。
当たり苗だけどw
0981デフォルトの名無しさん (ワッチョイ b769-ZN1Y)
垢版 |
2017/09/08(金) 17:11:08.88ID:bqhsPJxB0
>>979
とりあえず解決した方法は
10分に一度程度で強制ガベコレ実行することで解決したよ
溜めるとガベコレの時間は長くなるっぽい
やってみた感じね
パフォーマンスモニタでもメモリリークしてる?ってぐらい増えてく
ガベコレが動くと解消される
でもそのとき10秒タスクなんかは動かない
小刻みに強制ガベコレを実行しておくとそれが解消される
そんな動きをしている

その動きをされると困るときに小刻みに強制ガベコレを実行する必要がある
0983デフォルトの名無しさん (ワッチョイ b769-ZN1Y)
垢版 |
2017/09/08(金) 17:19:26.30ID:bqhsPJxB0
ちなみに趣味でゲームも作ってるけど
頻繁に強制ガベコレを動かさないと
重いガベコレを実行されるときがある

ゲームでは多少重い動作をした程度なので問題にならないが
これを周期的にデータを収集するタスクを動かしてるときにやられると不味いときがある
0984デフォルトの名無しさん (ワッチョイ 9ac8-xkdj)
垢版 |
2017/09/08(金) 17:23:06.63ID:dMUjO8jT0
だから具体的にどんなサイズのオブジェクトを
どういう頻度でインスタンス化したのか教えてくれないと
そういうどんくさい実装も可能だろうね
でも一般的な話じゃないよねとしか言えないんだよ
0987デフォルトの名無しさん (ワッチョイ 5a11-oWo5)
垢版 |
2017/09/08(金) 18:02:05.09ID:mcCYyLIS0
>>980
描画ごとに使い捨てにするのはデバイスコンテキストのハンドルで
デバイスコンテキスト自体じゃないじゃないんじゃないのかな?
少なくとも一般的には

あとスレ立てヨロ
0988デフォルトの名無しさん (アウアウエー Sa52-tij5)
垢版 |
2017/09/08(金) 18:15:42.38ID:Ej7G00WUa
>>987
立てたよ
https://mevius.2ch.net/test/read.cgi/tech/1504861931/l50

少なくともマネージドオブジェクト(Graphics)は毎回使い捨てだと思うよ。


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

まあ、もう2ch亡くなっても誰も困らんか
0995デフォルトの名無しさん (ワッチョイ 23e6-d5PD)
垢版 |
2017/09/08(金) 20:38:17.46ID:HXP4jN1T0
>>994
これは恥ずかしい
ポーリング(polling)とは、通信やソフトウェアにおいて、
競合を回避したり、送受信の準備状況を判断したり、
処理を同期したりするために、複数の機器やプログラムに対して
順番に定期的に問い合わせを行い、一定の条件を満たした場合に
送受信や処理を行う通信及び処理方式のことである。
0996デフォルトの名無しさん (ワッチョイ 174d-x/0H)
垢版 |
2017/09/08(金) 20:38:39.24ID:hqG5pPGU0
キミの用途はそうではなくても、常識としてnewやstringは遅いという認識を共有してくれないかな。
今時とか、普段とか、遅くて使い物にならなかった昔のJava屋のセリフそのままじゃないか。
どんな時代でもCPUのリソースは有限なんだよ。
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 52日 14時間 22分 33秒
10021002
垢版 |
Over 1000Thread
2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/

▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況