Carpe Diem

備忘録

2016-01-01から1年間の記事一覧

neologdでkuromojiを新語に対応させる

概要 Elasticsearchの日本語の形態素解析をする際に利用されるkuromojiは非常に便利ですが、その辞書であるIPADICは更新が止まっているためやや古い状態です。 その辞書を更新してくださった方がいらっしゃり、neologdとして公開されているためそれを導入し…

マルチホスト上にoverlay networkを構築してコンテナ間で疎通

概要 以前はWeaveというツールを使ってマルチホストをまたいだコンテナ間通信ができるように構築しました。 Docker 1.9.0からVXLANという仮想でL2ネットワークを構築する技術を用い、Docker自身がマルチホストネットワークに対応したので、今度はそちらで構…

Prefix Query の注意

概要 ElasticsearchのPrefix Query を使用する時に詰まったところをまとめました。 環境 Elasticsearch 2.3.2 通常の利用方法 マッピング・データ用意 マッピングを設定します。 項目 設定値 インデックス名 test タイプ名 internet フィールド名 name で設…

Docker Swarmでマルチホストでクラスタ構築

概要 Docker Swarmでマルチホスト環境上でDockerクラスタを構築します。 事前知識 Docker Swarmで構築する際は以下の3つの要素が必要になります。 ノードを管理するDiscovery backend Swarm Manager(マスターノード) Swarm Node(子ノード) 環境 Docker …

Docker Compose で複数コンテナを管理

概要 単一ホスト上で複数のコンテナを起動するときはDocker Composeを使うのが便利です。 今回はその基本的な使い方を紹介します。 環境 Docker 1.11.0 Docker-Compose 1.7.0 Docker Composeのメリット 複数コンテナを管理しやすい スケールアウト、スケール…

Consulを使ってみる

概要 Consulというサービス・ディスカバリツールを使います。 クラウド時代ではオートスケールなどサーバの台数やIPが変動することが多いため、動的に検知できる必要がありConsulはそのためのツールです。 またConsulを通してどのサーバ上でどのようなサービ…

Docker Data Volume を理解する

概要 Dockerのデータをホスト側に保持する方法をまとめます。 Dockerはコンテナの破棄・再作成が簡単にできる一方、そのままだとデータも消えてしまいます。 今回のDate Volumeはデータの永続性を保つべきシーンで必要となる知識です。 環境 OSX 10.11.4 doc…

GoでDependency Injection

概要 「Dependency Injection=依存性の注入」と言われますが、依存したオブジェクトを外部から入れることで何がメリットなのかを感じ取るのは実際に書いてみて分かると思うので、勉強としてまとめてみました。 Dependency Injectionとは デザインパターン …

GoのRace Detectorでマルチスレッドでのデータ競合検知

Go

概要 Go1.6からマップへの同時アクセスを検知する機能が追加されました。 しかしそれ以前からrace detectorが標準で備わっているため、複数のスレッドによる同時アクセスで起こるデータ競合の検知はできます。 今回はその使い方を紹介します。 環境 Go 1.6 …

GoでGooglePlayの課金レシートの署名検証

概要 GooglePlayでは課金処理の実行時に署名を発行してくれるため、そのレシートが正規のレシートかどうかを検証する事が可能です。 今回はGoでその検証ロジックを実装してみます。 環境 golang 1.6 必要な情報 以下の3つが必要になります。 1. アプリの公…

Bool Query と Dis Max Query の違い

概要 Bool QueryとDis Max Queryの違いが曖昧だったのでちゃんと調べました。 環境 Ubuntu 14.04 Elasticsearch 2.2.0 データ投入 curl -s -XPOST localhost:9200/my_index/my_type/_bulk -d ' {"index": {"_id": "1"}} {"title": "Quick brown rabbits", "b…

SlackにRSSのフィードを通知させる

概要 「SlackにGithubのリリース通知を飛ばしたい」と思い、やり方としてgithubのreleasesのRSSフィードをSlackへ飛ばす方法があったので紹介します。 手順概要 Slackへintegrationの追加 githubのreleaseのRSSフィードを用意 RSSフィードを設定

React.js+Babel+webpackでfizzbuzz

概要 React.jsを勉強しようと思って簡単なfizzbuzz表示するだけのものを作ってみました。 github.com 動作ページはこちら 役割 ツール名 役割 React.js UIを構築するためのライブラリ。フレームワークではない。 Babel ES6など新しい記法を既存のブラウザで…

Babel6でトランスパイル

概要 React.jsの勉強している時にBabelというツールを皆さんが使っていてどんなツールか知らなかったのでまとめてみました。 環境 Babel 6.5.2 Babelとは BabelはES6やES7など、新しいJavaScriptの仕様で書かれたソースコードを現状のブラウザで使用できるよ…

検索時に複数のクエリでスコアを付ける その2

概要 前回と同じく、検索した時に「部分一致させたいけど、上位に出るのは前方一致してるものがいいなぁ」といった時の対応。 今回はcopy_toを使います。 元々の経緯としてはフィールド構造が異なる複数の対象に対してTopHitsクエリを用いていたのですが、何…

Amazon Cloud Drive で暗号化して保存する

概要 Amazon Cloud Driveを暗号化して扱う方法です。 ※ファイルの追加、更新はできますが削除ができません 考え方 基本的なデータの流れは以下です。

CuratorでElasticsearchのインデックスを削除

概要 Kibanaを使う上でデータ容量が問題になってきます。 可視化やログ調査に必要な分のみ残し、古いインデックスを定期的に削除する必要があります。 Curatorはそのためのツールです。 環境 Elasticsearch 2.2.0 Curator 3.4.1

Elasticsearch plugin 作成方法 [2.x]

概要 前回は1.x系のプラグインの作成方法を書きました。 今回は2.x系の作り方を勉強します。 完成形は以下 github.com 環境 Ubuntu 14.04 Elasticsearch 2.2.0 1.xとの違い 1.xはmaven、2.xはgradleでやるのが主流 2.xからAbstractPlugin => Pluginに変更 pl…

Elasticsearch plugin 作成方法 [1.x]

概要 Elasticsearchのプラグインの作成方法です。 1.xと2.xで色々と変更があるので、まずは1.xの作り方を学んでみます。 完成形は以下 github.com 環境 Ubuntu 14.04 Elasticsearch 1.4.5 プロジェクト作成 mavenからスケルトンコードを生成することができる…

encfsでファイルの暗号化

概要 クラウドにファイルをバックアップする場合、できれば暗号化したいのですがVeraCryptなどでは1ファイルを変更しただけでボリューム全てをアップロードし直しになり現実的じゃありません。かといって全て暗号化zipなどにすると、使う上で不便極まりない…

Amazon Cloud Driveをコマンドラインで操作する

概要 amazon.co.jpの方は写真のみですが、amazon.comの方ではAmazon Cloud Driveが容量無制限プランを用意しています。 こちらはDropboxとは異なり、ローカルPCとの同期型でなくファイルをクラウド上にどんどん送り込むタイプのもので、公式が用意しているア…

UnionFS で Docker のレイヤ構造を理解する

概要 DockerではAUFSという技術が使われています。 こちらはUnionFS(ディレクトリを重ね合わせることができる)の一つで、親のファイルシステムをすべてReadOnlyにして、その上に書き込み可能なレイヤを重ねて1つのファイルシステムのように扱います。 Docker…

TerraformでAutoScaling環境の構築

概要 Terraformを使ってAutoScaling環境を構築します。 以下の状態をゴールとします デフォルト1台 CPUが30%超えたら1台増やす CPUが5%以下なら1台減らす 環境 Terraform 0.6.9 Terraform設定 セキュリティグループなどはTerraformでAWSのセキュアな構成…

Kibanaの運用で注意すること

概要 Kibanaをログ可視化&検索として扱う上でいくつかの問題が生じたので、その時の対処方法をまとめます。 ログ可視化という用途であればレスポンス速度などの優先度は下げられるため、以下の対応が可能になります。 環境 Ubuntu 14.04 Elasticsearch 2.1.…

NginxのアクセスログをKibanaで可視化

概要 Nginxのアクセスログを用いて可視化の流れをまとめます。 mappingは手動で設定します。 環境 Ubuntu 14.04 fluentd 0.12.19 fluent-plugin-elasticsearch 1.3.0 Nginx 1.4.6 Elasticsearch 2.1.1 Kibana 4.3.1 構成 IP 名前 役割 192.168.33.100 web We…

Elasticsearch2.1 × Kibana4.3 の導入

概要 可視化ツールとして有名なKibanaについてです。 Kibana 4.3 では Elasticsearch 2.x が必要なのでインストール方法をまとめました。 環境 Ubuntu 14.04 Elasticsearch 2.1.1 Kibana 4.3.1 Elasticsearch2.xのインストール ElasticSearch 2.x のインスト…