X



C#, C♯, C#相談室 Part96
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん (ワッチョイ 7633-kUv4)
垢版 |
2021/12/20(月) 11:03:25.88ID:sdn/+VfW0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/

■コードを貼る場合はこちら
http://ideone.com/

■前スレ
C#, C♯, C#相談室 Part94
https://mevius.5ch.net/test/read.cgi/tech/1553075856/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
0002デフォルトの名無しさん (ワッチョイ 7e33-kUv4)
垢版 |
2021/12/20(月) 11:04:48.54ID:sdn/+VfW0
■関連スレ
初心者の質問向けはこちら
ふらっと C#,C♯,C#(初心者用) Part153
https://mevius.5ch.net/test/read.cgi/tech/1639403601/
■過去スレ
C#, C♯, C#相談室 Part90
http://echo.2ch.net/test/read.cgi/tech/1455160063/
C#, C♯, C#相談室 Part91
http://echo.2ch.net/test/read.cgi/tech/1467142749/
C#, C♯, C#相談室 Part91 (実質Part92)
http://echo.2ch.net/test/read.cgi/tech/1467211515/
C#, C♯, C#相談室 Part92 (実質Part93)
http://echo.2ch.net/test/read.cgi/tech/1485589613/
C#, C♯, C#相談室 Part93 (実質Part94)
http://mevius.5ch.net/test/read.cgi/tech/1492818720/
C#, C♯, C#相談室 Part94 (実質Part95)
https://mevius.5ch.net/test/read.cgi/tech/1553075856/
0007デフォルトの名無しさん (ワッチョイ 664b-idB0)
垢版 |
2021/12/21(火) 11:11:13.08ID:EWzKnmTS0
>>6
ユーザーコントロールを貼り付けるんじゃ無くて、ユーザーコントロールに貼り付けたいんだけど・・・
あと、ユーザーコントロールのデザイナでは無く、フォームのデザイナでね。
0013デフォルトの名無しさん (ワッチョイ e95f-4nvB)
垢版 |
2022/01/07(金) 01:04:58.15ID:wvMkhd+/0
WPFやWinUIなら出来るけど
0016デフォルトの名無しさん (ワッチョイ 2db3-qu6v)
垢版 |
2022/01/19(水) 13:00:14.97ID:sR6sbC/m0
.netframework4.7+WinFormでフォームのActiveControlがTextBoxで
そのコントロールのValidatingイベントが実装されていたらValidatingイベントを呼び出す
ってのをやりたいんですがいい方法はないですか?
if ((this.ActiveControl is TextBox box) && !(box.Validating is null))
{
 var args = new CancelEventArgs(false);
 box.Validating(args);
}
こんな感じに書ければいいんですが「Validatingは+=、-=の左辺のみ使用できます」とエラーになってしまいます

リフレクション使って無理矢理OnValidatingを呼び出すしかないんですかね?
0018デフォルトの名無しさん (ワッチョイ cd2f-Nrkm)
垢版 |
2022/01/19(水) 18:56:18.18ID:DmIv8IzU0
イベントの正体はマルチキャストデリゲートのはずだから
MulticastDelegate.GetInvocationList でいけんじゃね

つかコントロール参照とれてるなら普通にInvokeするだけで良い気がしてきた
0027デフォルトの名無しさん (アウアウウー Sa05-1yOP)
垢版 |
2022/01/21(金) 08:19:27.27ID:Gz0vCIiGa
正攻法は派生。次点でreflectionでprotected
それらで解決できる問題なのにreflectionでprivate触るのはただのバカだよ
privateは基本的に保証されないものだから突然使えなくなっても文句言えない
0030デフォルトの名無しさん (アウアウウー Sa05-1yOP)
垢版 |
2022/01/21(金) 13:58:52.25ID:Gz0vCIiGa
どう見てもネタじゃないだろ。忘れてくださいってだけだよ
本気でネタだと思って書いてたなら単なる基地外。でもまあ5chには多いから本気でそう思ってたのかもしれないがw
0035デフォルトの名無しさん (テテンテンテン MM8f-ZwRN)
垢版 |
2022/01/24(月) 12:17:52.32ID:8sRMh2mLM
いまいち何がしたいのか分からんが、Validatingの処理を別メソッドでやるようにしてEnterイベントでそのイベント実行すればいいんでないの
継承コントロール作れるなら継承した方がいいけど
0037デフォルトの名無しさん (アウアウウー Sa4b-DZ2P)
垢版 |
2022/01/24(月) 14:37:40.44ID:zeqExr0Ka
privateに格納されてるイベントを呼び出す処理が実装されてるんだよ
それがon〜系の関数でprotectedもしくはpublicになってる
今回はprotectedだから派生してやればそれを呼び出せるということ
0044デフォルトの名無しさん (アウアウウー Sa9b-PN0l)
垢版 |
2022/02/05(土) 16:47:04.66ID:tJRnKD74a
構造体の配列のメモリ確保で
データを入れる事は
できますか
A[] ={{1,2,2},{3,4,2},{1,5,6}}
みたいなノリの

お願いいたします
0045デフォルトの名無しさん (アウアウウー Sa9b-PN0l)
垢版 |
2022/02/05(土) 16:51:55.17ID:gB/WrKWla
それと多重配列で
初期値データ入れたり
0047デフォルトの名無しさん (アウアウウー Sa9b-PN0l)
垢版 |
2022/02/06(日) 06:30:33.16ID:SLNZfJCCa
それと多重配列で
初期値データ入れたり
0050デフォルトの名無しさん (ワッチョイ 9fad-9RcZ)
垢版 |
2022/02/06(日) 15:21:21.57ID:+LnLbHsI0
コマンドプロンプトで起動するソフトで
コマンドプロンプトだと途中処理取得できるけど

C#上でリアルタイムで途中処理表示させるのって
スレッドを非同期にするやりかたとか考えた方がいいの?
0052デフォルトの名無しさん (ワッチョイ 9f89-yHYo)
垢版 |
2022/02/06(日) 17:31:20.88ID:TTEcICQ70
>>49
グーグル先生は賢い「多重配列」で検索すると「多次元配列」が出てくる。間違える人が一定数居るんだな。
c#だと多次元配列じゃなくてコレクションを使うほうが多いが。
0058デフォルトの名無しさん (アウアウウー Sa9b-icCT)
垢版 |
2022/02/07(月) 15:56:11.87ID:ZbbRMlPga
なんでc#やりたくなったのか思い出してそのやりたかったことをどうやったらできるかぐぐってやればいい
とりあえずvsインストールしてさっさと始めろ
考えたり人に聞くよりもまずは手動かせ
0063デフォルトの名無しさん (ワッチョイ 1736-Jms/)
垢版 |
2022/02/11(金) 20:18:35.80ID:Wnuvjl9G0
C#EntityFrameworkでテーブルの有無をチェックする方法ってありますか?
今はDbSet<Entity>のFirst()で例外が出たら、で仮チェックしてます
SQL文で書けば良いと言われればそれまでですが、それとは別にLINQや
DbSet<Entity>.Where(x => x.~ = Id);
みたいな方法でチェックする事はできるのでしょうか?
0067デフォルトの名無しさん (ワッチョイ 1736-Jms/)
垢版 |
2022/02/11(金) 21:24:52.36ID:Wnuvjl9G0
適当だが書き方の話なら

どこかに書く
bool func(int n) { if (n <= 3) { return true; } else { return false; } }

var a = new Dictionary<string, Func<int, bool>>();

a.Add("test2", func);
bool b2_t1 = a["test2"](1);
bool b2_t3 = a["test2"](3);
bool b2_f5 = a["test2"](5);

ラムダ
a.Add("test1", x => { if (x == 1) { return true; } else { return false; } });
bool b_t1 = a["test1"](1);
bool b_f3 = a["test1"](3);
bool b_f5 = a["test1"](5);

Funcを加工するなら>>66のようにinterface、他オブジェクト型とか識別子渡して型チェックとか?
0068デフォルトの名無しさん (ワッチョイ 1736-Jms/)
垢版 |
2022/02/11(金) 21:26:42.58ID:Wnuvjl9G0
>>64ありがとうございます
SELECT 〜 FROM 〜やOBJECT_IDのべた書きって事ですよね
それしかないんかな
0072デフォルトの名無しさん (アウアウウー Sa9b-icCT)
垢版 |
2022/02/11(金) 22:26:34.03ID:vdb8lbDWa
>>69
実際どんなのが欲しいのか知らないけどこんな感じでいいんじゃないの?
interface aaa
{
TRESULT bbb<T, TRESULT>(T n);
}

class AAA : aaa
{
public TRESULT bbb<T, TRESULT>(T n)
{
throw new NotImplementedException();
}
}
0073デフォルトの名無しさん (ワッチョイ 17d2-EiVI)
垢版 |
2022/02/11(金) 22:30:29.44ID:Wu/zW80b0
>>69
欲しいのは本当にinterfaceか?って疑問が出るが

ジェネリクスinterfaceの定義方法は(System.Collections.Generic.)IEnumerableの定義を見に行けばなんとなく分かるとは思う

あとinterfaceはinterfaceからしか継承できない

>>65の書き方だとジェネリクスclassになりそう
0076デフォルトの名無しさん (ワッチョイ 9354-WOoO)
垢版 |
2022/02/12(土) 17:09:02.11ID:HCWO3i2I0
.net 6で、DataGridViewにDataSourceをバインドして表示する時、
データ量が多い(約24万レコード)と一時的に応答なしになります。
※データ取得は別スレッドで行っています。

サブフォームで表示しており、処理中はメインフォームも応答なしになりますが、
メインフォームとサブフォームを別スレッドにするみたいなのは無理ですか?
0085デフォルトの名無しさん (ワッチョイ b7d2-fdHv)
垢版 |
2022/02/13(日) 14:40:38.46ID:3OIdnfKh0
いろんな型のFuncを受け付けるようにするならそれ用のclassを作ってしまった方が手っ取り早い

public class MyDictinary<T, TResult> : Dictinary<string, Func<T, TResult>{...}

Funcをなんでも受け付けるようにするなら
public class MyDictinary<TDelegate> : Dictinary<string, Func<T, TResult> where TDelegate: Delegate {...}

どうしてもinterfaceにしなくちゃいけないなら
public interface IMyDictinary<T, TResult> : IDictinary<string, Func<T, TResult>{...}


ごちゃ混ぜのFuncを受け付けるようにするとFunc呼び出し時に大変な思いをするだけだからやらん方がいい
0086デフォルトの名無しさん (テテンテンテン MMde-gtE8)
垢版 |
2022/02/13(日) 14:46:43.73ID:ifSJDHUhM

>>69はDictionaryいっこにいろんな引数型/戻り値のFuncを入れたいと言ってるみたいだから>>81しかないと思うんだけど・・・
引数型/戻り値型毎に別々のDictionaryにするだけなら、たとえば
var dic1 = new Dictionary<string,Func<int, string>>();
var dic2 = new Dictionary<string,Func<int, int>>();
var dic3 = new Dictionary<string,Func<string, string>>();
みたいにT/TResultの組み合わせに応じて別変数にするだけで解決するような・・?
なんでわざわざ>>85みたいなclassなりinterfaceなりを作る必要があるのかわからない
0090デフォルトの名無しさん (テテンテンテン MMde-gtE8)
垢版 |
2022/02/13(日) 15:19:09.62ID:ifSJDHUhM
ていうか>>85ってコンパイル通る?
「>」ひとつ付け忘れとかDictionaryのミススペルはともかくとして、
2つめの書き方でT/TResultの型はどこから決まるんだろう?

それとも
public class MyDictinary<TDelegate> : Dictionary<string, TDelegate> where TDelegate: Delegate { }
を意図してるのだろうか
Func<object, object>をクソと言ってるからには引数1つの制約すらつかなくなるこんなクソ以下の書き方を意図してるとも思えないけど・・・
0092デフォルトの名無しさん (ワッチョイ b7d2-fdHv)
垢版 |
2022/02/13(日) 15:30:03.46ID:3OIdnfKh0
>>90
携帯からやったから酷いミスしてるのは悪かった

T/TResultの型を決めないならって意図で書いてる
当然Func<object, object>と同じで使うときに酷い目に遭うが

Func<object, object> だと引数型がobjectを受け付けないといけない縛りができるから
「いろんな関数を受け付ける」という要件を満たせない

Delegateだとその縛りはなくなる
ラムダを受け付けられなくなるが
0093デフォルトの名無しさん (ワッチョイ d201-b83C)
垢版 |
2022/02/13(日) 15:34:09.27ID:Igq9caCG0
質問者は
1つのDictionaryの中に異なる型を混在させたいという話をしてるのか
1つのDictionaryの中は同じ型のみ入るが、型が異なる複数のDictionaryをジェネリックで統一して扱いたいという話をしてるのか

前者ならジェネリックを使うケースではなさそう
0094デフォルトの名無しさん (ワッチョイ 3302-rCQD)
垢版 |
2022/02/13(日) 16:07:38.09ID:5Mv4IyiB0
単純なインターフェース使う例だとこんなもんかな
受け取る結果の型が決まってるなら、dynamic使わんで済むけど
public interface IJob
{
dynamic Run();
}

public class SomeJob<T1, T2> : IJob
{
public T1 Param1 {get;}
public T2 Param2 {get;}

public SomeJob(T1 param1, T2 param2)
{
Param1 = param1;
Param2 = param2;
}
public dynamic Run() => (dynamic)Param1 + (dynamic)Param2;
}

public static void Main()
{
var dic = new Dictionary<string, IJob>()
{
{"a", new SomeJob<int, double>(2, 3.3) },
{"b", new SomeJob<float, double>(5.5f, 16.612340) },
};
Console.WriteLine(dic["a"].Run());
Console.WriteLine(dic["b"].Run());
}
0098デフォルトの名無しさん (ワッチョイ 632f-TxqZ)
垢版 |
2022/02/13(日) 17:47:23.01ID:DvSkIP620
別にインターフェイスを使いたいってわけじゃないだろ

var dic = new Dictionary<string, Delegate>();

Func<int, int> f1 = (i => i + 1);
Func<string, string> f2 = (s => s + "さん");
dic.Add("1", f1);
dic.Add("2", f2);

Console.WriteLine(dic["1"].DynamicInvoke(2));
Console.WriteLine(dic["2"].DynamicInvoke("名無し"));

これでいいんじゃないか
0101デフォルトの名無しさん (ワッチョイ 126a-iSvi)
垢版 |
2022/02/13(日) 20:48:10.88ID:7zxfmdEw0
本当にやりたいことを突き詰めるとそんな面倒なことをしなくてもよい解決方法があったりするのはよくある事よな
今回の件でも当てはまるかどうかは知らんけど
0102デフォルトの名無しさん (ワッチョイ 92ad-Z1WE)
垢版 |
2022/02/15(火) 12:56:44.30ID:XMXX+kQj0
例えばFFMPEGをC#で起動させてるときに
エンコード処理みたいな定期的に値が返ってくるやつって
別スレッドでFFMPEGを走らせて
本スレッドではテキストボックスあたりに出力するようにしたいんだけど
これってFFMPEGの処理が終わるまでメインスレッドはwaitしないとダメってことですよね?

単独スレッドで終了した結果は表示できるんですけど
0103デフォルトの名無しさん (アウアウウー Sac3-9hE7)
垢版 |
2022/02/15(火) 13:01:30.90ID:XQ5fPZCEa
そんなことはない
別スレッドで読みだした値をメインスレッドに送って、メインスレッドでその値を表示すればいい
別スレッドからUIに表示しようとしたらエラーになる
0105デフォルトの名無しさん (スプッッ Sd52-fdHv)
垢版 |
2022/02/15(火) 19:16:59.08ID:jLK4fSzed
たぶんGUIアプリ作ってるんだろうけど
GUIのデータはメインスレッドしか書き換えちゃダメなルールがある

TextBox.Invokeでメインスレッドに自分のデータ変えてくれってお願いするか、
WPFのBindingならメインスレッドがデータ持ってないからデータ取りに来いってできたりする
0107名無し募集中。。。 (ワッチョイ ffad-aF3f)
垢版 |
2022/02/20(日) 04:59:16.93ID:gLgXgTw20
c#ってvisual studio でテストする時って
アプリの前回値みたいの記憶できないの?
〇〇フォルダのパスとか記憶したいんだけど
0108デフォルトの名無しさん (JP 0H1f-JnE0)
垢版 |
2022/02/20(日) 05:45:33.44ID:9eA/EulNH
Windows上だと何日動かしてもメモリ使用量40MBくらいで安定してるプログラムが
(VS2002の診断ツールで確認)

ラズパイのMono上だと徐々にメモリ使用量が増え続けて
1日くらいで4GB到達して落ちるんだけど何故だろう
0109デフォルトの名無しさん (アウアウウー Sae7-iDSx)
垢版 |
2022/02/20(日) 08:10:15.15ID:k8LvFvhxa
タイマーかなんか仕掛けて手動で↓を呼ぶ
GC.Collect(2, GCCollectionMode.Forced, false, true);

それで減らないならMonoのランタイムがそもそもUNCOと思われ。

Unity Profilerで表示されるMonoで使用メモリ量が膨大になってしまう
https://teratail.com/questions/238133
0113デフォルトの名無しさん (アウアウウー Sae7-7p3p)
垢版 |
2022/02/21(月) 19:22:27.56ID:4hCK79/5a
var form = new Form(){
 Text = "たいとる"
 FormBorderStyle = FormBorderStyle.FixedDialog
};

みたいに書けるやつ
一見VBのwith文っぽいけどプロパティの代入行為しかできなくて中途半端
0118デフォルトの名無しさん (アウアウウー Sae7-8E80)
垢版 |
2022/02/22(火) 16:15:23.63ID:gr38xJ4ba
c#のは同じような書き方でも意味が変わって一貫性のようなものがない(ように一見思える)
var form = new Form()
{Text = Text};
form.click += delegate
{Text=Text;};

vbのは普通の命令としてもwithがあり、そこに囲まれてる変数の頭にピリオドを付けるという書き方の一貫性のようなものがあるからな
どっちが初心者に優しいかと言えば今でもvbと感じる(vbがいいとは言ってない)
0119デフォルトの名無しさん (ワッチョイ 6fe9-EcOz)
垢版 |
2022/02/23(水) 12:07:24.23ID:n7YEN9KD0
フレームワークの話でしょうが、フォームアプリでモーダルフォームの外を
クリックした時に、モーダルフォームを閉じる事って出来るでしょうか?
スマホのUIによくある挙動ですが、同等の動きを実現出来ないかなと。
0120119 (ワッチョイ 6fe9-EcOz)
垢版 |
2022/02/23(水) 12:10:24.55ID:n7YEN9KD0
初心者板の内容でした。
失礼しました。
0121デフォルトの名無しさん (ワッチョイ ff02-9L8B)
垢版 |
2022/02/23(水) 12:26:47.20ID:n4QLtIZ70
薄毛や抜け毛にお悩みなら、発毛専門の*****へ。
一人ひとりの薄毛・脱毛原因を正確に突き止め、その原因を解消する独自の発毛システムを提供しています。
0123デフォルトの名無しさん (ワッチョイ cf10-hSEA)
垢版 |
2022/02/23(水) 20:18:19.67ID:Mz9SDh4V0
すいません 教えてください
文字列変数の中に 変数をしてしておいて 実行時に指定する方法ありますか?

例:
目覚まし時計プログラムで
9:00の時
9:00になりました。 おはようございます。
12時の時
お昼です 12:00になりました。
って 入れ替えたいのだけど
$Time になりました。おはようございます。

12時の時の文字列は
お昼になりました$Timeになりました。

って指定しておき $Timeをあとから指定したいみたいな方法です。
0130デフォルトの名無しさん (ワッチョイ cf10-iDSx)
垢版 |
2022/02/24(木) 22:02:34.13ID:eVS3l/k90
>>126 ありがとうございます。
一つ進化しました。
求めているのは、 126みたいな感じです。
0131デフォルトの名無しさん (ワッチョイ cf2c-hSEA)
垢版 |
2022/02/25(金) 14:06:14.20ID:Eg3DloqN0
Ruby on Rails では、ERB(Embedded Ruby)で、何の文書にも、Rubyのコード片を埋め込める

例えば、a.rb 内で、ary = [ "a", "b" ]
と定義して、ERB のresult( binding )で、
この文脈を他のファイルへ、バインドできる

b.html.erb 内で、<% 〜 %>, <%= 〜 %> を使って、Rubyのコード片を埋め込む

<% ary.each do | elem | %>
<p><%=h elem %></p>
<% end %>

出力ファイル、b.html
<p>a</p>
<p>b</p>

他にも、カスタムフォーマットを自作して、その形式を日本語辞書に登録して、呼び出せる

ja:
time:
formats:
medium: "%Y年%m月%d日 (%a) %H:%M"

と定義したら、b.html.erb 内で、
<%=l( Time.current, format: :medium ) %>
と書くと、

出力ファイル、b.html
2022年02月25日 (金) 13:55

まあ、コミュニティーが配布している日本語辞書に、
最初から、幾つかの形式が登録されているから、自作する事は少ない
0133デフォルトの名無しさん (ワッチョイ 5ae4-sFH0)
垢版 |
2022/03/01(火) 13:52:40.14ID:4BvRS+UW0
Console.writeline()はスレッドセーフでないというのは本当でしょうか?
今までシングルスレッドで動いていたプログラムを一部の処理だけマルチスレッドで動作するように変更中です
Console.writeline()の呼び出し箇所を全て変更する必要がありますか?
0137デフォルトの名無しさん (ワッチョイ a236-8qwV)
垢版 |
2022/03/15(火) 17:49:18.74ID:uT8cdwkS0
相談させてください。

IntPtr を ref int に変換するために以下のようなコードを書くと、期待通り False と表示されます。

IntPtr ptr = Marshal.AllocCoTaskMem(4);
ref int x = ref Unsafe.AddByteOffset(ref Unsafe.NullRef<int>(), ptr);
Console.WriteLine(Unsafe.IsNullRef(ref x)); // False と表示される
Marshal.FreeCoTaskMem(ptr);

しかし、以下のように意味のない for 文を追加すると、コードの最適化が有効な場合のみ True と表示されます。

for (int i = 0; i < 0; i++) { } // 意味のない for 文
IntPtr ptr = Marshal.AllocCoTaskMem(4);
ref int x = ref Unsafe.AddByteOffset(ref Unsafe.NullRef<int>(), ptr);
Console.WriteLine(Unsafe.IsNullRef(ref x)); // 最適化が有効な場合のみ True と表示される
Marshal.FreeCoTaskMem(ptr);

ただし、意味のない for 文があっても
Unsafe.AddByteOffset(ref Unsafe.NullRef<int>(), ptr)
→ Unsafe.SubtractByteOffset(ref Unsafe.NullRef<int>(), -(nint)ptr)
のように書き換えると常に False と表示されるようになります。

なぜこのようなことが起こるのかさっぱり見当がつかないので、お知恵を拝借できないでしょうか。
私の環境を分かる範囲で書くと以下のとおりですが、他に何か必要な情報があればお教えください。

Windows 10 Pro (21H2)
Microsoft Visual Studio Community 2022 (64 ビット) Version 17.1.1
コンソール アプリケーション、.NET 6.0

どうぞよろしくお願いいたします。
0141デフォルトの名無しさん (ワッチョイ 7d02-WCXV)
垢版 |
2022/03/15(火) 20:05:41.25ID:NI5jmOXt0
最適化でなんか情報が消し飛んでるんだと思うけど、判らんな
[MethodImpl(MethodImplOptions.NoInlining)]
public static ref T AddByteOffset<T>(ref T reference, IntPtr offset)
=> ref Unsafe.AddByteOffset(ref reference, offset);
とかやってインライン展開抑制してみたら
0142デフォルトの名無しさん (ワッチョイ 1232-IMun)
垢版 |
2022/03/15(火) 21:00:09.00ID:ZTE9InWz0
>>137
JIT最適化を抑制せずF11でデバッグして逆アセンブルすると
先にConsole.WriteLine(Boolean)がTrue固定で呼び出されて
その後にMarshal.IsNullOrWin32Atom(IntPtr)となってるね

未定義動作はタイムトラベルを…彷彿とさせるがC#なんだよなぁ
MSIL的にも&とnative intの結果型は&に定められている筈だし
とはいえ、管理下ポインタはnullになりえないとか有った気もするし
null参照への演算が未定義なら道理なのかもしれない、あるいはバグか
0143デフォルトの名無しさん (ワッチョイ a236-8qwV)
垢版 |
2022/03/15(火) 21:23:35.68ID:uT8cdwkS0
皆様、返信どうもありがとうございます。
いただいたアドバイスを元に色々と確認をしていて反応が遅くなってしまいました。
申し訳ありません。

>>138
確認してみた所、C# では int は 32 ビットと決められているようです。
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/builtin-types/integral-numeric-types
ただ、可読性を考えると 4 ではなく sizeof(int) と書くべきでした。
ご指摘どうもありがとうございました。

>>139
Unsafe.NullRef<T>() と Marshal.ReadInt32(int) の実装を確認してみたところ、
おそらくその点は問題ないかと思います。
https://github.com/dotnet/corert/blob/master/src/System.Private.CoreLib/shared/Internal/Runtime/CompilerServices/Unsafe.cs
https://github.com/dotnet/corert/blob/master/src/System.Private.CoreLib/shared/System/Runtime/InteropServices/Marshal.cs
しかし、問題の原因は大抵こういう思い込みに隠れているものだと思うので、
可能性を一つ潰すことができてとても助かりました。

>>140
そうなんですよね。
for (int i = 0; i < 0; i++) {} は i++ に到達しないのは明らかだから
最適化でまるっと消えてしまうかと思っていたので、この結果には驚きました。

>>141
書いていただいたコードを試してみたところ、確かに最適化が有効でも期待通りの動作になりました。
それからもう一つ、書いていただいたコードを使わない場合、
プラットフォームが x86 と x64 の両方とも最適化有効時には期待通りの動作をしないことが分かりました。
(x86 の場合は常に期待通りに動作するならば問題の原因について一つ仮説が立てられるかと思ったのですが、
 実際は違っていたので未だに原因はさっぱり見当がついていません…)
0144デフォルトの名無しさん (ワッチョイ a236-8qwV)
垢版 |
2022/03/15(火) 21:24:27.40ID:uT8cdwkS0
>>142
null参照への演算が未定義というのは、AddByteOffset メソッド内の話でしょうか。
下記のページの AddByteOffset<T>(ref T, IntPtr) のところをみると

ldarg.0
ldarg.1
add
ret

とコメントされていて、少なくとも IL 的には一つ目の引数が null でも特に問題はないように思えてしまいます。
IL 的に問題がないかどうかは私は自信がないのですが、
もし IL に問題がないのに JIT 最適化で問題が起きてしまうとすれば、
バグと考えてもよいのでしょうか。

参考
https://github.com/dotnet/corert/blob/master/src/System.Private.CoreLib/shared/Internal/Runtime/CompilerServices/Unsafe.cs
0147142 (ワッチョイ 1232-IMun)
垢版 |
2022/03/15(火) 21:41:55.33ID:ZTE9InWz0
あー同じような判定コードを読み間違えた
タイムトラベルは起きてないけど、代入もヌル判定もなくなってる感じかな

>>144
そう、片方が0なら実質意味はないから加算命令が現れなくても不思議ではないけど
Console.WriteLine(x);としてみても固定アドレス0をデリファレンスするので
xが常にぬるぽ扱いになってしまっている様ではある

C#的には未定義なら未定義でビルド時か実行時にエラーを出しそうだけど
Unsafeでチェックされないのか判断に困る。さもなければ最適化のバグだと思う
0149デフォルトの名無しさん (ワッチョイ a236-8qwV)
垢版 |
2022/03/15(火) 22:07:11.34ID:uT8cdwkS0
>>145
そうですね。アドバイスありがとうございます。

私はこれまでこの手の問題は「まずは自分を疑え」と教わってきて
実際それで大抵の問題は解決してきたのですが、
皆様のお話をうかがうに、今回は自分の勘違いではなく
よそに原因があると考えたほうがいいのかもしれません。

これまで報告等は経験がないのですが、
それも視野に入れて調べてみたいと思います。

>>146
勉強になります。
その特殊な最適化で結果が変わることがバグなのか
私の力では判断が難しそうなのが歯がゆいところです。

>>147
> そう、片方が0なら実質意味はないから加算命令が現れなくても不思議ではないけど
> Console.WriteLine(x);としてみても固定アドレス0をデリファレンスするので
私の理解不足で、
「片方が0なら実質意味はない」 ← 0 + p の計算は必要ない?そりゃそうだ!
「固定アドレス0をデリファレンスする」 ← 0 + p = 0 ということ?p ではなくて?
という感想を持ってしまいました。
申し訳ないのですが、もしよろしければもう少し詳しく説明していただけないでしょうか。

> C#的には未定義なら未定義でビルド時か実行時にエラーを出しそうだけど
> Unsafeでチェックされないのか判断に困る。さもなければ最適化のバグだと思う
ご意見どうもありがとうございます。とても共感させていただきました。
未定義であればこそデバッグ時に教えてほしいものですが、
実際にはデバッグ時には期待通りに動作してしまうのが厄介なところです。
0152デフォルトの名無しさん (ワッチョイ 1232-IMun)
垢版 |
2022/03/15(火) 23:25:37.07ID:ZTE9InWz0
>>149
件の部分はJITコンパイルされたマシンコードの話で、ref intを参照する際に
xからでなくても「mov ecx, dword ptr [ptr]」的であっても整合性は取れるが
逆アセが「mov ecx, dword ptr [0]」になるので、xはnullにされてるという話

それならばIsNullRefが消えるのは順当としても、xがnullになる代入の欠落が
NullRef<int>が宜しくないのか、それをAddByteOffsetに与えるのがダメなのか
単なるバグか…、Unsafe.AsRefに直接IntPtr渡せれば/unsafeとせず済むのにね
0153デフォルトの名無しさん (ワッチョイ a236-8qwV)
垢版 |
2022/03/16(水) 00:04:15.38ID:pAqxvPky0
>>151
なるほど…。
ただ、Unsafe.IsNullRef(ref Unsafe.NullRef<int>()) と書けてこれが true を返すので、
値型に対するヌル参照が定められていない場合は Unsafe.NullRef<T> の T に int が
指定できること自体がバグということになってしまうような気もします。
一応未定義ではないけど、CLR 外部との相互利用等で必要に迫られない限り
使ってくれるなという感じなのでしょうか。

>>152
ご親切に説明していただきどうもありがとうございます。
逆アセンブルの結果に “なぜだか理由は分からないが” 0 になっている部分があって、
そこから x が null にされているというという事実が読み取れる、ということですね。
(まだ間違っていたら大変申し訳ありません)

> NullRef<int>が宜しくないのか、それをAddByteOffsetに与えるのがダメなのか
NullRef<T> と AddByteOffset<T> のソースコードのコメントにはそれぞれ

ldc.i4.0
conv.u
ret

ldarg.0
ldarg.1
add
ret

とあって、これを見る限り、NullRef<int>() を AddByteOffset<int> に与えることの問題は
私には読み取れませんでした。
(そもそもこの問題で IL を持ち出すこと自体が見当外れなのでしょうか)
もちろん、実際には特殊な JIT 最適化が行われているのでしょうが、
その結果 IL から期待される動作と変わってしまうようなら、
やはりバグとして報告したほうがよいのかなというのが今のところの考えです。
0154デフォルトの名無しさん (ワッチョイ a236-8qwV)
垢版 |
2022/03/16(水) 00:10:04.98ID:pAqxvPky0
>>152
> Unsafe.AsRefに直接IntPtr渡せれば/unsafeとせず済むのにね

そうなんです!というか、本来私がしたいことからいうと
MemoryMarshal.CreateSpan<int> メソッドに IntPtr 型を渡せると一番よいのですが、
それができないのでこのメソッドが受け付けてくれる ref int を作るという方向で考えています。
0155デフォルトの名無しさん (ワッチョイ 1232-IMun)
垢版 |
2022/03/16(水) 01:45:02.44ID:lykY2TTP0
>>153-154
仰る通りです

ECMA-335の文言"Managed pointers cannot be null"で検索してみたら案の定ツッコミありましたが
https://github.com/dotnet/runtime/issues/41418#issuecomment-681177889
これを受けてか、トップのNullRef<T>()に関する注釈にも
(10) Per ECMA-335, Sec. II.14.4.2, it is not strictly legal for a gcref to point to null.
However, all .NET runtimes allow this and treat it in a type-safe fashion,
including guarding accesses to null gcrefs by throwing NullReferenceException as appropriate.
と書かれていて問題なさそうな見解です
仕様に準拠していないというのは…JITコンパイラ的にどうなのか
言及を忘れていましたが、アセンブリにコード欠落は見受けられないのでC#コンパイラの問題ではないし

AddByteOffset<T>(ref T, IntPtr)にしても関連する注釈は
(1) Arithmetic operations on gcrefs (such as via Unsafe.Add) are not checked for correctness by the runtime.
The resulting gcref may point to invalid memory or to a different object. See ECMA-335, Sec. III.1.5.
のみですし、また前項と合わせてECMA-335が示されていますから、ILと無関係でもないでしょう
System.Runtime.CompilerServices.Unsafe.dllをデコンパイルしてみてもコメントと同じコードが示されます

Framework時代ならSafeBuffer継承とかやってましたが(SafeMemoryMappedViewHandleはコンストラクタがinternalなので)
これもこれで今見たら「SafeBuffer may be unavailable in future releases.」で笑えぬ
0156デフォルトの名無しさん (ワッチョイ 7d02-WCXV)
垢版 |
2022/03/16(水) 02:59:05.97ID:b5JRB2Cp0
最近の標準ライブラリの実装を見るに、.NET開発チームはIntPtrを使わせたくないように感じる
ポインタ弄るなら、あぶねー事やってんだから明確にunsafe宣言しろって事なんだろうな
0157デフォルトの名無しさん (ワッチョイ 1232-IMun)
垢版 |
2022/03/16(水) 15:09:58.97ID:lykY2TTP0
>>137>>153
よくよく調べてみたらズバリそのものが有りました
https://github.com/dotnet/runtime/issues/61510
>>156で言われている様な主旨のコメントもありますね

元コードの添え書きを見るに意図されたものと見受けられますが
ぬるぽを多少オフセットした所でデリファンレスしたら一緒という事でしょうか

昨年の時点で修正が入っていますが、マイルストーンは7.0.0とされ6.0.3でも取りこまれていません
https://github.com/dotnet/runtime/blob/v6.0.3/src/coreclr/jit/morph.cpp#L12906-L12918
.NET 7.0 Previewにはマージされており、その後さらに周辺コードはリファクタリングされ移動しています
https://github.com/dotnet/runtime/commit/132cc2f2d00e00b7f0dfd43498077da65cc27d29#diff-5b83397bbbdd17bb9457998b520fdaaa474d165390985b66f32371561b6d0bacR13505

まぁやはり本来は相対オフセットが期待されるところですから
絶対オフセットではなく大人しくAsRefを使うべきなのかもしれません
0158137 (ワッチョイ 6136-KDK6)
垢版 |
2022/03/16(水) 16:49:39.25ID:TbbZbi5h0
すみません。規制にあってしまったのか、パソコンから書き込めなくなってしまいました。
この文章も書き込めるかどうか分かりませんが、
ひとまず、親切にしてくださった皆様に心からお礼申し上げます。
0159デフォルトの名無しさん (ワッチョイ 7d02-WCXV)
垢版 |
2022/03/16(水) 18:13:49.44ID:b5JRB2Cp0
>>157 のリンク先の、
> Sergio0694 commented on 13 Nov 2021
> Having fake "safe" code using APIs like this instead of properly using built-in unsafe syntax is objectively worse and should be avoided. It makes it harder to see when code is actually doing unsafe things. It effectively makes your code more unsafe. It's an ongoing problem that has been here forever, certainly not helped by the existence of some APIs (looking at you Marshal...).

このコメントに激しく同意するわ。
ポインタ操作やってるのに、Unsafeクラスで無理矢理unsafeブロック書くの回避したところで、
それは危険なコードである事に変わりはない。
0165デフォルトの名無しさん (アウウィフ FFcd-XTxC)
垢版 |
2022/03/26(土) 10:57:27.94ID:klc4wM2MF
初心者ですまんが、async/awaitでtaskの実行とtask自体の生成の責務が分離されてない気がするんだが
asyncの中にはawaitがあるもの(ないと警告)という連鎖はどこで切ればいいの?
最終的にインフラまで行ったとしてそこのasyncメソッドはawaitするものがなくなってしまうよな?
末端は警告を無視するか、Task.Runとかを作ってTaskを返すかなりしろってこと?
0171デフォルトの名無しさん (アウアウウー Sacd-XTxC)
垢版 |
2022/03/26(土) 12:40:15.39ID:pvkpV0Laa
>>168-170
サンクス
中身が同期やけど呼び出し元はそいつを非同期で待機したけりゃTask.Runとか使うしかないって事だよな
asyncの中身を同期だけにすると混乱を招きかねないけどawait可能なTaskを自動で作ってくれてスレッド復帰なんかも勝手にやってくれる分利点もありそうな気がするんだが
どうなんだろ
asyncじゃないTaskを返すメソッドを作る法がええんかも知れんけどめんどいよね
0173デフォルトの名無しさん (ワッチョイ 0d32-S2l7)
垢版 |
2022/04/06(水) 10:28:00.42ID:OCQcEzvM0
ご存知の方いらっしゃいましたら教えてください

StreamReader urlReader = new StreamReader(urlStream, Encoding.UTF8);
string urlReadString = urlReader.ReadLine();

上記の関数使ってcharset=UTF-8が設定されてるURLを読み込んだときに
普通にテキストとして読み込めるときと、UTF-8の読み込みに失敗してEF BF BDが出力されるときがあるけど、
失敗するときって何か初期設定が足りてない?
それともReadLine()じゃなくて別の関数を使う?
0175デフォルトの名無しさん (スプッッ Sde1-z1p6)
垢版 |
2022/04/06(水) 11:06:48.61ID:BAnc7YwEd
バイトコードでなくバイナリデータな

バイナリモードでファイル開いて読み込んで16進出力するか、
BZとかのバイナリエディタでファイルのバイナリを見るのがいい
0178デフォルトの名無しさん (アウアウウー Sae9-xcJo)
垢版 |
2022/04/06(水) 19:11:31.46ID:oIHs85Eca
バイナリであってるだろ。むしろバイトコードって使いかた初めて聞いたぞ
urlならその内容をファイルに落として開いて確認するのが楽
それが面倒な場合はコードからstreamをファイルに落として確認
0180デフォルトの名無しさん (アウアウウー Sae9-xcJo)
垢版 |
2022/04/06(水) 19:26:15.02ID:oIHs85Eca
streamはデバッガで直接中身見れない(よな?)のと
(俺が使ってる外部バイナリエディタは)エンコーディング自動判別してくれるから俺にとってはファイルの方が楽
ほかの人にとってはわからないな
0184デフォルトの名無しさん (ワッチョイ 6f24-soYJ)
垢版 |
2022/04/11(月) 20:16:43.58ID:2IiYezuY0
ソースジェネレーターってnetstandard2.0だからWinFormsは参照不可能?
ソースジェネレーター側で参照できずともまあ良いんだけど、出来ればWinFormsのいくつかのクラスからコンパイル時リフレクションで色々取り出したいのだが
0186デフォルトの名無しさん (ワッチョイ c28b-xb3m)
垢版 |
2022/04/13(水) 17:04:49.00ID:5l1VnwO30
C#からPowserShellを実行して
登録済みのVPN一覧を取得しようとしています。

コマンド発行までは出来たのですが戻り値
Name ServerAddress の取得が出来ません。
どの様なコードを書けばよいでしょうか?

using (var invoker = new RunspaceInvoke())
{
var result = invoker.Invoke(source);
}

resultに値が入るハズなのですが・・・分かりません。
PowerShell上で実行するとVPN一覧が表示されています。
0190デフォルトの名無しさん (ワッチョイ c28b-xb3m)
垢版 |
2022/04/13(水) 19:52:25.67ID:5l1VnwO30
>>189
動的ビューというところに値がありました。

new Microsoft.CSharp.RuntimeBinder.DynamicMetaObjectProviderDebugView(result[0]).Items[24]


result[0]
BaseObject
ImmediateBaseObject
Members
Methods
Properties
TypeNames
本来であれば、この中のどこかに入ると思うのですが見つかりません。
0194デフォルトの名無しさん (アウアウウー Sa1b-Om2K)
垢版 |
2022/04/22(金) 17:18:18.78ID:11YPP3hWa
内部クラスから外のprivateなenumの型を直接参照できるのはどうしてでしょうか?

public class A {
private enum ZZZ {a, b, c}
class B {
Console.Writeline("number = " + (int)ZZZ.a); // なぜenumだけこれが許されるのか
}}
0200デフォルトの名無しさん (スッップ Sdbf-RPPK)
垢版 |
2022/04/22(金) 20:30:49.13ID:XRzGPZH0d
派生クラスとInnerクラスをごっちゃにするなよ?

外側のクラスのインスタンスさえ得られればprivateにアクセスし放題だったり
0203デフォルトの名無しさん (ワッチョイ ce6e-ZXX2)
垢版 |
2022/04/29(金) 23:05:58.93ID:ZxkWaM0v0
関数のエラーを表現するのってどういうのが一番C#のスタイルに合うんでしょうか
例えば公式のtryparseなんてbool返しますよね。でも例外投げるって手もありますよね。なんか職場の古いおっさんははるか昔のCのやり方そのまま0とか-1とか返してるし
0208デフォルトの名無しさん (ワッチョイ df01-nj6J)
垢版 |
2022/04/30(土) 06:39:16.16ID:OR8SZm5l0
>>203
> 例えば公式のtryparseなんてbool返しますよね。でも例外投げるって手もありますよね。
だからTryParseとParseの両方あるでしょ
汎用性を求めるなら両方用意すればいいし特定の場合だけなら使いやすい方を用意すればいいと思うよ
0209デフォルトの名無しさん (テテンテンテン MM8f-dUGE)
垢版 |
2022/04/30(土) 07:00:58.78ID:OalUk2/jM
「エラー」を表すなら例外一択
そうするとtryブロック内に書かれている処理は正常系だけ、catchブロック内が異常系だけになって
ソースコードが明瞭になるし異常系ロジックをcatchの1か所に集約できる
こういう書き方に慣れるといちいち1処理行うごとに戻り値if分岐してるような書き方のダサさが分かる

例外が重いってのもたしかにその通りなんだけどまあ1回こっきり投げるだけなら許容範囲かな
0219デフォルトの名無しさん (ワッチョイ e724-OrLt)
垢版 |
2022/04/30(土) 11:13:28.89ID:UYlijuGg0
>>211
C/CPPのライブラリは0が成功って割と多い
多分210が言いたいのはCにはbool型なんて無くてintをBOOLとして扱ってるからC的には0x100000はTRUE、C#的にはbyte化されて0となりfalseになるから注意ってことを言いたいんだと思うが
0226デフォルトの名無しさん (ブーイモ MM8f-LGrz)
垢版 |
2022/04/30(土) 12:20:54.96ID:UbbzWFWaM
>>221
デリゲート呼び出しはそれ自体がまあまあ重いぞ
少なくとも条件分岐にboolとintどっちを使用するかなどという微々たる差を全く無視できる程度にはな
そしてデリゲート呼び出しも普通はIOに比べたら誤差だから全く無視してよい
0229デフォルトの名無しさん (ワッチョイ fb6e-S2Xa)
垢版 |
2022/05/09(月) 19:30:59.59ID:BZKielY90
C#/MVVMでお絵かきソフトのようなことをやる必要があります。ドラッグして長方形を書いたり、それを選択して移動したりみたいな。多分inkcanvasとか使うんですかね?
それで色々と調べているのですが、コードビハインドから除外するというのがどうも難しくて何がなんだかわかりません。ビヘイビアだのコマンドだのどうやって実装したものか途方に暮れています
以前formsで同じようなものを作ってそのときは普通に実装出来たのでコードビハインドさえ使っていいなら普通に行けるだろうにという状況です
MVVMでviewのビハインドからコードを除外するというのはもう絶対に守るべきものなのでしょうか
0234デフォルトの名無しさん (ワッチョイ da42-zDU0)
垢版 |
2022/05/09(月) 21:43:08.37ID:UnFDSJiw0
MVVM原理主義から見たらかなりインチキ臭いServiceってやり方で、MやVMからControlにアクセスするやり方が一般的かな
Canvasのプロパティーを持って、そこにアクセスするためのメソッドやプロパティーが入ったServiceクラスを作って、それを例えばVMのプロパティーにする
で、Viewが初期化された時にそのクラスを生成してプロパティーのCanvasに実態を設定する
そのクラスをVMの該当プロパティーにインジェクションする
わかりにくいだろうが、どっかに上手いこと書いてある解説でも探してくれ
0236デフォルトの名無しさん (ワッチョイ 3ebb-0tmp)
垢版 |
2022/05/10(火) 16:27:35.44ID:A0speGA90
普段WinFormとかでUI作ってる人に聞きたいんだけど
値の変化をリアルタイムでUIに反映する場合ってどうやってんの?
値が変化する箇所全てに画面の更新処理入れる感じ?
0237デフォルトの名無しさん (ワッチョイ 7e33-SYw5)
垢版 |
2022/05/10(火) 17:07:52.87ID:Qwl7JHFX0
>>236
うちの場合は画面にUpdate()なりをつくって、そのメソッド内に基本的に全部のコントロールの更新処理を書いて、必要な時に呼び出してる。
DataGridViewなど必要な時にしか更新しないものは、Update(bool all)などで処理を分けて対応してるかな。
パフォーマンスに問題ない限りは、富豪的プログラミングが管理しやすいと思う。
0238デフォルトの名無しさん (アウアウウー Sa1f-e+q+)
垢版 |
2022/05/10(火) 17:15:20.22ID:O/q6MN3Ra
SetValueWithRefresh(newvalue)みたいな代入と更新同時にする関数作って代入はそれでやれってするとか
プロパティのsetterにonvaluechangeみたいなeventhandlerおいといてそこ経由して更新させるとか
ちまちま代入と同時に更新処理直接呼ぶとか
>>237みたいな富豪的なのもあるな
状況によりけりだよ
0242デフォルトの名無しさん (テテンテンテン MMe6-0R8h)
垢版 |
2022/05/13(金) 13:29:25.82ID:c/0e0c1OM
初心者です。
c#でアプリ作成したのですが、自己署名証明書がないと、アプリ起動時、発行元不明の警告が出ますよね?
みなさんどうやってその警告を回避してますか?
何かいい方法があれば教えてほしいです。
0245デフォルトの名無しさん (ワッチョイ cbba-0R8h)
垢版 |
2022/05/13(金) 18:46:21.48ID:TYJN2jsR0
>>243-244
情報ありがとうございます。
自己署名証明書の取得方法も色々な方法がある事を学ばせていただきました。
0247デフォルトの名無しさん (ワッチョイ cbba-0R8h)
垢版 |
2022/05/13(金) 22:24:43.10ID:TYJN2jsR0
>>246
自己署名の話を皆様に聞いた理由は、他の人のPCにインストールした際に、不明な発行元と表示されてしまうのを回避したい と言う理由だけなんです。
不明な発行元と警告が出る種類も何パターンかありますよね?
フォームで出るパターン と、ブルースクリーンの様な画面で出るパターン
この両方の警告に対応するには、お金を支払い自己署名するしかないのかなあと漠然と考えてました。

その自分で作成する方法(オレオレ自己署名)も見たのですが、アプリではない感じだったので、、あまり詳しく理解できていません。。
0249デフォルトの名無しさん (ワッチョイ cbba-0R8h)
垢版 |
2022/05/13(金) 22:55:59.91ID:TYJN2jsR0
>>248
もしよろしければ、自己署名についてご教示願えないでしょうか?
なかなかこの辺の記事は書籍で書いてないので。。
0251デフォルトの名無しさん (アウアウウー Sa1f-e+q+)
垢版 |
2022/05/13(金) 23:41:37.05ID:btyzcX5fa
>>249は認識あってるよ
>>248はたぶん自己署名=オレオレ署名と勘違いしてるだけ
発行してもらった正規のでもオレオレのを使っても自己署名には変わらない

自己署名 =自分でexeに対して電子署名すること
電子署名 =電子的な署名
電子証明書=自己署名やsslなどで必要になるやつ(一般的には公的機関からのものを指すけど、自分で作ったのも含む)
オレオレ証明書 =自分で作った電子証明書
オレオレ署名 =オレオレ証明書を使った電子署名
コードサイニング証明書=電子証明書のうち、exeなどの署名に特化したもの(公的機関から買う。自分で作ったのは汎用的だからこう呼ぶことはない)
自己署名証明書 ≒コードサイニング証明書
0255デフォルトの名無しさん (アウアウウー Sa31-mOD9)
垢版 |
2022/05/14(土) 00:45:49.42ID:q1SIpySda
自己署名証明書、自己署名、電子署名っての自体はオレオレ署名とまともな署名のどっちに使っても問題ない
だから自己署名=オレオレだと決めつけて解釈していくとあらぬ方向に行くんだよ

>>246は「勝手に作る」というような言葉が使われてるからオレオレ証明書のことだと分かるし
>>242は発行元不明を防ぎたいという文脈から公的な証明書のことだと分かる
0261デフォルトの名無しさん (ワッチョイ 3133-Q+cg)
垢版 |
2022/05/14(土) 21:16:53.25ID:D+nf+blC0
C#って移植性は高いんですか?入門書をのぞいてみたけどGUIの項目ではWindows限定でした
0262デフォルトの名無しさん (ワッチョイ abba-tmIb)
垢版 |
2022/05/14(土) 23:51:51.56ID:6ACM/5dE0
242 の質問者です。
僕の質問が悪かったせいで、少し雰囲気を悪くさせてしまった様で申し訳ありませんでした。

改めて質問させてください。

コードサイニング証明書の取得はどこが1番、費用が安いでしょうか?
聞くだけではダメなので、自分でもネットで調べてみました。
個人的にてはありますが、海外のECサイトで、1年で99ドルというものもありました。

ttps://blog.katsubemakito.net/articles/buy-comodo-codesigning

日本だと、1年で2万円が最安値?と認識してます。
0266デフォルトの名無しさん (ワッチョイ b342-lIli)
垢版 |
2022/05/15(日) 00:57:30.11ID:ZqvBN/g40
圧倒的に安いのはMSのWindowsStore
費用は大体2000円ぐらいで生涯使えるし、一つのアカウントを使い続けるならアプリは何本でも追加費用は取られない
問題はUWP,WinUI3で作るか、WpfやWinFormsならMSIX形式のインストーラに変更することとMSの審査があるのでそれを通さないといけないこと
Windows10仕様のアイコンも作らないといけない
0267デフォルトの名無しさん (ワッチョイ efd2-ydBh)
垢版 |
2022/05/15(日) 00:58:59.47ID:LE0M373c0
便乗して質問だけどこういう認証ってのは
配布するインストーラのバイナリが「改竄されていない」、「配布元が会社名 CO LTD.を名乗る権利がある」ってのを保証してくれるだけ?

保証元として信用するのはデフォルトではMicrosoft(かMicrosoftが認証してる保証会社)だけって認識だけど
0268デフォルトの名無しさん (ワッチョイ d32d-hFP2)
垢版 |
2022/05/15(日) 01:38:10.49ID:Ipi6C5sV0
>>267
「配布元が会社名 CO LTD.を名乗る権利がある」じゃなくて「アプリの配布元(がなりすましされていないこと)」の保証だね

個人でも取得できるコードサイニング証明書は無条件にはMSに信用されてなくて最初の内はSmartScreenが表示される(らしい)
法人しか取得できないEVコードサイニング証明書なら最初からSmartScreenは表示されない
後者は法人の存在確認が定期的にあったりより厳密
0270デフォルトの名無しさん (ワッチョイ c702-yXul)
垢版 |
2022/05/15(日) 03:02:38.88ID:tGTiPFBf0
成りすまし/改ざん防止なら最近添えるのが流行りのpgpとかで十分なんじゃないの、何か悪い事が起きても俺じゃなくて他人が手を加えたせいだ、という証明にはなるから自己防衛には十分だろ

逆に言えば何かあったら言い逃れできないけど、認証機関を介さないが故に個人情報とは切り離せるわけで、トンズラも可能

書き手にとってはとても都合がいい
0273デフォルトの名無しさん (ワッチョイ 9fda-Zpy8)
垢版 |
2022/05/15(日) 21:35:20.30ID:9FqWYCkM0
リソースってのはCOFF的には只の特殊セグメントなんでな
更に、ユーザー定義リソースってどんなデーターでも
格納出来る形式があってだな、we留守の格納に...おや誰か来たようだ
0275デフォルトの名無しさん (ワッチョイ 27e6-hFP2)
垢版 |
2022/05/17(火) 22:43:59.32ID:U++gJ6eR0
TreeViewとかListViewの使い方が載っている本を教えてください。
0276デフォルトの名無しさん (ワッチョイ 2b6e-Suzn)
垢版 |
2022/05/17(火) 22:55:59.31ID:vPKF91U40
>>231-234
遅くなりましたけどありがとうございました。もう時間も迫ってきたし色々と諦めてコードビハインドに書いてます。
ただそれでも色々と勝手が違って苦戦していますが……WPF難しすぎる……
0279デフォルトの名無しさん (ワッチョイ 27e6-hFP2)
垢版 |
2022/05/18(水) 21:10:13.07ID:dKdqkOyw0
>>277 >>278
ありがとうございます。

今から勉強しているので必要になりました。
週末、本屋さんに行ってきます。
0280デフォルトの名無しさん (ワッチョイ b342-lIli)
垢版 |
2022/05/18(水) 21:31:33.31ID:diUTiqLR0
nLogは5.0からdatabase名前空間のパッケージが独立した
破壊的変更の場合はもう少しわかりやすいところに変更書いてくれよ

nlog.databaseを追加すりゃいいだけなんだけどさ
0284デフォルトの名無しさん (ワッチョイ 27e6-hFP2)
垢版 |
2022/05/19(木) 23:10:43.67ID:VcSHhdY40
Windows95の時代にC#があったかな。
0285デフォルトの名無しさん (ワッチョイ 2b68-yvGd)
垢版 |
2022/05/20(金) 00:57:04.11ID:R6FV90Kc0
相談です。
ランチャーを作りたいなと思い起動時は非表示(非アクティブ)に
何かのキーを押されたら表示したいのです。
アプリが非アクティブの時でもキーボードの入力イベントを取得する方法は無いでしょうか?
0287デフォルトの名無しさん (ワッチョイ 0e68-eugl)
垢版 |
2022/05/21(土) 02:00:44.14ID:pmnVOflo0
>>286
サンクス!

WPFで作ってるんだけどグローバルフックを調べて組み込んでみました。
MainWindowをHideするとグローバルフックが効かなくなるので
MainWindowは描画をせずグローバルフックを動かして、
子WindowにWindowを描画してHide/Showするようにしたらなんとか形になりました。
こんなのでいいのかなんだかすっきりせず。
0288デフォルトの名無しさん (ワッチョイ bb5f-fQ5s)
垢版 |
2022/05/21(土) 10:29:06.89ID:XiDxIIx00
>>287
なんでだろ?メインウィンドウからフック仕掛けてる?
Formsの頃の記憶だけど、Application.run以前にSingletonな管理クラス作ってやってた。
そいつからイベント送られてくるようにしてたよ。
それで問題なかったはずだけど、なんか変わったんのかな。
0289デフォルトの名無しさん (ワッチョイ 8b01-H9jD)
垢版 |
2022/05/21(土) 14:05:38.07ID:2Lltosx/0
以前HotKeyで作ったけど中身はグローバルフックなんかな
0290デフォルトの名無しさん (ワッチョイ 5b24-HkEA)
垢版 |
2022/05/21(土) 15:40:41.47ID:4jCCGHc40
Utf8Parser.TryParse(span, out DateTime date, out _, 'O')について聞きたいんだけど、以下の文字列はUtf8Bytesとして
"2022-01-01T00:00:00.0000000Z" ← 28文字のこれなら正常に成功するのに
"2022-01-01T00:00:00.000000Z" ← 27文字のこっちは失敗する

DateTime.TryParseなら後者も成功するんだけどこれはUtf8Parserがポンコツってこと?
それともDateTime.TryParseがオーバー解析してくれてるだけで28文字未満の"O"形式のDateTime投げてくる方が非常識?
0292デフォルトの名無しさん (ワッチョイ 3e2d-5qYK)
垢版 |
2022/05/21(土) 16:15:24.74ID:ec9yQBCj0
>>290
失敗しても仕様の範囲内ぽい

> ラウンドトリップ ("O"、"o") 書式指定子
> "O" または "o" 標準書式指定子は、DateTime 値の "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK" カスタム書式指定文字列と
> DateTimeOffset 値の "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffzzz" カスタム書式指定文字列に対応します。
0293sage (ワッチョイ cebb-8jyA)
垢版 |
2022/05/21(土) 16:43:22.42ID:0fNBsESd0
27文字のが来る状況あるんだっけ?
0294デフォルトの名無しさん (ワッチョイ 0e68-eugl)
垢版 |
2022/05/21(土) 18:38:40.30ID:hT1fnPAH0
>>288
レスありがとう!
MainWindowからフックしています。
シングルトンにはしてないですが、MainWindowは生きているので、
フック自体は破棄されていませんが、どうもダメでした・・・
0295デフォルトの名無しさん (ワッチョイ 4e7b-fxJh)
垢版 |
2022/05/21(土) 21:45:54.24ID:8HM5gfhu0
>>285
特定のキーで表示ならSystem.Timers.Timer使ってGetKeyStateとかでキー入力監視
キーがヒットしたらタイマー止めて目的のウィンドウを表示
ずっと監視するのが嫌でなければ実装はかなり楽な方かと
アプリランチャーならタスクトレイに格納してマウスクリックで表示させての方が使いやすい気がするけど
0297デフォルトの名無しさん (ワッチョイ 0e68-eugl)
垢版 |
2022/05/22(日) 01:44:20.92ID:xpEgvjj30
>>285 です

>>288 さんの
>Application.run以前に
というのをヒントに、WPFなのでrun()は無いけど、Appにコンストラクタを記載しその中でフックを起動して、
キーダウンのイベント内でMainWindowを取得し制御する事で上手く行きました!
その他手法含めご教授してくださった方々有難うございます!
0300デフォルトの名無しさん (ワッチョイ 5b24-HkEA)
垢版 |
2022/05/22(日) 11:48:59.69ID:gmOf9ICx0
>>299
そんな大きなペナルティがあるとは思ってないけど全く変わらないというのはどういう原理で?
JsonDocument.Parse(response.Content.ReadAsStream())みたいな感じでやってるけど、これだとUtf8のままパースされてるよね
0301デフォルトの名無しさん (スッップ Sdba-WhUL)
垢版 |
2022/05/22(日) 15:34:34.14ID:Nn/6kHB8d
用途次第じゃない?
HTTPSの通信に比べればJSONのデコードなんか誤差だから単一の処理で見るなら全く意味ないだろうけど、
もし大量のリクエストを捌くサーバーを作っているならCPUやメモリの使用率を削減することでサーバーのインスタンス数を削減できるかもしれない
0303デフォルトの名無しさん (ワッチョイ f96e-yO3c)
垢版 |
2022/05/29(日) 18:01:05.65ID:Gx8AtDBv0
WindowsFormはそれなりに少し経験はあるんですが行き詰まっているので相談です

centos7にapach上で、これまでhttpd.confにAliasで特定のドキュメントルーツを設定して
phpでつくったWebアプリをいくつか動かしている環境があり、ここに新たに
Blazorサーバやってみようと、dotnetインストールしてrunまではできてます
(配置したdllを実行するserviceをつくってそれも起動可能な状態)

phpでつくったアプリのようにAliasで簡単にできるかなと思ってたらそうでもなく
サイトググるとVirtualHostの例がちらほら

example.com/app1 ・・・ var/www/app1 にphpアプリ配置
example.com/app2 ・・・var/www/app2 にphpアプリ配置
example.com/blazor を新たに配置するにはどの辺調べればいいですかね
MSのドキュメントやBlazorや先日でたNET6の書籍とか見ながらいろいろやってはみたものの
どれもうまくいかず、行き詰まっております(方向性を見失ってます)
リクエストきたものをkestrelに渡してやらなきゃいけないってのはなんとなく理解してますが
VirtualHostとリバースプロキシをきちんと理解しないでできないですかね
0305デフォルトの名無しさん (ブーイモ MM4b-1gLZ)
垢版 |
2022/05/29(日) 19:36:38.11ID:kVtoPC2XM
IISでホストしてApache側でVirtualHostの指定でリバースプロキシすりゃいいよ
頭悪い構成だが、その調子だとリバースプロキシの設定はなんとかなってもどうせdotnetアプリを常時起動する方法が見当つかないんだろ?
0308デフォルトの名無しさん (アウアウウー Sac5-sxTc)
垢版 |
2022/05/30(月) 04:15:11.38ID:JkhndRSZa
数か月ぶりでここ覗いてみたけどまだ結構人がいるみたいでちょっと安心したw

以前は旧FireFoxのChaikaってアドオンをだましだまし使ってたんだが、(それがいよいよ
使えなくなったのが来なくなった理由)今回JaneStyleを入れてみたが、作者さんを批判する訳じゃないが、
UIは25年前のWin98時代のものだし鬱陶しいエロ広告は表示されるし結構萎えるなこれ

C#といっこも関係ない話題ですまん
0309デフォルトの名無しさん (ワッチョイ f96e-yO3c)
垢版 |
2022/05/30(月) 08:09:38.08ID:n9/aIkj20
みなさんレスありがとうございます

>>305
serviceつくって常時起動はできてるかなと思います
>>306 >>307
稼働WEBサーバはhttpsのみなので、ってことは今の構成でそのままっていかないんですね
(Rewriteでhttpをhttpsにしている)
ネットの設定例にある、http://localhost~; をhttpsにしていましたが

ネットで見つけられた設定例って、そのサーバの全アクセスをリバースプロキシさせるようなものがほとんどで
自ドメインの特定のアドレス(上でいう、example.com/blazor)だけを
リバースプロキシさせてdotnetが受け取れるようにってできないもんでしょうか?
できるということであれば、どうにかして調べます

バーチャルホストは複数のドメインを扱ってて、Aliasは同じドメインで複数のドキュメントルートを扱えると
考えているので、やりたいことはバーチャルホストでできないんじゃないかなと思ってるんですが
サブドメインにしちゃえば1つのドメインでもやれますかね
0311デフォルトの名無しさん (ワッチョイ 4910-yO3c)
垢版 |
2022/05/30(月) 14:27:32.28ID:rKCebS3v0
>>310
ありがとうございます

後者の方はhttpでうまくできました
ただ、実際はユーザーからhttpsでつながせたいのですが
証明書がないのでブラウザで開いても動作確認できず
メインドメインのSSL証明書だと、ワイルドカードだと割高なのでドメインを
追加するしかないかなと思うのですが、
VirtualHostの設定内に取得した証明書の設定書いてやれば
httpsで動作させることができると考えてもいいんでしょうか?
下みたいな感じで。前者の方ならそんな手間も費用もいらないんでしょうが、方法がみつからない

<VirtualHost *:443>
ServerName hoge.example.com
ProxyPreserveHost On
ProxyPass / https://localhost:5001/
ProxyPassReverse / https://localhost:5001/
RewriteEngine on
RewriteCond %{HTTPS} on
RewriteCond %{HTTPS:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTPS:CONNECTION} Upgrade$ [NC]
RewriteRule /(.*) ws://127.0.0.1:5001/$1 [P]
0314デフォルトの名無しさん (ワッチョイ 4910-yO3c)
垢版 |
2022/05/30(月) 16:31:04.22ID:rKCebS3v0
>>311はいちど撤回します

Program.csでapp.UseHttpsRedirection()が抜けてたのでそれを加えつつ
前者の方をLocationでなんとかhttpsでの表示までたどり着きましたが
どうも完全な動作をしてない様子です
(Blazorの学習用のテンプレートでメニューやテキストだけだけ羅列された状態)

<Location "/blazor">
ProxyPreserveHost On
ProxyPass http://localhost:5000/
ProxyPassReverse http://localhost:5000/
RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
RewriteRule /(.*) ws://127.0.0.1:5000/$1 [P]
</Location>
もう一息な感じなんですが・・・
0316デフォルトの名無しさん (ワッチョイ 236e-fUg7)
垢版 |
2022/06/18(土) 22:52:15.42ID:5N4YYnEs0
古い話題で恐縮なんですが質問です。
https://docs.microsoft.com/ja-jp/dotnet/standard/asynchronous-programming-patterns/calling-synchronous-methods-asynchronously#executing-a-callback-method-when-an-asynchronous-call-completes

IAsyncResult result = caller.BeginInvoke(3000,
out dummy,
new AsyncCallback(CallbackMethod),
"The call executed on thread {0}, with return value \"{1}\".");

begininvokeで呼び出されたのが終わるとき、callbackmethodが呼び出されることまではわかりました。
0317デフォルトの名無しさん (ワッチョイ 236e-fUg7)
垢版 |
2022/06/18(土) 22:53:28.07ID:5N4YYnEs0
途中送信すみません。

callbackmethodを見ると引数にIAsyncResult arとありますが、これはどこから来たものでしょうか?
begininvokeでは呼び出す関数を指定してはいますが、その関数に渡す引数は指定していないように見えます。

よろしくお願いします。
0320デフォルトの名無しさん (ワッチョイ 9a01-ylO7)
垢版 |
2022/06/19(日) 08:04:27.42ID:Nk1h87ob0
>>317
> callbackmethodを見ると引数にIAsyncResult arとありますが、これはどこから来たものでしょうか?
.NET側で作成して必要な情報をセットしてCallbackMethodを呼び出すようになってるだけだよ
0325デフォルトの名無しさん (ワッチョイ a702-KtZt)
垢版 |
2022/06/19(日) 14:14:38.43ID:YZZ11uFp0
CのDLLから呼び出し規約cdeclのコールバック用の関数ポインタを要求された場合、
C#のデリゲートを受け渡し出来る方法、もしくはC#側でcdeclの関数を作る方法はありますか?
0339デフォルトの名無しさん (アウアウウー Sad3-7uco)
垢版 |
2022/06/30(木) 08:36:25.96ID:vvnSi9+Ba
csharpでよかったのに
0342デフォルトの名無しさん (アウアウウー Sad3-sbT5)
垢版 |
2022/06/30(木) 11:25:19.25ID:l3rHcZB/a
Cpp って C pre processor のことだろ
0343デフォルトの名無しさん (ワッチョイ 3f3e-sii1)
垢版 |
2022/06/30(木) 23:55:35.01ID:yANzD8P40
底辺職業ランキングで c# プログラマが一位を獲得。

底辺職業の条件 3つ

1. 同じことを繰り返す。
for ループつかってるよね。

2. 誰でもできる
スタックオーバーフローを見れば、c#プログラミングなんて誰でもできる。

3. 体力勝負

https://i.imgur.com/0BRVa3M.jpg
c# アプリケーションのビルドが含まれているとのこと。
0345デフォルトの名無しさん (ワッチョイ 0f63-tCSL)
垢版 |
2022/07/01(金) 15:22:31.26ID:svwhpzKm0
VisualStudio 2015 ターゲットフレームワーク .Net Framework 4.5.2
Shownイベントで発生した例外をApplication.ThreadExceptionでキャッチ
したいのですが期待する例外が届きません。
何が原因なのでしょうか。

public partial class Form1 : Form {
[STAThread] static void Main() {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.ThreadException += ShowException;
Application.Run(new Form1());
}
private static void ShowException(object sender, ThreadExceptionEventArgs e) {
MessageBox.Show(e.Exception.ToString());
}
private void Test() {
try {
throw new Exception("1 起点");
}
catch (Exception ex) {
throw new Exception("2 期待する例外", ex);
}
}
public Form1() { InitializeComponent(); }
private void Form1_Shown(object sender, EventArgs e) { Test(); } //1が届く
private void button1_Click(object sender, EventArgs e) { Test(); } //2が届く
}
0348デフォルトの名無しさん (ワッチョイ cf78-auNL)
垢版 |
2022/07/02(土) 00:00:46.05ID:thG8tJ450
>>345
https://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/Form.cs,4908
理由は分らないけど↓が原因っぽい
this.BeginInvoke(new MethodInvoker(CallShownEvent));

試しにbuttun2を追加して以下のコードを実行したら同じ現象が発生した
private void button2_Click(object sender, EventArgs e) { BeginInvoke(new MethodInvoker(Test)); }
0351デフォルトの名無しさん (ワッチョイ 8a01-BQ8I)
垢版 |
2022/07/02(土) 09:45:46.45ID:At3W7bIA0
>>349
受託でも自社でもいいけど売り物の開発したことないのか?
新しいVSでる度に新バージョンに移行なんてやってられないぞ
なんのためにMSがサブスクで過去バージョン使えるようにしてると思ってるんだよ
0352デフォルトの名無しさん (スッップ Sdaa-8NLY)
垢版 |
2022/07/02(土) 10:15:43.97ID:2EN85JI9d
VS2022スレに書くか迷ったけどスレの勢いがありそうなこちらに

razorページ書いてて、コード部分や変数部分が色が変わるけど、ページスクロールさせていくと一定の場所からプロパティの色がとぶ
上に戻ると表示は直る、消えているときは数秒ごとに付くべき色が一瞬ちらつく
メソッドの定義なんかは色が付いたまま

考えられる原因ってありますかねぇ
伝わるかどうか不安ですが、、、
0365デフォルトの名無しさん (スプッッ Sd43-UXSH)
垢版 |
2022/07/11(月) 08:41:37.48ID:9VbmZwXxd
blazor触ってるんですが、デバッグでチェックしていると
開発ツールでbodyタグの最後に
live-preview-rootというタグが入って
hiddenのdiv内にsrcがYouTubeのアドレスの入ったiframeが入るんですが、なんですかねこれ、、、

アドレスはyotubeのあとにstaticやらscheduleなどが続いていて、踏んでもソースがでるだけ
ページ表示させただけでは出てなくて、開発ツールの要素にだけ出てくるのですが、ビルドしてサーバに置いた場合は出ない、、、あくまでもデバッグ中のページのみ

そもそもプロジェクト内にはYouTubeの文言はないし、クロームでもedgeでもでます
vsの仕様なのか、なんなのか、、、
心当たりある方いますか?
0366デフォルトの名無しさん (スプッッ Sd43-UXSH)
垢版 |
2022/07/11(月) 08:44:44.50ID:9VbmZwXxd
ちなみにテンプレートからの新規作成プロジェクトの時点出てるので、ソースそのものの問題ではないと思うのですが
0368デフォルトの名無しさん (スプッッ Sd43-UXSH)
垢版 |
2022/07/11(月) 12:21:14.47ID:iwvb/poMd
>>367
最初に気づいたのがEdgeで、Chromeでも同じでした
Firefoxだと、live-preview-root #shadow-root(open)までで
iframeにYouTubeへのリンクは出ませんでした
EdgeってChromeベースで、Googleのスクリプトみたいなのが
勝手に差し込まれるんですかね、、、
0370デフォルトの名無しさん (アウアウウー Sa09-WuFg)
垢版 |
2022/07/30(土) 18:54:16.32ID:jErZjSQja
皆さん、インクリメントとデクリメントについてどのようにお考えですか?
個人的にこれを使うことに抵抗があります(無知が理由で)
特に、内部メソッド等にローカルなintを渡して処理後に1だけ加算したいときってよくあると思うんですが、
int num = 0;
M(num); num++; これと
M(num++); これは、本当に常に一致してくれるんでしょうか?
IL上での違いはこんな感じでした

// M(num);
IL_0003: ldloc.0
IL_0004: call void C::'<M>g__M|0_0'(int32)
IL_0009: nop
// num++;
IL_000a: ldloc.0
IL_000b: ldc.i4.1
IL_000c: add
IL_000d: stloc.0
IL_000e: nop

// M(num++);
IL_0003: ldloc.0
IL_0004: dup
IL_0005: ldc.i4.1
IL_0006: add
IL_0007: stloc.0
IL_0008: call void C::'<M>g__M|0_0'(int32)
IL_000d: nop
IL_000e: nop

これって最終的には同じコードなんでしょうか?
可読性以外の差異がありましたら教えていただけないでしょうか。よろしくお願いします
0373デフォルトの名無しさん (テテンテンテン MMee-D2l6)
垢版 |
2022/07/30(土) 19:48:51.18ID:Qp1EMWGTM
あれ、
「m(++num)」ってインクリメントが前なら引数が加算後の1になるのは分かるんだけど
「m(num++)」だと加算前の0が引数になるんじゃ?と思った

個人的にはインクリメント結果を代入したり引数にしたりする使い方は禁忌とすべきだと思う
使っていいのは単項目で「i++;」みたいなことをするときだけにしておきたい
できることならfor (var i=0; i<length; i++)みたいな定型for以外は面倒でも
「i = i + 1;」と書かせたいくらいだなあ
0381デフォルトの名無しさん (ワッチョイ f102-1wwR)
垢版 |
2022/07/30(土) 23:41:50.24ID:Syvf1c+c0
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/expressions#1141-general

Operands in an expression are evaluated from left to right.
Example: In F(i) + G(i++) * H(i),
method F is called using the old value of i,
then method G is called with the old value of i, and,
finally, method H is called with the new value of i.
This is separate from and unrelated to operator precedence.
0383デフォルトの名無しさん (スップ Sd9a-V/2h)
垢版 |
2022/08/01(月) 13:24:37.35ID:kNeknzrgd
複数の評価が連続した場合の副作用完了点は大抵の言語で規定されてない
例えば上の様に関数に与える引数の中の式で副作用を起こす場合これに該当する
0386デフォルトの名無しさん (ワッチョイ ebbb-qy/x)
垢版 |
2022/08/08(月) 16:57:09.86ID:0tCAtbwJ0
この辺の仕様全然詳しくないけどさ
++numとか分かりにくいし行儀悪いし個人的にはいらないと感じる
num++だけありゃいい
for文の++iteとかこんがらがるからマジやめてほしい
0388デフォルトの名無しさん (ワッチョイ 1324-SMvG)
垢版 |
2022/08/09(火) 11:28:31.41ID:fi8MqYS+0
>>386
for (int i = 0; i < end; ++i)とした方がコンパイラへの負担が少なく最適化が効きやすかった時代があったからな
前方演算は一時バッファが必要ないからね
そもそも前方演算は普通に多用するし意味も一目で分かると思うが
0390デフォルトの名無しさん (ワッチョイ ebbb-qy/x)
垢版 |
2022/08/09(火) 12:52:49.39ID:r/lnXFyZ0
>>388
書き方が悪かったな
記法はnum++か++numのどっちかに限定されてりゃ機能的には前方演算だけでいいと思ってるよ
for文の中とかで++iteって書くかite++って書くかで挙動が変わるのが直感的じゃないって話な
そもそもC#はforeach使うんだから++ite or ite++なんてC/C++でしか見ないし
使い分けるメリットより処理の流れがぱっと見で分かりにくくなるデメリットのがでかい
0392デフォルトの名無しさん (ワッチョイ 1301-lJ3c)
垢版 |
2022/08/09(火) 13:59:36.63ID:1M0VmsOK0
そりゃ整数とかなら n++ でも ++n でもほぼ変わらんコード吐くけどクラスのインタンス変数だと n++ は前の値をコピーしとかないとダメなケースがあるからまとめられたら困るよ
0398デフォルトの名無しさん (ワッチョイ c224-lIuZ)
垢版 |
2022/08/18(木) 12:03:10.49ID:4iAYLuqc0
.Net Core以上だとビッグエンディアン環境にも対応するようだけど、ターゲットOSをWindowsにしてビルドする限りは100%リトルエンディアンって認識で大丈夫?
窓用である限り絶対にLEであるならLEなバイナリファイルに対してポインタ使いたいんだけど
0399デフォルトの名無しさん (ワッチョイ 2e2c-O3lh)
垢版 |
2022/08/18(木) 12:14:08.73ID:1q98B+xd0
そこまで実行環境限定できないなら
Main直後にエンディアン調べてビッグエンディアンでは動きませーんってメッセージだしときゃいいんじゃね
今なくても未来永劫ないとはいえんわけだし
0402デフォルトの名無しさん (ササクッテロル Spf1-18Wl)
垢版 |
2022/08/18(木) 13:30:14.03ID:oAeyX7Mzp
国葬されました
0408デフォルトの名無しさん (ワッチョイ 4d2f-O3lh)
垢版 |
2022/08/19(金) 00:53:24.27ID:OSKKwF+I0
バイナリ「データ」のファイルなら、自分でフォーマット決めとけばいいだけじゃ?

コードを直接バイナリファイルでどうこうするって話?
.NETのプログラムってVM上で動いていると思ったんだが、CORE以降だと違うのか?
0410デフォルトの名無しさん (ワッチョイ dd5f-vHmA)
垢版 |
2022/08/19(金) 06:23:56.59ID:YuhQFNoo0
マシン語やアセンブリ言語だと
CPUの仕様によってコードの並び順を考えなきゃいけないだろうが
C#ではコンパイラで全部やってくれるから気にしなくて良いんじゃないの
0415デフォルトの名無しさん (ワッチョイ eebb-JjaS)
垢版 |
2022/08/30(火) 23:48:03.75ID:wcZ40xDv0
IEnumrable<T>に.ForEach拡張がデフォルトで用意されてないのは端的に言って何故?
List<T>にはあるのに
↓の問題は?速度?

public static void ForEach<T>(this IEnumerable<T> items, Action<T> action) {
 foreach (var item in items) {
  action(item);
 }
}
0417デフォルトの名無しさん (スップ Sdea-TRym)
垢版 |
2022/09/12(月) 18:39:52.16ID:Ws5FMSEUd
ソートの質問です。

タブ区切りのCSVファイルを1行ずつそのままlistに入れた後、list の区切り[16]と[17]に数字が入っていてこれを[17]優先、次に[16]で降順ソートがしたいです。
調べるとラムダ式という便利そうなものが引っかかるのですが、区切って使用することは出来るんですかね?
0423デフォルトの名無しさん (ワッチョイ 3abd-TRym)
垢版 |
2022/09/12(月) 23:47:17.20ID:dk7j9tfb0
>>419
これで読み込んでソートまでいけるんですか?凄いですね。
明日試してみます。ありがとうございます。
0425デフォルトの名無しさん (ワッチョイ 3d24-/v0B)
垢版 |
2022/09/13(火) 09:51:22.32ID:ezVKzpwg0
>>423
File.ReadAllLines("data.csv").Select(line => line.Split(','))
↑ここまでがcsvをカンマで区切るコードでタブ区切りならSplit('\t')に変えてね
上で言われてるようにSplitだとセル内文字として'\t'が入ってると全てズレてきてしまうのでガチでやるなら専用のパーサーライブラリに頼るべきだが
0433デフォルトの名無しさん (ワッチョイ ea2c-aQ9k)
垢版 |
2022/09/14(水) 00:45:14.45ID:Y/jBtdol0
Ruby で作った

タブ区切りの入力ファイル・input.tsv が以下の時、
-1 1.1
-2 -2.2
5 1.1
3 3.3
1 1.1

require 'csv'

# タブ区切りで、:numeric は、:integer と :float の組み合わせ
options = { col_sep: "\t", converters: :numeric }

table = CSV.read( "input.tsv", options )

sorted_ary = table.sort_by do |col_0, col_1|
[ col_1, -col_0 ] # col_1 の昇順で、col_0 の降順
end

p sorted_ary

出力
[[-2, -2.2], [5, 1.1], [1, 1.1], [-1, 1.1], [3, 3.3]]
0436デフォルトの名無しさん (ワッチョイ 1e66-OVjx)
垢版 |
2022/09/16(金) 15:43:00.15ID:wH2I1UzM0
Excelのセル中途中改行、途中ダブルクォーテーション、途中¥
の全てが複雑に1つのセルに入ってても問題なくExcelと同じ解釈になるのが、事実上の要件やろな。
0437デフォルトの名無しさん (アウアウウー Sa21-QIIi)
垢版 |
2022/09/16(金) 16:31:46.42ID:1woCku44a
カンマと改行と"を何らかの方法でエスケープすればスプリットでも問題ないな
CSV化はエンコーディングした文字列をstring.Joinでカンマ区切り
読み取りはカンマでスプリットした後デコード
エンコーディングにBASE64とかパーセントエンコーディングが使えれば面倒無さそうな気がしたがどっちも半角記号をそのまま通すからだめだわ
自作しても大した手間はかからんけどCsvHelper使う方が明らかに楽だからなあ
あとExcelで開いて文字化けと思われる可能性も無くはない
0439デフォルトの名無しさん (アウアウウー Sa21-QIIi)
垢版 |
2022/09/16(金) 16:50:44.61ID:1woCku44a
>>437
正規表現とDictionary<T>を使えばもう少しはエレガントに書けるし速度のためにはLengthの倍の大きさのバッファを用意してSpan<char>を使うべきなのかもしれないけどイメージとしてはこんな感じ
string Encode(string src) => src.Replace("=", "==").Replace("\r", "=r").Replace("\n", "=n").Replace(",", "=c").Replace("\"", "=q");
0450デフォルトの名無しさん (スッップ Sdbf-6Fps)
垢版 |
2022/09/20(火) 06:26:16.07ID:PUPPAQzJd
var 〇〇
これってなんでも型ってことですか?ネットで検索するとよく見かけるんですが使い分けとかあるんですか?
0454デフォルトの名無しさん (アウアウウー Sa43-ybmn)
垢版 |
2022/09/26(月) 15:02:13.04ID:DEOTfi9Xa
int[] A = new int[100];
A[i]にfor文で0-9番目の要素まで数値格納
Array.Sort(A);

これやるとAの0-89番目の要素が0になって肝心の入力が後ろに行ってしまう

int[] AA = A.where(item => item != 0).toarray();
に配列を作り直すと入力が0だとそれも消してしまう…
何かいい方法ありますかね…
最初からListつかって以外で
0457デフォルトの名無しさん (スッップ Sd32-xTiZ)
垢版 |
2022/09/28(水) 18:24:51.59ID:MnFbtzLdd
フォルダ削除する際に、削除するフォルダを誰かがそのフォルダを開いてる?使用してる状態だとエラーになるのを防ぐ対処法って何かありますか?
0463デフォルトの名無しさん (ワッチョイ c707-mISd)
垢版 |
2022/09/28(水) 21:32:08.42ID:9HUYdTWA0
アンドロイドアプリの開発してるならだいたいadbのせい
powershellでps adb|killとやると削除できるようになる
それでも削除できなければリソースモニターのハンドル検索にフォルダ名を入れれば出てくる
0467デフォルトの名無しさん (ワッチョイ c707-mISd)
垢版 |
2022/09/29(木) 07:29:06.13ID:nA4Nikqb0
こういう「何が言いたいのか日本語レベルでわからん質問」を投げて回答しようとした人たちが首をひねってるのを見て何も言わない質問者って何なんだろうな
コミュ障すぎるだろ
0468デフォルトの名無しさん (アウアウウー Sa2f-JXLb)
垢版 |
2022/10/10(月) 11:08:17.10ID:G8ljNDHoa
bool isTrue;

if (isTrue) isTrue = false; // ブロック無し
else return;

// 処理

isTrue = true; // ここから
return; // ここまでの間は気にしない

これってスレッドセーフになってくれますか?よろしくお願いします!
0472デフォルトの名無しさん (アウアウウー Sa2f-ndxx)
垢版 |
2022/10/11(火) 12:23:42.52ID:bRmHnhd0a
lockすりゃええ
0478デフォルトの名無しさん (シャチクモバ MM0d-Y/ct)
垢版 |
2022/10/25(火) 16:14:21.86ID:2SxwmPbyM
超初心者+わかりにくい文章で、ごめんなさい。
今までは、.NetFramewor4.72でWinFormを使って実装していました。

今、.Net6.0 の WinFormで実装する必要が出てきたので

.Net6.0 で実装しています。
.NetFramewor4.72 でWindowsBaseの参照の追加で使えていた
System.Windows.Threading.Dispatcher が

.Net6.0 では、「依存関係」の「COM」で設定しようとしても、
WindowsBaseが表示されず、WindowsBaseを設定できなくて
System.Windows.Threading.Dispatcherが使えなくて、困っています。
同じような課題を諸先輩方は
どのように解決されましたか?
0479デフォルトの名無しさん (ワッチョイ 812d-vPO9)
垢版 |
2022/10/25(火) 16:30:57.64ID:PDW864Oy0
>>478
バージョンは正確に。4.7.2ね。
Dispatcher.Invoke()を使いたいってことなんだろうけど、これはかなり古い方法。
async、awaitを使うか、TaskとTaskScheduler.FromCurrentSynchronizationContext()を使う。
0480デフォルトの名無しさん (シャチクモバ MM0d-Y/ct)
垢版 |
2022/10/25(火) 16:49:48.49ID:ffh4XuaFM
>>479
アドバイスありがとうございます。

バージョンは、4.7.2です。
いただいた内容で考えてみます。
0482デフォルトの名無しさん (ワッチョイ 7e02-Y/ct)
垢版 |
2022/10/25(火) 19:59:37.22ID:cA91aZUZ0
>>481
コメントありがとうございます。

478です。
現在すすめているのが、
Winformで進めているんです。

アドバイスいただいた内容を参考にしてみます。
0484デフォルトの名無しさん (ワッチョイ 7e02-Y/ct)
垢版 |
2022/10/25(火) 22:50:11.68ID:cA91aZUZ0
>>483
プロジェクトファイルに
<UseWPF>true</UseWPF>
<UseWindowsForms>true</UseWindowsForms>

両方を追記しましたら、

using System.Windows.Threading;
が使えるようになり、
Dispatcher
も使えるようになったみたいです。

アドバイス本当にありがとうございます。
m(_ _)m
0487デフォルトの名無しさん (ワッチョイ 895f-Y/ct)
垢版 |
2022/10/26(水) 16:16:56.80ID:V1iY34//0
初心者が問題解決するまで先輩たちは休憩室で麻雀打ってるよ
0488.NET MAUI HighScool (ワッチョイ 1301-cPfV)
垢版 |
2022/10/31(月) 18:17:47.74ID:jJ3XoyNs0
今日知ったんだがSilk.NETってものがあるみたいね
これ一つでマルチメディア系のものを使用できるようになるみたい
OpenGLやDirectXとか
いかんせん情報ないけどどんな感じなんだろうか?
https://dotnet.github.io/Silk.NET/
0490.NET MAUI HighScool (ワッチョイ 1301-cPfV)
垢版 |
2022/10/31(月) 19:36:25.67ID:jJ3XoyNs0
>>489
一応サンプルやチュートリアルはあるからやってみるかな
マルチプラットフォーム対応は俺からしたら注目度高い
.NET MAUIでも使えるのか知らんけど(Xamarinはいけるらしい)
0491デフォルトの名無しさん (アウアウウー Sa9d-nuRl)
垢版 |
2022/11/03(木) 11:12:57.19ID:JkKs3AuYa
<Frame>
<カスタムコントロール>
<Label/>
<Label/>
<Label/>
</カスタムコントロール>
</Frame>

wpfでこの構成のlabelからダブルクリックイベント取得する方法教えて

単純にイベント追加するだけじゃ取れなかった。バブリング、トンネリング、添付イベント辺りが関係有りそうだなぁと思って色々調べたんだけどよく分かんなくて
0492.NET MAUI HighScool (ワッチョイ 0901-cPfV)
垢版 |
2022/11/03(木) 11:14:57.35ID:P57hKE9o0
ラベルじゃなくてフレームにイベントつければ?
0499デフォルトの名無しさん (アウアウウー Sa9d-gxoH)
垢版 |
2022/11/03(木) 11:56:03.33ID:irjlHMAba
Frameの中のコントロールがクリックを拾えなくなる話なんて聞いたことがないしさすがにそれは異常だな
まあフレーム自体が拾えるとしたらその時のカーソル位置でコントロールは特定できるし最悪それでごまかすしかないかな
どこかでイベントの伝播をせき止めてるかもしれんくらいしか想像できん
0500デフォルトの名無しさん (アウアウウー Sa9d-A8jD)
垢版 |
2022/11/03(木) 12:06:53.27ID:h5ZIjV9Ha
>>491
そのカスタム、じゃなくてユーザーコントロールでルーティングイベントを止めてるんじゃね?
0506デフォルトの名無しさん (ワッチョイ b342-Tk+f)
垢版 |
2022/11/03(木) 16:15:34.18ID:tNReOobE0
もしかするとFrameのある親フォームにStyleのEventSetterでイベントハンドラを記述して、
UserControlのイベントを取ろうとしていたのかな?
そういう分割は不可能だわ
0507デフォルトの名無しさん (アウアウウー Sa9d-nuRl)
垢版 |
2022/11/03(木) 16:47:37.11ID:eWAgWGuWa
なんかダメそうだからイベント直接取るのは諦めたわ

クリックした座標の下にあるオブジェクトを取得みたいなのはユーザーコントロール内のオブジェクトでも出来る?
0510デフォルトの名無しさん (ワッチョイ 4907-gxoH)
垢版 |
2022/11/03(木) 17:10:49.73ID:0QCo1mM00
そこから説明するんか
バインディングできるよう依存プロパティを作りアタッチできるようイベントを作り今のページに依存せず他のページでも使えるように作る
0512デフォルトの名無しさん (ワッチョイ a95f-hZr9)
垢版 |
2022/11/03(木) 19:43:16.04ID:HObwb99t0
Frameの中にはPageを入れるのが普通で
だからあの設計だとPageを使うことによって自然にXamlが分離される設計になると思う
0514デフォルトの名無しさん (ワッチョイ 694f-hZr9)
垢版 |
2022/11/03(木) 21:42:56.38ID:pRCMKKI10
普通の状況ではLabel.MouseDoubleClickイベントは発生するという前提で
(.NET Framework 4.8で試したら普通に発生したけど)
PreviewMouseDoubleClickイベントを使ってみる
無理ならコードで
theLabel.Add(Control.PreviewMouseDoubleClickEvent, handler, true);
とやってみる
0516デフォルトの名無しさん (ワッチョイ a95f-hZr9)
垢版 |
2022/11/03(木) 21:52:18.63ID:HObwb99t0
コントロール選び間違ってないか?
ラベルってダブルクリックするもんじゃないと思うんだけど
0517デフォルトの名無しさん (ワッチョイ 996e-ju0G)
垢版 |
2022/11/04(金) 02:05:02.79ID:AmCalnOD0
C#の言語についての質問じゃなくて申し訳ないんですけど
C#使ったウェブ開発って今需要どれくらいあるもんなんでしょうか。肌感覚程度でいいんですが
これまでの仕事もっぱらデスクトップアプリ開発ばっかだったので。路線変更したいんです
0518デフォルトの名無しさん (ワッチョイ 694f-hZr9)
垢版 |
2022/11/04(金) 03:32:21.68ID:xdVLdIYL0
KENTA
未経験からのエンジニア転職の必須教養【技術知識編】
www.youtube.com/watch?v=Q1c09rrhTjo

奇をてらって、Laravel, Django を選ぶな。
転職先が多い、Ruby on Rails が有利。
キャリアパスも、Rails → Go だけ。
RUNTEQ、東京フリーランスのデイトラなど、ほとんどのサロン学校も、Rails。筑波大学とかも

デジタル庁さんのエンジニア求人が炎上してる件
www.youtube.com/watch?v=2ONVxwmOkn4

C# のバックエンド経験が3年という条件に、彼は0.1% もいないと言ってるw

ベンチャーは、ほとんどRails。
食べチョク、Wantedly, Zenn, Qiita, Note、世界最速のdev.to など

そもそも、バックエンドにWindows が無い。
今のシステムは、Docker ばかりだから、DockerはLinux だけの技術

Linux, Docker, AWS などが必須。
だから米国年収では、Rails, AWS Solution Architect が、2千万円近くになっている。
最も稼げる資格。チート職
0519.NET MAUI HighScool (ワッチョイ c101-cPfV)
垢版 |
2022/11/04(金) 06:20:36.90ID:Od40PLDa0
ほんと日本ってRuby on Railsって多いんだな
日本とポリネシアだけがRuby on Rails>ASP.NETみたいだ
0521518 (ワッチョイ 694f-hZr9)
垢版 |
2022/11/04(金) 08:33:40.10ID:xdVLdIYL0
Ruby on Rails はShopify, Airbnb など、米国で時価総額1兆円以上の企業も多い

Github は、Go へ移行するとか?
一方、Gitlab はRailsを使い続ける宣言をしている

ガーシーのサロンなどで使っている、Mastodon はRails 6。
作者のドイツのオイゲン・ロホコは、PHP からRailsへ変えた。
Rubyの方が可読性が高いから
0523518 (ワッチョイ 694f-hZr9)
垢版 |
2022/11/04(金) 11:23:50.82ID:xdVLdIYL0
asp.net は、Windows じゃないの?

今のシステムのほとんどがDocker で、
DockerはLinuxだけの技術だから、プロはLinuxしか使わない。
Windowsを使う香具師は、まずいない

それに、WindowsのOSの本も、ほぼ無い。
Linuxの本ばっかり

Docker Desktop には、Kubernetes も入っているけど、
AWS, Docker, Kubernetes がほとんど

Kubernetesが無ければ、オーケストレーションできないし、
Windowsではシステム構築運用できないでしょ

Windowsは数十年前の技術じゃないの?
それか、プロじゃなくて、単に会社内のシステム運用部門が使っているだけじゃないの?
アマチュア
0525.NET MAUI HighScool (ワッチョイ fb01-cPfV)
垢版 |
2022/11/04(金) 11:50:41.09ID:RgZTpa+F0
スタックオーバーフローはASP.NET
0526デフォルトの名無しさん (スッップ Sd33-wVCK)
垢版 |
2022/11/04(金) 11:52:55.47ID:NvjwOVKTd
基地外の援護をするつもりはないが>>522のASP.NETのシェアの内訳は大半がClassicかMVCだろう
絶賛急降下中のオワコンルビ糞よりは遥かにマシだが、今後10年でどれだけシェアを落とさずにCore系へ移行できるかが勝負だね
0528518 (ワッチョイ 694f-hZr9)
垢版 |
2022/11/04(金) 12:02:24.77ID:xdVLdIYL0
例えば、典型的なウェブ開発ベンチャーの求人情報は、

マザーズのSKIYAKI は、Rails, AWSを用いたWebサービス開発。
食べチョクのビビッドガーデンは、Rails, AWS/GCP

Wantedly などに一杯ある
0531デフォルトの名無しさん (テテンテンテン MMeb-e1kA)
垢版 |
2022/11/04(金) 12:14:53.23ID:525E7fetM
よく知られてる大手企業でも内製システムは普通にWindowsだらけ
社内SEがLinux知らんとかVB6あがりとかが多いし、そういった人達は社内対応に追われて新しめの技術に触れるのが難しい
0532518 (ワッチョイ 694f-hZr9)
垢版 |
2022/11/04(金) 12:16:47.30ID:xdVLdIYL0
Linux コマンド、bash, シェルスクリプトの本は一杯あるけど、
Windows のコマンド・シェルの本など、ほとんどない

まず、サーバーが管理できないし、OSS のライブラリも無いでしょ。
プロじゃなくて、アマチュアがやってる社内システムだけでしょ

Windowsのシステム構築運用を勉強しても、転職できない。
まず、勉強環境がないので、勉強できないし

バックエンドエンジニアがLinuxじゃなくて、
なぜWindowsを勉強したのですか? と聞かれても、返答に困る

クラウドの汎用的な技術じゃないから、雇われない。
CP932 とかWindowsはパソコン用で、ウェブ系ではないから、
ウェブ開発企業を渡り歩く事はできない

ウェブ系は、Linux, UTF-8 だから
0535518 (ワッチョイ 694f-hZr9)
垢版 |
2022/11/04(金) 12:29:30.99ID:xdVLdIYL0
>>530
数字だけじゃなくて、その内容も見るべき。
例えば、商品の価格だけで決めたら、低品質かも知れない

asp.net は、どういう香具師が使っているのか? とか

YouTube で有名な雑食系エンジニア・KENTA が本を出している
「21世紀最強の職業 Web系エンジニアになろう」

Microsoft 自体がLinux 技術者を採用して、Linux財団に属して開発している。
Docker と同じものを、Windows で作れなかったから、
あきらめて、Linuxを使ってクラウドをやる事にした
0537デフォルトの名無しさん (ワッチョイ 8bbb-/OGx)
垢版 |
2022/11/04(金) 12:34:45.68ID:7HgZbeW40
>>532
君が部下で、サーバ選定の際にこんな「youtubeの受け売り」的な比較持ってこられたら、君をクビにして反動でWindoesサーバ使いを雇っちゃいそうだわ
情報が古いor間違ってるから、一度自分で調べてみろよ
0539518 (ワッチョイ 694f-hZr9)
垢版 |
2022/11/04(金) 13:04:09.10ID:xdVLdIYL0
でも、今の一流文化人の著者は、YouTube, Udemy ばっかり

Rails のKENTA, AWS のくろかわこうへい、
Python のキノコード、React のじゃけぇ

国会議員のガーシーも、YouTuber
0541デフォルトの名無しさん (ブーイモ MMeb-cv0M)
垢版 |
2022/11/04(金) 13:14:14.74ID:K31HmSYJM
>>534
はい?
0542デフォルトの名無しさん (ワッチョイ 996e-ju0G)
垢版 |
2022/11/04(金) 16:44:36.57ID:AmCalnOD0
>>522を見るとPHP>>ASP>>その他って感じか
あとrubyが日本だけってのも面白いですね。やっぱ日本生まれってことで贔屓目になるもんなんでしょうか
色々参考になりました。ウェブの勉強始めるにあたってASPが悪くない選択肢だというのはわかりました
0543デフォルトの名無しさん (ワッチョイ 698e-W6w7)
垢版 |
2022/11/04(金) 17:02:37.38ID:hiJJnZje0
突然増えてると思ったらまたRubyキチガイが暴れていたのか
終わりそうなのを感じで焦っているのだろうな

早く現実を見ようや

Rubyは終わりました
0547デフォルトの名無しさん (ブーイモ MMdd-wVCK)
垢版 |
2022/11/04(金) 23:35:37.50ID:SVCOtxJrM
Web系で在日外人の採用活動やってるけど最も得意とする言語をJavaScript/TypeScriptとしてる求職者が圧倒的に多く、第2言語としてはGoがそこそこ人気
時々ゴリゴリのエンタープライズ系の経歴でJavaとC#が得意ですというのもいるが落とす
0551デフォルトの名無しさん (オイコラミネオ MM91-zlm6)
垢版 |
2022/11/05(土) 09:44:58.15ID:yYAK326QM
>>550
あの要件見て失敗するなと思った
asp.net三年以上経験のあるやつってそんなにいない

あの条件はエリートじゃなく仕事が嫌になって複数回転職した人の経歴
そんな要求してくるなんて馬鹿なんじゃないかと
0552デフォルトの名無しさん (アウアウウー Sacd-Aj/S)
垢版 |
2022/11/05(土) 09:51:02.26ID:EyXCsWHVa
>>551
ゼロということはないし、実際特定の人を起用するための出来レースかもしれん
役所というのは面倒なところで「この人に頼みたい」と思っても勝手に頼めない仕組みになってるんだわ
0556.NET MAUI HighScool (ワッチョイ 9201-84Ua)
垢版 |
2022/11/05(土) 11:27:09.93ID:h7cdm6j10
ASP.NET MVC作るのクソ簡単だと思ったけどそうじゃないのか?
APIコントローラー作るのクソ楽だった
0558デフォルトの名無しさん (アウアウウー Sacd-nsye)
垢版 |
2022/11/05(土) 16:09:33.13ID:6F6CKmgia
System.Memory<T>について教えてください。
MemoryがSpanと相性が良いことや、ArraySegmentよりもパフォーマンスが良い理由はなんとなく分かりました。
ではこの場合、どっちの方が早くなるんでしょうか?

int[] array = new int[8]; // フィールドにint型配列を用意する

void Method(int index) {
///// Memory<int> memory = array.AsMemory(0, 8);
//// [1] array[index]を参照して操作
//// [2] memory.Span[index]から参照して操作
}

どういうケースなのかが重要だとは思うんですが、MemoryのSpanパイプ的な用途以外での使い道がなかなか見えてきません。
今回の場合はフィールドを見ていいので、Slice等を考えなければMemoryインスタンスへの参照を増やしているだけなんでしょうか?
array.AsMemory(0,2)くらいに範囲を絞ると高速になる、なんてことは無いんじゃないかなと思ってます。
ただ、これの検証をするのにも知識やスキルが足りなくて出来ていません。
ヒープを参照する場合はSpanであってもarray[int]の方が早いんでしょうか?
長文になってすみません。どうぞよろしくお願いします。
0567デフォルトの名無しさん (アウアウウー Sacd-J0Bj)
垢版 |
2022/11/06(日) 19:03:46.24ID:EN445uW1a
>>551
ASP.NETを使っているところは、なぜかC#の経験ばかりチェックするDQNプロジェクトばかり。

ASPのタグの編集経験を問うべきなのにw
0570デフォルトの名無しさん (ワッチョイ a2bd-E1si)
垢版 |
2022/11/11(金) 22:46:09.97ID:2RvqW7n80
ロード中とかに使いそうなグルグルするアニメーション画像をピクチャーボックスに入れて、処理開始から終わりまで表示してグルグルさせたいんですけど、最後の完了のメッセージボックス出るまで映る事なく終わります。
メッセージボックス表示中でOKクリックするまではぐるぐるしてるんですがどうしたら出来ますか?

コードの流れはフォームからenter keyでスタートして別クラス行って処理して、戻ってきてメッセージボックス表示の流れなんですが。
0571デフォルトの名無しさん (ワッチョイ 6502-xcLn)
垢版 |
2022/11/11(金) 23:26:01.33ID:Zbp1C+xk0
なんか状況が判りにくいけど、メッセージボックスはモーダルダイアログだから
表示する事で処理が止まってたりしないかね
メッセージボックスじゃなくて、適当なフォームをShowした場合どうなる?
0572デフォルトの名無しさん (ワッチョイ 232f-3TKi)
垢版 |
2022/11/12(土) 04:50:51.20ID:XZf6dU9z0
ウィンドウメッセージとUIスレッドの関係でそうなってる

対処法は、マルチスレッドにしろ
ただし難易度は結構高い

まあ、あれだ、とりあえずDoEventsとか入れてもいいんだがな
DoEventsいれてちゃんと動くプログラムはそれはそれで結構難しい
0575デフォルトの名無しさん (ワッチョイ 4b7b-/xWR)
垢版 |
2022/11/12(土) 15:22:41.58ID:LpiKZFMR0
>>570
ProgressBarのMarqueeならMessageBox.Showしても止まらない
グルグルをどうしても動かしたいのなら>>571が理由だろうからメッセージボックスを自分で作ってモードレスフォームで表示するか、グルグルの方を別フォームで表示したら
0576デフォルトの名無しさん (ワッチョイ 2324-H0Ic)
垢版 |
2022/11/12(土) 16:47:51.01ID:3AkpswdK0
別スレッドからlistbox.selectedindexとかのプロパティを取得するのわからん。
設定とかはデリゲート、インボークとかググったらなんぼでも出てくるけど取得は
出てこない。。
0578デフォルトの名無しさん (ワッチョイ 03bd-T0y7)
垢版 |
2022/11/12(土) 22:09:30.68ID:QO08gHTj0
色々とありがとうございます。
簡単そうに見えて難しいんですね。
0581デフォルトの名無しさん (スプッッ Sd03-B69F)
垢版 |
2022/11/14(月) 13:44:26.33ID:mrCA5Qrfd
外部アプリ(java)をC#から起動し、途中でprocess.killで強制終了することがあるのですが、問題はありますでしょうか。外部アプリがファイル操作中だったら開きっぱなしになるとか。問題があるとしたら、他に方法はありますでしょうか。よろしくお願いいたします
0582デフォルトの名無しさん (アウアウウー Saa9-z+Fy)
垢版 |
2022/11/14(月) 13:49:02.49ID:hyabTMwBa
その起動されるアプリによって問題があったりなかったりするとしか
ファイル書き込み中にkillしたらまあそのファイルは壊れるだろうね
アプリやOSによってもっと穏顕な終了のさせかたがあるからそれが使えるなら使えばいんじゃね
0583デフォルトの名無しさん (ワッチョイ a37c-B69F)
垢版 |
2022/11/14(月) 20:54:18.33ID:XE8fOT6n0
>>582
ありがとうございます。
外部アプリには途中終了コマンドが無いのですが、windowsには何かありますか?ググっても分かりませんでした。外部アプリはウィンドウの無いコンソールアプリです
0587デフォルトの名無しさん (ワッチョイ a37c-B69F)
垢版 |
2022/11/15(火) 14:26:47.37ID:Lk8Tc52e0
ありがとうございます。CloseMainWindowは表面的にはHasExitedがtrueになって処理が中止されたように見えるのです、タスクマネジャーで確認すると、閉じたはずのjavaアプリのプロセスが動き続けてCPU・メモリを占拠し続けてしまっていました。

GenerateConsoleCtrlEventはググってもC#、WPFでどう使うのか分からず、途方に暮れています、、、
0593デフォルトの名無しさん (ワッチョイ cd33-dvlj)
垢版 |
2022/11/15(火) 17:13:56.04ID:s+bzFdbT0
>外部アプリには途中終了コマンドが無い
>外部アプリはウィンドウの無いコンソールアプリ
この外部アプリを途中終了できるように改修させる方が楽なんじゃね?
0596デフォルトの名無しさん (スプッッ Sd43-B69F)
垢版 |
2022/11/16(水) 14:51:33.26ID:Nr772sxzd
ありがとうございます。再度調べてみます
0597デフォルトの名無しさん (ワッチョイ 2524-BvCT)
垢版 |
2022/11/16(水) 16:31:41.33ID:L7AEwAjo0
LibraryImport来たついでに逆アセしてみたけどWin32の戻り値BOOLをC#側でboolでDllImportしちゃうだけで大量のゴミコード生成される事になってたんだな
CのBOOLの実体はintでC#やC++のboolの実体はbyteだけど単に切り捨てられるだけかと思ってた
逆に引数と戻り値を完全に型サイズ合わせればLibraryImportだろうがDllImportだろうがインライン展開されて直接Win32呼ばれるってことか
0599デフォルトの名無しさん (ワッチョイ 4b7b-/xWR)
垢版 |
2022/11/18(金) 22:33:38.46ID:eJgoDgWR0
>>570
今更だけどSystem.Timers.TimerどころかSystem.Windows.Forms.Timer使ってコントロールの表示変えながらMessageBox.Showしても表示の変更止まらんな
Marquee動く時点でもしかしてと思って試したらそんな結果。DoEventもいらない
むしろ止まってしまうグルグルをどうやって動かしているのか不思議
0601デフォルトの名無しさん (ベーイモ MM9e-R8F1)
垢版 |
2022/11/19(土) 07:24:15.03ID:W2gsPZLCM
Windows 11の標準アーカイバーも不便だし他に良いのもないから自分で作ろうと思って久々にプライベートで開発すっかなと思ったわけですよ
そんでMSのDoc読みながらふむふむPackage.appxmanifestにwindows.fileTypeAssociationなんかで記述すればWin11のNew Context Menuにコマンド追加できるわけね
おー確かにサンプルのApp1で開くが追加されたし.zipで右クリックしたら出た、じゃああとは汎用フォルダ・ファイルの右クリックではどうやるのかな?
はい、汎用フォルダ・ファイルへのコマンド追加はExplorerのShell拡張が必要です、そしてまーた.NETあるあるのVC++でCOM作ってくださいですよ
十何年前とまったく同じことを.NET 7になっても繰り返してんだねこれじゃMS StoreもデスクトップアプリもオワコンになってWindowsでアプリなんて増えるわけないよね
そりゃWSAとAmazon App StoreでAndroidアプリエミュレートするしかなくなるわな
なんでこんなデスクトップアプリを開発する場合に誰もがやりたがることがこんなに難解で面倒なんだよ.NETでAPI用意しろよアホすぎるわMS
0603デフォルトの名無しさん (オイコラミネオ MM67-TaOI)
垢版 |
2022/11/19(土) 10:44:26.12ID:Cy1G0XeKM
フォルダを対象にしたアプリってアホみたいに作れる
フォルダ指定してこれを○○で開くが無限に作れる
安易に出来たらアプリ100個入れたら100個縦に○○で開くが並ぶ
これ以上増えてもらっても困る


と言う感想
0604デフォルトの名無しさん (ワッチョイ 227c-stRS)
垢版 |
2022/11/19(土) 11:16:05.26ID:eQTLGh6L0
>>601みたいな奴が簡単にそういうOSに関連したコードを書けるほうが何が起こるか分からないし
OSの互換性が重要だし、その辺理解出来なくて発狂しているだけなら相当頭が悪い
で、シェルエクステンションの実装が出来ない低レベルは諦めたらいいだけw
0605デフォルトの名無しさん (オイコラミネオ MM67-TaOI)
垢版 |
2022/11/19(土) 11:19:32.03ID:Cy1G0XeKM
そんな酷い言い方はないと思うが…

なんだったらwin11は右クリックをカスタマイズできるツールは沢山あるからそれを使えばいいかとも思う
どうしても作りたいならOSSのツールもあるからそこからコピペするのもありかも
0607デフォルトの名無しさん (ワッチョイ 4b5f-kiOm)
垢版 |
2022/11/20(日) 01:27:17.90ID:7pjHG/e/0
クライアントでのマスターデータの管理って皆さんどうやってますか?

・使用するたびにサーバーに取りに行く
・初めて使用したときにサーバーに取りに行きクライアントのメモリに保持しておく
・クライアント起動時に全部のマスターをサーバーに取りに行きクライアントのメモリに保持しておく
0610デフォルトの名無しさん (ワッチョイ 4b02-38Qr)
垢版 |
2022/11/20(日) 09:39:38.89ID:lRymRVs40
割と頻繁に更新され、即時性が要求されるなら都度読みにいくしかないし
通信環境が良くなくて通信回数減らすためになるべくキャッシュしたりする事もある
結局要件次第としか
0611デフォルトの名無しさん (ワッチョイ 4b5f-kiOm)
垢版 |
2022/11/20(日) 11:29:27.36ID:7pjHG/e/0
まあ要件次第なのはそうなので、要件を絞って

サイズが大きい
更新頻度が少ない
使用頻度が少ない

この場合はキャッシュするとして、その場合のキャッシュ方法って何がおすすめですかね?
マスターを使うときの実装としてはこんな感じを考えてる

更新されたかの確認
更新された場合、クライアントにダウンロードし、ついでにファイルに保存。
更新されてない場合、クライアントにファイルがあればそれをメモリに展開。
ファイルがなければ、更新された時と同様
0612デフォルトの名無しさん (ワッチョイ a201-X9TU)
垢版 |
2022/11/20(日) 12:04:09.80ID:fuSoz9vj0
>>611
なぜキャッシュしたいの?
マスター更新後に古くなったキャッシュが利用されても問題ない?

想定してる通信環境は?
サイズが大きいとは具体的に何MB程度?
想定してる用途はモバイルゲーム?業務アプリ?
0614デフォルトの名無しさん (ワッチョイ 4b5f-kiOm)
垢版 |
2022/11/20(日) 12:27:19.46ID:7pjHG/e/0
>>612
サイズは10MBくらい
業務アプリ想定
古いマスターが使われないように使う前に更新されたか確認するつもり
なんでキャッシュしたいかは使うたびに毎回通信してたら時間の無駄かなと
0616デフォルトの名無しさん (ワッチョイ e201-IwB9)
垢版 |
2022/11/20(日) 12:52:11.40ID:AxU0uBeT0
何を聞きたいのかさっぱりわからん
マスター ⇒ クライアントのファイル ⇒ メモリー の2階層キャッシュなら

マスターの更新日時を取得
if(キャッシュファイル無し && キャッシュファイル更新日時 < マスターの更新日時){
マスターダウンロードしてキャッシュファイル更新(キャッシュファイルの更新日時を更新)
}
if(展開済みメモリー無し && メモリー更新日時 < キャッシュファイルの更新日時){
キャッシュファイルをメモリーに展開
メモリーの更新日時を更新
}

ってやるだけだろ
0617デフォルトの名無しさん (ワッチョイ 4b02-38Qr)
垢版 |
2022/11/20(日) 13:04:27.34ID:lRymRVs40
つーか、>>611 まで考えてるなら実際に試してパフォーマンス計測してみりゃいいじゃない
それで想定通りのパフォーマンスになってるならそれでいいし
結局要件満たせてりゃいいのよ
0618デフォルトの名無しさん (オイコラミネオ MM67-LO0k)
垢版 |
2022/11/20(日) 13:13:14.12ID:P+FEWrnJM
>>611
それだとオンラインで普通に処理して結果だけ貰うのが正解
ローカルに置くのは速度が最優先される場合
で速度が求められるのは使用頻度が高い機能
仕様頻度が低い機能にそんな変なことせんでいい
0621デフォルトの名無しさん (ワッチョイ a201-X9TU)
垢版 |
2022/11/20(日) 13:55:02.81ID:fuSoz9vj0
>>614
マスターの全データじゃなく都度必要なデータだけサーバーから返すようにすれば通信時間とかは誤差の範囲だと思うよ
特に古いマスターのデータを絶対に使っちゃだめなユースケースの業務アプリならクライアント側にキャッシュするメリットはほぼない

どうしてもキャッシュするならサーバーから取得した部分的なデータだけキャッシュして基本はローカルチェックのみ
クライアント側でマスターデータを使って何かデータを作成/更新するときはマスターのバージョンを条件に入れておいて古い場合はエラーではじく(これは状況によってはキャッシュしてなくても必要な処理)
0622デフォルトの名無しさん (ブーイモ MM8e-J1J7)
垢版 |
2022/11/20(日) 14:17:52.00ID:BrRFAkQBM
まあPOSみたいに一時的な通信途絶が避けられないがマスターデータを使用する処理は続けなきゃいけない状況でローカルに持ちたいことはあるだろうな
そもそもそんなものを初心者に設計させるなという話だが
0624デフォルトの名無しさん (ワッチョイ 4b02-38Qr)
垢版 |
2022/11/20(日) 14:59:32.42ID:lRymRVs40
キャッシュが必要なケースなんて限定されてるから、
本当にキャッシュしなきゃいけないのかよく考えた方がいい
多少通信回数が増えようが、LANなら普通は問題にならん
0625デフォルトの名無しさん (ワッチョイ 4b5f-kiOm)
垢版 |
2022/11/20(日) 16:46:06.08ID:7pjHG/e/0
>>616
実装方法としてはそんな感じ

>>617
他の人がどんな感じで実装してるか気になったんだよね
会社の中で開発する人が少ないと周りの意見とか全然入ってこなくて…

>>618
ローカルに保持するデータの使い道は主にコンボボックスの候補とかオートコンプリート用

>>621
そのマスターが10個とかあったら数秒待たされたときがあって気になったんだよね
0627デフォルトの名無しさん (オイコラミネオ MM67-LO0k)
垢版 |
2022/11/20(日) 17:40:21.93ID:P+FEWrnJM
コンボ、オートコンプリートは最大件数を決めて切り捨て
そんでサーバー側で処理
ガチで全件検索したいなら別途、検索画面を作成

何がなんでもローカルに置きたいならイベントソースにして差分管理
0630デフォルトの名無しさん (ワッチョイ c28b-TaOI)
垢版 |
2022/11/20(日) 21:36:57.93ID:79zBHkdo0
VBA+Seleniumで自動ログイン機能を実装しています。
ログインすると
「パスワードを保存しますか?」というダイアログが表示されてしまって困っています。
ネットで調べて以下の様なコードを記述していますが、出ます。

Dim Driver As New Selenium.WebDriver
Driver.AddArgument "credentials_enable_service=False"
Driver.AddArgument "profile.password_manager_enabled=False"



記述が間違っているのでしょうか?
0635デフォルトの名無しさん (ワッチョイ fb33-Tb7+)
垢版 |
2022/11/24(木) 11:20:19.87ID:Au08Yyq20
>>634
目的による、としか言いようがない気がするが
それだけだとアレなんで、多分メソッド単位でのテストとかを想定してそうなので
そういった単体テスト(ユニットテスト)はxUnitやMSTestなんかを利用して行うのが吉
0640デフォルトの名無しさん (ワッチョイ 62b1-jFJt)
垢版 |
2022/11/24(木) 17:02:44.47ID:F4Bj4Vii0
C#を独学中の50過ぎのIT業界未経験のオッサンなんだが、

Pyhton3で、

f"{0b1000 >> 1:b}"

に相当するのって、もしかしてC#には無い?

$"{0b1000 >> 1:b}"

だとエラーになる。;xや:Xならいいみたいだけど。
0642デフォルトの名無しさん (ワッチョイ 62b1-jFJt)
垢版 |
2022/11/24(木) 17:20:53.46ID:F4Bj4Vii0
>>641
Convert.ToString(num, 2) で出来ました。有難う御座います。
でも、C#って未だ何か中途半端ですね。折角 0b 表記が有るのに :b で書式指定出来ないなんて。
0647デフォルトの名無しさん (スップ Sd22-P3Qh)
垢版 |
2022/11/24(木) 19:22:57.45ID:EZ6nEehrd
>50過ぎのIT業界未経験のオッサン

これで察しろ
0648デフォルトの名無しさん (アウアウウー Sa3b-1oEr)
垢版 |
2022/11/24(木) 19:33:42.52ID:JYVIn9dZa
ああ課題か
そういうのは自分で2進数に直して進数の理解を深める練習だから楽したら意味ないぞ
そうでなくても残り時間が短いんだから最大限の効果が上がるようにしなきゃ
0649デフォルトの名無しさん (ワッチョイ 62b1-jFJt)
垢版 |
2022/11/24(木) 20:47:07.44ID:F4Bj4Vii0
>>647-648
別に課題でやってる訳ではないけど、Python3と同じ様に対応しているかと思ったらそうではなかったから気になったというだけ。
一応、自分で書いてみたよ。
もっとスマートな、君達プロが書いたコード例も見てみたいです。


static string IToB(int a) // Convert given integer value to bit pattern string and retern it
{
string lsb = ""; // for caching current LSB in string type
string b = ""; // for caching bit pattern in progress in string type
while (a != 0) {
lsb = (a & 01).ToString();
b = lsb + b;
a >>= 1;
}
return b; // Return converted result
}
0653デフォルトの名無しさん (オイコラミネオ MM67-zHbW)
垢版 |
2022/11/24(木) 23:48:05.21ID:qQzvjeJeM
長いことプログラムやるともうプログラム脳になる

引数にint 使ってあればマイナスや0のことを考慮してるのかどうか気になる
ビット演算 >> 見ればちゃんとマイナスを考慮してあるのか気になる
割り算があれば0除算しないか気になる

これが基本
0654649 (ワッチョイ 62b1-jFJt)
垢版 |
2022/11/25(金) 01:16:40.25ID:GQeKBwEb0
>>652
本当だ。符号付きは、符号無しにタイプキャスティングしないと駄目みたいですね。
訂正バージョン


static string IToB(uint a) // Convert given unsigned integer value to bit pattern string and retern it
{
string lsb = ""; // for storing current LSB in string type
string b = ""; // for storing bit pattern in progress in string type
while (a != 0) {
lsb = (a & 01).ToString();
b = lsb + b;
a >>= 1;
}
return b; // Return converted result
}
0655デフォルトの名無しさん (ワッチョイ ef8e-P3Qh)
垢版 |
2022/11/25(金) 01:26:19.97ID:8Qv7d+j40
コメント見ただけで素人だとわかる
0656649 (ワッチョイ 62b1-jFJt)
垢版 |
2022/11/25(金) 02:11:15.03ID:GQeKBwEb0
>>655
じゃあ、君ならどう書くの?
お手本を見せてください。
0657デフォルトの名無しさん (ワッチョイ 62ad-eHBA)
垢版 |
2022/11/25(金) 07:15:13.23ID:IZhBm03q0
玄人のコメント見たいな
0659649 (ワッチョイ 62b1-jFJt)
垢版 |
2022/11/25(金) 08:39:48.60ID:GQeKBwEb0
>>658
本当だ。御指摘有難う御座います。

if (a == 0)
return "0";
else {



return b;
}

にしないと駄目ですね。
0660デフォルトの名無しさん (スプッッ Sd02-sOVt)
垢版 |
2022/11/25(金) 08:44:52.37ID:fVhe3/QRd
変数名を変えるだけでもだいぶ読みやすくなるし、コメントがそもそも要らなくなる箇所だってある

// "{b}" 相当の2進数表記に変換する
static string FormatBinary(uint a)
{
string ret = "";
while (a != 0) {
string adder = (a & 01).ToString();
ret = adder + ret;
a >>= 1;
}
return ret;
}
0661デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/26(土) 18:05:18.46ID:PxjWwIqd0
>>656
長い行コメントなのとやたら短い変数名は、学生までだからな。
0662デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/26(土) 18:07:50.86ID:PxjWwIqd0
>>659
例外処理を知らない人のアドバイスなんて無視していいよ。
0663デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/26(土) 18:10:25.03ID:PxjWwIqd0
ゼロという文字列が返されるなら、最低限、仕様のコメントくらい書いておいてほしい。

ただ、間違って呼び出し側がゼロを渡した場合にゼロが戻るというのも曲者だけどな。
0664デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/26(土) 18:12:50.87ID:PxjWwIqd0
>>649
IToBが何の略なのかまったくわからない
0665デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/26(土) 18:25:17.54ID:PxjWwIqd0
>>654
コメントは上に書いた方がいいよ
しかも英語で書いている理由はなんなの?
0666デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/26(土) 18:26:24.48ID:PxjWwIqd0
「to」がもしかして英語の「to」じゃないというとんでも命名なのか?
0669649 (ワッチョイ 9fb1-2SHd)
垢版 |
2022/11/26(土) 19:07:49.92ID:bgvkuxQR0
>>665
今度から、上に書く様に癖付ける。
「40過ぎたら年齢差別の無い外資系以外は諦めろ!」 と言われたから、英語の勉強も兼ねて、出来るだけ英語を使うようにしている。
>>660 の 「// "{b}" 相当の2進数表記に変換する」
を英語で書くとしたら、

// Convert to binary expression format equivalent to f"{:b}" in Python3

とでもなるのかな。


>>664
>>667 の指摘の通り、itoa、atoiを真似た。C言語から入ったからね。
0671デフォルトの名無しさん (ワッチョイ d78e-8UFK)
垢版 |
2022/11/26(土) 19:17:06.58ID:3/lM1ho60
>>669
これから英語やプログラムを学ぶ50過ぎの爺をどこの外資が雇うんだ?その発想からしてもう終わってるだろ
0672デフォルトの名無しさん (ワッチョイ 5707-zuBb)
垢版 |
2022/11/26(土) 19:20:13.23ID:3yMZT+wQ0
普通にConvert.ToStringを使えばいい
自作しなくちゃいけないならこう

public static string ToBinaryString(this uint source)
{
var length = sizeof(uint) * 8;
var result = new char[length].AsSpan();
for (int i = 1; i <= length; i++, source >>= 1)
{
result[^i] = (char)('0' + (source & 1));
}
return new string(result);
}
0673デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/26(土) 19:20:35.37ID:PxjWwIqd0
>>669
他の言語の文化を持ち込むのはすげー嫌われるよ。
0674デフォルトの名無しさん (ワッチョイ 9f7c-zuBb)
垢版 |
2022/11/26(土) 20:12:21.31ID:a42sf4+p0
class A{
public int X {get;set;}
public void Modify() {if (X < 0) {X = 0;} return;}
public bool Check() {return (X > 10);}
}

class B{
var c = new A();
c.X = ・・・;
if(c.Modify().Check()){・・・}
}

このようにインスタンスメソッドを数珠つなぎみたいにしたいのですが、voidに「.」は使えないエラーが出ます。どのように直したらよいでしょうか。
c.Modify();
if(c.Check()){・・・}
というように分けて記述すればエラーは出ませんが、数珠つなぎにしたいです。
よろしくお願いします。
0679デフォルトの名無しさん (ワッチョイ 9f7c-zuBb)
垢版 |
2022/11/26(土) 20:41:36.40ID:a42sf4+p0
>>676
public A Modify() {if (X < 0) {X = 0;} return this;}
でできました。ありがとうございます。

>>677
ありがとうございます。数珠つなぎが良くないのが分かりました。
0686デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/26(土) 22:13:12.62ID:PxjWwIqd0
仕様を考えてないあたりは、みんなただの初心者なんだろうな。
0688デフォルトの名無しさん (ワッチョイ 5707-DgGg)
垢版 |
2022/11/26(土) 22:31:05.57ID:3yMZT+wQ0
俺のコードにほんの少しだけ足せば前のゼロを消すことができるから初心者じゃないと思ってるやつは挑戦してみなよ
ヒントはSpanの長さ
0がコーナーケースだ
うわここまで言えば初心者でもできちゃうな
誰もできなかったらどうしようw
0689デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/26(土) 22:41:45.78ID:PxjWwIqd0
普通にConvert.ToStringを使えばいい
自作しなくちゃいけないならこう

public static string ToBinaryString(this uint source)
{
var length = sizeof(uint) * 8;
var result = new char[length].AsSpan();
for (int i = 1; i <= length; i++, source >>= 1)
{
result[^i] = (char)('0' + (source & 1));
}
return new string(result);
}
0690デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/26(土) 22:43:39.24ID:PxjWwIqd0
>>647-648
別に課題でやってる訳ではないけど、Python3と同じ様に対応しているかと思ったらそうではなかったから気になったというだけ。
一応、自分で書いてみたよ。
もっとスマートな、君達プロが書いたコード例も見てみたいです。


static string IToB(int a) // Convert given integer value to bit pattern string and retern it
{
string lsb = ""; // for caching current LSB in string type
string b = ""; // for caching bit pattern in progress in string type
while (a != 0) {
lsb = (a & 01).ToString();
b = lsb + b;
a >>= 1;
}
return b; // Return converted result
}
0691デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/26(土) 22:45:04.31ID:PxjWwIqd0
>>690 は2進数の文字列という意味だったのか

ちょっとあれでできると思ったのがわからない。
0694デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/26(土) 22:59:44.77ID:PxjWwIqd0
引数のaの扱いが雑すぎて、言語仕様に詳しくない自分にはわからなかった。
0697デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/26(土) 23:50:54.08ID:PxjWwIqd0
Binary Stringの意味が2進数表記だと思う人がいるかな?
0699デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/27(日) 01:35:06.05ID:JLfYtSEn0
>>665
今度から、上に書く様に癖付ける。
「40過ぎたら年齢差別の無い外資系以外は諦めろ!」 と言われたから、英語の勉強も兼ねて、出来るだけ英語を使うようにしている。
>>660 の 「// "{b}" 相当の2進数表記に変換する」
を英語で書くとしたら、

// Convert to binary expression format equivalent to f"{:b}" in Python3

とでもなるのかな。


>>664
>>667 の指摘の通り、itoa、atoiを真似た。C言語から入ったからね。
0700デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/27(日) 01:35:29.87ID:JLfYtSEn0
>>699 を見ると自作自演なのかなとも思えるね
0701デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/27(日) 01:37:13.00ID:JLfYtSEn0
>>699
二兎を追う者は一兎をも得ず

だなw
0702デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/27(日) 01:39:24.61ID:JLfYtSEn0
「Python3 の f"{:b}" に相当するバイナリ表現の形式に変換」と日本語にしてみても、元の日本語を直訳しているだけだな。
0703デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/27(日) 01:41:14.74ID:JLfYtSEn0
変数名を変えるだけでもだいぶ読みやすくなるし、コメントがそもそも要らなくなる箇所だってある

// "{b}" 相当の2進数表記に変換する
static string FormatBinary(uint a)
{
string ret = "";
while (a != 0) {
string adder = (a & 01).ToString();
ret = adder + ret;
a >>= 1;
}
return ret;
}
0704デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/27(日) 01:42:35.75ID:JLfYtSEn0
>>703
この書き込みから、メソッドのコメントが変わったけど、これを他人が理解して、質問者がそのまま英語にする流れも変だな。
0712デフォルトの名無しさん (オイコラミネオ MMab-RPwI)
垢版 |
2022/11/27(日) 12:15:01.84ID:zizz/yv+M
>>711
文盲は漢字などの文字を知らず読めない人のことだ
文意を取れない人間のことではない

なんでこいつみたいな文盲と言う煽りを使うやつは必ず間違って使うのかわからない
5ch見てる時点で文盲はありえないんだけど
文盲と言う言葉をあおりで使う人間の知能が低いと言うことだろう
0715デフォルトの名無しさん (ブーイモ MM8f-oElN)
垢版 |
2022/11/27(日) 14:25:58.63ID:0P++zVd6M
binary expression formatは間違ってる
単にbinary expressionなら英語的には間違いではないが二項演算式の意味でもよく使われるから読む人間によっては分かりにくいこともある

//return the binary string for an integerとか
//Convert an integer to a string of its binary representationとか
0720デフォルトの名無しさん (ブーイモ MM8f-oElN)
垢版 |
2022/11/27(日) 15:41:06.14ID:NuLsBUn0M
>>718
バイナリリテラルは2進表記じゃないのか?
0723649 (ワッチョイ 9fb1-2SHd)
垢版 |
2022/11/27(日) 17:18:42.62ID:sWnM4ZgZ0
>>715
有難う御座います。
ベテラン勢からの、そういった有意義な添削を求めてます。
二項演算式ですか…
二項演算子の事を、binary operatorって記述してるのば良く見るのですが、二項演算式って初めて聞きました。
0724デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/27(日) 17:54:44.34ID:JLfYtSEn0
例えば 10 と書くと十ではなく、三というプログラミング言語があるのか?
0726デフォルトの名無しさん (ブーイモ MMdb-oElN)
垢版 |
2022/11/27(日) 18:37:13.06ID:dygOAsPnM
>>724
腰を折って申し訳ないが10は二やで
0730649 (ワッチョイ 9fb1-2SHd)
垢版 |
2022/11/27(日) 20:48:21.92ID:sWnM4ZgZ0
>>692
>>>演算子は、C#10以降でサポートされているみたいですね。

https://stackoverflow.com/questions/1880172/equivalent-of-java-triple-shift-operator-in-c

PCに、C#10迄しかインストールしてなかったのと、C#10迄にしか対応してないチュートリアルを見てた為、気付きませんでした。

某陶芸家のオッサンみたいに、嘘でも 「現役女子高生」 とか名乗っていれば、もっと暖かく迎え入れて貰えたのかな…
0731649 (ワッチョイ 9fb1-2SHd)
垢版 |
2022/11/27(日) 20:49:04.68ID:sWnM4ZgZ0
>>830
> >>>演算子は、C#10以降でサポートされているみたいですね。

C#11以降の間違いです。
0733649 (ワッチョイ 9fb1-2SHd)
垢版 |
2022/11/28(月) 02:29:55.47ID:su4HZdbE0
>>732
自演は一切してないから
どうしてそういう考え方しか出来ないのかなぁ…

>>699>>690 のコピペ荒らしは、誰か知らないけど自分じゃないから
学校の課題をネットで聞いたり、ネットでの入社試験を替え玉受験するってのはZ世代特有の発想なのかな

因みに、学部三年の時の必修科目で出題された課題がこれ
https://i.imgur.com/h0bNQdo.jpeg

で、選択科目の初回の授業の時に、先生が黒板に2次方程式 ax^2 + bx + c = 0, a≠0 の一般解 「x = (-b ± √(b^2 - 4ac) / (2a), a≠0」 を書き、
「20分でこれが解けたら前期の単位をやる。言語は問わない。」と出題し、誰も解けなかった問題とその解説。
今ではWikipediaに正解が書かれてるが、当時は市販のプログラミング入門書でも間違っていたのが多かった。
https://i.imgur.com/2dO2vuf.jpeg

で、年齢は大体これで察しろ
https://i.imgur.com/aOQE29f.jpeg
0734デフォルトの名無しさん (スップ Sd3f-8UFK)
垢版 |
2022/11/28(月) 03:48:59.16ID:VYM+iGJ6d
50歳にもなってこれから英語とプログラミングを勉強して外資に勤められると勘違いしてる馬鹿
0735デフォルトの名無しさん (ワンミングク MM7f-weE4)
垢版 |
2022/11/28(月) 04:09:02.00ID:OdmdDt4cM
今に「外資系の企業と契約して働いてます」とか言い出してUber Eatsと書いてあるリュックを担いでそう
0741デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/28(月) 18:44:42.45ID:IHqxnVSW0
>>733
50歳なのに専門職じゃないのか。

他の業種にいて、最近、プログラマになろうとした無職か。
0742デフォルトの名無しさん (ワッチョイ 9701-zuBb)
垢版 |
2022/11/28(月) 19:13:18.84ID:6mE1COKB0
ジャニーズ退所してプログラマになるのでは?
0743デフォルトの名無しさん (ワッチョイ 775f-+Vtb)
垢版 |
2022/11/29(火) 21:36:10.63ID:S4GKm+YH0
50歳で仕事での経験なしはキツイな。
0744デフォルトの名無しさん (ワントンキン MM7f-weE4)
垢版 |
2022/11/30(水) 01:34:03.95ID:qvzq7il1M
Uber Eatsに経験は不要
0746デフォルトの名無しさん (ワッチョイ bf66-kWqg)
垢版 |
2022/11/30(水) 06:44:00.93ID:UUPy6Zjq0
早期退職は1700-3000万くらいいきなり入るから結構
おいしいけどな。

ハローワークに登録だけして速度決まるとまた追加で100万近くもらえるっしょ。
給与さがったらさらに追加でお金もらえるしね。
0751デフォルトの名無しさん (ワッチョイ d74f-emCW)
垢版 |
2022/11/30(水) 12:11:40.01ID:wLtdZOQR0
COMオブジェクトの生成自体は
Type.GetTypeFromProgIDとかType.GetTypeFromCLSIDとかでType手に入れて
Activator.CreateInstanceで作れるはずだけど
CreateComInstanceFromを使ったことはないので同じことができるかどうかは分からん
0757デフォルトの名無しさん (ワッチョイ f7a7-Z2Iz)
垢版 |
2022/11/30(水) 20:23:43.30ID:/JJNNsmh0
対象構造体が値型onlyなら.NET Frameworkみたいな古いシステムでも簡単に出来る
var test = new Test();
int size = Marshal.SizeOf<Test>();
var bytes = new byte[size];
fixed (byte* p = &bytes[0]) *(Test*)p = test;
0762デフォルトの名無しさん (ワッチョイ b701-L0N4)
垢版 |
2022/12/04(日) 06:19:26.64ID:GSmAWMC60
>>758
ほんとなんでそれ知りたいの?
0764デフォルトの名無しさん (ワッチョイ ce8b-4FAg)
垢版 |
2022/12/05(月) 18:15:03.42ID:sIul4yXz0
Seleniumでサイトにログインすると
「パスワードを保存しますか?」って出ます。
これが邪魔で消す為にこのコードを記述していますが
出続けます。
コード間違っていますか???


options.AddUserProfilePreference("credentials_enable_service", false);
options.AddUserProfilePreference("profile.password_manager_enabled", false);
0766デフォルトの名無しさん (ワッチョイ 5e79-FYZG)
垢版 |
2022/12/05(月) 18:54:30.26ID:CB8LgCez0
https://teratail.com/questions/352199

複数オプションの追加については
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_experimental_option('prefs', prefs)
options.add_experimental_option('example', example)
などと、連立させるで複数のオプションの追加が可能です。

またその他の解決策としては
options.add_argument('--incognito')
とする事でシークレットモードでの起動が可能となりパスワードマネージャーが立ち上がらなくなります。
0768デフォルトの名無しさん (ワッチョイ ce8b-4FAg)
垢版 |
2022/12/05(月) 21:16:35.76ID:sIul4yXz0
そもそも C# では、 この様な記述は出来ませんでした。
ぐぐっても C# + Seleniumでパスワードマネージャーを非表示にする方法を解説しているブログがヒットしないです、、、
options.add_experimental_option
0770.NET MAUI HighSchool (ワッチョイ e201-6Epl)
垢版 |
2022/12/05(月) 22:30:39.78ID:m8CB2U+o0
>>767
ワシはSelenium使わなくてもスクレイピングできる方法見つけたけどな
https://youtu.be/2Alb4gpe6vw
C#のGUIコンポーネントのWebViewにJavaScriptをそのまま書けるからSeleniumとかわらん
0771.NET MAUI HighSchool (ワッチョイ e201-6Epl)
垢版 |
2022/12/05(月) 22:31:32.12ID:m8CB2U+o0
SeleniumもJavaScript使うようになってるから一緒
0774.NET MAUI HighSchool (ワッチョイ e201-6Epl)
垢版 |
2022/12/05(月) 23:07:23.33ID:m8CB2U+o0
>>772
なんだそれ?
普通にブラウザの中だけど
てかSeleniumもそうじゃね?
ブラウザ動かすやつだろこれ?
0777.NET MAUI HighSchool (ワッチョイ e201-6Epl)
垢版 |
2022/12/06(火) 00:12:41.14ID:swY2BqBl0
>>776
知らんがな
0778デフォルトの名無しさん (ワッチョイ 9b5f-I/ml)
垢版 |
2022/12/06(火) 03:13:25.70ID:PbeCdWM30
>>744
地図が読めない、東西南北もわからない、住所の表記の意味がわからない、ナビゲーションがないとまったくわからないレベルもいるし、複雑な複合施設と兼用のタワーマンションなんて経験がないと出入りもできない。
0779デフォルトの名無しさん (ワッチョイ 9b5f-I/ml)
垢版 |
2022/12/06(火) 03:15:32.22ID:PbeCdWM30
>>744
ウーバーイーツはどこでも配達するので、山の中でも経験なしで配達できると思うのか?

そういうやつは何事も経験が大事ということがわかっていないので、むしろ経験がなさすぎて使えない。
0780デフォルトの名無しさん (スプッッ Sd9e-e7tZ)
垢版 |
2022/12/06(火) 05:32:19.56ID:3JkUKtmrd
>>733が主張してます
やっぱりUbakaかよwww
0783.NET MAUI HighSchool (ワッチョイ b901-6Epl)
垢版 |
2022/12/06(火) 07:36:16.77ID:8iy9IBFd0
>>782
別にいいだろそれは
0784デフォルトの名無しさん (ワッチョイ ce8b-4FAg)
垢版 |
2022/12/06(火) 09:27:58.50ID:ddwy7sPP0
パスワードはもう諦めました。

SeleniumでProfile1が起動している状態で別サイトを開いた場合、
Profile1のブラウザを閉じるには、Process Killの強引な方法しかないのでしょうか?
0787デフォルトの名無しさん (ワッチョイ 5e8e-e7tZ)
垢版 |
2022/12/06(火) 16:52:45.78ID:0ohbHSZR0
>>786
本性が出た
こいつVBAで書いてた奴だろ
0788.NET MAUI HighSchool (ワッチョイ b901-6Epl)
垢版 |
2022/12/06(火) 19:54:09.56ID:UPkAAsGF0
同じC#erなんだから優しく答えてやれよ
0790.NET MAUI HighSchool (ワッチョイ b901-6Epl)
垢版 |
2022/12/06(火) 20:23:14.52ID:UPkAAsGF0
>>789
俺はC#erには優しいけど…
0791649 ◆xETmWn3d3U (ワッチョイ d9b1-tV81)
垢版 |
2022/12/06(火) 21:20:07.57ID:0sWat0HA0
640,642,649,654,656,659,669,723,730,730,733
以外の書き込みは、全てアスペの第三者による成りすましです。

>>758
何をやりたいのか(ソシャゲのオートプレイ?RMT?最近流行りのRPA?)は分かりませんが、
以前、Adobe Flashアプリの自動ログイン・自動クリック等をUWSCやAutoItX.dll+WSH等で書いてましたが、
C#からAutoItX.dllを呼び出せば、簡単に出来そうだと思います。
0793.NET MAUI HighSchool (ワッチョイ e201-6Epl)
垢版 |
2022/12/06(火) 22:09:19.39ID:swY2BqBl0
>>792
なんで?
0794デフォルトの名無しさん (ワッチョイ 8cbb-20rA)
垢版 |
2022/12/06(火) 22:23:11.93ID:6+x5kn7X0
>>793
初心者のスクレイピングはサイトに迷惑かけるって言ってんだろ
テストの仕方も知らねぇからデバッグ中もターゲットサイトに向けてアクセスするし、バグが取れるまでぶん回す
そんなのが複数いるせいでサーバ増強しなくちゃいけなくなる
まぁ、Selenium使ってアクセスしてくるようなやつには微妙に間違ったデータ渡したりして追い出すんだけど、その開発にも金かかる

お前が補填するのか?
0796デフォルトの名無しさん (ワッチョイ e62c-WJTY)
垢版 |
2022/12/06(火) 23:06:09.15ID:5MeWJbnk0
Udemy の山浦 清透の動画

【作業工程フル公開】エンジニアが30万円案件の制作過程を公開
www.youtube.com/watch?v=tYbVl6N8oxI

山浦ぐらいのプロ中のプロでも、
マイナビ求人サイトに、1:5:42 の所で無限ループしている

プロでも、サイトに対して無限アクセスしてしまうのだから、
素人のスクレイピングなどは、以ての外

ちゃんとサイトと契約して、API を使え。
勝手にスクレイピングするな
0798デフォルトの名無しさん (スプッッ Sd9e-e7tZ)
垢版 |
2022/12/07(水) 01:38:56.93ID:Bz4SkEkYd
>>797
クズの代表例
0809.NET MAUI HighSchool (ワッチョイ c801-6Epl)
垢版 |
2022/12/07(水) 19:02:52.19ID:Mb6NCHQl0
>>808
でも優しくね?
イキってるやつには否定から入るけど
0812.NET MAUI HighSchool (ワッチョイ e201-6Epl)
垢版 |
2022/12/08(木) 00:13:27.60ID:JlEBU10A0
>>811
できる限りしてんじゃん
0813デフォルトの名無しさん (ワッチョイ b701-L0N4)
垢版 |
2022/12/08(木) 10:16:07.59ID:lJAiN1tA0
>>810
ストレ…
0814デフォルトの名無しさん (ワッチョイ 7349-4FAg)
垢版 |
2022/12/08(木) 10:25:14.29ID:X8mmjpb+0
2,3年前まではC#メインにいじってたつもりなんですが、
いつの間にかここ1年以上なんかPHPやらJSやらばかりになってしまいました
昔の自分に戻りたいのですがどうすればいいですか。世の中から他の言語駆逐したいです
0816デフォルトの名無しさん (アウアウウー Sab5-nfFp)
垢版 |
2022/12/08(木) 13:26:35.59ID:ajSJ0zwRa
>>814
C#をメインで使ってる自社サービス系の会社は結構あるから探して転職したらいい
ある程度大きいとこだったらC#得意なら誰でもウェルカム状態だからよほどのバカかコミュ症でなけりゃ受かる
0817814 (ワッチョイ 7349-4FAg)
垢版 |
2022/12/08(木) 13:56:19.67ID:X8mmjpb+0
ChatGPTにはふわっと返されました(´・ω・`)
.NET10くらいには戻ってこれてると良いな

↓ChatGPTさん
そうですか。私もC#が好きでしたが、今はPHPやJSが多く使われています。
まずは、自分が何をしたいのか、どのような目標を持っているのかを考えましょう。もし、自分がC#を使いたいという目標を持っているなら、それに向けて学習を続けることが大切です。
そのためには、最新のC#のバージョンを知っておくことが重要です。また、自分が興味を持っている分野に特化した学習をすることも有効です。例えば、ゲーム開発やWeb開発などに特化したC#の勉強をするとよいでしょう。
また、オンラインでC#のコースや動画講座などを活用することで、自分の学習スキルを高めることができます。実際にプログラムを書いて実践的なスキルを身につけることも大切です。
また、C#を使うプロジェクトに参加することで、実践的なスキルを身につけることができます。また、C#を使っている人たちと交流を持ち、自分の知識を拡げることもできます。
自分がC#を使いたいという目標を持ち、それに向けて努力することが大切です。他の言語を駆逐することではなく、自分が好きな言語を使い、それを使いこなすことが重要です。
0818デフォルトの名無しさん (ワッチョイ a27c-7kHv)
垢版 |
2022/12/08(木) 21:01:25.46ID:wvTxK2BR0
今はC#と言えばほぼUnityという感じだしなぁ
昔はWindowsアプリの開発何かも多かったけど
ネイティブアプリはelectronとかそういうのに置き換わっている印象があるし
そうでなくても結局webの技術で作られたものがかなり増えたな
C#もASP.NETとかあるにはあるけど、そういうのって採用している所が結構狭い世界という感じ
0820.NET MAUI HighSchool (ワッチョイ e201-6Epl)
垢版 |
2022/12/08(木) 23:36:06.26ID:JlEBU10A0
ネイティブそんなElectron使うか?
あれ見た目めっちゃめんどくさそう(つついたことない)
ワークスペースがどうとかウゼェよな
だからVScも使わんしSiki(5chブラウザ)も使わん
0822デフォルトの名無しさん (オッペケ Sr10-zBmE)
垢版 |
2022/12/09(金) 03:47:30.64ID:aTxh5sg+r
VSC → プロ用途
VS → 素人・セミプロ用途
0823デフォルトの名無しさん (ワッチョイ 4dc6-5e4C)
垢版 |
2022/12/09(金) 09:21:37.07ID:eLXAv6sJ0
今頃、PHP に参入しているのは素人でしょ

既に、YouTube で有名な雑食系エンジニア・KENTA は、
PHP, Scala, EC2 などをオワコン認定した

だから、PHPのFacebook とか、Laravel を使っているZOZO、
Scalaを使っているTwitter などは、良い開発者を集めるのが大変。
EC2 も、Fargate に変わった

一方、KENTAは、Ruby をオワコン認定しなかった

例えば、ガーシーが使うような、Mastodon もPHPからRails 6 に変わった。
作者のドイツのオイゲン・ロホコでも、PHPでは可読性が悪くて開発できない
0824.NET MAUI HighSchool (ワッチョイ e201-6Epl)
垢版 |
2022/12/09(金) 09:30:07.51ID:gQLJ96r50
>>822
なわけねぇだろw
0825.NET MAUI HighSchool (ワッチョイ e201-6Epl)
垢版 |
2022/12/09(金) 09:30:46.63ID:gQLJ96r50
>>821
VSc使いづらすぎる
Sikiも使いづらすぎてJaneに戻ったわ
0826デフォルトの名無しさん (ワッチョイ fb6e-zBmE)
垢版 |
2022/12/09(金) 09:59:32.74ID:YeLe6gia0
SDKだけ渡しても( ゚д゚)ー?って涎垂らして固まるので
非エンジニア用に最低現のコードだけ書けば動くバカチョンな状態にしてあげたのがVSとそのコード
因みにガチのプロがVSCで作ったコードはVSでは動かせない

オワタ\(^o^)/チーン
0827.NET MAUI HighSchool (ワッチョイ e201-6Epl)
垢版 |
2022/12/09(金) 10:08:26.38ID:gQLJ96r50
>>826
ゴミじゃんVSc
0834デフォルトの名無しさん (ワッチョイ 915f-7kHv)
垢版 |
2022/12/09(金) 13:46:50.58ID:iU6u+uHp0
命名センスが無いかクラス設計がヘタクソなんでしょ
そもそも5文字(ピリオド含)も打ち込むのダルくない?アンダースコアでいいじゃん
MSお墨付きになったから組織内規約としても浸透させやすいし
0836デフォルトの名無しさん (ワッチョイ fe33-evCC)
垢版 |
2022/12/09(金) 13:59:31.02ID:YCQBTyru0
会社とかでコーディングルールが決められているならば、それに従うしかないが
個人的な開発とかで自由にできるのなら、.NETランタイムの規約に準拠しておくのが無難だわな
github.com/dotnet/runtime/blob/main/docs/coding-guidelines/coding-style.md
0837デフォルトの名無しさん (アウアウウー Sa08-g9pY)
垢版 |
2022/12/09(金) 15:21:52.70ID:Z1cscK2ka
m_hoge は良く観掛けるが別に付けなくていい時に付ける必要もない
this.hoge 描くのが嫌なら
メンバ名 this_hoge ってしとけば良いよ
0840デフォルトの名無しさん (アウアウウー Sab5-RHwc)
垢版 |
2022/12/09(金) 17:38:12.84ID:22+1NQn4a
まあC#のメンバーは他の言語と違って大文字から始まるパスカルケース推奨でローカル変数は小文字で始めるのが推奨だからthisが必要になることはほとんどないからな
どっちも小文字から始めるなら不要なバグ混入を防ぐために必ずthis書いとけってのはわかる
0841.NET MAUI HighSchool (ワッチョイ 7e01-6Epl)
垢版 |
2022/12/09(金) 17:39:26.41ID:kAYpLKl/0
>>840
そういうことね
0847デフォルトの名無しさん (オッペケ Src1-4FAg)
垢版 |
2022/12/09(金) 18:17:04.44ID:yVO2YxORr
フォームの AutoScroll を true に設定したときに現れるスクロールバーなんですが、
つまみをドラッグしたときは、離すまで中のコントロールの表示が更新されません。
つまみを動かしながら中身も連動して表示してほしいんですが、どうすればいいんでしょうか。

ぐぐっても2つ以上のスクロールバーを同期させるような話題ばっかりがヒットするんですが、
難しいんでしょうか。
0848デフォルトの名無しさん (ワッチョイ 1a7b-t7j7)
垢版 |
2022/12/09(金) 21:53:42.33ID:6dgWLd6p0
>>847
詳しく試してないがRichTextBoxやDataGridViewでは再現せずPictureBox(のImage)で再現して、フォームと言うかたぶんパネルとかのコンテナコントロール上でも起こる気がする
そして頑張って何とかしたらスクロールバーの反応が悪くなるとかロクでもないことになりそうな気もするw
ImageだけならIrfanViewとかのようにマウスドラッグでスクロールしたほうが分かりやすいので個人的には気にしない
0850デフォルトの名無しさん (ワッチョイ 872c-BsWY)
垢版 |
2022/12/11(日) 18:00:22.78ID:u7FzjZJr0
皆様どうされているか教えていただきたいです。

Visual C# 2022
.Net6.0 で開発を行っております。

プロジェクトのプロパティ内で、
「ビルド」に「コードの最適化」という項目がありますが、

実際に運用する場合は、
最適化されたコードで運用していくと思うので、

デバッグをする際にも「コードの最適化」のチェックをONにして

ビルドを行い、デバッグをしていったほうが良いのではないかと思っています。
皆様は、デバッグする際にも「コードの最適化」のチェックをONにされていますか?
よろしくお願いします。
0852デフォルトの名無しさん (ワッチョイ df01-0RkQ)
垢版 |
2022/12/11(日) 18:55:01.65ID:B9k8N7vL0
>>850
> デバッグをする際にも「コードの最適化」のチェックをONにして
> ビルドを行い、デバッグをしていったほうが良いのではないかと思っています。
そう思うなら1回やってみ
てか、まずは自分でやってみる癖つけないと伸びないぞ
0853デフォルトの名無しさん (オイコラミネオ MM7b-KKgq)
垢版 |
2022/12/11(日) 19:22:44.77ID:TMAZCbUcM
C#の最適化は可愛いレベルだからそこまで気にしなくてもとは思う
c++なんて最適化のレベルを上げるとmemset()でメモリクリアしようとしても勝手にmemset()自体が消されてしまう
しかもその判定がおかしい
これは最適化なのかどうかすら怪しい

セキュリティ上問題ある場合は特定の命令を使って消さなければならないとか普通じゃない
0857デフォルトの名無しさん (ワッチョイ 477c-KU0d)
垢版 |
2022/12/11(日) 20:37:17.87ID:qKMahR6w0
>>848
わざわざ試してもらってありがとうございます。
ドボンにも項目がなさそうなところを見ると、ひとまず無理ということでしょうかね。

>>849
Delphi なんかだと、Tracking ってプロパティがあって制御できるようになってるんですがね。

そもそも無理のない配置にするなどして、あまりそういったデザインにはしないんでしょうかね。
必須の動作というわけでもないので、デザインの変更も含めてもう少し検討してみようと思います。
0860デフォルトの名無しさん (スプッッ Sd7f-GCrc)
垢版 |
2022/12/12(月) 08:19:01.09ID:odyyTBv7d
>>850
Visual Studioのデバッガ機能(デバッグありで実行)を使ってみればすぐわかるんだが

1行ずつ実行したり変数の内容見れたりする機能がある。
最適化されると処理の順番が入れ替わるわ変数がそもそも消えるわでデバッガが使い物にならんくなる
0862デフォルトの名無しさん (オッペケ Sr1b-KKgq)
垢版 |
2022/12/12(月) 10:55:37.43ID:vZtLlg4nr
847 ですが、英語情報あたったらありました。
Form の Load とかで

Scroll += From1_Scroll;

としておいて、

private void From1_Scroll(object sender, ScrollEventArgs e)
{
if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll)
{
HorizontalScroll.Value = e.NewValue;
}
else if (e.ScrollOrientation == ScrollOrientation.VerticalScroll)
{
VerticalScroll.Value = e.NewValue;
}
}

でそれらしい動きになる。
これぐらいの情報ならドボンにあってもよさそうなのにな。
0863デフォルトの名無しさん (ワッチョイ 7f10-vbep)
垢版 |
2022/12/12(月) 17:14:10.39ID:Pte9fgG60
>852
>860

アドバイスありがとうございます。
実際にやってみます。
>てか、まずは自分でやってみる癖つけないと伸びないぞ
身に染みるお言葉ありがとうございます。
0865デフォルトの名無しさん (ワッチョイ 7f7b-9pmv)
垢版 |
2022/12/12(月) 21:36:48.19ID:gQz+ELAV0
>>857
前提が間違っていて試した意味がなかったようだ、申し訳ない
RichTextBoxやDataGridViewはコントロールでスクロールバーを持っていて移動が即反映され、PictureBoxはスクロールバーを持っていないのでフォームのスクロールバーに依存するだけだった
>>862
有用な情報乙
0866.NET MAUI HighSchool (ワッチョイ df01-1zqz)
垢版 |
2022/12/13(火) 11:55:10.52ID:sdBWNgeV0
On.NETってすげぇよな
Udemyレベルの教材がタダだぞ
今You Tubeの翻訳機能死んでるから治ったら見る
0867デフォルトの名無しさん (ワッチョイ 675f-5vlk)
垢版 |
2022/12/13(火) 14:04:44.98ID:Gkd3fRC50
ドボンとかいまだに見てる人いるんだな
0868.NET MAUI HighSchool (ワッチョイ df01-1zqz)
垢版 |
2022/12/13(火) 14:07:59.99ID:sdBWNgeV0
>>867
たまに見てる
RegexMatchソフト使ってるよ
0871デフォルトの名無しさん (ワッチョイ a72d-jpzT)
垢版 |
2022/12/13(火) 17:35:53.69ID:uYffxzwa0
今となっては古い方法ばかり充実しててもなぁ
全部が全部古い(もっと新しい方法がある)訳じゃないけど、初心者にはその見極めが出来ないから勧めない方が良い
0873.NET MAUI HighSchool (ワッチョイ df01-1zqz)
垢版 |
2022/12/13(火) 17:52:48.66ID:sdBWNgeV0
>>872
あるあるw
0876デフォルトの名無しさん (ワッチョイ 675f-3TNT)
垢版 |
2022/12/13(火) 19:27:23.23ID:F3XmmT6D0
第5版出たとこだし独習C#でいいんじゃね?
プログラミング自体初心者なら新・標準プログラマーズライブラリも悪くないと思う
どっちも細かい部分で説明気になる所はあるが
0878デフォルトの名無しさん (ワッチョイ 7fbb-dmwH)
垢版 |
2022/12/13(火) 19:32:39.75ID:Rosh3bMe0
最初の一冊は基本概念と用語定義の正確性に特化した体系的な学習ができるやつがいいと思う
それが身につけば、ネットの記事も参考にできるようになるからな(参考にして良いいかどうかが判断できるようになる)

俺は独習C#使った
それなりに良かったと思うよ
0879649 ◆xETmWn3d3U (ワッチョイ 67b1-8z17)
垢版 |
2022/12/13(火) 21:03:43.96ID:meL+AHJk0
>>866
On,NETって、もしかして
https://www.youtube.com/watch?v=00enYc3V84A&list=PLdo4fOcmZ0oVlZCosDDwS9fkVtrLYxGt6

の事?
チラッと冒頭だけ動画見てみたが、機械翻訳が必要な程難しい表現は無かったけど。
YouTubeで自動音声認識で文字起こしされたものを機械翻訳したのは、音声認識の段階で高確率で間違ってるから、余計分からなくなるだけ。
慣れない内は難しいかもしれないが、これくらいの英語なら、翻訳無しで聞き取れるだろ。
「ファスタボー」 → 「first of all」
「レイボー」 → 「label」
「ウィーガナトーカバウッ」 → 「we are going to talk about」 
みたいに、カタカナ英語ばかり聞いてると、最初の内は聞き取るのが難しいとは思うけどな。
Apple公式サイトの動画なら、ちゃんと字幕起こしされてるから、そういうので英語字幕を表示させて英語のまま直接聞き取る練習はした方がいい。
0880.NET MAUI HighSchool (ワッチョイ df01-1zqz)
垢版 |
2022/12/13(火) 23:12:14.06ID:sdBWNgeV0
>>879
それそれ!
0881.NET MAUI HighSchool (ワッチョイ df01-1zqz)
垢版 |
2022/12/13(火) 23:14:11.06ID:sdBWNgeV0
ReactiveX勉強したかったから見たかった…
https://youtu.be/U-vznhAzSCo
0886デフォルトの名無しさん (アウアウウー Sa6b-Fzhe)
垢版 |
2022/12/14(水) 10:46:07.02ID:qCKaCA+pa
データ構造じゃなくフローの話をしてるなら普通に関数分けしながら頭を整理すればいいじゃん
ローカル関数を使えば簡単に論理ツリーが構築できるからアイデアプロセッサ的な使い方もできる
0890デフォルトの名無しさん (アウアウウー Sa6b-Fzhe)
垢版 |
2022/12/14(水) 11:03:01.19ID:qCKaCA+pa
ループを書くときも外側から順に書くやつ多いよな
あれは一番内側から書くんだよ
その処理を行うにはどういう情報が必要かを整理してそれを引数にする
処理をした結果どういう出力が欲しいのかを整理してそれを戻り値(必要ならタプル)とする
そうすれば関数が一つできあがる
あとはその関数に引数を与えて呼び出すだけだからループなりLINQなりメモ化再帰なり木探索なり好きなのを選べばいい
0893デフォルトの名無しさん (アウアウウー Sa6b-Fzhe)
垢版 |
2022/12/14(水) 11:16:07.77ID:qCKaCA+pa
>>892
お前FizzBuzzを関数分けせず書くタイプだろ
後で修正が必要になったら全部読んでごっそり書き換えるわけだ
今は構造化のし方を書いてるがそれを設計段階でやるか実装時にやるかはその時の状況次第だ
アジャイルだとざっくり設計なんてザラにある
0899.NET MAUI HighSchool (ワッチョイ ff01-1zqz)
垢版 |
2022/12/14(水) 12:28:52.47ID:giMMsIqE0
ReactiveXでFizzBuzz作りたい
3が流れてきたらFizzって言うsubscribeと5が流れてきたらBuzzっていうsubscribeと15が流れてきたらFizzBuzzっていうsubscribeをつくって1から100に順に上がっていくオブザーバブルプロパティを作って発行し合う
0900.NET MAUI HighSchool (ワッチョイ ff01-1zqz)
垢版 |
2022/12/14(水) 12:33:05.46ID:giMMsIqE0
>>891
テキトーすぎて話にならなさそう
0903.NET MAUI HighSchool (ワッチョイ df01-1zqz)
垢版 |
2022/12/16(金) 16:23:50.13ID:3qj0lL1U0
たけのこなんとかってYou Tubeチャンネル再生数少ないけどかなりためになるよな
https://youtube.com/@user-el9do7sq8l
0908デフォルトの名無しさん (ワッチョイ a301-laf+)
垢版 |
2022/12/18(日) 11:48:14.16ID:HNplfub60
WinFormsにだけ注力してりゃいいのにバカなMicrosoft
0909デフォルトの名無しさん (オイコラミネオ MM1b-e5AJ)
垢版 |
2022/12/18(日) 11:56:08.49ID:ses1WoSTM
それはないけど同じところをずっと行ったり来たりしてるね
10年ぐらい停滞しっぱなし


net frameworkを.net coreに書き直し
winforms WPFを.net core用に書き直し
対応するためにVSを書き直し
reunionしてUWPのAPIを使うために書き直し
xamarinをMAUIにして書き直し
今後monoも置き換えするんだろうけど結局停滞してるだけでとてつもない開発リソースを浪費してる
0911デフォルトの名無しさん (アウアウウー Sa9f-840Q)
垢版 |
2022/12/18(日) 12:46:03.27ID:lQqYZof8a
停滞してるのはエコシステムではなく勉強してない自分達だったというオチはこの業界ではよくある話
身近なC#ディスりおじさんに詳しく話を聞いたらC# 1.0〜2.0ぐらいの知識で止まってたなんてことがよくあった
まあこれに関してはJava 7の印象でいまだにJavaが大嫌いな自分にも当てはまるんであまり言えんけど
0913デフォルトの名無しさん (オイコラミネオ MM1b-e5AJ)
垢版 |
2022/12/18(日) 13:22:30.39ID:ses1WoSTM
迷走だよ
GPSやセンサー類のAPIはUWPにだけ実装とか迷走だろ

それを今統合も出来ずに上位にWinUI3のガワだけかぶせてる
実質WinUI3はWPFの部分をwin32とか使ってc++で置き直してUWPを中に含めてるだけ
0915デフォルトの名無しさん (ワッチョイ 535f-8Cre)
垢版 |
2022/12/18(日) 19:27:49.14ID:Wdso+RO70
そしてその問題をWindows App SDKで解決したと
0917デフォルトの名無しさん (ワッチョイ 535f-8Cre)
垢版 |
2022/12/18(日) 21:10:41.96ID:Wdso+RO70
Why?
0918デフォルトの名無しさん (ワッチョイ f3b1-3QHA)
垢版 |
2022/12/18(日) 21:34:00.76ID:cciNjKw00
var rst = src.Select(c =>
 if(c == 'a') c = '1';
 else if(c == 'b') c = '2';
 else {そのまま}
);

とある文字列に対してSelectで条件分岐の操作ってできるんでしょうか?
このような操作はエラー出てしまいます。
for文使う意外でLinqで可能ですか?
0920デフォルトの名無しさん (ワッチョイ f376-dmHX)
垢版 |
2022/12/18(日) 21:43:50.09ID:/B6+jV4p0
Selectは、 TResult Func(TSource c); 相当の関数を求めてる。
1文で書けないラムダは{}で囲ってreturnする必要がある。

var rst = src.Select(c => {
 if(c == 'a') return '1';
 else if(c == 'b') return '2';
 else {return c;}
});

条件がそこそこ複雑になるから関数化した方が読みやすくなるけどね

static char func(char c){
if(c == 'a') return '1';
 else if(c == 'b') return '2';
 else {return c;}
}
var rst = src.Select(func);
0921デフォルトの名無しさん (ワッチョイ a301-laf+)
垢版 |
2022/12/18(日) 23:07:10.29ID:HNplfub60
普通にif文書きゃええやん
0936デフォルトの名無しさん (ブーイモ MM17-LnhB)
垢版 |
2022/12/20(火) 12:14:46.46ID:l/hyvVydM
一度に置換する関数ってなかったっけ?
0938デフォルトの名無しさん (スッップ Sd8a-JDfe)
垢版 |
2022/12/20(火) 15:26:00.51ID:pH7eiimed
MSストアアプリをリリースしてみたいけど難読化できるか気になっている。
中間言語(IL)のコードだと簡単にリバースエンジニアリングされてしまいそうで不安。
ストアアプリは中間言語ではないファイルにストア側で変換されますか?
自分で書くコードはC#です。
あと.NET7だとネイティブでビルドできるらしいけど.NET7で開発すると、
ローカルもストアアプリもネイティブコードで生成されるんでしょうか?
0940デフォルトの名無しさん (スッップ Sd8a-JDfe)
垢版 |
2022/12/20(火) 15:44:37.17ID:pH7eiimed
>>939
難易度がけた違いでしょう?
機械語からリーバスエンジニアリングできるような人なら
ゼロから自分で書いたほうが速いはず。
ILだとC#初心者でもロジック理解できちゃうしパクリアプリも作られてしまう。
0948デフォルトの名無しさん (スッップ Sd8a-JDfe)
垢版 |
2022/12/20(火) 17:06:16.44ID:pH7eiimed
>>942
ストアアプリも読める?読めたらまずくない?
0949デフォルトの名無しさん (スッップ Sd8a-JDfe)
垢版 |
2022/12/20(火) 17:17:31.72ID:pH7eiimed
半分自己解決。UWPはnative codeになるようだ
非UWPはまだわからん。
.NET nativeのおかげだな。.NET7では全アプリ対応になってるのかも

https://microsoft.github.io/react-native-windows/docs/native-code
UWP apps written in C# or other managed languages submitted to the store must be built using the .NET Native toolchain. This is the default when building C# apps in Release mode, but not in Debug, so apps built in Debug will be rejected by the Store.
0950デフォルトの名無しさん (スッップ Sd8a-JDfe)
垢版 |
2022/12/20(火) 17:21:11.68ID:pH7eiimed
native codeじゃないと商用アプリリリースする気にならないわ
認証まわりとかコード見られたくない

.NET7でもしWPFとかもnative codeふつうにはけるのなら
c#人気復活する気がする
0954デフォルトの名無しさん (スッップ Sd8a-JDfe)
垢版 |
2022/12/20(火) 17:37:55.97ID:pH7eiimed
>>952
MSのストア側でnativeになるとかじゃない?
0955たすけて!!!!!1!!11!!1!!!1!!111 (ガックシ 0676-ZR1D)
垢版 |
2022/12/20(火) 19:28:27.61ID:nMZXsv/b6
C言語でボードゲームを作成する課題についてです。重力付き4目並べを最終的にコンピュータと対戦可能にするように、テンプレートのコードに穴埋めしていく課題です。
@横7x縦6の盤面を立てて使用A2人で対戦、以下の0~6のマスを交互に選択B縦横斜めいずれか4コマ並べれば勝ち。以下はテンプレートのコードです(長いので続きはGoogleドライブにも置いてます)、これらの空白部分の穴埋めが分かる方、どうか教えてくださいお願いします。元テンプレコード↓→ https://drive.google.com/file/d/1bTnbssantyf9dEV5DOugZuloiVUh7H3D/view?usp=share_link
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define YMAX 6 // 縦方向のマス目の数
#define XMAX 7 // 横方向のマス目の数
int board[XMAX][YMAX]; // 0:未着手 1:先手のコマ● 2:後手のコマ○
int num[XMAX]; // 各列に置かれているコマの数
int choice = 1; // 0:未選択
// 1:人間(先手●)対人間(後手〇)
// 2:人間(先手●)対コンピュータ(後手〇)
// 3:コンピュータ(先手●)対人間(後手〇)
int turn = 0; // 先手か後手かを判定するための着手数
void InitBoard(void);
void DispBoard(void);
int CheckFull(void);
int SetXpos(int);
int CheckBoard(int, int, int);
int ComputeXpos(int);
int SearchConnect(int, int);
int main(void)
{
int xpos; // 入力したコマの置き場所,またはコンピュータが探したコマの置き場所
int player; // 1:先手の手番 2:後手の手番
int win = 0; // 0:プレイ中 1:先手の勝ち 2:後手の勝ち 3:引き分け
int ans;
while (1)
{
srand((unsigned int)time(NULL)); // 乱数を使う場合のseedの初期化

長いので続きはGoogleドライブにあります→ https://drive.google.com/file/d/1bTnbssantyf9dEV5DOugZuloiVUh7H3D/view?usp=share_link
0956デフォルトの名無しさん (スッップ Sd8a-JDfe)
垢版 |
2022/12/20(火) 19:43:57.01ID:pH7eiimed
>>955
名前とはうらはらにC#とCはぜんぜん違う
ここで聞くべきではない
0958デフォルトの名無しさん (ワッチョイ 535f-f2OJ)
垢版 |
2022/12/20(火) 19:56:57.69ID:oMNiRABq0
パクられるほどのアプリなんだろうか。
今日日、割られるとしたらパッチが広まるのも一瞬なんだから、それよりもちゃんと利用規約書いた方が良いんじゃないの?
はるかに金払うと思うよ。特に企業内ユーザは。
0959デフォルトの名無しさん (スッップ Sd8a-JDfe)
垢版 |
2022/12/20(火) 20:36:05.36ID:pH7eiimed
>>958
流行ってきてもすぐにコピーアプリつくられたら
収益激減しちゃうでしょ
利用規約なんて書いても少し変えてコピーアプリつくられたらおしまいだよ
実害がはっきりでる
例えば300円のアプリ、コピーされて100円で売られたらこっちは大損だよ
0961デフォルトの名無しさん (スッップ Sd8a-JDfe)
垢版 |
2022/12/20(火) 20:38:13.57ID:pH7eiimed
>>960
native codeじゃないとかんたんに
サーバーの認証のコードが漏れちゃうでしょ
セキュリティ大事

でもNET7でようやくC#でnative codeをMSが許可したのは大きいね
0964デフォルトの名無しさん (スッップ Sd8a-g3+u)
垢版 |
2022/12/20(火) 21:41:02.29ID:y3Va6Z2Ud
>>955
馬鹿は死ね
0966デフォルトの名無しさん (ワッチョイ 535f-8Cre)
垢版 |
2022/12/21(水) 02:19:07.37ID:XJm7JjIp0
.NET 7のNative AOTは今のところコンソールアプリとクラスライブラリで使えるらしい
今後範囲を広げていく計画だったと思うが
現状でWindowsアプリでも重要な部分だけクラスライブラリにすれば上で求められてることはできそうだな
0967デフォルトの名無しさん (スッププ Sd8a-ytDT)
垢版 |
2022/12/21(水) 08:11:43.60ID:WvXmOK62d
>>966
それはちょっと誤解がある
NativeAOTはコンソールアプリとして発行されるアプリケーション、もしくは(.NETのクラスライブラリではなく)ネイティブの共有ライブラリを作るときだけ使える
つまり、仮にWindowsアプリで部分的に使うならPInvokeが必要
なお、NativeAOTはASP.NET Coreアプリを動かすことをゴールとしており、GUIアプリのサポートは全く計画にない
0969デフォルトの名無しさん (ワッチョイ c307-bKpv)
垢版 |
2022/12/21(水) 10:09:22.51ID:DxBIri9+0
ソースが見られるのを恐れてるのはパクられるのを恐れてるんじゃなくパクったのがバレるのを恐れてるんだよな
お前なんかの作った物をパクるやつなんかいねーよと言いたくなるやつしか難読化難読化言わない
0970デフォルトの名無しさん (ワッチョイ c307-bKpv)
垢版 |
2022/12/21(水) 10:17:43.01ID:DxBIri9+0
あと.NETのリバースエンジニアリングがしやすいのは静的ライブラリじゃなくDLLを使ってるのと仮想メソッドを多用しているのも大きい
DLLで提供されるクラスを使う時や仮想メソッドを使う時は名前でアクセスせざるを得ないからどのクラスのどのメソッドを使っているかを隠すことができない
これはC++を使っても同じこと
本気で難読化したいなら標準ライブラリを使うのをやめた上でソースコードジェネレータを使ってソースレベルでクラス名や関数名をランダマイズするところから
0972デフォルトの名無しさん (スッップ Sd8a-JDfe)
垢版 |
2022/12/21(水) 10:50:38.22ID:Q7xHaIEVd
>>967
ASP.NET Coreは.NET8でnative AOT対応してくるかもしれない。
Azure運営してるMSとしては欲しい機能だろうし。
GUI appsもゴールにないという事はないと思うよ
やっぱり速度とかメモリ使用とかでnative有利だし。

MAUIで作ったiOSかMacアプリはnative codeでbuildされるとか見た記憶ある。
他社がnativeで動くならGUI appも対応しないとc#開発者がC#使うのをやめてしまう。
0974デフォルトの名無しさん (スッップ Sd8a-JDfe)
垢版 |
2022/12/21(水) 10:54:27.51ID:Q7xHaIEVd
>>969
コード見られるのを気にしない人はセキュリティに関して知識と意識が低いだけだと思う。
必要のない情報は極力見せないっていうのがセキュリティの基本だ。
0976デフォルトの名無しさん (ワッチョイ 0f2f-8Cre)
垢版 |
2022/12/21(水) 11:21:48.38ID:dQUtHKIl0
>>974
その理論だとつまりオープンソースはセキュリティが低すぎて使い物にならないってことだな

極力見せない以前に、見せていいものと悪いものの判断ぐらいできるようになれよ
0981デフォルトの名無しさん (スッップ Sd8a-JDfe)
垢版 |
2022/12/21(水) 14:51:10.30ID:Q7xHaIEVd
native AOTはスピードアップの恩恵も大きい。
C++くらい速いコードになるし欲しいに決まってる
0984たすけて!!!!!1!!11!!1!!!1!!111 (ガックシ 0676-ZR1D)
垢版 |
2022/12/21(水) 15:04:48.89ID:PoVpFNoO6
C言語でボードゲームを作成する課題についてです。重力付き4目並べを最終的にコンピュータと対戦可能にするように、テンプレートのコードに穴埋めしていく課題です。
@横7x縦6の盤面を立てて使用A2人で対戦、以下の0~6のマスを交互に選択B縦横斜めいずれか4コマ並べれば勝ち。以下はテンプレートのコードです(長いので続きはGoogleドライブにも置いてます)、これらの空白部分の穴埋めが分かる方、どうか教えてくださいお願いします。元テンプレコード↓→ https://drive.google.com/file/d/1bTnbssantyf9dEV5DOugZuloiVUh7H3D/view?usp=share_link
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define YMAX 6 // 縦方向のマス目の数
#define XMAX 7 // 横方向のマス目の数
int board[XMAX][YMAX]; // 0:未着手 1:先手のコマ● 2:後手のコマ○
int num[XMAX]; // 各列に置かれているコマの数
int choice = 1; // 0:未選択
// 1:人間(先手●)対人間(後手〇)
// 2:人間(先手●)対コンピュータ(後手〇)
// 3:コンピュータ(先手●)対人間(後手〇)
int turn = 0; // 先手か後手かを判定するための着手数
void InitBoard(void);
void DispBoard(void);
int CheckFull(void);
int SetXpos(int);
int CheckBoard(int, int, int);
int ComputeXpos(int);
int SearchConnect(int, int);
int main(void)
{
int xpos; // 入力したコマの置き場所,またはコンピュータが探したコマの置き場所
int player; // 1:先手の手番 2:後手の手番
int win = 0; // 0:プレイ中 1:先手の勝ち 2:後手の勝ち 3:引き分け
int ans;
while (1)
{
srand((unsigned int)time(NULL)); // 乱数を使う場合のseedの初期化

長いので続きはGoogleドライブにあります→ https://drive.google.com/file/d/1bTnbssantyf9dEV5DOugZuloiVUh7H3D/view?usp=share_link
0985デフォルトの名無しさん (スッップ Sd8a-JDfe)
垢版 |
2022/12/21(水) 15:06:36.41ID:Q7xHaIEVd
>>979
マシン語のリバースエンジニアリングできるやつなんて
プログラマーの1%もいないだろうし時間もかかるからほぼ回避できる。
解析する行為が割に合わなくなる
C#難読化だけとは安心度が全然違う
0986デフォルトの名無しさん (スッップ Sd8a-g3+u)
垢版 |
2022/12/21(水) 15:08:08.84ID:QEiYz8egd
>>984
しつこい
死ねよ
0987デフォルトの名無しさん (ガックシ 0676-ZR1D)
垢版 |
2022/12/21(水) 15:46:41.58ID:PoVpFNoO6
>>986
ごめんち
0995デフォルトの名無しさん (ワッチョイ 3b01-ZR1D)
垢版 |
2022/12/21(水) 21:29:01.38ID:ye8WaQKn0
Cとアセンブラの最も大きな違いはレジスタへのアクセスなんだよね。
0998デフォルトの名無しさん (スッップ Sd8a-JDfe)
垢版 |
2022/12/22(木) 02:36:34.84ID:F1nh9mbrd
C++も終わりになるんじゃないの?
LinuxがRustで書くようになるとかいう噂?ニュースを見たよ
RustってOSも書けるんだな
Rustで安全で高速なコード書けたらC/C++ほぼ要らなくなるんじゃ?
0999デフォルトの名無しさん (スッップ Sd8a-JDfe)
垢版 |
2022/12/22(木) 02:37:22.51ID:F1nh9mbrd
>>999
LinuxのカーネルがRustで書かれるかもっていう噂、ニュースね
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 366日 15時間 39分 58秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

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

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