Carpe Diem

備忘録

Packerでソースに使う公式AMIの場所

概要

Packerでsource_amiとして使用する公式のAMIが探しにくいので、利用するものだけまとめました。

Ubuntu

Ubuntu Amazon EC2 AMI Finder

こちらで検索します。Searchのところに16.04などバージョンを入れれば出てきます。

f:id:quoll00:20161220134537p:plain

その中でInstance Typeがややこしいのですが、以下の通りです。

続きを読む

サーバサイドのCORS対応

概要

No 'Access-Control-Allow-Origin' header is present on the requested resource.というエラーが出た際に外部API(サーバ側)でどう対応すべきかをまとめました。

CORSでググると幸せになれます。

環境

  • go 1.7.4
  • gin 1.1.4

CORSが必要になるのはどんな時か

シンプルに言うと以下の条件のときです。

  • ブラウザからの外部APIへのリクエストである
  • 今開いてるページのURLとは別ドメイン、別ポートのAPIをページ内で叩こうとしている

ref: オリジン間リソース共有 (CORS) - HTTP | MDN

続きを読む

ldflagsを使おうとしてハマったこと

概要

golangではbuild時にldflagsというオプションをつけると、変数に値を埋め込んだ状態でバイナリを生成することができます。
よく使われるのはビルド時のgitのcommitのハッシュを埋め込んで、そのバイナリがどのcommitで作成されたのかを明らかにして「想定したバージョンでビルドができているか」や「複数のサーバ間で同じバージョンを使用できているか」などをチェックしたりします。

今回はそのldflagsを使う上でハマったことを書きます。

環境

  • go 1.7.4

ハマったこと

go 1.5から書き方が変わった

以前はスペースで区切って

go build -ldflags "-X パッケージ名.変数 値"

でしたが、今は=を使って

go build -ldflags "-X パッケージ名.変数=値"

となります。

続きを読む

angular-cliで手軽にAngular2を始める

概要

Angular2のチュートリアルを終えた後で「いざ作ってみよう」となると

  • 「package.jsonやtsconfigとかどうしよう」
  • 「system.jsよりwebpackがいいって聞くけどどうなんだろ」
  • 「テストフレームワークは何がいいんだろう」

みたいなことで悩んでなかなか進まないことがあると思います。
そんなときにそういった開発の下準備的なことをまとめてやってくれるのがangular-cliです。
angular-cliに下準備を任せ、Material Designをあてたページを作成します。

環境

  • angular-cli 1.0.0-beta.21

成果物

今回実装してできるものは以下です。

デモページ

Angular2Sample

続きを読む

Elasticsearchでスコアに重み付けを行う

概要

SEO対策という言葉があるように、Googleの検索結果は単なる文字列の一致率ではなくホームページ自体にスコアが付けられており、それを元に検索の順位が決まります。
今回はElasticsearchでそのようなスコア順に並べる方法を説明します。

環境

  • Elasticsearch 5.0.0

データの用意

同じ名前のmy siteというサイトを用意します。そしてそれぞれのスコアをsで設定しています。

curl -s -XPOST localhost:9200/my_index/my_type/_bulk -d '
{"index": {"_id": "1"}}
{"title": "my site", "body": "Bad site", "s": 1}
{"index": {"_id": "2"}}
{"title": "my site", "body": "Normal site", "s": 10}
{"index": {"_id": "3"}}
{"title": "my site", "body": "Good site", "s": 100}
'
続きを読む

ECSでコンテナのrolling update

概要

ECS上のコンテナをダウンタイム0で更新(デプロイ)する方法をまとめます。

環境

  • ALB
  • ECS container agent 1.13.0
  • Docker 1.11.2

Amazon ECS Container Agent Versions - Amazon EC2 Container Service

ポイント

  • minimumHealthyPercentmaximumPercentを適切に設定する
  • connection drainingを適切な長さにする

この2つを意識していればOKです。

続きを読む

.ioドメインに障害が起きたのでDNSの仕組みを勉強

概要

先日.ioドメインで障害が起きました。.ioのトップレベDNSサーバがサブドメインの権威サーバ一覧を返さなくなったので名前解決ができなくなったためです。
今回はDNSの流れと確認方法をまとめました。

DNSの流れ

  1. www.example.comにアクセスしたい
  2. クライアントPCに指定されているDNSサーバ(キャッシュサーバ)に問い合わせる
  3. キャッシュサーバはルートサーバへwww.example.comIPアドレスについて問い合わせる
  4. ルートサーバは.comのトップレベDNSサーバへ問い合わせるよう回答する
  5. キャッシュサーバは.comのトップレベDNSサーバへ問い合わせる
  6. .comDNSサーバはexample.comの権威DNSサーバへ問い合わせるよう回答する
  7. キャッシュサーバはexample.comの権威DNSサーバへ問い合わせる
  8. example.comはwww.example.comのIPをキャッシュサーバへ回答する
  9. キャッシュサーバはクライアントPCにIPを回答する

f:id:quoll00:20161101001924p:plain

ref: dnsfly Appliance by UX WORLD, INC.

続きを読む