ようへいの日々精進XP

よかろうもん

2020 年 07 月 09 日 (木)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている. 色が濃くなれば濃くなる程強度が高い (歩行, 走行距離が長い) ということで. 実装の詳細はこちら.

ジョギング

朝, 始業前に.

ギョーム

  • ECS AMI 更新, 作業自動化の見通しが出来てきた感じ
  • 不要な AWS リソースの整理やら
  • Go で Lambda 関数書いている

ディナー

昨日のハンバーグをデミグラスソースで. 赤ワインやらケチャップやら色々と煮詰まったソースが美味しゅうございました. でも, おろしハンバーグの方が好きだなあ.

Serverless で An error occurred: xxxxxxxxx - A version for this Lambda function exists ( 1 ). Modify the function to create a new version. というエラーが出た場合の対応 (暫定版)

tl;dr

Serverless で, コードを一切変更せずに, serverless.yml の設定だけをイジって (関数にタグを設定した) デプロイ sls deploy したら, 以下のようなエラーが発生して, とりあえず対処したのでメモしておきます.

An error occurred: xxxxxxxxx - A version for this Lambda function exists ( 1 ). Modify the function to create a new version.

とりあえず の対処なので, 正しい対処の方法なのか解っていないので, より良い対策が確認できたら追記したいと思います.

versionFunctions: false

serverless.yml に追加

versionFunctions: false を serverless.yml に追加しました.

---
# yamllint disable rule:line-length

service: sample-application
provider:
  name: aws
  versionFunctions: false
  runtime: go1.x
  region: ap-northeast-1
 
...

この状態でデプロイすることで, 先述のエラーは発生しなくなりました.

versionFunctions について

以下, ドキュメントです.

www.serverless.com

デフォルトでは Lambda 関数はデプロイ毎に新しいバージョンが作成され続けますが, versionFunctions: false を指定することで, これを抑制することが出来ます. デプロイ毎に新しいバージョンが作られなくなることで, 古いバージョンにロールバックしてデプロイすることが出来なくなります.

尚, Serverless ではデプロイの際にコードの sha256 ハッシュ値を計算していますが, このハッシュ値を比較して, バージョンを変更するようです. (ハッシュ値が異なれば新しいバージョンと判断している) 今回のエラーはコードが変更されていないにも関わらず, Serverless が Lambda 関数の新しいバージョンを作成しようとした為に発生したと思われます.

github.com

参考

www.serverless.com

seed.run

以上

色々と解っていないわたくしでございました.

ダウンロードした RDS (PostgreSQL) のスローログで duration とクエリだけを出力するワンライナー

tl;dr

ダウンロードした RDS (今回は PostgreSQL) のスローログを以下のような感じで出力したいと思って試行錯誤したのでメモしておきます.

xxx1.xxx ms SELECT * FROM xxxx WHERE xxx1
xxx2.xxx ms SELECT * FROM xxxx WHERE xxx2
...

一番左の列には経過時間, その後にクエリの文字列全てを出力したいと思います. また, 経過時間が長い順番に降順に出力します.

ちなみに, 実際のログファイルは以下のような文字列になっています.

2020-07-07 09:07:46 UTC:xx.xx.xx.xx(58946):user@db:[1234]:LOG:  duration: 2953.164 ms  execute <unnamed>: SELECT * FROM foo WHERE bar = xxx
2020-07-07 09:08:46 UTC:xx.xx.xx.xx(58946):user@db:[1234]:LOG:  duration: 3053.164 ms  execute <unnamed>: SELECT * FROM foo WHERE bar = xxx

ワンライナー

以下のようなワンライナーを書きました.

$ grep duration postgresql.log.YYYY-MM-DD-HH | cut -d ' ' -f 6- | sort -r -n | sed 's/execute <unnamed>://'

先述の文字列で試してみます.

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"

$ cat << EOS | cut -d ' ' -f 6- | sort -r -n | sed 's/execute <unnamed>://'
> 2020-07-07 09:07:46 UTC:xx.xx.xx.xx(58946):user@db:[1234]:LOG:  duration: 2953.164 ms  execute <unnamed>: SELECT * FROM foo WHERE bar = xxx
> 2020-07-07 09:08:46 UTC:xx.xx.xx.xx(58946):user@db:[1234]:LOG:  duration: 3053.164 ms  execute <unnamed>: SELECT * FROM foo WHERE bar = xxx
> EOS
3053.164 ms   SELECT * FROM foo WHERE bar = xxx
2953.164 ms   SELECT * FROM foo WHERE bar = xxx

意図したように出力されました.

キモは cut -d ' ' -f 6- でしょうか.

$ cut --help
Usage: cut OPTION... [FILE]...
Print selected parts of lines from each FILE to standard output.

With no FILE, or when FILE is -, read standard input.

Mandatory arguments to long options are mandatory for short options too.
...
  -d, --delimiter=DELIM   use DELIM instead of TAB for field delimiter
  -f, --fields=LIST       select only these fields;  also print any line
                            that contains no delimiter character, unless
                            the -s option is specified
...

-d はデリミタはスペース, -f は列を指定することになりますが, 6- を指定することで, 6 列目以降を取得しています.

参考

以下の記事を参考にさせて頂きました.

man7.org

blog.cles.jp

ありがとうございました.

以上

メモでした. まだまだ知らないことが多いです.

シュッと CloudWatch Alarm の動作確認をしたい場合 に AWS CLI を使えば良かった

tl;dr

CloudWatch Alarm の通知がちゃんと届くか確認したい場合, 都度, しきい値をズラしたりして確認していましたが, AWS CLI で確認することが出来るので備忘としてメモしておきます.

set-alarm-state

cloudwatch の set-alarm-state を利用します.

docs.aws.amazon.com

--alarm-name オプションにアラーム名を指定して, 以下のように実行します.

$ aws cloudwatch set-alarm-state \
  --alarm-name "Lambda/Errors - my-lambda-function" \
  --state-value ALARM --state-reason "テストです, 無視して下さい"

実行すると, アラームの状態が OK から Alarm に変わります.

とても

簡単ですね. これで, しきい値をズラしたりする必要がなくてイイ感じです.

2020 年 07 月 08 日 (水)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている. 色が濃くなれば濃くなる程強度が高い (歩行, 走行距離が長い) ということで. 実装の詳細はこちら.

ジョギング

朝, 始業前に.

夕, 仕事が終わってから.

背中の痛みほぼ無し, 但し, 膝やくるぶしの周りに痛みが出てきた.

ギョーム

  • メトリクスの確認, KAIZEN につなげることが出来たので良かった
  • タスクの整理もだいたい出来てきたので心機一転, これからの半年を頑張りすぎず頑張ろう
  • 集中してコードを書く時間を作れてよかった

ディナー

おろしポン酢のハンバーグ. ジューシーでとても美味しゅうございました.

2020 年 07 月 07 日 (火)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている. 色が濃くなれば濃くなる程強度が高い (歩行, 走行距離が長い) ということで. 実装の詳細はこちら.

ジョギング

雨でお休み. まあ, 休めってことかなということで. でも, 体が鈍ってきている感じなので, 明日は走りたいなあ.

ギョーム

  • 課題の整理したり
  • 打ち合わせがあったり

課題の整理が集中して出来て良かった.

ディナー

好物のジャーマンポテイト, 昨日も食べた南蛮漬け. 南蛮漬けは二日目が美味い. ということで, 今宵も美味しゅうございました.

Kibelaコマンドラインクライアント

社内の情報共有基盤として Kibela を使っているけど, 記事を vim で書きたいなと思っていて, 以前から気になっていた Go で書かれたコマンドラインツールを試してみたいと思います.

github.com

2020 年 07 月 06 日 (月)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている. 色が濃くなれば濃くなる程強度が高い (歩行, 走行距離が長い) ということで. 実装の詳細はこちら.

ジョギング

朝, 走りに行こうと思って外に出たら, ちょうど雨が降ってきて, 「こりゃあ, 止めとけってことかな」って独り言を言いつつお休み. 足も張っていたし, ちょうど良い休みと思うことにした.

ギョーム

  • 2 時間くらい CloudWatch メトリクスを眺めて色々とアプリケーションチーム内に共有したり, 確認したり, 変化への気付きに対してもっと敏感になりたい
  • インフラチームのタスク整理等
  • ngx_mruby 案件の改修したり

ディナー

好物の鮭の南蛮漬け. 桜えびの生姜ご飯, 長芋のオーブン焼き. 美味しゅうございました.

21 世紀の C 言語勉強会に参加した

fukuokarb.connpass.com

@udzura さんが発起人として, C 言語についてワイワイする感じの勉強会にオンライン参加した.

今日は, mruby-io と mruby-socket のソースコードリーディングをメインに C 言語に捕らわれず, Linuxシステムコールの話等が飛び交い, 最初の 20 分くらいしかついていくことが出来なかったけど, ツッコミ枠の matz さんのとても解りやすい解説が C 言語が 1bit もわかってない自分でもすごく楽しく視聴することが出来た.

視聴後, C 言語を学びたいという気持ちが強くなったし, ソースコードの読み方みたいなものも学べたような気がした. 参加された皆さん, お疲れ様でした.

2020 年 07 月 05 日 (日)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている. 色が濃くなれば濃くなる程強度が高い (歩行, 走行距離が長い) ということで. 実装の詳細はこちら.

ジョギング

YAMAP だと 4 キロくらいしか走っていない計算だけど, 手元の Fitbit だと 7 キロくらい走ったことになっていて, いくらなんでもこの違いはないだろうという気持ち. そして, 久しぶりのランなので, 足や腰が色々と痛くて辛い.

夕方, 奥さんと改めて山王公園を散歩. なんだか蒸し暑い感じで汗をジワーっとかいて不快な散歩だった.

ギョーム

おやすみ.

今日は何もしなかった

ほんとに何もせず, 奥さんのお買い物 (戦場ルミエールへの食材買い出し) にお付き合いしただけで, 後はダラダラ... 15 分お昼寝するつもりが, 2 時間くらい爆睡してしまった.

ThinkPad トラックポイント キーボード II

やっと出荷された!!

f:id:inokara:20200705232952p:plain

初代にはビールをぶっかけてしまいダメにしてしまったので, 今回はより大切に使いたい.

ディナー

鉄板プレートで焼き肉. 清水の舞台から飛び降りる気持ちで購入した佐賀牛肩ロースがとても美味しくて独り占めしたい気持ちを抑えつつ, 夫婦で分け合ってあっという間に食べ終わった. 美味しゅうございました.

2020 年 07 月 04 日 (土)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている. 色が濃くなれば濃くなる程強度が高い (歩行, 走行距離が長い) ということで. 実装の詳細はこちら.

ジョギング

まずはゆっくりと. 本当にゆっくりと走った.

ギョーム

おやすみだったけど, WAF の IPSets を更新したり, DynamoDB にレコードを放り込むコードを書いた. やりたいことがだいたい形になった感じ.

ディナー

奥さん初挑戦の「つくね」が美味しゅうございました. しかし, 軟骨とか入れて食感が楽しめるようにするとより良かったかな.

2020 年 07 月 03 日 (金)

アクティビティ (今までの走行 (歩行) 距離)

https://pixe.la/v1/users/inokappa/graphs/fitbit-activity

Fitibit Charge2 のアクティビティから走行 (歩行) 距離を Fitbit Web API で取得して Pixela で草生やしている. 色が濃くなれば濃くなる程強度が高い (歩行, 走行距離が長い) ということで. 実装の詳細はこちら.

ジョギング

  • 朝, 山王公園を 30 分ラン
  • 明日から YAMAP のトラッキングを使っていこうと思う

ギョーム

  • 超久しぶりにオフィスに出社
  • 全体ミーティングに参加したり
  • ウィークリーレポート

などなど.

ディナー