- 1 名前:デフォルトの名無しさん(ワッチョイ 5394-4hBO) mailto:sage [2016/12/27(火) 02:07:41.47 ID:HrGPkQcW0.net]
- 「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、 質問者自身なんだか意味がよく分からない質問、 ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。 内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。 なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください >>980を踏んだ人は新スレを建てて下さい。 >>980が無理な場合、話し合って新スレを建てる人を決めて下さい。 ■前スレ ふらっと C#,C♯,C#(初心者用) Part125 echo.2ch.net/test/read.cgi/tech/1475930006/ ■関連スレ C#, C♯, C#相談室 Part91 echo.2ch.net/test/read.cgi/tech/1467211515/ ■コードを貼る場合は↓を使いましょう。 ideone.com/ https://dotnetfiddle.net/ ■情報源 https://msdn.microsoft.com/en-us/library/gg145045.aspx referencesource.microsoft.com/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configure
- 246 名前:デフォルトの名無しさん (スップ Sdf2-Fvni) mailto:sage [2017/01/18(水) 20:35:13.00 ID:bBGXUnSyd.net]
- >>239
曖昧な言い方されるとわからん ASP.NET Core触ってその感想なわけ?
- 247 名前:デフォルトの名無しさん (ワッチョイ bbdc-lDPz) mailto:sage [2017/01/18(水) 22:05:09.42 ID:cw6vafSX0.net]
- 一口にプログラミングのスキルといっても色々ある
1. 複雑で大規模なロジックをエレガントに設計・実装できる 2. 難解なアルゴリズムを設計・実装できる 3. ハード・ミドルウェア・通信プロトコルなど、インフラを深く理解してプログラムから使いこなせる ASP.NETで身につきにくく、より薄いWebフレームワークを使うことで身に付くのは3 一般的なアプリケーションエンジニアに求められるのは1 解析とかコンパイラ開発のような特殊分野の専門家は2
- 248 名前:デフォルトの名無しさん (ワッチョイ 573c-Fvni) mailto:sage [2017/01/18(水) 23:21:54.21 ID:T8mUfMDR0.net]
- >>241
具体的には何のコードのことを言ってるの?
- 249 名前:デフォルトの名無しさん (ワッチョイ f3bb-3qL8) mailto:sage [2017/01/19(木) 07:29:23.09 ID:q3hudiC70.net]
- 求められてるのは仕様書もない糞コードを読むスキルやで。
- 250 名前:デフォルトの名無しさん (ワントンキン MM9f-aDhR) mailto:sage [2017/01/19(木) 09:35:58.54 ID:uhfgjGGlM.net]
- https://chrome.google.com/webstore/detail/%E3%81%AF%E3%81%A6%E3%81%AAng/mbgdnfmdelffjdhkdggilmphfdihnmcj?hl=ja
- 251 名前:デフォルトの名無しさん (ワッチョイ 230d-516J) [2017/01/19(木) 15:19:30.98 ID:qAXGwWjx0.net]
- 文字列からBOMを除去したいのですがどうすればいいですか?
stackoverflowにあった以下のコードを試しましたが、StartsWith()が常にTrueを返して困っています private readonly string _byteOrderMarkUtf8 = Encoding.UTF8.GetString(Encoding.UTF8.GetPreamble()); if (str.StartsWith(_byteOrderMarkUtf8)) { str = str.Remove(0, _byteOrderMarkUtf8.Length); }
- 252 名前:デフォルトの名無しさん (アウアウウー Sa67-gIHQ) mailto:sage [2017/01/19(木) 15:30:12.33 ID:IRyNom+ra.net]
- BOMってのは生のバイナリーレベルの話であって
少なくともC#のstringに含まれるような代物じゃないと思うんだけど
- 253 名前:デフォルトの名無しさん (ワッチョイ 9319-r4l2) mailto:sage [2017/01/19(木) 15:40:35.80 ID:4wnEpswf0.net]
- BOMもUnicode文字の1つU+FEFFだからStringに入れることはできるよ
どっから入れるかは微妙なとこだけど(UTF8Encoding.GetStringは問答無用で消すみたいだし) で試したけど"\ufeffA"はifに入って消えたし"A"はifに入らなかった
- 254 名前:デフォルトの名無しさん (ブーイモ MM67-XRLM) mailto:sage [2017/01/19(木) 17:59:08.76 ID:runhsDy0M.net]
- シリアル通信プログラムを作成しています。
メインスレッドでコマンド1を送信し、受信内容がAだったらコマンド2を送信するという処理にしています。 受信側(別スレッド?)の処理が終わる前にメイン側が受信内容の判断処理に入ってしまうため、本当に受信内容がAの場合でもコマンド2に移ることができません。 どのように対処すればよいでしょうか。
- 255 名前:デフォルトの名無しさん (ワッチョイ 7f4c-VYni) mailto:sage [2017/01/19(木) 18:08:11.71 ID:FKV8qOhE0.net]
- 受信処理の整合性を判断して、受信処理からInvokeで判断処理を呼ぶ
- 256 名前:デフォルトの名無しさん (ワッチョイ 03c0-SmTw) mailto:sage [2017/01/19(木) 18:10:12.42 ID:HUduSCHL0.net]
- >>250
.NET4
- 257 名前:.0の頃に似たようなことやったけどプロデューサー/コンシューマー パターン使ってBlockingCollection経由で受信スレッドと送信スレッドに分けたわ
今だとSystem.Threading.Tasks.Dataflowでもっとシンプルに出来ると思うけど [] - [ここ壊れてます]
- 258 名前:デフォルトの名無しさん (アウアウウー Sa67-gIHQ) mailto:sage [2017/01/19(木) 18:22:53.29 ID:IRyNom+ra.net]
- >>250
何を言ってるのかよくわからないけど、ひょっとして、 送信→受信データ解析→送信 この一連の流れを一つのメソッドで完結させようとしてない? だとしたらたぶんそれが間違ってる。 一連のシーケンスを処理する専用のオブジェクトを用意すればそんな問題は起こらない。
- 259 名前:デフォルトの名無しさん (オッペケ Sr87-8S/4) mailto:sage [2017/01/19(木) 18:25:27.59 ID:ACsZSSudr.net]
- c#を10年やってるのにまだ初心者の域を出ない…
- 260 名前:デフォルトの名無しさん (ワッチョイ f37b-3qL8) mailto:sage [2017/01/19(木) 18:41:37.78 ID:Ua4qBBzA0.net]
- C#だけやってても成長しないと思う
自分が理解できる範囲、自分が分かりやすい範囲でしか書かなくなるから
- 261 名前:249 (ワッチョイ cfb8-3qL8) mailto:sage [2017/01/19(木) 19:07:45.79 ID:TCIFCzqn0.net]
- >>251
ありがとうございます。 デリゲートで処理すればいいのですね。 >>252 ありがとうございます。 知らない単語が出てきたので調べてみます。 >>253 ご指摘の通りです。 送信メソッド:送信1→受信内容別に分岐→送信2 受信メソッド:DataReceivedイベントで受信
- 262 名前:デフォルトの名無しさん (ワッチョイ 7f4c-VYni) mailto:sage [2017/01/19(木) 22:09:21.74 ID:FKV8qOhE0.net]
- 昔、VC++でシリアル通信の非同期処理してた事があってさ、それをC#で実現しようとして
SerialPortクラスのDataReceivedイベントと Threading.TimerクラスのTimerCallbackにAutoResetEventを入れて、 WaitHandle.WaitAnyで待機してた事を思い出した。 いま、納品現場で確認してもらったけど今まで問題が起こってないんだが、 本来、C#のシリアル通信でOVERLAPPEDの非同期処理を実現するには、 やっぱWin32APIをゴリゴリ書かんとダメなん?
- 263 名前:デフォルトの名無しさん (ワッチョイ 6f02-x7a5) mailto:sage [2017/01/20(金) 02:24:48.66 ID:rKwDbfSd0.net]
- シリアルで非同期ってどういうことかわからん
全2重のことを非同期っていってるのか?
- 264 名前:デフォルトの名無しさん (ドコグロ MM7f-j6UX) mailto:sage [2017/01/20(金) 08:16:43.67 ID:ymDflbNbM.net]
- >>258
>>257 はいわゆる非同期I/O とかOverlapped I/Oの話でしょ コマンド投げといて並行して何らかの処理を行って暇になったらデータ受信するって奴 まあ通常のシリアルドライバは常時受信してバッファーに溜め込んでるからあまり意味ないけど
- 265 名前:デフォルトの名無しさん (ワッチョイ 7f4c-VYni) mailto:sage [2017/01/20(金) 09:21:01.06 ID:aZ8cT+JU0.net]
- ふと気になっただけだ。
ごねんね、スレ汚して
- 266 名前:デフォルトの名無しさん (ワッチョイ 8fce-HQXh) mailto:sage [2017/01/20(金) 12:29:54.12 ID:JXdqXSkU0.net]
- C#脳だとどういう事か判らんのだな
やっぱ知識が偏るよなあ
- 267 名前:デフォルトの名無しさん (ワッチョイ 6f02-x7a5) mailto:sage [2017/01/20(金) 12:49:05.39 ID:rKwDbfSd0.net]
- >>259
それはシリアル通信での話じゃないし。その上の層とアプリ層との間での話だろ どんな通信してようが、ローカルファイル読んでようが同じ、単なる非同期IOの話だし まあバッファリングしないシリアル通信相手に非同期IOかけても結局待つしかないけどな
- 268 名前:デフォルトの名無しさん (アウアウウー Sa67-gIHQ) mailto:sage [2017/01/20(金) 13:16:41.69 ID:98BzuqOpa.net]
- >>262
何を言ってるのかなこの人...
- 269 名前:デフォルトの名無しさん (ドコグロ MM7f-j6UX) mailto:sage [2017/01/20(金) 19:45:39.69 ID:ymDflbNbM.net]
- >>257 を読んで全二重とかいっちゃう人なのでお察しってことなんでしょ w
- 270 名前:デフォルトの名無しさん (ワッチョイ bf85-ZNqe) [2017/01/20(金) 20:39:08.06 ID:BC+BfvLQ0.net]
- 質問です!
今日からC#を勉強始めました 配列のコピーをしたいのですが ここのサイトをみると配列サイズに+1しています string[] newAuthors = new string[authors.Length + 1]; +1せずに string[] newAuthors = new string[authors.Length]; でいいと思ったのですが私の間違いでしょうか? www.woodensoldier.info/computer/csharptips/53.htm
- 271 名前:デフォルトの名無しさん (JP 0H07-SmTw) mailto:sage [2017/01/20(金) 21:07:21.40 ID:05MQpXAxH.net]
- やってみればいいんじゃない?
- 272 名前:デフォルトの名無しさん (ワッチョイ ff17-x7a5) mailto:sage [2017/01/20(金) 21:42:02.36 ID:MJq7L3EO0.net]
- 何の用途か知らないけど、ひょっとしてタイマーコールバック使ってるとこ見ると
Task.Run( () => { } ); で囲むだけでお気楽マルチスレッドになることを知らないとか?
- 273 名前:デフォルトの名無しさん (ワッチョイ f3bb-3qL8) mailto:sage [2017/01/20(金) 21:46:16.09 ID:ao0q6onS0.net]
- なんというかイラってくるレス
- 274 名前:デフォルトの名無しさん (ワッチョイ 7fe1-ws0G) mailto:sage [2017/01/21(土) 01:34:13.79 ID:XoO/Nzrc0.net]
- >>265
+1は不要だね
- 275 名前:デフォルトの名無しさん (ワッチョイ 8fcb-YAkb) mailto:sage [2017/01/21(土) 01:34:35.71 ID:O/GZ8TN60.net]
- >>267
カッコ内の処理が下に記述された処理より後に実行されるのがお気楽でないね 複数書いたらどれが一番最初に実行されるんだろか? ってところを実はよくわかって使っていないことが同僚にバレるのも時間の問題なわけだよ
- 276 名前:デフォルトの名無しさん (ワッチョイ bf85-ZNqe) mailto:sage [2017/01/21(土) 08:30:00.84 ID:7Cy++wUg0.net]
- >>269
ありがと〜
- 277 名前:デフォルトの名無しさん (ワッチョイ 7f4c-VYni) mailto:sage [2017/01/21(土) 11:25:24.95 ID:wJLBUXJS0.net]
- >>267
通信プロトコルで、48bit時間以上の無受信で一区切りなんだけど、ドライバーでSerialPortクラスのReadTimeoutプロパティ(SetCommTimeouts関数)に完全対応していないものが多いから、そのタイマーを用意すた。 今だったら、Task.WaitAnyの一つをタイマーにしとけば楽チンだったかもね。 ところで、C#でWin32のWaitbleTimerのような、そのまま待機メソッド(Wait, WaitAll, WaitAny)に対応してるタイマーってあるの?
- 278 名前:デフォルトの名無しさん (アウアウウー Sa67-gIHQ) mailto:sage [2017/01/21(土) 12:31:23.14 ID:iYYQzwCfa.net]
- ドライバレベルで対応するような機能かなそれ。違うような気がするけど。
ドライバって言ってるんだからシリアルUSB変換ブリッジを使ってるんだろうけど、 だとしたらそもそもUSBが間に入ってるために48bit時間なんて概念が無効なだけだと思うけど
- 279 名前:デフォルトの名無しさん (ワッチョイ ff3c-j6UX) mailto:sage [2017/01/21(土) 13:03:52.44 ID:1cIKmUbZ0.net]
- >>273
> ドライバって言ってるんだからシリアルUSB変換ブリッジを使ってるんだろうけど、 あまり知ったかしない方がいいかと...
- 280 名前:デフォルトの名無しさん (アウアウウー Sa67-gIHQ) mailto:sage [2017/01/21(土) 13:09:00.67 ID:iYYQzwCfa.net]
- うんお前がね
普通にPCIやExpressのバスにぶら下がる形のシリアルの拡張ボードで 特別のドライバを必要とするものなんか見たことないよ OS標準で最初から入ってるんだから
- 281 名前:デフォルトの名無しさん (ワッチョイ 8fce-HQXh) mailto:sage [2017/01/21(土) 13:41:03.09 ID:oJxw4Shh0.net]
- 48bit時間が何ミリ秒なのか知らんけど本当なら間にマイコンとかでブリッジかますような案件じゃねえの
PC側で設定したタイムアウトのアバウトさで済む話なのかねえ 業務で使うなら破綻すると思うけど
- 282 名前:デフォルトの名無しさん (ワッチョイ ff3c-j6UX) mailto:sage [2017/01/21(土) 14:08:54.55 ID:1cIKmUbZ0.net]
- >>275
だからいちいち無知晒さんでいいから www.contec.co.jp/product/device/comdrv/#pci
- 283 名前:デフォルトの名無しさん (ワッチョイ 7f4c-VYni) mailto:sage [2017/01/21(土) 14:09:01.72 ID:wJLBUXJS0.net]
- 272、275が近いね。
シリアルTTLのチップがあって、そのドライバーには関数名のプレースホルダーは用意してるがタイムアウトは機能してないって回答をいただいてる。で、プロトコルのルールに従ってタイマーを用意しただけだ。 もちろん、もうこんな仕事は請けんけどな。 ただ、興味で待機メソッド対応のタイマーってC#であるん?ってのが知りたかっただけ。
- 284 名前:デフォルトの名無しさん (ワッチョイ cf9d-3qL8) mailto:sage [2017/01/21(土) 14:18:24.01 ID:dBVmTL1r0.net]
- 48bit時間ってのがどのくらいの長さなのか知りたいだけ
- 285 名前:デフォルトの名無しさん (ワッチョイ ff17-x7a5) mailto:sage [2017/01/21(土) 14:23:49.09 ID:JwMYXArD0.net]
- マルチスレッド使いながらある瞬間だけシリアル化したいならそこだけ別関数に切り出して
[MethodImpl( MethodImplOptions.Synchronized )]を付けるとお気楽だよ (ある電気メーカーが作ったシステムのバグをそれで直したことある)
- 286 名前:デフォルトの名無しさん (ワッチョイ 7f4c-VYni) mailto:sage [2017/01/21(土) 14:41:37.57 ID:wJLBUXJS0.net]
- たしかボーレートの最大が115kだったんで、最短は0.4msecぐらいだったかな…って。
フレーム11ビットで4文字分ぐらい。 で、もうこの話題良いよな?
- 287 名前:デフォルトの名無しさん (ワッチョイ 13dc-jh1Y) mailto:sage [2017/01/21(土) 14:51:59.06 ID:Poucv/rB0.net]
- >>280
それthisをロックするから.NETの推奨作法に反してる thisのロックは外に漏れるから予期せずクラス外の排他処理と干渉して パフォーマンスが落ちたりデッドロックしたりする原因になる可能性がある
- 288 名前:デフォルトの名無しさん (オッペケ Sr87-8S/4) mailto:sage [2017/01/21(土) 18:33:09.25 ID:LuBTyI4Rr.net]
- WinFormで画像関連の処理(主に合成)をゴリゴリ書いてたらむちゃくちゃ重くなった
ゲームって1/60秒とかで膨大なレンダリングと合成を繰り返しつつ、AI処理とかアニメ、スキン処理とかやってるんだよな なんでたかが画像の合成ごときで重くなってゲームだとものすごく速く処理できるのかね? 全然わからん
- 289 名前:デフォルトの名無しさん (ワッチョイ cf5e-SmTw) mailto:sage [2017/01/21(土) 18:38:02.55 ID:4zEMZhpt0.net]
- >>283
GDIに全部やらせたら遅くなるな 合成とかはバイト配列で必要な部分だけやって表示するだけ迄に持っていくとか DirectXやUnityに画像処理部分やらせるとか 最後はC#じゃなくC++でやるとかw
- 290 名前:デフォルトの名無しさん (ワッチョイ 33d6-3qL8) mailto:sage [2017/01/21(土) 18:50:02.22 ID:RZU7JwAh0.net]
- 実装がクソで遅いこともある
文句を言う前にプロファイラとかで調査しような
- 291 名前:デフォルトの名無しさん (ワントンキン MM9f-Taza) mailto:sage [2017/01/21(土) 19:02:39.13 ID:W/zpHkC+M.net]
- プロファイラの使い方よくわからんし
- 292 名前:デフォルトの名無しさん (ワッチョイ f3bb-3qL8) mailto:sage [2017/01/21(土) 19:13:16.83 ID:0VDH7cX80.net]
- C++と違ってC#にはどうやっても超えられない壁があるんだよ。
- 293 名前:デフォルトの名無しさん (ワッチョイ 9377-8QYx) mailto:sage [2017/01/21(土) 20:19:14.82 ID:g8nBrPXf0.net]
- 要所をunsafeにすることで相当効果出る場合もあるけどね。
- 294 名前:デフォルトの名無しさん (ワッチョイ 1342-sQpi) mailto:sage [2017/01/21(土) 20:28:06.61 ID:AZ4jUWLU0.net]
- 餅は餅屋
あとopenGLね
- 295 名前:デフォルトの名無しさん (ワッチョイ f3bb-3qL8) mailto:sage [2017/01/21(土) 21:33:09.90 ID:0VDH7cX80.net]
- >>288
undafeの突入、脱出のコストが高すぎて、 丸ごとunsafeに入る規模のコードしか高速化できない。
- 296 名前:デフォルトの名無しさん (ワッチョイ c33c-r8v3) mailto:sage [2017/01/21(土) 22:19:24.72 ID:LzlUxaG40.net]
- >>287
まあ目指すところが違うから当然だわな
- 297 名前:デフォルトの名無しさん (ワッチョイ 13dc-jh1Y) mailto:sage [2017/01/21(土) 22:50:54.76 ID:Poucv/rB0.net]
- やってることが同じならC#とC++で速度なんか大して変わらん
少なくともスクリプト言語みたいに数桁遅いってことはないから、 C#で書いたコードそのものがボトルネックになってるときに そのままC++に書き直したってボトルネックが解消することはまず無い
- 298 名前:デフォルトの名無しさん (ワッチョイ 83a1-5ScM) mailto:sage [2017/01/21(土) 23:02:05.21 ID:pcFLx4Ty0.net]
- 越えるも何も基本越えられちゃ困るから壁を作ってる訳で
- 299 名前:デフォルトの名無しさん (オッペケ Sr87-8S/4) mailto:sage [2017/01/21(土) 23:11:22.69 ID:LuBTyI4Rr.net]
- それにしてもGDIでのレンダリングとゲーム用のレンダリング、雲泥の差じゃない?
画像処理はGPUで計算させればぶっ飛びで速くなるの? あとポインタ紛いを使えばぶっ飛びになる?
- 300 名前:デフォルトの名無しさん (ワッチョイ 13dc-wwrd) mailto:sage [2017/01/21(土) 23:15:44.15 ID:Poucv/rB0.net]
- >>294
GPUを使えば爆速になるのは正しいが、ポインタは要らん 画素にリアルタイムで変換をかけたかったらピクセルシェーダ使え
- 301 名前:デフォルトの名無しさん (ワッチョイ cf9d-3qL8) mailto:sage [2017/01/21(土) 23:35:53.59 ID:dBVmTL1r0.net]
- 合成に何に使ってるの?
Graphics.DrawImage()はクッッッッソ遅いよ
- 302 名前:デフォルトの名無しさん (ワッチョイ cf9d-3qL8) mailto:sage [2017/01/21(土) 23:38:32.57 ID:dBVmTL1r0.net]
- ×:何に
○:何
- 303 名前:デフォルトの名無しさん (ワッチョイ ff4a-SmTw) mailto:sage [2017/01/22(日) 00:33:58.14 ID:WHkammw20.net]
- GDIは速度求めるなら使い物にならない
業務アプリのコントロールのデザイン弄る程度なら十分使える 3Dゲームの画像処理ならGPU処理一択 っても自力でガリガリ書かなくて済む時代
- 304 名前:デフォルトの名無しさん (JP 0H07-OQjX) mailto:sage [2017/01/22(日) 01:11:33.09 ID:eCbhYovmH.net]
- >なんでたかが画像の合成ごときで重くなって
つーか、具体的にどんな合成やってるか知らないが、画像処理って下手すりゃピクセル単位で チマチマだし、オレの中では基本的に重たそうなイメージがあるけどなあ
- 305 名前:デフォルトの名無しさん (ワッチョイ f3bb-3qL8) mailto:sage [2017/01/22(日) 01:19:16.26 ID:H+suNOjg0.net]
- >>292
LINQ使うだけで数桁遅い。それが分からない奴はその程度のコードしか書いたことがないということ。 C#、.netの制約上のボトルネックはC++で消し飛ぶ。
- 306 名前:デフォルトの名無しさん (オッペケ Sr87-Hq25) mailto:sage [2017/01/22(日) 02:21:36.81 ID:bOybKaZ+r.net]
- 我慢大会その一
- 307 名前:デフォルトの名無しさん (オッペケ Sr87-8S/4) mailto:sage [2017/01/22(日) 03:39:23.27 ID:EI5AfIBCr.net]
- >>295
プログラマじゃないけど前にゲーム業界にいたからピクセルシェーダは使ったことある 使ってみるかな >>296 それですね アルファ合成のときだけBitLocker使ってるけど あとはGraphicsPathとか >>298 そっち系の本買って勉強しようかな ゲームプログラマならc++でやれるんだろうなあ 勉強してみたけど俺にはいろいろ無理だった…
- 308 名前:デフォルトの名無しさん (ワントンキン MM9f-Taza) mailto:sage [2017/01/22(日) 07:39:48.76 ID:4NhSs4FyM.net]
- Linq遅いマンまだいたんだ
Linqじゃなくてお前のコードが酷いだけじゃん
- 309 名前:デフォルトの名無しさん (ブーイモ MM1f-wwrd) mailto:sage [2017/01/22(日) 08:45:32.72 ID:mrTIs+uVM.net]
- >>302
Unity使えばいいのに 今時スクラッチで開発なんかしないよ
- 310 名前:デフォルトの名無しさん (オッペケ Sr87-8S/4) mailto:sage [2017/01/22(日) 10:17:10.34 ID:EI5AfIBCr.net]
- >>304
まあそれもアリなのかな… たしかにGPUで合成できるし Unityで作った画像編集ソフトかあ
- 311 名前:デフォルトの名無しさん (ワッチョイ 33d6-3qL8) mailto:sage [2017/01/22(日) 10:45:08.68 ID:kO0RN1SM0.net]
- >>303
具体例も挙げられないおじいちゃんだから仕方ないね
- 312 名前:デフォルトの名無しさん (ワッチョイ ff4a-SmTw) mailto:sage [2017/01/22(日) 10:58:17.59 ID:WHkammw20.net]
- Linqもラムダ式も一度使うともう戻れねーよな
EFと合わせたら生産性ぱねぇし
- 313 名前:デフォルトの名無しさん (ワントンキン MM9f-Taza) mailto:sage [2017/01/22(日) 11:08:50.22 ID:4NhSs4FyM.net]
- EFは正直どうかと思うが
パブリックプロパティだらけになって システムのあっちこっちにビジネスロジックが分散して管理しきれなくなる そうではなくOOPの良い習慣にしたがってビジネスロジックをクラス化する クラスインスタンスの永続化方法も合わせてカプセル化して最小限にとどめる こうしておけばデータアクセス処理に大した工数はかからない 工数削減の夢を見て変なフレームワークに頼って自滅することもなくなる
- 314 名前:デフォルトの名無しさん (ワッチョイ 13dc-jh1Y) mailto:sage [2017/01/22(日) 11:09:17.59 ID:phG9hQKS0.net]
- LINQやラムダ式はメソッドの expression body definitions でかなり使いやすくなった
ちょっと込み入ってて分かりにくいラムダがあったら手軽にメソッドに括り出して名前を付けられる
- 315 名前:デフォルトの名無しさん (ブーイモ MM1f-wwrd) mailto:sage [2017/01/22(日) 11:19:16.48 ID:mrTIs+uVM.net]
- >>308
本来はそのビジネスロジックを実装するときに内部でEFを使うんだよ 所詮シリアライザとクエリビルダにすぎない
- 316 名前:デフォルトの名無しさん (ワントンキン MM9f-Taza) mailto:sage [2017/01/22(日) 11:28:38.11 ID:4NhSs4FyM.net]
- >>310
だからそれをやるとジワジワとトランザクションスクリプト的な実装になっていって管理が追いつかなくなるってこと
- 317 名前:デフォルトの名無しさん (ワッチョイ ff4a-SmTw) mailto:sage [2017/01/22(日) 11:28:58.51 ID:WHkammw20.net]
- Linqが速度を売りにした技術として登場したわけじゃないわけで。
道具の使い方が悪い例を出して、道具に文句出されてもなぁ。 性能が必要なシナリオなら、システム構成、技術やアルゴリズム、言語を使いわけるものですからね。 業務系の話を例にすると。 Linqのループ処理の遅さは、数桁すら許容できるケースが多く、 DB側で絞ってるのでC#側で大量のループをぶん回すような事はしない。 テキストファイルやDB、メモリ相手のデータでもLinqは透過的に処理できるから便利。 Linqは、コレクションに対する生産性の高さが有益なんであって、 単純なループを例にしてLinqが遅いとしか言えないなら、話にならん。
- 318 名前:デフォルトの名無しさん (ワッチョイ ff30-QGIP) mailto:sage [2017/01/22(日) 11:31:54.78 ID:0QiRTW2m0.net]
- 馬鹿だから一つしか覚えられない人間に二つ目を覚えろというのは酷ではありませんか?
おそらく高脳様なんでしょうけどド低脳に対する配慮が足りませんよ
- 319 名前:デフォルトの名無しさん (ワッチョイ ff4a-SmTw) mailto:sage [2017/01/22(日) 11:58:44.67 ID:WHkammw20.net]
- >>308
もちろんEFを使うときは、レイヤーをちゃんとわけて、カプセル化する前提ね。 ビジネスロジックも、モデルもサービスも必要に応じてちゃんと分ける。 依存関係の多いDataTableに比べたら、EFはPOCOだから、詰む事は少ないと思う。 ビジネスロジックやトラン処理がどこに来るかは、 サービス層・ドメインモデル・エンティティモデルのどこに入れるか次第だろうね。 ORMやDAC代わりにEF導入する現場なら、余計にね。 管理が追いつくかどうかは、開発の規模と設計、プロジェクト構成次第じゃない? うちは、1ドメインで作らず適度にドメイン分割してるから複雑さは低減できてるし。 CQRSなパターンで組んだら、さらに管理が楽になった。 工数削減の夢を見る奴は、いつの時代も論外だぬw
- 320 名前:デフォルトの名無しさん (ワントンキン MM9f-Taza) mailto:sage [2017/01/22(日) 12:18:58.56 ID:4NhSs4FyM.net]
- しっかりとレイヤ分割してるならなおさら生ADO.NETでもEFでも大した差はでない
ビジネスレイヤまでEFが染み出してくると最初は便利かなと思うが後になって後悔する EFは本来privateであるべきプロパティが野晒しになるからロジックの分散を避けられない
- 321 名前:デフォルトの名無しさん (ワッチョイ a394-GGaX) mailto:sage [2017/01/22(日) 12:28:22.49 ID:opZW6Xxw0.net]
- 避けられなくないだろ。避けろよ
「染み出す」ってなんだよ。書くべきじゃない場所に書くな。染み出させるな
- 322 名前:デフォルトの名無しさん (ワントンキン MM9f-Taza) mailto:sage [2017/01/22(日) 12:37:09.50 ID:4NhSs4FyM.net]
- そう
書くべきじゃないところには書くな これを実践するとEFがビジネスレイヤに染み出してくることはない EFのスコープはデータアクセスレイヤに限定される しかしそうなると生ADO.NETに対してそこまで大きな優位性は得られなくなる 生ADO.NETを使った場合でも結局のところデータをビジネスロジックのクラスインスタンスにデータをマップして使うのだから
- 323 名前:デフォルトの名無しさん (ワッチョイ ff4a-SmTw) mailto:sage [2017/01/22(日) 12:45:18.70 ID:WHkammw20.net]
- レイヤ分割してるなら大差ないというのは確かにそう。
DataTableはNULL周りが良くないんよね。XMLWebサービス時代にはお世話になったが。 で、染み出してくるのはPOCOなクラスであってEFではないよ。 POCOなクラスをそのまま使ってるから生じる問題。 DataTableのプロパティのスコープ制御に相当する機能が EFのモデルには無いと思ってるように聞こえるから、その前提で話をすると。 EF6からはnon-publicなフィールドも、シリアル化可能だから制御可能よ。 private/protectedで隠ぺいしつつ、DBに保存とかも出来る。 6以前でもやろうと思ったら自分でそう書けばできる。
- 324 名前:デフォルトの名無しさん (ワッチョイ ff4a-SmTw) mailto:sage [2017/01/22(日) 12:48:38.01 ID:WHkammw20.net]
- いずれにせよ、便利なとこにだけ目を付けて
そういう問題点まで考えずに導入しちゃう現場の方が問題だろうねw 全publicなプロパティで困ってるならご愁傷様です。
- 325 名前:デフォルトの名無しさん (アウアウカー Sac7-RtDt) [2017/01/22(日) 12:50:26.90 ID:8/XlH/DIa.net]
- おまえらどんな修行積んだらそんななれるんだよ。。
独学やってる俺からみると心折れそうだわ
- 326 名前:デフォルトの名無しさん (ワッチョイ f3bb-3qL8) mailto:sage [2017/01/22(日) 12:53:59.02 ID:H+suNOjg0.net]
- >>307
LINQのサンプル書けば分かる話で、昔から散々言われてたこと。 速度が必要ならLINQ使うな、楽したいならLINQ使え。それだけ。 それをLINQは遅くないだの、C#とC++の速度差はないだのは、全くの捏造、デタラメ。素人の知ったか。 今回の話題で遅いのは画像処理。画像処理に糞遅いLINQ使う馬鹿はいないんだよ、糞ガキ。
- 327 名前:デフォルトの名無しさん (ワッチョイ ff4a-SmTw) mailto:sage [2017/01/22(日) 13:20:05.54 ID:WHkammw20.net]
- >>321
馬鹿にしてるのも、素人発言してるのも俺じゃないのに、 なんでそんな悪態つくのかわからんがwww ちゃんとワッチョイかID見ろよ C#やLinqが、C++並みとか早いと言ってるのは俺じゃないぞ 画像処理かつ性能必要なとこで、Linqで組む奴が居たら馬鹿だろ
- 328 名前:デフォルトの名無しさん (ワッチョイ c33c-5mR9) mailto:sage [2017/01/22(日) 14:03:47.83 ID:W8T+cplZ0.net]
- デリゲートってどういうときにどう使ってますか?
使ってみようと思ってるんですけど、、、 パスドラみたいなゲームだとどう使うとよかったりするんですかね?
- 329 名前:デフォルトの名無しさん (ブーイモ MM1f-wwrd) mailto:sage [2017/01/22(日) 14:31:47.38 ID:q7Ms9629M.net]
- >>323
お前がこれまでイベントやLINQやラムダを使ったことがあるなら、お前は既にデリゲートを使っている デリゲート型の定義は昔の名残みたいなもんで、今更あえて自分でデリゲートを定義する必要はない
- 330 名前:デフォルトの名無しさん (アウアウウー Sa67-gIHQ) mailto:sage [2017/01/22(日) 15:08:27.54 ID:w8qlDydna.net]
- >>323
いきなり人をお前呼ばわりするような奴の話は無視していいと思うw 彼がなぜ見知らぬ他人にそんな横柄な態度を取るのかお察し(略 前にも書いた気がするけど、BCLで実際にどういう使われ方をしているかを見て理解するのが一番早い。 例えばList<T>なんかのSortメソッドにはデリゲート(Comparison<T>)を引数に取るバージョンと インターフェイス (IComparer<T>)のバージョンがあるが、この2つを比べてみるとか デリゲートの意義は変数(入れ物)を作れることにある。 int型の変数にintの値を自由に入れることができ、intのリテラルと同じように式の中で使えるように デリゲート、例えばAction型の変数には引数なし、戻り値なしのメソッドを自由に入れることができ、 普通のメソッド呼び出しと同じように変数の中のメソッドを呼び出すことができる。
- 331 名前:デフォルトの名無しさん (ササクッテロレ Sp87-5mR9) [2017/01/22(日) 17:22:01.36 ID:9cOLculsp.net]
- お二方どうもです!
いまunityやってて、なんか自分で定義して使ってみたいんですけど、わざわざ定義して使う必要もないのかと思ったり思わなかったり、、
- 332 名前:デフォルトの名無しさん (ワッチョイ a394-GGaX) mailto:sage [2017/01/22(日) 17:39:15.02 ID:opZW6Xxw0.net]
- Action や Func という便利な「定義済みデリゲート」があるので
(>>325 のいう「 Comparison<T> 」もそう) いまや、自分で定義する必要はあまりないような… 言葉遣いはぞんざいだったけど、>>324 が言いたいのもそういうことだったのでは
- 333 名前:デフォルトの名無しさん (ワンミングク MM9f-Taza) mailto:sage [2017/01/22(日) 17:45:53.28 ID:mco4N0ihM.net]
- >>323
ストラテジーパターンを使いたいなぁと思った時にめんどくさいからデリゲートとラムダを使おう その程度の認識でいいよ
- 334 名前:デフォルトの名無しさん (ワッチョイ 33a1-IReq) mailto:sage [2017/01/22(日) 20:04:36.92 ID:uhRlBKGc0.net]
- .の意味ってなに?
スペースと何が違うの?
- 335 名前:デフォルトの名無しさん (ワッチョイ 0390-waAN) mailto:sage [2017/01/23(月) 22:56:49.49 ID:+/l1sI5v0.net]
- 自分でhttpwebrequest、httpwebresponseのラッパークラスを作っているんですが、どうも使いづらいです
通信エラーが起きてもResponseCodeわからないですし、例外もうまくキャッチすることができません こういうクラスってひょっとしてラップしても意味ないですか? WebrequestやDownloadStringなどを使わないのはCookieなどを付与する必要があるためです
- 336 名前:デフォルトの名無しさん (ワッチョイ 9377-8QYx) mailto:sage [2017/01/23(月) 23:02:45.38 ID:bI3M8V880.net]
- >>330
今からやるならHttpClient
- 337 名前:デフォルトの名無しさん (ワッチョイ cf9d-3qL8) mailto:sage [2017/01/23(月) 23:36:42.09 ID:iMdxUfkB0.net]
- WebClientにCookie持たせる
- 338 名前:デフォルトの名無しさん (ドコグロ MM7f-j6UX) mailto:sage [2017/01/24(火) 12:50:22.17 ID:HHZbO6egM.net]
- >>330
意味がわからん... 自分で作ってるなら使いやすいように作ればいいだけじゃないの?
- 339 名前:デフォルトの名無しさん (ワッチョイ b30d-516J) [2017/01/25(水) 15:07:13.59 ID:3WJkXYG20.net]
- HttpClient WebClient WebRequest HttpRequest の違いがわかりません
- 340 名前:デフォルトの名無しさん (ワッチョイ 63a4-QGIP) mailto:sage [2017/01/25(水) 22:04:46.00 ID:Bb3u5ckd0.net]
- ふーん
- 341 名前:デフォルトの名無しさん (ワッチョイ 33d6-3qL8) mailto:sage [2017/01/25(水) 22:18:36.99 ID:W75ZhGr50.net]
- >>334
聞く前にググれ
- 342 名前:デフォルトの名無しさん (アウアウイー Sa53-T3y8) mailto:sage [2017/01/26(木) 07:18:39.25 ID:hf6GrTPoa.net]
- >>334
ググったなんて日本語が分からなかったの?
- 343 名前:デフォルトの名無しさん (ワッチョイ 2613-uaQk) mailto:sage [2017/01/26(木) 09:58:48.02 ID:sSYf7dfw0.net]
- >>337
ha?
- 344 名前:デフォルトの名無しさん (ササクッテロラ Sp13-YLIH) mailto:sage [2017/01/27(金) 02:09:00.56 ID:mwRO9ggOp.net]
- TextBoxの文字をクリックしたときにその行に頭が特定の文字ならアクションを起こすようなものを作りたいのですが
TextBoxクラスのGetCharIndexFromPosition(Point)で文字を取得するとクリック位置が文字の上から外れた場所でも取得できてしまいます 文字上でクリックされた時のみを感知したいのですが何かいい方法があれば教えてください
- 345 名前:デフォルトの名無しさん (ワッチョイ 1ad4-AZYz) mailto:sage [2017/01/27(金) 12:09:25.78 ID:7rtouHaU0.net]
- 検索(SQLを投げた)結果を非同期でフォーム表示させようとしてます。
SqlCommandを組み立ててBeginExecuteReaderしました。 AsyncCallback 先で、EndExecuteReaderを実行し DataTableに収納させるまではデバッガで動作確認できました。 ここからが問題なのですが DataTableの内容をForm(DataGridView)で表示されようと思いました。 DataGridViewが貼り付いているFormをnewで生成し、DataGridView.DataSourceにDataTableを入れました。 最後にForm.Showでフォームが開くことを期待したのですが、フォームの枠が出るものの中身が真っ白 キャプションは「応答なし」と出て表示も操作もできません。 最初にBeginExecuteReaderした側のメインスレッドは普通に動いてます。 どうやったら、AsyncCallback 先でフォームを新規表示させることができるんでしょうか。
- 346 名前:デフォルトの名無しさん (ワッチョイ d3c0-y5A3) mailto:sage [2017/01/27(金) 13:41:41.66 ID:f0Kj2+Uu0.net]
- >>340
デバッガ使っているならForm.ShowのところでDataGridView.DataSourceにDataTableが入っているか見てみれば?
|

|