ふらっと C#,C♯,C#(初心者用) Part141

レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
垢版 |
2018/12/15(土) 10:46:07.45ID:Wu4Fx0bU
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
2018/12/15(土) 10:48:30.68ID:Wu4Fx0bU
■前スレ
ふらっと C#,C♯,C#(初心者用) Part140
http://mevius.5ch.net/test/read.cgi/tech/1538646998/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
2018/12/15(土) 10:53:31.45ID:Wu4Fx0bU
C# のガイド
https://docs.microsoft.com/ja-jp/dotnet/csharp/index

Microsoft Docs
https://docs.microsoft.com/en-us/

.NET Documentation
https://docs.microsoft.com/en-us/dotnet/
https://referencesource.microsoft.com/

テンプレート以上
2018/12/15(土) 11:10:32.00ID:o4PwGoKi
本スレ(ワッチョイあり)誘導

ふらっと C#,C♯,C#(初心者用) Part141
https://mevius.5ch.net/test/read.cgi/tech/1544839627/
5デフォルトの名無しさん
垢版 |
2019/03/07(木) 18:11:07.25ID:/Jh0neEY
ピクチャーボックスにallowdropはありましたか?
フォームのプロパティからはみつかりません。

ピクチャーボックスからピクチャーボックスに画像を移動させるプログラを作りたいのですが、参考ページはありますか?ピクチャーボックス以外での解説はあるようです。
2019/03/07(木) 18:38:24.06ID:Lh0uMM6Z
>>5
「フォームのプロパティ」じゃなく「PictureBoxのプロパティ」じゃないのか
もしデザイナの一覧に表示されていなくてもどっちにもAllowDropのプロパティはある
ピクチャーボックスからピクチャーボックスに画像を移動させるのはImageプロパティをそのまま代入するだけ
7デフォルトの名無しさん
垢版 |
2019/03/08(金) 11:59:10.38ID:dOPZ4GNG
↑回答ありがとうございます
allowdropはコード上にしかないみたいですね
gui上からは設定項目が見つからないです
8デフォルトの名無しさん
垢版 |
2019/03/08(金) 16:51:25.14ID:RT9HCx1Y
グローバル変数の定義にvarを使おうとしたらだめだって言われたんだけど、これってなんで使えないようになってるの?
ローカル変数なら良くてグローバル変数ならだめとか意味が分からん
9デフォルトの名無しさん
垢版 |
2019/03/08(金) 17:17:51.69ID:dOPZ4GNG
private void pictureBox_main_of_form1_DragEnter(object sender, DragEventArgs e)
{
AllowDrop = true;
MessageBox.Show("ドラッグエンター");
}

ドラッグの許可ですが、これだけではドラッグできないです
メッセージのイベントが発生しないのですが、どこがわるいのでしょうか?
ドラッグエンターというのは領域内にドラッグされたら発生するイベントかと思います
2019/03/08(金) 17:25:49.29ID:KslHfI7m
>>9
AllowDrop = true;はthis.AllowDrop = true;と同じ。つまりフォームのAllowDrop = true;の設定
それ以前にpictureBoxのドロップイベントでpictureBox.AllowDrop = trueにしようとしているみたいだけど無意味
コントロールの設定はどこでやるべきかわからない?もう少し考えてから質問するようにしないと
11デフォルトの名無しさん
垢版 |
2019/03/08(金) 17:25:58.73ID:dOPZ4GNG
どうやらピクチャーボックスの許可の問題のようです
panelなら問題なくメッセージが出ます
そちらについて調べてみます
12デフォルトの名無しさん
垢版 |
2019/03/08(金) 17:27:22.36ID:dOPZ4GNG
>>10
pictureboxはドロップを許可できないということですか?
2019/03/08(金) 17:34:42.50ID:KslHfI7m
クラスのコンストラクタ、プロパティなど勉強して出直してきなさい
14デフォルトの名無しさん
垢版 |
2019/03/08(金) 17:43:07.32ID:dOPZ4GNG
はい
2019/03/08(金) 21:09:46.20ID:unDD4xx5
ドラッグドロップって面倒臭いな。糞サンプル書いてみた

public Form1()
{
  InitializeComponent();
  listBox1.Items.AddRange(GetWebColors().Cast<object>().ToArray());
  pictureBox1.AllowDrop = true;
}

private Color? mDataToDrop;

static IEnumerable<Color> GetWebColors()
{
  foreach (PropertyInfo info in typeof(Color).GetProperties(BindingFlags.Public | BindingFlags.Static))
    yield return (Color)info.GetValue(null, null);
}

private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
  if (e.Button != MouseButtons.Left) return;
  var index = listBox1.IndexFromPoint(e.Location);
  if (index < 0) return;
  mDataToDrop = (Color)listBox1.Items[index];
}
2019/03/08(金) 21:10:55.42ID:unDD4xx5
private void listBox1_MouseMove(object sender, MouseEventArgs e)
{
  if (!e.Button.HasFlag(MouseButtons.Left)) mDataToDrop = null;
  if (mDataToDrop != null)
    listBox1.DoDragDrop(mDataToDrop, DragDropEffects.All);
}

private void pictureBox1_DragDrop(object sender, DragEventArgs e)
{
  var color = e.Data.GetData(typeof(Color)) as Color?;
  if (color != null) pictureBox1.BackColor = color.Value;
}

private void pictureBox1_DragOver(object sender, DragEventArgs e)
{
  e.Effect = DragDropEffects.Copy;
}
2019/03/08(金) 21:13:48.36ID:unDD4xx5
>>15を書いてて疑問に思ったんだが、ListBoxってマウスがキャプチャーされないのか?
ListBoxのクライアント領域の外でマウスのボタンを離してもMouseUpが発生しないけど何なのこれ。
変だよね?
2019/03/08(金) 21:45:39.00ID:S6VEx3Fw
>>5
答えそのものをあげる
https://ideone.com/p9Hui9
Windowsフォームアプリケーションを作る
ソリューションエクスプローラーからForm1.csとProgram.csを削除する
ソリューションエクスプローラーのプロジェクトで追加->既存の項目でダウンロードしたcsファイルを追加する
ビルドして完成
左のボックスにはエクスプローラーから画像をドロップできる
右のボックスは左のボックスからドロップできる
2019/03/09(土) 01:21:53.28ID:RHbC4qfa
>>15
ごめんこれ思いっきり変なことやってるわ。

DoDragDropはMouseDownで一度だけ呼べばいい。
フィールド(mDataToDrop)なんか作る必要なかった。
2019/03/09(土) 01:38:55.18ID:cfwlR9A2
ReadLineとParseはどういう違いがあるのでしょうか?
どちらも入力を行うための物みたいですが違いが分かりません。

https://ufcpp.net/study/csharp/st_consoleio.htmlを見ながらやってます
2019/03/09(土) 01:56:17.70ID:N1XPQc7R
1+1は2になるのに1×1はなんで1なんですか違いがわかりません、みたいな質問だ
2019/03/09(土) 02:36:17.53ID:FZa5GqcE
>>20
Console.ReadLine()はコンソールから文字列を取得(入力)
int.Parse()/double.Parse()は文字列をint型/double型に変換する
2019/03/09(土) 02:58:14.98ID:cfwlR9A2
>>22
charもReadLineですかね?
分かりました。ありがとうございます
24デフォルトの名無しさん
垢版 |
2019/03/10(日) 05:02:53.58ID:enIE2ATr
form1.csというファイル自体はクラスとは言わないのでしょうか?
2019/03/10(日) 08:00:13.99ID:xzUDrYOg
いわない
26デフォルトの名無しさん
垢版 |
2019/03/10(日) 08:48:37.14ID:enIE2ATr
↑ありがとぅございます
27デフォルトの名無しさん
垢版 |
2019/03/10(日) 08:49:07.21ID:enIE2ATr
ドラッグイベントについてなんですが、やり方としてはマウスの位置にコントロールを移動させると考えて良いでしょうか?
2019/03/10(日) 09:47:12.78ID:MYQ0O9oy
>>24
「クラスが何か」って説明は自分が>>20で書いたサイトを読み進めれば書いてあるのにまだ読んでないの?
https://ufcpp.net/study/csharp/oo_class.html
>>27
>15-16,18のどこに「マウスの位置にコントロールを移動」している部分がある?
マウス止めてそこにコントロール持ってくることがまずおかしいでしょ
>16はlistBox1.DoDragDrop(mDataToDrop, DragDropEffects.All);
>18はpictureBox1.DoDragDrop(dataObj, DragDropEffects.Copy);
のそれぞれが「ドラッグドロップを開始(DoDragDrop)」
そしてDragDropイベントでコントロールに対する「ドラッグドロップを受ける」動作になっている
2019/03/10(日) 12:28:17.59ID:Gkjt178x
.Net Frameworkの標準クラスライブラリにある全インターフェースの機能見たいんだけど
MSDNしかない?
2019/03/10(日) 12:30:03.47ID:Gkjt178x
IEnumerable<T>
ICollection<T>
IList<T>

これって分けてる意味あるの?全部IListでよくない?
2019/03/10(日) 12:39:21.20ID:/0JR1y5c
>>30
使う側目線に立てばね。「大は小を兼ねる」
実装する側に立てば違うでしょ。

Enumerable<T> がなければイテレーターも存在できない。
>>15に書いた↓みたいな奴ね
static IEnumerable<Color> GetWebColors()
{
  foreach (PropertyInfo info in typeof(Color).GetProperties(BindingFlags.Public | BindingFlags.Static))
    yield return (Color)info.GetValue(null, null);
}
2019/03/10(日) 12:41:31.02ID:/0JR1y5c
LINQみたいな(値の集合ではなく)シーケンスとして扱うライブラリも存在できなくなるね
2019/03/10(日) 12:44:15.26ID:w/W9tZbl
使う側からしても大は小を兼ねるは無い。
いざメソッドを使ってみたら、NotSupportedException例外が飛んでくるとか嫌でしょ。
2019/03/10(日) 12:53:53.37ID:Gkjt178x
IList使ったからって容量が膨大になるわけじゃないでしょ?
謎すぎる
2019/03/10(日) 12:55:34.57ID:Gkjt178x
機能の意義の話か
列挙して読み取りするだけの機能なのに
AddやRemove機能ついてるのもおかしいよねって話か
2019/03/10(日) 13:39:12.23ID:Bl+LQorv
IEnumerable 読み取り専用、前方走査可能
ICollection 読み書き可能、集合全般(順序有り集合、順序無し集合など集合のスーパーセット)
IList 読み書き可能、順序有り集合、ランダムアクセス可能(実装上ランダムアクセスを装っているだけのものもあるが)

それぞれ特性が全く異なるので使い分けが必要です
37デフォルトの名無しさん
垢版 |
2019/03/10(日) 15:23:21.02ID:edisDenU
そういや、インターフェイスの使い方が全く身につかん
DI等でインターフェイスを使うことが強制される場面を除いては使ったこともない・・・・
どうすればまともなコードを書けるように練習できるん?
2019/03/10(日) 15:27:43.76ID:Qg4Urcrv
>>37
うまい人の真似をする
2019/03/10(日) 16:21:58.08ID:Bl+LQorv
>>37
SOLIDの原則を忠実に守ること
40デフォルトの名無しさん
垢版 |
2019/03/10(日) 18:13:18.92ID:edisDenU
>>38-39
ありがとう
SOLIDの原則を大雑把に見てきたんで、守れるように努力するよ
2019/03/10(日) 18:57:05.34ID:km5dayCM
異なるクラスなんだけど、List〈インターフェース〉とかにして、foreach回したり出来るのがうれしいってことでおけ?
2019/03/10(日) 23:29:01.92ID:km5dayCM
WPF覚えると何か嬉しい事ありますか?フォームとの違いが知りたい。
2019/03/11(月) 01:11:20.16ID:Igp7kTHu
>>42
MVVMという概念を知ることができる
2019/03/11(月) 18:06:04.14ID:5tiLwPRT
IEの自動操縦には大分慣れてきました。
そこで今回、

MicrosoftEdgeを自動操縦したいと思います。

この方法を解説している良いブログなどありませんか?
2019/03/11(月) 18:31:16.05ID:S3Rt/8QB
>>42
名前を付けなくても良いパターンとか
46デフォルトの名無しさん
垢版 |
2019/03/11(月) 23:09:01.60ID:5DvwA+Xd
>>42
Bindingが強力。
GUIデザインが(良くも悪くも)自由。
高DPI対応が簡単。(ほとんど何もしなくていい)
2019/03/12(火) 08:00:12.93ID:oX4bYoPv
>>44
Ruby で、Selenium WebDriver で、ブラウザを自動操作してるけど、

Chrome, Edge のどちらでも動く
2019/03/12(火) 19:24:44.44ID:jjO1F8u1
>>47
C#になれてるので
できればC#で操作したいです。

C#でEdgeを操作できますか?
2019/03/12(火) 19:25:44.20ID:jjO1F8u1
C#でもできるみたい

https://qiita.com/whoshino/items/603d92f0560276558188
2019/03/12(火) 19:27:41.38ID:gTDSlBH3
>>48
はじめての C# からの Selenium
https://devadjust.exblog.jp/27257580/
ググればほかにもある
2019/03/12(火) 21:04:22.37ID:t9nw0tv2
pythonとかのコードコピーしてもエラーになるからな。
若干メソッドが違う。その辺の勘所あれば大丈夫。
2019/03/13(水) 10:40:43.08ID:aEeMgLuC
>>50
ほんまやね。

久々にC#のWindowsFormを使ってるんですが
右上の「×」ボタンをなくすにはどうすればよいですか?

自前で「閉じる」ボタンを用意しているので
邪魔なので消し去りたいのです。
2019/03/13(水) 11:40:37.06ID:y4WTTUAI
ControlBoxをfalseにすれば最大化最小化ボタンとともに消せる
単独で消す方法は特にない
2019/03/13(水) 12:10:14.62ID:aEeMgLuC
>>53
サンクス
2019/03/13(水) 12:41:50.39ID:aEeMgLuC
サイトに自動ログインしたいのですが
ID/PASSの自動入力、ログインボタンのクリックはできました。

しかし、Googleの認証エリア(私はロボットではありません。 reCAPTCHA)へのチェックを
どうしても入れられません。


iFrameを使っているみたいなのですが、
こういう場合ってIEの自動操縦で操作する事は無理でしょうか?

自動ログインをして手間を省きたいのです。
2019/03/13(水) 14:12:54.35ID:oz2fTnLu
>>55
AIの出番
2019/03/13(水) 15:29:39.84ID:J7uH1zio
まぁそういう自動ログインを防ぐための仕組みだしなぁ
googleと勝負するかそのサービス提供者にrecaptcha外してもらうかくらいじゃない?
2019/03/13(水) 18:14:15.39ID:aEeMgLuC
>>56 >>57

ID/PASSを入力してからTABキーを押すとiFrameの中の
チェックボックスにフォーカスが入るみたいです。
もしかして突破できる!!??

C# + Windows APIで
TABキーを送ってチェックボックスのクリックって
どうかけばいいですかね?
2019/03/13(水) 18:40:07.18ID:J7uH1zio
>>58
キーが送れるなら普通はspaceでチェックボックスonできるけどrecaptchaを突破できるかはしらん
2019/03/13(水) 18:59:57.06ID:aEeMgLuC
>>59
サンクス
TAB+spaceキーのsendで試してみます。
自動ログインするとだいぶん手間がはぶける
2019/03/13(水) 23:11:05.05ID:K5xsHdh9
自動ログインしてるとロボット判定くらって
パズルやる羽目になるんじゃないかな。
2019/03/14(木) 01:36:16.07ID:SO0caDlp
>>61
パズルは目視でやるつもり
さすがに画像認証は無理だわ。
2019/03/14(木) 17:17:00.07ID:SO0caDlp
Navigate と Navigate2の違いは何ですか?
サイトによって前者だったり後者だったりします。
2019/03/15(金) 09:02:12.36ID:ECrabEC5
https://docs.microsoft.com/en-us/previous-versions/aa752134
IWebBrowser2::Navigate2のことなら
> This method extends the IWebBrowser2::Navigate method to allow for Shell integration;
> however, this method does not make IWebBrowser2::Navigate obsolete.
> The original method can still be used for URL navigations.
2019/03/15(金) 09:03:53.21ID:ECrabEC5
あ、docsってURLの末尾の括弧抜くとリンクできないのか…?
https://docs.microsoft.com/en-us/previous-versions/aa752134%28v%3dvs.85%29
2019/03/15(金) 09:46:32.60ID:EAyT7KDv
↑そんなページあったんや。
サンクス
67デフォルトの名無しさん
垢版 |
2019/03/15(金) 15:32:11.15ID:4iy7KMFj
「実戦で役立つ C#プログラミングのイディオム/定石&パターン」っていう本が気になるんですが、これってSOLIDの原則みたいなものが解説されてる本なんですか?
https://www.amazon.co.jp/dp/4774187585
本の題名から、デザインパターンの本っぽく見えるものの、見方を変えればただの逆引き系テクニック本っぽくも見えて判別が付きません・・・・
持ってる人いたら教えて!
68デフォルトの名無しさん
垢版 |
2019/03/15(金) 15:42:07.07ID:SEjqglYP
ときどき話題になるけど
初心者用
プログラマーなら大半が無駄
2019/03/15(金) 17:53:39.10ID:FRygED1T
>>67
Microsoftが出してる参考書がいい勉強になると思う
タイトルは忘れたけど黒い表紙のやつ
70デフォルトの名無しさん
垢版 |
2019/03/15(金) 18:57:25.93ID:4iy7KMFj
これかあ・・・なんと540ページ・・・・やっぱりこれ級の本が必要なの?
https://www.amazon.co.jp/dp/4822253546
本当はレジュメ10枚とかそんな簡単なのが欲しいんだけどそういう傾向のはないのかな
2019/03/15(金) 20:16:15.98ID:c5iTEfMf
「自分用に要約したまとめが欲しい」ってC#の自由度だと無理
ネットで公開されているオープンソースのもの読んで勉強したら本買うことも無い
2019/03/15(金) 21:42:32.93ID:YxtrToe/
>>67
良本だけど、デザパタは解説してないかな。
コーディングの定石を紹介してる感じ。
2019/03/16(土) 11:34:56.31ID:DBWOZzSE
今更の質問ですが
ブラウザの自動操縦はC#で行ってました。

VBAで自動ログインだったりスクレイピングもできますか???
だとするとC#で抽出してExcelに転記する必要なかったなぁ〜〜〜
2019/03/16(土) 15:22:00.40ID:rerYIj+i
>>73
できますよ
ぐぐればたくさん出てきます
自分も最近会社のPCに仕込んでます
2019/03/16(土) 21:28:06.14ID:DBWOZzSE
>>74
ありがとうございます。
VBAでIE操作する事にします。
最初からこっちにしとけばよかったかな〜〜〜〜
76デフォルトの名無しさん
垢版 |
2019/03/18(月) 03:01:47.93ID:Orngtrfp
>>70
レビュー全然無いやん
2019/03/18(月) 17:41:01.21ID:oR4heX+u
便利なツールを作りました。
しかし、悪い奴がそれをコピーして複数端末で使われると困ります。

そこでアドビ製品の様なライセンス制御の仕組みを取り入れたいのですが
何か参考になるサイトはありますか?


不正利用防止対策としてユーザに一意のキーを埋め込んで
アプリの起動時にWEBサーバにその情報を送って突合させようかと思っています。

何かもっとスマートなやり方をご存知の方はいませんか?
2019/03/18(月) 17:44:06.83ID:pLo5oLE9
C#で作っていたらアクチだろうが何だろうがILSPYあたりで逆アセンブルされるから無駄
アクチ部分抜いてビルドしなおせば終わる
2019/03/18(月) 17:54:42.57ID:4bO+uLM3
https://www.flexera.jp/enterprise/products/software-license-management/
2019/03/19(火) 22:47:35.46ID:lhNrB1l4
>>78
うーん、、、やっぱりそうかー
そもそもそーいう事できる人間は
ソフト自体を自分で作れるから
いちいちやるかな〜というパラドックス

100人いたら3人位がそーいう悪い事するかな
2019/03/19(火) 22:54:33.28ID:qnLJux/M
ドングル使う手もあるよね。
まあそんなケツの穴の小さいこと考えないのが一番簡単ではある
2019/03/19(火) 23:09:05.45ID:lhNrB1l4
↑はじめてきいたわ

そんなのあったんだ。

うーんまいったなー
一定の割合で犯罪者がいるから悩む
2019/03/20(水) 00:39:48.00ID:v7tyiNru
web認証プラス重要なメソッドをwebapi化すれば本体リコンパイルされても再現不可能だな。
2019/03/20(水) 09:40:49.70ID:4fAbiRjS
>>83
どうしてもクライアントじゃないとごにょごにょできない処理なんですよ
犯罪者の違法コピー使用はあきらめるしかないかな
2019/03/20(水) 12:49:53.54ID:ymiEsgRk
ここで聞くような人のものをそんな手間かけて使うのかって話
2019/03/20(水) 13:05:24.17ID:/jX7WF9n
対応する工数とそれで得られる利益が見合うならやればいい
adobe製品とかならまだしも見合うことなんてまず無いから
不正利用者はセキュリティしっかりしてたらそもそも利用しないから対応しても利益にはならない
2019/03/20(水) 13:15:41.54ID:ZZcTomnN
簡単な認証かけておけばカジュアルコピーは防げる。
リバースエンジニアリングまでするようなのは少数なはずだから、無視するのが現実的。
ガチでやるならドングル。面倒臭いから正規利用者からも嫌われるけど。
2019/03/20(水) 13:47:25.53ID:4fAbiRjS
>>86 >>87
うーん、一部の犯罪者はスルーして
カジュアルライセンス制御しまう。

起動時と処理部分でWEBサーバに通信して認証チェックします。
アプリ内に一意な識別キーを入れておいて
AがBにコピーを渡した場合
異なるIPでAとBから同一キーがWEBサーバに送られるからそいつは不正利用
という判断でいこうかと思います。

逆アセンブルするヤツはそもそも自分で作れるだるから
いちいちコピーして使わないかな。
2019/03/20(水) 14:08:39.22ID:/jX7WF9n
どういうアプリかしらんけどIPみたいコロコロ変わるもんを認証に使って大丈夫なの?
macアドレスとか取ればいいんでね?
偽装は簡単にできるけどそういうのはスルーするんだろうし
とはいえ購入者が別端末使ったりPC買い換えるだけで不正利用扱いされることにはなるが
2019/03/20(水) 14:20:50.41ID:4fAbiRjS
>>89
おお!!いいですね!!
@ユーザ個別の識別キー
Aユーザ利用のMACアドレス
BIPアドレス


カジュアルライセンス制御は、これでうまくいけそうです!
(一部の犯罪者はもうスルーします。どうせ作れるだろうし、、、)
2019/03/20(水) 14:23:53.82ID:JR1ztFlD
というか、毎回認証するのはユーザーにとっても提供側にとっても負担大き過ぎでしょw
ネットつないでないと使えないし

普通にMSのアクティベーションと同様の仕組みでいいでしょ。
プロダクトキー使って一度認証したらライセンス返上するまでずっと有効。
1つのプロダクトキーがいくつかの(通常は一つ)のライセンス枠を持ってる。
枠が全部埋まってると誰かが返上して空きができない限り新たな認証はできない

以前使ってたTIの開発ツールはこんな感じだったよ
2019/03/20(水) 14:24:23.91ID:ZZcTomnN
>>90
IPアドレスは何に使うんだ…。
変わる上に被ることもあるのに。
2019/03/20(水) 14:43:00.12ID:4fAbiRjS
>>91
なるほど!そーいう手もありますね!
ツール自体はネットがつながっている事前提なので
そこはユーザにとってもサーバにしても心配していません。

>>92
IP偽装も簡単にされてしまうので
確かにあまり意味をなさないですね。
2019/03/20(水) 14:48:01.78ID:ZZcTomnN
>>93
偽装はともかく、正規ユーザーが不正判定され易いのは問題だよ。
2019/03/20(水) 14:58:40.20ID:/jX7WF9n
不正対策のために正規利用者が不利益を被ることは極力避けるべき
大抵が開発者の自己満足
ちょっとした手順が必要になるだけでも使い勝手は極端に下がる
ましてや誤って不正利用認定なんかされた日にはもう2度と関わりたくないと思う
さらにwebサーバーの常時保守と認証周りでのトラブルのカスタマーサポートとかまで考えたら本当に必要な工数なのかも疑わしい
そこまでする必要があるレベルのプロダクトならいちいちこんなところで質問なんて投げないだろうしね
2019/03/20(水) 15:04:53.44ID:4fAbiRjS
>>94 >>95
うーん、、、
WEBサーバが確かに攻撃されたらアプリ使えなくなるな〜。

いろいろ考えます。
2019/03/20(水) 17:10:46.92ID:/jX7WF9n
鯖への攻撃まで考慮しなきゃいけないくらいでかいソフトなの?
どんだけ高価なもん作ってるのか知らんけどパス付きzip程度じゃあかんの?
2019/03/20(水) 17:17:15.36ID:4fAbiRjS
>>97
世の中には悪い奴がいてWEBサーバ攻撃してくるヤツもいるんですよ
zipだと解凍してコピーして横流しされそう。
まぁ、ごく一部でしょうけどね。
2019/03/20(水) 17:17:40.52ID:lRuTUQCz
もうC#の話じゃないよな
2019/03/20(水) 17:25:55.06ID:4fAbiRjS
不正コピー対策は必須ですよ
2019/03/20(水) 17:33:20.02ID:ZZcTomnN
>>98
インストール時にだけWeb経由で認証して、認証データはローカルで暗号化して格納しとけば良い。
認証データの暗号化はProtectedDataクラスを使うのが簡単かつ安全。
2019/03/20(水) 17:34:45.92ID:lRuTUQCz
自分の作ったソフト売りたいって話なら言語は関係ない
パッケージソフトなら不正コピーの心配必要だけどユーザー登録型のライセンス販売なら普通はサポート見込んで買うからそんな心配するのがおかしい
2019/03/20(水) 17:45:20.84ID:4fAbiRjS
>ユーザー登録型のライセンス販売
1か月1000円で販売予定
2019/03/20(水) 18:31:09.68ID:/jX7WF9n
悪いやつがいるかいないかなんて話してないんだけど伝わらんな
悪いやつに対処するコストと悪いことされたときの被害額が見合うかって話だ
実被害なんてほぼ出ないのに無駄に開発コストかける意味は?
売れて実被害が出てから対策したって十分だよ
2019/03/20(水) 18:42:13.33ID:qInZcA4b
この知識レベルだとライセンスの前にセキュリティが不安になる
2019/03/20(水) 18:45:55.97ID:/jX7WF9n
初心者用で質問する人が月額モデルでしかも1000円も取るのか
そもそも月額モデルなら毎月の引き落としどうすんの?
クレカは?全部自前で用意すんの?
せめてvectorとか使ってシェアウェアにしときな
有料ソフトがいかに売れないかを知る良い体験できるよ
2019/03/20(水) 21:28:40.21ID:pSND/w6U
SDカードって確かこっそりCPRM対応だと思ったけど、
あれをドングル的に流用できたりしないかなとちょっと思ったがどうだろう

CPRMの仕組みを理解してないので的外れかもしれんがw
2019/03/20(水) 21:39:22.32ID:F2Rf/YlT
データ整形について質問です。
Dictionary< string, object > に属性名、属性値が格納されています。

Key:Value
開催日:2019/3/20
場所:東京
1名前:太郎
1誕生日:2000/1/1
1年齢:19
2名前:花子
2誕生日:1998/2/14
2備考:魚アレルギー

これをDetail型(開催日,場所,名前,誕生日,年齢,備考)の配列かListに変換したいです。
1,2,...がとても不格好で整形しづらいのですが、変更が許されません。
この数字は多くても6個です。また、数字によっては該当の属性名がないものもあります。

なにかよい方法はないでしょうか。
2019/03/20(水) 22:12:29.79ID:4fAbiRjS
>>106
むっちゃ便利やねん
2019/03/20(水) 22:30:16.54ID:pSND/w6U
>>108
こんなので出来ない?
検証してないので知らんけど
public class Detail
{
  public static Detail RetrieveFromDictionay(Dictionary<string, object> dic, int index)
  {
    var d = new Detail();
    foreach (PropertyInfo info in typeof(Detail).GetProperties(BindingFlags.Public | BindingFlags.Instance))
    {
      var key = $"{index}{info.Name}";
      object obj;
      if (dic.TryGetValue(key, out obj))
        if (obj.GetType() == info.PropertyType) info.SetValue(d, obj);
    }
    return d;
  }
  public DateTime 開催日 { get; set; }
  public string 場所 { get; set; }
  public string 名前 { get; set; }
  public DateTime 誕生日 { get; set; }
  public int 年齢 { get; set; }
  public string 備考 { get; set; }
}
2019/03/20(水) 22:30:19.68ID:C7TIImgv
>>108
全keyを走査しながら1個1個処理していけばいいだけに見えるけどそれじゃだめ?
2019/03/20(水) 22:39:16.99ID:Bg9D9rdv
UWPで作れば色々面倒なことはMSが面倒見てくれるけどな
あの範囲で問題ないプログラム限定では有るが
2019/03/21(木) 10:46:12.53ID:WMeBK6gL
>>110
できました。ありがとうございます。
勉強になりました。

ちなみにプロパティ名が英語の場合、もう一つ日本語と英語名が対になったDictionaryを定義して、そこから参照する形がいいでしょうか。
2019/03/21(木) 22:45:29.76ID:vrM85+ig
Adobe製品の開発言語は、逆アセンブルされない為にC++で開発してるの?
2019/03/22(金) 00:28:45.55ID:QnQyasxD
C#でArrayListのSortを実行すると
昇順で並び替えられています。

これをDESC(降順)で行うにはどうすればよいですか?


LINQとやらを使った方が確実かな〜。
2019/03/22(金) 00:47:13.07ID:pVVdiXqm
Sort()した後でReverse()すればいいよ
ArrayListだとSortだけで逆順にするにはIComparer書く必要があってだるいし
というか今時ArrayListなんて使ってないでList<T>使おう
2019/03/22(金) 00:48:26.04ID:QnQyasxD
>>116
サンクス!そーいうのがあったんだね。
(長らく現場から離れていてC#はコボラーみたいな感じになってます)
2019/03/26(火) 13:13:53.47ID:DPMd1MEr
VBAでごにょごにょやった方が効率いいね。
2019/03/26(火) 18:39:16.11ID:DPMd1MEr
VBAには、#region #endregion 的な機能はありますか?
コードが長くなってしまって縮小したいです。
2019/03/26(火) 20:36:10.97ID:A7GEbRVd
たぶんないと思うけどVBAスレで聞いた方がいいね
2019/03/26(火) 21:09:29.22ID:DPMd1MEr
ないのか
2019/03/29(金) 18:21:05.18ID:ukrtQ6PV
VS2017で

前のブックマークへ移動するショートカットコマンドですが

Control + K → P

はもう使えなくなったのでしょうか?


Control + B → P は使えます。
ただ、「K」はVS2010では普通に使えていたはずなのですが、、、
2019/03/29(金) 18:30:25.09ID:yqow3AID
>>122
Visual Studio 2017 Part6
https://mevius.5ch.net/test/read.cgi/tech/1528645068/
2019/03/31(日) 01:56:40.68ID:RIl4YBWE
例えばセッターのみが非publicなプロパティーがあるとして、
セッターにアクセスできるスコープからのみ見えるXMLコメントを
書くみたいなことって可能だったっけ?
2019/04/05(金) 16:23:35.92ID:q6NWzxZh
IEを自動起動して、スクレイピングのプログラムを作っています。
スクレイピングに詳しい人教えてください。

ページ内にliが複数あるため、getElementByTagNameでliを指定すると
全部の要素を走査してしまい、時間が結構かかっています。

そこで上位ブロックの divのidが[id_koregahosii]になっている
liの要素を取得するといったコードを書きたいのですが
よい方法はありますでしょうか?


<div id="id_aaa"><li>あいうえお</li></div>
<div id="id_bbb"><li>かきくけこ</li></div>
・・・複数(1000以上)・・・
<div id="id_koregahosii"><li>このliを取得した</li></div>

mshtml_ec = ie.Document.getElementsByTagName("li");
foreach (mshtml.IHTMLElement i_ele in mshtml_ec)
{
//取得したデータを変数にセット
}
2019/04/05(金) 16:53:09.70ID:x8OJz+Ud
.Document,getElementByIdしてからそのIHTMLElement2に対してgetElementsByTagNameすればいいんじゃね
2019/04/05(金) 17:31:16.88ID:q6NWzxZh
>>126
ありがとうございます!
試してみます!
2019/04/06(土) 23:59:31.30ID:8OPSxgse
DataGridViewで特定列を除いて
編集させたくないので以下コードを書きました。

dgv_test.AllowUserToAddRows = false;
dgv_test.AllowUserToDeleteRows = false;
dgv_test.ReadOnly= true;


ただし、その中のCheckBox列だけは
チェックのON/OFFを出来る様にしたいです。

これを実現するにはどういうコードをかけば良いのでしょうか?
2019/04/07(日) 00:20:04.80ID:J7v3B2LO
地道に全セルをなめてReadOnlyを設定して
実現できました。
2019/04/07(日) 01:32:05.92ID:J7v3B2LO
助けてくださいm(_)m

DataGridViewの2列目(インデックスは1)がチェックボックスです。
画面上でチェックを入れ「実行」ボタンを押した時に
その行にチェックが入っているかを判定しようとしていますが
うまくできません。。。どう判定したらいいのでしょうか?


エラー
ハンドルされていない例外
System.InvalidCasException:'指定されたキャストは有効ではありません。'

if ((bool)dgv_test[1, i_row].Value == true )  ← ここでエラーが発生
{
Debug.WriteLine("checkあり");
}
else
{
Debug.WriteLine("checkなし");
}
131デフォルトの名無しさん
垢版 |
2019/04/07(日) 02:00:48.99ID:vK2HJm7v
>>130
boolではなくbool?でキャスト
2019/04/07(日) 04:01:48.39ID:mKsxK2JJ
>>125-126
Ruby, Nokogiri, Selenium WebDriver では、

doc = Nokogiri::HTML( driver.page_source )

element = doc.at_css '[id="id_koregahosii"] > li'
puts element.text
#=> このliを取得した

CSS Selector では、[id="id_koregahosii"] > li。
id 属性が"id_koregahosii" である要素の、直下のli 要素。
> は直下を表す

doc.at_css は、最初に見つかった、1つの要素で、
doc.css なら、配列(複数要素)が返ってくるように使い分けるので、要注意!

jQuery では、0・1つの要素の場合でも、常に配列が返るので、間違える事がない!

最初に、jQuery などで、CSS Selector を学ぶ必要がある。
それよりも複雑な指定は、XPath を使う
2019/04/07(日) 09:43:37.49ID:J7v3B2LO
>>131
bool型にキャストしてます。
でもエラーがでます。
2019/04/07(日) 09:50:53.11ID:e9OeE/L4
>>133
boolとbool?は違う型
null許容型でググろう
2019/04/07(日) 11:40:12.15ID:J7v3B2LO
>>134
すみません。わからないので教えてください。。。。
2019/04/07(日) 11:45:12.82ID:vK2HJm7v
>>135
bool?型と言ってるのになぜbool型にするの?
(bool)のとこを(bool?)って直すだけだぞ
null許容型は、要するに(bool?の場合は)true,false以外にnullも含む(許容する)型
2019/04/07(日) 12:25:53.88ID:hRJe8zJK
using System.Numericsとしているのに
Complex a = 123;とだけ書くと何故か赤い波線が付いてエラーになります
System.Numerics.Complex a = 123;とするとエラーは出ないのですが、省略できないのが気に食わない
2019/04/07(日) 12:35:01.18ID:PRyiq+oO
>>137
VisualStudioのバージョンは?
後、赤線のエラーは何て書いてある?
VS2017だけど、省略してもエラー出ないよ
2019/04/07(日) 12:44:33.68ID:hRJe8zJK
>>138
暗黙的に変換できませんと書いてあります
2019/04/07(日) 13:03:15.10ID:hRJe8zJK
バージョンは2017です
System.NotImplementえdException: 'メソッドまたは操作は実装されていません。'というエラーも出ます
2019/04/07(日) 13:07:44.80ID:8KGRZT5W
その再現する部分だけを書いたプロジェクトをどこかに晒してみたら?
2019/04/07(日) 13:30:29.80ID:hRJe8zJK
全部削除して書き直したら治りました
何度も確認したのでタイプミス等ではないはずですが、何が原因だったのか
お騒がせしました
2019/04/07(日) 14:10:37.33ID:/8+Cw91p
>>130
var o = (bool?)true;
bar b = (bool)o;
これは実行時もエラーは発生しないし、

var o = (bool?)null;
bar b = (bool)o;
これで発生する例外はNullReferenceExceptionみたいだから、たぶん指摘されてるのと別の原因なんだろうなあ。
知らんけど。
2019/04/07(日) 14:24:18.31ID:/8+Cw91p
あー間違えた
var o = (bool?)true;
じゃなくて
object o = (bool?)true;
だね。結論は変わらない
2019/04/07(日) 16:58:28.24ID:aTlDD0vY
>>143
何言いたいのかよくわからないけど>>130に対する回答は>>131であってるよ
DataGridViewのCellの初期値がnullなのが原因なだけだから
null許容型のキャストするか行を作った段階で値を代入するかのどちらかになる
2019/04/07(日) 17:21:54.02ID:kimAJSSB
>>145
分かってよ。
nullをboolにキャストしようとした時発生する例外はNullReferenceExceptionであって
InvalidCasExceptionではないはずだ
2019/04/07(日) 17:31:51.66ID:vK2HJm7v
>>130
失礼。
発生した例外がNullReferenceExceptionではないから、
bool?にキャストすべき所がboolになってるバグの他にもバグがある。

例外はInvalidCasExceptionだから、
DataGridViewの列の定義が間違っていてdgv_test[1, i_row]がDataGridViewCheckBoxCellになっていないか、
初期化時にdgv_test[1, i_row].Valueにbool以外の値を代入していると思われる。
2019/04/07(日) 17:37:12.90ID:AvqFg232
終わった話でマウントしなくていいよ…
149デフォルトの名無しさん
垢版 |
2019/04/08(月) 13:25:57.00ID:mdLXKZZ1
ほんそれ
150デフォルトの名無しさん
垢版 |
2019/04/08(月) 15:30:44.33ID:G4htz/so
Windowsフォームでコントロールのプロパティの
EnableをFalseにすると「若干」色が薄くなるようですが
もっとはっきり薄くできないですかね?
完全に消えるとまずいんだけど
はっきり「今これは使えません」って意思表示したいんだけど
いい方法無ですかね?
2019/04/08(月) 20:13:53.30ID:DkSPe/Rf
>>150
フォーム全体で対応させるのはわからない
コントロール一つならEnabledChangedのイベントで
コントロールに初めから組み込みたいのなら
https://dobon.net/vb/dotnet/control/tbenabledfalse.html
の「自分で描画する」を参考に。やっていることは真逆だけど色を変えればいいだけ
ボタンやラベルなら使用不可を示すのに色だけでなくフォントの打ち消し線の有無で実装したことならある
152デフォルトの名無しさん
垢版 |
2019/04/09(火) 00:07:36.04ID:pirXsPL0
Window上にOpacity薄くしたパネルを全面表示すればいいんじゃないか
2019/04/09(火) 00:09:31.21ID:d/2DcaK3
テンプレに「酔っぱらいはレス禁止」って付け加えておいた方がいいな
2019/04/09(火) 01:05:33.44ID:HBj7RtDK
Checkboxの質問をしたものです。
初期化時にFalseを設定してやったらエラーが出なくなりました。
2019/04/09(火) 08:48:59.17ID:+PEPLDxq
チェックボックスの初期値がない=null
nullからのinvalid castやんけ
2019/04/09(火) 09:42:37.66ID:HBj7RtDK
ぬるキャストしたら金もらえるんか?

by いわま
2019/04/11(木) 00:20:32.43ID:aNdauzQw
なんでList<T>がraw型のCollection継承してる扱いになってんだ???
2019/04/11(木) 09:42:03.59ID:hzw6xvpZ
ちょっと何言ってるかわかんないです raw型って何
何か読んで疑問に思ったんだったら記述示すなりリンク張るなりして
2019/04/11(木) 21:19:05.19ID:3mGpDoO0
C#で多倍長浮動小数点数演算は出来ますか
多倍長整数を使ってどうにかするしかないんでしょうか
2019/04/11(木) 22:21:18.99ID:/LPE5YMd
>>159
decimalで足らないのなら自分で何とかするしかないな
https://docs.microsoft.com/ja-jp/dotnet/api/system.decimal?view=netframework-4.7.2
2019/04/11(木) 23:11:01.19ID:3mGpDoO0
>>160
自分でなんとかしたいと思います
1000桁とか10000桁とかの計算がしたいので
2019/04/12(金) 18:12:54.78ID:f0sWKcEF
今後、開発作業が増えてEXEのファイルサイズが大きくなっていく事が想定される場合
プロジェクト分けた方がええかな?


インストール型じゃなくてWEBシステムとして作ろうか悩み中
2019/04/12(金) 19:16:33.34ID:wX1hkUx5
「拡張メソッドはトップレベルの静的クラスでしか宣言できない」ということは、
public class Cの内部にprivate enum Eを置いたとき、Eに対して拡張メソッドを追加することは不可能なのでしょうか
いくつかの定数(とメソッド)を持った構造体で代用するしかないですかね
2019/04/12(金) 19:44:50.94ID:eTqArBo4
そこまでobj.method記法に拘る必要も無いだろ…
2019/04/12(金) 19:59:08.90ID:LhXUTlO1
>>162
どうでもいい
開発規模ウン億円とかにならない限り、人間が書いたコードの実行ファイルのサイズなんて全く問題にならない
それはともかく、Webを選べるのなら迷わずWebにすべき
exe配ると後々のメンテは地獄よ
2019/04/12(金) 20:16:15.81ID:f0sWKcEF
>>165
なるほどですね。
どうしてもWEBだと厳しいシステムなんですよね。
(サーバのIPアドレスが固定だとまずい)

cliclonceというのを使えばバージョンアップとか簡単ですか?
2019/04/12(金) 20:43:15.51ID:9e6eDjQn
ClickOnceはシステム管理者がガチギレするらしいので利用しないのが吉
2019/04/12(金) 20:47:48.47ID:Z2Oii3Wj
>>167
なぜ?
2019/04/12(金) 20:48:02.13ID:f0sWKcEF
>>167
なんでや?
2019/04/12(金) 20:49:24.84ID:f0sWKcEF
ClickOnceにするとむっちゃ楽そうだけど
2019/04/12(金) 20:49:43.52ID:f0sWKcEF
クリックワンス

http://www.asahi-net.or.jp/~ef2o-inue/vbnet/sub13_05_010.html
2019/04/12(金) 21:44:20.43ID:SPCc1qER
>>163
仮にenumを入れ子にする点は譲れないとしても(この点も本当は再考した方がいいと個人的には思うけど)
アクセシビティーをpublicにすることは検討していいんじゃないの?

隠蔽したい気持ちは分からんでもないが、少なくともpublicにしたからって何か危険があるわけじゃない。
2019/04/12(金) 22:21:07.52ID:wX1hkUx5
>>172
よく考えたらenumを入れ子で隠す設計をc#は想定してないってことですもんね
大人しく外に出します、ありがとうございました
2019/04/13(土) 00:18:29.71ID:BMo5W632
DataGridViewに詳しい人は教えてください。

DataGridViewの列にチェックボックスの列を設けています。
□がクリックされた時だけではなく、□の属するセル(の予約)が
クリックされても□にチェックが入る様に制御したいのですが
どうすればよいのでしょうか?

何かプロパティで設定するのですか?
2019/04/13(土) 14:39:03.85ID:n7lKOQoj
>>174
CheckBoxのセルのクリックで切り替えたいのなら
例えばCellをReadOnlyにしてCellClickイベントで値を切り替えればできる
2019/04/13(土) 15:19:56.97ID:BMo5W632
>>175
なるほど!
そーいう方法しかないんですね。

てっきり標準で設定出来るプロパティがあるのかと思ってました。
2019/04/13(土) 15:46:55.50ID:n7lKOQoj
>>176
方法の一つをあげただけでプロパティにあるかは知らない
2019/04/13(土) 16:32:46.29ID:BMo5W632
>>177
サンクス!



セレニウムにチャレンジしています。
VSで作成した場合
インストール環境にNugetが入っていないとうごかないのでしょうか?
2019/04/13(土) 17:16:51.48ID:04eDeW4T
>>178
日本語でよろしく
2019/04/13(土) 19:58:49.43ID:1RC1le5n
>>178
アクセス元に迷惑掛けるの目に見えてるから辞めとけ
2019/04/13(土) 20:14:34.97ID:BMo5W632
>>180
スクレイピングの練習やで
サンドバッグになってもらいます。
2019/04/14(日) 21:03:37.66ID:NnSXGzN0
スクレイピングをこれまでIEを操作して行ってきていましたが

セレニウムを使う方がナウいのでしょうか?

コンソール画面が立ち上がって結構うざいんですが
2019/04/15(月) 07:51:42.30ID:T2oRcbP+
>>182
consoleは消すことが出来る
2019/04/15(月) 09:11:14.20ID:M/FIhTOp
>>183
コンソールを消す事はできました。

ただ、問題がありまして
Cromeを使ってログインしないと見えないサイトの中のとあるページを
スクレイピングしようと思っていますが、一度ログインしたのに
もう一度プログラムを実行すると再び画像認証付きのログインページが表示されてしまいます。

Chromeのセレニウムでログインした場合、
ログインセッションは、プログラムを終了すると自動でとじられるのでしょうか?
2019/04/16(火) 02:41:38.00ID:39QxJxCa
セレニウムで画像選択は同実装すればよいのでしょうか?

Windwos APIを使わないと、ダメでしょうか?
2019/04/16(火) 07:50:30.04ID:xFKZ3CM/
ここC#スレだよ?
2019/04/16(火) 09:10:36.33ID:gry//OiE
スクレイプするにはまだ程遠い実力ということだ
2019/04/16(火) 09:47:51.95ID:39QxJxCa
スクレイピングはできる様になりました。

ドラッグするか、その枠をクリックしてファイルを選択するしか
画像の選択が出来ません。
セレニウムでドラッグやファイルの選択はできないですか?
2019/04/16(火) 12:32:55.79ID:5XyUIsTT
スレチ
2019/04/16(火) 12:33:02.58ID:gry//OiE
君には無理。
2019/04/16(火) 15:21:38.40ID:+QEcotOy
スクレイピング(が何かわかって無いけど)はできる様に(なった気持ちに)なりました。
2019/04/16(火) 17:36:07.52ID:39QxJxCa
スクレイピング楽しいな
193デフォルトの名無しさん
垢版 |
2019/05/04(土) 14:25:52.45ID:6mDmKshX
select ユーザーコード, ユーザー名 from tbl_user group by ユーザーコード, ユーザー名 order by ユーザーコード

上記のクエリを、Visual Studio 2019の、クエリの構成ウィザードで実行すると成功するのですが、
構成ウィザードで作成したGetData()メソッドをソースコードから呼び出すと、
"System.Data.ConstraintException: 制約を有効にできませんでした。行に入力できるのは、Null 以外の値、一意な値、あるいは外部キーですが、この制約の違反が 1 つ以上の行で発生しています。"という例外が発生します。
何が原因でしょうか?
2019/05/04(土) 18:47:33.92ID:y5JKLm4r
ありがちなのは
その型付テーブルにユーザーコード・ユーザー名以外の列があって
それがNULL非許容であるケース
そろそろ型付テーブルは捨ててみるのはどうだろう
2019/05/04(土) 23:59:05.71ID:6mDmKshX
>>194
ありがとうございます。
捨てるというか、今データベースプログラミング覚え始めなのです・・・。
2019/05/08(水) 01:56:19.01ID:noKOboYy
group by したらorder by は要らない
と思うんだけどね
2019/05/08(水) 09:05:02.34ID:uppUuxEo
つか、ユーザーコードかユーザー名にnullがあるんじゃね?
2019/05/10(金) 00:17:09.38ID:ADYEYyzu
>>196
order by しないと結果の順序は不定だぞ
2019/05/10(金) 00:32:33.75ID:zfwcpnpf
>>198
言語規約的にはそうかもしれんな
2019/06/03(月) 19:12:08.43ID:QH6vVdx1
C#の勉強のためにメモ帳を作ろうと計画していますが
フォームにTextBoxを貼り付けるだけではあまり面白くありません
また禁則処理や縦書きの機能もついていません
なにか他のもの、WebBrowserあたりを使うのかな?と想像しているのですが
2019/06/03(月) 19:18:10.95ID:FeReq2tQ
つPicutureBox
2019/06/03(月) 19:45:12.89ID:QH6vVdx1
WPFだとImageを使うんでしょうか
ImageもしくはPicutureBoxを使う方向でやってみます
2019/06/03(月) 19:50:06.54ID:lJ3hf1q/
WPFならWPFのスレで聞いた方がいい
WPF(.NET4.x, .NET Core) GUIプログラミング Part23
https://mevius.5ch.net/test/read.cgi/tech/1557960752/
2019/07/17(水) 09:01:41.72ID:Rapypd65
こっちでええんか?
2019/07/17(水) 13:54:33.79ID:rBzTe21k
そうだね、古い方から使おう
2019/07/22(月) 23:30:46.11ID:C1JMmcNL
>>200
メモ帳意外と難しいよね
オレも初めの頃作ろうとして挫折した(あわよくばテキストエディタ目指そうとしてたのもあって)

勉強のためだけだとモチベ上がらないので、世の中にあるけど、俺様仕様なのが欲しいってのを作ってみてはどうかな(なるべく簡単なものから)
2019/07/26(金) 17:45:13.82ID:BgugETZT
A・B・C・E・Dという5つの項目があって、
例えば、Aが10で、Bが10で、Cが15で、Dが20で、Eが30の時、3という数字を格納したくて、
今までは多次元配列で、num[10,10,15,20,30]=3という風に入れてたのだけど
これだと配列の宣言時に添え字大きいとメモリ足りないエラー出たりするのだけど
多次元配列以外でこういう処理するほうほうはないでしょうか
2019/07/26(金) 17:48:56.54ID:WRIJ/WMx
>>207
dictionaryでkeyをtupleにするとか?
2019/07/26(金) 17:49:06.61ID:mDNueNoY
>>207
自分でクラスか構造体作る
2019/07/26(金) 18:05:34.42ID:BgugETZT
>>208-209
ありがとうございます
試してみます
2019/07/27(土) 06:57:57.51ID:JBF4UcX5
扱うアイテム数や更新や検索速度によっても解は変わるけどね
2019/07/28(日) 01:55:31.74ID:fFZFtxU0
C#でメッセージボックスそっくりのフォームを表示したいのですが、
既にそういうことやって公開してるサイトとかあったら教えてください。
とりあえず警告とかのアイコンとメッセージとOKボタンが出ればOKです。
2019/07/28(日) 02:01:33.19ID:rd9JTwgx
>>212
MessageBoxクラスと言うそのまんまなのが標準であるけど
214デフォルトの名無しさん
垢版 |
2019/07/28(日) 02:05:47.36ID:O6J4gSKO
マルウェア造りたいんだろうきっと
2019/07/28(日) 03:11:39.49ID:fFZFtxU0
>>213
英語OS環境でも日本語を表示したいので、MessageBoxだとだめなんです
2019/07/28(日) 11:11:36.04ID:4n+BfbRN
英語OSで日本語表示

マルウェア臭しかしない
出来たとしてもやめたほうがいいw
2019/07/28(日) 11:52:47.97ID:KNp0wpVr
手元に英語版Windowsがないから確認できんけど、
Win9xの時代じゃないんだから英語版Windowsだからって日本語のメッセージが化けるとかないはずだと記憶してるけど

違ったっけ?
218デフォルトの名無しさん
垢版 |
2019/07/28(日) 12:03:09.31ID:mCptNPRe
違う
バグはいくらでも造り込める
2019/07/28(日) 12:15:34.70ID:fFZFtxU0
>>217
MessageBoxクラスはロケールのシステムフォントで表示されるので化け化けです
逆にこのクラスのフォントを変えられればそっちでも良いんですがぐぐっても全く出てこず・・
2019/07/28(日) 12:20:10.64ID:0oO4pZNP
>>219
他の画面を作るのと同じようにFormを自作してShowDialogするだけでいいよ
2019/07/28(日) 12:41:08.89ID:pP5stkUp
>>217
Fontの指定できるのならそうだろうな
https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/2f45e7d7-f4ba-47ee-a8e0-5b99255e69f7/12513124831247512540124721250812483124631247312398125131248312?forum=csharpgeneralja
ここの結論では>>215と同じ
>>215
ダイアログ用のフォームを作って「OK」と「Cancel」のボタンをクリックしたらDialogResultにDialogResult.OKかDialogResult.Cancelを入れてそのフォームをClose()するだけ
呼び出す側はMessageBoxのかわりにそのフォームを同じように呼び出せばいい
2019/07/28(日) 13:19:08.39ID:KNp0wpVr
>>219
ほんと?

OSで設定されてるフォントが使用されるのはそう(デフォは昔ならTahoma、今は何だっけ?)
なんだけど、WindowsにはFontLinkって仕組みがあって、欧文以外の文字の場合は適当な
フォントが代わりに使用される仕組みになってるはずだと思うが...

まあどっちにしろサクッと自作しても大した手間ではないな
2019/07/29(月) 21:48:22.76ID:CSar0obt
https://i.imgur.com/J5yu9wS.jpg
224デフォルトの名無しさん
垢版 |
2019/07/30(火) 17:43:55.27ID:Q6VO+qJe
なんのアニメ?
京アニ?
225デフォルトの名無しさん
垢版 |
2019/09/16(月) 20:31:20.79ID:MPbmz0IO
Windowsのデスクトップアプリ作ってみたいんだけど、UWPじゃなくてWPF使った方がいいの?
2019/09/16(月) 21:06:00.37ID:sRm+3JQL
>>225
何が目的?
ストアで売りたいのならUWP
Windows 10以外で使う気があるのならUWPは厳禁
227デフォルトの名無しさん
垢版 |
2019/09/16(月) 21:16:27.82ID:MPbmz0IO
>>226
一度も触ったことないからデスクトップアプリ作ってみたい
販売もWin10以外で使う予定もないです
2019/09/16(月) 21:18:24.34ID:sRm+3JQL
>>227
Visual Studio使ってWindows Formがクッソ楽とWPF使ったことない人からのアドバイスしとくw
229デフォルトの名無しさん
垢版 |
2019/09/17(火) 01:14:09.81ID:jgnLyfJa
>>223
グロ
2019/09/17(火) 01:37:10.61ID:Scf7CR0a
>>228
楽かどうかはWinformもWPFも同じだよ〜
webで拾える情報はWinformの方が多いが
2019/09/17(火) 07:20:33.53ID:Y3mVLTqr
>>230
横だけど
日曜プログラマレベルでWinFormsでそれなりにDB連携の業務アプリを作って運用してはいるんだけど
今更WPFの勉強スタートして使いものになるかな?
つーか、1度作ったWinFormsをWPFにするには作り直しだよね・・・
2019/09/17(火) 08:34:01.71ID:gcZDzsnL
>>231
Winformを使いこなしてる人が、今からWPFやっても得るものは少ないだろうね
WinformもWPFもやったことない人なら、どっちでも楽さは変わらない

あと、Winformなアプリでも一部だけWPFにすることもできるから、完全に作り直しとも限らないよ
2019/09/17(火) 15:16:53.10ID:FM5jjTCY
UWPも存在意義が無くなったしな・・・
234デフォルトの名無しさん
垢版 |
2019/09/17(火) 15:38:58.51ID:CU62bLm/
Win32をWindowsから追放してUWP化する計画は
やっぱりとん挫かw

ここ10年ぐらいMSはこんなことばっかりやってるね
2019/09/17(火) 15:45:27.94ID:6kCNmbsv
windowformから乗り換えるとしたら何?
2019/09/17(火) 18:26:50.51ID:mt+5ew4N
>>235
乗り換えるってのがわからん
普通複数の言語使えて状況に合わせて使い分けるものでは
2019/09/21(土) 10:57:39.89ID:y68BphyG
>>234
もうWin32に新たな関数を追加していくだけでいいんじゃないか
既存の分かりにくい関数とかも整理して新たな分かりやすい代替関数を追加して
古いのは非推奨にしていずれ廃止していくとかさ
238デフォルトの名無しさん
垢版 |
2019/09/21(土) 11:11:11.88ID:Sri5tnCE
内部文字コードのUTF8化と同時に整理して欲しいよなー
もうそろそろ互換性はいいだろ
239デフォルトの名無しさん
垢版 |
2019/09/21(土) 12:06:27.59ID:ZIXe7ufx
>内部文字コードのUTF8化

これは愚策
出入りはUTF8で良いけど
2019/09/21(土) 19:53:37.95ID:y68BphyG
SetWindowPosとかなあ
Posとか言ってSizeもZOrderもこれ使うとか初心者が勘違いするだろ
SetWndPosとSetWndSizeとSetWndZOrderに分けろや

ライブラリ作っとけばいいだけなんだけどさ
2019/10/01(火) 08:54:20.74ID:AzXLfBCe
xamlに別のxamlを挿入してその子要素にBindingってできないですかね?
2019/10/01(火) 21:05:00.43ID:QXee0tMi
>>241
xamlで作ったユーザーコントロールは普通に使える
その時DataContextはカスケードで子要素のユーザーコントロールにも落ちるから
普通にバインドできる

ってことでいい?
2019/10/10(木) 11:16:46.19ID:20GczcoB
picturebox の中の画像の位置はどうやったら取得できるのでしょうか?

例えば、w 500 , h 500 の picturebox に w 300, h 500の画像が真ん中揃えで表示されているとき、x 100, y 0 みたいな値をとりたいのです。

画像の上に線とか図形とかを描画するための基準となる位置が欲しいのです。

ImageLocation プロパティで取れるかと思ったら、これはURL とかを指定するものでした。
2019/10/10(木) 11:24:30.46ID:dY7xsk31
自分で計算する
PictureBox::ImageRectangleFromSizeModeをリフレクションで呼び出す

上に何か描画するとかならImageプロパティは放棄して自分で全部描いた方が手っ取り早いかもね
2019/10/10(木) 23:41:17.72ID:20GczcoB
>>244
c# でリフレクションというのは攻撃魔法をときどきはね返す防御魔法のようなものだと思うのですが、リフレクションを使う方法は具体的にどうするのでしょうか?

自力で計算する方法でとりあえずはなんとかなりそうです。
まだコード書いてないけど、画像の表示方法と画像サイズと pictureBox のサイズがわかるのでそこから計算できそうです。
縦と横の拡大縮小率の計算が少しめんどくさいだけかな?
246デフォルトの名無しさん
垢版 |
2019/11/06(水) 17:52:05.14ID:bs5+QLo2
ttps://gist.github.com/Flafla2/f0260a861be0ebdeef76

public Perlin(int repeat = -1) { this.repeat = repeat; }

public Perlin() { this.repeat = -1; }
と同じ意味でしょうか?またそうであれば、なぜパラメータとしてint repeat = -1としているのでしょうか?
2019/11/06(水) 17:55:11.74ID:vTr6jChq
>>246
違う
引数を省略した場合は引数に-1と指定されたみなされる
2019/11/06(水) 17:57:42.25ID:cEKOtBl2
>>246
Perlin()と呼ぶことができる
これはPerlin(-1)と書いた場合と同じ
Perlin(0)ってかけばrepeatには0がはいる
だいたい-1なんだけど時々別の値にしたいときなんかに使う
詳しくはオプション引数でググって
249デフォルトの名無しさん
垢版 |
2019/11/06(水) 18:50:35.37ID:bs5+QLo2
>>247, 248
ありがとうございました。
2019/11/25(月) 17:06:44.56ID:3yP/a9XY
1 2次元空間上の座標に乱数で円を重ならないようにたくさん配置します。
2 全ての円の座標の平均値がある条件を満たせば終了。
3 満たさなければ初期化して1に戻る

円の数を増やすと2の条件が厳しくなるので、12のループの繰り返しが指数関数的に厳しくなります。
100個を超えると配置できずにフリーズするんですが、
60ぐらいでも10回に1度くらいフリーズします。

10回に1度フリーズするのがよくわからない。。。
Windowsって特定のアプリがループ処理をし続けるとアプリをフリーズさせるようなシステムがあるのでしょうか?
2019/11/25(月) 17:15:30.05ID:uMtE/h/q
>>250
コントロールの表示の更新が追い付かずにフリーズして見えるだけじゃないのか
それだったら描画ごとにRefresh入れればいいが
とりあえずミニマムコードくらい見ないとエスパーするしかない
2019/11/25(月) 17:49:11.57ID:3yP/a9XY
>>251
すいません。
250はかなり要約して書いていて、本当はかなり長いコードでここには載せ難く。
10回に9回は1秒程度でループを抜け終了するので、
しばらく待ってれば表示されるかと思うと、やがてOSから応答してないよとメッセージがきます。

cならリソース開放忘れを疑うのですが、c#ってそのへん自動で管理してくれるんですよね。
253デフォルトの名無しさん
垢版 |
2019/11/25(月) 17:54:12.64ID:pjJuONFZ
自分のバグを言語やOSのせいにする香具師は何をやっても大成しない
2019/11/25(月) 18:05:07.13ID:b/ZUvETz
ウィンドウプロシージャから呼び出された時に時間のかかる処理をすると
基本的にマウス入力も含めた後続のウィンドウメッセージが処理できないので
結果的に操作などが受け付けなくなりフリーズしたようになる
(5秒だかウィンドウプロシージャから戻ってこないとOSが駄目だコイツと判断してよく見る「応答なし」になる)
レンダリング以外の部分で一秒もかかる可能性があるならその時点で別スレッドにすべきではある

フリーズに規則性がないのはそれこそロジック見てみないと誰にもわからんでしょ
様子からしてGCが暴れてる可能性はあるので値型使ってみたりとかの余地はあるだろうけど
2019/11/25(月) 19:04:16.55ID:qlQ2yr7c
魔法の言葉、Application.DoEvents();
ループ処理の中に書くといいよ
256デフォルトの名無しさん
垢版 |
2019/11/25(月) 19:27:30.58ID:0ThvbZYY
>>252
全体的に何を言ってるのかよく分からないんで推測だけど、
UIがフリーズするのはUIスレッド上のユーザーコードがビジーループになってるから。

ウィンドウやコントロールの再描画やマウスやキーイベントへの反応は
システム側のコードで処理されるわけだけど、それはUIスレッドで動く。

だからUIスレッド上のユーザーコードがビジーのままだと、
システムは側のコードも動けずにフリーズしたように見える
2019/11/25(月) 19:36:27.15ID:qmWi7Xp+
フリーズするのはスレッドを分離してないのが原因だけど
それ以前に何らかの条件で無限ループになっている可能性もあるな
2019/11/26(火) 03:03:00.47ID:oYeHIm2x
>>250
まずそういうのは実際には円を描かないで演算だけやってみるところからはじめませう。演算が悪いのか描画が悪いのか切り分けたい。
259デフォルトの名無しさん
垢版 |
2019/11/26(火) 10:03:15.82ID:c3SEnPpX
>>257
無限ループの可能性もあるが
こういう指数関数的に計算量増える場合は
UIと計算スレッドを分離するか
ループ途中でシステムコール呼んでイベント処理させるのが定石
2019/11/26(火) 10:19:16.34ID:SOHA2nuS
みなさんいろいろありがとうございます。
円の数とフリーズ確率に比例関係があるので、
ループでの処理が問題だと思います。

別スレッドにしてみようと思います。
それまで
Application.DoEvents();
活用してみます。
261デフォルトの名無しさん
垢版 |
2019/11/26(火) 14:22:57.27ID:dAEqoOXB
メモリ不足無視して実行し続けてるのも暴走って言うかもな
2019/11/26(火) 19:13:59.32ID:MuEAwLxr
>>250
乱数頼みなわけで物理的にいつまでも決まんねーことあんじゃん
重複が無い円はそのままにして置いたら?
どうせ乱数じゃん?
263デフォルトの名無しさん
垢版 |
2019/11/27(水) 12:24:02.31ID:KtqS+hCI
1に戻る前に強制GCした方が良くね
2019/11/30(土) 13:57:48.46ID:xRFcAUWE
2の終了判定が甘くて無限ループしてるだけだろ
2019/12/01(日) 12:57:13.04ID:i2YaNYYV
>>255
魔法の言葉、Application.DoEvents();
で解決しました。
やはりWhile分で条件達成まで延々ループ処理させてたのが問題だったようです。

フリーズすると制作したアプリで取得したデータ大丈夫なの?
って冷たい目にさらされていたのですが、これですっきりしました。

ありがとうございました。
2019/12/11(水) 19:12:23.65ID:t3xhIlyZ
ASP.NET MVCを初めて勉強しています
MVの場合、ボタンクリックのイベント処理はどう書くのがスタンダードなのでしょうか?
(Webフォームではイベントハンドラーを使ってましたが。)
2019/12/11(水) 19:20:12.37ID:qXq3MGtY
form
2019/12/11(水) 21:27:46.75ID:H3x5MOt+
>>266
チュートリアルからやりましょう
https://docs.microsoft.com/ja-jp/aspnet/core/tutorials/first-mvc-app/
2020/01/01(水) 12:48:02.27ID:7beskV3u
自分で作ったアプリ14個くらいショートカットで起動できるようにしていて、
その中の名前が似た3つが弄ってもいないのにある日突然起動しなくなったのですがどういったことが考えられるでしょうか
2020/01/01(水) 12:53:24.15ID:2+A6XpAV
何かを弄ったから
2020/01/01(水) 13:19:14.52ID:ZjrgaAUK
妖精さんの悪戯じゃないかな
272デフォルトの名無しさん
垢版 |
2020/01/01(水) 13:26:47.06ID:tqBP4ADq
大きくならない
固くならない
2020/01/01(水) 13:51:29.41ID:dLiykUmV
>>271
妖精さん「俺のせいにするんじゃねーよ!」
>>269
C#のプログラム上の問題でないことは確か
PC初心者板へどうぞ
2020/01/01(水) 15:47:55.57ID:V7aDVAm9
とりあえずイベントログを見てなんかエラーが出てないか確認
2020/01/02(木) 09:17:19.87ID:OoAxt65V
テキストファイルを開いて書き換える動作が、
昨日まで普通にできていたのが今日やってみたら読み込みは出来るものの、書き込み時に
UnauthorizedAccessException:パスへのアクセスは拒否されました。
の例外が出て書き換えできなくなったのですがなぜでしょうか
2020/01/02(木) 09:36:21.31ID:4gUBqapQ
そのファイルのアクセス権を剥奪されたのでしょう
2020/01/02(木) 10:23:46.38ID:OoAxt65V
>>276
それは何故でしょうか?
自分のPCで自分以外は使う事もありません。
そしてどうすれば取り戻せるのでしょうか
2020/01/02(木) 10:24:50.25ID:ZgXvL7GY
>>275
WindowsUpdateで
「アレ、こいつこんなとこアクセスしてるけどヤバクネ?修正しとこ」
って改修したとこがまさに今反映された
一回だけそういうことあった
2020/01/02(木) 10:26:25.06ID:ZgXvL7GY
>>277
アプリ実行時に
右クリックメニューからの管理者で実行とかやってみれば?
それと対象のファイル自体のアクセス権も確認
2020/01/02(木) 10:47:12.88ID:OoAxt65V
ありがとうございます
WindowsDeffenderを切ってみたら書き込みが出来ました
セキュリティが悪く効いてた感じでしょうか
281デフォルトの名無しさん
垢版 |
2020/01/04(土) 15:40:54.17ID:wppxYzrl
DropDown式メニューの幅を指定したいのですが、ToolStripMenuItemだと、
幅を指定しても無視されてしまいます。
ToolStripButtonであれば反映されるのですが、ToolStripMenuItemでも指定する方法を教えてください。


//指定しても無視される(文字に合わせた幅になってしまう)
var item = new ToolStripMenuItem("テスト");
item.AutoSize = false;
item.Width = 100;
this.toolStripMenuItem.DropDownItems.Add(item);


//これなら反映される。
var item = new ToolStripButton("テスト");
item.AutoSize = false;
item.Width = 100;
this.toolStripMenuItem.DropDownItems.Add(item);
2020/01/04(土) 18:54:04.23ID:kH3pRzgo
>>281
ContextMenuStripでAutoSize=falseにしてそれをDropDownに登録するのはだめなのか?
283デフォルトの名無しさん
垢版 |
2020/01/04(土) 23:39:17.56ID:oOekXYXc
>>281
やってみた感じ、DropDownが表示される時に
MenuItemの場合はWidthではなくてTextを使って横幅を評価しているみたいなのでダメっぽいねw
(AutoSize = falseにした場合、MenuItemの幅自体はちゃんと設定した値になっていることは
マウスオーバーした時のハイライトの枠の大きさで確認できる)

Labelの場合はAutoSizeをfalseにすればWidthもHeightも設定した値が
そのまま表示に反映されるようなので、これをプレースホルダー的に使うことは出来そう。
バッドノウハウ感全開だけどw

でもMenuItemの幅をわざわざ制御したい理由が思いつかんw
284デフォルトの名無しさん
垢版 |
2020/02/11(火) 16:42:09.82ID:IKSpGnXe
C#でPDF生成するのに定番のライブライはどれ?
2020/02/11(火) 16:57:55.37ID:+cYPhDtF
skiasharpかのう
2020/02/11(火) 17:48:40.11ID:SM6OROcH
iTextSharp
2020/02/11(火) 18:32:47.01ID:3sdew+Rs
TextBoxに、テンプレート的なデフォルト文字列を持たせたいのですが、
Formのコンストラクタで
textBox1.Text = "文字列";
という方法で指定すると、TextBoxが表示されてから何も変更してない状態でもCtrl+Zで文字列が消えてしまいます。

どうすれば、消えないようにできるでしょうか?
2020/02/11(火) 18:49:44.84ID:zRIDVkEW
>>287
試してみたけどこちらでは.Net3.5でも.Net4.62でも再現しない
念のためフォームのShown時のCanUndoを見たらfalseになっているからUndoが効くはずがない
どこの違いなのか分からないが文字列設定後かShown時にとりあえずtextBox1.ClearUndo()を入れてみたら
289デフォルトの名無しさん
垢版 |
2020/02/11(火) 20:57:38.89ID:b7fKfEtL
>>287
試さずに適当なので違ってるかも

デザイナーでtextBox1のTextの値をリセット(コンテクストメニューにある)すれば
>>288の指摘どおりになるんじゃないの?

恐らくザイナーでTextの値をいじったことがあるために、InitializeComponentで
空文字が代入されてるんじゃないか。

でなきゃアプリケーション設定か
2020/02/11(火) 21:01:04.04ID:zRIDVkEW
キーボード眺めて思ったけどCTRL+ZでなくてCTRL+Xしている可能性もあるなw
手入力じゃなくコード上の代入だとUndoできないんだよな
291デフォルトの名無しさん
垢版 |
2020/02/12(水) 01:52:31.19ID:CB9IiDBv
実務経験1年で月収80万稼げるエンジニアになった理由
https://www.youtube.com/watch?v=DrbbyGsHQic
意識が低いエンジニアこそフリーランスになれ
https://www.youtube.com/watch?v=nSEaAJlgjbQ
フリーランスエンジニアの週3労働ってどんな感じ?
https://www.youtube.com/watch?v=8yjoDCdbzMc
ぼくがスキルのない社畜ならこうやって脱する
https://www.youtube.com/watch?v=aae8xxbUlMM
初めて人を雇ったらもう二度とサラリーマンをやりたくないと思った話
https://www.youtube.com/watch?v=U0OCGRVLFsM
プログラミングは文系でも余裕で出来ます!理由を現役プログラマーが解説
https://www.youtube.com/watch?v=iBOeiSKBIW8
貧乏人こそ社会不適合者
https://www.youtube.com/watch?v=O3BT72BIBJI
元ド貧乏が教える】貧乏を抜け出すための2つの考え方
https://www.youtube.com/watch?v=IRrCgTy3ckc
より良いオファー貰ってるのに転職しないとか何考えてるの?
https://www.youtube.com/watch?v=i0J6uRhlj7o
292デフォルトの名無しさん
垢版 |
2020/02/14(金) 11:15:02.38ID:a5iC3cHy
>>285-286
>>284 です
PDFsharp というのが良かったのでこれにしました
2020/02/14(金) 12:17:04.07ID:Rj5e84UH
>>292
それ日本語の折り返しに対応してないとか、難あるよ。
294デフォルトの名無しさん
垢版 |
2020/02/14(金) 12:38:43.18ID:a5iC3cHy
日本語は必須事項ではないので多分大丈夫です
295デフォルトの名無しさん
垢版 |
2020/02/14(金) 12:47:36.23ID:7R4aPKWb
PDF仮想プリンタの存在前提で普通にGDI+で書けば楽だと思うけどな
Win10ならデフォで入ってるんだし
296デフォルトの名無しさん
垢版 |
2020/02/14(金) 13:04:12.74ID:a5iC3cHy
なるほど!
検討してみます。ありがとう!
297デフォルトの名無しさん
垢版 |
2020/02/28(金) 18:11:07.35ID:HAMXUqwp
win32のhage.rcファイルからhage.resを造って-win32res:hage.resでexeにリンクしてるとき

hage.rcの中身が
hogehoge BITMAP "filename.bmp"
のときは
Bitmap a = Bitmap.FromResource(hInst, "hogehoge");
で取得出来るのですが

hage.rcの中身が
456 BITMAP "filename.bmp"
だと
Bitmap b = Bitmap.FromResource(hInst, 456);
Bitmap b = Bitmap.FromResource(hInst, Convert.ToString((IntPtr)456));
Bitmap b = Bitmap.FromResource(hInst, Convert.ToString((IntPtr)((UInt16)456)));
とかで取得出来ないのですが
456を上手くBitmap.FromResource()に渡す方法は無いのでしょうか?
2020/02/28(金) 18:48:54.41ID:snfNueOm
https://referencesource.microsoft.com/#System.Drawing/commonui/System/Drawing/Bitmap.cs,8fd8c12a4ea73bbb
パブリックなのはないね
299デフォルトの名無しさん
垢版 |
2020/02/28(金) 19:02:19.22ID:HAMXUqwp
ありがとう
これだと自分でWin32APIのLoadBitmap呼んだ方が速い気がしないでもない
300デフォルトの名無しさん
垢版 |
2020/03/01(日) 05:48:57.42ID:wVHwYgLC
こっちは2018年かよ
雑談するには迷惑かからんでいいけど
301デフォルトの名無しさん
垢版 |
2020/03/01(日) 16:22:20.47ID:KSyofv5N
[DllImport("user32.dll", CharSet=CharSet.Auto)]
private static extern IntPtr LoadBitmap(IntPtr hInst, IntPtr id);
[DllImport("gdi32.dll")]
private static extern bool DeleteObject(IntPtr handle);

IntPtr p = (IntPtr)((UInt16)id);
IntPtr hBitmap = LoadBitmap(hInst, p);
Bitmap b = (Bitmap)Image.FromHbitmap(hBitmap);
DeleteObject(hBitmap);
return b;
でうまくいきました
CharSet=CharSet.Auto を書かなくても動くのですが
書かない場合だと LoadBitmapW ではなく LoadBitmapA の方が使われるようで
id が数値リソースのときは問題出ないのですが string でリソース名を指定するときに
参照されなくなるので書いておく方が良さそうです
IntPtr p = Marshal.StringToHGlobalAuto(rn); // OK
IntPtr p = Marshal.StringToHGlobalUni(rn); // OK
IntPtr p = Marshal.StringToHGlobalAnsi(rn); // CharSet.Auto 書かないときはこっちを書くと動作
302デフォルトの名無しさん
垢版 |
2020/03/02(月) 10:28:32.19ID:NX3+Q9hq
C#というより.NET Framework全般の問題かもしれませんが・・・
ビルドした実行ファイルの拡張子を7zにして開けると
   .rsrc(フォルダ)
   .text
   .reloc
というファイルが出てきます

このうち「.text」をエディタで開けると

「C:\Users\ユーザー名\source\repos\プロジェクト名\obj\Release\実行ファイル名.pdb」

の文字列がそのまま入っておりユーザー名まで見えてしまいます

プロジェクトのプロパティなど見てみましたが該当する文字列は設定されていませんでした

この文字列が入らないようにビルドするにはどうすれば良いでしょうか?
303デフォルトの名無しさん
垢版 |
2020/03/02(月) 10:29:26.56ID:NX3+Q9hq
あ、本スレは別でしたかすみません
2020/03/02(月) 10:31:33.41ID:nPQHiUH/
>>302
C#の問題じゃなくVisual studioとかのビルド側の設定の話だから該当するスレでやれ
305デフォルトの名無しさん
垢版 |
2020/03/02(月) 11:10:23.06ID:glnmwhpK
hoge.Dispose()って必ず呼ぶ必要ありますか?
ネットにあるサンプルでDispose()してるのと放ったらかしなのとあるようですが
放ったらかしでも問題無いとしたらわざわざDispose()呼ぶのはなぜですか?
2020/03/02(月) 11:55:33.00ID:OjHPSko6
>>305
必ず呼ぶ必要はないが呼んだ方が良い

o リソース解放のタイミングやスレッドが制御できないのでそれらに依存する場合不具合の温床になる可能性
o 無駄なオブジェクトの昇格が起きてしまいGCに悪影響が出る可能性

いずれも無視できる場合もあれば致命的になる場合もある
サンプル程度で目くじら立てる必要はまったくないが
本番では呼んだ方が良い
307デフォルトの名無しさん
垢版 |
2020/03/02(月) 12:09:29.55ID:glnmwhpK
なるほどありがとうございます
ちなみに
using(Graphics g = Graphics.FromImage(hoge)){
...
}
みたいなときスコープ抜けるとgのDispose()は呼ばれないですか?
抜ける前に自分でg.Dispose();しておく必要ありますか?
2020/03/02(月) 12:27:47.69ID:MTJ6Jwm2
disposeを自動で呼んでもらうためにusing構文がある
2020/03/02(月) 15:08:50.50ID:rG8m8EdX
>>307
せめてこのあたりは一読してから質問した方がいい
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/using-statement
310デフォルトの名無しさん
垢版 |
2020/03/02(月) 15:54:23.45ID:glnmwhpK
解決しました
これでコードが随分スッキリしました
https://clickan.click/idisposable/
311デフォルトの名無しさん
垢版 |
2020/03/02(月) 16:35:38.68ID:glnmwhpK
何か今までGCに任せれば良いやって適当に書いてたんですが
意外とDispose()呼ばないといけない場所多いんですね
312デフォルトの名無しさん
垢版 |
2020/03/02(月) 16:37:42.01ID:glnmwhpK
クラスを書く時デストラクタとDisposeを省略するなっていうのが今回得た教訓かも知れません
2020/03/02(月) 17:18:06.30ID:8o+Bfjp3
ちゃんとした製品にするようなソフトならケアするけど個人やチームで使う程度のちょっとしたツールだったら一切書かないな
314デフォルトの名無しさん
垢版 |
2020/03/02(月) 17:24:53.84ID:qKOTAeuh
グラフィック周りや通信周り、データーベース周りあたりはちゃんと書いといた方がいいんじゃねえか?
315デフォルトの名無しさん
垢版 |
2020/03/02(月) 18:39:31.60ID:eX7+1wsX
稼げるブログの始め方をブロガーが解説!副業や不労所得を作る
https://www.youtube.com/watch?v=CHn6tNCYAZM
第1回 ブログをどうやって始めるのか?初心者の頃に知りたかったことをブロガーがわかりやすく解説【ブログで稼ぐ】
https://www.youtube.com/watch?v=TEMUZvQSM1Q&;t=708s
第2回 ブログで不労所得1億円!?ブログでお金を稼ぐ仕組みを解説〜
イケダハヤトさんはブログで年間1.5億円の収入!【ブログで稼ぐ】
https://www.youtube.com/watch?v=eWw-RfbNP1g
第3回【学生向け】ブログで月1万円を稼いでいる実例をわかりやすく紹介〜
ブログやアフィリエイト入門。【ブログで稼ぐ】
https://www.youtube.com/watch?v=mjHp2Fqj9OE&;t=190s
第5回 月100万円を稼げるようになった体験談!副業でブログを開始し不労所得に!【ブログで稼ぐ】
https://www.youtube.com/watch?v=nwrlcNSdw0U&;t=523s
サラリーマンをやりながらどうやって副業をやっていたのか?スケジュールや作業量などを解説
https://www.youtube.com/watch?v=FGlGur0XC_k
2020/03/02(月) 19:08:02.78ID:rG8m8EdX
>>311
メモリーはGCでいいけど>>314が言うような通信、データベースとかファイルとかリソース掴む奴はDispose呼ばないと他のプロセスが掴めなくなったりするから必要なくなったらDisposeしといた方がいい
2020/03/02(月) 19:16:23.68ID:dv6bLfIQ
そしてHttpClientで大量のTIME_WAITを抱えると
2020/03/02(月) 20:10:59.40ID:UF2yd5CT
デストラクタはへたに実装しないほうが良いかもしれんぞ
2020/03/02(月) 20:13:55.05ID:sj+3ONQ9
また要件の定まらないくだらない議論始めるのか?
2020/03/02(月) 20:18:10.66ID:mQ4CLNjj
>>307
Graphicsの実装次第だよ
usingで後始末がされるためにはされるように処理を作成する必要がある

みんなが作ってて広く普及してるクラスなら多分大丈夫だけど
今回のプロジェクトで作成したばっかのクラスはテストやるまで信用するな
321デフォルトの名無しさん
垢版 |
2020/03/02(月) 20:37:39.86ID:4FWK+c4C
既視感しか感じない質問だからどうせアレだろと思ったら本気の質問だったのかなw
2020/03/02(月) 22:53:10.49ID:ywWMC8is
>>320
> Graphicsの実装次第だよ
はあ?
g.Dispose()を呼ばない実装なんてできるのか?w

> usingで後始末がされるためにはされるように処理を作成する必要がある
それはまた別の話な
323デフォルトの名無しさん
垢版 |
2020/03/02(月) 23:49:32.46ID:4FWK+c4C
まあ可能不可能ならこういうことは可能だろうね
public class Graphics : IDisposable
{
  void IDisposable.Dispose()
  {
  }

  public void Disposable()
  {
    ...
  }
}
2020/03/03(火) 00:51:00.55ID:uFujH6tR
>>323
public class Graphics
{
  void Dispose()
  {
  }
}

( ゚д゚)・・・
2020/03/04(水) 09:15:28.58ID:TuAQ3w56
プログラミングそのものの話ではないんですが、c#で他の機械とソケット通信してデータやり取りしてこちらからの指示やその応答でなんらかの処理を行うプログラムはどう作るのが一般的なのでしょう?

通信を行うプログラムと業務用にオペレータからの操作とその他を担うプログラムにわけて作ろうと思っています。
通信相手はIOTのマイコンのようなもので独自のプロトコルがTCP/IP上で規定されています。

通信プログラムと業務用のアプリのデータのやり取りはファイルとしてデータを保存するのも手ではあるのですが、読み書き遅いので、共有メモリ的な使い方とかメッセージ的な使い方にならないかな、と。
linux上でc言語ばかり使っているので、どうするのが一般的なのかよく分かっておりません。

よろしくお願いします。
326デフォルトの名無しさん
垢版 |
2020/03/04(水) 09:44:00.83ID:hHbt2ovK
他の機械がWindowsならVNCサーバー入れるのが一番楽
2020/03/04(水) 09:51:06.45ID:TuAQ3w56
>>326
ありがとうございます
通信相手はIoTの小さなマイコンでOSはありません
2020/03/04(水) 09:51:13.72ID:VYRn8ATr
質問がごちゃっとしてるけど
要はローカルマシン内でプロセス間通信したいってこと?
今はgRPCが推されてるんじゃね 知らんけど
2020/03/04(水) 10:18:47.95ID:TuAQ3w56
>>328
わかりにくくてすいません
二つあって、ソケット通信するプログラムと業務用のプログラムを分けて作る場合の普通の作り方です

ソケット通信するプログラムは言語に付属してるライブラリをそのまんま使うしかないなと思ってます
プロトコルは規定されてるのでうまく作れないならcで作るしかないかな、と

業務用のアプリとソケット通信するプログラムのIPCはc#でどうやるのがWindowsの流儀なのか、お尋ねしております

ご教示いただいたgRPCは後者についての情報ですね
はじめて聞く技術なのでわかっておりませんが、参考とさせていただきます。少し道具立てが大きそうですね

ありがとうございます
330デフォルトの名無しさん
垢版 |
2020/03/04(水) 10:24:23.69ID:hHbt2ovK
>linux上でc言語ばかり使っているので、どうするのが一般的なのかよく分かっておりません。

「、」の前後で矛盾してるな
2020/03/04(水) 10:27:39.48ID:ITD9wOqz
普通にSocket使うけどな
2020/03/04(水) 10:36:36.26ID:TuAQ3w56
>>330
普段はlinuxでc言語ばかり使っています
Windowsでc#を使うことがなかったので、どういうものが普通とされているのか分かっておらず、戸惑っております
2020/03/04(水) 10:37:16.05ID:TuAQ3w56
>>331
IPC的なものは使わずにソケット通信すると言うことですか。なるほど。
2020/03/04(水) 10:51:26.57ID:VYRn8ATr
TCP/IP通信自体は.NETにもSystem.Net.Sockets.SocketやらSystem.Net.Sockets.TcpClientやら用意されてる
TCP/IP上で独自プロトコルならこの辺使うけどIPCでは普通直接は使わない
2020/03/04(水) 11:10:56.42ID:ITD9wOqz
>>334
いや325に独自プロトコルって書いてあったんでな
2020/03/04(水) 11:18:37.67ID:TuAQ3w56
>>334、335

わかりにくくてすみません
IoTデバイスとの通信はTPCIP上で独自のアプリケーションプロトコルが規定されてて、それに従います

それをやる通信用のプロセスと別建ての業務用のプロセスの間でもデータのやりとりを行う必要があるのですが、IPCはどうやって普通は実現してるのかがC#を使う上でわかっておりません
2020/03/04(水) 11:37:01.00ID:nNNW6i++
プロセス間通信って、共有メモリみたいな奴か?
2020/03/04(水) 11:58:57.18ID:TuAQ3w56
>>337
他にも組み合わせて使うと思いますが、その通りです。
2020/03/04(水) 12:31:07.29ID:TuAQ3w56
ど素人め、定番はこれだって回答がすぐにないのは
ひょっとすると、プロセスごとにわけて機能を作り込むような考え方はWindowsというかC#というかわからないですが、一般的ではないのでしょうか?
2020/03/04(水) 12:55:31.61ID:RbQqNGaU
触っちゃいけない人だったか
2020/03/04(水) 13:05:25.33ID:TuAQ3w56
>>340
私の書いた文はわかりにくいかもしれませんが、そのご指摘はどういう意味なのでしょうか?
342デフォルトの名無しさん
垢版 |
2020/03/04(水) 13:37:21.24ID:SkBOTqi1
>>341
自己紹介だと思っておけばいいよw
あなたは普通に質問してるだけだと思う。問題があるのは彼の方だろう。
2020/03/04(水) 13:43:31.55ID:pkFzTgEj
普通の方法があるんじゃなくて目的に応じて複数の方法があるという当たり前の話なだけなので
普通の普通の連呼されてもこんな方法もあるよって情報が増えるだけやぞ
既にもらった情報で自分の目的に合致するのか一旦実践した方がいいんじゃねえの

なんか最初のレス見る限りメモリマップトファイルとかウィンドウメッセージで事足りる話に見えるが
2020/03/04(水) 13:57:38.59ID:ITD9wOqz
元々のSocketはプロセス間通信用
SockAddr の AF_UNIXがそれ。
Windowsは長い間、AF_UNIXをサポート
していなかったが、去年ぐらいからwin10で使えるようになっている。(デスクトップとWSLの場合)

いつディスコン喰らうか判らない高位ライブラリーを使うか、
自分に技術蓄積がある(?)下位ライブラリーを使うかの判断はケースバイケースでしょぅね

幸運を
2020/03/04(水) 14:38:19.70ID:TuAQ3w56
>>342
なるほど

>>343
おっしゃることはよくわかります
抽象的でフワフワしてる質問であることも承知しております
その上で、デファクトスタンダードというかどこでもこんな方法よく使ってるよというご意見があればと。
手法についてご教示ありがとうございました

>>344
そうですね
一度使い始めると、それなりに長い寿命のソフトになってしまうので、悩ましいところです
簡単に捨てられるような技術だと
AF_UNIXかそれともINETでループバックで使うのもありですが、難しいですね

ありがとうございます
2020/03/04(水) 17:35:15.89ID:/myb4o4P
いろいろとアドバイスしてくれてる人たちに
ど素人め
と罵倒したのはなんだったの?
2020/03/04(水) 18:01:30.38ID:TuAQ3w56
>>346
ははは
そう解釈されましたか

識者「ど素人め、定番はこれだ」
私 なるほどー

という意味で書いたのですが、誤読を誘発してしまいましたね

私が他者へど素人めと言ってるわけではなく、識者ならこんなフワフワした質問は、パッと答えてくれるかなと思って書いたのです
2020/03/04(水) 18:01:58.08ID:VYRn8ATr
346
それは誤読
2020/03/04(水) 18:19:39.77ID:yiNVycVp
>>325
>通信を行うプログラムと業務用にオペレータからの操作とその他を担うプログラムにわけて作ろうと思っています。

プロセスとかプログラムを分けて作りたい理由って何なの?
書いてる内容だけだとライブラリ化すれば十分なように思えるけど
2020/03/04(水) 18:32:10.50ID:TuAQ3w56
>>349
機能が違うのが一番の理由です

設計するにあたって、通信の機能は独自のプロトコルがあるのでそれなりに考慮しなきゃいけないことが多くて、通信に専念させたいのですね

業務用のプロセスは、こちらはこちらでUIがありますので、通信を行う機能とは考察しなきゃいけないところが違います

また、両者の動作タイミングが全く違うこともありますね
351デフォルトの名無しさん
垢版 |
2020/03/04(水) 18:41:49.49ID:SkBOTqi1
機能が違うだけならプロジェクト分けてdll化すればよいだけなので、
普通に考えれば不特定多数(いやらしい言い方だけど)からのアクセスが要件なんでしょうたぶん

知らんけど
2020/03/04(水) 18:49:53.82ID:TuAQ3w56
>>351
動作タイミングが違いますので、dll化では実現できないと考えています。

一つのプロセスで実現するにはマルチスレッド化せざるを得ないと思うのですが、そうすることは暗黙でみな承知している事柄なのでしょうか?

マルチスレッドでもマルチタスクでも似たような考察点はあるのでどちらを採用しても作成する難易度は大差ないのだとは思いますが、知識が余りに不足しており、マルチスレッドスレッド化したプロセスのデバッグは私では困難極まりないとも考えています。
353デフォルトの名無しさん
垢版 |
2020/03/04(水) 18:56:27.09ID:SkBOTqi1
>>352
アクセスさせる相手が常に同じならプロセス間通信なんてまどとっこしいことを
する意味はないような気がする。

マルチスレッドはもちろん落とし穴いっぱいだけど、過度に恐れる必要はないし
そこまで難易度高くないと思う。
354デフォルトの名無しさん
垢版 |
2020/03/04(水) 18:58:21.75ID:SkBOTqi1
少なくとも自分はプログラミング始めて半年でも普通に使ってましたよw
2020/03/04(水) 19:04:15.58ID:GfItxBVT
スレッド間通信だって、プロセス間通信だって同じことじゃん
プロセスを分けたからって通信にだけ専念するなんて造りにはできない

通信タスク⇔アプリタスク

と並列に動く2つのタスクの接点処理を作ってやらないと動かないぞ
2020/03/04(水) 19:08:19.47ID:TuAQ3w56
>>353
ありがとうございます

考え方ですね

勿論、通信と業務双方まとめて考察できてモノシリックな作りに出来たらそれはそれで良いのだと思います。

通信機能は状態遷移に従って色々やらせる事があるので、業務用の機能と合わせて考察するのは、私にはなかなか難しいのです。

ちなみに、可能でしたらご教示頂きたいのですが、マルチスレッドのプログラムのデバッグ手法はどのようなものでしょうか
webや良書など、参考にされたものがありましたら教えていただけませんでしょうか

マルチタスクのプロセス構成で、どうしてもsemaphore的な扱いの部分で考え落ちのバグがあり、状態遷移に基づいて試験してもバグをかなり流出させてしまったことがありまして。
勿論、分岐網羅や境界値分析で一通り全ての試験をこなしてはいたのですが
まして未経験のスレッドだとどうなるやらわからず二の足を踏んでおります。
2020/03/04(水) 19:12:25.31ID:TuAQ3w56
>>355
ありがとございます
それはその通りです

機能ごとに作るのは、仰っている接点をキチンと作ることでもあります。
通信した結果をなんらかのIPC機能を使って業務用のプロセスに通知、逆に業務用のプロセスからの指示を通知するように明示しておきたいのです

一種の責任分界点としての役目もありますね
2020/03/04(水) 19:18:43.16ID:GfItxBVT
そもそも通信タスクとアプリタスクってどっちが親なん?

アプリタスクの常駐処理って何やってるの?
通信タスクに最新データが来たら通知して欲しい?
アプリタスクが通知タスクの受信バッファを定期で確認する?
2020/03/04(水) 19:18:54.88ID:E+0JWbBM
ガガイのガイジ
2020/03/04(水) 19:20:34.90ID:w6hLhDKv
>>347
少なくとも340はそう捉えて、突然罵倒する危ない人なんだなと感じたんだと思うよ
俺は正しく解釈したけど340に対するレスがずれてたんでもしかして340の解釈が正しかったのか?と勘ぐっちゃった
2020/03/04(水) 19:22:05.72ID:uE9oMay2
てか実際にローカル同士の対話なのかそこすらハッキリ情報出してねえだろ
要件の定まらねえフワフワした質問にはフワフワした回答しかこねえよ
2020/03/04(水) 19:30:41.74ID:TuAQ3w56
>>358
親子関係は特に考えていませんね
24時間運用することを想定してます

業務用のプロセスはデバイスの稼働状況とセンシングしてるデータのモニタリング、及びそれらの蓄積。
必要に応じてデバイス(のさらに先にいる装置)に対してある種の指示を行うことを想定してます。

センシングしてるデータはそのまんまではなく、モニタするときには簡単な加工(FFT程度)して表示させるつもりです。

業務用のプロセスは、可能だったらポーリングではなく、イベントドリブンな形で受信を契機に即座に表示してほしいのです。
2020/03/04(水) 19:34:47.36ID:mhPO8lOa
親子なんか意識する必要ないしなあ。
悪いがここ馬鹿ばかりだから相談しても無駄だぞ。
2020/03/04(水) 19:39:28.76ID:x9n6fSic
>>360
現実に誤読された方がいるので表現が良くない点があったのでしょう

ただ、見直しても ど素人… の文言は私が他者に向かって発言している文言だと解釈するのは難しいのではないかと思っています
365デフォルトの名無しさん
垢版 |
2020/03/04(水) 19:47:15.17ID:yCw8CYmc
モノシリですね判ります
2020/03/04(水) 19:48:21.42ID:K/lPlqdw
ちょっと、見返してみましたが、もはやc#そのものとかなり離れた会話になってしまいました

すみません

c#で実装するため、下らない質問でも書いて良いスレと書いてあったので、このスレに書いてしまいましたが、あまり相談するにあたり適切だとは言えない内容となってしまいました

長々とこれ以上続けるのも申し訳ないので、この辺りでやめておくことにします

ご教示頂いた方、ありがとうございました
367デフォルトの名無しさん
垢版 |
2020/03/04(水) 20:07:19.28ID:SkBOTqi1
揚げ足取りだけどmonolithicねw
これおじさん世代に間違って覚えてる人多し
2020/03/04(水) 20:14:20.76ID:4LAYe0JO
>>367
ご指摘ありがとうございます
ははは、恥ずかしい
2020/03/04(水) 20:26:04.25ID:5mLImXyq
>>362
だったら通信開始した時点で他の処理は動いて欲しくないんだから
別プロセスなんかにする必要ないじゃん
問題起きるだけだよ

また通信が途中で死んだとき
途中までダウンロードしたデータどうするの?
また、その後のアプリの動作はどうしたい?(最新が取れるまで完全に止めたい?古いデータで動かしたい?)

とか色々ある仕様を決めて
初めて別プロセスにするって仕様が決まるんであって
わかりにくいから分けちゃったは余計面倒で複雑になっちゃうぞ
別プロセスにしたいなんて受信自体はアプリが死んでても生きててもいつでも動いてほしくてとにかく受信バッファを素早くいつでも処理してほしい的な
要望でもないとやらないよ
2020/03/04(水) 20:37:11.14ID:4LAYe0JO
>>369
そう言う考えもありますね
ありがとうございます
2020/03/04(水) 20:52:38.13ID:Yqjto87s
>>364
いや普通に誤読するだろ
最低でも
> 「ど素人め、定番はこれだ!」って言う回答がすぐにないのは
程度は書かないとわからんよ
そもそも「ど素人め」なんて言う言葉が本当に必要だったのか?
2020/03/04(水) 20:55:56.28ID:5mLImXyq
仮に
通信タスクが通信し受信バッファに溜め込んで
アプリタスクが受信バッファを定期で見に行く造りにした場合

・通信タスク受信バッファ書込中(アプリタスクは受信バッファには触れない)
・アプリタスク受信バッファ読取中(通信タスクは受信バッファには触れない)

上記2つの状態を解消する何らかの仕組みは必要
2020/03/04(水) 21:03:04.11ID:FUOXjc3Y
>>372
そうですね
なんらかの形で排他を行い、リングバッファのような仕組みでデータの受け渡しを行なって、プロセス相互にメッセージを送受信してイベントの発生を通知できたらいいですね。
ありがとうございます
2020/03/04(水) 22:20:56.21ID:yiNVycVp
>>350
機能が違うからプロセス分けるってのはC#では一般的ではないね
ネットワークI/Oを担当する部分と、業務ロジック/UIを担当する部分で機能は違っても
両方存在しないとユースケースが完結できないのであれば一般的には一つのプログラムにする

通信機能を複数のプログラムで共有したい場合だったり
それぞれのプログラムの起動/停止タイミングの違ったり
耐障害性を考慮したプロセス監視要件が違うケースみたいに
プログラムを分ける必要のある要件があれば別

プロセス分ける必要がなければC#の場合はマルチプロセスに比べて
マルチスレッドのほうが道具も揃ってるしシンプルに作れる
2020/03/04(水) 22:27:53.31ID:5mLImXyq
>>372
解消じゃなくて実現だったw

書いてるうちに逆に書いてそのままだったすまんこ
2020/03/04(水) 22:30:17.84ID:GUfzIi7v
UI使わない時(ログオフ時)でも常に通信してる必要があるなら
通信部だけ独立させてサービス化することはあるな
2020/03/04(水) 22:39:38.18ID:yiNVycVp
プロセス間通信は.NET FrameworkならWCFを使うのが一般的だった
(他は.NET RemotingやIpcChannelとか)

ただ.NET Coreだと上の3つはサポートされてないから
標準でとなるとNamed PipeかSocket、あとはHTTPサーバーを立てるくらい
どれ使ってもWCFと違って型付きでデータをやり取りできないので
マーシャル/アンマーシャルは外部ライブラリ使ったりして追加実装する必要がある

ローカル限定ならまずはNamed Pipeから考える
通信用プロセスと業務用プロセスが別のマシンで稼働する可能性があったり
それぞれ別の理由でスケールしていく可能性があるなら
少し大げさだけどRabbitMQみたいなメッセージングも選択肢として検討するかな
2020/03/04(水) 22:40:48.64ID:5mLImXyq
>>374
スレッドセーフのサンプル探すのが楽だよね
プロセス間通信のサンプル探すよりはいいと思う

書込中と読取中の2つのガードが必要なのに片方しかやってないのが多い
それも仕方ない話でこれ以上は詳細な仕様決めが必要になる
2020/03/04(水) 22:45:34.67ID:Tg1eDdkO
>>377
gRPCじゃね?
2020/03/04(水) 23:06:44.84ID:yiNVycVp
>>379
gRPCも選択肢としては考えるけど
ローカル限定のプロセス間通信なら大げさすぎる気がするし
リモートも考慮するなら業務プロセスが死んだ時の対応とかで
メッセージングにしといたほうが信頼性が高い
2020/03/04(水) 23:36:06.22ID:ITD9wOqz
ローカル限定ならMSMQが楽だけどね
パフォーマンス的にOKかどうかは要件次第。

DCEは悪用されまくってセキュリティー強化
で既存ソースが動かないってのはあるが、
スレッド生成から含めてランタイムが面倒見てくれるので便利。
2020/03/04(水) 23:37:26.09ID:FUOXjc3Y
皆さま

追加でご教示ありがとうございます
2020/03/04(水) 23:54:13.27ID:nNNW6i++
Ruby では、

IO の派生クラスが、抽象クラスのBasicSocket で、
その具象派生クラスに、TCPSocket/TCPSserver, UDPSocket, UNIXSocket/UNIXServer がある。
TCP/UDP, UNIX ドメインのストリーム型ソケット

socket は、プロセス外部との通信 (プロセス間通信、インターネット) を実現します

直接HTTP を扱わず、TCP で書くことも出来るが、
HTTP 以外でも、TCP を使うプロトコルは、TCP で書くことも出来るが、

普通は、ほとんどのプロトコルで、既に公開されたライブラリを使う、と書いてある。
つまり、これらを使って自分で書くことはない

HTTP などの既に公開されたライブラリを使う!
2020/03/04(水) 23:58:55.88ID:ITD9wOqz
ちくわ大明神
2020/03/05(木) 00:13:16.01ID:eAZwhj1s
現れたなRuby妖怪…
2020/03/05(木) 10:52:16.03ID:BSkbts2i
>>374
>両方存在しないとユースケースが完結できないのであれば一般的には一つのプログラムにする

それは機能分割できてないだけでは?
別レイヤとして処理を依頼する、その結果を受け取るで済む話のような?
2020/03/05(木) 12:40:03.16ID:TOZ2Advl
mqttとか
2020/03/06(金) 04:08:23.78ID:4zsVrvlG
C#でpandasに相当するのてDataTableですか?
2020/03/06(金) 10:32:43.31ID:3H/1PUe0
DataGridView の DataSource として List をバインドすると完了までに時間がかかる(List の Item 数が約816万件ある)ので、
徐々に追加・表示されるようにしたいのですが、どうすればよいでしょうか。
2020/03/06(金) 10:53:44.65ID:+Or8jz1j
バインディングはあきらめて仮想モード
http://home.a00.itscom.net/hatada/csharp/datagridview02.html
まあ816万件のほうをなんとかすべきだけどね
391デフォルトの名無しさん
垢版 |
2020/03/06(金) 12:12:19.81ID:zx4TP0wl
816万件表示して全部目で見るのかって話だな
2020/03/06(金) 14:50:23.81ID:FB3Rm5f4
たしかに800万件を全てバインドしてしまうという考え方が乱暴かもね。
そうすれば楽だとは思うけど、別の方法を考えた方が良いと誰に聞いても言うんじゃないかな
393デフォルトの名無しさん
垢版 |
2020/03/08(日) 17:03:53.86ID:NoMbfY/N
質問です。
Adaptive Code 第2版を読んでいるのですが、
SQLを用いたサンプルプログラムの実行がうまくいかず、困っています。
サンプルは以下のものを使用しています。
https://github.com/AdaptiveCode/AdaptiveCode/tree/master/Chapter12/ch12-b_st_rd-injection/DependencyInjectionWpf

SQL Serverとの接続をする部分で例外を出します。
具体的には、以下のソースファイルの26行目です。
https://github.com/AdaptiveCode/AdaptiveCode/blob/master/Chapter12/ch12-b_st_rd-injection/DependencyInjectionWpf/ServiceImplementations/TaskServiceAdo.cs

エラーメッセージは、以下のとおりです。

System.Data.SqlClient.SqlException: 'SQL Server への接続を確立しているときに
ネットワーク関連またはインスタンス固有のエラーが発生しました。
サーバーが見つからないかアクセスできません。インスタンス名が正しいこと、
および SQL Server がリモート接続を許可するように構成されていることを確認してください。
(provider: Named Pipes Provider, error: 40 - SQL Server への接続を開けませんでした)'

動作環境はWindows 10、Visual Studio Community 2019です。
SQL Server Express 2016 LocalDB はVSと同時にインストールしてあります。

解決策をご教示いただきたく、よろしくお願いします。
2020/03/08(日) 17:44:31.79ID:K4cIg85y
>>393
using(var connection = new SqlConnection(settings.GetSetting("TaskDatabaseConnectionString"))){
この次の行で止めてconnection.ConnectionStringの値を確認してみ
LocalDBしかインストールしてないなら接続文字列は "(LocalDB)\{LocalDBインスタンス名}" みたいな形式でないと接続できないよ
このあたりを参考にしてね
https://blog.clock-up.jp/entry/2016/07/27/vs-sqlserver-localdb
395393
垢版 |
2020/03/08(日) 18:15:24.24ID:vsuFdxy2
>>394
早速ありがとうございます。

connection.ConnectionStringの値は、以下のようになっていました。
ConnectionString = "Data Source=(local);Initial Catalog=TaskDatabase;Integrated Security=True;Application Name=Task List Editor"

ソースコードを読み解いてみると、接続文字列は以下のApp.configから読み取るようになっていました。
https://github.com/AdaptiveCode/AdaptiveCode/blob/master/Chapter12/ch12-b_st_rd-injection/DependencyInjectionWpf/UI/App.config

そこでApp.config内の接続文字列を"Data Source=(LocalDB)\MSSQLLocalDB;.....(以下省略)"と変更したところ、
エラーメッセージが変化しました。以下のとおりです。

System.Data.SqlClient.SqlException: 'Cannot open database "TaskDatabase" requested by the login. The login failed.
Login failed for user '{自分のPCのホスト名}\{ユーザー名}'.'

どうやらこれだけでは解決しないようなので、
教えていただいたブログの情報を参考に設定を変更してみます。
それでもうまく行かなければまたご質問いたします。
2020/03/08(日) 18:28:28.32ID:K4cIg85y
>>395
> System.Data.SqlClient.SqlException: 'Cannot open database "TaskDatabase" requested by the login. The login failed.
Visual Studio入れてるなら 表示 - SQL Server オブジェクト エクスプローラー をクリックして
SQL Server の下の データベース を展開して接続したいデータベースがあるかを確認して
(そもそもデータベース作ってあるの?)
2020/03/08(日) 18:32:39.19ID:AVAsnwFk
>>393
出版社に送ってやれよ

くだらんコードのせいでプロジェクトが暗礁に乗り上げた
エラーの理由もわけがわからない
これがadaptive codeってことでよろしいですか?

って
398393
垢版 |
2020/03/08(日) 19:12:05.97ID:vsuFdxy2
>>394
教えていただいた解説ブログを参考に設定を確認しました。

・LocalDB の存在確認
コントロールパネルの「プログラムと機能」にMicrosoft SQL Server Express 2016 LocalDB が存在しており、インストールはできているようです。

・有効な LocalDB のインスタンス名を確認
解説と同様に、sqllocaldb infoをコマンドプロンプトで実行すると、以下が表示されました。
 MSSQLLocalDB
 ProjectsV13

・SQL Server Data Tools for Visual Studio の存在確認
コントロールパネルの「プログラムと機能」には存在しませんでした。しかしVisual Studioの「ツール」→「ツールと機能を取得」を
確認すると「SQL Server Data Tools」にはチェックマークが入っており、インストールはできているように見えます。

・Visual Studio に LocalDB インスタンス名を設定しておく
"(LocalDB)\MSSQLLocalDB" が既に設定されていました。

・Visual Studio 内 Server Explorer から LocalDB 接続を行う
解説の通りmdfファイルを作成しました。接続文字列を確認し、サンプルプログラムのApp.config内の接続文字列を、以下の通り変更してみました。
 "Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename={先ほど作成したmdfファイルのパス};
 Initial Catalog=TaskDatabase;Integrated Security=True;Application Name=Task List Editor"

すると、発生する例外が変わり、以下の通りになりました。
 System.Data.SqlClient.SqlException: 'Cannot attach file '{先ほど作成したmdfファイルのパス}'
 as database 'TaskDatabase' because this file is already in use for database '{先ほど作成したmdfファイルのパス}''

>>396
「SQL Server オブジェクト エクスプローラー」
を開いたところ、「SQL Server」→「(localdb)\MSSQLLocalDB」→「データベース」
のところに解説ブログに従って作成したmdfファイルのパスが表示されています。(これで「作ってある」と言えるのかがよく分かりませんが…)
399393
垢版 |
2020/03/08(日) 19:36:27.17ID:vsuFdxy2
すみません、どうやら解決しました。

サンプルプログラムのTaskDatabaseプロジェクトの「プロパティ」→「デバッグ」を見たところ、
「ターゲット接続文字列」が以下のように記載されていました。

Data Source=(localdb)\ProjectsV13;Initial Catalog=TaskDatabase;Integrated Security=True;Pooling=False;Connect Timeout=30

また、「SQL Server オブジェクト エクスプローラー」をよくよく見てみると、
「SQL Server」の下には「(localdb)\MSSQLLocalDB」のほかに「(localdb)\ProjectsV13」があり、
その下に今回のサンプルプログラムで使用する「TaskDatabase」が作成されていました(いつの間にできた??)。
そこで接続文字列のデータソースを「(localdb)\ProjectsV13」に変更したところ、サンプルプログラムがうまく動作しました。

SQL周りの知識が全く無いので、MDFファイルがなぜ、いつの間に作成されていたのか、、、
まだ理解できていないところはありますが、とりあえず先には進めそうです。
教えていただいた皆様、ありがとうございました。
400デフォルトの名無しさん
垢版 |
2020/03/08(日) 19:55:20.25ID:qHSkoWsm
実務経験1年で月収80万稼げるエンジニアになった理由
https://www.youtube.com/watch?v=DrbbyGsHQic
意識が低いエンジニアこそフリーランスになれ
https://www.youtube.com/watch?v=nSEaAJlgjbQ
フリーランスエンジニアの週3労働ってどんな感じ?
https://www.youtube.com/watch?v=8yjoDCdbzMc
ぼくがスキルのない社畜ならこうやって脱する
https://www.youtube.com/watch?v=aae8xxbUlMM
初めて人を雇ったらもう二度とサラリーマンをやりたくないと思った話
https://www.youtube.com/watch?v=U0OCGRVLFsM
プログラミングは文系でも余裕で出来ます!理由を現役プログラマーが解説
https://www.youtube.com/watch?v=iBOeiSKBIW8
貧乏人こそ社会不適合者
https://www.youtube.com/watch?v=O3BT72BIBJI
元ド貧乏が教える】貧乏を抜け出すための2つの考え方
https://www.youtube.com/watch?v=IRrCgTy3ckc
より良いオファー貰ってるのに転職しないとか何考えてるの?
https://www.youtube.com/watch?v=i0J6uRhlj7o
2020/03/08(日) 22:53:36.55ID:A6vL8TvC
>>400
そんなに稼いでるのにYouTubeで小金稼ぎ必死だな
402デフォルトの名無しさん
垢版 |
2020/03/09(月) 18:01:09.63ID:T4gz2l9R
>>399
君はそのうち本名とかアカウントとかパスワードとか晒すことになりそうだ
2020/03/10(火) 06:30:05.96ID:iYHWDDjZ
JSON-RPC(http)のクライアントを作っていて、自前のコードで一通りできてますが、コード量が非常に多いです。

NuGetで探すと.NET Core用のものが多いのですが、今回は.NET framework 4.6.1です。
JSON-RPCクライアントに向く軽量ライブラリってないでしょうか?
System.Text.JsonなどでJSONパースだけをさせるとかが定番なのでしょうか?
404デフォルトの名無しさん
垢版 |
2020/03/10(火) 13:21:19.39ID:X+eVfRrs
同じですか?
改変前
Image img = this.picbox.Image as Bitmap;
if(img == null){
img = new Bitmap(this.picbox.Width, this.picbox.Height, PixelFormat.Format32bppRgb);
this.picbox.Image = img;
}
改変後
Image img = this.picbox.Image as Bitmap ??= this.picbox.Image = new Bitmap(this.picbox.Width, this.picbox.Height, PixelFormat.Format32bppRgb);
2020/03/10(火) 13:38:27.04ID:upXRqZ12
自分で判断できないようなコードを書くんじゃない
> this.picbox.Image as Bitmap ??=
この部分でコンパイルエラーになるはずだが
2020/03/16(月) 18:59:53.15ID:H8bmY3hF
新型コロナウィルス対策

一般人「手洗い、うがい、マスク」
c# プログラマ「ウィルス対策はマイクロソフトazule にまかせるよ。あとWindows ディフェンダー!」
407デフォルトの名無しさん
垢版 |
2020/05/02(土) 08:52:50.92ID:0mmjTk37
Console.Read() とか Console.In.ReadLine() とかじゃなくて
FileStream に stdio を指定して読み込む方法を教えて下さい
2020/05/02(土) 09:53:52.07ID:z8QGl02A
FileStreamは文字通りFileStreamであってFILE*に対応するのはSreamだよ
標準入力を指すStreamならConsole.OpenStandardInputで取得できる
2020/05/03(日) 09:16:50.07ID:THymLCbI
スタックに積んでから取り出すと何故か値が変化しているという謎の現象に3日間ぐらい悩んだが
ついさっきプロパティは参照型だという事実に気付いた
2020/05/03(日) 14:44:07.05ID:H3ipvGy5
>>409
?
メソッドの一種だぞ
2020/05/03(日) 15:08:51.56ID:SHPPims3
そのプロパティが参照型 と言いたかったんだろう多分
412デフォルトの名無しさん
垢版 |
2020/05/05(火) 22:26:08.07ID:nSEWNo5U
すみません。今、mciというのを使って、音楽再生アプリを作っているのですが、
Windowsメディアプレイヤーみたいに、曲の進捗状況を示すバーみたいのって、
コンポーネントにないでしょうか?
413デフォルトの名無しさん
垢版 |
2020/05/05(火) 22:30:28.96ID:nSEWNo5U
プログレスバーはダサいから、いやです。

理想を言うとDMMプレーヤーみたいに進捗状況を青いのがニョキニョキ伸びるのが
カッコ良くていいです。

自作するとしたらフォームに青いニョキニョキをグラフィッククラスで描画するんでしょうか?
414デフォルトの名無しさん
垢版 |
2020/05/05(火) 22:46:23.76ID:3RO6WiLW
mci では無理やろ
415デフォルトの名無しさん
垢版 |
2020/05/05(火) 23:01:45.91ID:ZjI6EVx3
>>413
エロ動画とか見ないからDMM Player知らんのだけど、要するに、

(1) ダウンロード済みのパーセンテージを帯の長さで
(2) 再生位置をスライダーの位置で

表示するありがちな奴?
Windows Formsにそんなのないので自作するしかないね
2020/05/06(水) 00:49:20.54ID:5PXshCOx
>>413
細かいツッコミするとコントロールを描画することになる
フォームに直接描画してもいいけど扱いが面倒になる
https://dobon.net/vb/dotnet/graphics/drawcontrols.html
https://dobon.net/vb/dotnet/graphics/drawvisualcontrol.html
進捗状況は>>415の通り自分で取ってこなきゃならないけどmciがどうなっているのかは知らない
2020/05/06(水) 10:14:22.23ID:YZbQDwIi
WPFで適当に作ったら?
2020/05/07(木) 08:09:53.53ID:uSRgeDXp
なぜ@は正常にダウンロードできないのか教えて下さい
よろしくお願いします

@aaa.csvが作成されるのですが0 byteの空のcsvです

var url1 = new Uri("http://tekitou/xxx.csv";);
var csv1 = "aaa.csv";
var wc1 = new WebClient();
wc1.DownloadFileAsync(url1, csv1);

Aこれは正常にダウンロードできます

var url2 = "http://tekitou/xxx.csv";;
var csv2 = "bbb.csv";
var wc2 = new WebClient();
wc2.DownloadFile(url2, csv2);

B上の2つを1つのメソッドの中に並べてから実行するとなぜかaaa.csv、bbb.csvともに正常にダウンロードできます

var url1 = new Uri("http://tekitou/xxx.csv";);
var csv1 = "aaa.csv";
var wc1 = new WebClient();
wc1.DownloadFileAsync(url1, csv1);

var url2 = "http://tekitou/xxx.csv";;
var csv2 = "bbb.csv";
var wc2 = new WebClient();
wc2.DownloadFile(url2, csv2);
419デフォルトの名無しさん
垢版 |
2020/05/07(木) 08:23:39.67ID:454F8U2c
>>418
asyncって何か知ってる?
2020/05/07(木) 08:32:15.14ID:uSRgeDXp
>>419
はい!非同期にファイルをダウンロードするメソッドです!
2020/05/07(木) 08:52:34.58ID:3Zb9YKCz
同期・非同期の両方を使うのは、おかしい。
JavaScript ならクライアント側だから非同期で、Ruby ならサーバー側だから同期

非同期は、同期のような書き方はできない。
コンテキスト・文脈が異なるから、
異次元との通信で、タイムライン・時間の進み方も異なる

だから異次元通信のような、独特なタイミングの調整が必要!
2020/05/07(木) 09:03:48.11ID:z0QaEyrp
>>418
基本通りDownloadFileCompletedイベントを使え
キーワードのわかるものは自分でまずググれ
>>421
お前はいらんから消えろ
2020/05/07(木) 09:05:22.09ID:PKEvLkh9
質問の趣旨からは外れるけど、System.Net.WebClientは古いから、新規開発ではSystem.Net.Http.HttpClientが推奨だったかと
2020/05/07(木) 09:05:44.40ID:K/pi2iFO
>>418
たとえばMainにその4行だけ書いたら
1の場合ダウンロード始める前にプロセス終了するけど
2020/05/07(木) 09:12:23.14ID:uSRgeDXp
>>421
正直に言うとよく分かりません!

目的はwindowsフォームで作ったアプリで使う事です。
具体的には、DownloadFileCompletedイベントを使い、
ダウンロード完了を待ってCSVファイルにアクセスしたいと思いました
実はこれは成功しています。

コンソールアプリでも同様のことができないかとチャレンジしてみたのですがこの通りダメでした。
「非同期」について根本的なことが理解できていないと指摘されているのだと思ってます。
もう少し調べてみます!
2020/05/07(木) 09:13:22.78ID:uSRgeDXp
>>422
windowsフォームアプリで使っているので、それを参考に同じように書いてみましたがやはり空のファイルしかダウンロードできません!

static void Main(string[] args)
{
var url1 = new Uri("http://tekitou/xxx.csv";);
var csv1 = "aaa.csv";
WebClient wc1 = new WebClient();
wc1.DownloadFileCompleted += Wc1_DownloadFileCompleted;

wc1.DownloadFileAsync(url1, csv1);

}

private static void Wc1_DownloadFileCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
Console.WriteLine("完了");
}
2020/05/07(木) 09:17:37.03ID:uSRgeDXp
>>424
visualstudioのF11を使って走らせると一応最後まで行くのが確認できます!
なぜでしょう
2020/05/07(木) 09:18:45.92ID:uSRgeDXp
>>423
そちらも当たってみることにします
ありがとうございます
2020/05/07(木) 09:40:06.42ID:qpGBsCgy
>>418
非同期にダウンロードするなら、ダウンロード終了を待たないとそりゃ中身0バイトでしょ。
Mainをasync voidにして、awaitしなよ。
2020/05/07(木) 10:52:25.34ID:uSRgeDXp
>>429
へとへとになりましたがいけました・・・・

一応報告です
async voidはダメだという記述をどこかでみました(ぐぐりまくった結果ソースがどこかわからない)
async Task MainでいけるということですがC#7.1を有効にするためごにょごにょしました
awaitをつけたところ戻り値voidのメソッドはだめだと怒られたのでDownloadFileTaskAsyncに変えてみました

static async Task Main(string[] args)
{
var url1 = "http://tekitou/xxx.csv";;
var csv1 = "aaa.csv";
var client = new WebClient();
await client.DownloadFileTaskAsync(url1, csv1);
}

なんだか胃が痛くなってきました
ありがとうございました・・・
2020/05/07(木) 10:59:06.40ID:qpGBsCgy
>>430
async void申し訳ない、雰囲気で話してしまったので裏を取るべきだった。
aync Taskだな、おっしゃるとおり。
行けて良かった。
2020/05/07(木) 11:08:02.76ID:uSRgeDXp
>>431
ありがとうございました。
ダウンロード終了を待たないとそりゃ中身0バイトでしょの一言が貴重でした


ちなみにですが、

https://dobon.net/vb/dotnet/internet/downloadfile.html
「.NET Framework 2.0以降で、非同期的にファイルをダウンロードし保存する」
で紹介されているC#のコードですが、ここではawaitが出てこない
その理由は、
コンソールアプリと違ってフォームを表示しているメインのスレッドは勝手に終了しないから
という理解でよいでしょうか?

コンソールアプリだとメインで走っているスレッドはコードの最後まで行けば勝手に終わってしまう。そのため、ダウンロードに関わっているスレッドもそれに引きずられて終わってしまう
と考えたのですが・・・
2020/05/07(木) 11:15:54.73ID:uSRgeDXp
>>418のBでうまくいったのは、
たまたま非同期が前、同期が後の順番だったため、同期が終わるまでプログラム全体が終了せず
その間に非同期のほうも無事にダウンロードできたという事で・・・?

サーバー側の都合で同時に同じファイルのダウンロードは認められず、先に要求のあった非同期が終わるまで同期のほうが始まらなかったとか
2020/05/07(木) 12:01:08.20ID:eRnHVkfo
まずあしんく勉強しよや
2020/05/07(木) 12:24:21.96ID:K/pi2iFO
>>432
DownloadFileAsyncとDownloadFileTaskAsyncは別物よ
そもそも.NET Framework 2.0時代にはTaskは存在しないし当然awaitなんてのも存在しない
DownloadFileAsyncはイベントベースで完了を待つ(ことができる)もの
まあフォームアプリの場合通常はフォームが閉じない限りプロセスは終わらないんだから必ずしも明示的に待つ必要はないわけで
でもある程度大きいファイルをDLすることを考えると
DL中にフォームが閉じられた(プロセスが終了した)ときに打ち切られるのは変わらないから
必要に応じてDL中はFormClosingで閉じるのをキャンセルしたりする処理を書かないといけない
436デフォルトの名無しさん
垢版 |
2020/05/07(木) 12:39:16.54ID:iKRewGMt
タマタマ動いてるプログラムと
正しく動いてるプログラムは
月とすっぽんの差がある
2020/05/07(木) 13:46:41.90ID:uSRgeDXp
>>435
一番知りたいのはフォームアプリとコンソールアプリでなぜこのような違いがでるのかっていう点ですね
それについては>>432の理解でよいのでしょうか
前半は肯定してもらったのですが、後半はどうでしょうか

>DownloadFileAsyncはイベントベースで完了を待つ(ことができる)もの
DownloadFileTaskAsyncでもcompletedイベントハンドラが動きました


とここまで書いて一発で疑問を解決してくれるコードを発見です

static void Main(string[] args)
{
var url1 = new Uri("http://tekitou/xxx.csv";);
var csv1 = "aaa.csv";
var client = new WebClient();
client.DownloadFileAsync(url1, csv1);
Console.ReadLine();
}

もちろんこれがアプリの中で使えるということではないんですが
基本の基本となる理屈がこれで分かりました
コンソールとフォームの違いに重点を置いた説明ってなかなか見当たらないんですよね
どちらかに特化したものはあちらこちらにあるんですけど。
そのせいで頭に生じた矛盾点が解決できず基本理解が大きくゆれていたんです

あと、>>418のBで順番を逆にしたら期待通りの結果が得られました

解決です
2020/05/07(木) 14:18:23.17ID:qpGBsCgy
>>432
その認識で良いよ。
メインスレッドは終わらないからで大丈夫だと思う。
2020/05/07(木) 14:25:50.34ID:qpGBsCgy
>>437
ManualResetEventのWaitOneで待ち構えて、CompletedイベントでManualResetEventにSetしてあげるとかが王道なのかな。
そういう事しなくて済むようにしたのがAsyncだとは思うけど。
ManualResetEventのWaitOneは、Console.CancelKeyPressに紐付ける形でよく使うかもしれん。

フォームアプリでどうして大丈夫か、は、一回Program.csをよく読んでみたら良いんじゃないかな。
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.application.run?view=netcore-3.1
440デフォルトの名無しさん
垢版 |
2020/05/07(木) 14:25:51.20ID:8jv+kISL
>>437
コンソールアプリにはイベントループが無いからだよ
Console.ReadLine() がイベントループみたいなもんだからそれで見た目だけ治る
441デフォルトの名無しさん
垢版 |
2020/05/07(木) 14:33:37.17ID:wSQDXo4u
学術の巨大掲示板群 - アルファ・ラボ
ttp://x0000.net

数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など

simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0

UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0

連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0

4Dエンジン
ttp://x0000.net/topic.aspx?id=3677-0

matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0

ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0

SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0
2020/05/07(木) 15:03:36.84ID:uSRgeDXp
>>438-440
大変ありがとうございます
しっかりと調べた方がよさそうなキーワードが盛りだくさんです
今から出かけるので帰ってから取りかかろうと思います
まだまだ奥が深そうですね!
443421
垢版 |
2020/05/07(木) 15:12:46.01ID:3Zb9YKCz
非同期は、異次元空間。
時間の進み方も違うから、相手を知ることができない。
過去・未来も、わからない

コンテキスト・文脈も異なる。
相手がエラー・例外でも、こちらでキャッチできない

そもそも相手が何も知らせてこない場合も多い。
エラーと知らせると、さらに攻撃されるから、何も送ってこない

非同期に対して、こちらが出来ることはタイムアウトして、あきらめることだけ

非同期は、独特な書き方が必要。
異次元と通信するのだから、独特なタイミングの調整が必要!

これを分かっていないと、アプリは何回かに1回、エラーを起こす。
常にエラーを起こさないだろ。
自分がテストした時は、正常に動く

こういうバグが、一番やっかい。
多くのアプリは、これで時々エラーを起こす
2020/05/07(木) 15:19:22.24ID:cpirF9cI
Rubyならそうかもなw
445421
垢版 |
2020/05/07(木) 15:31:27.24ID:3Zb9YKCz
GUI アプリはイベントベースだから、

アプリの終了ボタンを押すなど、プロセス終了イベントを送らない限り、
CPU 使用率0 のまま、プロセスは存在し、イベントを待ち続ける

そこが、CUI アプリと異なる点
2020/05/07(木) 15:41:04.30ID:cpirF9cI
何も知らないルビクソは黙ってろ
GUIアプリといえども実行中の非バックグラウンドスレッドが全て終了すればプロセスは終わる
にもかかわらずプロセスが勝手に終了してしまわないのは、フレームワークが内部的に無限ループでイベントをポーリングし続けているから
2020/05/07(木) 15:42:15.08ID:qpGBsCgy
GUIアプリがイベントベースってのは誤解を生みそうで好かんな。
結局アプリケーションメッセージループを理解しないと、真っ白になるGUIアプリ作ることになる。

CUIアプリでもちゃんとしたアプリ作るとなると普通はイベントループ的な部分を作るんだし、あんまり誤解を生みそうな発言は良くないんじゃないの?
448421
垢版 |
2020/05/07(木) 16:17:22.08ID:3Zb9YKCz
ウィンドウプロシージャ
http://kaitei.net/winapi/window-procedures/#mssage-loop

GUI は、イベントドリブン。
Win32API: GetMessage とかだろ
449421
垢版 |
2020/05/07(木) 16:31:19.77ID:3Zb9YKCz
Win32 API は、本が古い

猫でもわかるWindowsプログラミング 第4版、2012

C言語で作るWindowsアプリ!

TCP/IPネットワークやシステムプログラミングもカバー。
Win32 APIを使ったWindowsプログラミングの集大成! !
Windows 7 / Vista / XP SP3、Visual C++ 2010対応
2020/05/07(木) 16:34:06.54ID:qpGBsCgy
それが理解できてれば、CPU利用率の話は暴論だと理解できるはずなんだが。
UIスレッドとそれ以外のスレッドとか、ちゃんと頭に浮かんでる?
451デフォルトの名無しさん
垢版 |
2020/05/09(土) 00:23:11.48ID:Gxw/aWGG
Rubyのチュートリアルレベルのことしかわからないのに、
他言語のスレに誰も求めてないRubyでの回答しか書けないやつにわかるとは思えない、実践経験もあるように思えないし
プログラミング言語触ってて、昔取った杵柄(しかも低レベル)は最高にかっこ悪い老害だとどうしてわからないものかね
2020/05/09(土) 07:23:56.68ID:hJeCZ+pd
そんなレベルの人なのか。
2020/05/09(土) 08:57:04.20ID:jMxtkhPp
レベル的には「ただのガイジ」以外の表現はないと思うけどなw
454デフォルトの名無しさん
垢版 |
2020/05/09(土) 09:25:46.90ID:3rxWY8lS
同意せざるを得ない
2020/05/09(土) 11:17:54.56ID:6woZ9Gon
典型的な同族嫌悪
2020/05/09(土) 19:33:05.24ID:hJeCZ+pd
足りない側からみたらそうなのかもな
2020/05/10(日) 00:58:19.57ID:z54t4nMz
中小企業の業務システムをc#とsqlサーバーで作ろうとしてます
帳票発行とか商品検索システムを作る上でオススメの本やサイトがあったら教えて下さい
初心者向けの本は読破しましたがオブジェクト指向とかは理解できてないレベルです
2020/05/10(日) 01:08:17.42ID:LYsC+ahW
>>457
適応業務は会計?SCM?
2020/05/10(日) 01:21:00.21ID:z54t4nMz
>>458
そこら辺の言葉もよくわからんレベルなんだけど商品の物流管理や発注、出荷、売上、締め処理まで恐らくSCMなのかな
2020/05/10(日) 01:25:15.56ID:LYsC+ahW
>>459
先ずは「グラス片手にデータベース設計」
の販売管理編か生産管理編をお勧めします。
2020/05/10(日) 01:33:22.47ID:z54t4nMz
ありがとう注文してみる
dbの設計方法学んでからc#って感じかな
2020/05/10(日) 01:38:55.49ID:LYsC+ahW
データと処理が決まれば、後は楽かと
2020/05/10(日) 06:26:36.98ID:msAj4oxp
そのレベルだと、パッケージ買ってこいって話にしかならんと思うよ。
要件定義もできないから、設計に落とし込めるわけがない。
パッケージに合わせて業務改善してもらえ。
464デフォルトの名無しさん
垢版 |
2020/05/10(日) 11:59:17.24ID:hDQHcieg
典型的なデスマーチの入り口です
おめでとうございます
2020/05/10(日) 12:01:02.69ID:z54t4nMz
>>463
当然パッケージで行こうとしたんだけど、あれが出来ないこれが出来ないで結局ポシャった
のんびり自社開発してくんでc#のオススメ本もヨロシク
2020/05/10(日) 12:37:43.31ID:p9tAaMVr
パッケージで出来ないことをするってのは、それは結構リスキーだぞ。
なぜ出来ないかよく調査した?
昔、とある業界用のパッケージ製品作ってる会社にいたけど、どうしてこれができないの?って返事は結構
「法律によって規制されてます」
「その運用すると結果的に脱税になります」
「省庁の○○発第何号でガイドラインが出て、こうすべきだと指針が出ました」
「他の部分に上記の理由で変更できない事があり、ご指摘の所作はそれに矛盾します」
みたいな事が多かったよ。
基本的には「仕様です。対応していません」と答えるけど、コンサルとしても入れるときは運用から全部相談に乗ってたから良く現場に資料持って説明しに行ったよ。

システム作るときはそのへん注意な。
2020/05/10(日) 13:09:02.06ID:3Bpnw18G
内容によるけどパッケージが対応してない、よりパッケージに合わせて業務を変えるが好ましい場合が多い
自社開発でそのパッケージより高クオリティなものが作れるなら別に良いんだが、そんなの作れるならそのパッケージ売れよって話になるし
だいたいが業務は変えたくない、けど楽したいというただのわがままでしかない
2020/05/10(日) 13:41:51.35ID:LYsC+ahW
まぁそう言うなよ
SCMをフルで自作すればざっと300画面。
週に2つ作れば、150週。
1年は53週しか無いので足掛け3年。

で、外出しするにしてもデータの流れも画面の動きも
知らなければ只の養分だよ。(ERPなら1億からのコース)
データの流れを把握してなければRFPすら書けない。

だからこそのデータベース設計の把握を最優先だと思うのですがね。

その後の画面周りは誤差の範疇かと
2020/05/10(日) 13:59:35.94ID:2iyaHVuP
その水準なら、EXCEL & VBA 辺りでお手軽に帳票とか集計とか作ってみてイメージを固めてからから考える方がいいような。
たぶん形が出来る前に挫折すると思う。

基本は 466, 467 に全面同意なんだけど。
2020/05/10(日) 14:02:24.14ID:LYsC+ahW
誰にでも初めてはあるからなぁ
困難は知った上でチャレンジして欲しいと思っているyo。
2020/05/10(日) 14:07:56.83ID:p9tAaMVr
業務分析はちゃんとできてるの?
各部のキーマンを全員集めた?
外注に何人も入ってもらってもまとまんないよ。
ましてや中の人間がやったら、できない事ばっか責められると思うけど。

伝票類とかしがらみはあるのかとか、そういうフィジカルな部分も考えつつしなきゃな。

なんか同じような案件で同じような状況の話を鋼管屋さんの話を昔聞いたことあるな。
2020/05/10(日) 14:12:19.56ID:z54t4nMz
取引先毎の仕様(伝票様式、出荷データ等)が幅広くて統一してもパッケージカスタマイズで億行くと言われ社長激怒

現行システムあるけど継ぎはぎだらけで担当死んで誰もワカンネ状態

で新規に作り直そうが今の状態
説明足りなかったすまん
2020/05/10(日) 14:21:57.24ID:p9tAaMVr
>>472
応援したい気持ちもあるが、地獄を想像せざるを得ない。
悪い事は言わん。スクラッチで専任で入ってくれる会社なり人なりを捕まえて数千万でもかけるべき。
現行システムからのコンバートどうするんよ?捨てるの?

死んだ人は曲がりなりにも、ツギハギにでもシステム作ってたんだろうが、それは会社の業務を知り尽くしての事だと思う。
そして、それには数千万、もしかしたら億行くかもしれん価値があった、そんだけなんよ。
本来はその人に人材を育成してもらうべきだったんだと思うぞ。
おまいさんが作ったとしたら、次世代もちゃんと育成して自分の手からそのシステム手離れさせていける?

あと、取引先毎の仕様は、うまく言ってこっちの都合の良い様式に丸め込んでくるスキルも必要よ。
2020/05/10(日) 14:41:49.42ID:LYsC+ahW
>>473
大筋合意。

デパ専、ストア専。一つとっても、
各社扱いが違う。(某梯子高だって特殊)

それを理解するためにも基本パターンを
理解しておくのが重要じゃないかなぁ
2020/05/10(日) 14:48:51.82ID:sqrrAwwF
渡辺 幸三の
「業務システムのための上流工程入門」と
「業務別データベース設計のためのデータモデリング入門」
を勧めておく

業務システムの基本設計ができるようになる入門書として俺はこれ以上の本を知らない
考え方が少し古かったりやや偏ってるところもあるけど即実践で使える
業務全体を俯瞰で見れるから中小企業のシステムとも相性がいい
2020/05/10(日) 14:52:41.34ID:eSEFdDuU
おもしろそー

オブジェクト指向も分かってない人が組み上げていくっていいじゃんか
俺もやってみたいわぁ
中途半端に大きいからVisualStudioさえ入れさせてくれないわー
2020/05/10(日) 14:55:39.71ID:LYsC+ahW
>>475
生産管理・原価管理システムのためのデータモデリング
も名著やね
2020/05/10(日) 15:02:43.53ID:sqrrAwwF
商品検索システムや帳票はDBさえ普通に出来てればアプリ側は比較的簡単
(帳票は技術的に簡単でも手間がかかるのでパッケージを使うことが多い)

ただアプリ設計もDB設計も実装技術も今から学ぶ必要があるならデスマ確定なので
自社開発は諦めて外部発注のための要求仕様を作ることに力をいれたほうがいいと思う
2020/05/10(日) 15:34:44.41ID:3Bpnw18G
どれくらいの工数かけて内製するのか知らんけど外に出したら億いく案件を中なら安く済むと思ってるのが間違い
その手のパッケージ開発で飯食ってるやつと、そうじゃないやつで同じもの作るときにコストがどれだけ跳ね上がるか…
内製したら安く済むならみんな内製するんだからパッケージ商売自体が成立しない
ソフト開発が甘く見られてる典型例な感じする
2020/05/10(日) 15:37:46.88ID:p9tAaMVr
製造業だと、まずBOM的な考え方をしないといかんのかとか、そういう所から要件定義じゃないかな。
その後原料ロット、生産ロット、出荷ロット管理なりを考えてから、その後帳票かな。
前後で法規制をきっちり考えないといかん。
2020/05/10(日) 15:47:10.22ID:sqrrAwwF
>>477
うん、それを含めた3冊読むのが一番いいと思ってるんだけど
例として出てくるような業務に詳しいかDB設計経験がある人じゃないと
先にあげた2冊に比べてハードルが高いみたい
2020/05/10(日) 17:22:36.25ID:p9tAaMVr
>>479
>ソフト開発が甘く見られてる典型例な感じする
これホントそうなんだけど、なかなか伝わらないよね。
しかも、それぞれの分野に専業の業者が居るぐらい特化してるって事をわかってほしいし、その上で社内にいた人の価値をもう少し再評価してあげてほしいと思う。
ツギハギって言うけど、ツギハギでも動いてるってのはなかなかよ。
2020/05/10(日) 17:47:35.59ID:iac7n6+g
「とりあえず Excel っぽいのを作ってくれればいいから」
2020/05/10(日) 18:03:57.44ID:z54t4nMz
>>483
よく言われるwww
世界中の天才が集まって作ったソフトと田舎もんが作った業務システム一緒にすんなっての
エクセル使わないですむように開発してんのに殺意わくw
2020/05/10(日) 18:07:33.63ID:z54t4nMz
とりあえず出てきた本は読んでみる
開発は帳票や伝票部分はパッケージ探して業務部分は自作してみる
業務内容は頭に入ってるからのんびりやってみる
アドバイスありがとう
2020/05/10(日) 18:13:32.99ID:sqrrAwwF
仕様がわからない状態だから
どう転んでも赤字にはならないようリスク要因特盛の見積もりだから
発注側との想定金額と大きく乖離してるんじゃないかな

仕様がわからないと既存システムを調べて一から仕様を起こして検証が必要
それにそういう会社の案件はめちゃくちゃリスク高いから
受託としてはできればやりたくないんだよね
2020/05/10(日) 18:17:45.69ID:2iyaHVuP
一年後くらいにどうなったか教えてくれたらうれしい。
いや、本気で、一年後にここに報告に来れる状態を保ててるなら、もう一流なんじゃないかって気もする。
488デフォルトの名無しさん
垢版 |
2020/05/10(日) 18:23:08.34ID:nv4IBqVl
死んでる方にかける
2020/05/10(日) 18:30:42.22ID:oFa97h2w
おいおい、炎上100%な奴きてんね
2020/05/10(日) 18:33:26.43ID:oFa97h2w
レスみた限りだと仮にシステム構築出来たとしても要件漏れありすぎてバグと業務混乱で炎上爆発するの確定やん、、
2020/05/10(日) 18:44:17.19ID:0Mg1q5gC
今更だが言語以前の話だからスレ違いだし、続けたいのならせめて相談室スレに行ってくれ
2020/05/10(日) 18:45:46.82ID:p9tAaMVr
問題は締めがある、在庫、物流の処理がある事、受発注、出荷、売上(おそらくは入金も)があるって事で、
仕入れ、設計、ロット管理含めた生産管理、品質管理、不良在庫、不適合管理を全部把握してないといかん上に、
そのすべてが会計、経理上おかしくないようにしないといかんという、
請けるとしてもそこそこ会社が小さい頃から全部門の面倒見てきた人を無理矢理巻き込んだ上に税理士なんかにお伺い立てて確認してもらうレベルの案件だからなぁ。

業務だけじゃなくて法規もちゃんと調査して、必ず必要だから経理の人間捕まえなよ。
2020/05/10(日) 18:48:19.69ID:p9tAaMVr
>>491
言語以前の問題だと質問者が気づいていない以上仕方あるまい。
2020/05/10(日) 20:19:37.21ID:xDftOU/8
内容に応じて他スレ・他板へ行くことを勧められることがあります。
2020/05/10(日) 20:46:24.37ID:Zipn87fx
快活クラブでリモートワークしてる c#プログラマがいたよ。

女性店員に「エロサイト表示しろ、無修正のやつな」
って大声で要求してた。

c# プログラマってなんでこんなやつばかりなんだろ。
496デフォルトの名無しさん
垢版 |
2020/05/10(日) 20:49:55.21ID:QGOb6iVk
>>495
わかったからRubyスレに帰ろうぜ
2020/05/22(金) 09:34:56.53ID:+oO6LUh3
C#でLINE Bot作りたいのだけど、visual studio2019でLINE Botがインストールできないのだが、対応していないのかな?
ググったけどわからない。
498デフォルトの名無しさん
垢版 |
2020/05/22(金) 14:36:36.86ID:MU4pD2nI
馬鹿には無理
2020/05/24(日) 10:06:09.98ID:aVoyeE00
>>484
まあ、何も知らない人からすればパソコンオタクが
ゲームでも楽しむようにパソコンをカチャカチャやって
作るだけってイメージだからな

何でこの程度のものでそんなに時間かかるの?
まだできないの?

社内SEによく向けられる疑問
2020/05/24(日) 10:09:40.10ID:aVoyeE00
>>482
だよな、ついに破綻して動かなくなってしまって
担当SE逃亡行方不明なんてのも珍しくないしな
501デフォルトの名無しさん
垢版 |
2020/05/24(日) 10:15:05.87ID:aVoyeE00
>>485
帳票や伝票部分はAccessかExcelでいいんでない?

俺なら全部Accessでやってやるぞw
502デフォルトの名無しさん
垢版 |
2020/05/24(日) 12:12:27.36ID:hR9OU60G
不要不急のアプリのインストールは禁止されています
2020/05/24(日) 13:25:26.86ID:2+qSZivW
ワッチョイありで関係ない談義するアホどもとここでなぜか連レスするキチガイ
わざと質問できない空気にしてんのかこいつら?
2020/05/27(水) 19:13:25.22ID:amwFvGuG
.NETのフォームアプリケーションで自作のイベントハンドラを動かし続けるにはどうしたらいいですか?

まずサブクラスで、eventとdelegateとevent処理関数を用意。
Form_Shown時に、上記をイベントハンドラ設定。

結果はイベント待ちにより処理が占有される。
理想は、フォームを動かしてる裏で、までイベント待ちさせたいです。(イベント待ちを別スレッドにすれば可能?)

なんともわかりにくい説明になって申し訳ないのですが、よければお答えいただけると幸いです。
よろしくお願いします。
2020/05/27(水) 19:27:00.10ID:qvWVJQjz
Timer
2020/05/27(水) 19:57:17.45ID:JktWhmx6
PeekMessage
DoEvent
507デフォルトの名無しさん
垢版 |
2020/05/27(水) 20:43:21.48ID:E+xtagcu
>>504
わかりにくいというより何言ってるのか全然分からないw
いや別にディスってる訳じゃなくてマジで
2020/05/27(水) 20:46:07.05ID:QQSE4k+3
なるほど調べてみます。

圧倒的理解力不足なもんで…

ありがとうございました
2020/05/27(水) 20:46:35.43ID:UEBQAav6
イベント待ちなのに処理を占有?
2020/05/27(水) 20:55:14.84ID:9LOTwxRV
>>504
作るイベントによって変わるけど>>505が万能回答
>>506
メッセージを誰が送るのかわからない
何を起点にDoEventするのかわからない
2020/05/27(水) 21:14:29.08ID:883YZTqQ
>>506
バッドノウハウだろ
512デフォルトの名無しさん
垢版 |
2020/05/28(木) 18:55:24.68ID:jB6NfBip
Bad know how?
2020/06/01(月) 01:35:35.98ID:SyoyRWyY
https://dotup.org/uploda/dotup.org2162644.png
https://dotup.org/uploda/dotup.org2162643.png

Blazorを使用してSPAを作ってみたいと考えております。

画像と同じ説明になってしまいますが、
Dictionaryとforeachを使って画像ファイルを並べられたまでは良いのですが、
その画像ファイルとセットで説明文も一緒に添えたいと考えております。
説明文もセットでforeachに加えて並べるにはどうすれば良いでしょうか?
(Dictionaryもforeachも手探りでやっただけでして拘りはありません。)

画像+説明文の数だけulやliやhrefやimgを書いていくのも大変なので、
自動化?のためにforeachとdictionaryを使用しました。

宜しくお願いいたします。
2020/06/01(月) 01:58:38.12ID:lLamlcG6
>>513
タイトル、説明文、画像ファイルパスなど必要なもの一式を
一つの型にまとめてDictionary<T>やList<T>を使う
2020/06/01(月) 07:40:38.54ID:RpkIRyj6
BlazorというよりHTMLの問題じゃね
2020/06/01(月) 07:44:39.98ID:/GiD8hIS
514の言うとおりだけど、キー不要なのにDictionary使う意味はないな。Listで。
2020/06/01(月) 20:50:10.06ID:SyoyRWyY
>>514-516
皆様ありがとうございます。
何とか無事にできました。
https://dotup.org/uploda/dotup.org2163229.png

https://dotnetfiddle.net/2laUxq
こちらが実際に書いたコードになります。

コメントアウトされている16-21行のコンストラクタを書くと、
49-52行のnew ArticleItemに赤波線が表示されてしまい、
「ArticleItem.ArticleItem(int, string, string)' の必要な仮パラメーター 'number' に対応する特定の引数がありません。」
となってしまいます。
一応numberに対応する引数はそのまま書いているつもりなのですが、これはどういう理由なのでしょうか・・・?
2020/06/01(月) 20:55:21.10ID:mlavFreb
コンストラクタに引数を与えるなら
new ArticleItem(1, "vermeer.jpg", "フェルメールの真珠の耳飾りの少女")
2020/06/01(月) 21:03:08.25ID:EcU6otQL
大文字vs小文字とエスパー
2020/06/01(月) 21:11:23.50ID:RpkIRyj6
>>517
オブジェクト初期化子でググれ
2020/06/01(月) 21:21:56.56ID:SyoyRWyY
>>518-520
一応そちらも試してみていたのですが、{}を()に直すのを忘れていました・・・初歩的なミスでした。
フィールドの場合ですと毎回Name=、Number=、Description=を書かなくてはなりませんが、
コンストラクタですと文字だけで便利な反面、第三者には伝わりにくい面もあるのでしょうか。

やっていくと色々と違いがわからず混乱してしまいますが、基礎から調べてみようかと思います。
初歩的な質問に答えて頂きありがとうございました。
2020/06/01(月) 21:30:09.33ID:9YokFrjE
>>521
・該当部分がコメントアウトされている場合、引数無しのコンストラクタ(デフォルトコンストラクタ) public ArticleItem() が暗黙的に定義されている
・public ArticleItem(int number, string name, string description) が定義されている場合は public ArticleItem() は暗黙的に定義されない
多分混乱の原因はこれを忘れてるからなんじゃないかな
523デフォルトの名無しさん
垢版 |
2020/06/01(月) 22:55:01.21ID:HGtHhUsO
どーでもいいけど画面左のグラデーションが綺麗だなぁと思いました
524デフォルトの名無しさん
垢版 |
2020/06/01(月) 23:32:51.74ID:5NIHbXOS
「慶應卒の学歴なんていらない」10代起業で成功する子の共通点
https://www.excite.co.jp/news/article/President_35457/
起業で成功するキャリア形成の仕方とは? 元プロサッカー選手で起業家の鈴木啓祐氏に聞いた
https://sogyotecho.jp/career-development/
【アプリ開発で起業】必要な心得とマネタイズ方法のすべて
https://www.dreamgate.gr.jp/contents/column/application-development
学生起業家が開発、「人を軸に本を探すアプリ」とは?読書通じて「考える力」養って
https://newswitch.jp/p/20168
島田商高生がアプリ考案、発表 ICT起業家育成プログラム
https://www.at-s.com/news/article/local/central/730010.html
医師コンビが「治療用アプリ」で起業、禁煙に続き高血圧治療アプリを開発
https://diamond.jp/articles/-/229375
好きが高じて“カレー起業”、キャッシュレス決済アプリ「TOKYO MIX CURRY」の挑戦
https://diamond.jp/articles/-/215868
525デフォルトの名無しさん
垢版 |
2020/06/03(水) 16:27:42.45ID:oijTauHo
三項演算子で null のときは
?? とか ?: とか省略方法があるようですが
値で 0 のときにチェックを省く方法はありますか?
a = b == 0 ? c : b;
a = b != 0 ? b : c;
みたいな場合に
a = b ?? c;
a = b ?: c;
とかの書き方無かったですか?
2020/06/03(水) 16:36:47.26ID:aceFZYCa
>>525
ないです
素直に0比較してください
nullはプログラム上重要な要素になるので特別な処理が作られました
527デフォルトの名無しさん
垢版 |
2020/06/03(水) 17:06:59.67ID:oijTauHo
int orz(int x, int y)=>x==0?y:x;

a=orz(b,c);
でいけました
ありがとうございました
2020/06/03(水) 17:20:41.93ID:mHZXtGhi
あまり意味ない上に、何やってるかわかりずらいようなしないでもないでもない
529デフォルトの名無しさん
垢版 |
2020/06/03(水) 17:22:01.95ID:oijTauHo
bの変数名が長い時面倒じゃないですか?
2020/06/03(水) 17:25:36.20ID:lKbflSVr
本人が満足しているんだしロジックに関わりすらしない部分で持つ変なこだわりが初心者らしくていいじゃないかw
2020/06/03(水) 17:25:43.29ID:Cpnc/jbv
>>529
3ヶ月後の自分に「こいつ死ねばいいのに」って言われるやつ。
2020/06/03(水) 17:32:59.89ID:aceFZYCa
気持ちはわかるが変数名メソッド名が文字数的に長い短いを気にしないほうがいい
正しく命名された内容であればたとえ20文字超えとかでも問題ない

エディタ周りが優秀になり強力な入力補間が効く現代で文字数が減ったところで何の恩恵もない

流石に50文字超えみたいなのは正しく命名されたとは思えないので論外ね
533デフォルトの名無しさん
垢版 |
2020/06/03(水) 17:33:38.70ID:qEEM9XSL
>>529
一回だけで済む方法もあるよ
if ((a = b) == 0) a = c;
2020/06/03(水) 17:40:32.41ID:69kHBPnK
ではプロのお方に考察してもらいたいんだが、
なぜLINQ(IEnumerable)にはListにはあるForEachメソッドが無いのかな?
2020/06/03(水) 17:42:54.79ID:HVvELZKL
>>534
テンプレ読めない人は退場
2020/06/03(水) 18:59:47.48ID:MPquea7T
どうせやるなら
static class IntExtension {
public static int ifZeroThen(this int val, int to) => val==0 ? to : val;
}
と拡張メソッドを作って
a = b.ifZeroThen(c);
2020/06/03(水) 19:56:42.20ID:VidMmCEg
考察も糞もねーよ
https://docs.microsoft.com/en-us/archive/blogs/ericlippert/foreach-vs-foreach
2020/06/03(水) 20:12:59.40ID:4PJ7L65K
「foreachは副作用を起こすためだけに存在する操作なのだから手続き型で記述すべき」というだけのことなんだが、
理解できない馬鹿は多いんだよね
2020/06/04(木) 04:52:58.23ID:kthDryXj
1bit脳に無理言わないでくれ
2020/06/04(木) 07:52:33.54ID:dmqdgjzk
Motorola MC14500か
2020/06/04(木) 14:02:05.72ID:q8whG3cq
それってビットスライスプロセッサと同じ?
昔、AMDのAm2900だっけ?
2020/06/10(水) 14:22:02.31ID:AUFXka/X
C#で自クラスを表すキーワードってありますか?
thisで自インスタンスを指すのと同じ要領で、
ILogger<This>みたいな書き方で自クラスを指し示せると便利なんですけど
2020/06/10(水) 15:14:27.84ID:spn5Hqr7
無いんで毎回書いてください
2020/06/10(水) 17:27:35.25ID:oCluTwmU
なにが便利なんだろう
2020/06/10(水) 18:53:25.86ID:spn5Hqr7
例示の通り全部のクラスにloggerのstatic instanceをコピペで置きたいんじゃない?
2020/06/10(水) 20:18:27.76ID:npA4+8k3
派生クラス内のbaseキーワードのthis版みたいなもんか
まあ気持ちはわからんでもないがエディタのリファクタで済む話でもあるしなあ
2020/06/10(水) 20:19:08.92ID:AUFXka/X
まさに>545がやりたいことでした
DIする全クラスにloggerを用意するルールになってて、
本体のクラスとILoggerのクラスが食い違ってるものがけっこうあって、
なにかそういう間違いを防ぐ方法がないかなあと思ったのですが

ないようなら間違えないように気を付けるしかないですね、わかりました
2020/06/10(水) 23:33:38.62ID:YByuqf7A
スニペット定義すればいい話じゃないの
なんでそんなクソみたいな需要のためにキーワード追加しなきゃならんのよ
2020/06/19(金) 03:25:40.20ID:o8JsoPqL
人種差別を肯定し、master というブランチ名を使うレイシストc# プログラマーのボーナスは全廃し、給与50% カット6ヶ月ぐらいすべき。
2020/06/19(金) 09:39:13.25ID:wB3O0HGg
mainという単語からは主流≒多数派ばかり優遇して少数派を蔑ろにする差別的な印象を感じる
2020/06/19(金) 21:57:34.06ID:bZZY8ExL
branchとかmergeとかもPC的にはそのうち禁止されるんじゃね?
2020/06/19(金) 22:34:43.07ID:wHZO34HU
PATAのデバイスついてるPCもアウトだな。masterにslaveだもの。
2020/06/19(金) 22:36:55.15ID:cGppewf8
コロナ感染源だからホストも禁止
2020/06/20(土) 03:28:44.15ID:ASLg4tM8
slaveは言い訳できないが、masterはいいだろ
言葉狩りの暴走は勘弁してほしい
2020/06/20(土) 03:44:34.61ID:cD8U+O2A
変数名やメソッド名全部に差別チェックが入る時代が来るぞ
556デフォルトの名無しさん
垢版 |
2020/06/20(土) 04:13:37.90ID:FLQMzrN5
くだらね
考えすぎだと思うよ
日本語でも主/従というがこれをpolitically incorrectだと言う人はいないでしょ
2020/06/20(土) 04:23:55.75ID:fYTLW7H/
外圧に簡単に屈するぞ?
2020/06/20(土) 04:26:17.64ID:ASLg4tM8
そんなことより、変数名に日本語使う会社の先輩を禁止にしてほしい
2020/06/20(土) 08:05:50.48ID:wP1jy1tm
>>558
良いじゃないか。
国民皆保険制度の健康保険の記号と番号なんて、
kenpoKigouとkenpoNoぐらいしかうまく当てられんぞ。
insuranceとはちょっと意味合い違うからな。
2020/06/20(土) 08:52:50.69ID:bhe8z7NH
そういうのって正式に英語名称が定義されたりしないの?
2020/06/20(土) 09:37:58.40ID:GUrzgoSo
全国の地方自治体向けに作られた翻訳システムがあるが英訳はめちゃくちゃわかりにくいぞ
区役所とかのホームページ見れば分かる
2020/06/20(土) 10:12:31.31ID:bhe8z7NH
プログラマが勝手に作ったローマ字使うくらいなら正式な英語あるならそれ使えばいいじゃん
わかりにくさはローマ字も一緒だし
それも嫌なら正式名称の日本語かな
日本語は入力がめんどくさい、isとかつけたら見づらいとかあるんで個人的には英語にしたいところ
2020/06/20(土) 10:20:29.03ID:cD8U+O2A
配偶者特別控除とか英訳した変数使われたら長すぎてたまらん
2020/06/20(土) 10:25:55.97ID:7xYXUXXu
こんなところでくだらん雑談されたらたまらん
2020/06/20(土) 10:44:13.15ID:bhe8z7NH
そんな長いのかと思ってググったら全然長くないじゃん
2020/06/20(土) 12:35:54.56ID:VKvCWYLS
>>560
必ずしも充足されてるとは言い難い。
まず政府管掌健康保険が協会けんぽに変わったから、云々、と歴史まで追いかけるときりがない。
それに、プログラマが勝手に決めないぞ。プロジェクトでコンセンサスとって対訳表作る。
2020/06/20(土) 12:52:11.90ID:bhe8z7NH
>>566
対訳表に則っているなら先輩が変数名に日本語使うのを禁止になんかできんだろう
規約を変えたいという気持ちならわかるが
2020/06/20(土) 13:33:06.13ID:VKvCWYLS
>>567
うん、だから禁止になんてする必要ないじゃないかって言ってる。
コンセンサスが基本だから、先輩後輩関係なくどうしても納得ができないと言い張れば変わるよ。
2020/06/20(土) 14:04:38.62ID:bhe8z7NH
>>568
元のレスの環境はわからんが対訳表なんかきっちり固めない規模なんだろう
だから個々人の裁量で進行する
世の中規約がきっちりしてるプロジェクトばっかならそもそもあんな愚痴なんて出ないよ
2020/06/20(土) 14:35:58.82ID:VKvCWYLS
>>569
まあそれもそうかもなぁ。
ただ正式名称が良いとは思うが、日本語マルチバイトで変数を使われるのは俺も嫌だ。
インテリセンスで泣けてくると思う。
2020/06/20(土) 22:15:40.53ID:mviXVPvw
出来もしないのに無理やり英語使われてもなあ
ソースコード読んで直す側としては、変数名で恥ずかしいスペルミスされたり見当はずれの英単語使われるくらいだったら
開き直って日本語の変数名にしてくれてるほうが100倍マシ
ローマ字表記はヘボン非ヘボンの混在だったり長音や「おう」の表記ゆれだったりでgrepできなくて迷惑
子音のみ表記は論外
2020/06/20(土) 22:52:27.79ID:Zs4RBEp5
shine←誰だ!ソースコードに死ねって書いた奴は!

お前が一番英語できねーじゃん
2020/06/20(土) 22:59:06.50ID:hRQ9XdbD
酔っぱらって雑談書き込みたい人はマ板に行けよ
2020/06/21(日) 13:48:49.92ID:wYwqTW6D
素面だったら失礼だろ…
2020/06/21(日) 20:17:32.76ID:aN4OBWpj
派生クラスのインスタンスが与えられていて、abstruct な基底クラスの virtual なメソッドを呼び出すにはどうすればいいでしょうか?

using System;
using System.Reflection;

namespace ConsoleApp1
{
class Base1
{
public virtual void method1()
{
Console.WriteLine("Base1 method1");
}
}

abstract class D1 : Base1
{
public override void method1()
{
Console.WriteLine("D1 method1");
}
}
2020/06/21(日) 20:17:46.82ID:aN4OBWpj
class D2 : D1
{
public override void method1()
{
Console.WriteLine("D2 method1");
}

public void callBaseMethod()
{
base.method1();
}
}


class Program
{
static void Main(string[] args)
{
D2 d2instance = new D2();
d2instance.method1();
d2instance.callBaseMethod();
Type d1type1 = d2instance.GetType().BaseType;
MethodInfo mi1 = d1type1.GetMethod("method1", BindingFlags.Instance | BindingFlags.Public);
mi1.Invoke(d2instance, null);
D1 d2asD1 = d2instance as D1;
MethodInfo mi2 = d1type1.GetMethod("method1", BindingFlags.Instance | BindingFlags.Public);
mi2.Invoke(d2instance, null);
}
}
}
2020/06/21(日) 20:20:09.44ID:aN4OBWpj
D2クラスのメソッド内からは base を使って D1::method1 を呼び出せますが、D2クラス外から D1::method1 を呼び出したいのです。
reflection を例のように試してみましたが、これではD2.method1 が実行されました。
2020/06/21(日) 21:33:25.88ID:PVQJTyJk
じゃあbaseでも返してやればいいじゃん
579デフォルトの名無しさん
垢版 |
2020/06/21(日) 21:35:29.29ID:X+exSJnj
>>576
ここの方法で一応出来た
https://stackoverflow.com/questions/43797869/how-to-call-base-method-from-derived-class-instance-in-c
何で出来るのかは聞かないでw
さっぱり分からん
2020/06/21(日) 22:28:34.53ID:aN4OBWpj
static void Main(string[] args)
{
D2 d2instance = new D2();
D1 d2asD1 = d2instance as D1;
MethodInfo mi5 = typeof(D1).GetMethod("method1", BindingFlags.Instance | BindingFlags.Public);
var dynamicMethod = new DynamicMethod("baseMethod1", mi5.ReturnType, new[] { mi5.DeclaringType }, mi5.DeclaringType);

var il = dynamicMethod.GetILGenerator();
il.Emit(OpCodes.Ldarg_0);
il.EmitCall(OpCodes.Call, mi5, null);
il.Emit(OpCodes.Ret);

dynamicMethod.Invoke(null, new object[] { d2asD1 });
}

これで
D1 method1
と出力されました。
何で出来るのかはさっぱり分からないけど、完全に理解したので、感謝の気持ちだけ送ります。
2020/06/22(月) 09:37:12.13ID:0XzJmbel
環境によって動かなくなるかもしんないことした?
2020/07/10(金) 21:20:51.69ID:X9xi9dVy
今までGUI作ったことなかったなーと思って勉強しようと思ったんですが今だとどれを勉強するのがいいんですかね
さすがにformsは古い?そうだけどWPF以降も色々と出ていてこのタイミングでどれをやるのがいいのか迷ってて
2020/07/10(金) 21:29:39.13ID:Yln2FJAO
>>582
就活用ならUnityでもやるのがいいんじゃね
そうじゃないのならVB6ですらWindows10で動くんだから古いとか気にする必要はないはず
2020/07/10(金) 22:13:58.78ID:3+C210Fo
正解はwebで
2020/07/10(金) 22:15:24.02ID:JuXuxxAz
OWINで
2020/07/11(土) 02:28:11.25ID:Xb91GAGB
続きはCM2の後で
587デフォルトの名無しさん
垢版 |
2020/07/11(土) 11:09:59.93ID:J0INoyBc
Unityに+1
Unityのゲームの中身じゃなくてEditorの方をおすすめ
2020/07/12(日) 21:38:45.35ID:aDzqciee
unityがおすすめなんですね。あれゲーム専用だと思ってました
もっぱら業務アプリばっかなんでそういう用途にも使えるとは思ってなかったです
589デフォルトの名無しさん
垢版 |
2020/07/13(月) 09:25:32.82ID:TjSPxylo
業務アプリ用の言語ωでゲーム造ってる人も居るしな
2020/07/13(月) 15:55:03.59ID:Ke/bF0yo
倉庫の在庫官吏を、VRで実際の倉庫とそっくりに作った仮想倉庫内を移動して有無を確認するようなシステムにしたらITで社会が幸せになるね
2020/07/13(月) 16:01:37.04ID:H0zeGwMI
数値で確認じゃなくVRでわざわざ見渡すシステムを作るのか
すげーな、現場でそんな発想するやついねーわw
2020/07/13(月) 16:58:20.45ID:aaJV9hNQ
カメラを設置するだけでも大変だったのに
モデリングに手間暇かかるだけ無駄
2020/07/13(月) 17:15:16.60ID:9YDjNgWA
商品もリアルに表現しなきゃねってことで
手足に負荷がかかるような器具を付けて商品の重さも再現するんでしょ?
倉庫の広さも実感できるようにランニングマシーンの進化版みたいのに乗ってと・・・
2020/07/13(月) 17:28:58.81ID:Ke/bF0yo
これからは業務アプリもunityやunrealengineだな
2020/07/13(月) 17:32:08.72ID:aaJV9hNQ
自動倉庫のシステム組むのにそんなもんいらん
2020/07/13(月) 17:38:07.71ID:VzOfFxcE
配管系のゲージは研修半分でオーバーレイして表示させるとかそういう話聞くけど、在庫数は無いわ。
金はかかるがだいたいパレットやらロットにRFタグつけて棚卸しできるようにするだろ。
ちなみにプラントのモデルは案外あるし、点群で撮っちゃうって手もある。

ただ、確かにモデルを表示する類の業務アプリはUnityで作ってるのもあるよ。
それなりに大手の製造業だけど。
2020/07/13(月) 21:29:20.64ID:dyxM/ipS
>>593
リアル涙の倉庫番スペシャルか。
別方面で売れるかもしれんな。w
2020/07/13(月) 22:41:02.33ID:onCQ4Lj1
そんなに余裕ならamazonの倉庫で
働けば良いのに:-p
599デフォルトの名無しさん
垢版 |
2020/07/14(火) 11:59:39.83ID:Mma3I+br
倉庫管理楽しくなりそう
https://www.youtube.com/watch?v=Lu56xVlZ40M
2020/07/14(火) 20:22:00.29ID:dcabkqyp
>>597
バーチャルで人が汗水垂らして荷物を運んで
それとシンクロしてリアル倉庫で機械が荷物運ぶのな
これこそ来たるべき未来の労働の姿だわ
2020/07/14(火) 20:29:04.35ID:Wijq2S4p
パシフィック・リムが思い浮かぶな
2020/07/14(火) 20:30:24.39ID:3GhCpHPS
まあゲームだな
2020/07/14(火) 21:04:18.81ID:GSoz0Gzm
>>600
それだけでは体力的に厳しいからパワーアシストスーツを着ないとな
604デフォルトの名無しさん
垢版 |
2020/07/19(日) 18:09:36.82ID:PL1UBy2g
X軸を対数にしようとIsLogarithmic= Trueにしたら"対数スケールはこの軸には使用できません"と例外が出たが、
Y軸では出ません。

プロットしたデータが悪いのかと試しにXもYも同じデータでプロットしてもX軸を対数にしたときだけやはり例外が出ます(Y軸だけ対数表記だと出ない)。
詳しい方がいたらアドバイスをください。

private void CalcFFT(int samplingNum)
{
chart2.Series[0].Points.Clear();
var input = new Complex[samplingNum];
var output = new Complex[samplingNum];
for (int i = 0; i < chart1.Series[0].Points.Count; i++){
input[i] = new Complex(chart1.Series[0].Points[i].YValues[0], 0);
output[i] = new Complex(chart1.Series[1].Points[i].YValues[0], 0);
}
// FFTを実行
Fourier.Forward(input);
Fourier.Forward(output);
for (int i = 0; i < input.Length; i++){
var aftInput = Complex.Divide(input[i], output[i]);
var aftOutput = 20*Math.Log10( Complex.Abs(aftInput));
chart2.Series[0].Points.AddXY(aftOutput, aftOutput);
}
chart2.ChartAreas[0].AxisX.IsLogarithmic = true;//これだけ例外になる
chart2.ChartAreas[0].AxisY.IsLogarithmic = true;
}
2020/07/19(日) 18:18:21.40ID:R6Y/ShSW
>>604
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.datavisualization.charting.axis.islogarithmic?view=netframework-4.8
>対数グラフでは、0 または負のデータ値を使用できません
https://mrymmthr.wordpress.com/2015/07/15/chart01/
606デフォルトの名無しさん
垢版 |
2020/07/19(日) 18:29:40.39ID:PL1UBy2g
>>605
0や負数を取り除いてもエラーになってしまうんです。
そもそもY軸では負数を含めてもエラーにはならなかったので悩んでいます・・・。

上記のリンクも調べて既に試したのですが、
SuppressExceptionsを設定してもダメでした。
2020/07/19(日) 20:29:44.78ID:xpqal6/5
chartなんて使ったことないから何か勘違いしてるかもしれんけど
別に何の問題もなかった
private void PlotSomething()
{
  for (int i = 0; i < 10; i++)
  {
    var x = Math.Pow(10, i);
    chart1.Series[0].Points.AddXY(x, x);
  }
  chart1.ChartAreas[0].AxisX.IsLogarithmic = true;
  chart1.ChartAreas[0].AxisY.IsLogarithmic = true;
}
2020/07/19(日) 21:46:59.96ID:HgFtcLoK
動くコードから一つ一つ近づけて行くのもいい手だよね
609デフォルトの名無しさん
垢版 |
2020/07/19(日) 22:52:49.13ID:PL1UBy2g
>>607
コードをお借りして試してみましたがダメでした・・・
私の環境で気になるのは、
AddXYをした後でもX軸のAxisX.Minumum=0でAxisX.Maximum=1のままだったんですよね・・・
そのままformを抜けて描画すると突然アボートになる・・・
2020/07/19(日) 23:04:54.28ID:vyF3aSiC
フォームロード時にエラーになる?
対数軸持ちチャートはデータ数0を
許さないから、ダミーデータを入れた?

series.enabled = false;はしてある?

でなかったらわからないです。
2020/07/19(日) 23:35:35.36ID:HgFtcLoK
>>609
新規作成したプロジェクトでも同じって言ってるの?
612デフォルトの名無しさん
垢版 |
2020/07/19(日) 23:51:19.95ID:PL1UBy2g
>>611
すみません、新規作成したプロジェクトで>>607を走らせたらいけました・・・
今のプロジェクトで変なプロパティ触っちゃったのかな
X軸の対数表記絶対許さないマンな動きだったのでコントロールを作り直して試してみます!
2020/07/20(月) 00:01:29.70ID:evpinthC
>>612
また、新規作成して今度は駄目なコントロール貼り付けて
動くか確認

思った通り駄目だったら
動くやつと比較ツールで比較して出た差分を修正して動くようになるところを確認

とか
614デフォルトの名無しさん
垢版 |
2020/07/20(月) 10:09:35.64ID:oCdL4TUp
for (int i = 0; i < input.Length; i++){
var aftInput = Math.Log10(Complex.Divide(input[i], output[i]));
var aftOutput = 20*Math.Log10( Complex.Abs(aftInput));
chart2.Series[0].Points.AddXY(aftOutput, aftOutput);
}
chart2.ChartAreas[0].AxisX.IsLogarithmic = true;
chart2.ChartAreas[0].AxisY.IsLogarithmic = true;
615デフォルトの名無しさん
垢版 |
2020/07/20(月) 10:10:59.89ID:oCdL4TUp
こっちか
for (int i = 0; i < input.Length; i++){
var aftInput = Math.Log10(Complex.Abs(Complex.Divide(input[i], output[i])));
var aftOutput = 20*Math.Log10( Complex.Abs(aftInput));
chart2.Series[0].Points.AddXY(aftOutput, aftOutput);
}
chart2.ChartAreas[0].AxisX.IsLogarithmic = true;
chart2.ChartAreas[0].AxisY.IsLogarithmic = true;
2020/07/20(月) 12:08:59.65ID:2IOyO+tV
いや、ソリューション全部比較しないとプロパティまで見えないよね?
2020/07/22(水) 12:10:47.54ID:G1e5+QGc
※usingは長いので省略
class useDynamicObject1{
static void Main()
{
dynamic order1 = new Order();
order1.ProductID = 100;
}
}

class Order: DynamicObject
{
private Dictionary<string,object> items = new Ditionary<string,object>();
private const object MyDefault = null;

public override bool TrySetMember(SetMemberBinder binder,object value)
{長すぎてエラーが起こるので略}
}
というようなコードがあったとします。dynamic order1 = new Order();
order1.ProductID = 100; この部分でOrderオブジェクトのTrySetMemberメソッドが動作してるっぽいんですが
通常 order1.TrySetMember(引数を入れる);という形でインスタンスメソッドを呼び出しますよね?
なぜorder1.ProductID = 100;の記述でTrySetMenmberメソッドが呼び出されるのかがわかりません
理由を教えてください、よろしくお願いいたします。
2020/07/22(水) 12:17:39.88ID:PZLPLd2s
>>617
継承元のsetterがそう書いてるからじゃないの?
代入でsetterメソッドが呼ばれるよ
2020/07/22(水) 13:48:00.79ID:SRlHt7kI
>>617
docsに書かれている通り、プロパティに値をsetするときに呼ばれるような仕様だから、じゃダメなの?
https://docs.microsoft.com/ja-jp/dotnet/api/system.dynamic.dynamicobject.trysetmember?view=netcore-3.1
>このメソッドは、sampleObject.SampleProperty = "Test"のようなステートメントがある場合に呼び出されます。
>sampleObject は、DynamicObject クラスから派生したクラスのインスタンスです。
620デフォルトの名無しさん
垢版 |
2020/07/22(水) 15:11:33.71ID:RCIwbmD0
なるほど、状況はわかりましたが コードのイメージができません
どのようなコードを記述するか参考例はないでしょうか?

※どこかのサイトにかいてあるコードでもかまいません
621デフォルトの名無しさん
垢版 |
2020/07/22(水) 17:11:56.47ID:Vz073kjI
マルチスレッドについて質問です。
C#は初心者です。

コードの書き方を見ると、Threadは使うな!Taskを使え!というものばかり見ます。
今の時代はThreadはgotoみたいな扱いで、使っちゃだめなんでしょうか。
2020/07/22(水) 17:15:28.36ID:CV+o1S+t
>>621
Taskで事足りるから、Threadを直接扱うメリットが無い
2020/07/22(水) 19:37:30.15ID:INn9Gfu9
>>621
ThreadをThread.sleepで保留していて無理やり割り込んで起こすとか
言うような処理が必要なければTaskとかParalellで十分だかららしいよ
2020/07/22(水) 20:04:31.24ID:AJamwNQZ
車で例えるなら、
Thread/ThreadPoolを使うマルチスレッドは、クラッチ操作とかいろいろ面倒くさいマニュアル車
Taskを使ってのマルチスレッドは、アクセルを踏むだけで動いてくれるオートマチック車
ってなイメージかな
でもってTask.Run()すら書かなくていいasyncなメソッドは自動運転車

ただ単に移動したいだけなら楽なAT車(Task)を使えばいい
全部お任せしたいなら自動運転車(asyncメソッド)で十分
2020/07/22(水) 21:35:45.28ID:Dyis6wZJ
>>620
setter c#でググれ
626デフォルトの名無しさん
垢版 |
2020/07/23(木) 00:38:31.81ID:4rdlbzE6
async await で済むならそれが一番良いね
2020/07/23(木) 09:02:15.09ID:NYI4LF+6
621だけどありがとうございます!
時代の流れに沿ってTaskの勉強します
2020/07/23(木) 09:26:43.58ID:5gH7rQay
https://teratail.com/questions/279561

こーゆーの面白いけど、質問者はもうちょっとうまく立ち回ってほしいなあ。
2020/07/23(木) 11:41:04.02ID:LCQAVDS7
>>627
非同期処理自体に明るくないなら古い生のThreadの時代の記事を
むしろ一番最初に読んだ方が理解が早いと思う。
特に非同期処理固有の落とし穴をちゃんと理解しておくことは重要

今時の便利なスキームの有難みも分かるしね
2020/07/24(金) 04:18:35.62ID:Xje7ei/I
windowsフォームアプリは簡単なものなら作れるようになったので
次はウェブアプリに挑戦しようと思い、ASP.NETの本を読んで勉強してます

テスト用に作ったアプリをローカルではなく
実際にサーバーにあげて動かしてみたいと思っているのですが
こういった用途のサーバーレンタルは有料と考えてよいでしょうか?

さくらのVPS for Windows Serverなどを考えています
とりあえずの目的は、運用するまでの手順を学ぶことです
スレチだったらごめんなさい
2020/07/24(金) 04:36:15.16ID:92mFR8ZL
aws一択
2020/07/24(金) 04:49:22.51ID:Xje7ei/I
>>631
ありがとうございます
そちらも当たってみます
2020/07/24(金) 10:22:06.04ID:YnCezvlk
Azureに無料枠あっただろ
634デフォルトの名無しさん
垢版 |
2020/07/24(金) 10:48:35.32ID:qMgm686n
さくらのVPSでも良いけど
shellやpythonやdjangoの便利さに心奪われて
C#やASP.NETのことを忘れてしまうだろうな
それでも良いけど
2020/07/24(金) 11:06:10.55ID:SsZ4AS8R
>>634
心奪われるほどのものか?
2020/07/24(金) 12:11:32.93ID:/tD0n6Gi
型安全じゃない言語ってホビー以外に使えるの?
2020/07/24(金) 13:32:46.70ID:SsZ4AS8R
>>636
使われてるでしょ?保守は地獄だろうけど
2020/07/24(金) 13:43:02.46ID:7VtUugQr
じゃあ業務では使えないね
2020/07/24(金) 14:23:28.01ID:Y2miOylG
>>636
Cは型安全だと思ってる?
それともCはホビー以外に使えないと思ってる?
2020/07/24(金) 15:00:20.11ID:SsZ4AS8R
>>638
使われてるって言ってるのがわからないの?
2020/07/24(金) 15:19:35.82ID:7VtUugQr
ホビーの延長みたいな感覚で仕事をしてる責任感の薄い人が居ることは事実
2020/07/24(金) 15:22:41.00ID:ZEE8zZDA
板のローカルルールとスレのテンプレが読めない人はNG
2020/07/24(金) 19:32:24.53ID:uJnpulJb
読んでるけど従うつもりがないだけなんでそこんとこ認識をヨロシク
2020/07/25(土) 16:09:38.45ID:+eV1ptNI
NSのC#自体のソース読むと結構アンマネージ使ってたような覚えがあるけど気のせいか
2020/07/25(土) 16:10:19.04ID:+eV1ptNI
ちゃたった
NS->MS
2020/07/26(日) 08:31:48.16ID:Vt2OdSTv
>>644
気のせいじゃなく、実際結構使ってるよ。
2020/07/26(日) 12:34:03.71ID:PwqMs8Qo
>>644
C#自体と言われてもよくわからないんだけど、roslynのこと?
2020/07/26(日) 22:14:35.40ID:/Zfph6D6
idisposeも実装されてない
他のクラスの既にできているオブジェクトを外から強制的に消す
(全く参照させない、gclistに強制的に入れる)方法って
ありますか?
そのクラス内のあるstaticクラス変数にそのオブジェクトの
thisが入っているので外から
そのオブジェクトのアドレスだけはわかる
状態です。
それをなんとか全くどこからも
使わせないようにしたい
2020/07/26(日) 22:16:31.03ID:/Zfph6D6
あとthis.anyMethod()も
全くできないようにさせたい
外部から強制的に
できる?
2020/07/26(日) 22:21:36.89ID:/Zfph6D6
そのオブジェクトは
unityのObjectも継承してないので
static destroy(Object)も使えません
2020/07/26(日) 22:25:51.16ID:KwNXIlQB
>>648
IDisposable.Dispose()を実装して呼び出してもオブジェクト自体が消される訳じゃない
2020/07/26(日) 22:33:46.24ID:nxTYlDLI
条件がよくわからんしunityに限る話ならunityスレでは?
というかreflectionがあるんだから完全に禁止するってほぼ不可能じゃない?
2020/07/26(日) 22:33:57.56ID:/Zfph6D6
gclistに強制的に入れて
強制的にgc実行とかできない?
2020/07/26(日) 22:37:41.22ID:jmmTW8OV
何がしたいのか分からないねw
たぶん問題設定そのものが間違ってると思う
2020/07/26(日) 22:38:39.57ID:TQs5aOn7
>>653
参照を消したいのなら変数にnull入れてGC.Collect()
2020/07/26(日) 22:45:32.48ID:/Zfph6D6
>>655
全参照にnullをいれなきゃそれだめなんじゃ?
オブジェクトの元は外部の(管理下にない)ソースなんで自分でコード変えることができないんだけど
コード内容はわかるといった今の状況です
そのコード実行もしなきゃいけないし、オブジェクトも
つくられるんだけど、実行中に使えないように
したいという状況です
2020/07/26(日) 22:51:39.34ID:Smduqo9C
誰かエスパーしてあげてw
2020/07/26(日) 23:08:48.27ID:kypOQynU
仮に触れなくすることができたとする
でもそれらをそれまで触ってたオブジェクトは当然触れるものと思って触るわけだ
そこで実は触れませんとなったらNullReferenceExceptionか何かで死ぬしかないことになると思うんだけど

ならもう自プロセス終わらせればいいってことにならないかな
2020/07/26(日) 23:21:40.08ID:KwNXIlQB
>>656
そのオブジェクトを使う部分を自由に出来るなら、
管理用のクラスを通してしかそのオブジェクトにアクセス出来ないようにすれば?
管理用のクラスはIDisposable.Dispose()を実装するとして。
2020/07/26(日) 23:35:57.75ID:/Zfph6D6
>>659
管理部分は盲点でした
外部ソースをdllでまとめて
ある条件のときはそのdllを読み込まず
ダミーのdllを読み込ませる
といったことでなんとかできそうに見えます
ちょっと試してみます
ありがとうございます
2020/07/26(日) 23:52:58.90ID:/Zfph6D6
みなさんありがとうございます
大変参考になりました
2020/07/27(月) 01:47:30.49ID:BYRdt52X
本人が解決したって言うから良いんだけど全然理解できないのは俺だけ?
管理クラスと言うかラッパーみたいな共通窓口作ってそこでフラグ管理みたいなことしてアクセス制御すりゃオッケーって話?
2020/07/27(月) 02:33:31.05ID:msy0LCKO
>>662
気になるだろうけど他人が掘り下げても得られるものは無いと思う
2020/07/27(月) 02:34:48.02ID:+/9Qvyd1
何がしたいかは何となくわかる。

それが本当に本人が思っているほど必要なことかと聞かれたら...
大半の人は質問者は何か根本的に勘違いをしてるんじゃないかと思うんじゃないだろうか
2020/07/27(月) 05:15:50.18ID:l/11S2TE
やったできたわ
嬉しい
共通に使うクラスAがあって
クラスB.dllのオブジェクトが通信しあってる。
クラスB.dllに似たクラスC.dllをつくってクラスAと通信するがクラスBからはなにもしてほしくない
でもクラスBもAも変えられず実行もする
ってなるとクラスBを殺すしかと
思ってたけど
必要時クラスB.dllをダミーに置き換えればいけた
管理の部分はみれてなかった
コード内容が完全にわかってるからいけた
2020/07/27(月) 05:30:47.92ID:BYRdt52X
コードの中身全部がわかってなくてもインターフェースさえわかってればできたんじゃ?
ダミー作ることなんてテストとかでも使うしよくある手法じゃないかな
dllファイル名書き換えてとかはあんませんだろうけど

つうかdisposeもgcもunityも関係ない…
無理やりBを解放したら普通はAがまともに動作しないでしょ
667デフォルトの名無しさん
垢版 |
2020/07/27(月) 12:44:08.29ID:vNtx9fDh
餌を与えないで下さい
2020/07/27(月) 17:25:24.57ID:6PuT4Gny
>>647
C#というか.Net Frameworkのソースが次で公開されてる

http://referencesource.microsoft.com/
2020/07/27(月) 17:29:51.74ID:o3qaYBwJ
>>668
なんたレガシーな方か
2020/07/27(月) 18:42:15.63ID:CkDy44u6
そりゃフレームワークはどうしたってそうなるだろ。
2020/07/28(火) 19:00:41.72ID:vZrvythQ
質問させてください。
.NET Framework3.5 で完全な透明な黄緑色で円を描画する方法はありませんか?

Graphics g = Graphics.FromImage(this.bmp);
Color customColor = Color.FromArgb(0, 128, 255, 0);
SolidBrush brush = new SolidBrush(customColor);
g.FillEllipse(brush, 0, 0, 6, 6);

とやった場合、意図せぬ透過処理がされてしまい何も描画されません。
2020/07/28(火) 19:08:56.06ID:CTX9A1Y/
完全に透明な時点で色もクソもねーだろ
笑わせんな
2020/07/28(火) 19:14:28.88ID:IIddPlFk
>>671
そのthis.bmpをPNGフォーマットなどで保存したら「完全な透明な黄緑色で円を描画」した画像になるよ
ディスプレイで見えないのは不透明度が0なんだから指示通りでしかない
2020/07/28(火) 19:30:19.58ID:AU+xTBn3
正直な所、これが意図してないとしたら、何を意図してるのかわからん。
2020/07/28(火) 19:39:57.11ID:8/UcfNM3
村上ドラゴンの小説のタイトルかと思ったよwww
2020/07/28(火) 19:45:40.40ID:p7iAQgQg
準2級エスパー能力を発揮するなら
半透明な黄緑は期待したものでなく
黄緑のサングラスを通して見たようなものを期待しているのではないか
画素ごとに輝度をとって黄緑と乗算するか、いきなり黄緑と乗算するか、
そんなものがお望みなのではないか
2020/07/28(火) 19:50:48.29ID:DIHaAiPw
>>676
エスパーにエスパーが必要になりそうだなw
>>671
適当なペイントソフトで再現してみてから考えるなり質問した方がいいと思う
MSペイントじゃなくフォトショとかGIMPとか半透明色が使えるやつで
2020/07/28(火) 19:54:13.43ID:vZrvythQ
皆様説明が下手ですみません。
>>673
保存しましたがなりませんでした。
>>676
そういうブレンド演算処理の違いの話ではなく、
完全な透明は、通常 ARGB(0,0,0,0)という透明な黒の事が多いですが、
私が描画したい色は、完全に透明(つまりアルファ値が0)な黄緑で、
ARGB(0, 128, 255, 0) という透明な黄緑を描画したいという意味です。
2020/07/28(火) 19:58:06.12ID:p7iAQgQg
真っ黒な光みたいな?
2020/07/28(火) 20:01:17.20ID:AU+xTBn3
>>678
不透明度を1で描いたらどうなる?
2020/07/28(火) 20:02:15.75ID:DIHaAiPw
>>678
その保存した画像をアルファ値だけ弄ってみれば期待通りになっているのが分かるはず
2020/07/28(火) 20:12:36.90ID:vZrvythQ
>>679
いえ、アルファ値が0なので完全に透明で何も見えないのでARGB(0,0,0,0) と区別はつかないですが、
メモリ上のビットマップの内容にはアルファが0でも赤と緑の値に128や255の値を書き込めますよね。
そういう描画(つまり半透明演算をしない)がしたいんです。

>>680
目視できないくらい薄い黄色で描画されました。
何度も重ね描きしたら、うっすらと黄色が見えてきました。
不透明度128なら半透明の黄緑色で描画されます。

>>681
this.bmp は画像ファイルなので、その上に上書きで円を描画すれば元の画像が消えますよね?
そうはならず、元の画像のままなので期待通りにはなりませんでした。
2020/07/28(火) 20:21:15.85ID:DIHaAiPw
>>682
>その上に上書きで円を描画すれば元の画像が消えますよね
透過で上書きして消えるペイントソフトある?普通は消しゴムじゃないか?
それなら範囲指定するデータを設定してそれに沿ってBitmapDataで画素を置き換えたことしかない
2020/07/28(火) 20:31:52.02ID:s40ygP9w
ARGB(0, 128, 255, 0)で描画したはずが
抜き出してみるとARGB(0, 0, 0, 0)になってしまうとか?

それとも
ARGB(0, 128, 255, 0)での描画or透過処理で、画像に目で見える影響を与えたいとか?
2020/07/28(火) 20:49:25.10ID:vZrvythQ
>>683
消えるペイントソフトは無いと思います。
消しゴムだと普通はアルファ値だけ0になるか、又は透明な黒 ARGB(0,0,0,0)で消えますよね。
そうではなく、透明で黄緑な消しゴム ARGB(0,128,255,0) を使いたいという事です。

>>684
>ARGB(0, 128, 255, 0)で描画したはずが
>抜き出してみるとARGB(0, 0, 0, 0)になってしまうとか?

違います、元の画像のまま何も変化なしです。

>それとも
>ARGB(0, 128, 255, 0)での描画or透過処理で、画像に目で見える影響を与えたいとか?

そうです、透明な黄緑で円を描画したのだから、
円の形で透明に切り抜かれてほしいんです。
(更に切り抜かれた部分は透明な黒ではなく、透明な黄緑で)
2020/07/28(火) 21:04:55.49ID:s40ygP9w
透明な黄緑の先には元の画像が薄っすら見える方がいいのか?

透明な黄緑一色の均一な色で塗りつぶすのか?
2020/07/28(火) 21:12:34.91ID:AU+xTBn3
>>682
と言うことは、不透明度0の時に特別扱いされてないか確かめないといかんな。
不透明度0って、描かないと判断されてるのかもしれん。
2020/07/28(火) 21:13:39.38ID:CTX9A1Y/
>>685
もう何言ってるのかさっぱりワカンネ
ペイントかフォトショでその期待する画像作ってよ
2020/07/28(火) 21:15:26.22ID:CTX9A1Y/
掲示板で一番楽なのは計算式かな?
それがformsアプリでできるかどうかって言うと微妙だと思うけど
2020/07/28(火) 21:20:53.33ID:CTX9A1Y/
ちょっと思ったのは
もしかしてやりたいのはカラーキーの抜き色?
2020/07/28(火) 21:22:54.80ID:DIHaAiPw
>>685
あらかじめthis.bmpをFormat32bppArgbにする
this.bmpと同じ大きさのBitmapを作ってくりぬきたい場所にFillEllipseで描画する。(refbmpとする)
refbmpとthis.bmpのBitmapDataを作ってrefbmpの画素がある部分と同じアドレスでthis.bmpの画素のアルファ値を0にした黄緑色の画素データを書き込む
https://docs.microsoft.com/ja-jp/dotnet/api/system.drawing.imaging.bitmapdata.scan0
これしかやったことは無い。図形じゃない塗りつぶしならGraphics.Clear(Color)が使えるけど図形を指定するやり方はわからない
2020/07/28(火) 21:24:32.89ID:8/UcfNM3
>>685
なんか思いっきり勘違いしてる気がするけど、アルファが0ってことは
何も上書きしないのと同じことだよw
無色のガラス板を乗せたのと同じだからw
2020/07/28(火) 21:51:15.86ID:vZrvythQ
>>686
>透明な黄緑の先には元の画像が薄っすら見える方がいいのか?

いいえ。

>透明な黄緑一色の均一な色で塗りつぶすのか?

はい、そうです。

>>688
フォトショップは持っていないのと、
ペイントはアルファチャンネルに非対応のようなので
Gimpで説明させていただきます。
説明画像をこちらにアップロードしました。
https://f.easyuploader.app/eu-prd/upload/20200728214113_76595047614e3537674b.zip

"元画像.png" をGimpの消しゴムツールで消すと、
"消しゴム.png" の画像になります。
この画像をGimpで開き、円で消された部分の色々な箇所を、
Gimpのスポイトツールで色を取得すればわかりますが、
青や黄色、白等が取得でき、
透明でありながら元画像の色が残っている事がわかると思います。

私がやりたいのは、"目的の画像.png" を.NETで作りたいという事です。
この画像の円で消された部分をスポイトツールで色を取得すると、
RGB(128,255,0)の黄緑色のみが取得されます。

>>690
いいえ、やりたいのはカラーキーの抜き色ではないです。
2020/07/28(火) 22:27:55.85ID:s40ygP9w
g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
これで透過処理はされなくなるけど、失敗しそうな気がする(RGBがゼロになりそう)
試していなくてスマン
2020/07/28(火) 22:36:13.97ID:CTX9A1Y/
>>693
スマホだからzip見れねー
画像で上げ方知らんの?
2020/07/28(火) 22:40:58.96ID:W+ssPg1l
zipわろた
2020/07/28(火) 22:46:17.21ID:CTX9A1Y/
この掲示板自体に画像が上げられる
2020/07/28(火) 22:51:35.97ID:CTX9A1Y/
こんなん?
https://qiita.com/takutoy/items/b123dde5a699f65917b4
2020/07/28(火) 22:56:23.45ID:vZrvythQ
>>691
詳しく説明してくださってありがとうございます。
それで出来ると思います。
ただちょっと一手間がかかりそうですね。

>>694
ああ、これです!私が捜し求めていたものは!
っと思いましたが、残念ながら透明な黒 ARGB(0,0,0,0) になってしまいました。
アルファ値128ならちゃんと半透明の黄緑になるのに、惜しい。
アルファ値1だとほぼ透明な黄色になりました。

スマホで透明部分の色が確認できるのかわかりませんが、アップロードしてみました。
"元画像.png"
https://f.easyuploader.app/eu-prd/upload/20200728224712_3833583973794a4b386f.png
"消しゴム.png"
https://f.easyuploader.app/eu-prd/upload/20200728224758_6e4174726e5477434158.png
"目的の画像.png"
https://f.easyuploader.app/eu-prd/upload/20200728225050_49646a7a674171774f59.png
2020/07/28(火) 23:02:45.30ID:8/UcfNM3
適当に検証コード書いてみたけど別に変なことしなくても
ピクセルにアルファー値を持つビットマップは作れるけど
何がしたいのかな。
面倒くさいから質問ろくに読んでないけどw

private void Form1_Paint(object sender, PaintEventArgs e)
{
  e.Graphics.Clear( BackColor);
  var hb = new HatchBrush(HatchStyle.HorizontalBrick, Color.White, Color.Black);
  e.Graphics.FillRectangle(hb, ClientRectangle);

  var bmp = new Bitmap(Width, Height);
  using (var g = Graphics.FromImage(bmp))
  {
    var c = Color.CornflowerBlue;
    var gb = new LinearGradientBrush(ClientRectangle, c, Color.FromArgb(0, c), 0f);
    g.FillRectangle(gb, ClientRectangle);
  }
  e.Graphics.DrawImage(bmp, 0, 0);
}
2020/07/28(火) 23:22:12.18ID:CTX9A1Y/
>>700
あ、アルファ値って普通に書くだけでいけるんや

んじゃあ、最終出力がpngであるならなんでもできるね
1ピクセルずつアクセスしてRGB取り出してRGBAブッ込めばなんでもできるしそれこそなんでも
2020/07/28(火) 23:42:09.06ID:DIHaAiPw
>>694
それ知らなかったけどおかげでGraphics.Clearにも完全透明色でのRGB設定できないのわかったわw、ありがとう
http://bbs.wankuma.com/index.cgi?mode=al2&;namber=77366&KLOG=131
2020/07/29(水) 00:59:34.41ID:l1NFDws7
>>700

>>691 の処理をもっと簡単にやりたいんです。

>>702 の掲示板を見る限り、やはり>>691 でやるしかなさそうですね。
皆様ありがとうございました。
2020/07/29(水) 01:38:35.72ID:jnMYxU1A
簡単の基準は?
705デフォルトの名無しさん
垢版 |
2020/07/29(水) 01:39:42.78ID:CwVjY0Ri
3分クッキング
2020/07/29(水) 02:00:24.66ID:l1NFDws7
>>704
>>694 のようにですね。
2020/07/29(水) 08:08:54.77ID:dxgD+NL4
.Netは4.5を指定すればWindows8.1から2004まで追加のアップデートなしで済むんですよね?
最新のVS2019で4.72だかで作って配布したら10でも.netアップデートしなきゃ使えんと文句の嵐でめげた。
2020/07/29(水) 08:17:48.19ID:ZD2Ud5DP
なに作ってんのか知らんけど.NET CoreでSCDという手も
2020/07/29(水) 08:19:28.87ID:F052uZps
なぜサポート切れを?4.8で終わりなんだから4.8にしとけ
2020/07/29(水) 08:21:09.89ID:jnMYxU1A
え?終わりってその後どうなんの?
2020/07/29(水) 09:24:59.33ID:HB4PhX83
.NET Coreベースの.NET 5に統合
WindowsのOS標準でインストールされてるのはとりあえず当分は.NET Framework 4.8が続くだろうな
2020/07/29(水) 09:42:01.59ID:jnMYxU1A
>>711
winformsかもしくはそれぐらいお手軽なのあるの?
713デフォルトの名無しさん
垢版 |
2020/07/29(水) 09:51:55.20ID:H7KKJzsx
WPF(始まってなかった)
2020/07/29(水) 09:59:34.47ID:HB4PhX83
.NET Core 3.0でWinFormとWPFは移植されたよ(もちろんWindows版限定だけど)
.NET 6以降はXamarinベースの.NET Multi-platform App UIを導入予定だよ
https://devblogs.microsoft.com/dotnet/introducing-net-multi-platform-app-ui/
2020/07/29(水) 10:21:11.13ID:F052uZps
いずれにしても4.5はやめとけ
2020/07/29(水) 11:05:27.84ID:rDHTEYe8
>>707
4.6.1を勧める
Win10(初代以外)ならインストール要らず
このバージョンを要求する外部ライブラリも多いし
717デフォルトの名無しさん
垢版 |
2020/07/29(水) 11:07:32.45ID:7+Ufx8Gb
ラインタイム依存が嫌なら、
.Net Core 3.1 でランタイム込みの自己完結型アプリを作ればいいんじゃないの。
その分ファイルサイズはでかくなるけど。
2020/07/29(水) 11:10:47.14ID:dxgD+NL4
そうですか、.netのアップデートは情シスに頼まないと一般ユーザーでは出来ないのがネックです。
会社の端末はwindows updateは殆んどやらないし。
.net位やって欲しいな。
愚痴ってごめんなさい。
2020/07/29(水) 11:11:48.96ID:dxgD+NL4
>>717
それ勉強します。
ありがとう。
720デフォルトの名無しさん
垢版 |
2020/07/29(水) 11:18:27.50ID:7+Ufx8Gb
.Net Core の自己完結型アプリのことは、
https://docs.microsoft.com/ja-jp/dotnet/core/deploying/
https://dekirukigasuru.com/blog/2019/11/24/csharp-single-executable/
などを読めばわかるよ。
なお、実行ファイルパス問題というのがあるので注意ね。
詳しくは上のページを読めばわかると思う。
2020/07/29(水) 11:20:33.05ID:F052uZps
>>716
だめ。BindingRedirect周りの設計をミスったことが散々ディスられてMS側も誤りであったと認めている。4.7.2以降が推奨されている。
2020/07/29(水) 11:29:24.87ID:rDHTEYe8
>>721
マジですか
ポインタ教えてください
2020/07/29(水) 11:39:14.24ID:F052uZps
>>722
なぜここでポインタの話?
724デフォルトの名無しさん
垢版 |
2020/07/29(水) 11:42:14.30ID:DcS06fwg
アスペktkr
2020/07/29(水) 12:04:03.54ID:rDHTEYe8
>>723
ソースのことです
2020/07/29(水) 12:06:03.13ID:F052uZps
>>725
またややこしい言葉を…このあたりのissueやTwitterのスレッドを眺めると、大体の経緯はわかると思うよ

https://github.com/dotnet/standard/issues/481
https://twitter.com/terrajobst/status/1031999730320986112?s=19
https://twitter.com/5chan_nel (5ch newer account)
2020/07/29(水) 12:10:14.59ID:rDHTEYe8
>>726
ありがとうございます。
確かにこの板だと紛らわしかったですね。
2020/07/31(金) 01:13:19.08ID:durLTnal
無能winformsプログラマのおいらをMicrosoftは見放してしまうのか・・・
2020/07/31(金) 01:16:45.59ID:mccS7x6Z
>>728
ところがどっこい、UWPは消えつつあるのに対し、WinFormsは.NET Coreに移行され、.NET5以降もしぶとく生き延び続ける
2020/07/31(金) 09:36:09.26ID:5o3L2EFA
4年前に「Win32は廃止されて今後はUWPの時代」と息巻いてた人たち
20年延々懲りずに「すべてのアプリはブラウザ上で動く時代になる」と言い続けてる人たち

どっちも心底センスがないと思うw
そんなことちょっと考えればありえないって分かるよね
2020/07/31(金) 09:41:53.03ID:fk+2L6iO
>>730
概ねあってね?
前者はandroidアプリで
後者はWEBサービスだろ
それしか息してないじゃん

PCだけガラパゴス化して化石が残ってるってだけ
732デフォルトの名無しさん
垢版 |
2020/07/31(金) 11:12:25.50ID:N0eufbNj
アプリωってストアアプリωωのことか?ωωω
2020/08/01(土) 08:23:32.56ID:rtK1naa5
ほらほらストアにアプリ公開したら数千円くれるキャンペーン再開してホラホラ
2020/09/02(水) 02:32:00.82ID:6fqNtNLb
うちの会社は特定業界向け製品だけ作ってるけど、旧製品だけWinFormsのまま(もっと古い製品はC++とWin32APIとMFCだけど)
ここ数年内に出した製品はWPFになってるな。
新規でWinFormsは使ってない。
2020/09/02(水) 06:36:18.34ID:PAY6dedH
>>734
wpf始めるにはhtmlとか覚える必要ある?
2020/09/02(水) 08:34:40.77ID:64Ct0prY
>>735
WPFで使うxamlは、ぱっと見はhtmlに近いけどまるで違うから覚える必要はない
2020/09/02(水) 21:56:14.13ID:/nOWjplL
xmlはマスターしておいた方がいいよな。namespaceとか。
2020/09/02(水) 23:38:57.96ID:S5lx9AE3
xsltとか
2020/09/03(木) 05:58:48.80ID:yk4FSoXe
wpfでxsltなんて役に立つところあったっけ?
2020/09/03(木) 07:38:36.62ID:1xUWHYWV
もうformはあかんのか?
2020/09/03(木) 07:46:25.03ID:2k3QR/ew
嫌、ストア系以外はformの方が
小回りが効くな
2020/09/03(木) 08:18:55.17ID:ea/i/g7l
WPFはほとんど普及しないまま既にForms同様メンテナンスモード(原則的に新機能の追加はなくバグ修正等の止むを得ない対応のみが行われる状態)でありレガシーなので、
特にFormsと比較してWPFが正義ってことはない
2020/09/03(木) 09:01:56.44ID:1xUWHYWV
なるほど、ならformでいいやw
2020/09/03(木) 12:01:53.18ID:+QaKkUR1
最近はディスプレイのスケーリング表示に対応させたいからWPFの方が楽だな
2020/09/03(木) 12:18:31.00ID:F5m5ASgR
だけど、大昔VBが開発された頃に想定されたような
いろんなdpiが混在するような状況なんてなく、96pdiとその倍ぐらいしか事実上ないわけで、
だったらそんなのどうでもいい気もする
2020/09/03(木) 12:56:49.83ID:+QaKkUR1
>>745
スケーリングは標準で25%刻みで350%まであるけど?
最近のノートPCやタブレットは最初からスケーリング設定されているし
特にSurfaceなんか滅茶苦茶解像度高いからスケーリング必須
2020/09/03(木) 13:02:08.77ID:O2zrguk1
その倍数の環境が一般的になってきてるからスケーリング対応が必要なんだが
2020/09/03(木) 13:19:37.70ID:F5m5ASgR
どうでもいいの意味は対応しなくていい、ではなく
システムが中途半端な対応しか用意してないWindows Formでも
なんとかなっちゃうでしょって話。

理論上はいろんなdpiが存在する前提になってるが、現実的には96dpiと
その2倍ぐらいしかないんだから。
25年前には想定されてなかったCRTの完全追放が早期に実現したからね。
2020/09/03(木) 13:24:38.58ID:F5m5ASgR
ちょっと思い出したけど、WPFでは1ピクセル幅の水平垂直の直線が綺麗に描画できない(ピンボケになる)
問題があったけど、あれは4Kとかの環境では気にならないのかな
2020/09/03(木) 14:35:36.67ID:yRd+jnLy
>>748
いっぱいあるぞ。
うちの業界には。
2020/09/03(木) 19:59:17.63ID:+QaKkUR1
>>748
カスタム設定(最大500%)で1%単位で設定する人は稀だろうけど
標準設定(最大350%)の25%単位の指定は使う人が増えて、解像度のバリエーションも増えたって話なのだが
4Kモニターも少しずつ広まってるし
2020/09/05(土) 08:40:32.65ID:MHY1xOGp
その前に、「WinFormsもとっくに高DPIに対応済みだ」って誰か突っ込んでやれよw
2020/09/05(土) 10:49:33.69ID:9iYaaDzM
ankerとフォントサイズの動的変更じゃ駄目?
2020/09/05(土) 13:21:00.10ID:7aeJiSvy
>>752
WinFormsも高DPIに対応してはいるけど面倒臭い
2020/09/05(土) 16:01:56.47ID:ARWucMbq
.NET CoreのWinformsでも普通にコントロール崩れるから全然ダメ
2020/09/16(水) 22:39:54.60ID:jIU6/wNj
【速報】ビル・ゲイツ死去
https://hayabusa9.2ch.net/test/read.cgi/news/1600242851/

ゲイツが天国で寂しくないようにこのスレのc#プログラマを30人ほどいっしょにうめたらどうか?
2020/09/16(水) 22:46:34.68ID:HQ9YFi7S
ビルゲイツじゃないでしょ?
2020/09/16(水) 23:00:32.69ID:LP9iHCzm
二世の方だ
ビルゲイツの親父のビルゲイツ
2020/09/17(木) 08:19:29.64ID:WgqtFT7g
ゲイツはジュニアってよばれてたなのかな
インディージョーンズを思い出す
760デフォルトの名無しさん
垢版 |
2020/09/17(木) 12:22:44.13ID:OW2OZx8D
middle name Henry の方はご健在
2020/09/17(木) 17:19:39.02ID:ZnP+7nxp
C#はゲイツの発明品じゃないだろ
2020/09/17(木) 17:26:35.18ID:DY/TSPVG
ここは雑談スレでもない
2020/09/30(水) 03:00:43.36ID:UkXS54f3
>>755
それでも困らないし全然駄目じゃないから
WPFが10年も普及してない
全然駄目なら完全に淘汰されとるわ
2020/09/30(水) 04:21:31.87ID:Zcv1ppLY
Winformでもそれなりにアプリが作れちゃうから、わざわざ新しい手法を覚えようとは思わないよなぁ
765デフォルトの名無しさん
垢版 |
2020/09/30(水) 05:20:08.84ID:/UKb1qW0
>>763
hidpi対応が全然ダメだって話だしlodpi環境自体が淘汰されてないんだから当たり前じゃろ
2020/09/30(水) 07:28:45.65ID:MlAR04xo
>>764
まさにそんな意識の人が多いんだろうなぁ。
ことあるごとに「WPFはいらない」とかアピールしなければ害はないのだが。
2020/09/30(水) 07:34:58.16ID:M14URhI0
なんか本気で凝った画面作るならunityとかあるし
工場向けならwinformsだしで
消極的に凝った画面作るときしか選択しないwpf
2020/09/30(水) 08:10:01.23ID:WMsfYqPQ
Web技術使えばいいからな
新規でWPF選ぶ時代ではない
Silverlightと同じ
2020/09/30(水) 08:15:05.31ID:VC7cxOmi
WPFも.net5+WinUI3でディスコンだけどな
770デフォルトの名無しさん
垢版 |
2020/09/30(水) 12:35:11.90ID:NNWpaWfq
お邪魔します、くだんのUnityで
c#を始めてみたんですがデスクトップビルドとHTML5ビルドのクライアントで対戦ゲームを作るようなとき
あるいはゲームでなくてもデータベース参照でも良いですが、
どうやって通信の仕組み作れば良いのでしょうか?
771デフォルトの名無しさん
垢版 |
2020/09/30(水) 13:19:18.32ID:sYKFg//m
Unityのスレがあるよ
772デフォルトの名無しさん
垢版 |
2020/09/30(水) 13:22:19.03ID:oivRVKFU
>>770
プロが書かないとそこそこ危険な分野なので、Photonみたいなのを使っとくのが安全じゃないのかな
https://assetstore.unity.com/packages/tools/network/photon-unity-networking-classic-free-1786
個人のゲームで無料の20CCUを使い切ったら大したもんだろうし、それを超えても500CCUまではかなり安く使えるんで、とんでもない大ヒットしない限りこれがいいよ
2020/09/30(水) 13:49:11.25ID:NNWpaWfq
>>771
ネットワーク通信の書き方ってUnity操作のスレなんだろうか?そこもよくわからない・・
>>772
ありがとうございます
c#始めて1週間程度なもんでココのスレ来たんだけど
ローカルでちょこっと遊んでみたいだけなんで
photonてどういうアセットなのか?
ccuが何か?すら知らなかったんで
そのあたりを調べてみたいと思います。
どうもでした。
2020/09/30(水) 15:39:11.81ID:mMxFIkOQ
Unity の C# は C# のサブセット
2020/09/30(水) 22:58:13.59ID:88URXoRi
>>232
> WinformもWPFもやったことない人なら、どっちでも楽さは変わらない
ってことは絶対ない
覚える分量もぜんぜん違うし
特にWPFとMVVMと一緒に覚えないといけないのは難関すぎる
c#精通してる人たちでも移行がすんなりいかなかったのにふざけるなよほんと
2020/09/30(水) 23:17:51.70ID:AZmvyllE
>>774
それを言ったらWinformsもサブセットだしWPFもサブセットだし大体がサブセットになるじゃん
2020/09/30(水) 23:32:40.97ID:FlnFD5lW
>>775
MVVMは必須じゃないぞ
MVVMやらないならそんなに差があるとは思わないな
MVVMまで覚えるなら確かに学習量が全然違う

つーか、1年以上前の発言にレスすんなよw
778デフォルトの名無しさん
垢版 |
2020/09/30(水) 23:38:46.92ID:wQcBlxXT
ボタンを置いてダブルクリックするとイベントハンドラが自動的に作られる…
みたいな作りやすいUIが早くできればいいのになー
2020/10/01(木) 00:03:09.65ID:+QSVvI9y
>>778
VSのWinフォームデザイナで出来てるだろうが
2020/10/01(木) 00:56:42.92ID:pTVPs5Kc
>>778
は?
781デフォルトの名無しさん
垢版 |
2020/10/01(木) 02:42:28.23ID:zz0NqDNj
WinFormsを選択する理由がない

C#はXamarin, Unity, WPFでOK
2020/10/01(木) 02:51:18.52ID:D0iMq3L3
>>778
せやな
2020/10/01(木) 03:18:09.94ID:gmn8vEFr
>>778
どういう目的でボタンを配置したのかをAIが忖度して
イベントハンドラーが自動的にプログラミングされるならすごいなー
いや余計なお世話かもしれないから
ダブルクリックでウィザードが起動するくらいなら出来なくもないか!?
ダブルクリックでUnityもXamarinも対象位置に飛ぶだけかな?
if文やトライキャッチはTABキーダブルでテンプレ挿入なるけど、まだまだ物足りない・・・
2020/10/01(木) 16:01:53.74ID:c282b8/j
.net5からはWinUI3でUWPのガワがデスクトップで利用できるようになり
xamarinからunoってのに代替わりもありそう
785デフォルトの名無しさん
垢版 |
2020/10/01(木) 16:17:26.41ID:15Icpaxe
>>776
お前サブセットの意味判ってないやろ
2020/10/01(木) 17:15:28.05ID:Am5BkVHe
>>1が理解できない、守れないやつは他へ行けよ
2020/10/02(金) 00:49:35.05ID:yLHMA8M3
.net coreはまだまだコントロールが足りなくて切り替えは厳しいな
シコシコ作った自家製クソアプリがラズパイ上で踊り狂う日を待ってます
2020/10/02(金) 07:20:55.57ID:0z7X4+Qf
async awaitの原理がよく分かりません。
await以下のコードは実行されないにも関わらずawait中にそのスレッドが固まらないのはどういう原理なのでしょうか?
具体的にはUIのボタンクリックなどのイベント関数内でのawaitの話です
2020/10/02(金) 08:51:18.97ID:kuZFus9w
既に解説してくれてる人が沢山いるから読めば
https://www.slideshare.net/mobile/ufcpp/asyncawait-114647813
2020/10/02(金) 10:35:41.15ID:p0460FPy
async awaitのメソッドはその時点でノーマルメソッドから呼べないので悪手
2020/10/02(金) 10:37:50.75ID:m3jHS+gr
>>790
何言ってんだこいつ
792デフォルトの名無しさん
垢版 |
2020/10/02(金) 11:06:17.65ID:vEIDHK0R
const 汚染とか GPL 汚染とかと一緒で
async await 汚染が広がるってのはある
もちろん回避方法知ってれば回避可能
2020/10/02(金) 11:08:01.96ID:qQOsRvHB
Asyncメソッドは名前がキモい
2020/10/02(金) 12:18:32.20ID:HvZS2dGY
githubでc#製のソースコードみてると
visual studioが吐いたファイルとかが含まれてないんですけど
普通はvisual studioで開発をしないものなんでしょうか?
2020/10/02(金) 12:22:19.93ID:X17mNl8S
普通はvsじゃない?
例えばどのリポジトリ?
796デフォルトの名無しさん
垢版 |
2020/10/02(金) 12:23:44.70ID:vEIDHK0R
無駄なものは要らんので .cs だけで済む場合は .cs だけのプロジェクトの方が好き
2020/10/02(金) 12:25:23.46ID:J9R5Ijdj
makefileを自分で書けっていうのは見るなって言ってるのと同じだよな
2020/10/02(金) 12:30:57.59ID:DER3efA5
自動生成されるようなものをリポジトリに含めてもしょうがないから除外してるだけなんじゃね?
2020/10/02(金) 12:33:28.61ID:X17mNl8S
slnもcsprojファイルも無いってことなんでしょ?
わざわざそんなことする?
2020/10/02(金) 12:41:03.88ID:m3jHS+gr
>>794
どれ?
2020/10/02(金) 17:44:48.62ID:XoOS1pa+
>>790
何故そう思った?
2020/10/02(金) 17:56:06.16ID:p0460FPy
>>801
エラー出たよ
2020/10/02(金) 19:55:46.73ID:H7VjwKcI
本物の馬鹿だったか
2020/10/02(金) 20:20:16.02ID:p0460FPy
え、ショック
2020/10/02(金) 20:42:39.37ID:LbxjABVY
間違った使い方をすりゃそりゃエラーも出るよ
2020/10/02(金) 22:24:30.87ID:p0460FPy
正しい使い方なんてあるのかよ
2020/10/02(金) 22:34:28.61ID:zXx3uGG2
当たり前だろ
2020/10/02(金) 22:48:57.10ID:p0460FPy
でもググって出てくる例っておかしいのばっかりじゃね?
2020/10/02(金) 22:52:20.08ID:SS+YiBnr
道路で逆走している車から見て「車がみんな逆走しているぞ」って言っている感じか
2020/10/02(金) 23:14:47.03ID:p0460FPy
そう言えばこの命令が欲しいときってプログレスバーで進捗状況も更新して欲しいときが99.89%なんだけど
結局while+sleepのが綺麗に書けることが多くて使ってないな
2020/10/03(土) 00:00:37.61ID:YZwmKYAY
正しい使い方を知らないのにも関わらず悪手、なんてよくいい切れるなw
プログレスバーはIProgress使うだけでじゃん
2020/10/03(土) 00:29:25.48ID:5AEEzqRi
>>811
久しぶりに聞いたなIprogress
813デフォルトの名無しさん
垢版 |
2020/10/03(土) 01:07:24.42ID:sQ+SRwj5
「非同期メソッドは、asyncがついた関数内からしか呼べない。」みたいなことが書いてある嘘ブログが結構あるからな
例の大量書き込みの人は、そう言うのを書いてる人か、それかそう言うのを読んで真に受けてる人なんだろう
2020/10/03(土) 02:58:19.24ID:/wA+nWqo
プログレスバーなんて、簡単に動かないだろ。
マルチスレッドなのに、素人ができるわけない

非同期と同じ。
コンテキスト・文脈が異なるから、特別な書き方をしないと動かない
2020/10/03(土) 08:26:53.20ID:sEhX1LxQ
別にasync/awaitがなかった時代でも
GUI操作のときだけForm.Invoke()すればよかっただけじゃない

Rubyジジイは老害みたいなこと言ってるわりにいにしえの当たり前のスキルすら持ち合わせてない
2020/10/03(土) 08:56:04.28ID:rbnJu3Rq
>>814
C#でマルチスレッドじゃないと動かないプログレスバーなんか存在しないからコンテキスト・文脈が異なるスレに帰れ
2020/10/03(土) 10:29:50.07ID:XvRdXCx6
>>789
ありがとうございます。
大雑把に言えば、await以下の同関数内のコードは内部的にはコールバック化されるという理解で良いんでしょうか?
そして待機せずに同関数から抜けるため固まらないと
818デフォルトの名無しさん
垢版 |
2020/10/03(土) 10:49:35.02ID:NjZXoVXL
UnityのC#にTaskが無いのは何故なんです?
2020/10/03(土) 10:58:38.87ID:Rg22Ictw
C++では、クラスの宣言とメソッドを別々にかけるじゃないですか
class A{
 int get();
};

int A:get()
{
}
みたいに。C#でも同様な書き方は出来ますか?
820デフォルトの名無しさん
垢版 |
2020/10/03(土) 11:03:01.12ID:C2ZTF6bo
partial は?
2020/10/03(土) 11:09:15.30ID:/wA+nWqo
JavaScript で言えば、await は、非同期・async を、同期的に書けるもの

例えば、処理A, B, C があり、
Bが非同期なら、コンテキスト・文脈が異なるから、
A, C, B の順番で実行される

await を付けると、下へ行かない。
同期処理と同じ、A, B, C の順番になる

面倒な非同期処理を、同期処理のように、上から書いた順番通りに実行される

漏れは、C# のawait は知らないから、自分で調べて
2020/10/03(土) 11:22:22.57ID:td6OdJ/B
>>821
C#のawait知らないならC#のスレに得意げに書き込むなよ知障
2020/10/03(土) 11:34:05.39ID:nJ/4CJLb
進捗率100%中の100%プログレスバー
2020/10/03(土) 11:36:39.63ID:nJ/4CJLb
1日1%感謝の進捗更新
825デフォルトの名無しさん
垢版 |
2020/10/03(土) 11:44:35.80ID:NjZXoVXL
99% から 100% になるのに 3日かかるんですね判ります
2020/10/03(土) 12:45:54.24ID:7JLpHN6R
>>825
いや、すぐ100%になるよ
その後の

更新したファイルのチェックをしています

に時間かかるけど
2020/10/03(土) 14:54:53.24ID:cvTPWa8P
C#のよりよい書き方を教えてくれるチェッカーってありますか?
シェルスクリプトだとshellcheckみたいなの
2020/10/03(土) 15:07:25.79ID:oPj9Yyz3
定番はStyleCop
2020/10/03(土) 16:25:06.84ID:hETfjJzu
ReSharperはお母さん
2020/10/03(土) 17:10:12.58ID:DOKuHmaU
>>825
単調増加するとも限らない
途中で減るプログレスバーとかあるで
2020/10/03(土) 18:26:08.32ID:NyXscKPR
システム更新系のでそんなのがあった気がしたねw

まあ、処理時間ベースの進捗度なんて出すのはどうせ難しいんだから
フリーズしてる不安だけ感じさせないようにしてくれれば十分だよね。

VS2005の時代のイメージライブラリーにナイトライダーのあれみたいな
gifアニメがあったけどああいうのでいいと思う

10段階の処理のnフェーズ目を処理中、みたいな表示はあってもいいかもしれんが
スレ違いなのでこの辺で
2020/10/03(土) 18:31:52.94ID:IvIQIb1V
最近のソシャゲはいい感じでメーター出しとるやん
833デフォルトの名無しさん
垢版 |
2020/10/04(日) 10:09:30.72ID:WrglaOe5
確かにファイルのダウンローダー系のは残り時間表示が減ったり増えたりするな
2020/10/04(日) 10:12:08.66ID:8hNgrfXT
.NET5っていつから正式版使えるの?
俺の中の作りたいプログラムキューが結構溜まってきてるんだけど
2020/10/04(日) 10:43:30.53ID:k8KFSdqF
>>834
もうGAでサポートありでは?
2020/10/04(日) 10:47:17.82ID:lIfIRwKF
>>833
ファイルがたくさんあるときは、一つのデータに固めて送れば変な変化しないと思う
2020/10/04(日) 12:58:55.35ID:eUP8i5sY
>>835
GAという表現は使ってないね。まだRC1だけどGo Liveライセンス有り。
2020/10/04(日) 14:59:03.87ID:0bpWQCgk
>>837
なるほど、ありがとう。
2020/10/04(日) 17:41:26.92ID:OuBWvyJw
C#でアプリケーションを作ってVisualStudioInstallerをSetupファイルを作ってインストーラーを使ってます
アプリで参照しているdllのバージョンが上がってSetupファイルをビルドして再配布しようとしているんですが
どうも配布先で実行しても該当のdllだけ差し替わらないのです
VisualStudioInstallerの方では該当のdllを参照しているバージョンはプロパティで確認しても最新ですが
同名dllの該当ファイルはアップデート後も書き換わらず上書きされない状態です
何か解決方法ありますでしょうか?
2020/10/04(日) 17:43:55.75ID:OuBWvyJw
補足です
配布先で、一旦アンインストールしてSetupを実行する限りは
新しいバージョンのdllが入り問題なく動作しています
2020/10/04(日) 17:54:40.72ID:h2vHNKtG
>>839
該当のdllがファイルバージョンを上げ忘れてると思われる
msiは対象のファイルのバージョンが上がっていないと上書きしない余計な仕様があって、これに引っかかる(無視する設定は無いはず)
まずはdllファイルのプロパティからバージョン情報を確認して、新旧で変わっていないようなら配布元に更新をお願いするしかない
2020/10/04(日) 18:02:38.99ID:OuBWvyJw
>>841
レスありがとうございます

該当のdllのプロパティを除くと、製品バージョンは確かに新しいものですが
ファイルバージョンが1.0.0.0と触ってないような値です
おっしゃられるmsiがチェックするのは、このファイルバージョンという理解であっていますか?
そのメーカーさんが最近nugetでアップデートを配布するようになって
アップデートする度に配布先でバージョン不一致のトラブルで悩まされてるのですが
もしかしてこのせいなのかな・・・
2020/10/04(日) 18:10:42.63ID:lIfIRwKF
仮想環境入れてやってみろや
2020/10/04(日) 18:20:31.24ID:iE//6OtY
窓から投げ捨てろ
嫌ならGUID再発行して見るべし
2020/10/04(日) 18:29:28.20ID:OuBWvyJw
>>843
一応、仮想環境入れてやっておりまして、そこで調べていてdllのバージョンが変わってないのに気づいた次第です

>>841
同メーカーの別のアップデートされているdllのプロパティを見たら
ちゃんとファイルバージョンも製品バージョンと一致させて更新されていました
トラブルが起きたdllはファイルバージョン入れ忘れの可能性が高そうなので
メーカーさんに問い合わせてみます
2020/10/04(日) 19:29:22.35ID:h2vHNKtG
>>845
少し訂正
解決方法としては、REINSTALLMODEプロパティ※を変更する方法もあるそうだ
※VisualStudioInstallerのプロパティではない
結構手間がかかるみたいだから、dllを修正して貰うのが一番だと思うけど一応
2020/10/04(日) 19:59:56.73ID:7zaljJEm
どぼんさんのとこにREINSTALLMODEを設定する方法が書いてあるので
これが一番簡単だね
http://dobon.net/vb/dotnet/deployment/overwrite.html

これはどぼんさんのところには記事がないと思うが、
MSIのプロパティは外部ツールで手動でやらなくてもPostBuildEventで
自動的に変更する方法があって、ググれば出てくると思う。

しかしMSIってそんな仕様があったんかw
っていうかもうVS10年ぐらい使ってないんだけど
今MSの推奨するインストーラーって何なの?

MSIは廃止されるはずだったよね?
2020/10/04(日) 20:08:17.90ID:h2vHNKtG
>>847
そんなに単純じゃないからちゃんと調べて
2020/10/04(日) 20:53:10.83ID:7zaljJEm
>>848
何が?
2020/10/04(日) 21:15:52.12ID:h2vHNKtG
>>849
初回インストールと2回目以降で処理を変える必要があるのだけど、>>847のページからのリンク先に説明があったね
失礼しました

https://dobon.net/vb/dotnet/deployment/upgrades.html#section6
2020/10/04(日) 21:47:36.10ID:OuBWvyJw
アドバイスありがとうございます
とりあえずメーカーさんには問い合わせをだしつつ
簡単そうなOrcaを使ってamusにし、強制的にdllを上書きするようにしてうまくいきました
今回分は手動でmsi書き換え対応、あとはメーカーさんの対応待ちというところでひとまず解決です
ご教授いただき感謝です
2020/10/05(月) 02:38:37.53ID:nd84XqHd
>>847
msixかな
2020/10/05(月) 14:34:55.98ID:q4O9ogxl
ボタンクリックでpingを並列処理(guiでparallel.for)させてるのですが、並列処理が終わった後に何らかの処理をさせたいのですが、終わる前にさせたい処理が始まってしまうのは何故でしょう?
854デフォルトの名無しさん
垢版 |
2020/10/05(月) 15:16:41.19ID:e+L/idp9
終わるまで待たずに始めてるからだろう
2020/10/05(月) 16:03:32.02ID:q4O9ogxl
>>854
すいません、結果表示の所でデリゲートしてました。
デリゲートしてたら抜かされるんですね。
856デフォルトの名無しさん
垢版 |
2020/10/05(月) 17:21:36.72ID:yAAG+Ftq
やってること、機能の理解、用語の理解、みんなめちゃくちゃすぎて、まるでQiitaをみている気分だ
2020/10/05(月) 17:35:16.52ID:Xbvrw4me
デリケートだからな
2020/10/05(月) 17:41:37.83ID:gVc00iwv
class myDAT { 
 public int no;
 public double[] data = new double[5];
}
public static void Main(string[] args) {
 myDAT[] mydata = new myDAT[10]; //★
 for (int i = 0; i < 10; i++){
  mydata[i] = new myDAT();
}

クラスを配列にしたとき★の箇所の"myDAT[10]"を10固定じゃなく動的にしたいのですが
どうすればよいですか?
2020/10/05(月) 17:56:17.90ID:KVy+kNYk
普通に変数入れたらええやん
2020/10/05(月) 17:56:55.51ID:OgnTy5dE
コレクションじゃあかんの?
861858
垢版 |
2020/10/05(月) 18:34:00.09ID:gVc00iwv
最初[10]と宣言した後、[20]とかには・・・・変更できますか?
っと追加で質問してもいいですか?
2020/10/05(月) 18:37:48.75ID:nd84XqHd
>>861
普通の配列は固定長
可変長の配列が欲しいならList< T >
2020/10/05(月) 18:45:03.21ID:jLRpmu5w
Resize() があるけど、これは新しいarrayを作って中身をコピって置き換えるので
期待しているようなものとはちがうかもしれない
https://docs.microsoft.com/ja-jp/dotnet/api/system.array.resize?view=netframework-4.8
arrayは要素数が変わらないのが前提というか、そういう伝統なので
要素数が変わるのが分かっているのならコレクション系のものを使いましょう
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/concepts/collections
2020/10/05(月) 20:08:01.60ID:CqQ7ITSE
>>856
スマヌ…足を突っ込んだばかりで良く分からずに始めたもので…別スレ案件でしたか…
2020/10/05(月) 21:19:26.58ID:rQ89lJX/
>>858
static void Main(string[] args)
{
  const int defaultCount = 10;
  var count = defaultCount;

  for (int i = 0; i < args.Length - 1; i++)
  {
    var arg = args[i];
    if(arg == "-n" || arg == "/n")
      if (int.TryParse(args[i + 1], out count)) break;
  }

  var chars = new char[count];
  for (int i = 0; i < count; i++) chars[i] = (char)('A' + i);
  Console.WriteLine(new string(chars));
  Console.ReadKey();
}
2020/10/05(月) 22:04:35.42ID:ToydrsKO
質問です
イベントは、購読する側が寿命が短い場合自分で登録解除しないと開放されず、リークするのは分かるのですが、
イベントを発生させる側が寿命が短い場合はそのインスタンスをフィールドで持っておかないと
購読されていても途中で開放されてしまうのでしょうか
その場合、例えばコンストラクタでイベントを発生させるオブジェクトを受け取って購読するだけのような処理(以下)
public class Subscriber {
 public Subscriber(Publisher publisher) {
  publisher.ValueChanged += Publisher_ValueChanged;
 }
}
の場合、subscriberはpublisherを持っていないので、subscriberが生きている間にpublisherが開放されて購読も解除されるといったことは起こりますか?
これは設計が悪い?
2020/10/05(月) 22:23:53.32ID:rQ89lJX/
>>866
>subscriberはpublisherを持っていない
これが分かってるなら答えは自明でしょ
設計が悪いかどうかは何を実現したいか次第
でも普通は発行側の寿命を購読側に合わせたいことなんてあるのかなと思う。
2020/10/05(月) 22:36:15.65ID:ToydrsKO
>>867
ありがとうございます
UI(コントロール)のイベントを加工してロジックに伝えるアダプターのようなものを実現したいです
設計を見直してみます
2020/10/06(火) 22:21:36.32ID:0ZJ/y4Ey
パラメータをPOSTしてウェブサイトのHTMLソースを取得しています。
POSTするデータが普通の配列形式の方法は以前から知っているのですが、JSON形式でPOSTするサイトに出くわしました。
いろいろなウェブサイトを見てPOST自体はエラーせずにできるようになったようなのですが、レスポンスもJSON形式のデータしか取得できずに困っています。
欲しいのはウェブサイトのHTMLソースです。
どうしたらいいでしょうか?
2020/10/06(火) 22:21:52.52ID:0ZJ/y4Ey
   var jsonParameter = new JavaScriptSerializer().Serialize(new
   {
    hoge1 = new
    {
     hoge2 = new
     {
      fuga1 = "0",
      fuga2 = "1",
     },
     hoge3 = new
     {
      fuga3="3",
     }
    }
   });

   // リクエストの作成
   HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
   req.Method = "POST";
   req.ContentType = "application/json; charset=utf-8";
   req.Accept = "application/json, text/plain, */*";

   using (var streamWriter = new StreamWriter(req.GetRequestStream()))
   {
    streamWriter.Write(jsonParameter);
   }

   var httpResponse = (HttpWebResponse)req.GetResponse();
   using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
   {
    string result = streamReader.ReadToEnd();
   }
2020/10/06(火) 22:26:11.86ID:UOuIyfzj
にゅにゅにゅにゅにゅ〜
872デフォルトの名無しさん
垢版 |
2020/10/06(火) 22:26:56.84ID:3gNx1ZB7
過去ログ抜こうとしてるんかな
2020/10/07(水) 04:05:43.46ID:qlNjOdYh
curl, wget でも出来る。

Windows 10 なら、C:\Windows\System32\curl.exe
が入っている。
これは、PowerShell のcurl alias とは異なる

漏れは、VSCode の拡張機能、Rest Client を使ってる
2020/10/07(水) 20:04:46.52ID:mkQTgHeP
>>870
すいません解決しました。
875デフォルトの名無しさん
垢版 |
2020/10/08(木) 18:41:10.72ID:zyhORnZD
5.0始めたけど new()の出番めっちゃ多いな
varよりnew()優先にするのがいいのかな
2020/10/08(木) 20:54:36.31ID:toLcLUNb
Windows 10だけサポートしたいんですけど
.Netはどのバージョンからサポートしたらいいのでしょうか?
2020/10/08(木) 20:56:55.59ID:Whd9Wcyu
5
2020/10/08(木) 21:05:12.84ID:ihp2OLR0
>>876
https://docs.microsoft.com/ja-jp/dotnet/framework/get-started/system-requirements
OS と共にプレインストール済みの項目
2020/10/08(木) 21:22:37.99ID:+UAfPznY
二つの配列A,Bがあり、Bに入っていない要素がAにある場合の処理はどのようにすればいいでしょうか?
やりたい事は、テキストファイルから一行ずつBに読み込んで格納し、なんらかの結果の配列Aとの照らし合わせを行いたいのですが、なかなか上手くいかず…
2020/10/08(木) 21:27:38.87ID:Whd9Wcyu
linq
2020/10/08(木) 21:41:27.48ID:GTaO2d9W
差集合Except()が直感的かな
2020/10/08(木) 22:34:11.70ID:+UAfPznY
>>880
>>881
ありがとうございます!こちらを元に調べてみます!
883デフォルトの名無しさん
垢版 |
2020/10/09(金) 11:00:27.55ID:n+WfHqnB
C#で構築したORACLEを更新しているシステムがあるのですが、
入力時にタイムアウトするのを防ぐ、もしくは入力を促すような
仕組みを作るにはどうすればいいでしょうか。
2020/10/09(金) 11:12:40.23ID:YM8vGnnj
アバウトすぎやろw
885デフォルトの名無しさん
垢版 |
2020/10/09(金) 11:16:26.16ID:n+WfHqnB
一般的な対策はありますか?
ユーザーに処理を放置せず、すぐ完了させてくれとかいうしかないですか?
自分はプログラマーでもないので詳しくなてすみません。
2020/10/09(金) 11:22:21.55ID:zClV+H3L
入力時にタイムアウト、ってなんでそうなるの?
入力を促されていることにユーザーが気がつかないのか、ユーザーがいい加減でほっとく人が多いのか。

前者なら、
・画面以外でユーザーに入力を促す仕組みを作る
 - 決まった音を鳴らしてみる
 - メール等で通知してみる
・ユーザーの入力が遅いのであれば、入力を保存してタイムアウト後に画面を開く?などした際にも前回の入力値を復元してあげて二度手間を減らしてあげる

後者なら、
・教育する

などがあるんじゃないかと思うんだけど、エスパーはたいてい外れるので、もうちょっと状況を整理してから聞いてみるのがいいんじゃないかと。
887デフォルトの名無しさん
垢版 |
2020/10/09(金) 11:32:30.15ID:n+WfHqnB
ありがとうございます。
>ユーザーの入力が遅いのであれば、入力を保存して
ローカル環境に入力途中のデータを保存するようにしてもらうという意味でしょうか
2020/10/09(金) 12:03:32.51ID:YM8vGnnj
C#関係あんの?
2020/10/09(金) 12:14:10.80ID:vMOSOHWg
バックグラウンドで定期的に無意味なselectクエリを発行すればいいよ
890デフォルトの名無しさん
垢版 |
2020/10/09(金) 12:19:00.25ID:a2KfB7NN
ヘルメット開発しろ

早く入力しないと高圧電流が流れる仕組みだ
2020/10/09(金) 13:26:43.53ID:IpDZ9RMp
設計・実装と運用が根本的にかみ合ってない予感
2020/10/09(金) 13:53:03.37ID:V1E2IEC6
- 照明を落として赤いパトランプ点灯

- SF映画で自爆装置が作動した時みたいな警報音を鳴らす

- 当然プシューという音とともにスモークを噴出させることも忘れずに
2020/10/09(金) 14:26:50.22ID:8xBy2vBw
そもそも何がタイムアウトしてるんだ?
真面目な話はそれからだ

まあ、設計が悪いと思うけど
2020/10/09(金) 14:42:02.91ID:6ktS8zpy
コネクション開きっぱなしでユーザーにフォーム入力求めてると予想。
895デフォルトの名無しさん
垢版 |
2020/10/09(金) 16:22:27.55ID:n+WfHqnB
>> 894
それっぽい場合はどのように処理をすればいいのでしょうか
2020/10/09(金) 16:32:01.61ID:nKkCxIzL
>>895
>>889
897デフォルトの名無しさん
垢版 |
2020/10/09(金) 16:32:12.90ID:n+WfHqnB
1.My.settingというものに書き込んでおけば呼び出すことが出来る
2.テーブルからデータをSELECTして画面に表示したら、Oracleとの接続を切って
画面の更新ボタンを押す際にOracleと接続すれば、タイムアウトすることはない

1.2.のような理解で正しいでしょうか。
898デフォルトの名無しさん
垢版 |
2020/10/09(金) 16:32:12.93ID:n+WfHqnB
1.My.settingというものに書き込んでおけば呼び出すことが出来る
2.テーブルからデータをSELECTして画面に表示したら、Oracleとの接続を切って
画面の更新ボタンを押す際にOracleと接続すれば、タイムアウトすることはない

1.2.のような理解で正しいでしょうか。
2020/10/09(金) 16:48:55.28ID:mOpqVRBo
何のタイムアウトか分からない
何でタイムアウトしてるのか分からない

この状態でどうすればいいか話しても無駄なので
まず上の2つを明らかにしないと
2020/10/09(金) 17:15:05.54ID:8xBy2vBw
>>897
1.はとりあえず関係ない
2.は改善する可能性はある

Oracleとの接続ってコネクション開いてるだけでもタイムアウトするのか?
タイムアウトしたといってる状況とエラーメッセージとか晒せ
2020/10/09(金) 17:20:48.89ID:IpDZ9RMp
そもそも、なんで「プログラマーじゃない」って言っている ID:n+WfHqnB が改善案を求めているのかが謎
2020/10/09(金) 19:01:42.52ID:IN0CEnyU
職業的なプログラマーじゃないけどちょっとは齧ってるからやらされてるって感じじゃなのかね
903デフォルトの名無しさん
垢版 |
2020/10/09(金) 19:28:05.97ID:phKb1ah1
データベースついでに教えて欲しいんだけどさ
内蔵のSQLiteって、あれって本家のSQLiteみたいにWALを吐かせることってできないの?
2020/10/09(金) 20:24:45.78ID:6ktS8zpy
内蔵って何の?
905デフォルトの名無しさん
垢版 |
2020/10/09(金) 21:27:28.10ID:a2KfB7NN
「なんか舐められてるからここらで一発英語連発しとくか」
2020/10/09(金) 23:27:36.61ID:760t1BpC
データベースとの接続を、したり切ったりするようなものは、見たことない。
普通、ずっと接続してる

テストでは接続を切って、始めからやり直すけど

本番環境で接続処理をやり直していたら、遅くて話にならない。
ユーザー認証とか、接続の初期化処理から始めるわけだから
2020/10/09(金) 23:58:26.95ID:mOpqVRBo
普通はコネクションプール使うから
2020/10/10(土) 00:44:06.58ID:79v4aWeJ
>>907
それをやってないアプリケーションの可能性が高いよね
2020/10/10(土) 01:45:08.02ID:0SjnNOm9
普通そこら辺アーケードゲームみたいに
カードをピッで暗所番号入力とか
銀行ATMとかもさ、入力遅かったら
カウントダウンで自動ログオフするんじゃないの?
2020/10/10(土) 02:21:11.62ID:79v4aWeJ
どんな普通か知らんけど、
MySQLにアクセスしてテーブルの中身を表示して変更するアプリを自作したときのことを、いろいろ思い出した。
データベースのユーザーidとパスワードがあるわけだけど、それはアプリのセッティングに保存できるけど
毎回アプリ起動時に入力する。
データベースにconnectして、ユーザー操作を待つ。selectやupdateが必要になったとき、そのsql文を実行する。
connectionがある間は何度でも繰り返すことができる。
アプリ終了時にはconnectionをcloseする。
何だけど、これだとconnectionが使われない時間が長くなると、接続が切れる。タイムアウトするというやつ。
なのでバックグラウンドでconnectionを維持する(もしタイムアウトしたら、次に必要な時に自動でopenするとか、タイムアウトしないように、ダミーで何かする)ライブラリ機能が大抵はある。
これをコネクションプールと言う。
件のアプリは、そのあたりに問題を抱えているのではないか。
最初からコネクションプールがうまく使えていないのか、データベースかライブラリのバージョンアップでタイムアウトの設定が変わったのか
2020/10/10(土) 03:04:53.98ID:PieQlTcj
コネクションプーリングはタイムアウト対策じゃねえよ
2020/10/10(土) 03:08:30.31ID:PieQlTcj
オープンしただけのアイドル状態のコネクションがタイムアウトするならプーリング関係ない
プールに戻さないでタイムアウトするんだからな

まず何がタイムアウトしてるのかはっきりさせんと話にならん
まあどうせトランザクション開始してからユーザ入力待ってるんだろうけど
2020/10/10(土) 03:34:35.36ID:BjcbKuib
コネクションプールは、大量のアクセスに対して、事前に起動しておくもの

それで接続が速くなる
2020/10/10(土) 09:37:17.23ID:zxwCdOcf
普通のWebアプリはリクエスト/レスポンスのたびに毎回コネクションopen/closeしてる

タイムアウトの件とは関係ないがコネクションプーリングは
DBサーバーを使う場合の基本なのでちゃんと押さえておいたほうがいいyo
2020/10/10(土) 10:02:07.30ID:OrgjdyW8
いや、マジでいつまでスレチ続けんの
2020/10/10(土) 12:55:36.90ID:bjtm+bd1
話題もプールされているんだ
917デフォルトの名無しさん
垢版 |
2020/10/10(土) 16:50:19.84ID:i5KfYhU+
>>906
2020/10/11(日) 11:18:45.56ID:nehM9hsi
try~catch~finallyで質問です。
finallyを使うケース教えて下さい。
2020/10/11(日) 11:27:57.38ID:ErUdhCxH
プログラム板のスレッドの中で記述されていて
catchブロックの中でreturn文などにより処理が
スレッドの呼び出し元へ戻ってしまう場合には
try文の次に記述されたレスは実行されません。
finallyブロックを使った場合はcatchブロックの中でreturn文などが実行された場合でも必ず実行されます。
(ただしSystem.exit(0)によってプログラムが終了した場合を除きます)。
2020/10/11(日) 11:53:49.08ID:mzj9OHDg
finallyを使った記憶がないな
IDisposableを正しく実装してusingするのがC#流
2020/10/11(日) 11:56:36.28ID:2hFwVXKf
>>920
歪んだ初心者だな
2020/10/11(日) 16:21:37.29ID:SD6h9HSf
async/awaitで排他制御やる時にSemaphoreを使うけど、開放する時にfinally使うのが一般的
2020/10/12(月) 01:01:50.89ID:S+m0Jln7
必要だから実装されているのでは
924デフォルトの名無しさん
垢版 |
2020/10/12(月) 09:32:25.45ID:941JO02h
>>920 は間違ってはいないだろ
偏ってるかも知れないが

using は構文糖衣
925デフォルトの名無しさん
垢版 |
2020/10/12(月) 16:12:50.06ID:2Z4zotkW
usingっていまいち分かってないんだけど、例外が起きたときにも破棄されるの?
2020/10/12(月) 16:26:28.81ID:sR+xz/oc
されるよ、むしろそのため
2020/10/12(月) 18:48:18.31ID:8cHhoAHg
using変数宣言とref structで無駄なヒープ確保をせずにDisposeを呼べるようになったのは良いね
ネイティブ周りで重宝する
928デフォルトの名無しさん
垢版 |
2020/10/13(火) 16:23:58.19ID:401SSeVR
ASP.Net Coreで使用しているデータベースを、他の種類のデータベースに移行する手段があれば教えてください
具体的には、SQLServer Expressから月500円の激安マネージドMariaDBに乗り換えたいんです
2020/10/13(火) 16:48:03.80ID:mavYzj73
あるよ。
930デフォルトの名無しさん
垢版 |
2020/10/13(火) 16:50:21.93ID:XwYEVn5U
>>928
やれるかどうかじゃない
やるかどうかだ
931デフォルトの名無しさん
垢版 |
2020/10/13(火) 17:00:55.89ID:cMrfgH2T
月500円の激安マネージドMariaDBに問い合わせろ
932デフォルトの名無しさん
垢版 |
2020/10/13(火) 17:16:14.21ID:401SSeVR
MariaDBで動かして見て、どんな感じのテーブルが作られるか自分で確認して、手動で移行するしかないのかな?
933デフォルトの名無しさん
垢版 |
2020/10/13(火) 17:33:50.55ID:qH5Vi/SO
こんな質問するような馬鹿には無理では?
2020/10/13(火) 17:45:52.97ID:/Rq/oe7M
EFとか使ってれば差異はある程度吸収してくれるけど、
生SQLベッタベタに書いてたら厳しいだろうな
2020/10/13(火) 19:34:28.59ID:RxzDulGv
SQLiteでええやん
936デフォルトの名無しさん
垢版 |
2020/10/13(火) 19:57:12.80ID:qH5Vi/SO
↑追加の馬鹿が来た
937デフォルトの名無しさん
垢版 |
2020/10/13(火) 22:03:08.89ID:401SSeVR
まあ無理そうだけど、どうやるんかな
なんか手段が用意されてないんだったら難しいわ
938デフォルトの名無しさん
垢版 |
2020/10/14(水) 00:03:56.10ID:uO7Ua6+h
あまりに頭が悪そうでコメントすると泥沼化しそう
こんなの雇ってるクソ会社あるのか
2020/10/14(水) 00:08:35.62ID:NlzTC5au
頭悪い奴「頭が悪そう」
940デフォルトの名無しさん
垢版 |
2020/10/14(水) 00:48:34.18ID:BYmezqa4
結論はこれ
「馬鹿には無理」
2020/10/14(水) 01:51:56.07ID:ZvC0XGAE
そのソフトはデータベースを変更できるように作られているのだろうか
多分なってないのでソースコードレベルで変更が必要なのではないだろうか
2020/10/14(水) 05:50:47.73ID:z5Uy/Vd3
Ruby on Rails では、sqlite, postgresql, mysql の3大DB を、
単一のRuby ファイルで定義できる

それを実行したら、各DB の型に合わせて、表が作られる。
表の型などを抽象化してる
2020/10/14(水) 07:38:24.52ID:MAVLXRyI
それだと最大公約数になるからDBのポテンシャルを発揮できない
2020/10/14(水) 07:42:41.11ID:ntkkf+xd
なんで突然ruby?
945942
垢版 |
2020/10/14(水) 08:08:27.41ID:z5Uy/Vd3
その代わり、個別のDB の特別な機能を使うと、可搬性が無くなる

どちらを選ぶか、難しい
2020/10/14(水) 15:55:52.84ID:/YzYSvC9
>>944
別言語だけど Railsでは、そういう実装になってて
C#でも同様の実装になっていればデータベースを替えるのも簡単

という話だとおもうけど、そのアプリがMS SQL ServerとMariaDBと
どっちでも動作するようになっているのなら、インストールし直せば
OKなんじゃないかな
2020/10/14(水) 16:06:12.99ID:xu8Uupog
このruby荒らしは実際に使ったこともないただの頭の悪い人とバレたな
2020/10/14(水) 16:56:46.74ID:PQeg+6lO
>>946
インストールし直せばってなんじゃい

ORM使ってDBMSに依存したSQLを書いてなければ
設定変更でアプリの修正は終わるって話
それはRails(ActiveRecord)でもEF Coreでも同じ

データ移行は別途必要
2020/10/14(水) 18:54:47.87ID:MAVLXRyI
将来的にやるかどうかもわからないRDB移行を楽にするためのものというよりは
システム管理者がバックエンドのストレージを選べるメリットのほうが価値としては大きい
2020/10/15(木) 00:54:01.16ID:VyNwlTHB
ああ、あのrubyの変な人だったのか
2020/10/15(木) 19:28:50.37ID:WZPJX9UA
NGワード:uby
2020/10/15(木) 21:16:23.76ID:j3TfrCLP
ぅゅ……
953デフォルトの名無しさん
垢版 |
2020/10/16(金) 02:23:53.26ID:kSQNYYOM
using System;

namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
int[,] ma = new int[,] { { 1, 2, 3 }, { 4, 5, 6 } };
int[,] mb = new int[,] { { 6, 3, 4 }, { 5, 1, 2 } };
int[,] mc = new int[2, 3];

for (int i = 0; i < 2; i++)
{
for (int j = 0; i < 3; j++)
mc[i, j] = ma[i, j] + mb[i, j];
}
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
Console.Write(string.Format("{000}", mc[i, j]));
}
}
}
}
System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'
というエラーが起きます
配列のレンジをはみ出してはいないと思うのですが、どう直したらいいんでしょうか
2020/10/16(金) 02:39:52.51ID:YCT/0knJ
2番目のforの条件式がjじゃなくてiになってるよ
2020/10/16(金) 02:44:43.74ID:SmZ3YqvD
添字はこの手の問題が頻発するからなあ
2020/10/16(金) 02:45:43.56ID:SmZ3YqvD
C#なんだから型使えばいいのに
957953
垢版 |
2020/10/16(金) 02:52:28.99ID:kSQNYYOM
ありがとうございました..
全然気づかなかったです
勉強法がわからないんで手持ちのC言語の参考書の例題をC#で一つづつ書き直してるところです
958デフォルトの名無しさん
垢版 |
2020/10/16(金) 03:04:54.86ID:mkv3kCzf
>>953
iとjの間違いじゃ?
×for (int j = 0; i < 3; j++)
○for (int j = 0; j < 3; j++)
やりたい事と合ってるかどうか知らんが
Console.Write(string.Format("{000}", mc[i, j]));

757968で、エラーなしで出力されます。
2020/10/16(金) 03:10:59.01ID:mkv3kCzf
実行確認してたら亀レスだったorz
CとC#は別物では?新しく買い直した方が良いのでは?
2020/10/16(金) 03:15:48.03ID:rCAM8r34
>>953
linqなら1ステップで行けそうだな。
ビバLINQ
2020/10/16(金) 03:17:33.49ID:I/ihOPsA
>>957
vs使ってないの?エラーの箇所すぐわかるじゃん
2020/10/16(金) 03:21:23.72ID:kSQNYYOM
新・標準プログラマーズライブラリ なるほどなっとく C#入門
この本注文したんですがプライムデーで混んでるのか全然届かなくて。

年内にある程度使えるようになりたい
2020/10/16(金) 03:22:18.38ID:kSQNYYOM
>>961
今回エラーが出なかったんですよ
実行中に例外で止まるんですが止まる行が
mc[i, j] = ma[i, j] + mb[i, j];
の行でした
2020/10/17(土) 19:12:24.84ID:PP8bTAlg
馬鹿には無理な例だな
2020/10/17(土) 21:07:09.85ID:9iD8hqCl
>>964
馬鹿じゃないお前はRuby使ってろ
馬鹿
2020/10/17(土) 23:10:24.08ID:hr8QrpsO
>>965
ID:kSQNYYOMの馬鹿さ加減がわからない馬鹿
2020/10/17(土) 23:47:43.36ID:5+/OiZrO
>>962
本を読むよりDOBON.NETを読んだりしながら適当なツール自分で作った方が上達は早いぞ
そして掲示板で聞く前にVSのデバッガを使いこなしたり自分で何でもググって調べる癖をつけるようにした方がいい
ネットで質問するのはググって5分で見つかることを回答してもらうまでずっと待つということだから効率が悪すぎる
2020/10/18(日) 00:21:45.35ID:Oa0gZ2cf
俺は本「も」読むのがいいと思う
ネットの情報でつまみ食いばかりしてると
流れが身につかなくて何も作れないままってなる鈍臭いやつもいるから

そうでない才気あふれる人間なら何やっててもすごくなるけど
2020/10/18(日) 04:34:48.20ID:l893GX8C
ネットの情報は新旧入り乱れてるからことが多いから前提となる知識のない初心者は混乱しがち
2020/10/18(日) 09:19:26.79ID:DMDt9rkO
>>962
注文した後に言うのもアレだが、C#は各言語の中で最も日本語WEBサイトが充実してるから本は不要なんだけどな
上でも言われてるDOBON.NETやufcpp.netの2サイトだけで上級者レベルまで学べる
2020/10/18(日) 10:46:36.68ID:NS/00dNr
そうかなあ
今時はC#も主流はWeb開発なわけだけど、ASP.NET Coreを学べる日本語のサイトなんてMS公式以外にはほとんど無いぞ
2020/10/18(日) 10:49:21.41ID:S5nNaIhQ
今の.NET界隈はMSが米で主流な内製開発の軽いノリに迎合しすぎて、もはやジャップSIには全く適さない代物になってしまってる
2020/10/18(日) 10:52:34.27ID:+vZczgoX
今はどの言語もまず最初に公式チュートリアルから始めて
その後に本で理解を深めていくのが良いと思う
https://docs.microsoft.com/ja-jp/dotnet/csharp/tutorials/
https://docs.microsoft.com/ja-jp/learn/browse/?terms=C%23&;resource_type=learning%20path

>>971
言語を学ぶこととフレームワークを学ぶことは分けて考えないと
2020/10/18(日) 11:17:16.00ID:JEwJ8IKM
そもそもmsのドキュメントの機械翻訳のレベルが低すぎるっていう
975デフォルトの名無しさん
垢版 |
2020/10/18(日) 11:41:29.97ID:H1xH1BRx
ほんそれ
2020/10/18(日) 11:42:23.08ID:FUmO+ya0
最近特に酷いな😅
2020/10/18(日) 11:57:14.63ID:hLOQkzaY
WOWを「わお」とか訳してくれたことに比べれば
2020/10/18(日) 12:53:53.68ID:Lw+GI6g9
昔と違って今は何でもかんでも日本語訳される時代じゃないからね
英語で読めない人は取り残されるだけ
2020/10/18(日) 17:12:04.66ID:GgXa8sFd
>>978
「昔と違って今は何でもかんでも日本語訳される時代じゃない」
まるで昔は何でも日本語訳されていたかのような
2020/10/18(日) 17:16:12.19ID:FUmO+ya0
スキあればマウンティング。
オートマウンティングデーモンか
981デフォルトの名無しさん
垢版 |
2020/10/18(日) 18:46:10.75ID:bt0xe+ws
switch文も式になるけど、何でもかんでも式になる方がいいことなのか?
2020/10/18(日) 19:31:06.35ID:S5nNaIhQ
いいかどうかはともかく流行りではある
ついていけないなら引退するしかない
2020/10/18(日) 19:48:17.38ID:pSLLNISm
switchって縦にコードが長くなるしね。。
2020/10/18(日) 19:49:30.22ID:6x+7Jy+N
昔のVBVCは単語でF1押せばとりあえず日本語ヘルプが出てきた
ここでも国力の低下を実感するよね
2020/10/18(日) 21:12:02.46ID:L/8uXyJY
>>981
副作用のないコードを書くのが少しでも楽になるならいいことだ
2020/10/18(日) 21:16:43.91ID:o5mWc93K
人手で翻訳したバージョンが提供されたのは確かVS2010の時代が最後じゃなかったかな。
どっちにしろ別に最近の話じゃないね。

日本の国力というよりMSの経営方針が変わったんだろうね。
知らんけどたぶんバルマーさんの発言力がその頃弱くなったんじゃないか

いわゆる"as is"でいいから手動翻訳された古いバージョンも読めるようにしておいてくれればいいのにね。
別に英語でも読めるけど日本語の方がやっぱり早く読めるし斜め読みもしやすいよね
2020/10/18(日) 21:21:16.65ID:FUmO+ya0
WIN32APIのHELPはVS2までだっけな
2020/10/19(月) 00:11:08.07ID:QQYfduDC
>>983
if分みたいにcase毎にアウトラインを畳めればなあ(visual studio)
2020/10/19(月) 05:42:05.38ID:bpzVn112
英語で表示してgoogle 翻訳使ってる
2020/10/19(月) 08:43:46.79ID:ULPDe33D
>>978
昔と違って翻訳精度上がってるからね
Chrome右クリして翻訳ポチれば良いだけ
2020/10/19(月) 12:33:54.30ID:9I8x18Tz
>>990
おいおいマジで言ってるのかw
フレーム問題とか知らないのかな
2020/10/19(月) 12:51:57.31ID:qGPDmfjh
ハァ?
993デフォルトの名無しさん
垢版 |
2020/10/19(月) 13:55:26.03ID:asy7wTux
サイトに訪問した人が翻訳結果が可笑しいと思ったら
その場で治せる仕組みが一時期あったやろ?
あれでかえってめちゃくちゃになってたところもあるんやで
2020/10/19(月) 14:17:56.99ID:9I8x18Tz
コミュニティー何とかって奴ね
わんくまの人たちとか結構頑張ってたね
あれはWikipediaみたいに直接編集できるんじゃなくてコメントを書けるだけじゃなかったかな
995デフォルトの名無しさん
垢版 |
2020/10/19(月) 14:19:57.00ID:asy7wTux
日本語と英語が交互に表示されてるのに
コメント欄が英語の上にかぶさって
肝心な英語が読めない機能付きで
うざかった希ガス
996デフォルトの名無しさん
垢版 |
2020/10/19(月) 15:00:55.55ID:g0sfGRb8
英語読めるようになったほうがいい
それですべて解決する
2020/10/19(月) 17:18:53.83ID:QQYfduDC
マイクソが無料でエンジニア用英語読解講習コースを開けば解決
2020/10/20(火) 00:31:21.67ID:p0Iib1Gp
\  __  /
_ (m) _  ピコーン
   |ミ|
/ `´  \  言語解説に特化した言語を開発すれば・・・・!
  ( ゚∀゚)
 ノヽノ |
  < <
999デフォルトの名無しさん
垢版 |
2020/10/20(火) 10:11:38.08ID:pHiz9StD
emacs/elisp は特化し過ぎて成功した例
2020/10/20(火) 10:13:59.79ID:Nlf6zVNG
1000なら>>1-999がコロナに感染して死ぬ
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 674日 23時間 27分 52秒
10021002
垢版 |
Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


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

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

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

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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