外部サービスとのインテグレーションをWebAPI経由で行う場合、何かしらのHTTPクライアントを利用しますよね。 細かい通信を繰り返す行う場合は、毎回コネクションを繋げて切ってを繰り返すよりもKeep-Aliveを使った実装にすると速くなります。 この記事ではRubyに標準で備わっているNet::HTTPでKeep-Aliveを利用する方法をサンプルを使って簡単に説明します(接続先のサーバーでKeep-Aliveが有効になっていることが前提です)。 HTTPのコネクションをプールする こんな感じで接続先URLのホスト、ポート、プロトコルをキーにしたコネクションプールをさっくりと準備します。 class HTTPConnectionPool def initialize @connections = {} end def terminate @connections.values.each{
簡単な HTTP サーバーを実装することで HTTP を学ぶ。 ローカルの HTML ファイルをブラウザから開けるようになるのを目指す。 実装はこちら 免責事項 あくまで車輪の再発明による HTTP および HTTP サーバーのローレベルなところを勉強するのが目的です。 セキュリティなどの考慮は一切していないので、ここの実装を使ったらいろいろ問題が発生すること必至です(ディレクトリトラバーサルとか)。 ここでの実装を利用したことで発生する問題に対して、当方は一切責任を負えませんのであしからず(利用するとは思えないけど)。 まずはソケット通信から HTTP は TCP/IP の上で動作するプロトコルなので、まずはソケット通信から始める。 package gl8080.http; import java.io.BufferedReader; import java.io.InputStream
JSONを返すRESTful APIを作ることになったので諸々の復習を兼ねてMaking a RESTful JSON API in Goを読む。そのままだとつまらないのでところどころ微妙にアレンジしながらやってみる。 A Basic Web Server RESTfulなAPI Serverを作る場合、当然の事ながらWeb Serverとして提供することになる。周知の通り、Goの場合はnet/httpを使って簡単にWeb Server Applicationを作ることが出来る。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 package main import ( "fmt" "html" "log" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r
Goは標準パッケージが充実しているのが特徴の1つだが、net/httpも例外ではなくHTTPクライアントの処理が簡単に書ける GET 例えばGETでHTTPリクエストを行う処理を実装したい場合、3通りの方法がある http.Get 関数を実行する Client 型の Get(url) メソッドを実行する Client 型の Do(request) メソッドを実行する 単純なアクセスなら1で良い 一番単純な http.Get(url)によるGET url.Values でクエリを組み立てて、Get関数で指定したURLの末尾にEncode結果をパラメータとして付加すればOK url.Valuesはクエリパラメータをkey-value形式で保持する型。ペアを追加するAddや上書きするSet等のメソッドが提供されている 組み立てたクエリはEncodeメソッドを呼び出す事で?key1=value1&
第1回のアジェンダ編では、高速化に関わる要因と解決策の全体像を紹介しました。 アジェンダ編にもかかわらず多くのブックマーク、シェアをいただきありがとうございます! 余談ですが、記事にブックマーク、シェアをしていただくと、このブログでは執筆者に経験値がたまるような仕組みになっています。 たくさん経験値を貯めると四半期ごとに良いことがあるかもしれないので、気が向いたらこの他の執筆者の記事もシェアしていただけるとうれしいです。 言葉にせずとも、わかっていただけると思いますが、この記事も・・・ね? 右上にあるボタンをちょちょっと。 本題 余談はさておき、本題に入りましょう。 今回は「無駄なリクエストとレスポンスの削減」に視点を置き、解決策について調査、計測して紹介してみたいと思います。 と思ったのですが、長くなりすぎたため、まずは「検証ツールとHTTPについて」紹介することにしました。 この記事の
gzip 圧縮とはgzip 圧縮の利用可否を通知するgzip 圧縮の対象コンポーネントgzip 圧縮を有効にする方法mod_deflate モジュールを利用するmod_rewrite モジュールを利用するgzip 圧縮ファイルの作り方gzip 圧縮ファイルの作成を自動化するgzip 圧縮されているか確認する方法まとめgzip 圧縮とは gzip 圧縮とは、ファイルサイズを小さくする圧縮方法の1つです。gzip 圧縮を取り入れることで、ユーザと Web サーバ間でやりとりされている HTML ドキュメントのファイルサイズが小さくなり、転送速度が向上します。 gzip 圧縮の特性として、ファイル内に同じ文字列が多いほど圧縮率が高まります。HTML ドキュメントファイルは、空白、タグ、スタイルなど同じ文字列が多く含まれているため、高い圧縮率を得られます。 ただし、gzip 圧縮の高い圧縮率を得る
[1] SuikaWiki (すいかうぃき) は、 Wiki です。 SuikaWiki サイト紹介[5] ここは、 SuikaWiki のメインウィキです。 https://suikawiki.org/: SuikaWiki 総合トップページです。https://wiki.suikawiki.org/: SuikaWiki のメインウィキです。https://world.suikawiki.org/: 世界のいろいろな場所の情報をまとめたサイトです。https://data.suikawiki.org/: 数、日時などの情報サイトです。https://chars.suikawiki.org/: 文字の符号化やエスケープ、各種特性などの情報サイトです。https://antenna.suikawiki.org/: 他の Webサイトの更新情報の集まるアンテナサイトです。主な記事[2] 内容
最近のモダンなWebブラウザがサポートしている、セキュリティに関連しそうな X- なHTTPレスポンスヘッダをまとめてみました。それ以外にもあったら教えてください。 X-XSS-Protection 0:XSSフィルタを無効にする。 1:XSSフィルタを有効にする。 XSSフィルタを有効にすることでエンドユーザがXSSの被害にあう可能性が低減するが、まれに誤検知することで画面の表示が乱れることもある。IE8+、Safari、Chrome(多分) で有効。IEでは「X-XSS-Protection: 1; mode=block」という指定も可能。 2008/7/2 - IE8 Security Part IV: The XSS FilterBug 27312 – [XSSAuditor] Add support for header X-XSS-Protection X-Content-Ty
Web APIを開発していると、HTTPのヘッダについてRFCにおける規約を確認しなきゃいけない場面がたまにあるので、今回調べたことをまとめた。 HTTP/1.1のRFC HTTP/1.1のRFCといえば、長らくRFC2616であったが、2014年にRFC7230〜7239が発行され、2616は廃止された。 RFC2616 ハイパーテキスト転送プロトコル -- HTTP/1.1 RFC7230〜RFC2739 HTTP/1.1 — RFC 7230 〜 7235 — 日本語訳 両者の変更点については、RFC 723xの付録に記述されているので参照のこと。Content-MD5が廃止されたり、ちょいちょい面白い。文章としても723xの方が分かりやすくなっているので、一度目を通しておくことをお勧めする。 HTTP/1.1 が更新された | The Long Wait あたらしいHTTPの話をし
PerlのLWP::UserAgentでニコニコAPIを叩いてみる。 2014-08-26 : 修正 ログインする https://secure.nicovideo.jp/secure/login?site=niconicoにメールアドレス・パスワードをPOSTします。以下必要なPOSTパラメータ。 mail_tel ログインに用いるメールアドレス password ログインに用いるパスワード マイリストから動画IDを取得 http://www.nicovideo.jp/mylist/<マイリストID>?rss=2.0にGETします。XML(RSS)が返ってくるので、パースして動画IDを取得します。XML::Simpleなんかを使うとカンタン。 動画情報を取得 http://ext.nicovideo.jp/api/getthumbinfo/<動画ID>にGETして動画情報(タイトルとかサ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く