WebFund 2013F Lecture 1: Difference between revisions

From Soma-notes
 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Audio from the lecture given on September 9, 2013 is available [http://homeostasis.scs.carleton.ca/~soma/webfund-2013f/lectures/comp2406-2013f-lec01-09Sep2013.m4a here].
Audio from the lecture given on September 9, 2013 is available [http://homeostasis.scs.carleton.ca/~soma/webfund-2013f/lectures/comp2406-2013f-lec01-09Sep2013.m4a here].


==Notes==


September 9
==Early Web==
Node


Web
Web
Browser <-talks to-> Server
Browser <-talks to->   Server
http <-- Stream of text or data byte stream from tcp and puts syntax on it
tcp <-- turns packets into continuous stream, controls sending, reordering etc
ip <--packet based
ethernet/wifi/...


Multiple protocols:
* http <-- Stream of text or data byte stream from tcp and puts syntax on it
* tcp <-- turns packets into continuous stream, controls sending, reordering etc
* ip <--packet based
* ethernet/wifi/...


now
==Modern Web==
Browser               <-talks to-> Server
Browser               <-talks to->                 Server
program talking to                 program
program               talking to                 program
(embedded in  
(embedded in  
html document
html document
Line 23: Line 22:
most of data on internet is encoded in http or smtp
most of data on internet is encoded in http or smtp
code that runs inside of browser is known as sandboxed
code that runs inside of browser is known as sandboxed
everything you care about is in the sandbox
* everything you care about is in the sandbox


google tracks and monetizes you
google tracks and monetizes you
you are the product
* ''you'' are the product


bandwidth: how much can I get at once
'''bandwidth:''' how much can I get at once?
latency: when I make a request, how long does it take for me to get the first bit
 
'''latency:''' when I make a request, how long does it take for me to get the first bit


gmail has all kinds of code built in to predict what you want and predicts which emails you're going to want to read
gmail has all kinds of code built in to predict what you want and predicts which emails you're going to want to read
constantly modelling your behaviour to work well
constantly modelling your behaviour to work well


==Server-Side Technologies==
* PHP
* servlets
* apache
* rails
Note we aren't covering these in this class except at the end.


Server
==node.js is JavaScript==
PHP
* Why? runs pretty fast
servlets <-- not actually going to learn any of these
* chromes v8 javascript engine and stuck on the server
apache
rails




node.js is a javascript
==on browser access the DOM==
Why? runs pretty darn fast
* browser manipulates the DOM
chromes v8 javascript engine and stuck on the server
* no DOM on server
on browser access the DOM
browser manipulates the DOM
no DOM on server
learning javascript running on server first THEN on the browser
learning javascript running on server first THEN on the browser
Server puts together an HTML document that it sends to the browser and then using this they talk to each other
Server puts together an HTML document that it sends to the browser and then using this they talk to each other
can't trust the browser.
* can't trust the browser.
browser keeps no secrets
* browser keeps no secrets
any data sent to server has to be appropriately validated
* any data sent to server has to be appropriately validated


Database is persistent data structure for servers
Database is persistent data structure for servers
relational database
* relational database


callbacks -> asynchronous I/O
callbacks -> asynchronous I/O
here is some code, do this when ...
* here is some code, do this when ...
 
processes
processes
threads : start new thread
threads :  
heavier weight than you want
* start new thread
not efficient
* heavier weight than you want
* not efficient

Latest revision as of 21:38, 8 November 2013

Audio from the lecture given on September 9, 2013 is available here.


Early Web

Web Browser <-talks to-> Server

Multiple protocols:

  • http <-- Stream of text or data byte stream from tcp and puts syntax on it
  • tcp <-- turns packets into continuous stream, controls sending, reordering etc
  • ip <--packet based
  • ethernet/wifi/...

Modern Web

Browser <-talks to-> Server program talking to program (embedded in html document that was loaded)

most of data on internet is encoded in http or smtp code that runs inside of browser is known as sandboxed

  • everything you care about is in the sandbox

google tracks and monetizes you

  • you are the product

bandwidth: how much can I get at once?

latency: when I make a request, how long does it take for me to get the first bit

gmail has all kinds of code built in to predict what you want and predicts which emails you're going to want to read constantly modelling your behaviour to work well

Server-Side Technologies

  • PHP
  • servlets
  • apache
  • rails

Note we aren't covering these in this class except at the end.

node.js is JavaScript

  • Why? runs pretty fast
  • chromes v8 javascript engine and stuck on the server


on browser access the DOM

  • browser manipulates the DOM
  • no DOM on server

learning javascript running on server first THEN on the browser Server puts together an HTML document that it sends to the browser and then using this they talk to each other

  • can't trust the browser.
  • browser keeps no secrets
  • any data sent to server has to be appropriately validated

Database is persistent data structure for servers

  • relational database

callbacks -> asynchronous I/O

  • here is some code, do this when ...

processes threads :

  • start new thread
  • heavier weight than you want
  • not efficient