サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
デスク環境を整える
qiita.com/muroya2355
ISUCON のブログ記事等で当たり前に出てくる「N+1問題」を知らなかったので、調査した結果です。 TL;DR N+1問題とは、このブログ記事にもう全部書いていますが、 N件のデータ行を持つテーブルをごそっと読みだすのに1回 別のテーブルから、先述のテーブルの各行に紐づくデータを(1件ずつ)読み出すのに計N回 合計でN+1回のクエリを実行している状態です。 (1+N問題と考えた方が理解しやすい) Nが大きいときは処理に非常に時間がかかるため、対応が必要になります。 対応策としては、 JOIN句による表の結合 Eager Loading(必要なデータを事前にロード) の2種類があります。 例 図書館の本貸出管理システムを考えます。 以下のように、「書籍」テーブルと、図書館の「利用者1」テーブルがあるとします。 各書籍について、借りている人の名前と、年齢を知りたいときを考えます。 欲しいのは
qiita.com/muroon
はじめに Datadog APMの簡単な特徴とGoで使用するための方法をまとめました。 公式サイトのドキュメントを見ていただくことを勧めますが、 補足資料として見ていただければと思います。 公式ドキュメント TraceパッケージのGoDoc また、ここではDatadogのAPM以外の機能については割愛します。 APMとは Application Performance Managementの頭文字をとった略語で、一般的にはアプリケーションやシステムの性能を管理・監視するものです。 DatadogのAPMではマネージドクライド、オンプレミスに関わらず分散トレーシングに対応しています。 Flame GraphやSpan Listなど整理された形でトレース結果を取得できるようになっています。 Flame Graph - Span List 使用するには Agentのインストールと起動 APM用パ
はじめに HTTP/3も出てきて今更感があるが、改めてHTTP/2についてまとめてみました。 HTTP1.1とその問題点 HTTP/2誕生前から使用されているHTTP/1.1では基本的には1つのリクエストが完了しレスポンスが返ってくるするまで、次のリクエストを送ることができません。 HTTPパイプラインという仕組みを使えばHTTP/1.1でも完了を待たずに、複数のリクエストを送信することが可能ですが サーバーはリクエストの順番通りにレスポンスを返さなければならないという制約があります。 3つのリクエストを送信して、 1つめのリクエストのレスポンスが最も重い場合は 2つめ以降のレスポンスが待たされる結果となります。 これをHTTP HOL Blockingといいます。 HTTP/1.1で速度を上げ場合には TCP接続を多重化するしかないです。では多重化する場合どこに問題があるのでしょうか?
はじめに testify モックを使用したテストを書く上で、こちらのmockパッケージが非常に便利だったので記載しました。 テストのハードルを下げる足しになればと思います。 testifyは他にもアサーション、テスト・スイートの機能がありますが、 ここではモックについてのみ説明します。 簡単な使用例 テスト対象 モック 前提条件 テスト時にはモックに置き換えられるようなつくり テスト対象 テストの対象となるビジネスロジック 本例ではDIによりモック対象を注入する package service type User struct { dt datastore.UserInterface // モック対象 } func (u *User) UserName(id int) (string, error) { usr, err := u.dt.Get(id) if usr == nil || e
Enterprise Business Rules ビジネスルールの為のデータ構造を持ったオブジェクト。 データの実態を表す場所。 Application Business Rules ビジネスルールを操作する場所。 つまりこのアプリケーションで何ができるかを実践します。 Interface Adapter 外部からの入力、データの永続化、表示を担当する場所 Frameworks & Drivers Webフレームワーク、DB操作の実際に担うソース、 フロントエンドのUIなどがここに所属しています。 外側のレイヤーの要素を直接参照してはならない 上記の図におけるこの矢印は依存を表しており、 内側のレイヤーから外側のレイヤーの要素への依存を禁じます。 ここでいう依存とは要素(構造体、変数など)への直接参照をさせないということです。 では外側のレイヤー要素を参照せざる得ないは、どうするのでしょ
qiita.com/muro
決まったディレクトリに対してSUBSTを行いたい場合は別にいいのですが、ふとこのディレクトリーをドライブとして割り当てたい。 というときにパスを記述するのは面倒だったりします。 (日本語ディレクトリだったり、半角スペースがあったり…) 以下のコマンドであれば現在のディレクトリに対してsubstを実行可能です。
演算子のオーバーロードを理解するなら車輪の再発名が手っ取り早いです。 今回はC#で分数を扱うクラスを作りながら書いてみます。 演算子のオーバーロードってなに? 四則演算や代入、比較など演算子を用いる部分の挙動を変更するための機能です。 trueやfalseを設定することも可能です。 詳しくは以下のページをどうぞ オーバーロードされた演算子 (C# プログラミング ガイド) 演算子のオーバーロードをするとどうなる? 演算子のオーバーロードを使用すると異なる型との計算などが可能となります。
Googleで写真から人物を切り抜く方法を検索をするとPhotoshopやGimpの情報が多く見つかります。 でもPhotoshopやGimpはちょっと細かい操作が必要で、画像加工初心者にはちょっと厳しいです。 ざっくりでよければ、Excelで結構簡単にできます。 (Excel 2010以降の機能のようなので2007や2003ではできません。) おもむろに画像を貼り付けます。 画像を選択すると右上に「図ツール」が表示されるので、タブを切り替えます。 左端の「背景の削除」を押すと こうなります。 ピンク(紫?)の部分が透過される部分です。 このままでは胸元がスケスケになってしまうので、調整します。 左上の、「保持する領域としてマークする」を利用すると透過されない領域をざっくり指定することができます。 わかりづらいですが、胸元に+マークがつき、ピンクじゃなくなりました。 これで透過されなくなっ
このページを最初にブックマークしてみませんか?
『@muroのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く