ふらっと C#,C♯,C#(初心者用) Part139
レス数が1000を超えています。これ以上書き込みはできません。
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください
>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■関連スレ
C#, C♯, C#相談室 Part93
https://mevius.5ch.net/test/read.cgi/tech/1492818720/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part138
https://mevius.5ch.net/test/read.cgi/tech/1528194762/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■情報源
https://msdn.microsoft.com/ja-jp/library/gg145045.aspx
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/ >>1
スレたて乙
「980以降で次スレ立っていないときはスレを埋めないでください」もテンプレに追加しなきゃならんかな ファイルやディレクトリー操作する時は
パスを文字列で取得するけど
パスをコントロールする用の適切なクラスや型ってあったりしますか? コントロールが何を指しているのか不明だけど、System.IO.Path のこと? >>9
単純にパスの格納を文字列でしているから
パス格納用の型とかがあったら知りたいです
MSならWindowsのファイルシステムに対して.Netから特殊な操作ができるのかなあって思いました
単純にファイルの検索でpathクラスより高速なものがあったりするのかなあと Ruby のPathname クラスみたいな、便利なユーティリティクラスだろ あのAPIってPath, File, Directoryのどのクラスにいたっけ…ってなることがたまに 共変性、反変性どうのって性質ってさあ
一体、なんに利用できるんだぜ? ウィンドウを広げたら画像も等倍で大きくなるようにしたいんですがどういう設定を弄ればいいでしょうか?
今はこんな風になります。
http://fast-uploader.com/transfer/7089340407313.jpg
pictureboxのsizemodeはzoomにしてあります >>16
配置しているコントロールの大きさが変わらないと機能しない
それフォームしか大きさ変わっていない >>16
各コントロールのAnchorにRightやBottomを追加して
意図した結果になるように付けたり外したり試してみて >>16
先回りしとくと画像ができたらボタンとDateTimePickerもそろえて変えたいと思うかもしれないが
少なくともWinFormではDateTimePickerの大きさを合わせて変えるのは凄く面倒 >>17
>>18
>>19
Anchorを弄って大体の感じでできました。
DateTimePickerはあきらめます。
ありがとうございました。 publicメンバの変数名全部小文字にしちゃった
後任の人ごめんね visuakstudioでクラスを追加したあと関連づける方法がわかりません
どうすれば良いでしょうか?
Form1.cs
namespace neko
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(testtext);
}
}
}
test.cs
namespace neko
{
class test
{
string testtext ="表示";
}
} test t = new test();
MessageBox.Show(t.testtext);
もしくは
MessageBox.Show(test.testtext);
class test
{
static string testtext ="表示";
} >>23
ありがとうございます
下のやり方では出来ませんでしたが
上のやり方でpubulic stringにしたら出来ました
>>24
読んでみます インスタンス作成を書かずに済ます方法はないのでしょうか?
usingを使用したりです
2つ以上のファイルに分けてコードを書きたいのが目的です。
MessageBoxがusing System.Windows.Forms;で参照している様なのと同じように書きたいです 俺流を考えるのは一通り基礎を理解してからで遅くないからw >>23の下のやり方が出来れば目標達成です
public static string testtextとしたところ目的どおりにできました
何か変なところはないでしょうか?
これで大丈夫ですかね? >>21
プロパティのこと?それともフィールドをpublicにしちゃったの? メッセージボックスを出して押されたボタンに対応するメッセージをラベルに表示する簡単なプログラムなんですがswitchでかけるのは解ったんですがifでかくとどうなりますか?
ちなみにソースとアプリの画面はこんな感じです。
http://fast-uploader.com/transfer/7089619124517.jpg
var x = MessageBox.Show("メッセージ", "タイトル", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Asterisk);
switch (x)
{
case DialogResult.Yes:
label1.Text = "はいが押されました。";
break;
case DialogResult.No:
label1.Text = "いいえが押されました。";
break;
default:
label1.Text = "キャンセルされました";
break;
} >>31
var x = MessageBox.Show("メッセージ", "タイトル", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Asterisk);
if (x==DialogResult.Yes) label1.Text = "はいが押されました。";
else if (x==case DialogResult.No) label1.Text = "いいえが押されました。";
else label1.Text = "キャンセルされました"; >>32
あれ・・・それ書いてみてダメだった気がしたんですけど自分の勘違いでした
やってみたら動きました。 どこか書き間違えてたんですねきっと。ありがとうございました フィールドはパブリックにしないほうがいいよ
理由は調べれば出てくる AxWindowsMediaPlayer をフォームに貼り付けていろいろやっているんですが、
MediaPlayer に予め設定されているキーボードショートカットを無効化する方法はないでしょうか。
まちがえて押してしまって暴発する他、Ctrl + F などの登録されているキーに
別の機能を割り当てたいのですが、MediaPlayerのKeypressイベントで e.handled がtrueにされてしまっているのか
フォームのKeyPressイベントが呼ばれないようです。 >>36
フォームでキーイベントを全部受けたいだけならフォームのKeyPreviewプロパティをtrue >>37
もちろんそれはやっています
というかKeyPreviewをtrueにしないとForm.Keypressイベントは発生しないものだと
思っていたのですが、勘違いでしょうか。
MediaPlayerに登録されていないらしいキーの組み合わせについてはちゃんとイベントが発生しています。
ところでKeyPressなどのイベントでは受け取ったキーがhandleされないときは別のコントロールのKeyPressイベントに
値が渡されているみたいですが、その順番はどういうルールに基づくのかご存じないでしょうか。
Keypress 順番 などでググってみても KeyDown の後にKeypressが起こる云々しかでてこないのですが。 FormにIFilterMessage実装して、PreFilterMessageで
WM_KEYDOWN/WM_KEYUPのときActiveControlがAxWindowsMediaPlayerなら
false返せばAxWindowsMediaPlayerには渡らなくなる
Formの方で受け取りたいならついでにOnKeyDown/OnKeyUp呼び出す
WinFormにはルーティングイベントなんてないから別のコントロールが受け取るとかないはずだけど
KeyPreviewしてるFormが先に受け取るとかぐらいで
どういうコントロール構成とイベントハンドラにしたら再現できる? なんか違和感あると思ったらIMessageFilterだった
あとFormのコンストラクタあたりでApplication.AddMessageFilter(this)する必要あり 以下のようなコードでITestにList<Hoge>とList<Fuga>を併記するような書き方はあるでしょうか?
public class Fuga{ public string val { get; set; } }
public class Hoge{ public string val { get; set; } }
interface ITest{ List<Hoge> Hogege(); }
public class A : ITest
{
public List<Hoge> Hogege()
{
return null;
}
}
public class B : ITest
{
public List<Fuga> Hogege()
{
return null;
}
}
class Program
{
static void Main(string[] args)
{
ITest AB;
AB = new A();
AB = new B();
}
} >>42
好きなほうをどうぞ
>>41
できれば何をやりたくて「併記」したいのか書いてもらえるといいかも >>41
エスパーすると
FugaとHogeに継承関係があって
Hogegeの戻り値の型をList以外のコレクションにできるなら
共変性のあるIReadOnlyListなどを使えばできるかもしれない 理解が乏しく説明が拙くてすみません
インターフェースを以下のように書く方法があれば良いなと思った次第です
interface ITest{ List<共通or抽象化したクラス記述> Hogege(); }
どうも無理そうな雰囲気を感じておりますが
お願い致します FugaとHogeになんらかの関係がないとどうにもならないよ
どちらかが継承してるとか共通のinterfaceを実装してるとか
あるいはITestをジェネリックにするか この場合Mainの方のコード書けないけど
あとは型安全なんか投げ捨ててdynamicにするか、ってのはジョークだけど たびたび失礼します
こんなコードを書いた動機としては、class A と class B のメソッドの違いが
返り値のList<xxx>でしかないため、インターフェースで共通の型に出来たら
mainでインスタンス作る際にスッキリするなと思ったからです
こんな記述が無理そうな時点でC#の考えに則って無いんだろうなと感じております
public class A : ITest
{
public List<Hoge> Hogege()
{
return null;
}
}
public class B : ITest
{
public List<Fuga> Hogege()
{
return null;
}
} 何度もみんな言っている通りAとBじゃなくてHogeとFugaでなんとかしろって話だと思うんだが、なんでそんな頑なにAとBにこだわるの? アドバイスを基にこの記述で行けるか!と思ったのですがreturn hoge;でList<IStore>でないとダメと怒られました
素人のぬか喜びでした
public interface IStore
{
}
public class Fuga: IStore
{
public string val { get; set; }
}
public class Hoge: IStore
{
public int val { get; set; }
}
public interface ITest
{
List<IStore> Hogege();
}
public class A : ITest
{
public List<IStore> Hogege()
{
List<Hoge> hoge = new List<Hoge>();
hoge.Add(new Hoge { val = 1 });
return hoge; //エラー
}
} visualstudioをインストールしました
参考書にはWindowsフォームアプリケーションやコンソールアプリケーションなどあるんですが、インストールしたvisualstudioには見当たらないです
何が設定かインストールし忘れたのでしょうか? >>52
VisualStudioのスレで聞くべきだけど、その前にどのバージョンをインストールしたか把握している?
VS2017ならスタートページで「新しいプロジェクトの作成」をクリックするかメニューのファイル>新規作成>プロジェクト >>53
すみません、C#の話でしたのでこちらに書き込んでしまいました
visualstudioのバージョンは2017です
それで、visualstudio起動後のファイル>プロジェクト>新しいプロジェクト内に存在しないんですよね…
あるのは空のアプリ、WPFアプリ、Windowsランタイムコンポーネント、クラスライブラリのみでした WPF入っているのにWinフォームとコンソールアプリ入っていないって何か変なことやっていそう
インストーラーでそれっぽいの入れなおしてそれでもだめなら素直に専用スレ行けばいい Windows 7はデフォでFW 3.5が入ってて
WIndows Updateを適当に入れてけば今サポートされてる最古のFW 4.5.2になるって認識でOKですか?
それともWindows UpdateするだけではFWは更新されない? いちいち交通整理くっだらねアホか
こういう馬鹿、自分が質問者以上にスレと関係ないことをほざいてる自覚がないらしい。
そもそも馬鹿は自分を客観視できないからな 前から誰のこと言ってるのか知らんけど、この意味不明な粘着質、普通にストーカーと同じメンタルだ >>58
(.Net) Frame Work だろ FWって初めて聞いたわ。.NETと一般的な名称使わずにオレオレ略語使う奴って頭悪そう C# スレで FW 3.5 って来たら候補は一つしか無い fwと言えばファイアーウォールだな・・・
と思ったけどWikipediaによるとフレームワークの略語としても定義されてたわ
https://ja.m.wikipedia.org/wiki/FW >>57
アップデートだけじゃ無理だよ
.NET4.0入れたら4.5.2まで行けた記憶あるが VISUALSTUDIOのバージョンとC#のバージョンの対応関係ってどこかに一覧表ない? PostgreSQLからデータ抽出したいんだけど
何を使えばいいですか?
データの更新追加削除もします >>79
ADO.NET感覚でDataReaderやDataSet使いたいならそれでもいいと思うけど、今更感あるような >>80
Dapper使うならNpgsqlも必要だろ
自分で使ったこともないのに回答してるの? >>80
>>81
どっちも勉強してみます
ありがとうございます メッソッドってregionで囲むもんなん?
これアウトライン用よね? >>84
>>85
好きにしてってことか
メソッド囲んでるソース多かったから基本なのかと思ったけど
面倒だし囲まないことにする 俺はregionによる仕分け多用するけど一般的な習慣とまでは言えないね
でも、単純にプロパティ、メソッド、イベント(OnXxxx)、コンストラクタに分類するだけでも
少なくとも視覚的な見やすさはだいぶ違うと思うよ
MSDNライブラリのクラスメンバー一覧がそういう分類じゃなく単純にアルファベット順だったら
どうか想像すりゃ分かると思うけど 複数のメソッドをregionで囲むはまだ許せるが、くそ長いメソッドの一部をregionで囲って短く見せるのは許せない >くそ長いメソッドの一部をregionで囲って短く見せる
海外サイトでサンプル漁ってると時々見かけるな まあアウトラインってスコープ単位で線引されるからね
regionは昔の機能と思っていいよ メソッドはregionで囲まなくても普通に畳めるよww >>92
畳めるけどメソッドをregionで囲ってるソースみること結構あるわ メソッド単位で囲ってるのは俺も謎だと思ってた
昔は普通にたたむのできなくてその名残とかなのかもしかして普通にたためるの知らないのか IEnumerable、IDisposable、IEquatableみたいな定型インターフェイスの実装は邪魔なんでregionで括ってるわ
あとToStringやらGetHashCodeのオーバーライドなんかも >>97
.NET Frameworkのライブラリと同じように作らなきゃいけないと勘違いしてた頃は俺もそれやってた
アプリと不特定多数向けのライブラリは作り方が違ってていい、アプリはなるべく絞り込んで作るのがよい、
ということを理解してからは無駄なコードが減って必要なくなった 不特定多数向けのライブラリを作ってるのかもしれないだろ IDisposableはusing使うために必須だからなあ HttpClientみたいにsession繋ぎっぱなしが推奨されてるのにusing使う奴 >>101
なんでそのルールをセッション繋ぎっぱなしが推奨されないものにまで適用しなきゃいけないの? ここで聞くことでもないんだけど適当に意見くだせえ
仮に外部設計書・内部設計書・詳細設計書が必要として、
詳細設計書は別ファイルで作成するよりxmlドキュメントコメント使って生成したxmlファイル使った方がよっぽどいいよね? >>103
ドキュメントコメントは内部設計だろ
詳細設計というのはソースコードを日本語に逐語翻訳したものであり、一般にはコーディングシートと同じもの
下請けの一番使えない奴に押し付けるのが一番 最初の設計がおかしかったからこんなことになった
using使えるような新しいライブラリを出してこないMSが悪い
pythonだったらpython的でないと言う理由で新しいライブラリが出てくる >>101
ファイルの利用が終わったのにすぐにファイルハンドルを解放しないとか不便でしょうが >>104
ドキュメントコメントは内部設計なの?
サイトによって言ってること違って混乱してる
内部設計書=詳細設計書と書いてるところもあれば、
内部設計書=複数の処理の流れ、詳細設計書=ドキュメントコメントってところもある
自然言語でコード書いた奴は見当違いで本来必要の無い何かって認識だった。会社と人によって違うのかな >>108
詳細設計はCOBOL時代の名残りだ
パンチカードや80x24文字の画面でコーディングしてた頃はソースコードは純粋なアウトプットであり、
ソース上で試行錯誤したりソース眺めながらコミュニケーションしたりするなんていう発想は無かったの
プログラミングはタイピングの前に完了していなければならず、詳細設計を作成することこそが今でいうコーディング工程そのものだったんだよ
本来全く必要のないもの、でまさに正しいんだよ >>106
HttpClientFactoryも知らないおじいちゃんこんにちは >>103
答えはNO
内部・詳細設計書はゴミのように不要どころか持ってると邪魔なものだけど客は金を出してくれる
ビジネスでやる以上金になるほうを選ぶのが当然 質問者すらそう言ってるが
言及したがりのバカが沸いたからしゃーない しかも最初の疑問点からずれた話題だけを掘り下げるという意味不明な状態 Win32API関数でのエラー処理について質問です
var DllFilePath = "hogehoge.dll";
handle = LoadLibrary(DllFilePath);
if (handle == IntPtr.Zero)
{
throw new System.ComponentModel.Win32Exception();
}
↑のコードで例外をthrowするときに例外のMessageにDllFilePathの値を追加したいのですが
throw new System.ComponentModel.Win32Exception(DllFilePath)
とすると本来のエラーメッセージが上書きされてしまいます。
var DllFilePath = "hogehoge.dll";
try
{
handle = LoadLibrary(DllFilePath);
if (handle == IntPtr.Zero)
{
throw new System.ComponentModel.Win32Exception();
}
}
catch(System.ComponentModel.Win32Exception e)
{
throw new System.ComponentModel.Win32Exception($"{e.Message} \"{DllFileName}\"", e);
}
こうすれば期待通りの内容にできるのですがAPI呼び出しの度に例外処理を書くのは
コードが冗長になってしまうし何より面倒なのでうまいこと簡単に書けないか悩んでいます。
何かいい方法は無いですかね? >>115
Win32Exceptionを継承して使う >>115
public class LoadLibraryFailedException : Win32Exception
{
public LoadLibraryFailedException (string path)
{ DllPath = path; }
public string DllPath {get; private set; }
...
} Messageに情報を足すことばかりが頭にあって
情報を別のプロパティに持たせる発想がなかった…
こっちのほうがcatchする側で融通が利かせやすいし
クラスやプロパティの名前を調整すればLoadLibraryに限らず
他のAPI呼び出しにも汎用的に使えそうでいいですね
この方法で検討してみます。ありがとうございました すんません初歩駅な質問なんですが
フォームアプリのコントロールに
ボリュームやスライダーのような可変データコントロールは無いのでしょうか?
似たのはNumericUpDownがありますが・・・
これの画像を差し替えてボリューム風にしろってことですか? >>120
おお!「コモンコントロール」にも他カテゴリにも無いコントロールがあったのか!
完全に見落としてました
ところでこれの画像を差し替えて丸型回転ノブにすることはできるんでしょうか?
まだ勉強不足でよくわかってないのですが
Imageプロパティとか無いからできないかな? 初心者に回転ノブの実装は難しいと思う
ってか使いにくいだろ >>121
画像だけで済まないでしょそれ
そんな形で回転するコントロールは無いので一から自作しないと
>>123
マウスホイール部分で動かすのならともかくドラッグで操作するものとか考えただけで頭痛くなる volatile キーワードの役割がどうしても理解できないので教えてください。
自分の考えでは、以下のようなプログラムを最適化ありでコンパイルして実行すると
while (loop) ; のループから抜け出すことができないから
volatile キーワードが役に立つのかと思ったのですが、
残念ながら(?)実際に試すと普通にループを抜け出せてしまいました。
class Program
{
static bool loop = true;
static void Main(string[] args)
{
new Thread(() =>
{
Thread.Sleep(1000);
loop = false;
}).Start();
while (loop) ;
Console.WriteLine("End");
}
}
そもそも、volatile がある場合とない場合で動作が変わるコードを
ただの1つも作り出すことができていない状態なので、
何か volatile の役割を示すコードの例を示していただけると嬉しいです。
よろしくお願いします。 >>122-124
むむむ画像の差し替えだけじゃ回転ノブは難しいのか!
C#というのは在り物のコントロールをそのまま使って工夫するものなんですかね? マジレスするとメッセージ捕まえて
自力で描画すれば可能なんだけど
労力に見会わないのでお勧めしない
webやWPF, UWPならグラ弄るの簡単 たぶん音量調整とかしたいんだろうけど
そんなui見かけないのは使いづらいからでは? regionの適切な使い方って結局どうすんのがいいんだ?
独学だし人のあんま見たことないからよくわからん 折れ線グラフとか棒グラフとか
3Dで立体的に表示できる機能なんかない?
開いたら開始地点から現在の値のトコまで棒が伸びていくアニメーションとか
リッチ感だしたいんだけど GDI+よりWPFが簡単とはまったく思わんなあw
>>129
XPの時代はそういうUIが結構あった。
>>126
ボリュームの位置(値)を、例えば小さな丸で示す実装なら超簡単でしょう。 自分の作ったプログラムをウェブで公開したいのですが、完全に独学のため、
リリース用のビルドをするにあたっての注意点がよくわかりません。
このウェブサイトにあるように、単純にリリースビルドすればそれでいいのでしょうか?
第5回 Windowsアプリケーションのデバッグ&リリース (5/5):連載簡単!Visual Studio .NET入門 - @IT
http://www.atmarkit.co.jp/ait/articles/0410/13/news100_5.html
また、リリースビルドした場合、デバッグ不足で予期しないエラーが発生した場合、何行目にエラーがあるとかそういう表示って出てこなくなるのですか? >>132
回転はどうするのwってのは置いておくとして超簡単って書くのなら方法示したほうがいいと思う
>>133
公開するのならビルドした.Netのバージョンを必ず明記すること
.Net以外の外部DLL等参照している場合はそれも書くこと
>何行目にエラーがあるとかそういう表示って出てこなくなるのですか?
はい >>133
pdbファイルも一緒に配布すればrelease版でも例外発生箇所を表示できる >>136
リリースビルド時のフルパスがPDBに含まれないようにするのってどうやるんだっけ? >>137
[ビルド]-[出力]-[詳細設定]-[デバッグ情報]を「なし」に設定 フォーマット指定の方法なんだけど
("id:{0}",変数)みたい0とかのインデックス指定なしに
記載する方法ってなかったっけ?
こんな感じ
("id:{}",変数)
あったような気がするのだが見つからない 計算処理クラスは自動テスト実現のため一時変数以外のインスタンスを持たせない
という方針を聞いたんですけどC#に例えるとどういう事ですか?
独り派遣で聞く人もおらず困っています なぜその方針を作った側の人に直接聞かないの
理解せずに間違ったことやったら最終的に叱られるのは君じゃないの?w
こういう人が2chで「コミュニケーションスキルガー」とか被害妄想全開で吠えてるんだろうなあ 状態を持たせずに純粋関数にした方が
バグが減って保守やテストがしやすいってことじゃろ
Mathクラスみたいに メソッドを全部staticにしたらいいんじゃね
もちろんstaticな変数は持たない
utilクラスみたいなもんだと思えば それやるならstatic classってのがc#にはあったような メソッドやクラスをstaticにしたところで他のクラスのインスタンスへの依存は防げないだろ
計算処理クラスなんてものが生み出されるようなレベルの現場だと、
ヘタにstatic強制なんかしたらstaticフィールドに状態持たせるバカが増えて余計に酷い状況になりそう >>143
それ書いた人はもう居ないです
いつもイライラして椅子蹴ってくる正社員リーダーとは恐怖でこちらから話せません Utilクラスってゴミ箱になりがちだから嫌いだわ。
計算処理クラスはなんとなく気持ちはわかるが。
delegateでは微妙に表現力が足りないから特定のinterface実装したクラスを受けるようにして、その引数と型を渡せばネットワーク上のどこかでインスタンスが起こされて実行されるようにした、みたいなケースじゃないの?
テストではないけど、ジョブスケジューラがdll名と引数をキューから拾って、appdomain切って動的にそのクラスを実装したdllを読み込んで実行してくれる、みたいなのは作ったことある。 >>149
処理をクラスにするって古い考えなのでしょうか
自分はDDD的な知識のクラスを構成するクラスも作りますが、そんなものは作らんのが流行りなのかと気になります >>134
>>136
ありがとうございます。やってみます >>150
マジで底辺のリーダーってこんなんがほとんどなの?こええ staticなナントカUtilクラスはJavaドカが好むよねー
staticなのに内部でインフラ異存しまくっててキレそうになるよ 失礼します。
ASP.NET MVC又はASP.NET MVC CoreのRazorビューから匿名型がサポートされない理由を説明してくださる方居ますか? >>157
はい。
.frameworkがpoorなのでサポート出来ない事が私には理解できません。
こちらのurlの記事では普通にプロパティで取得出来ているように見えますが…
http://architect-wat.hatenablog.jp/entry/20130501/1367415654 c#アプリって簡単に逆コンパイルで簡単にソース見れちゃうじゃん?
例えばAPIキーとかハードコーディングしてもしてなくても抜き出せてしまうけどどうすんの? >>160
リバースエンジニアリングはどのくらいの労力がかかるかだけの違いで解析できないものなんかないから諦めろ >>162
ハッシュからAPIキーは復元できないでしょ >>165
結論はどうなってるの?
どうしようもない? >>159
問題はEFで匿名型が簡単に作られてしまうのが問題ですね。
結局expandoobjectに変換するか、ViewModelを毎回作るしか無さそうですね。 >>161
まあそうだけど
>>164
ふむふむ
>>170
まあそれだね
てかそれやってるんだけど超めんどい >>172
認証のパスワードなどの手続を登録した人に別途配布 サーバーから受け取るようにしたとしてもクライアントが丸見えなら同じ方法でサーバーからキー抜けるだろ
ちゃんとやるなら、開発者だけが知ってる秘密鍵でシリアルキー作ってクライアントごとに払い出すようにする
そしてサーバー側でシリアルキーに基づいてクライアントを識別し、クライアント単位でクォータや権限の制御をする
漏れる前提で他のクライアントに影響が出ないように設計するのが基本的な戦略だよ どうでもいいけど、もともとの質問の趣旨は
ネイティブコードと同程度の秘匿性でバイナリにデータを隠せるかじゃないの?
それは無理、で終わりだと思うけど。 APIキーって5chのAPIみたいなの想像してたけど違うの?
それだとクライアント毎に払い出しても誰か一人のがばれたら使用権貰えちゃうけど >>175
APIキーを抜くくらいならネイティブでも難しくないよ >>176
それで困るのは5chではなくブラウザの開発者だろ?
5chにとっては、特定のクライアント(この場合は開発者単位な)からの不正な大量投稿があれば、
そのクライアント(開発者)を丸ごとBANしてしまえばいい。他のクライアント(開発者)には影響しない。それを防ぐ責任はあくまでクライアントの開発者にある。
ユーザー単位で払い出すにしろ開発者単位て払い出すにしろ、個別に払い出すことで責任をAPIキーを払い出された側に転嫁できるんだよ。 ソースコード丸見えだから、APIキーがどこにあるかわかるよね
そうやって海賊版作れてしまうわけだ 流石にAPIキーを普通に文字列で書くアホはnativeでも居ないだろ。
難読化する。
ソースコードが丸見えだとしても問題無い気はする。どーせnativeでも逆アセンブルするんだし。
カジュアルな対策なら、c#には逆コンパイルされないILコード使って復号ロジック書くべきかと思うな。
ちゃんとやるならドングルかライセンスサーバのどっちかじゃねえかな。 nativeと同程度の隠匿で良いならそこだけnativeにすれば良いだけやん oauthのキーなら速攻でばれるし文字列でそのまま書くな。難読かしても意味ねぇし。やるだけ無駄。 DBのパスワードとかソースに直書きしてるわ
ハッシュにしてもどこで復号すればいいのか 自前でやるだけのセキュリティのスキルがあるとこは珍しい
素直にASP.NET Identity + IdentityServerでOIDC使っとくのが懸命な判断 こういう大事な部分を手軽で強固なセキュリティとしてなんでMSは用意しておかないんだ? はい意味不明
OIDCってアプリ側がユーザーの認証認可をする仕組みだぞ?
それをどうクライアントアプリのAPIキーの隠蔽に使うのか教えてくれ >>186
もうすでにC#関係なくなっているが手軽で強固なやり方ってどんなことよ? >>186
本質的に不可能だからだよ
見られたくないならクライアントに埋め込まずにサーバーに持ってプロキシせよってこと >>172
マシンに固定したいならMACアドレスとかHDDのシリアル番号とかで特定
ユーザーに固定するなら登録されたパスワードを定期的に入力とか >>190
中間言語形式だけでなくスクリプト言語も否定する気かw >>187
チュートリアルもやったことないのかよ… >>193
だから何のことを言ってるんだ
アプリ本体がユーザーの手元にあるのに認証認可もクソもないわ >>192
サーバー型はビジネスロジックがサーバー内にあるからそこで防げるけど、c#アプリは無理じゃん >>196
UWPじゃなくFormアプリでおねがい >>196
これユーザーが入力した認証情報を安全に保持するのと、サーバー側のリソースに関するユーザーの認証認可をする話だよね
開発者の機密情報を安全にクライアントに持たせるのとは全く別の問題だよ(そしてそれは原理的に不可能) もちろんクライアント側で復号する必要がなくて、単にデータストアをクライアント側に置きたいだけなら、サーバー側で暗号化すればいいだけだよ
原理的に不可能なのはクライアント側でも機密情報を復号して使う必要がある場合の話ね Dapperを使用するにあたり、下記の「DAO」クラスの「SelectDAO」メソッドの
戻り値を抽象的に表現できれば、SQL与えるだけで共通に使えるのになと思っているのですが
戻り値を下記のList<IAB>のように書く方法はあるでしょうか?
interface IAB{ }
public class A : IAB { public string nen{ get; set; } }
public class B : IAB { public string nen{ get; set; } }
public class DAO
{
public List<IAB> SelectDAO(string sql)
{
System.Data.IDbConnection _con = new SqlConnection("接続文字列");
return (List<IAB>)_con.Query<IAB>(sql);//DynamicMethodに対する型オーナーが無効です。
と怒られます。
}
} >>202
いやSQLを隠蔽するのがDAOなのにSQL渡したらダメだろ… ようするにdaoなんか使わずに
odbc使いなさいということ >>202
戻す値をList<dynamics>にすることで解決します。
マジオススメ >>203
Dapperは緩いORMでクエリは書く必要あるんです
EntityFrameworkなら確かに悩む必要無い問題な気がします API抜かれるってどのシーンで警戒してるの?サーバー上でアプリ起動してるとき? >>202
最終的にDapperも何らかのインスタンスをnewしないといけないのに
IABだけ渡されても何作ればいいのか分からないだろ
素直に
public List<T> SelectDAO<T>(string sql) where T : IAB
とかに
というかSelectDAOを呼び出した側はメンバの存在しないIABを使って何をすればいいのか >>207
いやそういう問題じゃなくて、SQLを書くんだったらDAOの中で書くんだよ
外からSelectクエリを文字列で受け取るってそれ使う側がDBのテーブル構造を知ってないとできないだろ
データストアの詳細を全く隠蔽できてない >>211
1知識1DAOクラスが本来の姿という事でしょうか?
実装レベルでもうちょっと抽象化できるかと思ったのですが設計レベルでは好ましく無いとなれば深追いは不要ですね VS2017WindowsFormsAppの実行ファイルを作成したのですが、
実行ファイルをzip圧縮するとサイズが10分の1以下になります
小さくなりすぎな気がするのですが正常の範囲で問題ありませんでしょうか?
または、実行ファイルが肥大?(余分な情報が含まれている等)していたりするのでしょうか?
なにかVS上で出来ることはありますか? >>214
使用しないのならデバッグ情報とか埋め込まれるマニフェストとか外せるけどそれは肥大するほどでもない
どんな実行ファイルか見てみないと分からないし解凍しても動くのなら気にしなくてもいいのでは プログラミング初心者です
visual studio for mac2017をインストールしてC#を覚えたいんだけど、どうやって学習したらいいのか教えてください!
探してもなかなかいい日本語の学習動画やサイトがなくて、、、 >>215
ありがとうございます
1MBほどのファイルが80KBほどになるので、小さくなりすぎではないかと思いまして…
生成される実行ファイルが、プロジェクトのある時点から1MBほどに大きくなったような記憶もあります
読み込み差し替えした画像リソースが上手く外れていないのかなと想像したりしますが…
もうちょっと色々自分で調査してみます >>216
念のため書いておくけどMac版はWinフォームやWPF作れないからな
>>218
コード中心で1MBくらいになるのは数万行のものだから、そんな縮むのは間違いなく画像リソースだろうな
BMP形式で入っているとかアイコンが多いとかならZIPでもかなり縮む >>219
コードは5000行ほどですね。試しにプロジェクトを新規で作り直して中身を移し替えてみます
エクスポートインポート的なのがあれば良いのですがVS標準ではないみたいなので
大変ですが手動でやるしかないですが OSデフォルト環境だとsn.exeがインストールされてないのか
隔離環境で作ったアセンブリにストロングネームつけたい時ってみんなどうしてんだ? >>217
>>222
未確認ってどちらかというと入門じゃなくて確認用途だと思うよ
あれを見て判る人はすでにjavaなどの他の言語を習得してる まあそうだね
C#でプログラミング入門って正直キツいと思うし、そういうコンセプトのところは
たぶんないんじゃないか >>225
俺は「C#の絵本」でプログラミング入門した。
つまり、C#でプログラミング入門した プログラミングはDelphi6からだったなー
\5,000でパッケージを買ったすぐ後に、無料版のDL提供が始まった思い出
高校生にとって\5,000は地味に痛かった…… >>225
何がそんなにキツい?
Windows Formsのぽとペタ以上に初心者に優しいのってなんだろ 英語得意ではなくてプログラミング言語の経験が全くないのなら
本を買う方がいいような気もする・・ 神サイトはどぼんでしょ
あのサイトのコピペがC#する日本ITドカタを支えてる >>228
細かいことよくわかんないけどなんとなくコピペで動くからいいやとVB的に使うならそれでいいけど、
言語を一から体系的に習得しようとするとC#はかなり大変だよ
継続的に進化してるから実感がないかもしれないが、今のC#はもはやメジャーな言語の中ではC++に次いでトップクラスに複雑な部類 仕事でも趣味でも体系的に一から学ぶとかやっていたら何もできなくなる
自分の必要な部分以外勉強するのはもはや研究者 C#って、言語仕様で難し目なのはyield, dynamic, awaitくらいな気がする
複数ある実行環境や巨大なフレームワーク、コンパイル後のILの話まで含めたら複雑だと思う >>237
たとえば簡単なところでいうと、読み取り専用プロパティの定義には今何種類のバリエーションがあるか知ってる?
int Hoge { get { return 5; } }
int Hoge { get => 5; }
int Hoge => 5;
int Hoge { get; private set; } = 5;
int Hoge { get; } = 5;
これらにどういう違いがあってどういうときにどれを使うべきか初学者向けに説明できる? >>238
どれでもいいじゃん
まずは動けばいいんだよ
バグる?そんなのバグったときに対応すればいい
どうせ世の中のほとんどのアプリがバグだらけなんだし
そしてそのバグ取り経験が学習にもなる C++やったことないから知らないどC++は基本的なことも複雑なイメージ
C#は極めるほど複雑なイメージ >>238の例なら初心者は一番上だけ知っとけばいい 複雑なことができると学習が困難
すべてを学習すること前提ならそうかもしれん >>236
>>125 でも質問させていただいたのですが、
yield, dynamic, await あたりは理解できているつもりであるものの
volatile の役割がどうしても理解できません。
慣れている方にとっては当たり前のことなのかもしれませんが、
volatile がある場合とない場合で動作が変わるコードの例だけでも
お教えいただけないでしょうか。
どうぞよろしくお願いいたします。 >>244
>volatile がある場合とない場合で動作が変わるコード
難しいんじゃないかなあ
(1) 実行儒所を入れ替える
(2) 変数(メモリ)に直接アクセスしない
みたいな最適化がどういうケースでコンパイラによって行われるか、たぶん誰もよく知らないw
だけでなく、古い記事だけど
http://www.itmedia.co.jp/enterprise/articles/0503/23/news086_4.html
↑にあるように、CPUレベルの最適化はCPUに依存する >>125
volitateは「この変数はマルチスレッドで使うよ」と明示することによってシングルスレッドの場合にしか効果的ではないような実行速度の最適化技術を使わせないようにするだけであって、排他制御を自動で行うものではないのでは? >>245-247
皆さんレスどうもありがとうございます!
>>245
> >volatile がある場合とない場合で動作が変わるコード
> 難しいんじゃないかなあ
ありがとうございます。
ということは逆に言えば、volatile が無いことによって想定外の最適化が行われて
不具合につながること自体が起こりにくいものだと考えてもいいのでしょうか。
ただ仮にそうだとしても、お作法的には複数のスレッドからアクセスされる可能性のある
フィールドはすべてに volatile を付けるべきなのかなとも思うのですが、
CS0420 : volatile フィールドへの参照は、volatile として扱われません。
のような警告がうるさくてあまり volatile をつけたくないときもあるので悩んでしまいます。 >>246
参考ページのご紹介どうもありがとうございます。
実はそのページも読んでみたのですが
> ちなみに後者の記事では実際にvolatileをつけないと問題のあるコードが記載されている。
> 以下のコードをReleaseモードでビルドして、デバッグなしで実行すると終了しない。
> volatile をつける(static volatile bool complete = false;)と正しく終了する。
という記述に反して、私の環境(Win10, .NET Framework 4.7.1)では
volatile がなくても終了してしまうようです。
そもそも私にはそのページのコードと >>125 のコードが本質的に同じものに見えてしまい、
> volatileに対する理解がなんか違う気がする
とおっしゃることの真意が理解できていないのですが、
何かお気づきのことがあれば教えていただけないでしょうか。
>>247
レスありがとうございます。
つまり、volatite の有無で実行速度に差が出ることはあっても
計算結果が変わることはない、ということでしょうか。
そうであるなら気が楽なのですが、いくつかのページやここでの他の方のレスを読むと
どうしても確信が持てずにいます。 >>248
確実である保証がないものに確実性の保証を与えるvolatileを「お作法」
と思う発想は100%間違っています >>250
レスどうもありがとうございます。やはり、>>249 に書いたような
> volatite の有無で実行速度に差が出ることはあっても
> 計算結果が変わることはない
などということを期待してはいけないということでしょうか。
ただ、volatite が無いとどのような問題が起こるのかを理解していないと、
どのような場面で volatite を使えば確実性の保証が得られるのかも分からず、
結局は、なんとなく気分が悪いから volatite をつけておこう、
というレベルにとどまってしまうように思うのです。
確実である保証がないことを証明するというのは
一種の悪魔の証明なのかもしれませんが、
例えばオーバーフローの危険性を説明するなら
int x = int.MaxValue;
int y = 1;
int z = x + y;
のようなコードを見せればいいですし、
volatite についてもこのようなコードがないものかと期待して
質問させていただいた次第です。 volatie付けないとマルチスレッドだと遅くなるとかじゃないのか?
実行結果が変わるとか困るしそんなことになるならもっと知られてるはずなんだが >>251
最適化のオプション外してビルドしたら?
保険であるvolatiteが「どのようなときに必要か」はMSも公表していないんだからどうしようもない
volatiteを含んだ上で機能するコードをどうしても書きたいとかなら知らないけど 保障のようなものでしょ
今はどうか知らないけど
例えば
a=1;
a=1;
a=1;
a=1;
a=1;
みたいなコードがあっても最適化でa=1が一回しか実行されないようにならないで
ちゃんと回数分実行されることの保証 憶測で申し訳ないけど
a=calc0(a);
b=calc1(a);
が最終的にアセンブラレベルで
フィールドa = レジスタA
レジスタA =フィールドa
みたいなのが出てきた場合に
シングルスレッドであればあとのレジスタA=aの実行が無駄じゃないかと思って
実行しないとかありうるかもしれない
マルチスレッドならフィールドaが書き変わってる可能性あり >>255
コンパイラの最適化で削られるんじゃなく実行されないのか
どっちにしてもきりがない コンパイラの最適化の問題でしょ?
非同期処理で使うフィールドはいれときゃいいんじゃね ちなみに「お作法」という言葉を使う人間が書くコードは間違ってます
マメな >>251
もう作成されたILのコード全部確認・検証しとけよ
問題が起こらない方がいいのに何か起こらないと困るように見える >>251
C#ひいては.NET CILではJITないしAOTのコンパイルにかかる時間など故か
ネイティブC/C++程の最適化は行われないので具体例は難しいかもしれません
ということでネイティブC++(プログラム全体の最適化は無効)を例にしてみると
int n;
int main() {
n = 1;
n = 2;
return NO_ERROR;
}
上記コードは関数内でn = 1時点を参照してないし、最終的にn = 2じゃんという事で
「n = 1;」が削られマシンコードは「mov dword ptr [n], 2」とリターンコードのみに成ったりします
参照の場合においても変数の値を逐一読み込まずレジスタに保持して使い回すかもしれません
これを「volatile int n;」と修飾すれば、そのような最適化は抑制されます
C#コンパイラ(C#→CIL)レベルでは読み書きにvolatile.接頭辞などが付く事になる筈
https://msdn.microsoft.com/ja-jp/library/system.reflection.emit.opcodes.volatile
ECMA-335やJIS X 3016といった言語仕様にも記載されていますが、排他制御云々ではありません C#のデストラクタってどういう場面で必要なんでしょうか?
ネットの記事で見かけたところ
C++ではコンストラクタとセットでプログラマがマネージする必要があるが
C#ではシステムが自動でやるのであまり重要じゃないとありましたが
イマイチよく分かりませんでした
Win32API関数をマーシャリングして使用したりするとデストラクタは必要でしょうか?
実はそういうプログラムを自作してずっと使用してるのですが
デストラクタを書いてなくても特に問題が発生したことがありません
問題が出ないのはたまたま自分の使用環境が合ってるだけでしょうか?
デストラクタを書かないと具体的にどういう不具合が起こるんでしょうか? ファイル・データベース・プロセスなどのリソースが解放されないから、
使用メモリサイズがドンドン大きくなっていく
つまり、メモリリーク >>264
ありがとうございます
その「使用メモリサイズ」というのは
タスクマネージャーの「メモリ」という所を見ればいいのですか? vmmapを使った方が良いかも
HeapWalkerを使えるようになればなおよし >>266
windowsデフォの管理ツールに「リソースモニタ」ていうのもありますね
これでもいいのかな?
初耳な分野なので全く分かりませんが調べてみます
ありがとうございました C♯にて数あるエクセルファイルの中身を読み取りあれこれしたい時、早く開いて読み取って閉じる方法ってありますか? >>268
「あれこれ」じゃなく具体的に何がしたいか書かないと
やりたいことが多くなるほど「じゃあエクセルで直接開いた方が早いね」になるだろうけど 前提条件やマシン構成で大きく変わるので思いつく手段を全部書いて実測 >>270
@シート名の読み込み。
A指定シートの指定列の読み込み。
B指定シートの指定行の読み込み。
こんな感じのを各エクセルに@〜Bを繰り返し行う。
ネットを参考に見て普通に開いて閉じるだと遅くて... >>273
ExcelDataReaderでも満足できないレベルに遅いの?
だとしたらほぼ無理かと
Excel側で予め必要になる情報をVBAとかでtxtファイルに出力しとくとかで対処するしかなさそう >>273
ネットで参考にした情報はOLEでExcelを起動して読み込む方法かね?
それは遅いからOpen XML SDKでも使って直接ファイルを読んだ方がいいね 質問させてください!
VisualStudio2017のC#Formアプリで自分用のテキストエディタを作ろうとしていて、
「改行した時、一行前の行頭に全角スペースがあった場合次の行頭にも全角スペースを挿入する」
というちょっとした自動インデントのような動作をさせたいのが目的です。
探り探りで一応目的の動作をするコードは書けたのですが、
「KeyUpからエンターキーの場合のみ分岐して座標をひとつ戻してから改行かどうかを確かめて、
行数を調べて一文字切り出してからカーソル位置を戻して比較して……」
をはじめとする行程で相当に回りくどいことをやっているような感覚があるので
もっとスマートな方法はないものかと思い質問に来ました。
どうぞよろしくお願いします。
https://ideone.com/8J7uBK task難しすぎない…?
非同期が難しいのは当然だけどこんな躓いたのc#が初めて スレッドのシーケンシャル図みたいなのに書き出すといいよ
まあスレッドセーフな構造を理解してるのが大前提だけど task自体は簡単だと思うけど
async/awaitは誤解したまま使うとハマる >>276
読み辛すぎるw
っていうか、これ本当にちゃんと動く?
KeyUp発生した時点で入力したキーがTextに反映されてる前提になってると思うけどそうだっけ? >>276
行頭に全角スペースが入力されたときにフラグ立てる
というのはどうかな
文字列型フラグ変数に行頭に入力された全角スペースを突っ込んでおいて
改行でフラグ変数の値を行頭に挿入とか
行頭全角スペースが削除されたらフラグも空文字列にしないといけないけど https://ideone.com/0aD1lJ
>>278で質問したものだけどコードで書いたので下の疑問が正しいのか教えてください
A:ここで並列にダウンロードできているのか?
B:Resultを使うとデッドロックすると聞いたけどawaitしていれば大丈夫? >>285
行全部のフラグ作るのとテキスト読み込むときにフラグ作る必要があるが
何万行とかで構成されるテキストでもそれやるの?
動くのなら>>276の方がまだ楽だと思う >>286
A: DownloadAsyncが真っ当に実装されていれば並列ダウンロードになる
(真っ当ではない例: 同期的にダウンロードしてTask.FromResult)
B: Task<TResult>.Resultはタスクが終了済みなら即座に値を返すので、デッドロックしない
ちなみにTask<TResult>.WhenAllはTask<TResult[]>を返すから
return (await Task.WhenAll(tasks)).ToList();
でも行けるはず Open XML SDK生で使ったことあるけど、もうちょっと頑張れなかったのかと言いたい
中のファイルメモリに乗っけてシートごとの並列処理出来るかと思ってたのに全然だし、セルの位置はR1C1限定とかマジで死ねよ >>288
Open XML SDKはWordなんかも含むOffice製品全部のSDKちょっと直感的じゃないから
ラッパーで多少はExcel VBAライクなClosedXMLとかNPOIとかの話と思われ >>276
まあケチ付けるだけなのもあれなんで
俺ならこうかなあ
無駄なフィールドを作らないために無理矢理ラムダ式使ってるけど本当はこういうのよくないかも
class TextBoxEx:TextBox
{
protected string GetIndent(int line)
{
var s = Lines[line];
var m = Regex.Match(s, @"^[ \t]*");
return m.Value;
}
protected string GetIndent()
{
return GetIndent(CaretLine);
}
public int CaretLine
{
get { return GetLineFromCharIndex(SelectionStart); }
} protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown(e);
if(e.KeyCode == Keys.Enter)
{
var indent = GetIndent();
EventHandler eh = null;
eh = (sender, ea) =>
{
TextChanged -= eh;
SelectedText = indent;
};
TextChanged += eh;
}
}
} >>289, >>292
だからそういう話ならもっと便利なOSS書けよって話
>>282だと単なるバカか文句しか言えないクズにしかならん >>290
勉強になりました
c#は書き方いろいろあってむつかしいです >>295
>>282はSDKという単語に対してライブラリという単語を使ったんだだと思うぞ
(それにOpen XML SDKはソース公開されてるものの
MSしかコミットしてない実質プロプラなのでOSSと呼ぶの違和感あるのもあると思う)
>>275の質問レベルに対してSDKを出すのは
それこそもっと便利なOSS書けよって話
ここ初心者スレだぞ >>287
そう言われるとそうだな
もっとよく考えないとダメだったな
テキストエディタ舐めてたわ var config = new ConfigurationBuilder()
.AddEnvironmentVariables(prefix: @"XXX_")
.Build();
services.Configure<MyOptions>(config.GetSection("MyOptions"));
class MyOptions {
public int Foo { get; set; }
public int Bar { get; set; }
}
---env---
export XXX_MYOPTIONS_FOO=1
export XXX_MYOPTIONS_BAR=2
ヒエラルキーを持った設定を環境変数に入れたいのだけどコロンを環境変数の識別子に使うとOSに怒られる
アンダーバーにすれば環境変数をセットできるけど今度はIOptionsパターンがヒエラルキーを認識してくれない
なんかイケてる対処法ないんか? >>299
ギガ単位のテキストファイルを編集できるエディタって意外とないのよね
ログファイルとかで需要はありそうなのに
昔、探したけど無かったからけっこう苦労して自作したわ そんなもんをエディタで編集しようというのが
そもそもの間違い
sedで十分 ギガ単位のファイルなんか
結局検索しないと編集箇所を特定することなんかできない
もしかしてギガ単位のファイルを目視で編集箇所特定してんの
どんだけ頭悪いねんと。。。 >>277
こんなもんなんですね!?
テキスト入力を広げていくだけだから初心者向きだと思って始めたのですが
びっくりです……でも組み上げていくのは楽しい……
>>283 >>293
当方プログラミング3日目ゆえ……読み辛くてすまぬ……すまぬ……
コードありがとうございます!
すでに用意されているものを組み合わせることしか考えてなかったので
Textboxのクラスごと作ってしまう方法は目から鱗でした!
GetLineFromCharIndexメソッドの存在すら知らなかったので
これだけで無限に簡略化できそうな気がします……
本当にありがとうございます、色々弄ってみます!
>>285
既存のファイルを読み込んだ時に改行しやすくするのが目的なので
>>287さんの言うとおり一行一行フラグ立てていく方式は厳しいかなと思いました……!
リアルタイムで少ない文章を入力していくならそのぐらい簡素でも
いいと思うのですけれどね! むずかしい!
おかげで先に進めそうです、ありがとうございましたー! れんとうしつれいします
いざググって調べてclass TextBoxEXの意味を勘違いしていた事に気付いたため
レス内容は笑い流してあげてください 正しい意味を知って本当に目からウロコでした
ありがとうございました!! >>298
たぶん>>297と同類でOpen XML SDKがOSSなのを知らなかったんだろうな
実質プロプラとかわけわからんこと口走って恥の上塗りしてるし w >>308
どんな技術も取り敢えず自分がやりたい事から始めて
壁にぶつかったら都度必要な事を調べていけば上手くなると思っているのですが違うのでしょうか……?
どうにか自力で一応の形にして目的を実現するところまではやって、
本当にそれが正しいのか調べて見つけることができなかったから質問させて頂いた状態なので
他にやる事と言われても何をすればいいのかわからないです、すみません…… >>304
普通はこんなもんじゃないよ
テキストボックスにデータを持たせるんじゃなくて別にプログラム内部にデータを持たせて
それを表示に反映させる感じ >>309
それでいいんだよ、そうやって覚えていくのが一番いいと思う
とにかく作ってみないとわからないからね
作る喜びを感じられれば伸びていく
リファクタリングもバージョンアップもどんどん
やってみるのがいいと思う >>309
取説読まずにサポセン電話する迷惑なタイプ >>310
な、なるほど! そうすれば一行毎に表示を弄ったりとかの細かい事もできそうですね!
でもリアルタイムで打ち込んだデータを内部に移しながら表示領域に戻して……とやるのは結構
大変そうな気がします。世の高機能テキストエディタはそういった苦労の上に作られているのですね……。
>>311
ありがとうございます、頑張ります!
実際スレに貼って頂いたコードの正規表現命令が通らないことで
Text.RegularExpressionsの存在を知ったりと無知ゆえの見落としも結構あるのですが、
自分の知識と思いつく検索ワードで詰めれるところまでは自分でやって成長していきたいです!
>>312
可能な限り調べきってから問い合わせてはいるのですが
なにぶん取説が広辞苑レベルなので……索引力不足、恐縮です
どうにもならなくなったらまたご迷惑かけます 先日デストラクタについて教えてもらった者ですが
やはりメモリリークしてましたwww
起動時は6Mくらいだったのが終了時には10Mになってました
少しだったから大きな問題にならなかったってことですorz
でも「実用上は問題無いけどゴミいっぱいまき散らしやがって!」
って怒られますよね・・・
でデストラクタを勉強し始めたのですがさっぱり分からん!
マーシャリングして使ってるAPI関数が問題なんだろうとはわかるけど
どのタイミグで何処でデストラクトするのかとか
IDisposableイベントの発生のさせ方とか
C++から勉強しないとダメかな?
先は長いなあ いや6M→10Mはメモリリークしてなくても.NETならそんなもんだぞ
長いことモニタしてればわかるけど、フルGCが走れば減る >>315
え?そうなの?
その程度じゃメモリリークしてるとは断定できない?
もう一度検証してみますだ >>314
つ https://docs.microsoft.com/ja-jp/dotnet/standard/design-guidelines/dispose-pattern
ただし和訳は機械翻訳だから読めるなら英語版おすすめ
WINAPIで取得したリソースはアンマネージリソースだから、上の記事のComplexResourceHolderのように
Dispose(bool disposing)内で、disposingの真偽に関わらずアンマネージリソースを解放するのが正解
あとC++とC#ではどちらもデストラクタという用語はあるが
C++のデストラクタはC#ではDisposeが対応する概念
C#のデストラクタはDisposeし忘れた場合の救済措置 >>314
盛大に勘違いしてそうだけど、C#のデストラクタは
そのクラスのインスタンスを利用するプログラマがDisposeを呼ぶコードを
書き忘れた(つまりバグ)場合のフェイルセーフ以上の意味は通常はないっすよ
つまりIDisposableを実装しないなら普通はファイナライザも必要ない
ファイナライザは何か不思議な力でリークを解決してくれるマジックじゃありませんw
初心者がごちゃごちゃ頭の中でくだらないこと考えても意味ないよ
どうせそんなの盛大に間違ってるw
そんな暇があったら理解できなくても少しでもドキュメントを読んだ方がいい SqlConnectionクラスでDB操作するのですが、ACID特性の担保は設計でやるのでしょうか?SqlConnectionとDBMSが隠蔽してくれるのでしょうか?
複数ユーザー利用時のトランザクションのロックとか自力実装する必要があるのかなと思い >>310
毎回テキストボックスをクリアして反映するの?
それとも差分を抽出してその部文だけ表示を変更するの? >>316
CLRProfiler使ってちゃんとリークオブジェクトがないか確認してみるといいよ >>319
ACIDはあくまで利用者から見たシステムの性質
一般的なRDBにはACIDを実現するために必要な機能が備わっているが、それを使ってACIDなシステムを作るのはお前自身だ
アトミックなトランザクションを使ったからってお前のアプリのリクエスト処理が勝手にアトミックになる訳じゃないぞ >>320
テキストボックスはでかい文字列扱うと遅いから
高性能なの作るなら独自コントロール >>314
c#は空きメモリに余裕がある時は積極的にメモリの回収をしないから、一見リークしてるように見える。
IDisposeの使い方は単純で、使い終わったら自分でDispose()メソッドを呼ぶだけ。
Dispose()を呼び出し忘れた時のためにデストラクタからも呼ぶように書くけど。 >>323
本格的なテキストエディタを作るなら
どうしても独自コントロールになるよな
テキストボックスじゃデカいファイルだと無理がある デストラクタはいつ動くかわからないから使い勝手がわるい >>323
横から失礼。まったくの素人質問で申し訳ないのですけど
独自コントロールのテキストボックスってKeyDown命令を検知したりして
必要な処理を一つ一つ作っていくんですか?
慣れてきたら挑んでみたいけれど何をどこから調べればいいのかわからないので
そのあたりの仕組みやヒントが学べそうなサイトや教本ってあります……? >>330
初心者の範疇じゃない
さらに言えば中級者の範疇でもない
c# avalon editorでググればいい
単体でエディタを自作するのは愚かなこと
Visual Studio Codeなどの拡張機能を作るのが正しい オープンソースのコードエディタのソースを見れば参考になるかもね
言語は違うけどVSCodeやEclipseなど メモリ解放の部分だけC++で作成して呼び出せないの?
どう呼び出してメモリのどの部分をどう開放させれるのかとか一切しらんけど >>333
C++で.Netをオーバーライドとかなかなか無い発想だね >>333
Roslynをフォークして自作してみてはどうだろう
未だにこうやって.NET(というかGC)のメモリ管理に不満を言う人が居なくならないということは
決定的なメモリ管理にはある程度の需要が確実にあるということ
そういう人たちのヒーローになれるかもしれない
それでパフォーマンスや生産性が上がると本当に実証されればMicrosoftからもアプローチがあるかも >>330
超簡単に言うとWindowsならAPIのテキスト描画関係の
関数を使ってキーイベントを拾ってとかやっていく
Win32APIでググれば参考になるサイトがいくつも出てくる
言うのは簡単だがやるのはもの凄く大変だけどね
>>331
勉強にはなるけどね
その通り中級者の範疇でもないから、かなり実力を付けとかないといけないな >>331
ありがとうございます! 初心者の範疇ではないとは薄々……!
テキストエディタ特化のライブラリがあるんですね、先人は偉大だ……
最終的には自分で使う用に物書き方面に特化した文章エディタを作りたいので先は長いです
avalonエディタに触れてみながら参考になる部分はないか色々探ってみます!
>>332
確かにC#で作られたものじゃなくても仕組みの理解に繋がりそうではありますね!
基礎の基礎は終えた今なら少しは中身を探れるかもしれないので
探して覗いてみます、ありがとう!
>>336
なるほど、ググりながらよく分からないままに使っていた
User32.Dllまわりの正体がそれなんですね……!?
ありがとうございます、勉強になります! 探ってみます!
色々できるようになりたい! >>338
一応GCも自前管理もできる言語もあるらしいし
主流にはなってないみたいだから大多数は特に望んでないのだろうけど ゲーム用途とかのリアルタイム処理向けGCに入れ替えできたら面白そう ゲームはそもそもリソース使用量決まってるんだからプレイ中にGC動いたりはしないよ
シーン切り替えと一緒に動かす程度だよ LinuxのMono Developの使い方のついて、ここで聞いてもいいかな? >>343
時代遅れのものは使わずVScode使って該当スレへ行ってください >>343
さすがに今時そんな廃棄物は使うなとしか言えない
LinuxならRider買うかVSCodeで我慢しなさい websoketで大量データ受信しながら他の処理を非同期で遅延なく処理するには、別プロジェクトで共有メモリアクセスがいいか、単純に別スレッドでInvokeするのはどちらがいいでしょうか?
というより、王道な設計パティーンを教えて下さい。 >共有メモリアクセス
こういう発想がどこから出てくるのか? VSCode でも使っている、Electron とか >>350
だめとかの前に具体的な形考えたうえで書いている? 受け取った大量データを他の処理で使いたいってことか?
使うのが受け取りが完了してからでいいんだったら普通にファイルに書けばいい >>350
共有メモリを使うと言うことは別のプロセスと通信すると言うことだね
わざわざリソースを食う共有メモリを使って処理速度を遅くして何がしたいんだ? 前スレでシリアルポートの使い方を聞いた質問者か?
相変わらずズレた考え方してんな 普通はプロセスごとにメモリが分離しててどちらかがおかしくなっても他に影響しないように作られてる
それを無理やりOSを使って通信してるのが共有メモリで実際は共有してない 別プロセスする必要なしと言えばいいのに
なんてひねくれた奴らだ >>356
ファイル連携で済むくらいにすっぱりと綺麗に分けられるなら分けるべき
共有メモリが必要になるような密な連携が必要なら本末転倒 本: 目的の達成
末: プロセスの分割
本末転倒: プロセスの分割により目的の達成が逆に遠のいている状況 >>359
共有メモリが必要なら必要な事をしとるだけで遠のいとらんやろ
何を言いたいんやおまえは? 答える気がないことだけは分かった。
じゃーなゴミクズども。
家族や先生以外とコミュニケーション取ろうとしてんじゃねえよ池沼クサレガイジが。 答える気がないのではなく答える能力がないのだという事だけは知っておいて欲しい
決して悪気があるのではない、むしろ彼らは答える気に満ち溢れているのだ 普通は、共有メモリなんて考えない。
何が目的なのか、わからない
A | B | C
パイプなんて、これで処理完了する。
共有メモリもクソもない
メモリなんて、OS が勝手に共有しているだろ 普通にやるならtaskでcontinuewithするとか? >>361>>362
ファイルにしろとかみんな答えているだろ
処理内容もわからないし処理するもののフォーマットや大きさが決まっているのかもわからない
そんな内容で細かく的確に導けって無理だから
ここ質問者だけでなく回答者もみんな初心者が来るスレだよ >>346
スレッドセーフなキュー(BlockingCollectionとか)を用意して、
受信してキューにデータを入れるタスクと、タスクからデータを取り出して処理するタスクに分ける。 同期・非同期通信のサンプルを探しているのですが、知識がないので、サンプルの善し悪しが分かりません。
実際に動かしてみてこれは良さそうだと思ったんですが、もっといいサンプルはありますか?
https://docs.microsoft.com/ja-jp/dotnet/framework/network-programming/socket-code-examples JavaScript, jQuery などの非同期処理は、Deferred、ES2015ではPromise
他に、ES2015のGenerator、Async/Await >>217
未確認飛行は自分は最初きつかった
本当に最初は1週間で学べるc#が助かった ライブラリ関係って聞いても大丈夫ですか?
ウィンドウをタブ化したくてDockPanelSuiteを導入したのですけれど、
DockStyleをFloatとDocumentしか使わないのですが
ウィンドウをFloatの状態からDockPanelのどこにドラッグアンドドロップしても
DockPanelに収納できるような設定はありませんか?
今の状態だとタブ一覧の上に持って行かないと反応してくれなくて…
スレチだったらすみません >>273
ExcelDataReader ででエクセルを読み取るのをググって調べてるんですが、英語で書かれててよく分かりません。
シート1のセルA1の値を読み取るサンプルコードを教えて下さい。 英語で書かれててよくわかりませんって、パワーワードだよな。
よくいるけど。 今はMSも日本語翻訳に昔ほどのリソースを割かなくなっていて、英語が読めないとMSDNもまともに読めない時代になってる
英語読む気ないならやめた方がいい ExcelDataReaderで検索したら使ってみたってページすぐ見つかるじゃん ChromeつーかGoogle翻訳が最近賢いから
英語読むこともかなり減ってきたわ >>380
ところがMSDNになると話は別
まったく逆の意味に翻訳されることもある
というか多すぎる
英文見ると一発でおかしいとわかるけど MSDNの機械翻訳ってなんであれほどまでにアレなのか
昔よりひどい気がする(気のせい) 昨今のAIだかdeel learningだかのブーム。ハードウェアは何倍とか進んでるけど、ソフトウェア的には、全然、世の中便利になったと実感わかない。 >>382
機械翻訳の質は確実に向上している
向上した分だけ人力修正の工数を削減しているのだ 逆の翻訳って
この前の炎上してたやつとかな
MSDNの機械翻訳は昔から酷いな >>384
なわけないでしょw
人力使った修正なんか昔もやってないからww
プログラマの端くれならAIブームなんてバズワードだって最初から分かれよ
機械翻訳の質なんか工場する訳がない
機会は文脈を理解できない、というのが問題の根本なんだが、それを解決する理論なんか何も見つかってないんだから >>386
MSDNのドキュメントが機械翻訳ベースで人間が校正してたのは有名な話だぞ
今は「英語で読む」スイッチが付いて、英語に抵抗がない人にとっては使いやすくなったね 日本語だと漢字の熟語とかで書いてることが一目でなんとなくわかるけど英語でも慣れればそうなるの? google翻訳やMSの翻訳は複数の文がコンマでつながれてる文とか壊滅的に訳がおかしい
係り受けや接続もおかしい >>386
んー?でもよくある文章と似たようなワードが出てくるようなときは
かなりの確率で概ね使う構文が一致すんじゃねーの? まだ夏休み中の子供たちが書き込んでいるのか。いつ終わるのかな >>383
ムーアの法則がのびのびになっているのに今更何を言ってるの? >>395
CPUはのびてないけどGPUのテンソルコアは何倍とか急激に延びてるのも知らないの? 汎用コアでやってたものを専用コア使い出したり、推論?は単精度じゃなくて半精度で十分だったりでここ数年どんどん最適化進んで急激に延びてんだよ
だから余裕でムーアの法則以上に性能上がってるわ
(たぶん) 上がってないよ
ムーアの法則が成立したのはもう10年以上前のPentiumIIIの頃まで
GPUGPUなんてマルチコア化と同じ苦し紛れに過ぎず本質的なものじゃない マイニングだって汎用CPUで演算してたものを専用のFPGAとかASICにすりゃマイニング性能は爆上がりだろ。
ビデオエンコードだって専用HWで爆速(品質は知らね)
上がってない?って何が上がってないの?
単コア辺りに性能で比較してるんじゃねぇわ
文脈をちゃんと捉えたほうがいい。 実にアホな議論だ
計算機は汎用であることに意味がある。
専用ハードなら〜なんて話は、たとえが古いが画像処理専用チップを持ってるファミコンの
ゲームだけ見て、ファミコンの方がPCより高性能だというのと同じ倒錯 もとから汎用演算の性能の話なんてしてねぇのに読解力ないやつが話に混じろうとして荒れるパターンってやつですね
たかが数レスのやり取りを勘違いするなんて相当読解力ないんですね。 今さらwpfで作る理由ない?
そもそもwpfで作られたアプリが見当たらないし >>403
GUIにこだわりがあるとかUWPにいずれ移植したいとかなら
業務で使っているとかはあまり聞かないから趣味の世界っぽい >>403
>>405
VisualStudioやNuGetPackageExplorer見たことない人たち? >>407
ところがVSのInstallerはWPFからElectronにリプレースされたんだよなあ
MS的にはできるだけVSCodeとリソースを共有したいだろうから、次期バージョンではほぼ確実にVSのワークスペース内にElectron入れてくるよ >>408
そこに深い意味があるとは思えないw
昔のExpressのインストールディスクの起動画面もHTAだった気がしたけど、
あれだってHTAであることに特別意味があったわけじゃなかろう >>405
MSも捨ててるしねえ
UWPも誰も使ってなくない?
>>406
教えて 有名どころだとSourceTreeだな、むしろこれはいまだにElectronとかにしない理由がわからん(GitHub for Windowsはそうなった)
他は知らん
MSもVS,Blendは別とするとWinDbg Previewで使ってるくらいじゃね?
野良アプリはちょくちょく見るけどキリがないので割愛 WPFはWindows10のスケーリングに対応しているのかね?
Winformで作ったらWin10スケーリングな人からボロクソに叩かれたからリベンジしたい Windows7で作っていたWinformのアプリがたくさんあったけどWin10にしてスケーリングで問題出たものは一つもないな >>413
4.6.2以降ならmanifest宣言すればPer Monitor DPIもWPF内でやってくれる
https://github.com/Microsoft/WPF-Samples/tree/master/PerMonitorDPI
ここのDeveloper Guideを参照
WinformsはSystemAwareの範疇でも見ても中途半端に対応していたせいで
Win32生でやるよりHiDPIで崩れてるアプリが多い気がするなw >>412
WPFは仮想DPIなので元々何もしなくてもスケーリング対応(System DPI aware)
※Per Monitor DPIでは無い
4.6.2以降はmanifestで宣言すればPer Monitor DPIも対応
4.6.2未満もapp.configで宣言すればPer Monitor DPI対応するらしいけど、確認はしてない でもPer Monitor DPI自体がポンコツで使い物にならんからなあw
活用してる人がどれだけいるか 他のアプリケーションの持ってるDataGridViewをゴリゴリ弄りたいんだけど何かいい方法ないでしょうか。
持ってるプロパティやデータも読みたい。
しこしこSendMessageするのは現実的ではないと思いまして。 RPAは自動化処理としては不完全
SendMessageしこしこした方が確実なのは言うまでもない ほとんどのプロセサに共通して言えるのは
整数演算性能はどうでもいい扱いになってることだな エクセルを『ClosedXML』で読み込んで、A2からセルを順に下に見ていってセルが空まで繰り返すって、どの繰り返し文が理想ですか? >>421
while(true){}
空行が100行続いたら抜ける的な private void AAA()
{
var list = new List<Myclass>();
var numberList = new List<int>()
{
1, 2, 3, 4
};
Myclass mc = new Myclass()
{
Nunber = 0,
};
int i = 0;
foreach (var n in numberList)
{
if(n == 1){
mc.Nunber = 1;
list.Add(mc);
Console.WriteLine("1={0} ", list[i].Nunber);
}
else if (n == 2) {
mc.Nunber = 2;
list.Add(mc);
Console.WriteLine("2={0} ", list[i].Nunber);
}
つづく else if (n == 3) {
mc.Nunber = 3;
list.Add(mc);
Console.WriteLine("3={0} ", list[i].Nunber);
i += 1;
}
}
foreach (Myclass n in list)
{
Console.WriteLine("res= {0} ", n.Nunber);
}
}
}
public class Myclass
{
public int Nunber { get; set; } = 0;
} 上記を実行すると
1=1
2=2
3=3
res= 3
res= 3
res= 3
となります
list.Add(mc) でlisの要素の最後に追加しているのに
res ではすべての要素が"3" になっています
なぜなんでしょう? list={ mc ,mc ,mc}になっているんだよな
ループ中でインスタンス毎回作らないと c#と言うかプログラミングの勉強始めたばかりなのですが、例外とエラーコードの違いがよくわかりません 使い分けるものではないから違いを気にする必要はない
エラーコードはどうしても必要な特別な場合を除きC#では使わない
人によっては業務エラーは戻り値を使うべきだとか色々な主張があるが、今はまず標準的な方法を学ぶ段階であり、そのような意見は無視せよ >>426-427
なるほど!よく考えればそうですね
ありがとうございました コントロールの名前を小文字で始めると「名前指定の規則違反です」と出るけど
デバッグは通ります
何か問題出ますかね?
あとCamel形式になじめず変数の命名する時
単語の連結にアンダーバー入れたい衝動がハンパ無い
一人で完結するなら問題ないだろうけど
チームでやるようになると嫌がられるのかなあ?
まあ無いだろうけど >>433
デバッグ通るなら問題ないでしょ
コーディングスタイルの設定を変えればそういう警告は出なくなるんじゃないかな
チームでやるならチームのスタイルに合わせる、簡単なことじゃん
チームのみんなを納得させられるほどの合理的な理屈があるなら説得してみればいい 名付け方式がPascalだろうがCamelだろうが小文字アンダーバーだろうがぶっちゃけ通ればいいよ
チームで嫌がられたらその時合わせ方を考えればいい >>433
その手の表記法は余程不合理な物でない限り慣れの問題
少なくとも俺は1週間で慣れる
>単語の連結にアンダーバー入れたい衝動がハンパ無い
これはむしろアンダーバーを入れる表記法の方が冗長で不合理なので、
一旦キャメルやパスカルに慣れた後では間違いなく逆の感覚を抱くようになるw
掛けてもいいよ web屋、というかPHPerはsnake caseじゃなきゃヤダ!派がやっぱ多いよね そかあ・・慣れねぇ・・・
ところで「小文字で始めると規則違反って警告が出る」って話だけど
よくよく観察したら
VSがデフォで自動命名したのでも警告出るんだけど・・・・なんで?
例えば
private void button1_Click() の button1_Clickとか・・・ >>436
単語の間に空白を入れると視認性が高まるという研究結果があるらしい
それを信じるなら、空白ではないがセパレーターが間に入るスネークケースとケバブケースは理にかなってるはずだ
何はともあれまずは実験してみるべきだろう >>440
自己レス
オプションのコーディングスタイルの
「フィールド以外のメンバー」がパスカルになってたから
これを削除したら出なくなったわ
キャメルにしたかったけど選択肢に無かったから削除にした
よく分からないけどこれで良いんだろうか?www わかりました。とりあえず例外の使い方を勉強します。 キャメルでもパスカルでもスネークでもケバブでもどれでもいいと思うけどな
コーディングスタイルにこだわる理由が分からん
見やすさならスネークとケバブだとは思う。理由は英語自体がスペースで区切る方式だから
と言いながら個人開発では慣れたキャメルやパスカルだけどさ
あ、個人サイトのURLはスネークケースだわ >>444
いいんです
コーディングスタイル設定に基づいた単なる警告だから コンボボックスやテキストボックスを引数にしたい場合って、object?control? >>448
デザイナのソース見ればわかる。そのままComboBoxとTextBox
それ以外なら何に使いたい引数なのか言わないと分からない 入力のエラーチェックでカンマが入ってるかどうかチェックするのに引数で持ってきたい場合はどうすれば?
まぁコンボボックスは入力するところではないんですけど... >>450
それは入力したテキストだけを参照したらいいのでは? >>450
カンマが入ってるかどうかチェックする値を引数にすればいいのでは? 見知らぬ人が作ったVBを勉強がてらC♯変換しててVBがそうなってたもので. ..
テキストを渡してやることにします。 横槍だがそれにつけるメソッド名どんなのにすればいいの?
参考に教えて
GetStringDeleteComma()
とか? >>450
カンマなど余計な文字数とってやるって手もある >>453
例えば、エクセルを読み込んでその各列の値をそれぞれ複数のコンボボックスに入れる時はどうしたらいいですか?
追加部分を別クラスに書いて、引数はフォーム、列のカラム、コンボボックスなど渡してやったりするのは駄目な書き方? >>455
「カンマが入ってるかどうかチェックする」「テキストを渡してやることにします」だから
bool CheckComma(string checkText)
とかじゃね? >>461
MSのコーディングスタイルに準拠するならそれだな >>460
それだとカンマが含まれてる場合にtrueとfalseのどっちが返ってくるか判断できんやろ ほんじゃカンマ以外が入っていたらどーすんのってなるから数値以外削除して返せばいい
って思ったけどどういう関数名にするんだ? >>464
そう言われればそうだな。そこら辺の配慮を忘れてたわ
やっぱHasCommaが最適解か
メソッド名だけで返り値が分かるしな hasも英語として不自然なのでcontainsを使ってw
もっと言うなら、StringのメソッドにContainsが既にあるので
わざわざカンマを含むかどうかを検査する専用メソッドに存在意義があるとは俺には思えん データグリッドビューを別フォームに渡して
コンストラクタで受け取ります
このとき元のデータグリッドビューと切り離す琺瑯教えてください
複製したいです
この時データセットやデータテーブルは駄目です DataGridViewじゃなくてDataSource受け渡しでDataSourceをコピーじゃダメなの? 同じRowとColumnの数の新しいDataGridViewを作り、それぞれのValueを書き込んでください 新しくnewしたDataGridViewに手作業で必要なプロパティ設定していく
ColumnsとRowsはforeachしてそれぞれCloneしたのをAddする
イベント類はまあどうでもいいか >>469
何言ってるのかさっぱり分からんけどこういうこと?
〜 Form1 〜
Controls.Remove(dataGridView1);
var form2 = new Form2(dataGridView1);
form2.Show();
〜 Form2 〜
public Form2(DataGridView dgv)
{
InitializeComponent();
Controls.Add(dgv);
} 移動元でControls.Remove不要みたいだね
こんなの必要になったことがないからやったこともなかった XMLに書き出して新しく作ったFormにロードするのが一番シンプル 俺も気になるわこれ
DataGridViewでCloneできればいいのに
画面上のソート順を保つためDataGridViewごと他フォームに渡したりする
でも元フォームでデータ変更されると渡したDataGridViewも変わるから
それが嫌だったことある
そん時は元フォームで1行ずつ先頭から呼んで別のDataSet作ったけど 素人だからデータの保持や別データとのやりとりはListでやっといて
更新される度に毎回DataBindings初期化していちいち読み込んでるわ
動くから……いいかなって…… データグリッドビューでやるのは無理なんですね…
一行ずつ新しいデータテーブルに読み込んで複製します
ありがとうございました そうじゃなくて、だからそもそも何言ってるのか誰も理解できないんだってw
まともな日本語書けと
他人に通じるまともな文章に書き直したら答えが返ってくる問題かもしれんよw フォームのデータグリッドビューを
別フォームのクラスに渡してコンストラクタで受け取るんです
DataGridView dgv = srcDvg;
そうすると元フォームのデータグリッドビューを変更すると譲渡先のdgvも変更されちゃうんです
コレを止めたいです
元を変更してもdgvは渡されたときの状態を保つ方法が知りたいです
なお、この時データセットやデータテーブルを使用せず
データグリッドビューのままやる方法はありませんかと言う質問です 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b) 参照元の状態を反映するのはC#の仕様なんだから新しいインスタンス作って
何らかの形で中身コピーする必要があるのはどのクラスでも一緒(Bitmapとかも) 面倒くさいことを楽にしようというのがソフトウェアだからな >>488
ここに来るのはみんな初心者
スレタイ読めないのか? byte a;
byte b;
byte c = a + b;
だと型が合わないとエラーが出る
左辺をint cにするか、右辺を(byte)(a + b)にする必要があるんだな
なんで型が合わないのか分からず一日ドツボにはまった
入門レベルの参考書には載ってないし
でもバイト型とバイト型を演算したら答えはイント型に変わるって
根本的におかしくね? >>491
リンクだとlinkって感じなので心の中ではリンクゥって言ってる >>495
CPUはそういうもん
小さな型でもいったんCPUに応じた処理しやすい自然なサイズに変換してから演算する
32/64bit CPUと呼ばれる所以だ
もちろんbyte同士なら演算後に勝手にbyteにキャストする仕様もありうるけど、
そんなことをしてもせっかく255を超えてもオーバーフローせずに表現できてるものを
わざわざ余計な処理入れて切り捨てるなんて無駄でしかないからCPUの仕様に合わせている LINQ職人の方に聞きたいのですが
var 元 = new[] {
new {Index = 0, Value = "あ"},
new {Index = 1, Value = "い"},
new {Index = 3, Value = "う"}
};
みたいな羅列があって、こいつを平凡な string[] に変換したいです。
[0] → "あ"
[1] → "い"
[2] → null
[3] → "う"
LINQ 1発でバシって出来ませんか? LINQ 外部結合
ぐらいでググったらそれらしいのあるが、やめとけ。 >>495
今まで気づかなかったけど、C#もintに揃えるCの手抜き実装を踏襲してるんだなw
これはシンプルに「大きい方の型に揃える」ルールにして欲しかったね >>501
var 元 = new[]
{
new {Index = 0, Value = "あ"},
new {Index = 1, Value = "い"},
new {Index = 3, Value = "う"}
};
var array = Enumerable.Range(0, 4).Select(index => 元.Where(moto => moto.Index == index).FirstOrDefault()?.Value).ToArray(); ちなみにFirstOrDefaultはFunc<T, bool>を引数に取れるからWhereはなくていいよ >>508の指摘にそって改良
var 元 = new[]
{
new {Index = 0, Value = "あ"},
new {Index = 1, Value = "い"},
new {Index = 3, Value = "う"}
};
var array = Enumerable.Range(0, 4)
.Select(index => 元.FirstOrDefault(moto => moto.Index == index)?.Value)
.ToArray(); >>512
じゃあ>>509も1行で済んでるからそっちでいいや cscやmscが吐き出す実行ファイルについて教えてほしいのですが、これはOSや実行環境に依存せず実行できるのですか?
WindowsPC上で実行ファイルを作成し、それをRaspberry Pi等にコピーしてmono上で動くのかが知りたいです >>514
依存する
monoの方にどこまでサポートするか書いてないか Tostaring();
Set focus();
とかの()の意味を教えてください。 しかし、Tostaringてw
ドラマか何かの主演俳優にするメソッドがw はからずもS式の合理性を再認識させられる初秋の夜であった >>501
Enumerable.Range(0, 4)
.GroupJoin(元, m => m, i => i.Index,
(m, i) => i.FirstOrDefault()?.Value)
.ToArray()
長いね… 元.Aggregate(new string[4], (a, x) => { a[x.Index] = x.Value; return a;}); >>510
Zipじゃ
i=2 : null
は無理でしょ >>1のスレ趣旨にあるように、
超初心者でも、気軽に入り込めるスレに、して欲しいです。 LINQのメソッドこねくり回しているのは超初心者には厳しいかな? おまえも超初心者やんw
そうゆうとこやあかんのはw Aggregateのパターンを実際使うとすると配列代入時のインデックス範囲チェックが必要で結局長くなるんだよな 業務システム開発でLinqと三項演算子だけでほとんど処理を書いていたら 応用情報技術者試験のアルゴリズム問題でカウンタを持つようなfor文が全然読めなくなってしまいました
やはり開発においてLinqは有害なのでしょうか? >>533
貴方の脳の品質の問題をLINQの問題にしないでください C#7のローカル関数って、一つのメソッドからしか呼ばれないなら良いと思うんだが、ユニットテストはどうなるんだろ? >>536
ユニットテストはやる人などによってやり方はそれぞれだろう privateメンバのユニットテストをしようとするのはそもそも誤り
壊れやすいテストは結果的にメンテされなくなり意味を為さなくなる >>538
これ
publicなメンバーを通してテストすること 列挙子とforeachの組み合わせってforよりおそい? 数%の処理速度の違いを気にするくらいならその都度試してみればいいんじゃないかな いや、なんでLINQ遅いって言われてるのかなっておもって 遅いと言えば遅いよ
余計な手数が増えてるから
気になるなら後からでも書き換えればいいだけ >>547
それはリンキューさんの遅さとゆうより
有り合わせのアルゴリズムの組み合わせで勝負するか
はたまた最適化したアルゴリズムをシコシコ組み立てるか
の違いが大きいのや その程度の差なんですね
よほど大きなオーバーヘッドでもあるのかと思ってた MSIL勉強したいのですが、参考になるサイトを教えてもらいませんか? linqの中身はforeachで列挙子を回してる
それは
while(次の要素を取得するメソッド){
要素に対する処理のメソッド
}
に展開される
詳しくないから適当だけど がっつりパフォーマンスのチューニングしたことあるわけじゃないけど
unityの毎フレーム行われるような処理で使わない限りlinqの速度が問題になることはないんじゃないか? プログラムによる
プロファイラで分析しろ
ボトルネックの分析前に100倍遅いのとか1000倍遅いとか言っても何の意味もねえから アプリケーションのプロパティの中にある[設定]という項目で
Properties.Settings.Default.xxxでint型配列の変数を保存したいのですが
できませんでしょうか?
前回使ったパラメータ群を配列で保存して
次回に読み込んで再現したいのですが
別の方法でもいいのですが参考になる解説ページでもあれば教えてください >>559
「,」でjoinして文字列で保存、取り出すときに「,」でsplitとかどうだろ? >>560
まあこれが横道だよね
てか、今ならjsonで保存か >>560
なるほど!配列を分解して文字列型にするのか!
それなら私の低スキルでもなんとかできそうです
ありがとうございました! 例えばアプリケーション終了時に画面のサイズと位置を保存して
次回起動時に設定をロードするとしたら
なにで保存しますか?XML?INI?JSON? >>563
「どこに保存するか」を気にしないならすぐ上に出ているProperties.SettingsのSystem.Drawing.Pointで保存したら
MSの推奨なんだから 昔からあるVSの定型Tipsだけど
この上から目線な感じは
もっと高度な議論を吹っ掛けてるんじゃね?
くわばらくわばら >>563
俺はXMLで実行ファイルと同じ場所に保存してる >>566
実行ファイルと同じ場所は書き込み権限がなかったりするからMS的にはApplication.UserAppDataPathで得られる場所などを推奨 >>559
IDEでプロパティの型を選ぶところの中には配列ってなかったっけ 場所や形式はなんでもいいけど
読み書きクラスを上手くカプセル化しないと後で変更効かなくなって泣くのでそっちのほうが重要 >>564
へーありがとう御座います
調べてみます >>570
重要になるのは後で
開発中はたいして重要じゃないし正解も定かではない >>566
実行ファイルのパスってProgramFilesのとこかな?
あのフォルダーって監視入ってるから、データアクセスでも色々遅くなるかも どこに保存するかはかなり致命的な問題になるから
今から学んでおいて損はないよ >>573
ProgramFilesがなんで出てくるかもわからないし設定ファイルのデータアクセスのスピードが問題になるのはおかしい >>567
知ってる。でも自作のポータブルアプリだからそうしてる
インストールするようなもんはC#ではまだ作ったことないわ
>>573
違う。ポータブルアプリだからユーザーが置いた場所
USBのフォルダとかマイドキュメントとか >>569
同意。C#はXMLについては簡単にカプセル化できるのがいい
JSONも簡単なんだっけか?、使ったことないから分からんわ UACが出来てからディレクトリの書き込み制限が厳しくなってるから意識する事は大切ですね
>>574 書き込み制限するだけならまだマシなんだが
勝手にリダイレクトしやがったりするからなぁ
それも同じOSでもUAC設定だけでしたりしなかったり >>578
違う
どこにどんな形式で置くかを柔軟に変更できることが重要
これをおろそかにして最初から場所や形式を決めつけると後で致命的な問題が発生した時に困る いやいや保存場所は最初から重視しないとだめだよ
あとで罠にはまるよ >>582
情報が出揃ってない序盤で決定するのはNG
根拠の薄い判断に盲目的に従って進めるよりはわからないものはわからないと認識した上で進めるほうが良い
最初は良いインターフェイスを決定することに注力する
開発が進むと徐々に客が(隠していた|失念していた)情報を出してくるのでそうなってから検討すればよい
それまでは暫定で簡単な実装を置いておく よくわからないけど設定ファイルを柔軟にする必要はないよ 実装方法を知りたい人にインターフェイス云々から始める人は無視 どの初心者スレでも明後日のレスしてドヤりたがっとるプロさんおるねw 具体例示さず「〜しなきゃいけない」とかいうのは「妄想お疲れ」って返しておけばいいよ 今後は全部の質問にインターフェイスの決定に注力しろって答えたらいいんだな 雑魚しかおらんかったか
初心者スレだからしゃあないか 英語読める人ホント羨ましい
リリース当日にリファレンス把握できちゃうわけでしょ >>593
1~2番目はまあそうだねと思ったけど
3番目がくだらなかったから読むのやめた 対象文字列 "<xx><yy><xx>111</xx></yy></xx><xx>222</xx><xx>333</xx>"
があるとき、
xxの中を取り出す正規表現はどうしたらいいのでしょう?
ただし、xxが閉じる前にyyがあるときはそのxxは無視という条件付きです
例えば正規表現を @"<xx>.*?[^(</yy>)]</xx>" にすると
実行結果
<xx><yy><xx>111</xx> ←</yy></xx>が欠ける
<xx>222</xx>
<xx>333</xx>
欲しい結果は
<xx><yy><xx>111</xx></yy></xx>
<xx>222</xx>
<xx>333</xx> 内容はみてないけど
正規表現では検出できないパターンがある
それにあたるのかと オレだったらどうでもいいしょうもないこと考えたくないから
普通にxerces使う 質問からはxmlなのhtmlなのかすら確定できない 正規表現は括弧やタグの対応は苦手
中に再帰的構造があるものは苦手
その構造が特殊になるとさらに苦手 xmlだけど同じデータ格納するのに色々なフォーマットがあるごちゃついたのだから
文字列として処理したいんです。正規表現使わずに力技で読むかなぁw
すみません。>>599の対象文字列がミス
対象文字列 "<xx><xx><yy>111</yy></xx></xx><xx>222</xx><xx>333</xx>";
試した正規表現 @"<xx>.*?[^(</yy>)]</xx>"
結果
<xx><xx><yy>111</yy></xx></xx><xx>222</xx>
<xx>333</xx>
欲しい結果
<xx><xx><yy>111</yy></xx></xx>
<xx>222</xx>
<xx>333</xx> とりあえずこっちへ行け
Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net
http://mevius.5ch.net/test/read.cgi/tech/1489511075/ C#の正規表現だからこっちにしたんだけど、あっちに引っ越します XMLや正規表現を考えるよりもデータ構造がどうなっても対応できるようにインターフェイスを考えるべきだろ >>1
ぶっちゃけた話、C#って2030年まで生き残りますかね? 生き残ってる定義による
cobolなんてもう60歳だけど必要とされてる場面が無いわけじゃない そんでC++みたいにバージョンが制定年になると
正直機能的には3.0くらいであまり困らんのだけどね
簡潔に書けるとかはあるけど
ライブラリだけ拡充してくれれば LINQがないと死ねる
というかLINQがないとC#のアドバンテージを全く感じない言語になってしまう
それとawaitもそうだけど、C#はJavaに対してコンカレントプログラミングの能力に
まだまだ欠けていると思う
Javaの強みはjava.util.concurrentにあると思う java.util.concurrentってほとんど.NETにも同じのあるぞ
Javaのあの〇〇Queueとかクッソ使いづらい並列フロー制御系に対応するのはTPL Dataflowがある >>616
メソッドにした方が2回目同じ処理するときにいいよ 結局Windowsアプリケーションにしか使われてなくて
VBの代わりくらいのポジションなんですかね・・・ >>617
そんなんどこにあったっけ?
実際java.util.concurrentパッケージの充実度は凄いぞ UnityとかTypeScriptとか、色々と使われているでしょ >>620
連想配列分負けてる気がするね
c#には付けないで欲しかったけど
ちょっと前に付いた? >>624
大昔(2.0)からある
System.Collections.Generic.Dictionary<TKey,TValue>
でなくて? >>621
iOSやAndroidアプリにも使われてますよ C#でカードゲーム作るため
テキストファイルに保存した
一行分をカードデータにしたいのですが
行指定はどうやるのでしょうか .Net4.0までの環境で、Task.Runが使えないのですが
Task.Factory.StartNewを使う場合、戻り値を処理するContinueWithに該当する書き方はあるのでしょうか? >>622
System.Threading
System.Threading.Tasks
System.Threading.Tasks.Channels
System.Threading.Tasks.DataFlow
System.Collections.Concurrent
ちゃんとこの辺りを見よう >>630
Task<T>を作るのが.Runだろうが.Factory.StartNewだろうが
その後の記述は特に変わらないけど 最近の.NETってMS製の公式な標準ライブラリですら平気でNuGetだけで提供されるようになったけど
ビルドにインターネットからのダウンロードが必要なのはギョウムワールドだと問題になるところが多そう
ジャパニーズドカタは氏ねってことかな >>625
タプルと合わせないと似たような機能にならない気がする ぎょうむわーるどなんてなおさら最近の開発環境とは縁がないのでへーきへーき >>636
気軽に使うと問答無用でバグ票切られる機能だろそれ
まず待ちたいならタイムアウトを設定しないと
そもそも何がどんな状態で終了することを想定している?
リトライはいらない?
お前は何もしなくてよかったの?
自分の次の動作は待ってるタスクの結果次第だから待ってたのに何も受け取ってるように見えないけど?
ってぐらいは考慮してないとだいたいバグってる >>621
Google Cloud Platform Japan Blog
ポノス株式会社の導入事例: eスポーツ対応の対戦型ゲームを Compute Engine ベースで構築、レイテンシーの比較で最大 2 倍の差が採用の決め手
https://cloudplatform-jp.googleblog.com/2018/08/ponos-esports-compute-engine.html
> 特長的なのは、バトルサーバーで、アプリケーションが C# で書かれています。
>「Windows 上で C# を動かすのではなく、.NET Core を使って CentOS の上で C# を動かすという珍しい構成になっています。」 Javaと比べるとビルドから実行時までサクサク動くから気持ちいい uiスレッドって1個だけ?
datagridviewのデータソースにdatatable突っ込んで何十万件も表示させてます
高速化する方法ないですか? Form1.csに書くコードに対し、これは別クラスに書いとけってコードは例えばどんなものですか? >>644
頭から改良した方がいい
皮肉じゃない
真面目に言ってるぞ そこまで行くと高速化よりも
コルーチンで徐々に表示したりしてuiスレッドを止めないようにしたほうがいい
どう考えても設計見直したほうがいいけど >>644
1億を一度に欲しいの?
1億のレコードを画面に表示すんのか? >>644
日付の期間指定を無制限にしてるなら、最大90日にするとか DataGridViewってクッソ重いのと、DataTableとDataSetとDataViewもあるし、そもそもその先にはデータベースもあるわけで
DataGridViewとデータベースだけでいいんじゃね?って思うことがよくある webで作ったら普通に一億件表示しようなんて思わないよね
どうしてdatagridviewだとそのまま突っ込むのか Webも最近はページングが廃れてきて遅延読み込みが増えてる
ついに時代がVB厨に追いついた それも程度問題
数千件ならそれでいい(というかそうしなかったのはただの技術側の都合であって
ユーザーの利便性を追求してたわけじゃない)けど、件数が千万のオーダーになれば
話は別に決まってるよ DataGridViewは面倒でも仮想モードでやらないとデータ増えると加速度的に遅くなる 仮想モードってなんだっけ?
単に列追加時は描画止めて、追加終わったら表示するやつ? 画面内にいないやつはそもそもUIに載せないやつじゃない? スレが異なるかもしれんけど、SQLの結果を分割して取れなかったっけ? すいませんC#を始めてみようと思うんですが
基礎からしっかり学ぶC#の教科書か独習C# 新版どっち買うか迷ってます
全く0からの学習の場合どちらが適してると思いますか?又これよりいい本があれば是非教えてほしいです
よろしくお願い致します。 >>661
ありがとうございます
スッキリわかるjava入門と苦しんで覚えるC言語を読んだことがある程度です。ロベールのCきつくてクラスのとこ詰んだ状態です
少し知ってたら"に当てはまりそうですか?後C#独習って山田って人が書いた新版とハーバートって人が書いたやつの2つありますが
どちらも一緒ですかね、 >>662
JavaとCに理解あれば余裕ですよ
ハーバートの方が評価高いけど古いです
c#は進化が目まぐるしく2年経つと大きく変わるので新版をオススメします >>663
どっちも薄い入門書なので理解があるかはちょっと自信ないですが……大丈夫かなぁ
C#は比較的新しい言語みたいですがそんなに内容に違いあるんですか
分かりました。新しい方取り敢えず買ってみます。ありがとうございます。 >>664
独習を進める。新しい技は使われていないが、これだけ基礎を抑えた本は少ない。逆に独習にあるような基礎を抜かして最新技術だけ学ぶと高確率でコピペプログラマーになる。 1. Ruby, Python, JavaScript などの動的言語
2. Java, Kotlin, C# などの静的言語
3. C/C++ などのポインタのある言語
この順番で、勉強する。
例えれば、123 は、小中高大学の順番
君は小学生だから「たのしいRuby 第5版、2016」始めた方がよい。
まず動的言語で、プログラミング・オブジェクト指向を、かなり固めた方がよい
レベル1から、10, 20, 30と進める人は、考え方を自分のものにしていってる。
30から勉強を始めても、進歩しない。
だから、レベル20に落とす。
それでも難しかったら、10に落とす
つまり、伸びる人は、自分のレベルを知っているから、それに勉強のレベルを合わせる。
逆に伸びない人は、自分のレベルに関係なく、C++ などにこだわる
自分を馬鹿だと認めた人の方が、プライドが低いから、
低いレベルから勉強するから、結局は伸びる!
一番ダメな人は、プライド・理想が高くて、方向転換せず、現実的に成果がない人!
この手の人は、どこへ行っても嫌われる。
口では大きい事を言うけど、一定期間で、成果が出せない人
こだわりとかじゃなくて、勉強とは上達する道筋を探すもの!
C++ 一つの勉強時間よりも、動的言語3つを軽くこなせる!
しかも理解力が飛躍的に上がる
これが上達する道筋。勉強のコツ 入門ならideががっつりコード補完してくれる静的言語の方がよくない? >>666は書籍の宣伝のために開発されたAIボットだから相手にしちゃダメ C# は、共変性・反変性とか、概念が難しい
まだ、Ruby のダックタイピングとか、オープンクラスの方がマシ たのしいRubyはもう古いし楽しくない
パーフェクトRubyのほうがマシ 次世代言語スレから追い出されてこんなところで自演してたのかアンチ君
Pythonのステマを封じられたぐらいで発狂しすぎだろ そのスレ見てないからよくわからんけど他のスレにまできて粘着してるのかよ w
ごちゃんこええ >>660
C#に入門するだけなら高い本を買わなくてもWeb上の入門記事で十分。
(本には本でどこでも読めるメリットはあるけど、今時のプログラミングの本は
だいたい分厚くてどこでも読みたいサイズじゃない)
プログラミングに入門する言語としてC#が最適かどうかは微妙。
C#は上級者にはとっつきやすいよく出来た言語だけど、何せ覚えることが多過ぎる 図書館でc#の本を借りてこればいい
で良さそうなのがあったら本屋で買う ハーバート・シルト氏は独習C++でも名高い、これを超える書籍はまだ生まれていない >>681
でもそれ読んだ結果のおまえな訳やろ?
信憑性ないわー C#でDBプログラミングを勉強するのにおススメの資料を教えて下さい。
接続/切断/クエリ送信などの処理をする際に、鉄板といえる手続きがどんなものなのか分かりません。 クラウドのdbにしてもgoogle関連の超速dbには勝てないんだよなぁ >>690
efはsql知っている人が楽するためのものなので、
sqlやRDBを知らないと訳わからんと思う 速度的にはEFもSQLセルフ発行も同じ?
SQLだと複雑な抽出も出来るし一長一短け? 一長一短
efのSQLが嫌ならそこだけ直接発行にもできるから使い分けられる
efの生産性はぱねぇけどね SQLはサーバ側のオプティマイズがあるから、単純に発行した内容だけでは比べられんが
今のところまだEFよりちゃんとSQLできる人間が書いた方がマシなSQLになる印象
だからって、速度的には全て自分でSQL書けって言うほどひどくはない
簡単な選択程度なら誤差の範囲
普通はEF任せで、問題のあるとこだけ自分でSQLチューニングすれば良い EFはオブジェクト指向というかリポジトリパターンを前提にした設計なんだよな
ドメイン側をキッチリ設計して複雑なSQLはそもそも必要ないってとこまで持っていけないとうまくハマらない >>699
理解した
noSQLみたいな設計が必要なのか すみません質問なんですが
WPFってプログラム部分はC#で
GUI部分がXAMLということらしいですが
ということは
アプリとしてC#でできることはWPFでも当然できて
GUIはC#のフォームアプリより更に柔軟に凝ったことができる
という認識でよいでしょうか?
C#ではできてもWPFでは難しいってことはありますか?
漠然とした質問ですみません >>701
WindowsFormとWPFの比較なら例えばWPFにはNumericUpDownコントロールがないとか
とりあえず「wpf windows フォーム 違い」で検索してみては
もしくは具体的にやりたいことがあってどっちにしようかという話なら、やりたいことを書いて質問してもらうほうが早い >>701
MSですら使ってないしもうとっくの昔にオワコンしてるから今さらやる必要ない
あとクッソ重い 俺は一つのプログラム内でのモジュールの使い回しは無駄だと確信した
guiなんてアプリごと作り捨てろ
gui以外を使いまわすなら検討の余地はある その前におまえが初心者やと確信してほしかったわ
ええんやけどね別に >>701
WPFの基本の部分はc++あたりで作ったDLL クラス内の static メンバ変数の名称と値をすべて取得する方法はありますか?
public な変数ならリフレクションを使うと取れるのだけど、
クラスの中から実行するのでもよいので private や protected な変数もやってみたい。
ただ気になっただけなので、理由は問わないでください。 >>707
事実なんだよなあ
2012年の.NET4.5リリースを最後にほとんど機能追加されてないんだぞ
MS自身新規プロダクトには全く使ってなくて完全にレガシー扱い 2年ぐらい前だったと思うけど、WPFに事実上の死亡宣告が出たってちょっと話題になったことがあったね
もっとも5年前の時点ですでにこんな記事が書かれてる
https://www.infoq.com/jp/articles/Win8-LOB-Options >>710
あれ、使ってないんじゃなかったのかい? ただ単に客からの発注が無いだけであって
自作・社内ツールではかなり役に立つよ >>710
> 2012年の.NET4.5リリースを最後にほとんど機能追加されてないんだぞ
Formsもどっこいか、むしろ少ない位だろ >>714
それどういうネトウヨ脳?w
そういう敵味方二元論、頭悪いよ WPF死んでUWPも上手くいってないけど次の手がうまく打ててない
昔はCEOが技術を重視してトップダウンでいろんなものが決まったけど今は上が無能で
windowsに興味がないから放置されてる
win10モバイルが死んだ今モバイル向けAPIの開発も滞るだろうしどこにむかってんのかね >>709
ありがとう。
NonPublic に気がついてなかった。あとで試してみます。 >>716
の言うとおり
WPFは死んでるけど
UWP次世代クライアントとして代替となつまていない
win10対応では諦めてWPFで作るか、次のタイミング待ちな状況がこの数年続いてる デスクトップアプリは衰退する一方だからMSにとって投資する価値はない
この期に及んでいまだにWinデスクトップアプリに固執してるような連中が、
自分達が最近のMSに軽視されているからといってMacやChromebookに乗り換えるだろうか?
どう考えてもあり得ないだろ
唯一競合と言えるのはElectronくらいだけど、そこはMSの手ががっつり入って既にWindowsとの相性は完璧だ
今後の新規投資はAzureに全力投球だよ Azureが全盛になったとしてもMSの技術者はどんどんやめていくだろう
優秀で新しい技術にかかわりたい人は我先にやめていく >>709
いま試してみたら普通に取れた。ありがとう。
protected でもクラスの外から参照できたんだな。。 世界中の優秀な技術者が水道公社やガス会社に勤めたいとは思わないだろう
そこがビルゲイツの始めた双六の上がりだったらまあ本当に魅力のない話だ
最低最悪のゴール 新しい金の搾取方法が必要なんだよね
windows自体は95でほとんど完成していたな アンチっていうより「俺スゲー」の一種だねw
俺スゲー⇒俺がやってることスゲー
「俺スゲー」は劣等感の裏返しなのでそれは必ず何かに対する否定を伴う
まあ、こういう人に関しては川俣大先生の言う通り。
付け加えるとこれ、2chに多い「ネットde真実」の同類だと思って間違いないと思う ビルゲイツが語っていた未来がAzureというインフラ屋(水道屋、ガス屋、電力会社)を作るという話なら
多くの夢を持った技術者は集まらなかった
インフラ屋は最低限の教育水準があって賃金の安い国に移るだけだ
未来も最新技術も糞もない >>724
MSが土管屋になろうとしているのかというと明らかにNoだろうけど、
Amazon、MS、Googleのクラウドベンダートップ3の中ではMSが最も「単なる土管屋」に近いのは確かだね
AzureはWindowsサーバーのホスティングサービス以上の何者でもなく、それ以外の部分ははっきり言ってゴミ&クソ&カスである ゲイツはいま医療技術に夢中だ。
おまえらも人の役に立つことやれよな! なんでMSは莫大なリソースあるのにまともなwindows用のデスクトップMVCフレームワーク作らんの? 金にならないから
今のMSの金蔓はOfficeとAzure tabControlのページをクリック以外の方法で切り替えることはできますか?
変数を立ててswitch文でプロパティ替えればできると思ってたけど
tabpageプロパティは読み取り専用で設定できないのね WinFormの話ならSelectedIndexで変更する >>736
できました!
プロパティウインドに表示されないプロパティもあるんですね
インテリセンスの候補には出てくるけど見落としてました
ありがとうございました >>732
MVCとかしゃらくせえんだよ。
全部フォームモジュールに書けばいいの。 >>739
君の作ったAPに undo とredo の機能を追加してはくれまいか?
多分それが、Cの設計のきっかけになるかと undo、redoって普通にモデルの仕事でしょうw
モデルのクラスのコードをいじれない、とかの事情で別のクラスを使って機能を拡張するとしても、
それをコントローラと呼ぶのは違うんじゃないの? >>739
WebMVCじゃない本来のMVCにおけるCって、昔のSmallTalkのGUIフレームワークではWndProcみたいなことをする役割を担う層が必要で、それをコントローラと呼んでただけ
特定のフレームワークの技術的な制約のために必要だったもので、イベントハンドラでイベントを直接メソッドにディスパッチできるC#においては全く必要ないよ class MyForm : IMyView {
private ISomeService ss;
public MyForm(ISomeService ss) {
this.ss = ss;
}
private async void OnXxx(...) {
var p = GetSsParam();
var r = await ss.ExecAsync(p);
HandleSsResult(r);
}
もしかしてssのことをコントローラーと言いたいのではないか? >>739
mvcわからんくてもビューとロジックは分離しないとまずいってのはわかるでしょ
そのやり方の一つがmvc ジャパニーズドカタはテスト書かないから分からないよw つーか、画面は作り捨て上等
一昔前に流行った画面構成なんて臭くって使えない 歴史あるmfcのウンコドキュメントビューアーキテクチャと
なにが違うの? そもそもこれでもかってぐらいこびりついてるのになぜ切り離そうとするのか?
画面アプリとサーバー側で分けて画面アプリは作り直せよ 一時期strutsとかいうインチキくさいフレームワークがほんのりはやったが
いまはもう見る影もない どこの記事だか忘れたけどMVCに関して昔読んだので一つだけ説得力を感じたのは、
古いタイプのインストーラーみたいにウィザード形式のUIの画面遷移のためにはCが必要って内容
そこは確かに一理あると思った
ウィザード形式なんてそうそうあるUIとも思えんが >>757
それも「行きはよいよい帰りは怖い」だけどね
書いてる時はいいんだよ。
問題は後で見た時に、あるいは他人のコード見た時に
何やってるのか理解するのに無茶苦茶時間が掛かること
支持する奴の気がしれん MVCは近代的な開発環境を使っていれば自然と守られるから学習する必要ないよ
CにMを書いちゃうとか変なことをしない限り大丈夫だよ
対するMVVMは難しいね、かなり練習しないとただ3層に分けただけの偽MVVMになってしまう C#とあわせてDB勉強するならどれがいいですか?
やっぱり同じMS製のSQL Serverですか? >>761
どうせ Visual Studio 使うんだろ?
ならSQL Server LocalDB使うのがインストールも簡単だしVisual Studioから基本的な操作ができるから楽だよ >>758
実際にはめちゃくちゃわかりやすいけどな >>758
今時mvvmアンチとか新しいな
対案は? mvvmは状態がわからないと言うか再現できないことが多くて
従来型のmvvmはwebのあたりでは捨てられ始めてる DIコンテナ使い出すとwpf+mvvmから抜け出せなくなるな
もしかするとDIコンテナ知らずにmvvm批判しているんだろうか? >>769
再現ってVMのプロパティセットするだけだが? React & Fluxを使いだすとmvvmはもう戻れないと言ってるやつと同じレベルだな >>771
DIは関係なくね?
DIは特定のアプリケーションフレームワークに依存したものじゃない
コンソールでもFormsでも使えるよ アジャイルを知ったらもう他にはもどれない
TDDじゃない開発はIT土方だ
などとくだらないことをいうバカ信者は死ねばいい FBは一時期mvvmに傾倒してたけど大規模になってくるとなぜだか思ったように動かないことが多くなって
mvvm自体に弱点があることに気付いた
そしてmvvmを捨てることにした
中小規模ならmvvmはまだ使えるが大規模になると使えない
状態を追いきれない FBによるとmvvmでは大規模になると値が変わった場合どこでどうしたからその値が変わったのか説明できない
元をたどれないことが多くてバグをつぶしたと思ったら同じバグがまた出ることに悩まされていた
簡単にどこででも状態をいじれることが間違っていたと判断した MVCを知りたいという初心者に
MVVMの有能さを洗脳するスレなのか デザパタ語りたがり初心者が湧いてるのか
ママにでも教えてやれ ViewをViewModelの影に徹させて管理すべき状態数を明確化、最小化しようってアイデアがMVVMの基本
なのでその明確化、最小化された状態数すら追いきれないというならMVVMをやめた途端に余計に追いきれなくなるだけだ ID:9e4CRvDY
ID:jYUPCkq4
恥ずかしいやつら >>761
MSに生涯の忠誠を誓うんならSQL Serverでいいけど、そうでないならPostgresかMySQLがいいよ
SQL Serverって癖が強くて性能も低くてVSやWinとの相性を除けば正直ク○ いま、SQLiteのテーブルを編集するおもちゃを
CLRのwindowsフォームでC#でなく、あえてC++で作って遊んでみてる
書いてることはC#と当然ほぼ同じになる
SQLiteをODBC経由でアクセスするだけで
DataGridViewで簡単にDBの編集ができることが分かった
ただし、MSが提供してるコンポーネントを適切に使用する必要がある
DataAdapterでDataSetとって
DataSetからDataTableとって、そのDataTableをDataGridViewのDataSourceに設定する
※ どうやらSQLiteでは1つのテーブルのデータセットしかとれない模様
※ DataSetという意味ではこのDataSetは超無意味
で、DBの種類とか関係なく
C#で用意されてるコンポーネント経由でデータがとれるようにしないと
作るのが極端にめんどい
なにがいいたいかといえば
C#のおもちゃ部品使ってるくせに
MSがどうこういってることが的外れ
C#とMSのコンポーネント使ってる時点で、
どっぷりMSに浸かってる ないね
何でもそうだけどあるがまま理解するのが結局早い
たとえ話は理解の助けにならん
あえて言えばVMがMをVの都合に合わせる装置として機能する、って考えればトランスとか
でもトランスは一方通行だし、そもそもトランスが何か分かる奴も少ないよなw でも理解しなくていいと思うw
全然普及してないし、私見だけどMVVMなんて複雑な問題をより複雑な別の問題に置き換えるだけw 話し変わるけどちょっと聞きたいのだが
コミット前に全ソースコードをバッチ処理でフォーマットしたいのだが良いツール知らん?
Visual Studioでフォーマットできるけど、修正したいファイルを1こ1こ開いてフォーマットを実行しなきゃならんから、ちょっとしんどい
Visual Studioに依存せずにコマンドラインから使えることが必須条件 MVVMとかぜんぜん知らんが
DBMSでいえば、
ModelがテーブルでViewModelがビューテーブル程度のしょうもないもんにしか
パッと見た感じで、見えんかったわ
で、Viewがビューテーブルをひたすら参照 >>794
それがお前の限界だ
FBがMVCやMVVM捨てた理由とその後どうしたかを調べてから言え そうかそれは残念だ
ViewModelのbindなんかすでに決まった手続きのパラメータマッピングしてるだけのように
しかみえないしな
この部分はDBMSでいえばプリペアドステートメントに
パラメータをバインドする操作と似ているとは思った MVC
View ←(Update)← Controller ←(Notify)← Model
View →(User action)→ Controller →(Update)→ Model
カサカサ
三 三 /\彡⌒ ミ/\
三 三 /\(´・ω・`)/\
View ← ViewModel ←(Notify)← Model
View →(Bind)→ ViewModel →(Update)→ Model
ViewModel から View に一切作用しようとしない
ViewはViewModelにインターフェースの提供のみ
大雑把には
ModelのデータをViewが参照できるデータになるように
ViewModelがマッピングや加工して取ったり設定したりするインターフェースを
Viewに提供してるだけのようにしかオレには見えんかったわ
マジで >>798
整形できるツールはVisualstudioかVSCodeくらいしかないんだろう?
UWSCのような自動化ツール使うこと考えるのが一番早いんじゃないの
これ以上はVisualStudioかVSCodeのスレで聞いた方がいいかと >>805
レスありがとう
でも自己解決したからもういいや CLRのオブジェクトにPropertyGridというのがあるが
いま丁度それでDBMSの値を更新するおもちゃ作ろうとしてる
なんとなくコレに似てるのかなあとは思う
設定取得のプロパティーインターフェースをもったインスタンスを渡すだけで
そのインスタンスのインターフェース使って
プロパティー設定の画面インターフェースがPropertyGridに勝手にできあがってしまう
すげえと思ったが、なんとなくうさんくさい
どういう仕組みになってるのかはぜんぜん分からないが
そのデータの設定取得の仕方は実装する側でなんとでもできるのは分かる >>806
あのねえ
どうやって解決したか書くのが礼儀ってもんだろ きっとなちょろっと試しに検索したら↓コレが一発であったとしか考えられない
https://github.com/dotnet/codeformatter
ホントな質問するヤツも回答するヤツも無能揃いといっていい
回答するヤツもググレカスとすらいわないからな
回答するヤツも最初から回答できるレベルじゃない
むしろ回答しないほうがマシなレベルといっていい >>809
ん〜それも検討したけどVS/VSCodeの手動フォーマッティングと設定共有できないっぽいから見送った
>>808
とくにひねりもなくOmniSharpとビルドスクリプトを使うことにしたよ リファクタリングってやってる?
いつも気付くと似たような処理や非効率な処理が増えてて辛い……
凄腕のマなら最初から効率的なコード書けるんだろうけどさ…… 動いているコードに手をつけるリファクタリングは最悪。 でもでもっ!
ちょっと弄るだけで処理が効率よくなり、コードがリーダブルになり、exe(dll)のサイズも小さくなりますよ?
テスト前ならいいよね? >>811
世界的に有名な凄腕ですら最初から完璧は無理だからリファクタリングしろと口を揃えて言っている
程度が低いプログラマほどリファクタリングをしない >>813
だめや、くだらん時間つこてないでテストせえ >>814
実は有名な凄腕はリファクタリングなんかしていない。
あとから出てくる有能なやつをつぶす目的でリファクタリングなるものを生み出した。 >>811
私は時々やりますけどね
新しいネタ仕入れたときとか試してみたり
普段あまり先を考えずに逐次的な処理を思いつきで描くので
冗長になりがちだし
数年自分で使ってみると不必要な機能や処理が見えてきて
そいつをそぎ落としたりする 業務系はメンテを他社がやることが多い
なので競争相手の負担になるようにリファクタリングしていない汚いコードを納品したほうが資本主義的に正しい クローンコードは……無能の証……
細かく……機能毎に……クラス化……メソッド化せよ……
有能なマなら……30行程度までの……小さなメソッドが……いくつもできる……
当然……役割で機能クラス化し……マジックナンバーも使わない……
無能は……1クラスにメソッドを詰め込み……メソッドも100行を超えることがある……
クローンコードだらけで……おまけにマジックナンバーがあり……保守性が……非常に悪い…… 初心者相手だからこそ善導せねばならない。
リファクタリングとやらにうつつを抜かす暇があるなら目前のコードを正しく読む力を会得するべきである。 >>818
競合他社「ぷげらっwwwあの会社のマはこんなコードしか書けねぇ無能っすよ?www」
お客人「マジかよwww次からお前んとこにするわwww」 そもそも何を目的としてリファクタリングなんてするわけ?
次の開発は来ないかも知れないじゃない?
また、次の開発を目的とするなら仕様がわかってから手を出せばいい
全てにおいてトンチンカン >>820
普通この辺りってネットで調べたら一番に出てくるのに、なんで糞コード量産されちゃうんだろう・・・ >>826
調べないから。
基本他人のコードをコピーして今回の要件を満たすように
書き換える仕事。意味がわからないところとか
通らないロジックがあっても気にしない >>825
リファクタリングなんての持ちだして初心者を混乱させるガイジが多くて困るよ そういや、VSCodeのswitch文の変な整形って何時になったら直るんかねえ? else句を多く使うのは三流PG
一流のPGは極力else句を避けるものだ
else if なんてのは論外だ
returnせよ! >>823
競合他者「難しくメンテ出来ません(´;ω;`)納期間に合いません(´;ω;`)」
お客人「使えねえな。おまえんとこはもう二度と使わん(´;ω;`)」 >>824
開発、テスト、デバッグ、仕様変更対応をしやすくするためにやるんだとさ
確かに楽に安く高品質になるんだけど、ビジネス的にはコスト増やして請求も増やすほうが儲かるのにもったいないよね 「ガイジ」なんて汚い言葉を平気で使える奴って自分で自分がどんな人間か
語るに落ちてることも気づかないんだろうな >>832
こういう思考回路の人がマ板とかでブラック企業とか人買いとか吠えてるんだろうな。 キミたちc#で何作ってるの?
俺はFormアプリしか作ってない
Webアプリはrubyかphpで構築
Formアプリなんかクッソ時代遅れ感あるけど ガイジを連呼する差別主義者は自分が社会の最底辺だと気がついてないんだろうな
リアルな社会でもガイジ連呼して白い目でみられればいい >>811
完成までの間にいつもやってる。
とりあえず適当に動くモノを作ってみる → 自分の担当部分を見直して整理する
最初に動くモノが出来るまでが貰った期間の 1/4 〜 1/3 くらいの時点、あとは時間が許す限り(組み直して遊んでる)。
やってるうちに最初から(自分なりに)組み直しする必要のないコードが書けるようになってく。
でもそのときは自分の技量が上がってるから別のやり方を試したくなるので堂々巡り。
受け入れる側とすればコードのわかりやすさとか以前に試験しろよと思う。
なんでこっちがバグ出ししてやらなきゃならねーんだよ、と。 >>832
高品質って?
何を基準に?
同じ金使って次の改修が見えてから動いたほうが遥かに品質高くない? >>838
メトリクス計測すればコードの品質は一目瞭然だけどそういうことじゃなくて?
何を言いたいの? 複数の戻り値ほしいとき、タプルを使うべきか、refつけてメソッド内で対応しちゃうか皆さんどうしてます? >>839
メトリクス計測と売上に相関でもあるの? >>831
世知辛い世の中だな
俺なんてまとまった処理毎にコメントまで入れてんのに
やむを得ずダラダラ書くことになる時はリージョンで畳んだりとかもしてるのに >>843
タプルはイミュータブルなのがな・・・
クラス内ならプライベートクラスや無名クラスでやっちゃうかな イミュータブルのほうが良くない?
なんでc#は引数をfinalできないのか不思議なんだけど理由あるの? クリックした点から点まで連続線を引いてダブルクリックで連続線を終える。
これって難しいですか?参考サイトとかありませんか? >>850
ダブルクリックで最後の点+終了なら多分難しくない
MouseDownのイベントのe.Locationでコントロール上の座標を変数に格納する
前回の格納された座標があればそこから2点間の直線を描く
画像、印刷(GDI+)編メニュー https://dobon.net/vb/dotnet/graphics/index.html
線を描く https://dobon.net/vb/dotnet/graphics/drawline.html bool 編集モード =false;
bool 線を引いてるか =false;
Point 前のポイント =new Point();
こういうのを使っていけばいいんじゃないかな
クリックしたら
編集モードで線を引いてない(最初の点)なら点を表示
編集モードで線を引いてるなら前のポイントから今のクリック場所まで線を引く
ちゃんとやるならListに座標を記録 >>850
ヒマだったから書いてみた。ダブルクリックで画像初期化
//新しいWinフォームをDrawlinetestとして作ってForm1.csに以下の内容を差し替え
using System.Drawing;
using System.Windows.Forms;
namespace Drawlinetest
{
public partial class Form1 : Form
{
PictureBox pbox = new PictureBox();
Point pt = new Point(-1, -1);
public Form1()
{
InitializeComponent();
pbox.Location = new Point(0, 0); pbox.Size = new Size(500, 500);
this.Controls.Add(pbox); this.ClientSize = pbox.Size;
pbox.Image = new Bitmap(pbox.Width, pbox.Height);
pbox.MouseDown += MD;
}
private void MD(object sender, MouseEventArgs e)
{
Point p = e.Location;
if (e.Clicks > 1) { pbox.Image = new Bitmap(pbox.Width, pbox.Height); return; }//ダブルクリックで画像リセット
int x = pbox.Width - 1, y = pbox.Height - 1;
if (pt.X < 0 || pt.X > x || pt.Y < 0 || pt.Y > y) { pt = p; return; }
Graphics g = Graphics.FromImage(pbox.Image);
g.DrawLine(Pens.Black, pt.X, pt.Y, p.X, p.Y);
pbox.Refresh(); g.Dispose(); pt = p;
}
}
} この程度ならいいんじゃね
いちいちidone開くのもかったるいし 暇だから書いてみたけど何もおもろないなw
public class PolygonalLineEditor
{
private List<Point> mPoints = new List<Point>();
public Pen Pen { get; set; }
public bool Clolsed { get; private set; }
public Control TargetControl { get; private set; }
public PolygonalLineEditor(Control target)
{
TargetControl = target;
Pen = new Pen(Brushes.Black);
TargetControl.Paint += TargetControl_Paint;
TargetControl.MouseClick += TargetControl_MouseClick;
TargetControl.DoubleClick += TargetControl_DoubleClick;
}
private void TargetControl_MouseClick(object sender, MouseEventArgs e)
{
if (Clolsed) return;
mPoints.Add(e.Location);
TargetControl.Invalidate();
}
private void TargetControl_DoubleClick(object sender, EventArgs e)
{
if (mPoints.Count < 2) return;
Clolsed = true;
} private void TargetControl_Paint(object sender, PaintEventArgs e)
{
if (mPoints.Count < 2) return;
e.Graphics.DrawLines(Pen, mPoints.ToArray());
}
}
>>854
どうせこの手のコードはイデオンじゃ実行できないしねw スレと全然関係ないけど、今ふと思って検索してみたらIDEONEの読みがマジでイデオンだと
勘違いしてる人が結構おって笑ったw シンタックスハイライトとかの問題でいったんだけどまあいいや >>858
読み方はしらないが笑われて腹立ったので全方位にミサイルぶちまけてやる。 >>849
使ってるVSが古くてinが使えないの・・・orz >>858
IDE+ONEだとわかった上で読んでるに決まってるだろ まあ>>858がどんなところを検索して見て言ってるのかよくわからんけど、そう言う事をいちいち指摘して優越感に浸るちっちぇー奴だと言うことはわかった >>852
>>853
>>856
ありがとうございます。明日書いてみます。 文字数を正確にカウントしたい場合、文字コードも意識しないとだめでしょうか?
今まで気にしてなかったのですが、どうするのがベストなのでしょうか? 正確な文字数の定義によるのと違いますか?
何が正確な文字数なのかオープンにしたままどうするのがベストって言われても誰も答えられないと思う
「彳亍」とか「プ」とかを1とカウントしたいとか? >>873
目的次第
文字のレンダリングに使うのでない限り、多くの場合は普通にLengthを使ったほうがうまくいく 他の言語に比べるとc#スレはいつも人いるな。おかしいな。android開発っつたらjava,kotlinだしiosはswiftだし、サーバーサイドでも.netの存在感そこまである訳じゃないし。
これからwpfやuwpでデスクトップアプリ作ってやろうというやつ多いのか? それとも5chはおっさんが多いからおっさん世代ようはwindows パソコン世代が多くc#学んだ人多いからスレ賑わってるのか?
問題は新規ユーザーの質問する側が少なくて答える方が大量にいるというw スマホアプリでC#はunityいるんだから多いでしょ 趣味ならC#?
フォームアプリ簡単に作れるしIDEが最強だし 長い間VB6で開発していた連中がやっとこさ移る先としてはVB.netかc#が多いんじゃないかなと思う。
なので底辺が多い。俺は底辺だ。 >>883
IDEのインストールが簡単ってのも大きいと思う スレ違いだと釘を刺しつつ乗っかるけど、今この板で一番勢いがあるのは何とExcel VBAのスレ。
別に茶化すつもりでもなんでもなく、ちょっと前にそのスレで「驚いた」って素直な感想を書いたら
被害妄想全開で食って掛かってくる奴が大勢いて面食らったw RADによるformアプリケーション作成
これが便利すぎるからC#が使われているんだろ RADってなんだよ
おまえそれが言いたかっただけだろ オレのバイトしてる工場のタッチパネルの中のソフトのアイコンもフォームアプリのやつだな >>889
Rapid Application Development 日本語めちゃ使ってる。
日本特有の物事を扱うにあたって無理に英訳しても幸せがない。 ウォーターフォールって否定されるようになったよな
前は大正義くらいの勢いだったのに 米国では内製が基本だから、見積り工数を大きくオーバーしても少々不具合出しても自己責任なので問題ない
そのため厳格なウォーターフォールに拘る必要がなく、決まった枠で確実に作り上げるよりもデリバリーの早さを重視する開発プロセスに移行している
一方ジャップアイランドではいまだに受託開発が中心だからウォーターフォール脱却は不可能よ
「工数枠内でベストを尽くしますが、完成は保証しません」
君が客ならこんなこと抜かすベンダーに仕事任せられるかな? >>895
そっか、使えるんだな
でも怒られそう… お前が権力を握れば怒られない
(ただし裏でクソクソ言われるだろうけど) 全く不具合が発生せず、何かあっても全部自己解決出来るのなら怒られない 日本語識別子、自分が使って書くのは嫌だけど人が書いたのを読むのは全然問題ないよ。
入力しづらいだけで読みづらいわけじゃないから
ただ英語でちゃんとした命名ができない人は日本語能力にもちょっと不安を感じるねw MVCがわかりません
どのサイト見ても概念とか考え方しか書いてない
一般的なWEB構成でいう
M=Webアプリ(サーバー)
V=html+CSS(ブラウザ)
C=Javascript(ブラウザ)
役割はこういうイメージであってますか? もともとボヤっとしたもんやからなんでもええねんMVCて そうなんですか
C#でフレームワークはMVCを使用するって言ってるとこあるけど
これはASPのMVCを使うよって事なのかな Mは処理
Vは見える化
Cは押したボタンからどんなMをするか振り分けること >>910
そうなると>>907のイメージであってますよね? >>907
仮にそうだったとしてそれに当てはめて何か使いたい式があるのかい? 設計モデルのこと聞くのにこのスレで引っ張られてもgdgdにしかならないと思うな >>909
WPFを使うよって可能性もあるのでは? MVC は、Rails が基本。
これをやっていないと、理解できないだろう
各フレームワークの本は、以下に書いてある
Ruby 初心者スレッド Part 64
https://mevius.5ch.net/test/read.cgi/tech/1535797516/267 そもそもMVCってのがかなり大きな概念だからな
ただ、文脈によっては特定のフレームワーク指してたりすることもあるけど
発祥はSmalltalkだったと思うけど、Railsが基本とかやってないと理解できないとかもうね
最近はRubyも必死に普及活動しないとだめなのかね フレームワークを流行らせたのは、Rails
だから、それ以降のフレームワークは、すべて影響を受けている >>918
いやもっと前だな。
WordStar とか WordMasterは既にその概念で実装されている ASP.NETのWebAPIでセッションって使えますか?
使えないとしたら、RESTfullで認証はどうやるのでしょうか? >>923
そもそもセッションと認証は別の概念なんだが
認証はRESTったって単にHTTPなんだから、基本認証でも何でもいいだろ
RESTfulでセッションってなら設計が間違ってる気がするけど、普通にASP.NETのセッション使えたはず >>924
>>925
>>927
>>930
ありがとうございます
それらのキーワードについて調べます >>876
横レスだけどこれ勉強になった。ありがとう
ただそこの例だとConsole.WriteLineで"\uD842\uDF9F"が表示できないのと
「叱る」をそのままコピペして入力してしまうとサロゲートペア扱いにならずどちらも2文字になってしまう
他で見た「ほっけ」の漢字(魚偏に花。ここでは表示されない)を使ってフォームのTextboxで確認できた あれ?書けるじゃん
コード書いて質問しようとしたんだが
サーバーが受け付けないとか?設定変わったとか? >>1「コードを貼る場合は」参照
関係ないかもしれんが、前も何かの記号、確かバックスラッシュ(\)が書けなくなったことがあった コードを書くような真面目な内容ならteratailやstackoverflowでやる
そうじゃないなら5ch 以前は書けたんだけどなあ?
言葉で説明するのが面倒だからコード書きたかったんだけど
書けないならまあいいや
もう少し自力で調べる 5chに書くなら文字数が多すぎると書き込めないんじゃなかったか C#でshortの配列をushortの配列として扱うにはどうしたらいいのでしょう?
ushortの配列を確保してそこにブロックコピーすればいいのですが、コピーせずに扱いたいです
Cでの例
short data[1000];
data[0] = -3;
ushort out = ((ushort*)data)[0] >>946
C#でも共用体は作れるので、それでやるのが正攻法だろうね >>946
ポインタ使うかSpan<>使う
いずれにせよunsafeは避けられない ありがとう
short[] data = new short[1000];
data[0] = -3;
data[1] = -5;
ushort out1;
ushort out2;
unsafe
{
fixed (short* p = data)
{
out1 = *(ushort*)&p[0];
out2 = *(ushort*)&p[1];
}
} >>949
fixedブロックの中は
ushort* p2 = ( ushort * )p;
out1 = p2[ 0 ];
out2 = p2[ 1 ];
の方が完結。
その使い方ならunsafe使わずキャストするだけで良い気がするけど
ushort out1 = (ushort)data[0];
ushort out2 = (ushort)data[1]; 初心者な質問で申し訳ありませんが
if 〜else if〜で50個くらい分岐作りたいんだけど
これは上に書いたのから順に条件判別するんですかね?
てことは出現確率の高い条件から順に上から書いていけば
全体に早いシステムができるってことですかね?
それはswitch 〜case〜でも同じですか? >>951
そうだけど、そんなので速度は稼げない
素直なメンテしやすいコードにしておかないと結局バグってて遅いゴミシステムが出来上がるぞ 読みやすさとかそういう問題ではない
断言するが、お前のプログラムのボトルネックはそんなところにはない
そういうくだらないことに時間を無駄に使ってると、バグ潰しをしたり本当のボトルネックを見つけて改善したりする暇がなくなり、
結果的にバグだらけでゲロ遅く使い物にならない糞が出来上がる >>951
もちろんそうだよ
ついでに言えば、else ifは使わずifとreturnをうまく組み合わせて使うと更に早いんじゃないかな >>951
判定する条件式の中にすごく重い関数の戻り値があるなら極力避けた方が速くはなるが。。。
ここの諸兄たちが言うようにあんまり気にしない方がよかとね 50分岐なのか単に一か所に50ifが並ぶのか分からないけど、
どっちにしろまず設計がおかしいことを疑うレベルだねw
それが必要になるケースは絶対にありえないとまでは断定できないけど、
普通に考えれば何か間違ってる 文字の判定やらデコードやら色々あるから別におかしくはないんじゃない >>951
switchでcaseがすべて数値か文字列の定数ならif〜else if相当ではなくてジャンプテーブルに変換されて最適化される >>958
そんなん一気にif文で判別するのおかしいよ
個々の判定を別メソッドに切り出すべき >>960
んで呼んだら50行並ぶんですね
わかります >>957
コンパイラ作った時にあったよ
普通に素で解析するときはそうなる リッチ―の作ったCコンパイラもずらっとswitchの下にcaseが並んでる
しかもgotoだらけ ふと思ったが、ifやswitchよりデリゲートの配列で組んだ場合、可読性は別としてどんなもん? ん、951は通信電文の解析処理を組もうとしてるのかな? >>964
単純な数値による分岐なら50くらいだとif並べたほうが速いだろうな いやいや、ビルドした時点で単なる条件分岐文の羅列に変換されるんだから
早いも遅いも無い 今試してみたけど条件の羅列にはならなかったよ
ただ実験は同じ関数を大量に登録するだけだけど、実際に使うにはデリゲート配列に関数を登録する所がめちゃくちゃになりそうだ ライブラリ制作でもなきゃ
ILコードの速度より可読性優先でしょ
最近は性能がトレンドだけだも VisualStudio2017とC#でDLLとEXEのプロジェクトを含んだソリューションを構成しているのですが、
EXEのプロジェクトはブレイクポイントで止まるのにDLL側のプロジェクトはブレイクポイントを設定しても止まりません。
どうすれば止まるように設定することができるのでしょうか? >>974
事故解決。
DDLの参照設定に誤りがありました。
無事ブレイクポイントで止まりました。 >>975
質問したならせめてどう設定したのか書いてくれると助かる プロジェクトじゃなくてアセンブリを直接参照したんだと思うよ 正規表現で、特定の変数に格納された文字列が行頭に含まれるときにマッチさせたいのですが
変数にメタ文字が含まれているとそのままメタ文字として機能してしまいます。
\Q〜\Eを使おうとすると認識されないエスケープシーケンスと出てしまうのですが
呼び出した変数をエスケープする方法はありませんか?
string tag = "."; //この変数はユーザー入力により可変させたい
Regex r = new Regex("^"+ tag, RegexOptions.Multiline);
MatchCollection mc = r.Matches(text, 0); 何を言ってるのjかさっぱりわからないけど
\のエスケープは\\だよ >>979
「.」が代入された変数をマッチ条件として呼び出したときに
「\.」として読ませたいんです…… 説明下手ですみません やっぱり意味がわからないよ
string.Replace 行頭マッチならstring.StartWith() >>983
これでした! ありがとうございます!
Regex r = new Regex("^"+ Regex.Escape(tag), RegexOptions.Multiline);
でいけました >>980
次スレ立てて
立てられないならそう書いて あっ980踏んだの気付いてませんでした
立ててきます >>986
恥ずかしい奴ってことで晒されてるんだぞ アプリで使用する最大スレッド数ってどう決めるのがいいですか? >>992
動作環境に配慮する
動作スレッド占有したら迷惑かもと思ったら少なくする 単純にCPUのスレッド数を最大に設定しておけばいいですか?
それともCPUのスレッド数-1とかの方がいいのでしょうか?
なんか決め方に基準とか規則とかって考え方あったら教えてください >>993
そうそう今まではこのように
少し曖昧な形で決めてたのでなんか明確なやり方あったらなあと思って
書き込んでみました >>994
無いよそんなもの
仕事でやっているのなら会社の先輩なりクライアントに聞いて >>996
無いっていうのはどんな設定しても
結局スレッドのコントロールはOSレベルでされるし
アプリケーションの処理内容次第で占有率とかが違うからってことですか? tiffのヘッダ情報を参照する方法ってどのようにすれば良いのでしょうか
画像読み込みは見つかるのだけどヘッダ情報参照方法が見つからず System.Drawing.Bitmapに読み込んでPropertyItemsから取得する 全部取れるわけではない
System.Windows.Media.Imaging.BitmapMetadataを使う 大体取れるはず
ヘッダだけ読んで画像データは読み込みたくない!ってなら標準ライブラリには存在しないな このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 60日 1時間 12分 0秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。