◎正当な理由による書き込みの削除について: 生島英之 とみられる方へ:ふらっと C#,C♯,C#(初心者用) Part146 YouTube動画>10本 ->画像>3枚
動画、画像抽出 ||
この掲示板へ
類似スレ
掲示板一覧 人気スレ 動画人気順
このスレへの固定リンク: http://5chb.net/r/tech/1576069931/ ヒント: 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#(初心者用) Part145
http://2chb.net/r/tech/1570446977/ ■関連スレ
C#, C♯, C#相談室 Part95
http://2chb.net/r/tech/1508168482/ ■コードを貼る場合は↓を使いましょう。
http://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/index https://docs.microsoft.com/en-us/dotnet/standard/class-libraries http://referencesource.microsoft.com/ ・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
ひらがな文字列をヘボン式ローマ字に変換するプログラム作りたいのですが やっぱ正攻法でswitch-caseで123個くらい分岐させますか? でも長音や促音の例外処理とか難しそうだなあ・・・
UNIXのShellのソースでコマンドを切り分ける場所では思いっきりswitch文の嵐だったな 1文字目でまず切り分けで、次にに文字目ってな具合で 速度なら圧倒的にswitch分だと思うが、作りやすかったり保守が簡単なのはDictionary使ったパターンだと思う
要素数が多くなれば多くなる程switch文よりDictionaryの方が速度的にも早くなるのでは?
>>7 C#コンパイラは多数の分岐先を持つswitchの場合には二分探索を行うコードを生成したりする
基本的に人間が最適化するより速い
>>4 です
ありがとうございます
switchでコツウコツやることにします
要素の数え漏れでもっと増えそうだし
例外を拾う処理も考えなきゃww
vs2017ExpressでC#のフォームを使ってSQLiteのデータをDataGridViewに表示させたいです セキュリティの関係でSystem.data.SQLiteを使うには申請が必要でMicrosoft.data.SQLiteを使っています SQLiteをデータソース欄に追加する方法を教えてもらえないでしょうか?
>>13 自宅でSystem.data.SQLiteをインストールして同じコードを書いたらデータベースに接続出来ました
恐らくSQLiteConnection等の参照が足りずにエラーなっていると思いますが、解決策が思い浮かばなかったのでSQL Serverを使って試したいと思います
申し訳ありません
Microsoft Visual Studio International Feature Pack を使うんだ! KanaConversion クラスだったかに RomajiToHiragana メソッドがあったと思う
>>10 亀レスで申し訳ないが、正規表現と Dictionary と LINQ を使えば 5 行くらいで書けるよ。
var kana = “あ|い|う|え|お|か|き|く|け|こ”;
var roman = “A|I|U|E|O|Ka|Ki|Ku|Ke|Ko”;
var dic = kana.Split(‘|’).Zip(roman.Split(‘|’), (l, r) => new { Key = l, Value = r}).ToDictionary( x => x.Key, x => x.Value );
Console.WriteLine(Regex.Replace(original_string, $”({kana})”, match => dic[match.Value]));
あとは 50 音を全パターン書いてね。 ただし注意点があって、長いワードは短いワードよりも (例えば「ちょ」は「ち」よりも) 先に並べるんだ。 そうしないと短いワードが先に部分マッチしてしまう。
テーブル作る前提なら始めからdictionary作ればよくね?
一文字ずつ正規表現でマッチしてたらとんでもなく時間食いそうだな 姓名の変換くらいならどうとでもなるだろうけど
>>18 作っているのはテーブルだけではないし、このように書くとスッキリ書ける。
>>19 処理の重さの本質はワード比較による分岐であって、switch 分岐もそれに引きずられるから、C# で比較するならどちらも大差ないと思う。
正規表現の方が、むしろ、最適化がかかることに期待できる。
まったくスッキリしてない 圧倒的にswitchが早い
>21 それは感情論だな。計時してみてくれよ。 Perl, JavaScript, Java, C# で正規表現を使うこと 30 年弱になるけど、パターンの複雑さによらず、正規表現が目に見えて遅いということはなかったな。 アセンブラでゴリゴリに最適化したものと比べたら遅いだろうが、同じ言語のユーザー定義関数より目に見えて遅いことはまあないと思うよ。
>>23 何か勘違いしてないか?
こっちも Dictionary つくっているが。
2文字置換を考慮したらスッキリは書けなかった
すまんこ
こんなクソみたいなコードでもregexよりは数倍早い
https://ideone.com/c7ILX4 頭良い人がもっとスッキリしたコード書いてくれそう
長文のほうがreplaceは不利だろうから数千文字にしたけどそれでも余裕
速度気にしないならregexで良いと思う
最終文字が2文字置換対象じゃないときにsubstringで範囲外例外出るわ 条件1個追加しといて
小さい「っ」が未対応なことに気付いた これ正規表現でもめんどいね 正規表現ならっを無視してreplaceした後に1個ずつ置換かなぁ
多少簡略化したロジックで計測してみた。 マッチ文字列が 1 文字固定なら、ユーザー定義関数の方が正規表現より 8 倍速かったが、1 〜 2 文字可変なら所要時間は同じ。 パターンマッチの文字列長が可変・複雑になるとそれをハンドルするための分岐が増えるせいでユーザー定義関数は遅くなる。 もちろん置換をかけるオリジナル文字列の文字出現パターン&確率にもよる。 チューニングするなら C やアセンブラで書くべきだし、C# で書くなら正規表現で簡潔に書けるほうがよいのでは?
>>27 おもしろいところに気づいたね。
例えば仮文字 $ とかに変換しておいて、最後に直後の子音字に変換。
ちゃっと => cha $ to => cha t to
どうあがいてもregexは遅くないという結論にしたいみたいだけど string単体で見ても遅いのにregexが遅くないわけがない 簡潔に書くならregexがスマートなパターンが多いのは分かってるよw 処理速度求められるパーサーなんかではまずregexなんか使わない 遅いと言っても数万文字の処理が何万回も必要とかでなければ気にするようなレベルではないので問題ないなら素直にregex使ったほうが良いよ 25ですでにそう言ってるしね
あるいはワンショットで置換するなら、下記のようなパターンを使って後方参照し、第1マッチ文字列が空でないなら、第2マッチ文字列の置換先の1文字目に置換するとか。 (っ?)(あ|い|う|え|お|か|き|く|け|こ)
「ンョ゛ハー ゛」みたいなのが来た時の対応とか考え出すと仕様肥大化するだろうなあ ひらがなカタカナ両対応とか、半角カナとか、 長音の代わりにハイフン使いだした場合とか 「ヴァッソ」とか テストパターン考えるのも厄介そうだね
LALRを受理するジェネレータ書いたことがあるんだけど、状態表の大きさは字句解析のほうが遥かに大きくなるのが普通みたいですよ。 字句解析と構文解析は一つの表にまとめられるのに、なぜ分けるのかというのが最初の疑問だけど、なぜか答えが載ってる本が無い。 実際にやってみると表の大きさが爆発的に大きくなるからでした。 状態機械は分けられる箇所があるなら積極的に分けたほうが効率的になるようです。
>>30 文字列操作だからもちろん絶対的には遅いよ。
C# で書いたユーザー定義関数と比べたときに正規表現が相対的にそんなに不利かといったらそうではないだろうという予想を立てただけで。実際測ったら同等だったわけだけど。
日経だったか「むかっっ」という促音が 重なる文章というか記事があったな
字句解析におけるNFA対DFAというのも最初に気になる部分です。 結論から言うと、NFAの選択は十分に考慮できるはずです。 僕も最初はDFAにこだわっていました。 でも、字句解析は表が大きくなりがちです。 特にregex並みの便利機能を組み込もうとすると、とても大きくなります。 たいていはNFAで十分かと思います。
ちなみに、DFAにこだわる理由は、多くの本がDFAのほうが効率的と述べているからです。 みんなそうだと思います。 最悪のケースではその通りですし、最悪のケースを考慮するのはセキュリティにも関わります。 でも最悪のケースはめったになく、たいていはNFAで十分で、たいていは効率的だと思います。
>>34 その同等だったっていうコード貼ってくれない?
25で貼ったコードで1文字2文字の比率変えてもregex側が常に3〜4倍くらい遅いんだよね
古い.NETだとsubstringが遅いとかあった気がするんだけどその影響じゃないよね?
>>38 コード書いてくれてたんだね。
25 があぼーんで読めない。。。
>>4 でーす
>>16 以降、何書いてるのかサッパリ分かりません!
なんせまだifとforとswitchと文字列操作のメソッドくらいしか知らないもんでww
半年くらい後に読みに来まーす
>>38 コードは長すぎて多分アップできないと思う。
やっていることは switch 式を2 文字マッチの場合と 1 文字マッチの場合で 2 種類つくり、残文字列が 2 文字以上あるなら前者にかける (破棄パターン _ => で後者を呼び出す)、1文字なら後者にかけ、インデックスを進めるだけ。
置換後文字列の連結には StringBuilder 使っているし、メソッド呼び出しは AggressiveInlining している。ユーザー定義関数を意図的に遅くするようなことはしていない。
1文字あるいは2文字の切り出しに Substring 使っているけど、それが遅いのかな?
ローマ字変換でばっとググってみた
お勉強用ならJavaScriptで書かれてるこれを理解しながらC#に移植するのがよさそうかな
ソースコードも簡潔だし悪くなさそう
https://www.pandanoir.info/entry/2016/03/29/190000 とにかく動けばいいというならMicrosoftが配ってるらしい「Japanese Kana Conversion Library」?でもこんなの使ったことないや
ンボマはmboma ンバッペはmbappe だからね 練習用なんだろうけど 簡単に見えても文字変換を自力でやるのはかなり面倒くさい
正規表現のほうが単純文字列比較より遅いのは当たり前 1文字比較の場合に単純比較と同等になるような 最適化が施されてるエンジン積んでれば数倍とかの差はつかない 少し古いバージョンのブラウザのJSのなら平気で10倍近い差が出てた でもその差がUXに影響を与えるようなユースケースはそう多くはない ちなみにstringのswitch caseは数が増えると .NET Core以前は内部的にDictionary使うみたいよ .NET Coreもhash比較するのは同じだけどDictionaryをアロケートしない方法にしてるらしい
>>39 これで見えるかね
https://ideone.com/c7ILX4 このコードはswitchじゃなくDictionaryでやった
おそらくswitchのほうがこれより早くなるか最適化で同程度になるはず
switch版までは作るのめんどい
配列の境界値チェックも遅い要因なのでできるだけチェックが発生しないのが望ましい
このコードでは2文字変換したときに境界値チェックが入ってしまうので2文字変換比率が高いと性能が悪くなる
2文字変換ばかりにしてもregexよりは早い
>>45 ありがとう。週末に評価してみる。
switch より Dictionary の方が処理性能がぶれない気がする。ハッシュで検索がワンショットに決まるから。switch は if カスケードを通ることで前スレで議論したパイプライン処理の影響を受けるため、処理速度がデータに強く依存する。
そんなわけでこの件の性能はコードの書き方 (チューニング含む)、データ、環境にかなり依存すると思う。
これは価値観の問題なのでみなが同じように考えるとは思わないが、正規表現で 3 - 4 倍程度の性能悪化なら、ユーザー定義関数よりチューニングより正規表現を私は採用する。
10 倍の悪化なら用途によっては考える。(パターンが複雑・多岐の場合) 正規表現は開発効率と保守性が 10 倍よいと思うので。
>>46 switchとdicの関連は44が説明してくれてる
最適化次第でいい感じにしてくれるはずだからどっちもたいさない感じになると思う
個人的には性能差が10倍だろうが1000倍だろうが許容できるケースなら可読性を取る
今どき文字→数値変換でc-'0'なんて書かずに大体int.Parse使うのと同じ
UIに入力された氏名のローマ字変換みたいな1ユーザー1回で済むような処理に速度なんて無意味
GB単位のログデータをいじるなら数倍の差でも考慮すべき
なんなら入力データの傾向に応じてチューニングしやすい単純処理のほうが更に高性能にしやすい
俺なら、ひらがな小文字の変換は、変換元「ちゃ」とか「ぱっ」のパターンを文字数降順で優先的に置き換えるかな。 配列で変換パターンを保持して、それにない文字パターンは先頭から徐々に削っていく。 それなら「ぱ」と「は゜」なんかも判りやすく対応できると思うよ。
>>44 , 45, 47
みんな有益な考察をしてくれるのでありがたい。感謝。
今まで正規表現が際立って遅いと体感することなかったけど、利用目的を想定した評価をきちんとしたことなかったので一連の議論はとても参考になりました。
オリジナルの文字列を1文字ずらしでzipして
2文字ずつ取得するイテレータでやるのがいいかなとか思ってたが
多少非効率でも↓ここの実装みたいに繰り返し変換していく方が
条件分岐が少なくて読みやすいかも
https://tools.m-bsys.com/original_tooles/romaji.php https://tools.m-bsys.com/js/romaji.js function hebonG(s) {
s = s.replace(/ん([aiueoy])/g, "n$1");
s = s.replace(/ん/g, "n");
s = s.replace(/n([bpm])/g, "m$1");
…
var hebonGMap = {
"kuぁ": "kua", "kuぃ": "kui", "kuぇ": "kue", "kuぉ": "kuo",
…
}
…
s = s.replace(/っch/g, "tch");
s = s.replace(/っ([kstnhmyrwgzdbp])/g, "$1$1");
>>49 正規表現が遅いのは、コンパイルだろ
実行時ではなく、初期化時にコンパイルするようにと、Go の本には書いてある
>>4 Ruby では、条件分岐しなくても、変換用の辞書で書ける
>>16 も、これに似ている
hash = { 'ab' => 'あ', 'xy' => 'ん' }
p re = Regexp.union( hash.keys ) #=> /ab|xy/
p "9xy9ab9xyx".gsub( re, hash )
#=> 9ん9あ9んx
>>51 まあね。ただ、C# の Match Evaluator 付き Regex.Replace は事前コンパイルできないと思う。
ちなみにあの後何度か測り直したのだが、switch より事前コンパイルなし正規表現は 2 倍遅かった。同等ではなかった、すまん。
45 によると Dictionary & ユーザー定義文字列操作は正規表現より 3-4 倍良かったそうだから、今回のケースでは Dictionary : switch : 事前コンパイルなし正規表現 = 3-4 : 2 : 1 くらいの性能比かと考えられる。
switch はカスケードがさらに増えると内部で Dictionary 化して最適化されるから、一般論としては 正規表現は事前コンパイルすれば switch に肉薄する、あるいは、多少超えるかもしれないが switch に Dictionary 最適化がかかったらまた離されるかもって感じではないかと。
>>52 ありがとう。Match Evaluator 正規表現でハッシュ置換するのはもう四半世紀も使っているテクだけど他で見たことなかったから、Ruby の例は参考になる。
このスレにいる人たちで
C#を日本語で記述ってのを実際にやってる人、どれくらいいるかな
https://togetter.com/li/1441951 を読んで試してみてもいいかなと思ったんだけど
VisualStudioのコード補完が利く環境ならIME切替の手間もさほどかからない気もするし
何か致命的なデメリットとかあるんだろうか
>>54 ほとんどいないのでは?w
デメリットはインテリセンスとの相性の悪さに尽きるね。
どうでもいいけど「C#を日本語で記述」の是非というより識別子に日本語を使うことの是非だよね
論より証拠、やってみたらいかに非合理な試みか分かると思うよ
Ruby では、RSpec(BDD)のユニットテストで、 日本語の関数名を付ける人はいるけど まあ、テストだからね
enumの要素で使うと便利 どうせ数はないからインテリセンスも問題なし
>>54 補完のために半角英数+日本語が便利
これなら最初だけだしIME切り替えは
補完はomnisharp + migemoで解決できる 他言語で変数名に日本語使うのはよくやってるけど扱う対象の用語が固まってる場合は便利 そうじゃない場合は結構厳格に命名ルールを決めないと逆にわかりにくくなったりする
俺が英語ができなかったり、デザインパターンの理解が足りなかったりするせいだとは思うけどさ どうしてもファイル名=ネームスペース名=クラス名=主なメソッド名になりがちなんだわ 単一責任の原則に合わせた時、ファイル名〜メソッド名まで決める簡単な基準とかあったら教えて欲しいな
ファイル名=publicクラス名.csは一般的 ネームスペース名はそのクラスが属するレイヤーとかコンポーネントの名前 アーキテクチャが整理されてればあんまり迷わないと思う クラス名=主なメソッド名は状況による FormatterクラスにFormatメソッドがあるのは自然 Utilitiies > Formatter > Format
日本語を使った感想 メリット 名称に悩まない(重要) 比較的読みやすい デメリット インテリセンスと相性が悪い imeの切り替えが面倒 大文字小文字がないから名称が被りやすい システムハンガリアン推奨 他にも何かあった気がする
プロパティーやフィールドはいいけど、メソッドやイベントの名前は馬鹿っぽくはなるねw
プロパティはいいとしてメソッドは動詞(+名詞)の形にするの 日本語だと不自然だけどどうしてるのかな
>>58 中点使ってるせいでC#6.0対応時にエラー吐いたプロジェクトあったわ
>>54 DBテーブル名/カラム名が日本語名のWindows業務システムで、
Entityクラスや画面コントロールの命名をDBそのまんまの日本語にしたら
ソースが滅茶苦茶読みやすくとても良い感じになった
以後、積極的に日本語で命名するようにしてる
自分の書き方だと、
日本語を使うのは画面項目や業務用語の名詞のみ、動詞は英語
英語とチャンポンして Update利用情報()、Is有効期限内 みたいなメソッド/ブロパティをよく作る
ローカル変数はiとかsとかtとか適当なプレフィクスをつけて無理やりcamelにする
フィールドは_始まり
とかかな
日本語で書くコメントが大幅に減らせてメリット大だと思う
デメリットは…C#関係ないけど
postgresだとテーブル名が日本語だとテーブルエクスポートが出来なくて不便、
多分ASP.NETみたいなWebシステムだと日本語名を使うのはリスク高い、
とか
Listについて質問なのですが BindingList<T>にはToList()では代入できないのでしょうか? LINQの結果をToListで代入しようと思ってたのですが 型が違うとか出るんです(自作クラスによるListです) 普通のList<T>へならできるのでBindingList固有の問題かと思います 仕方なくforeachで一つずつ代入して一応目的は達成してるんですが LINQでforeach使わず抽出しておきながら 最後に代入でforeach使うのはバカらしいなあ・・・と思いまして どうすれば直接LINQの結果をBindingListに入れられるのでしょう?
new BindingList<Hoge>(fuga.ToList())
>>71 おお!何かわからんけど、できた
初期化したらキャストできるの?
でもdataGridViewのDataSorceプロパティに入れてたのも外れるから
もう一度入れ直さないといけないけど・・・
razor page のコーディングについてなんですが、 1ページのデータ量が多くなれば必然的にソースも長くなりますが、2000行とかになるとごちゃっとして「目に優しくない」ソースになっちゃいます。 目に優しいコーディング方法やら規約やら法則があれば教えてください。
>>73 1メソッド300行以内っていう社内ローカルルール
>>73 Partial ViewとかView Component使って分割する
再利用しなくても分割する
個人的には200行超えると黄色信号
>>74 1メソッド300行ってすごいな
やっと会社の環境がvisualstudio2010から2019になったわ、これで非同期無双できるw
そんな環境で2019なんか入れて大丈夫か? アップデートで不具合引いてダウングレードさせられないように、不用意なアップデートはやめとけよ
2010だとNuGetすら使えないんじゃ
54だけどレスありがとう>ALL
実践してる人もそこそこいるのね
テーブルやカラムを日本語で命名できるのってAccessに限らないのか・・・・
不具合の事例も知りたいけど、具体的に出てきたのは
>>67 くらい?
C#に閉じた範囲で使うぶんには大丈夫そうかな・・・・今度試してみるよ
>>80 全角ピリオドとか&とかヤバそうに思えるのは使わないのが無難
date前月末とか昔から使ってます
昔々のACCESSで一部の通常全角文字が使えないとかありましたが、今はもう大丈夫と思ってます
将来的にトラブル可能性はゼロではないとしても、可読性のメリットのほうが遥かに大きい
例えば「要介護認定等基準時間」みたいなのを英字変数にするとかアホにもほどがある
質問でふ(^^ Unityのアセットとか覗いたりするとifは使われてまふよね(^^ Switchが使われているの見たことないんでふが(^^ あれって使っちゃいけないとかってあるんでふか?(^^ ボッキング!(^^
最適化すると数行のswitch文はifに自動変換されるんじゃなかったっけ
そうだったんでふか(^^ 教えていただき感謝感謝のボッキング!(^^
class Hoge{ int Id ICollection<Hoge> Hoges } ってクラスをEntityFramework使ってテーブルにしたんだけど無理だったりする? Hogeテーブル(Id)と、Gehoテーブル(id、HogeId、HogeId2)後ろ二つ外部キーみたいなイメージなんだけどこういうパターンが調べても出てこない
>>86 この構成じゃ出来ないことが分かったので質問を取り下げます
webview使ってブラウザ操作してるんですけど、相手がASP使ったサイトだとボタン押したりテキストボックスに文字入れたりって操作は無理ですかね?
jsonファイルを読んで、木構造を編集して、jsonファイルに出力する ファイルの入出力はJson.NETを使用 この場合内部のデータ構造はどう持つのがいいでしょうか? Json.NETのJTokenを使うか、自作するか考えてますが、 標準的な手法は有りますか?
ちゃんと型を付けてデシリアライズ→加工→シリアライズする 型を付けるまでもないアドホックな処理ならそもそもC#なんか使わずに他のスクリプト言語を使う
質問なのですが エンティクラスを配列に入れて使うようなことはできないでしょうか? 数が多いのでループでコードをすっきりさせたいです。 こんな感じなのを public class test() { using (var context = new MyContext(connection)) { var datalist1 = context.MyEntities1.ToList(); 〜 var datalist100 = context.MyEntities100.ToList(); } //以下 共通処理 } こんな感じで使いたい string[] MyEntitiesList = new string[100]; MyEntitiesList[0] = "MyEntities1"; MyEntitiesList[1] = "MyEntities2"; 〜 MyEntitiesList[99] = "MyEntities100"; for(var i =0;i<100;i++) { var datalist1 = context.MyEntitiesList[i].ToList(); }
var datalist1 = 上書きで良いなら最後のだけ入れろ
>>92 すまないよくわからないのでもう少し説明をお願いしたい >>91 こんな感じで使いたいを修正してみました。 string[] MyList = new string[100]; MyList[0] = "MyEntities1"; MyList[1] = "MyEntities2"; 〜 MyList[99] = "MyEntities100"; public class test(int i) { for(var i =0;i<100;i++) { using (var context = new MyContext(connection)) { var datalist1 = context.MyList[i].ToList(); //以下 共通処理 } } } >>93 92 は for ブロック内部の代入式の左辺が変わってないよ、というツッコミ。
やりたいことは、抽出対象プロパティをテキストで指定してシステマティックにデータ抽出したいってことでしょ?
Dictionary やインデクサで、テキスト => 対象プロパティ or 抽出メソッド、のマップを作って、Reflection か何かで呼び出せばできそうな気がするけど、LINQ to Entities でワークするかどうかは試してみないとわからないな。
>>93 有益な回答を得るためにもう少し説明が必要かも。
なぜ抽出対象プロパティをテキストで指定する必要があるの?
1 カラムごとに 100 回抽出しようとしているけど、まとめて 100 カラムをワンショットで抽出してから加工するのではなぜダメなの?
また環境が EF6 なのか EF Core なのかも言及した方がいいかもね。
ごめん、勘違いしていた。 テキストで指定したいのはカラムじゃなくてテーブルなんだね。
そうですそうです。 データを取り出すところ以外はほぼ変わらないのに ↑のコードだけでも1テーブルの数が多い場合余裕で1万行超えてしまうので public bool test1() { } public bool test2() { } 〜〜〜〜 public bool test1000() { } と用意して test1(); test2(); 〜〜 test100(); を public bool test() { } for(var i =0;i<100;i++) { test( iLop ); } だけにできないかと思っています。
抽出テーブルを動的に指定したいなら、DbSet<T> を返すプロパティが DbContext の派生クラスに定義されていると思います。 型引数 T にテキストは直接指定できないので、その DbSet<T> 型のプロパティをラップするメソッドを定義して、テキストを引数で渡してやればよいのではないでしょうか。こんな感じで。 class MyDbContext : DbContext { DbSet<MyEntityDataModel1> MyEntity1 { get; set; } DbSet<T> GetTable<T>(string table) where T : CommonBaseClassOfMyEntityDataModels => this.GetType().GetProperty(table) as IQueryable<T>; } // 呼び出し側 context.GetTable(“MyEntity1”).ToList();
>>97 そういう目的ならテーブル名をテキストで指定する必要もなくて、
foreach (var prop in context.GetProperties())
{
var table = (prop as IQueryable<CommonBaseClass>).ToList();
// table に対するテスト処理
}
でよいかもしれない。
ただし下準備として、DbContext の全プロパティのデータコンテナを共通で受ける基底クラス CommonBaseClass を定義する必要がある。
似たようなことはやったことあるのだけど、このコードが手直しなく動くかどうかはわからない。
テスト処理もラムダ式のリストで用意しておいて、各テーブルと Zip() して適用するなど、LINQ を活用するとよいと思うよ。
>>90 説明が稚拙で申し訳ないです
プログラムはフォームで、木構造の編集とはノードのコピーや削除、値の編集などをGUIで行います
GUIの理由はJSONファイルはあるスマートウォッチのカスタムフェイス用で配置などを確認するためです
自分が知りたい事はc#でよく使われる木構造を扱うライブラリです
>>99 >>100
ありがとうございます。
まだうまく動いていなくて返事遅れました。
100参考にして試してみます。
>>99 >>100
さっぱり動かせそうにない
CommonBaseClassOfMyEntityDataModels
CommonBaseClass
の説明をもう少しお願いできませんか?
プロパティ DbSet<EntityModel1> MyEntity1 や DbSet<EntityModel2> MyEntity2 の型引数 EntityModel1, EntityModel2 があるとすると、その共通基底クラス BaseEntityModel を定義する必要があります。 class EntityModel1 : BaseEntityModel {} というように。BaseEntityModel は抽象クラスでも可。 そうすると、.GetProperty() の返り値の型が、DbSet<EntityModel1> だったり DbSet<EntityModel2> だったりするのだけど、これが IQueryable<BaseEntityModel> という型で共通的に受けられるということを想定しています。
訂正。 .GetProperty() ではなく .GetProperties() でした。
>>104 明日また試してみます。
丁寧に説明ありがとうございます。
>>101 よく分からん理屈だなあ
そのスマートウォッチの設定に限らず、世の中のアプリが扱うデータなんて大半は木構造なわけだが、
そいつらがみんな木構造を明示的に扱うようなGUIを持ってるか?
断言するが、明示的に木構造を扱うようなUIが必要なのはフォルダツリーのように再帰的な構造を扱う必要がある場合だけだ
それ以外は必ずもっと適したUIがある
while文がネストしていた時、階層の奥から一番外側のwhileループまでブレイクするにはどうするのが正しいのでしょうか? while(true){ while(true){ if(true) 外側のwhileまでbreak; }} よろしくお願いします
ここでいいのか分からないんですが質問させて下さい。 macでのvisual studioないしはC#の解説の載っているサイト、もしくは操作方法などを教えてください。 つい先日3Dモデリングやゲーム開発に憧れてC#の本を手に取りました。情報系の知識はないに等しく、せいぜい中学の授業レベルです。 「やさしいC# 第3版」を手に進めようとしたのですが、当方macで作業しようとしていたため、本の内容と実際の動きが異なり、四苦八苦しています。 現状なんとかhello worldはできましたが手順が理解できておらず困惑しています。 よろしくお願いします。
>>107 漏れてて申し訳ないです
そのスマートウォッチではノードの記述順によって表示順が決まるので木構造の順番を入れ替えたい
入れ替える枝の深さもまちまちですので木構造を直接編集できた方が良いと思った訳です
また、全てを木構造で扱うのではなく、末端部は類型化されてますのでクラスにして編集の予定です
>>106 当初は利用目的がわからなかったため、.GetProperties() やジェネリックで対象を動的に指定して DbSet<T> 型プロパティを呼び出す方法を提案しましたが、 DbContext に MyEntiyty1, MyEntity2, ... と 100 個のテーブルがあり、個々のテーブルに対応した Test1, Test2 ... というテスト関数を地の文で定義しており、 これをシステマティックに対応させたいというのが課題の本質であるなら、実はジェネリックとか使わなくてもできます。 テスト関数 Test1 は DbSet<MyEntityDataModel1> が入力で bool が出力として bool result1 = context.MyEntiti1.Test1() or Test1(context.MyEntity1) と記述できるように定義されていると思いますが、これを下記のように変形すればよいと思います。 1. MyDbContext を入力として bool result1 = context.Test1() or Test1(context) と記述できるようにテスト関数を書き換える (Test1 内部の冒頭で context.MyEntity1 と対象を指定する) 2. テスト関数をラムダ式にし、地の文で定義している Test1, Test2 ... というメソッド群をリストオブジェクトにする List<Func<MyDbContext, bool>> TestList = new [] { context => { context.MyEntity1 /* ... */ }, context => { context.MyEntity2 /* ... */ }, ... }; 3. using ブロック内 for/foreach 文でリストオブジェクトをキックする using (var context = new MyDbContext()) { bool result[100]; for (var i = 0; i < 100; i++) { result[i] = TestList[i](context); } } >>110 ゲーム開発がしたいならUnityを使う
Unityの本を買え
Mac版のVisual Studioは一応あるけど誰も使ってないから本は存在しない
>>110 まずMACを捨てましょう
プログラミングはwindowsでないと、今は良くても後々面倒だと思います
私がゲーム開発してた頃はDirectX使ってました
3Dプログラミングはサインコサインタンジェント使いまくりなので数学の知識がいります
2Dは足し算引き算ぐらいなので初心者でもできると思います
画面にドット絵表示までが鬼門ですがそこ乗り越えられたら楽しい世界が待ってるのでがんばってください!
>>114 MacでもWindowsが動かせるから捨てる必要なし
>>112 こんな書き方もできるのか勉強になりました。
色々調べて試してみて
>>100 をベースにして思ってたように動かせました。
コードすっきりになりました!ありがとうございます。
そもそもweb周りなんかだとはMacかなり多いのにプログラミングはWinで!なんて発想はどこから来るんでしょうか 2Dであろうと三角関数くらいはガンガン使います
webは簿給でMacのお布施を払っていると 儲けが減ってしまうからですよ 血の繋がりの無いパパさんが見つかると良いですね
>>120 まじか
同じ世界に住んでるようで違う世界なんだな
金融医療なんかと比べりゃ薄給かもしれんが世間の平均以上はあるでしょ
そら平均ないとこもいっぱいあるし中間搾取が多い部類だとは思うが…
日本は世界的に見てweb系、というかプログラマ自体が安いってのはあるけどそれでも他業種に比べりゃ全然マシだと思うよ
web系と一括りにしているが
>>118 が経験した狭い範囲でのことだろう
webは金になるよ プログラマーの花形だから 求められるスキルは最下位だけども 組み込みプログラマーとゲームプログラマーが最上位 前者はハードの知識も求められるし、後者はプログラムの真髄まで知っとかないといけない ゲームプログラマー経験してたら、他の分野のプログラマーの仕事はほんと簡単だもん 若い時はムチャやって良かったと心の底から思う
110の者です。反応してくださった方々ありがとうございます。 ひとまずUnityのガイドで勉強してみます。 C#を勉強するなら、現状手元にはmac book airしかないためWindowsを入れるしかないみたいですね…(スペックギリギリですが…) 一応理系なので三角関数自体は大丈夫です。 ちなみにプログラミングの初心者がまず勉強すべきもの、もしくは買うべき本などありませんでしょうか? 場違いの質問で申し訳ありませんが、教えていただけると嬉しいです。
ゲームは知らんけど、組み込みはほんとピンキリだよw 学者みたいに何でも知ってる人もいるけど、狭い範囲のことしか知らないくせに コード書かせたら構造化以前なんて人もゴロゴロいる web系は仕事内容は良く知らんけどストレス度は高そうだよねw なんか俺は最先端のとんがったことやってるんだぞ的な自己陶酔系の人が多いように感じるのは、 そうでも思わないとたぶんやってられないんだろうなと想像
>>125 Unityならmacで十分だよ
Windowsでないと後々面倒というのは、会社で使うのはWindowsがほとんどだから
もし仕事にするなら、今から使い慣れてた方がいいということ
開発行為自体だと、unix系のアプリケーションならmacの方が色々揃ってるからやりやすいし
Windowsのアプリケーションなら、当然Windowsがやりやすいよ
>>123 オプションとなるスキルが違うだけでプログラミングスキルはどの分野でもピンキリ
>>123 2Dなら足し算引き算だけなんていってる人が"プログラムの真髄"なんて言っても、自分がやったことある範囲の知識がすべてなんだなって感じで説得力ゼロだぞw
プログラムかじった事ない人にいきなり三角関数必要とか言って作れると思う? 3Dは数学の知識が最低減ないと作れないけど、2Dは三角関数知らなくても作れる 分かったような口聞くな
三角関数をなんだと思ってるんだよ 中学生なら習ってないからしょうがないけどさ
>>132 >プログラムかじった事ない人にいきなり三角関数必要とか言って作れると思う?
この文章だけで頭の悪さがよく分かる
自然言語でまともな文章書けないやつに
まともなプログラム書けるやつはいない
三角関数なしに2Dゲームを作ることはできる 数学知識なしに3Dゲームも作れる 流石に加減乗除くらいは必要だが 無くても何かは作れると何を作るにも不要かどうかは別の話
>>135 ほうー
3D空間を数学の計算以外でどうやって動かすのかな?
キャラクター動かないゲームかな?
下らない話はそのぐらいにしておいたら? 中学生じみてるよw
Unityなんかに任せるとか? 結局使うことになるとは思うけど、使わずに済まそうと思えばなんとかなると思う。
テンプレ読んでください オイコラミネオ MMab-7F0B ワッチョイ 7707-7F0B NG
C#でコルモゴロフスミノフ検定した上で、単回帰分析とかするライブラリってありますか? 統計解析するならテキストファイルにデータ書き出して、 PythonとかRにわたすほうがいい?
byte[]として受け取ったmp3をファイル化せずにそのままmp3tagの読み書きを行えるライブラリはないでしょうか? 出来る限り通信のやり取りだけで済ませたいため、受け取ったmp3バイナリをそのまま処理して受け流したいと考えています。 taglibは試してみましたが、FileStreamとして渡さないと上手く機能しないようでした
Streamクラスとして抽象化されてるんじゃないの? taglibは入力にStreamを受け入れんじゃなくて、FileStreamというより具象的な入力を受け入れるような馬鹿な設計になってるの? byte[]をMemoryStreamでラップして渡せないの?
ビットマップを編集するライブラリがFileStrem前提になってたら馬鹿設計だけど Exifを編集するライブラリがそうでも別に馬鹿とは思わないなあ
まじで言ってる? 例えば、カメラで撮影したローカルにあるJPEG画像を投稿サイトにアップロードする機能つくるとき、EXIFを消してアップロードしたいありがちな機能。 MemoryStreamを渡せれば、元のファイル変更せずにメモリ上で修正してアップロードして破棄できる。 同じことをやるにはFileStreamだと一々コピーしないといけない。
タグ部分と同じ構造体作って該当部分のバイト配列を構造体に変換すりゃ済むんじゃないの
TaglibSharpの.net Standard版をUWPから使っているが TagLib.File.IFileAbstractionってのを使ってストリームを操作している 自分でこのインターフェースを実装すれば割と簡単に行けると思うよ 実装してクラスをTagLib.File.Createに渡せば問題ない
>>149 それ、別にFileStreamを受け取ってStreamを吐く仕様で何も困らないのでは?
>>146 >>151
ありがとうございます。
IFileAbstractionを実装したクラスでCreateしていましたが、CloseStreamで内部のMemoryStreamをDisposeしてしまっていたため、挙動がおかしくなっていただけでした
TagLib.File.Save()を行うことで初めて内部のstreamにTag情報が書き込まれ、同時にCloseStreamも呼ばれるためそこでは内部のstreamを閉じずに自前の後処理を行ってから閉じることで希望の動作になりました
ヽ(・ω・)/ズコー まあ、バグ調べてて「俺ってバカ?」って思うことはよくあることだ バグ作り込む気は全く無いのに、毎度あるのは何でか不思議でならない (まあ最近は熟知してない言語で作ることが増えてきたのもあるが、COBOLごときでも一緒だったな…)
ライブラリを作ろうかと思うのですが あるクラスをライブラリ内ではインスタンス化できるようにしたいけど ライブラリを使う人はインスタンス化できないようにする というようなことは可能ですか? 参考になるサイトなどありますか? クラスのプロパティは基本的にすべて読み出しだけ可能にする予定です。
>>152 じゃあさあ。ネットワークから受け取った画像をファイルに保存せずに、そのまんまEXIF修正して別のサーバーに送り返す場合、どうするの?
と、使う方次第で色んな用件があるわけ。
実装コスト増えるならまだしも、今回のケースでは読み書きできてシークできるStreamであれば良さそうなのに、それをFileStreamに限定するの意味がわからない。
この動画の人がVisual StudioでやっているAuthenticatonをオンにする設定は、dotnetコマンドではどうやるのですか?
VIDEO c#からpythonのmatplotlibを呼んでみたらグラフ描画に10秒くらいかかった・・・ めんどくさい数値演算とかをPythonライブラリに丸投げしたかったけど厳しい グラフ描画はwinformでやるにしても描画するための連続データを戻り値として受け渡しするのなぁ
>>156 ありがとうございます。
難しく考えすぎてました。
>>160 その程度の何が障害なの?
ナメてるのか?
>>163 食ってかかるなよ
>>160 ふーん。日記ならママにでも聞かせとけよ
自分で使う用のWinデスクトップアプリケーションを作ってみたいのですが VScodeにC#の拡張をインストールしたところ、".net Coreが無い"というメッセージが出ました .net frameworkを後から入れるつもりだったのですが 現在はframeworkではなくCoreを使用するのでしょうか? 軽くしらべたところ、Coreはサーバサイ用、frameworkはデスクトプ用っぽいんですが Coreでデスクトップアプリを作成するチュートリアルもあるようでした
coreはサーバー用ではないよ 今ならデスクトップアプリでもcoreで作るけど別にframework使えないってわけでもない 古い環境への配慮とか考えなくていいならcoreでいいんじゃない?
そして System.Drawing の移植性の無さで 泣ける。
WebBrowserでカスタムHeaderの送信とResponse Headerの取得ができません .net core 3.1を使っています。バグでしょうか?
>>166 ありがとうございます
Core入れてきます
>>169 そのレベルだと、VSCodeでxaml手書きはキツいんじゃない?素直にVisual Studio使いな
今ならBlazorが簡単で良いよ 一般常識レベルのHtmlがわかってれば後は直感で作れる
C#使いたがる人ってWebに苦手意識がある人が多い印象だなあ 最初からrazor使えるような奴はそもそもC#(というかWindows開発)を選ばないと思うよ
嫌ぁCAD+画像処理屋なので、webじゃ やっとれんだけですよ。 SPIDERがwebに乗って実用化されたら 考える。
今のprismはMSとは無関係な単なる野良ライブラリの一つだからダメ
skiasharp Microsoftの純正ライブラリー 扱いなのに(nugetでは) 情報が少なくて笑える 人脈が無いとこういう扱いなのかw
流れ読まずに。 private int hoge(){ using(/* なんか入る */){ /* ひたすら処理 */ return nanka; } } こういうreturnの書き方は一般的なのでしょうか? usingの中カッコの外にreturn文がないと値の返し損ねがないか心配なのですが VisualStudioの警告は出ないしアリなのかナシなのか諸兄のご意見をいただきたく。
>>183 普通にアリ
メソッドから戻る直前にDisposeが実行される
なお、C#8以降では以下のように書けるため、従来のusingブロックはほとんどの場合必要なくなった
using var x = new Hoge("Arial", 10.0f);
x.Foo();
// メソッドを抜けるときに自動的に x.Dispose が呼ばれる
>>183 returnが無いパスがあったら警告出るよ
警告が出ないということは必ずreturnが呼ばれている
>>181 ,179
ありがとう。DIコンテナにUnityを使ってて、App.xaml の RegisterTypes で RegisterSingleton で登録する共用クラスがあるんだけど、このコンストラクタに引数を渡したいです
UnityContainerの中で生成するタイミングがわからなくて渡し方がわかりません
>>184 ,185
ありがとうございますm(_ _)m
usingの中カッコの中で変数宣言してそれを返せて終われたらいいなと思ってたのでこの書き方でやってみます
>>187 コンフィグクラスかコンフィグ読み込みクラスを注入すればいいよ
>>189 ああそりゃそうか。DIコンテナがあるんだからインジェクションすればいいだけなんだねありがとう
作ったプログラムをUbuntuのバックグラウンドで動かし続けたいんだけどさあ nohup dotnet run & だと、動かないのかすぐ終わっちゃうのかわかんないけどダメだったぜ どうすればよかんべえな?
>>193 Docker使うのが簡単だしスキル的にも得るものが大きい
>184 1000行近い関数が沢山あるクソコードだと以前の方が便利だな(涙目)
頻出パターンだと思うんだけど、 ツリービューとかデータグリッドを選択したら詳細を表示する画面で、詳細部分のリジョンにナビゲーションで登録する時って、 詳細のビューのコードビハインドに書くしかないのかね。 サンプルがそうなってるけど、コードビハインドに書くのに抵抗がある
React等の仮想DOMを使ったモダンなMVVM系Webフレームワークでは、コンポーネントとしてVMを階層化する。 この場合、親VMが子VMとしてツリービューVMと詳細VMを持つ形になるだろう。 そして、ツリービューの選択項目が変更されたらツリービューVMがそれを受けて親VMに通知し、親VMが詳細VMの表示対象データのプロパティを更新する。 WPFの原始的なMVVMではそのへんはあまり洗練されていないし、そもそもWPF自体誰も使ってないから特にベストプラクティスのようなものも無い。 WebのMVVMを真似するのもコードビハインドを書くのも君の自由だ。
>>200 ごめんなさい。モジュールでレジスタービューウィズリジョンじゃなくて、レジスターフォーナビゲーションを使って登録するとこのことです
公式サンプルのベーシックリジョンナビゲーションの書き方をみての質問です
JavaScriptによって書き換えられた後のhtmlを取得する方法ってWebBrowserでInvokeScriptなどを使用する以外にはないでしょうか? 出来ればHttpClientやWebClientで済ませたいのですが
WebBrowserクラスやヘッドレスブラウザを使うところまで行ってしまうとC#で作る利点が薄れてしまってChrome拡張で作るか、となってしまうんですよね・・・ 一般的な行数のスクリプトであればソースを見てC#のコードに置き換えるということで今まで解決してきたのですが、そうはいかない量のコードだとやはりブラウザに頼る他ないですよね
コントロールに適用したいStyleがあるので、Generic.xaml を作成して、 App.xaml で ResourceDictionary.Merge Dictionaryしました。その中で自作のコンバータークラスを使いたくて定義したのですが、どうしても認識してくれません。ビルドは通るのですが、実行時に見つからないエラーがでます(xaml parse exeption) 同じ定義を App.xaml の中で、Generic.xamlをマージする前に書くと、何故か実行時にエラーも出ませんし、ちゃんと動きます。 Generic.xaml の中でコンバーターを定義することは出来ないのでしょうか
すみません。相談室が荒れてるのでこっちで質問させてくださいm(_ _)m
まじすか(´・ω・`) using について論議してたころはまだ読めたけど、一昨日ぐらいからダメな言い争いになってる
>>210 で、質問はなんなんだい?答えてやらないが読むだけなら読んでやるぞい
>>213 順番が前後してごめんなさい
質問は
>>209 です
>>209 >Generic.xaml の中でコンバーターを定義することは出来ないのでしょうか
Generic.xamlの中では定義できないんじゃないかと思うなら
自分で違う任意のxamlを定義してApp.xamlでMergedDictionariesして
使えるかどうかで切り分けたらいいんじゃない?
>>215 ,216
そうかコンバーターって静的でもインスタンスが必要だからリソースとしては定義できないってことですかね…。同じことしてる人がいるもんですね。ありがとうございます。
マジカヨ
>>216 リンクの回答者は書き方こう変えればできるよって書いてるじゃん
MarkupExtensionを継承するのが一番楽
>>218 言葉足らずですみません
質問にも書いている通り、Generic.xaml の外側に書けば view でも App.xaml でも定義出来ることは確認してるんです。ただ generic.xaml の中でしか必要ないのであれば、generic.xaml の中に書けないかというのが質問でした
>>218 > リンクの回答者は書き方こう変えればできるよって書いてるじゃん
いや、それがGeneric.xamlに書くのを諦めろんってことなんだが…
>>220 viewやApp.xamlで定義したんじゃ切り分けにならない
「見つからない」のがなぜか考えて切り分けしていかないと
>>221 回答者が書いてるのはGeneric.xamlの一部
>>221 ,222
あーなるほど。すみませんいただいた回答の記述を読み違えました。これ参考にしてやってみます
MarkupExtension を継承するのはやったことないので、これも調べてやってみます。ありがとう
Generic.xamlが問題なのではなく、TemplateBindingだとダメ。 動的なものはBindingで指定しませぅ。 って、もう解決したかな...
デザインパターン使う場合のクラス名とかってそのパターンに則ったクラス名付けた方がいいよね? StrategyパターンならContextとかXXStrategyとか Contextはふわっとしててイマイチな気がするんだけどXXContextにしたほうがいいんだろうか
コードを見る人のレベルに合わせる 書いてて意味が分からない人達にそれをやっても理解を妨げるだけ
自学習がてら書いてます 純粋にコードベースで考えた場合にどうあるのが望ましいかを身に付けておきたいです
>>226 MSは基本的にデザパタ用語を名前に含めない
あくまでMSの流儀なのでお前が従う筋合いはないが、少なくとも.NETではあまり好まれない傾向があるようだ
>>228 まずは細かいところに引っ掛からず自分の分かりやすい命名で学習を進めればいいよ。
慣れてきたら標準的ライブラリや参考書等を真似たりして自然に落ち着くとこに落ち着くと思う。
関数名を文字列で指定して実行する方法ってないですか? テスト用の関数が何個もあってif文による分岐とか面倒過ぎます。
>>232 うわぁ知らなかった
つーかググってくださいだろ
>>233 質問してるくせに上から目線の上にお礼も言えないやつはさっさと死んでください
>>235 すいません本当は感謝してます
それにしてもこのスレ、入門っていう割には
ifとかforの質問がなくて何か上級者ぶってる気がします
DOMとかMVVMとかそんな文法知らないんですけど
>>236 初心者と言ったってそれが指す範囲に幅があるし、初心者なんだから自分の知らないことが出てきて当たり前だろう。
いちいちつまらないケチを付けないと気がすまないタイプなのか?
Cにおけるerrno.h のようなものは無いですか? コンソールアプリで、終了コードにマジックナンバー書きたくないのですが
ifやforで質問があるならすりゃいいじゃん 過去スレ全部見てるわけじゃないが146もいってりゃそういう質問もあっただろうよ
>>239 自分で定義すればいいのでは?
.NETにはたぶんそういった類のものは無いんじゃないかな
.NetFWももう4.8か VS2019入れてビックリだよ
>>239 勘違いしてるみたいだが、プログラムの終了コードとerrno.hは無関係だぞ
初心者は馬鹿だから、勉強項目のレベルが分かってない! 初心者のくせに、リフレクションみたいな黒魔術・メタプログラミングをやりたがるw 自分がやりたい機能の、勉強レベルが分かってないから、 難しい事でも、それが分からずにやりたがる 勉強レベル 1. 初心者用の本 2. Effective 何々、逆引きレシピ本 3. フレームワーク・テスト技法 4. メタプログラミング(黒魔術、動的定義)
文字列で指定した関数を実行したいということは数十年前から初心者にはありがちな願望だが それはダメなやり方とされている 約40年前の自分も同じ願望を持った
>>243 すまん、しばらく使ってないからうろ覚えなんだ
cstdlib.h
だっけか
とりあえず
return 0;
とか
Environment.exit(0);
とかせずに済む方法が知りたい。
>>245 コード書き換えは自己進化につながるからAIの人類侵攻を防ぐために止むを得なかったのだ。
>>247 つまりシステム標準の定数定義は無いということ?
>>249 https://docs.microsoft.com/ja-jp/dotnet/api/system.environment.exit?view=netframework-4.8 @No__t-0 パラメーターの場合は、0以外の数値を使用してエラーを示します。 アプリケーションでは、独自のエラーコードを列挙で定義し、シナリオに基づいて適切なエラーコードを返すことができます。
たとえば、必要なファイルが存在しないことを示す値1を返し、ファイルの形式が正しくないことを示す値2を返します。 Windows オペレーティングシステムで使用される終了コードの一覧については、Windows のマニュアルの「システムエラーコード」を参照してください。
https://docs.microsoft.com/en-us/windows/win32/debug/system-error-codes?redirectedfrom=MSDN >>250 エラー以外が 0 っていう定義は、C(Unix)でもそうだからわかるけど、その0を定義してる、
Cにおける stdlib.h の EXIT_SUCCESS のようなものは無いの?
あと、「@No_t-0パラメータ」ってなんでしょう?
ググったり、手元にあるオライリーの「プログラミングC#」の索引を調べてみましたが、それらしい情報が出てきません
>>251 >Cにおける stdlib.h の EXIT_SUCCESS のようなものは無いの?
ありません
何かエラーで意味ある情報出したいのなら定義済みの例外投げるのがいいんじゃないかな
それでも成功したときは情報出せないけど
>あと、「@No_t-0パラメータ」ってなんでしょう?
英語版見た感じ機械翻訳のミスっぽい
https://docs.microsoft.com/en-us/dotnet/api/system.environment.exit?view=netframework-4.8 >>252 >>239 >コンソールアプリで、終了コードにマジックナンバー書きたくないのですが
という前提なので例外は問題の解決になりません
標準の定義が存在しないことが断定できれば、独自定義を持つ理由にできるのですが
なんか日本人的だなあw 標準の定義が存在しようがしまいが終了コードの意味なんて 使う人が分かればそれでいいでしょ。 そもそも今時そんなもの使う人いるのかなw いないと思うよ。だって前時代的な過去の遺物だから
UIアプリだと人がついてなきゃいけないから自動化できんのです
例外と終了コードの対応Dictionaryを作って 最上層で例外をキャッチした場合はそれを終了コードにすればいい そもそも特殊な場面を除くとしたときC#使うような環境で 終了コードなんて 0 or not 0 以外で使う奴いるのか? エラーメッセージを直接ログに吐くのが主流だろう
いや、コンソールアプリの終了コードだから、最初から最上層のはなししかしてないんです。 >そもそも特殊な場面を除くとしたときC#使うような環境で >終了コードなんて 0 or not 0 以外で使う奴いるのか? 言ってることは理解できるし、自分もそう思うけど、 それは Environment .exit 0; という記述の妥当性は場数を踏まないと理解できない、ってことじゃね? 場数を踏まないと理解できないようなコードを最上層には置きたくない
>>257 何を拘ってるのか理解できないな。
ソフトウェアの外部仕様として終了コードの値と意味を定義して、それをenumでソースに書けばいいだけでないの?
もともとの質問としては終了コードのシステム定義がないのかって話でしょ .NETの基本クラスライブラリでは定義されてない、で終わる話 じゃあどうするかとかは別の話
ローカルコード定義するならenum使っても意味ないような ローカルで閉じてるシステムで使うならそれでもいいかも知れないけど
そもそもここでそれを聞いて >標準の定義が存在しないことが断定 できるって理論がおかしいけどな
enumなりconstなりstatic readonlyなりで定義 外部に公開する必要がある情報ならreadme等に記載 OSSならコード見ろ 仮に標準で定義されていても各数値が何を意味しているのか?はドキュメントかコードを参照するしかないじゃん
>>264 >>261 >>267 数値の意味と、それがどこで定義されているかは別の問題では?
標準で定義されていれば、例え規格が変わっても、対応した処理系でコンパイルしなおせば同じコードがそのまま使えるけれど、ローカルで定義していたらそうはいかない
>>268 そもそもerrno.hが終了コードを表しているというのが勘違いだぞ。あれはシステムコールや標準ライブラリ関数の戻り値の定義であって、あくまでもCのコードの中の話だ。
>>268 何の規格の話?お前のシステムの規格が変わったのなら、なおさら独自のenum等で定義しておかなきゃバグるやろ
そこまで言うからには もちろんコマンドラインで -h ってやったら 戻り値に関するヘルプも出るんだろうな 俺は見ないけど
初心者のつまらん質問で申し訳ありません メッセージボックスを親フォームの中央に表示させたくて、方法を探したところ Win32APIを使った方法を見つけましたが、結構コード量が多くて面倒くさそう・・・ これなら自前のモーダルフォームを作って親フォームの位置取得して表示させる方が簡単ですかね? 皆さんはどうされてます?
すでにコードがあるならコピペするだけじゃね? ライセンスは知らん
>>269 誤りがあったので訂正。
戻り値そのものでなく、戻り値がエラーを示した場合に参照するerrnoの値(エラー番号)だな。
>>272 APIをラップしたクラスを作ることをお勧めする
自分でFormから作ってもいいけど文字列に合わせてウィンドウサイズを調整したり
パラメータに合わせてアイコンとかボタンを作ったりする方が面倒だと思うよ
>>272 そんなの気にしてたの最初の頃だけだったな〜
自前でフォーム作ってもアイコンとかほぼ互換にするには手間かかる
APIでも大して変わらんのでは
他でも使い回すなら手間かかるかではなく、使い勝手がいいように組める方優先
おそらくエラー定義に拘ってる人は 元々自分で定義したらC使いの上司に 「EXIT_SUCEESSとかあるだろが二重定義するなゴラァ!」 とレビューで怒られて 「自分で定義してね♡」って書いてある公式ドキュメントが欲しいんだと思う 上司を納得させられる
そういう話だったのになぜか途中からどこで定義するのか問題にすり替えた どこで定義されていようが最終的には同じなのに
>>272 WH_CBTをグローバルフックして表示位置を変更だな
>>272 自分なら自作するというかしてました。
標準のMessageBoxは使い辛いところが多いので。
(1) モーダルじゃない表示も可能
(2) カウントダウンして自動的に消える
(3) 背景だけ半透明表示可能
ついでにこんな機能付きのを作ったらどうでしょうか。
>>284 だから、処理系で定義されてるのとローカルで定義されてるのじゃ根本的に違うよ
ローカルで定義してて変更したらソースコードのリビジョンが変わる
処理系の変更だけならビルド番号が変わるだけ
わかった、話をまとめよう Q. 定義済みのリターンコード無いの? A. 無い では次の方どぞ〜
>>286 システムエラーコードとアプリケーションエラーコードがごっちゃに書いてあるのが混乱の元な気がしてきた
"In your application, you can define your own error codes in an enumeration, and return the appropriate error code based on the scenario"
canが弱く見えるのでは
「C#はヘッダファイルとかないから各自自分で定義するように!」くらいあると
そっから飛べる先に
https://docs.microsoft.com/en-us/windows/win32/debug/system-error-codes--0-499- とかがあってさも定数があるかのように見えるのも混乱のもとかと
まあ"use a non-zero number to indicate an error"と書くなら最低ゼロくらいは定義しといてくれというのはわからんでもない
>>291 別に定義しなくてもいいからcanなんでしょ
コンソールはスレッドセーフなのため? マルチスレッドで文字出す そしてもエラーがおきないか?安全か?
処理系で想像してる粒度が違う気がするけど .NET Frameworkとしては定義されてるものは無いで終わりだろ
お前らC#でWebサーバー建てたことありますか? 変な案件やらされそうで新年早々ウツ
任意に呼び出せる100個程度の文字列定数を作りたい時って地道に宣言するしかないよね?
enumは使えないしDictionaryはヌルポこわいし
>>298 IISとかではなくて?
>>301 地道に宣言するにしても、Dictionaryに地道に値を入れていく以外に簡単に生成できる方法がある
(テキストから読み込むとか、keyとvalueが同一でよい)のなら、一旦Dictionaryを作って
そこからC#のコードを文字列処理で生成してソースコードにコピペとかすると楽だよ。
C#コードの生成はもちろんC#以外の言語でもなんでもいいから慣れてる言語でやればいいし。
>>301 日本語の意味が取れないからどういうのを想定してるか具体例を書いてくれ
constでコンパイル時に解決したいというのでなければリソースファイルを使う
どうせ戻り値は、4バイト整数だろ signed int, -2,147,483,648 〜 2,147,483,647 unsigned int, 0 〜 4,294,967,295 システムが、0 〜 1,073,741,823 カスタムが、1,073,741,824 〜 2,147,483,647 の範囲を使うとして、 ひとまずカスタムは、1,073,742,000 〜 1,610,612,000 の範囲を使っておけばよい
処理系が正確に何指してるか不明ではあるが.NETのバージョンとかコンパイラのバージョンだったとして… それ更新したら普通バージョン上げないの? ソースコード変わってないからビルド番号しか上げない、みたいな運用聞いたこと無いけど… 乗っかってる大元を変えるって結構大きな変更だからコードの変更が一切不要でも念の為リビジョンなりバージョンなり上げない?
htmlファイルをディスク上に作らずに、こちらのプログラム上で仮想生成したhtmlをWindows規定のブラウザで開かせる方法ってないでしょうか? ウインドウメッセージなどでデータを送りつける等の方法があれば良いのですが
すみません、解決しました ブラウザの対応次第なものの一般的なブラウザであればdata Urlで簡単に実現できました
おまいら printf の戻り値はちゃんと毎回確認するんだぞ判ったか
Excelによる計算をマスターとした場合、 C#で浮動小数点の誤差まで再現するには、どうしたら良いのでしょうか? floatやdoubleやdecimalをそのまま使うだけでは、完全一致はしないですよね?
>>312 decimalは誤差がないが…
とりあえずそれはExcelの計算方法の再現であってC#の話題とは別
そもそものそのエクセルの計算が税法上問題なかったり物理学上の誤差などを しっかり配慮された計算なのか?とう疑問がある
内部でexcel操作するライブラリを使って実際にexcelに計算させてその結果をもらう って方式じゃだめかな? 何にせよ絶対関わりたくない要求仕様だなw
>>316 ExcelライブラリやEEPlusが使えれば良かったのですが、今回はライセンスの関係もあってExcelが無いPCで動作させる必要があるので、Excelを裏で動かす様なことは出来ないのです。
>>317 15桁処理なので、やるとしたら計算毎に桁数をカウントするとかになりそうですかね・・・。
C#で普通に計算した方が精度も出るので、すっごく無駄なことをやることになりますね。
一体どんなアホが集まればそんなふざけた案件が出来上がるんだ…
>>318 EPPlusやClosedXMLなら、Excelがマシンにインストールされている必要はないやろ
これはC#じゃなくて、CやC++に言えることかもしれませんが、 List<int> test=new List<int>(); for(int i=0; i<100000000; i++) test.Add(123456789); このような膨大な要素のリストを作った場合でも、 プログラムが動くのは、変数はメモリではなくHDD領域に格納されているからでしょうか? メモリに全て格納すれば、メモリ不足でプログラムは動きませんよね?
>>315 8086の時代じゃあるまいし、30年前だって実数計算なんかHW処理だよw
つまり、CPUさえ同一なら(変なことをやってないかぎり)VBだろうがExcelだろうがC#だろうが計算結果は同じになるはず。
現に
>>315 の計算C#でやっても同じ答えが出るよ
今どき400MBぐらい物理メモリにのっけてもそこまでって感じだけど 仮想メモリで調べよう
>>321 10000000/1024/1024=95.36
95.36*4=381MB
まぁ今のPCスペックじゃ余裕じゃね。
ある時、テンプレートで消費されるメモリの方が格納データより多くなる
どこに限界があるか自分で計ってみなされ
>>322 C++でアプリ作ったときは浮動小数点制御ワードの設定次第で、演算の精度や丸め方向が変わって演算結果に差異が出たけど、C#やexcelではどうなんだろう? 同じ条件で決めうちなのかな?
google spreadsheet とか ms office online とか 360 でも再現されるのかな
非同期メソッド(async/await)の必要性について教えてください。 Task.RunやTask.Factory.StartNewメソッドを使えば、タスクを別スレッドで生成・実行できると思います。 またこれらのメソッドによる戻り値を呼び出し側で使いたければ、Task<TResult>クラスのResultプロパティを利用してやればよいと思います。 となると、上記のメソッドと比べ、非同期メソッド(async/await)の必要性や有用性って何なんでしょうか?
弊社は庶務おばちゃんのPCですら64bitでメモリ8GB
>>331 どこから誤爆したのか知らんが10年前の話でもしてたのか?
本当はここの話題じゃないのかも知れないけどさあ .NetCoreアプリ(〜.dllファイル)に対するAppArmorの設定ってどうやるのか解説してるサイトや書籍があったら教えてくれんかな? dotnetコマンドに対する制約しかかけられないのかな・・・・
>>328 async/await で書くと、深いネストのコールバック地獄を避けられるw
>>334 むしろasync/await地獄の始まりなんじゃ
コールバック地獄のネストがasync/awaitで解消されるわけじゃないんだがな。
コールバック引数に関数リテラルを書いてるからネストが深くなるわけで、それが嫌なら 関数を切り出しておけばいい。 async/awaitを使う場合は最初からそうするしかないってだけ。
まあ逐一処理みたいに並べて書けるから便利だよね。 別の場所に用意したコールバック関数の中に次の処理書くよりマシかな
いや、こうか。 そうしないとコールバックで繋いでないな。 f1(x1,y1, f2(x2,y2, f3(x3,y3, f4(x4,y3) ) ) )
目次見る限りasync/awaitまで書いてあるようだが内容古いかな?
C#による マルチコアのための非同期/並列処理プログラミング
http://gihyo.jp/book/2013/978-4-7741-5828-0 C#で明示的にメモリを開放する手段はGC.Collect以外にはないんでしょうか? 画像やオーディオファイルを扱うアプリを作っている最中ですが、数百MBのデータを扱い終えても数分はメモリ使用量がそのままで少し気持ち悪いです GC.Collectを行うと副作用も色々とあるようなので他に手段があればと
>>344 その場合どれがコールバック?
c#ならラムダを使えばjsのコールバック地獄と同じような地獄を味わえるが、async/awaitは関係ないな。
async/awaitの件解決しました。 ありがとうございました!
>>347 普通にミスった 関数ポインタ的なものを渡してるつもりだったけど実行演算子付けてたら意味ないな f1(x1,y1,(y1,y2)=> f2(x2,y2,(x3,y3)=> f3(x3,y3,(x4,y4)=> f4(x4,y4) ) ) ) 多分こうかな やっぱりこのほうがいいな そもそもこんなに非同期処理並べるときあるか分からないけど await f1(x1,y1) await f2(x2,y2) await f3(x3,y3) f4(x4,y4) それ、非同期ラムダならawaitで待つけど普通のラムダなら普通に呼ぶだけだろう。 awaitで解消できるわけじゃなくて。
こうか f1(x1,y1,async (y1,y2)=> await f2(x2,y2,async (x3,y3)=> await f3(x3,y3,async (x4,y4)=> f4(x4,y4) ) ) )
いや、これだとasync, await使ってるから本末転倒やな もう時間ない
>>346 > GC.Collectを行うと副作用も色々とある
あくまで一般的な方針ってだけなので別に自分のアプリで問題(望ましくない時にスパイクを起こすとか)無ければ好きに呼べば良いよ
別にイリーガルなAPIというわけでもない
まあ一般的な話で言えば「メモリ残っててなんか気持ち悪い」程度の理由で呼ぶ必要はまったくないが
>>350 のコールバックが非同期で呼び出されるってことだろうから普通に並べて呼ぶだけじゃ無理じゃね
>>354 たしかに基本的には問題になりませんが、
数GBを消費することもあり、もしそのときに使用者が他に重いプログラムを起動するなどするとメモリ不足になる場合もあるかなと・・・
こういうプログラムはGC任せにするのではなくC++などで作るべきという結論になるんでしょうか?
>>346 IDisposableなオブジェクトがあれば不要になった時点できちんとDispose()するようにするとかかな。
画像を扱っているんであればSystem.Drawing.Imageとかいろいろあるんでは。
主にはMemoryStreamで巨大データを扱っていてちゃんとDisposeは行っていますが、タスクマネージャーで監視している限りだと中々メモリ使用量が減りません
>>356 その消費されているメモリがどのメモリなのかきちんと把握しないと意味がないよ
マネージドメモリが消費されればそれだけ手動でCollectせずともGCは働くはず
なのに残っているとしたらstatic変数等で無駄に参照し続けている可能性がある
アンマネージドなメモリなら既に書かれてる通りDisposeを必要な場面で呼び出していない可能性がある
加えてGC性能の観点からはDispose(正確にはファイナライザの方だけど)をGC任せにするのは
程度問題ではあるけど基本的にはご法度
現状「メモリが大量に消費されているが手動でCollectして大丈夫か」の情報だけでは現状方針は立てようがない
>>361 一応上でも書きましたがメモリリークの相談ではありません
>>362 タスクマネージャ眺めてるだけじゃ開発者が手続きを間違えいてるのか
.NETのGCがクソなのかも判断できないという話だよ
CLRProfilerなり使ってもうちょっと詳細詰めてみたら?
>>363 言葉足らずでしたが、Dispose処理を行ったであろうタイミングで減らないというだけであって待つなりそこでCG.Collectを行えばちゃんと解放はされます
ただ上でも言ったようにGC.Collectは副作用があるようなのでC++のdeleteのようなものは無いのかなと
GCって動かしてやらないと限界まで解放しないよ 限界までいって開放時のその時起きるのはストップザ・ワールドと呼ばれる有名な現象 その前にもメモリの残量を見てるアプリが動かなくなる あ、メモリ少ないじゃん俺起動やめんべ こういうのも絡んで再現不能な不具合を多々撒き散らす 常駐アプリならストップザ・ワールドが困るなら定期的に解放せんとまずい ちなみにストップザ・ワールドは10分は動かなかったときがある
>>364 まあ生存しているマネージドメモリの正体がわかり切っていて処理の途中でも無いなら
(例えば単純にユーザー操作からファイルの読み込みが完了して結果が表示された後とか)
それはCollect使っても構わない場面だと思うよ
結局副作用と言ってもヒューリスティックなGCの調整に影響が出て
細かくGCが起きる場面でのスループットが低下する、かもしれない
とかその程度だしね
サーバーじゃなくてクライアントアプリだろ? ガンガンGC.Collect打っても全然問題ないよ
>>365 なるべくストップザ・ワールドしないようにGCは改良されてきたけど、
.NET Framework 4.8でも10分かかったりする?
>>368 俺がやったのは4.5ぐらい
でもこの辺の挙動って変わるかな?
>>364 大きなメモリブロックを頻繁に扱うならアンマネージドメモリを使いなよ
アンマネージドメモリなら開放したいときに無駄なく開放できる
今はspanがあるからアンマネージドメモリの扱いも簡単だ
GCの手動実行は開放したいメモリ以外にもマークアンドスイープが発生しちゃうから効率が悪い
ちなみにMemoryStream.Disposeはインターフェース共通化のために実装してあるだけで呼び出す意味はない
GCが分単位でかかる状況ってそもそも作り出せるもの?
ストップザワールドてw PC-98の時代で頭が止まってるのかwww
時間経過だけを条件にフルGCがされることってあるのかな? メモリリークではないと言ってるけど状況的にそう言える根拠はないような・・・ - 数GBが開放されない - 数分待てば開放される(ように見える) - GC.Collectすれば開放される - タスクマネージャーでのみ確認
MSDNより ガベージ コレクションの条件 ガベージ コレクションは、次のいずれかの条件に当てはまる場合に発生します。 ・システムの物理メモリが少ない場合。 OS からのメモリ不足通知またはホストによって示されたメモリ不足のいずれかによって検出されます。 ・マネージド ヒープで割り当てられたオブジェクトによって使用されているメモリが、許容されるしきい値を超える場合。 このしきい値は、プロセスの進行に合わせて絶えず調整されます。 ・GC.Collect メソッドが呼び出された場合。 ほとんどの場合、ガベージ コレクターは継続して実行されるため、このメソッドを呼び出す必要はありません。 このメソッドは、主に特別な状況やテストで使用されます。
csvファイルを取り込むため下のようなプログラムを作ったのですが データに「"1,234",test」のようなカンマ区切りの金額データが含まれるため 「1」「234」「test」のように列が分けられ配列に格納されてしまいます。 「1234」「test」のような形で配列を取得するにはどうしたら良いでしょうか? static void Main(string[] args) { string textFile = @"C:\temp\test.csv"; System.Text.Encoding enc = System.Text.Encoding.GetEncoding("shift_jis"); string[] lines = System.IO.File.ReadAllLines(textFile, enc); foreach(string line in lines) { string[] stArrayData = line.Split(','); Console.WriteLine(stArrayData); } }
nugetでcsvhelper どうしても自前で車輪の再発明をしなければ気が済まないならTextFieldParserあたり
ダブルクオートの数は論理行内で偶数に なる事に気がつけば 難しくないよね?
Ruby なら、CSV モジュールを使うだけ CSVでは、要素内に、列区切り文字(カンマ)・行区切り文字(改行)がある場合は、 その要素をクォート文字(ダブルクォーテーション)で囲まなければならない 要素内に、クォート文字がある場合は、クォート文字を2つにしてから、 その要素をクォート文字で囲まなければならない
>>384 クォート文字有り無しが混在している時点でCSVじゃねえってことか
元々のCSVはSuperCalc の形式(オズボーン1にバンドルされていた) 今目にするCSVの仕様は、管理工学研究所が定義したK3形式が元になっている で、実際の処理には何の関係も無い
CSVという欠陥品はやめてJSONを使おう JSONならテーブル形式も違和感ない
丁度いいから聞きたいんだけどjsonのnugetってどれがいいんだ? ニュートンでいいの?
csvhelperなるものがあるのですね 情報ありがとうございます ドボンさんの情報は以前は参考にさせて頂いてましたが、 .NET2.0くらいのやり方が多いので、今はより洗練された方法がありそうだなと 思っておりました
>>388 いいの定義次第ではあるが
.NET Core 3.0以降はSystem.Text.Jsonが標準ライブラリに組み込まれた
.NET Frameworkだと4.6.1以降で使える
>>385 クォート文字の有り無しは、混在できる
CSVでは、要素内に、列区切り文字(カンマ)・行区切り文字(改行)・クォート文字(ダブルクォーテーション)がある場合は、
その要素をクォート文字(ダブルクォーテーション)で囲まなければならない
ただし要素内に、クォート文字がある場合は、クォート文字を2つにしてから、
その要素をクォート文字で囲まなければならない
でも要素内に、それらの特殊文字が無いなら、クォート文字で囲まなくてもよい
それCSVっていうよりBASIC系のエスケープっぽいねw そもそもCSVってカチッとした仕様がなかった気がするんだけど
>>393 もともとちゃんとした仕様が決まってないままに様々な方言が普及しちゃった後に、後付けでrfc4180が定義されたらしい。
>>394 斜め読みした感じ、それって定義じゃないのでは?
むしろ定義なんかないってはっきり言ってない?
定義はないけど多くの実装の最大公約数的な仕様はこうだって書いてあるだけじゃないの?
けっこう色々な種類のcsvファイル触ってきたけどこの定義から外れたもの見たことないから とりあえずこの通りに実装しとけば問題ないけどね
>>394 そもそもこれstandards trackじゃないし。informationalやん
よく見ると冒頭にちゃんと Category: Informational と書いてあるね
Ruby のCSV も、RFC4180 これが標準
ルビーはどうでもいいけどRFC4180が標準だわな
今のご時世で新規開発のデータ出力にcsv採用はセンス無いですか? csv受け取るサブシステムは今の所無いと考えて
出力した後の運用によるだろ PGがさわるわけでもないのにxmlで出されても工場のおじさん困っちゃう
>>402 例えば時系列の数値データとかだと今でもCSVが最適解のケースが多いと思う
構造が必要なデータとかでないとXMLやjsonはちょっと冗長
まあC#ならライブラリも充実してるからぶっちゃけどうとでもなるけど
表みたいに、行・列だけの、ネストしない単純な構造物は、CSV がベスト! 一方、構造がネストするものは、JSON, YAML, XML など
Pandsみたいな優秀なライブラリ誰か作って、オレオレクラス定義すんの面倒になってきた
CSVを使う動機は他のプログラムにデータを渡すことでしょ。 例えばエクセル。日本も欧米もエクセルスキー多いからな 閉じたシステムでしか使わないデータのフォーマットなんか何だっていいでしょ。 あえてCSVを使う理由なんかどこにもないと思うけど
>>405 否
構造がネストしてたってCSVに入れなければならないときがある
そもそもネストしたぐらいでリストにできないんじゃデータベースにどうやって入れるんだ?
parentid持ってりゃネストしてたって再構築できるだろ
まあ、いつものRuby君だからな。 聞き齧った情報を単純化して暗記だけして、関われそうな話題が出るとここぞとばかりに唱え続けるのはいつものこと。
>>407 むしろ
>>405 の言う表みたいなやつでCSV以外を選択する理由がないと思うが
>>408 > parentid持ってりゃネストしてたって再構築できるだろ
それデータとして構造持ってるわけじゃないだろ
リスト構造が作れるからメモリーは構造持ってると言うようなもんだし
CSVは項目の増減があるとウザいんだよな もちろんちゃんとヘッダ付けてスキーマが変わった時点でファイルを区切ればいいんだけど、 CSVは文化的に周辺のツールやDBのコマンドなどのエコシステムが全体的にスキーマは不変であるという前提で設計されてて、変更に弱い傾向がある気がするわ 選べるならJSON Linesの方が好き
CSVは方言があるから、きちっと規則が決まっているフォーマットのほうがあらゆる場所で使いやすい データをそのまんま見る必要はまったくないからな
>>413 > CSVは文化的に周辺のツールやDBのコマンドなどのエコシステムが全体的にスキーマは不変であるという前提で設計されてて、変更に弱い傾向がある気がするわ
それCSVの問題じゃないだろ…
そもそも文化的にとかイミフだし
>>416 仕事してるなら感覚的に伝わると思ったけど、具体的に言おうか?
CSVはヘッダが必須ではないから、CSVを扱うソフトウェアやシステムはヘッダに依存せずに設定として列の項目名を持つようになっているケースがよくある。
だから列の増減や差し替えがあったりするとたとえ直接関係のない列の変更であっても各所に散財する設定を変更して回らなければならなくなることが多い。
だからそれってアプリの設計の問題だろ ヘッダーが必須じゃないのがCSVの欠陥という主張なのか?
まあCSVがデータ交換の第一候補とされる時代で、動的なスキーマ扱うのは大変だったからな たんに昔は大変だったってだけの話だが、それを文化的にっていうならそうなんじゃね
カンマが入ってる場合はcsvじゃなくtsv(タブ区切り)がベストだと思う
ASP.Net CoreでWebページを作れるようになりたくて勉強中なんだけどさ これって、内臓のWebサーバを使う限り、Let’s Encryptでもらった証明書は使えないもんなの?
今時のWebサイトのSSL証明書はAWSのロードバランサでポチるもんだ サーバーはただHTTPを垂れ流せばよい
おお、運用する時はこれが良いな 正直、サーバの設定もわかんないので任せっきりの方が安心そうだ ただ勉強中は、100円で買ったドメイン + 安物VPS + 無料証明書でうまく動いてくれたらすごく助かるんだけど・・・・無理なのかな?
>>420 むしろ csv より tsv の方がいろいろな点で優秀なのに、どうして tsv がはやらなかったのか?
エディタ次第で見た目が変わるからと 人が加工しづらいからだろうね タブが入ってますと言っても判らんかもしれない 文字列が長いとそろわないのでタブの位置がおかしくなるかもしれない
csvよりtsvが優秀な点って何? 結局データ内にtabがある可能性があるならおなじじゃね? だからカンマとかタブとかひっくるめてcharcter separated valuesの意味とされることも多いんでしょうが
TABをデータの一部として含む必要のない用途って圧倒的に多いと思う。
えっcsvってcomma-separated-valuesの略だと思ってた character-separated-valuesが正しいのね カンマは含むけどTABを含むことはないデータを扱うのであればTSVのほうがちょっとだけ楽 あとTSVならExcelへのデータコピペ貼り付けが楽ちん なnだけどExcelは拡張子tsvを認識してくれるわけじゃないし デフォルト状態のテキストエディタだとTSVを開くとTABが見えなくて一般エンドユーザには扱いづらい このあたりが普及しなかった理由かなあとも思う
そういえばTSV使えばクリップボード経由でスプレッドシートに矩形のデータの貼り付けが出来たねw
>>413 ヘッダー行無しで、列名を使わずに、
数字インデックスで、各列にアクセスするのは、ナンセンスw
各列の順序に、依存してはならない!
列名でアクセスすべき!
>>429 別にどっちが正しいとか無いよ
個人的にはカンマの意味で使うことのほうが多いしRFCでもカンマだし
csvよりtsvのほうがいろいろ優秀とかいうほんまか?みたいな説があったから気になった
改行以外の制御文字は非エンジニアには理解しづらいし表示は環境依存になること多いし別にどっちが優秀とか全く思わん
chimpo-separated-values で行くわ
>>431 SQLコマンドによるCSVのバルクロードすらやったことがない素人ルビカスは巣に帰れ
JSON Linesってヘッダー名が無駄だよね。 俺なら縦横逆にしてJSON Columnsだな
>>426 大抵の場合カンマもダブルクォートも気にしなくてよくなる分有利だと思う
データ内にtabが必要なデータって出会ったことある?
完全に自分で決めていい場合なんかはまずデータで発生しない垂直タブとかにすることもある
あとbcpはいい加減囲み文字に対応してくれ・・・
>>435 正しいかどうかはケースバイケース
まともでないヘッダーついてるデータを読み込めとかあったりするし
ASP.Net coreを学習してて思ったんだけど、cshtmlファイルって簡単にプレビューすることってできないの? もしかしてデザインを確認するたびにWebアプリをビルドして動かさなきゃならないのかな・・・・・?
>>439 プレビューは無理だが、実行中に変更して保存すれば自動的に反映される
今時のWeb開発はReactのようなブラウザ側でテンプレートをレンダリングするフレームワークを使うのが主流だから、
いわゆるライブプレビュー問題はそもそも関心の対象から外れつつある
>>440 ありがとう、簡単に反映されて見やすくなったよ!!!
しかも学習が進む前に主流がここにないこともわかって助かったぜ!!!
わからない点もあるけど、RazorやMVCを勉強するより、WebAPI+Reactのセットを勉強すれば良いのかな
System.Drawing.Imageで、ビットマップを読み込んでそこで色々加工した後 ヘッダーまで含めたDIBビットマップ情報を取得したいです(変換したいです)。 要するにバイナリでファイルから読んだのと同じ情報にSystem.Drawing.Imageから変換したいのですができますか? 今はやり方が分からないので、Imageからファイルを読み込んで一通り加工した後、一旦Saveでファイルに書き込み それを自分でSystem.IO.FileStreamでバイナリとして読んでます。効率が悪いので直接Imageから変換したいです。
>>443 ありがとうござます!あとで試してみます!
一度作ったプロジェクトに、後からテンプレートのオプション相当の機能を追加するのってどうやるの?
https://docs.microsoft.com/ja-jp/aspnet/core/security/authentication/identity?view=aspnetcore-3.1& ;tabs=netcore-cli
上の方のチュートリアルからやってきた流れで作ったものに認証を追加しようとしたら、どう言う作業になるのか全然わかんないぜ
プロジェクトを作る時は予めオプション全部盛りにしといた方が無難なのかな?
>>429 拡張子 .tsv は認識しないけど、Unicode や UTF-8 とかのタブ区切りテキストの拡張子が .csv の場合はちゃんとExcelで開けるよ。ボムで判定してるぽいから使いどころがアレだけど
kingなんとかっていう中華パチモンのexcelモドキがあるが あれのマクロとかはMSexcelと互換なのか?
>>424 テキストエディタで見た時に壊滅的だからじゃね?
>>449 それは逆だと思うよw
メモ帳かワードパッドでタブ区切りで何か書いてみたら分かると思うけど
>>451 ケースバイケースと言うかデータによると思う
個人的にはタブは2個続いてる時に見落としがちなのが痛い
カンマでもスペースで桁合わせしないとよくわからん。 タブはエディタ次第で表示もできるからそう大差ないと思うがな。
仮に8タブで揃えてもどうせデータに8文字以上あったらずれるしな
30年前のエディタで考えろよw 今なら表示なんて好みで済んでも当時はそうとは限らん
30年前だと、WordMasterから MIFES,FINAL,REDへの変換期かのう VZの前身のEZは出ていたかも
なんか話が通じてない気が 1, 2, 3, 4, 5 100, 200, 300, 400, 500 10000, 20000, 30000, 40000, 50000 例えばこれをメモ帳にコピペして", "をタブに置換してみれば TSVのビジュアル面での優位性が分かる くどいけどメモ帳ね。今時のエディタでやれとは言ってない
メモ帳最強だな 1 2 3 100 200 300 10000 20000 30000 10000000 20000000 30000000
メモ帳とか関係ない つうかなんでwin限定? なぜtsvではなくcsvが多く残ったか どっちが見やすいか?の話ですら無い
>>461 文脈読めないとアスペルガーって言われるよw
CSVの方が普及したのに深い理由があるとは思えないけど、
あえて言えばデータをエクスポートするコードを書くプログラマの立場になれば、
CSVの方が吐き出されたデータが意図した通りになってるか目視でチェックしやすいのはあるかもね。
スプレッドシートで見た時マトリックス状になってないデータだと
,,,1, 2, 3,,,,
行のデータがこんな風になるけど、こういうのTSVだと検証しづらいよね。
1-2-3とか桐から吐き出せたのがcsvだからとかその程度の理由じゃないの?知らんけど
そもそも大昔にtsvなんてあったか? csvのだいぶ後に聞いたような気がするが
昨日のWindowsUpdateから.Net製アプリだけ起動が遅くなった(普段はすぐ起動していたものが1秒弱かかる)気がするんですが自分だけでしょうか?
大昔がいつかわからないけど、Excelは2000の時にはtsv対応してた
いつも思ってるんだけど 営業ってゴミ以下じゃないですか? こいつらってSEもPGも出来ないのに 何故か技術職より高級取りですよね? そのくせ飲み会なんかでは お互い苦労を労ってみたいな、苦労人ぶりますよね? 営業ってほんと何もしてないんじゃないですか? 皆さんは休日もc#の勉強でしょう?大変だと思います。 理不尽だと思いません?
皆さん営業に対して切れそうになったことってありますか?
>>468 じゃお前は営業できるの?
やったとして、お前が今書いたようなことをPGやSEから言われない自信はあるの?
どう考えてもプログラマって人生削って仕事してますよね? そのくせ営業はキャバクラにいくと苦労自慢ですよね こいつらの苦労って何なんでしょうか?w 人生楽してるくせに、苦労人ぶって注目を浴びる サイコパスなんですかね?
仕事の半分ぐらいCPU戦でいい人が、四六時中対人戦やってる人に文句言っちゃいけんよ
>>468 自分が知ってる一部の人間だけを取り上げて、同じ属性の人間がすべて同様であるかのような主張はやめな。
俺は営業でなくSEだが、見てて気持ち悪い。
>>470 そもそも営業といっても技術営業というのもあり、そちらは尊敬してます
僕が言うのは一般的な営業です
また飲食店とかそういう華やかな社会での営業なら、美人やイケメンが適当に
営業しても良いと思いますが、技術職ですからね
冴えないおっさんや、仏頂面の爺が営業してるじゃないですか?
能力もないくせに、 PGもできないくせに、何であんなに偉そうなんですか?
ここにいる人は、凄い技術をもった集団だと思います。
だけど営業だけは本当にゴミ以下なんじゃないかって思うんですよ。
努力することもなくSE,PGが開発した商品で飯をくってる奴らだと思いません?
>>473 最近は技術職の人がそのまま営業したほうがいいんじゃないかって言われてませんか?
皆さんが営業したほうが遥かに良いと思います。僕ですらしたことあるんですから。
そもそも技術職の人同士が直接対話したほうが、手間が省けますよね?
例えば、滅茶苦茶美人や、華があるイケメンが、技術を超えたところで会社の関係を良好に
する潤滑油のような存在であるなら別です、これに関しては僕は例外として認めます。
だけどですね、冴えないクソムカツク顔した偉そうなおっさんが、何のスキルもないくせに
ただその会社に行って名刺を渡して、外で飲んだりする。こういうのってよくあると思いますけど
むかつかないですか?こいつら会社にいるの?って思いません?
だってどう考えても、現場の人が死にそうになりながら恋人も出来ず、休日も納期に追われてなんて
僕はもう見ていて辛すぎるんですよ。仲間で鬱になった人が何人もいます。全員技術職です。
営業はいません。いたとしても技術営業の人です。
>>475 担当役員とあうために、派閥構成調べたり、その裏取りしたり
なんならアポイント調整してもらうために、部下の接待したりするんだけど
君できる?
で、当然会っただけじゃ話進まないから、会うまでにプレゼンの構成考えて、それに合致する統計情報集めて
何なら役員の他のプロジェクトの様子調べて、そのプレゼンに盛り込んだりするんだけど?
>>476 お前に恋人ができないのは、仕事のせいでもその営業のせいでもないぞ。
>>478 システム開発に営業なんて必要ない
技術者同士の対話でいい、何故納得しないんですか?
>>477 そもそもシステム開発部署には派閥なんてない
営業の派閥とか気持ち悪すぎ、どんだけいるんだよ不必要なのにw
営業に逆らったらクビになるから こういう真実味のある話は嫌いなんですね、わかります それに皆さんが不満はないのは、ある程度給料を貰ってるからでは? 皆の幸福を全体で考えるなら、どう考えても営業は邪魔でいらない こんな奴らが苦労人ぶるのは俺は不愉快極まりない
頑張って相手にしてる人もいるけど、アフィブログに転載するための種まきじゃねえの?
>>479 自分の身近な不満を感情のままにぶちまけてるだけで、他人を納得させるような論理的、合理的な説明を一切していないのに、なんで納得させられると思ってるの?
>>480 あるものを無いとか言っちゃう?理解できないものは、見ないタイプ?
そんなやつに売れるシステムなんてねーよ。
そんな単純な話じゃ金が動かない 金が動かなきゃ何もできない 金を動かせる人間と話ができなきゃ開発がスタートしない そうやって他職種を罵倒するようなやつは君が嫌がる営業と同じだということに気付いてない
>>475 ここにいる人達がすごい技術を持った集団だなんて本気で思ってるのか?
もしそうだとしたら世間を知らなすぎというか技術者に過剰な夢をみているか、自分を含めた技術者というものを特別視し過ぎだ。
もしくは、自分の主張を受けいれてもらおうと、不必要に相手を持ち上げているのではないか? それが意図したものかそうでないか知らないが、もし無意識に癖でやってるなら改めた方がいいぞ。
>>488 常に技術力を磨いてる技術者と、休日もコネや接待のことしか考えてない
営業はどっちが頭良いと思うんですか?
営業は、確かにちょっとしたテクニックで相手に好かれたりするこつとか
そういうのは得意かもしれません。小手先のテクニックを磨いて、そこに
論理なんて全くないんですよ。流されやすい人間の心理なんかを心得てるにすぎないんですよ。
論理的に考えている水準が全然違う。例えば簡単なC言語のプログラムだって、大学1年
の時は全く手に負えないわけじゃないですか?そんなこともできないの?ってのが
生涯続いて取り返しがなくなってるのが営業の人達だと思うんですね。
>>486 だから悪しき営業文化があるだけじゃないですか?
規模の大きい企業だと営業を通すしかないですからね。
あの部署のあの技術者さんと直接対話したい!あの人となら
良い付き合いができそうだ
ってそういう試みをしてる人がいてもコンプライアンスで禁止されるから
できないだけじゃないですか
誰も賛同してくれなくて違和感を感じる 俺以上にもっと深い視点で切り込んでさらに否定的になってくれたりしないのか
副作用の削除や参照透過性を何処まで突き詰めるのかにいつも悩む
>>497 最低限副作用があるかないか分かるような書き方をしたい
>>500 これはフィールドに依存、これは静的関数みたいな別けは何基準でしてる?
少なくとも自分の中での基準は明確にしておきたいんだけど全然わからん
使い方次第だろうけどあとからコロコロ変わるのよね……
プロパティにフィールドのラッパー以上の仕事をさせない 処理を必要とするものはメソッドにする ジェネリックコレクションもそうなっている オブジェクト指向信者だから単純な静的関数はあまり使わない
バッキングフィールドに値を代入するのだって処理ですよw
System.Text.Jsonでdictionaryやsortedlistのkeyがint時のエラーって直ったんじゃないの? また復活したの?
>
https://github.com/dotnet/corefx/issues/40120 違うよw 端的に >処理を必要とするものはメソッドにする こんな方針間違ってます。 羹に懲りてなんちゃらそのものだね。
先輩方、Blittableな構造体の実装だけを動的に付け替える方法って何か無いもんですか? 巷で持て囃されるストラテジパターンは参照を使う都合で非Blittableになってしまうので、今はメソッドをenumで指定して愚直にswitchで振り分けていますが、発火の度に分岐を走らせるのはとても優雅とは思えんのです
内容により 配列やリストや辞書などいろいろ使えるとだけw
Blit = 転送する アンマネージド⇔マネージドに(素直に)転送可能 ってことかな
>>507 Blittableに自身を引数に取るdelegeteをIntPtrで持てばええんじゃね
>>513 あざっす大先輩
Cと同じように関数ポインタを使えというのは素晴らしいアイデアなのですが、C#での具体的なやり方が分からんのです
なのでそこのところ詳しくご教示頂けるとありがたいです
その構造体をrefで渡す必要がないなら構造体をクラスでラップすればいいだけでは? refで渡す必要があるならこんな方法しかない気が struct MyStruct:IDisposable { public int X; public void RegisterAction(Action<MyStruct> action) { ActionTable.Add(this, action); } public void Action() { ActionTable[this](this); } public void Dispose() { ActionTable.Remove(this); } private static Dictionary<MyStruct, Action<MyStruct>> ActionTable = new Dictionary<MyStruct, Action<MyStruct>>(); }
実際に処理が分岐してんのに分岐してないようにみせるのって何がいいんだ? 同じルート通ってるのに違う処理呼ばれてんだろ? ドキュメントにそれの記述がない状態でそれということを理解するためには ブレークで止めてステップ実行でもするしかないじゃないか? お前がスマートだと思ってるコードは他人には読み難いだけのクソコードである可能性を心配したほうがいいな 心が壊れてしまう前に 何十年もそんなくだらないことに時間を割いたあとでは大変だ
>>518 まあ、誰しも最初からわかってるわけではないので、言ってることがわからんでもない
LINQわかりにくいからループ回せやみたいなもんかな?
〉実際に処理が分岐してんのに分岐してないようにみせるのって何がいいんだ?
まずその捉え方が間違い
actionのメリットをググれば残りの疑問も解消する
>>514 正直なぜBlittableなのか、参照型ではだめなのか、という話から詰めた方がいいと思うけど
struct Foo {
public int data;
public IntPtr fn;
}
static class FooDo {
public static Do1(ref Foo x) {}
public static Do2(ref Foo x) {}
}
こんなのをMarshal.GetFunctionPointerForDelegate/GetDelegateForFunctionPointerで相互変換する
厳密にBlittableじゃなくて値型で良いならdelegeteそのままで持てば良いけど
>>520 ねーよ
だって俺が他人のソースを読むときに一番嫌なのは見えにくい動作だもの
ここが隠れてわかりにくい時点でその組み方に何の魅力も感じない
たくさん処理が分岐してるのであればそれを明示的に記述したい
思いっきりswitch caseで書きたい
ソースにhtmlのようなフォント設定機能があったら太字にしてサイズは72ぐらいで表示したい
>>523 小学校からの通知や町内の回覧板に漢字が使われていたら、「俺は漢字は読めねーんだ!覚える気もしねぇ。俺が読めるようにひらがなだけ使え!」って言ってるようなもんだな。
難読漢字を多用してるならともかく、常用漢字も読めないならお前が勉強しろよ。
>>523 〉だって俺が他人のソースを読むときに一番嫌なのは見えにくい動作だもの
誰だってそれは同じ
〉ここが隠れてわかりにくい時点でその組み方に何の魅力も感じない
それは、共通処理が隠れてわからないから全部インライン展開しろやと言ってるのと同じで、バカの理論。
引数にactionがある時点で、呼び出し元で処理を指定するのが判断できる
そういう共通処理なんだなとわかる
使い方もわかる
わかりにくいところはない
この程度のことをわかりにくいと思うなら、相当センス無いよ
〉思いっきりswitch caseで書きたい
actionを知らなくて(使い方に慣れてない。メリットを理解できてない)そういう人も多いからどちらでもどうぞ
action書けるとこは全部書けとも思ってない。メリット大なとこだけ書く(書き直させる)だけでも可と思ってるので
>>525 判断できる、じゃねーよアホか
明示的に書くと何でダメなんだ?
明らかに判断しなくちゃいけない手間が入ってるじゃん
そしてそこにメリットがない
俺の価値観はさっきレスした通り わかりやすい、明示的に、を何より優先する お前のactionの処理は全部でいくつあるのかソース中を検索かけて隅々まで見ないとわからないじゃないか 欠陥コード乙
言わんとすることはわかるけど まあ複数の場所に100個caseのあるswitchが出てくるとくじけることがある
何だ、センス以前に真正バカだったか。 こういうのを老害(ゆとりバカ)と言うんだなw 真正バカと議論しても無駄なので無視(NG)っと
しかもクラス100個が国産牛の脂肪ように間に入ってる それらのactionの数だけそこを通るんだ どう考えてもswitch caseのがいい
老害staticおじさんの思考回路だな こういうのは非つっようない限り関わり合いにならないようにするに限る
明示的に書いてあるほうがいいってのは数が少ない場合に限る 明示的に書いてあっても数が増えると同時に考えなければならない事項が増えて脳に多大な負担がかかるようになる だから細かいことは気にしなくてもうまく行く仕組みを確立して脳の負担を減らすことの重要性が増す というのがコードリーディングの観点での評価 他にもリビルド不要で拡張可能であるかどうか 開放閉鎖の原則を満たすかどうか といった観点でも評価ができる
>>525 > 誰だってそれは同じ
同じじゃないだろ
必要ないものは見たくないのが普通だと思うぞ…
コンパイラやバイトコードのツール類は巨大なsweichがドカーンと鎮座してるけど 内容がはっきりしてるからわかりやすい 検索したら内容は終えるし そうじゃなくて内容に応じて動的に変わる場合はそれじゃ賄えないのでdelegate使うけど追うのは大変なのはわかる でもそれはswich caseに落とし込めない 落とし込むとバグの温床になる
>>538 必要ないものを書くんじゃねーよ
削除しとけ真正バカ2号
>>537 多いときほどswitchは悪い
数多の案件で膨大なswitchが開発者を苦しめた実績がある
>>540 匿名掲示板で人に指図とかバカすぎるわ
そもそもどうやって削除するんだよw
できるならお前のアホレスから削除しとけ
相談室ってまだあったのか 無くなったんだと思ってたw
enumに実装が書けないのでと言う話も書いておこう
>>465 「tsv」という呼称では呼ばれていなかったがタブ区切りデータは普通にあった
個人的にはアセンブラとか機械語だけで書かれてるプログラムが使ってることが多かった印象
他には「:」区切りや「;」区切りも割と良く見かけた
>>484 感情はあくまで感情だから合理的に納得させる必要は無いでしょう
>>482 逆らっても首になるとは限らない
もしその程度で首になるような会社なら辞めた方が良い
営業に対しては言いたいことを言った方が良い
昔はレコードデリミタ/フィールドデリミタといってプログラムごとに適当に決めてたな。
ascii コードの30 = rs/31 = us がそれだよ
単一のページ内で、Blazor ServerとBlazor Webassemblyを混ぜて使うことってできないのですか? 主にBlazor Webassemblyを使いたいものの、乗っ取られると危険な処理はBlazor ServerのビルドインSignalRに全部まかせたいんです
>>557 普通にサーバーサイドはREST API書けや
Blazorに固執する意味がわからない
>>558 ちゃんとできる人ならそれもいいかもしれませんが、私のレベルで手を出すのは危険なのです
意味がわからん Web APIなんて枯れきった技術だろう Blazorはバグだらけで、問題があったら自分でソース見たりgithubのissue上げたりできない奴は手を出してはいけない代物
あなたは優秀なのかもしれませんが、私はマイクロソフトの技術者の足元にも及ばないので勘弁してください
お百姓さんにはかなわないけどね 米作ってる人が一番尊い
Blazorは表面的には簡単に見えても 本質的には難易度高いはずだけどな (見えないところで無理してる分) サーバサイド技術は基本的な知識だから学習するに越したことは無いよ つーけ後で結局手詰まりになる
blazor clientはシンプルなアーキテクチャでいいね
開発側の利点で顧客が金を出してくれることはほぼないから無理 将来のメンテナンスコスト考えると普通にjs使うだろう
まあWPFみたいにすぐに負債になるのがわかりきってるし、 自分のスキル的にも時間の無駄でしかないわな
MSがこういうものを金をかけて開発してるのが納得いかない 無駄でしかないのに
Blazorは意外と業務系で普及するんじゃねえかと思ってる 業務系はJS不得手な人材沢山いるからC#でサクサク開発できるメリットがデカイ
WebAssemblyの実用化楽しみ MSは開発がんばって欲しい
WebAssemblyを基盤にしているからSilverlightみたく捨てられることは無いとは思うけどね
js不得手マンだけどjs周りをもっと使いやすくしてくれればそれでいいのよ TypeScript使えば良さそう?だけど触ったことない
blazorアイデアはいいんだけどいかんせんバイナリサイズがでかいのがどうにかしてほしい(サーバーサイドの方にはあまり将来性がないように見えるので) せめてcorert経由するようになれば軽くなるんじゃないかと思うんだが
>>572 HTML/CSSはどのみち必須なんだから、クラシックなMVCアプリならほとんど変わらんよ
Blazorの意義はJSをゴリゴリ書かなくてもSPAを作れることにあるわけだけど、業務系でそんなもん要求されない
業務系は巨大で複雑なUIが多いからSPAのほうがうまくハマる 今は高度なJSスキルが必要だから避けられてるけどC#で書けるって理解されたら業務系でも採用が増えるだろうね JSを排除できるメリットはかなり大きい それに加えてMVCよりBlazorのほうが構文とアーキテクチャが直感的で簡単なのもポイント BlazorはHTTP/HTMLの事情を詳しく知らなくても書けるように出来てる MVCはHTTP/HTMLフレンドリで必要な前提知識が多いから業務系では採用しにくい
それを資料に纏めて、金持っている 人を説得しないと。普及しないと思うよ。
BlazorはいいんだがRazorはどうにかして欲しいねぇ。WPFとか使えるようになればいいが。
swtich分って必要なんですか? 普通に変数1個にして外部ファイルで設定すればいいだけじゃ?
必要な引数も違うのにどうやって分岐無しで呼び出すの?
1=りんご 2=バナナ 3=キウイ 4=いちご 5=みかん こんな感じのテキストファイル作ればいいだけじゃ?
>>583 引数がそれぞれ0,4,7,17,5とか変わったらどうやって呼び出すの?
>>583 それがクラス定義だった糞プログラムのメンテ担当したことあるけど、正直殺意沸くレベルだった
文字列やバイナリを処理する辺りでswitchが出てくるのは仕方ないにしても、それ以外でswitch文が出てきたらほぼ設計ミスだろうな
ごめん、入力を受け付けるようなものは使ってもミスでも何でもないな
>>583 それでいいと思うなら、もうそれでいいよ。
switchが役立つと思う場面に出会ったことがないなら無理に使わなくていい。
普通にプログラミングの学習をしたり実際に何か作り始めれば、そう遠くないうちに役に立つと思える場面に出会うはず。
重複したswitchや長大なswitchが悪いのであってswitch全てが悪いわけではない 拡張するときに不便を感じたら多態に置き換えればいい
>>583 使い道がないのはお前の存在も同じだから
中央線にでも飛び込んで死ね
プログラミングに限らずどのフィールドでもそうだけど、 イキってる系の連中の主張は話半分に聞いておくのがいいと思うよw
>>583 条件文をマッピングテーブルで置き換えるという古典的なリファクタリング方法の一つ
どちらかが常に優れてるわけではなく状況に応じて選択するもの
C#のバージョンや分岐の数によっては
コンパイラがswitch文をdictionaryのlookupに変換してる
>>593 それ今は迷信
Roslyn移行後のC#コンパイラはswitchのcase数が多い場合はハッシュに基いた二分探索のようなコードが生成される
>>578 同感
業務系アプリをブラウザで動かしたいっていう潜在要求は多いと思う
>>594 Roslynから変わったのは文字列で分岐される場合のみの話
文字列比較でhash tableをlookupするんじゃなく
数値比較で事前にハッシュしたsort済みarrayをlookupするようになってる
細かい部分を抜きにすると数値をキーにしたSortedDictionaryのlookupと同じ
でこういうのは今の
>>583 には不必要な知識
流れよく分かんないんだけど つまりenumで分岐して処理呼び出す場合はswitchと配列のどっちが何倍くらい速いの? public static int Execute(this Test type, int value){ // 無難にベタ書き switch(type){ case Test.One: return Method(value); } // 配列からメソッドを呼ぶ return methods[(int)type](value); } こんな風にenumに処理持たせてやりたいんだ俺
ケースバイケース どっちが早いのかは実測が基本 どっちも最適化等々で逆より早くなりうる可能性がある
単純な配列はいつでも最速だと思ってたが違うのか? 読むのが単なる値じゃなくて処理な時点で誤差レベルだと思うが
配列はちゃんと理解してないと境界値チェックが入って意外に遅くなることがあるよ だいたい気にならんレベルだけど競技プロとかやるようなら結構影響してくる
>>597 仮に配列使う方が効率的だとしてもenumの値に依存するような実装は論外でしょうw
やってはいけない、の見本みたいなもの
俺もCから入ったから配列にして呼び出す処理は昔はよく書いた enumを配列の添字にするのもよくやった 処理速度気にする開発することは多少あるけど基本的にどっちもC#ではやらんな enumに処理持たせたいって要件ならそれぞれの値ごとにclass作って継承させるかな? 詳細仕様次第ではあるけど そんなんめんどくせってなるようなレベルならぶっちゃけどっちだって変わらん話なんだから好きにすれば?って思う
>>597 delegateの配列で試してみたが
switchのほうが2~5倍くらい速かった
最適化できる度合いの違いかな
過去に散々既出だと思うけどdelegate自体がもともと重いんだろうね。 単なる関数ポインタとは違うから
>>605 デリゲートでなくインターフェースを使っても
>>604 と同じ結果なのが謎だった
enumの実装が書けたら違うことになってるかもな でも今はいらない
>>585 内部的なロジックミスにならんようにすればいいだけ
プログラムが長大になる原因はテキストを利用しないからだと思いますよ
1万行のプログラムが果たしてそれだけ必要なのか?って思います
>>589 俺も思いますね
というか文法的な事でももっと改善してよって事多いですよね!
0<input<&&input<5→うぜー
0<input<5→これでいいだろうが
>>609 範囲チェックの改善なんて散々議論されてるし今も要望で上がってる
気になるなら見てくればいいよ
なぜ未だに入っていないかとかもちゃんと説明されてる
>>609 もうID変わってるだろうけど
>>589 なのだが、皮肉のつもりで言ったのが通じてないようだ。
switchの用途として
>>583 みたいなのでいいのではなんて言うのは圧倒的に経験が少ない証拠だろう。ちょっと慣れて自分でコードを書けるようになればそんなバカな発想はしなくなるよ。
そんな段階で
>>609 みたいな文法にケチつける前に、なんでその文法が必要なのか、何でそういう形式になってるのか理解する努力をしなよ。
C#のような後発の言語が生まれる過程では、君みたいな初心者が考えるようなことはとっくの昔に議論済みでそれらを踏まえた上で今の形がある。疑問を持つのは多いに結構だけど、往々にして言語の仕様が悪いのではなく、単に自分が無知なだけだから。
そもそもシリアライズするにしても=なんかつかいたかねえ
>>611 俺も面倒
請求書送っていいなら訳つけてまとめてくるよ
最近の言語の傾向見てると どっかの言語が導入すると移植のために?かどうかはわからんが 良し悪しに関わらず他の言語も実装される感じ
JavaScriptとPHPに慣れたら多次元連想配列無い言語がオワコンに見えるようになった しかし var obj = getExExBigData(); ↑超絶巨大データ(フォーマット・ドキュメント不明) 勘弁してくれよってのも事実 c#の未来はどうなるのか?
DataGridViewで、Cellに不正な値が入力された場合はフォーカスの移動を禁止するようにしたいのですが、 以下の方法では、移動してしまいます。 移動させないようにするにはどうすればよいでしょうか。 private void dataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { if (String.IsNullOrEmpty(this.dataGridView[e.ColumnIndex, e.RowIndex].Value as string)) { e.Cancel = true; } }
>>617 CellChangingみたいな選択セル変更前のイベントが無かったっけ?
>>617 この人だけじゃないけど、まずこういうところに質問投げる前に分岐がきちんと機能しているか確かめた方がいい
それの場合は this.dataGridView[e.ColumnIndex, e.RowIndex].Value as stringの内容確認
直接の回答としては
http://dobon.net/vb/dotnet/datagridview/cellvalidating.html を参考にして書き直せ
解説を入れると
DataGridViewでセルに直接値を入力した場合はフォーカスが変わるか.EndEdit()などしないと入力された値が反映されない
そのイベント自体そのために用意されているはず
だからそのメソッドの中で「dataGridView[e.ColumnIndex, e.RowIndex].Value」は入力する前のセルの値で
入力された値を参照したかったら「e.FormattedValue」を見ないといけない
>>612 この言語って文字列操作に特化してるからテキストを利用するのって
全然普通だと思いますけどね。
後0<input&&input<10じゃないとだめなのは、何となくですが
数式はポーランド記法によって処理されることに関係しますか?
分かりませんけど。
>>622 a < b < cが出来ない理由は自分で演算子オーバーロードしてみたら簡単に分かるぞ
a < bの時点でbool値を返すからcとは比較できなくなる
いや構文解析での段階の話(要は3項演算的な)だろうかなそれは関係ないと思う まあ文字列操作に特化は意味不明だけど
かぶった。関係ないっていったのは演算子オーバーロードのことね。
>>623 それは出来ない理由にはなってないんじゃないの?
あんまり自信はないが、
評価結果が数値 < 評価結果が数値
評価結果が数値 < 評価結果が数値 < 評価結果が数値
両者を別の演算として区別することはやってできないことはないはず。
>>627 既存のルールに新たに3値を並べて比較する構文を追加するとしたら、既存のルールを維持したまま、新たなルールに伴う考えうる様々な組み合わせについて明確で一貫性や完全性のあるルールを作らなければならないが、かなり複雑なものになるだろう。
やってやれないことはないにしても、デメリット(手間と複雑さや混乱)に見合うメリットがないから、ほとんどの人に望まれていないし、言語仕様として追加されることもないだろう。
こんなの簡単だろ でもやっても凄いって言われないから 実装されないだろうな
<・・・小文字だからC#の言語に従う <・・・大文字なので特別に数学的記法とみなす これでどうだろう
if(a < x < b) 実はこれは言語機能をいじらなくても自作型で再現できる
>>628 python で実現してるのに何を言ってるんだよw
>>627 そりゃ実装すれば何だって可能だが、論理的な矛盾になるから無理なんだよ
演算子の優先順位と結合則で二項演算するのが原則なのに、そこを横紙破りしてしまったら誰も付いて行けない
どうしてもやりたいなら$"3<{x}<5".Predicate()みたいなライブラリ作ればいいんじゃね
>>634 文脈依存キーワードと何も違わないと思うよ
a < x の値を独自クラスのインスタンスにできるならあとの < b はどうにでもなるだろうけど そもそも前者って可能なんだっけ?
>>637 の答えがほぼ
>>638 ってことで良いですか?
また便利な情報を得てしまったわ
>>640 比較演算子をオーバーロードするだけじゃない?
false相当の値か右辺の値を戻すようにして、併せてimplicitでboolを当てておけばifでも使えるはず
a b x の型が int だったりしたとき、それオーバーロードできるんだっけ?
C#のターゲットフレームワークってどういう仕様なんでしょうか? わかりやすいサイト教えてもらえると助かります。 exe 4.5 dll 3.5 → ビルドできるからok? exe 3.5 dll 4.5 → コンパイルエラー ただし動的に読み込んだ場合は動いてるっぽい?
wrapする型を定義して a < x < b できるようにしてみた
https://dotnetfiddle.net/FdQsX1 が、まあ使わない
visual studio2019 30日たったら使えなくなったんだけど 無料じゃないの? PC替えるまで以前のバージョンはずっと使えてたんだけど 2019は違うの? 無料版使い方おしえてください
ボタンを押すと計算開始して結果をテキストボックスに表示する処理(数十秒かかります) まずボタンを押してその処理がまだ終わってないうちに、またボタンを押すと次の処理がどんどん溜まっていくのですが、 これを防止する方法はないでしょうか (例えばついボタンをダブルクリックをしてしまった時に1回表示してからまた同じ処理に入ってしまう) ボタン押したら結果が表示されるまで全部のボタンのenabledをfalseにする処理入れてみたのですがこれではうまく回避できませんでした
メインスレッドには実際にボタンを無効化する作業をしてもらわないといけないので 計算はasync/await等を使って別スレッドで行う
>>651-652 正直まだ難しそうですががんばってみます。ありがとうございました。
>>653 何も難しくないよw
>ボタンのenabledをfalseにする処理入れてみたのですがこれではうまく回避できません
これは「重い処理」の後にそれをやってるからそうなる
ボタンのイベントハンドラで真っ先にEnabled = falseにすればそんなことは起こらない。
>>655 やったことないアホは黙ってた方がいいぞ
あと反論するならググってから反論した方がいい
なぜかコードが貼れないので割愛するけど、実際にやって
>>655 が正しいことを確認した
当たり前の話だがw
>>657 ググることもできずに頭悪いとしか書けないとか可哀想なやつだな
>>655 みたいな誰でも思いつく方法でなんとかなってたら苦労はせんよ
>>658 当たり前の話だが負荷かけてテストしてるよな?
つくづく馬鹿な奴w 偉そうに他人様に命令する前に自分は実際にコード書いて確認したのかとw まあ普通こんなレベルの話は確認するまでもないけどね
どうでもいいけど (1) Thread.Sleep (2) Task.Delay (3) ビジーループ いずれのダミーを使ってもイベントハンドラの頭でEnabled = falseとすることで ボタン連打によるイベントハンドラへの意図しない「再入」を抑止できることを確認した
イベントを呼び出すのが毎回同じスレッドなんだから、
>>655 の方法で完璧に止まると思うけどな
>>662 >(例えばついボタンをダブルクリックをしてしまった時に1回表示してからまた同じ処理に入ってしまう)
再入が問題じゃないって気づけよ
タイミングによってクリックイベントが2回キューイングされることがあるのが問題なんだよ
ガイジに何を気付けって? お前も方面が違うだけで同じガイジだな
>>650 イベント処理に入る前にイベントハンドラを外しておくといい。button1.Click-=button_Clickみたいな感じで
ただValueChangedとかならともかくボタンで普通はやらないと思う。「enabledをfalse」になっているボタンでイベントが実行されるのはおかしい
計算処理を非同期に渡して計算が終わらないうちにEnabledを復帰させるとか変なことやっていないか?
EnabledでなくVisibleをfalse->trueに変えてみて確認したら?
動作に関しては他の人がいろいろ言っているようだけど一度ミニマムコード作って自分で動作確認するのが一番確実
private void button1_Click(object sender, EventArgs e) { button1.Enabled = false; //重い処理 button1.Enabled = true; } 上のコードでもユーザーが最初のクリックをしてから イベントハンドラが呼ばれてEnabled = falseが設定されて さらにそれからクリックできなくなるまでの間に 複数回のクリックが発生する可能性がある (Windowメッセージのキューに溜まる) だからEnabled = trueに戻す前に 溜まったクリックイベントを流してやる必要がある
>>663 イベントは非同期でキューイングされるから
>>655 では不完全
アマチュアレベルとか自分しか使わないならそれで良いけど不特定多数が使うようなソフトだとダメダメ
ID:59NEldNlaはコード書いて確認する姿勢は良いけど確認がザル過ぎる
てか、アプリ作ってたらこの手の経験はしてるはずなんだが…
>>667 そんな必要ないってば...
君がOSのコード書く立場になってよく考えてよ。
君はメッセージをエンキューする時にウィンドウが無効化されているかどうか
ノールックでやっちゃうような間抜けなコード書くの?w
そんなのありえへん
いやだから、無効化されるまでに2回以上キューにたまる可能性があるって話なんだが...
よくわからんけど痛い人が大声で独演会をやっています
再現できるコードも示さずにこんな現象があるんだって書き続けるのは他でやれよ
それにかまう連中も荒らしと同じ
>>1 を読んで理解してから書き込め
今日も仕事で新型コロナウイルスなんて騒ぎすぎだという老人の独演会を30分聞かされた 対策も必要ない死ぬ人は死ぬでいいじゃないかと言う話 老害しなないかな
キューが溜まる派は、button1.Enabled = false;なし、かつ、非同期処理なしにすれば簡単に再現コードができるんだろう でも現実には再現しないから困ってんだろうな
キューが溜まる派は、button1.Enabled = false;なし、かつ、非同期処理なしにすれば簡単に再現コードができるんだろう でも現実には再現しないから困ってんだろうな
ちなみに念のためこんなのもやってみたが //button1をクリックした後button2を連打せよ private void button1_Click(object sender, EventArgs e) { Thread.Sleep(5000); } private void button2_Click(object sender, EventArgs e) { MessageBox.Show("Button Clicked !"); } Win32に詳しくないので理由を与えることが出来ないけど、 この場合もメッセージボックスは1度しか表示されない
>>676 完全スレ違いだけどそれはその老害の言ってることの方がただしいw
専門家はたいしたリスクないから騒ぎすぎだと言ってるのに
どっかの怪しいネットde真実クンの被害妄想を真に受ける奴がどうかしてるよ
こういうの認知バイアスって言うんだけどさ
一流の専門家wとWHOと各国の対応見る限り 誰かの方が認知バイアスかかってると思う 世の中でこういわれてるけど逆の方に○○と言うのを言って俺スゲーしたいのが老害
>>679 いや待て、ひょっとしてMessageBoxがフォーカスを奪うのが関係しているのかと思って Console.WriteLine("Button Clicked !"); に変えてみたらなんと複数回表示されるなww 何てこったw この現象は以下のコードで回避できた private void button2_Click(object sender, EventArgs e) { if (button2.Enabled) { button2.Enabled = false; Console.WriteLine("Button Clicked !"); } Application.DoEvents(); button2.Enabled = true; } >>675 ,
>>677 だからテストするなら負荷かけろって話な
>>667 の話を理解できてたらわかると思うんだが、
>>671 みたいな絶望的なアホもいるからなぁw
>>681 WHOは声明で過剰反応するなと言ってる。
多くの伝染疾患の専門家の意見も同じ
各国政府の対応はよく言えば安全牌、悪く言えば役人や政治家の保身だね
テールリスクとしてはヤバいことになる可能性は確かにゼロではない。
その場合に誰も批判されたくないしね。
費用負担するのは納税者であって役人でも政治家でもないし
でも新型ウイルスで色々と未知だから警戒するに越したことはないと思う
メッセージボックスはボタンかキーボードが押されるまで待つ。 ダイアログの一種。
>>670 1. Application.DoEvents()
2. PeekMessage()
3. await Task.Delay()
Task.Delay()使ってthrottle/debounceする高階関数を作っておくと毎回書かずにすむ
引数でリスト渡すけど要素を変更して欲しくない時って結局どうすりゃいいの? Immutableは使えない環境の場合 ReadOnlyCollectionは引数の型としては想定してないみたいだけど、キャスト防ごうと思ったらこれしかないよね?
>>682 今時Application.DoEvents()を手動で呼ぶとか…
それはともかく、Application.DoEvents()を呼ぶタイミング遅くない?
拡張メソッドにしろクラスをシリアライズするの面倒じゃん
質問お願いいたします。 カスタム日時書式指定文字列を使って、 例えば DateTime.Now.ToString("M月") と書けば、 今なら "2月" という文字列が受け取れます。 しかし、DateTime.Now.ToString("M") と書いても "2" という文字列ではなく "2月1日" という文字列が返ってきてしまいます。 これは "M" という文字列が(カスタムでなく)標準の日時書式指定文字列と 解釈されてしまっているからのようなのですが、 DateTime.Now.ToString(...) のような書き方で "2" という文字列を受け取ることは可能でしょうか。 もちろん DateTime.Now.Month.ToString() と書けば "2" を得ることはできますが、IFormattable インターフェース経由で 文字列を取得したいという事情があり、 Month プロパティを使う方法は避けたいと考えております。 もし何かおわかりのことがあればご教授いただけると幸いです。 どうぞよろしくお願いいたします。
control.Enabled=true/falseって即時処理されるのか? WM_ENABLEメッセージをキューにPostするだけなのでは。
>>695 おお!まさに探していたものです。
'escape' 等をキーワードにして検索を試していたのですが
少し的が外れていたようです。
本当に感謝です。どうもありがとうございます。
>>694 ご提案どうもありがとうございます。
ただ今回は IFormattable.ToString の引数だけを使って
文字列を取得したかったので、
% を使う方法を使わせていただこうと思います。
>>696 否定はできんけど、そんなことになってたらおそロシア
しょーもない質問なんですが 起動時、必要なファイル(iniとか)を探して、無ければ起動しないというプロセスは Form1_Load()にifでApplication.Exit()書いて強制終了にしてしまえば良いのでしょうか? Form1_Load()の途中で強制終了はwindows的に無問題でしょうか?
>>696 そうだよ
>>699 即時処理される方がおそロシヤだよw
ボタンを薄くする処理とかも走るんだが誰がそれをやると思ってるんだよ
>>696 Reference Source見りゃわかるけど普通にControl.Enableのセッターで::EnableWindow呼んでるわよ
てかWM_ENABLEはただの状態変化後の通知だし
>>702 すんません。よく分かってないのですが、
Main()の中の3行をifでスルーさせれば良いってことですか?
それともRunの手前でExit()ってことですか?
>>704 正常ならform作ってrun、異常ならformを作らない。
テンプレのApplication3行は、最初の2行がGUIの設定、最後がformの作成&実行。
判定条件がファイルの有無なら、GUIの設定待つ理由無いでしょ
>>703 > Reference Source見りゃわかるけど普通にControl.Enableのセッターで::EnableWindow呼んでるわよ
そりゃそうだろ、だから何?
> てかWM_ENABLEはただの状態変化後の通知だし
違うぞ、ちゃんと読め
https://docs.microsoft.com/ja-jp/windows/win32/winmsg/wm-enable そもそも変化後の通知ならWM_ENABLEDになってるよ
>control.Enabled=true/falseって即時処理されるのか? 何をもって「即時処理される」と言うのかに違いがあるから話が噛み合わない
>>704 Mainでファイルなかったらreturnしてオシマイでいいよ
Exitは普通は使わない
sendmessageでもすりゃすぐわかる話じゃないのこれ
まあここは初心者スレなんだし勘弁してくれや
使えない部下との仕事のウサばらしは他でやってくれ
こっちは趣味で自分の使うアプリしか作ったことないから
「もしファイルが無かったら」なんて仮想の対策なんてしたこと無かったしww
それにC#というより「コンピュータのプログラムが動く仕組みは」に近い分野だったね
>>705 >>708 色々実験して、なんとなくできた。
Runが実行されなかったらExitは必要無いんだな。
ありがと。
>>712 RunしたあともExitは使わない
Closeを使って行儀よく終わらせる
>>706 「EnableWindowが戻る前だがWS_DISABLEDが立った後」だから状態変化後の通知でしょ
MSの動詞の使い方なんぞに一貫性は期待しちゃ駄目よ
もともとが定義の雑な質問なんだから現段階でこっちにイチャモン付けても実りはないと思うで
EnableWindowもメッセージ飛ばすだけだから何らかの方法でメッセージ処理させないとUI更新されない
Winformsのコントロール実装だと大体Enabledの中で状態変数を変化させて ついでにEnableWindowを呼んでネイティブ層での入力を無効化し ついでにInvalidateを呼んでペイントハンドラをポストして のちに出キューされたペイントハンドラがコントロールの状態を見ながら描画って流れやね
>>712 時間のかかる大規模な初期化をするなら、
フォーム作ってスプラッシュを立ち上げて
その中でってのはあるけど、
小規模ならフォーム作る前にしちゃうと簡単
good luck!
先輩方、設計に関して質問があります GameManagerというシングルトンにリソースやシステムの参照を固めて、 各々のクラスから静的経由でアクセスする神スタイルって何かデメリットありますか? 最初はResourceManagerみたいに細分化していたんですが、規模が大きくなるにつれてあれはどのクラスが持ってたっけ?と頭がとっ散らかって来たので、 ならいっそpartialでファイル分けた神クラスを用意した方が分かりやすさはあると思ったんです 俺、何か間違えてますかね?
神クラスでググればいっぱい出てくるだろ つか神クラスって単語知ってるならもう何度も見てると思うけど 自分に都合の悪いところは見ないタイプかな?
参照を直接持つ神クラスは巨大なクラスになって破綻しそう partialはファイルで分けるだけの問題だし 画像リソースやサウンドクラスの参照を返す、サービスロケータパターンなら有り得る XNAだとgameクラスがこれに相当 unityのGetComponentでは、コンポーネントパターンとの組み合わせで使われてたりはする サービスロケータにも宗教的な賛否はあるが実用的ではある
>>722 いや、単体で完結するクラスはしっかり最小構成で切り分けてるっすよ
ただ互いが互いを参照し合うクモの巣みたいなクラス群は、
参照先を一本にまとめる方が理に適っているのではないかと思って、
デザパタでいうFacadeやMadiatorを突き詰めて行ったら、
全てがGameManagerに集約されて神クラスっぽくなったのでこれはどうなんだと思った次第で
>>721 どのクラスが持ってるか分からなくなるのはクラス分けが下手だったからだろう。
すべて神クラスに押し込んだら、こんどは逆にあるメンバが元々何のために用意したものか分からなくなったり、別のメンバと取り違えたりして、破綻するだけだと思うぞ。
互いに参照し合うってのがそもそもあまり良くないけどそれは別の問題としておいておくとする 参照しあうとしても必要な相互参照だけ持ってればいい 相互参照してるから神クラスにするって発想は全く繋がらない 無関係な参照を持ってたらコード読んだ人が混乱するだろ
>>724 プログラムと同じ寿命で複数個所からアクセスする必要があるインスタンスを
グローバル変数として提供する静的クラスは是か非か、という意味なら
個人的には支持しますね。
いや、グローバル変数という言い方は変かw 「グローバル変数」と書くべきだった
>>724 実際にコードを書く人間を無視して、設計ありきで開発を統制しようとすると必ず破綻するものだ
モジュール化は基本的に開発の作業単位と一致しているのが理想
その作業単位こそがメソッドになったりクラスになったり、
開発チームや部門などもっと大きな粒度ならドメインやマイクロサービスになるわけだ
君が一人で開発していて、一緒に全部触ることが多いんだったらそれらは一箇所にあるのが自然
処理を神クラスに全部入れるのは感心しない クラスAとBで○○をするクラスをたくさん作ってそれを神クラスが使うならまだわかる
自分ではある処理にAとBしか使わないつもりだったのにいつの間にかCを参照してて 状態によって動いたり動かなかったりするのを避けられる
>>729 めちゃくちゃなこと言って初心者を惑わすの良くないp
staticなクラスにロジックを集中させるのが今風
https://ideone.com/L4OaZ0 ユーザーが自分でカスタム書式指定文字列を入力して、
出力名を決められるコードを書きました。
switch文のところが冗長な気がしますが、
もっとよい実装方法はありますでしょうか。
オブジェクト指向が全然わかりません。助けてください。 オブジェクト指向では、クラスしか使わないのでしょうか。 そもそも関数とクラスの使い分けがわかりません。 関数、クラスどちらでも良いように思えてしまいます。 クラス内で別のクラスや関数を使うことはあるのでしょうか。 その場合、呼ぶクラスの配置は、外にすればよいのか混乱しています。
>>736 オブジェクト指向が理解できなくてもC#は書けるからそれだけならスレ違い
>クラス内で別のクラスや関数を使うことはあるのでしょうか
コントロールもクラスだしむしろクラス内で別のクラス使わずに書くことの方が少ない
関数はC#には無い定義だからどんな意味で書いているかわからない
初心者ならそんなこと気にせずにコード書いておけばそのうち身につく
>>736 c#の関数は全てクラスの中でしか宣言できません
終わり
>>737-739 関数は、クラスの中でしか宣言出来ないのですね。
ご指摘の通り、初心者なので気にしないようにします。
ありがとうございました。
>>735 if(isEscape){ switch(f){ case 'c': result += Code; break; case 'n': result += Name; break; case 'y': result += DateTime.Now.ToString("yyyy"); break; case 'm': result += DateTime.Now.ToString("MM"); break; case 'd': result += DateTime.Now.ToString("dd"); break; default: result += f; break; } isEscape = false; } else if(f == '%'){ isEscape = true; } else { result += f; } >>735 別の意見の人もいるかもしれんけど、
とりあえず置換箇所を抜き出す部分と置換する部分は
分けた方が後でメンテしやすいコードになると思うよ
>>737 case '%': の時は次の文字読んで再帰呼び出しか
参考になるわ
>>735 だと’%’を文字列に入れられないのかな?
>>735 書いてみた
俺も暇だな
ただし大人の事情でProductはイミュータブルなクラスに変えさせてもらったw
https://ideone.com/Ck6bNl こういうのは結局if羅列が正解なんだよな switchだと値の単純比較しかできないからifで柔軟に分岐させるほうがいい あらかじめ書式を増やせるような工夫は大抵の場合YAGNIでコードを複雑に遅くするだけで終わる
>>745 なんか2行目と3行目が矛盾してると思うんだけどw
>>737 .NetCoreでもswitchべた書きなんですね
参考になります
>>743 ご指摘の通り%が出力できない仕様でした
>>741 さんのがよりスマートで%も出力できますね
>>742 >>744 さんのコードのような感じでしょうか
高度すぎて自分には発想にも至らなかったです。すごく勉強になります
みなさんありがとうございます
それはともかく、くどいようだけど、
どんな方法で実装するにしろ置換箇所の検出と置換は
分けた方がいいと思うよ
>>741 とか
>>735 みたいな両者が混然一体となったカオスなコードはあかんw
>>749 趣味プログラマーということもあり、
あまり人から教えてもらえる機会がないのでとてもありがたいです
ただの直感ですが、リファクタリング大好きなあのMDさんだったりして、
と感じましたw
>>745 パターンマッチングやwhenって知ってるかい?
>>752 知ってるけどif分のほうが遥かに柔軟よ
>>753 してないよ
ここで言ってる柔軟姓って拡張性って意味じゃないからね
>>744 うーん、参考にはなるがpremature abstractionに感じる
置換箇所の検出と置換を分けるかどうかより
Productが直接SymbolTranslatorを参照したり
formatルールがコンストラクタに入り込んできてたり
EvaluatorみたいなProductと関係ないメソッドが生えてるほうがずっと気になる
クラスを分けるならまずProductFormatterに委譲する形にしておいて
他のFormatterを書く時にもう一段階抽象化するかどうかを考えたほうがいい気がする
>>756 while Nが文字列長より小さい
if N文字目以後に%を含まない then 終了
if N文字目が% then ネストしてプレースホルダ解析してNを更新
else 次の%直前までまとめて読み取ってNを更新
例えばこういうの
C#のソースは改行コードはCR + LFで書くんですか?
ビルドはLF・CRLFどっちでも出来るので 後は好みとeditorconfigの設定次第<ソースの改行 自分の場合最近はLFで統一するようにしてる
Genericのtype constraintでTを+=演算子が使える型だって宣言することできる?
>>761 中二病は早く卒業しよう
その計算、本当に他の型で使う?
自分に聞いてみれば答えは明らかだろう
>>762 了解、ありがとう
>>763 処理別 × 型別の比較をするマイクロベンチのコードで+=演算子を使ってて
処理か型を追加するたびに処理数 × 型数のコードを追加するのが
面倒くさいからGenericにしたかったんだよ
C#の場合オーバーヘッドがあるから正確な測定には適さないけど
Genericでも傾向は分かるから
理由になってないじゃん 結局現実的なユースケースは無いってことだな
ちょっと教えて下さい。 CADで書いた2次元の平面図を読み取りエクセル等のシートにに貼り付ける事は可能ですか? 可能であれは加えて、アルファベットと数字を取得も出来ますか?
もしくは、PDFをコピペして、アルファベットと数字を読み取れますか?
>>766 スレ的にはlibreDWGとかかのう
CADがwmfとかBMP吐いているなら
スレ違い
DXF読むのは結構大変
質問よろしくお願いします 親フォームに作ったlistBoxのItemsプロパティを子フォームから取得したいので 公開用のpublicのプロパティを作って、(Form1)this.Ownerで取得する方法でやろうとしてるのですが Itemsプロパティの型が分からずできません。objectではできませんでした。 同じことをtextBox.Textでやるとstring型で簡単にできました。
>>771 そこは見たのですが
どこに型が書かれてるのかわかりません
型うんぬん以前の話だと思うの 親フォームのうえでなら、Items扱えてるの?
>>770 一般的にはそもそもForm上のコントロールを外から参照するのは不適切。
それ、「PCのモニターに写っている同じ映像を別のモニターにも表示したいので
PCのモニターからHDMI出力を出せないか?」って言ってるのと同じでは?
発想が間違ってるよ。
なぜ映像のソース側にその機能を求めないでただの表示機に求める?
>>775 なるほど!
あの長い文字列からusing除いた部分が型だったのか
できました!
>>776 やり方間違ってます?
Itemsに直接行かないで、
Itemsを配列に落としてからそっちを取る情が良いのかな?
なんか二度手間
>>776 デイジーチェーンという既にあるものを例に出して発想が間違ってるとか無能感が凄えな
使う側が加工する発想が無いとか普段どんな神クラスを生み出してるのか興味ある
>>778 世の中こういう人が多いから糞コードで溢れてるんだなw
「機能はソース元が持つべき(キリッ」 数十年前のオブジェクト指向かな この時代にまったく追い付いていない感よ
>>777 何でそうなるの
ListBoxのItems自体何かを参照して作ってるんでしょ?
その同じソースを子フォームも参照するのが筋ですよ。
香ばしい人が来たねw 本気で自分が正しいと思ってそうで怖いけどw
質問者の人みたいな、役割分担を意識しない有機的な(笑)コードでも
学生さんの宿題程度の小さなプログラムなら問題は顕在化しないよもちろん。
ちょっと規模がでかくなるとすぐ死ぬけどねw
こういう発想でやってると
>>780 の人は一人で大きなプログラムを設計して書いたことないんだろうね
>>781 うーん。listBoxをただのソース表示用にするならそうなんでしょうけど。
それだとItems.Addとか必要無くなりますね・・・
>>781-783 この怒涛の三連投である
ごめんね、初心者スレで難しい話しちゃって
素人は今まで通りデータと機能をセットにしたオブジェクト指向で良いと思うよ
ガイジはこんなところに来なくていいんだよ ママと喋っててくれな
あー子フォームにはプロパティ経由でItemsのインスタンスだけ見せたかったてことか
>>778 デイジーチェーンは普通バスがあって見る側でフィルターしてるだけでしょ
本来はI/O(型変換)が要らないところにI/O入れちゃうのはどう考えても悪手でしょ。今回の話でいえば子要素から参照したくなったときに、
リストボックスに直でaddしてるのをやめて、元リストを作ってリストボックスのdatasourceにするか手動同期するかして、トータルのI/Oが少なくなるようにリファクタリングするよね。
バイクのエンジンの掛け方を訊ねているのに 「バイクは転ぶから車にしろ」とか言ってくる不思議な人が世の中にはいる
MVVMの基盤がしっかりしてるならそれでいいけど Formsのバインドはクソだからなあ
バイクは転ぶし 転んだ時のダメージも大きいし 車とぶつかっても死ぬのはバイク 百害あって一利なし
いやーここは良いスレですよ 色々情報や知識が得られて 私のいるニッチな業界のスレじゃ 下手にかかわると顔バレしそうなんで なるべく情報出さないようにスルーが基本ですからww
UIプログラミングの原則として、コントロールを複数のクラスからアクセスるってのは 動作の競合起こしたときにどうにもならんから普通は避けるものですね この場合、サブフォームからメインフォームのメソッドを呼び出して処理自体をメインフォームのクラスでやらせるのが普通かな? 呼び出すにはサブフォームにFunc<T>の変数を用意して、メインでサブフォームを起動するときにコールバックをセットする
>>790 そういう比喩ならこっちの方が適切だね
バイクのエンジンのシリンダーにソレノイドを仕込んで「始動機能内蔵エンジン」
を発明(笑)した気になってるバカがいるので、そんな後でメンテに困るような
設計はやめて普通に外側にセルモーター付けろやと言ってるわけね。
〜正午〜
>>776 「コントロールを外から参照するのは不適切。何故ソース側にその機能を求めない?」
〜午後〜
>>796 「内蔵なんて後でメンテに困るから普通に外側に機能を付けろ」
僅か半日の出来事である
一体何が彼を変えてしまったのか・・・
>>798 くだらなすぎワロタw
それを言うなら
>>790 はどうなるのかねw
これが比喩として成立していると思う人は一人もいないと思うよw
しかし、幼稚だね
バイクの乗り方の話してるのに、唐突にバイクの機構の話で割り込んできた空気読めない人
まだ懲りずに言ってるしw
>>801 や
>>798 みたいなのにとっては「始動機能内蔵エンジン」実現のために
シリンダーにソレノドを仕込む機構の実現方法を聞いてる人には対しては
質問に対して真正面にベタに解答するのが正しいことなんだろうw
間違ってると思うよ。
そんな馬鹿なことなぜやるんだ、とアドバイスするのが正しいでしょ
>>777 usingってどこのことだろ。普通に一番上の方に
> public System.Windows.Forms.ListBox.ObjectCollection Items { get; }
とか
> プロパティ値 ListBox.ObjectCollection
って書いてあるのに。
>>804 エスパー読みすると
System.Windows.Forms.ListBox の参照が足りなくてキャスト部分でエラーが出てたんじゃない?
やりたいことができるようになってから、それが最適かどうか考えればいいことで 相手のレベル考えないでアドバイスしたって意味ないんだが それなら聞かれたことだけに素直に答えてるほうがよっぽど役に立つ
ビューからデータを取り出してあれこれするのはそれ以外方法がない場合は基本的に避けなきゃいけないレベルのことだと思うけどなあ jQueryでアプリ作るのが衰退してReactとかになったのも同じ理由だし。 (あくまでアプリの話でjQuery自体は今でもWebの表現に役立つライブラリで衰退してないと思う)
フレームワークの出来次第なんだよ WPFやWEB系の流行りの流儀をFormsに持ち込む必要はない Formsではイベント〜Formへの問い合わせ〜サービス〜Formの更新が基本的な流れなんだからその流儀に従えばいい 逆にモデルバインディングで作りたいならFormsを捨てる
MS公式セミナーにて 「技術より人脈ですよ」 ぺっ
モデルを分離して管理するコストに見合わないような 小規模で保守性をあまり考慮する必要がないアプリなら Form間で密結合させるのも選択肢の一つ 仕事で作るようなそこそこの規模のアプリで 保守性が重要なケースではまずやらない
ワンライナーのノリで書いて捨てるなら適当にやればいい
Formsではモデルを分離しても間違いなくモデルバインディングを実装するコストは意外と高い モデルを分離しただけのつもりが状態の二重管理になっていたなんてこともしばしば起こりうる なのでFormsでは入力が必要ならその都度ヴューに問合せたほうがいい そうすれば状態が重複しないので管理が楽になる モデルバインディングを使いたいならWPFにフレームワークを変更すること
DataTableのカスタムソートの方法を教えてください。 あるカラムを独自のルールでソートせたいのです。Selectで単純なソートはできるのは分かったのですが、delegate 的なので、ルールを設定できないでしょうか。
1秒ごとに、FormのTextBoxに1を加算していく・・Func1 2秒ごとに、FormのTextBoxに2を加算していく・・Func2 つまり 112112112.........このようにTextBox.Textの文字が増えていくプログラムを 非同期で作りたいと思います。 グローバル変数を一切使わずに実装することは可能でしょうか? 1週間考えてるんですが、Timerを使う方法しか思いつきません。 Timer Func1Timer Timer Func2TImer というグローバル変数を使ってしまうので、これはNGです。 いい方法はありますか?
>>818 検討します
ちなみにTask使えばグローバル変数は一切必要ないですか?
何がしたいん? 書き手にしかわからない前提条件が色々見えて 「ああ、こいつバカなんだな」 って思った
実務経験1年で月収80万稼げるエンジニアになった理由
VIDEO 意識が低いエンジニアこそフリーランスになれ
VIDEO フリーランスエンジニアの週3労働ってどんな感じ?
VIDEO ぼくがスキルのない社畜ならこうやって脱する
VIDEO 初めて人を雇ったらもう二度とサラリーマンをやりたくないと思った話
VIDEO プログラミングは文系でも余裕で出来ます!理由を現役プログラマーが解説
VIDEO 貧乏人こそ社会不適合者
VIDEO 元ド貧乏が教える】貧乏を抜け出すための2つの考え方
VIDEO より良いオファー貰ってるのに転職しないとか何考えてるの?
VIDEO >>820 非同期プログラミングでフォーム上の値を変えたいってだけです。
TextBoxの値を変えるっていう超単純なプログラムでまずは試すってことです。
>>817 グローバル変数を使ってしまうの意味がわからないよ
加算というか文字列を追加する処理をトリガーするメソッドで
タイマー2つ作ってイベントハンドラを設定してやればいいでしょ
複数スレッドから同じ変数を更新するなら同期かConcurrentは必要
>>824 すいません、クラス変数です。
public class Sample
{
public Timer Func1Timer;← こういう宣言するのが嫌
public Timer Func2Timer;← 嫌
public Method()
{
}
}
FormのLoadイベントでTickにdelegateかラムダで書けばいいんやないん
>>825 じゃ、TextBoxはどういう位置付けなの?
お前のルールに抵触してんじゃん
>>826 そこらへんちょっと理解できてなくて…
サンプルコード頂けますか?
>>825 public void FooMethod(){
var aTimer = new Timer(1000);
var bTimer = new Timer(2000);
…
}
メソッド内に閉じ込めればセーフってルールなんやろ?
理解できない以前にまず何も勉強してないだろ 頭が悪い上に不勉強で変な拘り持ってるとか救える要素ゼロだぞ
このスレの人達はFizzBuzzを見せても解こうとせずに問題がおかしいと文句付けるだけなのかなってこの流れ見てちょっと思った
>>828 825のソースのタイマー宣言の直後に
aTimer.Tick += async (s,e) =>
await Task.StartNew(() => Textbox.Text += 1);
bTimer.Tick += async (s,e) =>
await Task.StartNew(() => Textbox.Text += 2);
あ、DispatcherTimerじゃないならテキスト操作はInvke つかやないけんかも
>>822 大体1秒、2秒で良いなら
private async void Form1_Load( object sender, EventArgs e )
{
var odd = false;
while ( true )
{
await Task.Delay( TimeSpan.FromSeconds( 1.0 ) );
this.textBox1.Text += "1";
if ( odd )
{
this.textBox2.Text += "2";
}
odd = !odd;
}
}
>>817 TextBoxのTextを操作するだけのコードが非同期っていうのがまず意味が分からないよ。
非同期っていうのは普通はUIスレッドならUIスレッドの処理をブロックせず、
同時並行で別の何かの処理をするって意味じゃないの?
何でか知らんけどとにかくフィールドを作らずにTextBoxのTextを一定間隔で操作したいなら
(1) TextBox自身を継承してそういう機能を追加する
(2) リストに登録されたActionを指定間隔で実行するstaticクラスを作る
こんなとこじゃないのかな
>>837 それって835のこと?
いいんじゃない?
1秒→表示→1秒→って感じでTimerと少し動作が違うから大丈夫かは分からないけど
なぜフィールドを作らずに実現したいのか? 質問者はフィールドとCにおけるグローバル変数の区別がついていないだけな気がする 学習用にタイマー使ってみる、はわかるけどフィールド使わずに、って意味わかんない
学習用の課題に意味求めて進行止めるってまんま発達障害だな 小学校でいうと「たかしくんって誰?」とかそんな思考で問題自体に疑問持って解答諦める変なやつ
>>831 FizzBuzzは人口に膾炙した課題だろ
初心者の謎のこだわりでひり出されたクソと一緒だと思うのか?
>>840 妙なこだわりも発達障害にみられる兆候だけどな
お前の方がやばそうだな
>>835 ありがとうございます。
Delay???
短いけど意味が分からないですw
分からないので調べます。
>>835 クラス変数が必要無いのはかなり良いですね!
Textの変化とは関係なく、ボタンやリストを操作できる非同期ってことでいいですか?
>>825 クラス変数とインスタンス変数を混同していないか? もしくはそれらを知らない?
クラス変数とインスタンス変数という用語はC#ではあまり使わない C#はフィールドが静的かそうでないかという文化だからそう捉えておいた方が意思疎通しやすいぞ
故にグローバル変数とかクラス変数とか言ってる時点で こいつC#の基本的なところを全く勉強してないなと判断できる
今まさに学んでる最中の人を勉強不足と罵るすげえ奴がいるな 幼稚園児相手に「え、キミ掛け算もできないの(笑)」とかイキるタイプか
System.Drawing の Point は int か PointF の float なのに System.Windows の Point は double で 結局3種類ある訳で なんでこんな面倒くさいことになってんの?
いや学んでないでしょ 本で勉強すれば最序盤で解説されることだし ググって拾っても確実にその知識には最序盤で出会う
Media.Color「そんなこと言ってもなぁ?」 Drawing.Color「ああ、今更だよなぁ」
>>846 まず同期処理で書くことできる?
async、awaitは非同期をあまり意識させることなく実装できるのが強み
なんで、まずは普通に書けないと話にならない
自分は非同期じゃなかったらこうするってコードをあげてみたらどう?
async await って Unity でも使えたっけ
>>851 System.Drawingはuwpで使えるかな?
asyncawait使っちゃうと普通のメソッドとして呼びたいときハングアップするよ ババ付きにしちゃうよりはDoEvents呼んだ方がいいからね
WPFはそこそこ普及したがUWPは完全に死産だったな
意味不明な縛りプレイとか雑談とか回線コロコロしている人他へ行ってくれないかな
プログラムとして良い悪いは別にして グローバル変数使わずにローカルだけでやるというのは 明確にオブジェクト指向を意識する練習でもあるから 頭の体操にはいいじゃん
>>859 するよ
少なくともするときがあることは知ってるだろ?
そしてそれは同期処理にしておけば起きないことも知ってるだろ?
じゃあ、するんだよ
await を使ったメソッドの完了を待つTask で Task.Wait() するとGUI アプリではデッドロックする でも、そこさえ注意すればいいだけ
めんどくせえから全部ConfigureAwait(false)書いときゃいいんだよ!
>>862 オブジェクト指向関係あるかな?w
というかね、フィールドという明示的な実体を持たないくせに
インスタンスと同じ寿命を持つ「何か」が存在する、というのを
気持ち悪いと思わない人はプログラマの適正が疑わしいと個人的には思うよw
書いてみたけどくだらんなやっぱりw protected async override void OnLoad(EventArgs e) { base.OnLoad(e); var foo = WrapAction(() => textBox1.Text += "1", 1000); var bar = WrapAction(() => textBox2.Text += "2", 2000); await RepeatAction(() =>{foo(); bar();}, 10); } private async Task RepeatAction(Action a, int interval) { var closed = false; FormClosed += (sender, e) => closed = true; while(!closed) { await Task.Delay(interval); a(); } } private Action WrapAction(Action a, int interval) { var timeout = System.Environment.TickCount + interval; return () => { if(Environment.TickCount >= timeout) { timeout += interval; a(); } }; }
OS:Rasbian Stretch
ランタイム:Mono JIT compiler version 4.6.2 (Debian 4.6.2.7+dfsg-1)
ソース:
パッケージ:
エラー:Method 'System.Net.ServicePointManager.CloseConnectionGroups' not found.
ビルドターゲット:.NET Framework4.6.1
Windowsでは正常に動作します。
AngleSharpを入れていない場合であればMonoのほうでも動作します。
Anglesharpを入れるとバイナリのフォルダに大量のSystem.***.dllができます。
AngleSharpを入れていないと動くのに入れるとエラーが出る理由はなんですか?
>>871 相談スレの方ですか?
AngleSharpを入れない場合はちゃんと動く理由がわかりません。
エラー内容見ろ エラー:Method 'System.Net.ServicePointManager.CloseConnectionGroups' not found. System.Net.ServicePointManager.CloseConnectionGroupsというメソッドが見つからないと言うことだ 何故見つからないかと言えば前に書いた内容で調べるべき
入門者なのかもしれないけどいきなり面倒な方法を使って勉強しても大変だよ 標準的な内容である程度勉強した後に発展でMONOを使うならいいと思うと書いてもまあ理解されないだろうな 標準的な入門を選ぶか いばらの道の入門を選ぶかは個人の自由だもの
>>873 AngleSharpを入れなければそのようなエラーは出ません
その理由がわからないという質問です。
知らないが憶測 AngleSharpで要求されるバージョンのライブラリを入れると そのメソッドがないライブラリが入りそちらが優先されてしまうため
anglesharpが要求してるもんが環境によって違ってるんじゃない?
System.AggregateException: One or more errors occurred. ---> System.MissingMethodException: Method 'System.Net.ServicePointManager.CloseConnectionGroups' not found. at System.Net.Http.HttpMessageHandler.Dispose () [0x00000] in <27bbdd4ceaf04a95b172ee502d76a725>:0 at System.Net.Http.HttpMessageInvoker.Dispose (System.Boolean disposing) [0x0001e] in <27bbdd4ceaf04a95b172ee502d76a725>:0 at System.Net.Http.HttpClient.Dispose (System.Boolean disposing) [0x0002c] in <27bbdd4ceaf04a95b172ee502d76a725>:0 at System.Net.Http.HttpMessageInvoker.Dispose () [0x00000] in <27bbdd4ceaf04a95b172ee502d76a725>:0 at ConsoleApp17.Program+<MainAsync>d__1.MoveNext () [0x00117] in <a0ba2302dc914c45933daaf9af0bf56d>:0 --- End of inner exception stack trace --- at System.Threading.Tasks.Task.ThrowIfExceptional (System.Boolean includeTaskCanceledExceptions) [0x00014] in <8f2c484307284b51944a1a13a14c0266>:0 at System.Threading.Tasks.Task.Wait (System.Int32 millisecondsTimeout, System.Threading.CancellationToken cancellationToken) [0x00052] in <8f2c484307284b51944a1a13a14c0266>:0 at System.Threading.Tasks.Task.Wait () [0x00000] in <8f2c484307284b51944a1a13a14c0266>:0 at ConsoleApp17.Program.Main (System.String[] args) [0x00005] in <a0ba2302dc914c45933daaf9af0bf56d>:0 ---> (Inner Exception #0) System.MissingMethodException: Method 'System.Net.ServicePointManager.CloseConnectionGroups' not found. at System.Net.Http.HttpMessageHandler.Dispose () [0x00000] in <27bbdd4ceaf04a95b172ee502d76a725>:0 at System.Net.Http.HttpMessageInvoker.Dispose (System.Boolean disposing) [0x0001e] in <27bbdd4ceaf04a95b172ee502d76a725>:0 at System.Net.Http.HttpClient.Dispose (System.Boolean disposing) [0x0002c] in <27bbdd4ceaf04a95b172ee502d76a725>:0 at System.Net.Http.HttpMessageInvoker.Dispose () [0x00000] in <27bbdd4ceaf04a95b172ee502d76a725>:0 at ConsoleApp17.Program+<MainAsync>d__1.MoveNext () [0x00117] in <a0ba2302dc914c45933daaf9af0bf56d>:0 <---
.net framework ≠ monoのframework それぞれ違う実装で別物 それを.net standardで標準化しようとしてる でも実際にちゃんと実装されてるか不明 仕組みがすべてうまくいってるのか不明 対応したライブラリを作っている人の検証も十分かどうかわからない 動かない場合他人に聞くより自分で調べるしかない
>>880 ありがとうございます!
しかしそのまま削除してしまうと下記のようなエラーが出てしまいますね…
コンパイルからするとしたら勝手にコピーされるのを禁止する的なオプションが必要そうで難しそうですね…
Unhandled Exception:
System.BadImageFormatException: Could not resolve field token 0x04000002
File name: 'ConsoleApp17'
at ConsoleApp17.Program.Main (System.String[] args) [0x00000] in <a0ba2302dc914c45933daaf9af0bf56d>:0
[ERROR] FATAL UNHANDLED EXCEPTION: System.BadImageFormatException: Could not resolve field token 0x04000002
File name: 'ConsoleApp17'
at ConsoleApp17.Program.Main (System.String[] args) [0x00000] in <a0ba2302dc914c45933daaf9af0bf56d>:0
コンインハイブで有罪判決 ♪─O(≧∇≦)O──♪ ユーザーな cpu、gpu を勝手に使い、外部にデータを送信していたのがダメっぽい。 ユーザーの許可なく、デリゲートに処理なげるコードを書いてるc# 犯罪者も全員逮捕すべきだね。 ボタンを押した時の処理をボタンクラス等に書いておけば、インテリセンスで入力補完できて便利なのでみんなでそうすべき。
Hoge[] hage = new Hoge[123]; List<Hoge> hige = new List<Hoge>(); foreach(Hoge h in hage) hige.Add(h); hage.Length と hige.Count とでプロパティ名が違うのが気になります
そりゃ列には長さはあるけど、リストに載ってるものは個数じゃないか?
リストはコレクションを継承してるからな コレクションに長さはおかしい
配列だと.Countが呼び出せないのにIList<T>にキャストすると呼び出せるようになるのって、そういえば何故なんだろう?
物によって lengthの時もあるのが…ってこと?
気になったから調べたぞ Arrayクラスの実装に↓のようなものがあるというのが答えかな (IListはICollectionを継承してる) // Number of elements in the Array. int ICollection.Count { get { return Length; } } こう書くとCountはprivateになるから見えないが インターフェイスは全部publicだからインターフェイスに直接アクセスすると当然見える なんか微妙な挙動な気もするが
そもそも愚問だと思うよ 逆に実装してるはずのインターフェイスのメンバーにアクセスできなかったらおかしいでしょw 意味がわからないよ インターフェイス周辺の文法はVBの方がイケてるね。 VBの文法ならこういう変な勘違いは起こらない
何の問題もないからVBとかいらない 想像するしかないけど配列の長さとしてはLengthの方がふさわしいから隠したんだろ ICollectionとして扱えば一貫してCountが使えるんだから何の問題もない
明示的実装にしたのは単に混乱防止のためでしょ。 (ジェネリッククレクションは.NET 1.0の時代には存在しない) Lengthという名前が採用されている理由はシンプルにCountにすると、 例えばnullを要素としてカウントしないアプリケーションだと違和感があるからじゃないの? かといってCapacityとも違う。だからLengthなんでしょう。たぶん。
もっとシンプルに、たとえ多次元配列であっても配列はメモリー上の連続した領域であることを 意識させたかったのかもしれない。考えすぎかw
cnt「フフフッ」 siz「ワレラガ」 len「ミツカルカナ?」 typ,mng,ary,kbn←四天王
平日の昼間にスレ違いの雑談で埋めるようなところにワッチョイはもういらないよな
次スレは
ふらっと C#,C♯,C#(初心者用) Part141
http://2chb.net/r/tech/1544838367/ 使ってここの継続は立てるなよ。前スレからだがテンプレも読めず雑談やスレ違いで埋める数人のためのスレとかいらん
>>903 もともとワッチョイなんて有害無益なのは(普通の思考回路してたら)分かるけど
そうじゃないのに限って「声がでかい」のでそんなこと言っても無駄だと思うよw
ワッチョイの意味がよくわかってないのか、有害の意味がわからん コードが付くだけやん
>>904 普通の思考回路してたら分かるとかレッテル張って
反対意見潰そうとするのはフェアじゃないな
せっかくレッテルまで貼ったのに誰にも共感してもらえてなくて草
自演ができなくなると何かまずいのか? たまに単発IDの頭のイカレタ質問と回答が書き込まれる一連のやり取りがそうなのか? 明らかに初心者の域出てるししかも誰も興味ないし 他の初心者の邪魔だからやめた方がいいぞアレ 人の気持ちを考えられない人間になると設計も自然とヘタクソになっていくから プログラミングの腕も引きづられて落ちていくぞ
ようわからんが、単芝生やしてる15/15はこのスレの大古参なので、生意気な口を聞くなよ
15/15ってなんや (アウアウウー Sa9b-WggA)のことね 大先輩だよ もう13年くらいいるよね
>>905 例えば
>>909-910 みたいな変なの。
ちょっと前新型コロナの話題が出てたけどあれと同じだよ。
日本人は目的合理性ではなく気が済むかどうかで意思決定しがち。
日本人はこういうところ韓国人と完全に同じだね。
ワッチョイに推進論者が意図するようなプラスの効果なんか期待できないことは自明だ。
そのくせに意図せざる負の効果だけはしっかり存在する。
これ言うと荒れるかもしれないが、ワッチョイ推進論者は匿名掲示板で
「他人が何者か特定した気にならないと気が済まない」ストーカー気質の変な少数者だが、
本人たちにその自覚はない。
ワッチョイみて、なんだまたアイツか。って安心するんだろ
>>911 負の効果なんてないだろ
自演できなくて悔しいですって正直に言えば賛成してやらんでもないぞ
レス番飛んで変な流れになってると思ったら謎理論を展開してる人が 意図せざる負の効果とかかっこいいこと言ってるけど ワッチョイでNGされちゃうことで構ってくれる人が減るのが嫌なだけでしょ
自作自演できた方がメリット大な理由 デメリットにならないか等kwsk
jsonの配列の行数が欲しくて以下のようなコードを書いたのですが var jsonlist = DynamicJson.Parse(@"{""a"":1, ""b"":2}"); int cnt = 0; foreach(var json in jsonlist) { cnt++; } jsonlist.Count()的な端的な書き方はあるでしょうか?
>>917 ちらっと見た限りDynamicJsonってDynamicObject派生の独自の実装みたいだから
クラス作った人に聞くしかないのでは?
http://neue.cc/2010/04/30_256.html Dynamicに物故んだだけみたいだからcount取れるんだろうか?
無理ですか メソッドチェーンで1行で書けたら綺麗だなと思っていましたが地道にカウントします ありがとうございます
いやいやいや 一行で書きたいなら自分で何でも書けばいいだけだろうw
そういう要望ならToList()すればいいのでは?
DynamicJSONは実用品というよりPOCで、今時誰も使ってないよ デファクトスタンダードはJSON.NETで、LINQもdynamicも使える
json.netはデファクトスタンダード感あるな 他だとsystem.jsonとかutf8jsonとかが代替じゃないのかな
>>923 リンク先のサンプルで配列に変換してたからそれでやんのがいいかもね
試してないから出来るのか知らん
((dynamic[])jsonlist).Length
Json.NETって何だ、自分はNewtonsoft.JSONしか使ったことないけど大丈夫かと思ったら前者がライブラリ名、後者が名前空間名で同じものか、焦ったわ
jsonライブラリで一番メジャーなのってNewtonsoft.Jsonじゃないの?
Json.Netがこれのことか?
パフォーマンス的には
>>921 の人が作ったutf8Jsonが世界最強らしいが
utf8jsonは早いのかもしれないけど、publicメンバじゃないとダメとか 依存ライブラリが多いとかちょっと使い勝手がな。。 あと全体に言えるけど、 DateTime型をそのままJSONに変換したときに、JSONマッパ毎に結果が異なるのはどうにかならないかな
元々のjavascriptに準拠してないんだよな jsで読み込めないのにJSONと言い張るなよとw
>>933 Newtonsoft.Json==Json.Net
listの一部要素を切り出したい時ってインデックスの指定以外で早い方法ある? 要素100で0~8,3~21,10~30,50~61,~~みたいに切り出すとして切り出す長さは事前に与えられるケース getRangeはコピーつくるみたいなので除外して、skipとtakeはどうなんだろと調べてみたらどうにも結果が安定しない skipは先頭からn個目まで一気にスキップするわけではなくて、順番に数えてn個までの要素を跳ばしてるのかな
JSONは既にJavaScriptの仕様から乖離してるからな。 53bitを超える整数リテラルはJSONでは合法だがJSでは読めるとは限らない。
>>938 ないのでは?
あくまでIEnumerable前提の実装だから非効率なのは仕方ないよね。
分かってるだろうけどそれが気に入らないなら自分で書けばいいだけなわけで
IEnumerableって順序ないのにSkipの説明には「シーケンス内の指定された数の要素をバイパスし、残りの要素を返します」って書いてるけどシーケンスって順序決まった列じゃないの?
それは単なる使う側の問題では? その都度乱数を返すIEnumerableとかあったとしてもシーケンスとして扱うことは可能 再現性がないだけで
>>944 こんなのあるんだなあ。ありがとう
むしろこっちの書き方に混乱した
> sequence is IList<T> list
C#7からできるようになったみたいだけど、これのメリットって変数のスコープを限定できるって理解でいい?
>>943 IEnumerableを継承してるコレクションもシーケンスだったのか
コレクションというくらいだからおもちゃ箱のおもちゃみたいなグチャグチャな塊のイメージだった
>>938 arrayに変換できるならspanでアクセスするのが早いんじゃないかな?
spanができて飛び飛びのインデックスへのアクセスが多いケースでは問題なければarrayでことが増えた
>>946 型チェックとnullチェックとキャストが同時にできる
キャスト結果がコンパイラによって保証されている
範囲アクセスの新しい構文できたよね list[0..5]、list[5..10]、list[a..a+5]で5個ずつ抜き出し 使ったことないけど
>>946 パターンマッチで一発でできるのがメリットでそれ以外は副産物じゃないかな
if (sequence is IList<T> list) {
return list[5..];
}
は
IList<T> list;
if (sequence is IList<T>) {
list = (IList<T>)sequence;
return list[5..];
}
と同じイメージで変数スコープはちょっと特殊
>>946 asと同じく、型チェックが1回で済むからisキャストに比べてちょっとだけ速い
enumの比較をvbで書いたら違う型なのに真になった なんじゃこりゃ c#は問題ない
Option Strictは関係ないみたいね。 たぶんenumの型(intかshortかbyteか)で比較するんだろう。 別にそれでもいい気がする。 個人的にはC#の参照型の==演算子は既定で参照を比較する方が気持ち悪いと思うw 実装されてなければコンパイルエラーでよかったのに
WinFormsのTreeViewで、CheckBoxの代わりにRadioButtonを使いたいのですが、 それらしい設定を見つけきれません。 どう設定すればよいのでしょうか?
element host使ってwpfのlist view使うのが一番楽だと思う
DBに接続するときに以下のようなContextがあるとしてMyEntities1、MyEntities2、MyEntities3のテーブルにデータが追加されているかをtimerを回してデータCountが変わっているか調べて追加されています。 これをデータが追加されたときのみでよいのですが、削除、変更等があったときにイベントを発生されることってできますか? public partial class MyContext: DbContext { public MyContext(DbConnection connection) : base(connection, false) { } public virtual DbSet<MyEntities1> MyEntities1 { get; set; } public virtual DbSet<MyEntities2> MyEntities2 { get; set; } public virtual DbSet<MyEntities3> MyEntities3 { get; set; } }
DBによってはEVENTを通知する仕組みがある 仕組み以外でもtriggerとかも使える まあ対象テーブルへの変更がEF経由のみなら、それを一律で監視するのもアリ MyContext内部とかそのラッパーとかでeventを発火させれば済む
DBMS_PIPEかな? db2とかOracleなら
MyEntitiesにイベント実装するだけじゃないのか 独自イベントでもいいし、INotifyPropertyChangedでもいいかもしれん
>>961 情報が足りなかったすみません
対象のDBはSQL Server2000です
これにデータを追加しているアプリと
データが追加されているかを監視したいアプリは別なのですが可能でしょうか?
後、変えられるのは監視したいアプリ側だけで DBと 追加しているアプリは変えられないです。
軽量でない処理を行ってその処理の内容次第で適切な区分値を返すメソッドがあるとすると メソッド名はどんな感じにするべきですか? つまりGetHogeKubunのようにGetをつけるのが簡単ですが、 軽量でない処理を呼び出すときはGetをつけないほうがいいという話がありますよね? 私はプロパティ構文のある.NETの場合は、 Getという文言がついているからといって軽量な処理を想定しないと思って 別に適切な命名が思いつかなければ軽量でない処理でもGetを使ってきたのですが、 その考えもどうなんだろうと思ってきました。 みなさんはどうしてますか?
処理の内容を英文で頭につければいいいよ 計算してるのか通信してどこかから取得してるのかで違うでしょ?
処理が重いとか軽いとかでメソッド名は変えないな 非同期にするとか仕組みでカバーすることはあるかもしれないけど
英語の解釈 getは、基本的に置いてある物などを入手する場合に使われます。 努力をしないで物を得る時に使われる事が多いです。口語として一般的に使われています。
Getはすでに計算してある結果などを取る感じ じゃあ計算はどこでやっててどこに入れてあるのかなあと考える
>>968-971 ありがとうございます
イメージがついてきました
>>965 DBへの変更はできない、DBを更新してるアプリの変更はできない、かつSQL Server 2000という条件で
データの追加・更新・削除を検知したいってことでいいのかな?
そういう検知ができるようにテーブル設計されてなければ正攻法では無理
カラム追加するなりストアド使うなりバージョン上げるなりするほうが早いし安上がり
クラサバ型のアプリなんだけど サーバー側からイベントが欲しいって言ってんじゃね? クライアント100台全部に通知ほしい? また、その電文は投げっぱなしのジャーマンじゃなくて応答が欲しい? 凝ったことするときはレンサバでなければサーバー側にサービスとか動かして実現することが多いかな? 俺の経験だと
>>967 >軽量でない処理を呼び出すときはGetをつけないほうがいいという話
これは聞いたことないね
MSのガイドラインではプロパティのゲッターに重い処理を書いてはいけないとなってたと思うけど、
(つまりGetXXX形式にしろ)それを聞き間違えたんじゃないか。
もちろん例外はあると思うけど、メソッド名が十分適切に「何をするメソッドか」を表現できていれば、
普通はそれが重いかどうかだいたい想像がつくのでは?
まあ、非同期メソッドにしたら軽くないことは嫌でも伝わるね
967が独自で見聞きしたとくに重要とも思えない、間違っていそうな情報を調べるとか時間の無駄でしかないな
基本なのにいつまで経っても議論が絶えないめんどくさい話 IDEのリファクタリング機能が優秀になったおかげで修正が楽だから結構適当につけて後から気に入らなかったら直すスタイルになった 命名で悩む時間が減ったら作業効率あがる
string[] a = new string[]{"a","b","c"}; に対して System.Array.Reverse(a); でaそのものが反転してSystem.Array.Reverse(a)は戻り値がありませんが a.Reversed() で戻り値が反転した Array で元の中身は変えない みたいになるメソッドってありますか?
引数 0 を指定するメソッド 'Reverse' のオーバーロードはありません。 って出るんだけど何が変なのかな
980踏んだのでついでに御相談なのですが
ふらっと C#,C♯,C#(初心者用) Part146
http://2chb.net/r/tech/1576069931/ ここの次スレ (Part147 ?) は立てた方が良いのでしょうか?
既に
ふらっと C#,C♯,C#(初心者用) Part141
http://2chb.net/r/tech/1544838367/ というスレもあるようですが重複なので放置なのか使い切った方が良いのかどっち?
そっちはワッチョイなしのスレ こっちはワッチョイありのスレで別物よ だからスレ立ての時に気を付けてね
>>978 命名規則なんてチーム開発での決め事でしかないんだから周り合わせりゃいいだけ
一人で作ってんなら好きにすりゃいい
そんなもんだろ
っで時間がかかる時にGetを付けるかどうかとか決め事にするほどでもない内容だわ
データ書き換えしてるとかならわかるけど
>>962 >>964
timerを回して下のようにデータ件数を取得して比較する
増えていたら必要な処理をおこなうぐらいしか思いつかないんですが
MyContext内の監視の仕方を教えてくれませんか
using (var context = new MyContext(connection))
{
datacount1 = context.MyEntities1.Count;
datacount2 = context.MyEntities2.Count;
datacount3 = context.MyEntities3.Count;
}
//比較処理
Proc(datacount1 ,datacount2 ,datacount3)
>>973 >>974
既製品が既製品のDBにInsartだけしていて情報を表示する既製品のアプリもあるのですが
DBにアクセスはできるので情報を表示する既製品のアプリを別に作りたいなと思っています
>>そういう検知ができるようにテーブル設計されてなければ正攻法では無理
これはどんな感じに設定されているのでしょうか?インデックスの最大値を検知とか?
トリガー作って監視用のテーブルに 情報を描きこむ。 DML トリガーでggr
それが正攻法やなあ 更新時に通知するのが一番良いけど、そこは触れなそうだし、フックポイントを用意してる気の利いた作りでも無さそうだし 何が問題で、精度や頻度やデータ件数すらわからんので、禄なアドバイスできんが C#要素薄いし
sqlserver2000には誰もつっこまないのか 10年近く前にサポート切れてるだろ
どう見ても案件的にいろいろ終わってそうだからねえ 泥縄過ぎる気配
>>989 >Proc(datacount1 ,datacount2 ,datacount3)
え? その3つの比較なの?
もうワケワカメ
基本的にDML トリガー等でDB側に用意しておくものだってことか・・・
>>991 既製品のDBアプリはいじれないので
必要なtableのデータをsqlserver2010からsqlserver2019データを移動させるつもりなのですが
ほとんどのtableは1分に一回ぐらいチェックして別のDB入れるで十分だけど一部のtableはInsertされたらすぐに別のDBに入れたい
そうなると1秒間隔でtimer回して
>>989 のような処理ってどうなんだ・・・?tableは100ぐらいでレコード件数多いのは100万あるので
timer回さなくてもMyContextが自動でデータ変化をチェックできるようなもっといいやりかたない?って疑問があったので質問してました
>>962 >>まあ対象テーブルへの変更がEF経由のみなら、それを一律で監視するのもアリ
これが気になるんだけど変更を一律で監視ってレコード件数とかなのだろうか
>>994 >>Proc(datacount1 ,datacount2 ,datacount3)
前回のレコード件数と比較して変わってたら2019に移動のつもりで書いていました
>>995 無茶苦茶じゃねえか。
1秒間隔で100万超のレコードのcount取るとか、既存アプリとやらが使えなくなるレベルでパフォーマンス落ちると思うぞ。
>>995 なんでDBContextの話をしてたのかやっと理解できた
DBContextがデータベース側の変更を自動で検知するとかは無理
楽観的同時実行制御みたいな機能はあるけど求めてるものとは違う
DB移行で新旧オンラインのまま
一部テーブルを同期させたいというユースケースなら
トリガーよりも先にレプリを考えるな
詳しくはDB板で聞けば
EntityFrameworkならSaveChangesをoverrideしちゃえばできるんじゃね? あんま読んでないけど
>>996 やっぱりそうなっちゃうかな
>>997 変更を自動で検知は無理か
レプリケーション調べてみます
ありがとう!
-curl lud20241211050934caこのスレへの固定リンク: http://5chb.net/r/tech/1576069931/ ヒント: 5chスレのurlに http ://xxxx.5chb .net/xxxx のようにb を入れるだけでここでスレ保存、閲覧できます。TOPへ TOPへ
全掲示板一覧 この掲示板へ 人気スレ |
Youtube 動画
>50
>100
>200
>300
>500
>1000枚
新着画像 ↓「ふらっと C#,C♯,C#(初心者用) Part146 YouTube動画>10本 ->画像>3枚 」 を見た人も見ています:・ふらっと C#,C♯,C#(初心者用) Part137 ・ふらっと C#,C♯,C#(初心者用) Part119 ・ふらっと C#,C♯,C#(初心者用) Part154 ・ふらっと C#,C♯,C#(初心者用) Part128 ・ふらっと Q#,Q♯,Q#(初心者用) Part 1 ・ふらっと C#,C♯,C#(議論用) ・Webサイト制作初心者用質問スレ part248 ・Webサイト制作初心者用質問スレ part253 ・くだすれFORTRAN(超初心者用)その6 ・くだすれFORTRAN(超初心者用)その7 ・【プロスピ】プロ野球スピリッツA初心者スレ part16 ・街コン行く人集まれ(初心者向け)Part4 ・FX初心者スレ Part134 ・MTB初心者質問スレ part103 ・MTB初心者質問スレ part105 ・3ds Max初心者質問スレ Part18 ・Xiaomi(小米科技)初心者 Part11 ・Xiaomi(小米科技)初心者 Part17 ・クロスバイク初心者質問スレ part15 ・クロスバイク初心者質問スレ part17 ・クロスバイク初心者質問スレ part13 ・初心者の質問相談にやさしく答えるスレ Part11 ・セキュリティ初心者質問スレッド Part140 ・遊戯王 初心者・復帰組交流支援スレ Part17 ・Wonderland Wars 入門者・初心者スレ Part15 ・PS4】ARK: Survival Evolved 初心者 part12 ・PS4】ARK: Survival Evolved 初心者 part14 ・【iOS/Android】消滅都市2初心者スレ part18 ・幻獣契約クリプトラクト 初心者&質問スレ part11 ・ドラゴンズドグマオンライン初心者専用スレ Part1 ・【マギレコ】マギアレコード まったり・初心者・質問スレ Part18 ・【プリコネ】プリンセスコネクト! Re:Dive初心者スレ Part105 ・【右巻き】ルアーの右投げ右巻きって初心者臭いよね Part101【発狂】 ・【口だけ】ルアーの右投げ右巻きって初心者臭いよね Part103【発狂】 ・【プリコネ】プリンセスコネクト! Re:Dive初心者・中級者スレ Part161 ・【プリコネ】プリンセスコネクト! Re:Dive初心者・中級者スレ Part122 ・【プリコネ】プリンセスコネクト! Re:Dive初心者・中級者スレ Part115 ・【プリコネ】プリンセスコネクト! Re:Dive初心者・中級者スレ Part135 ・【プリコネ】プリンセスコネクト! Re:Dive初心者・中級者スレ Part160 ・【ロマサガRS】ロマンシングサガ リ・ユニバース初心者スレ Part1 【課金・無課金】 ・【DFFAC/DFFNT】初心者スレ DISSIDIA FINAL FANTASY(ARCADE)/NT part15【まったり】 ・【DFFAC/DFFNT】初心者スレ DISSIDIA FINAL FANTASY(ARCADE)/NT part16【まったり】 ・【DFFAC/DFFNT】初心者スレ DISSIDIA FINAL FANTASY(ARCADE)/NT part17【まったり】 ・ロード初心者質問スレ part446 ・【初心者・質問】イース6 オンライン part1 ・【LoL】League of Legends 初心者スレ Part146 ・格ゲーが衰退してる原因は、初心者に媚びすぎたから Part6 ・【プロスピ】プロ野球スピリッツA初心者スレ part186 ・【新馬】ウマ娘プリティーダービー初心者スレ Part106 ・【タガタメ】誰ガ為のアルケミスト 初心者・質問スレ Part.46 ・【ランモバ】ラングリッサー 初心者&まったり&質問スレ Part.16 ・【プリコネ】プリンセスコネクト! Re:Dive初心者スレ Part146 ・ウクレレ初心者集まれ! Part17 ・pixiv初心者&質問スレpart1 ・バジリスク絆初心者質問スレpart19 ・ウクレレ初心者集まれ!! Part19 (ID有) ・【初心者】ダイエットの質問・相談スレPart191 ・【若葉】運転初心者のためのスレPart133【黄|緑】 ・【初心者】ダイエットの質問・相談スレPart188 ・【初心者】洗車〜ワックスがけ情報【大歓迎】Part114 ・【Part11】 まったりと将棋するスレ 【初心者歓迎】 ・【Part13】 まったりと将棋するスレ 【初心者歓迎】 ・【MHW】モンスターハンターワールド 初心者スレpart19
07:02:19 up 3 days, 17:26, 0 users, load average: 9.08, 12.09, 11.88
in 4.4605059623718 sec
@4.4605059623718@0b7 on 121521