WebFund 2015W: Tutorial 1
This tutorial is not yet finalized.
ADD: web developer tools, JavaScript console, HTTP/Networking basics.
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 should be logged in automatically as the user "student". If the screen locks or you need administrative access (via sudo) you'll need the password for the student account, however. This password is "tneduts!" (students backwards followed by an !). There is also an 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 [http://homeostasis.scs.carleton.ca/~soma/VMs/COMP%202406%20Winter%202015.ova download the virtual appliance file] and import. The SHA1 hash of this file is:
47849f3c5a4b11e1c701bd95ba4bb8f88062d8ba COMP 2406 Winter 2015.ova
On Windows you can compute this hash for your downloaded file using the command FCIV -sha1 COMP 2406 Winter 2015.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.3.10/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, vim, or emacs code editors by clicking on their quick launch icons at the bottom left of the screen (beside the LXDE start menu button).
(If you are a fan of vi but want to try emacs, you should 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.
Follow the directions for the express application generator in a terminal window. In short form, you should run the following commands to make "myapp":
sudo npm install express-generator -g express myapp cd myapp npm install DEBUG=myapp ./bin/www
To see what your app is doing, start up a web browser in your VM and visit the following URL:
http://localhost:3000
You should see a message from your first web application!
If you have any problems, particularly with network connections, you can get and run the basic app by instead doing the following:
wget http://homeostasis.scs.carleton.ca/~soma/webfund-2015w/code/myapp.zip unzip myapp cd myapp DEBUG=myapp ./bin/www
Simple Changes
Now that you have an app up and running, make the following simple changes:
- Change the default port to 2000 (by editing bin/www)
- 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>
CodeAcademy
Now that you've got your virtual machine running, it is time to start learning about web technologies. If you haven't already, 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 be familiar with most of this material starting in next week's tutorial (and Assignment 2).