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

GraphQLの基本用語

GraphQLって用語が分かりにくいんですよね…ということで社内用に作った用語集を公開しておきます。 GraphQL http://graphql.org/ グラフキューエル query language リクエストのフォーマットがGraphQLということ レスポンスはJSON(でもMessagePackでもなん…

caniuse.com が素晴らしいのでパトロンとして登録した

https://caniuse.com/ というサービスがあって、ブラウザごとのJSやHTMLの機能を調べられる(caniuse = Can I use X?) 超便利なサービスなのです。 自分のいるリージョンなども登録できて、ある機能を利用できるユーザーのシェアを数字でみられます。たとえ…

High Sierraには「アプリのリンクを踏んでもChromeの空白ページが開くだけ」というバグがあるっぽい

一時的な回避策ですが、このバグが発現する状態になったら「Chromeを再起動する」で回復するようです。このエントリを書いている時点でのmacOSの最新版は 10.13.2 (High Sierra) なので、以降のバージョンでは直ってるかもしれません。 ぼく自身はまだSierra…

railsdmでマルチテナント・ウェブアプリの話をしました

railsdm.github.io 発表:「マルチテナント・ウェブアプリケーションの実践」 一文でまとめると「HTTPのリクエストごと、あるいはjobの実行ごとにストレージの名前空間違うから気をつけような!!」ってのを常に意識する必要がありますって話でした。 なおEl…

DroidKaigi Prelude というイベントでDroidKaigiのセッションを徹底解説します!

DroidKaigi 2018 (2/8-2/9)の関連イベント*1としてDroidKaigi Preludeというイベントを企画しました。現在、参加者&LTを募集中です。 connpass.com メインセッションの「DroidKaigiセッション解説」を @shiraj_i さんと @muumuumuumuu さんといっしょにやり…

ISUCON7本戦で5位でした

ISUCON7 にチーム「スギャブロエックス」で参加して5位でした。 ベストスコアが29944点なので、せめてこれを最終スコアにしたかった…! チームメイト ISUCON7 勝てなかった - すぎゃーんメモ リポジトリ github.com 所感 今回は "Chair Constructor Online" …

ES modulesのexport defaultは使わないほうがよい

ES modulesにexport defaultってのがあるんですが、default exportのexport対象に名前が必須でないため、IDEによるコード補完と相性が悪いです。 他のところはどうしてるのかなと思って調べてみると、GoogleのTypeScript Style Guide では禁止されてました(v…

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の配布形式として使う

三行まとめ Cライブラリzopfliをwasmにビルドして npmjs.com にリリースしてみた wasmはポータブルなバイナリで、ネイティブコードと比較して半分程度の性能を期待できる emscriptenは N-API と比べると出来ることが少なすぎるのが課題 背景 WebAssembly *1 …

はてなブログのエントリに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 + 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…

Rubyの型定義ファイルを中央repoにしないほうがいい理由

あるいは私がDefinitelyTyped (DT) が失敗だと思っている理由、です。 DefinitelyTypedは明確に失敗だと思っているので、あれを避けるのはそんなに難しくないかなと。まず (1) anyを認めて「型がなくてもいいや」という気持ちでいく (2) 中央repoは作らずそ…

TypeScriptでPromise.prototype.finallyを使う

github.com Promise.prototype.finally が stage-3 になって、 ES polyfill集である core-js にも v2.5.0 で追加されたので、babel-runtime などを使っている場合はcore-jsのバージョンを上げるだけで finally を使えるようになってます。 しかし、TypeScrip…

CommonMark v0.28 のイマイチなところ

作業メモとして。なお、 CommonMark ≒ GitHub Flavored Markdown くらいの感覚で書いてます(実際にはGFMはCommonMark + いくつかの独自拡張)。 http://commonmark.org/ https://github.github.com/gfm/ 膠着語分かち書きしない言語におけるスペースで区切…

Androidライブラリのためのmaskaradeというorgを作った

The Maskarade project · GitHub 最近イマイチAndroidの活動ができてないんですが、Androidライブラリのメンテを諦めたわけではなくて、たとえばOrmaとかはまだやりたいことがいくつかあるのでやるつもりはあります。一方で、ちゃんと新しいメンテナがいたほ…

builderscon 2017 tokyo に行った

builderscon tokyo 2017 - Aug 3, 4, 5 2017 いろいろな分野の人がいて非常に刺激になりました。来年はなにかネタを持っていきたい。 あと名札がリバーシブルなのよかった。なお一人ひとりにユニークなQRコードを発行するのはバリアブル印刷というそうです。…

npmjs.com で著名ソフトウェアによく似た名前のマルウェアが大量に発見された

Malicious packages in npm. Here’s what to do | Ivan Akulov’s blog People found malicious packages in npm that work like real ones, are named similarly real ones, but collect and send your process environment to a third-party server when yo…

ghq+pecoでターミナル作業が捗るぞ

便利なソフトウェアを定期的に掘り起こすぞ活動です。 ghq は「GitHub repoのclone先を統一することでいろいろ便利にできるコマンド」で、github repoのclone先を、カレントディレクトリに依存せず ~/.ghq/github.com/$owner/$repo/ にします。 使い方: ghq …

ActionArgsが素晴らしい件 #Rails

github.com Railsのcontrollerで違和感があるのって actionのinputに params というインスタンスメソッド経由でアクセスすること しかも params はviewからアクセスできる! actionのoutputが controller のインスタンス変数への代入であること しかもそのイ…

RailsのURL helpersをTypeScriptとしてexportするts_routesを書いた

カッとなって作りました。後悔はしてません。 github.com /entries/:id を生成するためにRailsのviewで entry_path(42) などとしますが、それをTypeScriptからも Routes.entryPath(42) などとして使えるようにするためのgemです。 READMEにあるように rake t…

RubyMineでローカル変数やブロック引数にYARD型アノテーションをつける

RubyMine 2017.1 Help :: Using Annotations にあるとおりなんですが、 local variables: # @type [String] my_var = magic_method # @type my_var [String] my_var = magic_method # @type [String] my_var my_var = magic_method # @type [String] my_var …

markdownの拡張記法の現状

Kibelaは次のようにいくつかmarkdownを拡張しています。 PlantUML記法に対応しました - Kibela Blog 記事の外部共有とLaTeX記法による数式表示に対応しました - Kibela Blog そして、今後もそういう拡張は増えていくと思われます。 PlantUML KibelaのPlantUM…

TypeScriptのDefinitelyTypedは「ダメでもともと、うまく使えればラッキー」くらいの距離感がよい

自前でTypeScript型定義ファイル(dts)を用意していないJSライブラリのための型定義ファイル集があります。 https://github.com/DefinitelyTyped/DefinitelyTyped npmで @types/react みたいなのがそうです。 これは便利なものですが、ライブラリ作者ではな…

rougeのlexer開発ワークフロー

github.com digdag の構文を追加するにあたって、Ruby製syntax highlighterであるところのRougeのlexerの開発方法を調べました。 基本 Rouge lexerはDSLで定義します: https://github.com/jneen/rouge#using-the-lexer-dsl lexerはステートマシンとして振る…