タグ

ブックマーク / jxck.hatenablog.com (23)

  • HTTP/2 Push を Service Worker + Cache Aware Server Push で効率化したい話 - Block Rockin’ Codes

    intro このエントリは、 http2 advent calendar の 1 日目です。 http2study の分かってる人にとっては、「casper の JS 版を作ってる」だけで伝わるかもしれませんが、そうでない場合非常に話すべきことがたくさん有る気がするので、順を追って説明します。 今回理解すべき内容は以下 http2 push の問題点 cache aware server push bloom filter と golomb coded set cache fingerprinting dispenser.js (最初は casper.js と言ってたけど、よく考えると被ってるのがあるので dispenser.js に変えました) そして結論からいうと、まだまだ想定していた挙動まではいけませんでした。。 http2 push の問題点 http2 で push することで、

    kamipo
    kamipo 2015/12/02
    cache aware server pushからGolomb Coded Setの説明めちゃんこ分かりやすかった
  • Let's Encrypt を支える ACME プロトコル - Block Rockin’ Codes

    Intro 先日 #http2study で mozilla の Richard Barnes が Let's Encrypt について話してくれました。 資料: Let's Encrypt Overview この資料の翻訳 はしたのですが、いらなくなってしまったので供養もかねてこのプロジェクトのモチベーションと、 Web でおこっている HTTPS 推進のたどる道について、資料を補足しつつ紹介します。 結論から言うと Let's Encrypt はもちろん ACME プロトコル についても是非知っておくと良いと思います。 HTTPS の問題 すでにこのブログでも紹介しているように、 Web における HTTPS の重要性は増し、それの普及を後押しする活動が各所で進められています。 HTTPS 化する Web をどう考えるか よく言われる盗聴防止を始め、暗号化を行うことで防げる問題は多くあ

    Let's Encrypt を支える ACME プロトコル - Block Rockin’ Codes
    kamipo
    kamipo 2015/11/09
  • HTTP2 の RFC7540 が公開されました - Block Rockin’ Codes

    Intro 今朝、ついにずっと策定作業が行われていた HTTP/1.1 の後継仕様である HTTP2 と、 関連仕様である HPACK が、 RFC として公開されました。 ついに HTTP2 RFC 7540 出た!! #http2study / “rfc7540.txt” http://t.co/CuaVul98l3— Jxck (@Jxck_) 2015, 5月 14 それぞれ番号は 7540 と 7541 になります。 RFC7540 - Hypertext Transfer Protocol Version 2 (HTTP/2) RFC7541 - HPACK: Header Compression for HTTP/2 ちなみに HTTP/2.0 ではなく HTTP/2 が正式名称です。(マイナーバージョンアップでの HTTP/2.1 などはありません) 二年半 HTTP2 の

    kamipo
    kamipo 2015/05/15
  • HTTPS 化する Web をどう考えるか - Block Rockin’ Codes

    Update 2015/5/8: 指摘頂いたタイポや誤訳などを更新しました。 2015/5/8: 構成を一部修正しました。 Intro 4/30 mozaiila のセキュリティブログに下記のようなエントリが投稿されました。 Deprecating Non-Secure HTTP | Mozilla Security Blog エントリはそこまで長くないので、ここに翻訳の全文を記載します。 そして、元エントリのライセンスである CC BY-SA 3.0 に則り、 エントリも同じく CC BY-SA 3.0 とします。 Deprecating Non-Secure HTTP 原文: Deprecating Non-Secure HTTP 今日は、 non-secure な HTTP から、徐々に廃止していくという方針についてアナウンスします。 HTTPS が Web を前進させる手段である

    kamipo
    kamipo 2015/05/05
  • #HTTP2Study の軌跡 - Block Rockin’ Codes

    Intro この記事は HTTP2 アドベントカレンダー 24 日目 の記事です。 HTTP2Study HTTP2 Study は、2013年8月くらいから小さく小さく活動しているコミュニティです。 HTTP2 もまだ HTTP2.0 と呼ばれていた頃で、 Draft でいうと 04 くらいですね(今は 16)。 (ちなみに、現在の仕様では "HTTP2.0" ではなく "HTTP/2" もしくは "HTTP2" が正しい名称です。) 仕様を策定してる HTTPbis としての議論は概ね片付いて、 HTTP2 の仕様は RFC にするための次のステップに移り、もし仕様を覆すような大きな指摘が無ければ、来年の頭にはこのまま RFC として公開されるかもしれないというところまで来ました。 そして今日はこの仕様策定をずっと追いかけてきた HTTP2Study がやってきたことを、簡単にまとめて

    #HTTP2Study の軌跡 - Block Rockin’ Codes
    kamipo
    kamipo 2014/12/25
  • ハイパフォーマンス ブラウザネットワーキング書評 - Block Rockin’ Codes

    Intro 執筆段階から、 Web で無料閲覧できた High Performance Browser Networking が、紙のとして出版され、その翻訳が完成したということで、献を頂きました。 原著には当にお世話になったし、 HTML5Experts.jp で書いた Make the Web Faster の連載でもよく参考にしたなので、日語で読めるようになったのは非常にありがたいですね。 当はレビュアの依頼を頂いたのですが、色々あって他の方に振ったりしてしまったので、せめて全力で書評させていただきます。 やっと献頂いたイリヤゆっくり読める。日語で読めるのは素晴らしい。 #http2study pic.twitter.com/Zy00OOy6ve— Jxck (@Jxck_) 2014, 5月 11 Make the Web Faster ところで、 Google

    ハイパフォーマンス ブラウザネットワーキング書評 - Block Rockin’ Codes
    kamipo
    kamipo 2014/05/12
  • Go のスライスの内部実装 - Block Rockin’ Codes

    History 14/05/09: Merge2 を修正しました。http://twitter.com/jbking/status/464659353945911297 Intro Go のスライスは、いわゆる LL 系の言語が持つ可変長配列の実装と似ています。 よって LL のような手軽な扱いをすることもできますが、その内部実装を知ることでより効率の良いメモリハンドリングができ、パフォーマンスを改善や、メモリーリークの防止などに繋がる可能性があります。 この辺は SWrap というライブラリを作りながら勉強したので、今回は、この Go のスライスの内部実装を解説します。 Go の配列 スライスを知るためには、まず配列について知っておく必要があります。 Go の配列は固定長のため、以下のように長さを指定して宣言します。 var arr [4]int func main() { arr =

    kamipo
    kamipo 2014/05/01
  • なぜ html の form は PUT / DELETE をサポートしないのか? - Block Rockin’ Codes

    注意 内容については一切保証しません。 ここでは、主に W3C ML での議論や各種仕様などに基づいて書いています。 ここに書かれていることが正しいかどうかは、自身で判断して下さい。 事実としておかしいところなどは、コメントでどんどん指摘して下さい。遠慮はいりません。 ただし、このエントリでは「form が PUT/DELETE をサポートするべきかどうか?」の議論はしません。 「REST の是非」や「PUT/DELETE の意義」についても議論する気はありません。 ここでやっているのは、あくまでもどういった議論の末現状があるのかの調査です。 そうした意見がある場合は、 W3C などに投稿するのが最も有益だと思います。 History 2014/03/29: 公開 2014/03/29: XForm と XHTML の関係を明確化(thanx koichik) 2014/03/29: HT

    kamipo
    kamipo 2014/04/01
  • なぜ QUIC や SPDY が生まれたのか ? - Block Rockin’ Codes

    Intro Google が SPDY の開発を始めたのは 2009 年で、 2012 年に HTTP2.0 のドラフトとして採用されたあたりからちょっと話題になりました。 翌 2 月には新たなプロトコル QUIC の存在が Chromium のソースからリークしたのですが、しばらくは音沙汰なく。 6 月に入ってやっと Google から公式アナウンスとドキュメント類が出ました。 去年から今年にかけて立て続けに出てくる新しいプロトコルの話。 なぜ今 Web のプロトコルが見直されるのか? 何が問題で、なぜ Google はそれらを作り変えるのか? SPDY や QUIC は Google の独自プロトコルだけど、それは当にただの独自プロトコルで終わらせていいのか? 20% ルールで作ってみた Play プロジェクトでしかないのか? こうした新しい動きには、かならず「それまで」と「今」を踏

    なぜ QUIC や SPDY が生まれたのか ? - Block Rockin’ Codes
    kamipo
    kamipo 2013/07/23
  • Go の並行処理 - Block Rockin’ Codes

    intro 先日の Go のカンファレンス GoCon で、 Go の並行処理周りについて発表させて頂きました。 Go Conference 2013 spring - connpass 具体的には Goroutine や Channel の話ですが、これらの機能は結構面白くて、いじって遊んでるだけでもわくわくします。 Go の並行処理は、設計方針がわりと特殊だと思うのですが、設計がシンプルなので分かるとそこまで難しくはないです。 (使いこなすのは、経験が必要そうですが) 今回話すにあたって色々調べましたが、発表時間の都合上省いたものもあるし、質疑応答で聞かれて応えられなかったこともあるので、 ここでまとめて置こうと思います。 発表資料 今回の発表資料はこちらです。 このブログの内容は、これをベースにします。 http://jxck.node-ninja.com/slides/gocon-

    Go の並行処理 - Block Rockin’ Codes
  • Go の interface 設計 - Block Rockin’ Codes

    history 13/3/31 Tag について追加 intro Go を触ってて interface を用いた設計がまだまだよくわかってなかったので、一旦まとめることにしました。 Go には明示的な継承の機能は無く、 interface も例えば Java のそれとはかなり毛色が違うので、(Class ではなく) Struct の設計に結構癖があると感じます。 Go の interface は言語設計的にもかなり尖っていて、 Go という言語を強く特徴付けていると同時に、 Go 言語自体の開発者たちもこの機能をかなり重要視しています。 例えば、 Go の開発者の一人である Russ Cox 氏によれば Go's interfaces―static, checked at compile time, dynamic when asked for―are, for me, the most

    Go の interface 設計 - Block Rockin’ Codes
  • 第一回 Erlang 基礎勉強会 に行ってきました -1- - Block Rockin’ Codes

    Erlangもそうですが、並列・分散処理について興味があり、来年はそこを中心に掘り下げたいと思っています。関数型は大学でLISPを少しやりましたが、結局その後使わないので色々と忘れていますし、MapReduceのアーキテクチャ等を学ぶ上でもErlangを少し勉強したいなと思っていたところに、id:@cooldeamon氏が勉強会を開催されると聞きつけ、参加してきました。おそらく今年最後のイベント・勉強会でしょう。 内容は思ったよりも濃く、Erlangに関してgihyo等の記事で読んだ程度の知識の人間にもわかりやすく教えていただきました。 Erlangの環境はCouchDBをインストールした時一緒に入っているので、特に準備は必要ありませんでした。今回は、内容がとても濃く、よくあるセミナのように変にこじんまり詰め込まず、持っているノウハウ・経験談を色々聞かせていただけたので大満足でした。せっか

    第一回 Erlang 基礎勉強会 に行ってきました -1- - Block Rockin’ Codes
  • Node.js の起動オプション、環境変数、npm start の話 - Block Rockin’ Codes

    Node は起動時に色々オプションをつけることができます。 面白いもの、有益なものあるんですが、あまり言及されてないので、 ちょっと紹介してみようかと思ってます。 最後の npm start の話は、それ単体で書いても良いかと思っていたんですが、 関連するし良い機会なので書きます。 そして、オプション周り興味がない方も、Node やってる方は最後の npm start の話だけでも、 読んでいただけるとと思ったりします。(知らない方が多いようなので) ここで紹介している Node のバージョンは v0.7.7 です。しかし v0.6.x あたりでは、 v8 のバージョンが古く、オプションが微妙に違います。そこは v0.6.12 での結果を載せている場合もあります。 -h まあ、とりあえず全ては -h から始まる。ということで、実行すると以下が出ます。 Usage: node [option

    Node.js の起動オプション、環境変数、npm start の話 - Block Rockin’ Codes
  • 次世代規格 HTTP2.0 のファーストドラフト公開 - Block Rockin’ Codes

    intro 少し経って、去る11月28日に、HTTP プロトコルの次期規格となる HTTP2.0 のドラフト、 draft-ietf-httpbis-http2-00 が、IETF の httpbis ワーキンググループで公開されました。 このドラフトは Google から提案された仕様である SPDY が採用されています。 HTTP1.1 からのアップデート HTTP1.1 の RFC が提出されたのは 1999 年で、 13 年経った今年 2012年8月 に、 HTTP の仕様を議論する httpbis というワーキンググループが、 HTTP1.1 のアップデート版になる仕様、 HTTP2.0 の策定を開始しました。 これは、 HTTP1.1 の仕様策定がある程度落ち着いてきたこと、次期仕様を考える良い時期であること、 そしてなによりも、 Web の使われ方が大きく変わり、 求められて

    次世代規格 HTTP2.0 のファーストドラフト公開 - Block Rockin’ Codes
    kamipo
    kamipo 2012/12/12
  • markdown のリアルタイムレンダリングツール markup をリリースしました - Block Rockin’ Codes

    intro 最近は Readme やら執筆原稿などで markdown を使うことが結構多かったりします。 markdown をレンダリングするツールは色々あるんですが、 エディタは好きなものを使いたいので、自分でレンダリングして、 ブラウザで確認できる何かがあればいいなぁと思ってました。 そんな時、 Githubmarkdown のレンダリングを API としてやっていたことを知りました。 Markdown | GitHub API しかも、サーバから叩くぶんには認証などもなく、 5000 回/時も叩けるということで、 それを使ってリアルタイムにレンダリングするツールを作りました。 使い方 インストールは $ npm install markup $ markup readme.md [3000]これだけです。 流行りに乗っかって?、ググラビリティの低い名前でリリースしてます。 m

    markdown のリアルタイムレンダリングツール markup をリリースしました - Block Rockin’ Codes
    kamipo
    kamipo 2012/12/06
  • Engine.IO からみる Socket.IO の今後 - Block Rockin’ Codes

    intro この記事は 東京Node学園祭2012 アドベントカレンダー : ATND の 24 日目の記事です。 Socket.IO の 1.0 が、出る出るといって全然出ないので、 やきもきしている方も多いと思います。 しかし、その裏では Engin.IO という、割りと良い感じの ファミリープロジェクトができていて、 ちょうど先日 RealtimeConf でもその話がありました。 これは Socket.IO にも繋がるはなしなので、 今日はその Engine.IO の話をします。 参考はこのへん、 https://github.com/LearnBoost/engine.io https://vimeo.com/52496621 Engine.IO と Socket.IO (と WebSocket.IO) Socket.IO は、 1.0 を視野に入れたあたりで、 関連プロジェクト

    Engine.IO からみる Socket.IO の今後 - Block Rockin’ Codes
  • サーバサイドJavaScript Node.js入門 を執筆させて頂きました。 - Block Rockin’ Codes

    intro 当にお待たせいたしました。 出す出すといってなかなか出せなかった Node.js が、ついに出版されました。 共著の一人として、自分も書かせていただいています。 サーバサイドJavaScript Node.js入門 作者: 清水俊博,大津繁樹,Jxck,小林秀和,佐々木庸平,篠崎祐輔,高木敦也,西山雄也出版社/メーカー: アスキー・メディアワークス発売日: 2012/10/26メディア: 大型購入: 31人 クリック: 803回この商品を含むブログ (6件) を見る これを書いてる時点では、 JavaScript 部門では 1 位、 プログラミング部門では 4 位 となっているようです。 それなりに、興味を持っていただけているようで良かったです。 自分の記録としても、少しだけ書かせて頂きます。 2 年間の執筆 書き始めたのは、かれこれ 2 年前になります。 その頃はまだ

    サーバサイドJavaScript Node.js入門 を執筆させて頂きました。 - Block Rockin’ Codes
    kamipo
    kamipo 2012/10/30
  • node.js の環境管理ツール nodebrew - Block Rockin’ Codes

    intro nodebrew は バージョンアップの速い node.js を、複数バージョン管理するためのツールです。 ruby の rvm や、 python の virtualenv、 perlperlbrew などの node.js 版と思ってもらえれば良いです。 自分はこれまで nvm を使っていたんですが、今年初めあたりから全てのマシンで nodebrew に乗り換えました。 今日はこの nodebrew を紹介します。 既存の node.js の環境管理 既存の、ものとしては nvm nave n nodeenv などがありました。 それぞれにあった問題については、過去に愚痴を書いています。 簡単にまとめると以下です。 nvm bash向けに書かれてて、zshなどと相性が悪い場合がある。 nave node へのパスを通した子shellを起動するタイプで、子shellとい

    node.js の環境管理ツール nodebrew - Block Rockin’ Codes
  • PhantomJS で HTML のスライドを PDF にし SlideShare にあげる方法 - Block Rockin’ Codes

    文 最近は HTML 形式のプレゼンテーションツールも多くなってきました。 しかし、そうしたツールで作ったスライドはそのままでは SlideShare にあげることが出来ません。 もちろん HTML なのでサーバに上げて URL を共有することもできますが、 やはり、「終わったら SlideShare で共有」ってのは割と恒例になってるし、一元管理できるし、色々便利です。 方法としては、 HTMLPDF とかに直せれば良いのですが、 「見た目そのまま」で PDF 化するのは結構難しいです。 一番実直な方法は一枚づつスクリーンキャプチャを取る方法ですが、面倒です。 自分も色々試したんですが、なかなかうまくいかず。 しかし、 @t_wada さんが同じことに取り組んでおり、ヒントをもらったところ、成功したので紹介します。 今回使った方法は PhantomJS を使ってキャプチャ取得を自

    PhantomJS で HTML のスライドを PDF にし SlideShare にあげる方法 - Block Rockin’ Codes
  • JavaScript のパフォーマンスと Sweet Spot の甘い罠 - Block Rockin’ Codes

    文 先日 JavaScript を高速化するには、 VM を知る必要があるんだろうと思い、 以下のような発言をしてみました。 とにかく今は 「V8の最適化の恩恵を受けるための JS の書き方」や「ホットスポットを温めて C よりも速い JS を書こう」という釣りっぽいけど釣りじゃない記事を @Constellation さんや @bad_at_math さんに書いていただく必要があるということでした! 2011-10-23 21:53:44 via Echofon しかし、釣り針が小さかったためか、誰も釣れず。。 自分で調べろってことですよね、すいません。。 と思っていたら、先日下記のエントリが話題になりました。 そのものずばり、JavaScript を最適化する話。 mraleph-The trap of the performance sweet spot 先に感想を言うと、これはい