Thinking of development Netwerken en APIs Arjan Scherpenisse HKU / Miraclethings
Thinking of Development, semester II — 2012/2013
Agenda voor vandaag
· Netwerken · Protocollen · API's · Opdracht
Thinking of Development, semester II — 2012/2013
2/37
Netwerken
Soorten netwerken, van klein naar groot
· Near-field (NFC) · Body-area · Personal area · Local area (LAN) · Wide area (WAN) · Internet · Interplanetary internet * Thinking of Development, semester II — 2012/2013
4/37
Thinking of Development, semester II — 2012/2013
5/37
Ze praten met elkaar
· Elke computer spreekt het (IP) · Elke computer heeft een ip-adres
Thinking of Development, semester II — 2012/2013
6/37
(Ook heel cool: Greg's cable map)
Thinking of Development, semester II — 2012/2013
11/37
DNS · IP-adressen zijn moeilijk te onthouden · ...namen niet · Daarom: het Domain Name System (DNS) · DNS: naampje --> nummertje
Thinking of Development, semester II — 2012/2013
12/37
Checken of het netwerk werkt · ff 'pingen' ~# ping xs4all.nl PING xs4all.nl (194.109.21.8) 56(84) bytes of data. 64 bytes from xs8.xs4all.nl (194.109.21.8): icmp_req=1 ttl=58 time=12.1 ms 64 bytes from xs8.xs4all.nl (194.109.21.8): icmp_req=2 ttl=58 time=11.9 ms
Thinking of Development, semester II — 2012/2013
13/37
Verbindingen tussen computers · Een computer maakt verbinding met een andere computer · Hij verbind met het ip adres van de ander, op een bepaalde poort. · Degene die de verbinding begint, is de client · Degene die de verbinding ontvangt, is de server · Ze spreken een protocol af waarmee ze praten
Thinking of Development, semester II — 2012/2013
14/37
Thinking of Development, semester II — 2012/2013
15/37
Client-server
How to make a multiplayer game Thinking of Development, semester II — 2012/2013
16/37
Poorten De poort waarop een server "luistert", bepaalt het protocol dat wordt gesproken. Poort
Protocol
25
SMTP
email, SendMail Transfer Protocol
80
HTTP
browser, HyperText Transfer Protocol
443
HTTPS
browser, HTTP secured
22
SSH
remote toegang, Secure SHell
...en zo nog veel meer..
Thinking of Development, semester II — 2012/2013
17/37
Protocollen
Thinking of Development, semester II — 2012/2013
18/37
“ A communications protocol is a system of digital message formats and rules for exchanging those messages in or between computing systems. ” Wikipedia
Thinking of Development, semester II — 2012/2013
19/37
Protocollen · Het is een manier van praten zodat computers elkaar verstaan · Vergelijk met natuurlijke talen · Staan in principe los van het
!
· Engelse taal kan worden gesproken of geschreven (het "transport"), maar het is nog steeds Engels · In praktijk is het transport vaak het of een LAN. · Maar bv. Arduino communiceert met de PC over de
Thinking of Development, semester II — 2012/2013
20/37
Arduino seriële poort naar PC
Thinking of Development, semester II — 2012/2013
21/37
HTTP: HyperText Transfer Protocol
· Wordt gebruikt voor webpagina's · Client vraagt een adres URL op aan een server · Server reageert met een webpagina APIs gebruiken HTTP ook vaak als transportmiddel
Thinking of Development, semester II — 2012/2013
22/37
GET / HTTP/1.1 User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:12.0) Gecko/20100101 Firefo Host: www.google.nl Accept: */*
HTTP/1.1 200 OK Date: Wed, 23 May 2012 07:54:55 GMT Expires: -1 Cache-Control: private, max-age=0 Content-Type: text/html; charset=ISO-8859-1 Set-Cookie: PREF=ID=e8c520bdb5d88dbf:FF=0:TM=1337759695:LM=1337759695:S=nGXpnXjHIp ....
Thinking of Development, semester II — 2012/2013
23/37
OSC: Open Sound Control
· Opvolger van MIDI (maar niet alleen voor geluid) · Wordt gebruikt in veel interactieve installaties, dj tools, ... · Client stuurt een simpel berichtje naar de server · Met URL-achtige structuur: /light/fadein · Optioneel met nog extra argumenten Thinking of Development, semester II — 2012/2013
24/37
Voor processing: OscP5 void mousePressed() { // create a new OscMessage with an address pattern, // in this case /test. OscMessage myOscMessage = new OscMessage("/light/fadein"); // add a value (an integer) to the OscMessage myOscMessage.add(100); // send the OscMessage to a remote adres + poort oscP5.send(myOscMessage, new NetAddress("127.0.0.1",3200)); }
Thinking of Development, semester II — 2012/2013
25/37
Arduino en OSC
Thinking of Development, semester II — 2012/2013
26/37
“ API: Application Programming Interface ”
Thinking of Development, semester II — 2012/2013
28/37
API's · "Interface" kennen we nog, toch? · Een manier waarmee een computer van de diensten van een andere computer gebruik maakt · Een koppeling tussen losse computersystemen · Meestal wordt met API een HTTP API bedoeld · Twitter API, Facebook API, Instagram API, Google Maps API, ....... · Er zijn veel libraries voor talen die zo'n API "inpakken"
Thinking of Development, semester II — 2012/2013
29/37
API voorbeelden
· Facebook graph API explorer
Thinking of Development, semester II — 2012/2013
30/37
API vanuit een library (bv, Twitter API in PHP): require_once 'Services/Twitter.php'; $username = 'Your_Username'; $password = 'Your_Password'; try { $twitter = new Services_Twitter($username, $password); $msg = $twitter->statuses->update("Kijk mij eens tweeten ^_^"); print_r($msg); } catch (Services_Twitter_Exception $e) { echo $e->getMessage(); } Thinking of Development, semester II — 2012/2013
31/37
Belangrijkste punten · Netwerken: computers die met elkaar verbonden zijn · Elk apparaat heeft een uniek IP adres · DNS vertaalt IP adres in een makkelijk te onthouden naam · Machines praten via protocollen om elkaar te begrijpen · HTTP is het protocol voor het www · OSC wordt veel gebruikt in interactieve installaties · APIs zijn er zodat andere machines en programma's van de diensten van een site gebruik kunnen maken.
Thinking of Development, semester II — 2012/2013
32/37
Opdracht…!
Deadline: Vrijdag 31 mei 2013, 23:59u
Thinking of Development, semester II — 2012/2013
33/37
Alternatieve opdracht ÓF:
Deadline van beide opdrachten: Vrijdag 31 mei 2013, 23:59u Beoordeling: beide opdrachten ingeleverd en voldoende (andere opdracht was die van de state machine) Thinking of Development, semester II — 2012/2013
34/37
Bedankt!
Volgende week: laatste college, over AI (nu écht!)
Thinking of Development, semester II — 2012/2013
36/37
Agenda voor vandaag · Opdracht bespreking · Physical Computing · Arduino · Toepassing
Thinking of Development, semester II — 2012/2013
37/37