X



ふらっと C#,C♯,C#(初心者用) Part159

レス数が1000を超えています。これ以上書き込みはできません。
2023/08/08(火) 09:21:19.30ID:aeM2XQJJ0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を3行冒頭に書くこと(1行分は消えて表示されない為、もう1行は予備)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください。見かけたらNGしましょう。相手してしまったらあなたも荒らしです
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part158
https://mevius.5ch.net/test/read.cgi/tech/1679783460/
■関連スレ
C#, C♯, C#相談室 Part97
https://mevius.5ch.net/test/read.cgi/tech/1671585518/
■コードを貼る場合は↓を使いましょう。
https://ideone.com/
https://dotnetfiddle.net/
初心者はまずVisual Studioを使いましょう。なおVisual Studioの使い方などに関しては各バージョンで違うので専用スレでお願いします
http://www.visualstudio.com/downloads/
■情報源
https://learn.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://learn.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
++C++; // 未確認飛行 C
https://ufcpp.net/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2デフォルトの名無しさん (アウアウウー Sa9d-mBaV)
垢版 |
2023/08/08(火) 13:00:18.48ID:dbHUVIm2a
>>1
O2
3デフォルトの名無しさん (ワッチョイ c168-greZ)
垢版 |
2023/08/19(土) 19:14:38.83ID:kkSg06R00
char型って1バイトって書いてあるところもあるし2バイトってのもある
どっちが正しいんですか?
2023/08/19(土) 19:24:26.24ID:mKcQb+kU0
>>1スレたて乙
>>3
前スレから使ってください
https://learn.microsoft.com/ja-jp/dotnet/csharp/language-reference/builtin-types/char
>char 型のキーワードは、Unicode UTF-16 文字を表す .NET System.Char 構造体型のエイリアスです。
charは「一文字」
2023/08/19(土) 22:52:49.03ID:ybh46sJJ0
charの定義はプログラム言語によるけどここはC#スレなので
2バイト、UTF-16の符号単位1つ分
が正しい
「1文字」は定義そのものが面倒なのでそれで説明するのはまずい
C#が世に出た時点ですでにサロゲートペアがあったしね
2023/08/20(日) 10:40:21.22ID:Tiz0/WYjM
つ KPS9566
2023/08/21(月) 14:58:19.37ID:ol1P3YlW0
C#でcharを使った記憶が無い・・・
2023/08/21(月) 15:21:19.74ID:Ndtw0dBa0
頻繁には使ってないがたまに使ってるな
2023/08/22(火) 05:48:25.92ID:3bbATaSt0
string abc = "文字列";
foreach(char c in abc)
{/*処理*/}

確かに使ってないな〜って思ったら、こういう処理でcharは時々使ってるわ。
2023/08/22(火) 06:27:41.35ID:K0Y6kw2l0
KeyPressEventArgsのKeyCharはcharだし
意外と使ってる
2023/08/22(火) 09:52:59.41ID:NCwT5Qlw0
varで書いていて無意識につかってるってのはあるだろうなぁ
2023/08/22(火) 17:40:18.79ID:d5E574Cg0
intとdoubleしか使わん
2023/08/22(火) 21:49:38.95ID:w0pmKGmx0
さすがに decimal・long 封印されたら地獄。
2023/08/23(水) 02:19:34.38ID:mTUNg4mT0
C#のintに相当するIntegerが16bitのVBAではほとんどLongを使っていたが、
C#だとintが32bitなのでほぼintで済ませてる。
VBAはExcelが32bit版だとC#のLongに相当するLongLongが使えないんだなー。
2023/08/23(水) 10:13:02.11ID:PxP7OHeS0
byteばっかり使ってるな
2023/08/24(木) 17:52:40.58ID:AS1GMXmr0
任意精度の倍精度実数型が無いのは
やっぱり自作しろということなのでしょうか?
2023/08/24(木) 18:38:40.17ID:R4Azv7a00
任意なのに倍なのか
2023/08/24(木) 23:15:52.15ID:5Z3WGzh40
decimalじゃ足りないの?
2023/08/25(金) 09:51:26.86ID:addZmQb30
何に使うの?
2023/08/26(土) 10:42:55.36ID:pvrraVqdd
.net6.0 windows11 でUIAutomationを使おうと思っていますが
using System.Windows.Automation;
でエラーが出ます
Automationが名前空間System.Windowsに存在しないというメッセージが出ています

ソリューションエクスプローラーの依存関係を右クリック→
COM参照の追加→UIAutomationClientにチェックを入れています

ほかに何かしないといけないことはありますか?
それともこの環境だとUIAutomationは使えないのでしょうか
2023/08/26(土) 10:44:45.13ID:pvrraVqdd
「COM参照の追加」でUIAutomationという文字が含まれるものはあと2つありますが
これらにチェックをいれてもやはりダメでした
2023/08/26(土) 11:32:19.58ID:B+xiINwc0
そもそもSystem.Windows.AutomationはCOM参照の方じゃないよ
そして.NET 6だと多分参照を追加しなくても使える
ただし.csprojのTargetFrameworkがnet6.0-windowsみたいなwindows指定じゃないと使えない
2023/08/26(土) 18:56:47.34ID:pvrraVqdd
>>22
<TargetFramework>net6.0-windows</TargetFramework>
となってます

でも使えないのはなぜでしょうか?
2023/08/26(土) 18:59:24.42ID:pvrraVqdd
using System.Windows.Automation;

と書いた段階で、Automationのところに赤色の波線が出ている状態です
ビルドした段階で初めてでるようなエラーではありません
2023/08/26(土) 20:13:41.39ID:xxwPS16P0
Automationは名前空間じゃなくてクラスだから
using書くなら「using System.Windows;」だぞ
2023/08/26(土) 20:14:56.22ID:xxwPS16P0
もしくは↓

using 適当な別名 = System.Windows.Automation;
2023/08/26(土) 20:42:04.67ID:6UJ8MXUA0
これを.csprojに追加してみたらどうかな
<ItemGroup>
<FrameworkReference Include="Microsoft.WindowsDesktop.App" />
</ItemGroup>
2023/08/27(日) 03:34:05.01ID:5Jl0CLULd
>>25
>>26
だめでした
状況は何も変わっていません

>>27
すごい!使えるようになりました
Projectタグのすぐ内側に入れてみました
まだ動作確認してませんが、見た目大丈夫な感じです

なぜこれで動くのかはまったく分からないので調べてみようかと思います

みなさんありがとうございました
2023/08/27(日) 06:38:24.36ID:pdNwjm/sr
こういうのがあるからc#は不人気なんだよな
意味不明の呪文が多すぎる
2023/08/27(日) 06:42:06.25ID:B0IHQhsy0
不人気ってどこの世界?
2023/08/27(日) 07:24:42.50ID:5qrxD2H80
C/C++ Win32APIでリンクライブラリとか指定するのと同じことだろうに何言ってんだw
2023/08/27(日) 09:44:09.55ID:W37nqz2T0
VSは何をベースにするかの選択が後付けされていくからな
公式の選択肢の検証が不十分なんだろう
2023/08/27(日) 10:27:09.17ID:BadrQKzm0
あー、そうか
デフォだと参照されてるフレームワークはMicrosoft.Windows.Desktop.App.WindowsFormsで
Microsoft.Windows.Desktop.Appを個別に入れる必要があったのか
2023/08/28(月) 08:57:53.14ID:CMRW3du4a
DataGridView自身のサイズを
中のマスの数に合わせて余白なく変更される機能ってないの?
35デフォルトの名無しさん (ワッチョイ ea74-9/6f)
垢版 |
2023/08/28(月) 10:42:06.23ID:KozVXFn90
VisualStudioを使ってコメント文のショートカットは
他のVSCodeで使われてるCtrl + /にしてつかってるよね、みんなは?

デフォルトの二段階のやつは面倒。
36デフォルトの名無しさん (ワッチョイ 2501-nP6T)
垢版 |
2023/08/28(月) 10:48:07.63ID:m2uTidtL0
コメント文のショートカットなんて初めて聞いたので、使ってないが回答です
2023/08/28(月) 12:29:13.67ID:TcEjutgm0
アンコメントはvscodeでも2段階だけど
38デフォルトの名無しさん (ワッチョイ ea74-9/6f)
垢版 |
2023/08/28(月) 12:42:27.82ID:KozVXFn90
>>37
いやtoggle方式になっててCtrl+/だけでアンコメントできる
2023/08/28(月) 13:08:28.83ID:e1jE3eFz0
>>36と同じだわ俺w
2023/08/28(月) 14:20:29.16ID:HvGrKEBXr
>>35
同じだわ
慣れすぎちゃったから
41デフォルトの名無しさん (ワッチョイ ea74-9/6f)
垢版 |
2023/08/28(月) 14:50:59.42ID:KozVXFn90
>>36,39
情報弱者か頭がハゲてるのでは?

カーソルが対象の行のどこに存在していてもショートカット1つでコメント/アンコメントが切り換えられるのはすごく便利。
2023/08/28(月) 16:15:38.50ID:ny1ejD0Rd
何だこのバカは
2023/08/28(月) 16:18:57.50ID:dIRASk8t0
>>41
それ、コメントアウトされた行を含む複数行を、まとめてコメントアウトできるの?
44デフォルトの名無しさん (ワッチョイ ea74-9/6f)
垢版 |
2023/08/28(月) 16:31:23.03ID:KozVXFn90
>>43
それ、コメントアウトされた行を含む複数行を、まとめてコメントアウトできるよ。
2023/08/28(月) 17:07:01.73ID:dIRASk8t0
>>44
じゃあ、その行はトグル操作になってないよね
同じコマンドでトグルしたりしなかったりとか俺は嫌だな

つかそもそもの話はキータッチの数であって、トグル動作かどうかじゃなかった気はするがな
2023/08/28(月) 20:26:48.78ID:FBe+cq7+0
>>35
変えてないからいつもvscodeのctrl /と間違う
2023/08/28(月) 21:55:15.45ID:e1jE3eFz0
コメントショートカット君は何そんなに鬱憤溜めてるの
48デフォルトの名無しさん (ワッチョイ 2501-nP6T)
垢版 |
2023/08/29(火) 22:27:28.67ID:MluHN6hm0
そもそもvscode使ってないからなあ
2023/08/30(水) 00:16:17.18ID:5kILjyDm0
一瞬vscodeスレかと思った
2023/08/30(水) 09:08:03.74ID:BONGvbP90
VSCodeスレでも無ければVSスレでもないんだよなぁ
51デフォルトの名無しさん (ワッチョイ 6d68-lN7b)
垢版 |
2023/08/31(木) 22:01:22.46ID:MIyiOQWI0
リストのreverseってtolist()できたほうがいいですよね
reverseした後代入したりするとき面倒です。
なんでvoidなんですかね
2023/09/01(金) 09:24:47.73ID:BanrKten0
Reverse後に代入ってのがどうしたいのかわからないけど
Reverseはリストクラス自体のメソッドでそのインスタンスを直接操作するけど
OrderByやOrderByDescendingは拡張メソッドでコピーを操作するからコピーが返却されるってだけだよ?
2023/09/02(土) 09:18:43.99ID:SmX1VxPz0
Reverseも拡張メソッドにしてコピーを操作したらよくないですかね?
2023/09/02(土) 10:04:17.03ID:UfSrgHkR0
Reverse使うことになったことが無いけど
ソース自体かコピーかどっちがいいかは人によるだろう
55デフォルトの名無しさん (ササクッテロラ Sp07-R9B2)
垢版 |
2023/09/02(土) 14:11:47.41ID:9WH2Wl22p
反転したくてしてんだから反転前のは要らんだろ
つまり今のままでいい
2023/09/02(土) 15:54:53.00ID:5BMaIqoW0
List<T>のReverseじゃなくてEnumerableのReverseを使えば?
list.AsEnumerable().Reverse().ToList()
2023/09/03(日) 12:44:41.85ID:6JS2Y+TR0
アプリ画面だけでウインドウフォームかwpfか判断する方法ってありますか?
2023/09/03(日) 16:55:13.83ID:54sDKcC50
dnspyに食わせてみれば確実では?
2023/09/03(日) 17:01:39.86ID:usAI6v250
spy++で対象のクラスを確認したらよくね?
2023/09/04(月) 08:43:17.95ID:GTsqIl2R0
WPFだとフォームのBackColorが、デフォではControlではなかったような記憶
61デフォルトの名無しさん (ワッチョイ ffba-+GqY)
垢版 |
2023/09/05(火) 01:56:59.82ID:Dd7TKmzg0
VS2022でC#コンソールアプリのテンプレートを開くと
Console.WriteLine("Hello, World!");
の一行だけでした。

確か昔(VS2017とか)なら
class Program
{
static void Main(string[] args)

}
みたいなテンプレートだったと思うんですが、変わったんですか?
2023/09/05(火) 08:52:58.68ID:VoxpoMkh0
>>61
今はこう

https://ufcpp.net/study/csharp/cheatsheet/ap_ver10/#simple-program
2023/09/05(火) 08:54:10.36ID:VoxpoMkh0
.NET Frameworkの方のテンプレートなら見慣れた構造になってると思うよ
64デフォルトの名無しさん (ワッチョイ ffba-+GqY)
垢版 |
2023/09/05(火) 09:27:37.51ID:Dd7TKmzg0
>>62
>>63
そうなんですね。
数年ぶりにプログラムをやりはじめたら、
大きく変わっていて右往左往しました。
2023/09/05(火) 10:57:25.87ID:FWlyDFwX0
数年ならそれ以外大幅には変わってないとは思うけどね
色々便利にはなってるけど他の言語も同じ
2023/09/05(火) 11:10:48.96ID:0cStYI+l0
.NET Frameworkから.NET5以降になったら随分変わってると思うよ
2023/09/05(火) 11:54:42.15ID:FWlyDFwX0
そらまあ.NETで言えばね。。
数年なら多く見てもせいぜいC#7とか8の頃くらいからやろし。。
まあc#6とか5以前ともなると結構変わった感あるかもね
68デフォルトの名無しさん (ワッチョイ 6395-Ylnh)
垢版 |
2023/09/05(火) 16:53:18.32ID:/30Ct0nh0
スクラッチみたいなヴィジュアルスクリプティングって余計難しくならないですか?
2023/09/05(火) 22:11:20.21ID:zWF8b7bu0
ノーコード・ノーマーシー
70デフォルトの名無しさん (ワッチョイ 6395-Ylnh)
垢版 |
2023/09/08(金) 18:12:12.15ID:WprVZueP0
プログラミンってどれだけ整理してかけるか、みたいな能力が大事ですか?
こんがらがる
2023/09/08(金) 18:26:15.14ID:21NmID8F0
>>70
スレ違い
小学生レベルなのでここ見て勉強してね
https://www.nhk.or.jp/school/sougou/texico/
C#での質問があったらここに書き込んでください
72デフォルトの名無しさん (ワッチョイ 238e-0kEP)
垢版 |
2023/09/08(金) 18:38:18.39ID:t2Eu/6tA0
>>70
場違いな質問をしていることに気付かない頭の悪さをまずは何とかしろ
73デフォルトの名無しさん (ササクッテロラ Sp3b-SXjU)
垢版 |
2023/09/09(土) 00:48:02.61ID:x9yY8Tvzp
>>70
機能性表示食品の成分か何かですか?
2023/09/09(土) 06:53:47.96ID:LMdLT4fq0
ありそうで困るw
75デフォルトの名無しさん (ワッチョイ 0e68-rcnc)
垢版 |
2023/09/13(水) 20:05:26.74ID:CY2QXh+t0
自作ツールの起動中のみ、エクスプローラでファイルを右クリックした際のコンテキストメニューに項目を追加したいのですが、参考ソースはありませんでしょうか?
ググったらフォルダーとドライブの該当ソースはあったのですが、ファイル向けがありませんでした。レジストリーーいじるソースなので、知識不足で…
76デフォルトの名無しさん (ワッチョイ e3ad-tnQy)
垢版 |
2023/09/13(水) 20:18:20.45ID:t65qTGC00
起動時にレジストリ書き込んで終了時に削除するってやれば一応できるんだろうか…
2023/09/13(水) 20:22:36.89ID:9HJckEnJ0
できなくはないだろうけど、なんかの拍子にレジストリぶっ壊しそう…
2023/09/13(水) 20:26:33.26ID:I4CMq2Vn0
ミューテックスで起動しているかチェックしたらどう?
消すのは難しくても無効には出来る
79デフォルトの名無しさん (ワッチョイ 0e68-rcnc)
垢版 |
2023/09/13(水) 20:27:27.55ID:CY2QXh+t0
そんなに動的ではなくていいので、初回起動時に登録、アンインストール時に削除します。そこが知りたい訳では御座いません
2023/09/13(水) 20:53:21.95ID:I4CMq2Vn0
そういうときにはChatGPT
運が良ければ解決するかもしれん
2023/09/13(水) 22:28:04.53ID:GCCocY7ia
ツール起動中のみって要件があるのに初回起動時に登録、アンインストール時に削除ってのがわからん
起動中のみって要件外せば幸せになれるのに
2023/09/13(水) 23:39:35.35ID:tgD8Mqqk0
stackoverflowには絶対にあると思う
あとは7zipのソースでも読んだらいいんじゃね
83デフォルトの名無しさん (ワッチョイ 0e68-6jLp)
垢版 |
2023/09/14(木) 00:10:51.08ID:ZLIFh0n40
>>82
ありがとう!探してみます!

>>81
そこは重要では無く、質問は、C#のプログラムから下記を行いたいだけの質問です。
>エクスプローラでファイルを右クリックした際のコンテキストメニューに項目を追加したいのですが、参考ソースはありませんでしょうか?
ググったらフォルダーとドライブの該当ソースはあったのですが、ファイル向けがありませんでした。レジストリーをいじるソースなので、知識不足で…
84デフォルトの名無しさん (ワッチョイ 0e68-6jLp)
垢版 |
2023/09/14(木) 00:17:19.16ID:ZLIFh0n40
質問の仕方が悪く申し訳無いです!
2023/09/14(木) 00:39:15.76ID:2hn18ZKUM
レジストリ弄らずにコンテキストメニューを弄るとなるとwin32apiを叩くことになりそう
メニュー追加するだけなら取得したいコンテキストメニューに対してこれでいけるけど
https://learn.microsoft.com/ja-jp/windows/win32/api/winuser/nf-winuser-insertmenuitema
2023/09/14(木) 05:38:38.16ID:gj/XTc6D0
>>83
事前に項目を定義した上で LegacyDisable や Extended を着脱(orリネーム)しよう

全ファイル(フォルダ含む)を対象としたいなら * 以下のshell、任意の拡張子/カテゴリ向けなら SystemFileAssociations 下にある各拡張子/カテゴリを示すキー以下の shell に定義すればOK
87デフォルトの名無しさん (ワッチョイ f6c1-erq7)
垢版 |
2023/09/14(木) 12:32:32.37ID:r0O1DiKO0
二次元配列の取り出し方なんですが、c#の場合はどう展開するんでしょうか?
int[,] map = {
{ 0,0,0,0,0},
{ 0,1,1,0,0},
{ 0,0,0,0,0},
};
for(int i=0;i < array.Length;i++){
for(int j=0;j < array[i].ToString.Length;j++)
{
print(array[i,j]);
}
}

これだとジャグ配列用の書き方になるみたいです。
数値を1つずつプリントしたいです。
2023/09/14(木) 12:48:52.50ID:NXKRKNKL0
i < array.GetLength(0)
j < array.GetLength(1)
89デフォルトの名無しさん (ワッチョイ f6c1-erq7)
垢版 |
2023/09/14(木) 13:39:49.02ID:r0O1DiKO0
ありがとう
取り出し方が違うんですね
ありがとう(*´ω`*)
90デフォルトの名無しさん (ワッチョイ f6c1-erq7)
垢版 |
2023/09/15(金) 07:44:46.07ID:bmvdZqUl0
配列の構造をそのまま出力するような関数はc#にはあるでしょうか?
forで要素1つずつ出力する方法はあると思います
配列をそのままprintするとsystem.int32などと出ます
2023/09/15(金) 07:55:36.74ID:JVUL3BASM
MemoryStreamにでも書いたら?
2023/09/15(金) 08:40:19.91ID:gNClSWSe0
そもそもそのまま出力っつってもどういう風に表示したいんだって
なんか区切り文字でも挟んで列挙表示したいならstring.Joinすればいいし
2023/09/15(金) 10:08:15.57ID:KAFYnsRDM
プロパティの書き方ですけど
set { if (SetProperty(ref abc, value)) OnAbcChanged(); }
みたいなのを
set => SetProperty(ref abc, value) && OnAbcChanged();
みたいに書くことは出来ませんでしょうか?
2023/09/15(金) 14:20:29.77ID:Yr6zZ4Cb0
こういう拡張メソッド書けなくはないが個人的には嬉しくもないな
public static void Then(this bool result, Action thenAction) { if (result) { thenAction(); } }
95デフォルトの名無しさん (ワッチョイ f6c1-erq7)
垢版 |
2023/09/15(金) 17:13:51.63ID:bmvdZqUl0
>>92
すいません
int[,] ar = {
{0,0},{0,0}
}
このような配列だった場合、arをprintするとsystem.int32などとなります。
二重ループで取り出すと、0,0,0,0といった表示になります。

ただ、二次元配列の構造込みで表示されてほしいんです。
以下のようにです。
{0,0},{0,0}
2023/09/15(金) 17:35:09.88ID:SHAtUljXd
C#のデータ構造の表記で出力したいって事ね
リフレクションでできるのかな?
2023/09/15(金) 17:59:06.04ID:gNClSWSe0
リフレクションとかでできるのかなぁ?
ちょっとfor回して整形する手法しか思いつかないな……
2023/09/15(金) 18:23:06.20ID:3Kj2NktzM
次元数はRankで取れるけど
展開するのは大変だろうなぁ
2023/09/15(金) 19:34:59.20ID:Yr6zZ4Cb0
標準には無いね
まあ単純なのを書く分には特に難しくなかった
https://dotnetfiddle.net/SGyscB
2023/09/15(金) 21:11:44.63ID:5OfhXKjF0
普通に json 形式にエンコード-デコードじゃダメなの?
2023/09/15(金) 21:26:49.61ID:Yr6zZ4Cb0
ジャグ配列じゃない多次元配列はJSONで直接表現できないからサポートしてるシリアライザも無いんじゃね
2023/09/15(金) 21:44:27.56ID:AtSWWojy0
[i, ]みたいなこともできないから結局ループ回すしかない
103デフォルトの名無しさん (ワッチョイ ffc1-YZsW)
垢版 |
2023/09/16(土) 18:11:28.28ID:K2iszC6h0
ありがとうございます
c#だとサクッと出来る関数とかないんですね
104デフォルトの名無しさん (ワッチョイ ffc1-YZsW)
垢版 |
2023/09/16(土) 18:47:11.29ID:K2iszC6h0
int[] map1 = {5,6,7,8,9};
void Start()
{
for (int i = map1.Length ; i > 0 ; i--)
{
print(map1[i]);
}

}

初歩的かと思うんですが、配列をリバースしてからプリントした処理をしたいです
テトリミノを回転させるときに必要になると思うので

しかし、このコードだと「Index Out Of Range Exception: Index was outside the bounds of the array.」というエラーになります

これはLengthが0からではなく、1から始まることが原因だと分かりました
なぜ1から始まるんでしょうか?
2023/09/16(土) 18:52:58.19ID:wriwGaS80
>>104
要素の数が1つあれば長さは1
2023/09/16(土) 20:16:45.88ID:zuTnTV8F0
配列は0から始まるから9を取り出したい場合はmap1[4]にしないといけない
>>104だとmap1[5]になるからエラーになる
2023/09/16(土) 21:04:19.96ID:73WlZ3+mr
>>104
>これはLengthが0からではなく、1から始まることが原因だと分かりました
その理解は正しくない
LengthとIndexがごっちゃになってるから区別を付けよう
2023/09/16(土) 21:08:33.41ID:Ip3Nvo1w0
C#がどうたら以前の理解ができていないな
2023/09/16(土) 21:10:37.21ID:MJktIayi0
>>104
> Lengthが0からではなく、1から始まる
Lengthは0から始まるぞ
↓みたいなのはLength=0だ

int[] Val = new int[0];
110デフォルトの名無しさん (ワッチョイ 0f01-lPYd)
垢版 |
2023/09/16(土) 22:16:10.70ID:ZYPI8Xfl0
皆最初はそんなもんだろ
111デフォルトの名無しさん (スッップ Sd5f-+Ehs)
垢版 |
2023/09/16(土) 22:48:11.73ID:XdNh0KyJd
初心者以前の問題の気がする
2023/09/16(土) 23:02:36.52ID:G9zf78j00
質問ですが、ファイルを読み書きするときにエラートラップは必要でしょうか

読み書きに失敗するということはHDDかSSDが破損しているということで
そのときにはもうWindows自体が正常に動作していないと思うので、必要ないような気もします
113デフォルトの名無しさん (ワンミングク MM9f-+vE4)
垢版 |
2023/09/16(土) 23:11:29.35ID:7MGcbjMCM
>>112
馬鹿は消えろ
2023/09/16(土) 23:30:53.20ID:OIYkBqeS0
なぜそのパターンしかないと決めつけられるんだろう
逆に不思議ではある
2023/09/17(日) 00:14:34.15ID:qd/UhSYf0
自分しか使わなくて、他に実害ないならエラートラップなんて不要
(手抜きで作業手間増えるのは自己責任)
2023/09/17(日) 08:04:35.75ID:FtFGic3I0
.NETつこてるんなら、ちっとはMSのドキュメントでファイルアクセス周りにExceptionの名前でも見てみればいいのに
そしたらどんな理由で起こりえるがもうちょっと解ろうにな
117デフォルトの名無しさん (ワッチョイ ffc1-YZsW)
垢版 |
2023/09/17(日) 09:51:23.91ID:77Q3086C0
>>105
106
107
109
ありがとうございます
インデックスとレングスのズレを修正マス(*´ω`*)
2023/09/17(日) 10:16:09.40ID:FtFGic3I0
ズレを修正っていうか、インデックスとレングスのそれぞれの意味をちゃんと理解しなさい

もう随分古くて、いい加減使うのやめろよっていう言語だけど
インデックスがいくつから始まるか宣言の度にプログラマが決めれるような言語もあるんだよ
119デフォルトの名無しさん (ワッチョイ ffc1-YZsW)
垢版 |
2023/09/17(日) 12:07:33.50ID:77Q3086C0
unityなのでC#使うしかない状態です。
そんな駄目な言語なんですか、、、?
2023/09/17(日) 12:14:53.93ID:rXwl0OL+a
なんでこいつあぼーんになってるんだろうと思ったらVSスレにキショいAA書いてたやつと同一人物だったか
2023/09/17(日) 19:40:35.56ID:CzaQXa1l0
unityがこのまま終了になるとunreal engineに人が流れる
となるとC#よりはC++を習得したほうがいいよね!って流れになる
122デフォルトの名無しさん (ブーイモ MM4f-oAvq)
垢版 |
2023/09/17(日) 20:10:45.00ID:9h3D7Db8M
終了になると誰が言った?
2023/09/17(日) 20:23:06.32ID:h6gc4udj0
欲をかいた結果みんなにそっぽ向かれたらどのみち終了だろ
2023/09/17(日) 20:34:25.46ID:UBpNeHBP0
配列@とAからBを作りたいんだけど、ループさせる以外になにか方法ありますかね?

@ string[] tmp = new string[5] { "A", "", "C", "", "E" };
Astring[] tmp2 = new string[5] { "", "B", "", "D", "" };

B{ "A", "B", "C", "D", "E" };
125デフォルトの名無しさん (ワッチョイ 0f01-7CbB)
垢版 |
2023/09/17(日) 20:50:35.55ID:q/XPERxS0
>>124
tmp.Zip(tmp2, (s, t) => s + t).ToArray()
2023/09/17(日) 20:55:42.77ID:WHWVIGUQ0
var tmp3 = tmp.Zip(tmp2).Select((a, b) => a == "" ? b : a);
要素数が違うとかの場合は知らんけど
2023/09/17(日) 21:45:20.39ID:qd/UhSYf0
新命令増えてくると、何やってるかはわかるが、新規にその書き方をパッと思いつかない
漢字読めるけど書けない感じ
2023/09/17(日) 21:46:18.89ID:cFBaMdfw0
年だな
2023/09/17(日) 21:57:16.38ID:nKVQXP6B0
実務レベルでSQL操作するときってORMは使わないもんなの?
EntityFrameworkはそんなに使われてないってどこかの記事で見たんだけど実務だと生のSQL使ったほうがパフォーマンス的に良いとかあるんだろうか
2023/09/17(日) 22:40:05.81ID:bD00FXRnH
自分に裁量があるときはEntityFrameworkを避けてDapper+ちょっとマイナーなSQL(CRUD)生成実行ライブラリを使うかなあ
EFのSaveChangesで更新という仕組みがいまだに好きになれない
2023/09/17(日) 23:05:51.32ID:iKQBGRoT0
SQL でも HTML でも自分で書かせてくれた方がずっと楽な気がするんだが。
環境に合わせて「ぼくの考えた最強のなんとか」をあれこれお勉強しなくてすむし。
2023/09/17(日) 23:52:53.62ID:3hfVWz4fa
Ruby on Rails では、ORM を使う。
SQL を直接書いたら、SQL injection される!

PHP は、必ずやられる

>>127
Ruby のEnumerable を見れば?
JavaScript のLoDash も、Rubyに合わせている
133デフォルトの名無しさん (スッップ Sd5f-+Ehs)
垢版 |
2023/09/18(月) 00:00:53.08ID:ljzt2haMd
>>132
馬鹿は死ねよ
2023/09/18(月) 01:01:47.03ID:OIJZ2Rx10
>>125-126
ありがとう!
LINQのZip使ったことなかった
135デフォルトの名無しさん (ワッチョイ 3f74-oAvq)
垢版 |
2023/09/18(月) 09:07:12.63ID:cY6Rxg840
Unityは終了ですか?
2023/09/18(月) 10:38:10.38ID:+ud3D/1qa
>>131
ほんそれ
ORMのどこが良いんか
137デフォルトの名無しさん (アウアウウー Sa53-HRje)
垢版 |
2023/09/18(月) 10:40:42.12ID:+ud3D/1qa
>>135
Unityは大盛況だよ
ただしム板のC#はUnity専用じゃないから
C#スレよりUnityスレ逝った方が良いと思う
138デフォルトの名無しさん (ワッチョイ 8f8e-+Ehs)
垢版 |
2023/09/18(月) 13:45:40.55ID:BTbG+gI30
Unityが阿鼻叫喚なのを知らんのか
2023/09/18(月) 14:44:54.98ID:t79kyTir0
乞食が騒いでるだけだろ 嫌なら使わなきゃいい
CentOSの騒ぎのときと近いものを感じる
2023/09/18(月) 15:06:40.33ID:OMKnNCdl0
日和っているからじきに解決するんじゃね?
https://automaton-media.com/articles/newsjp/20230918-264916/
141デフォルトの名無しさん (アウアウウー Sa53-HRje)
垢版 |
2023/09/18(月) 15:06:46.43ID:+ud3D/1qa
いずれにせよマ板の話題
ム板のC#スレにはふさわしくない
142デフォルトの名無しさん (ワッチョイ ff66-mbMR)
垢版 |
2023/09/18(月) 16:58:59.73ID:aZlcjabF0
下記の_Aからbを取り出すにはどうしたら良いでしょうか。
_A.bのように取り出せないかなと思ったのですがダメでした。
よろしくお願いします。

public class TestEnt
{
public string a { get; set; }
public string b { get; set; }
}

private void button1_Click(object sender, EventArgs e)
{
List<TestEnt> _test = new List<TestEnt>();
_test.Add(new TestEnt { a = "A", b = "c" });
_test.Add(new TestEnt { a = "AA", b = "q" });
_test.Add(new TestEnt { a = "AAA", b = "b" });
var _A = _test.Where(x => x.a == "AAA");

string _B = _A.b; //b = "b"を_Bに取り出したいです。
}
2023/09/18(月) 17:05:17.55ID:gcUPef1oH
string _B = _A.First().b;
2023/09/18(月) 19:11:01.31ID:zZ35kUH+H
ダメだったらデバッグ中に中身を見ればよいではないか
2023/09/18(月) 19:11:24.47ID:Q0H2wSm7M
どう考えてもUnity違い
2023/09/18(月) 19:16:20.12ID:+Bjket7x0
WhereじゃなくてFirstOrDefaultにして_A?.bにしとけ
2023/09/18(月) 19:18:18.13ID:+Bjket7x0
なんかちょっと見難いな
_A ? . b な
148デフォルトの名無しさん (ワッチョイ ff66-mbMR)
垢版 |
2023/09/18(月) 19:41:40.45ID:aZlcjabF0
>string _B = _A.First().b;

>WhereじゃなくてFirstOrDefaultにして_A?.bにしとけ

0142ですが、共に期待する動作を確認できました。
ありがとうございます。
2023/09/18(月) 21:24:40.51ID:aieef/EZH
LINQの結果をvarで受けるのが慣例になってるけど
初学者には型を明示しない弊害が大きいと思う
2023/09/18(月) 22:02:41.32ID:0fzBUpiq0
いきなりvarの是非議論をやるんだな?今ここで?
2023/09/18(月) 22:20:11.45ID:aieef/EZH
やりません
2023/09/18(月) 23:35:05.10ID:JnVo6+Sp0
全部dynamicで良いよ
2023/09/19(火) 00:08:47.16ID:oqQfHpld0
今はvarでも型もうっすら表示してくれるじゃん
横に表示が長くなるから良し悪しだけど
2023/09/19(火) 06:53:27.47ID:iHKhfQgC0
>>153
マジっすか
後でソース見るとき、型判断するのに右の方見ないといけないのダルいときあるのよ
適宜var書き換えよ
2023/09/19(火) 07:16:48.91ID:dj1bo4Cu0
他の環境は知らないけどVisualStudioなら変数名のとこMouseHoverすれば型名出るでしょ
2023/09/19(火) 09:27:14.82ID:J8HEnUr6H
>>155
ワイもそれ
逆に使い慣れない開発環境のときは無駄にイライラするw
2023/09/20(水) 09:30:27.44ID:RzMk4JBe0
c#でwin/linuxのデスクトップアプリ作れるGUIフレームワーク緩く探してるんだけど今は何がおすすめですかね
1年くらい前に軽く探した感じだとavalonia,mauiあたりは新興すぎて開発途中っぽいしなあとかで
とりあえず他の開発で慣れてたunityでお茶を濁してました
MVC綺麗に分けるのだけじゃなくて、コードだけで画面作って小物サっと組むのもできたらいいなとか思ってます
158デフォルトの名無しさん (ワッチョイ 7f7b-YZsW)
垢版 |
2023/09/20(水) 16:48:10.23ID:lL1Mt70W0
Avaloniaは順調に完成度上がってきてて
OSSあるあるでIME周りが残念だけど10.xの頃よりはマシにはなってきてるし、
個人的にだが小さいツール作る分には致命的なバグや仕様はないかなと思う
ドキュメントは少ないが、WPFの開発経験があればだいたい勘でイケる
逆に言うとWPF分かってないと辛いと思う
MAUIは知らん
2023/09/20(水) 16:55:09.24ID:Jms37X630
.NET MAUIはLinuxデスクトップはターゲットでは無かった記憶が
2023/09/20(水) 17:08:11.47ID:F9NO76aN0
忘れ去られたUNOってのが有ったな
2023/09/20(水) 18:58:03.67ID:46/WHX4g0
LinuxのMAUI待ってたけどもうPythonで作ってるわ
2023/09/21(木) 00:17:30.38ID:H7YqoNcR0
linuxのGUIって基礎から終わってて
その糞環境の上でまともなアプリが作られるモチベも湧くはずもなく
それに目を背けながらwebベースのUIばかりが作られていく
要するに関わるだけ時間の無駄
163デフォルトの名無しさん (ワッチョイ cf01-9C00)
垢版 |
2023/09/21(木) 02:13:58.53ID:5L348Pt10
【根拠あり】フリーランスエンジニアは年収862万円取れて普通という話【高収入】

【こんな僕が】フリーランスエンジニアで月収100万円を達成した5つの方法

ITフリーランスエンジニアの年収|会社員との違いや独立後の案件の取り方

月収90万のITフリーランスプログラマー・SEが選んでる在宅案件はこんな案件です

フリーランスの年収は平均いくら?年収1000万円以上の割合とは

2021年最新版 エンジニアの平均年収はいくら?全体平均と比べて○○円も高い!
2023/09/21(木) 02:43:37.97ID:XMO7pnIx0
C#はいろんなOSで動くらしいのですが、それはGUIを含みますか?
自分の環境LinuxMintにMonoDeveloperを入れているのですが
GUIはGtkが使用されています。

Gtkを使ったアプリは・・・WinddowsやMacでは動きませんよね?
2023/09/21(木) 06:42:10.78ID:3XorlWtQ0
LinuxのGUIが終わってるかは知らんけど
CUIでしか使ったことないな
2023/09/21(木) 08:33:07.50ID:7PA5sZON0
>>164
WindowsやMacむけに移植されたgtkはあるよ
ただし、それぞれのプラットフォーム用に書いたコードがそのまま別のプラットフォームにもっていけるかどうかは知らんが
2023/09/21(木) 08:43:15.96ID:wSgShV8rd
なんちゃら互換は素のwinformより醜い代物が出てくると思ってる
2023/09/21(木) 09:05:36.59ID:y5scSkfl0
WinUI3で作ったアプリって、.net Frameworkしか入っていないPCでも動きますか?
WPFスレで聞いてみましたがスルーされてしまったので、よろしくお願いします
2023/09/21(木) 09:37:42.63ID:Q4HvJVv+0
WinUI3はdotNET関係無いでしょ
2023/09/21(木) 12:19:51.86ID:Bhqy1kvF0
>>167
Winform自体はシンプルだぞ
醜い実装するからそう思うだけ
2023/09/21(木) 12:26:21.20ID:N6Ncx53B0
UIがダサいって話じゃないの
2023/09/21(木) 13:04:21.71ID:wSgShV8rd
なんちゃらツールキット作ったGUIで表示されるコントロールって
うんこみたいなやつしか見た事ない
2023/09/21(木) 17:12:45.87ID:k97TlGtN0
>>168
WinUI3でストアに公開しなければ、unpaclagedってコンパイルしたバイナリフォルダの内容全てをコピーして実行させることになります
Windows10のアップデート済みのパソコンならそのまんま動くはず
2023/09/21(木) 17:39:42.68ID:2p2oI5ZlM
WPFスレでそんな質問はないけどなw
普通に.net frameworkだけでは動かない
.Net6以降のみサポートだから
特殊なことをして動かせるかもしれないけどそんな質問してくる人間には無理だろう

C#使ったWinUI3はバイナリコピーして実行させても必要な.net coreのバージョンがインストールされてがないと落ちる
インストーラーを適切に作ると.net coreのバイナリをダウンロードしようとする
2023/09/21(木) 17:54:34.48ID:k97TlGtN0
>>174
https://tera1707.com/entry/2022/07/29/043705
この記事にあるように、csprjにフラグを設定するとバイナリフォルダに必要なランタイム一切合切もコピーされるので
それをそのまま持っていけば動く
2023/09/21(木) 20:00:31.16ID:2p2oI5ZlM
>>175
フラグ設定しないとうまくいかないのか知らなかった
自分ところではずっと失敗してたんだ

多分この人が上の質問をしてるので何が何でも.NET6を使いたくないのだと思ってる

8 名前:デフォルトの名無しさん[] 投稿日:2023/09/20(水) 17:54:12.88 ID:jVfboGwk
WinUIって.NET6を入れずに使えますか?
VS2022のプロジェクトだと、.NET Frameworkが無くて.NET6になってしまいます
2023/09/21(木) 20:10:38.48ID:k97TlGtN0
>>176
Template studioにランタイム云々ってオプションがいつの間にか追加されていて
それをチェックしたらフラグがセットされてフラグの存在をそこで知った
2023/09/21(木) 20:12:26.21ID:2p2oI5ZlM
ずっとVS2022のGUI操作してパッケージ作って失敗してを繰り返してた
自分がアホなのか仕組みが出来てないのか判断できないでいた
2023/09/22(金) 08:23:31.12ID:+vutqDDr0
t_k_t_k(邪魔という方は左記をNGお願いします)

友人等などにも教えて、プラス¥4000×人数をゲットできます
https://i.imgur.com/ZCzD8Vc.jpg
2023/09/22(金) 09:55:33.52ID:glyoaVQ40
>>179
1ヶ月前に貰ってる。
2023/09/22(金) 10:37:35.20ID:VQzjgaDN0
>>173-177
フラグを設定すれば、.NET Frameworkのみの環境でも必要なランタイムがコピーされて動くのですね!
ありがとうございます。
2023/09/22(金) 11:31:13.56ID:yLHBBLv80
user.configとか.xmlファイルって、Windowsが不正終了とかで落ちた時
中のデータが欠損したり、変な空白とか書き込まれたりでファイルがおかしくなったら
それを読み込むアプリが一切立ち上がらなくなるの勘弁してほしい
183デフォルトの名無しさん (ワッチョイ 7f7b-YZsW)
垢版 |
2023/09/22(金) 12:26:32.62ID:n+mdlzq10
起動時のタイミングでconfigファイルが破損してないかチェックすればいいだけでは?
184デフォルトの名無しさん (アウアウウー Sa53-9C00)
垢版 |
2023/09/22(金) 12:30:28.76ID:dkRHHNCea
user.configとか.xmlに限定してるけどそれ以外のファイルなら安全だと思ってるの?
2023/09/22(金) 12:53:20.14ID:+zFc5v5MM
xmlが壊れるならjsonを使えば良いじゃない。by マリー
2023/09/22(金) 12:55:39.08ID:faVcBMnZ0
そこらへんのファイルが壊れるような落ち方したら、exeやdllの中身すら危うい
2023/09/22(金) 12:57:50.57ID:UyYHaPh20
>>179
大手の体力すげえな。
188デフォルトの名無しさん (ワッチョイ 4fb0-gBtz)
垢版 |
2023/09/22(金) 13:50:44.91ID:wJrbx3oK0
メディアファイルに書き込みしてる最中に落ちたら書き込んでるメディアのどこに被害が出てもおかしくないよ
2023/09/22(金) 15:21:03.94ID:YkPRFjNrd
NTFSなら大丈夫
2023/09/22(金) 19:44:13.75ID:Au89d/cH0
いくらファイルシステムが堅牢でも、その上で動くOSやアプリが死んだら壊れたファイルが出来上がる…って寸法だぁ!
191デフォルトの名無しさん (ワッチョイ 6ab0-/va4)
垢版 |
2023/09/23(土) 06:16:34.70ID:CDvy2U7s0
ネストは深くないほうが良いと言いますが、二次元配列の展開にはネストが必要ですかね?
2階層くらいまでは普通に使って、3階層にもなると深いと思います。
2023/09/23(土) 07:19:17.05ID://pn0TAC0
まぁ、普通はforループネストするんじゃない?
2023/09/23(土) 10:10:35.30ID:s/ljsF3A0
可読性が損なわれなければ多少のネストはいいだろうよ
2023/09/23(土) 11:22:34.41ID:CxeGIQq5M
ネストが深いとコードが読みづらくなりバグが混入しやすくなるので避けたほうが良いと言うレベル
初心者のころは閉じブロックにコメントを書くとかそういうので対処したりしたり出来る

namespaceの指定方法が追加されたのでブロックのネストは一段減らせるようになった
2023/09/23(土) 11:24:36.47ID:olN19/Rz0
色々なレベルの人が見るならわかり易さに寄せるのも大切
196デフォルトの名無しさん (アウアウウー Sacf-PB4I)
垢版 |
2023/09/23(土) 11:52:24.24ID:i9fpyxKga
あんまり深いと観辛いから
ネスト1{
_ネスト2{
__ネスト3{
ネスト4{
_ネスト5{
_}
}
__}
_}
}
みたいに描いてる
197デフォルトの名無しさん (ワッチョイ 6ab0-/va4)
垢版 |
2023/09/23(土) 12:47:33.25ID:CDvy2U7s0
ありがとう(*´ω`*)
198デフォルトの名無しさん (ワッチョイ 0aff-8erA)
垢版 |
2023/09/26(火) 10:56:33.46ID:csk5Q3Ms0
メモリ内では連続して格納されてるはずなんだし、1次元配列としてアクセスさせてくれてもいいのにな
199デフォルトの名無しさん (ワッチョイ 0aa1-oBwi)
垢版 |
2023/09/26(火) 11:02:40.27ID:Pu+bW/hr0
>>198
連続してると思いたいのは勝手だが
実際の所はどうなっているか見るまでは分からない
2023/09/26(火) 11:29:00.83ID:QkO3BLWs0
>>198
spanか使えば

var array = new int[ 3, 4 ];
var span = MemoryMarshal.CreateSpan( ref array[ 0, 0 ], array.Length );
2023/09/26(火) 11:36:48.82ID:uoZuUmUn0
datagridvewなかなか癖あるな
前の会社だとspread 使ってたから同じことしようとするとなかなか厳しい
2023/09/26(火) 12:26:49.67ID:OV8JJgiQ0
>>198
なら、1次元目Length×2次元目Lengthの1次元配列として宣言して使えば良い
203デフォルトの名無しさん (ワッチョイ 6ab0-/va4)
垢版 |
2023/09/27(水) 18:09:52.69ID:IoVqC5pd0
関数化はモジュール化とは言わないですか?
一般的に別スクリプトに分けることをモジュール化というらしいです。
1つのスクリプトにあらゆる機能を書いてしまうと、理解が出来なくなるみたいです。
再利用と、可読性を向上させるためにモジュール化があるのかなと。
2023/09/27(水) 18:39:35.25ID:CcGwmuva0
>>203
関数はモジュールですか?
2023/09/27(水) 18:44:05.41ID:B9umWozV0
>別スクリプトに分けることをモジュール化という
初めて聞いたわそんな説
206デフォルトの名無しさん (ワッチョイ 6ab0-/va4)
垢版 |
2023/09/27(水) 18:45:10.63ID:IoVqC5pd0
gptさんに聞きました
207デフォルトの名無しさん (ワッチョイ 0a1f-oBwi)
垢版 |
2023/09/27(水) 18:46:56.08ID:I/ozjFX50
嘘つきgptか…奴の話は、話半分で聞いとけ
2023/09/27(水) 19:49:19.91ID:vKIc+WH70
gptはC#のコード生成しようとしたら1行目からincludeしろとか言ってくるからな
209デフォルトの名無しさん (ワッチョイ 866b-lrL5)
垢版 |
2023/09/28(木) 00:24:01.44ID:DB6o6lmL0
ChatGPTをありがたがるのは無知蒙昧の証し
210デフォルトの名無しさん (アウアウウー Sacf-j351)
垢版 |
2023/09/28(木) 00:36:48.85ID:wsjwbbNAa
>>203
1関数=1モジュール観たいな糞言語ならそうかもな
2023/09/28(木) 01:23:01.39ID:NqbGDv2b0
未だにオブジェクト指向がよくわからないわ
2023/09/28(木) 04:26:00.84ID:IXIoJj7cM
猫以下か
2023/09/28(木) 06:36:39.54ID:M9/KWlcn0
ChatGPTに頼るようなヤツはプログラムやらんでもろて
214デフォルトの名無しさん (ワッチョイ ea74-iHBT)
垢版 |
2023/09/28(木) 07:16:02.49ID:sFf5t7op0
もろて
morote
2023/09/28(木) 08:57:06.58ID:fRqICkyk0
態々Chatって名前に付けてくれてるのに、おかしな使い方する連中の多いことw
216デフォルトの名無しさん (アウアウウー Sacf-j351)
垢版 |
2023/09/28(木) 09:58:47.34ID:7+/lnWbqa
やらんでもろて=やらないでくださいおながいしますわ
2023/09/28(木) 10:03:11.78ID:A/US9xLcr
名前にchatってついてることと使い方に何か関係が?
218デフォルトの名無しさん (ワッチョイ 0a1f-oBwi)
垢版 |
2023/09/28(木) 10:12:26.69ID:uRtj8fwF0
chatGPTは、会話する友達のいないボッチが寂しさを紛らわす為の癒しツールだからなぁ
2023/09/28(木) 10:28:24.51ID:/0J5x9qx0
つまりお前らってChatGPTだったの?
2023/09/28(木) 10:34:11.26ID:xz2WgalN0
うずらです
2023/09/28(木) 12:28:16.47ID:JVi1NSOB0
ひよこです
2023/09/28(木) 12:52:33.59ID:lN71jGVG0
>>203
>関数化はモジュール化とは言わないですか?
一般的には言わない
モジュール/モジュール化という言葉は文脈によって意味が多岐に渡る
広い意味で再利用可能・入れ替え可能な部品に分割することをモジュール化と呼ぶこともあるので
ある処理を抽出して関数化することもモジュール化と言えないこともないが一般的ではない
関数よりもっと大きな単位を指して使われることがほとんど
狭い意味だと使ってる言語で定義されてる”モジュール”に分割することを言う

>一般的に別スクリプトに分けることをモジュール化というらしいです。
Pythonのように1ファイルが1モジュールになる言語であれば
別スクリプトに分けることとが狭い意味のモジュール化
C#にもモジュールの定義はあるにはあるけど通常意識されないものなので
モジュール化という言葉が狭い意味で使われることはほとんどない
2023/09/28(木) 19:13:21.19ID:0dpaiugf0
モジュールは外からの見た目だから
中身が何で出来てるかなんて関知しない
たとえうんこで出来ててもな!
2023/09/28(木) 21:49:14.57ID:Vwqtf0AId
>>215がBardやBingAIにはどんな難癖を付けるのか気になる
225デフォルトの名無しさん (ワッチョイ 6ab0-/va4)
垢版 |
2023/09/29(金) 04:46:58.75ID:sbQ57Iwc0
質問です
他人のコードを読むという行為は「分解」なのでしょうか?
他人のコードがわかりにくい場合は、スクリプトを分けるなどして分解するのが良いですか?
2023/09/29(金) 05:09:44.28ID:Zsgx8btV0
>>225
そのコードリーディングの目的は?
227デフォルトの名無しさん (ワッチョイ 6ab0-/va4)
垢版 |
2023/09/29(金) 06:50:21.28ID:sbQ57Iwc0
ゲーム用のプログラムなのですが、ロジックを知りたいです
2023/09/29(金) 07:13:40.48ID:4IudvC8QM
解析が目的ならリバースエンジニアリング
229デフォルトの名無しさん (ワッチョイ 0794-oBwi)
垢版 |
2023/09/29(金) 07:35:41.02ID:R/ASBcAr0
リバースエンジニアリングは、マシン語になった実行ファイルやROMから逆アセンブルなどを用いて命令コードに変換して処理内容を読み取る技術だろ
ソースコード自体があるなら単に読めばいいだけ
230デフォルトの名無しさん (ワッチョイ 0794-oBwi)
垢版 |
2023/09/29(金) 07:37:22.59ID:R/ASBcAr0
スクリプト?
ああ、スクリプト言語で書かれているのか
それならスクリプト自体を幾ら読んでも分からないよw
実際に動作を定義してるのはスクリプトエンジン側だからなぁ
231デフォルトの名無しさん (ワッチョイ 0a1f-oBwi)
垢版 |
2023/09/29(金) 08:13:03.19ID:2i5v5Rt90
ゲームのスクリプト読んでも、分かるのはそのゲームのストーリーくらいかなぁ?
2023/09/29(金) 08:53:29.85ID:HVJlKrO3r
>>227
その目的と
>他人のコードを読むという行為は「分解」なのでしょうか?
という質問は何か関係あるの?
2023/09/29(金) 08:58:03.08ID:Z2hlTA8C0
>>229
逆アセはリバースエンジニアリングの過程の処理のひとつで
ソースコード読み解いて動作を解析することもリバースエンジニアリングよ
234デフォルトの名無しさん (ワッチョイ 0a1f-oBwi)
垢版 |
2023/09/29(金) 09:11:19.11ID:2i5v5Rt90
ソースコード自体にもう内容書かれてんのにリバースエンジニアリングとはw
2023/09/29(金) 09:23:35.81ID:XHcVYCVKM
例えばシェルスクリプトならそのまま読むだけですべて動作を理解できる
一方でゲームスクリプトはゲームエンジンの動作を解析しないと理解は難しい
2023/09/29(金) 09:28:49.63ID:dgWEZ4BHM
もっとも利用するだけなら使い方を理解するだけで中身を理解する必要はない
2023/09/29(金) 09:49:19.43ID:Zsgx8btV0
>>227
ゲーム「用」とは?
238デフォルトの名無しさん (ワッチョイ 0a02-4KCz)
垢版 |
2023/09/29(金) 10:17:17.30ID:LLT8Nv/70
単に読んでるだけでわかりにくにならデバッグ実行して動作とコードの関係を把握しながら読むと理解しやすい
途中で変数の値の確認や変更もやると確証がもてる
239デフォルトの名無しさん (ワッチョイ 6ab0-/va4)
垢版 |
2023/09/29(金) 13:16:35.37ID:sbQ57Iwc0
>>237
https://gist.github.com/baba-s/e4da98f6fce2b6cca36b0cf3bb91f9d0
これが倉庫番のコードなのですが、全て1つのスクリプトに書かれています
これが分かりづらいので、分割、分解して理解を深めたいです

>>232
自分でゲームを作りたいので、分解してロジックを理解したいです
他人のコードを読み解く能力が上達には必須と考えました
240デフォルトの名無しさん (スフッ Sdaa-TrDt)
垢版 |
2023/09/29(金) 13:26:47.91ID:y68JSf5Yd
>>239
この規模だと分割したらさらに判らなくなるだけだと思う
2023/09/29(金) 13:30:08.99ID:F5ALDY7d0
>>239
Unityの知識は大丈夫なの?
242デフォルトの名無しさん (ワッチョイ 0a1f-oBwi)
垢版 |
2023/09/29(金) 13:34:09.53ID:2i5v5Rt90
スクリプト?
2023/09/29(金) 13:45:18.92ID:jReLA3HcM
40年前ぐらい小学生のころに雑誌に載ってた倉庫番打ち込んだな
おそらく7~8ページ程度だったけど2週間ぐらいかかった
ロジックはほとんどなくドット絵のデータがメイン
そんな思いをしなくても遊べる今は恵まれてるなと思う

打ち込んでは実行してタイプミス潰し
倉庫番はリアルタイム性などない単純なパズルだから打ち込んでると嫌でも仕組みはわかった
何しろ状態を持ってない
全部マップデータ通りで単純明快

多分コード読んでるだけじゃ理解は深まらない
自分の見たい部分しか見ないから
コード打ち込むと全部舐めなければならない
そのうえで改変して挙動を確かめる
2023/09/29(金) 14:04:01.36ID:jReLA3HcM
大体2~3本似たようなプログラムを打ち込むと
仕組みが大体頭に入る

やってることは非常に単純
小学生にも理解出来る
そして普通に自分でも書ける

多分何百本分のコードを読んでも理解度は低いと思う
2023/09/29(金) 14:14:09.16ID:jReLA3HcM
そのころはコードにコメントなどもちろんなくインターネットもなく
下手するとマニュアルもなかった

でも数本打ち込むと大体わかった
英単語も読めない小学生にもわかるんだから誰にでも理解できると思う
2023/09/29(金) 14:14:32.11ID:2UiM+hiU0
>>239
>他人のコードを読むという行為は「分解」なのでしょうか?
これはノー
「分解」はあくまでもコードを読み解くためのテクニックの1つ
2023/09/29(金) 14:17:39.88ID:iWuHjGCu0
>>239
スクリプトって書いたら意味が通じない
(ソースコードを記述した)ファイルもしくはソースファイル
2023/09/29(金) 14:23:02.71ID:jReLA3HcM
>>247
unityではc#スクリプトと呼んでる
2023/09/29(金) 14:30:40.47ID:jReLA3HcM
英語を読む・聞き取る・話す は分かりやすく別の学習をしないといけない

コードを読めても書けなければ意味がない
理解したいならコードを書いた方がいい
250デフォルトの名無しさん (ワッチョイ 0a1f-oBwi)
垢版 |
2023/09/29(金) 14:34:27.27ID:2i5v5Rt90
>>248
ああ、そう言う位置付けなのか
文字通りスクリプトなんだろうなぁ
ビルドしないで直接動かすんだろ?
2023/09/29(金) 14:36:55.26ID:jReLA3HcM
それとコードを読むのは非常に高度な技術だから

初心者がコードだけ読もうとしても
おそらく思ったような成果はあげれれない
252デフォルトの名無しさん (ササクッテロラ Sp23-oBwi)
垢版 |
2023/09/29(金) 14:39:11.07ID:ty79BRMgp
ゲームの細かい動きの部分だけスクリプトで書いてるみたいな感じだと全体を理解するの難しいかもね
2023/09/29(金) 14:40:02.98ID:AtqL2tKZd
隙あらば長文自分語り
2023/09/29(金) 15:00:48.68ID:jReLA3HcM
倉庫番自体のロジックは非常に単純
オセロより簡単ともいえる

キャラが空白のところへ動かせるようにつくる
移動先に荷物があってその先が空白ならキャラと荷物が動く
そのあと終わってるかどうか判定するだけ
2023/09/29(金) 15:06:10.15ID:kab4oOZl0
じゃあフラッピーは?
256デフォルトの名無しさん (ワッチョイ de7b-/va4)
垢版 |
2023/09/29(金) 15:37:41.47ID:3lAWIYxj0
>>239
こういうのこそChatGPTの使いどころでは?
2023/09/29(金) 15:39:08.46ID:tU9ZFt65H
ここみれば?
ttps://baba-s.はてなblog.com/entry/2018/03/30/085000
2023/09/29(金) 15:41:33.40ID:tU9ZFt65H
はてな英字表記がNGワードだった

作者が全部解説してるのにこっち見ないで完成形のソースだけ見てなにをどう理解したいのかわからない
259デフォルトの名無しさん (ワッチョイ 869b-lrL5)
垢版 |
2023/09/29(金) 15:56:47.20ID:C71JBRro0
>>239
うだうだ人に聞いてるお前には無理だと思う
2023/09/29(金) 16:10:41.00ID:DNLFnh+Cd
>>225にしても>>203にしても質問がヘタというか的外れというか
それ聞いてどうするの?言葉の定義を確認して何になるの?って感じが

コードのここの意味が解りません、とかの具体的な質問の方がよっぽどマシ
2023/09/29(金) 17:31:51.45ID:jReLA3HcM
初心者相手に罵倒しても心が汚れるだけ

上のコードはあまり関心出来ない部分もある
そのせいで分かりにくい箇所が若干ある
2023/09/29(金) 17:42:07.96ID:DNLFnh+Cd
罵倒、苦言、批判の区別は付いてるかな?
2023/09/29(金) 17:44:14.21ID:Z2hlTA8C0
>>234
逆アセで生成されたコードも、アセンブラの"ソースコード"だぞ?w
2023/09/29(金) 17:58:40.51ID:QaI2pK3GM
ワッチョイ 6ab0-/va4
ネチネチとしつこいだけでダメな奴の典型例
265デフォルトの名無しさん (ワッチョイ 0744-oBwi)
垢版 |
2023/09/29(金) 17:58:57.69ID:R/ASBcAr0
>>263
意味不明w
2023/09/29(金) 17:59:37.91ID:Z2hlTA8C0
意味がわからんなら勉強しといでw
267デフォルトの名無しさん (ワッチョイ 6ab0-/va4)
垢版 |
2023/09/29(金) 18:01:17.51ID:sbQ57Iwc0
質問者です
確かに何が分からないのか言語化出来ないかもしれません

丸投げ質問にならないようにもう少しもがきます
ぼんやりした事を言うと、分からない部分は処理の流れですかね。
2023/09/29(金) 18:13:34.27ID:omi/Go5l0
フレームワークから呼び出されるだけの存在だよ
2023/09/29(金) 18:30:54.80ID:DNLFnh+Cd
Unity詳しくないけど必要に応じてSokobanクラスの各メソッドが呼び出される仕組みじゃないのこれ?
処理の流れってのがそのUnityが仕切ってる部分のことを言ってるなら
このクラスをいくら眺めても理解できなさそうだけども
2023/09/29(金) 18:41:16.70ID:KGst9XPnM
Unityから呼び出されるメソッドは初期設定のStartと更新処理のUpdateの2つ
毎回呼び出されるのは後者なのでそこから追いかけていけばいい
2023/09/29(金) 18:51:42.76ID:DNLFnh+Cd
なるほど、たしかにコメントにもそう書いてある
もっとあれこれ呼ばれるのかと思ったら意外にシンプル
てことは>>267が分からないって言ってる「処理の流れ」はクラスの中の話の可能性が高い?
であればコードを読み進めてここで詰まったとか具体的な情報が欲しいところ
2023/09/29(金) 18:57:11.74ID:jReLA3HcM
実際にコードを見てその印象なら初心者と変わりない
2023/09/29(金) 19:18:05.29ID:KklayHMNd
なんか因縁つけられた
274デフォルトの名無しさん (ブーイモ MMef-VO9t)
垢版 |
2023/09/29(金) 22:00:42.65ID:WQUdW1Y0M
こんだけみっちりコメント書いてあって、メソッドも分かれてるから、後は気合だけのような…
2023/09/29(金) 22:31:46.59ID:KklayHMNd
あとは自分の今の知識・理解度に見合ってるかどうかかね
他スレでもたまに明らかに分不相応なお題に取り組もうとしてる人を見かける
2023/09/29(金) 22:37:09.95ID:qnLQZNNU0
基本素養が足りてない人に限って、Webの情報を断片的に拾い読みするだけで済まそうとする…
2,3千円をケチらずにちゃんとした入門書を買うべきやろな
2023/09/30(土) 00:58:15.11ID:tFuDf2bYM
千里の道も一歩からと言うけど100m先のコンビニへもまず一歩踏み出さないと到達しない
プログラムでバグが出るのは当たり前でそれを潰すのは経験を積むしかない
コードを読むだけではそこらへんは無理
文法が分かったとして実際に書かないと理解は深まらない

見てもわからないなら紙にでも書き出して考えることもできる
小学生のころは配列の内容を方眼紙とかに書いてプログラムを再現して理解しようとしてた
それがいつの間にか脳内ですべて完結するようになった
期待通りにならなくても結果を見て経験からこうだろうなと見当を付けられるようになった

小学生より賢いはずなんだからなにか手立てはあるだろう
2023/09/30(土) 03:26:23.71ID:qC94828iM
実際にUnityを使っていて一度でも空のプロジェクトを作ったことがあれば>>270程度のことは直ぐに分かる
中身が空のスケルトンコードがそのまま作られるのでUnityと言うゲームエンジンのフレームワークの基本構造が見えてくる
コードを読む前にまず手を動かして見なければ気付けないことも多い
279デフォルトの名無しさん (ワッチョイ 9bcb-2pcI)
垢版 |
2023/09/30(土) 06:13:30.76ID:lCW6xIVF0
>>277
倉庫番のコードを書くようにしますが、その場合は他人のコードを完璧に真似るつもりでやったほうがいいですか?自己流でやっていたことが良くないと気づいたので。他人のやり方まで取り込むのが上達への近道かなと思ってます
280デフォルトの名無しさん (ワッチョイ 9bcb-2pcI)
垢版 |
2023/09/30(土) 06:20:57.56ID:lCW6xIVF0
他人のコードを理解する、読み解く上でのやり方が確立されていない感じです
2023/09/30(土) 06:40:22.13ID:EIBJTlDv0
読み解き方が確立されてるかされてないか以前の問題のような……
2023/09/30(土) 08:57:55.29ID:1LHvsOST0
基礎が身についてないのにやみくもに書き写したところで書く能力が身につくわけないじゃん
自分語りの詐欺的商法に騙されるなよ
ちょっと考えればわかるだろ

キミに必要なのは公式チュートリアルと入門書
2023/09/30(土) 09:50:03.07ID:tFuDf2bYM
40年ぐらい前の小学3年生よりあなたは賢いのかどうかと言う問題
現状スキルレベルでは負けている
環境では勝っている
2023/09/30(土) 10:00:47.45ID:RNKSTVVAd
>>280
小難しい理屈はどうでもいいから、>>239のソースを読んでて分からないところを具体的に質問しよう
質問が具体的な方がこちらも質問者のレベルを推し量れるしアドバイスもしやすい
285デフォルトの名無しさん (ワッチョイ 9bcb-2pcI)
垢版 |
2023/09/30(土) 10:21:02.95ID:lCW6xIVF0
>>284
手を動かさないと何が分からないかも、分からないという状態から脱せないでしょうか?
2023/09/30(土) 10:27:45.96ID:tFuDf2bYM
入門したてはタイピングが苦痛だった
一文字ずつキーボードとにらめっこ
p r i n t と一文字ずつ探してやっと一行を入れ終わる
そして実行

自分が今一行入力した分だけ画面が変わったりする
今書いたコードはこういうことなんだと分かる
それが体験で経験

誰がどのように入力しても結果は同じ
2023/09/30(土) 10:29:22.27ID:tFuDf2bYM
そのころコードを読んでも絶対意味なんて判らない
手を動かして実行
これ以外上達の方法はない
2023/09/30(土) 10:38:44.22ID:RNKSTVVAd
>>285
初歩的なところから聞くけどこのソースを実行できる環境はちゃんとある?
実際に動かしてみた?
289デフォルトの名無しさん (アウアウウー Sa89-5C2y)
垢版 |
2023/09/30(土) 10:44:33.67ID:+WV6fTrGa
>>252
東京パソコンクラブのノリだな
2023/09/30(土) 10:49:18.06ID:tFuDf2bYM
英単語なんか知らないから一文字ずつアルファベットを暗唱しながらタイプしていく
呪文を打ち込んでいく
一行入力も辛いので途中で実行して進展を見る
入力したコードの理解が深まる
そうして小さな成功体験を積み重ねる

そのうち前に入力したのと同じような内容が出てくる
今度は実行しなくても結果がわかる
実行してみて違うなら違いを探す

こうして一歩ずつ進む

コードを読んだりコメントを読むだけだとこういうのが失われて分かった気にだけなる
実際にコードを書けないし着想もできない
291デフォルトの名無しさん (アウアウウー Sa89-5C2y)
垢版 |
2023/09/30(土) 11:04:04.96ID:+WV6fTrGa
>>285 は手が動いても頭が動かないタイプと観た
2023/09/30(土) 13:07:46.30ID:Xbo2Ry+C0
それ、逆じゃないのかな。
手を動かす前にうだうだ考えるウチに投げ出すタイプというか。

なにも考えずにとりあえずコードを打ち込んでみて、動かしてみればいいじゃない。
そしてその動くプログラムのコードを書いているときや後から眺めたときに「こうした方がいいんじゃない?」って思ったところを何度でも直して、また動かしてみる、と。

実際、自分がやるのもそれに近いところがなくもないし。
分からないところをネットで調べてコピペして動かして、足りないところや考慮すべきところを直し加えてってのを何回かやったりやらなかったり。
293デフォルトの名無しさん (ワッチョイ 9bcb-2pcI)
垢版 |
2023/09/30(土) 14:30:45.31ID:lCW6xIVF0
>>288
unityで動かしております
>>290
やはり手を動かします
>>284
では質問させてもらいます
gptに聞いたのですが、良くわかりませんでした

https://gist.github.com/baba-s/e4da98f6fce2b6cca36b0cf3bb91f9d0
TileTypeという列挙型があり、tiletype型を使用してtilelist変数を宣言しているのが分からないです。
普通、インデックスにアクセスする場合は整数型を使うと思うんですが。

やはり、基礎が出来てないなと
2023/09/30(土) 14:47:09.79ID:jRqEkae9M
例えばデバッガーでマップの配列の中を確認する場合、無味乾燥な整数で状態表示されるより列挙変数で表示された方が分かりやすいだろ
プレイヤー視点ではなく開発者視点で分かりやすくしているだけ
2023/09/30(土) 15:02:25.67ID:RNKSTVVAd
>>293
>普通、インデックスにアクセスする場合は整数型を使うと思うんですが。
インデックスってのはtileList[x, y]のxとyのこと
この場合もxとyは整数型でしょ
インデックス「に」って表現してるけど何かと勘違いしてる?
2023/09/30(土) 15:10:09.10ID:RNKSTVVAd
で、tileListは配列要素の型がTileType列挙型なわけだけど、その理由は>>294も書いてるように可読性や保守性のため
2023/09/30(土) 15:27:57.46ID:tFuDf2bYM
抽象的な話じゃない説明

例えば数値で壁を1で荷物を3とかにすると…
コード内で1とか3の数字が出てくるがそれが何なのか覚えてないとわからない
データの種類が100種類とかあると管理だけで大変

それを改善する場合に数字じゃなくて文字で '壁' とか'荷'とか'人'とかにもできる

でもこの場合も問題がある

気まぐれで壁や荷物を赤い壁と青い壁、赤い荷物と青い荷物などにしたくなった場合にどうするか?
別に色情報持つとか考えなくてはならない
それだったらTypeでRedWallとかにしたほうがいい

更に後でRedWallをやめたくなった場合にはenumからRedWallを削る
そうするとIDEにエラー表示が出て修正箇所がわかる
これが数字だと修正を自力で探して頑張るしかない
298デフォルトの名無しさん (ワッチョイ 9b0c-RAiU)
垢版 |
2023/09/30(土) 16:04:48.60ID:fUSk+kCE0
>>293
ウザイことこの上ない
まずは入門書を買って読め
2023/09/30(土) 16:20:33.29ID:kuFk0VAS0
勘違いしてそうなので基本的なことから書くと
int[3]は[0, 0, 0]のように各要素がint型で長さ3の1次元配列を示す型
string[3]は[“a”, ”bb”, “ccd”]のように各要素がstring型で長さ3の1次元配列を示す型
TileType[3]は[TileType.NONE, TileType.PLAYER, TileType.GROUND]のように各要素がTileType型で長さ3の1次元配列を示す型

var tiles = new TileType[3]{TileType.NONE, TileType.PLAYER, TileType.GROUND};
if (tiles[0] == TileType.PLAYER) do_something;
のような使い方をする

TileType[10, 10]は各要素がTileType型で10×10の2次元配列を示す型
2023/09/30(土) 16:43:41.11ID:rxNaOE9c0
可読性の高いRuby で、3目並べが並んだかどうかの判定だけでも、こんなに書く。
ましてや他言語は可読性も低いし、他人のコードなど読めるわけがない!

他人のコードを読むことを勧めるような香具師は嘘。
100行の内、5行ぐらいしか読んでいない

input_ary = [ ["x","","", "x","","", "o","o","o"],
["o","","x", "","o","x", "","o","x"],
["x","o","o", "","x","", "o","","x"],
["x","","o", "x","o","", "o","",""],
["o","x","o", "","x","", "","o","x"] ]

def check_win( board_ary )
puts "-" * 40

diag_ary = Array.new( 3 ) # 斜め
diag_ary[ 0 ] = board_ary[ 0 ]
diag_ary[ 1 ] = board_ary[ 4 ]
diag_ary[ 2 ] = board_ary[ 8 ]
return true if diag_ary.all? { |cell| cell == "o" } ||
diag_ary.all? { |cell| cell == "x" }

diag_ary[ 0 ] = board_ary[ 2 ]
# diag_ary[ 1 ] = board_ary[ 4 ]
diag_ary[ 2 ] = board_ary[ 6 ]
return true if diag_ary.all? { |cell| cell == "o" } ||
diag_ary.all? { |cell| cell == "x" }

次へ続く
2023/09/30(土) 16:44:26.02ID:rxNaOE9c0
前の続き

p outer_ary = board_ary.each_slice( 3 ).to_a # 3×3 の配列
outer_ary.each do |inner_ary|
p inner_ary
return true if inner_ary.all? { |cell| cell == "o" } ||
inner_ary.all? { |cell| cell == "x" }
end

puts "転置後"
p outer_ary2 = outer_ary.transpose # 転置
outer_ary2.each do |inner_ary|
p inner_ary
return true if inner_ary.all? { |cell| cell == "o" } ||
inner_ary.all? { |cell| cell == "x" }
end

false
end

res = input_ary.map { |ary| check_win( ary ) }
puts "-" * 40
p res #=> [true, true, true, true, false]
2023/09/30(土) 16:56:49.16ID:rxNaOE9c0
仕様から、コードは書けるが、
コードから仕様を推測するのは、10倍以上難しい

他人のコードを読むと、膨大な時間の無駄で、
自作していないから身につかない

3目並べとか、じゃんけんとか、素数判定とか、
簡単な所から自作すべき!

解説が無いような、他人のコードを絶対に読んではならない!
膨大な時間の無駄
303デフォルトの名無しさん (ワンミングク MMa3-E1cW)
垢版 |
2023/09/30(土) 18:10:18.46ID:Ag7bGIUIM
しつこい馬鹿のせいでrubyキチガイまで出てきた
2023/09/30(土) 18:43:08.79ID:UMbhW8aD0
昔々BASICインタプリタと横スクロールゲーを全てレポート用紙に逆アセンブルして分析したのはメチャ役に立った
初心者が(簡単な)ゲームの分析、理解することは役立つこと多いと思うよ
305デフォルトの名無しさん (ワンミングク MMa3-AwC8)
垢版 |
2023/09/30(土) 20:59:11.77ID:U9V2qVkaM
人に聞きまくるだけの奴には無理だぞ
方法論以前の問題
306デフォルトの名無しさん (ワッチョイ 9bcb-2pcI)
垢版 |
2023/10/01(日) 10:33:20.05ID:5ao4WmOt0
>>294
回答どうも
理解が悪いです

列挙型って数字でもあるんですか?
それぞれの文字列にインデックスがあると。
2023/10/01(日) 10:43:13.42ID:Zy/Xpldc0
列挙型、配列、インデックス
根本的にこのへんが正しく理解できてないな
>>299の言ってること理解できる?
分からないならどこが分からないな質問する
2023/10/01(日) 12:21:46.44ID:o8cy9tiS0
https://wikiwiki.jp/postmodern/
2023/10/01(日) 12:27:48.25ID:jo3dkEigM
>>306
配列の要素のデータ型が列挙型(の変数)というだけであって配列そのものが特殊なものという訳ではない
https://i.imgur.com/iA3fRKM.png
2023/10/01(日) 12:27:59.76ID:jo3dkEigM
>>306
配列の要素のデータ型が列挙型(の変数)というだけであって配列そのものが特殊なものという訳ではない
https://i.imgur.com/iA3fRKM.png
2023/10/01(日) 12:28:36.05ID:9rYgJ/eZ0
>>306
配列の要素のデータ型が列挙型(の変数)というだけであって配列そのものが特殊なものという訳ではない
https://i.imgur.com/iA3fRKM.png
2023/10/01(日) 12:28:44.44ID:9rYgJ/eZ0
>>306
配列の要素のデータ型が列挙型(の変数)というだけであって配列そのものが特殊なものという訳ではない
https://i.imgur.com/iA3fRKM.png
2023/10/01(日) 12:31:41.14ID:OrY06J6zM
ネットの調子が悪い
連投スマソ
314デフォルトの名無しさん (ワッチョイ 9bcb-2pcI)
垢版 |
2023/10/01(日) 12:44:57.25ID:Je269Bs00
>>307
ありがとうございます
https://baba-s.はてなぶろぐ.com/entry/2018/03/30/085000
tileList = new TileType[ columns, rows ];
の部分でtiletype型には定数の文字列が入ると思っていましたが、整数値であるcolumnsとrowsを代入しているあたりが分からないです。
何らかの文字列の定数が入ると考えていますた
2023/10/01(日) 13:26:19.97ID:jNjNNZOq0
>>314
君はそもそも配列宣言の記法、意味が分かってない
まず↓あたりをじっくり読んで、サンプルコードも実際に動かして理解して欲しい
https://ufcpp.net/study/csharp/st_array.html

そしてハッキリ言うけど今の段階で倉庫番のコードを理解しようとしても基礎が出来てないから無理
316デフォルトの名無しさん (ワッチョイ 9b9b-RAiU)
垢版 |
2023/10/02(月) 02:06:24.20ID:NgblnbYV0
他人の助言には絶対に耳を傾けないタイプ
317デフォルトの名無しさん (ワッチョイ 9bcb-2pcI)
垢版 |
2023/10/02(月) 06:20:59.94ID:TDDpdEaf0
>>315
必要なところだけやっていくやり方でやってますが、そういうやり方じゃ駄目なんですか?
配列宣言は分かっているんですが、型が違いますよね
>>316
聞きますが、全てではないです
318デフォルトの名無しさん (ワントンキン MMa3-E1cW)
垢版 |
2023/10/02(月) 07:26:58.07ID:lRooFwx4M
ダメだこいつ
2023/10/02(月) 07:50:32.09ID:eOR7lDrh0
>>314
>tileList = new TileType[ columns, rows ];
元ネタ見てないけど、↑を見てこう考えることができるように基礎知識、経験が必要
・tileListに画面の状態を格納するんだな
・二次元配列としてcolumns, rowsの数だけ確保と
・二次元配列に代入する値はTileType型ね(intとかのリテラル値でなくキチンと定義してるのか)
な感じ

>「tiletype型には定数の文字列が入ると思っていましたが」
ある程度予想しながらソースは読みますが、経験不足で予想外れるのはまだ仕方ない
>「整数値であるcolumnsとrowsを代入している」
代入はしていない。これから値を格納するための二次元配列を確保してるだけ

まだc#の記法がわかってない未熟なだけなので、何もかも貪欲に覚えて。
今やってることは無駄になることは何もない。間違えてても。頭と手をドンドン動かして吸収していくのだ
2023/10/02(月) 08:40:07.92ID:KRZkbw82M
>>317
この倉庫番のコードではマップのデータをcsv形式のテキストで設定してtileListという名の配列に格納している
格納する際に配列の要素はcsv内の整数データからTileTypeで定義された列挙型の変数に変換される
具体的な配列の中身を確認した結果が>>309
実際にコードを動かして見ればすぐ分かるだろ
2023/10/02(月) 08:40:23.40ID:KRZkbw82M
>>317
この倉庫番のコードではマップのデータをcsv形式のテキストで設定してtileListという名の配列に格納している
格納する際に配列の要素はcsv内の整数データからTileTypeで定義された列挙型の変数に変換される
具体的な配列の中身を確認した結果が>>309
実際にコードを動かして見ればすぐ分かるだろ
2023/10/02(月) 08:42:07.04ID:KRZkbw82M
何故かまた2回送信された
接続が不安定すぎるorz
2023/10/02(月) 08:56:34.32ID:Rca7jjjr0
最近の5chの問題だからいちいち気にしなくて良いぞい
2023/10/02(月) 09:26:07.11ID:lKJ+23Y70
>>317
配列宣言において型が違うことは重要じゃないよ
どんな型の配列だって作れるわけだから
それが分からないことこそが基礎ができてない証拠であって
君の言う「必要なところ」がやれてないということ
>>315のリンク先をきちんと理解すれば>>314
>tiletype型には定数の文字列が入ると思っていましたが、整数値であるcolumnsとrowsを代入しているあたりが分からないです。
>何らかの文字列の定数が入ると考えていますた
という疑問と想定が間違っていたことに気づく
まずそこから始めよう
2023/10/02(月) 09:31:44.43ID:ejm1uWXY0
自分が必要と思うところだけつまみ食いするのがタイパいいとでも思ってるんかねぇ
見当はずれなことやって結局無駄に時間を使うだけなのに
326デフォルトの名無しさん (ワッチョイ 9bc8-RAiU)
垢版 |
2023/10/02(月) 12:48:13.11ID:NgblnbYV0
批判は一切受付けません!のスタイル
そもそもこんなことに何日も掛けて進まない時点でこいつには無理
2023/10/02(月) 14:31:10.17ID:egrIJ/AE0
そろそろスルーしとけ
328デフォルトの名無しさん (ワッチョイ 9bcb-2pcI)
垢版 |
2023/10/02(月) 15:30:17.92ID:TDDpdEaf0
>>318
>>325
返信してくれた5人が違う事を言ってたら、その中からどれか選ぶしかないじゃないですか。
あと、基礎やるにしてもどうせすべて使うわけじゃないし、必要な部分だけやるスタイルです
>>324
リンク先見てきます
329デフォルトの名無しさん (ワッチョイ 9b9b-RAiU)
垢版 |
2023/10/02(月) 15:35:28.81ID:NgblnbYV0
要約すると、
基礎を学ぶ気はない貴様らは俺の聞いたことに答えればいいんだ

つまり、教えてもらおうではなく聞きだそうというスタイル
330デフォルトの名無しさん (ワッチョイ 9bcb-2pcI)
垢版 |
2023/10/02(月) 15:36:53.97ID:TDDpdEaf0
>>329情報源は色々です
2023/10/02(月) 16:01:32.92ID:MrhOADGQ0
こういうやつには答えないスタイル
332デフォルトの名無しさん (ワッチョイ 85ad-6Yc9)
垢版 |
2023/10/02(月) 16:21:12.93ID:f2fMpIlB0
このレベルの基礎はすべて使うけどね
2023/10/02(月) 16:26:16.56ID:ATaGJaaDM
とりあえず環境構築してるならまずサンプルコードそのままコピペして実行しろ
いろいろ考えながらコードを弄っているうちに分かってくるからさ
疑問点は人に聞く前にまず自分で試して経験しろ
334デフォルトの名無しさん (ワッチョイ 2d34-uQQ6)
垢版 |
2023/10/02(月) 16:36:07.28ID:c5cuOzSD0
visual studioでステップ実行汁
335デフォルトの名無しさん (アウアウウー Sa89-5C2y)
垢版 |
2023/10/02(月) 16:40:30.40ID:sFvf9xp1a
>>327
>>331
ほんそれ
荒らしの相手レスする香具師も荒らしと看做せばいい
質問オウム返しはそもそも問題解決する気が無くて荒らしたいのだろう
2023/10/02(月) 17:29:56.66ID:eOR7lDrh0
色々なブレイクポイントで止めて中身を確認、理解する
理解できない部分は置いといて次に進む繰り返し
過去の疑問も解けていく

これは必須の作業。これをやればほとんどの疑問、分析は自己解決できる

昔はPRINTいっぱい埋め込んだものだ
今は楽ちん
2023/10/02(月) 18:58:04.16ID:3brSOCVN0
>>328
リンク先の内容で理解できない部分や自分の想定と違う部分があったら具体的に示して質問して
338デフォルトの名無しさん (ワッチョイ 9bcb-2pcI)
垢版 |
2023/10/02(月) 20:13:50.59ID:TDDpdEaf0
>324
列挙型でも数字はありますもんね。
ようやく少し理解
2023/10/02(月) 20:34:20.45ID:LSI+DZgZM
列挙型は数字があるというより数値を別名で抽象化したもの
実際の正体は単なる整数値
ただし直接的に数値として扱うとエラーになる
2023/10/02(月) 20:54:18.72ID:3brSOCVN0
>>338
いや、理解できてない
数字がある(=型に数値と互換性があるという意味と推察)かどうかは配列で扱ううえで全く関係ないよ

君が「数字がないもの」と思っているものの配列は理解できる?
例えば文字列配列を配列の長さ3で宣言できる?
2023/10/02(月) 21:17:33.82ID:3brSOCVN0
>>338
なんで数字にこだわるのかわからなかったけど
> tileList = new TileType[ columns, rows ];
>の部分でtiletype型には定数の文字列が入ると思っていましたが、整数値であるcolumnsとrowsを代入しているあたりが分からないです

ひょっとしてcolumnsとrowsで二次元配列のサイズを指定してるのを
配列tileListにcolumnsとrowsの値を入れていると誤解してる?
342デフォルトの名無しさん (ワンミングク MMa3-AwC8)
垢版 |
2023/10/02(月) 21:19:04.73ID:lujPkxOVM
荒らしの相手をするのは荒らし
2023/10/03(火) 03:19:43.89ID:BRGjmQhNM
二週間も同じことをグダグダ質問してる馬鹿は荒らしか?そうでなければ才能ないから諦めて消えろ
2023/10/03(火) 08:07:13.74ID:Uvzxz0ni0
>>341
そうじゃなくて、配列宣言は定数値じゃないといけないと思ってるんでしょ
だから皆から他人のコードを読む以前、基礎がわかってない、先に本なり見て学べって散々言われてるんよ
2023/10/03(火) 09:08:59.95ID:64Y6xUk10
>>341
あーなるほどね
コレクション式も追加されてそういう誤解は増えそうだな
2023/10/03(火) 10:16:03.76ID:Ovgwwfj90
>>344
それだと「整数値であるcolumnsとrowsを代入している」とは言わないだろう
tileList = new TileType[]{columns, rows};
みたいに初期値を入れてると誤認してるからこそだろう
そして「tiletype型には定数の文字列が入ると思っていました」というのは
tileList = new TileType[]{TileType.PLAYER, TileType.BLOCK};
のような書き方を指していると推察できる
2023/10/03(火) 11:03:15.13ID:Uvzxz0ni0
>>346
「定数の文字列が入ると思っていましたが、整数値であるcolumnsとrowsを代入している」ね
要するに配列宣言には定数を使用すると思ってたのに整数型変数使ってるのなんで?ってことよ
2023/10/03(火) 11:27:59.78ID:So2x5x/40
配列の宣言には定数を使わないといけないという勘違いをするのはそういう制約のある他言語に慣れ親しんだ人だけだから
2023/10/03(火) 11:29:47.91ID:Ovgwwfj90
>>347
「tiletype型には定数の文字列が入ると思っていましたが、整数値であるcolumnsとrowsを代入している」ね
columnsとrowsが配列のサイズを指定していることを理解していればそうは言わんでしょ
TileType型の配列の初期値に整数値が入るのなんで?ってことよ
2023/10/03(火) 11:40:39.38ID:Ovgwwfj90
>配列宣言は分かっているんですが、型が違いますよね
とか
>列挙型でも数字はありますもんね
って発言からもTileType型の配列には数値は入らないと思ってたけど入るんだと自分を納得させてるフシがある
2023/10/03(火) 12:51:54.86ID:Uvzxz0ni0
配列の宣言わかってるならあれを初期値だと思うか?
まぁ結局どういう考えかは本人にしかわからんけど
2023/10/03(火) 13:13:20.28ID:E2u3qt3Tr
配列宣言は定数値じゃないといけないと思ってる、よりは言動の辻褄が合うのではないかという話
本人に聞かないと真実がわからんのはその通り
2023/10/03(火) 17:03:23.96ID:L0v6ZlZp0
単に定数値という言葉の意味をわかってないだけでしょたぶんTyleType型の各値のことを言ってる
なんなら宣言という言葉の意味もわかってないし代入すらわかってない可能性もある
354デフォルトの名無しさん (ワッチョイ 1b22-uQQ6)
垢版 |
2023/10/03(火) 17:33:35.58ID:1Tt4UNmg0
スレタイさ、見て発言してる?
2023/10/03(火) 17:52:34.34ID:CTojctYiM
再掲

配列の要素のデータ型が列挙型(の変数)というだけであって配列そのものが特殊なものという訳ではない

この倉庫番のコードではマップのデータをcsv形式のテキストで設定してtileListという名の配列に格納している
格納する際に配列の要素はcsv内の整数データからTileTypeで定義された列挙型の変数に変換される

https://i.imgur.com/iA3fRKM.png
2023/10/03(火) 18:15:58.67ID:F8D+VEMNd
>>354
初心者の建前でキチが暴れるスレよね
357デフォルトの名無しさん (ワッチョイ ae8d-OOOs)
垢版 |
2023/10/07(土) 18:26:09.89ID:kQU1DN1N0
interfaceのクラス変数としてintとかの変数持たせるのはstatic intにしても同じことって理解
でいいですか?
2023/10/07(土) 18:34:14.76ID:Dbx341NqM
クラス変数とはなんだ?C#にそんなものはない
359デフォルトの名無しさん (ワッチョイ ae8d-OOOs)
垢版 |
2023/10/07(土) 19:00:10.87ID:kQU1DN1N0
クラス変数は誤植ですねごめんなさい。interfaceの中に変数宣言できたことです。
2023/10/07(土) 19:22:08.91ID:M9UZ8U5c0
くだらない揚げ足取りは気にする必要なし
2023/10/07(土) 19:32:40.93ID:Dbx341NqM
揚げ足取りじゃない
質問も訂正もおかしなことを書いてる
2023/10/07(土) 19:38:58.26ID:isyrDxYL0
C#でインターフェイスにフィールド(メンバ変数)を定義することはできないよ
なのでどういうのを想定しているのか回答者は全然分からない
用語を間違ってる可能性もあるからまずこういうコードというのを示してみたら
2023/10/07(土) 19:45:19.06ID:M9UZ8U5c0
>>361
発言がおかしいと感じたならそこを問いただせばいい
>>358は揚げ足取りでしかない
それともまさか本気で言ってる?
2023/10/07(土) 19:56:23.04ID:Dbx341NqM
ないものについて質問されてもないんだから答えようがない
それがまともな回答
2023/10/07(土) 20:01:14.99ID:M9UZ8U5c0
他の言語に触れてなくてクラス変数という用語自体を知らないのだろうか
2023/10/07(土) 20:02:30.94ID:Dbx341NqM
c#のinterface内でミューテクシオン宣言が使えないのはなぜですか?

回答
c#にミューテクシオン宣言と言うものはございません


これは揚げ足取りか?
2023/10/07(土) 20:05:04.36ID:M9UZ8U5c0
>>366
クラス変数という用語をご存知ですか?
イエスかノーでお答えください
2023/10/07(土) 20:06:57.65ID:Dbx341NqM
>>367
知らない
2023/10/07(土) 20:11:20.39ID:Dbx341NqM
誤植ですねについてああだこうだ言うのが揚げ足取り
イエスかノーかで答えてくださいに知らないと答えたのについてああだこうだ言うのが揚げ足取り

全然どうでもいいことにいちいち突っかかってくるID:M9UZ8U5c0が悪い
2023/10/07(土) 20:13:55.52ID:M9UZ8U5c0
>>368
これは失礼
他の言語の知識がなくてクラス変数自体を知らなかったのなら>>358の発言も仕方ない
ちなみにC#で言う静的メンバ変数に相当するものなので頭の隅に置いておこう
2023/10/07(土) 20:40:11.49ID:YtgTJ7v50
昔はできなかったがinterfaceにstatic memberを定義できるようになったんだよ
372デフォルトの名無しさん (ワッチョイ aea0-OOOs)
垢版 |
2023/10/07(土) 21:33:04.56ID:kQU1DN1N0
特に継承するわけでもないinterfaceの変数を使っていたので
staticでよくね?って思ったまでです。
2023/10/07(土) 21:41:19.16ID:kQU1DN1N0
>>362
メソッド以外定義できないんですか?普通にint xxx{get}みたいに変数定義してましたけど?
2023/10/07(土) 21:58:12.16ID:WiFpk8200
節子、それ変数やない、プロパティや
2023/10/07(土) 22:46:08.14ID:OKMBnv3y0
interfaceは実態まで定義できるようになって
これじゃ多重継承と何が違うんだろうね
2023/10/07(土) 23:10:34.30ID:Z0CAZWyi0
今や関数指向全盛じゃん
オブジェクト指向が諸悪の根源じゃねーーの
能力足りてないエンジニアばっかなんだから
2023/10/08(日) 01:41:02.74ID:G8JXzzlJ0
関数指向全盛って初めて聞いた
データとかあるんですか
2023/10/08(日) 02:27:58.84ID:4tUP3LVs0
>>376
まず構造化から学び直せ
2023/10/08(日) 07:23:28.50ID:dIUTdDjP0
>>376が関数嗜好なだけでは
2023/10/08(日) 19:57:18.08ID:7GYxqXei0
(1)オブジェクト指向プログラミング A. クラスの定義 B. オブジェクトの生成 C. カプセル化 D. 継承 E. ポリモーフィズム

(2)関数型プログラミング A. 高階関数 B. クロージャ C. ラムダ関数 D. ジェネレータ E. デコレータ
2023/10/08(日) 22:38:19.92ID:ICyLMX1g0
>>380
デコレータはどちらかというとOOP用語
関数型では単なる関数合成の一種なのでわざわざデコレータとは呼ばない
2023/10/08(日) 23:26:13.26ID:5JmMmKk30
で、それでYOLOXは動くんかい
2023/10/09(月) 00:47:00.57ID:N+sXw7NG0
Taskについて質問です。
階層構造データを再帰的に探索する処理を階層ごとにTask.Factory.StartNewで並列化させて作ってるのですが、
WinFormsのControl.Invokeのように、子タスク内から親タスクのコンテキスト上で実行させたい処理があります。
今は親タスクで作成したリストを追加するActionを子タスクに渡して、後で親タスクでリストから取り出して処理を行っていますが、
可能であればControl.Invokeのように、子タスクのコンテキストのタイミングで親タスクのコンテキストに明示的に移って実行したいと考えています。
これを実現する方法があれば教えてください。Invokeの仕組みを解説してるサイトもあったのですが、意図する方法は見つかりませんでした。
void parent_proc(Tree tree) {
var locker = new ReaderWriterLockSlim(); var datalist = new List<string>(); var tasklist = new List<Task>();
Action<string> adddata = (string d) => { //排他制御でデータをリストに追加
locker.EnterWriteLock(); datalist.Add(d); locker.ExitWriteLock(); };
foreach (var node in tree) {
if (node.child != null) {
var task = Task.Factory.StartNew(() => { child_proc(node.child, adddata); }, TaskCreationOptions.AttachedToParent);
tasklist.Add(task);
} else {
datalist.Add(node.data);
}
}
Task.WaitAll(tasklist.ToArray());
foreach (var data in datalist) { //今は親タスクのコンテキスト上で処理している
}
}

void child_proc(Tree tree, Action<string> adddata) {
foreach (var node in tree) {
if (node.child != null) {
Task.Factory.StartNew(() => { child_proc(node.child, datalist); }, TaskCreationOptions.AttachedToParent);
} else {
adddata(node.data); // このリスト追加処理を無くして、ここで親コンテキストに移って実行したい
}}}
2023/10/09(月) 10:33:03.03ID:iALOF4I2M
分かってると思うけど親コンテキストには移れない
親に処理を委譲してるだけ
人間と同じ

それなら親が適切なタイミングでリストを見て実行する様に書き換えるだけだろ
当然waitもawaitも出来ない
脳内でじっくり何をやるか順をシミュレートして考え直すしかない
2023/10/09(月) 11:18:08.46ID:N+sXw7NG0
>>384
ありがとうございます。
よくよく考えるとControl.Invokeにはメッセージループがあるので、
ワーカスレッドから渡されたdelegateを同期的に実行するタイミングがある事に気付きました。
今回の場合Task.WaitAllにタイムアウトを入れて、子タスクのデータを泥臭くポーリングすることで意図する事ができました。

while (!Task.WaitAll(tasks, 50)) { check(); } // check内で子タスクデータを処理
check(); // 全子タスクが完了した後残りデータがあれば処理

ウィンドウが無いケースでもExecutionContextで強引に実現できそうな記事も見つかりましたが、
やろうとしてる事に対して複雑になりすぎるので今回はこれでいこうと思います。
386デフォルトの名無しさん (ワッチョイ 6ecb-iLfk)
垢版 |
2023/10/10(火) 06:13:55.38ID:Cej5/emK0
キャストとパースは同じものでしょうか?
キャストは型変換で、その手法の1つがパースというイメージです。
2023/10/10(火) 08:39:26.85ID:+0pTTr910
違います
388デフォルトの名無しさん (ワッチョイ 6ecb-iLfk)
垢版 |
2023/10/10(火) 10:21:35.45ID:Cej5/emK0
キャストとParseメソッドの違いは、主に次の点です:

キャストは同じ型の変換に使用されます。つまり、基本的なデータ型間での変換(例: int から double への変換)に適しています。一方、Parseメソッドは、異なる型のデータを文字列から変換するために使用されます。

キャストは基本的に明示的な型変換です。つまり、変換先の型を明示的に指定する必要があります。例えば、(int)doubleValue というように変換先の型をカッコ内で指定します。一方、Parseメソッドは、変換元の文字列が適切な形式であることを確認し、それを適切な型に変換します。具体的な型指定は不要です。

理解
ありがと(*´ω`*)
2023/10/10(火) 10:34:12.03ID:l0kLdmnhM
キャストは同じ型の変換に使用されます。

いきなり意味不明でワロタ
390デフォルトの名無しさん (ワッチョイ 6ecb-iLfk)
垢版 |
2023/10/10(火) 18:19:35.44ID:Cej5/emK0
テキストファイルから読み込んだ数字というのは文字列なんですね
だからparseが必要ってことか
391デフォルトの名無しさん (アウアウウー Sa39-OOOs)
垢版 |
2023/10/12(木) 11:00:16.99ID:u59ybXeVa
float32/64からint32/64にキャストするときって
小数点以下は勝手に切り捨てられるってことで良いのかな
オーバーフローしてたらどうするのかな
色々面倒だよね
「同じ型の変換」って言われると
int32<->int64
の間のキャスト観たいなのを想像する
これも問題無い訳じゃないけど
parseは文字列からの変換を普通に思い浮かべるが
jsonのparseとかみたいに構造まるごと変換のときも使うしな
2023/10/12(木) 11:30:51.26ID:/aj2HENwM
マニュアル読め
全部書いてある
2023/10/12(木) 21:34:09.63ID:ZXm8+EHB0
その言葉が聞きたかった
394デフォルトの名無しさん (ワッチョイ 615f-Hwqz)
垢版 |
2023/10/13(金) 01:32:05.01ID:/NTFMnAJ0
VisualC#を独習している者です。

教えてください。
GridViewコントロールに←→のような、カレント行を移動させるボタンって、ツールとして用意されていないのでしょうか?
コマンドボタンコントロールを並べて自作するしかないのでしょうか?
2023/10/13(金) 01:33:44.55ID:yXjHmc7Hd
引き続き独習してください
2023/10/13(金) 01:34:36.65ID:h+M8WaIua
そういうリッチな機能は標準じゃない
欲しいなら自作もしくは適当なUIライブラリ
2023/10/13(金) 01:43:53.31ID:/NTFMnAJ0
>>396
ありがとうございました。
398デフォルトの名無しさん (ワッチョイ 6ecb-iLfk)
垢版 |
2023/10/13(金) 07:24:31.11ID:5yHLdduY0
プログラミングの基礎固めってどこまでやるもんでしょうか
成果物作ろうとしても基礎が出来ないと効率悪いですよね
2023/10/13(金) 08:39:13.59ID:61zwOKk/M
このへんまで
2023/10/13(金) 09:19:59.83ID:HwONiL7X0
基礎学習は適当に切り上げてなにか作らないと続かないよ
401デフォルトの名無しさん (ワッチョイ 6ecb-iLfk)
垢版 |
2023/10/13(金) 13:08:28.58ID:5yHLdduY0
>>400
配列の使い方程度なら基礎ですよね?
ゲームなどの成果物はすぐにでも作りたいのですが、他人のコードを読めない問題に直面しまして、基礎からやり直しです。
2023/10/13(金) 13:40:14.28ID:ZKg5gD/yM
倉庫番の人か
2023/10/13(金) 14:03:01.11ID:C21zpC1k0
こないだの配列宣言の話のときは途中でフェードアウトしてたな
そういう中途半端な姿勢ではこの先も危ういだろう
404デフォルトの名無しさん (ワッチョイ 6ecb-iLfk)
垢版 |
2023/10/13(金) 14:09:32.71ID:5yHLdduY0
ただの誹謗中傷になってる場合は、出来るだけ見ないようにしてます
2023/10/13(金) 14:13:56.90ID:C21zpC1k0
誹謗中傷とそうでないものの区別がつかないならこのスレには向いてないよ
他所行ったほうがいい
406デフォルトの名無しさん (ワッチョイ 6ecb-iLfk)
垢版 |
2023/10/13(金) 14:17:45.01ID:5yHLdduY0
それは受け取り方にもよるんですよね
特に人格に対する中傷なんかは得るものがない割に、気が滅入ります
主観的にどう受け取るかという部分もありますし、誹謗中傷の定義は万人共通ではないかと
2023/10/13(金) 14:25:28.33ID:61zwOKk/M
配列の宣言、作成、初期化、参照

古典のC言語でもポインタが理解できなくてリタイヤする奴は沢山いた

C#ではとても書きやすくなっているが同じ機能があるということは同様に難しいということ
逃げるなら早い方が良い
2023/10/13(金) 14:31:08.93ID:C21zpC1k0
>>406
じゃあ聞くけど>>340-341のどこを中傷だと感じた?
俺は極力そういう言葉を避けて相手をしたつもりだけど
409デフォルトの名無しさん (ワッチョイ 6e83-AlWi)
垢版 |
2023/10/13(金) 14:56:06.30ID:U+TO1bu90
>>406
お前はもう来るなよ
消えろや
2023/10/13(金) 15:44:17.55ID:dO1Gm34h0
>>401
Unityでゲーム作るのが目的なんだろ?
だったら、作って覚える系の入門書をどれか一冊こなしてみればいいと思うよ
そうすれば何が不足しているのか、もう少し具体的に自覚できるようになるから
2023/10/13(金) 15:58:28.16ID:Obwc2RPrM
1ヶ月も同じことをグダグダしてる馬鹿は荒らしか?そうでなければ才能ないから諦めて消えろ
412デフォルトの名無しさん (ワッチョイ 8542-AlWi)
垢版 |
2023/10/13(金) 19:01:36.48ID:aXuG2/tR0
入門書を読めというアドバイスには意地でも耳を傾けない初心者
2023/10/13(金) 20:52:48.46ID:p2gW+gfLM
ブラックジャックを思い出した
2023/10/13(金) 21:10:42.40ID:zzxv1uCg0
他人のコードを読み解くのは自分でコードを書くよりも能力が要る
断片的なネット記事から基礎を学習するのも他言語でプログラミングに慣れてないとちょっと厳しい
まぁ、完全な初心者は定番の入門書を読めってことなんだけど、聞く気無いんだろうなぁ
2023/10/13(金) 21:26:25.51ID:xHhmIQhj0
せめていい入門書はありますか?くらいには変わってほしい。
2023/10/13(金) 21:41:30.13ID:7GZqpMG8d
これでまたしばらくだんまりでほとぼりが冷めた頃に的外れな質問してくるようならダメだな
2023/10/13(金) 22:57:31.42ID:9b0YvF5R0
初心者には入門書「だけ」は無理だよ
環境設定とか、バージョンの組み合わせとかで動かないことが多い
その場合、初心者は解決できない
ググっても無駄だし
2023/10/13(金) 23:21:21.97ID:79LHTXDX0
俺はお前が判んなくても一向に困らないし相手してやってるのは自己満足の暇つぶしでしかねーんだよ有難く思えよ?ただし理解しようとしない馬鹿の常駐だけは勘弁
がこのスレ住人の大体の本音だろう。つまり馬鹿の相手をするな
2023/10/14(土) 01:34:27.59ID:Z8feDlim0
他人のコードを読むと勉強になると言うのは嘘。
情弱は、それに引っ掛かる

正しくは、他人のコードを無限に時間を浪費して読むと、
ほんの少し分かると言うだけ。
それを10年やっても、半年ぐらいの初心者に勝てない

他人のコードを読むのは、自分で書くよりも、10倍以上難しいし、
さらに悪い事に、記憶の定着率も最悪。
だから、勉強にならない

初心者は、掌田津耶乃みたいな入門書で良い

特に、ひろゆき・ホリエモンみたいなプログラミングの素人に聞かない事。
彼らは、やった事ないでしょ?
2023/10/14(土) 01:53:04.22ID:fodO8s4z0
AIに聞くのも無しだな
AIは平気で自信満々に大嘘を吐く
もちろん合ってる場合もあるけど、知識が無いと真偽を判断出来ない
2023/10/14(土) 01:53:43.47ID:fUs4mpOo0
>>419
こういうバカは無視でいいぞ
2023/10/14(土) 02:44:05.87ID:Z8feDlim0
これで初心者が、Ruby on Rails を学んで転職していくのが分かるでしょ?

それ以外の言語が通用しない理由。
10年やっても、何も作れないから

大学でC をやった香具師の99%が、プログラミングはしょーもない。
何も作れないとやめていく。
Cの教師が職を失いたくないからやってるだけなのに、それにだまされているだけ

C# も同じ。初心者ができるわけない。
9割がモデラー。プログラマーなんて、ほぼいない

Rails以外で、初心者が転職できる事はない!
難しさの桁が違う

3D モデルを作って動かすんだよ。
クォータニオンとか、数学物理をやっていないと無理。
Python と同じ。文系なんて採用されないでしょ。
だから、文系のアホは皆、Railsへ行く

プログラマーはまず、Railsなどをやった後の話
2023/10/14(土) 03:58:59.56ID:kxoihP4v0
C/C++も結局は環境依存の各種ライブラリを使わないと初心者では大したものは作れない
普通の授業だとファイル入出力までで終わりで
ディレクトリ操作のdirect.hなんて教えてくれる所は少ないからな
2023/10/14(土) 07:56:47.72ID:uWMJSV260
RORはGPLに汚染されたので関わらないのが吉
2023/10/14(土) 08:14:57.36ID:UlVPgub+0
配列の話の時も、どういう理解で話してんのか皆が疑問に思ってんのに
質問するだけで疑問への説明も無くフェードアウトだったからなぁ
2023/10/14(土) 08:20:19.40ID:VmmeRCt60
言われた通りやってるだけでプログラミングに対する目的意識が無いから
入社後に作らせてみてもネットのコピペとかばっかで内容理解してないんだよな
そりゃあ何も作れるわけないわ

419とかそれ系の僻みじゃねぇの?w
427デフォルトの名無しさん (ワッチョイ 7b93-f0fU)
垢版 |
2023/10/14(土) 11:18:53.62ID:eUQTPEKE0
小学校6年くらいの段階でC#でテトリス作れたら将来有望?
最近の子供はまじでプログラミングに関しては優秀なイメージ
C#分かってる小学生10人に1人くらいはいそう
428デフォルトの名無しさん (ワッチョイ 7b93-f0fU)
垢版 |
2023/10/14(土) 11:23:19.49ID:eUQTPEKE0
同僚の子供がC#でテトリスを応用化したゲーム作っててまじで焦ってる
テトリスなんて入社研修で作るからようは12年も先取りしてるってこった
2023/10/14(土) 12:03:13.89ID:JNPOXyOW0
子供が大人にプレゼンしてる番組あるじゃない
あれみたいに好きでやってると脳はバンバン吸収する
オレの脳は歴史や城の良さをプレゼンされても全然入ってこない
430デフォルトの名無しさん (アウアウウー Sadd-f0fU)
垢版 |
2023/10/14(土) 12:06:37.52ID:x03gZ5vca
>>420
掌田津耶乃はNGワードに入れてる
431デフォルトの名無しさん (アウアウウー Sadd-f0fU)
垢版 |
2023/10/14(土) 12:07:19.53ID:x03gZ5vca
あれ?アンカ間違った
>>421
掌田津耶乃はNGワードに入れてる
432デフォルトの名無しさん (ワッチョイ 7b93-f0fU)
垢版 |
2023/10/14(土) 14:03:24.13ID:eUQTPEKE0
>>429
テトリスってことは難めの非同期とかも理解してるってことだよな
ブロックの回転とか難しそうだしマニアックな文法も理解してそうだ
人生余裕なんだろうな
433デフォルトの名無しさん (ワッチョイ 315f-iZeJ)
垢版 |
2023/10/14(土) 14:48:41.51ID:XZPKtcR/0
入門がてら、はじめて自作のWindowsフォームソフト(ストップウォッチ)を作りました。
今後もC#の学習を続けてもっと技術を身につけたらこのソフトも機能追加して改善していくつもりです。

そこでお聞きしたいのですが、VisualC#において、バージョン番号の管理ってできないでしょうか?
現在は、何か手を加えるたびに、アップデート記録.csファイルに変更点をコメントで記述し、メインフォームに
あるラベルコントロールのテキストを「ver.1.00」から「ver.1.01」へ等と手で書き換えています。
なんとなくの想像ですが、「いまのバージョン番号」「前バージョンからの変更点」を記録しておく仕組みが
VisualStudioかVisualC#にはあるのではないかと思うのですがいかがでしょうか?
プロの人も私と同じように手作業でやってるとは思えないのですが。
2023/10/14(土) 15:51:21.57ID:VHbVocpfM
プロの人は仕様書に書かれたのを手で更新してると思うw

ソースコード自体のバージョン管理はgit
変更はこれでさかのぼれる

その他にバージョンの番号の仕組みはあるにはあるけどバージョン管理とは言うもののそれは実際何なのかと言うことになる
そこの入り口を通ってないと仕組みを知ってもあまり活用できない

ドボンと言うサイトにも書いてあるけどじゃあ理解されるのか使われるのかと言うと疑問
個人では日付管理レベルぐらいじゃないかと
2023/10/14(土) 16:03:02.60ID:zTCJ5Aqla
バージョン番号(ビルド番号)を自動設定したいなら、プロジェクトの設定でビルド時に実行できるコマンドを設定できるから
そこに「テキストファイルから数値読み込んでその数値をひとつずつ大きくして上書きする」コマンドラインツールを自作して設定しとけばいい
そしたらビルドするたびにそのツールが実行されて勝手にビルド番号が上がってく
ストップウォッチでは起動時のそのテキストファイルを読み込んで数値を表示するようにしときゃいい
2023/10/14(土) 17:05:06.76ID:QqyzTN0i0
>>433
実行モジュールのバージョン管理とソースコードのバージョン管理がごっちゃになってるようだから
まずそこを区別して考えよう
2023/10/14(土) 21:07:01.90ID:VHbVocpfM
>>427
マジレスするとテトリスはもう使い古されてて
数年前にはyoutubeで1時間でテトリス作ります見たいなのが溢れてた
それを追えば普通に同じものは出来る

それは確かcだったけどC#のも探せばあるだろう
どちらかと言うとそこがスタートラインかな
まともに完成品をコピー出来ることが重要

ライブコーディングが流行ってた時期はもう過ぎてるけどゲーム制作の需要はまだ続いてる
2023/10/14(土) 21:14:29.46ID:UlVPgub+0
高速コピーすれば理解できるわけじゃないけどな
2023/10/14(土) 21:20:50.18ID:VHbVocpfM
自分が大学に入った際に実習室の脇に置いてあったDOSマシーンに先輩の作ったテトリスが入ってた
それは普通のレベルだったけどコマが6角形になった奴も作ってた
誰かの作ったものを自力で作り直したらしいけど難しすぎて全然面白くなかった
完成度は以上に高かったが独自ルールが入っててそれが余計に邪魔だった

やれる人は一度進むとどこまでも自力で突き進める
他人に頼らない
2023/10/14(土) 21:24:46.58ID:abaBOYXtd
テトリスが使い古されてるかどうかはそれを作れる小学生が有望かどうかには関係ないわな
2023/10/14(土) 21:31:03.53ID:VHbVocpfM
事実として誰にでもテトリスはコピーはできる
その事実を知らないでそこだけを見て有望だと早とちりしたらかわいそうじゃないか
2023/10/14(土) 21:37:50.07ID:zTCJ5Aqla
使い古されたアイデアのテトリスだろうとできたならそれはすごい
さらにきちんと配布できる形式までもっていって他人がプレイしてるなら神だよ
妄想するだけで出きる気になってるだけの奴がほとんどだからな
2023/10/14(土) 21:38:29.71ID:abaBOYXtd
重要なのはコピーできるかどうかじゃなくて実際にコピーしたかどうかやろ
2023/10/14(土) 21:40:24.49ID:VHbVocpfM
当人の作りたいものがテトリスならまあなんとなく理解出来るけど
今どきの小学生がテトリスを自発的に作りたいと思うかどうかは謎
2023/10/14(土) 21:42:41.20ID:eGjaQVx20
スイカゲームを作ろう。
2023/10/14(土) 21:46:07.15ID:VHbVocpfM
テトリスの横幅を60マスぐらいにしたりなどアイデアはいろいろ出てくるはず
そこらへんがまずスタート+0.5ぐらい

自分らの世代は小学生のころからハンドアセンブルしてVRAMいじってたけどそういうのとは世界が違う
早ければ偉いと言うものでもないしマイペースでやればいい
2023/10/14(土) 21:59:46.82ID:abaBOYXtd
オイコラはとにかく自分の昔話自慢話をしないと気がすまないのな
2023/10/14(土) 22:02:18.89ID:VHbVocpfM
脳は使わないと衰える
使えよお前も
2023/10/14(土) 22:04:52.58ID:VHbVocpfM
ゲーム作るんならリアルタイム要素の少ないパズドラとかカードゲームとかみたいな今のソシャゲ的なものを作るほうが楽だし
面白味がある

それじゃなくてテトリス
何か答えは出てるだろ?
2023/10/14(土) 22:06:17.01ID:abaBOYXtd
>>448
それで何か言い返したつもりなの?
2023/10/14(土) 22:08:12.62ID:VHbVocpfM
だから脳は使うものだと…
2023/10/14(土) 22:11:16.66ID:abaBOYXtd
脳を使って出てくるのがオレスゲーばっかの人よりはマシなのよ
2023/10/14(土) 22:28:26.27ID:Wcju1f810
C#で初めて作ったのがISBN変換機という誰得なアプリ。
電卓のフォームにISBN13を打ち込んだらISBN10に変換してくれるだけ。
2023/10/14(土) 23:07:53.04ID:8UeeWOHx0
>>453
それが自分の実用ニーズを満たしていたのならテトリスより何百倍もいいと思うぞ
2023/10/14(土) 23:12:54.96ID:VHbVocpfM
自分もそう思う
自分の作りたいものを作れる能力だけが必要なのでプログラムは非常にハードルが低い
配列すら使えなくても問題ないと言うか最近は旧来の配列をそのまま使ってる人は少ない
2023/10/15(日) 00:06:47.24ID:lg0OQoNW0
>>434-436
ありがとうございました。
私の想像してるようなもの(バージョン登録フォームのような機能)はないのですね。
とりあえず今までのやり方を続け、上級者の方法を知ることができればそれをマネすることとします。
2023/10/15(日) 01:27:35.26ID:vJVqhjXx0
>>456
己の道を突き進む前にせめてこのへんは目を通してみて

https://araramistudio.jimdo.com/2017/05/02/c-%E3%81%A7%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E6%83%85%E5%A0%B1%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B/

https://helve-blog.com/posts/csharp/software-version/
2023/10/17(火) 19:50:26.90ID:MR10mjT/0
>>457
ぴったり自分の知りたかったことでした!ありがとうございます!!
2023/10/26(木) 11:39:53.77ID:hbOK49Zj0
class A : B { }

public Fuga( List<B> hogeList ) { }


List<A> hogeList = new();
Fuga( hogeList );
と呼び出そうとすると型が変換できないコンパイルエラーになるんですが、何故?
Fugaの中ではクラスBの値しか使わないです
2023/10/26(木) 11:55:26.59ID:54WAJ7qI0
Fugaが内部でこういうことやるかもしれないじゃん?
hogeList.Add(new C());
// class C : B {}

Fugaが読み取りしかしないならIReadOnlyList<B>を使うという方法がある
2023/10/26(木) 12:09:16.76ID:5lqk6WWS0
>>453
むしろ変換できるって初めて知った
2023/10/26(木) 12:46:04.83ID:hbOK49Zj0
>>460
なるほど、確かに。
ありがとうございました。
2023/10/27(金) 09:13:10.14ID:4nGOHp4Z0
>>459
public Fuga<T>(List<T> hogeList) where T : B {}
こうするとか
464デフォルトの名無しさん (ワッチョイ c18f-BTDU)
垢版 |
2023/10/27(金) 10:15:54.51ID:nBxrDXuS0
なぜ基底クラスの方を使う
基底クラスの操作は基底クラスに書きやがれ
2023/10/27(金) 10:38:48.98ID:4nGOHp4Z0
件の関数が派生クラスに書かれているかどうか明記されてないし
2023/10/28(土) 10:34:16.28ID:Wr7RJXLy0
OpenCVSharpを使い始めたんだが思いの他情報が少なくてつらいな
chatGPTを叱り付けながらpythonのコードから変換してる
コードが正しいんだか判らないからpythonてうんこ環境も結局入れる羽目になってる
うんこー
2023/10/28(土) 11:04:10.33ID:LbOhwKX60
OpenCVSharpてのがラッパーとして定番なら使いやすくできてるのだろう
昔同様にopenCLラッパーを使ったが、良く出来てるなと思った(オレには作れん)
CPUとGPUに同じソース書けて、同時に全開で使うのは脳汁でたわ
2023/10/28(土) 11:11:57.05ID:Wr7RJXLy0
pythnから置き換える中でしばらくこの行が何をしてるのか意味不明だったのだが
avg = gray.copy().astype("float")
C#ではこういうことらしい
avg = gray.Clone();
avg.ConvertTo(avg, MatType.CV_32F);
この辺りいくらぐぐっても全く出てこないのでC#でOpenCV始めようとする俺みたいな馬鹿は参考にするように
2023/10/28(土) 11:14:57.25ID:Wr7RJXLy0
どうやらOpenCVではMatがCOMで言うVARIANTみたいな全知全能型らしい
つまりCOMみたいな泥臭い動的型変換を割と頻繁にやらされるうんこライブラリみたいね
2023/10/28(土) 11:32:14.34ID:5r3ES/EEM
OpenCVを語りたいならC++の方からアプローチして何を考えて作られたのか理解したほうがいい
pythonだと曖昧で魔法的に見えるだけ

Matも納得できるだろう
何が必要とされてそのようになったのか理解も進むと思う
そして二度と上のようなカキコはしなくなると思われる
2023/10/28(土) 11:49:26.77ID:5r3ES/EEM
入門者にこんなことを言ってもい意味がないけど

高級言語でしか考えられなくなると
単純なメモリ構造やアセンブラレベルでの高速動作へのノウハウなどへの理解が低下する
何が要求されているかの思いが至らず狭い世界での物差しで全てを測ろうとしてしまう

それが絶対的に悪いと言うことではないがこれから世界を知ろうとするなら人間的に損だと思う
2023/10/28(土) 11:57:59.55ID:Q5mUhCaNd
またおじいちゃんのピンボケ説教が始まった
2023/10/28(土) 12:01:21.10ID:sHjfoUv70
この視点は必要だと思うけれど。
2023/10/28(土) 12:08:36.36ID:Q5mUhCaNd
不要だとは言ってないよ?
ピンボケだと言ってるだけ
2023/10/28(土) 12:23:05.53ID:Wr7RJXLy0
>>470-471
損得の観点が違うな
OpenCVでpython(以降うんこ)が使われてるのはOpenCV自体が十分速いからだな
でうんこ使ってるやつはOpenCVの中で何が起きてるかなんてどうでもいい
俺がC#でやり始めた理由はうんこを入れる必要が無くて孤立したうんこよりもWindowsではだいぶ楽できるなと踏んだからだ
まあ検証のために一時的にうんこ入れたけど慣れたらうんこなんて不要になると考えてる
ああ、C++には一切興味無いから本スレで存分に語りなよ
2023/10/28(土) 12:50:06.14ID:Se05+6CE0
公式にサポートしてないC#を使って公式にサポートしてるpythonを落とすやつ…
https://www.klv.co.jp/corner/python-opencv-what-is-opencv.html
2023/10/28(土) 13:53:54.87ID:wwtVontY0
5年くらい前にOpenCVSharpを使ったけど、使いやすかったな。
WEBカメラの動画表示とキャプチャくらいしかしてないけど。
2023/10/28(土) 14:15:21.84ID:Wr7RJXLy0
>>476
公式サポートがうんこみたいなラインナップなのは知ってる
そしてここはC#スレね
2023/10/28(土) 14:17:52.54ID:Se05+6CE0
>>478
そしてここは初心者スレ
2023/10/28(土) 14:25:16.30ID:Wr7RJXLy0
>>479
初心者ワードは荒れる元だから空気読んでわざわざ避けてた俺の気遣いを無駄にしたな
過去ログでも読んで反省してこい
2023/10/28(土) 15:28:56.35ID:Se05+6CE0
>>480
なにこの俺ルール
気遣い(笑)
じゃあ最初からこのスレに来るな
2023/10/28(土) 16:41:40.98ID:9hkTJ9Z90
そう、C#スレかつ初心者スレ、OpenCVスレではない
2023/10/28(土) 17:13:29.55ID:VEuygnOSa
自治中うざ
opencv/pyathonならスレチだけど
opencv/c#なら別にいいだろ。opencvネタでスレ埋まる勢いならどっか行けって感じだけどさ
2023/10/28(土) 18:54:33.76ID:hqVJRLxwd
大好きなうんこワードがアレルゲン
2023/10/28(土) 19:31:43.92ID:R/03Lugt0
pyathon
ぴゃそん!
2023/10/28(土) 19:48:40.91ID:hfV6FxbxM
openCVの元になったSPIDERのver1はVAX FORTRANで実装されている。
そこまで戻る?😅
2023/10/28(土) 19:57:30.47ID:5r3ES/EEM
> OpenCVSharpを使い始めたんだが思いの他情報が少なくてつらいな
> chatGPTを叱り付けながらpythonのコードから変換してる

このあたりから加齢臭がするから初心者でも知ったような口を利くジジイなんだろうなw
2023/10/28(土) 20:26:07.01ID:cD9jg3Vs0
お爺ちゃんから加齢臭言われてて草
2023/10/28(土) 20:54:21.57ID:+siiqQCh0
今日はカレー食べて良いって聞いてきた
2023/10/29(日) 04:07:56.42ID:qLQkMhra0
ちょこっとExcelのファイル読むためにCloseXml入れたら
exeフォルダにアホみたいにdll置かれて吐きそうになった
2023/10/29(日) 08:05:44.72ID:U4tz9u7X0
Excelのファイルとか、Zip解凍して中見ればよくね
2023/10/30(月) 01:37:09.90ID:2YMOstZ/0
>>478
うんこでも漏らしたのか?
2023/10/30(月) 19:54:00.78ID:sJLYeqSha
ナイトライダーみたいなプログレスバーってどうやって作るの?
2023/10/30(月) 22:25:37.91ID:WdZXFUgO0
>>493
https://dobon.net/vb/dotnet/control/pbmarquee.html
2023/10/31(火) 08:36:18.12ID:uBGe6XWc0
もし往復させたい方なら、自分で描け
2023/10/31(火) 09:11:22.59ID:A/eQJHdaa
できた
2023/11/01(水) 02:12:45.08ID:tzHICVYNd
こういうアニメーションに凝りだすと夢中になって本業を忘れる
498デフォルトの名無しさん (ワッチョイ 5374-OMHE)
垢版 |
2023/11/01(水) 08:02:21.06ID:c2Ch+IZA0
わたしも画像編集でPhotoShopに凝りだすと夢中になって本業を忘れる
499デフォルトの名無しさん (ワッチョイ 197c-PbF9)
垢版 |
2023/11/01(水) 08:17:23.82ID:uY4c0qsQ0
>>497
こだわって時間掛けた物ほどユーザから邪魔とかもっとスッキリさせてと言われるんだよねw
2023/11/01(水) 10:47:07.49ID:FsETBNtv0
あるあるww
2023/11/01(水) 10:54:49.35ID:WpcHr6kk0
注文内容の9割が見た目だからデザインに凝るのは悪いことではない
ただしデザインセンスとプログラミングの技量は別物、両方持ってる人はごくわずか
例えば警告にColors.RedやMessageBoxを使っちゃう人は絶望的に足りてないので、素直にコンポーネント屋から買ってきた方がいい
2023/11/01(水) 11:33:32.33ID:kzDrlSAv0
凝ってみるのはアルアルだろ
(パパッと仕上げてしまう人とか特に)
凝っても時間のムダだなとやってみてわかることもある
2023/11/01(水) 11:44:46.59ID:r0MV67Oa0
プログレスバーの話題って最近別のとこでも見た気がするな
長時間掛かる事が予測可能な処理で使う分には便利には違いないから
パーセンテージやタスク数で進捗視認できる手段は用意した方がいいだろうね
ナイトライダーは俺や客を怒らせるぐらいの効果しか期待できないから注意した方がいい
2023/11/01(水) 12:36:46.89ID:eYGfI0F50
0%...1%...のまま長時間待たされていきなり99%になるやつか
2023/11/01(水) 13:47:15.73ID:nOPPTWkh0
「デザイン」という言葉を「外観や視覚要素を指す表現」として用いるおじさん
2023/11/01(水) 14:13:09.44ID:KHH8FqfT0
「プログレスバーの進捗を正確にしてくれ」というオーダーは良く聞くな
2023/11/01(水) 14:49:14.25ID:w6vqB0t/M
言われなくてもやれよ
2023/11/01(水) 14:56:29.53ID:r0MV67Oa0
俺が遊んでたソシャゲのアップデートはパーセンテージで小数点第二位まで出して糞でかいアップデートでもちびちび進んで判りやすかったから
多少速度を犠牲にしても1万ぐらいの解像度で進捗出てくれば良い感じに見えるんじゃねえかな
2023/11/01(水) 18:10:47.25ID:i3Lw7J6rd
仕事量を進捗にしつつ、時間を予測
じゃダメなのか
2023/11/01(水) 19:47:38.04ID:gNV0JjwF0
>>506
「一番遅く計測した値をちょっとかさ増しして、普通にすすめるか。時間足りなかったらフリーズしたことにして、再起動させることにしよ」
2023/11/01(水) 21:04:31.75ID:e0PJZdQsM
MSの場合100%超えても続いてるのが頭にくる
100% = 終わってると思うんだけど
2023/11/01(水) 21:11:50.04ID:e0PJZdQsM
話をもどそう
昔いくつか論文を読んだけど単純に活用できそうな例はあまりなかった

プログレスバーの進捗状況は時間とは限らないので
ファイル読み込みながら処理してる場合はファイルの読み込んだ位置で出してる(MSもこの方式なのかもなあ…)

データの内容で処理時間に偏りがある場合は時間と捉えてる人はイライラするんだろう
でも完全に予測不能だから仕方がない
2023/11/01(水) 21:30:40.26ID:8Rtg2gaed
おじいちゃん論文とか言い出しちゃったよ
2023/11/01(水) 21:36:12.10ID:2ai15zcw0
こっちの本音はナイトライダーにしてスピード上げる方に力を入れたいだわな
2023/11/01(水) 21:41:59.26ID:e0PJZdQsM
パターンがある場合はデータをもってヒューリスティックに%出すことも出来るけど
まあその場合も完全ではないので最終的にかなりずれてたら利用者も不満に思うわな
2023/11/01(水) 21:55:26.88ID:9U3nJwO/0
「ヒュンヒュン」いうサウンドファイルまでつけて配布バイナリのサイズアップもしておきました。
2023/11/01(水) 22:08:52.60ID:az8MV/pf0
追跡モードボタンを用意した上で、それを押した時に流す動画も同梱しておこう
以後文句が出ることもなくなるはず
2023/11/01(水) 22:49:46.11ID:TVifX6FS0
ちょっと話ずれるけど、
画面からの登録処理を非同期にしてあるけどその間その画面で他に操作するような用途ない
とかありがち
頑張って進捗報告しても終わったその後は画面閉じるだけならあんまり意味ないよなぁ
2023/11/01(水) 23:44:12.35ID:64ol45tY0
待っている間にその画面でミニゲームができるようにしておけ。
2023/11/02(木) 01:02:40.00ID:WZq6ELi/0
登録処理程度なら進捗報告頑張らずにナイトライダーで動いてますよアピールしておけば事足りるだろう
2023/11/02(木) 09:32:02.01ID:kxWwWLf8a
>>511
ほんそれ
2023/11/02(木) 09:37:59.13ID:kxWwWLf8a
>>466
chatGPTは
OpenCVSharpで描かれたサンプルと
Pythonのcv2とかで描かれたサンプルと
C++で描かれたサンプルを
それぞれ区別出来ていると思うか?
2023/11/02(木) 09:41:16.63ID:kxWwWLf8a
>>468
avg.ConvertTo(avg, MatType.CV_32F); ← これは OpenCV の関数だが
gray.copy().astype("float") ← これは OpenCV ではなく numpy の機能を利用してるはずで高速でもある
もちろんデータの中身は相互に使える前提でやってる
2023/11/02(木) 09:42:35.77ID:kxWwWLf8a
>>469
COM は泥臭いけど cvMat はスマートだ
2023/11/02(木) 13:44:36.55ID:1Z+krstx0
c#でxamlの画面を作るときに
cs側の定数を埋め込みたい時ってどうしたらいいですか
例えば
static public class constdata{
public const string hoge_string="hoge.png";
}
と言う定数を作ったときに
xaml側で
<Image Source="hoge.png" />
のhoge.pngをconstdata.hoge_string にしたいとき

後ついでなのですが
定数にするときって
public const string hoge_string="hoge.png";
public static string hoge_string="hoge.png";
のどっちが正しいのでしょう
2023/11/02(木) 16:54:53.47ID:bF76OlLL0
定数は上
下は定数じゃなくて静的変数
しかもreadonlyついてないから中身変わる
2023/11/02(木) 17:28:53.15ID:qUNY/xJi0
staticプロパティは、そのクラスの名前空間をxmlns:hoge="..."で定義してるとして
<Image Source="{x:Static hoge:constdata.hoge_string}"/>
という風に参照できるが、フィールドとかconstとかはどうだったかな…。
2023/11/02(木) 18:35:57.66ID:O0TENg7J0
constも hoge:[クラス名].[const名] で参照できたはず
2023/11/02(木) 20:05:34.94ID:1Z+krstx0
>>526-528
ありがとうございます。
上手く行きました

"{x:Static hoge:constdata.hoge_string}"
こういう書式ってどこで勉強したらいいのでしょう
2023/11/02(木) 21:05:57.33ID:bF76OlLL0
「xaml static」でググるだけでも↓とか見つかるよ

https://learn.microsoft.com/ja-jp/dotnet/desktop/xaml-services/xstatic-markup-extension
https://shuhelohelo.hatenablog.com/entry/2019/11/29/001200
https://www.nuits.jp/entry/xaml-static-binding

(すまんがスラッシュは半角に変換してくれ……)
2023/11/03(金) 14:30:46.23ID:rKkfliCa0
constはコンパイル時解決
readonlytついてても変数は実行時解決

xamlは知らんが、dllとか作ると問題になるときがある
2023/11/03(金) 14:30:58.24ID:rKkfliCa0
constはコンパイル時解決
readonlytついてても変数は実行時解決

xamlは知らんが、dllとか作ると問題になるときがある
533デフォルトの名無しさん (ワッチョイ 5374-OMHE)
垢版 |
2023/11/03(金) 15:44:06.59ID:olK1WazS0
constはコンパイル時解決
readonlytついてても変数は実行時解決

xamlは知らんが、dllとか作ると問題になるときがある
534デフォルトの名無しさん (ワッチョイ 5374-OMHE)
垢版 |
2023/11/03(金) 15:44:31.98ID:olK1WazS0
大事なことなので3回言いました。
535デフォルトの名無しさん (ワッチョイ 068b-/9BA)
垢版 |
2023/11/04(土) 16:36:18.05ID:zFKBPz8N0
排他制御のlock()の中って適当なobject型いれていいんですかね
この理屈がいまいち分かりません、おまじないみたいな認識でおkですか?
2023/11/04(土) 18:06:17.74ID:Piez7dab0
ダメ
2023/11/04(土) 18:37:44.75ID:h505bWOx0
プログラムにおまじないなんかねぇーよ
2023/11/04(土) 19:11:44.76ID:W1fOq5zR0
何も判ってないみたいだしマルチスレッド入門サイト的な所か本を一通り読んだ方がいいよ
プラットフォーム毎に少しやり方が違うだけだからC#に限らない
2023/11/04(土) 19:31:09.98ID:RNqT3ZjLM
>>535
入り口で番号提示して入場しようとすると番号当り一人しか入れない仕組み
objectのアドレスが番号になってるぐらいに考えて…
2023/11/04(土) 20:01:30.54ID:hziOgXuw0
おまじないはあるよ
絶対はいらないエラー検査ロジックを書いておくと
修正でミスってもバグらないことがある
2023/11/04(土) 21:05:19.08ID:h505bWOx0
そういうロジックにハイルだけ
ぉ前の知らんとこで入っでるだ
2023/11/06(月) 14:35:53.28ID:uDRsGne/0
何人だよお前w
543デフォルトの名無しさん (ワッチョイ dd5f-ZTan)
垢版 |
2023/11/07(火) 14:28:59.04ID:yst4YU0a0
ListboxでCtrl+C押すとCから始まる要素に選択が移るの無効化する方法はありますか?
というかCtrl+任意のアルファベットでそれから始まる要素を順番で選択していくよくわからない仕様
2023/11/07(火) 15:25:13.30ID:Pq/Tl9vhd
PrviewKeyDownかな
2023/11/07(火) 16:53:35.09ID:XhD41j9dd
マルチやめろ
546デフォルトの名無しさん (ワッチョイ dd5f-ZTan)
垢版 |
2023/11/07(火) 21:29:35.15ID:yst4YU0a0
ごめんなさい初心者スレで聞けみたいなのが合ったのでこっちにも質問しました
解決したんですけどもう一つ疑問があってビルドしたときに〇〇.exe.configってファイルができるんですけどこれに個人情報などは含まれたりしないですかね。
publicKeyTokenとか書いてあるんですけど他人に見られても問題ないようなものですか?
2023/11/08(水) 12:51:28.99ID:4rFdbjcs0
>>546
脳みその量が足りない人はプログラミングとかしない方が良いと思うよ
548デフォルトの名無しさん (ワッチョイ 0697-/9BA)
垢版 |
2023/11/08(水) 21:55:40.45ID:wPZy88vc0
lockについての質問したやつです
おまじないでないことは漸く理解できました
次なんですが
lockによって排他制御されるものは変数だけですか?
ファイルへのアクセスも排他制御したいです
例えばスレッド2つ走らせてA.txtを同時に読み込もうとしたときに
どっちかのスレッドがリジェクトされたら成功ってな感じにしたいです
どうやって状況つくります?
2023/11/08(水) 22:08:02.38ID:/gqdz8KH0
ファイル排他はlookでは無理だねぇ
2023/11/08(水) 22:11:21.15ID:5o5qiXKK0
ほれ
using System;
using System.IO;
using System.Threading;

class Program {
static void ReadFile(string filename) {
int threadId = Thread.CurrentThread.ManagedThreadId;
Console.WriteLine($"Thread {threadId} is reading {filename}");
lock (filename) {
using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read)) {
using (StreamReader reader = new StreamReader(fs)) {
string data = reader.ReadToEnd();
Console.WriteLine($"Thread {threadId} read: {data}");
}
}
}
}

static void Main() {
string filename = "A.txt";
Thread thread1 = new Thread(() => ReadFile(filename));
Thread thread2 = new Thread(() => ReadFile(filename));
thread1.Start();
thread2.Start();
thread1.Join();
thread2.Join();
}
}
551デフォルトの名無しさん (ワッチョイ 0621-/9BA)
垢版 |
2023/11/08(水) 22:44:34.72ID:wPZy88vc0
>>550
うんん?どこに仕掛けがあるの
2023/11/08(水) 22:57:10.85ID:5o5qiXKK0
知らん眠い
後は自分で直して遊んでね
553デフォルトの名無しさん (スップ Sd62-uaP8)
垢版 |
2023/11/09(木) 00:12:36.42ID:+ZNjn+w4d
聞く方も答える方も馬鹿
ファイルはそもそも排他機能があるだろ
2023/11/09(木) 08:04:59.33ID:oWEPbbig0
おまじないでは無いことが理解できたとしても、結局lockがどういう機能かは全然理解してない感じやな
ファイルアクセスを排他制御したいなら↓使っとけ
FileShare.None指定すれば完全排他だ

File.Open(string path, FileMode mode, FileAccess access FileShare share)

File.Openをnew FileStreamにしても一緒
555デフォルトの名無しさん (アウアウウー Saa5-CWlg)
垢版 |
2023/11/09(木) 11:48:42.57ID:Fo7n9qIpa
reject されたら失敗やん?
2023/11/09(木) 12:00:00.13ID:Qu68QkTK0
1つのプログラムの複数スレッドで同時に1つのファイルを読み込もうとしてる理由や状況によってどういうアーキテクチャがいいかは変わる
2023/11/09(木) 12:54:41.26ID:oWEPbbig0
そもそも「1つのプログラムの複数スレッドで同時に1つのファイルを読み込もうとしてる」かどうかわからんのだが
2023/11/09(木) 12:55:39.07ID:oWEPbbig0
例えばじゃなくて実際どう作ってるのか言ってくれないとなぁ
2023/11/09(木) 14:28:35.71ID:Qu68QkTK0
> 例えばスレッド2つ走らせてA.txtを同時に読み込もうとしたときに
額面通りに受け取れば「1つのプログラムの複数スレッドで同時に1つのファイルを読み込もうとしてる」
まあ本当に解決したい問題と書いてる内容が合ってるとは限らないけどね
560デフォルトの名無しさん (ワッチョイ 6df0-q0f1)
垢版 |
2023/11/09(木) 14:43:43.38ID:b1R9Hs+L0
ファイル読む分には同時だろうが関係ないよな?
ライブラリがリエントラントになってればだけどw
2023/11/09(木) 16:45:55.75ID:R7Sf/2Of0
ファイルの内容を1度しか処理したくない
みたいな別の理由があるんじゃね?
2023/11/09(木) 18:51:49.12ID:3GBMooqu0
希望の通りに実装したら、同時に読み込もうとしたら後の方は先の読込み結果を返すになる。甘々に希望を読めば。
だけれども、同時でなくて後からもう一回呼んだ場合にはもう一度ファイルを読み込むんだよな。
>>561の通りに一度しか読み込みたくないのかもしれず、後から呼んだ場合には前の結果を
残しておいてそれを使うのがいいケースもあるが、それだとメモリを食い続けるという問題も
あるので、何をしたいか次第だ。
2023/11/09(木) 18:54:11.91ID:dtnjnmBG0
同一プロセス別スレッドで同一ファイルへのアクセスを排他制御したいなら
lockブロックの中にファイル処理入れるしかないんじゃね?
2023/11/09(木) 18:55:43.66ID:dtnjnmBG0
>>550に対して>>551みたいな反応するようじゃ、危なすぎてまだ早いって言いたくなるけど
2023/11/09(木) 18:57:46.82ID:Mwi0lSOi0
まあ普通はファイル自体はロックしないで
レコードロックじゃね
2023/11/09(木) 19:01:49.30ID:RZ9WOZDMM
550は全く実用的ではないけどまあそのうち気が付くんだろうな・・・
2023/11/09(木) 19:29:43.00ID:yc1G0XhC0
俺ならファイルを読み込むスレッドを一つにして、ひたすらqueueなどに積んで
処理用のたくさんのスレッドでそれを個別に読み込み処理なんて考えるな
ファイル読み込み部分を並列処理してもトラブルが出るだけでろくなことにならない
2023/11/09(木) 19:34:43.74ID:RZ9WOZDMM
一応書いておくけど~
文字列でlockするのは全くおすすめできない
なぜならデッドロックの恐れがあるから

それとパスを使うなんて論外だな
2023/11/09(木) 20:53:01.49ID:qzya0pVE0
一体いつから正解が貼られると錯覚していた?と続けようとしたら眠くなっただけだからね
あー釣れた釣れた
2023/11/09(木) 20:57:33.11ID:Mwi0lSOi0
そりゃそーだ
優しくレスするスレやもん
571デフォルトの名無しさん (ワッチョイ 4601-4YU8)
垢版 |
2023/11/09(木) 21:25:44.13ID:Guim9pgh0
>>569
言い訳乙
572548 (ワッチョイ ffda-XI6K)
垢版 |
2023/11/11(土) 09:48:46.02ID:MfZ2/qTS0
やりたいのは
計算結果をテキストに書くってのがやりたいです。

A,Bスレッドがそれぞれ計算します。

KeisanKekka.txt
↓↓
KeisanKEKKAA
KeisanKeKKAB

順番が逆になるってのはダメです。なのでファイル排他必要です。
2023/11/11(土) 09:55:37.59ID:7zFGiPDR0
>>572
何の順番?
574デフォルトの名無しさん (ワッチョイ ffda-XI6K)
垢版 |
2023/11/11(土) 09:56:22.71ID:MfZ2/qTS0
>>573
書き込み順番

これはダメ

KeisanKeKKAB
KeisanKEKKAA
2023/11/11(土) 10:17:38.60ID:6SW4sVwrM
XY問題の匂いが漂う
2023/11/11(土) 10:43:59.03ID:B6ZfAYMe0
>>572
>>574
正確に説明をする能力を身に着けなさい
・「テキストに書く」とはどこに書くのか。
・書き込み順番が末尾B、末尾Aではダメなのは何故なのか。
2023/11/11(土) 10:49:32.88ID:RSKqgUUO0
順番ってスレッドが開始した早い方が先に書き込むのか?
それともどちらもが出した計算結果の昇順に書き込むのか?

もし後者なら書込みプロセスは1つにするだけ
前者なら計算終わるの待つだけ
2023/11/11(土) 11:21:39.38ID:vbI3i7Vz0
・ファイルの書き込み自体は並列化出来ない
・計算に比べてファイル書き込みが圧倒的に遅い
・ファイルの排他処理自体も少しではあるが時間がかかる
ってことなので、素直にシングルスレッドで処理した方がいい

どうしても並行処理をやってみたいのなら、ファイル書き込みと計算の2つのスレッドで並行処理をしてみるべきかな
そうするとファイルI/O街のタイミングで計算できるから物凄く微妙に速度が上がるかもしれない
2023/11/11(土) 11:27:11.95ID:RSKqgUUO0
てか計算結果でソートするなら
処理分けてオペレーションで対応すりゃよくね?

無理やりプログラムでやるもんでもないでしょ
プログラムはなるべくシンプルがいいよ
580デフォルトの名無しさん (ワッチョイ ffda-XI6K)
垢版 |
2023/11/11(土) 11:27:33.55ID:MfZ2/qTS0
>>576
テキストファイルの終わりに書きます。
追加するイメージです。
2023/11/11(土) 11:53:52.65ID:wxiCP7Qj0
>>580
排他制御だと先着順にしかならないけど
スレッドがA,Bの順番で計算が終わってファイルに書こうとする保証はあるの
それが保証されるなら、ファイルの排他機能を使うより、lockを使うのがシンプルで良いと思う
582デフォルトの名無しさん (ワッチョイ ffda-XI6K)
垢版 |
2023/11/11(土) 12:18:07.23ID:MfZ2/qTS0
>>581
Aが書き終わったことが見てわかる変数を作っておくことで対応します。
2023/11/11(土) 12:48:18.44ID:9HxScUhQ0
これはもう手に負えないわ
諸君の健闘を祈る
2023/11/11(土) 12:56:28.59ID:JXC3KAMY0
そもそも同一ファイルを複数スレッドで読み書きするのは公立が良くない
私立にしなさい
585デフォルトの名無しさん (ワッチョイ ffda-XI6K)
垢版 |
2023/11/11(土) 13:07:33.16ID:MfZ2/qTS0
伝え方が悪くてどうもすいませんでした
冷静に考えたら変数使えば排他制御いらないじゃんって思えてきた
何を聴講してんだか
2023/11/11(土) 13:44:16.19ID:LlCaH/Ey0
排他制御順序制御をスレッドAB間で直接行えばいい話でファイルアクセスどうこうは関係ないってことだろう
2023/11/11(土) 13:51:34.21ID:uCuKaL40M
スレが伸びてると思ったら

複数スレッドで変数…
フラグが立った気もする

大学に聴講生いたな
おばちゃんだったけど新しいことを学ぼうとする姿勢が偉い
2023/11/11(土) 14:02:50.08ID:rffcSM1cd
スレッド起こした順に書込みも順にしたいの?
起こしたときに番号振ってファイルAにみな書込みするようにして
書き込む結果は振り番と結果書き込ませて
そのファイルAを監視して順番に書き出すスレッドなりで
目的のファイル作れば?
2023/11/11(土) 15:16:06.79ID:RSKqgUUO0
聴講って何かの誤変換かと思ってたけど
聴講生だったのか
道理で
590デフォルトの名無しさん (ワッチョイ ffda-XI6K)
垢版 |
2023/11/11(土) 16:05:06.98ID:MfZ2/qTS0
>>588
順番はAが書き込んでBが書き込む
Bが早く終わろうがAが書き込みした後しか書き込み無理ってことです。
もうひとつの厄介ありました。
Aが書き込み終わったよっていうフラグを立てる時間
Aが書き込んだ時間
にタイムラグある場合どうしよう。
もちろんAが書き込みする関数呼んだあとにフラグ立てるんだけど
フラグ立てたときってほんとに書き込み終了してる?って話です。
2023/11/11(土) 16:24:57.12ID:CPZqzXvFd
もういい、消えろ
592デフォルトの名無しさん (ワッチョイ ff7b-gzdM)
垢版 |
2023/11/11(土) 16:42:12.75ID:oxGqzPfa0
今後の質問者には先にChatGPTである程度やり取りしてもらって
それでもわかんなかった所だけ聞きに来てもらうほうが
お互い幸せになれる気がする
2023/11/11(土) 16:57:49.93ID:NvFe8ImE0
それ以前に、もう少し、こう、コミュニケーションというものを考えて、せめて一度くらいは推敲してから書き込んでもらえるとお互いに幸せかもね。

要件としてはこんなところなんだろうか。
・何らかの処理を行うためにスレッドを起動する。
・その処理(スレッド)は複数ある可能性がある。
・その処理の結果を一定の規則でファイルに出力する。

自分だったら、メインスレッド(処理用のスレッドを立ち上げる側)に処理スレッドの結果を返すようにして、処理スレッドがすべて終わった後にメインスレッドで規則に従ったファイル出力を行うように作るけど。
2023/11/11(土) 17:08:03.68ID:B6ZfAYMe0
Win32APIで非同期書き込み

・CreateFile() FILE_SHARE_WRITE FILE_FLAG_OVERLAPPED
・AのWriteFile() OVERLAPPED構造体のOffsetとOffsetHighに指定する書き込み開始位置に、
 現在のファイルサイズを指定(後述するが0xFFFFFFFFでの追記は避けること)
・BのWriteFile() OVERLAPPED構造体のOffsetとOffsetHighにBで渡したファイルサイズ+Aで書き込むサイズ

WriteFile()は指定サイズ全てを1回で書き込めるとは限らないので、書き込んだサイズ分
OffsetとOffsetHighをずらしながら残りをWriteFile()する。
位置をずらして指定していくのとBの分を並列で書き込むので0xFFFFFFFFでの追記を行ってはならない。

書き込んだサイズは
・GetOverlappedResult()で調べる(呼ぶタイミングが分からない)
・WriteFileEx()でlpCompletionRoutineを指定する(完了ルーチンでWriteFileEx()を繰り返すとスタックが溢れる恐れあり)
・IOCP
・スレッドプールI/O
のいずれかを使う。

C#で同等のことを行う方法は知らん。
2023/11/11(土) 17:09:02.17ID:B6ZfAYMe0
訂正:Bで渡したファイルサイズ→Aで渡したファイルサイズ
2023/11/11(土) 17:11:14.77ID:6Uwmj7p80
古典的な方法は

書き込む前に「書き込み中だよ」というファイルを作って
おもむろに書き込んで終わったらファイルを消去する
他のプロセスは「書き込み中だよ」ファイルがないことを
確認してから「書き込み中だよ」ファイルを作る

あるいはDBに任せるかな
2023/11/11(土) 17:14:49.80ID:RSKqgUUO0
書き込む前に配列作るだけな気もするけど

まぁ書き込みたいならしゃーない
2023/11/11(土) 17:24:04.61ID:G8HZ7IiV0
>>590
static async Task Main(string[] args)
{
var taskA = Task.Run(()=> CalcA());
var taskB = Task.Run(()=> CalcB());
var resultA = await taskA;
await Save(resultA);
var resultB = await taskB;
await Save(resultB);
}

これを一般化してtaskをListに追加していって
Listを回して計算結果をawaitしながら直列で書き込めばいい
599デフォルトの名無しさん (スップ Sd9f-Blpp)
垢版 |
2023/11/11(土) 18:15:19.76ID:GzLBx05/d
馬鹿は馬鹿だから設計も実装もできない
馬鹿の考え休むに似たりとはこのこと
こんな馬鹿はシングルスレッドにしとけよ
600デフォルトの名無しさん (ワッチョイ ff8b-XI6K)
垢版 |
2023/11/11(土) 18:17:22.37ID:MfZ2/qTS0
>>596

>>おもむろに書き込んで終わったらファイルを消去する
書き込んで終わったことをどうやって判断するんですか?
2023/11/11(土) 18:29:22.82ID:6Uwmj7p80
>>600
駆動したプログラムが自分で消去する
パスワードファイルの編集とかそうやっている
2023/11/11(土) 18:46:23.39ID:wxiCP7Qj0
>>596
マルチスレッド向きの方法じゃない
動くけど面倒なだけ
2023/11/11(土) 18:58:24.74ID:JXC3KAMY0
>>596
その手順ではアトミック性が損なわれるから正常に機能しない
プロセスが最初にやるべきは盲目的に「書き込み中だよ」ファイルを作ろうとする事
ファイルを所有できたかはファイルの作成の成否で判定する…つまりこんな馬鹿なことは今すぐ辞めるべき
2023/11/11(土) 19:32:29.94ID:QEeEkTCo0
それぞれのスレッドが各々でファイルを書かなきゃいけない理由がなんかあるんかな?
そうじゃないならそれぞれの計算結果を親スレッドが受け取って
親スレッドがまとめて書き込めばいいんじゃないかなぁ
605デフォルトの名無しさん (アウアウウー Sae3-Xzxn)
垢版 |
2023/11/11(土) 19:33:39.57ID:2HJkyP1va
ファイルはだめだけど
ディレクトリ作成はok
2023/11/11(土) 19:44:09.90ID:kflznpjK0
>>604
俺ならこれ
場合によってはスレッドの意味が薄くなるけど、設計としては明白になりやすそう

もしくは各スレッドの結果?の書込処理について統合して管理するクラスを作る
順序を定義しといてキューに溜めとく感じ
2023/11/11(土) 19:55:09.06ID:6Uwmj7p80
linuxのパスワード書き換えプログラム vipw
がファイルを生成して排他制御をしているのだが
問題があったという話を聞いたことがないけど
2023/11/11(土) 20:07:11.14ID:mqML6fZGd
Aが書きこまないとBが書き込めない?
Aが新規ファイルに書き込んで
Bがそれ見つけてから書き込むようにしろ
2023/11/11(土) 20:35:27.62ID:wxiCP7Qj0
>>607
ロックファイルを用いた排他制御の手法をちょっと間違えて覚えてるな
> 「書き込み中だよ」ファイルがないことを確認してから
って部分が無意味
確認後にファイルを生成するまでの間に他のプロセスがファイルを生成するかもしれない
2023/11/11(土) 20:58:58.22ID:piBb8Nie0
>>604
おれもそうするわ
2023/11/11(土) 21:32:07.49ID:bCDMs/TZ0
>親スレッドがまとめて書き込めばいいんじゃないかなぁ
“まとめて”の意味合いにもよるけどAの書き込み処理はBの計算結果を待たずに開始できる点に留意する必要がある
2023/11/11(土) 21:55:20.34ID:QEeEkTCo0
>>611
待たずに開始できるであって待たずに開始しなければいけないではないし
A・Bそれぞれの完了を待ってはいけない理由でもあるんか?
2023/11/11(土) 21:56:20.93ID:QEeEkTCo0
あと、待ってるのはあくまで親であって、AとBの計算はパラで進めてくれて一向にかまわん
話の内容からして、Aの結果をもとにBが計算するわけでも無いだろうし
2023/11/11(土) 23:26:02.16ID:T+Kc9o9H0
こういう複雑さを考えるとRDBってよく出来てるなあ
2023/11/11(土) 23:42:10.88ID:hf5ytgdCd
AとBを同列に考えるからだめなんだ
Aが終わらないとBが結局終われないのだったら
BがAの親になればいいんだw
2023/11/12(日) 00:18:55.26ID:IOHJkfoT0
>>572がいち早く嗅ぎつけたように、質問者は真の目的に対して無自覚に不適切な実現手段を選定している(それ故に、不適切な実現手段における実装上の課題、つまり二次的な課題を相談するハメなってる)
C#での実装手続きを検討する前段に立ち戻ることをオススメする
2023/11/12(日) 06:54:13.24ID:QHBv8+9D0
嗅ぎつけたて、>>572は質問者だぞ
618あぼーん
垢版 |
NGNG
あぼーん
2023/11/12(日) 08:50:55.63ID:IOHJkfoT0
>>617
アンカ間違えた。正しくは >>575
2023/11/12(日) 09:30:41.24ID:qtbaU10h0
一番の問題は、処理時間の大半を占めるだろうファイルの書き込み自体が並立処理ができないし
オープン、書き込み、クローズ等の回数が増大して処理時間が遅くなることだな
もちろんスレッドの切り替えや排他制御や順序の制御など色々仕事が増えるし、この部分も並列処理できない

マルチスレッドの練習ならいいけど、実用ソフトの作成ならシングルスレッドで書いたほうが遥かに早いものができる
2023/11/12(日) 10:50:45.23ID:0qXKJ0sK0
もう完全にスレチになんだけど。

>>620 みたいな決めつけってどうなんだろう。
素人がわざわざスレッドなんて言い出してるんだから、質問者が説明できていないだけでスレッドが必要な背景があるのかもしれない、と考えてあげてもよさそう。

自分も質問スレ等を利用したことがあるけど、意図して説明を省略したところの説明を強要されたり決めつけられたりすると、う~んと思うこともあったからね。
まあきちんと説明できない側が悪いのだけど。

言い訳的には誰にでもきちんと理解させられるほど状況を整理できてるなら、質問スレに頼る必要はほぼないかもしれない、とか。
2023/11/12(日) 11:01:35.90ID:EoAEw2XZ0
別にいいけど、しっかりと要点を説明できなきゃ、的外れな助言をされても文句は言えないからねぇ
2023/11/12(日) 11:04:51.41ID:FeTL5mFV0
>>618
鬼コスパだな
2023/11/12(日) 11:17:52.90ID:1lLdbIkC0
そもそもでいうなら、順番を待たなきゃいけない設計を見直さんとね

決まった順番で同じファイルに書き込まなきゃ理由がわからんからね
中のファイルが構造的でなきゃいけない場合、単純に順番に書込むだけでそれが担保出来てるのか、とか
例えばよくあるデータ形式にしても、
CSVならあまり順番意識しないから追記ってのもあるだろうけど、jsonで追記とかまあ自分は聞かないし

目の前の要求が満たせていればいい、っていうのも分からなくはないが
そこら辺の前提がないと最善などわからんよね
2023/11/12(日) 11:22:02.03ID:EoAEw2XZ0
>>623
氏ね自演
2023/11/12(日) 11:24:38.62ID:O1mU2H+U0
>>620
>>594に書いたけど、ファイル書き込みの並列処理は可能だ。
面倒な上に書き込みサイズが小さいとすぐ終わるから並列処理するうまみがないが。
実用性を考えると根本的にやることを見直すべきなのは同意だ。
2023/11/12(日) 11:47:28.89ID:P9Q12+Ee0
>>618
ポイントを秒でゲットするのか
2023/11/12(日) 12:02:09.85ID:qtbaU10h0
>>626
別スレッドで細切れに書き込みするのはできるけど
複数スレッドで並列で同時にファイルに書いたら壊れるでしょ
2023/11/12(日) 12:11:57.36ID:QHBv8+9D0
同期処理しなきゃいけないのを並列は無理では
2023/11/12(日) 12:21:50.53ID:0qXKJ0sK0
>>622
まあそうだね。
回答者の側にも自分の答えられる範囲に無理矢理誘導しようとしてる節があるのも気になるけど。
2023/11/12(日) 12:50:38.93ID:kSd1xzHw0
決まった順番で同じファイルに書き込みたい状況やファイル書き込みより計算処理の方が遥かに時間がかかる状況なんていくらでもあるでしょ

処理速度向上のために並列化した計算結果を直列化するのはmap/reduceと同じで並列処理の基本パターンだと思うが
その際にメモリ効率や後続処理の都合でファイルに書き出しながらreduce相当の集約処理をするのもよくあるやり方
2023/11/12(日) 12:57:53.27ID:eSav3yyhM
ついでに言うと真の目的を自覚してそれを他人に誤解なく伝えられるように言語化できる人間ってのはそうそういない
自分の言いたいことを相手に伝えようとする努力はもう少ししろよとは思うが真の目的を言語化すること初心者に求めるのは酷
2023/11/12(日) 12:57:57.10ID:92tzwC/W0
>>598で(細かい所は端折られてるが)質問者の要望を満たしたほぼ完璧な回答が出てるのに何の議論をしてるんだろうか

>>620
マルチスレッド何だから、オープンしたファイルクラスオブジェクトを共有すれば良いだけ
各スレッドでファイルのオープンとクローズをやる必要は無い
2023/11/12(日) 13:02:14.64ID:O1mU2H+U0
>>628
壊れないよ。
追記でなく他のスレッドが書き込むサイズを把握して書き込み開始位置(現在のファイルサイズよりも先)
をちゃんと指定すれば大丈夫。
FILE_SHARE_WRITE指定だから複数スレッド同時に書き込めるし、
なんなら複数プロセスでも書き込める。
2023/11/12(日) 14:27:16.22ID:0qXKJ0sK0
>>632
初心者というか熟練者でもというか、それを不足なく出来ている人はあんまりいないような。
少なくともここで議論()してる連中は全滅だね。
2023/11/12(日) 15:28:30.84ID:qtbaU10h0
>>634
資源を複数のTHREADでShareしているだけで並列処理とは違うよね
同時に書けるのは一つのポイントだけだからCPUが増えても速度が2倍4倍とかにならない
2023/11/12(日) 16:27:53.40ID:O1mU2H+U0
>>636
並列処理だよ。
ファイルポインタの場所に対して書き込んでるのではなく、
OVERLAPPED構造体で指定した位置からそれぞれのスレッドが非同期で同時に書き込む。
2023/11/12(日) 17:03:04.73ID:EoAEw2XZ0
.NETのソース隅から隅までは読んでないけど、FileStreamの内部でoverlapped構造体使用してたような記憶
2023/11/12(日) 19:11:35.86ID:iHK6/ooK0
その認識で合ってるよ
.NET4以降ならメモリマップドファイル使えるからそちらで共有するけど
2023/11/13(月) 00:49:40.70ID:AJp6/mRY0
ファイルはシーケンシャルで書くのが一番効率が良い
順番に並べる必要があるなら後でソートできるようにレコードをきちんと設計しておけば問題は起こらない
上でされてるいくつあるかも判らないスレッドごとに開始位置をシークして…なんて主張は馬鹿の発想
2023/11/13(月) 06:47:10.31ID:7hRFN4TL0
ちゃんと設計しないと逆にパフォーマンス落ちるぞって、当のMSがWriteFileのドキュメントで言ってるからね
2023/11/13(月) 07:44:08.86ID:7oSmY/Hz0
妄想だけど、HDD、SSDよりも異次元レベルで速いストレージの時代になったら
それも変わってくるんかなとか思ったり
十年とかでそうなることはないやろけど
2023/11/13(月) 07:55:21.10ID:flxB0Vsk0
確かにハードの進化がソフトを凌駕するからなぁ
windowsも出た頃は二世代後くらいのハードを想定して作ったとか後付で言ってたかな、遅くて使い物にならなかったよな最初の頃は(笑)
2023/11/13(月) 08:20:50.07ID:Rx9sePM0M
タイル時代のは記事で読んだぐらいやな
2023/11/13(月) 08:36:15.51ID:PVSRWaiLM
Windows1.0は日本未発売
2023/11/13(月) 08:43:08.32ID:gHMVnHfM0
ストレージアクセスはずっとボトルネックだから
2023/11/13(月) 09:12:26.25ID:jo7KeTmv0
>>645
https://funkygoods.com/garakuta/win10_dos31/win10_dos31.htm
98版出ているし、触ったことあるわ
2023/11/13(月) 19:08:34.41ID:+fGKUdks0
>>647
3.0からだな
95β見た(入れた)瞬間は窓から投げ捨ててやろうかと思ったわ
巷の公式販売では祭りだったし買ったけどw
2023/11/14(火) 07:15:31.76ID:LV/qT8Ke0
まともに触ったWindowsは95からだなぁ
伯父さんの家に3.1あったけど、ちょっとゲーム触らせてもらった程度だし
2023/11/14(火) 07:31:15.46ID:Uvtmi6Yw0
OS2がまだ生きていた頃だな
651デフォルトの名無しさん (ワッチョイ 9f7c-gFzT)
垢版 |
2023/11/14(火) 19:07:18.84ID:xujXPfzz0
新しい.net来るぞ
2023/11/15(水) 00:40:01.81ID:LrsG+7gI0
3日くらいぶっ続けでカンファレンスやってるみたいだけど英語わからんからやめとこ…
2023/11/15(水) 09:04:48.81ID:4gx9dXmF0
.NET 4.8.2が来るの!?
2023/11/15(水) 09:53:23.29ID:bUMQZh1h0
4.8.1は.NET Frameworkであって.NETじゃないが
2023/11/15(水) 10:00:02.34ID:cCd4X74c0
そろそろ.NETの頭のドット消して欲しい
色々紛らわしかったりめんどい
2023/11/15(水) 10:16:57.55ID:oY0624hB0
頭のドットもだが、もうちょっと固有な名前を付けてほしいよな
検索時のS/N比が…
2023/11/15(水) 11:25:14.79ID:cN4uQIA10
dot NET
658デフォルトの名無しさん (ワッチョイ 9f7c-gFzT)
垢版 |
2023/11/15(水) 11:41:16.01ID:S5z+rJ9T0
>>652
英語分からんってヤバくね
IT業界で1番必要なスキルだと思うが?
2023/11/15(水) 11:46:04.08ID:4gx9dXmF0
SilverLight<よっしゃ
XNA<固有な名前なら任せろ
660デフォルトの名無しさん (ワッチョイ 7f74-n7Dx)
垢版 |
2023/11/15(水) 12:41:13.13ID:D0hDoGTF0
>>658
Don't worry.
My English skills are much better than yours.
661デフォルトの名無しさん (ワッチョイ 9f49-Lcu7)
垢版 |
2023/11/15(水) 13:16:29.77ID:cCd4X74c0
Waimo eigo tyoto Dekiruyo !!
2023/11/15(水) 13:18:03.10ID:bUMQZh1h0
Makotoni I'm Sorry
2023/11/15(水) 13:39:33.53ID:GITsN6v60
Windowsで.net5以上でshift-jis使うのに
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
この1行いるのは知ってます

System.Text.Encoding.CodePagesを参照する必要があると書いてあるところと
いらないしいると書いてあるのは間違いだと書いてあるところがあったので
どちらが正しいのでしょうか?
2023/11/15(水) 13:55:26.89ID:IR5/gHhj0
.NET Core 3.0か3.1あたりで本体に入ったから今はもういらない
665デフォルトの名無しさん (ワッチョイ 7f74-n7Dx)
垢版 |
2023/11/15(水) 14:05:48.88ID:D0hDoGTF0
>>662
Kono Hage!!

If you have no hair at all, shut up and get out of here.
2023/11/15(水) 14:08:52.32ID:bUMQZh1h0
SJISのためにRegisterProviderするのに何かアセンブリ参照追加する必要は無いね
667デフォルトの名無しさん (ワッチョイ 1f25-Lcu7)
垢版 |
2023/11/15(水) 14:17:23.51ID:amYyW+se0
>>665
この辺にしとこうぜベイビー。
C#ラブな同士トゥギャザーで仲良くしようぜ。
2023/11/16(木) 01:21:21.36ID:AO/C3SS40
>>664,666
thx
2023/11/16(木) 16:07:12.51ID:IwsAzKF60
Windowsに限らず、AndroidやiOSやLinuxなどほとんどのOSで、
ファイル名に使って想定外の動作をしない記号って、アンダーバー「_」くらいでしょうか?
アンダーバーでも誤動作するOSってあります?
2023/11/16(木) 16:37:54.57ID:grFWv2Y10
そめそもファイル名に使える記号自体が、ハイフンかアンダーバーくらいじゃ
2023/11/16(木) 17:50:29.03ID:BDsDlHWv0
ファイルシステムによる
2023/11/16(木) 18:03:46.46ID:Ms4DzmXb0
ファイル名 禁止文字でググれば使えない文字がわかるので
それ以外なら使えるってことだ

mac や linuxはwindowsで使えるやつはOKのようだ
2023/11/16(木) 18:33:52.17ID:K6GSt0E9M
>>672
チルダは?
674デフォルトの名無しさん (ワッチョイ 1f01-ElWn)
垢版 |
2023/11/16(木) 21:16:19.40ID:ybAKbR/C0
SwiftLint使ってると、大文字や小文字で始まるか、キャメル式かスネーク式かいちいち文句付けてうざいぞぉw
2023/11/17(金) 10:11:24.65ID:QjfY8ooq0
>>670
ハイフンはMS-DOSがNGだから、ちょっと怖いかなと
2023/11/17(金) 11:06:24.34ID:RPLwg0XBd
コンピュータ名はアンスコ使えなくてハイフンは使える謎
677デフォルトの名無しさん (スプッッ Sd7f-Xzxn)
垢版 |
2023/11/17(金) 11:28:27.47ID:180/RciHd
_で始まるファイル名だとコンパイル出来ない言語は観た覚えがある
2023/11/17(金) 12:59:38.86ID:O8YSwnHi0
のーみそコネコネ
2023/11/17(金) 13:19:03.32ID:QjfY8ooq0
半角括弧()がどのOSでも使えるって出てきましたけど、本当でしょうか?
2023/11/17(金) 13:33:20.62ID:Sl2+FwO30
>>679
キミが「どのOSでも」「使う」という表現に込めた意味を、それぞれ詳しく教えて
2023/11/17(金) 18:14:02.34ID:TreZcExv0
ボーダーラインを探すなんて無駄なことしてないで、
自分が対象にするOSで使える文字だけ使っときなよ、と思いました

暇ならとことん網羅して論文でも書いていてくれ
2023/11/17(金) 18:44:22.53ID:dfpiw+/X0
割と知られていないけど、cr,lfなどの制御文字もファイル名に使えたりするね
explorerじゃ対応していないからアプリ作る必要があるが
2023/11/17(金) 18:53:29.25ID:peW3mEg+0
>>675
それどこ情報?
2023/11/17(金) 20:14:07.64ID:h0n5cOPg0
そもそも使う意味
2023/11/17(金) 21:37:23.41ID:wLQk0c+b0
条件文がめんどくさい
x>=a かつ x<=b を
if( a <= x <= b )
って書ける言語ないですか?
686デフォルトの名無しさん (ワッチョイ 9f57-ElWn)
垢版 |
2023/11/17(金) 21:40:25.75ID:PqMW4vo50
あったとして、どうするんだ?
2023/11/17(金) 22:14:39.43ID:dfpiw+/X0
ロックバルーンは99
688デフォルトの名無しさん (ワッチョイ 9f01-M2ys)
垢版 |
2023/11/17(金) 22:17:29.52ID:7wOEc1lI0
>>686
倉庫番の人だよ
689デフォルトの名無しさん (ワッチョイ 9f57-ElWn)
垢版 |
2023/11/17(金) 22:23:01.37ID:PqMW4vo50
Pythonがそう書けるってさ
2023/11/17(金) 22:27:32.02ID:wLQk0c+b0
マジですか。
C#にも導入してくれないかなぁ
2023/11/18(土) 07:03:20.87ID:i2qRQSqI0
特段必要性を感じないからどうでもいいかな
692デフォルトの名無しさん (ワッチョイ e960-jFON)
垢版 |
2023/11/18(土) 18:37:11.62ID:mbkKOvAd0
関数の返り値を比較するときに2回書けないから一旦値で受ける、
なんて必要がなくなるから無いよりはある方がいいな。
2023/11/18(土) 18:41:07.35ID:ypjk0x+00
if(( a <= x )&(x <= b ))
でいいよ
2023/11/18(土) 18:52:35.99ID:jd9YdmKPH
最近のパターンマッチングを使って
if (x is >=a and <=b)
と書いてもいい
2023/11/18(土) 19:32:58.55ID:iMqzxnwJ0
boolでも無いのにifの条件だけで使ってしかも範囲判定条件の戻り値とかあるんか
2023/11/24(金) 19:38:01.29ID:6FJDI0Q/0
task1〜3までをUIスレッドで開始して、それからは
task1→task2→task3→task1みたいに自分の処理が終われば
別taskに処理を移すみたいな感じのソースコードを作りたいです。
処理はすぐ終わる計算でいいです。どうしますか?
ちなみに処理が終わったことがわかる変数などを使うってのは無しにしたいです。
2023/11/24(金) 20:01:17.48ID:wNRDz5oc0
>>696
>>自分の処理が終われば

「自分の処理」とは?
2023/11/24(金) 20:07:57.51ID:qxyJ/uo00
順繰りに起動すりゃいいだけ
2023/11/24(金) 20:09:10.20ID:qxyJ/uo00
てか順にやるならスレッドにする必要ねーな
700デフォルトの名無しさん (ワッチョイ 8291-PfDU)
垢版 |
2023/11/24(金) 20:59:34.65ID:y2ZJO/eV0
そもそも、タスクとスレッドの関係をどういうもんだと思ってるんだか・・・・
2023/11/24(金) 21:23:25.88ID:zyxlA+5J0
使ったことないけど、Task.ContinueWith()
702デフォルトの名無しさん (ワッチョイ 46e5-f5/H)
垢版 |
2023/11/24(金) 21:28:48.64ID:6FJDI0Q/0
>>698
ごめんなさい誤解ありました。

task1→処理1

task2→処理2

処理1と処理2とかは並列処理です

順繰りというのは難しいのではって感じです。
703デフォルトの名無しさん (ワッチョイ 46e5-f5/H)
垢版 |
2023/11/24(金) 21:33:36.46ID:6FJDI0Q/0
task1→処理1

task2→処理2

task3→処理3

task1→処理1の2回目

処理1の2回目がミソです

処理1の2回目と処理1も並列になっててほしいんです

ちょっぴり無茶なプロセスですかね?
2023/11/24(金) 21:36:35.38ID:wNRDz5oc0
XY問題再び
2023/11/24(金) 21:45:07.71ID:pe/5i+Cu0
コルーチンのことかな
一定の処理まで終わらせたら明示的な命令によって他のタスクに切り替えて行くやり方
C#的にはIEnumerator<T>型を返すやつね
コルーチン自体はスレッドに依存しないので必ずしも複数スレッドで非同期処理をやるというわけでもなく
同期的に書けば排他制御が不要になる
2023/11/24(金) 21:48:48.25ID:z45fHQco0
//また同じやつだな
await 日本語を整理しろ();
回答はそれからだ();
707デフォルトの名無しさん (ワッチョイ 46e5-f5/H)
垢版 |
2023/11/24(金) 22:22:10.58ID:6FJDI0Q/0
>>704
特にやりたいことはないですよ
開始の時間printfしてみたら

処理1
処理2
処理3
処理1の2回目
処理2の2回目

ってなってればいいんですよ
2023/11/24(金) 22:24:19.01ID:qxyJ/uo00
だから並列で処理する意味ないやろ
709デフォルトの名無しさん (ワッチョイ 46e5-f5/H)
垢版 |
2023/11/24(金) 22:34:42.42ID:6FJDI0Q/0
>>708
特に作りたいものがないんですが思いついたのは
並列処理だと時間短くならね?ですね
2023/11/24(金) 22:50:29.15ID:wNRDz5oc0
並列関係にあるタスク同士を「矢印」で接続してしまう珍妙なセンスの持ち主
2023/11/24(金) 22:50:44.86ID:4bKY7cSe0
>>709
今のお前がやってもかえってパフォーマンス悪くなるだろうな
712デフォルトの名無しさん (ワッチョイ 298e-cVwZ)
垢版 |
2023/11/24(金) 22:56:14.00ID:A049oz9t0
また後出しのあいつか
2023/11/24(金) 23:02:25.18ID:uPf7hF5o0
なんか良くわからん…
714デフォルトの名無しさん (ワッチョイ 46e5-f5/H)
垢版 |
2023/11/24(金) 23:09:30.59ID:6FJDI0Q/0
task1〜3までをUIスレッドで開始して、それからは

ここ違いますね、UIスレッドで起動するのはtask1
task1を起動してからは上に書いたとおりです。

後だしではないんでそこは分かってほしい。
2023/11/24(金) 23:21:12.17ID:kO4eXafJd
ボール1から三つ投げて
どのボールが先に落ちてもいい
全部地面に落ちたら
また1から投げるってことだろ
2023/11/24(金) 23:27:15.24ID:GWBHs7u/0
それだと処理が終わっでない
終わってから都賀のタスクなんだから

3人いる
長男が投げる、落ちるのを確認したら
次男が投げる、落ちるのを確認したら
三男がなげる、落ちたらサイクル終わり
また最初に戻る

じゃね?
2023/11/24(金) 23:29:33.37ID:wNRDz5oc0
「後出しではない」と「後出しを自覚できていない」は別の概念
718デフォルトの名無しさん (ワッチョイ 46e5-f5/H)
垢版 |
2023/11/24(金) 23:42:55.25ID:6FJDI0Q/0
>>716
伝わってませんね
落ちるのを確認ではなく投げるのを確認ですかね
長男が次男に投げたからお前も投げろよって声掛けする感じです
2023/11/24(金) 23:49:18.55ID:mLC3ri5P0
それ単純に順次Task.Run()していくだけじゃん
2023/11/24(金) 23:56:23.11ID:uPf7hF5o0
はぁはぁ
716でいうと三男が投げ出すと長男も2回目を投げろと(長男の1回目は終わってないかもしれない
721デフォルトの名無しさん (ワッチョイ bfe5-1fOb)
垢版 |
2023/11/25(土) 00:01:28.56ID:5JaI+Sbl0
>>719
書いて貰えると嬉しいです
Task1をもう一回呼ぶなんてできます?
1回目はUIスレッドから
2回目はTask3スレッドからです
2023/11/25(土) 00:03:58.41ID:6TmsaT3E0
>>719 の言う通り、順次Task.Run()すればキューに積まれて順に取り出されて
スレッドプールで実行されるんじゃね。
但し、>>707 で積んだ順番でprintfされることを期待しているようだが、
各Taskが並列実行されるので、Task開始順とprintfの順番が一致する保証はない。
2023/11/25(土) 00:06:31.50ID:6TmsaT3E0
>>719 じゃないけど、自分で書けない理由を答えろ。
Task1をもう一回呼べない理由を答えろ。
書いてコンパイルして動かせ。
724デフォルトの名無しさん (ワッチョイ bfe5-1fOb)
垢版 |
2023/11/25(土) 00:19:31.02ID:5JaI+Sbl0
Taskの理解間違ってました
Taskってのは関数みたく何度も呼べるもんなんですね知らなかった
2023/11/25(土) 08:10:48.30ID:D4bWuN2p0
そもそも特に作りたい物も無いのに考えるのがナンセンス
2023/11/25(土) 08:13:50.02ID:qghurl9U0
それはそう
頭でっかちで理屈だけ先行しがち
2023/11/25(土) 08:33:26.29ID:cvmNBgFA0
Taskの理解もスレッドの理解もできてなさそう
スレッドだって実体はただの関数で何度でも同じ内容を開始できるが
2023/11/25(土) 12:16:24.94ID:+bZiOimW0
Taskはスレッドプールを使いやすくしたものだしね
※LongRunningオプションをつけてTaskを生成した場合は専用のスレッド
729デフォルトの名無しさん (ワッチョイ 5f91-YR7l)
垢版 |
2023/11/25(土) 12:44:24.22ID:2HfGPNlX0
基礎の理解を大きく欠くメチャクチャな質問に対して、わからないのに答えるメチャクチャな回答者が大勢出てくる・・・・
知恵袋のことを笑えんな
2023/11/25(土) 12:58:31.09ID:hcYVkcJO0
そのうちたまに出るバグに悩まれそう
731デフォルトの名無しさん (ワッチョイ dfc6-AnfR)
垢版 |
2023/11/25(土) 13:11:43.69ID:Q+BtNXr10
スレッドとタスクとプロセスの違いをしっかり説明出来る奴は少ない
2023/11/25(土) 13:21:16.14ID:GnFdMEyV0
LWPも含めて説明してくれ
2023/11/25(土) 13:51:42.24ID:QjoVuBi10
ここ初心者スレなのよね
2023/11/25(土) 14:28:34.44ID:6TmsaT3E0
アプリケーションドメインは滅びの道?

JavaのVirtual Threadが気になる。
2023/11/26(日) 03:09:57.86ID:TxNzhOp40
TASK1〜3をそれぞれキュー1〜3にどんどん入れていって、
そのキューから同期的にタスク1−3を取り出せばいんじゃね
つか
>ちなみに処理が終わったことがわかる変数などを使うってのは無しにしたい
とかいう条件はなぜに必要なのか
その条件だとタスクではほぼ何もできないわけだが
2023/11/26(日) 03:09:58.20ID:TxNzhOp40
TASK1〜3をそれぞれキュー1〜3にどんどん入れていって、
そのキューから同期的にタスク1−3を取り出せばいんじゃね
つか
>ちなみに処理が終わったことがわかる変数などを使うってのは無しにしたい
とかいう条件はなぜに必要なのか
その条件だとタスクではほぼ何もできないわけだが
2023/11/26(日) 06:34:19.55ID:WuUXccWm0
まず自分の書き込みキューをなんとかしようず
738デフォルトの名無しさん (ワッチョイ 5f32-sw9y)
垢版 |
2023/11/26(日) 06:43:14.79ID:Yqv2nl500
すみません、単刀直入にお尋ねしたいのですが
配列の各要素に入れらた構造体、ないしはクラスがあるとして
その中でそいつらが「自分の現在の添字を確認する」方法ってありますか?
配列の何番目に入っているのかってのを確認したいです。

例えば、自分の現在の添え字を返す関数とかあると嬉しいのですが。
調べてみても、ある値を要素から探してその添字を求めるーみたいなのはあっても
ストレートに自分の今の添字を返すーとかは無いのです。
2023/11/26(日) 07:52:19.12ID:Zpp5xLGV0
無いもんはない
2023/11/26(日) 08:39:42.47ID:rln84VAX0
そんなにあれこれ言語知らないけど
配列の内側から自分のIndexを取得できるような言語存在したっけ
2023/11/26(日) 09:26:10.80ID:Yqv2nl500
>>739
なんで無いんでしょうかね。。需要ある気がしますが。。
調べたい場合簡単なコードで解決するからでしょうか?

配列に入ってる側から自分の添え字を調べる方法ってありますか?
2023/11/26(日) 09:39:06.68ID:N0k0I/0p0
親オブジェクトを子オブジェクトのプロパティ等に保存して必要な時にIndexOfで取得する
2023/11/26(日) 09:41:54.74ID:sVRUNFWaM
あえて理由付けするなら、最近の言語では配列をコレクションとして考える傾向が強くインデックスを意識しないようになってきている
リストや連想配列ではインデックスは抽象化されているので直接操作するのを避けるようにするので需要が低い
実際for each文ではインデックスを意識しないだろ
744デフォルトの名無しさん (スップ Sdff-aoBM)
垢版 |
2023/11/26(日) 10:18:36.32ID:t46bGHL+d
倉庫番君?
2023/11/26(日) 10:20:36.87ID:aOnl3nzuM
>>741
ない理由は簡単だよ
主な理由は無駄だから

任意の要素は複数のコレクションに入れられるし一つのコレクションに複数入れることが出来るから
要素側で添え字を持つ場合にはそれを区別することになる
そしたら親クラスと添え字のペアは何で保存する?dictionary?独自の保存クラスのインスタンス?
要素数だけ保存インスタンス作るの?と言う話になる
2023/11/26(日) 10:24:23.79ID:aOnl3nzuM
無くて不便だなと感じるなら一度作ってみたらいいよ
それが使いやすいなら使えばいいしそれに対して他の誰も文句を言わない
2023/11/26(日) 10:29:28.53ID:WuUXccWm0
配列中のIndexが重要なら固定で作れ
固定が嫌だと言うなら自分のIndexを気にしなきゃいけないような作りにするな
748デフォルトの名無しさん (ワッチョイ a701-qLBg)
垢版 |
2023/11/26(日) 10:34:56.71ID:Mj7uGAuQ0
倉庫番の人を相手にする人達
2023/11/26(日) 10:57:22.74ID:YkBy/87/0
今回は1度の質問で相手に伝わる日本語になっているので合格!!

初心者あるあるの質問だしね
2023/11/26(日) 11:29:02.31ID:aOnl3nzuM
コレクションの要素の添え字をコレクションで持つ
その要素の添え字をコレクションで持つ
そのまた…
と永遠に終わらない
2023/11/26(日) 11:42:58.44ID:xrmT/xcU0
どんな手段であろうともきちんと動けばいいんじゃね?(適当
752デフォルトの名無しさん (スップ Sdff-aoBM)
垢版 |
2023/11/26(日) 12:00:02.74ID:t46bGHL+d
9月から配列配列と言い続けているのに驚く
まだやってんのかよ
2023/11/26(日) 13:02:10.49ID:xrmT/xcU0
それで作品は完成したのか
2023/11/26(日) 13:41:55.38ID:YjDORt8e0
彼は作品を作ってるんじゃない
ただ配列と格闘してるだけや
2023/11/26(日) 15:26:09.65ID:06WEnIxy0
配列たのしいよねでんちゃ!でんちゃ!
こうですかね
2023/11/26(日) 16:57:15.49ID:ebkpzwLn0
自分のindexを知りたいとか思ったことないな
757デフォルトの名無しさん (スップ Sdff-aoBM)
垢版 |
2023/11/26(日) 17:43:50.21ID:t46bGHL+d
自分でプログラムしてるならわかる
必要ならパラメータで渡す
そんなものいらんよ
758デフォルトの名無しさん (ワッチョイ 4701-1fOb)
垢版 |
2023/11/26(日) 20:59:21.90ID:DSb557XU0
>>754
格闘家か
2023/11/27(月) 13:01:29.90ID:YdGgb4vX0
ディクショナリで似たようなことした気がする(うろ覚え)
2023/11/27(月) 18:34:33.66ID:fu5uNpvk0
>>738
配列aの3番目と配列bの1番目と配列cの99番目と変数dが全部おなじインスタンスだったらどうするんだよ?
2023/11/27(月) 19:53:58.80ID:/cbu4sL+0
1億円と2千円前から愛してるー
8千円過ぎた頃からもっと恋しくなあった
2023/11/27(月) 20:52:07.36ID:2/xPn6oY0
そもそも配列自体は同じクラスや構造体の繰り返しやろ
そこにクラスAさんいまどの添字にいまかーって聞いても、添字分の回答が来るだけやねわら
2023/11/28(火) 00:25:46.05ID:KjOVbCNK0
非同期処理は自分も全然理解出来てないな…
分かりやすい記事や書籍あったら教えてほしい
2023/11/28(火) 01:35:09.95ID:l/zJ2rcOd
>>738
TreeNodeみたいにparentでもつけたclassでも作って配列に突っ込んでIndexOfで調べろ
順番固定なら配列に突っ込まれるときにindexつけろ
2023/11/28(火) 06:04:30.08ID:MDNg41Je0
それこそTreeNodeCollectionとかDataColumnCollectionみたいに専用コレクションクラス作ってやれ
2023/11/28(火) 08:36:24.26ID:5Cyhyx4r0
>>763
非同期・並列処理がテーマのC#の本ってあんまりないのよね
実際に読んだことあるのは↓の二つ

『C#によるマルチコアのための非同期/並列処理プログラミング』 山本康彦 技術評論社
ちょっと古いけど、backgroundworkerの時代からawait asyncまで一通り歴史的経緯含めて網羅されている

『C#によるWindowsシステムプログラミング』 北山 洋幸 カットシステム
システムプログラミングと題されているけれど、非同期・並列処理に紙面の多くが割かれている

で、今正しいタイトルをチェックするついでに見つけた
読んでないので内容はわからん。2番目のやつと同じ著者によるもの
『C# 非同期・並列プログラミング入門』 北山 洋幸 カットシステム
2023/11/28(火) 20:41:13.81ID:QlCOA+Xa0
Windowsでスレッドと言えば昔からこれがオススメ
https://www.%61mazon.co.jp/dp/4756114040/
2023/11/28(火) 20:45:13.20ID:ahJUusiRM
>>766
Xamarinするには、まず人脈♪の人じゃねそれ?
2023/11/28(火) 20:52:01.03ID:gZII95OC0
>>767
kindle化されてない本は存在しないも同じ
2023/11/28(火) 20:52:41.51ID:QlCOA+Xa0
余裕があればAdvanced Windowsも読んどくといいぞ
2023/11/28(火) 23:06:15.03ID:iNny4p+X0
>>766
最初の買ったかな
非同期ずっと書きにくいな見づらいなと思ってて、asyncで本命きたか?と
エレガントさに感動した
2023/11/28(火) 23:29:30.06ID:33+xOP+f0
オレンジ色のやつ?
周りもみんな持ってたわ
2023/11/28(火) 23:53:42.79ID:aEnj/fWV0
stephan clearyのConcurrency in C#が鉄板
2023/11/29(水) 00:08:00.51ID:jjIrrfV/0
C#でasync、awaitの説明を読んでも頭にさっぱり入らなかったが、
CでIOCPとスレッドプールI/Oを使って、非同期処理を理解した。
2023/11/29(水) 06:14:57.35ID:P/h6PCbf0
>>769
小説や漫画ならともかく、実用書は紙の本の方が使いやすいわ
2023/11/30(木) 09:38:15.32ID:VDjO8Cq20
実用書こそ検索できる電書じゃないと実用性ないだろ
2023/11/30(木) 09:58:45.01ID:o2lKkOtg0
紙面画像ベタ貼りの検索できない電書というアカンやつもあってな…
2023/11/30(木) 10:33:15.32ID:bJSk0Mwq0
最初に一気に読む、理解するには本がベター
わかってしまえばあとはネット検索で可
779デフォルトの名無しさん (ワッチョイ dfe6-AnfR)
垢版 |
2023/11/30(木) 10:35:19.33ID:faN/LqhT0
単なる習慣だから、生まれてから電子書籍しか知らないなら何も困らない
2023/11/30(木) 11:02:18.40ID:wG+4D/Bo0
技術書の必要性が凄い勢いで無くなってくのは何か寂しいな
とは言え自分もググってCopilotも併用しているけども
2023/11/30(木) 11:21:02.38ID:XNXKu7/N0
別に有用性はなくなってないけどな
アウトプット先が増えてるだけで、高度に専門的な情報は書籍(電子含む)が強い
論文とかも電子になる時代だし、AI含め、色んな人のアウトプットを大多数が受け取れる便利な時代になったよ

紙は特定の存在が物理的に抱え込むためのものになりつつある
2023/11/30(木) 12:27:53.48ID:0vX9CguP0
えーっと確かこの本のこの辺にって実本めくる方がだいたい早いからしょうがない
2023/11/30(木) 12:54:08.28ID:AHaSUwRO0
質問です
C♯で中規模以上のプロジェクト開発してるときってやっぱり毎回ビルドには時間かかったりするのでしょうか?
PHPから乗り換えようか迷ってんだけどC♯はビルドとかめんどくさそうで悩んでます
2023/11/30(木) 14:20:54.36ID:7CM8sx7Oa
C#が最適だとは言わないがPHPの方がクソなのは言うまでもない
2023/11/30(木) 19:03:12.17ID:7TTksUWH0
WPFでWindows.Formを呼び出したいんだけど、
参照開いてWindows_Formとかはあるけど、
Windows.Formがない、どうやって追加したらいいんですかね?
786デフォルトの名無しさん (ワッチョイ bf00-1fOb)
垢版 |
2023/11/30(木) 19:04:01.23ID:7TTksUWH0
バージョンは.NET 6です
2023/11/30(木) 19:40:56.51ID:4nwqW1NG0
<PropertyGroup><UseWindowsForms>true</UseWindowsForms></PropertyGroup>
2023/11/30(木) 19:44:16.86ID:jJtFC2b00
うる覚えだけどcsprojに<UseWindowsForms>true</UseWindowsForms>を追加したら良かった気がする
WPFプロジェクトなら<UseWPF>true</UseWPF>って項目があるはずだからその一つ下にでも追加してみるといい
789デフォルトの名無しさん (ワッチョイ bf00-1fOb)
垢版 |
2023/11/30(木) 19:56:33.31ID:7TTksUWH0
>>788
ありがとうございます
そこらへんって本には載ってないんですかね
790デフォルトの名無しさん (ワッチョイ dfe6-AnfR)
垢版 |
2023/11/30(木) 20:03:06.67ID:faN/LqhT0
>「うろ覚え」を「うる覚え」と言う人に会ったことがあるかもしれません。実は一部の地方では、話し言葉として「うる覚え」が慣用的に使用されています。
「うろ」の文字や音が似ていることから「うる」に変わったとされています。
ただし、ビジネスシーンや書き言葉では「うろ覚え」が正しいので、間違わないように気をつけましょう。
2023/11/30(木) 20:04:01.72ID:BRv3/z1v0
ここはビジネスシーンじゃねーから関係ないね
2023/11/30(木) 20:38:41.31ID:RWZc3ygH0
一時期うる覚え撲滅委員会やってたけど面倒く臭くなってやめた
2023/11/30(木) 20:39:36.41ID:RpgM53cz0
うるかしておいて
794デフォルトの名無しさん (ワッチョイ dfe6-AnfR)
垢版 |
2023/11/30(木) 21:05:23.75ID:faN/LqhT0
「うろ」は「空」または「虚」または「洞」の読み方だから
「うる」じゃ意味が分からなくなるんだよね
2023/11/30(木) 21:26:06.29ID:BRv3/z1v0
そろそろ板違い
2023/11/30(木) 22:56:39.86ID:AHaSUwRO0
>>784
なんで?
2023/12/01(金) 13:52:35.60ID:pq7rhG040
完全な初心者なのですが、C#の変数宣言におけるvarって
パフォーマンス的なデメリットなどは存在しないのでしょうか?
読み辛さがなければ便利につかってよいものと考えていいですか?
2023/12/01(金) 13:57:09.40ID:rKLFf3Nx0
パフォーマンスは関係ないよ
使う使わないも好みの問題なので、自分が良いなら使えば良い
2023/12/01(金) 14:03:49.94ID:0wDimeZp0
varは推論型なので内部でintやstringに変換してくれる
むしろ宣言時に初期化してなくて推論出来ないとエラーが出る

var a; // 初期化してないのでエラー
var b=null; // 何のnullかわからないのでエラー
var c=0; // int型なのでOK
var d=','; // char型なのでOK
2023/12/01(金) 14:05:25.14ID:T/T91xwv0
varはコンパイル時に型が決まるからね
2023/12/01(金) 14:09:27.27ID:pq7rhG040
ありがとうございます! パフォーマンスは気にしなくてよいのですね……!
便利に使います!
2023/12/01(金) 15:12:36.39ID:j+kKKSjnM
コンパイルにかかる時間が余計かかるのでは?
2023/12/01(金) 15:30:54.58ID:OXWkzWRJ0
余計って
何ミリ秒とかじゃねーの?
2023/12/01(金) 15:54:55.96ID:rKLFf3Nx0
コンパイル時っつーか、EXEやDLLビルドする時(コンパイルって言うと実行時のコンパイルと誤解する)
805デフォルトの名無しさん (ワッチョイ dfe6-AnfR)
垢版 |
2023/12/01(金) 17:32:54.38ID:NZuUNSBe0
どちらも似た様なもんだろw
2023/12/01(金) 17:38:45.74ID:NB+NfP/p0
型推論時は右辺を評価してその結果の型が変数の型になる
型を明記した場合は右辺を評価してその結果の型と明記した型が一致するかどうかをチェックしてる
varが使える状況か否かの確認に追加ステップが必要だったとしても差は出ないんじゃないかと思う
でも少し興味あるので誰かに大きいコードベースでベンチマークして貰いたいかも
2023/12/01(金) 17:42:43.52ID:GGR/f3/i0
ビルド以外のその時に動いている別プロセスの影響による誤差以上に差が出る気がしないけどなぁ
2023/12/01(金) 19:25:57.27ID:nYA3mcmA0
>>806
まぁこれだよな
有意な差がデータから読み取れるのなら確かに見てみたい
809デフォルトの名無しさん (ワッチョイ dfe6-AnfR)
垢版 |
2023/12/01(金) 21:24:13.90ID:NZuUNSBe0
コード生成は一度やれば済むんだから、その一度の時間差なんて厳密に測って意味あるの?
2023/12/01(金) 21:32:13.38ID:Jz3SJDE50
varって値を入れたら瞬時に型が決まるから人間が想像するような推論ではなくパターンマッチと言った方が近いかもー
811デフォルトの名無しさん (ワッチョイ dfe6-AnfR)
垢版 |
2023/12/01(金) 21:35:41.22ID:NZuUNSBe0
右辺の型なんかコンパイラは分かってるからねぇ
むしろ左辺の型と合ってるか比較する方が時間掛かってんじゃね?
知らんけど
2023/12/01(金) 21:45:38.66ID:LLEebJ7P0
>>805
ソースコードからのビルドと、JITは相当違うが
2023/12/01(金) 23:30:19.67ID:Cli0BVfg0
場外乱闘が大好きなんだな。
814デフォルトの名無しさん (ワッチョイ 5e23-zrcD)
垢版 |
2023/12/02(土) 13:18:43.89ID:3ChpQtq/0
使ってるお絵かきソフトのカスタマイズがしたいんですが
オープンソースじゃないお絵描きソフトのキャンバスに色を塗ったりするのって不可能なんですかね?
2023/12/02(土) 13:22:15.93ID:dC73Xol+M
開発元に仲間にしてもらえ
2023/12/02(土) 14:11:34.69ID:GMhCNfLc0
自動化ソフトでペイントブラシにお絵かきしてた人はいたな
817デフォルトの名無しさん (ワッチョイ 5eb8-zrcD)
垢版 |
2023/12/02(土) 15:13:30.76ID:3ChpQtq/0
オープンソースじゃないと自動化やカスタマイズは難しいって結論でいいですかね?
2023/12/02(土) 15:23:11.83ID:HayA9ddu0
自動化はオープンソースかどうかはあまり関係ないし
カスタマイズはオープンソースかどうかよりもカスタマイズできる機能が用意されてるかどうかの方が重要

なのでその結論はどちらかと言えば間違い
819デフォルトの名無しさん (ワッチョイ 9165-w+dO)
垢版 |
2023/12/02(土) 15:50:54.90ID:O517Z4Pz0
カスタマイズは金出せばたいていのものは出来るぞ
2023/12/02(土) 18:12:32.52ID:9irNWnk20
プラグイン方式のAPIが用意されているなら出来るかもしれんね
2023/12/02(土) 18:52:29.11ID:6VKi/HQz0
GIMPでPython-Fu
2023/12/02(土) 19:54:35.50ID:9ebigAxN0
dyspyで改造すればいい
823デフォルトの名無しさん (ワッチョイ 5e1f-zrcD)
垢版 |
2023/12/03(日) 11:50:27.21ID:wHVkOda/0
>>818
ありがとうございます。公式でそんなのなかったんで諦めます。
824デフォルトの名無しさん (ワッチョイ 7dad-OpN5)
垢版 |
2023/12/03(日) 12:07:42.81ID:X1j6LHWz0
珍しくやさしい
2023/12/06(水) 05:15:37.44ID:TkvZFS2b0
Cで作ったDLL関数の引数が構造体のポインタでrefで呼び出し出来ていたんだが、C#側のstruct文をclass文に変えたことでメンバ変数に正しく伝わらなくなって悩みました。
何故でしょうか?
2023/12/06(水) 07:26:11.29ID:bubLwMtd0
structをclassに変えたからだろ自分で言ってるじゃないか
2023/12/06(水) 11:51:31.60ID:aWUIe7Q50
>>825
Cのポインタと、値渡し・参照渡しを勉強して
2023/12/06(水) 12:09:56.44ID:TkvZFS2b0
>>826
メンバー関数なしのclassはstructと同じと思ったの。publicは付けるとして。
2023/12/06(水) 13:15:20.57ID:aWUIe7Q50
答えはclassにするならrefを取れなんだが
まずclassとstructの違いをちゃんと勉強しような?
2023/12/06(水) 13:46:33.35ID:NPFUhgut0
初心者です。
.NET Standard 2.1を使用しています。
マルチスレッドの同時接続数の設定で、ServicePointManager.DefaultConnectionLimitの値をできる限り上げたいのですが、Int32.MaxValueを設定しても問題ないのでしょうか。
一般的にServicePointManager.DefaultConnectionLimitの値はどうやって決めるものなのでしょうか。
2023/12/06(水) 18:55:54.49ID:ODgvh3rC0
ライブラリが勝手にアプリ全体の制約値変えていいのか?というのはまあおいといて
HttpClientが使ってるHttpClientHandlerやSocketsHttpHandlerのMaxConnectionsPerServerもInt32.MaxValueだし別に設定するのは問題ないよ
実際の同時接続を増やしすぎたらサーバによっては蹴られるとか攻撃扱いされるとかあるかもしれんが一般化できるもんではないな
あと接続繰り返すうちにクライアント側もソケットを使い果たす可能性もあるぞ
2023/12/06(水) 19:55:44.60ID:wX85cynNM
>>830
経験や知識のあるものが実測値などを基に決める
初心者が及びもつかないこと

普通に無理ゲー
833デフォルトの名無しさん (ワッチョイ 5eb8-zrcD)
垢版 |
2023/12/06(水) 19:56:05.75ID:+EnqVXDC0
System.Windows.Forms.Timer
これで呼び出した関数の中で
テキストボックスとか操作できちゃう理由が知りたいです。
内部的にInvoke使ってるんですか?
2023/12/06(水) 20:32:33.68ID:wX85cynNM
>>833
https://atmarkit.itmedia.co.jp/ait/articles/0511/11/news117.html
2023/12/06(水) 20:35:22.09ID:74V1WVL70
UIスレッドで実行されているからコントロールを操作できる
https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.forms.timer
836デフォルトの名無しさん (ワッチョイ 5eb8-zrcD)
垢版 |
2023/12/06(水) 20:42:07.51ID:+EnqVXDC0
>>835
for(int i=0;i<100000000;i++)
{
textBox.Text="test";
}

UIスレッドにこうかいてもループ終わるまで何故かtestって文字でないですけど何故ですか?
でもSystem.Windows.Forms.Timerでこれ呼んだら速攻で"test"ってでると思うんですが
837デフォルトの名無しさん (ワッチョイ 6561-Q9JY)
垢版 |
2023/12/06(水) 21:21:27.26ID:NPFUhgut0
>>831
Int32.MaxValueでも問題ないんですね。ご教授いただきありがとうございます。
ちなみに作っているのはライブラリではなくUnityアプリとサーバです。

今回HttpClientではなくHttpWebRequestを使用しています。
HttpClientだとソケットが枯渇しやすいという話はよく見ていますが、HttpWebRequestでもソケット枯渇は問題なのでしょうか。
タイムアウトした接続が解放されずにカウントされたままになる、という情報を見て、ServicePoint.ConnectionLeaseTimeoutを適当に一分とかに設定していますが、この設定だけだと問題が起きてしまうんでしょうか。
2023/12/06(水) 21:34:33.42ID:wX85cynNM
HttpWebRequestはかなり前から非推奨だったと思うが…
2023/12/06(水) 21:57:10.39ID:/yWKgeqZ0
Loop中に処理権限渡さなあかんやろ
840デフォルトの名無しさん (ワッチョイ 9140-JrwL)
垢版 |
2023/12/06(水) 21:58:33.69ID:bAVe0RWP0
つか、UIスレッドにループとか書くな知障
2023/12/06(水) 21:59:34.08ID:EazbNqt3d
>>836
しらんけど

Listboxとか大量に突っ込んでる途中は表示されないでしょ
DoEventとかいれないと
2023/12/06(水) 22:01:16.10ID:ODgvh3rC0
>>836
UIスレッドの名前通りUIの更新もそのスレッドでやってるから
スレッドがループで独占されてて画面を更新できない
> でもSystem.Windows.Forms.Timerでこれ呼んだら
「これ」ってforを含んだものじゃないよね?

>>837
Unityは詳しくないからコメントできないな
843デフォルトの名無しさん (ワッチョイ 5eb8-zrcD)
垢版 |
2023/12/06(水) 22:04:36.80ID:+EnqVXDC0
>>841
勘違いかもしれないんでもう一辺試します
すいませんでした
844デフォルトの名無しさん (ワッチョイ 5eb8-zrcD)
垢版 |
2023/12/06(水) 22:15:36.73ID:+EnqVXDC0
>>842
でもSystem.Windows.Forms.Timerって動いてる時に
中でループ大量に走ってても
フォーム動かせたりしちゃいますよね?
これってUIの更新ではないですかね。

Mainとかにループ書くとフォーム動かせないのに。
845デフォルトの名無しさん (ワッチョイ 5eb8-zrcD)
垢版 |
2023/12/06(水) 22:16:58.97ID:+EnqVXDC0
実はループしてるときは動かせはするけど鈍くなってるんですかね。
2023/12/06(水) 22:39:56.04ID:ODgvh3rC0
> でもSystem.Windows.Forms.Timerって動いてる時に
> 中でループ大量に走ってても
状況が分からん 中ってなんだ ループって何を指してるんだ
2023/12/06(水) 22:43:06.05ID:RjlgKzha0
tickの中でループすると固まるでしゃろ
2.1は固まらないのか…?
848デフォルトの名無しさん (ワッチョイ 5eb8-zrcD)
垢版 |
2023/12/06(水) 22:45:04.51ID:+EnqVXDC0
>>846
こうです
public void clock(object sender, EventArgs e) {
for(int i=0;i<100000000;i++)
{
textBox.Text="test";
}
}
849デフォルトの名無しさん (ワッチョイ 5eb8-zrcD)
垢版 |
2023/12/06(水) 22:50:59.79ID:+EnqVXDC0
>>847
鈍くなってただけっぽい
850デフォルトの名無しさん (スップ Sdea-ws2i)
垢版 |
2023/12/06(水) 23:40:36.62ID:2DYN/adQd
もしかして倉庫番君か?
2023/12/07(木) 07:29:21.20ID:P2Gy3zkS0
>>847の言う2.1が何のことかわからんけど
.NET Framework 4.8.1でも.NET6でも、>>848をやれば
ループ中はTextBoxの表示は変わらないしWindowも動かせないがな
2023/12/07(木) 07:54:02.73ID:Y2nxiOLtd
外部からのwm_paintで描画される事はあるかも
鈍くなるとは
2023/12/07(木) 08:31:54.73ID:H2AyE6420
WinFormのTimerのOnTickってWncProcから呼び出されてるけど
その状態でWM_PAINTとか来てもキューに積まれてるだけじゃない?
2023/12/07(木) 08:32:18.57ID:H2AyE6420
鈍くなってただけとかマジでわからんけどw
2023/12/07(木) 08:39:50.14ID:/dQqqyqX0
初心者の曖昧で雑な表現に振り回されるスレ民の図
2023/12/07(木) 08:46:18.88ID:Y2nxiOLtd
>>853
wm_paintはキューを無視して飛んでくるよ
2023/12/07(木) 08:58:54.25ID:H2AyE6420
あれ、そうだったっけ
昔見たMSのドキュメントにはDispatchMessageによって送信されて
WindowProcを介して受け取るって書いてあった気がしたけど
記憶違いかスマン
2023/12/07(木) 09:27:54.62ID:1UPy/6u0d
メインスレッド止めてるのに描画されるとか、ちょっとしたホラーだな
見えざるスレッドがいるのか
メインスレッドと思ってたものが実は違ったとか
もしくは、自動的に実行位置がコロコロ変わってる可能性も
2023/12/07(木) 09:34:30.90ID:Q56eC8Dw0
今時のCPUじゃぁ100000000回ループなんてあっという間だから、メッセージ処理が少し滞ってもっさりした感じになる程度で済むんだろう
860デフォルトの名無しさん (ワッチョイ 9140-JrwL)
垢版 |
2023/12/07(木) 09:53:06.28ID:fQltjmnX0
>>859
最適化されただけちゃうか?
2023/12/07(木) 17:59:27.07ID:qtD13wly0
>>851
2.1は>>830で書いてる.NET Standard 2.1
2023/12/07(木) 18:00:29.07ID:qtD13wly0
って違う質問だったよごめん
2023/12/08(金) 02:47:09.87ID:iIL14t3x0
Control.Refresh
2023/12/09(土) 09:10:55.97ID:Z2D8kHNzd
text変更してもinvalidateされるだけ
ループ終わってから無効領域まとめてWM_PAINTメッセージがsendされる
2023/12/10(日) 00:55:08.49ID:rdr3TtNc0
ワンドライヴに保存して開いたら、エディタで開いたような感じになったぜ。
2024/01/04(木) 11:26:57.05ID:97h1wBCI0
https://wikiwiki.jp/postmodern/
2024/01/06(土) 14:32:52.12ID:AYkaYTA3d
hage
868デフォルトの名無しさん (スップ Sdc2-uC6W)
垢版 |
2024/01/06(土) 14:33:11.04ID:AYkaYTA3d
ageh
869デフォルトの名無しさん (ワッチョイ ffe1-JApz)
垢版 |
2024/01/08(月) 11:55:48.31ID:6WLOFFsr0
c#でパソコンの使用時間をカウントできないですかね?
フリーソフトであるんですが何故か正しくカウントできてない。
僕的には起動時間が使用時間であってほしいんです。
増えてはいるんだけど例えば10時間つけっぱなしにして+10時間ってなってないんですね
870デフォルトの名無しさん (ワッチョイ df01-9rua)
垢版 |
2024/01/08(月) 12:05:41.91ID:6CrO7J2H0
windowsの起動日時をc#で取得する方法
を、bing等のaiに聞いてみる
871デフォルトの名無しさん (ワッチョイ ff7b-ipwt)
垢版 |
2024/01/08(月) 12:15:04.04ID:60lS1oIG0
リアルタイムでなくていいならEventLog.GetEventLogsと以下参考にして算出したら?
http://faq3.dospara.co.jp/faq/show/7275

> 僕的には起動時間が使用時間であってほしいんです。
> 増えてはいるんだけど例えば10時間つけっぱなしにして+10時間ってなってないんですね
ActivityWatchなら無操作時間もAFKとして記録してくれたような…
2024/01/08(月) 12:20:36.50ID:q5367SyVd
timer作ってカウントすりゃええんでないの?
窓起動時間は入らんけどさ
2024/01/08(月) 12:40:06.35ID:GgkACOkl0
System.Environment.TickCount使え
2024/01/08(月) 12:40:07.18ID:2Dy3ldbmM
イベントログに起動した時刻やスタンバイに入った時刻が記録されてる
2024/01/08(月) 12:44:53.54ID:GgkACOkl0
1日内だの数日だのならこれで十分
32bit値によるミリ秒カウントだから49日ちょいで一回りしてしまうから
それ以上の日数で調べたいならDllImportしてGetTickCount64使う
2024/01/08(月) 12:47:38.02ID:aeUHKPs00
DllImportしなくてもEnvironmentにTickCount64があった気がする
877デフォルトの名無しさん (ワッチョイ ffe1-JApz)
垢版 |
2024/01/08(月) 13:09:27.15ID:6WLOFFsr0
みなさん有難うございます。
>>874
それ全部合計できます?
>>876
累計調べたいですが出来ますかね?
2024/01/08(月) 13:22:01.18ID:aeUHKPs00
>>877
TickCountもTickCount64も、OSの起動時からの累計だぞ
Environment.TickCountでググってみるとかしてみるといい
879デフォルトの名無しさん (ワッチョイ ffe1-JApz)
垢版 |
2024/01/08(月) 13:37:16.51ID:6WLOFFsr0
>>878
有難うございます。とりあえずそれで1年間の起動時間調べてみます。
2024/01/08(月) 15:11:08.87ID:q5367SyVd
どーでもいいことだが
イベントログって放置してる?
赤いエラー見えると内容確認して消してしまうわ
2024/01/08(月) 15:27:59.54ID:uhZegW9c0
赤いとエラー、障害対応
2024/01/08(月) 15:28:40.80ID:uhZegW9c0
エラーじゃねえアラート
2024/01/08(月) 15:36:41.86ID:QVW1Svf+0
黄色は放置でいいけど
赤は駄目やろ
2024/01/08(月) 16:05:07.96ID:q5367SyVd
えー

DCOM に登録しませんでした

て無視しね?
2024/01/08(月) 16:48:18.97ID:bZA8rO/S0
>>875,876
.NET Frameworkには無いけど、.NET5(厳密には.NET Core3.0)以降ならEnvironment.TickCount64がある
2024/01/08(月) 17:14:34.76ID:DQpaADHn0
メソッドのアクセス修飾子は、internal と public どっちがいいんでしょうか?

仕事で見るソースコードはほぼ全て (internal・public のどちらでもいい箇所は) public ですし、
自分で書く時も public ばっかり使っています。

他のアセンブリから参照されないメソッドは積極的に internal にするべきでしょうか?
2024/01/08(月) 17:41:32.85ID:Zq5bmwpv0
イベントログに色付いてたっけ?
888デフォルトの名無しさん (ワッチョイ 5f8e-9rua)
垢版 |
2024/01/08(月) 17:53:55.46ID:Rp8wcscb0
モノクロディスプレイじゃなければ
2024/01/08(月) 18:06:19.35ID:9oT8CVge0
>>880
消すって、すべて解決してるの?
すごいね
2024/01/08(月) 18:32:12.13ID:aeUHKPs00
>>886
メソッド持ってるクラスがpublicなら、公開すべき物以外はpublicにしない
891デフォルトの名無しさん (ワッチョイ df01-9rua)
垢版 |
2024/01/08(月) 18:47:08.96ID:6CrO7J2H0
顧客にwinサバ納品の条件に、赤いのは対処して無くしておくこと、というのがあってすごく面倒だった思ひ出
無視すりゃエエやんて愚痴りまくったわ
2024/01/08(月) 19:56:55.35ID:X79wlzmD0
あれってWindows側のバグだと思うんだけど全部消す事ってできるの?
2024/01/08(月) 20:00:32.85ID:Zq5bmwpv0
ああ、一行丸ごとに色が付いてるんじゃなくて
行頭のエラーレベルのアイコンのことか
2024/01/08(月) 22:28:47.96ID:izlDBt/z0
イベントログサイズを0バイトにすればエラーなし(そうじゃない)
2024/01/08(月) 23:26:25.07ID:FNFcnj+v0
>>891
でも赤いの消すのってメーカーPCとかの製品では必須なのでは
見つかったら絶対問い合わせ来るやつじゃん
896デフォルトの名無しさん (ワッチョイ df01-9rua)
垢版 |
2024/01/09(火) 01:27:31.91ID:kKdORG5L0
>>895
必須ではない
一覧にあるエラー分は無視で構いません
でokなとこもある
2024/01/10(水) 18:42:27.41ID:rO8r+DU/0
他のパソコンの起動時間をリアルタイムでTCPIP通信で受け取りたいんですが
https://dobon.net/vb/dotnet/internet/tcpclientserver.html
上URLのクライアントのコードにおいて
↓これはサーバーに向けての送信だからわかるんです。
ns.Write(sendBytes, 0, sendBytes.Length);
でもループの中の
↓これが分かりません。
ms.Write(resBytes, 0, resSize); 
msっていう変数にWriteする必要性って何ですか?

コメントだと //受信したデータを蓄積する
って書いてて今一そうしてる意味が分かりません。
898デフォルトの名無しさん (ワッチョイ ff7b-ipwt)
垢版 |
2024/01/10(水) 19:13:08.65ID:wiBCpBDR0
>>897
そのページに記載のサーバーとクライアントの仕様をちゃんと呼んだ上で
実際にサンプルプログラム動かして確認してたらその質問は出ないと思うんだが試したのか?

それはそうとDOBONはもう更新するつもり無いなら注意書きつけてほしいわ
サンプルコードが古すぎて害にしかなってない
899デフォルトの名無しさん (ワッチョイ 5fff-NF1f)
垢版 |
2024/01/10(水) 19:14:10.09ID:xhKI3zeu0
>>897
MemoryStreamって書いてあんだろ
メモリーに流し込むクラスだろうね
2024/01/10(水) 20:44:19.99ID:vG4IIubdd
>>898
対象のバージョンや記事書いた時期でもあればよかったのにね
でもまぁコードなんて最新の事情に合わないなんてよくあること
古くても読み物としてありよ
2024/01/11(木) 06:55:27.49ID:LIuE+Fi80
ページ内に履歴があるだろメクラかお前ら
2024/01/11(木) 12:23:34.54ID:Fle+/cCtd
初稿の履歴ないのがねぇ
仮に2000年初稿で2024年の初修正があったらわけわかめ
903デフォルトの名無しさん (ワッチョイ ffd4-JApz)
垢版 |
2024/01/11(木) 19:36:49.57ID:CdeueIId0
>>898
良く見るとTCPIPとは関係無いコードでしたね。
データを保存してるっぽいですね。ありがとうございます。
2024/01/17(水) 13:48:13.58ID:ScFPuN2i0
https://twitter.com/intent/tweet?text=https://wikiwiki.jp/postmodern/&hashtags=%E7%B5%B1%E4%B8%80%E6%95%99%E4%BC%9A,%E5%89%B5%E4%BE%A1%E5%AD%A6%E4%BC%9A,NHK,%E6%97%A5%E3%83%86%E3%83%AC,%E3%83%86%E3%83%AC%E6%9C%9D,TBS,%E3%83%95%E3%82%B8%E3%83%86%E3%83%AC%E3%83%93,CNN,BBC
https://twitter.com/thejimwatkins
2024/01/23(火) 20:11:36.23ID:AWqpAujf0
タブページの中に別のフォームを埋め込むって出来ますか?
変数ってフォームごとに所有権があって変数名が被る心配がないじゃないですか。
実際複数のタブにわたってテキストボックスとか置くと頭に付ける文字の区別とかがしんどいです。
これ何とかなりますか?
2024/01/23(火) 21:23:50.81ID:mwhYOn0kd
ようわからんわ
オブジェクト思考?
usercontrol作れ?
なんだろこれ
2024/01/23(火) 21:32:11.32ID:6U+6gI+/0
ひょっとして「ユーザーコントロール」で検索すると幸せになれたりして?
2024/01/23(火) 21:39:08.05ID:JcNbHQUDp
内部クラスっぽく出来たと思ったよ
909デフォルトの名無しさん (ワッチョイ bfed-EFyZ)
垢版 |
2024/01/23(火) 21:45:42.88ID:AWqpAujf0
>>907
おおやりたいことが無事実現しましたw
同じ名前でも全然競合しないし最高ですねこの機能
2024/01/24(水) 00:40:45.85ID:pnQLU1ii0
やっぱりwinformsってguiフレームワークとしては一番手軽よね
2024/01/24(水) 11:37:50.43ID:2akkljXY0
手軽なだけなら一番はVB6かな
2024/01/24(水) 11:54:14.72ID:i18Ivvk80
C#スレでその答えはいかがなものか
2024/01/24(水) 13:00:22.05ID:4H3THdR1M
今のブラウザなら数値専用や日時専用があるからwinfomより簡単じゃね?
914デフォルトの名無しさん (ワッチョイ 8701-32L+)
垢版 |
2024/01/24(水) 14:11:00.83ID:lOva81w60
アンカーやドックなどがあるから、もうVB6は無いな
2024/01/24(水) 15:26:22.66ID:pLKcXdg3H
vb6はエディタが糞
耐えられない
2024/01/25(木) 09:42:48.26ID:Y/Dhb+kB0
Excel VBAはいつになったらエディタを更新するんだ・・・?
2024/01/25(木) 11:19:28.66ID:39FMXzwMM
public static string[] GetFiles (string path, string searchPattern);

searchPattern
String
path 内のファイル名と対応させる検索文字列。 このパラメーターには有効なリテラルのパスとワイルドカード (* と ?) 文字の組み合わせを含めることができますが、正規表現はサポートされていません。

これなんですが*.jpgと*.pngを返すにはどうしたらいいですか?
2024/01/25(木) 11:34:16.17ID:oZfM3pz30
2008年の情報
http://bbs.wankuma.com/index.cgi?mode=al2&namber=24626&KLOG=46

2014年の情報
https://devlabo.blogspot.com/2014/09/clinq_8.html?m=1
2024/01/25(木) 12:29:17.22ID:3r459Fy60
>>917
GetFilesを2回実行しよう!
2024/01/25(木) 14:30:48.16ID:iiTXKpYa0
*.jpgと*.pngで1回ずつGetFilesするか
*.*でGetFilesして返ってきた配列をWhereしとけ
2024/01/25(木) 17:25:22.28ID:omI3X5NY0
Microsoft.Extensions.FileSystemGlobbingってのがあるよ
https://learn.microsoft.com/en-us/dotnet/core/extensions/file-globbing
2024/01/25(木) 17:31:07.30ID:omI3X5NY0
サブディレクトリを対象にする必要がなければEnumerateFilesとかの結果を自分でフィルタリングするコードを書いたほうが簡単かもしれない
2024/01/25(木) 19:55:17.14ID:Rn+lT0/uM
>>918-921
ありがとう上手くいきました!
924デフォルトの名無しさん (ワッチョイ 5fe2-/d4v)
垢版 |
2024/01/26(金) 13:12:48.82ID:AOloEcvR0
ASP.Net Coreって、いつになったらPasskeyに対応するの?
2024/01/28(日) 13:38:31.37ID:W2P22Djg0
VisualStudioのC#で開発して配布した過去バージョンのexeに何かしら問題が起きてソースを追ってデバッグする必要が出てきた時、
必要なのはそのexe本体とそのバージョンのpdbファイルだけでいいですか?
デバッグにはそのバージョンのソースコードもやっぱり必要?

また、配布したexeのpdbファイルはバージョン毎に残しておいたほうがいいという話を聞いたのですが
それはそのバージョンでビルドし直さなくてもよくなるからという認識で合ってますか?
気軽にバージョンを戻して再ビルド出来る環境がある場合、pdbファイルは残しておかなくても問題ないという認識で合ってますか?
2024/01/28(日) 13:59:23.66ID:GB+X/o1PM
pdbファイルでググって意味がわからないならまあ必要はないかな
2024/01/28(日) 14:50:18.85ID:J3Axde5H0
上から目線で情報ゼロ
2024/01/28(日) 14:57:53.56ID:UOEDMTUj0
そんなもんよ
やればわかる事やしな
2024/01/28(日) 15:01:53.02ID:93fehYxc0
c#住民の民度低く
2024/01/28(日) 15:11:21.96ID:+LjN+GoR0
VBNetからC#の移行ってハードルは高いですか?
元々趣味レベルでVB6やってた流れでVBnetに移行してしまったけど、
C#の方が参考文献も多いし簡単に移行出来るのなら、そうしたい
2024/01/28(日) 16:32:47.76ID:MXIL7WQC0
簡単だと思うけどな
ILレベルだと同じだし
932デフォルトの名無しさん (ワッチョイ a67b-7cac)
垢版 |
2024/01/28(日) 17:12:06.60ID:ohe9LYAg0
C#→VB.netだと辛いだろうけど逆なら楽だろうね
コンバータもあるみたい
https://github.com/icsharpcode/CodeConverter
2024/01/28(日) 17:14:07.15ID:6vdR+iWz0
細かい違いはあるけどVB.Net⇔C#は大丈夫でしょ
2024/01/28(日) 17:24:12.17ID:Y9bW3h9B0
昔趣味でVB.NETで書いたけど、何年か前にSharpDesktopの変換機能を使ってVB.NETからC#にして、
その後はC#で書いている。

VB.NETは今後機能強化は見込めない。

Visual Basic 言語の戦略 - Visual Basic | Microsoft Learn
https://learn.microsoft.com/ja-jp/dotnet/visual-basic/getting-started/strategy
>Microsoft は、アナライザー、コード修正、IDE 生産性機能の提供など、
>Visual Basic 開発者向けの Visual Studio のエクスペリエンスを引き続き向上させます。

>Microsoft は、VB でサポートされている既存のシナリオを今後も重視し、
>Web フロントエンドやクロスプラットフォーム UI フレームワークなどの
>新しいワークロードのサポートを追加する予定はありません
2024/01/28(日) 17:59:36.01ID:LPBT5UB60
>>931
嘘吐き
VB.NETの方は余計なコードがくっついてくるぞ
2024/01/28(日) 18:01:50.46ID:0jJ0H9gA0
SharpDevelopのコンバーターさんはかなり有能
2024/01/28(日) 20:44:42.49ID:OcG9H8Hh0
c++のスレッドいつの間にか無いんでここで聞きます。
簡単なデスクトップのアプリケーション作る時に
今時winfomじゃなしにmfcを使うメリットはありますか?
有る程度コンポーネント揃ってるし何より格好がいいとは思いますが。
2024/01/28(日) 20:55:25.22ID:UOEDMTUj0
自分でメリット書いてるやん
939デフォルトの名無しさん (ワッチョイ 5e31-IHfd)
垢版 |
2024/01/28(日) 21:07:30.55ID:OcG9H8Hh0
>>938
mfc難しくて未だに簡単なのも作れてません
動作の軽さはどっちがいいですか?経験してたらここが早くていいとか教えて欲しいです
2024/01/28(日) 21:47:38.13ID:24KrtbEi0
むしろ簡単なデスクトップアプリならC#だろうに
このスレに来たのはつまりそういう事だな
でなければただの変なやつだぞ
2024/01/28(日) 23:15:24.43ID:n6gmplWg0
フォームアプリを作るのに速度も何もないだろうと思うんだけど。
昔やってたけどもう覚えてないなぁ。

いまから基礎からやるなら C# とかの方がいいんじゃないの。
真面目に C++ でお勉強するなら Windows がどういうものかわかるから、長期的にはそれが利点かも。
2024/01/28(日) 23:43:43.20ID:Zsq7p6tbd
人様に売るのか自分だけか?
アプリの速度なんてCPUで力押しすりゃいいんだから
時間と金どっちとるかや
2024/01/29(月) 00:46:35.17ID:JWDJ+6EM0
MFCは覚えることが多過ぎるから
どうしてもという理由が無いなら今からやるのはお勧めしないな
速度も気にする程の差じゃない
2024/01/29(月) 02:56:23.67ID:Vv+wvhXB0
C++/CLRフォームアプリもまだVS2022で作れるよ
2024/01/29(月) 09:53:57.60ID:5BA0kCchp
負の遺産
946デフォルトの名無しさん (ワッチョイ 5e31-IHfd)
垢版 |
2024/01/29(月) 21:27:58.33ID:tLNPdO/l0
>>941
基礎からというか業務で使ってるんですよね。
今のところ大丈夫かって簡単なんですよwinform
windowsの操作何でも出来るし細かいイベント何でもあるし
てか肌感覚としてUI作るのに苦労しないんならどんなアプリも作れるんじゃねと思います。
ただc#も極めると難しいとかいう意見もあってそれは何?ってイライラします。
c#やってて何か難しさを感じれる壁みたいなのありませんか?
このままだと難しい未知の何かを知らずに年とっていきそう。
947デフォルトの名無しさん (ワッチョイ 5e31-IHfd)
垢版 |
2024/01/29(月) 21:32:28.66ID:tLNPdO/l0
>>943
覚えることが多過ぎ=c#にはない豊富な機能
ってことではない?
2024/01/29(月) 22:01:21.59ID:EqcOrYxR0
言語とフレームワークを同列で考えてる時点で才能ないから諦めろ
2024/01/29(月) 22:11:47.97ID:JWDJ+6EM0
>>947
ではないね
C#からWin32APIやネイティブDLLのメソッドを呼び出せるし、一部の特殊な例を除いて大抵のことは出来る
2024/01/29(月) 22:11:59.01ID:pnrvZaIXp
exceptionだらけで処理の流れがブツ切れだよw
951デフォルトの名無しさん (ワッチョイ 5e10-IHfd)
垢版 |
2024/01/29(月) 22:56:22.74ID:tLNPdO/l0
>>949
教えてくれてありがとうございます。mfcはもう勉強やめようと思います。
調べたんですがc#の発展的なのってweb系の言語と組み合わせて使うとかですね。
デスクトップなアプリは誰もできるからスキルの差が無いって感じがしました。
2024/01/29(月) 22:57:43.03ID:XK8D3ICG0
極めると難しい?

難しいってさ人によるからその人には難しくてもあんたには簡単なんだよな一応業務経験作ってるんだろ?

野良野球の人が大谷の玉みて、あれは打てね~よ、難しいぞ

メジャーの人の意見は難しいが打てるやろ

そういうことや
2024/01/29(月) 23:01:36.27ID:Fg5KIJW6p
むしろweb系のが定型だろ?
954デフォルトの名無しさん (ワッチョイ ed55-on+i)
垢版 |
2024/01/29(月) 23:25:51.44ID:IF0u5KrJ0
>>951
何をどうしたってC++の方が難しいよw
むしろC#やったらめちゃくちゃ簡単に感じると思う
2024/01/30(火) 00:07:30.40ID:0lvJS1Vs0
C++ のフレームワーク・MFC は使い道がない。
C# は、Unity があるけど

普通は、Ruby on Rails から始める。
筑波大学も使っている、Railsチュートリアルのサイトで、
古いバージョンなら無料で読める

重要な技術は、
Rails, WSL2, Linux, Docker, AWS Solution Architect,
React, TypeScript
2024/01/30(火) 00:44:49.81ID:pCawcaRyM
MFCは座標指定してガチ描画とかがしたいならありかもしれないけど
普通のダイアログ(opendialogではなくformのようなもの)的なものはあまり使い道がない
957デフォルトの名無しさん (ワッチョイ 5eeb-IHfd)
垢版 |
2024/01/30(火) 23:14:46.00ID:t2Ii9S7T0
>>956
ガチ描画とは何ですか?
それを聞くとc#のdraw系機能と何が違うのか気になります。
958デフォルトの名無しさん (スッップ Sd0a-0pS/)
垢版 |
2024/01/30(火) 23:17:50.38ID:dMZwz/v3d
こいつもしかして倉庫番のあいつ?
2024/01/30(火) 23:24:34.10ID:WZqj5NP20
BitBltじゃね?知らんけど
2024/01/30(火) 23:34:08.10ID:Pl3P7FeC0
透過させるためにマスク画像と合成していたのを思い出した
2024/01/30(火) 23:51:54.39ID:zuIU16Rj0
MFCって基本コントロールしかないよね
あとは自分で描画して作る方向なの
2024/01/31(水) 08:22:02.12ID:oI13zziY0
CreateWindowExしろ
2024/01/31(水) 20:50:39.27ID:WcrdJArBM
>>946
非同期処理(asyc,await,Task)で躓く人は多そう
Linqは人によるかな
2024/01/31(水) 22:29:01.33ID:SeAFYNRQ0
Linqは慣れると超便利
2024/02/01(木) 00:19:59.55ID:kSnZtqZo0
linqはラムダで色んな渡し方ができるとわかってくると利便性が爆上がりする
クエリ構文は読めるけど自分ではわざわざ書きたくない
2024/02/01(木) 00:38:03.65ID:Nw+BHJGL0
式ツリーの存在意義を知ってるのと、それを使いこなせたらC#マスターの称号が得られる
967デフォルトの名無しさん (ワッチョイ 6a8d-vRSL)
垢版 |
2024/02/01(木) 13:07:35.05ID:wp2DoW250
すまんが、これってなんでHello Worldって出ないの?
https://dotnetfiddle.net/QI2CZg
2024/02/01(木) 13:36:55.15ID:/iWpAaMm0
>>967
Taskを実行してないから
2024/02/01(木) 14:45:37.81ID:tA9wf3ic0
linux上でc++からmonoはさんでc#メソッド呼び出すの試してた
とりまc#ライブラリを.net standardでビルド
970デフォルトの名無しさん (ワッチョイ 6aa9-vRSL)
垢版 |
2024/02/01(木) 15:00:02.00ID:wp2DoW250
>>968
ありがとう!Runしてなかった・・・・
971デフォルトの名無しさん (ワッチョイ 1ef0-icwS)
垢版 |
2024/02/03(土) 18:43:16.33ID:XKE0QK/20
C#を職場のその場しのぎの知識だけでなく、きちんと学習したい場合はどうすればよい?
2024/02/03(土) 18:55:03.22ID:T4YxinVT0
毎日ちいさいプログラムすりゃいい
2024/02/03(土) 19:42:40.27ID:CzJHS0BH0
職場で使ってたら、それ自体が学習だろうに。
現場で使えるC#だからな。
2024/02/03(土) 20:01:17.84ID:NK7kmYxR0
初回の実行速度って結局どうすれば速くなるん
2024/02/03(土) 21:14:21.45ID:T4YxinVT0
具体的にどういう事?
2024/02/03(土) 21:53:40.50ID:BQuoGe8v0
まさかデバッグ実行のこと言ってないよね
977デフォルトの名無しさん (ワッチョイ 1ed7-3veX)
垢版 |
2024/02/03(土) 23:02:59.18ID:6Ccw2JLe0
>>974
AOTコンパイル
2024/02/03(土) 23:22:24.05ID:SdoQAO3QM
>>974
C#から中間言語に変換してexeファイルが作られる
それを実行時にコンパイルしてる
だから初回は起動に微妙な間が生まれることがあるのは仕方がない

AOTコンパイルとあるけど実際は今のところ様子見だろうか?
2024/02/04(日) 01:04:34.67ID:fi+Tv+pT0
>>974
ReadyToRun
2024/02/04(日) 19:46:59.30ID:pDLxBXCyM
.NET Frameworkアプリを使ってると同名の *.ni.exe ファイルが作られるけどこれは何?
2024/02/05(月) 08:40:37.57ID:xvaDfJiw0
そんなもん作られたことねぇ
2024/02/06(火) 21:38:07.88ID:82wR+tAN0
>>980
次スレよろ
2024/02/06(火) 22:28:52.83ID:MbdgM9WZ0
いる?
2024/02/06(火) 22:36:19.30ID:pKjYyMRs0
ある意味隔離場だしな
2024/02/07(水) 09:21:57.92ID:lKIFkgjA0
簡単なことなら、Copilotが答えてくれるしな
2024/02/07(水) 09:27:45.20ID:4f9Fja7C0
んじゃ初心者はAIに聞け
初心じゃねーと思う人は
C#, C♯, C#相談室 Part97
https://mevius.5ch.net/test/read.cgi/tech/1671585518/

でいいね
2024/02/07(水) 09:59:33.38ID:shd0HtyB0
https://twitter.com/intent/tweet?text=https://wikiwiki.jp/postmodern/&hashtags=%E7%B5%B1%E4%B8%80%E6%95%99%E4%BC%9A,%E5%89%B5%E4%BE%A1%E5%AD%A6%E4%BC%9A,NHK,%E6%97%A5%E3%83%86%E3%83%AC,%E3%83%86%E3%83%AC%E6%9C%9D,TBS,%E3%83%95%E3%82%B8%E3%83%86%E3%83%AC%E3%83%93,CNN,BBC
https://twitter.com/thejimwatkins
988デフォルトの名無しさん (ワッチョイ bf63-KLri)
垢版 |
2024/02/10(土) 21:43:44.88ID:3TPS9nOf0
winapiをよくない使い方してwindows上で動きがおかしくなる事が
あるのですが結構危ないプログラム書いてるって認識でいいですか?
例えばクリック押下をプログラム的にさせて放すってのをセットでやたらずにいたら
バグりました。再起動したら治るんですがよくないですか?
2024/02/10(土) 21:45:08.53ID:nr0l3iGM0
日本語でおk
990デフォルトの名無しさん (ワッチョイ bf63-KLri)
垢版 |
2024/02/10(土) 21:51:40.97ID:3TPS9nOf0
クリックだけじゃないんですが
こういうのやっちゃダメですよね?
何かボタンを押下をプログラム的に実行したは良いが
そのボタンを放すをプログラム的にやらない
で症状なんですが
マウスホイールコロコロしても拡大縮小になってしまうとかです。
何やってもそうなります。
2024/02/10(土) 22:08:39.06ID:/1mn5DC20
そもそもC#の話なのか知らんけどまず具体的なコードと現象を示しなさい
2024/02/10(土) 22:10:33.51ID:38PNkJ3A0
あんたのPCなんだから好きにしろ
売り物ならそんなのは売るな
993デフォルトの名無しさん (ワッチョイ bf63-KLri)
垢版 |
2024/02/10(土) 22:14:02.76ID:3TPS9nOf0
>>991
SendInput知らないですか?
2024/02/10(土) 22:15:23.93ID:/ZC4Oa+s0
「やたらずにいたら」はどこの方言で意味は何?
2024/02/11(日) 02:49:59.62ID:RELNPteF0
ずっとクリック押下にしたままにしておいたらPCおかしいとか
お前の頭がおかしいんだよwww
2024/02/11(日) 09:19:46.66ID:8k78Qd14M
>>981
まじか

>>982
立ててきた
ふらっと C#,C♯,C#(初心者用) Part160
https://mevius.5ch.net/test/read.cgi/tech/1707610640/
2024/02/11(日) 10:23:02.94ID:1w9P7mUyd
WM_LBUTTONDOWNを2回送る
とか、通常ではあり得ないメッセージを送るって事でしょ
ちゃんとしたアプリならテストしてるんだろうけど
2024/02/11(日) 13:46:09.28ID:+E66gntj0
keystate が変わってないのに送りつけるとかしょうもない事してるに1000ペリカ
2024/02/13(火) 23:54:36.75ID:DdBHI3gPM
質問は打ち切ります
2024/02/14(水) 00:08:23.51ID:Z5RCjyqW0
あの質問しちゃ駄目なの?
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 189日 14時間 47分 5秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はUPLIFT会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

▼ UPLIFT会員登録はこちら ▼
https://uplift.5ch.net/

▼ UPLIFTログインはこちら ▼
https://uplift.5ch.net/login
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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