先日Node.js8 がリリースされました (参考) 。
追加機能の中に util.promisify
というものがあります。これは、すでに
bluebird や
es6-promisify といったパッケージで提供されていた、
コールバック関数を伴う非同期関数を、Promiseを返す関数化するユーティリティ関数ですが、今回のリリースでNode本体に含まれるようになったようです。
Slackのstatusをtaskerを使って自分の居場所によって自動変更する
先日、slackで 名前の横に自分のステータスを表示する機能 がリリースされました。 これはDMを送ろうとしたときの入力欄などにも表示されるため、適切に設定すれば「まだ出社してないのにメンション飛ばされた」「有給休暇中なのにDM送られた」みたいな気まずい悲劇を回避するのに役立ちそうです。
ただ、有給休暇などの特別なイベントならともかく、毎日出社時・退社時にslackのstatusをマメに変更するのは少々面倒です。そこで、Androidアプリの Tasker を使い、Android端末の位置情報から自動でslackのstatusを更新できるようにしてみました。
続きを読むHubotでasync functionを使う
最近(と言っても一ヶ月前ですが・・・)node7.6.0がリリースされ、
--harmony-async-await
をつけなくても async/await
が利用可能となりました。
これにより、非同期処理を行うスクリプティングがより行いやすくなった(スクリプティング以上の用途ならばどうせ babel
を使うためそこまで影響はない)と感じています。
hubotなどのbotプログラミングも
定常タスクを楽にするためのスクリプティングの一種であり、用途上連携サービスのAPIをたくさん叩くため、
恩寵を存分に得ることができます。この記事ではhubotで async/await
を使う例を紹介します。
すべてのリポジトリでGithubのpull requestをfetchする設定
githubのプルリクエストのコミットをローカルにfetchする方法はよく知らてていますが (知らない人は是非設定をオススメします。特にコードレビューでレビュー相手がfork先からプルリクエストを出している場合でも対象コミットを取得できるため便利です)、 この方法はリポジトリごとに毎回設定する必要があり多少面倒です。
そこでこの設定を、
git config --global --add remote.origin.fetch '+refs/pull/*:refs/remotes/pr/*'
としてグローバルに設定してみたところ、普通に動きすべてのローカルリポジトリでプルリクエストをfetchしてくれるようになりました。
便利です。
気になること
remoteの設定をglobalに記述するのはあまり聞いたことがなく若干の不安はあります。
この状態でリポジトリの remote.origin.fetch
の値を取ると、
>> git config --get-all remote.origin.fetch +refs/pull/*:refs/remotes/pr/* +refs/heads/*:refs/remotes/origin/*
となっており、リポジトリのconfigに記述した時と同じになっているため、問題ないのかな?とは思います。 今のところはGithub以外のリポジトリへのfetchも問題なく快適です。
もし詳しい方がいれば、補足していただけると助かります。