https://gocon.jp/2023/sessions/A13-S/ https://github.com/k1LoW/httpstub https://github.com/k1LoW/grpcstub https://github.com/k1LoW/smtptest https://github.com/k1LoW/runn
![net/http/httptest.Server のアプローチをテスト戦略に活用する / Go Conference 2023](https://cdn-ak-scissors.b.st-hatena.com/image/square/5de0e2ed4e6cdbb3486ea1ff8b34dd9cee7920c0/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Fde41ac3bf8e241e78bcf0c21b0c713c0%2Fslide_0.jpg%3F25857497)
Workgroup: HTTP Internet-Draft: draft-ietf-httpbis-bcp56bis Obsoletes: 3205 (if approved) Published: 22 March 2022 Intended Status: Best Current Practice Expires: 23 September 2022 Author: Building Protocols with HTTP Abstract Applications often use HTTP as a substrate to create HTTP-based APIs. This document specifies best practices for writing specifications that use HTTP to define new applicati
はじめに HTTPリクエストには冪等なものと非冪等なものがあります。 仕様上、GETやOPTIONSは冪等であり、同じリクエストであれば何度行っても問題ありません。そのため通信上エラーが起こっても自動的にリトライすることが出来ます。 一方で、POSTリクエストは冪等ではありません。同じリクエストでも複数回行うと、結果が変わってしまいます。投稿や課金APIであれば2重に処理されてしまいます。 POSTリクエスト中にタイムアウトが発生した時に、サーバに処理される前にタイムアウトしたのか、サーバが処理したあとにレスポンスを返そうとしたところでタイムアウトしたのかクライアントは区別できません。そのため、POSTリクエストを一概にリトライすることは出来ません。 そこで、リトライにより複数回同じPOSTリクエストを受け取っても、同じものと識別できるように識別子をHTTPリクエストに付加できるようにする
[追記] 2021年10月時点の変更点について新しく記事を書きました asnokaze.hatenablog.com == もくじ HTTP/2の改定作業 修正点 優先度制御について TLS1.3および0-RTT GREASEのコードポイントの予約 疑似ヘッダの扱い h2cの削除 セマンティクス仕様への参照 そのた参照の更新 security considerations の追記 HTTP/2の改定作業 HTTP/2の仕様は2015年に「RFC7540 Hypertext Transfer Protocol Version 2 (HTTP/2)」として標準化されています。 RFCは公開されたあとに、エラッタが見つかることがあります。このようなエラッタを修正するために、新しくRFCを出し直すということが行われます。 HTTP/2においてもいくつかのエラッタが公開されています (参考リンク)。
仕事で Netlify にデプロイしたSPAの読み込みが遅いので原因を調査してほしい、という依頼を受けてウェブパフォーマンス調査を行った。顧客から許可をもらって、この記事ではNetlifyに対してどういう調査をしたのかを書く。 結論だけをまず書くと、NetlifyのCDNのファイル配信パフォーマンスは日本国内からだと非常に悪い。パフォーマンスを改善させるためには、Netlifyに直接アクセスさせるのではなく、前段に他のCDNやキャッシュサーバを挟んだりするほうがいいだろう。 調査の前提 日本国内からのみの調査 サイトには静的なファイルをデプロイしているのみ 該当するNetlifyにデプロイしたSPAをブラウザで試しに開いてみると、確かに初回の読み込みのパフォーマンスがめちゃくちゃ悪い。 Chrome Devtoolsを開いてネットワークタブでどういうふうにリソースの読み込みを行っているのか
Web標準のHTTPクライアントfetch()でストリーミングしながらアップロードできるようになる。
LINEの技術的負債を解消している話 ─ HTTP/2へのプロトコル変更やデータ同期の最適化での改善 サービス開始から10年近くがたったLINEでは、次の10年のため技術的な負債を解消・改善する取り組みをプロジェクトで行っています。 通信プロトコルをSPDYからHTTP/2に移行 抽象化レイヤーを設置してプロトコル移行のリスクを低減 Long PollingをPushへと切り替えて通信量を最適化 アプリの利用状況に応じて最適なデータ同期の方法を アーキテクチャの改善でアプリの信頼性や拡張性が向上 長い歴史を持つアプリには「技術的負債をどのように解消するか」という課題が常につきまといます。2011年にサービスを開始したコミュニケーションアプリ「LINE」においても同様で、多機能化や、開発・運用の長期化に伴い、いくつもの負債が発生していました。 この課題を解決するため、LINE株式会社では「『
昨夜Github Trendsを眺めていたら、jsonboxというリポジトリを見つけ、面白そうだったので試してみました。 そもそもjsonbox jsonboxは公開された無料のJSONストレージです。制限事項の範囲で自由に使っていいよ!というサービスです。制限事項に関しては後述しています。 README.mdのサービス説明を引用、翻訳します。 HTTP APIを介してJSONデータを無料で保存、読み取り、変更できます。小規模なプロジェクト、プロトタイプ、またはハッカソンに理想的で、独自のデータストアを作成する必要はありません。 基本機能を試してみる Create https://jsonbox.io/${BOX_ID}へのPOSTリクエストをすることで、レコード作成できます。同じメッセージでも一意な_idがjsonbox側で振られるので、同じJSONメッセージでも新規レコードとして作成さ
The document discusses computational fluid dynamics (CFD) simulations of flow around a void or empty space using MATLAB. It describes governing equations for fluid momentum and energy that are solved using finite difference methods. The analysis involves simultaneous solution of the unsteady equations over time. Sample MATLAB code is shown that loads data, defines parameters, iterates the calculat
はいど〜も!バーチャルYoutuberのおのかちおです! 先日、Cloudflareが 1.1.1.1:53 でパブリックDNSを始めたことが話題になってますよね。Googleが8.8.8.8でやってるあれと同じです。 しかもこれ、超速いんですよね。自分の手元からだと、8.8.8.8の10倍速い。 1.1.1.1の主な特徴 ログを保管しない。破棄する。 IPv6 対応 DNSSEC の対応 DNS over HTTPS の対応 DNS over SSL の対応 … IPアドレス 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001 覚えやすくていいですね。
こんにちは。 2回にわたってGolang標準の testing パッケージを使ったユニットテストについてお伝えしてきました。 testingパッケージを使ったユニットテスト(testing) テストにおける共通処理(testing) アプリケーションのテスト(gomock, httptest) 今回はGolangで作成したアプリケーションをテストする際に利用できるライブラリなどについて紹介します。 この文章中に登場するサンプルは GitHub にありますので、実際に動作させることが可能です。 $ go get github.com/duck8823/sample-go-testing $ cd $GOPATH/src/github.com/duck8823/sample-go-testing $ git checkout refs/tags/blog $ dep ensure # 依存パッ
QUICについて (2020/06 追記) 手前味噌ですが、QUICについて別途まとめましたので、参考にして頂ければ 2020/06/01 時点でHTTP/3, QUICの解説書を書きました https://github.com/flano-yuki/http3-note あわせて個人ブログもどうぞ QUIC, HTTP/3の標準化状況を確認したい (2019年11月版) QUICの話 (QUICプロトコルの簡単なまとめ) HTTP over QUICと、その名称について (HTTP3について) QUICとは QUICとはGoogleの考案したHTTPのメッセージを効率よく高速かつ安全にやりとりするためのプロトコルであり。UDP上でTCP+TLS1.3+HTTP/2のような機能を持ち、信頼性のある安全な通信を行う。 スタック図を見ると分かる通り、TCPのような輻輳制御やロスリカバリと、TL
可能な限り最新の情報を反映していますが、追いつけていないこともあります。本サイトに採用していても、記事に反映できていない設定もあります。ページのソースを読んでいただくと、参考になる箇所があるかもしれません。 ウェブページの高速化に関するテクニックは、ネットで検索すれば簡単に見つけることができます。優れた情報も数多くありますが、「CSSとJavaScriptはminify(ミニファイ)しておけばOK!」のような都市伝説も少なくありません。 そこで、ここでは本サイトのデザインリニューアル時に施した対策をもとに、一歩進んだウェブページの高速化の方法と、それを支える原理について、できる限り分かりやすく説明したいと思います。フロントエンジニアやデザイナーの方からすれば「んなもん知っとるわ!」な情報なのかもしれませんが、都市伝説を駆逐すべく、私なりの仕方で解説(≒加勢)したいと思います。 初めに結果を
« Golang で物理ファイルの操作に path/filepath でなく path を使うと爆発します。 | Main | VimConf2017 に参加してきた。 » printf デバッグは便利だ。技術の後退と言われようと printf でないと解決できない事はまだまだたくさんあります。 今日は net/http でクライアントが得たレスポンスの JSON を確認したいといった場合に、どうデバッグしたらいいかを書いてみたいと思う。 Go のインタフェースは大よそ io.Reader もしくは io.Writer を使う様に設計されている。こうする事でプログラムがメモリを一度に沢山確保してしまわない様にしています。 package main import ( "encoding/json" "fmt" "log" "net/http" ) type Foo struct { ID
環境 CentOS6 python3.5.1 falcon-1.0.0 はじめに falconはpythonのWEBフレームワークの1つでAPIに特化しており速度が早いらしい。 今回falconを使ってget/postに対応してjsonを返すapiを作成してみる。 手順 falconインストール pip install --upgrade falconテスト用コード vi falcon_test.py# -*- coding: utf-8 -*- # sample.py import falcon import json class ItemsResource: def on_get(self, req, resp): value = req.params['key'] items = { 'title': 'WebAPIテスト', 'tags': [ { 'name': 'テスト','バ
キャッシュとは 使用頻度の高いデータを高速な記憶装置に蓄えておくことにより、いちいち低速な装置から読み出す無駄を省いて高速化すること。また、その際に使われる高速な記憶装置や、複製されたデータそのもののこと。 - IT用語辞典 Webサイトの表示においては、一度アクセスしたページのデータを特定の場所に保存することで、次回アクセス時の表示を速くし、サーバへの無駄なリクエストを減らせるというメリットがあります。また一口にキャッシュといっても下記の2種類があるので、どちらを指しているのか(あるいは両方か)意識しておきましょう。 ブラウザのキャッシュ:そのパソコンのユーザーが見たページのデータがローカルに溜まっていく。 キャッシュサーバのキャッシュ:不特定多数のユーザーが見たページのデータがネットワーク上に溜まっていく。 キャッシュの制御方法 ✏️ HTTPレスポンスヘッダ で制御 ➡️ Cache
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く