Blog Archives

tornadoでWebSocketサーバを動かしてみる

Tornado で HTTP サーバを用意 HTML ファイルの JS が WebSocket サーバと通信 ブラウザでこの HTML ファイルを表示。 WebSocket クライアントが WebSocket サーバにメッセージを送信すると、HTML が書き換わる というようなシナリオを実現するシンプルなデモを作ってみました。 WebSocket Server サーバには表題の通り Python Tornado を利用します。 パッケージのインストール Tornado のビルドには Python のヘッダーファイルが必要です。 以下は RedHat 系でのインストール例です。 コード クラス Tornado.websocket.WebSocketHandler を継承して WebSocket サーバを実装します。 WebSocket

Tagged with: ,
Posted in python, web

[nginx]ホスト名に応じてレスポンスするファイルを振り分ける

nginx には ngx_http_map_module というハッシュテーブルを操作するモジュールがあり、リクエストヘッダーのホストやユーザーエージェントをキーと見立てて値を振り分けることができる。 このモジュールを使うと、複数のサブドメインをさばいていている時に、robots.txt のような各ドメインに必要なファイルをサブドメインに応じて振り分ける。 ngx_http_map_module の使い方 単純な例 まずは map を使った単純な例から これを Python っぽく置き換えると というように key-value ペアをまず定義し、リクエスト処理時に というようにリクエストヘッダーの http_user_agent をキーに値を取得する。 map の発展的な使い方 重複定義 というように、同じ変数($http_user_agent) に対して複数の map 変数($foo, $bar) を定義できる Key-Valueをファイル管理 Key-Value のペアはファイル管理して include しても良い パターンマッチング map の キーのパターンマッチングは prefix

Tagged with: ,
Posted in web

cURLの出力結果をカスタマイズする

Chrome の Developer Tools→Network→Timing にはリソース取得の各ステップにかかる時間が俯瞰できるようになっていて、このデータへアクセスする JavaScript API も用意されている。 諸般の事情により、これと同等のデータを cURL を使ってコマンドラインから取得する方法をメモ。 というか、必要なことは次のブログにまとめられている Timing Details With cURL https://josephscott.org/archives/2011/10/timing-details-with-curl/ cURL デフォルトの出力 cURL デフォルトの表示は以下のようになる(レスポンスデータは -o オプションで /dev/null に捨てる) プログレスバーは -s/–silent オプションをつけると無効化できる。 出力のカスタマイズ 本題の出力メッセージのカスタマイズを行うには、フォーマットを記述したファイルを用意して -w/–write-out @format-file-name というオプションをつければ良い。 フォーマットの記述について 送受信の転送量やらHTTPレスポンスステータスやリダイレクト情報などいろいろな情報をとれるのだけど、Chrome にちかい指標は以下 time_namelookup : DNS Lookup

Tagged with: , , , , ,
Posted in aws, web

VarnishをHTTP サーバとして使ってみる

特定の URL へのリクエストに対して、Varnish が HTTP ステータス 200 で固定メッセージを返す設定を Varnish 3/4 向けにメモ。 これを実現するための基本的なアイデアは、HTTP リクエストのエラー処理で利用することの多いキーワード error(Varnish 3)/synth(Varnish 4) を 200番台のような正常系 HTTP レスポンスステータスでも活用すること。 ゴール http://HOST/ping で始まる URL へのリクエストに対して、 200 番で Pong のメッセージを返す http://HOST/wrong-target で始まる URL へのリクエストに対して、 301 番で http://www.example.com/correct-target へリダイレクトする Varnish 3 向け設定

Tagged with: , ,
Posted in middleware, web

curl –resolveでコマンドラインから名前解決する

HTTP サーバに名前ベースのバーチャルホスト設定がされていて、設定されているホスト名でアクセスしたい場合は Host ヘッダーを渡せばOK IP アドレス 10.0.1.2 に http://www.example.com のホストでアクセスするときには以下のようにする。 curl wget telnet リクエストURLのホストをゴニョゴニョする処理が入っている場合、上の手順ではまずい。 そのため hosts ファイルを書き換えて、ローカルで名前解決させて本来のホスト名でアクセスすることが多々ある。 curl は、このような用途のために –resolve オプションが用意されている。 たとえば hosts ファイルに と書いて、 $ curl http://www.example.com とアクセスするかわりに とすればよい。 –resolve <host:port:address> Provide a custom address for a specific host and

Tagged with: ,
Posted in web

HTTPでエンコーディングしていないコンテンツを要求

Chrome の場合、 リクエストヘッダーの Accept-encoding は accept-encoding: gzip,deflate,sdch というようになっていて、サーバには圧縮コンテンツを要求している 深淵な理由により、Web サーバにエンコーディングしていないコンテンツを要求したい場合は、 “Accept-Encoding” の値を “identity” にするか、ブランクにすると良い。 RFC 2616 : Hypertext Transfer Protocol — HTTP/1.1 を確認すると 3.5 Content Codings … identity The default (identity) encoding; the use of no transformation whatsoever. This content-coding

Tagged with: , ,
Posted in web

レスポンスヘッダーのExpires: -1って何?

http://www.amazon.co.jp のレスポンスヘッダーを眺めていると Expires: -1 という不思議な Expire Date が設定されていた。 意味を調べてみた。 Expires レスポンスヘッダー Expires はキャッシュの期限切れ日時を指定 Expires ヘッダーはコンテンツキャッシュの期限をコントロールし、 HTTP 1.0 から存在している。 RFC 2616 “Hypertext Transfer Protocol — HTTP/1.1” では次のように書かれている The Expires entity-header field gives the date/time after which the response is considered stale.

Tagged with: , , ,
Posted in web
Archives
  • RT @__apf__: How to write a research paper: a guide for software engineers & practitioners. docs.google.com/presentation/d… /cc @inwyrd 4 months ago
  • RT @HayatoChiba: 昔、自然と対話しながら数学に打ち込んだら何かを悟れるのではと思いたち、専門書1つだけ持ってパワースポットで名高い奈良の山奥に1週間籠ったことがある。しかし泊まった民宿にドカベンが全巻揃っていたため、水島新司と対話しただけで1週間過ぎた。 それ… 4 months ago
  • RT @googlecloud: Ever wonder what underwater fiber optic internet cables look like? Look no further than this deep dive w/ @NatAndLo: https… 4 months ago
  • @ijin UTC+01:00 な時間帯で生活しています、、、 10 months ago
  • RT @mattcutts: Google's world-class Site Reliability Engineering team wrote a new book: amazon.com/Site-Reliabili… It's about managing produc… 1 year ago