ブックマーク / zenn.dev/gibjapan (3)

  • データベースのロックの基礎からデッドロックまで

    データベースのロックについて、資料を読んだり実際に試してみたので、学んだことを整理してみようと思います。はじめにロックについての基的な知識を整理して、最終的にはデッドロックとその対策について説明します。 使用したソフトウェアのバージョン MySQL 8.0.31 この記事ではMySQLを使用しています。その他のデータベースについては、基的な部分は共通していると思いますが、異なる点があることをご了承ください。 ロックとは何か(概要) ロックはデータの更新を正しく行うための仕組みの一つで、あるデータに対する更新処理を制御するためのものです。ここで、データを正しく更新するとはどういうことかを説明するために、口座への振込を例に考えてみます。 例えば、口座Aから口座Bに1万円の振込を行うとします。このとき、口座Aの出金処理と口座Bの入金処理は、必ず両方が成功しなければなりません。このための仕組み

    データベースのロックの基礎からデッドロックまで
    yug1224
    yug1224 2023/04/30
  • ReactでtRPCのミドルウェアっぽいものを作る

    ReactとtRPCを使ってアプリを開発しています。サーバーサイドの認可(の一部)でtRPCのミドルウェアを使っており、フロントエンドでも同じようにできる気がしたのでやってみました。 tRPCのミドルウェアとは tRPC(@trpc/server)のミドルウェアは、プロシージャが実行される前に処理を実行するためのもののことです。tRPCのプロシージャは、MVCでいうとシングルアクションのコントローラーです。ミドルウェアは、認可やロギングなどに使われます。 Middlewares | tRPC tRPCのミドルウェアの特徴は、次のミドルウェアに値(コンテキスト)を渡せることです。コンテキストはミドルウェアを通っていき、最終的にプロシージャに渡されます。型の情報が次のミドルウェアやプロシージャに引き継がれるので扱いやすいです。 // サンプルより引用 const t = initTRPC.co

    ReactでtRPCのミドルウェアっぽいものを作る
    yug1224
    yug1224 2023/02/13
  • gitのcheckoutコマンドには3つ使い方がある

    「gitのcheckoutって結局どういうコマンドなんですか?」と聞かれたのですが、うまく答えられなかったので調べてみました。調べてみると、checkoutには3つの使い方があることが分かったので、まとめてみようと思います。 そもそもチェックアウトとはどういう意味か? バージョン管理システムにおいてチェックアウトとは、バージョン管理システムから履歴を取り出すことをいいます。反対に、バージョン管理システムに履歴を登録することをチェックインといいます。 つまり、gitのチェックアウトはリポジトリから履歴を取り出すという意味です。また、gitのチェックインは、ファイルをステージしてからコミットするまでの一連の流れだといえます。 gitに登場する3つのスナップショット checkoutの説明をする前に、gitの基的な用語を整理してみます。gitには作業ディレクトリ・インデックス・コミットという3

    gitのcheckoutコマンドには3つ使い方がある
    yug1224
    yug1224 2022/09/08
  • 1