なっく日報

技術やら生活やらのメモ

Moshを使っていてなぜかログを遡れない

現象 ローカルで起動したtmuxから、moshを使って、リモートのサーバにログインし、コマンドの出力結果をコピーモードにして遡ろうとしたら遡れない! 原因 mosh.mit.edu FAQに書いてました。 Q: Why is my terminal's scrollback buffer incomplete? Mosh 1.…

Nginx1.9のTCP Load BalancingをMacで試してみた

やってみたかったので試してみました! HomebrewでNginx1.9をインストール デフォルトでのnginxではなく、nginx-fullの方をインストールしました(brew tap homebrew/nginxが必要) brew install nginx-full --devel --with-stream nginx.confの設定 /usr/lo…

ESLintでno-undefのルールに引っかかった変数だけを抜き出す

またまたまたまたESLintの話題です。 歴史的経緯により存在しているglobal変数をno-undefのルールから除外するということをやったのでご紹介。 no-undefルールとは? 未定義の変数を利用している場合に出るエラーです。 1:6 error "Hoge" is not defined no-…

細かすぎて伝わらないESLintのTIPS

ここ2日ほど、ESLintを使っていて気づいた細かい設定など。 デフォルトの結果だとVimで該当行までジャンプできないのをどうにかしたい 問題 デフォルトの出力が /private/tmp/hoge/a.js 2:13 error "require" is not defined no-undef というフォーマットな…

JSのswitch文のcaseにブロックスコープを付ける

ESLint v1.9で追加されたno-case-declarationsルールで、へ~と思ったことがあったのでメモ。 no-case-declarationsルールとは? no-case-declarations - Rules - ESLint - Pluggable JavaScript linter にドキュメントがありますが、 ↓のコードだと、switch…

ESLintの--cacheオプションは積極的に活用するべき

ESLintでv1.4から導入された--cacheオプションを試してみたのですが、 これは使うべき!と思ったのでご紹介。 何か? 前回のeslintにかけた結果を.eslintcacheファイル(デフォルト)に保存します。 二回目以降は、更新されたファイル以外をチェックしなくな…

各種通信プロトコルの区切り文字がCRLFな理由

技術的負債との闘いの中で、ふと過去日報で書いた内容を思い出したので書きます。 HTTPとか各種通信プロトコルの区切り文字はCRLFですが、理由があると。 CRLF ‐ 通信用語の基礎知識 に書いてますが、大昔のテレタイプという装置で1行進めるのに2命令必要だ…

超雑に理解するLDAP

諸事情により、LDAPを少し触ったので、主に自分向けメモ。 LDAPとは? こちらの解説が自分的には一番わかりやすかったです。 www.valinux.co.jp 階層構造を持ったデータベースという感じ。 Javaのjp/co/example/Hoge.javaみたいなディレクトリ構造とか、DNS…

Node.js v5がもうリリースされたけど、どうやってバージョンを乗り継いでいくべき?

https://github.com/nodejs/LTSのリリーススケジュールの図より。 を見ながら考えるのがよいのではと。 ※ yosuke_furukawaさんの記事がより詳細で良かったです Node.js v5.0 がリリースされました。 - from scratch LTS版=偶数番とは限らないとのこと。 毎年…

MongoDB 2.6系以降ではmongo shellの大量データ処理にはBulk()を使う

今日久しぶりにもんごもんごして、知ったことをメモ。 概要 docs.mongodb.org に書かれている内容そのままです。 MongoDB2.6以降では、mongo shellで↓のように書いていたコードを for (var i = 1; i <= 1000000; i++) { db.test.insert( { x : i } ); } ↓の…

ありふれた食事を豊かにする技術🍛

ネタに困っているので、先月書き溜めた貯金を崩すことにします 我が家の食事でどういう工夫をしているかという話です。 食べ物編 卵かけごはんの卵には本だしを加える 納豆は最初に30回かき混ぜ、その後、タレを加えて30回かき混ぜ、さらにカラシを加え30回 …

Perl6を触ってみた

tokuhirom blog こちらの記事を拝見し、コイツはヤバイと思ったので、触ってみました。 Perl6、最近、関連記事をよく見かけるなぁと思っていたら、いつのまにやらクリスマスに出るとかいう話になっていたんですね・・・ もろもろインストール 一番手っ取り早…

Node.js v5系で入るSpread operatorの予習

github.com を見ると、Node.js v5.0.0でSpread operatorが使えるようになるっぽいので、予習しておきます。 Spread operatorって? developer.mozilla.org にあるように、配列や関数の引数として、複数要素が必要なときに配列を展開して渡せるようにする表現…

sshfsは使えるかもしれない

諸事情により、ちょっと前に同僚から教えてもらったsshfsを試してみました。 sshfsとは? リモートのディレクトリをローカルにマウントして扱えるようにするブツ。 sshが通れば使えます。 インストール方法 on Mac ※brew-caskが必要 brew cask install sshfs…

node-inspectorの代わりにiron-nodeを試してみた

本日もロングミーティングで消耗したので短めで。 普段はデバッグに定番の github.com を使っているんですが、最近めっちゃもっさりしているので、↓を試してみました。 github.com インストール npm i -g iron-node が、インストール後、iron-node server.js…

emoji-cli / emojify楽しい🌞

本日も90%ミーティングだったので、技術ネタが薄いです(ここ数日多い・・・) はてブで見かけた、emoji-cli / emojifyを入れてみました。 読んだ記事 qiita.com 入れたツール emojify github.com :smily:みたいなのをにするCLI。 emoji-cli github.com :smi…

JSでオブジェクトとか配列が勝手に変更されてしまうのを検出したい!

今日はミーティングメインだったので、ネタがないです。 無理やり絞り出しました。 問題 constとして定義したオブジェクトに勝手にプロパティが追加されている!検出したい。 対策 ↓のyosuke_furukawaさんのツイートままですが、Object.freeze()を開発時のみ…

Chromeでのデバッグにはconsole.traceを使う

postd.cc を昔読んで、ブクマしてましたが、忘れてましたw Ajaxとかの非同期な呼び出しもいい感じにログが出ます。 const obj = {}; Object.observe(obj, (changes) => { changes.forEach((change) => console.log(change)); console.trace('changed!!!!!!!'…

tpmを導入して、tmuxのconfを整理整頓しよう

github.com 結構前からtpmを使っているのですが、自分の周囲ではそんなに流行ってないようなのでご紹介。 tpm is 何? Tmux Plugin Manager。tmux用のプラグインマネージャです。 zshでいうところのantigen。vimでいうところのNeoBundle的な。 導入方法 ほぼ…

OCPから理解するデザインパターン

↓の記事を今更ながら読みました(1999年の記事なんですね・・・) - Open-Closed Principle とデザインパターン あまりにも良かったのでちょっとだけご紹介。 OCP(Open-Closed Principle)とは? ソースコードを修正せずに、機能追加可能な設計にするべしと…

秒速で日報を書く条件

タイトルは流してくださいw ネタに困ってきたので、会社で日報メールを書く際に、工夫していることを書き連ねてみます。 日報に限らず、ビジネス用メール術としても使えるんじゃないかと。 (なお、このブログは日報メールからリンクを貼っています) 前提 …

Node.js開発中にもろもろアップデートする技

アップデートが多い・・・ 最近、Node.js v4系とReact.jsなんかを触っているんですが、 どちらもバージョンアップのスピードがパないです。 なので、アップデートに、こんなツールをこんな風に使ってますよというお話。 Node.jsのバージョンアップに追従 自…

ES5でもローカル変数のundefinedは上書き可能

きっかけ 昨日、東京Node学園に行ってきたのですが、その中のトークの一つで、 undefinedは上書きできてしまうから、if (a === undefined)は用心しよう的な話がありました。 「あれ?ES5で、undefinedは上書きできないって、何かで読んだような・・・」と思…

SSHポートフォワーディングでローカルのmysql-clientからリモートのmysql-serverに接続するとか

何の話? 本日の昼休みの話。 会社の同僚:「ローカルのmysqlコマンドで、GCE上のMySQLサーバに繋ぎたいが、ポート空いてないしなー」 自分:「昔、SSHポートフォワーディングでそういうことやったことあるよ」 ということで、SSHポートフォワーディングを久…

Expressでnext('route')をコールしてmiddlewareをスキップしたときに404になる

謎の現象 Expressで↓のような書き方をした際に、 app.post('/hoge', function(req, res, next) { console.log('middleware1'); next('route'); }, fuction(req, res, next) { console.log('middleware2'); next(); }, function(req, res) { res.send({}); });…

ES5をES6に効率的に書き換える

何の話題? ES5で書かれたJavaScriptのソースコードをES6に変換する方法の話です(babelの逆) xto6を使う(完) github.com ・・・とはならず、改行が変わっちゃったり、やっぱ使えんということも多いかと思います。 そこで正規表現 Vimmerな方 \vのvery ma…

Expressの雛形をES6バリバリで動かしてみる

何? express-generatorで生成された雛形が、ES6の練習の土台によさ気に思えたので、ES6で動くようにする手順を考えました。 こんな感じ npm i -g babel express-generator express es5 cd es5 npm install とやって vi bin/www ↓一行目を編集 #!/usr/bin/en…

Reduxの少し込み入った話題

ぼちぼちとあるシステムにReduxを導入していっているんですが、Reduxとその周辺で、いくつか調べたことをメモっておきます。 combineReducersとは何か? reducerを分割するための便利関数。 qiita.com が、わかりやすかったです。 import { combineReducers …

ISUCON5に参戦して、想定以上に惨敗してきました!

9/26(土)にISUCONに初参戦してきました。 結果は、予選敗退。 内容的にも、思っていた以上にいろいろ上手くいきませんでした。 が、この悔しさを今後の人生に活かせるよう記録しておきたいと思います。 チーム構成 同じ会社のF氏と、8月まで同じ部署の同僚だ…

各種LLで正規表現でマッチした結果を一発で変数に代入したい

ES6のDestructuring assignmentの使い方で良い例があったのでメモ。 正規表現でキャプチャした結果を変数に突っ込むという使い方です。 JavaScript(Babelが必要・・・) const string = '20150925'; const [, y, m, d] = /(\d{4})(\d{2})(\d{2})/.exec(stri…