なっく日報

技術やら生活やらのメモ

monorepo構成のリポジトリでGitのフックスクリプトを仕掛ける方法

今担当しているプロジェクトで、monorepo構成を試しているのですが、 Gitのフックスクリプトを仕掛けるいい方法は何かないか?と思い、調べてみました。 ちなみに、monorepoって何?という方は↓を見てください。 yukidarake.hateblo.jp monorepoのプロジェク…

主人が英語の勉強を始めて60日が過ぎました

yukidarake.hateblo.jp の続き、経過報告です。 引き続きこのタイトルで押し通すことにしますw 方針の転換 roundsquaretriangle.web.fc2.com というサイトを発見したのですが、 英語は言語であり、音声こそがその実体であるという当然の認識にまず立ってくだ…

eslint_d.jsでESLintを爆速にする

github.com いうものがあるのを知りました。 eslint_dというプロセスを常駐させて、ESLintを爆速にするものらしい。 公式ドキュメント曰く、 Yes, it's actually super fast. But the node.js startup time and loading all the required modules slows down…

IdeaVim + JISキーボードで<C-[>を押した際の挙動が変

Vim教からIDEA教への改宗を試みているのですが、その際嵌ったことのメモ。 なお、当方JISキーボードです(これは宗派というよりは成り行きです) 現象 <ESC>キーではなく、<C-[>でエスケープする派なのですが、エスケープできない 解決法 qiita.com が大変参考になりま</c-[></esc>…

ESLintでextendsする設定を動的に変更する

※ 追記:よくよくドキュメントを見てみたら、-c airbnbみたいにオプションでESLintの共有設定の指定もできるそう。なので、この記事は本当に参考程度に。 どこまで使えるかは知りませんが、一応こんなこともできるよというメモ。 github.com ↑みたいな感じで…

2つのESLintの共有設定を見比べる

※追記1:jsondiffpatchを使った方法の方がちゃんと差分を見るにはいいかも ※追記2:--no-eslintrcを足した方が安全(カレントディレクトリにある.eslintrcを読み込まないので) 最初の案 eslint-config-aとeslint-config-bがあるとして .eslintrc-a.yml root…

gitの不要なローカルブランチを一括削除

gutch.hatenablog.com の記事を参考に git branch --merged | grep -v '*' | xargs -I % git branch -d % にて。 現在いるブランチ以外のマージ済みブランチが消えます。 ちなみに、xargsの-I %というオプションを初めて知りました。 これはリプレイサーとし…

yield*って何?

ESLintの↓のルールで初めて知ったのですが、 eslint.org yield*について調べてみました。 何? developer.mozilla.org によれば The yield expression iterates over the operand and yields each value returned by it. The value of yield expression itse…

Node.jsでThreadLocal変数的なやつ2

Node.jsでThreadLocal変数的なモノがないか?ということを再度調べたメモ書きです。 以前、調べた結果は↓。 yukidarake.hateblo.jp 調査メモ 以前調べたnode-continuation-local-storageは健在 github.com Googleの人が作っているzone.jsというモノがある an…

package.jsonのpeerDependenciesについて調べた

諸事情で、peerDependenciesの挙動について調べる機会があったのでそのメモを。 どういう場合に使うのか? docs.npmjs.com なんやかんやで、結局公式ドキュメントが一番参考になりました。 In some cases, you want to express the compatibility of your pa…

ローカルにインストールしたNodeモジュールのコマンドにPATHを通す

ロ〜ング休暇のため、更新滞ってましたが、本日から再開します。 グローバルやめたい eslint.org お休み中にESLint v2.0.0がリリースされたので、プロジェクトのESLintの設定を修正していたときのこと。 自分はVimをエディタとして使っているので、定番のsyn…

enzymeはReactコンポーネントのユニットテストに使えるかもしれない

時間がないので、ご紹介だけ。 github.com というのを同僚のプロジェクトのpackage.jsonで見かけました。 ↓な感じにReactコンポーネントテストが書けると。 import { shallow } from 'enzyme'; import sinon from 'sinon'; describe('<MyComponent />', () => { it('renders</mycomponent>…

zshの起動を高速化する方法

ネタがないので、昔こんなことをやってzshの起動を高速化したよというのを共有したいと思います。 計測 〜が遅いという場合、プロファイリングするのが定石ですね。 uu59のメモ | zshまわりを整理した という素晴らしい記事を参考に、 ボトルネックを割り出…

女心と秋の空とR e d u x

移ろいやすい?ということでこのタイトルにしてみましたw 本日気づいたReduxとその周辺プロダクトの情報なんですが、この記事の内容も数カ月後には陳腐化していることでしょう SEO的に引っかからないように半角スペースを入れるという配慮もしてみましたw red…

bulkifyを使ってモジュールが増えた場合の設定を自動化する

本日の記事はメモレベルなので、参考程度に。 昔Qiitaで書いたのですが、(もう内容は古い) qiita.com browserifyを使っていて、ファイルが増える度手動でimportして、設定を追加するのは面倒なので、自動化したい場合にbulkifyが使えます。 github.com 例…

@authorをソースコードの冒頭に書くのはやめた方がいいかも

※ タイトルと本文の「行頭」を「冒頭」に修正 特にJavaのプロジェクトとかだとそうだと思うんですが、 ソースコードの行頭冒頭に↓みたいに書くことが多いかと思います。 /** * 何かのクラス * * @author Yuki Darake <nac@example.com> */ だがしかし、この@authorの部分は不</nac@example.com>…

mongo shellは一行あたり4096バイトまでしか読み取れない

こちらにissueがあがってますが、MongoDB v1.9(2011年初頭)くらいから存在している由緒正しい問題のようです。 [SERVER-13980] Interactive shell truncates line input longer than 4096 bytes - MongoDB 再現コード aaaaaaaaの長さは4087文字以上。 hoge…

longjohnで非同期処理時に発生したエラーを追う

本日、同僚からよくわからんエラーがあるので、ちょっと見て欲しいと言われ、その際に使ったテクニックの共有を。 なお、エラーが発生していたのはNode.jsで書かれたコードです。 使ったモノ コレ github.com 同様のライブラリとして、 https://github.com/t…

【徒然】各言語でqw演算子的に書く

Jenkinsを触って、maven(!)を触って、シェルスクリプト触って、Jenkinsを触って、シェルスクリプト触って・・・ という微妙な一日でございました。 アレルギーはなくなったものの、シェルスクリプトは相変わらず不慣れです。 が、for文はググらなくても使え…

JSONの差分を見たいならjsondiffpatchが便利

昨日はいろいろと忙しくブログを書けませんでした 本日はJSONの差分をいろいろと見たので、その際に使ったテクの共有をば。 jsondiffpatch コレ。 github.com 便利です。 CLIとして使うなら インストールして npm i -g jsondiffpatch このJSONに対して // a.…

VagrantのSynced Foldersを高速化したいなら

本日は左手首が痛く、気力がないので、個人メモレベル。 riatw.me だそう。 brew cask update brew cask install virtualbox vagrant しておきました。 あとNFSにするのも速くなるそうですが、こちらは後日試す。 Vagrantの動作が遅かったので共有フォルダ設…

grep的なツール2016

超雑なエントリですが、書キノコしておきます。 grepするのに 普段はgrep的なコマンドとして、agを使っています。 ggreer/the_silver_searcher: A code-searching tool similar to ack, but faster. 最近、v2にバージョンアップして、高速になったptも試した…

fluentdのtail input pluginのposファイルは1つでいい

雪でしたがバッチリ出勤しました 本日もfluentdを触ってましたが、ちょっとしたメモ。 docs.fluentd.org ↑のtail input pluginではpath /path/to/%Y/%m/%d/*みたいなフォーマットが使えます。 したがって、1つのsourceの設定で複数ファイルをtailできます。 …

fluentdでINSERT先のMongoDBのコレクションを動的に変更する

昨日の続きです。時間がないので、雑なメモ書きとなっております。 実現したかったこと timeというフィールドにUnix time(ミリ秒)が入っているJSONをMongoDBに突っ込む 1時間毎に突っ込む先のコレクションを変える { "_id": "hogehoge", "time": 14528591274…

fluentd経由でlogをMongoDBに突っ込む

諸事情により、fluentd経由でlogをMongoDBに突っ込むのを試してみたので、そのメモ(人生初。最近多い) 1時間程度しか触ってないし、個人的なメモなので、ツッコミどころあればコメントしてください(おてやわらかに) なお、インストールしたのはFluentd v…

coをasync.parallel的に動かす

ちょっと時間がないのでさっくりと。 DBは毎度おなじみのMongoです。 コード 'use strict'; const co = require('co'); const MongoClient = require('mongodb').MongoClient; const MONGO_URL = 'mongodb://localhost:27017/test'; co(function* () { const…

process.nextTickとsetImmediateの違い

自分的な結論 パフォーマンス上の問題が起きない限りは、setImmediateを使っておくのが無難 process.nextTickとsetImmediateの違い jxck.hatenablog.com が素晴らしくまとまっているので、詳しくはコチラの記事を読んでいただきたいのですが、 ポイントを。 …

主人が英語の勉強を始めて5日が過ぎました

今年始めた英語の勉強が三日坊主にならずに続いているという話を。 下記注意点。 始めたばかりなので、何の成果も得られていません 急にやる気になった理由については書きません(強いて言うと新年だからというくらいなので・・・) このまま続くかは不明で…

fpmでrpmを作った際のメモ

諸事情によりrpmを作る必要があったので、そのメモ(人生初) まず環境 VagrantでCentOS6.5の環境を作りました。手順は省略。 (ちなみに、いろんな記事をちょい見した感じ、最近はDockerでやったりするのがイケてそうですね。次回はやりたい) rpm化したい…

単一リポジトリで複数package|projectを管理することをmonorepoというそう

きっかけ qiita.com で知りました。 BabelやReactのGithubのリポジトリは単一のリポジトリ内に複数のpackageを入れているとのこと https://github.com/babel/babel/tree/master/packages とか https://github.com/facebook/react/tree/master/packages みた…

Jenkinsでparameterized buildを定期実行したときの注意点

やりたかったこと 手動実行時はSVNで指定したタグを落としてきてから実行 定期実行時は前回落としてきたタグのプログラムを利用して実行 起こったこと 定期実行時に、パラメータ指定はデフォルト値を空を期待していたのに、なぜか最新のタグが指定されて実行…

Google Apps ScriptでGmailの下書きを作成する

きっかけ qiita.com をみて。 今までは yukidarake.hateblo.jp にあるようにChrome Extension + AlfredのSnippet機能でやってたけど、 自動化できそうと思い、ちょっと試してみた。 コード stackoverflow.com のStack Overflowのサイトほぼそのまま。 Script…

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

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

一足先に🎄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 結構根が深い 既存の処理との互換性を壊さないよ…

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

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

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的なことがしたい

困ったこと yuuki.hatenablog.com こちらの記事にあるような、複数ホストに同時にSSHして、synchronize-panes onで同時操作をしたい。 が、tmuxの中で作業しているときにこのスクリプトだと動かない。 いちいち、iTermで新規windowを起動しないといけない。 …

本日使った技

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