Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
職場が認証付きプロキシを越えないと外に出ていけない環境なのだけど、ツールによって認証付きプロキシのための設定が面倒だったり、そもそも無理だったりして何かとうっとうしいので、リクエストに認証情報を付加するプロキシを書いた。 こいつをローカルで動かして、各ツールのプロキシには localhost:1080 を指定する。 squidとかでできるでしょという話もあるんだけど、squidの設定ファイル書くよりコード書くほうが楽しいし。 package main import ( "encoding/base64" "fmt" "io" "log" "net" "net/http" "net/url" ) var ( port = 1080 proxyHost = "proxy.example.com:3128" proxyUser = "iwata" proxyPass = "mypassword"
今回実現する機能 指定されたポート(8080)でコネクションの受け入れを開始する クライアントからHTTP通信でリクエストを受け取る リクエストヘッダで送られてきたURLのパスを解析する 解析したURLのパターンによって、そのパターンにバンドルした処理を呼びだす(リクエストハンドラ) =>本来Webアプリを作成する場合は、この処理を高度化し、別のファイルやモジュールに切り出す 呼び出された処理を行う =>今回は単純にHTMLをレスポンスとして返す ファイルの構成 // クライアントからのレスポンスを受け取り、適切なファイルに処理を依頼する // 必要なファイルを読み込み var http = require('http'); var url = require('url'); var fs = require('fs'); var server = http.createServer();
C++ Advent Calendar 2015も21日目 もうすぐ メリー・クリスマスですね。 昨日は Iさんの C++ AMPでGPGPU!でした わたしは残念ながらDirectX11が使えるPCを持っていないので AMPは試せないのですが GPGPUは楽しいですね わたしは、boost.asioのまとめです。 はじめに なぜ boost.Asioが必要だったか お仕事の関係で、お客さんにC++で高速なステートフルサーバを作って欲しい C++で! という要望が来たので。 boostに頼る理由 C++11、14 と、標準ライブラリが増え、threadも使えるようになった が、未だネットワーク通信関連は標準ライブラリになっていないため boost.Asioを採用した boost.Asioはネットワークに特化したライブラリではなく、非同期I/Oのライブラリで タイマー、ファイルの非同期等、色
HTTP通信をするプログラムを書いてみました。WinScok2とBoost.Asioでそれぞれ書いてみました。簡単にするためにTCPで同期通信するプログラムです。WinSockの参考に「猫でもわかるWindowsプログラミング」を使ったのでアクセスするページがそうなっていますが、特にそれ以上の意味はありません。 WinSock //WinSockでHTTP通信を行う #include <WinSock2.h> #include <iostream> #include <string> using namespace std; int main() { WSADATA wsadata;//ソケット情報を格納する構造体 //WinSockの初期化 if (WSAStartup(MAKEWORD(2, 2), &wsadata) != 0) { cout << "winsock startup
github.com おそらく先行実装は python で書かれたこれです。 curl にはウェブサイトの応答時間を計測する機能が搭載されており、このツールではそれを利用して出力結果をグラフィカルに表示させています。単なる curl のラッパーのようなツールなのですが、見た目がリッチになるのに加えて、単一ファイルで実行でき python のバージョンに影響されないような工夫がされているのが、受けているポイントのような気がします。 このツールを見たとき「Go で書いてみるの良さそう!(この手のツールで単一バイナリになるのは嬉しいですよね)」と思い、休憩時間やお昼休みなどにちまちま書いていたら、二日前に先を越されてしまいました(そりゃそうですよね。なんでもスピードが大事だと痛感)。 github.com また、ついこの間まで 800 Stars くらいだったのですが、ここ1週間で爆発的に伸びて
プレゼンテーション:HTTPプロクシライブラリproxy2の設計と実装 | PyCon JP 2016 in TOKYO PyCon JP 2016で以前作ったPython製HTTPプロクシライブラリについて発表した。 HTTPプロクシライブラリproxy2の設計と実装 from inaz2 きちんとPython 3対応にした状態で発表できなかったのが少し心残りではあるが、以前の発表であまり触れられなかった実装面のあれこれについてまとめることができてよかった。 また、Accept-Encodingの扱いが雑で、うまくいかないケースが出てきていることに気づけたという点でも、よい機会だった。 スタッフ、参加者の方とも交流することができ、楽しいイベントでした。 PyCon JPスタッフのみなさま、ありがとうございました。
チーム名「Anago」で @iwiwi, @zuisou, @imos の 3 人で ISUCON6 予選に参加し,幸運にも 1 日目 3 位で通過することができました.@iwiwi が「ISUCON に C++ で参加したい!」と言っており,それを全力バックアップをしようと思ったのがきっかけの参加でした. 前日までにやったこと C++ で全てを書けば最速になるのは自明なのですが,C++ は参考実装として与えられていないだけではなく,HTTP サーバを書くことを想定していない言語のため準備には苦労しました. C++ で HTTP サーバを書く方法は,既存の Web サーバ (e.g., nginx, Apache, H2O) のプラグインを書いて実装するか,FastCGI として実装するか,フルスクラッチで書くかの選択肢が考えられますが,プロセス間通信を避けて爆速にしたかったので,事前に
皆さんこんにちは お元気ですか。私は燃え尽きました。 今日はCasablancaのインストール記事を記載します。 Casablancaとは マイクロソフトのC++ REST SDKで、クラウドベースのクライアント・サーバーの APIデザインだそうな。 C++ REST SDK (codename "Casablanca") - Home 内容にはHTTP Client/Server, JSON, URL ,Asynchronus Stream,WebSockets,OAuthが搭載されているそうな。 因みにマイクロソフトだからといって、WindowsだけでなくLinuxやMacでも使えます。 因みに僕はMacOSです。 Install 必要なもの brew install cmake git openssl boost 必要なものがインストールされているのを確認してから git clone
Boost.Asio だけだとしんどそうだったので netlib でちょっと書いてみました。 [環境] netlib 0.9.5 Boost 1.53.0 Visual Studio 2010 [ソース] #include <boost/network/include/http/server.hpp> struct hello_world{ typedef boost::network::http::server<hello_world> server; void operator ()(server::request const &request, server::response &response){ namespace http = boost::network::http; typedef server::string_type string; string ip = http:
I think I just made go-github 4x faster in 4 lines of code (and 4hrs). Always make sure you are reusing connections! https://t.co/ORCv1a4prv — Filippo Valsorda (@FiloSottile) March 27, 2016 go-github という、Google が開発している GitHub API ライブラリがあるのですが、今回 filosottile さんがたった4行のコードで実行速度を4倍にするという pull-request を書きました。 いったいどういう事かというと、golang の json.Decoder を使って http.Response.Body から JSON を読み取ると最後の改行(EOF)が読み込まれずに残
デブサミ2016登壇資料。サーバ技術の評価軸、HTTP/2、サーバプッシュ、HTTPS化の負荷、Brotli、サーバ内スクリプティングを俯瞰Read less
JavaのHTTPクライアントはHttpClientやJersey Client等、いつも何を使うか迷います。 google-http-java-clientなんかも良さそうだし。この辺は同じような迷いの中、色々と紹介されています。 d.hatena.ne.jp vividcode.hatenablog.com で、英語でググっていたらUnirestというのがありました。 Unirest for Java - Simplified, lightweight HTTP Request Library 色々な言語に対応しているようで、Java以外にRuby,PHP,.NET,Python,Objective-C,Nodeとあるようです。 Windows 8っていう箱が.NETと何が違うのかちょっと謎ですが…(^^; で、このライブラリはmashape.comというAPIのマーケットプレース的な
/etc/hosts を書き換えなくても気軽に特定のサーバに通信できるプロキシが欲しいと思ったんですが、意外にちょうど良いのがなかったので自作しました。 <追記> proxy.pac で十分ではという意見をブコメでいただいたんですが、やりたいのは「本番系リバースプロキシやロードバランサを通さずに特定のサーバだけに任意のタイミングでアクセスする手段」を、システムファイル書き換えを伴わずに行う方法なので今回のコンセプトとは少しばかり違うのです・・・。 </追記> るびまに Webrick でプロキシサーバの記事がある #!/usr/bin/env ruby require 'webrick' require 'webrick/httpproxy' # プロキシサーバオブジェクトを作る s = WEBrick::HTTPProxyServer.new({}) # SIGINT を捕捉する。 Si
import com.squareup.okhttp.*; import java.io.IOException; public class HttpReqTest { public static void main(String args[]) { OkHttpClient client = new OkHttpClient(); ------(1) Request request = new Request.Builder() .url("http://example.com").build(); ------(2) Call call = client.newCall(request); -----(3) calll.enquene(new Callback() { @Override public void onFailure(Request request, IOExceptio
パーセントエンコードについていろいろ勉強したばかりのクウは、ユウヤに対して、HTTPでのパーセントエンコードについて熱弁を振るっていた。すると、その話に興味を持ったナツさんが話し掛けてきた。 ナツ 「なになに? なんか面白そうじゃん?」 ユウヤ 「興味ないっていってるんですけどね……。ナツさん、こいつ引き取ってやってくださいよー」 クウ 「最近HTTPとか勉強してるんすよ。いま、パーセントエンコードについて語ってるとこっす!」 ナツ 「おー。なるほどなるほど」 クウ 「やっぱ基礎は大事すね! 勉強してると実は意外といろいろ知らなかったなーって思って」 ナツ 「うんうん。そういうとこ把握しとくのは大事だよね。感心、感心♪」 ナツさんは、開発チームのリーダーで、分からないことがあると丁寧に教えてくれる、クウの尊敬する人の1人である。 クウ 「まだ基本でつまずいているようじゃ、まだまだナツさんの
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く