updates to README.md

This commit is contained in:
Ibrahim Mkusa 2017-04-23 17:48:05 -04:00
parent bd7b3bb531
commit f072a77550

View File

@ -13,19 +13,22 @@ definition of a message.
> Will you use recursion? How? > Will you use recursion? How?
The server continually loops waiting for connections from clients. The server continually loops waiting for connections from clients. The clients
are always on standby to receive input.
The GUI continually loops to handle input from the user, The GUI continually loops to handle input from the user,
as well as to keep the canvas it writes the messages on updated. as well as to keep the canvas it writes the messages on updated.
> Will you use map/filter/reduce? How? > Will you use map/filter/reduce? How?
Map will be used for dealing with input area of clients, and iterating over a list Map was used for dealing with input area of clients, and iterating over a list
of open ports to send messages. of open ports to send messages. Filter was used to find the recipient of
a whisper.
> Will you use object-orientation? How? > Will you use object-orientation? How?
Keeping count of the number of clients required working with objects that are able to Keeping count of the number of clients required working with objects that are able to
increment and decrement the number of users. increment and decrement the number of users. We handled a list of connection
ports, messages similarly.
We also keep the GUI in an object so the many moving parts of the We also keep the GUI in an object so the many moving parts of the
user interface are packaged in one place. user interface are packaged in one place.
@ -34,18 +37,20 @@ user interface are packaged in one place.
The communication part of Hermes is over tcp which uses a lot of functional The communication part of Hermes is over tcp which uses a lot of functional
approaches e.g. you start a listener which you can call tcp-accept on. approaches e.g. you start a listener which you can call tcp-accept on.
The result of tcp accept are two pairs of ports which we can then bind to some The result of tcp accept are two pairs of ports which we can then bind to some
variables. variables. Functional approaches are exemplied in most of the code base.
> Will you use state-modification approaches? How? (If so, this should be encapsulated within objects. `set!` pretty much should only exist inside an object.) > Will you use state-modification approaches? How? (If so, this should be encapsulated within objects. `set!` pretty much should only exist inside an object.)
State-modification will be used e.g. keeping count of logged in users requires State-modification was used e.g. keeping count of logged in users requires
state modification via set! to maintain the true user account. state modification via set! to maintain the true user account, managing the list
of open connections and messages required state-modification.
The user interface also needs a few states that it needs to keep up to date. The user interface also needs a few states that it needs to keep up to date.
> Will you build an expression evaluator, like we did in the symbolic differentatior and the metacircular evaluator? > Will you build an expression evaluator, like we did in the symbolic differentatior and the metacircular evaluator?
We allow the use of a few commands through the user interface. The most notable ones We allowed the use of a few commands through the user interface. The most notable ones
are the /quit command to shut down a connection and the /color command to allow are the /whisper to send private messages to a user, /list count and /list users
to view user statistics , and the /color command to allow
the user to change the color of their text. the user to change the color of their text.
### Deliverable and Demonstration ### Deliverable and Demonstration
@ -53,7 +58,7 @@ There are two big deliverables for this project. Code for the server
, and the clients which not only has code for interacting with Hermes, , and the clients which not only has code for interacting with Hermes,
but also a GUI for interactivity with a user. but also a GUI for interactivity with a user.
We will demonstrate Hermes by running the server code on a remote machine. We are going to demonstrate Hermes by running the server code on a remote machine.
We will connect to the server via our PCs running client code. We will ssh into We will connect to the server via our PCs running client code. We will ssh into
the remote machine to see the server running. Since Hermes is a multichat anyone the remote machine to see the server running. Since Hermes is a multichat anyone
can join in the demonstration by connecting their computers to the remote can join in the demonstration by connecting their computers to the remote
@ -62,11 +67,10 @@ machine!
### Evaluation of Results ### Evaluation of Results
Evaluating Hermes is very simple. Can at least two clients hold a meaningful Evaluating Hermes was very simple. Can at least two clients hold a meaningful
conversation remotely? If Client A speaks at 11:01 am, and client B does so at conversation remotely? If Client A speaks at 11:01 am, and client B does so at
11:01 plus a few seconds, Hermes has to convey this state correctly. Is the GUI 11:01 plus a few seconds, Hermes has to convey this state correctly. Is the GUI
intuitive for current irc users? When we can successfully answer this questions intuitive for current irc users? We successfully met these questions, and more.
satisfactorily we would have met our goals.
## Architecture Diagram ## Architecture Diagram
@ -104,8 +108,7 @@ that the server provides. For the most part the program only interacts with the
through the GUI. through the GUI.
### Ibrahim Mkusa @iskm ### Ibrahim Mkusa @iskm
Will write the networking code i.e. code that allows communication between I have written the networking code i.e. code that allows communication between
clients through server. I will also write scheduling code responsible for queueing clients through server. I wrote scheduling code responsible for queueing
fairly and orderly the client messages and broadcasting to the rest of connected fairly the client messages and broadcasting to the rest of connected
clients. If time permits, i will also be responsible for authenticating users clients. Implemented the logic for handling /list, /whisper commands.
via a backend database.