タグ

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

  • ES2016の追加機能が決定、あるいはES7言うな問題 - teppeis blog

    今年6月に公開予定の ECMAScript 2016 (ES7) で追加される機能が以下の2つに決定した。 Array.prototype.includes Exponentiation Operator 今後は3月1日にスペックのスナップショットが切られ、6月の公開に向けた作業が始まる。 あれ、ES7ってそれだけなの?と思った方は、ぜひ ECMAScript の新しい策定プロセスを確認されたし。 標準化には2つの実装が要求される 昨年公開されたES6以降、ECMAScript の仕様策定プロセスは機能ベースで毎年リリースするスタイルになった。 細かいプロセスは 『ECMAScriptの仕様策定に関するカンニングペーパー | Web Scratch』 を参照してもらうとして、重要なポイントは、提案機能が標準化される(Stage 4になる)ためには2つ以上の実装が必要ということ。 今回のES

    ES2016の追加機能が決定、あるいはES7言うな問題 - teppeis blog
  • おまえは今まで実行したassertの回数を覚えているのか?あるいは新しいアサーションユーティリティのご提案 - teppeis blog

    JavaScript Advent Calendar 2014 11日目。 いきなり要約: Promiseや非同期テストのアサーションを簡単確実に書けるようになるesplanというライブラリのPoCを作った話。 Promiseや非同期のテストは難しい 詳しくはJavaScript Promiseの: Chapter.3 Promiseのテストをご覧いただきたいのだが、Promiseのテストを正確に書くのはそんなに簡単ではない。 例えばmochaだと、 // 間違ったテスト1: // mayBeResolveWithOne() が1以外でresolveしたときタイムアウトエラーになる it("mayBeResolveWithOne()は1でresolveする", function(done) { mayBeResolveWithOne().then(function(value) { as

    おまえは今まで実行したassertの回数を覚えているのか?あるいは新しいアサーションユーティリティのご提案 - teppeis blog
  • TypeScriptの宣言空間とその不満 - teppeis blog

    最近TypeScriptの型を触っていてハマったあたりのまとめ。だいたい仕様書に書いてあるとおりなので、すでに仕様書を読破している諸兄にはこの記事は必要ないです。 宣言空間 (declaration space) とは 宣言空間というのは、同一宣言空間で同じ名前が複数存在するとエラーになるような空間のこと。 TypeScriptには大きく分けて3つの宣言空間 (declaration space) がある *1。 変数 (for variables) またはメンバー (for members)*2*3 型 (for named types) 名前空間 (for namespaces) どういうことかというと、TypeScriptでは次のコードがエラーにならない。 var M = 0; // 変数宣言空間 interface M {} // 型宣言空間 module M {} // 名前空間

    TypeScriptの宣言空間とその不満 - 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
  • 3分で分かるAngularJSセキュリティ - teppeis blog

    先日のng-mtg#4 AngularJS 勉強会でLTしようと思ったけど申し込みが間に合わなかったのでブログに書きます。 先月リリースされたAngularJS 1.2はセキュリティがんばってる的なことを聞いたので、セキュリティ周りの仕組みを調べてみました。 お題は以下です。 CSRF JSON CSP (Content Security Policy) Escaping CSRF ユニークなトークンをHTTPリクエストに載せてサーバーでチェックする対応が世の中では主流(最近はカスタムヘッダのチェックによる対策も) AngularJSでは、XSRF-TOKEN Cookieにトークンが載っていると、$httpを使ったHTTPリクエストのヘッダに自動的にX-XSRF-TOKENヘッダーが付く。 XSRF-TOKEN CookieはもちろんNot HttpOnlyで。 Angular界ではCS

    3分で分かるAngularJSセキュリティ - teppeis blog
  • Closure Compilerの型テンプレートが進化してる件 - teppeis blog

    altjsガチ勢のみなさんこんにちは。 TypeScriptの次期バージョンでジェネリクスが入るぜ!なんて話題になってたりしますが、Closure Compilerのテンプレートまわりも人知れず進化しているので紹介。 なぜかドキュメントにはさっぱり載ってないので、Compilerのソースとテストコードが命です。 メソッドテンプレート 去年サポートされたのがメソッドテンプレート。メソッドや関数のアノテーションで@templateが使えます。 次のサンプルコードはArrayから特定条件を満たす要素を探して返す関数。Arrayの要素の型と条件関数fのthisにバインドされるopt_thisの2つがテンプレートになってます。 /** * @param {Array.<T>} arr * @param {function(this: S, T, number, Array.<T>): boolean

    Closure Compilerの型テンプレートが進化してる件 - teppeis blog
    terazzo
    terazzo 2013/04/19
  • 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
    terazzo
    terazzo 2012/03/19
    これは良いですな。
  • 1