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

■ このスレッドは過去ログ倉庫に格納されています
2019/05/16(木) 19:28:06.27ID:s+6oZKe00
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■関連スレ
C#, C♯, C#相談室 Part93
http://mevius.5ch.net/test/read.cgi/tech/1492818720/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/
■前スレ
ふらっと C#,C♯,C#(初心者用) Part142
https://mevius.5ch.net/test/read.cgi/tech/1551908141/

■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/index
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
-
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2019/06/18(火) 14:34:26.70ID:H7tttB9U0
C# でセレニウム(Chrome)を操作しています。
この時に

ページを復元しますか?
Chromeは正しく終了しまsんでした
障害レポートと使用統計データ・・・


というメッセージが出て邪魔です。
これを出ない様に出来ないでしょうか?
2019/06/18(火) 15:07:21.28ID:6gzOVRYwd
>>535
再現可能な必要最小限のプロジェクトを共有して
2019/06/18(火) 16:06:35.49ID:H7tttB9U0
>>536
再現しないですかね?
普通にC#+ChromeDriverです。
2019/06/18(火) 16:35:19.94ID:6gzOVRYwd
しないよ
2019/06/18(火) 18:08:04.60ID:WG6tLdsV0
ずーっとセレニウムと格闘してんねw
540デフォルトの名無しさん (ワッチョイ 337b-FOz1)
垢版 |
2019/06/18(火) 18:35:30.59ID:lLW7uP7d0
>>537
ChromeDriverのことはChromeDriverのForumで聞けよ
https://groups.google.com/forum/#!forum/chromedriver-users
2019/06/18(火) 19:51:09.93ID:9LNNY8IFM
C#でDB操作時かつトランザクション使用時のコミットやロールバックを書く場所と、例外発生時の処理の止め方について質問させてください

DB内のデータをC#のDataGridViewにバインドし編集したのち登録や削除を行う課題をしているのですが、
コミットやロールバックを書く場所や、例外発生時に処理を止める方法がよくわかりません
今までメソッドの処理を中断するときはreturnを使えば良いと思っていたのですが、私に課題を出していただいてる方にそのやり方ではないと言われました
どうやらthrowを使うパターンもあるらしいのですが調べてもよくわかりません

わかりにくい文章で申し訳ありませんがヒントだけでもいただけたら嬉しいです
どうかよろしくお願いします
2019/06/18(火) 20:01:43.07ID:z/sE9uve0
>>541
throwはこれ。例外を投げて場合によってはメッセージを入れるなどして呼び出し元でcatchさせたりする
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/keywords/throw
2019/06/18(火) 23:02:13.66ID:PmBejiWq0
Ruby で、Selenium WebDriver を使えば?

Chrome Driver は、ちょくちょく変わるよ。
それに、Chrome も、知らない間に、バージョンアップされてる!

自分のChromeが、バージョンアップされた時に、
新しいChrome Driverにしていないと、バージョンの不一致により、エラーで落ちる!

自分のChromeのバージョンを見て、もしバージョンアップされていれば、
そのバージョンに合った、Chrome Driverに変えてください!
2019/06/18(火) 23:13:17.82ID:PmBejiWq0
それと、5ch みたいに、空のHTML を送ってきてから、
Ajax で内容を取得するようなサイトは、
30秒ぐらい待たないと、内容が取得できないこともある

それと、5chはバグが多いから、ある日、突然動かなくなる。
IE では、フリーズするし

サイトのバグで動かなくなることも多いから、
example.com とか、色々なサイトで、使ってみる事!
2019/06/18(火) 23:17:03.81ID:H7tttB9U0
>>543 >>544
Chromeがマスト条件なんですよね。。。
2019/06/19(水) 00:25:52.80ID:SHnWP/2E0
>>545
そいつは自分の言いたいことを言うだけだから、会話しようとしても無駄だぞ
2019/06/19(水) 00:43:45.23ID:cBT9gst5a
chromeコンテナ使えよ
2019/06/21(金) 10:51:14.98ID:+Ex9QBom0
DataGridViewの列にDataGridViewImageColumnを設けています。
ネットからダウンロードしたエロ画像をローカルに保存して
DataGridViewのその列に1.jpg〜5.jpを一覧表示します。

DataGRidView.DataSource = ero_DataTable;

参照している画像
c:\dat\downloaded_files\1.jpg 〜 2.jpg

再び別の画像をダウンロードし
DataGridViewにレンダリングする為に、まず最初にローカル画像を削除しようとすると

「別のプロセスで使用されているため、プロセスはファイル '1.jpg' にアクセスできません。」

というエラーメッセージが表示されてしまいます。

ローカルの画像を削除した後で、新しい画像をネットからダウンロードしてローカルに保存し
1〜***.jpgとして保存し、DataGridViewから参照したいのですが、何か良い方法はないでしょうか?
2019/06/21(金) 10:52:25.51ID:LVq54M8sp
とりあえずcloseだな。
2019/06/21(金) 11:05:23.63ID:+Ex9QBom0
>>549
Closeはインテリセンスにいずれも出ませんでした。。。

困ってます。教えてくださいm(_)m
2019/06/21(金) 11:11:30.32ID:LVq54M8sp
じゃあ、usingで括る
2019/06/21(金) 11:23:43.41ID:kqcCd+WN0
DataTableの画像列をtypeof(Image)とかtypeof(Bitmap)でやってるなら、
代わりにtypeof(byte[])にして、
行を追加するときにBitmapオブジェクトを追加するんじゃなくて
File.ReadAllBytesしたバイト配列を追加するようにする
2019/06/21(金) 11:46:36.87ID:+Ex9QBom0
ありがとうございます。
試してみます!


因みに現在は、こういう感じのコードでDataGridViewには画像を表示しています。

int i_data_count = 5;
for (int i = 1; i <= i_data_count; i++)
{
dgv_erogazou["ERO_IMAGE", i - 1].Value = new Bitmap("C\data\" + i.ToString() + ".jpg");
}
2019/06/21(金) 12:56:06.44ID:LVq54M8sp
C#あるあるだな。
いつファイルを解放して良いのか分からないからいつまでもファイルを開いたままなんじゃね?
関数が中でなんとかすれば良いのに融通がきかなよなw
2019/06/21(金) 13:31:59.07ID:+Ex9QBom0
>>554
はい。
しゃーないので、アプリ起動時にすべてのローカルファイルを削除する処理を入れることにしました。

再取得時には、 ファイル名をプラス1インクリメントしてローカルに保存しまくります。
2019/06/21(金) 14:05:44.74ID:oHxDGzCo0
いや、不要になった時点でファイルをちゃんと閉じればええやん
2019/06/21(金) 16:12:50.06ID:g5FK/rwid
>>554
横着せずに不要になったら自分で閉じろよ
2019/06/21(金) 21:14:35.05ID:41J0QDC70
>>553
DataSourceにするのなら>>552が適切な回答だけど補足しておくとImageクラス(下位クラスのBitmapも)の面倒な仕様のせい
表示中の画像ファイルが削除できない問題の解決法
https://dobon.net/vb/dotnet/graphics/drawpicture2.html
他の解決法としてはインスタンスの内容をコピーして元の(ファイルをつかんでいる方の)インスタンスをDisposeしたりImageConverter経由で画像を取得したりする
2019/06/21(金) 21:53:59.45ID:LVq54M8sp
ファイル操作とbitmap操作を別々にやればいいんだろ?
分かってるよめんどくさいんだよ。
2019/06/21(金) 21:55:05.08ID:LVq54M8sp
むしろ取り出したら閉じてくれよ糞仕様だよな。
2019/06/21(金) 22:09:21.22ID:+Ex9QBom0
>>558
DataGridViewの中のImageColumnだからそれだとできないのでは?
2019/06/21(金) 23:28:05.29ID:JQSabSWL0
その後使うのに勝手に閉じるほうがクソ仕様じゃん
用途理解せず間違った使い方して仕様に文句言うってw
2019/06/21(金) 23:32:45.71ID:fAAfMpwpa
>>560
お前さんの思うようにならないこの世の中は、糞仕様の最たる物だろうね
2019/06/21(金) 23:50:02.71ID:r7op1kHj0
使うのは画像データで、読み取ったファイルは要らないから閉じてよ。
って話だろ?
2019/06/22(土) 00:10:22.86ID:0zozUz1q0
>>561
Bitmapを入れるだけだからできないってのはありえない
例えばImageConverter経由で直に入れる場合
dgv_erogazou["ERO_IMAGE", i - 1].Value = (Bitmap)new ImageConverter().ConvertFrom((byte[])System.IO.File.ReadAllBytes("C:\data\" + i.ToString() + ".jpg"));
2019/06/22(土) 00:22:05.59ID:RCotbW9/0
>>565
詳しいですね。試してみます。
2019/06/22(土) 09:51:37.11ID:sRxgpvPlM
>>564
画像データ変更してSaveするかも知れんだろ
SaveとかしないんならFileStream作ってコンストラクタに渡せばいいだけ
もちろんFileStreamは自分で閉じろよ
2019/06/22(土) 20:13:32.14ID:RCotbW9/0
>>565
ありがとうございます!!!出来ました!!
すばらしい!!そういう方法があったのですね!!!
しっかり画像の削除できました!!!
2019/06/22(土) 20:22:58.28ID:kyoGZvmZ0
えっちな奴め
2019/06/22(土) 20:25:30.34ID:oSCB+4xW0
えっち駆動開発の何が悪いんですか
2019/06/22(土) 20:36:08.91ID:Ox8nDO+0M
直ぐにdefunctになる事
2019/06/22(土) 21:32:06.83ID:q0mPajE40
我がエロは永久に不滅です
2019/06/22(土) 21:36:35.73ID:RCotbW9/0
よしこれでエロ画像クローラーできる
2019/06/23(日) 15:09:33.41ID:4oGZ8zjy0
WEBのエロ画像収集のためのエロボット作るのにC#は向いてますか?
向いていないなら何言語や何のフレームワークがオススメですか?
2019/06/23(日) 15:41:05.03ID:4589uE1UM
>>574
エロは偉大だからな。
当然C#で可能。
2019/06/23(日) 19:50:32.93ID:XYuZEt+Z0
>>574
AngleSharpっていう便利なライブラリを使うと色々と捗るよ
2019/06/24(月) 07:04:12.89ID:INU2Nep40
>>576
こんなエロボットフレームワークがあるんですね
もう爆発寸前なので助かります
さー調査と設計だ
2019/06/25(火) 00:07:05.16ID:UHHkgEL+0
Guid構造体はなぜnullと比較可能なんでしょうか?
2019/06/25(火) 01:31:20.19ID:KoYuAQ6u0
>>578
nullの比較できるというのは気のせいだね
2019/06/25(火) 03:29:25.92ID:4JR3abKur
どの値型でもnullと比較する式は書けるが
Nullable以外だと結果は常に非null、じゃなかったっけ
2019/06/25(火) 10:31:07.49ID:6gRatuk7p
構造体なんて無いから。
常に実体がやり取りされているんだからnullの状態なんか無いよ。
2019/06/25(火) 11:54:15.85ID:M3mY4uqKd
構造体はあるやろ
2019/06/25(火) 11:56:21.92ID:S47SJWtZM
ガイジに話しかけるな
2019/06/25(火) 12:24:38.17ID:hYWx9HjQ0
なつくぞ
585デフォルトの名無しさん (アウアウカー Sa5d-okmR)
垢版 |
2019/06/25(火) 12:26:46.14ID:fHxE1RgIa
WPFちょっとやってみたけどクソめんどくさく感じるんだけど慣れるとformアプリではもうやらないってなるもん?
2019/06/25(火) 12:59:02.90ID:dhEdiy5y0
そこまでではないけどFormsでListViewにバインディングできないことにうんざりするぐらいには
2019/06/25(火) 13:05:18.68ID:kPWnGZLKM
>>585
やればやるほど新たに面倒臭い概念が出てきて余計に面倒臭くなるよ
コントロールテンプレート、依存関係プロパティ、ルーティングコマンド、ルーティングイベント、デコレータ、エフェクト、VSM、色空間、Drawing系API、等々、WPFの魔境は果てしなく続く
現代における典型的なセカンドシステム症候群の事例としては貴重だから、どんな概念があるかを一通り眺めてみる分には損はない
一つ一つのアイデア自体は非常にスマートなもので、なるほどと感心するようなものが多く、フロントエンド設計の勉強にもなるしね
2019/06/25(火) 19:00:07.49ID:jHEFOU5uM
>>587
ちょっと書きづらいよね
あとから見る時も見辛いし
プリプロセッサでも作ろうかな
2019/06/25(火) 19:02:33.37ID:vtQg0q3N0
.NET Standardの中で.NET Coreから呼び出されたかどうか判断できます?
Environment.GetCommandLineArgs().First()の拡張子で判断くらいしか思いつかず
明確な方法があれば助かります
2019/06/25(火) 19:26:07.17ID:zsZioWuM0
>>589
なんでそんなことがしたいの?
2019/06/25(火) 19:46:04.41ID:vtQg0q3N0
>>590
HttpWebRequestの実装が恐ろしいので何かしら対策しようとしています
2019/06/25(火) 20:18:45.64ID:H0q3OQVA0
https://docs.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.runtimeinformation.frameworkdescription?view=netframework-4.8
これでどう?
2019/06/25(火) 20:28:52.74ID:vtQg0q3N0
>>592
ありがとうございます
Assemblyを辿ってそれっぽいのも見つかったのですが、こちらの方が簡単なので
参考にさせてもらいます
2019/06/26(水) 04:29:08.46ID:eFojmlDc0
>>585
慣れても仕事とかだと普通にwinform使う
なんだかんだとwpfはめんどくさく
学習コスト高いから
習熟した開発者が少なくて安易に使えない
595デフォルトの名無しさん (アウアウカー Sa5d-okmR)
垢版 |
2019/06/26(水) 08:07:26.56ID:u3TFQ+4na
>>587
>>594
ありがとう
開発手法としては理にかなってて割と好きではあるんだけども勉強してみて学習コストが高いと言われるているのはよくわかった。。
もう少し書籍なり充実してて将来性も有望なら頑張れそうだけど早くも心折れかけてる
2019/06/26(水) 08:16:17.91ID:PhRSMRl5d
仕事だとテストのしやすさが重要なファクターだからWPF一択だな
テストしなくていいよってとこならWinforms
2019/06/26(水) 09:16:39.11ID:xtHmKE3cM
WPFとMVVMを採用したからといってビューをテストしなくてよくなるわけじゃない
それWinFormsじゃ難しいッスwwサーセンww
が通用しなくなってビューの仕様が膨張しがちな分だけ、まず例外なくテスト工数は増えるよ
Passive Viewのような設計パターンを学べばWinFormsでもビューロジックの単体テストは可能
2019/06/26(水) 09:26:06.98ID:QHgmuWluM
ズレた会話を補正できるフレームワークをください
2019/06/26(水) 09:26:37.90ID:PhRSMRl5d
「テストのしやすさ」な
2019/06/26(水) 09:27:18.92ID:PhRSMRl5d
別にWinformsはテスト不可って言ってるわけじゃない
2019/06/26(水) 09:48:33.88ID:HSzkoapr0
.mobi もしくは .azw .azw3 のファイルを解凍?するライブラリってありませんか?
2019/06/26(水) 10:08:27.28ID:RqqyhRb10
nugetで検索してみればmobiはいくつか見つかるな
2019/06/26(水) 18:48:22.15ID:mLhKuAUca
言うほどお前らテスト書いておらんやろ
2019/06/26(水) 19:20:20.18ID:PhRSMRl5d
書いとるよー
2019/06/26(水) 19:22:39.39ID:UJGyHIPed
ビューのテストって何をテストするの?テキストがはみ出さないかとか?
2019/06/26(水) 19:25:49.92ID:sx0u8G1v0
asp.netのSQLServerアクセス部分でユーザーのアクセスが重なるとどうもDBアクセスに失敗するみたいなのですが、DBアクセス処理をstaticメソッドで書くのは悪手だったりするでしょうか?
607デフォルトの名無しさん (エムゾネ FFb3-br4T)
垢版 |
2019/06/26(水) 19:31:19.63ID:fmXddalaF
lock と retry 汁
2019/06/26(水) 19:40:03.93ID:PhRSMRl5d
>>606
コード晒してみ
2019/06/26(水) 19:46:46.69ID:sx0u8G1v0
>>608
会社かつ前任者のコードなので晒すのは難しいのですが、ASP.NETのようなwebアプリでstaticメソッドとか大丈夫かなと思いつつもダメな理由は説明できず
メモリ領域共有するんじゃなかったかな程度の認識です
2019/06/26(水) 19:52:43.34ID:sx0u8G1v0
ASPの者ですが、問題のメソッドが抱えるSQLはSELECTしかないのでデッドロックは無いと思います
呼び出し先のターゲットでエラーをキャッチしました
程度のログしか残って無いので、現象再現が難しく困っております
2019/06/26(水) 19:52:48.15ID:bHDlLtN30
アメリカ製品を著作権で保護する義務は無い。プロテクトをはずしたコピー
の流布を何人たりとも妨げてはならない。

福島原発爆発させたアメリカ人は、日本人に慰謝料を払え。
日本人は大切な農地を失った。一兆円の一億倍の金額を日本人に払う義務がある。
2019/06/26(水) 19:53:56.64ID:bHDlLtN30
頭がいい日本人は、プロテクトをはずし、流布できる。
アメリカ人に金を払う義務も義理も無い。
2019/06/26(水) 19:58:15.93ID:Yg3jjeyya
コピペマン参上!!!まで読んだ
2019/06/26(水) 19:58:53.91ID:PhRSMRl5d
>>609
どうやってDBにクエリ投げてるかも見ずに判断はできないよ
2019/06/26(水) 20:03:19.28ID:U8omILn4p
>>606
コネクションのクローズしとる?
2019/06/26(水) 20:04:01.32ID:Ah/Hy021a
Connectionインスタンスも共有してるというオチだろ
2019/06/26(水) 23:23:25.13ID:PXDML4haa
コネクション自体がstaticとか、コネクションがSessionに突っ込まれてるとかありそう
Librahack事件みたいなクソソースになってるんじゃなかろうか
2019/06/27(木) 07:00:32.10ID:nNrp6UFx0
エラーメッセージを取得して、それで検索すれば?
DB の実行計画を見るとか

一方が読み取りでも、他方が同時に書き込みしていれば、その間ロックされる

特定の時間帯に、時間の掛かるバッチ処理で、
長時間に渡って、表を更新しているかも知れないし
2019/06/27(木) 07:07:10.17ID:C3eSzJbL0
>>618
楽観的排他制御なら読み込みは出来るかなと思ってましたが色々確認しないとダメなのですね
2019/06/27(木) 08:45:24.16ID:v58kjs08M
レコードロックとテーブルロックを機能ごと指定させられたことあるけど
落ちないだけで本当に適切な仕様は自分で考えてねって設計書に書いてあった
フィールドに全体の件数と合計から算出する要素があって明らかに徒労なのに頑張った
2019/06/27(木) 08:49:39.03ID:S3Pv/OFX0
>>602
無かったのでKindleUnpackのPythonソースを読みながら自分でコード書いた。
画像データの取り出しだけなら簡単だったよ。
622デフォルトの名無しさん (エムゾネ FFea-RNYM)
垢版 |
2019/06/27(木) 11:02:50.04ID:te5kXF0fF
>問題のメソッドが抱えるSQLはSELECTしかないのでデッドロックは無いと思います

史上稀に観るアホ
触っちゃいけないレヴェル
2019/06/27(木) 12:10:15.36ID:8RLu6j/60
string str_url_test = "https://www.rarara.co.jp/xasdfs333ad/code/abcdefg/ref=112&;number=555";

//正規表現を定義
string anchor = "https://www.rarara.co.jp/.*/code/(?<code>.*?)/.*";

code の後の abcdefg

を抽出する正規表現を定義しました。

一応動いていますが、この正規表現の定義はスマートでない気がします。


Regex re = new Regex(anchor, RegexOptions.IgnoreCase | RegexOptions.Singleline);

for (Match m = re.Match(str_url_test); m.Success; m = m.NextMatch())
{
  string str_test = m.Groups["asin"].Value;
  Console.WriteLine(str_test);
}

スマートな定義を教えてください。
2019/06/27(木) 12:32:07.51ID:cRVxwV8ZM
まずスマートの定義をくれ
2019/06/27(木) 14:09:30.43ID:Q2Oxmr0fM
>>624
あーウゼー
2019/06/27(木) 14:20:45.08ID:nNrp6UFx0
Ruby で作った

[^/]+ は、/ 以外の文字が、1つ以上続く。
正規表現のスレで、聞いた方がよいかも

# 正規表現を、%r!〜! で囲むことで、/ を、\/ と、自動的にエスケープする。
re = %r!^http://www.rarara.co.jp/[^/]+/code/([^/]+)!

str = "http://www.rarara.co.jp/xasdfs333ad/code/abcdefg/ref=112&;number=555"

md = str.match( re )
puts md[ 1 ] #=> abcdefg。md[ 1 ] は、capture 部分
2019/06/27(木) 14:27:06.21ID:2+uL3o0i0
¥エスケープは@で
初心者を困らせる輩はrubyスレに消えて
628デフォルトの名無しさん (エムゾネ FFea-a57L)
垢版 |
2019/06/27(木) 14:45:42.13ID:A3w8sjPHF
仕様を小出しにするなカス
死ね
2019/06/27(木) 14:54:33.49ID:8RLu6j/60
>>626
ありがとうございます。
正規表現がシンプルでいいですね!
私も正規表現を極めたいものです。
2019/06/27(木) 14:57:15.00ID:8RLu6j/60
正規表現は苦手なんだよな。
いろいろなパターンで試して勉強するしかないかな。

効率的に勉強する方法はある?
2019/06/27(木) 15:07:03.52ID:nNrp6UFx0
Ruby, JavaScript あたりの正規表現のページを読めば、十分じゃないの?

先読み・後読みは、難しいから無視する。
その代わりに、[^a]+ みたいな、a以外の文字が、1つ以上続くなどの表現を使って避ける
2019/06/27(木) 22:42:48.18ID:EN7VAxwO0
DataGridViewなんですが、Win10で描画がものすごく遅いのは何とかなりませんか?
もちろんオンボのおんぼろノートなのが悪いのですが
Win10上のゲストXPのほうが断然早いのは納得できません
2019/06/27(木) 23:12:47.92ID:oiNM/LxL0
>>632
DoubleBufferedプロパティをtrueにする
2019/06/28(金) 00:28:54.58ID:DioESCVe0
C# +Selenium で headless でブラウザを開くと遅くないですか???
2019/06/28(金) 06:58:11.47ID:D2ExxOf/0
Windows10, Ruby, Selenium WebDriver で、どのブラウザでも、

最初の起動には、10秒ぐらい掛かる。
2回目以降は、5秒ぐらい
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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