Tech Hotoke Blog

IT観音とは私のことです。

2024-01-01から1年間の記事一覧

【MySQL】デッドロックについて調べてみた

これは何? 業務でデッドロックが発生。そもそもデッドロックはどのような場合に発生して、どのような対応が適切なのか?について理解が曖昧だと感じたので改めて調べてまとめた。 前提 MySQL: 8系 InnoDB 以下における説明はすべてInnoDBを前提とします。 T…

システムタイムゾーンを考慮したDB保存にハマっているRails開発者へ

これは何? Railsアプリ→ MySQLのTIME STAMPの保存でハマったのでメモ 前提 Ruby on Rails: 7.0.2 MySQL: 8系 Tips 事象 以下のようにscheduled_atをTime.zoneで更新をかけたところ、保存されている値が scheduled_at= '2024-04-03 03:00:00 とUTC時刻で保存…

CodeBuildを使用したビルドエラー解決方法

これは何? AWS CodeBuildを使用して、Reactのソースコードをビルドしていた。エラーが発生したため、その対処方法のメモ。 前提 ランタイム Node.js: 18 Tips error [Container] 2024/04/17 01:24:29.689519 Running command n 18 && rm -rf /tmp/* install…

で、結局preload, eager_load, includesのどれを使うのがよろしいの? #Ruby on Rails #ActiveRecord

これは何? preload, eager_load, includesを見かけるたびに、あれ、これってどういう挙動をするんだっけ?と調べているのでメモ。 前提 Ruby 3.03 Rails 7.04 Tips 結論 eager_load 1対1あるいはN対1のアソシエーションをJOINする場合に使う preload 多対多…

RFC 2397に定義されたデータURLスキームを読んでみた。

これは何? AntD Reactの実装中にImageコンポーネントを使った。 その際に、srcのフォーマットについて調べてみた。 Tips base64に変換されたPDFファイルの場合、Imageコンポーネントのsrcプロパティには、以下のような値を渡す必要がある。 data:applicatio…

#ReactQuery フェッチタイミングの制御Tips #invalidateQueries #resetQueries

これは何? ReactQueryのフェッチタイミングの制御とかを触った。毎回調べている感じがするので、メモ。 前提 React: 18系 TypeScript: 4系 TanStack Query: 4系 Tips const { data } = usePlaylistAutoProgram(playlist?.playlistUid) useEffect(() => { if…

チリも積もれば山となる。パフォーマンスを測定してわかったリファクタリングの効果 #Ruby #Rails

これは何? コードのリファクタリングの際に、パフォーマンスの計測まで行ってみたら結構な差が出てきたので、メモ。 前提 Ruby 3.2 Rails 7.0.4 Tips mapを使っていた箇所をpluckを使ってリファクタリングしてみた before user_ids =Pls.where(pl_id: pl.id…

AWS SESの通知ステータスを環境別に振り分ける方法 #AWS #SES #Lambda #Ruby #技術メモ

これは何? STG/PRD環境で、AWSアカウントを共有している時、AWS SESの通知ステータスを環境別に振り分ける場合の対処法の一つをメモ 前提 Ruby 3.2 AWS SES, SNS, SQS, Lambda Tips 要件 STG/PRD環境で、AWSアカウントを共有している SESで配信されたメール…

#Lambdaレイヤー導入メモ #Ruby #AWS

これは何? Lambdaのレイヤーを使用したので、操作手順などの備忘録 前提 ランタイム: Ruby3.2 アーキテクチャ:x86_64 Tips Lambdaレイヤーはどんなときに使う? デプロイパッケージのサイズを小さくするため。関数の依存関係を関数から切り離せるので。 …

#RSpec Mock: 引数に応じて返り値を変える方法 #Ruby

これは何? RSpecを書くときの小技メモ。 前提 RSpec 3.12.0 Tips RSpecで特定のメソッドをMockする Mockするメソッドはテストの中で流用されている 引数などの条件によって返り値を変えたい どうする? A: receiveメソッドにはブロックが渡せるので、ブロ…

スッキリ!Rubyコード改善術: おしゃれにHashを追加してみた #Ruby #Ruby on Rails #Rails

これは何? 条件によってHashにプロパティを追加したい場合に、一行一行追加する記述が冗長だったので、もう少しRubyっぽく書けないか施工錯誤したメモ。 結論はtapを使うといい感じだった。(サンプルの例がダサいコードの方がスッキリ見えてしまい申し訳な…

デバッグ方法:AWS ECSタスク更新時のトラブルシューティング

これは何? AWS ECSのタスクがデプロイ時に正常に更新されなかった場合のデバッグ方法のメモ 前提 AWS Pipeline, CodeBuild, ECSを使用していること Tips Pipeline・CodeBuildともにステータスに異常はない ECSのタスクを確認すると、タスクが更新されていな…

useEffect × ReactQueryを使った、処理実行順序の制御

これは何? カスタムフックの処理が実行される前に、useEffectの処理を先に行いたいケースが出てきた。その際にすぐに解決方法がわからなかったので備忘録として書く。 前提 React18 TypeScript: 4.7.4 ReactQuery ReactHookForm Tips ケース 画面遷移時にus…

AWS Lambda 入門

これは何? AWS Lamdaを触ることになった。とりあえず、なんとなくの雰囲気で実装してみたところ、かなり初歩の段階でエラーが発生した。 この機会なので、学習を兼ねて、まずはちゃんとドキュメントを読んでからエラーの解消にあたって行こうと思い書いてま…

AWS IAM インラインポリシーの設定方法

これは何? インラインポリシーの設定方法を忘れてしまった AND 検索してもすぐに見つからなかったので備忘録として 設定方法 任意のロールを作成する 任意のロールを選択する 許可タグの許可ポリシーから、インラインポリシーを作成を選択 任意のポリシーを…

AWS SNSとSQSの連携についての学習メモ

これは何? AWS SNSって何? A2Aメッセージング A2P(aplication-to-person)通知 標準および FIFO トピック メッセージの耐久性 デッドレターキュー メッセージのアーカイブ、リプレイ、および分析 メッセージ属性 メッセージのフィルター処理 メッセージセキ…

【Cypress】cy.get()とcy.contains()の違い

前提 Cypress: 13.0.2 以下のコードの違いは何でしょうか? cy.get('tr:contains(User 1)') cy.contains('tr', 'User 1') こんな違いがある cy.get()は一つ以上のDOM Elementを取得する cy.contians()は一つのDOM Elementを取得する つまり、以下のようにな…