2016年5月31日火曜日

2016年5月8日日曜日

DeliciousからGoogleブックマークに引っ越し。ついでにVimperatorで簡単にブクマできるようにした

つい最近だと思うのだけど、私の勤務先の社内ネットワークからDeliciousにログインできなくなってしまった。
Fig.1 Deliciousにログインできない
技術情報サイトのブックマークにDeliciousを使っていた身としては、結構死活問題である。
とはいえ、会社に「Delicious使えるように戻してくれ」と申し入れるのも、何だか波紋を広げそうな気がする。
幸い、Googleブックマークは今でも社内ネットワークから使えるので、この際Googleブックマークに引っ越しすることにした。
ついでに、Vimperatorから簡単にブクマできるよう一工夫施すこととする。
注:本手順は2016年5月8日現在の情報です。DeilciousもGoogleもよく仕様を変えるので、今後手順が変わる可能性は大いにあります。
DeliciousからGoogleブックマークへのデータ移行
データの引っ越し手順は比較的カンタンで、DeliciousのブックマークをHTML形式でエクスポートし、Googleブックマークにインポートすればよい。

まずは、Deliciousにてブックマークのエクスポートを行う。
Fig.2"Profile" -> "Settings"へ
Fig.3 "Export"タブを選択
Fig.4 "Export"ボタンをクリック
Fig.5 HTMLファイルが出力される
Deliciousから無事にブックマークをエクスポートしたら、次にGoogleブックマークが提供するインポート画面 https://www.google.com/bookmarks/deliciousimportに行く。
Fig.6 "Delicious to Google Bookmarks"ページ
実はこの画面、元々はDeliciousのアカウント情報を入力するだけでDeliciousからGoogleブックマークにデータを自動インポートしてくれる代物だったのだけど、現在は(恐らくDelicious側の仕様変更のせいで)全く機能しない。ただ、DeliciousでエクスポートしたHTMLをインポートする機能も用意されており、こっちは幸い今でも正しく機能してくれている。
 ページ下部 "Upload HTML" セクション内の「参照」ボタンをクリックし、先ほどDeliciousでエクスポートしたHTMLファイルを指定。続けて"Upload to Google Bookmarks" ボタンをクリックすれば引っ越しできる。
Fig.7 「インポート」ボタンをクリック
Fig.8 無事インポート完了
Firefox(Vimperator)から簡単にブクマできるようにする
無事データが引っ越しできたので、次に、閲覧中のページをVimperatorで簡単にブクマできるようにする。
まずは、GoogleブックマークにブクマするためのBookmarkletを、Firefoxのブックマークに登録する。
今回はGoogle ブックマークに別窓で追加する bookmarklet - スクラップだ!を使わせていただくことにした。
この時、キーワードを設定しておくことがポイント。今回は "googlebookmark" としておいた。
Fig.9 Bookmarkletを登録
次に、この bookmarlet をVimperatorのqmarkに登録する(ここで、先ほど設定したキーワードが活きる)。
:qmark b googlebookmark
これでバッチリ準備完了。
以後、ブクマしたいページで gob とタイプするだけで、Googleブックマークの登録画面が表示される。超便利。
Fig.10 ブクマしたいページで、"gob" とタイプ
Fig.11 別タブでGoogleブックマーク登録画面が開く

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の方はメンテされないそうなので注意。

2016年1月28日木曜日

Vimperatorプラグイン"relative_move.js"をFirefox 44で動くようにした

Firefox 44で…というか、最近のFirefoxで動くようにした感じ。
relative_move.jsは、相対パス指定でページを移動できるプラグインで、俺的にはすごく便利なんだけど、メンテされてない様子を見ると、みんな使ってないのかな。
GitHubへのPushはしていない。後で時間があったらPushしようかなと。
それよりも、Firefox 43では動いていたcaret-hint.jsが44で動かないのを何とかしないと…。
2016.02.05追記:caret-hint.js は Vimperator 3.11.3 で動くようになってた。助かった。
2016.02.08追記 GitHubにプルリク出しました。
2016.03.22追記 修正しきれてない箇所があったので、修正してGitHubにプルリク出しました。