lab_server/notes.md

4.2 KiB

Project Server Notes

Checkpoint 1

  1. Lots of software today connects to remote servers, and can't work offline. What are some advantages of using a program or an app which uses a remote server? What are some advantages of using a program or an app which is completely local?

The advantages of a remote server versus local servers is like the difference between working on a Word document on your computer and working on GoogleDocs. The local server is the Word document and the remote server is the GoogleDoc. A local server is secure, and does not need a connection online to work on it. It also tends to update quickly since there is one user working on it at a time and does not need to connect to something remote as updates occur. Although it is secure, since there is no one else that has access to it, it is reliant on the device in which it is stored. So, if there is a malfunction with the device then that information could be lost.
A remote server is like a GoogleDoc in that the thing (in this case document) runs on a connection to a server that requires remote connectivity. It would need an internet connection to run. It is saved somewhere secure, in that it is not reliant on the device that could crash and lose your document. With a remote server then it can be recovered on any device. Multiple users can access a document at a time and updates are tracked and saved in real time. However, the remote server can be less secure in some ways in that it can be hacked into or compromised. If the individual or company that runs the server is disingenuous then your information can be compromised.

  1. You just ran a server on your own computer, and connected to it as a client on the same computer. In what other situations might it be useful to run a server on your computer, where you're the only client, on the same computer?

One advantage of the server that connects to a client on the same computer is that a person could use it to test encryption or other security features before using them outside of a secure environment. You could also use a device centered server to complete tasks. I am thinking about the Jupyter Server and Jupyter Notebook that we used last semester. I think this is an example of this type of server. And if that is in fact the case, then they can also be used to interpret data and synthesize information into an eventually sharable platform. This is like a dashboard of information digesting and creation that an individual client would really only need access to.

Checkpoint 2

  1. Choose a program (Steam), web app (Google Docs), or app (Weather) that you use frequently. You can't observe the calls this program is making to its server (unless you have fancy tools), but you can infer some of the calls based on the program's behavior. Describe a few routes which you think may exist for your chosen program's backend server.

I use Microsoft OneNote all the time. The school I work in is a Microsoft school so everything we do is on Teams and Microsoft OneNote. The notebooks have a couple different categories of functionality. Creating and Closing the notebooks GET NOTEBOOK (Create) POST NOTEBOOK (Post for students to access) DELETE NOTEBOOK (Close a notebook or archive notebook) Sharing pages or categories in the notebooks GET NOTEBOOK/ SECTION POST NOTEBOOK/ SECTION GET PAGES/ NOTEBOOK POST PAGES/ NOTEBOOK

  1. In your own words, what is an exception? When might it be useful to handle an exception? When is it better not to handle an exception, and instead let the program crash?

This question makes me think of the very first labs that we did in 677. The task was to write code that prompted the turtle to draw a particular shape. At first when the turtle did not complete the task or ran into an error, the window would literally just close. Then you, as the person coding, would have to figure out where the issue was and what the next steps should be. An exception would be useful because it could anticipate and give feedback to the errors that occur. Having the common feedback categorized and given back to the user makes troubleshooting more manageable. It also makes the crashing more user friendly.