なっく日報

技術やら生活やらのメモ

2015-01-01から1年間の記事一覧

各種通信プロトコルの区切り文字が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…

Macでバックグラウンドに隠れたプロセスを全てkillする

はじめに 自分は、Vimで開発しながらたまにsuspendでシェルに戻るというスタイルで開発しているのですが、 気づいたらバックグラウンドにプロセスが溜まりまくっていることがあります(実際は10個とか( ゚д゚ )クワッ!!) ❯ jobs [1] suspended env LANG=ja_JP.UT…

Reduxの設計で気をつけるところ

※ Presentational and Container Components - なっく日報 に補足を書きました。 概要 http://rackt.github.io/redux/docs/basics/UsageWithReact.html medium.com らへんに書いてある「Smart Components」「Dumb Components」を理解したよというお話です。 …

Node v4.1.0リリースでComputed PropertiesのバグがFixされた

Node v4.1.0 (Current) | Node.js にあるように、本日v4.1.0がリリースされました。 このリリースで、V8のバージョンが少し上がり、無事Computed Propertiesが正しく動作しないバグがFixされています。 github.com 先日書いたエントリーも直しておきます。

'use strict;'の状態でyieldはトップレベルで使えない

きっかけ github.com がバージョン上がって、これまでのPhantomJSベース→Electronベースになったとのことで試してみました。 一番最初に載っているサンプルコードを試してみた 'use strict'; var Nightmare = require('nightmare'); yield Nightmare() .goto…

ESLintのShareable Configsを利用して複数プロジェクトで設定を共有する

(会社|複数プロジェクト)でESLintの設定を共有したい! ということがあると思いますが、ESLintにはShareable Configsという便利な機能があります。 eslint.org これを使えば、簡単にそういったことができます。 利用法 モジュール名をつける eslint-config-*…

humpsでキャメルケースと(スネークケース|ハイフン区切り|スラッシュ区切り)を楽に変換する

きっかけ UserList → /user/list みたいにしたい。 そんなとき 最初、正規表現でやろうとしていましたが、 github.com なるものを見つけました。 利用法 Node.jsのREPLにて。 > humps.decamelize('UserList') 'user_list' // デフォルト"_" > `/${humps.deca…