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

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
0005デフォルトの名無しさん
垢版 |
2019/03/07(木) 18:11:07.25ID:/Jh0neEY
ピクチャーボックスにallowdropはありましたか?
フォームのプロパティからはみつかりません。

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

ドラッグの許可ですが、これだけではドラッグできないです
メッセージのイベントが発生しないのですが、どこがわるいのでしょうか?
ドラッグエンターというのは領域内にドラッグされたら発生するイベントかと思います
0010デフォルトの名無しさん
垢版 |
2019/03/08(金) 17:25:49.29ID:KslHfI7m
>>9
AllowDrop = true;はthis.AllowDrop = true;と同じ。つまりフォームのAllowDrop = true;の設定
それ以前にpictureBoxのドロップイベントでpictureBox.AllowDrop = trueにしようとしているみたいだけど無意味
コントロールの設定はどこでやるべきかわからない?もう少し考えてから質問するようにしないと
0011デフォルトの名無しさん
垢版 |
2019/03/08(金) 17:25:58.73ID:dOPZ4GNG
どうやらピクチャーボックスの許可の問題のようです
panelなら問題なくメッセージが出ます
そちらについて調べてみます
0012デフォルトの名無しさん
垢版 |
2019/03/08(金) 17:27:22.36ID:dOPZ4GNG
>>10
pictureboxはドロップを許可できないということですか?
0014デフォルトの名無しさん
垢版 |
2019/03/08(金) 17:43:07.32ID:dOPZ4GNG
はい
0015デフォルトの名無しさん
垢版 |
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];
}
0016デフォルトの名無しさん
垢版 |
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;
}
0017デフォルトの名無しさん
垢版 |
2019/03/08(金) 21:13:48.36ID:unDD4xx5
>>15を書いてて疑問に思ったんだが、ListBoxってマウスがキャプチャーされないのか?
ListBoxのクライアント領域の外でマウスのボタンを離してもMouseUpが発生しないけど何なのこれ。
変だよね?
0018デフォルトの名無しさん
垢版 |
2019/03/08(金) 21:45:39.00ID:S6VEx3Fw
>>5
答えそのものをあげる
https://ideone.com/p9Hui9
Windowsフォームアプリケーションを作る
ソリューションエクスプローラーからForm1.csとProgram.csを削除する
ソリューションエクスプローラーのプロジェクトで追加->既存の項目でダウンロードしたcsファイルを追加する
ビルドして完成
左のボックスにはエクスプローラーから画像をドロップできる
右のボックスは左のボックスからドロップできる
0019デフォルトの名無しさん
垢版 |
2019/03/09(土) 01:21:53.28ID:RHbC4qfa
>>15
ごめんこれ思いっきり変なことやってるわ。

DoDragDropはMouseDownで一度だけ呼べばいい。
フィールド(mDataToDrop)なんか作る必要なかった。
0021デフォルトの名無しさん
垢版 |
2019/03/09(土) 01:56:17.70ID:N1XPQc7R
1+1は2になるのに1×1はなんで1なんですか違いがわかりません、みたいな質問だ
0022デフォルトの名無しさん
垢版 |
2019/03/09(土) 02:36:17.53ID:FZa5GqcE
>>20
Console.ReadLine()はコンソールから文字列を取得(入力)
int.Parse()/double.Parse()は文字列をint型/double型に変換する
0024デフォルトの名無しさん
垢版 |
2019/03/10(日) 05:02:53.58ID:enIE2ATr
form1.csというファイル自体はクラスとは言わないのでしょうか?
0026デフォルトの名無しさん
垢版 |
2019/03/10(日) 08:48:37.14ID:enIE2ATr
↑ありがとぅございます
0027デフォルトの名無しさん
垢版 |
2019/03/10(日) 08:49:07.21ID:enIE2ATr
ドラッグイベントについてなんですが、やり方としてはマウスの位置にコントロールを移動させると考えて良いでしょうか?
0028デフォルトの名無しさん
垢版 |
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イベントでコントロールに対する「ドラッグドロップを受ける」動作になっている
0029デフォルトの名無しさん
垢版 |
2019/03/10(日) 12:28:17.59ID:Gkjt178x
.Net Frameworkの標準クラスライブラリにある全インターフェースの機能見たいんだけど
MSDNしかない?
0030デフォルトの名無しさん
垢版 |
2019/03/10(日) 12:30:03.47ID:Gkjt178x
IEnumerable<T>
ICollection<T>
IList<T>

これって分けてる意味あるの?全部IListでよくない?
0031デフォルトの名無しさん
垢版 |
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);
}
0032デフォルトの名無しさん
垢版 |
2019/03/10(日) 12:41:31.02ID:/0JR1y5c
LINQみたいな(値の集合ではなく)シーケンスとして扱うライブラリも存在できなくなるね
0033デフォルトの名無しさん
垢版 |
2019/03/10(日) 12:44:15.26ID:w/W9tZbl
使う側からしても大は小を兼ねるは無い。
いざメソッドを使ってみたら、NotSupportedException例外が飛んでくるとか嫌でしょ。
0035デフォルトの名無しさん
垢版 |
2019/03/10(日) 12:55:34.57ID:Gkjt178x
機能の意義の話か
列挙して読み取りするだけの機能なのに
AddやRemove機能ついてるのもおかしいよねって話か
0036デフォルトの名無しさん
垢版 |
2019/03/10(日) 13:39:12.23ID:Bl+LQorv
IEnumerable 読み取り専用、前方走査可能
ICollection 読み書き可能、集合全般(順序有り集合、順序無し集合など集合のスーパーセット)
IList 読み書き可能、順序有り集合、ランダムアクセス可能(実装上ランダムアクセスを装っているだけのものもあるが)

それぞれ特性が全く異なるので使い分けが必要です
0037デフォルトの名無しさん
垢版 |
2019/03/10(日) 15:23:21.02ID:edisDenU
そういや、インターフェイスの使い方が全く身につかん
DI等でインターフェイスを使うことが強制される場面を除いては使ったこともない・・・・
どうすればまともなコードを書けるように練習できるん?
0040デフォルトの名無しさん
垢版 |
2019/03/10(日) 18:13:18.92ID:edisDenU
>>38-39
ありがとう
SOLIDの原則を大雑把に見てきたんで、守れるように努力するよ
0041デフォルトの名無しさん
垢版 |
2019/03/10(日) 18:57:05.34ID:km5dayCM
異なるクラスなんだけど、List〈インターフェース〉とかにして、foreach回したり出来るのがうれしいってことでおけ?
0044デフォルトの名無しさん
垢版 |
2019/03/11(月) 18:06:04.14ID:5tiLwPRT
IEの自動操縦には大分慣れてきました。
そこで今回、

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

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

Chrome, Edge のどちらでも動く
0051デフォルトの名無しさん
垢版 |
2019/03/12(火) 21:04:22.37ID:t9nw0tv2
pythonとかのコードコピーしてもエラーになるからな。
若干メソッドが違う。その辺の勘所あれば大丈夫。
0052デフォルトの名無しさん
垢版 |
2019/03/13(水) 10:40:43.08ID:aEeMgLuC
>>50
ほんまやね。

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

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

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


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

自動ログインをして手間を省きたいのです。
0057デフォルトの名無しさん
垢版 |
2019/03/13(水) 15:29:39.84ID:J7uH1zio
まぁそういう自動ログインを防ぐための仕組みだしなぁ
googleと勝負するかそのサービス提供者にrecaptcha外してもらうかくらいじゃない?
0058デフォルトの名無しさん
垢版 |
2019/03/13(水) 18:14:15.39ID:aEeMgLuC
>>56 >>57

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

C# + Windows APIで
TABキーを送ってチェックボックスのクリックって
どうかけばいいですかね?
0059デフォルトの名無しさん
垢版 |
2019/03/13(水) 18:40:07.18ID:J7uH1zio
>>58
キーが送れるなら普通はspaceでチェックボックスonできるけどrecaptchaを突破できるかはしらん
0060デフォルトの名無しさん
垢版 |
2019/03/13(水) 18:59:57.06ID:aEeMgLuC
>>59
サンクス
TAB+spaceキーのsendで試してみます。
自動ログインするとだいぶん手間がはぶける
0061デフォルトの名無しさん
垢版 |
2019/03/13(水) 23:11:05.05ID:K5xsHdh9
自動ログインしてるとロボット判定くらって
パズルやる羽目になるんじゃないかな。
0063デフォルトの名無しさん
垢版 |
2019/03/14(木) 17:17:00.07ID:SO0caDlp
Navigate と Navigate2の違いは何ですか?
サイトによって前者だったり後者だったりします。
0067デフォルトの名無しさん
垢版 |
2019/03/15(金) 15:32:11.15ID:4iy7KMFj
「実戦で役立つ C#プログラミングのイディオム/定石&パターン」っていう本が気になるんですが、これってSOLIDの原則みたいなものが解説されてる本なんですか?
https://www.amazon.co.jp/dp/4774187585
本の題名から、デザインパターンの本っぽく見えるものの、見方を変えればただの逆引き系テクニック本っぽくも見えて判別が付きません・・・・
持ってる人いたら教えて!
0068デフォルトの名無しさん
垢版 |
2019/03/15(金) 15:42:07.07ID:SEjqglYP
ときどき話題になるけど
初心者用
プログラマーなら大半が無駄
0069デフォルトの名無しさん
垢版 |
2019/03/15(金) 17:53:39.10ID:FRygED1T
>>67
Microsoftが出してる参考書がいい勉強になると思う
タイトルは忘れたけど黒い表紙のやつ
0070デフォルトの名無しさん
垢版 |
2019/03/15(金) 18:57:25.93ID:4iy7KMFj
これかあ・・・なんと540ページ・・・・やっぱりこれ級の本が必要なの?
https://www.amazon.co.jp/dp/4822253546
本当はレジュメ10枚とかそんな簡単なのが欲しいんだけどそういう傾向のはないのかな
0071デフォルトの名無しさん
垢版 |
2019/03/15(金) 20:16:15.98ID:c5iTEfMf
「自分用に要約したまとめが欲しい」ってC#の自由度だと無理
ネットで公開されているオープンソースのもの読んで勉強したら本買うことも無い
0073デフォルトの名無しさん
垢版 |
2019/03/16(土) 11:34:56.31ID:DBWOZzSE
今更の質問ですが
ブラウザの自動操縦はC#で行ってました。

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

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


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

何かもっとスマートなやり方をご存知の方はいませんか?
0078デフォルトの名無しさん
垢版 |
2019/03/18(月) 17:44:06.83ID:pLo5oLE9
C#で作っていたらアクチだろうが何だろうがILSPYあたりで逆アセンブルされるから無駄
アクチ部分抜いてビルドしなおせば終わる
0080デフォルトの名無しさん
垢版 |
2019/03/19(火) 22:47:35.46ID:lhNrB1l4
>>78
うーん、、、やっぱりそうかー
そもそもそーいう事できる人間は
ソフト自体を自分で作れるから
いちいちやるかな〜というパラドックス

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

そんなのあったんだ。

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

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

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


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

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

以前使ってたTIの開発ツールはこんな感じだったよ
0093デフォルトの名無しさん
垢版 |
2019/03/20(水) 14:43:00.12ID:4fAbiRjS
>>91
なるほど!そーいう手もありますね!
ツール自体はネットがつながっている事前提なので
そこはユーザにとってもサーバにしても心配していません。

>>92
IP偽装も簡単にされてしまうので
確かにあまり意味をなさないですね。
0095デフォルトの名無しさん
垢版 |
2019/03/20(水) 14:58:40.20ID:/jX7WF9n
不正対策のために正規利用者が不利益を被ることは極力避けるべき
大抵が開発者の自己満足
ちょっとした手順が必要になるだけでも使い勝手は極端に下がる
ましてや誤って不正利用認定なんかされた日にはもう2度と関わりたくないと思う
さらにwebサーバーの常時保守と認証周りでのトラブルのカスタマーサポートとかまで考えたら本当に必要な工数なのかも疑わしい
そこまでする必要があるレベルのプロダクトならいちいちこんなところで質問なんて投げないだろうしね
0097デフォルトの名無しさん
垢版 |
2019/03/20(水) 17:10:46.92ID:/jX7WF9n
鯖への攻撃まで考慮しなきゃいけないくらいでかいソフトなの?
どんだけ高価なもん作ってるのか知らんけどパス付きzip程度じゃあかんの?
0098デフォルトの名無しさん
垢版 |
2019/03/20(水) 17:17:15.36ID:4fAbiRjS
>>97
世の中には悪い奴がいてWEBサーバ攻撃してくるヤツもいるんですよ
zipだと解凍してコピーして横流しされそう。
まぁ、ごく一部でしょうけどね。
0101デフォルトの名無しさん
垢版 |
2019/03/20(水) 17:33:20.02ID:ZZcTomnN
>>98
インストール時にだけWeb経由で認証して、認証データはローカルで暗号化して格納しとけば良い。
認証データの暗号化はProtectedDataクラスを使うのが簡単かつ安全。
0102デフォルトの名無しさん
垢版 |
2019/03/20(水) 17:34:45.92ID:lRuTUQCz
自分の作ったソフト売りたいって話なら言語は関係ない
パッケージソフトなら不正コピーの心配必要だけどユーザー登録型のライセンス販売なら普通はサポート見込んで買うからそんな心配するのがおかしい
0104デフォルトの名無しさん
垢版 |
2019/03/20(水) 18:31:09.68ID:/jX7WF9n
悪いやつがいるかいないかなんて話してないんだけど伝わらんな
悪いやつに対処するコストと悪いことされたときの被害額が見合うかって話だ
実被害なんてほぼ出ないのに無駄に開発コストかける意味は?
売れて実被害が出てから対策したって十分だよ
0106デフォルトの名無しさん
垢版 |
2019/03/20(水) 18:45:55.97ID:/jX7WF9n
初心者用で質問する人が月額モデルでしかも1000円も取るのか
そもそも月額モデルなら毎月の引き落としどうすんの?
クレカは?全部自前で用意すんの?
せめてvectorとか使ってシェアウェアにしときな
有料ソフトがいかに売れないかを知る良い体験できるよ
0107デフォルトの名無しさん
垢版 |
2019/03/20(水) 21:28:40.21ID:pSND/w6U
SDカードって確かこっそりCPRM対応だと思ったけど、
あれをドングル的に流用できたりしないかなとちょっと思ったがどうだろう

CPRMの仕組みを理解してないので的外れかもしれんがw
0108デフォルトの名無しさん
垢版 |
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個です。また、数字によっては該当の属性名がないものもあります。

なにかよい方法はないでしょうか。
0110デフォルトの名無しさん
垢版 |
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; }
}
0112デフォルトの名無しさん
垢版 |
2019/03/20(水) 22:39:16.99ID:Bg9D9rdv
UWPで作れば色々面倒なことはMSが面倒見てくれるけどな
あの範囲で問題ないプログラム限定では有るが
0113デフォルトの名無しさん
垢版 |
2019/03/21(木) 10:46:12.53ID:WMeBK6gL
>>110
できました。ありがとうございます。
勉強になりました。

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

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


LINQとやらを使った方が確実かな〜。
0116デフォルトの名無しさん
垢版 |
2019/03/22(金) 00:47:13.07ID:pVVdiXqm
Sort()した後でReverse()すればいいよ
ArrayListだとSortだけで逆順にするにはIComparer書く必要があってだるいし
というか今時ArrayListなんて使ってないでList<T>使おう
0117デフォルトの名無しさん
垢版 |
2019/03/22(金) 00:48:26.04ID:QnQyasxD
>>116
サンクス!そーいうのがあったんだね。
(長らく現場から離れていてC#はコボラーみたいな感じになってます)
0119デフォルトの名無しさん
垢版 |
2019/03/26(火) 18:39:16.11ID:DPMd1MEr
VBAには、#region #endregion 的な機能はありますか?
コードが長くなってしまって縮小したいです。
0122デフォルトの名無しさん
垢版 |
2019/03/29(金) 18:21:05.18ID:ukrtQ6PV
VS2017で

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

Control + K → P

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


Control + B → P は使えます。
ただ、「K」はVS2010では普通に使えていたはずなのですが、、、
0124デフォルトの名無しさん
垢版 |
2019/03/31(日) 01:56:40.68ID:RIl4YBWE
例えばセッターのみが非publicなプロパティーがあるとして、
セッターにアクセスできるスコープからのみ見えるXMLコメントを
書くみたいなことって可能だったっけ?
0125デフォルトの名無しさん
垢版 |
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)
{
//取得したデータを変数にセット
}
0126デフォルトの名無しさん
垢版 |
2019/04/05(金) 16:53:09.70ID:x8OJz+Ud
.Document,getElementByIdしてからそのIHTMLElement2に対してgetElementsByTagNameすればいいんじゃね
0128デフォルトの名無しさん
垢版 |
2019/04/06(土) 23:59:31.30ID:8OPSxgse
DataGridViewで特定列を除いて
編集させたくないので以下コードを書きました。

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


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

これを実現するにはどういうコードをかけば良いのでしょうか?
0130デフォルトの名無しさん
垢版 |
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なし");
}
0131デフォルトの名無しさん
垢版 |
2019/04/07(日) 02:00:48.99ID:vK2HJm7v
>>130
boolではなくbool?でキャスト
0132デフォルトの名無しさん
垢版 |
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 を使う
0136デフォルトの名無しさん
垢版 |
2019/04/07(日) 11:45:12.82ID:vK2HJm7v
>>135
bool?型と言ってるのになぜbool型にするの?
(bool)のとこを(bool?)って直すだけだぞ
null許容型は、要するに(bool?の場合は)true,false以外にnullも含む(許容する)型
0137デフォルトの名無しさん
垢版 |
2019/04/07(日) 12:25:53.88ID:hRJe8zJK
using System.Numericsとしているのに
Complex a = 123;とだけ書くと何故か赤い波線が付いてエラーになります
System.Numerics.Complex a = 123;とするとエラーは出ないのですが、省略できないのが気に食わない
0138デフォルトの名無しさん
垢版 |
2019/04/07(日) 12:35:01.18ID:PRyiq+oO
>>137
VisualStudioのバージョンは?
後、赤線のエラーは何て書いてある?
VS2017だけど、省略してもエラー出ないよ
0140デフォルトの名無しさん
垢版 |
2019/04/07(日) 13:03:15.10ID:hRJe8zJK
バージョンは2017です
System.NotImplementえdException: 'メソッドまたは操作は実装されていません。'というエラーも出ます
0142デフォルトの名無しさん
垢版 |
2019/04/07(日) 13:30:29.80ID:hRJe8zJK
全部削除して書き直したら治りました
何度も確認したのでタイプミス等ではないはずですが、何が原因だったのか
お騒がせしました
0143デフォルトの名無しさん
垢版 |
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みたいだから、たぶん指摘されてるのと別の原因なんだろうなあ。
知らんけど。
0144デフォルトの名無しさん
垢版 |
2019/04/07(日) 14:24:18.31ID:/8+Cw91p
あー間違えた
var o = (bool?)true;
じゃなくて
object o = (bool?)true;
だね。結論は変わらない
0145デフォルトの名無しさん
垢版 |
2019/04/07(日) 16:58:28.24ID:aTlDD0vY
>>143
何言いたいのかよくわからないけど>>130に対する回答は>>131であってるよ
DataGridViewのCellの初期値がnullなのが原因なだけだから
null許容型のキャストするか行を作った段階で値を代入するかのどちらかになる
0146デフォルトの名無しさん
垢版 |
2019/04/07(日) 17:21:54.02ID:kimAJSSB
>>145
分かってよ。
nullをboolにキャストしようとした時発生する例外はNullReferenceExceptionであって
InvalidCasExceptionではないはずだ
0147デフォルトの名無しさん
垢版 |
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以外の値を代入していると思われる。
0149デフォルトの名無しさん
垢版 |
2019/04/08(月) 13:25:57.00ID:mdLXKZZ1
ほんそれ
0150デフォルトの名無しさん
垢版 |
2019/04/08(月) 15:30:44.33ID:G4htz/so
Windowsフォームでコントロールのプロパティの
EnableをFalseにすると「若干」色が薄くなるようですが
もっとはっきり薄くできないですかね?
完全に消えるとまずいんだけど
はっきり「今これは使えません」って意思表示したいんだけど
いい方法無ですかね?
0151デフォルトの名無しさん
垢版 |
2019/04/08(月) 20:13:53.30ID:DkSPe/Rf
>>150
フォーム全体で対応させるのはわからない
コントロール一つならEnabledChangedのイベントで
コントロールに初めから組み込みたいのなら
https://dobon.net/vb/dotnet/control/tbenabledfalse.html
の「自分で描画する」を参考に。やっていることは真逆だけど色を変えればいいだけ
ボタンやラベルなら使用不可を示すのに色だけでなくフォントの打ち消し線の有無で実装したことならある
0152デフォルトの名無しさん
垢版 |
2019/04/09(火) 00:07:36.04ID:pirXsPL0
Window上にOpacity薄くしたパネルを全面表示すればいいんじゃないか
0154デフォルトの名無しさん
垢版 |
2019/04/09(火) 01:05:33.44ID:HBj7RtDK
Checkboxの質問をしたものです。
初期化時にFalseを設定してやったらエラーが出なくなりました。
0158デフォルトの名無しさん
垢版 |
2019/04/11(木) 09:42:03.59ID:hzw6xvpZ
ちょっと何言ってるかわかんないです raw型って何
何か読んで疑問に思ったんだったら記述示すなりリンク張るなりして
0159デフォルトの名無しさん
垢版 |
2019/04/11(木) 21:19:05.19ID:3mGpDoO0
C#で多倍長浮動小数点数演算は出来ますか
多倍長整数を使ってどうにかするしかないんでしょうか
0162デフォルトの名無しさん
垢版 |
2019/04/12(金) 18:12:54.78ID:f0sWKcEF
今後、開発作業が増えてEXEのファイルサイズが大きくなっていく事が想定される場合
プロジェクト分けた方がええかな?


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

cliclonceというのを使えばバージョンアップとか簡単ですか?
0172デフォルトの名無しさん
垢版 |
2019/04/12(金) 21:44:20.43ID:SPCc1qER
>>163
仮にenumを入れ子にする点は譲れないとしても(この点も本当は再考した方がいいと個人的には思うけど)
アクセシビティーをpublicにすることは検討していいんじゃないの?

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

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

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

てっきり標準で設定出来るプロパティがあるのかと思ってました。
0178デフォルトの名無しさん
垢版 |
2019/04/13(土) 16:32:46.29ID:BMo5W632
>>177
サンクス!



セレニウムにチャレンジしています。
VSで作成した場合
インストール環境にNugetが入っていないとうごかないのでしょうか?
0182デフォルトの名無しさん
垢版 |
2019/04/14(日) 21:03:37.66ID:NnSXGzN0
スクレイピングをこれまでIEを操作して行ってきていましたが

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

コンソール画面が立ち上がって結構うざいんですが
0184デフォルトの名無しさん
垢版 |
2019/04/15(月) 09:11:14.20ID:M/FIhTOp
>>183
コンソールを消す事はできました。

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

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

Windwos APIを使わないと、ダメでしょうか?
0188デフォルトの名無しさん
垢版 |
2019/04/16(火) 09:47:51.95ID:39QxJxCa
スクレイピングはできる様になりました。

ドラッグするか、その枠をクリックしてファイルを選択するしか
画像の選択が出来ません。
セレニウムでドラッグやファイルの選択はできないですか?
0191デフォルトの名無しさん
垢版 |
2019/04/16(火) 15:21:38.40ID:+QEcotOy
スクレイピング(が何かわかって無いけど)はできる様に(なった気持ちに)なりました。
0193デフォルトの名無しさん
垢版 |
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 つ以上の行で発生しています。"という例外が発生します。
何が原因でしょうか?
0194デフォルトの名無しさん
垢版 |
2019/05/04(土) 18:47:33.92ID:y5JKLm4r
ありがちなのは
その型付テーブルにユーザーコード・ユーザー名以外の列があって
それがNULL非許容であるケース
そろそろ型付テーブルは捨ててみるのはどうだろう
0195デフォルトの名無しさん
垢版 |
2019/05/04(土) 23:59:05.71ID:6mDmKshX
>>194
ありがとうございます。
捨てるというか、今データベースプログラミング覚え始めなのです・・・。
0200デフォルトの名無しさん
垢版 |
2019/06/03(月) 19:12:08.43ID:QH6vVdx1
C#の勉強のためにメモ帳を作ろうと計画していますが
フォームにTextBoxを貼り付けるだけではあまり面白くありません
また禁則処理や縦書きの機能もついていません
なにか他のもの、WebBrowserあたりを使うのかな?と想像しているのですが
0202デフォルトの名無しさん
垢版 |
2019/06/03(月) 19:45:12.89ID:QH6vVdx1
WPFだとImageを使うんでしょうか
ImageもしくはPicutureBoxを使う方向でやってみます
0206デフォルトの名無しさん
垢版 |
2019/07/22(月) 23:30:46.11ID:C1JMmcNL
>>200
メモ帳意外と難しいよね
オレも初めの頃作ろうとして挫折した(あわよくばテキストエディタ目指そうとしてたのもあって)

勉強のためだけだとモチベ上がらないので、世の中にあるけど、俺様仕様なのが欲しいってのを作ってみてはどうかな(なるべく簡単なものから)
0207デフォルトの名無しさん
垢版 |
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という風に入れてたのだけど
これだと配列の宣言時に添え字大きいとメモリ足りないエラー出たりするのだけど
多次元配列以外でこういう処理するほうほうはないでしょうか
0212デフォルトの名無しさん
垢版 |
2019/07/28(日) 01:55:31.74ID:fFZFtxU0
C#でメッセージボックスそっくりのフォームを表示したいのですが、
既にそういうことやって公開してるサイトとかあったら教えてください。
とりあえず警告とかのアイコンとメッセージとOKボタンが出ればOKです。
0214デフォルトの名無しさん
垢版 |
2019/07/28(日) 02:05:47.36ID:O6J4gSKO
マルウェア造りたいんだろうきっと
0216デフォルトの名無しさん
垢版 |
2019/07/28(日) 11:11:36.04ID:4n+BfbRN
英語OSで日本語表示

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

違ったっけ?
0218デフォルトの名無しさん
垢版 |
2019/07/28(日) 12:03:09.31ID:mCptNPRe
違う
バグはいくらでも造り込める
0219デフォルトの名無しさん
垢版 |
2019/07/28(日) 12:15:34.70ID:fFZFtxU0
>>217
MessageBoxクラスはロケールのシステムフォントで表示されるので化け化けです
逆にこのクラスのフォントを変えられればそっちでも良いんですがぐぐっても全く出てこず・・
0221デフォルトの名無しさん
垢版 |
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のかわりにそのフォームを同じように呼び出せばいい
0222デフォルトの名無しさん
垢版 |
2019/07/28(日) 13:19:08.39ID:KNp0wpVr
>>219
ほんと?

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

まあどっちにしろサクッと自作しても大した手間ではないな
0224デフォルトの名無しさん
垢版 |
2019/07/30(火) 17:43:55.27ID:Q6VO+qJe
なんのアニメ?
京アニ?
0225デフォルトの名無しさん
垢版 |
2019/09/16(月) 20:31:20.79ID:MPbmz0IO
Windowsのデスクトップアプリ作ってみたいんだけど、UWPじゃなくてWPF使った方がいいの?
0227デフォルトの名無しさん
垢版 |
2019/09/16(月) 21:16:27.82ID:MPbmz0IO
>>226
一度も触ったことないからデスクトップアプリ作ってみたい
販売もWin10以外で使う予定もないです
0229デフォルトの名無しさん
垢版 |
2019/09/17(火) 01:14:09.81ID:jgnLyfJa
>>223
グロ
0231デフォルトの名無しさん
垢版 |
2019/09/17(火) 07:20:33.53ID:Y3mVLTqr
>>230
横だけど
日曜プログラマレベルでWinFormsでそれなりにDB連携の業務アプリを作って運用してはいるんだけど
今更WPFの勉強スタートして使いものになるかな?
つーか、1度作ったWinFormsをWPFにするには作り直しだよね・・・
0232デフォルトの名無しさん
垢版 |
2019/09/17(火) 08:34:01.71ID:gcZDzsnL
>>231
Winformを使いこなしてる人が、今からWPFやっても得るものは少ないだろうね
WinformもWPFもやったことない人なら、どっちでも楽さは変わらない

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

ここ10年ぐらいMSはこんなことばっかりやってるね
0237デフォルトの名無しさん
垢版 |
2019/09/21(土) 10:57:39.89ID:y68BphyG
>>234
もうWin32に新たな関数を追加していくだけでいいんじゃないか
既存の分かりにくい関数とかも整理して新たな分かりやすい代替関数を追加して
古いのは非推奨にしていずれ廃止していくとかさ
0238デフォルトの名無しさん
垢版 |
2019/09/21(土) 11:11:11.88ID:Sri5tnCE
内部文字コードのUTF8化と同時に整理して欲しいよなー
もうそろそろ互換性はいいだろ
0239デフォルトの名無しさん
垢版 |
2019/09/21(土) 12:06:27.59ID:ZIXe7ufx
>内部文字コードのUTF8化

これは愚策
出入りはUTF8で良いけど
0240デフォルトの名無しさん
垢版 |
2019/09/21(土) 19:53:37.95ID:y68BphyG
SetWindowPosとかなあ
Posとか言ってSizeもZOrderもこれ使うとか初心者が勘違いするだろ
SetWndPosとSetWndSizeとSetWndZOrderに分けろや

ライブラリ作っとけばいいだけなんだけどさ
0242デフォルトの名無しさん
垢版 |
2019/10/01(火) 21:05:00.43ID:QXee0tMi
>>241
xamlで作ったユーザーコントロールは普通に使える
その時DataContextはカスケードで子要素のユーザーコントロールにも落ちるから
普通にバインドできる

ってことでいい?
0243デフォルトの名無しさん
垢版 |
2019/10/10(木) 11:16:46.19ID:20GczcoB
picturebox の中の画像の位置はどうやったら取得できるのでしょうか?

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

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

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

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

自力で計算する方法でとりあえずはなんとかなりそうです。
まだコード書いてないけど、画像の表示方法と画像サイズと pictureBox のサイズがわかるのでそこから計算できそうです。
縦と横の拡大縮小率の計算が少しめんどくさいだけかな?
0246デフォルトの名無しさん
垢版 |
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としているのでしょうか?
0248デフォルトの名無しさん
垢版 |
2019/11/06(水) 17:57:42.25ID:cEKOtBl2
>>246
Perlin()と呼ぶことができる
これはPerlin(-1)と書いた場合と同じ
Perlin(0)ってかけばrepeatには0がはいる
だいたい-1なんだけど時々別の値にしたいときなんかに使う
詳しくはオプション引数でググって
0249デフォルトの名無しさん
垢版 |
2019/11/06(水) 18:50:35.37ID:bs5+QLo2
>>247, 248
ありがとうございました。
0250デフォルトの名無しさん
垢版 |
2019/11/25(月) 17:06:44.56ID:3yP/a9XY
1 2次元空間上の座標に乱数で円を重ならないようにたくさん配置します。
2 全ての円の座標の平均値がある条件を満たせば終了。
3 満たさなければ初期化して1に戻る

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

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

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

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

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

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

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

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

ありがとうございました。
0266デフォルトの名無しさん
垢版 |
2019/12/11(水) 19:12:23.65ID:t3xhIlyZ
ASP.NET MVCを初めて勉強しています
MVの場合、ボタンクリックのイベント処理はどう書くのがスタンダードなのでしょうか?
(Webフォームではイベントハンドラーを使ってましたが。)
0269デフォルトの名無しさん
垢版 |
2020/01/01(水) 12:48:02.27ID:7beskV3u
自分で作ったアプリ14個くらいショートカットで起動できるようにしていて、
その中の名前が似た3つが弄ってもいないのにある日突然起動しなくなったのですがどういったことが考えられるでしょうか
0272デフォルトの名無しさん
垢版 |
2020/01/01(水) 13:26:47.06ID:tqBP4ADq
大きくならない
固くならない
0273デフォルトの名無しさん
垢版 |
2020/01/01(水) 13:51:29.41ID:dLiykUmV
>>271
妖精さん「俺のせいにするんじゃねーよ!」
>>269
C#のプログラム上の問題でないことは確か
PC初心者板へどうぞ
0275デフォルトの名無しさん
垢版 |
2020/01/02(木) 09:17:19.87ID:OoAxt65V
テキストファイルを開いて書き換える動作が、
昨日まで普通にできていたのが今日やってみたら読み込みは出来るものの、書き込み時に
UnauthorizedAccessException:パスへのアクセスは拒否されました。
の例外が出て書き換えできなくなったのですがなぜでしょうか
0277デフォルトの名無しさん
垢版 |
2020/01/02(木) 10:23:46.38ID:OoAxt65V
>>276
それは何故でしょうか?
自分のPCで自分以外は使う事もありません。
そしてどうすれば取り戻せるのでしょうか
0278デフォルトの名無しさん
垢版 |
2020/01/02(木) 10:24:50.25ID:ZgXvL7GY
>>275
WindowsUpdateで
「アレ、こいつこんなとこアクセスしてるけどヤバクネ?修正しとこ」
って改修したとこがまさに今反映された
一回だけそういうことあった
0279デフォルトの名無しさん
垢版 |
2020/01/02(木) 10:26:25.06ID:ZgXvL7GY
>>277
アプリ実行時に
右クリックメニューからの管理者で実行とかやってみれば?
それと対象のファイル自体のアクセス権も確認
0280デフォルトの名無しさん
垢版 |
2020/01/02(木) 10:47:12.88ID:OoAxt65V
ありがとうございます
WindowsDeffenderを切ってみたら書き込みが出来ました
セキュリティが悪く効いてた感じでしょうか
0281デフォルトの名無しさん
垢版 |
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);
0283デフォルトの名無しさん
垢版 |
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
0284デフォルトの名無しさん
垢版 |
2020/02/11(火) 16:42:09.82ID:IKSpGnXe
C#でPDF生成するのに定番のライブライはどれ?
0287デフォルトの名無しさん
垢版 |
2020/02/11(火) 18:32:47.01ID:3sdew+Rs
TextBoxに、テンプレート的なデフォルト文字列を持たせたいのですが、
Formのコンストラクタで
textBox1.Text = "文字列";
という方法で指定すると、TextBoxが表示されてから何も変更してない状態でもCtrl+Zで文字列が消えてしまいます。

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

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

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

でなきゃアプリケーション設定か
0290デフォルトの名無しさん
垢版 |
2020/02/11(火) 21:01:04.04ID:zRIDVkEW
キーボード眺めて思ったけどCTRL+ZでなくてCTRL+Xしている可能性もあるなw
手入力じゃなくコード上の代入だとUndoできないんだよな
0291デフォルトの名無しさん
垢版 |
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
0292デフォルトの名無しさん
垢版 |
2020/02/14(金) 11:15:02.38ID:a5iC3cHy
>>285-286
>>284 です
PDFsharp というのが良かったのでこれにしました
0294デフォルトの名無しさん
垢版 |
2020/02/14(金) 12:38:43.18ID:a5iC3cHy
日本語は必須事項ではないので多分大丈夫です
0295デフォルトの名無しさん
垢版 |
2020/02/14(金) 12:47:36.23ID:7R4aPKWb
PDF仮想プリンタの存在前提で普通にGDI+で書けば楽だと思うけどな
Win10ならデフォで入ってるんだし
0296デフォルトの名無しさん
垢版 |
2020/02/14(金) 13:04:12.74ID:a5iC3cHy
なるほど!
検討してみます。ありがとう!
0297デフォルトの名無しさん
垢版 |
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()に渡す方法は無いのでしょうか?
0299デフォルトの名無しさん
垢版 |
2020/02/28(金) 19:02:19.22ID:HAMXUqwp
ありがとう
これだと自分でWin32APIのLoadBitmap呼んだ方が速い気がしないでもない
0300デフォルトの名無しさん
垢版 |
2020/03/01(日) 05:48:57.42ID:wVHwYgLC
こっちは2018年かよ
雑談するには迷惑かからんでいいけど
0301デフォルトの名無しさん
垢版 |
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 書かないときはこっちを書くと動作
0302デフォルトの名無しさん
垢版 |
2020/03/02(月) 10:28:32.19ID:NX3+Q9hq
C#というより.NET Framework全般の問題かもしれませんが・・・
ビルドした実行ファイルの拡張子を7zにして開けると
   .rsrc(フォルダ)
   .text
   .reloc
というファイルが出てきます

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

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

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

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

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

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

いずれも無視できる場合もあれば致命的になる場合もある
サンプル程度で目くじら立てる必要はまったくないが
本番では呼んだ方が良い
0307デフォルトの名無しさん
垢版 |
2020/03/02(月) 12:09:29.55ID:glnmwhpK
なるほどありがとうございます
ちなみに
using(Graphics g = Graphics.FromImage(hoge)){
...
}
みたいなときスコープ抜けるとgのDispose()は呼ばれないですか?
抜ける前に自分でg.Dispose();しておく必要ありますか?
0311デフォルトの名無しさん
垢版 |
2020/03/02(月) 16:35:38.68ID:glnmwhpK
何か今までGCに任せれば良いやって適当に書いてたんですが
意外とDispose()呼ばないといけない場所多いんですね
0312デフォルトの名無しさん
垢版 |
2020/03/02(月) 16:37:42.01ID:glnmwhpK
クラスを書く時デストラクタとDisposeを省略するなっていうのが今回得た教訓かも知れません
0313デフォルトの名無しさん
垢版 |
2020/03/02(月) 17:18:06.30ID:8o+Bfjp3
ちゃんとした製品にするようなソフトならケアするけど個人やチームで使う程度のちょっとしたツールだったら一切書かないな
0314デフォルトの名無しさん
垢版 |
2020/03/02(月) 17:24:53.84ID:qKOTAeuh
グラフィック周りや通信周り、データーベース周りあたりはちゃんと書いといた方がいいんじゃねえか?
0315デフォルトの名無しさん
垢版 |
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
0316デフォルトの名無しさん
垢版 |
2020/03/02(月) 19:08:02.78ID:rG8m8EdX
>>311
メモリーはGCでいいけど>>314が言うような通信、データベースとかファイルとかリソース掴む奴はDispose呼ばないと他のプロセスが掴めなくなったりするから必要なくなったらDisposeしといた方がいい
0320デフォルトの名無しさん
垢版 |
2020/03/02(月) 20:18:10.66ID:mQ4CLNjj
>>307
Graphicsの実装次第だよ
usingで後始末がされるためにはされるように処理を作成する必要がある

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

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

  public void Disposable()
  {
    ...
  }
}
0325デフォルトの名無しさん
垢版 |
2020/03/04(水) 09:15:28.58ID:TuAQ3w56
プログラミングそのものの話ではないんですが、c#で他の機械とソケット通信してデータやり取りしてこちらからの指示やその応答でなんらかの処理を行うプログラムはどう作るのが一般的なのでしょう?

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

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

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

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

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

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

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

「、」の前後で矛盾してるな
0332デフォルトの名無しさん
垢版 |
2020/03/04(水) 10:36:36.26ID:TuAQ3w56
>>330
普段はlinuxでc言語ばかり使っています
Windowsでc#を使うことがなかったので、どういうものが普通とされているのか分かっておらず、戸惑っております
0334デフォルトの名無しさん
垢版 |
2020/03/04(水) 10:51:26.57ID:VYRn8ATr
TCP/IP通信自体は.NETにもSystem.Net.Sockets.SocketやらSystem.Net.Sockets.TcpClientやら用意されてる
TCP/IP上で独自プロトコルならこの辺使うけどIPCでは普通直接は使わない
0336デフォルトの名無しさん
垢版 |
2020/03/04(水) 11:18:37.67ID:TuAQ3w56
>>334、335

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

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

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

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

幸運を
0345デフォルトの名無しさん
垢版 |
2020/03/04(水) 14:38:19.70ID:TuAQ3w56
>>342
なるほど

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

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

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

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

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

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

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

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

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

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

知らんけど
0352デフォルトの名無しさん
垢版 |
2020/03/04(水) 18:49:53.82ID:TuAQ3w56
>>351
動作タイミングが違いますので、dll化では実現できないと考えています。

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

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

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

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

と並列に動く2つのタスクの接点処理を作ってやらないと動かないぞ
0356デフォルトの名無しさん
垢版 |
2020/03/04(水) 19:08:19.47ID:TuAQ3w56
>>353
ありがとうございます

考え方ですね

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

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

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

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

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

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

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

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

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

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

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

すみません

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

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

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

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

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

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

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

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

プロセス分ける必要がなければC#の場合はマルチプロセスに比べて
マルチスレッドのほうが道具も揃ってるしシンプルに作れる
0376デフォルトの名無しさん
垢版 |
2020/03/04(水) 22:30:17.84ID:GUfzIi7v
UI使わない時(ログオフ時)でも常に通信してる必要があるなら
通信部だけ独立させてサービス化することはあるな
0377デフォルトの名無しさん
垢版 |
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みたいなメッセージングも選択肢として検討するかな
0378デフォルトの名無しさん
垢版 |
2020/03/04(水) 22:40:48.64ID:5mLImXyq
>>374
スレッドセーフのサンプル探すのが楽だよね
プロセス間通信のサンプル探すよりはいいと思う

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

DCEは悪用されまくってセキュリティー強化
で既存ソースが動かないってのはあるが、
スレッド生成から含めてランタイムが面倒見てくれるので便利。
0383デフォルトの名無しさん
垢版 |
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 などの既に公開されたライブラリを使う!
0386デフォルトの名無しさん
垢版 |
2020/03/05(木) 10:52:16.03ID:BSkbts2i
>>374
>両方存在しないとユースケースが完結できないのであれば一般的には一つのプログラムにする

それは機能分割できてないだけでは?
別レイヤとして処理を依頼する、その結果を受け取るで済む話のような?
0389デフォルトの名無しさん
垢版 |
2020/03/06(金) 10:32:43.31ID:3H/1PUe0
DataGridView の DataSource として List をバインドすると完了までに時間がかかる(List の Item 数が約816万件ある)ので、
徐々に追加・表示されるようにしたいのですが、どうすればよいでしょうか。
0391デフォルトの名無しさん
垢版 |
2020/03/06(金) 12:12:19.81ID:zx4TP0wl
816万件表示して全部目で見るのかって話だな
0392デフォルトの名無しさん
垢版 |
2020/03/06(金) 14:50:23.81ID:FB3Rm5f4
たしかに800万件を全てバインドしてしまうという考え方が乱暴かもね。
そうすれば楽だとは思うけど、別の方法を考えた方が良いと誰に聞いても言うんじゃないかな
0393デフォルトの名無しさん
垢版 |
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と同時にインストールしてあります。

解決策をご教示いただきたく、よろしくお願いします。
0394デフォルトの名無しさん
垢版 |
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
0395393
垢版 |
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のホスト名}\{ユーザー名}'.'

どうやらこれだけでは解決しないようなので、
教えていただいたブログの情報を参考に設定を変更してみます。
それでもうまく行かなければまたご質問いたします。
0396デフォルトの名無しさん
垢版 |
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 の下の データベース を展開して接続したいデータベースがあるかを確認して
(そもそもデータベース作ってあるの?)
0397デフォルトの名無しさん
垢版 |
2020/03/08(日) 18:32:39.19ID:AVAsnwFk
>>393
出版社に送ってやれよ

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

って
0398393
垢版 |
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ファイルのパスが表示されています。(これで「作ってある」と言えるのかがよく分かりませんが…)
0399393
垢版 |
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ファイルがなぜ、いつの間に作成されていたのか、、、
まだ理解できていないところはありますが、とりあえず先には進めそうです。
教えていただいた皆様、ありがとうございました。
0400デフォルトの名無しさん
垢版 |
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
0402デフォルトの名無しさん
垢版 |
2020/03/09(月) 18:01:09.63ID:T4gz2l9R
>>399
君はそのうち本名とかアカウントとかパスワードとか晒すことになりそうだ
0403デフォルトの名無しさん
垢版 |
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パースだけをさせるとかが定番なのでしょうか?
0404デフォルトの名無しさん
垢版 |
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);
0405デフォルトの名無しさん
垢版 |
2020/03/10(火) 13:38:27.04ID:upXRqZ12
自分で判断できないようなコードを書くんじゃない
> this.picbox.Image as Bitmap ??=
この部分でコンパイルエラーになるはずだが
0406デフォルトの名無しさん
垢版 |
2020/03/16(月) 18:59:53.15ID:H8bmY3hF
新型コロナウィルス対策

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

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

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

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

表示するありがちな奴?
Windows Formsにそんなのないので自作するしかないね
0418デフォルトの名無しさん
垢版 |
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);
0419デフォルトの名無しさん
垢版 |
2020/05/07(木) 08:23:39.67ID:454F8U2c
>>418
asyncって何か知ってる?
0421デフォルトの名無しさん
垢版 |
2020/05/07(木) 08:52:34.58ID:3Zb9YKCz
同期・非同期の両方を使うのは、おかしい。
JavaScript ならクライアント側だから非同期で、Ruby ならサーバー側だから同期

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

だから異次元通信のような、独特なタイミングの調整が必要!
0422デフォルトの名無しさん
垢版 |
2020/05/07(木) 09:03:48.11ID:z0QaEyrp
>>418
基本通りDownloadFileCompletedイベントを使え
キーワードのわかるものは自分でまずググれ
>>421
お前はいらんから消えろ
0423デフォルトの名無しさん
垢版 |
2020/05/07(木) 09:05:22.09ID:PKEvLkh9
質問の趣旨からは外れるけど、System.Net.WebClientは古いから、新規開発ではSystem.Net.Http.HttpClientが推奨だったかと
0425デフォルトの名無しさん
垢版 |
2020/05/07(木) 09:12:23.14ID:uSRgeDXp
>>421
正直に言うとよく分かりません!

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

コンソールアプリでも同様のことができないかとチャレンジしてみたのですがこの通りダメでした。
「非同期」について根本的なことが理解できていないと指摘されているのだと思ってます。
もう少し調べてみます!
0426デフォルトの名無しさん
垢版 |
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("完了");
}
0429デフォルトの名無しさん
垢版 |
2020/05/07(木) 09:40:06.42ID:qpGBsCgy
>>418
非同期にダウンロードするなら、ダウンロード終了を待たないとそりゃ中身0バイトでしょ。
Mainをasync voidにして、awaitしなよ。
0430デフォルトの名無しさん
垢版 |
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);
}

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


ちなみにですが、

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

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

サーバー側の都合で同時に同じファイルのダウンロードは認められず、先に要求のあった非同期が終わるまで同期のほうが始まらなかったとか
0435デフォルトの名無しさん
垢版 |
2020/05/07(木) 12:24:21.96ID:K/pi2iFO
>>432
DownloadFileAsyncとDownloadFileTaskAsyncは別物よ
そもそも.NET Framework 2.0時代にはTaskは存在しないし当然awaitなんてのも存在しない
DownloadFileAsyncはイベントベースで完了を待つ(ことができる)もの
まあフォームアプリの場合通常はフォームが閉じない限りプロセスは終わらないんだから必ずしも明示的に待つ必要はないわけで
でもある程度大きいファイルをDLすることを考えると
DL中にフォームが閉じられた(プロセスが終了した)ときに打ち切られるのは変わらないから
必要に応じてDL中はFormClosingで閉じるのをキャンセルしたりする処理を書かないといけない
0436デフォルトの名無しさん
垢版 |
2020/05/07(木) 12:39:16.54ID:iKRewGMt
タマタマ動いてるプログラムと
正しく動いてるプログラムは
月とすっぽんの差がある
0437デフォルトの名無しさん
垢版 |
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で順番を逆にしたら期待通りの結果が得られました

解決です
0439デフォルトの名無しさん
垢版 |
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
0440デフォルトの名無しさん
垢版 |
2020/05/07(木) 14:25:51.20ID:8jv+kISL
>>437
コンソールアプリにはイベントループが無いからだよ
Console.ReadLine() がイベントループみたいなもんだからそれで見た目だけ治る
0441デフォルトの名無しさん
垢版 |
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
0442デフォルトの名無しさん
垢版 |
2020/05/07(木) 15:03:36.84ID:uSRgeDXp
>>438-440
大変ありがとうございます
しっかりと調べた方がよさそうなキーワードが盛りだくさんです
今から出かけるので帰ってから取りかかろうと思います
まだまだ奥が深そうですね!
0443421
垢版 |
2020/05/07(木) 15:12:46.01ID:3Zb9YKCz
非同期は、異次元空間。
時間の進み方も違うから、相手を知ることができない。
過去・未来も、わからない

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

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

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

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

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

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

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

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

CUIアプリでもちゃんとしたアプリ作るとなると普通はイベントループ的な部分を作るんだし、あんまり誤解を生みそうな発言は良くないんじゃないの?
0449421
垢版 |
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対応
0450デフォルトの名無しさん
垢版 |
2020/05/07(木) 16:34:06.54ID:qpGBsCgy
それが理解できてれば、CPU利用率の話は暴論だと理解できるはずなんだが。
UIスレッドとそれ以外のスレッドとか、ちゃんと頭に浮かんでる?
0451デフォルトの名無しさん
垢版 |
2020/05/09(土) 00:23:11.48ID:Gxw/aWGG
Rubyのチュートリアルレベルのことしかわからないのに、
他言語のスレに誰も求めてないRubyでの回答しか書けないやつにわかるとは思えない、実践経験もあるように思えないし
プログラミング言語触ってて、昔取った杵柄(しかも低レベル)は最高にかっこ悪い老害だとどうしてわからないものかね
0454デフォルトの名無しさん
垢版 |
2020/05/09(土) 09:25:46.90ID:3rxWY8lS
同意せざるを得ない
0457デフォルトの名無しさん
垢版 |
2020/05/10(日) 00:58:19.57ID:z54t4nMz
中小企業の業務システムをc#とsqlサーバーで作ろうとしてます
帳票発行とか商品検索システムを作る上でオススメの本やサイトがあったら教えて下さい
初心者向けの本は読破しましたがオブジェクト指向とかは理解できてないレベルです
0459デフォルトの名無しさん
垢版 |
2020/05/10(日) 01:21:00.21ID:z54t4nMz
>>458
そこら辺の言葉もよくわからんレベルなんだけど商品の物流管理や発注、出荷、売上、締め処理まで恐らくSCMなのかな
0463デフォルトの名無しさん
垢版 |
2020/05/10(日) 06:26:36.98ID:msAj4oxp
そのレベルだと、パッケージ買ってこいって話にしかならんと思うよ。
要件定義もできないから、設計に落とし込めるわけがない。
パッケージに合わせて業務改善してもらえ。
0464デフォルトの名無しさん
垢版 |
2020/05/10(日) 11:59:17.24ID:hDQHcieg
典型的なデスマーチの入り口です
おめでとうございます
0465デフォルトの名無しさん
垢版 |
2020/05/10(日) 12:01:02.69ID:z54t4nMz
>>463
当然パッケージで行こうとしたんだけど、あれが出来ないこれが出来ないで結局ポシャった
のんびり自社開発してくんでc#のオススメ本もヨロシク
0466デフォルトの名無しさん
垢版 |
2020/05/10(日) 12:37:43.31ID:p9tAaMVr
パッケージで出来ないことをするってのは、それは結構リスキーだぞ。
なぜ出来ないかよく調査した?
昔、とある業界用のパッケージ製品作ってる会社にいたけど、どうしてこれができないの?って返事は結構
「法律によって規制されてます」
「その運用すると結果的に脱税になります」
「省庁の○○発第何号でガイドラインが出て、こうすべきだと指針が出ました」
「他の部分に上記の理由で変更できない事があり、ご指摘の所作はそれに矛盾します」
みたいな事が多かったよ。
基本的には「仕様です。対応していません」と答えるけど、コンサルとしても入れるときは運用から全部相談に乗ってたから良く現場に資料持って説明しに行ったよ。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

オブジェクト指向も分かってない人が組み上げていくっていいじゃんか
俺もやってみたいわぁ
中途半端に大きいからVisualStudioさえ入れさせてくれないわー
0478デフォルトの名無しさん
垢版 |
2020/05/10(日) 15:02:43.53ID:sqrrAwwF
商品検索システムや帳票はDBさえ普通に出来てればアプリ側は比較的簡単
(帳票は技術的に簡単でも手間がかかるのでパッケージを使うことが多い)

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

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

業務だけじゃなくて法規もちゃんと調査して、必ず必要だから経理の人間捕まえなよ。
0495デフォルトの名無しさん
垢版 |
2020/05/10(日) 20:46:24.37ID:Zipn87fx
快活クラブでリモートワークしてる c#プログラマがいたよ。

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

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

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

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

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

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

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

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

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

ありがとうございました
0510デフォルトの名無しさん
垢版 |
2020/05/27(水) 20:55:14.84ID:9LOTwxRV
>>504
作るイベントによって変わるけど>>505が万能回答
>>506
メッセージを誰が送るのかわからない
何を起点にDoEventするのかわからない
0512デフォルトの名無しさん
垢版 |
2020/05/28(木) 18:55:24.68ID:jB6NfBip
Bad know how?
0513デフォルトの名無しさん
垢版 |
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を使用しました。

宜しくお願いいたします。
0514デフォルトの名無しさん
垢版 |
2020/06/01(月) 01:58:38.12ID:lLamlcG6
>>513
タイトル、説明文、画像ファイルパスなど必要なもの一式を
一つの型にまとめてDictionary<T>やList<T>を使う
0517デフォルトの名無しさん
垢版 |
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に対応する引数はそのまま書いているつもりなのですが、これはどういう理由なのでしょうか・・・?
0518デフォルトの名無しさん
垢版 |
2020/06/01(月) 20:55:21.10ID:mlavFreb
コンストラクタに引数を与えるなら
new ArticleItem(1, "vermeer.jpg", "フェルメールの真珠の耳飾りの少女")
0521デフォルトの名無しさん
垢版 |
2020/06/01(月) 21:21:56.56ID:SyoyRWyY
>>518-520
一応そちらも試してみていたのですが、{}を()に直すのを忘れていました・・・初歩的なミスでした。
フィールドの場合ですと毎回Name=、Number=、Description=を書かなくてはなりませんが、
コンストラクタですと文字だけで便利な反面、第三者には伝わりにくい面もあるのでしょうか。

やっていくと色々と違いがわからず混乱してしまいますが、基礎から調べてみようかと思います。
初歩的な質問に答えて頂きありがとうございました。
0522デフォルトの名無しさん
垢版 |
2020/06/01(月) 21:30:09.33ID:9YokFrjE
>>521
・該当部分がコメントアウトされている場合、引数無しのコンストラクタ(デフォルトコンストラクタ) public ArticleItem() が暗黙的に定義されている
・public ArticleItem(int number, string name, string description) が定義されている場合は public ArticleItem() は暗黙的に定義されない
多分混乱の原因はこれを忘れてるからなんじゃないかな
0523デフォルトの名無しさん
垢版 |
2020/06/01(月) 22:55:01.21ID:HGtHhUsO
どーでもいいけど画面左のグラデーションが綺麗だなぁと思いました
0524デフォルトの名無しさん
垢版 |
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
0525デフォルトの名無しさん
垢版 |
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;
とかの書き方無かったですか?
0526デフォルトの名無しさん
垢版 |
2020/06/03(水) 16:36:47.26ID:aceFZYCa
>>525
ないです
素直に0比較してください
nullはプログラム上重要な要素になるので特別な処理が作られました
0527デフォルトの名無しさん
垢版 |
2020/06/03(水) 17:06:59.67ID:oijTauHo
int orz(int x, int y)=>x==0?y:x;

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

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

流石に50文字超えみたいなのは正しく命名されたとは思えないので論外ね
0533デフォルトの名無しさん
垢版 |
2020/06/03(水) 17:33:38.70ID:qEEM9XSL
>>529
一回だけで済む方法もあるよ
if ((a = b) == 0) a = c;
0534デフォルトの名無しさん
垢版 |
2020/06/03(水) 17:40:32.41ID:69kHBPnK
ではプロのお方に考察してもらいたいんだが、
なぜLINQ(IEnumerable)にはListにはあるForEachメソッドが無いのかな?
0536デフォルトの名無しさん
垢版 |
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);
0538デフォルトの名無しさん
垢版 |
2020/06/03(水) 20:12:59.40ID:4PJ7L65K
「foreachは副作用を起こすためだけに存在する操作なのだから手続き型で記述すべき」というだけのことなんだが、
理解できない馬鹿は多いんだよね
0542デフォルトの名無しさん
垢版 |
2020/06/10(水) 14:22:02.31ID:AUFXka/X
C#で自クラスを表すキーワードってありますか?
thisで自インスタンスを指すのと同じ要領で、
ILogger<This>みたいな書き方で自クラスを指し示せると便利なんですけど
0545デフォルトの名無しさん
垢版 |
2020/06/10(水) 18:53:25.86ID:spn5Hqr7
例示の通り全部のクラスにloggerのstatic instanceをコピペで置きたいんじゃない?
0546デフォルトの名無しさん
垢版 |
2020/06/10(水) 20:18:27.76ID:npA4+8k3
派生クラス内のbaseキーワードのthis版みたいなもんか
まあ気持ちはわからんでもないがエディタのリファクタで済む話でもあるしなあ
0547デフォルトの名無しさん
垢版 |
2020/06/10(水) 20:19:08.92ID:AUFXka/X
まさに>545がやりたいことでした
DIする全クラスにloggerを用意するルールになってて、
本体のクラスとILoggerのクラスが食い違ってるものがけっこうあって、
なにかそういう間違いを防ぐ方法がないかなあと思ったのですが

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

お前が一番英語できねーじゃん
0575デフォルトの名無しさん
垢版 |
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");
}
}
0576デフォルトの名無しさん
垢版 |
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);
}
}
}
0577デフォルトの名無しさん
垢版 |
2020/06/21(日) 20:20:09.44ID:aN4OBWpj
D2クラスのメソッド内からは base を使って D1::method1 を呼び出せますが、D2クラス外から D1::method1 を呼び出したいのです。
reflection を例のように試してみましたが、これではD2.method1 が実行されました。
0580デフォルトの名無しさん
垢版 |
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
と出力されました。
何で出来るのかはさっぱり分からないけど、完全に理解したので、感謝の気持ちだけ送ります。
0582デフォルトの名無しさん
垢版 |
2020/07/10(金) 21:20:51.69ID:X9xi9dVy
今までGUI作ったことなかったなーと思って勉強しようと思ったんですが今だとどれを勉強するのがいいんですかね
さすがにformsは古い?そうだけどWPF以降も色々と出ていてこのタイミングでどれをやるのがいいのか迷ってて
0583デフォルトの名無しさん
垢版 |
2020/07/10(金) 21:29:39.13ID:Yln2FJAO
>>582
就活用ならUnityでもやるのがいいんじゃね
そうじゃないのならVB6ですらWindows10で動くんだから古いとか気にする必要はないはず
0587デフォルトの名無しさん
垢版 |
2020/07/11(土) 11:09:59.93ID:J0INoyBc
Unityに+1
Unityのゲームの中身じゃなくてEditorの方をおすすめ
0588デフォルトの名無しさん
垢版 |
2020/07/12(日) 21:38:45.35ID:aDzqciee
unityがおすすめなんですね。あれゲーム専用だと思ってました
もっぱら業務アプリばっかなんでそういう用途にも使えるとは思ってなかったです
0589デフォルトの名無しさん
垢版 |
2020/07/13(月) 09:25:32.82ID:TjSPxylo
業務アプリ用の言語ωでゲーム造ってる人も居るしな
0590デフォルトの名無しさん
垢版 |
2020/07/13(月) 15:55:03.59ID:Ke/bF0yo
倉庫の在庫官吏を、VRで実際の倉庫とそっくりに作った仮想倉庫内を移動して有無を確認するようなシステムにしたらITで社会が幸せになるね
0591デフォルトの名無しさん
垢版 |
2020/07/13(月) 16:01:37.04ID:H0zeGwMI
数値で確認じゃなくVRでわざわざ見渡すシステムを作るのか
すげーな、現場でそんな発想するやついねーわw
0592デフォルトの名無しさん
垢版 |
2020/07/13(月) 16:58:20.45ID:aaJV9hNQ
カメラを設置するだけでも大変だったのに
モデリングに手間暇かかるだけ無駄
0593デフォルトの名無しさん
垢版 |
2020/07/13(月) 17:15:16.60ID:9YDjNgWA
商品もリアルに表現しなきゃねってことで
手足に負荷がかかるような器具を付けて商品の重さも再現するんでしょ?
倉庫の広さも実感できるようにランニングマシーンの進化版みたいのに乗ってと・・・
0596デフォルトの名無しさん
垢版 |
2020/07/13(月) 17:38:07.71ID:VzOfFxcE
配管系のゲージは研修半分でオーバーレイして表示させるとかそういう話聞くけど、在庫数は無いわ。
金はかかるがだいたいパレットやらロットにRFタグつけて棚卸しできるようにするだろ。
ちなみにプラントのモデルは案外あるし、点群で撮っちゃうって手もある。

ただ、確かにモデルを表示する類の業務アプリはUnityで作ってるのもあるよ。
それなりに大手の製造業だけど。
0600デフォルトの名無しさん
垢版 |
2020/07/14(火) 20:22:00.29ID:dcabkqyp
>>597
バーチャルで人が汗水垂らして荷物を運んで
それとシンクロしてリアル倉庫で機械が荷物運ぶのな
これこそ来たるべき未来の労働の姿だわ
0604デフォルトの名無しさん
垢版 |
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;
}
0606デフォルトの名無しさん
垢版 |
2020/07/19(日) 18:29:40.39ID:PL1UBy2g
>>605
0や負数を取り除いてもエラーになってしまうんです。
そもそもY軸では負数を含めてもエラーにはならなかったので悩んでいます・・・。

上記のリンクも調べて既に試したのですが、
SuppressExceptionsを設定してもダメでした。
0607デフォルトの名無しさん
垢版 |
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;
}
0609デフォルトの名無しさん
垢版 |
2020/07/19(日) 22:52:49.13ID:PL1UBy2g
>>607
コードをお借りして試してみましたがダメでした・・・
私の環境で気になるのは、
AddXYをした後でもX軸のAxisX.Minumum=0でAxisX.Maximum=1のままだったんですよね・・・
そのままformを抜けて描画すると突然アボートになる・・・
0610デフォルトの名無しさん
垢版 |
2020/07/19(日) 23:04:54.28ID:vyF3aSiC
フォームロード時にエラーになる?
対数軸持ちチャートはデータ数0を
許さないから、ダミーデータを入れた?

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

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

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

とか
0614デフォルトの名無しさん
垢版 |
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;
0615デフォルトの名無しさん
垢版 |
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;
0617デフォルトの名無しさん
垢版 |
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メソッドが呼び出されるのかがわかりません
理由を教えてください、よろしくお願いいたします。
0619デフォルトの名無しさん
垢版 |
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 クラスから派生したクラスのインスタンスです。
0620デフォルトの名無しさん
垢版 |
2020/07/22(水) 15:11:33.71ID:RCIwbmD0
なるほど、状況はわかりましたが コードのイメージができません
どのようなコードを記述するか参考例はないでしょうか?

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

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

ただ単に移動したいだけなら楽なAT車(Task)を使えばいい
全部お任せしたいなら自動運転車(asyncメソッド)で十分
0626デフォルトの名無しさん
垢版 |
2020/07/23(木) 00:38:31.81ID:4rdlbzE6
async await で済むならそれが一番良いね
0629デフォルトの名無しさん
垢版 |
2020/07/23(木) 11:41:04.02ID:LCQAVDS7
>>627
非同期処理自体に明るくないなら古い生のThreadの時代の記事を
むしろ一番最初に読んだ方が理解が早いと思う。
特に非同期処理固有の落とし穴をちゃんと理解しておくことは重要

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

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

さくらのVPS for Windows Serverなどを考えています
とりあえずの目的は、運用するまでの手順を学ぶことです
スレチだったらごめんなさい
0634デフォルトの名無しさん
垢版 |
2020/07/24(金) 10:48:35.32ID:qMgm686n
さくらのVPSでも良いけど
shellやpythonやdjangoの便利さに心奪われて
C#やASP.NETのことを忘れてしまうだろうな
それでも良いけど
0644デフォルトの名無しさん
垢版 |
2020/07/25(土) 16:09:38.45ID:+eV1ptNI
NSのC#自体のソース読むと結構アンマネージ使ってたような覚えがあるけど気のせいか
0648デフォルトの名無しさん
垢版 |
2020/07/26(日) 22:14:35.40ID:/Zfph6D6
idisposeも実装されてない
他のクラスの既にできているオブジェクトを外から強制的に消す
(全く参照させない、gclistに強制的に入れる)方法って
ありますか?
そのクラス内のあるstaticクラス変数にそのオブジェクトの
thisが入っているので外から
そのオブジェクトのアドレスだけはわかる
状態です。
それをなんとか全くどこからも
使わせないようにしたい
0649デフォルトの名無しさん
垢版 |
2020/07/26(日) 22:16:31.03ID:/Zfph6D6
あとthis.anyMethod()も
全くできないようにさせたい
外部から強制的に
できる?
0650デフォルトの名無しさん
垢版 |
2020/07/26(日) 22:21:36.89ID:/Zfph6D6
そのオブジェクトは
unityのObjectも継承してないので
static destroy(Object)も使えません
0652デフォルトの名無しさん
垢版 |
2020/07/26(日) 22:33:46.24ID:nxTYlDLI
条件がよくわからんしunityに限る話ならunityスレでは?
というかreflectionがあるんだから完全に禁止するってほぼ不可能じゃない?
0656デフォルトの名無しさん
垢版 |
2020/07/26(日) 22:45:32.48ID:/Zfph6D6
>>655
全参照にnullをいれなきゃそれだめなんじゃ?
オブジェクトの元は外部の(管理下にない)ソースなんで自分でコード変えることができないんだけど
コード内容はわかるといった今の状況です
そのコード実行もしなきゃいけないし、オブジェクトも
つくられるんだけど、実行中に使えないように
したいという状況です
0658デフォルトの名無しさん
垢版 |
2020/07/26(日) 23:08:48.27ID:kypOQynU
仮に触れなくすることができたとする
でもそれらをそれまで触ってたオブジェクトは当然触れるものと思って触るわけだ
そこで実は触れませんとなったらNullReferenceExceptionか何かで死ぬしかないことになると思うんだけど

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

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

つうかdisposeもgcもunityも関係ない…
無理やりBを解放したら普通はAがまともに動作しないでしょ
0667デフォルトの名無しさん
垢版 |
2020/07/27(月) 12:44:08.29ID:vNtx9fDh
餌を与えないで下さい
0671デフォルトの名無しさん
垢版 |
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);

とやった場合、意図せぬ透過処理がされてしまい何も描画されません。
0673デフォルトの名無しさん
垢版 |
2020/07/28(火) 19:14:28.88ID:IIddPlFk
>>671
そのthis.bmpをPNGフォーマットなどで保存したら「完全な透明な黄緑色で円を描画」した画像になるよ
ディスプレイで見えないのは不透明度が0なんだから指示通りでしかない
0676デフォルトの名無しさん
垢版 |
2020/07/28(火) 19:45:40.40ID:p7iAQgQg
準2級エスパー能力を発揮するなら
半透明な黄緑は期待したものでなく
黄緑のサングラスを通して見たようなものを期待しているのではないか
画素ごとに輝度をとって黄緑と乗算するか、いきなり黄緑と乗算するか、
そんなものがお望みなのではないか
0677デフォルトの名無しさん
垢版 |
2020/07/28(火) 19:50:48.29ID:DIHaAiPw
>>676
エスパーにエスパーが必要になりそうだなw
>>671
適当なペイントソフトで再現してみてから考えるなり質問した方がいいと思う
MSペイントじゃなくフォトショとかGIMPとか半透明色が使えるやつで
0678デフォルトの名無しさん
垢版 |
2020/07/28(火) 19:54:13.43ID:vZrvythQ
皆様説明が下手ですみません。
>>673
保存しましたがなりませんでした。
>>676
そういうブレンド演算処理の違いの話ではなく、
完全な透明は、通常 ARGB(0,0,0,0)という透明な黒の事が多いですが、
私が描画したい色は、完全に透明(つまりアルファ値が0)な黄緑で、
ARGB(0, 128, 255, 0) という透明な黄緑を描画したいという意味です。
0682デフォルトの名無しさん
垢版 |
2020/07/28(火) 20:12:36.90ID:vZrvythQ
>>679
いえ、アルファ値が0なので完全に透明で何も見えないのでARGB(0,0,0,0) と区別はつかないですが、
メモリ上のビットマップの内容にはアルファが0でも赤と緑の値に128や255の値を書き込めますよね。
そういう描画(つまり半透明演算をしない)がしたいんです。

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

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

それとも
ARGB(0, 128, 255, 0)での描画or透過処理で、画像に目で見える影響を与えたいとか?
0685デフォルトの名無しさん
垢版 |
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透過処理で、画像に目で見える影響を与えたいとか?

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

透明な黄緑一色の均一な色で塗りつぶすのか?
0687デフォルトの名無しさん
垢版 |
2020/07/28(火) 21:12:34.91ID:AU+xTBn3
>>682
と言うことは、不透明度0の時に特別扱いされてないか確かめないといかんな。
不透明度0って、描かないと判断されてるのかもしれん。
0689デフォルトの名無しさん
垢版 |
2020/07/28(火) 21:15:26.22ID:CTX9A1Y/
掲示板で一番楽なのは計算式かな?
それがformsアプリでできるかどうかって言うと微妙だと思うけど
0691デフォルトの名無しさん
垢版 |
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)が使えるけど図形を指定するやり方はわからない
0692デフォルトの名無しさん
垢版 |
2020/07/28(火) 21:24:32.89ID:8/UcfNM3
>>685
なんか思いっきり勘違いしてる気がするけど、アルファが0ってことは
何も上書きしないのと同じことだよw
無色のガラス板を乗せたのと同じだからw
0693デフォルトの名無しさん
垢版 |
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
いいえ、やりたいのはカラーキーの抜き色ではないです。
0694デフォルトの名無しさん
垢版 |
2020/07/28(火) 22:27:55.85ID:s40ygP9w
g.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy;
これで透過処理はされなくなるけど、失敗しそうな気がする(RGBがゼロになりそう)
試していなくてスマン
0699デフォルトの名無しさん
垢版 |
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
0700デフォルトの名無しさん
垢版 |
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);
}
0701デフォルトの名無しさん
垢版 |
2020/07/28(火) 23:22:12.18ID:CTX9A1Y/
>>700
あ、アルファ値って普通に書くだけでいけるんや

んじゃあ、最終出力がpngであるならなんでもできるね
1ピクセルずつアクセスしてRGB取り出してRGBAブッ込めばなんでもできるしそれこそなんでも
0705デフォルトの名無しさん
垢版 |
2020/07/29(水) 01:39:42.78ID:CwVjY0Ri
3分クッキング
0707デフォルトの名無しさん
垢版 |
2020/07/29(水) 08:08:54.77ID:dxgD+NL4
.Netは4.5を指定すればWindows8.1から2004まで追加のアップデートなしで済むんですよね?
最新のVS2019で4.72だかで作って配布したら10でも.netアップデートしなきゃ使えんと文句の嵐でめげた。
0711デフォルトの名無しさん
垢版 |
2020/07/29(水) 09:24:59.33ID:HB4PhX83
.NET Coreベースの.NET 5に統合
WindowsのOS標準でインストールされてるのはとりあえず当分は.NET Framework 4.8が続くだろうな
0713デフォルトの名無しさん
垢版 |
2020/07/29(水) 09:51:55.20ID:H7KKJzsx
WPF(始まってなかった)
0716デフォルトの名無しさん
垢版 |
2020/07/29(水) 11:05:27.84ID:rDHTEYe8
>>707
4.6.1を勧める
Win10(初代以外)ならインストール要らず
このバージョンを要求する外部ライブラリも多いし
0717デフォルトの名無しさん
垢版 |
2020/07/29(水) 11:07:32.45ID:7+Ufx8Gb
ラインタイム依存が嫌なら、
.Net Core 3.1 でランタイム込みの自己完結型アプリを作ればいいんじゃないの。
その分ファイルサイズはでかくなるけど。
0718デフォルトの名無しさん
垢版 |
2020/07/29(水) 11:10:47.14ID:dxgD+NL4
そうですか、.netのアップデートは情シスに頼まないと一般ユーザーでは出来ないのがネックです。
会社の端末はwindows updateは殆んどやらないし。
.net位やって欲しいな。
愚痴ってごめんなさい。
0721デフォルトの名無しさん
垢版 |
2020/07/29(水) 11:20:33.05ID:F052uZps
>>716
だめ。BindingRedirect周りの設計をミスったことが散々ディスられてMS側も誤りであったと認めている。4.7.2以降が推奨されている。
0724デフォルトの名無しさん
垢版 |
2020/07/29(水) 11:42:14.30ID:DcS06fwg
アスペktkr
0729デフォルトの名無しさん
垢版 |
2020/07/31(金) 01:16:45.59ID:mccS7x6Z
>>728
ところがどっこい、UWPは消えつつあるのに対し、WinFormsは.NET Coreに移行され、.NET5以降もしぶとく生き延び続ける
0730デフォルトの名無しさん
垢版 |
2020/07/31(金) 09:36:09.26ID:5o3L2EFA
4年前に「Win32は廃止されて今後はUWPの時代」と息巻いてた人たち
20年延々懲りずに「すべてのアプリはブラウザ上で動く時代になる」と言い続けてる人たち

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

PCだけガラパゴス化して化石が残ってるってだけ
0732デフォルトの名無しさん
垢版 |
2020/07/31(金) 11:12:25.50ID:N0eufbNj
アプリωってストアアプリωωのことか?ωωω
0733デフォルトの名無しさん
垢版 |
2020/08/01(土) 08:23:32.56ID:rtK1naa5
ほらほらストアにアプリ公開したら数千円くれるキャンペーン再開してホラホラ
0734デフォルトの名無しさん
垢版 |
2020/09/02(水) 02:32:00.82ID:6fqNtNLb
うちの会社は特定業界向け製品だけ作ってるけど、旧製品だけWinFormsのまま(もっと古い製品はC++とWin32APIとMFCだけど)
ここ数年内に出した製品はWPFになってるな。
新規でWinFormsは使ってない。
0742デフォルトの名無しさん
垢版 |
2020/09/03(木) 08:18:55.17ID:ea/i/g7l
WPFはほとんど普及しないまま既にForms同様メンテナンスモード(原則的に新機能の追加はなくバグ修正等の止むを得ない対応のみが行われる状態)でありレガシーなので、
特にFormsと比較してWPFが正義ってことはない
0745デフォルトの名無しさん
垢版 |
2020/09/03(木) 12:18:31.00ID:F5m5ASgR
だけど、大昔VBが開発された頃に想定されたような
いろんなdpiが混在するような状況なんてなく、96pdiとその倍ぐらいしか事実上ないわけで、
だったらそんなのどうでもいい気もする
0746デフォルトの名無しさん
垢版 |
2020/09/03(木) 12:56:49.83ID:+QaKkUR1
>>745
スケーリングは標準で25%刻みで350%まであるけど?
最近のノートPCやタブレットは最初からスケーリング設定されているし
特にSurfaceなんか滅茶苦茶解像度高いからスケーリング必須
0747デフォルトの名無しさん
垢版 |
2020/09/03(木) 13:02:08.77ID:O2zrguk1
その倍数の環境が一般的になってきてるからスケーリング対応が必要なんだが
0748デフォルトの名無しさん
垢版 |
2020/09/03(木) 13:19:37.70ID:F5m5ASgR
どうでもいいの意味は対応しなくていい、ではなく
システムが中途半端な対応しか用意してないWindows Formでも
なんとかなっちゃうでしょって話。

理論上はいろんなdpiが存在する前提になってるが、現実的には96dpiと
その2倍ぐらいしかないんだから。
25年前には想定されてなかったCRTの完全追放が早期に実現したからね。
0749デフォルトの名無しさん
垢版 |
2020/09/03(木) 13:24:38.58ID:F5m5ASgR
ちょっと思い出したけど、WPFでは1ピクセル幅の水平垂直の直線が綺麗に描画できない(ピンボケになる)
問題があったけど、あれは4Kとかの環境では気にならないのかな
0751デフォルトの名無しさん
垢版 |
2020/09/03(木) 19:59:17.63ID:+QaKkUR1
>>748
カスタム設定(最大500%)で1%単位で設定する人は稀だろうけど
標準設定(最大350%)の25%単位の指定は使う人が増えて、解像度のバリエーションも増えたって話なのだが
4Kモニターも少しずつ広まってるし
0752デフォルトの名無しさん
垢版 |
2020/09/05(土) 08:40:32.65ID:MHY1xOGp
その前に、「WinFormsもとっくに高DPIに対応済みだ」って誰か突っ込んでやれよw
0759デフォルトの名無しさん
垢版 |
2020/09/17(木) 08:19:29.64ID:WgqtFT7g
ゲイツはジュニアってよばれてたなのかな
インディージョーンズを思い出す
0760デフォルトの名無しさん
垢版 |
2020/09/17(木) 12:22:44.13ID:OW2OZx8D
middle name Henry の方はご健在
0763デフォルトの名無しさん
垢版 |
2020/09/30(水) 03:00:43.36ID:UkXS54f3
>>755
それでも困らないし全然駄目じゃないから
WPFが10年も普及してない
全然駄目なら完全に淘汰されとるわ
0764デフォルトの名無しさん
垢版 |
2020/09/30(水) 04:21:31.87ID:Zcv1ppLY
Winformでもそれなりにアプリが作れちゃうから、わざわざ新しい手法を覚えようとは思わないよなぁ
0765デフォルトの名無しさん
垢版 |
2020/09/30(水) 05:20:08.84ID:/UKb1qW0
>>763
hidpi対応が全然ダメだって話だしlodpi環境自体が淘汰されてないんだから当たり前じゃろ
0766デフォルトの名無しさん
垢版 |
2020/09/30(水) 07:28:45.65ID:MlAR04xo
>>764
まさにそんな意識の人が多いんだろうなぁ。
ことあるごとに「WPFはいらない」とかアピールしなければ害はないのだが。
0767デフォルトの名無しさん
垢版 |
2020/09/30(水) 07:34:58.16ID:M14URhI0
なんか本気で凝った画面作るならunityとかあるし
工場向けならwinformsだしで
消極的に凝った画面作るときしか選択しないwpf
0770デフォルトの名無しさん
垢版 |
2020/09/30(水) 12:35:11.90ID:NNWpaWfq
お邪魔します、くだんのUnityで
c#を始めてみたんですがデスクトップビルドとHTML5ビルドのクライアントで対戦ゲームを作るようなとき
あるいはゲームでなくてもデータベース参照でも良いですが、
どうやって通信の仕組み作れば良いのでしょうか?
0771デフォルトの名無しさん
垢版 |
2020/09/30(水) 13:19:18.32ID:sYKFg//m
Unityのスレがあるよ
0772デフォルトの名無しさん
垢版 |
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まではかなり安く使えるんで、とんでもない大ヒットしない限りこれがいいよ
0773デフォルトの名無しさん
垢版 |
2020/09/30(水) 13:49:11.25ID:NNWpaWfq
>>771
ネットワーク通信の書き方ってUnity操作のスレなんだろうか?そこもよくわからない・・
>>772
ありがとうございます
c#始めて1週間程度なもんでココのスレ来たんだけど
ローカルでちょこっと遊んでみたいだけなんで
photonてどういうアセットなのか?
ccuが何か?すら知らなかったんで
そのあたりを調べてみたいと思います。
どうもでした。
0775デフォルトの名無しさん
垢版 |
2020/09/30(水) 22:58:13.59ID:88URXoRi
>>232
> WinformもWPFもやったことない人なら、どっちでも楽さは変わらない
ってことは絶対ない
覚える分量もぜんぜん違うし
特にWPFとMVVMと一緒に覚えないといけないのは難関すぎる
c#精通してる人たちでも移行がすんなりいかなかったのにふざけるなよほんと
0776デフォルトの名無しさん
垢版 |
2020/09/30(水) 23:17:51.70ID:AZmvyllE
>>774
それを言ったらWinformsもサブセットだしWPFもサブセットだし大体がサブセットになるじゃん
0777デフォルトの名無しさん
垢版 |
2020/09/30(水) 23:32:40.97ID:FlnFD5lW
>>775
MVVMは必須じゃないぞ
MVVMやらないならそんなに差があるとは思わないな
MVVMまで覚えるなら確かに学習量が全然違う

つーか、1年以上前の発言にレスすんなよw
0778デフォルトの名無しさん
垢版 |
2020/09/30(水) 23:38:46.92ID:wQcBlxXT
ボタンを置いてダブルクリックするとイベントハンドラが自動的に作られる…
みたいな作りやすいUIが早くできればいいのになー
0781デフォルトの名無しさん
垢版 |
2020/10/01(木) 02:42:28.23ID:zz0NqDNj
WinFormsを選択する理由がない

C#はXamarin, Unity, WPFでOK
0783デフォルトの名無しさん
垢版 |
2020/10/01(木) 03:18:09.94ID:gmn8vEFr
>>778
どういう目的でボタンを配置したのかをAIが忖度して
イベントハンドラーが自動的にプログラミングされるならすごいなー
いや余計なお世話かもしれないから
ダブルクリックでウィザードが起動するくらいなら出来なくもないか!?
ダブルクリックでUnityもXamarinも対象位置に飛ぶだけかな?
if文やトライキャッチはTABキーダブルでテンプレ挿入なるけど、まだまだ物足りない・・・
0784デフォルトの名無しさん
垢版 |
2020/10/01(木) 16:01:53.74ID:c282b8/j
.net5からはWinUI3でUWPのガワがデスクトップで利用できるようになり
xamarinからunoってのに代替わりもありそう
0785デフォルトの名無しさん
垢版 |
2020/10/01(木) 16:17:26.41ID:15Icpaxe
>>776
お前サブセットの意味判ってないやろ
0787デフォルトの名無しさん
垢版 |
2020/10/02(金) 00:49:35.05ID:yLHMA8M3
.net coreはまだまだコントロールが足りなくて切り替えは厳しいな
シコシコ作った自家製クソアプリがラズパイ上で踊り狂う日を待ってます
0788デフォルトの名無しさん
垢版 |
2020/10/02(金) 07:20:55.57ID:0z7X4+Qf
async awaitの原理がよく分かりません。
await以下のコードは実行されないにも関わらずawait中にそのスレッドが固まらないのはどういう原理なのでしょうか?
具体的にはUIのボタンクリックなどのイベント関数内でのawaitの話です
0792デフォルトの名無しさん
垢版 |
2020/10/02(金) 11:06:17.65ID:vEIDHK0R
const 汚染とか GPL 汚染とかと一緒で
async await 汚染が広がるってのはある
もちろん回避方法知ってれば回避可能
0794デフォルトの名無しさん
垢版 |
2020/10/02(金) 12:18:32.20ID:HvZS2dGY
githubでc#製のソースコードみてると
visual studioが吐いたファイルとかが含まれてないんですけど
普通はvisual studioで開発をしないものなんでしょうか?
0796デフォルトの名無しさん
垢版 |
2020/10/02(金) 12:23:44.70ID:vEIDHK0R
無駄なものは要らんので .cs だけで済む場合は .cs だけのプロジェクトの方が好き
0798デフォルトの名無しさん
垢版 |
2020/10/02(金) 12:30:57.59ID:DER3efA5
自動生成されるようなものをリポジトリに含めてもしょうがないから除外してるだけなんじゃね?
0809デフォルトの名無しさん
垢版 |
2020/10/02(金) 22:52:20.08ID:SS+YiBnr
道路で逆走している車から見て「車がみんな逆走しているぞ」って言っている感じか
0810デフォルトの名無しさん
垢版 |
2020/10/02(金) 23:14:47.03ID:p0460FPy
そう言えばこの命令が欲しいときってプログレスバーで進捗状況も更新して欲しいときが99.89%なんだけど
結局while+sleepのが綺麗に書けることが多くて使ってないな
0811デフォルトの名無しさん
垢版 |
2020/10/03(土) 00:00:37.61ID:YZwmKYAY
正しい使い方を知らないのにも関わらず悪手、なんてよくいい切れるなw
プログレスバーはIProgress使うだけでじゃん
0813デフォルトの名無しさん
垢版 |
2020/10/03(土) 01:07:24.42ID:sQ+SRwj5
「非同期メソッドは、asyncがついた関数内からしか呼べない。」みたいなことが書いてある嘘ブログが結構あるからな
例の大量書き込みの人は、そう言うのを書いてる人か、それかそう言うのを読んで真に受けてる人なんだろう
0814デフォルトの名無しさん
垢版 |
2020/10/03(土) 02:58:19.24ID:/wA+nWqo
プログレスバーなんて、簡単に動かないだろ。
マルチスレッドなのに、素人ができるわけない

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

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

int A:get()
{
}
みたいに。C#でも同様な書き方は出来ますか?
0820デフォルトの名無しさん
垢版 |
2020/10/03(土) 11:03:01.12ID:C2ZTF6bo
partial は?
0821デフォルトの名無しさん
垢版 |
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 は知らないから、自分で調べて
0825デフォルトの名無しさん
垢版 |
2020/10/03(土) 11:44:35.80ID:NjZXoVXL
99% から 100% になるのに 3日かかるんですね判ります
0826デフォルトの名無しさん
垢版 |
2020/10/03(土) 12:45:54.24ID:7JLpHN6R
>>825
いや、すぐ100%になるよ
その後の

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

に時間かかるけど
0827デフォルトの名無しさん
垢版 |
2020/10/03(土) 14:54:53.24ID:cvTPWa8P
C#のよりよい書き方を教えてくれるチェッカーってありますか?
シェルスクリプトだとshellcheckみたいなの
0831デフォルトの名無しさん
垢版 |
2020/10/03(土) 18:26:08.32ID:NyXscKPR
システム更新系のでそんなのがあった気がしたねw

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

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

10段階の処理のnフェーズ目を処理中、みたいな表示はあってもいいかもしれんが
スレ違いなのでこの辺で
0833デフォルトの名無しさん
垢版 |
2020/10/04(日) 10:09:30.72ID:WrglaOe5
確かにファイルのダウンローダー系のは残り時間表示が減ったり増えたりするな
0834デフォルトの名無しさん
垢版 |
2020/10/04(日) 10:12:08.66ID:8hNgrfXT
.NET5っていつから正式版使えるの?
俺の中の作りたいプログラムキューが結構溜まってきてるんだけど
0839デフォルトの名無しさん
垢版 |
2020/10/04(日) 17:41:26.92ID:OuBWvyJw
C#でアプリケーションを作ってVisualStudioInstallerをSetupファイルを作ってインストーラーを使ってます
アプリで参照しているdllのバージョンが上がってSetupファイルをビルドして再配布しようとしているんですが
どうも配布先で実行しても該当のdllだけ差し替わらないのです
VisualStudioInstallerの方では該当のdllを参照しているバージョンはプロパティで確認しても最新ですが
同名dllの該当ファイルはアップデート後も書き換わらず上書きされない状態です
何か解決方法ありますでしょうか?
0840デフォルトの名無しさん
垢版 |
2020/10/04(日) 17:43:55.75ID:OuBWvyJw
補足です
配布先で、一旦アンインストールしてSetupを実行する限りは
新しいバージョンのdllが入り問題なく動作しています
0841デフォルトの名無しさん
垢版 |
2020/10/04(日) 17:54:40.72ID:h2vHNKtG
>>839
該当のdllがファイルバージョンを上げ忘れてると思われる
msiは対象のファイルのバージョンが上がっていないと上書きしない余計な仕様があって、これに引っかかる(無視する設定は無いはず)
まずはdllファイルのプロパティからバージョン情報を確認して、新旧で変わっていないようなら配布元に更新をお願いするしかない
0842デフォルトの名無しさん
垢版 |
2020/10/04(日) 18:02:38.99ID:OuBWvyJw
>>841
レスありがとうございます

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

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

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

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

MSIは廃止されるはずだったよね?
0851デフォルトの名無しさん
垢版 |
2020/10/04(日) 21:47:36.10ID:OuBWvyJw
アドバイスありがとうございます
とりあえずメーカーさんには問い合わせをだしつつ
簡単そうなOrcaを使ってamusにし、強制的にdllを上書きするようにしてうまくいきました
今回分は手動でmsi書き換え対応、あとはメーカーさんの対応待ちというところでひとまず解決です
ご教授いただき感謝です
0853デフォルトの名無しさん
垢版 |
2020/10/05(月) 14:34:55.98ID:q4O9ogxl
ボタンクリックでpingを並列処理(guiでparallel.for)させてるのですが、並列処理が終わった後に何らかの処理をさせたいのですが、終わる前にさせたい処理が始まってしまうのは何故でしょう?
0854デフォルトの名無しさん
垢版 |
2020/10/05(月) 15:16:41.19ID:e+L/idp9
終わるまで待たずに始めてるからだろう
0855デフォルトの名無しさん
垢版 |
2020/10/05(月) 16:03:32.02ID:q4O9ogxl
>>854
すいません、結果表示の所でデリゲートしてました。
デリゲートしてたら抜かされるんですね。
0856デフォルトの名無しさん
垢版 |
2020/10/05(月) 17:21:36.72ID:yAAG+Ftq
やってること、機能の理解、用語の理解、みんなめちゃくちゃすぎて、まるでQiitaをみている気分だ
0858デフォルトの名無しさん
垢版 |
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固定じゃなく動的にしたいのですが
どうすればよいですか?
0861858
垢版 |
2020/10/05(月) 18:34:00.09ID:gVc00iwv
最初[10]と宣言した後、[20]とかには・・・・変更できますか?
っと追加で質問してもいいですか?
0863デフォルトの名無しさん
垢版 |
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
0865デフォルトの名無しさん
垢版 |
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();
}
0866デフォルトの名無しさん
垢版 |
2020/10/05(月) 22:04:35.42ID:ToydrsKO
質問です
イベントは、購読する側が寿命が短い場合自分で登録解除しないと開放されず、リークするのは分かるのですが、
イベントを発生させる側が寿命が短い場合はそのインスタンスをフィールドで持っておかないと
購読されていても途中で開放されてしまうのでしょうか
その場合、例えばコンストラクタでイベントを発生させるオブジェクトを受け取って購読するだけのような処理(以下)
public class Subscriber {
 public Subscriber(Publisher publisher) {
  publisher.ValueChanged += Publisher_ValueChanged;
 }
}
の場合、subscriberはpublisherを持っていないので、subscriberが生きている間にpublisherが開放されて購読も解除されるといったことは起こりますか?
これは設計が悪い?
0867デフォルトの名無しさん
垢版 |
2020/10/05(月) 22:23:53.32ID:rQ89lJX/
>>866
>subscriberはpublisherを持っていない
これが分かってるなら答えは自明でしょ
設計が悪いかどうかは何を実現したいか次第
でも普通は発行側の寿命を購読側に合わせたいことなんてあるのかなと思う。
0868デフォルトの名無しさん
垢版 |
2020/10/05(月) 22:36:15.65ID:ToydrsKO
>>867
ありがとうございます
UI(コントロール)のイベントを加工してロジックに伝えるアダプターのようなものを実現したいです
設計を見直してみます
0869デフォルトの名無しさん
垢版 |
2020/10/06(火) 22:21:36.32ID:0ZJ/y4Ey
パラメータをPOSTしてウェブサイトのHTMLソースを取得しています。
POSTするデータが普通の配列形式の方法は以前から知っているのですが、JSON形式でPOSTするサイトに出くわしました。
いろいろなウェブサイトを見てPOST自体はエラーせずにできるようになったようなのですが、レスポンスもJSON形式のデータしか取得できずに困っています。
欲しいのはウェブサイトのHTMLソースです。
どうしたらいいでしょうか?
0870デフォルトの名無しさん
垢版 |
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();
   }
0872デフォルトの名無しさん
垢版 |
2020/10/06(火) 22:26:56.84ID:3gNx1ZB7
過去ログ抜こうとしてるんかな
0873デフォルトの名無しさん
垢版 |
2020/10/07(水) 04:05:43.46ID:qlNjOdYh
curl, wget でも出来る。

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

漏れは、VSCode の拡張機能、Rest Client を使ってる
0875デフォルトの名無しさん
垢版 |
2020/10/08(木) 18:41:10.72ID:zyhORnZD
5.0始めたけど new()の出番めっちゃ多いな
varよりnew()優先にするのがいいのかな
0876デフォルトの名無しさん
垢版 |
2020/10/08(木) 20:54:36.31ID:toLcLUNb
Windows 10だけサポートしたいんですけど
.Netはどのバージョンからサポートしたらいいのでしょうか?
0879デフォルトの名無しさん
垢版 |
2020/10/08(木) 21:22:37.99ID:+UAfPznY
二つの配列A,Bがあり、Bに入っていない要素がAにある場合の処理はどのようにすればいいでしょうか?
やりたい事は、テキストファイルから一行ずつBに読み込んで格納し、なんらかの結果の配列Aとの照らし合わせを行いたいのですが、なかなか上手くいかず…
0883デフォルトの名無しさん
垢版 |
2020/10/09(金) 11:00:27.55ID:n+WfHqnB
C#で構築したORACLEを更新しているシステムがあるのですが、
入力時にタイムアウトするのを防ぐ、もしくは入力を促すような
仕組みを作るにはどうすればいいでしょうか。
0885デフォルトの名無しさん
垢版 |
2020/10/09(金) 11:16:26.16ID:n+WfHqnB
一般的な対策はありますか?
ユーザーに処理を放置せず、すぐ完了させてくれとかいうしかないですか?
自分はプログラマーでもないので詳しくなてすみません。
0886デフォルトの名無しさん
垢版 |
2020/10/09(金) 11:22:21.55ID:zClV+H3L
入力時にタイムアウト、ってなんでそうなるの?
入力を促されていることにユーザーが気がつかないのか、ユーザーがいい加減でほっとく人が多いのか。

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

後者なら、
・教育する

などがあるんじゃないかと思うんだけど、エスパーはたいてい外れるので、もうちょっと状況を整理してから聞いてみるのがいいんじゃないかと。
0887デフォルトの名無しさん
垢版 |
2020/10/09(金) 11:32:30.15ID:n+WfHqnB
ありがとうございます。
>ユーザーの入力が遅いのであれば、入力を保存して
ローカル環境に入力途中のデータを保存するようにしてもらうという意味でしょうか
0890デフォルトの名無しさん
垢版 |
2020/10/09(金) 12:19:00.25ID:a2KfB7NN
ヘルメット開発しろ

早く入力しないと高圧電流が流れる仕組みだ
0892デフォルトの名無しさん
垢版 |
2020/10/09(金) 13:53:03.37ID:V1E2IEC6
- 照明を落として赤いパトランプ点灯

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

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

まあ、設計が悪いと思うけど
0895デフォルトの名無しさん
垢版 |
2020/10/09(金) 16:22:27.55ID:n+WfHqnB
>> 894
それっぽい場合はどのように処理をすればいいのでしょうか
0897デフォルトの名無しさん
垢版 |
2020/10/09(金) 16:32:12.90ID:n+WfHqnB
1.My.settingというものに書き込んでおけば呼び出すことが出来る
2.テーブルからデータをSELECTして画面に表示したら、Oracleとの接続を切って
画面の更新ボタンを押す際にOracleと接続すれば、タイムアウトすることはない

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

1.2.のような理解で正しいでしょうか。
0899デフォルトの名無しさん
垢版 |
2020/10/09(金) 16:48:55.28ID:mOpqVRBo
何のタイムアウトか分からない
何でタイムアウトしてるのか分からない

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

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

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

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

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

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

タイムアウトの件とは関係ないがコネクションプーリングは
DBサーバーを使う場合の基本なのでちゃんと押さえておいたほうがいいyo
0917デフォルトの名無しさん
垢版 |
2020/10/10(土) 16:50:19.84ID:i5KfYhU+
>>906
0919デフォルトの名無しさん
垢版 |
2020/10/11(日) 11:27:57.38ID:ErUdhCxH
プログラム板のスレッドの中で記述されていて
catchブロックの中でreturn文などにより処理が
スレッドの呼び出し元へ戻ってしまう場合には
try文の次に記述されたレスは実行されません。
finallyブロックを使った場合はcatchブロックの中でreturn文などが実行された場合でも必ず実行されます。
(ただしSystem.exit(0)によってプログラムが終了した場合を除きます)。
0922デフォルトの名無しさん
垢版 |
2020/10/11(日) 16:21:37.29ID:SD6h9HSf
async/awaitで排他制御やる時にSemaphoreを使うけど、開放する時にfinally使うのが一般的
0924デフォルトの名無しさん
垢版 |
2020/10/12(月) 09:32:25.45ID:941JO02h
>>920 は間違ってはいないだろ
偏ってるかも知れないが

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

それを実行したら、各DB の型に合わせて、表が作られる。
表の型などを抽象化してる
0945942
垢版 |
2020/10/14(水) 08:08:27.41ID:z5Uy/Vd3
その代わり、個別のDB の特別な機能を使うと、可搬性が無くなる

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

という話だとおもうけど、そのアプリがMS SQL ServerとMariaDBと
どっちでも動作するようになっているのなら、インストールし直せば
OKなんじゃないかな
0948デフォルトの名無しさん
垢版 |
2020/10/14(水) 16:56:46.74ID:PQeg+6lO
>>946
インストールし直せばってなんじゃい

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

データ移行は別途必要
0949デフォルトの名無しさん
垢版 |
2020/10/14(水) 18:54:47.87ID:MAVLXRyI
将来的にやるかどうかもわからないRDB移行を楽にするためのものというよりは
システム管理者がバックエンドのストレージを選べるメリットのほうが価値としては大きい
0953デフォルトの名無しさん
垢版 |
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.'
というエラーが起きます
配列のレンジをはみ出してはいないと思うのですが、どう直したらいいんでしょうか
0957953
垢版 |
2020/10/16(金) 02:52:28.99ID:kSQNYYOM
ありがとうございました..
全然気づかなかったです
勉強法がわからないんで手持ちのC言語の参考書の例題をC#で一つづつ書き直してるところです
0958デフォルトの名無しさん
垢版 |
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で、エラーなしで出力されます。
0959デフォルトの名無しさん
垢版 |
2020/10/16(金) 03:10:59.01ID:mkv3kCzf
実行確認してたら亀レスだったorz
CとC#は別物では?新しく買い直した方が良いのでは?
0962デフォルトの名無しさん
垢版 |
2020/10/16(金) 03:21:23.72ID:kSQNYYOM
新・標準プログラマーズライブラリ なるほどなっとく C#入門
この本注文したんですがプライムデーで混んでるのか全然届かなくて。

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

そうでない才気あふれる人間なら何やっててもすごくなるけど
0969デフォルトの名無しさん
垢版 |
2020/10/18(日) 04:34:48.20ID:l893GX8C
ネットの情報は新旧入り乱れてるからことが多いから前提となる知識のない初心者は混乱しがち
0970デフォルトの名無しさん
垢版 |
2020/10/18(日) 09:19:26.79ID:DMDt9rkO
>>962
注文した後に言うのもアレだが、C#は各言語の中で最も日本語WEBサイトが充実してるから本は不要なんだけどな
上でも言われてるDOBON.NETやufcpp.netの2サイトだけで上級者レベルまで学べる
0971デフォルトの名無しさん
垢版 |
2020/10/18(日) 10:46:36.68ID:NS/00dNr
そうかなあ
今時はC#も主流はWeb開発なわけだけど、ASP.NET Coreを学べる日本語のサイトなんてMS公式以外にはほとんど無いぞ
0972デフォルトの名無しさん
垢版 |
2020/10/18(日) 10:49:21.41ID:S5nNaIhQ
今の.NET界隈はMSが米で主流な内製開発の軽いノリに迎合しすぎて、もはやジャップSIには全く適さない代物になってしまってる
0975デフォルトの名無しさん
垢版 |
2020/10/18(日) 11:41:29.97ID:H1xH1BRx
ほんそれ
0978デフォルトの名無しさん
垢版 |
2020/10/18(日) 12:53:53.68ID:Lw+GI6g9
昔と違って今は何でもかんでも日本語訳される時代じゃないからね
英語で読めない人は取り残されるだけ
0979デフォルトの名無しさん
垢版 |
2020/10/18(日) 17:12:04.66ID:GgXa8sFd
>>978
「昔と違って今は何でもかんでも日本語訳される時代じゃない」
まるで昔は何でも日本語訳されていたかのような
0981デフォルトの名無しさん
垢版 |
2020/10/18(日) 18:46:10.75ID:bt0xe+ws
switch文も式になるけど、何でもかんでも式になる方がいいことなのか?
0982デフォルトの名無しさん
垢版 |
2020/10/18(日) 19:31:06.35ID:S5nNaIhQ
いいかどうかはともかく流行りではある
ついていけないなら引退するしかない
0984デフォルトの名無しさん
垢版 |
2020/10/18(日) 19:49:30.22ID:6x+7Jy+N
昔のVBVCは単語でF1押せばとりあえず日本語ヘルプが出てきた
ここでも国力の低下を実感するよね
0986デフォルトの名無しさん
垢版 |
2020/10/18(日) 21:16:43.91ID:o5mWc93K
人手で翻訳したバージョンが提供されたのは確かVS2010の時代が最後じゃなかったかな。
どっちにしろ別に最近の話じゃないね。

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

いわゆる"as is"でいいから手動翻訳された古いバージョンも読めるようにしておいてくれればいいのにね。
別に英語でも読めるけど日本語の方がやっぱり早く読めるし斜め読みもしやすいよね
0993デフォルトの名無しさん
垢版 |
2020/10/19(月) 13:55:26.03ID:asy7wTux
サイトに訪問した人が翻訳結果が可笑しいと思ったら
その場で治せる仕組みが一時期あったやろ?
あれでかえってめちゃくちゃになってたところもあるんやで
0994デフォルトの名無しさん
垢版 |
2020/10/19(月) 14:17:56.99ID:9I8x18Tz
コミュニティー何とかって奴ね
わんくまの人たちとか結構頑張ってたね
あれはWikipediaみたいに直接編集できるんじゃなくてコメントを書けるだけじゃなかったかな
0995デフォルトの名無しさん
垢版 |
2020/10/19(月) 14:19:57.00ID:asy7wTux
日本語と英語が交互に表示されてるのに
コメント欄が英語の上にかぶさって
肝心な英語が読めない機能付きで
うざかった希ガス
0996デフォルトの名無しさん
垢版 |
2020/10/19(月) 15:00:55.55ID:g0sfGRb8
英語読めるようになったほうがいい
それですべて解決する
0998デフォルトの名無しさん
垢版 |
2020/10/20(火) 00:31:21.67ID:p0Iib1Gp
\  __  /
_ (m) _  ピコーン
   |ミ|
/ `´  \  言語解説に特化した言語を開発すれば・・・・!
  ( ゚∀゚)
 ノヽノ |
  < <
0999デフォルトの名無しさん
垢版 |
2020/10/20(火) 10:11:38.08ID:pHiz9StD
emacs/elisp は特化し過ぎて成功した例
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を超えています。これ以上書き込みはできません。

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