タグ

ブックマーク / teppeis.hatenablog.com (15)

  • Node.jsのES Modulesサポートの現状確認と備え - teppeis blog

    追記: 2019/04/24 日リリースされたNode v12でESM周りの仕様が大幅に変更されました。 この記事の内容は既に古くなっているため、最新の情報は以下の公式ブログを参考にしてください。 Announcing a new — experimental-modules – Node.js Foundation – Medium 追記終了 この話を今日のNode学園で話すので、ご興味あればどうぞ。 nodejs.connpass.com (今日いくつか加筆修正しました) ECMAScript 2015で待望のES Modules(ESM)の仕様が策定されたものの実装がなかなか進まない、という話を1年前に発表した。 その後、ブラウザでのES Modules仕様が策定完了し、フラグ付きながら全主要モダンブラウザで初期実装が揃った (caniuse)。(dynamitterさん、kijt

    Node.jsのES Modulesサポートの現状確認と備え - teppeis blog
  • ES6 ModulesはHTTP/2によってconcat無しで使えるようになるのか - teppeis blog

    HTTP2 時代のサーバサイドアーキテクチャフィードバック - Togetterまとめ のあたりで話していたことのまとめ。 補足 タイトルで「ES6 Modulesってconcatしないと動かないの?」と一部に誤解を与えてしまったようなので補足。ES6 Modulesがブラウザにネイティブ実装されたら、当然concatしなくても動きます。 ここで書きたかったテーマは「ES6 Modules + HTTP/2 + concat無し は ES6 Modules + HTTP/1 + concat と同等の速度で動作するのか」です。 追追記 (2016/01) kazuhoさんはh2oで Cache Aware Server Push という解決策を提案しています。 Jxckによる日語解説記事: HTTP/2 Push を Service Worker + Cache Aware Server

    ES6 ModulesはHTTP/2によってconcat無しで使えるようになるのか - teppeis blog
  • いまどきの.travis.yml - teppeis blog

    いまさら感もあるのだけど、あまり知られていないようなのでTravis CIの高速化+αなtipsを書いておく。 先にNode.js向けの完成形の.travis.ymlはこちら。 language: node_js node_js: - "0.12" - "4" - "6" sudo: false cache: directories: - node_modules Tipsは3つ。 テスト対象のNode.jsバージョンを指定する sudo: false: コンテナベースの環境を使う cache: 依存パッケージをキャッシュする テスト対象のNode.js/io.jsのバージョンを指定する 最近はカジュアルにio.jsを使う人/プロジェクトが増えてきている(要出典)ので、特に政治的な理由でもなければnpmパッケージのテストはNode.jsとio.jsの両方で流しておくのが良いと思う。.tra

    いまどきの.travis.yml - teppeis blog
  • typescript-simpleの高速化と最近のTypeScript Compiler API周辺動向 - teppeis blog

    ES6 compat tableのTypeScriptコードのビルド時間を300秒から2秒に短縮した話と、最近のCompiler APIの動きの紹介。 先日TypeScriptの文字列を簡単にコンパイルするtypescript-simpleというライブラリを書いた。 typescript-simpleを作った動機の1つは、ES6 compat tableのTypeScript用テストを高速化することだった。 元は300件以上あるテスト項目を、テストごとにNode.js v0.11のchild_process.execSyncでプロセスを立ち上げてTypeScriptコンパイラ (tsc) でチェックしていたので、全部テストするのに300秒ぐらいかかっていた。これをtypescript-simpleで全テストをワンプロセス内で実行したら超速化するはず!と思ったけど、300秒が200秒になるぐ

    typescript-simpleの高速化と最近のTypeScript Compiler API周辺動向 - teppeis blog
  • ES6テンプレートリテラルをテンプレート関数化する - teppeis blog

    V8にES6テンプレートリテラルが入ったらしいということで、 テンプレートリテラルが実装された - JS.next 先に入っているFirefox 34(現beta)で遊んでみた。 埋め込み変数は即時評価 埋め込み変数は即時評価なので、テンプレートリテラルが評価される時点で定義されない変数を埋め込みに使うとエラーになってしまう。 var name = 'Taro'; console.log(`Hello, ${name}.`); // 'Hello, Taro.' console.log(`Hello, ${hoge}.`); // ReferenceError: hoge is not defined' そうすると、Viewクラスのプロパティにテンプレートを持っていて任意のタイミングで呼ぶみたいなことができず、同じテンプレートでも使うところで毎回リテラルを書く必要がある*1。 // Vie

    ES6テンプレートリテラルをテンプレート関数化する - teppeis blog
  • 3分で分かるFacebook Flow - teppeis blog

    というか3分ぐらいの情報しかまだ出てきてないんだけど。 先月の@Scale 2014で発表されたFacebookのFlowについて、おそらく唯一のオフィシャルな情報であるこの発表動画を見て分かったことを紹介(ざっと見ただけなので間違ってたらごめんなさい)。 JavaScript Testing and Static Type Systems at Scale - @Scale 2014 - Web 静的な型チェックができるトランスパイラ シンタックスはTypeScript互換 なのでnew languageとかaltjsとか言ってない Code Intelligent Server: コンパイラはサーバー型 モジュール毎にインクリメンタルに型解析をアップデートする 高度に並列化していて高速 クライアントツールは、コンパイラサーバーに型情報のクエリを投げる ES6の各種シンタックスをサポート

    3分で分かるFacebook Flow - teppeis blog
  • Closure Templatesのオートエスケープが最強すぎる件 - teppeis blog

    rails3以降のWEBアプリケーションにありがちなXSS - hanagemanの日記ではない この記事を読んで、ちょうど最近使っているGoogle Closure Templatesがいい感じだったので紹介します。 コンテキストが異なる/重なるポイントでのエスケープ問題 最近のほとんどのテンプレートエンジンでは、変数埋め込みをデフォルトでHTMLエスケープしてくれます。が、元記事で指摘されているように、それでは正しくないケースがあります。HTML PCDATA以外のコンテキストで文字列を生成したり、複数のコンテキストが重なっている箇所です。 極端な例としてはこんな感じです。 <a href="{$x1}" onclick="alert('{$x2}')">{$x3}</a> <script> var x = '{$x4}'; var y = {$x5}; </script> <styl

    Closure Templatesのオートエスケープが最強すぎる件 - teppeis blog
  • JavaScript Stringでサロゲートペアを扱う - teppeis blog

    JavaScriptで強力なUnicodeを扱う方法について書きます!(嘘) 先月末に発売されたWEB+DB PRESS Vol.78で「フロントエンドの国際化」の記事を書いたのは前回書いた通り。 WEB+DB PRESS Vol.78に「フロントエンドの国際化」について書いた! - teppeis blog 記事内で、JSの文字列は基UTF-16なのでサロゲートペアがうまく扱えないっていう問題は書いたけど、じゃあどうすればいいの?っていうのは載せられなかったので書く。 文字数のカウント 「𠮷(U+20BB7、つちよしだ)」や「𩸽(U+29E3D、ほっけ)」はUTF-16ではサロゲートペアで表現するのでlengthが見た目とズレる。 console.log("𠮷野家で𩸽".length); // 7 これを「5文字」とカウントしたいという話。 正規表現を使う方法 たぶん実装が一番

    JavaScript Stringでサロゲートペアを扱う - teppeis blog
  • Node.jsの開発を超速化するGitHub連携 三種の神器 - teppeis blog

    Node.js Advent Calendar 2013 - Adventar 9日目です。 あまりネタを用意する時間がなかったので、GitHubにNode.jsのリポジトリを置いたりnpmにパッケージを公開したりしたときに便利な定番サービスを3つ紹介します。 Travis CI Coveralls David タイトルは釣りですが、特にTravisとCoverallsは一度体験すると離れられないぐらいほんとにlife changing。コードをpushしたらブランチのビルド結果をプルリクに表示してくれたり、カバレッジ結果をコメントで書き込んでくれるので、それを見ながらコーディングを進めていけます。これが無料なのは意味不明なぐらいの神です*1。 サンプルコードはこちらのプロジェクトで見てください。 Github: https://github.com/teppeis/fixclosure

    Node.jsの開発を超速化するGitHub連携 三種の神器 - teppeis blog
  • Docker = LXC + aufs + GitHub Culture - teppeis blog

    先日、社内勉強会のLTでDockerについて発表というか紹介しました。 DockerがYAVAY! from teppeis Dockerは各方面で噂は聞いていたんだけど、先月のTesting Casual Talks #1 : ATNDで、mizzyさんのDocker上でserverspecを走らせるデモを見てガツンとやられました。 仮想化というとVirtualBoxとかKVMみたいな仮想マシンしか想像してなかった自分には、起動時間ゼロで仮想環境が何度も実行される様子は衝撃的。調べてみると、LXCとaufsという要素技術をうまく組み合わせたものをGit&GitHub的なイマドキ開発文化でラッピングした感じで、うまいなーと感心しきりです。 発表もそのあたりのお話とデモが中心だったので、資料にはコマンドとかはないです。 実際に手を動かしたい方は先人の素晴らしい記事を読まれると良いかと思います

    Docker = LXC + aufs + GitHub Culture - teppeis blog
  • 超高速レビュー: TypeScript 0.9.1 - teppeis blog

    タイトルは今日のネタから頂きました。与沢さんじゃないです。 さてTypeScript 0.9.1がアナウンスされたので、変更点などを見てみます。 Announcing 0.9.1 - TypeScript - Site Home - MSDN Blogs コンパイラの高速化 0.9でさんざん遅くなったと言われていたコンパイル速度が、0.8と同等かそれ以上に高速化されたとのこと。 実際手元の小さいプロジェクトでコンパイルしたところ、たしかに2.8秒程度のコンパイルが2.0秒で終わるようになりました。ちゃんとベンチマークはしてないですが、それなりに速くなってるみたいです。 Type Queries(typeofによる型指定) アナウンスを見ても意味がよく分からなかったのですが、仕様書(pdf)を見たらわかりました。 型指定の場所でtypeofを使って別の変数の型を指定できます。 なので、こ

    超高速レビュー: TypeScript 0.9.1 - teppeis blog
  • URL移転前のはてブを表示するChrome拡張『hatemove』をTypeScriptで作った。 - teppeis blog

    はてブさんいつもお世話になってるんですが、サイトのURLが移転しちゃうと過去のデータ引き継げないっていう問題があります。 ここ最近GitHub PagesとGistのURLが変わっちゃって、「あれ、これ前に見たっけ?」っていうことが増えてきたので、移転前のはてブを表示するChrome拡張を作りました。 インストールはこちらからどうぞ↓ https://chrome.google.com/webstore/detail/hatemove/olhdaknacbkplofejfmcfjgkjdjpggml 移転があったらアイコンが緑に、移転前のブクマがあったらカウントを表示します。 自分がブクマしてたらチェックマークが黄色くなります(アイコンしょぼくてごめんなさい)。 御馴染みhokaccha先生の神プレゼンも、公式はてブ拡張と並べると荒稼ぎっぷりが一目瞭然です! ちなみにこのうち60人は移転前

  • Effective JavaScript勉強会 #1 - teppeis blog

    社内でEffective JavaScriptの勉強会を始めました。 第1回の資料をslideshareに上げたので、シェアさせていただきます!(春なので意識高め) Effective JavaScript Ch.1 from teppeis スライドにも書いたけど、これまでだと類書で薄いのは『JavaScript: The Good Parts』っていうのがあったんだけど、ちょっとクセが強いというか、Douglas Crockford節が強すぎて、盲目的に全部真似するとちょっとアレな感じなので、安易に薦めにくいでした。 参考: 『JavaScript:The Good Parts』にツッコミ (Kanasansoft Web Lab.) Effective JavaScriptはそれに比べるとマイルドで、「new使うな!」とか書いてないので安心できます。 あとGood Partsの方で

    Effective JavaScript勉強会 #1 - teppeis blog
  • Stylus/mochaがやってるGlobal leakテストとNode.js Debugger - teppeis blog

    先日、Stylusのコードをいじってたらグローバルリークがあったので、修正してPullリクエストしました。(TJが即マージしてリリース済みだよ!) リークを見つけたのは、StylusのテストコードにGlobalオブジェクト汚染を検出するテストがあってそれをたまたま走らせただけなのですが、このテストがシンプルかつ効果的でいいなと思いました。 https://github.com/LearnBoost/stylus/blob/master/test/run.js // Testの初期化時にデフォルトのグローバルオブジェクトのキーを保存。 var globals = Object.keys(global); ... // Testが終わったらグローバルオブジェクトの差分をチェック function done() { Object.keys(global).forEach(function(nam

    Stylus/mochaがやってるGlobal leakテストとNode.js Debugger - teppeis blog
  • WEB+DB PRESS Vol.73にJSのユニットテストについて書きました! - teppeis blog

    日(2/23)発売の WEB+DB PRESS Vol.73 にて、JavaScript連載第6回『最新ツールを使ったモダンなユニットテスト Mocha, Testem, Sinon.JS』を執筆させていただきました! WEB+DB PRESS Vol.73 作者: 設樂洋爾,白土慧,はまちや2,大和田純,松田明,後藤大輔,ひろせまさあき,小林篤,近藤宇智朗,まかまか般若波羅蜜,Mr. O,川添貴生,重国和宏,柳澤建太郎,奥野幹也,佐藤鉄平,後藤秀宣,mala,中島聡,堤智代,森田創,A-Listers,WEB+DB PRESS編集部出版社/メーカー: 技術評論社発売日: 2013/02/23メディア: 大型購入: 12人 クリック: 131回この商品を含むブログ (4件) を見る 内容はこんな感じ。 最近のJS開発におけるユニットテストの位置づけ やたらと盛り上がっているJSのテスト

    WEB+DB PRESS Vol.73にJSのユニットテストについて書きました! - teppeis blog
  • 1