aboutsummaryrefslogtreecommitdiff
path: root/content/playground.article
diff options
context:
space:
mode:
Diffstat (limited to 'content/playground.article')
-rw-r--r--content/playground.article10
1 files changed, 0 insertions, 10 deletions
diff --git a/content/playground.article b/content/playground.article
index c1eb6e5..657624d 100644
--- a/content/playground.article
+++ b/content/playground.article
@@ -27,7 +27,6 @@ The implementation involves a variant operating system environment and runtime
and our description here assumes you have some familiarity with systems
programming using Go.
-
* Overview
.image playground/overview.png
@@ -43,7 +42,6 @@ The playground service has three parts:
It also does some caching.
- A JavaScript client that implements the user interface and makes HTTP requests to the front end.
-
* The back end
The back end program itself is trivial, so we won't discuss its implementation
@@ -82,7 +80,6 @@ fake file system, making the playground's tool chain similar to a normal
Go tool chain.
These facilities are described in the following sections.
-
** Faking time
Playground programs are limited in the amount of CPU time and memory they can
@@ -182,7 +179,6 @@ The JavaScript client (running in the user's web browser) then plays back the
events using the provided delay intervals.
To the user it appears that the program is running in real time.
-
** Faking the file system
Programs built with the Go's NaCl tool chain cannot access the local machine's
@@ -245,7 +241,6 @@ There are several implementations of the interface:
program's only way to interact with the outside world),
- network sockets have their own implementation, discussed in the next section.
-
** Faking the network
Like the file system, the playground's network stack is an in-process fake
@@ -268,7 +263,6 @@ The implementation can be found in [[https://github.com/golang/go/blob/master/sr
A good place to start reading is [[https://github.com/golang/go/blob/master/src/syscall/net_nacl.go#L461][`netFile`]],
the network socket implementation of the `fileImpl` interface.
-
* The front end
The playground front end is another simple program (shorter than 100 lines).
@@ -290,7 +284,6 @@ If there is no cached response, the front end makes an RPC request to the back
end, stores the response in memcache, parses the playback events, and returns
a JSON object to the client as the HTTP response (as described above).
-
* The client
The various sites that use the playground each share some common JavaScript
@@ -324,7 +317,6 @@ the various web servers (godoc, for instance) proxy requests to
The common [[https://godoc.org/golang.org/x/tools/playground][`golang.org/x/tools/playground`]]
package does this proxying.
-
* Playing offline
Both the [[https://tour.golang.org][Go Tour]] and the
@@ -342,7 +334,6 @@ The WebSocket back end implementation can be found in the
[[https://godoc.org/golang.org/x/tools/playground/socket][`golang.org/x/tools/playground/socket`]] package.
The [[https://talks.golang.org/2012/insidepresent.slide#1][Inside Present]] talk discusses this code in detail.
-
* Other clients
The playground service is used by more than just the official Go project
@@ -352,7 +343,6 @@ you [[mailto:golang-dev@googlegroups.com][contact us first]],
use a unique user agent in your requests (so we can identify you), and that
your service is of benefit to the Go community.
-
* Conclusion
From godoc to the tour to this very blog, the playground has become an