Choosing a Procedural LanguageAs mentioned above, most of the time your procedural code, a.k.a."Web scripts", will be doing little more than querying the RDBMS andmerging the results with an HTML, XHTML Mobile Profile, orVoiceXML template. So your productivity and code maintainabilitywon't be affected much by your choice of procedural language.That said, let us put in a kind word <strong>for</strong> scripting languages. If youneed to write some heavy-duty abstractions you can always do thosein Java running inside Oracle or C# running within Microsoft .NET.But <strong>for</strong> your presentation layer, i.e., individual pages, don't overlookthe advantages of using simpler and terser languages such as Perl,Tcl, and Visual Basic.Choosing an Execution EnvironmentBelow are some things to look <strong>for</strong> when choosing Web servers andWeb/application servers.one URL = one fileThe first thing you should look <strong>for</strong> in an execution environment is theproperty that one user-visible URL corresponds to one file in the filesystem. It is much faster to debug a system if, given a complaintabout http://photo.net/foobar you can know that you'll find theresponsible computer program in the file system at/web/photonet/www/foobar.something. Programming environmentswhere this is true• Perl CGI• Microsoft Active Server Pages• Java Server Pages• AOLserver ADP templates and .tcl scriptsA notable exception to this property is Java servlets. One servlettypically processes several URLs. This proves cumbersome inpractice because it slows you down when trying to fix a bug insomeone else's code. The ideas of modularity and code reuse arenice but try to think about how many files a programmer must wadethrough in order to fix a bug. One is great. Two is probably okay. Nwhere N is uncertain is not okay.requests yesterday to 2,039 different computers; the mostpopular file was /samoyed-faces.html".Magnet ContentMaterial authored by a publisher in hopes of establishing anonline community. In the long-run, a majority of the contentin an successful community site will be user-authored.MiddlewareA vague term that, when used in the context of <strong>Internet</strong>applications, means "software sold to people who don'tknow how to program by people who know how to program."In theory, middleware sits between your relational databasemanagement system and your application program andmakes the whole system run more reliably, just like adding abunch of extra moving parts to your car would make it morereliable.MIMEMulti-Purpose <strong>Internet</strong> Mail Extensions. Developed in 1991by Nathan Borenstein of Bellcore so that people couldinclude images and other non-plain-text documents in e-mailmessages. MIME is a critical standard <strong>for</strong> the World WideWeb because an HTTP server answering a request alwaysincludes the MIME type of the document served. Forexample, if a browser requests "foobar.jpg", the server willreturn a MIME type of "image/jpeg". The Web browser willdecide, based on this type, whether or not to attempt torender the document. A JPEG image can be rendered by allmodern Web browsers. If, <strong>for</strong> example, a Web browser seesa MIME type of "application/x-pilot" (<strong>for</strong> the .prc files thatPalmPilots employ) the browser will invite the user to savethe document to disk or select an appropriate application tolaunch <strong>for</strong> this kind of document.Multi-modalA multi-modal user interface allows you to interact with apiece of software in a variety of means simultaneously. Forexample, you may be able to communicate using akeyboard or stylus, or with your voice, or even with hand orface gestures. These are all "modes" of communication. Theadvent of GPRS makes simultaneous voice/keypadinteraction possible on cellular telephones.Operating System (OS)A big complicated computer program that lets multiplesimultaneously executing big complicated computerprograms coexist peacefully on one physical computer. Theoperating system is also responsible <strong>for</strong> hiding the details ofthe computer hardware from the application programmers,e.g., letting a programmer say "I want to write ABC into a file28321
LDAPLinuxbits per color, a vastly smaller range of intensities than ispresent in the natural world and significantly smaller thanthe 12- and 14-bits-per-color signals that come out of thebest digital scanners and cameras. This defect and moreare remedied in the JPEG 2000 standard. Seewww.jpeg.org <strong>for</strong> more about the standard.Lightweight Directory Access Protocol. A typical LDAPserver is a simple network-accessible database where anorganization stores in<strong>for</strong>mation about its authorized usersand what privileges each user has. Thus rather than createa new employee an account on 50 different computers, thenew employee is entered into LDAP and granted rights tothose 50 systems. If the employee leaves, revoking allprivileges is as simple as removing one entry in the LDAPdirectory. LDAP is a bit confusing because originalimplementations were presented as alternatives to Web andthe relational database management system. Nowadaysmany LDAP servers are implemented using standardRDBMSes underneath and they talk to the rest of the worldvia XML documents served over HTTP.A free version of the Unix operating system, primarilycomposed of tools developed over a 15-year period byRichard Stallman and Project GNU. However, the finalspectacular push was provided by Linus Torvalds who wrotea kernel (completed in 1994), organized a bunch ofprogrammers <strong>Internet</strong>-wide, and managed releases.LispLisp is the most powerful and also easiest to useprogramming language ever developed. Invented by JohnMcCarthy at MIT in the late 1950s, Lisp is today used by themost sophisticated programmers pushing the limits ofcomputers in mathematical physics, computer-aidedengineering, and computer-aided genetics. Lisp is also usedby thousands of people who don't think of themselves asprogrammers at all, only people who want to defineshortcuts in AutoCAD or the Emacs text editor. The bestintroduction to Lisp is also the best introduction to computerscience: Structure and Interpretation of Computer Programs(Abelson and Sussman 1996; MIT Press).Log AnalyzerA program that reads a Web server's access log file (oneline per request served) and produces a comprehensiblereport with summary statistics, e.g., "You served 234,812filtersWe said that modularity and code reuse could be tossed in favor ofpreserving the sacred principle of "one URL = one file". The way thatyou get modularity and code reuse back is via filters, the ability toinstruct the Web server to "run this fragment of code be<strong>for</strong>e servingany URL that starts with /yow/". This is particularly useful <strong>for</strong> accesscontrol code. Suppose that you have 15 scripts that constitute theadministration experience <strong>for</strong> a contest system. You want to makesure that only authorized administrators can use the pages. Checking<strong>for</strong> administrative access requires an SQL query. You could write aprocedure called CheckForContestAdminAuthority and instruct yourscript authors to include a call to this procedure in each of the 15admin scripts. You've still got 15 copies of some code: one IFstatement, one procedure call, and a call to an error messageprocedure if CheckForContestAdminAuthority returns "unauthorized".But the SQL query occurs only in one place and can be updatedcentrally.The main problem with this approach is not the 15 copies of the IFstatement and its consequents. The problem is that inevitably one ofthe script authors will <strong>for</strong>get to include the check. So your site has asecurity hole. You close the hole and eliminate 14 copies of the IFstatement by installing the code as a server filter. Note that <strong>for</strong> this towork the filter mechanism must include an API <strong>for</strong> aborting service ofthe requested page. Your filter needs to be able to tell the Webserver "Don't proceed with serving the user with the script ordocument requested."abstract URLsAs an engineer your primary contributions to an <strong>Internet</strong> service willbe data model and interaction design (Steps 1 through 3). Whenyou're sketching the page flow <strong>for</strong> a discussion <strong>for</strong>um on a whiteboard you give the pages names such as "all-topics", "one-topic","one-thread", "post-reply", "post-reply-confirm", etc. Let's call theseabstract URLs. Suppose that you elect to implement your service inJava Server Pages. Does it make sense to have the URLs be "alltopics.jsp","one-topic.jsp", "one-thread.jsp", etc.? Why should theusers see that you've used JSP? Should they care? And if youchange your mind and switch to Perl, will you change the user-visibleURLs to "all-topics.pl", "one-topic.pl", "one-thread.pl", etc.? This willbreak everyone's bookmarks. More importantly, this change willbreak all of the links from other sites to yours. That's a high price topay <strong>for</strong> an implementation change that should have been invisible toend-users.32029
- Page 1 and 2: SoftwareEngineering forInternetAppl
- Page 3 and 4: Signature: ________________________
- Page 5 and 6: end-users. We use every opportunity
- Page 7 and 8: • availability of magnet content
- Page 9 and 10: • we want to see if a student is
- Page 11 and 12: you supply English-language queries
- Page 13 and 14: What to do during lecturesWe try to
- Page 15 and 16: The one-term cram courseWhen teachi
- Page 17 and 18: 332• spend a term learning how to
- Page 19 and 20: Once we've taught students how to b
- Page 21 and 22: has permission to perform each task
- Page 23 and 24: UDDIUnixcustomer's credit card. If
- Page 25 and 26: thousands of concurrent users. This
- Page 27: OraclePerlnamed XYZ" without the pr
- Page 31 and 32: FilterFirewallFlat-fileGIF318functi
- Page 33 and 34: when there is an educational dimens
- Page 35 and 36: system. The authors of the core pro
- Page 37 and 38: Sign-OffsTry to schedule comprehens
- Page 39 and 40: scheduling goals that both you and
- Page 41 and 42: Client Tenure In Job (new, mid-term
- Page 43 and 44: ReferencesEngagement ManagementSQL*
- Page 45 and 46: Decision-makers often bring senior
- Page 47 and 48: presentation to a panel of outsider
- Page 49 and 50: 300always been written by programme
- Page 51 and 52: 17.3 Professionalism in the Softwar
- Page 53 and 54: Try to make sure that your audience
- Page 55 and 56: Chapter 17WriteupIf I am not for my
- Page 57 and 58: Suppose that an RDBMS failure were
- Page 59 and 60: analysis programs analyzing standar
- Page 61 and 62: at 9 hours 11 minutes 59 seconds pa
- Page 63 and 64: found" will result in an access log
- Page 65 and 66: 15.18 Time and MotionThe team shoul
- Page 67 and 68: select 227, 891, 'algorithm', curre
- Page 69 and 70: create table km_object_views (objec
- Page 71 and 72: • object-create• object-display
- Page 73 and 74: The trees chapter of SQL for Web Ne
- Page 75 and 76: );274-- ordering within a form, low
- Page 77 and 78: and start the high-level document f
- Page 79 and 80:
Example Ontology 2: FlyingWe want a
- Page 81 and 82:
systems. What would a knowledge man
- Page 83 and 84:
spreadsheet". Other users can comme
- Page 85 and 86:
Chapter 15Metadata (and Automatic C
- Page 87 and 88:
{site url}{site description}en-usCo
- Page 89 and 90:
drawing on the intermodule API that
- Page 91 and 92:
At this point you have something of
- Page 93 and 94:
• description• URL for a photo
- Page 95 and 96:
Here's a raw SOAP request/response
- Page 97 and 98:
Chapter 14Distributed Computing wit
- Page 99 and 100:
conduct programmer job interviews h
- Page 101 and 102:
Most admin pages can be excluded fr
- Page 103 and 104:
content that should distinguish one
- Page 105 and 106:
Chapter 13Planning ReduxA lot has c
- Page 107 and 108:
the Internet-specific problem of no
- Page 109 and 110:
wouldn't see these dirty tricks unl
- Page 111 and 112:
12.8 Exercise 4: Big BrotherGeneral
- Page 113 and 114:
than one call to contains in the sa
- Page 115 and 116:
A third argument against the split
- Page 117 and 118:
way 1 1/16One might argue that this
- Page 119 and 120:
absquatulate 612bedizen 36, 9211cry
- Page 121 and 122:
What if the user typed multiple wor
- Page 123 and 124:
Chapter 12S E A R C HRecall from th
- Page 125 and 126:
long as it is much easier to remove
- Page 127 and 128:
features that are helpful? What fea
- Page 129 and 130:
made it in 1938)? Upon reflection,
- Page 131 and 132:
environment, we identify users by t
- Page 133 and 134:
those updates by no more than 1 min
- Page 135 and 136:
Balancer and mod_backhand, a load b
- Page 137 and 138:
translation had elapsed--the site w
- Page 139 and 140:
It seems reasonable to expect that
- Page 141 and 142:
11.1.5 Transport-Layer EncryptionWh
- Page 143 and 144:
such as ticket bookings would colla
- Page 145 and 146:
give their site a unique look and f
- Page 147 and 148:
It isn't challenging to throw hardw
- Page 149 and 150:
Chapter 11Scaling GracefullyLet's l
- Page 151 and 152:
10.15 Beyond VoiceXML: Conversation
- Page 153 and 154:
Consider that if you're authenticat
- Page 155 and 156:
In this example, we:194• ask the
- Page 157 and 158:
As in any XML document, every openi
- Page 159 and 160:
(http://www.voicegenie.com). These
- Page 161 and 162:
Chapter 10Voice (VoiceXML)questions
- Page 163 and 164:
9.15 MoreStandards information:•
- Page 165 and 166:
9.14 The FutureIn most countries th
- Page 167 and 168:
9.10 Exercise 7: Build a Pulse Page
- Page 169 and 170:
9.6 Keypad HyperlinksLet's look at
- Page 171 and 172:
text/xml,application/xml,applicatio
- Page 173 and 174:
Protocol (IP) routing, a standard H