2016年2月18日木曜日

CraftLaunch3.xでStepOutto(未完成)

ぐぐっても出てこなかったので書いた。が、まだ未完成。
パスの長さに応じてウインドウの横幅を変えたいのだけど変わってくれない。
activeMessageLoopを使ってるからダメっぽいが、他にやり方が分からない。

なお、親ディレクトリのパスを取得する処理は、UNCパスにも対応させたかったので、os.pathは使わずに地味な文字列処理で実装。
あと、StepIntoの方は、CraftLaunch3標準の補完機能に任せることとして、実装を諦めた。

2016年2月14日日曜日

VPSでSoftEther VPNを使って自宅LANに外部から接続する

2016.02.18 スクリプトvpnserver.shに不備があったので修正。末尾に追記あり。

自宅(大阪の方)のインターネット環境をSoftbank Airに変えた。
ところが、Softbank Airの機器(Airターミナル)はポート開放ができないので、自宅のVPNサーバー(SoftEther VPN Server)に外から接続できなくなってしまった。
どうしたもんか、と色々調べていたら、似たような境遇の方がいて(Softbank Air導入期。VPSでVPNを使って自宅LANへアクセスしてみた。 | しま★りん.blog @ayurina)、この記事が大変参考になったので、同じような構成を組んでみることにした。
具体的には
  • VPSを借りて、そこにSoftEther VPN Serverを立てる。
  • 自宅サーバーにはSoftEther VPN Bridgeを入れて、VPS上のSoftEther VPN Serverにカスケード接続する。
という構成で、自宅LANをVPSまで伸ばそうというわけである。
外部からVPN接続する時は、VPS上のVPN Serverに対して接続しに行く。ここを経由することによって、外部からも自宅LANに入れるようになる。
構成を図に示すと、下のようになる。赤い太い線がVPNトンネル、緑の細い線がL2の論理接続を示す。
Fig.1 VPNネットワーク構成
図内の各機器の接続は、以下のようになる。
  • おうちサーバー上の仮想HUB"BRIDGE"とVPS上の仮想HUB"DEFAULT"の間は、SoftEther VPNによりL2のトンネルが形成される。
  • おうちサーバー(及び自宅内の他のデバイス。図では省略)は、仮想HUB"BRIDGE"経由でVPS上の仮想HUB"DEFAULT"とL2接続する。
  • VPSのOSは、TAPインターフェイス"tap_vpn"を介して仮想HUB"DEFAULT"とL2接続する(Linuxの場合、物理NIC"eth0"は仮想HUBと接続できない。SoftEther VPNマニュアル 3.6.9 tap デバイスの使用参照)。
  • 外部から接続する場合は、そのデバイスのVPNクライアント機能(Windowsの場合はMS-SSTP、iOSやAndroidの場合はL2TP over IPsec)で仮想HUB"DEFAULT"との間にトンネルを作って通信を行う。
細かいところは、以下の本文中で説明する。
なお、VPSにはDigitalOceanを使うことにした。

2016年2月6日土曜日

続:SeleniumBasicでExcelVBAからFirefoxを自動操作するための覚書

前回の続き。
FindElement(s)ByCssがやたら便利
以下の様な感じで、特定の属性(attribute)を持つ要素(element)に簡単にアクセスできる。
こりゃあFindElement(s)ByXPath要らないだろ。
Public driver As New WebDriver
Dim td as Object
td = driver.FindElementsByCss("td[class=""tdclass""]")(3).Text

Dim boldText as String
boldText = driver.FindElementsByCss("span[style=""font-weight: bold;""]")(1).Text

driver.FindElementsByCss("a[href=""/hogehoge.html""]")(1).Click

driver.FindElementByCss("img[onMouseOver=""bar();""]").Click

2016年2月1日月曜日

SeleniumBasicでExcelVBAからFirefoxを自動操作するための覚書

2016.02.06 一度開いたFirefoxのウインドウを使い回すコードを修正。

 Excel VBAでFirefoxを操れる素晴らしいツール。それがSeleniumbasic
以前はSeleniumVBAという名称だったが、昨年秋ごろにSeleniumBasicに変わった。今後SeleniumVBAの方はメンテされないそうなので注意。