無料で使える VPN サービス Tunnello (トンネロ) がオススメ

毎月 1GB まで無料な VPN サービス Tunnello (トンネロ) が便利だったので、インストール方法と使い方をご紹介します。

Tunnello VPN

Tunnello のメリット・デメリット

メリット

  • Chrome ブラウザの拡張機能として使える
  • PC・モバイル端末の通信全体を VPN 経由にしなくていい
  • 毎月 1GB まで無料で使える

デメリット

  • Chrome ブラウザでしか使えない
  • Chrome ブラウザの通信しか VPN 経由にならない

Tunnello のインストール方法

Tunnello のインストール手順は How to install Tunnello? に書いてますが、本記事で日本語でご紹介します。

Chrome ウェブストアからインストール

デスクトップの Chrome ブラウザへは、以下の URL から「CHROME に追加」ボタンをクリックして、インストールします。

新規会員登録

Tunnello を利用するには会員登録が必要です。1GB まで無料で使えてそれ以上、使うには課金しないといけません。

まず、Chrome ブラウザの右上ら辺に Tunnello のアイコン(渦みたいなやつ)が追加されているので、それをクリックします。

Tunnello VPN Get Started

GO ボタンをクリックすると、未ログイン状態の場合 Login or Register ページが表示されます。

Tunnello VPN Login or Register

会員登録してない場合はアカウントを新規登録してください。

VPN に接続・切断する

VPN を利用したい国を選択して GO ボタンをクリックすると、VPN への接続が開始されます。

Tunnello VPN Get Started

逆に VPN から切断したいときは、以下のような電源ボタンをクリックすると、切断されます。

Tunnello VPN Connected

データ通信量の利用状況確認

Tunnello の Overview ページにログインすると、データ通信量の利用状況を確認できます。

Tunnello VPN Account Overview

まとめ: Tunnello VPN はオススメ

無料で使える VPN サービスは TunnelBear が有名だと思いますが、Tunnello はブラウザだけ限定して VPN 通したいってニーズを解決できるので、上手く使い分けしていくと良いんじゃないでしょうか。

余談ですが Tunnello は Product Hunt のメルマガで紹介されていて知りました。最近、英語学習をしていて毎日 Product Hunt のメルマガを読んでいて、こちらもオススメです。

[Mocha] before, beforeEach, after, afterEach の実行順番

「あれ? Mocha で before, beforeEach, after, afterEach の実行順番ってどういう順番だっけ?」となることが多かったので記事にしました。

mocha.js

実行順番は before, beforeEach, afterEach, after

結論から書くと、

  1. before
  2. beforeEach
  3. test
  4. afterEach
  5. after

の順番で実行されます。

Mocha のサンプルコード

以下、before, beforeEach, afterEach, after の実行順序を確認するための mocha のサンプルコードです。

describe('before test', function() {
  before(function() {
    console.log('before');
  });
 
  beforeEach(function() {
    console.log('beforeEach');
  });
 
  after(function() {
    console.log('after');
  });
 
  afterEach(function() {
    console.log('afterEach');
  });
 
  it('test', function() {
    console.log('test');
  });
});

何の処理がどこで呼び出されるのか、よく理解してテストコードを書いていきたいですね。

Vue.js Tokyo v-meetup=”#3” 参加レポート #vuejs_meetup3

Vue.js Tokyo v-meetup="#3" に参加してきました。

本記事は、参加レポートという名の自分用まとめです。

Vue.js Tokyo v-meetup="#3"

Vue.js の中身 – 算出プロパティはどうやって動いているか @kitak

Vuexを使ってみなかった話 @atsushiss15

E2D3 の Vue.js 活用 @chimerast

型付きテンプレートがほしい @ktsn

VueでComponentをはじめました @kawakami_kazuyoshi

Vue.js with Go @k2wanko

Vue.js with Go from Kazuhiro Kubota

サーバーサイド Node.js で書いてる自分的には意味がわからなかった 笑

Vue.jsとFirebaseでSPA @buddy7

Firebase 使ってるらしく、初期リリースで採用するの賛成だけど、あとでツラくなるからサービス上手くいきそうな兆しが見えたらリプレースを早めに考えた方がいいと思ってます。

Nuxt.js @inouetakuya

nuxt/nuxt.js: Framework for server-rendered Vue.js applications. の話。

おまけ 懇親会

運営スタッフのみなさま、マイクロソフト社さま、ありがとうございました!

Microsoft Japan Office

検索順位チェックツール Serposcope での CAPTCHA 出現頻度

検索順位チェックツール Serposcope で、実際に検索順位をチェックして CAPTCHA (キャプチャ) が出現した頻度の事例をご紹介します。

Serposcope

CAPTCHA 出現頻度を 10 回以下に抑えることは可能

NETWORKING OPTIONS の各種設定をを何回かチューニングして、約 6000 keyword で 0 ~ 10 回の間に収束することができました。

CAPTCHA 突破サービスの費用が、CAPTCHA 画像 1000 枚を突破するのに $0.7 なので、ほとんどコストが掛かりませんでした。

今後の Serposcope のチューニング課題

  • Pause: Min 60, Max 120
  • Maximum threads: 5
  • Proxies: 9

という構成で TASK 完了まで 11 ~ 13 時間ぐらい掛かっているので、もっと早く完了させたいという点が課題です。

今後は Proxy server を稼働させる時間を短くするために Pause の間隔を短くしたり、Proxy server の数をもっと増やして Maximum threads の上限をあげていくチューニングなどを考えています。

[MongoDB] 小数点第 n 位以下の doc を取得して小数点第 m 位の数値で更新するクエリ

JavaScript で小数点以下の桁数を取得する方法の応用で、MongoDB で小数点第3位以下の doc を取得して小数点第2位に更新するクエリを書いてみました。

MongoDB

続きを読む

Mac で Windows を無料で利用する方法 (IE, Edge のみ)

Mac で Windows を無料で利用する方法をご紹介します。

前提として、Internet Explorer や Microsoft Edge ブラウザの動作確認以外の用途で使うとライセンス違反になるので、それ以外のソフトウェアをインストールしてはいけません。

VirtualBox のインストール

まず、無料の仮想化ソフト VirtualBox をインストールします。

ievms でインストールする

次に Terminal から ievms を利用して IE をインストール

全バージョンをインストール

IE, Edge の全てのバージョンをインストールするには下記のコマンドを実行するだけで完了です。

curl -s https://raw.github.com/xdissent/ievms/master/ievms.sh | bash

特定のバージョンのみをインストール

例えば IE11 と EDGE だけをインストールしたい場合は、以下のようなコマンドを実行します。

curl -s https://raw.githubusercontent.com/xdissent/ievms/master/ievms.sh | env IEVMS_VERSIONS="11 EDGE" bash

Windows の初期ログインパスワード

ログインパスワードは Password1 (Pは大文字)です。

まとめ ievms に感謝

ievms のおかげで Mac だけで IE のブラウザチェックが完結できるのは有り難いです。

参考情報

Inside Frontend #1 参加レポート #insideFE

Inside Frontend という「Web フロントエンドの現場とこれからをつなぐカンファレンス」に参加してきました。

以下、聴講したセッションと所感です。セッション聴いてるときに他の方がよいツイートをしていたのをメモ代わりに「いいね」していたので、それも貼って備忘録としています。

Web over ServiceWorker @jxck_

ServiceWorker についてよく知らなかったので勉強になったという感想です。実務で使われている事例がもっと増えてくるといいなと思ってます。

Progressive Web Apps by @jxck_

Polyfills are part of the web – FT & Nikkei @triblondon

フロントエンドの課題を啓蒙する方法 by @yhassy

アメブロ2016: 実録、アメブロフロントリニューアル275日 – CyberAgent @herablog

karmaを使ったSPA向けのE2Eテスト技法 @kyo_ago

まとめ

フロントエンドの知見をいくつか得られて、満足度が高かったです。

あと、スタバのコーヒー、終わり際までほぼ無限に飲めたのは幸せでした。

FRESH! での配信もされていて、動画も残ってるので気になるセッションはまた観てみます。いい時代になったなー。

Inside Frontend の運営スタッフ、登壇者のみなさま、ありがとうございました!

[Mongoose] timestamp options で createdAt だけ使う

Mongoose の timestamp options で createdAt だけ使う方法を調べたけど、自分で pre hook に実装するしかなかったというお話です。

options.timestamps では createdAt, updatedAt どちらも有効になる

まず、Mongoose version 4.8.5 時点では、ソースコードを読んだ限りでは options.timestamps には createdAt, updatedAt のどちらかだけ使うという option はありませんでした。

以下、Mongoose のソースコードを一部抜粋しました。

/**
 * Setup updatedAt and createdAt timestamps to documents if enabled
 *
 * @param {Boolean|Object} timestamps timestamps options
 * @api private
 */
Schema.prototype.setupTimestamp = function(timestamps) {
  if (timestamps) {
    var createdAt = timestamps.createdAt || 'createdAt';
    var updatedAt = timestamps.updatedAt || 'updatedAt';
// ...
  }
};

createdAt だけ有効にするサンプルコード

というわけで .pre(“save”) .pre(“findOneAndUpdate”) .pre(“update”) とかに options.timestamps 的な hook を追加するサンプルコードをご紹介します。

var yourSchema = new Schema({
  createdAt: {
    type: Date
  }
});
 
yourSchema.pre("save", function(next) {
  var now = new Date;
  if (this.isNew) {
    this.createdAt = now;
  }
  return next();
});
 
yourSchema.pre("findOneAndUpdate", function(next) {
  var now = new Date;
  this.findOneAndUpdate({}, {
    $setOnInsert: {
      createdAt: now
    }
  });
  return next();
});
 
yourSchema.pre("update", function(next) {
  var now = new Date;
  this.update({}, {
    $setOnInsert: {
      createdAt: now
    }
  });
  return next();
});

最後に、小ネタですが timestamp options を削除するという issue があるので確認してみると version 4.11 のマイルストーンで削除されるかもしれません。

Proxy サーバー構築 – squid 編

squid 3.x を使って Proxy サーバーを構築しました。

squid のインストール

まず squid をインストールします。

sudo apt-get update
sudo apt-get install squid

squid のバージョンを確認してインストールされていることを確認します。

$ squid -v
Squid Cache: Version 3.5.12
Service Name: squid
Ubuntu linux
configure options:  '--build=x86_64-linux-gnu' '--prefix=/usr' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--libexecdir=${prefix}/lib/squid3' '--srcdir=.' '--disable-maintainer-mode' '--disable-dependency-tracking' '--disable-silent-rules' 'BUILDCXXFLAGS=-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' '--datadir=/usr/share/squid' '--sysconfdir=/etc/squid' '--libexecdir=/usr/lib/squid' '--mandir=/usr/share/man' '--enable-inline' '--disable-arch-native' '--enable-async-io=8' '--enable-storeio=ufs,aufs,diskd,rock' '--enable-removal-policies=lru,heap' '--enable-delay-pools' '--enable-cache-digests' '--enable-icap-client' '--enable-follow-x-forwarded-for' '--enable-auth-basic=DB,fake,getpwnam,LDAP,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB' '--enable-auth-digest=file,LDAP' '--enable-auth-negotiate=kerberos,wrapper' '--enable-auth-ntlm=fake,smb_lm' '--enable-external-acl-helpers=file_userip,kerberos_ldap_group,LDAP_group,session,SQL_session,unix_group,wbinfo_group' '--enable-url-rewrite-helpers=fake' '--enable-eui' '--enable-esi' '--enable-icmp' '--enable-zph-qos' '--enable-ecap' '--disable-translation' '--with-swapdir=/var/spool/squid' '--with-logdir=/var/log/squid' '--with-pidfile=/var/run/squid.pid' '--with-filedescriptors=65536' '--with-large-files' '--with-default-user=proxy' '--enable-build-info=Ubuntu linux' '--enable-linux-netfilter' 'build_alias=x86_64-linux-gnu' 'CFLAGS=-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security -Wall' 'LDFLAGS=-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2' 'CXXFLAGS=-g -O2 -fPIE -fstack-protector-strong -Wformat -Werror=format-security'

squid インストール後に status を確認するともう起動してました。squid せっかち。

$ service squid status
● squid.service - LSB: Squid HTTP Proxy version 3.x
   Loaded: loaded (/etc/init.d/squid; bad; vendor preset: enabled)
   Active: active (running) since Sat 2017-02-18 13:39:01 UTC; 28min ago
     Docs: man:systemd-sysv-generator(8)
    Tasks: 4
   Memory: 18.3M
      CPU: 461ms
   CGroup: /system.slice/squid.service
           ├─2831 /usr/sbin/squid -YC -f /etc/squid/squid.conf
           ├─2838 (squid-1) -YC -f /etc/squid/squid.conf
           ├─2841 (logfile-daemon) /var/log/squid/access.log
           └─2866 (pinger)
 
Feb 18 13:39:01 proxy1 systemd[1]: Starting LSB: Squid HTTP Proxy version 3.x...
Feb 18 13:39:01 proxy1 squid[2788]:  * Starting Squid HTTP Proxy squid
Feb 18 13:39:01 proxy1 squid[2788]:    ...done.
Feb 18 13:39:01 proxy1 systemd[1]: Started LSB: Squid HTTP Proxy version 3.x.
Feb 18 13:39:01 proxy1 squid[2831]: Squid Parent: will start 1 kids
Feb 18 13:39:01 proxy1 squid[2831]: Squid Parent: (squid-1) process 2838 started

Proxy サーバー構築のために squid.conf を編集する

まず、デフォルトの squid.conf ファイルをバックアップします。

sudo cp /etc/squid/squid.conf /etc/squid/squid-origin.conf

次に、設定ファイル squid.conf を以下のように編集、追記します。

#http_access deny all
 
forwarded_for off
 
request_header_access X-Forwarded-For deny all
request_header_access Via deny all
request_header_access Cache-Control deny all
 
reply_header_access X-Forwarded-For deny all
reply_header_access Via deny all
reply_header_access Cache-Control deny all

diff は以下のとおりです。

$ diff /etc/squid/squid-origin.conf /etc/squid/squid.conf
1188a1189,1192
> # Alow my server's host
> acl myhost src xxx.xxx.xxx.xxx/255.255.255.255
> http_access allow myhost
> 
1599c1603
< http_port 3128
---
> http_port 13128
5156a5161,5163
> request_header_access X-Forwarded-For deny all
> request_header_access Via deny all
> request_header_access Cache-Control deny all
5507a5515
> visible_hostname myhostname.com
7621a7630
> forwarded_for off

squid.conf ファイルの編集が完了したら、squid リロードして設定を反映させれば完了です。

service squid reload

あとは、なんかしらの方法で Proxy サーバー経由でアクセスできてることを確認しましょう。

よき Proxy ライフをお過ごしください!

参考情報

検索順位チェックツール Serposcope で使える CAPTCHA 突破サービス価格比較

検索順位チェックツール Serposcope で使える CAPTCHA 突破サービスの価格を比較しました。

Serposcope

CAPTCHA 突破サービス価格比較

de-captcher.com

de-captcher.com

The price is $2 for 1000 images. We accept payments from $10.

ということで、CAPTCHA 画像 1000 枚を突破するのに $2 かかるようです。

deathbycaptcha.com

deathbycaptcha.com

Starting from an incredible low price of $1.39 ($0.99 for Gold Members !) for 1000 solved CAPTCHAs.

ということで、CAPTCHA 画像 1000 枚を突破するのに $1.39 かかるようです。

anti-captcha.com

anti-captcha.com

Starting from 0.7USD per 1000 images, depending on your daily upload volume

ということで、CAPTCHA 画像 1000 枚を突破するのに $0.7 かかるようです。

CAPTCHA 突破サービスの費用試算

約 3000 キーワードを Desktop/Mobile の2デバイスで、毎日検索順位をチェックすることを考えて試算すると、

3000 keywords * 2 devices * 30 days = 180000
180000 / 1000 images = 180
$0.7 * 180 = $126 (per 1month)

毎月 $126 かかる計算になりました。実際には毎回 CAPTCHA が表示されるわけではないので、こんなに費用かからないはずですけど。

CAPTCHA 突破サービス比較まとめ

どのサイトも胡散臭さ満載ですね(笑)

手始めに少ロットで最安値だった anti-captcha.com を使ってみたところ、ちゃんと CAPTCHA を突破してくれました。

突破する CAPTCHA 数が多い場合は、ボリュームディスカウントもあるみたいなので使用量によってもっとも安いサービスを利用したいですね。