kakts-log

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

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 …