◎正当な理由による書き込みの削除について: 生島英之 とみられる方へ:ふらっと C#,C♯,C#(初心者用) Part154 ->画像>4枚
動画、画像抽出 ||
この掲示板へ
類似スレ
掲示板一覧 人気スレ 動画人気順
このスレへの固定リンク: http://5chb.net/r/tech/1644416019/ ヒント: 5chスレのurlに http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980 を踏んだ人は新スレを建てて下さい。
>>980 が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part153
http://2chb.net/r/tech/1639403601/ ■関連スレ
C#, C♯, C#相談室 Part96
http://2chb.net/r/tech/1639965805/ ■コードを貼る場合は↓を使いましょう。
https://ideone.com/ https://dotnetfiddle.net/ ■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries/ https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/ https://docs.microsoft.com/en-us/dotnet/standard/class-libraries/ https://referencesource.microsoft.com/ https://source.dot.net/ ・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html ・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
多次元配列とジャグ配列ってメモリ使用量は同じですか? (例えばint[3,3]とint[3][3])
>>4 意地悪な言い方をすれば、配列のメモリ使用量 = 要素数だと考えると
ジャグ配列の方が要素数が少ないのでメモリ使用量も小さいことになる。
c#の実装がどうなってるのかは知らないけど普通に考えて 多次元より配列の配列の方がメモリ効率悪くなるからメモリ使用量も多いはず
シャグ配列は配列の配列のためのヒープ+配列それぞれのヒープ、つまりint[3][3]だと4つのオブジェクトからなる メモリ的にも連続してない上に4つのオブジェクトヘッダ分(32bitだと8byte?64bitだと16byte?)余計に要する int[3,3]の多次元配列は実体はint[9]の1オブジェクトとしてレイアウトされてそうだけど実際どうなってるかはunsafeで確かめてみないと分からない Console.WriteLine(Unsafe.AsPointer(ref array[0,0]));とかでアドレスを調べてみると良い
小細工せずにシンプルに富豪的プログラミングすりゃええやん
ソース忘れたけどジャグ配列の方がアクセス速いらしい
すまん嘘ついたわ
シーケンシャルはジャグのが速いけど、ランダムだと逆らしい
普通に考えると
>>7 の言うようにジャグは配列のヘッダ分余分に使うと思うけど、プリミティブ型の配列は最適化で何か消し飛びそうな気もするから、正直あんま変わらなさそうな気がする
全部詰め込むならジャグ配列のほうが容量は食う 多次元配列はint[M x N]で確保されて計算経由でアクセス 速度は環境や使い方によって違うので自分の使い方で計測したほうがいい
正直いって、メモリや速度より組みやすさで選びたいよね。 性能を求めるなら、Rustとかの方が良いんでしょ?
後々の保守考えると、実際のとこ見やすさと組みやすさが最重要だと思う
VBAからのC ♯に挑戦中です。 visual studio使ってるんですが、予測変換やらその他諸々便利な事が多く感動しております。。 質問なんですが、VBAでやる場合は印刷=Excel sheetでみたいな固定概念なんですがこっちの場合って印刷出力は物によるとは思うんですが、どんな感じですか?調べると、print document??なるもので頭でイメージして印刷用のベースを自作して作るのですか? 印刷内容は至ってシンプルな文字列やら数値です。
そもそもプリンタから紙を出すということ自体発想がなかったわ ライブラリ使うにしても 入力の文字列やら数値から印刷用のレイアウトを起こさなきゃいけないし、 プリンタに印刷データを投げなきゃいけない 簡単に印刷と言うけど結構やることは多い
プリンタは画像描画みたいなもの 縦横ピクセルサイズ決めて、そこのxy座標どこにどのくらいの大きさで文字を描く〜ってイメージ 印刷プレビューも使えるから適当にググって試せばすぐわかるよ
なるほど、やはりしこしこ描いてくんですね。やる事多そうですね。 勉強も兼ねてやってみます。 ありがとうございます!
会社で買えるならアクレポが楽だけどな PDFでいいなら他の手もあるけど
Crystal Reports for VSは未だに.Net Frameworkのみの対応なんだっけ?
そんなん使ってる環境で.net core対応かどうかとか気にするの?
現時点で .NET core に対応する必要あるの?
「現時点でES6に対応する必要あるの?」 って言ってたJavaScripterの末路を知らんのか
未だに.NET Framework2.0が動き続けている俺社には耳が痛い あと6年もサポート残っているんだからいい加減移行考えろよと
XPでも使ってるのか 現行のOSで2.0はかえって難しいだろ
今の.netと数年前の.net coreは別物になってる それに引き換えframeworkは変化が少ない。c++のmfcみたいに細々と生きて切り捨てられることもないだろ どっちが保守楽かって考えたら・・・
規模がでかい社内システムだと、中々移行に踏み切るのも難しい場合はあるな 部分部分で少しづつ置き換えられるならいいんだが、色々連動してたりすると下手に手が出せん
.NET6への移行(移植)はライブラリの対応待ちだな
いやWindows標準搭載待ちだろ .NET6ですら標準化予定なしって聞いてからはC#自体書く気なくなったわ
COMコンポーネントが作れなくなってるので移行しづらい
>>35 まだ作る事ってある?
使うのは偶に必要になるけど
WinFormsのTextBoxでKeyPressイベントが発生した時、キャレットの位置が行頭なのかどうかを判定したいのですが、 if(TextBox1.Text[TextBox1.SelectionStart].ToString() == Environment.NewLine) では判定出来ないようです。 判定する方法を教えてください。
[TextBox1.SelectionStart]だと行頭だから [TextBox1.SelectionStart-1]になるんじゃない?
一文字しかとってないからNewlineじゃなくて"\n"かな
下記のOBJListの並びを「I,N,P,P」から「P,P,I,N」のようにPが先頭に来るよう入れ替えしたく。 OBJListの要素をforeachで回してPを見つけたら先頭に移動する等試したのですが、 処理中にOBJListの順番を変えるなと怒られてしまいました。どのようにすれば実現できるでしょうか? よろしくお願いします。 class OBJ { public string Name { get; set; } public int No { get; set; } } private void narabekae() { List<OBJ> OBJList = new List<OBJ>(); OBJList.Add(new OBJ { Name = "I", No = 1 }); OBJList.Add(new OBJ { Name = "N", No = 1 }); OBJList.Add(new OBJ { Name = "P", No = 1 }); OBJList.Add(new OBJ { Name = "P", No = 2 }); }
OBJListを使いまわさずに新規のListを作る Enumerable.OrderByとか
>>43 そもそもがなんで順番変えるな!って怒られるかわかる?
分かったら対応もわかるはず
>>46 foreach中に順番変えられたらforeachが成り立たないのだろうなとは思いました。
頂いたアドバイスからPを別のリストに移動してドッキングしても
邪道では無さそうなので、そうしようと考えています。
それだけのために一時バッファとしてもう一個リスト作るのはスマートじゃない Remove&先頭挿入をペアで行う場合は後方の順番は狂わないので原始的にforで回せばいい for (int i = 0, end = obj_list.Count; i < end; ++i) { var obj = obj_list[i]; if (obj.Name != "P") continue; obj_list.RemoveAt(i); obj_list.Insert(0, obj); }
>>48 そういえばint i = 1からでよかったな
>>48 RemoveAtもInsertもO(n)だから
そのやり方なら新規にリストを作るほういいんじゃない?
>>45 が自分もいいきがするけど何も考えずにやると移動したPのデータの順番がおかしくなりそうにも思えたから
自分はPの移動用のリストを用意してもとのリストを後ろから参照して最後にもとのリストに挿入がいいかなと思った
List.Sort が出てこないけどなんか欠点でもあるの?
>>50 要素数がめちゃくちゃ多い場合はそうだな
RemoveAtで発生する後方要素の前方詰めが今回は完全に不要だから一回分多く無駄な処理が挟まってるからな
.NET5以上ならCollectionsMarshal.AsSpanを利用して
obj_span.Slice(0, i).CopyTo(obj_span.Slice(1, i));
obj_span[0] = obj;
とかに変えればO(n)処理は1回だけで済むからどんなパターンでも新規List作成より早く済むと思うが
要素が少ないときは新しくリスト作る方がremove/insertよりも数倍速い ただ新しくリスト作るのはメモリを倍食うから、要素数が多くなったら(物理メモリよりも多くなったら)どうだか
つかそもそも、並べ替えたListそのものを保存する必要があるのかとか 初めから必要な順番で保存できないかとか考えたほうが良い気がする
そもそもでいえば並べ替えのAdd時点でPを前に入れたいってわかっていれば それなりの実装もあるんじゃねと思ったりしているから 質問の内容だけだとやりかたなんて色々あるよね
糞みたいな方法しか出てきてないけど普通に考えると 1) 元のリストからPを抜き出しつつ、Pだけ抜き出したリストを作る 2) Pだけのリストの後ろに元のリストをマージする あとはList<>で気の利いた方法がないか調べる
>>58 ここまでで一番糞なのは案件満たしてないあんたやんけ
それだと「I,N,P,P」から「P,P,I,N,P,P」になってまうでw
>>55 元のリストの中身(OBJクラスのインスタンス)をコピーせずに新しいリストで使いまわせば
メモリー消費の一時的な増加はあまり気にしなくて良い場合が多いんじゃないかな
めんどくせえやっちゃこれでいいだろ OBJList.Sort((a,b) => (a.Name != b.Name) ? (a.Name != "P") ? (b.Name != "P") ? 0 : 1 : -1 : 0);
>>61 これは初心者には呪文にしか見えないだろw
これでプルリク出されたらレビュイー殺してしまうかもしれん
そういやListのソートは不安定だからNoをインデックスに見立てれば安定ソート OBJList.Sort((a,b) => (a.Name != b.Name) ? (a.Name != "P") ? (b.Name != "P") ? (a.No - b.No) : 1 : -1 : (a.No - b.No)); LINQのOrderByは元から安定ソート OBJList = OBJList.OrderBy(a => a.Name != "P").ToList();
var weight = new Dictionary() { { "P", 1 }, { "I", 2 }, { "N", 3 } }; var result = OBJList.OrderBy( a => weight[ a.Name ] ).ToList(); の方が好み。エラーチェックは無視。
>>66 それ NIPP ⇒ PPIN になるんじゃね?
ワンループで P用参照リストと それ以外参照リスト作って 最後にP用を前にしてドッキング
datagridviewの垂直スクロールバーについて教えてください。 datagridviewを作成した後、 DataGridViewRow[] list = new DataGridViewRow[50]; (listの中身作成) dataGridView1.Rows.AddRange(list); のようにしてdataGridView1にデータを表示させようとすると縦スクロールバーが上手く表示されずフリーズ状態になってしまいます。 dataGridViewを作成した後に縦スクロールバーが出るまでdataGridView1.Rows.Addを繰り返して縦スクロールバーを出した後に 上記を実行した場合は問題なく表示されます。 縦スクロールバーを出すために無意味なデータをdataGridViewに表示させるといった不必要な処理を行いたくないのですが、 データを投入しなくても縦スクロールバーを出す方法、あるいは dataGridView1.Rows.AddRange(list); を実行してもフリーズしない方法はありますでしょうか?
ありがとうございます!
これでできました!
【C#】DataGridViewで編集不可やスクロールバーを常に表示する | NOARTS
https://noarts.net/archives/2703 >>67 あくまでやり方の一例。
問題があるなら自分で何とかしてくれ。
AsSpan使ったらどうなるか興味あったからベンチしてみたら 1000件くらいだと一番高速だけど結局O(n^2)なので1~2万件でList<T>.Sortとかと逆転した 1万件程度なら余程最適化したい場合を除いてどれを選んでも性能的には問題なさそう 1. List<T>.Sort 2. Enumerable<T>.OrderBy 3. AsSpan + For Loop 4. RemoveAt + Insert + For Loop 5. Partition + Concat
ところで Span<T>もしくはIEnumerable<T>のどちらかを受け取るジェネリックな関数って定義できる?
PとP以外でフィルタしたリストをくっつけるのが判りやすいんかなあ var PList = OBJList.FindAll(a => a.Name == "P"); var NPList = OBJList.FindAll(a => a.Name != "P"); PList.AddRange(NPList); OBJList = PList;
>>43 を読む限りの要件は
1. 比較の方法は「Name=="P"」だけで判断する
2. 安定ソートであること
3. 結果の返し方は(元のListを上書き変更/新規Listを作ってreturn)→質問者が何も考えてなさそうなので不明
質問者が現れて要件が確定しないとこれ以上進まんでしょ
>>78 > 3. 結果の返し方は(元のListを上書き変更/新規Listを作ってreturn)→質問者が何も考えてなさそうなので不明
元のListの上書きでしょ
それやろうとしてエラーになってるんだし
本当に必要な要件だったかどうかはわからんが
変にコレクション弄りまわさずに、Comparer<T>.CreateでカスタムComparer作ってSortかOrderByに食わせろ
>>76 あれに「P を先頭に持ってくる以外は元の順位を保持する」手順を追加すればいいだけだろうに。
宿題じゃないんだからそこまでは書かんよ。
sort系持ち出してる人多いけど、P以外の順序は変えないってことは実現できるのか?
>>81 すでにいくつか正解出てるんだから無能のおかしいやり方なんて要らんよw
>>47 あなたの書いた文が成り立たなくなるとか、そう言う理由でエラーが起きているわけではありません
独自解釈で理解した気分になってしまうと、何年続けても高卒・専門卒級プログラマーの域を出ません
エラーのメッセージが何で、なぜ今回の件に関係があるのか、しっかり突き詰めていかないと・・・・
小難しく考えずにこれでいいだろ OBJList = OBJList.Where(x => x.Name == "P") .Concat(OBJList.Where(x => x.Name != "P")) .ToList();
つまんねー大喜利だな どこぞの黄色が並んでるみたい
初心者用スレなんだからわかる人から見れば大喜利に見えるでしょ つまらないこといいなさんな
>>78 ,82
もとの要件がちゃんと示されてないから、
安定ソートが必要かどうかは微妙だと思うぞ
P,I,Nの順にソートされるようにすればいいだけじゃないのか
まあ俺ならソート用に順位表すような何かを別途作るがな
わざわざunstableな方法を選ぶメリットあるの?
>>91 List<T>.Sort が不安定ソートだからな
OBJクラスにIComparable<OBJ>実装しとけば、OBJList.Sortだけで完了する
パフォーマンスとかまあいろいろあるけど、設計としてはそれが正しい気がする
>>92 今回のはOBJクラスに直接実装するIComparableとは別に比較関数用意したほうがいいでしょ
それに比較関数書くよりも簡単に書けてパフォーマンスもいいstableなやり方がすでにいくつか上がってる
質問者なんてお題提供の存在でしかないからな 質問者放置はいつものことだろw
たかがソートで満身創痍で質問者もびっくりしてると思う
>>94 逃げてると言うかそれなりに答え出てるからもう見てないかもね
そういや質問者そっちのけでバトるのもお得意だったよな
自称世界最速のソートアルゴリズムを作ってた奴もこのスレだっけ?
どちらかというとアリゴリズムというよりは自然なソート?というのでよく悩むよね 具体的には1,10,11,2,3,4,5,6,7,8,9となってしまうのを 1,2,3,4,5,6,7,8,9,10,11としたい(実際には数字だけではなくアルファベットなどが混入する)
文字列を数値扱いで比較するのが闇だからなぁ 正の整数しかないならできんこともないけど マイナスを考慮するか? "x=-3" < "x=-2" "x=+3" > "x=+2" 小数扱いをするか? "ver3.2" > "ver3.14" "ver3.2.x" > "ver3.14.x" //これでいいのか? "ver3.2.1" > "ver3.14.1" //これでいいのか? "verx.2.1" < "verx.14.1" //これでいいのか? "p3_2" < "p3_14" //小数扱いはしない 結構のところ数値考慮の比較は複数パターン用意してオプションで切り替えなきゃいけない どこを数値扱いするかの仕様もどっかに書いとかないといけない 正の整数だけ考慮した比較と辞書順の比較の切り替えすら考え出すと辛いから 結局辞書順しかサポートしたくない
>>103 バージョンは正の数値以外含まれないものとしてSystem.Versionクラスを使えば
機械処理したいならこのクラスで扱える仕様にしておくのが無難だ
お絵描きソフトを作りたいのですがそういうグラフィック系についての参考書みたいなのって知ってますか? あと初心者はこれ読めって本あれば教えて下さい
趣味って言ってもレベルが色々あるだろ 簡単なのは誰にでもほぼ作れる 画面でマウス押したらそこに色を置くだけ ガチのやつは無理
>>108 それ系の参考書みたいなのがあれば嬉しい
WinFormsでよければ
https://dobon.net/vb/dotnet/graphics/ をひととおり試せばお絵かきソフトに必要な操作はだいたい分かるんじゃないかな
>>111 横からレスだけど、ちなみに(知ってるかもしれないが)ライセンスに注意
特にコードをそっくりそのまま使うとか
ライセンスに無頓着なひとが多いので
>>112 dobon の話なら MIT License だろ
趣味の範疇で問題になることなんてあるのか?
自分にできないことを他の人ができるようになってしまうのは悔しくて 答えに辿り着けそうなものを提供されると横やり入れて邪魔して 足を引っ張ろうとする地縛霊の糞みたいなのがここには居るんだよ
>>114 MITライセンスなら著作権表示が必要だな
趣味でも出来上がったものを公開する場合は注意
>>115 別にそんな気はないんだが…
趣味程度で自分の範囲で使うなら勝手にすればいい
違法行為じゃないから
でもライセンスを守ろうとすらしないやつは自分勝手なのが多い
仕事じゃなくて学校の課題だから自分ではやらずに他人に押し付けるとか、「あくまで非推奨であって法的拘束力がないから」ということでやりたい放題するとか
単に知らなかっただけならともかく自己中な考えのやつが大杉だから書いただけ
>>117 の追伸
もちろんライセンスとかは守ろうとするけど意識してなかったとかも有り得るけどね
>>116 dobonのコードをそのままコピペするわけじゃないからな
コードそのものじゃなくアルゴリズム自体が著作権法の保護対象になるような創作的なものはdobonにはほぼないと言っていい
Q「○○したいです。どうしたらいいの?」 A「ライセンスがー、ライセンスガー」 なんだこれw
>>119 すみだけど
著作権が保護するの記述されたものなのでコード自体は保護できるけど、アイデアは
保護しないはずなのでアルゴリズムは著作権の保護対象じゃないんでまいか?
アルゴリズムを保護するなら特許権のはずなので、コードのマルコピはNGだけど、
やってることをマネするのは問題なかったはず
アイデアが著作権で保護されちゃうと、誰も異世界転生出来なくなっちゃうよねぇ?w
>>122 広く「やり方/実装方法」という意味だったんだけどアルゴリズムって書いたのがよくなかったね
著作権法の保護対象はアルゴリズムを表現したコードになるんだけど
そのコードの丸コピじゃなくても表現として創作性が認められる部分をコピーしてれば問題になる
小説とプログラムだと保護される度合いが小説のほうが高いんだけど基本は同じ
異世界転生というアイデアの表現として創作性が認められる部分をコピーしてれば著作権侵害になりうるよ
ライセンス対策なんて怒られてからでいいんだよ じゃんじゃんパクって日本のIT産業を明るくしてくれ
面倒くさい話してないと息の根が止まっちゃう難病でも患ってんのやろな
Xamarinサポート終了らしいですけどc#でのスマホアプリ開発のFWって今何なんですか?
xamarinはmauiに統合されただけだよ 純正と言っていいのか分からないけど純正のはmaui
ないよ MAUIが移行先になる予定だけどポシャる可能性も十分考えられる
UIフレームワーク乱立させて何がしたいのかよく判らんね 良さげな技術のやつもあるけど、WPF以降に出た奴はどれも乗り換え先には不安
学ぶにはコミュニティにお布施しないといけないからなぁ しかも姫プを始める女が居ると技術系のガチ勢が愛想つかして出ていくから益々過疎化するという
Linux、iOS、Androidまで対応させる… デスクトップとスマホのUIを統合させたときのバカさ加減に似てますな。
スマホとPCを同じUIにするってならバカだけど xamlで言語切り替えるのと同じ感覚でマルチプラットフォームにできるというのは大きいよ
趣味の延長で小さな会社で一人で業務アプリちまちま作ってるんですが相談させて下さい VS2019+FrameWorks4.8で帳票とかサードパーティ製入れながらWinFormsで、Linux+MySQLでそれなりの規模に膨れて使ってます 端末の選択肢がWindows機でタッチありで5万で抑えて増やしてましたが、コストの割りに性能低すぎ故障多くてipadとかchromebook、Androidとかの選択肢に切り替えようかと デスクトップアプリから脱却となると、NET5とかNET6への鞍替えがいるかなと思うのですが、関連書籍もまだあまりでおらず 実際、VS2022いれてNET5かNET6どちらに進むべきですかね ActiveReportsはNET5は対応していないし、他のサードパティは逆にNET5はOKでNET6はまだだったりですし、WindowsServerもたてれるようにならなきゃかなと思うと、本業片手間でやっているので学習コストも際限なくとはできないですし、稼働しているMySQLのデータは活かしたいところだしで・・何がいいのかわけわからなくなってきて 識者のご意見お伺いしたいです
.net5はサポート期間が終わったか終わるかそのくらいの時期だよ そういうのを真面目に考えるなら.net5はアウト(そういうの気しないなら5でもいい) 新規ではなく、winformからAndroidなどへ移行させるのは面倒だよ どのくらいwindows依存コードがあるのかにもよるけど。 端末価格(性能に対する価格)はどんどん落ちてくから、俺だったらなんとか耐えつつwindows/FrameWorks4.8でやってくかな
>144
現状現場独自の機能が山ほどあるのでいまからSaaSというのは厳しいです
予算的にも・・・
>>145 となるとnet6をBlazorでちょっとずつ作り直していくてのが現実できですかね
(phpはかじってますが、JavaScriptはできない)
ブラウザベースに移行すればipadでもAndroidでもchromebookでもいけそうですし
ActiveReportsは大丈夫だし、それ以外のサードパーティ製は対応してくるのを待つとして
ネックは現在のサーバをWindowsServerに鞍替えするってことくらいでしょうか
CentOSは何年も触ってますが、Win鯖って扱えるようになるまでの労力って大きいですかね
セキュリティ含めてまでの学習となると相当苦労しそうですが・・・
>いまからSaaSというのは厳しいです と思いたいんだろ? 費用なんかお前一人が無駄な努力でドブに捨ててる人件費よりよっぽど安いよ
なんでWindows Serverが出てくるんだろう…
帳票印刷のためじゃね ActiveReportsの印刷機能はWindows依存だし
ていうか、言語のちょっとした質問ならともかく 複合技術でなんかやるって話だともう初心者スレの範疇超えてると思うけどw
>>147 ちょっと調べてみます
>>148 元々端末の追加コストが問題なので、ブラウザベースに移行するとなると
WebAssemblyは肝心のDBが不可とあるようなので
ASP.net Coreサーバー動かすために
WindowsServerが必要という理解なのですが間違ってますか?
>>149 そうです、独自の機能もありますが
大半の機能は画面開いてDBからデータひっぱってきて画面表示、
スタッフが操作して業務管理し、必要に応じて帳票印刷という流れが大半です
>>151 NET Framework、誤字です
すみません
WebAssemblyはDBが不可というか、ブラウザ上で動く技術だから WebAPIなり挟まないとDBのデータ取ってこれないのよ DB入出力をWebAPI化するところからだな。パフォーマンスどうなるかは知らんけど。
こういうのこそXamarinの本領では? 画面以外のロジックの共有。
>>154 153の言うとおり、こんなの結局WebAPI+薄いクライアントアプリという形にしかならないから画面以外のロジックは元々共有されてるんだよ
無意味
Blazor って想定はBlazor ServerじゃなくてWebAssembly なのか まあ最大の問題は、帳票をどこからどうやって出すかで それ以外は別にどうとでもなる
やってもやらんでもどっちでもいいとこばっかりライブラリってできるんだよね
ASP.Net CoreはLinuxで普通に動くよ 帳票の中身次第だがシステム的にはWeb化するのが常道 でもWebアプリの維持管理やセキュリティ対策とか趣味レベルで対応できるのか疑問だから 別の方法考えたほうがいいのかもね
>>155 とはいえWCFも無くなったし、WebAPIに簡単にはならんでしょ。
負荷もサーバ側にどーんと乗るのでバランスも悪い。
移行にかかるコストや時間を考えれば短期的には端末スペックあげるほうが断然良さそうだね
端末スペックで殴るのが一番楽はもちろんそうだけど、業務時間に少しだけ使うならAzureでデスクトップ借りてシンクラよろしくRDPすんのもアリかもね。
>>143 の時点ではクライアントアプリだったのをWebアプリにしようとしてるのかな?
正直小規模な会社なら
>>145 の言うようにWinForms + .NETFramework 4.8で良いような気がする
まあ規模次第だね Web化するとデプロイの手間は軽減されるけど、少数台くらいだとあまり旨みがない それなら端末に多少金掛かった方がマシ
皆さんアドバイスありがとうございます
>>162 そうです、重い作業はデスクトップで、軽いのは小さいタブレットPC(ほとんどAtom)で
端末ごとに認証時に動作モードを変えて異なる画面サイズに対応させています
Atom機は遅いし故障も多いし、破損も多い・・・という状況で苦慮してます
移行の労力を考えるとやっぱりそのままいくのが一番妥当というところなんですね・・・
安くて性能の高いものが出てくるのも期待しつつ
軽い作業で使っている台数の多いAtomのものをせめてN4000番台に入れ替えながら耐えて
稼働している部分は触れずに、暇なときにLinuxにASP.NetCoreいれてWebアプリ開発にチャレンジして
徐々に軽い方だけ切り替えていく方向で考えてみます
webでC#は流石にどうかと思うんだけどねぇw コードを流用したい?とかなのかも知れないが まだUnityとかの方がマシな気がするし 実際Unityで業務アプリ作ってたりしている所もあるらしい 個人的にはwebにするならPHPとかで作り直した方が良いと思うけどね C#でweb化、過去の資産があるから短期間でみたいな仕事が来たら速攻で断るw
単純にC#でweb化っていってもな MVCもあるし、Blazor ServerもWebAssemblyもある そろそろ本気でBlazor評価しとかんといかんなぁ 過去の資産があるから短期間でみたいな仕事は 言語がどうだろうが環境がどうだろうがヤバイ匂いしかしないがな つかAtomのタブレットってそんなに壊れるのか? 安物買いの銭失いとはよく言った気がするが
壊れる理由によるな 現場の扱い悪いなら、何使ってもすぐ壊れそうな気もするが
ぇ WebバックエンドでC#なんて最高に相性いいじゃない。 EFのおかげでDB周りも楽だし。 フロントUIはAngularなりReactなり任せちゃえばいいし。 PHPとかnodeとか言ってるのはあれか、アクセス数少なくてパフォーマンス気にしなくてもいい人たちか。
ショボいスペックのPCにそこそこの要求スペックのWindows入れること自体ねぇ アプデもあるし2年もすれば時代遅れになるだろうことは想像できるけど ハードウェアが壊れるかどうかは知らん
WebでC#ってローカルでDockerで構築してAWSとかにLinuxイメージごとデプロイするの?
phpなんかでやるのと同じ。(phpはビルドないけど)ビルド結果だけをデプロイだよ
なるほど ちなみにWebアプリの場合でも今はASP.net?もしくは.Net6? いまいちどのフレームワーク使うのかわからん
なんか色々ごっちゃになってると思う まぁMSのフレームワークの概念は自分も一時期混乱した .net standardとか何だったの
大食らいなブラウザと大層なフレームワークが満足に動くならロートルのWinFormsやWPFなんかスカスカ動かんか?
ついさっき (x, y) = (y, x) こういう書き方ができるのに気付いたんだけど、これいつから出来るようになったん?
Pythonでは x, y = y, x ってできるの知ってたけど、C#ではできないと思ってた
powershellから呼び出せるC#じゃできないけど? csc.exeのバージョンも4.8とかそんなんだし
自分のメールアドレスに打った文章を送るコードなのですがうまく動作しません
具体的に言うとgmail宛に何も届かないです
何処を改善すればいいのでしょうか?
https://ideone.com/1GsDjn catchで何もしないのはやめよう せめてログに出すとかさ > SmtpClient server = new SmtpClient("自分のメール@gmail.com"); > mail.From = new MailAddress("email"); > mail.To.Add("dest"); パラメータ滅茶苦茶 SmtpClientに渡すのは通信先のSMTPサーバの情報 Toが送信先メールアドレス SMTPサーバはGmailのが使えるようだから調べてみて あとSystem.Net.Mailはもう非推奨 代替としてMailKitとか挙げられてる
gmailのアカウント側でsmtp有効にしてるかとか確認したら? あとgmailのsmtpはあと3か月ぐらいで全面的に使えなくなるから仮に作れてもすぐ使えなくなるよ
やべーelse ifが見えた時点で読むのやめたんだが
まず問題の切り分けからだね
このコードはgoogle.comのメールサーバー(mail.google.co.jpだと思うんだけどなぁ)に対してメールを直接投げるやつ?
それともgoogle.comの自分のアカウントにログインしてからまた別のメールアドレスにメールを投げるやつ?
あとkeyとか色々作る前に定型分のテストメールにしなよ
To:
[email protected] From:
[email protected] Subject: TestMail
This is test mail No. 1.
.
>>175 三つ目の変数無しで値の入れ替えが出来るって理解で良いの?
タプルはずっとまえからじゃん。 もう5年たつんじなないのそれ。
もしかしてC#が複数の値をリターン出来るとかも知らんのかな?
宣言と定義の違いってどうなってますか? C++ではint x;は定義なんですよね? C#ではint x;は宣言のような気がします...
>>189 ありがとうございます
ちなusingやnamespceは定義ですか?
>>190 自分の場合はnamespaceで包むときは定義、使うときは単に「使う」系かな
定義(definition)は文字通り、「(存在してなかったものを)こういうものだと決めること」だと思ってる
さっき挙げたページでいうN::Cやfのような処理や型自体が存在してなくて、それを「こういうやつだ」と決めてコンパイラに教えているね
変数とかの宣言(declaration)は「この変数はこの型として使うよ」っていうイメージかな
だからC#だと using System;は
https://docs.microsoft.com/ja-jp/cpp/cpp/using-declaration?view=msvc-170 だと「using 宣言」てなってるから宣言かな
191だけど、ミスった 参考ページを提示しているusingのところはC++のやつに読み替えてね
>>181 >>183 ありがとうございます
アドバイス通り引数を直したんですがメール送られてこず…でした
仰るとおり自分のメールアドレスにログインして別のメールアドレスにメールを送るプログラムなんですが
何処を直したら正常に機能しそうですかね
180のメールメソッドの内容を
https://ideone.com/9IoPl4 に変えたのですが変化無しでした。1から考え直すしかないでしょうか
https://docs.microsoft.com/ja-jp/dotnet/api/system.net.mail.smtpclient.send?view=net-6.0#system-net-mail-smtpclient-send (system-net-mail-mailmessage)
失敗したらなんかのExceptionが投げられるみたいだから
catch(Exception ex){ Console.Error.WriteIine(ex);}
してみろ以上のことが言えん
IE7ベースのWebbrorser が古いので新たに使うとしたら Webviw2 と CefSharp どっちがいいですか?
好きにしろよ 俺はwebview2一択だと思ってる
CefSharpは起動重いな。 WebVieW2は速いがあまり浸透してないコンポーネントのインストールが必要だわな。
Chromium関連のファイルサイズがでかいからそのへん気になるならWebView2 MSを信用しないならCefSharp
WebView2 以前ちょっと使ったけど、ページ表示前の初期化が毎回遅かったような記憶がある。 記憶違いかもしれないけど。
コンストラクタでurl代入できりゃいいのに、その頃はまだ内部での初期化が終わってないからできないな
Webは戻る進むがあるからしっかりステート管理しないとしぬ
簡単な図形データをdxfファイルにしてみたいんですけど、どこか参考になるサイトないですか? 幅500o✖長さ1000oの長方形枠内に円とか長方形とかそんな感じのもので、レイヤーとか線種とかとくなく実線のみで表現したいんですけど。
dxfを読みたいっていうとバイナリだ3dだ色だなんだって色々なパターンあるから大変だけど dxfを書き出したいってだけなら難しいこと考えずに適当に「dxf ファイル仕様」とかぐぐって調べたらいいよ
formsでスケーリング変えると部品の位置がズレたりするんだけど、 是正する定番の方法あったら教えてたもれ
>>209 フォームのサイズが変更されたとき?
サイズ変更についてなら「サイズが変更された」ときのイベント内で再計算するか、Panel系クラスを利用して表示するかだと思う
フォームの大きさを小さくしたら下に回り込むようなやつならFlowLayoutPanelで、HTMLでいうテーブルならTableLayoutPanelとか
Panel系にDockをFillにしたりすれば再計算はプログラムがやってくれる
>>209 ですが、
色気を出して最初にSetProcessDPIAware()を呼んでたので、これ呼ぶのをやめたらズレは直りました。
これはフォントがボヤンとするいわゆるDPI仮想化状態ですね。
ただこれだと座標取得関係に難ありだったと記憶してるので、
SetProcessDPIAware()を呼び出しつつ、
form1.AutoScaleMode = AutoScaleMode.Dpi;
にするとコントロールのズレは収まりました。フォントの大きさの再調整は必要ですがこれが良さそうです。
一旦問題を整理してみます。
>>212 スケーリングに対応する場合は、フォントはBMPを含まないメイリオやYu Gothic UI等を使うと良いよ
グリッドレイアウト でググると参考になるかもしれん もちろんGuiがおおっぴらにサポートしているわけではないが どうしたいかの参考になると思う
コントロールのフォントを自動調節するやつできたんでとりあえず解決しました。 void AutoFitFontControl(Control ctl, string fontname, int maxpoint) { var g = System.Drawing.Graphics.FromHwnd(ctl.Handle); var point = maxpoint; for (;;) { SizeF sf = g.MeasureString(ctl.Text, new Font(fontname, point)); if (ctl.Width < (int)(sf.Width) || ctl.Height < (int)(sf.Height)) { point -= 2; } else { break; } } ctl.Font = new Font(fontname, point); }
C#勉強中で分からない点があるので質問です テキストボックスをデータバインドしていてViewModel側はstringでSetPropertyで双方向としていて テキストボックスでキー入力されてもコード上でstringの値を代入等で変えても画面に表示されている値と内部で保持している値が一致するようにしています これをstringから独自のクラス、例えば電話番号クラスとかにするとテキストボックスにキー入力しても内部で保持している値に書き換わってしまうのですがこれって何に原因があるのでしょうか? View側の処理 TelephoneTextBox.DataBindings.Add("Text", viewModel, nameof(ViewModel.Telephone)); ViewModel側の処理 public TelephoneValue Telephone { get => _telephone; set => SetProperty(ref _telephone, value); } TelephoneValueは内部にstringを持っていてToString()でstringを返しています
>>216 あなたがどっかで定義したTelephoneValue型はxamlが理解できるものじゃない
TelephoneValueを1引数のstringで構築できるかもしれんがそんなことは知ったこっちゃない
(Converterを自作すればなんとかなるかもしれんが)
おそらくXaml側でBindingエラーが出てる アプリが落ちるわけじゃないから気付きにくいが Visual Studio環境なら出力ウインドウとバインディングエラーのウインドウにエラーメッセージが出てるはず
すいません使ってるのはWFPでは無いです
formで書いてます
ただ
>>217 が言ってるようにそうなる理由はset時に型を理解できない為と思います、テキストボックスからの文字列は文字列であり独自の型に入れられないから上記のような挙動に見える
エラーは出てなかった様に思いますが帰ったら確かめます
これって独自の型を定義してその型でバインドした物と双方向する事はそもそも出来ないんでしょうか?
intにしろDateTimeとか文字列への型変換が出来るので出来そうに思えるのですが
文字列から変換できなきゃ意味ない telephone = "でんわ"
こんなにすれば内部で保持してるのとuiとで双方向できるし 内部→ui、ui→内部、どっちかだけ片方bindもできる class telephone { int a,b=0; public string tel { set{ var d = value.split('-');a=int.parse(d[0]);b=int.parse(d[1]); get{ return $"{a}-{b}"; }
System.ComponentModel.TypeConverter?
そのTelephoneValueクラスがstring型のTextValueプロパティを持ってるとして、 .DataBindings.Add("Text", vm, "Telephone.TextValue") とすればいける
>>220-223 色々ヒントありがとうございます。後程色々試してみて報告できそうな結果ならしたいと思います
また分からなかったら聞くかもです
最初、代入演算子かstringformat以降をごにょごにょする?か最悪テキストボックス側をいじる、いやUIはさすがにいじりたくない
とかですが"Telephone.TextValue"な書き方もできるんですね目から鱗です
TypeConverterは調べてみます
最終的にやりたいのはテキストボックスのマスクの動的判定
例えば06と打てば06-、続けて6を打てば06-6、4なら064-みたく表示(実装済み)
かつデータベースに書き込むのはハイフンなしにして書き込み、読み込む時はハイフン付けてテキストボックスに表示(生のstringでは検証済み)
これを整合性合わせてしたいが生のstringを使いたくなかったのが理由
まぁテキストボックスいじる方がよっぽど気持ちが悪いのですが
取り合えず上記アドバイス試してみますありがとうございます
市外局番ルールってどっかに計算式あるの? まあ同じ市外局番でも省略すると繋がらないとかふざけた地域も多いしトンキンオオサカだけでもいいか
私は総務省にこんなんある事知って上記の話はそれらしく実装した
https://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/number_shitei.html 厳密にやろうとするとクソ面倒なのであくまでそれっぽくしただけだけど一応区切り位置とかのルールは存在する
Socket.IO (SocketIoClientDotNet) を利用し、下記コードでメッセージの購読は出来たのですが
this.socket = IO.Socket("
http://localhost" ;);
this.socket.On("new-message", (jo) =>
{
this.RecvNewMessage(jo as JObject);
});
購読を終了する方法が解りませんでした。
どのようにすれば終了できるでしょうか?よろしくお願いします。
OnしたんならOffすればいいんじゃね 知らんけど
コメントアウトはVSCodeのようにCtrl+/でやりたいんだけど 設定で変更できるよね? なぜ最初からそうなっていないの? Ctrl+k,cは面倒極まりない。
頬杖つきながらマウスで選択してツールバーでポチっとするだけだから。 20年遅れてるUNIX開発環境に合わせろと言われも困ります。
ツールバーのボタン標準で表示されてるんだな。初めて知った だがむしろデフォルトをkc、kuで統一しろよ
ロジのマウスすぐチャタるから俺もPC操作はできる限りキーボードで行いたい派
プログラム開発でクソAIMやると切れそうになるからマウス使いたくない
>>232 捨てろよ。もしくは頻繁に接点復活スプレー
UNIXなんてのは太古の昔から市場の片隅で生きてきた絶滅危惧種だったのに 使ってるアホどもは世界の中心だと思ってるから厄介。
マウスイベント監視してチャタリング無効化するだけ。
チャタリング判断が時間要素と多少の移動値しかないから、ソフト的な対策はできない(操作性悪いのは変わらない)んだよ 俺の対策の腕が悪いからかもしれないけどな・・・
タイポしやすいのでむしろなるべくキーボード使わないようにしてる派 インテリセンスとコピペを駆使しまくってる
発見伝!て続けようとしたら書き込んじゃった ただの感じ悪い人だなしまんてっく
USBメモリを安全に取り外すのはC#で書けたんですが、 その後USBメモリを抜き差しせずに再認識させる方法はあるでしょうか
>>249 リモート先のマシンでメディアを抜き差しする処理とかをよく発生するので…
現地作業者に連絡する手間を省きたいってのが大きいです
取り外しやったら物理的に外さないとだめじゃなかったっけ? ドライバの無効→有効じゃだめなん?
vectorにあるunhotplugとeasterっていうのを呼ぶツール作ればいけるのでは
おせっかいというか余計なアレやけど、 USBを擬似的に抜き差しさせるプログラム作って新たな障害の素を作るより、 USBを使わない、ネットワークストレージに置き換えるとかの方法で、 根本的な状況を改善するほうがいいんじゃないかな。。
USBに何か挿されたよシグナルをOSに送ればいいんじゃね
自分ところの放置鯖は休止復帰後にUSBの再認識をバッチでやってた 時々USB死んでマウスが動かなくなるから やり方は忘れた
usbメモリ直はムリだと思うからdevconいじくりまわしてワンチャンかな
wmiからPnPEntity使った方がまだやりやすそう
そもそも何故USBを抜き差しした事にしたいのかわからん
スマートコンセントにアダプター式のUSBハブ繋いで電源ON/OFFすればいいんじゃねw
まあハードで細工前提なら間にマイコンなりでVCCをスイッチすればできますけどね ソフトでできないかという話なので devconでdisable→enableは期待した動作にはならなかったので他の方法を考えて見ます
目的を達成出来れば何でもいいって話だと思ったんで、違うならスルーしてくれ
Disposeパターンの学習中なのですが、マネージリソースとアンマネージリソースの見分け方が分からないのですが、 よい解説サイトを教えて頂けないでしょうか。
難しく考えることない。この程度の見分け方で十分だろ class A : IDispose ←宣言を見たときにIDispose派生ならアンマネージド A a = 〜 a. ←「.」を打ち込んだ時にDisposeが表示されたらアンマネージド using (var a = new 〜) ←usingで囲んでエラー出たらマネージド
Disposeの中身が MessageBox("error",MB_ICONERROR); のみでアンマネージド?
Disposeの中身が空でもアンマネージなんだよ。細かいこと気にするな
いちいち継承元全部辿ってIDisposableあるか確認して手動で開放しないとリークしまーすとかいう欠陥言語
win32リソースかどうかなんか用途ですぐわかるだろ…
書いてから気づいた
>>263 の方法で確認すりゃまだ楽か
だがしかし、実装を強制できないからdisposeしてなくても気づけないってのがな
キミのように脳に欠陥があるなら仕方がない。使い終わったら常にdispose()呼ぶだけの話。
使い終わったら常にdispose()呼ぶだけ!キリッ 話の本質わかってなくて草生える
Disposeでマネージ/アンマネージってことは protected virtual Dispose(bool disposing) のdisposingの真偽で何を解放すべきかってことだよね .NETのオブジェクトとして存在しているモノがマネージリソース 大体は自分がメンバに持ってるIDisposableなオブジェクトを意味する これらはdisposing==trueのときだけDisposeすればいい アンマネージリソースはWindowsのAPIとかで直接確保したデバイスコンテキストとかメモリ 大抵はIntPtr型で保持している こういうのはそれぞれのリソースの解放方法に従った方法で直接解放する これらはdisposingに関わらず常に解放する
> いちいち継承元全部辿ってIDisposableあるか確認して手動で開放しないとリークしまーすとかいう欠陥言語 分かってるよ。話の本質は、馬鹿がヘジが開発した言語にマウンティングした、ということだろう。 だがその試みは失敗した。それだけ。 なんならwin32リソースについて言語はどう管理すべきいくらでもキミの意見を語っていいんだぜ? だがキミからは何も出てこない。知ったか初心者だからだ。
初歩的なリソース管理程度で発狂して言語貶してるド初心者に 馬鹿にされてキレるわけないだろう。馬鹿かこいつ、としか思わん。
あああああああああああああああああああああああああああああああ!!!!!!!!!!!(ブリブリブリブリュリュリュリュリュリュ!!!!!!ブツチチブブブチチチチブリリイリブブブブゥゥゥゥッッッ!!!!!!!)
そもそもc#のデストラクタが産廃だからあてにしてる動作だろ
GC(マークアンドスイープ)+FinalizeとDisposeの相性が悪いだけだろ C#に限った話じゃない
基本的には終了で開放だけど、すべてが開放されるとは限らない よくあるのがexe内部でexcel使ったら、exe終了してもexcelのプロセス残ったままみたいなやつ
ようやく
>>282 みたいなまともな回答出てきて嬉しい
スコープ外れたタイミングでデストラクタ呼び出し保証しなかった理由ってどこかに解説とかないのかな?
C#の現状のデストラクタとかガチゴミじゃん
またいつもの質問者そっちのけでの罵倒合戦かよ・・・・・
アンマネージドリソースは文字通りC#の管理下にない(un-managedな)リソース
具体的にはunsafeで確保した配列・ポインタやWin32APIを呼び出して確保したIntPtrなど
Disposeのタイミングで適切な手法で(それこそWin32APIを呼ぶなどして)リソース解放しないとメモリリークする
マネージドリソースはC#の管理下にあるリソース全般
FileStreamやDbConnection、Bitmapオブジェクトなどもこれ
そういうオブジェクトをクラス内のメンバ変数で持ってるなら、Disposeメソッド内で
それらのメンバ変数のDispose()を呼ぶことでリソース解放するお約束になってる
>>263 の説明はデタラメもいいとこだしそもそも「IDispose」ってなんだよ
>>263 のデタラメに気付かずC#を欠陥言語呼ばわりするために乗っかった
>>266 の言ってることも同じくデタラメなんだけど
こいつは罵倒マウンティングすること自体が目的でわざとデタラメに乗ってるのかそれとも素で理解してないのかは分からん
C++/CLIならデストラクタが使えるから問題ないんだよな。捨てたのはもったいない。
それな GCとかの仕組み上どうしても無理でしたってんなら納得逝くんだけどその辺知りたい
>>285 スコープ外れたってどうやって判断するの?
というかここら辺はサンプルというか、実際使ってるコードみないとピンとこんよな これは意味あるIdisposable、こっちは意味ないとかで
>>287 ref class C{
~C(){} // Destructor
!C(){} // Finalizer
};
のコンパイル結果が
// C# DLL
class C:IDisposable{
Dispose(); //Destructor???
~C();//Finalizer
}
であることをご存知でない?
C#を欠陥言語呼ばわりするだけあってGCが何かすら知らないアホの子だったとさ。 ヤレヤレ ┐(´ー`)┌ マイッタネ
>>289 言語自体の実装は見たこと無いからサパーリ
せやから解説とかしてる人いないのかなって
>>283 されねーんじゃねーか?
俺はあふれるまで動かないって言ってるじゃん
msdnより
ガベージ コレクションの条件
ガベージ コレクションは、次のいずれかの条件に当てはまる場合に発生します。
システムの物理メモリが少ない場合。 OS からのメモリ不足通知またはホストによって示されたメモリ不足のいずれかによって検出されます。
マネージド ヒープで割り当てられたオブジェクトによって使用されているメモリが、許容されるしきい値を超える場合。 このしきい値は、プロセスの進行に合わせて絶えず調整されます。
GC.Collect メソッドが呼び出されます。 ほとんどの場合、ガベージ コレクターは継続して実行されるため、このメソッドを呼び出す必要はありません。 このメソッドは、主に特別な状況やテストで使用されます。
>>291 スコープを外れたときに自動的にDispose()が呼ばれるから問題ないってことなんだが。
>>288 お前はメモリとかリソースの管理を他の言語でどうしてるかもっと勉強するべきだ
C/C++がユーザーに全部丸投げしてるのがいい加減辛いので言語側が管理すればいいんじゃね?ってのがGC。
GCの方式で主流なのは参照カウント方式とマークアンドスイープ方式。
参照カウント方式は循環参照(this._obj=this)があると回収されないから、
C#多少大きめのコストを支払ってでもマークアンドスイープ方式にした。
リソース解放のタイミングをコントロールしたけりゃIDisposable使え
解放漏れの保険でファイナライザ使え
https://ufcpp.net/study/csharp/rm_disposable.html C#1.0のリリースが2002/02だから当時はそれでも充分だったんだろう
そもそもC#は「デストラクタなぞ使うべきではない」っていう思想だし
それゆえにリソースの解放はデストラクタではなくDispose()で行う
(万一Dispose()を呼び忘れた場合に備えて
>>291 の実装でデストラクタで救済するけど、これも
パフォーマンス上好ましくないんでDispose(bool disposing)みたいなDisposeパターンの書き方で処理を最小化する)
って方針で首尾一貫してるんだけどさあ
その方針にケチつけてデストラクタがクソだのIDispose確認がメンドクサイだの言ってる人たちのほうがおかしいだけなんだよ
>>273 が
「話の本質わかってなくて草生える」
とか書いてるけどまさにそのとおり
もひとつ気になってたんだけど、Dispose()呼び出しの必要性をいちいち確認して書くのが大変っていうけどホントかよ? マネージドリソースを扱うにしたって、ローカル変数ならusingで書けばDisposeいらないよね? 最近のC#のバージョンなら中括弧で囲う必要すらなくなったよ? クラス内のインスタンス変数だとしてもさあ、 DIで初期化するフィールドならDIコンテナに任せればDispose()呼ばなくていい 自前で生成初期化するフィールドだとしてもその個数もたかが知れてるしDisposeの要否も明快に分かるでしょ それとも、自分で書いてるクラスの中がごちゃごちゃでDisposeが必要な変数がどれか把握しきれないってこと? そんなクソみたいなゴミ溜めクラスしか書いてないのだとすれば、言語仕様じゃなくてクラス設計/実装能力の問題だと思うんだよね
ごめん嘘書いた
>>291 の実装はC++/CLIの話だったのか(ごめんC++/CLIはやったことがないので判らない)
Disposeパターンのデストラクタと似たようなものだと思い込んで混同しちゃってた
> そもそもC#は「デストラクタなぞ使うべきではない」っていう思想だし 聞いたことねーなw デストラクタは非同期ですってだけだ。同期したいならdispose使えという単純な話でしかない。
元々finalizeはCLR側の用語でデストラクタはC#側の用語。 MSのゆとり化が進んで馬鹿すぎて区別できなくなったんだよ。
デストラクタを実装したクラスはガベコレの効率が落ちる(世代があがる)からなるべく使うなって話だったはず
>>302 >>303 の書き込みをヒントに検索したら
https://ufcpp.net/study/csharp/rm_gc.html?sec=cost-to-finalize#finalize このページにたどり着いて
デストラクタ→ファイナライザに呼び名が変わる理由もデストラクタのコストが極大なことも分かった
GC.SuppressFinalize()っていままで意味が分からないまま機械的に書いてたけど大事だったのね
いろいろ賢くなれた、ありがとう
ならなくていいから直近50レス以内で俺以外に書き込んでるやつは直ちに全員頭かち割って中央線の始発に飛び込んで死ね
長文ゲェジ共空気読めよ (ユーザーが)欠陥言語 確かに間違ってねーな
float,double型について質問です。基本的に精度のたかいdouble型オンリーで良いと思います。 double型だけじゃなくfloat型が混ざっているソースをみるのですがそれは何故でしょうか?
>>309 C#に限った話じゃないがdoubleの方がメモリを多く使って計算速度も遅くなるから
>>310 ありがとうございます。
リストのときにdoubleじゃなくfloatがよく使われてたのはそれが理由だったんですね。
floatとdoubleの混用なんてそんな傾向が見いだせるほど頻繁に使われているとは思えんが。 たまたま見たそのコードではそういう使い方をしていたに過ぎないんでは。
昔のコードをまだ使っててfloatのとこがあるって理由じゃねーかな?
C++では機械学習と3Dレンダリングでの並列化を目的にfloat16_tとかいう概念が生産されたりしてるからfloat自体は過去の遺物ってほどでもない C#だと実行速度を気にするよりも開発を楽にすることを重視することが多いからdoubleオンリーでいいのは確か
専用命令とかでベクトル演算するなら、floatの方が同時に演算出来る数が多いから単純に速くなる
まぁ精度や速度がクリティカルでなければ悩む時間が無駄だしdoubleでいいでしょ
>>309 主に組み込みのシステムと通信していたりする場合、相手が float のサイズを要求することもある。
>>310 メモリは多く使うが、今どきはハードウェアで double を計算するはずなんで、遅いはダウト。
むしろfloat の方が double への変換の分遅くなるまである。
いまだにダウトとか言う香具師っているんだな ダウトとか今日日聞かねえわ
というかそれぞれの場合過ぎるやろ 「基本doubleでいい」には自分は同意するけど、 別にfloat使ってたからって誤差が問題ないなら何も言わない わざわざ変換を何度もして計算してたら気にするけども、そこまで求められる現場もそう多くないのでは
>>318 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ( ´∀`)< オマエモナー ( ) \_____ | | | (__)_) 整数でも他との型を合わせる以外 int を使うし、実数も基本 double でいいのでは
遅くても小数以下の精度が重要ならdecimal使え
floatは結構簡単に精度の低さが問題として表面化するよ longとintの比ではない
実際のビジネスシステム構築ではDecimal型使う場合が多い
精度云々言ってるやつはせめて具体な影響の例も書こうぜ
sqlサーバーのnumeric(4,0)とかをEFでモデル作るとdecimalになるけど お前らそのまま使ってる?
>>317 float演算もdouble演算もハードウェアがサポートしてるけどdoubleの方がクロック数消費が多い
参考にどうぞ MOVSS xmm, [m32] L: [memory dep.] T:0.50c MOVSD xmm, [m64] L: [memory dep.] T:0.50c MULSS xmm, xmm L:4.0c T:0.50c MULSD xmm, xmm L:4.0c T:0.50c
Ryzenのdatasheet過去に見たけど今検索しても見つからなくて困ってる SIMD含め命令の消費クロック数とか全部書いてたのに...
>>327 floatだと日本の人口(1億2550万2290人)すら代入できない
Ryzen 5 MULSS xmm, xmm L:3.0c T:0.50c MULSD xmm, xmm L:4.0c T:0.50c Intelより速いですな。
C#でNTFSのMFTデータ取得とHDDにセクタ(?)単位で読み書きしたいです。 出来るなら関数とかを教えて欲しいですよろしくお願いします。
YouTube でよく見るけど、 Ryzen は高いけど、Intel 12世代に負けているでしょ?
NVIDIA GeForce RTX 3060 FP32 (float) performance 12.74 TFLOPS FP64 (double) performance 199.0 GFLOPS (1:64)
Intel12世代コアで雑にマルチスレッドプログラム動かしても大丈夫だよね? 下手にEコア引くみたいなことは無いと思うけどさ
AVX-512を有効化して使うことができる石を使っている…だと!?
プログレスバーを継承したコントロールのOnPaintの中で base.OnPaint();呼んでもバーの部分は描かれないの?
>>340 そもそも OnPaint は呼ばれない
>>340 Reference Source見れば分かるけど、そもそもOnPaint実装してない
値が変わったらSendMessageでPBM_SETPOS送ってるだけ
>>335 それはもうC#とか関係なく特権権限でWin32APIでも利用してマニュアルでやるしかない
MFTの構造とかはググれば多分すぐに見つかるだろう
>>328 むしろdecimal以外をつかうなら、それDB側の型が妥当か疑わしいが
>>344 WIN32API 含めて検索したら出てきたKernel32.dllのreadfile/writefileの引数にPHYSICALDRIVE指定したらできそう頑張ってみる、ありがとう。
外部のdll関数にintptr渡して実行する処理(HBitmapにポインタ合わせて投げる) が複数の上記とは関係ない処理をまたいで有効になっている処理を2,3回繰り返すんですが メモリリークしてます。 どのようにしたらメモリリーク防げるかおわかりでしたらお教えください。 渡すBitmapとポインタを常に同じメモリ使う様にすれば良い?のかなとは 思うのですがそこらへんのやり方等なにかご存知でしたらご教授くださいm(_ _)m
ハンドルの解放わすれてるとかでは? ループでぶん回すとメモリがリニアに増えてく箇所が無いかとか、まず場所を特定しなさい
newしたらdelete getしたらrelease mallocしたらfree openしたらclose すべてチェックするしかないですな。 むしろなぜ対にしてコードを書かないのか謎。あっC#だからか。
アンマネージなリソース使うならIDisposableにしてusing内で使う
>>350 みたいなのはやってられん
せめてref structだけはデストラクタ書いたらスコープ抜ける所で自動でデストラクタ呼び出ししてもらいたいわ C++みたいに まぁC++みたいにコピームーブ禁止にできないから複数回呼ばれちゃうことを考えたらそういう風にはづらいってことなんだろうけど
ご指摘ありがとうございます。 IntPtrを割り当てたBitmap分のメモリがやはり解放されてないのは特定しました。 gdi32.dllにあるDeleteObjectじゃなきゃ消せないみたいなページ見つけて試してみたら解放されました。お騒がせしましたm(_ _)m
>>356 個人プロジェクトではそうしてるけどそれじゃ他人には公開できないからな
強制usingでもあれば公開できるけど
たまにusingはwin32リソース用だってかたくなにその用途以外を否定する奴いるけど別にそんなことないからな 意味ないusingはアホだけど 意味あるusingは恥ずかしくないぞ
だったらc#のデストラクタ使えばいいw それだと望み通りの挙動しないからusing使えばって話だろ・・・
>>361 だからそうしてるって話たろ
でもデストラクタと違って必ず呼ばれる訳ではないから他人には公開できない
using使ってデストラクタって意味じゃないぞ using使ったらdisposeが必ず動くって意味だろ。dispose持ってるクラス本体の開放は仕方ないがそれ以外ならなんとかなるってこと
そもそもref structはいわゆる「所有権の借用」を扱う仕組みだろ 通常、ref structは自身のフィールドに持つref型の値を解放する責任を持たない リソースの解放をしやすくすることを目的にref structを使うのは本来の目的から逆行しており、明らかに誤用だ
使い終わったら解放してね(はぁと ↑この前提がドキュメントに書かれていれば必ず呼ばれるはず でなきゃバグるだけなのに「必ず呼ばれる訳ではない」というのは辻褄が合わなくない?
>>363 C#ってstructにデストラクタ書けないから当たり前やん
>>365 そういうスタンスでいいならそもそもマネージドな言語を使う必要すらないな
まぁ実際に個人開発だとUnity関連のツールですらも最近はもうC++で書いちゃう事も多いけど
>他人には公開できない このキーワードで時間の無駄だと気付くべきだったわ
スコープアウト時点で解決されないのにデストラクタなんて用語使うからおかしくなるんだよ Finalizeと呼べ
要約するとC#のデストラクタはゴミってことや 実際ゴミだし
基本的にC#のデストラクタはよっぽどの理由なない限り触らないかな Javaみたいに割り切ってメソッドとして呼び出した方が早い気がする
>>369 でもデストラクタはもともと単にデストラクトするものでしかないがな。
スコープを外れた時点で呼ばれるものという意味が被されたのはRAIIが提唱されてからではないかな。
実際、c#のデストラクタって実務でどういうケースで使うんですかね?
>>375 >>294 のタイミングで何かを実行したいとき
WebView2って配布サイズがでかいんだけど、 自分のアプリで使ってる機能を含んだファイルだけ抜粋してexeに統合してくれるような機能ってないよね・・・?
floatとdoubleの関係はVAX-780の仕様が C言語に反映されて、その名残や
その経緯は詳しくないが、C言語とUNIXの開発マシンはPDP-11で そもそもVAX/11-780ですよ
>>377 electronもChromiumとnode.js含んでるから配布サイズでかくなるし、そんなもんじゃないの?
>>379 それを言うならVAX-11/780だったり。
ListViewを2つ設置して、ListView1内のリストを選択したらListView2の内容が切り替わる物を作成しました。 ListView1と2の選択状態を維持?というか選択されてるリストはこれです的な事がしたいんですが、何か方法ありますか?ListView2にフォーカスがある状態だと選択項目が薄いグレーでちょっと分かり辛くて。
>>382 馬鹿ほど標準のインターフェイスを蔑ろにする法則
バカほどユーザーフレンドリーなUI設計できないからなw
>>382 オーナードロー使って描画
listview ownerdrawでぐぐれ
>>382 選択中のものを表示するだけならTextBox(+Icon)表示でいいんじゃない?
選択項目が見づらいだけならStyleなりPropertyいじるなりで解決するべき
初心者相手に隙あらばマウント取るような性格終わってる奴多いなこのスレ こりゃ質問したくもなくなるわ
実現できるどうかはお前が判断することじゃないのでは
オーナードローは面倒なだけで難しいわけじゃない 真面目にドキュメント読めるなら初心者でも問題ないよ
c#の環境が一切入っていないpcでも動くように、.netのフレームワークを埋め込んで?ビルドしてexeにする方法はないですか。
現行の一般向けWindowsなら.NET Framework 4.8が必ず入ってるから特に埋め込む必要もないけど
.net6とかで単体ビルドで作るか、 net4.5で作ってwin8以上ならデフォルトで動作するって形にするか。 あとwin7をどうするかだが未だにnet4.5すら入れてないPCだと、 多分他人様のプログラムは入れないことになってるマシンだと思うよ。
>>390 .NET5以降だった気がするけど、dotnetの代わりにpublishを使って自己完結型にすればできる
Visual C#だと設定画面のやつでやるみたいだけど
大昔にWixってやつでやれたはずだが、今どうなっているのかよく知らん
https://wix-tutorial-ja.github.io/ 基本何でも出来るけど割と面倒だった
.net5以降の単体exeにした場合は 実行時には該当のディレクトリではなく別の場所で実行されるので exe自身の場所(location)を使ったプログラムが 予想外の挙動になりやすいから注意。
ありがとうございます。普通は入ってるんですね。 試してた環境の方が特異そうなので、大人しくインストールすることにします。
>>399 これでコンパイルしたら、dotpeekなどでソース見れなくなりますか?
>>204 の者です。無事にdxfできました。ありがとうございました。
そして、改良加えたいです。重なった図形と図形(矩形限定)を外径線だけにしたいです。添付の図形のオレンジの部分の線を無くしたい。
ネットで調べてRectangle.Intersect()で座標点を調べて2次元List配列に重なりグループとして図形座標点を振り分けました。2次元めの要素数が複数あれば重なり図形が存在するといった感じです。
ここから先が考えても全く分かりません。
座標点は左下が0を基準に矩形座標10,10-30,50 (左下点-右上点)の様な感じで横30縦50です。
Intersectの様な便利なコードとかあったりするんですか?
伝わらないかもしれませんが...
外径線というのがよく分からんが(外形線なら引っかかるけど…)
アウトラインが欲しいってことでいいのかな
GDI+ならGraphicsPathとAPI関数を使えば取れるみたいね
https://stackoverflow.com/questions/1592285/outline-a-path-with-gdi-in-net?msclkid=2e7df5e6b5a411ecb360e4889893bf26 GdipWindingModeOutlineした後PathPointsプロパティで頂点座標が取れる
System.Windows.Mediaなら(WPF用だけどそれ以外でも必要なDLLを参照すれば使える)
CombinedGeometryを使えば2つのRectangleGeometryの和集合ジオメトリを作れる
そのアウトラインはGetOutlinedPathGeometry()で取得できて
そのFiguresプロパティから頂点座標が取れる、ちょっと面倒だけど
>>401 >ここから先が考えても全く分かりません。
ここから先何するつもりなのかが分からんのでは誰もアドバイスしようがないんだが…
重なる2点の座標値は取れてるんだよな?
計算方法が分からんというのであれば、「ゲームプログラミング 当たり判定」とかでググれば初心者用の解説が沢山出てくるよ
3Dモデル? はじめに線の色のモデルを描画して 真っ白なモデルをテクスチャに描画して線の分だけ縮小して描画すると結果として枠線に見える
>>402 外枠?外形ですね。添付されてるサイトの図みたいな感じですね。ありがとうございます。
翻訳しても解読してみます。
>>392 4.5のDeveloper packはもう公開されてないよ。4.5.1ならまだ生き残ってるけど、サポート切れてからもう6年だからいつ消されてもおかしくない。
>>399 AoTは逆にデカくなる場合が多い。小さくするのはTrimmingね。
pointfへdecimal型の値を入れると少数点誤差するのって仕方ないんですかね?繰り上げ、繰り下げするしかないですか?
>>408 (single)float の誤差だからどうしようもないでしょ
https://dobon.net/vb/dotnet/beginner/floatingpointerror.html 小数(浮動小数点数型)の計算が思った結果にならない理由と解決法 Decimal型はいつ使うか?
pointFには表示の時の代入だけにして計算などの参照数値としてdecimal型でキープしたら
>>408 有効桁数何桁いるのよ?
自分の扱う数値の性質知ってれば、対処も判るでしょ
クラスメンバーはインスタンスメンバーとしてアクセスできないという認識です。 ですが、インスタンスのメソッドからであればクラスメンバーにアクセスできることが分かりました。 これはなぜですか?
あなたがメンバーと呼んでるものはフィールドと呼ぶべき おそらく int _a;のように宣言したものでしょう フィールドはインスタンスメンバとしてアクセスは可能。 だけどC#的にフィールドに直接アクセスするのはやめようねってことになってる。 大抵のフィールドはprivate宣言されてるからアクセスできないだけ
単にHogeクラス内ではHoge.もthis.も省略できるってのを混同してるだけな気がする class Hoge { public static readonly int A = 0; public void Piyo() { Console.WriteLine(A); // アクセスできる Hoge内ではHoge.は省略できる Console.WriteLine(Hoge.A); // アクセスできる Console.WriteLine(this.A); // エラー、アクセスできない } } var obj = new Hoge(); Console.WriteLine(Hoge.A); // アクセスできる Console.WriteLine(obj.A); // エラー、アクセスできない
412が言いたいのは class hoge{ private int v; public hoge(int v){ this.v=v; } public void add(hoge n){ this.v+=n.v; //nのprivateなvにアクセスしてる? } こういうことか?理由はしらんけど。
初心者にありがちな静動の区別がついてないやつじゃないか public static int A; ← これは実体なのでどこからでもすぐにアクセス可能 public int A; ← これは単なる設計図でしかなく実体ではないのでインスタンスという実体を通さないとアクセスできない
> public static int A; ← これは実体なのでどこからでもすぐにアクセス可能 これが成り立たない(アクセスできない)理由教えてくれって話だろ そんなもん。そうなってるからって覚えておけばいい。疑問に思うな
そもそもの意味が分かってないのかな staticとそうでないメンバーはアクセスの方法がそもそも違うよね 基本的にstaticなメンバー変数使ったりしないけど 良くあるケースはシングルトンでそのインスタンスは1個しか存在しないというケースで 自分のクラスで自分自身のインスタンスをstaticで保存しておくみたいな事はあるけどね
>>417 だから「実体じゃなくて単なる設計図だから」って言ってるやろ
COM+とかのCUnknownクラスの実装とか、親クラスが子クラスの数を知るために親クラスで静的変数でカウントしてる。 QueryInterfaceとかAddRefとかReleaseのあれ。
412です コードを貼ります。 同じiにアクセスするのに、MainメソッドではエラーになりますがTestMethodではコンパイルが通ります。 これはこういうものだと覚えるしかないですか? すみませんがご教示お願いします。 class Hoge { public static int i = 0; public void TestMethod() { Console.WriteLine(i); } static void Main(string[] args) { var obj = new Hoge(); Console.WriteLine(obj.i); //エラー obj.TestMethod(); //アクセスOK } }
理由はあるのかもしれないけど、そういうものと思うしかない c++だとどっちでもアクセスできるんだけどな
>>421 静的メンバーの本来のアクセス方法は『Hoge.i』なんだけど、
Hogeの中に書いてあるからHogeの部分を省略出来るってだけだよ
staticとインスタンスの概念がちゃんと理解できてない気がするなぁ ところでc#で静的メンバをクラスメンバって呼ぶ?
JavaとかVBとかPythonとかobj.iでも アクセスできる言語のほうが多いよね
Hogeクラス内からアクセスする時にstatic memberとinstance memberの両方をiのようにアクセスできる。 static memberならHoge.iの省略形。 instance memberならthis.iの省略形。 Hogeクラス内からでもthis.iとは書けない。
>>425 https://ufcpp.net/study/csharp/oo_static.html 静的メンバー(static member)==クラスメンバー
らしい
クラスメンバーという用語自体使わんから知らんかったが
省略形を理解していませんでした。 Hoge内のiはHoge.iの省略形なのですね。 ありがとうございました。
>>425 C#では使わないし言葉
一部のJavaの人が使ってる概念
クラスメソッドと言う言葉があるけどJavaの人たちは
インスタンスについてるんじゃなくてクラスそのものについてるメソッドだからとそう呼んでる
ところがクラスメンバーはタダのメンバーとstaticの場合両方ともあるから意味があいまい
メンバーはメソッド、フィールド、プロパティ、イベントや演算子とかその他もろもろのクラスの構成部品
変数、関数、setget この三つにしろ。よくわからないカタカナ消えろ
変数名を決める時のルールって決めてます?もしくは今までこう付けたとか何かにメモってたりします?
インスタンスに属するか、鋳型のクラスに属するかだから 静的メンバーでもクラスメンバーでも通じるかなってかんじだが、 静的メンバー系の言い方の方がより正確に伝わりやすいね。 クラスメンバーの言い方ぢとただのグローバル関数との対比でクラスメンバーとかメンバー関数とかいってるのかな? と思う可能性も大きいから、 前後の話中の文脈に依存するように思う。
>>435 C#ではあんまり気にせずキャメルケースだな
C++だとGoogleのコーディング規約に従ってる
アプリケーションの多重起動を抑制するのはよくありますが、同一のアプリケーションが既に起動中だった場合に起動中のアプリケーションを終了させて新たに起動したアプリケーションをアクティブにする方法ってあるでしょうか
>>439 Process.Kill利用して出来るけど普通は既に起動中の方をアクティブにして自身は即終了ってやり方が一般的だけどな
>>439 プロセス間通信で終了やアクティブにする独自コマンド発行する
>>440-441 ご回答ありがとうございます
対象のアプリケーションはスケジューラ的なもので自動起動→自動終了を行なっていて起動時のみ処理を走らせているので、なんらかのエラーで自動終了が正常に行われなかった時の対策として取り入れておこうかと思った次第です
>>437 >>438
質問が悪かったです。
同じ意味の変数名で、アプリごとで違った命名にしてしまう事があったりするのですがその辺は皆さんは統一性があるのかなと。
arrTtlCost、arrCostTtlとかdmlSPt、dmlSrtPtとか
iをidxでやったりとか...
ワイんとこはない 別に気にされない それはともかくハンガリアンはちょっと。。
VSの機能充実してるしおれも気にしたことないな
個人的にはC/C++のコードにありがちな変数名の過度な省略はやめてほしいと感じる
ManagerをManとかMgrにしたり
>>443 の例でもarrとかdmlとか意味調べようがないし困るわ
ルールはあった方がいい。どんなルールを採用するかは宗教論争だけどw 俺はハンガリアン大好き IDEが一文字目は大文字にしろみたいにうるさいのは.editorconfigで黙らせてる
ハンガリアン法はIDEがゴミだった時代の名残りだと思ってる そもそもblnHoge書いたところでなにがしたいかわからん Hogeable,Hoged,Hogeingとか書いた方がよっぽど有益
何示してるのか分からないっていうのは、ルール決めてないからだよ 単にハンガリアンにしますというのはルールなしと同じ ルールが整ってるハンガリアンだと他人のソースでもひと目でそれがなにか分かるから読むのが楽になる
昔はハンガリアン使ってたな 今のVSなら型すぐ判るし必要性を感じない
ハンガリアンはぶっちゃけ時代遅れだと思うし 変数名に型情報入れるなんて途中で型変えたらどうすんねんアホかと思うわ IDEが充実してない時代はよかったんだろうが今となってはデメリットが勝る
まあIDEが進化してるから変数名すぐに正しく変えれるけどな。 ヘボった言語じゃなければ。
win32api時代は使ってたけどC#になったら使わなくなったな 今なら変数名のリファクター(変更)何かVSやその他IDEでも普通に出来るし 適当に名前付けていても問題無いしなぁ
c++やるときは型によって処理が変わるのであったほうが便利
C#からPowserShellを実行して 登録済みのVPN一覧を取得しようとしています。 コマンド発行までは出来たのですが戻り値 Name ServerAddress の取得が出来ません。 どの様なコードを書けばよいでしょうか? using (var invoker = new RunspaceInvoke()) { var result = invoker.Invoke(source); } resultに値が入るハズなのですが・・・分かりません。 PowerShell上で実行するとVPN一覧が表示されています。
resultにプロパティがあるんじゃね? ウォッチで見てみたら。
>>456 resultってコレクションらしいけど、キャストが必要なんじゃない?
そもそも、PowerShellから戻り値としてちゃんと渡されてるの? PowerShell上でって標準出力に吐いているだけなんてオチじゃないよね?
>>459 〜
>>461 動的ビューというところに値がありました。
new Microsoft.CSharp.RuntimeBinder.DynamicMetaObjectProviderDebugView(result[0]).Items[24]
result[0]
BaseObject
ImmediateBaseObject
Members
Methods
Properties
TypeNames
本来であれば、この中のどこかに入ると思うのですが見つかりません。
因みにC#からPowerShellコマンドとしてこれを発行しています。 Get-VpnConnection
>>461 ありがとうございます!取れました!!!!
ボケ防止にC#を再開したいのですがボケ症状の無限リープに。 何が問題なのかわからない痴呆状態に。。 do { text = text.Replace("\n\n", "\n"); text = text.Replace(" ", " "); } while (text.IndexOf("\n\n") != -1 || text.IndexOf(" ") != -1);
こう書いたら抜けたからdo-whileがそういう仕様なのかな。 int i1; int i2; do { text = text.Replace("\n\n", "\n"); text = text.Replace(" ", " "); i1 =text.IndexOf("\n\n") ; i2 = text.IndexOf(" "); } while (i1 != -1 ||i2 != -1);
do~whileで回さなくてもReplaceだけでいいでしょ
あれ、やっぱりだめだ。 textの内容によってはi2が16000以上の数字のまま無限ループになる。 どうして? int i1; int i2; do { text = text.Replace("\n\n", "\n"); text = text.Replace(" ", " "); i1 = text.IndexOf("\n\n"); i2 = text.IndexOf(" "); } while (i1 != -1 || i2 != -1);
i2がってことはindexofの中のスペースがひとつなんじゃない? indexofでやるのは中サーチしてで時間かかるから、length変化あるかのほうがいい
charに変換すると\0になるからどうやらこれが「 」にヒットしてしまうらしい? とりあえず棚上げして他の場所を弄る事にします。
"\n\n\n"が生き残るからループは必須 なにが起こってるか知りたいならtext内容の16進ダンプをループ内で出力しなよ VisualStudioのブレークポインタ貼るだけでもいいし
>>469 再現しないし
>>471 の理屈もわからないけどdo whileのその形じゃないとだめなの?
https://dotnetfiddle.net/wsvKwq あと5chでは半角スペース連続は書き換えられるから別の文字をサンプルにするか
>>1 のコード書き込みサイトを利用してください
>>466 > text = text.Replace(" ", " ");
> text.IndexOf(" ") != -1
ここの処理が意味わからん
改行と同じように半角スペース2個を1個にして条件を変更するのか
半角スペースそのものを別のものに変えたいのか
ミス
>>649 だけが
> text = text.Replace(" ", " ");
半角スペース1つを1つに変更してる、だった
" " ←スペース2つ " " ←スペース1つ 5chだからスペース消されるだけだろ
フォームアプリ作成が主体として、GW本でも読もうと思うんだけどおすすめの本ありますか?
>>484 作りたいアプリを考えて実装しながら勉強が捗る
以下の例のように、プログラムに間違いがなければ絶対に到達しない箇所で例外を投げる場合、 どの例外(InvalidOperationException とか InvalidProgramException とか)を 選ぶべきか、正解のようなものはありますか? また、特に正解がなければ、皆さんのならどうするかを教えていただけると嬉しいです。 どうぞよろしくお願いいたします。 public static string GuusuuKisuu(int x) { int y = x & 1; // y は 0 か 1 にしかならない…はず switch (y) { case 0: return "偶数だよ"; case 1: return "奇数だよ"; default: throw new Exception("プログラムが間違ってるから直してね"); } }
そもそも投げない デバッグ目的なら例外じゃなくてその時点でメッセージボックス使って表示させるし 例外の場合、投げた例外メッセージが必ずしもユーザ(この場合はデバッグしている人)に届くとは限らないと思うし
そもそもswitchの必要ある?三項演算子で十分では
いやwそこは例と言っているから重要ではない気がするがw 例えが悪いってのはわかるけどさw
絶対に到達しないって判りきってるなら、別にロジック入れんでいいんじゃないの? その例だとdefaultを奇数だよにしてもええし
正解はわからんけど俺ならException継承してそれ専用のクラス作るな ぶっちゃけ既存のほにゃらかExceptionは使い所合ってるかよく分からんもの多くて困ることあるし
この二行だな debug.assert(false); throw new exception();
>>494 エスパーじゃないし、知らんがな
> また、特に正解がなければ、皆さんのならどうするかを教えていただけると嬉しいです。
て書いてあるし、ワイならこうするっての書いたから別にええやろ
上の例のようにわかりきっているコードはまあそうなんだけど“例”と言うようにわかりやすく示しているに過ぎず 極論を言えば、自分で見返してみても何このカオスな複雑怪奇でスパゲッティなコードがあってfuncの戻り値(Result)が0〜10の偶数値のみのはずだけど funcが呼び出すfunc1からfunc10のどこかに不具合があって負数や奇数、または11以上がResultに入ってしまう可能性を否定することができない場合 とか
funcXメソッドから呼ばれているメソッドはツリー状になっており そのメソッド総数は2586個で 全部で12566個の例外を発生させうる すごいでしょ?
たくさんのアドバイスどうもありがとうございます。 あまり良い例が用意できず申し訳ありません。
申し訳ありません。続きを書き込みたいのですが、 「レスアンカーがおかしいです」と言うエラーが出てしまっています。
488 様 489 様 491 様 確かにおっしゃり通りですね。 ただ、状況によってはやはり例外を投げたくなることもありまして、 それをどうやって説明しようかと考えていたところ 498 様がとてもわかり易く まとめてくださったので、よければそちらを見ていただけると嬉しいです。 492 様 なるほど! つまり、おそらく初めからこういう目的で用意されている例外はないだろうということですね。 最初は InvalidProgramException が丁度いいかと考えていたのですが、 詳しいクラスの説明を読むとどうやら別の目的で使われる例外のようですし、 おっしゃるとおり、自分でクラスを作るのが一番のような気がしてきました。 493 様 アドバイスどうもありがとうございます。これも良いアイディアだと感じました。 意味的には一行目だけで十分だけれど、 それだけではコンパイルが通らないから二行目も書こうということですよね。 NotNullIfNotNullAttribute ならぬ ThrowExceptionIfFalseAttribute みたいなものが Debug.Assert に付けられていて二行目がなくてもコンパイルできたらいいのにな、 なんて妄想してしまいました。
エラーの原因がよくわからなかったので、 やむを得ずレスアンカーを使うのを諦めました。 読みにくくて申し訳ありません。
まあこの手の話はあちらでも挙げられてて結局しっくりくる例外はないってことになってる
https://stackoverflow.com/questions/3313906/which-exception-should-i-throw-to-signal-an-internal-error-in-my-program MS的には System.Diagnostics.Debug.Fail() 使えやってことなんだろうね
どうしても例外上げるなら自前でLogicErrorExceptionとかを作るのが良いと思う
MS自身のコードだと、throw AssertUtil.Unreachable; みたいなのはよくあるよ Unreachable はプロパティで、UnreachableException みたいなinternalなカスタム例外をnewして返してるだけ
一般に、アサーション目的で投げる例外は誤ってキャッチされる可能性の低い型であれば何でもよい
その意味では
>>505 のようにinternalな例外を定義して使うのが望ましいだろうね
必ずしも
>>505 の例のようにわざわざプロパティを定義する必要はないけど、あえてそうする理由としては
・いちいち throw new UnreachableException("No way!"); みたいにメッセージ書くのは面倒
・かといって空にすると、チームによっては静的チェックで例外にはメッセージを設定しろとか言われたりして面倒
といったところだろう
>>504 >>505 ありがとうございます。とても勉強になります。
やはり、例外を使いたいなら自分で作る、という方針で考えたいと思います。
>>501 「レスアンカーがおかしいです」は4つ以上のアンカーがあると出るみたい
> 488 様 489 様 491 様
みたいなのは
≫488-489,491
のように纏めたら1アンカーと解釈されたりするので工夫したらなんとかなることもあるよ
>>484 ない、っちゅうか買う必要ないだろ
今の時代ググってしらべりゃC#はほとんど見つかる
俺がプログラム関係の本買ったのははるか昔Win95の時代にC++のMSDN本2冊合わせて厚さ10cmくらいあったような
それ以降1冊も買ってない
俺はこの類で絶対に到達しないdefaultに突入してくる不具合踏んだことあるわ。 ハードの電源ラインに特定の時間帯だけノイズはいってた。
>>510 それはc#での話なのか?
cで低レベル制御とかならあり得るかもしれんが
ハード層が高度に抽象化されてる環境で起こるとは思えんが
絶対の定義によるが、普通にあるよ 俺が遭遇したのだと電源電圧下がってUSB機器がリセットされる環境 USBもの使ってる途中で逝くものだから絶対に入らないとこに入った
>>508 ご親切にどうもありがとうございます!
…この書き込みはエラーにならないと嬉しいなあ。
>>510-512 勉強になります。
私がやってる程度のことではハードの影響を受けることはあまりなさそうですが、
私の書いたコードなら私の脳みその影響はしっかり受けますし、
慎重になるに越したことはないですね。
今回の話とは関係ないですが、
以前 C# のパターンマッチングで x is not 1 or 2 が !(x == 1 || x == 2) とは
別の意味になることに気付かずにしばらく悩み続けて、
自分の脳みそのあてにならなさにショックを覚えました。
>>511 俺もそう思ったんだけど、どうしてもわからなくて、現場に出張って異常データが生まれるまでずっと立たせてもらってて尻尾をつかんだんよ。
他の機械の動作音を「なんだこれうっせえ…」って思ったらデータ壊れてた。
で、UnreachableをAssertしたら発見できた感じ。
あいたみみきたたみちむあたたおあたまたたあまちたたたいたあいたあたたたつたなあたにとあああちきのつああああいあかおたあたあなまあおかたたたたあたななむさああ
俺も別の機器近くにあると仕様書にないノイズ乗った想定外のデータ来てたとかあったな
やっぱみんなあるんだなぁ。
>>515 これスマン、ケータイ勝手に動いてた。
組込機器開発してたらUnreachableは(可能ならログ採って)リスタートとかするのが普通だと思ってたが… 変なデータで処理続けるとか怖すぎる
普通って何さ。 要件次第。仕様次第。 きめつけはいくない
話変わるけど、犬を抱いて散歩してる人って何が目的なの?犬も迷惑だと思うんだけど。
>>509 Web にはゴミ情報も多いんで、ある程度まとまっている本は有用だと思うよ。
>>522 小型犬は途中で疲れちゃって歩けなくなるので
>>401 助けて下さい。考えては見たのですが沼にハマってます。
結果として重なってる矩形同士のアウトライン?外形線分の始点、終点座標にしてdxfにしたいんですが、2個の矩形の場合は2個比較しかないので出来ますが、複数ある場合の比較の仕方というかループの書き方が分かりません。再帰処理とか無限ループたるものになるんですかね?
矩形の斜めは存在しない左下0.0の点を基準に上と右に伸びる矩形のみで形成されたもので限定的なんですが...
全ての□を4本の線に分解して、線と線の交点を求めて交点があったら1本の線を2本に分解 これで多量の線ができるから、その中点に対して□の中に含まれるかをチェックして含まれるならその線は削除
>>403 でもアドバイスしたけど その手の処理は主にゲームプログラミングで必須の基礎技術だから 「衝突判定 総当り」とかで検索すれば類似コード腐るほど出てくる 例えばこういうコード var list = new List<int> { 1, 2, 3 }; for(int i = 0; i < list.Count; i++) for(int j = i + 1; j < list.Count; j++) Unko(list[i], list[j]); // なんか処理 ビット演算子と論理演算子は別物という認識だったのですが、オーバーロードについてはビット演算子(&、|)をオーバーロードすれば論理演算子(&&、||)も有効になるとのことでした この2つは内部的には同じようなことをやっているんでしょうか?
ビット演算子の意味が分かってないという事なのかw そもそもオーバーロードする意味ある?
どうもありがとうございました ビット演算子の意味は分かっています オーバーロードする意味があるかは分かりませんが、理屈を理解することは大切だと思っています
>オーバーロードについてはビット演算子(&、|)をオーバーロードすれば論理演算子(&&、||)も有効になるとのことでした これ、どこの情報なんだろう
そもそも c#的には(&、|)がビット演算子で、(&&、||)が論理演算子だって理解は正しいのか? ビット演算と論理演算は別物だが、ビット演算を論理演算とみなせる理由とか理解してなさそう
>>530 の言語仕様だと、&や|は logical operator、&&や||は conditional logical operator となってるね
日本の書籍で条件論理演算子とか書いてるのはあまり見たことないけど、分かりやすくて正しい呼び方だと思う
つまり、(&、|)は論理演算子だってことだな ビット演算子の定義はどうなってるのか知らんが &&とかはショートサーキット演算(子)とか呼ばれることが多い気がする まあ意味的には条件とか言われるよりわかりやすい気はする
&はビット演算に使えるからビット演算子でもあってるし、論理演算子でもあってる &&はビット演算には使わないからビット演算子ではない。論理演算子ではある
翻訳の際の演算子の優先順位がネックだったりして、こういう事になってんのかね?
>>530 知りませんでした。面白いですね。
仮に int.false(x) が x == 0, そして int.true(x) が x == -1 と定められていれば、
0 && ... や -1 || ... の ... の部分は評価されないということですよね?
つまり、T.true(x) と !T.false(x) が同じにはならないように
T.true と T.false を定めるのが適切なケースもある、と。
ラベル印刷機にむけて印刷したいです。 元はエクセルシートに文字を入れて印刷してるんですが手間なんでコードで直印刷出来たらと思います。 エクセル3行分程度のものですがどこか参考になるサイト等やあればお願いします。
あるフォルダ配下の使用サイズを取得したいのですが、 C/C++でやる場合はFindFirstFile/Nextを使いますが、 C#でやる場合でpinvokeより良い方法がありましたら教えて下さい
途中で送っちまった System.IO.Directoryでファイル列挙して、FileInfoで個別にサイズ取ればいいと思う
System.IO.DirectoryInfo.GetFilesでFileInfoの配列取れるから、こっちの方がいいかもしれない
System.IO.DirectoryInfo.GetFiles()/GetDirectories()は大量にファイルがある場合は時間がかかるから .Net4以降で追加されたSystem.IO.DirectoryInfo.EnumerateFiles()/EnumerateDirectories()を推奨
語弊があるな 後者でもトータルで時間がかかるのは変わらないけど 1エントリ毎に処理が戻ってくるので中断出来たり使い勝手が良い
Rxの質問なんですが var s = new Subject<int>(); s.OnNext(1); s.OnCompleted(); s.OnNext(2); s.Subscribe( x => { Console.WriteLine($"{x} is recieved"); }, (Exception ex) => { Console.WriteLine($"{ex.Message}"); }, () => { Console.WriteLine($"done!"); } ); としたときに、OnNext(1)もOnNext(2)も表示されないのはあとからSubscribeしたからと思ってるのですが OnComplete時のメッセージが表示されるのはなぜなのでしょうか?
Ruby でも、WIN32OLE, COM で、Office, iTunes, Illustrator や、WMI, WshShell を使えるみたい def print_folder_size( folder_obj ) hr = "-" * 30 puts hr, File.expand_path( folder_obj.path ) # \ を、/ に変換する puts "#{ folder_obj.name } : #{ folder_obj.size }" end require 'win32ole' fso = WIN32OLE.new( 'Scripting.FileSystemObject' ) p WIN32OLE.codepage #=> 65001, UTF-8 folders = [ "C:/Users/Owner/Documents/abc", "C:/Users/Owner/Documents/xyz" ] folders.each do |folder| folder_obj = fso.GetFolder( folder ) print_folder_size( folder_obj ) end
PrintPreviewControlとPrintDocumentを使っているんだけど PrintPreviewControlでプレビューされている結果をそのまま印刷できる事って出来ないのか? PrintDocumentでの処理がプレビューと印刷でそれぞれ処理が走ってしまう…
処理でbitmapを作って、そのbitmapだけを使ってプレビューや印刷?
見たいな感じですね print document内でGraphicsを使って座標を指定して 文字を書いたり線を引いたりしてます
DataGridViewでDataTableに割り当てていない時にも空行があるのですが これなんとかならいないでしょうか? DataSourceに指定したらレコードが表示される様にしたいです。
AllowUserToAddRows=false にすれば出ないけど、そういう話ではなく?
visual Studioの無料版ダウンロードして遊んでるんですが、PointF[]の中に入ってるXの値とYの値をソートしたいんですが、Xをソートして次にYをソートしたいです。
>>564 あなたが何をしたいのか理解不能です
もう一度入力してください
どうせX優先でソートしたいってことだろ。この程度理解してやれよ Array.Sort(aa, (a, b) => { if (a.X == b.X) return a.Y - b.Y; return a.X - b.X; }); みたいな感じにすればいい。ただしfloatだからこのままだとエラーになる +1 -1 0 をreturnするように
PointFでそれはおかしいだろ 浮動小数点数同士を単純に==で比較するのは殆どの場合において誤り
==だと例えば座標(1,1)と(1,2)のどっちが先になるか分からない
誤差が出るような値の比較は両辺を正規化しないとダメ
>>569 昇順だと仮定して(1,2),(1,1)の順になる理由をあげてくれ
前提が示されていない以上、別にそこまで考慮する必要なくね 丸めが必要なら、前処理しておけばいい
>>570 ここで言ってる「正規化」って浮動小数表現上の正規化/非正規化とは別だよな。
ふつう高級言語レベルで意識する必要はないと思うが。
>>571 もちろんジャスト(1,2)と(1,1)だったら逆転しないよ・・・
(1-δ,2),(1+δ,1)のように誤差があるとき逆転する
つかLinqで .OrderBy(p => p.X).ThenBy(p => p.Y) で良いんじゃないか
>>574 それは1じゃないものを1と書くからそう見えるだけで
1-δ,<1+δなのだから
実際には逆転などしていないと思うんだがな
floatの話なんだから後出しでもなんでもなく当たり前じゃん。そのくらい察してくれよ
>>578 で、それの何がまずいんだ?
表示の話とごっちゃにしてるだけだろ
誤差だろうがなんだろうが厳密なソートなら==で充分だろ 質問者がどこまで考えてるかわかんねーのにお前らが推測でグダグダ言ってたって不毛なだけ
ソートの話で炎上してるみたいだけどさ そうっとしておいてやれよ
>>583 それは要件次第だから判断できるのは質問者だけ
>>583 そこに範囲を持たせてしまうと順序が逆転する可能性があるから正しいソートにならないだろ。
まーだやってんのか 質問者の聞いてるのはソートの仕方だけで、どういうデータを扱うかすら提示されてないんだから そこに誤差ガー範囲ガーだの考慮する必要はない
ソートの話で炎上してるみたいだけどさ そおっとしておいてやれよ
>>527 >>528 無事GW中に出来ました!感謝です。ありがとうございます。
VisualStudio 2019の<Nullable>enable</Nullable> 環境で、変数のツールチップにString型の時だけ「ここではxxxはnullではありません」と表示されるんだけど
これって最新の2022では直っていたりしますか。
おかしいのはツールチップだけで、nullableの判定は問題ない感じ。
longとかDateTimeとか色々試したけど、String型だけで表示された。なんで。
え、値型ってそういう事だったの と思って以下のコードで確認したら==null がtrueになっていました int? a = null; if(a == null) { Debug.Print($"a is null"); // こっちになる } else { Debug.Print($"a=[{a}]"); } int? がnullになっているように見えるのですが、もう少しアドバイスを頂けますでしょうか。
よくそんな細かいところに気づいたな vs2022(preview)でもツールチップ表示同じ int?はnullになるよ。?ついてたらnull許容型だから入らなかったら困る string? a = "nullでなく文字列"; string? t(string? v) => v; var b = t(a); var _ = b.GetType(); ついでにこんなのだとbは絶対にnullにならないけど緑の波線つく その程度の一次的な解析しかしてない機能だから不具合を気にしたら負けだよ
ありがとうございます。ツールチップだからそんなものか。 と、思ったらロジックでも不明点がありました。 以下のコードでIsIntがエラーになるのですが、これもそういうものなのでしょうか。 if文で非nullチェックをしても、型としてはint?だから IsInt(int v) は呼べない。という事は分かるのですが、 string?はifで非nullチェックをすると string 扱いになるので挙動が違うのですが、これもそういうものなのでしょうか。 void IsString(string v) { }; void IsInt(int v) { }; string? a = null; if(a!=null){ IsString(a); } int? b = null; if(b!=null){ IsInt(b); // 引数 1: は 'int?' から 'int' へ変換することはできません のエラーが出る。 } ↑両方通るか、両方エラーが出るならわかるけど 値型だけエラーが出る?
int?の正体はNullable<int>という値型 構造体はnullにはならない まるでnullのように見せかけているだけ int?x=null; x.ToString(); これは一見するとヌルポだがnullじゃないのでこれは通る nullにならない値型なのでいちいちこの場所ではnullになりませんとは言わない x.GetType(); はヌルポになる なぜか? GetTypeの呼び出しはobjectへのbox化のあとに行われる nullのように見えているだけのxはbox化されて本物のnullになる GetTypeを呼んでるところだけ本物のnullになってるのでIDEは正確に警告を出す
int?は値型なのでnullにはならない なのでいくらnullチェックをしても状況が変わるわけがない nullにならないint?のnullチェックをしたってそれはint?のままだ Nullable<int>はNullable<int>のままだ intからint?は暗黙に変換できる int?からintは暗黙に変換できない そういうことになっている だからIsInt(x)は呼び出せない 8.0で追加された機能の名称にnull許容参照型って書いてあるだろう Nullable<>は参照型ではなく値型だ こいつは2.0から存在する 構文が似ているが別の体系の機能なのだ
>>596 >int?の正体はNullable<int>という値型
>>597 >8.0で追加された機能の名称にnull許容参照型って書いてあるだろう
>Nullable<>は参照型ではなく値型だ
>こいつは2.0から存在する
>構文が似ているが別の体系の機能なのだ
混乱してきた
int?の正体はNullable<int>という値型でNullable<>は2.0から存在するが
8.0のint?は参照型で別の体系の機能なのだ???
キーボードを頭で叩くのはあなたくらいのものですよ、ジョン
>>599 8.0から入ったのは参照型のnull許容
int?(値型+?)は「null許容値型」で昔からあるもの
int?と書くとNullable<int>という、int型とは違う型になる
そしてNullable<int>は値型なのでnullは入らない
なので int? hoge = null; はhoge自体がnullになるわけじゃなくて hoge.HasValue = false という意味だし
if(a == null) は if(!a.HasValue) という意味になる
これは8.0でも変わってないよ
8.0から追加された<Nullable>enable</Nullable>環境で書けるような
string?(参照型+?)は「null許容参照型」になる
といってもstringとstring?は型としては全く同じもので、?付きは内部で「nullを入れてもOK」という注釈が付くところが新機能
(string? fuga = null; はfuga自体にnullが入る)
あと
>>591 の件は確かにnull許容参照型(string?とか)とnull許容値型(int?とか)でツールチップの中身変わるねえ
Visual Studio 2022でも同じ表示になってる
上にあるようにint?自体はnullにならないからなんだろうけど…
int?のようなnull許容値型でもstring?と同じように
「ここではnullではありません / nullの可能性があります」のツールチップ出たほうが親切な気はするけど、現状の仕様かな
>>602-603 要するに元々ある微妙な機能の仲間に8.0で新規に参照型が加わりましたってことね
解説ありがとう
むしろNull非許容の参照型が追加されたと考えた方が良くね?
どうでもいい機能たくさん付ける割には 理想の設計書 →理想のソースコード が見えない クソな単体テスト機能をIDEに実装したが じゃあ 理想の設計書 →理想のソースコード →理想の単体テスト はどういう想定でオメーは どの範囲をカバーするんだよ ってのも見えない 各リリースで追加してる機能に 何の思想も感じない ごった煮にした挙げ句 上記パラダイムに結論を出した 言語が出てきたら一瞬で消えそう
Struct? → System.Nullable<Struct> Class? → [System.Runtime.CompilerServices.NullableAttribute(2)] Class のように完全な別物を同じような書き方で表現している classのほうはnullチェックをしたかをコンパイラが追いかけるためだけの後付け機能だからstructとは若干挙動が違う
どんどんシンタックスシュガー系の機能が増えてイミフになっていく
1つの処理に複数の表現方法がありすぎるのもクソ化に拍車をかけている
と思うだろ? 今ライブラリに対してとてつもないことが進行中だよ
var middle = array[1..^1]; なんて使ってる人いるのか?
GetPixel/SetPixelが1万倍速くなるみたいなライブラリの変更をお願いします vsyncを簡単に待てるとか、キャプチャデバイスから簡単に画像取れるとかもください
>>617 描画周り強化なら、monogameはどう?
最近趣味程度でC#をいじりだしたガチの入門者なんですが PCで3秒ごとにコピペ貼り付けを自動で繰り返すアプリを作ったのですがそれをAndroidでも使えるようにしたいです どうすればいいでしょうか?
アプリってレベルでもない…20行程度で作れるやつなんですが
>>625 どうしてもC#が使いたいなら、XamarinやMAUIやUnoなどのプラットフォームを使う。ただし人脈が無いと無理な場合もある。
20行ならjavaかkotlinで作ればいいじゃん わざわざc#を無理やりAndroidで動かそうとするな
>>625 前にも同じようなレス見たな…
5chあらし目的ならやめとけと書いたけど
>>628 スマホ用のアプリはjavaかkotlinって言語じゃないと出来ないんですね
そんなことも言われなきゃ分からないレベルでしかプログラミングしたこと無いんですが・・
ツールはSendKeysを2つ使っただけの本当に簡易的なもんなんだけど言語変えて直ぐに出来るかな
>>630 調べればできるからやれ
プログラミングやったことないなんて言い訳なんかどうでもいい
androidってそもそも他のアプリにキー送信できんやろ
>>632 そのへんもやってみればわかること
そういうのめっちゃ回避してキーを別アプリに送ろうとしたけど
やった次の日に対策されてたから
監視でもしてんのかってぐらい見張ってるのがAndroid
おーい!見てるか? やってるやつ見つけてやったからな!
>>630 クロスプラットフォームなライブラリもあるけど、結局そのOS毎の独自処理をラップしてるだけだから
OS毎の知識は必要になる
本当にガチ初心者なら、多分上手く扱えないと思う
HIDとして振舞えば何でもできる 詳細は自分で考えようね
スマホでわかりやすいアプリなどあったら教えて欲しいですガチの初心者ですお願いします
MemoryStreamの中身を一括でファイルに保存したいのですが、 何を使えばいいですか? 一旦byte配列に読んでFileStreamに渡すのも無駄な気がします
memstream.CopyTo(fstream);
ありがとうございます、うまくいきました 結局内部で一旦バッファにコピーしてるみたいですね
つーかファイルなんてFILE_FLAG_NO_BUFFERINGで開いてないとそこでもバッファリングされるのにな 何重バッファする気だよ
MemoryStream.GetBufferして、FileWriteAllBytesでいいのでは
MemoryStream.GetBufferを使う場合は長さはそれで受け取ったバイト配列の長さではなくMemoryStream.Lengthを使うこと そもそも.NETCore系統だとGetBuffer使えなかった記憶あるけど
普通に使える 最近バイナリデータ書き換えプログラムに使ったばっかだし
書き出しについては適当に言ったので、MemoryStream.Length 使うのが正しいってのはそっちが合ってる
明日からgmailがOAuthに非対応のメールソフトからのアクセスを拒否るそうなんで 何か話題でてるかな~と思ったけど、上の方でちょっと触れてる人がいる程度だった 1年前に作って大活躍してるgmail受信用ソフトに手入れないといけないんで頑張ってきます Mailkitというライブラリがよさそうなので試してみようかと。
Mailkitは送信用で受信用ではなかったのでした・・・今気づいた・・・
いや、ちがう・・・・ この辺かなり奥が深いことに気づきましたよ 勉強してきます
OAuthとはなんぞやから始まってなんとなく理解した上で Google.Apis.Gmail.v1 を入れてみた トークンゲットして送信するところまででけた 受信はまた今度・・ アプリパスワードも一応取得して見たけど、よく分かってないです mailkitでアプリパスワードを使った送信コードをみたんですけど これはOAuth導入後も使えるのか・・・?と疑問に思うところであります とりあえず今作ってるのは受信専用のソフトなんで受信にたどり着きたい
日記帳として使うんならNGするからコテハン名乗ってくれ
C++ でいうところの typedef unsigned int Uint32; これをC#で実現できないか試行錯誤してます namespase hogeType { using Uint16 = System.UInt16; //他省略 } として利用したいソースで using hogeType; として使えるんじゃないかと期待していたのですがダメでした 「型を使いたいソースの上の方にusingエイリアスで定義する」以外では無理なんでしょうか?
うん、無理 C# 10ならglobal usingでプロジェクト全体に利かすことはできるけど嫌がる人も多そうだね
>>671 ありがとうございます
やっぱり無理ですかー…
>>672 そんな感じです
ちょっとした手伝いなので詳細は聞けてないですが
microsoft extensions logging loggerにあんまこだわりない
log4net開発止まってまた再開してなかったけ また止まったの?
visual studio 2022 デバッグ結果がコマンドプロンプトに表示されなくなりました 助けて
具体的なコードとかプロンプトは表示されるのかとか 詳細書かないやつって聞く気あんの? VS再インスコでもしてろ
質問者あるある 1.エラーメッセージを描かない(読まない) 2.何もやってないのに可笑しくなりました(やってるよ) 3.何がしたいのかどうなって欲しいのかを言わない
お前には聴いてない ごめんちょっと何言ってるか判らない 判らないならレスしないでくださいうざいだけです
まあ、なんか体調悪いですって聞いただけで症状分かる医者はおらんわな
List<string> test = new List<string>(); test.add("N0001"); test.add("N0002"); test.add("P0012"); testから"N0002"を高速に探す方法ってどんなのがあるでしょうか? 拡張for文で回して探すよりテクニカルな方法がありそうな気がするので。。。
Find()でも使えば? それともZDDを実装するとか
>>687 HashSet<string>ではいかんの?
そもそも探す前に探す内容が判ってしまってる条件設定が可笑しい
この条件だと、forループより早く探し出すのは困難だろう
Findが速いらしいので下記のようにプログラムしました。 実測してfor文との速さを比べてみたいと思います。 public class TestItem { public string x; public string y; } private static void Test() { var list = new List<TestItem>(); list.Add(new TestItem() { x = "a", y = "a1" }); list.Add(new TestItem() { x = "b", y = "b1" }); list.Add(new TestItem() { x = "c", y = "c1" }); string n = string.Empty; list.Find(item => { if (item.x == "b") { n = item.y; return true; } return false; }); Console.WriteLine(n); }
現代的なCPUで実感できる差を出すにはNをいくつに設定すればよいか みたいな
さらに調べたらDictionaryが検索最強のようなので、Dictionaryを 使おうと思います。 var table = new Dictionary<string, string> { { "n01" , "a" }, { "n02" , "b" }, { "n03" , "c" }, { "n04" , "d" }, { "n05" , "e" }, { "n06" , "f" }, }; var result2 = ""; table.TryGetValue("n04", out result2); Console.WriteLine(result2);
質問です ある一つのテキストファイルを複数プロセスから読み書きすることがある場合、自プロセスからファイルオープンしたいときに他のプロセスがファイルを掴んでることを考慮するとどういう処理を記述しますか? エラー処理ではなく必ず書き込み等は実行したいです よろしくお願いします
精々書き込み禁止になってるって警告出すか、書き込み何度かリトライするくらいしか出来んよ ファイルハンドル掴んでる奴が離さないとどうにもならん
書き込みと読み込みを同時にやりたいなら、ファイルやめてDBにでもした方がいいと思う
>>700-702 ありがとうございます
DBであればよかったんですけどね。。
セマフォってプロセス間もロックかけてくれるんですかね?試して確認してみます
>>702 自分で作ってないプログラムがファイル掴んだケースは対処出来ないと思う
セマフォというかファイルを管理するサーバと読み書きをサーバに要求するクライアントの関係にすれば簡単だよ セマフォみたいなプロセス同士でリソースを取り合う仕組みは今風の書き方ではない 対してサバクラ方式はいつまでも色褪せない
プロセス間だのスレッド間だのそんなのが山ほど出てくるシステムの案件に関わってる俺にとってタイムリーな話題 セマフォだの共有メモリだの初めていじるわそんなん……ってなってた。そして古い書き方という情報はやっぱりなってなった 2015年に作り始めたシステムがvisual studio2010にハンガリアン記法だから全体的になんかおかしいなとは思ってたんだが
>>699 細かい要件によって正解も変わるのでそれだけじゃわからん
複数のプロセスから一つのファイルを読み書きするのはやめろ サービス作ってそいつにメッセージ投げて読み書きを任せろ
ファイルロックが使えるケースもあるけどバグ踏むと惨事
>>711 それが理想なんだけど、そのサービスを常駐(起動)させとかないといけないんだよね?
>>711 まあこれがかなり現実的だな
読み込みは溜めたデータそのまま返せばいいし
書き込みは受け取ったデータをキュー管理して書いていけばいいと思う
>>709 どこの俺社環だよ
誰かが流石に今に合わせようと言い出しても、今までこうだったしの一言で押さえつけられるという
>>713 その通りだけど、C#はサービスを作るのは割と簡単
サービスの起動などはOSに任せられるし
結局実装したとき担当者が詰められるんたから逃げるが吉
ググったら記事がでてきてほーんセマフォ+共有メモリは古めでクライアントサーバー型がいいんだなー って読んだあとにそれが2007年の記事だったと気づいて頭を抱えた
クラサバ間の通信はどうしたらいいんだい パイプかい
ポインタが分かりません。メモリのメモリって事で合ってますか?
Webをポインタで検索したら幾らでも説明出てくるだろ それ読んで判らんなら、5chの短い文での説明聞いても判らん
ポインタはPL/Iでいうところのbased addrだね
>>722 ポインタはメモリのアドレスだよ
アドレスとは番地、つまりメモリの先頭から付いている番号だよ
ポインタに入れるものはアドレスだが、=アドレスという訳ではないな 指定したデータ型の変数のあるアドレス pointerという名前が、指す物という意味で、変数のある場所を指すのに使う まあ、C#で普通にプログラミングしてる分には使わん
unsafe+ポインタは画像処理とかで出てくるよね?
refやSpan<T>で代用可能な場面が多いし、本当に速い処理が必要なら OpenCVみたいにゴリゴリに最適化された既存のライブラリ使った方が速い事が多い
unsafeどころかIntPtrやそれ相当なしに ちょっと凝ったことなんかC#でできないから 理解してないと少し踏み込むだけでお手上げになるのでは。
知識として知っていた方がいい事もあるけど、 全てのC#開発者が知らないといけないかというと、そうでもないと思う 言語間連携とかやるなら避けて通れない道ではある
ポインターは指し示すもの 差し棒 レーザーポインターみたいなもの これはこのアドレス(何番地)にありますってもの 変数のなかにアドレスが入ってるもの
画像処理アプリ作成したときにunsafeにしたが爆速だった
>>722 こいつはCとC#の区別が付いていない馬鹿なだけだろ
C#のポインタは素直じゃないのでポインタの勉強には向いてない ポインタ周りで事故ったりする経験も含めてC言語でいい
CといえばC#の案件って、お前C言語やC++と勘違いしてない?ってコードとの遭遇率が異様に高い。 foreach1つvar一つ出てこない命名はハンガリアン記法みたいな。 名前のせいなのかねぇ。それとも似てると言われるjavaの現場なんかもこんなんなんだろうか
インスタンスフィールド一切ないくせにインスタンスメソッドしか定義してなくてデバイスID入力させるライブラリ許さねえ
>>739 それもあるかもしれないけど、単に知らないだけだったりして…
C言語のコーディング規約には慣れているけどC#は知らないとか
単に基礎部分は理解しているだけ
>>739 > foreach1つvar一つ出てこない
CはともかくC++なら範囲forやautoあるからC++みたいに見えるなら単におまえの知識も古いだけだろ
>>743 いや流石にその知識はある
というかC++の案件でせめてC++11使おうよ……って嘆くことが多い
C++なのにCと大差ないの書く人も大量にいるよね
そのイメージだった
>>739 マイグレーション多いんじゃない?
俺もわざわざforをforeachに直そうなんて欠片も思わんかった
後でチェックしにくいし
できるだけ機械的にやりたいってのもある
みんな忙しいのに得意気にvarで書き直してバグってたら末代までの恥晒しじゃん
>>748 その程度のミスが語り継がれる訳ないだろw
末代までの恥晒しって言いたいだけだね
本当にASP.NET Coreって使ってる人いるの? 書籍もないし誰の話題にも乗らない
俺はWebセキュリティーに詳しくなく、JavaScript等を使うと危ないから安全のためと思って使ってるよ まあほとんど誰も使ってないんじゃないの
foreach使わないのはforで回す方が高速だからじゃ無い?
俺はWebセキュリティーに詳しくなく、JavaScript等を使うと危ないから安全のためと思って使ってるよ まあほとんど誰も使ってないんじゃないの
>>753 インデックス使ってなんかやってるだけでforeach使えないじゃん
MSのフレームワークとかって企業用途が多いから外部に出づらいんだよね MSのサポートがあってプロダクトとして活きてくるというか そういう意味じゃ今元気なスタートアップとかの中小が活躍するWeb業界じゃなかなかナレッジが広がらなさそう
エンタープライズの開発って、フレームワークの使い方なんかよりももっと上位の業務ドメインの比重が大きいんだよ そういうのは企業秘密に関わるし一般化できないから外へ出にくい 一方Web系はCRUDに毛が生えた程度の案件が多く、システム全体のうちでフレームワークに依存する部分の占める割合が大きいんだよ だからノウハウを共有しやすい
>>757 あ、これインデックス1からだわ
ってたったこんだけで用済みなのって
あまりにも産廃過ぎひん?
>>760 foreach (var x in items.Skip(1))
foreachにする為だけにLinq呼ぶのはなんか抵抗あるなw
更に付け加えるなら、IEnumerable<T>は遅延評価になるから遅いループになる ToArrayで配列にするにしても無駄なコピーが発生するから、単純なループなら素直にforにするべき
C#8以降はこれでいい foreach (var x in items.AsSpan(1..))
訂正 foreach (var x in items.AsSpan()[1..])
>>749 まぁ、varで受けたらobjectにしかならんものもあるし。コンパイルで引っかかるけど
varで書き直そうと思って、うっかり違うとこもいじっちゃって、あら不思議。とかはあるんじゃない?
>>767 > うっかり違うとこもいじっちゃって
それvarに限らなくね?
ぶっちゃけIEnumerableが一番読みやすいしありがたい
てか普段はvarで書いてそういうとこは型指定するのが普通なんじゃね 明示的にしたことが目立つから
>>771 そのとおりなんだけど、この話は
>>748 ,749からの流れなんで
double v=0; を var v=0; に書き換えたせいで起こるバグもあるやな
バカというよりハゲだな / ̄ ̄ ̄ ̄ ̄ ̄\ / \ / ヽ l:::::::::. | |:::::::::: (●) (●) | |::::::::::::::::: \___/ | ヽ:::::::::::::::::::. \/ ノ
そもそもdoubleで0を宣言するなら0.0って書く気がする
今どきゴリゴリハンガリアンのシステム開発に放り込まれてげんなりしてるので本当に勘弁してほしい これだから古い会社は
文句言えるほどC#できるんなら自社サービス系行けるよ さっさと辞めればいい それができないんなら自分もその程度ということだぞ
>>780 同意
そう言えば 0.0 って書いたらfloatとdoubleのどっちになるんだろう?
ってやってみたらdoubleになったわ
転職出来るほどの自信は無くてもバッドプラクティスをバッドプラクティスだと言うくらいは出来るだろう ロジックがおかしい
この業界は経験者だと転職それほど難しくないんだから、ヤバそうな所はさっさと去るべし
間違ったやり方だと思いながら仕事してたらいつまでも自信ないままだぞ? だって間違った仕事しかしてないことになるんだからな 幸いC#はWeb系行けば結構モダンな開発してる職場が多いし、BtoBが中心だから比較的待遇も悪くないし、SI系出身者に対しても比較的寛容な傾向がある 簡単確実なソリューションは目の前にある
今C#やってるなら転職に困るようなことないと思うけど、入ったら入ったでハンガリアンの悪夢再びの可能性もあるから怖い
クラス名を以下のような関数に渡したい時に void printName(string name) {} 呼び出し側で printName(this.ToString()); と記載していますが、毎回書くのが煩わしいです。 どこからの呼び出しでも同じ記述なので、簡略化する方法はないですか。 Cのマクロ定義ではこんな風にできると思いますがこれに近いことをcsでしたいです。 #define PRINT_NAME() printName(this.ToString())
printName側でコールタック辿って呼出元のクラス名を得る
>>792 C#のお作法でstring ToString();はoverrideすることになってる
void printName(object obj) {...=obj.ToString();}
呼び出し側で printName(this); してしまって大丈夫。
...なのだがクラス名が欲しいなら
void printName(object obj) {...=obj.GetType().Name;}
か?
>>792 そもそも何故そのような事をするのか。
呼び出し元のログを取りたいとかなら、StackFrame使うとかもっとマシな方法あるけど。
あと目的がログだったとして、独自に作るよりはNLogのように既存の物使った方がよい
みんなの意見参考になったわ とりあえず今週末ちょっとASP.NET勉強してみるよ。ウェブのこと全然わかんねぇ
目的は単純にコンストラクタが呼ばれたらコンソールにクラス名を含む文字を出したいただそれだけですね Stack使う系の方法は確証得られないのでNGです
>>800 C# 呼び出し元 クラス名
でググればたくさん見つかるけどそれじゃダメなの?
なんで試さずStackFrameはNGとか難癖付けてるの?
Callerなんとか系のやつは実行ファイルに埋め込まれるからあまりお勧めしないが StackFrame使いたくないならまあ好きにして
StackFrameは最適化で正確な内容にならないことがあるよ
あとはStackFrame使う所で [MethodImpl(MethodImplOptions.NoInlining)] でインライン展開無効にしとけば大丈夫だと思う
>>807 printNameの呼び出しがインライン展開されることはそれで防げるけど、目的はprintNameの呼び出し元のクラスを知ることなんだからそれでは不十分
printNameを呼び出しているメソッド全てにその属性を付けて回る必要がある
C#+WindowsAPIで別アプリのDataGridView上の 特定セルの値の取得&ダブルクリック とかできますか? 他のソフトを操作するプログラムを作ろうと考えています。
>>809 WinAppDriver経由で出来そうな気がする
VS2022で右上のソリューションエクスプローラーのForm1.csをクリックしても デザイナにFormが表示されないことが多々あるですが,対処法あります? 再起動すれば表示されるようになるのですが
配列の読み書きを少しでも速くしようとポインタ使用して実際に速くなったけど そうなると配列のインデックス指定する書き方が存在する意味ってあるんかなあと思った
用途次第かと ポインターは相対指定に便利 配列インデックスは絶対位置指定で便利
>>808 NGワード引っ掛かったのでURL貼れないけど、
JIT 最適化にも負けずに呼び出し元のメソッドを取得する方法って記事に
そんな感じの事が書いてあったな
DynamicSecurityMethodAttribute なんてのがあったのは勉強になった
ただ、実運用のデバッグでそこまで困るかと言われたら多分困らないとは思うが
(NLogの実装もNoInliningまでしかしてないし)
>>810 とあるソフトの自動操縦プログラムを作ろうとしていますが
難航しています。
ランサーズではまっている部分を
プロジェクトとして有料でも良いので出すので
コメント入りで作ってくれませんか?
>>811 そんなのがあるんですね。初めてしりました。
はまっている部分を自分でやると時間がかかりそうなので
ランサーズで出そうかと思います。
以前だしたのですが、出来るといって受けた人が
スキル不足で結局出来なくて諦めていました、、、
>>818 スレチだな
ついでに…
2004年(15年ぐらい前)にやってたけどめんどくさいからやりたくない
その時は会社のアプリの自動化とIEでの自動ログインとMarketSpeedの操作
(自分のアプリをクリックするとチャートが表示されたりする)
そのDataGritViewと言うのがハンドル取れる奴ならいいけどWPFとかなら画像認識しないと取れない
15年じゃないかw 2年後にライブドアショックで全部吹っ飛んだ
操作送るだけならSendInputでいけるけど、特定セルってのが問題な気がする 他アプリのセルの位置までは判らないと思う
ランサーズていくらで仕事すんのか知らんけど 一日3~5万x1週間ぐらいで15~25万ぐらいならやってもいいかな
MarketSpeedは画面がコントロールじゃない部分(独自描画)が多くて クリック位置もハードコーディングで対応した 画面レイアウトが変わったらそこで終わり そんなものに金を払いたいとは思えない
表示されてる画像が絶対変わらないなら画像認識でクリック位置は特定できる 今ならc#でなくてpythonがおすすめかな
DataGridViewってセル一つ一つにHWNDあるようなWin32ネイティブではないよね? ListViewラップしてるだけなら別アプリから操作するのもまあまあ簡単だが 違うならゲームのチートプログラム作るような手順でフックしていかないといけないから難易度はそこそこ高い
そこそこじゃなくてかなりめんどくさい部類 そんなもんを20万ぐらいでやってもらえるなら頼んだ方がいい アメリカにいた頃は大体倍ぐらいかかってる 日本は安い
ListViewとかのOS標準コントロールと訳が違うからな ぶっちゃけ安定性担保するの難しいから金貰ってもやりたくない
俺がやるとしたら別アプリではなくDllInjectionで新しいスレッド作成して新Windowなりコンソールなりオーバーレイなりで入力装置を設ける dnSpy等でDataGridViewの必要な関数を調べてフックなり呼び出しをする こういうDLLをC++で作る
てかそのとあるソフトに相談するのが筋じゃね、しらんけど
>>829 その手の手法は、アンチウイルスソフトに検出されたりしないかね
>>831 インジェクター不要な手順でやれば高確率で検出されない
逆にCreateRemoteThreadとかWriteProcessMemoryとかSetWindowsHookExを用いてDllInjectionを行う一般的なやり方だと検出されやすい
>>809 余裕だけどここで教えたくないって人が多いだろう終了
おそらくやってやれないことはないけどめんどくさいし どうせ買い叩こうって感じが丸見えなんだな 本気で最低20万出すのか? セミプロに1万円ぐらいでやらせようとしてるんじゃないか?
>>817 甘えるな
Win32API使う前提ならなんでもあり
ググればいくらでも出て来る
よく自動で動かしたいような類のものは、投資からギャンブル系まで大抵Android用のアプリがある で、そっちの方がUIが画一的で自動化が楽だ
Jane Styleみたいのを操作したいなら別の方法もあるけどな
C#はVBと同じ言語だな。 あたかもC++の兄弟言語であるかのように見せかけただけのVBだ。
巨大ランタイムに依存してる辺りはVBだな OSに標準で入ってなければ許されないだろう C#の前身のDelphi/C++builderもランタイム配布問題を抱えてたし
Coreで単一実行ファイル作るとクソデカexeが生成されて依存ランタイムの量にビビる
同じ.NET Frameworkの中間言語にコンパイルするという意味なら同じだが VBを機能拡張しまくってようやく追いつかせたんだぞ まぁVBは.NET5で見捨てられたが
switch文は各caseの末尾にbreak必須で、main関数もJavaと同様にクラスで囲い込まないと いけなくて、それで同じ.net frameworkのプログラムを作るだけだからVBと同じだ。 C#は関数にデフォルト引数が使えない。旧VB6の関数も使うならVBが良し、そして文字列 の扱いでは、VBならLike演算子も使える。C#でExcelを制御するCOM対応のDLLも作ったこと もあるが、元々VBAでやることをDLLで作るなら、素直に同じ系統の言語であるVB(.net)でや ればいいものを、何でC#で作るのか疑問だ。 C#なら複雑な文字列の扱いはどうやってるんかいな。VBならLike演算子で済ませられるもの でも、毎度正規表現クラスを使ったりしてるんかいな。 C#はC++の良さもVBの良さも生かせない言語とちゃうんかいな。
最も基本的なところの記述はCに似てるが、switch文のbreak必須仕様はVBのSelect Case文と結局同じで、 ヘッダーファイルというものはなく、#include文もなく、クラスの書き方はC++とは類似点が皆無と 言えるもので、実際にはVBのほうが十分に似てる。
マネージ拡張C++ならボクシングやアンボクシングも必要になるところも、C#にはそれが 無くて、VBとの書き方は末尾にセミコロンを付けるだけの違いでしかない。
>>851 VBと同じで何が問題なの?
Basicに慣れてる人はVB、C/C++に慣れてる人はC#、と多くの人に対してハードルを低くしてる
あと、デフォルト引数もあるし、Like演算子の代わりもあるよ
トップレベルステートメントとか出たし、 VB使ってるからって妙にc#だけを意識してない? 活かせないとか皆無とか強い言葉で自分を守ろうとしてるのが見え見えで悲しい
デフォルト引数が導入されたのがC#4だから昔のC#を思い出しながら書いてるのかもしれん
>>848 まあそれでも選択肢増えたのはありがたいわ
ランタイム別で単一EXEにするのも出来るし
VB→Delphi→C#←C/C++ の進化は古参なら皆知ってるよね 右矢印は同じ人の仕業だし
Int16,32,64の使い分けって必要でしょうか メモリが非常に少ない環境であればシビアになるべきでしょうが 普通の環境であればInt32を使用すれば問題ないと考えていますが合ってますかね
>>863 即レスありがとうございます
型について書かれてるサイトやブログはありますが、各数値型の用途についてまで言及されているサイトはあまりなくて困っていました
助かりました
>>864 Int16,Int32,Int64ではなく、それぞれの別名であるshort, int , longと記述することが多い
大抵のお手本はintとだけ書いてあるでしょ
long(Int64)は32bitでは表現出来ない大きな数値を扱う時に使う
それ以外はint(Int32)
short(Int16)はあまり使わないな
クソ長い円周率とか宇宙規模の計算とか、doubleでもlongでも無理とかのとき、型はどうするん まあ聞いてどうすることもないんやけど
>>867 整数ならBigInteger構造体があるよ
宇宙規模の計算とか、桁数が有ってればOKみたいな世界やからへーきへーき(何が
1ビットも無駄にしてはならない shortでいいのにintなんか使った日には島流し
DBならまだしもC#でshortとか使う価値が無いのだけどね
細かい型を使ってもRustみたいにメモリギチギチに詰めてもらえる訳でもなく、何をするにもキャストばかり発生・・・・使い所は難しい
>>870 ビット単位で言うなら組み込み型そのまま使ってる時点で無駄にしまくり
上限値が分かってる場合はC/C++のビットフィールドを利用すると以下の3フィールドで4バイトしか使われない
int Year : 23; //MaxValue = 8388607
int Month : 4; //MaxValue = 15
int Day : 5; //MaxValue = 31
>>866 そのshortを使わなくてよい根拠を知りたかったのです
サンプルやお手本がつかってないからではなく、ハードウェアの制限があるシーンで使うとか…
ただそんなシーンでC#は選ばれない気もしますが。
整数型以外も
>>867 にもありますが、例えばdouble型ってどういう用途で使うんでしょうかね。
decimalはお金等の電卓通りの計算になるような(ならないケースもありますが)項目に使いますよね。
floatはポリゴンの計算とか?
そういった数値型の利用シーンが知りたかった次第です。
>>874 shortをあまり使わないのはメモリー効率以外に恩恵が無いから
・16bit変数は思ったよりもすぐに表現出来なくなることが多い
・キャストが面倒
大した意味は無いよ
スタックの幅は可変じゃ無いから 32bit幅なら16bitの値を入れても32bit喰うよ
o/rマッパのコードファーストでテーブルカラム定義する場合にもよく使う。 postgreのsmallintならC#のshortとか。 また小型機器なんかとバイナリ通信する場合もshortが2バイト幅って原理を使って通信フォーマット組み立てたりする
>>877 そうそう、組み込みデバイスとの通信はshort,floatを使うことが多いね
それとC言語出身者は char=1バイトと勘違いし易いみたい
バイナリフォーマットが決まってるケースならともかく、通常はintでええやろ
っていうか用途はあくまでも○○ってケースが多いねってだけ 占いや天気予報の類 マニュアルなどの最小最大の仕様や今回の目的にあった型を変数ごとに決定しないと駄目 結構辛い作業になることもある
>>859 元々はデフォルト引数がなくて、随分出遅れてから追加されたんであって、そんなことも知らずにwwwかいな
>>877 postgreのドキュメントには、integerが一番バランスが取れているからsmallint使うのは限定的とあるね。
.NETでも同じことが言えるのでは。
integer型は数値の範囲、格納サイズおよび性能において最も釣合いが取れていますので、一般的に使用されます。 smallint型は一般的にディスク容量に制限が付いている場合にのみ使用します。 bigint型はintegerの許容範囲では十分ではない場合にのみ使用すべきです。 integerデータ型の方がずっと速いからです。
>>882 .NET Framework 2.0 からようこそw
>>854 同じだから、あんなのどっちでも普通に書けてハードルはない。
vbとc#は相互に書き換えができる。
決してCを継承した言語ではないのにC#って名前が実態と合ってない。
で、Like演算子の代わりって何。VBでは使えずC#でのみで使える何かがあるんかいな。
>>845 >>846 プログラム初級者だな。
文末のセミコロンの有無と、ブロックの先頭が"{"末尾が"}"かどうかの違いだけで判断して、全然違うと思い込んでしまう人か。
その基準で言えばC++に似た言語と思ってるのかもしれんが、実際にはC#は決してCを継承した言語ではなく、C++やCと何ら
似ているものはない。
見かけ上は、C++の改良言語。
フタを開ければ中身はVB。このVBを、VBに見えなくするように構文を変化させただけのものでしかない。
実際に、いつもVB使っててC#は使ってなかったが、業務で初めてC#のプログラム改修も、言語の問題で行き詰まりはなかった。
このことからも、やはりC#はVBだ。
C♯の兄弟言語だったVB.netはもう無くなったのか
VB.NETってもう言語に機能追加しないって言われてなかったっけ
>>886 煽っといてふわふわな主観と思い込みしか書いてないけど、その根拠が書いてないのよね
プログラミングに向いてないのでは?
たぶんその人は.NET使って 一緒だー って言ってるんだと思うよ
>>883 俺には数百万以上のレコードが見込まれるテーブルに対して、smallintで済むカラムをintには変更できないw
まぁ容量無視できる小さいテーブルならintでもいいんじゃないですかね。ケースバイケース
ref構造体は全滅だね それによってSystem.Text.Jsonなんかは一部使えない
インターフェースのデフォルト実装もVBでは使えないはずだけど、デフォルト実装を持ったインターフェースをVBで触ったらどうなるんだろ 既存インターフェースに安全にメンバを追加するための機能だから、良かれと思ってメンバを追加したらVBユーザーが切り捨てられるという悲しい事態になるんだろうか
>>893 一千万レコードで列数100としても高々
10M × 100 × 2バイト = 2GB
増えるだけだろ
どんだけしょぼいサーバーなんだよw
やたらとLike演算子持ち上げてるからドキュメント見たけど 普通にVB6相当の機能でワロタ これがRegexの代替になると思ってるのか…
VB6.0ならともかくVB.NETで動いているものなんて現存するのか
>>896 その単純計算は影響を小さく見過ぎ
indexやfill factorとかカラムの大きさ/レコード長はいろんな要素に関わってくる
それにストレージサイズよりも一番大きな影響は1ページに収まるレコード数か減りあらゆる処理速度が低下すること
要求性能次第では致命的になるから気をつけて
業務アプリだとそこそこ大きい企業でもあるぞ 保守する人間がC#使えないからって向こうから指定されるケースもある
>>903 VB6やExcelVBAのコードをVB.NETに移植する案件はたまにあるな
>>902 > まぁ容量無視できる小さいテーブルならintでもいいんじゃないですかね。
とか書いてあるのに今度は性能ですか
いろいろ大変ですねw
そもそもC#内でメモリに持つような話と、DBに格納するような話を一緒にされてもなぁ
>>900 持ち上げてるとか、Regexの代替になるとか、不正解な読解しとる。
>>890 どこがVBなのかの疑問に答えてんだが、何か不足か?
まさか本気でC++のほうが似てる言語と思い込んでないよな。
>>910 C#に似ているのはVB.netの話だろそれ
VB6とは似せてるだけの別物
>>910 c++が似てるとかじゃなくて、どこが「(c#が)VBと同じ」なん?
886に書いてないじゃん?
まさか851-853ので「同じ」って言ってるん?
>>912 別言語のように見せてるだけで、中身の実体は同じだ。
C#で学んだプログラムの作り方を、そのままVBにも適用できるのだから、同じ言語だ。
いつもVB使ってC#は未経験なものの、業務でC#で既存の改修と、それともう一つC#での新規の開発を
頼まれたことがあったけど、普通にやり遂げた。それはC#というのは、実質はVBと同じだからだ。
>>913 いやだから具体的にどこが同じなん
違うところはいっぱいあると思うけど(それこそ宣言の仕方とか)、それでも「似ていることが」じゃなくて「同じ」て言い張る根拠があるんやろ
>>914 宣言の仕方のような、外側の見かけは違っていて、そこしか見れなくて違うとしか思えないのは、適性に疑問だな。
中身の実体を見て、本質を理解したら同じだということがわかる。
C♯とVB.netは言語仕様がBASIC風になってるだけで中身はほぼ同じ物に間違い無いけど 昔からあるVisualBASIC6.0までのシリーズとは似せてるだけで別物
言語の本質って、ライブラリの使い方が本質だと思ってるのかね
c#とVisualBASIC.NETはどっちもネイティブじゃなくて .netフレームワーク上で動くからコンパイルした後は同じ物だな VisualBASIC6.0の代替として開発された物なんだけど 中途半端にVB6.0と似てるので混乱を招いて非難轟々 VBと言うと普通VB6.0を指してVB.netの略称としては使われない
VisualBASIC.NETはc#をベースにBASIC風に改造された物だから 同じ物と言って間違いではない
VisualBASIC6.0のソースを楽に.net環境に移植出来るのが VisualBASIC.NETが作られたMSの目論見だったが 中途半端に仕様が違うのでVisualBASIC6.0を使い続けるか C#に流れる人が殆どでVisualBASIC.NETはマイナーな開発環境となってしまった
VisualBASIC6.0はランタイム自体が.NET Frameworkと互換性が全く無い
>>909 >>851 で書いてる
> C#なら複雑な文字列の扱いはどうやってるんかいな。VBならLike演算子で済ませられるもの
> でも、毎度正規表現クラスを使ったりしてるんかいな。
これは、Like演算子がRegex.IsMatch()と同等の機能を提供してると言ってるのと同じだよね?
もし違う意図だというのならプログラム言語の前に日本語学び直した方がいい
あとやたら同一同一言ってるが、unsafeはどうなんだよ
名前の最初の文字が大文字か小文字については、 JavaならClassは大文字、フィールドは小文字、メソッドは小文字、ローカル変数は小文字、定数だけは最初の文字に限らずすべて大文字、と定番的ルールがあったけど、 C#ではどうなってますか? いろんな本読んでますがバラバラな印象。 自分的C#のルールとして、Classは大文字、フィールドは小文字、プロパティは大文字、メソッドは大文字、ローカル変数は小文字、定数だけは最初の文字に限らずすべて大文字、にしてもいいですか?
VB.NETはC#の構文に比べて冗長だよな。3項演算子やインクリメント、ラムダ式のアロー演算子が使えないのもかなり致命的
三項演算子はどちらかと言うと新世界から排除されつつある
>>923 同じではない。同等の機能を提供してると言ってると思い込んだのは、大きな誤読だ。
より本格的に文字列のパターンを評価をするには、正規表現クラスが必要にはなるものの、Like演算子で間に合わせられる
事例のものなら一手間省けるが、C#ではまさか毎度正規表現クラスを用意するしかないのかなと疑問を感じての問いかけだ。
とりあえず何年前から来たのか知らないけど勉強しろや
>>915 だからその「中身」の「実体」って具体的にそれぞれ何を指しててどう同じなんだよw
「本質」ってどの本質のことだよw
そのふわふわ言うクセどうにかしろよw
そもそもコードの見た目も機能も名前が違えば言語としてもう違うことになると思うが?
それを押して「同じ」っていう根拠が主観過ぎるんだよ
今そっちは、例えばdiff取ったとき同一にならなくても「ファイルは同じだ」って言い張ってるようなもんだぞ
Wc3Gが言うVB.NETが.NETとして同じものだ、っていう主張は理解できるよ
言語仕様としては違うと思うけど、
お互いunsafe以外出来るできないの機能的な差自体は少ないやろ、当たり前やけど。
でも「VB」と「c#」は「同じ」と軽々と断定出来ないと思うよ。少なくともワイには言えない
>>928 > まさか毎度正規表現クラスを用意するしかないのかな
いや今時のIDE使ってたらいきなりRegexって書いても補完機能呼べば自動でusing付与までしてくれるでしょ
「Like」って書くのとなんら変わらん
メモ帳でコーディングしてるのか?
>>928 「同じ」って主張する割にはc#知らない?
>>923 unsafeの話を持ち出したが、そういった特殊で普段は一般には使わないところにまで、細かく意識して議論するつもりはない。
特殊な事例も含めて、厳密に正確を突き詰めないといけない何らかの場ならともかく、たかが(初心者用)の名前のつくスレッ
ドの場だ。
多くの物事には、原則だけでなく、例外というのものあるのは当たり前なことだ。
C++/CLIも同じだーって言い出すんじゃないの?
>>930 C#とVBのコードを相互に書き換えができれば、同じ実体であり、本質であるものを双方に持ち合わせている。
これでも納得できなければ、元のソースと書き換えた言語ソースのコンパイルしたものを、それぞれ逆コンパイルして比較すればはっきりする。
何がふわふわなんだ。これで十分な話だ。ほかに何を求めるのか。
>>931 サクラエディタで編集してコマンドプロンプトでコンパイル
>>935 C++/CLIでマネージコードだけ記述したらほぼ同じものが出来上がるよね
つまりC++/CLI=C#=VB.Net
ひいてはC++=VB
>>936 エアプすぎるだろw
C#に限ってもバージョンが違うだけで出来上がる実行ファイルに差が出る可能性があるぞ
実体と本質の定義をさっさと記述しろよ
>>932 931で、正解だということが判明した。
ただしIDEの機能でプログラマーを支援するという情報は得られた。
間違ってなかったので、「知らない」にはなってないな。
>>936 1行目がまたふわふわしてんなあw
そりゃあ.NET使ってりゃ合わせようとすれば同じになるわw
でも言語として「VB」と「c#」が「同じ言語」と言い切ったんだぞ?
コンパイルして同じものができれば全部「同じ」言語か?
言語仕様も同じか?片方は言語として今後積極的にアップデートもされないとされてるのに同じか?
その程度の認識で普段も「同じ」って言葉使ってるの?こええよw
10数年前ならいざしらず、今の現場とかで「VBとc#は同じだ」なんて言ったら鼻で笑われるぞw
こういうVBおじさんをいまc#案件で使ったらすごい苦労しそう 教えても理解できず、「VBならこうしたのに」とかブツブツ言って進まなそうw
>>939 そこにこだわって何の意味があるんだ。
目的のプログラムを完成させれば終わりだ。
>>940 判明した、って知らなかっただけじゃん
負けず嫌いでかわいいなあw
>>933 >unsafeの話を持ち出したが、そういった特殊で普段は一般には使わない
C#でアンマネージリソース扱うのなんて珍しくもなんともないだろw
OS標準の簡単なUIプログラミングしかしたことなさそう
釣りなのか知らんけどテンプレ読めないアホは別スレ行け
>>944 知らなかったのではなくて、知っていた。
そして、それが間違っていない確信を得たんやないか。
次のスレから勉強しない馬鹿が噛みついてくるスレに名前を変えよう
今勉強しようと思っていたじゃなくてC# ver〇 新機能でググって勉強しろ
>>936 >C#とVBのコードを相互に書き換えができれば
VB.NETでできてc#にできないこととかあるんだが
言語仕様だって全く違うわけで、同じなのは.NET Frameworkを使うってだけ
ただ、それがc#とVB.Netのプログラミングのほとんどだったりするだけだ
>>945 (初心者用)なスレには十分な合格点やないか
>>950 オレオレ基準で話したって誰も共感なんかしてくれないぞ
質問が無いなら普通に迷惑だから消えろ
同じと言うから色々突っ込まれるんだよ せいぜい似てるにしとけ
ドボンがVB.NETとC#併記してるけど どんだけ需要あるんだろうね
VB.NET嫌いだけど、イベントハンドラだけは書くの楽だった
後発言語が主流になった日にはさ 現在のVBおじさんみたいに、俺らもC#おじさんになってるだろうからな あんまりVBおじさんをからかわないようにしようよ
VB6から.NETに移行してから困ったことといったらコントロールにインデックスがつかなくなったことがあった記憶があるんだけど、実際今みんなフォームにコントロールを多数配置した時ってどう処理してんの?
コントロール配列の事言ってる? 自前でListにでもぶち込むしかない
>>951 VBと同じ扱いされるとC#の価値を落とされる気がして、この言語ユーザーとして許せないプライドでもあるのかね。
同じ言語だ。 VBしか使ってない人間にいきなりC#やらせても結果を出してしまうと、C#プログラマが自分の立場が失われると感じて 焦ってんのかいな。
マンションでは、PPPoE接続は出来ないのでしょうか? バッファロールーターにPPPOE設定をしましたが マンションで最初から契約されているプロバイダ意外に 接続出来ません。。。
>>966 だから、何を持って一緒って言ってるんだよ
お前が同じって言ってる箇所も違うって言われてるし、それ以外にも違うとこ散々出てきてるだろ?
VBがどうって言うより、お前をエンジニアとして許容できないんだよ
エンジニア的には比較軸が定義されてない比較とか会話にならん
>>964 言語どれだけ知ってるん?C#とVB以外に
>>966 おじさん巣に帰れば?
c#わからないんやろ?引くに引けなくなったんやろ?
現実でも立場がないんだろ?こういうときは大人しくしとくのが大人、やで
同じ言語というか、メインはフレームワークだから それにアクセスするためのシェルみたいな感じ?
UCSD p-Systemが呼ばれたような気がした。
違う言語だ。 C#しか使ってない人間にいきなりVBやらせても結果を出してしまうと、VBプログラマが自分の立場が失われると感じて 焦ってんのかいな。
VBとC#の違いはunsafeでポインタが扱える事 理屈ではC++と比較しても遜色ない速度が出せる という事になっている
>>941 だよな
横からだけど、それがまかり通るならC#とC言語は完全な兄弟と言われるのでは?と思う
だってWin32 APIどちらも使えるし
そしてVBもC言語と兄弟と言えるね
VBは使ってないけどVBScriptとかから考えると、クラスが組めてもコンストラクタに引数が使えなかったはず…
(バージョンアップしていたらすまん…)
一方C#はコンストラクタに引数を渡せる
C言語にはクラスが無いけどC++も含めるとしたらC#はC++寄りでは
VBとVB.NETとVBAの区別が付いていない馬鹿は死ね
VB.netとC#はかなり近いでしょ。 コンパイルされたexeやdllからC#にもVb.netにも ごく一部除いて互いに100%それなりに高い確率でツールで自動変換可能なわけで。 表層的な構文糖の有る無しは別にして大枠では非常に似てる。 似てるからこそVB.netは要らんよね、という流れになっていったわけで。
プログラマなら「似てる」と「同じ」は違うものだと認識したほうがいいぞ
C#1.0の頃と話の内容が変わってないやないかい これが枯れた言語か・・・
同じ.NETファミリーでもC#やF#で書かれたOSSライブラリは無数にあるが、 VB.NETで書かれた知名度のあるOSSライブラリなんて聞いたことがない これが全てでしょ
>>968 何をもっては、何度も言ってるのにまだわからんのはお前に問題がある。
違うって主張は返しても、わめいてるだけで聞くに値する話は出てきてない。
>>975 何だ、本当のことを言われて痛かったんか。
だから、人の言葉を使って単語を取り替えて言葉を返すことしかできなくなったのか。
(自分に都合の悪い話は)聞くに値しない (自分がわからない話は)聞くに値しない
VBは眼中にないだの、冗長で使う理由がないだの、化石言語だの、それがどうかしたんかね。 冗長って何。ブロックの先頭と末尾を{や}の1文字で済ませられないのを冗長と言ってるんかいな。 お前らにVBを使ってほしいわけでもVBで書かれたOSSライブラリを普及させたいわけでもない。
>>982 その論法でいけばすべてのコンパイル言語はアセンブラと同じになるわけだが
言語が似てるからVB.NETがいらないんじゃなくて、用途と範囲が似てるから
より範囲の広いc#でいいやとなってるだけだ
覚えたての技術に拘泥するって初心者らしくていいじゃん(いいじゃん)
次スレに引っ張りたくないので VB.NetとC#が同じ言語なんていう意見には全く賛同しないが VB.NetとC#は本質的に同じ、って意見なら、本質的にの意味あい次第では賛同できる可能性もあった だがこの肝心の本質的にって言葉を全く説明できなかった たとえば、 Vb.NetもC#も、.NET Frameworkを操作するためのオブジェクト指向言語であり その意味では本質的に同じ言語である だったらもっと賛同されたんじゃないかね ということでこの話題はこのスレで終わりにして欲しい
VBおじさんは引くに引けなくなってるだけだよw ちょうどスレ変わるんやしここで引けば消えれるんじゃねw 感覚でふわっとしか言えないクセを直せたらいいねw あともうちょい勉強すべき
このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 127日 9時間 31分 59秒
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/ ▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
read.cgi ver 07.7.21 2024/12/02 Walang Kapalit ★ | Donguri System Team 5ちゃんねる
lud20241215234130ncaこのスレへの固定リンク: http://5chb.net/r/tech/1644416019/ ヒント: 5chスレのurlに http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。TOPへ TOPへ
全掲示板一覧 この掲示板へ 人気スレ |
Youtube 動画
>50
>100
>200
>300
>500
>1000枚
新着画像 ↓「ふらっと C#,C♯,C#(初心者用) Part154 ->画像>4枚 」 を見た人も見ています:・ふらっと C#,C♯,C#(初心者用) Part141 ・ふらっと C#,C♯,C#(初心者用) Part138 ・ふらっと C#,C♯,C#(初心者用) Part144 ・ふらっとC#,C♯,C#(初心者用) Part88 ・ふらっと C#,C♯,C#(初心者用) Part128 [無断転載禁止] ・【チェンクロ】チェインクロニクル初心者専用★14 [無断転載禁止] ・【初心者用】パズル&ドラゴンズ【パズドラ】★116©2ch.net [無断転載禁止] ・【初心者用】マイニング情報交換スレ15 [無断転載禁止] ・初心者から中級者を目指す人の救済スレ(ガンプラ用) ・【初心者用】マイニング情報交換スレ45 ・Webサイト制作初心者用質問スレ part248 [無断転載禁止] ・【初心者用】マイニング情報交換スレ35 ・【初心者用】マイニング情報交換スレ46 ・【初心者用】マイニング情報交換スレ34 ・【初心者用】マイニング情報交換スレ49 ・【初心者用】マイニング情報交換スレ17 ・【キンスレ】キングスレイド初心者用スレpart3【初心者】 ・【初心者用】マイニング情報交換スレ7 [無断転載禁止] ・【初心者用】マイニング情報交換スレ14 ・Webサイト制作初心者用質問スレ part239 ・【初心者用】マイニング情報交換スレ3 ・【初心者専用】ポケモンユナイト【Switch】 Part.3 ・【セルフ用】ジェルネイル初心者中級者向け質問・雑談スレ Part.4 ・ピアノ大人初心者のためのスレッド(クラシック専用) ・Webサイト制作初心者用質問スレ part249 ・パソコン初心者クリエイター用のパソコンほしい ・ドラゴンズドグマオンライン初心者専用スレ Part1 ・【初心者用】マイニング情報交換スレ60 ・【初心者用】マイニング情報交換スレ52 ・【初心者用】マイニング情報交換スレ19 ・【初心者用】マイニング情報交換スレ3 [無断転載禁止] ・【初心者用】マイニング情報交換スレ37 ・【初心者用】マイニング情報交換スレ36 ・UWSC初心者用スレ2 ・【初心者用】マイニング情報交換スレ30 ・キャンプ場管理人 アニメに影響受けた初心者どもが冬キャンプを舐めてる 最低3万の寝袋は用意しとけ ・【とにかく漏れない】電子タバコ6【超初心者専用】 [無断転載禁止] ・【独学から】弁理士試験初心者スレ【予備校利用まで [無断転載禁止] ・【とにかく漏れない】電子タバコ9【超初心者専用】 ・【とにかく漏れない】電子タバコ7【超初心者専用】 [無断転載禁止] ・【目指せ】嘘PC用語辞典@PC初心者【1000】 ・[初心者用]スマブラXアイテム無しタイマンスレ ・教えて、鯖管理の仕方(初心者用) ・くだすれDelphi(超初心者用)その16 ・ブラックなベンチャーについて語るスレ(初心者用) ・/ ´,_ゝ`\初心者のための富士山登山入門126m(ワッチョイ無 [無断転載禁止] ・【初心者専用】引き寄せの法則 8【証拠不要】 ・囲碁・初心者専用の質問スレッド 第33局 ・【処女・童貞】Hの話【初心者専用】49 [無断転載禁止] ・【初心者専用】引き寄せの法則 2【証拠不要】 [無断転載禁止] ・【GTS】GRAN TURISMO SPORT初心者専用【Lesson1】 ・【MHP2G】超絶初心者専用攻略スレ6【村2まで】 ・囲碁・初心者専用の質問スレッド 第34局 ・【初心者用】パズル&ドラゴンズ【パズドラ】★121 [無断転載禁止] ・スポーツ科学のエビデンス(標本は初心者)←これ ・くだすれPython(超初心者用) その48【まず1嫁】 ・馬券で儲けた金は投資で運用〜株初心者の俺に株を教えてくれ Part.3 ・囲碁・初心者専用の質問スレッド 第32局 ・自炊初心者になって気付くこと ・【VAPE雑談質問】滝内専用スレ【初心者歓迎】 ・初心者質問スレ その122 ※aitendo利用者出入禁止 ・★ビーズを楽しむ初心者のための質問専用スレ22★ [無断転載禁止] ・囲碁・初心者専用の質問スレッド 第36局 ・俺、パチ初心者用質問スレ11本目 ・俺、パチ初心者専用質問スレ6本目 ・【MT4/5】Meta Trader初心者専用61【EA素人】
09:41:30 up 3 days, 20:05, 0 users, load average: 9.46, 10.50, 10.32
in 2.0309631824493 sec
@0.072853088378906@0b7 on 121523