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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

wc1.DownloadFileAsync(url1, csv1);

}

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

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

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

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


ちなみにですが、

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

C言語で作るWindowsアプリ!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

業務だけじゃなくて法規もちゃんと調査して、必ず必要だから経理の人間捕まえなよ。
2020/05/10(日) 18:48:19.69ID:p9tAaMVr
>>491
言語以前の問題だと質問者が気づいていない以上仕方あるまい。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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