C#, C♯, C#相談室 Part92 [無断転載禁止]©5ch.io
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2017/01/28(土) 16:46:53.58ID:op86qfG/http://www.visualstudio.com/downloads/
■コードを貼る場合はこちら
http://ideone.com/
■前スレ
C#, C♯, C#相談室 Part91
http://echo.2ch.net/test/read.cgi/tech/1467211515/
■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
0002デフォルトの名無しさん
2017/01/28(土) 16:47:59.00ID: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/
0003デフォルトの名無しさん
2017/01/28(土) 20:11:01.67ID:op86qfG/>>2に追加
C#, C♯, C#相談室 Part91
http://echo.2ch.net/test/read.cgi/tech/1467142749/
0004デフォルトの名無しさん
2017/01/29(日) 09:06:59.65ID:yBayvk760005デフォルトの名無しさん
2017/01/30(月) 06:23:24.90ID:pve8veDd0006デフォルトの名無しさん
2017/01/30(月) 07:26:13.95ID:tWAIhpxBC#でCOBOLみたいなコード垂れ流されるよりはマシじゃね?
0007デフォルトの名無しさん
2017/01/30(月) 13:37:08.05ID:aat2bJqhでもまぁDB内に閉じた処理なら長い処理でも
ストアドでいいと思うけどな
0008デフォルトの名無しさん
2017/01/30(月) 17:43:50.02ID:N6dz8FOe0009デフォルトの名無しさん
2017/01/30(月) 23:35:25.12ID:pve8veDd0010デフォルトの名無しさん
2017/01/31(火) 10:33:19.74ID:OaREUEOV0011デフォルトの名無しさん
2017/01/31(火) 14:32:45.02ID:tcQh4bsA0012デフォルトの名無しさん
2017/02/01(水) 00:11:53.74ID:rMgcMaj2また、linuxで.NET Coreの開発にすればライセンスは何も気にしなくていいものなのでしょうか
いまいち良くわかっていないので変な質問でしたらすみません
0013デフォルトの名無しさん
2017/02/01(水) 00:55:27.94ID:SIRn8MTv0014デフォルトの名無しさん
2017/02/01(水) 00:59:00.68ID:GoSmMZCVスレチ
0015デフォルトの名無しさん
2017/02/01(水) 01:44:48.27ID:wmVXAizRその規模のASP.NET MVCのサーバーをWindowsのクライアントOSで構築して運用すると明確なライセンス違反になる。
サーバーライセンスとCALをケチるなら、Linuxで.NET Core+ASP.NET Core+WEBサーバー。
0016デフォルトの名無しさん
2017/02/01(水) 07:23:50.51ID:/3Lab+YmWindows Serverも時間課金で使えるよ
0017デフォルトの名無しさん
2017/02/01(水) 07:35:30.80ID:QtOB6vhPVSCodeじゃまだ開発しにくいよインテリセンスイマイチだし
0018デフォルトの名無しさん
2017/02/01(水) 08:19:50.66ID:y670B3SoEditionによるだろ
0019デフォルトの名無しさん
2017/02/01(水) 08:23:46.42ID:SIRn8MTvWindows ServerでないWindowsをサーバーとして使い、かつ、20台以上から同時接続されるならそれはライセンス違反
0020デフォルトの名無しさん
2017/02/01(水) 12:00:03.24ID:+pDV2e5Z0021デフォルトの名無しさん
2017/02/01(水) 14:06:30.13ID:UvWC25bF私なりに色々なサイトから情報を集めてサンプルのメソッドを作ったのですが、成果物が思ったように出力できません。
どこが悪いかもわからず…困っております。
どなたか、このコードのどこに問題があって正常に表示されないのかご教示いただけないでしょうか。
【コード】
http://ideone.com/20PQG1
【その他資料】
http://upup.bz/j/my76880EYEYtgYgvhYE8CIw.png
【背景】
DirectShowでMP4動画の任意の位置の静止画を取得したい。DirectShowのサンプルフィルタのDumpFilterを使用し、IMediaSampleからダンプファイルを取得し、NV12からRGBに変換したいのだがうまくいかない・・・
お手数をお掛けしますが、何卒よろしくお願いします。
0022デフォルトの名無しさん
2017/02/01(水) 14:49:28.30ID:jnCvpXDY横方向は色が連続してるから、wが絡んだインデックスの計算で誤りがあんじゃね
002321
2017/02/01(水) 14:57:10.29ID:UvWC25bF凡ミスでした・・・・
var y = nv12Binary[h * width + h + cnt];
ではなくて、
var y = nv12Binary[h * width + w + cnt];
でした・・・・
すいませんお騒がせしました;w;
0024デフォルトの名無しさん
2017/02/01(水) 18:32:14.02ID:fkh8yjaMだからスレチ
0025デフォルトの名無しさん
2017/02/01(水) 19:46:14.74ID:W7n/VPVlスレチの質問すみませんでした
レスして頂いた皆さんありがとうございました
参考意見助かりました
0026デフォルトの名無しさん
2017/02/01(水) 23:00:42.87ID:ekCEdBskだって、DBエンジンは自動的にマルチタスク処理してくれるのに、別言語で処理するってことはシングルスレッド化するんだから
それにSQLは長くても、うまければむしろ読みやすく書ける(手続型言語より短いステップでシンプルに書ける場合が多い)
ただし頭の中に複数のマス目をイメージできない人が読むと呪文に見えるらしい
常に低レベルなプログラマに合わせて標準化する利点はあるだろうけど
0027デフォルトの名無しさん
2017/02/01(水) 23:29:02.19ID:Q5WgQ/3w100行超えたらなんか致命的にやらかしてるって疑った方がいい
0028デフォルトの名無しさん
2017/02/01(水) 23:45:22.94ID:tYeJxlUS0029デフォルトの名無しさん
2017/02/01(水) 23:47:28.74ID:r1Eq5mSG0030デフォルトの名無しさん
2017/02/02(木) 00:06:00.36ID:335RX4F50031デフォルトの名無しさん
2017/02/02(木) 00:22:55.82ID:NP4cqTts0032デフォルトの名無しさん
2017/02/02(木) 00:33:35.95ID:Xhr9HRot0033デフォルトの名無しさん
2017/02/02(木) 00:38:43.68ID:jMAutYAP問題は、4つも5つもくっつけて集計したものを更に集計ている呪文のようなViewだな
「誰がこんなもの作ったんだよ」と、過去の自分に説教したくなることが偶にあるだろ
0034デフォルトの名無しさん
2017/02/02(木) 01:06:08.80ID:mPNRvOCDhttps://wiki.postgresql.org/wiki/Mandelbrot_set
0035デフォルトの名無しさん
2017/02/02(木) 04:14:19.22ID:gxIOcfswselect a,
b,
d,
....などはよくある行数稼ぎw
0036デフォルトの名無しさん
2017/02/02(木) 11:36:33.30ID:K/b9EIy40037デフォルトの名無しさん
2017/02/02(木) 22:58:09.73ID:JuktWcDi初心者って集計を嫌うよね
集計を覚えるとSQLの表現力がグッと上がるのにもったいない
0038デフォルトの名無しさん
2017/02/02(木) 22:59:25.89ID:cdo4XHzT0039デフォルトの名無しさん
2017/02/04(土) 16:36:50.15ID:sbknHPFF何か良い方法は無いものでしょうか。
0040デフォルトの名無しさん
2017/02/04(土) 16:45:50.00ID:atHQASm/なぜ高速に取得したいの?
どういうアプリケーションを想定?
エクスプローラ?
0041デフォルトの名無しさん
2017/02/04(土) 16:49:01.93ID:sbknHPFFはい。そのようなものです。
0042デフォルトの名無しさん
2017/02/04(土) 16:52:42.09ID:94H9RTyk0043デフォルトの名無しさん
2017/02/04(土) 16:53:28.40ID:ypmLJyxS0044デフォルトの名無しさん
2017/02/04(土) 17:03:20.16ID:atHQASm/0045デフォルトの名無しさん
2017/02/04(土) 17:33:34.62ID:sbknHPFFDirectoryInfoで速くなりました。ありがとうございます!
0046デフォルトの名無しさん
2017/02/04(土) 21:24:06.70ID:znmRetLnこういう処理はどれが正解って訳じゃないけど、見通しがついてよかったぬー
0047デフォルトの名無しさん
2017/02/04(土) 22:20:54.73ID:SpK5IAIQ0048デフォルトの名無しさん
2017/02/05(日) 00:02:27.35ID:PGIZ+KFZGJ!!
0049デフォルトの名無しさん
2017/02/05(日) 13:44:40.26ID:jpxF0hW7誰かが何らかのオブジェクトをlockしているかどうか知る方法はありますか?
if(IsLocked(obj)){
}else{
}
みたいな処理をしたいのですが。
0050デフォルトの名無しさん
2017/02/05(日) 13:51:41.71ID:QLCXp5gVMonitor.IsEntered(obj)とか?
0051デフォルトの名無しさん
2017/02/05(日) 14:09:45.29ID:PGIZ+KFZlock は System.Threading.Monitor クラスを使うように展開されるみたいだからこいつの TryEnter( ) とか使えばいいんじゃね?
http://ufcpp.net/study/csharp/sp_thread.html
0052デフォルトの名無しさん
2017/02/05(日) 14:22:39.19ID:jpxF0hW7Monitor.TryEnterで上手く出来ました。
ありがとうございました。
0053デフォルトの名無しさん
2017/02/14(火) 20:20:16.10ID:9KVRWgtpsubscribeした時点でまだ一度もonNextをしていなければonNextするまでコールバックを呼ばず、
一度でもonNextされていれば最後の値をコールバックに渡す感じです
0054デフォルトの名無しさん
2017/02/14(火) 20:49:20.54ID:pU7mkQJzRxなんか使わずに単純に最後の値を変数に入れといてそれを読めばいいのでは
0055デフォルトの名無しさん
2017/02/14(火) 21:07:29.79ID:9KVRWgtp変更通知…
rxが楽
0056デフォルトの名無しさん
2017/02/14(火) 23:32:57.72ID:sZcA1Jduまったく、作れません。
軽く何かを教えてくださいお願いします。
0057デフォルトの名無しさん
2017/02/14(火) 23:42:59.54ID:jF3NlhZ40058デフォルトの名無しさん
2017/02/15(水) 13:44:40.41ID:6MEGowR3Unityちゃんでもいじってみ
0059デフォルトの名無しさん
2017/02/15(水) 14:22:29.43ID:fYC4NdgNc#でdatagridviewを使っていて、headertextを2行にしたいのですが、方法を教えてください
0060デフォルトの名無しさん
2017/02/15(水) 14:38:33.74ID:IaTHaUdU改行コード入れればいいんじゃないか?
0061デフォルトの名無しさん
2017/02/15(水) 18:06:53.63ID:fYC4NdgN0062デフォルトの名無しさん
2017/02/15(水) 18:08:07.82ID:fYC4NdgNGUIからだと入れることができませんでしたが、
コードから直接入れることができたので、
コードから入れました。
0063デフォルトの名無しさん
2017/02/15(水) 19:46:34.50ID:IaTHaUdU俺も玉にはいい事言うよね。
0064デフォルトの名無しさん
2017/02/16(木) 19:46:27.37ID:3MqMajas0065デフォルトの名無しさん
2017/02/16(木) 20:07:17.83ID:yaBP1ZBT実装がめんどくさければGrapeCityのComponentOne買えばOK
0066デフォルトの名無しさん
2017/02/16(木) 20:12:31.55ID:C8TUip5w0067デフォルトの名無しさん
2017/02/16(木) 20:34:36.40ID:Dw9/ZFHg検索くらいしろよ
0068デフォルトの名無しさん
2017/02/16(木) 22:06:01.73ID:x6Naqncrこの辺りはformアプリは苦手
0069デフォルトの名無しさん
2017/02/16(木) 22:16:06.79ID:7GOAgwDKクリックイベントは大丈夫なはずなんだけど、
開くや新規作成 検索とか、探してたら、
開くだけで、8行ぐらいコードが必要なんだけど?
1行で呼び出す、コードとか無いの?
0070デフォルトの名無しさん
2017/02/16(木) 22:32:47.75ID:/R92/z+7まとめたいならこれ
Process.Start("notepad.exe");
0071デフォルトの名無しさん
2017/02/16(木) 23:25:56.09ID:7GOAgwDKどうも
初心者だから、妥協しようか迷ってたんだけど
当面はそちらで行かせて貰う
0072デフォルトの名無しさん
2017/02/16(木) 23:30:09.61ID:Dw9/ZFHg0073デフォルトの名無しさん
2017/02/17(金) 08:32:40.56ID:MUR4QGaeありがとうござます
助かりました。調べて頑張ってみます
0074デフォルトの名無しさん
2017/02/17(金) 08:33:43.24ID:MUR4QGaeすみません。抜けてました。レスありがとうございます
0075デフォルトの名無しさん
2017/02/18(土) 11:09:32.83ID:cWaaGg3Vcreate tabale hoge ([hage] text) → "create table hoge " +"([hage] text)";
0076デフォルトの名無しさん
2017/02/18(土) 11:15:39.58ID:MSmTE/VQ逐語的リテラル文字列
あとは補完文字列なんてのもあるが、SQLインジェクションには注意
0077デフォルトの名無しさん
2017/02/18(土) 12:10:46.00ID:52dA0McO> create tabale hoge ([hage] text) → "create table hoge " +"([hage] text)";
変換規則がわからん
単にこれだけをやりたいだけなら正規表現でもできそうだが
0078デフォルトの名無しさん
2017/02/18(土) 12:17:17.23ID:rCytLmz9スクリプトファイルの読み込みじゃいかんのか?
0079デフォルトの名無しさん
2017/02/18(土) 13:26:45.21ID:oikc5OUx矢印が逆じゃあないの?
最終的には連結した一つの文字列にしたいんだろ?
0080デフォルトの名無しさん
2017/02/18(土) 14:07:01.72ID:uqTw3F8T作れば
0081デフォルトの名無しさん
2017/02/18(土) 14:25:52.73ID:XkQA6zD3そのサンプルだと両端にダブルクオーテーション付けて最後にセミコロン付けるだけでよくね?
わざわざ文字列を分割する必要性無いと思うんだけども
0082デフォルトの名無しさん
2017/02/18(土) 18:29:25.18ID:367vvwff例えば半分から上は黒で下は白のようなものです。
現状panelを使ってそのように見せているんですが、いい方法あったら教えてください
0083デフォルトの名無しさん
2017/02/18(土) 19:51:04.90ID:d0hejx530084デフォルトの名無しさん
2017/02/18(土) 19:58:44.57ID:M4R1Zp6s無理やりオーナードローかform捨てるしかないだろな
0085デフォルトの名無しさん
2017/02/18(土) 20:00:20.55ID:n/aPn98Bなんの目的があるかわからん。
色が分かれていても、別のものを表示している訳ではないの?
0086デフォルトの名無しさん
2017/02/18(土) 20:24:06.51ID:jkd676sQ0087デフォルトの名無しさん
2017/02/18(土) 20:44:32.17ID:n5oO6gvOフォーム(パネル)の背景設定でもいいけど
>>86
パネル以外だと上にコントロール重ねたら下が見えなくならないかな
008875
2017/02/18(土) 22:28:19.09ID:cWaaGg3Vツールが有ったら使いたいなと思い聞いてみました
他のDBだと、ソースにテーブル定義を書くなんて無いからちょっと混乱させちまいましたね
面倒でも手でやるのが一番早そうだ
0089デフォルトの名無しさん
2017/02/18(土) 22:56:35.91ID:XkQA6zD30090デフォルトの名無しさん
2017/02/18(土) 23:07:16.07ID:rCytLmz9だからファイル詠み込めよ
なんで動的sqlでもないのにコードに書くんだよ
0091デフォルトの名無しさん
2017/02/19(日) 00:04:30.14ID:TkpsmKBXサイズ変えないならFormのBackgroundImageに
色分けしたBitmap貼るとかいいんでないの?
好きな背景にもできるぞ
0092デフォルトの名無しさん
2017/02/19(日) 00:14:46.31ID:PjLfAeqZ説明補足すると、メッセージボックスを自作していて、メッセージボックスのような背景を作りたかったんです。
0093デフォルトの名無しさん
2017/02/19(日) 07:54:46.40ID:ngALvOwB> 他のDBだと、ソースにテーブル定義を書くなんて無いから
SQL-SERVER 使ってるけど一時テーブル作ったりで普通にあるけど?
0094デフォルトの名無しさん
2017/02/19(日) 08:47:37.68ID:iOIH+Q4P似たようなことはDock=Top, AutoSize=FalseとしたLabelでよくやる。
0095デフォルトの名無しさん
2017/02/19(日) 10:11:31.31ID:93wksAh/sqliteでEF使うと致命的に遅いから無理ですわ
>>90
何故に喧嘩腰?
>>93
俺はあまり一時テーブルに頼らずにviewでなんとかするのが好きだから、そこまで思い当たりませんでしたわ
たしかに一時テーブルが正義の場合だって少なくないだろうが
0096デフォルトの名無しさん
2017/02/19(日) 10:23:29.24ID:TZ/mXSM20097デフォルトの名無しさん
2017/02/19(日) 10:32:03.79ID:kiv7S6GKそう言って糞長いストアド作りまくった挙句に保守できなくなった案件があったと、DBコンサルが笑い話のネタにしてたな
一時テーブル=害悪はどこの文化なんだろ
0098デフォルトの名無しさん
2017/02/19(日) 10:41:13.77ID:98lVckOm0099デフォルトの名無しさん
2017/02/19(日) 10:41:38.21ID:7Avz8j0c一時テーブルかストアドかはそれほど重要ではない
0100デフォルトの名無しさん
2017/02/19(日) 11:34:46.47ID:gpMreema一時テーブルとビューとかストアドとは使いどころが違うと思うんだが何故に比較してるんだろ?
>>98
セッション内でのみ有効な一時テーブルとか使ったことないの?
0101デフォルトの名無しさん
2017/02/19(日) 11:42:57.76ID:98lVckOmあったあった。そう言われると1度だけ。
あのときは言われたとおりやっただけだから忘れてた。
0102デフォルトの名無しさん
2017/02/19(日) 11:52:35.81ID:TZ/mXSM2一時テーブルなんてなくてもクソ長くならないし
そもそもストアドなんて保守性の低いものをむやみに使う必要もない
リレーショナルデータベースとは何か勉強しなおしてこい
0103デフォルトの名無しさん
2017/02/19(日) 12:29:51.72ID:LQaPeC4X0104デフォルトの名無しさん
2017/02/19(日) 12:40:55.60ID:zEbYND7D結局は自分の慣れ親しんだ領域に持って行ってやるのがその人にとってはベストなんだよ
どうせ保守するのは自分じゃないし自社ですらないことも多いからその場でその人員でできるベストを採用しなきゃビジネスとして悪手
流行りや有名コンサルに乗せられて意識たかそうなコードをメンバーのスキルもないのに書こうとする
これが最悪の選択肢
列挙型とswitchで分岐しまくるほうがメンバーにとって理解しやすいならそれがいい
そういう現場では多態性を利用したコードは生産性が落ちる
一時テーブルとストアドも同じでメンバーが理解しやすいというなら保守を受注する会社あるいは保守担当の同僚に心の中で懺悔しつつ採用すべきだ
0105デフォルトの名無しさん
2017/02/19(日) 12:43:22.84ID:OMGCNA7z0106デフォルトの名無しさん
2017/02/19(日) 12:55:43.81ID:LQaPeC4X>テーブルがシーケンシャルファイルにしか見えないCOBOL世代の人なんかは一時テーブルとかストアド好きだよね
新しい世代の人にはどう見えるの?
dbの操作はどういう手法が普通なの?
0107デフォルトの名無しさん
2017/02/19(日) 12:58:51.41ID:7Avz8j0c大抵の処理は積極的にJOINを使えば1パスで済ませることもできる
0108デフォルトの名無しさん
2017/02/19(日) 13:05:26.33ID:NYetswUUORMを活用してほとんどC#の中でやってしまうスタイルもある
0109デフォルトの名無しさん
2017/02/19(日) 13:10:17.55ID:93wksAh/だから10倍遅くなるEFはあまり好きじゃない
エントリーみたいなものならEF使ったほうが良いとは思うんだけどね
0110デフォルトの名無しさん
2017/02/19(日) 13:13:51.67ID:LQaPeC4Xそのormというのは75みたいなsql文を実行するんですか?
0111デフォルトの名無しさん
2017/02/19(日) 14:09:14.55ID:zEbYND7D別に新しくもなんともないけど普通は行あるいは命題の集合に見える
操作は当然DMLで行う(データ操作言語だからね)
0112デフォルトの名無しさん
2017/02/19(日) 14:24:55.62ID:7Avz8j0c処理を行単位ではなくテーブルからテーブルへの射影と考える粗粒度なバッチ処理は
分散処理や糞遅いスクリプト言語との相性がいい
0113デフォルトの名無しさん
2017/02/19(日) 15:04:35.19ID:rTEdd30o0114デフォルトの名無しさん
2017/02/19(日) 15:09:45.51ID:MFFmnvDE0115デフォルトの名無しさん
2017/02/19(日) 15:11:31.44ID:OMGCNA7z0116デフォルトの名無しさん
2017/02/19(日) 16:48:08.70ID:LQaPeC4XDapperと言うのを調べてみたのですが生のSQLを実行するのと
何が違うのか良く分かりません。Dapperと言うのを使う場合でも
SQL文を実行するんですよね?
何が違うんですか?
0117デフォルトの名無しさん
2017/02/19(日) 16:55:48.71ID:JyXmk48jDapperは主にクエリ結果をオブジェクトにマッピングするためのライブラリ
Dapperを使わない場合でもDataTableやDataReaderをそのまま使わずに型安全なオブジェクトに変換してから処理をするだろう?
それを楽に書きたい人のためのものだよ
0118デフォルトの名無しさん
2017/02/19(日) 17:11:25.76ID:LQaPeC4XDapperを使わない場合ですが、DataTableに読み取ったあと、カラムの型は自分では分かっているので順番にデータを取り出して、
その型にキャストして読み出すのはダメですか?
それとも私何か勘違いしていますか?
0119デフォルトの名無しさん
2017/02/19(日) 18:11:13.51ID:7Avz8j0cそれを自動でやってくれるのがDapper
0120デフォルトの名無しさん
2017/02/19(日) 20:35:23.16ID:LQaPeC4Xなるほど。ありがとうございました。
0121デフォルトの名無しさん
2017/02/19(日) 20:41:40.94ID:+HIMLleH0122デフォルトの名無しさん
2017/02/19(日) 21:16:27.26ID:PjLfAeqZなるほど、ありがとうございます
0123デフォルトの名無しさん
2017/02/19(日) 22:55:47.64ID:L+LZlPn0↓
10:40
https://www.youtube.com/watch?v=WTdY7h129Mk
https://www.youtube.com/watch?v=8R0luOy8ce8
0124デフォルトの名無しさん
2017/02/22(水) 23:33:37.07ID:yhciyQanなにかの処理中にフォームなどを起動させておく、以下の処理について。
while(xxx.HasExited == false) //xxxはインスタンス
{
Applcation.DoEvents();
System.Threading.Thread.Sleep(200)
}
この処理はwhile文で回していますが、DoEventsとSleepは、なにか処理が行われるたびに呼び出されると思ってよいのでしょうか。
起動中に
なにか処理する→0.2秒とまる→なにか処理する→0.2秒とまる→… みたいな。
またこのSleepは、現在起動中の処理を一時的に止めると思ってよいでしょうか。
ご教授お願いします。
0125デフォルトの名無しさん
2017/02/22(水) 23:52:38.18ID:d6y2GeKl何を見たのか誰に教えてもらったのか知らないが、まずはそんなクソコードは忘れよう
DoEventsはVB時代の遺物であり、使用は推奨されない
今時は時間のかかる処理をGUIをフリーズさせることなく実行したい時は
await Task.Run(() => {
何かの処理
});
と書く
0126デフォルトの名無しさん
2017/02/22(水) 23:56:30.83ID:huuz+PNnつか、今どきDoEventsとか存在を忘れたほうがいいんじゃないかねえ
0127デフォルトの名無しさん
2017/02/22(水) 23:57:19.06ID:954rYVtdそのセットは別スレッドの入力待ちのテンプレ
・・・Application.DoEvents()って必要だったっけ?w
それはあいまいだけど、キー入力待ちか外部exeからの返り値待ちで使われている
0128デフォルトの名無しさん
2017/02/23(木) 01:32:48.34ID:zQR1bKXh最近は推奨されないんですね。
理解としては>127さんのとおり、イベント発生したらDoEventsが実行されると思ってよいのでしょうか。
0129デフォルトの名無しさん
2017/02/23(木) 01:40:04.09ID:l1pCIGHbDoEventsが実行された時に貯まってるイベントを処理する
0130デフォルトの名無しさん
2017/02/23(木) 14:52:23.00ID:daVfofu2普段はcentOS+nginxでJavascriptとRuby/PHP、一部バッチにC#って感じでWebサービス開発してる。
リクエスト毎にサーバ側でC#アプリケーションを引数添えて実行して、戻り値を取得するのは出来るんだけど・・ 。
とても実用には耐えなさそうだし、Webホストとか使うのかと思ったがわからず困ってる。
0131デフォルトの名無しさん
2017/02/23(木) 15:24:59.57ID:0G6iEay4そう思うからには理由あるんでしょ。そこ解決すればいい
0132デフォルトの名無しさん
2017/02/23(木) 19:34:00.47ID:osMc+8cA0133デフォルトの名無しさん
2017/02/23(木) 20:12:55.31ID:OJm2Ca4N0134デフォルトの名無しさん
2017/02/23(木) 20:13:27.60ID:u2e4Httf0135デフォルトの名無しさん
2017/02/24(金) 01:33:54.44ID:eab+BK9OASP.NET Web API
0136130
2017/02/24(金) 11:37:39.67ID:dB0UjfyS毎回プロセス作るのはオーバーヘッドでかいから、常駐型になるのかな?
その時のやり取りの仕方をSendMessageだったり、ファイル常時監視してキューファイル投げるとかしか知らないんだ。
WebサービスとかASP.NETで調べてたら、やっぱりC#としての回答はこれなのかなって気がしてきたわ。
個人的な宗教上の理由で避けたかったけど、検討してみる。。ありがとう。
0137デフォルトの名無しさん
2017/02/24(金) 12:36:59.04ID:YZGHPd2K> 毎回プロセス作るのはオーバーヘッドでかいから
それが問題になるようなサイトなのか?
0138デフォルトの名無しさん
2017/02/24(金) 15:11:03.84ID:nwaeFCKh0139デフォルトの名無しさん
2017/02/24(金) 15:50:26.31ID:pDljuoBB0140デフォルトの名無しさん
2017/02/24(金) 16:13:46.51ID:0wjaf/O/独習C#はもう読み終えたので基本的なことはわかっていると思います。
0141デフォルトの名無しさん
2017/02/24(金) 16:41:06.62ID:nwaeFCKh早く遊びたいです。次はどんな攻略本読んだらいいでしょう?
ゲームじゃこういうのないのに、プログラミングじゃ多いよな
基本わかったなら何故始めないw
0142デフォルトの名無しさん
2017/02/24(金) 16:48:06.10ID:0wjaf/O/独習C#ではWindowsフォームの説明がいっさいなかったので、コンソールアプリしか作れないのです。
フォームに特化した解説書かサイトがあればと思い質問しました。
0143デフォルトの名無しさん
2017/02/24(金) 17:08:33.80ID:pp6ofCfh就活で役立てたいのならマ板に行って聞いたら?
趣味でやっているのなら向いていない
0144デフォルトの名無しさん
2017/02/24(金) 17:45:41.09ID:LZq2xNz5javaのswingで同じこと経験した
0145デフォルトの名無しさん
2017/02/24(金) 17:57:21.18ID:m8N/tmCl0146デフォルトの名無しさん
2017/02/24(金) 18:16:02.45ID:2lTW2QAE0147デフォルトの名無しさん
2017/02/24(金) 18:26:49.22ID:2HxY6Dp60148デフォルトの名無しさん
2017/02/24(金) 18:27:42.45ID:0tWWIcvC悪かったな、読んでるよ。
0149デフォルトの名無しさん
2017/02/24(金) 18:44:16.34ID:ZTtaAqVi0150デフォルトの名無しさん
2017/02/24(金) 18:44:46.20ID:WmxnDnjh0151デフォルトの名無しさん
2017/02/24(金) 18:47:19.91ID:JpyYS2dNGUIはイベントベースから最初の最初は戸惑うだろ。
(どこにコードを書くのかわからない)
ただ、1回やれば分かるが。
で、そのレベルならMDSNのチュートリアルで十分だと思うよ。
https://msdn.microsoft.com/ja-jp/library/dd492171.aspx
これで駄目なようなら向いてないってのは事実だよ。
本買って本格的に学ぶ内容ではない。
(これはWPFだけどどうせ違いも分かってないでしょ。
古いバージョンのを探せばフォームのチュートリアルもあるはずだし)
0152デフォルトの名無しさん
2017/02/24(金) 18:49:16.49ID:CB55ejbI0153デフォルトの名無しさん
2017/02/24(金) 20:32:10.23ID:DIkdt+H/0154デフォルトの名無しさん
2017/02/24(金) 20:55:52.19ID:2lTW2QAEttp://wiz.came.ac/blog/2009/09/post-2.html
0155デフォルトの名無しさん
2017/02/24(金) 21:52:47.57ID:KBFO5tFR少なくとも日本の大半の職業プログラマには無理
悲しいね
0156デフォルトの名無しさん
2017/02/24(金) 22:19:08.66ID:ezpXAtZb0157デフォルトの名無しさん
2017/02/24(金) 23:22:45.93ID:WdGON0E4C++長かったからC#楽勝と思ったけどラムダ式が読めない。
今更独習C#はと思ったが読んでよかった。
0158デフォルトの名無しさん
2017/02/24(金) 23:40:01.37ID:nwaeFCKh言語を学びたいのか、プログラミングしたいのか、だな
0159デフォルトの名無しさん
2017/02/25(土) 00:07:49.88ID:Hh3bBfOP登場してから60年以上たってもLISPが普及してないのが答え。いらん。
0160デフォルトの名無しさん
2017/02/25(土) 00:27:59.19ID:N0RLU+6xただし使わなくても書けるし、いちいちクラスにしてしまう手もあるし、どうにでもなるのも事実だが。
本で学ぶことが必要なのではなくて、いろいろな道具があることを知るのが重要。
今時の言語は全てラムダ使えるんだから、他言語少しでも学んでいればラムダは使えたはず。
その点、C++は古い言語だったのも事実。
ただどう見ても142はそれ以前だろ。
そもそもWPF(というよりHTML)やったほうがいいんじゃないかと思うし。
0161デフォルトの名無しさん
2017/02/25(土) 00:54:21.20ID:N9ovtMNDFunc、Action、ラムダでスパッと実装したい
0162デフォルトの名無しさん
2017/02/25(土) 00:58:33.11ID:Jm21gNIWスパっと書くアルゴリズム、
スパッと書くクラス設計・・・
いつまで経ってもプログラミング始めれず勉強の毎日だぞ
0163デフォルトの名無しさん
2017/02/25(土) 01:18:47.75ID:N0RLU+6xあのデタラメッぷりには最初戸惑ったが、慣れてしまうと相当いい。
ラムダに慣れたいだけなら、スクリプト言語系(JavaScript/Python/Ruby)がマジでいいと思う。
C#のデリゲートって使う前にいろいろ準備が要って面倒だし、
あるのを知ってても使う気にならないでしょ。
俺もVC++しか使ってないころは全く興味なかった。
でもJavaScriptでお気楽にラムダ使いまくった後は、VC++でも使いたくなる。
だってそのほうが楽だと知ってしまったから。
ただ、いちいち型を合わせないといけないのが面倒だったりする。
0164デフォルトの名無しさん
2017/02/25(土) 01:26:56.21ID:N9ovtMND0165デフォルトの名無しさん
2017/02/25(土) 01:40:08.63ID:N0RLU+6x0166デフォルトの名無しさん
2017/02/25(土) 01:45:57.08ID:Hh3bBfOP0167デフォルトの名無しさん
2017/02/25(土) 01:46:38.10ID:FbflVc2K0168デフォルトの名無しさん
2017/02/25(土) 02:39:26.60ID:ByE41wZl但し、WPFの本はない、あるけど使えないと云うか価格に見合ってない。いい本あったら教えてもらいたい。
0169デフォルトの名無しさん
2017/02/25(土) 07:34:49.62ID:JxD18xMy0170デフォルトの名無しさん
2017/02/25(土) 07:54:43.41ID:fA+zhTaO0171デフォルトの名無しさん
2017/02/25(土) 08:03:07.91ID:vx9FCuam今のJavaScriptは (x, y) => x + y のようなC#と全く同じ構文の(というかC#をそのまま真似したんだろうけど)ラムダが使えるよ
もちろん従来の function(x, y) { return x + y; } でもいいし
0172デフォルトの名無しさん
2017/02/25(土) 10:39:52.17ID:TcOntMIt0173デフォルトの名無しさん
2017/02/25(土) 12:04:24.91ID:N0RLU+6xインテリセンスは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
見りゃ分かるが具しか書いてない。だから論理的にこれ以上お手軽なのはない。
(短縮記法は出来るがあれはタイプ数がケチれるだけ)
ついでに階層もクラスも関数で記述するというデタラメッぷり。
だからそもそも「ラムダなんて使いません(キリッ」みたいなことが出来ない。
(階層がラムダ)
知らなければ意味不明だと思うが、とにかくそういう世界だ。
その状況で慣れると、心理的な障壁が取り除かれる。
ラムダ嫌いって要するにこれだろうし。
0174デフォルトの名無しさん
2017/02/25(土) 12:12:40.17ID:TcOntMIt0175デフォルトの名無しさん
2017/02/25(土) 12:24:18.16ID:S4wbN3RDES6の策定にはMSも主導的な立場のメンバーとして当然参加してるし
0176デフォルトの名無しさん
2017/02/25(土) 12:26:33.18ID:IfKbzrsTでもこんなの書かれたら初見で見破るの無理でしょ
var res = ((Func<int, int, bool>)((i, j) => i == j))(5, 3);
ラムダ嫌いはラムダが嫌いなんじゃなくて、読みにくいラムダが嫌いなんでしょ
「ラムダなんて使いません(キリッ」じゃなくて「読みにくいラムダなんて使いません(キリッ」なんだよ
0177デフォルトの名無しさん
2017/02/25(土) 12:31:25.09ID:N0RLU+6xあんなもん所詮慣れ。俺は従来のJavaScriptの構文でも苦労してない。
そしてラムダも所詮慣れ。慣れればどうって事は無い。(難しくは無い)
ただし使わなくても実装できるのは事実で、わざわざ慣れる必要があるかは微妙。
0178デフォルトの名無しさん
2017/02/25(土) 12:45:06.30ID:S4wbN3RD関数の即時評価はJSでは非常によく使われるテクニックだよ
C#のラムダなんて、本来の副作用がない使い方をするのがほとんどだから可愛いもんだ
JSではガンガン副作用書いていくから超複雑だよ
0179デフォルトの名無しさん
2017/02/25(土) 13:25:03.75ID:Hh3bBfOPパラダイムが違うものごっちゃにして何がしたいんだ?
やたらカタカナ使う田中康夫やルー大柴の日本語みたいなものだ。
0180デフォルトの名無しさん
2017/02/25(土) 13:29:41.99ID:N0RLU+6xそれは型情報を付加しようとしているから見た目複雑になる。
型情報が無い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含めた関数系一般に言える傾向なのかは定かではないが、
おかしな記述で余計複雑にする馬鹿、まさに「木を見て森を見ず」はよく見かける。
奴らは「木」つまり一箇所の記述を最小限にすることに異常にこだわり、
「森」つまり全体を最小限にすることを考えていない傾向がある。
だからラムダ(キリッな奴が出してくるコードが糞なことも多く、
これがラムダを知らない連中にとってラムダを学ぶ価値があるように見えない理由だと思う。
対してオブジェクト指向は「森」を「林」に小分けする手法だから、
オブジェクト指向をきちんと出来ている連中から見れば余計に馬鹿に見えてしまうし。
0181デフォルトの名無しさん
2017/02/25(土) 13:31:51.44ID:Hh3bBfOP0182デフォルトの名無しさん
2017/02/25(土) 14:43:31.03ID:Qzh8dVTLまあ、伝統的と云うか、平均以下のレベルに合わせたコーディング規約が幅をきかせているプロジェクトでは忌み嫌われる。
0183デフォルトの名無しさん
2017/02/25(土) 15:18:03.16ID:IvVV1H8Vそれ関数使わなくてもいい例だから
もうちょい違うのなかったかな
0184デフォルトの名無しさん
2017/02/25(土) 15:39:38.73ID:9TfgDVOx経験的にそういう人のコードが優れてるかっていうとそうでもない
同じような構造のループ処理を大量生産したり
try catch log出力を延々と全てのメソッドに書いたりする
0185デフォルトの名無しさん
2017/02/25(土) 15:44:53.00ID:3ZNX7OqZ今日のとんちきレス大賞
0186デフォルトの名無しさん
2017/02/25(土) 15:46:20.53ID:TcOntMIt長くなる時はエイリアス設定するとかにして
0187デフォルトの名無しさん
2017/02/25(土) 15:46:55.92ID:TcOntMItガイジかな?
0188デフォルトの名無しさん
2017/02/25(土) 16:24:58.90ID:N0RLU+6xつかそういう問題じゃない。C++なら例があるが。
> auto 型推論とラムダ関数を使用すると、コードをすばやく記述して、それを引き締め、より的確に把握することができます。
> https://msdn.microsoft.com/ja-jp/library/hh279654.aspx
この2つのコードで下のほうがいいと思えるかどうかだよ。
正直、俺にはどうでもいい範囲だよ、これは。
こんな局所的部分で活用(キリッしたところで大して意味が無い。
確かにコードは減るけど、バグる確率が減るわけじゃないでしょ。
そして関数型()の連中が出してくる「ラムダの優位性(キリッ」なコードはほぼ全てこの類であり、
巨大プログラムを分割して直接的に単純化する「オブジェクト指向」と比べて、訴求力に乏しい。
理由は簡単で、そもそもラムダは「糖衣構文」でしかないから。
実体は「関数ポインタ+変数」であり、
Cなら構造体ポインタを引数に取る関数、
C++なら関数オブジェクトまたはクラスで表現できる。
(見にくいが元々記述できる。これがストロウストラップがラムダ導入に反対していた理由だと聞いた)
だからJavaScriptの文法が関数=ラムダ=階層=クラスなのも自然ではあるし、
Rubyが匿名関数(ラムダ)を匿名クラスで表現するのもこのため。
結局、ラムダを導入したところで出来ることは増えず、本当の意味での「エレガント」なコードにはならない。
ところが関数型()の連中は「エレガント」=「短い」or「ラムダ使ってる」と勘違いしている馬鹿が多くて、
上記URLのコードなら「下側がイイ!」「下側じゃ無いと許さない!」とか言い出すからおかしくなる。
「自転車置き場の議論」と同じで、馬鹿なりに見える範囲で考えたんだろうが、所詮馬鹿でしかない。
プログラミングにおける「エレガント」は数学と同じで、
「こう考えればこんなに簡単に解けるんだ!」であり、
糖衣構文でしかないラムダは本質的には全く効果が無い。
ただし、俺自身も慣れる前はラムダを選択肢に入れていなかった=思考を狭めていた。
これはまずいので、通常の選択肢として考えられるほどには慣れておく必要はある。
ただ、それ以上の意味は無い。
0189デフォルトの名無しさん
2017/02/25(土) 16:25:31.63ID:N0RLU+6x出来ることが増えているので、直接的にもっと「エレガント」を探求できる。
以前話題になっていた拡張メソッドの継承もJavaScriptなら最初から出来る。
ただし、何でもかんでも出来ればいいものでもなく、馬鹿に使わせたら余計におかしくなるのも事実。
その点、C#はいいバランスを目指していていい。
ただしこの意味で「封印済み」の場所もあるから、
C++やJavaScript等「何でもあり系」言語に親しむのも悪くないと思う。
0190デフォルトの名無しさん
2017/02/25(土) 16:30:23.41ID:IvVV1H8Vほう? じゃ>>176のこのコードがどういう場合に有用なのか教えてくれ
>var res = ((Func<int, int, bool>)((i, j) => i == j))(5, 3);
0191デフォルトの名無しさん
2017/02/25(土) 16:39:02.64ID:TcOntMItC#とJSのラムダの比較の為に出しただけであって、有用なのかは今関係ない
0192デフォルトの名無しさん
2017/02/25(土) 16:39:23.68ID:3ZNX7OqZ誰も処理内容の話なんかしてないぞ
みんなはアメをくるむ包装紙の話をしてるのに君だけアメの味を話題にしてる
0193デフォルトの名無しさん
2017/02/25(土) 16:41:51.21ID:TcOntMIt0194デフォルトの名無しさん
2017/02/25(土) 17:09:31.56ID:fb/41uG4まじasp
0195デフォルトの名無しさん
2017/02/25(土) 17:21:54.68ID:WB0pRnLvでforeachするのは問題があるでしょうか。
やっぱりlockすべき?
0196デフォルトの名無しさん
2017/02/25(土) 17:22:56.07ID:N0RLU+6xコードを最小限にするためには
・型=なし
・多重継承=あり
・ダックタイピング=あり
がいい。この点JavaScriptは、型無し、多重継承は手動で可能、ダックタイピングあり、なので向いている。
一方C#は、型あり、多重継承禁止、ダックタイピングなし、なので
「コード量」よりは「きっちり書くこと」を目指しており、
「手抜き」が主な目的のラムダとどうにも相性が悪い。
ここでダックタイピングだけ導入しても余計に混乱すると思う。
つかね、C#って「一文字でもケチりたい」奴用の言語ではなくて、
「型なし言語では堅牢なアプリは作れない」と考える連中用の言語だし。
0197デフォルトの名無しさん
2017/02/25(土) 17:30:35.48ID:IvVV1H8V包装紙の不要な物を包装紙でくるんでこんな包装の仕方はダメじゃって言ってる人に
包装紙の良し悪しについて平然と議論しつづける神経のほうがわからんよ
0198デフォルトの名無しさん
2017/02/25(土) 17:43:27.22ID:Hh3bBfOP業務系で使われたいならシンタックスを増やすなって話だが、どうやら後者らしいので、c#はキティ用言語といえる。
0199デフォルトの名無しさん
2017/02/25(土) 18:38:47.74ID:ByE41wZllock不要に一票。
追加削除ないなら配列じゃダメなの。
0200デフォルトの名無しさん
2017/02/25(土) 18:53:44.75ID:ByE41wZlシンタックス変えてない。拡張だろ。
LInqなんか追加されてホント便利になってる。
0201デフォルトの名無しさん
2017/02/25(土) 19:22:21.24ID:FbflVc2Kめっちゃ読みづらい。
いやスペースがないせいだけどw
0202デフォルトの名無しさん
2017/02/25(土) 20:01:05.66ID:lRvoFyV9不要
もし後で変更する可能性があるならReaderWriterLockSlim使っとけばいい
0203デフォルトの名無しさん
2017/02/25(土) 20:48:05.07ID:kVUREvkVありがとう。
foreachによって実は内部的な変化が行われていたらまずいのではと
考えていました。
0204デフォルトの名無しさん
2017/02/25(土) 20:49:00.75ID:IvVV1H8VAsReadOnly()とか使って使う側が変更しないことを保証しといたら?
ImmutableList<T>を使うともっと堅い
0205デフォルトの名無しさん
2017/02/26(日) 03:14:38.88ID:0YrJqBhkお前の言う「ラムダの優位性(キリッ」をC#で言ってる人なんてそうそう見ないぞ
変にプログラミング言語一般のラムダについて述べるせいで論点がブレブレだ
0206デフォルトの名無しさん
2017/02/26(日) 04:03:21.89ID:0YrJqBhk初心者にjavascriptの関数が全てラムダみたいな誤解を与えかねない
>Rubyが匿名関数(ラムダ)を匿名クラスで表現するのもこのため。
Rubyの匿名関数(無名関数の方が一般的な呼び名だけど)は匿名クラス(無名クラスの方が一般的だけど)じゃなくて「Procオブジェクト」
0207デフォルトの名無しさん
2017/02/26(日) 10:41:00.28ID:/Q8k6Dmdてか、いい加減スレ違いでしょ、この話題。
0208デフォルトの名無しさん
2017/02/26(日) 11:19:59.83ID:TMS4+8Av式木はdynamicと関係あるだろ
ラムダ式はLINQのメソッド形式では必須
0209デフォルトの名無しさん
2017/02/26(日) 11:26:13.98ID:a7NPBA4e式木は意味的に匿名メソッドが式にならないからラムダ式が必須だよ
匿名メソッドで式にできるように言語拡張しても良いけどそれってラムダ式そのものだし
0210デフォルトの名無しさん
2017/02/26(日) 11:33:24.17ID:asTjjGDY等価じゃないぞ。
乱用してバグこしらえるパターンだな。
0211デフォルトの名無しさん
2017/02/26(日) 11:36:25.80ID:H7bo/69jfunctionだとself定義しないといけなくて面倒だけどアローは楽だよな
0212デフォルトの名無しさん
2017/02/26(日) 11:36:30.05ID:Q2GAsSXo0213デフォルトの名無しさん
2017/02/26(日) 11:44:07.89ID:LLZCcrhN式木はもともとdynamicとは全く関係ないよ
DLRプロジェクトで動的コンパイル用のASTが作られたが、System.Linq.Expressionsと被ってるということでそれを拡張する形で統合された
結局DLRは頓挫してコアの部分だけがCLRに導入され、そこに乗っかって実装されたのがdynamic
0214デフォルトの名無しさん
2017/02/26(日) 11:49:23.90ID:0YrJqBhk(多少関連のある使い方ができるかもしれんが、)全然違うだろ
どこを読んだらそんな変な読み取りができるんだ?
0215デフォルトの名無しさん
2017/02/26(日) 11:59:43.17ID:LLZCcrhN式木やdynamicのあたりは今時のミーハーな関数型()とはだいぶ色が違うと思う
LispのマクロとかMOPとかの影響を受けた、かなりガチなマニアックな設計思想の
0216デフォルトの名無しさん
2017/02/26(日) 12:33:17.61ID:Q2GAsSXoてか式木っていったい何がやりたかったの?
超高速Evalか?
0217デフォルトの名無しさん
2017/02/26(日) 12:57:05.99ID:LLZCcrhN式木の目的は、C#で書かれた式を独自に解釈して処理すること
例えばラムダ式を変換してExcelの数式を生成したりできる
文字列を使うのに比べて解釈が楽、型や構文の静的チェックが可能、インテリセンスが効くといった利点がある
0218デフォルトの名無しさん
2017/02/26(日) 13:49:21.90ID:Q2GAsSXoおそらくLISP信者も同様にそのポテンシャルに魅了されているのだと思うのだが、
具体的に何に活用できるのだ?
何にでも使えそうだが、いざ何に使えば「他では達成できないほど」の結果を引き出せるのか分からない。
> 例えばラムダ式を変換してExcelの数式を生成したりできる
なるほど素晴らしい。しかしExcelシートを別に用意した方が楽だし、
通常の数式ならC#側で「テキスト」として出力するのも難しくは無い。
(もちろん出力パーサの再開発になるから、MS謹製自動変換のほうが楽だが、その程度)
> インテリセンスが効くといった利点がある
これは利点ではあるが、主な目的のうち大半は「手打ち」ではないだろうから、この際あまり関係ない。
> 文字列を使うのに比べて解釈が楽、型や構文の静的チェックが可能
これを「ユーザ側」の利点とするなら、ユーザー側でのパーサ生成、
つまりメタメタプログラミングを想定していることになるが、そうなのか?
結果的にLISPで成功したプロジェクトといえるのはemacsのみだ。
対してCはほぼ全てのPC世界を再構築しているに近い。
理由付けはいろいろ出来るだろうが、結果的に誰もLISPを選ばなかったということではある。
他でもっと簡単に目的を達成できる方法があるのなら、誰もより複雑な方式での解決なんてしない。
結果的に、何でも出来るLISPは誰にも使われなかった。式木の雰囲気も見た目これに近い。
ExcelはExcelで、C#はC#で、で誰も文句は無い。
(その分簡単になっていて、Excelは非プログラマでも十分使える)
そこを統合するのは学術的には意味があるが、現実的には意味が無い。
HaskellやPrologみたいにアカデミック向けなら分かるが、C#はそうではないし。
0219デフォルトの名無しさん
2017/02/26(日) 14:12:54.65ID:AZYnfb42以上
0220デフォルトの名無しさん
2017/02/26(日) 14:23:30.18ID:Q2GAsSXoどうでもいい箇所の高速化をやってる馬鹿と同じ。そこにこだわっても効果ないよ。
0221デフォルトの名無しさん
2017/02/26(日) 14:36:14.18ID:0YrJqBhkリフレクションの代わりにして高速化するとかの目的で結構使われてる
アプリケーションで使うよりもライブラリの内部とかで使うことが多い
0222デフォルトの名無しさん
2017/02/26(日) 14:37:28.54ID:bMNV8RU50223デフォルトの名無しさん
2017/02/26(日) 14:38:28.84ID:BapL/ZVi可読性悪くなるから使うことはないな
0224デフォルトの名無しさん
2017/02/26(日) 15:03:16.38ID:bMNV8RU5コード書けないジョブスが引っ張り出してきて、みんなが迷惑してるレベル。
それがC#とヘジ。
0225デフォルトの名無しさん
2017/02/26(日) 16:19:53.46ID:cWe1Zi+Oしかし、O-CはAppleだけだから、やらされる身からすると迷惑なんだろう。
0226デフォルトの名無しさん
2017/02/26(日) 16:33:51.40ID:bMNV8RU5にも関わらず、BSDにOSX、iOSなどと名前詐欺するように、PascalにDelphiなどとかっこいい名前をつけて売り出した男がいる。
ヘジである。
とある事業でMSの独占だと将来に保守するリスクが高まるのでDelphiを採用した開発があった。
Delphiは一瞬市場で人気は出たもののすぐに消えた。あのとき大量に作られたコードは今も保守されてるんだろうか。
市場から一度消えた古い技術を引っ張り出す輩はほんと迷惑である。
0228デフォルトの名無しさん
2017/02/26(日) 17:26:34.35ID:cWe1Zi+Oこれが私の原点だ。
でも、生活の為に、いまだCやってる。
ヘッダファイルが面倒、C#はヘッダファイルなくていいね。
0229デフォルトの名無しさん
2017/02/27(月) 08:50:13.59ID:DR1RgDtx実行時コンパイルはシリアライザの高速化に使用されている
0230デフォルトの名無しさん
2017/02/27(月) 12:29:20.61ID:4XW6lmAfいくら便利でも周りが使う気無いなら意味ねえわ・・・
0231デフォルトの名無しさん
2017/02/27(月) 13:39:39.07ID:v0Y8eGO4C#とVBでVBが選ばれるのも仕方がない。仮にC#なんか選んでしまうと一部の技術者に負担がすべていく。
するとC#にしろ、ラムダ、LINQOKにしろ、WPFにしろと言ってた輩が無責任に最初に転職していく。
残された奴らじゃとても保守は無理。
0232デフォルトの名無しさん
2017/02/27(月) 13:47:01.73ID:BO1ZZ84rその人が辞めていく法則
0233デフォルトの名無しさん
2017/02/27(月) 17:10:34.62ID:ToRYKJiY0234デフォルトの名無しさん
2017/02/27(月) 18:55:42.34ID:bS39cZCsお家に帰ってからが楽しいプログラミングの時間だ
誰にも足を引っ張られないで好きなことをできる
悲しいね
0235デフォルトの名無しさん
2017/02/27(月) 19:12:51.30ID:bir6oLGv俺はそれでいいと思うけどね。
結果的に「従来記法しかしない会社」と「意識高い記法をする会社」で市場で勝敗つければいい。
本当に「生産性が高い」のなら相手を容易に駆逐できるはず。
出来ないのならその程度だってこと。
まだらになっている方が生産性が悪い。分離して競わせるのが正しい。
多分、ラムダ、LINQ、WPFには相手を駆逐できるほどのインパクトは無い。
対してメモリ保護、GCはかなり劇的に楽になるのでCはシェアを落としつつある。
ちなみに俺はHTMLはフォーム/WPFを駆逐できると思う。
0236デフォルトの名無しさん
2017/02/27(月) 19:15:16.04ID:Ftr1v2iEWPFは、WEBフレームワークに似てるからそっち系の人は良いのでは
0237デフォルトの名無しさん
2017/02/27(月) 19:17:31.38ID:Ehytdfgfごちゃ混ぜで語りすぎてる。
ラムダ、LINQなんてちょっと学習するだけやん。
請負、派遣業界に無理なのは分かるがw
0238デフォルトの名無しさん
2017/02/27(月) 19:47:36.34ID:RCbBwD75みんなは、どうしてる?
図書館は、全くと言って良いほどロクな書籍が無い
後はグーグル書籍で、漁る位だし……。
0239デフォルトの名無しさん
2017/02/27(月) 19:55:43.62ID:GaZbolX80240デフォルトの名無しさん
2017/02/27(月) 20:15:06.48ID:RCbBwD750241デフォルトの名無しさん
2017/02/27(月) 20:17:13.08ID:zuqOpmfmMSDNのリファレンスを全部プリントアウトしたほうが安いんじゃね?
0242デフォルトの名無しさん
2017/02/27(月) 20:46:05.22ID:RCbBwD75その発想は無かった
因みに get setの使い道が微妙なんだけど、
具体的な使用例とか、教えてくれ><
0243デフォルトの名無しさん
2017/02/27(月) 20:55:40.51ID:SheqW2ppカプセル化
0244デフォルトの名無しさん
2017/02/27(月) 21:04:36.29ID:bir6oLGvWPFざっくり見てみたが、HTML/CSS/JavaScriptの再開発でしかない。
時期的な問題もあったのだろうが、
ここまで似せるなら最初からHTML/CSS採用しろよ、とWEB系からは見えるだろう。
WEB系の連中を引っ張り込みたいのなら、今からでも全面採用して、
HTML/CSS/C#出来るようにするべきだろう。
見た目、WEB系はC#よりも新技術の使い捨てが酷くて、余裕が無い。
彼らにとってWPFは簡単だが、学ぶのが面倒であり、その価値もないから、
Electron(HTML/CSS/JavaScript)でデスクトップアプリを作る方を選択するだろう。
面倒だから学ばない、というのはラムダもLINQも同じ。
元々無くても出来るのだから、それで苦労してない人には同期付けが無い。
その辺がメモリ保護/GCと根本的に異なる。
0245デフォルトの名無しさん
2017/02/27(月) 21:14:29.75ID:Ehytdfgf相変わらず馬鹿だな。
0246デフォルトの名無しさん
2017/02/27(月) 21:19:28.45ID:QfkRDmsT0247デフォルトの名無しさん
2017/02/27(月) 21:22:26.99ID:aCjjvIHm0248デフォルトの名無しさん
2017/02/27(月) 21:34:20.63ID:sVGz7y9C0249デフォルトの名無しさん
2017/02/27(月) 21:39:40.07ID:Ftr1v2iEElectronは遅すぎる
0250130
2017/02/27(月) 22:16:01.34ID:8x434lFb>WEB系の連中を引っ張り込みたいのなら、今からでも全面採用して、
>HTML/CSS/C#出来るようにするべきだろう。
ASP.NET MVCってまさにこれ?
0251デフォルトの名無しさん
2017/02/27(月) 22:49:12.00ID:bir6oLGv> UWP
名前しか聞いた事無かったけど、これは良いね。
HTML/JavaScriptならElectronと同じコンセプトが可能か?
HTML/C++で使いたいんだが、この組み合わせは無理なのか、、、
0252デフォルトの名無しさん
2017/02/27(月) 23:22:57.99ID:ENJIvJC40253デフォルトの名無しさん
2017/02/27(月) 23:40:54.02ID:o2MHRqlI最近の本は安くなってるよ。
一番高かったのは2000年当時、Windows関連書籍で一冊1万越えもあった。
平均7、8千円かな、5千円だと安いと感じた。
本代はケチらずばんばん買ってる。
飯の種だし、1日悩んでたら人件費何万になる?
本買って解決すれば安上がり。
0254デフォルトの名無しさん
2017/02/28(火) 00:00:06.65ID:8+bIkryZWPF → UWP という進化だよw
0255デフォルトの名無しさん
2017/02/28(火) 00:13:12.42ID:3lr7jZCG看板付け替えただけ、という見方かもしれんが、俺は進化でいいと思うぞ。
0256デフォルトの名無しさん
2017/02/28(火) 00:17:57.53ID:C4A7F+ayMFCでだいぶ前からhtml/c++はできるじゃん。
0257デフォルトの名無しさん
2017/02/28(火) 19:37:38.52ID:yxAUZLha読みたい行が何行目かは決まってるんですが、
1.1行目からその行までに含まれる文字数
2.読みたい行からファイルの末尾までの行数
は不定です。
FileStream.Seekの、バイト数ではなく行数指定出来るものがあればいいんですが。
0258デフォルトの名無しさん
2017/02/28(火) 19:42:51.05ID:9Xdv30xYループ回して対象行のカウントでホゲホゲすれば?
0259デフォルトの名無しさん
2017/02/28(火) 19:44:38.27ID:yxAUZLhaありがとうございます。
うまくできました。
StreamReader reader = new StreamReader(file,Encoding.Default);
for(int i = 0; i < 10; i++)
{
reader.ReadLine();
}
this.listBox1.Items.Add(reader.ReadLine());
0260デフォルトの名無しさん
2017/02/28(火) 20:23:35.47ID:K7hLR7oh実践で使えないコード過ぎてイラっときた
気分で改行したら終わりって
0261デフォルトの名無しさん
2017/02/28(火) 20:29:23.68ID:+WocOs48読みたい行が何行目かは決まってるのに気分で改行したがるその仕様無視にイラっときた
0262デフォルトの名無しさん
2017/02/28(火) 20:35:19.50ID:K7hLR7ohn行目ってのはあくまで質問者が宿題を読んだ感想文なわけで
0263デフォルトの名無しさん
2017/02/28(火) 20:37:44.89ID:Fq1JMnLGエスパーさんはいらないから
汎用性のないコードだってのならともかく「本来はこんな問題のはず」とか議論しても何もならん
0264デフォルトの名無しさん
2017/02/28(火) 21:08:18.23ID:pIiGTdLDどこが実践で使えないんだ(笑)
0265デフォルトの名無しさん
2017/02/28(火) 21:15:58.55ID:wrouDyFM0266デフォルトの名無しさん
2017/02/28(火) 21:19:57.27ID:BFmlECVlCopyToを使って動かしてみると、マージされているセルなどが思った通りにはコピーされないようです。
worksheet.Range(rowno + 2 + ":" + rowno + 3).CopyTo(worksheet.Range(rowno + 4 + ":" + rowno + 5));
お助けください
0267デフォルトの名無しさん
2017/02/28(火) 21:34:46.83ID:A2md68KBこういうの気持ち悪い
0268デフォルトの名無しさん
2017/02/28(火) 21:59:17.96ID:39alJvfiStreamReaderをCloseしようね
内部的には同じだけどFile.ReadLines()を使ってElementAt()とかで目的の行が取れるよ
0269デフォルトの名無しさん
2017/02/28(火) 22:08:38.41ID:s47hQ+GZじゃ、お前んとこってテキストファイルの行数でデータ定義するの?
0270デフォルトの名無しさん
2017/02/28(火) 22:11:57.45ID:39alJvfi0271デフォルトの名無しさん
2017/02/28(火) 22:14:30.88ID:pIiGTdLD普通にID管理だけど、チートやバグが発生した場合に行数管理で正常か
どうか判断する局面も有るけど?
0272デフォルトの名無しさん
2017/02/28(火) 22:24:32.74ID:+WocOs48測定データ1分1行で定義されてて、1日置き=1440行ごと読み出しとか、行数でのデータ取扱なんてざらだよ
0273デフォルトの名無しさん
2017/02/28(火) 23:03:34.74ID:s47hQ+GZ面倒でも日時入れるわ
データがないとき(?)って空白出すの?
超面倒じゃん
データがないって判定もヤバそう
0274デフォルトの名無しさん
2017/02/28(火) 23:10:22.11ID:AHF/JWRtReadLinesは全部メモリに読むから、ファイルがでかい可能性があるなら避けたほうがよいかも
0275デフォルトの名無しさん
2017/02/28(火) 23:12:03.23ID:z/77EZzb運用が面倒臭すぎる
0276デフォルトの名無しさん
2017/02/28(火) 23:25:18.45ID:39alJvfi読まないよ
全部読むのはReadAllLines
0277デフォルトの名無しさん
2017/03/01(水) 01:43:58.56ID:jez9uqUVテキスト読み出しながら、登録したキーワードに引っかかったらreplaceする必要があるんだけど、(足りない脳味噌の範囲で)どうやってもクッソ遅い。
キーワードと置換後文字はDictionaryで管理してるけど、そもそもキーワードが8200程ある上に、テキストも1ファイルあたり平均約2.7万文字あってもう無理(テキストファイルは1日あたり1600ほど生産されてる)
速度は諦めるしかない?
0278デフォルトの名無しさん
2017/03/01(水) 01:54:31.83ID:XgpeB6sRすまん、そうだった
0279デフォルトの名無しさん
2017/03/01(水) 04:22:26.99ID:uGJVx5D1どのくらいで遅いって言ってるのか次第じゃない?
キーワードにマッチする単位で単語分割できてれば入力の単語単位で辞書にぶつけるのが効率よさそう
ただ3万文字程度ならキーワードの数だけ入力を走査しても言うほど時間かからない気がする
0280デフォルトの名無しさん
2017/03/01(水) 07:58:17.12ID:ElQ6OcG3キーワードを予め文字単位でツリー化しておいて辿っていけば?
1文字読むたびに最大でもキーワードの最大文字数と同じ数だけのツリーのポインタを1歩進めるだけで済む
0281デフォルトの名無しさん
2017/03/01(水) 08:04:58.33ID:SJrJxNnQ> StreamReaderをCloseしようね
そこは using だろ
0282デフォルトの名無しさん
2017/03/01(水) 08:26:19.47ID:mkeal5qn0283デフォルトの名無しさん
2017/03/01(水) 14:31:13.79ID:UzmiTiReDomainのスコープを設定するにはどうすればいいでしょうか?
0284デフォルトの名無しさん
2017/03/01(水) 15:36:27.74ID:yuocqMDOまた、キーワード「こね・ねこ」があるとき、どちらに該当する?
0285デフォルトの名無しさん
2017/03/01(水) 17:28:21.57ID:9PjUMtQQフォームにボタンAとボタンBの二つのボタンがあります
ボタンAをクリックすると、ある反復処理が延々と繰り返されます
ボタンBをクリックしてこの反復処理をストップさせるには通常どのような記述をするのでしょうか
0286デフォルトの名無しさん
2017/03/01(水) 17:33:43.62ID:kRYqKFSr反復処理の中に条件付き中断処理を入れる
もう一つのボタンを押したときに中断処理用のフラグをセットする
もちろん別スレッドじゃないとボタン押せないけど
0287デフォルトの名無しさん
2017/03/01(水) 17:36:44.01ID:kRYqKFSr反復処理中にApplication.DoEvents入れてもボタンの入力受けるけど
反応悪くなるし、今時はまず使わないだろうな
0288デフォルトの名無しさん
2017/03/01(水) 19:13:43.54ID:1ptPBH8rCancellationTokenSource 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();
}
0289デフォルトの名無しさん
2017/03/01(水) 19:21:54.77ID:z3LIBqaM0290デフォルトの名無しさん
2017/03/01(水) 19:31:02.44ID:CFmNTLskソース上げたら誰かみてくれるよ
0291デフォルトの名無しさん
2017/03/01(水) 19:53:57.57ID:SJrJxNnQ0292デフォルトの名無しさん
2017/03/01(水) 20:31:55.65ID:r70GDLNPnot Defined
0293デフォルトの名無しさん
2017/03/01(水) 21:37:40.58ID:PGtJZLdC「At2chLib」が使用できなくなってて困っています。
なにか良いライブラリとか有りますか?
0294デフォルトの名無しさん
2017/03/01(水) 21:39:56.43ID:PR7YLHWZ0295デフォルトの名無しさん
2017/03/01(水) 21:46:15.04ID:RAuT14LS0296デフォルトの名無しさん
2017/03/01(水) 22:01:49.72ID:r70GDLNP0297デフォルトの名無しさん
2017/03/01(水) 22:08:23.90ID:PGtJZLdC0298デフォルトの名無しさん
2017/03/01(水) 22:31:30.38ID:78O8EuSm0299デフォルトの名無しさん
2017/03/01(水) 22:38:28.52ID:fB20izlq違法だったら良いのにな…
もし違法だったらVIPで埋めまくってる奴逮捕されていなくなるはずなのにな…
はぁ…
0300デフォルトの名無しさん
2017/03/01(水) 23:00:18.14ID:U2Od4VRx0301デフォルトの名無しさん
2017/03/01(水) 23:13:49.83ID:fB20izlq0302デフォルトの名無しさん
2017/03/01(水) 23:57:19.29ID:6tJnN0su1処理1個挟むんじゃなくて100処理か1000処理に1回ぐらいでお願いします
0303デフォルトの名無しさん
2017/03/02(木) 00:33:44.50ID:IBdXO0OOどこが遅いか分析が足りてないな
キーワードにヒットしたら番地とヒットしたキーワード格納して置換はしないでみたら?
置換って頭使わないと最悪な方法で処理してくれてる気がする
abcを見つけたらdefghijkに変換してくれる処理って
c言語だったら変換後の配列のサイズの計算からしなきゃいけないわけで
それをc#ってreplaceしやがったら配列の再確保余裕でしたみたいなことするアホだろ
その辺は考慮に入ってる?
0304デフォルトの名無しさん
2017/03/02(木) 00:54:02.49ID:FuaoIGJx0305デフォルトの名無しさん
2017/03/02(木) 00:54:51.19ID:IBdXO0OOstr1 + str2
みたいなことするとこれも合体後の文字列の長さで配列を再確保する
3万文字もある文字列だと1回文字列連結をするだけでヤバイ
変換に使用するキーワードの使用回数から最終的な文字列の長さを算出する必要があるかも
ってそれも考慮済みだろうか?
0306デフォルトの名無しさん
2017/03/02(木) 00:58:24.20ID:FuaoIGJx0307デフォルトの名無しさん
2017/03/02(木) 01:07:45.83ID:B13E3oAw0308デフォルトの名無しさん
2017/03/02(木) 01:09:29.82ID:FuaoIGJxstringは糞遅い。
だからMSは最初から別のクラスを用意してる。ググレカスども。
0309デフォルトの名無しさん
2017/03/02(木) 01:14:29.76ID:oXaAut0o0310デフォルトの名無しさん
2017/03/02(木) 01:18:09.17ID:iFkNWUjshttps://referencesource.microsoft.com/#mscorlib/system/text/stringbuilder.cs,1485
https://referencesource.microsoft.com/#mscorlib/system/text/stringbuilder.cs,1535
0311デフォルトの名無しさん
2017/03/02(木) 01:20:26.39ID:iFkNWUjsReplaceのパフォーマンスはそんな変わらないよ
ググレカス
0312デフォルトの名無しさん
2017/03/02(木) 01:22:58.33ID:o9lMs6ta0313デフォルトの名無しさん
2017/03/02(木) 01:23:22.99ID:FuaoIGJx最後のヒントな。
大山札
0314デフォルトの名無しさん
2017/03/02(木) 02:04:51.98ID:ggH8M0CBもしかしてあらかじめ領域を準備して,自分で足していく,とか‥
0315デフォルトの名無しさん
2017/03/02(木) 02:30:07.47ID:4HioNM+3違法と犯罪は違うぞ
0316デフォルトの名無しさん
2017/03/02(木) 02:41:55.30ID:iFkNWUjs>>280
0317デフォルトの名無しさん
2017/03/02(木) 06:45:07.41ID:JZiPjSZc>>280のアルゴリズムで実装したら100倍とかのオーダーで速くなるはず
0318デフォルトの名無しさん
2017/03/02(木) 07:40:36.76ID:WqhQkxL/実装して計測してコードと計測結果を晒してから主張して
0319デフォルトの名無しさん
2017/03/02(木) 07:52:06.73ID:Ct6l/xwh280は検索で遅いとき
置換で遅いときはstringbuilderをキッチリサイズ指定する方法でやらないとダメ
まず切り分けかな?
0320デフォルトの名無しさん
2017/03/02(木) 08:49:47.79ID:oX3M/pPf圧倒的に検索の問題になるだろうね
普通は
0321デフォルトの名無しさん
2017/03/02(木) 09:05:00.59ID:Ct6l/xwhいや3万文字を置換のたびに1回1回stringのreplaceしてたらその度に3万文字分の配列を再確保
これが致命的
stringのreplaceはやってはならない
stringbuilderで
これも使い方悪いと速度出ないので正しい感じで
0322デフォルトの名無しさん
2017/03/02(木) 09:06:59.45ID:Ct6l/xwh0323デフォルトの名無しさん
2017/03/02(木) 09:07:18.82ID:cjA1b3op終端ノードまで来たら開始インデックスから後を削除し、終端ノードに持たせてある置換文字列を付加し、現在のツリーポインタを全て破棄
こうすれば280で置換も効率的にやれるよ
0324デフォルトの名無しさん
2017/03/02(木) 09:17:20.56ID:cjA1b3opそれ文字列が長ければreplaceのための線形探索がネックになるはずで、StringBuilderは直接関係ないでしょ
簡単に効率を改善するんなら、全キーワードのうち最長のキーワードの文字数と同じサイズのバッファを持っといて
そこに対して置換をかけりゃいい
もちろんその置換結果を最終出力の文字列として連結していくところはStringBuilderを使うべきだけど
0325デフォルトの名無しさん
2017/03/02(木) 10:02:53.43ID:xcfTeAxlに限定されると思ふ ノ ヽ(・ω・)/ズコー
0326デフォルトの名無しさん
2017/03/02(木) 12:13:19.52ID:63yIksCz0327デフォルトの名無しさん
2017/03/02(木) 13:30:45.83ID:NvG2Ox0H一万近いとどうなんだろうか
0328デフォルトの名無しさん
2017/03/02(木) 13:39:24.58ID:Ct6l/xwh置換後に短くなっても駄目っぽいけどね
0329デフォルトの名無しさん
2017/03/02(木) 13:42:21.47ID:j0RdOmJSで方法変えた方がいいな
0330デフォルトの名無しさん
2017/03/02(木) 16:45:48.51ID:yzi1qiN6そんな変な処理をしなければいいだろ。
解決!
0331デフォルトの名無しさん
2017/03/02(木) 19:36:05.41ID:tOCPWbBv0332デフォルトの名無しさん
2017/03/02(木) 19:43:30.86ID:j0RdOmJS0333デフォルトの名無しさん
2017/03/02(木) 19:47:35.64ID:eNjjKtZ0それ以前にベタにやっても余裕だと思うが。
0334デフォルトの名無しさん
2017/03/02(木) 19:54:31.82ID:Ct6l/xwhプロファイラ使えるようになるのが一番いいね
ただ、それじゃわかりにくいときもあるから知恵をつけるのも大事だと思う
0335デフォルトの名無しさん
2017/03/02(木) 20:14:46.47ID: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内の動作を考える必要がある。
0336デフォルトの名無しさん
2017/03/02(木) 20:23:23.74ID:j0RdOmJSそれはプロファイラの考え方を間違ってる(使ってないみたいだから知らないのは当然かもしれんが)
replaceがネックって出ればそれでいいんだよ
0337デフォルトの名無しさん
2017/03/02(木) 20:34:59.52ID:Ct6l/xwhそうだね
さらにgoogleで
replace 遅い c#
なんてキーワードで検索かければもう解決方法も見つかったようなもんだね
0338デフォルトの名無しさん
2017/03/02(木) 20:42:38.33ID:eNjjKtZ0いや俺は他言語(JavaScript)ではプロファイラ使いまくりだぞ。
そしてプロファイラ自体は見た目ほぼ同じだし。当たり前だが。
というか今回は20行程度のプログラムで2重ループするだけだろ。
ベタでやった場合、String.Replaceが出るに決まってるだろ。
お前はアホの子か?
問題はそれをどう変えたらどう改善されるかの見通しを立てることだろ。
それはここでみんながやってるように、自分で考えないと分からない。
とはいえここで案を出してもらってるんだし、後はがんばれでしかないが。
0339デフォルトの名無しさん
2017/03/02(木) 20:44:03.61ID:maE+uJIv馬鹿は一生js書いてろ
くせえから出歩くなクソが
0340デフォルトの名無しさん
2017/03/02(木) 20:49:46.45ID:rlmCwDYA品質の悪いライブラリと品質の悪い人材によって書かれているから
すぐsucks so muchになるんだ
0341デフォルトの名無しさん
2017/03/02(木) 21:44:03.77ID:eNjjKtZ0いやJavaScriptはJITがエグイからでしょ。(同じ傾向はC#にもあるはずだが)
例えばHTMLの特殊文字を変更する場合、string.replace(Regex,func)で纏めるよりも、
数個なら string.replace().replace().replace() とかハードコードした方が速かったりする。
ボトルネックがソースから予測しづらいからプロファイラを使うしかない。
その点、Cは最初から見えた状態で書くからいい。
ただこのあっさり感、C#ならString, StringBuilder, Regexで試して、
それ以上は諦める文化なのかもしれんね。そういう用途の言語ではあるし。
C的アプローチで限界速度を追求するのではなくてね。
0342デフォルトの名無しさん
2017/03/03(金) 07:07:46.01ID:GM13pkfIろくな解決策が出ないので
もう結構です
0343デフォルトの名無しさん
2017/03/03(金) 07:16:35.43ID:cZXazyZL文字列探索アルゴリズムの問題だと思うのは俺だけかな?
そこを自前で実装すれば高速化できると思うのだけど
0344デフォルトの名無しさん
2017/03/03(金) 07:22:10.27ID:4qcBtzljそれは>>280で出てる
0345デフォルトの名無しさん
2017/03/03(金) 07:22:40.42ID:cZXazyZL置き換え後、どこに格納するかはたいして重要じゃないはず。
状況に応じた探索アルゴリズムを使用することが重要。
自前実装は辛いけど。
0346デフォルトの名無しさん
2017/03/03(金) 07:31:45.18ID:ELiKOyhw0347デフォルトの名無しさん
2017/03/03(金) 07:34:13.74ID:4qcBtzljその「状況」は単純に探索をどうするかだけではないよ
置換処理に適したアルゴリズムを使用することが重要
その意味ではトライ木を使った方法(280)はリアルタイムで読んだそばから置換できるから目的に合ってる
0348デフォルトの名無しさん
2017/03/03(金) 07:50:58.21ID:pVtcQ1mY0349デフォルトの名無しさん
2017/03/03(金) 07:54:40.78ID:a7lwSDS40350デフォルトの名無しさん
2017/03/03(金) 07:56:17.33ID:pVtcQ1mY0351デフォルトの名無しさん
2017/03/03(金) 08:06:18.44ID:hxiWJWmX検索された文字列から変換後の文字列を求める手間の話?
8,200個くらいならたいしたことないと思う
0352デフォルトの名無しさん
2017/03/03(金) 08:19:11.00ID:ELiKOyhw0353デフォルトの名無しさん
2017/03/03(金) 08:30:26.60ID:LqKyLlg1できるのわかってるし
正直、対象の文字列に対してdictionaryでまとめてある群からヒットさせるならそこまで変わらないと俺は思ってるので興味ない
さらに話題提供者は明確な仕様を出したわけではないので現状では「組めない」が正解
さらにこの問題は対象のデータの持ち方で解決する方法もあって多くの場合そっちのほうが楽なので
あまりこのスレで出たような解決方法を適用することは無いかも
0354デフォルトの名無しさん
2017/03/03(金) 08:56:05.96ID:LqKyLlg1キーワードが改行を含まないのであれば
行ごとにreplace処理して文字列の統合だけstringbuilderを使えばこれだけで十分な速度が出ると思われる
(1行300文字程度と想定)
とかね
僕のカコイイスペシャルエディタでも作らない限りはフォーマット自体に特有の癖があるもんで
大抵の場合は独自の解決方法を考えたほうが早い
0355デフォルトの名無しさん
2017/03/03(金) 09:35:42.12ID:velk9AIH0356デフォルトの名無しさん
2017/03/03(金) 13:45:46.60ID:hf3TFoOqUNIXのShellのコマンド解析の実装がそんな感じ。
ただしスイッチ文の嵐だが(一文字目がCならCPを検査とか・・・
0357デフォルトの名無しさん
2017/03/03(金) 15:59:24.43ID:GTe30Tvn1ファイルの文字数がやたら少ないし何の目的か全くわからんかった
>>346,352がアフィ本人だね
0358デフォルトの名無しさん
2017/03/03(金) 16:00:23.77ID:GTe30Tvn>>342,346,352がアフィ本人
0359デフォルトの名無しさん
2017/03/03(金) 16:00:55.70ID:oAXP4RlZアホの子なの?
0360デフォルトの名無しさん
2017/03/03(金) 16:02:40.13ID:nP8cPyWm0361デフォルトの名無しさん
2017/03/03(金) 16:54:07.87ID:Loi48FLt0362デフォルトの名無しさん
2017/03/03(金) 17:00:38.87ID:nP8cPyWm0363デフォルトの名無しさん
2017/03/03(金) 19:35:06.90ID:MASUg06L0364デフォルトの名無しさん
2017/03/04(土) 00:57:57.14ID:V1fO2YUM馬鹿かこいつ。
0365デフォルトの名無しさん
2017/03/06(月) 15:15:15.66ID:c2C1QaOD実装しないだけだ(´・ω・`)
0366デフォルトの名無しさん
2017/03/06(月) 16:53:48.94ID:HdaZCaDT(´・ω・`).Dispose();
0367デフォルトの名無しさん
2017/03/06(月) 17:04:44.11ID:gswSb9xJthrow new GenjyuminException("お兄ちゃん僕を消さないで");
}
0368デフォルトの名無しさん
2017/03/06(月) 18:04:17.43ID:fLI2L2/vif((´・ω・`)==null)break;
}
これでどや、消えるまで永久に彷徨え
0369デフォルトの名無しさん
2017/03/06(月) 18:06:58.06ID:SM9wIIjZこういうのエラーになっちゃうんだけど、ならないのあるかな
0370デフォルトの名無しさん
2017/03/06(月) 18:10:04.79ID:gswSb9xJとうふさんをすころう🙋
0371デフォルトの名無しさん
2017/03/08(水) 07:21:50.44ID:0djAud0F使い始めてデータエンティティの設計を
意識するようになったのですが
論理ER図とクラス図がほとんど同じ
ようなエンティティになるのは
良いのでしょうか?
使ってる言語がC#なだけで
OOPの話になっているみたいで
恐縮ですが
0372デフォルトの名無しさん
2017/03/08(水) 07:57:43.96ID:j5hWWAogオブジェクト指向原理主義的に言うなら、最初にデータ設計ありきで作ったのが間違い
DB構造はオブジェクトを抽出した上でその永続化層として結果的に導出されるもの
その結果、テーブル構成がクラスと一対一になるのはおかしくはない
0373デフォルトの名無しさん
2017/03/08(水) 09:10:06.96ID:4zQ1zZR+>論理ER図とクラス図がほとんど同じ
>ようなエンティティになるのは
それをEFと言うんじゃないか?
殆ど同じじゃなく完全一致するんじゃないの?
0374デフォルトの名無しさん
2017/03/08(水) 11:04:45.08ID:WDLIW5bb皆さんはどうやって解決してますか?
0375デフォルトの名無しさん
2017/03/08(水) 11:21:49.05ID:j5hWWAogメソッドやクラスを適切に使って使い回せばそんなことにはならない
0376デフォルトの名無しさん
2017/03/08(水) 12:38:38.92ID:xVFA2xmi適切とは?
0377デフォルトの名無しさん
2017/03/08(水) 12:46:41.42ID:FTYppI6w例えばこうしろってだけでしょ
method(0); method(1); method(2); method(3);・・・method(x);
↓
for (int i =0; i <= x; i++) method(i);
ただいくらそうしたって作るものによっては定形だらけになるからな。そんなの気にするなとしか言えん
0378デフォルトの名無しさん
2017/03/08(水) 13:31:44.38ID:WDLIW5bbそれに、クラスとリターン、ラベル貼るから一行より長くなるんです
0379デフォルトの名無しさん
2017/03/08(水) 14:05:18.27ID:pm5pCz2zEDM理解してる?
0380デフォルトの名無しさん
2017/03/08(水) 14:35:54.93ID: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
0381デフォルトの名無しさん
2017/03/08(水) 16:48:47.00ID:EwGirieAhttps://www.ibm.com/developerworks/jp/linux/library/l-mono/
>実際、作成された実行可能ファイルを別のシステム、おそらくWindowsが稼動しているシステムにコピーして、そこでそのまま実行することができます。
Linuxで動くexeファイルがwindowsでもそのまま動くのはなぜですか?
本来、実行可能形式に互換性はありませんよね?
Javaだと.jarファイルでjavaが関連付けられてるからどこでも動作するというのは分かるんですが
0382デフォルトの名無しさん
2017/03/08(水) 17:05:53.57ID:FTYppI6wjavascripはテキストファイルなのに実行できるってのと同じで、exeという拡張子だけど中身はスクリプトって考えりゃいい
linux側は「mono example.exe」のように実行するのはexeでなくmonoでしょ
0383デフォルトの名無しさん
2017/03/08(水) 17:10:53.01ID:CceDL3fbLinuxはexeが実行ファイルという訳でもなし、mcsがPE互換でも吐いてるんじゃない?
C#はそもそも中間言語にコンパイルされるし、.NET Framework(あるいは互換ランタイム)を通して
色々な操作を行うので、DllImportとか除けばコード部分はプラットフォーム依存にはならない、Javaと一緒
0384デフォルトの名無しさん
2017/03/08(水) 17:41:17.11ID:4q4g4kgyやはりそう思いますよね
自分もデータエンティティと
クラス図が一致してしまって
アンチパターンしてないか
不安になったもので
クラス図要らないじゃん
てことになって良いのかなと
0385デフォルトの名無しさん
2017/03/08(水) 17:56:23.47ID:EwGirieAわかりました
linuxでもx window systemとかGUIシステムで
拡張子とプログラムの関連付けがあるみたいだけど
.exeをmonoに関連付けるのは少し疑問です
.jarみたいな固有拡張子じゃないので
windowsだと関連付け関係無く実行可能形式として動くんだろうけど
他のOSでは特定のプログラムから起動しなければならないというのが
非対称的でクロスプラットフォーム感欠けてるような気がします
0386デフォルトの名無しさん
2017/03/08(水) 18:12:34.14ID:ZazPDLJU特定のプログラムでコンパイルしないと動かないぞ
0387デフォルトの名無しさん
2017/03/08(水) 18:13:37.64ID:NpQQdkRqクロスプラットフォームにこだわるのならC#使わない方がいいだろ
>>383に書いてあるようにDllImportとか入っていたらどうしようもないんだから
0388デフォルトの名無しさん
2017/03/08(水) 20:03:39.84ID:VZtOnmtcビジネスロジックはほとんどSQLとストアドに書かれ
ホスト言語はデータセットをUIとバインドするだけ
マイクロソフトは業界の現実を見据えたフレームワークを提供してほしい
0389デフォルトの名無しさん
2017/03/08(水) 20:08:18.13ID:jS0zQn/F0390デフォルトの名無しさん
2017/03/08(水) 20:25:11.68ID:q0ZuMA54品質を上げるために
誰だよJavaオワコンとか言ってたの
Javaつよすぎんだろ
0391デフォルトの名無しさん
2017/03/08(水) 20:37:42.27ID:WDLIW5bb0392デフォルトの名無しさん
2017/03/08(水) 20:43:44.50ID:YCUi9zWw実際Javaは周辺技術はすごい
世界中の叡智が結集して糞を料理し、なんとか食えるものにしてる
0393デフォルトの名無しさん
2017/03/08(水) 20:50:23.47ID:YUr8l1RF0394デフォルトの名無しさん
2017/03/08(水) 21:09:03.23ID:psTqZ+Sc0395デフォルトの名無しさん
2017/03/08(水) 21:32:29.32ID:U5noIHdNgolangもgoogleだから不安がつきまとう
swiftもappleだから数年後の未来も予測出来ない
でも不思議とc#とmsの場合はあんまそういう不安が無い
0396デフォルトの名無しさん
2017/03/08(水) 21:39:55.81ID:Uljnsbub>ビジネスロジックはほとんどSQLとストアドに書かれ
最適化のためにしかたなくストアド化することはあっても
ビジネスロジックまるごととかあるんだね
おいたわしゅう
0397デフォルトの名無しさん
2017/03/08(水) 21:49:14.72ID:YUr8l1RFJavaと同じ設計をしたいならJavaを使えばいい。
0398デフォルトの名無しさん
2017/03/08(水) 21:51:54.89ID:MEKWLPl80399デフォルトの名無しさん
2017/03/08(水) 22:28:25.34ID:gllfe4Ss大人の事情。
0400デフォルトの名無しさん
2017/03/08(水) 23:15:48.59ID:nWki5I6GいやJavaが使われるような分野ならJava(やその周辺のライブラリ類)は糞速い
クライアントじゃビチグソだが
0401デフォルトの名無しさん
2017/03/08(水) 23:21:37.62ID:YUr8l1RF0402デフォルトの名無しさん
2017/03/08(水) 23:31:16.51ID:RgWWdtUJOracleにはJavaを伸ばすほどの能力はない。
環境の互換性に固執した結果、エコシステムがブラッシュアップされたのならそれでOK。
あとはC#で実験済みの便利機能を順に採り入れていけばいい。
C#がJavaに滅ぼされない為には数歩先を走り続けるしかない。
そのうちにJavaと同レベルのエコシステムが揃えられればJavaを食えるかもしれないが、
これはかなり厳しいとは思う。
0403デフォルトの名無しさん
2017/03/09(木) 00:10:57.40ID:x6aOWZGA今Javaの一番メジャーなパッケージマネージャって何?
rubygemsやnpmみたいなのないって聞いたら
Mavenでpom.xmlって言われて愕然としたことがある
0404デフォルトの名無しさん
2017/03/09(木) 00:43:02.76ID:zrZoqbypMavenで用は足りるし、LLっぽいのがお好みならGradleも人気
0405デフォルトの名無しさん
2017/03/09(木) 07:33:43.82ID:i1kRuTOPEFって何がいいの?
そんなの使わなくてもsql実行すればいいんじゃないの?
0406デフォルトの名無しさん
2017/03/09(木) 19:18:10.50ID:NWFSmelLORMでググれ
0407デフォルトの名無しさん
2017/03/09(木) 19:27:05.21ID:kp/XS3en業務運営リスク管理
sqlを文字ではなくオペレーションとして記述できるからsqlコマンド記述ミスによるバグやsqlインジェクションに強くなり
リスク回避に繋がるソース運営や管理ができる
0408デフォルトの名無しさん
2017/03/09(木) 19:28:46.08ID:ekX4ZlFqそんなの使わなくてもアセンブラ使えばいいんじゃないの?
35年前の会話
0409デフォルトの名無しさん
2017/03/09(木) 19:38:38.06ID:6OW1VF+t0410デフォルトの名無しさん
2017/03/09(木) 19:39:54.78ID:NWFSmelL使う側の頭の良し悪しってことかな
0411デフォルトの名無しさん
2017/03/09(木) 19:43:58.45ID:6OW1VF+t0412デフォルトの名無しさん
2017/03/09(木) 19:45:09.07ID:NWFSmelL具体的に
0413デフォルトの名無しさん
2017/03/09(木) 20:12:05.29ID:J4siqdXVまっさらなDB扱う機会なんてそうそうないし
0414デフォルトの名無しさん
2017/03/09(木) 21:56:54.03ID:i1kRuTOPsql記述ミスしなければいいだろ。
0415デフォルトの名無しさん
2017/03/09(木) 22:09:20.08ID:ZZ1gzprq既存DBからのコードファースト
0416デフォルトの名無しさん
2017/03/09(木) 22:09:48.58ID:GqwkUUnWばーか
0417デフォルトの名無しさん
2017/03/09(木) 22:25:30.67ID:FW6HepzMそんな根性論・精神論的なものでミスは無くならないよ
0418デフォルトの名無しさん
2017/03/09(木) 22:38:08.68ID:i1kRuTOPプログラムのミスを無くすのも
sqlのミスを無くすのも同じだろ。
0419デフォルトの名無しさん
2017/03/09(木) 22:45:19.50ID:mybEc7J10420デフォルトの名無しさん
2017/03/09(木) 23:05:42.43ID:ZZ1gzprq0421デフォルトの名無しさん
2017/03/09(木) 23:06:17.34ID:ojqe9dcn具体的に
0422デフォルトの名無しさん
2017/03/09(木) 23:10:24.76ID:4hz9mkjXかたい
つかいづらい
0423デフォルトの名無しさん
2017/03/09(木) 23:15:15.25ID:ZZ1gzprqおそい→単純に速さを求めるならDapper使えば?EFは速さが目的のORMじゃないし
かたい→意味不明
つかいづらい→馬鹿ならプログラミング諦めれば?
0424デフォルトの名無しさん
2017/03/09(木) 23:15:20.88ID:i1kRuTOP確かに遅いよね
0425デフォルトの名無しさん
2017/03/09(木) 23:15:56.47ID:OsFG/gY3日本語でよろしく
0426デフォルトの名無しさん
2017/03/09(木) 23:16:37.66ID:OsFG/gY3うん、当たり前だよね
0427デフォルトの名無しさん
2017/03/09(木) 23:36:02.15ID:4hz9mkjX→おそい
昨今なにが速度のボトルネックってDBアクセスなのにおそくていいわけがない
→かたい
なんというか、型が固いんだ…
データいっぱい取ってきてもダックタイピングとかないからいちいち入れ替えなきゃいけないし
メソッドをまたいでデータをやり取りしづらい
→つかいづらい
変な落とし穴いっぱい
あと抽象化しすぎ
DBと通信するタイミングとかこっちの好きにしたい
よさそうだった
よさそうだったんだ…
ちょっと触った最初の一瞬は夢が見れたが
0428デフォルトの名無しさん
2017/03/09(木) 23:39:24.67ID:P0KhFIxPお前C#向いてないからやめとけ
0429デフォルトの名無しさん
2017/03/09(木) 23:40:17.24ID:4hz9mkjX0430デフォルトの名無しさん
2017/03/09(木) 23:45:18.70ID:ZZ1gzprq生のADO.NETと比較すると遅くても、実運用に耐えられる程度なら問題ない
遅さのデメリットをメリットが上回る場合に採用すべき
設計ミス
お前の頭が足りてないだけ
抽象化しないとInMemoryやFakeのIDbcontext使ってUnit Testできない
0431デフォルトの名無しさん
2017/03/10(金) 00:07:57.78ID:Kg4/WRpJDapperのところ見ると10倍以上遅いって数字弾いているし
体感上も遅いだろ
https://github.com/StackExchange/Dapper
0432デフォルトの名無しさん
2017/03/10(金) 00:14:08.74ID:cBCq3F3F日本語
0433デフォルトの名無しさん
2017/03/10(金) 00:15:07.75ID:PorFrx4J遅いのは皆わかってるんだけど
何言ってんのこいつ
0434デフォルトの名無しさん
2017/03/10(金) 00:29:46.92ID:cBCq3F3FそのEntityFramework、3世代前くらいじゃね?
こっちの方がまともに比較してる気がする
https://msdn.microsoft.com/ja-jp/magazine/mt703432.aspx
0435デフォルトの名無しさん
2017/03/10(金) 00:35:01.00ID:PorFrx4J0436デフォルトの名無しさん
2017/03/10(金) 00:47:22.95ID:Cysk3AQ/Dapperを使ってメモリ上でUnit Testやる方法教えて
0437デフォルトの名無しさん
2017/03/10(金) 01:56:20.00ID:YvYLhW/g0438デフォルトの名無しさん
2017/03/10(金) 05:22:26.01ID:hxjDKO5o指定したURLからHTMLを取得するプログラムを作成しております
http://www.kekyo.net/2016/12/06/6186
取得する処理を作成することは出来たのですが
取得処理を走らせてからリクエストが帰ってくるまでの間
GUIの操作が一瞬とまってしまう現象が発生しております(一瞬フリーズするような感じです)
ですので連続してhtmlを取得したり、サイズの大きなものを取得する場合
長時間フリーズしてしまうことになるので大変困っております
どなたか解決方法をご存知の方がおりましたら
教えていただければ幸いです
よろしくお願いします
0439デフォルトの名無しさん
2017/03/10(金) 05:22:50.13ID:hxjDKO5opublic 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);
}
0440デフォルトの名無しさん
2017/03/10(金) 07:53:36.33ID:/HdMhfmBストアドはビジネスとデータが密着して全く疎にならないだろ
0441デフォルトの名無しさん
2017/03/10(金) 07:55:23.13ID:LDoDwujDかわいそうに
0442デフォルトの名無しさん
2017/03/10(金) 07:56:43.00ID:CZUjNxSc進捗状況を表示するプログレスバーでも、描画が止まるから、
GUI/worker用のスレッドは、別々のマルチスレッドにする
プログレスバー描画のサンプルでも見れば?
0443デフォルトの名無しさん
2017/03/10(金) 09:46:49.61ID:ccNaYHW5そのうちいいことあるよ、頑張って
0444デフォルトの名無しさん
2017/03/10(金) 11:25:04.92ID:LzpSY1ZbWebClient(とその中で使ってるHttpWebRequest)が
名前解決部分を非同期化できてないっぽい
HttpClientを使おう
0445デフォルトの名無しさん
2017/03/10(金) 12:24:52.88ID:/STnO1DK0446デフォルトの名無しさん
2017/03/10(金) 12:26:08.18ID:Tes7zBzn0447デフォルトの名無しさん
2017/03/10(金) 12:36:20.43ID:wvkqDHaL使わないじゃなくて使えないんじゃない?新しいことを学習できないんだよ
0448デフォルトの名無しさん
2017/03/10(金) 12:46:27.34ID:Tes7zBznEJB2.0とか
0449デフォルトの名無しさん
2017/03/10(金) 12:51:59.29ID:wvkqDHaLそれはその通りだね
EntityFrameworkはもうそろそろ10年たつんだけど
0450デフォルトの名無しさん
2017/03/10(金) 13:10:03.19ID:mpFYTheR0451デフォルトの名無しさん
2017/03/10(金) 13:53:22.42ID:AGPJ29Rn同じ長所短所でも環境によって評価が変わるからどっちが絶対にいいってのはない
それ考慮してどっち使うって当たり前の選択ができない奴多すぎるんだよ
0452デフォルトの名無しさん
2017/03/10(金) 15:40:00.20ID:y8xCqliGんなの書き方によるだろ
0453デフォルトの名無しさん
2017/03/10(金) 18:15:05.97ID:NraHDdZK俺は使うのをやめた。理由を他人に説明する必要も、他人が納得する必要もない。
0454デフォルトの名無しさん
2017/03/10(金) 18:36:12.55ID:wvkqDHaL使えるやつは使う、使えないやつは使わない
0455デフォルトの名無しさん
2017/03/10(金) 18:42:37.52ID:NraHDdZK0456デフォルトの名無しさん
2017/03/10(金) 18:43:15.86ID:NraHDdZK0457デフォルトの名無しさん
2017/03/10(金) 18:46:25.98ID:Gc8NaZGi新しいものに対応できないジャパン。
0458デフォルトの名無しさん
2017/03/10(金) 18:49:44.85ID:YN/8CtFTADO.NET直書き?
0459デフォルトの名無しさん
2017/03/10(金) 19:38:33.09ID:jSwjVui3Microsoftはバグ管理にExcel使ってるんだぞ
振り回されたらあかん
0460デフォルトの名無しさん
2017/03/10(金) 19:44:07.45ID:PPM6ZnbB日本もこれからはMVCとPOCOにシフトしていくだろうね(希望)
0461デフォルトの名無しさん
2017/03/10(金) 20:10:01.97ID:cBCq3F3F基本的にはEntityFrameworkで、パフォーマンスほしいとこはDapper
0462デフォルトの名無しさん
2017/03/10(金) 20:35:03.91ID:BdCDiQus0463デフォルトの名無しさん
2017/03/10(金) 20:40:29.72ID:cBCq3F3F上にもいろいろ比較出てるけど、とにかく速くて簡単
DBとオブジェクトの最低限のマッピングだけでいい場合はこれで十分
0464デフォルトの名無しさん
2017/03/11(土) 09:49:08.82ID:+LwMML+Jクライアントにキャッシュさせて更新があった時だけアクセスしてほしいです
0465デフォルトの名無しさん
2017/03/11(土) 09:53:48.23ID:h5T3JHpBブラウザーがやってくれるんじゃないか?
0466デフォルトの名無しさん
2017/03/11(土) 13:46:01.01ID:SoGUL2Zuタプルとか求めていたものが有ったので使おうとしたら
ValueTupleのライブラリが標準で入らずNuGetにしか無いとか
まだ安定しない無いとか何かあるんだろうか・・・
凄い作りかけ感あるコンパイラに仕上がってるwww
使うべきか暫く様子見すべきか?
0467デフォルトの名無しさん
2017/03/11(土) 13:50:47.46ID:/3A6iA0R0468デフォルトの名無しさん
2017/03/11(土) 14:02:34.64ID: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();
}
0469デフォルトの名無しさん
2017/03/11(土) 14:40:42.15ID:SoGUL2Zuhttp://www.buildinsider.net/column/iwanaga-nobuyuki/008
言語みたいな基幹部分を小出しにするとか、頭おかしくなってるなw
今までそんな事をした言語の末路がどうなったか知らないわけじゃなかろうに・・・
NuGetにして普通にコードする人には使わせないようにするのは、これはヤバイと中の人が感じているのかもしれんね
マイクロソフトの技術力&組織力低下酷いな、半端に才能ある奴のスタンドプレーでグダクダなってるんだろうな。
Web系に翻弄され過ぎだろ
とりあえず使えそうなのは、ローカル関数と型switchくらいかな
この辺りなら変更あってもダメージ少ないだろうし。
タプルの実装に致命的問題があるならローカルclass&struct&enum宣言でもええんやでぇ
名前空間お腐れ問題はカッコイイ事しなくても、これでも解決するんや > microsoft
0470デフォルトの名無しさん
2017/03/11(土) 15:24:01.58ID:SoGUL2Zu横だけど、式木はちゃんと言語でサポートしなきゃ誰にも読めない言語になるなと思った。
逆に、それ自体は難解でもないし難しい話じゃないなとも。
プログラムとは違うけれど
3Dモデラーでツリー構造とか法線とか難解な数学概念が見ての通りの操作で動かしたり創れたりするようになって
門外漢の3Dデザイナーが普通に使えるようになったように
一度概念をキッチリ整理する必要があるんだよ、あれは。
そして言語の作りこみがあの頃から甘くなってき始めてたな、ちょっと残念な感じになっていった時代だね。
とりあえず腐り過ぎのWin10をWin7の仕様に戻せや、ストアもユニバーサルアプリも使い物にならん、色使いも糞でUIが見ずらい > microsoft
あと、WindowsUpdateのタイミングはユーザーの自由にさせよ、お前がお前のタイミングで勝手にやったら業務はむちゃくちゃになる。
0471デフォルトの名無しさん
2017/03/11(土) 22:05:54.03ID:h5T3JHpBタプルなんて昔からあるだろ
0472デフォルトの名無しさん
2017/03/11(土) 22:18:07.78ID:15EAzLR8残念ながら昔からあるTuple<>とは全くの別物
機能的には匿名型にも似ているが、匿名型との互換性もない
ローカル関数なんかも極めて場当たり的なゴミだろ
デリゲートの型を省略できるようにして var func = (int x) => x * 2; と書けた方がずっと便利
0473デフォルトの名無しさん
2017/03/11(土) 22:40:13.41ID:7U1HyGmGいつからここが初心者用になったんだ
0474デフォルトの名無しさん
2017/03/12(日) 01:14:05.08ID:+ulIycHHhttps://github.com/dotnet/roslyn/issues/13177
によると、.NET4.7に入れることにしたみたいだね
nugetで済むのに.NETのバージョンを上げるのは面倒が多いし、今後C#のリリース速度を早めるならある程度まとめて.NET4.7にしようって考えじゃないかなぁ
言語機能の小出しについても他の言語と比べれば遅いし、互換性と将来を考えて慎重に作ってるから完全な完成を待つと永遠にリリースできなくなっちゃうし、やむをえんだろ
CLRのバージョンを保ってくれれば文句は無い
0475デフォルトの名無しさん
2017/03/12(日) 02:13:23.38ID:lK2SBg8Lその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()}";
こんな感じですけど短く綺麗にしたいのですが…
0476デフォルトの名無しさん
2017/03/12(日) 02:33:41.68ID:tHLqC2EAvar result = String.Join( "", list.Skip(x).Take(y) );
0477デフォルトの名無しさん
2017/03/12(日) 05:07:11.99ID:lK2SBg8Lわー、短くて綺麗。
ありがとうございました。
0478デフォルトの名無しさん
2017/03/12(日) 06:43:42.92ID:RIOf9bqD>デリゲートの型を省略
できるならとっくにやってるんじゃないかなw
ラムダ式は書けるコードが限定され過ぎるのが問題かな。>>468 はそれではどうやっても書けないでしょう。
0479デフォルトの名無しさん
2017/03/12(日) 08:53:09.32ID:bReP5RFT自分で理解できねーもん他人に強制するその姿勢がすでにクソ
なんでその処理linqで書いた?
しかも自分は掲示板で質問しなきゃわかんねーのに
さっさと辞めちゃえお前
伸びる目もねーから
0480デフォルトの名無しさん
2017/03/12(日) 09:23:31.23ID:7tB+K/sW0481デフォルトの名無しさん
2017/03/12(日) 10:01:53.12ID:RIOf9bqD0482デフォルトの名無しさん
2017/03/12(日) 10:23:22.36ID:1QMoXo8Qそこまでする価値は無いかな。
0483デフォルトの名無しさん
2017/03/13(月) 06:11:29.33ID:o9PLbB2Zアプリ起動中はAキーを推すと左クリック Bキーをおすと右クリック Cキーを押すとアプリ終了
みたいな感じでキー入力をマウス入力にいれかえるようなアプリを作りたいんですが
Windows上でフォーカスのあるウインドに依存せずにキー入力を取得するのってどうしたらいいんでしょうか
0484デフォルトの名無しさん
2017/03/13(月) 06:55:37.31ID:2GKmTNuX0485デフォルトの名無しさん
2017/03/13(月) 07:01:39.19ID:WHuP7MmVってdobon.netで見つけた
やったことはない
0486デフォルトの名無しさん
2017/03/13(月) 07:17:17.53ID:o9PLbB2ZKeyPreviewについて調べてみます
0487デフォルトの名無しさん
2017/03/15(水) 09:07:02.25ID:k1u612YY下記のようにエンティティを定義して、それを編集するクライアントを作ろうとしています。
とりあえず、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);
0488デフォルトの名無しさん
2017/03/15(水) 09:27:37.16ID:N2+3G59Gそこまで分かってるなら解決策は簡単。
ModelIdで検索し直す。
0489デフォルトの名無しさん
2017/03/15(水) 11:16:57.42ID:k1u612YYありがとうございます、すっきりしました。
期待する結果に対してのコストが少々重くなるかなという気はしているのですが、
処理コストが問題になるほどの規模ではないので、そうさせて貰います
0490デフォルトの名無しさん
2017/03/16(木) 03:52:05.80ID:l+qA2/0G以下の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>
0491デフォルトの名無しさん
2017/03/16(木) 11:36:09.87ID:oyR0ujl00492デフォルトの名無しさん
2017/03/16(木) 16:49:18.07ID:l+qA2/0G文字列に突っ込んでるのをそのままコピペしちゃったのでそのようになってます
すいませんがエスケープは無視して考えてください。
0493デフォルトの名無しさん
2017/03/16(木) 16:58:42.52ID:Qa1xgsfZ<head>
<body>
</style>
</head>
</body>
最後のbodyを/スラッシュで括ってないからでは?
0494デフォルトの名無しさん
2017/03/16(木) 17:03:26.21ID:RyFuDdep君は冷静だな
0495デフォルトの名無しさん
2017/03/16(木) 17:05:05.86ID:Qa1xgsfZ<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML5サンプル</title>
</head>
<body>
<p>HTML5で作成しました!</p>
</body>
</html>
連投ですまん
もっと解り易いサンプル
0496デフォルトの名無しさん
2017/03/16(木) 18:14:35.84ID:kQHrflry・jquery 1系使う
・headに
<meta http-equiv="X-UA-Compatible" content="IE=edge">
等を書く
・レジストリでモード変更する
好きなのどうぞ
0497デフォルトの名無しさん
2017/03/16(木) 18:38:16.89ID:RyFuDdep君は詳しいな
0498デフォルトの名無しさん
2017/03/16(木) 20:09:32.60ID:G/L2rMHgpublic 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 を使ってますが、他のフレームワークでもいいです
0499デフォルトの名無しさん
2017/03/16(木) 20:16:08.57ID:kgKaK9fl0500デフォルトの名無しさん
2017/03/17(金) 07:37:50.30ID:gTyXrRTfTaskなんだから結果が出るのを待機すればいいだろ
Progressは呼ばれたらcalledフラグを立てるようにしてそいつでAssetする
タイムアウトが必要かどうかは状況次第
2つめは、内部でFileStreamを使っているならだが
Streamを受け取るインターフェースを追加する
クッソ遅いStreamは自由に再現できる
0501デフォルトの名無しさん
2017/03/17(金) 08:16:11.77ID:VDcrtJ6Nありがとうございます!大変助かりました!
0502デフォルトの名無しさん
2017/03/17(金) 21:11:54.40ID:G6TjLWRUやっぱり妥協かなー
>>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);
}
0503デフォルトの名無しさん
2017/03/18(土) 00:00:39.16ID:3lIBsEeSProgressのインスタンスを渡すのではなく
IProgressを継承し同期のReportを実装したクラスのインスタンスを渡す
0504デフォルトの名無しさん
2017/03/18(土) 10:58:29.15ID: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
0505デフォルトの名無しさん
2017/03/19(日) 00:14:21.68ID:xAk2llJg0506デフォルトの名無しさん
2017/03/19(日) 00:19:27.37ID:8DI2TWvJFileInfo
0507デフォルトの名無しさん
2017/03/19(日) 00:30:52.74ID:VKtnwSVxhttp://www.atmarkit.co.jp/fdotnet/dotnettips/370timestamp/timestamp.html
が一発で出てくるんだけど掲示板で聞く方が面倒じゃないの
0508デフォルトの名無しさん
2017/03/19(日) 06:34:49.31ID:bkt1N2YW0509デフォルトの名無しさん
2017/03/19(日) 13:50:14.09ID:PWrmpV5o0510デフォルトの名無しさん
2017/03/19(日) 14:33:00.16ID:DWsQT7k40511デフォルトの名無しさん
2017/03/19(日) 14:45:08.30ID:1DEeFth30512デフォルトの名無しさん
2017/03/19(日) 14:53:33.02ID:VKtnwSVxこの程度の事も検索しないのならコードなんか書けないような
0513デフォルトの名無しさん
2017/03/19(日) 15:03:19.30ID:lJcyTqFlそして煽って議論させるのも好き
だからわざわざ検索しないでここに投げてあげたりする
0514デフォルトの名無しさん
2017/03/19(日) 15:04:25.29ID:1DEeFth30515デフォルトの名無しさん
2017/03/19(日) 15:10:14.91ID:p4p+SSjy0516デフォルトの名無しさん
2017/03/19(日) 16:02:53.06ID:T5IZ831S0517デフォルトの名無しさん
2017/03/19(日) 16:06:30.35ID:z5/tCjGKそういうのは初心者向けふらっとの方でやってくれw
あそこなら解決済みでもグダグダ続けたがるのがいっぱいいる
0518デフォルトの名無しさん
2017/03/19(日) 18:48:36.73ID:lJcyTqFlでも質問してくれないと寂しいんだろ?
0519デフォルトの名無しさん
2017/03/19(日) 18:52:31.68ID:bcM43571本当にプログラムやっているのかって感じの
ここにも来てるのか
0520デフォルトの名無しさん
2017/03/19(日) 21:56:16.72ID:HC9gBYvT0521デフォルトの名無しさん
2017/03/20(月) 01:44:39.35ID:SU/B8MWaトラフィックエクスチェンジ
http://tra-chan.jugem.jp/?eid=1
0522デフォルトの名無しさん
2017/03/20(月) 10:11:03.85ID:Afs087wZ0523デフォルトの名無しさん
2017/03/20(月) 12:24:29.57ID:y4a+UdUhマ板行け
0524デフォルトの名無しさん
2017/03/20(月) 14:10:48.91ID:pi/vFj6F0525デフォルトの名無しさん
2017/03/20(月) 14:57:32.61ID:98bjORSB0526デフォルトの名無しさん
2017/03/20(月) 15:41:51.51ID:4DDUMBY50527デフォルトの名無しさん
2017/03/20(月) 15:48:57.55ID:LcNjV7jZ0528デフォルトの名無しさん
2017/03/20(月) 16:00:23.53ID:pi/vFj6Fいい加減うざいって、お前らずっとスレちがい
0529デフォルトの名無しさん
2017/03/21(火) 05:52:14.36ID:SG0A/rfmジェネリックのローカル関数まで書けるのにオーバーロードは出来ない事に気づいてがっかりモードになっている件
なぜできんOrz
あと大抵の場合キャプチャは要らないんだけどな・・・
0b1110_1011 とか二進数のリテラル地味に便利w
0530デフォルトの名無しさん
2017/03/21(火) 06:45:57.61ID:0zsWCCNl内部で使うだけなら紛らわしいだけだろ
オーバーロードが欲しくなるほど長いメソッドを作ること自体が間違ってるし
0531デフォルトの名無しさん
2017/03/21(火) 14:40:35.20ID:SG0A/rfmそんな事は無いよ、型別にスイッチするくらいならオーバーロード見通しいい
0532デフォルトの名無しさん
2017/03/21(火) 19:18:26.99ID:bA9h/8/p中で分岐させて使え、その方が保守楽だから
↑
って言われたことある。
オマエラも結局中で分岐させてる?
0533デフォルトの名無しさん
2017/03/21(火) 19:23:26.02ID:qbQ1Fjub時と場合による
何でもかんでも共通部分をまとめようとするのはバカだが
0534デフォルトの名無しさん
2017/03/21(火) 19:24:42.66ID:qRIPyX6L似たような処理のメソッドが複数出来る時点で設計からして間違っているだろうし
0535デフォルトの名無しさん
2017/03/21(火) 19:30:08.87ID:72kEtT2Q利用するかどうかは別にしてわざわざ禁止するほどのことではないよね
ってことだろ
0536デフォルトの名無しさん
2017/03/21(火) 19:31:27.83ID:qbQ1Fjubループ中で分岐処理が必要な場合があるので2行目は違うと思う
速度ちょっとでも稼ぎたいと思ったらループの外で分岐させておくだろうし
0537デフォルトの名無しさん
2017/03/21(火) 19:39:30.55ID:RrALGwywそういうことするとすぐに分岐が増えて収集がつかなくなる
この業界は既存のコードの権力が強すぎる
一回でもはまるともう最後まで逃れられない
だから最初から妥協せずクリーンな状態を維持し続けるしかない
0538デフォルトの名無しさん
2017/03/21(火) 19:50:56.44ID:UqOt5XZ1実行して見ないとなんの処理が走るか分からないコードにメリットなんて感じない
資料にも書けないしお客さんにも説明できない
0539デフォルトの名無しさん
2017/03/21(火) 20:14:47.71ID:7sd4gAxoオーバーロードを許すと実装コストは増えるよ
オーバーロードされたメソッドのマングリングってこれまでにやったことないはず
クソ長いメソッドを定義する馬鹿のために無駄な実装コストをかけることは許容できない
0540デフォルトの名無しさん
2017/03/21(火) 23:05:57.08ID:UqOt5XZ10541デフォルトの名無しさん
2017/03/22(水) 02:05:33.87ID:YDOC/IGa可能なら多分やってる、というかキャプチャ無しならオーバーロード可能にしてほしい感じ
さらにいうなら、キャプチャ無し指定をして普通のメソッドが単純に名前空間上に合わられないだけにして欲しい。
でもって、ローカル変数と被る名前OKにしてくれれば一番いい。
結局、ローカル関数にした理由はインテリセンスが機能不全になって欲しくないという話なだけだから。
0542デフォルトの名無しさん
2017/03/22(水) 02:11:31.86ID:YDOC/IGa関数型言語のように一度割り当てられたら変更がないことが保証されれば見通し良いし使い勝手も良いけれど
手続き型言語にキャプチャが入ると見通し悪い事この上ないから、可能な限り使わないようにしたい気分になっている。
0543デフォルトの名無しさん
2017/03/22(水) 11:28:29.87ID:hks7EAC10544デフォルトの名無しさん
2017/03/22(水) 12:58:18.38ID:7zaDxJTN何で作れない分際で文句言ってるんだか
0545デフォルトの名無しさん
2017/03/22(水) 13:01:02.87ID:+8Koiwe20546デフォルトの名無しさん
2017/03/22(水) 13:23:33.31ID:6nIA/xoV0547デフォルトの名無しさん
2017/03/22(水) 13:50:44.67ID:FLtL2zh7お前も同レベルに頭わるそうだなw
0548デフォルトの名無しさん
2017/03/22(水) 14:47:13.98ID:T50yqk9Qできらぁ!
0549デフォルトの名無しさん
2017/03/22(水) 15:44:09.05ID:YDOC/IGaまさに作りかけwwwww
0550デフォルトの名無しさん
2017/03/22(水) 15:45:53.48ID:YDOC/IGaみんなで同じものを使うから意味があるんだよ、一人で勝手に作って勝手にやってたら滅茶苦茶なるだろw
0551デフォルトの名無しさん
2017/03/22(水) 19:44:37.37ID:JvcKijZm0552デフォルトの名無しさん
2017/03/22(水) 20:41:21.23ID:qEl3ed9E0553デフォルトの名無しさん
2017/03/22(水) 20:59:39.74ID:eP+YAd4zそれ、お前がメクラなだけじゃね?
0554デフォルトの名無しさん
2017/03/22(水) 21:17:25.63ID:YDOC/IGaDelphiの開発者で、ゲイツ御大にC#のアーキテクトしてボーランドから引き抜かれた人
0555デフォルトの名無しさん
2017/03/22(水) 21:23:40.38ID:YDOC/IGaどんどん品質が落ちていく
誰だよこんな糞な手段はやらした馬鹿は
Windows10もVisualStudioもボロボロやん
0556デフォルトの名無しさん
2017/03/22(水) 22:28:00.53ID:MyrW3Mfdどんどんお前が老いていってるだけ
0557デフォルトの名無しさん
2017/03/22(水) 22:41:57.96ID:Qh2JSeLTRazorって本当に便利なのかな?生産性あがる?
0558デフォルトの名無しさん
2017/03/23(木) 01:12:53.78ID:eX8m9MWo0559デフォルトの名無しさん
2017/03/23(木) 01:47:02.34ID:FaFIhE+0invokeを書けばメソッドを呼び出してプロパティにアクセスできるのは分かるのですが
invokeがないと何がダメなのか内部的なことを教えていただけますか?
0560デフォルトの名無しさん
2017/03/23(木) 01:52:24.45ID:Un9Q+jtZ心配しなくても若い子はもうWindowsも使わなければVisutalStduio何それ?状態だからw
みんなWeb系でスマホばっかりやっている。
もう、ここに残っているのは年寄りだけだよw
0561デフォルトの名無しさん
2017/03/23(木) 01:56:59.96ID:Un9Q+jtZ昔のシングルスレッド時代の遺産を引きずっているんだよ
Formは、半ばラッパーライブラリなので。
シングルスレッドの利点はデッドロックの可能性がないこと。
マルチスレッド当たり前になってしまった今だと、逆にデッドロックの元になってしまったりと困った有様だけど。
遺産の量が大きいので、全く別の物を作るのは簡単ではないだろうね。
0562デフォルトの名無しさん
2017/03/23(木) 02:00:44.79ID:FaFIhE+0ありがとうございます
もっと詳しく知りたいのですがどう言葉で調べればよいのでしょうか?
できればネットで調べれるものがよいのですが、書籍でも平気です
英語のサイトでも平気です
なにかあれば教えていただけますか?
0563デフォルトの名無しさん
2017/03/23(木) 02:04:38.43ID:VjAjr2s9UI関連は、UIスレッドでのみ動作することを前提に設計することで、パフォーマンスを上げてる。
マルチスレッド対応にすると排他制御等が増えてしまい、パフォーマンスが下がる。
>>561
非同期処理とか書きやすくなったから、最近は割と楽だろ。
Invokeも使う必要ないし。
0564デフォルトの名無しさん
2017/03/23(木) 02:05:51.99ID:Un9Q+jtZC言語から、直接Win32APIを叩いてみればわかると思うよ。
WM_XXXXとかを直接使ってGUIを動かしてみれば、古いインターフェイスの感触どんなもんか分かるかと。
年代物なので、古本屋でWin32の本でも探してみるのもいいかも。
今更みる価値あるのかって思うので、お勧めはしないけど。
0565デフォルトの名無しさん
2017/03/23(木) 02:07:28.88ID:Un9Q+jtZTask作った奴はバカだと思うwww
Invokeの方がまだ誰にでも分かりやすい。
継続なにそれおいしいのwww
関数型言語面白いねって感じだね
0566デフォルトの名無しさん
2017/03/23(木) 02:09:33.89ID:Un9Q+jtZ時代錯誤も甚だしいよな・・・
0567デフォルトの名無しさん
2017/03/23(木) 02:16:32.78ID:FaFIhE+0新人にinvokeを教える際に困ってしまったので
浅くでも知識として知っておきたかったので助かりました
Win32からの流れなのですね、Formだけこんなに違うのはそういうことなのですね。。
時間があるときにもう少し調べてみようと思います
ありがとうございました
0568デフォルトの名無しさん
2017/03/23(木) 02:21:34.59ID:VjAjr2s9async/awaitやIProgress<T>あるから、Taskの継続を直接使う事はあまり無いな。
間接的には使ってるわけだが。
0569デフォルトの名無しさん
2017/03/23(木) 02:21:39.46ID:9gkqdxMB時代関係ないから
スレッドセーフにするとパフォーマンスが犠牲になるのはUIだけじゃない
BCLのクラスのインスタンスメソッドも大半はスレッドセーフじゃない
0570デフォルトの名無しさん
2017/03/23(木) 02:22:11.13ID:Un9Q+jtZメッセージ飛ばしたり、メール飛ばしたり、色々試行錯誤の末にC++の仮想テーブル方式にたどり着く訳だけれども
その前の段階のオブジェクト指向が見れるよw
0571デフォルトの名無しさん
2017/03/23(木) 02:23:39.71ID:Un9Q+jtZいつまでも凝り固まってますねwww
もうハイハイって感じですわ
0572デフォルトの名無しさん
2017/03/23(木) 02:28:42.19ID:Ei+8urX3フォームに関しては最初からマルチスレッド対応でinvokeの必要無しの方が良かった気がするが。
0573デフォルトの名無しさん
2017/03/23(木) 02:30:27.90ID:9gkqdxMBいるよね、こういう量的な進歩と質的な進歩の区別のつかない奴
馬鹿な奴だ
0574デフォルトの名無しさん
2017/03/23(木) 02:31:53.25ID:VjAjr2s9排他制御のコストは大きいから、なるべくそれを無くす設計が重要。
0575デフォルトの名無しさん
2017/03/23(木) 02:32:30.61ID:Un9Q+jtZいやいや、それでもあった方がいいよ
マルチスレッドできっちり分散できれば、1CPU辺りの負荷が軽くなる
すると低クロックで動いて消費電力が小さい。
シングルスレッドだと、同じ負荷でも1CPUに集中するからクロックが上がってしまう。
0576デフォルトの名無しさん
2017/03/23(木) 02:35:01.08ID:Un9Q+jtZ質的にはTaskは逆立ちして徒競走しているようなモンだなw
普通立ってに走れよ、頭オカシイんかいってなもんだね。
0577デフォルトの名無しさん
2017/03/23(木) 02:36:32.46ID:9gkqdxMBパソヲタレベルでも知ってる常識だと思ったけどプログラマでもそういう認識がない奴がいるんだね。
そういう奴は「人月の神話」って言葉も聞いたことないんだろうな。
生産性は作業者の投入人数に比例しないのはコンピュータも同じだよ馬鹿
0578デフォルトの名無しさん
2017/03/23(木) 02:38:13.08ID:Ei+8urX3いやお前実は分かってないだろ。
575はinvokeを肯定しているぞ。てかお前どっち派よ?
0579デフォルトの名無しさん
2017/03/23(木) 02:40:35.49ID:Un9Q+jtZasync / await 最新わかってる俺スゲーなヤツが死んでほしい派
技術的には、まぁあるもん使うさってなもんだ。
0580デフォルトの名無しさん
2017/03/23(木) 02:57:11.32ID:VjAjr2s9Taskはスレッドプールを使いやすくしたもの。
スレッドプール自体は昔から使われるテクニックだし、なんでそこまで嫌うのか分からん。
Taskのおかげで非同期処理が非常に楽に扱えるようになったのに。
0581デフォルトの名無しさん
2017/03/23(木) 03:07:35.11ID:Un9Q+jtZ以前作って滅びたATLなんかと同じだね、入門者がすぐに理解して使えない物は糞
WPFも同様の香りがするね
分からないけれどなんとなく使えているって人だらけになって理解していないから、エラー対処ができない。
そうすると、全部特定の人に負担が行く、そんなコードやライブラリは使えない。
これはマイクロソフトの象牙の塔だよ
0582デフォルトの名無しさん
2017/03/23(木) 04:45:12.92ID:0wLqn0eU0583デフォルトの名無しさん
2017/03/23(木) 07:10:17.81ID:UmFjwc/Fユーザーインターフェイススレッド - 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スレッドであるイベントディスパッチスレッドから
>操作しなくてはならない、というルールを設けた。
0584デフォルトの名無しさん
2017/03/23(木) 07:23:37.05ID:i5lX3ZQqマルチスレッドにしようと思ったらできるんだから
0585デフォルトの名無しさん
2017/03/23(木) 08:05:24.99ID:eX8m9MWoイベントハンドラなどのユーザーコードに制御を渡す前後で
一時的に状態を変えたりしてることが多いから、
それ以外のタイミングで触られると壊れる
結局それを防ごうとするとユーザーコードの実行タイミングまでブロックすることになるので、
Invokeと変わらなくなる
0586デフォルトの名無しさん
2017/03/23(木) 08:14:01.02ID:HovpjxiM> マルチスレッドにしようと思ったらできるんだから
話がループしてるぞ
やればできるけどコールバックとかでロックの管理が面倒だしUIだから極限まで性能追い求める必要もないから
>> UI の操作は全てメインのUIスレッドであるイベントディスパッチスレッドから
>> 操作しなくてはならない、というルールを設けた。
ってことだろ
0587デフォルトの名無しさん
2017/03/23(木) 10:27:00.68ID:BTeOg9CTCOMのアパートメント問題を解決するためじゃないの?
厳密にはInvokeしなくて良いケースもあるけど、それを保証する方法が皆無に等しいという。
ウインドウメッセージ云々とか、本質とはかけ離れている気が。
0588デフォルトの名無しさん
2017/03/23(木) 12:30:56.91ID:Un9Q+jtZもう誰も使っている奴いないだろう、放棄されて保守だけが残っている。
こういう技術はいずれそうなるよ
0589デフォルトの名無しさん
2017/03/23(木) 12:53:23.45ID:Un9Q+jtZUI側がバージョン管理システムみたいな扱いをすればいいんだと思うけどね
非ロック型で同期をとる方法としては有効だと思う。
いわゆる
読み込んで、内容を変更して、読み込み時点データとともにUIに返す。
UI側は、ロックして読み込み時点と現状が一致しているなら置換してアンロックそして処理終了。
ロックオブジェクトが自分自身に限られるからデッドロックの可能性はない。
この方法の場合、読み出すだけならロック不要でいつでも読み込めるしね。
俺は、UIに関してはそういう設計にして自分のメソッドはすべてスレッドセーフだ。
長年の実績ある方法だし、このやり方は非常に優れていると思う。
更新失敗とリトライは発生するが、並列度はかなり高くなる。
デッドロックは皆無で、見通しも良い。
0590デフォルトの名無しさん
2017/03/23(木) 12:55:44.66ID:Un9Q+jtZこれのよい所は、バージョン管理システムは普通誰でも使わなきゃならないもので
どういう風に機能させるのか誰にでもすぐ分かる。
問題が発生しても初心者に簡単に解決できるという点が良いと思っている。
0591デフォルトの名無しさん
2017/03/23(木) 17:07:47.97ID:EtPn1oujマルチスレッドを根本的に理解してないのが何人かいるねw
スレッドセーフに作ることは高コストだから特に理由がない限りそうしないのは
マルチスレッド理解の初歩の初歩だと思うんだけど。
あれだ、UIは別スレッドからのアクセスを検出して例外投げるようになってるわけだけど、
例外が投げられなければ何も問題ないはずだ、っていうVBerな発想なのかねw
0592デフォルトの名無しさん
2017/03/23(木) 17:21:43.84ID:ncdnXTN/スレッドセーフなformになってもいいと思うわ
0593デフォルトの名無しさん
2017/03/23(木) 17:24:03.63ID:30c+rZIc君のコードはイベントハンドラが並列に実行されても大丈夫?
利用する側の実装コストも確実に跳ね上がるよ
0594デフォルトの名無しさん
2017/03/23(木) 18:15:58.21ID:ncdnXTN/0595デフォルトの名無しさん
2017/03/23(木) 18:57:02.57ID:99dRkoLdそこでwpfのバインディングですよ
0596デフォルトの名無しさん
2017/03/23(木) 19:28:24.32ID:Un9Q+jtZ酷いやり方というのはある意味正しい
そもそもformsが腐っている以上綺麗な方法はハナから存在しない。
それでも誰にでもわかり、誰にでも修正可能なやり方っていうのが重要なんだよ。
それができなきゃ、一人で勝手にやっていろって話になる。
チームで作業は不可能だ。
0597デフォルトの名無しさん
2017/03/23(木) 19:30:23.84ID:Un9Q+jtZ誰にもメンテできなるなる典型w
0598デフォルトの名無しさん
2017/03/23(木) 19:32:40.10ID:Ei+8urX3> GUIライブラリからアプリケーションをコールバックしたりと、
これってあるか?ピンとこない。
そもそも、UIってロックする必要があるか?
現状、UIスレッドとタスクスレッドは別で、結果的にプログレスバー等の更新にはinvokeを使うしかない。
これがウザイから「直に書き込みさせてくれ」というのが俺の希望。
そもそも、排他的な実装をしなければならない理由がないだろ。
プログレスバーなんて普通は共有しないし、
してたらしてたで「どちらの内容が表示されてもいい」が仕様になるのだから、
レーシングしたところで問題ない。
結果、リクエストがあったらただ更新すればいいだけ、それを表示すればいいだけ、で終わりじゃないか?
ファイルみたいにロックありきの物ではないと思うんだが。
0599デフォルトの名無しさん
2017/03/23(木) 19:35:54.46ID:g/kXmQSpUIスレッドモデルが遺産だというのなら
新しいシステム(Windowsに限らんぞ)ほど「そうなってはいない」はずだが
実際は最近のOS(やはりWindowsに限らない)でもUIスレッドモデルだ
何故だろうなあ
下手の考えなんぞ大抵は
「先人が思いついたけどあえてやらなかった」か「すでに失敗した」か
0600デフォルトの名無しさん
2017/03/23(木) 19:36:15.02ID:Un9Q+jtZあれはマジ使える、ただし誰にでも使えるものでは無い。
こういう物は、チーム作業には向かない。
少人数で高度なプログラミングをするのには向いているがね。
で、C#はHaskellみたいなアプリケーションを作るために開発されたものなのかというと、それは違う。
誰でも使えるBasicの延長線上のものだ。
TaskもWPFもHaskellみたいな超絶技巧を目指しているだな、そんなものは要求されていないのに。
0601デフォルトの名無しさん
2017/03/23(木) 19:37:49.41ID:Ei+8urX3あー、WPFのバインディングはこれを目指していたのか。
なるほど俺の要求だけならこれでいいわ。
0602デフォルトの名無しさん
2017/03/23(木) 19:39:47.03ID:FkdET+B0新しい技術のおかげでプログラミングはますます簡単になってるのに
まるで難しくなったような意見が出てくる
0603デフォルトの名無しさん
2017/03/23(木) 19:40:57.33ID:Un9Q+jtZ多分、社内政治とスタンドプレーの果てにこうなったんだろうなと。
だから、マイクロソフトは象牙の塔。
勉強しまくっているが自分のやっている事しか見えていない奴が音頭を取り始めてしまっている。
0604デフォルトの名無しさん
2017/03/23(木) 19:46:09.55ID:J2eFkRx5知恵袋で恋愛相談してるクソアマかテメー
0605デフォルトの名無しさん
2017/03/23(木) 19:57:59.50ID:HovpjxiM> UI側は、ロックして読み込み時点と現状が一致しているなら置換してアンロックそして処理終了。
一致してない時に再計算をする必要があるからその計算が軽い時に有効な方法
ちなみにバージョン管理システムでは他の人が変更してるからやり直せって言ったら使い物にならないのでいわゆるマージ処理を行うのでちょっと違う
0606デフォルトの名無しさん
2017/03/23(木) 20:26:39.42ID:HovpjxiMGUI 組んだことないのか?
イベントってフレームワークからのアプリケーションの呼び出しだぞ
あとロックするのは GUI のフレームワークじゃなくてアプリケーションの方
マルチスレッド化したフレームワークだとイベントっていつ発生するかわからないのでお前みたいなよくわかってない奴が組むとデッドロックを引き起こしたりしやすいって話
0607デフォルトの名無しさん
2017/03/23(木) 20:27:34.06ID:99dRkoLd但しコレクションに関してはBindingOperations・・・のおまじないが必要だ
0608デフォルトの名無しさん
2017/03/23(木) 20:48:03.89ID:Ei+8urX3今時GUIしかやらんだろ。
が、まあこっちの認識がずれていたのは分かった。
>アプリケーションからGUIライブラリを呼んだり、
>GUIライブラリからアプリケーションをコールバックしたりと、
>双方向に呼び出すことが多く、
前者が「プログレスバーの更新」で、
後者が「 XXX.click += YYYY;」か。
確かに双方向だ。
で、ロックは必要か?
プログレスバーの更新なんて、ロックする必要ないだろ。
他もそうだと思うが。
0609デフォルトの名無しさん
2017/03/23(木) 20:49:29.54ID:30c+rZIc具体的な最大の問題は、マルチスレッドアクセスを許容するとUIスレッド上で排他処理をしなきゃいけないことなんだよな
UIスレッドは多種多様なタスクによってタイトに使い回されるので、それをブロックすることは容易にデッドロックを引き起こす
UIスレッド上で別の処理Xが終わるのを待ってたら、XもUIスレッド上で呼び出される処理で
いつまでもXが呼ばれなくなりデッドロック、というのはよくあるパターン
0610デフォルトの名無しさん
2017/03/23(木) 20:55:57.96ID:30c+rZIcそのプログレスバーの更新一つとっても中でどれだけ複雑なことをやっているかは君にも想像できるだろ?
君がロックしてるつもりがなくてもプログレスバーの更新処理を呼び出せば内部で当然ロックがかかる
0611デフォルトの名無しさん
2017/03/23(木) 21:00:57.40ID:Ei+8urX3普通に組んだらデッドロックはしなく無いか?例えば、
1. UI <- Task_thread_A で Aが止まる。
2. Task_thread_A <- Task_thread_B で Bが止まる、ここまではありがち。
3. Task_threadB <- UI :これはねーよ。
UIスレッドがTaskスレッドを見てロックするという使い方は普通しないだろ。
0612デフォルトの名無しさん
2017/03/23(木) 21:14:48.29ID:Ei+8urX3いや、ロックの必要はないだろ。
正確に言えば、外部からの明示的なロックが必要無いように作れば作れるだろ。
今そうなってないだけで。
要するにプログレスバーを UI, Task_thread_A, Task_thread_B の
どこからも更新出来るようにしたいとして、
全部、 progressBar.value = x; と書かせろ、と言いたいだけで。
内部的に細かくロックして、順に処理するのはCLRが勝手にすればいい。
その結果、それぞれのスレッドが微妙にロックするのも仕方ない。
ただ、循環ロックにならない限り、デッドロックにはならないだろ。
そして普通に書けば、循環ロックにはならないだろ。
0613デフォルトの名無しさん
2017/03/23(木) 21:17:21.47ID:5A+rvbXC0614デフォルトの名無しさん
2017/03/23(木) 21:24:07.98ID:NnBP2eXCGUIしかやらない?どこの世界の話だよ
0615デフォルトの名無しさん
2017/03/23(木) 21:27:34.82ID:VjAjr2s9アトミックなデータでない限り、読み出しでロックが不要は誤り。
更新中の中途半端なデータが読みだされたらどうすんの。
0616デフォルトの名無しさん
2017/03/23(木) 21:30:44.46ID:5A+rvbXC毛がなくて良かったね〜
0617デフォルトの名無しさん
2017/03/23(木) 21:32:55.65ID:HovpjxiM> あとロックするのは GUI のフレームワークじゃなくてアプリケーションの方
の意味を理解してないのかよ...
そりゃ単純にプログレスバーに表示するぐらいなら問題は発生しないよ w
例えば複数の銀行口座の預金額を表示して振り込みを行うアプリケーションを作るとして
他の端末から入/出金があるのです定期的に預金額を更新しようとしたら各口座をロックして値を読み出してロック解除して画面を更新するだろ
でないと額の不整合が起きるからな
このロックして時に振り込みボタンが押されたら当然こっちも振り込み元と振込先の口座をロックしないとダメだろ
でこのロックの順番がテレコになってたら簡単にデッドロックをするって訳
もちろんちゃんとロック順序を考えて組めばいいんだけどでかいシステムをよくわかってないドカタに組ませることを考えたらわざわざそんな危険な構造にする意味がないってこと
前にも書いたけどUIなので超高速で画面のあちこちが更新できても意味ないしな
0618デフォルトの名無しさん
2017/03/23(木) 21:33:06.10ID:0wLqn0eU寝ぼけるのはいいかげんにしろ。
0619デフォルトの名無しさん
2017/03/23(木) 21:34:23.52ID:5A+rvbXC0620デフォルトの名無しさん
2017/03/23(木) 22:20:43.54ID:ncdnXTN/> 定期的に預金額を更新しようとしたら各口座をロックして値を読み出してロック解除して画面を更新するだろ
そういう糞UIでもつくれるけど、まともだったらやらないよ・・・
0621デフォルトの名無しさん
2017/03/23(木) 23:30:21.13ID:u0oYY3Ciで、お前はどうやるんだい?
0622デフォルトの名無しさん
2017/03/23(木) 23:38:12.29ID:uQaoHdGv複数のデータの不整合が問題になる場合は微妙だけど、その場合でも
2回一致するまで読む方が低コスト
0623デフォルトの名無しさん
2017/03/23(木) 23:39:06.22ID:uQaoHdGv0624デフォルトの名無しさん
2017/03/23(木) 23:47:48.47ID:Ei+8urX30625デフォルトの名無しさん
2017/03/23(木) 23:50:59.28ID:Ei+8urX3ちげーよ。まあ結論としては、簡単に出来るけどC#はやらなかった、というだけだ。
そして俺はこの選択は間違いだったと見るね。
実装例としては以下。(C#の文法は知らないので真似てみた。適宜脳内修正よろしく)
//ここにコードを書いたのだが、403 Forbidden になるぜorz
mutexを使う場合、mutex確保中に他ロックを取りに行かなければデッドロックはしない。
或いはthread_IDを付けておいて、UIなら直接変更、その他ならinvokeにしてもいい。
いずれにしても、ユーザー側にはinvokeが見えなくなる(隠蔽される)
これの方が良かったと思うよ。いちいち混乱しなかった。
そちらの例は、2人のユーザ間でのデッドロックであって、
俺が今話しているUI/タスクスレッド間の例じゃないじゃん。
なお、解法は、普通に「両方取れなかった場合は一旦全部リリースしてリトライ」でいい。
ただし今時はそれはDB任せで、ユーザ側でのロック管理なんてしない(はず)
0626デフォルトの名無しさん
2017/03/23(木) 23:52:19.70ID:FkdET+B0Invokeを適当なプロパティでラップしろで終わる話じゃないのこれ?
0627デフォルトの名無しさん
2017/03/23(木) 23:53:41.78ID:u0oYY3Ciケースバイケースだろ
そもそも >>617 は説明のためのサンプルだから不満なら両方書き込みのケースを考えればいいだけ
>>623
マルチスレッドGUIフレームワークに夢見てる奴がいるからでしょ w
0628デフォルトの名無しさん
2017/03/23(木) 23:54:44.80ID:Ei+8urX3その通りだ。そしてそのコードを貼ろうとしている。
つか、貼らなくても分かるんならもういいね。
0629デフォルトの名無しさん
2017/03/23(木) 23:57:20.64ID:u0oYY3Ci> 俺が今話しているUI/タスクスレッド間の例じゃないじゃん。
そんなことを言ってるのお前だけ
>>583 をちゃんと読み返せよ
0630デフォルトの名無しさん
2017/03/24(金) 00:00:02.01ID:Lq7k+m1vそんな力業してないでリーダー/ライターロック使いなよ。
比較のループとかデータ量次第ではCPUパワーの無駄遣いだろ。
0631デフォルトの名無しさん
2017/03/24(金) 00:07:18.67ID:P/PrHj1pこれができないプログラマはいつまでも三流のまま
コードを書き使ってもらい持論を証明するんだよ
0632デフォルトの名無しさん
2017/03/24(金) 00:13:35.16ID:OAgok+ciアパートメントの制限に対応するために用意された、実装上の都合による物だよ
おそらく、ロックの問題ではなく
リソースリークを根本的に解決する方法がないから用意された手続きなんだよ。
ラップして解決できると思うなら、それで良いんじゃないか
0633デフォルトの名無しさん
2017/03/24(金) 00:14:57.73ID:gW3AbLz/0634デフォルトの名無しさん
2017/03/24(金) 00:38:36.13ID:9w5lj4S/非同期メソッドの完了を基本的にはawaitで待つから
非同期メソッドを複数回実行するような場合だと
全部同期呼び出しにして全部まとめてTask.Runしたい。
0635デフォルトの名無しさん
2017/03/24(金) 00:50:30.06ID:RtKD05ZR俺は622じゃないけど。
従来型のロック機構だとコストが高すぎる場合もあるんだよ。
俺は詳しくないけど、多分Erlangとかの世界で。
mutex等は共有メモリへの書き込みが生じるから実はかなり重い。
0636デフォルトの名無しさん
2017/03/24(金) 02:13:48.63ID:5bMFJR3b0637デフォルトの名無しさん
2017/03/24(金) 02:33:18.25ID:99176uAdUI弄る時だけInvokeした方が見通しすっきりするんだよねw
async/awaitとか使うよりは
ここがUIスレッドですってはっきりわかる。
0638デフォルトの名無しさん
2017/03/24(金) 02:44:50.15ID:7cONiVN50639デフォルトの名無しさん
2017/03/24(金) 02:50:50.13ID:99176uAdそんなもんが必要なモバイルなら普通にJavaScriptにWebアプリで行くわって感じだねw
0640デフォルトの名無しさん
2017/03/24(金) 03:11:50.24ID:m/LurhmoprogressBar.Value+=1
としたときに
1.読み込み
2.加算して書き込み
の処理が必要とすると、1と2の間に別スレッドが書き換えを行うことで結果が矛盾する
Interlocked命令を使えばそれは防げるけど、MaxValueを超えないかとかの判定が入るので結局ロックが必要
この程度ならまだしも、裏でWin32やCOMを叩いてるコントロールはさらにややこしい
0641デフォルトの名無しさん
2017/03/24(金) 03:44:24.59ID:5bMFJR3b0642デフォルトの名無しさん
2017/03/24(金) 06:28:32.59ID:Cpc8yNoh0643デフォルトの名無しさん
2017/03/24(金) 07:23:36.10ID:vGZXBTd1馬鹿はphp書いてろ
0644デフォルトの名無しさん
2017/03/24(金) 07:56:00.46ID:P/PrHj1p壊れても遅くてもいいからとにかくプロパティで書きたいというのが要件
0645デフォルトの名無しさん
2017/03/24(金) 08:24:47.57ID:gW3AbLz/頑張って作ってくれとしか言いようがないな
0646デフォルトの名無しさん
2017/03/24(金) 12:55:58.77ID:99176uAd横だけれど、そもそも問題としてValueをインクリメントする事自体が余り良くない考え方かもね。それは表示と処理が分離できていないから。
カウント処理のカウンターはUIがもっているべきじゃない。
別途カウンターを作って、結果だけをUIに代入すべきだ。
このように設計されているなら、破損無視で書き込んでもうまく動作するだろうと思う。
問題は、それをすべての人に要求するのは難しい、自分の忙しくなったらきちんとせずにインクリメントしてるしなw
という事なんだな。
0647デフォルトの名無しさん
2017/03/24(金) 15:14:34.51ID:suDsBIm10648デフォルトの名無しさん
2017/03/24(金) 16:13:38.13ID:m/Lurhmo今もそうなってるじゃん
ProgressBarクラスがカウンターを持ってて、ネイティブのmsctls_progress32にメッセージを送って表示を更新してる
ぜひスレッドセーフに再実装してみてくれ
0649デフォルトの名無しさん
2017/03/24(金) 18:30:43.13ID:kZHdS/d5> カウント処理のカウンターはUIがもっているべきじゃない。
そんな低レベルな話をしてるのは ID:Ei+8urX3 だけだから、お前らもうでてくるな
0650デフォルトの名無しさん
2017/03/24(金) 19:42:33.91ID:RtKD05ZR> 結局ロックが必要
いや、要らん。正確には、要らない組み方はある。
アトミックはデータを構造体にして参照を持つことで解決出来る。(一発ライト)
レーシングはインミュータブルと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
つかいつからお前らこんなに馬鹿になったんだ?ふらっとから混ざったのか?
ロックの設計の仕方を知らないのはお前ら全員じゃねーかよ。
0651デフォルトの名無しさん
2017/03/24(金) 19:51:21.19ID:9LJ2CaVFなーんかしょうもない話を延々続けて頭悪そうだけど、
特に理由がない限りわざわざスレッドセーフに作らないのはGUIに限らんって何度言えばわかるの?
馬鹿なのかほんと
0652デフォルトの名無しさん
2017/03/24(金) 19:54:06.25ID:HsxCjAja2と3もロックされなければ既に破棄され別の領域として
再利用された誤った情報を読み出す可能性があるだろ
0653デフォルトの名無しさん
2017/03/24(金) 19:54:24.48ID:9VMQOfeXMSが苦労するのはいいとしても、その結果激増したバグに悩まされるのはお前らだぞ
0654デフォルトの名無しさん
2017/03/24(金) 20:07:48.70ID:RtKD05ZRお前がinvokeをウザイと思わなければそれでいい。
俺はinvokeをウザイと思うからMSが隠蔽しとけ、と思う。
多分後者の方が多いだろ、この件に関しては。
>>652
ついにC#がGC言語だと知らない奴も出てきたか、、、
>>653
MSはこの程度ならきっちり実装出来るよ。
というかMSって比較的まともだと思うぞ。
0655デフォルトの名無しさん
2017/03/24(金) 20:09:50.64ID:UKoqSEXl0656デフォルトの名無しさん
2017/03/24(金) 20:15:53.11ID:RtKD05ZRいちいち言ってることがアレだし。
0657デフォルトの名無しさん
2017/03/24(金) 20:24:26.17ID:RtKD05ZRただ、ProgressBarなんてどう考えてもタスクスレッドから書き換えられるのが仕様だろ。
(むしろUIスレッドから書き換えることがない)
それをいちいちinvokeはねーだろ。
せめてProgressBarだけでも対応しとけよと思うだろ普通。
0658デフォルトの名無しさん
2017/03/24(金) 20:27:59.45ID:9LJ2CaVFアレなのはお前だよ馬鹿...
しかも重症のな。
何度も言うけど、こんなのはweb上にあるようなマルチスレッドの入門記事レベルの話だ。
そもそもスレッドセーフってどういうことなのかすら理解してないし、自分でそういうコードを書いたこともないだろお前。
しかし、こういう馬鹿に限って偉そうなのは何なのかね
0659デフォルトの名無しさん
2017/03/24(金) 20:32:42.95ID:RtKD05ZRではよろしく>>658
0660デフォルトの名無しさん
2017/03/24(金) 20:57:32.53ID:UKoqSEXlProgressBarを対応させたら○○も対応させろとか言い出す人が出ると思うでしょ普通
0661デフォルトの名無しさん
2017/03/24(金) 21:56:51.21ID:vGZXBTd10662デフォルトの名無しさん
2017/03/24(金) 22:04:34.44ID:vGZXBTd1>MSならこの程度はきっちり実装出来る
ここが一番面白かった
0663デフォルトの名無しさん
2017/03/24(金) 22:13:22.45ID:RtKD05ZR>>559 > invokeってフォームに限ってどうして必要なのですか?
老害: それがしきたり。
ゆとり池沼連呼リアン>>658: スレッドセーフ!スレッドセーフ!
俺: MSが馬鹿だから。
ゆとりって連呼リアン程度の知能しかないよなマジで。
そもそも俺の>>650は>>589(俺ではない)とほぼ同じ内容だぞ。
お前ら馬鹿が付いて来れてないから書き直しただけでね。
お前らが589を最初から理解していればもっとマシな議論だったろうさ。
0664デフォルトの名無しさん
2017/03/24(金) 22:24:18.31ID:9LJ2CaVF馬鹿なのはMSじゃなくてお前だっての馬鹿
0665デフォルトの名無しさん
2017/03/24(金) 22:36:30.53ID:9LJ2CaVFControlのメンバが非ユーザーコードからも呼ばれることを理解してないからだろうなたぶん
0666デフォルトの名無しさん
2017/03/24(金) 22:41:45.59ID:RtKD05ZRお前がそう思うんなら(ry
0667デフォルトの名無しさん
2017/03/24(金) 22:42:26.38ID:9LJ2CaVF0668デフォルトの名無しさん
2017/03/25(土) 01:12:27.10ID:66tFvNtYこんなもんで余計なパフォーマンス食われるのも嫌な感じだしね
スレッド無視で叩きこめるならその方がありがたい物ではある。
インクリメント問題くらいならこっちで対処するわって感じですな。
0669デフォルトの名無しさん
2017/03/25(土) 01:17:38.46ID:66tFvNtYprogreassBarの操作をasync/awaitでブチかましてスレッドプール爆発させてた新人いたな(笑)
凄い困ってたけど、きっと何が何だか分からなかったんだろうな。
0670デフォルトの名無しさん
2017/03/25(土) 01:39:16.42ID:O6oCv4KMそもそもコードの設計論から言ってもワーカースレッドからUIを操作するなんてありえない。
UIに依存するモデルってどんな糞設計だよ。
モデルにSynchronizationContextとか持たせてUIスレッドに同期したイベントで通知させるのは
設計としてありだけど、直接コントロールをいじるとかありえん。
それも気に入らないならUI側が能動的にタイマーでも使ってモデル側を読めばいいだけ。
0671デフォルトの名無しさん
2017/03/25(土) 04:16:02.72ID:++OH//Pd0672デフォルトの名無しさん
2017/03/25(土) 09:54:01.33ID:QDpQza6Mとりあえずします。
PictureBoxのPaintイベントでImageプロパティを再設定する処理などをしてるんですが
どうもMessageBoxの挙動がおかしくなってます。
フォームより後ろに表示されてしまって操作不能になってます。
とりあえず通常のメッセージボックスの場合はパラメータを弄って強制的に全面に表示させてますが
困るがSaveFileDialogなどで上書き確認のメッセージボックスが表示された時です。
この場合も後ろに表示されてしまって操作できないのでどうしようもないです。
これを回避する方法はどうやればよいんでしょうか?
Paintイベントの中身を消去すれば普通に表示されますが出来ればそのままでメッセージボックスも前面に表示させたいです。
0673デフォルトの名無しさん
2017/03/25(土) 09:57:11.64ID:iGx2aDuI俺たちはエスパーじゃないんだから、まずそれがどんなコードか教えてくれよ
0674672
2017/03/25(土) 09:57:40.89ID:QDpQza6MPaintイベントで毎回PictureBoxのImageプロパティを再設定してるのが原因でした
下記のように条件を入れてやるだけで回避できました。
if(pic.Image != img){
…
}
0675デフォルトの名無しさん
2017/03/25(土) 09:59:45.97ID:swqPfyBg0676デフォルトの名無しさん
2017/03/25(土) 10:45:00.80ID:omxknQTjwhile(await ReadAsync().ConfigureAwait(false)) {
...
}
って書いてるライブラリがあるんだけど
件数が多くなりそうなループでasync/awaitするとタスク生成とコンテキスト切り替えのオーバーヘッドで逆にパフォーマンス悪くなったりしないもんなの?
0677デフォルトの名無しさん
2017/03/25(土) 11:08:32.17ID:oe75j5bCReadAsync使う時点でそれらよりデータソース読み取りの方がコスト大と作者が判断しているんじゃないかね
MemoryStreamに対してReadAsyncとか使っているなら知らんけど
0678デフォルトの名無しさん
2017/03/25(土) 11:09:13.59ID:kGpqWpaUそりゃ呼び出しのオーバーヘッドは増えるだろうけど、それが問題になるかどうかは別だ
パフォーマンスという言葉を安易に使うのはやめよう
君はバッチ処理をしてるのかオンライン処理をしてるのかストリーミング処理をしてるのか、
そのライブラリの方はどういう使われ方を想定してるのか、
処理の規模はどれくらいか
パフォーマンスってのは結果的に目的をどれだけうまく達成できたかであり、一面だけを見て判断できるものじゃない
0679デフォルトの名無しさん
2017/03/25(土) 11:11:43.78ID:2T3avjLL処理速度出すためにasync/await使うわけじゃないのは理解しているよな?
0680デフォルトの名無しさん
2017/03/25(土) 11:13:12.94ID:2T3avjLLパフォーマンス
スマート
0681デフォルトの名無しさん
2017/03/25(土) 12:12:06.97ID:AJzcpICNhttp://echo.2ch.net/test/read.cgi/tech/1490366833/
0682デフォルトの名無しさん
2017/03/25(土) 13:35:04.97ID:66tFvNtYとりあえず動くもの作るからな、クリックして必要な事をかける構造になっている以上
次に起こる事は、必然的にスレッドプール爆発なんだわw
0683デフォルトの名無しさん
2017/03/25(土) 14:21:07.83ID:pA2Zx06R0684デフォルトの名無しさん
2017/03/25(土) 14:49:04.12ID:66tFvNtYC#はそういう言語じゃない
0685デフォルトの名無しさん
2017/03/25(土) 15:02:20.11ID:OnvCww5G糞袋の観測範囲で
0686デフォルトの名無しさん
2017/03/25(土) 17:12:28.65ID:P4wL6N6Lローカルに設置したcssやjsファイルを読み込む方法がわかりません。
どこに配置してどのように読み込めば良いか
ご存じの方教えていただけますでしょうか?
どうぞよろしくお願いします。
0687デフォルトの名無しさん
2017/03/25(土) 18:18:23.98ID:gz8AHGhh0688デフォルトの名無しさん
2017/03/26(日) 00:26:03.65ID:b1vqxh2T0689デフォルトの名無しさん
2017/03/26(日) 11:09:36.56ID:WUrKAJmahttp://livedoor.blogimg.jp/ladymatome/imgs/7/6/76ec3c1e.jpg
0690デフォルトの名無しさん
2017/03/26(日) 12:41:56.97ID:Uwt+/Suh釣りか?マジで言ってるのなら
お前ら別の意味でのスタティックおじさんになってるぞ。
まあC#erなんてそんなもんだと今回思い知ったが。
0691デフォルトの名無しさん
2017/03/26(日) 13:20:23.73ID:x9SVAeuTたかが100回のUIスレッド切り替えでオーバーヘッドとか笑っちまうな
スレッドを無視するより書き換え回数減らしたほうが余程生産的だし簡単だ
0692デフォルトの名無しさん
2017/03/26(日) 13:20:26.49ID:hVl7ZVniそもそも今時Windowsのデスクトップアプリなんか作ってる時点で
スタティックおじさんであることを自覚したほうがいいよ
0693デフォルトの名無しさん
2017/03/26(日) 13:24:42.49ID:TjDGXANh0694デフォルトの名無しさん
2017/03/26(日) 13:28:02.28ID:WQ8v1gdY0695デフォルトの名無しさん
2017/03/26(日) 13:48:27.23ID:7xcWRiGyハングアップしてないかわかればまぁいいんでそればかりつかってる
0696デフォルトの名無しさん
2017/03/26(日) 13:59:10.19ID:TjDGXANh0697デフォルトの名無しさん
2017/03/26(日) 14:02:35.77ID:Lixhnbpuそれ追加されたの.Net2.0だから10年以上前だよ
0698デフォルトの名無しさん
2017/03/26(日) 14:03:21.73ID:xbLciI4Bでないとこのスレ埋め立てるからな
0699デフォルトの名無しさん
2017/03/26(日) 14:13:37.56ID:Lixhnbpu0700デフォルトの名無しさん
2017/03/26(日) 14:19:29.01ID:Uwt+/Suh俺は>>650だよ。そして>>640含むお前ら大多数よりは賢いことはもう示したろ。
で、>>670-671も同様にアホっぽく見える。
しかしマジでそう思っているのなら、それを示せば多少は教えてやるよ、ということだ。
何か最近、煽ったりカニンガムの法則を試しているような奴も多いんでね。
それに付き合わされるのはウザイ。
俺の意見は ID:Un9Q+jtZ とは完全には一致はしないが、
6割くらいは一致するし、彼が何を言いたいのかは分かる。
既に言ったとおり、650も>>589の代弁に近い訳でね。
お前らは>>597(重ねて言うが俺ではない)の意味を理解出来ていないように見える。
そこでお題を出してやる。
これをお前ら流の「美しい実装」をする方法を述べてみろ。
駄目出ししてやるよ。
フーリエ変換をする関数 calc_FFT があって、
計算に時間がかかるので、プログレスバーに進捗状況を表示したい。
参加する人はどうぞ。
0701デフォルトの名無しさん
2017/03/26(日) 14:24:02.60ID:13fTqv5Iまだやる気かよ。
だからねえ、そういうのは>>670に書いた2つのやり方のどちらかを選択するのが普通。
どんな方法論を取るにしろ、モデル側から直接UI部品をいじるとかありえない。
依存方向は一方通行にするなんて基本中の基本だろ
0702デフォルトの名無しさん
2017/03/26(日) 14:32:06.72ID:13fTqv5Iなっているのは不合理かどうかって話も、はっきりいって問題提起した奴が何も分かってない馬鹿なだけ。
こういう仕様は十分に合理的。
0703デフォルトの名無しさん
2017/03/26(日) 14:55:35.58ID:V5FfYo93通じない話を繰り返すな
壊れて向きが変わらなくなったチョロQかテメー
0704デフォルトの名無しさん
2017/03/26(日) 15:00:04.71ID:7VPGG3VyエキスパートからしてみてもC#を使いたい動機は素早く手軽に組みたいという動機にあるからね。
時間をかけてガチガチにやらないかぎり上手くいかないとか、それは勘弁願い下げたよな。
0705デフォルトの名無しさん
2017/03/26(日) 15:09:11.18ID:N/oWszN2いくら寛容な人間様でも下等生物と一緒にされるんでは不愉快ですわ
0706デフォルトの名無しさん
2017/03/26(日) 15:14:26.60ID:7VPGG3Vytemplateメタプログラミングならなんでもお望みの書き方でできるよ。
0707デフォルトの名無しさん
2017/03/26(日) 15:37:28.26ID:Uwt+/Suhこういうのは急いで出来る必要はないから、じっくり考えてみてよ。
当たり前だが俺は>>670-671よりもマシな解決方法を持っている(つもり)
>>701
採点結果: スタティックゆとり乙
君はどういう依存が悪いのかを理解出来ていない。
そしておそらくUIはスタティックだと信じている。
ただしMSも同様に馬鹿だった。だからFormは糞なのも事実。
しかし世の中には他の実装方法もあるって事さ。
君達がロックフリーの世界を知らなかったようにね。
ヒントとしては、
> どちらかを選択する
ここが間違っている。
何通りも用意するとか、ラップして変換するとかは、明らかに無駄だよね。
0708デフォルトの名無しさん
2017/03/26(日) 15:46:45.12ID:bdiJ1zQR斬新な煽り方だなw
0709デフォルトの名無しさん
2017/03/26(日) 16:30:36.77ID:E6fNHh8L「この俺だけが世の中の真実に覚醒した!!!この世は嘘と欺瞞にまみれていて(笑)
俺以外の連中は馬鹿ばかりだ!!!」
ってなるのは何なのかね。
まあ2chにはこういう単細胞で自分を客観的に見られない奴いっぱいいるけど、
>>707みたいにそういうタイプはプログラマとか知的な仕事についてはいけない人だよな本来
0710デフォルトの名無しさん
2017/03/26(日) 16:33:32.75ID:7VPGG3Vy0711デフォルトの名無しさん
2017/03/26(日) 17:00:26.56ID:nZrkbKSG○○おじさんが馬鹿にされる本質は金のハンマー信仰にあるのだから
0712デフォルトの名無しさん
2017/03/26(日) 17:09:41.70ID:E6fNHh8L彼はそのレベルにすら達してないよたぶん。
背後にあるトレードオフに気が付かないから不条理でないものが不条理に見えてしまう
自分の馬鹿さ加減を自覚できないだけ
0713デフォルトの名無しさん
2017/03/26(日) 18:57:25.59ID:iTS+fWTZダメ出しなんて要らん
どや顔で語りたいならぐうの音もでない実装を晒しやがれ
0714デフォルトの名無しさん
2017/03/26(日) 19:11:26.31ID:iZtP8D0nRxのISchedulerインターフェースを実装したいのですが、ScheduleメソッドのDateTimeOffsetを引数にとるオーバーロードとTimeSpanを引数にとるオーバーロードって
どのように実装すればいいのですか。
本家Rx.NETのリポジトリにあるコードをいくつか見ましたが、
なんとなく、指定された時間の分だけ遅延させて
デリゲートをInvokeさせるというのは分かりましたが、この2つのオーバーロードの具体的な実装方法を文章で書いてあるところを教えてください。
あと、戻り値がIDisposableなんですけど、これはスケジュールの解除を行うDisposableでいいですよね。
0715デフォルトの名無しさん
2017/03/26(日) 20:02:08.99ID:YTmW3NMW利根川さんきたーーーーw
0716デフォルトの名無しさん
2017/03/26(日) 20:06:43.37ID:Uwt+/Suh俺は語りたいわけじゃない。
だから君の意見を尊重して、俺の答えは書かないことにするよ。
君らは一生馬鹿なままで過ごせばいい。
C#にとどまっている限り、回りもみんな馬鹿だから、ばれないで済むだろう。
ただ、知っている奴が見たら、お前らは本当に間抜けなことをしている。
だけど、そういうのは自分でいろいろ考えないと身につかないんだよ。
だから自助努力する奴に対してはサポートしてやろうとしただけ。
とはいえ、俺の案も他言語では普通に使われる手だから、探せば出てくるはず。
それは君たちで探すんだね。
俺はくだらない煽りには本当に辟易している。
そのエネルギーは正しくプラスの方向に使うべきだよ。
マイナス方向に使って煽るのではなくてね。
君は何がしたかったんだ?
俺の面目を潰したかったのなら、俺より素晴らしい実装を先に言ってしまえばよかっただろ?
或いは他の人から、もっと素晴らしい実装が出てきたら、君にも糧になっただろ?
そうやってプラスの方向にお互いに高めていくべきなんだよ。
それを、「じゃあ教えてやらない」と言われる話の振り方をしてしまうから、
ゆとりはゆとりのままなんだよ。
聞くは一時の恥、聞かぬは一生の恥、だよ。
こんな匿名のところですら面子を重視しているうちは一生ゆとりだよ。
0717デフォルトの名無しさん
2017/03/26(日) 20:09:36.55ID:XWnO8Cg20718デフォルトの名無しさん
2017/03/26(日) 20:52:30.96ID:iTS+fWTZこういう奴が書くコードも推して知るべしなんだろうな w
0719デフォルトの名無しさん
2017/03/26(日) 21:11:54.02ID:DeCVSWGu問題なのは言ってることが正しいかどうか、それだけ。
長文かどうかなんてそれとまったく関係がない。
彼はトンチンカンな勘違いをしてるから馬鹿にされてるだけ。
0720デフォルトの名無しさん
2017/03/27(月) 00:01:17.74ID:rNkb8v7V頓珍漢なこと書く奴ってたいてい長文だろって話だぞ
0721デフォルトの名無しさん
2017/03/27(月) 00:14:45.53ID:qUMQbQ0X馬鹿の世界ではきっとすべての事柄が三行以内の短文で表現できることになってるんだろうね。
己の無学を語るに落ちてるな
0722デフォルトの名無しさん
2017/03/27(月) 00:18:01.70ID:rNkb8v7V逆とか裏とかを理解してないのってプログラマーとして致命的じゃね?
0723デフォルトの名無しさん
2017/03/27(月) 00:19:42.90ID:wneB9bMR0724デフォルトの名無しさん
2017/03/27(月) 04:02:24.71ID:UZsp8jX5せっかくなので教えて欲しい
ちょっと考えたけど、やっぱりMaximumとMinimumがValueの変換中に変わるときとかが結構めんどくさい
あと、オーナードローや継承が安全にできることも必要か
プログレスバーのValueだけどかならともかく、コントロール全部をスレッドセーフにとかは非現実的なんじゃないか?
実際近年やってるところは少し調べた限り無いし
0725デフォルトの名無しさん
2017/03/27(月) 04:51:00.01ID:FSqhbRGK誰も触れてくれなくて草
0726デフォルトの名無しさん
2017/03/27(月) 05:02:30.31ID:rNkb8v7V>>700 に言えよ w
0727デフォルトの名無しさん
2017/03/27(月) 14:11:21.66ID:H4MLQPNTまあ正直今時Rxかよwwwwww
と草生えるからな
保守案件かも知らんが御愁傷様だ
0728デフォルトの名無しさん
2017/03/27(月) 15:09:08.98ID:OggmZorO知ってるのが当然みたいに言われても困る
.NET Fx以外の個別のライブラリについてはスレ違い
0729デフォルトの名無しさん
2017/03/27(月) 22:59:41.60ID:ty5ByWfaスタティックおじさんって誰よ?
0730デフォルトの名無しさん
2017/03/27(月) 23:14:42.86ID:53TkDvRN知らなかったのか
0731デフォルトの名無しさん
2017/03/27(月) 23:28:21.19ID:c1Kh3EUH0732デフォルトの名無しさん
2017/03/27(月) 23:52:27.87ID:dYBhOZra0733デフォルトの名無しさん
2017/03/28(火) 07:20:39.72ID:1WRXezaS不二痛のノンプログラミングツールの
販促で 銀の弾丸を求めて とか
書いてあったの思い出した
あんな大手企業がスゲー認識してるなと思った
0734デフォルトの名無しさん
2017/03/28(火) 08:08:28.90ID:W2JaqSVc0735デフォルトの名無しさん
2017/03/28(火) 16:32:12.10ID:WR7Bj+dr0736デフォルトの名無しさん
2017/03/30(木) 00:54:43.35ID:8DsEMtOy0737デフォルトの名無しさん
2017/03/30(木) 01:35:10.25ID:DtnWdi8P0738デフォルトの名無しさん
2017/03/30(木) 01:58:32.69ID:Qg6ZUcGUFormが閉じられた後も紐づけしたままだとお漏らしになるんだっけ?
0739デフォルトの名無しさん
2017/03/30(木) 02:50:16.54ID:DVY8Bk9i動くよ、ググってみ
0740デフォルトの名無しさん
2017/03/30(木) 06:49:49.86ID:U97Tvha+ならない
0741デフォルトの名無しさん
2017/03/31(金) 09:35:08.92ID:YcsHI68o操作したいコントロールの多くに一意のAutomatinIDが割り当てられていません。多くのコントロールのIDが1や2になっています。
一応、コントロールの順番が変わらないものと決め打ちして操作したいコントロールを特定することは可能なのですが、不便です。
もっとうまいやり方ってありますか?
後は表示位置を元に特定するくらいしか思いつかないのですが。
AutomationIDって、少なくともVB6では自分で設定できないのでしょうか。
一応このレガシーアプリのソースコードはあり、編集も可能なのですが、
AutomationIDというのを設定するところは見当たりません。
0742デフォルトの名無しさん
2017/03/31(金) 14:28:02.89ID:gIiQslt60743デフォルトの名無しさん
2017/03/31(金) 19:34:04.77ID:BtloYTx6DBに処理対象データがあるか確認
__ある場合:メッセージボックス(*件処理します。処理を続けますか?)
____はいの場合:データ更新処理
____いいえの場合:なにもしない
__ない場合:メッセージボックス(データがありません)
こういう処理を非同期リクエストを使わずに実装したいのですがどうすればいいでしょうか
入力フォームの内容もクリアされないようにしたいです
0744デフォルトの名無しさん
2017/03/31(金) 19:36:51.55ID:kI20EOUu0745デフォルトの名無しさん
2017/03/31(金) 20:45:16.64ID:BtloYTx6教えてください
お願いします!
0746デフォルトの名無しさん
2017/03/31(金) 21:59:00.75ID:wAJQEnGm0747デフォルトの名無しさん
2017/03/31(金) 22:08:53.88ID:PPRsLJ2Y遅くなったけどありがとう
やっぱりそうか
0748デフォルトの名無しさん
2017/03/31(金) 22:10:11.37ID:9w4qNkVe正直おまえキモイ
0749デフォルトの名無しさん
2017/03/31(金) 22:38:20.66ID:BKtRT3pJフォームの入力内容を書き戻すのに加えて、確認中であることを示す値を入れたhiddenフィールドと
$(function() { if (confirm(msg)) $("#form").submit(); });
みたいなスタートアップのスクリプトを仕込んで返せばいいんじゃないの
俺ならこんな汚物を出してきたら差し戻してAJAXで書き直させるけど
0750デフォルトの名無しさん
2017/04/01(土) 19:08:34.68ID:iJwskPQ3{
Console.Out.WriteLine("氏ね");
}
0751デフォルトの名無しさん
2017/04/01(土) 19:15:59.90ID:4r7Zvrb20752デフォルトの名無しさん
2017/04/03(月) 13:09:41.47ID:sZC7W3vJview以外(controllerとか)のソースを弄られたくないし見せたくもない
0753デフォルトの名無しさん
2017/04/03(月) 13:48:10.33ID:YcnJ2dMtスレ違い
0754デフォルトの名無しさん
2017/04/03(月) 14:12:13.73ID:sZC7W3vJ0755デフォルトの名無しさん
2017/04/03(月) 14:18:51.99ID:G0J69e580756デフォルトの名無しさん
2017/04/03(月) 15:39:57.58ID:sZC7W3vJ0757デフォルトの名無しさん
2017/04/03(月) 19:12:16.74ID:zJguOVHNそれならREST APIで良いんじゃないか
RazorというかサーバーサイドのHTMLテンプレートはもう時代遅れだから思い切って捨ててしまえ
0758デフォルトの名無しさん
2017/04/03(月) 20:15:16.37ID:YcnJ2dMtむしろバックエンドも含めて全部そいつ一人に作らせた方が早いんじゃないか
0759デフォルトの名無しさん
2017/04/03(月) 20:38:02.81ID:DvppQH2Rビューのソースファイルだけ渡してデバッグできない状態で作らせるか
テンプレート関連の読み込み処理を自前にするしかないだろうな
もともとc#のtemplate使ってるから自前もわりと簡単だよ
0760デフォルトの名無しさん
2017/04/03(月) 22:10:44.51ID:zJguOVHN0761デフォルトの名無しさん
2017/04/11(火) 23:45:38.38ID:f9LqqWjRなにか間違ってるんだろうか?
public static void Main()
{
var methods = new Action<byte[]>[] { ArrayClear, ConcurrentClear };
for (var i = 0; i < 5; i++)
foreach (var method in methods)
{
var sw = Stopwatch.StartNew();
var buffer = new byte[64 * 1024 * 1024];
var random = new Random(0);
random.NextBytes(buffer);
method(buffer);
Console.WriteLine(method.GetMethodInfo().Name + ": " + sw.ElapsedMilliseconds);
}
}
private static void ArrayClear(byte[] buffer)
{ Array.Clear(buffer, 0, buffer.Length); }
private static void ConcurrentClear(byte[] buffer)
{ var t0 = Task.Run(() => Array.Clear(buffer, 0, buffer.Length / 2));
var t1 = Task.Run(() => Array.Clear(buffer, buffer.Length / 2, buffer.Length / 2));
Task.WaitAll(t0, t1); }
0762デフォルトの名無しさん
2017/04/11(火) 23:59:42.35ID:WDRtNXInなんでそんなクソ遠回りなことやってんのか知らんが
Taskでパラレルやるなら引数渡せ
0763デフォルトの名無しさん
2017/04/12(水) 00:22:54.01ID:QhQPiH2H少し考え違いをしていると思う、並列処理は分割すればするだけ速くなるような代物じゃないし
粒度が細かすぎる、Taskは並列というより並行処理向け。同配列に対する処理などはCPUよりGPGPU向き
―だがそれより何より、その計測された時間のほとんどは配列生成と乱数格納に費やした時間だ
0764デフォルトの名無しさん
2017/04/12(水) 00:52:15.63ID:PvBuykCK0765761
2017/04/12(水) 02:52:03.74ID:E1U6B9R0Parallel 使えってことかな?
>>763
あ、乱数生成の時間まで入れてたのか
でも乱数生成分入れないようにしても、どっちも同じような時間なのは変わらない
バイト配列キャッシュ作ってるんだけど、1GBぐらいの超巨大配列の初期化に
Task の生成や切り替えに数msec使っても、効果があると思ったんだ
分割すればするほど速くなるとは思ってないけど、
2分割程度なら速くなって当然と思ってるんだけど
0766デフォルトの名無しさん
2017/04/12(水) 03:38:43.21ID:QhQPiH2Hオーバーヘッドはご存じか、C#の場合はネイティブスレッドのそれほどでも無いだろうけど
ただ…結局この場合だと演算が皆無でメモリストアに割食って無意味って所だろうか(範囲が被るほど速い
0767デフォルトの名無しさん
2017/04/12(水) 06:57:20.84ID:uWep8obc0768デフォルトの名無しさん
2017/04/12(水) 07:57:27.76ID:A6XRqe5e0769デフォルトの名無しさん
2017/04/12(水) 11:23:50.73ID:E1U6B9R0なるほどメモリアクセスかー
Taskの切り替えや待ち時間などのオーバーヘッドはご存知よ
書いたとおり、Taskをふたつ待つ程度のオーバーヘッドは数msec
NextBytesを計測から外し、1GBで0クリアを試してみたら、150msec前後かかった
レートだと 6700MB/sec ぐらい
実行環境は DDR3-1333 なんだけど、理論値 10667MB/sec
途中GC入ってたし、こんなもんかー
0770デフォルトの名無しさん
2017/04/12(水) 11:40:08.42ID:7YKbJJVc出る訳ないと思うよw
っていうか理論値はあくまで純粋にHWの転送能力であってCPUが介在する場合は
そんな値絶対出ないし
測定値、計算のどちらかまたは両方が間違いなく間違ってるw
0771デフォルトの名無しさん
2017/04/12(水) 12:09:07.27ID:E1U6B9R0Array.Clear() って .NET Core の内部ではポインタ幅(64bit?)で0クリアしてたよ
端っこはバイト単位での0クリアだったけど
// now write pointer sized pieces
size_t nPtrs = (endBytes - memBytes) / sizeof(PTR_PTR_VOID);
PTR_PTR_VOID memPtr = (PTR_PTR_VOID) memBytes;
for (size_t i = 0; i < nPtrs; i++)
*memPtr++ = 0;
GC発生しないようにバッファ使い回してみたら、7000〜8000MB/sec くらいだった
理論値でるとも言ってないし、7〜8割なら測定値、計算ともに妥当じゃない?
0772デフォルトの名無しさん
2017/04/12(水) 13:46:41.47ID:PeioJu3J0773デフォルトの名無しさん
2017/04/12(水) 14:05:20.61ID:OIzgc8H/そりゃ実験のためのコードだからね
何のためにこんなこと試すのかわかんないけど
0774デフォルトの名無しさん
2017/04/12(水) 14:11:16.09ID:E1U6B9R0LOH(約85000バイト以上のオブジェクト)は仮想メモリ空間のフラグメンテーションを発生させるので、
OutOfMemoryException が発生しやすくなる
巨大バッファをガンガン使いまわすアプリは OOMを防ぐため、
バッファをキャッシュして使いまわす必要があったのね
んで、キャッシュしてたバッファを使うときに高速に0クリアしたいってのが、今回の大元でした
0775デフォルトの名無しさん
2017/04/12(水) 18:50:16.39ID:IE9Tc5o9原理的にサイズが大きくても高速化しないと思われる
0776デフォルトの名無しさん
2017/04/12(水) 19:03:44.50ID:0XMPUeTg今日的にはそんなこともないんじゃないの?
たとえ物理メモリーは排他的にしかアクセスできない制約があるにしろ、
並列化の効用がまったくないとも思えん
0777デフォルトの名無しさん
2017/04/12(水) 19:08:41.74ID:giyYheDf環境でばらつきまくって計測の意味もなさげ
0778デフォルトの名無しさん
2017/04/12(水) 19:51:51.86ID:QhQPiH2H[SuppressUnmanagedCodeSecurity, DllImport("kernel32")]
extern static void ZeroMemory(byte[] Destination, IntPtr Length);
[SuppressUnmanagedCodeSecurity, DllImport("msvcrt", CallingConvention = CallingConvention.Cdecl)]
extern static void memset(byte[] _Dst, int _Val, IntPtr _Size);
とかした方が雀の涙ほど速かった、CILだと
ldarg.0
ldc.i4.0
ldelema uint8
ldc.i4.0
ldarg.0
ldlen
initblk
あたりで漸く同等、しかも64bitに限った話、32bitだとどれも誤差レベル
0779デフォルトの名無しさん
2017/04/12(水) 21:18:24.58ID:u533e0uwほとんどメモリーアクセスしかないのに高速化できるわけないだろ
0780デフォルトの名無しさん
2017/04/12(水) 21:45:31.51ID:0XMPUeTg高級言語のコード上はそうでもCPUの実際の動作はそうじゃないよw
0781デフォルトの名無しさん
2017/04/12(水) 21:56:27.84ID:5KMe1hi60782デフォルトの名無しさん
2017/04/12(水) 23:32:44.30ID:7AJloho+はあ?
メモリーアクセス以外のどんな動作があるんだよ w
0783デフォルトの名無しさん
2017/04/12(水) 23:49:21.06ID:fn4L3E2o同じキャッシュ単位内に同時に書き込みできるものなのか?
0784デフォルトの名無しさん
2017/04/13(木) 00:14:45.08ID:Vv6BlwOK0785デフォルトの名無しさん
2017/04/13(木) 00:38:14.37ID:px7lD0L1DMAでも使ってない限り、少なくともポインタのインクリメントとループの終了条件のチェックは入る
0786デフォルトの名無しさん
2017/04/13(木) 00:57:14.48ID:G9tlFT6Dx86にはストリング命令というチートが有ってだな
0787デフォルトの名無しさん
2017/04/13(木) 01:07:16.95ID:px7lD0L10788デフォルトの名無しさん
2017/04/13(木) 01:22:49.09ID:sVC5qkLgつ GC
>>783
Core i7 2600 4Core Sandy Bridge とかだと、CPU-Z とかのツールで見てみると
L3 キャッシュまで搭載していて、
・L2 は 256KB が 4コア分
・L3 は 8MBひとつ
なので、L2間でコア間のキャッシュコヒーレンシ(一貫性)を解決してるはず
キャッシュライン(64Byte)ごとに他のコアで書き込みがあるかとかをチェックしてる
同時の書き込みもちゃんと検知されている
キャッシュラインで競合すると書き戻しとかが発生するので、
重ならないようにするのがいいらしい
0789デフォルトの名無しさん
2017/04/13(木) 01:23:52.75ID:DHabuNl5メモリレイテンシがデカすぎて取るに足らないって事よ、コヒーレンシの実装にも左右されそうだし
1つのバカでかいバッファより、バッファ自体を分割したほうが良いんでないか
0790デフォルトの名無しさん
2017/04/13(木) 01:44:29.44ID:G9tlFT6DCPUはキャッシュが満たされるのを待つ必要があるから頭打ちになるってことかね
0791デフォルトの名無しさん
2017/04/13(木) 03:28:18.29ID:NHsAQDrp有名なサイトのコピペで目的のもの作れたが
WPFはデリゲートや非同期を熟知してないと一歩も進めない感じ
コピペしたくても自由度が高く手法が多すぎて無理
0792デフォルトの名無しさん
2017/04/13(木) 05:44:30.50ID:FNNFGlTuマルチスレッドなんかにしたら、そのオーバーヘッドが邪魔してかえって遅くなるだろう
0793デフォルトの名無しさん
2017/04/13(木) 06:14:59.28ID:wfOumNdE0794デフォルトの名無しさん
2017/04/13(木) 06:22:05.68ID:vvMMmk8r0795デフォルトの名無しさん
2017/04/13(木) 06:53:09.50ID:DSZn496Tおっさんいつの知識で語ってるんだよ w
そんなもん主記憶への書き込みに比べたらゴミにしかならんぞ
0796デフォルトの名無しさん
2017/04/13(木) 07:19:52.20ID:FNNFGlTuCPUというよりも、CPUとメモリーのスピード差が決定的すぎるんだよ
メモリーにアクセスするとCPU命令で数千命令程度の待ちが入る
余りに待ちが長いので、その間に色々計算ができるようにCPUには工夫が入っていたり
マルチCPUにして、別のCPUが計算している間に書き込んでしまえといった方面で創意工夫がされているんだ。
境界チェックくらいなら、書き込み待ち時間で十分にできるから他のCPUにまで影響を与えないようにして
書き込みスレッドは一本にして、他のCPUは別のメモリーアクセス以外の仕事ができるように開けておいた方がトータル良い結果を出すって事。
0797デフォルトの名無しさん
2017/04/13(木) 08:39:19.14ID:2TLG8dmE0798デフォルトの名無しさん
2017/04/13(木) 10:17:04.48ID:xhr4sxE50799デフォルトの名無しさん
2017/04/13(木) 13:14:58.98ID:mVrmFNTT0800デフォルトの名無しさん
2017/04/13(木) 13:31:22.91ID:FNNFGlTu知っていれば無意味な並列化とかしなくて済むだろ
そうすればソースも分かりやすくすっきりするし
0フィル処理なんて詰まらない処理なら、効果はてきめんだ。
0801デフォルトの名無しさん
2017/04/13(木) 13:43:29.67ID:xhr4sxE5どちらがよりコストがかかるんだろうか。
0802デフォルトの名無しさん
2017/04/13(木) 13:49:55.01ID:FNNFGlTuで、並列化するときにどういう方向性が効果的かってのを知っておくことは
コードを手早く書く上での基本テクニックだよ
無意味なコードは、そもそも書かないし試さないというショートカットができるからね。
将棋の名人でもすべての手を読んでいる訳じゃない、効果的な枝だけを深読みしているみたいなもんだ。
0803デフォルトの名無しさん
2017/04/13(木) 14:09:41.46ID:xhr4sxE50804デフォルトの名無しさん
2017/04/13(木) 16:09:48.66ID:aK+zC0HQ極端な話、プロセスを2つに増やして2倍速くなるならそれでいい
ミクロな視点で考えるのはほとんどのケースにおいて時間の無駄
0805デフォルトの名無しさん
2017/04/13(木) 16:28:44.49ID:FNNFGlTuこういうのってコンピュータの仕組みが分かってしまえば、高速化手法として頭に浮かぶことすらないですから。
考えるまでもなく除外なんですよ、脊髄反射。
よく似た物にページングのチューンなんかがあるね。
並列化したら、ずっと仮想メモリにページアウトページインばっかりするようになってしまうのが見え見えのコードとかね。
こういうケースが見えて居る時にマクロ視点でプロセス増やして・・・と考えることは無いねw
0806デフォルトの名無しさん
2017/04/13(木) 18:05:14.12ID:sVC5qkLgコンピュータの仕組みなんて常に変わっていくもの
脊髄反射で手法を除外するのはよくない
あと一レス目で指摘するならともかく、問題点が整理されてから
後出しで手法をダメ出しするのはカッコ悪い
0807デフォルトの名無しさん
2017/04/13(木) 18:18:41.10ID:xmE6C1uaそれってCPUの実際の動作じゃなくて単なる考え方だよね・・・
0808デフォルトの名無しさん
2017/04/13(木) 18:34:37.22ID:2TLG8dmE境界チェック云々はマルチCPUじゃなくてパイプラインで解決されるからプログラミング要らずだし
0809デフォルトの名無しさん
2017/04/13(木) 19:49:41.71ID:woBc/tdN> メモリーにアクセスするとCPU命令で数千命令程度の待ちが入る
今時のメモリー(主記憶)のレイテンシーって10ns以下だと思うが10nsで1,000命令も実行できるCPU教えてくれ
0810デフォルトの名無しさん
2017/04/13(木) 20:53:44.12ID:FNNFGlTuまぁ、その手の事を指摘したつもりだけれどそう読んではくれないみたいだね。
あと、最近のはパイプライン以外にも命令の並べ替えやら入っているからw
ホコポコ無意味に返信している内容は、多分自演なんだろうけど、そろそろやめたら。
こういうのはゲーム作ったことあるような人間なら常識の範囲なので、考えるまでもないような話の類。
俺以外のヤツもたくさん指摘しているが、それだけ普通に知っている人は多い話なのだよ。
0811デフォルトの名無しさん
2017/04/13(木) 21:04:00.56ID:1tPgrneGアセンブラのバイトコード気にするとか20年前の話だろ
いっぽかたが計算してる間に他のCPUで書き込みするのは
同時にメモリに書き込もうとして競合するのを避けるためじゃないん
0812デフォルトの名無しさん
2017/04/13(木) 21:15:04.20ID:FNNFGlTuこの手の話をゲーム屋が知ってるのは、何かの本で読んだとかではなくて
ソニーとか任天堂とかマイクロソフトとか今は逝ってしまっているセガとかハード屋が
セミナーで現在のハードの状況と止めた方が良いコードなんかのヒントとして教えてくれるからなんだよ。
その知識を持って、インテルの資料とかを読めば大体の事は分かるんよ。
もちろん素から勉強している人も居るだろうけどね。
今回の話はマシン語ではなく、最近のメモリー事情の話なんだよ。
連続アドレスの書き込みor読み出しには強いが、飛び飛びのアドレスにアクセスすると弱いダイナミックメモリー事情とかの話。
メモリフィルとか連続アドレスをアクセスしているのに、わざわざ壊すようなマルチスレッドはそういう点でも駄目なんだな。
決定的にはメモリーが遅いという点に尽きるが。
こんな風に駄目な理由に一つ以上のネタがあるんだよ、だからやるまでもないの。
0813デフォルトの名無しさん
2017/04/13(木) 21:29:31.37ID:1tPgrneGパイプラインで境界チェックを解決って意味が分からん
どうやってんの
0814デフォルトの名無しさん
2017/04/13(木) 21:32:07.91ID:3oML3qaoこれ以上口を聞くとスレを埋めるぞ
0815デフォルトの名無しさん
2017/04/13(木) 21:46:56.27ID:2TLG8dmEパイプラインがRISC時代に進化して、レジスタが干渉しなければインストラクションを同時実行するようになったから
件の例だとメモリクリアと境界チェックを同時にヤるんだわ
だから一つのCPUは見かけ上メモリクリアを境界チェックの時間0で延々と実行する
コレを実行するのは一つのCPUだし、同時実行に人が介在すること無いのでプログラマーは何もヤることはありません
ホント>>796は酷い出鱈目ですわ
0816デフォルトの名無しさん
2017/04/13(木) 22:00:11.37ID:oixKZUzLただ昨日書いた>>776が間違ってることはよくわかった。
よく考えればこれ486の時代とかでも当たり前だw
すまんかった
0817デフォルトの名無しさん
2017/04/13(木) 22:00:58.20ID:FNNFGlTu>境界チェックくらいなら、書き込み待ち時間で十分にできるから他のCPUにまで影響を与えないようにして
これがパイプラインやらディレイスロットに相当する話として描いたんだよ
計算時間隠ぺいはパイプラインだけじゃないからな、不正確になるだろ。
0818デフォルトの名無しさん
2017/04/13(木) 22:08:08.05ID:FNNFGlTuこの変換で色々な隠ぺい処理がされる。
パイプラインの直接関与は無い。
0819デフォルトの名無しさん
2017/04/13(木) 22:55:07.48ID:UJp3daw40820デフォルトの名無しさん
2017/04/13(木) 23:32:52.23ID:ZueE7S//ふつーにヤレ
0821デフォルトの名無しさん
2017/04/13(木) 23:35:00.21ID:8HEXXOrWWindows Server 2016でまだ使えない
0822デフォルトの名無しさん
2017/04/13(木) 23:51:42.17ID:qn5HP47l4.7がまだインストールできないってこと?
0823デフォルトの名無しさん
2017/04/14(金) 00:17:56.85ID:SWEjH6XzGCってガベージコレクタか?
メモリを回収するときにゼロクリアする必要はないんじゃね。痕跡を残したくないとかなら分からないでもないが。。
0824デフォルトの名無しさん
2017/04/14(金) 07:19:22.25ID:KckXzUzz4。7って自動で入るのか?
0825デフォルトの名無しさん
2017/04/14(金) 08:29:17.03ID:pJlkTYEJYou can start using .NET Framework 4.7 today on Creators Update. It will be available on other Windows versions soon. .
NET Framework 4.7 will support the same Windows versions as .NET Framework 4.6.2. It is an in-place update.
Windows10だけらしい
0826デフォルトの名無しさん
2017/04/14(金) 19:41:38.09ID:zACr9/Dt0827デフォルトの名無しさん
2017/04/14(金) 19:57:13.78ID:vwaM1ek4ValueTupleとかValueTaskとか
自分も試しにアップデートしてみたがまだ使えないみたいだね
もうちょっと纏めてからアップデートしてくれた方がいいんだけど
アップデートが細かすぎる
0828デフォルトの名無しさん
2017/04/14(金) 20:03:25.72ID:znF0F+kk何に使うのかは知らんけどtupleを使いたいんだろ
0829デフォルトの名無しさん
2017/04/14(金) 20:10:48.82ID:pJlkTYEJWindows10をCreatorsUpdateしてから処理したから、必須なのか不明ですが
多分それも必要です
0830デフォルトの名無しさん
2017/04/14(金) 20:19:05.97ID:bLw6Whqv0831デフォルトの名無しさん
2017/04/15(土) 02:12:01.30ID:aGMB9daNそれとは違う
0832デフォルトの名無しさん
2017/04/15(土) 10:12:37.06ID:iCdjVYwGペンティアム2を昨今のCPUって言う人初めて見たw
てか、それらはx86のRISC化なんだが、
RISCってものはパイプラインを高度に利用してトランジスタを増やさずに多重実行する技術だよ
パイプラインの関与と言うか、要です
0833デフォルトの名無しさん
2017/04/15(土) 10:16:28.45ID:C33P0hB80834デフォルトの名無しさん
2017/04/15(土) 10:18:54.18ID:3qBkA9st0835デフォルトの名無しさん
2017/04/15(土) 10:23:22.48ID:C33P0hB80836デフォルトの名無しさん
2017/04/15(土) 10:35:26.60ID:QicJR8ZPどういう時に使うんだこれ
0837デフォルトの名無しさん
2017/04/15(土) 10:36:36.36ID:qt9qpnGQ0838デフォルトの名無しさん
2017/04/15(土) 10:43:55.01ID:iCdjVYwGout 使って値を返しているやつを素直に書けるだろ
0839デフォルトの名無しさん
2017/04/15(土) 10:49:59.89ID:3WGNKYp+まてまて、SIMDとパイプラインと並列処理は意味が違うぞ。
言いたいことはわかるけどなw
0840デフォルトの名無しさん
2017/04/15(土) 10:50:24.08ID:iCdjVYwGC#のILをJITがマシン語に変換して、更にCPU内部でRISC形式の命令に変換
更に命令の順番を最適化して多重実行をするわけで、ILを見たところでどれが効率高いかなど判断するのは人間業じゃないな
せいぜいキャッシュサイズを意識する程度だろうが、2つのループを同時実行されることまで考慮したらどうすれば良いのやら・・・
0841デフォルトの名無しさん
2017/04/15(土) 10:57:05.83ID:iCdjVYwGSIMDじゃなくて、通常のオペコードをRISC的な内部オペコードに変換するんだよ
で、10段とか15段に細分化されたパイプラインを使って、パイプラインに繋がった演算装置を
複数の実行ユニットが使いまわしをしてトランジスタ増やさずに見かけの同時実行数を5とかに増やす
まあ、それをどうやって実現しているのかさっぱり分からんけどな
0842あ
2017/04/15(土) 10:57:43.50ID:4VXj2s/uどこが効率悪いかはわからんか?
あー、アンボクシングかかっとるわ、とか、
これのせいでストールしよるな、とか。
0843デフォルトの名無しさん
2017/04/15(土) 11:00:42.88ID:iCdjVYwGデバッグに使うのは当然なんだが、通常のソースレベルの効率以上の情報をILから探し出すのは至難の業です
最終的な実行環境は俺を含めてハードの素人には手を出せない神の領域かと
0844デフォルトの名無しさん
2017/04/15(土) 11:34:57.52ID:QicJR8ZPoutはそもそも使わないし
TryXxx系はValueTupleよりout varの方がスマート
0845あ
2017/04/15(土) 11:39:27.67ID:4VXj2s/uコーディング中はそりゃ、あんまりそこに固執すると目的地にたどり着きさえしなくなっちゃうもんな。
コンパイラが賢かったり、JITが地味に賢くなって要らない小技になったのも沢山あるし。
たまに見ると面白いよ。あ、これメモ化しちゃうんだ、とか。
0846デフォルトの名無しさん
2017/04/15(土) 11:39:28.67ID:UPL5S+RApythonでやってたことをc#でもできるようになったものって
実際使ってみてもいまいちなんだよな
めんどくさいから欲しかった機能だけどc#流になるとそれ以上にめんどくさいしスマートじゃない
0847デフォルトの名無しさん
2017/04/15(土) 11:44:51.81ID:eeh5f4V4ペン2には一言も言及してないのに勝手にそうするキチガイさんですか? >>839 これも自演でしょ
多分10年以上も前からここで、板が白けきるまで偉そうな事いいながら荒らしまくっていた人なんでしょうけれど。
そろそろ死んでください。
0848デフォルトの名無しさん
2017/04/15(土) 11:49:23.70ID:iCdjVYwGref var a = hoge();
と言う、参照戻り値ってのの使い方が難しいわ
0849デフォルトの名無しさん
2017/04/15(土) 11:51:55.21ID:iCdjVYwG>、機械語命令を別の内部用の命令に一旦変換することで互換を取っている
コレはPen2とかK6辺りから始まりました
20年前の技術ですね
0850デフォルトの名無しさん
2017/04/15(土) 11:52:06.28ID:mE+AhP/nC#はメモリ管理を気にしなくて良いと聞きました
本当でしょうか?
0851デフォルトの名無しさん
2017/04/15(土) 11:54:00.80ID:eeh5f4V4命令ストリームからVILW命令6スロット分に変換して
6命令ずつ同時実行する事で低クロックでも高速に動作とか。
x86系以外では、スーパースカラの採用も多いみたいだね。
0852デフォルトの名無しさん
2017/04/15(土) 11:55:39.30ID:P11oDSMM2人くらい何か囀ってるように見えるけど、キチガイだから気にしてはいけないよ
0853デフォルトの名無しさん
2017/04/15(土) 12:00:32.47ID:3WGNKYp+俺、死ぬんか?
0854デフォルトの名無しさん
2017/04/15(土) 13:12:21.09ID:7hkWD0i5メモリ解放なんかは自動ってことになってるけど
メモリ確保やら初期化やらは気にしないとだめだし「メモリ管理」の内容による
0855デフォルトの名無しさん
2017/04/15(土) 13:18:16.99ID:GC6K0tB8これ、まともに回答しようと思うとひどく大変なんだが……
823がGCの内部実装を把握しているうえでの指摘にも見えるし、
初心者の思いつきの質問にも見えるし……
初心者向け:
ヒープ確保したら0にクリアされてる
メモリを回収後、再利用されるまでに0クリアする必要があるってこと
把握してる人向け:
メモリコンパクション時にページングの機構使って0クリアしてるのかってことなら、
.NET Core のソースで確認しようと思ったけど
gc.cpp だけでも1.2MBあって挫折した
>>850
初心者のうちは気にしなくていいよ
0856デフォルトの名無しさん
2017/04/15(土) 13:43:04.38ID:5VFPMUgCC#は式指向のシンタックスを目指してるから、あくまでステートメントに拘るPythonとはだいぶ方向性が違うよ
可能な限り全てのメソッドを式形式で定義する縛りでコーディングしてみたらいい
そうすればC#7の仕様の意図するところは簡単に理解できる
0857デフォルトの名無しさん
2017/04/15(土) 14:29:19.96ID:56TRC7nM頭いいんだな
0858デフォルトの名無しさん
2017/04/15(土) 14:40:07.25ID:3WGNKYp+>>843
思ったけど、あのVTuneってそんな機能あるんかな?
0859デフォルトの名無しさん
2017/04/15(土) 15:19:31.88ID:A0YDVHHt単体テストし終わってからタスクマネージャー見るとExcelが一杯残ってた(通称ゾンビ)。
シートやらブックやら解放してから最後にExcel本体解放してってやってたけど
今は一発で解放できるんだよね?
メモリ管理とか気にしないけど、こういうのは気になる。
0860デフォルトの名無しさん
2017/04/15(土) 15:29:43.17ID:8JN0d/j30861デフォルトの名無しさん
2017/04/15(土) 15:39:12.33ID:eeh5f4V4Excelは無理だよ、細かくReleaseComObjectしなきゃ駄目だし、しても残る時は残る。
残ってしまう事を前提に組むしかない
0862デフォルトの名無しさん
2017/04/15(土) 15:41:12.30ID:aGMB9daNしても残る時は残る、はし足りないだけでは。
0863デフォルトの名無しさん
2017/04/15(土) 15:43:39.01ID:eeh5f4V4自分の書いた内容が正しいという流れになるまでしつこく続ける自演キチガイが一匹いるだけ。
もう相当昔から粘着しているからいい年だと思うんだが、よく生活できてるなって感じだな。
それ以外の人は普通だよ。
0864デフォルトの名無しさん
2017/04/15(土) 15:58:16.95ID:3WGNKYp+0865デフォルトの名無しさん
2017/04/15(土) 16:02:07.82ID:eeh5f4V4その質問を流すなキチガイ
あと、自分の得意な領域に引き込もうと変な流れに作り替えるな。
掲示板が機能しなくなる
どうせなら死ね
とまあそんな所ですな
0866デフォルトの名無しさん
2017/04/15(土) 16:06:10.39ID:OxStzCoo気づいてないみたいだけど、悪いけど君の態度も相当エキセントリックに見えるよww
少なくとも>>832は文脈的に妥当な反論をしているようにしか見えんけど、
「俺にたてつく奴はいつものキチガイ(って誰だよw)だ!!」って感じでかなり普通じゃない。
余計なお世話だろうけど、いい歳こいてるんだろうからもうちょっと自分を客観的かつ批判的に
見ることを覚えた方がいいんじゃないんだろうか。
0867デフォルトの名無しさん
2017/04/15(土) 16:07:40.04ID:lvAT8XK9> 昔Excelを弄ってた時、Excelのオブジェクト解放したはずなのに
> 単体テストし終わってからタスクマネージャー見るとExcelが一杯残ってた(通称ゾンビ)。
ちゃんと ReleaseComObject(comObject) 呼んでないだけだろ
なんで IDisposable にして Dispose で解放するようにしなかったのか謎
0868デフォルトの名無しさん
2017/04/15(土) 16:09:12.98ID:eeh5f4V4はよ死ね
0869デフォルトの名無しさん
2017/04/15(土) 16:13:19.25ID:C33P0hB8結局のところ欠陥言語なのだ。
0870デフォルトの名無しさん
2017/04/15(土) 16:16:13.49ID:OxStzCoo根拠があるのかと言われれば正直ないけど、ぶっちゃけ全部のオブジェクトを
いちいちReleaseComObject呼ぶなんてやってられないし、やらなくてもそれで
「ゾンビ」が残ることはないようだから、必要ないんじゃないのかな。
そんなことよりプロパティが返すオブジェクトをメソッドチェーン的に使わない(面倒でもいちいち変数に
入れてから使う)とか、その手の基本が大事だね
0871デフォルトの名無しさん
2017/04/15(土) 16:18:04.02ID:eeh5f4V4lock方式でもInvoke方式でもない、少々行き当たりばったりな排他制御をしてるようだ。
古いアプリなので今更改められないのだろうね。
0872デフォルトの名無しさん
2017/04/15(土) 16:31:33.32ID:OxStzCoo探偵がロバートデニーロに殺人鬼を探すように依頼されるが、探していた
殺人鬼は探偵自身だったってオチ
「いつものキチガイ」も実は言ってる本人自(w
0873デフォルトの名無しさん
2017/04/15(土) 16:33:19.87ID:3WGNKYp+今後はこのスレ貢献に頑張ろう…でいいやん。
な
0874デフォルトの名無しさん
2017/04/15(土) 16:33:31.45ID:nXYdKgHp0875デフォルトの名無しさん
2017/04/15(土) 16:36:28.32ID:eeh5f4V4普通なら、それでOKなんだけどね
この人2000年頃にやってきて、際限なく荒らしまくって誰もいない状態にしやがったから。
たまーに戻って死んだかなとか見ているんだが、ご健在のようです。(はよ死ね
0876デフォルトの名無しさん
2017/04/15(土) 16:57:08.88ID:aGMB9daNそんな基本は聞いたことが無いのだけど、
プロパティが返すオブジェクトをメソッドチェーン的に使うと、どういう問題があるの。
0877デフォルトの名無しさん
2017/04/15(土) 17:07:01.27ID:mW9XRjOW一つプロパティにアクセスしたら結果を変数に入れて礼儀正しくDisposeする
これをすべてのメソッド呼び出しとプロパティ・インデクサーアクセスについて行う
0878デフォルトの名無しさん
2017/04/15(土) 17:09:24.07ID:nXYdKgHpおもしろい冗談だな
0879デフォルトの名無しさん
2017/04/15(土) 17:16:22.23ID:UPL5S+RAこんな感じで受け取れれば楽なんだけどな
a,b=method(c);
0880デフォルトの名無しさん
2017/04/15(土) 17:31:49.05ID:OxStzCooゾンビ
なんだかVBerチックなおまじないのように聞こえるけどそうじゃない。
もっとも、どうしてそうする必要があるのか、詳しい理屈は忘れちゃったけどw
明示的に変数で参照されてないCOMオブジェクトは相互運用アセンブリが適切に破棄できないとかなんとか
まあ、変数に入れなきゃReleaseComObjectを呼ぶこともできないよね
0881デフォルトの名無しさん
2017/04/15(土) 17:33:16.72ID:7hkWD0i50882デフォルトの名無しさん
2017/04/15(土) 17:38:17.93ID:A0YDVHHt昔の話だよ。
0883デフォルトの名無しさん
2017/04/15(土) 17:41:04.42ID:aGMB9daN結局ReleaseComObjectは必要なのね。
0884デフォルトの名無しさん
2017/04/15(土) 17:47:17.96ID:jssTx07C昔のプログラムメンテする必要が有って、丁度それに出くわして同じ方法で対応したわ
結局そのロジック切り捨ててOpenXMLで読み書きしちゃったけど
0885デフォルトの名無しさん
2017/04/15(土) 17:54:59.95ID:OxStzCooいやいらんと思うよ
https://web-beta.archive.org/web/20080306103320/http://jeanne.wankuma.com/tips/programing/releasecom.html
↑によるとReleaseComObjectは「保険」らしい
オブジェクトをちゃんと変数につっこんでから使えは一応ソースあった。
「仕様」の一言で、どうしてそうしなきゃらなんのかの理屈は書いてないが
https://support.microsoft.com/ja-jp/help/317109/office-application-does-not-quit-after-automation-from-visual-studio-.net-client
0886デフォルトの名無しさん
2017/04/15(土) 18:00:32.55ID:OxStzCooこま切れのレスで申し訳ない
0887デフォルトの名無しさん
2017/04/15(土) 18:14:19.64ID:eeh5f4V4>ガベージ コレクションを実行して解放することができますが、こちらはあくまでも保険です
読んでみた限り、GCが保険でReleaseComObjectでやれという事に読めますね。
マイクロソフト公式も保証されるわけではないという感じですね。
実際、これはやってみたが上手くいかないケースはちょくちょく発生します。
次善策以上の対策は取れないと思われます。以前サポートに質問した時もそんな感じの回答でした。
0888デフォルトの名無しさん
2017/04/15(土) 18:33:54.48ID:OxStzCooあー確かにその通りだねw
適当なこと言ってごめん
0889デフォルトの名無しさん
2017/04/15(土) 22:36:26.65ID:tyUWSBTMタプルに括弧が必要なのはやむを得ないかな。変数宣言の文法変えるわけにもいかないし。
0890デフォルトの名無しさん
2017/04/15(土) 22:56:40.40ID:lvAT8XK9ちゃんと作ればゾンビったりしないよ
デストラクタで確実に解放できるからその点だけで言えば C# よりむしろ楽
>>885
> ↑によるとReleaseComObjectは「保険」らしい
それ、それページ書いた人がちゃんと理解してないだけ
そもそもGCはCOMなんて意識してないからCOMの解放なんてしないし
詳しくはここら辺を見て
https://blogs.msdn.microsoft.com/office_client_development_support_blog/2012/02/09/office-5/
0891デフォルトの名無しさん
2017/04/15(土) 23:54:44.22ID:X3IC3wwWGetType()+typeof()で型判定と
isでやるのはどっちが速い?
0892デフォルトの名無しさん
2017/04/16(日) 00:20:09.43ID:SqhlDt4o一時変数に入れたりしないで単純な GetType == typeof の形に限り前者
JITレベルで最適化がかかるみたい
0893デフォルトの名無しさん
2017/04/16(日) 01:16:43.35ID:dwmihMuFGCのソースを見る気はしないけど0クリアはやってないと思う。
どう考えても時間の無駄。
変数を使用するタイミングで初期化が行われて、ものによってゼロクリアが行われるってだけじゃないんかね。
だから大量な領域をゼロクリアすることはそうそうないと思ってるんだけど。
例えばintの長い配列を確保したときとかくらい。
0894デフォルトの名無しさん
2017/04/16(日) 02:15:50.20ID:UDjczAnnヒープのオブジェクトは new した時点で内容が0クリアされてることは仕様
0895デフォルトの名無しさん
2017/04/16(日) 06:55:53.07ID:dwmihMuFそれはメモリ確保後に初期値で初期化されたってことででしょ。どっちにしろGCで大量にゼロクリアが必要にはならないよね。
0896デフォルトの名無しさん
2017/04/16(日) 08:00:22.29ID:uS8rD07o0897デフォルトの名無しさん
2017/04/16(日) 08:43:50.68ID:dr2cdwts早めの0クリアがセキュリティーに貢献するであろう事は予想できる。
今そうでなくても、そのうちに使用しなくなったタイミングで可能なら0クリアという形になったとしても驚かない。
0898デフォルトの名無しさん
2017/04/16(日) 08:49:20.74ID:dr2cdwts巨大なツリー構造を作って大量のヒープを使い始めると、参照を移動するだけでも結構なCPU時間を取られるようなので。
0899デフォルトの名無しさん
2017/04/16(日) 09:00:30.49ID:nOhMz2bP一律0クリアって方向にはならないだろうねぇ。
セキュリティ確保のためにわざわざ省略されない0クリアなんて機能を用意するくらいだし。
0900デフォルトの名無しさん
2017/04/16(日) 09:02:08.11ID:H6tmXYoH0901デフォルトの名無しさん
2017/04/16(日) 10:39:40.78ID:yhNZe4vR> 0クリアをどのタイミングでしているかは知らないが
何のためにデバッガがついてると思ってんだ。
0902デフォルトの名無しさん
2017/04/16(日) 11:27:43.64ID:UDjczAnnあー、それそれ
.NET Core の gc フォルダ内のコードに VirtualAlloc の RESET_MEM で
ゼロクリアしてる箇所がいくつかあった
たぶん、コンパクションした後に残ったゴミ領域を VirtualAlloc で
ゼロクリアしてると思うんだが、そこは探しきれなかった
>>895
初期値(0)で初期化されたってのはゼロクリアなんだが……
ttp://ufcpp.net/study/csharp/rm_default.html
お前の言う初期値は別のことを指してるのか?
> どっちにしろGCで大量にゼロクリアが必要にはならないよね。
メモリ確保時のゼロクリアってのはヒープ管理の行うこと
ヒープ管理はGCとは切り離せないの
だから .NET Core のゼロクリアのコードだって gc フォルダ内に配置されてるんだし
0903デフォルトの名無しさん
2017/04/16(日) 11:44:56.24ID:EJt90aDw横からごめん。無知なので教えて。
・GC って概要として不要になったメモリを解放する機能って理解はあってる?
・メモリ確保時に初期化が実行されるとの理解はあってる?
・一般的な挙動として、メモリ確保と GC は別物との理解に誤りはある?
※実装が GC 時に初期化しているかどうかではなく、GC と言う言葉の定義に初期化が含まれるかと言うこと
自分は上記が正しいと思ってるから、 >>895 の内容に違和感を感じなかったんだ。
0904デフォルトの名無しさん
2017/04/16(日) 12:08:09.86ID:uS8rD07o君は正しい
0905デフォルトの名無しさん
2017/04/16(日) 12:11:25.63ID:SqhlDt4oCLRの構造としては、GCはメモリ管理一般を担うコンポーネントである
だからメモリ確保も初期化するのもGC
GCってメモリの使用状況に応じてオブジェクトを動的に再配置したりとか色々裏で頑張ってるから、
単純に 確保/解放 と割り切れるもんじゃないんだよ
0906デフォルトの名無しさん
2017/04/16(日) 12:21:18.23ID:qeC+G70E前者でもいいけどtypeof(シールクラス)にしないとダメだよ
0907デフォルトの名無しさん
2017/04/16(日) 13:21:57.61ID:UDjczAnn>・GC って概要として不要になったメモリを解放する機能って理解はあってる?
はい
>・メモリ確保時に初期化が実行されるとの理解はあってる?
正確ではない
ヒープからオブジェクトを確保したら初期化されていることが決まっているだけで、
初期化のタイミングは決まってない
既に初期化済みの領域から割り当ててるはず
>・一般的な挙動として、メモリ確保と GC は別物との理解に誤りはある?
> ※実装が GC 時に初期化しているかどうかではなく、GC と言う言葉の定義に初期化が含まれるかと言うこと
誤りはない
ただし片方だけではメモリのシステムとして機能しない
>自分は上記が正しいと思ってるから、 >>895 の内容に違和感を感じなかったんだ。
.NET の実装によるので
「GCで大量にゼロクリアが必要にはならない」 は誤り
.NET Core の実装ではページングの機構を使って大量にゼロクリアしてる(と思う)
オレオレCLR実装でGC時ではなく、オブジェクト確保時にゼロクリアする実装というのはあり得る
0908デフォルトの名無しさん
2017/04/16(日) 14:12:52.31ID:0ImhO/qF> GC と言う言葉の定義に初期化が含まれるかと言うこと
含まれていないけど、実質同じ。
GCってプログラマの負担を減らす為の物なのに、
いちいちゼロ初期化必要だとコンセプトとしておかしいでしょ。
まともなGCならゼロクリアされている。CLRもそう。
仕様としては、
△ > ・メモリ確保時に初期化が実行されるとの理解はあってる?
○ ・メモリ確保時には初期化済み
であって、どのタイミングで初期化するかはGCの実装による。
同じ事はOSでも行われていて、以下ページのZeroed参照。
http://nyaruru.hatenablog.com/entry/20080430/p2
0909デフォルトの名無しさん
2017/04/16(日) 15:02:23.81ID:79m5iU1qいや批判はしてないですよ別に
0910デフォルトの名無しさん
2017/04/16(日) 18:44:26.20ID:dr2cdwts0911デフォルトの名無しさん
2017/04/16(日) 18:59:23.11ID:I10lJTDSそうかTHX.
isの方がなんとなく速そうだと思ってたが案外そうでもないんだな
0912903
2017/04/16(日) 20:38:49.89ID:EJt90aDw教えてくれて、ありがとう。
自分も MSDN の文章を読んだりしてみました。
斜め読みだから読み落としてる可能性も高くそうしたらごめんなさい。
[一般的定義]
・GC は概要として不要になったメモリを解放する機能のこと
・一般的な挙動として、メモリ確保と GC は別物
[CLRの仕様]
・メモリの確保も解放も GC の機能の内
・確保されたメモリは初期化されている
[CLRの実装]
・GC 時にメモリを初期化してるっぽい
ふつう、挙動を考える際には仕様を元にすると思うから
「GC時(正確にはメモリの解放時)にはメモリの 0 クリアは期待しない/できない」と理解してよさそうな気がする。
>>895 の「GCで大量にゼロクリアが必要にはならない」が「GC時に 0 クリアしている訳ではない」との意味であれば
仕様としては正しいことから一般論としても正しい。
ただ、実際にはやってくれているけど、それは仕様に基づいているわけではないからいつ改変されるか分からないアテには出来ないもの、と理解しました。
自分もよくやるんですけどね。仕様にはないけど自分が考える安全のための後始末とか。
0913デフォルトの名無しさん
2017/04/16(日) 20:52:22.64ID:3ec5aaGFまたGCが0クリアするよ
つまり二度手間
高速化なんてのたまてってるけど馬鹿ばっか
0914デフォルトの名無しさん
2017/04/16(日) 20:53:23.50ID:3ec5aaGFどこか別でやってくれよ
個人のブログとか
0915デフォルトの名無しさん
2017/04/16(日) 20:55:58.52ID:dr2cdwts0916デフォルトの名無しさん
2017/04/16(日) 21:04:46.71ID:wSkKKBMWもともとのガベコレの意味はざっくり言えば「確保/解放によって断片化したメモリのデフラグ」
だったはず
知らんけど
0917デフォルトの名無しさん
2017/04/16(日) 21:22:51.36ID:0ImhO/qFGCは「アイドル時にやれ」というのは分かるよな?
実際はとりあえずこれを目指しているはず。
メモリ確保時にゼロ初期化するのはユーザ時間に直接影響する。
(メモリ確保のレイテンシが著しく増大する)
GC時に初期化するのはGC時間が長くなる。
CLRの場合は確かGC時にはユーザスレッドを凍結していたはずだから、
これもユーザに見えることになる。
だから、普通に考えて、
一旦GCした後、(ユーザスレッドと並行可能な)別スレッドでゼロ初期化だよ。
0918デフォルトの名無しさん
2017/04/16(日) 23:10:52.00ID:rt4ZW9V3どこのどいつが実際にやろうが関係ないだろ
0919デフォルトの名無しさん
2017/04/17(月) 21:40:45.89ID:3B2OvgTjプログラマとして
そういう意味でゼロクリアされている事がわかっていても
明示的にやっておくのも間違いじゃない
0920デフォルトの名無しさん
2017/04/17(月) 21:53:33.58ID:DRWzf9HM誰に向かって威張ってるのかね
そんな威張っていうような話か?w
0921デフォルトの名無しさん
2017/04/17(月) 21:59:35.59ID:FPOa41qyお前も馬鹿か
0922デフォルトの名無しさん
2017/04/17(月) 22:28:28.26ID:0+0M+jw7byte[] buff = (byte[])Enumerable.Empty<byte>();
0923デフォルトの名無しさん
2017/04/17(月) 22:37:56.61ID:sNToWnIL0924デフォルトの名無しさん
2017/04/17(月) 22:40:07.22ID:sNToWnILこいつがまず重度の馬鹿
>>919
0925デフォルトの名無しさん
2017/04/17(月) 23:18:50.28ID:pEHnUlca0926デフォルトの名無しさん
2017/04/17(月) 23:22:01.64ID:pEHnUlcaこれこそが本物だ
http://www.int2.info/news1.htm
0927デフォルトの名無しさん
2017/04/17(月) 23:38:40.81ID:YebzKHR/0928デフォルトの名無しさん
2017/04/18(火) 00:27:01.11ID:0Yq9p2HlMicrosoft相手に訴訟すると
こういう目に会うのか
0929デフォルトの名無しさん
2017/04/18(火) 00:36:27.92ID:gic2i7xrそんな予感はしてたんだ、文体似てるし60代臭していたし
Delphi板荒らしていたヤツとよく似てたし、お前Delphiやってたし
もうじき親の財産次るんだろ?もう終わりだろ、はよ死ね
0930デフォルトの名無しさん
2017/04/18(火) 01:34:33.30ID:4m6dsFPX0931デフォルトの名無しさん
2017/04/18(火) 06:15:21.44ID:dwhcaFAXサーバーサイドでやってるバリデーションと同じことがしたいならAPI作ってajaxが筋
0932デフォルトの名無しさん
2017/04/18(火) 06:39:33.82ID:RUjuZHo60933デフォルトの名無しさん
2017/04/18(火) 07:40:17.90ID:4m6dsFPX不要な通信を避けるためにclient side validationするわけでしょ
そのために通信をしてたら意味ないじゃん
0934デフォルトの名無しさん
2017/04/18(火) 07:51:25.03ID:Su4pCCia0935デフォルトの名無しさん
2017/04/18(火) 18:30:31.09ID:dwhcaFAXclient side validationの目的は一般的には通信を避けることではなくフィードバックの即時化によるUXの改善でしょ
よほどレイテンシの大きい糞NWを想定してるとか、サーバーに頻繁にリクエストが来るのがキャパシティ的に許容できないとかでない限りは
ajaxによるバリデーションは十分有効
0936デフォルトの名無しさん
2017/04/18(火) 18:34:28.24ID:b4tf0yLR0937デフォルトの名無しさん
2017/04/18(火) 19:24:13.68ID:T0vdTXyxなるほど
でもその説明じゃうちのロートル達が納得しないよ
もっと素人が喜びそうな説明はできないの?
0938デフォルトの名無しさん
2017/04/18(火) 19:34:36.94ID:qpdySibv0939デフォルトの名無しさん
2017/04/20(木) 14:46:51.02ID:ofUg/eB0SaveChanges() が遅すぎるので、
CQRS( ttps://msdn.microsoft.com/magazine/mt788619 )をやってみようと思った
クエリ用にデータベースファースト、コマンド用にコードファーストで
DbContext を作ってみたんだけど、モデルファーストの DbContext を new すると
コマンド用の POCO と競合して曖昧と言われる
まだ試してないけど解決方法がなんか汚い
ttp://entityframework.codeplex.com/workitem/483
クエリ用、コマンド用ともにコードファーストにするのが普通なんだろうか?
SQLite はマイグレーションサポートしてないようなのでコードファーストはメジャーじゃない?
0940デフォルトの名無しさん
2017/04/20(木) 18:34:56.61ID:9NLTwIykDBからコードファーストじゃだめなん?
0941デフォルトの名無しさん
2017/04/20(木) 19:09:00.01ID:ofUg/eB0そうね
データベース(モデル)ファーストにしてるのは、
ER図を見るために使ってるだけだからそれでもいいかぁ
クエリ用(Read)とコマンド用(Write)双方ともDBからコードファーストで作って
DB変更時には再度作り直す方法でやってみるかなー
(どこらへんがコードファースト? って使い方になっちゃうなw)
0942デフォルトの名無しさん
2017/04/21(金) 00:34:55.91ID:IVDQeFzJVS2017ではどのデータベースを使うべき?
そしてEFはどのバージョンを使うことになって参考になるサイトはどこにあるんだ?
それそろ安定してほしいんだけど
0943デフォルトの名無しさん
2017/04/21(金) 01:26:41.50ID:72Ff37pOMSDN: Introduction to Entity Framework
ttps://msdn.microsoft.com/en-us/library/aa937723(v=vs.113).aspx
上記ページは、なんか日本語表示にはできるけどインデックスやら、
ページのリンクが英語になってたりして、チグハグ
和書では、EFについて書かれた本がほとんどない
書いてあっても一章分でさらっと流す程度だし、
ネット上の情報だと EF を使うための VisualStudio の操作方法とか、
いくつかの落とし穴の回避方法がパラパラ載ってる程度なので、
英語の MSDN をブラウザの翻訳機能で読んだほうがいいと思う
EF Core (EF7として開発されてたらしい) ではクロスプラットフォームの
ための軽量化で一部の機能を削いでるらしい(モデルファーストとかはできなくなる)
EF6 は EF Core が出てからもしばらくはサポートされるので、
今入門するなら EF6 を使うのがいいと思う
(というか、必要でない限り移行はお勧めされていない)
0944デフォルトの名無しさん
2017/04/21(金) 06:35:38.36ID:h0UgT1Ml0945デフォルトの名無しさん
2017/04/21(金) 07:48:39.88ID:XjCRa8hg全てを自由に弄れる立場にいて
時間をかけて生成されるデータ構造まで意識した精緻なモデル設計ができて
その案件の寿命までずっと面倒をみれるか同レベルの後継者を育てられる
そんな人がチームにいればモデルファーストは有りじゃないかな
そうでなければ使い捨てアプリぐらいにしか使えないよ
0946デフォルトの名無しさん
2017/04/21(金) 08:13:05.97ID:dQDWETdWどういうこと?
0947デフォルトの名無しさん
2017/04/21(金) 08:17:36.55ID:lbMf26rv安定って具体的に何のことを言ってんの?とっくに枯れた技術だけど
0948デフォルトの名無しさん
2017/04/21(金) 09:12:06.55ID:LWRI+6r2ヤマトのりかと
0949デフォルトの名無しさん
2017/04/21(金) 11:08:44.37ID:U4JkC8YI0950デフォルトの名無しさん
2017/04/21(金) 11:45:09.91ID:72Ff37pOWeb系の人なんだろうなー
ttps://docs.microsoft.com/en-us/ef/efcore-and-ef6/features
EF1 2008/8 バージョン4.0までは ObjectContext を使ったプログラミング、データベースファースト
EF4.0 2010/4 セカンドリリース、POCOサポート、モデルファーストサポート
EF4.1 2011/4 DbContext が導入される、コードファーストサポート、NuGet配布
EF4.3.1 2012/2 マイグレーションのサポート
EF5.0 2012/8 .NET4.5 が対象、enum
EF6.0 2013/10 オープンソース化、async対応、細かな改善多数
EF6.1 2014/3 DBからコードファーストするウィザード
EF6.1.3 2015/3 EF6系の最新(EF6.2 が出る?)
EF Core 1.0(EF7) 2016/6 コードベースが新たになる、ObjectContext 非推奨
EF Core 1.1
EF Core 2.0 2017/Q3予定 準備中
GitHub のフォルダ構成見て初めて気づいたんだけど、
EF ってASP.NET の1モジュール扱いなんだな
964 の言ってるWeb系のノリ、納得
0951デフォルトの名無しさん
2017/04/21(金) 11:56:05.07ID:8CN2PrPc0952デフォルトの名無しさん
2017/04/21(金) 12:40:19.25ID:dpyapAzzあくまでもイメージだが品質とか安定性より開発速度とかリリースを優先するって感じ
>>947
腐ったまま枯れてるってことはいくらでもあるし
0953デフォルトの名無しさん
2017/04/21(金) 17:42:09.62ID:MpBIOwvX状況としてはよくある波形ビューワーで、表示先頭位置と倍率が変えられて、
カーソルが2つあって、フィットボタンを押すと画面にフィットするもの。
(カーソル0が画面の左端、カーソル1が画面の右端になるように、
自動的に表示先頭位置と倍率が調整され、再描画される)
(A) 表示先頭位置の変更→画面再描画
(B) 倍率の変更→画面再描画
とした場合、
フィットボタンを押す→
表示先頭位置と倍率が自動的に変更される=普通は上記(A)または(B)に当たる
→自動的に再描画される
となるのだが、ほとんどのケースで2回描画されてしまう。
そこで今は、倍率変更側はフォーカスを確認して
(B') 倍率の変更→(フォーカスがある時のみ)→画面再描画
として1回描画にしているが、
これだとフィットボタンを押したとき、結果的に倍率のみの変更の場合は再描画されない
(同じ値を上書きしてもChangedが発火しない)ので、フィットボタンのイベントの最後に
if (!changed_start_pos) redraw();
を付けている。
ただしこれはリファクタ時に久々に見たら「はて?」と思ってしまった。
この場合って、どう組むべきなんだ?
ちなみにJavaScriptの場合は、プログラムによる変更の場合はイベントが発火しないので、
全てのイベントの最後に redraw(); が必要になるが、全部書けば全く問題ない。
フォームの場合はプログラムによる変更でもイベントが発火するので、この問題が起きる。
ただ、特にレアケースでもないし、一般的なうまいやり方があるとは思うのだけど。
上手く繋げられれば記述が少なくて済むからこの仕様なんだろうし。
0954デフォルトの名無しさん
2017/04/21(金) 17:42:43.14ID:MpBIOwvXvoid numericUpDown_fitButton_Clicked(Object^ sender, EventArgs^ e) { // フィットボタンクリック
// 倍率と表示先頭位置の再計算
numericUpDown_magnitude->Value = XXXX;
numericUpDown_startPos->Value = YYYY;
if (!changed_start_pos) redraw();
}
void numericUpDown_magnitude_ValueChanged(Object^ sender, EventArgs^ e){ // 倍率変更
// スクロールバー等の増減量等、他機能の整備もここでやっている
if (((NumericUpDown^)sender)->Focused) redraw();
}
void numericUpDown_startPos_ValueChanged(Object^ sender, EventArgs^ e){ // 表示先頭位置変更
redraw();
}
void redraw(); // 再描画
ぱっと思いつくのは全部 Focused を確認して redraw() だが、
それだとこの仕様(=フォームのイベントはプログラムによっても発火する)にした意味無いよね?
(その場合は明らかにJavaScriptの仕様の方がマシって事になってしまう)
多分何らかの上手いやり方があると思うのだが。
色々奇妙なのは後付でごちゃごちゃやっているから勘弁で。
今までは問題なく動作していたから放置していたが、ついでなのでリファクタしようとしている。
0955デフォルトの名無しさん
2017/04/21(金) 18:12:04.32ID:FFGpioc0そもそもコントロールのイベントで再描画ってのはちょっとw
表示先頭位置とか表示倍率とかの値はFormなりUseControlなり
独立したクラスなりのプロパティになってるはずで、それらのプロパティの変更痔に
再描画されるようにしないと
無駄な再描画を避ける方法だけど、一番いいのは余程重いのでなければ
気にしないことだと思うw
どうしてもこだわるなら、直接再描画するんじゃなくて
タイマーのイベントに再描画を紐づけしてタイマーをスタートさせるだけにするか、
Application.Idleイベントをうまく使うかするとか
0956あ
2017/04/21(金) 18:18:11.06ID:KFYgHFHLリドローが必要だとキューイングするかと。
どうせインプットのリフレッシュレートやら画面のリフレッシュレート越えてリフレッシュしても無駄なんだし、リフレッシュ時には再描画するんだし。
WindowsならWM_PAINTでやるとかが歴史的にいわゆる普通の方法では?
0957デフォルトの名無しさん
2017/04/21(金) 18:23:10.98ID:YZVNImgqEntityFrameworkとEntityFramework Coreを同一視してるおバカさん
0958デフォルトの名無しさん
2017/04/21(金) 18:35:37.53ID:RSu3z+zM0959デフォルトの名無しさん
2017/04/21(金) 18:51:51.53ID:xzjZrHPtイベント毎にRedrawイベントをどこかのキューにぶち込んで、タイマーや別スレッドで監視し、
描画時に複数のRedrawイベントがあれば最新の物を一度で済ませるようにすればいい。
0960デフォルトの名無しさん
2017/04/21(金) 18:55:13.11ID:MpBIOwvX別クラスのプロパティに分離しても本質的には同じだよね?
複数のプロパティが、
・どれかは変更される
・全てが変更されるとは限らない
・必ず変更される物があるわけではない
状況においては、内部的にOR取ることが必要で、一番単純なのはキューで上書きしてしまう方法。
つまりそちらのようにタイマーに要求を出して、
timer->start()は何度打っても同じだからそこでOR取ってしまうとか。
しかしこれだと余分にこの構造が必要なんだよね。
(ただし他の部分ではこの方法も使っている)
UIから変更された場合、60fpsとかにするくらいなら直接イベントで描画してもほぼ同じでしょ。
波形はwaveファイルで数百メガとかの場合もあり、このときは明らかにもたつくので2度描画はNG。
あるいは、独立クラスにフラグを持ってそこで上書き、
独立クラスのeventをサブスクライブしろ、ということ?
それは理想的な構造なのだろうけど、話が膨らみすぎて面倒だ。
Application.Idleは初耳だが素晴らしい。(JavaScriptではアイドルが取れない)
これってUIスレッドが、ってことで良いのか?
(ただしこれは今回は使えそうにはないが)
>>956
WM_PAINT見たがよく分からん。
システム側が再描画タイミング(おそらく60fps)を通知してくれるので、
それをサブスクライブして、そこで溜まっている再描画を掃くのか?
それはゲームみたいに常に再描画する用で、
今回みたいにUIで変更された時のみの場合は常にイベントが呼ばれる分ウザくなる気が。
あるいは、自分で何かを再描画した時だけ、
システム側で60fps同期でWM_PAINTを打ってくるのなら、今回には使えない。
0961デフォルトの名無しさん
2017/04/21(金) 18:57:50.94ID:MpBIOwvXサンクス。まあみんな意見は同じか。
他に何か、「プログラムによる変更であってもイベントが発火する」という、
フォームの仕様を上手く使った方法はないかねえ?
0962デフォルトの名無しさん
2017/04/21(金) 19:08:46.15ID:xzjZrHPt>>958みたいな感じじゃないか。
WindowsのListViewとかも、大量のデータ挿入を想定してBeginUpdate/EndUpdateと言った手段を用意しているし、一般的な手法かと。
0963デフォルトの名無しさん
2017/04/21(金) 19:19:20.39ID:72Ff37pO違いを比較しているURL貼ってるのにレスを読みもしないで小馬鹿にする馬鹿
>>953
瑣末なことで悪いんだけど、どうしても気持ちがざわつくので指摘する
「リファクタする」は日本語としてあまり使われていない
refactor の訳としては「リファクタリングする」が使われている印象
どう間違っているのかはうまく説明できん
refactoring は造語で、それを元に refactor という動詞が造語として作られている
一般的な動詞ではないので注意
0964デフォルトの名無しさん
2017/04/21(金) 19:50:01.08ID:MpBIOwvXBeginUpdate/EndUpdateはいいとして、
SuspendLayout, ResumeLayoutは反応しなくないか?
(というか>>958は俺宛ではなくEFの件なのか?と思っていた)
俺の理解ではSuspendLayoutはレイアウト時、つまり、Control.AddRangeを止めるもので、
Graphics.DrawLinesとかを止めるものではないと思っているのだが。
>>963
了解。
0965デフォルトの名無しさん
2017/04/21(金) 19:56:01.47ID:FFGpioc0コントロールのイベント使うな、っていうのは無駄な再描画対策じゃなくて設計論ね
そういう設計だと、例えばプログラムで倍率を変更しても再描画されないよね。
まあ余計なお世話だよねw
Application.Idleは例えばこうやって使う
bool DrawOnIdle {get; set;}
void Application_Idle(object sender, EventArgs e}
{
if (DrawOnIdle) redraw();
DrawOnIdle = false;
}
0966デフォルトの名無しさん
2017/04/21(金) 20:10:34.38ID:Cei54Llaレスありがとう
完全に浦島太郎状態でした
こんなことになってるとは思っても見ませんでした
.net.core の方の知識もなくてググってみたらマニュフェストらしき設定ファイルが
xmlからjsonになってるんですね...
0967デフォルトの名無しさん
2017/04/21(金) 20:16:45.24ID:TbfEGS8v0968デフォルトの名無しさん
2017/04/21(金) 20:28:06.75ID:MpBIOwvXちょっと話が噛み合って無い感があるから整理すると、
JavaScript:
プログラムからの変更ではイベントが発火しないから、
全てのイベントハンドラは redraw(); で締めないといけないが、
イベントハンドラ内で他コントロールをどれだけ触ろうと何も考える必要なし。
.NET:
プログラムからの変更でもイベントが発火するから、
関連しているコントロールのイベント先をすべて redraw() にしておけば再描画される。
だから単純な再描画についてはこっちの方が記述はすっきりする。
ただし、今回のように複数コントロールを触るイベントハンドラがあった場合、
その回数だけ再描画される可能性がでてくるからそこを対策しようとすると、途端に汚くなる。
(JavaScriptのコードは redraw(); を書くしかないし、再描画だとはっきり分かるが、
.NET のコードは俺が今やっている妙な対策法だと???なコードになる)
再描画されればいいのなら、.NETの方が良いけど、
2度描画禁止とかにしたい場合、.NETの方が記述が余計に必要になる。←これって俺の勘違いか?
というのが今回の疑問。
> そういう設計だと、例えばプログラムで倍率を変更しても再描画されないよね。
違う。プログラムから各コントロールのValueを変更することによって、自動的に再描画させてる。
というか、波形表示画面内容と表示開始位置と倍率は当然同期してないといけなくて、
逆に、表示開始位置と倍率が変わらないのなら再描画の必要がない。
それはコントロールの値を変更する構造によって自動的に達成される。
(.NETは同じValueを上書きしてもイベントが発火しない為)
だからFitボタン連打とかの場合の無駄な再描画はここで止められる。
多分.NETの仕様だとこういう事だと思うんだよ。(これがMVC的に云々というのはまた別の話)
それで、2度描画禁止の場合はどう実装するべきだという想定なのだろう?という疑問なんだ。
普通はキューイングするから問題ない、ってことなのかな?
(なお、明示的に再描画したい場合は redraw() を呼ぶだけだから問題ない)
0969デフォルトの名無しさん
2017/04/21(金) 20:42:28.79ID:MpBIOwvXコントロールの値を変更→モデルの値を変更→再描画
という流れになるけど、モデルの値をプログラムから変更する場合、
コントロールの値の表示を手動で合わせてやる必要がでてくる。
これが面倒だから、WPFではバインディングってことで自動化してる。
これはこれで良いとして、
.NET作った時に今回のようなケースが想定されていないはずもなく、
彼等の想定実装があるはずで、
その通り実装すれば綺麗に実装出来るはずなんだが、というのが俺の疑問。
0970デフォルトの名無しさん
2017/04/21(金) 20:43:34.30ID:FFGpioc0勘違いではないよね。
その認識であってると思う。
コントロールのプロパティを値の入れ物として利用するのは普通はよくない作法だと思う。
コントロールはあくまでUI(表示と入力)に徹するべきで、
表示先頭位置とか表示倍率とかの値はFormなりUseControlなり
独立したクラスなりのプロパティにするべきだというか、普通はすると思う。
で、再描画はコントロールのプロパティが変更されたタイミングではなく、
表示先頭位置なり表示倍率なりのプロパティが変更されたタイミングで行う。
当然、この場合も一度に複数のプロパティが変更されたときに
不要な再描画を回避する方法は考える必要がある
0971デフォルトの名無しさん
2017/04/21(金) 21:04:34.72ID:rPWpf+kQコントロールの挙動全部把握してるやつが触らないとぶっ壊れるって
モノ作ってんだろ?
それって設計悪くない?
0972デフォルトの名無しさん
2017/04/21(金) 21:07:01.51ID:MpBIOwvX> コントロールのプロパティを値の入れ物として利用するのは普通はよくない作法だと思う。
MVC的にはそうだね。ただ、この部分のUIなんて変更はないからどっちでもいいのも事実。
ところでその場合、バインディングはどう実現する?
(C) numericUpDownのValueChanged→モデルの値を変更
これはいい。ただFormの場合、
(D) モデルの値が変更された→イベント発火でnumericUpDownの表示値を変更
とすると、当然(D)の直後に(C)が発火して、
モデルの値を再度「同じ値」で上書きして、そこでイベントが止まる。
これって全くの無駄でしょ。
.NETの仕様を決めた時、これらが想定されていないはずもなく、
彼等なりの上手い使い方があったと思うんだよね。
(今現在それが良いとされる手法かどうかはともかく)
今のところ、表示とモデルの内容を同期するのに一番簡単な方法は、
「numericUpDownのValueをモデルの値として扱うこと」なんだよ。
そしてこれだと他クラスから見えないので、コピーを持ってる。
これは後付でこうなった、というのもある。
実装は、イベントハンドラに何個でも関連づけさせられるからそこでさせてる。
0973デフォルトの名無しさん
2017/04/21(金) 21:13:36.92ID:MpBIOwvXモデルをどこに置くか、という話なんだよ。
Formの仕様だと、numericUpDownのValueプロパティを「モデルの値」として扱えば
すべてすっきり行く仕様になってる。だからそうしてる。
ところが2度描画禁止だとすっきり行かない。だからこれが疑問。
それならJavaScriptみたいに、最初から
「必ず1回redraw()を書かないとダメだけど、1回書けばいいだけです」の方が良かった。
だから、彼等なりの想定実装があったはずで、それを考えてる。
0974デフォルトの名無しさん
2017/04/21(金) 21:15:27.48ID:rPWpf+kQマイクロソフトお作法病って損だと思う
0975デフォルトの名無しさん
2017/04/21(金) 21:15:53.73ID:Re4upQlqEntityFrameworkはもう十分枯れてるだろバカ
Coreは確かに発展途上だけどね
元のレスを読まないからこんな的はずれなURLを貼っちゃう
0976デフォルトの名無しさん
2017/04/21(金) 21:18:21.74ID:lnct7jOB>>970の2段落目に賛成だな
見なおしたり他に移植するときにそっちの方が分かりやすいし
0977デフォルトの名無しさん
2017/04/21(金) 21:33:34.84ID:MpBIOwvXバインディングといったから分かりにくいが、放置した場合は表示が間違ってるんだよ。
これは完全にアウト。
Fitボタンが押された→
モデルの値が変更された→
再描画された
これで「波形表示」は最新になるけど、
「表示開始位置」と「倍率」の表示されている値が古いままでしょ。
そしてFormのイベントはそれ用になってないんだよ。
>>976
> イベントがダブりそうなときはイベントを-して値代入後+しなおしているなあ
これってかなり面倒でしょ。
今のところタイマで遅らせるのが一番すっきりするからそうしようかと思っている。
(これは他部分で既に実装済みなのを流用出来るというのが大きいが)
redraw()を呼んだら16ms後にredraw_implement()が呼ばれて実際に再描画とか。
ただこんなの.NET作った頃から想定してたのかな?という疑問はある。
0978デフォルトの名無しさん
2017/04/21(金) 21:34:54.35ID:h0UgT1Ml来年にはYAMLになってると思うよ
0979デフォルトの名無しさん
2017/04/21(金) 21:37:01.31ID:72Ff37pOなんだ、枯れてるとか言ってボコボコ叩かれて悔しかった奴か
「Coreは確かに発展途上だけどね」
Core の前になんかつくだろカス
0980デフォルトの名無しさん
2017/04/21(金) 21:49:04.78ID:rPWpf+kQ意味わからん
画面は自分が必要なときにデータを見て勝手に描画するじゃん
フォームはコントロールの操作によってデータを書き換えるじゃん
バインディングなんて使わなきゃ悩む要素皆無だったんでしょ?
0981デフォルトの名無しさん
2017/04/21(金) 22:08:05.95ID:Re4upQlqおや、ようやくCoreを認識できたんだね
0982デフォルトの名無しさん
2017/04/21(金) 22:08:53.85ID:1MuUAA6h自分が叩かれていることに気づいていないのは見苦しい
0983デフォルトの名無しさん
2017/04/21(金) 22:09:14.20ID:k73pGP5KそのへんはレンダリングスレッドがUIスレッドと分かれてるWPFでやろうとしてたと思われ。
0984デフォルトの名無しさん
2017/04/21(金) 22:29:56.50ID:MpBIOwvXえ?WFPって描画はUIスレッドじゃなくていいのか?
それはすごくいい。
それだとスピンコントロールのボタン連打で描画が追いつかない時にも、
イベントが溜まることなく最新が常に表示されるね。
何もしなくても。
まあ何だかんだで新しい物は改良されてるってことだね。
0985デフォルトの名無しさん
2017/04/21(金) 22:29:56.87ID:Cei54Lla本当に浦島状態
0986デフォルトの名無しさん
2017/04/21(金) 22:34:32.90ID:baDy0zQG誰だよ?
0987デフォルトの名無しさん
2017/04/21(金) 22:37:38.47ID:k73pGP5K描画はUIスレッドなのは変わらない。
UIスレッドで同じところにポンポン書き込んでも適当に間引かれる。
0988デフォルトの名無しさん
2017/04/21(金) 22:37:41.43ID:h0UgT1Mlクソ重いから結果的にはWinFormsの方が遥かにレスポンス早いんだけどね
0989デフォルトの名無しさん
2017/04/21(金) 23:07:08.58ID:MpBIOwvXうーむ、やはりイマイチか。
回答くれた皆さんありがとう。
俺は>>970ではないけど、次スレ俺が立ててもいいけど。(>>1)
0990デフォルトの名無しさん
2017/04/22(土) 01:19:50.97ID:Af8PazvWなんか無茶苦茶だな。
クリックイベントの最中に描画処理を実行してるのか?
再描画させたいならInvalidateRectとかでWM_PAINTを発生させてそこでまとめて描画するのが作法だぞ
0991デフォルトの名無しさん
2017/04/22(土) 03:39:27.34ID:BJdj4TZ/御説ごもっともだけど、そんな偉そうに言うほどのことでもないよ
0992デフォルトの名無しさん
2017/04/22(土) 04:54:36.82ID:y5zvwDCw0993デフォルトの名無しさん
2017/04/22(土) 06:10:42.01ID:4+2xx2Ut発言の正当性より自己満足度で正当性を確保しているので重要です
0994デフォルトの名無しさん
2017/04/22(土) 06:23:09.19ID:9wvnPEyCInvalidateRect発生させてもRect無視して全画面更新しちゃうよ。ふざけんな!
みたいな話だからな。ちょっと方向性が違うw
0995デフォルトの名無しさん
2017/04/22(土) 06:45:50.45ID:+hjaOcO82ch初めてか? w
0996デフォルトの名無しさん
2017/04/22(土) 08:50:41.11ID:iVvswOrb0997デフォルトの名無しさん
2017/04/22(土) 08:52:51.85ID:iVvswOrbC#, C♯, C#相談室 Part93
http://echo.2ch.net/test/read.cgi/tech/1492818720/
0998デフォルトの名無しさん
2017/04/22(土) 09:05:33.60ID:/oxuzvQq0999デフォルトの名無しさん
2017/04/22(土) 09:09:40.54ID:AhKt2WIP1000デフォルトの名無しさん
2017/04/22(土) 13:34:52.68ID:3nsKygnV10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
life time: 83日 20時間 48分 0秒
10021002
Over 1000Thread運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/
▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。