fast.comを利用した回線速度の測定をコンソールで行う – 徒然日記


自宅でも仕事をする割合が増えてきた中で自宅の環境の無線LANの環境だったり諸々の設定を変更することが増えてそのたびにブラウザを開き、fast.comで回線速度の測定を行っていたのだけれども、ブラウザを開くのもだんだん面倒になってきたのでコンソールでできないものかと思い調べると、fast-cliというツールを見つけたのでこれを利用している。

npm install –global fast-cli

でインストールできるので、あとは

fast

で実行できる。以下の様な形。

ちなみに -u をつけると上り回線の測定もできる。

Imagemagick compare で画像を比較する


任意の2つのPNGファイルの画像比較して差分を強調表示したものを生成したいと思ったのだけれども、 Command-line Tools: Compare @ ImageMagick があるのでこれを試してみた。

imagemagick自体はbrewでインストールできるので brew install imagemagick で導入した後、以下の様に2つの画像を引数で渡すことで差分が赤色で強調される画像を生成することが確認できた。-metric で比較をする差異抽出用の距離関数が指定できるのでスクリーンショットの様な画像ならAEが良いということだったので

$ compare -metric AE foo.png foo2.png foo-compare.png

といった形で試してみる。例えばこのブログのサイドバーの文言を一部修正する前後のスクリーンショットを撮ったものを比較すると、赤く強調されて気づくことができる。

imagemagickのcompareコマンドの出力結果例
比較して差分があったところが赤く強調されるPNGファイルが出力される

Prophetを触ってみる


同僚が試していたので自分も少しさわってみることにした。

Prophetfacebookが公開している過去の時系列のデータから長期的なトレンドと周期成分、突発的な成分を踏まえて以後の動向予測ができるツールで、自分が試してみようと思ったのは現在単純に線形予測だったり回帰予測でおこなっているところの置き換えができたりするのかなというところがモチベーション。

facebook.github.io

pyenvでPythonとpipをインストールする

以下のエントリのmatplotlibの手前までを実施してPythonをインストールした。

[macOS] Python3をインストールしてmatplotlibでグラフを表示する – Qiita

Prophetの素振り

以下のエントリに倣って試してみる。
qiita.com

m.plot(forecast) で以下のエラーが出てくる。

RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a framework. See the Python documentation for more information on installing Python as a framework on Mac OS X. Please either reinstall Python
as a framework, or try one of the other backends. If you are using (Ana)Conda please install python.app and replace the use of 'python' with 'pythonw'. See 'Working with Matplotlib on OSX' in the Matplotlib FAQ for more information.

これを解決するには先のエントリにある通り、 ~/.matplotlib/matplotlibrc を新規に作成して設置する。

backend : TkAgg

こうすると上のエントリで書かれている様なProphetを試す一連の流れを再現できる。

import pandas as pd
import numpy as np
from fbprophet import Prophet
df = pd.read_csv('example_wp_peyton_manning.csv')
df['y'] = np.log(df['y'])
m = Prophet()
m.fit(df)
future = m.make_future_dataframe(periods=365)
forecast = m.predict(future)
m.plot(forecast).show()

f:id:hideack:20171022164031p:plain

ちなみにCSVに落としたかったら forecast.to_csv("file.csv") といった具合。


実際に手元にあった時系列のデータを読み込ませてみた所かなりカジュアルに周期成分と長期トレンドを予測することができて最初の印象としてはとてもよさそうなのでもう少しいろいろ扱ってみたい。

Google docsのスプレッドシートで集計する際にSQLっぽいクエリを使う


最近業務でgoogle docsExcelで管理されたシートの内容を集計したいことがあって、基本google docsスプレッドシートでゴニョゴニョすることがあるのですが、例えば

の様なものがあって、上の例だと各ユーザのポイントの合計を集計したいなと考えた時にExcelに慣れている方だとExcelの関数が浮かんで集計できるのかと思うのですが自分だとSQL文のイメージが先に出るのでよしなにできないかなと思っていたら、Google docsだと QUERY という関数を使うことで実現できることを知ったのでメモエントリです。

上の例だと D1 のセルに以下の様な内容を記述します。

=query(A2:B9, "select A, sum(B) group by A")

1番目の引数にデータの範囲を指定し、2番目にそのデータ範囲でのクエリを記述します。

SQLを触ったことがある方ならなんとなくわかる記述内容かと思います。入力を完了するとすぐにセルに集計結果が反映されます。

なるほどとても便利。Google docs初期からの機能だった様なのですが本格的に最近触る様になったのでやっと便利さに気づけました。

参照

Query Language Reference (Version 0.7)   |   Charts   |   Google Developers

MacOSのコンソールから複数画像をまとめてリサイズする方法


ほとんど自分用メモですが便利なのでここに記録として残しておきます。

例えば、特定のディレクトリにある全JPEGファイルの長辺を500pxにする形でリサイズする場合は以下の様に sips コマンドを使うととても楽をできます

☁  ~  sips -Z 500 *.jpg

これだけ。

元画像ファイルが残ったりはしないのでその点のみ注意。

Uptime RobotでWebサービスの死活監視する


REMPStobo , Casto のそれぞれのHTTP(S)レベルでの疎通監視に以前から使っていたUptime Robotというサービスのことを書いていなかったので思い出した様に書いてみます。*1

http://uptimerobot.com/

Uptime Robotは50箇所のモニタリングで且つ5分間隔であれば無料で使える監視のWebサービスでHTTP(S)の疎通監視したいサイトを登録すると上の様なダッシュボードで監視状況を見ることができて、且つアラートの通知先として、

  • 基本通知
  • アプリケーション連携
    • Pushbullet, Pushover, HipChat, Slack

が使えます。ちなみにTwitterは通知先のアカウントが @ をフォローすれば、DMで通知が届きます。

またダッシュボードで各監視しているサイトの情報は以下の様な感じでレスポンスタイムの遷移と直近起きたUp / Down 状況とともに確認できます。

無償内でも個人で利用する上では十分な機能を抑えていますので、個人サービス等運営されている方は利用してみてはどうでしょうか。

*1:無論、今日アラートがここから飛んだから書いているということは言うまでもない訳で…。

SlackでHubotを使う


REMPチームで今までチャットシステムにLingrを利用していたのだけど、会社でもSlackの試用を始めたりしているので丸っとSlackに移動させようとLingrで動かしていたHubotをSlackに移した。

Slack自体がHubotを稼働させるためのintegrationとして準備しているのでほとんど障壁が高く無かったのだけど、一応動かした際のメモ。

1. Integrationを追加

https://〜.slack.com/services の Integrations で Hubot を追加する

2. 環境変数の設定

  1. のIntegrationsで追加すると Setup Instructions として表示される HUBOT_SLACK_TOKEN の値をHubotが稼働しているサーバーへ環境変数として追加する。

3. npmパッケージのhubot-slack追加

Hubotのプロジェクトに slackhq/hubot-slack · GitHub を追加する。

$ npm install hubot-slack --save

4. 起動時にslackアダプタを指定

Hubotを起動させる際にアダプタとしてslackを指定する。起動時に -a のオプションを指定する。

$ bin/hubot -a slack

Hubot自体も、Hubotを永続化させるのに利用しているsupervisorの設定もChefのテンプレートとしてリポジトリ管理してたのでその辺りも我ながらよかった。*1

slackhq/hubot-slack · GitHub

*1:というか普通はきっとherokuで動かしてるんだろうな。

minaでデプロイステージを切り替える


REMPSTORYBOARDS ではminaを利用してデプロイを行っているのだけど、これらのアプリケーションでもステージング環境を扱いたいなと思った時に切り替えをどの様にすればよいのか調べたのでメモ。

以下の様な感じで切り分けができる。

case ENV['to']
when 'staging'
set :deploy_to, '/foo/bar/storyboards_staging'
else
set :deploy_to, '/foo/bar/storyboards'
end

これでデプロイする際に

$ bundle exec mina deploy to=staging

とすることでパラメータとして渡すことができるので、これでデプロイ先を切り分けることができる。

evacでPushbulletに出力する


「Pushbullet」最高。 パソコン、スマホ間のデータ送信が信じられないほどラクに! : ギズモード・ジャパンという記事が目についたので便乗エントリ。

evac – Node.js based simple aggregator –を使うとPushbulletのAPIを使ってプッシュ通知することができます。Pushbulletのトークンはアカウントページで確認できます。

{
"in": {
"staticWord": {
"text": "Pushbullet test."
}
},
"out": {
"pushbullet": {
"device": "******@gmail.com",
"token" : "*******",
"title": "テスト",
"mode": "note"
}
}
}

の様なレシピを用意して、以下の様にevacを実行するとプッシュ通知されます。PushbulletにiPhoneChromeを今回は登録しているので下の様にChromeのポップアップと同時にiPhoneにもプッシュ通知が届きます。

$ evac -v recipe/test_pushbullet.js

今回の例は素朴に文字列をそのまま渡すだけですが、こんな感じで何かをトリガーにして、Pushbullet経由で通知することができます。便利。


hideack/evac · GitHub