トップ 最新 追記

Masa's blog

検索キーワード:

2019年06月02日 How to fix unstable network with Vmware(Host: Linux, Guest Widows10) [長年日記]

_ VMware(Host: Linux with wifi, Guest Widows10)のネットワークが不安定な時の対策

VMwareゲストのwindows10からのネットワーク接続が安定しないので色々試してみた。

ネットワークインタフェースをリセットしてみた(効果無し)

netsh interface set interface Ethernet0 disabled
netsh interface ip reset
netsh winsock reset
netsh interface tcp reset
netsh interface set interface Ethernet0 enabled

ipv4を再設定してみた(効果無し)

netsh interface ipv4 set address name=Ethernet0 source=static address=192.168.0.10 mask=255.255.255.0 gateway=192.168.0.100
netsh interface ipv4 set dnsservers name=Ethernet0 source=static address=192.168.0.100 register=primary validate=no

arpテーブルを静的に設定してみた

不思議なことに、tcpdumpで確認したところ、ゲートウェイ用のコンピュータ(192.168.0.100)にarpパケットが届いていない様子。

そこで、ADHOCな方法ではあるが、ゲートウェイのarpテーブルを静的に設定してみた。

netsh interface ipv4 set neighbors "Ethernet0" "192.168.0.100" "0x-1x-2x-4x-ex-ex"

一応これで通信が安定した模様...。

_ LinuxからWindows10(192.168.0.10)へのRDP接続

rdesktopによる接続(NLA - Network Level Authentificaton 無し)

rdesktopはNLA認証をサポートしないので、Windows10側でNLAを無効化する必要が有る。

(Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -ComputerName "127.0.0.1" -Filter "TerminalName='RDP-tcp'").SetUserAuthenticationRequired(0)

rdesktopのビルド(Linux)

tar xvf rdesktop-1.8.6.tar.gz
cd rdesktop-1.8.6
./configure --disable-credssp --disable-smartcard
make
make install && ldconfig

実行

padsp rdesktop -g 1366x768 -r sound 192.168.0.10

xfreerdpによる接続(NLA - Network Level Authentificaton 有り)

Windows10のNLAを有効化する。

(Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -ComputerName "127.0.0.1" -Filter "TerminalName='RDP-tcp'").SetUserAuthenticationRequired(1)

xfreerdpのビルド(Linux)

tar xvf FreeRDP-2.0.0-rc4.tar.gz
cd FreeRDP-2.0.0-rc4
cmake .
make
sudo make install && sudo ldconfig

実行

xfreerdp /u:USERID /p:PASSWORD /w:1366 /h:768 /sound /v:192.168.0.10

2019年06月11日 UiPath memo (RPA) [長年日記]

_ UiPath memo (RPA)

フローチャート

使用可能 -> ワークフロー -> フローチャート -> フローチャート(Flowchart)

順実行

使用可能 -> ワークフロー -> 制御 -> シーケンス(Sequence)

並列実行

使用可能 -> ワークフロー -> 制御 -> 並列(Parallel)

if文

使用可能 -> ワークフロー -> 制御 -> 条件分岐(If)

繰り返し

使用可能 -> ワークフロー -> 制御 -> 繰り返し(前判定)(While)

配列の内容分繰り返す

使用可能 -> ワークフロー -> コントロール -> 繰り返し(コレクションの各要素)(ForEach)
  • コレクション -> CTRL-K 変数 -> IEnumerable型(デフォルト)。
  • Misc -> TypeArgument -> コレクションの型を選択できる。

指定時間スリープ

使用可能 -> ワークフロー -> 制御 -> 待機(Delay)
  • 待機時間 -> hh:mm:ss.MMM (時間:分:秒.ミリ秒)。

エラー処理(割込)

使用可能 -> ワークフロー -> エラー処理 -> トライキャッチ(Try Catch)
  • CTRL-T

ワークフローファイル(サブルーチン)をプロジェクト内に追加作成(引数受渡し可能)

CTRL-N

サブルーチン(ワークフローファイル)呼出(引数受渡し可能)

使用可能 -> ワークフロー -> 呼び出し -> ワークフローファイルを呼び出し(Invoke Workflow File)
  • 引数のインポート前には、サブルーチン側の引数定義を完成し、保存しておくこと。
  • 引数は変数ではないので、直接に値の代入はできない。
  • 引数定義で実際の値や変数と結びつける。

変数に値を代入

使用可能 -> ワークフロー -> 制御 -> 代入(Assign)

クリップボードから変数に代入

使用可能 -> システム -> クリップボード -> クリップボードから取得(Get From Clipboard)
  • 出力 -> 結果 -> CTRL-K 変数 -> GenericValue型。

文字列置換

使用可能 -> プログラミング -> 文字列 -> 置換(Replace)
  • 結果 -> 出力変数。
  • パターン -> 置換前文字列。
  • 入力 -> 入力文字列。
  • 置換 -> 置換後文字列。

文字列比較

使用可能 -> プログラミング -> 文字列 -> 文字列の一致をチェック(Is Match)
  • Misc -> 結果 -> CTRL-K 変数 -> boolean型。

メッセージボックス

使用可能 -> システム -> ダイアログ -> メッセージボックス(Message Box)

入力ダイアログ

使用可能 -> システム -> ダイアログ -> 入力ダイアログ(Input Dialog)
  • タイトル -> タイトルバーに表示。
  • ラベル -> 入力欄の左側に表示。
  • 出力 -> 結果 -> CTRL-K 変数 -> GenericValue型。

アプリケーションの起動

使用可能 -> システム -> アプリケーション -> プロセスを開始(Start Process)

キーボード入力

使用可能 -> UI Automation -> 要素 -> キーボード -> 文字を入力(Type Into)
  • ウィンドウメッセージを送信 -> バックグラウンド実行可能。互換性が高い。まぁまぁ早い。
  • 入力をシミュレート -> バックグラウンド実行可能。互換性が低い。早い。
  • フィールド内を削除 -> フィールド内の文字列を消してから、文字列を送信する。

制御キーを入力

使用可能 -> UI Automation -> 要素 -> キーボード -> ホットキーを押下(Send Hotkey)
  • ウィンドウメッセージを送信 -> バックグラウンド実行可能。

マウスクリック

使用可能 -> UI Automation -> 要素 -> マウス -> クリック(Click)
  • ウィンドウメッセージを送信 -> バックグラウンド実行可能。互換性が高い。まぁまぁ早い。
  • クリックをシミュレート -> バックグラウンド実行可能。互換性が低い。早い。
  • X,Yのオフセット -> 原点からの相対位置を指定する。
  • 位置 -> 原点を指定する。
  • クリックの種類 -> シングル、ダブル、アップ、ダウン。
  • キー修飾子 -> ALT, CTRL, SHIFT, WIN。
  • マウスボタン -> 右、左、中央。

テキストをクリック

使用可能 -> UI Automation -> テキスト -> マウス -> クリック(Click Text)

画像をクリック

使用可能 -> UI Automation -> 画像 -> マウス -> 画像をクリック(Click Image)

画像が出現したとき

使用可能 -> UI Automation -> 画像 -> イベント -> 画像が出現したとき(On Image Appear)

画像が消滅したとき

使用可能 -> UI Automation -> 画像 -> イベント -> 画像が消滅したとき(On Image Vanish)

要素が出現したとき

使用可能 -> UI Automation -> 要素 -> イベント -> 要素が出現したとき(On Element Appear)

要素が消滅したとき

使用可能 -> UI Automation -> 要素 -> イベント -> 要素が消滅したとき(On Element Vanish)

リストボックスの選択

使用可能 -> UI Automation -> 要素 -> コントロール -> 項目を選択(Select Items)

テキストの位置を探す

使用可能 -> UI Automation -> テキスト -> 画面スクレイピング -> テキスト位置を探す(Find Text Position)
  • 出力 -> UI要素 -> CTRL-K 変数名 -> UiElement型
  • 「テキストの位置を探す」で取得した「UiElement uiLoc」からテキスト文字列の真ん中をクリックするための座標を求める方法。
    • clickX = CInt(uiLoc.ClippingRegion.Rectangle.Value.X + uiLoc.ClippingRegion.Rectangle.Value.Width / 2)。
    • clickY = CInt(uiLoc.ClippingRegion.Rectangle.Value.Y + uiLoc.ClippingRegion.Rectangle.Value.Height / 2)。

フルテキストを取得

使用可能 -> UI Automation -> テキスト -> 画面スクレイピング -> フルテキストを取得(Get Full Text)

OCR日本語対応 tesseract OCR

ttps://github.com/tesseract-ocr/tessdata/blob/4.00/jpn.traineddata
  -> mkdir & copy into C:\Users\(自分のログイン名)\AppData\Local\UiPath\app-XX.X.X\tessdata\
                    or C:\Program Files\UiPath\Studio\tessdata\

OCRで文字列取得

使用可能 -> UI Automation -> OCR -> 画面スクレイピング -> OCRでテキストを取得(Get OCR Text)
  • 出力 -> テキスト -> CTRL-K 変数 -> GenericValue型。

OCRエンジン

使用可能 -> UI Automation -> OCR -> エンジン -> tesseract OCR

OCRで検出した文字列をマウスでクリック

使用可能 -> UI Automation -> OCR -> マウス -> OCRで検出したテキストをクリック(Click OCR Text)
  • ウィンドウメッセージを送信 -> バックグラウンド実行可能。互換性が高い。まぁまぁ早い。
  • X,Yのオフセット -> 原点からの相対位置を指定する。
  • 位置 -> 原点を指定する。
  • クリックの種類 -> シングル、ダブル、アップ、ダウン。
  • キー修飾子 -> ALT, CTRL, SHIFT, WIN。
  • マウスボタン -> 右、左、中央。

画面内の文字列の有無チェック(非OCR)

使用可能 -> UI Automation -> テキスト -> 検出 -> テキストの有無を確認(Text Exists)
  • 出力 -> 存在の有無 -> CTRL-K 変数 -> boolean型。

ウインドウを最小化する

使用可能 -> UI Automation -> ウィンドウ -> ウィンドウにアタッチ(Attach Window)
使用可能 -> UI Automation -> ウィンドウ -> ウィンドウを最小化(Minimize Window)

エクセルのセルの内容を読み込む

使用可能 -> システム -> ファイル -> ワークブック -> セルを読み込み(Read Cell)
  • 出力 -> 結果 -> CTRL-K 変数 -> GenericValue型。

エクセルの行の内容を読み込む

使用可能 -> システム -> ファイル -> ワークブック -> 行を読み込み(Read Row)
  • 開始セル -> 指定したセルから読み込む。
  • 出力 -> 結果 -> CTRL-K 変数 -> IEnumerable<System.Object>型。
  • Null判定 -> 変数 is nothing, 変数 isNot nothing。
  • 1個目の項目 -> 変数(0).toString()、100個目の項目 -> 変数(99).toString()。

エクセルの全行の内容を読み込む

使用可能 -> システム -> ファイル -> ワークブック -> 範囲を読み込み(Read Range)
  • ヘッダーの追加 -> 1行目を列名として認識させる。
  • 範囲 -> 読み込み範囲を指定(無指定時は全部)。
  • 出力 -> データテーブル -> CTRL-K 変数名 -> DataTable型。
  • 1行目の1個目の項目 -> 変数(0).Item(0).toString()、10行目の100個目の項目 -> 変数(9).Item(99).toString()。
  • 1行目の1個目の項目 -> 変数(0).Item("列名0").toString()、10行目の100個目の項目 -> 変数(9).Item("列名99").toString()。

CSVの読み込み

使用可能 -> アプリの連携 -> CSV -> CSVを読む(Read CSV)
  • エンコーディング -> "SJIS"、"UTF-8" etc。
  • 列名を含める -> 1行目を列名として認識させる。
  • 区切り文字 -> "\t"、","、";"、"|"。
  • 出力 -> データテーブル -> CTRL-K 変数名 -> DataTable型。
  • 1行目の1個目の項目 -> 変数(0).Item(0).toString()、10行目の100個目の項目 -> 変数(9).Item(99).toString()。
  • 1行目の1個目の項目 -> 変数(0).Item("列名0").toString()、10行目の100個目の項目 -> 変数(9).Item("列名99").toString()。

DataTable型 変数(Excel、CSV全行読み込んだ変数)分繰り返す

使用可能 -> プログラミング -> データテーブル -> 繰り返し(各行)(For Each Row)
  • 1個目の項目 -> row.Item(0).toString()、2個目の項目 -> row.Item(1).toString()。
  • 1個目の項目 -> row.Item("列名0").toString()、2個目の項目 -> row.Item("列名1").toString()。

エクセルのセルに色を付ける

使用可能 -> アプリの連携 -> Excel -> Excelアプリケーションスコープ(Excel Application Scope)
  • 可視 -> シートを表示する。
  • 自動保存 -> 修正内容を自動的に保存する。
使用可能 -> アプリの連携 -> Excel -> 範囲の色を設定(Set Range Color)
  • 入力 -> 色 -> Color.red etc。

デバッグ出力

使用可能 -> プログラミング -> デバッグ -> 1行を書き込み(Write Line)
  • 「出力」タブに出力される。

コメント文挿入

使用可能 -> プログラミング -> デバッグ -> コメント(Comment)

コメント化

使用可能 -> プログラミング -> デバッグ -> コメントアウト(Comment Out)
  • CTRL-D コメント化
  • CTRL-E 非コメント化

Misc

  • 整数化 -> CInt(変数)。
  • 文字列化 -> 変数.toString。
  • 数値チェック -> isNumeric(変数)。
  • CTRL-C(コピー)した文字列には改行(vbCrLf)が含まれる。
  • 空セルをCTRL-C(コピー)した時も改行(vbCrLf)が取り込まれる。
  • InternetExplorer -> インターネットオプション -> 詳細設定 -> セキュリティ -> マイコンピュータのファイルでのアクティブコンテンツでの実行を許可する。
  • publishを取り消す。
    • C:\ProgramData\UiPath\Package\対象パッケージ.nupkg を削除する。
    • C:\Users\ユーザ\.nuget\packages\対象パッケージ\ を削除する。
  • 操作対象アプリケーションの画面遷移の確定を判断する手法
    • 使用可能 -> UI Automation -> テキスト -> 画面スクレイピング -> フルテキストを取得(Get Full Text)
    • 使用可能 -> UI Automation -> テキスト -> 検出 -> テキストの有無を確認(Text Exists)
    • 使用可能 -> UI Automation -> 要素 -> イベント -> 要素が出現したとき(On Element Appear)
    • 使用可能 -> UI Automation -> 要素 -> イベント -> 要素が消滅したとき(On Element Vanish)
    • 使用可能 -> UI Automation -> 画像 -> イベント -> 画像が出現したとき(On Image Appear)
    • 使用可能 -> UI Automation -> 画像 -> イベント -> 画像が消滅したとき(On Image Vanish)
    • 使用可能 -> UI Automation -> OCR -> 画面スクレイピング -> OCRでテキストを取得(Get OCR Text)