slackで未払い残業代を手にいれる
GWも明けて五月病真っ只中の季節ですが、新卒の人たちは社会人生活を謳歌してるのでしょうか。
え?GWも出勤?しかも、残業代が出ない?ブラック企業へ入社おめでとう!
でも、そんな可哀想なあなたに、slackを使って、ブラック企業から未払い残業代を請求する方法を伝授します。
もくじ
- どうやって残業代を請求するの?
- 準備
- slackにつぶやく
- batファイルを作る
- メッセージを飾ってみる
- スタートアップ/シャットダウンスクリプトの設定
- そして本当の戦い
1.どうやって残業代を請求するの?
残業代に必要なものは、残業していたという記録です。 それは、就労時間を記録したメモでもよいのですが、メモなんてしてる暇ねーよ。さっさと帰りたいんだよ。しかも、周りに怪しまれるじゃねーか。
というわけで、PCをオン・オフしたところでslackにメッセージを飛ばすことで就労時間を自動で記録するのがゴールです。
2.準備
対象はWindows PCです。 MAC?そんな会社ブラックじゃねーよ。
1.slackのアカウント取得
slack.com にいってアカウント作るべし。 [company name] ってあるけど、本当の会社名入れないように。URLに使われるだけだから、適当なワードを入力すること
2.APIアドレスの設定
Incoming WebHooks という通知用のURLを取得する。
設定画面から、URLを取得できる。
詳しくは以下参照のこと
Incoming WebHooksを使用して、GitBucketにpushしたり、pull request作成,pull requestをマージ,pull requestにコメント,issue作成等をした際にSlackのチャンネルに通知メッセージを投稿してみる - keiwt’s diary
3. curlのダウンロード
公式にもある通り、メッセージを通知するのは、cURLコマンドで先ほど取得したURLにPOSTするのが一番楽。
だが、Windowsでは、curlコマンドはないので、ダウンロードする。
詳細は以下を参照。
Windows®環境にcURLコマンドを実行できるようにインストールする手順 | ええかげんブログ(本店)
会社PCだとインストールできない場合もあるが、zip版を落とせば解凍しただけでコマンドが使える。 適当なフォルダで解凍しましょう。 その後、環境変数PATHにそのフォルダを設定しておく。
3. slackにつぶやく
batファイルを作成し、以下のコマンドを書いて実行する。
start.bat
curl -X POST --data-urlencode "payload={\"text\":\"start working!\"}" https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
ダブルコーテーションをエンコードするのは、Windows版cURLの仕様です。参考
え?proxy使ってる?
ならばこう。
start.bat(proxy設定)
curl -X POST --proxy http://192.168.1.1:8080 --data-urlencode "payload={\"text\":\"start working!\"}" https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
え?sslがなんたらとかへんなエラーが出た?
curl performs SSL certificate verification by default, using a "bundle" of Certificate Authority (CA) public keys (CA certs). If the default bundle file isn't adequate, you can specify an alternate file using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in the bundle, the certificate verification probably failed due to a problem with the certificate (it might be expired, or the name might not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use the -k (or --insecure) option.
じゃ、メッセージの通り、-kオプションを追加で。
start.bat(-kオプション)
curl -X POST --data-urlencode "payload={\"text\":\"start working!\"}" -k https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
で、実行すると
おめでとう!
2. メッセージを飾ってみる
今回起動用とシャットダウン用とで2つbatファイルを作るので、ついでに日本語にしてみる。
なお、slackのAPIでは文字コードをutf−8で送らなければならず、Windows版cURLのコマンドラインでは文字化け不可避なので、apiに渡す部分を外部ファイル化する。
また、あとあとスタートアップスクリプトとして利用できるように、cdコマンドなども追記しとく
start.bat
c:
cd C:¥script¥slack
curl -X POST --data-urlencode payload@start.json https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
{
"text": "今日も一日がんばるぞい!",
"channel":"#work",
"username":"社畜",
"icon_emoji":":smiley:"
}
end.bat
c:
cd C:¥script¥slack
curl -X POST --data-urlencode payload@end.json https://hooks.slack.com/services/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
{
"text": "今日も一日がんばったぞい!",
"channel":"#work",
"username":"社畜",
"icon_emoji":":skull:"
}
オプションの説明
text:メッセージ本文
channel:slack上のチャンネル(なしでも可)
username:つぶやいた人の名前
icon_emoji:つぶやいた人のアイコンを絵文字で指定できる。一覧はここから
これらのファイルを C:¥script¥slack に全部置いて順番に実行すると、こんな感じになる。
ちゃんと時間が記録されてますね(もちろん日付も見える)
では、最後の仕上げ
3. スタートアップ/シャットダウンスクリプトの設定
このスクリプトをWindowsのスタートアップ/シャットダウン時のスクリプトとして動作させます。
簡単なのは、グループポリシーを使用してスタートアップ/シャットダウン時に先ほどのスクリプトを指定します。
以下参照(XPですが)
@IT:Windows TIPS -- Tips:グループ・ポリシーを使って、コンピュータの終了時にコマンドを実行する
4. そして本当の戦い
slackは無料枠で、10000メッセージが保存されるので、5000日分つまり13年は出退勤の時刻が保存可能。 あとは、その証拠(slackの就労記録と実際の給与明細の労働時間とか)を持って労働基準監督署にヘルプミーして、会社を相手に一戦交えれば晴れて未払い残業代をゲットだぜ!
補足
うまく動かないんだぜ?
グループポリシーのスクリプト実行時の環境変数PATHは、ユーザー変数は認識しないので、システム変数のPATHを設定すること。
PATH自体設定できない場合は、batファイル内でフルパスでcurlコマンドを実行。
グループポリシーが使えない場合
スタートアップにショートカットを置くか、トリガーを起動時にしたタスクを作成することで、起動時のスクリプトは実行できる
しかし、シャットダウン時は、そういう方法が使えないので、slackへのメッセージ通知コマンドの後ろにシャットダウンコマンドを書いたbatファイルを作り、PCの電源を切る時は、そのbatファイルを起動するようにする(若干厳しいか・・・)
ruby 2.1.0 on Amazon Linux で小数点以下の割り算が0.0になる
偏差値を割り出す小数点以下のめんどうな計算なのだが
開発環境とプロダクションで、同じrubyバージョン、同じデータ同じロジックなのに、計算結果が異なる。
しかも、irbやコマンドベースで実行するとちゃんと出るという謎仕様。
式
(0.8125 - 1.14003927) * 0.5 / 0.62771825
開発環境(Mac OSX 10.10.3)
$ ruby -v
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-darwin14.0]
$ ruby -e "p (0.8125 - 1.14003927) * 0.5 / 0.62771825"
-0.2608967239681178
プロダクション(PaaS の sqaleを利用)
$ ruby -v
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux]
#OSは Amazon Linux
$ cat /etc/issue
Amazon Linux AMI release 2012.09
Kernel \r on an \m
$ ruby -e "p (0.8125 - 1.14003927) * 0.5 / 0.62771825"
-0.2608967239681178
ただし、デバッグログだとこの計算式が0になる。 なんで?
#debg log
(0.8125 - 1.14003927) * 0.5 / 0.62771825 =>: -0.0
解決方法
なんか括弧でくくったら直った。
式
(0.8125 - 1.14003927) * (0.5 / 0.62771825)
#debg log
(0.8125 - 1.14003927) * (0.5 / 0.62771825)=>: -0.260896723968117847073377
しかも、小数点以下の桁が増えた。 rubyとOSとの問題?
ExcelとかWordファイルをテキストに一括変換
やりたいこと
SIerの成果物とExcelとWordで作られた議事録とで矛盾がないかチェックしたい
=> 機能名や画面・帳票名をキーに全ての議事録ファイルを検索して、書いてあることをチェックしたい
=> 議事録ファイルを一括でテキストに変換してGrepしたい ←コレ
ということをやりたかったのですが、vectorでフリーソフト探してもいいのが見つからない。
そうやって悩んでいたら、Winmergeのアドオンで、wordやexcelのdiffできるやつがあったなー。あれテキストに変換してdiffするんじゃなかったっけと思って調べたらビンゴ
- 使い方
xdoc2txt.exe -f word.doc
=> word.txt が作成
xdoc2txt.exe -f doc/*
=> docフォルダ配下のファイルが一括でtxtに変換