Project Option 1: Blogging System
The blogging project is a client-server
Web application built over an RDBMS. Blogging, short
for web logging, is an application that runs on a portal site, in which
different users (and user groups) can publish and revise daily journal entries,
and these entries will be made public for others to view. In essence, it gives everyone his or her own
personal editorial column to publish to the world.
Blogger.com, owned by Google, is the biggest blogger
system around. You should experiment
with this web site to see how many of the basic blogging
operations work – but use this as a beginning point, not an endpoint, for your blogging design. Bloggers often use simple XML files to store the blogging entries; we hope to be more sophisticated.
Your blogging system should have
the following features:
- A
client for creating and updating blog
entries. The client can be written in
a number of different ways, ranging from a Java applet that runs in the
web browser, to a PHP interface, to a custom Java or C# client that runs
on the client side. The client
should publish blogs using an XML-based protocol
such as RSS, Ruby, etc. Blogger has a
published API, using XML-RPC, that
you may find useful for reference.
You might also want to experiment with using “web services” to do
this, or Java RMI, or simple SOAP over your own HTTP interface, or …
- A portal
site with a database backend. This
portal site should present a main page from which people’s blogs can be accessed; it should show the most recently
updated blogs; and it should provide a means of
browsing different blogs. You may choose your DBMS (e.g., mySQL or Oracle) and servlet
programming environment (PHP, JSP, ASP, etc.) to do this. Note that eniac-l has Oracle and mySQL, and there
is a PHP server on fling; if
you want to use department infrastructure, these are probably the technologies
to use.
- A good
schema design that is appropriate for the data being stored. Some of this data is simple and highly
regular (e.g., user IDs and passwords); other data is somewhat less
structured but may still have regular fields (e.g., the RSS/Ruby blog entries themselves). The server app may store the RSS/Ruby
data in any format you choose: it
may map from XML to relations, or just save XML, etc.
- Note
that you will likely have both a server application (which accepts client “publish”
requests and stores data in the DBMS) and a servlet
application (which presents the blog information
on the portal). The servlet application may
present the data in XML (we will assume an XML-capable browser) or in
HTML.
- It
should be possible to alter the presentation (style) of each blog. You
should be able to make use of XSLT
and/or CSS to change the presentation.
If you are running your own server, you can use Apache Cocoon to render XML into HTML
via XSLT.
- You
should have a security and authentication model that ensures each user has
a login and password, that they can only alter their own blogs, and that they can authorize other users to
modify their blogs.
- Time
permitting, you may want to allow for more sophisticated models of querying,
perhaps exploiting some of the SQL features to, e.g., query for the most
recent entries by a particular blog author, etc.
Additionally, there are many opportunities to add extra
capabilities such as text search, different modes of browsing the logs, etc.
Useful resources for reference:
- O’Reilly
and Associates maintains Safari, which
has a number of PHP
references that you can freely access and use.
- You
may want to use the SOAP and WSDL specifications to create “web
services” at the server end and to access them via your client. Note that there are a lot of tools that
will do all of the work automagically: Microsoft Visual C# and its tools
automatically generate web services, as do tools for Java Web Services (which has a
tutorial)
and
- You
may want to use the Eclipse programming
environment for Java.
- You’ll
want to know about the Java JAXP
parser framework for parsing XML.