X



ふらっと C#,C♯,C#(初心者用) Part153
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん (ワッチョイ bf2c-yjVA)
垢版 |
2021/12/13(月) 22:53:21.18ID:dhjmiKBp0
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part152
http://mevius.5ch.net/test/read.cgi/tech/1629888256/
■関連スレ
C#, C♯, C#相談室 Part94
http://mevius.5ch.net/test/read.cgi/tech/1553075856/
■コードを貼る場合は↓を使いましょう。
https://ideone.com/
https://dotnetfiddle.net/
■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries/
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries/
https://referencesource.microsoft.com/
https://source.dot.net/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
0002デフォルトの名無しさん (ワッチョイ c702-p36F)
垢版 |
2021/12/14(火) 15:04:57.66ID:DHQEOVX70
stringデータの容量を小さくしてソフトのAPIに送りたいのですが
APIの都合でstringのまま送らなければならない場合、
これ以上容量を小さくする手段はありませんか?
圧縮したバイナリデータをどうにか送信できないかと調べたのですが無理そうで……。
0005デフォルトの名無しさん (ワッチョイ c702-p36F)
垢版 |
2021/12/14(火) 18:19:29.34ID:DHQEOVX70
>>3
圧縮して送りたいのはただのセーブデータなのですが、
サーバー側の保存形式がstringを使ったkeyValueで作られているので文字列形式でしか保存できないみたいで。
保存しておいた文字列をこちらで読み込んでからデコードすればいいのでstringのまま圧縮できればよくて、
どうせ日本語までしか扱わないデータなのでSHIFT-JISをutf-8で圧縮……みたいなことができれば理想なのですが
そんなピンポイントなのあったりしませんよね、と……。

>>4
解釈があってるかはわからないのですが、
一応圧縮したバイナリデータをBase64でConvertみたいなことは試してみたものの
容量を減らすという目的ではむしろ文字数が増えてしまって。
何か手段がないかなあと思っている次第です。
0006デフォルトの名無しさん (ラクッペペ MM8f-JWjg)
垢版 |
2021/12/14(火) 18:26:30.90ID:QT7QgCvlM
使用できる文字に番号振って
圧縮したバイナリを文字に割当る
いわゆる復活の呪文方式
文字が足らなければ32bitsバイナリを31bitsにずらしていくなど工夫してみな
0007デフォルトの名無しさん (アウアウウー Sa6b-5lnE)
垢版 |
2021/12/14(火) 18:35:23.50ID:70QYvgE2a
>>5の文章はユニコード(utf16)で720バイト、ユニコード(utf8)で921バイト
>>5の文章をzip圧縮したらバイナリで678バイト。その圧縮バイナリを2文字ずつ(utf8)にしたら2倍の1356バイト(圧縮したらバイト数が増えた)
でも前スレ(utf16で348,236バイト)を圧縮したらバイナリ104,639バイト、圧縮utf8で209,278バイト。圧縮したバイナリをテキストにしたほうが小さい

送りたいデータ次第じゃ一度圧縮してから無理やりテキストにした方が容量小さくなるから
どっちが有利か生と圧縮を自動選択しながら送る手もある
0011デフォルトの名無しさん (ワッチョイ a701-4A0X)
垢版 |
2021/12/15(水) 07:44:21.38ID:viWcJGha0
圧縮することによっぽどのメリットがないと無駄にややこしくなるだけだぞ
サーバー側が必要に応じて圧縮するのが筋かと
UTF-8に変換して送信とか脆弱性の問題もあってサーバー側で禁止してることもある
00122 (ワッチョイ c702-p36F)
垢版 |
2021/12/15(水) 08:20:09.42ID:KIyi4EVP0
皆さんありがとうございます! Base64化したものを自分でさらに詰めるというのは思いつきませんでした……なるほど……。
BasE91もまさに机上論こねくり回してるときに欲しかったものの気配がするので中身覗いて調べてみます!

>>11
こちらは利用する側なのでサーバーの仕様を変える事はできず、
用意されたフォーマット(これが文字列形式での送信)従うしかないやつですね。
ユーザー毎に使用可能なデータの容量が決められていて(しかもそれがやたら少ない)、
少しでも軽減するためにこちら側でデータを小さくできないかと画策しています。
0013デフォルトの名無しさん (ワッチョイ 2780-4iyA)
垢版 |
2021/12/15(水) 08:43:57.49ID:doly6UKJ0
ビットマップ間で部分的に画像コピーするのはDrawImageでできますが
コピーする際に左右を反転してコピーする方法はないでしょうか?
検索でビットマップ全体をまるごと反転する表示はたくさん出てくるのですが
DrawImageの部分コピーで反転するのは見当たらないのです
0020デフォルトの名無しさん (ワッチョイ a748-4iyA)
垢版 |
2021/12/16(木) 12:03:30.27ID:GoezKG390
 private void Form1_KeyDown(object sender, KeyEventArgs e)
 {
  keyCode = (int)e.KeyCode;
 }
 public void button1_Click(object sender, EventArgs e)
 {
  button1.Visible = false;
  anThread(); // ここをtest();に変えると直接実行になる
 }
 private void anThread()
 {
  Task task = Task.Run(() => {
   test();
  }
 }
 private void test() {
  int dt;
  while (true) {
   if (keyCode!=0) {
    dt = keyCode; // ここにブレークポイントを置く キーが押されると止まる
    return;
   }
   Thread.Sleep(10);
  }
 }
0021デフォルトの名無しさん (ワッチョイ a748-4iyA)
垢版 |
2021/12/16(木) 12:04:03.26ID:GoezKG390
このプログラムbutton1押しで開始して、キーが押されるとループ中のブレークポイントで止まるものなんですが
これで一般文字キーを押すとちゃんとブレークポイントで止まりkeyCodeが確認できます
Enterキーを押した場合はなぜか止まりません
anThread();のように別スレッドから動かさずに直接test();で呼ぶと
一般文字キーもEnterキーの時も止まりkeyCode 13が確認できます
別スレッドで動かした時に、Enterキーの時だけForm1_KeyDownさえ呼ばれなくなるのは
どうしてでしょうか?
0022デフォルトの名無しさん (アウアウウー Sa6b-5lnE)
垢版 |
2021/12/16(木) 12:25:18.98ID:6kTxk0Gya
直接呼びで停まる?
直接呼ぶと無限ループに入って、keycode変数が変化しないから(代入が行われるのはループの外だから代入が起きない)
ブレークポイントに入ることもないんじゃないかな?
ここに書き込む過程でコードを書き換えたなら、そこで略した部分に問題ありそう
0023デフォルトの名無しさん (ワッチョイ a748-4iyA)
垢版 |
2021/12/16(木) 12:36:40.33ID:GoezKG390
いえ止まるというのはブレークポイントで止まるので正常に機能しているということです
直接呼びの時はEnterキーでもkeycode変数が変化するのです(正常)
別スレッド呼びにした時にEnterキーだけ変化しないようになります 文字キーは変化します
button1にEnterキーが吸収されてるのではないかと思い
button1.Visible = false;
button1.Enabled = false;
さらにForm1.KeyPreview=true;
としたのですが、結果は変わりませんでした
0024デフォルトの名無しさん (アウアウウー Sa6b-5lnE)
垢版 |
2021/12/16(木) 12:59:19.79ID:6kTxk0Gya
デバッグ開始する
ボタン押す
enter以外のキーを押す=止まる
再開する
enterを押す=止まらない
って順番ということ?それならreturnで抜けてるから

デバッグ開始する
ボタン押す
enterを押す=止まらない
enter以外のキーを押す=止まる
って順番ということ?
0025デフォルトの名無しさん (ワッチョイ a748-4iyA)
垢版 |
2021/12/16(木) 13:04:12.22ID:GoezKG390
そうですね、デバッグ実行は毎回やりなおしてますが
enterを押す=止まらない ここのところですね問題は
Enterキー故に何かわからないですがviewのどれかに吸収されてるんではとも考えられるんです
0026デフォルトの名無しさん (ワッチョイ a748-4iyA)
垢版 |
2021/12/16(木) 13:11:56.87ID:GoezKG390
inr fs;
 public void button1_Click(object sender, EventArgs e)
 {
  if (fs==0) {
   button1.Visible = false;
   button1.Enabled = false;
   anThread(); // ここをtest();に変えると直接実行になる
  }
  fs=1;
 }
0031デフォルトの名無しさん (ワッチョイ e701-p36F)
垢版 |
2021/12/16(木) 14:09:04.68ID:i/INwEgL0
docs.microsoft.com/ja-jp/dotnet/api
にバージョンとかあって.NET 6とか選択するじゃないですか?
これって、どれを選べばいいのでしょうか?
自分のPCにどの.NET入ってるか調べる方法はありますでしょうか?

よよろしくおねがいします。
0032デフォルトの名無しさん (ラクッペペ MM8f-JWjg)
垢版 |
2021/12/16(木) 14:38:33.33ID:k8cIynuMM
自分のPCではなくユーザーの環境を考えて選ぼう
Windows2000なら2.0
WindowsXPなら4.0までしか使えない
0033デフォルトの名無しさん (ワッチョイ 675f-Rkf/)
垢版 |
2021/12/16(木) 15:37:50.09ID:y2oCKs8P0
今から始めるなら.NET 6選んでおけば問題ない
0034デフォルトの名無しさん (ワッチョイ e701-p36F)
垢版 |
2021/12/16(木) 17:43:59.24ID:i/INwEgL0
Environment.Versionだと6.0.0
RuntimeEnvironment.GetSystemVersionだとv4.0.30319でした
0035デフォルトの名無しさん (ワッチョイ e701-p36F)
垢版 |
2021/12/16(木) 17:53:32.89ID:i/INwEgL0
System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription
だと.NET 6.0.0-rtm.21522.10でした
0036デフォルトの名無しさん (ワッチョイ e701-p36F)
垢版 |
2021/12/16(木) 17:56:18.18ID:i/INwEgL0
clrver.exeだと、こう

PS C:\Users\a\source\repos> clrver.exe

Microsoft (R) .NET CLR Version Tool Version 4.8.3928.0
Copyright (c) Microsoft Corporation. All rights reserved.

Versions installed on the machine:
v2.0.50727
v4.0.30319
0046デフォルトの名無しさん (スッップ Sd8a-jY/M)
垢版 |
2021/12/17(金) 01:35:44.89ID:0Acfg8Fxd
これからMSワールドの外へ出てみたら実感すると思うけど、MSスタックは全部MSで揃えて他には見向きもしなくていい状態にこそ意義があるんだよ
いったん外にはみ出し始めちゃって歯車が狂うとたちまち不便なところばかりが目につくようになって、気がついたらMS成分は跡形も残らない、という結果になるのがオチだ
MSスタックをディスるつもりはなくて、これはむしろ最大限の賛辞だ
0050sage (ワッチョイ a301-izju)
垢版 |
2021/12/17(金) 11:45:19.21ID:2+pcMu4G0
C:\Users\a>dotnet --info
.NET SDK (global.json を反映):
Version: 6.0.100
Commit: 9e8b04bbff

ランタイム環境:
OS Name: Windows
OS Version: 10.0.19042
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\6.0.100\

Host (useful for support):
Version: 6.0.0
Commit: 4822e3c3aa

.NET SDKs installed:
6.0.100 [C:\Program Files\dotnet\sdk]

.NET runtimes installed:
Microsoft.AspNetCore.App 6.0.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 6.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 6.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

To install additional .NET runtimes or SDKs:
https://aka.ms/dotnet-download
0051デフォルトの名無しさん (ワッチョイ a301-izju)
垢版 |
2021/12/17(金) 13:11:43.35ID:2+pcMu4G0
c#を勉強しはじめたのですが、メモリ関連でヒープとスタックというのがあるのを知りました。
で、C#で型がstaticのデータはヒープ領域に格納されるのですか?それともスタック領域に格納されるのですか?
0052デフォルトの名無しさん (アウアウウー Sa9f-f5lq)
垢版 |
2021/12/17(金) 13:38:19.99ID:g/fCEX7wa
スタックって日常でも使うことあるけど、積み重ねるって意味だからな
積み重ねちゃってるから下にあるものを無理に取り出そうとすると崩れてぐちゃぐちゃになる
だから下にあるデータは上にあるのがなくなるまで取り出せない
データは上下関係なく好きなところにあるデータにアクセスしたいものだからスタックにはしない=ヒープ

でもスタックとかヒープとか覚えなくていいよ
C#のテスト問題にそんなのが出たら「もっとまともな問題出せ」って回答用紙に書いときゃいいし
C#の本やサイトにそんなのが出てるなら投げ捨てときゃいい
0054デフォルトの名無しさん (ワッチョイ 0f18-RSrH)
垢版 |
2021/12/17(金) 14:24:53.34ID:A3/Tt7aa0
メモリを確保するのはアセンブラでもそうだよ。開放するのは動的に使うってことだよ。
スタックはCPUの基本機能、ハードで実装、提供されてるものだよ。だから高速。
SPレジスタ書き換えるだけだからね。速いコード書く人はスタック、ヒープは常に意識してる。
0055デフォルトの名無しさん (アウアウウー Sa9f-f5lq)
垢版 |
2021/12/17(金) 15:05:27.40ID:g/fCEX7wa
そんなの意識するわけないだろ。どう意識するんだよw
アセンブラならpush/pop使うこと多いけど、C#じゃそんなの意識して組むのは非常に困難
意識するのは例えばこれはList<int>よりも基本通りint[]でいった方が速度有利だけど、こっちはListでいいとかそういう(ヒープの)使い方程度だよ
0059デフォルトの名無しさん (アウアウウー Sa9f-xPAV)
垢版 |
2021/12/17(金) 17:26:57.23ID:OLbNm50pa
>>51
ちょっと検索した感じだとstaticな「変数」(あくまで変数ね)は
ヒープに置かれるって意見とヒープでもスタックでもないって意見があって
はっきり分からんねw

個人的にはstaticな「変数」は一度staticコンストラクタが呼ばれて
作られてしまった後は管理が不要なので後者の方が正しいように感じるがどうだろう
0060デフォルトの名無しさん (ワッチョイ 535f-j66Y)
垢版 |
2021/12/17(金) 19:03:20.75ID:FDMn0ZP00
MSスタックどころかWindowsフォームしかできないのがMSワールドの外に出ることなんて不可能だろうな
0062デフォルトの名無しさん (ワッチョイ 3b01-jbri)
垢版 |
2021/12/17(金) 20:16:20.89ID:hfvLzPNZ0
>>51
メモリ領域にはヒープとスタックとコードがある
staticはコード領域に確保される
コードていうのはそのまんまの意味で命令が書かれてる場所
ちなみにC#のヒープはGCが管理してる特殊な領域
0063デフォルトの名無しさん (ワッチョイ a301-izju)
垢版 |
2021/12/17(金) 20:53:34.58ID:2+pcMu4G0
これ??
PS C:\Users\a\source\repos\stack\stack\bin\Debug\net6.0> dumpbin /headers stack.exe
Microsoft (R) COFF/PE Dumper Version 14.30.30706.0
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file stack.exe
PE signature found
File Type: EXECUTABLE IMAGE
<<中略>>
SECTION HEADER #3
.data name
14F8 virtual size
24000 virtual address (0000000140024000 to 00000001400254F7)
A00 size of raw data
21C00 file pointer to raw data (00021C00 to 000225FF)
0 file pointer to relocation table
0 file pointer to line numbers
0 number of relocations
0 number of line numbers
C0000040 flags
Initialized Data
Read Write
0064デフォルトの名無しさん (ワッチョイ 3ebb-fVZy)
垢版 |
2021/12/17(金) 21:35:28.65ID:IQClZtiS0
>>62
>staticはコード領域に確保される

これはあってんの?
0067デフォルトの名無しさん (ワッチョイ 2a01-7mHJ)
垢版 |
2021/12/17(金) 22:37:03.33ID:ePonqmC10
>>64
ざっくりだけどあってる

AppDomainのLoaderHeapのHigh Frequency Heapと呼ばれる場所に
MethodTable Strucureの一部として確保される
Heapと名前がつくがGC HeapやLarge Object Heapとは別で
GCはされずAppDomainがアンロードされるまで生きてる

AppDomainをざっくり言えばコード領域
0078デフォルトの名無しさん (ワッチョイ bea7-4tmb)
垢版 |
2021/12/18(土) 03:48:54.74ID:+EDLAGXQ0
別にStreamWriterのusingも疑えって言ってるわけじゃない
ただ、チェックされてる保証がないモノを無条件に信じるのはやめろってこと
少なくともMS提供品以外のusingは使うなら一度はdisposeの実装に目を通したほうがいい

ブラックボックスのライブラリはメモリリークしてても不思議じゃないから場合によっては
別プロセスにしてキックしないといけないかもしれない
0079デフォルトの名無しさん (ワッチョイ bea7-4tmb)
垢版 |
2021/12/18(土) 04:00:36.02ID:+EDLAGXQ0
そもそもなまじガベコレなんてあるから
綺麗な後始末にはヘルプをよく読まないといけないクラスが多い気がする

まあ、その前にアプリを終了してしまえば問題は起きないが
サービスとかだとこいつが牙をむく場面が多い
0080デフォルトの名無しさん (アウアウウー Sa9f-xPAV)
垢版 |
2021/12/18(土) 04:43:58.91ID:QLDMMuZWa
>>78
人の話聞かない人?
だから、同じことはDispose以外の全てのメソッドについても当てはまるでしょ。

他人の作ったものは全て信じられないから使わない。
これなら偏執狂的ではあっても論理的に一貫している。
しかしDisposeだけ疑うのは羹に(
0081デフォルトの名無しさん (ワッチョイ a301-izju)
垢版 |
2021/12/18(土) 05:17:14.21ID:4kEqj5670
>>68
厳密にいうと微妙に違う属性みたい

SECTION HEADER #1
.text name
1830C virtual size
1000 virtual address (0000000140001000 to 000000014001930B)
18400 size of raw data
400 file pointer to raw data (00000400 to 000187FF)
0 file pointer to relocation table
0 file pointer to line numbers
0 number of relocations
0 number of line numbers
60000020 flags
Code
Execute Read
0084デフォルトの名無しさん (ワッチョイ bea7-4tmb)
垢版 |
2021/12/18(土) 08:59:22.77ID:+EDLAGXQ0
>>82
失敗してないのにやるんじゃない?
usingを正常に抜けるための何らかの条件があってそれがされてないと
disposeで失敗とみなしてロールバックするんじゃね?
その条件はソースを見るか組んだやつしかわからんが
0085sage (ワッチョイ a301-izju)
垢版 |
2021/12/18(土) 09:13:54.47ID:4kEqj5670
>>55
以下ソースで30000ちょっとでスタックオーバーフロするから、
それなりに意識する必要のある人もいるように思われ
企業が作るデカイアプリとか

public class Hello
{
public static void a(int n)
{
System.Console.WriteLine(n);
a(n + 1);
}

public static void Main()
{
a(0);
System.Console.WriteLine("hello world!");
}
}
0086デフォルトの名無しさん (ワッチョイ a301-izju)
垢版 |
2021/12/18(土) 10:36:30.21ID:rkAxz2WM0
https://dotnetfiddle.net/tXv7Oq
ランダムで0〜100までの数値を出して0〜50と50〜80、80~100の場合に分けてそれぞれを表示するプログラムです
場合分けを増やすとどうしてもforが複数回繰り返してしまいます、2回目以降の
for (int i = 0; i < 5; i++)
を1回に抑えたいのですが何かいい方法はありませんか?
0089デフォルトの名無しさん (アウアウウー Sa9f-f5lq)
垢版 |
2021/12/18(土) 10:46:28.80ID:T7YxQHIHa
linqなんかを使うって方法もあるけど実質同じだからなしだよな
stringをいくつか用意しといて、最初のforの中でconsole出力するんじゃなくてstringに値を格納
for抜けてからconsole出力するとか?
0090デフォルトの名無しさん (ワッチョイ 0f18-RSrH)
垢版 |
2021/12/18(土) 11:37:28.63ID:5vur9Hw60
普通にcommitしてからdispose()すればrollbackしないんじゃねーの?
原因不明で途中終了されたらrollbackするのは普通に見える。

とにかくデストラクタがC++と同じタイミングで走ってくれれば
C#にdisposeはいらなかったんじゃないのかと初心者のボクは思うわけですよ。
0092デフォルトの名無しさん (ワッチョイ 0f18-RSrH)
垢版 |
2021/12/18(土) 12:12:33.65ID:5vur9Hw60
速度重視なのかメモリ効率重視なのかによるよな。
普通は分けたデータは再利用するので3つ分の配列を作ってそこに入れるかな。
なら場合分け処理は最初の1ループ一回しかしないで済む。
0094デフォルトの名無しさん (アウアウウー Sa9f-xPAV)
垢版 |
2021/12/18(土) 14:04:14.85ID:GkRVZLhXa
>>86
その例なら単純にdata[]を昇順にソートしてから

var i = 0;
Console.Write("0以上50未満:");
for (; data[i] < 50 && data[i] >= 0; i++) { ... }

Console.Write("50以上80未満:");
for (; data[i] < 80 && data[i] >= 50; i++) { ... }

とかでいいんじゃないの?
0096デフォルトの名無しさん (ワッチョイ 0f2f-j66Y)
垢版 |
2021/12/18(土) 14:56:48.68ID:yfxR8FS90
>>90
正確には、コミットしたあと、何もない処理をロールバックするんじゃないかな
実質何もしないのと同じ
未コミットあるかないか確認するのが丁寧ではあるだろうけど

なんにせよIDisposableなDB接続クラスを未コミットでDisposeするのは使い方が悪いわ
0098デフォルトの名無しさん (ワッチョイ a301-izju)
垢版 |
2021/12/18(土) 22:12:35.26ID:4kEqj5670
ここってスキル高そうな人いるみたいだけど、以下でランキング入りできますか?
paiza.jp/botchi/ranking
paiza.jp/steins_gate/ranking
paiza.jp/logic_summoner/top/ranking
0108デフォルトの名無しさん (アウアウウー Sa9f-xPAV)
垢版 |
2021/12/19(日) 16:56:47.20ID:EE70Ra2ja
なんか頭おかしい奴が大量に湧いてるけど、少なくとも2000年代の前半には
「自然順ソート」という概念はあった。

何が「こういう手合い」だバカw
ウンコはお前の方だろ。
0110デフォルトの名無しさん (アウアウウー Sa9f-f5lq)
垢版 |
2021/12/19(日) 17:29:08.07ID:n0pWJPWXa
"2.jpg" "123.jpg" "500.jpg" "百日紅(さるすべりの花).jpg" "百.jpg"
用途によっては漢数字も数字としてソートしたい場合もある
今回は漢数字不要だろうけど、「こういう手合い」になることは多い
0111デフォルトの名無しさん (スップ Sd2a-OcGH)
垢版 |
2021/12/19(日) 17:50:05.64ID:TLyD+52gd
ソート順って問題になることが多いからな
特に日本語は色んな文字を使うので厄介
カナとか漢字あたりの動作がめちゃくちゃでいいならライブラリなんていくらでも見つかるだろうけど後からケチ付けられないようにしとくのは大事
0116デフォルトの名無しさん (アウアウウー Sa9f-2GdG)
垢版 |
2021/12/20(月) 14:24:01.64ID:wYqxvWvia
chartコントロールについてですが、折線グラフを使用したときにデータポイント間の線上の任意のX位置を取得してその箇所のY値を取得することは可能でしょうか
0118デフォルトの名無しさん (アウアウウー Sa9f-2GdG)
垢版 |
2021/12/20(月) 14:35:19.70ID:/nEC48Zya
>>117
ありがとうございます
ちょっと試してみます
0119デフォルトの名無しさん (アウアウウー Sa9f-xPAV)
垢版 |
2021/12/20(月) 14:39:36.28ID:I6RlAoqPa
116の人が聞いてるのはいわゆる「内挿」ってやつのことだと思うけど、
そんな気の利いた機能がchartについてるかな。

使ったことないから知らんけどついてないと思うw
0121デフォルトの名無しさん (アウアウウー Sa9f-2GdG)
垢版 |
2021/12/20(月) 15:38:01.47ID:EVpX0LdIa
>>116です
そうですか。。できませんか
では取得した位置の近いほうのデータを使うことにします
ありがとうございました
0124デフォルトの名無しさん (アウアウウー Sa9f-2GdG)
垢版 |
2021/12/20(月) 18:59:07.12ID:/usP9Uara
>>123
あっ。そうですね。2点のXYデータがわかるわけだから折線だったら計算でだせますね。ありがとうございます

すみませんがもう1点だけ質問いいでしょうか
グラフの拡大縮小をしたときにX軸にスクロールバーがでると思いますが、それを元の表示に戻したいときにスクロールバーの横の小さいボタンを押すと戻りますが、これを自前のボタンイベントで実装するにはどうしたらいいでしょうか
0125デフォルトの名無しさん (アウアウウー Sa9f-xPAV)
垢版 |
2021/12/20(月) 19:19:36.55ID:I6RlAoqPa
>>124
AxisScaleView.ZoomReset ?
使ったことないのであってるかどうか知らない。
0126デフォルトの名無しさん (アウアウウー Sa9f-2GdG)
垢版 |
2021/12/20(月) 22:05:52.14ID:4d89Imwra
>>125
ありがとうございます!
期待通りの動きが確認できました
0127デフォルトの名無しさん (ワッチョイ 0f01-izju)
垢版 |
2021/12/21(火) 19:30:29.17ID:smn5oieg0
海外の12歳の少女が、NFTで1億8000万円を稼ぐ

12歳のナイラ・ヘイズ氏のNFT(※)コレクションが、数時間で160万ドル(約1億8000万円)
を稼ぎ出したと、米メディアの『Business Insider』が報じている。
ヘイズ氏は4歳で絵を描き始め、9歳のときにスマートフォンを使って彼女の代表作
「Long Neckie Ladies」を描いたという。このシリーズは3333点からなる、首の長い
多種多様な女性を描いたコレクションだ。出品後わずか数時間で売り切れとなり、
総額は約1億8000万円にのぼるという。
「アートは私が自分自身を表現し、言葉では不可能なやり方で人々を
驚かせるのためのもの」と述べている。
これまでにヘイズ氏は、NFTで1394ETH(約6億6000万円)を稼ぎ出してきた。
若きアーティストのさらなる活躍に期待しよう。
0129デフォルトの名無しさん (ワッチョイ 1f02-O/WW)
垢版 |
2021/12/21(火) 23:18:04.09ID:F5aAVbmG0
c# winForms webView2
Form1にウェブビューとボタンを配置しました。
表示したwebサイトの方のボタンを、コードで指定して押させたいんだけどできますか?

(フォームに配置したボタンを押すと、HTMLの方のボタンが押される)
0130デフォルトの名無しさん (ワッチョイ 6a8e-qezp)
垢版 |
2021/12/22(水) 00:11:20.30ID:jK1jR4AH0
できます
0134デフォルトの名無しさん (ワッチョイ 535f-eATD)
垢版 |
2021/12/22(水) 08:04:47.48ID:UZclHfmg0
JavaのSpringフレームワークみたいにウェブサービス関係を学ぶにはASP.netでいいのですか?
net coreとかnet6とか用語が新しくできてASP.NETは廃止されたりしてませんか?
0138デフォルトの名無しさん (ワッチョイ 9749-i1tV)
垢版 |
2021/12/22(水) 16:32:03.68ID:Gb4RQ3pz0
.NET 6 のASP.NET Core Web Apiでの質問です。

[ApiController]
[Route("[controller]")]
public class UserController : ControllerBase
{
private readonly ILogger<UserController> _logger;
private readonly IConfiguration _config;

public UserController(ILogger<UserController> logger, IConfiguration config, IBearerTokenValidater bearer)
{
_logger = logger;
_config = config;
}

[HttpGet(Name = "GetUsers")]
public string Get()
{
★ var _ = Request.Headers.TryGetValue("Bearer", out var apiKey);
return apiKey;
}
}

というControllerを作りました。
★の処理を本当はコンストラクタで行いたいのですが、移動すると以下のエラーが出ます。(もしくはもっと前に行いたい)

System.NullReferenceException: 'Object reference not set to an instance of an object.'
Microsoft.AspNetCore.Mvc.ControllerBase.Request.get が null を返しました。

★の処理をコンストラクタ(もしくはもっと前)で行うにはどうすればいいでしょうか。
(コンストラクタではHttpcontextを参照できないのでしょうか。エラーになるのは起動時ではなくRequestで到達した時です。)
0139デフォルトの名無しさん (ワッチョイ a6da-SJTP)
垢版 |
2021/12/22(水) 17:24:08.56ID:GlBmoaYS0
>>138
Requestヘッダにアクセスするユーティリティクラスを作ってそれをDIする。
ちょっとstackoverflow検索すれば出てくると思うが。
https://stackoverflow.com/questions/24024291/web-api-read-header-value-in-controller-constructor

まぁAPIキーを調べたいなら、いちいちControllerでやるより
StartUpの段階で検証処理を割り込ませておくのが定石だと思うが。
0140デフォルトの名無しさん (ワッチョイ 7bd3-oRuC)
垢版 |
2021/12/22(水) 19:57:47.15ID:gZ1M8pW10
char[] str = { 'A', 'A', 'A', '\0' };
Span<char> span = str.AsSpan();

char[]型からSpan<char>型へは、AsSpan()を使って取り出せるのですが、
Span<char>型からchar[]型へ、取り出す方法はないのでしょうか?
SpanのToArray()は新しい配列を作ってしまうので、それではないです
0141デフォルトの名無しさん (ワッチョイ dabd-lbJU)
垢版 |
2021/12/22(水) 20:11:28.65ID:LzRptcUf0
List〈staring〉の中に複数四角の座標点が入っていて、四角と四角重なってるものを再計算して重なりがなくなるまで繰り返したいんですが、これは無限ループですよね?
重なった時の再計算方法は別にしてコードの構成ってどうやってやるのか教えて欲しいです。
0143デフォルトの名無しさん (ラクッペペ MMe6-8gNF)
垢版 |
2021/12/22(水) 20:25:56.04ID:svF48xPZM
>>141
重なりは無くならないのですか?
無くなるのなら無限ではありませんね
0144デフォルトの名無しさん (アウアウウー Sa9f-f5lq)
垢版 |
2021/12/22(水) 20:54:43.67ID:ASx8K7vaa
2つの四角が重なってたら最大5つの四角に分割するってことなのかな
こんな関数用意して全組み合わせのstaringが分割しなくなるまでぶんまわす

List<staring> 分割処理(staring a, staring b)
{ (aとbが重なってたら分割して返す)}
0145sage (ワッチョイ 1f02-O/WW)
垢版 |
2021/12/22(水) 21:36:42.01ID:3dt5vZu90
>>133
ありがとうございます
0146デフォルトの名無しさん (ワッチョイ dabd-lbJU)
垢版 |
2021/12/22(水) 22:51:01.68ID:LzRptcUf0
携帯なので伝わるかあれですが、まず元リスト(oLst)を
昇順に並び替えた上で下記のループを通すと1個に対して1個の重なりに関しては問題ないんですけど、2個3個と重なるともちろん無理なんですけど、、、、

======================
for oLst ループ

 ※数値変数格納

 if nLst.Countが0はoLst[i]をadd

 else

for nLstのloop

  ※数値変数格納

  ※oLst変数とnLst変数で重なり計算
  
  計算結果でnLst書き換え、追加

======================
0147デフォルトの名無しさん (ワッチョイ 6a8e-qezp)
垢版 |
2021/12/22(水) 23:11:35.00ID:jK1jR4AH0
ロジック(頭)の問題だからスレチ
0148デフォルトの名無しさん (ワッチョイ bea7-4tmb)
垢版 |
2021/12/23(木) 00:31:07.80ID:OWAFmQuW0
重なってたらどうするん?
重なってたら重ならないように移動って処理なら無限ループありえるよ
そもそも与えられた領域に対して四角形の面積のが大きかったらどう処理しようが重ならないようにするのは不可能でしょ
0151デフォルトの名無しさん (ワッチョイ 9749-i1tV)
垢版 |
2021/12/23(木) 09:21:59.12ID:QC2UxaCs0
>>139
返信ありがとうございます。
やっぱりどこかで取ってからDIしたほうがいいですよね

.NET 5 まではStartupでいろいろやってたんですが、
.NET 6 のASP.NET Core WebだとStartup.cs自体やConfigure周りがないんですよね・・・
(少なくともプロジェクト作成時点で)
なので起動後、URLアクセス時点でコントローラに直に行ってるように見えます・・

.NET 6のググラビリティもそんな良くないですが、
DI自体はbuilder.Services.AddTransientあたりでできているので、そっちで出来ないか、
最悪はStartupを自作出来ないかまた調べてみます!
0152デフォルトの名無しさん (ワッチョイ 7b24-8o0J)
垢版 |
2021/12/23(木) 09:47:09.94ID:lsirm1I00
>>140
君はspanの実態がchar[] strと知ってるかもしれないけど言語側からはそんなこと分からないからそれは無理だね
char[]含めマネージ型はアンセーフな方法で作る事は不可能なので、もしそのspanの実態がstackallocとかだとしたら大変な事になるし
どうしてもやりたいならMemory<T>を使えばできる
0153デフォルトの名無しさん (ワッチョイ a6da-SJTP)
垢版 |
2021/12/23(木) 14:18:00.17ID:D5zS0GJt0
>>151
.NET6でもStartupがC#9.0のトップレベル構文に変わってProgram.csに組み込まれただけでしょ?
例えばJWTならProgram.csで以下のように検証処理を登録可能じゃないのかな

using (var serviceScope = app.Services.CreateScope())
{
  services.AddAuthentication( JwtBearerDefaults.AuthenticationScheme ).AddJwtBearer( options => ほげほげ);
};
でservice取得して.NET5以前のConfigureServices相当の処理が出来ると思うが。
(というか出来ないと困るw)
0154デフォルトの名無しさん (ワッチョイ a6da-SJTP)
垢版 |
2021/12/23(木) 14:20:58.23ID:D5zS0GJt0
services取得する文が抜けてた失礼
using (var serviceScope = app.Services.CreateScope())
{
  var services = serviceScope.ServiceProvider;
  services.AddAuthentication( JwtBearerDefaults.AuthenticationScheme ).AddJwtBearer( options => ほげほげ);
};
0155デフォルトの名無しさん (ワッチョイ 9749-i1tV)
垢版 |
2021/12/23(木) 16:52:51.25ID:QC2UxaCs0
>>153
ありがとうございました。
コードまで書いてもらってすみません。

Jwtでのやりかたは
https://www.c-sharpcorner.com/article/jwt-token-authentication-and-authorizations-in-net-core-6-0-web-api/
のやりかたで出来ました(サービスのDIみたいな。staticですが)

ですが今回は、JWTでなく独自のランダム文字列で、DBで検証したいと思っています。

AddAuthenticationは参考になりました!
.NET 5 ではAuthenticationHandlerを継承しHandleAuthenticateAsyncをオーバーライドしてrequestを処理してました。。
いまだにHttpContextをコンストラクタ前に参照するやり方がわかりませんが、悩んでみます。

しかし、requestHeaderを全URLでDBで解析したいってだけなので、本来複雑になるのもおかしいんですよね・・・
FilterもちょっとアレですしJwtにしても複雑になっててちょっとな・・・
0156デフォルトの名無しさん (ワッチョイ 7bd3-oRuC)
垢版 |
2021/12/23(木) 17:22:50.07ID:ZRc9iK9X0
>>152
なるほどです、ご解説ありがとうございます
Memory<T>の方も調べてみます
0157デフォルトの名無しさん (ワッチョイ d32d-8t7q)
垢版 |
2021/12/24(金) 13:32:10.30ID:XCrVpQjR0
オブジェクトをバイナリで直列化するにゃ結局どうすりゃええんじゃ。
binaryFormatterはASPじゃ使えんし、nugetで見つけたBinarySerializerも
すぐ無限ループで止まるし遅いしで使えなさそう。
JsonSerializer感覚で使えるバイナリのシリアライザは無いんか……
0158デフォルトの名無しさん (アウアウウー Sadd-j5Xv)
垢版 |
2021/12/24(金) 14:34:05.08ID:dgPpP4/Qa
バイナリであることに意味があるとは思えないので(だって全てはバイナリだから)
要するに吐き出すサイスが小さい and/or 高速であればいいんだよね?

いや答えは持ってないけどw
0160デフォルトの名無しさん (ワッチョイ d32d-8t7q)
垢版 |
2021/12/24(金) 16:56:42.12ID:XCrVpQjR0
>>158
せや。今ワイは差分データを管理してオブジェクトグラフの去就を眺められるようなアプリを作っとるんやが、
バイナリにすりゃ20バイトのデータがJsonを経由すると5倍とかに膨れてまうんや。
そんだけ差があると1000オブジェクトの各1000差分で100MBとか差が出ちまうわけで。
ここをもっと高圧縮+高速展開できるフォーマットにしたいんや。
0163デフォルトの名無しさん (ワッチョイ d32d-8t7q)
垢版 |
2021/12/24(金) 17:03:08.03ID:XCrVpQjR0
binaryWriterでやりくりするにもインスタンスが持ってる別のオブジェクトの参照をどうするか問題が面倒すぎるやろ。
binaryFormatterならその辺はスルーできるわけで。
0165デフォルトの名無しさん (スッップ Sdaf-kITW)
垢版 |
2021/12/25(土) 11:18:28.56ID:/ADmtxYCd
フォームにいろいろ書き込んだ内容を印刷したんですけど、フォーム直印刷だとリストビューとかあるので見きらないんで、なんかいい方法ないですか?
Excelに貼るとかですかね?
0167デフォルトの名無しさん (ワッチョイ b101-j5Xv)
垢版 |
2021/12/25(土) 15:24:03.77ID:sZ4+jXNJ0
>>161
パナソニックがお勧め。
0173デフォルトの名無しさん (ワッチョイ 6b8e-V3ae)
垢版 |
2021/12/25(土) 20:10:02.35ID:/fiswOOz0
>>172
馬鹿って人の言うことに耳を傾けないから馬鹿なんだよな
0174デフォルトの名無しさん (アウアウウー Sa71-ps/A)
垢版 |
2021/12/25(土) 20:37:46.29ID:gvd3przGa
こいつが部下だったらちょっとキレるかもしれんw
0186デフォルトの名無しさん (ワッチョイ 0124-3cBe)
垢版 |
2021/12/26(日) 12:01:04.09ID:+dhDC6900
ちなみにSQLiteはWindowsならwinsqlite3.dllとして組み込まれてるから別途dllをダウソする必要なくDllImport("kernel32.dll")と同じ感覚で使える
winsqlite3はstdcallだから尚更何も設定せずに呼べる
逆にオフィシャルsqlite3.dllはcdecl呼びなので注意
まぁ今時ネイティブ呼びなんて一々する奴はおらんか
0189デフォルトの名無しさん (ワッチョイ 792f-WdtH)
垢版 |
2021/12/26(日) 18:59:54.98ID:XSCzp0/m0
チキンマックナゲット?
あれバーベキューソース以外はうまくないよね
0192デフォルトの名無しさん (アウアウウー Sab3-Td/R)
垢版 |
2021/12/27(月) 09:55:41.47ID:wVOMt1/ia
me too
0206デフォルトの名無しさん (ワッチョイ a101-Zi6h)
垢版 |
2021/12/29(水) 00:52:47.99ID:O0eaohY80
guiはラズパイでwinformが起動はしたけどちょっと動かしただけでアレがねーコレがねーでコケまくったので諦めた
コンソールアプリはサーバ用途でcから置き換えたりと普通に使ってる
0207デフォルトの名無しさん (オッペケ Sr1f-YdH9)
垢版 |
2021/12/29(水) 10:57:21.23ID:BXs4L8uGr
なんでGUIって一向に解決しないんだろ
WinFormsがゴミだったからIEObjectかなんかでブラウザ表示させてそこにhtmlとcssのGUIをつくったことあったけどそれも手間で微妙だった
0211デフォルトの名無しさん (アウアウウー Sadd-j5Xv)
垢版 |
2021/12/29(水) 13:49:36.52ID:FEkVVVGta
15年以上迷走してる最大の原因はたぶん大企業病だね
バルマーさんが「デベロッパー」連呼しなくなった頃でもあるよね

あと、ラピッドリリース的なアメリカ人好みの「ノリ」もよくない。
使えねーから利用者が増えず利用者が増えないから〜の悪循環の原因になってる。
たまたまC#と.NETは割とうまくいったけど他はだいたいこれで消えてるよね
0218デフォルトの名無しさん (ワッチョイ 6b8e-V3ae)
垢版 |
2021/12/29(水) 20:52:17.04ID:Nt8x11Lh0
間違いなく理解力しとらんだろうな
0226デフォルトの名無しさん (オッペケ Sr1f-YdH9)
垢版 |
2021/12/30(木) 00:57:41.55ID:aPDyoOjbr
あーすまんやっぱできそうだね
https://qiita.com/NagaJun/items/baf00494e0841a5e767e

>>225
そうそう
バックエンドはc#でフロントはjs + React + bootstrapなどのcssフレームワークがいい

別にNode.jsでもいいんだがそれだともはやElectronになってしまうしこのスレ的に意味がない

とにかくWinFormsだとGUIが限界だしかといって今更wpfやuwpは使いたくない
0238デフォルトの名無しさん (ワッチョイ 9f5f-nHKY)
垢版 |
2021/12/30(木) 20:41:45.42ID:eW25y3/J0
表 html css javascript
裏 C#

で開発するのって効率的なのか?
0239デフォルトの名無しさん (テテンテンテン MM97-garQ)
垢版 |
2021/12/30(木) 20:46:42.24ID:Zu0xfojoM
フロント開発はReactが多分ベストなんで仕方なくJSかAltJSを使います
バックエンドは強い制約がないので好きな言語を使えばいいでしょう
そして自由に選べるならC#より快適な言語なんてありません
0241デフォルトの名無しさん (ワッチョイ 9f5f-nHKY)
垢版 |
2021/12/30(木) 20:53:16.32ID:eW25y3/J0
時代遅れのWindowsフォームからそろそろ逃げ出す先がほしいってことだよね
Web技術が好きならReact Native for Windows + macOSが選択肢になるんじゃないかな
0244デフォルトの名無しさん (ワッチョイ bb5f-g2Am)
垢版 |
2021/12/31(金) 03:13:26.16ID:AHpR20H50
何年か前からだけどC#は目的がはっきりしてる人が使う言語になった感じがする
スキルの価値とか気にする人には全く向かない
システムプログラミング用の言語とスクリプト言語だけあればいい世界になってきた感じ
C#のような立ち位置の言語の利用シーンが広がっていくことはないのではないだろうか
0249デフォルトの名無しさん (アウアウウー Sac7-TuUh)
垢版 |
2021/12/31(金) 09:50:52.09ID:i/j6j8jEa
角が丸い四角や吹き出しや、そういうのGUIを純粋なC#で作るの面倒なんだよ
そういうときにhtml/css/javascript使うと簡単に作れる。スタンドアロンでもそういう構成にすると手間が減るんだよ

俺は手間かけてc#でやる方が好きだけど。html使いだすとソースがごちゃごちゃして最悪だしオーバーヘッドも大きいから
0256デフォルトの名無しさん (ワッチョイ bb5f-g2Am)
垢版 |
2021/12/31(金) 14:52:08.44ID:AHpR20H50
コードで角を丸くするのってそんな大変だったっけ・・・
0258デフォルトの名無しさん (ブーイモ MM7f-gyb8)
垢版 |
2021/12/31(金) 15:04:09.93ID:ONP3ZHucM
こういうビジュアルデザインの実装に対する方法論って、ガチのWeb開発をやったことがある奴とない奴とでは話が通じにくいんだよね
この線とこの線は何ptの太さで間に何ptの隙間があって色は#aaff12でとか指定されるんだぞ
0260デフォルトの名無しさん (ワッチョイ 5bb0-m7xg)
垢版 |
2021/12/31(金) 15:42:51.31ID:ApQoIWIb0
そもそも、一貫したUIガイドラインに沿うべきGUIと、それぞれのサイトで独自色を出したいWebの方法論って
かなり方向性がq違うからあまり混ぜないでほしいがなぁ。
0261デフォルトの名無しさん (ワッチョイ 8b01-h6Ia)
垢版 |
2021/12/31(金) 15:43:49.86ID:2Zk/vij+0
混ぜたのはマイクロソフトでは?
0262デフォルトの名無しさん (ワッチョイ bb5f-g2Am)
垢版 |
2021/12/31(金) 15:45:01.75ID:AHpR20H50
>>258
その程度なら普通にできない?
0263デフォルトの名無しさん (ワッチョイ 8b01-h6Ia)
垢版 |
2021/12/31(金) 15:52:24.59ID:2Zk/vij+0
今年は厚生労働省が「マスクの供給は十分です」と発表したのでマスク買い溜めて、厚生労働省が「トイレットペーパーは無くなりません」と発表したので即座にトイレットペーパー買いだめしたので、一年中ウンコできたわ。
来年もこの調子で厚生労働省の流すデマに惑わされないよう生きようと思います。
0264デフォルトの名無しさん (ブーイモ MM7f-gyb8)
垢版 |
2021/12/31(金) 16:13:21.59ID:ONP3ZHucM
>>262
できるかできないかで言えばそりゃできるだろうね
今日の折込チラシのうちで一番凝ったデザインのものを完全再現した画面を作るのを想像してみ
で作って見せたらここの角はやっぱり丸くしないとか影付けて強調したいとか変更が入るんだよ
WinFormsだと技術的に対応しにくい例をあげるとすれば、例えばテキストボックスを角丸にしたとして、
統一感を持たせるためにその隣りにあるボタンも同様のデザインにしたくなったとする
こういうのはCSSなら一瞬だけど、WinFormsなら一大事だよね
0265デフォルトの名無しさん (ワッチョイ bb5f-dlbi)
垢版 |
2021/12/31(金) 16:14:58.78ID:FNrpfdyG0
>>255
これはわかる。
俺はロジックではない部分は積極的に外に出してしまいたいし、誰でもできるようにしておきたいなと思う。
そういう部分で、HTML+CSSでテンプレート作るのは滅茶苦茶ラクだよなぁって思ってる。
角丸ぐらいだったら良いんだけど、みんな無茶言ってくるからな。
0266デフォルトの名無しさん (ワッチョイ 8b01-h6Ia)
垢版 |
2021/12/31(金) 16:16:21.80ID:2Zk/vij+0
その程度なら問題なくない?
0267デフォルトの名無しさん (ワッチョイ 8b01-h6Ia)
垢版 |
2021/12/31(金) 16:17:05.46ID:2Zk/vij+0
カレーは飲み物って人は?
0269デフォルトの名無しさん (ワッチョイ bb5f-g2Am)
垢版 |
2021/12/31(金) 16:47:15.22ID:AHpR20H50
まだ時代遅れのWinForms使ってる人いたのか
あれはデザイン性やUXを捨てたものしか作れないから使わないほうがいい
0271デフォルトの名無しさん (ワッチョイ bb5f-dlbi)
垢版 |
2021/12/31(金) 16:57:44.41ID:FNrpfdyG0
>>268
実のところここは凄く楽になる。
C#側は正しくデータを入出力できる事を確認すれば良い。
JS側(というかHTML側)は与えられたJSONなりを検証して画面を正しく構築して、C#側から何かjsをevalする可能性があるならそれを全てこなせることを確認するだけ。
パキッと分けられるしどちらも自動化できる。

UIのフレームワークは業務ではReact使うことが多いけど、メンツ的な問題で個人的にはガワネイティブにはVueの方が楽だと思ってる。
流行に乗るならSvelteでも良いのでは?
0272デフォルトの名無しさん (ワッチョイ bb5f-g2Am)
垢版 |
2021/12/31(金) 17:03:51.48ID:AHpR20H50
HTML以下でしょWinFormsは
0273デフォルトの名無しさん (ワッチョイ 5bb0-m7xg)
垢版 |
2021/12/31(金) 17:10:31.19ID:ApQoIWIb0
>>271
それってただのWebでは?
俺はC#のGUI(Forms or WPFもWeb(React+express)もやってるけど、デバッグやテストはやっぱり
スタンドアロンのC#の方が楽だと感じている。
それが>>238みたいにGUI側をhtmlにしてもっと楽になるんであればと思って訊いてみたけどどうも違うようだな。
0274デフォルトの名無しさん (ワッチョイ bb5f-dlbi)
垢版 |
2021/12/31(金) 17:20:57.32ID:FNrpfdyG0
>>273
UIがWebかどうかなんかあんまり関係ないのでは?
ローカルのリソース使うんだし実際あんま関係ないと思うが。
CordovaやelectronをWebと言うかどうか、みたいな問題に聞こえる。

正直WPF以降であれば、慣れの問題では?と思うけどなぁ。
0275デフォルトの名無しさん (ワッチョイ 5bb0-m7xg)
垢版 |
2021/12/31(金) 18:17:17.40ID:ApQoIWIb0
定義はどうでもよくて、気になったのはのは実際にFormsやWPFより楽になるのかなんだが。
スタンドアロンアプリの話をしているわけじゃなさそうだからもういいけど。
0278デフォルトの名無しさん (ワッチョイ 9aad-sg8L)
垢版 |
2021/12/31(金) 19:06:50.70ID:54dO0PUs0
C#で作られたDLLでSafeFileHandleを返す関数があるんだけど
C++で呼び出すラッパーDLLを作ろうと思うんだけどどうするのがベターなんだろうか
ラッパー側でSafeFileHandleを格納するvectorとか作っておいて
Openで格納、Closeで削除するって感じでいいのだろうか
0284デフォルトの名無しさん (ワッチョイ bb5f-dlbi)
垢版 |
2021/12/31(金) 20:11:29.60ID:FNrpfdyG0
>>282
お前は本当に何も理解してないんだな。
WPFでつくる方がよっぽど面倒なんだよ、そもそも。
BlendとモックのDLL使ってコントロール作って貰ってたのが、Web技術で作って貰えるだけでも相当工数下がるの。
デザイナー×制作にでも作れるんだから。
0287デフォルトの名無しさん (ワッチョイ bb5f-g2Am)
垢版 |
2021/12/31(金) 20:26:28.10ID:AHpR20H50
このスレは能力低い人が多いからWinForms以外をすすめても意味がない
あれしか理解できない
0288デフォルトの名無しさん (ワッチョイ 2702-3Acz)
垢版 |
2021/12/31(金) 20:29:05.37ID:F5O9+7Cr0
WinFormsで事足りる案件をそれ以上でやる意味なんてないからな
0290デフォルトの名無しさん (ワッチョイ 5bb0-m7xg)
垢版 |
2021/12/31(金) 20:54:49.37ID:ApQoIWIb0
>WPFでつくる方がよっぽど面倒なんだよ、そもそも。
>BlendとモックのDLL使ってコントロール作って貰ってたのが、Web技術で作って貰えるだけでも相当工数下がるの。

つまりhtml+jsの方が楽ってのはこういうふうにカスタムコントロールを作る前提での話なのかい?
それとも、それがなくてもhtmlの方が簡単っていうことなのかい?
こんなふうにどんどん後付け条件が出てくると話が迷走していけない。
0291デフォルトの名無しさん (ワッチョイ bb5f-dlbi)
垢版 |
2021/12/31(金) 20:59:35.03ID:FNrpfdyG0
>>290
ほとんど全ての場合だよ。
カスタムコントロール作らない事の方が珍しいだろ。ペタペタと直接、素のコントロール置いて作ってるとか狂気の沙汰じゃん。
後付け条件も何も俺は最初からその想定で言ってる。
お前がどんどん原始的な例ばっかり挙げて後付け条件出してるんでは?
0293デフォルトの名無しさん (ワッチョイ 8b01-h6Ia)
垢版 |
2021/12/31(金) 21:13:20.91ID:2Zk/vij+0
>>289
それはお気の毒に。
仇討ちするなら助太刀いたしますぞ。
0294デフォルトの名無しさん (ワッチョイ 33a7-/mqy)
垢版 |
2021/12/31(金) 21:48:59.01ID:M0GZ3VlB0
WPFは結局見た目重視の癖に他のデザインツールとの連携がゴミカスだったからな
お前に食わせられるデータって何のアプリで作れるの?っていう根本的な問題が解決しない
0296デフォルトの名無しさん (ワッチョイ 33a7-/mqy)
垢版 |
2021/12/31(金) 23:02:04.13ID:M0GZ3VlB0
つか、データ内容から言ってイラレとの連携が必須なのにそこの対応がおざなりなのがいけない
そして見た目にこだわらせるツールなら
全コントロールカスタマイズ可能にしろ

もちろんイラレのデータで

これができんからwebview2なんて使ってんだろそいつも
0297デフォルトの名無しさん (ワッチョイ bb5f-dlbi)
垢版 |
2021/12/31(金) 23:38:40.48ID:FNrpfdyG0
なんでイラレなの?XDとかFigmaとかでは?
Storyboardで見ながら全カスタマイズ出来て当然かと。
デザイナーや制作にもそれができるからWebView2とかelectron使うんだが。
0301デフォルトの名無しさん (ワッチョイ bb5f-g2Am)
垢版 |
2022/01/01(土) 05:34:40.61ID:zdHw19Xx0
>>292
メーターはCommunity Toolkitにあるな
0307デフォルトの名無しさん (アウアウウー Saa5-FJ/U)
垢版 |
2022/01/01(土) 19:05:01.23ID:Je/lt7i4a
>>302
IEコンポーネントは初期設定がIE6になってるだけで、その制限解除するだけで使えるんじゃないのかな?
設定しないと使えないのは多かったけど、設定して使えないものがあった覚えはないな
0308デフォルトの名無しさん (ワッチョイ e95f-rbeQ)
垢版 |
2022/01/01(土) 19:09:06.13ID:pK4dI97g0
>>307
IEコンポーネントはパフォーマンス悪すぎて大変だったんよ。本当に悪かった。
WebGL 2.0は全くダメだし。
そしてごく最近の記法が使えないので、古い書き方で苦労するかトランスパイラで相当トランスパイルしないといかんのだけど、これもこれで大変。
0310デフォルトの名無しさん (ワッチョイ ade6-X9o+)
垢版 |
2022/01/02(日) 02:26:12.88ID:XjOyUWVU0
>>308
VML使えや
0316デフォルトの名無しさん (ワッチョイ 6eda-iZeD)
垢版 |
2022/01/03(月) 13:30:35.98ID:lKbCt2OW0
C#でNewtonsoft.Jsonを使用して
[272,1496922300000,1496934000000,"Y3913",true,"XA","XA","HSZ-HAC","HAC-DFS-WCY",1496913600000]
のようなJSONを作成できますか?
(数値と文字列の混合配列)
0319316 (ワッチョイ 6eda-iZeD)
垢版 |
2022/01/03(月) 15:23:04.22ID:lKbCt2OW0
echartsのガントチャートのデモです。
https://echarts.apache.org/examples/en/editor.html?c=custom-gantt-flight

このデモ用のデータが
https://echarts.apache.org/examples/data/asset/data/airport-schedule.json
なんですが、これをバックエンドのC#から渡したいのです。

>>316はJSON構造の一部で、他に名前付きのデータも渡します。
なのでCSVはそぐわないかと思われます。
0321デフォルトの名無しさん (ワッチョイ e22c-4nvB)
垢版 |
2022/01/03(月) 17:00:56.51ID:0xi3No7I0
var objs = new {
hoge = "hoge",
fuga = new object[] { 272, 1496922300000, "Y3913", true, "XA" },
};
var json = JsonConvert.SerializeObject(objs);
できない理由はないけどなんか他に条件とかありそうでアレだな
0326デフォルトの名無しさん (ワッチョイ ed18-TVXy)
垢版 |
2022/01/03(月) 22:52:28.05ID:TMV+x4l+0
型が分からなくてもソースが読み書きできる人が羨ましいわ。
どういう脳の論理構造してるのだろう。分からないまま読み進めるとかイライラしないの?

昔、『菊次郎の夏』って映画見て、映画見ながら、だから菊次郎って誰だよ?って
最後までイライラして発狂しそうになったの思い出したわ。ほんと糞な脚本だと思ったわ。
0328デフォルトの名無しさん (テテンテンテン MM26-8VTm)
垢版 |
2022/01/03(月) 23:54:17.33ID:/ROio/0MM
インテリセンスとAPIデザインが優秀って前提はあるだろうね
適当に.で繋げてけばなんとなくコードが出来上がる
間違ったらコンパイルエラーになる
だったらもうそれで型名は書かなくてもいいじゃない

型付スクリプト言語はその辺がまだまだ雑魚なんで型名をしっかり書かないと間違えるようにできてる
0336デフォルトの名無しさん (ワッチョイ ed18-TVXy)
垢版 |
2022/01/04(火) 11:48:21.13ID:Oz0E0ZFa0
型が分からないとほんとイライラくるよな。
今回の反応でスルーできる奴の脳みその構造がだいたい分かってきたわ。わかったつもりで何も分かってない。

ジャバスクの話だ!! そういうことか!!! ←こいつらの脳の構造はこれなんだよ。馬鹿かこいつら…
0342デフォルトの名無しさん (アウアウウー Saa5-FJ/U)
垢版 |
2022/01/04(火) 12:07:12.39ID:kSsP1HEHa
>>323見たときに
var json =
こうあったとき、デコード後のclassが入ってることあったり、json stringが入ってたり、varやjsonなんて型や変数名だとわけわかんねーよ!
って話かと思ったら全然違った。なんだこの流れ・・・
0343デフォルトの名無しさん (ワッチョイ ed18-TVXy)
垢版 |
2022/01/04(火) 12:11:24.66ID:Oz0E0ZFa0
これこれ。>>341 おれは一言もジャバスクなんて言ってないのにジャバスクの話にされて、
さらにはおれがジャバスクを後付したと妄信し、いきなり仕事したくないとかキチガイ妄想炸裂。
仕事先でこんなキチガイいたらガチで名誉毀損で訴えるわ。

これが型をスルーできる奴の脳の構造。リアルでアホだろ、こいつら…
0344デフォルトの名無しさん (ワッチョイ 9901-QLHw)
垢版 |
2022/01/04(火) 12:12:43.55ID:IgSyCTXi0
※現在は削除されています
https://i.imgur.com/1WGlGRS.png
0346デフォルトの名無しさん (テテンテンテン MM26-8VTm)
垢版 |
2022/01/04(火) 12:23:30.92ID:CklunmhzM
TypeScriptは型ヒント付きスクリプト言語にはよくあることだけど型が嘘をつけるので積極的に使わない方がいい
「型がついてるから安心だ」と思っていたら実行時に違う型の値が入っていることがよくある
なんなら生のJavaScriptの方が「型がないから全ての変数が信用できない」という前提に立てる分まだマシまである
0348デフォルトの名無しさん (テテンテンテン MM26-8VTm)
垢版 |
2022/01/04(火) 12:42:28.79ID:rprq1MIMM
>>347
まさにそれだね
cppは名前付きのキャストを使い分ける習慣が広まってるから状況は多少、マシ
TSにはanyとかいう負の遺産がある
それにJSはそれ自身ではできることが少ない言語なのでインフラapiコールに頼りがちだ
そこでanyを使いたくなくても多用するのでとにかく間違えやすい
自分がうっかり間違える可能性
チームメンバーが間違える可能性
ライブラリ作者が間違える可能性
とにかく間違いが起こりやすい
なのでTypeScriptは使わないほいがいい
0349デフォルトの名無しさん (ワッチョイ 2eb0-IeG5)
垢版 |
2022/01/04(火) 12:53:18.36ID:rkCZbU1/0
・間違ったコールバックの型付け
・間違ったasの使用
・間違った.d.tsの使用
・間違ったユーザー定義タイプガード

TypeScriptで肩を間違える可能性があるのはこんなところかね。
まぁ、自分で使いこなせないものを使わない方がいいってのはその通りだが、
他人も同じように使いこなせないわけじゃないしな。
0350デフォルトの名無しさん (テテンテンテン MM26-8VTm)
垢版 |
2022/01/04(火) 13:23:06.07ID:b15zgk0OM
>>349
間違える余地が在ることが問題
特定の個人が使いこなせるこなせないという低次元な議論じゃない
型Aと書いたものが実際にはAでないという可能性が生じた時点であらゆるコードが信頼性を失い
その検証のために心労とコストが増えて
そして実際にバグが増える

C#では例えば「DateTimeと書いた変数に実際にはstringが入っているかもしれない」などと考えてコーディングする人は誰もいない
C#ではよほどのことがなければ基本的に型が嘘をつかないからそれで上手くいく
DateTimeと書かれたらそれはDateTimeであってstringであることを考慮する必要はない

しかしTypeScriptは違う
型は平気で嘘をつく
Date型と書いた変数が実際は文字列だろうが数値だろうがお構いなしだ

TypeScriptでは型が嘘をついていないことを確かめるには
その型が嘘をついている可能性があるという前提でバリデーションを追加するか
依存してるライブラリの内部の隅々までソースを追いかけるか
そういった対策をしなければならない
それはあまりにも非生産的だ
0351デフォルトの名無しさん (テテンテンテン MM26-8VTm)
垢版 |
2022/01/04(火) 13:31:23.12ID:b15zgk0OM
function ExternalLibFunc(): string

function example() {
const s: string = ExternalLibFunc();
if (typeof s === “string”)
throw new Error(“type errro”);
// do something
}

これが安全なTypeScriptコード
stringと宣言されたものを本当にstringかどうか確かめなければならない

この確認はバカバカしいと思うがやらなければバグを踏む可能性がある
でも全てを確認するなんて大変だ
だからみんな確認を怠る
そして実際にバグが発生する
そういう言語なんだTypeScriptってのは
0353デフォルトの名無しさん (アウアウウー Saa5-45BR)
垢版 |
2022/01/04(火) 15:10:27.49ID:v2mo/5h3a
>>352
メニューやツールバーみたいのがあったら
イベントハンドラの数が増えること自体は仕方ない。

行数が増えて困ることは目的の場所を探しにくくなることだから、
対策は#regionディレクティブをうまく使って分類することぐらい
0363デフォルトの名無しさん (ワッチョイ 2eb0-IeG5)
垢版 |
2022/01/04(火) 18:24:37.24ID:rkCZbU1/0
>間違える余地が在ることが問題

完全無欠な言語以外は認められないと?

>型Aと書いたものが実際にはAでないという可能性が生じた時点であらゆるコードが信頼性を失い

どういう場合にそのようなことが起きるかがわかってないんだろうね。結局使いこなしの問題。
0364デフォルトの名無しさん (テテンテンテン MM26-8VTm)
垢版 |
2022/01/04(火) 18:27:22.35ID:h9ISFI6AM
>>363
完全無欠な言語しか使わないとまでは言わない
ただ大きな欠陥のある言語は使いたくない
感覚としてはその程度だね

どういう場合に起こるか?
それはあらゆる場面で起こりうる
ライブラリすら信用できない
0367デフォルトの名無しさん (アウアウウー Saa5-zIXK)
垢版 |
2022/01/04(火) 21:33:12.76ID:e29mAngZa
formsのchartを使ってるんだけど、20系列くらいを100ms以下でリアルタイム更新って厳しいのかな
色々試したけど更新にどうしても時間がかかる。。
0369デフォルトの名無しさん (ワッチョイ 2eb0-IeG5)
垢版 |
2022/01/04(火) 21:44:14.34ID:rkCZbU1/0
>>364
Cのポインタだって使い方を間違えたら正しい型を示さないことになるし、C自身も安全でない言語と見做される
こともあるが、それを分かったうえで正しく使う人はいるし実際広く使われている。そういうこと。
0371デフォルトの名無しさん (ワッチョイ e22c-4nvB)
垢版 |
2022/01/04(火) 22:45:31.35ID:mTPUUbcD0
>>367
サードパーティ製のチャートを探すことをお勧め
詳しくないから具体的な名前は特に挙げられないけど
とりあえずScottPlotって名前を最近見かけたので試してみては
しかし20系列もあると読みづらそうだな
0372デフォルトの名無しさん (アウアウウー Saa5-45BR)
垢版 |
2022/01/04(火) 22:57:39.12ID:xZMfmUxua
>>367
ただの折れ線グラフとかでビジュアル的に凝る必要がなければ
UserConrolから自分で作った方が早いかもね。

昔散々そういうのやってたけど、やってみると案外簡単だ。
WPFを選択するとパフォーマンス問題にぶち当たるから注意。
0373デフォルトの名無しさん (ワッチョイ 49b3-Fu3+)
垢版 |
2022/01/04(火) 23:04:51.13ID:hJBi5qqI0
おすすめ本あります?
アマゾンで独習を見たのですが第4版は不評、第3版おすすめとなってたんですが
2010年出版っというのが引っかかっているので他を探しています。

スキルはPythonでPyGameのサンプルを打ち込みつつ、解説を見て勉強してるレベルです。
その他言語の経験はなし!
0374デフォルトの名無しさん (テテンテンテン MM26-8VTm)
垢版 |
2022/01/04(火) 23:13:01.18ID:0nFT+Tq8M
>>365
違う
本来バリデーションは必要ないのにTSでは(というか型がゆるゆるのスクリプト言語全般だが)余計なバリデーションが必要ということ

string x = func();
と書いた時にC#ではxが本当に文字列であることを検証する必要はない
nullになっていないか、文字列が特定の書式を満たしているか、といった心配はあるだろう
しかし、xにintが入ってる可能性は考慮する必要はない

TSではxにnumberが入っているかも、という可能性を考慮しなければならない
これが本来やらなくていいはずのバリデーションだ
これは型が嘘をつくから起こりうること
TSの代表的な欠陥の1つだ
0377デフォルトの名無しさん (ワッチョイ 2eb0-IeG5)
垢版 |
2022/01/04(火) 23:20:34.56ID:rkCZbU1/0
>型が嘘をつく

この言い回しをよっぽど気に入っているようだけどw当然TypeScriptが勝手に嘘をつくわけはなくて、
嘘をつかせたのはそれを使うプログラマ自身だわな
0381デフォルトの名無しさん (テテンテンテン MM26-8VTm)
垢版 |
2022/01/04(火) 23:36:38.21ID:0nFT+Tq8M
>>377
TSが勝手に嘘をつくことはないがC#と比べて嘘をつかせるように導くのに長けている
プログラマは世界中に沢山いてTSを使うと漏れなくその脅威に晒される
また彼らが作成したライブラリにも嘘が潜んでいるかもしれない
0382デフォルトの名無しさん (ワッチョイ e95f-rbeQ)
垢版 |
2022/01/04(火) 23:58:26.60ID:f9obKWjH0
>>374
違わないよ。
全てTSの中であればNumberであることが担保されているのは、全てC#の中である場合と同程度に正しい。
C#の場合でも信頼境界を越えるのであればその可能性は考慮しないといけないし、TSの場合でも信頼境界を越えないのであれば気にする必要は無い。
ましてやTSというかJSはシングルスレッドなので別スレッドに壊される事も無い。
0384デフォルトの名無しさん (テテンテンテン MM26-8VTm)
垢版 |
2022/01/05(水) 00:50:54.28ID:JsfvM5KJM
>>382
全てTSでも型が保証されない
最も簡単な事例は
const x: string = 100 as any
もちろんこんなコードを書く人はいないが
複雑で膨大なアプリケーションコードを扱うプロジェクトのなかで誰一人としてミスをしないかというと
そんな保証は全くなく型に嘘をつかれることになるだろう
0387デフォルトの名無しさん (テテンテンテン MM26-8VTm)
垢版 |
2022/01/05(水) 00:59:38.17ID:JsfvM5KJM
C#ではI/Oが生じる場合にも型が嘘をつくことはない
例えばこうだ

int x = Parse<int>(inputStream);

パースエラーにより実行時に例外が発生することはある
それはどの言語でも起こりうることだ
しかし、依然としてxにstringが入ったり、DateTimeが入ったり、という、TSでは普通にあり得る悍ましい挙動を示すことは無いのだ
なぜならC#はTSと違って型が嘘をつかないから
C#の型は信頼できる
TSの型は嘘つきで信頼できない
0390デフォルトの名無しさん (テテンテンテン MM26-8VTm)
垢版 |
2022/01/05(水) 01:10:21.43ID:JsfvM5KJM
>>386
全く異なる
C#ではdynamic、リフレクション、コード生成を使えばコンパイラの検証を回避して、間違った型の変数に値を設定できる
しかし、C#でこれをやると実行時にエラーになるのだ
TSで何事もなく処理が進むのとは、全く趣が異なる
そう、TSではstringと指定した筈の変数にnumberやDateの変数が入ったまま、何事もなく進んでしまうのだ
これは本当に恐ろしい挙動だ
つまり、バグを仕込んだところから、しばらく処理が進んだところで被害が顕現する、ということだ
これはまるで、潜伏期間の長いコロナウイルスのように厄介な特性だ
この挙動はC言語などではよくあるものだったが、原因と結果が離れているのでデバッグがしにくい、とのことで先人達は大いに苦しめられたものだ
まがりなりにも後発の言語であるTSが、大昔の言語設計と同じ失敗を繰り返しているのは残念でならない
0391デフォルトの名無しさん (テテンテンテン MM26-8VTm)
垢版 |
2022/01/05(水) 01:17:22.12ID:JsfvM5KJM
>>388
低レベルなメモリアクセスでランタイムを破壊できるのはどの言語でも当たり前のことだろう
TSのように低レベルメモリアクセスでもなんでもない、ただの代入で型安全を破壊できるようなものと同列に扱うべきではない
0395デフォルトの名無しさん (ワッチョイ 8101-ooUO)
垢版 |
2022/01/05(水) 07:38:49.44ID:t5pkfnoc0
JSなんて使いたくて使ってるやつはいないって事だよ
ほかに選択肢がないから仕方なく使ってるだけで

そもそも本来TSのようなトランスパイラはこの世に存在し得ない存在
0398デフォルトの名無しさん (エアペラ SD2d-miAB)
垢版 |
2022/01/05(水) 09:57:56.22ID:5ORhcVX2D
WinFormのlistViewをタブレットで使いたいのですがlist部分を指で上下してlistをスクロールする事は出来るでしょうか
スクロールバーで上下出来るのですがスマホのように出来ないかなと
0399デフォルトの名無しさん (テテンテンテン MM26-8VTm)
垢版 |
2022/01/05(水) 10:15:33.57ID:Zzh6nSy3M
>>394
挙げられたリストでは全く足りない
こういう認識の甘さがバグを仕込むキッカケになるのだろう
そもそも人間は間違える余地があれば、いつか必ず間違える
注意してれば大丈夫、などという考え方では到底ダメだ
0404デフォルトの名無しさん (アウアウウー Saa5-FJ/U)
垢版 |
2022/01/05(水) 11:43:03.34ID:93Qk8F8ua
例えばリストビューを作るときにアイテムのTagに日時を代入しとく
そうしたら選択したアイテムの日時がすぐにわかるから。こんなのはよくやる手法だよね

で、実際にアイテムがクリックされたときにTagを読んで日時を取得しようとしたらstringだったりDateTimeだったりして型エラー。バリデーションwが必要になる
こんなの(アホがプログラミングしたら)c#でも日常茶飯事だからな
tsでも同じ。アホがプログラミングしたらバリデーションwは必須だし、普通にプログラミングしたら不要
0406デフォルトの名無しさん (ワッチョイ aebb-dPEu)
垢版 |
2022/01/05(水) 12:07:48.08ID:2gwkfiFL0
すまんが、昔、Linux + LLDBでのC#のデバッグ方法が公式サイトに書かれていたようが気がするんだけどさ
そんなようなページってどこにあるのか、誰か知ってたら教えて!!!
0407デフォルトの名無しさん (アウアウウー Saa5-45BR)
垢版 |
2022/01/05(水) 14:47:28.15ID:kRupjksVa
昔OSも乗ってない小規模組み込みをアセンブリでずっと書いてたけど、
アセンブリには当然型なんて概念そのものが存在しないが、
だからintとBCDを間違えたり、構造体のポインタを別の構造体のポインタと勘違いする
ミスが多いかと言うと、そこは意外とそうでもなかったりする。
それより生産性に対する影響の方が大きい印象だね。

まあこれは小規模かつ基本1人の開発だったからそうだっただけで、大規模かつチーム開発だと
話が変わってくるのかもしれない。
この辺はゲーム業界の人が詳しそうだね。
あの世界は下手したら90年代の終わり頃までアセンブリでやってたはず
0410デフォルトの名無しさん (スププ Sd62-rbeQ)
垢版 |
2022/01/05(水) 15:14:15.12ID:ROW6egx4d
>>384
自分が守らなければそりゃ保証もされないだろ。
C#ならある型にはある値しか入らないと思ってそう。

例えば構造体につっこんでFieldOffsetで上書きすればあっさり壊れるぞ。

[StructLayout(LayoutKind.Explicit)]
struct XXX {
 [FieldOffset(0)] public DateTime Value;
 [FieldOffset(0)] public ushort Tag;
}

でXXX.Tagに適当なもの入れたらValueは無茶苦茶になる。
0411デフォルトの名無しさん (ブーイモ MM26-8yPh)
垢版 |
2022/01/05(水) 15:54:13.43ID:qaVNdYDmM
参照型の変数にnullが入ってるかもしれないし、C#の場合は例外の型もドキュメントの記載を信じるしかないよね
結局は程度問題なんだよ
前者のnullの問題についてはnull許容参照型を使えば型として区別できるけど、null非許容だからといって絶対にnullが入らないわけではなく簡単にnullを混入させることができる
彼の大嫌いなTSと同じく、特にランタイムチェックのない紳士協定だ
0412デフォルトの名無しさん (アウアウウー Saa5-45BR)
垢版 |
2022/01/05(水) 16:24:00.16ID:kRupjksVa
っていうかこれたしか元はvarの話だよね。
繰り返しになるけど、元々の問題提起、つまり
「右辺の型が推測しづらいケースでもvarを使うのは不適切じゃないのか?」は正しいよ完全にw

匿名型を受ける場合以外のvarの目的は、「見れば分かる」冗長な繰り返しを避けて
シンプルにすること。

「かっこ悪い」みたいな中二病的動機で意地でも型を明示しないことに固執する奴はアホだが、
困ったことに現実にはそういうアホが結構いる。

この辺LINQの乱用が嫌われるのと同じなんだろうねw
シンプルにするための道具を使ってわざわざ難解にするバカw
たぶん彼はシンプルとは文字数が少ないことだと倒錯している
0415デフォルトの名無しさん (ワッチョイ ed18-TVXy)
垢版 |
2022/01/05(水) 17:28:23.80ID:C1Xb8B3u0
どんだけ小さなプロジェクトしか関わったことないのか知らないが
code reviewするときに数百、数千というvarをおまえはいちいちマウス乗せてチェックしてるのか?

型を気にしないならオープンソースもコードを確認せずビルドして使うタイプだろう。
OSS品質=誰かがチェックしてくれるはず=テストしてない=今のMSのコード品質
0426デフォルトの名無しさん (ワッチョイ 31a7-TiOx)
垢版 |
2022/01/05(水) 18:41:30.05ID:jje+EFiu0
TS、JSの型がゴミなのはわかる
c#のvarも俺は嫌い
普通に読みにくい

最近は派遣先会社のVSに仕込まれた強制変換スクリプト?で保存すると勝手にvarが明示的な型に置き換えられて
久しく見ない問題だったが
0428デフォルトの名無しさん (アウアウウー Saa5-FJ/U)
垢版 |
2022/01/05(水) 19:07:10.79ID:5TZJeeZKa
>>425
人のソース読むのにvarで省略されてるよりも、型が使われてる方が理解しやすい
もちろん>>420のようにしてくれればvarでも変わりゃしないけど、世の中そういうソースばかりじゃないし酷いのになると名前で型を騙されることあるからな
整数型にn、floatにfついてるからdがついてたらdoubleかと思ったらそれも整数だったり。そりゃないだろ・・・
0429デフォルトの名無しさん (ワッチョイ e95f-rbeQ)
垢版 |
2022/01/05(水) 19:19:51.10ID:fuEg19Cq0
限度の問題では?
MSの規約にあわせれば良いでしょ。
IEnumerable<T>で受けるべきなのにList<T>で受けてるとかそういう不適切な状態になってない限りvarで良いと思うけどな。
varは省略の為に使うのではなくて推論の為に使うんよ。
0431デフォルトの名無しさん (アウアウウー Saa5-45BR)
垢版 |
2022/01/05(水) 19:57:59.86ID:kRupjksVa
>>429
推論はするよりしない方が脳への負担が低いはずなので、
君の説を採るとvarは全面禁止すべきという結論になってしまうよw

少なくともコードの読み手(書き手ではなく)にとってのvarのメリットは
右辺の型が分かりきっている時に左辺の方でもくどくどそれを繰り返される冗長さが回避されることだ。
0433デフォルトの名無しさん (ラクッペペ MM26-X9o+)
垢版 |
2022/01/05(水) 20:09:49.34ID:34fypwCFM
書くやつは楽
コピペ盗作するやつは脳味噌が必要

var大勝利じゃん
0434デフォルトの名無しさん (ワッチョイ 31a7-TiOx)
垢版 |
2022/01/05(水) 20:11:27.06ID:jje+EFiu0
>>432
そもそもこれがゴミなのか有効なのか?
って議論がなされないまま突然導入されてほら使えだからな
VSの右クリックメニューにもvarを元に戻す機能が付いたってことはあんまり評判よくないだろコレ
0435デフォルトの名無しさん (ワッチョイ ade6-X9o+)
垢版 |
2022/01/05(水) 20:16:51.17ID:eampx4mf0
議論に参加できるぐらい出世しろ
0444デフォルトの名無しさん (ワッチョイ 2e8e-6dX5)
垢版 |
2022/01/05(水) 23:32:21.89ID:9KUuQ3bM0
わかってる奴がvar使うのはOK
馬鹿がvar使うのはNG
0446デフォルトの名無しさん (ワッチョイ e95f-rbeQ)
垢版 |
2022/01/06(木) 02:10:11.97ID:jegOl+WX0
>>431
推論させる方が脳への負担は低いよね?

型がわからなくてイライラすると言うけど、解る必要ある部分ではないのでは?
極端な話メソッドの入口と出口は型が決まってんだから。
0448デフォルトの名無しさん (アウアウウー Saa5-45BR)
垢版 |
2022/01/06(木) 02:50:36.77ID:ChZ1cCgVa
>>446
推論の主語が変わってるよw
あなたの言ってる推論の主はコンパイラ(開発環境)だよね?w

ついでに言うと、あなたがたぶん言いたいことは「書く時の負担が減らせる」ということ。
だからそうじゃなくてコードの読み手にとってのメリットが重要なのよw
そう書いてるよね?>>431

だってそうでしょ。
コードを書いてる時の書き手にとってはどの変数がどの型かなんて
当然自明なんだからvarにはメリットしかないよ。そんなの当たり前でしょw

結局varについても意見が割れるのは前にも書いた(>255)こういう意識の差があるからだろうね。
世の中KISSなんてただのお題目だと思っててなぜ重要か体感レベルで実感できない人が結構いる。
0449デフォルトの名無しさん (ワッチョイ e510-JblN)
垢版 |
2022/01/06(木) 03:46:43.08ID:Jy6L3sVt0
>>448
>コードを書いてる時の書き手にとってはどの変数がどの型かなんて当然自明なんだから

馬鹿はvarを使えばエラーが出ないという理由でvarを使っているだけで型なんか理解もしとらんのだよ
0450デフォルトの名無しさん (ワッチョイ ade6-X9o+)
垢版 |
2022/01/06(木) 06:07:27.91ID:WSidiaMA0
>>449
その発想はなかったわ
バカの考えは馬鹿にしかわからないのだな
0451デフォルトの名無しさん (スププ Sd62-rbeQ)
垢版 |
2022/01/06(木) 08:30:02.04ID:GGuE86Bnd
>>448
違うよ。
コードの書き手も読み手も楽が出来る。
varで宣言されている変数に関しては、推論を行わせて、自動的に型が決まっていても良い、というシンプルな話。

Task<IQueryable<Bar>> foo()
{
 var masters=getMasters();
 //なんかmastersを使った処理
 // :
 var predictate= e=> ... ;//変換したmastersを使った関数
IQueryable<Bar> result = xxxx.Where(predicate).Take(10);
 //resultの確認
 return result;
}
こんながあったとき、predictateとmastersはvarで充分では?
0452デフォルトの名無しさん (ワッチョイ 8101-ooUO)
垢版 |
2022/01/06(木) 09:18:51.63ID:BMV6DlOj0
全く論点が不明
コードレビューでは全てのvar変数をマウスオーバーして型を確認しなければならないと言うのもシチュエーションとして理解不能、猿が働いてる企業なのか?

そもそもそんな使用の是非の議論が必要な話なら世の中にvar禁止の組織はさぞかしあるんだろ?
御託並べる前にgithubでvar禁止にしてるC#プロジェクトでも持ってこいよw
0453デフォルトの名無しさん (ワッチョイ 8101-ooUO)
垢版 |
2022/01/06(木) 09:23:52.72ID:BMV6DlOj0
この手の「一人のstaticおじさんに大勢が説教する図」はさまざまなスレで見かけるけどまったく生産性ゼロで不毛だよな
ほかに同調する奴いない時点で自分が間違ってる可能性か考えろよ
まず自分を疑うのはエンジニアの基本やろ
0460デフォルトの名無しさん (ワッチョイ 4274-miAB)
垢版 |
2022/01/06(木) 10:36:42.54ID:cm3DDwaa0
議論用でやれば
凄い流れるんだけど
0461デフォルトの名無しさん (ワッチョイ 8101-ooUO)
垢版 |
2022/01/06(木) 10:38:33.11ID:BMV6DlOj0
数千のvarをマウスオーバーして型を調べるってんだからそんなもん猿以外の何者でもないだろw
それでカネ貰えるんだからいい仕事だなあ

で、var禁止のC#プロジェクトは見つかったのか?
さっさと探してこいよ
0466デフォルトの名無しさん (アウアウウー Saa5-FJ/U)
垢版 |
2022/01/06(木) 12:18:50.36ID:+o9sIybza
IQueryable<Bar> result = xxxx.Where(predicate).Take(10);
↑だとこの一行でBarとってるとわかる

var result = xxxx.Where(predicate).Take(10);
これだとなにかを取ってるとしかわからない。たった数文字の差だけど受け取れる情報が多くなって読みやすい
俺みたいなエスパー能力低い人間にとっては普通に書いてくれた方がありがたい
0467デフォルトの名無しさん (ブーイモ MM26-zmFY)
垢版 |
2022/01/06(木) 12:34:17.18ID:B4j0C8aZM
試してみたけどpredicateの型を明示的にExpression<Func<T>>にしてないと
WhereがIEnumelableで解釈されてだめやね
resultの型をIQueryable指定しててもコンパイルエラー

Whereにlambdaのリテラル入れた場合は varでOk
0468デフォルトの名無しさん (ワッチョイ e95f-rbeQ)
垢版 |
2022/01/06(木) 12:57:35.75ID:jegOl+WX0
>>465
すまん、そこ間違えた。varで良い。
言語によってはTask<IQuerable<Bar>>が要らない言語があるんよ。

確かにBar取ってるとわかるが、Barを取っているとわかる必要はある?

>>467
スマホで書いたらダメだな、すまん。
0471デフォルトの名無しさん (アウアウウー Saa5-FJ/U)
垢版 |
2022/01/06(木) 14:04:18.23ID:+o9sIybza
その行の前後見ればvarとあってもそれがBarだとわかる
でもBarと明示してくれたら前後見る手間なく分かる、たったそれだけの差をありがたいと言ってる

var result = colBar.Where(predicate).Take(10);
xxxxでなくcolBarというように書かれてたらvarでもBarだと分かるからありがたいし
もっと言えばresultとかやめて
var resBarTop10aroundPOI = colBarInTokyo.Where(predicate).Take(10);
こんな風にしてくれたら、この一行見るだけでそれが何しているのかが分かってありがたい
俺みたいに理解力に乏しい人間にとっては情報量多いほうがありがたいんだよ。無駄に多すぎるのは勘弁だが
0472デフォルトの名無しさん (ワッチョイ 2247-4nvB)
垢版 |
2022/01/06(木) 14:08:45.09ID:t38juXmg0
class HogeBase
{
・・・
}

class Hoge : HogeBase
{
・・・
}

static Hoge GetHoge()
{
  return new Hoge();
}

の場合


HogeBase hoge = GetHoge();

だと右辺の型確認しない主義の人はhogeの実態がHogeBase型だと勘違いしたまま作業することになるからまずいんじゃないの?
0477デフォルトの名無しさん (アウアウウー Saa5-FJ/U)
垢版 |
2022/01/06(木) 14:33:13.09ID:+o9sIybza
HogeBaseがさらにIBaseってインターフェース派生だったらどうするよ
IBase hoge = GetHoge();
hogeは何も実装できないInterfaceだから何の動作もしないはずなんて思うやつはいない

そもそも型に対して前提としてる考え方が違う
GetがHogeじゃなくてHogeBase返してきたら右辺見ても区別つかないよ
static HogeBase GetHoge()
{
  return new Hoge();
}
0483デフォルトの名無しさん (アウアウウー Saa5-45BR)
垢版 |
2022/01/06(木) 15:19:14.44ID:Rudq/m5Ya
>>451
人の話聞かない人?何が言いたいのかさっぱり分からん。

恐らく誰も、少なくとも俺は
「varを使うと自動的に左辺の変数が不明瞭になるからvarは一切使うな」
などとは言ってないの。
例えば>>431

むしろ現実的にはほとんどの場合varでいいんだよ。
それはコードの書き手にも読み手にもメリットがある。

論点は>>412に書いた通り、「右辺の型が推測しづらいケースでもvarを使うのは不適切じゃないのか?」だ。
0485デフォルトの名無しさん (ワッチョイ e549-Loja)
垢版 |
2022/01/06(木) 16:21:47.64ID:7whnQ4QD0
ワイはvarのほうが効率あがる
うちはそこはレビューよりも書き手優先でvar推奨(c#)
レビューも気にするならその段階でIDE起動してる

その現場でいちいち書かせたいんなら型明示を強制すればいいんでね
うちのとこはそんなとこまでちまちま言い合うほど暇じゃないし、それ以上にテスト充実してほしい勢
まあvarにわざわざ書き直させたりもしないねw
0486デフォルトの名無しさん (アウアウウー Saa5-FJ/U)
垢版 |
2022/01/06(木) 16:35:03.08ID:+o9sIybza
俺はvarが嫌なんじゃなくて読みにくいコードが嫌
で、読みにくい要因の一つがvarだということな
さらに自分がvar使うのが嫌なんじゃなくて他人が使ってるのが嫌。自分のコードだったらそんなこと気にしなくても読めるし
自分に優しく他人に厳しくがモットーなんだよ
0487デフォルトの名無しさん (ワッチョイ 9901-45BR)
垢版 |
2022/01/06(木) 16:36:42.04ID:OeKJG00I0
私C#良く分からないのですが、
そんな私がC#の説明することになりました。

クラスが参照型なのですが、どういう理由でこうなっているのか、
どういう意図でこうなっているのか、何と言って説明すればいいの?
本読んでも「参照型はポインタ的な雰囲気の何か」的な説明しかなくて
なんでこうなっているのか全く書いてなかった。

ちなみに、参照型=ポインタと言い切っちゃってもいいのかな??
よろしくお願いいたします。
0488デフォルトの名無しさん (ワッチョイ 9901-45BR)
垢版 |
2022/01/06(木) 16:38:59.36ID:OeKJG00I0
コード書くときはvarで書いて、
それをintとかlongに変換してくれるツールを作ればいいだけなのでは??
0491デフォルトの名無しさん (ワッチョイ 9901-1ka7)
垢版 |
2022/01/06(木) 17:35:14.31ID:WCTWOnks0
Varでも何でもいいけど読みながらその都度型を類推するよりは読む前に何をしてるか理解してから読む
大まかな流れを理解してから読むのとメクラ滅法に読むのじゃ時間が100倍も1000倍も異なるからね
書く時だってそう
0498sage (ワッチョイ 9901-qpXy)
垢版 |
2022/01/06(木) 19:25:09.72ID:OeKJG00I0
>>489 >>490 返答ありがとうございます。

「参照型とは何か」を問うているのではなくて、
クラスが参照型なのは、どういう理由でこうなっているのか、
どういう意図でこうなっているのかを問うています。
クラスを参照型にしている思想は何かということです。
0503デフォルトの名無しさん (ワッチョイ 9901-Oi6W)
垢版 |
2022/01/06(木) 19:38:04.42ID:OeKJG00I0
var addFunc(var a, var b){ return (a + b); }
とかはありですか??
0508デフォルトの名無しさん (ワッチョイ ade6-X9o+)
垢版 |
2022/01/06(木) 20:55:39.69ID:WSidiaMA0
winapiのクソキャストにはハンガリアンぐらいが丁度いい
0509デフォルトの名無しさん (アウアウウー Saa5-45BR)
垢版 |
2022/01/06(木) 20:59:03.64ID:snULIxlRa
>>487
問題設定自体を変えた方がいいかもね。
なぜ値型ではだめなのか?と。

値型だと少なくとも「フールドを増やしたサブクラスの値を
ベースクラスの型の変数に入れる」なんて芸当は難しくなるね。

というか、こういう禅問答みたいな話は(たぶん重要なんだろうとは思うけど)
初心者は後回しにした方が絶対にいいと思う。
0510デフォルトの名無しさん (ブーイモ MM6d-zmFY)
垢版 |
2022/01/06(木) 21:28:53.73ID:TiVU33P2M
>>498
参照型を理解してないんだからそれを理解するのが先

クラスが参照型なのはポインタ型や値型だと困るから
文字列が値型だとどうなるか考えてみれば?
ポインタを理解してるならすぐわかる
0517デフォルトの名無しさん (ワッチョイ ed18-TVXy)
垢版 |
2022/01/07(金) 00:09:41.99ID:qow9t6Ky0
やっつけコードしか書かないプログラマだらけの時代に何言ってんだ
昔はOSの無償サポートは10年とかだったのに今はすぐサポート切れの切り捨て。
なぜならやっつけコードで保守する気ないからだ。Win8とかEdgeとかWPFとかぜーんぶやっつけで作ってたからすぐ捨てられた。
0525デフォルトの名無しさん (ワッチョイ ed18-TVXy)
垢版 |
2022/01/07(金) 10:00:38.21ID:qow9t6Ky0
知らないうちにLINQスレもなくなってる。過疎なム板で落ちるとかよほど人気ないのか。
>>523 そうやってガキみたいに初心者相手にマウンティグして全部追い出したんじゃないのか。
0527デフォルトの名無しさん (ラクッペペ MM26-X9o+)
垢版 |
2022/01/07(金) 11:50:35.85ID:FRwoYiaWM
>>524
初心者のくせにラムダなんて生意気だ!
ってマウントですね
0528デフォルトの名無しさん (ワッチョイ 9901-45BR)
垢版 |
2022/01/07(金) 12:38:03.65ID:6zNCaZbD0
>>509
>> 値型だと少なくとも「フールドを増やしたサブクラスの値を
>> ベースクラスの型の変数に入れる」なんて芸当は難しくなるね。

すみません。良く分かりません。クラスが値型のC++で
「フールドを増やしたサブクラスの値をベースクラスの型の変数に入れる」
なんて芸当、なんの問題もなくできると思うのですが

>>510
>>文字列が値型だとどうなるか考えてみれば?

文字列は内部実装は参照ですが、ユーザ見えは値型と同じだと思うんですが・・・
内部でどう実装されているのかは、そんなに説明するつもりもないし・・・
0529デフォルトの名無しさん (スップ Sdc2-MYyk)
垢版 |
2022/01/07(金) 13:00:57.38ID:y6x0s+uzd
>>528
ベースクラスの変数に入れることはなんの問題もないけど逆の操作派生クラスに戻せなくなる
C++でもそうだけどnewされた時の型をベースクラスが覚えておかないとvirtualとかasが使えない
0530デフォルトの名無しさん (ワッチョイ 9901-45BR)
垢版 |
2022/01/07(金) 13:01:07.20ID:6zNCaZbD0
返答ありがとうございます。

>>501
>>逆に参照型じゃないならどうする?

c++ではクラスは参照型ではないですよね?
c#では構造体は参照型ではないですよね?

>>502
>> C# クラス 参照型
>> でググれば一番上にお前が望んでいる答えがあるぞ

配列が参照型なのを考慮すると、高速化・・・・
いや、そのサイト見てると高速化よりも
ポインタを無理やり追い出した弊害に思えてきました・・
0532デフォルトの名無しさん (スップ Sdc2-MYyk)
垢版 |
2022/01/07(金) 13:03:54.16ID:y6x0s+uzd
>>528
型ってのはコンパイル時に大きさ(byte数と配置)が決まってないといけないという縛りがCのときからある
長さがいくつになるか分からんstringは参照型にするしかない
0534デフォルトの名無しさん (ワッチョイ 9901-45BR)
垢版 |
2022/01/07(金) 13:08:54.79ID:6zNCaZbD0
>>529
>>C++でもそうだけど

まことに申し訳ないけど、何を言いたいのか全く理解できません。
クラスが値型のC++でも通用する話を出してきても???と思うんですが
0536デフォルトの名無しさん (ワッチョイ 9901-45BR)
垢版 |
2022/01/07(金) 13:12:31.36ID:6zNCaZbD0
>>532
それだとクラスは値型でOKという話になっちゃいます。
0537デフォルトの名無しさん (ワッチョイ 9901-45BR)
垢版 |
2022/01/07(金) 13:17:33.66ID:6zNCaZbD0
>>535
ひょっとして私根本的な所を理解していないのかな?
class clsA { class clsB { class clsC { xxx }}}
みたいなクラスの内部にクラスを含んだクラスであっても
GCでガンガン割り当てられているメモリアドレスを
動かされると言いたいのでしょうか??
0539デフォルトの名無しさん (ラクッペペ MM26-X9o+)
垢版 |
2022/01/07(金) 13:26:11.81ID:FRwoYiaWM
参照のほうが便利だからじゃね?
0540デフォルトの名無しさん (ワッチョイ 9901-45BR)
垢版 |
2022/01/07(金) 13:28:12.36ID:6zNCaZbD0
>>538
>> c#のクラスが参照型なのが許せない!!って言いたいのか?

質問を読んでそういう理解なのでしょうか?
質問を読まずにそういう理解なのでしょうか?
0543デフォルトの名無しさん (ワッチョイ ed18-TVXy)
垢版 |
2022/01/07(金) 13:51:09.32ID:qow9t6Ky0
話題が分散しすぎて流れが分からないから聞いただけなのに酷い言い掛かりだ。

C#のクラスがなぜ参照型かだって?
C#は関係ないよ。.net側の仕様だから。vb.netでも同じ。で終わりの話。
0544デフォルトの名無しさん (ラクッペペ MM26-X9o+)
垢版 |
2022/01/07(金) 13:54:19.71ID:FRwoYiaWM
>>543
その仕様をなぜ決めたかを聞いているんでしょ

こんなところで
0547デフォルトの名無しさん (ラクッペペ MM26-X9o+)
垢版 |
2022/01/07(金) 14:55:19.17ID:FRwoYiaWM
だからみんな単純な回答してるじゃん

あ、俺はどちてぼうやじゃないよ
0548デフォルトの名無しさん (ワッチョイ 9901-45BR)
垢版 |
2022/01/07(金) 15:17:14.00ID:6zNCaZbD0
>>546
>> コピーのコストが違うから分けたという単純な話

確かにそんな感じですね。
クラスが値型のc++が遅くて
クラスが参照型のc#が早いなんて
全く聞いたことないのですが、
MSがトチ狂って高速化を優先(それ以外を犠牲)したようですね。
0549デフォルトの名無しさん (ラクッペペ MM26-X9o+)
垢版 |
2022/01/07(金) 15:54:45.54ID:FRwoYiaWM
トチ狂っててワロタ
0550デフォルトの名無しさん (ドコグロ MM56-wcXw)
垢版 |
2022/01/07(金) 16:20:24.15ID:EZdfrZXhM
>>548
C++ は値型のクラスを作れるけどそれをそのま他の関数に渡すなんてことはほぼやらんぞ
そもそもCでも構造体をそのまま渡したらコピーされるからコピーコストを言うなら参照型にしてるだろ
要はC/C++はそういう制御もプログラマに開放してるがC#は開放してない(コピーはそれなりのメソッドを呼び出す)ってだけの話
0552デフォルトの名無しさん (ワッチョイ aebb-dPEu)
垢版 |
2022/01/07(金) 17:50:23.82ID:7Nc+xMj80
>C++ は値型のクラスを作れるけど

なんかもう、松永パソコン大先生みたいな話だな
0554デフォルトの名無しさん (アウアウウー Saa5-45BR)
垢版 |
2022/01/07(金) 19:02:16.87ID:NAsC2Vwba
>>528
正直C++よく知らんので調べてみたけど、だから↓にあるような「問題」があるわけだよね
https://www.cloverfield.co.jp/%E7%B5%84%E8%BE%BC%E3%81%BF%E7%8F%BE%E5%A0%B4%E3%81%AE%E3%80%8CC++%E3%80%8D%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%20%E6%98%8E%E6%97%A5%E3%81%8B%E3%82%89%E4%BD%BF%E3%81%88%E3%82%8B%E5%BE%B9%E5%BA%95%E5%85%A5%E9%96%80/3.3%20%E7%B6%99%E6%89%BF%E3%81%AE%E8%A3%8F%E5%81%B4.html

だから他の人が指摘しているstringのようなケースを無視するとしても、
値型で無理に継承を実現しようとすると、

(1) >>509に書いたように多態を諦めるか

(2) メモリ効率を犠牲にして、ベースクラスの変数のメモリ上のサイズは全ての派生クラスの
「共用体」のサイズとする。当然全ての型はinternalとして定義する必要もある。

こういうありがたくない制約が出来ちゃうでしょ
0555デフォルトの名無しさん (ワッチョイ 9901-45BR)
垢版 |
2022/01/07(金) 19:37:25.76ID:6zNCaZbD0
>>546
>>Cだって配列のコピーは重いから引数で参照渡しされるだろう?

つ【std::vectorは参照ではない】
0557デフォルトの名無しさん (ワッチョイ 9901-45BR)
垢版 |
2022/01/07(金) 19:41:19.72ID:6zNCaZbD0
>>554
>> 正直C++よく知らんので調べてみたけど、だから↓にあるような「問題」があるわけだよね

菱形継承はいろいろと問題あるからね。菱形継承問題でググってみな
それにc#は多重継承できないからね・・・
0558デフォルトの名無しさん (ワッチョイ 4124-iMNY)
垢版 |
2022/01/07(金) 19:42:11.75ID:46kMC38t0
>>555
push_backでコピーorムーブが発生するってことを言いたいん?
そのコピーコストを無視できないくらい大きなもの扱ってるときは正にC#の参照型Listのようにポインタ型のvectorを作るか、resize+インデクサアクセスで直埋め込みするじゃん
0559デフォルトの名無しさん (ワッチョイ 9901-45BR)
垢版 |
2022/01/07(金) 19:44:39.54ID:6zNCaZbD0
>>554
>> ベースクラスの変数のメモリ上のサイズは

いや、ベースクラスの変数のメモリ上のサイズは
ベースクラスが持っている変数のメモリ上のサイズの合計
(パディング考慮)でしょうが・・・
0560デフォルトの名無しさん (アウアウウー Saa5-45BR)
垢版 |
2022/01/07(金) 19:46:03.22ID:NAsC2Vwba
>>556
Unity知らんけど、印刷考えなきゃ最初から普通のデカルト座標採用してくれた方が
自然ではあるね。

むしろCRTなんていう前世紀の遺物の仕様をいまだに引きずってる方が「なぜ」のような気が
0562デフォルトの名無しさん (ワッチョイ 9901-45BR)
垢版 |
2022/01/07(金) 19:48:35.26ID:6zNCaZbD0
>>558
引数で参照渡しされるだろう?

と言ってるので『std::vectorを引数にする時は参照渡しではない』という意味で言ってるが
0563デフォルトの名無しさん (ワッチョイ 4124-iMNY)
垢版 |
2022/01/07(金) 19:54:08.11ID:46kMC38t0
>>562
C/C++には参照型も糞なく全部値型だからvectorそのままだと当然値渡しになるから言葉そのまま受け取ればそういうことになるけど
std::vectorって配列へのポインタを持ってるだけだから疑似参照型みたいなもんってことを言いたいんだろ
sizeof(std::vector<T>)のTが何であろうと固定で16byteくらいだし
0564デフォルトの名無しさん (ワッチョイ 9901-45BR)
垢版 |
2022/01/07(金) 19:54:17.18ID:6zNCaZbD0
>>561
つまり『ポインタを無理やり追い出した弊害に』だよなぁ
0567デフォルトの名無しさん (アウアウウー Saa5-45BR)
垢版 |
2022/01/07(金) 20:49:57.04ID:NAsC2Vwba
>>564
いや何でそうなるw
意味が分からん。

問題設定は「なぜクラスの変数はポインタなのか?」
だからポインタを使わないとどうなるかを示しているわけで、
実際はC#はポインタを追放なんかしてないよ
0569デフォルトの名無しさん (ワッチョイ ed18-TVXy)
垢版 |
2022/01/07(金) 21:12:41.39ID:qow9t6Ky0
だから.netの仕様だと。
言葉を借りるならポインタを追い出したのが値型だ。値型と参照型の機能の違いを仕様書で確認しなさい。
つまるところガベジコレクションからの分離。値型はスタックに乗せれる。確保も開放も高速。
つまり型が分からなくてもスルーできる奴は元から何も考えてないということだ。
0571デフォルトの名無しさん (ワッチョイ 2e8e-6dX5)
垢版 |
2022/01/08(土) 01:01:47.02ID:PQBT4Nc/0
>>570
Delphiを知らない馬鹿
0573デフォルトの名無しさん (ワッチョイ fd54-iWH+)
垢版 |
2022/01/08(土) 02:44:00.27ID:1bILROxT0
大昔にVBで作られた社内業務アプリをC#で作り直す事になったけど、
GUIはWinForms?WPF?WinUI?どれが一番メジャーなの?
WPFは死んでるとか言われてるようだし、WinUIは出たばかりで情報少ないっぽいし、古いけどWinFormsがいいの?
0575デフォルトの名無しさん (ワッチョイ e95f-QhZx)
垢版 |
2022/01/08(土) 03:13:30.02ID:IEuXTu700
WinFormsって2番目だぞ
1番使われているのはWPF
社内アプリならとりあえず.NETのバージョンは6にしたほうがいいな
以前のとパフォーマンスが段違いなので
0576デフォルトの名無しさん (アウアウウー Saa5-45BR)
垢版 |
2022/01/08(土) 04:22:41.48ID:BHQyctLJa
>>573
何がベストかは結局何を重視するのかの関数だよね。
だからたぶん各選択肢のいわゆるpros and consを挙げてもらった方がよい気がする

コスト重視ならVBにもっとも近いFormがベストだ。
視覚効果や高DPI対応が重要ならWPFがベストだけど、学習コストが高いし、
はっきり言ってパフォーマンス的にまったく使えない分野もある。

WinUIは知らんw
0577デフォルトの名無しさん (ワッチョイ e184-8XAc)
垢版 |
2022/01/08(土) 06:02:52.91ID:35B5Rb5B0
一番楽チンなのはVS2008のコンバーター使ってVB6→VB.netにコンバートし、コンパイルエラーが発生する部分をちょいと修正する事
複雑な計算式使ってる場合に計算式の移植間違いを防げる
0580デフォルトの名無しさん (ワッチョイ 5f49-nMpR)
垢版 |
2022/01/08(土) 09:56:39.05ID:PHIkImNk0
関係ないけど、こういう案件て段々広がって収拾つかなくなるか、
客がビビりはじめて結局ほぼ何もしてない変わらないみたいになるか、
ってなりがちよね
客にも腰据えてもらわないとぐだぐだになる
0583デフォルトの名無しさん (ワッチョイ dfb0-n+fn)
垢版 |
2022/01/08(土) 11:21:14.11ID:eHBvCcl00
クラサバとかの業務システムをWeb化するのはよくある話だが、スタンドアロンで済む
ただのGUIアプリをわざわざWeb化するのは割に合わんと思うがな。
それを上回るなにかメリットがないと。
0590デフォルトの名無しさん (ブーイモ MM23-gPO7)
垢版 |
2022/01/08(土) 12:47:06.13ID:v0nm/uLMM
ツール類って具体的には?
そりや業務端末でも一般的なフリーソフトとか使ってることはあるけど、
業務用に作られたスタンドアロンなツールなんて機器制御関連以外では滅多に見かけないわ
システム連携が不完全なためにローカルなアプリやVBAで局所的な自動化をやってるケースはあるけど、結局その入出力は手動で他と連携するわけで、スタンドアロンとは違うでしょ
0592デフォルトの名無しさん (ワッチョイ ffb9-3J+y)
垢版 |
2022/01/08(土) 12:50:35.22ID:VCGpsaaV0
VisualStudioでデバッグ中に変数やらクラスの中身を追っていくとき
大量にプロパティがあるとアルファベットの後半追うのに
▼で下まで流すのがかなりまどろっこしいんですが
スクロールバーもでないし・・・
もうちょっとスムーズにする方法ってあるんですかね
0593デフォルトの名無しさん (アウアウウー Saa3-mx/f)
垢版 |
2022/01/08(土) 13:01:28.24ID:Sgj71hWsa
>>590
テキストファイルの文字数や段落数カウントするだけ
指定したウインドウのスクリーンショットを取るだけ
画像をpngにするだけ
ファイルをリネームするだけ
動画からフレームや動画を切り出すだけ

こういうの実際に作ったツールだな。フリーソフトでもできるけどそういうのも開発することあるんだよ
0599デフォルトの名無しさん (ワッチョイ ff10-aGiv)
垢版 |
2022/01/08(土) 14:16:08.90ID:sJWr1x2I0
業務といっても何を指すかで見当違いなことを言い合ってたりするからな
ちなみに俺は追記式で容量が10メガ超えるログファイルを待ち時間なしに検索&色分けフィルターするビューアー
が必要だったので作った
0600デフォルトの名無しさん (ワッチョイ 5f5f-wXXk)
垢版 |
2022/01/08(土) 14:19:48.42ID:QfvG5fL40
プロパティの値についてなんですが
値が変わらないプロパティに関しては
Visual Studioの右側のプロパティから変更するのか
それともForm1.csのなかで変更するのどっちが王道でしょうか?
0603デフォルトの名無しさん (ワッチョイ 5f6e-3J+y)
垢版 |
2022/01/08(土) 18:25:53.14ID:W7HGPhnA0
>>595
変数にカーソル合わせてポップアップででてくるクラスや変数の中身がでますよね
デバッグ中にそれで実際に入っている値を追っていくことがよくあるんですが
大量にあるとアルファベット順に並んでいるせいで
たとえば コンボボックスでいうと Selected〜まで見に行くのに
Sまで下りてこなければならないですよね
ポップアップにはスクロールバーもでないから毎回スクロールしないとならなくて
それが面倒で・・・
0604デフォルトの名無しさん (アウアウウー Saa3-mx/f)
垢版 |
2022/01/08(土) 19:02:53.17ID:9AShM9M8a
デバッグで実行止めてるときに、デバッグ->ウインドウ->ウォッチでウォッチ1開いて、そこに見たい変数をドラッグ&ドロップ
配列の一部だけ見たいなら.Skip(100).Take(20)みたいに適当なlinqでもつけて
0619デフォルトの名無しさん (ワッチョイ df5f-EgL+)
垢版 |
2022/01/10(月) 22:20:21.82ID:pzAlxVbU0
何度も同じことを書かせる仕組みはプログラムの基本的な考えと違うと考えればglobal usingは妥当
0623デフォルトの名無しさん (ワッチョイ df73-0yQm)
垢版 |
2022/01/11(火) 08:18:04.81ID:34v9AEL90
VS2022からC#やる人は結構わかりにくいやろなぁ。
なぜimportもusingもなにも書いてないのに、Console.Writel...
みたいにいきなり書けるのみたいな。

グローバルにいきなり書いてるがクラスに属さないグローバル変数はあるのないのとか。
0625デフォルトの名無しさん (ワッチョイ ff33-A/Mb)
垢版 |
2022/01/11(火) 09:36:34.63ID:qBZtvv4T0
従来のようなプロジェクトテンプレートでもプロジェクトを作れるようなオプションなりテンプレートなりあればいいのにね
テンプレートぐらい自分で作れって?面倒じゃん
0629デフォルトの名無しさん (ブーイモ MM9f-gPO7)
垢版 |
2022/01/11(火) 13:10:40.24ID:Grp1ZbCtM
>>627
IDEによるコード生成を完全に排除しようとしている、と考えると理解しやすい
最近の内製系の開発では、コードの自動生成は避けてソースを極力コンパクトに保とう、という考え方が主流になっているんだよ
0631デフォルトの名無しさん (テテンテンテン MM4f-lUoQ)
垢版 |
2022/01/11(火) 13:58:30.81ID:/T2lNEPNM
コードの自動生成と言うか簡便さを求めてるのだろう
他の簡易な言語と比べると不必要な部分があるからそれを簡略化する

ボイラープレート(決まり切った特定のコードの記述 )やおまじないのような入門者にとって敷居の高いものを減らす
それ自体は問題ないはず

C#は言語的に無駄な記述が多すぎたから一気に来たんだろうな
0636デフォルトの名無しさん (ワッチョイ df73-0yQm)
垢版 |
2022/01/12(水) 00:03:33.81ID:3DcpczOy0
スクリプトとしては異常に使いにくいよ、
特にアプリのプラグインとしては致命的。
やったことあるひとならわかるよね。

スクリプトだろうと1回実行したら、そのクラス型は解放されないから。
.netは型生成してしまうと、そのクラス型は基本的にアプリ終わるまで解放されない、
間違ったと思ってクラス型の部分のスクリプト変更して再実行しても反映できないのよ、アプリ終了しないと
クラス型が解放されないから。
0637デフォルトの名無しさん (ワッチョイ df5f-EgL+)
垢版 |
2022/01/12(水) 04:14:45.93ID:qMg3RrrS0
コンパクトに書けるようになっていくのはいいと思う
元のC#は長く書くことを是としていたようで他の言語と比べると見栄えが悪い
0640デフォルトの名無しさん (アウアウウー Saa3-mx/f)
垢版 |
2022/01/12(水) 15:39:18.51ID:BLJCWDpKa
>>636
作り方しだいだけどアプリ終了しなくても
スクリプト実行&終了→スクリプトファイル書き換え→スクリプト実行で書き換えた編集が反映されるよ
開放されないってのと反映されないってのは別問題でしょ
0644デフォルトの名無しさん (スッップ Sd9f-ZOz4)
垢版 |
2022/01/13(木) 18:48:22.57ID:OK31jUfcd
質問です。
ピクチャーボックスに描画された物をボタン投下で色を印刷用に変更したいです。
元は背景色黒。線は水色。文字は黄色。四角は緑色塗りされてる物を
背景色白、四角は外枠黒線白塗り、他黒に変更したいです。

これを参考に弄って、背景色は直変更し、線は無事変更、文字は滲んだ感じになり、ほかはそのままでした。
https://dobon.net/vb/dotnet/graphics/setremaptable.html

こんなのやるなら色を再設定して再描画した方が早いですかね?
イメージ的にはCADで書いてる物を印刷時に白黒反転するみたいな感じなんですが。
0646デフォルトの名無しさん (ワッチョイ 5f54-8+uD)
垢版 |
2022/01/14(金) 07:06:02.10ID:uASM5+QH0
.net 6の Windows Forms の TreeView のサブクラスを作ったのですが、
サブクラスでOnMouseDownをオーバーライドすると動くのに、OnMouseClickをオーバーライドしても動きません。
何が原因でしょうか?
0648デフォルトの名無しさん (ワッチョイ 5f1a-sCjD)
垢版 |
2022/01/14(金) 23:45:25.88ID:8g6TvuWW0
こういう実装の隠蔽ってありだと思う?
https://ideone.com/XNNgQM

リポジトリクラスでしか使わないキークラスを外部から勝手に生成されたくないっていう着想なんだが、
特定のクラスからのみメソッド叩かせたいときとかにも使えそうな気はする
雁字搦め感は出てるし、将来の健忘症になった俺が手を付けてしまう恐れも減るしでメリットはある
ただぶっちゃけちまうとinternalで十分では?と他でもない俺自身が思ってしまった
0649デフォルトの名無しさん (ワッチョイ ffbd-qPHf)
垢版 |
2022/01/15(土) 00:11:45.90ID:TZiSYT8I0
質問させてください

using System.Collections.Generic;

class TestEnumerable
{
static public Ienumerable FromTo()
{
yield return 1;
yield return 3.14;
}

static void Main(string[] args)
{
foreach(var I in FromTo())
{
Console.Write(I);
}
}
}

上記のようなコードがあった場合
yield return1を表示、続きから実行されて
yield return3.14を表示すると思うのですが
そのあと、メソッドが終了した場合の処理がイメージできません

FromTo()メソッドが終了した後は何か値がreturnされるのでしょうか?
FromTo()メソッド終了時の挙動の詳細を教えてほしいです
0654デフォルトの名無しさん (アウアウウー Saa3-NE3x)
垢版 |
2022/01/15(土) 01:05:14.25ID:mkRG7Oi7a
>>649
メソッドのシグネチャのみたまんま
FromToはIEnumerableを返すのであって1とか3.14を返すんじゃない。

何言ってるのか理解できなかったら川俣さんの記事のイテレーターの
説明でも読んでもらった方が早いよ。
0658デフォルトの名無しさん (アウアウウー Saa3-NE3x)
垢版 |
2022/01/15(土) 01:57:04.48ID:mkRG7Oi7a
>>648
VBは確か型Bが型Aの内側で定義されている時、
BのインスタンスをAが握っているとBのprivateメンバーに
アクセスできる裏技があった気がしたんでVBならそれを使う手はあったかも。

試してみたらやはりC#ではできないw
0660デフォルトの名無しさん (アウアウウー Saa3-NE3x)
垢版 |
2022/01/15(土) 02:49:41.70ID:mkRG7Oi7a
「早い者勝ち」にしちゃうのもありかなとか思った。いやねーかw
public class Key
{
  public int Value { get; private set; }
  private static int serial = 0;
  private static Func<Key> func = () => new Key(serial++);

  private Key(int val)
  {
    Value = val;
  }

  public static Func<Key> GetCreator()
  {
    var ret = func; func = null;
    return func;
  }
}
0662デフォルトの名無しさん (ワッチョイ 7f01-KDxU)
垢版 |
2022/01/15(土) 11:19:56.44ID:6qmp/Z4R0
>>649
FromTo()が返すのはIEnumerable

foreachは大雑把に言えば↓に展開される
var iterator = FromTo().GetEnumerator();
while (iterator.MoveNext()){
var I = iterator.Current;
Console.WriteLine(I);
}

イテレータとかイテラブルでググるといい
.NETの型名だとIEnumrator<T>とIEnumerable<T>
0667デフォルトの名無しさん (ワッチョイ ff66-acmQ)
垢版 |
2022/01/15(土) 14:48:33.55ID:6bjOtxZz0
WindowFormでTimerクラスを使ってlabelのTextを定期的に変更したのですが
「有効ではないスレッド間の操作」ということでエラーになってしまいます。
どのようにすれば実現できるでしょうか?

public Form1()
{
InitializeComponent();

var timer = new System.Timers.Timer();
timer.Elapsed += new ElapsedEventHandler(OnElapsed_TimersTimer);
timer.Interval = 5000;

timer.Start();
}

private void OnElapsed_TimersTimer(object sender, ElapsedEventArgs e)
{
label1.Text = "1";
}
0670デフォルトの名無しさん (ワッチョイ ff66-acmQ)
垢版 |
2022/01/15(土) 16:08:48.34ID:6bjOtxZz0
Windows.Forms.Timerクラスでやりたいことができました!
後学のため、Invokeも調べたいと思います
ありがとうございます
0672デフォルトの名無しさん (ワッチョイ f901-E35g)
垢版 |
2022/01/16(日) 04:00:49.97ID:az6Mfsfa0
OpenCVSharp入れたらexeのフォルダがdllだらけになったんですが、
これ全部リリースの時にこのまま一緒に渡さないといけないんですか?
exe1個にまとめられないんですか?
0676漆黒の翼 (ワッチョイ f901-T4Xm)
垢版 |
2022/01/16(日) 20:01:08.59ID:VfeV/Qg80
教えていただきたいのですがWindowsでc#のプログラムが落ちた時にメモリダンプを吐くようにするにはどうすればいいのでしょうか?

よろしくお願いいたします
0685デフォルトの名無しさん (ワッチョイ f901-T4Xm)
垢版 |
2022/01/16(日) 21:18:19.12ID:VfeV/Qg80
>>677
ダンプ解析入門 - Visual Studioでの可視化によるC#トラブルシューティング - Grani Engineering Blog
の説明読むとどういうことがわかるかわかります
0686デフォルトの名無しさん (ワッチョイ 4201-73fV)
垢版 |
2022/01/16(日) 21:38:53.48ID:zIpkfF6j0
>ダンプ解析入門 - Visual Studioでの可視化によるC#トラブルシューティング

読んでみたけど支離滅裂な記事だった
でもメモリダンプ吐くよう設定する方法はちゃんと書いてたぞ
0692デフォルトの名無しさん (ワッチョイ f901-T4Xm)
垢版 |
2022/01/16(日) 22:20:42.02ID:VfeV/Qg80
長時間連続運転するプログラムなんだけど、ちょっとずつメモリ使用料が増えていくななんて
時はメモリダンプ一択だと思うんだが・・・

というかID:8g0F/aL60さんはC#のメモリダンプ何回くらい使った経験あるの?
ゴミクズのような経験から導かれた結論は、やっぱりゴ
0693デフォルトの名無しさん (ワッチョイ cd18-UJPG)
垢版 |
2022/01/16(日) 22:24:55.74ID:el47HiNu0
例外機構が当たり前になった今ではアプリ内でcatchするだけですからね。
仮にテストですり抜けてもcatchしたらエラーログに吐けよと。

今ではWinDbgでカーネルダンプ解析するぐらいかな。
0695デフォルトの名無しさん (ワッチョイ 6e2c-Nrkm)
垢版 |
2022/01/16(日) 22:41:54.12ID:RG8YDX1E0
少しずつメモリ使用料が増えていくとか、

Ruby みたいに、世代別GC を使っていたら、
古世代は閾値を越えるまで実行されないかも知れないし、

さらに、メモリ領域が大きいと、閾値もかなり大きいだろうし、なかなか実行されない
0696デフォルトの名無しさん (ワッチョイ 91a7-rJKh)
垢版 |
2022/01/16(日) 23:17:44.09ID:8g0F/aL60
>>692
正直ないね
無駄だから
c#でリークの対応なんて無駄
精々頑張った挙げ句にウチの会社が組んだところじゃない箇所でリークしてて対応できません
みたいな事実がわかるだけ

まず、c#みたいな
厳密なメモリ管理ができない言語での
組み方を学ぶべき
3日に一度再起動するとか
機能毎にモジュール化して動かすたびに破棄するとかな
廃棄したらガベコレ適当に実行してりゃOSが片付けてくれるだろ
0697デフォルトの名無しさん (アウアウウー Sa05-76Y4)
垢版 |
2022/01/16(日) 23:31:50.74ID:I0k7QK8La
何のお役にも立てんけど、「メモリ使用料」って結構じわるねwww

まあマネージドなユーザーコードでリークが発生する原因は限られてるし、
ユーザーコードじゃないならどうしようもないし、ブル中野みたいな大鉈振るう必要って
確かにあるのかなという気はする
0699デフォルトの名無しさん (ワッチョイ 4201-73fV)
垢版 |
2022/01/16(日) 23:42:20.42ID:zIpkfF6j0
C#でも断続的に性能が極端に悪化する問題みたいなのが発生したときに
性能悪化したタイミングでダンプ吐かせると糸口がつかめたりする

そういうのはだいたい.NET Frameworkとか下位の部分が原因だけど
原因が明確になれば回避策が取れる
0703デフォルトの名無しさん (ワッチョイ 91a7-rJKh)
垢版 |
2022/01/17(月) 09:30:07.53ID:9uEhEVX70
リリースの特殊な(?)解放方法なんて半ば作ったやつの趣味だからな
可能であれば別モジュールにしてキックして終わりがいい
個人製作的な(会社内であっても)ライブラリだとusingのdispose実装忘れはよくある
信じて使うと後ろからバッサリだ
0707デフォルトの名無しさん (ラクッペペ MM66-Dw/N)
垢版 |
2022/01/17(月) 13:15:12.00ID:XdTy16+8M
ミリバールって昭和かよ
0708デフォルトの名無しさん (アウアウウー Sa05-76Y4)
垢版 |
2022/01/17(月) 13:45:40.07ID:McAG9Ljja
マネージドな世界で閉じている限り、Disposeの実装ミスや呼び出しの忘れは
リークの原因には普通はならないと思うけどね。
単にリソースの解放が逐次的でなくなるだけ。
0711デフォルトの名無しさん (アウアウウー Sa05-76Y4)
垢版 |
2022/01/17(月) 14:05:18.68ID:McAG9Ljja
>>710
頭がおかしいのは君の方

普通のプログラマはマネージドなライブラリを挟んで
間接的にGDIのリソースを利用するんであって直接使ったりしないの

だからライブラリのコードにバグがない限りGDIを間接的に
利用しているからといってリークの原因にはならないんだよ
0712デフォルトの名無しさん (アウアウウー Sa05-76Y4)
垢版 |
2022/01/17(月) 14:10:54.78ID:McAG9Ljja
ついでに言えば、俺は別に>>702に反論したわけじゃないw
すごい被害妄想だよねw
ネトウヨさんじゃねえのw
0718デフォルトの名無しさん (ワッチョイ 6e46-76Y4)
垢版 |
2022/01/18(火) 09:23:03.79ID:HVobsaMl0
低レベルな質問で恐縮です。VisualStudioを使っています。
やりたいことは、定期的に更新されるcsvからデータを取得しDataGridViewに表示させたいです。
(つまり、DataGridViewでリアルタイムに更新されているように見せたい)
取得・更新することはできたのですが、更新時にソート状態が解除されて困っています。
DataTable・DataSet・DataSource・データバインドなどのキーワードを見つけて調べているのですが、理解力が乏しく解決できていません。
こんな方法があるよと、ヒントになる助言をいただけたらありがたいです。
よろしくお願いします。
0720デフォルトの名無しさん (ワッチョイ 022c-Nrkm)
垢版 |
2022/01/18(火) 10:18:04.98ID:jhcMMPao0
・DataGridViewにどうデータをセットしているか、どう更新しているか
・どうソートさせているか
・ソート状態が解除というのは結局どういう状況になっているのか
を具体的に
0721デフォルトの名無しさん (ワッチョイ 6e46-76Y4)
垢版 |
2022/01/18(火) 11:36:28.39ID:HVobsaMl0
反応ありがとうございます。
>>719
更新前にソートされている列を取得して、更新後に強制ソートする
という感じですね。試してみます。

>>720
>DataGridViewにどうデータをセットしているか
 今の状態は、あるサイトにのっていたコードをコピペして試しています。
//フォームデザイン
//csvデータ:person_read.csv
//button4のソース
 ソースコードはこちら ttps://dotnetfiddle.net/i89pR3
///////////////////////////////////
0722デフォルトの名無しさん (ワッチョイ 6e46-76Y4)
垢版 |
2022/01/18(火) 11:37:01.32ID:HVobsaMl0
>・どう更新しているか
 button4を押すたびにcsvからデータを更新しています(実現したらtimerで自動更新に変更予定)
>・どうソートさせているか
>・ソート状態が解除というのは結局どういう状況になっているのか
 button4クリック→初期状態(csv並び順)
 GUIのdataGridViewの任意の列(例えば年齢)をクリックしソート
  1,山田,25
  3,鈴木,28
  2,佐藤,30
  4,山田,46
 csvに 5,田中,37 が追加される
 button4クリックで更新
 csvの並びに戻る(希望はこの順で表示させたい)
  1,山田,25 → (1,山田,25)
  2,佐藤,30 → (3,鈴木,28)
  3,鈴木,28 → (2,佐藤,30)
  4,山田,46 → (5,田中,37)
  5,田中,37 → (4,山田,46)
以上です。
0725デフォルトの名無しさん (ワッチョイ a1d3-T4Xm)
垢版 |
2022/01/18(火) 13:20:14.01ID:k1mhP8XB0
C#で正規表現のperlでの「tr」と同じ事をしたいのですが、
Regexクラスにそれっぽいのがありません。
何か方法はありませんでしょうか?
0727デフォルトの名無しさん (ワッチョイ a1d3-T4Xm)
垢版 |
2022/01/18(火) 13:41:14.96ID:k1mhP8XB0
置換ではあるのですが、
pattern [a-z]
replacement [a-z]
とすると半角英字が全角英字に変換されるといった感じです
0728デフォルトの名無しさん (アウアウウー Sa05-1yOP)
垢版 |
2022/01/18(火) 13:52:43.16ID:pQS/rHaxa
正規表現でマッチした位置とマッチした文字列を取り出すのはできる
正規表現関係なく文字列を全部変換するってならできる
これを組み合わせて自分でやるしかないんじゃない?
0729デフォルトの名無しさん (ワッチョイ f901-JESV)
垢版 |
2022/01/18(火) 13:54:14.42ID:9szJ9jA+0
Regex.Replace(mojiretsu, "[a-zA-Z]", p => ((char)(p.Value[0] - 'a' + 'a')).ToString());
動確はしてない。
0730デフォルトの名無しさん (ワッチョイ a1d3-T4Xm)
垢版 |
2022/01/18(火) 14:04:35.01ID:k1mhP8XB0
なるほど、やはりないですか
ありがとうございました
0733デフォルトの名無しさん (ワッチョイ 6e46-76Y4)
垢版 |
2022/01/18(火) 18:49:27.58ID:HVobsaMl0
>>718です。
.SortedColumn で現在のソート選択列を取得
ListSortDirection で昇順・降順の状態を取得
データ更新後、.Sort で更新前のソート状態を復元することができました。

>>719さん>>724さんヒントをありがとうございます。
>>720さん、気にかけていただいてありがとうございます。
また何かあればよろしくお願いします。
0734デフォルトの名無しさん (ワッチョイ 6e8e-SRyr)
垢版 |
2022/01/18(火) 19:17:27.38ID:DZmAMHWt0
>>732
C#の言語仕様にそんなのあるわけないだろうが
頭がおかしいのかな?
0736デフォルトの名無しさん (アウアウウー Sa05-1yOP)
垢版 |
2022/01/18(火) 19:44:39.78ID:g9d5Z42+a
全角無視した比較はあるんだから変換もあればいいのにな
.net6はいたるとこでCultureInfo受け取れるようになってるから、オリジナルCultureInfo作ってやればtolowerなんかはできそう
0738デフォルトの名無しさん (ワッチョイ eebb-76Y4)
垢版 |
2022/01/19(水) 13:57:55.37ID:b1tRS/0c0
あの、Asp.netMVCでサイトを作ったんですが、
robots.txtって
Global.asaxと同じ場所もしくはViews\Layout.cshtmlと同じ場所
のどっちに置けばいいんでしょうか?
0739デフォルトの名無しさん (ワッチョイ 495f-Nrkm)
垢版 |
2022/01/19(水) 22:04:21.46ID:67zDZ4RH0
WebProgという板があるからそっち言ってみれば?
0746デフォルトの名無しさん (ワッチョイ a9d2-gAe+)
垢版 |
2022/01/21(金) 02:01:57.32ID:r2dC59Vr0
class B{}
class C:B{}
class D:C{}
static D Function(B b){ return new D();}

Func<C,C> fp = Function;

Functionの返り値DはCの派生クラスだから返り値CのFunc扱いしても大丈夫だよねってのが共変
Functionの引数BはCのベースクラスだから引数CのFunc扱いしても大丈夫だよねってのが反変

両方ともアップキャスト(asがいらない)が約束されてるから許される
0761デフォルトの名無しさん (ワッチョイ 4666-T4Xm)
垢版 |
2022/01/22(土) 10:35:14.93ID:tP9M/cw30
5年ぶりに.Netで作ることになったんだけど、.Net Frameworkってオワコンなの?
Coreとか出てきてさらに.Netに統合されるとか混沌としてて何が今の最適解なのか解らない。
どうせ作るなら今の最適で作りたいからお聞かせ願いたい。
つかWPFって普及前に死んだ感じ?
0764デフォルトの名無しさん (アウアウウー Sa05-1yOP)
垢版 |
2022/01/22(土) 11:41:22.99ID:cBfIrJY2a
オワコンっても単なる流行の話だからな中身はオワコンでもない

.NET Framework 4.8
.NET6
今選ぶならこのどちらか。どっちも長期サポートになってるはず
表面的にはどっち選んでも同じ。昔の記憶が残ってるなら4.8使った方がスムーズに扱える

UIは色々増えてるけどwinだけならWinFormsが無難
0765デフォルトの名無しさん (ワッチョイ 4666-T4Xm)
垢版 |
2022/01/22(土) 11:45:58.45ID:tP9M/cw30
>なので何もオススメできない状態
調べる限り、今はコレってのが無いんだよね。
WPFも生き腐れしてるみたいなので、
無難なWindowFormsと.Net Framework4.6.Xで良いやって思ってます。
ぬるぬるUIによる快感性はiOSに任せようと。
0766デフォルトの名無しさん (ワッチョイ 4666-T4Xm)
垢版 |
2022/01/22(土) 11:49:15.98ID:tP9M/cw30
>.NET Framework 4.8
ユーザーのコンピュータには.NET Framework 4.6が入ってるので
5年程度を稼働を目安にすると.NET Framework 4.6のが導入のハードルが
低くて良いなと思うのですが、.NET Framework 4.8のが何か優れてるんですかね?
純粋にサポートの長さかな。
0767デフォルトの名無しさん (アウアウウー Sa05-1yOP)
垢版 |
2022/01/22(土) 12:08:19.50ID:cBfIrJY2a
4.6だと今年でサポート終了かな
サポート気にしないなら・・4.xの差で機能的にはほとんど変わってないから何使っても同じ
ただちょこちょこソースコードの書き方が追加されてる(変更じゃなくて追加だから昔の書き方で問題起きない)
ぐぐってソースコードコピペしたときに新しい書式のソースコードだと思わぬエラーがでて困るかもしれないって程度
わざわざ古いの選ぶ意味もないけど、新しいの入れるのが面倒なら古いままでもいいんじゃないって程度だよ
0768デフォルトの名無しさん (テテンテンテン MM66-6Z7J)
垢版 |
2022/01/22(土) 12:11:29.47ID:63g4vstfM
基本的には.NET6を選べばいい
既存システムのメンテナンス・マイグレーションなら資産状況次第だけどFW48の方が低リスクで間違いない
ランタイムのサポート期間は意外にもFW48の方が長い
でも開発環境のサポート期間はわからない
0769デフォルトの名無しさん (ワッチョイ ae2d-T4Xm)
垢版 |
2022/01/22(土) 13:06:27.03ID:MOxbGC/+0
最近は4Kとか高解像度ディスプレイ対応(スケーリング対応)が必要になって来たせいか
WPFを使ってる所が前よりは増えた印象
他に良いのが無いから消去法で採用って感じ何だろうけど
0774デフォルトの名無しさん (ワッチョイ ae2d-T4Xm)
垢版 |
2022/01/22(土) 14:04:30.15ID:MOxbGC/+0
>>771
WinFormsの*.Designer.csと*.resxから解放されるのも大きいね
差分を見たりマージするのに問題あり過ぎた

Windows10はMay 2019 Update(1903)から標準で4.8が入ってる
現在サポート中のバージョンは全部4.8が入ってるね
0775デフォルトの名無しさん (ワッチョイ 495f-sNUe)
垢版 |
2022/01/22(土) 14:08:40.62ID:gJEoCqwv0
今の最適で作りたいなら.NET 6/WPFだな
0778デフォルトの名無しさん (アウアウウー Sa05-76Y4)
垢版 |
2022/01/22(土) 14:44:13.78ID:Ii2fD9R0a
WPFの方が高DPI(高「解像度」では必ずしもないよね)対応が優れているっていうのは
DPIが異なる複数のディスプレイ間をウィンドウが行ったり来たりするような状況を想定した話?
0787デフォルトの名無しさん (ワッチョイ df00-3lfm)
垢版 |
2022/01/22(土) 21:17:29.45ID:9EvEVFCn0
Main内
Test t = new Test();
t.Num = 1;
t.Add(10);
Console.Write(t.Num);

class Test
{
 public int Num {get; set;}
 public int Add(int p)
 {
  return Num + p;
 }
}

これで出力が1になるのは何故なのでしょう?11になると思うのですが…
0791デフォルトの名無しさん (ワッチョイ e7da-jsoe)
垢版 |
2022/01/23(日) 14:44:30.58ID:is+XSiL/0
すみません、初心者で何からしたら良いのか、何をすべきなのか分からなくて助けてください。

計算アプリを作らなければならず、調べてなんとかボタン配置とかはできたのですが、プログラミングが何をどういった順番でするのか分からなくて…

計算は
固定数字÷ボタン入力した数字(+必要に応じて選択した数字)×ドロップダウンで選択した数字

これを出来るようにしたいのですが、やるべきことは
@ボタンとドロップダウンの紐付け?認識?
A入力した数字の表示
B()の条件付け
C計算結果の表示
これで大丈夫でしょうか?

うまく質問できず、申し訳ありません。
今までプログラミングに触れたことが無く、必要情報が不足していましたら追加致します。
0793デフォルトの名無しさん (アウアウウー Sa4b-DZ2P)
垢版 |
2022/01/23(日) 15:15:05.76ID:Wu5qqWWYa
ボタン押したらボタンに対応した値を表示する(固定値で割らなくておk)
それができたら、次は固定値で割った結果を表示するように修正
それができたら、次はドロップダウンの選択が変わったことを知る方法と選択された値を取得する方法調べる
それがわかったら、ドロップダウンの値を掛けた結果を表示できるように修正
それができたら、どんな条件でこういう計算するって条件別け
かな?
0794デフォルトの名無しさん (ラクッペペ MM8f-DS0X)
垢版 |
2022/01/23(日) 15:16:44.75ID:CCpFlBt8M
それを決めたら他の人がコードを書いてくれるのか?

それならマルナゲをオススメ
0798デフォルトの名無しさん (ワッチョイ e7da-jsoe)
垢版 |
2022/01/23(日) 19:47:07.31ID:is+XSiL/0
やっと、数字の表示ができました……
何故か一桁しか表示されなくて、次の数字押したら上書きされるけど、表示はできました…


何のたしになるかは分からないです…

曰く『コロナ禍だけど、この機会に家で出来きることをしよう!』って事らしいです。
0801デフォルトの名無しさん (ワッチョイ 078b-V3GB)
垢版 |
2022/01/24(月) 12:21:02.64ID:bXxRLmwJ0
四角をグラフィックに描画する場合の座標について
g.DrawRectangle(pen, 始点x座標,始点y座標,幅,高さ);
このようにあります

ならば幅が2,2の場合
g.DrawRectangle(pen, 16, 16, 2, 2);
これで(16,16)-(17,17)で2ドットだけの中抜きがないものを想像するのですが
実際は
(16,16)-(18,18)の中央に穴がある状態の四角が描画されるようです
これは3,3指定なら理解できるんですが
幅指定なのになぜこのようになってしまうのでしょうか?
0804デフォルトの名無しさん (アウアウウー Sa4b-i5gI)
垢版 |
2022/01/24(月) 14:09:38.84ID:97kNTb42a
>>801
まあこうは言える。

まずユークリッド幾何学的な数学的に抽象化された世界で考えるべき。
その世界では、1対の平行線の距離がペンの幅より大きければ必ず平行線の間に「隙間」が出来る。

GDI+の描画はこういう抽象化された世界をピクセルの世界に写像してるだけ
0805デフォルトの名無しさん (アウアウウー Sa4b-i5gI)
垢版 |
2022/01/24(月) 18:54:49.46ID:97kNTb42a
まあたぶんこんな感じだね

(1) 論理座標の原点は(0, 0)のピクセルの中心に設定されている。つまり論理座標とピクセル座標は
0.5ずれている(少なくともペンの幅が奇数ピクセルの時は)

(2) DrawRectangleは論理的な矩形の辺がペンの中心になるように描画する

(3) だから描画された矩形はペンの幅の1/2 * 2だけ指定したサイズより大きくなる
0809デフォルトの名無しさん (ワッチョイ 7f33-AHSv)
垢版 |
2022/01/25(火) 22:23:59.29ID:bPaq+vdr0
>>807
その本なら自信持って良いよ。
record, using var, initなどのC#8以降の機能は別途学習が必要。
LINQや正規表現などは実践でないとなかなか身につかないので、だいたい理解したらどんどん読み進めるのがおすすめ。
ちなみにプログラミング未経験で、全部読むのに3ヶ月かかりました。
0817デフォルトの名無しさん (スッップ Sd7f-lJKu)
垢版 |
2022/01/26(水) 14:28:40.80ID:pfxZ0tMsd
おれも独習で勉強した
分厚いから真ん中ぐらいまでくると最初の方忘れてるわ
んでもう一度戻ってやり直したり、途中で挫折したりで
1年以上うだうだ読んでた

読み終わる前にいろいろ作って遊んでたけど
イベントとか非同期処理とか分からないとまともなの作れないんで
途中すっ飛ばしてその辺読んだり
0825デフォルトの名無しさん (ワッチョイ c55f-dxHz)
垢版 |
2022/01/28(金) 05:13:54.08ID:AmULl7RP0
全ページのヘッダに古い言語仕様の内容であることの明示くらいはしてほしい
あと初心者向けと言いながら
同じ処理でベストプラクティスと非推奨な書き方を同列に載せてるのも印象よくない
0828デフォルトの名無しさん (ワッチョイ 6646-21ac)
垢版 |
2022/01/28(金) 14:24:04.65ID:C+lFkEfx0
お世話になります。
ComboBox.IsReadOnly を使おうとしてエラー(usingまたはアセンブリが不足)が出ました。
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.controls.combobox?view=windowsdesktop-6.0
で調べ、
名前空間:System.Windows.Controls
アセンブリ:PresentationFramework.dll
を追加しました。
しかし、現時点でエラーに変化がなく困っています。他に考えられる原因があればお教えてください。
0829デフォルトの名無しさん (ワッチョイ 11e5-KfKj)
垢版 |
2022/01/28(金) 14:32:54.24ID:QwC8uFzi0
「他」とか言われてもお前以外にゃわからんのよ
0832デフォルトの名無しさん (ワッチョイ 6646-21ac)
垢版 |
2022/01/28(金) 15:31:53.40ID:C+lFkEfx0
>>829>>830
反応ありがとうございます。
はい。WinForms(VisualStudio使用)です。
ソリューションエクスプローラーの参照からアセンブリを探して追加しました。
WPF用ではなかったか確認します。
using System.Windows.Controls と書いて追加した気になっていましたが、
ソリューションエクスプローラーに同名がないのを確認しました。これが原因かもしれないので調べてみます。

>>831
盲点でした。確かにインスタンス化していません。やってみます。

みなさんのアドバイスのおかげで糸口が見えました。あとは自力で頑張ってみます。
また困ったことがあればよろしくお願いします。
0835デフォルトの名無しさん (ワッチョイ 6646-21ac)
垢版 |
2022/01/28(金) 15:51:48.62ID:C+lFkEfx0
>>832
反応ありがとうございます(横レスでも大歓迎です)
情報を端折ってしまったようで今後気を付けます。
必要になる正しい情報とはこちらでよろしいですか?

エラー CS1061 'ComboBox' に 'IsReadOnly' の定義が含まれておらず、型 'ComboBox' の最初の引数を受け付けるアクセス可能な拡張メソッド 'IsReadOnly' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足していないことを確認してください

それとも部分的であってもソースでしょうか?今回の問題では必要ないと判断してしまいましたが、次回以降気を付けます。
次回もぜひお願いします。ありがとうございました。
0837デフォルトの名無しさん (ワッチョイ b6a7-Jl4Y)
垢版 |
2022/01/28(金) 16:32:10.58ID:bcAzYVuU0
>>835

エラーメッセージもそうだけど、こっちが言ってたのは「WinFormsかWPFか」の方だね
WinFormsの方のComboBoxにはDropDownStyleプロパティがあるからこれにComboBoxStyle.DropDownListを渡せば選択可能で文字列入力を受け付けないタイプになるよ
(まあ、他の人がすでに提示しているようだけど)
0839デフォルトの名無しさん (ワッチョイ 6646-21ac)
垢版 |
2022/01/28(金) 17:05:47.31ID:C+lFkEfx0
みなさん親切で涙が出てきます。
>>836・837・838 反応ありがとうございます。

・C#にはWinFormsの他にWPFがあったのですね。WPFという言語なのかと思っていました。
今後はエラーメッセージと共にWinFormsであることを最初に宣言します(初心者すぎてすみません)

IsReadOnlyプロパティが存在しない
・はい。通常のプロパティでは見つけられませんでした。
こちらのサイトを参考にさせてもらい挑戦していました。
https://blog.t5o.me/post/20140316/c-sharp-xaml-combobox-read-only.html

・ComboBoxStyle.DropDownListとEnabledも試しに設定しました。
やりたいことは、
コンボボックス横にチェックボックスを設置
チェックボックスが真の時、コンボボックスを規定値にし操作不可能にすることですが、
上記設定でもドロップダウンボタンが反応するので別の方法を探し、上記サイトにたどり着きました。

・第2案として、チェックボックスが真の時、コンボリストを規定値以外を削除し対応しようかと考えています。
(ドロップダウンリストが空白で1行出てきてしまうのがかっこ悪いかなと考えて最善を探していました)

なんとか頑張ってみます。みなさんありがとうございました。
0842デフォルトの名無しさん (ワッチョイ b501-Y4FF)
垢版 |
2022/01/28(金) 19:13:46.87ID:l6dMzLky0
c# + visual studioでデータブレークポイント使えますか?
c#のクラスは参照型ですが、値のコピー
(int型変数i,jだと、i = jに相当する処理)
するにはどのようにすればよいのでしょうか?
0845デフォルトの名無しさん (ワッチョイ 4a0e-21ac)
垢版 |
2022/01/29(土) 16:47:47.80ID:3whatsSd0
独習C#で学習されている方が多そうですがマルチスレッド難しすぎないですか(泣)
新版を使っておりますが、P530〜の説明が意味不明です
awaitとWait()メソッドの違いがよくわかりません
どちらもタスク(サブスレッド)の処理を待機するという同じような意味という理解ですが、
なぜかサンプルプログラムで両方使われています
試しに片方削除して実行すると、ループが最後まで実行されないので、意味が違うんでしょうが調べてもよくわかりません…
どなたかご教示いただけないでしょうか
0846デフォルトの名無しさん (ワッチョイ 3a32-6WVI)
垢版 |
2022/01/29(土) 17:25:22.69ID:xNgrtKWR0
>>845
大別するならawaitは非同期、Task.Wait()は同期的、という所だけど
Task.Wait()は単純にその場でタスクの終了を待つので足踏みする事になる
awaitを使うと内部的にはその後のコードもTask化されてasyncメソッドの返り値になる

awaitまで到達した時点で呼び出し元に処理が戻るので、主にUIスレッド等でよく使われる
後続処理を追加するだけならTask.ContinueWith()も有るんだけど
UIコンポーネントは作成スレッドからしかアクセスしてはならない制約とか
後続処理を担うスケジューラ指定とか煩雑なのを纏めて糖衣構文にしたのがawait
0847デフォルトの名無しさん (アウアウウー Sa21-21ac)
垢版 |
2022/01/29(土) 18:18:28.62ID:5CdUE0YMa
>>845
助手(他のスレッド)がタマネギを炒め終わるのをジャガイモの皮を剥きながら待つのがawait
手を止めてじっと待つのがWait

awaitが画期的なのは、「助手の仕事が完了するまでは別の仕事をしつつ、完了後に
やりかけの仕事の続きをする」という本来シーケンシャルでない手続きを、あたかも
「助手の仕事が完了したら続きをやる」という単純なシーケンスであるかのように記述できること
0849デフォルトの名無しさん (ワッチョイ a5d2-8U/q)
垢版 |
2022/01/29(土) 18:50:59.09ID:wjo4lb340
awaitの正体は「Taskがすぐに終わらなかったらすぐにreturnする特殊構文」ってことを知っておけば理解はしやすいと思う
Taskが終わったらさっきawaitしたところから(途中処理を飛ばして)再開する

関数先頭に特殊構文を使うことを明記(async)しなきゃいけない

(FormとかWPFとかのGUIアプリなら裏で勝手にやってくれるから気にしなくていいが)
Taskが終わった後にawaitから再開できるように呼び出し元のスレッドでDispatcher.Run()しとかなきゃいけない
0851デフォルトの名無しさん (テテンテンテン MM3e-X7Gz)
垢版 |
2022/01/29(土) 19:28:39.37ID:RKF0PElVM
await 〇〇やっといてよろしく。私いったん席外すんで終わったら連絡ちょうだい。続きこっちで引き継ぐから

Wait 〇〇やれや!終わるまで後ろでじっと見とるからな!はよせえよ!

どっちがいい?
0853デフォルトの名無しさん (ワッチョイ a612-21ac)
垢版 |
2022/01/29(土) 20:51:42.02ID:kkw3q4n30
たとえが分かりやすいですw
イメージがわきました、みなさんありがとうございます!
もう一点だけ確認なのですが、asyncメソッドのawaitよりあとのプログラムに移るタイミングですが、
メインスレッドでプログラムが実行中のときはどちらが優先になるのでしょうか?
0855デフォルトの名無しさん (ワッチョイ ea2c-Bf/t)
垢版 |
2022/01/29(土) 21:26:41.18ID:qmqxr6WH0
WinFormという前提でいうと
まず前提としてメインスレッドではずっとメッセージループっていうループが回ってる
でマウスの入力とか再描画要求はメッセージって形でキューに貯められる
メッセージループはキューから1つメッセージを取り出してはアプリの実装に流してくる
ちなみにその辺のシステムメッセージはWinFormだとMouseMoveとかPaintとかのイベントとしてアプリが対応することになる

await以降の処理もこのメッセージを使って実現してるから
メインスレッドの手が空いて次のメッセージを処理できる態勢になるまで待たされる
0856デフォルトの名無しさん (ワッチョイ 6da7-HqMb)
垢版 |
2022/01/29(土) 22:02:51.88ID:p/SD7W260
スレッド
注意点一覧

・シングルコアで動くか?
・応答がないときに自決するか?
・失敗時のメモリリークはないか?
・タイムスケジュールはあるか?(例:1分の内AスレッドはX秒、BスレッドはY秒等)
・生存確認方法はあるか?
・実行中の状態は取得できるか?
・ログは出力できるか?
・最大使用メモリは把握できているか?
・失敗時のリザルトの受け取り方法は適切か?
・処理が複数失敗する可能性は考慮できているか?(例:ファイルオープン成功→ファイル書き込み失敗→ファイルクローズ失敗→tempフォルダ削除成功のとき何が返る?)
・本体終了時に終了できるか?
0859デフォルトの名無しさん (アウアウウー Sa21-xC/n)
垢版 |
2022/01/30(日) 03:05:22.41ID:2zm6GvSaa
async/awaitとTask.Runの使い分けが今でもよくわからん。。
0867デフォルトの名無しさん (アウアウウー Sa21-oAP+)
垢版 |
2022/01/30(日) 17:21:16.29ID:cT0our3Wa
助かるってどっかの方言なのかな。まったく意味わからなかったw
ほぼすべてがc#(とVSの組み合わせ)で助かるか、マルチスレッド関係なくそのぐらい考えとけって項目
0870デフォルトの名無しさん (テテンテンテン MM3e-X7Gz)
垢版 |
2022/01/30(日) 20:10:42.59ID:Mi/4eGx6M
awaitのおかげで非同期書きまくる現代のプログラミングでこんなチェックリストいちいち考えてたら工数足りん
それに現代の実行環境は優秀なんでほとんど考えなくていいよう出来てる
C#もJavaScriptもそう
C++とはもう時代が違う

・シングルコアで動くか?→普通に書けば当たり前に動く
・応答がないときに自決するか?→普通に書けばライブラリ側からタイムアウト例外出て落ちる
・失敗時のメモリリークはないか?→普通に書けばあり得ない
・タイムスケジュールはあるか?(例:1分の内AスレッドはX秒、BスレッドはY秒等)→大半のケースで環境に任せるのが正解。制御したいならより上のプロセスレベルで制御する
・生存確認方法はあるか?→死んだら例外でる出てないなら生きてる
・実行中の状態は取得できるか?→大半のケースで取得要件はない
・ログは出力できるか?→出来ないことなんてあるの?
・最大使用メモリは把握できているか?→環境に任せるのが正解。したいならより上のプロセスレベルで制御する
・失敗時のリザルトの受け取り方法は適切か?→例外で標準化されてる
・処理が複数失敗する可能性は考慮できているか?(例:ファイルオープン成功→ファイル書き込み失敗→ファイルクローズ失敗→tempフォルダ削除成功のとき何が返る?)→例外出たら止めろ。例外出ても進めるならしっかり設計しろ。そしてそれは非同期関係ない
・本体終了時に終了できるか?→普通に書けば猶予期間内に終了する。ロングランニングの時だけ気をつけろ
0871デフォルトの名無しさん (ブーイモ MM8e-bj7G)
垢版 |
2022/01/30(日) 20:27:29.51ID:MKtsah/wM
各アプリケーションの機能テストで確認すべき項目と
非機能要求のテストで確認すべき項目と
フレームワークの仕様テストで確認すべき項目と
全部ごちゃ混ぜだから分かりにくい

タイムアウトを含め失敗時の振る舞いは一般的な品質レベルなら全部テストする項目
0872デフォルトの名無しさん (アウアウウー Sa21-oAP+)
垢版 |
2022/01/30(日) 20:32:44.54ID:cT0our3Wa
組み込みになるとシングルコアで動くのにマルチコアで動かないとか、通信ライブラリが処理をつかんだままだとほかのスレッドが止まるとか(それマルチスレッドなのか?でも本当に起きる)
そんな感じになっていくからな。特にFreeRTOSは・・・

c#だとlockとかを知らないと色々トラブル。そっちの方が重要だろ
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/statements/lock
0880デフォルトの名無しさん (テテンテンテン MM3e-+Ul7)
垢版 |
2022/01/31(月) 08:09:11.84ID:RgoQRIUnM
>>870のどこがダメなのか分からない
スレッド制御を自前で1から書かなきゃいけなかった00年代ならともかく
async/awaitにほぼすべてを任せられて非同期を安全お手軽に書けるようになってる時代なのにさあ

脳みその中もPentium4あたりで進化が止まった老害が
async/awaitを当たり前に使う現在のコーディングスタイルについていけなくて
誰彼かまわずケチをつけてるだけにしか見えない

年取ってこういうゴミみたいなジジイにはなりたくないもんだ
0881デフォルトの名無しさん (ワッチョイ 9e10-l0pG)
垢版 |
2022/01/31(月) 09:50:16.85ID:JauXjIS80
何がしたいかによる
await/asyncを使うのは主に外部要因で待たされる時
ダウンロード残り1GBとかSQLサーバーからレスポンスが2秒以上かかってるとか
そういう感じの時クルクル回したりプログレスバーとキャンセルボタンが欲しいわけ
ボタンすら反応しませんだと、クソ重いソフトと因縁つけられちゃうの
一方マルチスレッドでCPU100%がん回しですってのがしたいことだったら
Partitioner.CreateとParallel.ForEachを使うawait/asyncは関係ない
0883デフォルトの名無しさん (アウアウウー Sa21-oAP+)
垢版 |
2022/01/31(月) 10:47:47.62ID:F4OTxaxpa
もともとがc#に合わせた話じゃないからどうとでも読み取れちゃうんだよ
分かりやすいとこで言えば例えば
> ログは出力できるか?→出来ないことなんてあるの?

プログラミングの話をしてるのだからきちんと意図通りに動くことを把握するためのDebug.WriteLineのようなログと捉えたらできないことなんてあるの?となる
でもログファイル出力と捉えたら、マルチスレッドから同じファイルに対して書き込もうとして・・・なんてできないこともある
0886デフォルトの名無しさん (アウアウウー Sa21-oAP+)
垢版 |
2022/01/31(月) 12:08:05.50ID:F4OTxaxpa
そうなんだよ
だからログ取るならこのクラス使え(c#が勝手にスレッドセーフにしてくれたり管理するよ)
マルチスレッドからファイル操作するならlockで排他制御しろ(自分でスレッドセーフにしないとトラブルぞ)
ってチェックシートならいいんだけどな
0887デフォルトの名無しさん (アウアウウー Sa21-21ac)
垢版 |
2022/01/31(月) 12:13:17.55ID:a9TU5xJTa
オラオラ交通整理マン仕事しろや早く議論スレに誘導しろよ
まさか交通整理マン自身が議論してるんじゃねえだろうな?ん?

まあ、個人的には議論は結構だけど論点は明確にして欲しいね。
正直何を争ってるのかさっぱり分からんw
こんなあいまいな話で藁人形と戦ってる奴って普段よっぽど邪険にされてるのかねwww
0889デフォルトの名無しさん (ドコグロ MMae-YJKT)
垢版 |
2022/01/31(月) 13:04:34.28ID:dnOSCP4XM
>>886
> マルチスレッドからファイル操作するならlockで排他制御しろ(自分でスレッドセーフにしないとトラブルぞ)
スレッドセーフならいいって話じゃないことぐらいは理解してから議論に参加しようよ…
0891デフォルトの名無しさん (アウアウキー Sa55-/Ngc)
垢版 |
2022/01/31(月) 19:09:11.37ID:yyWr14dta
凄まじく複雑な相談なんだけど良い?

インスタンスと対になる鍵オブジェクトって
xxxIdかxxxKeyかxxxTokenのどれで名付けるべき?

ちなみに中には格納番号が入っててリポジトリからインスタンスを引き出すのに使う
0894デフォルトの名無しさん (ワッチョイ 9e10-l0pG)
垢版 |
2022/02/01(火) 11:07:54.02ID:Z6xO941E0
IDを使うときは配列でインデクサがある、とか
Keyを使うときは辞書でKey-Valueの対がある、とか
Tokenを使うときは重複しない文字列(大抵はハッシュ)が入ってる、とか
そういう話なのかな、C#とどう関係するのか知らんけど
0897デフォルトの名無しさん (ワッチョイ 4954-l0pG)
垢版 |
2022/02/01(火) 13:48:07.91ID:1d/yMvRJ0
TextBoxの高さに合わせてFormの高さを調整したいのですが、下記のようにすると、TextChangeのたびに高さが減ってしまいます。
何が原因でしょうか?
private void textBox1_TextChanged(object sender, EventArgs e)
{
textBox1.Height = textBox1.Lines.Length * textBox1.Font.Height;
ClientSize = new Size(ClientSize.Width ,textBox1.Height);
}
0900デフォルトの名無しさん (ワッチョイ eaad-xK17)
垢版 |
2022/02/01(火) 19:55:39.20ID:x6m1XFOP0
>>897
一回目の呼び出しで
フォントの高さに合わせてtextBox1.Heightを設定する(小さくなる)
textBox1.Heightの高さに合わせてフォントの高さが変わる(小さくなる)

二回目の呼び出しで
フォントの高さに合わせてtextBox1.Heightを設定する(小さくなる)
textBox1.Heightの高さに合わせてフォントの高さが変わる(小さくなる)

というループだからでわ?
少なくともtextBox1.HeightはtextBox1.Font.Height より少し大きいはずだから
そのまま代入していくとどんどん小さくなるんだと思うわ
0901デフォルトの名無しさん (アウアウウー Sa21-21ac)
垢版 |
2022/02/02(水) 00:39:48.73ID:TKyxc9mCa
>>897
これで出来た
でも何か気付いてない問題がありそうw
private void textBox1_TextChanged(object sender, EventArgs e)
{
  var delta = textBox1.PreferredSize.Height - textBox1.Height;
  Height += delta;
  textBox1.Height += delta;
}
0903デフォルトの名無しさん (アウアウウー Sa21-21ac)
垢版 |
2022/02/02(水) 01:14:48.57ID:TKyxc9mCa
>>902
言いたいことは分からないでもないが、
恐らくセッター自身にプロパティーの値に変更がなければ何もせず戻る処理が
入っているはずなので考えすぎ。

実際問題動かしてみてそれに起因する問題があるようには見えない
0904デフォルトの名無しさん (ワッチョイ 1e82-21ac)
垢版 |
2022/02/02(水) 09:11:06.71ID:RlffTed50
WinFormsのListViewで、仮想モード、LargeIcon表示にしたとき
Shift+マウスクリックでの項目の範囲選択がクリック位置より広く選択されてしまいます。

以下は2008年の古い情報ですがWindowsXPの不具合のため回避困難とあります。
https://social.msdn.microsoft.com/Forums/ja-JP/484c578a-df46-4624-a4e7-99ceaa0588ef/2020624819212701237512383listview12391389173044612398350792596836?forum=vsgeneralja

Windows10でも解消していないようなのですが、
検索しても有用な情報が見つからずどなたか回避できてる方いないでしょうか。
0905デフォルトの名無しさん (ワッチョイ 5e66-vYAo)
垢版 |
2022/02/02(水) 09:12:35.95ID:4XyzPXmZ0
スクリーンロックを抑止したくてネットで調べて下のようなプログラムを書きました。

static async void Test(){
for(;;){
SendKeys.Send("Break");
await Task.Delay(10000);
}
}

目的は達成したのですが、Test()メソッドを終了するにはどう書けば良いでしょうか?
よろしくお願いします。
0906デフォルトの名無しさん (ワッチョイ 6ada-Xc5L)
垢版 |
2022/02/02(水) 10:25:26.24ID:qrF7Vqa00
static bool _stopTest;


public void StartTest()
{
 _stopTest = false;
 Test();
}

public void StopTest()
{
 _stopTest = true;
}

static async void Test()
{
 while( !_stopTest )
 {
  SendKeys.Send("Break");
  await Task.Delay(10000);
 }
}

止めたいところでStopTestを呼ぶ
0907デフォルトの名無しさん (ワッチョイ a62d-Y4FF)
垢版 |
2022/02/02(水) 11:00:41.80ID:tkuApL0q0
CancellationToken使おう

private CancellationTokenSource cts = new CancellationTokenSource();
private Task task;

public void Start()
{
this.cts = new CancellationTokenSource();
this.task = Test( cts.Token );
}

public void Stop()
{
this.cts.Cancel();
this.task.Wait(); // 必要があれば
}

static async Task Test( CancellationToken ct )
{
while ( ! ct.IsCancellationRequested )
{
SendKeys.Send( "Break" );
try
{
await Task.Delay( 10000, ct );
}
catch ( TaskCanceledException )
{
}
}
}
0908デフォルトの名無しさん (ワッチョイ b501-Y4FF)
垢版 |
2022/02/02(水) 12:33:54.15ID:2OSrRGw90
>>842
>> c# + visual studioでデータブレークポイント使えますか?

これひょっとして使えな
0909デフォルトの名無しさん (ワッチョイ b501-Y4FF)
垢版 |
2022/02/02(水) 12:47:34.78ID:2OSrRGw90
c#でAddressSanitizerみたいなツールはありますか?

>>これひょっとして使えな

これは「これひょっとして使えないのでは?」です
0912デフォルトの名無しさん (アウアウウー Sa21-MO11)
垢版 |
2022/02/02(水) 15:06:00.81ID:MolDdSgsa
>>907だと、クリティカルタスクの最中に例外が起きたら壊れそうだなw
>>906は、Pulseが抜けてる
0913デフォルトの名無しさん (ワッチョイ 3abd-IClH)
垢版 |
2022/02/02(水) 22:04:43.57ID:GVJKCJUY0
ピクチャーボックスに直線を実寸(o)で引きたいんですけど、どうすればよいですか?
0916デフォルトの名無しさん (ワッチョイ ea2c-Bf/t)
垢版 |
2022/02/02(水) 23:21:53.08ID:vNzv2HbB0
GDI+のDPIは可変だよ 印刷にも使うんだから
描画先がモニタの場合WindowsのDPI設定に依存して変わる
例えば125%なら120dpiだな
まあDPI設定に従うだけでモニタのDPIは恐らく別だからモニタ上で正しく表現できるわけではないけど
0918デフォルトの名無しさん (アウアウウー Sa21-21ac)
垢版 |
2022/02/02(水) 23:31:34.80ID:p1re6OTba
>>916
印刷時に物理単位(mmやインチ)を選択できるのは
プリンタの場合はdpiを報告する仕組みが最初から確立してるからで
ディスプレーの場合は残念ながらそうじゃないんでいろいろややこしいよw
0919デフォルトの名無しさん (ワッチョイ 0a2e-LlB6)
垢版 |
2022/02/03(木) 09:28:12.33ID:Nd7AcXHS0
質問させてください。
起動すると適当な番号でhttpポートを開くアプリがあります(仮にaaaa.exe)
このaaaa.exeのパスが分っている状態で、アプリが使用しているポート番号を取得したいのですが、どのように処理したら良いでしょうか?
0924デフォルトの名無しさん (ワッチョイ 5ee9-Y4FF)
垢版 |
2022/02/04(金) 07:20:32.62ID:34mLDZGV0
スクリーンロック抑止の者ですが、遅れながらメカニズムを理解できました!
ありがとうございます!
SendKeysで"Break"を定期的に押すと文章書いてる時に
ガッツリ消えるので、何のキーが良いかは探求したいと思います。
0925デフォルトの名無しさん (ワッチョイ b501-Y6bJ)
垢版 |
2022/02/04(金) 07:42:03.31ID:QVbyni0c0
似たようなソフト作ったことあるけど、キーを押下するよりマウスを現在位置から現在位置に移動するほうが普通に使ってるときの影響なくていいよ
0926デフォルトの名無しさん (ワッチョイ 5ee9-Cnlt)
垢版 |
2022/02/04(金) 17:23:13.30ID:34mLDZGV0
>似たようなソフト作ったことあるけど、キーを押下するよりマウスを現在位置から現在位置に移動するほうが普通に使ってるときの影響なくていいよ

キーインする限り、どんなに使わないキーでも影響は避けられないと気が付きました。
マウス操作をトライしたいと思います。ありがとうございます。
0933デフォルトの名無しさん (ワッチョイ bf66-2cIz)
垢版 |
2022/02/07(月) 12:45:48.73ID:eA8tvD7r0
>Windowsシステムのスリープとか退席モードのことならAPIで抑制した方がいいのでは

SetThreadExecutionStateを使うことでやりたい事がダイレクトに出来ました。
ありがとうございます!

キーイン、マウスカーソルぷるぷるも、非同期処理の使い方を知れたので、
実り多かったと感謝しております。
0934デフォルトの名無しさん (ワッチョイ f7e4-zU8i)
垢版 |
2022/02/07(月) 21:03:15.86ID:yNoTcSOm0
質問させてください
EntityFrameworkを使用して自PC内(localhost)のPostgreSQLを操作しています
普段正常に参照や更新といった処理は出来ているのですが、極々まれにデータベースとの接続がタイムアウトするケースがあります
データベースのログにもエラー等が無く、なぜタイムアウトになるのか根本の原因が掴めていないのですが、試しにタイムアウト設定の秒数を伸ばしている状態です

お聞きしたい事は、EFは接続に失敗した場合、タイムアウトの秒数になるまで何度もリトライしているのでしょうか?
また、失敗したクエリを再試行する事は可能なのでしょうか?

直接C#とは関係のない質問かもしれませんが、アドバイス頂きたいです
0937デフォルトの名無しさん (ワッチョイ f7e4-zU8i)
垢版 |
2022/02/08(火) 04:32:53.12ID:fYph1ArX0
>>935
ありがとうございます
接続する際はusingブロックで囲って使用しているので解放漏れは大丈夫だと思ってはいます…
(こういう接続の仕方です:https://qiita.com/Nossa/items/b6d84aeb134abc85f027)

接続数に関してもpg_stat_activityを使用すると、タイムアウト発生時は見れていないのですが、正常時は15程度でした(デフォルトはMax100)
0939デフォルトの名無しさん (アウアウクー MM0b-zU8i)
垢版 |
2022/02/08(火) 09:23:52.16ID:Ki5uCpbuM
>>938
System.TimeoutExceptionとSystem.Data.Entity.Core.EntityExceptionが発生している事は確認出来ました。
ただ、例外処理を書いていなかったので「ハンドルされていない例外が発生しました」以上の情報は得られませんでした…

これらを調べても接続文字列が正しいか確認をするなどの記載が多いのですが、基本的に処理が正常に行われているのでここは問題ないのではかと考えてます…
0940デフォルトの名無しさん (スップ Sd3f-EiVI)
垢版 |
2022/02/08(火) 12:22:11.88ID:MACKR5LXd
接続上限を疑って再現を目指すなら接続数をデフォルトから100→10に変えてもいいと思う

ありうるシナリオは接続上限→接続空き待ち→待っても開かないからタイムアウト
0941デフォルトの名無しさん (テテンテンテン MM8f-Hkqy)
垢版 |
2022/02/08(火) 12:30:36.89ID:QQmTWHSUM
>>934に便乗して
NpgsqlでDB接続するコンソールアプリを1分おきに起動するタスクがあるんだけど、
それなりの頻度でStsyem.TimeoutExceptionで接続失敗しちゃう
どこに問題があると疑うべきなのかなあ

と思っていまログを確認したら
半年くらい前までは2〜3日に1回(=1/1000〜1/5000位の確率)でTimeoutしてたのが
最近だと月1回くらいしか起こらなくなってた・・・
環境というかPostgreSQLサーバの負荷等の問題だったのかな・・・・・・?
0942デフォルトの名無しさん (アウアウウー Sa9b-icCT)
垢版 |
2022/02/08(火) 12:38:00.12ID:Vznqt3iZa
同時に書き込アクセスできず待たされるのはよくある
書き込んでる奴が時間かかってたらタイムアウト
プログラミング分かりやすくするなら、DBアクセスは排他処理して同時に複数接続しない。それで失敗はなくなるだろ
0944デフォルトの名無しさん (ワッチョイ 9fda-rpVz)
垢版 |
2022/02/08(火) 12:59:02.44ID:nLjBt9+k0
一概にタイムアウトと言っても、「接続タイムアウト」と「コマンドタイムアウト」があるからどっちが発生しているかをよく確認しないとね。
接続文字列のTimeout、CommandTimeout
(もしくはコード上でef経由で個別設定しているとか)

>>939
npgsqlが吐いてる例外をInnerExceptionで見れません?
0946デフォルトの名無しさん (アウアウクー MM0b-zU8i)
垢版 |
2022/02/08(火) 14:33:47.63ID:Ki5uCpbuM
>>940
ありがとうございます
なるほど、確かに下げてみれば再現が出来るかもしれません
早速試してみます
これで同じエラーが出てくれれば良いのですが…


>>944
タイムアウト設定に関して、Timeout、CommandTimeout共にデフォルトで運用していました
現在試しにそれぞれ60に伸ばしています
InnerExceptionは例外の詳細ですよね?
お恥ずかしい話ですが、例外処理を書いていなかったため、今回このエラーが分かったのもwindowsのイベントビューアで発見しました
急遽例外処理を入れたのですが、エラーが再現せず…
0947デフォルトの名無しさん (アウアウクー MM0b-zU8i)
垢版 |
2022/02/08(火) 14:42:17.36ID:Ki5uCpbuM
>>945
ありがとうございます

現在分かるエラー内容
@System.TimeoutException
ASystem.Data.Entity.Core.EntityException

各種バージョン
Npgsql:ver.4.1.3.0(ランタイムver.v4.0.30319)
PostgreSQL:PostgreSQL 13.3, compiled by Visual C++ build 1914, 64-bit
.NetFramework:4.6.1
OS:Windows10pro

エラー発生箇所コード

static void GetStartProcessTime()
{
using (var context = new DbContext())
{
var processingTimeTable = context.CheckprocessingTimeTable.First(x => x.id== 1);
processingTimeTable.CreateDate = DateTime.Now;

context.SaveChanges();
}
}
0948デフォルトの名無しさん (アウアウクー MM0b-zU8i)
垢版 |
2022/02/08(火) 15:07:00.89ID:Ki5uCpbuM
>>947
すいません言葉足らずでした
エラーはその2つの例外情報は分かるのですが説明は「ハンドルされない例外のため、プロセスが中止されました。」となっており、それ以外はエラーに至るまでの内部的な関数?が呼ばれた場所が記載されている状態です
その呼ばれた場所の最後が、エラー発生箇所コードとして記載させて頂いた部分です
0951デフォルトの名無しさん (ワッチョイ 9f01-OQuQ)
垢版 |
2022/02/08(火) 18:40:08.93ID:11RalhgJ0
>>947
これ同じ処理が複数同時に走る?

複数同時に走る場合でread committedならデッドロックになるケースじゃない?
それが原因かどうかはわからないけどlog_lock_waitsがoffならonにしてしておくといいかも
0953デフォルトの名無しさん (ワッチョイ 1779-/Qhu)
垢版 |
2022/02/08(火) 18:53:19.11ID:u9WL3yPq0
スタイリッシュなつもりでいるようだけど自分の処理の状態も把握できないもん作って悦に浸ってるのがダセェ
お前がよく見るのはあくまでサンプルだからな
0954デフォルトの名無しさん (ワッチョイ 372f-2zGl)
垢版 |
2022/02/08(火) 20:10:07.63ID:pmS2YoNl0
>>951
デッドロックやDB上のロックタイムアウトなら、普通はDBサーバ上で確認できるだろ
まず何がエラーになったのかちゃんと確認すべきじゃね

DB側で何の(接続要求すらの)感知もできてないなら、おれならまずはネットワーク系の問題を疑うがな
ソケットの枯渇とか名前解決の不具合とかファイアウォール関係とか、その辺があやしい
0955デフォルトの名無しさん (ワッチョイ f7e4-zU8i)
垢版 |
2022/02/08(火) 20:26:14.86ID:fYph1ArX0
>>951
ありがとうございます
このGetStartProcessTimeが複数の箇所で同時に呼ばれる事はありません
教えて頂いた設定等は私の知識不足で全然触れたことがないので一度調べてみます

>>954
ありがとうございます
postgresのログも見てみましたが、タイムアウト発生時にはエラーや何らかの処理をしているログ自体ありませんでした
データベースがEntityFrameworkから接続を要求されているというのは後からでも見ることが出来るのでしょうか?
0956デフォルトの名無しさん (ワッチョイ 9f01-OQuQ)
垢版 |
2022/02/08(火) 21:45:24.55ID:11RalhgJ0
>>954
>まず何がエラーになったのかちゃんと確認すべきじゃね
そりゃそうよ
ただ本当に詳細が確認できない状態で再現もできないのなら
次に発生した時に情報を取れるようにしておくのは重要

DB側のログで何が確認できるかは設定次第
https://www.postgresql.org/docs/current/runtime-config-logging.html
0960デフォルトの名無しさん (ワッチョイ f7e4-zU8i)
垢版 |
2022/02/08(火) 22:47:06.84ID:fYph1ArX0
>>957
各クエリの時間を測った事は無いのですが、アプリケーション自体の一連の処理が0.5〜0.7秒程度で終わっているので、今回のDBへの接続がタイムアウトになるほど長くかかる事は通常は無いと考えています…


テンプレートにあったサイトを使ってエラーを記載してみました
上手く出来ているか分かりませんが、以下が現在確認出来ているエラー内容です

https://ideone.com/rIerhm
0961デフォルトの名無しさん (ワッチョイ 1779-/Qhu)
垢版 |
2022/02/08(火) 22:48:14.55ID:u9WL3yPq0
>>958
っていうかそういう自分の思い込みでしか物事を判断できないから
バグまみれのスレッド立てても気にもならないんだろうな

シングルコアで動かしたログがあればマルチコアで並列で動作してるか
どうかチェックになんだろ
得にオメーのはどうせ並列でなんか動いてねぇからシングルでもマルチでもログかわんねーだろw
0968デフォルトの名無しさん (ワッチョイ 17e5-2zGl)
垢版 |
2022/02/09(水) 10:25:30.10ID:FQOg5JO/0
Windowsフォームのプログラムをタブレットでも使いたいという要望があったのですが
comboboxのスクロールバーを大きくすることはWindowsフォームで出来るでしょうか?
というかタブレットかつ高解像度のPCが出てくると
いよいよWindowsフォームがキツくなってきた気がします。
0971デフォルトの名無しさん (ワッチョイ 9f79-1gYf)
垢版 |
2022/02/09(水) 13:55:19.52ID:nVoy06Fa0
つーかAndroidタブのコンボボックスにスクロールバーなんかないよね
指で操作するためのUIに変える必要があるってことよね
オーナードローなんかで解決するかな
0972デフォルトの名無しさん (ワッチョイ 17e5-2zGl)
垢版 |
2022/02/09(水) 14:17:49.58ID:P+Dycpf60
>指で操作するためのUIに変える必要があるってことよね
フォームアプリがタッチパネルに反応するだけでも御の字と思っている状況なので、
出来るなら是非とも欲しい動作です。
0973デフォルトの名無しさん (ワッチョイ 17e5-2zGl)
垢版 |
2022/02/09(水) 14:17:49.99ID:P+Dycpf60
>指で操作するためのUIに変える必要があるってことよね
フォームアプリがタッチパネルに反応するだけでも御の字と思っている状況なので、
出来るなら是非とも欲しい動作です。
0974デフォルトの名無しさん (ワッチョイ 9f7c-wadS)
垢版 |
2022/02/09(水) 14:19:08.14ID:5WmGk4RQ0
スクロールバーを出ないぐらいコンボボックスの範囲を大きくしておけばいいのでは?
オーナードローとかしだしたら大変だからやらない方が身のためかもしれない
0976デフォルトの名無しさん (アウアウウー Sa9b-AiWJ)
垢版 |
2022/02/09(水) 15:24:21.38ID:lp//LDU1a
WPFのコンボもフリックしてタップで止めるとかできないんだっけ?

まあWPFの方が不十分とはいえ一応タッチパネル系のイベントに対応してるんで
できるならWPFで作り直した方がいいんだろうねたぶん
0993デフォルトの名無しさん (アウアウウー Sa9b-nGJX)
垢版 |
2022/02/10(木) 18:20:37.30ID:hh6EUNrwa
Javaと同じ人が作っただけあって
Javaのが似てると思います
0994デフォルトの名無しさん (ワッチョイ 9f7c-wadS)
垢版 |
2022/02/10(木) 19:31:29.55ID:G6G2NR290
MFCとC#のWPFなら基本的にまるで別物だよなぁ
WinFormsも別物だけど、C++よりはC#の方が簡単だと思うけど
ラムダ式やらその辺の書き方に付いていけない奴は結構いるらしい
staticおじさんにはC#は辛いかも知れないw
0997デフォルトの名無しさん (アウアウウー Sa9b-icCT)
垢版 |
2022/02/10(木) 19:57:50.08ID:y+gM+mODa
mfcを初めて触ったときはなんて簡単にwindowsアプリが作れるんだって感動したものだけど、c#はそれより数十倍簡単だからな
mfcとc#はまったく違うけど、mfcできるなら一瞬で使えるようになるよ
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 58日 23時間 48分 33秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況