なっく日報

技術やら生活やらのメモ

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

今年もお世話になりました

技術的な話題は今年はおしまい。それではよいお年を🌞

一足先に🎄npm xmas 🎅

❯ npm xmas ★ /\ / ⁂\ / i ⸛\ / ⸛ &&\ / ⸛ ⸛⸛ \ /& ⸛ ⁂ \ / i ⁂ i \ / i @ @ \ / 。 & ⸛ ⸛ \ / ⁂ 。⸛ ⸛ & ⸛⸛ \ / ⸛ 。 ⸛ 。@ \ /⸛⸛ @& 。 @ ⸛。 \ / & ⸛i @ @ \ / ⸛ & i⁂ i@ \ /⁂ @@ @⸛ 。 ⸛ 。 。\ / @ ⸛⸛ i ⁂ && \ /⁂ ⸛ ⁂…

MongoDB v2.6以降は{$set: {}}でupdateするとエラーになる其の二

誰得?な内容ですが、先日の記事の続きがあるので書いておきます。 ↓先日の記事はコレ yukidarake.hateblo.jp ↓JIRAのissueはコレ [SERVER-12266] Update no longer allows empty modifier objects - MongoDB Jira 結構根が深い 既存の処理との互換性を壊さ…

MongoDB v2.6以降は{$set: {}}でupdateするとエラーになる

[SERVER-12266] Update no longer allows empty modifier objects - MongoDB Jira によれば、v2.5から、$setや$unsetにからオブジェクトを渡すとエラーになるよう、挙動を変更したそう。 > db.foo.update({_id:1}, {$set: {}}, true); db.getLastErrorObj();…

MongoDB Driverとcoの相性がとてもよろしい件🌞

Node.js v4 + coで非同期処理のパフォーマンスを測定したところ、学びがあったのでメモ。 きっかけ 某勉強会で非同期処理について調べてみたところ、coを使った書き方がかなりイケてるなと思いました。 が、パフォーマンス的に心配。 そこで定番のAsync.jsと…

package.jsonの(dev)dependencies肥満化に向き合ってみる

これは「Node.js Advent Calendar 2015」の17日目のエントリです。 qiita.com 長いので一行まとめ npmのLocal Paths + linklocalを使ってモジュール管理すると(dev)dependenciesがスッキリ さて、以下本題です。 (dev)dependenciesの肥満化問題 突然ですが、…

browserify + babelify構成でbabel5→6にした際の変更点

2ヶ月ぶりくらいでReact.jsを触ってみたら浦島太郎状態だったのでメモ(つらい・・・) Babel5→Babel6に ググッて見た感じ、全てがplugin化されているので、適宜組み込む必要があるよう。 ↓のようなpackage.json { "browserify": { "extension": [ "jsx", "e…

シェルスクリプトのif文で見かける[と[[と((の違い

シェルスクリプト(というか↓はzshだけの文法も含まれますが)のif文でいろんな書き方が出てきてワケワカメ状態を脱したのでメモ。 これらの違いは何? a='hoge' if [ "$a" = 'hoge' ]; then echo 'if [' fi if [[ "$a" == 'hoge' ]]; then echo 'if [[' fi …

最近Homebrewで打っているコマンド

あまりネタがないのでHomebrewのコマンドネタを。 brew upgrade --outdated brew update brew outdated # 確認 brew upgrade --outdated で全て最新版にアップグレードできます。 brew switch mongodb 3.0.7 ↑のコマンドで調子にのって、全パッケージアップ…

HipChatの面白求人広告

結構前から気づいていたんですが、 Hipchatをブラウザ版で開いて、ChromeのDevelopper Toolsでコンソールを見ると↓みたいな求人広告が出てきます。 以前、今携わっているサービスでも不正ユーザとかに求人広告出したらwというアイデアが出たりしましたが、 …

BSONのデータはbsondumpでJSONに変換できる

あまり時間がないので、さっくりと。 mongodumpで出力したデータはそのままだとバイナリデータで読めませんが、 MongoDBの標準コマンドラインツールであるところのbsondumpを使えばJSON(の改行区切り)として出力できます。 実行例 bsondump test.bson ↓ {"…

【Jenkinsで使える】set -uした状態での未定義変数のチェック

Jenkinsでパラメータを渡すタイプのJOBでなんだけど、cron機能でも実行するというケースがありまして、 cronから実行したら set -u if [ -n "$PARAM" ]; then echo "$PARAM" fi ↓なエラーが。 line 3: PARAM: 展開されていない変数 そんなときは set -u if […

MongoDBのDocumentサイズに関するメモ

本日調査する過程でいろいろと復習になったので、メモっておきます。 Document Sizeのリミットは16MB BSONの最大サイズは16MB。 余談だが、↓によると1.7.3以前は4MBだったそう(1系使ってた人なんて、そんないないとは思いますが・・・) 古い情報なんで、ひ…

ShellCheckはシェルスクリプトの勉強になるからとりあえず入れておけ

本日はシェルスクリプトデーでした。 ShellCheckというツールを入れたところ、いろいろと怒ってくれてありがたかったのでご紹介。 ShellCheckとは? github.com シェルスクリプト用の静的解析ツールです。JavaScriptな人でいうところのJSHint, ESLint的な。 …

catコマンドとヒアドキュメントとncコマンドと

生HTTPリクエストをヒアドキュメントを駆使して送りたいという話。 bashでやる場合 大抵の場合はこれでよいでしょう。 cat <<. | nc www.amazon.co.jp 80 GET / HTTP/1.1 User-Agent: curl/7.30.0 Host: www.amazon.co.jp Accept: */* . zshでやりたい場合 …

Slackのリマインダ機能まとめ

※2016/04/19追記:以前はプライベートチャンネルでリマンダ機能は設定できなかったのですが、できるようになった模様。 qiita.com こちらの記事で知ったんですが、Slackのリマインダ機能すごくいいですね。 啓蒙のために書きます(社内某Wikiに書いている内…

tmuxの中にいるときも、そうでないときもcssh的なことがしたい

※ 最近は↓がおすすめ github.com xpanes 'ssh {}' host{1..5} な感じで動く 困ったこと yuuki.hatenablog.com こちらの記事にあるような、複数ホストに同時にSSHして、synchronize-panes onで同時操作をしたい。 が、tmuxの中で作業しているときにこのスクリ…

本日使った技

まとまりがない。 Vim 某ログをMacVimに貼り付けて、見やすくするためにこんなコマンドを打ったの巻 長過ぎる行を切り詰める 140文字に :%s/\v^(.{140}).*/\1/ 不要な行を削除する グローバルコマンドにて ↓の例だとhogehogeが含まれる行を消す :g/hogehoge/…

zshで無名関数

qiita.com に書いてあることの受け売りなのですが、 (function() { var a = 1; console.log(a); })(); な感じで、zshでもスコープを狭めることができます。 () { local a=1 echo $a } 引数を渡すこともできる! ↓は (function(a, b) { console.log(a, b); })…

Vim小技

マニアックな小技。 カレントファイルのパスの一部を置換してファイルを開く vi foo.jsで開いている最中に、:vs %:s/foo/bar/ でbar.jsを縦分割で開ける。 これだけだとあまり有り難みないけど、 :vs %:p:s#foo#bar# とかだと/src/github.com/foo/aaa.jsから…

缶のことを「かんかん」と呼んでしまう私

関西人です🌞 www.weblio.jp ※本日はミーティングエンジニアのため内容ナッシング

estraverseを若干使いやすくする小技

生estraverseの問題 estraverseは素直に書くと ↓みたいになるのでif文が増えて結構見づらくなってきます。 estraverse.traverse(ast, { enter: function (node, parent) { if (node.type == 'FunctionExpression' || node.type == 'FunctionDeclaration') re…

npm小ネタ3選

今日はなんか元気がないので、npm小ネタだけ。 npm i --link npm i --link のように--linkをつけるとグローバルにインストールしてnode_modulesにシンボリックリンクを貼ってくれるようになります。 eslintとかjshintとかdevDependenciesにあるような、どの…

esprima→escodegenで元のソースに復元されるか試してみた

escodegenを触ったことがなかったので試してみました。 変換コード 元のファイル(original.js) 'use strict'; var fs = require('fs'); var esprima = require('esprima'); var escodegen = require('escodegen'); var original = fs.readFileSync('./orig…

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ファイル(デフォルト)に保存します。 二回目以降は、更新されたファイル以外をチェックしなくな…