Merge branch 'master' of github.com:oplS17projects/Hermes into mango

* 'master' of github.com:oplS17projects/Hermes:
  Modified the readme
This commit is contained in:
Ibrahim Mkusa 2017-04-23 01:28:37 -04:00
commit 4c508fec11

View File

@ -2,22 +2,20 @@
### Statement ### Statement
Hermes is a multi-client chat program akin to IRC written in Racket. Building Hermes is a multi-client chat program akin to IRC written in Racket. Building
Hermes is interesting as it exposes us to various design problems namely networking, Hermes was interesting as it exposed us to various design problems namely networking,
synchronization, scheduling, and GUI design. synchronization, scheduling, GUI design, and component design.
### Analysis ### Analysis
> Will you use data abstraction? How? > Will you use data abstraction? How?
TCP communication will be abstracted away, so that we deal with Hermes TCP communication has been abstracted away, so that we deal with Hermes
definition of a message. definition of a message.
We will try to encrypt the messages passed around. The encryption will be
abstracted away, so we only have to think about it once during implementation.
> Will you use recursion? How? > Will you use recursion? How?
The server will continually loop waiting for connections from clients. The server continually loops waiting for connections from clients.
The GUI will continually loop to handle input from the user, and to and fro The GUI continually loops to handle input from the user,
the server. 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?
@ -26,8 +24,10 @@ of open ports to send messages.
> Will you use object-orientation? How? > Will you use object-orientation? How?
Keeping count of the number of clients will require an object of some sort. Keeping count of the number of clients required working with objects that are able to
With procedures to increment and decrement the number of users. increment and decrement the number of users.
We also keep the GUI in an object so the many moving parts of the
user interface are packaged in one place.
> Will you use functional approaches to processing your data? How? > Will you use functional approaches to processing your data? How?
@ -40,20 +40,20 @@ variables.
State-modification will be used e.g. keeping count of logged in users requires State-modification will be 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.
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?
Users will type their input into a text field from the GUI. We will retrieve We allow the use of a few commands through the user interface. The most notable ones
the command and evaluate it to see if its a message, or a command to change are the /quit command to shut down a connection and the /color command to allow
GUI state. We will do something that resembles the metacircular evaluator. the user to change the color of their text.
### Deliverable and Demonstration ### Deliverable and Demonstration
There are two big deliverables for this project. Code for the server 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 plan to demonstrate Hermes by running the server code on a remote machine. We will 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
@ -80,11 +80,11 @@ satisfactorily we would have met our goals.
## Schedule ## Schedule
The first step in our project will be to setup a system to get data from one machine to another. What data exactly isn't directly important and the other machine doesn't really need to display it in a pretty manner, it just needs to relay that it has recieved the correct information. The first step in our project was to setup a system to get data from one machine to another. What data exactly wasn't directly important and the other machine didn't really need to display it in a pretty manner, it just needed to relay that it has recieved the correct information.
Next we need to create a user interface that looks nice. Some way to control the connection and display information in a convient and readable format. Next we needed to create a user interface that looked nice. Some way to control the connection and display information in a convient and readable format.
After we have finished the user interface and connecting the machines, we will need to merge them together and begin expanding the utility if time permits. After we finished the user interface and connecting the machines, we needed to merge them together and begin expanding the utility if time permits.
### First Milestone (Sun Apr 9) ### First Milestone (Sun Apr 9)
Get two different machines to relay information meaningfully. Get two different machines to relay information meaningfully.
@ -92,17 +92,16 @@ Get two different machines to relay information meaningfully.
### Second Milestone (Sun Apr 16) ### Second Milestone (Sun Apr 16)
Get a GUI that looks professional and uses the correct format. Get a GUI that looks professional and uses the correct format.
### Public Presentation (Mon Apr 24, Wed Apr 26, or Fri Apr 28 [your date to be determined later]) ### Public Presentation (Mon Apr 24)
Merging the GUI and information relay together into one program. If time permits we also plan on adding additional features. Merging the GUI and information relay together into one program. If time permits we also plan on adding additional features.
## Group Responsibilities ## Group Responsibilities
### Douglas Richardson @Doug-Richardson ### Douglas Richardson @Doug-Richardson
Will write the GUI code. This should allow the user to access different I have written the code for the GUI.
aspects of our program in a clean easy to use interface. Most of It presents the user with a simple readable format for displaying the information
how the program responds to user input will be filtered through the gui. that the server provides. For the most part the program only interacts with the user
If time permits I will also be writing code to encrypt and decrypt the information through the GUI.
going from the server to the clients.
### Ibrahim Mkusa @iskm ### Ibrahim Mkusa @iskm
Will write the networking code i.e. code that allows communication between Will write the networking code i.e. code that allows communication between