kakts-log

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

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

CentOS yum update で特定のパッケージだけアップデートさせないようにする

yum のパッケージ更新をするさい、 yum update コマンドを実行すると、すべてのパッケージとそれに依存するパッケージを更新します。 手動もしくはyum_cronによる定時実行で、これを実行すると、アップデートさせたくないパッケージも更新されてしまいます。…

node.js Promiseを使った非同期処理

node.jsの非同期処理を書く際に便利なPromiseについて紹介します。 主にnode.js 4.x系以降でデフォルト利用可能な機能になります。 Promiseとは 非同期処理を抽象化したオブジェクトで、非同期処理に関する統一的なインターフェースを提供します。 これによ…

unixファイルシステムについて (詳解linuxカーネル第1章5節)

積読していた詳解linuxカーネルをまた読み進め始めました。 プロセススケジューラやらファイルシステムなどについて非常に詳しく書かれていて面白いです。 今回は第1章5節 ファイルについての項目を読んで整理してみました。 詳解 Linuxカーネル 第3版作者: …

Merged to node-csvtojson

OSS

Merged. github.com github.com

Streams for everyone

medium.com あとで読む

初 OSS contribution

github.com nodeのnode-csvtojson パッケージへのPRマージされた なにげに初OSS contirubutionだったので記念にメモ

詳解システムパフォーマンス第6章 CPUアーキテクチャのまとめ

詳解 システム・パフォーマンス作者: Brendan Gregg,西脇靖紘,長尾高弘出版社/メーカー: オライリージャパン発売日: 2017/02/22メディア: 単行本(ソフトカバー)この商品を含むブログ (1件) を見る 最近発売された「詳解システムパフォーマンス」を買って読…

Goのスライスについて

Goのスライスについて Go Slices: usage and internals - The Go Blog Go言語において固定長のサイズの配列とは別に、要素の追加に応じて自由にサイズを拡張できるスライスという型があります。 スライスのデータ構造 スライスのデータ構造としては、ソース…

Go deferについて

Goには、deferステートメントというものがあり、deferへ渡した関数実行を、その呼び出し元の関数の終了時(return)まで遅延させることができます。 package main import "fmt" func main() { // main関数の最後に実行される defer fmt.Println("world.") fmt.…

Go 変数宣言についてのまとめ

仕事で Goを使う機会があったので、基本から勉強していて、変数宣言について気になった点についてメモがてらまとめます。 Golangにおける変数宣言において、 varをつかって変数宣言をするのが一般的 package main import ( "fmt" ) func main() { // int型で…

mongod replicaSet セカンダリノードを起動後に[RS102 too stale to catch up]が出たときの対処法

mongoでレプリカセットを組んでいて、たまに障害でセカンダリノードのサーバなどが死んで、 セカンダリノードのmongodプロセスを起動した後に、プライマリのデータをsyncできずに下記のエラーが出る場合があります [rsBackgroundSync] replSet error RS102 t…

ソフトマックス関数についてのまとめ

前回の記事でニューラルネットワークの出力に対する活性化関数にシグモイド関数を使うことを紹介しました。 今回では、分類問題をニューラルネットワークをつかって解く際に、活性化関数としてよく使われるソフトマックス関数についてまとめます。 ソフトマ…

php mysql でコネクションプールを貼る

phpからmysqlを使う際に、拡張モジュールであるmysqliを使って mysqlサーバとの接続、クエリ実行を行う場合 コネクションプールを貼る事ができます。 公式ドキュメントによると、phpでのコネクションプールはphp5.3から対応されています。 PHP: mysqli 拡張…

Node.js clusterモジュールについて

シングルスレッドで動作するNode.jsにおいて、マルチコアCPUを持っているマシンの能力を最大限引き出すために、 複数のワーカープロセスを起動して処理を分散させたいといったニーズがあると思います。 そのときに重要なclusterモジュールについて、いつも業…

シェルソートについて

シェルソートは前回紹介した挿入ソートの改良版アルゴリズムです。 挿入ソートは一般的に、配列がほとんどソートされた状態で効率的に機能するもので、それ以外の場合では大きくパフォーマンスが落ちるのですが シェルソートではその欠点を補う仕組みになっ…

挿入ソートについて

先月、Javascript advent calendarで、v8の配列ソートアルゴリズムにおいて、 配列の要素数に応じて挿入ソートとクイックソートを使い分けているという記事を書きました。 v8における配列ソートについて - kakts-log 今回は、挿入ソートについてまとめてみた…

パーセプトロンとニューラルネットワークの違い

正月休みを利用して Deep Learningに関して勉強をしています。 以前、パターン認識系の本を読んでいたのですが、実装をせずに理論だけ学んでいて、いまいち自分の中で理解が進まず挫折していました。 下記に紹介する「ゼロから作るDeep Learning ――Pythonで…

C socket accept時に accept: Socket operation on non-socket が出るときの対処法

最近、tcpソケットまわりの知識を身につけたいとおもい、 ネットワークプログラミングに関する技術書を購入して勉強をはじめました。 Linuxネットワークプログラミングバイブル作者: 小俣光之,種田元樹出版社/メーカー: 秀和システム発売日: 2014/10/07メデ…

node.jsで統計処理をするには simple-statisticsが便利

データ解析して統計処理を行う際にはRやpythonがライブラリもそろっていて便利ですが、node.jsでも簡単に統計処理を行いたい場合は、simple-statisticsというnpmモジュールが非常に便利です。 github.com 数値データを配列で持たせて、平均値や中央値、分散…

mac USキーボードでの英字入力がおかしいときの対処法

macで USキーボード配列を使っている際に、ダブルクオーテーション「"」を推した直後にaを打つと「à」になったり、 スペースを押すと勝手に「"」がもう一つ挿入されたり挙動がおかしいときがあります。 その場合は、macのキーボードの英語設定がおかしいこと…

Makefileでmake時に 「*** missing separator. Stop.」 と出たときの対処法

c言語で書いたプログラムをコンパイルする際にMakefileにコンパイル処理をまとめて行くと便利です 。 たまにMakefileをつかってmakeすると以下のエラーが出る時があります。 Makefile:8: *** missing separator. Stop. この場合は、下記の最後の行の先頭でス…

v8における配列ソートについて

この記事はJavaScript Advent Calendar 2016 - Qiitaのの18日目の投稿です。 私は業務やプライベートで、node.jsを使って開発をしています。 勉強のために、時間のあるときにv8のソースコードを読んでいて内部の実装について調べています。 先日、配列のソー…

Google apps script のLock制御について

この投稿はGoogle Apps Script Advent Calendar 2016の17日の投稿です。 Google apps scriptとは developers.google.com Googleスプレッドシートや、ドキュメントなど、Google関連のサービスにおいてGoogle apps script(以下GAS)を使ってシートの編集、 web …

nginxの利点

個人環境でnginxを使うようになったので、nginxを使う上での利点について軽く整理する。 nginxの主な用途 Webサーバ Apache HTTPとよく比較される 静的コンテンツサーバ 画像・htmlなどの静的コンテンツをキャッシュする リバースプロキシ リクエストを終端…

markdownで表を作りたいときは markdown tables ganeratorが便利

ブログの記事や仕事でよくmarkdownを使いますが、表をmarkdownで書くのが非常にきついと感じています。 たとえば C D A 0 1 B 1 1 ↑こんな感じの表を書く際に markdownでは以下のように書く必要があり、非常に厄介です。 | | C | D | |---|----|----| | A …

Amazon Dash Button と slackを連携させる

Amazon Dash Buttonとは 既にアメリカで発売されていたamazon dash buttonが日本でもリリースされました。 www.amazon.co.jp 初期設定を済ませた後、ボタンを押すだけで特定の商品を購入できるものです。 ボタン自体は500円で購入でき、注文時に500円が割り…

Amazon Lightsail でインスタンスを作る

Amazon Lightsail Amazon re:Invent で発表され、話題になっているサービスでamazonがvpsサービスを開始しました。 www.youtube.com Amazon Lightsail – AWSの力、VPSの簡単さ | Amazon Web Services ブログ インスタンスを立ち上げるのは非常に楽で、 イン…

Microservices - a definition of this new architectural term

Microservices - a definition of this new architectural term martinfowler.com 今更だけど、martin fowler のmicroservicesに関する記事を読んだ microservicesは既存のモノリシックなサービスと違って、機能ごとに複数のコンポーネントに分けて運用する…