18/06/03 22:53:07.14 S4J0YpoT0.net
>>957
ありがとう、そういうこともあるんだな
勉強になった
10Gくらいの固定長テキストファイルから一行ずつ読み取って
最初の1-10文字はUSER ID、11はSEX・・・って分けてdbに突っ込んでるんだけど
StringBuilderでLength=0しつつappendするくらいじゃ、stringでsubstringするのとあまり変わらなかったんで
Span使えばマシになるのかなと思ったんだ
986:デフォルトの名無しさん
18/06/03 23:00:15.10 8gLBE5WNa.net
そんなもん丸ごとDBにロードしたほうが速いだろ
固定長ファイルのロードはどのDBMSでもコマンド一発でできる
987:デフォルトの名無しさん
18/06/03 23:12:33.52 S4J0YpoT0.net
>>965
それなw
tempのカラムに一行まるごと突っ込んで、クエリでsubstrするやり方やってみる
URLリンク(stackoverflow.com)
988:デフォルトの名無しさん
18/06/03 23:35:40.25 iikfdxhC0.net
10GBのデータだと読取よりDBMSへの書き込み方法がネックになりそう
989:デフォルトの名無しさん
18/06/04 06:33:56.69 mxEQUVjg0.net
>>967
細かくなるとdbスレ行きなんだろうけど
実際に書くところはC#なわけで、どこがボトルネックになってるのかザコ過ぎてわからんw
とりあえずsqliteつかってメモリ上dbにinsertでトランザクション管理しっかりやってってして30分くらいだったからまーいいかと
sql server expressだとbulk insertはわからんけどselectで並列処理されるみたいだから乗り換えてみる予定
990:デフォルトの名無しさん
18/06/04 11:04:17.43 MivBMbBxa.net
sql server expressはひっくるめたDBサイズが最大10 GBまでだったと思うが
991:デフォルトの名無しさん
18/06/04 11:06:49.27 UeJV2JW90.net
メモリしこたま積んでRedisかな
992:デフォルトの名無しさん
18/06/04 14:26:59.71 pPavJvQvM.net
Postgresでいいよ
ロード時に固定長レコードのフォーマットを指定できるから一時テーブルもC#もいらん
993:デフォルトの名無しさん
18/06/04 16:33:35.32 7NrmQXKK0.net
MonoのLinux版のインストールの仕方、ご教示いただけますと有難いです。宜しくお願い致します。
994:デフォルトの名無しさん
18/06/04 16:
995:48:48.54 ID:aK/XyO250.net
996:デフォルトの名無しさん
18/06/04 20:38:58.19 UeJV2JW90.net
>>972
ちょまど神を信仰すると天啓が降るぞよ
997:デフォルトの名無しさん
18/06/04 20:43:37.91 CVKZewtza.net
>>972
Monoなんか今時もう誰も使ってないし誰もメンテしてないでしょ
今は.NET Coreの時代
GUIが目当てなら諦めなさい
998:デフォルトの名無しさん
18/06/04 20:52:46.96 spHrXgPF0.net
UbuntuでもCentOSでもコマンド一発で入るがな
999:デフォルトの名無しさん
18/06/04 21:35:01.82 ztrCxIDM0.net
>>975
何言ってんの?
1000:デフォルトの名無しさん
18/06/04 21:48:02.60 9+XsYcyB0.net
Windows.Forms で WndProc を override して自分のコードを加えているのですが
デバッガで進めていくと、その中に突入してしまいます。
InitializeComponent の中みたいに、デバッガが入らなくする宣言みたいなものなかったですか?
1001:デフォルトの名無しさん
18/06/04 21:49:06.62 BHtXacEqa.net
>>978
debuggerstepthrough
1002:デフォルトの名無しさん
18/06/04 21:56:07.60 Uz3WpYRO0.net
>>975
Mono Releases | Mono
URLリンク(www.mono-project.com)
1003:デフォルトの名無しさん
18/06/04 23:32:00.59 054Q3E4O0.net
メインクラスとシリアル通信クラスの2つを使っています
シリアル通信の受信完了でイベントをメイン側に発生させることら可能でしょうか。受信完了したらメイン側から受信データを取りに行くようにしたいのですが。
1004:デフォルトの名無しさん
18/06/05 00:07:28.69 jE9yEXCCa.net
>>981
何でそうなるのw
発想が逆だってw
そのシリア通信を担当するクラスSがデータ受信を通知するイベントを発生させて
受信したデータを利用する側がSの参照を握ってイベンを受信すればいいでしょw
ついでに言えば受信データもEventArgs使って渡してしまえばいい
1005:デフォルトの名無しさん
18/06/05 00:33:25.52 liKML/cX0.net
しょうがねえだろ初心者なんだから
1006:976
18/06/05 07:18:51.35 ByFVOB9IM.net
>>982
やりたいのことはそれなんですよw
説明が下手ですいません
厳密にはデータを受けた事が分かったらメイン側は受信データの内容を解釈するクラスに送って処理分岐という形にしようかと思ってます。
用語や処理の知識がおいついてきてないので、あれを応用しようという感じにならず、調べるためのキーワードも出てこないです。
>>クラスSがデータ受信を通知するイベントを発生させて受信したデータを利用する側がSの参照を握ってイベンを受信すればいいでしょw
ここが具体的にどういう構文になるのでしょうか。
1007:デフォルトの名無しさん
18/06/05 08:07:17.14 D4M8TybKa.net
Signalを使っても作れるな。
1008:デフォルトの名無しさん
18/06/05 09:11:21.09 GjVlFAo70.net
>>963
PCをあまり使い慣れてない人とか、ボタンはシングルクリックでいいのをダブルクリックしちゃったりとかあるんだよなこれが・・・
1009:デフォルトの名無しさん
18/06/05 09:29:57.56 nr/+sOXHa.net
非同期じゃないならボタンイネーブル切ればいいだけじゃね
1010:デフォルトの名無しさん
18/06/05 09:32:16.99 nr/+sOXHa.net
すまん。忘れてくれ
1011:デフォルトの名無しさん
18/06/05 10:35:58.82 l/0/VM/ma.net
状態をGUIだけに持たせておくのはおかしいといつか思うはず
1012:デフォルトの名無しさん
18/06/05 12:11:20.04 vCTdp4Eha.net
>>984
class FrameReceivedEventArgs:EventArgs
{
public byte[] Frame{get; private set;}
....
}
class CommunicationPort
{
public even EventHandler<FrameReceivedEventArgs> FrameReceived;
....
}
class FrameDecoder
{
public FrameDecoder(CommunicationPort c}
{
c.FrameReceived +
1013:= CommunicationPort_FrameReceived; } private void CommunicationPort_FrameReceived((object sender, FrameReceivedEventArgs e) { .... } .... }
1014:デフォルトの名無しさん
18/06/05 12:44:05.86 eGZjT6RJM.net
>>990
引数に渡されたものを弄るのは行儀の悪い設計
IReceiverインターフェイスみたいなのを用意してport.AddReceiver(decoder)とするか、
>>984の言葉通りにいったん双方のクラスの外でイベントハンドラで受けて仲介したほうがいい
1015:デフォルトの名無しさん
18/06/05 12:51:41.81 eGZjT6RJM.net
>>990がなぜ行儀が悪いか補足しておこうか
普通、オブジェクトを別のクラスのコンストラクタに渡すとき、プログラマは 受け取った側→引数側 の向きの参照ができることを期待する
ところが、>>990だとそれが逆なんだよ
new FrameDecoder(this.port) としただけで、portがGCされないかぎり作り捨てたはずのFrameDecoderがGCされないという、非直感的なコードになるわけ
1016:デフォルトの名無しさん
18/06/05 12:55:30.14 vCTdp4Eha.net
何言ってるのかさっぱりわからん
よくわからん思考回路だな...
1017:デフォルトの名無しさん
18/06/05 13:09:28.12 GjVlFAo70.net
言い回しがようわからんが
>>990みたいなのするのが解放されないオブジェクトを量産するっていうのはなんとなくわかる
1018:デフォルトの名無しさん
18/06/05 13:11:38.32 vyKZFDS5a.net
>>993
分からないならイベントというものを正しく理解してないんじゃないかな
ボタンのクリックイベントをフォームが受け取れるのは、ボタンがフォームへの参照を(実際には間にデリゲートが入るので間接的にだが)持ってるから
基本的に、引数に渡ってきたものに自分自身を登録するのは避けたほうがいい
オブジェクトのライフタイムが非常に分かりにくくなるから
1019:デフォルトの名無しさん
18/06/05 13:53:28.61 UBCugO63M.net
reactive extensionsって.NET発祥なのに使う人少ないよね
1020:デフォルトの名無しさん
18/06/05 15:23:49.06 n583dJR10.net
>>974
ちょまど神って???状態でしたので調べてみました。
一つ知識が増えました。ありがとうございます。
1021:デフォルトの名無しさん
18/06/05 15:24:19.24 n583dJR10.net
>>975
そうなんですか。。。
NET Coreっての調べてみます。どうも有難う御座います。
ちょど昨日 GUI って何だ??って検索したばかりでした。
3日前からプログラムの勉強をはじめたばかりで。。。
1022:デフォルトの名無しさん
18/06/05 15:24:34.93 n583dJR10.net
>>980
ありがとうございます。TRYしてみます。
この掲示板すごーい!!皆様に感謝です。
1023:デフォルトの名無しさん
18/06/05 16:15:32.44 vCTdp4Eha.net
>>994
ないないw
イベントの購読解除はリークの原因になるのはその通りだけど、
それは>>991が主張するように、イベントを発生するオブジェクトを引数で受け取ったかどうかと無関係。
>>995
俺は理解してないのは君の方だと思うよw
その君のいう俺様ルール、何が悪いのかさっぱり分からない
そもそも今はそんな話をしてるんじゃないw
単に質問者の参考になるかもしれんコードの骨組みを示しただけw
1024:デフォルトの名無しさん
18/06/05 16:16:25.51 vCTdp4Eha.net
あ、
× イベントの購読解除
〇 イベントの購読解除忘れ
1025:デフォルトの名無しさん
18/06/05 19:31:17.11 70UTtyrn0.net
次スレたててみる
1026:デフォルトの名無しさん
18/06/05 19:33:22.39 70UTtyrn0.net
ふらっと C#,C♯,C#(初心者用) Part138
スレリンク(tech板)
たった
議論は他のところでよろしく
1027:デフォルトの名無しさん
18/06/06 00:18:56.95 +J9HGVUKa.net
>>1000
想像力のない人だなあ
>>990だと、イベントハンドラの登録を解除しない限り、FrameDecoderが不要になっても
登録先のCommunicationPortよりも先にGCされることは絶対にない。
じゃあ不要になったらイベントハンドラを登録解除できるようにしよう。いつ解除する?
それはFrameDecoder自身には分からない。知
1028:っているとしたら、それは>>981のいうメインクラスだろう。 登録解除するにはFrameDecoderクラスのDisposeメソッドを呼べ、という仕様にするか? 結局、985のFrameDecoderを正しく扱うには、メインクラス側がそういうクラス外から見ただけでは想像できないFrameDecoderの気難しい仕様を理解した上で、 必要に応じて明示的な解放を行わなくてはならない。 そんなことをするくらいならメインクラス側で明示的に登録・登録解除をやったほうが遥かに素直で分かりやすい。
1029:デフォルトの名無しさん
18/06/06 00:26:33.34 D75pa1n0a.net
質問いいですか?
1030:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 60日 6時間 46分 14秒
1031:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています