(************** 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
\
\>", "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.
*******************************************************************)