ようへいの日々精進XP

よかろうもん

seq コマンド (だけ) で 0 パディング

tl;dr

即興で 1 から 100 までの数字を用意する必要になった. しかも, すべての数字を 0 パディングしたい.

今までの俺

ググったりして seq コマンドが良さそうなことはわかっていたけど, 以下のように書いて満足していた.

for id in `seq 1 100`
do
  num=`printf %03d $id`
  echo $num
done

明日からの俺

qiita.com

上記の記事のコメント欄を見て目が醒めた.

for num in `seq -w 1 100`
do
  echo $num
done

seq --help すると, ちゃんと書かれている.

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

$ seq --help

()

Mandatory arguments to long options are mandatory for short options too.
  -f, --format=FORMAT      use printf style floating-point FORMAT
  -s, --separator=STRING   use STRING to separate numbers (default: \n)
  -w, --equal-width        equalize width by padding with leading zeroes
      --help     この使い方を表示して終了する
      --version  バージョン情報を表示して終了する

()

これで OK. むしろ, for しなくても seq コマンドのオプションでかたがつく.

$ seq -w 1 100
001
002
003
...
098
099
100

最後に

man やヘルプを読みましょう.

2019 年 10 月 10 日 (木)

ジョギング

  • 積極的お休み

ギョーム

  • CMS 環境の構築, AWS 上に CMS 環境を構築するのは地味にめんどくさいことを把握
  • 弊社全体のシステム構成をちゃんと把握していない問題を起こしてしまい諸々調整対応 (ビビった)
  • AWS サポートとのやりとり, 改めて AWS サポートのやりとりについて学びがあった (以下に回答を引き出すか, それは, 質問する方の質問の仕方も重要である)

JAWS-UG 福岡もくもく会

  • 久しぶりに YAMAP にて開催
  • Spot Fleet の検証
  • 少しだけお酒も入ってワイワイ楽しい時間だった

夕飯

  • 「妻の角煮」
  • 角煮はよく煮えていたが少し塩辛かった...しかし, 奥さんが初めて作ったという煮玉子がとてもよく出来ていて感動した
  • 美味しかった, ありがとう

2019 年 10 月 09 日 (水)

ジョギング

  • 山王公園を 45 分
  • 懸垂 x 7 回
  • 右足の親指に血豆みたいなのが出来ていて踏ん張ると痛い...

ギョーム

  • Fargate に移行したサービスの撤去, あー, コンテナ時代のサービス撤去だなーという気分になった
  • データベースのリードレプリカを r4 系から r5 系に移行, サービスへの影響は無いのでカジュアルに
  • r4 と r5 の違い, ポジティブな違いは CPU パフォーマンスが最大 20% 向上, 個人的におーって思ったのが Nitro 基盤であること...
  • 午後からは AWS を触りはじめてから初めてになると思うけど, がっつりと Spot Instance を触って Spot Fleet や EC2 Auto Scaling の違いについて雰囲気を掴んだ
  • Spot Fleet は「これっくらい」のリソースをーって設定したら, インスタンスタイプを問わずリソースを Spot やオンデマンドで確保してくれるサービス
  • EC2 Auto Scaling は Auto Scaling Group のオプションの一つとしてスポットインスタンスを利用出来るようになっている

学びの多い一日だった.

夕飯

  • 豚こまと玉ねぎの炒め, 定番メニューでいつも美味しい
  • 同僚の馬場さんから頂いた北海道の新じゃがをじゃがバタにして食べたらサイコーだった

2019 年 10 月 08 日 (火)

ジョギング

  • 山王公園を 40 分
  • 懸垂 x 7 回
  • 昨日よりは足のバキバキ感は減った...が, 右の太ももに強い張りが残っている

ギョーム

  • EC2 で運用しているサーバーに swap を追加, swap を追加したら負けと言われているが, 本当に負けた
  • swap 追加したサーバーに Apache を監視して, 異常を検知したら httpd を自動で再起動するツールを書いて導入した
  • 昨日構築した Fargate にアプリケーションをデプロイ!と思ったら, デプロイツールの awscli バージョンが古かったりしてエラーになって焦った (出来るだけ最新の安定版を使うべきだと反省)
  • ECS で Spot Instance を使う際の Draining が自動化されたようで嬉しい, Spot Instance 化が捗る

夕飯

  • 奥さんが焼いてくれる鮭のバター焼きはいつも美味しい

2019 年 10 月 07 日 (月)

ジョギング

  • 山王公園を 35 分
  • 懸垂 x 7 回
  • 足腰がバキバキで辛かった...

ギョーム

  • Terraform で Fargate + ALB 構成をザッと書いてリリース... しかし, Terraform はガッツリ時間をかけて触っていないので中途半端な知識で辛い
  • Terraform は引き続き修行が必要だけど, Fargate, ちょっとコンテナの起動が遅かったりするけど, シュッと Service を書けばコンテナサービスを立ち上げられるし, ワンショットなタスクも動かせるので好き
  • 1 on 1, ヤマップに入って 1 on 1 がとても良いなあ, 振り返りは重要, また, 二週間くらいのスパンで振り返るのがちょうど良い感じ
  • Fargate + ALB が差込タスクだったので, 今日やりたかったことは明日頑張ろう...

散歩

  • ギョームを 18 時半で切り上げて帰宅, 帰宅してから奥さんと山王公園を散歩
  • だいぶん涼しくなって散歩が楽しい季節になってきた感

夕飯

  • 奥さん特製のささみを大葉で巻いた天ぷらがとても美味しくて最高だった

2019 年 10 月 06 日 (日)

ジョギング

  • 社内ランニング部の練習会で大濠公園スタートの西公園を 5 周して帰ってきた
  • 約 1 時間程
  • 大濠公園を道下選手がトレーニングしていた, 間近で見る道下選手はとても小柄だったけど, 力強い走りで見ている方が毎回励まされる...頑張ろう
  • いつもロッカーとシャワーを借りているランステが消費税 10 % 値上げに伴う値上げでビビった (便乗っぽい値上げの仕方で笑うしかなかった)

寝まくった

大濠公園から帰ってきて, 色々と作業をしたかったのに, うっかりベッドに横になったらそのまま寝てしまっていた. その後, ずーっと寝てしまって, 気づいたら 13 時を過ぎてしまっていた. 奥さんと殺伐としたルミエールに買い物に出かけて, 帰ってきてからも一眠り... 相当寝てしまった.

2019 年 10 月 05 日 (土)

ジョギング

*最近, ずっと走っていたのでたまのお休み

ミニツーリング

ディーラー主催のツーリングイベントに参加して角島まで行ってきた. ドライブ日和の快晴で角島を臨むホテルを目指して運転. 普段であれば, 角島までの距離であれば日帰りはありえないのであるが, 今日は頑張って往復走ってきた.

イベント自体について, クイズ等はとても楽しかったが, 段取りが色々アレでアレだった. イベントの段取りは JAWS-UG 勉強等で段取ることがあるので,とても気になっていたが, 自分が同じ立場に立った時に色々と反省すべき点があったのではと考えている. また, 帰りに古賀サービスエリアの小綺麗, イキったフードコートで某博多ラーメンに 1000 円という値段がついていて驚いてしまい, 古賀インターでは何も飲み食いしないまま帰宅...

色々とグダグダ感はありつつも, 一番の収穫は同じミニを愛車する方々と仲良くなれたこと. 今風に LINE の ID を交換したり, 写真撮影会をしたり, 同じ趣味や好きなものを介して人と人がつながるというはとても良いなあと思った次第.

2019 年 10 月 04 日 (金)

ジョギング

  • 山王公園周りを 35 分ほど
  • 懸垂 7 回
  • 引き続き, 睡眠不足気味でめっちゃ体がだるいのでスパースローペースで
  • 右足の太もも周りに張り

ギョーム

  • 昨晩の障害について調査
  • 毎週金曜日はインフラ周りのウィークリーレポートを書くようにしている, 正直言って, もう少し粒度を細かくした方がいいのかなとメトリクスを見ながら思ったり
  • 社内ネットワーク業務, 最近の複合機はサーバーだなーっと思った次第, スマートフォン対応していたり凄い
  • 滞っていた, オリジナルの AMI からスポットインスタンスを起動して Route53 に A レコードを登録するスクリプトを一気に書き上げた (粗いけど)
  • 昨日作った choice をアップデートした

choice は標準入力の文字列を指定したセパレータで分割 (デフォルトは ,) して分割した要素をランダムに 1 つ選択して出力するオレオレコマンド.

github.com

こんな感じ.

$ echo 'aaa,bbb,ccc' | choice
bbb
$ echo 'aaa,bbb,ccc' | choice
ccc
$ echo 'aaa,bbb,ccc' | choice
aaa

ちょっとギョームの過程で複数行の標準入力から要素をランダムに選択したくなったのでアップデートしてみた.

$ cat test.txt
aaa
bbb
ccc
$ cat test.txt | choice
bbb
$ cat test.txt | choice
aaa
$ cat test.txt | choice
bbb

こんな感じ. ただ, それだけ.

夕飯

奥さん特製のハンバーグ. 作り立ててでジューシー. 最高に美味しゅうございました.

2019 年 10 月 03 日 (木)

ジョギング

  • 山王公園周りを 40 分ほど
  • 懸垂 7 回
  • 睡眠不足気味でめっちゃ体がだるいのでスパースローペースで

ギョーム

  • Aurora のクラスタを追加した...けど, その数時間後にデータベースで障害が発生して大慌て
  • データベースの運用はとにかく奥深い
  • AWS DevDay Tokyo 2019 のライブ中継を聞きながら作業, トリさんの Fargate の話とか, AWS CDK, 藤原さんの隙間家具の話等興味深い話が尽きなかった
  • API Gateway, リクエストのペイロードは 10MB という制限はよく知られた話だが, レスポンスも 10MB の制限があるということを知った, アンドキュメンテッド案件
  • 帰り際にデータベース障害... 辛かった

EC2 の起動をスクリプト化するにあたり, 標準入力で文字列として渡す予定のアベイラビリティゾーンやサブネットの選択をランダムに choice したくて choice というコマンドを作った.

github.com

標準入力を choice に渡すと区切り文字で分割して分割した文字列をランダムに 1 つ返すだけのコマンド. 以下のような感じ.

# デフォルトの区切り文字は , (カンマ)
$ echo 'foo,bar,baz' | choice
bar
# 区切り文字を | を指定した場合
$ echo 'foo|bar|baz' | choice --separate='|'
baz

テストも書いたりして勉強になった.

打ち上げ

社内プロジェクトに参加した. 二次会までワイワイ楽しい時間を過ごせた.

KPT で振り返る CircleCI ユーザーコミュニティミートアップ ([福岡] CircleCI ユーザーコミュニティミートアップ #2 を開催した) #circlecijp

tl;dr

circleci.connpass.com

YAMAP にて, CircleCI さんと協力して CircleCI ユーザーコミュニティミートアップ を開催したので, 運営及び登壇, 参加者として振り返ります.

振り返り

Keep

  • 参加された方がこれから CircleCI を始めるという方が多くて, @kurumai さんのセッションが参加者の方にも響いていた
  • CircleCI の最新情報が聴けた
  • ピザや飲み物等をすべて CircleCI さんで用意頂いて本当に有り難かった
  • セッション開始前に参加者全員で自己紹介を行い, 参加者間の距離がグッと縮まった
  • 質疑応答で盛り上がった
  • セッション終了後, そのままコネクションが懇親会的な雰囲気で参加者全員で CI/CD に限らず, サーバーレスや Fintech 等, 色々な文脈で話をすることが出来た
  • ビルドする為のツールをリポジトリに含めるのか Docker コンテナイメージにあらかじめ含めておくのか等の議論をさせて頂いた

序盤のセッションで @kurumai さんの登壇資料に度肝を抜かれました. このコラージュはやばい.

あと, Pipeline API は, パイプライン全体を API 経由でトリガー出来るというのは, 人間が明示的にビルドをトリガー出来るという点は夢が広がる気がした.

自分のセッションでは, 長いセッションに少し変わったエッセンスを注入したくて息抜きと称して芸能人のモノマネをやってみた.

Problem

  • twitter にツイートが出来なくて, 実況中継が出来なかった
  • 自分の登壇資料は内容が古いものがありアップデートが必要だった (CircleCI の社員数は 300 名弱, ユーザー数は 50 万人以上)
  • 参加者が思った以上に少なかった
  • 登壇者を集めることが出来なかった
  • 自分の登壇については, 制限時間を完全に無視してしまっていた...
  • ピザとポテトを少し残してしまい破棄してしまった

Try

  • 登壇して頂ける方を早めに確定して, 登壇内容も明確にしておくと良さそう, そうすることで, 参加してみようかな... という気持ちにさせたい
  • ハンズオン的なこともやってみたらどうか
  • 次回は YAMAP のスマートフォンアプリチームのノウハウを発表してもらえるように社内調整頑張る

登壇資料

今回は「CircleCI 検定」ネタの再演として, 資料に手を加えつつ, 自分が YAMAP に入社してから試行錯誤した内容を含めた感じの資料でお話させて頂きました.

speakerdeck.com

ということで

参加してくださった皆さん, CircleCI の @natsumi_summer7 さん, @kurumai さん, 設営にめっちゃ協力してくださった YAMAP の浩平さん, ありがとうございました. また, 福岡でミートアップが開催出来ると嬉しいなあと.