type holyshared = Engineer<mixed>

技術的なことなど色々

自作アプリのメンテナンスをしていた

しばらく触ってなかったので、パッケージのアップグレードなどのついでに気になるところを修正していました

  • 年を跨いだ時のUTC/JSTの扱いのバグ
    • 画像を投稿時の集計処理で、2023/1/1に含めないといけないものが2022/12/31に集計されていたので、JSTベースで処理するようにする
    • CIでのテスト実行時にTZ=UTCにして、テストが通るようにする
  • 画像の切り抜き処理を簡略化
    • 画像の切り抜きをGUIでできるようにしていたけど、ほとんど中心できり抜くことが多かったので、自動で中心で切り抜くようにする
    • 切り抜きを自動化したことで、投稿のテンポが良くなったし、サードパーティの依存が減らせた
  • CloudBuildの設定ミスで、しばらくの間、ビルドが開発モードでビルドされていた
    • HerokuからGCPの移行で、確認漏れがあった
    • ハッシュ値で、デプロイ時に古いキャッシュを参照しないようにしていたが、ハッシュ値がついていなかった

主にバグの修正が多かったなぁ

2022年の靴の着用回数を集計した

毎年集計している靴の着用回数ですが、毎月2回は履いているようです。
意識的にそうしているというのもあります。

新しく8足買って、10足手放しています。
実際は数足は倉庫に預けています。

また、昨年買ったジョギング用のGhost14ですが、56回着用していて定期的に走っていることがわかります。
トータルで69回着用で、一回大体3km走っているので、年間207kmは走っているぽいです。

昨年は40足所有していたのに対して、38足なので少し減りましたね。

以前から履いている靴

No. モデル ブランド 2022年までの着用回数 2022年の着用回数
1 Ghost14 BROOCKS 69 56
2 Overstone Hi Derby Crown Northampton 58 31
3 Neon Blue 8 Eye Derby Boot SOLOVAIR 46 26
4 6Eye Astronaut Boot SOLOVAIR 48 27
5 Solar Wave Leather/Fabric Mid Hiker Boots Timberland 60 29
6 飛鳥ホールカット KOTOKA 62 26
7 ASAHI M020 ASAHI 58 25
8 LAW NPS shoes 56 24
9 Harry BROTHER BRIDGE 75 27
10 6inch Boots Reverse Black Odessa Chippewa 63 24
11 BOYS KATSUYA TOKUNAGA 63 24
12 HI BASKET W MoonStar 71 26
13 GARRISON TRAIL GORE-TEX HIKING SHOES Timberland 70 31
14 M-43 SERVICE SHOES JOHN LOFGREN 70 25
15 BERLIN BROTHER BRIDGE 78 26
16 Crockett&Jones CONISTON CONISTON 79 25
17 Morgan BROTHER BRIDGE 77 24
18 Spider Scotch Grain 76 24
19 Custom Jobmaster 38LTT Wesco 78 25
20 442 MILITARY CAP TOE OXFORD RAMSEY 108 27
21 DOBULE MONK SANDAL Tokyo Sandals 368 99
22 ROOTS Rolling dub trio 123 34
23 Norwogian Split Pistorelo 91 24
24 Irish Setter Redwing 109 25
25 OB-8593GT 栃木レザープレーンミッドブーツ SLOW WEAR LION 99 24
26 OB-8593G オイルドレザープレーンMIDブーツ SLOW WEAR LION 97 24
27 6inch Service Boots Chippewa 98 25
28 McCLOUD BROTHER BRIDGE 103 25
29 JAMES BROTHER BRIDGE 109 26
30 6inch HotShot Nicks 98 24

新しく購入した靴

No. モデル ブランド 2022年の着用回数
1 SX 78C02 MoonStar 10
2 TimberLoop EK Utility Boot Timberland 10
3 Tanker Pro Nicks 12
4 SKIPTON George Cox 22
5 Evan+ Southgate 22
6 ROOTS LOOP II 8.5 Rolling dub trio 47
7 Classical Horsehide Mesh Sandals Dapper’s 60
8 BRIGHTON Loake 32

手放した靴

No. モデル ブランド 2022年までの着用回数 2022年の着用回数
1 “ATHLETIC SHOES”HIGH CUT MODEL BUZZ RICKSON'S 38 17
2 HunterⅡ Rolling dub trio 41 14
3 Black Grain 6 Eye Derby Boot SOLOVAIR 35 5
4 Jackie Ballband 56 17
5 ASAHI M022 ASAHI 45 4
6 CYPRESS Dry Bones 48 4
7 CAMERON ESSENTIAL NPS shoes 48 4
8 1930s Sport Boot Redwing 68 14
9 Military Apron Derby Boots Sanders 61 4
10 Enginier Slip on Tokyo Sandals 206 9

NEMAを飲む

ノンアルコールのジンを買って、飲んでいました。
NEMAのスタンダードはバラの香りがすごくて、ソーダとジンジャーエールで割って飲んでみましたが、ジンジャエールで割った方が美味しかったです。

ウィスキーの方もジンジャエールの方が美味しかったです。
ストレートで飲むより、カクテル向きなんだろうと思います。

NodejsのFormDataでクライアント証明書を指定して、リクエストする

仕事で外部サービスに対して、クライアント証明書を指定してクリエストを送信する必要があり調べてみました。
httpsモジュールのAgentのオプションにpfx、passphraseを指定して、FormDataのsubmitの引数に指定するだけです。

証明書は.pfxではなく、.p12だったのですがどっちでもOKぽかったです。
外部サービスの仕様上、multipart/mixedで送らないといけなかったので、axiosなどのクライアントが使用できなかったのでこのような実装になっています。
大体のクライアントはヘッダーをmultipart/form-dataにして送信するので、ちょっと面倒でした。

また、pathが/から始まらないといけないぽくて、read ECONNRESETが出て接続が切られる問題が発生し、原因の特定に時間が少しかかりました。
証明書の問題で接続が切られていると思ってしまったのが良くなかったです。

本番環境ではクライアント証明書や、パスフレーズなどはGCPのSecret Managerなどで管理しておくのが良いと思います。

const fs = require('fs')
const https = require('https')
const FormData = require('form-data')

const pfx = fs.readFileSync("./xyz.p12")

const agent = new https.Agent({
  pfx,
  passphrase: '1234'
})

const form = new FormData()
form.append('param1', '1234')
form.append('param2', '1234')

form.submit(
  {
    host: 'example.com',
    method: 'post',
    path: '/path/to',
    headers: {
      'Content-Type': `multipart/mixed; boundary=${form.getBoundary()}`,
    },
    agent,
    protocol: "https:"
  },
  (err, data) => {
    console.log(err)
  }
)

冨樫義博展の後期のチケットが買えた

気づいた時には欲しい時間帯の前期のチケットが買えなかったので、今日の10:00から販売開始する後期のチケットを朝頑張って買いました。
サーバーに負荷がかかっていて、何回かエラーになってたりしていたので、やっぱり狙っている人多いんだなと思いました。

ワクチン4回目を接種してきた

4回目摂取の通知が来てたけど、いつ行こうか迷っていて期間が空いてしまいました。 このままだと一生いかなさそうなので、重い腰を上げて集団摂取会場に行き、摂取しました。

自分の場合、今までの傾向だと摂取日は軽くだるいくらいで、翌日に寒気がする感じです。
しかし、今回は若干のだるさと、短時間の軽い発熱くらいで済んだのでよかったです。