C#, C♯, C#相談室 Part97
!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 が建てる事。 建てられない場合は他を指定する事。 C#, C♯, C#相談室 Part96 https://mevius.5ch.net/test/read.cgi/tech/1639965805/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured この時代になっても相変わらず機械語は逆コンパイルできないと思いこんでるやついるのな こういう機械語にすればセキュリティ上がると思ってるやつが平気でパスワード埋め込むんだよなあ >>2 C#やJavaといった中間言語に比べたら、圧倒的に可読性が低いでしょ? できる、できないの、ゼロか100かの議論ではないんだよ 可読性が低いほど、解析されにくくなる。 中途半端な知識を持つものがC#を避ける原因の一つだからな C++と同レベルの難読性を持つのはC#が生き残るには大事な話だ 解析されて困るのはパスワード埋め込んでる時だけだろ 機械語にしてもセキュリティ上がらないからそういうことするのやめとけ わざわざ逆アセンブルしなくてもexeから文字列抽出すれば平文パスワードを探せるしねぇ 難読化した処理追えるならマシン語の逆アセ読むくらいは出来るだろ 余分な処理入ってない分、後者のが楽まである 昔、機械語で書かれたとあるアプリをHEXエディタで開いたら、ASCIIコードで平文のままパスワードが埋め込まれてた事が有ったな >>6-7 パスワードを暗号化とかして格納するとして、 その場合に暗号化のロジックコードをかんたんに読まれなければ 安全性はかなり高くなる。 パスワードの照合ってハッシュ値を比較するもんだと思ってた なんかすごい実装してるやついそうだな 逆コンパイルするじゃん? コンパイルしてデバッガ使うじゃん? パスワード送信するところで止めるじゃん? 復号したパスワードを表示するかファイルに書き込むじゃん? 生パスワード手に入るじゃん? >>13 その手順の詳細はやったことないのでデタラメかわからんが、 そもそもパスワード保存したストレージに他人がアクセスできないという 前提があるんだから問題はないだろう。共用するデバイスであれば、 パスワードを保存しない運用をすればいいだけだから。 あと証券とかセキュリティが重要なアプリはログインパスワードとは別に 取引パスワードとかもあるのが普通。 あとは出金とかのときはSMS認証とかもある会社が増えている。 要するにパスワードなどの認証はひとつである必要もないし、セキュリティ要件などに あわせて併用すればいいだけ。 >>11 それそれ、たぶんいいたいかったのはそれ。 暗号化したら膨大な時間かけないと複合化できない。 だからハッシュ。 DBの中にもパスワードのハッシュ値を格納するのがふつうなんでしょ、たしか。 >>13 暗号化したものは容易に複合化できないわけだが? 量子コンピューターとかないと無理でしょ 思いつきでいいかげんなこと書いてるでしょ? >>15 >>10 を読んでやれよw そもそも実行ファイルにパスワード埋め込むなって話をしてるんだぞw >native codeじゃないとかんたんに >サーバーの認証のコードが漏れちゃうでしょ >セキュリティ大事 発端はコレでしょ? ハッシュでも暗号化文字列でもクライアントに共有シークレット埋め込んでる限り脆弱 少しスキルのある人間に悪用されるのは致し方ないと諦められるものじゃなければ仕組みを変える必要がある >>18 ああ認証コードがわからないのか ログインパスワードのことだぞ ログインパスワードをハードコードとか斬新だな APIキーみたいな認証コードの話かと思った そんな次元なの? パスワードの判明ならそれこそパスワードが合ってたかどうか、のif文に相当する命令を反転させたりnopにするという古典的な方法で別にパスワードがどうでも良くなるでしょ。そんなネイティブコンパイルされるか否か程度が問題なら。 アタッチして、パスワードが違うぞってダイアログ出てる状態からジャンプを逆に辿るだけなのでテクニックも何も無い。 何の意味も無くない? >>21 斬新でもなんでもなくて、今ほどセキュリティにうるさくなかった昔には結構あったぞ 結局は要求される強度とかける手間との兼ね合い .NETってinternalに良いもん隠しすぎやろ 便利機能を使うためにリフレクションで仕方なくアクセスするの面倒すぎる 以下のurlにあるライブラリを使ってrar5形式の書庫内にあるファイル一覧を取得しようとしたのですが取れませんでした。 ライブラリのソースを見ましたが、単に7z.dllの内部にある関数を呼んでいるだけのようでした。 7z.dll同梱の7z.exeでファイル一覧の取得、解凍できるのは確認しています。 何が原因かわかる方いらっしゃいますか? 7z.dllのバージョンは21.7.0.0 VisualStudio2019でビルドしました。 ttps://www.codeproject.com/script/articles/viewdownloads.aspx?aid=27148 >>28 > 何が原因かわかる方いらっしゃいますか? プログラマ どんなコード書いているのかどんなエラーなのか言わないと分かりようが無いw >>30 ライブラリのzipの中のサンプルコードです。 それ2008年のでしょrar5に対応してないんじゃないの? ByteArrayContentとReadOnlyMemoryContentの違いってなんかあるの? C#ってC言語で作ったdllを呼べるけど、 そのdllが暗号化されていたのものでもメモリ上で複合化しながら呼べますか? >>35 本来利用してるプロセスが復号化してからロードしているのならその復号化ロジックを自前のC#アプリでも実装しないと呼べない C#ってネイティブなdllも動的にロードできるんだっけ? DLLを動的ロードして関数ポインタを取り出す部分はどっちかというとOSの仕事だしそこはDllImportとかに任せて 関数ポインタさえ手に入れば .NET 2.0からデリゲートに変換できるメソッドがあるし C# 9.0でそのまま扱うこともできるようになったよ >>39 そりゃ当然出来る 型や呼び出し規約を合わせるのは自己責任だが とあるクラスにあるすべてのプロパティを読み取り専用にしたいんだけど、なにか良い方法ありますか? やっぱり継承してプロパティの数だけ読み取り専用プロパティで定義するしかない? 継承させたところで元クラスにアップキャストされたら終わり constにさせる方法はたぶんないと思う C#って地味にこの辺弱いよな C++のconst ポインタと同等の機能があればReadOnlyCollectionとかReadOnlySpanなんてそもそもいらないのに C++なら継承して読み取り専用にできると思ってるのか いや継承は必要なくて、C++なら単にそのクラスのインスタンスを格納する変数や引数の型をconstにするだけで読み取り専用になるよ TypeScriptもReadOnly<X>とするだけで簡単に読み取り専用のXの型を作れる >>49 それ、そのクラスのプロパティも読み取り専用になるのか? >>52 C++のconstの場合は、フィールドが全て読み取り専用になり、読み取り専用(const)としてマークされたメソッドしか呼べなくなる TypeScriptのReadonly<>の場合は、全プロパティが読み取り専用になった「型」が生成される TypeScriptというかJSではメソッドは単に関数を返すプロパティなので、メソッドの内容には特に関知しない >>44 誰かが書いてるけどrecordじゃだめなん? public record Person(string FirstName, string LastName); >>53 何それ凄い便利じゃん >>54 できればプロパティを1つ1つ書きたくないんだよね 継承後のクラス定義って、継承前より厳しくできたっけ? >>55 いやいやw これでもう終わりでreadonlyだよ 質問者は既存のミュータブルなクラスのプロパティを読み取り専用にしようとしている >>54 だと同じプロパティを全部定義し直さなきゃいけないし、元のクラスからコピーする手間も必要だ >>49 の方法であればプロパティを定義し直す必要もコピーする必要もない 既存のプロパティに当たるものをconstにするのは全部定義しなおしてるの同じなんだけど… どういうやり方で既存のプロパティを定義してるのかもわからないし意味不明だなと うまく行くならプロパティのsetをinitアクセサに変えるだけなんだけど 特定のコンテキストで書き換え不可 状況次第で書き換えの可否を変える とかならめんどいけどそういう話じゃないんだろ >>60 いやまともなC++のコードならgetterはconstで定義されてるはずだから、変数の型をconstにするだけでreadonlyになるよ 君たち的に.NET MAUIでandroid,iphone,WindowsでC#のネタ帳的なの作ったら協力してくれる? 小ネタ集みたいなのを各々がSQLで保存してそれをカテゴリ分けで見れるようにするやつ 例えばRestAPI関係だったりの基本的な書き方を表示したりできる ネットで調べれば一発だが1つにまとまってるのは利点かと、、、 多分世界中のc#プログラマの99.9%は.NET MAUIに興味ないと思う と言うよりいい加減いくつフレームワーク立ち上げれば済むんだよ モバイル関連は全部html+jsにしてデバイスを仮想サーバにしてそいつにREST api投げてjsonでセンサ値とか取るようにすればいい そしたらもう再生産しなくていい >>64 コンテンツが利用者頼みのサービスは最初自分で頑張るか金出すかしてコンテンツを揃えない限り必ず失敗する というわけでまずは自分で頑張れ 一度覚えた技術を何十年も使いまわせるような仕組みにしろよ 都度都度新しいAPIセット出して馬鹿なのかMSは? ワッチョイ 9301 こいつマウイ君だろ、自分のスレでやれ。NG ここにまでマウイ出張ってきたか ちゃんとワッチョイを恐れろよ >>64 > 例えばRestAPI関係だったりの基本的な書き方を表示したりできる 今からこの手のサービスやってもCopilotに勝てないだろ >>77 copilotって別にこれしたいって言えば全部記入してくれるわけじゃなくね? 俺としてはあぁRestAPIの使い方ど忘れした~ なんだったっけ???ってGoogleで調べる時間をアプリで素早く検索できるって感じのものを作りたいかな 2,3回やったことあるやつでもどうだったっけ?って忘れることままある まぁGoogleとかでいいんだけど1つのアプリにまとまってるってのはなかなか便利なんじゃないかなと… Aクラスを継承したBクラスがあります BクラスのリストにAクラスをAddしたいんですが、どうすればいいのでしょうか? >>80 それは無理 Bは絶対にAだけどAはBとは限らないでしょ? つまりAクラスのリストにするしかない まあUnsafe.As使えば無理矢理入れられるけど >>80 みたいな質問する奴って意味も分からず継承使ってたりしてそうで怖いわw A a=new B(); とかで、実体がB型かもしれないならBにキャストすればいい。 A a=new A(); でA型そのものだったらそもそもこの話は成立しない。 list.Add((B)a); >>78 massCodeとかgistとかでいいんじゃない >>80 継承じゃなくてBクラスにAクラスのプロパティのリストを入れる場合はたしかいけたぞ スマホアプリ作ってると毎年アプデで便利な機能がdeprecatedされてくのがストレス それに比べたらMSの方が優しい android何かも最近コード書いてないけど、非推奨や消えたりする機能が結構あるよね 古いコードをメンテナンスするときに良く引っかかる気がするわ C言語の重力付き4目並べです、ここのコードを簡略化したいです。 int SetXpos(int player) // コマの置き場所を入力または探して盤を更新,コマの置き場所(0-6)を返す { int xpos = 0; // コマの置き場所 if ((choice == 2 && player == 2) || (choice == 3 && player == 1)) // コンピュータとの対戦の場合に,コンピュータの手を計算 { xpos = ComputeXpos(player); printf("%sの番です\n", player == 1 ? "●" : "〇"); printf("コンピュータは%dに置きます\n", xpos); } else // 人間の手を選択 { while (1) { printf("%sの番です\n", player == 1 ? "●" : "〇"); printf("どこに置きますか? 0-6の数字を半角で入力してください: "); scanf_s("%d", &xpos); if ((0 <= xpos && xpos < XMAX) && (num[xpos] < YMAX)) // 置ける場所かどうか判定 break; printf("%dには置けません!\n", xpos); } } board[xpos][num[xpos]++] = player;// コマをxpos列に置き,xpos列のコマ数を1増やす return xpos; } そもそもC#のスレだからすれ違いだがw printf("%sの番です\n", player == 1 ? "●" : "〇"); をifの前にするとか(それぞれにあるから冗長) プレイヤーの処理もPlayerXpos()とかに出すとかすれば良いのでは? Shift-JISの文字列をutr-8に簡単に変換する方法ってありますか? やはり一度Stream(バイナリ)に変換する必要があるのでしょうか >>94 streamじゃなくてbyte[]じゃないの Encoding.GetString(Encoding.GetBytes(string))ってことだよね 何のためにそんなことするか知らんけど >>95 つまりstringの状態でencodingは可能なのですか? C#でRestAPIを投げてブラウザ側から貰ってくる文字列はShift-JISらしい それでC#はutr-8で表記されるため変換(Encoding)が必要になるのです unicodeは符号化方式など規格とそのコード群の名前 そのREST APIをどうやって呼び出してるのか知らんけど 真っ当なサーバならContent-Typeにcharset設定してて 一般的なライブラリなら文字列として読み取るときにcharset参照して適切に文字列型に変換してくれる から特にプログラマが考えることはない これらの前提が崩れてるなら文字列として読み取るんじゃなくてバイト配列として読み取って System.Text.Encodingクラスを使ってバイト配列をstringに変換する必要がある この場合変換先の符号化形式を考える必要はなくてShift_JISをstringに変換することだけ考えればいい もしライブラリの都合でstringとして受け取ることしかできなくて かつその時点で文字化けが出るようなら それはもうどうしようもないので使うライブラリを変える必要がある sjis/CP932 とか、何十年前の話w sjisのサイトも、5ch だけだろw 古の生き残りのサイトもsjis chromeが文字コード判定ミスしてても今は手動で文字コードは変えられない 手動で文字コードを変更できる、Chrome の拡張機能は無いの? win32APiのChangeDisplaySettingsExをC#から呼び出して、 モニタのポジションを変更してるんだけど、 変更直後にScreenのBoundsから値をとっても値が変化しない・・・ アプリ再起動するとちゃんと変わってる。 ディスプレイの設定ってレジストリに保存してるから、もしかして アプリ再起動しないとScreenクラスのBounds反映されない? アプリ再起動せずになんとかする方法ないですかね? Screenオブジェクトフィールドに保存してたりする? 毎回Screen.AllScreensとか.PrimaryScreenとかから取得すればどう? ところでSystemEvents.DisplaySettingsChangedイベントは発生してる? 2つのクラスを1つのクラスに合体させて使いたいんだけど、どうやるのがスマートですか? 多重継承ができたら良かったんですが… そういうのは大体気の迷いだから、落ち着いて全体から考え直せば むしろ機能単位で分解するのが健全な方向なのに 違う機能を似たものだから合体とかわりと誤った方向に行く人かな? ライオンクラスと山羊クラスと蛇クラスを一つにしたいんです >>113 コンパイル時に型チェックしたいなら既存の型をインターフェースで定義し直して呼び出し側も修正 でもこういう変更が必要な状況はほとんどないのでコンポジションで移譲するケースなんじゃないかな >>117 トレイトでもインターフェースでも同じだよ >>114 BindableBaseと他のクラスを両方継承したい場面はいくつかあるな ソースコードジェネレータは中々いい >>119 トレイトはフィールドを持てるから同じではないけど言いたいことはわかる 質問内容はクラスをまとめたいってことなので、ずれちゃう話にはなるけどさあ (フレームワーク等を使う場面を除いて)初心者中級者のうちにクラスを継承をしようと思ったら設計段階でおかしいので、正解はどうするべきなのかを聞いた方がいいんじゃないのかな クラスインスタンスを取り込めばいいのに なんで継承にこだわる? やりたいことは いくつかのプロパティを持つデータを格納するだけのクラスAがある クラスAにバインド用のプロパティをいくつか追加したクラスBを作って、それのリストをDataViewにバインドしたい AとBのすべてのプロパティを書いたクラスCを作ればできるけど、なんとかして少ないコードで実現したいです >クラスAにバインド用のプロパティをいくつか追加したクラスB >AとBのすべてのプロパティを書いたクラスC なんかおかしくない? Aを継承してバインド用のプロパティを追加したBを作って List<B>を持つCを作ってそのList<B>をバインドすればいいんじゃないの >>127 それで出来るんですが、バインド用のプロパティが沢山あったときに毎回書くのが面倒で、どうにかして効率化できないか考えてます ここですら見かけない超クソ黒魔法もあるけど全くお勧めしない 普通にコンポジションで書くのが正解じゃないかな アンマネージドなものをラップするのと変わらない 手書きでも自作コードジェネレータでもどうぞ やりたい事は理解できる 構造体を合体させるにあたりフィールドで保持すれば良いというのはその通りなんだがアクセス手段が冗長になるのは嫌っていうワガママな気分によくなる C++のように素直に構造体継承や多重継承認めてくれって思う事は頻繁にある >>128 バインド用のプロパティってクラスAのもつフィールドを参照するの? >>133 しない前提です。 データソースクラスにバインド用のプロパティも含めれば実現できるけど、クラス設計として微妙なんだよな >>134 >>125 が正解な気がするが、 そもそもバインド用のプロパティってどういうものを想定してるんだ? よくあるINotifyPropertyChanged自動実装したいとかそんな話か? つまるところ、M(クラスA)とVM(クラスB)を煩雑にならないように扱いたいって話かね この辺は詳しくないけどいろいろプラクティスがあるんじゃない? そんなアホなことしたがるやつがそもそもいないからな することが多ければすぐに楽な構文が作られるのがC# C#は基本的に ・static寄せ集めユーティリティのクラス ・必要な画面フォームのクラス ・メインプログラムのクラス この3つ以外要らないのだよ 意識高い系が説くMやらVに振り回されてはいけないのだよ 変な抽象化は問題をややこしくするだけだと学ぼう >>135 そうですね INotifyPropertyChangedとかINotifyDataErrorInfoを実装しておきたい感じです 探せば大抵のものはあるのに、自分で作る意味とは? アートとか、そういう方面しか残ってないような感じがするのですが(´・ω・`) 帳面で効率が悪けりゃソフト使えばいいし効率の良いソフトがみつからなけりゃ作るより他にないだろ >>141 ただのViewModelじゃねーか フレームワーク使え 最近MVVMのほうが楽じゃね?って思ってきた 楽しいし これもすべてソースジェネレーターのおかげかもしれん さすがC# >>139 うちがWindowsの業務クライアントアプリ系を委託してるソフトハウスがまさにこんな感じだわ イベントハンドラからSQL投げてる ただしstaticユーティリティクラスではなく共通の神フォームクラスがあって、全てのフォームがそれを継承する形 まあレベル低すぎて開発もクソ遅いから、負債自体はそれほど量が多くないのは救いかな >共通の神フォームクラスがあって、全てのフォームがそれを継承する形 こういうのよくないな 神クラスのメンテナが異動だかで居なくなだけで誰も保守できない砂上の楼閣アンチパターンに嵌るね >>149 前に作ったC#のプログラムがまさにそんな感じで、 その後MVVMしてみた。 そして最近作ったCのプログラムが構造体でオブジェクト指向プログラミングしてる。 >>148 その言い方だと基底クラスと派生クラスに分かれているもの全部が当てはまるように聞こえてしまうが 規模じゃなくてメンテナの有無を問題にしていたからだよ ライブラリなんて当時のセット使うに決まってるじゃん 顧客のOSがバージョンアップするのにいつまでも使えるわけねーだろ >>156 使えなくなる理由が分からない ブラウザの話? >>156 そんなんちゃんと契約書にOSのバージョン指定しとかない会社が悪い OSバージョンアップされたら何起こるか分からないんだから 最悪作り直しだってあるし、そんなん瑕疵理由にされたらたまらないだろ 指定したバージョンで使えなけりゃ作り直すしかねーだろ >>152 神クラス悪くないよな すべてのグローバル変数がちゃんと集結してるなら リークはここさえ調べればいいし 本当にヤバい神クラスというのは担当者が1人じゃなく複数人でメンテしていて、 しかも誰一人として全貌を把握していないという。。。 まあ1人で保守できてて数が把握できるレベルならな。。 ディスプレイ設定の マルチディスプレイの 複製表示するだとか拡張表示するだとかの設定を プログラムで取得できますか? そりゃ出来るだろ。 取得するAPIが用意されているかどうかは知らんけど。 >>164 .Netのフレームワーク抜きにして 基本的にwindowsの情報はwin32 apiかwinRtかで取得できる 楽かどうかは不明だけど両方ともC#ではアクセスできる それ以外にレジストリの情報だけと言う場合もあるけど 思い出というかうろ覚えレベルだけど 昔はwinformsの方でAPIがあって複数画面の情報は取れた WPFにはAPIが用意されてなかったのでwinformsを参照して情報を取ってた >>166 WMIの存在知っていて、Monitor〇〇は見てみたんですけど、モニタごとの 情報は取得できるけどマルチディスプレイの設定は見当たらないんですよね。 >>167 win32apiも見たんですが、やはりモニタごとの設定は取得できるんですが、 マルチディスプレイの設定みたいなのが見当たらなかったです。 >>169 上の人が書いているけど、レジストリっぽいですね。 DisplaySwitch.exeによる切り替えは結構ヒットするんだけど、情報取得はみつけられなかった。 WindowsAPIだと、 SetDisplayConfig QueryDisplayConfig あたりがそれっぽいのかも? 詳しい人の回答を期待w マルチディスプレイの設定って具体的に何よ 最終的に何の項目の値が欲しいのよ コンパネや設定アプリのこの項目ですとかそういうの書きなさいよ マルチディスプレイの項目の 表示画面を拡張するや、表示画面を複製するが何になってるか取得したいって最初に書いたんだけどな… C言語から入った人間なのでexeファイル=機械語と思いこんでたけど違うんですね…… 中間言語?CLR?いやC#もexeファイル作成されるじゃんどういうこっちゃと思ってました えーっとC#のexeファイルは中間言語で出来てるって理解であってます?つまりexeだけど.net入ってないPCじゃ実行できないってことですよね? ならその画面出してキャプチャして画像解析でもすりゃええやん >>174 C言語から入ったからじゃない お前が無知なだけ >>176 建設的でなく情報を提供することもない価値のない書き込みをありがとう でもそういうのやめにしないか? むしろcから入ったほうが、ほかのいわゆる高級言語から入るより詳しくなりそうな気がするんだがな C言語プログラムではexeファイル作成しても実行環境のランタイム周りでエラー吐くと即実行時エラーで停止するからな プログラミン好きじゃないけど、稼ぐ手段と考えたら上達しないんですかね? ていうか、うまく出来もしないのに好きでいることなんて出来るでしょうか 成果が出て好きになるのでは? 好きとか 嫌いとか最初に言い出したのは誰なのかしら 分からん 好きなことで生きていくみたいな 他人と比べて明らかに下手でも好きでいられるのだろうか >>182 スレ違いどころか板違い 低能すぎるからハロワ行け ここで聞いていいのかわからんけど WinUI3 Windows App SDK MAUI こいつら並行して存在してるみたいだけど関係性ってどうなってんの? UWPはディスコンになったって理解でいいの? 本当はMSも新しいものにシフトしたいけどWin32は捨てられないし レガシー無視ならWindowsである必要が無くなるからなぁ なんやかんやでwebの技術でアプリは作れる時代だし XAMLなんかはそろそろ辞めた方が良い気がするんだよなぁw >>188 それ全部層が別なんだ 以下俺の理解 まず下に行くほど上位層になる 様々な状況を無視して強引にフォルダにしてみると c:\MAUI\Windows App SDK\WinUI3 ・WinUI3 windows用の新しいGUIライブラリ C++で書かれててc++にもXAMLの恩恵が前より受けられるらしいのだが魔術に近いコードを書かされるゴミ 目新しさだけで近づくと絶望感しか感じられない残念なプロダクト ↓ ・Windows App SDK windows上で現在色んな技術 win32 winrt winUI3 などがごちゃごちゃにあって それを統一的には無理だけどアクセスできるレベルに合体させようと言う残念な仕組みのゴミ この世にドラゴンボールのフュージョンはないと思い知らされる凄いプロダクト ↓ ・MAUI マルチプラットフォームでiPhone,android,windowsなどいろんなシステムを横断して最大公約数的に使う仕組み 本来は開発工数が下がるはずなのだが個々のシステムをかなり理解していないと何もできないゴミ 各プラットフォームでの学習+MAUIの学習と言う学習時間フルコースプロダクト ある意味超人オリンピック MSのFAQから意訳 UWPで開発で満足してる人は焦ってWindows App SDKに移行する必要はない MSは基本的にwindowsアプリ開発のベースをUWPで見てる節がある それ以外の人にもUWP並みの恩恵をと言うのがWindows App SDK MSもElectron使ってるし、実際ゴミしかないので WPF以降はもうWebベースに移ったほうがいいかなって思ってる Webベースっていうと語弊があるな、ブラウザベースか >>195 ElectronってVScodeだけじゃね? OfficeとかWinUI3っぽいしVSもC#じゃんね? UnityもUI部分の画面はC#みたいだぞ >>191 ありがとう そりゃいつまで経ってもWinFormsが無くならんわけだわ なんなら一番成功してるまである >>200 VS2022でなんか対策入ってなかったっけ? >>198 Desktop版Teams糞すぎでweb版使うよね XAMLとロジックを分離することでデザインだけに特化したプロフェッショナルに任せられるとかいうけどそんなことしてるところあるのかね XAMLに文句言ってる人もべつになにかもっと良い代替案があるわけでもないんだろ? jsonかyamlかあるいはまたなにか独自仕様でも作るか。 Windowsデスクトップアプリの次のスタンダードはWebView2に決定してるよ C#とも何の問題もなく連携できるから、もう何も心配することはない ただHTML/CSSだけできればよい WinFormsだけを強化/ブラッシュアップして行くだけでいいのに 今現在Microsoftが決定してることは全部間違った方向 HTML,CSS,JavaScriptほど密結合の強い組み合わせないと思うけどな WinFormもそうか >>206 現実には無いね Web開発ではHTML/CSSですら自分で書けるデザイナーは稀であり、デザイナーはお絵描きするだけでHTML/CSSはエンジニアが書くのが普通だ ましてやC#エンジニアしかまず目にしないXAMLを扱えるデザイナーなんて存在しない xamlはさくっと簡易なgui作る程度なら便利ではあるがxamlだけだとboolの反転すらできないから結局コード書くことになるんでbindingクソ喰らえってなる XAMLでも何でもいいから ひとつこれと決めてしっかり枯れるまで面倒見てほしい x:Bindだとコンバーターは普通のスタティックメソッドでコンパイル時に型チェックしてくれるから大分良くなってるんだけどね >>209 >Windowsデスクトップアプリの次のスタンダードはWebView2に決定してるよ もう2ひねりぐらいしないとコレ常用は厳しいなあと思う HTAの再発明の上に実行環境がフォルダ掘ったりで劣化しとるのにスタンダードになるとは到底思えない 外人にも概ね評判悪いみたいだし >>208 xamlなんて使わないで、C#でUIを簡単に定義できるようにすればいい 覚えることも減るし、コードとの親和性も良くなる >>206 扱えるデザイナとそもそもツールがないような? >>220 WPFはXAML使わずC#だけで書けるからそれが良けりゃ自分でライブラリ作れよ >>223 今flutter取り組んでるけど、 単なるデザイン処理がコード中に占める割合が高くて めちゃ読みにくて慣れんわ GUI黎明期は間違いなくコードでUI記述してたわけで 先人がこれはあかんと否定してきたものを今更リベンジさせる必要があるんだろうか 今WinUI3で5chブラウザ作ってるんだがレスのアンカーだのハイパーリンクだと画像のリンクだのを抜き出す処理を考えてるんだがどうしたものか迷ってる 当然その書かれた位置にそのボタンやリンク貼り付けなきゃいけないんだがアンカーやリンクとその他記事は同じ行にはない(<br>で区切られてる)と仮定して<br>でSplitかけて行ごとでRegexとかを行おうと思ってるけどこの方法あってるか? >>227 自前でパーサー書くよりもその手のスクレイピングライブラリは数多あるからそれ使った方が早いと思う WebViewならこれでlinkClickedにjsで独自処理書くなりそこからC#呼び出しするなり <a xxx="~" href="~" yyy="~" >○○○</a> ↓ <span class="link" data-info="ここに情報を入れる" onclick="linkClicked(this.getAttribute('data-info'))" >〇〇○</span> 正規表現もこんな感じので充分やろ <a.+?href="(.+?)".+?>(.+?)</a> >>229 置換だとコントロールが作れない(ハイパーリンクコントロールなどがそれぞれ必要) WebViewでいけたらいきかったけどMVVMのBingingができんかった…(要素名.NativeToString(HTML))なんだけどXAMLにそれがなかったわ…orz >>234 1.ビヘイビアを作る 2.ユーザーコントロールにWebViewのっけて依存関係プロパティーを設置してVMからコントロール 3.サービスを作ってVでWebViewのっけてからVMにインジェクションする このどれかが普通かな? 初歩的な質問だと思うが書き込み失礼 win32APIでArduinoとシリアル通信をするコードを書いてる static void Main(string[] args) { SerialPort serialPort; serialPort = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One); serialPort.Open(); while (true) { var pt = GetCursorPosition(); Console.WriteLine($"X:{pt.X} Y:{pt.Y}"); if ((pt.X > 500) && (pt.X < 1000) && (pt.Y > 300) && (pt.Y < 600)) { serialPort.Write($"X:{pt.X} Y:{pt.Y}"); } else { } Thread.Sleep(100); Console.Clear(); } serialPort.Close(); } Mainの部分がこんな感じなんだが、if文の中にマウスカーソル位置の範囲指定をしていて、カーソルがその範囲に入るとシリアル通信が始まってArduinoに接続したモータが動く(ここまではできた) でも指定範囲を出るとそのモータが初期位置に戻るコードがうまく書けない。C#側でシリアル通信を中断して初期の段階に戻すような方法ある?elseの中に何書けばいいかわからない。 >>238 else { serialPort.Write(初期位置); } で何か問題あるのかな? 初期位置が何を示すのか知らんけど、シリアルはフロー制御なしなら基本垂れ流しになるから、 開始とか中断の概念は持たない else節で100ms毎に初期位置座標を送り続けるのが嫌なら送信フラグでも持って送ったか判定すればいいのでは シリアル通信ってただのbyte列のやり取りでしかなく、中断とかの概念は存在しない。 Arduino側はreadlineかscanfかやってるだけでしょ? この場合はifのtrue側で$"set:{},{}"、false側で$"default:"を送るのがいいんじゃない? 「初期の段階に戻す」とやらが何をするのかは知らんが、C#側が黙ってたらArduinoは何もできない >>240 Arduino側はSerial.availableで信号読み取ってる それがいけないのか 初期の段階に戻すのは、(Arduino側でサーボモータの初期位置を0度にしてるから)指定範囲を出るとサーボモータが0度戻るようにしたい。(つまり信号が送られる前の状態に戻したい) でもあんまりArduinoの話すると板違いって発狂するだろ サーボモーター云々の話なら座標以外に「初期の段階に戻す」のシリアル命令をarduino側で定義すればいいだけなのでは >>241 C#というよりプログラミングの初歩的な設計の話だから怒られんだろ 板違いってのはそういうことな >>239 が大体答え言ってるじゃん 電電板にArduinoスレがあるの知らないかもしれないから一応リンクを。サーボやArduino自体の使い方とかはそっちで Arduino初心者熱烈大歓迎質問スレ part36 https://rio2016.5ch.net/test/read.cgi/denki/1672830085/ >>243 ツンツンしてんな~ 相談室なんだからいいだろ パソコンのWebから秀丸の文書を開きたいのです。例えば、C:\\Data\\sample.txtというファイル で、URLスキームというのを見つけました。 https://qiita.com/kojimadev/items/74100c8557a92939ef69 ここでレジストリにHidemaruを設定したら、秀丸を起動はできました Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\XXX] @="URL:Hidemaru Protocol" "URL Protocol"="" [HKEY_CLASSES_ROOT\Hidemaru\shell\open\command] @="\"C:\\Program Files (x86)\\Hidemaru\\Hidemaru.exe\" \"%1\"" ですが、%1 のところですが、ブラウザから呼ぶときに Hidemaru:C:\\Data\\sample.txt としても、Hidemaru:C:\\Data\\sample.txt というフルパスが秀丸に与えられて頭のHidemaru:が邪魔になります なので、このスキーム部を削除するために、ここではC#を使って加工しているのですが、このC#はどこにどう配置したらいいのでしょうか 私はC++等のプログラムはできますが、C#とかは初めてです このC#はクライエントのhtmlファイルに<script></script>とかに入れてつくるのでしょうか。やってみたのですがうまく動きません どうしたらいいでしょうか? クライエントは、簡単に <!DOCTYPE html> <html> <head> <title>テスト</title> </head> <body> <a href="Hidemaru:C:\\Data\\sample.txt">sample.txtへのリンク</a> </body> </html> としました なんか勘違いしてるっぽいな URLスキームで、hidemaru.exeではなくて自作のexeに関連付けて、 自作のexeでmainに引数として渡されてきたURLを加工して hidemaru.exeを改めて起動するって話だよ C#でないとできないことではないし、C++に慣れてるならそれでCreateProcessすればいいんじゃない? ああ、そういうことかあ、2段階踏まないとダメなのね 自作の簡単なC言語のHello!みたいのを作ってその引数に http:---が入ってきてそれを加工して秀丸を起動しないといけないってこと? htmlファイルだけで直接起動は出来ないのね 確かURLスキームはセキュリティホールになるから世界中で使われなくなってきたはずなんだけど 今更なんで使うんだ? もし、ブラウザのHTML から、ローカルPC 内にアクセスできたら、 世界中のパソコンが乗っ取られているはずw ローカルPC内で起動しているサーバーを通さないと、アクセスできないはず Ruby on Rails などのLinux ウェブ系をやっていない、 Windows の香具師は、平気で恐ろしい事を考える >>246 , 248 カスタムURLスキームでそういうことをする場合は、わざわざC#で作らずとも、一旦WindowsビルトインのWSH(JScript)で中継してパラメータをサニタイズするといいよ(レジストリ登録(*)さえ済ませておけばどこでも動く) (*)下記のようにwscript.exeに対して「パラメータをサニタイズ+それを任意のプログラムに渡して起動するJScriptのパス」と「パラメータ」を渡す C:\Windows\System32\wscript.exe "C:\script.js" "%1" >>252 ありがとう。AHKで作りました。ローカルで使うのでセキュリティとかは大丈夫です >>227 適当なパーサライブラリでASTに変換 ASTからParagraph(Microsoft.UI.Xaml.Document)を構築 RichTextBlockのBlocksにParagraphを追加 いい加減MAUI君に構うのはやめろよ 全然C#固有の問題じゃないし… winforms,WPF,ストアアプリ、UWPで専ブラ作ってたけど そういうところも含めて自分で考えて実装するのが醍醐味じゃないのかなあ? 考えてもわからないなら過去にオープンソースで開発されたものがたくさんあるんだからそれを見て見るとかやりようがあるんじゃないかと C#でつくったアプリをMSRemoteApp化したら、Cursorを変更しても反映されないの? 皆さんnintって使ってますか? 他とやり取りすることなく、メソッド内で完結するただの変数として使う場合、とりあえずintを使いますよね でも今後64, 128ビット幅が主流になったときを考えれば、nintって書いといた方がいいですよね?(そんな時代がくるかはともかく) 少なくともコンパイルされた時点でnintはintと同等かそれよりも効率がいいと(個人的に)思うんですが、でも誰もnintなんて使っていません 32ビット(何なら8でも)以上あれば問題ない、というケースでnintを使わない場合というのは、単にintの方が慣れてるからだけなんでしょうか? nintとnuintはIntPtrとUIntPtrの別名なので、ポインタ(かポインタオフセット)にしか使わない つまりはプラットフォーム依存であることの明示なので、 他のint型との相互作用(大量に出てくるだろうね)を考えるだけでかなりの脳のリソース持ってかれる 全部でBigIntegerを使っとけば間違いないよ 結局既存のメソッドを呼び出したりするときにintにキャストしなきゃいけなくなるんでしょ ごくわずかに数字演算のパフォーマンスが改善したところで毎回キャストするコストのほうが余計にかかりそう 画面の実座標がいまだにshortで足りる範囲とは思わなかったなあ 人間はそれほど目に頼っていないということなのか shortって32767だろ そんな解像度要るわけないじゃん 8Kディスプレイで4画面を横に並べればってとこか 当面要らんな >>262 どうせマシン語になって同じレジスタに入る分にはコストは変わらん 浮動小数点→整数とかならコスト掛かるけど >>259 普通の人は使わない C++やwindowsのAPIやwinprocやDLLみたいのとやり取りする人間にだけ必要な機能で自分には非常にありがたい 今時点でC#内で完結する内容でnint使う局面はないと言える データベースの列名に合わせて、クラスのフィールド名を日本語で表そうと思います。 しかし、インテリセンスで頭文字でフィールドの候補を選択する便利さはアルファベットのフィールド名に劣るので、合わせ技で次のようにフィールド名を定めようと思います。 public string BookName__書籍名; アルファベットだとより複雑な意味を持つ名称でニュアンスがつかみにくいので、このように合せ技を、使おうと思うのですがどうでしょうか。 >>271 >public string BookName__書籍名; これだと英語名その対訳の組み合わせを間違えないように覚えてないとだめなのでメンテナンスコストがあがるだけな気がする データディクショナリを整備したりインテリセンスのmigemo対応を頑張ってみるといいんじゃまいか? >>273 たしかに。 日本語名称だけにしておこうかと思います。 ドット打って、一覧から素直に候補を選びたいと思いました。 >>272 そういう上司いません。いるけど、専門外。 変数名に日本語使われてるの見ると、ここの開発者ゴミだなってなる 世の中にはいろんな人がいて、様々なケースがあることを想像できない世間知らず 普通はフィールドを単独の変数として扱わずにテーブル毎のクラスを作って管理する DapperやEntityFrameworkなどのORMでは強制的にそうさせられる これを機にORMへステップアップしてみるのも面白いと思うよ 自分一人で作って自分一人で使うのなら好きにすればいいんじゃね? >>279 ストアドプロシジャ主体の昔からのシステムなので、おっしゃるようなコードファーストの考え方と噛み合わないところがあります。 いまは、ストアドプロシジャを作成することなく、コードファーストでデータベースへの指示はEFに任せるのかなぁ。 >>287 通常は通常でしかないよ~ 選択は自由 C#でプロパティを使いだしたのはget;set;自動実装で簡単になってからでそれまでは結構public fieldは使われてた 一番困るのは何でプロパティを使うべきなのか全員を納得させられる答えがない WPFもUnityもフィールドをpublicにして使ってる そこを突っついてプロパティにしろって言うのは違うだろと 別にお前を納得させるつもりはないからどうでもいいよ プロパティを使うべき理由なんて調べればいくらでも出てくる 悪党のようなかっこええ捨て台詞痛み入ります! こいつらしっかり考えたこともないし実際に使ってこなかったから言葉が弱いんだよな 誰も説得できないか弱さ 教えてくださいお願いしますという態度ならともかく、そもそも話を聞く気が無さそうな奴に 無駄なレスバする気はないよ > 教えてくださいお願いします 馬鹿なんwwwwwww 脳みそ空っぽでこれまでのC#の流れも知らず考えたこともない園児に教えを乞うやつはおらんw 経験の少ないアホを納得させようというのはこんな風にたいてい徒労に終わる フィールドを直接公開しないというのはオブジェクト指向の最も基本的なデザインパターンだが破りたきゃ勝手に破ってなぜ開発が難しくなったのか理解できず右往左往してりゃいいさ unsafeみたいに強制ギブスつきでいいから非公開メンバにアクセスさせてほしいよな リフレクションはさすがにダルすぎる 受け渡しの際になんの処理もしないんだったら直公開でええやん なんかしたいときに一段かませばいいだけのこと >>297 いやいや 経験が少ないのはお前の方だろw 頭がガッチガチのゆとり人間だなと > フィールドを直接公開しないというのはオブジェクト指向の最も基本的なデザインパターン 前にも書いたけどWPFもunityもpublicフィールドを使ってるよ get setがpublicでフレームワークから要求されてないのにプロパティ使う意味なんてただの一貫性の問題だろう c++のオブジェクト指向でもgetter/setter使ってる人間はほぼいない でっかいOSSでもそんな使い方なんてしてない 何が何でもプロパティじゃなければいけない理由などないから使いやすい使い方をしてる プロパティは実際に使い勝手が悪いので過去はあまり使われてなかった 自動実装で簡単に実装できるようになってから利用が進んだ 最初は自動実装もなくgetとsetのアクセス制限も別にできず意味不明だった 何より行数が不必要に消費されてコードの見通しが悪くなるゴミだった 公開するものはpublic宣言、公開しないものにはprivate宣言 だからプロパティ何それ美味しいの? って感じ >>305 >何より行数が不必要に消費されてコードの見通しが悪くなるゴミだった おっとJavaの悪口はそこまでだ プログラミン覚えられない コツコツやるしかないよな >>309 C#が登場した当時はjavaとの比較で簡潔に書けるパターンが多くて感動したものだったな プロパティーとかイベントとか フィールド公開するやつはプロパティの自動実装の意味すらわかってなさそう 不等号ってたまにわからんくなる 不等号のどっちが大きいのか time < 0 これでtimeが0を下回ったら、という意味になるよね 言語化の問題かな?うまく日本語にする方法ないかな さすがに不等号が分からないとか言われると小学生からやり直せと言わざるを得ない >>315 基準とは? 変更される値がtimeです 大なり小なりの基準か、あるいはヨーダ記法は邪道か オーバーロードとか左辺値・右辺値とか 最適化など色々問題があったっけね >>317 記号見りゃどっちが大きいかなんて一目瞭然だと思うが a<bでaの方が大きいと思う理由がよくわからん ガリバートンネルには大きい口と小さい口があるが大きい人が入るのはどっちだ? powershellは$null比較の時、 左辺に$nullを書かないと思わぬ事故死する C#とか普通の言語でかつ特に理由が無ければ、 左辺に比較対象、右辺にリテラル等の被比較値を書くのが一般的だろうね 40歳以上で勉強してもプログラムがわからないなら諦めたほうがいいと思うわ あおりでなんでもなくコーディング自体が楽しくないなら時間を掛けるだけ無駄かと それよりも a >= b a.以上(b) とでもメソッド掛ける 自分はかねてより複雑になりがちな条件判断は可能な限りメソッドにしたほうがいいと思ってるし そう書いてる 範囲判定なんかメソッドにしてることも多い 日本語じゃないけどね… 以上と書いたは便宜的なもので実際は概念に合わせて書いてる A>=Bは結局何なのかでメソッド名も変わり概念の抽象化ができる A.は優秀(B)だとして数学の点数なら多い方が優秀 ゴルフのスコアなら低い方が優秀 そういうのを何度も書くなら< > なんてあちこちで書かなければいい >>319 その状態になったら、っていう条件式なんすね >>324 同じことだろw a<bの状態になったら真になる条件式はa<bに決まってるじゃん > の読み方が大なりなのか小なりなのかが分からん! って話じゃなくて? >>322 楽しくはないけど、嫌いでもないならそれは好きなのでは? その子はちょっとアレな子だから真に受けない方がいいよ >>327 40年前に入門したときはプログラムが好きで好きでたまらなかった 自分はdelphiからの移行組なんだ 21年前にC#に触れたときも面白くてたまらなかった 発売が待ち遠しかった 出てからもわからないところもあったけど毎日入門書を読んでた 本当に面白かった 空き時間に繰り返し何度も何度も読んでた 人それぞれなんだろうけど楽しくも嫌でもないって不思議だなと 最初に触れたのは22年前か 翌年C#が発売された 間違えてC++のパッケージ持ってって途中で気が付いた 台所のシングルレバーの水栓、レバーの左側に赤、右側に青が書かれてる お湯を出そうとレバを左側に持っていくと、真正面に青色が来るから冷水出るのかとと思って戻す 以後繰り返し 21年前はwebにもほとんど情報がなかった 目の前に大平原が広がってたようなその実暗闇だったような 情報はほぼ雑誌やわずかに発行されてた本からのみで同士もいない ジェネリックがないC#1.0は地獄で実質2.0からが本番 ファイルの読み書きも簡単に出来ず苦労した 1.1までFileクラスなかったんだよな 2.0でFile.ReadAllTextが実装された そういえば.net framewarkにどんな機能があるのかすら事前にわからなかった MSなのでDirectXやサウンド機能やmidiAPIぐらい入れてくるだろうと思ってたけどなんもなし delphiのコンポーネントセットと似た様なコントロール群だったので何とかなったけど何をしろと言うような状況だった お世辞にも他人に勧められるような言語じゃなかった 状況が変わったのは2008年ぐらいかなあと 自分のC#の情報はCマガジンからでググったら目次が出て来た 2001年1月号 特集 C# 特集 Waveletの新アルゴリズム なので実際は2000年の12月に出会ってる VisualStudioって当時おいくら万円しました? >>335 自分はC#のみのパッケージだったけど1万5000円~18000円ぐらいだった気がする 非常に安い印象 ほぼ毎年delphiとBorland C++のアップグレードパッケージにお布施するより安い 徒歩圏内に家電量販店があるけど自動車に乗って買いに行った 帰ってきてインストールするまでが一番楽しかった インストール中マニュアルだか見て思ってたのと違うと気が付いた VS2005からstandardのアップグレードパッケージ?買ったけどその時は高かったとしか覚えていない 昔は言語は3万以上してたような思い出 大学の友達はなんも知らんから授業で使うFORTRANを買った 9万円ぐらいだと聞いたw みんなで買うならC買えよって言ったら教えてくれたらよかったのにと激怒された 確か当時で年間20~30万くらいのサブスク製品が5万くらいでアップグレードできた覚えがある 数年後にはチーム開発向け機能強化で年間200万くらいまで値上がりしたので個人では手が出せない製品になってしまった 新規価格と違って更新価格はそこまで高くはないけど… 正直なところC#は実際2010年ぐらいでも全然日陰言語だった ずっとふわふわしてた まず実社会で使ってる人間に出会わない メインで使ってても変わり者としか見られないしメリットは何なのか聞かれまくった いつ頃メジャーになったのかもわからない 自分はCマガでC#に出会ったけどその後廃刊になってるんだよな 唯一あった言語雑誌が死亡してマイナー言語なんて一般人は触れる機会もないし メジャーになる前はどうやってみんなであったんだろ? C MAGAZINEのバックナンバーがKindleで1冊110円、1ポイント還元で買える。 一部の号は99円、1ポイント還元。 全部か分からないけどKindle Unlimitedでも読める。 >>338 2002のサブスクリプションが3万ちょっとぐらいで大安売りだった記憶 2008などBlendの付録でVSスタンダードがついてきて2万以下だった 唐突に長文連投自分語りが始まって何事かと思った ヤバいな この自分語り長文の オイコラミネオ MM49-3uzD って 別のスレで++C++が気に入らなくて難癖付けてた人じゃね? 思ったよりおっさんというか中高年の世代なんだな おめでとう!未確認飛行アンチは未確認飛行アンチ自分語り長文おじさんに進化した! 未確認飛行に対する負の感情も長い期間かけて煮詰めてきたんだろう 本当にみんなReactiveUIとかでMVVMでアプリ作ってるのだろうか。 いまだにポトペタでイベントハンドラ書いてたから、この前はじめてリアクティブプログラミング知って浦島太郎なんだが、、、 下記のコードでBIOSの情報を取得しようとすると例外が発生しました。 try { ManagementObjectSearcher s = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_BIOS"); foreach (ManagementObject q in s.Get()) { serial = GetSerialNo(q["SerialNumber"] as string); break; } } catch(Exception ex) { MessageBox.Show(ex.ToString()); } 例外: System.Management.ManagementException: 無効なクラスです 場所 System.Management.ManagementException.ThrowWithExtendedInfo(ManagementStatus errorCode) 場所 System.Management.ManagementObjectCollection.ManagementObjectEnumerator.MoveNext() どうすれば取得できるようになるでしょうか。 メッセージの通りだとクラス指定された対象が存在してないんだろ 今回の件はどうかわからないけど そういう系のは取れる奴と取れない奴がある 運が良ければハードが対応してて取れることがあるレベルのもの ハードの問題ということですね であればプログラムでは解決できないか 何が欲しいのかはわからないけど他の手段があるかもしれないからググりまくるしかない そこでエラーは一般ユーザーで実行してたりで権限が無いとかかな いったんpowershellのコマンドで期待する情報が出てくるか確認してみて Get-CimInstance -ClassName Win32_BIOS | select * ユーザーのパソコンで発生しているので今すぐにはできないですが 確認してみます やったことないので知らないけど、管理者に昇格して実行してる? 漏れのPC のPowerShell では、以下は取得できる $Win32_BIOS = Get-WmiObject Win32_BIOS $Win32_Processor = Get-WmiObject Win32_Processor $Win32_ComputerSystem = Get-WmiObject Win32_ComputerSystem $Win32_ComputerSystemProduct = Get-WmiObject Win32_ComputerSystemProduct $Win32_OperatingSystem = Get-WmiObject Win32_OperatingSystem winformsで普通に実行してObjectは取れてる もしかしてGetSerialNoの中身がおかしいのかもなあ 権限付与しなくてもSerialNumberは取れてる 取るだけならコード上は何も問題なさそうだけど UWPにはSystem.Managementってないよね 仮想環境で実行してるって話じゃないよね linuxで実行してるとかもないよね? 知恵袋(削除済み?)やらMSやらあちこちで聞いてるな susie plugin の呼び出しで、.spi 側の HANDLE *pHBInfo を out IntPtr pHBInfo でマーシャリングしたときに、 pHBInfo に直接返るのと、pHBInfo = Marshal.ReadIntPtr(pHBInfo) しないと取得できないプラグインがあるのはなんで? マーシャリングにバグでもあるの? 脳にバグを飼ってる可能性も考慮 アンマネージドなC/C++で仮組みして意図通りC#にpinvokeできてるか確認しなよ >>362 プラグインがLocalAllocをLMEM_FIXEDかLMEM_MOVEABLEでやったかの違いと予想 Marshal.ReadIntPtrじゃなくてLocalLockしないとだめじゃね? なるほど手元に20年前のソースがあるがHBInfo HBm共にLocalLockして生ポを得てるな 使い終わったら元のハンドルをLocalUnlockでFALSE(0)が返るまで呼び出してLocalFreeで開放しとる プラグイン側がLocalAllocしたハンドルもしくは生ポを返す仕様だから何が起きてるのか判り難かろう >>363-365 無事実装できた thx愛してる Macしか持ってないんですが Visual Studio入れてC#で ウインドウズ用のアプリって開発できないのです? ビルドしてウインドウズパソコンに デスクトップアプリを配布したいんですが 無理ですか? >>367 出来たとして、100%互換か怪しいから 不具合出たり対応が面倒になるくらいなら 最初からWindowsで作れば良い ちなみに出しておいてなんだけど、情報が少なすぎてかなり茨の道だとは思う 早速のレスありがとうございます C#じゃないとダメだってわけじゃないんですが 子供の学習用デスクトップアプリつくるのには VisualStudioが楽で綺麗に作れますよね? 学校で配られてるタブレットPCで動かしたいんですわ Scratchで作ってたけど、画像がいっぱいになるとすっごく思いし 中身見られるしってので開発環境探してました ウインドウズPC購入か、仮想マシンですか、、、 考えます javascriptとか使ってwebアプリで作れば? ありがとう ウェブアプリとか難しそうですね 情報集めてみます >>372 そのタブレットがARMなのかIntelなのかとかも一応気にした方がいいかも TrueType と OpenType フォントを判別する方法はないのだろうか 本来は1回しか実行されないはずのメソッドが、何かの条件を満たすと複数回実行されてしまいます。 呼び出し階層を辿ろうにも、呼び出し元が数十か所あり、その呼び出し元も別の多くの場所から呼び出されている為、辿るのが困難な状況です。 また、各呼び出し階層内でのループや分岐・メソッド呼び出し時の引数も多い為、絶望的な感じです。 こういう場合はどうやって原因を特定すればいいのでしょうか? >>380 すみません。 外部ライブラリとか実行用の周辺機器が揃ってない為、実行出来る環境がないのです。 なので、報告受けて、Visual Studio の Code Lens・呼び出し階層表示だけ見てなんとかしようとしてます。 >>381 呼び出し階層が表示できるならそこ調べりゃいいじゃん 調査困難な状況を説明してログを仕込ませてもらうしかないな あと、GUIアプリならコントロールが想定外にイベント発火してる可能性を一応疑った方がいい >>379 複数回呼ばれた時に例外出してるならスタックトレース見ればすぐ分かる 例外出してないなら出すようにコードを修正する どっちもできないならあとは発生タイミングとアプリケーションのログから推測して再現させるとかかな 確証を得たいならコードを修正するのが手っ取り早い >>381 メソッドが実行された時にコールスタック情報をログファイルに記録するようにすれば みなさん、ありがとうございます。 まずはコールスタック記録するようにしてみたいと思います。 呼び出し階層表示が見られるって自分で言ったのに今からコールスタック表示するのかよ 静的な呼び出し階層と実行時のコールスタックを混同してるのか 辿れないほど呼び出し元が多岐に渡るメソッドをどうやって1回しか呼ばれないよう担保しようとしてたのか気になる 同時実行制御の問題なのかな >>372 自分のMac売って第8世代i5の中古ノートPC2台買うたらええで 自分と子供用にな 自分の開発マシンにして、愛機 と言うかこれしか持ってないんです 2008年 8月20日 発売 ThinkPad R500 2714A17 2008年は古過ぎだろw 今のWindowsまともに動かんやろ Win11のシェアなんかゴミみたいなもんだし 問題ないわ OSはWIndows10でも良いけど、快適に開発するならPCはWindows11を入れられる位のスペックが欲しい スマホと同じペースで1年の寿命しかないMacよりはいい まあMacは信者専用機だから・・・ オフィスワークから開発、創作活動、ゲーム、動画視聴までWindowsで高品質なのが揃うようになって20年近く経ってるのに一般人はMacを使う意味ない 何年前だったかプラスチックの炊飯器みたいなのを「マックはデザインがかっこいい」と言って信者が騒いでたのを見て「こいつら救いようがねぇな」と思った記憶がある 別に使いたい用途で使えるならデザインで選んでもいいのでは、と俺は思うけどね。 貧乏人はApple製品を憎んで嘘で貶めようとします そういう話じゃ無い マックに100万使うならWindowsマシンに100万使った方がスペック良いよねって話 >>404 百万のWindowsPCなんて無駄だろ 嘘を指摘されると今度はごまかし始める 貧乏人は大変だね c#なら素直にWindows機でいいんじゃね そこに会社の規定とか制限があるのならしらん 何の話かと思ったら開発PCか >>392 そのPCでWindowsだから重いって思うんだろ? Linux入れりゃ良いじゃん それかWindowsでも開発ツール入れなきゃ良い azure上に仮想マシンやらDevBoxで良いじゃん Codespaceで良いじゃん 俺なんて家でも会社でもiPadでブラウザでCodespaceだぞ 重いPC持ち歩く必要も無い タブレットだけ持ってりゃ仕事出来る codespacesって意外と安くないよな 何か安くなる秘法でもあるのか? ブレイクポイントって関数単位で止めるものなんでしょうか 関数の途中で止めたりすると駄目なんですかね スタックフレームなんちゃらと怒られます func myFunction() { print("hoge1") print("hoge2")#ここで止めちゃ駄目? } >>411 別の問題だな リリースビルドしてるとか 馬鹿は開発環境が何かさえ書かない そもそもC#なのか? ブレイクポイントって度のタイミングで使うもんなのかなと一般的な考え方として、、、、 一般的に関数内で止められないわけねーだろ お前のコードが一般的とはかけ離れてるからどこまで本当のことを言ってるかすらわからん 関数内で普通に止められるぞ むしろ止められないデバッガって何w 聞くスレも間違ってるけどエラーメッセージを読まないでなんちゃらで怒られましたで済ますのが一番だめ 大事なのはそのなんちゃらだし 怒るわけないよね 怒られてもないのに怒られたピエンって泣きつくやつは何やってもだめ 最近は指導しただけで逆恨み銃殺まであるんだな怖い怖い >>423 足元撃ってやろうとしただけだってさ 乱射したらリコイルしたって 指導する人もいなくなるし迷子の子供を保護する人もいなくなる(下心のあるおっさんを除く) 指導って要らなくね このスレ的に言えばプログラム言語の研修とかだってWebサイト見りゃ良いじゃん その上で修了試験的なのして合格なら業務投入で良いじゃん 土方とか関係無いやん 寧ろ優秀な奴ほど下手に指導するより書籍とか与えておけば良いって事もある 更に言えば自分で独習してきて勝手に技術習得してるのが優秀な奴じゃん 教えられて無いので出来ませんはかなりの無能な部類 >>431 c#は使ったことがない人(期待)と実際に使ったことがある人(賞賛)の乖離が大きいのな 実際に使ったことがある人の評価は悪くない 食わず嫌い良くないw つーか上位ほぼスクリプト言語だな C#健闘してる方じゃね ワイの超糞コードもgithubに上げればすっきりリファクタリングしてもらえるだろうか 今更だけど、.NETのLTSが三年って短すぎと思うのは俺だけ? 三年経ったらVisualStudioを買い替えて、新しいバージョンの.NETにマイグレーションしてテストして…ってそんな金誰が出してくれるんだ? 今のシステムは3年持たないから別に短いとも思わない 俺の会社のシステムは年4回の更新がルールになってる テストは自動化だから追加機能のない時は1日で終わる VSはサブスクだしvscodeでも良い >>439 三年持たないシステムってどういうシステム? うちはコテコテの業務システムなので下手すると10年以上使う… セキュリティやら何やらで3年以上も持つシステムってのは世の中には1つも無いぞ 10年以上使うことは出来てもそれって年々増加するリスクを抱えて使ってるだけ 俺が言ってるのはリスクを基準以下に抑えた安全なシステムは3年が限界って意味 よほど古い体質じゃない限り、 今はCIとか自動化でFWとかのバージョンアップ含めて対応してくのが望ましいよね 持たないというか、「LTSきれるから対応する」という旧来の対応じゃなくて 継続的に最新を検証しながら順次当てていく運用がされてると思う DBとかインフラ周りは事情変わるし、そっちに引っ張られることもあると思うけどね 体制を変えるのも企業としてカロリー高いし、中小ユーザ企業は置いてけぼりになってるかもね >>440 Web系は軒並み寿命が短くなってる システム的な側面もあるし、使用する言語そのもののサポート期間が短くなってるって理由もあると思う 業務系だとあまり感じないと思うけどかなり深刻よ phpとかActive support2年、Security fixes onlyな期間いれても3年だぜ スタンドアロンのマシンを工場に入れて稼働させるなら平気で10年使うとかあるんじゃない? それなら別にサポート切れてもかまわんけど 問題はシステムそのままでネットワークに繋ぐけど更新するつもりがないようなケース。 既に動いてるソフトに追加で金(手間とかメンテ)かけたくない人たちはいるんだよ。 別に金掛けないなら良いんじゃね 動かなくなった時とか問題が起きてもサポート対象外で知ったこっちゃ無い リスクの説明をしてそれでもリスク許容するって判断したならそれまででしょ 責任者は自分が下した責任を取るだけじゃん 大掛かりな業務システムだと製造自体で年超えるから、三年はまあ短すぎだわな そんな大掛かりで特定のバージョンに繊細に依存するようなナイーブな業務システムを、ターゲットに入れてないんやろ 逆に.NET4系はなんであんなに長くサポートされるんだろう 一つの製品に時間を掛けると完成度は高くなる 今はそれをやらないで次々製品を出している そのほうがメリットがあると考えてるから それが出来ない分野ってのはあるんだよ 全てが同じように作ればいい訳ではない >>449 コンセプトがWindowsの新しいAPIでWindowsの一部だから 新しい.NETはマルチプラットホームなのでどんどん新しくしないとOSに取り残される Javaもそんな感じだよね… うちみたいな昔ながらのSIerはついていけずに潰れるな… .net coreはOSの一部じゃないから放置しても良いってことか その割には3.1とか頻繁にWUかかるよな 何がそんなにダメなのか知らんけど . NET Core は Windows、Linux、および macOS で動作します。 . NET Framework は Windows で動作します だから、Linux が頻繁にupdate されるからかも ん? NETFrameworkもNETCore3.1/6も毎月定例でWindowsUpdateが来てるかと思ってたんだが、違うの? >>456 そのアップデートが行われる期間が三年じゃ短いんじゃないかという話をしてるんだよ frameworkの方はwindows付属なのでosのサポート期間と同じ長さになる あ、>>456 の疑問は>454に対してで Coreのアップデート期間が短いなんて話への興味もないしサポート期間が短いという認識もおれは持ってない 話を変えるときには「ところで」とか言った方がいいぞ 2008年にリリースされた.NET Framework 3.5SP1はまだサポートされてるんだよな... え、ごめんよくわからない このスレの流れで誰がどのレスでどう話を変えたの? 具体的にどのレスに「ところで」とかつけるべきなの? >>445 リスクを説明したらFrameworkで作ってくれと言われるから 言われないようにサポート伸ばしてくれって話だろ 変な話になってるな .NET Core 3.1のサポートは2022年12月13日で終了 しかし OSの一部でもないのにWUが頻繁だなと言うこと そういえば、Powershell 5.1 は .NET Framework 4.5(1年ほど前にサポート期限切れ)ベースなんだっけ? VBはもう終わってるし、F#はさすがにマイナーだからな F#なかなか始まらんな C#がどんどん関数言語化していくから結局C#でいいやとなる 今は各言語で使われてるasync/awaitもF#から始まったものだしLINQもF#のseqが源流っぽいし読みやすくて面白い熱狂的なファンのいる言語ではある パターンマッチングや型推論もF#には劣るけどC#でできるようになったしF#ならではという部分がどんどん無くなってるんだよね 非同期がわかりにくくなった元凶かw あんなんコロコロ都合で変える様なもんじゃ無いんだよ 最初から計画して作るものなんだから 極端な話、別の記述で独自させて書くくらいで丁度いい 非同期がわかりにくいと言ってるやつはスレッドプログラミングしたことないだろ >>475 だからスレッドプログラミングするなら これはスレッドですと明示すれば良いのであって ゴニョゴニョ都合でawait/asyncを継ぎ足すなって言ってる async/awaitすらわからんやつにはスレッドはわからんぞ あれでどれだけ簡単になったと思ってる 文句言うなら一度やってみてから言え >>478 簡単になった=無駄に乱用してわけわからんくなってる >>481 そういうのをスパゲティと言うんだよ 基本がなってないのにそんな大口叩いてたのかよ 素人さんの想像なんか知らんがな >>483 スレッドでもミューテックスとかで待つぞ >>484 そう言う設計ならそれで良いだろ 無闇やたらにawait/asyncするよりマシ プログラミングしたことないなら無理してここに書き込むなよマジで バリバリ現役なんだが、だからこそ無闇やたらの同期待ちが目に余ってしかたないんだ async/awaitって、待ちが発生しないから 代替処理はmutexとかじゃなく 親スレッドに完了通知を投げるような実装をイメージしてた 素人の考えだけど >>489 同一スレッドでも複数のタスクが行えるのがasync/awaitのいいところ JSなんてシングルスレッドだからね スレッドなら待つのにはmutexやsleepを使ってデッドロックした時にはもつれた紐を解くような作業をしてたのをawaitでできるのはとても便利 awaitはC#コンパイラによって即returnに展開されるぞ Taskの終了時にawaitしたとこまで一気にジャンプする 関数の制御構造を変えるので「async」のマーカーが必要だったり返り値がTask or Task<T>になる制限がつく Taskの完了とかを管理するのはThreadPool。 (乱暴に言えば)言語側が用意しておいたスレッドのうち、 手が空いたスレッドが手当たり次第にタスクを実行する AzureInsightに流すからNLogなんて何年も使ってないな 読みやすくなっただけでasync awaitの価値がある プログラミングはコアまで理解出来るほど、上等と言えるのですか? C#だつて中身はc++でしょう。c#自体をいじれるくらいになるのが上等なんでうsかね 「C#の言語仕様変えられるほど上達しますた!」 「いいから仕事しろ」 googleとかの検索エンジンで、検索文字列入力エリアに文字を入力すると、自動的に検索候補が出てきますが、 自分で C# の ComboBox に表示してみたら、表示までにかなり時間がかかります。 どうすれば高速化できるのでしょうか。 検索候補として IEnumerable に保持している要素数は2万件で、最初の1文字入力時に表示されるまで、体感で1秒以上かかってます。 今のソースは下記です。 ------------------------ List<string> suggestionWordList = ;//あらかじめDBから取得済みの検索候補 //inputedWords は、入力文字列をスペースでsplitした配列。 void Search(string[] inputedWords) { var keywords = inputedWords.ToList(); var result = suggestionWordList.FindAll(s => keywords.TrueForAll(s.Contains)); ComboBox1.DataSource = result; } ------------------------ ※要素の保持方法や文字列処理は言語固有の機能が結構あるので、C# スレで質問しました。 要素自体をインデックスで振り分けるなりして 少なくしろよw 検索対象となる単語をあらかじめハッシュ化してオフメモリのハッシュリストを作成 入力された単語を単語に分割してハッシュリストから取得 ということをすれば速くなる これが何を言ってるかわからなければ素直にデータベースを使えばいい 単純にDictionaryにしてみたら>List<string> suggestionWordList >>499 トライ木っていうデータ構造が有効 C#での実装も幾つかあるので試してみて 2万件のデータ全部に対してContainsやるって考えたら相当時間食うよ Contains自体もそんな軽くないし googleは相当な人と金をかけて即応答ができるようにしてるから比較しちゃいかん ひらがな数文字に対して応答するべき内容はあらかじめ決めてる(キャッシュしてる)でしょ byte b1 = 0xff; byte b2 = 0x00; これから 0xff00のushortを作るにはどうすればいいの? >>506 b1をushortにキャストして8ビット左シフトしてb2をOR演算する。 WinForms でコードを表示するのに TextBox だとちと物足りないんで何かいいものありませんかね。 AvalonEdit を試してみて、何とかフォームに貼っつけるとこまではできたんだけど、なかなかに苦戦中。 もうちょっと手軽なのないでしょうか。行番号、ルーラー、カレント行の下線表示ぐらいができるもの。 もしくは、AvalonEdit を WinForms から利用する詳しめの解説などありませんかね。 Azukiってコントロールを日本人が作ってるからそれを試したら? 手軽かどうかは知らないけど ないのかー。そうだろうなー。結構探したし。 Lazarus なら SynEdit とか付いてるのに、C# にこれだけないとは意外ですよね。 もうちょっと AvalonEdit 頑張ってみます。 AvalonEditはWPF用だからWinFormsからだと面倒そうだな 仕事なら商用コントロール買っちまうとか 逆に元をWPFにしてしまうとか 前任者が作ったexeしかないアプリを修正して 管理しろって言われてdnspyとか使ったけど メソッド名とか変数名とか\u○○○みたいになるの なんとかならないのか 試しにプライベートで作ったアプリやってみたけど 日本語も英語も普通にそのまま復元できたけど なんだこれ まさに逆コンパイル対策の難読化なのでは どうにかしてソース手に入れるかクリーンルームするしかない ILSpyもdotpeekもあかんかった エラーが9000以上あってやる気無くすが 上司がやれと言うからやるしかない そもそもフリーソフト使っていいとか この会社大丈夫かって感じだけど Windows Forms で Azuki 使ってる ( 2年くらい前、アプリに組み込んだ ) けど、結構いいよ。 プログラミング経験ほとんどなかった当時の自分でも割と楽に使えた。 前任者に連絡した方が早いだろ 後ろめたいものでもない限り 難読化してあるのにソースが残ってないとか平和的に前任者が退職しているとは思えないな… >>523 ライセンス問題等を回避するために、既存の(主に外部の)成果物を認知・参照せずに「独立して設計する」ことを言う この場合は原理的にクリーンルーム設計するしかない状況(逆コンパイルしても意味消失していて事実上メンテ不可能) 変数、メソッドは力技でどうにかなるとして このコード意味わからん 最後のmanifestResourceStreamでnullになるし コードが悪いのか、デコンパイラーが悪いのか そもそも何がしたいんや int num = 119752025; int num2 = -60238915 - num; StringBuilder stringBuilder = new StringBuilder(); int num3 = 476705732 - num - num2; stringBuilder.Append((char)num3).Append((char)(num3 >> 16)); num3 = (769905914 ^ num) + num2; stringBuilder.Append((char)(num3 >> 16)).Append((char)num3); num3 = 477230015 - num - num2; stringBuilder.Append((char)(num3 >> 16)).Append((char)num3); num3 = (num ^ -764548291 ^ num2); stringBuilder.Append((char)num3).Append((char)(num3 >> 16)); num3 = 597773385 + num + num2; stringBuilder.Append((char)num3).Append((char)(num3 >> 16)); num3 = 477230024 - num - num2; stringBuilder.Append((char)num3).Append((char)(num3 >> 16)); Stream manifestResourceStream = assembly.GetManifestResourceStream(stringBuilder.ToString()); おかしいのはお前だ ソース全部読んでどうすんだよ その部分を管理して修正したいのか? 一体お前は何をしたいんだ? ソースを全部読んで理解するのが本質じゃないだろ そのexeの機能を知っててそれをどうしたいか知ってるのはお前だけ ここにソースを書いて何がしたいんだ? そりゃ難読化されたコードの解読方法を教えて欲しいんでしょ その前にさあ 上司に社内のexeの逆コンパイルされたコードを5chに貼っていいと許可を得たのか? >>519 おお、いいね。WPF をちょっと学び始めてた。情報ありがとう。 ダウンロードにえらい時間かかったけど、無事使えた。 GitHub に移ってちょっとずつでもメンテしてくれないかな。 >>526 おおっと、これはとても重要な暗号化ロジックだな〜(棒) Windows10でHttpClientをHTTP/3として利用することは不可能なの? >>534 https://learn.microsoft.com/ja-jp/dotnet/core/extensions/httpclient-http3 >プラットフォームの依存関係 >Windows 11、Windows Server 2022、またはそれ以降。 (以前のバージョンの Windows には、QUIC をサポートするために必要な暗号化 API がありません。) >Windows 11、Windows Server 2022、またはそれ以降。 (以前のバージョンの Windows には、QUIC をサポートするために必要な暗号化 API がありません。) ここでもOS足切りをしてくんのかあ そうなのか wsl2で何らかのバイパスと言うアイデアを考えたが「今のところ」動かないみたいだな 他の仮想化技術使ってプロキシを動かすとしても対応した技術がいるなあ >>538 の言うようにOSに深く依存する非公開技術じゃないしUDPベースだからOSが足切りしても適当な野良QUICスタックを誰かが作って広めればワンちゃん >>541 TCPと同等以上の品質で野良ネットワークスタックとか誰が作(れ)るの? 作るまでもなくlinuxやらで動いてるスタックをポーティングするなりwslで使えばいいんでね 「HttpClientをHTTP/3として利用すること」 >HTTP/3 は、最近標準化された HTTP の 3 番目のメジャー バージョンです。 >HTTP/3 では、HTTP/1.1 および HTTP/2 と同じセマンティクスを使用します。 >つまり、同じ要求メソッド、状態コード、メッセージ フィールドがすべてのバージョンに適用されます。 >異なる点は、基になるトランスポートにあります。 >HTTP/1.1 と HTTP/2 では、どちらもトランスポートとして TCP が使用されます。 >HTTP/3 では、QUIC という HTTP/3 と共に開発されたトランスポート テクノロジが使用されます。 オムロン、週3日勤務も可能に 学び直し支援に新制度 オムロンが週3日の勤務や短時間勤務など、働き方を選択できる制度を 2023年3月から導入することが分かった。オムロン本体に勤務する国内の 約4600人の社員が対象となる。勤務時間外に専門学校やビジネススクール に通い専門性を高めるなど、リスキリング(学び直し)の機会を設ける目的だ。 新制度は、1日の就業時間を15分単位で最大2時間短縮できる「短時間勤務」、 週3日か4日勤務が選べる「短日勤務」、「休職」の3つの選択肢がある。 >>549 そこに載ってないけど、SIMDがかなり扱いやすくなった 使う人は少ないだろうけどね ファイルの読み込みを高速化するにはやはりアセンブラを使うしかありませんヵ >>553 NVMe SSDにファイルを置くと爆速で読み込めます。 >>553 プログラムの前にコンピュータの構造と歴史を勉強したが良いと思う >>553 アセンブラで最適なロジック書けるならそれに勝るものはない 圧倒的にデバイスのI/Oの方が時間掛かるのでコード速くするとかアフォなことは考えないことだ ただ、もし1行ずつ読んでるとかならファイル丸ごと読んでメモリ上で行分割した方がいい 目的が全く具体的じゃないから分からないから当てずっぽうだけど MemoryMappedFileクラスを使うと良いパターンかな >>558 2TBのSSD上に置きなさい。 あと>>559 と同意見。 そもそもシーケンシャルなのかランダムなのか、全部読む必要があるかも書かないアホは相手にしなくていい このスレも含めてスレ違いの話題に飛びつくぐらい今ム板って過疎ってるね この板に居た奴ら自力で専ブラ問題すら解決できなかったのか 初心者です。教えてください。 フォーム上に設置したテキストボックスに垂直スクロールバーを表示させたいのですが、どうやっても表示されません。 this.textBox1.WordWrap = false; this.textBox1.ScrollBars = ScrollBars.Horizontal; とコードに書いても、デザイン画面でプロパティの設定をしてもダメなんです。 何か考えられる原因ってないでしょうか? 垂直はverticalで、スクロールバー出すならmulch lineにする必要があるのでは Mutiline=true WordWrap=false ScrollBars=ScrollBars.Vertical(またはBoth) この3つでおk 本当に本当にごめんなさい。 私が実現したかったのは水平スクロールバーでした。 横に長い文字列を幅の狭いテキストボックスに表示させたいのです。 WordWrap=false 以外に、水平スクロールバー出現の条件って何があるのでしょうか? >>566 垂直スクロールバーでも水平スクロールバーでも>>565 Multiline=trueやんなきゃ出ない まぁ、垂直の場合はWordWrapはtrueでもいいけど スクロールバーコントロールが単体である 後は判るな? 自己解決しました。 text-alignがcenterだったので出現しなかったようです。 leftにしたら表示されるようになりました。 お騒がせしました。 同期とって中の文字をスクロールさせるのは大変じゃね >>570 何で初心者のくせに初心者スレに書かないの? たびたびすみません。 教えてください。 先に質問させていただいた、スクロールバー問題ですが、いろいろと原因を探る際に フォーム上に新規でテキストボックスを作ってプロパティをいじっては消して、また新たにテキストボックスを置いては消してを 繰り返しているうちに、ビルドエラーが起こるようになってしまいました。 フォームのデザイナーcsの記述がおかしいのだそうです。 画面上でコントロールを配置してるうちに自動で生成されるコードだと思うのですが、一般に、こうなってしまったらもうアウトなのでしょうか? それとも上級者の方なら裏で生成されているコードだろうと原因を見つけて修正できるものなんでしょうか? 素人は、こうなることを想定して、ちょくちょくバックアップをとっておくのが常識ですか? あるいはいつでも過去の時点に戻れるというGitという技術を学んでおくべきなのでしょうか? Form1.Designer.csのこと?それならほぼ初心者だけど何度か直してる。 >>573 何で初心者のくせに初心者スレに書かないの? 厚かましい >>575 厚かましかったですか。。 ごめんなさい。許してください。本当にごめんなさい。 コードの記述がおかしいってビルドエラーなら初心者でも修正できるでしょう。 別のフォームで試すべきでしょう。 わかりました。 次からはスリークォーターで投げます。 VBAの内部計算につかう型は結構複雑な変換をする 33.6@ * 整数変数の結果は、Currency型だぜ 多くの関数や演算子で、より精度の高い型を使おうとするんだが、べき乗はDoubleしか返さん仕様っぽいな 自分でCurrencyかDecimalでべき乗する関数作れば解決 ブラウザ変えたらスレ誤爆は減ったけど、レスしたい相手のレス番とレスアンカーとで 後者のほうが遙かに目立つ設定になっているのでそこで自分に誤爆するようになった。 https://i.imgur.com/c21PXN3.jpg 家族等などにも紹介してプラス\4000をGET tk..tk [あぼーん用] フォームが出るタイプで作ったんだが、 環境によってフォームの後ろに黒画面が出たり出なかったりするの何故なんだぜ? 黒画面が出たり出なかったりしたことはないからわからんな ListboxでCtrl+C押すとCから始まる要素に選択が移るの無効化する方法はありますか? というかCtrl+任意のアルファベットでそれから始まる要素を順番で選択していくよくわからない仕様 VSCodeの拡張の「C# Dev Kit」って、これってどう言う作業をしたらお金がかかるの・・・・? 32bit OSだと2GB超えるファイルは読み込めないのか 2023年にc#スレで32ビットなんて話題が出るとは 必要ならしゃーないんじゃね?クライアントがやれ言うなら .net8で System.Runtime.Serialization.FormatterServices が非推奨になったけどGetUninitializedObjectの代替ってなにかある? AnyCPUでビルドして、実行時に32bit / 64bitを自動的に選択するって今でも意味あるの? 業務系だとC言語で書かれたデバイス管理用DLLが32ビット版しか用意されてなくて 呼び出すC#側も32ビットにしないといけないとかあったなー むしろ理由が無いのであれば32bitは除外すべきだね >>603 の言う通り32bitは連鎖してくから下手に含めると32bitテスト環境も必要になってくる AnyCPUが本当にAnyCPUなのを理解できない雑魚がいる Oracle使うときとかAnyCPUだとうまくいかなかったりした記憶が Windowsが64ビットだとAnyCPU指定で64ビットのCLRが使われる そうすると外部の32ビットDLL呼び出しが失敗する 32ビットDLL呼び出すためにラッパー書けばいいんだよねと思ってた時期がありました >>608 64-32 bridge を自作すれば良い 広い意味でラッパー そういうのって段々虚無を感じてくるんだよな 何でこんなことしてるんだろうって 別プロセスじゃないとならんから32bit DLLをラップする64bitライブラリを作るといった程度じゃ済まんのは確か。 ところで>>605 の本当にAnyCPUってのは具体的に何を指してるんだろう? そもそもターゲットプラットフォーム x86・x64の意味が分からん .NETってJavaと同様に中間コードを吐いて、実行時にネイティブコードにコンパイルされるんじゃなかった? x64ビルドすると中間コードではなくネイティブコードになるのか?(そんなことなさそうだけど) x86ネイティブとx64ネイティブがあるんだから それぞれ別ですわ 32bit向けのしか提供されてないネイティブDLLを使いたいけど64bitOSで実行したら64bitプロセスにしかならないから32bitOSで実行しないといけない、とかあり得ないでしょ Windows XP x64が64bitプロセスで32bit DLLをロードできてたら.NETでのx86/x64の区別もなかったかもね >>616 64ビットOSで32ビットプロセスとして実行したい場合は「32ビット優先」というチェックボックスがVisual Studioにはある x86・x64・AnyCPUを選ばせる意味が分からん AnyCPUはx86、x64だけ対応してるわけではない >>617 それはネイティブライブラリを使うプロジェクトのためのもの。 >>618 armとかもあるよって話? ごめん、>>605 の発言意図をもうちょい詳しく 具体的にどの発言に対してのレス? 選ばせる意味が分からないと言う前に調べれば良い AnyCPUは本当にAnyCPU向け intel系に特化してるわけではない AnyCPU指定したら実行環境で既定の動作で解釈して実行してるだけで 自分が思ったように動かないと言うのはお門違い 環境を考慮して希望するような動作をするよう作らない人間が悪い x86用やx64用やARM用などにしたいなら自分でそのように作れば良いだけ 蛇足だが WinCEの頃(2006年前後)に.net compack用にビルドしたformアプリのバイナリが 自分の触ってる範囲内(dllimportしてるのは除く)ではそのままwindowsでも動いていた AnyCPUは本来はどれにも特化してない AnyCPUは本当にAnyCPU それを特化したいなら個別でx64用などを作れと言うこと AnyCPUなのにバイナリが同じで各種の特化した動作もさせたいなら自分で工夫しろと言うこと >>622 で、結局>>605 はどの発言に対するレスだったの?>>601 ? AnyCPUはコーディングした側がどこの環境でも行けますよと自分が宣言してる それなのに内部で不用意に環境依存のコードを書いて動かないと言う 普通に馬鹿じゃないかそれ どれに対するレスなのかって聞いてるだけなんだが・・・ >>624 ひょっとして誰向けのレスとかじゃなくて一般論としてそういうプログラマがいる!けしからん!って話だったり? ん?自分のこと? 倉庫番君じゃないよ ただ、>>605 が何に憤ってたのか気になってるだけ 話の流れから読めないし え?気にならない? 脈絡なく喧嘩腰で話に入ってきたら UnsafeAccessorが思ったより出来る事少なくて萎えてるんだけど 自前コンパイラとか作らずVSでもアクセシビリティ全開にするにはRoslyn改変すればええんかね dnSpyなんかでTopLevelBinderFlags扱う所をパッチ当ててIgnoreAccessCheckTo属性つければ行けるか? テストとかそんな辺り向けなんだろうから徐々にライブラリ系が充実してくると思うよ それ以外の用途なら知りません こちらで聞いて良いのか分かりませんがお貸しください winformsはそのうちサポート終了でマルチプラットフォームに切り替わると思うんですが、サーバーをローカルで使用でする場合、現状はSQLiteぐらいしか選択肢ないですか? SQLSeverExpressが使えたらありがたいんですが…Androidでは使えませんもんね…? winformsはGDIがサポート切れたらサポート終了 つまりwindowsである限り絶対サポートが終わらん AndroidでC#でローカルDB使いたい時は?という相談では? ・winformはそのうちサポート終了 ・サーバーをローカルで使用 ・Androidでは(winformうんたらは何だったのか?) 確実にアホ ローカルサーバからAWSのAurora DBへ接続でいいだろ 質問者です .net frameworkがサポート終了するということで、マイクロソフトとしてはマルチプラットフォームを中心に進めるのかと思っております 現状、winforms+SQLSeverExpressで作ったのがあるんですが、今のうちにマルチプラットフォームで作り直そうかと思ってます となると、ローカルサーバーはSQLiteしかない?というのが質問の意図です 顧客情報をクラウドに上げたくないので、なんとかローカルでと思ってるんですが、大人しくSQLiteが無難でしょうか プログラマーでもない馬鹿な素人なので、どうしようかなーと迷っております >>644 .NET frameworkが終わるかどうかということと、各種RDBMSのC#向け?のまともなAPIの提供がなくなるのかというのは話が別で、 今でもSQLServer+Javaとかで組めるし、逆に.NET FrameworkだろうがnodeだろうがPythonだろうが SQLiteやmysql、 PostgreSQLなどのRDBMSは自由に使える .NET Frameworkが終了して間違いなく無くなるところはWindows限定の機能だけで、普通のビジネスアプリならUIUXまわりだけなんじゃないかな。要は、 SQLiteしかないなんてことはないよってこと。 >>644 馬鹿な素人が馬鹿な考えで勝手に決め付けて質問しないでくれる? >>645 それはAndroidでもローカルにSQL Severを置いて接続できるということですか? マイクロソフトとしてはマルチプラットフォームを中心に進めるのにあたってXamarinからNET MAUIに移行したけどうまくいってるようには見えないね C#そのものがMonoがベースのものがあったとはいえ、マルチプラットフォームに基本むいてないと思うんだ マルチプラットフォームが大事ならJAVA系統やElectronを最初から使った方がいいと思う ローカルってのがこの場合何を意味してるのかイマイチわからない クラウドじゃなければいいってだけなのかアプリを起動する端末で動かしたいって意味なのか C#は.NETの主要言語だから関係ないってことはないと思うけど? マルチプラットフォームで使えるローカルデータベースには何がありますかと言う質問に見えるけど それC#の問題か? > 今のうちにマルチプラットフォームで作り直そうかと思ってます この部分が不明瞭だな 何を使えばとかじゃなくてさお前が何でどうするつもりなのか書いてない 今まで使ってなかったandroid使うのは意味あるのか? セキュリティ上のリスクが広がるだけだぞ? 普通にwebアプリで作りなおせばいいじゃないか プログラマじゃないならそれ以外選択肢を広げる必要はない 金払って専門家に聞いて作ってもらえ 間違っても自分で作るな自殺行為だ 時間の無駄だしメンテナンス自分らで出来るのかよと こんなところで意味不明な質問すんなと思うけど >>644 .Net Frameworkは少なくとも2031年まではサポートされるからまだ終了しない そもそもMicrosoftがマルチプラットフォーム中心に進める?ってのもおそらくはるか先の話のような気がする 顧客情報はAndroid上で素人が作ったアプリとデータベースで扱うよりもクラウドに上げたほうが安全ではないか インターネットアクセスしないってならAndroidである理由もないし… 今日の.net recapでも.net frameworkは4.6以上なら今後も大丈夫って言ってた 新規作成なら.net 8を勧めてたけど というかプログラマーでない素人が構成の判断できるのというか判断しようとする状況が謎 >>644 思っております 思ってます 意図です 思ってるんですが 迷っております >>656 新規でマルチプラットフォームを勧めるとなると、やはりwinformsは将来性に欠けるということなんでしょうね… 素人とは言っても元は組み込みやwinで業務開発や趣味でゲーム作ったり、全くの素人ではないんですけど、今の開発ノウハウが未知の世界だったので質問させて貰いました >>654 マルチプラットフォームを作るならwinもAndroidも意識して作れたらなと思うのは欲張り過ぎなんでしょうか? マルチプラットフォームでやるとなると、AzureあたりでクラウドにDB置いてやれよって話になってきますかね… とりあえず、真面目にレスしてくださった方々ありがとうございました やはりプログラマーは変な人多い笑 >>658 最初から最後までお前がおかしい 死ねよ >>659 ん?何がどうおかしいか教えてくれませんか? .net 8でもwinformsはあるんだが .netの概念を理解してないのかな SQLiteはサーバーじゃないんだよ Androidアプリは自由にサーバープロセスを起動できないからPostgresのようなDBサーバーは基本的に使えない だからローカルDB用途ではサーバー型ではなく埋め込み型DBのSQLiteが標準的に使われる Androidをターゲットに含めていてデバイスローカルなRDBを使いたいということならSQLite一択だと思っていい(実際には他にも選択肢はあるが有償製品か超マイナー製品になる) AndroidアプリならWindows上のエミュレータで動かすことが可能 でもAndroidがメインターゲットじゃないなら大人しくWindows専用で作ったほうが初期開発時でも保守でも低コスト Webアプリでなければマルチプラットフォーム対応のGUIライブラリを使ったところでAndroid用アプリ開発のノウハウは必須だから 昔のマルチプラットフォームは、Cordova が有名だったけど、 今は、React Native, Flutter, Electron あたりか ウェブ開発では、Ruby on Rails 一択。 Rails は、PostgreSQL, MySQL, SQLite の3大データベースに対応している。 ただし本番用では、PostgreSQL一択。 SQLiteは開発用・個人用など AWS Aurora は、PostgreSQL, MySQL に対応している。 SQLiteはブラウザなど、多くのアプリに含まれて使われている YouTube で有名な雑食系エンジニア・KENTA が言ってるけど、 初心者がプロになるキャリアパスは、Rails → Go のみ 基本、この2つのみが渡り歩くプロ。 それ以外は会社員・サラリーマン 米国年収では、Rails, AWS Solution Architect は、2千万円近い。 ウェブ開発ではLinux, Docker も必須だから、 Windows 10 のWSL2 で、Linux を起動できるようにした 他に、Google Apps Script(GAS) もある。 JavsScript をベースにした言語 Gmailやカレンダー、Googleスプレッドシート、Googleドライブ、 YouTube、Googleアナリティクス、BigQuery など、 100以上のGoogleサービスと連携 Google Apps Script クローリング&スクレイピングのツボとコツがゼッタイにわかる本、 五十嵐貴之、他2名、2023/6 気になるのはSQLiteを使ったこと無いくせに過小評価していると思われることだな SQLiteはストアドプロシージャ使えないくらいで検索やデータ更新では他のRDBと遜色ないし 速度的には最速に近いレベルだ(ローカルのみだから余分な処理が要らない) アンドロイド+スタンドアロンで使うレベルなら寧ろ最強だよ >>647 他の人も書かれてるけど、androidでは無理。 でも、androidにローカルDBを置く設計が本当に正しいのかは考えた方がいいのではないのかな。何を置きたいのかはわからないけれど。 聞きかじった用語をつなげてそれっぽいこと言ってる風を装ってるだけにしか見えんのよな>>644 とか 文章力の無さも相まって何も伝わってこない この人のローカルって、 アプリケーションローカルじゃなく ローカルエリアネットワークの方じゃない? 社内LANにDBサーバーまではセーフ 社外のクラウドはアウトとか 各プラットフォームでバラバラに顧客情報を持ってたら 管理面もセキュリティ面も現実的じゃないし SQL Server ExpressがAndroidで動かないから使えないというようなことを書いてたので違うんじゃね? 社内LAN内のDBサーバーをAndroid上で稼働させたい人いないでしょ 馬鹿はAndroidで作れば未来永劫使えるとでも思ってるのかね もう本人いないのに他人だけがワチャワチャやってるいつもの光景 Razor Pageに関して質問があります。 Html.DropDownListで、指定したアイテムリストのうちの特定の値が選択された状態でHTMLを出力できないでしょうか Html.DropDownListForだったらできるが、Html.DropDownListでは不可だということもありますか。 やりたいことは、OnGetハンドラ内で指定した特定の値をHtml.DropDownListで選択状態にすることです。 Html.DropDownListで、特定の値が選択された状態にしようといろいろやってきたのですが、お手上げです。 例えば、次の設定(value = defaultValue)は有効ではありませんでした。 Html.DropDownList(name, selectList, new {@class = "form-control", id = id_dropdownlist, @value = defaultValue}) また、OnGetハンドラ内でこのドロップダウンリストがバインドするページのプロパティに予め特定の値を書き込んだうえで、 「return Page();」してみたのですが、<select>タグの「value」にはその特定値が設定されるものの、アイテムが選択状態になりません。 しかし、ポスト時には、同じコードで、きちんと前の状態が選択状態になっているのです。 >>675 Selectedを指定したSelectListかIEnumerable<SelectListItem>をbindしてる? >>676 レスありがとうございます Html.DropDownListForだと、Selectedを指定したSelectListを使わずに指定した値の項目を選択状態にできていたと思うので、 Html.DropDownListでも同じことができるのかと思っていました Selectedを指定したSelectListを、Html.DropDownListのアイテムソースに指定して再挑戦してみます >>675 これについて、OnGet時にHtml.DropDownListの値を設定してもその値が選択状態になることはなく、同じ設定でもポストした後にリターンされて表示されるページでは特に設定せずに選択状態になるのでしょうか 不思議でなりません >>676 >>676 です。うまくできました。 ありがとうございます。 システム構築にあたって、c#よりjavaのほうが技術者が多いという理由でjava採用されそうなんだけどIDEの生産性は圧倒的にc#という理由では弱いかな 社内にc#推しが少なくて負けそう C#を触り始めてから20年以上経つけどjavaと比べるとC#は常に日陰の立場だった 勢力は常に10分の1ぐらい 最近はUnityのおかげで注目度が上がっているけどUnity無ければどうなっていたのかと そのUnityで使われてたのもMonoだし Javaの技術者が多いならJavaでいいじゃん でなきゃできないやつには学習コストもかかるし全体の生産力が落ちればできるやつの負担も大きくなる なぜわざわざ仕事を増やすんだ >>682 Windowsアプリの最大勢力だぞ? 作ってるものが違ったってだけだろ >>685 今はね 昔はなぜかVBの方が勢力があった アホみたいだろ? C#は知名度がないわけじゃないけどブレークはしていなかった C#は知名度がないわけじゃなかったけど 積極的に選ばれることはなかった C#は残念ながらホビーユース的な側面が強く 業務向けで取り入れられるのはまずjavaついでC++、ライトな開発でVBが採用されていた ゲーム向けでも選ばれることはない状況 田舎だと求人はない なので何目的でC#使ってるのと言われることが多かった そう聞いてくるのは十分理解できるしそれがまともだとも思えた .NET frameworkが嫌われてたんだよ VBから使えるCOMと全く違う思想だし そういった過去の状況からみると今ははるかに恵まれた状態だと思う 単純にVB6の方が早かった VBはネイティブだからね FrameworkインストールするだけでWindowsの起動時間が倍ぐらい長くなるからな comてなんなん?わけわからんわ メリットってなんかあるん? ゲーム開発ではC#って使われてるんじゃないの? Unityの主要言語がC#じゃなかったっけ? ゲームエンジンによるからその質問というか話題は無意味だよ、忍者君 >>686 そりゃVBの方が歴史があるから当たり前のことやん ゲームとかオンラインゲーでも無い限り GCみたいなプチフリ起こす様な言語は使わない # >>692 # PowerShellで実行 $Voice = New-Object -ComObject SAPI.SpVoice; ` $Voice.Rate = 5.9; ` $Dreamcast = @" C#, C♯, C#相談室 Part97|プログラム技術@2ch掲示板 ps://mevius.5ch.net/test/read.cgi/tech/1671585518/692 「comてなんなん?わけわからんわ メリットってなんかあるん?」 "@; ` $Voice.Speak($Dreamcast); COM コモンオブジェクトモデル 再利用目的のソフトウェア部品全般に関わる技術 ぶっちゃけWindows自体がCOMの集合体 >>696 メモリを十分積んでればフリーズなんか起こらないしメモリが足りなければOSがフリーズするが? >>701 あ? ガベコレに処理が奪われて一瞬動きが固まるってのがプチフリだぞ STWなんて起こすようなチューンする方がタコってゆうのが界隈の常識だが >>702 メモリが足りてればガベコレは起きないということを知らんのかw メモリが足りなくなれば今度はOSがスワップファイル使い出すから止まるんだぞw UnsafeAccessorでSystem.Collections.ObjectModel.Collection<T>のitemsフィールド取れないの自分だけかね? >>705 メモリが足りないなら何人で使おうとスワップ起こるのすら知らんのかよw メモリー足りるかどうかなんてユーザー次第だからなぁ 作成側がメモリー足りてるなら云々なんて意味の無い話 停止しちゃいけない環境でメモリ積まないとかどんなアホを想定して言ってるんだかw >>704 >メモリが足りてればガベコレは起きないということを知らんのかw ガベコレしないといずれメモリ足りなくなるやんw 何言ってんのww メモリ足りなくなるほど長時間起動してるアプリが数秒止まって何の問題があるんだ リアルタイムOSじゃあるまいし 一体何十年前の話をしてるんだ ゲーームーーなんか開放しないといくらでもくらい尽くすんじゃね? >>713 ,714 マジで言ってるんだとしたら控え目に言って脳味噌お花畑ですな 流石に最近の流れ見てらんないから初心者用のスレsgeといたよ そもそもここはふらっとの隔離スレ アホがここでレスバトルしていようが平常運転。フレームワークのGCのフリーズやらの話がOSのスワップと混ざろうが放置でいい アホがふらっとで暴れていたら知らん 横からだけどGCがフリーズするほどメモリが足りないならOSのスワップも頻発するからメモリ積む以外に対処法無くね? C#12のInlineArrayってSystem.Text.Json非対応? >>721 メモリ多く積んだ方がフリーズするぞ メモリ多ければGCされる前の待機容量が多い その多いのをGCするからフリーズする 逆に少量GCするならフリーズしない じゃあ小まめにGCする様にすればいいかといえばそれはそれで小刻みに一瞬止まる事態が頻発する 要はバランスって事だ でもってGCで気になるならもうC++かRustでも大人しく書けという話 クリティカルなコードはオブジェクト生成しないように書けばGCが起こらないように思うんだけど C#はそういう予測って立たないのかな?そんなわけないと思うけど GCはJavaのほうが発展していてうらやましいね GCの停止時間を1ミリ秒以内に抑える(その代わりGC回数は多くなる?)GCなど シナリオに合わせてGCを選べるようになっている GC停止1ミリ秒以内ならゲームで使ってもプチフリーズやフレームドロップは発生しないんじゃないかな? >>726 C#でも設定すりゃ良いじゃん まさか知らんのか? C#では業務システムしか作ってないから数秒程度のGC停止時間なら気にならん >>731 数秒も止まったらアプリがハングしてるとOSが認識しちゃうのでシビアじゃない業務アプリでも気にしといたほうがいいよ Runtime自体が止まっているのなら異常だけどGCが止まるのは異常とは言えないしOSでは認識できないだろ >>734 少しググくらいはしようよ デスクトップやモバイルアプリ作るなら誰もが押さえておくべき基本的な知識だよ そもそもGC中ということをどうやって確認するんだ 応答がなくなる理由なんて簡単には分からないだろ ソースジェネレーター版のJsonSerializerってユニコードエスケープのオプション無し? >>744 時間のかかるループやファイルアクセスでUIスレッドをブロックするのとガベコレは関係ないぞ 画面がフリーズしてるように見えるというのは同じだけれども >>745 プチフリはするんだろうから関係あるだろ むしろUIでバカな処理満載するからプチフリする方が多いんだよ さすがにフリーズの原因がガベコレかどうかは特定できてる前提の話だろ ブロッキングの場合は毎回同じ処理で起きるしコード見れば比較的簡単に分かるが ガベコレの場合はメモダン取ったりプロファイリングしないと基本的に分からない 最初からGCのプチフリ(STW)に限定した話してるのに何で余計な話始めるかな 似て非なる現象だから一緒に扱おうとしても話が発散するだけで何一つ良いことないのに GCのプチフリなんて検出自体無理だからもう意味が無い話題だけどね まずはプチフリがGCによるものか確認しないと話にならないから誰でも再現できて検証可能な環境を公開すべきかな C#でRazor Pageを使った開発をやってます vue.jsを今後取り入れてユーザインターフェイスの充実もはかろうと考え勉強中です ところで、GPT4はプログラミング業界をどう変えていくでしょうか たしかにChatGPT3はわからないことを質問でき問題の解決に貢献してくれるので自分にも役に立っています 自分としては、GPTへの質問力、こうしたいという小さなゴールを描けることは経験が大切だと思います。プログラミングでできることはこんなものかというのを知っているから、その回答の妥当性もわかるし、自分のプログラミングに取り込むこともできると思います。 このように、開発速度が上がり、入門もしやすくなったとは思うので、プログラムを提供する業界での競争が変化すると思います しかし、その場合はどれも似たりよったりな機能を持つ岩のようなアプリケーションしかできないように思います。ニッチなニーズに応えるにはこれまで通りに細々と開発することが求められると思います。 AIは我々から仕事を奪うでしょうか、それともラグをさせてくれるでしょうか ラグはしてくれないが2次元にハグしてもらえるかもしれない。 というかぜひそうあって欲しい roll me over in the clover 歌ってやるから泣くなよ クッキーやキャッシュ等プロファイルが一切ディスクに吐き出される事なく全てInMemoryで完結するWebBrowserライブラリってある? 標準のWebBrowserはIEベースでその辺コントロールできないし WebView2もシークレットモードにすればクッキーは希望の動作になるようだけどプロファイルディレクトリは作られてしまうようだし CefSharpならCefSettingsBase.CachePathをnullにすれば何のファイルも吐き出されなくなるのかな? MP4ファイルの長さをhh:mm:ss形式で取得したい 可能ならMP3も。 サンプリングレートもファイル長も分かるんだからあとはやるだけだよ すんまそん、Codeer.Friendly で引数 out byte[] を受け取るにはどうすればええんかの? 非同期に対応してるAOPのロガーってあるかな? FodyのMethodBoundaryAspect使ってるんだけどこれは非同期に対応してなくて おれも機能を後付出来る仕組みくらいにしか理解しとらんよ なんならコードを汚さずにログ出力できる仕組みぐらいにしか理解してない MethodBoundaryAspectでググろうとするとasyncがサジェストされるぐらいみんな興味のある話題なのね 多分20年以上前にアスペクト指向を知ったけど あんまり使われてはいないよね 当時はこれから来る技術として雑誌などに乗ってたけど使う局面が限られてる アスペクト指向って聞いたことあるだけで知らないや… ターゲットフレームワークに .NET Framework 4.5.x を選択出来ない https://www.hos.co.jp/blog/20200427/ だましだまし使っていたPCぶっ壊れて新しい環境にVisual Studio入れようとしたら落とし穴が >結論から申し上げますと、VisualStudio 2019 よりも先に VisualStudio 2017 をインストールしておく必要があります。 2017 Communityはもうないじゃねーかwまあ趣味でやってるだけだからいいけど あわてて4.6.2以降のSDK全部ダウンロードしたわ もうサポート終わってるんだから入れれなくて当たり前だが 態々4.5.x選択する意味あるん? webインストーラーなら2017Communityあったからインストールできたぞ 全部保存しときたいならコマンドうてば落とせる 当たり前って言うとなんか変な気がしてきた もうサポート終わってるんだから入れられなくてもおかしくはない、の方がいいか 開発対象マシンがが4.5xしか入ってないことはあるやろ サポート切れたOS後生大事に使ってるパターンか ならまぁしょうがない気もするが、OSはともかくフレームワークくらいバージョンアップしろよって思うけど 客先のマシンでそのまま動くことを要求される案件も往々にしてあるわけで .NET 8 とかで、配置モードを自己完結にするんじゃだめなんやろうか? 今、古い環境手元にないから分らんけど >>789 は>>782 の件とは別に一般的な話として >>790 .NET8はWindows7で動かないんだよな Windows7はそろそろ完全に無視したいところだけど、XPもかなりしつこかったからなぁ XPと言い7と言い、MSが次のOSに変なもん出すからゾンビになるんだよな 11が糞すぎてうっかり10が良く見えてしまうが 本当は7が良いのだ Win11になっても中途半端な設定とコントロールパネルが統合されていないのが問題 いつまでスタートボタンを終了時にしか使わないんですか? それでは12ではスタートボタンとタスクバーとデスクトップ無くしますね スタートメニュー階層何の意味もないからもうくデスクトップに全ピン留めでいいよ うんこー >>785 ありがとう、たしかに2017Communityのインストーラーダウンロードしてコマンドで「フルで」落とせた ただ1、2時間で終わりそうもなかったのでPC放置して帰ってきたら終わってたというありさまなので何時間かかったかすらわからないw そしてサイズ把握すら面倒な軽く40ギガ越えw 必要のない言語やパッケージなど省けばいいんだろうけど、layoutスイッチの段階で本来やることだろうな そして時間かけてダウンロードできたものの、省く作業もめんどくさいので10分ほど作業したら嫌になって全部捨てたw まあ手元に2017Expressあったので、そっち使うことにしたよ。馬鹿な俺にはそれで十分以上w >>784 ないなwただの馬鹿なこだわりw ただ信憑性のない俺のうろ覚えでは4.5がSSL通信ができる最低、4.6.2がファイルパスの長さ制限が緩和される最低、そして4.0がほぼ廃棄物扱いのXPで動く最大 個人的なこだわりではファイルパスの長さ緩和の4.6.2が必須だな 仕事でやってる人はこのあたりガチで把握して仕様にするんだろうけど 2017expressかぁ pytorchをbuildしようとしたら微妙な違いでコンパイルエラーになって困った事が そんな保守コストをしょい込むのバカらしいから、うちはXPだの7だのはサポート外ですってしてるなぁ 漏れはいまだに VS2013 使ってるな。ちょうどいいんだよ。 Windowsフォームでユーザーコントロールを使ってページ遷移させようとしています 使おうとしているページ全て、ボタンの位置やメソッド等構成が似ているのですが、ストラテジパターンを使うことはできますか? >>809 ユーザーコントロールからParentやFindForm等を経由して インターフェースで定義されたメソッドを呼び出せばいい WinForms+.NET8.0でアプリを作ってるのですが、フリーの難読化ツールってありますか? なんだよぉ、標準でhtmlのパース出来ないのかよぉ frameworkから.NET8に切り替え中なんですが、Chartコントロールは使えないんでしょうか? Nugetに.NET5まで対応のはあるんですが…諦めて自作するしかないでしょうか? .NET5対応なら.NET8でも動くんじゃないかな .NET6までのライブラリ結構使ってて過去の.NETランタイムはその都度アンスコしてるけど普通に動いてるし あ、そうなんですね やってみます!ありがとうございます! C# プログラマって、リリコミットして、キモいおじさん(上司)に思ってもないこと言って、お金(給料)を騙し取ってる。 会社では働きもしないで pc いじってるだけ。 C# プログラマは頂き女子とやってることが本質的には同じなので、渡辺マイこと頂き女子リリちゃんの共同正犯とし裁き、懲役10年ぐらい食らわすべき。 スレどころか板違いだな コピペなのかただの嵐なのかマジモノなのかはしらんが コピペでありただの嵐であり実はマジモン、かもしれない あれ? SQLite使ってると単一ファイルで発行すると実行時に例外吐く? Unhandled exception. System.ArgumentNullException: Value cannot be null. (Parameter 'path1') at System.ArgumentNullException.Throw(String paramName) at System.IO.Path.Combine(String path1, String path2) at System.Data.SQLite.SQLiteConnection..ctor(String connectionString, Boolean parseViaFramework) at System.Data.SQLite.SQLiteConnection..ctor(String connectionString) at Program.<Main>$(String[] args) in (プロジェクトファイルのパス)\ConsoleSQLite\Program.cs:line 12 単一ファイルにしなければいいんだけど、大量にdllファイル並ぶのがなぁ… 最近は単一ファイル化にfodyとか要らんのね ちなみにsqliteはfodyでも苦労した覚えがある webview21について質問です。 これはクロニウムベースのブラウザコントロールですが、 これを使ってwebページを開いたら降りてくるクッキーはWindowsに入ってるedgeと共有されるのでしょうか? edgeとアプリで作る手製ブラウザとは設定やクッキーや閲覧履歴などが干渉し合わないようにしたいです >>832 されないよ 使ってみれば判るけどプロファイルのフォルダはそのアプリで指定した場所になる 逆にフォルダのパスを共通にすればごっちゃにすることもできる Twitterで情報収集しようとしたらこの言語検索性悪過ぎて草生えた C#で検索しても#が認識されなくてただのCとして検索されるし、プログラミング関連のワードで絞ってもC言語とかが邪魔してくる .Netで検索すると今度は無関係のURLリンクが引っかかる >>834 そもそもプログラミング言語に関する情報を集めるのにXはあんまり向かんだろう まだググる方がマシ Xは時事ネタを検索するには便利だけど専門的なことは期待できない google検索も企業ファーストに舵を切ってから役に立たないし、それ以前に有用なサイトをブクマ出来てない人は苦労しそう その情報の海の中から有用な情報を精査・発見できないならネットで済まそうとせずに本を買え これ、インターネットが普及した頃からずっとそうだぞ 昔のgoogle検索はかゆいところに手が届いてたのにな 本は長く使えるか判断できない奴が買うとすぐゴミになるから俺は安易に薦めない 十分普及した時点でgoogleの慈善事業ごっこはとっくに終了してんだよ ネットはある程度知識がある人が自分の知識の足りない部分を補う分には非常に有用だけどゼロから学ぶのには向いてない >>842 いまのGoggoleは検索しても通販サイトしかヒットしないポンンコになり下がった だれもきずいていない googleだとアフィブログしか出てこないのにbingだと普通に目当ての情報が見つかるからなぁもう Googleはキャッシュ無くしやがったのでbing使ってる read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる