WebFund 2014W: Tutorial 1

From Soma-notes
Jump to navigation Jump to search

For this class you will be using a Lubuntu virtual machine appliance. We will be using VirtualBox as our preferred virtualization platform; however, VMware Workstation/Fusion and other virtualization platforms should be able to run the appliance as well. In this first tutorial you will be becoming familiar with node.js-based development environment provided by this appliance.

To get credit for this lab, show a TA or the instructor that you have gotten the class VM running, made simple changes to your first web app, and that you have started lessons on CodeAcademy (or convince them you don't need to).

If you finish early (which you are likely to do), try exploring node and the Lubuntu environment. You will be using them a lot this semester!

Running the VM

In the SCS labs you should be able to run the VM by starting Virtualbox (listed in the Applications menu) and selecting the COMP 2406 virtual machine. After the VM has fully booted up you can login to the student account using the password "tneduts!". This account has administrative privileges; in addition, there is the admin account in case your student account gets corrupted for any reason. The password for it is "nimda!".

We highly recommend running your VM in full-screen mode. (Don't maximize the window; instead select full screen from the view menu.) Do all of your work inside of the VM; it should be fast enough and you won't have any issues with sharing files or with host firewalls.

If you want to run the appliance on your own system (running essentially any desktop operating system you want), just download the COMP 2406.ova virtual appliance file and import. The SHA1 hash of this file is:

 3c0ad1c89d58b5b9b1225a3a7c876a500e0621a8  COMP 2406.ova

On Windows you can compute this hash for your downloaded file using the command FCIV -sha1 COMP 2406.ova. If the hash is different from above, your download has been corrupted.

If your virtualization application is not VirtualBox, you'll need to:

  • Have the VM platform ignore any errors in the structure of the appliance when importing;
  • Uninstall the VirtualBox guest additions by typing starting a terminal application and running
  sudo /opt/VBoxGuestAdditions-4.2.16/uninstall.sh
  • Install your platform's own Linux guest additions, if available.

Note as we will explain, you will have the ability to easily save the work you do from any VM to your SCS account and restore it to any other copy of the class VM. Thus feel free to play around with VMs; if you break anything, you can always revert. Remember though that in the labs you must save and restore your work, as all of your changes to the VM will be lost when you logout!

While you may update the software in the VM, those updates will be lost when you next login to the lab machines; thus, you probably only want to update a VM installed on your own system.

Hello, World!

To create your first node application, start geany, brackets, or emacs code editors by clicking on their quick launch icons at the bottom left of the screen (beside the LXDE start menu button).

(While vi is also installed in the VM, you may wish to run emacs and type Alt-X viper-mode. You're welcome.)

In your editor of choice, create a file hello.js in your Documents folder with the following contents:

  console.log("Hello World!");

You can now run this file by opening an LXTerminal (under Accessories) and typing:

  cd Documents
  node hello.js

And you should see Hello, World! output to your terminal.

You can also run node interactively by simply running node with no arguments. You'll then get a prompt where you can enter any code that you like and see what it does. To exit this environment, type Control-D.

Note that when run interactively, we say that node is running a read-eval-print loop (REPL). It reads input, evaluates it, and then prints the results. This structure is very old in computer science, going back to the first LISP interpreters from the early 1960's.

Your First Web App

Web applications, even simple ones, are a bit more complex than our "Hello, world!" example. Fortunately in node we have the express web application framework to make getting up and running quite easy.

In a terminal window, run the following commands:

 express first
 cd first
 npm install
 node app.js

You should get a message at the end saying that your app is listening on port 3000. To see what your app is doing, start up a web browser in your VM and visit the following URL:


You should see a message from your first web application!

Note: It seems that doing the above can generate errors due to recent changes in the Jade template engine. Also, npm may run very slowly due to networking issues. So alternately, do the following:

 # simulate "express first" (create application skeleton)
 wget https://homeostasis.scs.carleton.ca/~soma/webfund-2014w/T1/first.zip
 unzip first.zip
 rm first.zip
 cd first
 wget https://homeostasis.scs.carleton.ca/~soma/webfund-2014w/T1/node_modules.zip
 unzip node_modules.zip
 rm node_modules.zip
 # make sure dependencies are fulfilled; should return quickly
 npm install
 node app.js

Simple Changes

Now that you have an app up and running, make the following simple changes:

  • Change the default port to 2000 (app.js)
  • Change the title to "My First Web App" (routes/index.js)
  • Prevent the default stylesheet style.css from being loaded (views/layout.jade)

Saving your work

You can save your work to your SCS account by running

 save2406 <SCS username>

This will rsync /home/student to the COMP2406 directory in your SCS account by connecting to access.scs.carleton.ca.

When you wish to restore your student account, run

 restore2406 <SCS username>

Note that both of these commands are destructive - they will wipe out all the files in the COMP2406 folder on SCS or /home/student in your VM. If you want to see what the differences are between the two versions, run

 compare2406 <SCS username>


Now that you've got your virtual machine running, it is time to start learning about web technologies. In tutorial (if you have time) or on your own, you should either go through or make sure you know the material in all of the following CodeAcademy modules:

Feel free to skip around; these should be very simple for you, at least at the beginning. Try to do the last parts of each lesson to see if need to bother going through it. You'll be expected to know most of this material in order to successfully complete the first assignment.