THROUGH THE SOFTWARE OR OTHERWISE ARISING OUT OFTHE USE OF THE SOFTWARE. ALSO, THERE IS NO WARRANTYOR CONDITION OF TITLE, QUIET ENJOYMENT, QUIETPOSSESSION, CORRESPONDENCE TO DESCRIPTION, OR NON-INFRINGEMENT WITH REGARD TO THE SOFTWARE.20. EXCLUSION OF INCIDENTAL, CONSEQUENTIAL, ANDCERTAIN OTHER DAMAGES. TO THE MAXIMUM EXTENTPERMITTED BY APPLICABLE LAW, IN NO EVENT SHALLMICROSOFT OR ITS SUPPLIERS BE LIABLE FOR ANY SPECIAL,INCIDENTAL, PUNITIVE, INDIRECT, OR CONSEQUENTIALDAMAGES WHATSOEVER (INCLUDING, BUT NOT LIMITED TO,DAMAGES FOR LOSS OF PROFITS OR CONFIDENTIAL OROTHER INFORMATION, FOR BUSINESS INTERRUPTION, FORPERSONAL INJURY, FOR LOSS OF PRIVACY, FOR FAILURE TOMEET ANY DUTY INCLUDING OF GOOD FAITH OR OFREASONABLE CARE, FOR NEGLIGENCE, AND FOR ANY OTHERPECUNIARY OR OTHER LOSS WHATSOEVER) ARISING OUT OFOR IN ANY WAY RELATED TO THE USE OF OR INABILITY TOUSE THE SOFTWARE, THE PROVISION OF OR FAILURE TOPROVIDE SUPPORT OR OTHER SERVICES, INFORMATION,SOFTWARE, AND RELATED CONTENT THROUGH THESOFTWARE OR OTHERWISE ARISING OUT OF THE USE OFTHE SOFTWARE, OR OTHERWISE UNDER OR IN CONNECTIONWITH ANY PROVISION OF THIS EULA, EVEN IN THE EVENT OFTHE FAULT, TORT (INCLUDING NEGLIGENCE),MISREPRESENTATION, STRICT LIABILITY, BREACH OFCONTRACT, OR BREACH OF WARRANTY OF MICROSOFT ORANY SUPPLIER, AND EVEN IF MICROSOFT OR ANY SUPPLIERHAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.21. LIMITATION OF LIABILITY AND REMEDIES.NOTWITHSTANDING ANY DAMAGES THAT YOU MIGHT INCURFOR ANY REASON WHATSOEVER (INCLUDING, WITHOUTLIMITATION, ALL DAMAGES REFERENCED HEREIN AND ALLDIRECT OR GENERAL DAMAGES IN CONTRACT OR ANYTHINGELSE), THE ENTIRE LIABILITY OF MICROSOFT AND ANY OF ITSSUPPLIERS UNDER ANY PROVISION OF THIS EULA AND YOUREXCLUSIVE REMEDY HEREUNDER (EXCEPT FOR ANY REMEDYOF REPAIR OR REPLACEMENT ELECTED BY MICROSOFT WITHRESPECT TO ANY BREACH OF THE LIMITED WARRANTY)SHALL BE LIMITED TO THE GREATER OF THE ACTUALDAMAGES YOU INCUR IN REASONABLE RELIANCE ON THESOFTWARE UP TO THE AMOUNT ACTUALLY PAID BY YOU FORTHE SOFTWARE OR U.S.$5.00. THE FOREGOING LIMITATIONS,EXCLUSIONS, AND DISCLAIMERS SHALL APPLY TO THESadly there does not seem to be a Windows equivalent to chroot,though there are other ways to lock down a Web server in Windowsso that its process can't execute programs.16.6 Exercise 2: Comedy of ErrorsThe last thing that any publisher wants is <strong>for</strong> a user to be faced with a"Server Error" in response to a request. Sadly chances are that if oneuser gets an error there will be plenty more to follow. The HTTPserver program will log each event but unless a site is newlylaunched chances are that no programmer is watching the error logat any given moment.First make sure that your server is configured to log as muchin<strong>for</strong>mation as possible about each error. At the very least you needthe server to log the URL where the error occurred and the errormessage from the procedure that raised the error. Better Webdevelopment environments will also log a stack backtrace.Second, provide a hyperlink from the site-wide administration pagesto a page that shows the most recent 500 lines of the error log, withan option to go back a further 500 lines, etc.Third, write a procedure that runs periodically, either as a separateprocess or as part of the HTTP server program itself, and scans theerror log <strong>for</strong> new entries since the preceding run of the procedure. Ifany of those new entries are actual errors, the procedure emailsthem to the programmers maintaining the site. You might want tostart with an interval of one hour.16.7 Real-time Error NotificationsThe system that you built in Exercise 2 guarantees that aprogrammer will find out about an error within about one hour. On ahigh-profile site this might not be adequate. It might be worth buildingerror notification into the software itself. Serious errors can be caughtand the error handler can call a notify_the_maintainersprocedure that sends email. This might be worth including, <strong>for</strong>example, in a centralized facility that allows page scripts to connectto the relational database management system (RDBMS). If theRDBMS is unavailable the sysadmins, dbadmins, and programmersought to be notified immediately so that they can figure out what wentwrong and bring the system back up.58291
analysis programs analyzing standard server access logs. In thisexercise you'll see what they see. Pick a standard log analyzer, e.g.,the analog program referenced at the end of this chapter, andprepare a report of all recorded user activity <strong>for</strong> the last month.An acceptable solution to this exercise will involve linking the mostrecent report from the site administration pages so that the publishercan view it. A better solution will involve placing a "prepare currentreport" link in the admin pages that will invoke the log analyzer ondemand and display the report. An exhaustive (exhausting?) solutionwill consist of a scheduled process ("cron job" in Unix parlance; "atcommand" or "scheduled task" on Windows) that runs the loganalyzer every day, updating cumulative reports and preparing a newdaily report, all of which are accessible from the site admin pages.Make sure that your report clearly shows "404 Not Found" requests(any standard log analyzer can be configured to display these) andthat the referer header is displayed so that you can figure out wherethe bad link is likely to be.16.5 Security Risks of Running Programs inResponse to a Web RequestAny system in which an HTTP server program can start up a newprocess in response to a Web request presents a security risk. ManyWeb scripting languages have "exec" commands in which the Webserver has all of the power of a logged-in user typing at a commandline. This is a powerful and useful capability, but a malicious usermight be able to, <strong>for</strong> example, run a program that will return theusername/password file <strong>for</strong> the server.In the Unix world the most effective solution to this challenge ischroot, short <strong>for</strong> change root. This command changes the file systemroot of the Web server, and any program started by the Web server,to some other place in the file system, e.g., /web/main-server/. Aprogram in the directory /usr/local/bin/ can't be executed bythe chrooted Web server because the Web server can't evendescribe a file unless its path begins with /web/main-server/.The root directory, /, is now /web/main-server/. One downside ofthis approach is that if the Web server needs to run a program in thedirectory /usr/local/bin/ it can't. The solution is to take all of theutilities, server log analyzers, and other required programs and movethem underneath /web/main-server/, e.g., to /web/mainserver/bin/.MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, EVEN IFANY REMEDY FAILS ITS ESSENTIAL PURPOSE.This is so important to Microsoft that it is the only part of a 12-pageagreement that is printed in boldface and the only part that ispresented in a French translation <strong>for</strong> Canadian customers as well.If you don't want to cut and paste Microsoft's verbiage, which mightexpose you to a copyright infringement action from Redmond,consider employing a standard free software or open-source license,of which the GNU General Public License is the best-knownexample. Note that using a free software license doesn't mean thatyour software is now free to the world. You may have licensed oneclient under the GNU GPL but whether or not you decide to offeranyone else a license is a decision <strong>for</strong> the future.If you wish, you can use the sample contract at the end of this bookas a starting point in negotiating rights with your client. Andremember that old bromide of business: You don't get what youdeserve; you get what you negotiate.3.15 More• "The case <strong>for</strong> on-line communities", McKinsey Quarterly,Shona Brown et al, 2002, Number 13.16 To the InstructorIt is helpful during the second meeting of the class to bring clients oncampus to give 3-minute presentations pitching their projects. Here isa suggested outline to the client <strong>for</strong> the presentation:1. introduce the speaker and the organization he or sherepresents (15 seconds)2. explain who the users are and why they need to interact viaan <strong>Internet</strong> application, i.e., what problem is this onlinecommunity solving (1.5 minutes)3. describe how users will be attracted to the site initially, e.g.,is there a collection of magnet content that these peopleneed that isn't available anywhere else? (30 seconds)4. after the site has been up and running <strong>for</strong> a few months,what will a typical interaction look like <strong>for</strong> a new user? (30seconds)29059
- 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 and 28: OraclePerlnamed XYZ" without the pr
- Page 29 and 30: LDAPLinuxbits per color, a vastly s
- 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: Suppose that an RDBMS failure were
- 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