サクサク読めて、
アプリ限定の機能も多数!
アプリで開く
●はてなブックマークって?
●アプリ・拡張の紹介
●ユーザー登録
●ログイン
●ログアウト
トップへ戻る
総合
●人気
●新着
●
IT
●
最新ガジェット
●
自然科学
●
経済・金融
●
おもしろ
●
マンガ
●
ゲーム
●
はてなブログ︵総合︶
一般
●人気
●新着
●
社会ニュース
●
地域
●
国際
●
天気
●
グルメ
●
映画・音楽
●
スポーツ
●
はてな匿名ダイアリー
世の中
●人気
●新着
●
新型コロナウイルス
●
働き方
●
生き方
●
地域
●
医療・ヘルス
●
教育
●
はてな匿名ダイアリー
政治と経済
●人気
●新着
●
政治
●
経済・金融
●
企業
●
仕事・就職
●
マーケット
●
国際
●
はてなブログ︵政治と経済︶
暮らし
●人気
●新着
●
カルチャー・ライフスタイル
●
ファッション
●
運動・エクササイズ
●
結婚・子育て
●
住まい
●
グルメ
●
お金
●
はてなブログ︵暮らし︶
●
掃除・整理整頓
●
雑貨
●
買ってよかったもの
●
旅行
●
アウトドア
●
趣味
学び
●人気
●新着
●
人文科学
●
社会科学
●
自然科学
●
語学
●
ビジネス・経営学
●
デザイン
●
法律
●
本・書評
●
将棋・囲碁
●
はてなブログ︵学び︶
テクノロジー
●人気
●新着
●
IT
●
セキュリティ技術
●
はてなブログ︵テクノロジー︶
●
AI・機械学習
●
プログラミング
●
エンジニア
おもしろ
●人気
●新着
●
まとめ
●
ネタ
●
おもしろ
●
これはすごい
●
かわいい
●
雑学
●
癒やし
エンタメ
●人気
●新着
●
スポーツ
●
映画
●
音楽
●
アイドル
●
芸能
●
お笑い
●
サッカー
●
話題の動画
アニメとゲーム
●人気
●新着
●
マンガ
●
Webマンガ
●
ゲーム
●
任天堂
●
PlayStation
●
アニメ
●
バーチャルYouTuber
●
オタクカルチャー
●
おすすめ
Wikipedia
﹃mpywさんの記事一覧﹄
●
人気
●
新着
●
すべて
7users
zenn.dev/mpyw
Laravel の FormRequest とは? 基本的な説明は割愛します。公式ドキュメントを参照してください。 FormRequest が実際に解決される動き これに関しても以下の記事によくまとまっていますので,リンクしておきます。 ポイントとなるのは FormRequestServiceProvider にある $this->app->afterResolving(ValidatesWhenResolved::class, function ($resolved) { $resolved->validateResolved(); }); $this->app->resolving(FormRequest::class, function ($request, $app) { $request = FormRequest::createFrom($app['request'], $re
●
テクノロジー
●2023/12/08 17:26
●article
282 users
zenn.dev/mpyw
Goは Web 開発に向いているか? 最も向いている領域は﹁CLI ツール﹂﹁ミドルウェア﹂﹁マイクロサービス﹂だと思っている。なぜならそれらはコードベースを比較的小さく抑えることを前提としているからだ。Goは大きなコードベースを抱えやすい設計の言語になっていない。 ミドルウェアとマイクロサービスに関しては小さく作ることが正義。 CLI ツールに関しては単一責務なツールであれば小さくなるが,複数を束ねるツールであっても Web サービス開発に比べれば考えることは少なくて済む。 Web 業界における﹁一般的な Web 開発﹂,すなわちモノリスを基本とした中規模以上の開発にははっきりと 向いていない と言うべきだろう。 フラットパッケージは正義か? 私が SNS で何度か言及した以下の記事がある。 フラットパッケージ戦略は,確かにGoの文化圏においては一定の支持を集めている。Goの
●
テクノロジー
●2023/09/09 17:52
●go
●golang
●あとで読む
●開発
●設計
●web
●プログラミング
●ツール
●development
176 users
zenn.dev/mpyw
問題のある実装パターン 共通実装 以下のような applog パッケージ上のロガー実装を考えましょう。ここではGo標準の log.Logger をラップしていますが,様々な実装に拡張できることを想定しています。 package applog import ( "fmt" "log" "os" ) type Logger interface { Info(message string) Error(message string) } func NewLogger() Logger { return &logger{ inner: log.New(os.Stdout, "", log.LstdFlags), } } var _ Logger = (*logger)(nil) type logger struct { inner *log.Logger } func (l *logger)
●
テクノロジー
●2023/09/06 16:12
●golang
●go
●あとで読む
●DI
●log
●logging
●DDD
●プログラミング
9users
zenn.dev/mpyw
はじめに 最近 𝕏 で,Goのプロジェクトで起こっていたタイムゾーンに起因するトラブルをきっかけとして話を広げていったポストがありましたが,そのとき意外と反響がありました。 その一方で,時間をかけて設計された社内の PHP プロジェクトでは比較的トラブル少なく解決できているので,その知見を共有していこうと思います。 ︵将来的にはGoのプロジェクトにも知見を応用できればいいなと考えています︶ データベースについて RDBMS の選定 さて,まず Laravel にフォーカスした話をする前に,データベース上での日付時刻のデータ型の選び方というアプローチからこの記事を書こうと思ったのですが,さらにその前に使用する RDBMS を決めなければなりませんね。 MySQL か Postgres を選ぶ状況が多いと思うので,この2つに絞って回答します。 Postgres を使ってください。
●
テクノロジー
●2023/09/03 10:04
●postgresql
●db
●article
●development
●programming
●design
5users
zenn.dev/mpyw
TL;DR firstOrCreate() updateOrCreate() という機能がもともと Eloquent に備わっていたが,これらはレースコンディションを考慮した実装になっていなかったため,大きなアクセス数が伴うプロダクションで安心して使うには少し工夫が必要な機能だった。 Laravel v10.29.0 で createOrFirst() という機能が実装され,さらに firstOrCreate() updateOrCreate() が内部的にそれを利用するように変更された。 はじめに ご無沙汰しております。最近記事を書く機会がめっきり減ってしまいましたが,今回はかなり強い動機を伴う出来事があったため書くに至りました。今回は Eloquent まわりの最新事情に関する告知になります。 以前 Qiita に以下のような記事を投稿していました。今回は Zenn に投稿していますが
●
テクノロジー
●2023/09/01 03:18
●article
139 users
zenn.dev/mpyw
読者対象 ANSI 定義の古典的なトランザクション分離レベルとアノマリーは概ね理解している MySQL/Postgres では理論的な部分がどうなっているのかを知りたい 理論面の前提知識 2022-08-19 追記: 社内勉強会向けのスライドを作成しました。先にスライドを見てから,引用文献およびこの記事を読むと理解が深まると思います。 まず ANSI 定義の古典的な定義を聞いたことが無い方は,以下のリンクを参照されたい。 ANSI 定義に対応する解説はこれらのサイト以外にもたくさんあるため,自分にとって読みやすいと感じる情報をあたってほしい。︵既に熟知されている方は十分︶ 次点で読んでいただきたいのが, @kumagi さんの以下の記事。古典的には4つの分離レベルと3つのアノマリーだけで説明されていたものの,不十分であることが学術的に指摘され,解像度を上げようとする流れが後になって
●
テクノロジー
●2022/07/31 01:58
●postgresql
●mysql
●db
●RDBMS
●トランザクション
●あとで読む
●分離レベル
●transaction
75users
zenn.dev/mpyw
実際はどう? 共通で言えること MySQL/Postgres とも,ファジーリードとファントムリードはセットで起こったり起こらなかったりするようになっているため, SQL 標準のように更新なのか新規・削除なのかを意識する機会は少ないです。 一貫性読み取りで参照するデータは,更新時に参照するデータ本体とは隔離された スナップショット になります。 文の種類 アクション 参照先 ロック
●
テクノロジー
●2022/07/29 09:27
●postgresql
●mysql
●DB
●データベース
●あとで読む
●SQL
325 users
zenn.dev/mpyw
トランザクション分離レベルについての教養があったほうがこの記事の内容を理解しやすいため,必要に応じてまず以下を参照されたい。 背景 以前, Qiita で以下の記事を投稿した。今回の議題に直接的な関係はないが,関連している部分があるため引用する。 MySQL/Postgres とも, MVCC アーキテクチャの恩恵で, SELECT と UPDATE は基本的には競合しない。 単一レコードのシンプルな UPDATE でも排他ロックされ,排他ロック中のレコードへの UPDATE での変更操作は トランザクション分離レベルによらず ブロックされる。UPDATE 文に含まれる WHERE 句での検索もブロックされ,これはブロックされない SELECT による検索とは別扱いになる。 但し UPDATE 文の WHERE 句上で,更新対象をサブクエリの SELECT から自己参照している場合は例外。
●
テクノロジー
●2022/07/07 10:28
●redis
●mysql
●postgresql
●あとで読む
●DB
●データベース
●ロック
●database
●排他制御
498 users
zenn.dev/mpyw
読者対象 ある程度データベースに関する知識を持っている,経験年数1年以上のバックエンドエンジニア 特定のプログラミング言語に依存する部分は含めないため,すべての SQL 使用者を対象とする また,ゼロからの丁寧な説明というよりは,リファレンス感覚で使える記事という形にまとめる。 RDBMS の対象バージョン PostgreSQL: 9.4 以降 MySQL: 8.0.28 以降id︵データ型と INSERT 時のデフォルト埋め︶ 導入 一般的に採用されやすいプライマリキー用の値として,以下を考える。 連番整数 MySQL では AUTO_INCREMENT, Postgres では IDENTITY や SERIAL と呼ばれるもの UUID v1: ハードウェアごとにユニークな単調増加値 UUID v4: ランダム値 UUID v7︵ドラフト︶: 単調増加であるタイムスタンプとラ
●
テクノロジー
●2022/06/16 09:03
●postgresql
●mysql
●db
●あとで読む
●SQL
●database
●データベース
●UUID
●設計
●id
8users
zenn.dev/mpyw
CREATE TABLE users( id INTEGER PRIMARY KEY, name TEXT NOT NULL, description TEXT NOT NULL ); このテーブルに関して, ﹁指定されたIDのユーザの, 指定されたフィールドのみを 差分更新したい﹂ という要求があり,それに合わせて以下のように UserRepository クラスを実装した。 class UserRepository { public function update( int $id, ?string $name = null, ?string $description = null, ): void { // 処理内容はダミー $updated = []; if ($name !== null) { $updated['name'] = $name; } if ($descript
●
テクノロジー
●2022/06/11 08:40
●php
●開発
●プログラミング
●article
44users
zenn.dev/mpyw
/** * [α] T 型から undefined 不可キーの union を抽出 */ type RequiredKeys<T> = { [K in keyof T]-?: Record<any, unknown> extends Pick<T, K> ? never : K; }[keyof T]; /** * [β] α を利用し, Passed 型から Req 型の条件を満たさないものだけを抽出 */ type MissingKeys<Req, Passed extends Partial<Req>> = { [K in keyof Pick< Req, RequiredKeys<Req> >]: Passed[K] extends Req[K] ? never : K; }[keyof Pick<Req, RequiredKeys<Req>>]; /** * [γ] β を利用し
●
テクノロジー
●2021/07/09 08:56
●TypeScript
●あとで読む
●dev
●tips
541 users
zenn.dev/mpyw
この記事は Laravel Advent Calendar 2020 - Qiita 最終日の記事です。 TL;DR DDD や "真の" クリーンアーキテクチャは, Web 業界における大抵の現場ではオーバースペックだし,導入しても全員がついてこれるとは限らない app/UseCases ディレクトリだけ切って,ドメインごとに単一責務なクラスを置くと使いやすいよ ActiveRecord 指向のフレームワークで Repository パターンを無理に導入すると死ぬので, UseCase で Eloquent Model の機能を使うことを恐れるな はじめに Zenn では初投稿です。日本の Laravel コミュニティではもうお馴染みのようで実はあまり顔を出していない︵?︶ @mpyw と申します。オンラインサロンの火付け役となった Synapse が最初の仕事でしたが,就職後すぐ会社が
●
テクノロジー
●2020/12/24 19:57
●laravel
●php
●あとで読む
●アーキテクチャ
●DDD
●開発
●設計
●プログラミング
●クリーンアーキテクチ
●CleanArchitecture
このページはまだ
ブックマークされていません
このページを最初にブックマークしてみませんか?
﹃mpywさんの記事一覧﹄の新着エントリーを見る
キーボードショートカット一覧
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く
●総合
●一般
●世の中
●政治と経済
●暮らし
●学び
●テクノロジー
●エンタメ
●アニメとゲーム
●おもしろ
●アプリ・拡張機能
●開発ブログ
●ヘルプ
●お問い合わせ
●ガイドライン
●利用規約
●プライバシーポリシー
●利用者情報の外部送信について
●ガイドライン
●利用規約
●プライバシーポリシー
●利用者情報の外部送信について
●公式アカウント
●ホットエントリー
●はてなブログ
●はてなブログPro
●人力検索はてな
●はてなブログ タグ
●はてなニュース
●ソレドコ
Copyright © 2005-2024 Hatena. All Rights Reserved.
設定を変更しましたx