DBMS をフルスクラッチで作る Database Design and Implementation: Second Edition1 を読みながら、この本で作る DBMS(SimpleDB) を Go で実装しました。始めてからちょうど5ヶ月くらいかかりました。 去年も DBMS を自作していましたが、当時は DBMS の理論を学ばずに「この SQL が投げられたときにこういう結果を返すにはこういう実装にすればとりあえずそれっぽい動きをしてくれそう」という感じに実装していて理論的なところは何も学んでいませんでしたが、今回はちゃんと本に沿って実装したので理論・実装を体系だって学べました。 Database Design and Implementation: Second Edition (Data-Centric Systems and Applications) (English E
はじめに 最近、ソフトウェアアーキテクチャを改めて勉強しようと2冊の本「ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ」と「アーキテクトの教科書 価値を生むソフトウェアのアーキテクチャ構築」を読んだので要点と感想を備忘としてまとめます。 ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ アーキテクトの教科書 価値を生むソフトウェアのアーキテクチャ構築 概要とポイント ソフトウェアアーキテクチャの基礎 ―エンジニアリングに基づく体系的アプローチ アーキテクチャには正解も間違いもない。ただトレードオフがあるだけだ。 この本はアーキテクチャを考えるための思考から、代表的なアーキテクチャスタイルの紹介やアーキテクトとしてのソフトスキル(対人スキルやチーム運営、キャリアパス等)まで網羅的にまとめられているものとなります。 アーキテクチャの技術
はじめに アプリケーションレイヤーでトランザクションを考慮した実装をどのようにすればいいのか悩んでいる人が多いことに気がつきました。オニオンアーキテクチャ等でアプリケーションコードを関心ごとのレイヤーに分離するときに、トランザクションを開始するためのDBとのコネクションの作成をどのレイヤーで実施するのか悩んでいる人が多いそうです。 本記事ではDDD+オニオンアーキテクチャ+Repositoryパターンを使う前提で、私がよく使うトランザクションを考慮した実装について説明しようと思います。 トランザクションを考慮した実装 私はトランザクションを開始するためのDBとのコネクションの作成はUsecase層で実施します。 私がよく書く実装ではDDDでいうEntityを定義します。そしてRepositoryではEntityのCRUDのみ行うように実装し、Repositoryをトランザクション境界にしま
急にそんなこと言われたら手段が先行してるので、そんなこと言われたらそもそも〜の話をしましょう。 マイクロサービスや分散アーキテクチャがなんにもわからない状態の時に読みたい本を書いていきます。 はじめに web アプリケーションを作っていると、完全なスタンドアローンな状態は珍しく、大抵は何かしらの外部 API (決済など)をコールしていることが多いと思います。それは広義の意味では分散システムであると言えます。ここでいうマイクロサービスはモノリスを分解する過程や思想の先にあるものを指していますが、web アプリケーションであれば分散システムについてインプットしておくのは有意義だと思います。 概念編 マイクロサービスアーキテクチャ 第2版 とりあえずこれさえ読んでおけば間違いない一冊。 2022年12月に出版されたもので、2016年に出た第1版から大幅に増改訂(ページ数は約2倍w)があり、マイク
こんにちは、kuraです。 この記事はDigital Identity技術勉強会 #iddance のアドベントカレンダーの12日目の記事です。 開発チームを離れてプロジェクトやサービスのマネジメントが中心の業務になっており、コーディングを全然しなくなったのですが、上流工程でシーケンス図はよく書くため、自身の作業効率を上げる意味も含めて今回はOAuth 2.0やOpenID Connectのシーケンス図をまとめようと思います。 画像だけでなくPlantUMLのコードも掲載しておくので、みなさんにも活用いただけたらと思います。 PlantUMLについて PlantUMLはクラス図やシーケンス図がかけるオープンソースの描画ツールです。Qiitaにも記事をまとめてくださっている方はたくさんいるので詳しい情報は検索してみてください。 筆者は以下のあたりを参考にVSCodeとの組み合わせで作成してい
シーケンス図、シーケンス図、またはシーケンス図とも呼ばれるシーケンス図は、UML 相互作用図です。複数のオブジェクト間でメッセージが送信される時間的な順序を記述することにより、複数のオブジェクト間の動的なコラボレーションを示します。 UML では、シーケンス図のオブジェクトは、下線が引かれたオブジェクトの名前を含む長方形として描かれます。オブジェクトには、オブジェクト名、オブジェクト名とそのクラス、またはクラス名のみ (匿名オブジェクト) の 3 つの方法のいずれかで名前を付けることができます。オブジェクトに名前を付ける 3 つの方法を下の図に示します。 このシーケンス図を編集 シーケンス図のオブジェクト オブジェクト間の相互作用の順序を表示します。相互作用の動作をメッセージ パッシングとしてモデル化し、オブジェクト間でメッセージがどのように送受信されるかを記述することで、オブジェクト間の
What is a Transformer? Transformer is a neural network architecture that has fundamentally changed the approach to Artificial Intelligence. Transformer was first introduced in the seminal paper "Attention is All You Need" in 2017 and has since become the go-to architecture for deep learning models, powering text-generative models like OpenAI's GPT, Meta's Llama, and Google's Gemini. Beyond text, T
情報を発信する人のところに情報が集まることを日々実感しているので、Linuxのメモリ管理に特に詳しいわけではないのですが最近遭遇した問題について自分の理解を書いておきます。ざっと調べても同じことを書いている人を見つけられなかったので、公開には意義があると考えています。識者の方がフィードバックをくださると嬉しいです。 ※ AIの出力をベースに書いているのでいつもと少し文体が違います。 背景 要約 調査 再現の難しさ Goアプリケーションの調査 pprofによる分析 GCログの調査 Linuxの調査 Goランタイムの調査 GoのGCとTHP khugepagedの問題 Goランタイムにおける回避策 回避策の削除 max_ptes_noneのデフォルト値について MADV_NOHUGEPAGEをやめた理由 調査内容まとめ 解決策 検証 C言語 Go言語 まとめ 背景 Go言語で書かれたOSSのア
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く