並び順

ブックマーク数

期間指定

  • から
  • まで

241 - 280 件 / 1880件

新着順 人気順

non-blockingの検索結果241 - 280 件 / 1880件

  • Guzzle, PHP HTTP client — Guzzle Documentation

    Guzzle Documentation¶ Guzzle is a PHP HTTP client that makes it easy to send HTTP requests and trivial to integrate with web services. Simple interface for building query strings, POST requests, streaming large uploads, streaming large downloads, using HTTP cookies, uploading JSON data, etc... Can send both synchronous and asynchronous requests using the same interface. Uses PSR-7 interfaces for r

    • GitHub - openresty/lua-nginx-module: Embed the Power of Lua into NGINX HTTP servers

      # set search paths for pure Lua external libraries (';;' is the default path): lua_package_path '/foo/bar/?.lua;/blah/?.lua;;'; # set search paths for Lua external libraries written in C (can also use ';;'): lua_package_cpath '/bar/baz/?.so;/blah/blah/?.so;;'; server { location /lua_content { # MIME type determined by default_type: default_type 'text/plain'; content_by_lua_block { ngx.say('Hello,w

        GitHub - openresty/lua-nginx-module: Embed the Power of Lua into NGINX HTTP servers
      • 非同期で全文検索エンジンgroongaを叩く AnyEvent::Groonga 書いたよ - download_takeshi’s diary

        要するにAnyEventでgroongaを使いたかったのでperlモジュール書きました。んでもって久々にCPANにアップしましたよ、という告白です。 AnyEvent::Groonga - Groonga client for AnyEvent http://search.cpan.org/~miki/AnyEvent-Groonga/ 非同期でガンガン全文検索エンジンを叩きたいな、ということでAnyEvent::Groonga。 なおYappo さんが取り組まれているCライブラリのperlバインディングスとは異なり、AE::Groongaはgroongaディストリビューションに同梱されてるオリジナルの「groongaサーバ」を対象としています。 このgroongaの組み込みサーバは、じつはhttpとgqtp(groonga独自プロトコルらしい)両方をしゃべれます。また普通にローカルのDB

          非同期で全文検索エンジンgroongaを叩く AnyEvent::Groonga 書いたよ - download_takeshi’s diary
        • GitHub - antirez/disque: Disque is a distributed message broker

          Disque, an in-memory, distributed job queue Disque is an ongoing experiment to build a distributed, in-memory, message broker. Its goal is to capture the essence of the "Redis as a jobs queue" use case, which is usually implemented using blocking list operations, and move it into an ad-hoc, self-contained, scalable, and fault tolerant design, with simple to understand properties and guarantees, bu

            GitHub - antirez/disque: Disque is a distributed message broker
          • #tc39_study のアウトラインメモ

            #tc39_study - connpassのアウトラインメモ。 littedan “how tc39 works ?” TC39のミーティング Q. QuickJSが中に入ってたけど、Implementationsとして認識される基準って何? A. 基準と特に決まってない。あえてぼかしてる。 Stage five by littledan · Pull Request #16 · tc39/process-document Q: microsoft がchakra coreをやめることで2つ以上のブラウザの実装に関してどう変わっていくの? A. あんまりChakraCoreが新しいもの実装してなかったのであんまり変わらない Q. Feedbackって実際どうやってどういうふうに送るのがいいの? A. オープンなので色んな面のフィードバックあるといいと思うよ。 Leko Hashbang

              #tc39_study のアウトラインメモ
            • 電子工作あれこれ

              色々あって、STM32FでやるArduinoは、以下にしています。 https://github.com/stm32duino STM32DuinoでBlynkをやった話。SPIの設定でちょっと躓いたのでメモ。 使ったのはSTM32F401RCTとW5500を搭載した基板となる。 ライブラリが整備されているので、Blynkのサーバーにアクセスする事はWiznetのW5100か、W5200か、W5500を使っている限り比較的容易にできる。 W5300に関してはまだライブラリが存在していないみたいで、これは自分でドライバーを書くしか無さそう。 以下を参照してみてください。 https://github.com/hamayanShowa-ele/ArduinoShare/tree/main/F4_2102_Blynk_Blink W5500のインタフェースはSPIですが、W5500のCSを標準の

                電子工作あれこれ
              • Akka Streams についての基礎概念 - Qiita

                Akka Streams が2.4以降からexperimentalを外して、正式版をリリースしました。丁度会社で3日のHackerDaysを機に、Akka Streams を勉強しはじめました。 この記事では、AkkaStreamの公式ドキュメントを抜粋し、翻訳しながら、AkkaStreamの基礎概念を説明します。 Akka Streams ってなに 背景 今のInternet上、我々は膨大なデータを消費している。その大量のデータを人々はビッグデータと呼んでいるw。 もう昔みたいにデータを全部ダウンロードして処理、処理完了してアップロード的な処理は時間掛かりすぎ、そもそも一台のサーバに保存しきれないデータは処理できないので、Streamみたいな流れとしての処理が必要になっている。 Akkaが使うActorモデルもその一例、データを分割し、メッセージとしてActorに送る、Actorは只々流

                  Akka Streams についての基礎概念 - Qiita
                • Rox Java NIO Tutorial

                  The Rox Java NIO Tutorial Contents Introduction Credits General principles The server The client NIO and SSL on 1.4 The code About the author Introduction This tutorial is intended to collect together my own experiences using the Java NIO libraries and the dozens of hints, tips, suggestions and caveats that litter the Internet. When I wrote Rox all of the useful information existed as just that: h

                  • Non-Blocking I/O, I/O Multiplexing, Asynchronous I/Oの区別 - Carpe Diem

                    概要 各言語がC10K問題をどう解決してきたかを調べてみたところ、Non-Blocking I/O, I/O Multiplexing, Asynchronous I/Oの区別がよく分からなかったので調べてみました。 正直なところ人によってちょこちょこ定義が異なるのではっきりとした答えはなさそうですが、自分で調べてしっくりした形をまとめます。 前提 同期と非同期の違い 用語 説明 同期 OSにタスクを投げて、入出力の準備ができたら アプリケーションに処理が返ってくる 非同期 OSにタスクを投げて、入出力が完了したら通知をもらう ブロッキングとノンブロッキングの違い 用語 説明 ブロッキング OSへ依頼したタスクが完了するまで待つ ノンブロッキング OSへ依頼したタスクの完了を待たない Blocking I/O ref: java Selector is asynchronous or no

                      Non-Blocking I/O, I/O Multiplexing, Asynchronous I/Oの区別 - Carpe Diem
                    • PSGI/Plack streaming is now complete

                      bulknews.typepad.com Tatsuhiko Miyagawa's blog to discuss mostly tech and nerdy stuff. In the last couple of (or even more :) days Yuval and I have been endlessly discussing what the asynchronous response API would look like in PSGI applications. And that was also becoming one of the most frequently asked questions on my side, since many people from AnyEvent, POE and perlbal (Danga::Socket) land a

                      • 「Working with TCP Sockets」を読んだ - Fire Engine

                        最近Golangを書いていると、自分でTCPをListenしたり、Acceptしたりする処理を書くことがよくあるのですが、何をやっているのか全くイメージが沸いてなかったので、「Working with TCP Sockets」を読んで勉強しました。 Working With TCP Socketswww.jstorimer.com だいたいこの手のソケットプログラミング関連の本は、C言語で解説されていることが多いと思うのですが、本書はサンプルコードが全てRubyなので、非常に読みやすいです。残念ながら英語版しかありません。 以下、私がポイントだと思ったことだけをまとめた読書ノートです。 読書ノート 前半はソケットとは?から始まり、ソケットプログラミング自体の入門的な内容で、そのあたりの理解が曖昧だった私にはとても勉強になりました。 後半は、ソケットプログラミングを使った実用的なアーキテクチ

                          「Working with TCP Sockets」を読んだ - Fire Engine
                        • How Rust and Wasm power Cloudflare's 1.1.1.1

                          ≈ On April 1, 2018, Cloudflare announced the 1.1.1.1 public DNS resolver. Over the years, we added the debug page for troubleshooting, global cache purge, 0 TTL for zones on Cloudflare, Upstream TLS, and 1.1.1.1 for families to the platform. In this post, we would like to share some behind the scenes details and changes. When the project started, Knot Resolver was chosen as the DNS resolver. We st

                            How Rust and Wasm power Cloudflare's 1.1.1.1
                          • Optimizing the Netflix API

                            by Ben Christensen About a year ago the Netflix API team began redesigning the API to improve performance and enable UI engineering teams within Netflix to optimize client applications for specific devices. Philosophies of the redesign were introduced in a previous post about embracing the differences between the different clients and devices. This post is part one of a series on the architecture

                              Optimizing the Netflix API
                            • GitHub - sxyazi/yazi: 💥 Blazing fast terminal file manager written in Rust, based on async I/O.

                              Yazi (means "duck") is a terminal file manager written in Rust, based on non-blocking async I/O. It aims to provide an efficient, user-friendly, and customizable file management experience. 💡 A new article explaining its internal workings: Why is Yazi Fast? 🚀 Full Asynchronous Support: All I/O operations are asynchronous, CPU tasks are spread across multiple threads, making the most of available

                                GitHub - sxyazi/yazi: 💥 Blazing fast terminal file manager written in Rust, based on async I/O.
                              • HerokuのWebSocketでC10Kに挑戦(前篇)

                                前回SalesforceハッカソンにWebSocketのクイズアプリを出してきたよ~という話をしたわけだが今のところ身内以外からはほとんどアクセスされてないっぽい。 まぁほとんど宣伝してないからそれは別に構わないんだけど、審査されている形跡もないのは大丈夫なのか。。。(^^; さて、それはさておきWebSocketアプリを作ったら是非試してみたいと思っていたことのひとつにC10K問題の検証と言うのがあります。 C10Kとはクライアント1万台問題の略で平たく言うと「WebSocketってクライアントとずっとソケット繋ぎっぱにするわけだよね。そんなのクライアントの数がちょっと増えたらあっという間に破綻するんじゃね?」という問題のことです。 ★検証シナリオ 今回作ったアプリにはルーム毎にチャットの機能があるのでそれを利用することにします。 具体的な目標数値としてはとりあえず以下のように設定しまし

                                • Understanding the node.js event loop

                                  The first basic thesis of node.js is that I/O is expensive:  So the largest waste with current programming technologies comes from waiting for I/O to complete. There are several ways in which one can deal with the performance impact (from Sam Rushing): synchronous: you handle one request at a time, each in turn. pros: simple cons: any one request can hold up all the other requests fork a new proc

                                  • nxweb – Fast and Lightweight Web Server for Applications Written in C & Python

                                    nxweb – Fast and Lightweight Web Server for Applications Written in C & Python Rationale Sometimes web applications need small and fast components that are best written in C. Example: ad banner rotation engine. It gets invoked many times on every page of your site producing little HTML snippets based on predefined configuration. How would you implement it? CGI is not an option as it gets loaded an

                                    • New – Redis 4.0 Compatibility in Amazon ElastiCache | Amazon Web Services

                                      AWS News Blog New – Redis 4.0 Compatibility in Amazon ElastiCache Amazon ElastiCache makes it easy for you to set up a fully managed in-memory data store and cache with Redis or Memcached. Today we’re pleased to launch compatibility with Redis 4.0 in ElastiCache. You can now launch Redis 4.0 compatible ElastiCache nodes or clusters, in all commercial AWS regions. ElastiCache Redis clusters can sca

                                        New – Redis 4.0 Compatibility in Amazon ElastiCache | Amazon Web Services
                                      • New High I/O EC2 Instance Type – hi1.4xlarge – 2 TB of SSD-Backed Storage | Amazon Web Services

                                        AWS News Blog New High I/O EC2 Instance Type – hi1.4xlarge – 2 TB of SSD-Backed Storage The Plot So Far As the applications that you build with AWS grow in scale, scope, and complexity, you haven’t been shy about asking us for more locations, more features, more storage, or more speed. Modern web and mobile applications are often highly I/O dependent. They need to store and retrieve lots of data i

                                          New High I/O EC2 Instance Type – hi1.4xlarge – 2 TB of SSD-Backed Storage | Amazon Web Services
                                        • GitHub - cloudwego/netpoll: A high-performance non-blocking I/O networking framework focusing on RPC scenarios.

                                          Netpoll is a high-performance non-blocking I/O networking framework, which focused on RPC scenarios, developed by ByteDance. RPC is usually heavy on processing logic and therefore cannot handle I/O serially. But Go's standard library net is designed for blocking I/O APIs, so that the RPC framework can only follow the One Conn One Goroutine design. It will waste a lot of cost for context switching,

                                            GitHub - cloudwego/netpoll: A high-performance non-blocking I/O networking framework focusing on RPC scenarios.
                                          • Spine

                                            Spine is a lightwork framework for building JavaScript web applications. Spine gives you a MVC structure and then gets out of your way, allowing you to concentrate on the fun stuff, building awesome web applications. Spine is opinionated and, although at first glance it might look similar to other frameworks like Backbone, it actually has quite a different take on things. Spine is tiny, the librar

                                            • GPU Accelerated Compositing in Chrome

                                              Tom Wiltzius, Vangelis Kokkevis & the Chrome Graphics team updated May 2014 This code is changing due to Slimming Paint and thus there may be large changes in the future. Note also that some class names may have changed (e.g. RenderObject to LayoutObject, RenderLayer to PaintLayer). Summary This document provides background and details on the implementation of hardware-accelerated compositing in C

                                              • Spring Framework 5.0による Reactive Web Application #JavaDayTokyo

                                                The document discusses reactive programming and the Spring Framework 5.0 release. It provides an overview of reactive programming concepts like asynchronous non-blocking applications. It also discusses Reactive Streams and libraries like Reactor. Finally, it covers new features in Spring Framework 5.0 like performance improvements, support for JDK 9, and the introduction of reactive APIs in Spring

                                                  Spring Framework 5.0による Reactive Web Application #JavaDayTokyo
                                                • 具体的なMacPortsの説明 - Liquidfuncの日記

                                                  MacPortsは、Mac OS X用のパッケージ管理システムです。 アプリケーションを一元管理でき、ダウンロードやインストールも自動で行ってくれます。ちなみにportとは、コンピュータサイエンスにおいて「移植」という意味を持ちます。(Wikipediaリンク) 起源はBSDにあるらしく、そこから移植されたものという意味合いらしいです。 用語の確認 パッケージ 実行プログラム・設定ファイル・ドキュメントなどを1つにまとめたもの パッケージ管理システム Debian系Linuxのdpkgコマンドや、RedHat系Linuxのrpmコマンドが有名。OS上でアプリケーションを一元管理できるシステムのこと アクション portコマンドで利用できる操作のこと。例えばversionアクションはMacPortsのバージョンを表示する portコマンドの主要なアクション #006600;">version

                                                  • Experiment, Simplify, Ship - The Go Programming Language

                                                    We experiment with Go as it exists now, to understand it better, learning what works well and what doesn’t. Then we experiment with possible changes, to understand them better, again learning what works well and what doesn’t. Based on what we learn from those experiments, we simplify. And then we experiment again. And then we simplify again. And so on. And so on. The Four R’s of Simplifying During

                                                      Experiment, Simplify, Ship - The Go Programming Language
                                                    • packages by category | Hackage

                                                      Packages by categoryCategories:  (5), "Distributed Computing" (1), - (1), .NET (9), Accelerate (27), Accessibility (4), ACME (55), Actors (2), Adjunctions (2), ADSB (5), Aerospace (11), Aeson (4), Agda (1), AI (82), Algebra (61), Algebra Uniform (1), Algorithm (8), Algorithm Visualization (2), Algorithmic Music Composition (1), Algorithms (135), Amazon (1), Amqp (1), Anatomy (1), Animation (6), AN

                                                      • grizzly: Grizzly Project Home Page

                                                        Writing scalable server applications in the Java™ programming language has always been difficult. Before the advent of the Java New I/O API (NIO), thread management issues made it impossible for a server to scale to thousands of users. The Grizzly framework has been designed to help developers to take advantage of the Java™ NIO API. Grizzly goals is to help developers to build scalable and robust

                                                        • 第2回 Node.js の過去、現在、未来 | gihyo.jp

                                                          はじめに Node.jsは「サーバサイド JavaScript」環境として、近年のブラウザ上で動作するクライアントサイドJavaScriptの盛り上がりに合わせて、急速に注目を集めています。日本においても、Node.js日本ユーザグループ の登録者はすでに800人を超えており、さまざまなブログや技術系サイトで取り上げられたり、雑誌に記事が掲載されたり、実際のサービスで利用が開始されるなど、大きな盛り上がりを見せています。そうした盛り上がりがある一方で、新しく立ち上がった技術に対してよく聞かれる疑問である、「⁠Node.jsって何?」とか「サーバサイドでJavaScriptが書けるってどういうこと?」といった声も多く聞かれるようになってきました。 そこで第2回目の本記事ではそれらの疑問に答えるべく、Node.jsの過去、現在、そして未来について解説していきます。 Node.js の過去 No

                                                            第2回 Node.js の過去、現在、未来 | gihyo.jp
                                                          • Ross Bencina » Some notes on lock-free and wait-free algorithms

                                                            Over the past two decades the research community has developed a body of knowledge concerning “Lock-Free” and “Wait-Free” algorithms and data structures. These techniques allow concurrent update of shared data structures without resorting to critical sections protected by operating system managed locks. A number of wait-free and lock free algorithms for simple data structures such as LIFO stacks a

                                                            • Gevent Tutorial

                                                              Introduction The structure of this tutorial assumes an intermediate level knowledge of Python but not much else. No knowledge of concurrency is expected. The goal is to give you the tools you need to get going with gevent, help you tame your existing concurrency problems and start writing asynchronous applications today. Contributors In chronological order of contribution: Stephen Diehl Jérémy Bet

                                                              • プロセス間通信の比較 - ka2yanの日記

                                                                デバイスドライバによるプロセス間通信 - ka2yanの日記のデバイスドライバは、既存のプロセス間通信と比べて本当に早いのか、を測定した。 調べること 100バイト程度のメッセージ(画像データ等の大容量データを対象にしているのではない)をやりとりするプロセス間通信で一番早いのは何か? 測定するプロセス間通信は、前回の日記に書いたデバイスドライバ(共有メモリ方式)とデバイスドライバ(メッセージRead/Write)、そして、メッセージキュー(POSIX)、UNIXドメインソケット、名前付パイプ(FIFO)の5種類。 メッセージキュー(System V)は、fd として扱えないので、測定しない。 測定プログラムの概要 −2プロセス間で128バイトのメッセージを送受信を繰り返すプログラム −2プロセスは、NON_BLOCKING でメッセージをread/write −read/writeする前に

                                                                  プロセス間通信の比較 - ka2yanの日記
                                                                • Net::Twitter - search.cpan.org

                                                                  NAME Net::Twitter - A perl interface to the Twitter API VERSION version 4.01043 SYNOPSIS use Net::Twitter; use Scalar::Util 'blessed'; # When no authentication is required: my $nt = Net::Twitter->new(legacy => 0); # As of 13-Aug-2010, Twitter requires OAuth for authenticated requests my $nt = Net::Twitter->new( traits => [qw/API::RESTv1_1/], consumer_key => $consumer_key, consumer_secret => $consu

                                                                    Net::Twitter - search.cpan.org
                                                                  • Long-running Node processes

                                                                    At Spanning we often say that “easy things are hard at scale” (at least, our VP of Engineering has said it enough that it has actually caught on). Our first product, Spanning Backup for Google Apps, uses mostly Java code on the server side to communicate with Google, Amazon Web Services, our databases, and so on. For our second product, Spanning Backup for Salesforce, we chose to use Node.js. Node

                                                                      Long-running Node processes
                                                                    • Masami Hagiya

                                                                      Masami Hagiya is a professor at Department of Computer Science, Graduate School of Information Science and Technology, University of Tokyo. He is in Room 411, Science Building No.7, Department of Computer Science, Graduate School of Information Science and Technology, University of Tokyo, 7-3-1 Hongo, Bunkyo-ku, Tokyo 113-8656, JAPAN. TEL: +81-3-5841-4113 (PHS) TEL: +81-3-5841-4115 (laboratory) E-

                                                                      • 本を読む 「PyCon mini JP」に行ってきた

                                                                        Pythonのイベント「PyCon mini JP」に行ってきました。…いや昼からでしたが。思ったよりいろいろなジャンルの話があって楽しく聞いていました。 あと、最後のじゃんけん大会で、オライリーのアナライジング・マルウェアのTシャツをゲットしてしまいました。ありがとうございました。 以下、メモほぼそのまま。 テンプレートエンジンの高速化と失敗談について 文字列の連結を速くextendで足してjoinが定番 いろいろな方法をためしたが、結局これが一番 Tenjinのコード埋め込みインデントフリー 複数行を1つのメソッドで出力この程度のこともやってないテンプレートエンジンも多い 40%高速化 append50%高速化 メソッド呼び出しのコストが高い ここまでで1万ページ/sの性能ここからが苦難 リストに文字列以外のものが入っているとjoinでエラーにstr()のオーバーヘッド str()をビ

                                                                        • PSGIを勉強したメモ(2) (PSGI 1.03でのストリーミング) - Pixel Pedals of Tomakomai

                                                                          PSGI Specificationが1.03に更新されています。新しく psgi.streaming が追加されました (Tatsumakiでも使ってる)。 最初にとても大事な注意 このエントリはPSGI 1.03の仕様について勉強したことを書いてます。PSGIの仕様はまだ流動的なので、かならず最新の仕様を見て下さい。 psgi.streaming とは PSGIアプリの戻り値は配列リファレンスですが、 psgi.streaming が有効になっているサーバではコールバック関数を返せます。 コールバック関数には返答用の関数が渡ってくるので、そこにいつもの配列リファレンスを返します。 sub { my $env = shift; $env->{'psgi.streaming'} or die; return sub { my $respond = shift; my $t; $t = AE

                                                                            PSGIを勉強したメモ(2) (PSGI 1.03でのストリーミング) - Pixel Pedals of Tomakomai
                                                                          • Java SE 7徹底理解 第4回 New I/O 2の新しいファイルシステムインタフェース その1 | 日経 xTECH(クロステック)

                                                                            今回は、J2SE 1.4.0の話からはじめましょう。 J2SE 1.4.0がリリースされたのが2002年。すでに9年も経ってしまいました。 さすがに最近こそ使われなくなったものの、日本においてはJ2SE 1.4.xが一番多く使われていたバージョンなのではないでしょうか。 そのJ2SE 1.4.0の時に新機能として導入されたのが、JSR 51 New I/O APIs for the Java Platform、通称NIOです。 NIOは、java.ioを補う新しいI/Oに関するAPIで、入出力に特化したバッファや、ストリームよりも高効率なチャネルなどを提供しています。また、ノンブロッキングI/OもNIOで導入されました。 NIOは一般にはそれほど使われていないようですが、GlassFishやTomcatなど多くのフレームワークやライブラリで導入されています。 しかし、JSR 51は当初から

                                                                              Java SE 7徹底理解 第4回 New I/O 2の新しいファイルシステムインタフェース その1 | 日経 xTECH(クロステック)
                                                                            • Scaling Linux Services: Before accepting connections

                                                                              More posts When writing services that accept TCP connections, we tend to think of our work as starting from the point where our service accepts a new client connection and finishing when we complete the request and close the socket. For services at scale, operations can happen at such a high rate that some of the default resource limits of the Linux kernel can break this abstraction and start caus

                                                                              • pythonでサクッとwebサービス作るならFlaskよりsanicがいいよって話 - Qiita

                                                                                ▄▄▄▄▄ ▀▀▀██████▄▄▄ _______________ ▄▄▄▄▄ █████████▄ / \ ▀▀▀▀█████▌ ▀▐▄ ▀▐█ | Gotta go fast! | ▀▀█████▄▄ ▀██████▄██ | _________________/ ▀▄▄▄▄▄ ▀▀█▄▀█════█▀ |/ ▀▀▀▄ ▀▀███ ▀ ▄▄ ▄███▀▀██▄████████▄ ▄▀▀▀▀▀▀█▌ ██▀▄▄▄██▀▄███▀ ▀▀████ ▄██ ▄▀▀▀▄██▄▀▀▌████▒▒▒▒▒▒███ ▌▄▄▀ ▌ ▐▀████▐███▒▒▒▒▒▐██▌ ▀▄▄▄▄▀ ▀▀████▒▒▒▒▄██▀ ▀▀█████████▀ ▄▄██▀██████▀█ ▄██▀ ▀▀▀ █ ▄█ ▐▌ ▄▄▄▄█▌ ▀█▄▄▄▄▀▀▄ ▌ ▐ ▀▀▄▄▄▀ ▀▀▄▄▀ そもそもPythonでwebアプリを

                                                                                  pythonでサクッとwebサービス作るならFlaskよりsanicがいいよって話 - Qiita
                                                                                • Non-blocking JavaScript Downloads

                                                                                  YUI Blog Development Non-blocking JavaScript Downloads Non-blocking JavaScript Downloads About the Author: Stoyan Stefanov is a Yahoo! web developer working for the Exceptional Performance team and leading the development of the YSlow performance tool. He also an open-source contributor, conference speaker and technical writer: his latest book is called Object-Oriented JavaScript. External JavaScr