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' ~#pingxs4all.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 <html> <body>... 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 Thinking Optioneel of Development, semester met II nog 2012/2013 extra argumenten 24/37
Voor processing: OscP5 voidmousepressed(){ //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=newservices_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