Islands in the byte stream

Technical notes by a software engineer

nodejsの標準モジュールzlibはworker threadを使うらしく

Zlib | Node.js v9.2.0 Documentation Note that all zlib APIs except those that are explicitly synchronous use libuv's threadpool, which can have surprising and negative performance implications for some applications. スレッドプール数は UV_T…

WebAssemblyをNodeJS Native Addonの配布形式として使う

三行まとめ 高い圧縮率をほこる gzipライブラリ zopfliをwasmにビルドして npmjs.org にリリースしてみた wasmはネイティブコードと比較してだいたい50%くらいの性能を期待できる emscriptenは N-API と比べると出来ることが少なすぎるのが課題 背景 WebAsse…

はてなブログのエントリにPlantUMLを埋め込む方法

PlantUML、便利ですよね。はてなブログでも使いたいですよね。ということでやってみました。 まずエントリの最後にこのスニペットを置きます: <script> var a = Array.from(document.querySelectorAll("pre.code")); a.forEach(function (pre) { if (pre.attributes[…

AssemblyScriptでHello, world!してみた

github.com AssemblyScriptという、TypeScriptのサブセットでありWebAssemblyにコンパイルできる言語があります。 ※ WebAssemblyについては WebAssembly の基礎 - nmi.jp などをどうぞ TSのサブセットとはいえ、WebAssemblyにコンパイルしやすくするために若…

ISUCON7 予選通過した!

スギャブロエックス(id:sugyan, id:kazeburo, id:gfx) で予選に出場して2日目2位でした。去年は予選敗退だったので2年ぶりの本戦出場です。 バランスの良い良問で大変楽しかったです。ISUCON運営チームに於かれましては大変おつかれさまでした&ありがとう…

compression-webpack-plugin + node-zopfli でgzip圧縮ファイルを用意する

sprocketsを使っているアセットは半ば自動的にgzip圧縮版ファイルが用意されるのでそれをnginxのgzip_staticなどでサーブすればいいわけですが、JSのビルドをwebpck化したときにそういえばgzipされたファイルを用意しなくなったなと。それでもまあ、nginxが…

GraphQLの型を補完する Date, BigInt, Any を提供する graphql_types gem を書いた

github.com クライアントサイドでもdecoderがないとただの文字列だったりオブジェクトだったりしますが、ひとまずRuby側だけでも。 Anyなんて使う機会あるの?って感じもしますが、「なんらかのオブジェクトの構造をもっているはずだが、クライアントサイド…

開発者向けにMarkdown JPというコミュニティを作ってみました

gitter.im Markdown自体の仕様については、CommonMarkに期待しているので commonmark.org でよい CommonMarkに収まらない拡張を日本語で議論できる場所がほしい ルビや数式など サービス間で(ある程度)互換性があることはMarkdownの大きな価値なので、その…

GraphiQL が "Mode graphql failed to advance stream." というエラーで起動しなったときのワークアラウンド

GraphiQL(グラフィクル)ってのはGraphQL(グラフキューエル)のAPI consoleです。GraphQL IDEと呼ばれることもあります。 github.com (現行バージョン: v0.11.5, バグ確認バージョン: v0.11.2) こいつには、どうも変なクエリを食わせると二度と起動しな…

yarnpkgのenginesのバージョンチェックを無効にする方法

yarnpkg v1.0から、 package.json の engines sectionのバージョンチェックが顕密になりました。これにより新しいnodejsやyarnpkgを試すのが面倒になります。 これにメリットを感じない場合は無効化しましょう。 具体的には、 ~/.yarnrc に ignore-engines t…