タグ

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

  • 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
    yosuke_furukawa
    yosuke_furukawa 2017/08/31
    ボスの今日の発表の予習ですよ!!!!!!皆さん! #tng27
  • npm install scriptの脆弱性とオープンソースと信頼 - teppeis blog

    先日アナウンスされた脆弱性とその周辺について、とりとめなく。 The npm Blog — Package install scripts vulnerability Vulnerability Note VU#319816 脆弱性の概要 VU#319816 によれば、今回問題になっているのはnpmの以下の性質を利用するとnpmパッケージでワーム(自己増殖力のあるマルウェア)を作れるというもの。 依存パッケージのバージョンをロックせず、semverにより範囲指定することが多い CLIで一度npmloginすると、明示的にnpm logoutするまで認証が永続化される npm registry が中央集権型サーバーである 具体的な手法として、Chris Contoliniが PoC として pizza-party というリポジトリを公開している*1。以下のように動作する。 ワームが仕込まれ

    npm install scriptの脆弱性とオープンソースと信頼 - teppeis blog
  • Node学園でES6について話した - teppeis blog

    Node学園 16時限目 ES2015発行記念でES6について話しました。 Run through ES6 (ES6総ざらい) Everything is Iterator (IteratorについてのLT) 編の充実度もさることながら、無法地帯と化した懇親会でFilip Pizloの業績を烈火のごとく語るConstさんと、それに合わせて的確なサイトをブラウザで瞬時に表示し続けるazuさんというコンビ芸が見られて、心底感動しました。 会場と🍣を提供していただいたDeNAさん、ありがとうございました! 引き続き、WEB+DB PRESS Vol.87最新号のES6特集をよろしくおねがいします。 また、YAPCでのES6トークも採択していただきましたので、YAPCまではES6芸人として生きていこうと思います。

    Node学園でES6について話した - teppeis blog
    yosuke_furukawa
    yosuke_furukawa 2015/07/03
    最後の乱闘みたいな形式の懇親会での発表面白かったなぁ
  • 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
    yosuke_furukawa
    yosuke_furukawa 2015/05/21
    社内でこれの議論をしたんですが、 PUSH_PROMISEでキャッシュ済みのものを送信するのはclient側でキャンセルできるっていう話を聞いたんで、静的ファイルのpushはcacheの有無に関わらず、意味がありそう。
  • io.js用に書いたパッケージはnpmでどう扱うか問題 - teppeis blog

    東京Node学園 15時限目に参加したときにふと思った疑問について。 Node.jsと非互換なAPI使ったとき、npmにあげていいの?package.jsonのengineとかで書けるのか #tng15— teppeis (@teppeis) 2015, 2月 10 Node.jsの場合 例えばNode.js v0.12系にしか存在しないAPIを使ったパッケージの場合、package.jsonのenginesフィールドにこう書くことで、 { "engines" : { "node" : ">=0.12" } } 適合しないNode.js v0.10でnpm installしたときに警告を出すことができた。逆に削除されたAPIを使っている場合はバージョンの上限も指定できる。また非推奨ながらengineStrictフィールドを使うと警告ではなくエラーにできる。 io.jsでの議論は では、io

    io.js用に書いたパッケージはnpmでどう扱うか問題 - teppeis blog
    yosuke_furukawa
    yosuke_furukawa 2015/02/12
    これはよく言われてる懸念の一つだ。ただ個人的にはenginesにiojs >= 30とかまで行っちゃってたら世の中はNode.jsそれでも使ってるのっていうのが分からない。それでもう片方のサポートしなきゃいけないような未来が見えない
  • 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
    yosuke_furukawa
    yosuke_furukawa 2015/01/23
    今読んでもすごい
  • 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
    yosuke_furukawa
    yosuke_furukawa 2014/10/30
    昨日この記事読まずにteppeisさんにどうなんですか?って聞いたら、まだ読んでないんですか?遅れてませんか?って煽られた記事。
  • HTML FormにPUT/DELTEは必要なのか、あるいはJSer界の分断 #桜JS - teppeis blog

    先日、都内某所で開催された#桜JSに参加したので、個人の日記レベルの感想を書いてみる。 #桜JS - Togetterまとめ 桜JSでご飯をべながらLT大会をした | Web scratch 細かいことはazuさんのまとめを見てもらうとして、個人的におもしろかったのがHTML FormのPUT/DELETEについての議論。 なぜ html の form は PUT / DELETE をサポートしないのか? - Block Rockin’ Codes Jxckさんの経緯まとめを踏まえて、じゃあこれからHTML FormにPUT/DELETEを追加する必要あるの?っていう点で意見が割れた。 個人的には、この話を聞いたとき、確かに仕様としては欠けてる感じがするけど、いまさら実装されても自分はForm PUT/DELETE使うことはないだろうなと思っていた。理由は、FormでPUT/DELETE

    HTML FormにPUT/DELTEは必要なのか、あるいはJSer界の分断 #桜JS - teppeis blog
    yosuke_furukawa
    yosuke_furukawa 2014/04/09
    PUT/DELETEの話は面白かった。formサポートしたとしても結局使わないよね、って話はformの議論の根幹だと思うんだけど、それ言ったらformそのもの有用性の話になりそうだと思った。
  • 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
  • タスクを並列超速化するgrunt-parallelizeを紹介するよ - teppeis blog

    この記事は Grunt Plugins Advent Calendar 2013 23日目の記事です。 Gruntタスクを並列で実行するプラグイン grunt-parallelize を紹介します。 ある程度プロジェクトが大きくなるとJavaScriptが1500ファイルとか超えてきてJSHintにくっそ時間かかるみたいなことがよくあります。JSHintを含む多くのNode製ツールはシングルプロセスなので、普通に実行しちゃうとマルチコアなCPUが遊んでてもったいないわけです。 そんなときにgrunt-parallelizeを使うと、指定のプロセス数にファイルリストを分割してマルチプロセスでタスクを実行してくれます。 まずはもとになるタスクのGruntfile.jsの定義。grunt-contrib-jshintを使った普通のタスクですね。 grunt.initConfig({ jshint

    タスクを並列超速化するgrunt-parallelizeを紹介するよ - teppeis blog
    yosuke_furukawa
    yosuke_furukawa 2013/12/23
    おお、grunt-concurrentと違うのかなーと思ってたけど、ファイルリスト分割するのか。それだと目的が異なるな。grunt-parallelizeは1タスクを並列動作させるのに対して、grunt-concurrentは複数タスクを並列動作させるものだしな。
  • 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
  • 1