C#, C♯, C#相談室 P ..
324:デフォルトの名無しさん
17/03/02 02:04:51.98 ggH8M0CB.net
>>313
もしかしてあらかじめ領域を準備して,自分で足していく,とか‥
325:デフォルトの名無しさん
17/03/02 02:30:07.47 4HioNM+3.net
>>299
違法と犯罪は違うぞ
326:デフォルトの名無しさん
17/03/02 02:41:55.30 iFkNWUjs.net
>>313
>>280
327:デフォルトの名無しさん
17/03/02 06:45:07.41 JZiPjSZc.net
言語だのStringBuilderだのという小手先のテクニックの問題ではないだろ
>>280のアルゴリズムで実装したら100倍とかのオーダーで速くなるはず
328:デフォルトの名無しさん
17/03/02 07:40:36.76 WqhQkxL/.net
口だけならなんとでも言え
329:る 実装して計測してコードと計測結果を晒してから主張して
330:デフォルトの名無しさん
17/03/02 07:52:06.73 Ct6l/xwh.net
>>317
280は検索で遅いとき
置換で遅いときはstringbuilderをキッチリサイズ指定する方法でやらないとダメ
まず切り分けかな?
331:デフォルトの名無しさん
17/03/02 08:49:47.79 oX3M/pPf.net
検索が8,200あるのに、マッチするのはそのうち1つ有るかどうかなんだから
圧倒的に検索の問題になるだろうね
普通は
332:デフォルトの名無しさん
17/03/02 09:05:00.59 Ct6l/xwh.net
>>320
いや3万文字を置換のたびに1回1回stringのreplaceしてたらその度に3万文字分の配列を再確保
これが致命的
stringのreplaceはやってはならない
stringbuilderで
これも使い方悪いと速度出ないので正しい感じで
333:デフォルトの名無しさん
17/03/02 09:06:59.45 Ct6l/xwh.net
キーワードの検索の方はdictionary使ってるって言うし十分早いんじゃないかと予想
334:デフォルトの名無しさん
17/03/02 09:07:18.82 cjA1b3op.net
ツリーポインタに文字列中の開始インデックスをセットで持たせておいて、
終端ノードまで来たら開始インデックスから後を削除し、終端ノードに持たせてある置換文字列を付加し、現在のツリーポインタを全て破棄
こうすれば280で置換も効率的にやれるよ
335:デフォルトの名無しさん
17/03/02 09:17:20.56 cjA1b3op.net
>>321
それ文字列が長ければreplaceのための線形探索がネックになるはずで、StringBuilderは直接関係ないでしょ
簡単に効率を改善するんなら、全キーワードのうち最長のキーワードの文字数と同じサイズのバッファを持っといて
そこに対して置換をかけりゃいい
もちろんその置換結果を最終出力の文字列として連結していくところはStringBuilderを使うべきだけど
336:デフォルトの名無しさん
17/03/02 10:02:53.43 xcfTeAxl.net
問題は用途が不明だから、仕様が決まらない
に限定されると思ふ ノ ヽ(・ω・)/ズコー
337:デフォルトの名無しさん
17/03/02 12:13:19.52 63yIksCz.net
いいからコード書いて結果出そうぜ
338:デフォルトの名無しさん
17/03/02 13:30:45.83 NvG2Ox0H.net
ある程度の個数だとキーワードを全部つなげた正規表現を作るのが定石っぽいけど、
一万近いとどうなんだろうか
339:デフォルトの名無しさん
17/03/02 13:39:24.58 Ct6l/xwh.net
>>324
置換後に短くなっても駄目っぽいけどね
340:デフォルトの名無しさん
17/03/02 13:42:21.47 j0RdOmJS.net
8200のうちマッチが1つあるかどうかなのか、マッチがたくさんあるのか
で方法変えた方がいいな
341:デフォルトの名無しさん
17/03/02 16:45:48.51 yzi1qiN6.net
>>277
そんな変な処理をしなければいいだろ。
解決!
342:デフォルトの名無しさん
17/03/02 19:36:05.41 tOCPWbBv.net
こういうアルゴリズムのボトルネックってどうやって探すんだ?
343:デフォルトの名無しさん
17/03/02 19:43:30.86 j0RdOmJS.net
アルゴリズムのというか、処理のボトルネックはパフォーマンスプロファイルで出る
344:デフォルトの名無しさん
17/03/02 19:47:35.64 eNjjKtZ0.net
味見すりゃ分かるだろ。
それ以前にベタにやっても余裕だと思うが。
345:デフォルトの名無しさん
17/03/02 19:54:31.82 Ct6l/xwh.net
>>331
プロファイラ使えるようになるのが一番いいね
ただ、それじゃわかりにくいときもあるから知恵をつけるのも大事だと思う
346:デフォルトの名無しさん
17/03/02 20:14:46.47 eNjjKtZ0.net
ちなみに今回のはプロファイラでは分からんぞ。
例えばString.Replaceと出て終わり。
URLリンク(msdn.microsoft.com)
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
その先の解像度は一般的に無いでしょ。(俺はC#のプロファイラを使ったことは無い)
だからここでやってるみたいにCLR内の動作を考える必要がある。
347:デフォルトの名無しさん
17/03/02 20:23:23.74 j0RdOmJS.net
>>335
それはプロファイラの考え方を間違ってる(使ってないみたいだから知らないのは当然かもしれんが)
replaceがネックって出れば
348:サれでいいんだよ
349:デフォルトの名無しさん
17/03/02 20:34:59.52 Ct6l/xwh.net
>>336
そうだね
さらにgoogleで
replace 遅い c#
なんてキーワードで検索かければもう解決方法も見つかったようなもんだね
350:デフォルトの名無しさん
17/03/02 20:42:38.33 eNjjKtZ0.net
>>336
いや俺は他言語(JavaScript)ではプロファイラ使いまくりだぞ。
そしてプロファイラ自体は見た目ほぼ同じだし。当たり前だが。
というか今回は20行程度のプログラムで2重ループするだけだろ。
ベタでやった場合、String.Replaceが出るに決まってるだろ。
お前はアホの子か?
問題はそれをどう変えたらどう改善されるかの見通しを立てることだろ。
それはここでみんながやってるように、自分で考えないと分からない。
とはいえここで案を出してもらってるんだし、後はがんばれでしかないが。
351:デフォルトの名無しさん
17/03/02 20:44:03.61 maE+uJIv.net
>>338
馬鹿は一生js書いてろ
くせえから出歩くなクソが
352:デフォルトの名無しさん
17/03/02 20:49:46.45 rlmCwDYA.net
javascriptのプロファイリングは大切だからねえ
品質の悪いライブラリと品質の悪い人材によって書かれているから
すぐsucks so muchになるんだ
353:デフォルトの名無しさん
17/03/02 21:44:03.77 eNjjKtZ0.net
>>340
いやJavaScriptはJITがエグイからでしょ。(同じ傾向はC#にもあるはずだが)
例えばHTMLの特殊文字を変更する場合、string.replace(Regex,func)で纏めるよりも、
数個なら string.replace().replace().replace() とかハードコードした方が速かったりする。
ボトルネックがソースから予測しづらいからプロファイラを使うしかない。
その点、Cは最初から見えた状態で書くからいい。
ただこのあっさり感、C#ならString, StringBuilder, Regexで試して、
それ以上は諦める文化なのかもしれんね。そういう用途の言語ではあるし。
C的アプローチで限界速度を追求するのではなくてね。
354:デフォルトの名無しさん
17/03/03 07:07:46.01 GM13pkfI.net
やっぱここで質問したのが間違いでした
ろくな解決策が出ないので
もう結構です
355:デフォルトの名無しさん
17/03/03 07:16:35.43 cZXazyZL.net
なあ、、、
文字列探索アルゴリズムの問題だと思うのは俺だけかな?
そこを自前で実装すれば高速化できると思うのだけど
356:デフォルトの名無しさん
17/03/03 07:22:10.27 4qcBtzlj.net
>>343
それは>>280で出てる
357:デフォルトの名無しさん
17/03/03 07:22:40.42 cZXazyZL.net
URLリンク(developer.hatenastaff.com)
置き換え後、どこに格納するかはたいして重要じゃないはず。
状況に応じた探索アルゴリズムを使用することが重要。
自前実装は辛いけど。
358:デフォルトの名無しさん
17/03/03 07:31:45.18 ELiKOyhw.net
誰か>>280を実装してみてよ
359:デフォルトの名無しさん
17/03/03 07:34:13.74 4qcBtzlj.net
>>345
その「状況」は単純に探索をどうするかだけではないよ
置換処理に適したアルゴリズムを使用することが重要
その意味ではトライ木を使った方法(280)はリアルタイムで読んだそばから置換できるから目的に合ってる
360:デフォルトの名無しさん
17/03/03 07:50:58.21 pVtcQ1mY.net
そもそも何が目的なのか説明しろよ
361:デフォルトの名無しさん
17/03/03 07:54:40.78 a7lwSDS4.net
アフィ目的って気づけよバカども
362:デフォルトの名無しさん
17/03/03 07:56:17.33 pVtcQ1mY.net
アフィって何よ?
363:デフォルトの名無しさん
17/03/03 08:06:18.44 hxiWJWmX.net
>>347
検索された文字列から変換後の文字列を求める手間の話?
8,200個くらいならたいしたことないと思う
364:デフォルトの名無しさん
17/03/03 08:19:11.00 ELiKOyhw.net
誰も実装できないの?
365:デフォルトの名無しさん
17/03/03 08:30:26.60 LqKyLlg1.net
>>352
できるのわかってるし
正直、対象の文字列に対してdictionaryでまとめてある群からヒットさせるならそこまで変わらないと俺は思ってるので興味ない
さらに話題提供者は明確な仕様を出したわけではないので現状では「組めない」が正解
さらにこの問題は対象のデータの持ち方で解決する方法もあって多くの場合そっちのほうが楽なので
あまりこのスレで出たような解決方法を適用することは無いかも
366:デフォルトの名無しさん
17/03/03 08:56:05.96 LqKyLlg1.net
例えば対象の文字列がソースコードのように人間の目視できる文字数で改行が必ず入り、
キーワードが改行を含まないのであれば
行ごとにreplace処理して文字列の統合だけstringbuilderを使えばこれだけで十分な速度が出ると思われる
(1行300文字程度と想定)
とかね
僕のカコイイスペシャルエディタでも作らない限りはフォーマット自体に特有の癖があるもんで
大抵の場合は独自の解決方法を考えたほうが早い
367:デフォルトの名無しさん
17/03/03 09:35:42.12 velk9AIH.net
テキスト読み出しながらって書いてあるからすでに行単位でやってると思うが
368:デフォルトの名無しさん
17/03/03 13:45:46.60 hf3TFoOq.net
>>346
UNIXのShellのコマンド解析の実装がそんな感じ。
ただしスイッチ文の嵐だが(一文字目がCならCPを検査とか・・・
369:デフォルトの名無しさん
17/03/03 15:59:24.43 GTe30Tvn.net
あーアフィかぁ 超納得
1ファイルの文字数がやたら少ないし何の目的か全くわからんかった
>>346,352がアフィ本人だね
370:デフォルトの名無しさん
17/03/03 16:00:23.77 GTe30Tvn.net
間違えた
>>342,346,352がアフィ本人
371:デフォルトの名無しさん
17/03/03 16:00:55.70 oAXP4RlZ.net
>>352
アホの子なの?
372:デフォルトの名無しさん
17/03/03 16:02:40.13 nP8cPyWm.net
IT速報かな?
373:デフォルトの名無しさん
17/03/03 16:54:07.87 Loi48FLt.net
>>352こう煽ると情報出て来ること多いからな。いい手w
374:デフォルトの名無しさん
17/03/03 17:00:38.87 nP8cPyWm.net
C#で自動コメント投稿スクリプト作ってIT速報荒らすンゴwwwwwwwwwwww
375:デフォルトの名無しさん
17/03/03 19:35:06.90 MASUg06L.net
まーたカニンガムの法則を証明してしまったのか
376:デフォルトの名無しさん
17/03/04 00:57:57.14 V1fO2YUM.net
>>352
馬鹿かこいつ。
377:デフォルトの名無しさん
17/03/06 15:15:15.66 c2C1QaOD.net
俺に実装出来ないものなどない
実装しないだけだ(´・ω・`)
378:デフォルトの名無しさん
17/03/06 16:53:48.94 HdaZCaDT.net
うっせ!消えろ!
(´・ω・`).Dispose();
379:デフォルトの名無しさん
17/03/06 17:04:44.11 gswSb9xJ.net
void Dispose(){
throw new GenjyuminException("お兄ちゃん僕を消さないで");
}
380:デフォルトの名無しさん
17/03/06 18:04:17.43 fLI2L2/v.net
while(true){
if((´・ω・`)==null)break;
}
これでどや、消えるまで永久に彷徨え
381:デフォルトの名無しさん
17/03/06 18:06:58.06 SM9wIIjZ.net
int (´・ω・`) = 0;
こういうのエラーになっちゃうんだけど、ならないのあるかな
382:デフォルトの名無しさん
17/03/06 18:10:04.79 gswSb9xJ.net
>>369
とうふさんをすころう🙋
383:デフォルトの名無しさん
17/03/08 07:21:50.44 0djAud0F.net
ASP.NETでEntityFrameWorkを
使い始めてデータエンティティの設計を
意識するようになったのですが
論理ER図とクラス図がほとんど同じ
ようなエンティティになるのは
良いのでしょうか?
使ってる言語がC#なだけで
OOPの話になっているみたいで
恐縮ですが
384:デフォルトの名無しさん
17/03/08 07:57:43.96 j5hWWAog.net
>>371
オブジェクト指向原理主義的に言うなら、最初にデータ
385:設計ありきで作ったのが間違い DB構造はオブジェクトを抽出した上でその永続化層として結果的に導出されるもの その結果、テーブル構成がクラスと一対一になるのはおかしくはない
386:デフォルトの名無しさん
17/03/08 09:10:06.96 4zQ1zZR+.net
>>371
>論理ER図とクラス図がほとんど同じ
>ようなエンティティになるのは
それをEFと言うんじゃないか?
殆ど同じじゃなく完全一致するんじゃないの?
387:デフォルトの名無しさん
17/03/08 11:04:45.08 WDLIW5bb.net
処理文より定形文の方が多くなる問題
皆さんはどうやって解決してますか?
388:デフォルトの名無しさん
17/03/08 11:21:49.05 j5hWWAog.net
>>374
メソッドやクラスを適切に使って使い回せばそんなことにはならない
389:デフォルトの名無しさん
17/03/08 12:38:38.92 xVFA2xmi.net
>>375
適切とは?
390:デフォルトの名無しさん
17/03/08 12:46:41.42 FTYppI6w.net
>>376
例えばこうしろってだけでしょ
method(0); method(1); method(2); method(3);・・・method(x);
↓
for (int i =0; i <= x; i++) method(i);
ただいくらそうしたって作るものによっては定形だらけになるからな。そんなの気にするなとしか言えん
391:デフォルトの名無しさん
17/03/08 13:31:44.38 WDLIW5bb.net
>>377
それに、クラスとリターン、ラベル貼るから一行より長くなるんです
392:デフォルトの名無しさん
17/03/08 14:05:18.27 pm5pCz2z.net
>>373
EDM理解してる?
393:デフォルトの名無しさん
17/03/08 14:35:54.93 jFDZ8cwh.net
絵が描けなくても無料・有料とわず素材なんて腐るほどいっぱいあるんだから
リアルでカードゲームやボードゲーム作ってゲームマーケットで売ろう
個人利用、商用利用も可の198,381 個の無料ベクター画像
URLリンク(jp.freepik.com)
オシャレ感をプラスできる手書きのアイコン50選
URLリンク(blog.nest-online.jp)
無料素材:ヴィンテージ感がおしゃれ!デザインソフトのツールアイコン49個セット
URLリンク(switch-box.net)
無料素材:魔法陣の文様が描けるユニークな英語フリーフォント「MagicRing」
URLリンク(switch-box.net)
ねくらファンタジーマップチップ素材集
URLリンク(piposozai.blog76.fc2.com)
ひぽやマップチップ
URLリンク(piposozai.blog76.fc2.com)
クオリティの高いゲーム用のモンスター素材画像が手に入るフリー素材サイト5つ
URLリンク(agency-star.com)
ファンタジー世界地図を簡単に作れる「Inkarnate Worlds」をゲーム制作に活用しよう
URLリンク(www.moguragames.com)
QRコード・クトゥルフ神話・24世紀などユニークすぎるデザインてんこ盛りのサイコロ「Dice Empire」レビュー
URLリンク(gigazine.net)
駆け出し奮闘記「ゲームチップ・他小物類の作り方」
URLリンク(yuofc2.blog72.fc2.com)
394:デフォルトの名無しさん
17/03/08 16:48:47.00 EwGirieA.net
c#初心者なんですが
URLリンク(www.ibm.com)
>実際、作成された実行可能ファイルを別のシステム、おそらくWindowsが稼動しているシステムにコピーして、そこでそのまま
395:実行することができます。 Linuxで動くexeファイルがwindowsでもそのまま動くのはなぜですか? 本来、実行可能形式に互換性はありませんよね? Javaだと.jarファイルでjavaが関連付けられてるからどこでも動作するというのは分かるんですが
396:デフォルトの名無しさん
17/03/08 17:05:53.57 FTYppI6w.net
>>381
javascripはテキストファイルなのに実行できるってのと同じで、exeという拡張子だけど中身はスクリプトって考えりゃいい
linux側は「mono example.exe」のように実行するのはexeでなくmonoでしょ
397:デフォルトの名無しさん
17/03/08 17:10:53.01 CceDL3fb.net
>>381
Linuxはexeが実行ファイルという訳でもなし、mcsがPE互換でも吐いてるんじゃない?
C#はそもそも中間言語にコンパイルされるし、.NET Framework(あるいは互換ランタイム)を通して
色々な操作を行うので、DllImportとか除けばコード部分はプラットフォーム依存にはならない、Javaと一緒
398:デフォルトの名無しさん
17/03/08 17:41:17.11 4q4g4kgy.net
>>373
やはりそう思いますよね
自分もデータエンティティと
クラス図が一致してしまって
アンチパターンしてないか
不安になったもので
クラス図要らないじゃん
てことになって良いのかなと
399:デフォルトの名無しさん
17/03/08 17:56:23.47 EwGirieA.net
>>382
わかりました
linuxでもx window systemとかGUIシステムで
拡張子とプログラムの関連付けがあるみたいだけど
.exeをmonoに関連付けるのは少し疑問です
.jarみたいな固有拡張子じゃないので
windowsだと関連付け関係無く実行可能形式として動くんだろうけど
他のOSでは特定のプログラムから起動しなければならないというのが
非対称的でクロスプラットフォーム感欠けてるような気がします
400:デフォルトの名無しさん
17/03/08 18:12:34.14 ZazPDLJU.net
Windowsでもexeの中にあるMSILを
特定のプログラムでコンパイルしないと動かないぞ
401:デフォルトの名無しさん
17/03/08 18:13:37.64 NpQQdkRq.net
>>385
クロスプラットフォームにこだわるのならC#使わない方がいいだろ
>>383に書いてあるようにDllImportとか入っていたらどうしようもないんだから
402:デフォルトの名無しさん
17/03/08 20:03:39.84 VZtOnmtc.net
EF使いたいけど仕事での開発は腐りきったDBと手続き型の権力者が支配しててうまくいかないよ
ビジネスロジックはほとんどSQLとストアドに書かれ
ホスト言語はデータセットをUIとバインドするだけ
マイクロソフトは業界の現実を見据えたフレームワークを提供してほしい
403:デフォルトの名無しさん
17/03/08 20:08:18.13 jS0zQn/F.net
ジャップローカルな業界標準なんか基準にしても仕方ねーだろ
404:デフォルトの名無しさん
17/03/08 20:25:11.68 q0ZuMA54.net
今後は品質を上げるためにC#やめてJavaにするってさ
品質を上げるために
誰だよJavaオワコンとか言ってたの
Javaつよすぎんだろ
405:デフォルトの名無しさん
17/03/08 20:37:42.27 WDLIW5bb.net
新しく、C++,C#,Javaを超える言語の誕生を切に願う
406:デフォルトの名無しさん
17/03/08 20:43:44.50 YCUi9zWw.net
>>390
実際Javaは周辺技術はすごい
世界中の叡智が結集して糞を料理し、なんとか食えるものにしてる
407:デフォルトの名無しさん
17/03/08 20:50:23.47 YUr8l1RF.net
Java人にとってWindowsは周辺ではなく僻地です。
408:デフォルトの名無しさん
17/03/08 21:09:03.23 psTqZ+Sc.net
なんか中国人みたいだな
409:デフォルトの名無しさん
17/03/08 21:32:29.32 U5noIHdN.net
javaはoracleの時点で将来どうなるか判らないって不安がつきまとう
golangもgoogleだから不安がつきまとう
swiftもappleだから
410:粕N後の未来も予測出来ない でも不思議とc#とmsの場合はあんまそういう不安が無い
411:デフォルトの名無しさん
17/03/08 21:39:55.81 Uljnsbub.net
>>388
>ビジネスロジックはほとんどSQLとストアドに書かれ
最適化のためにしかたなくストアド化することはあっても
ビジネスロジックまるごととかあるんだね
おいたわしゅう
412:デフォルトの名無しさん
17/03/08 21:49:14.72 YUr8l1RF.net
Javaが糞遅いからC#じゃないのか。
Javaと同じ設計をしたいならJavaを使えばいい。
413:デフォルトの名無しさん
17/03/08 21:51:54.89 MEKWLPl8.net
Windowsで趣味で遊ぶのにC#より楽な言語が無い
414:デフォルトの名無しさん
17/03/08 22:28:25.34 gllfe4Ss.net
みんな仕方なくうんこなJava使ってるだけだから。
大人の事情。
415:デフォルトの名無しさん
17/03/08 23:15:48.59 nWki5I6G.net
>>397
いやJavaが使われるような分野ならJava(やその周辺のライブラリ類)は糞速い
クライアントじゃビチグソだが
416:デフォルトの名無しさん
17/03/08 23:21:37.62 YUr8l1RF.net
高速ライブラリはすべてC++とアセンブラで書かれてます。
417:デフォルトの名無しさん
17/03/08 23:31:16.51 RgWWdtUJ.net
結果的には現実的な判断だったと思うよ。
OracleにはJavaを伸ばすほどの能力はない。
環境の互換性に固執した結果、エコシステムがブラッシュアップされたのならそれでOK。
あとはC#で実験済みの便利機能を順に採り入れていけばいい。
C#がJavaに滅ぼされない為には数歩先を走り続けるしかない。
そのうちにJavaと同レベルのエコシステムが揃えられればJavaを食えるかもしれないが、
これはかなり厳しいとは思う。
418:デフォルトの名無しさん
17/03/09 00:10:57.40 x6aOWZGA.net
Javaのエコシステム!?
今Javaの一番メジャーなパッケージマネージャって何?
rubygemsやnpmみたいなのないって聞いたら
Mavenでpom.xmlって言われて愕然としたことがある
419:デフォルトの名無しさん
17/03/09 00:43:02.76 zrZoqbyp.net
>>403
Mavenで用は足りるし、LLっぽいのがお好みならGradleも人気
420:デフォルトの名無しさん
17/03/09 07:33:43.82 i1kRuTOP.net
>>388
EFって何がいいの?
そんなの使わなくてもsql実行すればいいんじゃないの?
421:デフォルトの名無しさん
17/03/09 19:18:10.50 NWFSmelL.net
>>405
ORMでググれ
422:デフォルトの名無しさん
17/03/09 19:27:05.21 kp/XS3en.net
operational risk management
業務運営リスク管理
sqlを文字ではなくオペレーションとして記述できるからsqlコマンド記述ミスによるバグやsqlインジェクションに強くなり
リスク回避に繋がるソース運営や管理ができる
423:デフォルトの名無しさん
17/03/09 19:28:46.08 ekX4ZlFq.net
C言語って何がいいの?
そんなの使わなくてもアセンブラ使えばいいんじゃないの?
35年前の会話
424:デフォルトの名無しさん
17/03/09 19:38:38.06 6OW1VF+t.net
ただまあ、便利な道具も、出来の良し悪しというのがあって
425:デフォルトの名無しさん
17/03/09 19:39:54.78 NWFSmelL.net
>>409
使う側の頭の良し悪しってことかな
426:デフォルトの名無しさん
17/03/09 19:43:58.45 6OW1VF+t.net
そう、EFはあまり出来は良くない
427:デフォルトの名無しさん
17/03/09 19:45:09.07 NWFSmelL.net
>>411
具体的に
428:デフォルトの名無しさん
17/03/09 20:12:05.29 J4siqdXV.net
クエリビルダとかコードファーストは要らないかな
まっさらなDB扱う機会なんてそうそうないし
429:デフォルトの名無しさん
17/03/09 21:56:54.03 i1kRuTOP.net
>>407
sql記述ミスしなければいいだろ。
430:デフォルトの名無しさん
17/03/09 22:09:20.08 ZZ1gzprq.net
>>413
既存DBからのコードファースト
431:デフォルトの名無しさん
17/03/09 22:09:48.58 GqwkUUnW.net
>>414
ばーか
432:デフォルトの名無しさん
17/03/09 22:25:30.67 FW6HepzM.net
>>414
そんな根性論・精神論的なものでミスは無くならないよ
433:デフォルトの名無しさん
17/03/09 22:38:08.68
434:i1kRuTOP.net
435:デフォルトの名無しさん
17/03/09 22:45:19.50 mybEc7J1.net
SQLじゃ静的チェックが効かないし、列名とメンバ名のマッピング作業でミスを生じやすい
436:デフォルトの名無しさん
17/03/09 23:05:42.43 ZZ1gzprq.net
EntityFramework以前の問題だなこいつ
437:デフォルトの名無しさん
17/03/09 23:06:17.34 ojqe9dcn.net
>>411
具体的に
438:デフォルトの名無しさん
17/03/09 23:10:24.76 4hz9mkjX.net
おそい
かたい
つかいづらい
439:デフォルトの名無しさん
17/03/09 23:15:15.25 ZZ1gzprq.net
>>422
おそい→単純に速さを求めるならDapper使えば?EFは速さが目的のORMじゃないし
かたい→意味不明
つかいづらい→馬鹿ならプログラミング諦めれば?
440:デフォルトの名無しさん
17/03/09 23:15:20.88 i1kRuTOP.net
>>422
確かに遅いよね
441:デフォルトの名無しさん
17/03/09 23:15:56.47 OsFG/gY3.net
>>422
日本語でよろしく
442:デフォルトの名無しさん
17/03/09 23:16:37.66 OsFG/gY3.net
>>424
うん、当たり前だよね
443:デフォルトの名無しさん
17/03/09 23:36:02.15 4hz9mkjX.net
>>423
→おそい
昨今なにが速度のボトルネックってDBアクセスなのにおそくていいわけがない
→かたい
なんというか、型が固いんだ…
データいっぱい取ってきてもダックタイピングとかないからいちいち入れ替えなきゃいけないし
メソッドをまたいでデータをやり取りしづらい
→つかいづらい
変な落とし穴いっぱい
あと抽象化しすぎ
DBと通信するタイミングとかこっちの好きにしたい
よさそうだった
よさそうだったんだ…
ちょっと触った最初の一瞬は夢が見れたが
444:デフォルトの名無しさん
17/03/09 23:39:24.67 P0KhFIxP.net
>>427
お前C#向いてないからやめとけ
445:デフォルトの名無しさん
17/03/09 23:40:17.24 4hz9mkjX.net
なんでよ
446:デフォルトの名無しさん
17/03/09 23:45:18.70 ZZ1gzprq.net
>>427
生のADO.NETと比較すると遅くても、実運用に耐えられる程度なら問題ない
遅さのデメリットをメリットが上回る場合に採用すべき
設計ミス
お前の頭が足りてないだけ
抽象化しないとInMemoryやFakeのIDbcontext使ってUnit Testできない
447:デフォルトの名無しさん
17/03/10 00:07:57.78 Kg4/WRpJ.net
>>430
Dapperのところ見ると10倍以上遅いって数字弾いているし
体感上も遅いだろ
URLリンク(github.com)
448:デフォルトの名無しさん
17/03/10 00:14:08.74 cBCq3F3F.net
>>431
日本語
449:デフォルトの名無しさん
17/03/10 00:15:07.75 PorFrx4J.net
>>431
遅いのは皆わかってるんだけど
何言ってんのこいつ
450:デフォルトの名無しさん
17/03/10 00:29:46.92 cBCq3F3F.net
>>431
そのEntityFramework、3世代前くらいじゃね?
こっちの方がまともに比較してる気がする
URLリンク(msdn.microsoft.com)
451:デフォルトの名無しさん
17/03/10 00:35:01.00 PorFrx4J.net
誇大広告ワロタ
452:デフォルトの名無しさん
17/03/10 00:47:22.95 Cysk3AQ/.net
>>431
Dapperを使ってメモリ上でUnit Testやる方法教えて
453:デフォルトの名無しさん
17/03/10 01:56:20.00 YvYLhW/g.net
割といままで関わったプロジェクトは、敢えてスドアドで疎結合にしてるの多かったな。
454:デフォルトの名無しさん
17/03/10 05:22:26.01 hxjDKO5o.net
以下のページを参考にしてい
指定したURLからHTMLを取得するプログラムを作成しております
URLリンク(www.kekyo.net)
取得する処理を作成することは出来たのですが
取得処理を走らせてからリクエストが帰ってくるまでの間
GUIの操作が一瞬とまってしまう現象が発生しております(一瞬フリーズするような感じです)
ですので連続してhtmlを取得したり、サイズの大きなものを取得する場合
長時間フリーズしてしまうことになるので大変困っております
どなたか解決方法をご存知の方がおりましたら
教えていただければ幸いです
よろしくお願いします
455:デフォルトの名無しさん
17/03/10 05:22:50.13 hxjDKO5o.net
ちなみに参考にしたソースは以下の通りです。
public static async Task<string> ReadFromUrlAsync(Uri url)
{
using (WebClient webClient = new WebClient())
{
using (Stream stream = await webClient.OpenReadTaskAsync(url))
{
TextReader tr = new StreamReader(stream, Encoding.UTF8, true);
string body = await tr.ReadToEndAsync();
return body;
}
}
}
public static async Task DownloadAsync()
{
Uri url = new Uri("URLリンク(github.com));
string body = await ReadFromUrlAsync(url);
Console.WriteLine(body);
}
456:デフォルトの名無しさん
17/03/10 07:53:36.33 /HdMhfmB.net
>>437
ストアドはビジネスとデータが密着して全く疎にならないだろ
457:デフォルトの名無しさん
17/03/10 07:55:23.13 LDoDwujD.net
>>437
かわいそうに
458:デフォルトの名無しさん
17/03/10 07:56:43.00 CZUjNxSc.net
普通シングルスレッドでは、処理中は、
進捗状況を表示するプログレスバーでも、描画が止まるから、
GUI/worker用のスレッドは、別々のマルチスレッドにする
プログレスバー描画のサンプルでも見れば?
459:デフォルトの名無しさん
17/03/10 09:46:49.61 ccNaYHW5.net
>>437
そのうちいいことあるよ、頑張って
460:デフォルトの名無しさん
17/03/10 11:25:04.92 LzpSY1Zb.net
>>438
WebClient(とその中で使ってるHttpWebRequest)が
名前解決部分を非同期化できてないっぽい
HttpClientを使おう
461:デフォルトの名無しさん
17/03/10 12:24:52.88 /STnO1DK.net
え?みんなEF使わないがデフォなの?
462:デフォルトの名無しさん
17/03/10 12:26:08.18 Tes7zBzn.net
あんなものを使うのはお勉強ができるだけの無能だけ
463:デフォルトの名無しさん
17/03/10 12:36:20.43 wvkqDHaL.net
>>445
使わないじゃなくて使えないんじゃない?新しいことを学習できないんだよ
464:デフォルトの名無しさん
17/03/10 12:46:27.34 Tes7zBzn.net
新しいものに飛びついてもあとであれはゴミだったというものもたくさんある
EJB2.0とか
465:デフォルトの名無しさん
17/03/10 12:51:59.29 wvkqDHaL.net
>>448
それはその通りだね
EntityFrameworkはもうそろそろ10年たつんだけど
466:デフォルトの名無しさん
17/03/10 13:10:03.19 mpFYTheR.net
やっぱJavaなんやね
467:デフォルトの名無しさん
17/03/10 13:53:22.42 AGPJ29Rn.net
新しいのを使うのも、古いのを使い続けるのも、どっちも長所短所がある
同じ長所短所でも環境によって評価が変わるからどっちが絶対にいいってのはない
それ考慮してどっち使うって当たり前の選択ができない奴多すぎるんだよ
468:デフォルトの名無しさん
17/03/10 15:40:00.20 y8xCqliG.net
>>440
んなの書き方によるだろ
469:デフォルトの名無しさん
17/03/10 18:15:05.97 NraHDdZK.net
使って文句ないやつは使ってればいいのよ。
俺は使うのをやめた。理由を他人に説明する必要も、他人が納得する必要もない。
470:デフォルトの名無しさん
17/03/10 18:36:12.55 wvkqDHaL.net
>>453
使えるやつは使う、使えないやつは使わない
471:デフォルトの名無しさん
17/03/10 18:42:37.52 NraHDdZK.net
そういうこった。俺には使えない。
472:デフォルトの名無しさん
17/03/10 18:43:15.86 NraHDdZK.net
使わなきゃ、使いにくいとこも分かんないからな。
473:デフォルトの名無しさん
17/03/10 18:46:25.98 Gc8NaZGi.net
世の中はまだWinFormsだからな。
新しいものに対応できないジャパン。
474:デフォルトの名無しさん
17/03/10 18:49:44.85 YN/8CtFT.net
>>456
ADO.NET直書き?
475:デフォルトの名無しさん
17/03/10 19:38:33.09 jSwjVui3.net
>>457
Microsoftはバグ管理にExcel使ってるんだぞ
振り回されたらあかん
476:デフォルトの名無しさん
477:sage
DotNet CoreでバッサリWebFormsとDataSet切り捨ててくれたから 日本もこれからはMVCとPOCOにシフトしていくだろうね(希望)
478:デフォルトの名無しさん
17/03/10 20:10:01.97 cBCq3F3F.net
>>445
基本的にはEntityFrameworkで、パフォーマンスほしいとこはDapper
479:デフォルトの名無しさん
17/03/10 20:35:03.91 BdCDiQus.net
dapperって何がいいの?
480:デフォルトの名無しさん
17/03/10 20:40:29.72 cBCq3F3F.net
>>462
上にもいろいろ比較出てるけど、とにかく速くて簡単
DBとオブジェクトの最低限のマッピングだけでいい場合はこれで十分
481:デフォルトの名無しさん
17/03/11 09:49:08.82 +LwMML+J.net
動的だけど滅多にソースが更新されないほとんど静的なページのキャッシュってどう扱えばいいんですか?
クライアントにキャッシュさせて更新があった時だけアクセスしてほしいです
482:デフォルトの名無しさん
17/03/11 09:53:48.23 h5T3JHpB.net
>>464
ブラウザーがやってくれるんじゃないか?
483:デフォルトの名無しさん
17/03/11 13:46:01.01 SoGUL2Zu.net
VisualStudio2017お試しで使ってるんだけれど
タプルとか求めていたものが有ったので使おうとしたら
ValueTupleのライブラリが標準で入らずNuGetにしか無いとか
まだ安定しない無いとか何かあるんだろうか・・・
凄い作りかけ感あるコンパイラに仕上がってるwww
使うべきか暫く様子見すべきか?
484:デフォルトの名無しさん
17/03/11 13:50:47.46 /3A6iA0R.net
Windowsのcsc.exeでコンパイル出来ないC#6.0も見送ってるならそうだな
485:デフォルトの名無しさん
17/03/11 14:02:34.64 SoGUL2Zu.net
タプルの利用はしばらく様子見にしとくか・・・何か怪しいし。
ローカル関数いいね、これやる時名前空間が汚れてインテリセンスが腐るから欲しかった
これだけでも移行価値は無くは無いか・・・
IEnumerable<int> Enumerate(int begin, int end)
{
if (end < begin
|| end < 0
|| begin < 0)
throw new System.ArgumentOutOfRangeException("ほげぇ");
IEnumerable<int> Body()
{
for (int i = begin; i <= end; ++i)
yield return i;
}
return Body();
}
486:デフォルトの名無しさん
17/03/11 14:40:42.15 SoGUL2Zu.net
ちらちら見ていると、ValueTaskの方はもっと状況が酷いのかなw
URLリンク(www.buildinsider.net)
言語みたいな基幹部分を小出しにするとか、頭おかしくなってるなw
今までそんな事をした言語の末路がどうなったか知らないわけじゃなかろうに・・・
NuGetにして普通にコードする人には使わせないようにするのは、これはヤバイと中の人が感じているのかもしれんね
マイクロソフトの技術力&組織力低下酷いな、半端に才能ある奴のスタンドプレーでグダクダなってるんだろうな。
Web系に翻弄され過ぎだろ
とりあえず使えそうなのは、ローカル関数と型switchくらいかな
この辺りなら変更あってもダメージ少ないだろうし。
タプルの実装に致命的問題があるならローカルclass&struct&enum宣言でもええんやでぇ
名前空間お腐れ問題はカッコイイ事しなくても、これでも解決するんや > microsoft
487:デフォルトの名無しさん
17/03/11 15:24:01.58 SoGUL2Zu.net
>>218
横だけど、式木はちゃんと言語でサポートしなきゃ誰にも読めない言語になるなと思った。
逆に、それ自体は難解
488:でもないし難しい話じゃないなとも。 プログラムとは違うけれど 3Dモデラーでツリー構造とか法線とか難解な数学概念が見ての通りの操作で動かしたり創れたりするようになって 門外漢の3Dデザイナーが普通に使えるようになったように 一度概念をキッチリ整理する必要があるんだよ、あれは。 そして言語の作りこみがあの頃から甘くなってき始めてたな、ちょっと残念な感じになっていった時代だね。 とりあえず腐り過ぎのWin10をWin7の仕様に戻せや、ストアもユニバーサルアプリも使い物にならん、色使いも糞でUIが見ずらい > microsoft あと、WindowsUpdateのタイミングはユーザーの自由にさせよ、お前がお前のタイミングで勝手にやったら業務はむちゃくちゃになる。
489:デフォルトの名無しさん
17/03/11 22:05:54.03 h5T3JHpB.net
>>466
タプルなんて昔からあるだろ
490:デフォルトの名無しさん
17/03/11 22:18:07.78 15EAzLR8.net
>>471
残念ながら昔からあるTuple<>とは全くの別物
機能的には匿名型にも似ているが、匿名型との互換性もない
ローカル関数なんかも極めて場当たり的なゴミだろ
デリゲートの型を省略できるようにして var func = (int x) => x * 2; と書けた方がずっと便利
491:デフォルトの名無しさん
17/03/11 22:40:13.41 7U1HyGmG.net
>>472
いつからここが初心者用になったんだ
492:デフォルトの名無しさん
17/03/12 01:14:05.08 +ulIycHH.net
>>469
URLリンク(github.com)
によると、.NET4.7に入れることにしたみたいだね
nugetで済むのに.NETのバージョンを上げるのは面倒が多いし、今後C#のリリース速度を早めるならある程度まとめて.NET4.7にしようって考えじゃないかなぁ
言語機能の小出しについても他の言語と比べれば遅いし、互換性と将来を考えて慎重に作ってるから完全な完成を待つと永遠にリリースできなくなっちゃうし、やむをえんだろ
CLRのバージョンを保ってくれれば文句は無い
493:デフォルトの名無しさん
17/03/12 02:13:23.38 lK2SBg8L.net
List<string> list; があって
そのlistのx番目からy個文字列連結したいのですがLinqでどう書けますか?
x番目から3個なら
var result = $"{list.Skip(x).Take(1).FirstOrDefault()}{list.Skip(x + 1).Take(1).FirstOrDefault()}{list.Skip(x + 2).Take(1).FirstOrDefault()}";
こんな感じですけど短く綺麗にしたいのですが…
494:デフォルトの名無しさん
17/03/12 02:33:41.68 tHLqC2EA.net
>>475
var result = String.Join( "", list.Skip(x).Take(y) );
495:デフォルトの名無しさん
17/03/12 05:07:11.99 lK2SBg8L.net
>>476
わー、短くて綺麗。
ありがとうございました。
496:デフォルトの名無しさん
17/03/12 06:43:42.92 RIOf9bqD.net
>>472
>デリゲートの型を省略
できるならとっくにやってるんじゃないかなw
ラムダ式は書けるコードが限定され過ぎるのが問題かな。>>468 はそれではどうやっても書けないでしょう。
497:デフォルトの名無しさん
17/03/12 08:53:09.32 bReP5RFT.net
>>475
自分で理解できねーもん他人に強制するその姿勢がすでにクソ
なんでその処理linqで書いた?
しかも自分は掲示板で質問しなきゃわかんねーのに
さっさと辞めちゃえお前
伸びる目もねーから
498:デフォルトの名無しさん
17/03/12 09:23:31.23 7tB+K/sW.net
何でこの人キレてんの?あの日?
499:デフォルトの名無しさん
17/03/12 10:01:53.12 RIOf9bqD.net
みるからに自演臭くてキモイからじゃねw
500:デフォルトの名無しさん
17/03/12 10:23:22.36 1QMoXo8Q.net
ラムダ式自体は型を持たないから、delegate型と決めつけてvar対応するなら専用のルール付けが必要だと思う。
そこまでする価値は無いかな。
501:デフォルトの名無しさん
17/03/13 06:11:29.33 o9PLbB2Z.net
すいません質問なんですが
アプリ起動中はAキーを推すと左クリック Bキーをおすと右クリック Cキーを押すとアプリ終了
みたいな感じでキー入力をマウス入力にいれかえるようなアプリを作りたいんですが
Windows上でフォーカスのあるウインドに依存せずにキー入力を取得するのってどうしたらいいんでしょうか
502:デフォルトの名無しさん
17/03/13 06:55:37.31 2GKmTNuX.net
以前、遠隔ウイルス片山も似た質問していましたね。
503:デフォルトの名無しさん
17/03/13 07:01:39.19 WHuP7MmV.net
フォームのKeyPreviewプロパティをTrueにすると、すべてのキーイベントをまずフォームが受け取り、処理が終了してからフォーカスのあるコントロールに渡されるようになります。
ってdobon.netで見つけた
やったことはない
504:デフォルトの名無しさん
17/03/13 07:17:17.53 o9PLbB2Z.net
ありがとうございます
KeyPreviewについて調べてみます
505:デフォルトの名無しさん
17/03/15 09:07:02.25 k1u612YY.net
すみません、EFで質問させて下さい。
下記のようにエンティティを定義して、それを編集するクライアントを作ろうとしています。
とりあえず、Modelに対する編集は無効にしてあるものとします。Unitに変更を加えて保存すると、
DBの中でModelのレコードが増えてしまいます。NameにUnique制約を付けると当然例外が派生します。
Unit.ModelがDbContextの管理外になってしまったので、別のインスタンスとして認識されているという理屈は分かります。
contextを都度作成せずに維持していれば、期待する動作になるのも分かりますが、それはできればしたくはないです。
何か上手い解決方法はないでしょうか?
public class Model
{ public int ModelId {get;set;}
public string Name {get;set;} ※
}
public class Unit
{ public int UnitId {get;set;}
public VM Model {get;set;}
public string Serial {get;set;}
}
List<Unit> GetUnitList()
{ using (var context = ...)
{ return context.units.Include(x => x.model).Select(x => x).ToList(); }
}
void UpdateUnit(Unit unit)
{ using (var context = ...)
{ var target = context.units.Where(x => x.UnitId == unit.UnitId).FirstOrDefault()
target.Model = unit.Model;
target.Serial = unit.Serial;
context.SaveChanges();
}
}
var list = GetUnitList();
...リスト表示->エディタでunit.Serialを編集
UpdateUnit(unit);
506:デフォルトの名無しさん
17/03/15 09:27:37.16 N2+3G59G.net
>>487
そこまで分かってるなら解決策は簡単。
ModelIdで検索し直す。
507:デフォルトの名無しさん
17/03/15 11:16:57.42 k1u612YY.net
>>488
ありがとうございます、すっきりしました。
期待する結果に対してのコストが少々重くなるかなという気はしているのですが、
処理コストが問題になるほどの規模ではないので、そうさせて貰います
508:デフォルトの名無しさん
17/03/16 03:52:05.80 l+qA2/0G.net
C#でwebBrowserを使ってるんですが
以下のhtmlをwebBrowser.DocumentTextに突っ込んで表示させたいんですが
何故かwebBrowserではそのままjqueryを読み込むことが
できないようでスクリプトエラーが発生してしまいました
対処方法のわかる方いたら教えていただけますでしょうか?
↓以下のhtml
<!DOCTYPE html>
<head>
<meta charset=""utf8"">
<script src=""URLリンク(code.jquery.com)
509:.min.js""></script> <script type=""text/javascript""> $(function() { alert(""test"") }); </script> </style> </head> <body>
510:デフォルトの名無しさん
17/03/16 11:36:09.87 oyR0ujl0.net
なんでダブルクォーテーション2つ続いてるの?
511:デフォルトの名無しさん
17/03/16 16:49:18.07 l+qA2/0G.net
エスケープです
文字列に突っ込んでるのをそのままコピペしちゃったのでそのようになってます
すいませんがエスケープは無視して考えてください。
512:デフォルトの名無しさん
17/03/16 16:58:42.52 Qa1xgsfZ.net
<style>
<head>
<body>
</style>
</head>
</body>
最後のbodyを/スラッシュで括ってないからでは?
513:デフォルトの名無しさん
17/03/16 17:03:26.21 RyFuDdep.net
>>493
君は冷静だな
514:デフォルトの名無しさん
17/03/16 17:05:05.86 Qa1xgsfZ.net
HTMLソース
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML5サンプル</title>
</head>
<body>
<p>HTML5で作成しました!</p>
</body>
</html>
連投ですまん
もっと解り易いサンプル
515:デフォルトの名無しさん
17/03/16 18:14:35.84 kQHrflry.net
WebBrowserがデフォだとIE7モードで動くせいでjquery 2.1.4が動かない
・jquery 1系使う
・headに
<meta http-equiv="X-UA-Compatible" content="IE=edge">
等を書く
・レジストリでモード変更する
好きなのどうぞ
516:デフォルトの名無しさん
17/03/16 18:38:16.89 RyFuDdep.net
>>496
君は詳しいな
517:デフォルトの名無しさん
17/03/16 20:09:32.60 G/L2rMHg.net
簡単に単体テストできるのか知りたいです
public static async Task DoHeavyAsync(string path, IProgress<long> progress, CancellationToken token)
という非同期メソッドの単体テストで、同期版の DoHeavy() と同様のテスト以外に、
(1) progress が動作していることの確認
(2) token が動作していることの確認
が必要だと思います
(1) が簡単ではない
var progress = new Progress<long>(n => { Assert.Fail(); });
などやっても、テストが成功してしまう(レポートがメソッド終了後に届くため)
まじめにやるとしたら別スレッドを作る必要がありそう?
(2) は、巨大ファイルを使って new CancellationTokenSource(20) などでキャンセルされることを確認という
汚い手法でテストしています(処理速度があがった場合にテストが失敗する可能性があるのが汚い点)
(1)と(2)、それぞれどのようにテストするべきでしょうか? 特に(1)
NUnit を使ってますが、他のフレームワークでもいいです
518:デフォルトの名無しさん
17/03/16 20:16:08.57 kgKaK9fl.net
非同期処理の確実なテスト方法は存在しないのでどっかで妥協しなきゃならない
519:デフォルトの名無しさん
17/03/17 07:37:50.30 gTyXrRTf.net
よく分からんな
Taskなんだから結果が出るのを待機すればいいだろ
Progressは呼ばれたらcalledフラグを立てるようにしてそいつでAssetする
タイムアウトが必要かどうかは状況次第
2つめは、内部でFileStreamを使っているならだが
Streamを受け取るインターフェースを追加する
クッソ遅いStreamは自由に再現できる
520:デフォルトの名無しさん
17/03/17 08:16:11.77 VDcrtJ6N.net
>>496
ありがとうございます!大変助かりました!
521:デフォルトの名無しさん
17/03/17 21:11:54.40 G6TjLWRU.net
>>499
やっぱり妥協かなー
>>500
(2) はなるほどね。作ってみる
(1) なんだけど、Progress.Report() での通知は、タスクを await で待機したとしても、
待機が終わった後でも Action<T> が呼ばれているとは限らない
巨大なタスクを
522:渡して、 Progress.Report() が『たぶん』呼ばれるという妥協が必要かなー 単体テストをパスしたとしても、たまたま運良く Action<T> が先にスケジュールされただけだよ 下記のコードはうちの環境ではテストに失敗してた public static async Task DoLightAsync(IProgress<long> progress) { await Task.Delay(10); progress.Report(123); } [Test] public async Task DoLightAsyncTest() { bool called = false; await DoLightAsync(new Progress<long>(n => { called = true; })); Assert.IsTrue(called); }
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
2656日前に更新/292 KB
担当:undef