Web標準のHTTPクライアントfetch()でストリーミングしながらアップロードできるようになる。
Web標準のHTTPクライアントfetch()でストリーミングしながらアップロードできるようになる。
github.com 会社の運用メンバーと色々議論していた中で、「カジュアルにWebサーバへのDoSみたいなアクセスが来た時に検知して制御したいよねー」という話が上がったので、http-dos-detectorというnginxでもapacheでも使えるWebサーバ拡張をmrubyで書きました。 もちろんmrubyなので、mod_mrubyとngx_mrubyを使っています。ので、Rubyコードはそのまま同じコードをどちらのミドルウェアでも使えます。mod_mrubyとngx_mrubyを使えば、ちょっとしたWebサーバの拡張は両方で同じ実装に落とし込めるので便利ですね。 使い方 例の如く、GitHubのREADME通りにインストールして下さい。Rubyのコードはmod_mrubyでもngx_mrubyでも有効なので、そのコードを読み込む設定をそれぞれ以下のように記述するだけでよいです。 a
第3会FRESH勉強会で発表予定のスライド。HTTPについて詳しくない人のために HTTPの概要から先日RFC化されたHTTP/2の新機能、使いどころを解説します。
HTTP/2 は「WEBの高速化、通信量の削減、安全な接続」を目的とした、WEB通信プロトコルの最新バージョンです。2015年2月17日に、IETFの運営グループにより正式な仕様として承認されました。これまで長い間 HTTP/1.1 が使われていましたが、16年ぶりのバージョンアップになります。そこで今回は、HTTP/2 の実装として有名な Nghttp2 の nghttpd を使って、HTTP/2 WEBサーバを設定してみました。 (更新)2017年5月14日 各種インストール手順を最新版に更新しました。 HTTP/2 の特徴 HTTP/2 には以下の特徴があります。 バイナリフレームの採用 ストリームによる多重化 ヘッダー圧縮 サーバープッシュ ストリームの優先度 HTTP/2 入門 - Yahoo! JAPAN Tech Blog より引用 HTTP/1.1 では、同時に処理できるリ
概略 H2O にちょっと手を加えて、爆速 (希望的観測) な OpenStreetMap のタイルサーバを作りました。 背景 私は今、おしごとで OpenStreetmap (以下 OSM) の地図を使ったサービスを作っている。 ところで、OSM は規約上、 商用アプリとかでは http://openstreetmap.org でホストされている地図に直接アクセスしないでね。 というタテマエになっているので、真面目にやるなら、自前でタイルサーバを立てなければいけない。 ちなみに、「タイルサーバ」というのは 地図のデータ (今の話では OSM のサイトからダウンロードする) をデータベースに落として 細かく分けた領域ごとに .png 画像にお絵かきして HTTP(S) でサーブする というお仕事を担う、用途特化した HTTP サーバのことだ。 モチベーション 私は真面目なので (本当だよ)
Requests: 人間のためのHTTP¶ リリース v1.0.4. (Installation) Requestsは、人が使いやすいように設計されていて、Pythonで書かれている Apache2 Licensed ベースのHTTPライブラリです。 Pythonの標準の urllib2 モジュールは、必要とされるほとんどのHTTPの機能を備えていますが、APIがまともに 使えません 。 様々なウェブ用途に合わせて作られていて、何回も修正されてきました。 簡単なことを行う(メソッドの上書きでさえ)のに、 かなり の量の作業が必要になります。 それはPython的ではないので、そんなに複雑にするべきではありません。 >>> r = requests.get('https://api.github.com/user', auth=('user', 'pass')) >>> r.status_c
Web+DB PRESSのvol.56にあったid:lestrratさんの「AnyEventでイベント駆動プログラミング」を読んで、イベント駆動プログラミングに入門してみました。 間違っている点もあるかと思うのでご指摘頂けると幸いです。 イベント駆動プログラミングとは? 処理を記述された順番に実行するのではなく、「イベントループ」と呼ばれる処理のタイミングを管理する担当者に、「したい処理」と「処理をしたいタイミング」を伝えることにより、「イベントループ」が処理をお願いしたタイミングで「したい処理」を実行してくれるというものです。 何がうれしいのか。 強力的マルチタスキング。 1つのプロセスで並列処理を行う。 あるウェブページのRSS「取得」し「解析」する場合、RSSを「解析」する処理はRSSを「取得」するまで行うことが出来ません。ですが、RSSを取得する処理は時間が掛かるので、それを待って
SSEとは Server-Sent Events 常時接続系API JavaScriptからはnew EventSource(url);で使う JavaScript APIと通信プロトコルが合わさったもの プロトコルはHTTPのContent-type: application/octet-stream;、Transfer-Encoding: chunked;
任意のテキストをURLで使えるように変換してリンクを作成するって言う作業をしてて、どの文字を許可すれば安全かわからなかったので色々調べてみたわけだが。手抜き検索して出てきた情報を鵜呑みにしたらはまった。 情報はこんなの。 以下の文字はURLに使えないそうです。 \”‘|*`^><)(}{][ 実際には、#でも%でもポストエラーが出るし、’や()は使える。 ていうか、そもそも使用目的があって初めてその目的でこの文字が使えるかどうかが決まるわけなので、「使える」「使えない」で出てきた情報がそのまま役に立つわけないじゃんね。迂闊でした。 想定している使用方法は、Amazonの商品ページのようにURL内に商品名を含めるというもの。例えばこんな感じ。 http://www.example.com/こんにちは!こんにちは!/product/000123 RFCを読んだわけではないけれども、それに基づい
Una delle esigenze più sentite da tutte quelle attività commerciali che desiderano sfruttare le potenzialità del web è sicuramente quella di creare una rivista digitale, che promuova in maniera efficace ed elegante i prodotti o i servizi offerti dall’azienda. L’idea che sta alla base di questa scelta è semplice e intelligente: al contrario della stampa di una pubblicazione cartacea, fare rivista e
先日、PHP5.5.0がリリースされましたね。さっそくビルドしてニヨニヨしているところです。 5.5の新機能と言えばGeneratorやfinallyなどですが、個人的に注目しているのがcURLの機能強化です。詳しい内容がまだ公式ドキュメントに書かれていないのですが、結構おもしろいので紹介してみます。 cURLとは何か かーると発音する人が多いようです。C言語で書かれたHTTPのclientライブラリであり、WebAPIやスクレイピング、クローラなどを扱うときに非常に便利です。PHP版のバインディングは標準でPHP本体にバンドルされているため、大抵のレンタルサーバーでも使えるようになっています。 ただ、オリジナルのlibcurlそのままの関数風インターフェースを踏襲しており、オブジェクト指向型のラッパーなどは用意されていないため、あまり使いやすくはありません。が、並列リクエストが可能であっ
寺田さんのブログエントリ「他人のCookieを操作する」には、通信路上の攻撃者がいる場合は、SSLを使っても、Cookieの盗聴を防ぐことはできるが、Cookieの改変を防ぐことはできないと指摘されています。いかにも寺田さんらしい簡にして要を得たエントリで、これに付け加えることはあまりないのですが、残念ながらまだ読んでいない人が多そうだと言うことと、より広い読者に向けて具体的に説明した方がよいだろうと考えました。 そこで、通信路上に攻撃者がいる典型例として、公衆無線LANの偽AP(アクセスポイント)があるケースを題材として、「HTTPSを使ってもCookieの改変は防げない」ことを説明します(Secure属性使うと盗聴は防げますが、改変は防げません)。長いエントリなので結論を先に書いておきます。 Secure属性がないCookieはHTTPSでも盗聴できる Cookieの改変についてはSe
Supervisor(d) は daemontools ライクなプロセス死活監視用のスーパーサーバです。 XML-RPCを使ってプロセス情報の取得やプロセスの操作もおこなえます。 今回はジョブキューサーバであるところの Celery(d) をsupervisord上で管理するまでを 紹介します。 supervisordの設定 インストールは easy_install 経由でおこないます。 バージョンは3.0a8です。 設定ファイル作成まで。 $ easy_install -U supervisor $ echo_supervisord_conf > /etc/supervisord.conf $ mkdir /etc/supervisord ;; 設定用 必要に応じて $ mkdir /var/log/supervisord ;; ログ用 必要に応じて $ vim /etc/supervi
HTTPステータスコードの302はMoved Temporarilyだと思っていたのですが、RFC 2616(Hypertext Transfer Protocol — HTTP/1.1)で『302 Found』に改められていました。そして、RFC 2616では『307 Temporary Redirect』というステータスコードが追加されていました。 『302 Found』と『303 See Other』と『307 Temporary Redirect』の違いについて気になったので、まとめてみました。 元々、ステータスコード302はMoved Temporarilyでした。『302 Moved Temporarily』とは、「指定したURIのリソースは、一時的に別のURIに存在しているので、そちらを参照してください」と言う意味です。もちろん一時的に別のURIに存在しているため、クライアン
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 の使われ方が大きく変わり、 求められて
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く