エコなWebサーバー
   emasaka
自己紹介
●   twitterとかGitHubとか: emasaka
●   blog: 本を読む
    http://emasaka.blog65.fc2.com/
●   ダジャレをGoogle検索結果としてtwitterに
    流すメソッドのたぶん元祖
過去の実績
●   Bash on Rails
    ●
        pure Bashのメタプログラミングで、
        オブジェクト指向もどき+ActiveRecord
        もどき+ERBもどき+YAMLもどき、ほか
●   sh.inatra
    ●
        pure Bashでsinatraもどき
●   2008年LL future「キミならどう書く」
    ●   数値をK/M/G/T表記
    ●   →ddでファイルを作ってls -lh
ヒキョーなネタ
本題
Webのページには
余分なものがいっぱい

    必要なのはここだけ




     ※GI○AZINEさん例にしてごめんなさい
エコじゃない!

MOTTAINAI!
●   ブラウザでカット?
    ●   Adblock PlusとかGreaseMonkeyとか
●   でも送ってくる分のHTMLが無駄



    MOTTAINAI!
HTTPの仕様を見る
●   HTTP 1.1 "Range Requests and Partial
    Responses"
●   コンテンツの一部分をリクエストできる
    ●   リクエストヘッダーにRange:フィールド
  ...
使用例
●   ダウンローダー
    ●   分割ダウンロード
    ●   リジューム
●   2chブラウザ(追記型データ)
ただ
●   バイト数指定なので、本文抽出には使いづらい
●   やっぱりDOMとかでやりたい


      新しい指定方法が必要
メールヘッダを見てみる

    X­Moe: CCSakura/Sakura
                          (萌え属性表明)
●   1990年代に一部で流行
    (通信用語の基礎知識
    http://www....
X-*フィールド
●   勝手拡張フィールド
●   X-Mailer:とかX-ML-Name:とかはメジャー
HTTPのレスポンスヘッダでも


    X­Powered­By: Phusion Passenger
     (mod_rails/mod_rack) 2.2.5


●   Passengerで
X­hacker: If you're reading this,
     you should visit automattic.com/
     jobs and apply to join the fun, 
     mention...
以上をふまえて、X-*拡張を使って

X­Path:
というHTTPリクエストヘッダーを提唱します
XPathで指定
●   X-Path:フィールドでXPathを指定
●   HTMLのうち、その部分だけ返ってくる
    (リクエスト)

    X­Path: //p[@id="hello"]
    (レスポンス)


     <p...
さっそくサーバーを実装してみる

        WEBrickなら
        Rubyで簡単に
         拡張できて
         実験に便利
           ですね
作りました
●
    名付けて
    WEBrick-DOM
    (ウェブリック・ドム)
              ←これはリックドム
サーバーのサンプル (WEBrick)

 require 'webrick'

 srv = WEBrick::HTTPServer.new({
   :DocumentRoot => './',
   :BindAddress => '12...
サーバーのサンプル (WEBrick-DOM)

 require 'webrick/dom'

 srv = WEBrick::HTTPServer.new({
   :DocumentRoot => './',
   :BindAddres...
やってること
●   WEBrickのDefaultFileHandlerをラップす
    るサブクラスを作る
    ●   X-Path:フィールドがあればnokogiriで処理
    ●   それ以外はsuper丸投げ
●   Fil...
問題点

      ※作ってから気付いた
わざわざ
 広告カットの
   APIを
自分で提供する
  サイトって
 ないだろJK
それ以前に



これキャッシュ効かなくない?
エコじゃない!

MOTTAINAI!
余った時間で




DEMO
Upcoming SlideShare
Loading in …5
×

エコなWebサーバー

1,376 views
1,336 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,376
On SlideShare
0
From Embeds
0
Number of Embeds
97
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

エコなWebサーバー

  1. 1. エコなWebサーバー emasaka
  2. 2. 自己紹介 ● twitterとかGitHubとか: emasaka ● blog: 本を読む http://emasaka.blog65.fc2.com/
  3. 3. ● ダジャレをGoogle検索結果としてtwitterに 流すメソッドのたぶん元祖
  4. 4. 過去の実績 ● Bash on Rails ● pure Bashのメタプログラミングで、 オブジェクト指向もどき+ActiveRecord もどき+ERBもどき+YAMLもどき、ほか
  5. 5. ● sh.inatra ● pure Bashでsinatraもどき
  6. 6. ● 2008年LL future「キミならどう書く」 ● 数値をK/M/G/T表記 ● →ddでファイルを作ってls -lh
  7. 7. ヒキョーなネタ
  8. 8. 本題
  9. 9. Webのページには 余分なものがいっぱい 必要なのはここだけ ※GI○AZINEさん例にしてごめんなさい
  10. 10. エコじゃない! MOTTAINAI!
  11. 11. ● ブラウザでカット? ● Adblock PlusとかGreaseMonkeyとか ● でも送ってくる分のHTMLが無駄 MOTTAINAI!
  12. 12. HTTPの仕様を見る ● HTTP 1.1 "Range Requests and Partial Responses" ● コンテンツの一部分をリクエストできる ● リクエストヘッダーにRange:フィールド ● 206 Partial Contentのレスポンス Range: bytes=1000­
  13. 13. 使用例 ● ダウンローダー ● 分割ダウンロード ● リジューム ● 2chブラウザ(追記型データ)
  14. 14. ただ ● バイト数指定なので、本文抽出には使いづらい ● やっぱりDOMとかでやりたい 新しい指定方法が必要
  15. 15. メールヘッダを見てみる X­Moe: CCSakura/Sakura (萌え属性表明) ● 1990年代に一部で流行 (通信用語の基礎知識 http://www.wdic.org/w/WDIC/X-Moe より)
  16. 16. X-*フィールド ● 勝手拡張フィールド ● X-Mailer:とかX-ML-Name:とかはメジャー
  17. 17. HTTPのレスポンスヘッダでも X­Powered­By: Phusion Passenger  (mod_rails/mod_rack) 2.2.5 ● Passengerで
  18. 18. X­hacker: If you're reading this,  you should visit automattic.com/  jobs and apply to join the fun,   mention this header. ● WordPress.comのHTTPレスポンスヘッダー ● X-*:フィールドを使ってリクルート ※ネタ元 http://www.1x1.jp/blog/2009/09/wordpress_http_heade.html
  19. 19. 以上をふまえて、X-*拡張を使って X­Path: というHTTPリクエストヘッダーを提唱します
  20. 20. XPathで指定 ● X-Path:フィールドでXPathを指定 ● HTMLのうち、その部分だけ返ってくる (リクエスト) X­Path: //p[@id="hello"] (レスポンス) <p id="hello">〜</p> ※厳密にはこの指定じゃNGみたいですが
  21. 21. さっそくサーバーを実装してみる WEBrickなら Rubyで簡単に 拡張できて 実験に便利 ですね
  22. 22. 作りました ● 名付けて WEBrick-DOM (ウェブリック・ドム) ←これはリックドム
  23. 23. サーバーのサンプル (WEBrick) require 'webrick' srv = WEBrick::HTTPServer.new({   :DocumentRoot => './',   :BindAddress => '127.0.0.1',   :Port => 20080 }) trap('INT'){ srv.shutdown } srv.start ※ほぼRubyのリファレンスマニュアルから
  24. 24. サーバーのサンプル (WEBrick-DOM) require 'webrick/dom' srv = WEBrick::HTTPServer.new({   :DocumentRoot => './',   :BindAddress => '127.0.0.1',   :Port => 20080 }) trap('INT'){ srv.shutdown } srv.start
  25. 25. やってること ● WEBrickのDefaultFileHandlerをラップす るサブクラスを作る ● X-Path:フィールドがあればnokogiriで処理 ● それ以外はsuper丸投げ ● FileHandler.add_handler()で、.html と.htmの ハンドラーに指定 ● 50行ぐらいのごく簡単なコードです ※参考 http://jp.rubyist.net/magazine/?0002-WEBrickProxy
  26. 26. 問題点 ※作ってから気付いた
  27. 27. わざわざ 広告カットの APIを 自分で提供する サイトって ないだろJK
  28. 28. それ以前に これキャッシュ効かなくない?
  29. 29. エコじゃない! MOTTAINAI!
  30. 30. 余った時間で DEMO

×