2ちゃんねる★スマホ版★■掲示板に戻る■全部1-最新50

C#, C♯, C#相談室 Part92 [無断転載禁止]©2ch.net

1 :
2017/01/28(土) 16:46:53.58 ID:op86qfG/
■Visual Studio 2015 Community & Express (無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/

■コードを貼る場合はこちら
http://ideone.com/

■前スレ
C#, C♯, C#相談室 Part91
http://echo.2ch.net/test/read.cgi/tech/1467211515/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
2 :
2017/01/28(土) 16:47:59.00 ID:op86qfG/
■過去スレ
C#, C♯, C#相談室 Part88 [転載禁止]©2ch.net
http://peace.2ch.net/test/read.cgi/tech/1437808445/
C#, C♯, C#相談室 Part89
http://peace.2ch.net/test/read.cgi/tech/1443271409/
C#, C♯, C#相談室 Part90
http://echo.2ch.net/test/read.cgi/tech/1455160063/
3 :
2017/01/28(土) 20:11:01.67 ID:op86qfG/
すいません、前スレは実質Part92でこのスレ番はPart93でした…

>>2に追加
C#, C♯, C#相談室 Part91
http://echo.2ch.net/test/read.cgi/tech/1467142749/
4 :
2017/01/29(日) 09:06:59.65 ID:yBayvk76
おつ
5 :
2017/01/30(月) 06:23:24.90 ID:pve8veDd
ストアドでダラダラと数千行も書くクズは仕事やめてくれ
6 :
2017/01/30(月) 07:26:13.95 ID:tWAIhpxB
>>5
C#でCOBOLみたいなコード垂れ流されるよりはマシじゃね?
7 :
2017/01/30(月) 13:37:08.05 ID:aat2bJqh
SQLおじさんか
でもまぁDB内に閉じた処理なら長い処理でも
ストアドでいいと思うけどな
8 :
2017/01/30(月) 17:43:50.02 ID:N6dz8FOe
ストアドの方がマシだろう
9 :
2017/01/30(月) 23:35:25.12 ID:pve8veDd
SQLはどこベンダもデバッガがカスじゃん
10 :
2017/01/31(火) 10:33:19.74 ID:OaREUEOV
デバッガがないからと言ってシェルスクリプトを書かないひとはいない
11 :
2017/01/31(火) 14:32:45.02 ID:tcQh4bsA
書かなくて済むなら書こうとはしない
12 :
デフォルトの名無しさん
2017/02/01(水) 00:11:53.74 ID:rMgcMaj2
webアプリの開発をASP.NET MVCで始めてみようと思うのですが、一般用Windows機で社内用(20名以上)の公開になるとライセンス違反になるのでしょうか
また、linuxで.NET Coreの開発にすればライセンスは何も気にしなくていいものなのでしょうか
いまいち良くわかっていないので変な質問でしたらすみません
13 :
2017/02/01(水) 00:55:27.94 ID:SIRn8MTv
何の話だよ。もっときちんと謝れ
14 :
2017/02/01(水) 00:59:00.68 ID:GoSmMZCV
>>12
スレチ
15 :
2017/02/01(水) 01:44:48.27 ID:wmVXAizR
>>12
その規模のASP.NET MVCのサーバーをWindowsのクライアントOSで構築して運用すると明確なライセンス違反になる。
サーバーライセンスとCALをケチるなら、Linuxで.NET Core+ASP.NET Core+WEBサーバー。
16 :
2017/02/01(水) 07:23:50.51 ID:/3Lab+Ym
少ない初期投資で手軽に始めてみたいならAWSかAzure使うのも検討したら?
Windows Serverも時間課金で使えるよ
17 :
2017/02/01(水) 07:35:30.80 ID:QtOB6vhP
.NET CoreゆうてもVisual Studioは業務利用で有料じゃろ?
VSCodeじゃまだ開発しにくいよインテリセンスイマイチだし
18 :
2017/02/01(水) 08:19:50.66 ID:y670B3So
>>17
Editionによるだろ
19 :
2017/02/01(水) 08:23:46.42 ID:SIRn8MTv
>>12が言ってるのはVSじゃなくてWindowsのライセンスのこと
Windows ServerでないWindowsをサーバーとして使い、かつ、20台以上から同時接続されるならそれはライセンス違反
20 :
2017/02/01(水) 12:00:03.24 ID:+pDV2e5Z
同時じゃなければいいんだ
21 :
デフォルトの名無しさん
2017/02/01(水) 14:06:30.13 ID:UvWC25bF
すいません、C#を使用し、NV12色空間のバイナリデータをRGBに変換する方法を教えてください。
私なりに色々なサイトから情報を集めてサンプルのメソッドを作ったのですが、成果物が思ったように出力できません。
どこが悪いかもわからず…困っております。
どなたか、このコードのどこに問題があって正常に表示されないのかご教示いただけないでしょうか。

【コード】
 http://ideone.com/20PQG1
【その他資料】
 http://upup.bz/j/my76880EYEYtgYgvhYE8CIw.png
【背景】
 DirectShowでMP4動画の任意の位置の静止画を取得したい。DirectShowのサンプルフィルタのDumpFilterを使用し、IMediaSampleからダンプファイルを取得し、NV12からRGBに変換したいのだがうまくいかない・・・

お手数をお掛けしますが、何卒よろしくお願いします。
22 :
2017/02/01(水) 14:49:28.30 ID:jnCvpXDY
>>21
横方向は色が連続してるから、wが絡んだインデックスの計算で誤りがあんじゃね
23 :
21
2017/02/01(水) 14:57:10.29 ID:UvWC25bF
>>22
凡ミスでした・・・・
 var y = nv12Binary[h * width + h + cnt];
 ではなくて、
 var y = nv12Binary[h * width + w + cnt];
 でした・・・・


すいませんお騒がせしました;w;
24 :
2017/02/01(水) 18:32:14.02 ID:fkh8yjaM
>>19
だからスレチ
25 :
デフォルトの名無しさん
2017/02/01(水) 19:46:14.74 ID:W7n/VPVl
>>12です
スレチの質問すみませんでした
レスして頂いた皆さんありがとうございました
参考意見助かりました
26 :
2017/02/01(水) 23:00:42.87 ID:ekCEdBsk
短いSQLの間に別の手続型言語を挟むような作りと長い一発SQLとは、処理速度が数十倍〜数百倍違うこともあるからしょうがない
だって、DBエンジンは自動的にマルチタスク処理してくれるのに、別言語で処理するってことはシングルスレッド化するんだから
それにSQLは長くても、うまければむしろ読みやすく書ける(手続型言語より短いステップでシンプルに書ける場合が多い)
ただし頭の中に複数のマス目をイメージできない人が読むと呪文に見えるらしい
常に低レベルなプログラマに合わせて標準化する利点はあるだろうけど
27 :
2017/02/01(水) 23:29:02.19 ID:Q5WgQ/3w
クソ長いSQLは設計ミスったバカなDB固有の現象なんだぜ
100行超えたらなんか致命的にやらかしてるって疑った方がいい
28 :
2017/02/01(水) 23:45:22.94 ID:tYeJxlUS
SQLとか長くて6行だろ
29 :
2017/02/01(水) 23:47:28.74 ID:r1Eq5mSG
SQLは軽くしとかないと負荷分散し辛いだろ
30 :
2017/02/02(木) 00:06:00.36 ID:335RX4F5
100行のSQLって何してんだよw
31 :
2017/02/02(木) 00:22:55.82 ID:NP4cqTts
前スレ995に言ってくれ
32 :
2017/02/02(木) 00:33:35.95 ID:Xhr9HRot
SQLがクソ長くなるのはだいたい横持ちのせい
33 :
2017/02/02(木) 00:38:43.68 ID:jMAutYAP
100行ぐらいのSQLなら常人が読める程度にこなれているだろ
問題は、4つも5つもくっつけて集計したものを更に集計ている呪文のようなViewだな

「誰がこんなもの作ったんだよ」と、過去の自分に説教したくなることが偶にあるだろ
34 :
デフォルトの名無しさん
2017/02/02(木) 01:06:08.80 ID:mPNRvOCD
SQLは再帰CTEの登場でチューリング完全な言語になったからな
https://wiki.postgresql.org/wiki/Mandelbrot_set
35 :
2017/02/02(木) 04:14:19.22 ID:gxIOcfsw
select *でなく
select a,
b,
d,
....などはよくある行数稼ぎw
36 :
2017/02/02(木) 11:36:33.30 ID:K/b9EIy4
行数で語るのはSIer脳
37 :
2017/02/02(木) 22:58:09.73 ID:JuktWcDi
>>33
初心者って集計を嫌うよね
集計を覚えるとSQLの表現力がグッと上がるのにもったいない
38 :
デフォルトの名無しさん
2017/02/02(木) 22:59:25.89 ID:cdo4XHzT
集計はよく使い方が分からない
39 :
2017/02/04(土) 16:36:50.15 ID:sbknHPFF
ファイルサイズを高速に取得したいのですがFileInfoだと遅くて・・・
何か良い方法は無いものでしょうか。
40 :
2017/02/04(土) 16:45:50.00 ID:atHQASm/
>>39
なぜ高速に取得したいの?
どういうアプリケーションを想定?
エクスプローラ?
41 :
2017/02/04(土) 16:49:01.93 ID:sbknHPFF
>>40
はい。そのようなものです。
42 :
2017/02/04(土) 16:52:42.09 ID:94H9RTyk
dir実行してパイプで取り込むとかw
43 :
2017/02/04(土) 16:53:28.40 ID:ypmLJyxS
インデックス
44 :
2017/02/04(土) 17:03:20.16 ID:atHQASm/
DirectoryInfoのEnumeateFilesとかでも遅いかな
45 :
2017/02/04(土) 17:33:34.62 ID:sbknHPFF
>>44
DirectoryInfoで速くなりました。ありがとうございます!
46 :
2017/02/04(土) 21:24:06.70 ID:znmRetLn
>>45
こういう処理はどれが正解って訳じゃないけど、見通しがついてよかったぬー
47 :
2017/02/04(土) 22:20:54.73 ID:SpK5IAIQ
44が的確ですごいな
48 :
2017/02/05(日) 00:02:27.35 ID:PGIZ+KFZ
>>44
GJ!!
49 :
2017/02/05(日) 13:44:40.26 ID:jpxF0hW7
lock()と言うのがありますが、マルチスレッドの処理で
誰かが何らかのオブジェクトをlockしているかどうか知る方法はありますか?
if(IsLocked(obj)){

}else{

}
みたいな処理をしたいのですが。
50 :
2017/02/05(日) 13:51:41.71 ID:QLCXp5gV
>>49
Monitor.IsEntered(obj)とか?
51 :
2017/02/05(日) 14:09:45.29 ID:PGIZ+KFZ
>>49
lock は System.Threading.Monitor クラスを使うように展開されるみたいだからこいつの TryEnter( ) とか使えばいいんじゃね?
http://ufcpp.net/study/csharp/sp_thread.html
52 :
2017/02/05(日) 14:22:39.19 ID:jpxF0hW7
>>50>>51
Monitor.TryEnterで上手く出来ました。
ありがとうございました。
53 :
デフォルトの名無しさん
2017/02/14(火) 20:20:16.10 ID:9KVRWgtp
RxのSubjectで初期値のないBehaviorSubjectはないですか?
subscribeした時点でまだ一度もonNextをしていなければonNextするまでコールバックを呼ばず、
一度でもonNextされていれば最後の値をコールバックに渡す感じです
54 :
2017/02/14(火) 20:49:20.54 ID:pU7mkQJz
>>53
Rxなんか使わずに単純に最後の値を変数に入れといてそれを読めばいいのでは
55 :
デフォルトの名無しさん
2017/02/14(火) 21:07:29.79 ID:9KVRWgtp
>>54
変更通知…
rxが楽
56 :
デフォルトの名無しさん
2017/02/14(火) 23:32:57.72 ID:sZcA1Jdu
マスコットキャラが作れると聞いて始めたのですが、
まったく、作れません。

軽く何かを教えてくださいお願いします。
57 :
2017/02/14(火) 23:42:59.54 ID:jF3NlhZ4
不定形 ウィンドウ でググって、あとはタイマーで絵や座標を更新するとかかな
58 :
2017/02/15(水) 13:44:40.41 ID:6MEGowR3
>>56
Unityちゃんでもいじってみ
59 :
デフォルトの名無しさん
2017/02/15(水) 14:22:29.43 ID:fYC4NdgN
visual studio2012を使っています
c#でdatagridviewを使っていて、headertextを2行にしたいのですが、方法を教えてください
60 :
2017/02/15(水) 14:38:33.74 ID:IaTHaUdU
>>59
改行コード入れればいいんじゃないか?
61 :
デフォルトの名無しさん
2017/02/15(水) 18:06:53.63 ID:fYC4NdgN
GUI
62 :
デフォルトの名無しさん
2017/02/15(水) 18:08:07.82 ID:fYC4NdgN
>60
GUIからだと入れることができませんでしたが、
コードから直接入れることができたので、
コードから入れました。
63 :
2017/02/15(水) 19:46:34.50 ID:IaTHaUdU
>>62
俺も玉にはいい事言うよね。
64 :
デフォルトの名無しさん
2017/02/16(木) 19:46:27.37 ID:3MqMajas
formアプリでformの大きさを小さくしたら配置してるコントロール全てがformの大きさに比率縮小されるっての出来ないですよね?
65 :
2017/02/16(木) 20:07:17.83 ID:yaBP1ZBT
自前で比率計算すればできる
実装がめんどくさければGrapeCityのComponentOne買えばOK
66 :
2017/02/16(木) 20:12:31.55 ID:C8TUip5w
WPFなら出来たけど、Winformはどうなんだろ
67 :
2017/02/16(木) 20:34:36.40 ID:Dw9/ZFHg
68 :
2017/02/16(木) 22:06:01.73 ID:x6Naqncr
地道に力技でやるしかない
この辺りはformアプリは苦手
69 :
デフォルトの名無しさん
2017/02/16(木) 22:16:06.79 ID:7GOAgwDK
メモ帳作ってるけど外観はできても中身ができなくて困ってる
クリックイベントは大丈夫なはずなんだけど、

開くや新規作成 検索とか、探してたら、

開くだけで、8行ぐらいコードが必要なんだけど?
1行で呼び出す、コードとか無いの?
70 :
2017/02/16(木) 22:32:47.75 ID:/R92/z+7
8行でできるならいいじゃん
まとめたいならこれ
Process.Start("notepad.exe");
71 :
デフォルトの名無しさん
2017/02/16(木) 23:25:56.09 ID:7GOAgwDK
>>70
どうも

初心者だから、妥協しようか迷ってたんだけど
当面はそちらで行かせて貰う
72 :
2017/02/16(木) 23:30:09.61 ID:Dw9/ZFHg
いいのかよw
73 :
デフォルトの名無しさん
2017/02/17(金) 08:32:40.56 ID:MUR4QGae
>>65-67
ありがとうござます
助かりました。調べて頑張ってみます
74 :
デフォルトの名無しさん
2017/02/17(金) 08:33:43.24 ID:MUR4QGae
>>68
すみません。抜けてました。レスありがとうございます
75 :
2017/02/18(土) 11:09:32.83 ID:cWaaGg3V
sqlの定義文をC#のソースにするのが面倒なんだが、気の利いたツールとかエディタの拡張とか知りませんか?

create tabale hoge ([hage] text) → "create table hoge " +"([hage] text)";
76 :
2017/02/18(土) 11:15:39.58 ID:MSmTE/VQ
>>75
逐語的リテラル文字列
あとは補完文字列なんてのもあるが、SQLインジェクションには注意
77 :
2017/02/18(土) 12:10:46.00 ID:52dA0McO
>>75
> create tabale hoge ([hage] text) → "create table hoge " +"([hage] text)";
変換規則がわからん
単にこれだけをやりたいだけなら正規表現でもできそうだが
78 :
2017/02/18(土) 12:17:17.23 ID:rCytLmz9
>>75
スクリプトファイルの読み込みじゃいかんのか?
79 :
2017/02/18(土) 13:26:45.21 ID:oikc5OUx
>>75
矢印が逆じゃあないの?
最終的には連結した一つの文字列にしたいんだろ?
80 :
2017/02/18(土) 14:07:01.72 ID:uqTw3F8T
>>75
作れば
81 :
2017/02/18(土) 14:25:52.73 ID:XkQA6zD3
>>75
そのサンプルだと両端にダブルクオーテーション付けて最後にセミコロン付けるだけでよくね?
わざわざ文字列を分割する必要性無いと思うんだけども
82 :
デフォルトの名無しさん
2017/02/18(土) 18:29:25.18 ID:367vvwff
フォームを色分けしたいんですが、どうしたらいいでしょうか。
例えば半分から上は黒で下は白のようなものです。
現状panelを使ってそのように見せているんですが、いい方法あったら教えてください
83 :
2017/02/18(土) 19:51:04.90 ID:d0hejx53
panelを2つ貼ってbackgroundcolourを設定しろよ
84 :
2017/02/18(土) 19:58:44.57 ID:M4R1Zp6s
それやってるって書いてあんじゃん。読めよw
無理やりオーナードローかform捨てるしかないだろな
85 :
2017/02/18(土) 20:00:20.55 ID:n/aPn98B
>>82
なんの目的があるかわからん。
色が分かれていても、別のものを表示している訳ではないの?
86 :
2017/02/18(土) 20:24:06.51 ID:jkd676sQ
パネルじゃなくて、ラベルとか影響の少ないコントロールを Z オーダーの一番下に張るのとか出来なかったっけ。
87 :
2017/02/18(土) 20:44:32.17 ID:n5oO6gvO
上にコントロール重ねること考えたらパネルが一番楽で無難なんじゃね
フォーム(パネル)の背景設定でもいいけど
>>86
パネル以外だと上にコントロール重ねたら下が見えなくならないかな
88 :
2017/02/18(土) 22:28:19.09 ID:cWaaGg3V
sqliteで作るときに、テーブルをツールで定義してからそのsqlをC#のソースに変換するのが面倒だっから
ツールが有ったら使いたいなと思い聞いてみました

他のDBだと、ソースにテーブル定義を書くなんて無いからちょっと混乱させちまいましたね
面倒でも手でやるのが一番早そうだ
89 :
2017/02/18(土) 22:56:35.91 ID:XkQA6zD3
EntityFramework でググれば幸せになれるよ
90 :
2017/02/18(土) 23:07:16.07 ID:rCytLmz9
>>88
だからファイル詠み込めよ
なんで動的sqlでもないのにコードに書くんだよ
91 :
2017/02/19(日) 00:04:30.14 ID:TkpsmKBX
>>82
サイズ変えないならFormのBackgroundImageに
色分けしたBitmap貼るとかいいんでないの?
好きな背景にもできるぞ
92 :
デフォルトの名無しさん
2017/02/19(日) 00:14:46.31 ID:PjLfAeqZ
>82です。みなさんありがとうございます。
説明補足すると、メッセージボックスを自作していて、メッセージボックスのような背景を作りたかったんです。
93 :
2017/02/19(日) 07:54:46.40 ID:ngALvOwB
>>88
> 他のDBだと、ソースにテーブル定義を書くなんて無いから
SQL-SERVER 使ってるけど一時テーブル作ったりで普通にあるけど?
94 :
2017/02/19(日) 08:47:37.68 ID:iOIH+Q4P
>>92
似たようなことはDock=Top, AutoSize=FalseとしたLabelでよくやる。
95 :
2017/02/19(日) 10:11:31.31 ID:93wksAh/
>>89
sqliteでEF使うと致命的に遅いから無理ですわ

>>90
何故に喧嘩腰?

>>93
俺はあまり一時テーブルに頼らずにviewでなんとかするのが好きだから、そこまで思い当たりませんでしたわ
たしかに一時テーブルが正義の場合だって少なくないだろうが
96 :
2017/02/19(日) 10:23:29.24 ID:TZ/mXSM2
一時テーブルは保守性が下がりパフォーマンスもスケーラビリティも多くの場合悪くなるのでやめてください
97 :
2017/02/19(日) 10:32:03.79 ID:kiv7S6GK
>>96
そう言って糞長いストアド作りまくった挙句に保守できなくなった案件があったと、DBコンサルが笑い話のネタにしてたな
一時テーブル=害悪はどこの文化なんだろ
98 :
2017/02/19(日) 10:41:13.77 ID:98lVckOm
一時テーブルは使うけど実行時にcreateするってのは経験ないなぁ
99 :
2017/02/19(日) 10:41:38.21 ID:7Avz8j0c
そういうのは結局は開発者の能力の問題
一時テーブルかストアドかはそれほど重要ではない
100 :
2017/02/19(日) 11:34:46.47 ID:gpMreema
>>95, >>97
一時テーブルとビューとかストアドとは使いどころが違うと思うんだが何故に比較してるんだろ?

>>98
セッション内でのみ有効な一時テーブルとか使ったことないの?
101 :
2017/02/19(日) 11:42:57.76 ID:98lVckOm
>>100
あったあった。そう言われると1度だけ。
あのときは言われたとおりやっただけだから忘れてた。
102 :
2017/02/19(日) 11:52:35.81 ID:TZ/mXSM2
>>97
一時テーブルなんてなくてもクソ長くならないし
そもそもストアドなんて保守性の低いものをむやみに使う必要もない
リレーショナルデータベースとは何か勉強しなおしてこい
103 :
2017/02/19(日) 12:29:51.72 ID:LQaPeC4X
普通はefを使うもんなの?
104 :
2017/02/19(日) 12:40:55.60 ID:zEbYND7D
テーブルがシーケンシャルファイルにしか見えないCOBOL世代の人なんかは一時テーブルとかストアド好きだよね

結局は自分の慣れ親しんだ領域に持って行ってやるのがその人にとってはベストなんだよ
どうせ保守するのは自分じゃないし自社ですらないことも多いからその場でその人員でできるベストを採用しなきゃビジネスとして悪手
流行りや有名コンサルに乗せられて意識たかそうなコードをメンバーのスキルもないのに書こうとする
これが最悪の選択肢

列挙型とswitchで分岐しまくるほうがメンバーにとって理解しやすいならそれがいい
そういう現場では多態性を利用したコードは生産性が落ちる
一時テーブルとストアドも同じでメンバーが理解しやすいというなら保守を受注する会社あるいは保守担当の同僚に心の中で懺悔しつつ採用すべきだ
105 :
2017/02/19(日) 12:43:22.84 ID:OMGCNA7z
スレチ
106 :
2017/02/19(日) 12:55:43.81 ID:LQaPeC4X
>>104
>テーブルがシーケンシャルファイルにしか見えないCOBOL世代の人なんかは一時テーブルとかストアド好きだよね
新しい世代の人にはどう見えるの?
dbの操作はどういう手法が普通なの?
107 :
2017/02/19(日) 12:58:51.41 ID:7Avz8j0c
>>106
大抵の処理は積極的にJOINを使えば1パスで済ませることもできる
108 :
2017/02/19(日) 13:05:26.33 ID:NYetswUU
あとは、DBを永続化されたオブジェクトの単なるストレージと見做して
ORMを活用してほとんどC#の中でやってしまうスタイルもある
109 :
2017/02/19(日) 13:10:17.55 ID:93wksAh/
速度が問題にならない場面でも速度ばかり気になるのは何故なんだろうな?
だから10倍遅くなるEFはあまり好きじゃない
エントリーみたいなものならEF使ったほうが良いとは思うんだけどね
110 :
2017/02/19(日) 13:13:51.67 ID:LQaPeC4X
>>108
そのormというのは75みたいなsql文を実行するんですか?
111 :
2017/02/19(日) 14:09:14.55 ID:zEbYND7D
>>106
別に新しくもなんともないけど普通は行あるいは命題の集合に見える
操作は当然DMLで行う(データ操作言語だからね)
112 :
2017/02/19(日) 14:24:55.62 ID:7Avz8j0c
近年ではビッグデータ界隈で古典的なバッチ処理が最新技術として復活したけどね
処理を行単位ではなくテーブルからテーブルへの射影と考える粗粒度なバッチ処理は
分散処理や糞遅いスクリプト言語との相性がいい
113 :
2017/02/19(日) 15:04:35.19 ID:rTEdd30o
最近EntityFrameworkじゃなくてDapperばっか使ってるわ
114 :
2017/02/19(日) 15:09:45.51 ID:MFFmnvDE
真っ当な判断能力があるなら必然的にそうなる
115 :
2017/02/19(日) 15:11:31.44 ID:OMGCNA7z
DbExecutor使ってるけど全然更新されなくて悲しい
116 :
2017/02/19(日) 16:48:08.70 ID:LQaPeC4X
>>113
Dapperと言うのを調べてみたのですが生のSQLを実行するのと
何が違うのか良く分かりません。Dapperと言うのを使う場合でも
SQL文を実行するんですよね?
何が違うんですか?
117 :
2017/02/19(日) 16:55:48.71 ID:JyXmk48j
>>116
Dapperは主にクエリ結果をオブジェクトにマッピングするためのライブラリ
Dapperを使わない場合でもDataTableやDataReaderをそのまま使わずに型安全なオブジェクトに変換してから処理をするだろう?
それを楽に書きたい人のためのものだよ
118 :
2017/02/19(日) 17:11:25.76 ID:LQaPeC4X
>Dapperを使わない場合でもDataTableやDataReaderをそのまま使わずに型安全なオブジェクトに変換してから処理をするだろう?
Dapperを使わない場合ですが、DataTableに読み取ったあと、カラムの型は自分では分かっているので順番にデータを取り出して、
その型にキャストして読み出すのはダメですか?
それとも私何か勘違いしていますか?
119 :
2017/02/19(日) 18:11:13.51 ID:7Avz8j0c
>>118
それを自動でやってくれるのがDapper
120 :
2017/02/19(日) 20:35:23.16 ID:LQaPeC4X
>>119
なるほど。ありがとうございました。
121 :
2017/02/19(日) 20:41:40.94 ID:+HIMLleH
Dapper気軽そうでいいね。
122 :
デフォルトの名無しさん
2017/02/19(日) 21:16:27.26 ID:PjLfAeqZ
>94
なるほど、ありがとうございます
123 :
デフォルトの名無しさん
2017/02/19(日) 22:55:47.64 ID:L+LZlPn0
124 :
デフォルトの名無しさん
2017/02/22(水) 23:33:37.07 ID:yhciyQan
質問させてください。
なにかの処理中にフォームなどを起動させておく、以下の処理について。
while(xxx.HasExited == false) //xxxはインスタンス
{
Applcation.DoEvents();
System.Threading.Thread.Sleep(200)
}
この処理はwhile文で回していますが、DoEventsとSleepは、なにか処理が行われるたびに呼び出されると思ってよいのでしょうか。
起動中に
なにか処理する→0.2秒とまる→なにか処理する→0.2秒とまる→… みたいな。

またこのSleepは、現在起動中の処理を一時的に止めると思ってよいでしょうか。
ご教授お願いします。
125 :
2017/02/22(水) 23:52:38.18 ID:d6y2GeKl
>>124
何を見たのか誰に教えてもらったのか知らないが、まずはそんなクソコードは忘れよう
DoEventsはVB時代の遺物であり、使用は推奨されない
今時は時間のかかる処理をGUIをフリーズさせることなく実行したい時は
await Task.Run(() => {
 何かの処理
});
と書く
126 :
2017/02/22(水) 23:56:30.83 ID:huuz+PNn
その処理だと、全力でDoEventsと0.2秒休むを繰り返すだけだよ
つか、今どきDoEventsとか存在を忘れたほうがいいんじゃないかねえ
127 :
2017/02/22(水) 23:57:19.06 ID:954rYVtd
>>124
そのセットは別スレッドの入力待ちのテンプレ
・・・Application.DoEvents()って必要だったっけ?w
それはあいまいだけど、キー入力待ちか外部exeからの返り値待ちで使われている
128 :
デフォルトの名無しさん
2017/02/23(木) 01:32:48.34 ID:zQR1bKXh
>124です。みなさんありがとうございます。
最近は推奨されないんですね。
理解としては>127さんのとおり、イベント発生したらDoEventsが実行されると思ってよいのでしょうか。
129 :
2017/02/23(木) 01:40:04.09 ID:l1pCIGHb

DoEventsが実行された時に貯まってるイベントを処理する
130 :
2017/02/23(木) 14:52:23.00 ID:daVfofu2
C#をCGIぽく使うベストプラクティスとかないだろうか。
普段はcentOS+nginxでJavascriptとRuby/PHP、一部バッチにC#って感じでWebサービス開発してる。

リクエスト毎にサーバ側でC#アプリケーションを引数添えて実行して、戻り値を取得するのは出来るんだけど・・ 。
とても実用には耐えなさそうだし、Webホストとか使うのかと思ったがわからず困ってる。
131 :
2017/02/23(木) 15:24:59.57 ID:0G6iEay4
なぜ実用に耐えなさそうだと思うの?
そう思うからには理由あるんでしょ。そこ解決すればいい
132 :
2017/02/23(木) 19:34:00.47 ID:osMc+8cA
毎回プロセスつくんの?
133 :
2017/02/23(木) 20:12:55.31 ID:OJm2Ca4N
じゃあC#でWebサービス作ればいいじゃないか
134 :
2017/02/23(木) 20:13:27.60 ID:u2e4Httf
そんなごちゃ混ぜでちゃんと保守できるの?
135 :
デフォルトの名無しさん
2017/02/24(金) 01:33:54.44 ID:eab+BK9O
>>130
ASP.NET Web API
136 :
2017/02/24(金) 11:37:39.67 ID:dB0UjfyS
みなさん、回答ありがとう。

毎回プロセス作るのはオーバーヘッドでかいから、常駐型になるのかな?
その時のやり取りの仕方をSendMessageだったり、ファイル常時監視してキューファイル投げるとかしか知らないんだ。

WebサービスとかASP.NETで調べてたら、やっぱりC#としての回答はこれなのかなって気がしてきたわ。
個人的な宗教上の理由で避けたかったけど、検討してみる。。ありがとう。
137 :
2017/02/24(金) 12:36:59.04 ID:YZGHPd2K
>>136
> 毎回プロセス作るのはオーバーヘッドでかいから
それが問題になるようなサイトなのか?
138 :
2017/02/24(金) 15:11:03.84 ID:nwaeFCKh
ASP.NET MVCって案外重たいよ
139 :
2017/02/24(金) 15:50:26.31 ID:pDljuoBB
そらそうやろ
140 :
2017/02/24(金) 16:13:46.51 ID:0wjaf/O/
C#でWindowsフォームアプリケーションを作るための良い解説書はあるでしょうか?
独習C#はもう読み終えたので基本的なことはわかっていると思います。
141 :
2017/02/24(金) 16:41:06.62 ID:nwaeFCKh
ゲームしたいです。ゲーム機とゲームソフト買いました。どっちのマニュアルも読みました
早く遊びたいです。次はどんな攻略本読んだらいいでしょう?

ゲームじゃこういうのないのに、プログラミングじゃ多いよな
基本わかったなら何故始めないw
142 :
2017/02/24(金) 16:48:06.10 ID:0wjaf/O/
>>141
独習C#ではWindowsフォームの説明がいっさいなかったので、コンソールアプリしか作れないのです。
フォームに特化した解説書かサイトがあればと思い質問しました。
143 :
2017/02/24(金) 17:08:33.80 ID:pp6ofCfh
本なんか一冊も読んでないけどWinFormアプリいくつも作っている
就活で役立てたいのならマ板に行って聞いたら?
趣味でやっているのなら向いていない
144 :
デフォルトの名無しさん
2017/02/24(金) 17:45:41.09 ID:LZq2xNz5
Formアプリもコンソールアプリもコードベースで作るなら同じって慣れれば分かるけど、最初は分からないよねー
javaのswingで同じこと経験した
145 :
2017/02/24(金) 17:57:21.18 ID:m8N/tmCl
本読むやつはプログラミング向いてない
146 :
2017/02/24(金) 18:16:02.45 ID:2lTW2QAE
amazonでC#マガジンの海を渡ればWinFormの本が見つかる
147 :
2017/02/24(金) 18:26:49.22 ID:2HxY6Dp6
まだWinFormの時代なんだなw
148 :
2017/02/24(金) 18:27:42.45 ID:0tWWIcvC
>>145
悪かったな、読んでるよ。
149 :
デフォルトの名無しさん
2017/02/24(金) 18:44:16.34 ID:ZTtaAqVi
きちんと勉強したいなら本代はケチんなってばっちゃが言ってた
150 :
2017/02/24(金) 18:44:46.20 ID:WmxnDnjh
WPFの本出しても売れないのは明らかだしな
151 :
2017/02/24(金) 18:47:19.91 ID:JpyYS2dN
コンソールアプリは明確にmainというエントリポイントがあるが、
GUIはイベントベースから最初の最初は戸惑うだろ。
(どこにコードを書くのかわからない)
ただ、1回やれば分かるが。

で、そのレベルならMDSNのチュートリアルで十分だと思うよ。
https://msdn.microsoft.com/ja-jp/library/dd492171.aspx
これで駄目なようなら向いてないってのは事実だよ。
本買って本格的に学ぶ内容ではない。
(これはWPFだけどどうせ違いも分かってないでしょ。
古いバージョンのを探せばフォームのチュートリアルもあるはずだし)
152 :
2017/02/24(金) 18:49:16.49 ID:CB55ejbI
ダブルクリックしてれば何とかなる
153 :
2017/02/24(金) 20:32:10.23 ID:DIkdt+H/
肥大化するForm1.cs
154 :
2017/02/24(金) 20:55:52.19 ID:2lTW2QAE
ソリューションエクスプローラでファイルを入れ子にする
ttp://wiz.came.ac/blog/2009/09/post-2.html
155 :
2017/02/24(金) 21:52:47.57 ID:KBFO5tFR
form動かすのは簡単だけどformのコードを破綻させずに書くのは難しい
少なくとも日本の大半の職業プログラマには無理
悲しいね
156 :
2017/02/24(金) 22:19:08.66 ID:ezpXAtZb
動きゃいい
157 :
2017/02/24(金) 23:22:45.93 ID:WdGON0E4
最近はウェブでなんとかなるんだが、きちんと本で勉強するべきだと思う。
C++長かったからC#楽勝と思ったけどラムダ式が読めない。
今更独習C#はと思ったが読んでよかった。
158 :
2017/02/24(金) 23:40:01.37 ID:nwaeFCKh
ラムダ式使えなくって作りたいものは作れるからな
言語を学びたいのか、プログラミングしたいのか、だな
159 :
2017/02/25(土) 00:07:49.88 ID:Hh3bBfOP
ラムダ?

登場してから60年以上たってもLISPが普及してないのが答え。いらん。
160 :
2017/02/25(土) 00:27:59.19 ID:N0RLU+6x
俺が使っているのはJavaScriptなんだが、ラムダは超絶便利だぞ。
ただし使わなくても書けるし、いちいちクラスにしてしまう手もあるし、どうにでもなるのも事実だが。

本で学ぶことが必要なのではなくて、いろいろな道具があることを知るのが重要。
今時の言語は全てラムダ使えるんだから、他言語少しでも学んでいればラムダは使えたはず。
その点、C++は古い言語だったのも事実。

ただどう見ても142はそれ以前だろ。
そもそもWPF(というよりHTML)やったほうがいいんじゃないかと思うし。
161 :
2017/02/25(土) 00:54:21.20 ID:N9ovtMND
ストラテジー用のインターフェース定義とかいちいちめんどくさい
Func、Action、ラムダでスパッと実装したい
162 :
2017/02/25(土) 00:58:33.11 ID:Jm21gNIW
スパッと書く書式、
スパっと書くアルゴリズム、
スパッと書くクラス設計・・・
いつまで経ってもプログラミング始めれず勉強の毎日だぞ
163 :
2017/02/25(土) 01:18:47.75 ID:N0RLU+6x
めんどくさい人にはマジでJavaScriptオススメ。
あのデタラメッぷりには最初戸惑ったが、慣れてしまうと相当いい。

ラムダに慣れたいだけなら、スクリプト言語系(JavaScript/Python/Ruby)がマジでいいと思う。
C#のデリゲートって使う前にいろいろ準備が要って面倒だし、
あるのを知ってても使う気にならないでしょ。
俺もVC++しか使ってないころは全く興味なかった。

でもJavaScriptでお気楽にラムダ使いまくった後は、VC++でも使いたくなる。
だってそのほうが楽だと知ってしまったから。
ただ、いちいち型を合わせないといけないのが面倒だったりする。
164 :
2017/02/25(土) 01:26:56.21 ID:N9ovtMND
インテリセンス弱いスクリプト系言語は怠け者には向かない
165 :
2017/02/25(土) 01:40:08.63 ID:N0RLU+6x
まあIDEに関してはC#が一番上なのだろうね。それは思うよ。
166 :
2017/02/25(土) 01:45:57.08 ID:Hh3bBfOP
winform使うにしもてwin32の知識は必要。結局win32ラップだし。
167 :
2017/02/25(土) 01:46:38.10 ID:FbflVc2K
ラムダはインテリセンスあってこそやね。
168 :
2017/02/25(土) 02:39:26.60 ID:ByE41wZl
これからC#でGUIするんならWPFにしたらいいんじゃない。フォームは古いし。
但し、WPFの本はない、あるけど使えないと云うか価格に見合ってない。いい本あったら教えてもらいたい。
169 :
2017/02/25(土) 07:34:49.62 ID:JxD18xMy
WPFやってみたけどやっぱりformのほうがお気楽だから戻ってきてしまった
170 :
2017/02/25(土) 07:54:43.41 ID:fA+zhTaO
javascriptのラムダって例えばどんなヤツよ?
171 :
2017/02/25(土) 08:03:07.91 ID:vx9FCuam
>>170
今のJavaScriptは (x, y) => x + y のようなC#と全く同じ構文の(というかC#をそのまま真似したんだろうけど)ラムダが使えるよ
もちろん従来の function(x, y) { return x + y; } でもいいし
172 :
デフォルトの名無しさん
2017/02/25(土) 10:39:52.17 ID:TcOntMIt
JSだとインテリセンスが弱い?TypeScript使おうぜ
173 :
2017/02/25(土) 12:04:24.91 ID:N0RLU+6x
JavaScriptのラムダがC#を真似したと言うのは自意識過剰すぎ。(短縮記法の()=>は真似してる)
インテリセンスはMS発なんだしはっきり言えば全員C#を真似しているからVS環境のTSではよくて同等まで。

JavaScriptは文法的な意味で関数とラムダを区別してない。
だからさらっと書いてそれだけ。

var count = 0;
var count_up = function(){count++;};
var show_count = function(){console.log(count);};

count_up();
count_up();
show_count(); // 2

見りゃ分かるが具しか書いてない。だから論理的にこれ以上お手軽なのはない。
(短縮記法は出来るがあれはタイプ数がケチれるだけ)
ついでに階層もクラスも関数で記述するというデタラメッぷり。
だからそもそも「ラムダなんて使いません(キリッ」みたいなことが出来ない。
(階層がラムダ)

知らなければ意味不明だと思うが、とにかくそういう世界だ。
その状況で慣れると、心理的な障壁が取り除かれる。
ラムダ嫌いって要するにこれだろうし。
174 :
デフォルトの名無しさん
2017/02/25(土) 12:12:40.17 ID:TcOntMIt
ES6ならclass構文(内部では関数に変換されるけど)あるからかなり楽になったぞ
175 :
2017/02/25(土) 12:24:18.16 ID:S4wbN3RD
ラムダは真似というか普通に輸入だろ
ES6の策定にはMSも主導的な立場のメンバーとして当然参加してるし
176 :
2017/02/25(土) 12:26:33.18 ID:IfKbzrsT
>>173はjavascriptやったことない奴でも初見で何してるか分かる
でもこんなの書かれたら初見で見破るの無理でしょ
var res = ((Func<int, int, bool>)((i, j) => i == j))(5, 3);

ラムダ嫌いはラムダが嫌いなんじゃなくて、読みにくいラムダが嫌いなんでしょ
「ラムダなんて使いません(キリッ」じゃなくて「読みにくいラムダなんて使いません(キリッ」なんだよ
177 :
2017/02/25(土) 12:31:25.09 ID:N0RLU+6x
>>174
あんなもん所詮慣れ。俺は従来のJavaScriptの構文でも苦労してない。
そしてラムダも所詮慣れ。慣れればどうって事は無い。(難しくは無い)
ただし使わなくても実装できるのは事実で、わざわざ慣れる必要があるかは微妙。
178 :
2017/02/25(土) 12:45:06.30 ID:S4wbN3RD
>>176
関数の即時評価はJSでは非常によく使われるテクニックだよ
C#のラムダなんて、本来の副作用がない使い方をするのがほとんどだから可愛いもんだ
JSではガンガン副作用書いていくから超複雑だよ
179 :
2017/02/25(土) 13:25:03.75 ID:Hh3bBfOP
>>176
パラダイムが違うものごっちゃにして何がしたいんだ?
やたらカタカナ使う田中康夫やルー大柴の日本語みたいなものだ。
180 :
2017/02/25(土) 13:29:41.99 ID:N0RLU+6x
>>176
それは型情報を付加しようとしているから見た目複雑になる。
型情報が無いJavaScriptなら以下になる。

var func = function(i,j){return i==j;};
var res = func(5,3);

もちろん1行でも書けるが、これはJSer以外にはすこぶる評判が悪い。

var res = (function(i,j){return i==j;})(5,3);

そしてこれをアロー関数(短縮記法)で書いたらC#の型情報を落としたものと同じになる。

var res = ((i,j)=>i==j)(5,3);

そもそも「お手軽にやろうぜ」というノリなら型情報が無いほうがよく、
その点がC#だとどうにもフィットしない。


ただしラムダ使い全般が馬鹿なのか、
あるいはJavaScript含めた関数系一般に言える傾向なのかは定かではないが、
おかしな記述で余計複雑にする馬鹿、まさに「木を見て森を見ず」はよく見かける。
奴らは「木」つまり一箇所の記述を最小限にすることに異常にこだわり、
「森」つまり全体を最小限にすることを考えていない傾向がある。
だからラムダ(キリッな奴が出してくるコードが糞なことも多く、
これがラムダを知らない連中にとってラムダを学ぶ価値があるように見えない理由だと思う。
対してオブジェクト指向は「森」を「林」に小分けする手法だから、
オブジェクト指向をきちんと出来ている連中から見れば余計に馬鹿に見えてしまうし。
181 :
2017/02/25(土) 13:31:51.44 ID:Hh3bBfOP
これだからemacs使いは嫌われるんだよ。
182 :
2017/02/25(土) 14:43:31.03 ID:Qzh8dVTL
関数呼び出しでデリゲート渡すところをラムダ式で書いたりするのが便利だし、プログラムが小さくなり、関連ある記述がまとまり、慣れると読み易い。
まあ、伝統的と云うか、平均以下のレベルに合わせたコーディング規約が幅をきかせているプロジェクトでは忌み嫌われる。
183 :
2017/02/25(土) 15:18:03.16 ID:IvVV1H8V
var res = (5 == 3)

それ関数使わなくてもいい例だから
もうちょい違うのなかったかな
184 :
2017/02/25(土) 15:39:38.73 ID:9TfgDVOx
保守性や可読性でラムダを嫌う人がいるのはまあ良いんだけど
経験的にそういう人のコードが優れてるかっていうとそうでもない
同じような構造のループ処理を大量生産したり
try catch log出力を延々と全てのメソッドに書いたりする
185 :
2017/02/25(土) 15:44:53.00 ID:3ZNX7OqZ
>>183
今日のとんちきレス大賞
186 :
デフォルトの名無しさん
2017/02/25(土) 15:46:20.53 ID:TcOntMIt
ラムダは静的なダックタイピングにするべきだったと思う
長くなる時はエイリアス設定するとかにして
187 :
デフォルトの名無しさん
2017/02/25(土) 15:46:55.92 ID:TcOntMIt
>>183
ガイジかな?
188 :
2017/02/25(土) 16:24:58.90 ID:N0RLU+6x
>>182
つかそういう問題じゃない。C++なら例があるが。
> auto 型推論とラムダ関数を使用すると、コードをすばやく記述して、それを引き締め、より的確に把握することができます。
> https://msdn.microsoft.com/ja-jp/library/hh279654.aspx
この2つのコードで下のほうがいいと思えるかどうかだよ。

正直、俺にはどうでもいい範囲だよ、これは。
こんな局所的部分で活用(キリッしたところで大して意味が無い。
確かにコードは減るけど、バグる確率が減るわけじゃないでしょ。
そして関数型()の連中が出してくる「ラムダの優位性(キリッ」なコードはほぼ全てこの類であり、
巨大プログラムを分割して直接的に単純化する「オブジェクト指向」と比べて、訴求力に乏しい。

理由は簡単で、そもそもラムダは「糖衣構文」でしかないから。
実体は「関数ポインタ+変数」であり、
Cなら構造体ポインタを引数に取る関数、
C++なら関数オブジェクトまたはクラスで表現できる。
(見にくいが元々記述できる。これがストロウストラップがラムダ導入に反対していた理由だと聞いた)
だからJavaScriptの文法が関数=ラムダ=階層=クラスなのも自然ではあるし、
Rubyが匿名関数(ラムダ)を匿名クラスで表現するのもこのため。

結局、ラムダを導入したところで出来ることは増えず、本当の意味での「エレガント」なコードにはならない。
ところが関数型()の連中は「エレガント」=「短い」or「ラムダ使ってる」と勘違いしている馬鹿が多くて、
上記URLのコードなら「下側がイイ!」「下側じゃ無いと許さない!」とか言い出すからおかしくなる。
「自転車置き場の議論」と同じで、馬鹿なりに見える範囲で考えたんだろうが、所詮馬鹿でしかない。

プログラミングにおける「エレガント」は数学と同じで、
「こう考えればこんなに簡単に解けるんだ!」であり、
糖衣構文でしかないラムダは本質的には全く効果が無い。
ただし、俺自身も慣れる前はラムダを選択肢に入れていなかった=思考を狭めていた。
これはまずいので、通常の選択肢として考えられるほどには慣れておく必要はある。
ただ、それ以上の意味は無い。
189 :
2017/02/25(土) 16:25:31.63 ID:N0RLU+6x
余談だが、JavaScriptのプロトタイプとダックタイピングはこの意味で面白い。
出来ることが増えているので、直接的にもっと「エレガント」を探求できる。
以前話題になっていた拡張メソッドの継承もJavaScriptなら最初から出来る。

ただし、何でもかんでも出来ればいいものでもなく、馬鹿に使わせたら余計におかしくなるのも事実。
その点、C#はいいバランスを目指していていい。
ただしこの意味で「封印済み」の場所もあるから、
C++やJavaScript等「何でもあり系」言語に親しむのも悪くないと思う。
190 :
2017/02/25(土) 16:30:23.41 ID:IvVV1H8V
>>185,187
ほう? じゃ>>176のこのコードがどういう場合に有用なのか教えてくれ
>var res = ((Func<int, int, bool>)((i, j) => i == j))(5, 3);
191 :
デフォルトの名無しさん
2017/02/25(土) 16:39:02.64 ID:TcOntMIt
>>190
C#とJSのラムダの比較の為に出しただけであって、有用なのかは今関係ない
192 :
2017/02/25(土) 16:39:23.68 ID:3ZNX7OqZ
>>190
誰も処理内容の話なんかしてないぞ
みんなはアメをくるむ包装紙の話をしてるのに君だけアメの味を話題にしてる
193 :
デフォルトの名無しさん
2017/02/25(土) 16:41:51.21 ID:TcOntMIt
例え上手い
194 :
2017/02/25(土) 17:09:31.56 ID:fb/41uG4
>>190
まじasp
195 :
2017/02/25(土) 17:21:54.68 ID:WB0pRnLv
変更されることがない前提のList<int>を複数のスレッド
でforeachするのは問題があるでしょうか。
やっぱりlockすべき?
196 :
2017/02/25(土) 17:22:56.07 ID:N0RLU+6x
>>186
コードを最小限にするためには
・型=なし
・多重継承=あり
・ダックタイピング=あり
がいい。この点JavaScriptは、型無し、多重継承は手動で可能、ダックタイピングあり、なので向いている。

一方C#は、型あり、多重継承禁止、ダックタイピングなし、なので
「コード量」よりは「きっちり書くこと」を目指しており、
「手抜き」が主な目的のラムダとどうにも相性が悪い。
ここでダックタイピングだけ導入しても余計に混乱すると思う。

つかね、C#って「一文字でもケチりたい」奴用の言語ではなくて、
「型なし言語では堅牢なアプリは作れない」と考える連中用の言語だし。
197 :
2017/02/25(土) 17:30:35.48 ID:IvVV1H8V
はあ?
包装紙の不要な物を包装紙でくるんでこんな包装の仕方はダメじゃって言ってる人に
包装紙の良し悪しについて平然と議論しつづける神経のほうがわからんよ
198 :
2017/02/25(土) 17:43:27.22 ID:Hh3bBfOP
C#は業務系で使われたいのか、やっつけアプリ用に使われたいのかって話だ。

業務系で使われたいならシンタックスを増やすなって話だが、どうやら後者らしいので、c#はキティ用言語といえる。
199 :
2017/02/25(土) 18:38:47.74 ID:ByE41wZl
>>195
lock不要に一票。
追加削除ないなら配列じゃダメなの。
200 :
2017/02/25(土) 18:53:44.75 ID:ByE41wZl
C#はちゃちゃとプログラムにも業務にも使える優れもの。
シンタックス変えてない。拡張だろ。
LInqなんか追加されてホント便利になってる。
201 :
2017/02/25(土) 19:22:21.24 ID:FbflVc2K
>>180
めっちゃ読みづらい。
いやスペースがないせいだけどw
202 :
2017/02/25(土) 20:01:05.66 ID:lRvoFyV9
>>195
不要
もし後で変更する可能性があるならReaderWriterLockSlim使っとけばいい
203 :
デフォルトの名無しさん
2017/02/25(土) 20:48:05.07 ID:kVUREvkV
>>199,202
ありがとう。
foreachによって実は内部的な変化が行われていたらまずいのではと
考えていました。
204 :
2017/02/25(土) 20:49:00.75 ID:IvVV1H8V
>>195
AsReadOnly()とか使って使う側が変更しないことを保証しといたら?
ImmutableList<T>を使うともっと堅い
205 :
2017/02/26(日) 03:14:38.88 ID:0YrJqBhk
ID:N0RLU+6xはもっと要点をまとめて端的に書き込めよ・・・
お前の言う「ラムダの優位性(キリッ」をC#で言ってる人なんてそうそう見ないぞ

変にプログラミング言語一般のラムダについて述べるせいで論点がブレブレだ
206 :
2017/02/26(日) 04:03:21.89 ID:0YrJqBhk
日本語が苦手なのかもしれないが、「文法的な意味で関数とラムダを区別してない」とか「関数=ラムダ=階層=クラス」とかはよくないでしょ
初心者にjavascriptの関数が全てラムダみたいな誤解を与えかねない

>Rubyが匿名関数(ラムダ)を匿名クラスで表現するのもこのため。
Rubyの匿名関数(無名関数の方が一般的な呼び名だけど)は匿名クラス(無名クラスの方が一般的だけど)じゃなくて「Procオブジェクト」
207 :
2017/02/26(日) 10:41:00.28 ID:/Q8k6Dmd
C#のラムダ式は、どっちかというと式木が目的で導入されたんじゃないの?

てか、いい加減スレ違いでしょ、この話題。
208 :
2017/02/26(日) 11:19:59.83 ID:TMS4+8Av
>>207
式木はdynamicと関係あるだろ
ラムダ式はLINQのメソッド形式では必須
209 :
2017/02/26(日) 11:26:13.98 ID:a7NPBA4e
いやメソッド形式では(事実上はラムダ式必須であっても)匿名メソッドでも代用はできる
式木は意味的に匿名メソッドが式にならないからラムダ式が必須だよ
匿名メソッドで式にできるように言語拡張しても良いけどそれってラムダ式そのものだし
210 :
2017/02/26(日) 11:33:24.17 ID:asTjjGDY
どうでも良いがJavaScriptのfunctionとアロー関数は
等価じゃないぞ。
乱用してバグこしらえるパターンだな。
211 :
デフォルトの名無しさん
2017/02/26(日) 11:36:25.80 ID:H7bo/69j
>>210
functionだとself定義しないといけなくて面倒だけどアローは楽だよな
212 :
2017/02/26(日) 11:36:30.05 ID:Q2GAsSXo
式木の説明読んでみたが、言ってることが関数型()の連中と全く同じでワロタ
213 :
2017/02/26(日) 11:44:07.89 ID:LLZCcrhN
>>208
式木はもともとdynamicとは全く関係ないよ
DLRプロジェクトで動的コンパイル用のASTが作られたが、System.Linq.Expressionsと被ってるということでそれを拡張する形で統合された
結局DLRは頓挫してコアの部分だけがCLRに導入され、そこに乗っかって実装されたのがdynamic
214 :
2017/02/26(日) 11:49:23.90 ID:0YrJqBhk
>>212
(多少関連のある使い方ができるかもしれんが、)全然違うだろ
どこを読んだらそんな変な読み取りができるんだ?
215 :
2017/02/26(日) 11:59:43.17 ID:LLZCcrhN
>>212
式木やdynamicのあたりは今時のミーハーな関数型()とはだいぶ色が違うと思う
LispのマクロとかMOPとかの影響を受けた、かなりガチなマニアックな設計思想の
216 :
2017/02/26(日) 12:33:17.61 ID:Q2GAsSXo
>>215
てか式木っていったい何がやりたかったの?
超高速Evalか?
217 :
2017/02/26(日) 12:57:05.99 ID:LLZCcrhN
>>216
式木の目的は、C#で書かれた式を独自に解釈して処理すること
例えばラムダ式を変換してExcelの数式を生成したりできる
文字列を使うのに比べて解釈が楽、型や構文の静的チェックが可能、インテリセンスが効くといった利点がある
218 :
2017/02/26(日) 13:49:21.90 ID:Q2GAsSXo
>>217
おそらくLISP信者も同様にそのポテンシャルに魅了されているのだと思うのだが、
具体的に何に活用できるのだ?
何にでも使えそうだが、いざ何に使えば「他では達成できないほど」の結果を引き出せるのか分からない。

> 例えばラムダ式を変換してExcelの数式を生成したりできる
なるほど素晴らしい。しかしExcelシートを別に用意した方が楽だし、
通常の数式ならC#側で「テキスト」として出力するのも難しくは無い。
(もちろん出力パーサの再開発になるから、MS謹製自動変換のほうが楽だが、その程度)

> インテリセンスが効くといった利点がある
これは利点ではあるが、主な目的のうち大半は「手打ち」ではないだろうから、この際あまり関係ない。

> 文字列を使うのに比べて解釈が楽、型や構文の静的チェックが可能
これを「ユーザ側」の利点とするなら、ユーザー側でのパーサ生成、
つまりメタメタプログラミングを想定していることになるが、そうなのか?

結果的にLISPで成功したプロジェクトといえるのはemacsのみだ。
対してCはほぼ全てのPC世界を再構築しているに近い。
理由付けはいろいろ出来るだろうが、結果的に誰もLISPを選ばなかったということではある。
他でもっと簡単に目的を達成できる方法があるのなら、誰もより複雑な方式での解決なんてしない。
結果的に、何でも出来るLISPは誰にも使われなかった。式木の雰囲気も見た目これに近い。

ExcelはExcelで、C#はC#で、で誰も文句は無い。
(その分簡単になっていて、Excelは非プログラマでも十分使える)
そこを統合するのは学術的には意味があるが、現実的には意味が無い。
HaskellやPrologみたいにアカデミック向けなら分かるが、C#はそうではないし。
219 :
2017/02/26(日) 14:12:54.65 ID:AZYnfb42
メタプログラミングで便利
以上
220 :
2017/02/26(日) 14:23:30.18 ID:Q2GAsSXo
しかし現実的には、通常のプログラミング:メタプログラミング=100:1、位の分量しかないだろ。
どうでもいい箇所の高速化をやってる馬鹿と同じ。そこにこだわっても効果ないよ。
221 :
2017/02/26(日) 14:36:14.18 ID:0YrJqBhk
>>220
リフレクションの代わりにして高速化するとかの目的で結構使われてる
アプリケーションで使うよりもライブラリの内部とかで使うことが多い
222 :
デフォルトの名無しさん
2017/02/26(日) 14:37:28.54 ID:bMNV8RU5
一度時代から消えたような無用な機能を言語オタクが復活させてみんな迷惑してるいう状況。
223 :
2017/02/26(日) 14:38:28.84 ID:BapL/ZVi
他言語からの移植が楽
可読性悪くなるから使うことはないな
224 :
デフォルトの名無しさん
2017/02/26(日) 15:03:16.38 ID:bMNV8RU5
はるか昔、C++ vs Objective-Cの戦いで瞬殺されたObjective-Cを
コード書けないジョブスが引っ張り出してきて、みんなが迷惑してるレベル。

それがC#とヘジ。
225 :
2017/02/26(日) 16:19:53.46 ID:cWe1Zi+O
C++が勝ったのはCとの互換性で、ジョブズがObjective-Cを選んだのはC++が美しくなかったからだと思う。
しかし、O-CはAppleだけだから、やらされる身からすると迷惑なんだろう。
226 :
デフォルトの名無しさん
2017/02/26(日) 16:33:51.40 ID:bMNV8RU5
はるか昔、BASIC vs Pascalの戦いで、激戦の末、BASICが市場を制した。
にも関わらず、BSDにOSX、iOSなどと名前詐欺するように、PascalにDelphiなどとかっこいい名前をつけて売り出した男がいる。

ヘジである。

とある事業でMSの独占だと将来に保守するリスクが高まるのでDelphiを採用した開発があった。
Delphiは一瞬市場で人気は出たもののすぐに消えた。あのとき大量に作られたコードは今も保守されてるんだろうか。

市場から一度消えた古い技術を引っ張り出す輩はほんと迷惑である。
227 :
2017/02/26(日) 17:17:53.27 ID:1LlUyF33
pascal はいい言語だよ,LL(1) なんて美しいじゃないか
228 :
2017/02/26(日) 17:26:34.35 ID:cWe1Zi+O
アルゴリズム+データ構造=Pascal
これが私の原点だ。
でも、生活の為に、いまだCやってる。
ヘッダファイルが面倒、C#はヘッダファイルなくていいね。
229 :
2017/02/27(月) 08:50:13.59 ID:DR1RgDtx
式木は実行時コンパイルできるという利点もあるよ
実行時コンパイルはシリアライザの高速化に使用されている
230 :
2017/02/27(月) 12:29:20.61 ID:4XW6lmAf
ラムダ式使ってたけど、>>104みたいな理由で自分以外保守できなくなったから.NET2.0時代の表記に戻したな
いくら便利でも周りが使う気無いなら意味ねえわ・・・
231 :
2017/02/27(月) 13:39:39.07 ID:v0Y8eGO4
技術者の1割しか理解してないものを仕事で使用できるわけがない。
C#とVBでVBが選ばれるのも仕方がない。仮にC#なんか選んでしまうと一部の技術者に負担がすべていく。
するとC#にしろ、ラムダ、LINQOKにしろ、WPFにしろと言ってた輩が無責任に最初に転職していく。
残された奴らじゃとても保守は無理。
232 :
2017/02/27(月) 13:47:01.73 ID:BO1ZZ84r
便利だから楽だからって言い張るから導入した途端
その人が辞めていく法則
233 :
2017/02/27(月) 17:10:34.62 ID:ToRYKJiY
そういうのはマ板でやってくれ
234 :
2017/02/27(月) 18:55:42.34 ID:bS39cZCs
業務では言われたことを適当にこなして定時で帰れば良い
お家に帰ってからが楽しいプログラミングの時間だ
誰にも足を引っ張られないで好きなことをできる
悲しいね
235 :
2017/02/27(月) 19:12:51.30 ID:bir6oLGv
>>230-232
俺はそれでいいと思うけどね。
結果的に「従来記法しかしない会社」と「意識高い記法をする会社」で市場で勝敗つければいい。

本当に「生産性が高い」のなら相手を容易に駆逐できるはず。
出来ないのならその程度だってこと。
まだらになっている方が生産性が悪い。分離して競わせるのが正しい。

多分、ラムダ、LINQ、WPFには相手を駆逐できるほどのインパクトは無い。
対してメモリ保護、GCはかなり劇的に楽になるのでCはシェアを落としつつある。
ちなみに俺はHTMLはフォーム/WPFを駆逐できると思う。
236 :
デフォルトの名無しさん
2017/02/27(月) 19:15:16.04 ID:Ftr1v2iE
ラムダとリスト操作系関数は少し慣れればかなり便利
WPFは、WEBフレームワークに似てるからそっち系の人は良いのでは
237 :
2017/02/27(月) 19:17:31.38 ID:Ehytdfgf
>>235
ごちゃ混ぜで語りすぎてる。
ラムダ、LINQなんてちょっと学習するだけやん。
請負、派遣業界に無理なのは分かるがw
238 :
デフォルトの名無しさん
2017/02/27(月) 19:47:36.34 ID:RCbBwD75
書籍代は幾ら有っても足んね〜

みんなは、どうしてる?

図書館は、全くと言って良いほどロクな書籍が無い
後はグーグル書籍で、漁る位だし……。
239 :
2017/02/27(月) 19:55:43.62 ID:GaZbolX8
APRESSから買っている
240 :
デフォルトの名無しさん
2017/02/27(月) 20:15:06.48 ID:RCbBwD75
ほむ
241 :
2017/02/27(月) 20:17:13.08 ID:zuqOpmfm
>>238
MSDNのリファレンスを全部プリントアウトしたほうが安いんじゃね?
242 :
デフォルトの名無しさん
2017/02/27(月) 20:46:05.22 ID:RCbBwD75
>>241
その発想は無かった

因みに get setの使い道が微妙なんだけど、
具体的な使用例とか、教えてくれ><
243 :
2017/02/27(月) 20:55:40.51 ID:SheqW2pp
>>242
カプセル化
244 :
2017/02/27(月) 21:04:36.29 ID:bir6oLGv
>>236
WPFざっくり見てみたが、HTML/CSS/JavaScriptの再開発でしかない。
時期的な問題もあったのだろうが、
ここまで似せるなら最初からHTML/CSS採用しろよ、とWEB系からは見えるだろう。
WEB系の連中を引っ張り込みたいのなら、今からでも全面採用して、
HTML/CSS/C#出来るようにするべきだろう。

見た目、WEB系はC#よりも新技術の使い捨てが酷くて、余裕が無い。
彼らにとってWPFは簡単だが、学ぶのが面倒であり、その価値もないから、
Electron(HTML/CSS/JavaScript)でデスクトップアプリを作る方を選択するだろう。

面倒だから学ばない、というのはラムダもLINQも同じ。
元々無くても出来るのだから、それで苦労してない人には同期付けが無い。
その辺がメモリ保護/GCと根本的に異なる。
245 :
2017/02/27(月) 21:14:29.75 ID:Ehytdfgf
>>244
相変わらず馬鹿だな。
246 :
2017/02/27(月) 21:19:28.45 ID:QfkRDmsT
ざっくりじゃなくて、もう少しちゃんと使って理解してから評価しなよ。
247 :
2017/02/27(月) 21:22:26.99 ID:aCjjvIHm
15年ぐらい前htmlviewでui作るの流行ったな。もうすっかり見かけなくなったがw
248 :
2017/02/27(月) 21:34:20.63 ID:sVGz7y9C
html5ならUWPにあるから良かったじゃん
249 :
デフォルトの名無しさん
2017/02/27(月) 21:39:40.07 ID:Ftr1v2iE
>>244
Electronは遅すぎる
250 :
2017/02/27(月) 22:16:01.34 ID:8x434lFb
>ここまで似せるなら最初からHTML/CSS採用しろよ、とWEB系からは見えるだろう。
>WEB系の連中を引っ張り込みたいのなら、今からでも全面採用して、
>HTML/CSS/C#出来るようにするべきだろう。

ASP.NET MVCってまさにこれ?
251 :
2017/02/27(月) 22:49:12.00 ID:bir6oLGv
>>248
> UWP
名前しか聞いた事無かったけど、これは良いね。
HTML/JavaScriptならElectronと同じコンセプトが可能か?

HTML/C++で使いたいんだが、この組み合わせは無理なのか、、、
252 :
2017/02/27(月) 23:22:57.99 ID:ENJIvJC4
妄想だけでよく書くなほんと
253 :
2017/02/27(月) 23:40:54.02 ID:o2MHRqlI
>>238
最近の本は安くなってるよ。
一番高かったのは2000年当時、Windows関連書籍で一冊1万越えもあった。
平均7、8千円かな、5千円だと安いと感じた。
本代はケチらずばんばん買ってる。
飯の種だし、1日悩んでたら人件費何万になる?
本買って解決すれば安上がり。
254 :
2017/02/28(火) 00:00:06.65 ID:8+bIkryZ
>>251
WPF → UWP という進化だよw
255 :
2017/02/28(火) 00:13:12.42 ID:3lr7jZCG
一応最終的には全ての組み合わせが出来ることを目指してるんだろ?
看板付け替えただけ、という見方かもしれんが、俺は進化でいいと思うぞ。
256 :
2017/02/28(火) 00:17:57.53 ID:C4A7F+ay
>>251
MFCでだいぶ前からhtml/c++はできるじゃん。
257 :
デフォルトの名無しさん
2017/02/28(火) 19:37:38.52 ID:yxAUZLha
テキストファイル中の、特定の行だけを読み込むにはどうしたらいいでしょうか?
読みたい行が何行目かは決まってるんですが、
1.1行目からその行までに含まれる文字数
2.読みたい行からファイルの末尾までの行数
は不定です。
FileStream.Seekの、バイト数ではなく行数指定出来るものがあればいいんですが。
258 :
2017/02/28(火) 19:42:51.05 ID:9Xdv30xY
>>257
ループ回して対象行のカウントでホゲホゲすれば?
259 :
2017/02/28(火) 19:44:38.27 ID:yxAUZLha
>>258
ありがとうございます。
うまくできました。
StreamReader reader = new StreamReader(file,Encoding.Default);
for(int i = 0; i < 10; i++)
{
reader.ReadLine();
}
this.listBox1.Items.Add(reader.ReadLine());
260 :
2017/02/28(火) 20:23:35.47 ID:K7hLR7oh
>>259
実践で使えないコード過ぎてイラっときた
気分で改行したら終わりって
261 :
2017/02/28(火) 20:29:23.68 ID:+WocOs48
>>260
読みたい行が何行目かは決まってるのに気分で改行したがるその仕様無視にイラっときた
262 :
2017/02/28(火) 20:35:19.50 ID:K7hLR7oh
本当はキーワードがありそうじゃん
n行目ってのはあくまで質問者が宿題を読んだ感想文なわけで
263 :
2017/02/28(火) 20:37:44.89 ID:Fq1JMnLG
>>262
エスパーさんはいらないから
汎用性のないコードだってのならともかく「本来はこんな問題のはず」とか議論しても何もならん
264 :
デフォルトの名無しさん
2017/02/28(火) 21:08:18.23 ID:pIiGTdLD
>>260
どこが実践で使えないんだ(笑)
265 :
2017/02/28(火) 21:15:58.55 ID:wrouDyFM
とんちき臭がする
266 :
2017/02/28(火) 21:19:57.27 ID:BFmlECVl
ClosedXMLを使って、2行分のデータとスタイル(罫線等)を、任意の2行へコピーしようとしています。
CopyToを使って動かしてみると、マージされているセルなどが思った通りにはコピーされないようです。

worksheet.Range(rowno + 2 + ":" + rowno + 3).CopyTo(worksheet.Range(rowno + 4 + ":" + rowno + 5));

お助けください
267 :
2017/02/28(火) 21:34:46.83 ID:A2md68KB
2 + ":"
こういうの気持ち悪い
268 :
2017/02/28(火) 21:59:17.96 ID:39alJvfi
>>259
StreamReaderをCloseしようね
内部的には同じだけどFile.ReadLines()を使ってElementAt()とかで目的の行が取れるよ
269 :
2017/02/28(火) 22:08:38.41 ID:s47hQ+GZ
>>264
じゃ、お前んとこってテキストファイルの行数でデータ定義するの?
270 :
2017/02/28(火) 22:11:57.45 ID:39alJvfi
ログファイルの1行目と2行目はヘッダーだからみたいな定義は十分ありえるだろ
271 :
デフォルトの名無しさん
2017/02/28(火) 22:14:30.88 ID:pIiGTdLD
>>269
普通にID管理だけど、チートやバグが発生した場合に行数管理で正常か
どうか判断する局面も有るけど?
272 :
2017/02/28(火) 22:24:32.74 ID:+WocOs48
>>269
測定データ1分1行で定義されてて、1日置き=1440行ごと読み出しとか、行数でのデータ取扱なんてざらだよ
273 :
2017/02/28(火) 23:03:34.74 ID:s47hQ+GZ
>>272
面倒でも日時入れるわ
データがないとき(?)って空白出すの?
超面倒じゃん

データがないって判定もヤバそう
274 :
2017/02/28(火) 23:10:22.11 ID:AHF/JWRt
>>268
ReadLinesは全部メモリに読むから、ファイルがでかい可能性があるなら避けたほうがよいかも
275 :
2017/02/28(火) 23:12:03.23 ID:z/77EZzb
メインフレームのシーケンシャルファイル(固定長レコードのバイナリファイル)ですら件数で判断なんかやらねえわ
運用が面倒臭すぎる
276 :
2017/02/28(火) 23:25:18.45 ID:39alJvfi
>>274
読まないよ
全部読むのはReadAllLines
277 :
2017/03/01(水) 01:43:58.56 ID:jez9uqUV
自分もテキストでハマってるわ。
テキスト読み出しながら、登録したキーワードに引っかかったらreplaceする必要があるんだけど、(足りない脳味噌の範囲で)どうやってもクッソ遅い。
キーワードと置換後文字はDictionaryで管理してるけど、そもそもキーワードが8200程ある上に、テキストも1ファイルあたり平均約2.7万文字あってもう無理(テキストファイルは1日あたり1600ほど生産されてる)
速度は諦めるしかない?
278 :
2017/03/01(水) 01:54:31.83 ID:XgpeB6sR
>>276
すまん、そうだった
279 :
2017/03/01(水) 04:22:26.99 ID:uGJVx5D1
>>277
どのくらいで遅いって言ってるのか次第じゃない?
キーワードにマッチする単位で単語分割できてれば入力の単語単位で辞書にぶつけるのが効率よさそう
ただ3万文字程度ならキーワードの数だけ入力を走査しても言うほど時間かからない気がする
280 :
2017/03/01(水) 07:58:17.12 ID:ElQ6OcG3
>>277
キーワードを予め文字単位でツリー化しておいて辿っていけば?
1文字読むたびに最大でもキーワードの最大文字数と同じ数だけのツリーのポインタを1歩進めるだけで済む
281 :
2017/03/01(水) 08:04:58.33 ID:SJrJxNnQ
>>268
> StreamReaderをCloseしようね
そこは using だろ
282 :
2017/03/01(水) 08:26:19.47 ID:mkeal5qn
トライ木か
283 :
デフォルトの名無しさん
2017/03/01(水) 14:31:13.79 ID:UzmiTiRe
System.Net.CookieのDomainについてですが、RFC 6265の4.1.2.3が実現できないように思えます
Domainのスコープを設定するにはどうすればいいでしょうか?
284 :
2017/03/01(水) 15:36:27.74 ID:yuocqMDO
キーワード「ねこ・こねこ」があるとき、「こねこ」はどちらに該当する?

また、キーワード「こね・ねこ」があるとき、どちらに該当する?
285 :
2017/03/01(水) 17:28:21.57 ID:9PjUMtQQ
初心者質問すみません
フォームにボタンAとボタンBの二つのボタンがあります
ボタンAをクリックすると、ある反復処理が延々と繰り返されます
ボタンBをクリックしてこの反復処理をストップさせるには通常どのような記述をするのでしょうか
286 :
2017/03/01(水) 17:33:43.62 ID:kRYqKFSr
>>285
反復処理の中に条件付き中断処理を入れる
もう一つのボタンを押したときに中断処理用のフラグをセットする
もちろん別スレッドじゃないとボタン押せないけど
287 :
2017/03/01(水) 17:36:44.01 ID:kRYqKFSr
連レスごめん
反復処理中にApplication.DoEvents入れてもボタンの入力受けるけど
反応悪くなるし、今時はまず使わないだろうな
288 :
2017/03/01(水) 19:13:43.54 ID:1ptPBH8r
>>285

CancellationTokenSource cancellationTokenSource;
async buttonA_Click()
{
this.cancellationTokenSource = new CancellationTokenSource();

while ( this.cancellationTokenSource.Token.IsCancellationRequested )
{
await Task.Run( () =>
{
// 何か
}, this.cancellationTokenSource.Token );
}
}

private void buttonB_Click()
{
this.cancellationTokenSource.Cancel();
}
289 :
2017/03/01(水) 19:21:54.77 ID:z3LIBqaM
>>279に一票。
290 :
2017/03/01(水) 19:31:02.44 ID:CFmNTLsk
>>277
ソース上げたら誰かみてくれるよ
291 :
2017/03/01(水) 19:53:57.57 ID:SJrJxNnQ
正規表現に 8,200個も連結して検索させたら死ぬかな?
292 :
デフォルトの名無しさん
2017/03/01(水) 20:31:55.65 ID:r70GDLNP
>>291
not Defined
293 :
2017/03/01(水) 21:37:40.58 ID:PGtJZLdC
C#から2chに書き込みたいんだけど、
「At2chLib」が使用できなくなってて困っています。
なにか良いライブラリとか有りますか?
294 :
2017/03/01(水) 21:39:56.43 ID:PR7YLHWZ
HttpClient
295 :
2017/03/01(水) 21:46:15.04 ID:RAuT14LS
荒らしツールは日本では違法だぞ。
296 :
デフォルトの名無しさん
2017/03/01(水) 22:01:49.72 ID:r70GDLNP
いやぁ……海外でもダメだろ
297 :
2017/03/01(水) 22:08:23.90 ID:PGtJZLdC
荒らしじゃなく、荒らし駆除的なの作りたいんだけどなー
298 :
2017/03/01(水) 22:31:30.38 ID:78O8EuSm
荒らしに構う奴も荒らしだぞ
299 :
デフォルトの名無しさん
2017/03/01(水) 22:38:28.52 ID:fB20izlq
>>295
違法だったら良いのにな…
もし違法だったらVIPで埋めまくってる奴逮捕されていなくなるはずなのにな…
はぁ…
300 :
2017/03/01(水) 23:00:18.14 ID:U2Od4VRx
VIPなんぞ行かなくてよろしい
301 :
デフォルトの名無しさん
2017/03/01(水) 23:13:49.83 ID:fB20izlq
ゲ雑…
302 :
2017/03/01(水) 23:57:19.29 ID:6tJnN0su
>>287
1処理1個挟むんじゃなくて100処理か1000処理に1回ぐらいでお願いします
303 :
2017/03/02(木) 00:33:44.50 ID:IBdXO0OO
>>277
どこが遅いか分析が足りてないな
キーワードにヒットしたら番地とヒットしたキーワード格納して置換はしないでみたら?
置換って頭使わないと最悪な方法で処理してくれてる気がする
abcを見つけたらdefghijkに変換してくれる処理って
c言語だったら変換後の配列のサイズの計算からしなきゃいけないわけで
それをc#ってreplaceしやがったら配列の再確保余裕でしたみたいなことするアホだろ
その辺は考慮に入ってる?
304 :
2017/03/02(木) 00:54:02.49 ID:FuaoIGJx
やっとらおまえらも実装してはじめてMSのWordが糞遅い理由を理解してくれたか。
305 :
2017/03/02(木) 00:54:51.19 ID:IBdXO0OO
ならば文字列をつなげていくかとして
str1 + str2
みたいなことするとこれも合体後の文字列の長さで配列を再確保する
3万文字もある文字列だと1回文字列連結をするだけでヤバイ
変換に使用するキーワードの使用回数から最終的な文字列の長さを算出する必要があるかも
ってそれも考慮済みだろうか?
306 :
2017/03/02(木) 00:58:24.20 ID:FuaoIGJx
string使ってるという馬鹿なオチかよ。これだからC言語できない奴は。
307 :
2017/03/02(木) 01:07:45.83 ID:B13E3oAw
アルゴリズムの問題。stringだろうと*だろうと同じだろ。これだから自称C使いは・・・
308 :
2017/03/02(木) 01:09:29.82 ID:FuaoIGJx
アホに世界常識を教えてやる。

stringは糞遅い。

だからMSは最初から別のクラスを用意してる。ググレカスども。
309 :
デフォルトの名無しさん
2017/03/02(木) 01:14:29.76 ID:oXaAut0o
ボディービルダーになれば良いらしいのか
310 :
2017/03/02(木) 01:18:09.17 ID:iFkNWUjs
311 :
2017/03/02(木) 01:20:26.39 ID:iFkNWUjs
>>308
Replaceのパフォーマンスはそんな変わらないよ
ググレカス
312 :
2017/03/02(木) 01:22:58.33 ID:o9lMs6ta
ここはWinFormsだし、10年前のインターネッツだな。
313 :
2017/03/02(木) 01:23:22.99 ID:FuaoIGJx
おれがコード書けば瞬殺レベルの高速化できる案件。

最後のヒントな。

大山札
314 :
2017/03/02(木) 02:04:51.98 ID:ggH8M0CB
>>313
もしかしてあらかじめ領域を準備して,自分で足していく,とか‥
315 :
2017/03/02(木) 02:30:07.47 ID:4HioNM+3
>>299
違法と犯罪は違うぞ
316 :
2017/03/02(木) 02:41:55.30 ID:iFkNWUjs
317 :
2017/03/02(木) 06:45:07.41 ID:JZiPjSZc
言語だのStringBuilderだのという小手先のテクニックの問題ではないだろ
>>280のアルゴリズムで実装したら100倍とかのオーダーで速くなるはず
318 :
2017/03/02(木) 07:40:36.76 ID:WqhQkxL/
口だけならなんとでも言える
実装して計測してコードと計測結果を晒してから主張して
319 :
2017/03/02(木) 07:52:06.73 ID:Ct6l/xwh
>>317
280は検索で遅いとき
置換で遅いときはstringbuilderをキッチリサイズ指定する方法でやらないとダメ

まず切り分けかな?
320 :
2017/03/02(木) 08:49:47.79 ID:oX3M/pPf
検索が8,200あるのに、マッチするのはそのうち1つ有るかどうかなんだから
圧倒的に検索の問題になるだろうね

普通は
321 :
2017/03/02(木) 09:05:00.59 ID:Ct6l/xwh
>>320
いや3万文字を置換のたびに1回1回stringのreplaceしてたらその度に3万文字分の配列を再確保
これが致命的
stringのreplaceはやってはならない
stringbuilderで
これも使い方悪いと速度出ないので正しい感じで
322 :
2017/03/02(木) 09:06:59.45 ID:Ct6l/xwh
キーワードの検索の方はdictionary使ってるって言うし十分早いんじゃないかと予想
323 :
2017/03/02(木) 09:07:18.82 ID:cjA1b3op
ツリーポインタに文字列中の開始インデックスをセットで持たせておいて、
終端ノードまで来たら開始インデックスから後を削除し、終端ノードに持たせてある置換文字列を付加し、現在のツリーポインタを全て破棄
こうすれば280で置換も効率的にやれるよ
324 :
2017/03/02(木) 09:17:20.56 ID:cjA1b3op
>>321
それ文字列が長ければreplaceのための線形探索がネックになるはずで、StringBuilderは直接関係ないでしょ
簡単に効率を改善するんなら、全キーワードのうち最長のキーワードの文字数と同じサイズのバッファを持っといて
そこに対して置換をかけりゃいい
もちろんその置換結果を最終出力の文字列として連結していくところはStringBuilderを使うべきだけど
325 :
デフォルトの名無しさん
2017/03/02(木) 10:02:53.43 ID:xcfTeAxl
問題は用途が不明だから、仕様が決まらない
に限定されると思ふ ノ ヽ(・ω・)/ズコー
326 :
2017/03/02(木) 12:13:19.52 ID:63yIksCz
いいからコード書いて結果出そうぜ
327 :
2017/03/02(木) 13:30:45.83 ID:NvG2Ox0H
ある程度の個数だとキーワードを全部つなげた正規表現を作るのが定石っぽいけど、
一万近いとどうなんだろうか
328 :
2017/03/02(木) 13:39:24.58 ID:Ct6l/xwh
>>324
置換後に短くなっても駄目っぽいけどね
329 :
2017/03/02(木) 13:42:21.47 ID:j0RdOmJS
8200のうちマッチが1つあるかどうかなのか、マッチがたくさんあるのか
で方法変えた方がいいな
330 :
2017/03/02(木) 16:45:48.51 ID:yzi1qiN6
>>277
そんな変な処理をしなければいいだろ。
解決!
331 :
2017/03/02(木) 19:36:05.41 ID:tOCPWbBv
こういうアルゴリズムのボトルネックってどうやって探すんだ?
332 :
2017/03/02(木) 19:43:30.86 ID:j0RdOmJS
アルゴリズムのというか、処理のボトルネックはパフォーマンスプロファイルで出る
333 :
2017/03/02(木) 19:47:35.64 ID:eNjjKtZ0
味見すりゃ分かるだろ。
それ以前にベタにやっても余裕だと思うが。
334 :
2017/03/02(木) 19:54:31.82 ID:Ct6l/xwh
>>331
プロファイラ使えるようになるのが一番いいね
ただ、それじゃわかりにくいときもあるから知恵をつけるのも大事だと思う
335 :
2017/03/02(木) 20:14:46.47 ID:eNjjKtZ0
ちなみに今回のはプロファイラでは分からんぞ。
例えばString.Replaceと出て終わり。
https://msdn.microsoft.com/ja-jp/library/ms182372.aspx
https://msdn.microsoft.com/ja-jp/library/fk49wtc1(v=vs.110).aspx
その先の解像度は一般的に無いでしょ。(俺はC#のプロファイラを使ったことは無い)
だからここでやってるみたいにCLR内の動作を考える必要がある。
336 :
2017/03/02(木) 20:23:23.74 ID:j0RdOmJS
>>335
それはプロファイラの考え方を間違ってる(使ってないみたいだから知らないのは当然かもしれんが)
replaceがネックって出ればそれでいいんだよ
337 :
2017/03/02(木) 20:34:59.52 ID:Ct6l/xwh
>>336
そうだね
さらにgoogleで

replace 遅い c#

なんてキーワードで検索かければもう解決方法も見つかったようなもんだね
338 :
2017/03/02(木) 20:42:38.33 ID:eNjjKtZ0
>>336
いや俺は他言語(JavaScript)ではプロファイラ使いまくりだぞ。
そしてプロファイラ自体は見た目ほぼ同じだし。当たり前だが。
というか今回は20行程度のプログラムで2重ループするだけだろ。
ベタでやった場合、String.Replaceが出るに決まってるだろ。
お前はアホの子か?

問題はそれをどう変えたらどう改善されるかの見通しを立てることだろ。
それはここでみんながやってるように、自分で考えないと分からない。
とはいえここで案を出してもらってるんだし、後はがんばれでしかないが。
339 :
2017/03/02(木) 20:44:03.61 ID:maE+uJIv
>>338
馬鹿は一生js書いてろ
くせえから出歩くなクソが
340 :
2017/03/02(木) 20:49:46.45 ID:rlmCwDYA
javascriptのプロファイリングは大切だからねえ
品質の悪いライブラリと品質の悪い人材によって書かれているから
すぐsucks so muchになるんだ
341 :
2017/03/02(木) 21:44:03.77 ID:eNjjKtZ0
>>340
いやJavaScriptはJITがエグイからでしょ。(同じ傾向はC#にもあるはずだが)
例えばHTMLの特殊文字を変更する場合、string.replace(Regex,func)で纏めるよりも、
数個なら string.replace().replace().replace() とかハードコードした方が速かったりする。
ボトルネックがソースから予測しづらいからプロファイラを使うしかない。
その点、Cは最初から見えた状態で書くからいい。

ただこのあっさり感、C#ならString, StringBuilder, Regexで試して、
それ以上は諦める文化なのかもしれんね。そういう用途の言語ではあるし。
C的アプローチで限界速度を追求するのではなくてね。
342 :
2017/03/03(金) 07:07:46.01 ID:GM13pkfI
やっぱここで質問したのが間違いでした
ろくな解決策が出ないので
もう結構です
343 :
2017/03/03(金) 07:16:35.43 ID:cZXazyZL
なあ、、、

文字列探索アルゴリズムの問題だと思うのは俺だけかな?

そこを自前で実装すれば高速化できると思うのだけど
344 :
2017/03/03(金) 07:22:10.27 ID:4qcBtzlj
>>343
それは>>280で出てる
345 :
2017/03/03(金) 07:22:40.42 ID:cZXazyZL
http://developer.hatenastaff.com/entry/2016/12/22/210006

置き換え後、どこに格納するかはたいして重要じゃないはず。

状況に応じた探索アルゴリズムを使用することが重要。

自前実装は辛いけど。
346 :
2017/03/03(金) 07:31:45.18 ID:ELiKOyhw
誰か>>280を実装してみてよ
347 :
2017/03/03(金) 07:34:13.74 ID:4qcBtzlj
>>345
その「状況」は単純に探索をどうするかだけではないよ
置換処理に適したアルゴリズムを使用することが重要
その意味ではトライ木を使った方法(280)はリアルタイムで読んだそばから置換できるから目的に合ってる
348 :
2017/03/03(金) 07:50:58.21 ID:pVtcQ1mY
そもそも何が目的なのか説明しろよ
349 :
2017/03/03(金) 07:54:40.78 ID:a7lwSDS4
アフィ目的って気づけよバカども
350 :
2017/03/03(金) 07:56:17.33 ID:pVtcQ1mY
アフィって何よ?
351 :
2017/03/03(金) 08:06:18.44 ID:hxiWJWmX
>>347
検索された文字列から変換後の文字列を求める手間の話?
8,200個くらいならたいしたことないと思う
352 :
2017/03/03(金) 08:19:11.00 ID:ELiKOyhw
誰も実装できないの?
353 :
2017/03/03(金) 08:30:26.60 ID:LqKyLlg1
>>352
できるのわかってるし
正直、対象の文字列に対してdictionaryでまとめてある群からヒットさせるならそこまで変わらないと俺は思ってるので興味ない
さらに話題提供者は明確な仕様を出したわけではないので現状では「組めない」が正解
さらにこの問題は対象のデータの持ち方で解決する方法もあって多くの場合そっちのほうが楽なので
あまりこのスレで出たような解決方法を適用することは無いかも
354 :
2017/03/03(金) 08:56:05.96 ID:LqKyLlg1
例えば対象の文字列がソースコードのように人間の目視できる文字数で改行が必ず入り、
キーワードが改行を含まないのであれば
行ごとにreplace処理して文字列の統合だけstringbuilderを使えばこれだけで十分な速度が出ると思われる
(1行300文字程度と想定)
とかね
僕のカコイイスペシャルエディタでも作らない限りはフォーマット自体に特有の癖があるもんで
大抵の場合は独自の解決方法を考えたほうが早い
355 :
2017/03/03(金) 09:35:42.12 ID:velk9AIH
テキスト読み出しながらって書いてあるからすでに行単位でやってると思うが
356 :
2017/03/03(金) 13:45:46.60 ID:hf3TFoOq
>>346
UNIXのShellのコマンド解析の実装がそんな感じ。
ただしスイッチ文の嵐だが(一文字目がCならCPを検査とか・・・
357 :
2017/03/03(金) 15:59:24.43 ID:GTe30Tvn
あーアフィかぁ 超納得
1ファイルの文字数がやたら少ないし何の目的か全くわからんかった

>>346,352がアフィ本人だね
358 :
2017/03/03(金) 16:00:23.77 ID:GTe30Tvn
間違えた
>>342,346,352がアフィ本人
359 :
デフォルトの名無しさん
2017/03/03(金) 16:00:55.70 ID:oAXP4RlZ
>>352
アホの子なの?
360 :
デフォルトの名無しさん
2017/03/03(金) 16:02:40.13 ID:nP8cPyWm
IT速報かな?
361 :
2017/03/03(金) 16:54:07.87 ID:Loi48FLt
>>352こう煽ると情報出て来ること多いからな。いい手w
362 :
デフォルトの名無しさん
2017/03/03(金) 17:00:38.87 ID:nP8cPyWm
C#で自動コメント投稿スクリプト作ってIT速報荒らすンゴwwwwwwwwwwww
363 :
2017/03/03(金) 19:35:06.90 ID:MASUg06L
まーたカニンガムの法則を証明してしまったのか
364 :
デフォルトの名無しさん
2017/03/04(土) 00:57:57.14 ID:V1fO2YUM
>>352
馬鹿かこいつ。
365 :
2017/03/06(月) 15:15:15.66 ID:c2C1QaOD
俺に実装出来ないものなどない

実装しないだけだ(´・ω・`)
366 :
デフォルトの名無しさん
2017/03/06(月) 16:53:48.94 ID:HdaZCaDT
うっせ!消えろ!
(´・ω・`).Dispose();
367 :
デフォルトの名無しさん
2017/03/06(月) 17:04:44.11 ID:gswSb9xJ
void Dispose(){
  throw new GenjyuminException("お兄ちゃん僕を消さないで");
}
368 :
2017/03/06(月) 18:04:17.43 ID:fLI2L2/v
while(true){
if((´・ω・`)==null)break;
}
これでどや、消えるまで永久に彷徨え
369 :
2017/03/06(月) 18:06:58.06 ID:SM9wIIjZ
int (´・ω・`) = 0;
こういうのエラーになっちゃうんだけど、ならないのあるかな
370 :
デフォルトの名無しさん
2017/03/06(月) 18:10:04.79 ID:gswSb9xJ
>>369
とうふさんをすころう🙋
371 :
デフォルトの名無しさん
2017/03/08(水) 07:21:50.44 ID:0djAud0F
ASP.NETでEntityFrameWorkを
使い始めてデータエンティティの設計を
意識するようになったのですが
論理ER図とクラス図がほとんど同じ
ようなエンティティになるのは
良いのでしょうか?

使ってる言語がC#なだけで
OOPの話になっているみたいで
恐縮ですが
372 :
2017/03/08(水) 07:57:43.96 ID:j5hWWAog
>>371
オブジェクト指向原理主義的に言うなら、最初にデータ設計ありきで作ったのが間違い
DB構造はオブジェクトを抽出した上でその永続化層として結果的に導出されるもの
その結果、テーブル構成がクラスと一対一になるのはおかしくはない
373 :
2017/03/08(水) 09:10:06.96 ID:4zQ1zZR+
>>371
>論理ER図とクラス図がほとんど同じ
>ようなエンティティになるのは
それをEFと言うんじゃないか?
殆ど同じじゃなく完全一致するんじゃないの?
374 :
デフォルトの名無しさん
2017/03/08(水) 11:04:45.08 ID:WDLIW5bb
処理文より定形文の方が多くなる問題

皆さんはどうやって解決してますか?
375 :
2017/03/08(水) 11:21:49.05 ID:j5hWWAog
>>374
メソッドやクラスを適切に使って使い回せばそんなことにはならない
376 :
2017/03/08(水) 12:38:38.92 ID:xVFA2xmi
>>375
適切とは?
377 :
2017/03/08(水) 12:46:41.42 ID:FTYppI6w
>>376
例えばこうしろってだけでしょ
method(0); method(1); method(2); method(3);・・・method(x);

for (int i =0; i <= x; i++) method(i);

ただいくらそうしたって作るものによっては定形だらけになるからな。そんなの気にするなとしか言えん
378 :
デフォルトの名無しさん
2017/03/08(水) 13:31:44.38 ID:WDLIW5bb
>>377
それに、クラスとリターン、ラベル貼るから一行より長くなるんです
379 :
2017/03/08(水) 14:05:18.27 ID:pm5pCz2z
>>373
EDM理解してる?
380 :
デフォルトの名無しさん
2017/03/08(水) 14:35:54.93 ID:jFDZ8cwh
絵が描けなくても無料・有料とわず素材なんて腐るほどいっぱいあるんだから
リアルでカードゲームやボードゲーム作ってゲームマーケットで売ろう

個人利用、商用利用も可の198,381 個の無料ベクター画像
http://jp.freepik.com/popular-vectors
オシャレ感をプラスできる手書きのアイコン50選
http://blog.nest-online.jp/27240
無料素材:ヴィンテージ感がおしゃれ!デザインソフトのツールアイコン49個セット
http://switch-box.net/free-resources-vintage-design-icons.html
無料素材:魔法陣の文様が描けるユニークな英語フリーフォント「MagicRing」
http://switch-box.net/free-font-magic-ring.html
ねくらファンタジーマップチップ素材集
http://piposozai.blog76.fc2.com/blog-entry-500.html
ひぽやマップチップ
http://piposozai.blog76.fc2.com/blog-entry-485.html
クオリティの高いゲーム用のモンスター素材画像が手に入るフリー素材サイト5つ
https://agency-star.com/freelance/articles/117/
ファンタジー世界地図を簡単に作れる「Inkarnate Worlds」をゲーム制作に活用しよう
http://www.moguragames.com/entry/inkarnate-worlds-indiegame-dev/
QRコード・クトゥルフ神話・24世紀などユニークすぎるデザインてんこ盛りのサイコロ「Dice Empire」レビュー
http://gigazine.net/news/20150313-dice-empire/
駆け出し奮闘記「ゲームチップ・他小物類の作り方」
http://yuofc2.blog72.fc2.com/blog-entry-233.html
381 :
デフォルトの名無しさん
2017/03/08(水) 16:48:47.00 ID:EwGirieA
c#初心者なんですが
https://www.ibm.com/developerworks/jp/linux/library/l-mono/
>実際、作成された実行可能ファイルを別のシステム、おそらくWindowsが稼動しているシステムにコピーして、そこでそのまま実行することができます。
Linuxで動くexeファイルがwindowsでもそのまま動くのはなぜですか?
本来、実行可能形式に互換性はありませんよね?
Javaだと.jarファイルでjavaが関連付けられてるからどこでも動作するというのは分かるんですが
382 :
2017/03/08(水) 17:05:53.57 ID:FTYppI6w
>>381
javascripはテキストファイルなのに実行できるってのと同じで、exeという拡張子だけど中身はスクリプトって考えりゃいい
linux側は「mono example.exe」のように実行するのはexeでなくmonoでしょ
383 :
2017/03/08(水) 17:10:53.01 ID:CceDL3fb
>>381
Linuxはexeが実行ファイルという訳でもなし、mcsがPE互換でも吐いてるんじゃない?
C#はそもそも中間言語にコンパイルされるし、.NET Framework(あるいは互換ランタイム)を通して
色々な操作を行うので、DllImportとか除けばコード部分はプラットフォーム依存にはならない、Javaと一緒
384 :
デフォルトの名無しさん
2017/03/08(水) 17:41:17.11 ID:4q4g4kgy
>>373
やはりそう思いますよね

自分もデータエンティティと
クラス図が一致してしまって
アンチパターンしてないか
不安になったもので

クラス図要らないじゃん
てことになって良いのかなと
385 :
デフォルトの名無しさん
2017/03/08(水) 17:56:23.47 ID:EwGirieA
>>382
わかりました
linuxでもx window systemとかGUIシステムで
拡張子とプログラムの関連付けがあるみたいだけど
.exeをmonoに関連付けるのは少し疑問です
.jarみたいな固有拡張子じゃないので
windowsだと関連付け関係無く実行可能形式として動くんだろうけど
他のOSでは特定のプログラムから起動しなければならないというのが
非対称的でクロスプラットフォーム感欠けてるような気がします
386 :
2017/03/08(水) 18:12:34.14 ID:ZazPDLJU
Windowsでもexeの中にあるMSILを
特定のプログラムでコンパイルしないと動かないぞ
387 :
2017/03/08(水) 18:13:37.64 ID:NpQQdkRq
>>385
クロスプラットフォームにこだわるのならC#使わない方がいいだろ
>>383に書いてあるようにDllImportとか入っていたらどうしようもないんだから
388 :
2017/03/08(水) 20:03:39.84 ID:VZtOnmtc
EF使いたいけど仕事での開発は腐りきったDBと手続き型の権力者が支配しててうまくいかないよ
ビジネスロジックはほとんどSQLとストアドに書かれ
ホスト言語はデータセットをUIとバインドするだけ
マイクロソフトは業界の現実を見据えたフレームワークを提供してほしい
389 :
2017/03/08(水) 20:08:18.13 ID:jS0zQn/F
ジャップローカルな業界標準なんか基準にしても仕方ねーだろ
390 :
2017/03/08(水) 20:25:11.68 ID:q0ZuMA54
今後は品質を上げるためにC#やめてJavaにするってさ
品質を上げるために

誰だよJavaオワコンとか言ってたの
Javaつよすぎんだろ
391 :
デフォルトの名無しさん
2017/03/08(水) 20:37:42.27 ID:WDLIW5bb
新しく、C++,C#,Javaを超える言語の誕生を切に願う
392 :
2017/03/08(水) 20:43:44.50 ID:YCUi9zWw
>>390
実際Javaは周辺技術はすごい
世界中の叡智が結集して糞を料理し、なんとか食えるものにしてる
393 :
デフォルトの名無しさん
2017/03/08(水) 20:50:23.47 ID:YUr8l1RF
Java人にとってWindowsは周辺ではなく僻地です。
394 :
2017/03/08(水) 21:09:03.23 ID:psTqZ+Sc
なんか中国人みたいだな
395 :
2017/03/08(水) 21:32:29.32 ID:U5noIHdN
javaはoracleの時点で将来どうなるか判らないって不安がつきまとう
golangもgoogleだから不安がつきまとう
swiftもappleだから数年後の未来も予測出来ない

でも不思議とc#とmsの場合はあんまそういう不安が無い
396 :
2017/03/08(水) 21:39:55.81 ID:Uljnsbub
>>388
>ビジネスロジックはほとんどSQLとストアドに書かれ
最適化のためにしかたなくストアド化することはあっても
ビジネスロジックまるごととかあるんだね
おいたわしゅう
397 :
2017/03/08(水) 21:49:14.72 ID:YUr8l1RF
Javaが糞遅いからC#じゃないのか。
Javaと同じ設計をしたいならJavaを使えばいい。
398 :
2017/03/08(水) 21:51:54.89 ID:MEKWLPl8
Windowsで趣味で遊ぶのにC#より楽な言語が無い
399 :
2017/03/08(水) 22:28:25.34 ID:gllfe4Ss
みんな仕方なくうんこなJava使ってるだけだから。
大人の事情。
400 :
2017/03/08(水) 23:15:48.59 ID:nWki5I6G
>>397
いやJavaが使われるような分野ならJava(やその周辺のライブラリ類)は糞速い
クライアントじゃビチグソだが
401 :
2017/03/08(水) 23:21:37.62 ID:YUr8l1RF
高速ライブラリはすべてC++とアセンブラで書かれてます。
402 :
2017/03/08(水) 23:31:16.51 ID:RgWWdtUJ
結果的には現実的な判断だったと思うよ。
OracleにはJavaを伸ばすほどの能力はない。
環境の互換性に固執した結果、エコシステムがブラッシュアップされたのならそれでOK。
あとはC#で実験済みの便利機能を順に採り入れていけばいい。

C#がJavaに滅ぼされない為には数歩先を走り続けるしかない。
そのうちにJavaと同レベルのエコシステムが揃えられればJavaを食えるかもしれないが、
これはかなり厳しいとは思う。
403 :
2017/03/09(木) 00:10:57.40 ID:x6aOWZGA
Javaのエコシステム!?
今Javaの一番メジャーなパッケージマネージャって何?

rubygemsやnpmみたいなのないって聞いたら
Mavenでpom.xmlって言われて愕然としたことがある
404 :
2017/03/09(木) 00:43:02.76 ID:zrZoqbyp
>>403
Mavenで用は足りるし、LLっぽいのがお好みならGradleも人気
405 :
2017/03/09(木) 07:33:43.82 ID:i1kRuTOP
>>388
EFって何がいいの?
そんなの使わなくてもsql実行すればいいんじゃないの?
406 :
2017/03/09(木) 19:18:10.50 ID:NWFSmelL
>>405
ORMでググれ
407 :
2017/03/09(木) 19:27:05.21 ID:kp/XS3en
operational risk management
業務運営リスク管理

sqlを文字ではなくオペレーションとして記述できるからsqlコマンド記述ミスによるバグやsqlインジェクションに強くなり
リスク回避に繋がるソース運営や管理ができる
408 :
2017/03/09(木) 19:28:46.08 ID:ekX4ZlFq
C言語って何がいいの?
そんなの使わなくてもアセンブラ使えばいいんじゃないの?

35年前の会話
409 :
2017/03/09(木) 19:38:38.06 ID:6OW1VF+t
ただまあ、便利な道具も、出来の良し悪しというのがあって
410 :
2017/03/09(木) 19:39:54.78 ID:NWFSmelL
>>409
使う側の頭の良し悪しってことかな
411 :
2017/03/09(木) 19:43:58.45 ID:6OW1VF+t
そう、EFはあまり出来は良くない
412 :
2017/03/09(木) 19:45:09.07 ID:NWFSmelL
>>411
具体的に
413 :
2017/03/09(木) 20:12:05.29 ID:J4siqdXV
クエリビルダとかコードファーストは要らないかな
まっさらなDB扱う機会なんてそうそうないし
414 :
2017/03/09(木) 21:56:54.03 ID:i1kRuTOP
>>407
sql記述ミスしなければいいだろ。
415 :
2017/03/09(木) 22:09:20.08 ID:ZZ1gzprq
>>413
既存DBからのコードファースト
416 :
2017/03/09(木) 22:09:48.58 ID:GqwkUUnW
>>414
ばーか
417 :
2017/03/09(木) 22:25:30.67 ID:FW6HepzM
>>414
そんな根性論・精神論的なものでミスは無くならないよ
418 :
2017/03/09(木) 22:38:08.68 ID:i1kRuTOP
>>417
プログラムのミスを無くすのも
sqlのミスを無くすのも同じだろ。
419 :
2017/03/09(木) 22:45:19.50 ID:mybEc7J1
SQLじゃ静的チェックが効かないし、列名とメンバ名のマッピング作業でミスを生じやすい
420 :
2017/03/09(木) 23:05:42.43 ID:ZZ1gzprq
EntityFramework以前の問題だなこいつ
421 :
2017/03/09(木) 23:06:17.34 ID:ojqe9dcn
>>411
具体的に
422 :
2017/03/09(木) 23:10:24.76 ID:4hz9mkjX
おそい
かたい
つかいづらい
423 :
2017/03/09(木) 23:15:15.25 ID:ZZ1gzprq
>>422
おそい→単純に速さを求めるならDapper使えば?EFは速さが目的のORMじゃないし
かたい→意味不明
つかいづらい→馬鹿ならプログラミング諦めれば?
424 :
2017/03/09(木) 23:15:20.88 ID:i1kRuTOP
>>422
確かに遅いよね
425 :
2017/03/09(木) 23:15:56.47 ID:OsFG/gY3
>>422
日本語でよろしく
426 :
2017/03/09(木) 23:16:37.66 ID:OsFG/gY3
>>424
うん、当たり前だよね
427 :
2017/03/09(木) 23:36:02.15 ID:4hz9mkjX
>>423
→おそい
昨今なにが速度のボトルネックってDBアクセスなのにおそくていいわけがない

→かたい
なんというか、型が固いんだ…
データいっぱい取ってきてもダックタイピングとかないからいちいち入れ替えなきゃいけないし
メソッドをまたいでデータをやり取りしづらい

→つかいづらい
変な落とし穴いっぱい
あと抽象化しすぎ
DBと通信するタイミングとかこっちの好きにしたい


よさそうだった
よさそうだったんだ…
ちょっと触った最初の一瞬は夢が見れたが
428 :
2017/03/09(木) 23:39:24.67 ID:P0KhFIxP
>>427
お前C#向いてないからやめとけ
429 :
2017/03/09(木) 23:40:17.24 ID:4hz9mkjX
なんでよ
430 :
2017/03/09(木) 23:45:18.70 ID:ZZ1gzprq
>>427
生のADO.NETと比較すると遅くても、実運用に耐えられる程度なら問題ない
遅さのデメリットをメリットが上回る場合に採用すべき

設計ミス

お前の頭が足りてないだけ
抽象化しないとInMemoryやFakeのIDbcontext使ってUnit Testできない
431 :
2017/03/10(金) 00:07:57.78 ID:Kg4/WRpJ
>>430
Dapperのところ見ると10倍以上遅いって数字弾いているし
体感上も遅いだろ
https://github.com/StackExchange/Dapper
432 :
2017/03/10(金) 00:14:08.74 ID:cBCq3F3F
>>431
日本語
433 :
2017/03/10(金) 00:15:07.75 ID:PorFrx4J
>>431
遅いのは皆わかってるんだけど
何言ってんのこいつ
434 :
2017/03/10(金) 00:29:46.92 ID:cBCq3F3F
>>431
そのEntityFramework、3世代前くらいじゃね?

こっちの方がまともに比較してる気がする
https://msdn.microsoft.com/ja-jp/magazine/mt703432.aspx
435 :
2017/03/10(金) 00:35:01.00 ID:PorFrx4J
誇大広告ワロタ
436 :
2017/03/10(金) 00:47:22.95 ID:Cysk3AQ/
>>431
Dapperを使ってメモリ上でUnit Testやる方法教えて
437 :
2017/03/10(金) 01:56:20.00 ID:YvYLhW/g
割といままで関わったプロジェクトは、敢えてスドアドで疎結合にしてるの多かったな。
438 :
デフォルトの名無しさん
2017/03/10(金) 05:22:26.01 ID:hxjDKO5o
以下のページを参考にしてい
指定したURLからHTMLを取得するプログラムを作成しております
http://www.kekyo.net/2016/12/06/6186

取得する処理を作成することは出来たのですが
取得処理を走らせてからリクエストが帰ってくるまでの間
GUIの操作が一瞬とまってしまう現象が発生しております(一瞬フリーズするような感じです)
ですので連続してhtmlを取得したり、サイズの大きなものを取得する場合
長時間フリーズしてしまうことになるので大変困っております

どなたか解決方法をご存知の方がおりましたら
教えていただければ幸いです
よろしくお願いします
439 :
デフォルトの名無しさん
2017/03/10(金) 05:22:50.13 ID:hxjDKO5o
ちなみに参考にしたソースは以下の通りです。

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("https://github.com/Microsoft/dotnet/blob/master/README.md");
string body = await ReadFromUrlAsync(url);
Console.WriteLine(body);
}
440 :
2017/03/10(金) 07:53:36.33 ID:/HdMhfmB
>>437
ストアドはビジネスとデータが密着して全く疎にならないだろ
441 :
2017/03/10(金) 07:55:23.13 ID:LDoDwujD
>>437
かわいそうに
442 :
2017/03/10(金) 07:56:43.00 ID:CZUjNxSc
普通シングルスレッドでは、処理中は、

進捗状況を表示するプログレスバーでも、描画が止まるから、
GUI/worker用のスレッドは、別々のマルチスレッドにする

プログレスバー描画のサンプルでも見れば?
443 :
2017/03/10(金) 09:46:49.61 ID:ccNaYHW5
>>437
そのうちいいことあるよ、頑張って
444 :
2017/03/10(金) 11:25:04.92 ID:LzpSY1Zb
>>438
WebClient(とその中で使ってるHttpWebRequest)が
名前解決部分を非同期化できてないっぽい

HttpClientを使おう
445 :
デフォルトの名無しさん
2017/03/10(金) 12:24:52.88 ID:/STnO1DK
え?みんなEF使わないがデフォなの?
446 :
2017/03/10(金) 12:26:08.18 ID:Tes7zBzn
あんなものを使うのはお勉強ができるだけの無能だけ
447 :
2017/03/10(金) 12:36:20.43 ID:wvkqDHaL
>>445
使わないじゃなくて使えないんじゃない?新しいことを学習できないんだよ
448 :
2017/03/10(金) 12:46:27.34 ID:Tes7zBzn
新しいものに飛びついてもあとであれはゴミだったというものもたくさんある
EJB2.0とか
449 :
2017/03/10(金) 12:51:59.29 ID:wvkqDHaL
>>448
それはその通りだね
EntityFrameworkはもうそろそろ10年たつんだけど
450 :
デフォルトの名無しさん
2017/03/10(金) 13:10:03.19 ID:mpFYTheR
やっぱJavaなんやね
451 :
2017/03/10(金) 13:53:22.42 ID:AGPJ29Rn
新しいのを使うのも、古いのを使い続けるのも、どっちも長所短所がある
同じ長所短所でも環境によって評価が変わるからどっちが絶対にいいってのはない
それ考慮してどっち使うって当たり前の選択ができない奴多すぎるんだよ
452 :
2017/03/10(金) 15:40:00.20 ID:y8xCqliG
>>440
んなの書き方によるだろ
453 :
2017/03/10(金) 18:15:05.97 ID:NraHDdZK
使って文句ないやつは使ってればいいのよ。

俺は使うのをやめた。理由を他人に説明する必要も、他人が納得する必要もない。
454 :
2017/03/10(金) 18:36:12.55 ID:wvkqDHaL
>>453
使えるやつは使う、使えないやつは使わない
455 :
2017/03/10(金) 18:42:37.52 ID:NraHDdZK
そういうこった。俺には使えない。
456 :
2017/03/10(金) 18:43:15.86 ID:NraHDdZK
使わなきゃ、使いにくいとこも分かんないからな。
457 :
2017/03/10(金) 18:46:25.98 ID:Gc8NaZGi
世の中はまだWinFormsだからな。
新しいものに対応できないジャパン。
458 :
2017/03/10(金) 18:49:44.85 ID:YN/8CtFT
>>456
ADO.NET直書き?
459 :
2017/03/10(金) 19:38:33.09 ID:jSwjVui3
>>457
Microsoftはバグ管理にExcel使ってるんだぞ
振り回されたらあかん
460 :
2017/03/10(金) 19:44:07.45 ID:PPM6ZnbB
DotNet CoreでバッサリWebFormsとDataSet切り捨ててくれたから
日本もこれからはMVCとPOCOにシフトしていくだろうね(希望)
461 :
2017/03/10(金) 20:10:01.97 ID:cBCq3F3F
>>445
基本的にはEntityFrameworkで、パフォーマンスほしいとこはDapper
462 :
2017/03/10(金) 20:35:03.91 ID:BdCDiQus
dapperって何がいいの?
463 :
2017/03/10(金) 20:40:29.72 ID:cBCq3F3F
>>462
上にもいろいろ比較出てるけど、とにかく速くて簡単
DBとオブジェクトの最低限のマッピングだけでいい場合はこれで十分
464 :
2017/03/11(土) 09:49:08.82 ID:+LwMML+J
動的だけど滅多にソースが更新されないほとんど静的なページのキャッシュってどう扱えばいいんですか?
クライアントにキャッシュさせて更新があった時だけアクセスしてほしいです
465 :
2017/03/11(土) 09:53:48.23 ID:h5T3JHpB
>>464
ブラウザーがやってくれるんじゃないか?
466 :
2017/03/11(土) 13:46:01.01 ID:SoGUL2Zu
VisualStudio2017お試しで使ってるんだけれど
タプルとか求めていたものが有ったので使おうとしたら
ValueTupleのライブラリが標準で入らずNuGetにしか無いとか
まだ安定しない無いとか何かあるんだろうか・・・
凄い作りかけ感あるコンパイラに仕上がってるwww

使うべきか暫く様子見すべきか?
467 :
2017/03/11(土) 13:50:47.46 ID:/3A6iA0R
Windowsのcsc.exeでコンパイル出来ないC#6.0も見送ってるならそうだな
468 :
2017/03/11(土) 14:02:34.64 ID:SoGUL2Zu
タプルの利用はしばらく様子見にしとくか・・・何か怪しいし。
ローカル関数いいね、これやる時名前空間が汚れてインテリセンスが腐るから欲しかった
これだけでも移行価値は無くは無いか・・・
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();
}
469 :
2017/03/11(土) 14:40:42.15 ID:SoGUL2Zu
ちらちら見ていると、ValueTaskの方はもっと状況が酷いのかなw

http://www.buildinsider.net/column/iwanaga-nobuyuki/008
言語みたいな基幹部分を小出しにするとか、頭おかしくなってるなw
今までそんな事をした言語の末路がどうなったか知らないわけじゃなかろうに・・・

NuGetにして普通にコードする人には使わせないようにするのは、これはヤバイと中の人が感じているのかもしれんね
マイクロソフトの技術力&組織力低下酷いな、半端に才能ある奴のスタンドプレーでグダクダなってるんだろうな。
Web系に翻弄され過ぎだろ

とりあえず使えそうなのは、ローカル関数と型switchくらいかな
この辺りなら変更あってもダメージ少ないだろうし。

タプルの実装に致命的問題があるならローカルclass&struct&enum宣言でもええんやでぇ
名前空間お腐れ問題はカッコイイ事しなくても、これでも解決するんや > microsoft
470 :
2017/03/11(土) 15:24:01.58 ID:SoGUL2Zu
>>218
横だけど、式木はちゃんと言語でサポートしなきゃ誰にも読めない言語になるなと思った。
逆に、それ自体は難解でもないし難しい話じゃないなとも。

プログラムとは違うけれど
3Dモデラーでツリー構造とか法線とか難解な数学概念が見ての通りの操作で動かしたり創れたりするようになって
門外漢の3Dデザイナーが普通に使えるようになったように
一度概念をキッチリ整理する必要があるんだよ、あれは。
そして言語の作りこみがあの頃から甘くなってき始めてたな、ちょっと残念な感じになっていった時代だね。

とりあえず腐り過ぎのWin10をWin7の仕様に戻せや、ストアもユニバーサルアプリも使い物にならん、色使いも糞でUIが見ずらい > microsoft
あと、WindowsUpdateのタイミングはユーザーの自由にさせよ、お前がお前のタイミングで勝手にやったら業務はむちゃくちゃになる。
471 :
2017/03/11(土) 22:05:54.03 ID:h5T3JHpB
>>466
タプルなんて昔からあるだろ
472 :
2017/03/11(土) 22:18:07.78 ID:15EAzLR8
>>471
残念ながら昔からあるTuple<>とは全くの別物
機能的には匿名型にも似ているが、匿名型との互換性もない
ローカル関数なんかも極めて場当たり的なゴミだろ
デリゲートの型を省略できるようにして var func = (int x) => x * 2; と書けた方がずっと便利
473 :
2017/03/11(土) 22:40:13.41 ID:7U1HyGmG
>>472
いつからここが初心者用になったんだ
474 :
2017/03/12(日) 01:14:05.08 ID:+ulIycHH
>>469
https://github.com/dotnet/roslyn/issues/13177
によると、.NET4.7に入れることにしたみたいだね
nugetで済むのに.NETのバージョンを上げるのは面倒が多いし、今後C#のリリース速度を早めるならある程度まとめて.NET4.7にしようって考えじゃないかなぁ

言語機能の小出しについても他の言語と比べれば遅いし、互換性と将来を考えて慎重に作ってるから完全な完成を待つと永遠にリリースできなくなっちゃうし、やむをえんだろ
CLRのバージョンを保ってくれれば文句は無い
475 :
2017/03/12(日) 02:13:23.38 ID:lK2SBg8L
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()}";

こんな感じですけど短く綺麗にしたいのですが…
476 :
2017/03/12(日) 02:33:41.68 ID:tHLqC2EA
>>475
var result = String.Join( "", list.Skip(x).Take(y) );
477 :
2017/03/12(日) 05:07:11.99 ID:lK2SBg8L
>>476
わー、短くて綺麗。
ありがとうございました。
478 :
デフォルトの名無しさん
2017/03/12(日) 06:43:42.92 ID:RIOf9bqD
>>472
>デリゲートの型を省略
できるならとっくにやってるんじゃないかなw
ラムダ式は書けるコードが限定され過ぎるのが問題かな。>>468 はそれではどうやっても書けないでしょう。
479 :
2017/03/12(日) 08:53:09.32 ID:bReP5RFT
>>475
自分で理解できねーもん他人に強制するその姿勢がすでにクソ
なんでその処理linqで書いた?
しかも自分は掲示板で質問しなきゃわかんねーのに
さっさと辞めちゃえお前
伸びる目もねーから
480 :
2017/03/12(日) 09:23:31.23 ID:7tB+K/sW
何でこの人キレてんの?あの日?
481 :
2017/03/12(日) 10:01:53.12 ID:RIOf9bqD
みるからに自演臭くてキモイからじゃねw
482 :
2017/03/12(日) 10:23:22.36 ID:1QMoXo8Q
ラムダ式自体は型を持たないから、delegate型と決めつけてvar対応するなら専用のルール付けが必要だと思う。
そこまでする価値は無いかな。
483 :
2017/03/13(月) 06:11:29.33 ID:o9PLbB2Z
すいません質問なんですが
アプリ起動中はAキーを推すと左クリック Bキーをおすと右クリック Cキーを押すとアプリ終了
みたいな感じでキー入力をマウス入力にいれかえるようなアプリを作りたいんですが
Windows上でフォーカスのあるウインドに依存せずにキー入力を取得するのってどうしたらいいんでしょうか
484 :
2017/03/13(月) 06:55:37.31 ID:2GKmTNuX
以前、遠隔ウイルス片山も似た質問していましたね。
485 :
2017/03/13(月) 07:01:39.19 ID:WHuP7MmV
フォームのKeyPreviewプロパティをTrueにすると、すべてのキーイベントをまずフォームが受け取り、処理が終了してからフォーカスのあるコントロールに渡されるようになります。

ってdobon.netで見つけた
やったことはない
486 :
2017/03/13(月) 07:17:17.53 ID:o9PLbB2Z
ありがとうございます
KeyPreviewについて調べてみます
487 :
2017/03/15(水) 09:07:02.25 ID:k1u612YY
すみません、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);
488 :
2017/03/15(水) 09:27:37.16 ID:N2+3G59G
>>487
そこまで分かってるなら解決策は簡単。
ModelIdで検索し直す。
489 :
2017/03/15(水) 11:16:57.42 ID:k1u612YY
>>488
ありがとうございます、すっきりしました。
期待する結果に対してのコストが少々重くなるかなという気はしているのですが、
処理コストが問題になるほどの規模ではないので、そうさせて貰います
490 :
デフォルトの名無しさん
2017/03/16(木) 03:52:05.80 ID:l+qA2/0G
C#でwebBrowserを使ってるんですが
以下のhtmlをwebBrowser.DocumentTextに突っ込んで表示させたいんですが
何故かwebBrowserではそのままjqueryを読み込むことが
できないようでスクリプトエラーが発生してしまいました
対処方法のわかる方いたら教えていただけますでしょうか?

↓以下のhtml

<!DOCTYPE html>
<head>
<meta charset=""utf8"">
<script src=""https://code.jquery.com/jquery-2.1.4.min.js""></script>
<script type=""text/javascript"">
$(function() {
alert(""test"")
});
</script>
</style>
</head>
<body>
491 :
2017/03/16(木) 11:36:09.87 ID:oyR0ujl0
なんでダブルクォーテーション2つ続いてるの?
492 :
デフォルトの名無しさん
2017/03/16(木) 16:49:18.07 ID:l+qA2/0G
エスケープです
文字列に突っ込んでるのをそのままコピペしちゃったのでそのようになってます
すいませんがエスケープは無視して考えてください。
493 :
2017/03/16(木) 16:58:42.52 ID:Qa1xgsfZ
<style>
<head>
<body>

</style>
</head>
</body>


最後のbodyを/スラッシュで括ってないからでは?
494 :
2017/03/16(木) 17:03:26.21 ID:RyFuDdep
>>493
君は冷静だな
495 :
2017/03/16(木) 17:05:05.86 ID:Qa1xgsfZ
HTMLソース
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML5サンプル</title>
</head>
<body>
<p>HTML5で作成しました!</p>
</body>
</html>

連投ですまん
もっと解り易いサンプル
496 :
2017/03/16(木) 18:14:35.84 ID:kQHrflry
WebBrowserがデフォだとIE7モードで動くせいでjquery 2.1.4が動かない
・jquery 1系使う
・headに
<meta http-equiv="X-UA-Compatible" content="IE=edge">
等を書く
・レジストリでモード変更する
好きなのどうぞ
497 :
2017/03/16(木) 18:38:16.89 ID:RyFuDdep
>>496
君は詳しいな
498 :
2017/03/16(木) 20:09:32.60 ID:G/L2rMHg
簡単に単体テストできるのか知りたいです

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 を使ってますが、他のフレームワークでもいいです
499 :
2017/03/16(木) 20:16:08.57 ID:kgKaK9fl
非同期処理の確実なテスト方法は存在しないのでどっかで妥協しなきゃならない
500 :
2017/03/17(金) 07:37:50.30 ID:gTyXrRTf
よく分からんな
Taskなんだから結果が出るのを待機すればいいだろ
Progressは呼ばれたらcalledフラグを立てるようにしてそいつでAssetする
タイムアウトが必要かどうかは状況次第

2つめは、内部でFileStreamを使っているならだが
Streamを受け取るインターフェースを追加する
クッソ遅いStreamは自由に再現できる
501 :
デフォルトの名無しさん
2017/03/17(金) 08:16:11.77 ID:VDcrtJ6N
>>496
ありがとうございます!大変助かりました!
502 :
2017/03/17(金) 21:11:54.40 ID:G6TjLWRU
>>499
やっぱり妥協かなー

>>500
(2) はなるほどね。作ってみる
(1) なんだけど、Progress.Report() での通知は、タスクを await で待機したとしても、
待機が終わった後でも Action<T> が呼ばれているとは限らない
巨大なタスクを渡して、 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);
}
503 :
2017/03/18(土) 00:00:39.16 ID:3lIBsEeS
惜しいところまでは行ってるな

Progressのインスタンスを渡すのではなく
IProgressを継承し同期のReportを実装したクラスのインスタンスを渡す
504 :
2017/03/18(土) 10:58:29.15 ID:UTVmwL6L
ふむー、こうか
確かに Progress<T> にこだわる必要はなかったなー

public class SynchronousProgress<T> : IProgress<T>
{
private readonly SynchronizationContext _Context;
private readonly Action<T> _Action;

public SynchronousProgress(Action<T> action)
{
_Action = action;
_Context = SynchronizationContext.Current ?? new SynchronizationContext();
}

private void Callback(object state)
{ _Action?.Invoke((T)state); }

public void Report(T value)
{ _Context.Send(Callback, value); }
}

見づらいと思うので一応 pastebin にも貼っておく
http://pastebin.com/QjF0XkH4
505 :
デフォルトの名無しさん
2017/03/19(日) 00:14:21.68 ID:xAk2llJg
ファイルのタイムスタンプを指定した時刻に変更したいんですが、コードのヒントをくださいm(_ _)m
506 :
2017/03/19(日) 00:19:27.37 ID:8DI2TWvJ
>>505
FileInfo
507 :
2017/03/19(日) 00:30:52.74 ID:VKtnwSVx
「ファイルのタイムスタンプ」でグーグル先生に聞けば
http://www.atmarkit.co.jp/fdotnet/dotnettips/370timestamp/timestamp.html
が一発で出てくるんだけど掲示板で聞く方が面倒じゃないの
508 :
2017/03/19(日) 06:34:49.31 ID:bkt1N2YW
検索知らないんでしょ
509 :
2017/03/19(日) 13:50:14.09 ID:PWrmpV5o
2chスレへたどり着けるのに検索知らないとかこれ如何に
510 :
デフォルトの名無しさん
2017/03/19(日) 14:33:00.16 ID:DWsQT7k4
「お前ら、検索頼むわ(丸投げ)」
511 :
2017/03/19(日) 14:45:08.30 ID:1DEeFth3
おまいらは回答する機械
512 :
2017/03/19(日) 14:53:33.02 ID:VKtnwSVx
まあ調べたら自分の新しい知識になる場合もあるからいいんだけど
この程度の事も検索しないのならコードなんか書けないような
513 :
2017/03/19(日) 15:03:19.30 ID:lJcyTqFl
プログラムやる奴らって質問されるとキレながらも答えたい願望あるんだよな
そして煽って議論させるのも好き
だからわざわざ検索しないでここに投げてあげたりする
514 :
2017/03/19(日) 15:04:25.29 ID:1DEeFth3
それにしたって餌としてはしょぼすぎる
515 :
デフォルトの名無しさん
2017/03/19(日) 15:10:14.91 ID:p4p+SSjy
ボランティアを馬鹿にすんじゃねーぞ、コラ!
516 :
2017/03/19(日) 16:02:53.06 ID:T5IZ831S
人力検索
517 :
2017/03/19(日) 16:06:30.35 ID:z5/tCjGK
>>513
そういうのは初心者向けふらっとの方でやってくれw
あそこなら解決済みでもグダグダ続けたがるのがいっぱいいる
518 :
2017/03/19(日) 18:48:36.73 ID:lJcyTqFl
>>517
でも質問してくれないと寂しいんだろ?
519 :
2017/03/19(日) 18:52:31.68 ID:bcM43571
くだ質とかVSスレとかこの板で変なやつ増えたよな
本当にプログラムやっているのかって感じの
ここにも来てるのか
520 :
2017/03/19(日) 21:56:16.72 ID:HC9gBYvT
マ板行けって思うスレ多いよな
521 :
2017/03/20(月) 01:44:39.35 ID:SU/B8MWa
アクセスアップとお小遣い稼ぎの裏技
トラフィックエクスチェンジ
http://tra-chan.jugem.jp/?eid=1
522 :
デフォルトの名無しさん
2017/03/20(月) 10:11:03.85 ID:Afs087wZ
>>520←コイツの馴れ合おうとするレスうざっ
523 :
2017/03/20(月) 12:24:29.57 ID:y4a+UdUh
>>522
マ板行け
524 :
デフォルトの名無しさん
2017/03/20(月) 14:10:48.91 ID:pi/vFj6F
>>523お前が行け
525 :
2017/03/20(月) 14:57:32.61 ID:98bjORSB
ここは幼稚園じゃないんだが。
526 :
2017/03/20(月) 15:41:51.51 ID:4DDUMBY5
似たようなもんよ
527 :
2017/03/20(月) 15:48:57.55 ID:LcNjV7jZ
言い争いを見てたら幼稚園児とたいして変わらん気がする
528 :
デフォルトの名無しさん
2017/03/20(月) 16:00:23.53 ID:pi/vFj6F

いい加減うざいって、お前らずっとスレちがい
529 :
2017/03/21(火) 05:52:14.36 ID:SG0A/rfm
ただいま C# 7.0 利用中
ジェネリックのローカル関数まで書けるのにオーバーロードは出来ない事に気づいてがっかりモードになっている件
なぜできんOrz
あと大抵の場合キャプチャは要らないんだけどな・・・
0b1110_1011 とか二進数のリテラル地味に便利w
530 :
2017/03/21(火) 06:45:57.61 ID:0zsWCCNl
オーバーロードはクラス外からみて合理的なインターフェイスを提供するためのもので、
内部で使うだけなら紛らわしいだけだろ
オーバーロードが欲しくなるほど長いメソッドを作ること自体が間違ってるし
531 :
2017/03/21(火) 14:40:35.20 ID:SG0A/rfm
>>530
そんな事は無いよ、型別にスイッチするくらいならオーバーロード見通しいい
532 :
デフォルトの名無しさん
2017/03/21(火) 19:18:26.99 ID:bA9h/8/p
似たような処理するのにメソッド2つも要らない
中で分岐させて使え、その方が保守楽だから

って言われたことある。
オマエラも結局中で分岐させてる?
533 :
2017/03/21(火) 19:23:26.02 ID:qbQ1Fjub
>>532
時と場合による
何でもかんでも共通部分をまとめようとするのはバカだが
534 :
2017/03/21(火) 19:24:42.66 ID:qRIPyX6L
内部の分岐とかどうでもよくね?
似たような処理のメソッドが複数出来る時点で設計からして間違っているだろうし
535 :
2017/03/21(火) 19:30:08.87 ID:72kEtT2Q
>>530
利用するかどうかは別にしてわざわざ禁止するほどのことではないよね
ってことだろ
536 :
2017/03/21(火) 19:31:27.83 ID:qbQ1Fjub
>>534
ループ中で分岐処理が必要な場合があるので2行目は違うと思う
速度ちょっとでも稼ぎたいと思ったらループの外で分岐させておくだろうし
537 :
2017/03/21(火) 19:39:30.55 ID:RrALGwyw
>>532
そういうことするとすぐに分岐が増えて収集がつかなくなる
この業界は既存のコードの権力が強すぎる
一回でもはまるともう最後まで逃れられない
だから最初から妥協せずクリーンな状態を維持し続けるしかない
538 :
2017/03/21(火) 19:50:56.44 ID:UqOt5XZ1
だったらなおのこと分岐のが楽だな
実行して見ないとなんの処理が走るか分からないコードにメリットなんて感じない
資料にも書けないしお客さんにも説明できない
539 :
2017/03/21(火) 20:14:47.71 ID:7sd4gAxo
>>535
オーバーロードを許すと実装コストは増えるよ
オーバーロードされたメソッドのマングリングってこれまでにやったことないはず
クソ長いメソッドを定義する馬鹿のために無駄な実装コストをかけることは許容できない
540 :
2017/03/21(火) 23:05:57.08 ID:UqOt5XZ1
マンコリング?
541 :
2017/03/22(水) 02:05:33.87 ID:YDOC/IGa
オーバーロードがないのは多分キャプチャが原因だと思うよ
可能なら多分やってる、というかキャプチャ無しならオーバーロード可能にしてほしい感じ
さらにいうなら、キャプチャ無し指定をして普通のメソッドが単純に名前空間上に合わられないだけにして欲しい。
でもって、ローカル変数と被る名前OKにしてくれれば一番いい。
結局、ローカル関数にした理由はインテリセンスが機能不全になって欲しくないという話なだけだから。
542 :
2017/03/22(水) 02:11:31.86 ID:YDOC/IGa
なんであんなに変更可能キャプチャが好きなんだろうな・・・
関数型言語のように一度割り当てられたら変更がないことが保証されれば見通し良いし使い勝手も良いけれど
手続き型言語にキャプチャが入ると見通し悪い事この上ないから、可能な限り使わないようにしたい気分になっている。
543 :
2017/03/22(水) 11:28:29.87 ID:hks7EAC1
C#の糞拡張はこれからが本番ですよ。
544 :
2017/03/22(水) 12:58:18.38 ID:7zaDxJTN
文句あるなら自分で言語作ればいいのに
何で作れない分際で文句言ってるんだか
545 :
2017/03/22(水) 13:01:02.87 ID:+8Koiwe2
基地外発想だな
546 :
2017/03/22(水) 13:23:33.31 ID:6nIA/xoV
フジテレビ的発想
547 :
2017/03/22(水) 13:50:44.67 ID:FLtL2zh7
自分で作れないから文句言ってんだろ
お前も同レベルに頭わるそうだなw
548 :
デフォルトの名無しさん
2017/03/22(水) 14:47:13.98 ID:T50yqk9Q
>>544
できらぁ!
549 :
2017/03/22(水) 15:44:09.05 ID:YDOC/IGa
ValueTuple使ったら、変数見えないデバッグできねぇwwww
まさに作りかけwwwww
550 :
2017/03/22(水) 15:45:53.48 ID:YDOC/IGa
>>544
みんなで同じものを使うから意味があるんだよ、一人で勝手に作って勝手にやってたら滅茶苦茶なるだろw
551 :
2017/03/22(水) 19:44:37.37 ID:JvcKijZm
ヘジたんも言語なんか開発するのは時間の無駄だからやめなさいと言っていたしな
552 :
2017/03/22(水) 20:41:21.23 ID:qEl3ed9E
だれよ
553 :
2017/03/22(水) 20:59:39.74 ID:eP+YAd4z
>>549
それ、お前がメクラなだけじゃね?
554 :
2017/03/22(水) 21:17:25.63 ID:YDOC/IGa
>>552
Delphiの開発者で、ゲイツ御大にC#のアーキテクトしてボーランドから引き抜かれた人
555 :
2017/03/22(水) 21:23:40.38 ID:YDOC/IGa
暫く使ってみたけど、やっぱ、ラピッドリリースはよくねぇよな
どんどん品質が落ちていく
誰だよこんな糞な手段はやらした馬鹿は
Windows10もVisualStudioもボロボロやん
556 :
2017/03/22(水) 22:28:00.53 ID:MyrW3Mfd
>>555
どんどんお前が老いていってるだけ
557 :
2017/03/22(水) 22:41:57.96 ID:Qh2JSeLT
最近思うんだけどRazor使わずに普通のhtml+JS+REST API(.NET)の方が開発しやすくない?
Razorって本当に便利なのかな?生産性あがる?
558 :
2017/03/23(木) 01:12:53.78 ID:eX8m9MWo
業務アプリで同じような画面を大量生産するには便利A: [1.201975 sec.]B: [2.281051 sec.]
559 :
デフォルトの名無しさん
2017/03/23(木) 01:47:02.34 ID:FaFIhE+0
C#に限らずかもしれないけれど、invokeってフォームに限ってどうして必要なのですか?
invokeを書けばメソッドを呼び出してプロパティにアクセスできるのは分かるのですが
invokeがないと何がダメなのか内部的なことを教えていただけますか?
560 :
デフォルトの名無しさん
2017/03/23(木) 01:52:24.45 ID:Un9Q+jtZ
>>556
心配しなくても若い子はもうWindowsも使わなければVisutalStduio何それ?状態だからw
みんなWeb系でスマホばっかりやっている。
もう、ここに残っているのは年寄りだけだよw
561 :
2017/03/23(木) 01:56:59.96 ID:Un9Q+jtZ
>>559
昔のシングルスレッド時代の遺産を引きずっているんだよ
Formは、半ばラッパーライブラリなので。
シングルスレッドの利点はデッドロックの可能性がないこと。
マルチスレッド当たり前になってしまった今だと、逆にデッドロックの元になってしまったりと困った有様だけど。
遺産の量が大きいので、全く別の物を作るのは簡単ではないだろうね。
562 :
デフォルトの名無しさん
2017/03/23(木) 02:00:44.79 ID:FaFIhE+0
>>561
ありがとうございます
もっと詳しく知りたいのですがどう言葉で調べればよいのでしょうか?
できればネットで調べれるものがよいのですが、書籍でも平気です
英語のサイトでも平気です
なにかあれば教えていただけますか?
563 :
2017/03/23(木) 02:04:38.43 ID:VjAjr2s9
>>559
UI関連は、UIスレッドでのみ動作することを前提に設計することで、パフォーマンスを上げてる。
マルチスレッド対応にすると排他制御等が増えてしまい、パフォーマンスが下がる。

>>561
非同期処理とか書きやすくなったから、最近は割と楽だろ。
Invokeも使う必要ないし。
564 :
2017/03/23(木) 02:05:51.99 ID:Un9Q+jtZ
>>562
C言語から、直接Win32APIを叩いてみればわかると思うよ。
WM_XXXXとかを直接使ってGUIを動かしてみれば、古いインターフェイスの感触どんなもんか分かるかと。
年代物なので、古本屋でWin32の本でも探してみるのもいいかも。
今更みる価値あるのかって思うので、お勧めはしないけど。
565 :
2017/03/23(木) 02:07:28.88 ID:Un9Q+jtZ
>>563
Task作った奴はバカだと思うwww
Invokeの方がまだ誰にでも分かりやすい。

継続なにそれおいしいのwww
関数型言語面白いねって感じだね
566 :
2017/03/23(木) 02:09:33.89 ID:Un9Q+jtZ
このマルチコア時代にシングルスレッドで頑張ってパフォーマンス上げるとか
時代錯誤も甚だしいよな・・・
567 :
デフォルトの名無しさん
2017/03/23(木) 02:16:32.78 ID:FaFIhE+0
>>563,564
新人にinvokeを教える際に困ってしまったので
浅くでも知識として知っておきたかったので助かりました
Win32からの流れなのですね、Formだけこんなに違うのはそういうことなのですね。。
時間があるときにもう少し調べてみようと思います
ありがとうございました
568 :
2017/03/23(木) 02:21:34.59 ID:VjAjr2s9
>>565
async/awaitやIProgress<T>あるから、Taskの継続を直接使う事はあまり無いな。
間接的には使ってるわけだが。
569 :
2017/03/23(木) 02:21:39.46 ID:9gkqdxMB
>>566
時代関係ないから
スレッドセーフにするとパフォーマンスが犠牲になるのはUIだけじゃない
BCLのクラスのインスタンスメソッドも大半はスレッドセーフじゃない
570 :
2017/03/23(木) 02:22:11.13 ID:Un9Q+jtZ
Win32は、当時のオブジェクト指向の実現にむけての試行錯誤が見れるのは面白いかもしれない
メッセージ飛ばしたり、メール飛ばしたり、色々試行錯誤の末にC++の仮想テーブル方式にたどり着く訳だけれども
その前の段階のオブジェクト指向が見れるよw
571 :
2017/03/23(木) 02:23:39.71 ID:Un9Q+jtZ
>>569
いつまでも凝り固まってますねwww
もうハイハイって感じですわ
572 :
2017/03/23(木) 02:28:42.19 ID:Ei+8urX3
しかしGUIなんて所詮人間速度だし、パフォーマンスって要らないよな?
フォームに関しては最初からマルチスレッド対応でinvokeの必要無しの方が良かった気がするが。
573 :
2017/03/23(木) 02:30:27.90 ID:9gkqdxMB
>>571
いるよね、こういう量的な進歩と質的な進歩の区別のつかない奴
馬鹿な奴だ
574 :
2017/03/23(木) 02:31:53.25 ID:VjAjr2s9
何でもマルチセーフにすれば良くなるってもんでも無いのね。
排他制御のコストは大きいから、なるべくそれを無くす設計が重要。
575 :
2017/03/23(木) 02:32:30.61 ID:Un9Q+jtZ
>>572
いやいや、それでもあった方がいいよ
マルチスレッドできっちり分散できれば、1CPU辺りの負荷が軽くなる
すると低クロックで動いて消費電力が小さい。
シングルスレッドだと、同じ負荷でも1CPUに集中するからクロックが上がってしまう。
576 :
デフォルトの名無しさん
2017/03/23(木) 02:35:01.08 ID:Un9Q+jtZ
>>573
質的にはTaskは逆立ちして徒競走しているようなモンだなw
普通立ってに走れよ、頭オカシイんかいってなもんだね。
577 :
2017/03/23(木) 02:36:32.46 ID:9gkqdxMB
しかし、マルチコアっていうのは苦し紛れの「苦肉の策」であってポジティブな進歩じゃないって
パソヲタレベルでも知ってる常識だと思ったけどプログラマでもそういう認識がない奴がいるんだね。

そういう奴は「人月の神話」って言葉も聞いたことないんだろうな。
生産性は作業者の投入人数に比例しないのはコンピュータも同じだよ馬鹿
578 :
2017/03/23(木) 02:38:13.08 ID:Ei+8urX3
>>575
いやお前実は分かってないだろ。
575はinvokeを肯定しているぞ。てかお前どっち派よ?
579 :
2017/03/23(木) 02:40:35.49 ID:Un9Q+jtZ
>>578
async / await 最新わかってる俺スゲーなヤツが死んでほしい派
技術的には、まぁあるもん使うさってなもんだ。
580 :
2017/03/23(木) 02:57:11.32 ID:VjAjr2s9
>>576
Taskはスレッドプールを使いやすくしたもの。
スレッドプール自体は昔から使われるテクニックだし、なんでそこまで嫌うのか分からん。
Taskのおかげで非同期処理が非常に楽に扱えるようになったのに。
581 :
2017/03/23(木) 03:07:35.11 ID:Un9Q+jtZ
>>580
以前作って滅びたATLなんかと同じだね、入門者がすぐに理解して使えない物は糞
WPFも同様の香りがするね
分からないけれどなんとなく使えているって人だらけになって理解していないから、エラー対処ができない。
そうすると、全部特定の人に負担が行く、そんなコードやライブラリは使えない。
これはマイクロソフトの象牙の塔だよ
582 :
2017/03/23(木) 04:45:12.92 ID:0wLqn0eU
ATLがいつ滅んだんだよw
583 :
2017/03/23(木) 07:10:17.81 ID:UmFjwc/F
昔の名残とかじゃなく、単にマルチスレッドでUI部品を扱うのが大変だということだと思うんだが

ユーザーインターフェイススレッド - Wikipedia
https://ja.wikipedia.org/wiki/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%82%A4%E3%82%B9%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89

>例えば、Java の AWT では、1996年の最初の時点では、
>単純にスレッド間でデータ共有型のマルチスレッドになっていた。
>しかし、データ共有するには、ロックをかけないといけないが、
>親コンポーネントから子コンポーネントを呼んだり、
>コールバックで子から親を呼んだり、
>アプリケーションからGUIライブラリを呼んだり、
>GUIライブラリからアプリケーションをコールバックしたりと、
>双方向に呼び出すことが多く、
>異なるスレッド間で双方向に呼び合うときは、ロックの順番に注意を払う必要がある。
>これはソフトウェアが非常に複雑になる原因となってしまう。
>また、ロック順序のミスが引き起こすデッドロックは常にではなく
>たまに発生したりすることの多いバグ(時間的確率要因が関与する偶発性のあるバグ)であり、
>バグ取りが大変になるという問題があった[3]。
>
>そこで、1997年の Java の Swing からは、
>UI の操作は全てメインのUIスレッドであるイベントディスパッチスレッドから
>操作しなくてはならない、というルールを設けた。
584 :
2017/03/23(木) 07:23:37.05 ID:i5lX3ZQq
それを昔の名残とかラッパー、速度優先って言ってるんでしょ
マルチスレッドにしようと思ったらできるんだから
585 :
2017/03/23(木) 08:05:24.99 ID:eX8m9MWo
WinFormsやWPFを含めたGUIフレームワークって
イベントハンドラなどのユーザーコードに制御を渡す前後で
一時的に状態を変えたりしてることが多いから、
それ以外のタイミングで触られると壊れる
結局それを防ごうとするとユーザーコードの実行タイミングまでブロックすることになるので、
Invokeと変わらなくなる
586 :
2017/03/23(木) 08:14:01.02 ID:HovpjxiM
>>584
> マルチスレッドにしようと思ったらできるんだから
話がループしてるぞ
やればできるけどコールバックとかでロックの管理が面倒だしUIだから極限まで性能追い求める必要もないから
>> UI の操作は全てメインのUIスレッドであるイベントディスパッチスレッドから
>> 操作しなくてはならない、というルールを設けた。
ってことだろ
587 :
2017/03/23(木) 10:27:00.68 ID:BTeOg9CT
>>564
COMのアパートメント問題を解決するためじゃないの?
厳密にはInvokeしなくて良いケースもあるけど、それを保証する方法が皆無に等しいという。

ウインドウメッセージ云々とか、本質とはかけ離れている気が。
588 :
2017/03/23(木) 12:30:56.91 ID:Un9Q+jtZ
>>582
もう誰も使っている奴いないだろう、放棄されて保守だけが残っている。
こういう技術はいずれそうなるよ
589 :
2017/03/23(木) 12:53:23.45 ID:Un9Q+jtZ
>>586
UI側がバージョン管理システムみたいな扱いをすればいいんだと思うけどね
非ロック型で同期をとる方法としては有効だと思う。
いわゆる
読み込んで、内容を変更して、読み込み時点データとともにUIに返す。
UI側は、ロックして読み込み時点と現状が一致しているなら置換してアンロックそして処理終了。
ロックオブジェクトが自分自身に限られるからデッドロックの可能性はない。
この方法の場合、読み出すだけならロック不要でいつでも読み込めるしね。

俺は、UIに関してはそういう設計にして自分のメソッドはすべてスレッドセーフだ。
長年の実績ある方法だし、このやり方は非常に優れていると思う。
更新失敗とリトライは発生するが、並列度はかなり高くなる。
デッドロックは皆無で、見通しも良い。
590 :
2017/03/23(木) 12:55:44.66 ID:Un9Q+jtZ
>>589 に追加
これのよい所は、バージョン管理システムは普通誰でも使わなきゃならないもので
どういう風に機能させるのか誰にでもすぐ分かる。
問題が発生しても初心者に簡単に解決できるという点が良いと思っている。
591 :
2017/03/23(木) 17:07:47.97 ID:EtPn1ouj
なんか酷いやり取りだね
マルチスレッドを根本的に理解してないのが何人かいるねw

スレッドセーフに作ることは高コストだから特に理由がない限りそうしないのは
マルチスレッド理解の初歩の初歩だと思うんだけど。

あれだ、UIは別スレッドからのアクセスを検出して例外投げるようになってるわけだけど、
例外が投げられなければ何も問題ないはずだ、っていうVBerな発想なのかねw
592 :
2017/03/23(木) 17:21:43.84 ID:ncdnXTN/
.NETは実行コストよりも実装コストを重視する傾向にあるからね
スレッドセーフなformになってもいいと思うわ
593 :
2017/03/23(木) 17:24:03.63 ID:30c+rZIc
>>592
君のコードはイベントハンドラが並列に実行されても大丈夫?
利用する側の実装コストも確実に跳ね上がるよ
594 :
2017/03/23(木) 18:15:58.21 ID:ncdnXTN/
マルチスレッド動作のformにとは言ってないんだよ・・・
595 :
2017/03/23(木) 18:57:02.57 ID:99dRkoLd
>>592
そこでwpfのバインディングですよ
596 :
2017/03/23(木) 19:28:24.32 ID:Un9Q+jtZ
>>591
酷いやり方というのはある意味正しい
そもそもformsが腐っている以上綺麗な方法はハナから存在しない。
それでも誰にでもわかり、誰にでも修正可能なやり方っていうのが重要なんだよ。
それができなきゃ、一人で勝手にやっていろって話になる。
チームで作業は不可能だ。
597 :
2017/03/23(木) 19:30:23.84 ID:Un9Q+jtZ
バインディングとか最悪やな、何処がどうなっているのか把握できる人間が居なくなって
誰にもメンテできなるなる典型w
598 :
2017/03/23(木) 19:32:40.10 ID:Ei+8urX3
>>583
> GUIライブラリからアプリケーションをコールバックしたりと、
これってあるか?ピンとこない。

そもそも、UIってロックする必要があるか?
現状、UIスレッドとタスクスレッドは別で、結果的にプログレスバー等の更新にはinvokeを使うしかない。
これがウザイから「直に書き込みさせてくれ」というのが俺の希望。
そもそも、排他的な実装をしなければならない理由がないだろ。
プログレスバーなんて普通は共有しないし、
してたらしてたで「どちらの内容が表示されてもいい」が仕様になるのだから、
レーシングしたところで問題ない。
結果、リクエストがあったらただ更新すればいいだけ、それを表示すればいいだけ、で終わりじゃないか?
ファイルみたいにロックありきの物ではないと思うんだが。
599 :
2017/03/23(木) 19:35:54.46 ID:g/kXmQSp
マルチスレッドアクセス可能なGUI採用してるシステムなんてあったっけ
UIスレッドモデルが遺産だというのなら
新しいシステム(Windowsに限らんぞ)ほど「そうなってはいない」はずだが
実際は最近のOS(やはりWindowsに限らない)でもUIスレッドモデルだ
何故だろうなあ

下手の考えなんぞ大抵は
「先人が思いついたけどあえてやらなかった」か「すでに失敗した」か
600 :
デフォルトの名無しさん
2017/03/23(木) 19:36:15.02 ID:Un9Q+jtZ
Haskellみたいに極度に小さい記述で複雑なシステムが組めるのは確かに凄いんだよ
あれはマジ使える、ただし誰にでも使えるものでは無い。
こういう物は、チーム作業には向かない。
少人数で高度なプログラミングをするのには向いているがね。
で、C#はHaskellみたいなアプリケーションを作るために開発されたものなのかというと、それは違う。
誰でも使えるBasicの延長線上のものだ。

TaskもWPFもHaskellみたいな超絶技巧を目指しているだな、そんなものは要求されていないのに。
601 :
2017/03/23(木) 19:37:49.41 ID:Ei+8urX3
>>595
あー、WPFのバインディングはこれを目指していたのか。
なるほど俺の要求だけならこれでいいわ。
602 :
2017/03/23(木) 19:39:47.03 ID:FkdET+B0
不思議だな
新しい技術のおかげでプログラミングはますます簡単になってるのに
まるで難しくなったような意見が出てくる
603 :
デフォルトの名無しさん
2017/03/23(木) 19:40:57.33 ID:Un9Q+jtZ
結局ね、マイクロソフトの技術者はコンセプトという物が理解できないバカの集団と化してしまったんだよ。
多分、社内政治とスタンドプレーの果てにこうなったんだろうなと。
だから、マイクロソフトは象牙の塔。
勉強しまくっているが自分のやっている事しか見えていない奴が音頭を取り始めてしまっている。
604 :
2017/03/23(木) 19:46:09.55 ID:J2eFkRx5
ほーん、で?いちいち同意求めんなカス
知恵袋で恋愛相談してるクソアマかテメー
605 :
2017/03/23(木) 19:57:59.50 ID:HovpjxiM
>>589
> UI側は、ロックして読み込み時点と現状が一致しているなら置換してアンロックそして処理終了。
一致してない時に再計算をする必要があるからその計算が軽い時に有効な方法
ちなみにバージョン管理システムでは他の人が変更してるからやり直せって言ったら使い物にならないのでいわゆるマージ処理を行うのでちょっと違う
606 :
2017/03/23(木) 20:26:39.42 ID:HovpjxiM
>>598
GUI 組んだことないのか?
イベントってフレームワークからのアプリケーションの呼び出しだぞ
あとロックするのは GUI のフレームワークじゃなくてアプリケーションの方
マルチスレッド化したフレームワークだとイベントっていつ発生するかわからないのでお前みたいなよくわかってない奴が組むとデッドロックを引き起こしたりしやすいって話
607 :
2017/03/23(木) 20:27:34.06 ID:99dRkoLd
>>601
但しコレクションに関してはBindingOperations・・・のおまじないが必要だ
608 :
2017/03/23(木) 20:48:03.89 ID:Ei+8urX3
>>606
今時GUIしかやらんだろ。
が、まあこっちの認識がずれていたのは分かった。

>アプリケーションからGUIライブラリを呼んだり、
>GUIライブラリからアプリケーションをコールバックしたりと、
>双方向に呼び出すことが多く、
前者が「プログレスバーの更新」で、
後者が「 XXX.click += YYYY;」か。
確かに双方向だ。

で、ロックは必要か?
プログレスバーの更新なんて、ロックする必要ないだろ。
他もそうだと思うが。
609 :
2017/03/23(木) 20:49:29.54 ID:30c+rZIc
>>606
具体的な最大の問題は、マルチスレッドアクセスを許容するとUIスレッド上で排他処理をしなきゃいけないことなんだよな
UIスレッドは多種多様なタスクによってタイトに使い回されるので、それをブロックすることは容易にデッドロックを引き起こす
UIスレッド上で別の処理Xが終わるのを待ってたら、XもUIスレッド上で呼び出される処理で
いつまでもXが呼ばれなくなりデッドロック、というのはよくあるパターン
610 :
2017/03/23(木) 20:55:57.96 ID:30c+rZIc
>>608
そのプログレスバーの更新一つとっても中でどれだけ複雑なことをやっているかは君にも想像できるだろ?
君がロックしてるつもりがなくてもプログレスバーの更新処理を呼び出せば内部で当然ロックがかかる
611 :
2017/03/23(木) 21:00:57.40 ID:Ei+8urX3
>>609
普通に組んだらデッドロックはしなく無いか?例えば、

1. UI <- Task_thread_A で Aが止まる。
2. Task_thread_A <- Task_thread_B で Bが止まる、ここまではありがち。
3. Task_threadB <- UI :これはねーよ。

UIスレッドがTaskスレッドを見てロックするという使い方は普通しないだろ。
612 :
2017/03/23(木) 21:14:48.29 ID:Ei+8urX3
>>610
いや、ロックの必要はないだろ。
正確に言えば、外部からの明示的なロックが必要無いように作れば作れるだろ。
今そうなってないだけで。

要するにプログレスバーを UI, Task_thread_A, Task_thread_B の
どこからも更新出来るようにしたいとして、
全部、 progressBar.value = x; と書かせろ、と言いたいだけで。

内部的に細かくロックして、順に処理するのはCLRが勝手にすればいい。
その結果、それぞれのスレッドが微妙にロックするのも仕方ない。
ただ、循環ロックにならない限り、デッドロックにはならないだろ。
そして普通に書けば、循環ロックにはならないだろ。
613 :
2017/03/23(木) 21:17:21.47 ID:5A+rvbXC
独りで仕方ないと思って存分に射精してろハゲ
614 :
2017/03/23(木) 21:24:07.98 ID:NnBP2eXC
>>608
GUIしかやらない?どこの世界の話だよ
615 :
2017/03/23(木) 21:27:34.82 ID:VjAjr2s9
>>589
アトミックなデータでない限り、読み出しでロックが不要は誤り。
更新中の中途半端なデータが読みだされたらどうすんの。
616 :
2017/03/23(木) 21:30:44.46 ID:5A+rvbXC
生兵法はケガの元だな
毛がなくて良かったね〜
617 :
2017/03/23(木) 21:32:55.65 ID:HovpjxiM
>>608
> あとロックするのは GUI のフレームワークじゃなくてアプリケーションの方
の意味を理解してないのかよ...
そりゃ単純にプログレスバーに表示するぐらいなら問題は発生しないよ w
例えば複数の銀行口座の預金額を表示して振り込みを行うアプリケーションを作るとして
他の端末から入/出金があるのです定期的に預金額を更新しようとしたら各口座をロックして値を読み出してロック解除して画面を更新するだろ
でないと額の不整合が起きるからな
このロックして時に振り込みボタンが押されたら当然こっちも振り込み元と振込先の口座をロックしないとダメだろ
でこのロックの順番がテレコになってたら簡単にデッドロックをするって訳
もちろんちゃんとロック順序を考えて組めばいいんだけどでかいシステムをよくわかってないドカタに組ませることを考えたらわざわざそんな危険な構造にする意味がないってこと
前にも書いたけどUIなので超高速で画面のあちこちが更新できても意味ないしな
618 :
2017/03/23(木) 21:33:06.10 ID:0wLqn0eU
>>588
寝ぼけるのはいいかげんにしろ。
619 :
2017/03/23(木) 21:34:23.52 ID:5A+rvbXC
3行以上はキチガイ
620 :
2017/03/23(木) 22:20:43.54 ID:ncdnXTN/
>>617
> 定期的に預金額を更新しようとしたら各口座をロックして値を読み出してロック解除して画面を更新するだろ
そういう糞UIでもつくれるけど、まともだったらやらないよ・・・
621 :
2017/03/23(木) 23:30:21.13 ID:u0oYY3Ci
>>620
で、お前はどうやるんだい?
622 :
2017/03/23(木) 23:38:12.29 ID:uQaoHdGv
普通は読みだす時はロックなんてしないよw
複数のデータの不整合が問題になる場合は微妙だけど、その場合でも
2回一致するまで読む方が低コスト
623 :
2017/03/23(木) 23:39:06.22 ID:uQaoHdGv
っていうか、何でこんなマルチスレッドの初歩みたいな話になってるの?w
624 :
2017/03/23(木) 23:47:48.47 ID:Ei+8urX3
てす
625 :
2017/03/23(木) 23:50:59.28 ID:Ei+8urX3
>>617
ちげーよ。まあ結論としては、簡単に出来るけどC#はやらなかった、というだけだ。
そして俺はこの選択は間違いだったと見るね。
実装例としては以下。(C#の文法は知らないので真似てみた。適宜脳内修正よろしく)

//ここにコードを書いたのだが、403 Forbidden になるぜorz

mutexを使う場合、mutex確保中に他ロックを取りに行かなければデッドロックはしない。
或いはthread_IDを付けておいて、UIなら直接変更、その他ならinvokeにしてもいい。
いずれにしても、ユーザー側にはinvokeが見えなくなる(隠蔽される)
これの方が良かったと思うよ。いちいち混乱しなかった。

そちらの例は、2人のユーザ間でのデッドロックであって、
俺が今話しているUI/タスクスレッド間の例じゃないじゃん。
なお、解法は、普通に「両方取れなかった場合は一旦全部リリースしてリトライ」でいい。
ただし今時はそれはDB任せで、ユーザ側でのロック管理なんてしない(はず)
626 :
2017/03/23(木) 23:52:19.70 ID:FkdET+B0
スレ読み返すと細かいことはどうでもいいけどとにかくInvokeしたくないプロパティでアクセスさせろって暴れてる変な子が居るように読めるんだが
Invokeを適当なプロパティでラップしろで終わる話じゃないのこれ?
627 :
2017/03/23(木) 23:53:41.78 ID:u0oYY3Ci
>>622
ケースバイケースだろ
そもそも >>617 は説明のためのサンプルだから不満なら両方書き込みのケースを考えればいいだけ

>>623
マルチスレッドGUIフレームワークに夢見てる奴がいるからでしょ w
628 :
2017/03/23(木) 23:54:44.80 ID:Ei+8urX3
>>626
その通りだ。そしてそのコードを貼ろうとしている。
つか、貼らなくても分かるんならもういいね。
629 :
2017/03/23(木) 23:57:20.64 ID:u0oYY3Ci
>>625
> 俺が今話しているUI/タスクスレッド間の例じゃないじゃん。
そんなことを言ってるのお前だけ
>>583 をちゃんと読み返せよ
630 :
2017/03/24(金) 00:00:02.01 ID:Lq7k+m1v
>>622
そんな力業してないでリーダー/ライターロック使いなよ。
比較のループとかデータ量次第ではCPUパワーの無駄遣いだろ。
631 :
2017/03/24(金) 00:07:18.67 ID:P/PrHj1p
既製品に文句があるなら自分で作ってgithub
これができないプログラマはいつまでも三流のまま
コードを書き使ってもらい持論を証明するんだよ
632 :
2017/03/24(金) 00:13:35.16 ID:OAgok+ci
Windows Formsの場合は、単純にFormがActiveXコンテナになり得るから、
アパートメントの制限に対応するために用意された、実装上の都合による物だよ

おそらく、ロックの問題ではなく
リソースリークを根本的に解決する方法がないから用意された手続きなんだよ。
ラップして解決できると思うなら、それで良いんじゃないか
633 :
2017/03/24(金) 00:14:57.73 ID:gW3AbLz/
だからUIスレッドが気になるなら、wpfでMVVMやれば解決でしょうに
634 :
2017/03/24(金) 00:38:36.13 ID:9w5lj4S/
UWPで非同期メソッドとかTask使ってるけどすごい不毛。
非同期メソッドの完了を基本的にはawaitで待つから
非同期メソッドを複数回実行するような場合だと
全部同期呼び出しにして全部まとめてTask.Runしたい。
635 :
2017/03/24(金) 00:50:30.06 ID:RtKD05ZR
>>630
俺は622じゃないけど。

従来型のロック機構だとコストが高すぎる場合もあるんだよ。
俺は詳しくないけど、多分Erlangとかの世界で。
mutex等は共有メモリへの書き込みが生じるから実はかなり重い。
636 :
2017/03/24(金) 02:13:48.63 ID:5bMFJR3b
馬鹿にマルチスレッド。
637 :
2017/03/24(金) 02:33:18.25 ID:99176uAd
結局少しでも重たい処理は全部ワーカーにしなけりゃならないから
UI弄る時だけInvokeした方が見通しすっきりするんだよねw
async/awaitとか使うよりは
ここがUIスレッドですってはっきりわかる。
638 :
2017/03/24(金) 02:44:50.15 ID:7cONiVN5
ここはまだWinFormsの時代かw
639 :
2017/03/24(金) 02:50:50.13 ID:99176uAd
WPF?誰が使うか
そんなもんが必要なモバイルなら普通にJavaScriptにWebアプリで行くわって感じだねw
640 :
2017/03/24(金) 03:11:50.24 ID:m/Lurhmo
>>612
progressBar.Value+=1
としたときに
1.読み込み
2.加算して書き込み
の処理が必要とすると、1と2の間に別スレッドが書き換えを行うことで結果が矛盾する
Interlocked命令を使えばそれは防げるけど、MaxValueを超えないかとかの判定が入るので結局ロックが必要

この程度ならまだしも、裏でWin32やCOMを叩いてるコントロールはさらにややこしい
641 :
2017/03/24(金) 03:44:24.59 ID:5bMFJR3b
レベル低すぎて引くわ C#、LINQ、WPFが高速とか言ってたおれ最先端君が戻ってきたのか?
642 :
2017/03/24(金) 06:28:32.59 ID:Cpc8yNoh
高速(で書ける)
643 :
2017/03/24(金) 07:23:36.10 ID:vGZXBTd1
高速で壊れるの間違いだろ
馬鹿はphp書いてろ
644 :
2017/03/24(金) 07:56:00.46 ID:P/PrHj1p
>>640
壊れても遅くてもいいからとにかくプロパティで書きたいというのが要件
645 :
2017/03/24(金) 08:24:47.57 ID:gW3AbLz/
データの保証がないコントロールなど、標準品ではありえないから
頑張って作ってくれとしか言いようがないな
646 :
2017/03/24(金) 12:55:58.77 ID:99176uAd
>>645
横だけれど、そもそも問題としてValueをインクリメントする事自体が余り良くない考え方かもね。それは表示と処理が分離できていないから。
カウント処理のカウンターはUIがもっているべきじゃない。
別途カウンターを作って、結果だけをUIに代入すべきだ。
このように設計されているなら、破損無視で書き込んでもうまく動作するだろうと思う。

問題は、それをすべての人に要求するのは難しい、自分の忙しくなったらきちんとせずにインクリメントしてるしなw
という事なんだな。
647 :
2017/03/24(金) 15:14:34.51 ID:suDsBIm1
やっとまともなやつ来た
648 :
2017/03/24(金) 16:13:38.13 ID:m/Lurhmo
>>646
今もそうなってるじゃん
ProgressBarクラスがカウンターを持ってて、ネイティブのmsctls_progress32にメッセージを送って表示を更新してる

ぜひスレッドセーフに再実装してみてくれ
649 :
2017/03/24(金) 18:30:43.13 ID:kZHdS/d5
>>646
> カウント処理のカウンターはUIがもっているべきじゃない。
そんな低レベルな話をしてるのは ID:Ei+8urX3 だけだから、お前らもうでてくるな
650 :
2017/03/24(金) 19:42:33.91 ID:RtKD05ZR
>>640
> 結局ロックが必要
いや、要らん。正確には、要らない組み方はある。
アトミックはデータを構造体にして参照を持つことで解決出来る。(一発ライト)
レーシングはインミュータブルとCASで解決出来る。x86ならCMPXCHG命令。

具体的には以下。
1. まず有効な値かどうかを先に判定する。(これは今も先にやっているはず)
2. 書き換える場合、元データのポインタをローカルにまず確保する。
3. 上記旧ポインタから参照して、書き込むデータを
new ProgressBarData() で新しく作る。(インミュータブル)
4. 本体のポインタをCAS命令(LOCK付き)で差し替える。
5. 失敗した場合は3からリトライする。(CAS命令の結果に最新ポインタが入っている)

この方法だとメモリを余分に食うけど、ロックは要らなくなる。
(なおErlangは共有メモリ無しで全て通信という別解決方法だった)

いずれにしても、やりようはあるんだよ。どこにコストを掛けるかという話で。
そもそもGUIなんてレーシングしても問題ないようにも組めるし。
(ProgressBar.value += なんて要らない。 = だけでも組める。>>646に同意)
その上で、invokeなんてユーザーに見せる必要あったのか?というのが疑問。
.NETはVC++でも使うから少しでも速い方がいいという需要もあるのかもしれんが、
C#のノリならここは隠蔽して欲しいところでしょ。GUIなんて極限まで速い意味はないし。
ラップしてもいいし、上記のようにロックフリーにしてもいい。
(もちろんユーザがやってもいいんだが、そういう言語じゃないでしょ)

https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%9A%E3%82%A2%E3%83%BB%E3%82%A2%E3%83%B3%E3%83%89%E3%83%BB%E3%82%B9%E3%83%AF%E3%83%83%E3%83%97
https://ja.wikipedia.org/wiki/Lock-free%E3%81%A8Wait-free%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0
つかいつからお前らこんなに馬鹿になったんだ?ふらっとから混ざったのか?
ロックの設計の仕方を知らないのはお前ら全員じゃねーかよ。
651 :
2017/03/24(金) 19:51:21.19 ID:9LJ2CaVF
>>650
なーんかしょうもない話を延々続けて頭悪そうだけど、
特に理由がない限りわざわざスレッドセーフに作らないのはGUIに限らんって何度言えばわかるの?

馬鹿なのかほんと
652 :
2017/03/24(金) 19:54:06.25 ID:HsxCjAja
>>650
2と3もロックされなければ既に破棄され別の領域として
再利用された誤った情報を読み出す可能性があるだろ
653 :
2017/03/24(金) 19:54:24.48 ID:9VMQOfeX
MSにとっての実装コストの問題でもあるしな
MSが苦労するのはいいとしても、その結果激増したバグに悩まされるのはお前らだぞ
654 :
2017/03/24(金) 20:07:48.70 ID:RtKD05ZR
>>651
お前がinvokeをウザイと思わなければそれでいい。
俺はinvokeをウザイと思うからMSが隠蔽しとけ、と思う。
多分後者の方が多いだろ、この件に関しては。

>>652
ついにC#がGC言語だと知らない奴も出てきたか、、、

>>653
MSはこの程度ならきっちり実装出来るよ。
というかMSって比較的まともだと思うぞ。
655 :
2017/03/24(金) 20:09:50.64 ID:UKoqSEXl
BeginInvokeはどうするの?
656 :
2017/03/24(金) 20:15:53.11 ID:RtKD05ZR
というかここでも単発は池沼なんだな。
いちいち言ってることがアレだし。
657 :
2017/03/24(金) 20:24:26.17 ID:RtKD05ZR
つかまあ、百歩譲って他のコントロールならいいよ。
ただ、ProgressBarなんてどう考えてもタスクスレッドから書き換えられるのが仕様だろ。
(むしろUIスレッドから書き換えることがない)
それをいちいちinvokeはねーだろ。

せめてProgressBarだけでも対応しとけよと思うだろ普通。
658 :
2017/03/24(金) 20:27:59.45 ID:9LJ2CaVF
>>656
アレなのはお前だよ馬鹿...
しかも重症のな。
何度も言うけど、こんなのはweb上にあるようなマルチスレッドの入門記事レベルの話だ。
そもそもスレッドセーフってどういうことなのかすら理解してないし、自分でそういうコードを書いたこともないだろお前。

しかし、こういう馬鹿に限って偉そうなのは何なのかね
659 :
2017/03/24(金) 20:32:42.95 ID:RtKD05ZR
皆さん、今からスレッドセーフ大先生の講義が始まります。ご静聴下さい。
ではよろしく>>658
660 :
2017/03/24(金) 20:57:32.53 ID:UKoqSEXl
>せめてProgressBarだけでも対応しとけよと思うだろ普通。
ProgressBarを対応させたら○○も対応させろとか言い出す人が出ると思うでしょ普通
661 :
2017/03/24(金) 21:56:51.21 ID:vGZXBTd1
馬鹿+偉そうときたから例外を握りつぶすニキだな
662 :
2017/03/24(金) 22:04:34.44 ID:vGZXBTd1
ああでも今回はさすがにClickOnceは危険ニキを支持だな

>MSならこの程度はきっちり実装出来る

ここが一番面白かった
663 :
2017/03/24(金) 22:13:22.45 ID:RtKD05ZR
つまり、俺が言いたいのは、以下ね。

>>559 > invokeってフォームに限ってどうして必要なのですか?
老害: それがしきたり。
ゆとり池沼連呼リアン>>658: スレッドセーフ!スレッドセーフ!
俺: MSが馬鹿だから。

ゆとりって連呼リアン程度の知能しかないよなマジで。
そもそも俺の>>650>>589(俺ではない)とほぼ同じ内容だぞ。
お前ら馬鹿が付いて来れてないから書き直しただけでね。
お前らが589を最初から理解していればもっとマシな議論だったろうさ。
664 :
2017/03/24(金) 22:24:18.31 ID:9LJ2CaVF
だからスレッドセーフじゃないのはControlのメンバだけじゃないって言ってるのに懲りない奴だな
馬鹿なのはMSじゃなくてお前だっての馬鹿
665 :
2017/03/24(金) 22:36:30.53 ID:9LJ2CaVF
Control「だけ」がメンバをUIスレッドからしか呼べないとか訳の分からん錯覚をしているのは、
Controlのメンバが非ユーザーコードからも呼ばれることを理解してないからだろうなたぶん
666 :
2017/03/24(金) 22:41:45.59 ID:RtKD05ZR
スレッドセーフ君はやはり連呼リアンであったか、、、
お前がそう思うんなら(ry
667 :
2017/03/24(金) 22:42:26.38 ID:9LJ2CaVF
馬鹿な上にネトウヨって人生終わってるな
668 :
2017/03/25(土) 01:12:27.10 ID:66tFvNtY
>>657
こんなもんで余計なパフォーマンス食われるのも嫌な感じだしね
スレッド無視で叩きこめるならその方がありがたい物ではある。
インクリメント問題くらいならこっちで対処するわって感じですな。
669 :
2017/03/25(土) 01:17:38.46 ID:66tFvNtY
ああ、そういえば高負荷バックグラウンドスレッドで
progreassBarの操作をasync/awaitでブチかましてスレッドプール爆発させてた新人いたな(笑)
凄い困ってたけど、きっと何が何だか分からなかったんだろうな。
670 :
2017/03/25(土) 01:39:16.42 ID:O6oCv4KM
>>668
そもそもコードの設計論から言ってもワーカースレッドからUIを操作するなんてありえない。
UIに依存するモデルってどんな糞設計だよ。

モデルにSynchronizationContextとか持たせてUIスレッドに同期したイベントで通知させるのは
設計としてありだけど、直接コントロールをいじるとかありえん。

それも気に入らないならUI側が能動的にタイマーでも使ってモデル側を読めばいいだけ。
671 :
2017/03/25(土) 04:16:02.72 ID:++OH//Pd
VB上がりにモデルなんて概念ないからw
672 :
デフォルトの名無しさん
2017/03/25(土) 09:54:01.33 ID:QDpQza6M
.NETの質問したいんですがここで大丈夫でしょうか?
とりあえずします。
PictureBoxのPaintイベントでImageプロパティを再設定する処理などをしてるんですが
どうもMessageBoxの挙動がおかしくなってます。
フォームより後ろに表示されてしまって操作不能になってます。
とりあえず通常のメッセージボックスの場合はパラメータを弄って強制的に全面に表示させてますが
困るがSaveFileDialogなどで上書き確認のメッセージボックスが表示された時です。
この場合も後ろに表示されてしまって操作できないのでどうしようもないです。
これを回避する方法はどうやればよいんでしょうか?
Paintイベントの中身を消去すれば普通に表示されますが出来ればそのままでメッセージボックスも前面に表示させたいです。
673 :
2017/03/25(土) 09:57:11.64 ID:iGx2aDuI
Paintイベント内の処理がおかしいんだろ
俺たちはエスパーじゃないんだから、まずそれがどんなコードか教えてくれよ
674 :
2017/03/25(土) 09:57:40.89 ID:QDpQza6M
すいません。自己解決しました。
Paintイベントで毎回PictureBoxのImageプロパティを再設定してるのが原因でした
下記のように条件を入れてやるだけで回避できました。
if(pic.Image != img){

}
675 :
2017/03/25(土) 09:59:45.97 ID:swqPfyBg
だと思った
676 :
2017/03/25(土) 10:45:00.80 ID:omxknQTj
DataReaderを使って
while(await ReadAsync().ConfigureAwait(false)) {
...
}
って書いてるライブラリがあるんだけど
件数が多くなりそうなループでasync/awaitするとタスク生成とコンテキスト切り替えのオーバーヘッドで逆にパフォーマンス悪くなったりしないもんなの?
677 :
2017/03/25(土) 11:08:32.17 ID:oe75j5bC
>>676
ReadAsync使う時点でそれらよりデータソース読み取りの方がコスト大と作者が判断しているんじゃないかね
MemoryStreamに対してReadAsyncとか使っているなら知らんけど
678 :
2017/03/25(土) 11:09:13.59 ID:kGpqWpaU
>>676
そりゃ呼び出しのオーバーヘッドは増えるだろうけど、それが問題になるかどうかは別だ
パフォーマンスという言葉を安易に使うのはやめよう
君はバッチ処理をしてるのかオンライン処理をしてるのかストリーミング処理をしてるのか、
そのライブラリの方はどういう使われ方を想定してるのか、
処理の規模はどれくらいか
パフォーマンスってのは結果的に目的をどれだけうまく達成できたかであり、一面だけを見て判断できるものじゃない
679 :
2017/03/25(土) 11:11:43.78 ID:2T3avjLL
パフォーマンスって何を指してるんだ
処理速度出すためにasync/await使うわけじゃないのは理解しているよな?
680 :
2017/03/25(土) 11:13:12.94 ID:2T3avjLL
具体的に何を指すんだと問い詰めたい単語
パフォーマンス
スマート
681 :
デフォルトの名無しさん
2017/03/25(土) 12:12:06.97 ID:AJzcpICN
話題が長引いても安心な匿名掲示板「Anontown」 [無断転載禁止]?2ch.net
http://echo.2ch.net/test/read.cgi/tech/1490366833/
682 :
2017/03/25(土) 13:35:04.97 ID:66tFvNtY
>>671
とりあえず動くもの作るからな、クリックして必要な事をかける構造になっている以上
次に起こる事は、必然的にスレッドプール爆発なんだわw
683 :
2017/03/25(土) 14:21:07.83 ID:pA2Zx06R
馬鹿がプログラムを書かなければ解決
684 :
2017/03/25(土) 14:49:04.12 ID:66tFvNtY
そういうヤツはHaskellでもやってろって話だよ
C#はそういう言語じゃない
685 :
2017/03/25(土) 15:02:20.11 ID:OnvCww5G
勝手にそういう言語とか決めないで欲しいな
糞袋の観測範囲で
686 :
デフォルトの名無しさん
2017/03/25(土) 17:12:28.65 ID:P4wL6N6L
webbrowserのdocumenttextでhtmlを文字列で直接埋め込みたいんですが
ローカルに設置したcssやjsファイルを読み込む方法がわかりません。
どこに配置してどのように読み込めば良いか
ご存じの方教えていただけますでしょうか?
どうぞよろしくお願いします。
687 :
2017/03/25(土) 18:18:23.98 ID:gz8AHGhh
Data URIスキームで埋め込むとか
688 :
2017/03/26(日) 00:26:03.65 ID:b1vqxh2T
HaskellといえばAI。つまりそういうこと。
689 :
2017/03/26(日) 11:09:36.56 ID:WUrKAJma
690 :
2017/03/26(日) 12:41:56.97 ID:Uwt+/Suh
>>670-671
釣りか?マジで言ってるのなら
お前ら別の意味でのスタティックおじさんになってるぞ。
まあC#erなんてそんなもんだと今回思い知ったが。
691 :
2017/03/26(日) 13:20:23.73 ID:x9SVAeuT
progressbarなど、多くても100回程度書き換えれば充分なわけで
たかが100回のUIスレッド切り替えでオーバーヘッドとか笑っちまうな
スレッドを無視するより書き換え回数減らしたほうが余程生産的だし簡単だ
692 :
2017/03/26(日) 13:20:26.49 ID:hVl7ZVni
>>690
そもそも今時Windowsのデスクトップアプリなんか作ってる時点で
スタティックおじさんであることを自覚したほうがいいよ
693 :
2017/03/26(日) 13:24:42.49 ID:TjDGXANh
暴論w
694 :
2017/03/26(日) 13:28:02.28 ID:WQ8v1gdY
みんなコード書くよりレッテル貼りの方が得意なんだな
695 :
2017/03/26(日) 13:48:27.23 ID:7xcWRiGy
プログレスバーはカウントアップが面倒なのかいつからかグルグルするモードがついたね
ハングアップしてないかわかればまぁいいんでそればかりつかってる
696 :
2017/03/26(日) 13:59:10.19 ID:TjDGXANh
いつ終わるか分からない処理もあるから。
697 :
2017/03/26(日) 14:02:35.77 ID:Lixhnbpu
>>695
それ追加されたの.Net2.0だから10年以上前だよ
698 :
2017/03/26(日) 14:03:21.73 ID:xbLciI4B
鬱陶しいから来週まで続けるなよ
でないとこのスレ埋め立てるからな
699 :
2017/03/26(日) 14:13:37.56 ID:Lixhnbpu
4月1日までか…長いな
700 :
2017/03/26(日) 14:19:29.01 ID:Uwt+/Suh
つかお前ら落ち着けw

俺は>>650だよ。そして>>640含むお前ら大多数よりは賢いことはもう示したろ。
で、>>670-671も同様にアホっぽく見える。
しかしマジでそう思っているのなら、それを示せば多少は教えてやるよ、ということだ。
何か最近、煽ったりカニンガムの法則を試しているような奴も多いんでね。
それに付き合わされるのはウザイ。

俺の意見は ID:Un9Q+jtZ とは完全には一致はしないが、
6割くらいは一致するし、彼が何を言いたいのかは分かる。
既に言ったとおり、650も>>589の代弁に近い訳でね。
お前らは>>597(重ねて言うが俺ではない)の意味を理解出来ていないように見える。

そこでお題を出してやる。
これをお前ら流の「美しい実装」をする方法を述べてみろ。
駄目出ししてやるよ。

フーリエ変換をする関数 calc_FFT があって、
計算に時間がかかるので、プログレスバーに進捗状況を表示したい。

参加する人はどうぞ。
701 :
2017/03/26(日) 14:24:02.60 ID:13fTqv5I
>>700
まだやる気かよ。
だからねえ、そういうのは>>670に書いた2つのやり方のどちらかを選択するのが普通。

どんな方法論を取るにしろ、モデル側から直接UI部品をいじるとかありえない。
依存方向は一方通行にするなんて基本中の基本だろ
702 :
2017/03/26(日) 14:32:06.72 ID:13fTqv5I
この元の話題、つまりUI部品のメンバーがUIスレッドからしかアクセスできないように
なっているのは不合理かどうかって話も、はっきりいって問題提起した奴が何も分かってない馬鹿なだけ。

こういう仕様は十分に合理的。
703 :
2017/03/26(日) 14:55:35.58 ID:V5FfYo93
だからVB上がりにモデルなんて概念はないって言ってんだろが
通じない話を繰り返すな
壊れて向きが変わらなくなったチョロQかテメー
704 :
2017/03/26(日) 15:00:04.71 ID:7VPGG3Vy
モデル概念を知らないおじさんや初心者以前に
エキスパートからしてみてもC#を使いたい動機は素早く手軽に組みたいという動機にあるからね。
時間をかけてガチガチにやらないかぎり上手くいかないとか、それは勘弁願い下げたよな。
705 :
2017/03/26(日) 15:09:11.18 ID:N/oWszN2
うぇーゴミ虫の狭い観測範囲で勝手にC#ユーザーの動機を定めちゃう?
いくら寛容な人間様でも下等生物と一緒にされるんでは不愉快ですわ
706 :
2017/03/26(日) 15:14:26.60 ID:7VPGG3Vy
お気に召さなければC++でも使ってみたらどうよ?
templateメタプログラミングならなんでもお望みの書き方でできるよ。
707 :
2017/03/26(日) 15:37:28.26 ID:Uwt+/Suh
ちなみに、回答は後日ね。
こういうのは急いで出来る必要はないから、じっくり考えてみてよ。
当たり前だが俺は>>670-671よりもマシな解決方法を持っている(つもり)


>>701
採点結果: スタティックゆとり乙

君はどういう依存が悪いのかを理解出来ていない。
そしておそらくUIはスタティックだと信じている。

ただしMSも同様に馬鹿だった。だからFormは糞なのも事実。
しかし世の中には他の実装方法もあるって事さ。
君達がロックフリーの世界を知らなかったようにね。

ヒントとしては、
> どちらかを選択する
ここが間違っている。
何通りも用意するとか、ラップして変換するとかは、明らかに無駄だよね。
708 :
デフォルトの名無しさん
2017/03/26(日) 15:46:45.12 ID:bdiJ1zQR
>壊れて向きが変わらなくなったチョロQかテメー

斬新な煽り方だなw
709 :
2017/03/26(日) 16:30:36.77 ID:E6fNHh8L
ネトウヨとかもそうだけど、頭悪い奴に限って、

「この俺だけが世の中の真実に覚醒した!!!この世は嘘と欺瞞にまみれていて(笑)
俺以外の連中は馬鹿ばかりだ!!!」

ってなるのは何なのかね。
まあ2chにはこういう単細胞で自分を客観的に見られない奴いっぱいいるけど、
>>707みたいにそういうタイプはプログラマとか知的な仕事についてはいけない人だよな本来
710 :
2017/03/26(日) 16:33:32.75 ID:7VPGG3Vy
彼が相手している誰かさんの方がむしろヤバイという客観的印象ありなんですけどねw
711 :
2017/03/26(日) 17:00:26.56 ID:nZrkbKSG
ロックフリーおじさんはスタティックおじさんを馬鹿にできんだろ
○○おじさんが馬鹿にされる本質は金のハンマー信仰にあるのだから
712 :
2017/03/26(日) 17:09:41.70 ID:E6fNHh8L
銀の弾丸を求める者は少なくとも倒すべき「怪物」の存在には気が付いているが、
彼はそのレベルにすら達してないよたぶん。

背後にあるトレードオフに気が付かないから不条理でないものが不条理に見えてしまう
自分の馬鹿さ加減を自覚できないだけ
713 :
2017/03/26(日) 18:57:25.59 ID:iTS+fWTZ
>>700
ダメ出しなんて要らん
どや顔で語りたいならぐうの音もでない実装を晒しやがれ
714 :
デフォルトの名無しさん
2017/03/26(日) 19:11:26.31 ID:iZtP8D0n
初歩的な内容ですが。
RxのISchedulerインターフェースを実装したいのですが、ScheduleメソッドのDateTimeOffsetを引数にとるオーバーロードとTimeSpanを引数にとるオーバーロードって
どのように実装すればいいのですか。
本家Rx.NETのリポジトリにあるコードをいくつか見ましたが、
なんとなく、指定された時間の分だけ遅延させて
デリゲートをInvokeさせるというのは分かりましたが、この2つのオーバーロードの具体的な実装方法を文章で書いてあるところを教えてください。
あと、戻り値がIDisposableなんですけど、これはスケジュールの解除を行うDisposableでいいですよね。
715 :
2017/03/26(日) 20:02:08.99 ID:YTmW3NMW
>>707
利根川さんきたーーーーw
716 :
2017/03/26(日) 20:06:43.37 ID:Uwt+/Suh
>>713
俺は語りたいわけじゃない。
だから君の意見を尊重して、俺の答えは書かないことにするよ。

君らは一生馬鹿なままで過ごせばいい。
C#にとどまっている限り、回りもみんな馬鹿だから、ばれないで済むだろう。

ただ、知っている奴が見たら、お前らは本当に間抜けなことをしている。
だけど、そういうのは自分でいろいろ考えないと身につかないんだよ。
だから自助努力する奴に対してはサポートしてやろうとしただけ。
とはいえ、俺の案も他言語では普通に使われる手だから、探せば出てくるはず。
それは君たちで探すんだね。

俺はくだらない煽りには本当に辟易している。
そのエネルギーは正しくプラスの方向に使うべきだよ。
マイナス方向に使って煽るのではなくてね。

君は何がしたかったんだ?
俺の面目を潰したかったのなら、俺より素晴らしい実装を先に言ってしまえばよかっただろ?
或いは他の人から、もっと素晴らしい実装が出てきたら、君にも糧になっただろ?
そうやってプラスの方向にお互いに高めていくべきなんだよ。
それを、「じゃあ教えてやらない」と言われる話の振り方をしてしまうから、
ゆとりはゆとりのままなんだよ。

聞くは一時の恥、聞かぬは一生の恥、だよ。
こんな匿名のところですら面子を重視しているうちは一生ゆとりだよ。
717 :
2017/03/26(日) 20:09:36.55 ID:XWnO8Cg2
めっちゃ早口で言ってそう
718 :
2017/03/26(日) 20:52:30.96 ID:iTS+fWTZ
なぜかバカって無駄な長文書くんだよな
こういう奴が書くコードも推して知るべしなんだろうな w
719 :
2017/03/26(日) 21:11:54.02 ID:DeCVSWGu
そういうのも馬鹿っぽいよ。中学生か。
問題なのは言ってることが正しいかどうか、それだけ。
長文かどうかなんてそれとまったく関係がない。
彼はトンチンカンな勘違いをしてるから馬鹿にされてるだけ。
720 :
2017/03/27(月) 00:01:17.74 ID:rNkb8v7V
日本語理解できないアホ?
頓珍漢なこと書く奴ってたいてい長文だろって話だぞ
721 :
2017/03/27(月) 00:14:45.53 ID:qUMQbQ0X
馬鹿な奴だ。
馬鹿の世界ではきっとすべての事柄が三行以内の短文で表現できることになってるんだろうね。
己の無学を語るに落ちてるな
722 :
2017/03/27(月) 00:18:01.70 ID:rNkb8v7V
誰もまともなこと書く奴が長文ではないって言ってないんだが w
逆とか裏とかを理解してないのってプログラマーとして致命的じゃね?
723 :
2017/03/27(月) 00:19:42.90 ID:wneB9bMR
じゃあ一行で。スレタイ読め。
724 :
2017/03/27(月) 04:02:24.71 ID:UZsp8jX5
>>716
せっかくなので教えて欲しい
ちょっと考えたけど、やっぱりMaximumとMinimumがValueの変換中に変わるときとかが結構めんどくさい
あと、オーナードローや継承が安全にできることも必要か

プログレスバーのValueだけどかならともかく、コントロール全部をスレッドセーフにとかは非現実的なんじゃないか?
実際近年やってるところは少し調べた限り無いし
725 :
デフォルトの名無しさん
2017/03/27(月) 04:51:00.01 ID:FSqhbRGK
>>714
誰も触れてくれなくて草
726 :
2017/03/27(月) 05:02:30.31 ID:rNkb8v7V
>>723
>>700 に言えよ w
727 :
2017/03/27(月) 14:11:21.66 ID:H4MLQPNT
>>725
まあ正直今時Rxかよwwwwww
と草生えるからな
保守案件かも知らんが御愁傷様だ
728 :
2017/03/27(月) 15:09:08.98 ID:OggmZorO
そもそもRxって今は.NETの一部じゃなくてサード扱いだからな
知ってるのが当然みたいに言われても困る
.NET Fx以外の個別のライブラリについてはスレ違い
729 :
2017/03/27(月) 22:59:41.60 ID:ty5ByWfa
>>690
スタティックおじさんって誰よ?
730 :
2017/03/27(月) 23:14:42.86 ID:53TkDvRN
スタティックジジバンドのリーダーだよ
知らなかったのか
731 :
2017/03/27(月) 23:28:21.19 ID:c1Kh3EUH
もう今ならスタティックの悪い使い方を知ってるほうがおじさんな気がする……
732 :
2017/03/27(月) 23:52:27.87 ID:dYBhOZra
性的
733 :
デフォルトの名無しさん
2017/03/28(火) 07:20:39.72 ID:1WRXezaS
>>712
不二痛のノンプログラミングツールの
販促で 銀の弾丸を求めて とか
書いてあったの思い出した

あんな大手企業がスゲー認識してるなと思った
734 :
デフォルトの名無しさん
2017/03/28(火) 08:08:28.90 ID:W2JaqSVc
ラズパイでMVCのwebアプリって動かせますか?
735 :
2017/03/28(火) 16:32:12.10 ID:WR7Bj+dr
Windowsがまともに動きゃ動くだろ
258KB

新着レスの表示

★スマホ版★■掲示板に戻る■全部前100次100最新50

名前:E-mail: