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 : pain移動
C-a x: pain終了
C-a - : 水平分割
C-a | : 垂直分割
C-a d: デタッチ
tmux a: 最後にデタッチしたセッションにアタッチ
tmuxとtmuxinatorで開発環境別のコンソール環境整備
dev環境で作業やログ調査をする際に、webサーバをsshで開いてlogをtailして dbサーバをsshで開いてlogをtailしてmanagerサーバを(略)するのが面倒なので、tmuxとtmuxinatorを使ってコマンド一発でこの環境が開くようにする。
- tmuxのインストール
$ brew install tmux
- tmuxinatorのインストール
$ gem install tmuxinator $ echo ' [[ -s $HOME/.tmuxinator/scripts/tmuxinator ]] && source $HOME/.tmuxinator/scripts/tmuxinator ' >> ${HOME}/.bashrc $ source ${HOME}/.bashrc $ echo 'export EDITOR=/usr/bin/vim' >> ${HOME}/.bashrc $ echo 'export SHELL=/bin/bash' >> ${HOME}/.bashrc $ source ${HOME}/.bashrc // 動作確認 $ mux doctor
tmuxinatorのプロジェクトを作成する
mux new hogehoge
実行すると $EDITOR に設定したエディタで ~/.tmuxinator ディレクトリ以下に作成された yml ファイルが開くので、下記のような設定をした。
# ~/.tmuxinator/hoge.yml name: hoge root: ~/ windows: - web: layout: main-vertical panes: - ssh $SSH_USERNAME@hogeweb - ssh $SSH_USERNAME@hogeweb -t tailf /var/log/error.log - ssh $SSH_USERNAME@hogeweb -t tailf /var/log/api.log - db: layout: main-vertical panes: - ssh $SSH_USERNAME@hogedb - ssh $SSH_USERNAME@hogedb -t mongo - redis: layout: main-vertical panes: - ssh $SSH_USERNAME@hogeredis
layoutなどは適当なので、今後調節していく。
このconfファイルを社内のリポジトリに登録しておけば、チーム内でコンソール環境を共有できて良さげ。
- 作者: 戸田 薫
- 発売日: 2012/12/30
- メディア: Kindle版
- クリック: 2回
- この商品を含むブログを見る
Jenkinsジョブをリモートからビルド実行
管理ツールなど外部サーバからJenkinsのジョブを実行したい場合、Jenkinsのジョブ設定にある下記のリモートビルドの設定を行えばOK.
後は、外部サーバから設定したtoken付随のURLを叩くとjobが実行される。
nodejsで文字コードがsjisのcsvを取得して出力
svnサーバにあがっているcsvファイルを、httpsで取得してごにょごにょ処理をする必要があったのでメモ。
最初、httpsモジュール使って書いてたけど、文字化けがどうしても解決できなくて request モジュールに変えて enconding = null のオプションを使ったら解決した(http clientライブラリの中でレスポンスをそのまま返してもらえるように)。
sjisの文字をutf-8に変換するのは、iconvモジュール、csvのパースは csv-parseというモジュールを使った。
また、普通にhttpsプロトコルでrequestを送信すると、UNABLE_TO_VERIFY_LEAF_SIGNATUREエラーが帰ってくるので、一旦無視するようにしている。
下記がサンプルコード。
var Iconv = require('iconv').Iconv; var sjis = new Iconv('SJIS', 'UTF-8//TRANSLIT//IGNORE'); var csvParse = require('csv-parse'); var url = require('url'); var request = require('request'); // for avoid UNABLE_TO_VERIFY_LEAF_SIGNATURE error process.env['NODE_TLS_REJECT_UNAUTHORIZED'] = '0'; var url = url.parse('https://svnhogehoge'); request({ url: url, encoding: null }, function (error, response, body) { if (!error && response.statusCode == 200) { body = sjis.convert(body).toString(); csvParse(body, function(err, csvOutput) { console.log(csvOutput); }); } });
プログラマのための文字コード技術入門 (WEB+DB PRESS plus) (WEB+DB PRESS plusシリーズ)
- 作者: 矢野啓介
- 出版社/メーカー: 技術評論社
- 発売日: 2010/02/18
- メディア: 単行本(ソフトカバー)
- 購入: 34人 クリック: 578回
- この商品を含むブログ (132件) を見る
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 見れる。
また、setProfillingLevelの第2引数で slow query の閾値を決める。
参考:
http://stackoverflow.com/questions/15204341/mongodb-logging-all-queries
http://docs.mongodb.org/manual/reference/method/db.setProfilingLevel/
- 作者: Kyle Banker,Sky株式会社玉川竜司
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/12/14
- メディア: 大型本
- 購入: 5人 クリック: 55回
- この商品を含むブログ (7件) を見る
追記
user_idや時間等でクエリを特定したい場合は下記のようなクエリで特定させればok
b.system.profile.find({"query.user_id":40447, "ts": {"$gt": ISODate("2015-05-27T12:18:35.435Z")}});
[JS] スネークケースのstring/object keys を キャメルケースに変換
最近はガリガリ開発していてそっちでアウトプットしているので、ブログには書く頻度が減ってしまった。
今日書いたコードは糞だけど汎用性あるのでこっちにメモ
/** * Convert snake case string or object keys to camel case. */ convertSnakeToCamel: function(snake) { if (!snake) { return snake; } var camel; var that = this; if (typeof snake === 'string') { camel = snake.replace(/_./g, function(matched) { return matched.charAt(1).toUpperCase(); }); return camel; } _.each(snake, function(value) { if(_.isObject(value) === true) { return that.convertSnakeToCamel(value); } }); for (var prop in snake) { if ((prop.indexOf('_') !== -1) && snake.hasOwnProperty(prop)) { var tmp = snake[prop]; delete snake[prop]; camel = this.convertSnakeToCamel(prop); snake[camel] = tmp; } } return snake;
コーディングを支える技術 ~成り立ちから学ぶプログラミング作法 (WEB+DB PRESS plus)
- 作者: 西尾泰和
- 出版社/メーカー: 技術評論社
- 発売日: 2013/04/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (33件) を見る