13.07.2015 Views

Software Engineering for Internet Applications - Student Community

Software Engineering for Internet Applications - Student Community

Software Engineering for Internet Applications - Student Community

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!