emahiro/b.log

Drastically Repeat Yourself !!!!

Nuxt3 で SSG ができるようになっていた

Overview Context SSG やってみた 余談 Functions deploy がこける問題 lint と build が predeploy で強制的にかかってしまう Overview ※ 筆者がたまたま Nuxt3 を弄っていて気づいた話なので最新の動向は GitHub の Discussion を追ってください。 github.…

Nuxt3 で FontAwesome を使う

Overview 導入方法 Install dependencies Setup Plugin How to use まとめ 余談 Nuxt3 の rc がなかなか上がらなかったのは vue-jest 依存のせいだった。 See Also Overview 少し前にポートフォリオサイトを Nuxt2 -> Nuxt3 にアップデートしましたが、この…

squirrel という Go のクエリビルダーが便利

go

Overview 何をしてくれるのか 何をしてくれないのか ハマったこと In が明示的に用意されていない まとめ 余談 カラムを全て取得する 追記 Overview ライブラリの紹介記事です。 squirrel という Go の クエリビルダーが便利だったのでその紹介です。 github…

タイピングを矯正してみている

etc

Overview 全然技術的な話ではないですが、最近自分のタイピングの癖が気になっていたのでタイピングの矯正をしています。 Context 自分は大学生になった時から本格的にパソコンを使い始めていて、その時に独学で覚えたタイピングで今まで生きてきましたが、…

Nuxt2 ⇒ Nuxt3 に上げた話

Overview 準備 Nuxt2 系の最新まで上げる 各種依存ライブラリを最新に上げる Migration to Nuxt3 Nuxt Bridge Named export 'isWindows' not found が発生する Nitro サーバーが起動しない Nuxt3 Nitro を動かすには SSG モードを OFF にする Cannot start n…

リードをやってみる意味について

Overview 少し前に Tech Lead から一人のエンジニアになったエントリを書きましたが、自分の視座の変化として書いた「リードをやってみる意味」についてまとめてみました。 ema-hiro.hatenablog.com 前程 何度か書いてますが、現職における (Tech) Lead のポ…

結婚式をやった話とそのお金について

Overview 方針 実際のコストポイント 感想 余談_1: 結婚式のコスト構造 余談_2: メルカリすごい 余談_3: 体験を買うときはモノを買うより財布の紐が緩くなる Overview 5/28 に結婚式を上げました。 結婚式当日は参加した方にも楽しんでもらえて、僕らもすご…

i/o timeout エラーをハンドリングする

go

Overview HTTP のりクエスをしたときに遭遇する dial tcp $IP: i/o timeout をハンドリングする方法について、そもそもこれがどうして発生するのか?と併せて調べた備忘録です。 http.httpError と net.Error Go で API クライアントを実装する際に遭遇する …

Tech Lead から1人のエンジニアに戻った話

Overview 4月から2年間の Tech Lead の役割を降りて 1 エンジニア(最近だと IC って言うのが正式名称なんですかね)に戻りました。 元々飽き性な人間なので、同じ役割をずっと担っていると慣れとダレが生じてしまってチームに悪影響があったので去年くらい…

MySQL で時刻を時刻型で保存するか Unix Timestamp で保存するかを考えた話

Overview 前提 Unix Timestamp Pros Cons 時刻型(DATETIME) Pros Cons 結局どちらを選んだか? まとめ Overview MySQL でよくある CreatedAt と UpdatedAt を時刻型で保存するのか、Unix Timestamp で保存するかを考えてみたのでその備忘録です。 なお考える…

Go1.18 の Generics を使って Slice の重複削除の処理を書く

go

Overview golang.org/x/exp/slices を使って重複削除の実装を書く ベンチマークしてみる まとめ Overview Go でスライスの重複処理を実装するのに Generics が使えるので実際に実装してみました。 なお、Go1.18 以前の世界ではスライスの重複を削除するには …

Go1.18 の Generics を使ってみた話

go

Overview 実装に入門する サンプル実装 map の key を取り出す スライスのシャッフル処理 その他使えそうなユースケケースについて golang.org/x/exp 配下のパッケージついて まとめ Overview Go 1.18 がリリースされて目玉の機能である Generics について一…

Go の unstable version で gopls を使う

go

以下の設定をする。 # Create an empty go.mod file, only for tracking requirements. cd $(mktemp -d) go mod init gopls-unstable # Use 'go get' to add requirements and to ensure they work together. go get -d golang.org/x/tools/gopls@master gol…

strings package を使って簡単なメールのフォーマットチェックをする

go

Overview タイトルの通りです。Go の strings パッケージを使って簡単なメールアドレスのフォーマットチェックをします。 Go の正規表現は重たい(Go に限った話ではないですが)処理なので何かの文字列の検査をするときは strings package を使う方がパフォ…

SES SendRawEmail API を使って画像付きメールを送信する

Overview SES SendRawEmail API を利用して画像付きのメールを送信するための備忘録です。 実装について 基本的な実装方法については Amazon SES API を使用して raw E メールを送信する を参考にすればできます。 画像付きのメールを送信する上でポイントに…

Serverless Framework@v3 で monorepo 構成にする

Overview Motivation ワークアラウンドについて actions も v3 にあげる entrypoint option を設定する SSM を使ってる場合 ~true suffix を削除する environment で JSON を読み込む場合には raw 指定する まとめ Overview Serverless Framework@v3 で mono…

Vuetify プロジェクトの依存の整理でハマった話

vue

Overview やったこと TypeScript 3.9.3 -> 4.6.2 (202203時点の最新)にする。 TypeScript を最新にしたら IE 対応用のメソッドが動かなくなった。 Axios を使った API リクエストのレスポンスが unkown 型になってしまった vue-type-check が TS4系に対応し…

VSCode で Chrome のようなタブ移動をする

Overview 最近自分で登録していたキーボードショートカットが何かと競合して動かなくなってしまった際に一回リセットしてみたらタイトルにある Chrome のように Cmd(or Ctrl) + shift + [ (or ]) で VSCode のタブ移動をするショートカットが消失し途方に暮…

Oh-My-Zsh -> Prezto に移行した

Overview 移行方法 Oh-My-Zsh の削除 Prezto の導入 Editor の設定変更 Git の情報の表示 移行してみて Overview 特に強い理由はないですが、長年愛用してきた Oh-My-Zsh から Prezto に移行しました。 github.com 強い理由はないと記載したけど、M1Pro でさ…

go-redis で custom struct を set / get するときは BinaryMarshaler を実装する必要がある

go

Overview 以下に記載されてる内容のことです。 github.com go-redis を使って redis に値を set & get するときは encoding#BinaryMarshaler を実装する必要があるという話です。 Sample type X struct {} func Set (key string, x X) error { opt := redis.…

300 記事継続の振り返りとこれから

この記事がちょうど 300 記事目です。 200記事の時の振り返りはこちら。 ema-hiro.hatenablog.com 200もの駄文をインターネット空間に投下してから2年ちょっとくらい経ちましたが、さらに 100 もの駄文を投下してしまっていたようです。 自分のドキュメント…

WFH における非同期と同期の話

Overview 前提 WFH or RTO という話 非同期か同期か 非同期がなぜ難しいのか? 余談: カメラ ON について 個人の感想とスタンス 知られたくない権利 (プライバシーの話)の観点 アバターという選択肢 まとめ Overview learn.gitlab.com デブサミで公開された…

aws.EndpointResolverWithOptions はエラー時にデフォルトの Endpoint Endpoint Resolver を返す

タイトルの通りなんですが、AWS SDK Go V2 を利用して AWS の設定を初期化する実装をする際に Endpoint Resolver Option を設定したいケースがあると思います。 リージョンが異なるなどで AWS に各サービスごとに設定内容を変えたいケースなどが使いたいケー…

Go で画像を操作する

go

Overview 画像の拡張子を操作する 拡張子を変換する。 拡張子を判別する http.DetectContentType で拡張子を判定する 画像を作成する Encode/Decode する base64 Overview 業務において Go で画像を操作する方法を調べたので備忘録。Go の標準パッケージにあ…

AWS の API Call に Retry option を設定する

サマリ AWS のリソースを API 経由で Call するときに Retry option を使うと便利、というお話です。 メッセージを trigger にして Lambda を起動させるなど、イベント駆動でプロセスを開始するようなサービスを使うケースでは、失敗しても Retry してくれる…

Lambda -> 各種 AWS へのアクセスで権限エラーが発生した場合の調査方法

これは何 Lambda から AWS のリソースに触るときに権限なしエラーが発生したときの調査でいつも手間取るのでその備忘録です。 config ファイルの iamRoleStatements ディレクティブを確認する 大体これで解決します。基本的にはコールしたい API のアクショ…

文字列化した時刻を time.Time に parse する

go

これは何? どうやるか? まとめ これは何? https://pkg.go.dev/time#Time.String で Go の時刻を文字列化した値を再度 time.Time に変換する実装について記載してます。 どうやるか? Time.String() で Go の時刻を文字列として出力した値を time.Time に…

2021 年の振り返り

Overview やったこと 入籍した 脱東京した MVP 獲った 英語に触れる習慣がついた 家電買い換えた 読書継続した 体重が増えた やらなかったこと 新しい技術要素に触れる スポーツ観戦 2022 どうする? Overview 2021 年を振り返ります。 今年は仕事もプライベ…

2021 年買ったもの

Overview ガジェット iPad mini 6 Anker PowerConf C300 BenQ ScreenBar Halo cores コレス コーングラインダー 平台車(キャスター付き) AfterShokz Aeropex ロジクール MX Master 3 WF-1000XM4 AirPods 3 RICOH GR III CalDigit TS3 Plus GROVEMADE Wood Ap…

今年の MVP を獲った話

Overview 前書き 何をやってきたのか 個人的な振り返り 余談: 憧れを実現するにはベースが大事 最後に Overview 技術的な話ではないですが、現職での1つの節目として2021年の年間 MVP を獲ることができたのでそのことについて少し書こうかなと思って筆を取り…