githubで脆弱性アラートが出てたので対応した
githubはリポジトリが依存しているライブラリなどをスキャンして
脆弱性があるバージョンを使っているとアラートを出してくれる。(知らなかった)
なにげなく前々回の記事で作ったリポジトリを眺めていたときにアラートを発見した。
なるほどなにか脆弱性があるっぽい。
どうやら内部で利用している `requests` というライブラリに脆弱性があるとのこと。
2.19.1以前だとhttpsからhttpにリダイレクトされた際に問題がある模様。
そこまで分かればとりあえずPipfile.lockを更新後動作確認して対応完了。
調べたところどうやらこの仕組みは2017年11月から動作しているもので
現在はJS, Ruby, Python, Java, .NETをサポートしているらしい。
そういうのはメールで通知くれ頼む〜と思って、通知設定を確認したら以下のようになっていた。
もしかすると2017年11月以前に登録したユーザーはデフォルトだと通知が飛ばないようになってるかもしれない。
ので、全部受け取るように変更した。
今回のケースでは特に影響の無いタイプの脆弱性だったため、「ほーん」という感じだったが
CVE追っかけたりするのはかなり大変なのでとても助かる。
Goでカラバリをシュッと生成するCLIツールを作った
作った
動機
社外の人も参加する勉強会的なイベントで
プレゼンをする機会があり、資料作成にすごい時間がかかり非常につらかった。
人前で喋るのはすごく嫌いというわけじゃない(≠得意)けど、資料作成は苦手。
どうせなら資料きれいな方がよかろ、図も入れたろとなった時に絵心が不在なので
ライセンス的にセーフな素材を色々なところを探しまわる必要がありつらい。
配色・デザインセンスは壊滅的なものの、視認性良くないだろ的な部分は気づいてしまうので
色味調整するために色々いじっていると更にすごい時間がかかってしまいつらい。
他にもいい方法あるかも知れないけど、GIMPダウンロードしてきて色相調整して書き出して…
みたいなことをやっていると、あと2時間後に発表みたいなことになっているのでとてもつらい。
いい感じの素材があったら、それをもとに簡単に別の色のパターンが出てきて欲しい。
機能
画像をひとつ入力に取って色相(彩度、輝度)を変化させた画像を複数出力する。
イメージはこんな感じ。
仕組み
まず入力された画像を内部的にRGBカラーモデルからHSL色空間に変換する。
HSL色空間では、色相(Hue)を極座標系のように扱えるため
色相を少しずつ変えていけば同じ彩度輝度で別の色パターンを簡単に生成できる。
後は出てきて欲しい画像の数に合わせて、色相の分割数を増減してファイルとして出力する。(初期値は10)
(参考)
zemax.seesaa.net
その他細々としたこと
HSL色空間を利用してカラバリを作るにあたって考慮しないといけなかった点はグレースケール画像と白黒の単色画像。
グレースケール画像は彩度が、白黒の単色画像は彩度と輝度が0なので、いくら色相を変化させても元の色のまま。
今回のツールではグレースケールか白黒の単色画像を検出して、その場合は彩度と輝度に適当な値(50%)を入れている。
go内部で色の取り扱いは乗算済みアルファが用いられているので単純なRGBと思っていじるとイメージ通りにならない。
(値域が0 ~ 255ではなく0 ~ 65025 (255*255))
なのでストレートアルファとして扱いたいときは、color.NRGBAを使う必要がある。
(参考)
qiita.com
謝辞
ヒューマンピクトグラム2.0 様
種類すごいたくさんあって改変利用OKで本当に助かりました。
pictogram2.com
物理出勤ボタンを作った
今勤めている会社では最近になって労働形態が裁量労働制からコアあり(12-16)のフレックスになった。
そのため出退勤の記録を(割と)ちゃんとつけるようになったのだが、それがまあまあ面倒。
いや、そこまで言うほど面倒ではないのだけれど、忘れる。忘れるので後から怒られる。
これまで特に記録していなかったのだからまあ仕方ない気もするが、怒られるのは困る。
ということで、ちょっと前に買って持て余していたAWS IoT Enterprise Buttonを使って物理出勤ボタンを作った。
前提
会社では勤怠管理にジョブカンという勤怠管理ツールを使っている。
これまで1ホップ前とか2ホップ前の会社では使っていなかったのだけれど結構導入している企業もある模様。No.1って書いてあった。
公式にSlack連携を提供していて、なんと設定をするとSlackのコマンドで出退勤時の打刻、稼働時間表示、残有給表示などなどができる。
これで気まずい思いをしながら人事のお兄さんお姉さんに残有給を確認したりする必要がなくなった。
それで、今回はIoT Buttonが押されると出退勤時の打刻がされて欲しい。
ジョブカンがAPIを提供していればそこを叩いてもよいのだけど、ちょっと調べた感じだとなかったので
ジョブカンに連携しているSlack側に対してどうにかしてコマンドを実行させる。
構成
IoT Buttonが押されたらそれをトリガにAWS IoTからAWS LambdaでSlackにコマンドを実行する。
スラッシュコマンドでジョブカンが動作して出退勤の打刻がされる。
登場人物少ないしかんたん(そうに見える)。
準備
スクリプトの作成
社が使ってる言語はJava, Ruby, Goだけど、個人的に小さいのを書くのにはPythonを使うことが多いのでPythonで
前にbotを作るのに使った下記のライブラリを使う。
APIを利用してコマンドを実行する場合留意する点は2つ。
- レガシートークンを利用する
通常のIncoming Webhooksなどであれば連携用のトークンを生成して利用すればよいのだけど
今回の場合、Slack上でジョブカン連携済みユーザーとして投稿するためレガシートークンを利用する。
(レガシートークンは現在非推奨となっているが、ユーザーになりすまして投稿する必要があるため致し方ない)
- 非公開APIの
chat.command
を利用する
非公開APIの chat.command
を利用する。
Slack側のAPIドキュメントには無いが、何故か有志が公開したものが以下にある。
非推奨のトークンで非公開のAPIを叩いていて非常に治安が悪い。
動作しなくなる可能性もあるので、その場合は諦めて別の実装にするか諦めるかする。
書いた
書いたコードは20行ちょっと。
Lambdaに上げるために関連するライブラリも含めてzip化している。
こういう時周辺ライブラリが充実してる言語は強いなあと思う。
Lambda側の用意
新たにLambda Functionを作成して、スクリプトはさっきのリポジトリのzipファイルを設定する。
ランタイムは Python 3.6, ハンドラは上記のzipだと slack_slash_command.lambda_handler
ユーザーのレガシートークン、投稿先のチャンネル、発行するコマンド、付随するテキスト(省略可)を環境変数に設定する。
テストして意図したチャンネルに投稿されていればOK。
IoT Buttonのセットアップ
セットアップにはスマートフォン向けアプリがあるのでそれを使う。
iOS : https://itunes.apple.com/us/app/aws-iot-button-dev/id1178216626?mt=8
Android : https://play.google.com/store/apps/details?id=com.amazonaws.iotbutton&hl=ja
起動してログインするとこの画面である。
精神年齢が小学生のままなので、この時点でIoT Buttonの外箱とか捨てちゃっていた。
箱の横にバーコードとかあって、スキャンすると一発らしいけど丁寧にデバイスIDを手打ちしていく。
6, 10, 14文字目を入力すると、バグって二文字入力されるという不具合があって厳しい(自分の環境だけ?)
ここで入力ミスをしたり、次のWifiのSSIDやパスワードでミスると最初からやりなおしになる。
入力も楽しい!と思える人以外は素直に箱を残しておいた方がよさそう。
Amazon 1-clickから Lambdaへの連携を設定する
IoT Buttonとの接続に成功すると、AWSコンソールのAWS IoT1-Clickから登録したデバイスの設定が出来るので対応する。
ブラウザからIoT Buttonの残電池容量とか見れるのいい感じ。
プロジェクトを新規作成して名前を設定、デバイス種別をすべてのボタンに設定
アクションをLambda関数の選択
として 、さっき作ったLambda Functionを設定する。
プロジェクトを作成後、新規プレイスメントの設定をしてさっき登録したIoTデバイスを選択して終了。
うまくいっていれば、IoT Buttonを押すと3秒~5秒くらいおいてSlackにコマンドが送信される。
オチ
セットアップして早速使おうと思ったらコアタイムに遅刻した。つらい。
(普通にSlackからスラッシュコマンドを手打ちして実行した)
ということでまだちゃんと使ってないけどもこんな感じです。
社のみんなたちは僕の机で見つけても連打しないであげてください。
職を転してちょうど1年が過ぎた
なんとなく過去のFacebookメッセンジャーのログを眺めていたら、
現職の社長と入社日の調整のやりとりのログを見つけた。
『使いたいPCやキーボードやマウスはなんですか?』
「えっ、なんでも選んでいいの?めっちゃ高いやつ買ったろ!」
というところから始まり、
「地方からの引っ越しなのでもうちょい待って欲しい!」
『いや、それは都合いいタイミングで良いから落ち着け』
みたいなところで終わってて、どんだけ楽しみだったんだ自分と思って笑ってしまった。
ログの日付が2017年3月10日で、その1ヶ月後の4月10日に入社したので
昨日でちょうど転職して一年になる。思い返すとあっという間だった。
辞めエントリは絶対に書かないと…と思ったまま1年が過ぎてしまったので
時が過ぎて記憶が極端に美化される前に、転職前後に何を考えてたかを思い出して書く。
いつもタブの数が爆発している人へ
One Tab入れましょう。以上。
Web系キラキラ女子エンジニアな先輩に教わってから
2秒でヘビーユーズ。むしろ出会うのが遅すぎた。
Chromeだったらコレ。chrome.google.com
Firefoxだったらコレ。addons.mozilla.org
使う場面としては、例えば、夕方オフィスでMP切れるじゃないですか
あ、19時過ぎた、息抜きにgigazineのヘッドライン見よーつって
これだよ!
ちょっとでも食指が伸びた記事をクリックするとこうなる
アイコンが見えなくなってからが勝負みたいな。
分かる分かるっていう人はこっち側です、ようこそ。
とりあえず一旦全部クリックしてみて、それから考える派ね。
それでも安心。OneTabがあれば、ポチって押すだけでこう。
あ、押すのは右上の水色の漏斗みたいなアイコンです。
OneTab内にリンクがリストされて、他のタブは閉じられる。
しかもかなり便利なことに、一括で戻せたり、
リストをロックしたり、名前をつけて保存したり出来る。
一旦頭冷やして、後でゆっくり読むことも出来るし
なんなら何か調査系のタスクでとりあえずリンク踏みまくって
OneTabで保存して、ちゃんとそれぞれ評価したり出来る。
もちろん全破棄してもいい!
便利!
まぁ既に結構積んでるけどな!