読者です 読者をやめる 読者になる 読者になる

風柳メモ

ソフトウェア・プログラミング関連の覚書が中心。

BIGLOBE光ネクストIPv4通信速度調査:PPPoE対v6プラス(平日と土日祝日の比較)

承前。
furyu.hatenablog.com

前回測定時に、平日と土日祝日で随分と(特にPPPoEの)傾向に違いがあるように思えたので、同じ日数分(19日分)のデータを使用して、平日と土日祝日とで分けてプロットしてみた。

平日と土日祝日の比較

平日

f:id:furyu-tei:20161129204321p:plain
02時~16時頃であれば、PPPoEの方がv6プラスよりも良い結果が出ているため、その時間帯ならPPPoEでも可……?
一般的な会社員にはいささか使いづらい時間帯ではあるが。

土日祝日

f:id:furyu-tei:20161129204334p:plain
03時~08時頃を除き、PPPoEでは速度の低下が著しいため、可能であればv6プラスを使用するのが吉。

ここ最近の推移

各期間(7日間)の時間帯毎の中央値をプロットしたものを参考までに示す。


2016/10/07~10/13

2016/10/14~10/20

2016/10/21~10/27

2016/10/28~11/03

2016/11/04~11/10

2016/11/11~11/17

2016/11/18~11/24

Evernote からエクスポートした HTML を Word 文書に一括変換する方法を調べてみた

Evernote のノートは HTML 形式でエクスポートできるが、そのままでは編集しづらいので Word 文書にできないか? という相談を受けたので、調べてみた。

基本的には、

  1. Evernote で対象となるノートを選択し、「複数の Web ページファイル (.html) でエクスポート」にてエクスポート
  2. Word で HTML ファイルを開き、Word 文書 (.docx) として保存しなおす

でいけるような気がしたが、 手動でいちいち変換するのは面倒なので、VBScript でまとめて処理できるようにしようとした。

ところが、VBScript に不慣れなのと、思わぬ問題も出てきて試行錯誤が必要になったため、その覚え書きとして記事の形にまとめておく。




EvernoteHtmlToWord (VBScript)

最終的にできあがった、Evernote からエクスポートした HTML を Word 文書化するための VBScript。
github.com

VBScript の処理内容と試行錯誤など

やっていることは、ドラッグ&ドロップされた *.html ファイル(もしくは、フォルダ直下に含まれる *.html ファイル)を順に Word で読み込み、Word 文書 (*.docx) 形式で保存しているだけ……なのだけれど、意外と苦労した。

画像が外部参照になってしまう

Word で HTML を読み込み、そのまま形式を Word 文書 (*.docx) として保存しただけだと、画像が外部ファイルへのリンクのままとなってしまう。
文書内に画像を埋め込もうとすると、 Word 上の操作では、

「ファイル」タブ→(右側の「関連ドキュメント」の)「ファイルへのリンクの編集」で、『種類:図』のリンク元ファイルを選択し[リンクの解除]を実施、「☑ 文書に図を保存する」にチェックをして[OK]をクリック

となるような処理を、VBScript 上でも行う必要があった。

Sub EmbedImages

Sub EmbedImages( objDocument )
    For Each objShape In objDocument.InlineShapes
        If Not objShape.LinkFormat Is Nothing Then
            objShape.LinkFormat.SavePictureWithDocument = True
            objShape.LinkFormat.BreakLink
        End If
    Next
End Sub

※参考:word VBA for save picture in document - Stack Overflow


ファイル名にタイムスタンプを付けたい

ファイル名で並べたときに、時系列順にしたいという要望があった。
これは、Evernote からエクスポートした際、オプションで「☑作成日(C)」にチェックして、*.html ファイル内に「作成日」等を埋め込み、これをファイル名に反映することで対応。
地味に、Wordの全テキスト取得方法を調べるのに手間取った……
Function EvernoteTimeStamp
ファイルの作成日時・更新日時を変えるようにした方がよかったかも?
更新日時については変更するようにしてみた(作成日時は変更方法がわからなかった)

タイムスタンプの時刻が一桁のときがある

Evernote からエクスポートした *.html の作成日は、「作成日: 2016/11/19 2:34」のように、時刻が一桁の時があるが、ファイル名に使うなら 0 パディングしたかったので、処理を追加。
Function PadLeft
※参考:まいてっくぶろぐ - 【VBS】文字列が指定桁数に満たない場合、0詰めする関数

作成日がうまく取得できない(日本語文字列が検索でひっかからない)

"作成日[^\d]*(\d+)/(\d+)/(\d+)[^\d]*(\d+):(\d+)" のような日本語を含む正規表現で検索しようとすると、うまくいかない。
これは、VBScript ファイル (EvernoteHtmlToWord.vbs) を UTF-8 で保存していたため。
ファイル形式を Unicode に変更すると、うまく検索できるようになった。
ファイル形式は Shift JIS でも可。

ファイル名が原因で変換されないファイルがある

ドラッグ&ドロップで指定したファイルのいくつかが変換されていなかった。
調べてみると、ファイル名に『〜』(U+301C)や『プ』(U+30D5 U+309A)等の文字が含まれる場合には、うまく変換できない模様。
これはどうも、WScript.Arguments からファイル名を取り出した時点ですでに化けてしまっているらしく、<FileSystemObject>.FileExists() が False を返す。

当該ファイルを直接ドラッグ&ドロップする場合にはうまい解決策が見つからなかったが、それらのファイルが入ったフォルダをドラッグ&ドロップし、<FileSystemObject>.GetFolder() で取得した Folder オブジェクトFiles コレクションからパス名(.Path)を取得するようにすると、こちらはうまく処理できる模様。

ドラッグ&ドロップするファイル数が多すぎると実行できない

ファイルをドラッグ&ドロップで指定する場合、数が多すぎると「実行できません。引数一覧が長すぎます。」というダイアログが出て、実行できない模様。
VBScript の制限だと思われる。自分の環境では、495ファイル以上でファイルで発生(494ファイルはOK)。これがマジックナンバーなのか、その他の要因があるのかは不明。
この場合は、対象ファイルが入ったフォルダをドラッグ&ドロップしてやれば、その中に495ファイル以上の *.html があっても、実行可能。

BIGLOBE光ネクストIPv4通信速度調査:PPPoE対v6プラス(2016/10/07~2016/10/13の一週間の傾向)

furyu.hatenablog.com
の続きで、一週間継続して測定した結果を示す。
測定条件等は前の記事を参照のこと。

IPv4 PPPoE については、以前一週間の傾向を調べたとき(2015/08/12~18)から改善は見られない(むしろ、夜間の通信速度低下は悪化して見える)ことから、同じような傾向で悩んでいる方は、v6プラスの利用を検討しても良いかもしれない。
まぁ、このあいだの記事でも書いたとおり、制約も多いのだけれども。

結果(2016/10/07~2016/10/13)

IPv4 PPPoE 対 IPv4 over IPv6 IPoE(v6プラス)比較

f:id:furyu-tei:20161015095825p:plain

  • PPPoEは高低の差が大きく、特に夜間には輻輳の影響のためか急激に速度が低下
  • IPv6 IPoE(v6プラス)は時間帯による通信速度の変化は小さい
IPv4 PPPoE

f:id:furyu-tei:20161015095747p:plain

  • 週間を通じて、夜間(19時頃~25時頃)の通信速度低下が顕著
  • 土日や祝日(10/8~10)には、09時頃から急な速度低下が見られる
IPv4 over IPv6 IPoE(v6プラス)

f:id:furyu-tei:20161015095557p:plain

  • 時間帯や、休日の影響による差は、現状PPPoE程は見られない