KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMA

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