Carpe Diem

備忘録

Webフロントのパフォーマンス診断

概要

Webフロントのパフォーマンスをチェックする診断ツールの紹介です。
なんだかもっさりした挙動だけどどこから手を付けたら良いか分からない、といった時に問題点を洗い出すのに便利です。

Audits

Chrome DevToolsに標準で付いています。
ページを開いた状態でRunを押すと以下のように診断してくれます。

f:id:quoll00:20170623002538p:plain

続きを読む

GoでBigQueryにデータを追加する

概要

GoでのBigQueryの使い方です。
認証周りが以前と変わっており、JWTを使ってゴニョゴニョしてた部分をライブラリ側で吸収してくれるようになったのか使う側は簡単になりました。

環境

  • go 1.8.3

サービスアカウントキーの作成

API Console Credentials pageで以下のようにサービスアカウントキーを作成します。

f:id:quoll00:20170622010124p:plain

続きを読む

Goのnilについて

概要

先日の golang.tokyo #6 - connpass で独自のエラー型でnilにハマった点に触れられていて、自分でもふわっとしか覚えてなかったのでまとめ。

覚えること

以下を覚えておけばとりあえず大丈夫です。

  • nilは型を持つ
  • interfaceの場合のみ、型もnilでないとxxx == nilはfalse

nilを扱う型は

  • pointer
  • function
  • map
  • slice
  • channel
  • interface

がありますが、注意するのはinterfaceのみで大丈夫です。

続きを読む

Docker Imageのバージョン管理について

概要

development, staging, productionといった環境に分けてdocker imageを利用する場合のバージョン管理について考えてみました。

環境

  • AWS ECS
  • AWS ECR
  • Docker 17.03.1

要件

今回対応する時に考慮した要件は以下。

  • gitのtagと連動
    • ただし最新のimageのTAGを確認する手間は省きたい
  • dev, stg, prd分けができる
    • ただしimageの差異は極力なくしたい
  • リリース後の切り戻しが容易
続きを読む

macOS Sierraでulimitを変更する方法

概要

SierraのPCに変更した際、.bash_profileを過去のPCから引き継いだところulimitのところで設定が変わっていたのでメモ。

環境

デフォルトの確認

$ ulimit -a  
core file size          (blocks, -c) 0  
data seg size           (kbytes, -d) unlimited  
file size               (blocks, -f) unlimited  
max locked memory       (kbytes, -l) unlimited  
max memory size         (kbytes, -m) unlimited  
open files                      (-n) 256  
pipe size            (512 bytes, -p) 1  
stack size              (kbytes, -s) 8192  
cpu time               (seconds, -t) unlimited  
max user processes              (-u) 709  
virtual memory          (kbytes, -v) unlimited 

max open filesの上限は256max user processes709に制限されています。
このままだと少ないので、設定ファイルを追加して上限を上げます。

続きを読む

SPAを S3+CloudFront で表示する方法

概要

AngularなどのSPAをS3+CloudFrontで表示する方法についてです。

要件

  1. SSL/TLSを使いたい
  2. https://example.com/hoge のようなサブディレクトリのようなパスで403にならないようにしたい
  3. ↑のようなパスでもOGPがきちんと表示される
  4. リロードしても404にならない
  5. S3バケットのファイルには直接アクセスできないようにしたい
続きを読む

B TreeとB+ Treeの違い

概要

インデックスに対してMongoDBはB Treeを採用し、MySQLInnoDBはB+ Treeを採用しています。
どうして採用しているアルゴリズムが違うのだろう?と思って調べてみました。

主な違い

B+ TreeはほとんどB Treeと同じですが、以下の点が異なります。

  • リーフノードとリーフノードを結ぶポインタがある
  • データはリーフノードのみに保持する

具体例

言葉だけだと分かりにくいので、Visualizeするツールを使って具体例を表示します。
[1, 2, 3, 4, 5, 6, 8, 10, 15, 18]という数列に対し、Order: 3で作ってみます。
Orderは1ノードから出る枝の数のことです。

B Tree

f:id:quoll00:20170517165955p:plain

B-Tree Visualization

続きを読む