kakts-log

programming について調べたことを整理していきます

facebook/flow Comment Typesによるpure javascriptでの型チェック

概要 javascriptの静的型付けのチェックを行うツールであるflowというツールを導入し、業務で開発しているプロダクトの品質向上を目指そうと考えています。 既にpure javascriptで書かれた環境があるので、このコードを書き直さずにflowを導入したいと考えて…

Redis Sentinel configファイルのまとめ

概要 Redis Sentinelを用いて、Redisクラスタのモニタリング、master slaveの各プロセスの監視と自動フェイルオーバーを行うことができます。 今回はRedis Sentinelの起動時のconfigファイルについてメモがてらざっくりまとめます。 Redis Sentinel について…

Go revelでのmongoDBとのコネクション、CRUD処理についてのメモ

概要 Go revelというwebフレームワークで個人のwebアプリを作っている最中にハマった箇所のメモ。 mgoというGoのmongoドライバを使って、mongoDBとのコネクションを保持させ、CRUD処理を1ファイルにまとめて 他のcontroller層から呼び出して使いたかったので…

Vagrant VM内にたてたmongodにhost OSから接続できるようにする

概要 Vagrant VM内でmongodを立てて、host OSからアクセスできるようにする方法をまとめます。 docker containerで以前mongo用コンテナの建て方についてまとめたのですが、 仕事でVagrantでVMを立て、その中でmongodを立てる機会があり、 今回はその時に行っ…

redis 4系から追加されたUNLINKについて

はじめに 2017年7月にリリースされたredis4.0から、特定のキーの値を非同期的に削除するUNLINKコマンドがでました。 UNLINKコマンドの既存のDELコマンドとの違いついてまとめます。 redis4.0系リリース 2017年7月にredis4.0系がリリースされました。 主な機…

Golang listパッケージを使ったdoubly linked listの操作

go

Golang listという標準パッケージを使ってdoubly linked listの操作を簡単に行えるので、まとめます。 list - The Go Programming Language 使い方 listパッケージを使うためには、公式ドキュメントにある通り、"container/list"をインポートします。 list.N…

node.js へのコントリビュート

Merged. github.com 最近リリースされたhttp2コアモジュールのdocsの修正のみですがnode.js本家へのPRマージされました。 今後は実際のコードの改修とかどんどんやっていきたい。

node.js nightlyバージョンで使えるようになった http2モジュールについて

概要 先日 node.jsにおいて http/2の実装がマージされました。 experimentalな機能で、現在だとnode nightlyバージョン(9.x系)で実行時にオプションを付けることで http2 コアモジュールが利用可能です。 近々node.js 8.xに取り込まれるようで年内にはちゃん…

babel ES6からES5へのトランスパイル

概要 babel.jsをつかって ES6のシンタックスで書かれたjavascriptファイルをES5のシンタックスにトランスパイルする方法をまとめました。 実務で使ったことなかったので勉強がてらさらっとまとめます。 babel-cliのインストール babelをコマンドラインで利用…

node.js stringからbufferへの変換

node.jsにおいて、文字列をbufferへ変換させたいときの方法をまとめます 環境 node.js 8.1.3 Bufferインスタンスをどう生成するか node.js 8.x系におけるBufferインスタンスの作成において、 new Bufferは既にdepricatedになっている*1ため、ここではbuffer…

Contributing to Fawn module.

Done Refactored lib scripts. by kakts · Pull Request #11 · e-oj/Fawn · GitHub

AWS LambdaからDynamo DBにデータを追加する

概要 AWS lambda functionが呼び出された際に、AWS dynamoDBのテーブルにデータを追加していく方法についてまとめます。 今回は、API Gateway と lambdaで構築した line botに対して送信されたデータを dynamoDBに追加していくところまで説明します。 IAMユ…

aws lambdaとapi gatewayで linebotを作成する

概要 AWSの API Gateway、lambdaを利用し、ユーザからのメッセージが来たときにlambda関数を呼び出し、ユーザへレスポンスを返すline botを作ります。 行った作業手順を一通りまとめます。 Linebotアカウントの作成 まず、line messaging api用のbotアカウン…

確率的データ構造・ブルームフィルタについてのまとめ

概要 特定のデータが、ある集合やリストに含まれるかどうかを判定するために、線形探索や二分探索など、いくつかのサーチアルゴリズムがありますが、 本稿ではメモリの使用効率、探索の際の計算量が優れているブルームフィルタを用いたアルゴリズムについて…

docker-composeでmongoDBのレプリカセット構築

概要 mongoDBのレプリカセットを構築する際に、docker-composeをつかって、複数のコンテナを立ち上げる方法をまとめます。 docker-composeを使うことで、複数のコンテナの設定の記述と、コンテナ起動、停止が楽にできるため、ローカル環境などで軽くmongoDB…

v8 ver6.0まとめ

v8 ver6.0がリリースされました。 ざっくりと新機能や改善点を整理します。 v8project.blogspot.jp Main features SharedArrayBuffer ver6.0から、SharedArrayBufferがのサポートが開始されました。 developer.mozilla.org SharedArrayBufferは、javascript…

npm5から導入された package-lock.jsonについて

先日npm5がリリースされました。同時期にリリースされたNode.js v8.0.0にもバンドルされており、 複数ある新機能のうち、package-lock.jsonについて気になったので本家のドキュメントの内容を読んでまとめました。 docs.npmjs.com package-lock.jsonについて…

docker run時にホスト上のランダムなポートにコンテナを割り当てる

docker run時にコンテナ内の特定のポートに、host上のランダムなポートをbindさせる方法をまとめます。 簡単なwebサーバの実装とDockerコンテナ用のDockerfileの記述 今回、下記のような構成で簡単なwebサーバを作るとする。 $ tree . ├── Dockerfile # web…

docker exitedなコンテナをまとめて削除する

dockerでの開発中に、docker runしてエラーが発生し、exitedになっているコンテナが残った状態になる場合があります。 $ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0efc271c4b9e testapp "python identidock.py" 6 seconds ago E…

Hash-Based サーチアルゴリズム まとめ

今回、多くの要素を持ち、必ずしもソートされていないコレクションに対して特定の値を探す際に効果的なHash-Basedサーチアルゴリズムについてまとめます。 日本語ではハッシュ法による探索アルゴリズムと呼ばれることもあります。 Hash-Basedサーチアルゴリ…

v8 "Launching ignition and Turbofan" 和訳

先日リリースされたv8 5.9において、新たなコード実行パイプラインが導入され、大きくパフォーマンスが向上したとのことです。 今後リリースされるNode.js ver8においてもv8 5.9が使われるため、概要を整理するためにv8本家のブログを和訳してまとめてみまし…

How browserify works

browserifyの仕組みに関して調べてみたのでメモ How browserify works browserifyはコマンドで指定したソースコードからAbstract syntax treeAbstract syntax tree - Wikipedia による静的解析を行い、コードの中に書かれているrequire()を探す。 ソースコー…

ChromeのHeadlessモードを使ってみる。

Headless Chromeとは chrome 59から、Headlessブラウザとしてchromeを使うことができるようになりました。 https://www.chromestatus.com/features/5678767817097216 2017年5月3日現在では chrome beta版でchrome 59、chrome canary版でchrome 60を利用する…

オライリー Docker 第3章までの読書メモ

オライリーのDocker本を買って読み始めました。 第3章までメモをとりつつ読み進めたので、箇条書きですがメモを公開します。 Docker作者: Adrian Mouat,Sky株式会社玉川竜司出版社/メーカー: オライリージャパン発売日: 2016/08/17メディア: 単行本(ソフト…

CentOS node.js 6.x系最新版を ansibleでインストールする

CentOS でnode.js 6.x系のインストール方法 CentOSサーバにて、node.js6.x系最新版をインストールする際、 公式のドキュメントにインストール方がまとまっています。 パッケージマネージャを利用した Node.js のインストール | Node.js このドキュメントの記…

Hive posexplode関数を使った配列操作について (配列のインデックスを保持したまま処理を行う方法)

Hiveをつかってクエリを書く際に、配列データのクエリでの操作についてハマったのでメモ。 複数の配列データを持ったテーブルの操作 ユーザ毎に複数のアイテムIDとアイテム名をもたせた配列を それぞれitem_ids, item_namesとして、 以下のような構造のuser_…

ansible commandとshellモジュールの違い

ansibleで使って対象ノードで特定のコマンドを実行する際、 デフォルトで用意されているcommandモジュールとshellモジュールを使うことができます。 環境変数や、パイプを使ったコマンドを実行させる場合 この2つは挙動が異なるのでまとめてみました。 comma…

iostatでのディスクI/Oの指標を見る

iostatとは 「I/O statics」の略称 iostatコマンドを使って、ディスク毎のI/O統計を集計して ディスクI/Oの使用率・飽和度を示す指標をみることができます。 利用シーンとしては、主にディスクI/O関連の調査を行う場合に使われます。 主なオプション iostat…

Ansible でjenkins用サーバをセットアップする

macOSのPCから特定のサーバに対してansibleをつかってパッケージをインストールする方法を解説します。 ここでは、特定のサーバに対してjenkinsとsvnをインストールし、起動させるためにansible playbookを書いていきます。 ansibleのインストール macでのan…

Serverspec でサーバの状態をテストする

chefやansibleを使ってサーバの環境構築が主流になってきていて、業務や個人で使っている人も多いと思います。 サーバ構築した後に、そのサーバの状態が正しく設定されているかを確認するとき、 手動でサーバにはいってプロセスの状態を見たりする事もできま…