[過去ログ] C#, C♯, C#相談室 Part95 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1: (ワッチョイ 7b7f-3FY0) 2017/10/17(火)00:41 ID:JxIRdCj70(1/3) AAS
■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
外部リンク:www.visualstudio.com
■コードを貼る場合はこちら
外部リンク:ideone.com
■前スレ
C#, C♯, C#相談室 Part94
2chスレ:tech
■次スレは>>970が建てる事。
建てられない場合は他を指定する事。 VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
876(2): (アウアウウー Sac3-+wK4) 2020/02/17(月)21:45 ID:HH3Dtgxka(1/5) AAS
>>863
複数のボタンを全部クリックした時の動作、なんていう下らない機能を
モデルに持たせることが正当化されるケースってむしろあんまりないと思うよw
ぱっと思いつくのは、ボタンABCDEをクリックした時の処理に共通する部分
(例えばファイルのopen/closeのような前処理後処理)があって、まとめてやる場合には
大幅な最適化が可能な場合。
この人本当にプログラマかな。
877: (アウアウウー Sac3-+wK4) 2020/02/17(月)21:49 ID:HH3Dtgxka(2/5) AAS
>>870
白鳥はすべて白い(PerformClickなんて100%イラネ)という人がいるので、
いやいや世界には黒い白鳥もいるんだよ、とまあそういう話
878(1): (ブーイモ MM0e-BzDP) 2020/02/17(月)22:01 ID:zVw4OscHM(2/5) AAS
>>876
その糞設計だと要件変化ですぐにコードが汚染されるだろうなぁ
処理は今までどおり実行したいが特定のボタンだけ画面から削除したくなったせいで謎のHiddenボタンを置いたり
処理の結果で後続の処理を分岐したくなったせいで不自然な制御フラグフィールドが乱立したり
画面のデザイン変えただけなのになぜか処理の実行順序が変わったり
少し想像しただけでトラブルの兆しがするするでてくる
こういう発想はアマチュアらしくて微笑ましいけど業務で見かけたら説教しなきゃいけないぐらいだ
879: (ワッチョイ 932c-VKUZ) 2020/02/17(月)22:05 ID:dzSo2/zk0(1) AAS
>>863
各ボタンに割り当ててるコマンドをcomposite Commandで繋いで終わりじゃない?
880(1): (アウアウウー Sac3-+wK4) 2020/02/17(月)22:08 ID:HH3Dtgxka(3/5) AAS
>>878
よく分からない妄想ワロタw
意味が分からないよ
>要件変化ですぐにコードが汚染される
まさにその通りw
君の設計方針だと必然的にそうなる。
881(1): (アウアウウー Sac3-+wK4) 2020/02/17(月)22:09 ID:HH3Dtgxka(4/5) AAS
どーでもいい非必然的な機能をモデルに持たせることは、
UIにベタベタ処理を実装するのと同じ糞設計ですw
882(1): (アウアウウー Sac3-+wK4) 2020/02/17(月)22:28 ID:HH3Dtgxka(5/5) AAS
一応言い訳しておくけど、>>876に書いたみたいに最適化の恩恵なんかなくても
複数の処理をまとめて一度にやるメソッドをモデルが持つことが自然なケースはもちろん存在すると思う。
っでも俺が言っているのは「黒い白鳥もいる」だからね。
「白鳥は全部白いは間違っている」と言ってるだけだから
883: (ブーイモ MM0e-BzDP) 2020/02/17(月)22:56 ID:zVw4OscHM(3/5) AAS
>>880
お前のやり方はではすぐにコードが汚くなるって言ってんの
俺のやり方はメンテナンスしやすいモデルを採用してるからコードの品質が維持される
884: (ブーイモ MM0e-BzDP) 2020/02/17(月)23:01 ID:zVw4OscHM(4/5) AAS
>>882
まとめて処理をする機能が要件にあるならそれをモデルに実装するのが王道で自然な方法
お前はそれをボタンクリックなどという大道芸的な方法で実装しようとしてる異端
885: (ブーイモ MM0e-BzDP) 2020/02/17(月)23:03 ID:zVw4OscHM(5/5) AAS
>>881
そうだ
だからまとめて処理をするという最小限の機能をモデルに実装せよと言ってる
ボタンクリックなどという余計なお遊びは入れなくていい
886(1): (ワッチョイ b7a7-sep5) 2020/02/17(月)23:09 ID:HQMlSi3n0(2/2) AAS
こない未来を予測してる奴はバカ
絶対失敗する
しかも、最悪の形で
887: (ブーイモ MM0e-BzDP) 2020/02/17(月)23:18 ID:43uLIzGsM(1) AAS
>>886
来るかもしれない未来を考えないのも同じぐらい馬鹿だな
そして未来がわからんなら余計な拡張性を導入するのではなくコードを容易に改修できるようにシンプルに保つことが重要
つまりシンプルなモデルにやりたいことを素直に書けばそれでいい
それで済むものをわざわざボタンクリックなんていうやらなくていい遠回りな方法で実装するのは後で困る馬鹿の典型例
888(4): (ワッチョイ 477b-yNzz) 2020/02/18(火)00:50 ID:/0BlMKgF0(1) AAS
>>875
だから君はちょっと意識が高すぎるんだよ。
自動化したいユーザーは、今やったのと同じ操作を100個のファイルに適用したいとかだ。
「ログに出てるコマンドをコピペすれば今やった操作を自動化出来ます」との情報を得て、ログを見たら、
CONTROL TextBox filename my000.jpg
CONTROL Button file_load Click
CONTROL Button filter_A Click
CONTROL Button file_save Click
となってたら、まともなプログラマなら適当にスクリプト書いて10分後には完了してる。
そこを「APIを調べてPowerShellでスクリプトを書いてください」だと困る奴の方が多いと思うが。
何でオレオレアプリのAPIをユーザーが一々調べないといけないんだよ?調べるだけで10分かかる。
方法は何でもよく、勿論APIでもいいんだけど、ユーザーは手っ取り早く今の処理を100個のファイルに展開したいだけ。
それには歴史的にも今も「テキストファイル内にコマンド羅列(=つまりスクリプト)」という方法が用いられている。
これが一番分かりやすいからだよ。
PowerShellの「.NETアプリをインスタンス化して内部関数を直接呼ぶ」というのは発想としては面白いけど、
それが分かりやすいわけでもなく、汎用性があるわけでもなく、使いやすいわけでもない。
まあもうこれは堂々巡りだから終わりでいいが、
君の意見が正しければ、今後は全てのアプリでAPIが公開されていき、MS謹製のUIAutomationなんてゴミになることになる。
俺はそんなことにはならないと思うけど。
889(1): (ワッチョイ b7a7-sep5) 2020/02/18(火)00:57 ID:GPdxsdEp0(1) AAS
>>888
だからよ
1処理用の処理を連続で100回動かしたら確認ダイアログが100回出るだろーが
バカかテメーは
890: (アウアウウー Sac3-I9Fa) 2020/02/18(火)06:52 ID:fxDAJd/Ea(1) AAS
言い合いになるなら
構わなきゃいいのになあw
891: (ブーイモ MM32-BzDP) 2020/02/18(火)07:50 ID:LkwV7cyFM(1/3) AAS
>>888
意識は高くない普通の感覚だよ
当たり前のことを当たり前にやるだけだ
モデルに処理を書いてビューに紐付けるってごくごく自然なコードだろ
しかもそれすればほとんどタダでオートメーションサポート機能が手にはいるんだぞ
ボタンクリックとかわざわざ苦労してトラブルを持ち込んでくる意味わからねえわ
マゾなのか
892(1): (JP 0H6e-1vH+) 2020/02/18(火)07:59 ID:ZOlvaa/TH(1) AAS
>>889
その程度の回避策が思いつかないようなバカがいるとは
893(2): (ブーイモ MM32-BzDP) 2020/02/18(火)08:20 ID:LkwV7cyFM(2/3) AAS
>>888
ちなみにこのマクロでわかりやすいと思うのはお前だけだぞ
普通の人だったら
オートメーションなのなんでコントロールを操らないといけないんだ意味わからん
ボタンとかテキストとか書かれても何やってるか意味わからん
各行の関連性が意味わからん
操作してるインスタンスはどのフォームだよ意味わからん
などなど大混乱してしまう
ユーザーが見てわかりやすいレコードログってのは↓こういうものな
$model = $MyAppHost.Resolve("MyModel")
$model.FileName = "..."
$model.LoadFile()
$model.FilterA()
$model.SaveFile()
この処理をたとえばカレントディレクトリ全体に適用したいなーってユーザーが思ったらls | foreachでパイプするだけ
お前の大好きなコード生成みたいなバカバカしい無駄な苦労をしなくて済む
894: (ワッチョイ 63de-sep5) 2020/02/18(火)08:23 ID:didWPBin0(1) AAS
>>892
そこ工夫が必要ならこんなくだらんメソッド呼ばんわw
895(1): (ブーイモ MM32-BzDP) 2020/02/18(火)08:43 ID:LkwV7cyFM(3/3) AAS
>>888
例えばさぁ
お前のオレオレうんこマクロでファイルが存在しなかった場合のハンドリング処理はどうやって書くつもりなんだ?
ファイルの形式が間違ってた場合は?
セーブに失敗したときどうする?
指定したディレクトリツリーのファイルすべて処理したいときはどう書くんだ?
896(1): (ワッチョイ 167b-4wVb) 2020/02/18(火)21:08 ID:U5rnBvKT0(1) AAS
直のWINAPI(というか多分アンマネージ)が混ざる動作だとDebugとReleaseで動き変わること割りとあってめんどくさいな
897: (ドコグロ MM47-P13C) 2020/02/19(水)07:47 ID:bztKe272M(1) AAS
>>896
単なるお前のバグだろ
898: (ワイーワ2 FFdf-IPX/) 2020/02/19(水)11:28 ID:cGULNOoWF(1) AAS
WINAPIのはDebugだと0埋めされるんだろ
そりゃ動作変わるって(バグがあればω)
899: (オイコラミネオ MMff-oN3k) 2020/02/19(水)14:38 ID:xNHctau2M(1) AAS
0じゃなく埋められる数値は何種類かある
デバッグリリースで挙動変わるのはほぼ確実にメモリ周りでなんかやらかしてるね
900(2): (ワッチョイ c37b-1Vd5) 2020/02/19(水)21:10 ID:1xSUjqPH0(1/3) AAS
>>893
俺はPowerShell知らんから推測文法で勝手に書くと
function apply_filterA(filename){ // (A)
echo CONTROL TextBox filename $finename
echo CONTROL Button file_load Click
echo CONTROL Button filter_A Click
echo CONTROL Button file_save Click
}
ls | foreach apply_filter
とかか? まあ雰囲気は分かるだろ。どうしてもオブジェクト文法で書きたければ、property使える言語なら
ref class OreOreWrapper { // (B)
property String^ Filename {
void set(String^ filename){echo("CONTROL TextBox filename "+finename);}
}
} model;
とかかな。
俺が用意するのは公式UIAutomationでしか無い。
君は逆に何故UIAutomationがああなのか、また、
何故PowerShellなんて全く流行ってないのか、理解した方がいい。
既に言ったがコード戦略的には他にも色々理由はあるのだけど、それ以前に、
そもそも外面仕様的にも、.NET縛りになる糞APIを提供する意味なんて上記の通り、まるでないだろ。
Unixフォーマット(テキストと標準入出力)に揃えるのは、異様なほど自由度を提供する物なんだよ。
だからみんなそこから離れられない。
901(1): (ワッチョイ c37b-1Vd5) 2020/02/19(水)21:11 ID:1xSUjqPH0(2/3) AAS
君が間違えているのは、君が出来ているつもりになっている「レイヤー設計」だ。(>>819)
君の中ではPowerShell(中レベル)/アプリの2層しかないから
中レベルAPIをアプリ自体に求め、それで汎用性が全くなくなっている。
そうではなく、各言語向け中→低レベル変換ライブラリ(上記A,B等)を噛ませば、
各言語(中レベル)/各言語向けレベル変換ライブラリ/アプリ(低レベル)となり、
全ての言語で中レベルでも低レベルでも書ける状況になるだろ。
俺の好きなフォーマットで書かせろ、というのはいいが、それはAPIに直接求めるものではない。
どうせどんなAPI/フォーマットを提供したところで、全員が満足する事なんて無いんだ。
なら、上記のように、単純な関数化/ラップでそれぞれのオレオレ超最高フォーマットが手に入るのなら、
それは素晴らしいAPIってことになるんだよ。
そして本件なんて、文句を言った方が恥ずかしくなるレベルなのは君でも分かるだろ。
902(1): (ブーイモ MMff-o/5i) 2020/02/19(水)22:47 ID:Z9/2no0YM(1/6) AAS
>>900
まる一日以上かけてそれかよ
そんな汚いわかりにくいコードをありがたがるのはお前だけだぞ
さて>>895に答えるのに何日かかるかなw
903: (ブーイモ MMff-o/5i) 2020/02/19(水)22:52 ID:Z9/2no0YM(2/6) AAS
>>901
ホント残念なやつだな
アプリの中にさらに層が別れてるに決まってんだろ
それぞれの層をスクリプティング用に公開することもほぼノーコストでできる
薄汚いオレオレラッパーを大量生産する苦痛とは無縁だ
そんなこた言わなくてもわかることなんだがわからなかったか
904: (ブーイモ MMff-o/5i) 2020/02/19(水)23:21 ID:Z9/2no0YM(3/6) AAS
>>900
つうかな自由とハックを混同するな
そういうのは黒魔術的な方向に進化してあっという間にカオス化して行く
そんなものはだれもありがたがらない
製造元が頭の悪いマクロしか提供していないから泣く泣くラップ作業に着手するってんならまあ話はわかるが進んでやりたいことじゃねえわな
905(3): (ワッチョイ c37b-1Vd5) 2020/02/19(水)23:22 ID:1xSUjqPH0(3/3) AAS
>>902
まあもう一々答える気はないんだけどな。
本当に問題になることを突かれた場合は改善に繋がるから有用なのだけど、
君のレベルではそれは無理だし、実際に今回も恥ずかしいことになってるだろ。
多分君が根本的に間違っているのは、バグをバグと認識できてないことだ。
既に言ったがUIを噛ませて動作が不安定になるのは、明確にバグなんだよ。
それはCPUが余りまくっている暇人環境なら再現しにくいだけで、
他アプリでCPUを取られている場合においてはユーザー環境でも普通に再現する。
つまりCPUロードが高い状況では不安定になるわけで、これは普通にバグだよ。
だから君はまずそのバグを直さないといけない。
そうすると>>850の認識をだいぶ修正出来るだろうさ。
906: (ブーイモ MMff-o/5i) 2020/02/19(水)23:24 ID:Z9/2no0YM(4/6) AAS
>>905
答えられませんわかりませんって素直に言ったら?
潔さも時にはたいせつだよ
907: (ブーイモ MMff-o/5i) 2020/02/19(水)23:31 ID:Z9/2no0YM(5/6) AAS
>>905
つか不安定ってとこを拠り所にしてるようだが
仮に完全に安定しててもUI操作ベース貧弱文法のオレオレマクロなんて積極的に使う理由にならんからな
UI非依存のAPIを優先して他に何もなくてどうしてもUI操作せざるを得ないとなったらそこで初めて使うか別のツールに移行するか検討すんだよ
そこんとこはやく理解したほうがいいぞ
同僚や取引先にボタン押すオレオレマクロ機能をドヤ顔で提案して赤っ恥をかく前に気づいたほうがいい
これ本当に君が心配だから言ってる
908: (ブーイモ MMff-o/5i) 2020/02/19(水)23:36 ID:Z9/2no0YM(6/6) AAS
しかもな
もし仮に百万歩譲ってUI操作をサポートしなきゃならんとなったとしてもだ
そんなものはUIA、WinAppDriver、Seleniumに任せときゃいいんだよ
時間と金をかけて赤っ恥マクロを製造する必要はない
もうすでにゴミマクロの億万倍便利なライブラリがあるんだからそれつかいなよ
エンドユーザだってそっち使うよ当たり前だろ
909(1): (ワッチョイ ff63-JjxG) 2020/02/20(木)00:55 ID:FY8QkcoV0(1) AAS
>>905
正常系だけ動けばいいマクロだったら人間用のUIを触るでもなんとかなるよ。
異常系もハンドリングしなければならないなら、何が出てくるかの一覧もないような、ダイアログに書かれてることを理解しなくちゃいけないんだから、網羅するのはめちゃくちゃ大変だと思わないかな。
人間用には問題を自然言語で全体的な説明する必要があって、
外部プログラム用には事前定義されたメッセージで問題を端的かつ詳細に伝える必要があって、
両者はプロトコルが大きく異なるんだから、人間用に外部プログラム用の伝え方をしたり、もしくはその逆ってのはどう考えても筋が悪い。
外部プログラムに人間シミュレーターをやらせたり、
人間に外部プログラムシミュレーターをやらせたら、
余計なレイヤーが必要になってバグの温床になるだろ。
「バグはバグだろ」とか言ってたって品質は改善しないので、そもそもバグが生まれにくい構造にしておくのが当たり前。
設計からやったことないのかな?
910(1): (ワッチョイ c37b-1Vd5) 2020/02/21(金)23:28 ID:UQ40Zz5M0(1) AAS
>>909
ではまず、
・君的超最高な異常系ハンドリング方式、>>893と同様にコードで、と
・現状やたらあるタスクランナー等のどれ一つにもそれが採用されてない理由
を聞こうか。
911: (アウアウエー Sadf-o/5i) 2020/02/22(土)00:53 ID:eCNgUA1qa(1) AAS
こういう返しをしてくるということは数日かけても本当に思いつかなかったんだなwww
912: (ワッチョイ e397-JjxG) 2020/02/22(土)08:29 ID:lw7HhssO0(1) AAS
>>910
あなたは話を逸らす傾向にあるから、その前に、まず、
「自分のオレオレマクロでは正常系での動作しか考えられていなくて、
正常系で動かないのであれば、バグはバグなんだから修正する必要があると言っていた。
だが、異常系への対応までは考慮することができていなかった」
ということを暗に表明していることを認めてもらえるかな?
異論があるならどこが違うのか指摘してくれ。
913: (ワッチョイ ff63-ufZq) 2020/02/22(土)10:09 ID:hsz3eTB90(1) AAS
ガイジの相手をしているところが間違っているね
914: (アウウィフ FFe7-IPX/) 2020/02/22(土)14:22 ID:2qBDSHyDF(1) AAS
正常系と異常系がごちゃまぜで
どこが危なくてどこが危なくないのか全く区別がつかない
915: (ワッチョイ 937b-UH+R) 2020/02/22(土)14:33 ID:4D2R9AsT0(1) AAS
毎度毎度スレ違いどころか明後日の方向レスの応酬やっている連中は病院行け
916: (ワッチョイ ff2c-lQWV) 2020/02/22(土)14:53 ID:qQaAG+8d0(1) AAS
漏れは、スクレイピングに、Ruby, Selenium WebDriver, Nokogiri を使う。
ブラウザの自動操作もできるし
ただ、各サイトの解析が大変。
特に、Ajax で動的に読み込むものは、読み込み前には存在しないから
917: (ワッチョイ 232f-lQWV) 2020/02/23(日)21:04 ID:9ZBd+yN40(1) AAS
ところでこれ、既存の他アプリを操作するって話なの?
自分の既存アプリを多アプリが操作するって話なの?
多アプリで操作されるアプリを設計するって話なの?
918: (アウアウウー Sa0f-ymO9) 2020/03/09(月)14:45 ID:aNmrWQjka(1/3) AAS
こんな感じで
TestDataGridView.Columns.Add("Number", "No.");
TestDataGridView.Columns.Add("Item", "項目");
for (int i = 0; i < Max; i++) {
TestDataGridView.Rows.Add(1);
TestDataGridView["Number", i].Value = (i + 1).ToString();
TestDataGridView["Item", i].Value = "";
}
初期化して、TestDataGridView["Item", i].Valueに何らかを代入して作業を終えて
中身を消そうと
for (int i = 0; i < Max; i++) {
TestDataGridView["Item", i].Value = "";
}
を実行するとGCがバカバカ発生して滅茶遅いのですが、なんでですか?
919(1): (ワッチョイ 4f7c-MjGO) 2020/03/09(月)15:04 ID:306ybdW+0(1) AAS
GCがバカバカ発生したってのはどうやって確認したの?
遅い理由がGCにあるってどうやって確認したの?
920: (アウアウウー Sa0f-ymO9) 2020/03/09(月)15:07 ID:aNmrWQjka(2/3) AAS
>>919
デバッグで起動して、右側の診断ツールのプロセスメモリのグラフに黄色のマークがどんどん現れたのです。
921(1): (ワッチョイ 9f24-CBSz) 2020/03/09(月)15:52 ID:GI3THqg50(1/3) AAS
WinformsならSuspendLayout & ResumeRayout(true)で囲ってみては?
DataGridViewってItemsSourceに代入するとき以外は代入するたびに表示の更新されるよね、確か
922(2): (アウアウウー Sa0f-ymO9) 2020/03/09(月)16:45 ID:aNmrWQjka(3/3) AAS
>>921
やってみましたが変わらずです。
11列×256行で最初の2列はそのままで以降の列に計測値と計算値を代入して、次の測定でクリアするのですが、一回目は瞬時クリアで2回目以降は20秒くらい待たされます。
自動調節などは入れていません。
今まで同様なソフト作っていて初めての事です。
923: (スッップ Sdbf-UVo+) 2020/03/09(月)17:12 ID:cFIy8do/d(1) AAS
プロファイラでどこが時間くってるか見てみれば?
924: (ワイーワ2 FF3f-g6LZ) 2020/03/09(月)18:10 ID:T4gz2l9RF(1) AAS
何らかの代入してる方に問題ありそう
925: (ワッチョイ cb7b-NDfE) 2020/03/09(月)18:28 ID:UntOhQUT0(1) AAS
>>922
ミニマムコード作って動かしてみれば
それでそんな動作になるのなら諦めるか改めてそのコード示して質問するか
一回目と2回目の動きが変わるとかGCが頻繁に動くとかちょっとありえないし
926(1): (ワッチョイ 9f24-CBSz) 2020/03/09(月)18:28 ID:GI3THqg50(2/3) AAS
>>922
ちゃんと
TestDataGridView.SuspendLayout();
TestDataGridView.ResumeRayout(true);
って書いた?
これはコントロール毎にしか聞かないから、Form1のサスペンド呼び出しても子コントロールには効かない
927: (ワッチョイ 9f24-CBSz) 2020/03/09(月)19:15 ID:GI3THqg50(3/3) AAS
TestDataGridView.SuspendLayout();
//ここにTestDataGridViewの処理を書く
TestDataGridView.ResumeRayout(true);
いずれにしても20秒も掛かるとなると他に原因ありそうだな
一応自分はFlowLayoutPanelに自作コントロールをListViewのように並べるというソフト作ってた時、
1000個以上のアイテムを一気に追加すると数秒ラグってたのがこの手法によってほぼ一瞬で表示されるようにはなったが
928(1): (スッップ Sdbf-UVo+) 2020/03/09(月)19:28 ID:JH2CO7i+d(1) AAS
デバッガ表示見てるんだからプロファイラで問題箇所特定が一番早くて確実
その上で最小再現コード作ったり他の設定いじったり試行錯誤してみればいい
なんで便利な標準ツールを使わずに他の手法を進めるのか理解できない
929(1): (ワッチョイ 9f94-ymO9) 2020/03/09(月)21:38 ID:aWxXRkAf0(1/3) AAS
>>926
for文の前後に入れました。
930(1): (ワッチョイ 9f94-ymO9) 2020/03/09(月)21:39 ID:aWxXRkAf0(2/3) AAS
>>928
すまん、使いこなせないのだ。
931: (ワッチョイ 9f94-ymO9) 2020/03/09(月)21:50 ID:aWxXRkAf0(3/3) AAS
>>929
Resumeの()にはtrueじゃなくて空でした。
駄目?
932: (ワッチョイ 0ff8-7NIE) 2020/03/09(月)22:06 ID:eHGFA/ZF0(1) AAS
trueを渡せば停止中にキューに溜まってたものを一括でレイアウトするから低負荷にレイアウトが出来るって仕組みだったはず
なのでtrue引数入れないとパフォーマンス上の恩恵は得られない
933: (ワッチョイ 8b63-UVo+) 2020/03/10(火)00:40 ID:rLdwFfVF0(1) AAS
>>930
vs プロファイラでググればすぐ出てくる
どの関数がどれくらい処理時間くってるか全部出してくれる
何なら関数内のどの行がどれだけ処理時間かかってるかまでわかる
この点だけを調べるならマジで簡単だから一度試してみるといいよ
934(1): (アウアウウー Sa0f-ymO9) 2020/03/10(火)12:16 ID:FjsT0ZiBa(1) AAS
true入れましたが駄目でした。
プロファイラ使ってみました。
1回目の状態です。
画像リンク[png]:imgur.com
瞬時です。
2回目です。
画像リンク[png]:imgur.com
時間かかってます。
セルに代入している時にGCが一杯発生してます。
画像リンク[png]:imgur.com
使い方間違っているのかな?
935: (アウウィフ FF0f-g6LZ) 2020/03/10(火)18:15 ID:X+eVfRrsF(1) AAS
static な Main() の中で
await を使うと Main() に async が必要と言われ
Main() に async を付けると怒られました><
936: (ワッチョイ 9f63-hmaZ) 2020/03/10(火)20:13 ID:bus7JDt50(1) AAS
C#7.1(だっけ?)以降なら書けるから更新する
もしくはstatic async Task AsyncMain()みたいなのを挟む
937(1): (ワッチョイ 4feb-xiWk) 2020/03/10(火)20:16 ID:M4Rwf6kV0(1/2) AAS
>>934
直接dataGridView触るとやたら遅くなるケースがあるから
データの追加削除等全部mainlistの方でやって、
こんな感じで更新する形に落ち着いたような 全然覚えてないような・・・
SortableBindingList<Model.hoge> sortableList = new SortableBindingList<Model.hoge>(Model.mainlist);
dataGridView1.DataSource = sortableList
C#も話題もよく分かってないから 見当違いだったらすまんね!
938(1): (ワッチョイ 9f94-ymO9) 2020/03/10(火)21:16 ID:aFJ9tE+S0(1) AAS
>>937
ありがとう。
直接アクセスすると良くなさそうなんでlistでバインディング出来るか試そうとしてました。
明日、トライします。
MFCで少し書いていましたがC#だとめちゃくちゃ短いソースになるんで勉強します!
ハード周りはC++のDLLでやれそうで明るい未来になりそうです。
939(1): (ワッチョイ 4b2f-4muP) 2020/03/10(火)21:22 ID:vi5fh4S80(1) AAS
DataGridViwのなんかのイベントで重い処理やってんじゃないのか
940: (ワッチョイ 4feb-xiWk) 2020/03/10(火)21:50 ID:M4Rwf6kV0(2/2) AAS
>>938
SortableBindingListに関しては下記のページより、
外部リンク:docs.microsoft.com
ぐぐって何番目かに出てくる、動物病院のページが参考になったよ 先生凄い
dataGridViewって利用者多いと思うんだけど、どれがスマートな利用方法かは調べにくいよね 頑張って!
>>939
詳しい解説や dataGridViewこう使うのが一番賢いぜ!って内容凄く聞いてみたい
941: (ワッチョイ 7957-LOeD) 2020/03/11(水)01:54 ID:zwwCe0yv0(1) AAS
外部リンク:dobon.net
942: (ワッチョイ 9d2c-yhz0) 2020/03/12(木)22:19 ID:hbFLurwA0(1) AAS
がんばって
943(2): (アウアウクー MM05-RK3s) 2020/03/18(水)17:22 ID:rMJu+eWXM(1) AAS
autoScrollをtrueにしたPanel内で例えばcomboboxにフォーカスすると、スクロールバーが自動で上まで移動してしまいます。
それを解決するにはScrollToControlメソッドをoverrideしたPanelを作成すれば良いというところまではわかったのですが、
SplitContainer内のPanelの場合はどのようにすれば良いのかがわかりません。あまり頭が良くないので具体的なコードで教えていただけると助かります。
944: (ワッチョイ 597b-EBql) 2020/03/18(水)18:35 ID:Mnonc2v70(1) AAS
>>943
SplitContainerのSplitterPanelはsealed classになっているからそっちで何とかしようとするとめんどくさそう
SplitterPanelの上にSizeとAnchor合わせた「ScrollToControlメソッドをoverrideしたPanel」を重ねるのが楽じゃない?
945: (アウアウウー Sa5d-TlPw) 2020/03/18(水)18:37 ID:i82q/1/Aa(1) AAS
>>943
正攻法でやるの面倒そうだから、その魔改造したPanelをSplitterPanelに入れて
Dock = Fillにしたら?
それにしても糞UIだねそれw
見えないComboBoxにフォーカスが当たっててマウスホイールに触っちゃったりしたら
いろいろイライラが募りそうw
946: (アウアウクー MM05-RK3s) 2020/03/19(木)11:38 ID:iNMTXluDM(1) AAS
>>945-945
ありがとうございます。無事に実装できました。
947: (ワッチョイ 09c3-0roG) 2020/03/26(木)14:02 ID:WnIwPUvR0(1) AAS
これ同一人物で精神分裂病だろ
948: (ラクッペペ MM96-Uc92) 2020/03/26(木)19:03 ID:hr2wCIjAM(1) AAS
怖いことを言わないで
949(5): (ワッチョイ 8101-C6bq) 2020/03/27(金)12:50 ID:GP64i6UA0(1/4) AAS
実行モジュールをWindowsサーバーに常駐させてクライアントPCからのリクエストでサーバー上でコマンドを実行する
という仕組みに最適な.NETプロジェクトって何だと思いますか?
IIS建ててWebサービスかなと思うのですが1つのサービスのためにIIS建てるのは何か大袈裟だなと思いまして
よりモダンでイケてる仕組みがあったらお聞かせ頂きたいと
950: (ドコグロ MM1d-eCbu) 2020/03/27(金)13:21 ID:US1WE8+5M(1) AAS
常駐のための設定とか信頼性とか監視とか考えたら結局IISの方が手っ取り早くて楽
モダンでイケてるとか言い出したら今時WinサーバーかよとかオンプレかよとかAWSやGCPでKubernetes使えとかそういうそもそも論にしかならないのでナンセンス
951: (ワッチョイ 92ad-Lzc3) 2020/03/27(金)13:27 ID:vRdj9EFz0(1) AAS
検索してやったぞ
外部リンク:qiita.com
自分なら環境が許せはコンソールアプリ常駐で(リクエスト)ファイル監視で作るかな
952: (ワッチョイ 5ef2-Bt6E) 2020/03/27(金)13:51 ID:qYMoCqhd0(1) AAS
名前付きパイプとかは?
953: (ワッチョイ f54b-XmHu) 2020/03/27(金)14:14 ID:Y964uCoh0(1) AAS
Windows限定で良いなら MSMQ とかは?
954: (スフッ Sdb2-uolS) 2020/03/27(金)15:13 ID:paZiMxhtd(1) AAS
>>949
embedIOで雑なHTTPサーバ作る。超楽。
955: (ワイーワ2 FF1a-nBi6) 2020/03/27(金)15:21 ID:9RtDMjhbF(1/2) AAS
>>949
windows 用の sshd をサービスに登録して起動
リモート側から putty とか plink とかで操作
956: (ワイーワ2 FF1a-nBi6) 2020/03/27(金)15:23 ID:9RtDMjhbF(2/2) AAS
windows 限定でセキュリティ気にしないなら psexec
957(1): (ワッチョイ 6e7c-yUDG) 2020/03/27(金)15:31 ID:ITHcMNsn0(1) AAS
インターネットに公開するのかイントラネット内だけの話なのかで大分変わりそうだが
958: (ワッチョイ 5e2c-2pFN) 2020/03/27(金)17:16 ID:cwhPeqJj0(1) AAS
Ruby なら、コマンドプロンプト・PowerShell から、1-liner で、
Rubyで作られた遅いウェブサーバー、WEBrick が起動する
ruby -run -e httpd . -p 8080
そのフォルダに、index.html があれば、これでブラウザからアクセスできる
外部リンク:localhost:8080
959: (ワッチョイ 8101-C6bq) 2020/03/27(金)17:36 ID:GP64i6UA0(2/4) AAS
知らない技術が出てきて勉強になります
C#でさささと書ければ良いので色々試させて頂きます
960(1): (ワッチョイ d201-skQs) 2020/03/27(金)17:39 ID:aLfv28Wa0(1/2) AAS
要件まとめずに実装方法から入ってあとで後悔するパターンだね
個人用途ならいいんだけど
961: (ワッチョイ 8101-C6bq) 2020/03/27(金)17:40 ID:GP64i6UA0(3/4) AAS
>>957
イントラのお気楽サーバーです
AD立ててるので操作ログにログインIDを記録することでセキュリティに替えたいと思います
中国軍のハッキング等は想定しておりません
962: (ワッチョイ 8101-C6bq) 2020/03/27(金)17:49 ID:GP64i6UA0(4/4) AAS
>>960
一部のチーム員が使うサーバ管理ツールです
すでにある実行ファイルを任意のタイミングで実行するのみのもの
DB使ったフラグのやり取りしてもと思ったのですが、実行ファイルをポーリングさせてリクエスト監視するのは効率悪いなと断念しました
963: (ワッチョイ d201-skQs) 2020/03/27(金)18:53 ID:aLfv28Wa0(2/2) AAS
利用者がWindowsのサーバー管理をしてるんなら
Powershellが第一候補なんじゃないかな
認証やロギングの要件わからないけど
Invoke-Commandだけでも結構なことができるよ
964: (ワッチョイ 852c-zagE) 2020/03/27(金)19:24 ID:dVgXV7dy0(1) AAS
>>949
そんな時こそD-COMだよ!
965: (ワッチョイ 6502-Cd0d) 2020/03/28(土)10:22 ID:PEtLg9Oh0(1) AAS
staticな拡張メソッドが作れれば割と便利な気がしないこともない
966(2): (ワッチョイ f62f-2pFN) 2020/03/29(日)17:16 ID:eP0h1Frc0(1) AAS
>>949
普通に考えてまずWindowsサービスだろ
プロトコル等に規制がないならIISでもいいけど
967: (ドコグロ MM9a-eCbu) 2020/03/29(日)20:16 ID:8urZoGoxM(1) AAS
>>966
それは回答になってないだろ
winサービスを自前で作るんならクライアントから要求を受ける仕組みもセットで示さないと
まあその場合大抵はTCP系だろうが、だったら素直に最初からIISの方が手っ取り早い
968: (ワッチョイ f1ad-cy2b) 2020/03/29(日)22:37 ID:Qec2KlTa0(1) AAS
何言ってんだこの馬鹿
969: (ワッチョイ 926a-Cd0d) 2020/03/29(日)22:55 ID:mCKUE4Oo0(1) AAS
誰に言ってんだw
970(2): (ワッチョイ 8101-C6bq) 2020/03/31(火)07:19 ID:gCUhLr340(1) AAS
>>966
windowsサービスも考えたのですがクライアントとのやり取りをどうしようと
データベースでやり取りすればと思いましたがサービス側が周期的にデータベースへアクセスは辛いかなと
971(1): (ワッチョイ 9201-aXsr) 2020/03/31(火)09:05 ID:WgVk0vye0(1) AAS
>>949
.NETでないとダメなの?
> 実行モジュールをWindowsサーバーに常駐させてクライアントPCからのリクエストでサーバー上でコマンドを実行する
要件がこれだけならサーバーにOpenSSH入れてクライアントからログインしてコマンド投げるコード書けばいいだけかと
972(1): (ワッチョイ f62f-2pFN) 2020/03/31(火)11:55 ID:zne18ccq0(1) AAS
>>971
それ実行モジュールが常駐してないじゃん
>>970
クライアントとのやり取りで悩むレベルならIIS一択
973: (ドコグロ MM9a-aXsr) 2020/03/31(火)12:32 ID:MF8ritPeM(1) AAS
>>972
> それ実行モジュールが常駐してないじゃん
サービスも知らんのか?
974(1): (ワッチョイ 5d60-bVUD) 2020/04/01(水)18:52 ID:yix2qnAq0(1) AAS
C#はどうなるの?
975: (ワイーワ2 FF93-Wy2p) 2020/04/01(水)18:57 ID:86v82W0VF(1) AAS
外部リンク:docs.microsoft.com
外部リンク:kenzauros.com
外部リンク:symfoware.blog.えふしー2.com/blog-えんとり-1133.html
外部リンク:symfoware.blog.えふしー2.com/blog-えんとり-1132.html
976: (ブーイモ MM79-reLO) 2020/04/01(水)22:59 ID:r1g6bMKoM(1) AAS
>>974
なくなるよ
977(1): (ワッチョイ 2302-CuPJ) [sageORCE_IDK] 2020/04/01(水)23:58 ID:ec43qMfS0(1) AAS
次世代言語C7に駆逐されることになってる
978: (ワッチョイ 6db2-vpK5) 2020/04/02(木)00:44 ID:+8nGzjLo0(1) AAS
エイプリルフールとかつまらん
979: (ワッチョイ 2361-bVUD) 2020/04/02(木)05:56 ID:JxZO1Jli0(1) AAS
どんな言語も永遠ではない
980: (ワッチョイ 6524-PBD1) 2020/04/02(木)08:26 ID:mZYQaqTk0(1) AAS
>>977
CR7な
981: (ワッチョイ 857b-jIYQ) 2020/04/04(土)17:48 ID:+BZEhhGG0(1) AAS
次スレは新しく立てずにこっちで
C#, C♯, C#相談室 Part94
2chスレ:tech
即死判定無いし削除依頼は機能してないからゴミスレがどんどん増える
982: (ワッチョイ fff2-IHcq) 2020/04/18(土)16:53 ID:+KNBZdEV0(1) AAS
スーパーマン・・・(´・ω・`)
983(1): (アウアウウー Sa1b-7wDT) 2020/04/20(月)16:09 ID:mmgnUp0pa(1/6) AAS
c#からsql serverにアクセスして、SQLを文字列で作成して問い合わせるときに、「@」が付いている箇所があるんですが、何かわかりますか?
調べるとdeclareで変数を宣言するときに使うみたいなのですが、declare文もないので分からない状況です。
984(1): (ワッチョイ d733-YvxL) 2020/04/20(月)16:18 ID:nx4AJKqq0(1) AAS
>>983
パラメーター?
985: (アウアウウー Sa1b-7wDT) 2020/04/20(月)16:29 ID:mmgnUp0pa(2/6) AAS
>>984
おそらくそうです
986(2): (ワッチョイ b74b-LSCM) 2020/04/20(月)16:35 ID:q7S5vlT10(1/2) AAS
var foo = @"ABC\DEF";
とかなら、'\'等をエスケープシーケンスとして使用せず、そのままの文字として使用する場合に使います。
よくあるのがフルパスでファイルやフォルダを指定するときですね。
SQL文自体に@があるならパラメータでしょう。
987(1): (アウアウウー Sa1b-7wDT) 2020/04/20(月)16:41 ID:mmgnUp0pa(3/6) AAS
>>986
パラメーターってdeclareで宣言しなくても使用できるものなんですか?
パラメーター自体まだわかってはいなんですが…
988(1): (ワッチョイ b74b-LSCM) 2020/04/20(月)16:54 ID:q7S5vlT10(2/2) AAS
パラメータはインジェクション対策によく使われます。
この辺りを説明すると長くなるので、SQL インジェクションなどのキーワードで検索してみてください。
パラメータをSQL文(declare等)で定義する事はありません。
989: (アウアウウー Sa1b-7wDT) 2020/04/20(月)17:27 ID:mmgnUp0pa(4/6) AAS
>>988
調べてみます。ありがとうございます。
990(1): (ドコグロ MMdf-Wm+M) 2020/04/20(月)18:16 ID:5/um/alTM(1) AAS
>>987
とりあえずよくわかってないならその部分のコードを晒した方がいい
>>986が言うように@は複数の意味で使われるからすれ違うと頓珍漢なことになるから
991: (アウアウウー Sa1b-7wDT) 2020/04/20(月)19:37 ID:mmgnUp0pa(5/6) AAS
>>990
すみません、会社のコードなので晒せないんです。
とりあえず皆さんから出てきたキーワードでもっと調べてみます。
992(1): (ワッチョイ bf2f-8Jcx) 2020/04/20(月)20:31 ID:3RmvNNii0(1) AAS
会社のコードなのにまず社内で聞かないでここで聞くとかもう
993: (アウアウウー Sa1b-7wDT) 2020/04/20(月)21:49 ID:mmgnUp0pa(6/6) AAS
>>992
返す言葉もございません
994: (ワッチョイ 37b2-BRXw) 2020/04/21(火)02:26 ID:1MDMdwK80(1) AAS
まあなんだ、埋めてみよか
995: (ワッチョイ b74b-LSCM) 2020/04/21(火)10:29 ID:Sho77XeS0(1) AAS
埋めついでに
全部そのまま晒すのではなくて、コードの一部とを変数名等を変えて(hogeとか、barとか)やれば問題ないよ。
それもダメとかいう会社は、そもそも5chアクセスなんて許してくれないだろw
996: (アウアウエー Sadf-xa8R) 2020/04/21(火)12:58 ID:dT9nwdnwa(1) AAS
そんな書き換えで晒すとか
人生棒に振るからやめとけ
997: (ワッチョイ 773a-Ho7r) 2020/04/21(火)14:00 ID:dg2zqYC90(1) AAS
単純化しただけで人生棒にふるってどういうことよ
イミフすぎるぞ
998: (ラクッペペ MM8f-rn04) 2020/04/21(火)14:04 ID:atc0jbknM(1) AAS
SqlClientとかがどんなsql吐いてるか一回ぐらい確認したほうがいいよ
999: (アウアウウー Sa1b-7wDT) 2020/04/21(火)14:11 ID:HBEA6Nica(1) AAS
993です。
SqlClientも見てみるようやってみます。
後は社内のわかる人にタイミング見つけて聞いてみます。
1000: (ワッチョイ 9f01-7Des) 2020/04/21(火)14:19 ID:9fcQjJm80(1) AAS
↓ここの例にある@id, @descがSqlParameter
外部リンク[8]:docs.microsoft.com
1001(1): 1001 ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 917日 13時間 38分 2秒
1002(1): 1002 ID:Thread(2/2) AAS
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
外部リンク:premium.5ch.net
▼ 浪人ログインはこちら ▼
外部リンク[php]:login.5ch.net
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.224s*