[過去ログ] ふらっと C#,C♯,C#(初心者用) Part141 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
580: (ワッチョイ 2d61-VUEs) 2019/02/08(金)18:28 ID:xI0+6qTx0(5/6) AAS
C#も汚い言語になってきたなー
581: (ワッチョイ 2d61-VUEs) 2019/02/08(金)18:32 ID:xI0+6qTx0(6/6) AAS
なんか、JavaScript そっくりになってきる。JavaScript は汚いのにな・・・。
582: (スプッッ Sd82-bIN/) 2019/02/08(金)18:49 ID:5c9t7/Awd(1) AAS
汚いとは?
583
(2): (ドコグロ MMd5-/S9r) 2019/02/08(金)18:56 ID:wLzz2paeM(3/6) AAS
JavaScriptそっくりもクソも、JavaScriptのasync/awaitはC#が発祥だぞ
それをJavaScriptもPythonもKotlinもそっくりそのまま真似した
汚い機能だと感じる君の感覚は否定しないが、好みは別にして非同期プログラミングのデファクトスタンダードであるのは事実だ
584: (ワッチョイ a1d2-hHwN) 2019/02/08(金)19:49 ID:lL88DpXz0(1) AAS
割り込んですまない。
SolrNet を使ったことあるヤツがいたら知恵を貸して欲しい。

SolrNet を使ってこんなことをやってみた。

Startup.Init<[適当なモデルクラス]>( [SolrのサーバーURL] );
var solr = ServiceLocator.Current.GetInstance<ISolrOperations< [適当なモデルクラス] >>();

まあごく当たり前の初期処理なのだが、実行すると2行目の Current の中身が null でヌルポエラーになる。

原因がわからなくてしばらく悩んで、GitHub にあるサンプルコードをダウンロードしてきてコピペしても同じだったのだが、
省6
585
(2): (アウアウエー Sa0a-gVV1) 2019/02/08(金)20:41 ID:OM4aCJGta(1/2) AAS
>>568
一応これでできるけど、これがベストかどうかは知らん
private static async Task WaitTillAsync(DateTime dt)
{
  var now = DateTime.Now;
  var span = dt > now ? dt - now : TimeSpan.Zero;
  await Task.Delay(span);
省8
586
(1): (ワッチョイ aeda-OF6d) 2019/02/08(金)21:46 ID:tTA+g4g80(1) AAS
>>585
それだとNTPで時計合わせが発生したらズレる
素直にSystem.Timers.Timerで500ms位ごとにElapsedさせて、
指定時刻を過ぎてないか見るのが簡単。

マイクロ秒まで精度出したいっていうのなら、そもそも使うOS間違ってる。
587: (ワッチョイ 82ad-bIN/) 2019/02/08(金)22:17 ID:uDI35RTx0(1) AAS
>>583
Rustは結局どうなったんだっけ?
588
(1): (ワッチョイ a205-BpIe) 2019/02/08(金)22:27 ID:DCBa2RJt0(2/3) AAS
みなさんありがとうございます。
一応自分で書いていたのは>>585さんに近くて設定時刻前ならそのまま、設定時刻を過ぎてたら一日足して現在時刻との差をawait Task.Delayしました。
タイマーの精度はそんなに必要なく1分間隔で大丈夫で、24時間起動で毎日朝8時から夕方17時までプログラムを止めるみたいな感じです。
同じプログラムを大量に起動するので処理はなるべく軽いのが希望で
ループ処理で毎分チェックするようなのは重いイメージがあるのですが大丈夫でしょうか?
また、時計合わせが発生したらズレるというのはどういうことでしょう?
589: (ドコグロ MMd5-/S9r) 2019/02/08(金)22:30 ID:wLzz2paeM(4/6) AAS
>>588
ポーリングが嫌ならタスクスケジューラを使えばいい
プログラムから簡単に登録できる
590
(2): (アウアウエー Sa0a-gVV1) 2019/02/08(金)22:53 ID:OM4aCJGta(2/2) AAS
>>586
えらい重箱の隅だけどまあそうだねw
private static async Task WaitTillAsync(DateTime dt)
{
  await Task.Run
  (
    () => { while (dt > DateTime.Now) Thread.Sleep(500); }
省2
591: (ドコグロ MMd5-/S9r) 2019/02/08(金)23:23 ID:wLzz2paeM(5/6) AAS
>>590
プロセスが落ちることを想定せよ
NTPなんかより遥かに影響を受ける可能性の高い事象である
やり直し
592
(1): (オッペケ Srd1-da9w) 2019/02/08(金)23:32 ID:Waqd0NNdr(1) AAS
どのへんでプロセス落ちるの?
593
(1): (ワッチョイ a205-BpIe) 2019/02/08(金)23:33 ID:DCBa2RJt0(3/3) AAS
>>590
Thread.Sleepの所Task.Delayにしても大丈夫でしょうか?
594
(1): (ドコグロ MMd5-/S9r) 2019/02/08(金)23:42 ID:wLzz2paeM(6/6) AAS
>>592
どこでも
質問者は24時間起動って言ってるんだから当然想定すべきだよ
595
(1): (アウアウエー Sa0a-gVV1) 2019/02/09(土)00:44 ID:jhOjUKEBa(1/4) AAS
>>593
もちろんいいと思うけど、

() => { while (dt > DateTime.Now) Thread.Sleep(500); }

async () => { while (dt > DateTime.Now) await Task.Delay(500); }

に文字数が増えて、使うTaskも増えて、かといってメリット無いような気が
596: (ワッチョイ 2de3-VUEs) 2019/02/09(土)00:46 ID:3dJvh84X0(1) AAS
await, async は、簡単なことを難しくしてしまう。
597: (ワッチョイ 2d61-VUEs) 2019/02/09(土)00:52 ID:8aikkfMy0(1/3) AAS
C#は、もはや、C++やCとは似ても似つかなくなってしまってる。
control flow がめちゃくちゃ複雑で、何をやってるのかわからなくて
生ポインタの1,000倍危険。
598
(1): (アウアウエー Sa0a-gVV1) 2019/02/09(土)00:58 ID:jhOjUKEBa(2/4) AAS
() => { while (dt > DateTime.Now) Task.Delay(500).Wait(); }
の方が素直か。
何かTask.Delay使った方がいい理由ってあるかな
599
(1): (ワッチョイ 9140-/WZR) 2019/02/09(土)01:13 ID:dvMZ7Shb0(1/3) AAS
PDFファイルからテキストを抽出する方法でオススメはありますか?
調べたところiTextSharpとPDFBoxは見つかりましたが、たまに読めないPDFがあるのが残念です。
600: (ワッチョイ 2d61-VUEs) 2019/02/09(土)01:45 ID:8aikkfMy0(2/3) AAS
C# の async, await を開発したのはこんな人。写真付き:

外部リンク:www.orioninc.com
601
(1): (スフッ Sd22-XlDt) 2019/02/09(土)01:49 ID:kYloXoqBd(1) AAS
>>599
一番確実なのは製品版のAcrobatを使うことではないでしょうか
602
(1): (ワッチョイ cd0c-feI+) 2019/02/09(土)01:49 ID:U3ljW3xz0(1/3) AAS
>>598
この流れでもう二回書かれてるけどawaitしないとその間メッセージキュー処理できないでしょ
あとTimer使えば済むロジックを自分で書かないの
603
(1): (ワッチョイ 9140-/WZR) 2019/02/09(土)01:55 ID:dvMZ7Shb0(2/3) AAS
>>601
私の技術力が低いので初心者用スレで質問させていただいたのですが、それを購入したとして初心者でもネットで調べる程度で可能ですか?
上に書いたiTextSharpとPDFBoxは、ネットに転がってたソースを丸パクリでやりました。
604
(1): (ワッチョイ bd5f-FtKs) 2019/02/09(土)02:16 ID:UMSUoHVI0(1/2) AAS
>>595
後者はTask.Run()が不要だから、むしろタイプ量は減るよ。

await Task.Run( () => { while (dt > DateTime.Now) Thread.Sleep(500); } );

while ( dt > DateTime.Now ) { await Task.Delay(500 ); }
605: (ワッチョイ cd0c-feI+) 2019/02/09(土)02:39 ID:U3ljW3xz0(2/3) AAS
ん? Task建ててる部分見てなかった、俺のレスのは忘れて
606: (ワッチョイ bd5f-FtKs) 2019/02/09(土)02:40 ID:UMSUoHVI0(2/2) AAS
後、細かいことを言うと、
Task.Run()でThread.Sleep()だとSleep()してる間もThreadPoolのThreadを1つ占有してしまうが、
Task.Delay()ならその間はThreadPoolのThreadが開放される。
607: (アウアウエー Sa0a-gVV1) 2019/02/09(土)02:47 ID:jhOjUKEBa(3/4) AAS
>>602
スリープするのはUIスレッドじゃないのでそれはありませんよw

これ、ちょっと前にも書いたけど、Timerを使った方が可読的になる場合ももちろんあるし、
そうでない場合もある。

つまり、別に車輪を再発明してるんじゃありません。

質問者がどっちのケースかは分からない
608: (アウアウエー Sa0a-gVV1) 2019/02/09(土)02:54 ID:jhOjUKEBa(4/4) AAS
>>604
ああ、なるほど。
正直非同期メソッドって書きなれてないから目からうろこ
609
(1): (ワッチョイ e247-XlDt) 2019/02/09(土)03:02 ID:zy9w8qc80(1/2) AAS
>>603
SDKは自由にダウンロードできるからドキュメント見て自分で判断しておくれ
外部リンク[html]:helpx.adobe.com
610: (ワッチョイ 412d-Ctdi) 2019/02/09(土)07:11 ID:Bzu1ndzH0(1/3) AAS
待つだけの処理で1スレッド消費しちゃうのは良くないな
かといって単純にAwaitを使っただけのコードだと、どこかでデッドロックが生まれる可能性が増えたり、待てずにメインスレッドが抜けてしまったりする危険が出てくる
ここはコルーチンしか無いでしょ!!コルーチン最高!!!!
611: (ワッチョイ 82ad-bIN/) 2019/02/09(土)07:16 ID:rkd3w/wq0(1) AAS
タスクスケジューラにしとけよ
612: (ワッチョイ 412d-Ctdi) 2019/02/09(土)07:35 ID:Bzu1ndzH0(2/3) AAS
タスクスケジューラはC#自体の機能じゃないからな、漢は黙ってコルーチン!!!
613: (ブーイモ MMf6-5dzK) 2019/02/09(土)07:42 ID:onf/I33CM(1/2) AAS
私、待つわ〜何時までも待つわ〜
例え対象スレッドが落ちていても〜
614
(1): (オッペケ Srd1-da9w) 2019/02/09(土)08:32 ID:6iVlgEPUr(1) AAS
>>594
それ非同期関係なくない?
615: (ワッチョイ 6e63-awc4) 2019/02/09(土)08:45 ID:O6W3Dl2k0(1/4) AAS
>>583
kotlinはそっくりそのままと言えるものではなく
奇怪な何かになってる
616: (ワッチョイ 6e63-awc4) 2019/02/09(土)08:47 ID:O6W3Dl2k0(2/4) AAS
>>614
次はWindowsが落ちることを想定しよう
617
(1): (ワッチョイ 86ef-gf/b) 2019/02/09(土)11:10 ID:YnD8XTKW0(1/3) AAS
c++はc#の何倍難しいですか?
618: (ブーイモ MMf6-5dzK) 2019/02/09(土)11:13 ID:onf/I33CM(2/2) AAS
C# → C++/MFC なら大して変わらないかも
619: (ワッチョイ 467d-4IkZ) 2019/02/09(土)11:13 ID:902JN4xl0(1) AAS
256バイ
620
(1): (ドコグロ MMca-/S9r) 2019/02/09(土)11:17 ID:k8PbCSORM(1) AAS
言うほど難しくはない
同じものを作るために3倍程度の工数がかかるだけ
621
(2): (ワッチョイ 86ef-gf/b) 2019/02/09(土)11:24 ID:YnD8XTKW0(2/3) AAS
個人で使うものではない感じですか?
openglを扱うためには裂けては通れないようですが
622: (ワッチョイ 6e7b-HWB1) 2019/02/09(土)11:31 ID:k4TwxJVN0(1) AAS
>>621
opengl c# でググったらいろいろヒットするが
DllImportがめんどくさいのはわかるが避けて通れない理由があるのか?
C++でやらなきゃって思うのならC++のスレへどうぞ
623
(1): (ワッチョイ 86ef-gf/b) 2019/02/09(土)11:35 ID:YnD8XTKW0(3/3) AAS
ラッパーのほうが情報すくなくて難しそうなので
624: (ワッチョイ cd0c-feI+) 2019/02/09(土)11:39 ID:U3ljW3xz0(3/3) AAS
>>621,623
> 個人で使うものではない感じですか?
個人で使うのになんら障害はない

> openglを扱うためには裂けては通れないようですが
OpenTKとかあるし別に必須じゃない

> ラッパーのほうが情報すくなくて難しそうなので
じゃあC++で学習すれば?
625
(1): (ワッチョイ 6e63-awc4) 2019/02/09(土)11:41 ID:O6W3Dl2k0(3/4) AAS
このレベルでOpenCVに手を出して何ができるんだって感じもある
チュートリアルを通してやるのがせいぜいか
626
(1): (ワッチョイ 912f-XlDt) 2019/02/09(土)12:15 ID:yiDYsHnZ0(1) AAS
>>625
OpenCVとOpenGLは別物だよ
627: (アウアウウー Sa05-BKX2) 2019/02/09(土)12:25 ID:6TG0Gkwea(1) AAS
>>617
テンプレートの深みにはまらなければC++のほうが素朴で簡単
628: (ワッチョイ 8dda-feI+) 2019/02/09(土)12:37 ID:PsW6cRYq0(1) AAS
この人3ヶ月前からこういう質問ばっかしてる
一体いつになったら手を動かすんだろう
629: (ワッチョイ 412d-Ctdi) 2019/02/09(土)13:27 ID:Bzu1ndzH0(3/3) AAS
やっぱコルーチンだわ
コルーチン質問がいくらあっても全くロックが起きとらん!スレッドを丸々潰してもいない!最強!!
630: (ワッチョイ 2d61-VUEs) 2019/02/09(土)14:30 ID:8aikkfMy0(3/3) AAS
>>620
そんなかからん。せいぜい 2割り増し程度。
でも、ブラックボックスが少なくて何やってるのか分かりやすいので、
はまりにくいかも。

C#のasync, awaitなんて初心者が理解できるものではない。
631: (ワッチョイ 6e63-awc4) 2019/02/09(土)14:37 ID:O6W3Dl2k0(4/4) AAS
>>626
ごめん
俺の目が悪かった
632: (ワッチョイ e247-XlDt) 2019/02/09(土)15:30 ID:zy9w8qc80(2/2) AAS
C#はクラスライブラリも簡単に逆アセンブルできるからブラックボックスは少ないよな
633: (ワッチョイ 9140-/WZR) 2019/02/09(土)16:47 ID:dvMZ7Shb0(3/3) AAS
>>609
ありがとうございます。
634
(1): (ワッチョイ 8261-VUEs) 2019/02/09(土)22:52 ID:5t5ZiBxh0(1/2) AAS
WPF, Windows Form の二種類があったり、Xamarineを使うかどうかが
あったり、C#も複雑極まりないんだね。GDI がセンスがない関数群だったので
嫌われたこと、MFCが汚かったこと、Direct3Dが汚かったこと、COMが
汚かったこと、ActiveX がさらに訳分からなかったこと、の再来を感じる。
「非同期処理」もスレッドをいくつでも起こすタイプや、Poolみたいな
ことをやるタイプ、以外にいくつもあって、さらに最後に async, await
が Synax Suger になっているんだね。なんという複雑さ・・・。
省2
635
(1): (ワッチョイ 8261-VUEs) 2019/02/09(土)22:54 ID:5t5ZiBxh0(2/2) AAS
結局、.Net Standard が破棄されて、.Net Core だけが残るといううわさを聞いた
けど、やっぱり Xamarine が捨てられていくのかな。買収時点で最初から
予想されたことだけど。
636: (スフッ Sd22-XlDt) 2019/02/09(土)22:59 ID:VPSQr41Ud(1) AAS
またC#嫌いのお前か
637
(1): (ワッチョイ a1e7-snZf) 2019/02/09(土)23:07 ID:HZrCyM150(1) AAS
>>634
> 「非同期処理」もスレッドをいくつでも起こすタイプや、Poolみたいな
> ことをやるタイプ、以外にいくつもあって
具体的には?
いくつもあるなら2,3挙げてみてよ
638: (ワッチョイ 8261-VUEs) 2019/02/10(日)00:07 ID:P1Q5YmOJ0(1/6) AAS
>>637
↓ ここを読んでくれ
外部リンク[html]:www.atmarkit.co.jp

数え方にもよるが、恐らく6〜8種類くらいあると思う。
639: (ワッチョイ 8261-VUEs) 2019/02/10(日)00:09 ID:P1Q5YmOJ0(2/6) AAS
多分、
1. Thread
2. ThreadPool
3. Event-based
4. Async Programming Model
5. Reactive Extensions
6. Task-based
省2
640: (ワッチョイ 9232-/WZR) 2019/02/10(日)00:09 ID:XpZrG1uz0(1) AAS
APM、EAP、TAPなんかを言ってるのかね? 単に時代の流れじゃないの
レガシーをタスクにする方法もあるし、.NETはネイティブスレッドではなかろう
開始元へ差し戻しが多いからawaitがあるだけで結局Task推奨になってると思うけど

議論が活発なのは結構だが、ぽこぽこ増えていく言語バージョンを見てると不安は抱く
641: (ワッチョイ bd5f-FtKs) 2019/02/10(日)00:32 ID:c9rRoNSM0(1/2) AAS
時代の流れだねぇ。
今ならTaskとasync/awaitだけ覚えておけば事足りる。
Rxも場合によってはあれば便利だけど。
642
(1): (ワッチョイ 8261-VUEs) 2019/02/10(日)00:46 ID:P1Q5YmOJ0(3/6) AAS
それは言い訳で、見通しが悪かったって事なんだ。
643: (ワッチョイ 6e63-awc4) 2019/02/10(日)00:53 ID:Mw20IJUM0(1) AAS
まあXamarin用済みなのは確か
644: (アウアウエー Sa0a-/S9r) 2019/02/10(日)00:58 ID:AzzfBWDja(1) AAS
async/awaitの効率は最近は大幅に改善されつつあるよ
ただし.NET Coreに限る
645: (ワッチョイ 8261-VUEs) 2019/02/10(日)01:03 ID:P1Q5YmOJ0(4/6) AAS
効率以前に、訳分からん。
設計した人が実は能力が足りないんだって。
646: (ワッチョイ 8261-VUEs) 2019/02/10(日)01:05 ID:P1Q5YmOJ0(5/6) AAS
アメリカ人はなめ過ぎてる。
独占的地位を利用して。
こんなくそ設計しやがって。
647
(1): (ワッチョイ e247-XlDt) 2019/02/10(日)01:12 ID:ys0otiK+0(1/3) AAS
(ワッチョイ 8261-VUEs)
この人、年中非同期処理が理解できないと繰り返し言ってんな
いい加減理解しろよw
648: (ワッチョイ cd0c-feI+) 2019/02/10(日)01:25 ID:bwecUq1Z0(1) AAS
良かったな
訳わからんものが他の言語にも波及したぞ

※非同期プログラミングの次回作にご期待ください
649: (ワッチョイ 8261-VUEs) 2019/02/10(日)01:38 ID:P1Q5YmOJ0(6/6) AAS
C# は VB と似ており、C++ とは似ても似つかない。
650: (ワッチョイ bd5f-FtKs) 2019/02/10(日)01:38 ID:c9rRoNSM0(2/2) AAS
>>642
17年の歴史があって、技術的トレンドを比較的積極的に取り込んできてる言語に
それを言うのは言いがかりというかお門違いだろうw
651
(1): (ワッチョイ e252-PL2D) 2019/02/10(日)02:34 ID:98Upnegk0(1/2) AAS
>>647
そいつにとっては、ぼくの理解できないもの=設計が悪い、だからな。
自分がバカだとは認められないんだろう。
652: (スッップ Sd22-bIN/) 2019/02/10(日)02:52 ID:LkwxzeRxd(1) AAS
>>635
破棄される?ソースは?
653
(1): (オッペケ Srd1-da9w) 2019/02/10(日)08:46 ID:uz05qYWIr(1) AAS
c#にはあってVBにはないものってないんだよな
.net CoreでもVB採用されてるし
654: (ブーイモ MMcd-5dzK) 2019/02/10(日)08:54 ID:fHBGeROaM(1) AAS
for文の挙動が違うだろ
655
(1): (ワッチョイ 2d61-VUEs) 2019/02/10(日)09:08 ID:YTe/5aEc0(1/4) AAS
>>651
スパゲッティーなアルゴリズムを作ってしまっただけなのに気付いてない。
理解できないのではなく、馬鹿馬鹿しくて腹が立つだけ。
頭のいい人は、もっと良い方法がすぐにひらめくから。
656: (ワッチョイ 822f-1zeQ) 2019/02/10(日)09:09 ID:o5rWkmWO0(1) AAS
>>653
unsafe
657: (ワッチョイ 412d-Ctdi) 2019/02/10(日)09:21 ID:0K2cdDeF0(1) AAS
>>655
君は「高卒の天才」ってやつかい?
658: (ワッチョイ 2d61-VUEs) 2019/02/10(日)09:24 ID:YTe/5aEc0(2/4) AAS
C# のこの書き方は、35年前の Microsofot の N88-BASIC の
def fn にそっくり

[C#]
int f(int n) => n >= 1 ? n * f(n - 1) : 1;

[N88-BASIC]
DEF FN名前 [ ( 引数名 { , 引数名 } ) ] =式

10 DEF FNZEIKOMI(P)=P*1.08
省2
659
(1): (ワッチョイ 2d61-umi9) 2019/02/10(日)09:51 ID:Ah0fiaOg0(1) AAS
ま、作ったアプリではなくソースコードを自慢するようになったらプログラマは引退したほうが良い
660: (ワッチョイ a9a7-OF6d) 2019/02/10(日)12:59 ID:7jl+t3as0(1) AAS
キブハブとかいう謎の団体に監視されてるからソースのエレガントさにも気が抜けない時代
1-
あと 342 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.022s