Carpe Diem

備忘録

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

続きを読む

Webフロントの実装で利用したChrome extension

概要

Angularを使ってWebフロントを実装しているのですが、その過程で便利だったChrome extensionを紹介します。

Chrome extension

Page Ruler

chrome.google.com

画面上でのピクセルを測るのに使う。デザイナーさんからPNGだけ頂いた時など。

ColorZilla

chrome.google.com

カラーピッカー。デザイナーさんからPNGだけ頂いた時など。
ただ opacity は区別できないので、それはPSDで確認が必要。

続きを読む

署名と暗号強度について

概要

署名ロジックを選ぶ際に、どのアルゴリズムにするか、どれくらいの鍵長が適切なのかが分からなかったので調べてまとめました。

対象

共通鍵暗号(対称暗号)

  • AES

公開鍵暗号

続きを読む

GoでJWTの具体的な実装

概要

以前JWTを認証用トークンに使う時に調べたこと - Carpe Diemで紹介した内容の具体的な実装の紹介です。

環境

署名アルゴリズムと鍵長は以下とします。

署名アルゴリズム 鍵長
RSA-SHA256 4096bit

成果物

今回の完成形はこちら

github.com

続きを読む