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.

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

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

Saved successfully!

Ooh no, something went wrong!