kidoOooOoooOOom

IT系で開発やってます

serverspec v2で複数ホストにrole別にtest実行

serverspec v1からv2でいくつか変更点があり、v1のソースではそのまま実行できない箇所があったので、変更点を見つつ v2 で基本的なテストを実行できるようにした。ディレクトリ構成は下記の通り。最低限のwebのテストを用意する。 ├── Gemfile ├── Gemfile.…

Macのターミナル上でマウス操作を有効にする

tmuxを使っていて、分割したウインドウにマウス操作で移動できないのが不便だったので下記対応をした。 EasySIMBLをインストール https://github.com/norio-nomura/EasySIMBL/ MouseTerm をインストール https://bitheap.org/mouseterm/ 自分の場合は解凍し…

rubyのhighlineでパスワード入力を隠すなど

rubyのコンソールアプリでユーザ名とパスワードを入力させる際に、タイプしたパスワードは隠しておきたい場合は highlineを使えばすぐできるとのこと。 require 'highline/import' username = ask("Enter user: ") { |q| q.echo = true } password = ask("En…

zshの導入と初期設定

今までbashを使っていてそんなに不便に感じることはなかったけど、開発効率化のため zshに入れ替えてみることにした。 参考にしたのは WEB+DB PRESSの zsh大活用の記事。コマンドを書き写すのがちょっと大変だったけれど、分かり易くて良い記事だと思った。W…

serverspec実行できるところまで試してみる

serverspecとは、サーバの状態をテストするためのフレームワークで、Rubyで実装されておりRSpecの書き方に準拠している。 公式サイトはこちら http://serverspec.org/今回、インストールをして簡単なテストが実行できるところまでを試してみたのでメモ。 イ…

node.jsで objectをyamlで出力

node.js で形成した objectを yamlフォーマットで出力したいケースがあったのでメモ。 やりたいこととしては、ansibleのinventoryに記載したhosts情報を元に、tmuxinatorの設定ファイル(yaml)を自動生成すること。 yaml出力には js-yaml モジュールを使えば…

INI LIKEフォーマットをparse

node.jsのプログラムから、ansibleのinventory に記載した hosts情報を使ってごにょごにょしたいような場合、INI フォーマットをparseする ini モジュールを使えば簡単。 iniファイル [webservers] foo.example.com bar.example.com [dbservers] one.example…

複数ホスト、ファイルを同時にtailできるmultitailコマンド

複数ホストにまたがるログファイルを同時にtail できるコマンドがあったのでメモ。 yum install multitailでインストールするだけ。 ホストAのログファイルXとホストBのログファイルをYを連結してtailfする場合は下記のようなコマンド。 multitail -l "ssh u…

nodeでファイルの拡張子を厳格に指定して読み込み

nodeのプロジェクトで、/lib/service/index.js などのファイルから、同ディレクトリ配下のjsファイルを一括してexportsさせるケースがある。例えば下記のようなコード。 var fs = require('fs'); var path = require('path'); var _ = require('lodash'); _.…

macのterminal.appを環境別に色分け設定して共有

tmuxで各環境(dev, stg, prdなど)別のコンソール設定を作成できたので、次は環境別にコンソールの色を変えてみたい。 Macのターミナルappの[環境設定]-[設定]で + を押して新規プロファイルを作成する。 適当にウインドウの色や大きさの設定をし、[シェル]…

tmuxのconf

いくつかのtmux設定記事を参考にして、適当な設定を自分向けに書いたのでメモ。 https://github.com/kidooom/tmux/blob/master/.tmux.confよく使うキーバインドとしては、(prefixはCtrl+aに変更してます) C-a ? : ヘルプ C-a [0-9] : window移動 C-a o : pai…

tmuxとtmuxinatorで開発環境別のコンソール環境整備

dev環境で作業やログ調査をする際に、webサーバをsshで開いてlogをtailして dbサーバをsshで開いてlogをtailしてmanagerサーバを(略)するのが面倒なので、tmuxとtmuxinatorを使ってコマンド一発でこの環境が開くようにする。 tmuxのインストール $ brew in…

Jenkinsジョブをリモートからビルド実行

管理ツールなど外部サーバからJenkinsのジョブを実行したい場合、Jenkinsのジョブ設定にある下記のリモートビルドの設定を行えばOK. 後は、外部サーバから設定したtoken付随のURLを叩くとjobが実行される。

nodejsで文字コードがsjisのcsvを取得して出力

svnサーバにあがっているcsvファイルを、httpsで取得してごにょごにょ処理をする必要があったのでメモ。 最初、httpsモジュール使って書いてたけど、文字化けがどうしても解決できなくて request モジュールに変えて enconding = null のオプションを使った…

mongodbでクエリログを全部みたい

setProfillingLevelを2にする。 $ mongo > use myDb switched to db myDb > db.getProfilingLevel() 0 > db.setProfilingLevel(2) { "was" : 0, "slowms" : 1, "ok" : 1 } > db.getProfilingLevel() 2 > db.system.profile.find().pretty()これでquery log …

[JS] スネークケースのstring/object keys を キャメルケースに変換

最近はガリガリ開発していてそっちでアウトプットしているので、ブログには書く頻度が減ってしまった。 今日書いたコードは糞だけど汎用性あるのでこっちにメモ /** * Convert snake case string or object keys to camel case. */ convertSnakeToCamel: fun…

Nodeのcryptoモジュールで AES algorithmの暗号・復号

例えば秘密鍵が 123456789key で、Hello worldという文字列を暗号・復号すると下記のようになる。 var crypto = require('crypto'); var secretKey = '123456789key'; var text = 'Hello world'; var hash = crypto.createHash('md5'); hash.update(secretKe…

markdownでchecklist

Rebuild.fm を聞いていたら、pull req のコメントに markdown で checklistを書いて進捗具合を可視化するという方法がいいようなので、今後やっていきたい。 markdownでchecklist書く場合は以下のような感じ。 - [ ] チェック項目 - [ ] 未完了タスク - [x] …

gitでやり直し系の操作

Git

こちらを見て勉強。 http://d.hatena.ne.jp/idesaku/20091106/1257507849 前回のコミットをちょっとだけ修正したい場合。 git-commit --amendを使う。ミスコミットをしてしまった後に修正をして、上記コマンドを実行すればおk。 もっと前のコミット操作など…

reponse返却イベントで処理

Nodeでリクエストが来たタイミングと、レスポンスを返すタイミングでログを出したいような場合、下記のようなmiddlewareを登録すればおk。 exports.accessLogger = function(req, res, next) { var logResponse = function() { res.removeListener('finish',…

upstartで起動・終了周りのtips

upstartのscirptを書いていて、プロセスをkill -TERMで終了させた場合は勝手にstartしないようにしたかったので、normal exit を使用した。 start on started sshd stop on shutdown kill timeout 30 normal exit 0 TERM respawn respawn limit 2 5 script .…

shellで条件式書く時のオプション

dとfを間違えていてハマったのでmemo。オプション: 使用例: オプションの意味 -z: test -z string : string の文字列長が 0 ならば真となる。 -n: test -n string : string の文字列長が 0 より大ならば真となる。 -d: test -d file : file がディレクトリな…

LinuxでプロセスのSIGTERMを待ち受ける

まず、プロセスをチェックするコマンドとしては ps や pstree を使っている。 ps auwx | grep hogehoge pstree -lpプロセスID = 9999 のプロセスを 正常に終了させたい場合は、kill -TERM を送る kill -TERM 99999999 が正常に終了するのを待ち受ける。 PID=…

kill のコマンドオプション

よく忘れるのでmemo。 # 一覧表示 kill -lよく使うやつ 1 HUP 終了後再起動 9 KILL プロセスの強制終了 15 TERM 正常な終了動作を行わせて安全に終了 http://www.k-tanaka.net/unix/kill.php はじめてUNIXで仕事をする人が読む本作者: 木本雅彦,松山直道,稲…

git-flow 使い始めた

プロジェクトで git-flow使い始めたので、備忘録としてmemo。 まず、cloneしたプロジェクト毎に git flow init が必要。 sourceTreeが git-flow 対応しているので、ボタン押すだけでもおk。 普通の機能開発の場合は、featureとしてstartし、pushしてOKな状態…

[git]違うブランチにコミットしたものをそのまま持ってくる

Aブランチにコミットした内容をBブランチにそのまま持っていきたい場合、cherry-pickコマンドでいける。 git cherry-pick コミット番号こちら、参考にさせて頂きました。 http://www.backlog.jp/git-guide/stepup/stepup7_4.html

underscore.js の flatten

下記のような複数の配列の中から、特定の値が1個でも含まれているかどうかを確認する処理のため、underscore.jsのflattenを使って一旦1次元の配列にまとめてからチェックするようなのを書いた。 var arrayTest = {}; arrayTest[1] = {}; arrayTest[1][100]…

Nodejs + mocha + node-inspectorでテストコードをデバッグ

mochaでテストを実行した時にデバッガはさみこみたいので調べてみた。 まずは、node-inspectorをインストール npm install node-inspectornode-inspectorもしくはインストールしたmodule内のinspector.jsを実行してNode Inspectorを起動。 起動すると、デフ…

JSでデフォルト値設定

例えばnullやundefiendかもしれない aaa.hoge に対してデフォルト値=1を用意したい場合、3項演算子を使って書いちゃったりするけれど aaa.hoge ? aaa.hoge : 1;OR演算子で書いた方がスッキリするよと指摘もらったのでそっちを使う。 aaa.hoge || 1;

Sublime Text で覚えたショートカットキー

こちらの記事を見て、自分も使いそうなショートカットキーをmemo http://webimemo.com/web/7366 cmd + ctrl + G: 選択した文字列と同じものをすべて選択 ctrl + shift + K: 今いる行を削除 ctrl + cmd + ⬆: 今いる行を上に移動 ctrl + cmd + ⬇: 今いる行を下…