Files
2016-04-27 01:07:35 -04:00

329 lines
20 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (version 1.7.0_51) on Wed Apr 06 13:11:06 EDT 2016 -->
<title>WebLog03 (Parallel Java 2 Library Documentation)</title>
<meta name="date" content="2016-04-06">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
</head>
<body>
<script type="text/javascript"><!--
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="WebLog03 (Parallel Java 2 Library Documentation)";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar_top">
<!-- -->
</a><a href="#skip-navbar_top" title="Skip navigation links"></a><a name="navbar_top_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/WebLog03.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../edu/rit/pjmr/example/WebLog02.html" title="class in edu.rit.pjmr.example"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../edu/rit/pjmr/example/WebLog04.html" title="class in edu.rit.pjmr.example"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?edu/rit/pjmr/example/WebLog03.html" target="_top">Frames</a></li>
<li><a href="WebLog03.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#fields_inherited_from_class_edu.rit.pj2.Job">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">edu.rit.pjmr.example</div>
<h2 title="Class WebLog03" class="title">Class WebLog03</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../edu/rit/pj2/Job.html" title="class in edu.rit.pj2">edu.rit.pj2.Job</a></li>
<li>
<ul class="inheritance">
<li><a href="../../../../edu/rit/pjmr/PjmrJob.html" title="class in edu.rit.pjmr">edu.rit.pjmr.PjmrJob</a>&lt;<a href="../../../../edu/rit/pjmr/TextId.html" title="class in edu.rit.pjmr">TextId</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../edu/rit/pjmr/example/IPAddress.html" title="class in edu.rit.pjmr.example">IPAddress</a>,<a href="../../../../edu/rit/pj2/vbl/LongVbl.html" title="class in edu.rit.pj2.vbl">LongVbl</a>&gt;</li>
<li>
<ul class="inheritance">
<li>edu.rit.pjmr.example.WebLog03</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="strong">WebLog03</span>
extends <a href="../../../../edu/rit/pjmr/PjmrJob.html" title="class in edu.rit.pjmr">PjmrJob</a>&lt;<a href="../../../../edu/rit/pjmr/TextId.html" title="class in edu.rit.pjmr">TextId</a>,<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="../../../../edu/rit/pjmr/example/IPAddress.html" title="class in edu.rit.pjmr.example">IPAddress</a>,<a href="../../../../edu/rit/pj2/vbl/LongVbl.html" title="class in edu.rit.pj2.vbl">LongVbl</a>&gt;</pre>
<div class="block">Class WebLog03 is the main program for a PJMR map-reduce job that analyzes
web server log files.
<P>
Usage: <TT>java pj2 [threads=<I>NT</I>] edu.rit.pjmr.example.WebLog03
<I>nodes</I> <I>file</I> <I>account</I> [ <I>pattern</I> ]</TT>
<P>
The <I>nodes</I> argument is a comma-separated list of backend node names.
The program runs a separate mapper task on each of the given nodes. Each
mapper task has one source and <I>NT</I> mappers (default: one mapper). The
source reads the given web log <I>file</I> on the node where the mapper task
is running.
<P>
The program lists the unique IP addresses that requested web pages for the
given user <I>account</I>, along with the number of requests from each IP
address. The IP address is the first item on each web log line. The user
account is found between the first <TT>"/~"</TT> and the next <TT>"/"</TT> or
whitespace on each web log line. The IP addresses are printed in descending
order of number of requests. For an equal number of requests, the IP
addresses are printed in ascending order.
<P>
If the optional <I>pattern</I> argument is specified, only web log entries
that match the pattern are analyzed. For example, the pattern could be a
date, to limit the analysis to that date. The pattern must obey the syntax
described in class <a href="http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">java.util.regex.Pattern</a>. If the <I>pattern</I> argument is omitted, all web
log entries are analyzed.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field_summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="fields_inherited_from_class_edu.rit.pj2.Job">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;edu.rit.pj2.<a href="../../../../edu/rit/pj2/Job.html" title="class in edu.rit.pj2">Job</a></h3>
<code><a href="../../../../edu/rit/pj2/Job.html#ALL_CORES">ALL_CORES</a>, <a href="../../../../edu/rit/pj2/Job.html#ALL_GPUS">ALL_GPUS</a>, <a href="../../../../edu/rit/pj2/Job.html#ANY_NODE_NAME">ANY_NODE_NAME</a>, <a href="../../../../edu/rit/pj2/Job.html#DEFAULT_CHUNK">DEFAULT_CHUNK</a>, <a href="../../../../edu/rit/pj2/Job.html#DEFAULT_CORES">DEFAULT_CORES</a>, <a href="../../../../edu/rit/pj2/Job.html#DEFAULT_GPUS">DEFAULT_GPUS</a>, <a href="../../../../edu/rit/pj2/Job.html#DEFAULT_NODE_NAME">DEFAULT_NODE_NAME</a>, <a href="../../../../edu/rit/pj2/Job.html#DEFAULT_SCHEDULE">DEFAULT_SCHEDULE</a>, <a href="../../../../edu/rit/pj2/Job.html#DEFAULT_THREADS">DEFAULT_THREADS</a>, <a href="../../../../edu/rit/pj2/Job.html#DEFAULT_WORKERS">DEFAULT_WORKERS</a>, <a href="../../../../edu/rit/pj2/Job.html#dynamic">dynamic</a>, <a href="../../../../edu/rit/pj2/Job.html#fixed">fixed</a>, <a href="../../../../edu/rit/pj2/Job.html#guided">guided</a>, <a href="../../../../edu/rit/pj2/Job.html#jobFinish">jobFinish</a>, <a href="../../../../edu/rit/pj2/Job.html#jobLaunch">jobLaunch</a>, <a href="../../../../edu/rit/pj2/Job.html#jobStart">jobStart</a>, <a href="../../../../edu/rit/pj2/Job.html#leapfrog">leapfrog</a>, <a href="../../../../edu/rit/pj2/Job.html#makespan">makespan</a>, <a href="../../../../edu/rit/pj2/Job.html#proportional">proportional</a>, <a href="../../../../edu/rit/pj2/Job.html#remainingTuples">remainingTuples</a>, <a href="../../../../edu/rit/pj2/Job.html#STANDARD_CHUNK">STANDARD_CHUNK</a>, <a href="../../../../edu/rit/pj2/Job.html#taskArguments">taskArguments</a>, <a href="../../../../edu/rit/pj2/Job.html#taskFinish">taskFinish</a>, <a href="../../../../edu/rit/pj2/Job.html#taskInputTuples">taskInputTuples</a>, <a href="../../../../edu/rit/pj2/Job.html#taskLaunch">taskLaunch</a>, <a href="../../../../edu/rit/pj2/Job.html#taskOutputTuples">taskOutputTuples</a>, <a href="../../../../edu/rit/pj2/Job.html#taskStart">taskStart</a>, <a href="../../../../edu/rit/pj2/Job.html#THREADS_EQUALS_CORES">THREADS_EQUALS_CORES</a></code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><strong><a href="../../../../edu/rit/pjmr/example/WebLog03.html#WebLog03()">WebLog03</a></strong>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method_summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="overviewSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span>Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><strong><a href="../../../../edu/rit/pjmr/example/WebLog03.html#main(java.lang.String[])">main</a></strong>(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</code>
<div class="block">PJMR job main program.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_edu.rit.pjmr.PjmrJob">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;edu.rit.pjmr.<a href="../../../../edu/rit/pjmr/PjmrJob.html" title="class in edu.rit.pjmr">PjmrJob</a></h3>
<code><a href="../../../../edu/rit/pjmr/PjmrJob.html#combiner(java.lang.Class)">combiner</a>, <a href="../../../../edu/rit/pjmr/PjmrJob.html#mapperTask()">mapperTask</a>, <a href="../../../../edu/rit/pjmr/PjmrJob.html#mapperTask(int)">mapperTask</a>, <a href="../../../../edu/rit/pjmr/PjmrJob.html#mapperTask(java.lang.String)">mapperTask</a>, <a href="../../../../edu/rit/pjmr/PjmrJob.html#reducerTask()">reducerTask</a>, <a href="../../../../edu/rit/pjmr/PjmrJob.html#startJob()">startJob</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_edu.rit.pj2.Job">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;edu.rit.pj2.<a href="../../../../edu/rit/pj2/Job.html" title="class in edu.rit.pj2">Job</a></h3>
<code><a href="../../../../edu/rit/pj2/Job.html#chunk()">chunk</a>, <a href="../../../../edu/rit/pj2/Job.html#chunk(int)">chunk</a>, <a href="../../../../edu/rit/pj2/Job.html#cores()">cores</a>, <a href="../../../../edu/rit/pj2/Job.html#cores(int)">cores</a>, <a href="../../../../edu/rit/pj2/Job.html#debug(edu.rit.pj2.Debug...)">debug</a>, <a href="../../../../edu/rit/pj2/Job.html#debug(edu.rit.pj2.Debug)">debug</a>, <a href="../../../../edu/rit/pj2/Job.html#debug(java.util.Set)">debug</a>, <a href="../../../../edu/rit/pj2/Job.html#execute()">execute</a>, <a href="../../../../edu/rit/pj2/Job.html#gpus()">gpus</a>, <a href="../../../../edu/rit/pj2/Job.html#gpus(int)">gpus</a>, <a href="../../../../edu/rit/pj2/Job.html#jar()">jar</a>, <a href="../../../../edu/rit/pj2/Job.html#jar(java.io.File)">jar</a>, <a href="../../../../edu/rit/pj2/Job.html#jvmFlags()">jvmFlags</a>, <a href="../../../../edu/rit/pj2/Job.html#jvmFlags(java.lang.String...)">jvmFlags</a>, <a href="../../../../edu/rit/pj2/Job.html#listenHost()">listenHost</a>, <a href="../../../../edu/rit/pj2/Job.html#listenHost(java.lang.String)">listenHost</a>, <a href="../../../../edu/rit/pj2/Job.html#listenPort()">listenPort</a>, <a href="../../../../edu/rit/pj2/Job.html#listenPort(int)">listenPort</a>, <a href="../../../../edu/rit/pj2/Job.html#masterChunk()">masterChunk</a>, <a href="../../../../edu/rit/pj2/Job.html#masterChunk(int)">masterChunk</a>, <a href="../../../../edu/rit/pj2/Job.html#masterFor(int, int, java.lang.Class)">masterFor</a>, <a href="../../../../edu/rit/pj2/Job.html#masterFor(long, long, java.lang.Class)">masterFor</a>, <a href="../../../../edu/rit/pj2/Job.html#masterSchedule()">masterSchedule</a>, <a href="../../../../edu/rit/pj2/Job.html#masterSchedule(edu.rit.pj2.Schedule)">masterSchedule</a>, <a href="../../../../edu/rit/pj2/Job.html#nodeName()">nodeName</a>, <a href="../../../../edu/rit/pj2/Job.html#nodeName(java.lang.String)">nodeName</a>, <a href="../../../../edu/rit/pj2/Job.html#putTuple(int, edu.rit.pj2.Tuple)">putTuple</a>, <a href="../../../../edu/rit/pj2/Job.html#putTuple(edu.rit.pj2.Tuple)">putTuple</a>, <a href="../../../../edu/rit/pj2/Job.html#rule()">rule</a>, <a href="../../../../edu/rit/pj2/Job.html#rule(edu.rit.util.Action)">rule</a>, <a href="../../../../edu/rit/pj2/Job.html#schedule()">schedule</a>, <a href="../../../../edu/rit/pj2/Job.html#schedule(edu.rit.pj2.Schedule)">schedule</a>, <a href="../../../../edu/rit/pj2/Job.html#threads()">threads</a>, <a href="../../../../edu/rit/pj2/Job.html#threads(int)">threads</a>, <a href="../../../../edu/rit/pj2/Job.html#timeLimit()">timeLimit</a>, <a href="../../../../edu/rit/pj2/Job.html#timeLimit(int)">timeLimit</a>, <a href="../../../../edu/rit/pj2/Job.html#trackerHost()">trackerHost</a>, <a href="../../../../edu/rit/pj2/Job.html#trackerHost(java.lang.String)">trackerHost</a>, <a href="../../../../edu/rit/pj2/Job.html#trackerPort()">trackerPort</a>, <a href="../../../../edu/rit/pj2/Job.html#trackerPort(int)">trackerPort</a>, <a href="../../../../edu/rit/pj2/Job.html#workers()">workers</a>, <a href="../../../../edu/rit/pj2/Job.html#workers(int)">workers</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods_inherited_from_class_java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#toString()" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor_detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="WebLog03()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>WebLog03</h4>
<pre>public&nbsp;WebLog03()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method_detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="main(java.lang.String[])">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>main</h4>
<pre>public&nbsp;void&nbsp;main(<a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</pre>
<div class="block">PJMR job main program.</div>
<dl>
<dt><strong>Specified by:</strong></dt>
<dd><code><a href="../../../../edu/rit/pj2/Job.html#main(java.lang.String[])">main</a></code>&nbsp;in class&nbsp;<code><a href="../../../../edu/rit/pj2/Job.html" title="class in edu.rit.pj2">Job</a></code></dd>
<dt><span class="strong">Parameters:</span></dt><dd><code>args</code> - Command line arguments.</dd></dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar_bottom">
<!-- -->
</a><a href="#skip-navbar_bottom" title="Skip navigation links"></a><a name="navbar_bottom_firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/WebLog03.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-files/index-1.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../edu/rit/pjmr/example/WebLog02.html" title="class in edu.rit.pjmr.example"><span class="strong">Prev Class</span></a></li>
<li><a href="../../../../edu/rit/pjmr/example/WebLog04.html" title="class in edu.rit.pjmr.example"><span class="strong">Next Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?edu/rit/pjmr/example/WebLog03.html" target="_top">Frames</a></li>
<li><a href="WebLog03.html" target="_top">No Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#fields_inherited_from_class_edu.rit.pj2.Job">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor_summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor_detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method_detail">Method</a></li>
</ul>
</div>
<a name="skip-navbar_bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small><FONT SIZE="-2">Copyright &copy; 2013&ndash;2016 by Alan Kaminsky. All rights reserved. Send comments to ark</FONT><FONT SIZE="1" COLOR="#FFFFFF">&shy;</FONT><FONT SIZE="-2">&#64;</FONT><FONT SIZE="1" COLOR="#FFFFFF">&shy;</FONT><FONT SIZE="-2">cs.rit.edu.</FONT></small></p>
</body>
</html>