ツール

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

ターミナル上で確認できるCUIベースのダッシュボードが作れる"blessed-contrib"

blessed-contribというCUIベースのダッシュボードを作れるnpmパッケージを触ってみた。以前紹介したdashingはブラウザで閲覧できましたが、これはターミナル上で確認できます。素敵。

百聞は一見にしかずということで下のGIFアニメ参照。

tmuxで区切った画面の右側にblassed-contribで作ったダッシュボードを表示させています。

ダッシュボードの中身は

  • 左側に利用しているMacのCPU温度の折れ線グラフ(2秒毎に更新)
  • 右下にCPU温度の値(1秒毎に更新)
  • 右上にredisのログ(ログ更新毎)

が表示されています。redis-cliからflushdbするとダッシュボードの右上にredisのログが流れていくのや、左上でredisへ書き込みを行うプログラムを走らせるとCPU温度のグラフが右肩上がりしていきます。

具体的にダッシュボードを作るには以下の様なスクリプトで実現をすることができます。

CUIベースでも十分表現力あるので、ターミナル上でいろいろ眺めるダッシュボードを作ってみたい方はお試しを。

yaronn/blessed-contrib · GitHub