(************** Content-type: application/mathematica ************** Mathematica-Compatible Notebook This notebook can be used with any Mathematica-compatible application, such as Mathematica, MathReader or Publicon. The data for the notebook starts with the line containing stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. *******************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 72323, 2097]*) (*NotebookOutlinePosition[ 73523, 2137]*) (* CellTagsIndexPosition[ 73448, 2131]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{ Cell[TextData[{ "web", StyleBox["Mathematica", FontSlant->"Italic"] }], "Title"], Cell["\<\ Tom Wickham-Jones Wolfram Research Inc.\ \>", "Subtitle"], Cell["June 2001", "Subsubtitle"], Cell[CellGroupData[{ Cell["Introduction", "Section"], Cell[TextData[{ "web", StyleBox["Mathematica", FontSlant->"Italic"], " is a new technology that allows the generation of dynamic web content \ with ", StyleBox["Mathematica", FontSlant->"Italic"], ". It integrates ", StyleBox["Mathematica", FontSlant->"Italic"], " with a web server." }], "Text"], Cell[CellGroupData[{ Cell[TextData[{ "Why ", StyleBox["Mathematica", FontSlant->"Italic"], " on the Web?" }], "Subsection"], Cell[TextData[{ "Probably the major reason for using ", StyleBox["Mathematica", FontSlant->"Italic"], " over the web is for computation. The system contains a large collection \ of functions for calculating in many areas and all of this functionality \ becomes available over the web. This is particularly important since many web \ technologies, so powerful in many areas, are not very suited to scientific \ computation, it is simply not their main focus. ", StyleBox["Mathematica", FontSlant->"Italic"], " is very suitable for scientific computation", ", ", "and this is what it can provide for web computations." }], "Text"], Cell[TextData[{ StyleBox["Mathematica", FontSlant->"Italic"], " contains a high level, interactive", ", ", "functional programming language. It lends itself to rapid prototyping but \ can scale up to large intensive computations. These benefits carry over to \ web content generation where they can significantly reduce the time spent \ developing the site." }], "Text"], Cell[TextData[{ StyleBox["Mathematica", FontSlant->"Italic"], " has long held a powerful", ", ", "though complex, connection technology in ", StyleBox["MathLink", FontSlant->"Italic"], ". Now connecting to ", StyleBox["Mathematica", FontSlant->"Italic"], " has been dramatically simplified with the use of ", StyleBox["J/Link", FontSlant->"Italic"], ". This technology makes ", StyleBox["Mathematica", FontSlant->"Italic"], " more suitable for integrating into web computation. " }], "Text"], Cell[TextData[{ "The ", StyleBox["Mathematica", FontSlant->"Italic"], " front end has long provided the premium mechanism for working with the ", StyleBox["Mathematica", FontSlant->"Italic"], " kernel. One might expect that the front end has no place in a web \ infrastructure. In fact the front end and a browser give different and \ complimentary ways to use ", StyleBox["Mathematica", FontSlant->"Italic"], ". The latter gives a simpler more interactive interface; people already \ know how to use browsers so the start-up time is reduced", ". ", "The front end ultimately gives a more powerful way to work with ", StyleBox["Mathematica", FontSlant->"Italic"], ". It is possible to combine the two ways of interacting with ", StyleBox["Mathematica", FontSlant->"Italic"], " so that you can start in a browser and move to working in the front end." }], "Text"], Cell[TextData[{ StyleBox["Mathematica", FontSlant->"Italic"], " is known to be a premium system for interactive mathematical typesetting. \ What is not so well known is that it is a powerful system for working with \ MathML. MathML is designed to allow the use and re-use of mathematical and \ scientific content on the web,and by other applications. As MathML becomes \ increasingly important it is very advantageous that ", StyleBox["Mathematica", FontSlant->"Italic"], " works well with MathML." }], "Text"], Cell[TextData[{ "web", StyleBox["Mathematica", FontSlant->"Italic"], " allows the many features and benefits of ", StyleBox["Mathematica", FontSlant->"Italic"], " to be used over the web." }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell["Why a Web Interface?", "Subsection"], Cell[TextData[{ "A web interface brings many of its typical benefits to working with ", StyleBox["Mathematica", FontSlant->"Italic"], "." }], "Text"], Cell["\<\ A web browser is the most common type of software that people learn \ so people need less training to use a web interface.\ \>", "Text"], Cell[TextData[{ "There are many people who are expert in developing servers and dynamic web \ sites. There are many technologies and tools for working with the web", ". ", "These people will be able to use their favourite tools to develop ", StyleBox["Mathematica", FontSlant->"Italic"], " related web sites. This makes the web applications that people build with \ ", StyleBox["Mathematica", FontSlant->"Italic"], " easier to build and more powerful." }], "Text"], Cell["\<\ A major benefit of the web is the ease of delivery, there is no \ need for installation of special software and access can be controlled and \ measured with standard technologies.\ \>", "Text"], Cell[TextData[{ "web", StyleBox["Mathematica", FontSlant->"Italic"], " allows the many features and benefits of web technology to be used with \ ", StyleBox["Mathematica", FontSlant->"Italic"], "." }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell["Potential Areas of Use", "Subsection"], Cell[TextData[{ "Individual scientists and researchers often develop packages for special \ calculations, this might be done with ", StyleBox["Mathematica", FontSlant->"Italic"], " or with other computational tools. If they want to give these tools to \ their colleagues they often have a problem, their colleagues may not have \ access to or experience with the necessary components, and so it can be hard \ to share this computational work. web", StyleBox["Mathematica", FontSlant->"Italic"], " solves this problem. People who develop calculations in ", StyleBox["Mathematica", FontSlant->"Italic"], " can build sites to deliver interactive calculations over the company web \ intranet. The people who connect to and use these sites don't have to know \ anything about ", StyleBox["Mathematica", FontSlant->"Italic"], ", in fact they don't need to know they are even using ", StyleBox["Mathematica", FontSlant->"Italic"], ". In addition, since they are using web access there are no special \ requirements for installing and administering software on individual \ machines. Finally, companies can develop sites that provide computational \ services to a broader audience than just their own intranet, for example, \ they can provide custom calculators for special customers." }], "Text"], Cell[TextData[{ "Schools, universities, and other educational establishments can use web", StyleBox["Mathematica", FontSlant->"Italic"], " to deliver sophisticated courses over the web, including highly \ interactive courseware." }], "Text"], Cell[TextData[{ "Authors and publishers can publish live interactive technical books, \ supplements and journals over the web with web", StyleBox["Mathematica", FontSlant->"Italic"], "." }], "Text"], Cell[TextData[{ "web", StyleBox["Mathematica", FontSlant->"Italic"], " provides a way for r", "esearchers, scientists, and artists to showcase their ", StyleBox["Mathematica", FontSlant->"Italic"], "-based work using interactive web calculators. " }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell["Design Goals", "Subsection"], Cell[TextData[{ " web", StyleBox["Mathematica", FontSlant->"Italic"], " was developed according the following design goals:" }], "Text"], Cell[TextData[{ "Technology Standards: using standard technology will make web", StyleBox["Mathematica", FontSlant->"Italic"], " faster to develop and easier to use. " }], "Text", CellDingbat->"\[GrayCircle]"], Cell[TextData[{ "Consistency with ", StyleBox["Mathematica", FontSlant->"Italic"], ": web", StyleBox["Mathematica", FontSlant->"Italic"], " should work with existing ", StyleBox["Mathematica", FontSlant->"Italic"], " applications and technology", ", ", "it should also be available on different platforms and operating systems." }], "Text", CellDingbat->"\[GrayCircle]"], Cell[TextData[{ "Scalability: web", StyleBox["Mathematica", FontSlant->"Italic"], " should work for both small and large sites. " }], "Text", CellDingbat->"\[GrayCircle]"], Cell[TextData[{ "Compatibility: web", StyleBox["Mathematica", FontSlant->"Italic"], " should be compatible with many different client and server technologies. \ " }], "Text", CellDingbat->"\[GrayCircle]"], Cell[TextData[{ "Customizable: users should be able to use parts of web", StyleBox["Mathematica", FontSlant->"Italic"], " technology in their own web solutions." }], "Text", CellDingbat->"\[GrayCircle]"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Dynamic Web Technology", "Section"], Cell["\<\ The web is formed from a large collection of servers, programs that \ wait for requests for material. Requests are sent from clients which are \ often operated by users who want to collect information from a server. \ Typically, a server provides an application that supports the Hyper Text \ Transfer Protocol (HTTP). Common servers include the Apache Web Server and \ Microsoft Internet Information Server. Another class of server are \ application servers; these are large programs that support HTTP as well as \ connections to data bases and other tools. The client software will very \ often be a web browser such as Internet Explorer, Netscape Navigator, or \ Mozilla. In order for a web site to support interactive computation it needs \ to provide some dynamic technology, this can be supported either by the \ client or the server.\ \>", "Text"], Cell[TextData[{ "There are several technologies that provide dynamic content from a server; \ examples are CGI scripting, Active Server Pages, and Server Plug-ins. In \ addition there are some Java based technologies such as Java Servlets and \ Java Server Pages. The latter are both standard technologies for dynamic web \ content, available on all platforms, which can be integrated with most web \ technologies. web", StyleBox["Mathematica", FontSlant->"Italic"], " is based on Java Servlets." }], "Text"], Cell[TextData[{ "There is a number of client technologies that support dynamic behaviour. \ All of these technologies can be integrated to work with each other. This \ includes HTML forms, JavaScript, applets, plug-ins and Active-X controls. \ web", StyleBox["Mathematica", FontSlant->"Italic"], " can work with all of these client technologies." }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ StyleBox["Mathematica", FontSlant->"Italic"], " Server Pages" }], "Section"], Cell[TextData[{ StyleBox["Mathematica", FontSlant->"Italic"], StyleBox[" Server Pages (MSP) technology is the foundation of ", FontSlant->"Plain"], "web", StyleBox["Mathematica", FontSlant->"Italic"], ". It is based on a standard Java technology called servlets. Servlets are \ special Java programs that run on a web server machine", ". ", "Typically support is provided by a separate program called a servlet \ container (or sometimes a \"servlet engine\") which connects to the web \ server. Essentially all modern web servers support servlets natively or \ through a plug-in servlet container. This includes Apache, Microsoft's IIS \ and PWS, Netscape Enterprise Server, iPlanet, and application servers (such \ as IBM WebSphere). " }], "Text", CellTags->"IntroMSP"], Cell[TextData[{ "MSP technology allows a site to contain HTML pages which are enhanced by \ the addition of ", StyleBox["Mathematica", FontSlant->"Italic"], " commands. When a request is made for one of these pages", ", ", "which are called MSP scripts, any ", StyleBox["Mathematica", FontSlant->"Italic"], " commands are evaluated and the computed result is placed in the page. " }], "Text", CellTags->"IntroMSP"], Cell[CellGroupData[{ Cell["Requirements", "Subsection"], Cell[TextData[{ "The aim of MSP technology is to reduce the amount of extra knowledge \ required for developing a site to a minimum; in practice this means knowing \ about HTML and ", StyleBox["Mathematica", FontSlant->"Italic"], ". ", "It also aims to automate the management of the site to make running, \ maintenance and configuration as convenient as possible." }], "Text"], Cell[CellGroupData[{ Cell["Knowledge", "Subsubsection"], Cell["\<\ In order to install and maintain an MSP site it is necessary that \ you have experience of installing and maintaining a web site. You do not need \ any special knowledge of Java other than installing a Java runtime.\ \>", \ "Text"], Cell[TextData[{ "In order to write MSP scripts it is necessary to have experience of HTML. \ You will also need some experience with ", StyleBox["Mathematica", FontSlant->"Italic"], ". ", "You do not need any knowledge of Java and you do not need to know about \ JavaScript." }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell["Equipment", "Subsubsection"], Cell[TextData[{ "In order to run a web", StyleBox["Mathematica", FontSlant->"Italic"], " site the minimum technical components are:" }], "Text"], Cell["\<\ \[EmptyCircle] A Servlet Container supporting the 2.0 API (or \ higher)\ \>", "Text"], Cell["\<\ \[EmptyCircle] A Java Runtime Environment (JRE) 1.1 (or \ higher)\ \>", "Text"], Cell[TextData[{ "There are many different combinations of hardware and operating systems \ that support these components", ", ", "it is probably fair to say that most systems that run ", StyleBox["Mathematica", FontSlant->"Italic"], " will support an MSP site. At present we are focusing on support for \ Intel/Windows, Intel/Linux and Sun/Solaris. It is possible to run on other \ platforms, but we have not provided the same level of validation." }], "Text"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["MSP Scripts", "Subsection"], Cell[TextData[{ "MSP scripts contain HTML that is marked up with ", StyleBox["Mathematica", FontSlant->"Italic"], " commands. They are easy to write and fit well with HTML development \ mechanisms such as HTML editors", ". ", "Here is a sample MSP script." }], "Text"], Cell["\<\ Expanding Polynomials

Expanding Polynomials

Enter a polynomial (eg x+y): Enter a positive integer (eg 4):
<%Mathlet MSPBlock[{$$expr,$$num}, Expand[$$expr^$$num]] %>
\ \>", "Program"], Cell[TextData[{ "This is very much standard HTML except for the Mathlet tag. This contains \ the ", StyleBox["Mathematica", FontSlant->"Italic"], " commands that are to be evaluated when the page is requested from the \ server. Here the input polynomial, referenced by the variable ", StyleBox["$$expr", "Input"], " is raised to the power given by ", StyleBox["$$num", "Input"], ", and expanded. The web page that is sent back to the client contains the \ computed result. ", StyleBox["MSPBlock", "Input"], " is a command provided by web", StyleBox["Mathematica", FontSlant->"Italic"], " for working with input sent with an HTTP request. There is a large \ collection of ", StyleBox["Mathematica", FontSlant->"Italic"], " commands for working with web requests and responses that take care of \ features such as plotting, formatting and typesetting, embedding applets", ", ", "and returning general content." }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell["Setting Up", "Subsection"], Cell[TextData[{ "Setting up a web", StyleBox["Mathematica", FontSlant->"Italic"], " site involves first installing and configuring a server that supports \ Java servlets. When this is running the web", StyleBox["Mathematica", FontSlant->"Italic"], " tools are then installed on the server. These contain all the material \ that is necessary to support the site", ", ", "including:" }], "Text"], Cell[TextData[{ "\[EmptyCircle] A ", StyleBox["Mathematica", FontSlant->"Italic"], " application", ". ", "Support for the ", StyleBox["Mathematica", FontSlant->"Italic"], " commands. " }], "Text"], Cell[TextData[{ "\[EmptyCircle] A ", StyleBox["Mathematica", FontSlant->"Italic"], " session manager. Software for launching and shutting down ", StyleBox["Mathematica", FontSlant->"Italic"], " sessions", ", ", "as well as support for configuring and monitoring." }], "Text"], Cell["\<\ \[EmptyCircle] A Web Application. An application for loading into \ the servlet container.\ \>", "Text"], Cell["\[EmptyCircle] Example MPS scripts.", "Text"], Cell["\[EmptyCircle] Sample configuration files.", "Text"], Cell["\[EmptyCircle] Documentation.", "Text"], Cell["\[EmptyCircle] Applets.", "Text"], Cell["\[EmptyCircle] Images.", "Text"] }, Open ]], Cell[CellGroupData[{ Cell["Technology Overview", "Subsection"], Cell[TextData[{ "The core of the web", StyleBox["Mathematica", FontSlant->"Italic"], " site is the MSP servlet. This uses the ", StyleBox["Mathematica", FontSlant->"Italic"], " session manager, a useful application which maintains a pool of ", StyleBox["Mathematica", FontSlant->"Italic"], " sessions which are waiting to be used. When a request is received, the \ MSP servlet obtains a ", StyleBox["Mathematica", FontSlant->"Italic"], " kernel and uses it to process the MSP script. When this is finished the \ kernel is returned to the pool and the result returned to the browser. A \ given ", StyleBox["Mathematica", FontSlant->"Italic"], " session is reused many times and this leads to an improvement in \ performance. This arrangement allows one server to work with more than one ", StyleBox["Mathematica", FontSlant->"Italic"], " kernel", ", ", "allowing concurrent computations." }], "Text"], Cell[TextData[{ "The result of a request to a web", StyleBox["Mathematica", FontSlant->"Italic"], " site can be anything that can be generated by ", StyleBox["Mathematica: ", FontSlant->"Italic"], "this includes HTML, MathML, XML, images and ", StyleBox["Mathematica", FontSlant->"Italic"], " notebooks. The results can interoperate with applets, javascript, \ plug-ins and Active-X controls." }], "Text"], Cell[TextData[{ "The ", StyleBox["Mathematica", FontSlant->"Italic"], " session manager takes care of launching and initializing ", StyleBox["Mathematica", FontSlant->"Italic"], " kernels. It also takes care of shutting down sessions that exceed some \ preset limit for computations", ". ", "The whole system is fully configurable to provide detailed control of a \ particular site." }], "Text"], Cell[TextData[{ "An overview of the steps in processing a page is shown below", ", ", "for the sake of illustration this has a ", StyleBox["Mathematica", FontSlant->"Italic"], " session pool with 3 sessions." }], "Text"], Cell[GraphicsData["PostScript", "\<\ %! %%Creator: Mathematica %%AspectRatio: .57407 MathPictureStart /Mabs { Mgmatrix idtransform Mtmatrix dtransform } bind def /Mabsadd { Mabs 3 -1 roll add 3 1 roll add exch } bind def %% Graphics %%IncludeResource: font Courier %%IncludeFont: Courier /Courier findfont 10 scalefont setfont % Scaling calculations 0.111993 0.176367 0.0136684 0.176367 [ [ 0 0 0 0 ] [ 1 .57407 0 0 ] ] MathScale % Start of Graphics 1 setlinecap 1 setlinejoin newpath 0 0 m 1 0 L 1 .57407 L 0 .57407 L closepath clip newpath % Start of user PostScript /mathtops { gsave MBeginOrig moveto MEndOrig currentpoint grestore } bind def /MAtocoords { mathtops 4 2 roll mathtops 4 copy pop pop 3 -1 roll sub /arry exch def exch sub /arrx exch def arrx dup mul arry dup mul add sqrt /arrl exch def translate } bind def /MAarrowhead1 { gsave MAtocoords arrl 0. eq { 0 0 Mdot } { [ arrx arrl div arry arrl div -1 arry mul arrl div arrx arrl div 0 0 ] concat -0.02 0.005 moveto 0 0 lineto -0.02 -0.005 lineto fill -0.02 0.005 moveto 0 0 lineto -0.02 -0.005 lineto -0.02 0.005 lineto stroke } ifelse grestore } def % End of user PostScript 0 g .5 Mabswid [ ] 0 setdash .02381 .01367 m .20018 .01367 L .20018 .19004 L .02381 .19004 L .02381 .01367 L s gsave .11199 .10185 -84 -8.90625 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 17.8125 translate 1 -1 scale 63.000 11.250 moveto %%IncludeResource: font Courier %%IncludeFont: Courier %%BeginResource: font Courier-MISO %%BeginFont: Courier-MISO /Courier /Courier-MISO MISOfy %%EndFont %%EndResource %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 11.250 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (Browser) show 105.000 11.250 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore .46473 .01367 m .64109 .01367 L .64109 .19004 L .46473 .19004 L .46473 .01367 L s gsave .55291 .10185 -84 -13.7812 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 27.5625 translate 1 -1 scale 63.000 11.250 moveto %%IncludeResource: font Courier %%IncludeFont: Courier %%BeginResource: font Courier-MISO %%BeginFont: Courier-MISO /Courier /Courier-MISO MISOfy %%EndFont %%EndResource %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 75.000 11.250 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (MSP) show 63.000 21.000 moveto (Servlet) show 105.000 21.000 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore .20018 .11949 m .46473 .11949 L s % Start of user PostScript 0.5 0.6 2. 0.6 MAarrowhead1 % End of user PostScript .46473 .08422 m .20018 .08422 L s % Start of user PostScript 2. 0.4 0.5 0.4 MAarrowhead1 % End of user PostScript gsave .33245 .12831 -93 -4 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 17.8125 translate 1 -1 scale 63.000 11.250 moveto %%IncludeResource: font Courier %%IncludeFont: Courier %%BeginResource: font Courier-MISO %%BeginFont: Courier-MISO /Courier /Courier-MISO MISOfy %%EndFont %%EndResource %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 11.250 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (1.) show 81.000 11.250 moveto (Request) show 123.000 11.250 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore gsave .33245 .06658 -96 -13.8125 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 17.8125 translate 1 -1 scale 63.000 11.250 moveto %%IncludeResource: font Courier %%IncludeFont: Courier %%BeginResource: font Courier-MISO %%BeginFont: Courier-MISO /Courier /Courier-MISO MISOfy %%EndFont %%EndResource %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 11.250 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (5.) show 81.000 11.250 moveto (Response) show 129.000 11.250 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore newpath .37654 .45459 .07055 0 365.73 arc s gsave .37654 .45459 -87 -8.90625 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 17.8125 translate 1 -1 scale 63.000 11.250 moveto %%IncludeResource: font Courier %%IncludeFont: Courier %%BeginResource: font Courier-MISO %%BeginFont: Courier-MISO /Courier /Courier-MISO MISOfy %%EndFont %%EndResource %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 11.250 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (Kernel) show 105.000 11.250 moveto (1) show 111.000 11.250 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore newpath .55291 .45459 .07055 0 365.73 arc s gsave .55291 .45459 -87 -8.90625 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 17.8125 translate 1 -1 scale 63.000 11.250 moveto %%IncludeResource: font Courier %%IncludeFont: Courier %%BeginResource: font Courier-MISO %%BeginFont: Courier-MISO /Courier /Courier-MISO MISOfy %%EndFont %%EndResource %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 11.250 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (Kernel) show 105.000 11.250 moveto (2) show 111.000 11.250 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore newpath .72928 .45459 .07055 0 365.73 arc s gsave .72928 .45459 -87 -8.90625 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 17.8125 translate 1 -1 scale 63.000 11.250 moveto %%IncludeResource: font Courier %%IncludeFont: Courier %%BeginResource: font Courier-MISO %%BeginFont: Courier-MISO /Courier /Courier-MISO MISOfy %%EndFont %%EndResource %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 11.250 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (Kernel) show 105.000 11.250 moveto (3) show 111.000 11.250 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore .53527 .19004 m .53527 .3664 L s % Start of user PostScript 2.4 1. 2.4 2. MAarrowhead1 % End of user PostScript .53527 .3664 m .53527 .19004 L s % Start of user PostScript 2.4 2. 2.4 1. MAarrowhead1 % End of user PostScript .57055 .19004 m .57055 .3664 L s % Start of user PostScript 2.6 1. 2.6 2. MAarrowhead1 % End of user PostScript gsave .51764 .30467 -161 -9.0625 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 18.125 translate 1 -1 scale 63.000 11.562 moveto %%IncludeResource: font Courier %%IncludeFont: Courier %%BeginResource: font Courier-MISO %%BeginFont: Courier-MISO /Courier /Courier-MISO MISOfy %%EndFont %%EndResource %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 11.562 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (2.) show 81.000 11.562 moveto (Obtain) show 123.000 11.562 moveto (Kernel) show 159.000 11.562 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore gsave .58818 .25176 -61 -8.90625 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 17.8125 translate 1 -1 scale 63.000 11.250 moveto %%IncludeResource: font Courier %%IncludeFont: Courier %%BeginResource: font Courier-MISO %%BeginFont: Courier-MISO /Courier /Courier-MISO MISOfy %%EndFont %%EndResource %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 11.250 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (4.) show 81.000 11.250 moveto (Return) show 123.000 11.250 moveto (Kernel) show 159.000 11.250 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore .64109 .10185 m .8351 .10185 L s % Start of user PostScript 3. 0.5 4.1 0.5 MAarrowhead1 % End of user PostScript .8351 .10185 m .64109 .10185 L s % Start of user PostScript 4.1 0.5 3. 0.5 MAarrowhead1 % End of user PostScript gsave .72928 .10185 -84 -18.6562 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 37.3125 translate 1 -1 scale 63.000 11.250 moveto %%IncludeResource: font Courier %%IncludeFont: Courier %%BeginResource: font Courier-MISO %%BeginFont: Courier-MISO /Courier /Courier-MISO MISOfy %%EndFont %%EndResource %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 11.250 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (3.) show 81.000 11.250 moveto (Page) show 63.000 30.750 moveto (Process) show 105.000 30.750 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore [ .005 ] 0 setdash newpath .90564 .10185 .07055 0 365.73 arc s gsave .90564 .10185 -90 -13.7812 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 27.5625 translate 1 -1 scale 63.000 11.250 moveto %%IncludeResource: font Courier %%IncludeFont: Courier %%BeginResource: font Courier-MISO %%BeginFont: Courier-MISO /Courier /Courier-MISO MISOfy %%EndFont %%EndResource %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 69.000 11.250 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (Kernel) show 63.000 21.000 moveto (from) show 93.000 21.000 moveto (pool) show 117.000 21.000 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore [ .01 ] 0 setdash .28836 .3664 m .81746 .3664 L .81746 .54277 L .28836 .54277 L .28836 .3664 L s gsave .55291 .56041 -96 -8.90625 Mabsadd m 1 1 Mabs scale currentpoint translate /MISOfy { /newfontname exch def /oldfontname exch def oldfontname findfont dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end newfontname exch definefont pop } def 0 17.8125 translate 1 -1 scale 63.000 11.250 moveto %%IncludeResource: font Courier %%IncludeFont: Courier %%BeginResource: font Courier-MISO %%BeginFont: Courier-MISO /Courier /Courier-MISO MISOfy %%EndFont %%EndResource %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 63.000 11.250 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor (Kernel) show 105.000 11.250 moveto (Pool) show 129.000 11.250 moveto %%IncludeResource: font Courier-MISO %%IncludeFont: Courier-MISO /Courier-MISO findfont 10.000 scalefont [1 0 0 -1 0 0 ] makefont setfont 0.000 0.000 0.000 setrgbcolor 0.000 0.000 rmoveto 1.000 setlinewidth grestore % End of Graphics MathPictureEnd \ \>"], "Graphics", CellFrame->False, CellMargins->{{20, Inherited}, {Inherited, Inherited}}, ImageSize->{450.625, 258.438}, ImageMargins->{{0, 0}, {0, 0}}, ImageRegion->{{0, 1}, {0, 1}}, ImageCache->GraphicsData["Bitmap", "\<\ CF5dJ6E]HGAYHf4PAg9QL6QYHgool00`00ooooo`03ool40002ool01000oooo o`000_oo00<00?ooool07_oo00<00?ooool0>Ooo0P003?oo000;ool00`00ooooo`1?oo00<00?ooool02ooo000;ool00`00ooooo`1ooo0`00=Ooo00<00?ooool0COoo00<00?ooool0 4Ooo0P003_oo1000<_oo00<00?ooool0=_oo00<00?ooool03?oo000;ool00`00ooooo`1ool000_oo`03003ooooo04coo`03003ooooo01go o`03003ooooo00goo`04003ooooo0003ool20004ool600000ooo00000003ool20003ool400000ooo 00000003000Nool00`00ooooo`1=ool00`00ooooo`2=ool00`00ooooo`0?ool000_oo`03003ooooo 04coo`03003ooooo01goo`03003ooooo00goo`04003ooooo000Pool00`00ooooo`0Oool00`00oooo o`1=ool00`00ooooo`1Jool00`00ooooo`0`ool00`00ooooo`0?ool000_oo`03003ooooo04coo`03 003ooooo01coo`8000koo`@004?oo`03003ooooo04goo`03003ooooo05_oo`03003ooooo02goo`03 003ooooo017oo`002ooo00<00?ooool0C?oo00<00?ooool0Looo00<00?ooool0COoo00<00?ooool0 G?oo00<00?ooool0;?oo00<00?ooool04Ooo000;ool00`00ooooo`1 ool00`00ooooo`2oool00>ooo`<000koo`03003ooooo0;ooo`00kooo0`003_oo00<00?ooool0_ooo 003_ool3000>ool00`00ooooo`2oool00>koo`D000goo`03003ooooo0;ooo`00k_oo1@003Ooo00<0 0?ooool0_ooo003^ool5000=ool00`00ooooo`2oool00?3oo`03003ooooo00goo`03003ooooo0;oo o`00l?oo00<00?ooool03Ooo00<00?ooool0_ooo003`ool00`00ooooo`0=ool00`00ooooo`2oool0 0?3oo`03003ooooo00goo`03003ooooo0;ooo`00l?oo00<00?ooool03Ooo00<00?ooool0_ooo003` ool00`00ooooo`0=ool00`00ooooo`2oool00?3oo`03003ooooo00goo`03003ooooo0;ooo`00l?oo 00<00?ooool03Ooo00<00?ooool0_ooo003`ool00`00ooooo`0=ool00`00ooooo`2oool00?3oo`03 003ooooo00goo`03003ooooo0;ooo`00l?oo00<00?ooool03Ooo00<00?ooool0_ooo003`ool00`00 ooooo`0=ool00`00ooooo`2oool00?3oo`03003ooooo00goo`03003ooooo0;ooo`00l?oo00<00?oo ool03Ooo00<00?ooool0_ooo003`ool00`00ooooo`0=ool00`00ooooo`2oool00?3oo`03003ooooo 00goo`03003ooooo0;ooo`00l?oo00<00?ooool03Ooo00<00?ooool0_ooo003`ool00`00ooooo`0= ool00`00ooooo`0:ool30002ool20008ool30002ool00`00ooooo`030003ool20004ool400000ooo 0000000200000ooo00000002ool20006ool300000ooo00000002ool30002ool400000ooo00000002 ool20002ool30002ool3001Jool00?3oo`03003ooooo00goo`03003ooooo00_oo`03003ooooo00co o`04003ooooo0002ool00`00ooooo`03ool01000ooooo`000_oo00@00?ooool000?oo`03003ooooo 00;oo`04003ooooo0008ool01000ooooo`000_oo00<00?ooool01?oo00<00?ooool00_oo00@00?oo ool000;oo`03003ooooo00Coo`03003ooooo05Woo`00l?oo00<00?ooool03Ooo00<00?ooool02?oo 1@003Ooo0`000ooo10000_oo00<00?ooool00ooo00@00?ooool000?oo`03003ooooo00;oo`04003o oooo0008ool30003ool40003ool00`00ooooo`02ool01000ooooo`000_oo10000ooo00<00?ooool0 FOoo003`ool00`00ooooo`0=ool00`00ooooo`08ool01000ooooo`003_oo00@00?ooool000?oo`80 00;oo`D00004ool00000ool20002ool400000ooo000000020009ool00`00ool00004ool20003ool4 00000ooo000000020004ool20004ool00`00ooooo`1Iool00?3oo`03003ooooo00goo`03003ooooo 00Woo`03003oo`0000koo`04003ooooo0008ool00`00ooooo`0Kool01000ooooo`006ooo00<00?oo ool0FOoo003`ool00`00ooooo`0=ool00`00ooooo`0:ool2000=ool4000Vool300000ooo0000000I ool2001Kool00?3oo`03003ooooo00goo`03003ooooo0;ooo`00l?oo00<00?ooool03Ooo00<00?oo ool0_ooo003`ool00`00ooooo`0=ool00`00ooooo`2oool00?3oo`03003ooooo00goo`03003ooooo 0;ooo`00l?oo00<00?ooool03Ooo00<00?ooool0_ooo003`ool00`00ooooo`0=ool00`00ooooo`2o ool00?3oo`03003ooooo00goo`03003ooooo0;ooo`00l?oo00<00?ooool03Ooo00<00?ooool0_ooo 003`ool00`00ooooo`0=ool00`00ooooo`2oool00?3oo`03003ooooo00goo`03003ooooo0;ooo`00 l?oo00<00?ooool03Ooo00<00?ooool0_ooo003`ool00`00ooooo`0=ool00`00ooooo`2oool00?3o o`03003ooooo00goo`03003ooooo0;ooo`00l?oo00<00?ooool03Ooo00<00?ooool0_ooo003`ool0 0`00ooooo`0=ool00`00ooooo`2oool00?3oo`03003ooooo00goo`03003ooooo0;ooo`00l?oo00<0 0?ooool03Ooo00<00?ooool0_ooo0027ool40003ool2000:ool20002ool40004ool20003ool50002 ool300000ooo00000002ool20006ool300000ooo00000002ool30002ool400000ooo00000002ool2 0002ool30002ool3000koo`D000_oo`D00;ooo`00k_oo1@002ooo1@00_ooo003_ool3000=ool30030ool0 0>ooo`<000goo`<00<3oo`00kooo0`003Ooo0`00`?oo003_ool3000=ool30030ool00?3oo`03003o oooo00goo`03003ooooo0;ooo`00l?oo00<00?ooool03Ooo00<00?ooool0_ooo0021ool60003ool6 0003ool60003ool60003ool60003ool60003ool60003ool60003ool60003ool60003ool60003ool6 0003ool50004ool50004ool50004ool50004ool50004ool50004ool50004ool50004ool50004ool5 0004ool50004ool50004ool50004ool50004ool5001Bool0087oo`03003ooooo0>_oo`03003ooooo 053oo`00POoo00<00?ooool0oooo?ooo0021ool00`00ooooo`3oooloool0087oo`03003ooooo0?oo ocooo`00POoo00<00?ooool0jooo00<00?ooool0D?oo003ooom`ool00`00ooooo`1@ool00?ooog3o o`03003ooooo053oo`00Y_oo1`00B?oo1`00B?oo1`009?oo00<00?ooool0D?oo002Qool50007ool7 000lool50007ool7000lool50007ool7000Mool00`00ooooo`1@ool0087oo`03003ooooo01[oo`<0 01?oo`8003Ooo`<001?oo`8003Ooo`<001?oo`8001_oo`03003ooooo053oo`00POoo00<00?ooool0 6?oo0P006?oo00<00?ooool0<_oo0P006?oo00<00?ooool0<_oo0P006?oo0P00K?oo0021ool00`00 ooooo`0Fool2000Kool2000`ool2000Kool2000`ool2000Lool2001Zool0087oo`03003ooooo01Co o`8001ooo`8002coo`8001ooo`8002coo`80023oo`03003ooooo06Ooo`00POoo00<00?ooool04_oo 0P008ooo0P00:Ooo00<00?ooool08Ooo0P00:Ooo00<00?ooool08Ooo0P005?oo00<00?ooool0D?oo 002Eool00`00ooooo`0Uool00`00ooooo`0Tool2000Vool00`00ooooo`0Tool2000Vool00`00oooo o`0Aool00`00ooooo`1@ool009Coo`03003ooooo02Ooo`03003ooooo02;oo`03003ooooo02Ooo`03 003ooooo02;oo`03003ooooo02Ooo`03003ooooo013oo`03003ooooo053oo`00Tooo00<00?ooool0 :Ooo00<00?ooool08?oo00<00?ooool0:Ooo00<00?ooool08?oo00<00?ooool0:Ooo00<00?ooool0 3ooo00<00?ooool0D?oo002Bool00`00ooooo`0[ool00`00ooooo`0Nool00`00ooooo`0[ool00`00 ooooo`0Nool00`00ooooo`0[ool00`00ooooo`0>ool00`00ooooo`1@ool0087oo`03003ooooo00go o`03003ooooo02coo`03003ooooo01goo`03003ooooo02coo`03003ooooo01goo`03003ooooo02co o`03003ooooo00koo`03003ooooo053oo`00POoo00<00?ooool03Ooo00<00?ooool0;Ooo00<00?oo ool07?oo00<00?ooool0;Ooo00<00?ooool07?oo00<00?ooool0;Ooo00<00?ooool0H?oo0021ool0 0`00ooooo`0?oo00<00?ooool04Ooo00<00?ooool0 >?oo00<00?ooool04Ooo00<00?ooool0>?oo00<00?ooool0Fooo0021ool00`00ooooo`07ool00`00 ooooo`0iool00`00ooooo`0@ool00`00ooooo`0iool00`00ooooo`0@ool00`00ooooo`0iool00`00 ooooo`1Jool0087oo`03003ooooo00Ooo`03003ooooo03Woo`03003ooooo013oo`03003ooooo03Wo o`03003ooooo013oo`03003ooooo03Woo`03003ooooo05[oo`00POoo00<00?ooool01_oo00<00?oo ool0>ooo00<00?ooool03_oo00<00?ooool0>ooo00<00?ooool03_oo00<00?ooool0>ooo00<00?oo ool01_oo00<00?ooool0D?oo002:ool00`00ooooo`0kool00`00ooooo`0>ool00`00ooooo`0kool0 0`00ooooo`0>ool00`00ooooo`0kool00`00ooooo`06ool00`00ooooo`1@ool008[oo`03003ooooo 03_oo`03003ooooo00koo`03003ooooo03_oo`03003ooooo00koo`03003ooooo03_oo`03003ooooo 00Koo`03003ooooo053oo`00R_oo00<00?ooool0>ooo00<00?ooool03_oo00<00?ooool0>ooo00<0 0?ooool03_oo00<00?ooool0>ooo00<00?ooool01_oo00<00?ooool0D?oo002:ool00`00ooooo`0k ool00`00ooooo`0>ool00`00ooooo`0lool00`00ooooo`0=ool00`00ooooo`0lool00`00ooooo`05 ool00`00ooooo`1@ool0087oo`03003ooooo00Goo`03003ooooo03coo`03003ooooo00koo`03003o oooo03coo`03003ooooo00goo`03003ooooo03coo`03003ooooo00Goo`03003ooooo053oo`00POoo 00<00?ooool01Ooo00<00?ooool0?Ooo00<00?ooool03?oo00<00?ooool0?Ooo00<00?ooool03Ooo 00<00?ooool0??oo00<00?ooool0F?oo0021ool00`00ooooo`05ool00`00ooooo`05ool300000ooo 00000002ool30002ool400000ooo00000002ool20002ool30002ool30009ool50008ool00`00oooo o`0ool00`00ooooo`0kool00`00ooooo`0>ool00`00ooooo`0kool00`00ooooo`06ool0 0`00ooooo`1@ool0087oo`03003ooooo00Koo`03003ooooo03_oo`03003ooooo00koo`03003ooooo 03_oo`03003ooooo00koo`03003ooooo03_oo`03003ooooo00Koo`03003ooooo053oo`00POoo00<0 0?ooool01_oo00<00?ooool0>ooo00<00?ooool03_oo00<00?ooool0>ooo00<00?ooool03_oo00<0 0?ooool0>ooo00<00?ooool0FOoo0021ool00`00ooooo`06ool00`00ooooo`0kool00`00ooooo`0> ool00`00ooooo`0kool00`00ooooo`0>ool00`00ooooo`0kool00`00ooooo`1Iool0087oo`03003o oooo00Ooo`03003ooooo03Woo`03003ooooo013oo`03003ooooo03Woo`03003ooooo013oo`03003o oooo03Woo`03003ooooo05[oo`00POoo00<00?ooool01ooo00<00?ooool0>Ooo00<00?ooool04?oo 00<00?ooool0>Ooo00<00?ooool04?oo00<00?ooool0>Ooo00<00?ooool01ooo00<00?ooool0D?oo 002;ool00`00ooooo`0hool00`00ooooo`0Aool00`00ooooo`0hool00`00ooooo`0Aool00`00oooo o`0hool00`00ooooo`08ool00`00ooooo`1@ool008_oo`03003ooooo03Soo`03003ooooo01;oo`03 003ooooo03Ooo`03003ooooo01;oo`03003ooooo03Ooo`03003ooooo00Soo`03003ooooo053oo`00 S?oo00<00?ooool0=ooo00<00?ooool04_oo00<00?ooool0=ooo00<00?ooool04_oo00<00?ooool0 =ooo00<00?ooool02?oo00<00?ooool0D?oo002_o o`03003ooooo053oo`00POoo00<00?ooool0oooo?ooo0021ool00`00ooooo`3oooloool0087oo`03 003ooooo0?ooocooo`00POoo00<00?ooool0jooo00<00?ooool0D?oo003ooom`ool00`00ooooo`1@ ool008?oo`H000?oo`H000?oo`H000?oo`H000?oo`H000?oo`H000?oo`H000?oo`H000?oo`H000?o o`H000?oo`H000?oo`H000?oo`H000?oo`H000?oo`D000Coo`D000Coo`D000Coo`D000Coo`D000Co o`D000Coo`D000Coo`D000Coo`D000Coo`D000Coo`D000Coo`D000Coo`<005;oo`00oooo`ooo003o ooo3ool00?oool?oo`00oooo`ooo003oooo3ool00?oool?oo`00eooo0`0000?oo`0000000_oo0`00 0_oo100000?oo`0000000_oo0P000_oo0`000_oo0`002?oo0`001Ooo0P001?oo0P000ooo0`00Zooo 003Hool01000ooooo`000_oo00<00?ooool01?oo00<00?ooool00_oo00@00?ooool000;oo`03003o oooo00Coo`03003ooooo00Soo`03003ooooo00?oo`04003ooooo0002ool01000ooooo`000ooo00<0 0?ooool0Z_oo003Hool30003ool40003ool00`00ooooo`02ool01000ooooo`000_oo10000ooo00<0 0?ooool02?oo0`000ooo00@00?ooool000;oo`04003ooooo0003ool00`00ooooo`2Zool00=Soo`03 003oo`0000Coo`8000?oo`@00003ool00000008000Coo`8000Coo`03003ooooo00Soo`04003ooooo 0003ool20004ool20004ool00`00ooooo`2Zool00=Soo`04003ooooo000Kool00`00ooooo`08ool0 1000ooooo`003ooo00<00?ooool0Z_oo003Gool300000ooo0000000Iool20009ool4000?ool2002/ ool00?oool?oo`00oooo`ooo0000\ \>"], ImageRangeCache->{{{74, 523.625}, {639.562, 382.125}} -> {-1.57815, \ 4.75402, 0.0126439, 0.0126439}}], Cell[CellGroupData[{ Cell[TextData[{ "The Number of", StyleBox[" ", FontSlant->"Italic"], "Processes" }], "Subsubsection"], Cell[TextData[{ "web", StyleBox["Mathematica", FontSlant->"Italic"], " provides automatic ", StyleBox["Mathematica", FontSlant->"Italic"], " pooling. Requests will take ", StyleBox["Mathematica", FontSlant->"Italic"], " sessions until none are available; further requests wait until a ", StyleBox["Mathematica", FontSlant->"Italic"], " session is available. Since several computations are being done at the \ same time", ", ", "this is a form of threading or parallel computation. " }], "Text"], Cell[TextData[{ "web", StyleBox["Mathematica", FontSlant->"Italic"], " can work with multiple ", StyleBox["Mathematica", FontSlant->"Italic"], " processes, but the optimal number of processes suitable for an individual \ site is a very difficult to determine in general. There are many different \ parameters and no simple formula", ". " }], "Text"], Cell[TextData[{ "Typically a server benefits from threads because one request may need to \ wait for something, for example reading from or writing to a file, loading a \ DLL, or launching an external process. All of these are opportunities for the \ server to run some other thread. With web", StyleBox["Mathematica", FontSlant->"Italic"], " these do not apply so readily, ", StyleBox["Mathematica", FontSlant->"Italic"], " is often computing", ", ", "the system sits in some tight loop crunching away until it gets your \ result." }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell["Some Points", "Subsubsection"], Cell[TextData[{ "On a single CPU if you run one ", StyleBox["Mathematica", FontSlant->"Italic"], " calculation that takes 20 seconds", ", ", "the same calculation run simultaneously on 10 ", StyleBox["Mathematica", FontSlant->"Italic"], " processes will take 200 seconds. " }], "Text"], Cell[TextData[{ "If you have a multi-processor machine you can benefit from as many ", StyleBox["Mathematica", FontSlant->"Italic"], " sessions as you have processors", ". " }], "Text"], Cell[TextData[{ "If your system is running at a low load or a high load it does not really \ matter how many ", StyleBox["Mathematica", FontSlant->"Italic"], " processes you have. You can gain some advantage in some middle range", ", ", "this is probably more useful if you have a wide variation in the time \ required for computations. " }], "Text"], Cell[TextData[{ "A major factor is the time that the computation takes in ", StyleBox["Mathematica", FontSlant->"Italic"], ", you can measure this with the ", StyleBox["Mathematica", FontSlant->"Italic"], " ", StyleBox["Timing", "Input"], " command. web", StyleBox["Mathematica", FontSlant->"Italic"], " gives very efficient access to the ", StyleBox["Mathematica", FontSlant->"Italic"], ", there is some small fixed cost for each request", ", ", "but the time is dominated by the computation." }], "Text"], Cell[TextData[{ "web", StyleBox["Mathematica", FontSlant->"Italic"], " scales linearly with the time for computations and the number of \ computations. Scaling linearly means that there are no hidden bottle necks \ and that you can solve performance problems by improving hardware." }], "Text"] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ "web", StyleBox["Mathematica", FontSlant->"Italic"], " Licensing" }], "Section"], Cell[TextData[{ "There are two licenses for web", StyleBox["Mathematica", FontSlant->"Italic"], ". ", "Note that the number of users of your web site does not influence the \ license. " }], "Text"], Cell[CellGroupData[{ Cell[TextData[{ "web", StyleBox["Mathematica", FontSlant->"Italic"], " Amateur" }], "Subsection"], Cell[TextData[{ "This is a low-cost version intended for non-commercial use. Web sites must \ display a web", StyleBox["Mathematica", FontSlant->"Italic"], " banner and must be freely accessible." }], "Text"], Cell[TextData[{ "The Amateur license is provided as a benefit of ", StyleBox["Mathematica", FontSlant->"Italic"], " subscription, premier service. Certain special purchase programs provide \ a number of web", StyleBox["Mathematica", FontSlant->"Italic"], " Amateur licenses." }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ "web", StyleBox["Mathematica", FontSlant->"Italic"], " Professional" }], "Subsection"], Cell["\<\ This is for restricted web sites, commercial or in some type of \ intranet. If the site is part of the materials for an on-line course \ restricted to particular students, this would need the Professional \ version.\ \>", "Text"], Cell[TextData[{ "The professional license also has some restrictions: sites cannot allow \ general ", StyleBox["Mathematica", FontSlant->"Italic"], " access and cannot replicate ", StyleBox["Mathematica", FontSlant->"Italic"], " 'look and feel'. " }], "Text"], Cell[TextData[{ "The cost of a professional license is a premium over regular ", StyleBox["Mathematica", FontSlant->"Italic"], ", but remember that volume discounts apply. If you are part of a special \ purchase program with discounts, which can be significant, these will apply \ to web", StyleBox["Mathematica", FontSlant->"Italic"], "." }], "Text"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell["Summary", "Section"], Cell[TextData[{ "web", StyleBox["Mathematica", FontSlant->"Italic"], " allows a web server to generate dynamic content with ", StyleBox["Mathematica", FontSlant->"Italic"], ". It is driven by a technology called ", StyleBox["Mathematica", FontSlant->"Italic"], " Server Pages. MSP technology works by placing MSP scripts, HTML pages \ that contain ", StyleBox["Mathematica", FontSlant->"Italic"], " commands, on your server. When a request for a page is received these \ commands are evaluated by ", StyleBox["Mathematica", FontSlant->"Italic"], " and the result is returned. MSP technology is based on Java servlets", ", ", "a standard and fully supported Web technology. They are fully integrated \ with many client and server web technologies." }], "Text"], Cell[TextData[{ "WRI provides the necessary tools for a Java servlet enabled web server", ". ", "It is necessary for someone wanting to host a web", StyleBox["Mathematica", FontSlant->"Italic"], " site to provide the server. " }], "Text"], Cell[TextData[{ "More information on web", StyleBox["Mathematica", FontSlant->"Italic"], " can be found at ", ButtonBox["http://www.wolfram.com/products/webmathematica", ButtonData:>{ URL[ "http://www.wolfram.com/products/webmathematica"], None}, ButtonStyle->"Hyperlink"], ", and examples of web", StyleBox["Mathematica", FontSlant->"Italic"], " can be found at ", ButtonBox["http://library.wolfram.com/explorations", ButtonData:>{ URL[ "http://library.wolfram.com/explorations"], None}, ButtonStyle->"Hyperlink"], "." }], "Text"] }, Open ]] }, Open ]] }, FrontEndVersion->"4.1 for X", ScreenRectangle->{{0, 1024}, {0, 768}}, ScreenStyleEnvironment->"Working", WindowSize->{710, 687}, WindowMargins->{{87, Automatic}, {Automatic, 20}}, PrintingCopies->1, PrintingPageRange->{Automatic, Automatic}, PrintingOptions->{"PaperSize"->{612, 792}, "PaperOrientation"->"Portrait", "PostScriptOutputFile":>FrontEnd`FileName[{$RootDirectory, "home", "twj"}, \ "Japan.nb.ps", CharacterEncoding -> "ISO8859-1"], "Magnification"->1}, Magnification->1, StyleDefinitions -> "ArticleClassic.nb" ] (******************************************************************* Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. *******************************************************************) (*CellTagsOutline CellTagsIndex->{ "IntroMSP"->{ Cell[12622, 408, 799, 18, 90, "Text", CellTags->"IntroMSP"], Cell[13424, 428, 439, 12, 58, "Text", CellTags->"IntroMSP"]} } *) (*CellTagsIndex CellTagsIndex->{ {"IntroMSP", 73280, 2122} } *) (*NotebookFileOutline Notebook[{ Cell[CellGroupData[{ Cell[1727, 52, 88, 4, 85, "Title"], Cell[1818, 58, 67, 3, 60, "Subtitle"], Cell[1888, 63, 32, 0, 53, "Subsubtitle"], Cell[CellGroupData[{ Cell[1945, 67, 31, 0, 55, "Section"], Cell[1979, 69, 322, 12, 42, "Text"], Cell[CellGroupData[{ Cell[2326, 85, 112, 5, 41, "Subsection"], Cell[2441, 92, 650, 14, 90, "Text"], Cell[3094, 108, 382, 9, 58, "Text"], Cell[3479, 119, 535, 18, 58, "Text"], Cell[4017, 139, 909, 22, 106, "Text"], Cell[4929, 163, 526, 11, 74, "Text"], Cell[5458, 176, 218, 8, 26, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[5713, 189, 42, 0, 41, "Subsection"], Cell[5758, 191, 159, 5, 26, "Text"], Cell[5920, 198, 146, 3, 26, "Text"], Cell[6069, 203, 486, 12, 58, "Text"], Cell[6558, 217, 203, 4, 42, "Text"], Cell[6764, 223, 227, 9, 26, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[7028, 237, 44, 0, 41, "Subsection"], Cell[7075, 239, 1331, 27, 154, "Text"], Cell[8409, 268, 252, 6, 42, "Text"], Cell[8664, 276, 208, 6, 42, "Text"], Cell[8875, 284, 279, 9, 42, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[9191, 298, 34, 0, 41, "Subsection"], Cell[9228, 300, 146, 5, 26, "Text"], Cell[9377, 307, 223, 6, 26, "Text"], Cell[9603, 315, 403, 14, 42, "Text"], Cell[10009, 331, 184, 6, 26, "Text"], Cell[10196, 339, 217, 7, 26, "Text"], Cell[10416, 348, 216, 6, 26, "Text"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[10681, 360, 41, 0, 55, "Section"], Cell[10725, 362, 865, 13, 122, "Text"], Cell[11593, 377, 518, 10, 74, "Text"], Cell[12114, 389, 368, 8, 58, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[12519, 402, 100, 4, 55, "Section"], Cell[12622, 408, 799, 18, 90, "Text", CellTags->"IntroMSP"], Cell[13424, 428, 439, 12, 58, "Text", CellTags->"IntroMSP"], Cell[CellGroupData[{ Cell[13888, 444, 34, 0, 41, "Subsection"], Cell[13925, 446, 389, 9, 58, "Text"], Cell[CellGroupData[{ Cell[14339, 459, 34, 0, 32, "Subsubsection"], Cell[14376, 461, 241, 5, 42, "Text"], Cell[14620, 468, 299, 8, 42, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[14956, 481, 34, 0, 32, "Subsubsection"], Cell[14993, 483, 154, 5, 26, "Text"], Cell[15150, 490, 95, 3, 26, "Text"], Cell[15248, 495, 89, 3, 26, "Text"], Cell[15340, 500, 475, 10, 74, "Text"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[15864, 516, 33, 0, 41, "Subsection"], Cell[15900, 518, 282, 8, 42, "Text"], Cell[16185, 528, 609, 23, 340, "Program"], Cell[16797, 553, 962, 24, 106, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[17796, 582, 32, 0, 41, "Subsection"], Cell[17831, 584, 415, 12, 58, "Text"], Cell[18249, 598, 218, 10, 26, "Text"], Cell[18470, 610, 297, 10, 42, "Text"], Cell[18770, 622, 114, 3, 26, "Text"], Cell[18887, 627, 51, 0, 26, "Text"], Cell[18941, 629, 58, 0, 26, "Text"], Cell[19002, 631, 45, 0, 26, "Text"], Cell[19050, 633, 39, 0, 26, "Text"], Cell[19092, 635, 38, 0, 26, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[19167, 640, 41, 0, 41, "Subsection"], Cell[19211, 642, 954, 26, 106, "Text"], Cell[20168, 670, 431, 12, 58, "Text"], Cell[20602, 684, 417, 12, 58, "Text"], Cell[21022, 698, 234, 7, 42, "Text"], Cell[21259, 707, 43807, 1116, 267, 17526, 786, "GraphicsData", "PostScript", \ "Graphics"], Cell[CellGroupData[{ Cell[65091, 1827, 111, 5, 32, "Subsubsection"], Cell[65205, 1834, 532, 17, 58, "Text"], Cell[65740, 1853, 369, 11, 42, "Text"], Cell[66112, 1866, 566, 14, 74, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[66715, 1885, 36, 0, 32, "Subsubsection"], Cell[66754, 1887, 307, 10, 42, "Text"], Cell[67064, 1899, 197, 6, 26, "Text"], Cell[67264, 1907, 364, 9, 58, "Text"], Cell[67631, 1918, 548, 18, 58, "Text"], Cell[68182, 1938, 304, 7, 42, "Text"] }, Open ]] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[68547, 1952, 106, 5, 55, "Section"], Cell[68656, 1959, 209, 7, 26, "Text"], Cell[CellGroupData[{ Cell[68890, 1970, 107, 5, 41, "Subsection"], Cell[69000, 1977, 218, 6, 42, "Text"], Cell[69221, 1985, 305, 9, 42, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[69563, 1999, 112, 5, 41, "Subsection"], Cell[69678, 2006, 239, 5, 42, "Text"], Cell[69920, 2013, 277, 9, 42, "Text"], Cell[70200, 2024, 369, 10, 42, "Text"] }, Open ]] }, Open ]], Cell[CellGroupData[{ Cell[70618, 2040, 26, 0, 55, "Section"], Cell[70647, 2042, 805, 22, 90, "Text"], Cell[71455, 2066, 252, 7, 42, "Text"], Cell[71710, 2075, 585, 18, 42, "Text"] }, Open ]] }, Open ]] } ] *) (******************************************************************* End of Mathematica Notebook file. *******************************************************************)