>>5 「同じ」の定義次第なので まず何をもって同じとみなすかを定義してから質問して下さい。 終わり。 立て乙 非同期なのにawait/asyncどころかtaskやaction/funcも全く使っていないC#2.0時代みたいな書き方してる今の現場から逃げたい……
時間管理のできてない安易な非同期はほぼ100%バグってるのでやらなくていい
レガシーな非同期はラップしてTaskかObservableにすると気分が晴れやかになる
Taskは遅いとかいう記事のせいで未だにCallbackが主流の俺社の悪口はやめて
それそれ そもそもcallbackの書き方なんて最近の本に全く載ってないから今の現場に入ってIAsyncResult?なんじゃそりゃってなった 10年は前に作られただろうサイトを読んで長い時間かけてようやく何やってるか理解したみたいな
ArrayListを使ってる.NET1.0時代な職場よりマシなのでは
ようやく文法の教科書終わったくらいの素人なんですがinterfaceの具体的な使い方はどうやって覚えたらいいですかね interfaceを使った疎結合というのがいまいちイメージできなくて取っ掛かりが分からん
例えば動物クラスで、哺乳類とか鳥類とかに派生していくけど、 飛ぶ能力は鳥類だけの特徴ではないから interface で実装するとか。
どんなclassのオブジェクトでも引数で受け取れるメソッド作ってみろよ 但し受け取るオブジェクト内でHage()メソッドの実装は必須な
文法だけみても、実際に使い方みないと必要性とか実感なんてわかないだろ まあ用途なんていろんなライブラリ使ってみればそのうちわかるさ
>>24 すごい。設問で理解できた気がする。 つまり現存するのが少数の自前クラスだけならまだ全てのクラスを引数にするメソッドを作成できるが、将来に渡って作られるであろうあらゆるクラスを引数にした関数は普通は作れない そこでinterfaceを使って引数を抽象化する事で、あらゆるクラスを引数に取る事を可能にする。しかもHoge()は確定実装なので相手が何であれHoge()を叩けるのは保証される。よって相手を限定しない疎結合になる。 ってことか?この認識であってます? >>27 ありがとうございます、やってみます 他にレスくれた方もありがとうございます >>26 外野だけど大体そんな感じ ただ、「そのインターフェースを実装しているクラスに限る」けどね だからといって闇雲に継承したりインターフェースを実装したりするのではなく、is-aの関係であるべき 「車」や「飛行機」は抽象化すると「乗り物 」となるけど、「家」は抽象化しても「乗り物」とはならないね(抽象化すると「建物」とかになるはず) 車、飛行機、家はそれぞれ通常クラスとして、 乗り物、建物はインターフェースとして定義する そうすればどの乗り物だろうと同じ「前進」とかで動かせる この抽象化して、どれでインスタンス化したか関係なく動かすためにinterfaceがある インターフェイスは、デザインパターンやユニットテストを多少でも知っていないと意味不明だろう
どうだろね 数時間で完成する規模のものしか書かないのであれば、記述が増えて不便になったと思うかもしれないし・・・・
実際にはほとんどテストが目的だから、>>29 みたいな説明で納得した気になってるとかなりギャップを感じるよね 一方で拡張ポイントを作るためにinterface使う場合は非常に恣意的な設計になるので、これまた>>29 のようなメンタルモデルとはだいぶ違う感じになる >>26 合ってる。 小難しく考えず、要は「俺のこと呼び出すならこれとこれのメソッド実装しとけ」ってこと。 だんだん使いこなせてきて、もうちょっと凝ったことやろうと思うと型制約とかが出てくる 普段意識しないだけで、インターフェースはいたるところにある 判りやすい例がforeachステートメント あれはListではなくIEnumerableに対してループしている
>>33 インターフェイスの目的がテストってのは違うんじゃね もともとは多重継承させないための仕組みだろ もっとも使われてるシーンがテストだってならまあそうかもしれんが >>36 初心者むけの例であんまり例外的な条件あげつらうののもうどうかとは思うが じつはforeachはIEnumerable実装してなくても可能なんだがな 初心者向けなら最初はテストのためって言ってしまっても問題ないと思う 初心者のときに俺が一番ピンときたのは、 ファイル作成や書き込みをテストしたくなったときに使った System.IO.Abstractions だな ファイルシステム自体を抽象化(IFileSystem)することで テストの度に実際のファイルをセットアップしなくてもいいことが分かった時は結構感動した
private Random _random = new Random(); void MethodA(){ var val = _random.Next(1, 100); } void MethodB(){ var random = new Random(); var val = random.Next(1, 100); } MethodAとMethodBをそれぞれループで何度も実行したとき、Bの方が圧倒的に速いのはなぜですか? Randomオブジェクトを都度生成しているので遅そうに思えるのですが。
RandomNumberGenerator.GetInt32の方がおすすめよ ゲームみたいにシード値を固定にしたい場合はその限りではないけど 速度が欲しい場合はXorshiftもあるんでついでに比較するといい
C++だと、メンバ変数をループでアクセスしたりすると遅くなるよ C#も多分変わらんのでは
>>44 そんなもん誤差 Randomクラスが中でどれだけフィールドにアクセスしてると思ってるんだ ローカル変数に保持するとかなりの確率でレジスタに入るがstaticフィールドに紐づいてるインスタンスだと逆に絶対にその都度メモリにアクセスすることになる それもその都度多重ポインタを辿っていく事になるので何度もreadする変数は出来ればローカル変数に一度入れた方が良い レジスタ利用されずともヒープへのアクセスとスタックへのアクセスじゃ局所性の問題からスタックの方が早いし手間以外にはメリットしかない
>>41 計測してみたけどBのほうが圧倒的に遅かった 出した乱数を未使用で後者はローカルで完結してるから最適化でコードが全省略されたってオチだろう
みなさんありがとうございます。書いたコードはこんな感じです。 .NET Framework4.8 の Form アプリで、画面にlabelを1つ置いています。 私の環境だとDebug, Releaseビルドに関わらず100倍くらいBが早いです。 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private Random _random = new Random(); private void Test(Func<int> func) { var sw = Stopwatch.StartNew(); var count = 10000; for (var i = 0; i < count ; i++) { label1.Text = func().ToString(); Application.DoEvents(); } sw.Stop(); Console.WriteLine($"{sw.ElapsedMilliseconds} msec"); } private int MethodA() { return _random.Next(1, 100); } private int MethodB() { var random = new Random(); return random.Next(1, 100); } private void button1_Click(object sender, EventArgs e) { Test(MethodA); Test(MethodB); } }
>>51 Test(MethodB); Test(MethodA); こうやって逆にして見ると今度はAの方が100倍速くなるかもね Stopwatchクラスはこんな風に糸も簡単に結果が変わるからパフォーマンス測定にはあんまり向かない あとRandomと比べてlabe1.Text = がかなりのボトルネックになってる可能性あるから、そうだとしたらRandomのパフォーマンス差なんて誤差の範囲内ってことになってしまう よって強いてTest()でやるとしたら自分ならこうやって最後だけアウトプットするようにする int num = 0; for (int i = 0; i < 10000; i++) num += func(); label1.Text = num.ToString(); てかループ枚にToString()を挟んでる時点で後発の方が100倍早くなるのはヒープアロケーション関係だろうね とりあえずそのコードじゃRandom自体のパフォーマンス差なんてほぼ計れてないと思うよ
>>51 Application.DoEvents()はずしても100倍の差が出る結果は同じなの? >>52-55 A,Bの順序を入れ替えても同じ結果でした。(A:6000msec, B:60msec) Application.DoEvents()を外すと、差が小さくなりますがそれでもBが40倍くらい速いです。(A:2000msec, B:50msec) Randomの使い方が正しくないとかは、いったん置いておいて、 なぜこれほど差が出るのかが知りたいです。 気づかずに遅い実装をしない為には、何に気を付ければ良いのかが知りたいです。 Textプロパティは>>53 も指摘している通りクソ遅いから>>53 の言うとおりに直しなさい あと、Bの方は頻繁に同じ値が返ってないか? Randomの引数なしコンストラクタは現在のミリ秒単位の時刻をシードに設定するから、1ms以内に生成されたRandomオブジェクトは全て同じ結果を返すはず 前述の通りTextプロパティの変更は非常に重いので、値が変わらない場合は実際の変更を省略する実装になっている可能性がある
GUIへのsetterもそうだが、何かを計測したいなら不確定要素になりうるものはできるだけ排除しなよ sw.Start()からsw.Stop()までの間はFunc呼び出しのループだけにしたい あとループと関数呼び出しのオーバーヘッド分の計測も必要 空の関数 int Empty(){return 0;} も用意すること
>>56 かかってる時間を見るとBが最適化されて速いというわけじゃなくAが異常に遅いんだね コードからはなんでそんな遅くなるのか全然わからないから絞り込んでいって切り分けるかプロファイリングするかかな それ以外で簡単にできるものだと A、B、A、B、A、Bと3回ずつ回して差をみる FormじゃなくCLIでやってみる BenchmarkDotNetで計測してみる とか Randomより遅い処理色々混ざってるから計測になってない 計測したい処理を完全に独立したメソッドにしてBenchmarkDotNetで測れ
>>61 公の場でのベンチマークにそういう変なライブラリを使うのは悪手 使う側にもその結果を検証する側にも不要な疑念が生じて、ソースを見ることになり結局時間の無駄 いわゆる.NETだと(だっけ)プロパティへのアクセスが遅くなるっていうハナシじゃないん? どうしてもならリフレクションとかでどうにかこうにかするとか、そういう話だった気はする
いわゆらない.NETの話はこのスレで出てくるのか?
>>64 そういうレベルの話じゃなくて、Control.Textは内部でWinAPIを呼んでいてビチグソ遅い >>58 , 66 なるほど納得 俺環で再現しなかったのはFrameworkのバージョン違いが原因だった .NET Core以降は1ms以内でもシードが変わるようになってる コンソールアプリでも似たような結果になったんだが気のせいかな?(4.8) ちなみにrandom使わずにやってみても同じ(intの和) プロパティへのアクセスだなあとワイは思うけどどやろね
>>62 公ってなんだよw .NETの速度を売りにしてるライブラリは大体これ使ってる 基本的に出力は重い Console.WriteLineですらただの数値計算と比べると圧倒的に重い Controlの操作は>>67 が言うように内部でSendMessageが走るので更にめちゃくちゃ重い コンソールアプリ、BenchmarkDotNetでやってみたら大して変わらんかったわ Randomじゃなくてintの和でも同じ傾向 速度の違いはデバッグ時の状況の影響かもね ちなControl.Textがうんたらの人たちは、ただの改善おじさんやな 比較の話で共通部分のコード直せって意味わからんわな
ちなコードの一部 private void Test(Func<int> func) { for (var i = 0; i < 10000; i++) { Console.CursorLeft = 0; Console.Write($"{i}{func()} random"); } } //private int MethodA() //{ // v = 5 + 5; // return v; //} //private int MethodB() //{ // int v = 5 + 5; // return v; //} private int MethodA() => _random.Next(1, 100); private int MethodB() => (new Random()).Next(1, 100); [Benchmark] public void executeA() => Test(MethodA); [Benchmark] public void executeB() => Test(MethodB);
>>69 何を根拠にプロパティは遅いって判断したんだ ただのメソッド呼び出しだぞ 特定のプロパティが遅いのはプロパティの中の実装のせいなので別の話 リフレクションは普通遅くなるはずだが >>73 このintの和のケースではBは最適化が効いて return 5; になっていると思われる Randomでは同様の最適化はできないはずだから状況が違う >>76 ちなみにintのほう、5+i にしてても"ほぼ"一緒やったよ。差異も似たようなもん 言いたいのは、>>51 (=41)が言う「AとBにこんなに差が出るがなぜか」について、 4.8のコンソールアプリでは51が言うほどの有意な差は出なかったということ。 ちなみにワイの環境でMeanの差異は50ms程度でBが早いってなったけど、 まあこれは51が言ってるほどじゃないけど環境依存もあるからなんとも (Randomのほうもコメントで切替えつつ検証した、差異も同じ) 原因についてのワイの推測は間違ってたってことはこれで自分で明らかにしちゃったけど、 Randomの1ms~も多分違うんじゃないかなとはこれで思う >>78 切り分けの仕方が不適切なんだよ >>51 のコードではボトルネックは明らかにTextやToStringやRandomの実装にあり、フィールドアクセスの有無やプロパティ自体のオーバーヘッドなんか誤差 >>73 のような超マイクロベンチマークとは測ってるものが全然違うわけ その処理時間の大小が定性的に同じだったとしても、それは恐らく偶然 定量的に評価しないと意味がない いやそれはなんのために言ってるわけ? メソッドの実装の仕方の違いからくる性能差の疑問を解決したいだろう51に対して、 何を言いたいん? 「これじゃ分かんねえよ」とでも言いたいの?なら引っ込んでれば? こっちは自分の予想を自分で検証してその植えでその誤りも認めたんやから 何もせず考えもせずわかんねえって言ってるだけやん 予想があるなら検証してコードもだしてくれよん?
>>72 全く違う 他で大きく時間使われるところがあると大数の法則的な感じで軽い部分が圧倒的母数によって覆い隠されてしまう 特にGCやシステムコールは常に一定速度とは限らないから、そういう処理を挟めば挟むほど誤差が大きくなってすぐに終わる軽微な処理差が覆い隠されてしまう >>51 >>58 の情報を信じて書いたけど これで大体同じような数字が出たら>>58 の通りベンチの取り方の問題のせいで出た差だと思うよ MethodA,MethodB自体は>>72 も検証してくれた通り変わらないはず というか今MethodBのほうをどこかで使ってるんだとしたら、性能なんかより1ms以内連続して同じ値が出るような乱数でも問題無い使い方なのかを気にするべき public partial class Form1 : Form { public Form1() { InitializeComponent(); } private int _random = 0; private void Test(Func<int> func) { var sw = Stopwatch.StartNew(); var count = 10000; for (var i = 0; i < count ; i++) { label1.Text = func().ToString(); Application.DoEvents(); } sw.Stop(); Console.WriteLine($"{sw.ElapsedMilliseconds} msec"); } private int MethodA() { return _random++; } private int MethodB() { return (int)DateTimeOffset.Now.FromUnixTimeMilliseconds; } private void button1_Click(object sender, EventArgs e) { Test(MethodA); Test(MethodB); } } label1.Text = func().ToString();を label1.Text = $”{i}: {func().ToString()}”;にでもすれば >>58 が書いてる内容が原因かどうかはっきりわかるでしょ >>81 何が全く違うんやねん 一般論はいいけど、それが51の言ってるAとBの差の理由になるのは何なのよっていうことじゃん? まあそもそも51のコードにそこまでの差が出るのかどうかも今のワイは知らん立場やが 51はBのほうが速くなってるから疑問なんやろ、まあ他のコードのとこに依存ありそうで気になるな >>82 まあ正直今どきRandom使うなとはワイも思ったw >>85 ん?5chって一般論話す場だろ そりゃ自分でベンチ計れば結論出せるけどそんなことする義理はない一方で一般論レスするのは5秒で終わるし >>87 しょうもな、わからないんやろ、引っ込んでて >5chって一般論話す場だろ 初めて聞いたわ。 ここ技術系の板だぜ。個別問題に一般論しか返せないなら邪魔だから黙ってろ
using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Running; using System; [MemoryDiagnoser(false)] public class RandomBenchmark { [Params(10000)] public int A; private readonly Random _random = new Random(); public int MethodA() => _random.Next(1, 100); public int MethodB() => new Random().Next(1, 100); [Benchmark] public int BenchA() { int result = 0; for (int i = 0; i < A; i++) result += MethodA(); return result; } [Benchmark] public int BenchB() { int result = 0; for (int i = 0; i < A; i++) result += MethodB(); return result; } public static void Main() => BenchmarkRunner.Run<RandomBenchmark>(); } | Method | A | Mean | Error | StdDev | Allocated | |------- |------ |------------:|---------:|---------:|----------:| | BenchA | 10000 | 80.88 us | 0.489 us | 0.434 us | - | | BenchB | 10000 | 1,490.26 us | 9.404 us | 8.797 us | 720,001 B |
>>51 皆が指摘してるように余計な処理を省いたら、たぶん、結果が逆転すると思う (自分の所では逆転してMethodAの方が60倍位速かった) private void Test2( Func<int> func ) { var sw = Stopwatch.StartNew(); var count = 10000; // ※速すぎて結果が0msecになると思うから1桁増やした方が良い for ( var i = 0; i < count; i++ ) { func(); } sw.Stop(); Console.WriteLine( $"{sw.ElapsedMilliseconds} msec" ); } private async void button2_Click( object sender, EventArgs e ) { await Task.Run( () => Test2( MethodA ) ); await Task.Run( () => Test2( MethodB ) ); } 少なくとも >>51 のコードでは、Label.Text の更新とApplication.DoEventの時間測ってるのと変わらん >>91 ほど変えなくても >>51 の label1.Text = func().ToString(); を func(); に置き換えるだけで結果が逆転するな >>90 やっぱ差異あってもその程度だよなあ これだけで 2000ms とか差が出るのは考えにくいよなあ ついでにfunc().ToString(); でも逆転するな
.NetFramework4.8 Debugビルドにて ■label1.Text = func().ToString(); MethodA: 5480[msec] MethodB: 48[msec] ■func().ToString() MethodA: 8[msec] MethodB: 20[msec] ■func(): MethodA: 7[msec] MethodB: 18[msec] ■>>91 MethodA: 0[msec] MethodB: 12[msec] .NET Core 6.0 Debugビルドにすると A,Bどちらも4500〜4600msec位で若干ばらつくがほぼ同じ 結局のところ、>>58 が正解で、.NET Framework4.8のRandomの挙動の違いで Textプロパティの内部で処理がスキップされるか否かってことだろうね Randomの値の検証はもう面倒臭いからやらないけど 仕様から推測した原因で間違いないか最終的に動作でも確認しといたほうがいいのでは? パラメータ有りのnew Random(i)したり>>84 みたいにカウンタもLabel.Textに反映して MethodBがMethodAと同様に遅くなれば一件落着 >>88 >>89 結果的に俺が一番最初に指摘した一般論の通りだったな 検証してくれたのは違う人じゃん なに自分の手柄にしてんの
>>104 単なる数値計算と比べて出力が激重なんてことは検証しなくても分かる程度に明らかな事だからな 実際俺以外にもちらほら指摘しとる奴おるし せっかくただのint結果に小分けされてるものを毎回出力に紐づけるとか発想がスタティックおっさんと同レベルだからオブジェクト指向プログラミング向いてないで >>105 しょうもな、後からならなんとでも言えるから > ちなControl.Textがうんたらの人たちは、ただの改善おじさんやな > 比較の話で共通部分のコード直せって意味わからんわな
>>107 それは誤りやったな、51には悪いことしたわ そんときはTextの仕様知らんかったでな 他のやつは98の提示があって始めて証明できてたな 普段から速度意識してプログラミングしてない奴は、出力が遅いという当たり前の事を知らない事は良くある そう言う奴には口で言っても感覚的に理解出来んから数字を見せるのが一番早い
>>103 お前が言ったのは一般論の可能性だ 結果的にそれが正しかったとしても それを個別事例に当てはめて検証したのは別の人だろ ちなみに今回の原因は、コントロールのアクセスや出力が遅いことじゃないんだぜ それならAもBも同じだけ遅くて差が出る原因にならんからな 誰が原因を解明したかなんて質問者からすればどうでもいい話である 醜い
出力が遅いとか条件次第でスキップする仕様等を知らなくても、 計測を目的としたループの中には対象(今回はRandom)以外の処理はなるべく入れない と言う原則を守っていれば避けられた話だな。
いや、そもそもRandomの速度を測定したいって話じゃないだろ、これ
>>110 実際に検証した人がGJであることは別に否定してないが? 大本の原因は同一インスタンスでは1ms以内だとシードが変わらない&同一文字列だと出力更新が成されないって事だったようだが、 「毎回newする vs インスタンス使いまわし」という本来質問者が意図してたであろうこの差を調べたいってことであればControl.Textへの代入を挟むと、本来調べたいヵ所が誤差に収斂してしまって調査不可能になるって結論だろ そしてStopwatchクラスで順次調査すると順番によって速度が変わるなんてことは往々にしてあるから必ずしも「AもBも同じだけ遅くなる」とは限らないってこともちゃんと指摘してる >>114 >本来質問者が意図してたであろうこの差を調べたい ああ、そもそもの食い違いはそこか 別にお前の指摘内容を個別にみれば間違ってるとは言わんが インスタンス生成の速度みたいとか勝手な想像でしかないな 本来の質問者のベンチの意図は不明なんだがな インスタンスの生成の差を見たかったのか、ローカル変数とクラス変数の速度差をみたかったのか 違う要因で速度計測してて最終的にあのコードまで落ちたのか 結果として予想と違うけど原因は何かって質問だぜ 質問した意図はボトルネックなコードは避けたいって話だったし なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。 C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
元の質問者はもうこの流れ見て逃げてるかもしらんけど、 計測方法自体が間違ってると色々な人を混乱に陥れるので、 これからは、本当に計測したい部分以外の余計な要素を全て排除して 正しい方法で測って欲しいと思うw
ワイだの草だの言ってんのみると、まとめキッズが大量に流入してきてるしな
顧客の意図を汲んで問題を分析して解を出す速度もこの業界では重要スキルだからこれからも精進したまえ
昔わざと炎上させて残業代を狙うやつがいて非常に厄介だった
非同期処理について質問なんですけど、taskを受け取ってその状態を見て処理が終わってるかどうかチェックして…みたいな感じじゃないですか 例えば通常の関数だったら、戻り値を受け取るのは呼び出した関数の処理が終わって、そこで初めてですよね でも非同期だと処理終わってないのに戻り値が渡されちゃうって認識でいいですか?そして渡されたあとも進行状況に応じて変化し続けると
>>125 処理が終わっているかどうかのチェックなんかしない Taskを受け取ったら、Taskに対して「完了後に次に実行したい処理」を登録する そして完了後に次の処理を呼び出すのはTaskを返す側の責任であり、受け取った側は気にしない 次の処理が登録された時点で既にTaskが完了していれば次の処理がすぐ呼ばれるかもしれないし、数秒後かもしれない 非同期処理とはそういうもの >>125 > 非同期だと処理終わってないのに戻り値が渡されちゃうって認識でいいですか? 非同期メソッドを呼んで戻ってきてるのは戻り値を戻す処理を実行してるTask<TResult>であって、 その時点で戻り値が渡されている訳ではないよ。 Taskが終了した時点でResultに結果が格納されるが、 普通はTaskを直接弄ったりせず、awaitで待って結果を受け取る。 >>非同期メソッドを呼んで戻ってきてるのは戻り値を戻す処理を実行してるTask<TResult>であって、 ここと >>その時点で戻り値が渡されている訳ではないよ。 ここのつながりがよくわからないのです 1行目でTask<TResult>型の戻り値が戻ってますよね それなのに戻り値が渡されていないというのはどういうことでしょうか あとiscompletedプロパティで終了しているかを判断するのは一般的ではないのですか?
>>128 Taskは作業管理機であって結果ではない task.Resultをして初めて結果を取り出せる task.Resultを呼び出す前に作業が完了していれば即戻り値を得られるし、そうじゃないなら内部でwhile (!isComplited) Sleep(1);みたいな事をして作業が終わるまで待機した後に得られる 「作業が終わっていたら結果を貰う、そうじゃなければ別の事をする」っていうシーンに限りIsComplitedで確認する(Resultを使うと終わるまで強制的に待機させられるため) 大抵の場合は「Task投げる→他の事する→Task結果を受け取る」って言う一本道なのでIsComplitedをせずにResultでそのまま貰うことが多い >>128 今はtask.IsCompltedやtask.Resultを直接参照することはあまりないな var result = await Task; みたいにawaitで待ちと返り値の取り出しを行う >>128 値は確かに返っている、がタスクであってズバリ結果じゃないよね ハンドルとかのイメージが湧かないなら…注文番号だけ返すみたいな >iscompleted 使う機会がない訳ではないが、自前でノンブロッキングを書くと面倒くさいし 大抵は完了したら何をするって感じで、awaitやContinueWithを使うと思うよ 待つなら同期でいいと思うんですが、awaitするメリットってなんですか? 他のことが出来るって言われても、他のことが非同期にやらせてる処理に 影響が出るような事象や処理だったらどうするんですか?
同期で待つとスレッドプールが占有されるからやめろ 複数のタスクから同時に読み書きアクセスされるリソースがあるならロックをかけて排他制御しろ
あとネイティブアプリでUIスレッド上で同期で待つと全てが固まるからやめろ
>>132 良くあるのはGUIのボタンを押したら時間がかかる処理をやらせる場合 同期処理だとその間GUIが固まって、ウィンドウを移動したり出来なくなる 非同期処理なら処置中もGUIが動ける 排他制御等で影響が出ないようにするのはプログラマーの仕事 C10K 問題は20世紀に提起された話題で、現代も問題になるかわかたない。 実際、開発者であるあなたのパソコンでは数千のスレッドが在り、ハンドルに至っては数十万あると思う。 それで問題なく動いている。 非同期は広告の宣伝文句かもしれない。
>>132 ついでに言うと、UIコンポーネントはUIスレッドしか触るなという制約がある awaitは非同期待機だけでなく既定なら元コンテキストへ戻るという意味も含む 同タスク内でやるとアクセス違反、経過もIProgressなど同期コンテキストが必要 ContinueWithの後続処理としてもタスクスケジューラを渡してやらなければならない >>136 GUIはイベント駆動だし、Taskの乱発はC10Kのスレッド作りすぎに近づいていくが…?問題ねぇよってプロパガンダ? >>132 > 他のことが出来るって言われても、他のことが非同期にやらせてる処理に > 影響が出るような事象や処理だったらどうするんですか? 魔法じゃないんだからそんなのは何を使ってもどうしようもないだろ 影響出ないケースなんていくらでもあって例えばネットワークとディスク(最近はSSDだからストレージか)の各々からデータを読んでからそれらのデータを処理して表示するなんて時にシリアルにやるより 1. ネットワークから読み出し開始 2. ストレージから読み出し開始 3. 1. と 2. の終了を待つ 4. 読み出したデータを処理して表示 ってやった方が早い可能性があるってこと 横からの質問ですが、デスクトップアプリならなんとなく理解はできてるつもりですが、ウェブアプリだと、複数のユーザからの処理をサーバ上のアプリが処理していく際に、同期処理で重たいのが動いている場合にほかのユーザまでまたされるということがありますか? アクセス単位で別々にスレッド処理されてるから、メソッドを同期非同期するのはあくまでもその単一ユーザの処理の中で考えれば良いですかね? それとも、他のユーザも待たされるから基本的には非同期で作っていくものですか? ちなみに、winformからblazor移行の勉強中です
>>139 同時アクセスしてるユーザー数>Webサーバが用意してるスレッド数の上限 だと待たされることがある これがC10K(クライアント10000台)問題 なので対策としてDBアクセスみたいなI/O待ちみたいなときにスレッドを占有せずいったんリリースさせようと考えて async/awaitの仕組みが生まれた Blazorはアーリーアダプタが一瞬遊んだくらいで消えた もう誰も使ってないよ
スレッド型非同期は時代遅れ シングルスレッド非同期こそナウ
>>141 ありがとうございます ということは、スレッドが枯渇しない限りは同期処理でほかのユーザは待たされることはないと。 プログラム上で主に考えるのは、ユーザ単位で同期で良いのか非同期にするべきか考えれば良く、ただ、規模やサーバの負担を考えるときには、非同期によりスレッドの占有は抑えられて効率よくスレッドが使われていくから、非同期処理を実装するメリットまたは必要があるという理解で合ってますか? >>144 それで合ってる ぶっちゃけBlazorなんてお遊びの許されるちょっとした社内システムくらいでしか使わないんだからスレッドの消費なんて全く気にしなくてOK Blazor Serverなら尚更 極論すると、絶対にWebサーバでスレッド枯渇することがないって分かってるなら async/awaitなんか使わないほうがパフォーマンスが良い なので、万一本当にスレッドが枯渇したときに サーバに処理余力があるにもかかわらずリクエストが処理できなくてレスポンスが致命的に悪化してもよければ 非同期の仕組みなんかまったく使わなくてよいし 現にVS2010以前はその前提のWebアプリしか構築できなかった
>>145 ありがとうございます なかなかピンとくる記事に当たらなかったのですっきり疑問がとけました 国内のサードパーティー製のモジュールとか対応しだしてたりYouTubeなんかだと結構英語の解説とか多いので向こうでは多少使われてるのかなと思ったんですが、先は厳しそうですね、、、 本業でなくC#好きで触ってる自分にとっては一番作りやすいのではありますが データベースのこと考慮しなくていいんか? 重い処理は非同期で別スレッドに投げなくていいんか?
CPUバウンドな処理だとスレッド枯渇しなくても他のユーザーが待たされる I/Oバウンドな処理でもDB側で何らかの競合が発生すれば待たされる スレッドが枯渇しなくても数が増えると該当スレッドにCPUリソースが割り当てられるまでの時間が当然増えるから処理完了までの時間は長くなる 短い時間で終わる単純なI/Oバウンドな処理のみでピーク時/オフピーク時のリクエスト数が十分に少なくて省リソースよりもプログラムの簡潔さを優先するような場合なら同期処理を選ぶ
サーバーアプリでCPUバウンドな処理なら非同期より同期で実装 フロントのサーバーを呼び出す箇所で非同期にする
>>148 Winアプリと違って、Webサーバーというのは基本的にレスポンスを返すまでスレッドをブロックしていいアーキテクチャなんだよ 例外としてNode.jsのようなシングルスレッドなサーバーもあるが、少なくともASP.NET(無印もCoreも)はそうではない ローディングアニメーションを出すような場合は、処理を開始するAPIと進捗をチェックするAPIを分けてAjaxでポーリングするように作ったりすることもあるが、 その場合でもリクエスト単位では同期でいい >>144 は?単位時間あたり、仮に3分として CPUリソースをトータルで食い尽くしたら足りない分と次の3分はどうなると考えてるの? >>153 そうならないようにインスタンスの台数を増やすだけだね 同期だろうが非同期だろうが変わらん >>155 何が言いたいのか知らんが、同期だろうが非同期だろうがCPUを100%使っている状況なら普通はWebならまずは水平分散する Webでは一般にインスタンスの数を増やすだけでスケールするような作りになっていることが大前提として最重要であり、個別の最適化はその次だ webは知らんけど 最近ようわからんのにスレッド立てまくる奴が作ったプログラムがこんな動作だね 正直まずいレベルで下手っぴだと思う c#の言語仕様のせいで
「こんな動作」とかフワフワした用語でマウント取りに来るなら自分のブログとかでやってくれ ここは「初心者」スレ
何言ってるかわからんと思ってたら他の人もそうだったので安心した
インターフェースのメンバーを呼び出す時には実装を確認すべきなのでしょうか それとも 定義元のインターフェースへのキャスト必須ですか (例) class MyList : IList<int> { int IContainer<int> Count { get; } ... ... }
ドットが抜けてました int IContainer<int>.Count { get; }
ぐちゃぐちゃですみません int ICollection<int>.Count { get; }
聞きたいことがよく分からない 「実装を確認する」というのがどういう行為なのか そのMyListを実装する側の話なのか使用する側の話なのか 例が単にインターフェイスの明示的実装を書いてるだけでどこが疑問点か読み取れない
>>167 var mylist = new MyList(); var c0 = mylist.Count; // build error // MyList は IList<int> : ICollection<int> をもつので var c1 = ((ICollection<int>)mylist).Count; // MListでint ICollection<int>.Count { get; } という memberをもつので var c2 = ((ICollection<int>)mylist).Count; c1は 万能 IList.Count って public int Count { get } じゃなかったっけ。 ((ICollection<int>)mylist).Count; が出来るのは、別途 ICollection.Count が実装されているからじゃないの。
>>169 , >>170 var array = new int[]{1,2,3}; var c0 = array.Count; // build error var collection = (ICollection<int>)array; var c1 = collection.Count; // ok オマエ、きちんと日本語で他人に伝わるように説明する気ないの? ,前に書いたのに誤りがあるように見えないんだけど。
攻撃的なレスは誰も得しない >>172 前に書いたのってのは170のことで合ってる? Countプロパティを定義してるのはICollection<T> IList<T>はそれを継承してるだけ だから ((ICollection<T>)array).Count で正しく取れるし ((IList<T>)array).Count と全く同じ意味になる https://ufcpp.net/study/csharp/oo_interface.html?p=4#usage インターフェースの実装は public int Count{get{...}} のようにpublicで公開するのが普通。 MyList mylist; mylist.Count; のようにアクセスするのがまずいなら int IContainer<int>.Count {get{...}} のように隠すこともできる。 インターフェイスとしてしか使わないなら MyList mylist; IContainer<int> c1=mylist; c1.Count; のようにアクセスする方法もある >>175 MyListでのインターフェイスの明示的実装の結果, 隠蔽されてしまうということですか 了解しました SOLID原則のDの依存性逆転の原則がイマイチ分かりにくいんですが 上位は下位に依存してはならないって説明は何をもって上位と下位になるんですか? 依存の意味はインスタンス化したらもう依存したことになるって事でいいんですよね? では上位と下位の意味は具体的にどういう基準で区分されるのですか?
>>177 処理の呼び出し階層 決済モジュールが中で銀行引落モジュールとカード決済モジュールを呼んでいるなら、決済モジュールが上位で他は相対的に下位 フォームアプリのListViewで水平スクロールをボタンに連携して動かすことって 出来るでしょうか? HScrollVarの値を設定できれば実現できるのでしょうが、そういう情報が見つからず。 よろしくお願いします。
どのようにやれば出来るのか、取っ掛かりを頂きたいです!
DataGridView.HorizontalScrollingOffset はreadonly
忘れたけどListviewはスクロールいじれないからスクロールオフにして ドックして自動でスクロールバーが出る状態にしてそれを操作したような気がする
よくわからんものはスクロールバー付きのパネルの子として移動させる方が簡単だな
ListView、水平スクロール、ボタンに連携 俺頭悪いから何させたいのかわからない
"xxx.zip .exe" みたいなファイルみたいに 水平スクロールを大量に行うと右端のあたりにボタンがあって そこで本来あるべき機能が動き出すようなプログラムを作りたい
>>189 ダブルクリックでは本来あるべき機能は動かないんだ? LVM_SCROLLをSendMessageすればいいみたいな事が書いてある
凝ったことやりたかったらFormsを捨てることから検討したほうが良いのでは? アレは単純なUIを手早く作る用途に適しているけど、複雑なものを始めるとどうにもならなくなる
>ListView、水平スクロール、ボタンに連携 >俺頭悪いから何させたいのかわからない 高解像度のPCだとListViewのスクロールバーが小さいので、スクロールバーは捨てて ボタンを1回押すとちょうちょいスクロールするものを作りたかったです。 プロパティでスクロールを動かす量を設定出来たら実現できるかなと思い。 ListViewのスクロールを捨てて、デカくしたスクロールバーコントローラで パネル内のListViewのスクロールも試してみたいと思います。
>>193 ListViewの部分だけWPF使ったら? WinFormsでカスタムコントロールって手間かかりすぎて敬遠されるんよ 高解像度用にフォント大きくしたり、ボタンにアイコン画像つけたり、とかも 出来なくはないけどさ、そんなくだらない苦労背負うよりWPFで解決した方が早いっていう
高解像度のPCがどうたらって WinFormsのDPIスケーリング対応機能を有効にするんじゃ駄目なのかな
タブレットだと高DPIだとWPFだろうがwinformだろうが表示される要素がそこそこ大きくなって 操作しにくい ボタンなどが縦に10個並べてあったとしてタブレットで表示すると下のほうが押せない
GUI設計者が状況に応じて複数のレイアウトを用意するしかないけど それじゃあGUIフレームワークの自動レイアウトの仕組みがあまり意味がない
コンパイル時に文字列変数へアプリのバージョンを埋め込む方法を教えてください FileVersionInfo ver = FileVersionInfo.GetVersionInfo( System.Reflection.Assembly.GetExecutingAssembly().Location ); だとWindows上で動かすと取得できますが、Linux上だと例外になります。 代替案として、コンパイル時に外部ファイルから読み込んでしまおうと考えたのですが方法が分かりません asp.net core6のWebアプリなので、プロジェクトファイル(.csproj)のPropertyGroupのFileVersionから取得したいです
Linuxってファイルにバージョンみたいなメタデータ持たせてんだっけ AssemblyオブジェクトからGetCustomAttribute<AssemblyFileVersionAttribute>()すればいいんじゃない GetExecutingAssembly()が失敗するならtypeof(適当なクラス).Assemblyで
>>199 コンテンツが表示し切れなかったらスクロールするようにしとけば grepとかした時に、static変数と、staticメソッドの見分けが簡単につかないのは言語的に欠陥だと思ってるんだけど、皆さんどう思います?
Visual Studio内で完結するからgrep要らないだろ Visual Studioなきゃ何もできない言語って意味では欠陥だらけだが
static 変数 private static int _count = 0; static メソッド internal static void Call()
C#だとこのように簡単に見分けがつくけど一体どの言語の話をしてるんだろうか?
変数は名詞でメソッドは動詞にするのが一般的なのでreadみたいな一部の単語を除けば言語によらず問題にならんだろう リーダブルコードとか読んできてよ 初心者なら
internal とか void とか判別しやすい例出して、判別できるじゃんと言われてもなぁ
>>212 ガチ馬鹿なのかな?これでも見分けつかんか? static 変数 static int _count = 0; static メソッド static void Call() 間違えた static 変数 static int _count = 0; static メソッド static int Call()
新興言語では、急激にOOPとの結びつきが弱まっていて、代わりに特別な指向を持っていてさ そっちを学習した後にOOPベースの言語に戻ってくると、ほんと感覚が狂う
>>218 static変数か関数か区別できないって相当おかしいけど >>212 話を続けたいなら、逆にどの言語のgrep-abilityが理想的だと感じるか教えてくれんか 何を求めてるかはっきりしないから、括弧の有無で分かるだろタワケ以上の回答は得られないように思う >>220 そういや、大文字か小文字かってのもちょっと狂うね まあそんな表面的な違いは大したことはないんだけど vb.netとc#はセットでコードを載せてるwebサイト多いから同じ言語だな
文の書き方に違いがあるだけで、使ってる語句は同じだ。
c#はc++を発展させた言語であるかのように欺いたvbである。
C# も VB.NET も .NET を人向けにプログラム言語にしたもの
いずれC#も廃れるだろうが、みんなVBおじさんみたいにはならんようにしような
実際、c#って人気ないからな 人気はあるのかもしれないが使われていない 大規模システムはほぼJavaだし 簡単なWinFormくらいだろう 有名なシステムでこれといってc#が使われているということを聞いたことがない
wwww まぁ、Unityが無ければそこまで覚えたいと思えるものではないかもな 今だとWindowsアプリ作ったりする人も減ってるだろうし サーバーサイドでの採用率も低そうだし
それなりに使われてるが どうせ下請け孫請けなので 守秘義務で外に出て来ないだけ
C#で作成したライブラリを他者に使われないようにする方法はありますか? 難読化しても呼び出すクラスやメソッドが分かれば、利用する事ができてしまうものでしょうか?
難読化ってどこまでやってくれんだろうね 引数の数もメソッド名もぐちゃぐちゃにするなら、不可能では無いにせよ現実的に難しいと思うけど
クラス名や引数そのままなら、普通に推測は出来てしまうと思う どうしてもってなら、アクティベーションみたいなネットワーク認証しないと使えない仕組み入れるしかない
>>238 難読化でライブラリの中のコードが見れないように出来ても、公開しているものを隠すのは無理じゃないか 仮に隠せたら、自分でも利用できないってことに >>239 自分のソフトを自分で逆コンパイルしてみればわかるよ >>238 具体的に環境(.NET Core、.NET Framework、Unity…)や制限したい部分にも依るかねぇ? 外部からの参照方法によってはクラスやメソッド名まで変えられはしないだろうし 単にクラスライブラリとして露出させたくなければ共有プロジェクトにする方法も有るけど Frameworkの単体EXEへ出来ればMatcode comPRESSerでも簡易的にデコンパイル阻止とか netshrinkとかはDLLもバインドできて…難読化だけよりこういった包括的パッカー向き? いずれにしても解析を完全阻止するのは不可能であるから、どこら辺を及第点とするか もう見られたくない処理だけc++で書いてモジュールキックとかでいいんじゃないかな?
>>241 そですよね >>243 のような方法か.NET7のネイティブコンパイラに期待するか、 >>240 , 244のように.NET以外で何らかの認証をするくらいしかないようですね >>245 もう10年以上そう言われてるが一向にJavaがオワコンにならずc#がオワコンしてる 未だにJava3位なんだな 今どこで使われてんの JavaパイセンはもうCOBOLの域に入ってるやろ
サーバーサイド C#も今ではほとんどがサーバーサイド
10年前はともかくOracleの有料化のインパクトはでかかったからな 新規案件は壊滅したわ
トラブル繰り返してる某みずほ金融なんかは Java ? COBOL ?
金融とかの規模で言語統一なんて無理やろ メインフレームは減ったらしいけど、サーバーなんかは数百以上の規模であるんやないか?
同一規格のサーバーで数千台展開したあとに不具合見つかってどうしようもなくなった某国営企業とかあったから あまり統一しまくってもいいことないよ
YouTube で有名な雑食系エンジニア・KENTA の、 月千円の初心者向けRuby on Rails サロンには、日本6位の3千人が入っている。 (1位は、キングコング西野の数万人) そのKENTAの天敵が、SES のモロー 2年前のモローの主張は、KENTAがRailsを勧める理由は、 ポートフォリオ制作を長引かせて、サロンで儲けるためであり、 Railsはオワコンで、転職には、PHP, Java を推奨していた 【2022年版】Ruby on Railsの将来性 ところが、モローのYouTube のこの動画では、 日本ではRailsが主流なので、Railsのキャリア相談などをやっているw PHP, JavaのSES案件は、どうなったの?w
winformsってまだまだ現役なの?いろんな現場行くとあれもこれもwinformsでせめてwpf使おうぜ……って思うんですが そもそもデスクトップアプリってもう死に体じゃないんですかね。そんな仕事まだいっぱいある気がする
君がWPFの開発手法を広めればいいんじゃないかな 業務用アプリだと見た目大してこだわらないとこ多いし 慣れてる人多いWinFormでってなりがち
個人開発で自分一人で作るなら何使っても構わんけど 会社だと引継ぎも考えないといけないから中々そうもいかん 新しい技術導入しようとするなら、現状よりメリットあるのを上に説明して 軌道乗るまで全部自分が面倒見るくらいの気概がないとやれない
新しく入ってきたメンバーがFormsしか使ったことがないとかそもそもC#知らないとか そういうのがないわけではないし、そういう場合は教育するわな。
pant.net はform で作られている。後は判るな?
画面レイアウトが崩れないのは本当に大きい というかUIをXMLの形で読めるという最大のメリットがある
WPFはネイティブコンパイルできれば化けると思う はよせい
でもMS製のMSIX Packaging ToolはWPFだし
Winformsに母屋を取られた人が最近も誰かに発泡酒してたからね
>>264 Winformと比較しての話だけど、 コントロールを何でも入れ子にできる リサイズに追従したUIが簡単 UIの見た目のカスタマイズが簡単 高dpiモニタ対応が簡単 gitで管理しやすい あたりがメリットかと 逆にこれらがいらないならWinformでもいい WPFの欠点は素だと面倒臭すぎるから 何らかのツールキットを使う事になる点 で、どれを使うのという争いが始まる
WinUI 3のこともたまには思い出してあげてくださいね
高dpi対応とかってフレームワーク変える程の事なの
>>283 WinformからWPFのことなら、フレームワーク変えるまでもない お互いに入れ子にできるしな webviewとかになると別にC#で作る必要無いんだよねぇ・・・
>>284 でもWPFて専用ツール要るんでしょ? winformの一部だけWPFにしてる例って示せる? WPFってUI部分をxamlで書いて中身をC#って感じだからWinFormから簡単に以降できるでしょ…
>>288 専用ツールは必要ないよ 例はelementhostでググるといろいろ出てくるよ winformならdatasetで決まりだけど wpfなら何使えばいい?
datasetが使いたいのならwpfででも使ったらいいんでないの? なにをききたいんかよく分らん
現場入ったらDAOなるSQL文字列や接続処理を大量にぶちこんだ数千行の巨大クラス経由でデータベースにアクセスするシステムだったんですがこれはC#でも普通のことなんでしょうか 検索したらjavaの例ばっかだったのであまり一般的ではないのかなと。もしそうならC#ではどういうふうにするのが一般的ですか?
>>296 RepositoryをEntity Framework使って実装するのが一般的だと思う 各リポジトリは数千行とかには普通ならない >>296 現場の設計者がアホなだけ 自分で読んでみてそのクラスの機能が必要充分か一回確認してみれば DataAdapter使ってORマッピングやバリデーションをベタ書きでやってれば1つの処理だけで数百行にはなるから 古いシステムならそこまで稀有な例ってわけでも無いと思う
あーやっぱり今はentity framewokですか。そっちは使ったことあったんですが 例えば1処理でかくなったら関数を抽出するとか、各処理の共通部分をやっぱり関数にまとめるとか、そういうことはしないもんなんですかね
>>301 普通はすると思うけど仕事だと下手に既存コード弄ってリスク増やしたくないんだろ テスト工数も増えるし SIの開発は一気に組み上げて一発動いたらあとは保守部隊に引き継いで終わりだから、継続的に手を入れていくようなことはそもそも想定されてないの また、初期開発は請負契約で運用保守は準委任契約である場合が多いため、 初期開発はなるべく手を抜いておいて負債を運用保守に押し付けたほうが儲かるという構造的な欠陥がある
ゲーム作ってんだけどテキストファイルで間に合ってるんだがSQLなんて本当に必要なの? なんかかっこいいから使ってるとしか思えん
もう全然DB使わなくなった 使い道が自分にはない jsonで大体事足りる
DB使わずに済むような規模のシステムだけ開発してりゃいいなら楽やろな
DBの役割を知らない馬鹿は別に使わなくていいと思うよw
Ruby on Rails では、100% データベースとActive Record と言う、O/R マッパーを使う
ふと思ったんですがC#なんかやっててもwindowsformとかの仕事が降ってくるばかりでいつまで経っても時代遅れな雰囲気から抜けられない感じですか? なんとなーくC#の案件が続いてその流れになっちゃってるんですが、なんか方向性を間違ったような気がします デスクトップアプリはもう斜陽なんて言われてるのにそんなことばかりやってる自分が嫌になっています
構造体は値型(スタック)なのでnewしてもGCは動かないので、 純粋にコンストラクタの初期化分のCPUコストがかかる認識でいいですよね?
>>317 ML.NET 使うような仕事にありつけないのは 本人の努力不足(`_´) マ板に行って傷口舐め合って来たまえ 言語に関わらず、個人事業者やそれに毛が生えた会社に来る仕事なんて限られてるんじゃないのか?
>>304 だよな。 俺は途中からパッケージ開発に移ったんだが長い人はいいんだけど 最近入ってくる人はだいたい作り逃げ前提の糞バグだらけで保守性皆無の ゴミコード量産されて本当に困ってる でもSIの開発で作り逃げしかやってこなかった人たちってこうなるの自然なんだよな コピペだろうが自分が理解していなかろうが作って逃げればあとは知らんという 逆に考えたらオリンピックレベルの技能と努力を強いられず 生活ができるなんて幸せじゃん 30歳で引退みたいなアスリートレベルの世界に行きたいですか?
医者なんて凡ミス誤診しても患者が死んじゃったりするから そんなに責任の重い仕事やりたいですか? そんな強メンタルなんですか?あなたたちは?
>>320 C#の問題じゃなくてSESにいることが問題だったか…… Windows のシステム自体がない 今のシステムは、Docker が100% で、DockerはLinuxだけの技術。 大手は、Kubernetes でオーケストレーションする 一応、AWS Lambda のデフォルト言語に、C#, PowerShell は採用されているけど、 これで開発する人は少なそう。 たぶん、可読性の高い、Ruby で書く香具師が多そう Java, Go, Node.js, Python, Ruby, C#, PowerShell Goも採用されているけど、PHPは採用されていない。 たぶん、PHPはコーダー扱いで、プロとはみなされていない Rust, Elixir も採用されていない
あわしろを召喚しちまうから、Linuxの話題はやめとけ。
>>323 SEなんて凡ミス埋バグしてもDATAが飛んじゃったりするから そんなに責任の重い仕事やりたいですか? そんな強メンタルなんですか?あなたたちは? 仕事は仕事として粛々とやりゃええやん やりたいことは趣味プログラミングで
YouTube で有名な雑食系エンジニア・KENTA のRuby on Rails サロンは月千円で、 日本6位の3千人が入っている。1位はキングコング西野の数万人 KENTAの天敵がSES のモローで、 2年前は、Railsはオワコンで、KENTAがRailsを勧めるのは、 ポートフォリオ制作で、サロンの滞在を長引かせて儲けるためで、 Java, PHP の方が稼げると勧めていた 【2022年版】Ruby on Railsの将来性 ところが最近の、YouTube のこの動画では、 Rails一色で、キャリア相談まで始めたw Java, PHPのSESは、どうなった?w 一方、KENTAはPHP, Scala をオワコン認定したから、 Laravel を使っているZOZO や、Scalaを使っているTwitter などは大変。 まともな開発者が集まらない
こういう同じ内容を何度もコピペするのって、電車の中で車掌さんのモノマネしてる人と同じようなものらしい
そんな表現せんでも知能ボーダーか発達だろうってことくらいわかるわ
仕事は仕事って割り切れる人強いなと思う。こんな長い時間かけるものがつまらないって辛いし、 やってることが有意義かどうか、将来性があるのかどうか、そういうこと全部考えちゃう。今どきC#でデスクトップアプリなんか作ってるともうね……いやC#という言語はバランス取れてて大好きなんだけど ウェブの話なんか見ててもjavascript全盛って感じでASP.NETの話題なんてぜんぜん出て来ないし
ウェブなんか金になんねーからやめとけって言ってるだろ
足が早い業界ってのはいいことばかりじゃないぞ ウェブ系ってのは1年後には使ってるライブラリがゴミになるから 設計やらドキュメントを書く能力ってのがつかない その環境で育つと今度大手から比較的しっかりしたアプリの改修依頼なんて請けても全く何の役にも立たずに終わる せっかく大きな仕事もらったのにね クソみたいなアプリをベンチャーで組み続けるのはオススメできない クソにいるとクソに染まる なぜ外注に出すか? そりゃ自社の社員にやらせたくねーゴミ仕事だからさおk?
お前のプログラムは 工場のロボットアームを動かすか? 病院の医療機器を動かすか? 空港の飛行機を飛ばすか? ダムの水門を開くか? 防災装置を動かすか? 街に警報を鳴らすか? 電車の運行管理をするか? 精密部品のレーザー加工ができるか? 半導体を作れるか? 本やお札を印刷するか? お前のプログラムは世界を動かしているか? こういう仕事に関われないと 結局世の中に必要ないってことなんだぜ それを忘れるなよ その現場では最新技術なんて使われてはいないんだ
言いたいことはわからんでもない 一時期は組み込みや制御系と比べて帳票出したり画面に明細表示するような仕事が同等とは思えなかった 最近は餅は餅屋だと割り切って目の前の仕事に集中するように切り替えたけど
>>335 について言えば 失礼だけど>>259 以降のレス見る限りIT土方続けたほうがいい人材に見える 今時DAOベースのシステムが普通かどうかとか質問してる時点でロクに勉強してないのが分かるし デスクトップアプリはどうたらぐちぐち言ってるが その状態でWeb系行ったところで誰でもできる仕事しか任してもらえず同じことにしかならんよ 面白い仕事がしたいならまず技術を身につけろ >>こういう仕事に関われないと >>結局世の中に必要ないってことなんだぜ なんという選民思考だ そもそも仕事として存在するなら誰かが必要としたってことだぞ
>>335 黙々と目の前の仕事こなして生活の金貰えてりゃそれでいいんじゃねーの? デスクトップアプリ作って金になるんならそれでいいだろ 現状に満足できないならここでうだうだ曖昧なこと言ってないでとっとと勉強して転職でもしろよ つまらない仕事が辛いってのは同意だけど今のお前に何が出来るの? >>308 DBにJSONを入れるんじゃないの?どゆこと? 保存先ってDBかファイルしかないと思うんだが Windowsは64bit版だしメモリも16GB積んでるしで、 5GB超えるファイルをメモリに一気読みしようと File.ReadAllBytesしたら2GB超えてるのでデカすぎると怒られました じゃあってんで、FileStreamでReadしようとしたら 引数にはint32しか使えないので、長さ指定で一気読みも 読み込み位置指定で分割読みもできません どうするのが正しいのでしょうか
2gb超えるファイル c# でググったらありそうだったよ
>>345 Readだけでやろうとしてるってことかな?longオフセットでSeekしてから2GBのintの範囲でちまちま読むだけだよ メモリマップを使う方法もあるがランタイムの実装の問題かWin32API程の速度は出ない 大本のWin32APIのReadFileがuintで読み取りバイト数を受け取るから一度には4GBまでしか読めないしね
>>345 バッファを1GB x 5とかにしてReadを繰り返せば? 1G以上を一気読みしてんの? 豪気だね 自分は小さなバッファでぐるぐるさせてるけどまあそれぞれやり方があるんだろうな
確かに C# read huge file で検索すればいくらでも見つかるわな ただし英語がわからない子にはつらいググるよね
>>317 WPFやろう winformとそんなに変わらん 345です 1GBずつ読み込むことにしました まだこんな制約が残っているのが意外でした
>>355 そうか、NTFSは4G越えると、undelete するすべが無い事を知っておののけw 1Gや5Gのファイルなんて直接丸々読んだことなんてないな winで32ビットだとプロセス当たりでユーザーが使えるメモリは全て含めて2Gまでだったからな DOSの頃だとは64KB壁があった windows3.1からwin95なっても開発環境が対応してなくてまだ壁があった それ以上のメモリを直接扱えなかったので64KBのブロックを配列でもってアクセスしてた C#のご先祖様delphi(16bit)も同じ
3行目から後ろは要らんよ 今となっては何の参考にもならん
自分が使う自分のプログラムなら自分のPCに合わせて大量メモリ好きなだけ使えばいい 自分の研究用とかならよくある話 ま、読み込み分割ぐらいバカでも書けるだろ 一般用として一般人に需要無いことを自覚してなおAPIの制限にけちをつけるのなら立派なマカーだ
そもそもC#って5ギガのbyte配列作れないよね Macは5GBのファイルをメモリに一気読みできるの?
記憶が正しければ「リード一回」は4GBが限界 確かNSInputStream.readがmaxLen引数をNSUIntegerで取ってたから NSDataには仕様上エクサバイトまで初期化と同時に読み込めた筈だが 内部ではbyte配列を束ねて確保してるだろうから、File.readAllBytesと比較するのはちょっとズレてると思う
ビッグデータとかに関わってるとそういうの頻出なのかしらん
ビッグデータはせいぜい数百MBくらいでファイルに分割して扱うから実はあまり関係なかったりする 分散処理を積極的に使う性質上、非常にインフラのトラブルを起こしやすいので、効率を犠牲にしても細かいノード依存の制約とか気にせずに大雑把に扱えるように設計する
google のアクセスデーターは塊で来るが、加工済みのを貰っているのかのぅ?
そんな面倒くさい事やるより 単純に手動でファイル分割すりゃ終わるんよ 俺はそうやって対応した
ギガ単位の一括読み込みが効率いいユースケースなんてある?
>>368 そもそも一括読み込みなんて無理な大きさの場合はデータごとにシーク位置のリストを作っておいて その都度シークして読み込む 大抵はこれで行ける 例えリアルタイムのゲームでもね >>368 全域へのランダムアクセスが必要なケース ソートなんかそうだな 事前に分割して各々ソートした上で最後にマージすることもできるけど、全部オンメモリに比べたら遅いよそりゃ 読み込んだ後だけ考えたらそりゃメモリに乗ってる方がいいだろうけど 読み込むところも含めればソートだってストレージから読みながら分割して並列処理した方が効率いいでしょ
手元にあるG単位のファイルって動画ぐらいだけど一気読みする利点はゼロ
>>370 常識的に考えるとインデックスをソートするだろうな それとも5Gのインデックスなんだろうか? そもそも5Gを一気読みって指示してもOSは適当なサイズに分割して読み込むんだからあんまり意味ない
入力バッファーのサイズはOSで変えられるんじゃなかったっけ? でも5Gかあ どっかのハードウエアが物理的に対応できない可能性はあるな
>>374 WindowsならOSレベルだと一気に読み込むことも可能 CreateFileでFILE_FLAG_NO_BUFFERINGを指定して開くことでカーネルの一時バッファを介さずにストレージ→プロセスのメモリにダイレクトでIO出来る メモリアラインメントとバッファサイズをファイルシステムのセクタの倍数にしないといけないから面倒だが >>378 バッファリングの話じゃないよ ディスクファイルってフラグメントもあるからドライバレベルでは分割されてるって話 >>379 うん、だから「OSレベルだと」と言った フラグメントが一切なくシーケンシャルに読み込める場合でも基本は一度カーネルのバッファが通される それを378で回避することも可能って話 >>380 だからOSレベルでも5Gなんて一気に読めないって Oracleみたいに専用のドライバ持ってるとかでないと無理 >>381 >>348 で4GBまでしか読めないことは説明してるし5GBを一気に読めると言いたいつもりではなかった カーネルのIOバッファ以上~4GB以下のサイズであれば>>374 が言うようにWindows的には内部で分割して複数回に渡ってIOを行ってる それをダイレクトに一気に行う方法もあるって話だけどまあ一般的には知る必要のない知識ではある >>382 結局分割してんじゃん 何がメリットだって言いたかったの? マジでわからん >>382 しつこいね、2GBとかでも専用ドライバでも作らないと一気に行くのは無理だって話だぞ バッファリングしないことと一気に行けるかどうかは別の話 >>383 FILE_FLAG_NO_BUFFERING知ってる俺すげー君なんだろうと思う そんな話は誰もしてないのにねw >>383 メリット無いと思うならそんなフラグ用意してるMSがバカってことでいいんじゃね 俺はメリットありまくりだと思うからMSがバカだとは思わんけどな 64bitOSのくせにsigned intのせいで2GB制限て何なのって思うよな 64bitseekしてちょい読みは32bitの頃もやってたし
>>389 引っ込みつかなくなってるだけでしょ そもそもFILE_FLAG_NO_BUFFERINGはOSのバッファリングを回避してアプリケーションで制御するためのフラグででかいデータを一気に読むためのフラグじゃ無いし >>390 だから5GBとか指定しても内部的には分割して読み書きしてるんだからあんま意味ない ガチでやるなら専用ドライバからやらないとダメだし まっバースト転送は他デバイス使えば切れるし C#スレで続ける内容としては終わりで良いんじゃね?
5ギガのbyte配列作れるようになってから再開しましょう
まだやりたいなら自分で試すなり別スレ立てるなりしろよ
C#関連でレスバトルが発生するとき、 そこにはZuishinがいるのだ
■Voicy、1,600を超えるチャンネルのうち、半数が収益化を実現。声の スポンサーなどの収益化プログラムを通じて、音声発信を収益の選択肢に。 株式会社Voicyが運営する音声プラットフォームVoicyでは1,600を 超えるチャンネルのうち約半数が収益化を実現、1ヶ月の収益が 800万円を超えるパーソナリティも生まれました。 クリエイターエコノミーという経済圏が期待されていますが、Voicyは声が 収益を得るひとつの選択肢となる土壌を整え、可能性を広げていきます。
>>397 古いわ 2年も前に更新が放棄されたようなライブラリを 使う奴は多分居ないな Xamarinが姫プで潰れたのにまだやってんのかすげーな
何年か前にMSのカンファレンスに行ったときはちょまどの祭り上げが酷くて、公式というのが信じられないレベルだったな MS本社のお偉いさんも引いてた さすがに昨今の時勢であれは問題になると思うが、まだやってんの?
旧統一教会の個人崇拝と変わらない気がするな 怖いな
途中で書き込んじまった・・・・・ C#のちょまど、RubyのYuguiみたいに、各言語で有名人が出てきたら盛り上がりそう 一昔前だったら新しいOS等が出るたびに二次元キャラクターが作られていたりしたけど、やっぱ時代は3Dだ
久しぶりにちょまど調べたら巨乳で美人になっててワロタ
アベマでニュース番組のMCとかやってるしもはや芸能人
>>377 その昔ReadFileで16 MiBytes読めなかった思い出 スレの上の方でその内容を書いたら辛辣な言葉を投げかけられた
Yuguiというのを初めて聞いたからググったけどうーんとなった ちょまどは胸でけーと思ってたのに水着画像出したらそんなでもなくてあれ?って
IPC通信をしたくて他所様のサイトをコピペしてプログラムの動作を見てみようと思ったのですが System.Runtime.Remoting.RemotingException: '型 'IPCクライアントコンソール.SampleRemoteObject, IPCクライアントコンソール, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' を読み込めません。' とエラーが出てしまいます。以下プログラムのどこが問題でしょうか?
文字数制限にかかったのでプログラムを分けました。よろしくお願いします。 ■サーバ class Program{ static void Main(string[] args){ IpcServer server = new IpcServer();} } class IpcServer{ public SampleRemoteObject remoteObject; public IpcServer(){ IpcServerChannel ipcChannel = new IpcServerChannel("ipcSample");// IPC Channel作成 ChannelServices.RegisterChannel(ipcChannel, true);// チャンネル登録 remoteObject = new SampleRemoteObject();// リモートオブジェクト生成 RemotingServices.Marshal(remoteObject, "test", typeof(SampleRemoteObject)); } } ■クライアント class Program{ static void Main(string[] args){ IpcClient client = new IpcClient();// クライアントオブジェクト生成 client.remoteObject.Command = Console.ReadLine();// 送信する文字列の入力 } } class IpcClient{ public SampleRemoteObject remoteObject; public IpcClient(){ IpcClientChannel channel = new IpcClientChannel();// クライアントチャンネル生成 ChannelServices.RegisterChannel(channel, true);// チャンネル登録 remoteObject = Activator.GetObject(typeof(SampleRemoteObject), "ipc://ipcSample/test") as SampleRemoteObject;// リモートオブジェクト取得 }} ■共通オブジェクト public class SampleRemoteObject : MarshalByRefObject{public string Command { get; set; }}
IPC通信はもう使わないほうがいい 多分誰も使ってない jsonとか投げたほうがまし もうサポート切られるだろう
.NET Remortingは.NET5以降で廃止されたから今更使っちゃダメ なおWCFも廃止され、MSの今の推奨はgRPC
でもプリインは.NET Framework4.8でしょ?
いまどき2029年とかまでサポートしてくれるんだもんな、偉いよMS
>>431 5以降は実行環境に.NETをインストールする必要がなくなったから関係ない アプリに.NETを同梱して配布するのが今のスタンダードであり、今後.NETの新バージョンがWindowsにプリインされることは恐らく無い どうでもいいから質問に答えてやれよ 俺は知識ないから無理
3.5のようには4系は切れないんじゃないかな 始めからcoreしかない環境ならともかく
サポートは切れないだろうけど、近いうちにオプション扱いになるだろうね
namespaceと名前空間の名前が似てて初心者分かりづらくなってると思うんだけどどう思う? 普通に名前空間はライブラリ名とかでよくね?と思ってるんだが
VSCodeはElectron VSCodeはMSスタック外のコミュニティから不信感を持たれないようにブランディングにかなり気を使ってるから、 一応クロスプラットフォーム対応だがWinファーストの印象を強く与えるWinUI採用はありえない Flutterとかなら将来的にはあるかもね
VScodeいいよね、今はVSも良くなったけど 最近ではwinでは1番人気と言われても異論ないやろ エンジニアの欲しい部分を攻めたいい製品だよ
C#だとVS一択でcodeは使用しないと思ってたんだけど使うの?
C#でもWeb開発ならVSCodeで十分いける 最近はフロントエンドの比重が大きくなってるから、自分の場合はVSCodeに寄せたほうが開発効率が高い
>>438 namespaceと名前空間って何か違うの? >>432 3.5も切ってくれれば喜んで4.8に移行するのにと 未だに2.0がメインの俺社 どうでもいいけど無駄に煽るやつ増えたよな、夏休みか
>>449 同じものだと思ってたんだけど、何が違うの? 文脈で違いのあるケースはある たとえば、namespace はキーワードだけど名前空間はキーワードじゃないとか ただ今暴れてるやつはただのアホだろ
C#に限らず初心者板には必ず中身のない煽りカスが枠からシカトでok
初心者だけどclassって1class1.csファイルで作ったほうがいいのかね? 今はmain.csに全部記入してるけど
その認識で問題ない 更にファイル名とクラス名を一致させとくとVSはファイル名変更したら自動でクラス名も変更してくれた気がする
もうIPC通信は使わないんですね。 教えて貰ったgRPCを調べてみます。ありがとうございます。
>>461 フォルダ階層とnamespaceも一致してないとだめなんじゃなかったっけ? namespaceだけ変えて試したけど自動で変更されたよ 仕様は知らんからまあ参考程度に
>>465 おぁ、ありがとう。勘違いだったかな。申し訳ない すみません。 上のplayListって変数を のコメントアウトしているplayListRight.ItemsSorceにぶち込みたいです。 あとplayListRight.ItemTempleteにも上のクラスのtempleteをブチコみたいです。 すみません最初の画像jpegで貼れていなかったので貼りなおします。 >>469 public string playList ってやるとMainクラスでも使えるようになるのですか? とりあえず要望を満たすだけなら、PlayListViewCenterクラスにPlayListプロパティを作ればよさそうに見えるが 根本的にはPlayListView()でプレイリストの読み込みまでやってるのは詰め込み過ぎだろう
>>472 最初Mainクラスのメソッドにしてたのですが長ったらしいなと感じてクラスにそのメソッド入れたのですがそのままMainクラスのメソッドとして入れておいたほうが無難でしょうか? >>473 一つのクラスであれもこれもやろうとしない そのへんの考え方の詳細は単一責任の原則でググってくれ プロパティを追加すると言っていましたがこのような形でよいのでしょうか? PlayListViewメソッドのplayListをPlayListプロパティに入れる方法がわかりません、、、
すみません。画像上げ忘れました。 ぱっとみ誰かが作ったものをメンテしてるみたいだが、 せっかく綺麗なソースもこうやって素人にズタズタにされていくんよなぁ
いくら初心者スレとはいえ、プロパティへの代入方法を聞かれるとは… >>478 メンテってよりはどっかのサンプルを切り貼りしてるだけっぽくみえね? PlayListViewCenterとPlayListView()とplayListRightの関係性がよくわからん 依存関係が整理されてないとこのレベルでも簡単にスパゲッティ化するのね
最初フォームにコントールを貼り付けていった。 ああ、コントロールの数が多くなってきたのでタブ化したい。 それでタブコントロールをフォームに貼り付けて以前のコントロールを 切り取ってタブに貼り付けてもだめでした。 簡単な設定変更でできるもんでしょうか?
プロパティは俺も最初よく分からんかったな 俺より先に入社してきてまだプロパティのgetじゃなくてgetter関数作ってる奴もいるけれど
サンプル切り貼りしただけですね。 xamlのListViewにx:NameとしてplayListRightをいれていてそいつにアンドロイドからのファイルのフォルダー一覧を表示させたいってことなんですけど、、、 いろいろ試してみましたが無理そうです。無難にPlayListViewメソッドをMainClassにいれます、、、
どうやってPlayListプロパティにPlayListView関数のplayList変数を入れるとか全く検討がつかないのですがどうやれば良いのでしょうか?
public ObservableCollection<PlayFile> PlayList { get; private set; }; プロパティの宣言をこうしておいてPlayListViewの最後で this.PlayList = playList; を入れたら期待通りの結果にはなる
>>487 できました。 ありがとうございます。 メソッド内でプロパティ名に変数を渡せばよいのですね。 View/ViewModel/Modelあたりの分離が出来てないのとWPFは関係なくね?
MSMQを念頭に置いているとはいえAMQPとかでも普通に実装できそうだからCoreに移植されても全然おかしくないだろうけど、戦略的な除外だろう MS的にはAzure Service Busを推したいところだから代替はないかとMSに相談してきた客をAzureへ誘導できるし、 似たようなものをAWSとかでセルフホストできてしまう選択肢は積極的に潰しておきたかったんだろうね
>>499 WinformやWPF並みの完成度と、開発環境が整えられれば流行る可能性はある 今のWinUI3はまだそれらがない Visual Studioを使わずにテキストエディタで書いているのですが、 WebView2はどのように宣言すればいいのでしょう? ネットで拾ったソースコードをそのまま使おうとすると、 System.ComponentModel.ISupportInitalizeが参照されていないアセンブリで定義されていますとか、 webView2はコンテキスト内に存在しませんといったエラーが出てしまいます。 using Microsoft.Web.WebView2.Core;でエラーは出ないので、 dllの参照は上手く行っているようなのですが。
.NET Framework向けか.NET(Core)向けかWinFormsかWPFかも分からんけど 自分で解決できないならまだテキストエディタで済ます段階ではないので 素直にVS使おう
>>504 使えない状況なのでテキストエディタで書いています。 すみません、自己解決しました。 dllが足りなかっただけでした。
>>481 それでできるはずだと思うけど、どうだめだったの? 各コントロールの設定が消えてしまったのなら、そういうもの。 設定を消したくなければ、一旦フォームをぐわっと拡げて、 既存のコントロールとタブコントロールを同時に表示するようにして ドラッグして移動させると設定は消えないけど、そういうことじゃない? 複数個所から参照されているクラスのインスタンスがあります。 このインスタンスへの参照を全てnullにする機能はC#にありますか? もしあるようでしたら、方法を教えて頂けると助かります。
>>508 パッと思いつく限りだとclassでラップするっていう原始的方法くらいしか思い浮かばない 弱参照使うか オブザーバー使ってそれぞれ更新するかかな 他にもやり方あるだろうけど達成したい目的次第
>>507 下記がオブジェクト参照がオブジェクト インスタンスに設定されていませんとか出て すぐにできないんだなとおもってユーザーコントロールにはっつけてやり直してました。 Controls[$"textBox{i}"].Text = sb.ToString(); エラーのところコメント化して動くかみるとああ、基本的にフォームに貼り付けたものひっぱってくるだけで動くんですね。 ありがとう。 >>512 まずそのゴミプログラム方法をやめろ どこの誰がそんな糞みたいなやり方を教えたんだ? -1万点だぞ Controls[$"textBox{i}"]ってのあかんの? 便利やなと思ってたけど
設定より規約という言葉もあることだし、ちゃんと管理できてるならいいと思うよ 手で配列作ったりするのはミスの原因になるからむしろダメ
名前でひっぱって来るって相当な富豪プログラミングだな 恥かしい名前付けてたらばれるやん
そういやjavaだとクラス名の文字列からクラス生成できたっけな
名前でアクセスするようにしてると、リファクタリングした時に死ぬ
できるできないじゃない やるかやられるかだといつも言ってるだろ
複数のプロジェクトにわたるクラスをライブラリ化って厳しいんですかね?
複数のプロジェクトで使用するクラスだからこそライブラリにするんじゃないのか?
ライブラリの作り方が判らんって話? ・クラスライブラリのプロジェクト作る ・プロジェクトにライブラリにしたいソースぶち込む ・他プロジェクトからDLL、またはライブラリのプロジェクトを参照する みたいな感じ
目的は何なん? ライブラリ化なんかして複数プロジェクトなんかで呼んじゃうと 影響範囲もそれなりだからね あーソースコピってビルドしておきゃよかったなんてよくある話だよ
複数のDLLで構成されたライブラリになるだけで普通に作れると思うけど
>>531 コピっていい事なんて殆どないだろ そういう感じのソースがそこら中のプロジェクトに散らばって亜種だらけになった現場悲惨だったぞ レベルの低い現場あるあるやね コピーしちゃえば少なくとも今動いてるコードは壊れないからね ただ>>533 の言う通り亜種だらけになって共通不良の対策で地獄を見るんだけどね xamarin用のクラスなんだけどPLCっていう共通部分のクラスとiOS,Android用のクラスがいる これ使うときって各プラットフォームにそれぞれのDLLファイル入れて参照しとけば良いって感じなんかな?
>>536 ライブラリを作るよりもリンクのほうがいいんですかね? 可搬性悪くなるからやめたほうがいい 素直にライブラリプロジェクト作れ
Caseの中で作った変数を他のCaseで使ったりするにはどうすれば良いでしょうか? 今xamarinのドラッグ操作で最初にタップした位置を取得しドラッグ中に位置を取得したとき最初のタップした位置と現在のドラッグしてる位置を引くとタップした位置からの変化量が出ると言うようなプログラミングを組んでます Switch Case1 タップしたとき A=タップしたときの位置 break Case2 ドラッグしたとき B=ドラッグした際の位置 C=A-B break としてます A,B,C,の変数は別クラスでプロパティ化してます
>>538 とりあえずライブラリ化してみます iOSやAndroidで必要なクラスは別でライブラリ名.iOSやライブラリ名.Androidで別で作って各プラットフォームにそのdllファイルを参照すれば良いですかね? リンクでやっといて困ったらライブラリ作れよ バージョン毎の機能を管理できるならライブラリだけど 今の用途はリンクで十分なんだろ?
>>542 置かれてる状況次第 その環境でライブラリのバージョン管理をしない文化=常に最新をとってこいと言われるならリンクのがいいし バージョンいくつはねーって仲間内で共有できる文化があるならライブラリにしなきゃあかんし 1人開発ではライブラリのメリットはほぼないね >>543 個人開発は利点ないんですねサンクス リンクにします ソースファイルをリンクするってことは最新のソースコピペってことだろうか ライブラリを修正したら参照してるプロジェクト全部ビルドする必要あるってことだよね…
ところでCase内の変数を呼び出すことってできるのでしょうか? >>539 の方法でやると何故かタップしたときのAはCase1ではきちんと動くのですが Case2内のAは0のままです リンクでやるとパス変わっただけで使えなくなるからなぁ 絶対名前変えたり動かしたりしないってのなら大丈夫だろうけど 本当に個人開発でしか使えない
質問の意図もイマイチ分からんしどんな実装しているのか分からんけど 過去の結果はどこかで保存してなきゃそりゃ参照できる訳無いよなw
>>546 プロパティのコピーをいじくり回してるに一票 タップしたタイミングで正常な座標がちゃんと別クラスのプロパティAに格納されているかまずは確認しろ >>548 case内で保存した変数を使おうとしたら未割り当てのローカル変数が使用されましたになって使えないのですが… >>539 そもそもswitchの使い方がおかしい ・最初にタップした位置の取得 ・ドラッグ中の位置の取得 ・タップした位置からの変化量の算出 それぞれ別関数(イベントハンドラ)でやるべき >>549 Case1内でAの値を表示するプログラムを作るとちゃんとAの値が表示されます これをCase2に持ち込むとプロパティなら0になり、変数なら未割り当てのローカル変数が使用されましたになります >>552 Case1内でAの値じゃなくプロパティの値を表示しろ てか他クラスのプロパティならhoge.Aって書くよな? なんでhoge.省略してんの? >>550 まぁ、何で失敗しているかは何となく分かるw どこかにその部分のコードを上げてくれないと正確には指摘出来ないが どうしても解決出来ないなら別のクラスにpublic static クラス名 Aとかで宣言して クラス名.Aとかでやれば嫌でも保存出来るよw >>533 共通化することに意義がある場合とない場合両方あると思うがな。 単に似たようなものを使いまわしたいだけで将来的に同じ仕様であり続ける必要がない場合とか。 >>554 hoge.Aって書いてますよ Case1内でもhoge.Aの値を表示するようにするとちゃんとその値が表示されました じゃあここに書いてないタイミングでhoge.Aが0に書き換わる処理が入ってるか そもそもhogeが構造体でコピーされてましたとかじゃね なんにせよ現時点の情報だけじゃ断定しようがない
>>555 すみませんお願いします 実装部 プロパティのクラス プロパティのクラスはdsと省略してます すみませんCase2でds.prAngleを使ってる部分が抜け落ちてました 色々試してたので これをやってもCase2内のds.prAngleは0のままです そりゃタッチアクション発生するたびにDiscScratch生成してたらそうなるわな
>>561 つまりクラスの呼び出しを外に出せばよかったってことですか ありがとうございます 初心者にしても酷すぎるし、初心者だから何しても良いわけでない そもそもしつこい
なるほど ではこのあたりのことについて書いてある教本でおすすめとかありますか?
>>573 このサイト作るところからってことですかね html学ばないといけない WinFormsのScrollBar.Scrollイベントでスクロールが実行されたことは拾えるんですが、 スクロール開始直前のスクロール位置によって処理を変えたいんですが、「今からScrollするよ」っていうイベントってどうやって拾えるんでしょうか?
>>576 そんなイベントが拾えるわけがないのでスクロールの度にスクロール位置を記録しておいてそれをスクロール前の位置としろ スクロールバーにどうにかマウスオーバーなイベントつけて、 タッチパッドやマウスの真ん中ボタンにセンサーつけて、 カーソルボタンやエンドボタンとかもイベント挟んで、、、
ScrollEventArgsのOldValueでよくね?
WinForms触らないから知らないんだけどScrollBarにdelta的なプロパティ無いの?
こういう人が言っている事って意味不明過ぎるんだよねw スクロール開始直前ってどういうタイミングなんだよw 動かなきゃそもそも分からんだろw
Window.ClosingイベントとWindow.Closedイベントみたいなのもあるから気持ちは分からんでもない
つーかScrollBarクラスのドキュメントのイベント一通り読めば、どういうイベントあるか判るだろうに
>>576 Scrollイベント内でScrollBar.Valueで拾えそうだけどどう? ASP.NET Core MVCのモデルバインドについて質問です スキャフォールディングでコントローラーとビューを自動生成しています。 生成されたコントローラーを見るとバインドするプロパティをBindAttributeを使って文字列で指定しているようなのですが、Razor PagesのBindPropertiesAttributeのようにもっとスマートに指定する方法は無いのでしょうか
>>576 具体的にやりたいことを書けばいいのに スクロールのバーが下の方にあるときにスクロールを始めると 猫のアニメーション 上の方にあるときは 犬のアニメーション を始めたいです どうやったらいいでしょうか? 的な? UIフレームワークによっては 自作しなくても最初から「いまからスクロールはじまるよ~」ってイベントがあったりするんだよ
スクロール関連のWindowsメッセージでは無理だな
>>591 自分でスクロールの状態管理をして 状態に応じたイベントを発火すればいい スクロール開始の定義って難しいんだよね ▽ボタン連打してさらに途中からボタン押しっぱなしにしたとき 一体どのタイミングが開始なのか、とか つまみのドラッグだけならScrollEventArgsのTypeを見ればいいんだけど
keyはno->down->releaseの瞬間?
>>593 トラッキング、ホイール、PageUpDownとかもあるしな 自前できちんとやろうとすると面倒くさそう >>587 ですが自己解決 MS Docsのチュートリアルに詳しく書いてありました 最近、stringのnullチェックがうるさくなったなぁ Visual Studioで警告出まくる nullの扱いなんてプログラマの裁量()に任せてほしいよな
csproj開いてnullable enableを消すと静かになるよ
警告抑止とnullable disableは根本的に違う対処法だぞ
ASPやWPFでC#でアプリ作ろうと思ったらやっぱりHTMLなど知識は必要なんでしょうか...
>>604 WPFはHTMLの知識は必要ないよ ASPは必要だけど、始める分には知らなくてもいい C#は制御系ではまあまあ人気あるから、ハード寄りのIEEEの調査では高く出やすいだろうね
C#が上位にいるのはUnityのお陰じゃないかと ASP.NETとかMS系の仕事だと今でも使っているのだろうけど
まあ今時サーバーでもクライアントでもデータベース使ってるのは珍しくないから必然的にSQLの順位は上がるわな HTML/CSS もそうだけどプログラム言語の範疇に入れるのはどうかと思うが
>>609 >>610 言いたいことは分かるがそれを言ったらPythonの1位も怪しくなるからな 研究職とか事務職を合わせた上での1位だろうし >>611 > 研究職とか事務職を合わせた上での1位だろうし 意味わからん、それは別におかしくないだろ 何にでも向いてるがWindowsアプリを作るならC#が最適解だからWindowsで制御するなら必然的にC#が第一候補だな
>>613 プログラミングに不慣れな電気回路屋さんが検証用のアプリをWinFormsで頑張って作ってたりするよ WindowsでGUIアプリを比較的お手軽に作れるのが受けてるだけで、特別制御向きってことはないかな 市販のデジタルI/OデバイスにC#のライブラリが付属してたりとかはあるけど >>613 制御系で一括りに語ってる人はあまり良くわかってない人だから無視していいかと int型a, b, cをフィールドに持つ構造体の配列が与えられた時、 int型配列に直接変換できるLINQメソッドはありますか? 例として要素数4の上記配列が与えられた場合、要素数12のint配列に変換したい。 ([a, b, c, a, b, c, a, b, c, a, b, c]てな感じ)
>>617 [StructLayout(LayoutKind.Sequential)] struct A { public int a, b, c; } var arr = new A[4]; var integers = MemoryMarshal.CreateSpan(ref arr[0].a, arr.Length * sizeof(A) / sizeof(int)); そういえばPack = 4もつけないと64bitだとズレるかもしれない [StructLayout(LayoutKind.Sequential, Pack = 4)] LINQでは無理でunsafeな方法しかない
後出しで申し訳ないんですが、変換するフィールドを(順番も)指定できるとありがたいです。 ([a, c, b, a, c, b, a, c, b, a, c, b]とか[c, a, c, a, c, a, c, a]みたいに) .Select(x => new int[]{x.a, x.c})的な書き方が出来ると理想ですが流石に無いですかね。
そういえばLinqで普通に出来そうだな Linq使わない統一連合教徒だから俺には答えられないが
array.SelectMany(x => new[] { x.a, x.c }).ToArray(); でいいんじゃね
>>622 まさにそれです! 回答くださった方々どうもありがとうございます。 これで行数を1行減らすことができます。 こんなことをここで聞かないとわからないような奴は分かりやすいコードを書けよ 自分の力で考えられないようなコードを書くな
最初からLINQでって言ってるのにトンチンカンな解答してる奴もいるし、動物園レベルだなw
>>622 みたいなのって元の配列の順序通りに出るの保証されてるのだっけ? 最初の質問は、「int型配列に直接変換」だからな それはLINQでは出来ない(コピーが発生する)ので >>618 の時点では回答は間違ってないんだよ >>620 で後付けで順番指定とか言い出したから、結果的にLINQで良くなっただけ >>613 GC言語だから向いてはいない が、生産性が高いから、ある程度の遅延が許される案件なら悪くない >>630 GCはメモリが不足しないと発生しないからメモリを大量に使わないなら大丈夫 クラスの代わりに構造体を使うなりGC.Collectを適切な位置に挟むなりして抑制することもできる 今時メモリが不足することもないけどあってもこれで大概どうにかなるな >>629 まぁ最初はフィールド順固定みたいな雰囲気だったから「なら解釈変えるだけで良くね?」と思ってああ答えたがその都度順序指定したいなら無理だったな SelectManyでの連結で1要素毎に不要なゴミが発生するのは教義的に許されないので超ハイパフォーマンス厨二バージョン作ってみたぜ fixed (A* p = &arr[0]) for (A* iter = p, end = iter + arr.Length; iter != end; ++iter) Sse2.Store((int*)iter, Sse2.Shuffle(Sse41.LoadDquVector128((int*)iter), 0b11011000/*a,c,b*/)); //store先を新規配列にするなりご自由に
>>635 そのゴミが中でnewされてる配列のことならスタックにそのサイズのメモリが確保されてるだけだから次のループで消えてるぞ メモリ操作をオプティマイズしても速度は大して改善しない こんな無駄なことに知恵を絞るより表示とディスクI/Oと通信を如何に減らすかを検討するべきだね
>>637 LINQは最新.NETでも相変わらずアロケーション酷いから毎度ヒープにnewされてる スタックだと呼び出し元関数にnew[] { x.a, x.c }を渡せないからね >>639 ほんとか? SelectManyもそこから呼び出されるラムダ式も呼び出し元に返すのはIEnumerator<int>なのに配列保持する必要ないだろ .NETの最適化は中間言語実行時にされるから確かめるのはなかなか難しいけど
C#では普通に配列をNewするとヒープ使う アロケーション抑えるためにようやく ArrayPool, stackalloc, Span<T>等が整備されてきた
>>640 IEnumerator<int>なんだから配列保持しなくてもいいけど保持してもいい 実装はこちらに任せられてて上記のコードだと配列を選択してる訳だからそうなる yield利用したら配列は必要なくなるけどイテレーター生成で結局アロケーションかかるのは有名な話なのでフィールド数が少ないなら配列生成したほうがマシではある 最近のC#開発陣の方向性からしたら効率的なコードに変換してくれそうなもんだけどLINQは大昔の物なのでそんな最適化はかからない いや、配列である必要はないがどんな実装をしようと必ずヒープアロケーションは発生する 仮に構造体を使って実装したとしても IEnumerable<T> にキャストした時点でボックス化が発生するからな
>>606 すまん今更だがこの記事C#をC言語の仲間だと思ってないか? Spectrum(IEEE会員の好み)ランキングで1位に輝いたのはPythonで、2位のCが僅差で続いています。Cを含むC言語は全体的に人気が高く、Cと3位のC++、4位のC#を足すとPythonを大きく上回っています。 > 5位のJavaと7位のJavaScriptも同様に人気があり なんて書くようなライターだしな 言語名で判断してるのがよくわかるw
人気があるという意味で一括りにしたと好意的に捉えても 「Cを含むC言語」は謎すぎるな…C#も足すな GIGAZINEクオリティと思ったら、原文からしてそんなんだった
Windowsのデスクトップソフトを作りたくてC#の勉強をはじめたばかりです。 教えて下さい。 私は大昔、学校でVisualBasic6というのをさわったことがあるのですが、記憶では フォームの作成やその上にボタンを作って設置するのは、ぜんぶマウスだけでできて、 まさに「Visual」だったんですが、今はまた逆行してしまい、フォームひとつ作るのもぜんぶ 文字を書かなくてはならなくなったんでしょうか?VisualStudioというソフトをインストールしたのですが、 ぜんぜんVisualではないみたいなんですが。画面が黒くできたりしてかっこよくなってるから そういう意味でVisualが凝ってるということなんでしょうか? もしかしてインストールするものが間違ってるのか、C#にもいろいろな種類があるのか、とまどっています。 よろしくお願いいたします。
ポトペタがやりたければ「Windows フォーム」でプロジェクトを作成してください
>>649 VisualStudioであってるけどプロジェクト作成時のテンプレートでWinForms(.NET Framework)選んだ? コンソールアプリケーションで開始するとデフォルトではGUIプログラミングはできないよ >>650-653 みなさま、ご親切にありがとうございます!! プロジェクトの作成からやり直したらできたみたいです! もう一つだけ教えて下さい。 私はこのたびの勉強開始にあたって、独習C#第五版というのを購入しました。 最新だとアマゾンに出ていたからです。C#が2月頃にバージョンアップしたそうで、その最新版に対応している本は まだ少ないとのことでこれを選びました。 教えていただきたいのですが、明日また大きい書店に行って、Visualっぽくできるだけマウスでwindowsソフトを作る 参考になるような書籍を買ってきたいのですが、去年以前の刊行のものでもだいじょうぶでしょうか? 私のような初心者なら、最新バージョンに対応した本でなくても問題ないといいのですが。いかがでしょうか? >>654 Winformsなんて古い技術の新しい書籍なんか探しても無いんじゃね >>654 だいたい機能拡張だからその本に書いてあることが使えないってのは無い nullableの設定だけ気を付けないといけないかもな
>>656 逆に新刊はWinformsの書籍ばかり >>654 まず図書館に行って見よう そこに希望する本があるかもしれないから .net6用のwinformsデザイナがいまだにクソですぐ落ちる
.Net6のWinFormsデザイナで カスタムコントロールを追加するとエラーが出るんですが
.NET5以降のフォームデザイナは作り直された奴で全然枯れてないからな WinFormsやるなら.NET Framework安定だと思う
interface経由で継承先のstaticメソッドを呼び出したいのですが何か方法はありますか? 用途としては、インスタンスがnullの場合等に継承先のデフォルト値を呼び出す、というものです。 public interface I{ static int Num {get;} } public class A : I{ public static int Num => 1234; } public class B : I{ public static int Num => 5678; } public class Sample{ public void DoSomething(I hoge){ if(hoge is null) Console.WriteLine(I.Num); // 1234 or 5678 を表示したい } } C#11のinterfaceにstatic abstract、static virtualという機能があり 試してみましたがそれらの機能では実現出来ませんでした。 また、ループ中での処理を想定しているため、リフレクションは可能な限り避けたいです。
皆様ありがとうございます。 図書館、書店とはしごしてみます。
C#11触ってないから憶測で書くけど public void DoSomething<T>(T hoge) where T : I { にしたらうまくいきそうな気がする
>>667 nullなのに継承先もクソもない コードありきではなく、何の情報に基づいてどのような結果が欲しいのか、自分の頭で仕様を整理せよ >>667 staticやめればいいのでは 何かできない理由がおありで? こういうの書いてるのだいたいUnityやってるやつというイメージ
すみません、勘違いしていたようで 根本的に別の方法で自己解決しました。
C#は各言語の中では一番日本語Web情報充実してるから本なんて必要ないとしか思えないんだけどな
でもまあ、技術系ブログサイトとかはあんまり見ない方がいいだろうね 特に、スレッド、GC、謎の付け焼き刃策、デザインパターン、その辺が絡むものはやばいコードでごった返してるんじゃないかな
カオスなコードはC/C++のが氾濫してる印象 C#もobject多用してるやつは大概ヤバい
C#は業務系とゲーム系とWeb系が入り乱れていて個性的なコードが多い印象 Web系はわりと教科書的なコードを好む傾向だけど前2つは無茶苦茶
C#自体は嫌いでも無いしむしろ好きかも知れないけど コードが冗長になる傾向が強いというか これはjsとかでもそうだけど特に非同期だとぱっと見何やってるか分かりにくいコードが多いなぁ awaitやasyncとかで書けるからとかメソッドチェーンだからマシとか言うけどw
単一行でスクロールバーがないテキストボックスやリストボックスとかでマウスをホバーすると、 ツールチップだかが表示されて、テキストボックスと位置を完全に合わせてテキストの全文を表示してくれるやつをたまに見かけますが、 それと同じ事をやりたいです。 あれはツールチップだと同じ挙動にはならないっぽいのですが、ポップアップウィンドウで自力で描画してるんでしょうか。
知りたい事は.NETやgitとかでそういう便利ライブラリ的なのがあるなら教えてほしいです。 自力描画するしかないのであればがんばります。
全く言っている意味が通じない WPFなのかwinformsなのか どこに不満があるのかがわからない どういう具合で同じ事になっていないと言ってるのかも不明だから誰にも答えようがないし 既製のもので不満を感じるなら自作するのみ
>>682 InputMan(有料ライブラリ)で言うところのオーバーフローチップかな? Freeで似たようなものがあるかどうかは探したことないから知らん >>681 WinUI3だとこれでいける .xaml <TextBox x:Name="ele" Text="aaaaaaaaaaaaaaaa iiiiiiiiiiiiiiiiiii uuuuuuuuuuuuuuuuuuu eeeeeeeeeeeeeeeeeee" Width="100"> <ToolTipService.ToolTip> <ToolTip x:Name="tip"/> </ToolTipService.ToolTip> </TextBox> .cs public MainWindow() { this.InitializeComponent(); tip.Content = ele.Text; } >>686 WinUI3でのToopTipの注意点 ・折り返しを使う時は、MaxWidth="320"を必ず指定しないといけない 指定しないと折り返しをやってくれない ・ToolTipService.Placementで、ToolTipの相対的な出現位置を指定できる Visual Studio 2022でWindowsフォームを扱えるのはC#だけですか?
扱えるってのがフォームデザイナを使えるかって意味なら、VB.NETも使える GUIを自分でコーディングするなら、理論上はWindows上で.NETのライブラリが呼び出せる言語なら全て扱える デザイナ無しだと、面倒すぎてやってられんけど
681です。 >>683 WinFormです。環境を書く必要がありましたねすいません。 >>684 まさしくそれです。 名称がわからなかったので非常に助かりました。ありがとうございます。 ACCESSのようなローカルDBに接続する場合、ソフト起動してる間は繋ぎっぱなしにするほうがいいんでしょうか? それとも処理の度に接続切断を繰り返ししたほうがいいんでしょうか?
そんなのどうせ同時に一人しか使わないだろ? どっちでもいい。コネクションプール云々は複数人から同時に頻繁にリクエストがくるようなサーバーの話だ。 コネクションを共有する場合は毎回繋ぎ直すのに比べて正しく動かすために考慮すべきことが若干増えるから、 そんな質問をしているレベルなら毎回繋ぎ直したほうが無難。
>>691 accessのdbは繋ぎっぱなしにしていると壊れるってよく聞くな Accessがすでに業務上存在しちゃってて、ラクに処理とか自動化とかしたいからc#使うのかもしれん 知らんけど
むしろC#使わなくても楽に処理とか自動化するためのAccesなんじゃねーの? VBA抜いたらAccesに価値なんてないと思うがVBA使わないなら別のDBに移行すりゃいいんじゃないかなあ
>>697 明らかに広告のためのページだけど何をコメントしようとしたの? クラスファイルを自動生成してくれるgRPCを使おうとcsprojに下記の行を追記したら Systemの参照どころかStringすら全て見つかりませんと出てきました。 <ItemGroup> <Protobuf Include="Protos\test.proto" GrpcServices="Client" /> </ItemGroup> どのような原因が考えられるでしょうか?
つーか特別な理由が無ければ基本的に繋ぎっぱなしはしない Connectionオブジェクト都度Newしようが、プロバイダがコネクションプール管理してるからよろしくやってくれる
【火葬場】 ブースター接種でフル稼働 【葬儀株】 ://2chb.net/r/sousai/1651730253/l50 >>699 FormBorderStyle=FixedSingle と MaximizeBox=False だけで良くね?と。 Cシャープから10年以上離れてたけど今はforやforeachじゃなくLinq使うのが主流なんですか?
>>705 一時期入門したてのゆとりが増えてそう主張してたけど 最近は慣れてきたみたいでキレイに消えた 適材適所だと体感したらしい でも自然な範囲ならLinqのほうが見やすいわ まあforeachとパフォーマンスで取捨するのは変わらんし あまり凝った処理をLinqでやるのは不幸になりやすいと思ってるし、そも設計が()
Linq慣れとけばSQLもほんの少しだけ取っつきやすくなる
Linqをウォッチウィンドウに入れるとラムダ式はダメって怒られるんですがLinqのデバッグって皆さんどうやってますか?
Linqのメリット:処理がすっきりしていて見やすい、意味が明確 Linqのデメリット:Linqを知らないと何やってるかサパーリ 結論:Linqアンチは馬鹿
とある理由で128bit変数を使いたいと思います。 .NET7ではSystem.Numerics.Int128があるみたいですが、 .NET6以前では手はないでしょうか?
>>715 あざます。ゲームを作ってるのですがbit演算で使いたいのです 何故128bit変数を使いたいのか?理由が全く無い 普通にulongを2つで十分では?
状態が65個以上129個未満あるんだろ 少しは想像しろよ
で?wって感じだがw 頭が悪い初心者ならboolの配列にでもすればいいだろw
>>711 ピリオド毎に分解して、変数につっこんで どんなリストが返ってきているか見る、かなあ。 糞スコア用とかで単に桁の大きい数が欲しいだけなんじゃね BigIntegerとBitArrayでも使ってろ
プロパティの使い方(作り方)ですが 値の有効範囲が決まっていて、範囲外の入力があったときに 例外とか出さずに勝手に範囲内に修正するのは問題ないでしょうか?
お前さんが仕様を作る立場なら問題無いんじゃないか。 文句言われたら「by design」。
>>722 的はずれな煽りしかできずに挙げ句自演認定して必死に草生やしてる哀れなやつ 馬鹿は勝手に傷口広げるから楽でいいな >>726 ものにもよるんだろうけど一般的には渡された値を変換するようなビジネスルールは setterに入れずに別のメソッドを作るか別のレイヤーで処理したほうがいいと思う setterに入れるとクラスを使う側が分かりにくくなし役割分担の線引きが難しくなるから >>719 有難う!まさにこれです。 ulong2つでもbool配列でもいいんですが、例えば多種多様なアイテムのパラメーターに使うので、変数一つに対してbit判定出来れば効率がいいんです。 普通に考えたら普通にメソッドで処理するんだからこだわる必要もないし 効率も関係ないよ そのうちわかるさ
初心者特有の自分の都合の良い仕組みがないと困る理論
>>714 標準のVector128<T>のソース真似れば良い 簡素化するとこんな感じ [StructLayout(LayoutKind.Sequential, Size = 16)] struct Vector128 { ulong _00, _01;} >>731 ビットフィールド利用するとクリティカルにメモリ使用量変わる事はあるけどな 数万個インスタンス生成しうるクラスで上限が決まってる値をビットに敷き詰めていくとメモリ使用量が1/4とかになったりする 例えば15以下と決まってるステータスは4bitで済むので1バイトに二つのステータスを持てる C#でこれをやるのはソースジェネレーター作ったりしないと面倒だが 車輪の再発明をせずに既存のものから最適を選べるかであるな 目的を最初に告げず詰まった手段だけ尋ねると大抵迂遠となる
>>736 効率求めてるみたいだからそういう意味で言ったらビットフィールドを超手軽に扱えるC++という既存のものを選択すべきではあるな 昨今はUnityでC#に縛られてる奴も多いだろうけど 「こういうことできない?」って質問に「できない」って回答をすっ飛ばして「なんでそんなの必要なの」と 質問で返す人は昔から多いけどなんなんだろうね。 「できない」って回答することに心理的抵抗があったりするのかな。
できるできないじゃなくて、あんさんの考えてることはだいたい予想できるが他により良い方法があるから誰もやってなくて情報がないんだぜ、本当に必要な目標を話してみな、ということだろう 目的や目標を整理するだけで解決すること多いよ
>>741 「具体的な方法は批判が怖くて提示できないけど 初心者相手に上から目線でマウント取って悦に浸りたいやつ」は大体そういう返しする 無能の特徴 できる、って答えたあと「結局やめてこっちにしました」ってなるのがわかるからやろ
>>739 質問した者だけど、勿論c++は昔から使ってますよー。その流れでc#でも出来ないかなって質問でした。 .NET 6.0なのはmonogameにチャレンジしてます。 ueもunityも経験はありますよー。 皆さん回答有難う!勉強になりました! >>743 たいていそこにコミュニケーションエラーがあるように見える。 ようは質問者が質問したことは実現できないか遠回りになるだろうということなんだろうけど それをはっきり書いていないから話がすれ違ってるという光景をよく見るな。 さらに回答者のその推測自体ズレていることも少なくない。 >>741 できないとだけ聞きたいのか 俺らはそれができないなら他にどういう方法があるかを考えてどうにかするわけだが 「なぜそれをしたいの?」ってのは他の方法がある時に聞くのでそこで「質問を質問で返すな」とのたまう無能だったら切るだけですわ >俺らはそれができないなら他にどういう方法があるかを考えてどうにかするわけだが そこで「できない」ってのを共有したうえで次の話に進めるなら普通の会話なんだけどなあ
そういうのを避けるのも含めて初めから一連の目的を、という事だね。もう名称が付いちゃうくらい有り触れたパターンだから まず目的を話す、でこういう手法にしたい・してみたが、出来なかった・どうすればいいか・もっと上手いやり方はないか、というのが筋 質問者が悪いという訳ではないが、すっ飛んでるというならまずそれがすっ飛んでいるのだ、ディスコミュニケーションの発端はそこ
いちいち余計な世話焼かずに聞かれたことだけ端的に答えりゃいいと思うんだが 質問者だってアホじゃないんだから他手段の相談ならそう書くだろ
WhatやHowだけでなくWhyを共有すればWin-Winになれる ユーザー相手に要件定義を多くこなすと嫌でも分かる 技術的な質問でも同じでWhyのコンテキストを予め提供することて欲しい回答が得られる確率が飛躍的に上がる
でもアホな質問者のほうが多いのは今まででわかってるやろ
>>754 >質問者が悪いという訳ではないが、すっ飛んでるというならまずそれがすっ飛んでいるのだ、ディスコミュニケーションの発端はそこ このへんの意識がやっぱり理由なのかね。 コミュニケーションを成立させようという意欲はなくて、話が飛ぶ原因が相手にあるならそれで仕方がないと。 >>753 言わなきゃわからんところが無能だってんだよ 答える方は答えられるから仕事できる お前はそんなだから勝手にばかにされたと邪推して腹を立てるばかりで何も進まない この違いよ teratail ひどい とかで検索掛けると出てくる記事っぽいね。
つまり「その質問の答は知らないけど別の方法で解決できるかもしれないからその目的を教えろ」ってことかね。 で、元の質問には答えられないと自分からは言いたくないと。 なんか腑に落ちた。
>>759 双方にあると思うけどね、解決したい側からまず要件を整えるのがやはり道理ではなかろうか それは質問者の責任というより解決したいのは質問者であり何かを成すならば自身の行動から 回答者の察しが悪いとか、聞いた事に答えてくれとだけ叫んだりしても、問題は解決しないよ 極端な話「(天ぷら油火災を消したいから)水は有りませんか?」だったら渡さないでしょう 単にそれだけを言われたら状況次第では「飲める水が欲しいの?」と質問で返されるのも必至 まぁ貴方の文脈では「飲めない水ならある」の返事が抜けてるとかを仰りたいのだろうけども 対面では状況から読み取れることもネット上では中々難しい、歩み寄れというなら同意するが 回答者がどういう意図であろうとも問題が解決しなければ穿った見方をした所でなという感じ >>764 できないことを知ってるから他の方法を探すわけでな それができるのがパワハラじじいでできないのがお前ら無能で給料に数倍の差が出るわけだ そろそろ何もできないくせに態度だけでかい新人とるのやめてくんないかなマジで なんで教えてもらう方が上から物を言うんだよ お前の仕事全部こっちにやらせる気かよ 教育係いるんだからわかんないことあったらそいつに聞けよ
しかし、なぜこうも気持ちに余裕がないのが多いのだろうね 反論されただけで悪態つくとか、これではまるで幼い聞かん坊だ 会話は不可能だろう
>>770 Z世代に楯突くとかいい度胸だな そういうのは氷河期に任せてやれ 相性抜群だから一ヶ月後には新人消えてるよ >>714 とかほんとよくいる若害そのもの 128ビット整数は無い じゃあ「無い」って答えりゃいいのか? 128ビット整数で何がしたいのか聞かれる前に説明しろよ若害 何がしたいのかわからんから「何がしたいの?」って聞いた時に>>741 みたいに「質問を質問で返すな」みたいなこと言う無能が多すぎる だからお前らはいつまで経っても仕事できないんだよ >>773 ども、714です .NET6でint128が使えるかどうかが知りたかったので、.NET6では無理という回答で十分です 別の記述方法で対応は可能ですが、使えるかどうか悶々としてたので 代替案を欲していた訳では無いのでとある理由と記載しています 質問に答えるのは損しかないからスルーでいいよ いつの間にかこんなやつばっかりになっちゃった
Int128はそのうちNugetでバックポート用のパッケージが提供されるかもね
どう動いてもハードでないわけだからクソ遅そうだけどね
やる気ゼロ、エミュレータが動いて終わりな予感するじゃん
>>780 eebb-JjaS は少し落ち着きなよ テンプレに「罵倒レスや酔っぱらいレスはやめてください」と書いてあるだろう 結局「ない」でよかったわけだ 毎度の場外乱闘ワロス
>>747 ほんそれ 100レスくらい消費した後の流れまで読める 質問テンプレート作るとか、建設的なことを提案できないものかね
質問テンプレを作ったとしても、馬鹿はそれを使わないし、使うように誘導しても逆ギレするだけである
>>785 スレの意義否定してるやつが何いってんの? ビット演算でフラグ管理はteratermのマクロでやったなー 結構完成図書もすっきりするんだよね
128bit型ができたところで、上位ビットと下位ビットの整合性をどう保つんだろう? 言語仕様に含めていいほどどんな使い方でも大丈夫なようにするなら、相当なコストが掛かって遅くなりそうな気がしてしまうが・・・・
できたところでも何も.NET 7で標準化される 当然ながらコードも公開されてるから.NET 6以前にバックポートしようと思えばできる 普通にソフトウェア実装だしUInt64を2つ使う github.com/dotnet/runtime/blob/main/src/libraries/System.Private.CoreLib/src/System/Int128.cs
>>793 ざっとみた感じ、ロック等はして無さそうか・・・・ 変数を利用したなんちゃってスレッドセーフみたいな、そう言う用途には使え無さそうか [Intrinsic]属性が付いてるってことは基本はxmmレジスタ利用して128bitいっぺんに書き換える方式だからnint以下と同様にスレッドセーフやで
Webview2を使ってブラウザの「名前をつけてページを保存」のように WEBページをローカルに保存したいのですが どうするのがベストですか?
>>796 レジスタに128bit入っても、128bitの演算命令なんて無いから無理だぞ 低解像度画像を高解像度にする機能ってどうやれば実装できますかね?
なんか調べたらAI使うらしいですがC#で実装できるなら嬉しいですね
>>802 高解像度にはなるでしょうが低解像度のときと写真の質は変わらないんじゃね?と思ってるのですが… >>800-801 OpenCvSharpでも使って、OpenCVのSuperResolutionモジュールを使えば >>799 128bitの演算命令はあるが inc [address]みたいにレジスタを介さず1命令でアトミックに参照カウンタを増減させるみたいなのは確かに不可能だな >>804 何この無能w 初心者スレで意地悪してると老害って言われるぞ いつかラッパーじゃないネイティブのOpenCVをC#で作ってみたいなぁ 何十年と掛かりそうだけど
MAUIってデザイナー画面ないのか Xamarinでも申し訳程度には存在してたけど
>>811 ネイティブコードとマネージドコードの違い判る? >>812 熟練者はホットリロードすらいらん なぜならどういうデザインになるかわかるから >>813 ,-、 ,.-、 ./:::::\ /::::::ヽ /::::::::::::;ゝ–──– 、._/::::::::::::::| /,.-‐””´ \:::::::::::| / ヽ、::::| / ヽ| l l .| ● | んーとね・・ l , , , ● l ` 、 (_人__丿 、、、 / `ー 、__ / /`”’ー‐‐──‐‐‐┬”'””´ ,-、 ,.-、 ./:::::\ /::::::ヽ /::::::::::::;ゝ–──– 、._/::::::::::::::| /,.-‐””´ \:::::::::::| / ヽ、::::| / ● ヽ| l , , , ● l .| (_人__丿 、、、 | わかんない l l ` 、 / `ー 、__ / /`”’ー‐‐──‐‐‐┬”'””´ 画像処理やりたいなら素直にC++でもやったほうがいいと思うけど マネージドメモリ縛りとかデメリットのが多くないか
>>808 無能だから初心者いびるしか出来ることないんだよ察してやれ 無能は聞かれたことだけに答えてもいびられたと感じるしそれ以上のことを答えようとしてもいじめられたと感じるんだな どんだけ卑屈なんだよ
無能の自覚があるからなんでもいじめととらえるやつが増えすぎてほんとにやりにくくなった 仕事しろって言っただけでいじめとかどんだけ甘やかされてんだよって言う
C・C++ライブラリの移植って、自動化出来んと元の物のバージョンアップに追従出来んからなぁ ラッパー作成なら自動化出来るツールあるけど、フルマネージドの移植はほぼ作り直しに近い
無能や馬鹿なら何を要求しても良いという免罪符ではない
ef coreもあれだな。 ちょっと複雑なSQL文にすると、すぐ変換できないだのめちゃくちゃなSQL文出力したりと完成度はイマイチ。 dapper最強か
ef core でも生SQL書けるからなんとかなるよ まあ自由度はDapper程無いけどマイグレーションは便利
Winformsで高DPIの対応ってどうすればいいんですか? マニフェストでボヤけ対応して、各フォー厶をオートスケールをDpiにして フォームやコントロールの大きさはAndroidみたいに%で対応できないんでしょうか? wpf使うしかない?
>>823 確かにマイグレーションは便利ね。 あるテーブルに4つくらいの各テーブルをグルーピングして外部結合するLinq to SQL書いたら、 この世のものとは思えないSQL出力しよった。最後にソート付け足したら、もう勘弁してくれみたいな例外吐いて動かなくなった。 外部結合の時に発生するnullとC#側のプリミティブ型の相性が悪い感じ 結局DBMS側にストアド書いたけどそのストアド叩くだけのlinqに落ち着いたけど、C#オンリーで開発ってのは難しいね 高DPIというかスケーリングの話だろう DPIの事は一旦忘れて拡大率と実際の座標調べて掛け算するだけ
>>826 それ、どの段階でエラーになったん? 個人的にはマイグレーションとかいらない機能だと思ってるが >>827 それは自分で計算しないといけないんですよね? スケーリング150%になったら、全てのコントロールサイズを1.5割って調整するしかないですかね? >>827 スケーリングじゃなく高dpiの話だと思うぞ winformsは物理ピクセル単位でサイズを決めるから高dpiに対応した設定にしないとフォントとのサイズ比や描画やら色々おかしくなる 調べたらそれらしい記事複数出てくるけどその辺はもう試したん? winformsに拘る理由内ならwpfでいいと思うが
>>831 それをいちいち掛け算するってことだろ そんな膨大な工数かけるなら、重要な部分だけWPFにする方が楽そうだ >>834 設定だけでやる奴は単純に拡大するだけだからボヤける 本当の意味での高DPI対応ではない >>837 検索すりゃすぐみつかるから、ってか公式に書いてあるからお前さんが教えてやってくれ >>829 どの段階って、普通にforeachで遅延実行時のエラー。 Can't translate to SQLみたいな感じだった 外部結合だけじゃなくて、SELECTする内容も複数カラムに渡ったCASE文だらけで linq文も30行くらいになってたから、作ってる段階から「ムリだろうなぁ」とは思ってた。 ef coreのマイグレ便利だよ。 プロジェクト初期に、DBが形になるまではコードファーストでテーブル作る。 プロジェクトメンバに配った後は差分パッチのSQL作るのもefでやってるし、C#のソースで差分管理できるから。 逆にマイグレ機能なかったらef core使う人いなくなってしまうのでは・・w 皆さんすいませんでした。 スケーリングと高Dpiがごっちゃになって質問してしまいました。 高Dpi対応はマニフェストに書き込むので対応してます。 スケーリング時にフォームやコントロールが画面外にいっちゃうのをなんとかしたいなと思って質問したんですが、やっぱWPFが良さそうですね
外に行っちゃうのも対応法が書いてある それでだめならAnchor使ってないんだろ
答えてんじゃん これで解決できないやつはいないだろさすがに
>>841 FormのAutoScaleModeプロパティをFontからDPIに変更した? 後、.NET Frameworkなのか.NET5以降のどっちで作ってるの。 .NET Frameworkの場合はスケーリング有効時にVSを起動すると100%のスケールで再起動するか聞いてくるけど、 それをやらずにFormのレイアウトを変更するとレイアウトが崩れて酷いことになる。 あ、そうか 親切そうな言葉で嘘を書くやつが多いということはすういうスレだったか すまんかった 俺も次からそうするわ
>>845 お前がはってやれよ 秒でみつかるからさあ >>847 あんまり詳しく聞くと質問を質問で返すなと言われるぞ 知識豊富な人はこのスレで答えてない感じね 何があったのか知らんけど俺が初心者だったころは教えてくれる人に噛みついたりしなかったなあ(老害感)
ググればわかることを聞くのはプログラミングの最能無い
捨てゼリフが言いたい人はそれぞれ言い終わった感じっすか それともまだ続いてる感じ?
なんで最近の若害って、けんか売りながら物を聞こうとするのかマジで不思議なんだけど、それって効率悪くない?
若い人でも聞くのが上手な人はいるけどそういう人はネットで聞かないのかなあ
>>847 ターゲットはFramework4.7.3です まだVS2017のままなので 各フォー厶は全てDpiにしてフォントはメイリョウUIに変えてます 色々試行錯誤してみます! 丁寧にお応えくださってありがとうございます! ここはお前の愚痴書くスレじゃないんだよ スルースキルなさすぎ
System.SpeechライブラリでSetOutputToDefaultAudioDevice関数を使ったのですが何故かエラーが出てしまいます .NET MAUIなのがダメなのでしょうか?
>>866 エラーはSystem.NullReferenceException:Object reference not set to an instance of an objectですね デフォルトのオーディオデバイスを取得できないという感じでしょうか それSetOutputToDefaultAudioDevice呼び出してるインスタンスがnullってるだけじゃないの?
>>868 デフォルトのデバイスが設定されてないってことですか? >>868 匂わせるだけで終わらず最後まで付き合ってやれよ 必要な情報を出さない癖にデフォルトどうこういう同じ質問を答えてもらえるまで繰り返すやつだが >>869 using System; using System.Speech.Synthesis; namespace SampleSynthesis { class Program { static void Main(string[] args) { using (var synth = new SpeechSynthesizer()) { synth.SetOutputToDefaultAudioDevice(); synth.Speak("This is sample text-to-speech output."); } Console.WriteLine(); Console.WriteLine("Press any key to exit..."); Console.ReadKey(); } } } これコピペして動くか? こっちはこっちでWindowsと決めうちしてるがMAUIはマルチプラットフォームで主にスマホ目的で使われるフレームワークだからな
てか、毎回言われる事だけど現象が発生する最小限のコードをどこかにあげろよ...
>>871 ダメですね… MAUIなんでデフォルトオーディオデバイスを検出できてないのかも知れません ダメですだけで結果どうなったのかを言わず自分の予想をしつこく繰り返すやつうちにもいるわ
こんな感じですね、、、 音声認識と音声合成を合わせたアプリを作成しようとしてて 音声認識の部分はQiitaに乗ってた奴をそのままコピペしつつ動かない部分を直して実装できました。 それでその認識した文字を音声合成で出力しようとして今にいたります。
まずはSetOutputToDefaultAudioDevice呼び出し時点でsynthがnullになってないかをデバッガで確認しろ MAUIは触ったこと無いからプラットフォーム側のバグなのかはしらんけど NullReferenceExceptionってのは実体の無い変数のメンバにアクセスしようとした時に出る例外だから speechの問題じゃない気がするんだが
フィールドでnewしてるからどこかでnullを代入してない限りsynthがnullは考えにくいわ 当てずっぽう言う前にOSとその例外がどこで発生してるのかをまず聞けよ あと一行目に#nullable enable入れたらその例外はだいたい防げる どこにも波線出ないのにその例外が出るならフレームワークの内部で出てる
>>880 #nullable enableを記入してみましたが変わりはありませんでした。 これってrateとかstateとかSetOutputToDefaultAudioDeviceを自分で決めて行くと治ったりしますかね?
うーん Reteを指定してもRateとのところで同じように例外吐かれました System.NullReferenceException: 'Object reference not set to an instance of an object.'
synthは問題ないんだな synth.GetInstalledVoices()でシステムにインスコ済みの合成音声一覧取得できるぽいから一回やってみ 俺の環境では2つ取れた もし一つも取れなかったらその端末に合成音声インスコしたら動くかもね
>>886 GetInstalledVoiceやってみましたがnullですね コンソールアプリ作って一回やってみます UTAU もいいよ 普通は MS Speech Engine voiceroid もいい
空のアプリケーションでサンプルコードコピペしたら動くようです .NET MAUIだからダメなのかも知れません…
インストールボイスで何をインストールするかって話ですよね 今回は試しなのでMS標準のやつにしてます
.NET MAUIではできませんでしたが他のプラットフォームではできると確定したため良かったと思います 付き合ってくれてありがとうございました
ちょっとした疑問なのですがC#を基本の開発言語にしてて金が無くてVSインストールできない会社ってなんのIDE使ってるのでしょうか?
sharpdevelop か vscode じゃね
そこまで金がないなら無料でvs使えるかもしれんなあ
communityはエンタープライズ企業は使っちゃいけないけどsohoはオッケーだから
Communityは委託元含めて年商一億まで 商用なら個人プロジェクトかスタートアップの完全自社開発でもない限りはほぼ確実にアウト
VS2013でWeb開発とかクソ過ぎてやってられないんで VSCode入れてNET6で開発してるぞ まあC#以外の開発で日常的にVSCode使ってるから不便はそんなに感じない、というか麻痺してる いまだにPHP5.6のお守りもさせられてるからそれよりはまだマシ
年商1億なんて20人以下の会社だぞ なかなか厳しいだろ
>>904 なんで1月45$×ライセンス数が払えないんだよw 基本はVSはちゃんとインストールしてるって思ってもいいのか
>>906 そうかまあ頑張れ 商売道具に金かけないから上に行けないんじゃないかと一度疑ってみたらどうかな ちょっとした内製ツール作る程度ならVSCodeで十分では 売り物にする製品作るならちゃんとVS買え
>>909 ん?おまえは払えない理由を知りたかったんじゃないのか? 俺はVS使ってるし、俺の持ってる会社でも使ってるぞ 突然妄想扱いとか意味わからん... 頭大丈夫か? おまえが知りたかったVS使わない会社の理由は固定費になるから うちが使えてる理由は無料対象になる規模だから 実体験だぜぃw
C#を使ってる職場に転職したいと思ってるのですが未経験でも転職できますか? 年齢は27です
X5kaはこのスレに常駐してるただのマウント煽りカスだからNG入れたほうがいいぞ
家で簡単なWPFアプリでも一個作ってWPFできますって言ったほうが転職しやすいんでない 未経験だと仕事にならないから自分も周りも辛いだけ つか他言語出来てC#未経験なのかプログラミング自体未経験なのかによっても全然話違う
>>913 年商1億を実体験してないから妄想だって言ってるんだろ なぜ俺が知りたいと思ったよ? 払えないわけねーだろ 余裕で払ってるわ >>923 なぜでしょうか? プログラミング未経験だと厳しいのですか? アプリは何個か作ってます >>924 自分が面接をする側だったら、そう言う人にどういう質問をするか考えてみたらいいと思う。 きちんと答えられる? > プログラミング自体未経験です > アプリは何個か作ってます 俺が面接官ならこの時点でお帰り頂く
プログラミングしないでアプリ作るとか、キントーンとかか?
多分プログラミングを業務として行った経験はないと言いたいんだろうと思う
27歳で未経験だと大抵のとこからNGくらうだろうから残された選択肢の中から選ぶと報酬も低くなる上に業務もきつくなりがち それを我慢するか幸運を信じて就職活動頑張るかだから転職できますかみたいな質問を他人にしてる時点でこりゃだめだと思われるわな できますかじゃなくするかしないか、するとしたらどこまで妥協できるかを自分で選ばなきゃどうにもならん
うちはギフハブ見せてくれたら経歴や学歴関係なく通すこともワンチャンだがある
>>929 日本語まともじゃない奴でプログラミング出来る奴見た事無い あ、 アプリは何個かダウンロードしてます が正しいです。
マジレスすると、中途って即戦力目当てで入れるから、 C#以外でもいいからプログラミング・開発関係の職務経歴ないと ブラックなとこ以外はほぼ弾かれると思うわ
経歴次第じゃないかなあ 特に自社サービス系は採用基準緩いとこも多いから、営業やってたとかで対人スキルあるなら可能性あるかも さすがにまともな社会人経験がないならブラックSESに飛び込んで案件ガチャで当たり引いて3年耐えるしかないね
githubで何か作ったもの公開したりして、開発意欲ありますアピールすりゃ多少アピールになると思うけど、そういうのもない場合ちょっときついな 会社に育てて欲しいとか思ってるならもうダメ 新卒と比較して何かアドバンテージある所見せれないと絶対無理
大工や船乗りになりたいなら未経験でも理解できるが 今やスマホやタブレット1台でもプログラミングできるし、 無料の初心者向けテキストや学習サービスがWebに山ほど転がってる時代だからな 誰でも勉強できる環境あるのになんでやってないの?って話にはなるよね
文系で未経験者の王道は、Ruby on Rails でポートフォリオを作って転職する。 ウェブ系は全言語で、Linux, Docker, AWS などが必須 YouTube で有名な雑食系エンジニア・KENTA の初心者向けRailsサロンとか、 RUNTEQ、東京フリーランスのデイトラなど 一方、Windows 系のC# は、Unity でゲーム開発。 3D, Quaternion・行列演算などが必須 これらは理系 だから、馬鹿な文系が稼ぐために皆、Railsへ行く。 算数しか使わないから
C#はある程度経験ない採用されないんですね .NET MAUIでこんなの作りましたけどやはり弱いですかね? どの程度のアプリを開発すれば入れてくれるのだろうか? VIDEO >>940 Selenium使わないメリットは? こんなの出されたら地雷臭感じて逆効果じゃね? 試しに面接受けてそれ見せたらワンチャン受かるんじゃね コードコピペしたとか文法理解してないとか言わなけりゃOK
>>941 Selenium使わないメリットはウェブドライバーをインストールさせなくていいということですかね 製品なのにわざわざウェブドライバーをインストールさせないといけないアプリは流石にだめでしょ… >>942 コピペはしてません 色んな所のサイトを参考にはしたけど プログラミング未経験っていうから全然出来ないのかと思ったわ 自分で調べて作ったのアピールすれば通るとこもあるんじゃね
>>946 そうなんですね プログラミング未経験っていうのは業務、学校でやったことないという意味です 今まで建築業だったのでずっと建築のことやってました C#で転職するならどんな会社が良いでしょうか? 具体的な名前を教えていただけると嬉しいです
ここでしてるみたいに未経験ですって言いながら作ったアプリ見せたらまあ落ちるだろうね 初っ端から嘘ついたらそりゃあ
じゃあなんと言えばいいでしょうか? できます!って言って専門的な質問されても答えられる自身がありません
独習C#なり解説サイトなりで一通り文法勉強してから受けりゃいいじゃん 初心者ならせめてそういうやる気見せないと中途は無謀
うだうだやるより動いたほうがいいよ しょうもなくても「へえ、xxヶ月でこんなにか」って思ってくれるとこもあるかもしれんし、 若いうちなら人柄のが重視されるやろ
>>950 個人的には簡単なアプリなら組んだことありますけど学校や会社の業務ではやったことありません って言えばいいだけだろ マジな話そんな事も相手に伝えられないような人は採用されたとしても色々辛いぞ 嘘でもいいから「ASP .Net Core MVCなら任せてください」ぐらいの勢いがあった方がいいんじゃないかな どうせ情報科学・技術の素養がないことは見抜かれるから、それがあまり関係してこない分野をチョロっと習得するしかない
だからこんなことを他人にそれもこんな所で聞かなきゃいけないような頭の人は無理
>>956 絶対無理 派遣ならワンチャンあるだろうが… YouTube で有名な雑食系エンジニア・KENTA も言ってるけど、 SES なら誰でも受かるので、Ruby on Rails みたいなポートフォリオも不要 ただし、しばらく勉強期間として、 家電量販店のバイトなどをやらされる できない香具師は、開発へ回してもらえない
まあ、いい加減スレ違いだな プログラミングの技術云々以前に、日本語が出来ないのでは話にならん >>914 から >>953 の内容が伝わると思うか? あと、こんな場所で会社紹介して貰えると思ってる時点で頭おかしい そもそも、ここC#のプログラミングに関するスレだから、職に関する事ならプログラマー板では? って思ってしまった
昔から〇〇の話題はマ板で、って言うのは良くあった >>961 が正解 .NET MAUIのための簡単なサンプルとしてポケモンバトルを作ってみたのですがたたかうボタンをクリックしたとき相手へのダメージをメッセージボックスに表示したあと数秒後に自分へのダメージを表示したいのですがどうすればいいでしょうか? Thread.Sleepを使ったらなにもされない状態で待たされ最後の自分へのダメージのみが表示されるだけでした… VIDEO Thread.Sleepをawait Task.Delayにしてみたら? 戻り値をvoidからasync Taskに変えるのを忘れずに