After a long time, I am.

日々のメモ

Slackに通知するLambda

Slackにメッセージを飛ばすLambdaつくる。

cloudwatchのアラームをSlackに飛ばしたいと思ったので、 Lambdaを作ってSNSから飛ばす形で作ってみたいと思った。
slack-python-webhook(slackweb)を使って非常に簡単にできる。

lambdaのコード(Python3.6)

# coding: utf-8
import json
import slackweb

def lambda_handler(event, context):
  text = event['Records'][0]['Sns']['Message']
  print(text)
  hook_url = "https://hooks.slack.com/services/XXXXXX/XXXXXX/XXXXXXXXXXXXXXXXXXXXXXXX"
  username = "FromLambda"
  channel = "#channel"
  icon_emoji = ":face_with_rolling_eyes:"

  slack = slackweb.Slack(url=hook_url)
  slack.notify(text=text,
               channel=channel,
               username=username,
               icon_emoji=icon_emoji)

Lambdaファンクションの作成

# vim lambda_function.py
(コードを記載)
# vim requirements.txt
#
# cat requirements.txt
slackweb
# pip install -r requirements.txt -t ./
# zip -r9 func.zip *

作成したzipファイルを使ってLambdaを作成。

SNSからLambdaに飛ぶように設定する。 SNSが送信するJSONの中身は以下のような感じ。

{
  "Records": [
    {
      "EventVersion": "1.0",
      "EventSubscriptionArn": "arn:aws:sns:EXAMPLE",
      "EventSource": "aws:sns",
      "Sns": {
        "SignatureVersion": "1",
        "Timestamp": "1970-01-01T00:00:00.000Z",
        "Signature": "EXAMPLE",
        "SigningCertUrl": "EXAMPLE",
        "MessageId": "95df01b4-ee98-5cb9-9903-4c221d41eb5e",
        "Message": "Hello from SNS!",
        "MessageAttributes": {
          "Test": {
            "Type": "String",
            "Value": "TestString"
          },
          "TestBinary": {
            "Type": "Binary",
            "Value": "TestBinary"
          }
        },
        "Type": "Notification",
        "UnsubscribeUrl": "EXAMPLE",
        "TopicArn": "arn:aws:sns:EXAMPLE",
        "Subject": "TestInvoke"
      }
    }
  ]
}

cloudwatchアラームが発生すると
cloudwatchAlarm→SNS→Lambda→Slackという感じでメッセージが飛んでくる。

【Mackerel】まとめてホストを退役させる

Mackerelでは監視しなくなったホストを、「退役」させることで監視対象外とする。
退役させたいホストがいっぱいある場合、画面からポチポチやるのが面倒なので、
MackerelのCLIを使わせて頂いて、ホストを一気に退役させる。

MackerelのCLIツール mkr
https://mackerel.io/ja/docs/entry/advanced/cli

退役させるコマンド

mkr retire --force host_id

ホストIDを引数に渡してあげればいいので ホスト情報のJSONからjqでホストIDを取り出して渡してあげれば良い。

ホスト一覧を取得。3台のホストが登録されている。

# mkr hosts --service ServiceName --role RoleName | jq '.'
[
  {
    "id": "2XXXXXXXXXX",
    "name": "TST02",
    "status": "working",
    "roleFullnames": [
      "ServiceName:RoleName"
    ],
    "isRetired": false,
    "createdAt": "Mar 2, 2017 at 2:51am (UTC)",
    "ipAddresses": {
      "eth0": "172.20.XX.XX"
    }
  },
  {
    "id": "2XXXXXXXXXX",
    "name": "TST01",
    "status": "working",
    "roleFullnames": [
      "ServiceName:RoleName"
    ],
    "isRetired": false,
    "createdAt": "Mar 2, 2017 at 2:50am (UTC)",
    "ipAddresses": {
      "eth0": "172.20.XX.XX"
    }
  },
  {
    "id": "2XXXXXXXXXX",
    "name": "TST03",
    "status": "working",
    "roleFullnames": [
      "ServiceName:RoleName"
    ],
    "isRetired": false,
    "createdAt": "Mar 3, 2017 at 7:40am (UTC)",
    "ipAddresses": {
       "eth0": "172.20.XX.XX"
    }
  }
]

IDだけ取り出す。

# mkr hosts --service ServiceName --role RoleName | jq '.[].id'
"2XXXXXXXXXX"
"2XXXXXXXXXX"
"2XXXXXXXXXX"

いらんもんくっついてる

# jq --help
--raw-output / -r
output raw strings, not JSON texts
つまり "文字列" → 文字列 みたいに生なヤツを出現させる

--compact-output / -c
compact instead of pretty-printed output
コンパクトに出力してくれる!コンパクトって最高じゃん!とりあえずコンパクトだ!
# mkr hosts --service Practice --role EC2 | jq -r -c '.[].id'
2XXXXXXXXXX
2XXXXXXXXXX
2XXXXXXXXXX

よし。

老兵は死なずただ消し去るのみ。

# for ID in $(mkr hosts --service ServiceName --role RoleName | jq -c -r '.[].id') ;do mkr retire --force ${ID} ;sleep 1 ;done
   retired 2XXXXXXXXXX(ああ……)
   retired 2XXXXXXXXXX(ひどい!)
   retired 2XXXXXXXXXX(そんな……)

本当は引退したくなくても本人の意向を無視して有無を言わせず引退に追い込むので 使う時は気をつける。 なんかタクティクスオウガで部隊から隊員を解雇する時の場面が頭をよぎった。




叫びたい。生きることが辛いんだと。(第一回転職活動総括)

齢28にして、転職活動をはじめてみた結果を総括しようと思う。

というか疲れたので、転職活動を休止しようと思っている。

またいつか再開はすると思うので第一回転職活動総括ということで。

タイトルは、転職活動中に自分のメモに気づいたら書き殴っていた文章だ。

「叫びたい。生きることが辛いんだと。」

働きながらの転職活動は、聞いていたものより遥かに厳しいものがあった。

というか、現職も狙ったかのように転職活動開始と機を合わせて忙しくなりはじめたのが

運がないというか何というか。

第一回の転職活動では2週間で6社ほど応募した。

書類は通り、一次面接で落とされるケースが多かった。

理由は「スキル不足」。当人も自覚していた部分はあるが、書面で言われると中々辛いものがある。

(新卒のときは、落ちても企業からの面接フィードバックとかないけど、中途はエージェントからフィードバック)

というか、ね。

書類で落とせと。

声を大にして言いたい。

エージェントから「良いやつなんですよ!ね?とりあえず、会ってみるだけ会ってみませんか!?ね!?」

とぶち込まれているのかもしれないが。

エージェントはもちろん、自分の仕事を全うしているだけだし、

企業の担当者も、「職務経歴書からは読み取れないスキルについて、詳しく聞いてみよう」とか

思ってるのかもしれない。

色々な人の色々な事情は慮った上であるが、釈然としないものがある。

働きながらの面接は、とても負担になる。

履歴書作成、職務経歴書作成、企業研究、現職の日程調整などなど。

甘えるな、とは言われそうだが、それが自分という人間なのである。

これは今回を機に自己分析も詳細に行った結果である(笑)

根がネガティブ思考な人間であるため、やれ面接対策の「常にポジティブに!」「前向きに、笑顔絶やさず!」

とか疲れちゃうのである。

転職先で失敗したら、どうなる?とかそもそも人生で俺が成し遂げたいことって何?とか

そもそも俺の人生って何?とか考え込むに至って、「叫びたい。生きることが辛いんだと」ってなったわけですな。

転職活動ってもっと楽にならないのかなー。

俺としてはビデオ会議を提案する。自宅で転職活動完結するじゃん。

本当これ、真面目に採用されないかな。雇用の流動性、めっちゃ上がると思う。

【Linux】fdisk -C のmanが面白すぎる件

# man fdisk FDISK(8) Linux Programmer’s Manual FDISK(8) 名前 fdisk - Linux 用のパーティションテーブル操作ツール 書式 fdisk [-u] [-b sectorsize] [-C cyls] [-H heads] [-S sects] device fdisk -l [-u] [device ...] fdisk -s partition ... fdisk -v 説明....... オプション -b sectorsize …… -C cyls ディスクのシリンダ数を指定する。なぜこれを指定したいと思うのかは分からない。 -H heads …… なんで分からないんだよww 英語でも笑える。 -C cyls Specify the number of cylinders of the disk. I have no idea why anybody would want to do so. 真面目なフリして笑わせないで。

【読書】嫌われる勇気

人に薦められたので、読んでみた。

嫌われる勇気―――自己啓発の源流「アドラー」の教え
岸見 一郎 古賀 史健
ダイヤモンド社
売り上げランキング: 10

読後の率直な感想は「よくわからないが読んでいる間は楽しかった」である。 概要は、「哲人」と「青年」との対話を通して、 オーストリアの心理学者アルフレッド・アドラーの心理学を学ぶというものである。

で、何が楽しいってこの本の登場人物の「青年」である。 対話の流れとして、「世界はどこまでもシンプルであり、人は今日からでも幸せになれる」と標榜する哲人を、青年が論破しようと挑むのだが、 哲人が何か言う度に、青年は 「な、なんですって!?」 と叫ぶのである。 それが面白くて、仕方がない。

哲人……(アドラーの思想)!!

青年な、なんですって!?そ、それは悪魔の思想だ!唾棄すべき危険思想(ry」

こういったやりとりが数度に渡って繰り返されるため、 対話が面白くて思想に集中できません(笑)

個人的な感想としては、それまで猜疑心の塊で、哲人を論破しようと躍起になっていた青年が 下記のやりとりで何故か完全にやられてしまい、終盤一気におとなしくなってしまうのが口惜しいところ。

哲人「あなたはこれまで、『いま、ここ』から目を背け、ありもしない過去と未来ばかりに光を当ててこられた。 自分の人生に、かけがえのない刹那に、大いなる嘘をついてこられた。」

青年「……ああ!」(腰砕け)

『……ああ!』じゃないよ!どうしてそこで諦めるんだ!どうして!」

その時はじめて気づいたんだ。 僕は、この本の「青年」に自分自身を重ね合わせていたこと。 青年に、哲人を論破して欲しかったこと。 対話がはじまってからずっと、青年を応援していたこと。

そう、この「青年」「僕」だったんだ!

「な、なんですって!?」

 

というか僕は、この本の読み方を完全に間違えたので 純粋に、何度か読み直したい本である。

 

キャリモ日記その4。

画像
格下相手に無慈悲な試合をして悦に浸っているとすぐに冷水をぶっかけられる件。
画像
いや、本当強い。 Aマドリーには勝てるようになったけど、バルセロナ・マドリーの2強が崩せない。 こっちが20回ぐらいパスを繋いで必死にゴールを決めた1分後に縦ポン一発でベンゼマメッシにゴールを決められる。 モウリーニョも雑誌で言っていた。「偉大なチームには偉大なFWと偉大なGKがいる」と。 バルセロナはメッシとバルデス、マドリーはベンゼマ(ゲームでは最高)とカシージャス(ゲームではスタメン)。 我がデポルも夏の移籍で獲得したジラルディーノとパンティリモンが大活躍で、チームは2016-2017シーズン3月時点でリーガ首位。(リーグカップバルセロナに5-2,3-2で負け敗退。) だがシーズンの終盤、4月のカレンダーが恐ろしいことになっていた。
画像
画像
画像
画像
画像
何じゃこりゃあ。。。チャンピオンズカップ含むマドリーとの3連戦Aマドリーバルセロナとはな…。 これは4月全敗の匂いがプンプンしてきたなあ。。。すべてのコンペティションからの脱落が決まる一ヶ月にならないようただ祈るのみ。。。 ベルナベウをジラ様のバイオリン演奏発表会場にしてやる。見てろ!
画像

キャリモ日記その3。

2015-2016シーズン終了。 結局、バルセロナとの対戦は国内カップとリーグすべて合わせて4戦あったが、すべて敗北した。 試合を重ねるにつれて、内容は良くなり惜しい試合もあったが、脆弱なディフェンスラインを好きなように破られての失点が多すぎ、どうにもならず。やはりバルセロナに勝つにはセルヒオ・ラモスやペペのような暴力的屈強なDFが必要なのか…。 というか交代A・サンチェス、シャビ、ネイマールが入ってくるとかね。 あまりの選手層の差にションベンちびりそうでしたねぼかぁ。
画像
2015-2016シーズン成績 シーズン最終順位 3位
画像
2強のリーグと言われても仕方がない。無念じゃ。特に勝ちたかったマドリー・バルサ・Aマドリーに1勝もできなかったのが悔しい。2強との差はやはり守備力か。
画像
下位チームのほうでは何気にシーズン一分け一敗で負け越したビジャレアルさんが降格。残念。 得点ランキング
画像
アシストランキング
画像
チーム内得点ランキング
画像
チーム内最優秀選手はやっぱりアリスメンディさん。 そしてシーズンは終了。 夏の移籍市場開幕。 とりあえず目についたイケメンをGET☆
画像
なにこの圧倒的イケメン…。これは来季スタメンだな…。 オーナー「我がデポルではルックスもとても重要な要素だ。つまりシャビイニエスタはうちではプレーできない。」 あと重要な補強として前線にイタリア2部に落ちていたキエーヴォからパロスキを獲得。 大いに期待して新シーズンへ! 2016-2017シーズン夏獲得選手 GK  C.Pantillimon CB  N.Pejcinovic CM  S.Thern CAM Denis Suarez ST  A.Paloschi ST  A.Gilardino