[過去ログ]
C#, C♯, C#相談室 Part95 (1002レス)
C#, C♯, C#相談室 Part95 http://mevius.5ch.net/test/read.cgi/tech/1508168482/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
772: デフォルトの名無しさん (オッペケ Sr0b-RXZG) [sage] 2020/02/06(木) 18:45:07 ID:ePr9F6TEr > forでないと書けないってコードが汚いだけの場合が殆ど そうは思わないけどw http://mevius.5ch.net/test/read.cgi/tech/1508168482/772
773: デフォルトの名無しさん (オッペケ Sr0b-RXZG) [sage] 2020/02/06(木) 18:54:05 ID:ePr9F6TEr >>769 これも一見もっともそうなことを書いてるけどよく見ると変だよね forでも書いてるならベンチ取る必要ない http://mevius.5ch.net/test/read.cgi/tech/1508168482/773
774: デフォルトの名無しさん (オッペケ Sr0b-RXZG) [sage] 2020/02/06(木) 18:55:11 ID:ePr9F6TEr linqでしか書けない人は最下層 forでしか書けない人はそのやや上 http://mevius.5ch.net/test/read.cgi/tech/1508168482/774
775: デフォルトの名無しさん (ブーイモ MMbf-gAEv) [sage] 2020/02/06(木) 19:33:48 ID:BIpKXfQOM forでしか書かない人は使い物にならないおじいさん 無理してでもLINQでしか書かないのはまだまだ研鑽が足りない 意識しなくても自然とLINQになってるのが達人プログラマ http://mevius.5ch.net/test/read.cgi/tech/1508168482/775
776: デフォルトの名無しさん (ワッチョイ d701-3aYi) [sage] 2020/02/06(木) 20:55:07 ID:WBT6cCNm0 POSTとかGETのレスポンス速度って、自分の回線速度と相手側のサーバー速度依存ですか? プログラムの処理でコンマ数秒でも早くする方法ってあったりします? http://mevius.5ch.net/test/read.cgi/tech/1508168482/776
777: デフォルトの名無しさん (オッペケ Sr0b-RXZG) [sage] 2020/02/06(木) 21:12:13 ID:ePr9F6TEr 普通はないよ アメリカとかにPOSTして帰って来てるんだとしたらそもそも物理的な距離も問題になる http://mevius.5ch.net/test/read.cgi/tech/1508168482/777
778: デフォルトの名無しさん (オッペケ Sr0b-RXZG) [sage] 2020/02/06(木) 21:16:32 ID:ePr9F6TEr どうでもいいけど回線速度と言うのも変な表現だな 帯域依存だな 最初のレスポンス自体が帰ってくる速度は同じだけど取れる帯域が広いと早くダウンロードが終わる http://mevius.5ch.net/test/read.cgi/tech/1508168482/778
779: デフォルトの名無しさん (ワッチョイ d72f-ndoi) [sage] 2020/02/06(木) 22:57:37 ID:O+zcmlkO0 ダウンロードの時間じゃなくてレスポンスの話だろ 帯域よりレイテンシのほうが問題だと思うが http://mevius.5ch.net/test/read.cgi/tech/1508168482/779
780: デフォルトの名無しさん (JP 0H4f-w9wO) [sage] 2020/02/07(金) 08:11:56 ID:EMrYQo7/H 相手側のサーバーまで全部依存ですよね ちなみに、普通にwebとかで見えてるサーバーは、必ずping返してくれるの? http://mevius.5ch.net/test/read.cgi/tech/1508168482/780
781: デフォルトの名無しさん (オッペケ Sr0b-glrA) [sage] 2020/02/07(金) 12:33:07 ID:etaMDs5Yr ping返さないサーバはいくらでもある http://mevius.5ch.net/test/read.cgi/tech/1508168482/781
782: デフォルトの名無しさん (アウウィフ FF9b-VM48) [] 2020/02/07(金) 17:30:10 ID:PWhN+bN7F >>776 htmlに埋め込まれてるアンカーを バックグラウンドで先読みするタイプのブラウザがあった 評判は悪いみたいだが http://mevius.5ch.net/test/read.cgi/tech/1508168482/782
783: デフォルトの名無しさん (アウアウカー Sa6b-Za6j) [sage] 2020/02/07(金) 20:27:13 ID:q5ptBTCZa フォームデータなのに? http://mevius.5ch.net/test/read.cgi/tech/1508168482/783
784: デフォルトの名無しさん (ワッチョイ 571d-uqPE) [] 2020/02/07(金) 23:07:36 ID:GxNDg+Fe0 【与沢翼】労働収入を高くしても無駄!税金でほとんど持っていかれますよ。 金持ちになるにはたった2つしか方法がない https://www.youtube.com/watch?v=A-5lQ2rDmc0 【与沢翼】サラリーマンとして生きるのはリスクでしかない。従業員は創業者に 利用されているだけだということに気づきなさい https://www.youtube.com/watch?v=uPoTvbr5VDk&t=78s 【与沢翼】「世の中は罠だらけ。これに気づかない人はカモにされ続ける。」【思考の革命】 https://www.youtube.com/watch?v=qUk7HFabMeQ&t=70s 【与沢翼】現状に対する疑問を持てない人はずっと辛い労働をして生きてください。 今自分達が不自由であるということに気づかない人はどうぞご勝手に https://www.youtube.com/watch?v=YGykF9IHv-w&t=41s 【与沢翼】時間を売るような働き方をしてはいけない。自分の24時間をどれだけ 増やせるかという発想で仕事しなさい。最終決定権がない仕事はビジネスとは呼べませんよ https://www.youtube.com/watch?v=g0WXpcqg4oA&t=51s http://mevius.5ch.net/test/read.cgi/tech/1508168482/784
785: デフォルトの名無しさん (ワッチョイ d735-oJhu) [] 2020/02/08(土) 18:20:20 ID:0YppiA+B0 OS:Rasbian Stretch ランタイム:Mono JIT compiler version 4.6.2 (Debian 4.6.2.7+dfsg-1) ソース:https://i.imgur.com/cFLOcYN.png パッケージ:https://i.imgur.com/bWRI0Zg.png エラー:Method 'System.Net.ServicePointManager.CloseConnectionGroups' not found. Windowsでは正常に動作します。 エラーの原因と解決策を教えてください。 http://mevius.5ch.net/test/read.cgi/tech/1508168482/785
786: デフォルトの名無しさん (ワッチョイ d735-oJhu) [] 2020/02/08(土) 18:23:37 ID:0YppiA+B0 AngleSharpを入れるとこのエラーがでます。 AngleSharpを入れるとバイナリのフォルダにSystem.***という大量のDLLができます。 http://mevius.5ch.net/test/read.cgi/tech/1508168482/786
787: デフォルトの名無しさん (ワッチョイ d735-oJhu) [] 2020/02/08(土) 18:24:23 ID:0YppiA+B0 ターゲットは.NET Framework4.6.1です http://mevius.5ch.net/test/read.cgi/tech/1508168482/787
788: デフォルトの名無しさん (オッペケ Sr0b-RXZG) [sage] 2020/02/08(土) 19:17:58 ID:1TiVu9qyr >>787 Linux用には.Net Framework 4.6.1はないんじゃない? .net coreと.net frameworkは別物 http://mevius.5ch.net/test/read.cgi/tech/1508168482/788
789: デフォルトの名無しさん (ワッチョイ d735-oJhu) [] 2020/02/08(土) 19:25:53 ID:0YppiA+B0 >>788 回答ありがとうございます。 Mono4.6.2と.NET Framework4.6.1は互換性ありませんか http://mevius.5ch.net/test/read.cgi/tech/1508168482/789
790: デフォルトの名無しさん (ワッチョイ d735-oJhu) [] 2020/02/08(土) 19:31:11 ID:0YppiA+B0 AngleSharpを入れるとそれを使用しなくても関係ないところでエラーが出る理由がわかりませんね http://mevius.5ch.net/test/read.cgi/tech/1508168482/790
791: デフォルトの名無しさん (オッペケ Sr0b-RXZG) [sage] 2020/02/08(土) 19:41:46 ID:1TiVu9qyr バージョンがあってないからだろ 初心者向けのふらっとスレに行け まず .Netにはいろいろ種類があると言うことをしり特性を知れ 次に.net standardが何か調べろ そして使いたいフレームワークが.net standardで何に当たるか調べろ 次にServicePointManager クラスが自分の使いたいフレームワークで使えるかどうかMSのサイトをみて調べろ http://mevius.5ch.net/test/read.cgi/tech/1508168482/791
792: デフォルトの名無しさん (ワッチョイ d735-oJhu) [] 2020/02/08(土) 19:54:30 ID:0YppiA+B0 こちらの質問は却下します http://mevius.5ch.net/test/read.cgi/tech/1508168482/792
793: デフォルトの名無しさん (オッペケ Sr0b-RXZG) [sage] 2020/02/08(土) 19:59:03 ID:1TiVu9qyr standardというパワー綴り http://mevius.5ch.net/test/read.cgi/tech/1508168482/793
794: デフォルトの名無しさん (ワッチョイ de89-GUQA) [sage] 2020/02/13(木) 11:12:59 ID:cLFC91tC0 startupでデフォルトのDB接続先でapp.CreatePerOwinContextを登録してるのだが 途中でDB接続先を変更出来たりしないですか? コントローラーのOnActionExecutingでfilterContext.HttpContext.GetOwinContext().Set(wkUserManager); で変更したんだが、他画面にいくとリセットされてるというか元が変わってないというか http://mevius.5ch.net/test/read.cgi/tech/1508168482/794
795: デフォルトの名無しさん (ワッチョイ 1f24-2Bv+) [sage] 2020/02/13(木) 19:44:16 ID:o7NRbkWy0 ライブラリの話が出ているので自分も質問させて頂きたいんですが、SevenZipSharp(by squid-box)使ってる方いないでしょうか? 分割されたRAR5.0を解凍する際にファイルが壊れてる的なエラーが出て解凍できないことがあるのはバグでしょうか?(純正7Zipアプリでなら正常に解凍できるため実際には壊れていない) どうやら1GB程以上の大きい分割ファイルだとそうなることが多いようで、数百MB程度の分割ファイルなら問題なく解凍は出来ます 単体のRARであれば1GB以上の巨大圧縮も解凍できるためメモリ周りのエラーと言う事でもなさそうなのですが http://mevius.5ch.net/test/read.cgi/tech/1508168482/795
796: デフォルトの名無しさん (ワッチョイ 477b-yNzz) [sage] 2020/02/15(土) 13:09:48 ID:M9LrwgB50 TabControl上の『選択されていないTabPage上の』ボタンをプログラムからクリックしたいんだが、どうすればいいのだ? 試したことは以下。 ((Button^)ctrl)->PerformClick(); // ボタンが見えてないと(ボタンのあるTabPageが選択されていないと)ClickEventが発生しない(以下※1) ((Button^)ctrl)->OnClick(gcnew EventArgs()); // protected なメソッドなので呼べない ((Button^)ctrl)->Click->DynamicInvoke(gcnew array<Object^>(2){ctrl,gcnew EventArgs()}); // C3918、データメンバではないため、マルチキャストデリゲートに直接アクセス出来ない ((Button^)ctrl)->Click(ctrl, gcnew EventArgs()); // C3718, Clickにraiseメソッドがないから駄目 環境 .NET Framework3.5(Form), VC++/CLI, VS2008EE 目的 GUIの画面をバッチ処理しようとしていて、 ボタンの名前をスクリプトに書いておけば順にクリックしてくれる、みたいなものを作っている。 見えていればPerformClickは動作するので、今はその都度SelectedTabを切り替えて逃げているが、 バッチ中に一々画面が変わるので出来ればそのままで処理したい。 http://mevius.5ch.net/test/read.cgi/tech/1508168482/796
797: デフォルトの名無しさん (ワッチョイ 477b-yNzz) [sage] 2020/02/15(土) 13:10:05 ID:M9LrwgB50 ※1 書いてあることとはこちらの状況と合致しているわけでもないが、とにかく見えてないとPerformClickは動作しない。 > TabControl.TabPages コレクションに少なくとも1つの TabPage が含まれている場合 > (Click、DoubleClick、MouseDown、MouseUp、MouseHover、MouseEnter、MouseLeave、MouseMove)、 > TabControl クラスでは、次のイベントは発生しません。 コレクションに少なくとも1つの TabPage が存在し、 > ユーザーがタブコントロールのヘッダー (TabPage 名が表示される) と対話する場合、 > TabControl は適切なイベントを発生させます。 > ただし、ユーザーの操作がタブページのクライアント領域内にある場合、TabPage は適切なイベントを発生させます。 > https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.control.click?view=netframework-4.8 自動翻訳がイマイチなので英語も。 > The following events are not raised for the TabControl class unless there is at least one TabPage in the TabControl. > TabPages collection: Click, DoubleClick, MouseDown, MouseUp, MouseHover, MouseEnter, MouseLeave and MouseMove. > If there is at least one TabPage in the collection, and the user interacts with the tab control's header (where the TabPage names appear), the TabControl raises the appropriate event. > However, if the user interaction is within the client area of the tab page, the TabPage raises the appropriate event. > https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.control.click?view=netframework-4.8 http://mevius.5ch.net/test/read.cgi/tech/1508168482/797
798: デフォルトの名無しさん (アウアウウー Sac3-+wK4) [] 2020/02/15(土) 14:11:22 ID:D6Qol+wpa >>796 表示されているかどうかの問題ではないと思う。 TabPageのコンテナ(およびその上のコントロール)はそのページが初めて 表示されるまで「作成」(CreateControl)されない仕様だった気が。 知らんけど http://mevius.5ch.net/test/read.cgi/tech/1508168482/798
799: デフォルトの名無しさん (ワッチョイ 477b-yNzz) [sage] 2020/02/15(土) 14:34:26 ID:M9LrwgB50 >>798 過去一度でも表示されたことがあるか、なら、確実に一度は表示されている。(初期画面のタブなので) そして一応、直前に表示した状況でも試してみたが、やはりPerformClickは反応しない。 (「スクリプト実行ボタン」と「スクリプトから押したいボタン」が同一TabControlの別ページにあるので、 タブを切り替えた直後に実行ボタンを押してみたが、駄目だった) ただしその挙動は少し覚えがあるというか、 大量にコントロールを並べていて描画がもたつく場合、タブを切り替える毎に再描画している雰囲気はあるから、 それに近い可能性(見えてないタブのコントロールを剥がすとか)もありえるとは思う。 http://mevius.5ch.net/test/read.cgi/tech/1508168482/799
800: デフォルトの名無しさん (ワッチョイ d201-b83C) [sage] 2020/02/15(土) 15:26:28 ID:cTwFsuY/0 リファレンスには書いてないっぽいけど ControlのCanSelectがtrueじゃないとPerformClick()はイベントを発生させない https://referencesource.microsoft.com/#system.windows.forms/winforms/managed/system/winforms/Button.cs,346 ボタン側を拡張したりボタンが呼び出してるメソッドを直接呼べない状況なら 素直にTabをSelectする以外にないんじゃないかな http://mevius.5ch.net/test/read.cgi/tech/1508168482/800
801: デフォルトの名無しさん (ワッチョイ d201-b83C) [sage] 2020/02/15(土) 15:33:35 ID:cTwFsuY/0 InvokeOnClick()呼べる? こっちなら何もチェックしてないっぽいけど http://mevius.5ch.net/test/read.cgi/tech/1508168482/801
802: デフォルトの名無しさん (ブーイモ MM0e-BzDP) [sage] 2020/02/15(土) 15:39:09 ID:px7CuDIEM 別にボタン押すとこまで律儀に再現しなくても良いよ イベントハンドラかその中で呼んでるサービスを直接呼び出せばいい http://mevius.5ch.net/test/read.cgi/tech/1508168482/802
803: デフォルトの名無しさん (アウアウウー Sac3-+wK4) [] 2020/02/15(土) 15:48:29 ID:D6Qol+wpa >>799 なるほど確かに初回表示済みかどうかにかかわらず表示されてない時はダネだねw これなら問題なかった static class Extensions { public static void RaiseClick(this Control control) { var t = control.GetType(); var m = t.GetMethod("OnClick", BindingFlags.NonPublic | BindingFlags.Instance); m.Invoke(control, new[] { EventArgs.Empty }); } } http://mevius.5ch.net/test/read.cgi/tech/1508168482/803
804: デフォルトの名無しさん (ワッチョイ 477b-yNzz) [sage] 2020/02/15(土) 15:58:13 ID:M9LrwgB50 >>800 おお、ありがとう。 ググりまくりはしたが、ソースコードをチェックするという発想はなかった。 > このプロパティは、System.Windows.Forms.ControlStyles の Selectable 値が trueに設定されていて、 > 別のコントロールに含まれていて、コントロール自体が表示され、 > 有効になっていて、すべての親コントロールが表示され、有効になっている場合に true を返します。 > https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.control.canselect?view=netframework-4.8#System_Windows_Forms_Control_CanSelect なんだかよく分からんが、かなり条件が深いのは分かった。 CanSelectはリードオンリーだから、素直に表示させるのが一番マシなようだ。 >>801 InvokeOnClickもprotectedなので駄目のようだ。(C3767) ただ、なんでCanSelectなんだよ?とは思ったので、なるほどInvokeOnClickか!とも一瞬思ったが。 何がしたいんだよこの仕様(CanSelect必須)は。 GUIが有効か見ているわけだが、それをプログラムからの操作に噛ませる意味はないはず。 http://mevius.5ch.net/test/read.cgi/tech/1508168482/804
805: デフォルトの名無しさん (ワッチョイ 477b-yNzz) [sage] 2020/02/15(土) 16:08:02 ID:M9LrwgB50 >>803 ありがとう。 ただ、リフレクションは嵌る原因になるので出来る限り回避している。理由は以下。 ・C#ならさておき、VC++だとググッてもヒットしない。 ・ならば勿論C#を参考にするわけだが、本来同じCLRでMSILなので全く同一の筈なのだが、 何故か一部異なっていたりして、そこで嵌る。(というか嵌ったことがある) 勿論使ってはいるが。 ただ、確かに今回はリフレクションでも対応出来る状況なので、最終的には使うかもしれないけど。 http://mevius.5ch.net/test/read.cgi/tech/1508168482/805
806: デフォルトの名無しさん (アウアウエー Saaa-BzDP) [sage] 2020/02/15(土) 16:16:32 ID:ZLgOs4gBa バッチ処理なのになんでFormsなんだ? http://mevius.5ch.net/test/read.cgi/tech/1508168482/806
807: デフォルトの名無しさん (ワッチョイ 639e-oFCC) [sage] 2020/02/15(土) 16:45:32 ID:9gQJd/YW0 IEコンポーネントの代替品って何? ChromiumベースEdge のものは既に用意されてるの? http://mevius.5ch.net/test/read.cgi/tech/1508168482/807
808: デフォルトの名無しさん (アウアウウー Sac3-+wK4) [] 2020/02/15(土) 17:23:14 ID:D6Qol+wpa >>805 ならこれでも出来た。 何か気づいてない弊害があったらごめんね public static void RaiseClick(this Button button) { var parent = button.Parent; if(parent is TabPage) { button.Parent = null; button.PerformClick(); button.Parent = parent; } } 個人的にはこういうバットノウハウ感全開のコードは嫌いw http://mevius.5ch.net/test/read.cgi/tech/1508168482/808
809: デフォルトの名無しさん (ワッチョイ 477b-yNzz) [sage] 2020/02/15(土) 17:54:52 ID:M9LrwgB50 >>808 さすがに動的に剥がすのは色々副作用が発生しそうで怖い。 今のところ以下のコードでやっている。このままか、>>803にするかのどちらかだと思う。 if (ctrl->Parent->GetType()->Name=="TabPage") ((TabControl^)ctrl->Parent->Parent)->SelectedTab = (TabPage^)ctrl->Parent; ((Button^)ctrl)->PerformClick(); キャストが入ってうざくなっているが、要はボタンの親のタブページをその都度選択(表示)させている。 これで動いている。ただしタブが勝手に切り替わるので知らなければギョッとする。 直後に戻せばいいだけかもしれないが、それはそれで無駄にイベントが発生するし、とりあえず放置だ。 仕様だと分かったので諦めはつく。 しばらくこれで試して、問題がなければこのまま、といったところ。 現状TabControl内のTabControlなんて無いから、おそらくこの方法で問題ないと思っている。 (TabControlが入れ子になっている場合、おそらくリフレクションしかない) http://mevius.5ch.net/test/read.cgi/tech/1508168482/809
810: デフォルトの名無しさん (ワッチョイ 9294-E40k) [sage] 2020/02/15(土) 17:56:21 ID:KAWVCWpT0 ボタンのコードを呼び出すのは駄目なの? http://mevius.5ch.net/test/read.cgi/tech/1508168482/810
811: デフォルトの名無しさん (ワッチョイ 477b-yNzz) [sage] 2020/02/15(土) 18:28:50 ID:M9LrwgB50 >>809訂正 × TabControlが入れ子になっている場合 ○ TabControl内にGroupBox等があり、そこにボタンがある場合 809のコードだと直接の親しか見てないので、 TabControl内のボタンは階層的に直接TabPageに貼られている必要がある。 そうでなければ親を再帰で辿るか、リフレクションするか、だろう。 http://mevius.5ch.net/test/read.cgi/tech/1508168482/811
812: デフォルトの名無しさん (オッペケ Src7-oFCC) [sage] 2020/02/15(土) 19:38:08 ID:VwQX+D5fr 馬鹿がこんがらがってるイメージ ボタンクリックのイベントハンドラを表示 private void button1_Click(object sender, EventArgs e) { // } 始めの{と終わりの}の間をすべて選択する 右クリック クイックアクションとリファクタリングを選択 メソッドの抽出を選択 適用をクリック http://mevius.5ch.net/test/read.cgi/tech/1508168482/812
813: デフォルトの名無しさん (ブーイモ MM0e-BzDP) [sage] 2020/02/15(土) 19:45:46 ID:nU62WrWUM >>812 だよなあ おそらく「ボタンを押すこと」が目的化してしまってる クライアントの要件は多分そういうことじゃない http://mevius.5ch.net/test/read.cgi/tech/1508168482/813
814: デフォルトの名無しさん (アウアウウー Sac3-+wK4) [] 2020/02/15(土) 20:31:48 ID:D6Qol+wpa >>812 その程度の話なら既に指摘されてるよw イベントハンドラは動的に変更されるかもしれないし、 ラムダ式や引数で与えられるデリゲートかもしれない。 だから普通質問者さんの問題意識は理解できると思うよw イキってる君以外の人にはw http://mevius.5ch.net/test/read.cgi/tech/1508168482/814
815: デフォルトの名無しさん (アウアウエー Saaa-BzDP) [sage] 2020/02/15(土) 22:59:55 ID:ZLgOs4gBa >>814 その動的に変わるかもしれない処理とやらを抽出するだけだろ? Form: btnFoo.Click += this.Model.Foo; Model: void Foo() => _foo?.Invoke(); // _fooは動的に変化するかもしれない スクリプト(オレオレマクロの文法がわからんから例としてpowershell) $form = $AppHost.Container.Resolve("MyForm") $form.Model.Foo() 画面を見なくていいならより直接的に $model = $AppHost.Container.Resolve("MyFormModel") $model.Foo() http://mevius.5ch.net/test/read.cgi/tech/1508168482/815
816: デフォルトの名無しさん (アウアウウー Sac3-+wK4) [] 2020/02/16(日) 00:18:48 ID:s243OsDZa なんかもうバカの壁だねw ボタンのクリックをシミュレートしたいというのは十分理解できる話だし、 それをなるべくそのまま表現できるようなコードを書きたい、という動機も 普通に理解できる話だと思うんだけど。 >>815的な発想の問題点は、 (1) プログラマの意図と実際のコードに乖離がある (2) だから呼び出しているメソッドが今本当にButtonのイベントハンドラに登録されているものと 同一であるか、という検証の必要性が発生する。 (3) ButtonのPerformClickの「仕様バグ」を回避するため、 という非本質的な目的のためにコードの設計に手を入れるのは本末転倒 なにが「だろ?」なんだろうね スギちゃんかよだっせーwww http://mevius.5ch.net/test/read.cgi/tech/1508168482/816
817: デフォルトの名無しさん (アウアウウー Sac3-+wK4) [] 2020/02/16(日) 00:20:18 ID:s243OsDZa >>813の人も思いっきり倒錯してるねw http://mevius.5ch.net/test/read.cgi/tech/1508168482/817
818: デフォルトの名無しさん (ブーイモ MM0e-BzDP) [sage] 2020/02/16(日) 00:28:16 ID:lYNu13iwM >>816 それより前の問題としてプログラマの意図がまず間違ってんだよ 魚をさばくのにノコギリでやろうとしてる状態 そこを正してからじゃないと話にならない 正さずにむりやり進めようとしてるからボタンクリックエミュレートなどという頭の悪い発想に固執する 挙げ句の果に画面上で見えてないと処理が走らない(涙)なんてバカバカしい罠にどハマリしちゃってるわけだ はっきり言ってリフレクションはハマりやすいからダメだなんて言ってる場合じゃないよ http://mevius.5ch.net/test/read.cgi/tech/1508168482/818
819: デフォルトの名無しさん (ブーイモ MM0e-BzDP) [sage] 2020/02/16(日) 00:38:37 ID:lYNu13iwM だいたいクライアントのやりたいことは自社アプケーションのオートメーションサポートだろうよ それを素人の思いつきレベルの発想でUIのオートメーションに目的をすり替えたのが運の尽きだわな レイヤの考え方が全くわかってないアマチュアの設計だからすんなりうまく行くはずがないんだ 見えてないと発火しないこと以外にいったいどんな罠が潜んでるかわかったもんじゃない 俺が提案した方法ならUIインフラに依存しなくなるから実行時の安定性と罠が少ないぶん高い生産性が期待できる http://mevius.5ch.net/test/read.cgi/tech/1508168482/819
820: デフォルトの名無しさん (ワッチョイ d201-b83C) [sage] 2020/02/16(日) 01:57:42 ID:iNVxJNOu0 アセンブリが自分や所属チーム/組織のコントロール下にないんじゃないのかな 違う理由かもしれないがそれと同じような制約下での話だと思われる http://mevius.5ch.net/test/read.cgi/tech/1508168482/820
821: デフォルトの名無しさん (ワッチョイ 8361-IGGe) [sage] 2020/02/16(日) 03:27:20 ID:QSu9wuIh0 >>796 >GUIの画面をバッチ処理しようとしていて UiPathとかAutoIt使いな。 http://mevius.5ch.net/test/read.cgi/tech/1508168482/821
822: デフォルトの名無しさん (ワッチョイ c602-ZgUM) [sage] 2020/02/16(日) 09:58:00 ID:as0AlWv60 >>820 そういうときはUIAutomationかWinAppDriverを使うといいよ どうせこのあと要求がどんどん増えてボタンクリックだけじゃ済まなくなるんでしょ あとで苦労するハックはやめてマイクロソフトが整備してる道具を使おう http://mevius.5ch.net/test/read.cgi/tech/1508168482/822
823: デフォルトの名無しさん (ワッチョイ 477b-yNzz) [sage] 2020/02/16(日) 11:26:32 ID:j/dbz9ZG0 >>819 まあその「俺のプログラムが一番だ」という姿勢は俺は嫌いではないし、 むしろプログラマは全員持つべきだとも思うけども、 動的結合の価値(意味)が分からないのなら、まずはそこを理解した方がいい。 現在、Clickイベントをエミュレーション出来ないGUIフレームワークなんて、存在してない。 リフレクションも割と一般的になりつつある。(常用するのはどうかとも思うが) だから、使いどころはあるんだよ。 静的結合だけでやれ、みたいなのは言ってしまえばC++がそうだが、それでもRTTIは検討されている。 動的結合の価値は>>816も書いてくれているが、同様に以下でも触れられている。(これらだけでもないが) https://www.atmarkit.co.jp/fdotnet/dotnettips/270performclick/performclick.html 言ってしまえば「実行速度を捨てて保守性を採る」わけであり、これが適切かどうかは状況によるので、 PerformClickやリフレクション等を使うこと自体が間違いだ、というのはさすがに行きすぎてる。 (なお既に言ったが、速度至上主義のC++は割とそういう思想だし、これも間違いでもないが) ただそれはさておき、PowerShellは使ったこと無いから調べてみたが、確かに面白いものではある。 ポイントは、.NETオブジェクトをインスタンス化出来ることと、それらをパイプで流せる点か。 >>815を見る限り、C#等CLRな物ならリフレクションで内部の関数をぶち抜いて、自在に呼べるのか! (名前があやふやだが確か)COMでも似たようなことをしていたMSならあり得るか!とも思ったが、 そうではなくて、自分で.NETクラスをインスタンス化して呼べるだけか? まあそれでもリフレクションを使えば何でもありにはなるし、 .NETを使うだけで本式のバッチスクリプト環境が自動的に提供されてしまう、というのは画期的ではある。 ここら辺はMSの上手いところだとは思う。 http://mevius.5ch.net/test/read.cgi/tech/1508168482/823
824: デフォルトの名無しさん (ワッチョイ 477b-yNzz) [sage] 2020/02/16(日) 11:28:34 ID:j/dbz9ZG0 >>816 俺も「仕様バグ」に近いものだとは思うが、おそらくMSはそう認識してないと思う。 理由は、.NETは比較的「仕様バグ」は少ない環境であり、これは、 ・MSがガッツリ保守している ・バイナリ側がランタイムのバージョンを指定出来るので、改訂しやすい 為、「仕様バグ」を後方互換性の為に残す必然性がほぼ無いからだ。 少なくともobsolete(非推奨)にすることは簡単に出来るのだが、してない。 多分何か理由があるのだろうけど、俺には分からない。 なお後知恵だがDobonには書いてある。 > ただし、コントロールのCanSelectプロパティがfalseの時は、PerformClickメソッドは何もしません。 > 例えば、コントロールのVisibleプロパティがfalseの時、CanSelectプロパティはfalseとなります。 > https://dobon.net/vb/dotnet/control/performclick.html Dobonは、というよりMSDN以外は基本的に見ないことにしていたのだが、妙な嵌り方をした場合は役に立つのかも。 なお他にも > クリックの動作と同じ動きをするため、EnabledプロパティやVisubleプロパティが"False"の場合、 > PerformClickメソッドを呼び出しても何も実行されません。 > https://www.ipentec.com/document/csharp-simulate-click-event http://mevius.5ch.net/test/read.cgi/tech/1508168482/824
825: デフォルトの名無しさん (ワッチョイ 1ede-sep5) [sage] 2020/02/16(日) 11:51:40 ID:4ZDOKfwJ0 >>823 なにこの メソッドにすりゃいーじゃん 以上の意味を見いだせない機能 http://mevius.5ch.net/test/read.cgi/tech/1508168482/825
826: デフォルトの名無しさん (ブーイモ MM32-BzDP) [sage] 2020/02/16(日) 12:09:21 ID:qmeSH89zM >>823 そのリンクの先はかなりクソコードだから鵜呑みにしないほうがいいぞ まあ2005年の錆びついたものだしもともと低スキル向けの記事だからしょうがないけど この記事の悪しき前提はViewに処理をベタ書きしちゃってることな 本来ならViewとModelを分離してView上のメニューとボタンからModelの同じメソッドをコールするのが正しい設計な ViewとModelを分離してModelがViewに依存しなくなればModelをUIインフラから切り離して独立させることができる そうすればオレオレスクリプトでオートメーションをサポートするといった要求にも容易に応えることができるようになる UI操作をエミュレートするなどという泥臭いハックに頼らなくて済むのだ http://mevius.5ch.net/test/read.cgi/tech/1508168482/826
827: デフォルトの名無しさん (ワッチョイ 477b-yNzz) [sage] 2020/02/16(日) 13:03:06 ID:j/dbz9ZG0 >>826 このページのコードと用例が糞なのは事実として、エミュレーションが適切な場合もあるってことだよ。 だから現在の全てのGUIフレームワークはエミュレーション出来るようになってるし、 リフレクションも装備しつつある。 MとVを厳密に分離してVはMのラッパ扱いに留めろ、というのは現在の思想としては正しいとして、 2005頃には今ほど言われていなかった、というより、そのころの失敗を経て現在の思想があるわけだから、 このページに対してそれを言ってもしょうがない。 ただそれにしても、現在もまだエミュレーションの価値はあると思うよ。 今回の点に関しての不満なら、俺は MS:「OnClickがprotectedで呼べないからPerformClickを用意しました」 俺:「なら最初からOnClickをpublicにしとけよ」 であって、private至上主義という勘違いオブジェクト指向の面影を.NETもまた引きずっている点についてだね。 http://mevius.5ch.net/test/read.cgi/tech/1508168482/827
828: デフォルトの名無しさん (ワッチョイ 37de-sep5) [sage] 2020/02/16(日) 13:23:09 ID:If0Pwz/d0 >>827 ウンコをいじる正当性を探すな http://mevius.5ch.net/test/read.cgi/tech/1508168482/828
829: デフォルトの名無しさん (ワッチョイ 477b-yNzz) [sage] 2020/02/16(日) 14:00:28 ID:j/dbz9ZG0 エミュレーションの有用性が分からないのは根本的に経験が足りない。 何故現在の全てのGUIフレームワークがその機能を持っているのか、その意味をよく考えた方がいい。 そしてそのレベルの奴がコードの善し悪しを議論するのは5年早い。 ただ、このレベルの初心者と話をしても意味がないから俺はやる気無い。 お前らが正しいのなら、MSは数年以内に.NETからエミュレーション機能、 つまりPerformClick/OnClick/リフレクション等を全削除することになるが、 俺はこれはあり得ないとしか思えない。 正否は結果で判断でいい。 ここで低レベルな水掛け論をやる意味はない。 http://mevius.5ch.net/test/read.cgi/tech/1508168482/829
830: デフォルトの名無しさん (ワッチョイ 37de-sep5) [sage] 2020/02/16(日) 14:16:23 ID:If0Pwz/d0 こんなクダンネーモン作ってる暇があるならメッセージボックスが後ろに回らないように修正しろ http://mevius.5ch.net/test/read.cgi/tech/1508168482/830
831: デフォルトの名無しさん (スフッ Sd32-yBe4) [sage] 2020/02/16(日) 14:20:38 ID:WhOeRDRvd >>807 nugetにあるよ。 http://mevius.5ch.net/test/read.cgi/tech/1508168482/831
832: デフォルトの名無しさん (ブーイモ MM0e-BzDP) [sage] 2020/02/16(日) 14:36:14 ID:t/nUwzcTM >>827>>829 UI操作をエミュレートする需要があることは間違いではない がしかしそれはUIコンポーネント実装のためだったりテストフレームワークのためだったりソースにアクセスできないGUIアプリケーションのオートメーションのためだったりであって 自社アプリにオートメーションサポートを実装するための基盤ではない それをサポートを実現するまっとうな設計はUI層に依存しないAPIやCLIの提供であってUI操作とは全く逆の考え方だ お前はノコギリにだって役目と需要があると言ってる しかしノコギリは魚をさばくのには適さない 無論無理をすればノコギリで魚をさばくことはできるがそれはバカのやることだ http://mevius.5ch.net/test/read.cgi/tech/1508168482/832
833: デフォルトの名無しさん (ワッチョイ af97-hMlH) [sage] 2020/02/16(日) 15:56:01 ID:4YtH0n6X0 年末年始年始に非同期処理で騒いでた人かな http://mevius.5ch.net/test/read.cgi/tech/1508168482/833
834: デフォルトの名無しさん (アウアウウー Sac3-+wK4) [] 2020/02/16(日) 18:17:51 ID:vSVyAtifa >>832 あんたも相当しつこいねw 俺は質問者さんと別人だけど、ボタンやメニューのクリックをシミュレートしたい 場面というのは実際問題しばしば存在するよ 例えばクリックすると何か処理が走るボタンが複数あるとする。 この時、これを全部クリックしたのと同じ機能を果たすボタンが欲しい、 なんていうのは割とありがちな話。 あと、クリックで同じ機能を果たすボタンとメニューが存在する、なんてしょっちゅうある。 この場合はメニューの方のクリックをシミュレートするのが普通だと思うから 件の話を正当化する材料にはならないけどね。 http://mevius.5ch.net/test/read.cgi/tech/1508168482/834
835: デフォルトの名無しさん (ワッチョイ 1ede-sep5) [sage] 2020/02/16(日) 18:27:35 ID:Oyf7AnZI0 >>834 えー、それにこれ使っちゃうのはキチガイだろ チェック関連全部走ってから 本処理行くだろ http://mevius.5ch.net/test/read.cgi/tech/1508168482/835
836: デフォルトの名無しさん (ワッチョイ 477b-yNzz) [sage] 2020/02/16(日) 18:32:01 ID:j/dbz9ZG0 >>832 「UIに依存する」のではなく、「UIの代替を提供する」のであって、 UIが変更された場合にはUIと同じく変更されるのが正しいんだよ。この点が違う。 そしてソース変更無しで自動追従させる手法がエミュレーションになる。 「UIに依存する」というのは、UIとは本来関係ない事をUIを通してやってしまっていることにより、 UIが変更された場合に動かなくなって困る(動作が変わってしまう)ことを言ってるだろ。 そうじゃない。今回はそこは動作が変わるのが正しいんだよ。 それはさておき、PowerShellって流行ってるのか? 思想が面白いのは認めるが、これはつまり「.NETアプリをライブラリとして公開する」訳であり、 ガチのプログラマに対してソース公開して、後はお前が頑張れ、と言っているに近い。 勿論これで行ける奴はいいが、実際のところ、使う側はアプリを使いたいのであって、 ソースを読みたいわけでもなく、プログラミングしたいわけでもない。 そしてアプリと完全に密結合してしまうから、そもそも同レベルのプログラマじゃないとソースは読めない。 だから現実的に、アプリ+PowerShellで何とかしろ、と言われても、プログラマでも困ると思うが。 ただし再三言っているが、思想が面白いのは認める。 これにより、全ての.NETアプリはPowerShellライブラリとして動作し、 また、ガチのスクリプト環境が手に入るわけだ。これ自体は(有用性はともかく)面白い。 http://mevius.5ch.net/test/read.cgi/tech/1508168482/836
837: デフォルトの名無しさん (ブーイモ MM0e-BzDP) [sage] 2020/02/16(日) 19:25:18 ID:tfQsIfqsM >>834 どちらもボタンクリックをエミュレートする必要はない 上の例はクリックで実行される処理を順に実行するだけ 下の例はメニューとボタンから同じ処理を呼ぶだけ http://mevius.5ch.net/test/read.cgi/tech/1508168482/837
838: デフォルトの名無しさん (ブーイモ MM0e-BzDP) [sage] 2020/02/16(日) 19:46:27 ID:tfQsIfqsM >>836 つまりお前が言いたいのは スクリプティング機能の定石に反する糞仕様こそを求めているので今回に限り馬鹿なことをするのが正しい ということか PowerShellは流行ってるというかWindowsのシステム管理ではほぼ必須 OSにプレインストールされてるから開発環境用意するまでもないちょっとしたツールを作るのにも便利 今まさに話してるDSLを手軽に実装するための基盤としてもしばしば使われる LinuxやMacで仕事してるなら触る機会ないだろうけどWindowsで開発してるなら触る機会は無数にあるはず http://mevius.5ch.net/test/read.cgi/tech/1508168482/838
839: デフォルトの名無しさん (ワッチョイ 9261-OxJ8) [sage] 2020/02/16(日) 20:13:22 ID:lt2wlhEH0 >>796 おいもうそろそろこの話題締めて他所にいってくれや。 http://mevius.5ch.net/test/read.cgi/tech/1508168482/839
840: デフォルトの名無しさん (ワッチョイ 167b-4wVb) [sage] 2020/02/16(日) 20:16:51 ID:ZkXecQUS0 ふらっと荒らしてこっち荒らして、いつも同じメンバーだろこれ http://mevius.5ch.net/test/read.cgi/tech/1508168482/840
841: デフォルトの名無しさん (オッペケ Src7-oFCC) [sage] 2020/02/16(日) 20:22:19 ID:+zL5Le7jr もともと完全にちゃんとGUI操作したいなんて書いてないだろさ 途中から見てる人が勝手に条件を足してるだけで本来あるべき姿とかい離してる 途中で無駄にリフレクションが出てくるあたり初心者の匂いが出てる ボタン押すにはタブを切り替えなくてはならないのに 画面が変わらないままでボタン押したいって言ってるから別にGUI操作自体を再現したいわけじゃない http://mevius.5ch.net/test/read.cgi/tech/1508168482/841
842: デフォルトの名無しさん (ワッチョイ 477b-yNzz) [sage] 2020/02/16(日) 20:24:37 ID:j/dbz9ZG0 >>838 違う。定石に反しているのは君の方で、つまりはカッコイイソリューションを目指しすぎている。 馬鹿みたいなソリューションの方が、現実的に使いやすいことは多々ある。 多分、ちょっと若すぎて元気がありすぎるのだと思う。 これ自体は悪いことではなく、むしろ上達には必須の性格で、良いことだとは思うが、 世の中のアプリがどうなっているか、もう少し周りを見た方がいい。 GUIの自動化で一番簡単なソリューションは、GUIを記録してしまうことだ。…(A) 俺が昔使ったアプリだと、「ログ画面」にGUI操作と等価のコマンドが一々流れる、というのがあった。 そして自動化したい場合は、このログ画面内の該当部分をコピペしたファイルを読ませるだけ、というものだ。 当然、見れば分かる程度であり、例えばファイルを読み込んだらそのファイルパスがまんま表示されている。 なら、そこを変更するだけで同じ処理を他ファイルに適用出来るよね、というわけだ。 冷静に考えれば分かるが、Unixのshもこれと同様だ。(というより上記方式がshのパクリだが) shもhistoryで出てくる履歴をコピペすればバッチファイルになるようになっている。 そして必要なら該当部分を変数化してループを回せ、ということでしかない。 俺は使ったことないけど、Webブラウザの自動化ツールとして有名なSeleniumも以下見る限り似たようなもんだ。 https://www.valtes.co.jp/qbookplus/509 だから、初段階のスクリプト環境はこの程度でいいし、実際、この程度でも相当有益なんだよ。 そしてそれを手っ取り早く実装する方法がGUIのエミュレーション(PerformClick等)になる。 だから、 > 自社アプリにオートメーションサポートを実装するための基盤ではない これはちょっと意識が高すぎる。(気持ちは分からなくもないが) PowerShellでオートメーション、というのはその先の先の先位で、 初期段階に於いては超オーバースペックでしかない。 そして殆どのアプリでは最終的にも必要としない。 http://mevius.5ch.net/test/read.cgi/tech/1508168482/842
843: デフォルトの名無しさん (ワッチョイ 477b-yNzz) [sage] 2020/02/16(日) 20:25:18 ID:j/dbz9ZG0 例えば上記アプリ(A)方式だと、ループ機能すらないのだから、 アプリ(A)だけで100個のファイルに同じ処理を適用しようとすると困る。 そこでループ機能を、とか言い出すと色々他が必要になって結局PowerShell、という思想もありだが、 そうではなく、Perl等でファイル名だけ変更するスクリプトを作り、 それでループを回して作ったドベタに展開された糞長いバッチファイルをアプリ(A)に流し込む、 というのもありなんだよ。 全ての処理を自アプリでやろうとするから無理が発生する。 unixはこれと逆で、他コマンドで出来ることは自コマンドでするな、で上手く行ってるだろ。 ソースコードについてもそうだが、アプリについてもKISS原則は重要なんだよ。 そして話を戻すと、UIの自動化のド定番は「実際に行われたUIを記録してそのまま流すこと」であり、 「PowerShell等のガチスクリプト環境と連携すること」ではない。 だからクリックエミュレーション等も今のところは今後とも必要な機能でしかない。 が、まあ、PowerShellを推す気持ちも分からなくはない。 おそらくIEだとPowerShellで自動化出来ると推測されるので、 IEが天下取っていたときに自動化の流れが来てたら少しは違ったかもしれん。 http://mevius.5ch.net/test/read.cgi/tech/1508168482/843
844: デフォルトの名無しさん (ブーイモ MM0e-BzDP) [sage] 2020/02/16(日) 20:55:58 ID:tfQsIfqsM >>842 無知すぎて呆れる 世の中のサービスやアプリをちゃんと見てみろ APIやCLIをサポートすることは多々あってもGUI操作をサポートしてるものなどごく少数派だ UIとは読んで字のごとくユーザーのためのインターフェースであって自動化のためのインターフェースではない APIとはアプリケーションプログラムのためのインターフェースであり自動化をサポートするならこちらを提供するのが当然の選択だ APIやCLIのサポートが定石であってGUI操作は邪教徒の好む黒魔術でしかない お前の常識は多分10年か20年前の辺境の集落での常識だ 現代のグローバルスタンダードに追いつく努力をしてくれ http://mevius.5ch.net/test/read.cgi/tech/1508168482/844
845: デフォルトの名無しさん (ワッチョイ c602-ZgUM) [] 2020/02/16(日) 21:13:00 ID:as0AlWv60 >GUIの自動化で一番簡単なソリューションは、GUIを記録してしまうことだ。…(A) >俺が昔使ったアプリだと、「ログ画面」にGUI操作と等価のコマンドが一々流れる、というのがあった。 >そして自動化したい場合は、このログ画面内の該当部分をコピペしたファイルを読ませるだけ、というものだ。 >当然、見れば分かる程度であり、例えばファイルを読み込んだらそのファイルパスがまんま表示されている。 >なら、そこを変更するだけで同じ処理を他ファイルに適用出来るよね、というわけだ。 これ、昔作ったことが有るけど、最も上手くいった方法はMVCを徹底して、Cの入り口でコマンドオブジェクトをシリアライズして記録するパターンだったな やってみればわかると思うけど、画面コントロールの操作ログを正確に記録するのも、再生するのも、一筋縄ではいかない http://mevius.5ch.net/test/read.cgi/tech/1508168482/845
846: デフォルトの名無しさん (ワッチョイ 639e-oFCC) [sage] 2020/02/16(日) 21:16:30 ID:yo/bSae/0 COMで解決された問題を20年以上経って議論してる・・・ http://mevius.5ch.net/test/read.cgi/tech/1508168482/846
847: デフォルトの名無しさん (ワッチョイ 126a-OxJ8) [sage] 2020/02/16(日) 21:58:35 ID:5ncsgUM20 この話題をすり替えつつ自分の正当性をゴリ押しするスタイル、最近見ましたよね 明後日くらいには全然違う話題になってるぞきっとw http://mevius.5ch.net/test/read.cgi/tech/1508168482/847
848: デフォルトの名無しさん (ワッチョイ 7317-OxJ8) [sage] 2020/02/16(日) 22:11:19 ID:x7wMnJYb0 荒らしてるの毎回同じ人だよね 書き方に癖があるからすぐわかる http://mevius.5ch.net/test/read.cgi/tech/1508168482/848
849: デフォルトの名無しさん (アウアウウー Sac3-+wK4) [] 2020/02/16(日) 22:21:29 ID:Z1hWCcVDa >>837 繰り返しになるけどね、そういう「プログラマの意図と実際のコードに乖離がある」 ことをやると別の仕事が増えるでしょ。 ボタンABCDEが全部クリックされたのと確実に同じことが起るって誰が確認して保証するの? ボタンABCDEのクリックイベントの処理を後で変更した時、またそれをやりなおすの? その確認作業を忘れたらどうするの? こういう後の保守のことを考えないプログラマは愚鈍で無能。 倒錯してるよ君。 「する必要はない」のは、「クリックで実行される処理を順に実行する」なんて保守性を下げる アホな手段を採用すること。 なぜ素直にボタンクリックをシミュレートしようとしないの。 http://mevius.5ch.net/test/read.cgi/tech/1508168482/849
850: デフォルトの名無しさん (ブーイモ MM0e-BzDP) [sage] 2020/02/16(日) 22:40:57 ID:q02FpFyRM >>849 プログラマの真の意図は ボタンを押したら複数の一連の処理をまとめて実行したい メニューとボタンで同じ処理を実行したい だろ 君が好きなボタンをエミュレートする方法は上記のプログラマの意図を実現する遠回りなやり方の1つだ 誰が確認するの?確認忘れたらどうすんの?なんて質問は自分は仕事でコード書いたことありませんと言っているようなものだから控えたほうがいい テストを自動化するか人がやるか誰がやるかはチーム次第だがいずれにせよテストをしないわけがないではないか そしてテストをするのはボタンをエミュレートする方式だろうが他のどうな方法だろうが同じことだ まるで暗にエミュレートならテストを省略していいような言い方をするとああこいつはアマチュアなんだなとバレてしまうぞ ちなみにテストの心配をするならなおさらUIに依存しない方式で書いたほうがいい そうすればテストの自動化が容易になるから君が気にしてるテスト工数の増加やリグレッションの発生確率も最小化することができる UIのエミュレートが正しく行われたことをテストするのはUI非依存のテストと比べると面倒な作業だよ まあこんへんはアマチュアにはわかりにくいメリットかもしれないね http://mevius.5ch.net/test/read.cgi/tech/1508168482/850
851: デフォルトの名無しさん (ワッチョイ 122c-LiuO) [sage] 2020/02/16(日) 22:47:15 ID:5EL9p8ON0 Seleniumデザインパターン&ベストプラクティス、2015、オライリー この本は、Ruby, Selenium WebDriver でのテスト手法を書いた本 例えば、Ruby, Selenium WebDriverで、 Yahoo への自動ログインするスクリプトは、下を参照 【VBScript】WSHについて話し合うスレ【JScript】 https://mevius.5ch.net/test/read.cgi/tech/1578522041/27 http://mevius.5ch.net/test/read.cgi/tech/1508168482/851
852: デフォルトの名無しさん (ワッチョイ 630c-OxJ8) [sage] 2020/02/16(日) 22:59:33 ID:jBsklMHb0 そしてさも当然ように混じり込むいつものRubyキチ http://mevius.5ch.net/test/read.cgi/tech/1508168482/852
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 150 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.016s