1 名前:デフォルトの名無しさん mailto:sage [2017/01/28(土) 16:46:53.58 ID:op86qfG/.net] ■Visual Studio 2015 Community & Express (無償の統合開発環境)等はこちら www.visualstudio.com/downloads/ ■コードを貼る場合はこちら ideone.com/ ■前スレ C#, C♯, C#相談室 Part91 echo.2ch.net/test/read.cgi/tech/1467211515/ ■次スレは>>970 が建てる事。 建てられない場合は他を指定する事。
2 名前:デフォルトの名無しさん mailto:sage [2017/01/28(土) 16:47:59.00 ID:op86qfG/.net] ■過去スレ C#, C♯, C#相談室 Part88 [転載禁止]©2ch.net peace.2ch.net/test/read.cgi/tech/1437808445/ C#, C♯, C#相談室 Part89 peace.2ch.net/test/read.cgi/tech/1443271409/ C#, C♯, C#相談室 Part90 echo.2ch.net/test/read.cgi/tech/1455160063/
3 名前:デフォルトの名無しさん mailto:sage [2017/01/28(土) 20:11:01.67 ID:op86qfG/.net] すいません、前スレは実質Part92でこのスレ番はPart93でした… >>2 に追加 C#, C♯, C#相談室 Part91 echo.2ch.net/test/read.cgi/tech/1467142749/
4 名前:デフォルトの名無しさん mailto:sage [2017/01/29(日) 09:06:59.65 ID:yBayvk76.net] おつ
5 名前:デフォルトの名無しさん mailto:sage [2017/01/30(月) 06:23:24.90 ID:pve8veDd.net] ストアドでダラダラと数千行も書くクズは仕事やめてくれ
6 名前:デフォルトの名無しさん mailto:sage [2017/01/30(月) 07:26:13.95 ID:tWAIhpxB.net] >>5 C#でCOBOLみたいなコード垂れ流されるよりはマシじゃね?
7 名前:デフォルトの名無しさん mailto:sage [2017/01/30(月) 13:37:08.05 ID:aat2bJqh.net] SQLおじさんか でもまぁDB内に閉じた処理なら長い処理でも ストアドでいいと思うけどな
8 名前:デフォルトの名無しさん mailto:sage [2017/01/30(月) 17:43:50.02 ID:N6dz8FOe.net] ストアドの方がマシだろう
9 名前:デフォルトの名無しさん mailto:sage [2017/01/30(月) 23:35:25.12 ID:pve8veDd.net] SQLはどこベンダもデバッガがカスじゃん
10 名前:デフォルトの名無しさん mailto:sage [2017/01/31(火) 10:33:19.74 ID:OaREUEOV.net] デバッガがないからと言ってシェルスクリプトを書かないひとはいない
11 名前:デフォルトの名無しさん mailto:sage [2017/01/31(火) 14:32:45.02 ID:tcQh4bsA.net] 書かなくて済むなら書こうとはしない
12 名前:デフォルトの名無しさん [2017/02/01(水) 00:11:53.74 ID:rMgcMaj2.net] webアプリの開発をASP.NET MVCで始めてみようと思うのですが、一般用Windows機で社内用(20名以上)の公開になるとライセンス違反になるのでしょうか また、linuxで.NET Coreの開発にすればライセンスは何も気にしなくていいものなのでしょうか いまいち良くわかっていないので変な質問でしたらすみません
13 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 00:55:27.94 ID:SIRn8MTv.net] 何の話だよ。もっときちんと謝れ
14 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 00:59:00.68 ID:GoSmMZCV.net] >>12 スレチ
15 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 01:44:48.27 ID:wmVXAizR.net] >>12 その規模のASP.NET MVCのサーバーをWindowsのクライアントOSで構築して運用すると明確なライセンス違反になる。 サーバーライセンスとCALをケチるなら、Linuxで.NET Core+ASP.NET Core+WEBサーバー。
16 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 07:23:50.51 ID:/3Lab+Ym.net] 少ない初期投資で手軽に始めてみたいならAWSかAzure使うのも検討したら? Windows Serverも時間課金で使えるよ
17 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 07:35:30.80 ID:QtOB6vhP.net] .NET CoreゆうてもVisual Studioは業務利用で有料じゃろ? VSCodeじゃまだ開発しにくいよインテリセンスイマイチだし
18 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 08:19:50.66 ID:y670B3So.net] >>17 Editionによるだろ
19 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 08:23:46.42 ID:SIRn8MTv.net] >>12 が言ってるのはVSじゃなくてWindowsのライセンスのこと Windows ServerでないWindowsをサーバーとして使い、かつ、20台以上から同時接続されるならそれはライセンス違反
20 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 12:00:03.24 ID:+pDV2e5Z.net] 同時じゃなければいいんだ
21 名前:デフォルトの名無しさん [2017/02/01(水) 14:06:30.13 ID:UvWC25bF.net] すいません、C#を使用し、NV12色空間のバイナリデータをRGBに変換する方法を教えてください。 私なりに色々なサイトから情報を集めてサンプルのメソッドを作ったのですが、成果物が思ったように出力できません。 どこが悪いかもわからず…困っております。 どなたか、このコードのどこに問題があって正常に表示されないのかご教示いただけないでしょうか。 【コード】 ideone.com/20PQG1 【その他資料】 upup.bz/j/my76880EYEYtgYgvhYE8CIw.png 【背景】 DirectShowでMP4動画の任意の位置の静止画を取得したい。DirectShowのサンプルフィルタのDumpFilterを使用し、IMediaSampleからダンプファイルを取得し、NV12からRGBに変換したいのだがうまくいかない・・・ お手数をお掛けしますが、何卒よろしくお願いします。
22 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 14:49:28.30 ID:jnCvpXDY.net] >>21 横方向は色が連続してるから、wが絡んだインデックスの計算で誤りがあんじゃね
23 名前:21 [2017/02/01(水) 14:57:10.29 ID:UvWC25bF.net] >>22 凡ミスでした・・・・ var y = nv12Binary[h * width + h + cnt]; ではなくて、 var y = nv12Binary[h * width + w + cnt]; でした・・・・ すいませんお騒がせしました;w;
24 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 18:32:14.02 ID:fkh8yjaM.net] >>19 だからスレチ
25 名前:デフォルトの名無しさん [2017/02/01(水) 19:46:14.74 ID:W7n/VPVl.net] >>12 です スレチの質問すみませんでした レスして頂いた皆さんありがとうございました 参考意見助かりました
26 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 23:00:42.87 ID:ekCEdBsk.net] 短いSQLの間に別の手続型言語を挟むような作りと長い一発SQLとは、処理速度が数十倍〜数百倍違うこともあるからしょうがない だって、DBエンジンは自動的にマルチタスク処理してくれるのに、別言語で処理するってことはシングルスレッド化するんだから それにSQLは長くても、うまければむしろ読みやすく書ける(手続型言語より短いステップでシンプルに書ける場合が多い) ただし頭の中に複数のマス目をイメージできない人が読むと呪文に見えるらしい 常に低レベルなプログラマに合わせて標準化する利点はあるだろうけど
27 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 23:29:02.19 ID:Q5WgQ/3w.net] クソ長いSQLは設計ミスったバカなDB固有の現象なんだぜ 100行超えたらなんか致命的にやらかしてるって疑った方がいい
28 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 23:45:22.94 ID:tYeJxlUS.net] SQLとか長くて6行だろ
29 名前:デフォルトの名無しさん mailto:sage [2017/02/01(水) 23:47:28.74 ID:r1Eq5mSG.net] SQLは軽くしとかないと負荷分散し辛いだろ
30 名前:デフォルトの名無しさん mailto:sage [2017/02/02(木) 00:06:00.36 ID:335RX4F5.net] 100行のSQLって何してんだよw
31 名前:デフォルトの名無しさん mailto:sage [2017/02/02(木) 00:22:55.82 ID:NP4cqTts.net] 前スレ995に言ってくれ
32 名前:デフォルトの名無しさん mailto:sage [2017/02/02(木) 00:33:35.95 ID:Xhr9HRot.net] SQLがクソ長くなるのはだいたい横持ちのせい
33 名前:デフォルトの名無しさん mailto:sage [2017/02/02(木) 00:38:43.68 ID:jMAutYAP.net] 100行ぐらいのSQLなら常人が読める程度にこなれているだろ 問題は、4つも5つもくっつけて集計したものを更に集計ている呪文のようなViewだな 「誰がこんなもの作ったんだよ」と、過去の自分に説教したくなることが偶にあるだろ
34 名前:デフォルトの名無しさん [2017/02/02(木) 01:06:08.80 ID:mPNRvOCD.net] SQLは再帰CTEの登場でチューリング完全な言語になったからな https://wiki.postgresql.org/wiki/Mandelbrot_set
35 名前:デフォルトの名無しさん mailto:sage [2017/02/02(木) 04:14:19.22 ID:gxIOcfsw.net] select *でなく select a, b, d, ....などはよくある行数稼ぎw
36 名前:デフォルトの名無しさん mailto:sage [2017/02/02(木) 11:36:33.30 ID:K/b9EIy4.net] 行数で語るのはSIer脳
37 名前:デフォルトの名無しさん mailto:sage [2017/02/02(木) 22:58:09.73 ID:JuktWcDi.net] >>33 初心者って集計を嫌うよね 集計を覚えるとSQLの表現力がグッと上がるのにもったいない
38 名前:デフォルトの名無しさん [2017/02/02(木) 22:59:25.89 ID:cdo4XHzT.net] 集計はよく使い方が分からない
39 名前:デフォルトの名無しさん mailto:sage [2017/02/04(土) 16:36:50.15 ID:sbknHPFF.net] ファイルサイズを高速に取得したいのですがFileInfoだと遅くて・・・ 何か良い方法は無いものでしょうか。
40 名前:デフォルトの名無しさん mailto:sage [2017/02/04(土) 16:45:50.00 ID:atHQASm/.net] >>39 なぜ高速に取得したいの? どうい
41 名前:、アプリケーションを想定? エクスプローラ? [] [ここ壊れてます]
42 名前:デフォルトの名無しさん mailto:sage [2017/02/04(土) 16:49:01.93 ID:sbknHPFF.net] >>40 はい。そのようなものです。
43 名前:デフォルトの名無しさん mailto:sage [2017/02/04(土) 16:52:42.09 ID:94H9RTyk.net] dir実行してパイプで取り込むとかw
44 名前:デフォルトの名無しさん mailto:sage [2017/02/04(土) 16:53:28.40 ID:ypmLJyxS.net] インデックス
45 名前:デフォルトの名無しさん mailto:sage [2017/02/04(土) 17:03:20.16 ID:atHQASm/.net] DirectoryInfoのEnumeateFilesとかでも遅いかな
46 名前:デフォルトの名無しさん mailto:sage [2017/02/04(土) 17:33:34.62 ID:sbknHPFF.net] >>44 DirectoryInfoで速くなりました。ありがとうございます!
47 名前:デフォルトの名無しさん mailto:sage [2017/02/04(土) 21:24:06.70 ID:znmRetLn.net] >>45 こういう処理はどれが正解って訳じゃないけど、見通しがついてよかったぬー
48 名前:デフォルトの名無しさん mailto:sage [2017/02/04(土) 22:20:54.73 ID:SpK5IAIQ.net] 44が的確ですごいな
49 名前:デフォルトの名無しさん mailto:sage [2017/02/05(日) 00:02:27.35 ID:PGIZ+KFZ.net] >>44 GJ!!
50 名前:デフォルトの名無しさん mailto:sage [2017/02/05(日) 13:44:40.26 ID:jpxF0hW7.net] lock()と言うのがありますが、マルチスレッドの処理で 誰かが何らかのオブジェクトをlockしているかどうか知る方法はありますか? if(IsLocked(obj)){ }else{ } みたいな処理をしたいのですが。
51 名前:デフォルトの名無しさん mailto:sage [2017/02/05(日) 13:51:41.71 ID:QLCXp5gV.net] >>49 Monitor.IsEntered(obj)とか?
52 名前:デフォルトの名無しさん mailto:sage [2017/02/05(日) 14:09:45.29 ID:PGIZ+KFZ.net] >>49 lock は System.Threading.Monitor クラスを使うように展開されるみたいだからこいつの TryEnter( ) とか使えばいいんじゃね? ufcpp.net/study/csharp/sp_thread.html
53 名前:デフォルトの名無しさん mailto:sage [2017/02/05(日) 14:22:39.19 ID:jpxF0hW7.net] >>50 >>51 Monitor.TryEnterで上手く出来ました。 ありがとうございました。
54 名前:デフォルトの名無しさん [2017/02/14(火) 20:20:16.10 ID:9KVRWgtp.net] RxのSubjectで初期値のないBehaviorSubjectはないですか? subscribeした時点でまだ一度もonNextをしていなければonNextするまでコールバックを呼ばず、 一度でもonNextされていれば最後の値をコールバックに渡す感じです
55 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 20:49:20.54 ID:pU7mkQJz.net] >>53 Rxなんか使わずに単純に最後の値を変数に入れといてそれを読めばいいのでは
56 名前:デフォルトの名無しさん [2017/02/14(火) 21:07:29.79 ID:9KVRWgtp.net] >>54 変更通知… rxが楽
57 名前:デフォルトの名無しさん [2017/02/14(火) 23:32:57.72 ID:sZcA1Jdu.net] マスコットキャラが作れると聞いて始めたのですが、 まったく、作れません。 軽く何かを教えてくださいお願いします。
58 名前:デフォルトの名無しさん mailto:sage [2017/02/14(火) 23:42:59.54 ID:jF3NlhZ4.net] 不定形 ウィンドウ でググって、あとはタイマーで絵や座標を更新するとかかな
59 名前:デフォルトの名無しさん mailto:sage [2017/02/15(水) 13:44:40.41 ID:6MEGowR3.net] >>56 Unityちゃんでもいじってみ
60 名前:デフォルトの名無しさん [2017/02/15(水) 14:22:29.43 ID:fYC4NdgN.net] visual studio2012を使っています c#でdatagridviewを使っていて、headertextを2行にしたいのですが、方法を教えてください
61 名前:デフォルトの名無しさん mailto:sage [2017/02/15(水) 14:38:33.74 ID:IaTHaUdU.net] >>59 改行コード入れればいいんじゃないか?
62 名前:デフォルトの名無しさん [2017/02/15(水) 18:06:53.63 ID:fYC4NdgN.net] GUI
63 名前:デフォルトの名無しさん [2017/02/15(水) 18:08:07.82 ID:fYC4NdgN.net] >60 GUIからだと入れることができませんでしたが、 コードから直接入れることができたので、 コードから入れました。
64 名前:デフォルトの名無しさん mailto:sage [2017/02/15(水) 19:46:34.50 ID:IaTHaUdU.net] >>62 俺も玉にはいい事言うよね。
65 名前:デフォルトの名無しさん [2017/02/16(木) 19:46:27.37 ID:3MqMajas.net] formアプリでformの大きさを小さくしたら配置してるコントロール全てがformの大きさ
66 名前:ノ比率縮小されるっての出来ないですよね? [] [ここ壊れてます]
67 名前:デフォルトの名無しさん mailto:sage [2017/02/16(木) 20:07:17.83 ID:yaBP1ZBT.net] 自前で比率計算すればできる 実装がめんどくさければGrapeCityのComponentOne買えばOK
68 名前:デフォルトの名無しさん mailto:sage [2017/02/16(木) 20:12:31.55 ID:C8TUip5w.net] WPFなら出来たけど、Winformはどうなんだろ
69 名前:デフォルトの名無しさん mailto:sage [2017/02/16(木) 20:34:36.40 ID:Dw9/ZFHg.net] m.chiebukuro.yahoo.co.jp/note/n77168 検索くらいしろよ
70 名前:デフォルトの名無しさん mailto:sage [2017/02/16(木) 22:06:01.73 ID:x6Naqncr.net] 地道に力技でやるしかない この辺りはformアプリは苦手
71 名前:デフォルトの名無しさん [2017/02/16(木) 22:16:06.79 ID:7GOAgwDK.net] メモ帳作ってるけど外観はできても中身ができなくて困ってる クリックイベントは大丈夫なはずなんだけど、 開くや新規作成 検索とか、探してたら、 開くだけで、8行ぐらいコードが必要なんだけど? 1行で呼び出す、コードとか無いの?
72 名前:デフォルトの名無しさん mailto:sage [2017/02/16(木) 22:32:47.75 ID:/R92/z+7.net] 8行でできるならいいじゃん まとめたいならこれ Process.Start("notepad.exe");
73 名前:デフォルトの名無しさん [2017/02/16(木) 23:25:56.09 ID:7GOAgwDK.net] >>70 どうも 初心者だから、妥協しようか迷ってたんだけど 当面はそちらで行かせて貰う
74 名前:デフォルトの名無しさん mailto:sage [2017/02/16(木) 23:30:09.61 ID:Dw9/ZFHg.net] いいのかよw
75 名前:デフォルトの名無しさん [2017/02/17(金) 08:32:40.56 ID:MUR4QGae.net] >>65-67 ありがとうござます 助かりました。調べて頑張ってみます
76 名前:デフォルトの名無しさん [2017/02/17(金) 08:33:43.24 ID:MUR4QGae.net] >>68 すみません。抜けてました。レスありがとうございます
77 名前:デフォルトの名無しさん mailto:sage [2017/02/18(土) 11:09:32.83 ID:cWaaGg3V.net] sqlの定義文をC#のソースにするのが面倒なんだが、気の利いたツールとかエディタの拡張とか知りませんか? create tabale hoge ([hage] text) → "create table hoge " +"([hage] text)";
78 名前:デフォルトの名無しさん mailto:sage [2017/02/18(土) 11:15:39.58 ID:MSmTE/VQ.net] >>75 逐語的リテラル文字列 あとは補完文字列なんてのもあるが、SQLインジェクションには注意
79 名前:デフォルトの名無しさん mailto:sage [2017/02/18(土) 12:10:46.00 ID:52dA0McO.net] >>75 > create tabale hoge ([hage] text) → "create table hoge " +"([hage] text)"; 変換規則がわからん 単にこれだけをやりたいだけなら正規表現でもできそうだが
80 名前:デフォルトの名無しさん mailto:sage [2017/02/18(土) 12:17:17.23 ID:rCytLmz9.net] >>75 スクリプトファイルの読み込みじゃいかんのか?
81 名前:デフォルトの名無しさん mailto:sage [2017/02/18(土) 13:26:45.21 ID:oikc5OUx.net] >>75 矢印が逆じゃあないの? 最終的には連結した一つの文字列にしたいんだろ?
82 名前:デフォルトの名無しさん mailto:sage [2017/02/18(土) 14:07:01.72 ID:uqTw3F8T.net] >>75 作れば
83 名前:デフォルトの名無しさん mailto:sage [2017/02/18(土) 14:25:52.73 ID:XkQA6zD3.net] >>75 そのサンプルだと両端にダブルクオーテーション付けて最後にセミコロン付けるだけでよくね? わざわざ文字列を分割する必要性無いと思うんだけども
84 名前:デフォルトの名無しさん [2017/02/18(土) 18:29:25.18 ID:367vvwff.net] フォームを色分けしたいんですが、どうしたらいいでしょうか。 例えば半分から上は黒で下は白のようなものです。 現状panelを使ってそのように見せているんですが、いい方法あったら教えてください
85 名前:デフォルトの名無しさん mailto:sage [2017/02/18(土) 19:51:04.90 ID:d0hejx53.net] panelを2つ貼ってbackgroundcolourを設定しろよ
86 名前:デフォルトの名無しさん mailto:sage [2017/02/18(土) 19:58:44.57 ID:M4R1Zp6s.net] それやってるって書いてあんじゃん。読めよw 無理やりオーナードローかform捨てるしかないだろな
87 名前:デフォルトの名無しさん mailto:sage [2017/02/18(土) 20:00:20.55 ID:n/aPn98B.net] >>82 なんの目的があるかわからん。 色が分かれていても、別のものを表示している訳ではないの?
88 名前:デフォルトの名無しさん mailto:sage [2017/02/18(土) 20:24:06.51 ID:jkd676sQ.net] パネルじゃなくて、ラベルとか影響の少ないコントロールを Z オーダーの一番下に張るのとか出来なかったっけ。
89 名前:デフォルトの名無しさん mailto:sage [2017/02/18(土) 20:44:32.17 ID:n5oO6gvO.net] 上にコントロール重ねること考えたらパネルが一番楽で無難なんじゃね フォーム(パネル)の背景設定でもいいけど >>86 パネル以外だと上にコントロール重ねたら下が見えなくならないかな
90 名前:75 mailto:sage [2017/02/18(土) 22:28:19.09 ID:cWaaGg3V.net] sqliteで作るときに、テーブルをツールで定義してからそのsqlをC#のソースに変換するのが面倒だっから ツールが有ったら使いたいなと思い聞いてみました 他のDBだと、ソースにテーブル定義を書くなんて無いからちょっと混乱させちまいましたね 面倒でも手でやるのが一番早そうだ
91 名前:デフォルトの名無しさん mailto:sage [2017/02/18(土) 22:56:35.91 ID:XkQA6zD3.net] EntityFramework でググれば幸せになれるよ
92 名前:デフォルトの名無しさん mailto:sage [2017/02/18(土) 23:07:16.07 ID:rCytLmz9.net] >>88 だからファイル詠み込めよ なんで動的sqlでもないのにコードに書くんだよ
93 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 00:04:30.14 ID:TkpsmKBX.net] >>82 サイズ変えないならFormのBackgroundImageに 色分けしたBitmap貼るとかいいんでないの? 好きな背景にもできるぞ
94 名前:デフォルトの名無しさん [2017/02/19(日) 00:14:46.31 ID:PjLfAeqZ.net] >82です。みなさんありがとうございます。 説明補足すると、メッセージボックスを自作していて、メッセージボックスのような背景を作りたかったんです。
95 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 07:54:46.40 ID:ngALvOwB.net] >>88 > 他のDBだと、ソースにテーブル定義を書くなんて無いから SQL-SERVER 使ってるけど一時テーブル作ったりで普通にあるけど?
96 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 08:47:37.68 ID:iOIH+Q4P.net] >>92 似たようなことはDock=Top, AutoSize=FalseとしたLabelでよくやる。
97 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 10:11:31.31 ID:93wksAh/.net] >>89 sqliteでEF使うと致命的に遅いから無理ですわ >>90 何故に喧嘩腰? >>93 俺はあまり一時テーブルに頼らずにviewでなんとかするのが好きだから、そこまで思い当たりませんでしたわ たしかに一時テーブルが正義の場合だって少なくないだろうが
98 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 10:23:29.24 ID:TZ/mXSM2.net] 一時テーブルは保守性が下がりパフォーマンスもスケーラビリティも多くの場合悪くなるのでやめてください
99 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 10:32:03.79 ID:kiv7S6GK.net] >>96 そう言って糞長いストアド作りまくった挙句に保守できなくなった案件があったと、DBコンサルが笑い話のネタにしてたな 一時テーブル=害悪はどこの文化なんだろ
100 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 10:41:13.77 ID:98lVckOm.net] 一時テーブルは使うけど実行時にcreateするってのは経験ないなぁ
101 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 10:41:38.21 ID:7Avz8j0c.net] そういうのは結局は開発者の能力の問題 一時テーブルかストアドかはそれほど重要ではない
102 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 11:34:46.47 ID:gpMreema.net] >>95 , >>97 一時テーブルとビューとかストアドとは使いどころが違うと思うんだが何故に比較してるんだろ? >>98 セッション内でのみ有効な一時テーブルとか使ったことないの?
103 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 11:42:57.76 ID:98lVckOm.net] >>100 あったあった。そう言われると1度だけ。 あのときは言われたとおりやっただけだから忘れてた。
104 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 11:52:35.81 ID:TZ/mXSM2.net] >>97 一時テーブルなんてなくてもクソ長くならないし そもそもストアドなんて保守性の低いものをむやみに使う必要もない リレーショナルデータベースとは何か勉強しなおしてこい
105 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 12:29:51.72 ID:LQaPeC4X.net] 普通はefを使うもんなの?
106 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 12:40:55.60 ID:zEbYND7D.net] テーブルがシーケンシャルファイルにしか見えないCOBOL世代の人なんかは一時テーブルとかストアド好きだよね 結局は自分の慣れ親しんだ領域に持って行ってやるのがその人にとってはベストなんだよ どうせ保守するのは自分じゃないし自社ですらないことも多いからその場でその人員でできるベストを採用しなきゃビジネスとして悪手 流行りや有名コンサルに乗せられて意識たかそうなコードをメンバーのスキルもないのに書こうとする これが最悪の選択肢 列挙型とswitchで分岐しまくるほうがメンバーにとって理解しやすいならそれがいい そういう現場では多態性を利用したコードは生産性が落ちる 一時テーブルとストアドも同じでメンバーが理解しやすいというなら保守を受注する会社あるいは保守担当の同僚に心の中で懺悔しつつ採用すべきだ
107 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 12:43:22.84 ID:OMGCNA7z.net] スレチ
108 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 12:55:43.81 ID:LQaPeC4X.net] >>104 >テーブルがシーケンシャルファイルにしか見えないCOBOL世代の人なんかは一時テーブルとかストアド好きだよね 新しい世代の人にはどう見えるの? dbの操作はどういう手法が普通なの?
109 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 12:58:51.41 ID:7Avz8j0c.net] >>106 大抵の処理は積極的にJOINを使えば1パスで済ませることもできる
110 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 13:05:26.33 ID:NYetswUU.net] あとは、DBを永続化されたオブジェクトの単なるストレージと見做して ORMを活用してほとんどC#の中でやってしまうスタイルもある
111 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 13:10:17.55 ID:93wksAh/.net] 速度が問題にならない場面でも速度ばかり気になるのは何故なんだろうな? だから10倍遅くなるEFはあまり好きじゃない エントリーみたいなものならEF使ったほうが良いとは思うんだけどね
112 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 13:13:51.67 ID:LQaPeC4X.net] >>108 そのormというのは75みたいなsql文を実行するんですか?
113 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 14:09:14.55 ID:zEbYND7D.net] >>106 別に新しくもなんともないけど普通は行あるいは命題の集合に見える 操作は当然DMLで行う(データ操作言語だからね)
114 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 14:24:55.62 ID:7Avz8j0c.net] 近年ではビッグデータ界隈で古典的なバッチ処理が最新技術として復活したけどね 処理を行単位ではなくテーブルからテーブルへの射影と考える粗粒度なバッチ処理は 分散処理や糞遅いスクリプト言語との相性がいい
115 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 15:04:35.19 ID:rTEdd30o.net] 最近EntityFrameworkじゃなくてDapperばっか使ってるわ
116 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 15:09:45.51 ID:MFFmnvDE.net] 真っ当な判断能力があるなら必然的にそうなる
117 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 15:11:31.44 ID:OMGCNA7z.net] DbExecutor使ってるけど全然更新されなくて悲しい
118 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 16:48:08.70 ID:LQaPeC4X.net] >>113 Dapperと言うのを調べてみたのですが生のSQLを実行するのと 何が違うのか良く分かりません。Dapperと言うのを使う場合でも SQL文を実行するんですよね? 何が違うんですか?
119 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 16:55:48.71 ID:JyXmk48j.net] >>116 Dapperは主にクエリ結果をオブジェクトにマッピングするためのライブラリ Dapperを使わない場合でもDataTableやDataReaderをそのまま使わずに型安全なオブジェクトに変換してから処理をするだろう? それを楽に書きたい人のためのものだよ
120 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 17:11:25.76 ID:LQaPeC4X.net] >Dapperを使わない場合でもDataTableやDataReaderをそのまま使わずに型安全なオブジェクトに変換してから処理をするだろう? Dapperを使わない場合ですが、DataTableに読み取ったあと、カラムの型は自分では分かっているので順番にデータを取り出して、 その型にキャストして読み出すのはダメですか? それとも私何か勘違いしていますか?
121 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 18:11:13.51 ID:7Avz8j0c.net] >>118 それを自動でやってくれるのがDapper
122 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 20:35:23.16 ID:LQaPeC4X.net] >>119 なるほど。ありがとうございました。
123 名前:デフォルトの名無しさん mailto:sage [2017/02/19(日) 20:41:40.94 ID:+HIMLleH.net] Dapper気軽そうでいいね。
124 名前:デフォルトの名無しさん [2017/02/19(日) 21:16:27.26 ID:PjLfAeqZ.net] >94 なるほど、ありがとうございます
125 名前:デフォルトの名無しさん [2017/02/19(日) 22:55:47.64 ID:L+LZlPn0.net] 35:54 ↓ 10:40 https://www.youtube.com/watch?v=WTdY7h129Mk https://www.youtube.com/watch?v=8R0luOy8ce8
126 名前:デフォルトの名無しさん [2017/02/22(水) 23:33:37.07 ID:yhciyQan.net] 質問させてください。 なにかの処理中にフォームなどを起動させておく、以下の処理について。 while(xxx.HasExited == false) //xxxはインスタンス { Applcation.DoEvents(); System.Threading.Thread.Sleep(200) } この処理はwhile文で回していますが、DoEventsとSleepは、なにか処理が行われるたびに呼び出されると思ってよいのでしょうか。 起動中に なにか処理する→0.2秒とまる→なにか処理する→0.2秒とまる→… みたいな。 またこのSleepは、現在起動中の処理を一時的に止めると思ってよいでしょうか。 ご教授お願いします。
127 名前:デフォルトの名無しさん mailto:sage [2017/02/22(水) 23:52:38.18 ID:d6y2GeKl.net] >>124 何を見たのか誰に教えてもらったのか知らないが、まずはそんなクソコードは忘れよう DoEventsはVB時代の遺物であり、使用は推奨されない 今時は時間のかかる処理をGUIをフリーズさせることなく実行したい時は await Task.Run(() => { 何かの処理 }); と書く
128 名前:デフォルトの名無しさん mailto:sage [2017/02/22(水) 23:56:30.83 ID:huuz+PNn.net] その処理だと、全力でDoEventsと0.2秒休むを繰り返すだけだよ つか、今どきDoEventsとか存在を忘れたほうがいいんじゃないかねえ
129 名前:デフォルトの名無しさん mailto:sage [2017/02/22(水) 23:57:19.06 ID:954rYVtd.net] >>124 そのセットは別スレッドの入力待ちのテンプレ ・・・Application.DoEvents()って必要だったっけ?w それはあいまいだけど、キー入力待ちか外部exeからの返り値待ちで使われている
130 名前:デフォルトの名無しさん [2017/02/23(木) 01:32:48.34 ID:zQR1bKXh.net] >124です。みなさんありがとうございます。 最近は推奨されないんですね。 理解としては>127さんのとおり、イベント発生したらDoEventsが実行されると思ってよいのでしょうか。
131 名前:デフォルトの名無しさん mailto:sage [2017/02/23(木) 01:40:04.09 ID:l1pCIGHb.net] 逆 DoEventsが実行された時に貯まってるイベントを処理する
132 名前:デフォルトの名無しさん mailto:sage [2017/02/23(木) 14:52:23.00 ID:daVfofu2.net] C#をCGIぽく使うベストプラクティスとかないだろうか。 普段はcentOS+nginxでJavascriptとRuby/PHP、一部バッチにC#って感じでWebサービス開発してる。 リクエスト毎にサーバ側でC#アプリケーションを引数添えて実行して、戻り値を取得するのは出来るんだけど・・ 。 とても実用には耐えなさそうだし、Webホストとか使うのかと思ったがわからず困ってる。
133 名前:デフォルトの名無しさん mailto:sage [2017/02/23(木) 15:24:59.57 ID:0G6iEay4.net] なぜ実用に耐えなさそうだと思うの? そう思うからには理由あるんでしょ。そこ解決すればいい
134 名前:デフォルトの名無しさん mailto:sage [2017/02/23(木) 19:34:00.47 ID:osMc+8cA.net] 毎回プロセスつくんの?
135 名前:デフォルトの名無しさん mailto:sage [2017/02/23(木) 20:12:55.31 ID:OJm2Ca4N.net] じゃあC#でWebサービス作ればいいじゃないか
136 名前:デフォルトの名無しさん mailto:sage [2017/02/23(木) 20:13:27.60 ID:u2e4Httf.net] そんなごちゃ混ぜで
137 名前:ソゃんと保守できるの? [] [ここ壊れてます]
138 名前:デフォルトの名無しさん [2017/02/24(金) 01:33:54.44 ID:eab+BK9O.net] >>130 ASP.NET Web API
139 名前:130 mailto:sage [2017/02/24(金) 11:37:39.67 ID:dB0UjfyS.net] みなさん、回答ありがとう。 毎回プロセス作るのはオーバーヘッドでかいから、常駐型になるのかな? その時のやり取りの仕方をSendMessageだったり、ファイル常時監視してキューファイル投げるとかしか知らないんだ。 WebサービスとかASP.NETで調べてたら、やっぱりC#としての回答はこれなのかなって気がしてきたわ。 個人的な宗教上の理由で避けたかったけど、検討してみる。。ありがとう。
140 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 12:36:59.04 ID:YZGHPd2K.net] >>136 > 毎回プロセス作るのはオーバーヘッドでかいから それが問題になるようなサイトなのか?
141 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 15:11:03.84 ID:nwaeFCKh.net] ASP.NET MVCって案外重たいよ
142 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 15:50:26.31 ID:pDljuoBB.net] そらそうやろ
143 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 16:13:46.51 ID:0wjaf/O/.net] C#でWindowsフォームアプリケーションを作るための良い解説書はあるでしょうか? 独習C#はもう読み終えたので基本的なことはわかっていると思います。
144 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 16:41:06.62 ID:nwaeFCKh.net] ゲームしたいです。ゲーム機とゲームソフト買いました。どっちのマニュアルも読みました 早く遊びたいです。次はどんな攻略本読んだらいいでしょう? ゲームじゃこういうのないのに、プログラミングじゃ多いよな 基本わかったなら何故始めないw
145 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 16:48:06.10 ID:0wjaf/O/.net] >>141 独習C#ではWindowsフォームの説明がいっさいなかったので、コンソールアプリしか作れないのです。 フォームに特化した解説書かサイトがあればと思い質問しました。
146 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 17:08:33.80 ID:pp6ofCfh.net] 本なんか一冊も読んでないけどWinFormアプリいくつも作っている 就活で役立てたいのならマ板に行って聞いたら? 趣味でやっているのなら向いていない
147 名前:デフォルトの名無しさん [2017/02/24(金) 17:45:41.09 ID:LZq2xNz5.net] Formアプリもコンソールアプリもコードベースで作るなら同じって慣れれば分かるけど、最初は分からないよねー javaのswingで同じこと経験した
148 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 17:57:21.18 ID:m8N/tmCl.net] 本読むやつはプログラミング向いてない
149 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 18:16:02.45 ID:2lTW2QAE.net] amazonでC#マガジンの海を渡ればWinFormの本が見つかる
150 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 18:26:49.22 ID:2HxY6Dp6.net] まだWinFormの時代なんだなw
151 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 18:27:42.45 ID:0tWWIcvC.net] >>145 悪かったな、読んでるよ。
152 名前:デフォルトの名無しさん [2017/02/24(金) 18:44:16.34 ID:ZTtaAqVi.net] きちんと勉強したいなら本代はケチんなってばっちゃが言ってた
153 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 18:44:46.20 ID:WmxnDnjh.net] WPFの本出しても売れないのは明らかだしな
154 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 18:47:19.91 ID:JpyYS2dN.net] コンソールアプリは明確にmainというエントリポイントがあるが、 GUIはイベントベースから最初の最初は戸惑うだろ。 (どこにコードを書くのかわからない) ただ、1回やれば分かるが。 で、そのレベルならMDSNのチュートリアルで十分だと思うよ。 https://msdn.microsoft.com/ja-jp/library/dd492171.aspx これで駄目なようなら向いてないってのは事実だよ。 本買って本格的に学ぶ内容ではない。 (これはWPFだけどどうせ違いも分かってないでしょ。 古いバージョンのを探せばフォームのチュートリアルもあるはずだし)
155 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 18:49:16.49 ID:CB55ejbI.net] ダブルクリックしてれば何とかなる
156 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 20:32:10.23 ID:DIkdt+H/.net] 肥大化するForm
157 名前:1.cs [] [ここ壊れてます]
158 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 20:55:52.19 ID:2lTW2QAE.net] ソリューションエクスプローラでファイルを入れ子にする ttp://wiz.came.ac/blog/2009/09/post-2.html
159 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 21:52:47.57 ID:KBFO5tFR.net] form動かすのは簡単だけどformのコードを破綻させずに書くのは難しい 少なくとも日本の大半の職業プログラマには無理 悲しいね
160 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 22:19:08.66 ID:ezpXAtZb.net] 動きゃいい
161 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 23:22:45.93 ID:WdGON0E4.net] 最近はウェブでなんとかなるんだが、きちんと本で勉強するべきだと思う。 C++長かったからC#楽勝と思ったけどラムダ式が読めない。 今更独習C#はと思ったが読んでよかった。
162 名前:デフォルトの名無しさん mailto:sage [2017/02/24(金) 23:40:01.37 ID:nwaeFCKh.net] ラムダ式使えなくって作りたいものは作れるからな 言語を学びたいのか、プログラミングしたいのか、だな
163 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 00:07:49.88 ID:Hh3bBfOP.net] ラムダ? 登場してから60年以上たってもLISPが普及してないのが答え。いらん。
164 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 00:27:59.19 ID:N0RLU+6x.net] 俺が使っているのはJavaScriptなんだが、ラムダは超絶便利だぞ。 ただし使わなくても書けるし、いちいちクラスにしてしまう手もあるし、どうにでもなるのも事実だが。 本で学ぶことが必要なのではなくて、いろいろな道具があることを知るのが重要。 今時の言語は全てラムダ使えるんだから、他言語少しでも学んでいればラムダは使えたはず。 その点、C++は古い言語だったのも事実。 ただどう見ても142はそれ以前だろ。 そもそもWPF(というよりHTML)やったほうがいいんじゃないかと思うし。
165 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 00:54:21.20 ID:N9ovtMND.net] ストラテジー用のインターフェース定義とかいちいちめんどくさい Func、Action、ラムダでスパッと実装したい
166 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 00:58:33.11 ID:Jm21gNIW.net] スパッと書く書式、 スパっと書くアルゴリズム、 スパッと書くクラス設計・・・ いつまで経ってもプログラミング始めれず勉強の毎日だぞ
167 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 01:18:47.75 ID:N0RLU+6x.net] めんどくさい人にはマジでJavaScriptオススメ。 あのデタラメッぷりには最初戸惑ったが、慣れてしまうと相当いい。 ラムダに慣れたいだけなら、スクリプト言語系(JavaScript/Python/Ruby)がマジでいいと思う。 C#のデリゲートって使う前にいろいろ準備が要って面倒だし、 あるのを知ってても使う気にならないでしょ。 俺もVC++しか使ってないころは全く興味なかった。 でもJavaScriptでお気楽にラムダ使いまくった後は、VC++でも使いたくなる。 だってそのほうが楽だと知ってしまったから。 ただ、いちいち型を合わせないといけないのが面倒だったりする。
168 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 01:26:56.21 ID:N9ovtMND.net] インテリセンス弱いスクリプト系言語は怠け者には向かない
169 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 01:40:08.63 ID:N0RLU+6x.net] まあIDEに関してはC#が一番上なのだろうね。それは思うよ。
170 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 01:45:57.08 ID:Hh3bBfOP.net] winform使うにしもてwin32の知識は必要。結局win32ラップだし。
171 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 01:46:38.10 ID:FbflVc2K.net] ラムダはインテリセンスあってこそやね。
172 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 02:39:26.60 ID:ByE41wZl.net] これからC#でGUIするんならWPFにしたらいいんじゃない。フォームは古いし。 但し、WPFの本はない、あるけど使えないと云うか価格に見合ってない。いい本あったら教えてもらいたい。
173 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 07:34:49.62 ID:JxD18xMy.net] WPFやってみたけどやっぱりformのほうがお気楽だから戻ってきてしまった
174 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 07:54:43.41 ID:fA+zhTaO.net] javascriptのラムダって例えばどんなヤツよ?
175 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 08:03:07.91 ID:vx9FCuam.net] >>1
176 名前:70 今のJavaScriptは (x, y) => x + y のようなC#と全く同じ構文の(というかC#をそのまま真似したんだろうけど)ラムダが使えるよ もちろん従来の function(x, y) { return x + y; } でもいいし [] [ここ壊れてます]
177 名前:デフォルトの名無しさん [2017/02/25(土) 10:39:52.17 ID:TcOntMIt.net] JSだとインテリセンスが弱い?TypeScript使おうぜ
178 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 12:04:24.91 ID:N0RLU+6x.net] JavaScriptのラムダがC#を真似したと言うのは自意識過剰すぎ。(短縮記法の()=>は真似してる) インテリセンスはMS発なんだしはっきり言えば全員C#を真似しているからVS環境のTSではよくて同等まで。 JavaScriptは文法的な意味で関数とラムダを区別してない。 だからさらっと書いてそれだけ。 var count = 0; var count_up = function(){count++;}; var show_count = function(){console.log(count);}; count_up(); count_up(); show_count(); // 2 見りゃ分かるが具しか書いてない。だから論理的にこれ以上お手軽なのはない。 (短縮記法は出来るがあれはタイプ数がケチれるだけ) ついでに階層もクラスも関数で記述するというデタラメッぷり。 だからそもそも「ラムダなんて使いません(キリッ」みたいなことが出来ない。 (階層がラムダ) 知らなければ意味不明だと思うが、とにかくそういう世界だ。 その状況で慣れると、心理的な障壁が取り除かれる。 ラムダ嫌いって要するにこれだろうし。
179 名前:デフォルトの名無しさん [2017/02/25(土) 12:12:40.17 ID:TcOntMIt.net] ES6ならclass構文(内部では関数に変換されるけど)あるからかなり楽になったぞ
180 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 12:24:18.16 ID:S4wbN3RD.net] ラムダは真似というか普通に輸入だろ ES6の策定にはMSも主導的な立場のメンバーとして当然参加してるし
181 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 12:26:33.18 ID:IfKbzrsT.net] >>173 はjavascriptやったことない奴でも初見で何してるか分かる でもこんなの書かれたら初見で見破るの無理でしょ var res = ((Func<int, int, bool>)((i, j) => i == j))(5, 3); ラムダ嫌いはラムダが嫌いなんじゃなくて、読みにくいラムダが嫌いなんでしょ 「ラムダなんて使いません(キリッ」じゃなくて「読みにくいラムダなんて使いません(キリッ」なんだよ
182 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 12:31:25.09 ID:N0RLU+6x.net] >>174 あんなもん所詮慣れ。俺は従来のJavaScriptの構文でも苦労してない。 そしてラムダも所詮慣れ。慣れればどうって事は無い。(難しくは無い) ただし使わなくても実装できるのは事実で、わざわざ慣れる必要があるかは微妙。
183 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 12:45:06.30 ID:S4wbN3RD.net] >>176 関数の即時評価はJSでは非常によく使われるテクニックだよ C#のラムダなんて、本来の副作用がない使い方をするのがほとんどだから可愛いもんだ JSではガンガン副作用書いていくから超複雑だよ
184 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 13:25:03.75 ID:Hh3bBfOP.net] >>176 パラダイムが違うものごっちゃにして何がしたいんだ? やたらカタカナ使う田中康夫やルー大柴の日本語みたいなものだ。
185 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 13:29:41.99 ID:N0RLU+6x.net] >>176 それは型情報を付加しようとしているから見た目複雑になる。 型情報が無いJavaScriptなら以下になる。 var func = function(i,j){return i==j;}; var res = func(5,3); もちろん1行でも書けるが、これはJSer以外にはすこぶる評判が悪い。 var res = (function(i,j){return i==j;})(5,3); そしてこれをアロー関数(短縮記法)で書いたらC#の型情報を落としたものと同じになる。 var res = ((i,j)=>i==j)(5,3); そもそも「お手軽にやろうぜ」というノリなら型情報が無いほうがよく、 その点がC#だとどうに
186 名前:焜tィットしない。 ただしラムダ使い全般が馬鹿なのか、 あるいはJavaScript含めた関数系一般に言える傾向なのかは定かではないが、 おかしな記述で余計複雑にする馬鹿、まさに「木を見て森を見ず」はよく見かける。 奴らは「木」つまり一箇所の記述を最小限にすることに異常にこだわり、 「森」つまり全体を最小限にすることを考えていない傾向がある。 だからラムダ(キリッな奴が出してくるコードが糞なことも多く、 これがラムダを知らない連中にとってラムダを学ぶ価値があるように見えない理由だと思う。 対してオブジェクト指向は「森」を「林」に小分けする手法だから、 オブジェクト指向をきちんと出来ている連中から見れば余計に馬鹿に見えてしまうし。 [] [ここ壊れてます]
187 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 13:31:51.44 ID:Hh3bBfOP.net] これだからemacs使いは嫌われるんだよ。
188 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 14:43:31.03 ID:Qzh8dVTL.net] 関数呼び出しでデリゲート渡すところをラムダ式で書いたりするのが便利だし、プログラムが小さくなり、関連ある記述がまとまり、慣れると読み易い。 まあ、伝統的と云うか、平均以下のレベルに合わせたコーディング規約が幅をきかせているプロジェクトでは忌み嫌われる。
189 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 15:18:03.16 ID:IvVV1H8V.net] var res = (5 == 3) それ関数使わなくてもいい例だから もうちょい違うのなかったかな
190 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 15:39:38.73 ID:9TfgDVOx.net] 保守性や可読性でラムダを嫌う人がいるのはまあ良いんだけど 経験的にそういう人のコードが優れてるかっていうとそうでもない 同じような構造のループ処理を大量生産したり try catch log出力を延々と全てのメソッドに書いたりする
191 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 15:44:53.00 ID:3ZNX7OqZ.net] >>183 今日のとんちきレス大賞
192 名前:デフォルトの名無しさん [2017/02/25(土) 15:46:20.53 ID:TcOntMIt.net] ラムダは静的なダックタイピングにするべきだったと思う 長くなる時はエイリアス設定するとかにして
193 名前:デフォルトの名無しさん [2017/02/25(土) 15:46:55.92 ID:TcOntMIt.net] >>183 ガイジかな?
194 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 16:24:58.90 ID:N0RLU+6x.net] >>182 つかそういう問題じゃない。C++なら例があるが。 > auto 型推論とラムダ関数を使用すると、コードをすばやく記述して、それを引き締め、より的確に把握することができます。 > https://msdn.microsoft.com/ja-jp/library/hh279654.aspx この2つのコードで下のほうがいいと思えるかどうかだよ。 正直、俺にはどうでもいい範囲だよ、これは。 こんな局所的部分で活用(キリッしたところで大して意味が無い。 確かにコードは減るけど、バグる確率が減るわけじゃないでしょ。 そして関数型()の連中が出してくる「ラムダの優位性(キリッ」なコードはほぼ全てこの類であり、 巨大プログラムを分割して直接的に単純化する「オブジェクト指向」と比べて、訴求力に乏しい。 理由は簡単で、そもそもラムダは「糖衣構文」でしかないから。 実体は「関数ポインタ+変数」であり、 Cなら構造体ポインタを引数に取る関数、 C++なら関数オブジェクトまたはクラスで表現できる。 (見にくいが元々記述できる。これがストロウストラップがラムダ導入に反対していた理由だと聞いた) だからJavaScriptの文法が関数=ラムダ=階層=クラスなのも自然ではあるし、 Rubyが匿名関数(ラムダ)を匿名クラスで表現するのもこのため。 結局、ラムダを導入したところで出来ることは増えず、本当の意味での「エレガント」なコードにはならない。 ところが関数型()の連中は「エレガント」=「短い」or「ラムダ使ってる」と勘違いしている馬鹿が多くて、 上記URLのコードなら「下側がイイ!」「下側じゃ無いと許さない!」とか言い出すからおかしくなる。 「自転車置き場の議論」と同じで、馬鹿なりに見える範囲で考えたんだろうが、所詮馬鹿でしかない。 プログラミングにおける「エレガント」は数学と同じで、 「こう考えればこんなに簡単に解けるんだ!」であり、 糖衣構文でしかないラムダは本質的には全く効果が無い。 ただし、俺自身も慣れる前はラムダを選択肢に入れていなかった=思考を狭めていた。 これはまずいので、通常の選択肢として考えられるほどには慣れておく必要はある。 ただ、それ以上の意味は無い。
195 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 16:25:31.63 ID:N0RLU+6x.net] 余談だが、JavaScriptのプロトタイプとダックタイピングはこの意味で面白い。 出来ることが増えているので、直接的にもっと「エレガント」を探求できる。 以前話題になっていた拡張メソッドの継承もJavaScriptなら最初から出来る。 ただし、何でもかんでも出来ればいいものでもなく、馬鹿に使わせたら余計におかしくなるのも事実。 その点、C#はいいバランスを目指していていい。 ただしこの意味で「封印済み」の場所もあるから、 C++やJavaScript等「何でもあり系」言語に親しむのも悪くないと思う。
196 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 16:30:23.41 ID:IvVV1H8V.net] >>185 ,187 ほう? じゃ>>176 のこのコードがどういう場合に有用なのか教えてくれ >var res = ((Func<int, int, bool>)((i, j) => i == j))(5, 3);
197 名前:デフォルトの名無しさん [2017/02/25(土) 16:39:02.64 ID:TcOntMIt.net] >>190 C#とJSのラムダの比較の為に出しただけであって、有用なのかは今関係ない
198 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 16:39:23.68 ID:3ZNX7OqZ.net] >>190 誰も処理内容の話なんかしてないぞ みんなはアメをくるむ包装紙の話をしてるのに君だけアメの味を話題にしてる
199 名前:デフォルトの名無しさん [2017/02/25(土) 16:41:51.21 ID:TcOntMIt.net] 例え上手い
200 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 17:09:31.56 ID:fb/41uG4.net] >>190 まじasp
201 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 17:21:54.68 ID:WB0pRnLv.net] 変更されることがない前提のList<int>を複数のスレッド でforeachするのは問題があるでしょうか。 やっぱりlockすべき?
202 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 17:22:56.07 ID:N0RLU+6x.net] >>186 コードを最小限にするためには ・型=なし ・多重継承=あり ・ダックタイピング=あり がいい。この点JavaScriptは、型無し、多重継承は手動で可能、ダックタイピングあり、なので向いている。 一方C#は、型あり、多重継承禁止、ダックタイピングなし、なので 「コード量」よりは「きっちり書くこと」を目指しており、 「手抜き」が主な目的のラムダとどうにも相性が悪い。 ここでダックタイピングだけ導入しても余計に混乱すると思う。 つかね、C#って「一文字でもケチりたい」奴用の言語ではなくて、 「型なし言語では堅牢なアプリは作れない」と考える連中用の言語だし。
203 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 17:30:35.48 ID:IvVV1H8V.net] はあ? 包装紙の不要な物を包装紙でくるんでこんな包装の仕方はダメじゃって言ってる人に 包装紙の良し悪しについて平然と議論しつづける神経のほうがわからんよ
204 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 17:43:27.22 ID:Hh3bBfOP.net] C#は業務系で使われたいのか、やっつけアプリ用に使われたいのかって話だ。 業務系で使われたいならシンタックスを増やすなって話だが、どうやら後者らしいので、c#はキティ用言語といえる。
205 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 18:38:47.74 ID:ByE41wZl.net] >>195 lock不要に一票。 追加削除ないなら配列じゃダメなの。
206 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 18:53:44.75 ID:ByE41wZl.net] C#はちゃちゃとプログラムにも業務にも使える優れもの。 シンタックス変えてない。拡張だろ。 LInqなんか追加されてホント便利になってる。
207 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 19:22:21.24 ID:FbflVc2K.net] >>180 めっちゃ読みづらい。 いやスペースがないせいだけどw
208 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 20:01
] [ここ壊れてます]
209 名前::05.66 ID:lRvoFyV9.net mailto: >>195 不要 もし後で変更する可能性があるならReaderWriterLockSlim使っとけばいい [] [ここ壊れてます]
210 名前:デフォルトの名無しさん [2017/02/25(土) 20:48:05.07 ID:kVUREvkV.net] >>199 ,202 ありがとう。 foreachによって実は内部的な変化が行われていたらまずいのではと 考えていました。
211 名前:デフォルトの名無しさん mailto:sage [2017/02/25(土) 20:49:00.75 ID:IvVV1H8V.net] >>195 AsReadOnly()とか使って使う側が変更しないことを保証しといたら? ImmutableList<T>を使うともっと堅い
212 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 03:14:38.88 ID:0YrJqBhk.net] ID:N0RLU+6xはもっと要点をまとめて端的に書き込めよ・・・ お前の言う「ラムダの優位性(キリッ」をC#で言ってる人なんてそうそう見ないぞ 変にプログラミング言語一般のラムダについて述べるせいで論点がブレブレだ
213 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 04:03:21.89 ID:0YrJqBhk.net] 日本語が苦手なのかもしれないが、「文法的な意味で関数とラムダを区別してない」とか「関数=ラムダ=階層=クラス」とかはよくないでしょ 初心者にjavascriptの関数が全てラムダみたいな誤解を与えかねない >Rubyが匿名関数(ラムダ)を匿名クラスで表現するのもこのため。 Rubyの匿名関数(無名関数の方が一般的な呼び名だけど)は匿名クラス(無名クラスの方が一般的だけど)じゃなくて「Procオブジェクト」
214 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 10:41:00.28 ID:/Q8k6Dmd.net] C#のラムダ式は、どっちかというと式木が目的で導入されたんじゃないの? てか、いい加減スレ違いでしょ、この話題。
215 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 11:19:59.83 ID:TMS4+8Av.net] >>207 式木はdynamicと関係あるだろ ラムダ式はLINQのメソッド形式では必須
216 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 11:26:13.98 ID:a7NPBA4e.net] いやメソッド形式では(事実上はラムダ式必須であっても)匿名メソッドでも代用はできる 式木は意味的に匿名メソッドが式にならないからラムダ式が必須だよ 匿名メソッドで式にできるように言語拡張しても良いけどそれってラムダ式そのものだし
217 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 11:33:24.17 ID:asTjjGDY.net] どうでも良いがJavaScriptのfunctionとアロー関数は 等価じゃないぞ。 乱用してバグこしらえるパターンだな。
218 名前:デフォルトの名無しさん [2017/02/26(日) 11:36:25.80 ID:H7bo/69j.net] >>210 functionだとself定義しないといけなくて面倒だけどアローは楽だよな
219 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 11:36:30.05 ID:Q2GAsSXo.net] 式木の説明読んでみたが、言ってることが関数型()の連中と全く同じでワロタ
220 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 11:44:07.89 ID:LLZCcrhN.net] >>208 式木はもともとdynamicとは全く関係ないよ DLRプロジェクトで動的コンパイル用のASTが作られたが、System.Linq.Expressionsと被ってるということでそれを拡張する形で統合された 結局DLRは頓挫してコアの部分だけがCLRに導入され、そこに乗っかって実装されたのがdynamic
221 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 11:49:23.90 ID:0YrJqBhk.net] >>212 (多少関連のある使い方ができるかもしれんが、)全然違うだろ どこを読んだらそんな変な読み取りができるんだ?
222 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 11:59:43.17 ID:LLZCcrhN.net] >>212 式木やdynamicのあたりは今時のミーハーな関数型()とはだいぶ色が違うと思う LispのマクロとかMOPとかの影響を受けた、かなりガチなマニアックな設計思想の
223 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 12:33:17.61 ID:Q2GAsSXo.net] >>215 てか式木っていったい何がやりたかったの? 超高速Evalか?
224 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 12:57:05.99 ID:LLZCcrhN.net] >>216 式木の目的は、C#で書かれた式を独自に解釈して処理すること 例えばラムダ式を変換してExcelの数式を生成したりできる 文字列を使うのに比べて解釈が楽、型や構文の静的チェックが可能、インテリセンスが効くといった利点がある
225 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 13:49:21.90 ID:Q2GAsSXo.net] >>217 おそらくLISP信者も同様にそのポテンシャルに魅了されているのだと思うのだが、 具体的に何に活用できるのだ? 何にでも使えそうだが、いざ何に使えば「他では達成できないほど」の結果を引き出せるのか分からない。 > 例えばラムダ式を変換してExcelの数式を生成したりできる なるほど素晴らしい。しかしExcelシートを別に用意した方が楽だし、 通常の数式ならC#側で「テキスト」として出力するのも難しくは無い。 (もちろん出力パーサの再開発になるから、MS謹製自動変換のほうが楽だが、その程度) > インテリセンスが効くといった利点がある これは利点ではあるが、主な目的のうち大半は「手打ち」ではないだろうから、この際あまり関係ない。 > 文字列を使うのに比べて解釈が楽、型や構文の静的チェックが可能 これを「ユーザ側」の利点とするなら、ユーザー側でのパーサ生成、 つまりメタメタプログラミングを想定していることになるが、そうなのか? 結果的にLISPで成功したプロジェクトといえるのはemacsのみだ。 対してCはほぼ全てのPC世界を再構築しているに近い。 理由付けはいろいろ出来るだろうが、結果的に誰もLISPを選ばなかったということではある。 他でもっと簡単に目的を達成できる方法があるのなら、誰もより複雑な方式での解決なんてしない。 結果的に、何でも出来るLISPは誰にも使われなかった。式木の雰囲気も見た目これに近い。 ExcelはExcelで、C#はC#で、で誰も文句は無い。 (その分簡単になっていて、Excelは非プログラマでも十分使える) そこを統合するのは学術的には意味があるが、現実的には意味が無い。 HaskellやPrologみたいにアカデミック向けなら分かるが、C#はそうではないし。
226 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 14:12:54.65 ID:AZYnfb42.net] メタプログラミングで便利 以上
227 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 14:23:30.18 ID:Q2GAsSXo.net] しかし現実的には、通常のプログラミング:メタプログラミング=100:1、位の分量しかないだろ。 どうでもいい箇所の高速化をやってる馬鹿と同じ。そこにこだわっても効果ないよ。
228 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 14:36:14.18 ID:0YrJqBhk.net] >>220 リフレクションの代わりにして高速化するとかの目的で結構使われてる アプリケーションで使うよりもライブラリの内部とかで使うことが多い
229 名前:デフォルトの名無しさん [2017/02/26(日) 14:37:28.54 ID:bMNV8RU5.net] 一度時代から消えたような無用な機能を言語オタクが復活させてみんな迷惑してるいう状況。
230 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 14:38:28.84 ID:BapL/ZVi.net] 他言語からの移植が楽 可読性悪くなるから使うことはないな
231 名前:デフォルトの名無しさん [2017/02/26(日) 15:03:16.38 ID:bMNV8RU5.net] はるか昔、C++ vs Objective-Cの戦いで瞬殺されたObjective-Cを コード書けないジョブスが引っ張り出してきて、みんなが迷惑してるレベル。 それがC#とヘジ。
232 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 16:19:53.46 ID:cWe1Zi+O.net] C++が勝ったのはCとの互換性で、ジョブズがObjective-Cを選んだのはC++が美しくなかったからだと思う。 しかし、O-CはAppleだけだから、やらされる身からすると迷惑なんだろう。
233 名前:デフォルトの名無しさん [2017/02/26(日) 16:33:51.40 ID:bMNV8RU5.net] はるか昔、BASIC vs Pascalの戦いで、激戦の末、BASICが市場を制した。 にも関わらず、BSDにOSX、iOSなどと名前詐欺するように、PascalにDelphiなどとかっこいい名前をつけて売り出した男がいる。 ヘジである。 とある事業でMSの独占だと将来に保守するリスクが高まるのでDelphiを採用した開発があった。 Delphiは一瞬市場で人気は出たもののすぐに消えた。あのとき大量に作られたコードは今も保守されてるんだろうか。 市場から一度消えた古い技術を引っ張り出す輩はほんと迷惑である。
234 名前: ◆QZaw55cn4c mailto:sage [2017/02/26(日) 17:17:53.27 ID:1LlUyF33.net] pascal はいい言語だよ,LL(1) なんて美しいじゃないか
235 名前:デフォルトの名無しさん mailto:sage [2017/02/26(日) 17:26:34.35 ID:cWe1Zi+O.net] アルゴリズム+データ構造=Pascal これが私の原点だ。 でも、生活の為に、いまだCやってる。 ヘッダファイルが面倒、C#はヘッダファイルなくていいね。
236 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 08:50:13.59 ID:DR1RgDtx.net] 式木は実行時コンパイルできるという利点もあるよ 実行時コンパイルはシリアライザの高速化に使用されている
237 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 12:29:20.61 ID:4XW6lmAf.net] ラムダ式使ってたけど、>>104 みたいな理由で自分以外保守できなくなったから.NET2.0時代の表記に戻したな いくら便利でも周りが使う気無いなら意味ねえわ・・・
238 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 13:39:39.07 ID:v0Y8eGO4.net] 技術者の1割しか理解してないものを仕事で使用できるわけがない。 C#とVBでVBが選ばれるのも仕方がない。仮にC#なんか選んでしまうと一部の技術者に負担がすべていく。 するとC#にしろ、ラムダ、LINQOKにしろ、WPFにしろと言ってた輩が無責任に最初に転職していく。 残された奴らじゃとても保守は無理。
239 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 13:47:01.73 ID:BO1ZZ84r.net] 便利だから楽だからって言い張るから導入した途端 その人が辞めていく法則
240 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 17:10:34.62 ID:ToRYKJiY.net] そういうのはマ板でやってくれ
241 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 18:55:42.34 ID:bS39cZCs.net] 業務では言われたことを適当にこなして定時で帰れば良い お家に帰ってからが楽しいプログラミングの時間だ 誰にも足を引っ張られないで好きなことをできる 悲しいね
242 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 19:12:51.30 ID:bir6oLGv.net] >>230-232 俺はそれでいいと思うけどね。 結果的に「従来記法しかしない会社」と「意識高い記法をする会社」で市場で勝敗つければいい。 本当に「生産性が高い」のなら相手を容易に駆逐できるはず。 出来ないのならその程度だってこと。 まだらになっている方が生産性が悪い。分離して競わせるのが正しい。 多分、ラムダ、LINQ、WPFには相手を駆逐できるほどのインパクトは無い。 対してメモリ保護、GCはかなり劇的に楽になるのでCはシェアを落としつつある。 ちなみに俺はHTMLはフォーム/WPFを駆逐できると思う。
243 名前:デフォルトの名無しさん [2017/02/27(月) 19:15:16.04 ID:Ftr1v2iE.net] ラムダとリスト操作系関数は少し慣れればかなり便利 WPFは、WEBフレームワークに似てるからそっち系の人は良いのでは
244 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 19:17:31.38 ID:Ehytdfgf.net] >>235 ごちゃ混ぜで語りすぎてる。 ラムダ、LINQなんてちょっと学習するだけやん。 請負、派遣業界に無理なのは分かるがw
245 名前:デフォルトの名無しさん [2017/02/27(月) 19:47:36.34 ID:RCbBwD75.net] 書籍代は幾ら有っても足んね〜 みんなは、どうしてる? 図書館は、全くと言って良いほどロクな書籍が無い 後はグーグル書籍で、漁る位だし……。
246 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 19:55:43.62 ID:GaZbolX8.net] APRESSから買っている
247 名前:デフォルトの名無しさん [2017/02/27(月) 20:15:06.48 ID:RCbBwD75.net] ほむ
248 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 20:17:13.08 ID:zuqOpmfm.net] >>238 MSDNのリファレンスを全部プリントアウトしたほうが安いんじゃね?
249 名前:デフォルトの名無しさん [2017/02/27(月) 20:46:05.22 ID:RCbBwD75.net] >>241 その発想は無かった 因みに get setの使い道が微妙なんだけど、 具体的な使用例とか、教えてくれ><
250 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 20:55:40.51 ID:SheqW2pp.net] >>242 カ
251 名前:プセル化 [] [ここ壊れてます]
252 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 21:04:36.29 ID:bir6oLGv.net] >>236 WPFざっくり見てみたが、HTML/CSS/JavaScriptの再開発でしかない。 時期的な問題もあったのだろうが、 ここまで似せるなら最初からHTML/CSS採用しろよ、とWEB系からは見えるだろう。 WEB系の連中を引っ張り込みたいのなら、今からでも全面採用して、 HTML/CSS/C#出来るようにするべきだろう。 見た目、WEB系はC#よりも新技術の使い捨てが酷くて、余裕が無い。 彼らにとってWPFは簡単だが、学ぶのが面倒であり、その価値もないから、 Electron(HTML/CSS/JavaScript)でデスクトップアプリを作る方を選択するだろう。 面倒だから学ばない、というのはラムダもLINQも同じ。 元々無くても出来るのだから、それで苦労してない人には同期付けが無い。 その辺がメモリ保護/GCと根本的に異なる。
253 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 21:14:29.75 ID:Ehytdfgf.net] >>244 相変わらず馬鹿だな。
254 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 21:19:28.45 ID:QfkRDmsT.net] ざっくりじゃなくて、もう少しちゃんと使って理解してから評価しなよ。
255 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 21:22:26.99 ID:aCjjvIHm.net] 15年ぐらい前htmlviewでui作るの流行ったな。もうすっかり見かけなくなったがw
256 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 21:34:20.63 ID:sVGz7y9C.net] html5ならUWPにあるから良かったじゃん
257 名前:デフォルトの名無しさん [2017/02/27(月) 21:39:40.07 ID:Ftr1v2iE.net] >>244 Electronは遅すぎる
258 名前:130 mailto:sage [2017/02/27(月) 22:16:01.34 ID:8x434lFb.net] >ここまで似せるなら最初からHTML/CSS採用しろよ、とWEB系からは見えるだろう。 >WEB系の連中を引っ張り込みたいのなら、今からでも全面採用して、 >HTML/CSS/C#出来るようにするべきだろう。 ASP.NET MVCってまさにこれ?
259 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 22:49:12.00 ID:bir6oLGv.net] >>248 > UWP 名前しか聞いた事無かったけど、これは良いね。 HTML/JavaScriptならElectronと同じコンセプトが可能か? HTML/C++で使いたいんだが、この組み合わせは無理なのか、、、
260 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 23:22:57.99 ID:ENJIvJC4.net] 妄想だけでよく書くなほんと
261 名前:デフォルトの名無しさん mailto:sage [2017/02/27(月) 23:40:54.02 ID:o2MHRqlI.net] >>238 最近の本は安くなってるよ。 一番高かったのは2000年当時、Windows関連書籍で一冊1万越えもあった。 平均7、8千円かな、5千円だと安いと感じた。 本代はケチらずばんばん買ってる。 飯の種だし、1日悩んでたら人件費何万になる? 本買って解決すれば安上がり。
262 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 00:00:06.65 ID:8+bIkryZ.net] >>251 WPF → UWP という進化だよw
263 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 00:13:12.42 ID:3lr7jZCG.net] 一応最終的には全ての組み合わせが出来ることを目指してるんだろ? 看板付け替えただけ、という見方かもしれんが、俺は進化でいいと思うぞ。
264 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 00:17:57.53 ID:C4A7F+ay.net] >>251 MFCでだいぶ前からhtml/c++はできるじゃん。
265 名前:デフォルトの名無しさん [2017/02/28(火) 19:37:38.52 ID:yxAUZLha.net] テキストファイル中の、特定の行だけを読み込むにはどうしたらいいでしょうか? 読みたい行が何行目かは決まってるんですが、 1.1行目からその行までに含まれる文字数 2.読みたい行からファイルの末尾までの行数 は不定です。 FileStream.Seekの、バイト数ではなく行数指定出来るものがあればいいんですが。
266 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 19:42:51.05 ID:9Xdv30xY.net] >>257 ループ回して対象行のカウントでホゲホゲすれば?
267 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 19:44:38.27 ID:yxAUZLha.net] >>258 ありがとうございます。 うまくできました。 StreamReader reader = new StreamReader(file,Encoding.Default); for(int i = 0; i < 10; i++) { reader.ReadLine(); }
268 名前:this.listBox1.Items.Add(reader.ReadLine()); [] [ここ壊れてます]
269 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 20:23:35.47 ID:K7hLR7oh.net] >>259 実践で使えないコード過ぎてイラっときた 気分で改行したら終わりって
270 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 20:29:23.68 ID:+WocOs48.net] >>260 読みたい行が何行目かは決まってるのに気分で改行したがるその仕様無視にイラっときた
271 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 20:35:19.50 ID:K7hLR7oh.net] 本当はキーワードがありそうじゃん n行目ってのはあくまで質問者が宿題を読んだ感想文なわけで
272 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 20:37:44.89 ID:Fq1JMnLG.net] >>262 エスパーさんはいらないから 汎用性のないコードだってのならともかく「本来はこんな問題のはず」とか議論しても何もならん
273 名前:デフォルトの名無しさん [2017/02/28(火) 21:08:18.23 ID:pIiGTdLD.net] >>260 どこが実践で使えないんだ(笑)
274 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 21:15:58.55 ID:wrouDyFM.net] とんちき臭がする
275 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 21:19:57.27 ID:BFmlECVl.net] ClosedXMLを使って、2行分のデータとスタイル(罫線等)を、任意の2行へコピーしようとしています。 CopyToを使って動かしてみると、マージされているセルなどが思った通りにはコピーされないようです。 worksheet.Range(rowno + 2 + ":" + rowno + 3).CopyTo(worksheet.Range(rowno + 4 + ":" + rowno + 5)); お助けください
276 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 21:34:46.83 ID:A2md68KB.net] 2 + ":" こういうの気持ち悪い
277 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 21:59:17.96 ID:39alJvfi.net] >>259 StreamReaderをCloseしようね 内部的には同じだけどFile.ReadLines()を使ってElementAt()とかで目的の行が取れるよ
278 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 22:08:38.41 ID:s47hQ+GZ.net] >>264 じゃ、お前んとこってテキストファイルの行数でデータ定義するの?
279 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 22:11:57.45 ID:39alJvfi.net] ログファイルの1行目と2行目はヘッダーだからみたいな定義は十分ありえるだろ
280 名前:デフォルトの名無しさん [2017/02/28(火) 22:14:30.88 ID:pIiGTdLD.net] >>269 普通にID管理だけど、チートやバグが発生した場合に行数管理で正常か どうか判断する局面も有るけど?
281 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 22:24:32.74 ID:+WocOs48.net] >>269 測定データ1分1行で定義されてて、1日置き=1440行ごと読み出しとか、行数でのデータ取扱なんてざらだよ
282 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 23:03:34.74 ID:s47hQ+GZ.net] >>272 面倒でも日時入れるわ データがないとき(?)って空白出すの? 超面倒じゃん データがないって判定もヤバそう
283 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 23:10:22.11 ID:AHF/JWRt.net] >>268 ReadLinesは全部メモリに読むから、ファイルがでかい可能性があるなら避けたほうがよいかも
284 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 23:12:03.23 ID:z/77EZzb.net] メインフレームのシーケンシャルファイル(固定長レコードのバイナリファイル)ですら件数で判断なんかやらねえわ 運用が面倒臭すぎる
285 名前:デフォルトの名無しさん mailto:sage [2017/02/28(火) 23:25:18.45 ID:39alJvfi.net] >>274 読まないよ 全部読むのはReadAllLines
286 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 01:43:58.56 ID:jez9uqUV.net] 自分もテキストでハマってるわ。 テキスト読み出しながら、登録したキーワードに引っかかったらreplaceする必要があるんだけど、(足りない脳味噌の範囲で)どうやってもクッソ遅い。
287 名前:キーワードと置換後文字はDictionaryで管理してるけど、そもそもキーワードが8200程ある上に、テキストも1ファイルあたり平均約2.7万文字あってもう無理(テキストファイルは1日あたり1600ほど生産されてる) 速度は諦めるしかない? [] [ここ壊れてます]
288 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 01:54:31.83 ID:XgpeB6sR.net] >>276 すまん、そうだった
289 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 04:22:26.99 ID:uGJVx5D1.net] >>277 どのくらいで遅いって言ってるのか次第じゃない? キーワードにマッチする単位で単語分割できてれば入力の単語単位で辞書にぶつけるのが効率よさそう ただ3万文字程度ならキーワードの数だけ入力を走査しても言うほど時間かからない気がする
290 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 07:58:17.12 ID:ElQ6OcG3.net] >>277 キーワードを予め文字単位でツリー化しておいて辿っていけば? 1文字読むたびに最大でもキーワードの最大文字数と同じ数だけのツリーのポインタを1歩進めるだけで済む
291 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 08:04:58.33 ID:SJrJxNnQ.net] >>268 > StreamReaderをCloseしようね そこは using だろ
292 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 08:26:19.47 ID:mkeal5qn.net] トライ木か
293 名前:デフォルトの名無しさん [2017/03/01(水) 14:31:13.79 ID:UzmiTiRe.net] System.Net.CookieのDomainについてですが、RFC 6265の4.1.2.3が実現できないように思えます Domainのスコープを設定するにはどうすればいいでしょうか?
294 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 15:36:27.74 ID:yuocqMDO.net] キーワード「ねこ・こねこ」があるとき、「こねこ」はどちらに該当する? また、キーワード「こね・ねこ」があるとき、どちらに該当する?
295 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 17:28:21.57 ID:9PjUMtQQ.net] 初心者質問すみません フォームにボタンAとボタンBの二つのボタンがあります ボタンAをクリックすると、ある反復処理が延々と繰り返されます ボタンBをクリックしてこの反復処理をストップさせるには通常どのような記述をするのでしょうか
296 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 17:33:43.62 ID:kRYqKFSr.net] >>285 反復処理の中に条件付き中断処理を入れる もう一つのボタンを押したときに中断処理用のフラグをセットする もちろん別スレッドじゃないとボタン押せないけど
297 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 17:36:44.01 ID:kRYqKFSr.net] 連レスごめん 反復処理中にApplication.DoEvents入れてもボタンの入力受けるけど 反応悪くなるし、今時はまず使わないだろうな
298 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 19:13:43.54 ID:1ptPBH8r.net] >>285 CancellationTokenSource cancellationTokenSource; async buttonA_Click() { this.cancellationTokenSource = new CancellationTokenSource(); while ( this.cancellationTokenSource.Token.IsCancellationRequested ) { await Task.Run( () => { // 何か }, this.cancellationTokenSource.Token ); } } private void buttonB_Click() { this.cancellationTokenSource.Cancel(); }
299 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 19:21:54.77 ID:z3LIBqaM.net] >>279 に一票。
300 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 19:31:02.44 ID:CFmNTLsk.net] >>277 ソース上げたら誰かみてくれるよ
301 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 19:53:57.57 ID:SJrJxNnQ.net] 正規表現に 8,200個も連結して検索させたら死ぬかな?
302 名前:デフォルトの名無しさん [2017/03/01(水) 20:31:55.65 ID:r70GDLNP.net] >>291 not Defined
303 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 21:37:40.58 ID:PGtJZLdC.net] C#から2chに書き込みたいんだけど、 「At2chLib」が使用できなくなってて困っています。 なにか良いライブラリとか有りますか?
304 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 21:39:56.43 ID:PR7YLHWZ.net] HttpClient
305 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 21:46:15.04 ID:RAuT14LS.net] 荒らしツールは日本では違法だぞ。
306 名前:デフォルトの名無しさん [2017/03/01(水) 22:01:49.72 ID:r70GDLNP.net] いやぁ……海外でもダメだろ
307 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 22:08:23.90 ID:PGtJZLdC.net] 荒らしじゃなく、荒らし駆除的なの作りたいんだけどなー
308 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 22:31:30.38 ID:78O8EuSm.net] 荒らしに構う奴も荒らしだぞ
309 名前:デフォルトの名無しさん [2017/03/01(水) 22:38:28.52 ID:fB20izlq.net] >>295 違法だったら良いのにな… もし違法だったらVIPで埋めまくってる奴逮捕されていなくなるはずなのにな… はぁ…
310 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 23:00:18.14 ID:U2Od4VRx.net] VIPなんぞ行かなくてよろしい
311 名前:デフォルトの名無しさん [2017/03/01(水) 23:13:49.83 ID:fB20izlq.net] ゲ雑…
312 名前:デフォルトの名無しさん mailto:sage [2017/03/01(水) 23:57:19.29 ID:6tJnN0su.net] >>287 1処理1個挟むんじゃなくて100処理か1000処理に1回ぐらいでお願いします
313 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 00:33:44.50 ID:IBdXO0OO.net] >>277 どこが遅いか分析が足りてないな キーワードにヒットしたら番地とヒットしたキーワード格納して置換はしないでみたら? 置換って頭使わないと最悪な方法で処理してくれてる気がする abcを見つけたらdefghijkに変換してくれる処理って c言語だったら変換後の配列のサイズの計算からしなきゃいけないわけで それをc#ってreplaceしやがったら配列の再確保余裕でしたみたいなことするアホだろ その辺は考慮に入ってる?
314 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 00:54:02.49 ID:FuaoIGJx.net] やっとらおまえらも実装してはじめてMSのWordが糞遅い理由を理解してくれたか。
315 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 00:54:51.19 ID:IBdXO0OO.net] ならば文字列をつなげていくかとして str1 + str2 みたいなことするとこれも合体後の文字列の長さで配列を再確保する 3万文字もある文字列だと1回文字列連結をするだけでヤバイ 変換に使用するキーワードの使用回数から最終的な文字列の長さを算出する必要があるかも ってそれも考慮済みだろうか?
316 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 00:58:24.20 ID:FuaoIGJx.net] string使ってるという馬鹿なオチかよ。これだからC言語できない奴は。
317 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 01:07:45.83 ID:B13E3oAw.net] アルゴリズムの問題。stringだろうと*だろうと同じだろ。これだから自称C使いは・・・
318 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 01:09:29.82 ID:FuaoIGJx.net] アホに世界常識を教えてやる。 stringは糞遅い。 だからMSは最初から別のクラスを用意してる。ググレカスども。
319 名前:デフォルトの名無しさん [2017/03/02(木) 01:14:29.76 ID:oXaAut0o.net] ボディービルダーになれば良いらしいのか
320 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 01:18:09.17 ID:iFkNWUjs.net] 興味があるならどうぞ StringBuilderのReplace https://referencesource.microsoft.com/#mscorlib/system/text/stringbuilder.cs,1485 https://referencesource.microsoft.com/#mscorlib/system/text/stringbuilder.cs,1535
321 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 01:20:26.39 ID:iFkNWUjs.net] >>308 Replaceのパフォーマンスはそんな変わらないよ ググレカス
322 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 01:22:58.33 ID:o9lMs6ta.net] ここはWinFormsだし、10年前のインターネッツだな。
323 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 01:23:22.99 ID:FuaoIGJx.net] おれがコード書けば瞬殺レベルの高速化できる案件。 最後のヒントな。 大山札
324 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 02:04:51.98 ID:ggH8M0CB.net] >>313 もしかしてあらかじめ領域を準備して,自分で足していく,とか‥
325 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 02:30:07.47 ID:4HioNM+3.net] >>299 違法と犯罪は違うぞ
326 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 02:41:55.30 ID:iFkNWUjs.net] >>313 >>280
327 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 06:45:07.41 ID:JZiPjSZc.net] 言語だのStringBuilderだのという小手先のテクニックの問題ではないだろ >>280 のアルゴリズムで実装したら100倍とかのオーダーで速くなるはず
328 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 07:40:36.76 ID:WqhQkxL/.net] 口だけならなんとでも言え
329 名前:る 実装して計測してコードと計測結果を晒してから主張して [] [ここ壊れてます]
330 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 07:52:06.73 ID:Ct6l/xwh.net] >>317 280は検索で遅いとき 置換で遅いときはstringbuilderをキッチリサイズ指定する方法でやらないとダメ まず切り分けかな?
331 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 08:49:47.79 ID:oX3M/pPf.net] 検索が8,200あるのに、マッチするのはそのうち1つ有るかどうかなんだから 圧倒的に検索の問題になるだろうね 普通は
332 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 09:05:00.59 ID:Ct6l/xwh.net] >>320 いや3万文字を置換のたびに1回1回stringのreplaceしてたらその度に3万文字分の配列を再確保 これが致命的 stringのreplaceはやってはならない stringbuilderで これも使い方悪いと速度出ないので正しい感じで
333 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 09:06:59.45 ID:Ct6l/xwh.net] キーワードの検索の方はdictionary使ってるって言うし十分早いんじゃないかと予想
334 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 09:07:18.82 ID:cjA1b3op.net] ツリーポインタに文字列中の開始インデックスをセットで持たせておいて、 終端ノードまで来たら開始インデックスから後を削除し、終端ノードに持たせてある置換文字列を付加し、現在のツリーポインタを全て破棄 こうすれば280で置換も効率的にやれるよ
335 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 09:17:20.56 ID:cjA1b3op.net] >>321 それ文字列が長ければreplaceのための線形探索がネックになるはずで、StringBuilderは直接関係ないでしょ 簡単に効率を改善するんなら、全キーワードのうち最長のキーワードの文字数と同じサイズのバッファを持っといて そこに対して置換をかけりゃいい もちろんその置換結果を最終出力の文字列として連結していくところはStringBuilderを使うべきだけど
336 名前:デフォルトの名無しさん [2017/03/02(木) 10:02:53.43 ID:xcfTeAxl.net] 問題は用途が不明だから、仕様が決まらない に限定されると思ふ ノ ヽ(・ω・)/ズコー
337 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 12:13:19.52 ID:63yIksCz.net] いいからコード書いて結果出そうぜ
338 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 13:30:45.83 ID:NvG2Ox0H.net] ある程度の個数だとキーワードを全部つなげた正規表現を作るのが定石っぽいけど、 一万近いとどうなんだろうか
339 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 13:39:24.58 ID:Ct6l/xwh.net] >>324 置換後に短くなっても駄目っぽいけどね
340 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 13:42:21.47 ID:j0RdOmJS.net] 8200のうちマッチが1つあるかどうかなのか、マッチがたくさんあるのか で方法変えた方がいいな
341 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 16:45:48.51 ID:yzi1qiN6.net] >>277 そんな変な処理をしなければいいだろ。 解決!
342 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 19:36:05.41 ID:tOCPWbBv.net] こういうアルゴリズムのボトルネックってどうやって探すんだ?
343 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 19:43:30.86 ID:j0RdOmJS.net] アルゴリズムのというか、処理のボトルネックはパフォーマンスプロファイルで出る
344 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 19:47:35.64 ID:eNjjKtZ0.net] 味見すりゃ分かるだろ。 それ以前にベタにやっても余裕だと思うが。
345 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 19:54:31.82 ID:Ct6l/xwh.net] >>331 プロファイラ使えるようになるのが一番いいね ただ、それじゃわかりにくいときもあるから知恵をつけるのも大事だと思う
346 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 20:14:46.47 ID:eNjjKtZ0.net] ちなみに今回のはプロファイラでは分からんぞ。 例えば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内の動作を考える必要がある。
347 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 20:23:23.74 ID:j0RdOmJS.net] >>335 それはプロファイラの考え方を間違ってる(使ってないみたいだから知らないのは当然かもしれんが) replaceがネックって出れば
348 名前:サれでいいんだよ [] [ここ壊れてます]
349 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 20:34:59.52 ID:Ct6l/xwh.net] >>336 そうだね さらにgoogleで replace 遅い c# なんてキーワードで検索かければもう解決方法も見つかったようなもんだね
350 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 20:42:38.33 ID:eNjjKtZ0.net] >>336 いや俺は他言語(JavaScript)ではプロファイラ使いまくりだぞ。 そしてプロファイラ自体は見た目ほぼ同じだし。当たり前だが。 というか今回は20行程度のプログラムで2重ループするだけだろ。 ベタでやった場合、String.Replaceが出るに決まってるだろ。 お前はアホの子か? 問題はそれをどう変えたらどう改善されるかの見通しを立てることだろ。 それはここでみんながやってるように、自分で考えないと分からない。 とはいえここで案を出してもらってるんだし、後はがんばれでしかないが。
351 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 20:44:03.61 ID:maE+uJIv.net] >>338 馬鹿は一生js書いてろ くせえから出歩くなクソが
352 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 20:49:46.45 ID:rlmCwDYA.net] javascriptのプロファイリングは大切だからねえ 品質の悪いライブラリと品質の悪い人材によって書かれているから すぐsucks so muchになるんだ
353 名前:デフォルトの名無しさん mailto:sage [2017/03/02(木) 21:44:03.77 ID:eNjjKtZ0.net] >>340 いやJavaScriptはJITがエグイからでしょ。(同じ傾向はC#にもあるはずだが) 例えばHTMLの特殊文字を変更する場合、string.replace(Regex,func)で纏めるよりも、 数個なら string.replace().replace().replace() とかハードコードした方が速かったりする。 ボトルネックがソースから予測しづらいからプロファイラを使うしかない。 その点、Cは最初から見えた状態で書くからいい。 ただこのあっさり感、C#ならString, StringBuilder, Regexで試して、 それ以上は諦める文化なのかもしれんね。そういう用途の言語ではあるし。 C的アプローチで限界速度を追求するのではなくてね。
354 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 07:07:46.01 ID:GM13pkfI.net] やっぱここで質問したのが間違いでした ろくな解決策が出ないので もう結構です
355 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 07:16:35.43 ID:cZXazyZL.net] なあ、、、 文字列探索アルゴリズムの問題だと思うのは俺だけかな? そこを自前で実装すれば高速化できると思うのだけど
356 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 07:22:10.27 ID:4qcBtzlj.net] >>343 それは>>280 で出てる
357 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 07:22:40.42 ID:cZXazyZL.net] developer.hatenastaff.com/entry/2016/12/22/210006 置き換え後、どこに格納するかはたいして重要じゃないはず。 状況に応じた探索アルゴリズムを使用することが重要。 自前実装は辛いけど。
358 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 07:31:45.18 ID:ELiKOyhw.net] 誰か>>280 を実装してみてよ
359 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 07:34:13.74 ID:4qcBtzlj.net] >>345 その「状況」は単純に探索をどうするかだけではないよ 置換処理に適したアルゴリズムを使用することが重要 その意味ではトライ木を使った方法(280)はリアルタイムで読んだそばから置換できるから目的に合ってる
360 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 07:50:58.21 ID:pVtcQ1mY.net] そもそも何が目的なのか説明しろよ
361 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 07:54:40.78 ID:a7lwSDS4.net] アフィ目的って気づけよバカども
362 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 07:56:17.33 ID:pVtcQ1mY.net] アフィって何よ?
363 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 08:06:18.44 ID:hxiWJWmX.net] >>347 検索された文字列から変換後の文字列を求める手間の話? 8,200個くらいならたいしたことないと思う
364 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 08:19:11.00 ID:ELiKOyhw.net] 誰も実装できないの?
365 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 08:30:26.60 ID:LqKyLlg1.net] >>352 できるのわかってるし 正直、対象の文字列に対してdictionaryでまとめてある群からヒットさせるならそこまで変わらないと俺は思ってるので興味ない さらに話題提供者は明確な仕様を出したわけではないので現状では「組めない」が正解 さらにこの問題は対象のデータの持ち方で解決する方法もあって多くの場合そっちのほうが楽なので あまりこのスレで出たような解決方法を適用することは無いかも
366 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 08:56:05.96 ID:LqKyLlg1.net] 例えば対象の文字列がソースコードのように人間の目視できる文字数で改行が必ず入り、 キーワードが改行を含まないのであれば 行ごとにreplace処理して文字列の統合だけstringbuilderを使えばこれだけで十分な速度が出ると思われる (1行300文字程度と想定) とかね 僕のカコイイスペシャルエディタでも作らない限りはフォーマット自体に特有の癖があるもんで 大抵の場合は独自の解決方法を考えたほうが早い
367 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 09:35:42.12 ID:velk9AIH.net] テキスト読み出しながらって書いてあるからすでに行単位でやってると思うが
368 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 13:45:46.60 ID:hf3TFoOq.net] >>346 UNIXのShellのコマンド解析の実装がそんな感じ。 ただしスイッチ文の嵐だが(一文字目がCならCPを検査とか・・・
369 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 15:59:24.43 ID:GTe30Tvn.net] あーアフィかぁ 超納得 1ファイルの文字数がやたら少ないし何の目的か全くわからんかった >>346 ,352がアフィ本人だね
370 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 16:00:23.77 ID:GTe30Tvn.net] 間違えた >>342 ,346,352がアフィ本人
371 名前:デフォルトの名無しさん [2017/03/03(金) 16:00:55.70 ID:oAXP4RlZ.net] >>352 アホの子なの?
372 名前:デフォルトの名無しさん [2017/03/03(金) 16:02:40.13 ID:nP8cPyWm.net] IT速報かな?
373 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 16:54:07.87 ID:Loi48FLt.net] >>352 こう煽ると情報出て来ること多いからな。いい手w
374 名前:デフォルトの名無しさん [2017/03/03(金) 17:00:38.87 ID:nP8cPyWm.net] C#で自動コメント投稿スクリプト作ってIT速報荒らすンゴwwwwwwwwwwww
375 名前:デフォルトの名無しさん mailto:sage [2017/03/03(金) 19:35:06.90 ID:MASUg06L.net] まーたカニンガムの法則を証明してしまったのか
376 名前:デフォルトの名無しさん [2017/03/04(土) 00:57:57.14 ID:V1fO2YUM.net] >>352 馬鹿かこいつ。
377 名前:デフォルトの名無しさん mailto:sage [2017/03/06(月) 15:15:15.66 ID:c2C1QaOD.net] 俺に実装出来ないものなどない 実装しないだけだ(´・ω・`)
378 名前:デフォルトの名無しさん [2017/03/06(月) 16:53:48.94 ID:HdaZCaDT.net] うっせ!消えろ! (´・ω・`).Dispose();
379 名前:デフォルトの名無しさん [2017/03/06(月) 17:04:44.11 ID:gswSb9xJ.net] void Dispose(){ throw new GenjyuminException("お兄ちゃん僕を消さないで"); }
380 名前:デフォルトの名無しさん mailto:sage [2017/03/06(月) 18:04:17.43 ID:fLI2L2/v.net] while(true){ if((´・ω・`)==null)break; } これでどや、消えるまで永久に彷徨え
381 名前:デフォルトの名無しさん mailto:sage [2017/03/06(月) 18:06:58.06 ID:SM9wIIjZ.net] int (´・ω・`) = 0; こういうのエラーになっちゃうんだけど、ならないのあるかな
382 名前:デフォルトの名無しさん [2017/03/06(月) 18:10:04.79 ID:gswSb9xJ.net] >>369 とうふさんをすころう🙋
383 名前:デフォルトの名無しさん [2017/03/08(水) 07:21:50.44 ID:0djAud0F.net] ASP.NETでEntityFrameWorkを 使い始めてデータエンティティの設計を 意識するようになったのですが 論理ER図とクラス図がほとんど同じ ようなエンティティになるのは 良いのでしょうか? 使ってる言語がC#なだけで OOPの話になっているみたいで 恐縮ですが
384 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 07:57:43.96 ID:j5hWWAog.net] >>371 オブジェクト指向原理主義的に言うなら、最初にデータ
385 名前:設計ありきで作ったのが間違い DB構造はオブジェクトを抽出した上でその永続化層として結果的に導出されるもの その結果、テーブル構成がクラスと一対一になるのはおかしくはない [] [ここ壊れてます]
386 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 09:10:06.96 ID:4zQ1zZR+.net] >>371 >論理ER図とクラス図がほとんど同じ >ようなエンティティになるのは それをEFと言うんじゃないか? 殆ど同じじゃなく完全一致するんじゃないの?
387 名前:デフォルトの名無しさん [2017/03/08(水) 11:04:45.08 ID:WDLIW5bb.net] 処理文より定形文の方が多くなる問題 皆さんはどうやって解決してますか?
388 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 11:21:49.05 ID:j5hWWAog.net] >>374 メソッドやクラスを適切に使って使い回せばそんなことにはならない
389 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 12:38:38.92 ID:xVFA2xmi.net] >>375 適切とは?
390 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 12:46:41.42 ID:FTYppI6w.net] >>376 例えばこうしろってだけでしょ method(0); method(1); method(2); method(3);・・・method(x); ↓ for (int i =0; i <= x; i++) method(i); ただいくらそうしたって作るものによっては定形だらけになるからな。そんなの気にするなとしか言えん
391 名前:デフォルトの名無しさん [2017/03/08(水) 13:31:44.38 ID:WDLIW5bb.net] >>377 それに、クラスとリターン、ラベル貼るから一行より長くなるんです
392 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 14:05:18.27 ID:pm5pCz2z.net] >>373 EDM理解してる?
393 名前:デフォルトの名無しさん [2017/03/08(水) 14:35:54.93 ID:jFDZ8cwh.net] 絵が描けなくても無料・有料とわず素材なんて腐るほどいっぱいあるんだから リアルでカードゲームやボードゲーム作ってゲームマーケットで売ろう 個人利用、商用利用も可の198,381 個の無料ベクター画像 jp.freepik.com/popular-vectors オシャレ感をプラスできる手書きのアイコン50選 blog.nest-online.jp/27240 無料素材:ヴィンテージ感がおしゃれ!デザインソフトのツールアイコン49個セット switch-box.net/free-resources-vintage-design-icons.html 無料素材:魔法陣の文様が描けるユニークな英語フリーフォント「MagicRing」 switch-box.net/free-font-magic-ring.html ねくらファンタジーマップチップ素材集 piposozai.blog76.fc2.com/blog-entry-500.html ひぽやマップチップ piposozai.blog76.fc2.com/blog-entry-485.html クオリティの高いゲーム用のモンスター素材画像が手に入るフリー素材サイト5つ https://agency-star.com/freelance/articles/117/ ファンタジー世界地図を簡単に作れる「Inkarnate Worlds」をゲーム制作に活用しよう www.moguragames.com/entry/inkarnate-worlds-indiegame-dev/ QRコード・クトゥルフ神話・24世紀などユニークすぎるデザインてんこ盛りのサイコロ「Dice Empire」レビュー gigazine.net/news/20150313-dice-empire/ 駆け出し奮闘記「ゲームチップ・他小物類の作り方」 yuofc2.blog72.fc2.com/blog-entry-233.html
394 名前:デフォルトの名無しさん [2017/03/08(水) 16:48:47.00 ID:EwGirieA.net] c#初心者なんですが https://www.ibm.com/developerworks/jp/linux/library/l-mono/ >実際、作成された実行可能ファイルを別のシステム、おそらくWindowsが稼動しているシステムにコピーして、そこでそのまま
395 名前:実行することができます。 Linuxで動くexeファイルがwindowsでもそのまま動くのはなぜですか? 本来、実行可能形式に互換性はありませんよね? Javaだと.jarファイルでjavaが関連付けられてるからどこでも動作するというのは分かるんですが [] [ここ壊れてます]
396 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 17:05:53.57 ID:FTYppI6w.net] >>381 javascripはテキストファイルなのに実行できるってのと同じで、exeという拡張子だけど中身はスクリプトって考えりゃいい linux側は「mono example.exe」のように実行するのはexeでなくmonoでしょ
397 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 17:10:53.01 ID:CceDL3fb.net] >>381 Linuxはexeが実行ファイルという訳でもなし、mcsがPE互換でも吐いてるんじゃない? C#はそもそも中間言語にコンパイルされるし、.NET Framework(あるいは互換ランタイム)を通して 色々な操作を行うので、DllImportとか除けばコード部分はプラットフォーム依存にはならない、Javaと一緒
398 名前:デフォルトの名無しさん [2017/03/08(水) 17:41:17.11 ID:4q4g4kgy.net] >>373 やはりそう思いますよね 自分もデータエンティティと クラス図が一致してしまって アンチパターンしてないか 不安になったもので クラス図要らないじゃん てことになって良いのかなと
399 名前:デフォルトの名無しさん [2017/03/08(水) 17:56:23.47 ID:EwGirieA.net] >>382 わかりました linuxでもx window systemとかGUIシステムで 拡張子とプログラムの関連付けがあるみたいだけど .exeをmonoに関連付けるのは少し疑問です .jarみたいな固有拡張子じゃないので windowsだと関連付け関係無く実行可能形式として動くんだろうけど 他のOSでは特定のプログラムから起動しなければならないというのが 非対称的でクロスプラットフォーム感欠けてるような気がします
400 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 18:12:34.14 ID:ZazPDLJU.net] Windowsでもexeの中にあるMSILを 特定のプログラムでコンパイルしないと動かないぞ
401 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 18:13:37.64 ID:NpQQdkRq.net] >>385 クロスプラットフォームにこだわるのならC#使わない方がいいだろ >>383 に書いてあるようにDllImportとか入っていたらどうしようもないんだから
402 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 20:03:39.84 ID:VZtOnmtc.net] EF使いたいけど仕事での開発は腐りきったDBと手続き型の権力者が支配しててうまくいかないよ ビジネスロジックはほとんどSQLとストアドに書かれ ホスト言語はデータセットをUIとバインドするだけ マイクロソフトは業界の現実を見据えたフレームワークを提供してほしい
403 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 20:08:18.13 ID:jS0zQn/F.net] ジャップローカルな業界標準なんか基準にしても仕方ねーだろ
404 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 20:25:11.68 ID:q0ZuMA54.net] 今後は品質を上げるためにC#やめてJavaにするってさ 品質を上げるために 誰だよJavaオワコンとか言ってたの Javaつよすぎんだろ
405 名前:デフォルトの名無しさん [2017/03/08(水) 20:37:42.27 ID:WDLIW5bb.net] 新しく、C++,C#,Javaを超える言語の誕生を切に願う
406 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 20:43:44.50 ID:YCUi9zWw.net] >>390 実際Javaは周辺技術はすごい 世界中の叡智が結集して糞を料理し、なんとか食えるものにしてる
407 名前:デフォルトの名無しさん [2017/03/08(水) 20:50:23.47 ID:YUr8l1RF.net] Java人にとってWindowsは周辺ではなく僻地です。
408 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 21:09:03.23 ID:psTqZ+Sc.net] なんか中国人みたいだな
409 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 21:32:29.32 ID:U5noIHdN.net] javaはoracleの時点で将来どうなるか判らないって不安がつきまとう golangもgoogleだから不安がつきまとう swiftもappleだから
410 名前:粕N後の未来も予測出来ない でも不思議とc#とmsの場合はあんまそういう不安が無い [] [ここ壊れてます]
411 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 21:39:55.81 ID:Uljnsbub.net] >>388 >ビジネスロジックはほとんどSQLとストアドに書かれ 最適化のためにしかたなくストアド化することはあっても ビジネスロジックまるごととかあるんだね おいたわしゅう
412 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 21:49:14.72 ID:YUr8l1RF.net] Javaが糞遅いからC#じゃないのか。 Javaと同じ設計をしたいならJavaを使えばいい。
413 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 21:51:54.89 ID:MEKWLPl8.net] Windowsで趣味で遊ぶのにC#より楽な言語が無い
414 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 22:28:25.34 ID:gllfe4Ss.net] みんな仕方なくうんこなJava使ってるだけだから。 大人の事情。
415 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 23:15:48.59 ID:nWki5I6G.net] >>397 いやJavaが使われるような分野ならJava(やその周辺のライブラリ類)は糞速い クライアントじゃビチグソだが
416 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 23:21:37.62 ID:YUr8l1RF.net] 高速ライブラリはすべてC++とアセンブラで書かれてます。
417 名前:デフォルトの名無しさん mailto:sage [2017/03/08(水) 23:31:16.51 ID:RgWWdtUJ.net] 結果的には現実的な判断だったと思うよ。 OracleにはJavaを伸ばすほどの能力はない。 環境の互換性に固執した結果、エコシステムがブラッシュアップされたのならそれでOK。 あとはC#で実験済みの便利機能を順に採り入れていけばいい。 C#がJavaに滅ぼされない為には数歩先を走り続けるしかない。 そのうちにJavaと同レベルのエコシステムが揃えられればJavaを食えるかもしれないが、 これはかなり厳しいとは思う。
418 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 00:10:57.40 ID:x6aOWZGA.net] Javaのエコシステム!? 今Javaの一番メジャーなパッケージマネージャって何? rubygemsやnpmみたいなのないって聞いたら Mavenでpom.xmlって言われて愕然としたことがある
419 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 00:43:02.76 ID:zrZoqbyp.net] >>403 Mavenで用は足りるし、LLっぽいのがお好みならGradleも人気
420 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 07:33:43.82 ID:i1kRuTOP.net] >>388 EFって何がいいの? そんなの使わなくてもsql実行すればいいんじゃないの?
421 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 19:18:10.50 ID:NWFSmelL.net] >>405 ORMでググれ
422 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 19:27:05.21 ID:kp/XS3en.net] operational risk management 業務運営リスク管理 sqlを文字ではなくオペレーションとして記述できるからsqlコマンド記述ミスによるバグやsqlインジェクションに強くなり リスク回避に繋がるソース運営や管理ができる
423 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 19:28:46.08 ID:ekX4ZlFq.net] C言語って何がいいの? そんなの使わなくてもアセンブラ使えばいいんじゃないの? 35年前の会話
424 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 19:38:38.06 ID:6OW1VF+t.net] ただまあ、便利な道具も、出来の良し悪しというのがあって
425 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 19:39:54.78 ID:NWFSmelL.net] >>409 使う側の頭の良し悪しってことかな
426 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 19:43:58.45 ID:6OW1VF+t.net] そう、EFはあまり出来は良くない
427 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 19:45:09.07 ID:NWFSmelL.net] >>411 具体的に
428 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 20:12:05.29 ID:J4siqdXV.net] クエリビルダとかコードファーストは要らないかな まっさらなDB扱う機会なんてそうそうないし
429 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 21:56:54.03 ID:i1kRuTOP.net] >>407 sql記述ミスしなければいいだろ。
430 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 22:09:20.08 ID:ZZ1gzprq.net] >>413 既存DBからのコードファースト
431 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 22:09:48.58 ID:GqwkUUnW.net] >>414 ばーか
432 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 22:25:30.67 ID:FW6HepzM.net] >>414 そんな根性論・精神論的なものでミスは無くならないよ
433 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 22:38:08.68 ID:
] [ここ壊れてます]
434 名前:i1kRuTOP.net mailto: >>417 プログラムのミスを無くすのも sqlのミスを無くすのも同じだろ。 [] [ここ壊れてます]
435 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 22:45:19.50 ID:mybEc7J1.net] SQLじゃ静的チェックが効かないし、列名とメンバ名のマッピング作業でミスを生じやすい
436 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 23:05:42.43 ID:ZZ1gzprq.net] EntityFramework以前の問題だなこいつ
437 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 23:06:17.34 ID:ojqe9dcn.net] >>411 具体的に
438 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 23:10:24.76 ID:4hz9mkjX.net] おそい かたい つかいづらい
439 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 23:15:15.25 ID:ZZ1gzprq.net] >>422 おそい→単純に速さを求めるならDapper使えば?EFは速さが目的のORMじゃないし かたい→意味不明 つかいづらい→馬鹿ならプログラミング諦めれば?
440 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 23:15:20.88 ID:i1kRuTOP.net] >>422 確かに遅いよね
441 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 23:15:56.47 ID:OsFG/gY3.net] >>422 日本語でよろしく
442 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 23:16:37.66 ID:OsFG/gY3.net] >>424 うん、当たり前だよね
443 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 23:36:02.15 ID:4hz9mkjX.net] >>423 →おそい 昨今なにが速度のボトルネックってDBアクセスなのにおそくていいわけがない →かたい なんというか、型が固いんだ… データいっぱい取ってきてもダックタイピングとかないからいちいち入れ替えなきゃいけないし メソッドをまたいでデータをやり取りしづらい →つかいづらい 変な落とし穴いっぱい あと抽象化しすぎ DBと通信するタイミングとかこっちの好きにしたい よさそうだった よさそうだったんだ… ちょっと触った最初の一瞬は夢が見れたが
444 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 23:39:24.67 ID:P0KhFIxP.net] >>427 お前C#向いてないからやめとけ
445 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 23:40:17.24 ID:4hz9mkjX.net] なんでよ
446 名前:デフォルトの名無しさん mailto:sage [2017/03/09(木) 23:45:18.70 ID:ZZ1gzprq.net] >>427 生のADO.NETと比較すると遅くても、実運用に耐えられる程度なら問題ない 遅さのデメリットをメリットが上回る場合に採用すべき 設計ミス お前の頭が足りてないだけ 抽象化しないとInMemoryやFakeのIDbcontext使ってUnit Testできない
447 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 00:07:57.78 ID:Kg4/WRpJ.net] >>430 Dapperのところ見ると10倍以上遅いって数字弾いているし 体感上も遅いだろ https://github.com/StackExchange/Dapper
448 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 00:14:08.74 ID:cBCq3F3F.net] >>431 日本語
449 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 00:15:07.75 ID:PorFrx4J.net] >>431 遅いのは皆わかってるんだけど 何言ってんのこいつ
450 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 00:29:46.92 ID:cBCq3F3F.net] >>431 そのEntityFramework、3世代前くらいじゃね? こっちの方がまともに比較してる気がする https://msdn.microsoft.com/ja-jp/magazine/mt703432.aspx
451 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 00:35:01.00 ID:PorFrx4J.net] 誇大広告ワロタ
452 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 00:47:22.95 ID:Cysk3AQ/.net] >>431 Dapperを使ってメモリ上でUnit Testやる方法教えて
453 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 01:56:20.00 ID:YvYLhW/g.net] 割といままで関わったプロジェクトは、敢えてスドアドで疎結合にしてるの多かったな。
454 名前:デフォルトの名無しさん [2017/03/10(金) 05:22:26.01 ID:hxjDKO5o.net] 以下のページを参考にしてい 指定したURLからHTMLを取得するプログラムを作成しております www.kekyo.net/2016/12/06/6186 取得する処理を作成することは出来たのですが 取得処理を走らせてからリクエストが帰ってくるまでの間 GUIの操作が一瞬とまってしまう現象が発生しております(一瞬フリーズするような感じです) ですので連続してhtmlを取得したり、サイズの大きなものを取得する場合 長時間フリーズしてしまうことになるので大変困っております どなたか解決方法をご存知の方がおりましたら 教えていただければ幸いです よろしくお願いします
455 名前:デフォルトの名無しさん [2017/03/10(金) 05:22:50.13 ID:hxjDKO5o.net] ちなみに参考にしたソースは以下の通りです。 public static async Task<string> ReadFromUrlAsync(Uri url) { using (WebClient webClient = new WebClient()) { using (Stream stream = await webClient.OpenReadTaskAsync(url)) { TextReader tr = new StreamReader(stream, Encoding.UTF8, true); string body = await tr.ReadToEndAsync(); return body; } } } public static async Task DownloadAsync() { Uri url = new Uri("https://github.com/Microsoft/dotnet/blob/master/README.md"); string body = await ReadFromUrlAsync(url); Console.WriteLine(body); }
456 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 07:53:36.33 ID:/HdMhfmB.net] >>437 ストアドはビジネスとデータが密着して全く疎にならないだろ
457 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 07:55:23.13 ID:LDoDwujD.net] >>437 かわいそうに
458 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 07:56:43.00 ID:CZUjNxSc.net] 普通シングルスレッドでは、処理中は、 進捗状況を表示するプログレスバーでも、描画が止まるから、 GUI/worker用のスレッドは、別々のマルチスレッドにする プログレスバー描画のサンプルでも見れば?
459 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 09:46:49.61 ID:ccNaYHW5.net] >>437 そのうちいいことあるよ、頑張って
460 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 11:25:04.92 ID:LzpSY1Zb.net] >>438 WebClient(とその中で使ってるHttpWebRequest)が 名前解決部分を非同期化できてないっぽい HttpClientを使おう
461 名前:デフォルトの名無しさん [2017/03/10(金) 12:24:52.88 ID:/STnO1DK.net] え?みんなEF使わないがデフォなの?
462 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 12:26:08.18 ID:Tes7zBzn.net] あんなものを使うのはお勉強ができるだけの無能だけ
463 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 12:36:20.43 ID:wvkqDHaL.net] >>445 使わないじゃなくて使えないんじゃない?新しいことを学習できないんだよ
464 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 12:46:27.34 ID:Tes7zBzn.net] 新しいものに飛びついてもあとであれはゴミだったというものもたくさんある EJB2.0とか
465 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 12:51:59.29 ID:wvkqDHaL.net] >>448 それはその通りだね EntityFrameworkはもうそろそろ10年たつんだけど
466 名前:デフォルトの名無しさん [2017/03/10(金) 13:10:03.19 ID:mpFYTheR.net] やっぱJavaなんやね
467 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 13:53:22.42 ID:AGPJ29Rn.net] 新しいのを使うのも、古いのを使い続けるのも、どっちも長所短所がある 同じ長所短所でも環境によって評価が変わるからどっちが絶対にいいってのはない それ考慮してどっち使うって当たり前の選択ができない奴多すぎるんだよ
468 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 15:40:00.20 ID:y8xCqliG.net] >>440 んなの書き方によるだろ
469 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 18:15:05.97 ID:NraHDdZK.net] 使って文句ないやつは使ってればいいのよ。 俺は使うのをやめた。理由を他人に説明する必要も、他人が納得する必要もない。
470 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 18:36:12.55 ID:wvkqDHaL.net] >>453 使えるやつは使う、使えないやつは使わない
471 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 18:42:37.52 ID:NraHDdZK.net] そういうこった。俺には使えない。
472 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 18:43:15.86 ID:NraHDdZK.net] 使わなきゃ、使いにくいとこも分かんないからな。
473 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 18:46:25.98 ID:Gc8NaZGi.net] 世の中はまだWinFormsだからな。 新しいものに対応できないジャパン。
474 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 18:49:44.85 ID:YN/8CtFT.net] >>456 ADO.NET直書き?
475 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 19:38:33.09 ID:jSwjVui3.net] >>457 Microsoftはバグ管理にExcel使ってるんだぞ 振り回されたらあかん
476 名前:デフォルトの名無しさん mailto:
[] [ここ壊れてます]
477 名前:sage mailto:2017/03/10(金) 19:44:07.45 ID:PPM6ZnbB.net [ DotNet CoreでバッサリWebFormsとDataSet切り捨ててくれたから 日本もこれからはMVCとPOCOにシフトしていくだろうね(希望) ] [ここ壊れてます]
478 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 20:10:01.97 ID:cBCq3F3F.net] >>445 基本的にはEntityFrameworkで、パフォーマンスほしいとこはDapper
479 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 20:35:03.91 ID:BdCDiQus.net] dapperって何がいいの?
480 名前:デフォルトの名無しさん mailto:sage [2017/03/10(金) 20:40:29.72 ID:cBCq3F3F.net] >>462 上にもいろいろ比較出てるけど、とにかく速くて簡単 DBとオブジェクトの最低限のマッピングだけでいい場合はこれで十分
481 名前:デフォルトの名無しさん mailto:sage [2017/03/11(土) 09:49:08.82 ID:+LwMML+J.net] 動的だけど滅多にソースが更新されないほとんど静的なページのキャッシュってどう扱えばいいんですか? クライアントにキャッシュさせて更新があった時だけアクセスしてほしいです
482 名前:デフォルトの名無しさん mailto:sage [2017/03/11(土) 09:53:48.23 ID:h5T3JHpB.net] >>464 ブラウザーがやってくれるんじゃないか?
483 名前:デフォルトの名無しさん mailto:sage [2017/03/11(土) 13:46:01.01 ID:SoGUL2Zu.net] VisualStudio2017お試しで使ってるんだけれど タプルとか求めていたものが有ったので使おうとしたら ValueTupleのライブラリが標準で入らずNuGetにしか無いとか まだ安定しない無いとか何かあるんだろうか・・・ 凄い作りかけ感あるコンパイラに仕上がってるwww 使うべきか暫く様子見すべきか?
484 名前:デフォルトの名無しさん mailto:sage [2017/03/11(土) 13:50:47.46 ID:/3A6iA0R.net] Windowsのcsc.exeでコンパイル出来ないC#6.0も見送ってるならそうだな
485 名前:デフォルトの名無しさん mailto:sage [2017/03/11(土) 14:02:34.64 ID:SoGUL2Zu.net] タプルの利用はしばらく様子見にしとくか・・・何か怪しいし。 ローカル関数いいね、これやる時名前空間が汚れてインテリセンスが腐るから欲しかった これだけでも移行価値は無くは無いか・・・ IEnumerable<int> Enumerate(int begin, int end) { if (end < begin || end < 0 || begin < 0) throw new System.ArgumentOutOfRangeException("ほげぇ"); IEnumerable<int> Body() { for (int i = begin; i <= end; ++i) yield return i; } return Body(); }
486 名前:デフォルトの名無しさん mailto:sage [2017/03/11(土) 14:40:42.15 ID:SoGUL2Zu.net] ちらちら見ていると、ValueTaskの方はもっと状況が酷いのかなw www.buildinsider.net/column/iwanaga-nobuyuki/008 言語みたいな基幹部分を小出しにするとか、頭おかしくなってるなw 今までそんな事をした言語の末路がどうなったか知らないわけじゃなかろうに・・・ NuGetにして普通にコードする人には使わせないようにするのは、これはヤバイと中の人が感じているのかもしれんね マイクロソフトの技術力&組織力低下酷いな、半端に才能ある奴のスタンドプレーでグダクダなってるんだろうな。 Web系に翻弄され過ぎだろ とりあえず使えそうなのは、ローカル関数と型switchくらいかな この辺りなら変更あってもダメージ少ないだろうし。 タプルの実装に致命的問題があるならローカルclass&struct&enum宣言でもええんやでぇ 名前空間お腐れ問題はカッコイイ事しなくても、これでも解決するんや > microsoft
487 名前:デフォルトの名無しさん mailto:sage [2017/03/11(土) 15:24:01.58 ID:SoGUL2Zu.net] >>218 横だけど、式木はちゃんと言語でサポートしなきゃ誰にも読めない言語になるなと思った。 逆に、それ自体は難解
488 名前:でもないし難しい話じゃないなとも。 プログラムとは違うけれど 3Dモデラーでツリー構造とか法線とか難解な数学概念が見ての通りの操作で動かしたり創れたりするようになって 門外漢の3Dデザイナーが普通に使えるようになったように 一度概念をキッチリ整理する必要があるんだよ、あれは。 そして言語の作りこみがあの頃から甘くなってき始めてたな、ちょっと残念な感じになっていった時代だね。 とりあえず腐り過ぎのWin10をWin7の仕様に戻せや、ストアもユニバーサルアプリも使い物にならん、色使いも糞でUIが見ずらい > microsoft あと、WindowsUpdateのタイミングはユーザーの自由にさせよ、お前がお前のタイミングで勝手にやったら業務はむちゃくちゃになる。 [] [ここ壊れてます]
489 名前:デフォルトの名無しさん mailto:sage [2017/03/11(土) 22:05:54.03 ID:h5T3JHpB.net] >>466 タプルなんて昔からあるだろ
490 名前:デフォルトの名無しさん mailto:sage [2017/03/11(土) 22:18:07.78 ID:15EAzLR8.net] >>471 残念ながら昔からあるTuple<>とは全くの別物 機能的には匿名型にも似ているが、匿名型との互換性もない ローカル関数なんかも極めて場当たり的なゴミだろ デリゲートの型を省略できるようにして var func = (int x) => x * 2; と書けた方がずっと便利
491 名前:デフォルトの名無しさん mailto:sage [2017/03/11(土) 22:40:13.41 ID:7U1HyGmG.net] >>472 いつからここが初心者用になったんだ
492 名前:デフォルトの名無しさん mailto:sage [2017/03/12(日) 01:14:05.08 ID:+ulIycHH.net] >>469 https://github.com/dotnet/roslyn/issues/13177 によると、.NET4.7に入れることにしたみたいだね nugetで済むのに.NETのバージョンを上げるのは面倒が多いし、今後C#のリリース速度を早めるならある程度まとめて.NET4.7にしようって考えじゃないかなぁ 言語機能の小出しについても他の言語と比べれば遅いし、互換性と将来を考えて慎重に作ってるから完全な完成を待つと永遠にリリースできなくなっちゃうし、やむをえんだろ CLRのバージョンを保ってくれれば文句は無い
493 名前:デフォルトの名無しさん mailto:sage [2017/03/12(日) 02:13:23.38 ID:lK2SBg8L.net] List<string> list; があって そのlistのx番目からy個文字列連結したいのですがLinqでどう書けますか? x番目から3個なら var result = $"{list.Skip(x).Take(1).FirstOrDefault()}{list.Skip(x + 1).Take(1).FirstOrDefault()}{list.Skip(x + 2).Take(1).FirstOrDefault()}"; こんな感じですけど短く綺麗にしたいのですが…
494 名前:デフォルトの名無しさん mailto:sage [2017/03/12(日) 02:33:41.68 ID:tHLqC2EA.net] >>475 var result = String.Join( "", list.Skip(x).Take(y) );
495 名前:デフォルトの名無しさん mailto:sage [2017/03/12(日) 05:07:11.99 ID:lK2SBg8L.net] >>476 わー、短くて綺麗。 ありがとうございました。
496 名前:デフォルトの名無しさん [2017/03/12(日) 06:43:42.92 ID:RIOf9bqD.net] >>472 >デリゲートの型を省略 できるならとっくにやってるんじゃないかなw ラムダ式は書けるコードが限定され過ぎるのが問題かな。>>468 はそれではどうやっても書けないでしょう。
497 名前:デフォルトの名無しさん mailto:sage [2017/03/12(日) 08:53:09.32 ID:bReP5RFT.net] >>475 自分で理解できねーもん他人に強制するその姿勢がすでにクソ なんでその処理linqで書いた? しかも自分は掲示板で質問しなきゃわかんねーのに さっさと辞めちゃえお前 伸びる目もねーから
498 名前:デフォルトの名無しさん mailto:sage [2017/03/12(日) 09:23:31.23 ID:7tB+K/sW.net] 何でこの人キレてんの?あの日?
499 名前:デフォルトの名無しさん mailto:sage [2017/03/12(日) 10:01:53.12 ID:RIOf9bqD.net] みるからに自演臭くてキモイからじゃねw
500 名前:デフォルトの名無しさん mailto:sage [2017/03/12(日) 10:23:22.36 ID:1QMoXo8Q.net] ラムダ式自体は型を持たないから、delegate型と決めつけてvar対応するなら専用のルール付けが必要だと思う。 そこまでする価値は無いかな。
501 名前:デフォルトの名無しさん mailto:sage [2017/03/13(月) 06:11:29.33 ID:o9PLbB2Z.net] すいません質問なんですが アプリ起動中はAキーを推すと左クリック Bキーをおすと右クリック Cキーを押すとアプリ終了 みたいな感じでキー入力をマウス入力にいれかえるようなアプリを作りたいんですが Windows上でフォーカスのあるウインドに依存せずにキー入力を取得するのってどうしたらいいんでしょうか
502 名前:デフォルトの名無しさん mailto:sage [2017/03/13(月) 06:55:37.31 ID:2GKmTNuX.net] 以前、遠隔ウイルス片山も似た質問していましたね。
503 名前:デフォルトの名無しさん mailto:sage [2017/03/13(月) 07:01:39.19 ID:WHuP7MmV.net] フォームのKeyPreviewプロパティをTrueにすると、すべてのキーイベントをまずフォームが受け取り、処理が終了してからフォーカスのあるコントロールに渡されるようになります。 ってdobon.netで見つけた やったことはない
504 名前:デフォルトの名無しさん mailto:sage [2017/03/13(月) 07:17:17.53 ID:o9PLbB2Z.net] ありがとうございます KeyPreviewについて調べてみます
505 名前:デフォルトの名無しさん mailto:sage [2017/03/15(水) 09:07:02.25 ID:k1u612YY.net] すみません、EFで質問させて下さい。 下記のようにエンティティを定義して、それを編集するクライアントを作ろうとしています。 とりあえず、Modelに対する編集は無効にしてあるものとします。Unitに変更を加えて保存すると、 DBの中でModelのレコードが増えてしまいます。NameにUnique制約を付けると当然例外が派生します。 Unit.ModelがDbContextの管理外になってしまったので、別のインスタンスとして認識されているという理屈は分かります。 contextを都度作成せずに維持していれば、期待する動作になるのも分かりますが、それはできればしたくはないです。 何か上手い解決方法はないでしょうか? public class Model { public int ModelId {get;set;} public string Name {get;set;} ※ } public class Unit { public int UnitId {get;set;} public VM Model {get;set;} public string Serial {get;set;} } List<Unit> GetUnitList() { using (var context = ...) { return context.units.Include(x => x.model).Select(x => x).ToList(); } } void UpdateUnit(Unit unit) { using (var context = ...) { var target = context.units.Where(x => x.UnitId == unit.UnitId).FirstOrDefault() target.Model = unit.Model; target.Serial = unit.Serial; context.SaveChanges(); } } var list = GetUnitList(); ...リスト表示->エディタでunit.Serialを編集 UpdateUnit(unit);
506 名前:デフォルトの名無しさん mailto:sage [2017/03/15(水) 09:27:37.16 ID:N2+3G59G.net] >>487 そこまで分かってるなら解決策は簡単。 ModelIdで検索し直す。
507 名前:デフォルトの名無しさん mailto:sage [2017/03/15(水) 11:16:57.42 ID:k1u612YY.net] >>488 ありがとうございます、すっきりしました。 期待する結果に対してのコストが少々重くなるかなという気はしているのですが、 処理コストが問題になるほどの規模ではないので、そうさせて貰います
508 名前:デフォルトの名無しさん [2017/03/16(木) 03:52:05.80 ID:l+qA2/0G.net] C#でwebBrowserを使ってるんですが 以下のhtmlをwebBrowser.DocumentTextに突っ込んで表示させたいんですが 何故かwebBrowserではそのままjqueryを読み込むことが できないようでスクリプトエラーが発生してしまいました 対処方法のわかる方いたら教えていただけますでしょうか? ↓以下のhtml <!DOCTYPE html> <head> <meta charset=""utf8""> <script src=""https://code.jquery.com/jquery-2.1.4
509 名前:.min.js""></script> <script type=""text/javascript""> $(function() { alert(""test"") }); </script> </style> </head> <body> [] [ここ壊れてます]
510 名前:デフォルトの名無しさん mailto:sage [2017/03/16(木) 11:36:09.87 ID:oyR0ujl0.net] なんでダブルクォーテーション2つ続いてるの?
511 名前:デフォルトの名無しさん [2017/03/16(木) 16:49:18.07 ID:l+qA2/0G.net] エスケープです 文字列に突っ込んでるのをそのままコピペしちゃったのでそのようになってます すいませんがエスケープは無視して考えてください。
512 名前:デフォルトの名無しさん mailto:sage [2017/03/16(木) 16:58:42.52 ID:Qa1xgsfZ.net] <style> <head> <body> </style> </head> </body> 最後のbodyを/スラッシュで括ってないからでは?
513 名前:デフォルトの名無しさん mailto:sage [2017/03/16(木) 17:03:26.21 ID:RyFuDdep.net] >>493 君は冷静だな
514 名前:デフォルトの名無しさん mailto:sage [2017/03/16(木) 17:05:05.86 ID:Qa1xgsfZ.net] HTMLソース <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>HTML5サンプル</title> </head> <body> <p>HTML5で作成しました!</p> </body> </html> 連投ですまん もっと解り易いサンプル
515 名前:デフォルトの名無しさん mailto:sage [2017/03/16(木) 18:14:35.84 ID:kQHrflry.net] WebBrowserがデフォだとIE7モードで動くせいでjquery 2.1.4が動かない ・jquery 1系使う ・headに <meta http-equiv="X-UA-Compatible" content="IE=edge"> 等を書く ・レジストリでモード変更する 好きなのどうぞ
516 名前:デフォルトの名無しさん mailto:sage [2017/03/16(木) 18:38:16.89 ID:RyFuDdep.net] >>496 君は詳しいな
517 名前:デフォルトの名無しさん mailto:sage [2017/03/16(木) 20:09:32.60 ID:G/L2rMHg.net] 簡単に単体テストできるのか知りたいです public static async Task DoHeavyAsync(string path, IProgress<long> progress, CancellationToken token) という非同期メソッドの単体テストで、同期版の DoHeavy() と同様のテスト以外に、 (1) progress が動作していることの確認 (2) token が動作していることの確認 が必要だと思います (1) が簡単ではない var progress = new Progress<long>(n => { Assert.Fail(); }); などやっても、テストが成功してしまう(レポートがメソッド終了後に届くため) まじめにやるとしたら別スレッドを作る必要がありそう? (2) は、巨大ファイルを使って new CancellationTokenSource(20) などでキャンセルされることを確認という 汚い手法でテストしています(処理速度があがった場合にテストが失敗する可能性があるのが汚い点) (1)と(2)、それぞれどのようにテストするべきでしょうか? 特に(1) NUnit を使ってますが、他のフレームワークでもいいです
518 名前:デフォルトの名無しさん mailto:sage [2017/03/16(木) 20:16:08.57 ID:kgKaK9fl.net] 非同期処理の確実なテスト方法は存在しないのでどっかで妥協しなきゃならない
519 名前:デフォルトの名無しさん mailto:sage [2017/03/17(金) 07:37:50.30 ID:gTyXrRTf.net] よく分からんな Taskなんだから結果が出るのを待機すればいいだろ Progressは呼ばれたらcalledフラグを立てるようにしてそいつでAssetする タイムアウトが必要かどうかは状況次第 2つめは、内部でFileStreamを使っているならだが Streamを受け取るインターフェースを追加する クッソ遅いStreamは自由に再現できる
520 名前:デフォルトの名無しさん [2017/03/17(金) 08:16:11.77 ID:VDcrtJ6N.net] >>496 ありがとうございます!大変助かりました!
521 名前:デフォルトの名無しさん mailto:sage [2017/03/17(金) 21:11:54.40 ID:G6TjLWRU.net] >>499 やっぱり妥協かなー >>500 (2) はなるほどね。作ってみる (1) なんだけど、Progress.Report() での通知は、タスクを await で待機したとしても、 待機が終わった後でも Action<T> が呼ばれているとは限らない 巨大なタスクを
522 名前:渡して、 Progress.Report() が『たぶん』呼ばれるという妥協が必要かなー 単体テストをパスしたとしても、たまたま運良く Action<T> が先にスケジュールされただけだよ 下記のコードはうちの環境ではテストに失敗してた public static async Task DoLightAsync(IProgress<long> progress) { await Task.Delay(10); progress.Report(123); } [Test] public async Task DoLightAsyncTest() { bool called = false; await DoLightAsync(new Progress<long>(n => { called = true; })); Assert.IsTrue(called); } [] [ここ壊れてます]
523 名前:デフォルトの名無しさん mailto:sage [2017/03/18(土) 00:00:39.16 ID:3lIBsEeS.net] 惜しいところまでは行ってるな Progressのインスタンスを渡すのではなく IProgressを継承し同期のReportを実装したクラスのインスタンスを渡す
524 名前:デフォルトの名無しさん mailto:sage [2017/03/18(土) 10:58:29.15 ID:UTVmwL6L.net] ふむー、こうか 確かに 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 にも貼っておく pastebin.com/QjF0XkH4
525 名前:デフォルトの名無しさん [2017/03/19(日) 00:14:21.68 ID:xAk2llJg.net] ファイルのタイムスタンプを指定した時刻に変更したいんですが、コードのヒントをくださいm(_ _)m
526 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 00:19:27.37 ID:8DI2TWvJ.net] >>505 FileInfo
527 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 00:30:52.74 ID:VKtnwSVx.net] 「ファイルのタイムスタンプ」でグーグル先生に聞けば www.atmarkit.co.jp/fdotnet/dotnettips/370timestamp/timestamp.html が一発で出てくるんだけど掲示板で聞く方が面倒じゃないの
528 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 06:34:49.31 ID:bkt1N2YW.net] 検索知らないんでしょ
529 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 13:50:14.09 ID:PWrmpV5o.net] 2chスレへたどり着けるのに検索知らないとかこれ如何に
530 名前:デフォルトの名無しさん [2017/03/19(日) 14:33:00.16 ID:DWsQT7k4.net] 「お前ら、検索頼むわ(丸投げ)」
531 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 14:45:08.30 ID:1DEeFth3.net] おまいらは回答する機械
532 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 14:53:33.02 ID:VKtnwSVx.net] まあ調べたら自分の新しい知識になる場合もあるからいいんだけど この程度の事も検索しないのならコードなんか書けないような
533 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 15:03:19.30 ID:lJcyTqFl.net] プログラムやる奴らって質問されるとキレながらも答えたい願望あるんだよな そして煽って議論させるのも好き だからわざわざ検索しないでここに投げてあげたりする
534 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 15:04:25.29 ID:1DEeFth3.net] それにしたって餌としてはしょぼすぎる
535 名前:デフォルトの名無しさん [2017/03/19(日) 15:10:14.91 ID:p4p+SSjy.net] ボランティアを馬鹿にすんじゃねーぞ、コラ!
536 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 16:02:53.06 ID:T5IZ831S.net] 人力検索
537 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 16:06:30.35 ID:z5/tCjGK.net] >>513 そういうのは初心者向けふらっとの方でやってくれw あそこなら解決済みでもグダグダ続けたがるのがいっぱいいる
538 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 18:48:36.73 ID:lJcyTqFl.net] >>517 でも質問してくれないと寂しいんだろ?
539 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 18:52:31.68 ID:bcM43571.net] くだ質とかVSスレとかこの板で変なやつ増えたよな 本当にプログラムやっているのかって感じの ここにも来てるのか
540 名前:デフォルトの名無しさん mailto:sage [2017/03/19(日) 21:56:16.72 ID:HC9gBYvT.net] マ板行けって思うスレ多いよな
541 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 01:44:39.35 ID:SU/B8
] [ここ壊れてます]
542 名前:MWa.net mailto: アクセスアップとお小遣い稼ぎの裏技 トラフィックエクスチェンジ http://tra-chan.jugem.jp/?eid=1 [] [ここ壊れてます]
543 名前:デフォルトの名無しさん [2017/03/20(月) 10:11:03.85 ID:Afs087wZ.net] >>520 ←コイツの馴れ合おうとするレスうざっ
544 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 12:24:29.57 ID:y4a+UdUh.net] >>522 マ板行け
545 名前:デフォルトの名無しさん [2017/03/20(月) 14:10:48.91 ID:pi/vFj6F.net] >>523 お前が行け
546 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 14:57:32.61 ID:98bjORSB.net] ここは幼稚園じゃないんだが。
547 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 15:41:51.51 ID:4DDUMBY5.net] 似たようなもんよ
548 名前:デフォルトの名無しさん mailto:sage [2017/03/20(月) 15:48:57.55 ID:LcNjV7jZ.net] 言い争いを見てたら幼稚園児とたいして変わらん気がする
549 名前:デフォルトの名無しさん [2017/03/20(月) 16:00:23.53 ID:pi/vFj6F.net] ↑ いい加減うざいって、お前らずっとスレちがい
550 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 05:52:14.36 ID:SG0A/rfm.net] ただいま C# 7.0 利用中 ジェネリックのローカル関数まで書けるのにオーバーロードは出来ない事に気づいてがっかりモードになっている件 なぜできんOrz あと大抵の場合キャプチャは要らないんだけどな・・・ 0b1110_1011 とか二進数のリテラル地味に便利w
551 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 06:45:57.61 ID:0zsWCCNl.net] オーバーロードはクラス外からみて合理的なインターフェイスを提供するためのもので、 内部で使うだけなら紛らわしいだけだろ オーバーロードが欲しくなるほど長いメソッドを作ること自体が間違ってるし
552 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 14:40:35.20 ID:SG0A/rfm.net] >>530 そんな事は無いよ、型別にスイッチするくらいならオーバーロード見通しいい
553 名前:デフォルトの名無しさん [2017/03/21(火) 19:18:26.99 ID:bA9h/8/p.net] 似たような処理するのにメソッド2つも要らない 中で分岐させて使え、その方が保守楽だから ↑ って言われたことある。 オマエラも結局中で分岐させてる?
554 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 19:23:26.02 ID:qbQ1Fjub.net] >>532 時と場合による 何でもかんでも共通部分をまとめようとするのはバカだが
555 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 19:24:42.66 ID:qRIPyX6L.net] 内部の分岐とかどうでもよくね? 似たような処理のメソッドが複数出来る時点で設計からして間違っているだろうし
556 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 19:30:08.87 ID:72kEtT2Q.net] >>530 利用するかどうかは別にしてわざわざ禁止するほどのことではないよね ってことだろ
557 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 19:31:27.83 ID:qbQ1Fjub.net] >>534 ループ中で分岐処理が必要な場合があるので2行目は違うと思う 速度ちょっとでも稼ぎたいと思ったらループの外で分岐させておくだろうし
558 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 19:39:30.55 ID:RrALGwyw.net] >>532 そういうことするとすぐに分岐が増えて収集がつかなくなる この業界は既存のコードの権力が強すぎる 一回でもはまるともう最後まで逃れられない だから最初から妥協せずクリーンな状態を維持し続けるしかない
559 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 19:50:56.44 ID:UqOt5XZ1.net] だったらなおのこと分岐のが楽だな 実行して見ないとなんの処理が走るか分からないコードにメリットなんて感じない 資料にも書けないしお客さんにも説明できない
560 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 20:14:47.71 ID:7sd4gAxo.net] >>535 オーバーロードを許すと実装コストは増えるよ オーバーロードされたメソッドのマングリングってこれまでにやったことないはず クソ長いメソッドを定義する馬鹿のために無駄な実装コストをかけることは許容できない
561 名前:デフォルトの名無しさん mailto:sage [2017/03/21(火) 23:05:57.08 ID:UqOt5XZ1.net] マンコリング?
562 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 02:05:33.87 ID:Y
] [ここ壊れてます]
563 名前:DOC/IGa.net mailto: オーバーロードがないのは多分キャプチャが原因だと思うよ 可能なら多分やってる、というかキャプチャ無しならオーバーロード可能にしてほしい感じ さらにいうなら、キャプチャ無し指定をして普通のメソッドが単純に名前空間上に合わられないだけにして欲しい。 でもって、ローカル変数と被る名前OKにしてくれれば一番いい。 結局、ローカル関数にした理由はインテリセンスが機能不全になって欲しくないという話なだけだから。 [] [ここ壊れてます]
564 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 02:11:31.86 ID:YDOC/IGa.net] なんであんなに変更可能キャプチャが好きなんだろうな・・・ 関数型言語のように一度割り当てられたら変更がないことが保証されれば見通し良いし使い勝手も良いけれど 手続き型言語にキャプチャが入ると見通し悪い事この上ないから、可能な限り使わないようにしたい気分になっている。
565 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 11:28:29.87 ID:hks7EAC1.net] C#の糞拡張はこれからが本番ですよ。
566 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 12:58:18.38 ID:7zaDxJTN.net] 文句あるなら自分で言語作ればいいのに 何で作れない分際で文句言ってるんだか
567 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 13:01:02.87 ID:+8Koiwe2.net] 基地外発想だな
568 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 13:23:33.31 ID:6nIA/xoV.net] フジテレビ的発想
569 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 13:50:44.67 ID:FLtL2zh7.net] 自分で作れないから文句言ってんだろ お前も同レベルに頭わるそうだなw
570 名前:デフォルトの名無しさん [2017/03/22(水) 14:47:13.98 ID:T50yqk9Q.net] >>544 できらぁ!
571 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 15:44:09.05 ID:YDOC/IGa.net] ValueTuple使ったら、変数見えないデバッグできねぇwwww まさに作りかけwwwww
572 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 15:45:53.48 ID:YDOC/IGa.net] >>544 みんなで同じものを使うから意味があるんだよ、一人で勝手に作って勝手にやってたら滅茶苦茶なるだろw
573 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 19:44:37.37 ID:JvcKijZm.net] ヘジたんも言語なんか開発するのは時間の無駄だからやめなさいと言っていたしな
574 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 20:41:21.23 ID:qEl3ed9E.net] だれよ
575 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 20:59:39.74 ID:eP+YAd4z.net] >>549 それ、お前がメクラなだけじゃね?
576 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 21:17:25.63 ID:YDOC/IGa.net] >>552 Delphiの開発者で、ゲイツ御大にC#のアーキテクトしてボーランドから引き抜かれた人
577 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 21:23:40.38 ID:YDOC/IGa.net] 暫く使ってみたけど、やっぱ、ラピッドリリースはよくねぇよな どんどん品質が落ちていく 誰だよこんな糞な手段はやらした馬鹿は Windows10もVisualStudioもボロボロやん
578 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 22:28:00.53 ID:MyrW3Mfd.net] >>555 どんどんお前が老いていってるだけ
579 名前:デフォルトの名無しさん mailto:sage [2017/03/22(水) 22:41:57.96 ID:Qh2JSeLT.net] 最近思うんだけどRazor使わずに普通のhtml+JS+REST API(.NET)の方が開発しやすくない? Razorって本当に便利なのかな?生産性あがる?
580 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 01:12:53.78 ID:eX8m9MWo.net] 業務アプリで同じような画面を大量生産するには便利A: [1.201975 sec.] B: [2.281051 sec.]
581 名前:デフォルトの名無しさん [2017/03/23(木) 01:47:02.34 ID:FaFIhE+0.net] C#に限らずかもしれないけれど、invokeってフォームに限ってどうして必要なのですか? invokeを書けばメソッドを呼び出してプロパティにアクセスできるのは分かるのですが invokeがないと何がダメなのか内部的なことを教えていただけますか?
582 名前:デフォルトの名無しさん [2017/03/23(木) 01:52:24.45 ID:Un9Q+jtZ.net] >>556 心配しなくても若い子はもうWindowsも使わなければVisutalStduio何それ?状態だからw みんなWeb系でスマホばっかりやっている。 もう、ここに残
583 名前:っているのは年寄りだけだよw [] [ここ壊れてます]
584 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 01:56:59.96 ID:Un9Q+jtZ.net] >>559 昔のシングルスレッド時代の遺産を引きずっているんだよ Formは、半ばラッパーライブラリなので。 シングルスレッドの利点はデッドロックの可能性がないこと。 マルチスレッド当たり前になってしまった今だと、逆にデッドロックの元になってしまったりと困った有様だけど。 遺産の量が大きいので、全く別の物を作るのは簡単ではないだろうね。
585 名前:デフォルトの名無しさん [2017/03/23(木) 02:00:44.79 ID:FaFIhE+0.net] >>561 ありがとうございます もっと詳しく知りたいのですがどう言葉で調べればよいのでしょうか? できればネットで調べれるものがよいのですが、書籍でも平気です 英語のサイトでも平気です なにかあれば教えていただけますか?
586 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 02:04:38.43 ID:VjAjr2s9.net] >>559 UI関連は、UIスレッドでのみ動作することを前提に設計することで、パフォーマンスを上げてる。 マルチスレッド対応にすると排他制御等が増えてしまい、パフォーマンスが下がる。 >>561 非同期処理とか書きやすくなったから、最近は割と楽だろ。 Invokeも使う必要ないし。
587 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 02:05:51.99 ID:Un9Q+jtZ.net] >>562 C言語から、直接Win32APIを叩いてみればわかると思うよ。 WM_XXXXとかを直接使ってGUIを動かしてみれば、古いインターフェイスの感触どんなもんか分かるかと。 年代物なので、古本屋でWin32の本でも探してみるのもいいかも。 今更みる価値あるのかって思うので、お勧めはしないけど。
588 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 02:07:28.88 ID:Un9Q+jtZ.net] >>563 Task作った奴はバカだと思うwww Invokeの方がまだ誰にでも分かりやすい。 継続なにそれおいしいのwww 関数型言語面白いねって感じだね
589 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 02:09:33.89 ID:Un9Q+jtZ.net] このマルチコア時代にシングルスレッドで頑張ってパフォーマンス上げるとか 時代錯誤も甚だしいよな・・・
590 名前:デフォルトの名無しさん [2017/03/23(木) 02:16:32.78 ID:FaFIhE+0.net] >>563 ,564 新人にinvokeを教える際に困ってしまったので 浅くでも知識として知っておきたかったので助かりました Win32からの流れなのですね、Formだけこんなに違うのはそういうことなのですね。。 時間があるときにもう少し調べてみようと思います ありがとうございました
591 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 02:21:34.59 ID:VjAjr2s9.net] >>565 async/awaitやIProgress<T>あるから、Taskの継続を直接使う事はあまり無いな。 間接的には使ってるわけだが。
592 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 02:21:39.46 ID:9gkqdxMB.net] >>566 時代関係ないから スレッドセーフにするとパフォーマンスが犠牲になるのはUIだけじゃない BCLのクラスのインスタンスメソッドも大半はスレッドセーフじゃない
593 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 02:22:11.13 ID:Un9Q+jtZ.net] Win32は、当時のオブジェクト指向の実現にむけての試行錯誤が見れるのは面白いかもしれない メッセージ飛ばしたり、メール飛ばしたり、色々試行錯誤の末にC++の仮想テーブル方式にたどり着く訳だけれども その前の段階のオブジェクト指向が見れるよw
594 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 02:23:39.71 ID:Un9Q+jtZ.net] >>569 いつまでも凝り固まってますねwww もうハイハイって感じですわ
595 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 02:28:42.19 ID:Ei+8urX3.net] しかしGUIなんて所詮人間速度だし、パフォーマンスって要らないよな? フォームに関しては最初からマルチスレッド対応でinvokeの必要無しの方が良かった気がするが。
596 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 02:30:27.90 ID:9gkqdxMB.net] >>571 いるよね、こういう量的な進歩と質的な進歩の区別のつかない
597 名前:z 馬鹿な奴だ [] [ここ壊れてます]
598 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 02:31:53.25 ID:VjAjr2s9.net] 何でもマルチセーフにすれば良くなるってもんでも無いのね。 排他制御のコストは大きいから、なるべくそれを無くす設計が重要。
599 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 02:32:30.61 ID:Un9Q+jtZ.net] >>572 いやいや、それでもあった方がいいよ マルチスレッドできっちり分散できれば、1CPU辺りの負荷が軽くなる すると低クロックで動いて消費電力が小さい。 シングルスレッドだと、同じ負荷でも1CPUに集中するからクロックが上がってしまう。
600 名前:デフォルトの名無しさん [2017/03/23(木) 02:35:01.08 ID:Un9Q+jtZ.net] >>573 質的にはTaskは逆立ちして徒競走しているようなモンだなw 普通立ってに走れよ、頭オカシイんかいってなもんだね。
601 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 02:36:32.46 ID:9gkqdxMB.net] しかし、マルチコアっていうのは苦し紛れの「苦肉の策」であってポジティブな進歩じゃないって パソヲタレベルでも知ってる常識だと思ったけどプログラマでもそういう認識がない奴がいるんだね。 そういう奴は「人月の神話」って言葉も聞いたことないんだろうな。 生産性は作業者の投入人数に比例しないのはコンピュータも同じだよ馬鹿
602 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 02:38:13.08 ID:Ei+8urX3.net] >>575 いやお前実は分かってないだろ。 575はinvokeを肯定しているぞ。てかお前どっち派よ?
603 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 02:40:35.49 ID:Un9Q+jtZ.net] >>578 async / await 最新わかってる俺スゲーなヤツが死んでほしい派 技術的には、まぁあるもん使うさってなもんだ。
604 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 02:57:11.32 ID:VjAjr2s9.net] >>576 Taskはスレッドプールを使いやすくしたもの。 スレッドプール自体は昔から使われるテクニックだし、なんでそこまで嫌うのか分からん。 Taskのおかげで非同期処理が非常に楽に扱えるようになったのに。
605 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 03:07:35.11 ID:Un9Q+jtZ.net] >>580 以前作って滅びたATLなんかと同じだね、入門者がすぐに理解して使えない物は糞 WPFも同様の香りがするね 分からないけれどなんとなく使えているって人だらけになって理解していないから、エラー対処ができない。 そうすると、全部特定の人に負担が行く、そんなコードやライブラリは使えない。 これはマイクロソフトの象牙の塔だよ
606 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 04:45:12.92 ID:0wLqn0eU.net] ATLがいつ滅んだんだよw
607 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 07:10:17.81 ID:UmFjwc/F.net] 昔の名残とかじゃなく、単にマルチスレッドでUI部品を扱うのが大変だということだと思うんだが ユーザーインターフェイススレッド - Wikipedia https://ja.wikipedia.org/wiki/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%82%A4%E3%82%B9%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89 >例えば、Java の AWT では、1996年の最初の時点では、 >単純にスレッド間でデータ共有型のマルチスレッドになっていた。 >しかし、データ共有するには、ロックをかけないといけないが、 >親コンポーネントから子コンポーネントを呼んだり、 >コールバックで子から親を呼んだり、 >アプリケーションからGUIライブラリを呼んだり、 >GUIライブラリからアプリケーションをコールバックしたりと、 >双方向に呼び出すことが多く、 >異なるスレッド間で双方向に呼び合うときは、ロックの順番に注意を払う必要がある。 >これはソフトウェアが非常に複雑になる原因となってしまう。 >また、ロック順序のミスが引き起こすデッドロックは常にではなく >たまに発生したりすることの多いバグ(時間的確率要因が関与する偶発性のあるバグ)であり、 >バグ取りが大変になるという問題があった[
608 名前:3]。 > >そこで、1997年の Java の Swing からは、 >UI の操作は全てメインのUIスレッドであるイベントディスパッチスレッドから >操作しなくてはならない、というルールを設けた。 [] [ここ壊れてます]
609 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 07:23:37.05 ID:i5lX3ZQq.net] それを昔の名残とかラッパー、速度優先って言ってるんでしょ マルチスレッドにしようと思ったらできるんだから
610 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 08:05:24.99 ID:eX8m9MWo.net] WinFormsやWPFを含めたGUIフレームワークって イベントハンドラなどのユーザーコードに制御を渡す前後で 一時的に状態を変えたりしてることが多いから、 それ以外のタイミングで触られると壊れる 結局それを防ごうとするとユーザーコードの実行タイミングまでブロックすることになるので、 Invokeと変わらなくなる
611 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 08:14:01.02 ID:HovpjxiM.net] >>584 > マルチスレッドにしようと思ったらできるんだから 話がループしてるぞ やればできるけどコールバックとかでロックの管理が面倒だしUIだから極限まで性能追い求める必要もないから >> UI の操作は全てメインのUIスレッドであるイベントディスパッチスレッドから >> 操作しなくてはならない、というルールを設けた。 ってことだろ
612 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 10:27:00.68 ID:BTeOg9CT.net] >>564 COMのアパートメント問題を解決するためじゃないの? 厳密にはInvokeしなくて良いケースもあるけど、それを保証する方法が皆無に等しいという。 ウインドウメッセージ云々とか、本質とはかけ離れている気が。
613 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 12:30:56.91 ID:Un9Q+jtZ.net] >>582 もう誰も使っている奴いないだろう、放棄されて保守だけが残っている。 こういう技術はいずれそうなるよ
614 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 12:53:23.45 ID:Un9Q+jtZ.net] >>586 UI側がバージョン管理システムみたいな扱いをすればいいんだと思うけどね 非ロック型で同期をとる方法としては有効だと思う。 いわゆる 読み込んで、内容を変更して、読み込み時点データとともにUIに返す。 UI側は、ロックして読み込み時点と現状が一致しているなら置換してアンロックそして処理終了。 ロックオブジェクトが自分自身に限られるからデッドロックの可能性はない。 この方法の場合、読み出すだけならロック不要でいつでも読み込めるしね。 俺は、UIに関してはそういう設計にして自分のメソッドはすべてスレッドセーフだ。 長年の実績ある方法だし、このやり方は非常に優れていると思う。 更新失敗とリトライは発生するが、並列度はかなり高くなる。 デッドロックは皆無で、見通しも良い。
615 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 12:55:44.66 ID:Un9Q+jtZ.net] >>589 に追加 これのよい所は、バージョン管理システムは普通誰でも使わなきゃならないもので どういう風に機能させるのか誰にでもすぐ分かる。 問題が発生しても初心者に簡単に解決できるという点が良いと思っている。
616 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 17:07:47.97 ID:EtPn1ouj.net] なんか酷いやり取りだね マルチスレッドを根本的に理解してないのが何人かいるねw スレッドセーフに作ることは高コストだから特に理由がない限りそうしないのは マルチスレッド理解の初歩の初歩だと思うんだけど。 あれだ、UIは別スレッドからのアクセスを検出して例外投げるようになってるわけだけど、 例外が投げられなければ何も問題ないはずだ、っていうVBerな発想なのかねw
617 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 17:21:43.84 ID:ncdnXTN/.net] .NETは実行コストよりも実装コストを重視する傾向にあるからね スレッドセーフなformになってもいいと思うわ
618 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 17:24:03.63 ID:30c+rZIc.net] >>592 君のコードはイベントハンドラが並列に実行されても大丈夫? 利用する側の実装コストも確実に跳ね上がるよ
619 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 18:15:58.21 ID:ncdnXTN/.net] マルチスレッド動作のformにとは言ってないんだよ・・・
620 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 18:57:02.57 ID:99dRkoLd.net] >>592 そこでwpfのバインディングですよ
621 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 1
] [ここ壊れてます]
622 名前:9:28:24.32 ID:Un9Q+jtZ.net mailto: >>591 酷いやり方というのはある意味正しい そもそもformsが腐っている以上綺麗な方法はハナから存在しない。 それでも誰にでもわかり、誰にでも修正可能なやり方っていうのが重要なんだよ。 それができなきゃ、一人で勝手にやっていろって話になる。 チームで作業は不可能だ。 [] [ここ壊れてます]
623 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 19:30:23.84 ID:Un9Q+jtZ.net] バインディングとか最悪やな、何処がどうなっているのか把握できる人間が居なくなって 誰にもメンテできなるなる典型w
624 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 19:32:40.10 ID:Ei+8urX3.net] >>583 > GUIライブラリからアプリケーションをコールバックしたりと、 これってあるか?ピンとこない。 そもそも、UIってロックする必要があるか? 現状、UIスレッドとタスクスレッドは別で、結果的にプログレスバー等の更新にはinvokeを使うしかない。 これがウザイから「直に書き込みさせてくれ」というのが俺の希望。 そもそも、排他的な実装をしなければならない理由がないだろ。 プログレスバーなんて普通は共有しないし、 してたらしてたで「どちらの内容が表示されてもいい」が仕様になるのだから、 レーシングしたところで問題ない。 結果、リクエストがあったらただ更新すればいいだけ、それを表示すればいいだけ、で終わりじゃないか? ファイルみたいにロックありきの物ではないと思うんだが。
625 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 19:35:54.46 ID:g/kXmQSp.net] マルチスレッドアクセス可能なGUI採用してるシステムなんてあったっけ UIスレッドモデルが遺産だというのなら 新しいシステム(Windowsに限らんぞ)ほど「そうなってはいない」はずだが 実際は最近のOS(やはりWindowsに限らない)でもUIスレッドモデルだ 何故だろうなあ 下手の考えなんぞ大抵は 「先人が思いついたけどあえてやらなかった」か「すでに失敗した」か
626 名前:デフォルトの名無しさん [2017/03/23(木) 19:36:15.02 ID:Un9Q+jtZ.net] Haskellみたいに極度に小さい記述で複雑なシステムが組めるのは確かに凄いんだよ あれはマジ使える、ただし誰にでも使えるものでは無い。 こういう物は、チーム作業には向かない。 少人数で高度なプログラミングをするのには向いているがね。 で、C#はHaskellみたいなアプリケーションを作るために開発されたものなのかというと、それは違う。 誰でも使えるBasicの延長線上のものだ。 TaskもWPFもHaskellみたいな超絶技巧を目指しているだな、そんなものは要求されていないのに。
627 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 19:37:49.41 ID:Ei+8urX3.net] >>595 あー、WPFのバインディングはこれを目指していたのか。 なるほど俺の要求だけならこれでいいわ。
628 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 19:39:47.03 ID:FkdET+B0.net] 不思議だな 新しい技術のおかげでプログラミングはますます簡単になってるのに まるで難しくなったような意見が出てくる
629 名前:デフォルトの名無しさん [2017/03/23(木) 19:40:57.33 ID:Un9Q+jtZ.net] 結局ね、マイクロソフトの技術者はコンセプトという物が理解できないバカの集団と化してしまったんだよ。 多分、社内政治とスタンドプレーの果てにこうなったんだろうなと。 だから、マイクロソフトは象牙の塔。 勉強しまくっているが自分のやっている事しか見えていない奴が音頭を取り始めてしまっている。
630 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 19:46:09.55 ID:J2eFkRx5.net] ほーん、で?いちいち同意求めんなカス 知恵袋で恋愛相談してるクソアマかテメー
631 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 19:57:59.50 ID:HovpjxiM.net] >>589 > UI側は、ロックして読み込み時点と現状が一致しているなら置換してアンロックそして処理終了。 一致してない時に再計算をする必要があるからその計算が軽い時に有効な方法 ちなみにバージョン管理システムでは他の人が変更してるからやり直せって言ったら使い物にならないのでいわゆるマージ処理を行うのでちょっと違う
632 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 20:26:39.42 ID:HovpjxiM.net] >>598 GUI 組んだことないのか? イベントってフレームワークからのアプリケーションの呼び出しだぞ あとロックするのは GUI のフレームワークじゃなくてア
633 名前:vリケーションの方 マルチスレッド化したフレームワークだとイベントっていつ発生するかわからないのでお前みたいなよくわかってない奴が組むとデッドロックを引き起こしたりしやすいって話 [] [ここ壊れてます]
634 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 20:27:34.06 ID:99dRkoLd.net] >>601 但しコレクションに関してはBindingOperations・・・のおまじないが必要だ
635 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 20:48:03.89 ID:Ei+8urX3.net] >>606 今時GUIしかやらんだろ。 が、まあこっちの認識がずれていたのは分かった。 >アプリケーションからGUIライブラリを呼んだり、 >GUIライブラリからアプリケーションをコールバックしたりと、 >双方向に呼び出すことが多く、 前者が「プログレスバーの更新」で、 後者が「 XXX.click += YYYY;」か。 確かに双方向だ。 で、ロックは必要か? プログレスバーの更新なんて、ロックする必要ないだろ。 他もそうだと思うが。
636 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 20:49:29.54 ID:30c+rZIc.net] >>606 具体的な最大の問題は、マルチスレッドアクセスを許容するとUIスレッド上で排他処理をしなきゃいけないことなんだよな UIスレッドは多種多様なタスクによってタイトに使い回されるので、それをブロックすることは容易にデッドロックを引き起こす UIスレッド上で別の処理Xが終わるのを待ってたら、XもUIスレッド上で呼び出される処理で いつまでもXが呼ばれなくなりデッドロック、というのはよくあるパターン
637 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 20:55:57.96 ID:30c+rZIc.net] >>608 そのプログレスバーの更新一つとっても中でどれだけ複雑なことをやっているかは君にも想像できるだろ? 君がロックしてるつもりがなくてもプログレスバーの更新処理を呼び出せば内部で当然ロックがかかる
638 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 21:00:57.40 ID:Ei+8urX3.net] >>609 普通に組んだらデッドロックはしなく無いか?例えば、 1. UI <- Task_thread_A で Aが止まる。 2. Task_thread_A <- Task_thread_B で Bが止まる、ここまではありがち。 3. Task_threadB <- UI :これはねーよ。 UIスレッドがTaskスレッドを見てロックするという使い方は普通しないだろ。
639 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 21:14:48.29 ID:Ei+8urX3.net] >>610 いや、ロックの必要はないだろ。 正確に言えば、外部からの明示的なロックが必要無いように作れば作れるだろ。 今そうなってないだけで。 要するにプログレスバーを UI, Task_thread_A, Task_thread_B の どこからも更新出来るようにしたいとして、 全部、 progressBar.value = x; と書かせろ、と言いたいだけで。 内部的に細かくロックして、順に処理するのはCLRが勝手にすればいい。 その結果、それぞれのスレッドが微妙にロックするのも仕方ない。 ただ、循環ロックにならない限り、デッドロックにはならないだろ。 そして普通に書けば、循環ロックにはならないだろ。
640 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 21:17:21.47 ID:5A+rvbXC.net] 独りで仕方ないと思って存分に射精してろハゲ
641 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 21:24:07.98 ID:NnBP2eXC.net] >>608 GUIしかやらない?どこの世界の話だよ
642 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 21:27:34.82 ID:VjAjr2s9.net] >>589 アトミックなデータでない限り、読み出しでロックが不要は誤り。 更新中の中途半端なデータが読みだされたらどうすんの。
643 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 21:30:44.46 ID:5A+rvbXC.net] 生兵法はケガの元だな 毛がなくて良かったね〜
644 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 21:32:55.65 ID:HovpjxiM.net] >>608 > あとロックするのは GUI のフレームワークじゃなくてアプリケーションの方 の意味を理解してないのかよ... そりゃ単純にプログレスバーに表示するぐらいなら問題は発生しないよ w 例えば複数の銀行口座の預金額を表示して振り込みを行うアプリケーションを作るとして 他の端末から入/出金があるのです定期的に預金額を更新しようとしたら各口座をロックして値を読み出してロック解除して画面を更新するだろ でないと額の不整合が起きるからな このロックして時に振り込みボタンが押されたら当然こっちも振り込み元と振込先の口座をロックしないとダメだろ でこのロックの順番がテレコになってたら簡単にデッドロックをするって訳 もちろんちゃんとロック順序を考えて組めばいいんだけどでかいシステムをよくわかってないドカタに組ま
645 名前:せることを考えたらわざわざそんな危険な構造にする意味がないってこと 前にも書いたけどUIなので超高速で画面のあちこちが更新できても意味ないしな [] [ここ壊れてます]
646 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 21:33:06.10 ID:0wLqn0eU.net] >>588 寝ぼけるのはいいかげんにしろ。
647 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 21:34:23.52 ID:5A+rvbXC.net] 3行以上はキチガイ
648 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 22:20:43.54 ID:ncdnXTN/.net] >>617 > 定期的に預金額を更新しようとしたら各口座をロックして値を読み出してロック解除して画面を更新するだろ そういう糞UIでもつくれるけど、まともだったらやらないよ・・・
649 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 23:30:21.13 ID:u0oYY3Ci.net] >>620 で、お前はどうやるんだい?
650 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 23:38:12.29 ID:uQaoHdGv.net] 普通は読みだす時はロックなんてしないよw 複数のデータの不整合が問題になる場合は微妙だけど、その場合でも 2回一致するまで読む方が低コスト
651 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 23:39:06.22 ID:uQaoHdGv.net] っていうか、何でこんなマルチスレッドの初歩みたいな話になってるの?w
652 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 23:47:48.47 ID:Ei+8urX3.net] てす
653 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 23:50:59.28 ID:Ei+8urX3.net] >>617 ちげーよ。まあ結論としては、簡単に出来るけどC#はやらなかった、というだけだ。 そして俺はこの選択は間違いだったと見るね。 実装例としては以下。(C#の文法は知らないので真似てみた。適宜脳内修正よろしく) //ここにコードを書いたのだが、403 Forbidden になるぜorz mutexを使う場合、mutex確保中に他ロックを取りに行かなければデッドロックはしない。 或いはthread_IDを付けておいて、UIなら直接変更、その他ならinvokeにしてもいい。 いずれにしても、ユーザー側にはinvokeが見えなくなる(隠蔽される) これの方が良かったと思うよ。いちいち混乱しなかった。 そちらの例は、2人のユーザ間でのデッドロックであって、 俺が今話しているUI/タスクスレッド間の例じゃないじゃん。 なお、解法は、普通に「両方取れなかった場合は一旦全部リリースしてリトライ」でいい。 ただし今時はそれはDB任せで、ユーザ側でのロック管理なんてしない(はず)
654 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 23:52:19.70 ID:FkdET+B0.net] スレ読み返すと細かいことはどうでもいいけどとにかくInvokeしたくないプロパティでアクセスさせろって暴れてる変な子が居るように読めるんだが Invokeを適当なプロパティでラップしろで終わる話じゃないのこれ?
655 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 23:53:41.78 ID:u0oYY3Ci.net] >>622 ケースバイケースだろ そもそも >>617 は説明のためのサンプルだから不満なら両方書き込みのケースを考えればいいだけ >>623 マルチスレッドGUIフレームワークに夢見てる奴がいるからでしょ w
656 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 23:54:44.80 ID:Ei+8urX3.net] >>626 その通りだ。そしてそのコードを貼ろうとしている。 つか、貼らなくても分かるんならもういいね。
657 名前:デフォルトの名無しさん mailto:sage [2017/03/23(木) 23:57:20.64 ID:u0oYY3Ci.net] >>625 > 俺が今話しているUI/タスクスレッド間の例じゃないじゃん。 そんなことを言ってるのお前だけ >>583 をちゃんと読み返せよ
658 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 00:00:02.01 ID:Lq7k+m1v.net] >>622 そんな力業してないでリーダー/ライターロック使いなよ。 比較のループとかデータ量次第ではCPUパワーの無駄遣いだろ。
659 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 00:07:18.67 ID:P/PrHj1p.net] 既製品に文句があるなら自分で作ってgithub これができないプログラマはいつまでも三流のまま コードを書き使ってもらい持論を証明するんだよ
660 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 00:13:35.16 ID:OAgok+ci.net] Windows Formsの場合は、単純にFormがActiveXコンテナになり得るから、 アパートメントの制限に対応するために用意された、実装上の都合による物だよ おそらく、ロックの問題ではなく リソースリークを根本的に解決する方法がないから用意された手続きなんだよ。 ラップして
661 名前:解決できると思うなら、それで良いんじゃないか [] [ここ壊れてます]
662 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 00:14:57.73 ID:gW3AbLz/.net] だからUIスレッドが気になるなら、wpfでMVVMやれば解決でしょうに
663 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 00:38:36.13 ID:9w5lj4S/.net] UWPで非同期メソッドとかTask使ってるけどすごい不毛。 非同期メソッドの完了を基本的にはawaitで待つから 非同期メソッドを複数回実行するような場合だと 全部同期呼び出しにして全部まとめてTask.Runしたい。
664 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 00:50:30.06 ID:RtKD05ZR.net] >>630 俺は622じゃないけど。 従来型のロック機構だとコストが高すぎる場合もあるんだよ。 俺は詳しくないけど、多分Erlangとかの世界で。 mutex等は共有メモリへの書き込みが生じるから実はかなり重い。
665 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 02:13:48.63 ID:5bMFJR3b.net] 馬鹿にマルチスレッド。
666 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 02:33:18.25 ID:99176uAd.net] 結局少しでも重たい処理は全部ワーカーにしなけりゃならないから UI弄る時だけInvokeした方が見通しすっきりするんだよねw async/awaitとか使うよりは ここがUIスレッドですってはっきりわかる。
667 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 02:44:50.15 ID:7cONiVN5.net] ここはまだWinFormsの時代かw
668 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 02:50:50.13 ID:99176uAd.net] WPF?誰が使うか そんなもんが必要なモバイルなら普通にJavaScriptにWebアプリで行くわって感じだねw
669 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 03:11:50.24 ID:m/Lurhmo.net] >>612 progressBar.Value+=1 としたときに 1.読み込み 2.加算して書き込み の処理が必要とすると、1と2の間に別スレッドが書き換えを行うことで結果が矛盾する Interlocked命令を使えばそれは防げるけど、MaxValueを超えないかとかの判定が入るので結局ロックが必要 この程度ならまだしも、裏でWin32やCOMを叩いてるコントロールはさらにややこしい
670 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 03:44:24.59 ID:5bMFJR3b.net] レベル低すぎて引くわ C#、LINQ、WPFが高速とか言ってたおれ最先端君が戻ってきたのか?
671 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 06:28:32.59 ID:Cpc8yNoh.net] 高速(で書ける)
672 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 07:23:36.10 ID:vGZXBTd1.net] 高速で壊れるの間違いだろ 馬鹿はphp書いてろ
673 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 07:56:00.46 ID:P/PrHj1p.net] >>640 壊れても遅くてもいいからとにかくプロパティで書きたいというのが要件
674 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 08:24:47.57 ID:gW3AbLz/.net] データの保証がないコントロールなど、標準品ではありえないから 頑張って作ってくれとしか言いようがないな
675 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 12:55:58.77 ID:99176uAd.net] >>645 横だけれど、そもそも問題としてValueをインクリメントする事自体が余り良くない考え方かもね。それは表示と処理が分離できていないから。 カウント処理のカウンターはUIがもっているべきじゃない。 別途カウンターを作って、結果だけをUIに代入すべきだ。 このように設計されているなら、破損無視で書き込んでもうまく動作するだろうと思う。 問題は、それをすべての人に要求するのは難しい、自分の忙しくなったらきちんとせずにインクリメントしてるしなw という事なんだな。
676 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 15:14:34.51 ID:suDsBIm1.net] やっとまともなやつ来た
677 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 16:13:38.13 ID:m/Lurhmo.net] >>646 今もそうなってるじゃん ProgressBarクラスがカウンターを持ってて、ネイティブのmsctls_progress32にメッセージを送って表示を更新してる ぜひスレッドセーフに再実装してみてくれ
678 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 18:30:43.13 ID:kZHdS/d5.net] >>646 > カウント処理のカウンターはUIがもっているべきじゃない。 そんな低レベルな話をしてるのは ID:Ei+8urX3 だけだから、お前らもうでてくるな
679 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 19:42:33.91 ID:RtKD05ZR.net] >>640 > 結局ロックが必要 いや、要らん。正確には、要らない組み方はある。 アトミックはデータを構造体にして参照を持つことで解決出来る。(一発ライト) レーシングはインミュータブルとCASで解決出来る。x86ならCMPXCHG命令。 具体的には以下。 1. まず有効な値かどうかを先に判定する。(これは今も先にやっているはず) 2. 書き換える場合、元データのポインタをローカルにまず確保する。 3. 上記旧ポインタから参照して、書き込むデータを new ProgressBarData() で新しく作る。(インミュータブル) 4. 本体のポインタをCAS命令(LOCK付き)で差し替える。 5. 失敗した場合は3からリトライする。(CAS命令の結果に最新ポインタが入っている) この方法だとメモリを余分に食うけど、ロックは要らなくなる。 (なおErlangは共有メモリ無しで全て通信という別解決方法だった) いずれにしても、やりようはあるんだよ。どこにコストを掛けるかという話で。 そもそもGUIなんてレーシングしても問題ないようにも組めるし。 (ProgressBar.value += なんて要らない。 = だけでも組める。>>646 に同意) その上で、invokeなんてユーザーに見せる必要あったのか?というのが疑問。 .NETはVC++でも使うから少しでも速い方がいいという需要もあるのかもしれんが、 C#のノリならここは隠蔽して欲しいところでしょ。GUIなんて極限まで速い意味はないし。 ラップしてもいいし、上記のようにロックフリーにしてもいい。 (もちろんユーザがやってもいいんだが、そういう言語じゃないでしょ) https://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3%E3%83%9A%E3%82%A2%E3%83%BB%E3%82%A2%E3%83%B3%E3%83%89%E3%83%BB%E3%82%B9%E3%83%AF%E3%83%83%E3%83%97 https://ja.wikipedia.org/wiki/Lock-free%E3%81%A8Wait-free%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0 つかいつからお前らこんなに馬鹿になったんだ?ふらっとから混ざったのか? ロックの設計の仕方を知らないのはお前ら全員じゃねーかよ。
680 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 19:51:21.19 ID:9LJ2CaVF.net] >>650 なーんかしょうもない話を延々続けて頭悪そうだけど、 特に理由がない限りわざわざスレッドセーフに作らないのはGUIに限らんって何度言えばわかるの? 馬鹿なのかほんと
681 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 19:54:06.25 ID:HsxCjAja.net] >>650 2と3もロックされなければ既に破棄され別の領域として 再利用された誤った情報を読み出す可能性があるだろ
682 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 19:54:24.48 ID:9VMQOfeX.net] MSにとっての実装コストの問題でもあるしな MSが苦労するのはいいとしても、その結果激増したバグに悩まされるのはお前らだぞ
683 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 20:07:48.70 ID:RtKD05ZR.net] >>651 お前がinvokeをウザイと思わなければそれでいい。 俺はinvokeをウザイと思うからMSが隠蔽しとけ、と思う。 多分後者の方が多いだろ、この件に関しては。 >>652 ついにC#がGC言語だと知らない奴も出てきたか、、、 >>653 MSはこの程度ならきっちり実装出来るよ。 というかMSって比較的まともだと思うぞ。
684 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 20:09:50.64 ID:UKoqSEXl.net] BeginInvokeはどうするの?
685 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 20:15:53.11 ID:RtKD05ZR.net] というかここでも単発は池沼なんだな。 いちいち言ってることがアレだし。
686 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 20:24:26.17 ID:RtKD05ZR.net] つかまあ、百歩譲って他のコントロールならいいよ。 ただ、ProgressBarなんてどう考えてもタスクスレッドから書き換えられるのが仕様だろ。 (むしろUIスレッドから書き換えることがない) それをいちいちinvokeはねーだろ。 せめてProgressBarだけでも対応しとけよと思うだろ普通。
687 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 20:27:59.45 ID:9LJ2CaVF.net] >>656 アレなのはお前だよ馬鹿... しかも重症のな。 何度も言うけど、こんなのはweb上にあるようなマルチスレッドの入門記事レベルの話だ。 そもそもスレッドセーフってどういうことなのかすら理解してないし、自分でそういうコードを書いたこともないだろお前。 しかし、
688 名前:こういう馬鹿に限って偉そうなのは何なのかね [] [ここ壊れてます]
689 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 20:32:42.95 ID:RtKD05ZR.net] 皆さん、今からスレッドセーフ大先生の講義が始まります。ご静聴下さい。 ではよろしく>>658
690 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 20:57:32.53 ID:UKoqSEXl.net] >せめてProgressBarだけでも対応しとけよと思うだろ普通。 ProgressBarを対応させたら○○も対応させろとか言い出す人が出ると思うでしょ普通
691 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 21:56:51.21 ID:vGZXBTd1.net] 馬鹿+偉そうときたから例外を握りつぶすニキだな
692 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 22:04:34.44 ID:vGZXBTd1.net] ああでも今回はさすがにClickOnceは危険ニキを支持だな >MSならこの程度はきっちり実装出来る ここが一番面白かった
693 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 22:13:22.45 ID:RtKD05ZR.net] つまり、俺が言いたいのは、以下ね。 >>559 > invokeってフォームに限ってどうして必要なのですか? 老害: それがしきたり。 ゆとり池沼連呼リアン>>658 : スレッドセーフ!スレッドセーフ! 俺: MSが馬鹿だから。 ゆとりって連呼リアン程度の知能しかないよなマジで。 そもそも俺の>>650 は>>589 (俺ではない)とほぼ同じ内容だぞ。 お前ら馬鹿が付いて来れてないから書き直しただけでね。 お前らが589を最初から理解していればもっとマシな議論だったろうさ。
694 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 22:24:18.31 ID:9LJ2CaVF.net] だからスレッドセーフじゃないのはControlのメンバだけじゃないって言ってるのに懲りない奴だな 馬鹿なのはMSじゃなくてお前だっての馬鹿
695 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 22:36:30.53 ID:9LJ2CaVF.net] Control「だけ」がメンバをUIスレッドからしか呼べないとか訳の分からん錯覚をしているのは、 Controlのメンバが非ユーザーコードからも呼ばれることを理解してないからだろうなたぶん
696 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 22:41:45.59 ID:RtKD05ZR.net] スレッドセーフ君はやはり連呼リアンであったか、、、 お前がそう思うんなら(ry
697 名前:デフォルトの名無しさん mailto:sage [2017/03/24(金) 22:42:26.38 ID:9LJ2CaVF.net] 馬鹿な上にネトウヨって人生終わってるな
698 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 01:12:27.10 ID:66tFvNtY.net] >>657 こんなもんで余計なパフォーマンス食われるのも嫌な感じだしね スレッド無視で叩きこめるならその方がありがたい物ではある。 インクリメント問題くらいならこっちで対処するわって感じですな。
699 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 01:17:38.46 ID:66tFvNtY.net] ああ、そういえば高負荷バックグラウンドスレッドで progreassBarの操作をasync/awaitでブチかましてスレッドプール爆発させてた新人いたな(笑) 凄い困ってたけど、きっと何が何だか分からなかったんだろうな。
700 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 01:39:16.42 ID:O6oCv4KM.net] >>668 そもそもコードの設計論から言ってもワーカースレッドからUIを操作するなんてありえない。 UIに依存するモデルってどんな糞設計だよ。 モデルにSynchronizationContextとか持たせてUIスレッドに同期したイベントで通知させるのは 設計としてありだけど、直接コントロールをいじるとかありえん。 それも気に入らないならUI側が能動的にタイマーでも使ってモデル側を読めばいいだけ。
701 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 04:16:02.72 ID:++OH//Pd.net] VB上がりにモデルなんて概念ないからw
702 名前:デフォルトの名無しさん [2017/03/25(土) 09:54:01.33 ID:QDpQza6M.net] .NETの質問したいんですがここで大丈夫でしょうか? とりあえずします。 PictureBoxのPaintイベントでImageプロパティを再設定する処理などをしてるんですが どうもMessageBoxの挙動がおかしくなってます。 フォームより後ろに表示されてしまって操作不能になってます。 とりあえず通常のメッセージボックスの場合はパラメータを弄って強制的に全面に表示させてますが 困るがSaveFileDialogなどで上書き確認のメッセージボックスが表示された時です。 この場合も後ろに表示されてしまって操作できない
703 名前:のでどうしようもないです。 これを回避する方法はどうやればよいんでしょうか? Paintイベントの中身を消去すれば普通に表示されますが出来ればそのままでメッセージボックスも前面に表示させたいです。 [] [ここ壊れてます]
704 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 09:57:11.64 ID:iGx2aDuI.net] Paintイベント内の処理がおかしいんだろ 俺たちはエスパーじゃないんだから、まずそれがどんなコードか教えてくれよ
705 名前:672 mailto:sage [2017/03/25(土) 09:57:40.89 ID:QDpQza6M.net] すいません。自己解決しました。 Paintイベントで毎回PictureBoxのImageプロパティを再設定してるのが原因でした 下記のように条件を入れてやるだけで回避できました。 if(pic.Image != img){ … }
706 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 09:59:45.97 ID:swqPfyBg.net] だと思った
707 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 10:45:00.80 ID:omxknQTj.net] DataReaderを使って while(await ReadAsync().ConfigureAwait(false)) { ... } って書いてるライブラリがあるんだけど 件数が多くなりそうなループでasync/awaitするとタスク生成とコンテキスト切り替えのオーバーヘッドで逆にパフォーマンス悪くなったりしないもんなの?
708 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 11:08:32.17 ID:oe75j5bC.net] >>676 ReadAsync使う時点でそれらよりデータソース読み取りの方がコスト大と作者が判断しているんじゃないかね MemoryStreamに対してReadAsyncとか使っているなら知らんけど
709 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 11:09:13.59 ID:kGpqWpaU.net] >>676 そりゃ呼び出しのオーバーヘッドは増えるだろうけど、それが問題になるかどうかは別だ パフォーマンスという言葉を安易に使うのはやめよう 君はバッチ処理をしてるのかオンライン処理をしてるのかストリーミング処理をしてるのか、 そのライブラリの方はどういう使われ方を想定してるのか、 処理の規模はどれくらいか パフォーマンスってのは結果的に目的をどれだけうまく達成できたかであり、一面だけを見て判断できるものじゃない
710 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 11:11:43.78 ID:2T3avjLL.net] パフォーマンスって何を指してるんだ 処理速度出すためにasync/await使うわけじゃないのは理解しているよな?
711 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 11:13:12.94 ID:2T3avjLL.net] 具体的に何を指すんだと問い詰めたい単語 パフォーマンス スマート
712 名前:デフォルトの名無しさん [2017/03/25(土) 12:12:06.97 ID:AJzcpICN.net] 話題が長引いても安心な匿名掲示板「Anontown」 [無断転載禁止]?2ch.net echo.2ch.net/test/read.cgi/tech/1490366833/
713 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 13:35:04.97 ID:66tFvNtY.net] >>671 とりあえず動くもの作るからな、クリックして必要な事をかける構造になっている以上 次に起こる事は、必然的にスレッドプール爆発なんだわw
714 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 14:21:07.83 ID:pA2Zx06R.net] 馬鹿がプログラムを書かなければ解決
715 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 14:49:04.12 ID:66tFvNtY.net] そういうヤツはHaskellでもやってろって話だよ C#はそういう言語じゃない
716 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 15:02:20.11 ID:OnvCww5G.net] 勝手にそういう言語とか決めないで欲しいな 糞袋の観測範囲で
717 名前:デフォルトの名無しさん [2017/03/25(土) 17:12:28.65 ID:P4wL6N6L.net] webbrowserのdocumenttextでhtmlを文字列で直接埋め込みたいんですが ローカルに設置したcssやjsファイルを読み込む方法がわかりません。 どこに配置してどのように読み込めば良いか ご存じの方教えていただけますでしょうか? どうぞよろしくお願いします。
718 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 18:18:23.98 ID:gz8AHGhh.net] Data URIスキームで埋め込むとか
719 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 00:26:03.65 ID:b1vqxh2T.net] HaskellといえばAI。つまりそういうこと。
720 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 11:09:36.56 ID:WUrKAJma.net] こんな感じか? livedoor.blogimg.jp/lad
721 名前:ymatome/imgs/7/6/76ec3c1e.jpg [] [ここ壊れてます]
722 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 12:41:56.97 ID:Uwt+/Suh.net] >>670-671 釣りか?マジで言ってるのなら お前ら別の意味でのスタティックおじさんになってるぞ。 まあC#erなんてそんなもんだと今回思い知ったが。
723 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 13:20:23.73 ID:x9SVAeuT.net] progressbarなど、多くても100回程度書き換えれば充分なわけで たかが100回のUIスレッド切り替えでオーバーヘッドとか笑っちまうな スレッドを無視するより書き換え回数減らしたほうが余程生産的だし簡単だ
724 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 13:20:26.49 ID:hVl7ZVni.net] >>690 そもそも今時Windowsのデスクトップアプリなんか作ってる時点で スタティックおじさんであることを自覚したほうがいいよ
725 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 13:24:42.49 ID:TjDGXANh.net] 暴論w
726 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 13:28:02.28 ID:WQ8v1gdY.net] みんなコード書くよりレッテル貼りの方が得意なんだな
727 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 13:48:27.23 ID:7xcWRiGy.net] プログレスバーはカウントアップが面倒なのかいつからかグルグルするモードがついたね ハングアップしてないかわかればまぁいいんでそればかりつかってる
728 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 13:59:10.19 ID:TjDGXANh.net] いつ終わるか分からない処理もあるから。
729 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 14:02:35.77 ID:Lixhnbpu.net] >>695 それ追加されたの.Net2.0だから10年以上前だよ
730 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 14:03:21.73 ID:xbLciI4B.net] 鬱陶しいから来週まで続けるなよ でないとこのスレ埋め立てるからな
731 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 14:13:37.56 ID:Lixhnbpu.net] 4月1日までか…長いな
732 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 14:19:29.01 ID:Uwt+/Suh.net] つかお前ら落ち着けw 俺は>>650 だよ。そして>>640 含むお前ら大多数よりは賢いことはもう示したろ。 で、>>670-671 も同様にアホっぽく見える。 しかしマジでそう思っているのなら、それを示せば多少は教えてやるよ、ということだ。 何か最近、煽ったりカニンガムの法則を試しているような奴も多いんでね。 それに付き合わされるのはウザイ。 俺の意見は ID:Un9Q+jtZ とは完全には一致はしないが、 6割くらいは一致するし、彼が何を言いたいのかは分かる。 既に言ったとおり、650も>>589 の代弁に近い訳でね。 お前らは>>597 (重ねて言うが俺ではない)の意味を理解出来ていないように見える。 そこでお題を出してやる。 これをお前ら流の「美しい実装」をする方法を述べてみろ。 駄目出ししてやるよ。 フーリエ変換をする関数 calc_FFT があって、 計算に時間がかかるので、プログレスバーに進捗状況を表示したい。 参加する人はどうぞ。
733 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 14:24:02.60 ID:13fTqv5I.net] >>700 まだやる気かよ。 だからねえ、そういうのは>>670 に書いた2つのやり方のどちらかを選択するのが普通。 どんな方法論を取るにしろ、モデル側から直接UI部品をいじるとかありえない。 依存方向は一方通行にするなんて基本中の基本だろ
734 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 14:32:06.72 ID:13fTqv5I.net] この元の話題、つまりUI部品のメンバーがUIスレッドからしかアクセスできないように なっているのは不合理かどうかって話も、はっきりいって問題提起した奴が何も分かってない馬鹿なだけ。 こういう仕様は十分に合理的。
735 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 14:55:35.58 ID:V5FfYo93.net] だからVB上がりにモデルなんて概念はないって言ってんだろが 通じない話を繰り返すな 壊れて向きが変わらなくなったチョロQかテメー
736 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 15:00:04.71 ID:7VPGG3Vy.net] モデル概念
737 名前:知らないおじさんや初心者以前に エキスパートからしてみてもC#を使いたい動機は素早く手軽に組みたいという動機にあるからね。 時間をかけてガチガチにやらないかぎり上手くいかないとか、それは勘弁願い下げたよな。 [] [ここ壊れてます]
738 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 15:09:11.18 ID:N/oWszN2.net] うぇーゴミ虫の狭い観測範囲で勝手にC#ユーザーの動機を定めちゃう? いくら寛容な人間様でも下等生物と一緒にされるんでは不愉快ですわ
739 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 15:14:26.60 ID:7VPGG3Vy.net] お気に召さなければC++でも使ってみたらどうよ? templateメタプログラミングならなんでもお望みの書き方でできるよ。
740 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 15:37:28.26 ID:Uwt+/Suh.net] ちなみに、回答は後日ね。 こういうのは急いで出来る必要はないから、じっくり考えてみてよ。 当たり前だが俺は>>670-671 よりもマシな解決方法を持っている(つもり) >>701 採点結果: スタティックゆとり乙 君はどういう依存が悪いのかを理解出来ていない。 そしておそらくUIはスタティックだと信じている。 ただしMSも同様に馬鹿だった。だからFormは糞なのも事実。 しかし世の中には他の実装方法もあるって事さ。 君達がロックフリーの世界を知らなかったようにね。 ヒントとしては、 > どちらかを選択する ここが間違っている。 何通りも用意するとか、ラップして変換するとかは、明らかに無駄だよね。
741 名前:デフォルトの名無しさん [2017/03/26(日) 15:46:45.12 ID:bdiJ1zQR.net] >壊れて向きが変わらなくなったチョロQかテメー 斬新な煽り方だなw
742 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 16:30:36.77 ID:E6fNHh8L.net] ネトウヨとかもそうだけど、頭悪い奴に限って、 「この俺だけが世の中の真実に覚醒した!!!この世は嘘と欺瞞にまみれていて(笑) 俺以外の連中は馬鹿ばかりだ!!!」 ってなるのは何なのかね。 まあ2chにはこういう単細胞で自分を客観的に見られない奴いっぱいいるけど、 >>707 みたいにそういうタイプはプログラマとか知的な仕事についてはいけない人だよな本来
743 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 16:33:32.75 ID:7VPGG3Vy.net] 彼が相手している誰かさんの方がむしろヤバイという客観的印象ありなんですけどねw
744 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 17:00:26.56 ID:nZrkbKSG.net] ロックフリーおじさんはスタティックおじさんを馬鹿にできんだろ ○○おじさんが馬鹿にされる本質は金のハンマー信仰にあるのだから
745 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 17:09:41.70 ID:E6fNHh8L.net] 銀の弾丸を求める者は少なくとも倒すべき「怪物」の存在には気が付いているが、 彼はそのレベルにすら達してないよたぶん。 背後にあるトレードオフに気が付かないから不条理でないものが不条理に見えてしまう 自分の馬鹿さ加減を自覚できないだけ
746 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 18:57:25.59 ID:iTS+fWTZ.net] >>700 ダメ出しなんて要らん どや顔で語りたいならぐうの音もでない実装を晒しやがれ
747 名前:デフォルトの名無しさん [2017/03/26(日) 19:11:26.31 ID:iZtP8D0n.net] 初歩的な内容ですが。 RxのISchedulerインターフェースを実装したいのですが、ScheduleメソッドのDateTimeOffsetを引数にとるオーバーロードとTimeSpanを引数にとるオーバーロードって どのように実装すればいいのですか。 本家Rx.NETのリポジトリにあるコードをいくつか見ましたが、 なんとなく、指定された時間の分だけ遅延させて デリゲートをInvokeさせるというのは分かりましたが、この2つのオーバーロードの具体的な実装方法を文章で書いてあるところを教えてください。 あと、戻り値がIDisposableなんですけど、これはスケジュールの解除を行うDisposableでいいですよね。
748 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 20:02:08.99 ID:YTmW3NMW.net] >>707 利根川さんきたーーーーw
749 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 20:06:43.37 ID:Uwt+/Suh.net] >>713 俺は語りたいわけじゃない。 だから君の意見を尊重して、俺の答えは書かないことにするよ。 君らは一生馬鹿なままで過ごせばいい。 C#にとどまっている限り、回りもみんな馬鹿だから、ばれないで済むだろう。 ただ、知っている奴が見たら、お前らは本当に間抜けなことをしている。 だけど、そういうのは自分でいろいろ考えないと身につかないんだよ。 だから自助努力する奴に対してはサポートしてやろうとしただけ。 とはいえ、俺の案も他言語では普通に使われる手だから、探せば出てくるはず。 それは君たちで探すんだね。 俺はくだらない煽りには本当に辟易している。 そのエネルギーは正しくプラスの方向に使うべきだよ。 マイナス方向に使って煽るのではなくてね。 君は何がしたかったんだ? 俺の面目を潰したかったのなら、俺より素晴らしい実装を先に言ってしまえばよかっただろ? 或いは他の人から、もっと素晴らしい実装が出てきたら、君にも糧になっただろ? そうやってプラスの方向にお互いに高めていくべきなんだよ。 それを、「じゃあ教えてやらない」と言われる話の振り方をしてしまうから、 ゆとりはゆとりのままなんだよ。 聞くは一時の恥、聞かぬは一生の恥、だよ。 こんな匿名のところですら面子を重視しているうちは一生ゆとりだよ。
750 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 20:09:36.55 ID:XWnO8Cg2.net] めっちゃ早口で言ってそう
751 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 20:52:30.96 ID:iTS+fWTZ.net] なぜかバカって無駄な長文書くんだよな こういう奴が書くコードも推して知るべしなんだろうな w
752 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 21:11:54.02 ID:DeCVSWGu.net] そういうのも馬鹿っぽいよ。中学生か。 問題なのは言ってることが正しいかどうか、それだけ。 長文かどうかなんてそれとまったく関係がない。 彼はトンチンカンな勘違いをしてるから馬鹿にされてるだけ。
753 名前:デフォルトの名無しさん mailto:sage [2017/03/27(月) 00:01:17.74 ID:rNkb8v7V.net] 日本語理解できないアホ? 頓珍漢なこと書く奴ってたいてい長文だろって話だぞ
754 名前:デフォルトの名無しさん mailto:sage [2017/03/27(月) 00:14:45.53 ID:qUMQbQ0X.net] 馬鹿な奴だ。 馬鹿の世界ではきっとすべての事柄が三行以内の短文で表現できることになってるんだろうね。 己の無学を語るに落ちてるな
755 名前:デフォルトの名無しさん mailto:sage [2017/03/27(月) 00:18:01.70 ID:rNkb8v7V.net] 誰もまともなこと書く奴が長文ではないって言ってないんだが w 逆とか裏とかを理解してないのってプログラマーとして致命的じゃね?
756 名前:デフォルトの名無しさん mailto:sage [2017/03/27(月) 00:19:42.90 ID:wneB9bMR.net] じゃあ一行で。スレタイ読め。
757 名前:デフォルトの名無しさん mailto:sage [2017/03/27(月) 04:02:24.71 ID:UZsp8jX5.net] >>716 せっかくなので教えて欲しい ちょっと考えたけど、やっぱりMaximumとMinimumがValueの変換中に変わるときとかが結構めんどくさい あと、オーナードローや継承が安全にできることも必要か プログレスバーのValueだけどかならともかく、コントロール全部をスレッドセーフにとかは非現実的なんじゃないか? 実際近年やってるところは少し調べた限り無いし
758 名前:デフォルトの名無しさん [2017/03/27(月) 04:51:00.01 ID:FSqhbRGK.net] >>714 誰も触れてくれなくて草
759 名前:デフォルトの名無しさん mailto:sage [2017/03/27(月) 05:02:30.31 ID:rNkb8v7V.net] >>723 >>700 に言えよ w
760 名前:デフォルトの名無しさん mailto:sage [2017/03/27(月) 14:11:21.66 ID:H4MLQPNT.net] >>725 まあ正直今時Rxかよwwwwww と草生えるからな 保守案件かも知らんが御愁傷様だ
761 名前:デフォルトの名無しさん mailto:sage [2017/03/27(月) 15:09:08.98 ID:OggmZorO.net] そもそもRxって今は.NETの一部じゃなくてサード扱いだからな 知ってるのが当然みたいに言われても困る .NET Fx以外の個別のライブラリについてはスレ違い
762 名前:デフォルトの名無しさん mailto:sage [2017/03/27(月) 22:59:41.60 ID:ty5ByWfa.net] >>690 スタティックおじさんって誰よ?
763 名前:デフォルトの名無しさん mailto:sage [2017/03/27(月) 23:14:42.86 ID:53TkDvRN.net] スタティックジジバンドのリーダーだよ 知らなかったのか
764 名前:デフォルトの名無しさん mailto:sage [2017/03/27(月) 23:28:21.19 ID:c1Kh3EUH.net] もう今ならスタティックの悪い使い方を知ってるほうがおじさんな気がする……
765 名前:デフォルトの名無しさん mailto:sage [2017/03/27(月) 23:52:27.87 ID:dYBhOZra.net] 性的
766 名前:デフォルトの名無しさん [2017/03/28(火) 07:20:39.72 ID:1WRXezaS.net] >>712 不二痛のノンプログラミングツールの 販促で 銀の弾丸を求めて とか 書いてあったの思い出した あんな大手企業がスゲー認識してるなと思った
767 名前:デフォルトの名無しさん [2017/03/28(火) 08:08:28.90 ID:W2JaqSVc.net] ラズパイでMVCのwebアプリって動かせますか?
768 名前:デフォルトの名無しさん mailto:sage [2017/03/28(火) 16:32:12.10 ID:WR7Bj+dr.net] Windowsがまともに動きゃ動くだろ
769 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 00:54:43.35 ID:8DsEMtOy.net] .NET CoreならWindowsじゃなくても動くんじゃね
770 名前:デフォルトの名無しさん [2017/03/30(木) 01:35:10.25 ID:DtnWdi8P.net] ARMで動くのか?
771 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 01:58:32.69 ID:Qg6ZUcGU.net] Formのコントロールのイベントに紐づけしたFormのメソッドって Formが閉じられた後も紐づけしたままだとお漏らしになるんだっけ?
772 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 02:50:16.54 ID:DVY8Bk9i.net] >>737 動くよ、ググってみ
773 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 06:49:49.86 ID:U97Tvha+.net] >>738 ならない
774 名前:デフォルトの名無しさん [2017/03/31(金) 09:35:08.92 ID:YcsHI68o.net] UI AutomationでVB6で書かれたレガシーなアプリのUIテストをしたいのですが、 操作したいコントロールの多くに一意のAutomatinIDが割り当てられていません。多くのコントロールのIDが1や2になっています。 一応、コントロールの順番が変わらないものと決め打ちして操作したいコントロールを特定することは可能なのですが、不便です。 もっとうまいやり方ってありますか? 後は表示位置を元に特定するくらいしか思いつかないのですが。 AutomationIDって、少なくともVB6では自分で設定できないのでしょうか。 一応このレガシーアプリのソースコードはあり、編集も可能なのですが、 AutomationIDというのを設定するところは見当たりません。
775 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 14:28:02.89 ID:gIiQslt6.net] スレチ
776 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 19:34:04.77 ID:BtloYTx6.net] ASP.NET MVCなんですが DBに処理対象データがあるか確認 __ある場合:メッセージボックス(*件処理します。処理を続けますか?) ____はいの場合:データ更新処理 ____いいえの場合:なにもしない __ない場合:メッセージボックス(データがありません) こういう処理を非同期リクエストを使わずに実装したいのですがどうすればいいでしょうか 入力フォームの内容もクリアされないようにしたいです
777 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 19:36:51.55 ID:kI20EOUu.net] 簡単だよ
778 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 20:45:16.64 ID:BtloYTx6.net] >>744 教えてください お願いします!
779 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 21:59:00.75 ID:wAJQEnGm.net] なぜそんなことを他人に聞かないとわからないのかわからない。
780 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 22:08:53.88 ID:PPRsLJ2Y.net] >>740 遅くなったけどありがとう やっぱりそうか
781 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 22:10:11.37 ID:9w4qNkVe.net] >>743 正直おまえキモイ
782 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 22:38:20.66 ID:BKtRT3pJ.net] >>743 フォームの入力内容を書き戻すのに加えて、確認中であることを示す値を入れたhiddenフィールドと $(function() { if (confirm(msg)) $("#form").submit(); }); みたいなスタートアップのスクリプトを仕込んで返せばいいんじゃないの 俺ならこんな汚物を出してきたら差し戻してAJAXで書き直させるけど
783 名前:デフォルトの名無しさん mailto:sage [2017/04/01(土) 19:08:34.68 ID:iJwskPQ3.net] while(true) { Console.Out.WriteLine("氏ね"); }
784 名前:デフォルトの名無しさん mailto:sage [2017/04/01(土) 19:15:59.90 ID:4r7Zvrb2.net] 標準出力とか久々に見たわ
785 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 13:09:41.47 ID:sZC7W3vJ.net] aspでviewだけをデザイナーに触らせたいんだけどどうすればいいの? view以外(controllerとか)のソースを弄られたくないし見せたくもない
786 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 13:48:10.33 ID:YcnJ2dMt.net] フォルダにアクセス権限でも付けとけや スレ違い
787 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 14:12:13.73 ID:sZC7W3vJ.net] こういうプロジェクトの共有(共同開発)は出来ないのですか?
788 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 14:18:51.99 ID:G0J69e58.net] 普通にできるが
789 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 15:39:57.58 ID:sZC7W3vJ.net] 普通にはできませんでした
790 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 19:12:16.74 ID:zJguOVHN.net] >>752 それならREST APIで良いんじゃないか RazorというかサーバーサイドのHTMLテンプレートはもう時代遅れだから思い切って捨ててしまえ
791 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 20:15:16.37 ID:YcnJ2dMt.net] WebAPIを使った動的ページの開発ができる有能なデザイナならソース隠す必要ないだろ むしろバックエンドも含めて全部そいつ一人に作らせた方が早いんじゃないか
792 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 20:38:02.81 ID:DvppQH2R.net] わろたw ビューのソースファイルだけ渡してデバッグできない状態で作らせるか テンプレート関連の読み込み処理を自前にするしかないだろうな もともとc#のtemplate使ってるから自前もわりと簡単だよ
793 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 22:10:44.51 ID:zJguOVHN.net] 冷静になって考えるとモックコントローラー作るだけだったわ
794 名前:デフォルトの名無しさん mailto:sage [2017/04/11(火) 23:45:38.38 ID:f9LqqWjR.net] バイト配列を並列で0クリアしようと思ったんだが、なんかほぼ変わらない なにか間違ってるんだろうか? 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); }
795 名前:デフォルトの名無しさん mailto:sage [2017/04/11(火) 23:59:42.35 ID:WDRtNXIn.net] >>761 なんでそんなクソ遠回りなことやってんのか知らんが Taskでパラレルやるなら引数渡せ
796 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 00:22:54.01 ID:QhQPiH2H.net] >>761 少し考え違いをしていると思う、並列処理は分割すればするだけ速くなるような代物じゃないし 粒度が細かすぎる、Taskは並列というより並行処理向け。同配列に対する処理などはCPUよりGPGPU向き ―だがそれより何より
797 名前:、その計測された時間のほとんどは配列生成と乱数格納に費やした時間だ [] [ここ壊れてます]
798 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 00:52:15.63 ID:PvBuykCK.net] 毎度思うけど命令口調のバカ何なのかねw
799 名前:761 mailto:sage [2017/04/12(水) 02:52:03.74 ID:E1U6B9R0.net] >>762 Parallel 使えってことかな? >>763 あ、乱数生成の時間まで入れてたのか でも乱数生成分入れないようにしても、どっちも同じような時間なのは変わらない バイト配列キャッシュ作ってるんだけど、1GBぐらいの超巨大配列の初期化に Task の生成や切り替えに数msec使っても、効果があると思ったんだ 分割すればするほど速くなるとは思ってないけど、 2分割程度なら速くなって当然と思ってるんだけど
800 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 03:38:43.21 ID:QhQPiH2H.net] >>765 オーバーヘッドはご存じか、C#の場合はネイティブスレッドのそれほどでも無いだろうけど ただ…結局この場合だと演算が皆無でメモリストアに割食って無意味って所だろうか(範囲が被るほど速い
801 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 06:57:20.84 ID:uWep8obc.net] メモリーアクセスがボトルネックになってるだけじゃねーの?
802 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 07:57:27.76 ID:A6XRqe5e.net] 常識的に考えて、ボトルネックはNextBytesじゃないかなw
803 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 11:23:50.73 ID:E1U6B9R0.net] >>766 , 767 なるほどメモリアクセスかー Taskの切り替えや待ち時間などのオーバーヘッドはご存知よ 書いたとおり、Taskをふたつ待つ程度のオーバーヘッドは数msec NextBytesを計測から外し、1GBで0クリアを試してみたら、150msec前後かかった レートだと 6700MB/sec ぐらい 実行環境は DDR3-1333 なんだけど、理論値 10667MB/sec 途中GC入ってたし、こんなもんかー
804 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 11:40:08.42 ID:7YKbJJVc.net] byte(IntPtrじゃない)の配列のアクセスでそんなにHWの理論値に近い数字が 出る訳ないと思うよw っていうか理論値はあくまで純粋にHWの転送能力であってCPUが介在する場合は そんな値絶対出ないし 測定値、計算のどちらかまたは両方が間違いなく間違ってるw
805 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 12:09:07.27 ID:E1U6B9R0.net] >> 770 Array.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割なら測定値、計算ともに妥当じゃない?
806 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 13:46:41.47 ID:PeioJu3J.net] (byte配列ならnewした時点で既定値(則ち0)で埋められてるだろ、と言ったらあかんのか?)
807 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 14:05:20.61 ID:OIzgc8H/.net] >>772 そりゃ実験のためのコードだからね 何のためにこんなこと試すのかわかんないけど
808 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 14:11:16.09 ID:E1U6B9R0.net] >>772 LOH(約85000バイト以上のオブジェクト)は仮想メモリ空間のフラグメンテーションを発生させるので、 OutOfMemoryException が発生しやすくなる 巨大バッファをガンガン使いまわすアプリは OOMを防ぐため、 バッファをキャッシュして使いまわす必要があったのね んで、キャッシュしてたバッファを使うときに高速
809 名前:ノ0クリアしたいってのが、今回の大元でした [] [ここ壊れてます]
810 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 18:50:16.39 ID:IE9Tc5o9.net] 配列のメモリークリアみたいな物はマルチスレッド化しても高速化しないだろうね 原理的にサイズが大きくても高速化しないと思われる
811 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 19:03:44.50 ID:0XMPUeTg.net] 15年前のシングルコアのプロセッサーが当たり前の時代ならその通りだけど、 今日的にはそんなこともないんじゃないの? たとえ物理メモリーは排他的にしかアクセスできない制約があるにしろ、 並列化の効用がまったくないとも思えん
812 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 19:08:41.74 ID:giyYheDf.net] むしろCPUキャッシュに左右されんじゃねのか 環境でばらつきまくって計測の意味もなさげ
813 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 19:51:51.86 ID:QhQPiH2H.net] とりあえずWindowsマシン@4.6.2で色々試してみたら [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だとどれも誤差レベル
814 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 21:18:24.58 ID:u533e0uw.net] >>776 ほとんどメモリーアクセスしかないのに高速化できるわけないだろ
815 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 21:45:31.51 ID:0XMPUeTg.net] >>779 高級言語のコード上はそうでもCPUの実際の動作はそうじゃないよw
816 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 21:56:27.84 ID:5KMe1hi6.net] どう動いてるんだ?
817 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 23:32:44.30 ID:7AJloho+.net] >>780 はあ? メモリーアクセス以外のどんな動作があるんだよ w
818 名前:デフォルトの名無しさん mailto:sage [2017/04/12(水) 23:49:21.06 ID:fn4L3E2o.net] 仕組み判らないけどメモリをキャッシュしてる場合 同じキャッシュ単位内に同時に書き込みできるものなのか?
819 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 00:14:45.08 ID:Vv6BlwOK.net] 使うときに必要な分だけ0クリアじゃだめなんか?大量にバッファを0クリアする場面が思い付かん。
820 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 00:38:14.37 ID:px7lD0L1.net] >>782 DMAでも使ってない限り、少なくともポインタのインクリメントとループの終了条件のチェックは入る
821 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 00:57:14.48 ID:G9tlFT6D.net] >>785 x86にはストリング命令というチートが有ってだな
822 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 01:07:16.95 ID:px7lD0L1.net] あ、ポインタは自動インクリメント付きの命令が使えるかも
823 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 01:22:49.09 ID:sVC5qkLg.net] >>784 つ GC >>783 Core i7 2600 4Core Sandy Bridge とかだと、CPU-Z とかのツールで見てみると L3 キャッシュまで搭載していて、 ・L2 は 256KB が 4コア分 ・L3 は 8MBひとつ なので、L2間でコア間のキャッシュコヒーレンシ(一貫性)を解決してるはず キャッシュライン(64Byte)ごとに他のコアで書き込みがあるかとかをチェックしてる 同時の書き込みもちゃんと検知されている キャッシュラインで競合すると書き戻しとかが発生するので、 重ならないようにするのがいいらしい
824 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 01:23:52.75 ID:DHabuNl5.net] そもそもrep stosb云々とか以前に、命令のクロックサイクルなんかより メモリレイテンシがデカすぎて取るに足らないって事よ、コヒーレンシの実装にも左右されそうだし 1つのバカでかいバッファより、バッファ自体を分割したほうが良いんでないか
825 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 01:44:29.44 ID:G9tlFT6D.net] スレッドをいくつ作ろうが、単純な0クリアだからキャッシュ内のメモリーを処理する速度がキャッシュとメモリーの転送速度より早くなり CPUはキャッシュが満たされるのを待つ必要があるから頭打ちになるってことかね
826 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 03:28:18.29 ID:NHsAQDrp.net] WinFormsはif文やっと覚えましたってレベルでも 有名なサイトのコピペで目的のもの作れたが WPFはデリゲートや非同期を熟知してないと一歩も進めない感じ コピペしたくても自由度が高く手法が多すぎて無理
827 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 05:44:30.50 ID:FNNFGlTu.net] 今のCPUなら1CPUでも、連続0書き込みなんかしたらメモリーの速度を圧倒してしまうからな マルチスレッドなんかにしたら、そのオーバーヘッドが邪魔してかえって遅くなるだろう
828 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 06:14:59.28 ID:wfOumNdE.net] CPUの実際の動作がさっぱりわからん
829 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 06:22:05.68 ID:vvMMmk8r.net] 気にしなくていい
830 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 06:53:09.50 ID:DSZn496T.net] >>785 おっさんいつの知識で語ってるんだよ w そんなもん主記憶への書き込みに比べたらゴミにしかならんぞ
831 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 07:19:52.20 ID:FNNFGlTu.net] >>793 CPUというよりも、CPUとメモリーのスピード差が決定的すぎるんだよ メモリーにアクセスするとCPU命令で数千命令程度の待ちが入る 余りに待ちが長いので、その間に色々計算ができるようにCPUには工夫が入っていたり マルチCPUにして、別のCPUが計算している間に書き込んでしまえといった方面で創意工夫がされているんだ。 境界チェックくらいなら、書き込み待ち時間で十分にできるから他のCPUにまで影響を与えないようにして 書き込みスレッドは一本にして、他のCPUは別のメモリーアクセス以外の仕事ができるように開けておいた方がトータル良い結果を出すって事。
832 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 08:39:19.14 ID:2TLG8dmE.net] どうでも良いが、メモリーに書き込まないスレッドとかありえないと思うんだ・・・
833 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 10:17:04.48 ID:xhr4sxE5.net] 本当に小規模な計算ら、レジスタだけで解決できるだろう
834 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 13:14:58.98 ID:mVrmFNTT.net] C++ならともかくC#で気にする必要のあることなんだろうか
835 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 13:31:22.91 ID:FNNFGlTu.net] >>799 知っていれば無意味な並列化とかしなくて済むだろ そうすればソースも分かりやすくすっきりするし 0フィル処理なんて詰まらない処理なら、効果はてきめんだ。
836 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 13:43:29.67 ID:xhr4sxE5.net] 無意味な並列化にかかる工数と、無意味な並列化は逆効果ということを検証する工数 どちらがよりコストがかかるんだろうか。
837 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 13:49:55.01 ID:FNNFGlTu.net] 高速化目的で並列化しなきゃならない程の状況なら、検証はするだろ。 で、並列化するときにどういう方向性が効果的かってのを知っておくことは コードを手早く書く上での基本テクニックだよ 無意味なコードは、そもそも書かないし試さないというショートカットができるからね。 将棋の名人でもすべての手を読んでいる訳じゃない、効果的な枝だけを深読みしているみたいなもんだ。
838 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 14:09:41.46 ID:xhr4sxE5.net] 並列化をしたくなるのは、代替がそういう状況に陥る前の段階での思いつきなんだよねたとえば今回の0フィルとか。
839 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 16:09:48.66 ID:aK+zC0HQ.net] 並列化の基本はいかに粒度を上げるかだよ 極端な話、プロセスを2つに増やして2倍速くなるならそれでいい ミクロな視点で考えるのはほとんどのケースにおいて時間の無駄
840 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 16:28:44.49 ID:FNNFGlTu.net] >>803 こういうのってコンピュータの仕組みが分かってしまえば、高速化手法として頭に浮かぶことすらないですから。 考えるまでもなく除外なんですよ、脊髄反射。 よく似た物にページングのチューンなんかがあるね。 並列化したら、ずっと仮想メモリにページアウトページインばっかりするようになってしまうのが見え見えのコードとかね。 こういうケースが見えて居る時にマクロ視点でプロセス増やして・・・と考えることは無いねw
841 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 18:05:14.12 ID:sVC5qkLg.net] >>805 コンピュータの仕組みなんて常に変わっていくもの 脊髄反射で手法を除外するのはよくない あと一レス目で指摘するならともかく、問題点が整理されてから 後出しで手法をダメ出しするのはカッコ悪い
842 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 18:18:41.10 ID:xmE6C1ua.net] >>796 それってCPUの実際の動作じゃなくて単なる考え方だよね・・・
843 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 18:34:37.22 ID:2TLG8dmE.net] と、言うより>>796 は思いっきり出鱈目ですわ 境界チェック云々はマルチCPUじゃなくてパイプラインで解決されるからプログラミング要らずだし
844 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 19:49:41.71 ID:woBc/tdN.net] >>79 > メモリーにアクセスするとCPU命令で数千命令程度の待ちが入る 今時のメモリー(主記憶)のレイテンシーって10ns以下だと思うが10nsで1,000命令も実行できるCPU教えてくれ
845 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 20:53:44.12 ID:FNNFGlTu.net] >>808 まぁ、その手の事を指摘したつもりだけれどそう読んではくれないみたいだね。 あと、最近のはパイプライン以外にも命令の並べ替えやら入っているからw ホコポコ無意味に返信している内容は、多分自演なんだろうけど、そろそろやめたら。 こういうのはゲーム作ったことあるような人間なら常識の範囲なので、考えるまでもないような話の類。 俺以外のヤツもたくさん指摘しているが、それだけ普通に知っている人は多い話なのだよ。
846 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 21:04:00.56 ID:1tPgrneG.net] いつの時代のどのハードのゲームだよ アセンブラのバイトコード気にするとか20年前の話だろ いっぽかたが計算してる間に他のCPUで書き込みするのは 同時にメモリに書き込もうとして競合するのを避けるためじゃないん
847 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 21:15:04.20 ID:FNNFGlTu.net] しつこいねぇ この手の話をゲーム屋が知ってるのは、何かの本で読んだとかではなくて ソニーとか任天堂とかマイクロソフトとか今は逝ってしまっているセガとかハード屋が セミナーで現在のハードの状況と止めた方が良いコードなんかのヒントとして教えてくれるからなんだよ。 その知識を持って、インテルの資料とかを読めば大体の事は分かるんよ。 もちろん素から勉強している人も居るだろうけどね。 今回の話はマシン語ではなく、最近のメモリー事情の話なんだよ。 連続アドレスの書き込みor読み出しには強いが、飛び飛びのアドレスにアクセスすると弱いダイナミックメモリー事情とかの話。 メモリフィルとか連続アドレスをアクセスしているのに、わざわざ壊すようなマルチスレッドはそういう点でも駄目なんだな。 決定的にはメモリーが遅いという点に尽きるが。 こんな風に駄目な理由に一つ以上のネタがあるんだよ、だからやるまでもないの。
848 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 21:29:31.37 ID:1tPgrneG.net] ほんとに理解してるか? パイプラインで境界チェックを解決って意味が分からん どうやってんの
849 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 21:32:07.91 ID:3oML3qao.net] そろそろ死ねよチンカス勢 これ以上口を聞くとスレを埋めるぞ
850 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 21:46:56.27 ID:2TLG8dmE.net] >>813 パイプラインがRISC時代に進化して、レジスタが干渉しなければインストラクションを同時実行するようになったから 件の例だとメモリクリアと境界チェックを同時にヤるんだわ だから一つのCPUは見かけ上メモリクリアを境界チェックの時間0で延々と実行する コレを実行するのは一つのCPUだし、同時実行に人が介在すること
851 名前:無いのでプログラマーは何もヤることはありません ホント>>796 は酷い出鱈目ですわ [] [ここ壊れてます]
852 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 22:00:11.37 ID:oixKZUzL.net] 何を争ってるのかさっぱりわからんw ただ昨日書いた>>776 が間違ってることはよくわかった。 よく考えればこれ486の時代とかでも当たり前だw すまんかった
853 名前:デフォルトの名無しさん [2017/04/13(木) 22:00:58.20 ID:FNNFGlTu.net] >>815 >境界チェックくらいなら、書き込み待ち時間で十分にできるから他のCPUにまで影響を与えないようにして これがパイプラインやらディレイスロットに相当する話として描いたんだよ 計算時間隠ぺいはパイプラインだけじゃないからな、不正確になるだろ。
854 名前:デフォルトの名無しさん [2017/04/13(木) 22:08:08.05 ID:FNNFGlTu.net] ちなみに昨今のCPUは、機械語命令を別の内部用の命令に一旦変換することで互換を取っている この変換で色々な隠ぺい処理がされる。 パイプラインの直接関与は無い。
855 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 22:55:07.48 ID:UJp3daw4.net] そういうのはC++使いにやらせとけ
856 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 23:32:52.23 ID:ZueE7S//.net] CPUの種類もいっぱいあるし実装すらmonoとかあるんだから考えても無駄だよ ふつーにヤレ
857 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 23:35:00.21 ID:8HEXXOrW.net] .NET 4.7でTupleも標準で使えるようになったと思ったら Windows Server 2016でまだ使えない
858 名前:デフォルトの名無しさん mailto:sage [2017/04/13(木) 23:51:42.17 ID:qn5HP47l.net] >>821 4.7がまだインストールできないってこと?
859 名前:デフォルトの名無しさん mailto:sage [2017/04/14(金) 00:17:56.85 ID:SWEjH6Xz.net] >>788 GCってガベージコレクタか? メモリを回収するときにゼロクリアする必要はないんじゃね。痕跡を残したくないとかなら分からないでもないが。。
860 名前:デフォルトの名無しさん mailto:sage [2017/04/14(金) 07:19:22.25 ID:KckXzUzz.net] >>822 4。7って自動で入るのか?
861 名前:デフォルトの名無しさん mailto:sage [2017/04/14(金) 08:29:17.03 ID:pJlkTYEJ.net] .NET Framework 4.7 is part of Windows 10 Creators Update. What about other Windows versions? You 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だけらしい
862 名前:デフォルトの名無しさん mailto:sage [2017/04/14(金) 19:41:38.09 ID:zACr9/Dt.net] 4.7なんて何に使う気なんだ
863 名前:デフォルトの名無しさん mailto:sage [2017/04/14(金) 19:57:13.78 ID:vwaM1ek4.net] NuGetで取ってこなくても最新の機能が使えるとか ValueTupleとかValueTaskとか 自分も試しにアップデートしてみたがまだ使えないみたいだね もうちょっと纏めてからアップデートしてくれた方がいいんだけど アップデートが細かすぎる
864 名前:デフォルトの名無しさん mailto:sage [2017/04/14(金) 20:03:25.72 ID:znF0F+kk.net] >>826 何に使うのかは知らんけどtupleを使いたいんだろ
865 名前:デフォルトの名無しさん mailto:sage [2017/04/14(金) 20:10:48.82 ID:pJlkTYEJ.net] 知っていると思うけど、VSインストーラ立ち上げて4.7を追加インストールします Windows10をCreatorsUpdateしてから処理したから、必須なのか不明ですが 多分それも必要です
866 名前:デフォルトの名無しさん mailto:sage [2017/04/14(金) 20:19:05.97 ID:bLw6Whqv.net] Tuple<T>ってC#4.0からあったと思ったがそれじゃなく?
867 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 02:12:01.30 ID:aGMB9daN.net] >>830 それとは違う
868 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 10:12:37.06 ID:iCdjVYwG.net] >>818 ペンティアム2を昨今のCPUって言う人初めて見たw てか、それらはx86のRISC化なんだが、 RISCっても
869 名前:のはパイプラインを高度に利用してトランジスタを増やさずに多重実行する技術だよ パイプラインの関与と言うか、要です [] [ここ壊れてます]
870 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 10:16:28.45 ID:C33P0hB8.net] アセンブラできない奴はまともに最適化はできない。これだけ。
871 名前:デフォルトの名無しさん [2017/04/15(土) 10:18:54.18 ID:3qBkA9st.net] アセンブラとか老ガイジかな?
872 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 10:23:22.48 ID:C33P0hB8.net] c#のデバッグでなんで機械語が表示できるようになってると思ってんだ? 低脳馬鹿デジタルネイティブさん >>834
873 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 10:35:26.60 ID:QicJR8ZP.net] ValueTupleって最初はワクワクしたけど使い所あんましないな どういう時に使うんだこれ
874 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 10:36:36.36 ID:qt9qpnGQ.net] うわあ
875 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 10:43:55.01 ID:iCdjVYwG.net] >>836 out 使って値を返しているやつを素直に書けるだろ
876 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 10:49:59.89 ID:3WGNKYp+.net] >>832 まてまて、SIMDとパイプラインと並列処理は意味が違うぞ。 言いたいことはわかるけどなw
877 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 10:50:24.08 ID:iCdjVYwG.net] >>835 C#のILをJITがマシン語に変換して、更にCPU内部でRISC形式の命令に変換 更に命令の順番を最適化して多重実行をするわけで、ILを見たところでどれが効率高いかなど判断するのは人間業じゃないな せいぜいキャッシュサイズを意識する程度だろうが、2つのループを同時実行されることまで考慮したらどうすれば良いのやら・・・
878 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 10:57:05.83 ID:iCdjVYwG.net] >>839 SIMDじゃなくて、通常のオペコードをRISC的な内部オペコードに変換するんだよ で、10段とか15段に細分化されたパイプラインを使って、パイプラインに繋がった演算装置を 複数の実行ユニットが使いまわしをしてトランジスタ増やさずに見かけの同時実行数を5とかに増やす まあ、それをどうやって実現しているのかさっぱり分からんけどな
879 名前:あ mailto:sage [2017/04/15(土) 10:57:43.50 ID:4VXj2s/u.net] >>840 どこが効率悪いかはわからんか? あー、アンボクシングかかっとるわ、とか、 これのせいでストールしよるな、とか。
880 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 11:00:42.88 ID:iCdjVYwG.net] >>842 デバッグに使うのは当然なんだが、通常のソースレベルの効率以上の情報をILから探し出すのは至難の業です 最終的な実行環境は俺を含めてハードの素人には手を出せない神の領域かと
881 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 11:34:57.52 ID:QicJR8ZP.net] >>838 outはそもそも使わないし TryXxx系はValueTupleよりout varの方がスマート
882 名前:あ mailto:sage [2017/04/15(土) 11:39:27.67 ID:4VXj2s/u.net] >>843 コーディング中はそりゃ、あんまりそこに固執すると目的地にたどり着きさえしなくなっちゃうもんな。 コンパイラが賢かったり、JITが地味に賢くなって要らない小技になったのも沢山あるし。 たまに見ると面白いよ。あ、これメモ化しちゃうんだ、とか。
883 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 11:39:28.67 ID:UPL5S+RA.net] そうそう pythonでやってたことをc#でもできるようになったものって 実際使ってみてもいまいちなんだよな めんどくさいから欲しかった機能だけどc#流になるとそれ以上にめんどくさいしスマートじゃない
884 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 11:44:51.81 ID:eeh5f4V4.net] >>832 ペン2には一言も言及してないのに勝手にそうするキチガイさんですか? >>839 これも自演でしょ 多分10年以上も前からここで、板が白けきるまで偉そうな事いいながら荒らしまくっていた人なんでしょうけれど。 そろそろ死んでください。
885 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 11:49:23.70 ID:iCdjVYwG.net] 今回の拡張の中で ref var a = hoge
886 名前:(); と言う、参照戻り値ってのの使い方が難しいわ [] [ここ壊れてます]
887 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 11:51:55.21 ID:iCdjVYwG.net] >>847 >、機械語命令を別の内部用の命令に一旦変換することで互換を取っている コレはPen2とかK6辺りから始まりました 20年前の技術ですね
888 名前:デフォルトの名無しさん [2017/04/15(土) 11:52:06.28 ID:mE+AhP/n.net] 初心者です C#はメモリ管理を気にしなくて良いと聞きました 本当でしょうか?
889 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 11:54:00.80 ID:eeh5f4V4.net] たしかCore2以降は、VILW命令に変換していたと思った。 命令ストリームからVILW命令6スロット分に変換して 6命令ずつ同時実行する事で低クロックでも高速に動作とか。 x86系以外では、スーパースカラの採用も多いみたいだね。
890 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 11:55:39.30 ID:P11oDSMM.net] 本当だよ 2人くらい何か囀ってるように見えるけど、キチガイだから気にしてはいけないよ
891 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 12:00:32.47 ID:3WGNKYp+.net] >>847 俺、死ぬんか?
892 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 13:12:21.09 ID:7hkWD0i5.net] >>850 メモリ解放なんかは自動ってことになってるけど メモリ確保やら初期化やらは気にしないとだめだし「メモリ管理」の内容による
893 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 13:18:16.99 ID:GC6K0tB8.net] >>823 これ、まともに回答しようと思うとひどく大変なんだが…… 823がGCの内部実装を把握しているうえでの指摘にも見えるし、 初心者の思いつきの質問にも見えるし…… 初心者向け: ヒープ確保したら0にクリアされてる メモリを回収後、再利用されるまでに0クリアする必要があるってこと 把握してる人向け: メモリコンパクション時にページングの機構使って0クリアしてるのかってことなら、 .NET Core のソースで確認しようと思ったけど gc.cpp だけでも1.2MBあって挫折した >>850 初心者のうちは気にしなくていいよ
894 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 13:43:04.38 ID:5VFPMUgC.net] >>846 C#は式指向のシンタックスを目指してるから、あくまでステートメントに拘るPythonとはだいぶ方向性が違うよ 可能な限り全てのメソッドを式形式で定義する縛りでコーディングしてみたらいい そうすればC#7の仕様の意図するところは簡単に理解できる
895 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 14:29:19.96 ID:56TRC7nM.net] みんな詳しすぎ 頭いいんだな
896 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 14:40:07.25 ID:3WGNKYp+.net] >>842 >>843 思ったけど、あのVTuneってそんな機能あるんかな?
897 名前:デフォルトの名無しさん [2017/04/15(土) 15:19:31.88 ID:A0YDVHHt.net] 昔Excelを弄ってた時、Excelのオブジェクト解放したはずなのに 単体テストし終わってからタスクマネージャー見るとExcelが一杯残ってた(通称ゾンビ)。 シートやらブックやら解放してから最後にExcel本体解放してってやってたけど 今は一発で解放できるんだよね? メモリ管理とか気にしないけど、こういうのは気になる。
898 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 15:29:43.17 ID:8JN0d/j3.net] 所謂アンマネージリソースを閉じてないとC#であってもゾンビ化することはたまにある
899 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 15:39:12.33 ID:eeh5f4V4.net] >>859 Excelは無理だよ、細かくReleaseComObjectしなきゃ駄目だし、しても残る時は残る。 残ってしまう事を前提に組むしかない
900 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 15:41:12.30 ID:aGMB9daN.net] >>861 しても残る時は残る、はし足りないだけでは。
901 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 15:43:39.01 ID:eeh5f4V4.net] >>857 自分の書いた内容が正しいという流れになるまでしつこく続ける自演キチガイが一匹いるだけ。 もう相当昔から粘着しているからいい年だと思うんだが、よく生活できてるなって感じだな。 それ以外の人は普通だよ。
902 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 15:58:16.95 ID:3WGNKYp+.net] ちなみに俺は違うからな
903 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 16:02:07.82 ID:eeh5f4V4.net] 自分が得意じゃないと思う領域は黙っておけ、そして誰か
904 名前:詳しい人がレスするまで その質問を流すなキチガイ あと、自分の得意な領域に引き込もうと変な流れに作り替えるな。 掲示板が機能しなくなる どうせなら死ね とまあそんな所ですな [] [ここ壊れてます]
905 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 16:06:10.39 ID:OxStzCoo.net] >>863 気づいてないみたいだけど、悪いけど君の態度も相当エキセントリックに見えるよww 少なくとも>>832 は文脈的に妥当な反論をしているようにしか見えんけど、 「俺にたてつく奴はいつものキチガイ(って誰だよw)だ!!」って感じでかなり普通じゃない。 余計なお世話だろうけど、いい歳こいてるんだろうからもうちょっと自分を客観的かつ批判的に 見ることを覚えた方がいいんじゃないんだろうか。
906 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 16:07:40.04 ID:lvAT8XK9.net] >>859 > 昔Excelを弄ってた時、Excelのオブジェクト解放したはずなのに > 単体テストし終わってからタスクマネージャー見るとExcelが一杯残ってた(通称ゾンビ)。 ちゃんと ReleaseComObject(comObject) 呼んでないだけだろ なんで IDisposable にして Dispose で解放するようにしなかったのか謎
907 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 16:09:12.98 ID:eeh5f4V4.net] 駄目だな、このキチガイ・・・ はよ死ね
908 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 16:13:19.25 ID:C33P0hB8.net] デストラクタの動作タイミングが制御できない時点で逆にいろいろ管理できなくなってトラブルの元になってる。 結局のところ欠陥言語なのだ。
909 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 16:16:13.49 ID:OxStzCoo.net] >>867 根拠があるのかと言われれば正直ないけど、ぶっちゃけ全部のオブジェクトを いちいちReleaseComObject呼ぶなんてやってられないし、やらなくてもそれで 「ゾンビ」が残ることはないようだから、必要ないんじゃないのかな。 そんなことよりプロパティが返すオブジェクトをメソッドチェーン的に使わない(面倒でもいちいち変数に 入れてから使う)とか、その手の基本が大事だね
910 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 16:18:04.02 ID:eeh5f4V4.net] Excelのケースは多分デストラクタというより、Excelのスレッドモデルに問題があるんだと思う。 lock方式でもInvoke方式でもない、少々行き当たりばったりな排他制御をしてるようだ。 古いアプリなので今更改められないのだろうね。
911 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 16:31:33.32 ID:OxStzCoo.net] エンゼルハートって映画あったな 探偵がロバートデニーロに殺人鬼を探すように依頼されるが、探していた 殺人鬼は探偵自身だったってオチ 「いつものキチガイ」も実は言ってる本人自(w
912 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 16:33:19.87 ID:3WGNKYp+.net] はいはい、俺が悪かったってことで仲直り。 今後はこのスレ貢献に頑張ろう…でいいやん。 な
913 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 16:33:31.45 ID:nXYdKgHp.net] ExcelCreatorが楽すぎて戻れない
914 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 16:36:28.32 ID:eeh5f4V4.net] >>873 普通なら、それでOKなんだけどね この人2000年頃にやってきて、際限なく荒らしまくって誰もいない状態にしやがったから。 たまーに戻って死んだかなとか見ているんだが、ご健在のようです。(はよ死ね
915 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 16:57:08.88 ID:aGMB9daN.net] >>870 そんな基本は聞いたことが無いのだけど、 プロパティが返すオブジェクトをメソッドチェーン的に使うと、どういう問題があるの。
916 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 17:07:01.27 ID:mW9XRjOW.net] Disposeされないオブジェクトが量産されてリソースリークするに決まってんだろ 一つプロパティにアクセスしたら結果を変数に入れて礼儀正しくDisposeする これをすべてのメソッド呼び出しとプロパティ・インデクサーアクセスについて行う
917 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 17:09:24.07 ID:nXYdKgHp.net] >>877 おもしろい冗談だな
918 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 17:16:22.23 ID:UPL5S+RA.net] return a,b;で返したのを こんな感じで受け取れれば楽なんだけどな a,b=method(c);
919 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 17:31:49.05 ID:OxStzCoo.net] >>876 ゾンビ なんだかVBerチックなおまじないのように聞こえるけど
920 名前:そうじゃない。 もっとも、どうしてそうする必要があるのか、詳しい理屈は忘れちゃったけどw 明示的に変数で参照されてないCOMオブジェクトは相互運用アセンブリが適切に破棄できないとかなんとか まあ、変数に入れなきゃReleaseComObjectを呼ぶこともできないよね [] [ここ壊れてます]
921 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 17:33:16.72 ID:7hkWD0i5.net] excelはC++から使ってもゾンビるよ
922 名前:デフォルトの名無しさん [2017/04/15(土) 17:38:17.93 ID:A0YDVHHt.net] >>867 昔の話だよ。
923 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 17:41:04.42 ID:aGMB9daN.net] >>880 結局ReleaseComObjectは必要なのね。
924 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 17:47:17.96 ID:jssTx07C.net] >>859 昔のプログラムメンテする必要が有って、丁度それに出くわして同じ方法で対応したわ 結局そのロジック切り捨ててOpenXMLで読み書きしちゃったけど
925 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 17:54:59.95 ID:OxStzCoo.net] >>883 いやいらんと思うよ https://web-beta.archive.org/web/20080306103320/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
926 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 18:00:32.55 ID:OxStzCoo.net] まあVB6みたいに参照カウント見てラッパーオブジェクトの破棄をやってるからってことなのかな こま切れのレスで申し訳ない
927 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 18:14:19.64 ID:eeh5f4V4.net] >>885 >ガベージ コレクションを実行して解放することができますが、こちらはあくまでも保険です 読んでみた限り、GCが保険でReleaseComObjectでやれという事に読めますね。 マイクロソフト公式も保証されるわけではないという感じですね。 実際、これはやってみたが上手くいかないケースはちょくちょく発生します。 次善策以上の対策は取れないと思われます。以前サポートに質問した時もそんな感じの回答でした。
928 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 18:33:54.48 ID:OxStzCoo.net] >>887 あー確かにその通りだねw 適当なこと言ってごめん
929 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 22:36:26.65 ID:tyUWSBTM.net] >>879 タプルに括弧が必要なのはやむを得ないかな。変数宣言の文法変えるわけにもいかないし。
930 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 22:56:40.40 ID:lvAT8XK9.net] >>881 ちゃんと作ればゾンビったりしないよ デストラクタで確実に解放できるからその点だけで言えば C# よりむしろ楽 >>885 > ↑によるとReleaseComObjectは「保険」らしい それ、それページ書いた人がちゃんと理解してないだけ そもそもGCはCOMなんて意識してないからCOMの解放なんてしないし 詳しくはここら辺を見て https://blogs.msdn.microsoft.com/office_client_development_support_blog/2012/02/09/office-5/
931 名前:デフォルトの名無しさん mailto:sage [2017/04/15(土) 23:54:44.22 ID:X3IC3wwW.net] ググってもよくわからんのだけど GetType()+typeof()で型判定と isでやるのはどっちが速い?
932 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 00:20:09.43 ID:SqhlDt4o.net] >>891 一時変数に入れたりしないで単純な GetType == typeof の形に限り前者 JITレベルで最適化がかかるみたい
933 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 01:16:43.35 ID:dwmihMuF.net] >>855 GCのソースを見る気はしないけど0クリアはやってないと思う。 どう考えても時間の無駄。 変数を使用するタイミングで初期化が行われて、ものによってゼロクリアが行われるってだけじゃないんかね。 だから大量な領域をゼロクリアすることはそうそうないと思ってるんだけど。 例えばintの長い配列を確保したときとかくらい。
934 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 02:15:50.20 ID:UDjczAnn.net] >>893 ヒープのオブジェクトは new した時点で内容が0クリアされてることは仕様
935 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 06:55:53.07 ID:dwmihMuF.net] >>894 それはメモリ確保後に初期値で初期化されたってことででしょ。どっちにしろGCで大量にゼロクリアが必要にはならないよね。
936 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 08:00:22.29 ID:uS8rD07o.net] どーせ、一番下でVirtualAlloc走ってんでしょ。そこで0クリアなんじゃね?
937 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 08:43:50.68 ID:dr2cdwts.net] 0クリアをどのタイミングでしているかは知らないが 早めの0クリアがセキュリティーに貢献するであろう事は予想できる。 今そうでなくても、そのうちに使用しなくなったタイミングで可能なら0クリアという形になったとしても驚かない。
938 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 08:49:20.74 ID:dr2cdwts.net] ちなみに自分はガベコレが効率よく機能してくれるよう、使用しなくなったら0クリアはしている。 巨大なツリー構造を作って大量のヒープを使い始めると、参照を移動するだけでも結構なCPU時間を取られるようなので。
939 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 09:00:30.49 ID:nOhMz2bP.net] 破棄されるメモリへの(読まれない)書き込みを省略する最適化を行うコンパイラもあるし、 一律0クリアって方向にはならないだろうねぇ。 セキュリティ確保のためにわざわざ省略されない0クリアなんて機能を用意するくらいだし。
940 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 09:02:08.11 ID:H6tmXYoH.net] 0クリアとnull代入は別物だぞ
941 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 10:39:40.78 ID:yhNZe4vR.net] >>897 > 0クリアをどのタイミングでしているかは知らないが 何のためにデバッガがついてると思ってんだ。
942 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 11:27:43.64 ID:UDjczAnn.net] >>896 あー、それそれ .NET Core の gc フォルダ内のコードに VirtualAlloc の RESET_MEM で ゼロクリアしてる箇所がいくつかあった たぶん、コンパクションした後に残ったゴミ領域を VirtualAlloc で ゼロクリアしてると思うんだが、そこは探しきれなかった >>895 初期値(0)で初期化されたってのはゼロクリアなんだが…… ttp://ufcpp.net/study/csharp/rm_default.html お前の言う初期値は別のことを指してるのか? > どっちにしろGCで大量にゼロクリアが必要にはならないよね。 メモリ確保時のゼロクリアってのはヒープ管理の行うこと ヒープ管理はGCとは切り離せないの だから .NET Core のゼロクリアのコードだって gc フォルダ内に配置されてるんだし
943 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 11:44:56.24 ID:EJt90aDw.net] >>902 横からごめん。無知なので教えて。 ・GC って概要として不要になったメモリを解放する機能って理解はあってる? ・メモリ確保時に初期化が実行されるとの理解はあってる? ・一般的な挙動として、メモリ確保と GC は別物との理解に誤りはある? ※実装が GC 時に初期化しているかどうかではなく、GC と言う言葉の定義に初期化が含まれるかと言うこと 自分は上記が正しいと思ってるから、 >>895 の内容に違和感を感じなかったんだ。
944 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 12:08:09.86 ID:uS8rD07o.net] >>903 君は正しい
945 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 12:11:25.63 ID:SqhlDt4o.net] >>903 CLRの構造としては、GCはメモリ管理一般を担うコンポーネントである だからメモリ確保も初期化するのもGC GCってメモリの使用状況に応じてオブジェクトを動的に再配置したりとか色々裏で頑張ってるから、 単純に 確保/解放 と割り切れるもんじゃないんだよ
946 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 12:21:18.23 ID:qeC+G70E.net] >>891 前者でもいいけどtypeof(シールクラス)にしないとダメだよ
947 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 13:21:57.61 ID:UDjczAnn.net] >>903 >・GC って概要として不要になったメモリを解放する機能って理解はあってる? はい >・メモリ確保時に初期化が実行されるとの理解はあってる? 正確ではない ヒープからオブジェクトを確保したら初期化されていることが決まっているだけで、 初期化
948 名前:フタイミングは決まってない 既に初期化済みの領域から割り当ててるはず >・一般的な挙動として、メモリ確保と GC は別物との理解に誤りはある? > ※実装が GC 時に初期化しているかどうかではなく、GC と言う言葉の定義に初期化が含まれるかと言うこと 誤りはない ただし片方だけではメモリのシステムとして機能しない >自分は上記が正しいと思ってるから、 >>895 の内容に違和感を感じなかったんだ。 .NET の実装によるので 「GCで大量にゼロクリアが必要にはならない」 は誤り .NET Core の実装ではページングの機構を使って大量にゼロクリアしてる(と思う) オレオレCLR実装でGC時ではなく、オブジェクト確保時にゼロクリアする実装というのはあり得る [] [ここ壊れてます]
949 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 14:12:52.31 ID:0ImhO/qF.net] >>903 > GC と言う言葉の定義に初期化が含まれるかと言うこと 含まれていないけど、実質同じ。 GCってプログラマの負担を減らす為の物なのに、 いちいちゼロ初期化必要だとコンセプトとしておかしいでしょ。 まともなGCならゼロクリアされている。CLRもそう。 仕様としては、 △ > ・メモリ確保時に初期化が実行されるとの理解はあってる? ○ ・メモリ確保時には初期化済み であって、どのタイミングで初期化するかはGCの実装による。 同じ事はOSでも行われていて、以下ページのZeroed参照。 nyaruru.hatenablog.com/entry/20080430/p2
950 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 15:02:23.81 ID:79m5iU1q.net] なんかすごい重箱モードの議論だねw いや批判はしてないですよ別に
951 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 18:44:26.20 ID:dr2cdwts.net] 粘着質な人が居ると困りますねw
952 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 18:59:23.11 ID:I10lJTDS.net] >>892 ,906 そうかTHX. isの方がなんとなく速そうだと思ってたが案外そうでもないんだな
953 名前:903 mailto:sage [2017/04/16(日) 20:38:49.89 ID:EJt90aDw.net] >>904 ,905,907,908 教えてくれて、ありがとう。 自分も MSDN の文章を読んだりしてみました。 斜め読みだから読み落としてる可能性も高くそうしたらごめんなさい。 [一般的定義] ・GC は概要として不要になったメモリを解放する機能のこと ・一般的な挙動として、メモリ確保と GC は別物 [CLRの仕様] ・メモリの確保も解放も GC の機能の内 ・確保されたメモリは初期化されている [CLRの実装] ・GC 時にメモリを初期化してるっぽい ふつう、挙動を考える際には仕様を元にすると思うから 「GC時(正確にはメモリの解放時)にはメモリの 0 クリアは期待しない/できない」と理解してよさそうな気がする。 >>895 の「GCで大量にゼロクリアが必要にはならない」が「GC時に 0 クリアしている訳ではない」との意味であれば 仕様としては正しいことから一般論としても正しい。 ただ、実際にはやってくれているけど、それは仕様に基づいているわけではないからいつ改変されるか分からないアテには出来ないもの、と理解しました。 自分もよくやるんですけどね。仕様にはないけど自分が考える安全のための後始末とか。
954 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 20:52:22.64 ID:3ec5aaGF.net] 勝手に0クリアしてもいいけどGCはそれがわからないから またGCが0クリアするよ つまり二度手間 高速化なんてのたまてってるけど馬鹿ばっか
955 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 20:53:23.50 ID:3ec5aaGF.net] 無能の馬鹿の議論は飽きたわ どこか別でやってくれよ 個人のブログとか
956 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 20:55:58.52 ID:dr2cdwts.net] 正直議論に見えない、自演に見えてきた。
957 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 21:04:46.71 ID:wSkKKBMW.net] >>912 もともとのガベコレの意味はざっくり言えば「確保/解放によって断片化したメモリのデフラグ」 だったはず 知らんけど
958 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 21:22:51.36 ID:0ImhO/qF.net] >>912 GCは「アイドル時にやれ」というのは分かるよな? 実際はとりあえずこれを目指しているはず。 メモリ確保時にゼロ初期化するのはユーザ時間に直接影響する。 (メモリ確保のレイテンシが著しく増大する) GC時に初期化するのはGC時間が長くなる。 CLRの場合は確かGC時にはユーザスレッドを凍結していたはずだから、 これもユーザに見えることになる。 だから、普通に考えて、 一旦GCした後、(ユーザスレッドと並行可能な)別スレッドでゼロ初期化だよ。
959 名前:デフォルトの名無しさん mailto:sage [2017/04/16(日) 23:10:52.0
] [ここ壊れてます]
960 名前:0 ID:rt4ZW9V3.net mailto: 基本型の配列は0クリアされるのは仕様で決まっとる どこのどいつが実際にやろうが関係ないだろ [] [ここ壊れてます]
961 名前:デフォルトの名無しさん mailto:sage [2017/04/17(月) 21:40:45.89 ID:3B2OvgTj.net] でも初期化するクセは付けた方がいいぞ プログラマとして そういう意味でゼロクリアされている事がわかっていても 明示的にやっておくのも間違いじゃない
962 名前:デフォルトの名無しさん mailto:sage [2017/04/17(月) 21:53:33.58 ID:DRWzf9HM.net] いいぞ 誰に向かって威張ってるのかね そんな威張っていうような話か?w
963 名前:デフォルトの名無しさん mailto:sage [2017/04/17(月) 21:59:35.59 ID:FPOa41qy.net] 一週間も馬鹿な話続けてる奴にそんな嫌み通じるかよ お前も馬鹿か
964 名前:デフォルトの名無しさん mailto:sage [2017/04/17(月) 22:28:28.26 ID:0+0M+jw7.net] じゃぁ配列は、こう初期化すんの? byte[] buff = (byte[])Enumerable.Empty<byte>();
965 名前:デフォルトの名無しさん mailto:sage [2017/04/17(月) 22:37:56.61 ID:sNToWnIL.net] 自分のブログでヤレ
966 名前:デフォルトの名無しさん mailto:sage [2017/04/17(月) 22:40:07.22 ID:sNToWnIL.net] わかってないようだから書くけど こいつがまず重度の馬鹿 >>919
967 名前:デフォルトの名無しさん mailto:sage [2017/04/17(月) 23:18:50.28 ID:pEHnUlca.net] 924 はキチガイの類
968 名前:デフォルトの名無しさん mailto:sage [2017/04/17(月) 23:22:01.64 ID:pEHnUlca.net] これがキチガイの末路w これこそが本物だ www.int2.info/news1.htm
969 名前:デフォルトの名無しさん mailto:sage [2017/04/17(月) 23:38:40.81 ID:YebzKHR/.net] ここまで基地外だけ
970 名前:デフォルトの名無しさん mailto:sage [2017/04/18(火) 00:27:01.11 ID:0Yq9p2Hl.net] >>926 Microsoft相手に訴訟すると こういう目に会うのか
971 名前:デフォルトの名無しさん mailto:sage [2017/04/18(火) 00:36:27.92 ID:gic2i7xr.net] んな訳ねぇだろ、てかお前本人だなw そんな予感はしてたんだ、文体似てるし60代臭していたし Delphi板荒らしていたヤツとよく似てたし、お前Delphiやってたし もうじき親の財産次るんだろ?もう終わりだろ、はよ死ね
972 名前:デフォルトの名無しさん mailto:sage [2017/04/18(火) 01:34:33.30 ID:4m6dsFPX.net] client sideのvalidationがめんどくさすぎるのだけどVMからvalidator.jsを生成するサービスないのか?
973 名前:デフォルトの名無しさん mailto:sage [2017/04/18(火) 06:15:21.44 ID:dwhcaFAX.net] それは頭悪いだろ サーバーサイドでやってるバリデーションと同じことがしたいならAPI作ってajaxが筋
974 名前:デフォルトの名無しさん mailto:sage [2017/04/18(火) 06:39:33.82 ID:RUjuZHo6.net] そのAPIとそれを使ったクライアントコードの生成サービスないかってことでしょ
975 名前:デフォルトの名無しさん mailto:sage [2017/04/18(火) 07:40:17.90 ID:4m6dsFPX.net] >>931 不要な通信を避けるためにclient side validationするわけでしょ そのために通信をしてたら意味ないじゃん
976 名前:デフォルトの名無しさん mailto:sage [2017/04/18(火) 07:51:25.03 ID:Su4pCCia.net] あるわけねえだろ夢見んな
977 名前:デフォルトの名無しさん mailto:sage [2017/04/18(火) 18:30:31.09 ID:dwhcaFAX.net] >>933 client side validationの目的は一般的には通信を避けることではなくフィードバックの即時化によるUXの改善でしょ よほどレイテンシの大きい糞NWを想定してるとか、サーバーに頻繁にリクエストが来るのがキャパシティ的に許容できないとかでない限りは ajaxによるバリデーションは十分有効
978 名前:デフォルトの名無しさん mailto:sage [2017/04/18(火) 18:34:28.24 ID:b4tf0yLR.net] クライアントにidとパスハッシュのリスト送信しておけばおk
979 名前:デフォルトの名無しさん mailto:sage [2017/04/18(火) 19:24:13.68 ID:T0vdTXyx.net] >>935 なるほど でもその説明じゃうちのロートル達が納得しないよ もっと素人が喜びそうな説明はできないの?
980 名前:デフォルトの名無しさん mailto:sage [2017/04/18(火) 19:34:36.94 ID:qpdySibv.net] 死ね
981 名前:デフォルトの名無しさん mailto:sage [2017/04/20(木) 14:46:51.02 ID:ofUg/eB0.net] EntityFramework で System.Data.SQLite 使ってるんだけど、 SaveChanges() が遅すぎるので、 CQRS( ttps://msdn.microsoft.com/magazine/
982 名前:mt788619 )をやってみようと思った クエリ用にデータベースファースト、コマンド用にコードファーストで DbContext を作ってみたんだけど、モデルファーストの DbContext を new すると コマンド用の POCO と競合して曖昧と言われる まだ試してないけど解決方法がなんか汚い ttp://entityframework.codeplex.com/workitem/483 クエリ用、コマンド用ともにコードファーストにするのが普通なんだろうか? SQLite はマイグレーションサポートしてないようなのでコードファーストはメジャーじゃない? [] [ここ壊れてます]
983 名前:デフォルトの名無しさん mailto:sage [2017/04/20(木) 18:34:56.61 ID:9NLTwIyk.net] >>939 DBからコードファーストじゃだめなん?
984 名前:デフォルトの名無しさん mailto:sage [2017/04/20(木) 19:09:00.01 ID:ofUg/eB0.net] >>940 そうね データベース(モデル)ファーストにしてるのは、 ER図を見るために使ってるだけだからそれでもいいかぁ クエリ用(Read)とコマンド用(Write)双方ともDBからコードファーストで作って DB変更時には再度作り直す方法でやってみるかなー (どこらへんがコードファースト? って使い方になっちゃうなw)
985 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 00:34:55.91 ID:IVDQeFzJ.net] 毎回迷うんだけど VS2017ではどのデータベースを使うべき? そしてEFはどのバージョンを使うことになって参考になるサイトはどこにあるんだ? それそろ安定してほしいんだけど
986 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 01:26:41.50 ID:72Ff37pO.net] >>942 MSDN: 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 を使うのがいいと思う (というか、必要でない限り移行はお勧めされていない)
987 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 06:35:38.36 ID:h0UgT1Ml.net] EFはWeb系のノリで作られてるから安定することはないよ
988 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 07:48:39.88 ID:XjCRa8hg.net] 業務とデータベースに精通していて 全てを自由に弄れる立場にいて 時間をかけて生成されるデータ構造まで意識した精緻なモデル設計ができて その案件の寿命までずっと面倒をみれるか同レベルの後継者を育てられる そんな人がチームにいればモデルファーストは有りじゃないかな そうでなければ使い捨てアプリぐらいにしか使えないよ
989 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 08:13:05.97 ID:dQDWETdW.net] >Web系のノリ どういうこと?
990 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 08:17:36.55 ID:lbMf26rv.net] >>942 安定って具体的に何のことを言ってんの?とっくに枯れた技術だけど
991 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 09:12:06.55 ID:LWRI+6r2.net] >>946 ヤマトのりかと
992 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 11:08:44.37 ID:U4JkC8YI.net] EFとLinqのせいで生のSQL文が書けなくなっている。
993 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 11:45:09.91 ID:72Ff37pO.net] まだサポートが十分でないDBとかあるし、ガンガン開発されてるのに枯れた
994 名前:とか言っちゃうんだ Web系の人なんだろうなー 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系のノリ、納得 [] [ここ壊れてます]
995 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 11:56:05.07 ID:8CN2PrPc.net] 開発されてないのが枯れてるのか。そりゃ確かに枯れてるなww
996 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 12:40:19.25 ID:dpyapAzz.net] >>946 あくまでもイメージだが品質とか安定性より開発速度とかリリースを優先するって感じ >>947 腐ったまま枯れてるってことはいくらでもあるし
997 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 17:42:09.62 ID:MpBIOwvX.net] そういえば前から疑問なんだけど、フォームのイベント伝搬ってどう組むべきなんだ? 状況としてはよくある波形ビューワーで、表示先頭位置と倍率が変えられて、 カーソルが2つあって、フィットボタンを押すと画面にフィットするもの。 (カーソル0が画面の左端、カーソル1が画面の右端になるように、 自動的に表示先頭位置と倍率が調整され、再描画される) (A) 表示先頭位置の変更→画面再描画 (B) 倍率の変更→画面再描画 とした場合、 フィットボタンを押す→ 表示先頭位置と倍率が自動的に変更される=普通は上記(A)または(B)に当たる →自動的に再描画される となるのだが、ほとんどのケースで2回描画されてしまう。 そこで今は、倍率変更側はフォーカスを確認して (B') 倍率の変更→(フォーカスがある時のみ)→画面再描画 として1回描画にしているが、 これだとフィットボタンを押したとき、結果的に倍率のみの変更の場合は再描画されない (同じ値を上書きしてもChangedが発火しない)ので、フィットボタンのイベントの最後に if (!changed_start_pos) redraw(); を付けている。 ただしこれはリファクタ時に久々に見たら「はて?」と思ってしまった。 この場合って、どう組むべきなんだ? ちなみにJavaScriptの場合は、プログラムによる変更の場合はイベントが発火しないので、 全てのイベントの最後に redraw(); が必要になるが、全部書けば全く問題ない。 フォームの場合はプログラムによる変更でもイベントが発火するので、この問題が起きる。 ただ、特にレアケースでもないし、一般的なうまいやり方があるとは思うのだけど。 上手く繋げられれば記述が少なくて済むからこの仕様なんだろうし。
998 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 17:42:43.14 ID:MpBIOwvX.net] なお、今のコードのイメージは以下。(CLIだけど) void 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の仕様の方がマシって事になってしまう) 多分何らかの上手いやり方があると思うのだが。 色々奇妙なのは後付でごちゃごちゃやっているから勘弁で。 今までは問題なく動作していたから放置していたが、ついでなのでリファクタしようとしている。
999 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 18:12:04.32 ID:FFGpioc0.net] >>953-954 そもそもコントロールのイベントで再描画ってのはちょっとw 表示先頭位置とか表示倍率とかの値はFormなりUseControlなり 独立したクラスなりのプロパティになってるはずで、それらのプロパティの変更痔に 再描画されるようにしないと 無駄な再描画を避ける方法だけど、一番いいのは余程重いのでなければ 気にしないことだと思うw どうしてもこだわるなら、直接再描画するんじゃなくて タイマーのイベントに再描画を紐づけしてタイマーをスタートさせるだけにするか、 Application.Idleイベントをうまく使うかするとか
1000 名前:あ mailto:sage [2017/04/21(金) 18:18:11.06 ID:KFYgHFHL.net] >>953 リドローが必要だとキューイングするかと。 どうせインプットのリフレッシュレートやら画面のリフレッシュレート越えてリフレッシュしても無駄なんだし、リフレッシュ時には再描画するんだし。 WindowsならWM_PAINTでやるとかが歴史的にいわゆる普通の方法では?
1001 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 18:23:10.98 ID:YZVNImgq.net] >>950 EntityFrameworkとEntityFramework Coreを同一視してるおバカさん
1002 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 18:35:37.53 ID:RSu3z+zM.net] フォームのように、SuspendLayout, ResumeLayoutみたいな設計もあるけどね
1003 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 18:51:51.53 ID:xzjZrHPt.net] イベント毎にRedraw要求を行うのではなく、 イベント毎にRedrawイベントをどこかのキューにぶち込んで、タイマーや別スレッドで監視し、 描画時に複数のRedrawイベントがあれば最新の物を一度で済ませるようにすればいい。
1004 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 18:55:13.11 ID:MpBIOwvX.net] >>955 別クラスのプロパティに分離しても本質的には同じだよね? 複数のプロパティが、 ・どれかは変更される ・全てが変更されるとは限らない ・必ず変更される物があるわけではない 状況においては、内部的にOR取ることが必要で、一番単純なのはキューで上書きしてしまう方法。 つまりそちらのようにタイマーに要求を出して、 timer->start()は何度打っても同じだからそこでOR取ってしまうとか。 しかしこれだと余分にこの構造が必要なんだよね。 (ただし他の部分ではこの方法も使っている) UIから変更された場合、60fpsとかにするくらいなら直接イベントで描画してもほぼ同じでしょ。 波形はwaveファイルで数百メガとかの場合もあり、このときは明らかにもたつくので2度描画はNG。 あるいは、独立クラスにフラグを持ってそこで上書き、 独立クラスのeventをサブスクライブしろ、ということ? それは理想的な構造なのだろうけど、話が膨らみすぎて面倒だ。 Application.Idleは初耳だが素晴らしい。(JavaScriptではアイドルが取れない) これってUIスレッドが、ってことで良いのか? (ただしこれは今回は使えそうにはないが) >>956 WM_PAINT見たがよく分からん。 システム側が再描画タイミング(おそらく60fps)を通知してくれるので、 それをサブスクライブして、そこで溜まっている
1005 名前:再描画を掃くのか? それはゲームみたいに常に再描画する用で、 今回みたいにUIで変更された時のみの場合は常にイベントが呼ばれる分ウザくなる気が。 あるいは、自分で何かを再描画した時だけ、 システム側で60fps同期でWM_PAINTを打ってくるのなら、今回には使えない。 [] [ここ壊れてます]
1006 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 18:57:50.94 ID:MpBIOwvX.net] >>959 サンクス。まあみんな意見は同じか。 他に何か、「プログラムによる変更であってもイベントが発火する」という、 フォームの仕様を上手く使った方法はないかねえ?
1007 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 19:08:46.15 ID:xzjZrHPt.net] >>961 >>958 みたいな感じじゃないか。 WindowsのListViewとかも、大量のデータ挿入を想定してBeginUpdate/EndUpdateと言った手段を用意しているし、一般的な手法かと。
1008 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 19:19:20.39 ID:72Ff37pO.net] >>957 違いを比較しているURL貼ってるのにレスを読みもしないで小馬鹿にする馬鹿 >>953 瑣末なことで悪いんだけど、どうしても気持ちがざわつくので指摘する 「リファクタする」は日本語としてあまり使われていない refactor の訳としては「リファクタリングする」が使われている印象 どう間違っているのかはうまく説明できん refactoring は造語で、それを元に refactor という動詞が造語として作られている 一般的な動詞ではないので注意
1009 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 19:50:01.08 ID:MpBIOwvX.net] >>962 BeginUpdate/EndUpdateはいいとして、 SuspendLayout, ResumeLayoutは反応しなくないか? (というか>>958 は俺宛ではなくEFの件なのか?と思っていた) 俺の理解ではSuspendLayoutはレイアウト時、つまり、Control.AddRangeを止めるもので、 Graphics.DrawLinesとかを止めるものではないと思っているのだが。 >>963 了解。
1010 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 19:56:01.47 ID:FFGpioc0.net] >>960 コントロールのイベント使うな、っていうのは無駄な再描画対策じゃなくて設計論ね そういう設計だと、例えばプログラムで倍率を変更しても再描画されないよね。 まあ余計なお世話だよねw Application.Idleは例えばこうやって使う bool DrawOnIdle {get; set;} void Application_Idle(object sender, EventArgs e} { if (DrawOnIdle) redraw(); DrawOnIdle = false; }
1011 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 20:10:34.38 ID:Cei54Lla.net] VS2017でどのデータベースとEFを使うべきか質問したものです レスありがとう 完全に浦島太郎状態でした こんなことになってるとは思っても見ませんでした .net.core の方の知識もなくてググってみたらマニュフェストらしき設定ファイルが xmlからjsonになってるんですね...
1012 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 20:16:45.24 ID:TbfEGS8v.net] MSに関わると2,3年であっという間に浦島になるからな
1013 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 20:28:06.75 ID:MpBIOwvX.net] >>965 ちょっと話が噛み合って無い感があるから整理すると、 JavaScript: プログラムからの変更ではイベントが発火しないから、 全てのイベントハンドラは redraw(); で締めないといけないが、 イベントハンドラ内で他コントロールをどれだけ触ろうと何も考える必要なし。 .NET: プログラムからの変更でもイベントが発火するから、 関連しているコントロールのイベント先をすべて redraw() にしておけば再描画される。 だから単純な再描画についてはこっちの方が記述はすっきりする。 ただし、今回のように複数コントロールを触るイベントハンドラがあった場合、 その回数だけ再描画される可能性がでてくるからそこを対策しようとすると、途端に汚くなる。 (JavaScriptのコードは redraw(); を書くしかないし、再描画だとはっきり分かるが、 .NET のコードは俺が今やっている妙な対策法だと???なコードになる) 再描画されればいいのなら、.NETの方が良いけど、 2度描画禁止とかにしたい場合、.NETの方が記述が余計に必要になる。←これって俺の勘違いか? というのが今回の疑問。 > そういう設計だと、例えばプログラムで倍率を変更しても再描画されないよね。 違う。プログラムから各
1014 名前:コントロールのValueを変更することによって、自動的に再描画させてる。 というか、波形表示画面内容と表示開始位置と倍率は当然同期してないといけなくて、 逆に、表示開始位置と倍率が変わらないのなら再描画の必要がない。 それはコントロールの値を変更する構造によって自動的に達成される。 (.NETは同じValueを上書きしてもイベントが発火しない為) だからFitボタン連打とかの場合の無駄な再描画はここで止められる。 多分.NETの仕様だとこういう事だと思うんだよ。(これがMVC的に云々というのはまた別の話) それで、2度描画禁止の場合はどう実装するべきだという想定なのだろう?という疑問なんだ。 普通はキューイングするから問題ない、ってことなのかな? (なお、明示的に再描画したい場合は redraw() を呼ぶだけだから問題ない) [] [ここ壊れてます]
1015 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 20:42:28.79 ID:MpBIOwvX.net] ちなみにMVCの場合はモデルがイベントソースで、 コントロールの値を変更→モデルの値を変更→再描画 という流れになるけど、モデルの値をプログラムから変更する場合、 コントロールの値の表示を手動で合わせてやる必要がでてくる。 これが面倒だから、WPFではバインディングってことで自動化してる。 これはこれで良いとして、 .NET作った時に今回のようなケースが想定されていないはずもなく、 彼等の想定実装があるはずで、 その通り実装すれば綺麗に実装出来るはずなんだが、というのが俺の疑問。
1016 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 20:43:34.30 ID:FFGpioc0.net] >>968 勘違いではないよね。 その認識であってると思う。 コントロールのプロパティを値の入れ物として利用するのは普通はよくない作法だと思う。 コントロールはあくまでUI(表示と入力)に徹するべきで、 表示先頭位置とか表示倍率とかの値はFormなりUseControlなり 独立したクラスなりのプロパティにするべきだというか、普通はすると思う。 で、再描画はコントロールのプロパティが変更されたタイミングではなく、 表示先頭位置なり表示倍率なりのプロパティが変更されたタイミングで行う。 当然、この場合も一度に複数のプロパティが変更されたときに 不要な再描画を回避する方法は考える必要がある
1017 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 21:04:34.72 ID:rPWpf+kQ.net] n秒に1回描画フラグを監視する仕組みのが楽だなw コントロールの挙動全部把握してるやつが触らないとぶっ壊れるって モノ作ってんだろ? それって設計悪くない?
1018 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 21:07:01.51 ID:MpBIOwvX.net] >>970 > コントロールのプロパティを値の入れ物として利用するのは普通はよくない作法だと思う。 MVC的にはそうだね。ただ、この部分のUIなんて変更はないからどっちでもいいのも事実。 ところでその場合、バインディングはどう実現する? (C) numericUpDownのValueChanged→モデルの値を変更 これはいい。ただFormの場合、 (D) モデルの値が変更された→イベント発火でnumericUpDownの表示値を変更 とすると、当然(D)の直後に(C)が発火して、 モデルの値を再度「同じ値」で上書きして、そこでイベントが止まる。 これって全くの無駄でしょ。 .NETの仕様を決めた時、これらが想定されていないはずもなく、 彼等なりの上手い使い方があったと思うんだよね。 (今現在それが良いとされる手法かどうかはともかく) 今のところ、表示とモデルの内容を同期するのに一番簡単な方法は、 「numericUpDownのValueをモデルの値として扱うこと」なんだよ。 そしてこれだと他クラスから見えないので、コピーを持ってる。 これは後付でこうなった、というのもある。 実装は、イベントハンドラに何個でも関連づけさせられるからそこでさせてる。
1019 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 21:13:36.92 ID:MpBIOwvX.net] >>971 モデルをどこに置くか、という話なんだよ。 Formの仕様だと、numericUpDownのValueプロパティを「モデルの値」として扱えば すべてすっきり行く仕様になってる。だからそうしてる。 ところが2度描画禁止だとすっきり行かない。だからこれが疑問。 それならJavaScriptみたいに、最初から 「必ず1回redraw()を書かないとダメだけど、1回書けばいいだけです」の方が良かった。 だから、彼等なりの想定実装があったはずで、それを考えてる。
1020 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 21:15:27.48 ID:rPWpf+kQ.net] 使って問題がある場面のバインディングなんて使わなきゃいーじゃん マイクロソフトお作法病って損だと思う
1021 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 21:15:53.73 ID:Re4upQlq.net] >>963 EntityFrameworkはもう十分枯れてるだろバカ Coreは確かに発展途上だけどね 元のレスを読まないからこんな的はずれなURLを貼っちゃう
1022 名前: [] [ここ壊れてます]
1023 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 21:18:21.74 ID:lnct7jOB.net] イベントがダブりそうなときはイベントを-して値代入後+しなおしているなあ >>970 の2段落目に賛成だな 見なおしたり他に移植するときにそっちの方が分かりやすいし
1024 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 21:33:34.84 ID:MpBIOwvX.net] >>974 バインディングといったから分かりにくいが、放置した場合は表示が間違ってるんだよ。 これは完全にアウト。 Fitボタンが押された→ モデルの値が変更された→ 再描画された これで「波形表示」は最新になるけど、 「表示開始位置」と「倍率」の表示されている値が古いままでしょ。 そしてFormのイベントはそれ用になってないんだよ。 >>976 > イベントがダブりそうなときはイベントを-して値代入後+しなおしているなあ これってかなり面倒でしょ。 今のところタイマで遅らせるのが一番すっきりするからそうしようかと思っている。 (これは他部分で既に実装済みなのを流用出来るというのが大きいが) redraw()を呼んだら16ms後にredraw_implement()が呼ばれて実際に再描画とか。 ただこんなの.NET作った頃から想定してたのかな?という疑問はある。
1025 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 21:34:54.35 ID:h0UgT1Ml.net] >>966 来年にはYAMLになってると思うよ
1026 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 21:37:01.31 ID:72Ff37pO.net] >>975 なんだ、枯れてるとか言ってボコボコ叩かれて悔しかった奴か 「Coreは確かに発展途上だけどね」 Core の前になんかつくだろカス
1027 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 21:49:04.78 ID:rPWpf+kQ.net] >>977 意味わからん 画面は自分が必要なときにデータを見て勝手に描画するじゃん フォームはコントロールの操作によってデータを書き換えるじゃん バインディングなんて使わなきゃ悩む要素皆無だったんでしょ?
1028 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 22:08:05.95 ID:Re4upQlq.net] >>979 おや、ようやくCoreを認識できたんだね
1029 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 22:08:53.85 ID:1MuUAA6h.net] >>979 自分が叩かれていることに気づいていないのは見苦しい
1030 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 22:09:14.20 ID:k73pGP5K.net] >>977 そのへんはレンダリングスレッドがUIスレッドと分かれてるWPFでやろうとしてたと思われ。
1031 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 22:29:56.50 ID:MpBIOwvX.net] >>983 え?WFPって描画はUIスレッドじゃなくていいのか? それはすごくいい。 それだとスピンコントロールのボタン連打で描画が追いつかない時にも、 イベントが溜まることなく最新が常に表示されるね。 何もしなくても。 まあ何だかんだで新しい物は改良されてるってことだね。
1032 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 22:29:56.87 ID:Cei54Lla.net] かずきが日本マイクロソフトに入社してる! 本当に浦島状態
1033 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 22:34:32.90 ID:baDy0zQG.net] >>985 誰だよ?
1034 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 22:37:38.47 ID:k73pGP5K.net] >>984 描画はUIスレッドなのは変わらない。 UIスレッドで同じところにポンポン書き込んでも適当に間引かれる。
1035 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 22:37:41.43 ID:h0UgT1Ml.net] >>984 クソ重いから結果的にはWinFormsの方が遥かにレスポンス早いんだけどね
1036 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 23:07:08.58 ID:MpBIOwvX.net] >>987-988 うーむ、やはりイマイチか。 回答くれた皆さんありがとう。 俺は>>970 ではないけど、次スレ俺が立ててもいいけど。(>>1 )
1037 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 01:19:50.97 ID:Af8PazvW.net] >>954 なんか無茶苦茶だな。 クリックイベントの最中に描画処理を実行してるのか? 再描画させたいならInvalidateRectとかでWM_PAINTを発生させてそこでまとめて描画するのが作法だぞ
1038 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 03:39:27.34 ID:BJdj4TZ/.net] >>990 御説ごもっともだけど、そんな偉そうに言うほどのことでもないよ
1039 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 04:54:36.82 ID:y5zvwDCw.net] 偉そうかどうかは関係なくない?w
1040 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 06:10:42.01 ID:4+2xx2Ut.net] >>992 発言の正当性より自己満足度で正当性を確保しているので重要です
1041 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 06:23:09.19 ID:9wvnPEyC.net] >>990 InvalidateRect発生させてもRect無視して全画面更新しちゃうよ。ふざけんな! みたいな話だからな。ちょっと方向性が違うw
1042 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 06:45:50.45 ID:+hjaOcO8.net] >>991 2ch初めてか? w
1043 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 08:50:41.11 ID:iVvswOrb.net] 次スレ立ててくる
1044 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 08:52:51.85 ID:iVvswOrb.net] 次 C#, C♯, C#相談室 Part93 echo.2ch.net/test/read.cgi/tech/1492818720/
1045 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 09:05:33.60 ID:/oxuzvQq.net] ワッチョイなしで立て直して
1046 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 09:09:40.54 ID:AhKt2WIP.net] やなこった
1047 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 13:34:52.68 ID:3nsKygnV.net] 1000
1048 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています