KOMUNIKACIJA U AD-HOC DRUŠTVENIM...
Transcript of KOMUNIKACIJA U AD-HOC DRUŠTVENIM...
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 Ad-hoc društvene mreže i kontekstna ovisnost 2
11 Povijest društvenih mreža 2
12 Ad-hoc društvene mreže 5
13 Kontekst i kontekstno ovisne usluge 5
14 Slične usluge i aplikacije 6
141 Foursquare 6
142 Facebook Places 7
143 Google Latitude 8
144 Pregled sličnosti i različitosti s aplikacijom Bfriend 8
2 Arhitektura sustava i komunikacija u sustavu 10
21 Arhitektura sustava 10
22 Model programskog rješenja 12
3 Programska implementacija sustava 15
31 Aplikacijski poslužitelj GlassFish 15
311 Algoritam lokacijske bliskosti 16
312 Algoritam osvježavanja liste prijatelja 18
313 Stanje dostupnosti korisnika 18
314 Lista prijatelja prijatelja 19
32 Baza podataka MySQL 20
33 Facebook Graph API 22
34 Xtify Push API 26
4 Scenariji korištenja aplikacije Bfriend 29
41 Scenarij 1 ndash osnovna funkcionalnost 30
42 Scenarij 2 ndash veći broj korisnika 32
43 Scenarij 3 ndash stanje dostupnosti korisnika 33
44 Scenarij 4 ndash ignoriranje korisnika 33
45 Scenarij 5 ndash napredna funkcionalnost 34
46 Izjave testnih korisnika 35
5 Buduća funkcionalnost i mogućnosti sustava 36
Zaključak 38
Literatura 39
Sažetak 41
Summary 42
Privitak 43
1
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 ndash 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 ndash 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
2
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
11 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 Classmatescom koja se pojavila 1995
godine a pružala je uslugu obnavljanja starih ili zaboravljenih društvenih veza ndash 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 SixDegreescom 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 MySpace
2 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 httpwwwlinkedincom
2 httpwwwmyspacecom
3
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 11) [1]
Slika 11 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 12 i
Slika 13)
1 httpwwwfacebookcom
2 httptwittercom
4
Slika 12 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 13 Broj korisnika Facebooka zadnjih 6mj u Hrvatskoj i svijetu [2]
5
12 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
13 Kontekst i kontekstno ovisne usluge
Za početak neke od definicija konteksta su
Schilit ndash Lokacija identiteti obližnjih predmeta i ljudi te promjene nad istima [4]
Brown Bovey and Chen ndash Lokacija identiteti ljudi blizu korisnika vrijeme dana
godišnje doba temperatura itd [5]
Ryan Pascoe i Morse ndash 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
6
Dey ndash 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 ndash Sustav je kontekstno ovisan ukoliko koristi kontekst za opskrbu korisnika
relevantnim informacijama iili uslugama gdje relevantnost ovisi o namjerenom
korisničkom zadatku [7] [8] [9]
14 Slične usluge i aplikacije
U sljedećim potpoglavljima opisane su tri poprilično slične usluge odnosno aplikacije ndash
Foursquare1 Facebook Places
2 i Google Latitude
3
141 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 ndash 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 ndash 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 ndash 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 httpsfoursquarecomoverview
2 httpwwwfacebookcomplaces
3 httpswwwgooglecomlatitude
7
Bfriend omogućuje korisnicima postavljanje stanja vidljivosti u mreži na principu chat
aplikacija današnjice dok Foursquare ima opciju prijaveodjave 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 kontekstno-
specifič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
142 Facebook Places
U kolovozu 2010 godine Facebook je objavio novu uslugu ndash 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 ndash 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 prijaveodjave 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
8
Bfriend radi i u pozadini čime omogućuje zaprimanje obavijesti u kontekstno-
specifič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
143 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 prijaveodjave 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 kontekstno-
specifič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
144 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
9
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 11 Tablica sličnosti i različitosti Bfriend s ostalim uslugama
Različitost Bfriend Foursquare Facebook
Places
Latitude
Dobivanje lokacije WiFi
GPS
3GGSM
GPS GPS
WiFi
GPS
3GGSM
Prijavaodjava u sustav
(korisnički profili) Da Da Da Da
Korisnička stanja dostupnosti Da Ne Ne Ne
Pozadinski rad (obavještavanje
notifikacijama) Da Ne Ne Ne
Eksplicitan prikaz lokacije
prijatelja Ne Da Da Da
Personalizirana usluga Ne Da Da Da
10
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 21) a osnovni procesi u sustavu modelom
programskog rješenja (Slika 22) 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)
21 Arhitektura sustava
Blok dijagram (Slika 21) 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 21 Blok dijagram sustava prikazuje arhitekturu sustava
11
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 ndash 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 httpglassfishjavanet
2 httpwwwmysqlcom
3 httpwwwxtifycom
12
22 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 22)
Slika 22 Model programskog rješenja
13
Naravno u početku korisnik pokreće aplikacijuproces te je to ujedno i nulti korak
Nakon toga koraci opisani slikom iznad su sljedeći
1 Komunikacija s Facebook API
a Slanje zahtjeva za Facebook ID-em
b Zaprimanje Facebook ID-a
2 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
a Slanje zahtjeva za Facebook listom prijatelja odreĎenog korisnika
b Zaprimanje liste prijatelja
5 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 (31
Aplikacijski poslužitelj GlassFish)
Sustav se može podijeliti na tri dijela ndash 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]
14
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 (311 Algoritam lokacijske bliskosti) što je vidljivo u koracima 5) i 6)
15
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
31 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 Computerorg 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 31) 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 31 Performanse aplikacijskog poslužitelja nakon 5h i 100h ispravnog rada
1 httpwwworaclecom
16
311 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 LatLongLibjar 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 (313 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 ndash 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
17
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 ndash 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 32)
Slika 32 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
18
korisnika nakon što se došlo do posljednjeg prijatelja na listi sve dok se ne doĎe i do
posljednjeg korisnika na listi
312 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 (33 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
(32 Baza podataka MySQL)
313 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 31)
19
Tablica 31 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
314 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 33)
Slika 33 Izbornik aplikacije s listama prijatelja
20
32 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 ndash is_friend
i users (Slika 34 i Slika 35)
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 ndash Offline 1 ndash Invisible
2 ndash Busy 3 ndash Online) Stupac Access_token sadrži ključ više razine za Facebook-
autorizaciju korištene za dobavljanje liste prijatelja koju je klijent poslao središnjem
poslužitelju u svom inicijalnom javljanju (33 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 ndash što nije išlo
u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend
Slika 34 Tablica users u bazi podataka
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
Sadrţaj
Uvod 1
1 Ad-hoc društvene mreže i kontekstna ovisnost 2
11 Povijest društvenih mreža 2
12 Ad-hoc društvene mreže 5
13 Kontekst i kontekstno ovisne usluge 5
14 Slične usluge i aplikacije 6
141 Foursquare 6
142 Facebook Places 7
143 Google Latitude 8
144 Pregled sličnosti i različitosti s aplikacijom Bfriend 8
2 Arhitektura sustava i komunikacija u sustavu 10
21 Arhitektura sustava 10
22 Model programskog rješenja 12
3 Programska implementacija sustava 15
31 Aplikacijski poslužitelj GlassFish 15
311 Algoritam lokacijske bliskosti 16
312 Algoritam osvježavanja liste prijatelja 18
313 Stanje dostupnosti korisnika 18
314 Lista prijatelja prijatelja 19
32 Baza podataka MySQL 20
33 Facebook Graph API 22
34 Xtify Push API 26
4 Scenariji korištenja aplikacije Bfriend 29
41 Scenarij 1 ndash osnovna funkcionalnost 30
42 Scenarij 2 ndash veći broj korisnika 32
43 Scenarij 3 ndash stanje dostupnosti korisnika 33
44 Scenarij 4 ndash ignoriranje korisnika 33
45 Scenarij 5 ndash napredna funkcionalnost 34
46 Izjave testnih korisnika 35
5 Buduća funkcionalnost i mogućnosti sustava 36
Zaključak 38
Literatura 39
Sažetak 41
Summary 42
Privitak 43
1
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 ndash 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 ndash 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
2
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
11 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 Classmatescom koja se pojavila 1995
godine a pružala je uslugu obnavljanja starih ili zaboravljenih društvenih veza ndash 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 SixDegreescom 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 MySpace
2 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 httpwwwlinkedincom
2 httpwwwmyspacecom
3
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 11) [1]
Slika 11 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 12 i
Slika 13)
1 httpwwwfacebookcom
2 httptwittercom
4
Slika 12 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 13 Broj korisnika Facebooka zadnjih 6mj u Hrvatskoj i svijetu [2]
5
12 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
13 Kontekst i kontekstno ovisne usluge
Za početak neke od definicija konteksta su
Schilit ndash Lokacija identiteti obližnjih predmeta i ljudi te promjene nad istima [4]
Brown Bovey and Chen ndash Lokacija identiteti ljudi blizu korisnika vrijeme dana
godišnje doba temperatura itd [5]
Ryan Pascoe i Morse ndash 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
6
Dey ndash 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 ndash Sustav je kontekstno ovisan ukoliko koristi kontekst za opskrbu korisnika
relevantnim informacijama iili uslugama gdje relevantnost ovisi o namjerenom
korisničkom zadatku [7] [8] [9]
14 Slične usluge i aplikacije
U sljedećim potpoglavljima opisane su tri poprilično slične usluge odnosno aplikacije ndash
Foursquare1 Facebook Places
2 i Google Latitude
3
141 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 ndash 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 ndash 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 ndash 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 httpsfoursquarecomoverview
2 httpwwwfacebookcomplaces
3 httpswwwgooglecomlatitude
7
Bfriend omogućuje korisnicima postavljanje stanja vidljivosti u mreži na principu chat
aplikacija današnjice dok Foursquare ima opciju prijaveodjave 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 kontekstno-
specifič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
142 Facebook Places
U kolovozu 2010 godine Facebook je objavio novu uslugu ndash 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 ndash 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 prijaveodjave 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
8
Bfriend radi i u pozadini čime omogućuje zaprimanje obavijesti u kontekstno-
specifič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
143 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 prijaveodjave 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 kontekstno-
specifič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
144 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
9
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 11 Tablica sličnosti i različitosti Bfriend s ostalim uslugama
Različitost Bfriend Foursquare Facebook
Places
Latitude
Dobivanje lokacije WiFi
GPS
3GGSM
GPS GPS
WiFi
GPS
3GGSM
Prijavaodjava u sustav
(korisnički profili) Da Da Da Da
Korisnička stanja dostupnosti Da Ne Ne Ne
Pozadinski rad (obavještavanje
notifikacijama) Da Ne Ne Ne
Eksplicitan prikaz lokacije
prijatelja Ne Da Da Da
Personalizirana usluga Ne Da Da Da
10
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 21) a osnovni procesi u sustavu modelom
programskog rješenja (Slika 22) 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)
21 Arhitektura sustava
Blok dijagram (Slika 21) 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 21 Blok dijagram sustava prikazuje arhitekturu sustava
11
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 ndash 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 httpglassfishjavanet
2 httpwwwmysqlcom
3 httpwwwxtifycom
12
22 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 22)
Slika 22 Model programskog rješenja
13
Naravno u početku korisnik pokreće aplikacijuproces te je to ujedno i nulti korak
Nakon toga koraci opisani slikom iznad su sljedeći
1 Komunikacija s Facebook API
a Slanje zahtjeva za Facebook ID-em
b Zaprimanje Facebook ID-a
2 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
a Slanje zahtjeva za Facebook listom prijatelja odreĎenog korisnika
b Zaprimanje liste prijatelja
5 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 (31
Aplikacijski poslužitelj GlassFish)
Sustav se može podijeliti na tri dijela ndash 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]
14
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 (311 Algoritam lokacijske bliskosti) što je vidljivo u koracima 5) i 6)
15
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
31 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 Computerorg 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 31) 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 31 Performanse aplikacijskog poslužitelja nakon 5h i 100h ispravnog rada
1 httpwwworaclecom
16
311 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 LatLongLibjar 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 (313 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 ndash 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
17
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 ndash 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 32)
Slika 32 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
18
korisnika nakon što se došlo do posljednjeg prijatelja na listi sve dok se ne doĎe i do
posljednjeg korisnika na listi
312 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 (33 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
(32 Baza podataka MySQL)
313 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 31)
19
Tablica 31 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
314 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 33)
Slika 33 Izbornik aplikacije s listama prijatelja
20
32 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 ndash is_friend
i users (Slika 34 i Slika 35)
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 ndash Offline 1 ndash Invisible
2 ndash Busy 3 ndash Online) Stupac Access_token sadrži ključ više razine za Facebook-
autorizaciju korištene za dobavljanje liste prijatelja koju je klijent poslao središnjem
poslužitelju u svom inicijalnom javljanju (33 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 ndash što nije išlo
u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend
Slika 34 Tablica users u bazi podataka
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
Zaključak 38
Literatura 39
Sažetak 41
Summary 42
Privitak 43
1
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 ndash 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 ndash 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
2
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
11 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 Classmatescom koja se pojavila 1995
godine a pružala je uslugu obnavljanja starih ili zaboravljenih društvenih veza ndash 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 SixDegreescom 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 MySpace
2 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 httpwwwlinkedincom
2 httpwwwmyspacecom
3
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 11) [1]
Slika 11 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 12 i
Slika 13)
1 httpwwwfacebookcom
2 httptwittercom
4
Slika 12 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 13 Broj korisnika Facebooka zadnjih 6mj u Hrvatskoj i svijetu [2]
5
12 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
13 Kontekst i kontekstno ovisne usluge
Za početak neke od definicija konteksta su
Schilit ndash Lokacija identiteti obližnjih predmeta i ljudi te promjene nad istima [4]
Brown Bovey and Chen ndash Lokacija identiteti ljudi blizu korisnika vrijeme dana
godišnje doba temperatura itd [5]
Ryan Pascoe i Morse ndash 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
6
Dey ndash 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 ndash Sustav je kontekstno ovisan ukoliko koristi kontekst za opskrbu korisnika
relevantnim informacijama iili uslugama gdje relevantnost ovisi o namjerenom
korisničkom zadatku [7] [8] [9]
14 Slične usluge i aplikacije
U sljedećim potpoglavljima opisane su tri poprilično slične usluge odnosno aplikacije ndash
Foursquare1 Facebook Places
2 i Google Latitude
3
141 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 ndash 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 ndash 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 ndash 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 httpsfoursquarecomoverview
2 httpwwwfacebookcomplaces
3 httpswwwgooglecomlatitude
7
Bfriend omogućuje korisnicima postavljanje stanja vidljivosti u mreži na principu chat
aplikacija današnjice dok Foursquare ima opciju prijaveodjave 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 kontekstno-
specifič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
142 Facebook Places
U kolovozu 2010 godine Facebook je objavio novu uslugu ndash 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 ndash 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 prijaveodjave 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
8
Bfriend radi i u pozadini čime omogućuje zaprimanje obavijesti u kontekstno-
specifič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
143 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 prijaveodjave 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 kontekstno-
specifič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
144 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
9
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 11 Tablica sličnosti i različitosti Bfriend s ostalim uslugama
Različitost Bfriend Foursquare Facebook
Places
Latitude
Dobivanje lokacije WiFi
GPS
3GGSM
GPS GPS
WiFi
GPS
3GGSM
Prijavaodjava u sustav
(korisnički profili) Da Da Da Da
Korisnička stanja dostupnosti Da Ne Ne Ne
Pozadinski rad (obavještavanje
notifikacijama) Da Ne Ne Ne
Eksplicitan prikaz lokacije
prijatelja Ne Da Da Da
Personalizirana usluga Ne Da Da Da
10
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 21) a osnovni procesi u sustavu modelom
programskog rješenja (Slika 22) 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)
21 Arhitektura sustava
Blok dijagram (Slika 21) 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 21 Blok dijagram sustava prikazuje arhitekturu sustava
11
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 ndash 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 httpglassfishjavanet
2 httpwwwmysqlcom
3 httpwwwxtifycom
12
22 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 22)
Slika 22 Model programskog rješenja
13
Naravno u početku korisnik pokreće aplikacijuproces te je to ujedno i nulti korak
Nakon toga koraci opisani slikom iznad su sljedeći
1 Komunikacija s Facebook API
a Slanje zahtjeva za Facebook ID-em
b Zaprimanje Facebook ID-a
2 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
a Slanje zahtjeva za Facebook listom prijatelja odreĎenog korisnika
b Zaprimanje liste prijatelja
5 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 (31
Aplikacijski poslužitelj GlassFish)
Sustav se može podijeliti na tri dijela ndash 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]
14
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 (311 Algoritam lokacijske bliskosti) što je vidljivo u koracima 5) i 6)
15
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
31 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 Computerorg 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 31) 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 31 Performanse aplikacijskog poslužitelja nakon 5h i 100h ispravnog rada
1 httpwwworaclecom
16
311 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 LatLongLibjar 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 (313 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 ndash 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
17
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 ndash 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 32)
Slika 32 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
18
korisnika nakon što se došlo do posljednjeg prijatelja na listi sve dok se ne doĎe i do
posljednjeg korisnika na listi
312 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 (33 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
(32 Baza podataka MySQL)
313 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 31)
19
Tablica 31 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
314 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 33)
Slika 33 Izbornik aplikacije s listama prijatelja
20
32 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 ndash is_friend
i users (Slika 34 i Slika 35)
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 ndash Offline 1 ndash Invisible
2 ndash Busy 3 ndash Online) Stupac Access_token sadrži ključ više razine za Facebook-
autorizaciju korištene za dobavljanje liste prijatelja koju je klijent poslao središnjem
poslužitelju u svom inicijalnom javljanju (33 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 ndash što nije išlo
u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend
Slika 34 Tablica users u bazi podataka
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
1
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 ndash 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 ndash 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
2
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
11 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 Classmatescom koja se pojavila 1995
godine a pružala je uslugu obnavljanja starih ili zaboravljenih društvenih veza ndash 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 SixDegreescom 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 MySpace
2 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 httpwwwlinkedincom
2 httpwwwmyspacecom
3
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 11) [1]
Slika 11 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 12 i
Slika 13)
1 httpwwwfacebookcom
2 httptwittercom
4
Slika 12 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 13 Broj korisnika Facebooka zadnjih 6mj u Hrvatskoj i svijetu [2]
5
12 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
13 Kontekst i kontekstno ovisne usluge
Za početak neke od definicija konteksta su
Schilit ndash Lokacija identiteti obližnjih predmeta i ljudi te promjene nad istima [4]
Brown Bovey and Chen ndash Lokacija identiteti ljudi blizu korisnika vrijeme dana
godišnje doba temperatura itd [5]
Ryan Pascoe i Morse ndash 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
6
Dey ndash 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 ndash Sustav je kontekstno ovisan ukoliko koristi kontekst za opskrbu korisnika
relevantnim informacijama iili uslugama gdje relevantnost ovisi o namjerenom
korisničkom zadatku [7] [8] [9]
14 Slične usluge i aplikacije
U sljedećim potpoglavljima opisane su tri poprilično slične usluge odnosno aplikacije ndash
Foursquare1 Facebook Places
2 i Google Latitude
3
141 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 ndash 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 ndash 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 ndash 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 httpsfoursquarecomoverview
2 httpwwwfacebookcomplaces
3 httpswwwgooglecomlatitude
7
Bfriend omogućuje korisnicima postavljanje stanja vidljivosti u mreži na principu chat
aplikacija današnjice dok Foursquare ima opciju prijaveodjave 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 kontekstno-
specifič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
142 Facebook Places
U kolovozu 2010 godine Facebook je objavio novu uslugu ndash 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 ndash 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 prijaveodjave 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
8
Bfriend radi i u pozadini čime omogućuje zaprimanje obavijesti u kontekstno-
specifič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
143 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 prijaveodjave 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 kontekstno-
specifič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
144 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
9
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 11 Tablica sličnosti i različitosti Bfriend s ostalim uslugama
Različitost Bfriend Foursquare Facebook
Places
Latitude
Dobivanje lokacije WiFi
GPS
3GGSM
GPS GPS
WiFi
GPS
3GGSM
Prijavaodjava u sustav
(korisnički profili) Da Da Da Da
Korisnička stanja dostupnosti Da Ne Ne Ne
Pozadinski rad (obavještavanje
notifikacijama) Da Ne Ne Ne
Eksplicitan prikaz lokacije
prijatelja Ne Da Da Da
Personalizirana usluga Ne Da Da Da
10
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 21) a osnovni procesi u sustavu modelom
programskog rješenja (Slika 22) 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)
21 Arhitektura sustava
Blok dijagram (Slika 21) 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 21 Blok dijagram sustava prikazuje arhitekturu sustava
11
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 ndash 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 httpglassfishjavanet
2 httpwwwmysqlcom
3 httpwwwxtifycom
12
22 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 22)
Slika 22 Model programskog rješenja
13
Naravno u početku korisnik pokreće aplikacijuproces te je to ujedno i nulti korak
Nakon toga koraci opisani slikom iznad su sljedeći
1 Komunikacija s Facebook API
a Slanje zahtjeva za Facebook ID-em
b Zaprimanje Facebook ID-a
2 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
a Slanje zahtjeva za Facebook listom prijatelja odreĎenog korisnika
b Zaprimanje liste prijatelja
5 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 (31
Aplikacijski poslužitelj GlassFish)
Sustav se može podijeliti na tri dijela ndash 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]
14
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 (311 Algoritam lokacijske bliskosti) što je vidljivo u koracima 5) i 6)
15
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
31 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 Computerorg 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 31) 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 31 Performanse aplikacijskog poslužitelja nakon 5h i 100h ispravnog rada
1 httpwwworaclecom
16
311 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 LatLongLibjar 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 (313 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 ndash 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
17
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 ndash 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 32)
Slika 32 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
18
korisnika nakon što se došlo do posljednjeg prijatelja na listi sve dok se ne doĎe i do
posljednjeg korisnika na listi
312 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 (33 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
(32 Baza podataka MySQL)
313 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 31)
19
Tablica 31 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
314 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 33)
Slika 33 Izbornik aplikacije s listama prijatelja
20
32 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 ndash is_friend
i users (Slika 34 i Slika 35)
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 ndash Offline 1 ndash Invisible
2 ndash Busy 3 ndash Online) Stupac Access_token sadrži ključ više razine za Facebook-
autorizaciju korištene za dobavljanje liste prijatelja koju je klijent poslao središnjem
poslužitelju u svom inicijalnom javljanju (33 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 ndash što nije išlo
u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend
Slika 34 Tablica users u bazi podataka
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
2
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
11 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 Classmatescom koja se pojavila 1995
godine a pružala je uslugu obnavljanja starih ili zaboravljenih društvenih veza ndash 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 SixDegreescom 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 MySpace
2 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 httpwwwlinkedincom
2 httpwwwmyspacecom
3
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 11) [1]
Slika 11 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 12 i
Slika 13)
1 httpwwwfacebookcom
2 httptwittercom
4
Slika 12 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 13 Broj korisnika Facebooka zadnjih 6mj u Hrvatskoj i svijetu [2]
5
12 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
13 Kontekst i kontekstno ovisne usluge
Za početak neke od definicija konteksta su
Schilit ndash Lokacija identiteti obližnjih predmeta i ljudi te promjene nad istima [4]
Brown Bovey and Chen ndash Lokacija identiteti ljudi blizu korisnika vrijeme dana
godišnje doba temperatura itd [5]
Ryan Pascoe i Morse ndash 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
6
Dey ndash 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 ndash Sustav je kontekstno ovisan ukoliko koristi kontekst za opskrbu korisnika
relevantnim informacijama iili uslugama gdje relevantnost ovisi o namjerenom
korisničkom zadatku [7] [8] [9]
14 Slične usluge i aplikacije
U sljedećim potpoglavljima opisane su tri poprilično slične usluge odnosno aplikacije ndash
Foursquare1 Facebook Places
2 i Google Latitude
3
141 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 ndash 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 ndash 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 ndash 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 httpsfoursquarecomoverview
2 httpwwwfacebookcomplaces
3 httpswwwgooglecomlatitude
7
Bfriend omogućuje korisnicima postavljanje stanja vidljivosti u mreži na principu chat
aplikacija današnjice dok Foursquare ima opciju prijaveodjave 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 kontekstno-
specifič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
142 Facebook Places
U kolovozu 2010 godine Facebook je objavio novu uslugu ndash 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 ndash 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 prijaveodjave 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
8
Bfriend radi i u pozadini čime omogućuje zaprimanje obavijesti u kontekstno-
specifič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
143 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 prijaveodjave 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 kontekstno-
specifič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
144 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
9
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 11 Tablica sličnosti i različitosti Bfriend s ostalim uslugama
Različitost Bfriend Foursquare Facebook
Places
Latitude
Dobivanje lokacije WiFi
GPS
3GGSM
GPS GPS
WiFi
GPS
3GGSM
Prijavaodjava u sustav
(korisnički profili) Da Da Da Da
Korisnička stanja dostupnosti Da Ne Ne Ne
Pozadinski rad (obavještavanje
notifikacijama) Da Ne Ne Ne
Eksplicitan prikaz lokacije
prijatelja Ne Da Da Da
Personalizirana usluga Ne Da Da Da
10
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 21) a osnovni procesi u sustavu modelom
programskog rješenja (Slika 22) 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)
21 Arhitektura sustava
Blok dijagram (Slika 21) 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 21 Blok dijagram sustava prikazuje arhitekturu sustava
11
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 ndash 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 httpglassfishjavanet
2 httpwwwmysqlcom
3 httpwwwxtifycom
12
22 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 22)
Slika 22 Model programskog rješenja
13
Naravno u početku korisnik pokreće aplikacijuproces te je to ujedno i nulti korak
Nakon toga koraci opisani slikom iznad su sljedeći
1 Komunikacija s Facebook API
a Slanje zahtjeva za Facebook ID-em
b Zaprimanje Facebook ID-a
2 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
a Slanje zahtjeva za Facebook listom prijatelja odreĎenog korisnika
b Zaprimanje liste prijatelja
5 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 (31
Aplikacijski poslužitelj GlassFish)
Sustav se može podijeliti na tri dijela ndash 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]
14
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 (311 Algoritam lokacijske bliskosti) što je vidljivo u koracima 5) i 6)
15
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
31 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 Computerorg 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 31) 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 31 Performanse aplikacijskog poslužitelja nakon 5h i 100h ispravnog rada
1 httpwwworaclecom
16
311 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 LatLongLibjar 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 (313 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 ndash 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
17
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 ndash 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 32)
Slika 32 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
18
korisnika nakon što se došlo do posljednjeg prijatelja na listi sve dok se ne doĎe i do
posljednjeg korisnika na listi
312 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 (33 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
(32 Baza podataka MySQL)
313 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 31)
19
Tablica 31 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
314 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 33)
Slika 33 Izbornik aplikacije s listama prijatelja
20
32 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 ndash is_friend
i users (Slika 34 i Slika 35)
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 ndash Offline 1 ndash Invisible
2 ndash Busy 3 ndash Online) Stupac Access_token sadrži ključ više razine za Facebook-
autorizaciju korištene za dobavljanje liste prijatelja koju je klijent poslao središnjem
poslužitelju u svom inicijalnom javljanju (33 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 ndash što nije išlo
u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend
Slika 34 Tablica users u bazi podataka
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
3
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 11) [1]
Slika 11 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 12 i
Slika 13)
1 httpwwwfacebookcom
2 httptwittercom
4
Slika 12 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 13 Broj korisnika Facebooka zadnjih 6mj u Hrvatskoj i svijetu [2]
5
12 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
13 Kontekst i kontekstno ovisne usluge
Za početak neke od definicija konteksta su
Schilit ndash Lokacija identiteti obližnjih predmeta i ljudi te promjene nad istima [4]
Brown Bovey and Chen ndash Lokacija identiteti ljudi blizu korisnika vrijeme dana
godišnje doba temperatura itd [5]
Ryan Pascoe i Morse ndash 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
6
Dey ndash 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 ndash Sustav je kontekstno ovisan ukoliko koristi kontekst za opskrbu korisnika
relevantnim informacijama iili uslugama gdje relevantnost ovisi o namjerenom
korisničkom zadatku [7] [8] [9]
14 Slične usluge i aplikacije
U sljedećim potpoglavljima opisane su tri poprilično slične usluge odnosno aplikacije ndash
Foursquare1 Facebook Places
2 i Google Latitude
3
141 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 ndash 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 ndash 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 ndash 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 httpsfoursquarecomoverview
2 httpwwwfacebookcomplaces
3 httpswwwgooglecomlatitude
7
Bfriend omogućuje korisnicima postavljanje stanja vidljivosti u mreži na principu chat
aplikacija današnjice dok Foursquare ima opciju prijaveodjave 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 kontekstno-
specifič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
142 Facebook Places
U kolovozu 2010 godine Facebook je objavio novu uslugu ndash 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 ndash 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 prijaveodjave 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
8
Bfriend radi i u pozadini čime omogućuje zaprimanje obavijesti u kontekstno-
specifič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
143 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 prijaveodjave 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 kontekstno-
specifič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
144 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
9
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 11 Tablica sličnosti i različitosti Bfriend s ostalim uslugama
Različitost Bfriend Foursquare Facebook
Places
Latitude
Dobivanje lokacije WiFi
GPS
3GGSM
GPS GPS
WiFi
GPS
3GGSM
Prijavaodjava u sustav
(korisnički profili) Da Da Da Da
Korisnička stanja dostupnosti Da Ne Ne Ne
Pozadinski rad (obavještavanje
notifikacijama) Da Ne Ne Ne
Eksplicitan prikaz lokacije
prijatelja Ne Da Da Da
Personalizirana usluga Ne Da Da Da
10
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 21) a osnovni procesi u sustavu modelom
programskog rješenja (Slika 22) 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)
21 Arhitektura sustava
Blok dijagram (Slika 21) 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 21 Blok dijagram sustava prikazuje arhitekturu sustava
11
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 ndash 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 httpglassfishjavanet
2 httpwwwmysqlcom
3 httpwwwxtifycom
12
22 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 22)
Slika 22 Model programskog rješenja
13
Naravno u početku korisnik pokreće aplikacijuproces te je to ujedno i nulti korak
Nakon toga koraci opisani slikom iznad su sljedeći
1 Komunikacija s Facebook API
a Slanje zahtjeva za Facebook ID-em
b Zaprimanje Facebook ID-a
2 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
a Slanje zahtjeva za Facebook listom prijatelja odreĎenog korisnika
b Zaprimanje liste prijatelja
5 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 (31
Aplikacijski poslužitelj GlassFish)
Sustav se može podijeliti na tri dijela ndash 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]
14
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 (311 Algoritam lokacijske bliskosti) što je vidljivo u koracima 5) i 6)
15
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
31 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 Computerorg 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 31) 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 31 Performanse aplikacijskog poslužitelja nakon 5h i 100h ispravnog rada
1 httpwwworaclecom
16
311 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 LatLongLibjar 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 (313 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 ndash 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
17
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 ndash 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 32)
Slika 32 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
18
korisnika nakon što se došlo do posljednjeg prijatelja na listi sve dok se ne doĎe i do
posljednjeg korisnika na listi
312 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 (33 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
(32 Baza podataka MySQL)
313 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 31)
19
Tablica 31 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
314 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 33)
Slika 33 Izbornik aplikacije s listama prijatelja
20
32 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 ndash is_friend
i users (Slika 34 i Slika 35)
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 ndash Offline 1 ndash Invisible
2 ndash Busy 3 ndash Online) Stupac Access_token sadrži ključ više razine za Facebook-
autorizaciju korištene za dobavljanje liste prijatelja koju je klijent poslao središnjem
poslužitelju u svom inicijalnom javljanju (33 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 ndash što nije išlo
u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend
Slika 34 Tablica users u bazi podataka
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
4
Slika 12 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 13 Broj korisnika Facebooka zadnjih 6mj u Hrvatskoj i svijetu [2]
5
12 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
13 Kontekst i kontekstno ovisne usluge
Za početak neke od definicija konteksta su
Schilit ndash Lokacija identiteti obližnjih predmeta i ljudi te promjene nad istima [4]
Brown Bovey and Chen ndash Lokacija identiteti ljudi blizu korisnika vrijeme dana
godišnje doba temperatura itd [5]
Ryan Pascoe i Morse ndash 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
6
Dey ndash 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 ndash Sustav je kontekstno ovisan ukoliko koristi kontekst za opskrbu korisnika
relevantnim informacijama iili uslugama gdje relevantnost ovisi o namjerenom
korisničkom zadatku [7] [8] [9]
14 Slične usluge i aplikacije
U sljedećim potpoglavljima opisane su tri poprilično slične usluge odnosno aplikacije ndash
Foursquare1 Facebook Places
2 i Google Latitude
3
141 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 ndash 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 ndash 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 ndash 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 httpsfoursquarecomoverview
2 httpwwwfacebookcomplaces
3 httpswwwgooglecomlatitude
7
Bfriend omogućuje korisnicima postavljanje stanja vidljivosti u mreži na principu chat
aplikacija današnjice dok Foursquare ima opciju prijaveodjave 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 kontekstno-
specifič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
142 Facebook Places
U kolovozu 2010 godine Facebook je objavio novu uslugu ndash 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 ndash 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 prijaveodjave 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
8
Bfriend radi i u pozadini čime omogućuje zaprimanje obavijesti u kontekstno-
specifič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
143 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 prijaveodjave 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 kontekstno-
specifič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
144 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
9
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 11 Tablica sličnosti i različitosti Bfriend s ostalim uslugama
Različitost Bfriend Foursquare Facebook
Places
Latitude
Dobivanje lokacije WiFi
GPS
3GGSM
GPS GPS
WiFi
GPS
3GGSM
Prijavaodjava u sustav
(korisnički profili) Da Da Da Da
Korisnička stanja dostupnosti Da Ne Ne Ne
Pozadinski rad (obavještavanje
notifikacijama) Da Ne Ne Ne
Eksplicitan prikaz lokacije
prijatelja Ne Da Da Da
Personalizirana usluga Ne Da Da Da
10
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 21) a osnovni procesi u sustavu modelom
programskog rješenja (Slika 22) 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)
21 Arhitektura sustava
Blok dijagram (Slika 21) 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 21 Blok dijagram sustava prikazuje arhitekturu sustava
11
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 ndash 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 httpglassfishjavanet
2 httpwwwmysqlcom
3 httpwwwxtifycom
12
22 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 22)
Slika 22 Model programskog rješenja
13
Naravno u početku korisnik pokreće aplikacijuproces te je to ujedno i nulti korak
Nakon toga koraci opisani slikom iznad su sljedeći
1 Komunikacija s Facebook API
a Slanje zahtjeva za Facebook ID-em
b Zaprimanje Facebook ID-a
2 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
a Slanje zahtjeva za Facebook listom prijatelja odreĎenog korisnika
b Zaprimanje liste prijatelja
5 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 (31
Aplikacijski poslužitelj GlassFish)
Sustav se može podijeliti na tri dijela ndash 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]
14
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 (311 Algoritam lokacijske bliskosti) što je vidljivo u koracima 5) i 6)
15
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
31 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 Computerorg 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 31) 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 31 Performanse aplikacijskog poslužitelja nakon 5h i 100h ispravnog rada
1 httpwwworaclecom
16
311 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 LatLongLibjar 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 (313 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 ndash 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
17
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 ndash 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 32)
Slika 32 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
18
korisnika nakon što se došlo do posljednjeg prijatelja na listi sve dok se ne doĎe i do
posljednjeg korisnika na listi
312 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 (33 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
(32 Baza podataka MySQL)
313 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 31)
19
Tablica 31 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
314 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 33)
Slika 33 Izbornik aplikacije s listama prijatelja
20
32 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 ndash is_friend
i users (Slika 34 i Slika 35)
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 ndash Offline 1 ndash Invisible
2 ndash Busy 3 ndash Online) Stupac Access_token sadrži ključ više razine za Facebook-
autorizaciju korištene za dobavljanje liste prijatelja koju je klijent poslao središnjem
poslužitelju u svom inicijalnom javljanju (33 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 ndash što nije išlo
u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend
Slika 34 Tablica users u bazi podataka
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
5
12 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
13 Kontekst i kontekstno ovisne usluge
Za početak neke od definicija konteksta su
Schilit ndash Lokacija identiteti obližnjih predmeta i ljudi te promjene nad istima [4]
Brown Bovey and Chen ndash Lokacija identiteti ljudi blizu korisnika vrijeme dana
godišnje doba temperatura itd [5]
Ryan Pascoe i Morse ndash 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
6
Dey ndash 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 ndash Sustav je kontekstno ovisan ukoliko koristi kontekst za opskrbu korisnika
relevantnim informacijama iili uslugama gdje relevantnost ovisi o namjerenom
korisničkom zadatku [7] [8] [9]
14 Slične usluge i aplikacije
U sljedećim potpoglavljima opisane su tri poprilično slične usluge odnosno aplikacije ndash
Foursquare1 Facebook Places
2 i Google Latitude
3
141 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 ndash 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 ndash 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 ndash 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 httpsfoursquarecomoverview
2 httpwwwfacebookcomplaces
3 httpswwwgooglecomlatitude
7
Bfriend omogućuje korisnicima postavljanje stanja vidljivosti u mreži na principu chat
aplikacija današnjice dok Foursquare ima opciju prijaveodjave 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 kontekstno-
specifič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
142 Facebook Places
U kolovozu 2010 godine Facebook je objavio novu uslugu ndash 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 ndash 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 prijaveodjave 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
8
Bfriend radi i u pozadini čime omogućuje zaprimanje obavijesti u kontekstno-
specifič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
143 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 prijaveodjave 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 kontekstno-
specifič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
144 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
9
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 11 Tablica sličnosti i različitosti Bfriend s ostalim uslugama
Različitost Bfriend Foursquare Facebook
Places
Latitude
Dobivanje lokacije WiFi
GPS
3GGSM
GPS GPS
WiFi
GPS
3GGSM
Prijavaodjava u sustav
(korisnički profili) Da Da Da Da
Korisnička stanja dostupnosti Da Ne Ne Ne
Pozadinski rad (obavještavanje
notifikacijama) Da Ne Ne Ne
Eksplicitan prikaz lokacije
prijatelja Ne Da Da Da
Personalizirana usluga Ne Da Da Da
10
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 21) a osnovni procesi u sustavu modelom
programskog rješenja (Slika 22) 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)
21 Arhitektura sustava
Blok dijagram (Slika 21) 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 21 Blok dijagram sustava prikazuje arhitekturu sustava
11
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 ndash 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 httpglassfishjavanet
2 httpwwwmysqlcom
3 httpwwwxtifycom
12
22 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 22)
Slika 22 Model programskog rješenja
13
Naravno u početku korisnik pokreće aplikacijuproces te je to ujedno i nulti korak
Nakon toga koraci opisani slikom iznad su sljedeći
1 Komunikacija s Facebook API
a Slanje zahtjeva za Facebook ID-em
b Zaprimanje Facebook ID-a
2 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
a Slanje zahtjeva za Facebook listom prijatelja odreĎenog korisnika
b Zaprimanje liste prijatelja
5 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 (31
Aplikacijski poslužitelj GlassFish)
Sustav se može podijeliti na tri dijela ndash 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]
14
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 (311 Algoritam lokacijske bliskosti) što je vidljivo u koracima 5) i 6)
15
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
31 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 Computerorg 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 31) 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 31 Performanse aplikacijskog poslužitelja nakon 5h i 100h ispravnog rada
1 httpwwworaclecom
16
311 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 LatLongLibjar 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 (313 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 ndash 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
17
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 ndash 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 32)
Slika 32 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
18
korisnika nakon što se došlo do posljednjeg prijatelja na listi sve dok se ne doĎe i do
posljednjeg korisnika na listi
312 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 (33 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
(32 Baza podataka MySQL)
313 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 31)
19
Tablica 31 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
314 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 33)
Slika 33 Izbornik aplikacije s listama prijatelja
20
32 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 ndash is_friend
i users (Slika 34 i Slika 35)
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 ndash Offline 1 ndash Invisible
2 ndash Busy 3 ndash Online) Stupac Access_token sadrži ključ više razine za Facebook-
autorizaciju korištene za dobavljanje liste prijatelja koju je klijent poslao središnjem
poslužitelju u svom inicijalnom javljanju (33 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 ndash što nije išlo
u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend
Slika 34 Tablica users u bazi podataka
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
6
Dey ndash 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 ndash Sustav je kontekstno ovisan ukoliko koristi kontekst za opskrbu korisnika
relevantnim informacijama iili uslugama gdje relevantnost ovisi o namjerenom
korisničkom zadatku [7] [8] [9]
14 Slične usluge i aplikacije
U sljedećim potpoglavljima opisane su tri poprilično slične usluge odnosno aplikacije ndash
Foursquare1 Facebook Places
2 i Google Latitude
3
141 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 ndash 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 ndash 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 ndash 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 httpsfoursquarecomoverview
2 httpwwwfacebookcomplaces
3 httpswwwgooglecomlatitude
7
Bfriend omogućuje korisnicima postavljanje stanja vidljivosti u mreži na principu chat
aplikacija današnjice dok Foursquare ima opciju prijaveodjave 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 kontekstno-
specifič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
142 Facebook Places
U kolovozu 2010 godine Facebook je objavio novu uslugu ndash 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 ndash 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 prijaveodjave 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
8
Bfriend radi i u pozadini čime omogućuje zaprimanje obavijesti u kontekstno-
specifič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
143 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 prijaveodjave 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 kontekstno-
specifič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
144 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
9
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 11 Tablica sličnosti i različitosti Bfriend s ostalim uslugama
Različitost Bfriend Foursquare Facebook
Places
Latitude
Dobivanje lokacije WiFi
GPS
3GGSM
GPS GPS
WiFi
GPS
3GGSM
Prijavaodjava u sustav
(korisnički profili) Da Da Da Da
Korisnička stanja dostupnosti Da Ne Ne Ne
Pozadinski rad (obavještavanje
notifikacijama) Da Ne Ne Ne
Eksplicitan prikaz lokacije
prijatelja Ne Da Da Da
Personalizirana usluga Ne Da Da Da
10
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 21) a osnovni procesi u sustavu modelom
programskog rješenja (Slika 22) 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)
21 Arhitektura sustava
Blok dijagram (Slika 21) 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 21 Blok dijagram sustava prikazuje arhitekturu sustava
11
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 ndash 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 httpglassfishjavanet
2 httpwwwmysqlcom
3 httpwwwxtifycom
12
22 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 22)
Slika 22 Model programskog rješenja
13
Naravno u početku korisnik pokreće aplikacijuproces te je to ujedno i nulti korak
Nakon toga koraci opisani slikom iznad su sljedeći
1 Komunikacija s Facebook API
a Slanje zahtjeva za Facebook ID-em
b Zaprimanje Facebook ID-a
2 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
a Slanje zahtjeva za Facebook listom prijatelja odreĎenog korisnika
b Zaprimanje liste prijatelja
5 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 (31
Aplikacijski poslužitelj GlassFish)
Sustav se može podijeliti na tri dijela ndash 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]
14
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 (311 Algoritam lokacijske bliskosti) što je vidljivo u koracima 5) i 6)
15
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
31 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 Computerorg 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 31) 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 31 Performanse aplikacijskog poslužitelja nakon 5h i 100h ispravnog rada
1 httpwwworaclecom
16
311 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 LatLongLibjar 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 (313 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 ndash 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
17
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 ndash 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 32)
Slika 32 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
18
korisnika nakon što se došlo do posljednjeg prijatelja na listi sve dok se ne doĎe i do
posljednjeg korisnika na listi
312 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 (33 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
(32 Baza podataka MySQL)
313 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 31)
19
Tablica 31 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
314 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 33)
Slika 33 Izbornik aplikacije s listama prijatelja
20
32 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 ndash is_friend
i users (Slika 34 i Slika 35)
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 ndash Offline 1 ndash Invisible
2 ndash Busy 3 ndash Online) Stupac Access_token sadrži ključ više razine za Facebook-
autorizaciju korištene za dobavljanje liste prijatelja koju je klijent poslao središnjem
poslužitelju u svom inicijalnom javljanju (33 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 ndash što nije išlo
u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend
Slika 34 Tablica users u bazi podataka
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
7
Bfriend omogućuje korisnicima postavljanje stanja vidljivosti u mreži na principu chat
aplikacija današnjice dok Foursquare ima opciju prijaveodjave 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 kontekstno-
specifič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
142 Facebook Places
U kolovozu 2010 godine Facebook je objavio novu uslugu ndash 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 ndash 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 prijaveodjave 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
8
Bfriend radi i u pozadini čime omogućuje zaprimanje obavijesti u kontekstno-
specifič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
143 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 prijaveodjave 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 kontekstno-
specifič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
144 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
9
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 11 Tablica sličnosti i različitosti Bfriend s ostalim uslugama
Različitost Bfriend Foursquare Facebook
Places
Latitude
Dobivanje lokacije WiFi
GPS
3GGSM
GPS GPS
WiFi
GPS
3GGSM
Prijavaodjava u sustav
(korisnički profili) Da Da Da Da
Korisnička stanja dostupnosti Da Ne Ne Ne
Pozadinski rad (obavještavanje
notifikacijama) Da Ne Ne Ne
Eksplicitan prikaz lokacije
prijatelja Ne Da Da Da
Personalizirana usluga Ne Da Da Da
10
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 21) a osnovni procesi u sustavu modelom
programskog rješenja (Slika 22) 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)
21 Arhitektura sustava
Blok dijagram (Slika 21) 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 21 Blok dijagram sustava prikazuje arhitekturu sustava
11
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 ndash 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 httpglassfishjavanet
2 httpwwwmysqlcom
3 httpwwwxtifycom
12
22 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 22)
Slika 22 Model programskog rješenja
13
Naravno u početku korisnik pokreće aplikacijuproces te je to ujedno i nulti korak
Nakon toga koraci opisani slikom iznad su sljedeći
1 Komunikacija s Facebook API
a Slanje zahtjeva za Facebook ID-em
b Zaprimanje Facebook ID-a
2 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
a Slanje zahtjeva za Facebook listom prijatelja odreĎenog korisnika
b Zaprimanje liste prijatelja
5 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 (31
Aplikacijski poslužitelj GlassFish)
Sustav se može podijeliti na tri dijela ndash 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]
14
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 (311 Algoritam lokacijske bliskosti) što je vidljivo u koracima 5) i 6)
15
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
31 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 Computerorg 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 31) 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 31 Performanse aplikacijskog poslužitelja nakon 5h i 100h ispravnog rada
1 httpwwworaclecom
16
311 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 LatLongLibjar 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 (313 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 ndash 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
17
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 ndash 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 32)
Slika 32 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
18
korisnika nakon što se došlo do posljednjeg prijatelja na listi sve dok se ne doĎe i do
posljednjeg korisnika na listi
312 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 (33 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
(32 Baza podataka MySQL)
313 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 31)
19
Tablica 31 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
314 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 33)
Slika 33 Izbornik aplikacije s listama prijatelja
20
32 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 ndash is_friend
i users (Slika 34 i Slika 35)
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 ndash Offline 1 ndash Invisible
2 ndash Busy 3 ndash Online) Stupac Access_token sadrži ključ više razine za Facebook-
autorizaciju korištene za dobavljanje liste prijatelja koju je klijent poslao središnjem
poslužitelju u svom inicijalnom javljanju (33 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 ndash što nije išlo
u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend
Slika 34 Tablica users u bazi podataka
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
8
Bfriend radi i u pozadini čime omogućuje zaprimanje obavijesti u kontekstno-
specifič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
143 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 prijaveodjave 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 kontekstno-
specifič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
144 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
9
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 11 Tablica sličnosti i različitosti Bfriend s ostalim uslugama
Različitost Bfriend Foursquare Facebook
Places
Latitude
Dobivanje lokacije WiFi
GPS
3GGSM
GPS GPS
WiFi
GPS
3GGSM
Prijavaodjava u sustav
(korisnički profili) Da Da Da Da
Korisnička stanja dostupnosti Da Ne Ne Ne
Pozadinski rad (obavještavanje
notifikacijama) Da Ne Ne Ne
Eksplicitan prikaz lokacije
prijatelja Ne Da Da Da
Personalizirana usluga Ne Da Da Da
10
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 21) a osnovni procesi u sustavu modelom
programskog rješenja (Slika 22) 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)
21 Arhitektura sustava
Blok dijagram (Slika 21) 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 21 Blok dijagram sustava prikazuje arhitekturu sustava
11
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 ndash 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 httpglassfishjavanet
2 httpwwwmysqlcom
3 httpwwwxtifycom
12
22 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 22)
Slika 22 Model programskog rješenja
13
Naravno u početku korisnik pokreće aplikacijuproces te je to ujedno i nulti korak
Nakon toga koraci opisani slikom iznad su sljedeći
1 Komunikacija s Facebook API
a Slanje zahtjeva za Facebook ID-em
b Zaprimanje Facebook ID-a
2 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
a Slanje zahtjeva za Facebook listom prijatelja odreĎenog korisnika
b Zaprimanje liste prijatelja
5 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 (31
Aplikacijski poslužitelj GlassFish)
Sustav se može podijeliti na tri dijela ndash 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]
14
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 (311 Algoritam lokacijske bliskosti) što je vidljivo u koracima 5) i 6)
15
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
31 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 Computerorg 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 31) 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 31 Performanse aplikacijskog poslužitelja nakon 5h i 100h ispravnog rada
1 httpwwworaclecom
16
311 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 LatLongLibjar 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 (313 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 ndash 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
17
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 ndash 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 32)
Slika 32 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
18
korisnika nakon što se došlo do posljednjeg prijatelja na listi sve dok se ne doĎe i do
posljednjeg korisnika na listi
312 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 (33 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
(32 Baza podataka MySQL)
313 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 31)
19
Tablica 31 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
314 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 33)
Slika 33 Izbornik aplikacije s listama prijatelja
20
32 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 ndash is_friend
i users (Slika 34 i Slika 35)
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 ndash Offline 1 ndash Invisible
2 ndash Busy 3 ndash Online) Stupac Access_token sadrži ključ više razine za Facebook-
autorizaciju korištene za dobavljanje liste prijatelja koju je klijent poslao središnjem
poslužitelju u svom inicijalnom javljanju (33 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 ndash što nije išlo
u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend
Slika 34 Tablica users u bazi podataka
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
9
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 11 Tablica sličnosti i različitosti Bfriend s ostalim uslugama
Različitost Bfriend Foursquare Facebook
Places
Latitude
Dobivanje lokacije WiFi
GPS
3GGSM
GPS GPS
WiFi
GPS
3GGSM
Prijavaodjava u sustav
(korisnički profili) Da Da Da Da
Korisnička stanja dostupnosti Da Ne Ne Ne
Pozadinski rad (obavještavanje
notifikacijama) Da Ne Ne Ne
Eksplicitan prikaz lokacije
prijatelja Ne Da Da Da
Personalizirana usluga Ne Da Da Da
10
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 21) a osnovni procesi u sustavu modelom
programskog rješenja (Slika 22) 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)
21 Arhitektura sustava
Blok dijagram (Slika 21) 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 21 Blok dijagram sustava prikazuje arhitekturu sustava
11
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 ndash 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 httpglassfishjavanet
2 httpwwwmysqlcom
3 httpwwwxtifycom
12
22 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 22)
Slika 22 Model programskog rješenja
13
Naravno u početku korisnik pokreće aplikacijuproces te je to ujedno i nulti korak
Nakon toga koraci opisani slikom iznad su sljedeći
1 Komunikacija s Facebook API
a Slanje zahtjeva za Facebook ID-em
b Zaprimanje Facebook ID-a
2 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
a Slanje zahtjeva za Facebook listom prijatelja odreĎenog korisnika
b Zaprimanje liste prijatelja
5 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 (31
Aplikacijski poslužitelj GlassFish)
Sustav se može podijeliti na tri dijela ndash 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]
14
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 (311 Algoritam lokacijske bliskosti) što je vidljivo u koracima 5) i 6)
15
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
31 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 Computerorg 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 31) 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 31 Performanse aplikacijskog poslužitelja nakon 5h i 100h ispravnog rada
1 httpwwworaclecom
16
311 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 LatLongLibjar 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 (313 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 ndash 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
17
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 ndash 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 32)
Slika 32 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
18
korisnika nakon što se došlo do posljednjeg prijatelja na listi sve dok se ne doĎe i do
posljednjeg korisnika na listi
312 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 (33 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
(32 Baza podataka MySQL)
313 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 31)
19
Tablica 31 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
314 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 33)
Slika 33 Izbornik aplikacije s listama prijatelja
20
32 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 ndash is_friend
i users (Slika 34 i Slika 35)
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 ndash Offline 1 ndash Invisible
2 ndash Busy 3 ndash Online) Stupac Access_token sadrži ključ više razine za Facebook-
autorizaciju korištene za dobavljanje liste prijatelja koju je klijent poslao središnjem
poslužitelju u svom inicijalnom javljanju (33 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 ndash što nije išlo
u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend
Slika 34 Tablica users u bazi podataka
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
10
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 21) a osnovni procesi u sustavu modelom
programskog rješenja (Slika 22) 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)
21 Arhitektura sustava
Blok dijagram (Slika 21) 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 21 Blok dijagram sustava prikazuje arhitekturu sustava
11
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 ndash 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 httpglassfishjavanet
2 httpwwwmysqlcom
3 httpwwwxtifycom
12
22 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 22)
Slika 22 Model programskog rješenja
13
Naravno u početku korisnik pokreće aplikacijuproces te je to ujedno i nulti korak
Nakon toga koraci opisani slikom iznad su sljedeći
1 Komunikacija s Facebook API
a Slanje zahtjeva za Facebook ID-em
b Zaprimanje Facebook ID-a
2 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
a Slanje zahtjeva za Facebook listom prijatelja odreĎenog korisnika
b Zaprimanje liste prijatelja
5 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 (31
Aplikacijski poslužitelj GlassFish)
Sustav se može podijeliti na tri dijela ndash 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]
14
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 (311 Algoritam lokacijske bliskosti) što je vidljivo u koracima 5) i 6)
15
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
31 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 Computerorg 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 31) 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 31 Performanse aplikacijskog poslužitelja nakon 5h i 100h ispravnog rada
1 httpwwworaclecom
16
311 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 LatLongLibjar 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 (313 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 ndash 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
17
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 ndash 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 32)
Slika 32 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
18
korisnika nakon što se došlo do posljednjeg prijatelja na listi sve dok se ne doĎe i do
posljednjeg korisnika na listi
312 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 (33 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
(32 Baza podataka MySQL)
313 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 31)
19
Tablica 31 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
314 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 33)
Slika 33 Izbornik aplikacije s listama prijatelja
20
32 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 ndash is_friend
i users (Slika 34 i Slika 35)
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 ndash Offline 1 ndash Invisible
2 ndash Busy 3 ndash Online) Stupac Access_token sadrži ključ više razine za Facebook-
autorizaciju korištene za dobavljanje liste prijatelja koju je klijent poslao središnjem
poslužitelju u svom inicijalnom javljanju (33 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 ndash što nije išlo
u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend
Slika 34 Tablica users u bazi podataka
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
11
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 ndash 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 httpglassfishjavanet
2 httpwwwmysqlcom
3 httpwwwxtifycom
12
22 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 22)
Slika 22 Model programskog rješenja
13
Naravno u početku korisnik pokreće aplikacijuproces te je to ujedno i nulti korak
Nakon toga koraci opisani slikom iznad su sljedeći
1 Komunikacija s Facebook API
a Slanje zahtjeva za Facebook ID-em
b Zaprimanje Facebook ID-a
2 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
a Slanje zahtjeva za Facebook listom prijatelja odreĎenog korisnika
b Zaprimanje liste prijatelja
5 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 (31
Aplikacijski poslužitelj GlassFish)
Sustav se može podijeliti na tri dijela ndash 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]
14
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 (311 Algoritam lokacijske bliskosti) što je vidljivo u koracima 5) i 6)
15
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
31 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 Computerorg 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 31) 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 31 Performanse aplikacijskog poslužitelja nakon 5h i 100h ispravnog rada
1 httpwwworaclecom
16
311 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 LatLongLibjar 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 (313 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 ndash 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
17
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 ndash 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 32)
Slika 32 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
18
korisnika nakon što se došlo do posljednjeg prijatelja na listi sve dok se ne doĎe i do
posljednjeg korisnika na listi
312 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 (33 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
(32 Baza podataka MySQL)
313 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 31)
19
Tablica 31 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
314 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 33)
Slika 33 Izbornik aplikacije s listama prijatelja
20
32 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 ndash is_friend
i users (Slika 34 i Slika 35)
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 ndash Offline 1 ndash Invisible
2 ndash Busy 3 ndash Online) Stupac Access_token sadrži ključ više razine za Facebook-
autorizaciju korištene za dobavljanje liste prijatelja koju je klijent poslao središnjem
poslužitelju u svom inicijalnom javljanju (33 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 ndash što nije išlo
u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend
Slika 34 Tablica users u bazi podataka
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
12
22 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 22)
Slika 22 Model programskog rješenja
13
Naravno u početku korisnik pokreće aplikacijuproces te je to ujedno i nulti korak
Nakon toga koraci opisani slikom iznad su sljedeći
1 Komunikacija s Facebook API
a Slanje zahtjeva za Facebook ID-em
b Zaprimanje Facebook ID-a
2 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
a Slanje zahtjeva za Facebook listom prijatelja odreĎenog korisnika
b Zaprimanje liste prijatelja
5 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 (31
Aplikacijski poslužitelj GlassFish)
Sustav se može podijeliti na tri dijela ndash 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]
14
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 (311 Algoritam lokacijske bliskosti) što je vidljivo u koracima 5) i 6)
15
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
31 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 Computerorg 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 31) 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 31 Performanse aplikacijskog poslužitelja nakon 5h i 100h ispravnog rada
1 httpwwworaclecom
16
311 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 LatLongLibjar 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 (313 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 ndash 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
17
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 ndash 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 32)
Slika 32 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
18
korisnika nakon što se došlo do posljednjeg prijatelja na listi sve dok se ne doĎe i do
posljednjeg korisnika na listi
312 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 (33 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
(32 Baza podataka MySQL)
313 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 31)
19
Tablica 31 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
314 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 33)
Slika 33 Izbornik aplikacije s listama prijatelja
20
32 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 ndash is_friend
i users (Slika 34 i Slika 35)
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 ndash Offline 1 ndash Invisible
2 ndash Busy 3 ndash Online) Stupac Access_token sadrži ključ više razine za Facebook-
autorizaciju korištene za dobavljanje liste prijatelja koju je klijent poslao središnjem
poslužitelju u svom inicijalnom javljanju (33 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 ndash što nije išlo
u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend
Slika 34 Tablica users u bazi podataka
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
13
Naravno u početku korisnik pokreće aplikacijuproces te je to ujedno i nulti korak
Nakon toga koraci opisani slikom iznad su sljedeći
1 Komunikacija s Facebook API
a Slanje zahtjeva za Facebook ID-em
b Zaprimanje Facebook ID-a
2 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
a Slanje zahtjeva za Facebook listom prijatelja odreĎenog korisnika
b Zaprimanje liste prijatelja
5 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 (31
Aplikacijski poslužitelj GlassFish)
Sustav se može podijeliti na tri dijela ndash 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]
14
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 (311 Algoritam lokacijske bliskosti) što je vidljivo u koracima 5) i 6)
15
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
31 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 Computerorg 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 31) 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 31 Performanse aplikacijskog poslužitelja nakon 5h i 100h ispravnog rada
1 httpwwworaclecom
16
311 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 LatLongLibjar 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 (313 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 ndash 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
17
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 ndash 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 32)
Slika 32 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
18
korisnika nakon što se došlo do posljednjeg prijatelja na listi sve dok se ne doĎe i do
posljednjeg korisnika na listi
312 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 (33 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
(32 Baza podataka MySQL)
313 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 31)
19
Tablica 31 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
314 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 33)
Slika 33 Izbornik aplikacije s listama prijatelja
20
32 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 ndash is_friend
i users (Slika 34 i Slika 35)
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 ndash Offline 1 ndash Invisible
2 ndash Busy 3 ndash Online) Stupac Access_token sadrži ključ više razine za Facebook-
autorizaciju korištene za dobavljanje liste prijatelja koju je klijent poslao središnjem
poslužitelju u svom inicijalnom javljanju (33 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 ndash što nije išlo
u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend
Slika 34 Tablica users u bazi podataka
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
14
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 (311 Algoritam lokacijske bliskosti) što je vidljivo u koracima 5) i 6)
15
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
31 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 Computerorg 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 31) 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 31 Performanse aplikacijskog poslužitelja nakon 5h i 100h ispravnog rada
1 httpwwworaclecom
16
311 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 LatLongLibjar 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 (313 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 ndash 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
17
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 ndash 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 32)
Slika 32 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
18
korisnika nakon što se došlo do posljednjeg prijatelja na listi sve dok se ne doĎe i do
posljednjeg korisnika na listi
312 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 (33 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
(32 Baza podataka MySQL)
313 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 31)
19
Tablica 31 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
314 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 33)
Slika 33 Izbornik aplikacije s listama prijatelja
20
32 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 ndash is_friend
i users (Slika 34 i Slika 35)
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 ndash Offline 1 ndash Invisible
2 ndash Busy 3 ndash Online) Stupac Access_token sadrži ključ više razine za Facebook-
autorizaciju korištene za dobavljanje liste prijatelja koju je klijent poslao središnjem
poslužitelju u svom inicijalnom javljanju (33 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 ndash što nije išlo
u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend
Slika 34 Tablica users u bazi podataka
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
15
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
31 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 Computerorg 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 31) 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 31 Performanse aplikacijskog poslužitelja nakon 5h i 100h ispravnog rada
1 httpwwworaclecom
16
311 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 LatLongLibjar 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 (313 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 ndash 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
17
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 ndash 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 32)
Slika 32 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
18
korisnika nakon što se došlo do posljednjeg prijatelja na listi sve dok se ne doĎe i do
posljednjeg korisnika na listi
312 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 (33 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
(32 Baza podataka MySQL)
313 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 31)
19
Tablica 31 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
314 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 33)
Slika 33 Izbornik aplikacije s listama prijatelja
20
32 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 ndash is_friend
i users (Slika 34 i Slika 35)
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 ndash Offline 1 ndash Invisible
2 ndash Busy 3 ndash Online) Stupac Access_token sadrži ključ više razine za Facebook-
autorizaciju korištene za dobavljanje liste prijatelja koju je klijent poslao središnjem
poslužitelju u svom inicijalnom javljanju (33 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 ndash što nije išlo
u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend
Slika 34 Tablica users u bazi podataka
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
16
311 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 LatLongLibjar 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 (313 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 ndash 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
17
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 ndash 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 32)
Slika 32 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
18
korisnika nakon što se došlo do posljednjeg prijatelja na listi sve dok se ne doĎe i do
posljednjeg korisnika na listi
312 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 (33 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
(32 Baza podataka MySQL)
313 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 31)
19
Tablica 31 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
314 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 33)
Slika 33 Izbornik aplikacije s listama prijatelja
20
32 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 ndash is_friend
i users (Slika 34 i Slika 35)
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 ndash Offline 1 ndash Invisible
2 ndash Busy 3 ndash Online) Stupac Access_token sadrži ključ više razine za Facebook-
autorizaciju korištene za dobavljanje liste prijatelja koju je klijent poslao središnjem
poslužitelju u svom inicijalnom javljanju (33 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 ndash što nije išlo
u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend
Slika 34 Tablica users u bazi podataka
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
17
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 ndash 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 32)
Slika 32 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
18
korisnika nakon što se došlo do posljednjeg prijatelja na listi sve dok se ne doĎe i do
posljednjeg korisnika na listi
312 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 (33 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
(32 Baza podataka MySQL)
313 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 31)
19
Tablica 31 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
314 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 33)
Slika 33 Izbornik aplikacije s listama prijatelja
20
32 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 ndash is_friend
i users (Slika 34 i Slika 35)
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 ndash Offline 1 ndash Invisible
2 ndash Busy 3 ndash Online) Stupac Access_token sadrži ključ više razine za Facebook-
autorizaciju korištene za dobavljanje liste prijatelja koju je klijent poslao središnjem
poslužitelju u svom inicijalnom javljanju (33 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 ndash što nije išlo
u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend
Slika 34 Tablica users u bazi podataka
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
18
korisnika nakon što se došlo do posljednjeg prijatelja na listi sve dok se ne doĎe i do
posljednjeg korisnika na listi
312 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 (33 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
(32 Baza podataka MySQL)
313 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 31)
19
Tablica 31 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
314 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 33)
Slika 33 Izbornik aplikacije s listama prijatelja
20
32 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 ndash is_friend
i users (Slika 34 i Slika 35)
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 ndash Offline 1 ndash Invisible
2 ndash Busy 3 ndash Online) Stupac Access_token sadrži ključ više razine za Facebook-
autorizaciju korištene za dobavljanje liste prijatelja koju je klijent poslao središnjem
poslužitelju u svom inicijalnom javljanju (33 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 ndash što nije išlo
u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend
Slika 34 Tablica users u bazi podataka
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
19
Tablica 31 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
314 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 33)
Slika 33 Izbornik aplikacije s listama prijatelja
20
32 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 ndash is_friend
i users (Slika 34 i Slika 35)
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 ndash Offline 1 ndash Invisible
2 ndash Busy 3 ndash Online) Stupac Access_token sadrži ključ više razine za Facebook-
autorizaciju korištene za dobavljanje liste prijatelja koju je klijent poslao središnjem
poslužitelju u svom inicijalnom javljanju (33 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 ndash što nije išlo
u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend
Slika 34 Tablica users u bazi podataka
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
20
32 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 ndash is_friend
i users (Slika 34 i Slika 35)
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 ndash Offline 1 ndash Invisible
2 ndash Busy 3 ndash Online) Stupac Access_token sadrži ključ više razine za Facebook-
autorizaciju korištene za dobavljanje liste prijatelja koju je klijent poslao središnjem
poslužitelju u svom inicijalnom javljanju (33 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 ndash što nije išlo
u prilog poslužiteljski-orijentiranom sustavu kakav je Bfriend
Slika 34 Tablica users u bazi podataka
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
21
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 35 Tablica is_friend u bazi podataka
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
22
Naravno kao što je vidljivo za tablicu users (Slika 34) 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 (3NF) jer zadovoljavaju
pravila prve druge i treće normalne forme [17]
33 Facebook Graph API
Facebook Graph API je korišten za potrebe dohvaćanja liste prijatelja svakog korisnika
aplikacije Bfriend u bazi podataka (312 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 httpdevelopersfacebookcomdocsreferenceapi [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
httpsgraphfacebookcom 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
httpsgraphfacebookcomplatform
httpsgraphfacebookcom19292868552
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
23
Rezultat upita stiže kao odgovor u obliku JSON objekata a izgleda ovako
id 19292868552
name Facebook Platform
picture httpprofileakfbcdnnethprofile-ak-
snc4211160_19292868552_1855422_sjpg
link httpswwwfacebookcomplatform
category Productservice
likes 2032652
website httpdevelopersfacebookcom
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
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
httpgraphfacebookcom100002249592566
id 100002249592566
name Vanja Smailoviu0107
first_name Vanja
last_name Smailoviu0107
gender male
locale en_US
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
Ispis 31 Rezultat dobiven sa Facebook-poslužitelja
Ispis 32 Rezultat dobiven sa Facebook-poslužitelja
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
24
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 201 [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 36)
Slika 36 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
httpsgraphfacebookcomfacebook_idfriendsaccess_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 httpoauthnet2
2httpsgraphfacebookcom100002249592566friendsaccess_token=128922667179680|e67ac9ecab9ad488
68c320f1-100002249592566|_vEfvJz_A7zT3wy-fGTedC4W0uQ
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
25
data [
name Igor Hevu010duk
id 593634683
name Matija u0160ulc
id 637755955
name Una Smailoviu0107
id 638386889
name Domagoj Rukavina
id 676559712
name Allan Hammershu00f8j
id 1012557509
name Kruno Dropuu010diu0107
id 1013389622
name Anes Jakupovic
id 1657610630
]
Gorenavedeni podaci su lista prijatelja korisnika dobiveni koristeći Facebook Graph API i
potrebnu razinu autorizacije nužnu za cjelovit rad aplikacije
Ispis 33 Rezultat dobiven sa Facebook-poslužitelja
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
26
34 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 37)
Slika 37 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 38)
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
27
Slika 38 Primjer XML-dokumenta za slanje Xtify-poslužitelju
Mogućnosti za sadržaj notifikacije su neizmjerne a uslugu koriste tvrtke kao što su
DailyCandy1 OrganizedWisdom
2 Playboy
3 Go800
4 i dr najčešće za proširenje svojih
usluga Primjer notifikacije vidljiv je na sljedećoj slici (Slika 39)
Slika 39 Primjeri notifikacija
1 httpwwwdailycandycomall-cities
2 httporganizedwisdomcomHome
3 httpwwwplayboycom
4 httpgo800corpcom
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
28
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
wwwxtifycom) a opcija Share služi dijeljenju sadržaja notifikacije (primjerice putem
SMS-a elektroničke pošte i slično)
Slika 310 Notifikacija aplikacije Bfriend
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
29
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 ndash korisnost aplikacije i osnovna funkcionalnost te lokacijska bliskost dvoje
korisnika
Scenarij 2 ndash stanje dostupnosti Invisible i lokacijska bliskost više korisnika
Scenarij 3 ndash stanje dostupnosti Busy
Scenarij 4 ndash ignoriranje korisnika (prijatelja s liste)
Scenarij 5 ndash 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 41)
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 Facebook-
posluž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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
30
Slika 41 Osnovni UML-dijagram slučaja uporabe
41 Scenarij 1 ndash osnovna funkcionalnost
Izidor je kupio svoj novi mobitel i želi probati novu aplikaciju ndash 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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
31
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 42) 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 42 Dijagram prvog scenarija ndash osnovna funkcionalnost
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
32
42 Scenarij 2 ndash 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 ndash 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 43)
Slika 43 Dijagram drugog scenarija ndash 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 ndash ne opterećuje se korisnika bespotrebno S druge strane ovo
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
33
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
43 Scenarij 3 ndash 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 ndash svim njegovim prijateljima u blizini i dalje stižu
obavijesti na njihove mobitele Ekrem je ovime postigao što je htio ndash 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 (42 Scenarij 2
ndash 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
44 Scenarij 4 ndash 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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
34
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
45 Scenarij 5 ndash 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 ndash 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 44)
Slika 44 Dijagram petog scenarija ndash napredna funkcionalnost
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
35
46 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 ndash
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
36
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 iili 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 Facebook-
prijatelji
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 (311 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 ndash
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
37
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 (314 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 (311 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 ndash 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 (33 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 (42 Scenarij 2 ndash 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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
38
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 ndash 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 ndash 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 ndash 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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
39
Literatura
[1] M Danah Boyd and B Nicole Ellison Social Network Sites Definition History and
Scholarship
[2] (2011 svibanj) socialbakerscom [Online] httpwwwsocialbakerscomfacebook-
statistics
[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]
httpgooglecodeblogspotcom201005with-new-google-latitude-api-buildhtml
[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] W3Techscom (2011 lipanj) Usage statistics and market share of GlassFish for
websites [Online] httpw3techscomtechnologiesdetailsws-glassfishallall
[14] Ahmed Taha (2011 veljača) Ahmed Taha Home Page [Online]
httpsitesgooglecomsiteahmdalitaha2latlonglib
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
40
[15] T Vincenty SURVEY REVIEW vol XXIII no 176 travanj 1975
[16] Movable Type Scripts (2011 ožujak) GIS FAQ Q51 Great circle distance between 2
points [Online] httpwwwmovable-typecoukscriptsgis-faq-51html
[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]
httpdevelopersfacebookcomdocsreferenceapi
[19] Network Working Group The OAuth 20 Authorization Protocol
[20] programmableweb (2011 veljača) Xtify API [Online]
httpwwwprogrammablewebcomapixtify-2
[21] Xtify Inc (2011 veljača) Push Notification API [Online]
httpconsolextifycompush-notifications-web-service
[22] Xtify Inc (2011 veljača) Smart Notifications for Your Smartphone Application -
Platform Overview [Online] httpwwwxtifycomplatform-overview
[23] GeoNamesorg (2011 ožujak) Reverse Geocoding Webservices [Online]
httpwwwgeonamesorgexportreverse-geocodinghtml
[24] Google Inc (2011 travanj) Google Maps JavaScript API V3 (Google Code) [Online]
httpcodegooglecomapismapsdocumentationjavascript
[25] Eclipse (2011 lipanj) Eclipse Downloads [Online]
httpwwweclipseorgdownloads
[26] Oracle (2011 lipanj) Java Downloads [Online]
httpwwworaclecomtechnetworkjavajavaeedownloadsindexhtml
[27] Oracle (2011 lipanj) GlassFish Get Started [Online]
httpglassfishjavanetpublicgetstartedhtml
[28] MySQL (2011 lipanj) MySQL Downloads (Generally Available) [Online]
httpwwwmysqlcomdownloads
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
41
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 ndash 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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
42
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 ndash they provide ways of developing new social
relationships This approach is neccessary in order to establish temporary social
relationships (ie 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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
43
Privitak
A Implementacija entiteta
Neke od entiteta prikazanih na slici (Slika 22) 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 gt 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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
44
C Instalacija središnjeg posluţitelja
Za potrebe ovog rada poslužiteljska strana koristi
radnu okolinu Eclipse Helios (Service Release 2) [25]
Java JDK 16 (uključen u paketu Java EE 6 SDK) [26]
središnji poslužitelj GlassFish (verzija 31 build 43) [27]
bazu podataka MySQL (verzija 5111 Community Server) i njoj pripadajući konektor
za programski jezik Java (mysql-connector-java-5115-binjar) [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 gt
Build Path gt Java gt Classpath Variables treba podesiti kao na slici (Slika uputa 1)
Slika uputa 1 Opcija Classpath Variables i njezino podešavanje
Nadalje opcija Preferences gt Server gt 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)
45
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
46
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
45
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
46
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
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