17/12/10 14:50:12.52 o/NiMYKz.net
>>376
サブステートを定義するとかしかやりようがないような気がするけど...
enum 使わなきゃ綺麗に書けるの?
391:デフォルトの名無しさん
17/12/10 15:30:45.08 hRp3Q2MJ.net
>>369
最新の2017でないのなら専用スレで聞け
Visual Studio 2015 Part8
スレリンク(tech板)
VSは複数バージョン入れると干渉して稀に不具合起きるらしいけどその辺は自己責任
392:デフォルトの名無しさん
17/12/10 16:01:41.00 K5F4H8OZ.net
>>382
そこ集めちゃうの?という印象。
たとえば enum System.IO.FileMode のようなものを class で置き換えるとした場合、せっかく
抽象化したのに操作対象毎に異なる実装をそこに全部書くことを想定しているんだろうか。
393:デフォルトの名無しさん
17/12/10 16:32:25.95 1RSLLPBx.net
>>385
操作対象はインターフェースで分離する
FileModeはFileModeに関連する責務だけを担当する
操作対象に関する責務はFileModeには無い
394:デフォルトの名無しさん
17/12/10 16:41:37.05 1RSLLPBx.net
むろん全てのenumをオブジェクトにすべきと言ってるわけではない
ビジネスレイヤではオブジェクトにしたほうが良い場面が圧倒的に多いが
単なるフラグセットとみなしたほうが有利な場面もそりゃあるだろう
395:デフォルトの名無しさん
17/12/10 16:56:48.76 K5F4H8OZ.net
>操作対象に関する責務はFileModeには無い
だからね、例えばローカルファイルとネットワークドライブ上のファイルとで同じFileModeに対する
操作手順が異なるとした場合、それをどこに実装するかって話。
1つの class Enum に実装するのは論外として、インターフェースと実装クラスに分離するなら>>380の通り。
あるいはFileクラスに掛かる実装は class Enum 側に持たないというならenumのままでもいいじゃん、となる。
>>387
結局そうだよね。圧倒的かどうかは知らんけどw
396:デフォルトの名無しさん
17/12/10 16:57:04.47 AsjcCxkl.net
xがなにで1と2でどう違うのか分からんが
まずxをクラス(か構造体)にするべきだと思うんだが
397:デフォルトの名無しさん
17/12/10 16:59:10.81 1RSLLPBx.net
>>389
大した意味のないサンプルに深入りするの馬鹿馬鹿しくない?
398:デフォルトの名無しさん
17/12/10 17:11:04.47 QtRE0gJ3.net
ほらキチガイが湧いたwww
399:デフォルトの名無しさん
17/12/10 17:14:47.78 IOEOCVr0.net
例外も列挙体もLINQもインタフェースもイラネってかwwwwww
400:デフォルトの名無しさん
17/12/10 17:31:58.06 klwCxkV9.net
死ねで終わらせとけばいいのに相手しやがって死ね
401:デフォルトの名無しさん
17/12/10 17:55:36.64 CnpEkAKU.net
昔流行ったswitchを無くせって話は、元々はJavaみたいな関数ポインタもデリゲートも使えない言語で
ジャンプテーブルをどうやって実現するかって話(要するにいかに効率化するかって目線の話)
だったと思うんだけど、それが途中からこじつけか何か知らんけどOOP敵に美しいとか正しいって
話にすり替わった印象しかないね。
そりゃ多態使ってswitch無くした方が美しく可読的に書ける場合もあるけど、
そうじゃない場合の方が圧倒的に多い。
要するに上にも書いたけど、羹に懲りて膾を吹く類の話だよね。
今でもこういうこと言ってる人の話は真に受けちゃダメだと思う
402:デフォルトの名無しさん
17/12/10 18:11:31.06 u72ghqtY.net
enumをクラス化でシンプルにできるのはシングルのenumで状態が決まる場合
複合的な状態を持ってるとまあ理解に苦しむコードになるよ
ifとswitchのほうが読みやすく理解しやすいならそっちを使えばいい
403:デフォルトの名無しさん
17/12/10 18:13:44.60 o/NiMYKz.net
>>390
例示されたサンプルがおかしいって言われてるって言うことをそろそろ気づこうか
404:デフォルトの名無しさん
17/12/10 18:15:53.82 40kmfkZ7.net
しょーもな
首吊って死ねば?
405:デフォルトの名無しさん
17/12/10 18:30:36.92 1RSLLPBx.net
>>394
オブジェクト指向をやるならカプセル化や単一責務は基本中の基本
enum switchはそれを全部ぶち壊しにする
だからやめとけって世界中で言われてんだよ
406:デフォルトの名無しさん
17/12/10 18:39:54.73 u72ghqtY.net
それは使い方が悪いだけだよ
407:デフォルトの名無しさん
17/12/10 18:41:44.28 o/NiMYKz.net
>>398
お前の狭い世界はどうでもいい
408:デフォルトの名無しさん
17/12/10 18:45:22.58 1RSLLPBx.net
まあ初心者スレだしOOPわからんってのも仕方がないか…
何年後かには理解できてると思う
409:デフォルトの名無しさん
17/12/10 18:47:16.85 u72ghqtY.net
>>379
このコートの最初が悪くてあとが良いとは限らないと思うが
これ100個あったとして
どこぞの言語みたいに一クラス一ファイル縛りがあったら100個ファイルが必要
それに見通しが非常に悪い
switchも見通しが悪いけど100個のクラスの100メソッドを検索で渡るよりまし
410:デフォルトの名無しさん
17/12/10 18:49:15.44 u72ghqtY.net
状態によって見やすいコードはかわるけどswitch==悪はfalseだろ
411:デフォルトの名無しさん
17/12/10 18:52:06.23 40kmfkZ7.net
>>403
草
412:デフォルトの名無しさん
17/12/10 18:52:09.72 in4pjWGE.net
雑談スレか
413:デフォルトの名無しさん
17/12/10 18:55:12.88 1RSLLPBx.net
>>402
すまんがまず100このenum値って時点で設計ミスだと思うぞ
普通の業務ロジックでそんな区分分けみたことないわ
大量のenumといったらせいぜいリソースIDのラベル化とか?
そ�
414:ネんまでクラス化はしないよ なんでもクラス化するわけじゃないってなんどもレスしてるよね? まあ仮に区分が膨大な場合でもそれがビジネス上の振る舞いを持つならクラスにしたほうがいいぞ クラスにしたら見通し悪いっていうけど そりゃビジネスそのものが見通し悪いんだから仕方がないか クラスっていう保護がなければもっと悲惨なことになる
415:347
17/12/10 18:55:31.09 okOunyow.net
>>384
誘導ありがとうございます。
416:デフォルトの名無しさん
17/12/10 18:57:52.94 u72ghqtY.net
もともと責務と言いながら
状態を伝えるだけのenumをクラスに拡張しちゃって責務の内容を広げっちゃって
保守性を落としてるんだからまだまだだね
417:デフォルトの名無しさん
17/12/10 18:59:10.78 u72ghqtY.net
>>406
1つ目と3つ目を比べると1つ目のほうがすぐれたコードだと思う
理解しやすい
それ以上優れてる理由はない
418:デフォルトの名無しさん
17/12/10 19:02:50.61 1RSLLPBx.net
enumが100個あってシステムのあっちこっちに分岐があります
仕様が変わりました値Aの仕様が変わりました
enumの場合:
システムをenumのAで検索
あっちこっちでヒットしたコードを慎重に整合性を確認しながら修正
もしかしたら見逃しがあるかもしれないと不安を抱えながら作業
Aを修正してるのに周りの他の値の場合の処理が凄まじいノイズになってめまいがする
コードが他の責務に埋め込まれてるのでテストは容易ではない
クラスの場合:
派生クラスAが定義されてるファイルを開く
1つのファイルに集中できるので楽々修正
Aに関する処理は全部このファイルにあるので見逃しも無い
他の値の処理が周りに無いのでクリアな視界で作業可能
クラスになってるのでテストは超簡単
419:デフォルトの名無しさん
17/12/10 19:07:08.35 1RSLLPBx.net
enum値が削除されたら?
新しいenum値が追加されたら?
クラス化されてないと超しんどいぞ
システムにばら撒かれたenum100個なんて管理しきれないよ
OOPの言語と開発環境ならクラス100個は楽勝で管理できるけどな
420:デフォルトの名無しさん
17/12/10 19:07:59.48 u72ghqtY.net
>>410
クラスを使うべき時は使う
そうじゃないときはswitch enumでも十分
421:デフォルトの名無しさん
17/12/10 19:09:21.56 HHgBYreh.net
enumなんて存在すら忘れてた
もうクセでデータ保持するクラス作っちゃってたわ
やっぱ固定値の列挙はenumの方がええんやろか
422:デフォルトの名無しさん
17/12/10 19:10:43.29 1RSLLPBx.net
>>412
それでいいよ
ビジネスが入り組んできたらクラスにリファクタリングすればいい
俺は最初からクラスにしてるけどね
423:デフォルトの名無しさん
17/12/10 19:13:57.59 o/NiMYKz.net
>>411
> システムにばら撒かれたenum100個なんて管理しきれないよ
enum 使ったことないのか?
なんか実務を知らないのに
URLリンク(iwa4.hatenablog.com)
とかを見て switch は悪 ⇒ enum 不要
とか拗らせてるって感じ w
424:デフォルトの名無しさん
17/12/10 19:16:05.80 KNXh5gp+.net
enumをクラスにするという考えがあることが根本的な設計のセンスの無さを感じる
425:デフォルトの名無しさん
17/12/10 19:18:31.13 u72ghqtY.net
そのenumを置き換えたクラスを使う場所が100個あって後段でそれぞれ違う処理(メソッド)が必要なら
100個のクラス*100のメソッド=10000必要になる
本当に管理しきれるのかな
記号は記号でしかないと思う
426:デフォルトの名無しさん
17/12/10 19:23:13.06 1RSLLPBx.net
君たちはさC#を使ってるけどOOPはできてないんじゃないかな?
たぶん昔ながらの手続き型のパラダイムから進歩してない
フィールドやプロパティは丸出しで
データベースの物理構造を色濃く反映したDTOを
ネストしまくり分岐しまくりのやけに長いトランザクションスクリプトで処理する
そんなコードばかり書いてるんだろ?
427:デフォルトの名無しさん
17/12/10 19:27:02.30 1RSLLPBx.net
>>417
仕切れるよ
疎結合高業務で
428:責務がしっかり分けられてるからね というかそれで管理できなかったらクラスという枠組みを失い無秩序状態になった同じ数(経験上もっと多くなるが)の処理なんて余計に管理できないだろ
429:デフォルトの名無しさん
17/12/10 19:28:10.84 RKQe6ZfS.net
>>418
キミ自身、キミの言う「昔ながらの手続き型のパラダイム」でキミの考える最強の「OOP」をしとるんやで
もう少し脳を鍛えようか?ね?
430:デフォルトの名無しさん
17/12/10 19:28:59.49 0VP/mrFZ.net
滅茶苦茶レベルの低いところで仕事してるんだろうなあってのは伝わってくる
431:デフォルトの名無しさん
17/12/10 19:29:31.44 K5F4H8OZ.net
>>419
いや、あんたの主張は疎結合どころか、enum相当のクラスに結合しまくりだろう。
432:デフォルトの名無しさん
17/12/10 19:32:15.18 1RSLLPBx.net
>>422
疎結合だよ
クラスにすればenumを使う側はenumの振る舞いの実装を知らなくていい
クラスにすればある値と他の値の処理が同じスコープで干渉しなくて済む
こんな基本もわかってないんだよなぁ
ま、初心者スレってことか
433:デフォルトの名無しさん
17/12/10 19:36:46.16 O8bRFaEo.net
\
 ̄ヽ、 _ノ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
`'ー '´
○
O
,.- ‐─ ‐- 、
,r'´ `ヽ
,イ jト、
/:.:! j i.::::゙,
i:.:.:| _,, ,、--、 !:;;;;|
|;;;;j ,r''"二ヽ r'⌒ヽ !;;;!
,ヘ;;i! ,,_r ・,ン.:! {〈・_,>、,, jヘi!
〈 j>j、 "´, イ `ヽ ,':::〉!
`ゝ.`, ノ、__,入 j::rソ
`゙i / ,r===ュ, `, '.:〔_
}! ! i.:::::::::::.:! ;! .!::::j::`` ー----─r- 、
, イ.:ト、 ゙===='′ ,イ!:::::!::.:.:.:. ゙, `ヽ
_ノ /j.:::!:トヽ、 ´ ̄` ,ノ´ ,リ::::.:!:::.:.. i. \
,.r'´ /.::!:::::::| `ヽ`"""´ /ノ.:.:.:.:.::!:.:. | !
/ .:|.:.:.:::ト、 リ / !:. ! |
/ l , へ\! /'7ヽ |: j |
. / l/^ヾ:::ト、! j! l 〉、 | | . |
/ i .::| i| j! | / `ー'′ ! j! !
434:デフォルトの名無しさん
17/12/10 19:38:51.23 40kmfkZ7.net
はい!
ID:1RSLLPBxの勝ち!w
おまえらドンマイw
435:デフォルトの名無しさん
17/12/10 19:40:38.39 0VP/mrFZ.net
enumの使い所を間違えるようなレベルの人間でないと共感は得られないと思う
436:デフォルトの名無しさん
17/12/10 19:41:38.15 lTpNuF7F.net
と、中身のないレスをしてみるのであった。
437:デフォルトの名無しさん
17/12/10 19:46:34.91 YjUTAOlB.net
ステータス(状態)をクラスにしちゃうと色々と説明が必要になっちゃうけどな
もっと素直に設計できねぇの?
お前らの剣は無駄な動きが多過ぎる
438:デフォルトの名無しさん
17/12/10 19:49:25.32 +dBvFTXH.net
すみません。質問ですが、例外とエラーの違いって何ですか?
439:デフォルトの名無しさん
17/12/10 19:49:27.62 0VP/mrFZ.net
状態に複数の要素が絡んだ時、彼はどうクラスを設計するだろうか
440:デフォルトの名無しさん
17/12/10 19:51:18.85 40kmfkZ7.net
>>426
>>428
>>430
負け惜しみが見苦しすぎるw
441:片山博文MZ
17/12/10 19:52:02.61 M7uFif4k.net
例外は制御がぶっ飛ぶやつ。
エラーは、正常に処理ができなかったという意味。
442:デフォルトの名無しさん
17/12/10 19:57:13.54 NAV3AZ5L.net
状態数も20くらいまでなら把握できるが…それ以上はいやだねえ…
443:デフォルトの名無しさん
17/12/10 19:58:57.63 in4pjWGE.net
>>429
ここで言っている例外はtry-catchでcatchで受けられる処理(Application Exceptionの類)の話
そのエラーの意味が何に対するエラーなのかわからないので違いは説明できない
444:デフォルトの名無しさん
17/12/10 19:59:05.93 0VP/mrFZ.net
enumだらけの.net frameworkを、enumじゃなくてクラスにしろよなんて思いながら使ってないだろうよ
445:デフォルトの名無しさん
17/12/10 20:01:31.79 1RSLLPBx.net
>>435
ベーシックライブラリと業務システムのドメインロジックを同じ感覚で書くプログラマは居ないよ
446:デフォルトの名無しさん
17/12/10 20:04:07.99 0VP/mrFZ.net
>>436
だから普通は使い所をわかってるから、こんなこと何の議論も起こらないよねって話じゃん
447:デフォルトの名無しさん
17/12/10 20:04:55.70 40kmfkZ7.net
からからうっせーよ死ねや
448:デフォルトの名無しさん
17/12/10 20:14:56.93 1RSLLPBx.net
>>437
わかってないからなここの初心者連中
449:デフォルトの名無しさん
17/12/10 20:17:38.09 in4pjWGE.net
このスレ来ている時点でみんな初心者。スレタイに「初心者用」ってちゃんと書いてあるから
450:デフォルトの名無しさん
17/12/10 20:41:13.41 o/NiMYKz.net
初心者ならいいんだけど、初心者を卒業したと勘違いしてる ID:1RSLLPBx が痛々しいだけ
451:デフォルトの名無しさん
17/12/10 20:42:45.81 1RSLLPBx.net
今日は負け惜しみを沢山見たが反論は少なかったなぁ
452:デフォルトの名無しさん
17/12/10 20:57:11.24 gQySa/bC.net
キチガイにふれるなよ
453:デフォルトの名無しさん
17/12/10 21:46:32.27 Uujd9YQH.net
計算量の観点で比較すると
switchはコンパイラが2分探索にしてくれる場合がある O(log2(N))
クラス化はインスタンス生成された時点で仮想関数テーブルが紐付く O(1)+ディスパッチのコスト
で合ってる?
454:デフォルトの名無しさん
17/12/10 21:54:10.74 bPupZbt5.net
>>444
switch でも状況によってジャンプテーブルにしたりするんじゃね?
455:デフォルトの名無しさん
17/12/10 22:12:18.04 Uujd9YQH.net
>>445
C#はジャンプテーブルも使うみたいですね
この比較はあんま意味ない気がしてきたので閉めます
456:デフォルトの名無しさん
17/12/10 22:28:48.38 klwCxkV9.net
俺以外でここまで書き込んだ奴は明日朝一で中央線に飛び込んで死ね
457:デフォルトの名無しさん
17/12/10 22:37:53.36 8I95hEEE.net
仮想メソッド呼び出しはJITがインラインキャッシュで展開するからコストはほぼゼロのはず
458:デフォルトの名無しさん
17/12/10 22:38:00.15 /a8M7Ljd.net
>>447
板違い。メンタルヘルス板に行け
459:447
17/12/10 22:39:14.02 8I95hEEE.net
補足
展開っていってもインライン展開するわけじゃないよ
静的なメソッド呼び出しに置き換えるということ
460:デフォルトの名無しさん
17/12/10 22:54:55.63 4CvOnmGy.net
>>429
例外 ⊂ エラー
461:デフォルトの名無しさん
17/12/10 23:09:05.85 NAV3AZ5L.net
>>450
vtable を間に噛むんじゃないか?
462:デフォルトの名無しさん
17/12/10 23:13:59.68 40kmfkZ7.net
>>451
マ?
463:デフォルトの名無しさん
17/12/10 23:47:37.64 u72ghqtY.net
shapeクラスをベースに持つrectangleとcircleクラスの挙動をswitchで制御してるならOOPに反すると思うけど
確固たる概念も実体もないものをわざわざクラスにしてまでenumを消す理由はない
普通のマジックナンバー代わりの記号がenum
オブジェクト間でクラスがメッセージをenumで渡すだけ
上手に使えばいいだけ
464:デフォルトの名無しさん
17/12/10 23:56:55.90 +mi54qJj.net
あ、もうその話終わってるんで(^^;
465:デフォルトの名無しさん
17/12/11 00:02:40.94 4r/Nu0Q4.net
>>454
お前も勝利宣言しとけよ
明日以降やられてもたまらん
466:デフォルトの名無しさん
17/12/11 00:13:22.40 duNhD2vY.net
実体の無い物
467:をクラスにしたらドキュメント書けよと それだけだけどな 書かないでやってる奴はギルティ
468:デフォルトの名無しさん
17/12/11 00:24:03.35 ZlOMrHZS.net
メッセージがただの記号だったのにクラスになるとオブジェクトの生成や
必要に応じてライフタイム管理が必要になる
しかも作ったオブジェクトに処理を移譲したり他のオブジェクトを渡したりして新たなオブジェクトと結合が密になる恐れがある
そこまでしないなら記号の受け渡しで済んだものがクラスの管理が増えるだけでメリットは薄い
469:デフォルトの名無しさん
17/12/11 03:52:53.05 oxZtEftd.net
あー、そーゆーのはママに教えてあげてね
470:デフォルトの名無しさん
17/12/11 06:40:10.22 6BzZoNtD.net
>>442
そりゃ反論はガン無視だもんな w
471:デフォルトの名無しさん
17/12/11 08:32:07.64 Pz9H8j59.net
> オブジェクトの生成
状態変わらないのだからpublicなstaticメンバで持てばよい
> ライフタイム管理
そんなに気になるのならstructにすればよい
> 処理を委譲したり(最後まで)
全く意味不明
472:デフォルトの名無しさん
17/12/11 08:37:46.08 PAoZtWNN.net
一晩経っても負け惜しみ言ってるやつ居てわろた
せめて反論したらどうなの?
>>458
メッセージを列挙値で済ませようとする発想がまずチープだがまあいい
RegexOptionsみたいな場合もあるからな
問題はドメインオブジェクトを列挙値で表現してしまうケースな
昨日から議論してんのはメッセージの話じゃないんだよそもそも
君はまだそこを理解してない
473:デフォルトの名無しさん
17/12/11 08:40:03.91 Pz9H8j59.net
どうしてもenumにこだわりたいのなら
Attribute付加
拡張メソッド作る
こんな手段はある
474:デフォルトの名無しさん
17/12/11 08:44:48.49 PAoZtWNN.net
他のオブジェクトとの関連云々ってさ
べつに列挙値からオブジェクトにしたから急に関連が出てきたものじゃないんだよね
ドメインの性質としてもともと本質的に関連があるものなんだよそれは
それがオブジェクトにしたことによって可視化されただけ
列挙値のままだと関連があるのにそれがハッキリと見えず暗黙の結合状態になってるだけ
それはまさに最悪の状態だよ
475:デフォルトの名無しさん
17/12/11 08:50:22.92 DFoAuevB.net
設計書の構造に箱ができないものをクラスにするのはセンスが悪いな
こんなゴミクラスたくさん作っちゃってクラス図でどうやって説明するの?
476:デフォルトの名無しさん
17/12/11 08:56:14.04 DFoAuevB.net
汎用ライブラリにでもぶち込むならともかく
こんな枝葉までクラスにされるとソースの粒度に統一感がでない
ステータスなんかクラスにすんなよ
ドキュメント書くのが面倒くせえだろ
それはイコール他人に説明する手間が増えてることだと気づけよ
どーせドキュメント書かないんだろお前馬鹿だから
477:デフォルトの名無しさん
17/12/11 09:36:16.99 SJ7HWrxD.net
他人に説明するためのドキュメントは確かに書かないな
ソース見たほうが早いし間違いがない
ソースコードが設計書である
俺が馬鹿かどうかに関係なく、
アジャイルやGOAでやるとどこでもそうでしょ
478:デフォルトの名無しさん
17/12/11 09:38:16.34 LDcEcB6H.net
>>467
ワケのわからんソース書くやつに限ってお前みたいなこと言うのな
479:デフォルトの名無しさん
17/12/11 09:41:22.91 ibPW1Iwl.net
ちょっと昔な感じだな
今は当たり前にドキュメントを書いてる時代だと思うけど
480:デフォルトの名無しさん
17/12/11 09:43:28.23 oxZtEftd.net
はいはいご立派ご立派
481:デフォルトの名無しさん
17/12/11 09:48:35.34 kESkT9Ub.net
おはようございます。(改行大杉で怒られたので行間を詰めています。
現在押し付けられて困っていることがありご教示いただければと思っております。
環境:フレームワーク4.71 + MVCフレームワーク5OS:Wi
482:n2012 現在上記環境で動いているシステムがあり、 いくつかのリクエスト文字列と画像ファイル1つをマルチパートで受け取るシステムがあります。 今回、アンドロイド側のJAVAアプリからデータをマルチパートでPOSTしてくる予定だったのですが 時間不足で実装できないと言われ、データを以下のように送ると言ってきています。 (AndroidといえどJavaと同様なのでマルチパートのOutputStreamを作成して送ってくるだけだと思うのですが…。) 1.ファイルをバイト配列に変換 2.そのバイト配列をBase64エンコード 3.最終的にUTF-8の文字列にして通常のリクエスト文字列として送信 上記の仕様だそうです。 そこで上記の逆手順を…と思い 考えれる範囲で 1.リクエスト文字列をUTF-8バイト配列に変換 2.そのバイト配列をChar[]に変換 3.Char[]をFromBase64CharArrayでバイト配列に変換 とやってみたのですが System.FormatException: 入力は有効な Base-64 文字列ではありません。 上記例外が当然のように発生します。 単純にアンドロイド側からBase64で送ってもらえればそのままデコードできるのですが それも突っぱねられて困っています。 そもそもこの逆変換が技術的に不可能なようであれば相手側に強く言うこともできるのですが その根拠が示せず言い出せません。 1.そもそも可能なのか? 2.手順的にはどのようにするのがよいのか ヒントだけでも構いませんのでご教示いただければと思っております。 以上です。
483:デフォルトの名無しさん
17/12/11 09:54:06.70 LDcEcB6H.net
>>471
欲しい形の文字列とどう違うのか比較してみろよ
484:デフォルトの名無しさん
17/12/11 10:11:54.42 kESkT9Ub.net
>>472
ありがとうございます。
あぁ、なるほど!
該当ファイルをBase64文字列にして
その差を比較してみて両者が合うように変換していってみる
ということですね。
ちょっとコツコツやってみることにしてみます。
485:デフォルトの名無しさん
17/12/11 11:07:13.45 jHA/gkIg.net
>>471
リクエスト文字列を直接Char[]にせずバイト配列にいったん変える意味が分からない
リクエスト文字列がBASE64の文字列でなければFromBase64CharArrayは使えない
URLリンク(msdn.microsoft.com)(v=vs.71).aspx/html
486:デフォルトの名無しさん
17/12/11 12:02:38.34 0NyrcvQf.net
switchを無くせって話、WPFとかのMVVMにちょっと似てるね
どっちの場合も原理主義者が主張するような美しい理念がワークするのは、
ある一定の条件というか閾値を超える事例だけであって、それ以外の場合は
かえって可読性とか保守性とかが低下すると思うんだけど、原理主義者がそういう現実を
無視して何にでも適用可能な万能の方法みたいにごり押ししてる感がある
487:デフォルトの名無しさん
17/12/11 12:11:33.55 SaVPDOly.net
多少冗長になっても1つのルールに沿って全部書いた方が読みやすいだろ
488:デフォルトの名無しさん
17/12/11 12:12:00.53 LDcEcB6H.net
もういい加減組めちまってる奴は
次の課題を自分で探さないといけない
プログラムスキルは組めるようになったら
そこでMaxなんだよ
さっさと次の課題を探さないから
どーでもいいことが意味ありそうに思えてくる
489:デフォルトの名無しさん
17/12/11 12:58:53.47 WHbaikY8.net
>>379みたいなケースでswitchをなくせ
って言うのはそりゃそうだなって思うけど
そもそも>>379の最初の方の組み方がおかしいだけでenumの問題じゃない
それを>>379の例だけでswitchをなくせと言うならまだしもenumなくせとか言い出すから頓珍漢なことになってるだけ
490:デフォルトの名無しさん
17/12/11 13:49:25.47 jxfuchh+.net
>>743
レスありがとうございます。
相手が手順的にBASE64のバイト配列をUTF8文字列にして送ってくるようだったのでその手順が必要なのかな…と思いまして。
そもそも何故バイト配列からBASE64の文字列にダイレクトにしなかったのかと…。おもいつつです。
491:デフォルトの名無しさん
17/12/11 15:28:30.74 MTsA4uB/.net
>>471
元の仕様
1.ファイルをバイト配列に変換
バイト配列ができる
2.そのバイト配列をBase64エンコード
ファイルをBase64エンコードした文字列ができる(仕様上UTF-8でもシフトJISでも同じ)
3.最終的にUTF-8の文字列にして通常のリクエスト文字列として送信
これが何の変換かわからない(2.の理由により必要がない)
まず元の仕様を勘違いしていないか?
その上で逆手順のテストコードバグっているから不必要にややこしくなってる
492:デフォルトの名無しさん
17/12/11 15:39:40.21 FZFaQSBJ.net
ファイルをバイト配列に格納→をBase64に変換
↓
Base64をバイト配列に変換→バイト配列をファイルとして保存
493:デフォルトの名無しさん
17/12/11 15:45:33.14 MTsA4uB/.net
>>471
あとBASE64の文字列の長さは4の倍数でConvert.FromBase64CharArrayにそれ以外の長さのChar[]を指定するとエラーになる
不足分を自分で埋める('='で埋める)必要があればそれもやらないと
494:デフォルトの名無しさん
17/12/11 16:00:32.40 JAdbtKtz.net
多分UTF-8のBOMの有無でずれているんだろうな
手順がいくら増えようが不可逆になることはない
495:デフォルトの名無しさん
17/12/11 17:48:13.13 s+GYIw+B.net
>>478
誰もenum無くせとは言ってないぞ
ドメインクラスをenumで表現するなって言ってる
496:デフォルトの名無しさん
17/12/11 18:27:40.38 sMdN9sff.net
ドメインが理解出来ていないからすれ違いのままなのかな
497:デフォルトの名無しさん
17/12/11 19:55:13.88 WHbaikY8.net
>>484
お前が誰か知らんけど
>>377
> ダメとは言わないがコード整理するとenumが自然と消える
とか言ってたアホがいるって話
498:デフォルトの名無しさん
17/12/11 20:33:38.88 hCIPbzdz.net
>>486
外人?
ダメともなくせとも言ってないじゃん
499:デフォルトの名無しさん
17/12/11 20:53:07.48 WHbaikY8.net
はいはい、言葉尻にしか反論できないってことね
可哀想だな w
500:デフォルトの名無しさん
17/12/11 22:32:51.43 g6aSF5Tx.net
やれやれ
501:デフォルトの名無しさん
17/12/11 22:54:45.84 Mf9o9uwW.net
あれあれ
これは言葉尻ではない気がする
502:デフォルトの名無しさん
17/12/11 22:59:42.23 SJ7HWrxD.net
goto文をなくせの頃から何にも変わってないな
gotoをなくせ
enumをなくせ
switchをなくせ
シングルトンをなくせ
ヘルパークラスをなくせ
一応どれも正しい
間違ってはいない
でもこういうルールは別に守らなくてもいい
どうでもいいルールなんだよ
DRY原則とかOpen/Close原則とかの設計原則の方がより重要あってね
503:デフォルトの名無しさん
17/12/11 23:06:06.50 +NqpgsqU.net
どっちでもどうでもいいよ
どうせ動くんだし
テストをしっかりすればいいだけ
504:デフォルトの名無しさん
17/12/11 23:22:47.89 Mf9o9uwW.net
gotoとenumの間にはかなり差がある気がする
前方へgotoは絶対悪だから使用厳禁
ドメインのenumと同じかw
もうちょっと緩いと思うが
switchはパターンマッチとして使うのは推奨なご時勢だけどC#のswitch構文は力不足だね
505:デフォルトの名無しさん
17/12/11 23:36:59.61 izyLx6FJ.net
gotoは後方への方が凶悪だろ
前方だけに使う分にはbreakやtry-catchと大差ない
506:493
17/12/11 23:40:04.94 izyLx6FJ.net
書いてから気付いたが前方参照の意味での前方か
失礼
507:デフォルトの名無しさん
17/12/11 23:43:50.74 wiZ77PPl.net
>>491
ルールと呼ぼうが原則と呼ぼうが本質は何も変わらんよ
要するにバカの暴走を制限する為の足枷でしかないw
508:デフォルトの名無しさん
17/12/11 23:54:41.55 SJ7HWrxD.net
>>496
〇〇をなくせというルールが馬鹿にたいする足枷でしかないのは全くその通り
だから俺みたいな賢人にはどうでもいい
逆に馬鹿に設計原則は理解出来ないだろう
SOLID原則が理解出来るならそいつは馬鹿ではない
509:デフォルトの名無しさん
17/12/12 00:01:45.14 98iDbaWn.net
>>497
表面的な理解で原理主義に陥いってしまう奴は沢山いるし
本質的にそいつはバカなんだと思うよw
それは理解してないのだと言われればそれまでだがw
510:デフォルトの名無しさん
17/12/12 00:04:06.99 4TJt3MwM.net
質問と関係ないレスどこまで続けんの
相談室行けよ
511:デフォルトの名無しさん
17/12/12 00:13:24.19 Vo2kP02L.net
バカにされて色々悔しかったんだろ、察してやれや
512:デフォルトの名無しさん
17/12/12 00:26:32.44 98iDbaWn.net
抽象的な話になると必ずこういうレスがつくなw
これもバカの典型w
513:デフォルトの名無しさん
17/12/12 01:19:52.30 sZfK5OGe.net
enum不要っていう馬鹿らしい主張は全然聞かない
514:デフォルトの名無しさん
17/12/12 01:31:17.45 /hFzA9NO.net
バカスレ
515:デフォルトの名無しさん
17/12/12 01:33:06.37 lIsHmOMn.net
初心者用スレで難しい話すんなよ
俺みたいな趣味グラマーが楽しめないだろ
516:デフォルトの名無しさん
17/12/12 02:08:48.08 YqkrRdmr.net
しゅみません
517:デフォルトの名無しさん
17/12/12 02:13:45.88 5Qo60rlq.net
しゅき
518:デフォルトの名無しさん
17/12/12 05:04:47.87 Vo2kP02L.net
>>501
必ず?
今まで何度も辛い目に逢ったのかな? w
519:デフォルトの名無しさん
17/12/12 09:32:06.37 enzDDAPg.net
10年以上いたら辛いこともあるだろ
520:デフォルトの名無しさん
17/12/12 09:55:36.90 B9ezHy21.net
>>507
一晩越してもまだ悔しいんかw
521:デフォルトの名無しさん
17/12/12 13:01:20.73 55mcEBCK.net
>>509
お前がな w
522:デフォルトの名無しさん
17/12/12 21:31:34.33 CwRQgOlO.net
tensorflow+keras+c#で
エロ画像を自動分類するソフトを
作って欲しいと頼まれたんだけど
c#から出来そうですか?
参考になるサイトないですか?
523:デフォルトの名無しさん
17/12/12 21:36:58.22 Hba1R6el.net
特徴量でググりまくれ
524:デフォルトの名無しさん
17/12/12 21:52:35.56 NQyVP+w1.net
>>511
C#以前に個人レベルじゃ無理です
そういうことはデカいところに任せましょう
525:デフォルトの名無しさん
17/12/12 21:57:23.48 CwRQgOlO.net
>>513
日経ソフトウェアの記事で
桜、ヒマワリ、バラの判別をやってる
プログラムがあるんで
これをエロ画像に置き換えて
c#からできればいいかなぁ?と
526:デフォルトの名無しさん
17/12/12 22:03:01.97 +ghxhmVd.net
エロがそんな単純だと思うなよ
527:デフォルトの名無しさん
17/12/12 22:03:38.97 NQyVP+w1.net
>>514
内容次第だと思うが何をどう分類したいのか?がはっきりしないと
分類できない
桜
ひまわり
バラ
の様に特徴が特定しやすい分類なのか?
528:デフォルトの名無しさん
17/12/12 22:06:27.53 yoDcG/vu.net
>>514
アルゴリズムを作るところからやってみて話はそれから
とりあえずC#にそんなライブラリは無いので他のスレへどうぞ
529:デフォルトの名無しさん
17/12/12 22:06:56.72 CwRQgOlO.net
>>516
人妻、NTR、レ○プ
530:デフォルトの名無しさん
17/12/12 22:08:56.23 +ghxhmVd.net
絵で区別できねーだろそれ
531:デフォルトの名無しさん
17/12/12 22:09:56.75 CwRQgOlO.net
>>519
でもなんとなくわかるだろ?
人間だと
532:デフォルトの名無しさん
17/12/12 22:12:39.20 +ghxhmVd.net
無理 付いてる字幕次第で印象が全然変わるから
533:デフォルトの名無しさん
17/12/12 22:14:01.82 NQyVP+w1.net
>>518
マジで言ってるのか?
無理無理無理
534:デフォルトの名無しさん
17/12/12 22:15:14.51 yoDcG/vu.net
>>520
なるほど、お前には無理だ
535:デフォルトの名無しさん
17/12/12 22:16:50.37 +ghxhmVd.net
プログラム上で可能なのはせいぜい、
顔の輪郭に対する「目の位置」の違いで、大人か子供かを判別するとか
(二次絵では顔に対して大人は目を上寄りに、子供は目を下寄りに描かれるケースが多い)
そんなもんだろう
んで、どっちにせよ言語仕様の話でなく
画像解析という専門分野行きの話になるのでスレチ
536:デフォルトの名無しさん
17/12/12 22:17:02.32 CwRQgOlO.net
大丈夫だ
ディープインパクトならやってくれる
巨乳にニットセーターってもう人妻だろ
って結論ぐらい出せるだろ
537:デフォルトの名無しさん
17/12/12 22:18:12.64 NQyVP+w1.net
>>524
ディープラーニングはそういうのじゃない分類ができる
でも人間でも一枚絵を見て判断できないのはほぼ無理
538:デフォルトの名無しさん
17/12/12 22:18:48.48 yoDcG/vu.net
>>525
頭にディープインパクトして二度と来るな
539:デフォルトの名無しさん
17/12/12 22:22:07.89 ZGog+EYK.net
webでそういう判定してくれるサービスありそうだけどね
そういや俺もwebとかネットワーク関係まったく触ったことないんだけど、
C#でもVBでもいいけどそっち系のチュートリアルってどこかにある?
洋書は知らんけど本はほとんどないよね
540:デフォルトの名無しさん
17/12/12 22:23:51.41 /hFzA9NO.net
試しに学習させてみればいいやんけ
これはNTR、これは人妻、これはレ●プ、(以下略)
こんなデータを大量に与える
そして最後にテスト画像を見せて当てられるかどうか
541:デフォルトの名無しさん
17/12/12 22:24:07.38 +ghxhmVd.net
Webサービスを展開する話なら、言語がどうこうっつーより
サーバOSとか機器環境とかの話になっちゃうからなあ
542:デフォルトの名無しさん
17/12/12 22:24:09.98 CwRQgOlO.net
>>528
安定するの待ってるんだろうな
機械学習と言ったらコレって確定するの
543:デフォルトの名無しさん
17/12/12 22:40:24.36 NQyVP+w1.net
ディープラーニング、機械学習の本は最近ぼこぼこ出てるよ
内容は似たり寄ったり
地元の図書館にも充実とまではいかないけど今年だけで3冊ぐらい入った
雑誌もディープラーニング特集すると部数が伸びるらしいのでよく特集される
544:デフォルトの名無しさん
17/12/12 22:57:04.37 wz4D/2fS.net
いい加減クラウドじゃ稼げないからディープラーニングに換えただけだろう
出版しても売れなきゃ返本の山だしな
545:デフォルトの名無しさん
17/12/12 23:32:02.56 qioa7JjJ.net
AWSってどこまでガチなの?
書籍も少ないし様子見してた
546:デフォルトの名無しさん
17/12/12 23:36:49.62 mXOR9ERV.net
今更すぎるだろ
エンタープライズでも驚異的な勢いで伸びてて、あと5年もしたらオンプレサーバーなんかほぼ消滅するレベルだぞ
547:デフォルトの名無しさん
17/12/12 23:42:13.92 enzDDAPg.net
何を指標にガチってるのか分からんが
AWSだけで100億ドル超を売り上げるくらいには使われてるだろ
548:デフォルトの名無しさん
17/12/12 23:52:57.04 qioa7JjJ.net
まあ、企業向けのサーバーなんしょ?
閉じたネットワークの業務アプリばっかで今までもあんまり関わり無かったからなぁ
549:デフォルトの名無しさん
17/12/13 00:03:21.24 prgZVef7.net
>>537
イントラのクラウド移行も凄まじい勢いで進んでるぞ。
AWS上にプライベートクラウドを設定してVPNで接続するだけ。
慣れてりゃ一日ポチポチしたら出来上がり
550:デフォルトの名無しさん
17/12/13 00:14:37.13 7y6FaNAn.net
SIのインフラ屋でコード書けない奴はガチでやばいよ
従来のインフラ構築運用なんかクラウドじゃ全く商売にならん
インフラはもはや、アプリエンジニアや社内SEが片手間にポチポチやるもの
551:デフォルトの名無しさん
17/12/13 00:16:41.76 n4AZEwrx.net
テンプレ理解できないやつ何人いるの?
552:デフォルトの名無しさん
17/12/13 00:21:59.75 XGmIS6JF.net
ルールを無視する輩とは一緒に仕事したくないよな。ホント
553:デフォルトの名無しさん
17/12/13 02:36:04.24 celmGK9q.net
すぐに底辺の職業プログラマが談話始めやがる
554:デフォルトの名無しさん
17/12/13 03:35:29.20 Aa4rKi8+.net
馬鹿の相手する馬鹿とどっこいどっこいだわ
両方殺すにはどうしたらいいか質問していい
555:?
556:デフォルトの名無しさん
17/12/13 06:29:25.97 9AlYNlS9.net
>>534
C#erならazulemachinlearningだろw
557:デフォルトの名無しさん
17/12/13 06:31:08.15 9AlYNlS9.net
>>535
インフラ担当者は生き残れますか?
558:デフォルトの名無しさん
17/12/13 09:49:18.40 5hkNOkMK.net
勉強のために作ったアプリの単体テスト始めたけどテストコードすら書けない
やっぱコピペばっかで作れただけで何も身に付いてないんだなぁ
データベースから取ってきた値の比較とかどうやるんだよ…
559:デフォルトの名無しさん
17/12/13 09:57:31.43 WF2IXduz.net
>>546
データベース読むとこのテストはモック使うんだよ。
560:デフォルトの名無しさん
17/12/13 10:03:04.23 5hkNOkMK.net
>>547
モックってダミーみたいなやつのこと?
せっかく教えてもらったのに何が便利になるのか全然イメージ出来ない…
561:デフォルトの名無しさん
17/12/13 10:05:50.55 7X3tjs6V.net
>>548
用語教えてもらっただけだからわからなくても仕方がない
勉強するのなら自分で使うようなツール作れ。簡単なやつでいいぞ
少しずつ機能増やしていくようにしたらスキルが上がっていく
562:デフォルトの名無しさん
17/12/13 10:11:11.76 WF2IXduz.net
>>548
グーグル先生にMoqを教えて貰え
563:デフォルトの名無しさん
17/12/13 10:14:58.04 1Q6K9tEb.net
Aの値を求める
↓
AとBが等しいか
1等しくないなら
Aの値を変更して初めに戻る
2等しくなくて3回Aの値を変えている
失敗で終了
3等しい
正常に終了
というプログラムを作りたいのですが
どう条件分岐や反復を使用していいかわかりません
Aの値の変更は他アプリへの入力で、Aの値を求めるというのは他アプリの状態です
アドバイスお願い致します
564:デフォルトの名無しさん
17/12/13 10:21:01.20 QhF+UxFg.net
>>551
3回ぐらいハードコーディングしろよ
んで同じところをループや関数にすればいい
565:デフォルトの名無しさん
17/12/13 10:24:58.47 7X3tjs6V.net
>>551
C#以前の質問だと思うしいろいろあるんだけど
int count=3;
while (count>0)
{
[Aの値をGet]
if (B==A) break; //正常に終了
count--;
}
if (count>0) {[正常に終了}]
if (count==0) {[3回とも失敗]}
566:デフォルトの名無しさん
17/12/13 10:29:29.60 1Q6K9tEb.net
>>553
ありがとうございます!
これでいきます!
567:デフォルトの名無しさん
17/12/13 12:09:08.61 zXzMZXIu.net
いやいや人の回答にケツつけるのもあれだけど、普通にforループ使った方が分かりやすいよw
だって要するに3回までリトライするってだけの話でしょw
const int rertryCount = 3;
A a;
for (int i = 0; i < retryCount; i++)
if((a = GetA()) == B) return true; //成功
return false; //失敗
568:デフォルトの名無しさん
17/12/13 12:11:06.80 zXzMZXIu.net
const int rertryCount = 3;
これはちょとミスリーディングか。
こだわるなら
const int maxRetryCount = 3;
こっちの方がいいね
569:デフォルトの名無しさん
17/12/13 12:16:44.81 ubNNZos/.net
文末の無駄煽りwイラネ
570:デフォルトの名無しさん
17/12/13 12:21:20.67 WF2IXduz.net
宿題への解答はスルーで
571:デフォルトの名無しさん
17/12/13 12:22:42.84 xw1cKw2m.net
>>555
ところ構わずケツつけてくる奴やな
みんながみんなホモちゃうでしかしw
572:デフォルトの名無しさん
17/12/13 12:57:28.03 qPshWZUl.net
ケツつけるならAは要らない子
573:デフォルトの名無しさん
17/12/13 18:22:17.80 celmGK9q.net
getA()=Bじゃダメな理由は?
574:デフォルトの名無しさん
17/12/13 18:23:23.16 m+6YTdY7.net
>>560>>561
なんで勝手に質問者の要件作るの?
575:デフォルトの名無しさん
17/12/13 18:24:34.34 celmGK9q.net
>>562
何言ってるか分からん
ただの質問
ここ質問スレだろ?
576:デフォルトの名無しさん
17/12/13 18:26:58.52 m+6YTdY7.net
>>563
C#の質問じゃないな
577:デフォルトの名無しさん
17/12/13 18:31:40.81 celmGK9q.net
>>564
じゃあどこですんの?
言語に関係無いプログラマの談話は要らんが
578:デフォルトの名無しさん
17/12/13 18:51:30.28 Aix7CEXX.net
>>546
簡単にユニットテストできるようにSOLIDなコードを書かないとダメ
ただ漠然とユニットテストやればきっとうまくいくんや~などと考えてるようなら先はないぞ
579:デフォルトの名無しさん
17/12/13 19:17:20.81 48dLEnlz.net
VBですみません。下記のようなコードで印刷ジョブの数を取得すると
OSの印刷ジョブ一覧ウィンドウで見える数と違うのですが
なぜ違ってしまうのでしょうか?
'プリントサーバの情報取得
Dim prtSv As New LocalPrintServer()
'印刷キュー取得
Dim que As PrintQueue = prtSv.DefaultPrintQueue
msgbox que.NumberOfJobs
580:デフォルトの名無しさん
17/12/13 19:23:41.42 qPshWZUl.net
>>567
環境を詳細に書かないと解らない
エスパー得意だけどこれは無理w
581:デフォルトの名無しさん
17/12/13 19:25:11.30 qPshWZUl.net
>>561
俺に聞くなw
B == GetA()
で十分でないの
582:デフォルトの名無しさん
17/12/13 19:28:38.16 celmGK9q.net
>>567
OSのジョブ一覧は変更の反映が遅いから
ジョブ一覧の画面でF5押しまくれ
583:デフォルトの名無しさん
17/12/13 19:29:21.02 48dLEnlz.net
>>568
環境はWin7です。プリンタを一時停止にしてジョブを40個くらいためていくと
que.NumberOfJobsは35が返ってきたりします。
時間が経つと40が返ってきたりします。
時間差があるのでしょうか?印刷が成功したか知りたいのですが
そのジョブが見つからないのです。
584:デフォルトの名無しさん
17/12/13 19:29:55.45 JWALofvX.net
>>567
スレタイとテンプレ読め
585:デフォルトの名無しさん
17/12/13 19:33:48.02 48dLEnlz.net
>>570
そうなんですか。困りました。
下記のサイトのようなことがやりたかったのですがorz
URLリンク(jehupc.exblog.jp)
586:デフォルトの名無しさん
17/12/13 19:36:20.02 celmGK9q.net
>>573
読んでないからよくわからんけど反映が遅れるのはジョブ一覧の画面上の話で実際の内部のジョブ一覧はリアルタイムで変更されてるぞ
多分のおまえのやりたいことはできる
587:デフォルトの名無しさん
17/12/13 19:40:02.91 celmGK9q.net
>>571で言えば35の方が正しいってことな多分
知らんけど試してくれ
588:デフォルトの名無しさん
17/12/13 19:46:53.57 48dLEnlz.net
>>574
自分も認識としてはそうなんですが何故か想定と違う値が返ってきてしまい・・・
ちなみに.NETの問題かとも思いましたがAPIのEnumJobs()でも同じ値が返ってきました。
JOB一覧でF5を押しまくって40なのを確認してque.NumberOfJobsを取得しても
35なんですよね。で数分待つと40が返ってきたり。
直前にque.Refresh()はしています。
589:デフォルトの名無しさん
17/12/13 19:56:07.48 celmGK9q.net
>>576
マジか、すまんな
590:デフォルトの名無しさん
17/12/13 19:57:45.10 o6fkcoL6.net
>>576
数分待てば40返ってくんじゃん
解決
591:デフォルトの名無しさん
17/12/13 20:00:10.64 celmGK9q.net
質問ですがWPFでCommandからModelにアクセスするにはどうすればいいですか?
例えばボタンをクリックしたらModelのBuyNumプロパティをインクリメントしてそれをViewのLabelに反映させたりしたいときなどです。
592:デフォルトの名無しさん
17/12/13 20:01:32.95 48dLEnlz.net
>>577
わかりにくくてすみません。
>>578
なるほど!
593:デフォルトの名無しさん
17/12/13 20:55:52.96 6RipZ3Bg.net
>>579
VMにコマンドがあるんだったらVMのフィールドにModel持ってるはずだろ?
何の問題もなくアクセスできるはずだが一体何が分からないのか
594:デフォルトの名無しさん
17/12/13 21:45
595::44.50 ID:pl2NU6fI.net
596:デフォルトの名無しさん
17/12/13 21:56:15.26 i7QaIdVf.net
>>579
よくあるパターンだと、DIコンテナってのを使ったりします。モデルのインスタンスを管理するプログラムが有って
VMが起動されたときにModelのインスタンスをVMに渡すことが出来ます
Prism.Unityとか、MEFとかAutoFacなんてのがありますので興味があれば調べてくださいね
597:デフォルトの名無しさん
17/12/13 22:32:23.84 D2CxP1eV.net
コマンドバインディングとデータバインディングを一緒くたにするのは混乱の元
つかWPFスレの次スレ建ってないんだな
598:デフォルトの名無しさん
17/12/13 23:15:57.29 Aa4rKi8+.net
要るのか?
599:デフォルトの名無しさん
17/12/13 23:21:05.54 +hxIYt9g.net
こっちでうざい論争始められても困るし。
600:デフォルトの名無しさん
17/12/13 23:23:03.58 vLvUNPwO.net
EF Coreを使ってます
UpdateでWhereを指定するにはどうしたらいいでしょうか?
現在は以下のようになってます
ctx.Students.Update(student);
ctx.SaveChanges();
もしくは、行ロックのやり方を教えてください
レコードを更新する際に特定の条件下なら1度だけ更新をしたいです
601:デフォルトの名無しさん
17/12/13 23:31:04.98 celmGK9q.net
>>584
もう廃れてるからね
知らんけど
602:デフォルトの名無しさん
17/12/13 23:37:57.02 muTUiD7C.net
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part22
スレリンク(tech板)
603:デフォルトの名無しさん
17/12/13 23:39:24.47 uYugybSh.net
>>551
こういったのプログラミングするときちゃんと書かれてる通りに作れって思う
仕様書の書き方がクソで勝手に直したくなるのは分かるけど
enum Hoge{最初から,失敗終了,成功終了}
private Hoge Func(A a,B b,Int changeCount){
bool 等しい a==b;
if(!等しい&&changeCount!=3)return Hoge.最初から;
else if(!等しい&&changeCount==3)return Hoge.失敗終了;
else if(等しい)return Hoge.成功終了;
throw new Exception("仕様書に書いてないけど?");
}
604:デフォルトの名無しさん
17/12/13 23:42:41.36 BxJ5qLxy.net
>>587
.Where(条件)追加すればいいんじゃないか?
605:デフォルトの名無しさん
17/12/14 00:09:23.47 AbaQzWBd.net
>>590
面白くない
星一つ★☆☆☆☆
606:デフォルトの名無しさん
17/12/14 06:07:27.62 tSpFRQdC.net
>>591
連結は出来ませんよね?定義には含まれてないので。
具体的にどのようなコードになりますか??
607:デフォルトの名無しさん
17/12/14 07:19:39.96 VVrew0Yx.net
amazon死んでる
AWSも逝った?
608:デフォルトの名無しさん
17/12/14 08:04:04.61 5Zp71Sbj.net
おまえらなんでアジュール使わないの?
609:デフォルトの名無しさん
17/12/14 08:28:56.13 VVrew0Yx.net
>>595
そういう仕事に遭遇しない
でもそんなレアだといざデスマになったときに追加人員が補充できないから人数が少ないってヤバそう
610:デフォルトの名無しさん
17/12/14 08:51:15.38 kupDQT+K.net
アジュールってクラウド鯖環境なだけだが
611:デフォルトの名無しさん
17/12/14 08:58:02.26 AMqoei3b.net
AWSの方が便利ですし
612:デフォルトの名無しさん
17/12/14 09:33:13.26 h0pJUyRR.net
>>597
嘘は良くない
613:デフォルトの名無しさん
17/12/14 09:33:48.37 6p67cfA3.net
アジュールAWSとVPSの違いは?
614:デフォルトの名無しさん
17/12/14 09:40:54.01 +GHlkdpq.net
try catchってどこで囲うのが基本?
メソッドの中身全部かなと思うんだけど
615:デフォルトの名無しさん
17/12/14 09:54:01.28 exEWR3q2.net
>>601
書くなって言われたよ
イベントログに出なくなっちゃうからだって
616:デフォルトの名無しさん
17/12/14 10:26:35.89 4QS0W6Tf.net
???
617:デフォルトの名無しさん
17/12/14 10:38:03.42 T38l1dnq.net
できるだけ狭く
618:デフォルトの名無しさん
17/12/14 11:00:13.42 VYyAdkca.net
>>601
全部でも良いけど
そのメソッド内でキャッチして例外に対応できる場合のみ
619:デフォルトの名無しさん
17/12/14 12:14:15.12 E4k7gbUw.net
どこに書いてもいいけど
} catch (Exception) { }
とかやんなよハゲ、それじゃどこで例外が発生したかわからんだろが、どうやってデバックすんだ
と怒鳴られたんだろう
事なかれ主義で育てられた子が面倒を起こすパターン
事なかれ例外と名付けよう
620:デフォルトの名無しさん
17/12/14 12:19:44.66 yn4+AjAE.net
>>606
だって、このメソッドで落ちると困るじゃん例外とも言う
621:デフォルトの名無しさん
17/12/14 12:33:59.88 PpIxqW4X.net
>>606
vsなら見れるだろ
知らんけど
622:デフォルトの名無しさん
17/12/14 12:52:43.26 h0pJUyRR.net
>>606
問題はそのあと
throw ex
とかしちゃうやつ
623:デフォルトの名無しさん
17/12/14 13:34:33.61 6p67cfA3.net
>>609
語るなら理由も書いてくれ
624:デフォルトの名無しさん
17/12/14 13:37:11.31 exEWR3q2.net
>>606
一律で書かないことになっちゃったけど
本当は何書いて欲しいの?
625:デフォルトの名無しさん
17/12/14 14:07:14.43 h0pJUyRR.net
>>610
>どこで例外が発生したかわからん
に対する補足。Java上がりがよくやるポカ。
626:デフォルトの名無しさん
17/12/14 14:13:12.44 yn4+AjAE.net
>>611
一律で書かないと言うのは集中キャッチハンドラーがあるからでしょ
627:デフォルトの名無しさん
17/12/14 15:27:07.73 exEWR3q2.net
>>613
なんもない
自分で書いた場所にtry catchがそもそもない
628:デフォルトの名無しさん
17/12/14 15:39:34.55 yn4+AjAE.net
>>614
自分で書いてない所にあるんだよ。
629:デフォルトの名無しさん
17/12/14 17:00:13.09 exEWR3q2.net
>>615
ないっす
630:デフォルトの名無しさん
17/12/14 17:32:02.14 us8b95/8.net
何のスレだよここ
631:デフォルトの名無しさん
17/12/14 18:09:08.31 oUWqnTgP.net
IO系とかエラーが発生する可能性のある一帯だけ囲んで、こんなとこじゃエラー出ないよね?
ってとこは囲わないかな
万一そういう所でエラー発生したら、そのエラー箇所を特定しやすいように
売り物のソフトだと、好ましくないやり方かもしんないけどな
632:デフォルトの名無しさん
17/12/14 20:49:00.77 COokNIga.net
復旧可能かつ復旧を試みる事が要件で明示されてればそこでキャッチする
それ以外は基本的に全てキャッチしてはならない
グローバル例外ハンドラに任せてログ出力やユーザー通知を行う
633:デフォルトの名無しさん
17/12/14 20:51:54.39 COokNIga.net
リソースの解放は原則IDisposableとusingで行うこと(try finallyは使わない)
634:デフォルトの名無しさん
17/12/14 22:00:38.77 7SAvsilk.net
>>620
usingはtry finallyに展開されるという・・・
635:デフォルトの名無しさん
17/12/14 22:01:50.75 NV/46Hd7.net
>>621
自分で書いてミスるのを防ぐため
636:デフォルトの名無しさん
17/12/14 22:42:27.89 83z5th3I.net
なんで?
Finallyあると開放されないん?
637:デフォルトの名無しさん
17/12/14 22:52:02.96 6p67cfA3.net
URLリンク(qiita.com)
638:デフォルトの名無しさん
17/12/14 22:58:02.78 6p67cfA3.net
URLリンク(hensa40.cutegirl.jp)
639:デフォルトの名無しさん
17/12/15 02:32:16.25 6xqAElZe.net
1234.5678 => 1,234.5678
1234.56 => 1,234.56
123.456 => 123.456
というように、
数値を3桁区切り+小数点を含める(0埋めしない)文字列を出力するにはどうしたら良いでしょうか?
640:デフォルトの名無しさん
17/12/15 02:43:42.30 OGT2pKSi.net
>>626
641:複合書式指定 https://msdn.microsoft.com/ja-jp/library/txafckwd(v=vs.110).aspx でできそうにないものは整数部分と小数点以下に分けて文字列作って合わせるしかない
642:デフォルトの名無しさん
17/12/15 02:45:25.60 6xqAElZe.net
>>627
C#ってわざわざ面倒臭いことしないといけないんですね・・・
643:デフォルトの名無しさん
17/12/15 02:53:08.52 OGT2pKSi.net
>>628
他の言語でできることならフォーマット用意してあるかもしれないから調べたら?
そこまで見ていないから
644:デフォルトの名無しさん
17/12/15 03:21:16.28 IbhaoRnF.net
>>626
ちょっと格好悪いけど、
ToString( "###,###,###,###,###.########" );
とでもしとけば。
645:デフォルトの名無しさん
17/12/15 09:01:04.44 BaW7Km5G.net
>>626
ggrks
URLリンク(www.atmarkit.co.jp)
646:デフォルトの名無しさん
17/12/15 09:05:36.73 BaW7Km5G.net
Console.WriteLine("{0:#,0} ", 数値);
こんだけな
647:デフォルトの名無しさん
17/12/15 09:14:42.49 BaW7Km5G.net
それかコレな
Console.WriteLine("{0:N}", 数値);
648:デフォルトの名無しさん
17/12/15 12:33:12.63 WmAzWj4RE
>>631-633
小数点以下の桁数が>>626の要望を満たしてない
649:デフォルトの名無しさん
17/12/15 12:48:50.32 6xqAElZe.net
>>631-633
頭悪いレスは必要ないです
質問をよく読んでから答えてください
650:デフォルトの名無しさん
17/12/15 13:08:51.68 BaW7Km5G.net
ググる知能もない低脳に説教されちゃったよ..(^^;
651:デフォルトの名無しさん
17/12/15 14:03:20.57 s/91E6Oz.net
一度でもやってからしゃべってんだろうかこのアホ ID:6xqAElZe は
652:デフォルトの名無しさん
17/12/15 16:15:56.95 M7F98+kf.net
VB.netのクラスの中身の大半をC#に移動したいんだが、Partialしたらいいだろか?
653:デフォルトの名無しさん
17/12/15 16:32:35.38 aCy2oimY.net
vb.netのコードをc#に一発変換してくれるツールがあった気がする
654:デフォルトの名無しさん
17/12/15 16:42:28.20 M7F98+kf.net
Formは無理じゃない。 コードは変換できるのを見たことがある。なのでコード部とか
ライブラリクラスをC#にしようと思う。
655:デフォルトの名無しさん
17/12/15 17:10:02.32 aCy2oimY.net
>>640
URLリンク(dobon.net)
sharpdevelopとかいうのでできた気がすんだよ
ちょっとやってみてよ
試す価値はあるでしょ?
ただ、動作までは知らんから変換出来てもテスト工数は減らせないぞ
656:デフォルトの名無しさん
17/12/15 17:28:02.50 M7F98+kf.net
>>641
ありがとう。やってみてまた報告するよ。
657:デフォルトの名無しさん
17/12/15 17:51:54.84 m9RnQpi/.net
プロジェクト分ければVBとC#共存できるんだから
循環参照が必要じゃないなら無理に変換することもないんじゃないかと
658:デフォルトの名無しさん
17/12/15 18:41:41.68 Rbo0n5z7.net
>>643
VBerがそんな綺麗なコード書くわけ無いでしょ
659:デフォルトの名無しさん
17/12/15 18:43:49.15 M7F98+kf.net
心が綺麗だとコードも綺麗。
660:デフォルトの名無しさん
17/12/15 18:47:39.84 Sbz3X1/O.net
VisualBasicがなかったら
ファイルをゴミ箱入れたいとき困るじゃないですか
661:デフォルトの名無しさん
17/12/15 20:59:15.61 6xqAElZe.net
>>636
>>637
せめてテストくらいしてからレスしてくださいね^^;
C#
662:erレベル低すぎ
663:デフォルトの名無しさん
17/12/15 21:11:29.58 Hv9P7iJ4.net
>>641
バージョンによるな。こけるパターンが特徴的なので
慣れれば機械的に直していける
664:デフォルトの名無しさん
17/12/15 21:29:12.26 GAdh6qIc.net
>>647
はいキチガイ
665:デフォルトの名無しさん
17/12/15 21:30:37.92 wB/Paoxt.net
>>646
Microsoft.VisualBasic.dllだけあればいいよ
666:デフォルトの名無しさん
17/12/15 22:02:04.42 JZUrtsL7.net
>>626
Console.WriteLine("{0:#,#.##########}", 1234.5678);
667:デフォルトの名無しさん
17/12/15 23:04:45.15 ZiMYN4DZ.net
>>648
すんなりは行かんかった?
Formは行けた?
668:デフォルトの名無しさん
17/12/16 08:46:52.59 2xEHZCIG.net
vb formからc# formへctl-aで全選択してコピペできるよ。
ちゃんと言語の変換をしてくれる。
669:デフォルトの名無しさん
17/12/16 09:10:07.48 HogLmiIR.net
デザインは変換できる?
670:デフォルトの名無しさん
17/12/16 09:54:00.60 ghluEyaB.net
あれぇ?
なんかボタンで一発変換だった記憶があるんだけど?
671:デフォルトの名無しさん
17/12/16 10:37:27.38 HogLmiIR.net
クラスAでクラスBをインスタンス化する
クラスCでクラスBのメソッドを実行する。
クラスAでクラスBをインスタンス化する。クラスCでクラスBのメソッドを実行する。
クラスAのインスタンス名は未定の時に、clsCからB.bm()を呼び出す方法?
こういう時にどうすればいい? なんかスマートにできる方法はない?
public class clsA
{
public clsB B = new clsB;
public clsC C = new clsC(B);
}
public class clsB
{
public void bm()
{
}
}
public class clsC
{
clsB B;
private clsC(clsB bb)
{
B = bb;
}
private void doc()
{
B.bm();
}
} 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
672:デフォルトの名無しさん
17/12/16 10:52:11.94 2xEHZCIG.net
>>655
それって vb6 ⇒ vb.net じゃないの?
673:デフォルトの名無しさん
17/12/16 10:54:04.95 VgVQwchc.net
>>656
それでできてるだろ。何が分からないのか全く伝わらない。
あと、そのレベルならAだのBだのと話を一般化しないでズバリ何がしたいのかを書いたほうが適切な回答が得られる可能性が高いと思う。
674:デフォルトの名無しさん
17/12/16 10:56:52.96 ghluEyaB.net
まあ、最悪ベタで組めばいいじゃん
675:デフォルトの名無しさん
17/12/16 11:55:33.53 8tD9WB4W.net
関数をreturn する直前で実行したい処理があるのですが、
try catch finallyを使うとできますが、finally
だけ使いたいのですが、そう言うのは無いですか?
676:デフォルトの名無しさん
17/12/16 12:03:55.12 8r44i3VV.net
ないですね
677:デフォルトの名無しさん
17/12/16 12:07:33.63 EDRAYm5f.net
>>660
複数のreturnの前の同一処理ならreturnの代わりにgotoでその処理へ飛ばせばいいだろ
678:デフォルトの名無しさん
17/12/16 12:08:12.20 VgVQwchc.net
try { return; } finally { } でいいだろ
679:デフォルトの名無しさん
17/12/16 12:08:20.45 2xEHZCIG.net
>>660
try, finallyだけもあるけど
680:デフォルトの名無しさん
17/12/16 12:14:22.30 oPhsj9qx.net
>>660
finallyだけじゃどこを抜けたらか分からないよ、ちゃんとそれぞれ有ります
URLリンク(docs.microsoft.com)
681:デフォルトの名無しさん
17/12/16 12:51:36.41 8tD9WB4W.net
>>665
ああ、出来るじゃない!
今日は気分がいい。さんきゅ
682:デフォルトの名無しさん
17/12/16 16:35:16.86 gJhjPx+L.net
C#初心者の頃(いまもかわらんけど)、一番悩んだのは
インターフェースが分からない。
何がわからないかというと、インタフェースって、自分で一から定義するような
ことが書かれていたが、既存のプログラムで使用しているインタフェースって
何かやってる。
何か定義しないと何もやらないはずなのに・・・・・めちゃ気持ち悪いしわからない。
システムで処理を記述したものも、インターフェースとそのまま呼んでいるから、
わけわからなくてさ~。
なんだ、処理が記述されているものがあるのねと、理解するのにひと月かかったアホ出した。
まあ今も変わらんんけど。
683:デフォルトの名無しさん
17/12/16 16:39:09.26 ghluEyaB.net
設計書も書かないくせに
インターフェース定義するやつがこれまたわからん
馬鹿だろお前
って素で聞いてしまった
684:デフォルトの名無しさん
17/12/16 16:42:29.58 6gulH/Qw.net
インターフェースを機械とか現実の何かで例えたらなんですか?
685:デフォルトの名無しさん
17/12/16 16:45:05.86 ghluEyaB.net
強いて言えば型
100Vコンセントって型=インターフェース
686:デフォルトの名無しさん
17/12/16 16:53:14.91 DOHaPC3l.net
backgroundWorkerにおいて、ある関数を実行していて
その関数内である条件になった時にbackgroundWorkerを停止したいのですが
何か簡単な方法はないでしょうか?
backgroundWorkerで無限ループで関数を実行していて、関数の中の関数でエラーが発生した時にbackgroundWorkerを緊急停止する様に
プログラムが組みたいのです。
687:デフォルトの名無しさん
17/12/16 16:56:31.41 ghluEyaB.net
>>671
今どうなるの?
エラー出ると死んじゃう?
688:デフォルトの名無しさん
17/12/16 16:59:30.93 Ul/CFAof.net
>>671
マイクロソフトの方針でできなくなってます
689:デフォルトの名無しさん
17/12/16 17:03:29.56 ghluEyaB.net
普通に無限ループ抜ければええんちゃうのん?
690:デフォルトの名無しさん
17/12/16 17:05:51.65 DOHaPC3l.net
backgroundWorker内でAという関数を無限ループ実行していて
Aの中ではB、Cという関数が続けて実行されていて
Bである条件(エラー)になった時、ここで全ての動きを停止したいです。
現在はエラーが発生してそのままBと処理が続いていって死にはしませんが意図しない動きをしている感じです
戻り値と条件分岐で場合分けしていけばいいのかなとも思いましたが関数が大量にあり複雑で何か簡単な手段はないものかとお聞きしてみました
691:デフォルトの名無しさん
17/12/16 17:06:41.02 na0PR4/Y.net
>>671
URLリンク(dobon.net)
CancelAsync()でだめな理由があるの?
関数の中でエラー検出できないとかじゃないよね
692:デフォルトの名無しさん
17/12/16 17:13:01.57 DOHaPC3l.net
>>676
キャンセルボタンは一応ついていまして
Aの実行後にボタンが押されていればCancelAsync()を使っています
AやBの関数中でもCancelAsync()と書いて一発で止められればいいのに…という感じです
693:デフォルトの名無しさん
17/12/16 17:14:42.73 na0PR4/Y.net
>>675
通常のスレッドで実行するにしても考え方おかしいと思う
下流で発生したエラーを捕捉できない設計になっています、って言っているのと同じ
C#の問題じゃないんじゃないかな
694:デフォルトの名無しさん
17/12/16 17:19:57.99 DOHaPC3l.net
>>678
そんな気もします…
695:デフォルトの名無しさん
17/12/16 17:31:29.65 na0PR4/Y.net
>>679
同じような質問でTaskの場合
URLリンク(stackoverflow.com)
Henk Holtermanさんは「そういうことを(安全に)したいのならその部分を別アプリにしろ」と言っている
696:デフォルトの名無しさん
17/12/16 17:41:39.84 qA7A9B95.net
>>680
それ、スレッドでタスクのようにキャンセルしたいって話だぞ。
697:デフォルトの名無しさん
17/12/16 17:48:31.95 ghluEyaB.net
普通にstaticのフラグ作って強引に無限ループ抜けちゃうのは?
698:デフォルトの名無しさん
17/12/16 17:50:37.53 oGvDk6LW.net
>>677
まず「止める」って発想がおかしい。
各メソッドが「止まる」ように設計しなきゃ。
各メソッドの引数に処理がキャンセルされたかどうかを返すFunc<bool>を追加して
void A(Func<bool> canceled) {...}
呼び出すときに
A(() => backgroundWorker1.CancellationPending);
とかすればいいんじゃないか
699:デフォルトの名無しさん
17/12/16 17:52:34.38 qA7A9B95.net
>>675
Bでエラーが発生したら例外投げて、backgroundWorker.DoWork内のループでその例外を補足してe.Cancel=trueにするようにすれば。
700:デフォルトの名無しさん
17/12/16 17:58:55.94 qA7A9B95.net
>>680
ごめん。
>>681は全くの間違い。ぼけてた。
ただ、今回はワーカーメソッドの中から中断したいって話なので、外から強引に中断する話とは違う。
701:デフォルトの名無しさん
17/12/16 18:12:53.74 DOHaPC3l.net
>>683
() =>この書き方がよくわからないので
とりあえず今のメソッドを全てvoidからboolに変え、エラー時にfalseを返して
if(メソッド==true)の時だけその後の処理を実行する様にしてみます
>>684
例外を投げるっていう方法がわかりません…調べてみます
みなさん色々ありがとうございました
702:デフォルトの名無しさん
17/12/16 18:22:29.26 cphXnYZp.net
>>668
何言ってんだこいつ?
703:デフォルトの名無しさん
17/12/16 19:04:01.72 ghluEyaB.net
>>687
じゃあ俺が作った
「USBちんぽん」って
使ってくれる?
704:デフォルトの名無しさん
17/12/16 19:11:54.53 FKHtpILn.net
>>688
うん、ほしい
705:デフォルトの名無しさん
17/12/16 19:14:12.13 ghluEyaB.net
>>689
やったぜ
頭悪いんだねw
706:デフォルトの名無しさん
17/12/16 19:15:20.72 FKHtpILn.net
>>690
はやくちょーだい?
707:デフォルトの名無しさん
17/12/16 19:18:34.13 cphXnYZp.net
>>688
疲れてるのか?
日曜日は10時に寝るといいぞ
708:デフォルトの名無しさん
17/12/16 19:19:38.55 ghluEyaB.net
>>692
お前は「USBちんぽん」使ってくれるの?
709:デフォルトの名無しさん
17/12/16 21:53:57.13 B4/eWtrI.net
>>691
URLリンク(dotup.org)
710:デフォルトの名無しさん
17/12/17 01:36:39.71 hpnS8mLh.net
Chartを2個置いているのですが、このフォームを最大化した際にこの比率のままChartをフォームに合わせてリサイズするにはどのように設定すればいいのでしょうか?
Anchorを上下左右全てオンにした場合、自動的にリサイズした際に右側のChartが隠れてしまいます
URLリンク(i.imgur.com)
711:デフォルトの名無しさん
17/12/17 01:40:47.18 hpnS8mLh.net
>>695
補足です
直撮りで申し訳ないですが、1枚目が正常な場合です
これを最大化した時もそのままにしたいのですがanchorを全部設定するだけだと2枚目のように手前側の設定が反映されて被ってしまいます
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
712:デフォルトの名無しさん
17/12/17 01:41:46.33 CSXOgBDh.net
>>695
わかる
俺も知りたい
713:デフォルトの名無しさん
17/12/17 01:50:14.52 CSXOgBDh.net
でもanchorでは多分できないということもなんとなくわかる
比率を自分で計算して位置サイズ合わせするしかないんじゃないかと
714:デフォルトの名無しさん
17/12/17 02:03:32.25 hpnS8mLh.net
>>698
どもです
検索ワード少し変えて探したらこんなのが出てきました
URLリンク(social.msdn.microsoft.com)
少しこの辺りの試そうと思います
回答通り、標準ではそういう機能無いみたいですね
ありがとうございました
715:デフォルトの名無しさん
17/12/17 11:39:32.44 hpnS8mLh.net
>>699
自己解決できました
今さっき使い方少し調べて試したら
TableLayoutPanelで無事目的達成できました
URLリンク(i.imgur.com)
716:デフォルトの名無しさん
17/12/17 12:05:55.48 4m+VWQn4.net
>>667
あえて書くけど
個人で小規模なアプリの場合はインターフェースなんて不要
商用大規模アプリでも使って�
717:ネいところが多いくらいw
718:デフォルトの名無しさん
17/12/17 12:08:11.46 opp+Hz1N.net
>>701
なわけないでしょ
719:デフォルトの名無しさん
17/12/17 12:08:27.63 4m+VWQn4.net
>>675
Task使え
720:デフォルトの名無しさん
17/12/17 12:12:30.50 ILWlCk8x.net
>>701
これは恥ずかしい
721:デフォルトの名無しさん
17/12/17 12:49:56.01 gfqG1JvG.net
基底クラスとインターフェースって何が違うんですか?
722:デフォルトの名無しさん
17/12/17 12:55:53.21 OwhBw4on.net
>>705
そこは基底じゃなくてabstractの抽象クラスじゃね
違いは実装の有無と多重継承かなあ?
723:デフォルトの名無しさん
17/12/17 14:27:27.54 sFu7AEYs.net
>>701
大規模とかそういう問題じゃない
あえて100Vコンセントにする仕様がないとインターフェースは役に立たない
USBちんぽんを採用する理由がプロジェクトにないと意味がない
724:デフォルトの名無しさん
17/12/17 14:51:02.99 RNTbc2+q.net
意味の共有ができない喩えいいかげんやめたら
725:デフォルトの名無しさん
17/12/17 15:33:24.95 sFu7AEYs.net
>>708
君が普段やってることじゃんw
USBちんぽんの使用の押し付け
やられて嫌ならやめるべきだねw
726:デフォルトの名無しさん
17/12/17 20:19:06.53 6F/MtA/p.net
>>701
またテメエか
公害は死ねっていったろ
727:デフォルトの名無しさん
17/12/17 21:06:17.16 8SWMSnGu.net
static な関数を複数のスレッドから利用するのは危険ですか?
具体的に言うと、データベースを読み書きするような処理です。
注意事項など教えて下さい。
728:デフォルトの名無しさん
17/12/17 21:44:44.79 sFu7AEYs.net
>>711
トランザクションどうなってるの?
729:デフォルトの名無しさん
17/12/17 22:21:15.29 qS3H4jkn.net
>>712
何もしてません。と言うかトランザクションってよく分かっていません。
どうすべきでしょうか?
730:デフォルトの名無しさん
17/12/17 22:22:18.95 sFu7AEYs.net
>>713
いい機会なのでトランザクションについて調べてみるでFA
731:デフォルトの名無しさん
17/12/17 22:25:31.50 ZCl426tV.net
なんがどうなれば危険なのかしらんが、そんなものはその関数の実装によるわ
732:デフォルトの名無しさん
17/12/17 22:27:39.83 sFu7AEYs.net
>>713
序盤の入金出金の説明がわかり易かった
URLリンク(itpro.nikkeibp.co.jp)
733:デフォルトの名無しさん
17/12/18 09:06:05.17 325qmzym.net
>>711
ef噛まして楽観的排他制御でfa
734:デフォルトの名無しさん
17/12/18 09:47:39.52 BBY2VQE+.net
排他制御なんて自分でやらなくてもDB側で勝手にやってくれるんじゃないのか?
735:デフォルトの名無しさん
17/12/18 09:50:45.06 /wskk4Cx.net
public static double keisuu(string mojiretu)
{
switch (mojiretu)
{
case "aaa": return 1.2; break;
case "bbb": return 1.6; break;
default: return 0; break;
}
}
全てのbreakのとこで到達できないコードが検出されました
と出るのですが何がいけないのでしょうか
736:デフォルトの名無しさん
17/12/18 09:53:30.03 I3I0Txu7.net
>>719
returnしたらbreakに到達出来ないからbreakは要らない
737:デフォルトの名無しさん
17/12/18 09:58:58.14 /wskk4Cx.net
ありがとうございます!
738:デフォルトの名無しさん
17/12/18 10:05:08.96 /wskk4Cx.net
break消してもフォールスル―とかにはなりませんよね?
739:デフォルトの名無しさん
17/12/18 10:19:47.17 I3I0Txu7.net
なりません
740:デフォルトの名無しさん
17/12/18 11:01:50.77 /wskk4Cx.net
ありがとうございます!
741:デフォルトの名無しさん
17/12/18 20:04:12.41 +/hEAeWc.net
>>718
楽観的に考えるとやってくれないが悲観的に考えるとやってくれる。
742:デフォルトの名無しさん
17/12/18 20:15:27.26 pniu1iMQ.net
上手いこと言ってる場合ですか
743:デフォルトの名無しさん
17/12/18 21:09:49.51 ce0jsCws.net
>>711
状態を持っていない関数なら安全
フツーのstatic関数はこれなハズ
immutableな状態を持つ関数も安全
mutableな状態を持つ関数ならそれを作った人を処刑すべきw
744:デフォルトの名無しさん
17/12/18 21:33:23.50 6wmobrlb.net
それは甘い
例えばConsole.Writeは当然状態と持たないが、
何か適当な文字列(πでも聖書でも何でもいい)を少しずつ標準出力に
書き出すメソッドを2つのスレッドで実行したらどうなる
745:デフォルトの名無しさん
17/12/18 21:40:21.06 +HXT0ym6.net
パソコンが爆発する
746:デフォルトの名無しさん
17/12/18 21:42:12.35 YSeGcmGL.net
Consoleクラスってスレッドセーフじゃなかったっけ
747:デフォルトの名無しさん
17/12/18 21:54:40.33 aYaUR9Gg.net
コンボボックスで中身を設定するときコードを書いてロード時に呼び出す方法以外に、visualstadioでコードを書かずに中身を設定するような機能はないのでしょうか?
そういうコントロールなどないでしょうか?
748:デフォルトの名無しさん
17/12/18 21:56:53.79 z1EessDi.net
>>731
画面編集モードのプロパティウィンドウから設定できるじゃん
749:デフォルトの名無しさん
17/12/18 21:57:37.55 ce0jsCws.net
>>728
残念ながら「コンソール」と言う外部IOを持っているんだよ
750:デフォルトの名無しさん
17/12/18 22:15:16.76 ce0jsCws.net
>>730
せやね
751:デフォルトの名無しさん
17/12/18 22:18:38.50 aYaUR9Gg.net
>>732
助かりました感謝します
752:デフォルトの名無しさん
17/12/18 22:53:45.36 kRxIzXOP.net
URLリンク(ideone.com)
上のようなjson形式があった場合にTestのcount,pageは問題なくデシリアライズできるのですがPersonのname,ageは下のように書いてみてもまったくできません
var Test = JsonConvert.DeserializeObject<Test>(Json);
foreach (var r in Test.status)
{
Console.WriteLine(r.name);
}
Json.netを使っているのですがどのようにしたらいいでしょうか?
753:デフォルトの名無しさん
17/12/18 23:11:52.12 3CP1/jFn.net
>>736
URLリンク(beachside.hatenablog.com)
これ参考にJsonConverterを継承すりゃいいんじゃねーの?
754:デフォルトの名無しさん
17/12/18 23:28:28.84 pniu1iMQ.net
>>736
ワシの環境だとこれで成功したんだがどこがやりたいことと違うんやろう
URLリンク(ideone.com)
755:デフォルトの名無しさん
17/12/19 00:49:42.79 aZpIRKJe.net
>>737
その2 JsonConverterを使ってデシリアライズの10行目p.nameでnameが見えずエラーになります…
>>738
デバックを行うと
foreach (var r in Test.status
{
Console.WriteLine(r.name);
}
のrの部分がnullになり結果が何も表示されません
cvrl + spaceでr.name自体は出るのですが…
756:デフォルトの名無しさん
17/12/19 00:53:59.81 ySpyuYdG.net
>>739
変数名Testを違うのに変えてもダメですか?
757:デフォルトの名無しさん
17/12/19 01:03:43.75 aZpIRKJe.net
>>740
deserializeに変えてみても駄目ですね
とりあえず今日は寝て明日先輩にも聞いてみます
758:デフォルトの名無しさん
17/12/19 07:59:35.15 ChgNtW7Q.net
c#にレクトトラッカーってないですか?
759:デフォルトの名無しさん
17/12/19 08:27:59.60 JkA1xsmg.net
非同期な複数のスレッドから、staticクラスの中のstreamwriterでcsvにログを書いてます
タイミングにより、ファイル競合?ロック?するようで、一つのスレッドからしかログが出力されません
ロック解除を待機するみたいなことはどうやるのでしょうか?
760:デフォルトの名無しさん
17/12/19 08:36:09.07 ChgNtW7Q.net
>>743
俺、そういうログ一生懸命作ろうとしたらスレッド毎にログ出してよって言われたよ
結局待ちが発生すると
ログの発生タイミングっていうか順序が全くの嘘っぱちになっちゃうじゃん
そんなゴミいらねーって言われたぜ
上司がいるならちょっと仕様確認オススメ
761:デフォルトの名無しさん
17/12/19 08:44:00.33 LhTNVyY+.net
Queue使えば
762:よくね ログ出力メソッドはエンキューするだけ ログ出力はワーカスレッドでのんびりやればいい
763:デフォルトの名無しさん
17/12/19 09:13:04.87 nH54/Jdj.net
素直にLoggingライブラリ使う
メンテナンスする人の気持ちも考えなきゃ
764:デフォルトの名無しさん
17/12/19 09:18:25.50 yH1cU4+B.net
いつも思うけど、やっぱAutoRrsetとかのイベント付きキューなんてないの?
765:デフォルトの名無しさん
17/12/19 09:53:23.28 33gf6qei.net
>>747
BlockingQueueのコンストラクタにConcurrentQueueを渡す
766:デフォルトの名無しさん
17/12/19 10:25:11.81 OVvTmQOX.net
BlockingCollectionだな
ちなみにコンストラクタに基になるコレクション渡さなかったら既定でConcurrentQueueが使われる
767:デフォルトの名無しさん
17/12/19 10:28:02.49 gf33i/87.net
>>743
SeriLogの実装みてみ
768:デフォルトの名無しさん
17/12/19 10:32:13.69 NMj9FFtI.net
やってみた感じぶっちゃけ難しい
片方のスレッドが超忙しいとき待ちが発生すると他のスレッドが全く動かなくなっちゃう
769:デフォルトの名無しさん
17/12/19 11:33:40.95 Ck77l9Yv.net
もう書いてる人がいるけど、前後関係が重要なら文字通りバッファーを設けるだけだよね
ライブラリのQueueは使いづらいからたぶん自作することになるけど、そんな難しくない
770:デフォルトの名無しさん
17/12/19 11:52:48.64 VR9xxmjw.net
Nlogじゃないの?
771:デフォルトの名無しさん
17/12/19 12:08:45.23 K2Dj0raT.net
C#特有というわけでは無いですが、例えば抽象クラス「費用」を作った後、費用合計を求めたい場合、費用の各サブクラスから値を取得し合算するのと「費用合計」クラスを作って、そこだけに問い合わせるの、どちらが良い作りでしょうか
772:デフォルトの名無しさん
17/12/19 12:10:26.76 yH1cU4+B.net
>>748
>>749
へーそうかい!?
調査してみるよ。
ありがとうね
773:741
17/12/19 12:37:26.95 JkA1xsmg.net
順序は気にしません
2つのスレッドそれぞれから1回/秒ずつ出力されるだけです
774:デフォルトの名無しさん
17/12/19 12:43:08.19 tMFeAU0g.net
>>754
サンプルコードを見せてよ
775:デフォルトの名無しさん
17/12/19 14:22:15.69 Ck77l9Yv.net
>>754
何を聞きたいのかよく分からないw
たぶん俺だけじゃないと思う
とりあえず「費用合計」クラスは普通に考えればない
合計を求める費用を集約しているオブジェクトがあるなら、そのオブジェクトに
合計させる(LINQのSum使ってもいいし自分でメソッドかプロパティを書いてもいい)のが普通
そんなものなくても配列にでもぶち込んでLINQ使うだけじゃないの?
776:デフォルトの名無しさん
17/12/19 14:32:35.77 f0pyN6AV.net
いやなかなかいい質問だと思うよ
初心者でそこに気付けるのはいい視点だと思う
素質がある
中級者でもそこに全然思いが至らない人がいて困る
素質のない人だ
Sumを呼ぶとその時点で計算が行われるのことが困る場合がある
10個スレッドがあってそれぞれでSUM呼ばれて値が一致しないとか
そのつどDB読んじゃって負荷がかかりすぎるとか
777:デフォルトの名無しさん
17/12/19 14:44:56.70 /RoT047O.net
>>754
費用クラスが合って費目毎にインスタンスを作るとか
費用合計クラスとか
何かを大きく勘違いしている
778:デフォルトの名無しさん
17/12/19 14:45:53.04 /RoT047O.net
才能なし最下位確定じゃ
779:デフォルトの名無しさん
17/12/19 14:47:19.61 RU/P54BS.net
費用合計の仕様次第じゃん
780:デフォルトの名無しさん
17/12/19 14:53:12.54 m20tEW6J.net
>>761
おまえ顔にハナクソ付いてんぞ
781:デフォルトの名無しさん
17/12/19 14:55:25.58 /RoT047O.net
ウンコ確定
782:デフォルトの名無しさん
17/12/19 14:57:42.73 RU/P54BS.net
>>763
NG
ハナクソに顔が付いてる可能性を除外できてない
783:デフォルトの名無しさん
17/12/19 14:57:48.67 vDUVA/Ha.net
>>764
おじいちゃん口臭いですよ^^
784:デフォルトの名無しさん
17/12/19 15:02:05.90 /RoT047O.net
それケツだ
785:デフォルトの名無しさん
17/12/19 15:58:21.40 f0lLnGqp.net
ASP.NET MVCのControllerの処理で、そこだけでちょちょっと利用する
関数などが沢山増えて来てコードが数千行になって来たのだが、
そう言う関数はどこに置けばいいの?
MVPクラスの人の回答をお願いします。
786:デフォルトの名無しさん
17/12/19 16:10:19.74 RU/P54BS.net
partialだな(by一般兵)
787:デフォルトの名無しさん
17/12/19 16:37:05.61 EJrHySC4.net
partialとかブッコイて一般兵気取りかよw
見習いもいいとこだぜ。入隊前じゃねぇの?
788:デフォルトの名無しさん
17/12/19 16:41:36.67 0zOqWbHM.net
>>768
初心者スレにMVPクラスの人はいない
regionとTODOで整理したらいいだけじゃね
789:デフォルトの名無しさん
17/12/19 16:53:03.26 8WX8gLVn.net
Controllerに何でも詰め込むからだろ
Modelにやらせればええのだ
790:デフォルトの名無しさん
17/12/19 17:05:55.38 RU/P54BS.net
>>770
代案を出せよMVP
791:デフォルトの名無しさん
17/12/19 17:48:31.52 TOTUMgYQ.net
俺が呼ばれた気がした
792:デフォルトの名無しさん
17/12/19 17:52:51.22 VU3/qJii.net
昔は相談室とこのスレにあの人が住んでたんだけどね
今もいるんだろうか?
793:デフォルトの名無しさん
17/12/19 18:37:30.91 ayXhJHgO.net
>>768
決まった答えはない
責務に応じて分割するだけ
794:デフォルトの名無しさん
17/12/19 18:40:59.36 J+VWEpvK.net
「決まった答えはない」とか言うの決まった答えしかできない奴よくいるよねw
795:デフォルトの名無しさん
17/12/19 18:53:48.71 JM38580+.net
>>777
日本語www
796:デフォルトの名無しさん
17/12/19 21:56:50.83 cjNZWQaj.net
費用合計クラスの者ですが、以下のようなクラス設計をしました(実装は一応英語です)
public abstract class 費用
{
public abstract int 金額();
}
public class 支払家賃 : 費用
{
public override int 金額()
{
return 100;
}
}
class 水道光熱費 : 費用
{
public override int 金額()
{
return 200;
}
}
費目が増えても多態で対応できるのでオブジェクト指向しているなと思ったのですが
費用合計を出すのに都度インスタンスを作るのがなんだか野暮ったく
一般的なやり方をしているのか気になり投稿しました
このような書き方は、何か問題があるでしょうか?
797:デフォルトの名無しさん
17/12/19 22:01:25.18 vSkEKb16.net
データベース使いなさい
798:752
17/12/19 22:02:23.97 cjNZWQaj.net
ちなみに、費用クラスで各費目を管理し
費用合計や各費目の値を返すメソッドを作ろうと思ったのですが
抽象クラスに「費目」という名前を使ってしまったので
テンパっています
OOは命名が難しいなと
799:デフォルトの名無しさん
17/12/19 22:05:19.18 N/VqY3nf.net
ありがちな形にこだわるタイプか
継承しなきゃならないほど金額()が込みいっているのかは置いておいて「動けばいいんだよ」
800:デフォルトの名無しさん
17/12/19 22:06:13.10 MJol/7NU.net
全体見てないからなんとも言えんけど
その粒度でクラス作るとクラス図ってどうなるの?
2000項目あったら2000クラス作るの?
って心配になった
あとは動けばいいよ
801:デフォルトの名無しさん
17/12/19 22:12:15.71 7vxZYYFe.net
>>781
だから悪いけど結局何が聞きたいのか伝わってないと思うよw
public static class 費用
{
public const int 支払家賃 = 100;
public const int 水道光熱費 = 200;
public const int 総費用 = 支払家賃 + 水道光熱費 ;
}
なんかこれで問題ないようにも聞こえるけどこれじゃダメなの?
802:デフォルトの名無しさん
17/12/19 22:12:45.55 XIiNWcV9.net
>>779
才能無し、問題外
以上
803:デフォルトの名無しさん
17/12/19 22:13:51.01 ySpyuYdG.net
>>785
クッサw
死ねよハゲ^^
804:デフォルトの名無しさん
17/12/19 22:15:56.11 XIiNWcV9.net
>>786
センスの欠片もない
キミにプログラム開発は無理
805:デフォルトの名無しさん
17/12/19 22:17:09.67 ySpyuYdG.net
>>787
口臭いです^^
歯磨きサボらないで下さい・・・
806:デフォルトの名無しさん
17/12/19 22:20:34.71 XIiNWcV9.net
>>788
ここまで酷いのは見たことがない
誰かが適切なアドバイスをしたとしてもキミは斜め45度下へぶっとぶだろう
上ではなく下だwww
807:デフォルトの名無しさん
17/12/19 22:21:50.93 Li3fAhD+.net
どうやったらこんなつまんないレスを返せるんだよ...
重症やな w
808:デフォルトの名無しさん
17/12/19 22:24:47.20 ySpyuYdG.net
>>789
顔赤くなってますよ^^
もっとクールなキャラだったような気がします・・・
809:デフォルトの名無しさん
17/12/19 22:29:22.36 f0lLnGqp.net
MVPクラスの人は居ますか?
810:デフォルトの名無しさん
17/12/19 22:30:42.82 MJol/7NU.net
>>792
>>779をエントリーしといた
811:デフォルトの名無しさん
17/12/19 22:30:56.03 XIiNWcV9.net
>>791
余りにも寒いコードを見たものでなw
812:デフォルトの名無しさん
17/12/19 22:32:05.29 7vxZYYFe.net
VIP患者なら大勢いるねw
813:デフォルトの名無しさん
17/12/19 22:35:08.57 ySpyuYdG.net
>>794
誰と勘違いしているのでしょう・・・
IDはちゃんとチェックしましょうね^^
814:デフォルトの名無しさん
17/12/19 22:38:19.96 XIiNWcV9.net
>>796
>>779 の同類だろwww
815:デフォルトの名無しさん
17/12/19 22:41:32.93 ySpyuYdG.net
>>797
おやおや・・・
とても都合の良い解釈ですね^^
右も左も分からない初心者に「センス無し、問題外」なんて冷たい言葉をかけるのはやめましょうね・・・
816:デフォルトの名無しさん
17/12/19 22:50:03.39 z/JS3u8x.net
まあ、自分が駆け出しの頃に上司にそう言われたことの腹いせにここで鬱憤晴らしてるんだろうなぁ....
817:デフォルトの名無しさん
17/12/19 23:01:26.33 MJol/7NU.net
別にどう組んでも動くし
正解はないのかもな
ただ、この言語で表現できる中規模のまとまりをそんなプロパティレベルのもんに使われると粒度の把握がし難いなと
結局設計の良し悪しなんてソイツの気分だからね
818:デフォルトの名無しさん
17/12/19 23:48:04.54 QDUgEa5j.net
例が例だから粒度的におかしいけどこんなこともできますよ的な…
Addで費用つっこんで使える
Removeとか全部略
public class 費用リスト
{
long sum = 0;
public long 合計 => sum;
List<費用> list = new List<費用>();
public ReadOnlyCollection<費用> 品目 { get;}
public 費用リスト()
{
品目 = new ReadOnlyCollection<費用>(list);
}
public void Add(費用 hiyo)
{
if (hiyo == null) { return; }
sum += hiyo.金額;
list.Add(hiyo);
}
}
819:デフォルトの名無しさん
17/12/20 00:00:42.82 +SxGwy2+.net
わざわざ費目をクラスで分けている理由のことじゃないの?
>>801だけなら別に必要ないかと。
820:デフォルトの名無しさん
17/12/20 05:02:03.39 /+M3aR4Y.net
>>779
例として固定値を返していると仮定
金額が費用の状態によって複雑になるなら有な考え方だと思う
821:デフォルトの名無しさん
17/12/20 05:27:10.69 uEdWuAdp.net
ねーな
業務上3000とか4000とか値扱ってる奴のが多いだろ
こういう組み方見るだけでうげっとする
じゃあ、構造を把握するためにクラス図でも見てみよーかって
資料開いた瞬間閉じるわ
822:デフォルトの名無しさん
17/12/20 06:24:16.03 w7lpXa1y.net
プログラムセンスのあるヤツなら最初からやらない間違いで
残念ながら矯正不能なんだわ
823:752
17/12/20 07:08:03.81 FojWkfgf.net
費目が8個なのでサブクラスに各費目クラスを作ったのですが。。。
サブクラスは何個くらいが適当なのでしょうか
10個超えるとアウトでしょうか
824:752
17/12/20 07:15:48.78 FojWkfgf.net
ちなみに費目をクラスで分けた理由は、費目ご
825:とにちょっと込み入った算出処理をするので、それぞれを閉じ込めておきたいと思いました でも、費用が最小の粒度の方が一般的な雰囲気ですね 急遽プログラムをやれと言われた人間なのでセンスとか言われると厳しいです
826:デフォルトの名無しさん
17/12/20 07:35:47.88 +xQghQuB.net
>>807
ならサブクラスでいいよ
ここの連中は単純な家計簿みたいなツールを前提に話してる
そうじゃなく対象が複雑なら話は変わる
827:デフォルトの名無しさん
17/12/20 07:42:10.14 uEdWuAdp.net
>>808
変わるかなぁ?
日○とか三○でもそんなの見たことないよ
ちなみにそこだと項目数が10万とか超えちゃってるかんね
それ全部クラス作ったらw
828:752
17/12/20 07:53:51.41 JgbCLwPB.net
>>808
クラス分けしても悪くはないですか
ありがとうございます
ただ、費用の抽象クラスを費用クラスにしてメソッドを各費目算出とすると、メソッドに「費用合計算出」を作っても違和感が無いかなとも思い
プログラムは難しいとしみじみ思いました
829:デフォルトの名無しさん
17/12/20 07:59:44.59 +xQghQuB.net
>>809
対象としてるドメインが違うだろ
呆れるわ
830:デフォルトの名無しさん
17/12/20 08:14:04.00 XFxcCwxD.net
業務アプリの設計なんかDFD描いてトランザクションスクリプトでいいよ
開発者全員が相当慣れてない限り、まともなオブジェクト指向でスケールさせるのは現実的に無理
831:デフォルトの名無しさん
17/12/20 08:17:09.42 dzFn8RAE.net
費目の数が10万!?
ないわー w
832:デフォルトの名無しさん
17/12/20 08:20:29.69 dzFn8RAE.net
>>810
> ただ、費用の抽象クラスを費用クラスにしてメソッドを各費目算出とすると、メソッドに「費用合計算出」を作っても違和感が無いかなとも思い
個々の費目で合計なんて求めようがないと思うが...
合計の算出は費目を束ねるクラスでやるべき話じゃね?
833:デフォルトの名無しさん
17/12/20 08:23:01.94 TnQp+4qQ.net
それ以前に、費用の集計なんかSQLでいいよ
834:デフォルトの名無しさん
17/12/20 08:44:12.56 uEdWuAdp.net
>>813
余裕っしょ
設定数100個の部品が100個あっただけでもう一万よ
でかい機械で部品数たった100個とかありえないから10万は確実に超える
もっとあるだろうなぁ