SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA DIPLOMSKI RAD br. 143 KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMA Vanja Smailović Zagreb, lipanj 2011. Sadrţaj Uvod ...................................................................................................................................... 1 1. 2. 3. Ad-hoc društvene mreže i kontekstna ovisnost ............................................................. 2 1.1. Povijest društvenih mreža ...................................................................................... 2 1.2. Ad-hoc društvene mreže ........................................................................................ 5 1.3. Kontekst i kontekstno ovisne usluge ..................................................................... 5 1.4. Slične usluge i aplikacije ....................................................................................... 6 1.4.1. Foursquare ..................................................................................................... 6 1.4.2. Facebook Places ............................................................................................ 7 1.4.3. Google Latitude ............................................................................................. 8 1.4.4. Pregled sličnosti i različitosti s aplikacijom Bfriend ..................................... 8 Arhitektura sustava i komunikacija u sustavu ............................................................. 10 2.1. Arhitektura sustava .............................................................................................. 10 2.2. Model programskog rješenja ............................................................................... 12 Programska implementacija sustava ............................................................................ 15 3.1. 4. 5. Aplikacijski poslužitelj GlassFish ....................................................................... 15 3.1.1. Algoritam lokacijske bliskosti ..................................................................... 16 3.1.2. Algoritam osvježavanja liste prijatelja ........................................................ 18 3.1.3. Stanje dostupnosti korisnika ........................................................................ 18 3.1.4. Lista prijatelja prijatelja ............................................................................... 19 3.2. Baza podataka MySQL........................................................................................ 20 3.3. Facebook Graph API ........................................................................................... 22 3.4. Xtify Push API .................................................................................................... 26 Scenariji korištenja aplikacije Bfriend ........................................................................ 29 4.1. Scenarij 1 – osnovna funkcionalnost ................................................................... 30 4.2. Scenarij 2 – veći broj korisnika ........................................................................... 32 4.3. Scenarij 3 – stanje dostupnosti korisnika ............................................................ 33 4.4. Scenarij 4 – ignoriranje korisnika........................................................................ 33 4.5. Scenarij 5 – napredna funkcionalnost .................................................................. 34 4.6. Izjave testnih korisnika ........................................................................................ 35 Buduća funkcionalnost i mogućnosti sustava .............................................................. 36 Zaključak ............................................................................................................................. 38 Literatura ............................................................................................................................. 39 Sažetak ................................................................................................................................. 41 Summary.............................................................................................................................. 42 Privitak ................................................................................................................................ 43 Uvod Društvene mreže su popularan, općeprihvaćen i široko rasprostranjen način komuniciranja i interakcije meĎu korisnicima. Sljedeći evolucijski korak su ad-hoc društvene mreže – one svojim korisnicima omogućuju trenutačnu povezanost, u zadanom kontekstu kao što je odreĎeni vremenski period ili lokacija. Ovakav pristup potreban je ukoliko je željena društvena umreženost privremene ili trenutačne prirode zbog uvjeta u kojima se korisnici nalaze (primjerice, u pokretu). Ad-hoc društvene mreže omogućuju drugačiju, dinamičniju, više svrhovno-orijentiranu komunikaciju i interakciju svojim korisnicima, novi pogled na ostvarene društvene veze i još važnije – stvaranje novih društvenih veza. Ovaj diplomski rad za zadatak ima opisati takvu vrstu komunikacije i interakcije te razviti sustav koji će omogućiti lokacijski ovisnu uslugu svojim pokretnim korisnicima. Ovakva ad-hoc društvena mreža pruža novu vrijednost korisnicima, jer na poseban način prikazuje dosadašnje društvene veze i omogućuje, na jedinstven način, stvaranje novih društvenih veza koristeći lokaciju kao kontekst unutar društvene mreže. Sustav, odnosno aplikacija podržana društvenom mrežom razvijena ovim radom naslovljena je Bfriend. Bfriend je lokacijski-ovisna ad-hoc društvena mreža koja svojim korisnicima omogućuje da, ukoliko imaju profil na društvenoj mreži Facebook, budu obaviješteni kada su njihovi Facebook prijatelji u njihovoj neposrednoj blizini. Neposredna blizina je unaprijed postavljena (relativno mala) udaljenost izmeĎu korisnika u mreži, primjerice sto metara. Aplikacija je dostupna korisnicima operacijskog sustava Android, obzirom da koristi notifikacije na zaslonu za dostavu notifikacija. Prvo poglavlje (Ad-hoc društvene mreže i kontekstna ovisnost) govori ukratko o povijesti društvenih mreža, definira detaljnije ad-hoc društvene mreže i objašnjava pojam kontekstne ovisnosti. Drugo poglavlje (Arhitektura sustava i komunikacija u sustavu) opisuje komponente sustava i tok komunikacije u modelu programskog rješenja. Sljedeće poglavlje (Programska implementacija sustava) detaljno opisuje principe i algoritme korištene pri implementaciji sustava Bfriend. U četvrtom poglavlju (Scenariji korištenja aplikacije Bfriend) sustav je prikazan kroz oči korisnika, opisujući funkcionalnosti kroz moguće načine korištenja. U zadnjem poglavlju nalazi se pregled mogućnosti i funkcionalnosti vezanih za budućnost, usavršavanje i nadogradnju sustava. 1 1. Ad-hoc društvene mreţe i kontekstna ovisnost U ovom poglavlju opisana je teorijska podloga rada, kroz objašnjenje glavnih pojmova korištenih u radu, kao i neke poznatije aplikacije i usluge, slične društvenoj mreži Bfriend razvijenoj u sklopu ovog rada. 1.1. Povijest društvenih mreţa Za početak, važno je spomenuti da ideja socijalnih mreža seže sve do 70-tih godina prošlog stoljeća, unatoč činjenici da su popularne i učestalo korištene tek danas. Jedna od prvih, ako ne i prva mreža nalik društvenoj mreži jest BBS (Bulletin Board System), koja se pojavila 80-tih godina prošlog stoljeća. Omogućavala je osnovnu komunikaciju porukama meĎu korisnicima te je zapravo preteča društvenih mreža. Krajem 80-tih godina prošlog stoljeća, pojavljuje se CompuServe, koji prvi nudi pristup vijestima i nekim dogaĎanjima. CompuServe je zapravo preteča forumskih zajednica današnjice. Treća i najvažnija preteča društvenim mrežama jest AOL (American Online) koja se ujedno smatra i pretečom WWW-a. AOL uvodi korisničke profile te omogućuje prikazivanje osnovnih podataka o korisnicima u mreži. Nakon AOL-a, slijedi vrlo jak rast korištenja osobnih računala i Interneta, općenito. Slijedi internetska stranica Classmates.com, koja se pojavila 1995. godine, a pružala je uslugu obnavljanja starih ili zaboravljenih društvenih veza – ljudi i njihovih poznanstava iz školskih klupa. Za razliku od AOL-a, usluga nije omogućavala otvaranje profila, ali je bilo iznimno popularna, a danas broji 40 milijuna korisnika diljem svijeta. Netom nakon nje, slijedi SixDegrees.com pokrenuta 1997. godine i više naliči društvenim mrežama današnjice, omogućuje korisničke profile i pretraživanje korisnika unutar mreže. Nažalost, nije zadobila svjetsku slavu i ugašena je krajem 2000. godine [1]. Na prelasku u novo tisućljeće, jače se naziru društvene mreže nalik današnjima. Godine 2003. pojavljuju se LinkedIn1 i MySpace2 te ostavljaju svoj trag na tadašnje definicije društvenih mreža, obzirom da postaje imperativ učiniti prikaz društvenih veza unutar mreže javno dostupnima. MySpace je držao prvo mjesto u svijetu društvenih mreža sve do 1 2 http://www.linkedin.com/ http://www.myspace.com/ 2 pojave Facebooka1, koji je apsolutno pomeo svaku konkurenciju u trenutku kada je zaživio na svjetskoj razini, 2006. godine, kada se pojavljuje Twitter2 koji i danas drži uvjerljivo drugo mjesto po broju korisnika. Dosad navedeno nalazi se na vremenskoj lenti na sljedećoj slici (Slika 1.1) [1]. Slika 1.1 Povijest društvenih mreža s prikazom najvažnijih [1] Facebook je najvažnija društvena mreža za ovaj rad, obzirom da mreža Bfriend koristi Facebook-profile za svoje pružanje usluga korisnicima. Facebook se pojavio 2004. na Harvardu, zamišljen kao zatvorena mreža studenata tog sveučilišta u SAD-u, a svjetsku priznatost stekao je 2006. godine, kada je postao javno dostupna društvena mreža. Facebook je daleko najveća društvena mreža današnjice i ima veliki broj korisnika. Prema službenim podacima na Internetu, broj korisnika se bliži brojci od 700 milijuna, od čega je najmanje 200 milijuna koristilo Facebook sa svog pokretnog ureĎaja [2]. Na sljedećim slikama, prikazani su neki statistički zanimljivi podaci vezani za Facebook (Slika 1.2 i Slika 1.3). 1 2 http://www.facebook.com/ http://twitter.com/ 3 Slika 1.2 Dobne skupine korisnika Facebooka [2] Kao što je vidljivo sa slike iznad, najviše je korisnika u dobnoj skupini od 18 do 24 godine (31%), a ukupno ima skoro 60% korisnika izmeĎu 18 i 34 godine starosti. Ako im se pribroje i mlaĎe dobne skupine 13-15 i 16-17, broj korisnika raste na ukupno 80% u dobnoj skupini 13-34 godine starosti. Ova činjenica jasno pokazuje da su korisnici uglavnom mladi ljudi željni društvenih interakcija. Na sljedećoj slici prikazan je broj korisnika kroz zadnjih 6 mjeseci, u Hrvatskoj i u svijetu. Vidljiv je vrlo sličan, linearan rast, usprkos činjenici da se Facebooku bliži šesti roĎendan! Slika 1.3 Broj korisnika Facebooka zadnjih 6mj. u Hrvatskoj i svijetu [2] 4 1.2. Ad-hoc društvene mreţe Ad-hoc društvene mreže su, kao što je već rečeno, vrsta društvenih mreža koje omogućuju trenutačno povezivanje korisnika tijekom odreĎenog vremenskog perioda i odreĎenog geografskog područja, a najčešće sa sličnim ili istim ciljevima [3]. Pritom, važno je imati na umu da vodeće društvene mreže današnjice naglasak stavljaju na interakciju i komunikaciju meĎu korisnicima ili grupama korisnika, radije nego na same korisnike pojedinačno. Ovim pristupom, uz dovoljno vremena, razvija se zajednica ljudi koja je najčešće svrhovno-orijentirana, čineći zapravo "pametnu zajednicu" korisnika. Kako bi podržala ovakav način interakcije i komuniciranja, ad-hoc društvena mreža mora biti u stanju omogućiti: stvaranje članstva i upravljanje članstvom unutar mreže, tok informacija i podataka izmeĎu korištene platforme društvene mreže i ad-hoc društvene mreže te interakciju i komunikaciju meĎu korisnicima ad-hoc društvene mreže. Ad-hoc društvena mreža Bfriend potpuno zadovoljava drugi i treći kriterij. Prvi kriterij djelomično je zadovoljen obzirom da mreža Bfriend nema vlastiti nadzor i upravljanje nad korisničkim profilima, već je on preuzet s Facebooka radi jednostavnosti korištenja i izbjegavanja zamaranja korisnika s otvaranjem novog računa. 1.3. Kontekst i kontekstno ovisne usluge Za početak, neke od definicija konteksta su: Schilit – "Lokacija, identiteti obližnjih predmeta i ljudi te promjene nad istima." [4] Brown, Bovey and Chen – "Lokacija, identiteti ljudi blizu korisnika, vrijeme dana, godišnje doba, temperatura itd." [5] Ryan, Pascoe i Morse – "Lokacija korisnika, njegovo okruženje, identitet i vrijeme." [6] Sve navedene definicije pokrivaju dobar dio onog što je kontekst općenito, ali postoji potreba za, na neki način, objedinjavanjem navedenih. Stoga, za potrebe ovog rada odabrana je sljedeća definicija konteksta: 5 Dey – "Kontekst je svaka informacija koja se može iskoristiti za opisivanje situacije u kojoj se entitet nalazi. Entitet je pritom relevantna osoba, mjesto ili predmet u interakciji izmeĎu korisnika i aplikacije, uključujući i samog korisnika i aplikaciju." [7] [8] [9] Nadalje, prateći isto načelo, definicija kontekstno-ovisnog sustava je: Dey – "Sustav je kontekstno ovisan ukoliko koristi kontekst za opskrbu korisnika relevantnim informacijama i/ili uslugama, gdje relevantnost ovisi o namjerenom korisničkom zadatku." [7] [8] [9] 1.4. Slične usluge i aplikacije U sljedećim potpoglavljima opisane su tri poprilično slične usluge, odnosno aplikacije – Foursquare1, Facebook Places2 i Google Latitude3. 1.4.1. Foursquare Foursquare je društvena mreža kojoj se pristupa pomoću lokacijski kontekstno-ovisne aplikacije ili web-stranice za pokretne ureĎaje. Razvijena je 2009. godine, a prema službenom izvještaju tvrtke – danas imaju preko 8 milijuna korisnika diljem svijeta. Korisnici su u pokretu i imaju mogućnost prijave u sustav ukoliko se nalaze na lokaciji ponuĎenoj u aplikaciji, a ukoliko to naprave – dodjeljuju im se nagrade u obliku bodova ili virtualnih bedževa i odlikovanja, što drugi korisnici u društvenoj mreži mogu vidjeti jer su te poruke objavljene u sustavu. TakoĎer, sustav može predložiti slično mjesto ili aktivnost onoj koju korisnik obavlja u trenutku prijave, pa se može reći da je Foursquare i preporučitelj sadržaja. Foursquare podržava ureĎaje s GPS-modulom, a to su najčešće tzv. "pametni telefoni", s jednim od podržanih operacijskih sustava – Android, iOS, Symbian, webOS, Windows Phone 7 ili Blackberry. Ipak, postoje i brojne različitosti: aplikacija Bfriend može doznati lokaciju koristeći i WiFi ili 3G mrežu (recimo UMTS), dok Foursquare koristi isključivo GPS, 1 https://foursquare.com/overview http://www.facebook.com/places/ 3 https://www.google.com/latitude 2 6 Bfriend omogućuje korisnicima postavljanje stanja vidljivosti u mreži na principu chat aplikacija današnjice, dok Foursquare ima opciju prijave/odjave u sustav, Foursquare omogućuje uvid u trenutnu lokaciju prijatelja korisnika ukoliko su omogućili tu opciju, Bfriend ne dopušta eksplicitno prikazivanje trenutne lokacije prijatelja, već isključivo obavijest u slučaju lokacijske neposrednosti, Bfriend radi i u pozadini, čime omogućuje zaprimanje obavijesti u kontekstnospecifičnim slučajevima kao što su lokacijska neposrednost čak i kad je aplikacija ugašena, Foursquare omogućuje kontekstno-nespecifično obavještavanje, kao što je promjena trenutne lokacije prijatelja, odnosno njihovog statusa, Bfriend nije zamišljena kao personalizirana usluga i ne pruža mogućnost personalizacije, Foursquare omogućuje korisnicima uvid u prijedloge sustava temeljene na korisničkim profilima. 1.4.2. Facebook Places U kolovozu 2010. godine Facebook je objavio novu uslugu – Facebook Places. Kao što i samo ime govori, usluga je lokacijski kontekstno-ovisna, a osnovna ideja je zasnovana na tome da korisnik dijeli svoju trenutnu lokaciju koristeći GPS pokretnog ureĎaja. Primjerice, korisnik može odlučiti podijeliti informaciju o tome kako je trenutno na koncertu, u odreĎenom restoranu ili slično. Informacija postaje dostupna na tri mjesta unutar Facebook sustava (Wall, News i Places), omogućujući vidljivost drugim korisnicima u društvenoj mreži. Ova usluga nije sasvim originalna i idejno je slična uslugama Foursquare, Gowalla ili Brightkite, ali njen osnovni potencijal leži u činjenici da Facebook ima ogroman (najveći) broj korisnika. Usluge ove vrste pružaju korisnicima jednu važnu prednost – interakciju u društvenoj mreži koristeći podatke o lokaciji. Ipak, razlike izmeĎu njih su veće unatoč navedenim sličnostima: Bfriend omogućuje korisnicima postavljanje stanja vidljivosti u mreži na principu chat aplikacija današnjice, dok Facebook Places ima opciju prijave/odjave u sustav, Facebook Places omogućuje uvid u sadašnju (a počesto i prijašnju) lokaciju prijatelja korisnika ukoliko su osvježili svoj profil istom, Bfriend ne dopušta eksplicitno prikazivanje trenutne lokacije prijatelja, već isključivo obavijest u slučaju lokacijske neposrednosti, 7 Bfriend radi i u pozadini, čime omogućuje zaprimanje obavijesti u kontekstnospecifičnim slučajevima kao što su lokacijska neposrednost čak i kad je aplikacija ugašena, Facebook Places ne omogućuje obavještavanje, niti je zamišljena kao takva usluga. 1.4.3. Google Latitude Google Latitude je lokacijski kontekstno-ovisna aplikacija za pokretne ureĎaje. Koristi već dobro poznate i široko rasprostranjene Google korisničke račune za pristup usluzi, a korisniku omogućuje uvid u trenutne lokacije njegovih prijatelja (takoĎer korisnika Latitude usluge) te objavljivanje vlastite trenutne lokacije. Proširenje usluzi, koje je Google najavio u studenom 2009. godine, omogućuje spremanje povijesti lokacija i napredne usluge, ukoliko korisnik pristane na pohranu takvih podataka [10]. U svibnju 2010. godine usluga je dobila i svoj API, kojim se omogućuje pristup pohranjenim podacima ukoliko korisnik na to pristane. Različitosti u odnosu na aplikaciju Bfriend su slične onima s Foursquare: Bfriend omogućuje korisnicima postavljanje stanja dostupnosti u mreži na principu chat aplikacija današnjice, dok Google Latitude ima opciju prijave/odjave u sustav, Google Latitude omogućuje uvid u trenutnu lokaciju prijatelja korisnika ukoliko su omogućili tu opciju, Bfriend ne dopušta eksplicitno prikazivanje trenutne lokacije prijatelja, već isključivo obavijest u slučaju lokacijske neposrednosti, Bfriend radi i u pozadini, čime omogućuje zaprimanje obavijesti u kontekstnospecifičnim slučajevima kao što su lokacijska neposrednost čak i kad je aplikacija ugašena, Google Latitude omogućuje kontekstno-nespecifično obavještavanje, kao što je promjena trenutne lokacije prijatelja, odnosno njihovog statusa. 1.4.4. Pregled sličnosti i različitosti s aplikacijom Bfriend Aplikacija Bfriend dijeli neke ključne sličnosti s Facebook Places: lokacija je korištena kao najvažniji kontekst, podržani su pokretni ureĎaji i ciljana skupina su korisnici u pokretu, društvena mreža je korištena za interakciju meĎu korisnicima, aplikacije podržavaju pokretne ureĎaje s operacijskim sustavom Android. 8 Uz navedeno, aplikacija Bfriend dijeli odreĎene sličnosti i s Foursquare: korisnik može zaprimiti obavijest na zaslonu pokretnog ureĎaja u nekom od specifičnih unaprijed definiranih slučajeva, ali ne i u kontekstno-ovisnim slučajevima. Google Latitude s aplikacijom Bfriend dijeli specifičan pristup korisniku: korisnik ima kontrolu nad razinom privatnosti, primjerice, može prikazati detaljnu lokaciju (npr. adresa) samo odreĎenoj skupini prijatelja dok će grubu lokaciju (npr. grad) prikazati drugoj skupini ili ju potpuno sakriti od sviju. Tablica 1.1 Tablica sličnosti i različitosti Bfriend s ostalim uslugama Različitost Bfriend Foursquare Facebook Places Google Latitude WiFi, GPS, 3G/GSM GPS GPS WiFi, GPS, 3G/GSM (korisnički profili) Da Da Da Da Korisnička stanja dostupnosti Da Ne Ne Ne Da Ne Ne Ne Ne Da Da Da Ne Da Da Da Dobivanje lokacije Prijava/odjava u sustav Pozadinski rad (obavještavanje notifikacijama) Eksplicitan prikaz lokacije prijatelja Personalizirana usluga 9 2. Arhitektura sustava i komunikacija u sustavu U ovom poglavlju je detaljno objašnjena arhitektura i komunikacija u sustavu. Pregled je dan u blok dijagramu sustava (Slika 2.1), a osnovni procesi u sustavu modelom programskog rješenja (Slika 2.2). Način opisivanja više je općenite prirode, dok se detaljniji opis i opis interakcije "kroz oči korisnika" mogu naći u kasnijim poglavljima (3. Programska implementacija sustava i 4. Scenariji korištenja). 2.1. Arhitektura sustava Blok dijagram (Slika 2.1) daje osnovni pregled komponenti sustava, koja su kasnije opisana u detalje (3. Programska implementacija sustava). Strelice na slici označavaju mogući smjer komunikacije izmeĎu komponenti sustava. Slika 2.1 Blok dijagram sustava prikazuje arhitekturu sustava 10 Kao što je vidljivo iznad, osnovne komponente sustava su: korisnik, središnji poslužitelj GlassFish1, baza podataka MySQL2, Push-poslužitelj, Facebook-poslužitelj. Komunikacija izmeĎu središnjeg poslužitelja i korisnika je jednosmjerna – korisnik može slati podatke poslužitelju, ali ne i obratno. Za potrebe slanja podataka korisniku (točnije, obavijesti) koristi se vanjski Push-poslužitelj u vlasništvu tvrtke Xtify3. Razlog ovome je učahurivanje sustava, za potrebe lakšeg i bržeg otkrivanja kvara ili nepravilnosti u sustavu. Središnji poslužitelj sadrži aplikaciju koja omogućuje funkcionalan rad aplikaciji Bfriend. Arhitektura sustava je gotovo isključivo poslužiteljski orijentirana, u smislu da su svi algoritmi i logika postavljeni na poslužiteljskoj, a ne klijentskoj strani. Ukratko, na korisniku je jedino da instalira aplikaciju Bfriend, a za sve njene mogućnosti i pravilan rad će se pobrinuti središnji poslužitelj. Baza podataka je spojena na središnji poslužitelj, a koristi se za pohranu korisničkih podataka. Pristup bazi ima isključivo središnji poslužitelj. Na posljetku, još jedna važna komponenta sustava je Facebook-poslužitelj. Obzirom da Facebook ima golem broj korisnika, zbog čega se za prijavu u aplikaciju Bfriend koriste upravo njihovi korisnički računi i podaci, ovaj poslužitelj omogućuje dohvaćanje liste prijatelja korisnika u bazi podataka spojenoj na središnji poslužitelj sustava. Više detalja i opis na razini funkcionalnost sustava navedeni su u poglavlju kasnije (3. Programska implementacija sustava). 1 http://glassfish.java.net/ http://www.mysql.com/ 3 http://www.xtify.com/ 2 11 2.2. Model programskog rješenja Model programskog rješenja prikazuje komunikaciju u sustavu u općenitom slučaju, neovisno o scenariju. Komunikacija je vidljiva na sljedećoj slici, a koraci su detaljnije opisani ispod (Slika 2.2). Slika 2.2 Model programskog rješenja 12 Naravno, u početku korisnik pokreće aplikaciju/proces te je to ujedno i "nulti korak". Nakon toga, koraci opisani slikom iznad su sljedeći: 1. 2. Komunikacija s Facebook API: a. Slanje zahtjeva za Facebook ID-em, b. Zaprimanje Facebook ID-a, Komunikacija s Xtify Push API: a. Slanje zahtjeva za Xtify ID-em, b. Zaprimanje Xtify ID-a, 3. Inicijalno javljanje središnjemu poslužitelju, 4. Komunikacija s Facebook API: 5. a. Slanje zahtjeva za Facebook listom prijatelja odreĎenog korisnika, b. Zaprimanje liste prijatelja, Komunikacija klijenta i središnjeg poslužitelja: a. Periodičko osvježavanje geolokacije, b. Slanje geolokacije, c. Periodičko računanje geolokacijske bliskosti, d. Periodičko osvježavanje liste prijatelja (opisano u koraku 3.), 6. Slanje XML-poruke sa sadržajem notifikacije i primateljem ili primateljima, 7. Slanje notifikacije korisniku ili korisnicima i prikazivanje iste na zaslonu korisničkog ureĎaja. Gorenavedeno je općeniti slučaj, što znači da komunikacija ne mora uvijek teći navedenim tokom. Varijacija je moguća na način da 4. i 5. korak proizvoljno mijenjaju mjesta, ovisno o unutarnjim brojačima vremena u sustavu. Detaljnije o ovome nešto kasnije (3.1 Aplikacijski poslužitelj GlassFish). Sustav se može podijeliti na tri dijela – poslužiteljski, klijentski i geolokacijski. Poslužiteljski dio, uz pomoć kolege Igora Hevčuka, uradio je autor ovog rada Vanja Smailović zbog čega rad ima naglasak upravo na ovom dijelu. Klijentski dio, koji je usko povezan s poslužiteljskim dijelom, uradio je kolega Igor Hevčuk uz pomoć Vanje Smailovića i opisao ga u svom diplomskom radu [11]. Geolokacijski dio, usko povezan s klijentskim dijelom, detaljnije je obradio kolega Branko Herceg u svom diplomskom radu [12]. 13 U opisanom slučaju, komunikacija kreće od koraka u kojem je korisnik instalirao aplikaciju Bfriend, pokrenuo ju i prijavio se na sustav pomoću svojeg Facebook korisničkog imena i zaporke. Korisnički ureĎaj tada komunicira s Facebook-poslužiteljem, kako bi zaprimio jedinstveni Facebook ID, potreban za identifikaciju na tom poslužitelju. U trenutku zahtijevanja ključa, korisniku će se na njegovom Facebook profilu pojaviti zahtjev za pristup podacima izvan sustava (konkretno, aplikacije Bfriend) te će korisnik odabrati da pristaje na uslugu. Detalji ovog koraka mogu se pronaći u diplomskom radu kolege Hevčuka [11]. Nakon komunikacije s Facebook-poslužiteljem slijedi komunikacija s Push-poslužiteljem tvrtke Xtify. Korisnički ureĎaj nabavlja Xtify ID za jedinstvenu identifikaciju na tom poslužitelju, potrebnu za 5. korak, odnosno dostavljanje notifikacije. Nakon što je pohranio vlastiti Facebook ID i Xtify ID, korisnički ureĎaj je spreman za inicijalno javljanje središnjem poslužitelju. Na ovaj način se pohranjuju (i osvježuju) Facebook i Xtify ključevi potrebni za jedinstvenu identifikaciju korisnika. Nakon toga, ureĎaj će preći u svojevrsnu petlju u kojoj periodički dobavlja i šalje trenutnu lokaciju, što je vidljivo u koracima 4a) i 4b). Ovi koraci detaljnije su opisani u diplomskim radovima kolege Hevčuka i Hercega [11] [12]. Za to vrijeme, središnji poslužitelj periodički osvježava liste prijatelja korisnika aplikacije Bfriend u bazi podataka, opisano koracima 3a) i 3b). U meĎuvremenu, ukoliko algoritam geolokacijske bliskosti izračuna udaljenost manju od 100 metara izmeĎu dva prijatelja u bazi podataka (korak 4c), tim korisnicima će se dostaviti notifikacije pod odreĎenim uvjetima (3.1.1 Algoritam lokacijske bliskosti), što je vidljivo u koracima 5) i 6). 14 3. Programska implementacija sustava U ovom poglavlju je opisana programska implementacija sustava na razini korištenih rješenja i opisa komponenti sustava. Opisane su posebnosti i algoritmi aplikacijskog poslužitelja, bez kojih ne bi bile ostvarene neke funkcionalnosti poslužitelja potrebne za napredni rad sustava i postizanje željenih rezultata. TakoĎer, uz svaki odabir naveden je i razlog takvog za odabir, usprkos alternativnim ili drugačijim rješenjima. 3.1. Aplikacijski posluţitelj GlassFish GlassFish je poznati aplikacijski poslužitelj tvrtke Sun MicroSystems (u vlasništvu tvrtke Oracle1), napisan u programskom jeziku Java, besplatan za korištenje i otvorenog tipa koda. Neke od internetskih stranica koje koriste aplikacijski poslužitelj GlassFish su Gameduell, Computer.org i Online-Utility [13]. Odabran je zbog lakoće kojom se instalira i podešava na računalu te je preporučen od strane Zavoda za telekomunikacije na FER-u. Na sljedećoj slici (Slika 3.1) vidljive su performanse poslužitelja nakon otprilike 5 i 100 sati ispravnog rada. Vidljivo je da poslužitelj ima na raspolaganju 512MB radne memorije, od čega koristi samo 40-ak MB (plavo), uz ukupno zauzeće od alociranih 60-ak MB (narančasto). Slika 3.1 Performanse aplikacijskog poslužitelja nakon 5h i 100h ispravnog rada 1 http://www.oracle.com 15 3.1.1. Algoritam lokacijske bliskosti Algoritam lokacijske bliskosti omogućuje periodičko računanje udaljenosti izmeĎu korisnika u bazi podataka i aplikacija Bfriend svoju osnovnu funkcionalnost duguje upravo ovom algoritmu. Algoritam za programski jezik Java je implementirao Ahmed Taha i upravo njegov paket LatLongLib.jar je korišten za potrebe aplikacijskog poslužitelja [14]. Uz brojne mogućnosti kao što su računanje longitudinalnih i latitudinalnih točaka, njihovu konverziju u stupnjeve, minute i sekunde, paket nudi i računanje udaljenosti pomoću Vincentyeve formule [15]. Vincentyeva formula aproksimira Zemlju kao elipsoid, a ne kuglu, kao što je slučaj kod primjerice Haversine formule [16]. Ovime se postiže veća preciznost pri računanju iako obje formule zanemaruju treći parametar korišten pri preciznom pozicioniranju točke, a to je nadmorska visina. Alternativno rješenje bi bilo koristiti Haversine formulu ili slično, ali Vincentyeva formula se pokazala preciznijom, uz zanemarivo dulje vrijeme potrebno za računanje udaljenosti. TakoĎer, moguće alternativno rješenje bi bilo samostalno implementirati Vincentyevu formulu, ali je matematička složenost algoritma velika i uzalud bi oduzela previše vremena, obzirom na već postojeće rješenje. Za početak, algoritam pristupa bazi podataka i odabire samo korisnike koji imaju svoje stanje dostupnosti postavljen na Online ili Invisible (3.1.3 Stanje dostupnosti korisnika), stvarajući listu tzv. "referentnih korisnika". Razlog ovome jest apstrahiranje korisnika koji nisu dostupni jer ne žele biti ometani (stanje Busy) ili jednostavno ne žele koristiti aplikaciju u danom trenutku (stanje Offline). Nadalje, algoritam provjerava da li preostali korisnici imaju postavljene koordinate u bazi podataka i uzima u obzir samo takve korisnike, ignorirajući korisnike koji ih nemaju postavljene jer su vrijednosti null. Nakon toga, za svakog od gorenavedenih referentnih korisnika, počinje odabir prijatelja za koje će se računati udaljenost. Za početak, algoritam zanemaruje prijatelje koji su ignorirani od strane referentnog korisnika jer ih korisnik ne želi u notifikacijama. Nakon toga, algoritam teče istim slijedom kao i za referentne korisnike – provjerava se stanje dostupnosti i postojanost vrijednosti koordinata te ukoliko su navedeni uvjeti zadovoljeni, lista potencijalno lokacijski bliskih prijatelja je gotova. Tek sada nastupa glavni dio algoritma, a to je samo računanje udaljenosti. Udaljenost se računa izmeĎu svakog referentnog korisnika i svakog njegovog potencijalno lokacijski bliskog prijatelja te ukoliko je ona manja od 100 metara, prijatelj se sprema u listu za 16 dostavljanje notifikacije. Iz ovoga je vidljivo da je moguća situacija u kojoj se više prijatelja nalazi u blizini referentnog korisnika, čime će se svi takvi prijatelji spremiti i dostaviti jednom jedinstvenom notifikacijom umjesto više njih, time ne ometajući korisnika. Algoritam lokacijske bliskosti se iznova izvršava periodički – svakih 60 sekundi, što je regulirano unutarnjim brojačem vremena u središnjem poslužitelju. Navedeni algoritam je prikazan dijagramom toka na sljedećoj slici (Slika 3.2). Slika 3.2 Dijagram toka algoritma lokacijske bliskosti Jednostavnosti radi, dijagram toka prikazuje procese za samo jednog korisnika i listu njegovih prijatelja; za potpun dijagram toka valja iterirati odabir (sljedećeg) referentnog 17 korisnika nakon što se došlo do posljednjeg prijatelja na listi, sve dok se ne doĎe i do posljednjeg korisnika na listi. 3.1.2. Algoritam osvjeţavanja liste prijatelja Algoritam osvježavanja liste prijatelja aplikaciji Bfriend omogućuje rad s najnovijom listom prijatelja korisnika u bazi podataka. Algoritam se izvršava periodički, svakih 300 minuta (5 sati). Nakon pristupanja bazi podataka, središnji poslužitelj komunicira s Facebook API-em i za svakog korisnika u bazi traži listu njegovih prijatelja, na temelju Facebook ID-a tog korisnika (3.3. Facebook Graph API). Ako je komunikacija uspješno izvršena, Facebook-poslužitelj će vratiti listu prijatelja koja će biti pohranjena u bazi podataka na način da se obrišu prijašnji unosi i zamijene novima. Obzirom da baza podataka sadrži neke unose koji nisu potekli s Facebook-poslužitelja, već su stvoreni od strane korisnika (ignoriranje prijatelja ili dodavanje prijatelja iz aplikacije Bfriend) postoje dodatna proširenja algoritma koja osiguravaju da se te promjene zapamte i ne budu prebrisane sa svakim novim osvježavanjem. Više o ovome u potpoglavlju o bazi podataka (3.2. Baza podataka MySQL). 3.1.3. Stanje dostupnosti korisnika Aplikacija Bfriend korisniku omogućuje postavljanje stanja dostupnosti. Moguća stanja su: Online, Busy, Invisible, Offline. Stanje Online označava da je korisnik prisutan u mreži i voljan primati notifikacije. Stanje Busy označava da je korisnik prisutan u mreži, dakle vidljiv ostalim korisnicima, ali zauzet i ne želi primati notifikacije. Stanje Invisible je suprotno stanju Busy; korisnik nije vidljiv ostalim korisnicima, ali je voljan primati notifikacije i time "vidjeti" ostale korisnike u mreži. Stanje Offline označava da korisnik nije u mreži, nevidljiv je ostalim korisnicima i ne želi primati notifikacije. Sažetak navedenog vidljiv je na sljedećoj tablici (Tablica 3.1). 18 Tablica 3.1 Moguća stanja dostupnosti korisnika Stanje Korisnik vidljiv u mreži Korisnik prima notifikacije Online Da Da Busy Da Ne Invisible Ne Da Offline Ne Ne 3.1.4. Lista prijatelja prijatelja Jedna od dodatnih mogućnosti aplikacije je lista prijatelja prijatelja. Ukratko, svaki korisnik može vidjeti sve korisnike koji su prijatelji njegovih prijatelja. TakoĎer, tu je i lista prijatelja koji su prijatelji prijatelja, dakle, još jedan stupanj udaljenosti više. Ovakvim pristupom omogućuje se lakše stvaranje novih društvenih odnosa meĎu korisnicima, jer će korisnici s većom lakoćom dodati prijatelja svog prijatelja, nego potpuno novu osobu iz mreže. Valja spomenuti da ove dvije funkcionalnosti nisu lokacijski kontekstno-ovisne, odnosno, korisnici na listama neće nužno biti lokacijski bliski referentnom korisniku. Razlog ovakvoj odluci jest što bi otežalo testiranje aplikacije obzirom na vrlo mali broj testnih korisnika u bazi podataka. TakoĎer, općenito gledano, vjerojatnost da su prijatelji prijatelja na istom mjestu u isto vrijeme je relativno malena, osim ako nije riječ o društvenoj mreži sa stvarno velikim brojem korisnika, primjerice Facebook. Na sljedećoj slici prikazan je izbornik u kojem se mogu odabrati opcije vezane za liste prijatelja, a zadnje dvije su lista prijatelja i lista prijatelja prijatelja (Slika 3.3). Slika 3.3 Izbornik aplikacije s listama prijatelja 19 3.2. Baza podataka MySQL Baza podataka MySQL je široko rasprostranjen i vrlo popularan sustav za upravljanje bazom podataka. MySQL je odabran kao rješenje zahvaljujući jednostavnosti, prijašnjim pozitivnim iskustvima autora sustava Bfriend i preporuci od strane Zavoda za telekomunikacije. Pokazao se kao odlično rješenje, a u nastavku je opisana implementacija i sama baza podataka sustava Bfriend. Baza podataka sastoji se od dvije tablice – is_friend i users (Slika 3.4 i Slika 3.5). Tablica users sadrži sve korisnike sustava sa stupcima: FB_ID (primarni ključ), Xtify_ID, Name, Loc_X, Loc_Y, Availability i Access_token. Stupac FB_ID sadrži Facebook ID-eve koje je Facebook dodijelio svakom korisniku i jedinstveni su na razini cijele društvene mreže. Stupac Xtify_ID je istovrstan, samo korišten u kombinaciji s poslužiteljem Xtify. Stupac Name sadrži ime i prezime korisnika, kako je zapisano u njegovom Facebook računu. Stupci Loc_X i Loc_Y sadrže informacije o koordinatama na kojima se korisnik trenutno nalazi. Stupac Availability označava stanje dostupnosti (0 – Offline, 1 – Invisible, 2 – Busy, 3 – Online). Stupac Access_token sadrži ključ više razine za Facebookautorizaciju korištene za dobavljanje liste prijatelja, koju je klijent poslao središnjem poslužitelju u svom inicijalnom javljanju (3.3. Facebook Graph API). Alternativno rješenje glede potonjeg je da se klijent sam brine o osvježavanju liste prijatelja na središnjem poslužitelju (samostalno ju dobavljajući s Facebook-poslužitelja), ali to rješenje je napušteno obzirom da je previše opterećivalo klijenta, a vrlo malo poslužitelj – što nije išlo u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend. Slika 3.4 Tablica users u bazi podataka 20 Tablica is_friend sadrži sve parove korisnik-prijatelj, a stupci su: FB_ID, FRIEND_FB_ID, IS_FROM_FB i IS_ON_FRIEND_LIST. Stupci FB_ID i FRIEND_FB_ID su parovi Facebook ID-eva korisnika i njihovih prijatelja te ujedno i primarni ključevi tablice. Stupac IS_FROM_FB označava da li je dotični prijatelj unesen u bazu podataka od strane algoritma za osvježavanje liste prijatelja (tj. dobiven s Facebooka; vrijednost 1) ili ga je ručno unio korisnik pomoću aplikacije Bfriend (vrijednost 0). Vrijednost ovog stupca je vrlo bitna pri osvježavanju liste prijatelja obzirom da će se obrisati stara lista prijatelja s Facebooka i prebrisati novijom, kako bi se smanjila složenost upita i povećalo vrijeme izvršavanja. Dakle, pri osvježavanju liste prijatelja korisnika, svi redci koji stupac IS_FROM_FB nemaju postavljen na 0 se brišu i zamjenjuju novijom listom prijatelja. Ovim načinom se čuva informacija o onim prijateljima koje je korisnik unio ručno iz aplikacije. Stupac IS_ON_FRIEND_LIST ima sličnu ulogu, a korišten je za pamćenje ignoriranih prijatelja korisnika. Naime, korisnik u aplikaciji Bfriend ima mogućnost ignorirati prijatelja i time spriječiti dobivanje notifikacija za tog prijatelja. Ukoliko se ovo dogodi, vrijednost stupca IS_ON_FRIEND_LIST će se postaviti na 0 za tog prijatelja, a u suprotnom, ostati će vrijednost 1. Pri osvježavanju liste prijatelja, brišu se samo oni redci koji vrijednost stupca IS_ON_FRIEND_LIST imaju postavljenu na vrijednost 1, dok se redci s vrijednošću 0 preskaču, time čuvajući informaciju o ignoriranim prijateljima. Slika 3.5 Tablica is_friend u bazi podataka 21 Naravno, kao što je vidljivo za tablicu users (Slika 3.4), koordinate Loc_X i Loc_Y se ne bi trebale moći dovesti u korelaciju sa samim imenom i prezimenom korisnika, obzirom da je ovo ilegalno i direktno je narušavanje privatnosti, zbog čega su korisnicima na slici zamućene koordinate. Ovakav pristup korišten je u svrhu testiranja i jednostavnosti, kako bi autorima omogućio brže i jednostavnije otkrivanje grešaka i kvarova u sustavu. U slučaju da bi aplikacija trebala biti puštena na tržište ili korištena komercijalno, bazu podataka bi valjalo kriptirati, a možda čak i potpuno izbaciti stupac Name iz tablice users. Više o pojedinostima za moguće buduće usavršavanje sustava nešto kasnije (5. Buduća funkcionalnost i mogućnosti sustava). Baza podataka, tj. njene dvije tablice, su u trećoj normalnoj formi (3.NF), jer zadovoljavaju pravila prve, druge i treće normalne forme. [17] 3.3. Facebook Graph API Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika aplikacije Bfriend u bazi podataka (3.1.2. Algoritam osvježavanja liste prijatelja). Ovaj API je jezgra same društvene mreže Facebooka, predstavljajući graf društvene mreže u obliku objekata (korisnici, fotografije, dogaĎaji i sl.) i komunikacijskih veza izmeĎu tih objekata (prijateljstvo izmeĎu korisnika, dijeljeni sadržaj, oznake fotografije i sl.), otkuda mu i samo ime http://developers.facebook.com/docs/reference/api/ [18]. Na osnovnoj razini, moguće je dohvatiti sve korisničke informacije koje su dostupne javno, što je individualno za svakog korisnika. Osnovni URL za pristup javnim podacima jest https://graph.facebook.com/. Primjerice, želimo li dohvatiti podatke o platformi koju Facebook koristi za potrebe API-a, možemo koristiti URL s ID-em objekta ili korisničkim imenom na kraju: https://graph.facebook.com/platform https://graph.facebook.com/19292868552 22 Rezultat upita stiže kao odgovor u obliku JSON objekata, a izgleda ovako: { "id": "19292868552", "name": "Facebook Platform", "picture": "http://profile.ak.fbcdn.net/hprofile-aksnc4/211160_19292868552_1855422_s.jpg", "link": "https://www.facebook.com/platform", "category": "Product/service", "likes": 2032652, "website": "http://developers.facebook.com", "username": "platform", "founded": "May 2007", "company_overview": "Facebook Platform enables anyone to build social apps on Facebook and the web.", "mission": "To make the web more open and social." } Ispis 3.1. Rezultat dobiven sa Facebook-poslužitelja Dakle, ovo su javni podaci o platformi koju Facebook koristi. Na isti način mogu se dohvatiti podaci za bilo koju drugu vrstu objekta. Sve dosad navedeno predstavlja osnovnu funkcionalnost Facebook Graph API-a, ali one ne zadovoljavaju potrebe središnjeg poslužitelja. Primjerice, ukoliko korisnik ne dopušta pristup listi prijatelja jer ne želi te informacije učiniti javno dostupnima, gorenavedenim načinom ne bismo mogli pristupiti tim podacima. Ovaj slučaj vidljiv je pristupanjem podacima iz Facebook korisničkog računa Vanje Smailovića pomoću URL-a http://graph.facebook.com/100002249592566: { "id": "100002249592566", "name": "Vanja Smailovi\u0107", "first_name": "Vanja", "last_name": "Smailovi\u0107", "gender": "male", "locale": "en_US" } Ispis 3.2. Rezultat dobiven sa Facebook-poslužitelja Vidljivo je da su dostupni samo neki podaci, meĎu kojima nije lista prijatelja potrebna središnjem poslužitelju aplikacije Bfriend. Stoga, potrebna je viša razina pristupa podacima, koja uključuje potvrdu korisnika. Navedeno je moguće ostvariti pomoću tzv. 23 "pristupnog žetona" (eng. access token), kojeg korisnik dobiva nakon prijave na Facebook pri prvom paljenju aplikacije Bfriend, nakon čega se navedeni žeton šalje na središnji poslužitelj, koji ga kasnije može koristiti za samostalno dobavljanje liste prijatelja tog korisnika. Pri navedenoj autorizaciji, koristi se protokol Oauth 2.01 [19], a korisniku će se na Facebook profilu pojaviti obavijest o aplikaciji koja želi koristiti njegove podatke, nakon čega može pristup odobriti i naknadno podesiti razinu pristupa ukoliko je to potrebno. Na sljedećoj slici su vidljiva dopuštenja pristupanju podataka aplikacije Bfriend (Slika 3.6). Slika 3.6 Dopuštenja za pristup privatnim podacima na Facebooku aplikacije Bfriend Lista prijatelja se dohvaća na isti način kao i ostali podaci, preko URL-a koji je oblika https://graph.facebook.com/facebook_id/friends?access_token i odgovara podacima u obliku JSON objekata. Konkretno, za slučaj korisnika Vanja Smailović, iz baze podataka uzeti su Facebook ID i Access token te je URL upit2 rezultirao odgovorom: 1 http://oauth.net/2/ https://graph.facebook.com/100002249592566/friends?access_token=128922667179680|e67ac9ecab9ad488 68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ 2 24 { "data": [ { "name": "Igor Hev\u010duk", "id": "593634683" }, { "name": "Matija \u0160ulc", "id": "637755955" }, { "name": "Una Smailovi\u0107", "id": "638386889" }, { "name": "Domagoj Rukavina", "id": "676559712" }, { "name": "Allan Hammersh\u00f8j", "id": "1012557509" }, { "name": "Kruno Dropu\u010di\u0107", "id": "1013389622" }, { "name": "Anes Jakupovic", "id": "1657610630" } ] } Ispis 3.3. Rezultat dobiven sa Facebook-poslužitelja Gorenavedeni podaci su lista prijatelja korisnika, dobiveni koristeći Facebook Graph API i potrebnu razinu autorizacije, nužnu za cjelovit rad aplikacije. 25 3.4. Xtify Push API Xtify Push API je korišten za dostavljanje notifikacije korisnicima [20] [21]. Razvila ga je tvrtka Xtify, za pristup svojoj platformi za dostavljanje notifikacija koja trenutno podržava operacijske sustave iOS, Android i Blackberry. Sažeti prikaz platforme vidljiv je na sljedećoj slici (Slika 3.7). Slika 3.7 Platforma Xtify za dostavljanje notifikacija [22] Ograničenja pri korištenju usluge postoje, obzirom da je za testne svrhe odabran besplatni tip računa. Broj notifikacija je ograničen na 300 mjesečno, po korisniku, a veličina svake notifikacije ne smije prelaziti 5kB. Nažalost, Xtify API trenutačno ne podržava potvrdu dostave notifikacije, što predstavlja potencijalni problem ukoliko je nužno imati informaciju o tome da li je korisnik zaprimio obavijest ili ne. Nadalje, Xtify API za rad zahtjeva ispravno strukturiran XML-dokument s poljima kao što su primatelji (tj. njihovi Xtify ID-evi), sadržaj poruke i slično. Primjer XML-dokumenta je vidljiv na sljedećoj slici (Slika 3.8). 26 Slika 3.8 Primjer XML-dokumenta za slanje Xtify-poslužitelju Mogućnosti za sadržaj notifikacije su neizmjerne, a uslugu koriste tvrtke kao što su DailyCandy1, OrganizedWisdom2, Playboy3, Go8004 i dr., najčešće za proširenje svojih usluga. Primjer notifikacije vidljiv je na sljedećoj slici (Slika 3.9). Slika 3.9 Primjeri notifikacija 1 http://www.dailycandy.com/all-cities/ http://organizedwisdom.com/Home 3 http://www.playboy.com/ 4 http://go800corp.com/ 2 27 S druge strane, sadržaj notifikacija u sustavu Bfriend je generiran dinamički (broj primatelja je promjenjiv i proizvoljan), a notifikacije su vizualnim identitetom prepoznatljive i različite od ostalih notifikacija (narančasta ikonica aplikacije, bijela pozadina). Korisnik, nakon što se notifikacija pojavi u pojasu na vrhu zaslona pokretnog ureĎaja, ima mogućnost otvoriti ju i vidjeti sadržaj. Odabirom opcije More Info otvara se stranica koju je moguće programatski podesiti s poslužiteljske strane (u ovom slučaju, www.xtify.com), a opcija Share služi dijeljenju sadržaja notifikacije (primjerice, putem SMS-a, elektroničke pošte i slično). Slika 3.10 Notifikacija aplikacije Bfriend 28 4. Scenariji korištenja aplikacije Bfriend U sljedećim potpoglavljima navedeni su tipični scenariji korištenja aplikacije, uz što je manje mogućeg presjeka meĎu istima, kako bi se što više opisale mogućnosti i funkcionalnost sustava. Ukratko, scenariji opisuju sljedeće situacije: Scenarij 1 – korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje korisnika, Scenarij 2 – stanje dostupnosti Invisible i lokacijska bliskost više korisnika, Scenarij 3 – stanje dostupnosti Busy, Scenarij 4 – ignoriranje korisnika (prijatelja s liste), Scenarij 5 – korisnost aplikacije i napredna funkcionalnost (lista prijatelja prijatelja). Svaki scenarij opisan je dodatno vizualnim putem, koristeći UML-dijagram slučaja uporabe. Prikazanim dijagramima prethodi dijagram na sljedećoj slici, koji je važan dio preduvjeta i opisuje prve korake svakog korisnika u svakom od scenarija (Slika 4.1). Korisnik mora biti prijavljen u sustav, što uključuje internetsku vezu i posjedovanje pametnog telefona s operacijskim sustavom Android. TakoĎer, aplikacija Bfriend mora već biti instalirana, što uključuje omogućavanje pristupa podacima aplikaciji i posjedovanje samog Facebook profila. S druge strane, središnji poslužitelj mora biti odgovarati i uspješno komunicirati s korisničkim ureĎajima, što najprije uključuje ispravno pokretanje. TakoĎer, uključuje osvježavanje listi prijatelja u bazi podataka, odnosno uspješnu komunikaciju s Facebookposlužiteljem. Kako bi mogao dostavljati notifikacije, ureĎaj mora konstantno izvoditi algoritam računanja lokacijske bliskosti meĎu prijateljima. Na posljetku, ureĎaj mora uspješno komunicirati i s Xtify-poslužiteljem, kako bi mogao dostavljati XML-dokumente koji će rezultirati dostavljanjem notifikacija korisnicima. Važno je zapaziti da su sve veze meĎu aktivnostima obavezne, obzirom da su ovo osnovni preduvjeti koji, ukoliko izostanu, ne mogu omogućiti cjelovit i pravilan rad sustava. 29 Slika 4.1 Osnovni UML-dijagram slučaja uporabe 4.1. Scenarij 1 – osnovna funkcionalnost "Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju – Bfriend. Ustao je rano ujutro i, kao marljiv student prve godine studija, krenuo na fakultet. Tamo je slušao uvodno predavanje, ali njegov prijatelj iz srednje škole Vlado nažalost nije s njim u grupi kako je očekivao. Ipak, kada se Izidor u pauzi uputio prema menzi, na mobitel mu je stigla obavijest da je njegov prijatelj Vlado blizu. Naime, Vlado je u međuvremenu stigao na faks, ali je to zaboravio javiti Izidoru jer je kasnio na predavanje. Umorni od predavanja, ovo im je obojici izvuklo osmijeh na lice." 30 Prvi scenarij objašnjava osnovnu funkcionalnost i svrhu aplikacije Bfriend, a to je dojava da je neki od prijatelja blizu. Ovdje je vidljivo da to može pomoći u situacijama kada korisnici nemaju vremena ili mogućnosti komunicirati direktno, primjerice, zbog potrebne tišine u predavaoni ili slično. TakoĎer, prednost ovakvog pristupa je još veća u potpuno neočekivanim, nepredvidljivim, iznenadnim ili hitnim situacijama. Primjerice, Izidor uopće nije očekivao vidjeti svog (starog) prijatelja Vladu, a vrlo su blizu i u mogućnosti vidjeti se ili, Izidor je teško povrijeĎen i u nesvijesti, a Vlado je blizu i može ga identificirati, pomoći mu i dati potrebne informacije o njemu stručnim ljudima u blizini ili hitnoj službi kada stigne tamo. Na sljedećoj slici vidljiv je dijagram za ovaj scenarij (Slika 4.2). Oba korisnika se kreću, a ukoliko se naĎu na istom mjestu, središnji poslužitelj se pobrine da im se dostave notifikacije. U meĎuvremenu, periodički šalju trenutačnu lokaciju, koju središnji poslužitelj zaprima i osvježava u bazi podataka. Slika 4.2 Dijagram prvog scenarija – osnovna funkcionalnost 31 4.2. Scenarij 2 – veći broj korisnika "Jakša hoda ulicom u centru grada, žureći na dogovoreno piće sa svojom djevojkom Bernardom. Naravno, spreman je na obavijesti aplikacije Bfriend obzirom da ju cijelo njegovo društvo koristi na svojim mobitelima. Baš trenutak prije no što će stići na cilj, stiže mu obavijest da su sljedeći prijatelji u njegovoj neposrednoj blizini: Bernarda, Fiona, Renato, Izidor, Ekrem, Natan i Duško. Jakša podiže pogled s mobitela na ulicu i ima što vidjeti – dva najpoznatija kafića u gradu, jedan nasuprot drugog. Obzirom da je lijevi kafić tih, a iz desnog se čuje glasna galama jer je danas nogometni spektakl na kojeg je Jakša skroz zaboravio, Jakša zaključuje da ta skupina njegovih prijatelja zapravo nije zajedno, već lokacijski udaljena, po spolu. Njegovim prijateljima ta obavijest nije stigla jer je Jakša postavio svoje stanje na "Invisible" upravo radi ovakvih situacija. Stoga, obzirom da je Bernarda opet sa svojom napornom prijateljicom Fionom, Jakša joj javlja da nogomet ovaj puta ima prednost!" Ovaj scenarij prvenstveno opisuje situaciju u kojoj se više korisnika aplikacije naĎe na istom mjestu u isto vrijeme. Na slici je prikazan dijagram za ovaj scenarij (Slika 4.3). Slika 4.3 Dijagram drugog scenarija – veći broj korisnika U takvom slučaju, svaki korisnik će primiti samo jednu notifikaciju za sve prijatelje unutar 100 metara od njega. Ovime se značajno štedi na resursima, optimizira se sustav i performanse i najvažnije – ne opterećuje se korisnika bespotrebno. S druge strane, ovo 32 unosi odreĎenu dozu neodreĎenosti u samu notifikaciju obzirom da korisnik nije siguran da li je cijela skupina njegovih prijatelja na istom mjestu. Nešto više o ovome kasnije (5. Buduća funkcionalnost i mogućnosti sustava). Nadalje, ovaj scenarij uvodi i opisuje novu funkcionalnost aplikacije Bfriend, stanje dostupnosti. Kao što je navedeno, Jakša je svoje stanje postavio na Invisible jer time može "vidjeti" druge korisnike u mreži, bez da i oni njega "vide". 4.3. Scenarij 3 – stanje dostupnosti korisnika "Ekrem je upravo na putu iz svoje kuće na posao. Stigavši tamo na sastanak, postavlja svoje stanje na "Busy", kako bi izbjegao sve daljnje obavijesti, obzirom mu je potreban mir i tišina. Ekrem je i dalje vidljiv u mreži – svim njegovim prijateljima u blizini i dalje stižu obavijesti na njihove mobitele. Ekrem je ovime postigao što je htio – biti dostupan drugima u slučaju da je potrebno i ne biti ometan nepotrebnim obavijestima." Ovaj scenarij objašnjava važnost stanja dostupnosti Busy. Što se tiče funkcionalnosti opisanih scenarijem, zapravo je riječ o inverzu situacije iz prošlog scenarija (4.2. Scenarij 2 – veći broj korisnika). Dakle, Ekrem bi htio da ga korisnici "vide" u mreži, ali on ne bi htio biti svjestan njihove prisutnosti jer je zauzet i ne želi da ga se ometa. Dijagram je suvišan obzirom da su detalji već objašnjeni, a slični prošlom scenariju. 4.4. Scenarij 4 – ignoriranje korisnika "Igor se posvađao sa svojom djevojkom, obzirom da je previše izlazila sa svojim prijateljicama i pila. Iz istog razloga, odlučio je ignorirati ju u aplikaciji Bfriend i posvetiti se više sebi i svojim prijateljima. Jednu subotnju večer u gradu, zabavljao se s društvom i naletio na svoju djevojku. Naravno, nijedno od njih dvoje nije primilo notifikaciju obzirom da su se posvađali i ignorirali jedno drugo. Kako je provod bio dobar, a noć odmicala, pomirili su se i vratili jedno drugo na listu prijatelja, kako bi opet mogli primati notifikacije." Navedeni scenarij objašnjava ulogu ignoriranja jednog ili više prijatelja s liste u aplikaciji. TakoĎer, stanje liste je moguće promijeniti na staro stanje vraćanjem ignoriranih prijatelja u mrežu. Ignoriranje prijatelja je jednosmjeran proces, odnosno, da je Igor ignorirao svoju djevojku (dok ona njega ne), on ne bi vidio notifikacije vezane za nju, a ona za njega bi. 33 Pritom, društveni kontekst u mreži Facebook se ne mijenja, odnosno, kontekst se mijenja isključivo na razini mreže Bfriend, ostavljajući Facebook-profile korisnika netaknutima. 4.5. Scenarij 5 – napredna funkcionalnost "Anes i Vedran su krenuli u još jedan subotnji izlazak. Anes izvadi svoj mobitel dok čeka Vedrana koji je otišao na zahod. Dakako, Anes i Vedran su prijatelji na Facebooku i znaju koristiti opciju "Friends of friends" aplikacije Bfriend. Vrlo brzo, Anes shvaća da bi privlačna plavuša koja mu odvraća pažnju mogla biti Jadranka, prikazana kao prijateljica Vedrana na listi u aplikaciji. Nakon kratkog upoznavanja s njom, Anesova sumnja se ispostavi istinom i oni nastave s pričom, dočim se priključi Vedran i s odobravanjem prihvati novonastali odnos, začuđen što nije spazio prijateljicu i ranije." Posljednji scenarij opisuje još jednu funkcionalnost aplikacije Bfriend, a to je lista prijatelja prijatelja. Naime, Jadranka je Vedranova prijateljica, koji je i sam Anesov prijatelj, zbog čega su Jadranka i Anes prijatelji prijatelja jedni drugome. Alternativno, Anes se nije morao niti upoznavati s Jadrankom da bude siguran da je ona – dovoljno bi bilo da je našao njen Facebook-profil i provjerio sam, ukoliko razina privatnosti njenog profila to omogućava. Na sljedećoj slici vidljiv je dijagram za ovaj scenarij (Slika 4.4). Slika 4.4 Dijagram petog scenarija – napredna funkcionalnost 34 4.6. Izjave testnih korisnika Kako bi skupili dio korisničkih zahtjeva u vidu privatnosti intervjuirani su testni korisnici aplikacije Bfriend. Morali su reći svoj općeniti dojam glede korisnosti aplikacije te svoj stav o razini privatnosti koju bi tražili od aplikacije u budućnosti. Slijede neke njihove izjave. Domagoj Rukavina: "Smatram da je aplikacija dobra idejno te korisna izvedbom. Volio bih da je udaljenost od prijatelja podesiva unutar aplikacije. S druge strane, stanje dostupnosti "Invisible" ne smatram poštenim, a razinu privatnosti smatram zadovoljavajućom te ju ne bih mijenjao. Ne bih volio da itko može vidjeti gdje se trenutno nalazim, smatram da je obavijest da sam unutar nekoliko desetaka metara sasvim dovoljna." Krunoslav Dropučić: "Aplikacija Bfriend se pokazala idejno korektnom, ali nisam uočio neke veće prednosti korištenja. Puno putujem, nikad nisam na jednom mjestu i nije mi uvijek bitno pored koga sam prošao u tom trenutku. Što se privatnosti tiče, nemam neki poseban stav – svejedno mi je." Anes Jakupović: "Ideja je genijalna i smatram da aplikacija ima svijetlu budućnost! Koristila bi mi obzirom da studiram u Trstu koji je manja sredina od Zagreba i često se dogodi da nas je više na jednom mjestu bez da smo toga uopće svjesni. Privatnost mi stvarno nije problem, ne razumijem ljude koji su paranoični glede toga... pristao bih da mi prijatelji vide trenutnu lokaciju kada ja to zaželim, čak i na mapi." 35 5. Buduća funkcionalnost i mogućnosti sustava U ovom poglavlju detaljnije su opisane mogućnosti sustava, prvenstveno se fokusirajući na ono što bi sustav mogao ponuditi korisnicima, u budućnosti. Programska implementacija sustava zadovoljila je funkcionalnosti opisane na početku rada, ali u procesu se rodilo mnoštvo novih ideja, vrijednih pažnje i eventualno implementacije. Za početak, kratak pregled funkcionalnosti koje autori sustava Bfriend (Igor Hevčuk i Vanja Smailović) smatraju bitnima za budući razvoj i/ili usavršavanje: 1. implementirati vremenske brojače za nadziranje slanja notifikacija, 2. implementirati lokacijski kontekstno-ovisnu listu prijatelja prijatelja i slično, 3. omogućiti podešavanje udaljenosti za koju se primaju notifikacije, 4. dodati odjavu iz sustava (tj. društvene mreže Facebook) kao opciju, 5. implementirati pravo brisanje (ne samo ignoriranje) prijatelja koji nisu Facebookprijatelji, 6. reverzno geokodiranje lokacije prijatelja u blizini u svrhu prikaza naziva lokacije kako bi bilo vidljivo gdje je prijatelj točno, 7. implementirati listu prijatelja s prikazom na mapi, ukoliko ne narušava korisničku privatnost odnosno ako korisnici to dopuste, 8. sakupiti dio korisničkih zahtjeva preko upitnika ciljanim skupinama korisnika. S povećanjem broja korisnika u mreži Bfriend, logično je očekivati da će rasti broj poslanih notifikacija. Trenutačno, notifikacija se korisniku šalje jednokratno za sve prijatelje u njegovoj blizini (odnosno ad-hoc mreži nekog područja) kao što je opisano prije (3.1.1. Algoritam lokacijske bliskosti). Ipak, pri svakoj promjeni broja korisnika generira se nova notifikacija koja stiže svim (dostupnim) korisnicima ad-hoc mreže tog područja. Problem s velikim brojem korisnika na istom mjestu u isto vrijeme postaje očit – preveliki broj notifikacija će biti poslan, ometajući korisnike. Primjerice, neka je korisnik na glavnom trgu u svom gradu. Unutar sto metara oko njega je deset njegovih prijatelja, ali oni nisu skupa već se kreću i time ponekad "izaĎu", a ponekad "uĎu" u ad-hoc mrežu, uzrokujući promjene koje svaki puta okidaju novu notifikaciju. Upravo o ovome priča prvi prijedlog budućih funkcionalnosti, naveden pri početku poglavlja. Problem se da razriješiti uvoĎenjem vremenskih brojača, koji bi omogućavali jednokratno slanje notifikacija u 36 odreĎenom vremenskom periodu (primjerice, pet minuta). Time bi svaka promjena koja se dogodila unutar pet minuta bila odbačena, ne smetajući korisnike. Drugi prijedlog je proširenje funkcionalnosti listi prijatelja (3.1.4. Lista prijatelja prijatelja), na način da se uvede lokacija kao kontekst, uz društveni kontekst. Dakako, ovaj prijedlog kao i prvi prijedlog valja uzeti u obzir samo ukoliko broj korisnika postane dovoljno velik. Treći prijedlog odnosi se na iznos udaljenosti pri kojoj se generiraju notifikacije, koji je trenutačno programski postavljen na točno 100 metara (3.1.1. Algoritam lokacijske bliskosti). U budućnosti, ovaj parametar bi mogao biti dinamički podesiv ovisno o nekim unaprijed zadanim uvjetima (poslužiteljska strana) ili bi mogao biti korisnički podesiv unutar samog grafičkog sučelja aplikacije Bfriend (klijentska strana). Četvrti prijedlog je jednostavan – omogućiti odjavu iz sustava kako bi se neki drugi korisnik mogao prijaviti bez opetovane instalacije aplikacije, s istog pokretnog ureĎaja. Peti prijedlog je vezan za mogućnost brisanja korisničkih prijatelja. Trenutačno, korisnik iz aplikacije može obrisati samo prijatelje koje je dodao ručno kroz aplikaciju (tj. nisu dobiveni s njegovog Facebook-profila). Brisanje prijatelja koji su u sustav pristigli s korisničkog Facebook-profila ne mogu biti obrisani iz razloga što bi to zahtijevalo dodatnu komunikaciju s Facebook-poslužiteljem (tj. brisanje prijatelja i na samom profilu). Za detalje vidjeti reference u poglavlju o Facebook-poslužitelju (3.3. Facebook Graph API). Šesti prijedlog je nešto što su autori htjeli implementirati, ali nisu imali hrabrosti obzirom da skupljeni korisnički zahtjevi nisu zadovoljavali u pogledu privatnosti samih korisnika. Reverzno geokodiranje [23] bi se moglo izvesti koristeći Google Maps uslugu [24], za dobivanje naziva lokacije prijatelja. Primjer u kojem bi ovo bilo iznimno korisno jest drugi scenarij (4.2. Scenarij 2 – veći broj korisnika). Sedmi prijedlog je dodatno proširenje šestog, prikazujući mapu s trenutnim lokacijama prijatelja korisniku u njegovoj aplikaciji Bfriend. Osmi prijedlog može se smatrati preduvjetom šestom i sedmom; korisničke zahtjeve u vidu privatnosti valja prikupiti kvalitetno smišljenim upitnikom ili slično. 37 Zaključak Ad-hoc društvene mreže, popraćene kontekstnom ovisnošću kao što su lokacije pokretnih korisnika u periodu vremena, istinsko su proširenje i evolucijski korak naprijed u svijetu društvenih mreža. Napredak tehnologije omogućio je onome što je dosad bilo nužno nepokretno – da postane pokretno. Društvene mreže, da bi pratile ovaj rast, trebaju postati svjesne konteksta u kojem se nalaze korisnici, jer pokretnim korisnicima više nije dovoljno da su "samo povezani", treba im više od toga – zanima ih gdje i kad su povezani, bilo to u školi ili fakultetu, u kazalištu ili kinu, pri subotnjem izlasku s društvom ili skupoj večeri s bračnim partnerom. Velik broj veza meĎu takvim pokretnim korisnicima je posebne, trenutačne prirode, što je naoko mala, ali važna činjenica korištena već pri samoj razradi ideje ovog diplomskog rada. Društvena mreža Bfriend koristi ovu činjenicu u samoj svojoj srži, pružajući korisnicima trenutačnu povezanost u ad-hoc mrežama koje sami stvaraju, nalazeći se na lokacijski bliskim mjestima u isto vrijeme. S druge strane, vječito osjetljivo pitanje je pitanje privatnosti, tj. kako zaštititi korisnike u mreži. Razina željene privatnosti je individualna stvar i kao takvoj joj se treba i pristupati. Ipak, granica koju svaka društvena mreža mora poštivati postoji i treba ju zadovoljiti. Iz ovih razloga, pažljivim odabirom funkcionalnosti aplikacije Bfriend neke od njih pale su u drugi plan, primjerice, prikaz prijatelja u blizini na mapi korisničkog pokretnog ureĎaja. Štoviše, već sama ideja reverznog geokodiranja koordinata je napuštena kao mogućnost, jer bi korisnicima koji su blizu omogućila uvid u naziv lokacije prijatelja. Za razliku od navedenog, stanjem dostupnosti Invisible ostvarena je ideja koja je dobila prednost nad ostalim idejama koje su zanemarene, obzirom na prirodu te funkcionalnosti u kombinaciji s prikazom lokacija prijatelja. Dakle, prikaz lokacije je relativan, a ne apsolutan; korisnik može znati koliko je prijatelj blizu, ali ne i gdje se točno nalazi. Uz sve rečeno, teško je reći što će budućnost donijeti – primjerice, korisnicima se može omogućiti usluga dopisivanja, potpuna personalizacija putem profila ili dodavanje skroz novog konteksta kao što je vrijeme (dan ili noć, godišnje doba i slično). Mogućnosti su neizmjerne! 38 Literatura [1] M. Danah Boyd and B. Nicole Ellison, "Social Network Sites: Definition, History, and Scholarship". [2] (2011, svibanj) socialbakers.com. [Online]. http://www.socialbakers.com/facebookstatistics/ [3] Vedran Podobnik and Ignac Lovrek, "An Agent-based Platform for Ad-hoc Social Networking". [4] B. N. Schillit and R. Want, Context-aware computer applications, in Proceedings of 1st International Workshop on Mobile Computing Systems and Applications., 1994. [5] P. J. Brown, J. D. Bovey, and X. Chen, Context-aware applications: from the laboratory to the marketplace.: IEEE Personal Communications. [6] J. Pascoe, D. Morse, and N. Ryan, "Enhanced reality fieldwork: the context-aware archaelogical assistant," 1997. [7] K. Dey Anind, "Understanding and using context". [8] K. Dey Anind, "Providing architectural support for building context-aware applications," PhD Thesis, 2000. [9] K. Dey Anind, "Towards a better understanding of context and context-awareness". [10] Google Inc. (2009, 19. svibnja) The Official Google Blog. [Online]. http://googlecode.blogspot.com/2010/05/with-new-google-latitude-api-build.html [11] Igor Hevčuk, "Ad-hoc društvena umreženost lokacijski bliskih korisnika," Fakultet elektrotehnike i računarstva (Faculty of Electrical Engineering and Computing), Zagreb, Diplomski rad (MSc Thesis) 2011. [12] Branko Herceg, "Informacija o lokaciji i prisutnosti u IP-mreži," Fakultet elektrotehnike i računarstva (Faculty of Electrical Engineering and Computing), Zagreb, Diplomski rad (MSc Thesis) 2011. [13] W3Techs.com. (2011, lipanj) Usage statistics and market share of GlassFish for websites. [Online]. http://w3techs.com/technologies/details/ws-glassfish/all/all [14] Ahmed Taha. (2011, veljača) Ahmed Taha http://sites.google.com/site/ahmdalitaha2/latlonglib Home Page. [Online]. 39 [15] T. Vincenty, "SURVEY REVIEW," vol. XXIII, no. 176, travanj 1975. [16] Movable Type Scripts. (2011, ožujak) GIS FAQ Q5.1: Great circle distance between 2 points. [Online]. http://www.movable-type.co.uk/scripts/gis-faq-5.1.html [17] "Oblikovanje sheme relacijske baze podataka (2. dio)," in 7. predavanje, predmet Baze Podataka, Fakultet elektrotehnike i računarstva (Faculty of Electrical Engineering and Computing), Zagreb, travanj 2008. [18] Facebook DEVELOPERS. (2011, ožujak) Facebook Graph API. [Online]. http://developers.facebook.com/docs/reference/api/ [19] Network Working Group, "The OAuth 2.0 Authorization Protocol". [20] programmableweb. (2011, veljača) http://www.programmableweb.com/api/xtify-2 Xtify API. [21] Xtify Inc. (2011, veljača) Push Notification http://console.xtify.com/push-notifications-web-service API. [Online]. [Online]. [22] Xtify Inc. (2011, veljača) Smart Notifications for Your Smartphone Application Platform Overview. [Online]. http://www.xtify.com/platform-overview [23] GeoNames.org. (2011, ožujak) Reverse Geocoding http://www.geonames.org/export/reverse-geocoding.html Webservices. [Online]. [24] Google Inc. (2011, travanj) Google Maps JavaScript API V3 (Google Code). [Online]. http://code.google.com/apis/maps/documentation/javascript/ [25] Eclipse. (2011, lipanj) http://www.eclipse.org/downloads/ Eclipse Downloads. [Online]. [26] Oracle. (2011, lipanj) Java Downloads. http://www.oracle.com/technetwork/java/javaee/downloads/index.html [Online]. [27] Oracle. (2011, lipanj) GlassFish http://glassfish.java.net/public/getstarted.html [Online]. Get Started. [28] MySQL. (2011, lipanj) MySQL Downloads (Generally Available). [Online]. http://www.mysql.com/downloads/ 40 Saţetak Komunikacija u ad-hoc društvenim mrežama Ad-hoc društvene mreže omogućuju drugačiju, dinamičniju, više svrhovno-orijentiranu komunikaciju i interakciju svojim korisnicima, novi pogled na ostvarene društvene veze i još važnije – stvaranje novih društvenih veza. Ovakav pristup potreban je ukoliko je željena društvena umreženost privremene ili trenutačne prirode zbog uvjeta u kojima se korisnici nalaze (primjerice, u pokretu). Sustav, odnosno aplikacija podržana društvenom mrežom razvijena ovim radom naslovljena je Bfriend. Bfriend je lokacijski-ovisna ad-hoc društvena mreža koja svojim korisnicima omogućuje da, ukoliko imaju profil na društvenoj mreži Facebook, budu obaviješteni kada su njihovi Facebook prijatelji u njihovoj neposrednoj blizini. Aplikacija je dostupna korisnicima operacijskog sustava Android, obzirom da koristi notifikacije na zaslonu za dostavu notifikacija. Ključne riječi: ad-hoc društvena mreža, društvena mreža, kontekstna ovisnost (lokacijska ovisnost), Bfriend, Facebook. 41 Summary Communication in ad-hoc social networks Ad-hoc social networks provide a different, more dynamic and goal-oriented kind of communicating and interacting among users, a new way of handling their current social relationships and most importantly – they provide ways of developing new social relationships. This approach is neccessary in order to establish temporary social relationships (i.e. while on the move) caused by the type of environment the users are set in. The system and its application are backed up by the social network behind it and are named Bfriend. Bfriend is a location-aware ad-hoc social network which gives its users the ability to, in case they have a Facebook profile, receive notifications when one of their Facebook friends pass nearby. The application is available on Android OS, using screen notifications for content delivery. Keywords: ad-hoc social network, social network, context-aware (location-aware), Bfriend, Facebook. 42 Privitak A. Implementacija entiteta Neke od entiteta prikazanih na slici (Slika 2.2) nije bilo potrebno implementirati. Koristila se je postojeća društvena mreža Facebook te push-poslužitelj Xtify. Korištenje ovih entiteta uvjetovano je jedino prijavom korisnika koja je obavljena na klijentskoj aplikaciji. U daljnjem se tekstu opisuje instalacija implementiranih entiteta, klijentske aplikacije te središnjeg poslužitelja. B. Instalacija klijentske aplikacije Ad-hoc društvenoj mreži Bfriend pristupa se preko klijentske aplikacije za pametne telefone s operacijskim sustavom Android. Instalacija aplikacije ničim se ne razlikuje od instalacije svih ostalih aplikacija za pokretne telefone s operacijskim sustavom Android. Kako se aplikacija ne preuzima s Android Marketa, potrebno je u postavkama pokretnog telefona omogućiti instalaciju onih aplikacija koje nisu preuzete s Android Marketa. Postupak dopuštanja takvih aplikacija je sljedeći: Odabrati Settings > Applications; Postaviti kvačicu u polje Unknown sources; Potvrditi poznavanje mogućih rizika. Korištenje aplikacije, a time i ad-hoc društvene mreže, uvjetovano je kreiranim korisničkim profilom na društvenoj mreži Facebook. Podaci koji se koriste za prijavu na društvenu mrežu Facebook, koriste se za prijavu u ad-hoc društvenoj mreži Bfriend. U postavkama pametnog telefona poželjno je uključiti GPS (Global Positioning System) budući da je točnost lokacije bitna za kvalitetu usluge. Ukoliko korisnik ne želi koristiti GPS, lokacijska će se informacija dobivati preko javne pokretne mreže te će biti manje točnosti nego u slučaju korištenja GPS-a. Budući da se gotovo cijeli dio funkcionalnosti aplikacija temelji na komunikaciji sa poslužiteljima, neophodna je stalna veza s Internetom. 43 C. Instalacija središnjeg posluţitelja Za potrebe ovog rada, poslužiteljska strana koristi: radnu okolinu Eclipse Helios (Service Release 2) [25], Java JDK 1.6 (uključen u paketu Java EE 6 SDK) [26], središnji poslužitelj GlassFish (verzija 3.1 build 43) [27], bazu podataka MySQL (verzija 5.1.11 Community Server) i njoj pripadajući konektor za programski jezik Java (mysql-connector-java-5.1.15-bin.jar) [28]. Središnji poslužitelj GlassFish instalira se kao što je opisano u [27]. Ostala objašnjenja instalacija komponenti takoĎer se nalaze u referencama pripadajućih. Nakon instalacije poslužitelja GlassFish, radnu okolinu Eclipse u opciji Preferences > Build Path > Java > Classpath Variables treba podesiti kao na slici (Slika uputa 1). Slika uputa 1. Opcija Classpath Variables i njezino podešavanje Nadalje, opcija Preferences > Server > Runtime Environments treba biti podešena kao na sljedećoj slici, inače će poslužitelj neće raditi i bacati će grešku (Slika uputa 2). 44 Slika uputa 2. Opcija Server Runtime Environment i njezino podešavanje Slika uputa 3. Pokretanje poslužitelja GlassFish Pri inicijalnom pokretanju (odmah nakon pokretanja radne okoline Eclipse), poslužitelj će pitati za korisničko ime i lozinku (admin i crocodileagent trenutačno). Nakon, primjerice, 45 mijenjanja koda, ukoliko zatreba ponovo pokrenuti poslužitelj, to je najbolje obaviti opcijom Stop, pa Clean, kako bi bilo sigurno da su svi resursi osvježeni i poslužitelj pokrenut "od nule" (Slika uputa 3). TakoĎer, preporuča se isključiti opcije Reload i Auto Deploy u konzoli poslužitelja, obzirom da bespotrebno opterećuju poslužitelj i računalo, a ponekad znaju uzrokovati i greške tokom rada (Slika uputa 4). Slika uputa 4. Konzola poslužitelja i opcije koje valja isključiti 46
© Copyright 2024 Paperzz