rest ili kao sam se prestao brinuti o http-u i zavolio ga (http server sa rfid driverom)

16
REST REST ili kao sam se prestao brinuti ili kao sam se prestao brinuti o HTTP-u i zavolio ga o HTTP-u i zavolio ga (HTTP Server sa RFID driverom) (HTTP Server sa RFID driverom) Dobrica Pavlinušić http://www.rot13.org/~dpavlin/ HULK, Knjižnica Filozofskog fakulteta u Zagrebu ITShowoff, Zagreb, 12. veljače 2010.

Upload: dobrica-pavlinusic

Post on 25-Dec-2014

2.811 views

Category:

Technology


3 download

DESCRIPTION

Ako imate samo čekić, svaki problem izgleda kao čavao. Ako vaša predznanja uključuju razvoj web aplikacija, vjerojatno nećete ići pisati podršku za RFID. Ili... Naravno da hoćete! Jer, što je drugo browser nego korisničko sučelje? Nekoliko linija koda, malo Comet trikova i imate svoj sustav. Ali nemate dobar osjećaj o tome. Možda je web ipak krivi čekić za ovaj čavao. Naravno da ne! Pogledajte dijelove svojeg sustava, izdvojite dijelove koji nemaju stanje (tako da dobro pašu na HTTP request/response ciklus), dizajnirajte lijepi REST API, natjerajte browser da dovlači podatke sa različitih izvora podataka koristeći JSONP i... napisali ste HTTP server sa RFID driverom! održano: IT Showoff, 2010-02-12, Zagreb http://www.itshowoff.com/ http://www.slideshare.net/itshowoff/dobrica-pavlinui-rest-it-showoff

TRANSCRIPT

Page 1: REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFID driverom)

RESTREST ili kao sam se prestao brinuti ili kao sam se prestao brinuti

o HTTP-u i zavolio gao HTTP-u i zavolio ga(HTTP Server sa RFID driverom)(HTTP Server sa RFID driverom)

Dobrica Pavlinušićhttp://www.rot13.org/~dpavlin/

HULK, Knjižnica Filozofskog fakulteta u ZagrebuITShowoff, Zagreb, 12. veljače 2010.

Page 2: REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFID driverom)

Zašto?Zašto?

Razviti podršku za posuđivanje i vraćanje

knjiga RFID tehnologijom preko browsera!

Kartica na čitaču treba dvosmjernu komunikaciju sa Kohom!

Page 3: REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFID driverom)

3M RFID protokol3M RFID protokol

● 3M software za korisnike– Visual Basic iz 90-tih– Ne prikazuje SID-ove RFID čipova– Prikazuje 5 čipova istovremeno– Automatski copy/paste u drugu

Windows aplikaciju● USB serial

protokol saRFID čitačem

Page 4: REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFID driverom)

3M RFID protokol3M RFID protokol

● Portmon za pregled USB prometa– Windowsi pod KVM-om

● Otkriti sve mogućnosti– čitanje 25 čipova istovremeno– koliko podataka stane na RFID čip– kako funkcionira security

● Protokol ima CCITT checksum– StackOverflow korisnik selwyn rješio

moj problem!

Page 5: REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFID driverom)

Comet = Meteor + RFIDComet = Meteor + RFID

http://www.youtube.com/watch?v=ptWv4fFJ6Q8http://www.youtube.com/watch?v=ptWv4fFJ6Q8

Page 6: REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFID driverom)

ETOOMUCHETOOMUCH

RFIDdriver

Webbrowser

Koha

Meteor Comet server: single point of falure

socket HTTPstriped book info

HTTPKoha

HTTPbook info

Page 7: REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFID driverom)

RFIDdriverJSONP

KISS: JSONPKISS: JSONP

Webbrowser

Koha

Svaki JSONP poziv je nezavisan!Pull RFID čitača iz browsera

HTTP JSONP127.0.0.1:9000

HTTPKoha

Page 8: REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFID driverom)

RFID + HTTP/JSONPRFID + HTTP/JSONP

http://www.vimeo.com/9348504http://www.vimeo.com/9348504

Page 9: REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFID driverom)

RESTREST

● ScanGET http://localhost:9000/scan?callback=foofoo({"time":1265896293,"tags":[{"sid":"E00401001F778B5D","custom":0,"content":"","library":0,"branch":0,"total":0,"u1":0,"u2":0,"security":"00","type":0,"set":0}]})

● ProgramGET http://localhost:9000/program?E00401001F778B5D=201002120042302 Location

GET http://localhost:9000/program?E00401001F778B5D=blank

Page 10: REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFID driverom)

RESTREST

● Security– Vraćanje (check-in)– Posuđivanje (check-out)– Automatski kod programiranja

GET http://localhost:9000/secure?E00401001F778B5D=DA302 Location

GET http://localhost:9000/secure?E00401001F778B5D=D7302 Location

GET http://localhost:9000/secure.js?E00401001F778B5D=DAJSONP

GET http://localhost:9000/secure.js?E00401001F778B5D=D7JSONP

Page 11: REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFID driverom)

HTTP tweaksHTTP tweaks

● Etag: visible-E00401001F77478C– Not supported in our jQuery 1.2.3 until

http://github.com/jquery/jquery/commit/28ab4d32247943e1ae3409b23fe69303df0bc9eb– RFID driver zna promjene pa bi ih

mogao gurnuti klijentu za DOM update● HTTP je state-less

– Omogućava povezivanje više klijenata istovremeno (trenutno lokalni i Koha)

Page 12: REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFID driverom)

Koha modificationsKoha modifications

● Find element to hook into

● Append your data

● Minimalne modifikacije aplikacije– <script src="koha-rfid.js">– 2.5K JavaScript-a...

Page 13: REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFID driverom)

Koha + RFID = RIAKoha + RFID = RIA

● In-browser!● JSONP /scan● Inteligentan form

fill-in + submit● Screen scraping

za security● Nema modfikacije

Kohe!● Single-origin

policy je pain

Page 14: REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFID driverom)

Buzzword BingoBuzzword Bingo

● Napravite prototip● Ako izgleda prekomplicirano – jest● KISS – keep it simple and stupid!● Sve može biti web-enabled!

Page 15: REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFID driverom)

Više informacijaViše informacija

Portmon for Window (serial sniffer)● http://technet.microsoft.com/en-

us/sysinternals/bb896644.aspxIzvorni kod● http://svn.rot13.org/index.cgi/RFID/

CCITT checksum pitanje● http://stackoverflow.com/questions/149617/how-

could-i-guess-a-checksum-algorithmMeteor Comet server with RFID● http://blog.rot13.org/2009/04/comet_experiment_rfid_

reader_with_koha_data_in_browser.htmlHitchhiker's guide to RFID● http://saturn.ffzg.hr/rot13/index.cgi?

hitchhikers_guide_to_rfid

Page 16: REST ili kao sam se prestao brinuti o HTTP-u i zavolio ga (HTTP Server sa RFID driverom)

Pitanja?Pitanja?4242