50
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.

KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

Embed Size (px)

Citation preview

Page 1: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Google

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

Page 2: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Google

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

Page 3: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Google

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

Page 4: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Google

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

Page 5: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Google

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

Page 6: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Google

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

Page 7: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Google

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

Page 8: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Google

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

Page 9: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Google

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

Page 10: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Google

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

Page 11: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Google

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

Page 12: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Google

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

Page 13: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 14: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 15: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 16: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 17: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 18: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 19: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 20: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 21: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 22: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 23: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 24: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 25: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 26: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 27: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 28: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 29: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 30: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 31: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 32: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 33: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 34: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 35: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 36: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 37: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 38: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 39: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 40: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 41: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 42: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 43: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 44: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 45: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 46: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 47: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 48: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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

Page 49: KOMUNIKACIJA U AD-HOC DRUŠTVENIM MREŢAMAwiki.tel.fer.hr/mediawiki/images/2/23/Diplomski_Rad_-_Vanja... · Povijest društvenih mreža ... Gowalla ili Brightkite, ali njen osnovni

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