dobrica pavlinušić - rest (it showoff)

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: it-showoff

Post on 03-Jul-2015

870 views

Category:

Business


0 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!

TRANSCRIPT

Page 1: Dobrica Pavlinušić - Rest (IT Showoff)

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: Dobrica Pavlinušić - Rest (IT Showoff)

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: Dobrica Pavlinušić - Rest (IT Showoff)

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: Dobrica Pavlinušić - Rest (IT Showoff)

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: Dobrica Pavlinušić - Rest (IT Showoff)

Comet = Meteor + RFIDComet = Meteor + RFID

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

Page 6: Dobrica Pavlinušić - Rest (IT Showoff)

ETOOMUCHETOOMUCH

RFIDdriver

Webbrowser

Koha

Meteor Comet server: single point of falure

socket HTTPstriped book info

HTTPKoha

HTTPbook info

Page 7: Dobrica Pavlinušić - Rest (IT Showoff)

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: Dobrica Pavlinušić - Rest (IT Showoff)

RFID + HTTP/JSONPRFID + HTTP/JSONP

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

Page 9: Dobrica Pavlinušić - Rest (IT Showoff)

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: Dobrica Pavlinušić - Rest (IT Showoff)

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: Dobrica Pavlinušić - Rest (IT Showoff)

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: Dobrica Pavlinušić - Rest (IT Showoff)

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: Dobrica Pavlinušić - Rest (IT Showoff)

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: Dobrica Pavlinušić - Rest (IT Showoff)

Buzzword BingoBuzzword Bingo

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

Page 15: Dobrica Pavlinušić - Rest (IT Showoff)

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: Dobrica Pavlinušić - Rest (IT Showoff)

Pitanja?Pitanja?4242