Download as pdf or txt
Download as pdf or txt
You are on page 1of 49

SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

DIPLOMSKI RAD br. 603

KONTEKSTNE INFORMACIJE
POKRETNOG KORISNIKA USLUGA
DRUŠTVENOG UMREŢAVANJA
Dejan Vasko

Zagreb, lipanj 2013.


Original ZADATAK
Sadrţaj

Uvod ............................................................................................................................................ 1

1. Kontekstno-svjesne usluge ................................................................................................ 2

1.1. Kontekst korisnika ..................................................................................................... 2

1.2. Vrste konteksta korisnika .......................................................................................... 3

1.3. Prikupljanje podataka o kontekstu korisnika ........................................................... 4

1.3.1. Prikupljanje podataka ruĉnim unosom korisnika ............................................ 5

1.3.2. Prikupljanje podataka pomoću senzora na pokretnom ureĊaju ...................... 5

1.3.3. Prikupljanje podataka pomoću vanjskih resursa ............................................. 6

2. Društvene mreţe ................................................................................................................ 7

2.1. Evolucija društvenih mreţa ....................................................................................... 7

2.2. Kontekst u društvenim mreţama .............................................................................. 8

2.3. Ad-hoc društvene mreţe ......................................................................................... 10

3. Programska izvedba sustava Bfriend .............................................................................. 12

3.1. Arhitektura sustava .................................................................................................. 12

3.2. Klijentska Android aplikacija na pokretnom ureĊaju............................................ 15

3.3. Središnji posluţitelj GlassFish ................................................................................ 20

3.3.1. Algoritam lokacijske bliskosti ........................................................................ 20

3.3.2. Algoritam osvjeţavanja liste prijatelja........................................................... 22

3.4. Baza podataka MySQL ........................................................................................... 22

3.5. Facebook i Google posluţitelj ................................................................................ 25

3.6. Push-posluţitelj Xtify .............................................................................................. 25

4. Evaluacija ......................................................................................................................... 28

4.1. Evaluacija sustava Bfriend ...................................................................................... 28


4.2. Mjerenja parametara za evaluaciju sustava Bfriend .............................................. 28

4.3. Rezultati evaluacije sustava Bfriend ...................................................................... 29

Zakljuĉak .................................................................................................................................. 30

Literatura ................................................................................................................................... 31

Saţetak ...................................................................................................................................... 33

Summary ................................................................................................................................... 34

Privitak A: Upute za pokretanje sustava Bfriend ................................................................... 35

Privitak B: Upute za korištenje Bfriend Android aplikacije. ................................................ 41


Uvod

Današnji pokretni ureĊaji sve brţe poprimaju ulogu središnjih raĉunalnih i


komunikacijskih ureĊaja koje korisnici veći dio vremena drţe uz sebe. Njihova evolucija
omogućila je ugradnju razliĉitih senzora koji prikupljaju podatke o okruţju i odnosu s
njim. Na taj naĉin otkriva se kontekst u kojem se i sam korisnik nalazi.

Informacije o kontekstu korisnika gotovo uvijek su namijenjene za pokretne ureĊaje i


zanimljive su iz više razloga. Jedan od osnovnih pogodnosti je pruţanje usluge korisniku
koja mu najviše odgovara u odreĊenom trenutku i mjestu. Ovako unaprijeĊeni pokretni
ureĊaji koriste se i za praćenje sloţenijih parametara okruţja korisnika (zvuĉno okruţje,
naĉin kretanja korisnika i sl.) iz kojih je moguće predvidjeti njegove interese. Na temelju
tih informacija, korisniku je moguće pruţiti informacije o sadrţaju koji bi ga mogao
zanimati.

Diplomski rad istraţuje već postojeći sustav Bfriend koji se temelji na kontekstnim
informacija koji su razvili studenti Fakulteta elektrotehnike i raĉunarstava na Zavodu za
telekomunikacije. Kao dodatan zadatak ovaj rad treba razviti i implementirati dodatne
funkcionalnosti u već postojeći sustav Bfriend koji uz pomoć Android aplikacije odreĊuje
lokaciju korisnika i zatim notifikacijama obavještava korisnika kada mu je jedan ili više
prijatelja u blizini.

Prvo poglavlje govori o kontekstu i naĉinu prikupljanja kontekstnih informacija, drugo


poglavlje opisuje društvene mreţe i njihovu evoluciju. Detaljna programska izvedba i
implementacija sustava Bfriend je opisana u poglavlju tri dok zadnje ĉetvrto poglavlje
opisuje evaluaciju sustava Bfriend.

1
1. Kontekstno-svjesne usluge

Pametni pokretni ureĊaji (engl. smartphone) koje danas nalazimo na trţištu dolaze s
ugraĊenim senzorima. Naravno kako vrijeme odmiĉe ureĊaji poprimaju sve bolje i
kvalitetnije senzore. Neki od standardnih senzora su: akcelerometar, ţiroskop, kompas, itd.
Senzori omogućuju razvijatelju aplikacija odreĊivanje konteksta korisnika, a samim time
mogućnost pruţanja usluge zasnovanih na kontekstu korisnika.

1.1. Kontekst korisnika

Kontekst korisnika definira se kao skup informacija koje opisuju okruţje u kojem se neki
entitet nalazi. Pod entitetom smatramo osobu, mjesto ili bilo koji objekt koji ima odreĊenu
vaţnost u interakciji, ukljuĉujući i samog korisnika i aplikaciju [1]. Kontekstne informacije
omogućavaju prepoznavanje uvjeta u kojima se korisnik trenutno nalazi i njegovih potreba.
Na temelju toga, korisniku je moguće pruţiti odgovarajuće usluge koje su najbolje
prilagoĊene upravo situaciji u kojoj se on nalazi. Takve usluge nazivaju se kontekstno-
svjesne usluge (engl. context-aware services) [2].

Slika 1.1 prikazuje redoslijed operacija kontekstno-svjesne usluge pomoću kojih će usluga
dobiti relevantne podatke iz okruţja. Prvo pokretni ureĊaj prikuplja podatke iz okruţja,
pomoću razliĉitih senzora (prikupljanje). Prikupljeni podaci potom ulaze u proces
proĉišćavanja u kojem se odreĊuje koji su podaci od interesa dok se neki od njih mogu
odbaciti (pročišćavanje). Proĉišćeni podaci ulaze u proces analize u kojoj se iz njih
modelira kontekst (analiza). Nakon toga, podaci se obraĊuju (obrada) i spremni su za
korištenje u kontekstno-svjesnim aplikacijama (pohrana).

2
Slika 1.1 Ţivotni ciklus kontekstno-svjesne usluge

1.2. Vrste konteksta korisnika

Kontekst korisnika moţemo promatrati iz dva aspekta:

 Ljudski ĉimbenici - informacije dolaze od samih korisnika ili društvenog okruţja


samog korisnika;
 Okruţje - informacije dolaze iz okruţenja u kojem se korisnik trenutno nalazi.
Informacija ove vrste ima puno ali ih moţemo svrstati u tri veće kategorije:

- Lokacija ili trenutna pozicija korisnika;

- Uvjeti kao što su osvjetljenje, glasnoća, itd;

- Infrastruktura odnosno komunikacija izmeĊu ostalih raĉunala.

3
Kod definiranje odreĊenje usluge nije potrebno uzimati u obzir sve vrste konteksta već je
dosta uzeti one koji će u toj situaciji što toĉnije odrediti korisnikove potrebe i ţelje. Slika
1.2 prikazuje taksonomiju konteksta.

Slika 1.2 Taksonomija konteksta korisnika

1.3. Prikupljanje podataka o kontekstu korisnika

Naĉin prikupljanja podataka o kontekstu korisnika dijeli se u tri glavne kategorije:

 Ruĉni unos korisnika;

 Senzori na pokretnom ureĊaju;

 Vanjskim resursima.

4
1.3.1. Prikupljanje podataka ručnim unosom korisnika

Ruĉni unos podataka je klasiĉan pristup na puno današnjih aplikacija. Kao primjer jedne
takve je aplikacija za pristup društvenom mreţi Facebook. Kada korisnik instalira
aplikaciju Facebook ona ga traţi njegove osnovne podatke (ime, prezime, adresu
elektroniĉke pošte, itd.). Ovaj pristup prikupljanja podataka je i najtoĉniji jer korisnik
unosi toĉne podatke dok kod ostala dva pristupa aplikacije mogu dobiti netoĉne podatke te
tako krivo interpretirati kontekst korisnika.

1.3.2. Prikupljanje podataka pomoću senzora na pokretnom


ureĎaju

Prikupljanje podataka pomoću senzora je praktiĉno rješenje za korisnike zato što od njih
aplikacija ne zahtijeva nikakav unos nego na temelju opaţanja senzora moţe zakljuĉiti u
kakvoj se situaciji nalazi korisnik [3]. Neki od najzastupljenijih senzora koji se nalaze na
današnjim pokretnim ureĊajima su:

 senzor za osvjetljenje prostora (engl. ambient light);

 senzor za prepoznavanje blizine objekta (engl. proximity);

 prednja i straţnja kamera (engl. camera);

 prijemnik za GPS (Global Positioning System);

 akcelerometar (engl. accelerometer);

 mikrofon (engl. microphone);

 kompas (engl. compass);

 ţiroskop (engl. gyroscope).

Primjer kada pokretni ureĊaji koriste senzor za blizinu je kada korisnik razgovara preko
pokretnog ureĊaja. UreĊaj u trenutku kada korisnik pribliţi pokretni ureĊaj blizu lica
iskljuĉi osvijetljene i onemogući korištenje dodirnog ekrana (engl. touch screen). Što se
tiĉe senzora za osvijetljene, većina ureĊaja ima funkciju automatskog namještanja svjetline
ekrana (engl. auto brightness) u skladu s vanjskim uvjetima.

5
Senzor GPS je glavni senzor na pokretnom ureĊaju za odreĊivanje lokacije ureĊaja. Neki
od primjera lokacijskih usluga koje koriste senzor GPS su navigacija, pokretne društvene
mreţe, itd. Kompas i ţiroskop predstavljaju proširenje lokacijskog prepoznavanja i pruţaju
ureĊaju mogućnost da utvrdi dodatne lokacijske informacije (npr. smjer i orijentaciju). Još
jedan senzor koji se koristi uglavnom u svrhe lokacijskog konteksta je akcelerometar,
pomoću njega moguće je praćenje brzine kretanja korisnika i na temelju toga zakljuĉivati
koju radnju izvršava korisnik.

Sljedeća dva senzora su mikrofon i kamera. Oni su postali standarda oprema za svaki
pokretni ureĊaj i pomoću njih se mogu saznati informacije o okolini u kojoj se korisnik
nalazi. Ĉesti naĉin uporabe mikrofona je snimanje zvuĉnih signala iz okoline i na temelju
analize signala zakljuĉiti u kakvoj se toĉno okolini nalazi korisnik (predavanje, šetnja,
voţnja automobilom, itd.).

Kod izrade kontekstno svjesnih usluga za pokretne ureĊaje gotovo uvijek se kombiniraju
neki od gore navedenih senzora tj. informacije prikupljanje iz senzora radi toĉnijeg
odreĊivanja konteksta korisnika.

1.3.3. Prikupljanje podataka pomoću vanjskih resursa

Prikupljanje podataka od strane vanjskih resursa najĉešće ukljuĉuje prikupljanje podataka s


web-posluţitelja ili okolnih ureĊaja koji podrţavaju tehnologije za umreţavanje na malim
udaljenostima kao što je Bluetooth. Ovaj oblik prikupljanja podataka moţe se pokazati na
primjeru aplikacije za prognozu vremena. Aplikacija na temelju lokacijskih podataka
senzora GPS-a s posluţitelja dohvaća informacije o vremenu za toĉno odreĊeno podruĉje u
kojem se korisnik trenutno nalazi.

6
2. Društvene mreţe

Poglavlje zapoĉinje pregledom razvoja društvenih mreţa još od razdoblja kada Internet
nije bio niti blizu današnje rasprostranjenosti. Pregled razvoja društvenih mreţa će
posluţiti kao uvod u moderne društvene mreţe velike popularnosti. Kraj poglavlja govori o
ad-hoc društvenim mreţama i usporeĊuje neke od poznatijih sa sustavom Bfriend.

2.1. Evolucija društvenih mreţa

Iako su društvene mreţe postale globalno popularne tek relativno nedavno, ideja o njima
postojala je još u kasnim 70-im godina prošlog stoljeća, dok su raĉunala bila skupocjena i
relativno slabih performansi. Tadašnji su napredniji korisnici raĉunala imali lošu društvenu
reputaciju, smatrani su nedruţeljubivima. Pojava BBS-a (Bulletin Board System) pomalo je
poĉela ispravljati takav stav ljudi jer je u sebi ukljuĉivala društvenu komponentu. Radilo se
o usluzi koja je korisnicima nudila preuzimanje sadrţaja s posluţitelja te komunikaciju
porukama izmeĊu korisnika. Pojava BBS-a nije bila tek sporadiĉna, usluga je korištena od
80-ih godina prošlog stoljeća pa sve do rasta Interneta u 90-im godinama. BBS nije bila
jedina usluga s društvenom interakcijom prije rasta Interneta. Krajem 80-ih godina u javnu
je uporabu došao CompuServe. CompuServe je nudio korisnicima pristup aktualnim
vijestima i dogaĊanjima. Korisnici su mogli s tisućama drugih korisnika sudjelovati na
forumima s tada aktualnim temama. CompuServe je bio izuzetno popularan te se pokazao
kao prethodnik danas poznate komunikacije preko foruma. Pored BBS-a i CompuServea
postojao je još jedan prethodnik danas poznatim društvenim mreţama. Bila je to mreţa
korisnika AOL-a (American Online) koja se smatra preteĉom WWW-a. Korisnici mreţe
mogli su pregledavati i pretraţivati profile ostalih korisnika koji su sadrţavali osnovne
informacije o njima. Zbog tih mogućnosti, smatra se kako je AOL bio pravi prethodnik
današnjim društvenim mreţama. Razdoblje globalnog rasta Interneta iznjedrilo je nekoliko
interaktivnih usluga poput Yahoove online trgovine te Amazonove prodaje knjiga, ali i
web-stranice za koje bi se moglo reći da odgovaraju definiciji modernih društvenih mreţa.
Prva od njih je web-stranica Classmates.com koja je ponovo povezivala davno izgubljene
veze meĊu prijateljima iz školskih dana. Profili korisnika nisu postojali, ali mogućnost

7
pronalaţenja prijatelja iz davnih dana dovela je do velike popularnosti stranice koja se je
odrţala sve do danas kada broji izmeĊu 10 i 100 milijuna registriranih korisnika.
SixDegrees.com druga je web-stranica iz tog vremena koja moţda više nego
Classmates.com odgovara modernim društvenim mreţama. Radi se o stranici koja je
korisnicima omogućavala stvaranje korisniĉkih profila, organiziranje grupa te pretraţivanje
profila. Za razliku od Classmates.com, ova stranica nije doţivjela ni pribliţno sliĉnu
popularnost koja je dovela do gašenja stranice krajem drugog tisućljeća [4].

Nedugo zatim (2003. godine), na scenu dolazi mreţa poslovnih korisnika LinkedIn koja
danas broji više od 100 milijuna korisnika. U isto vrijeme lansiran je i MySpace koji je
drţao primat u broju korisnika meĊu društvenim mreţama sve do pojave društvenih mreţa
Facebook i Twitter. U vrijeme dok je MySpace bio na vrhuncu kupljen je za pribliţno pola
milijarde dolara te se smatra jednom od najlošijih investicija tvrtke News Corp što
dovoljno govori o gotovo trenutnoj popularnosti koju su Facebook, ali i Twitter stekli te
postali sveprisutni na Internetu. Facebook je nastao 2004. godine te je u poĉetku zamišljen
kao mreţa studenata sveuĉilišta na Harvardu. Dvije godine potom postao je javno dostupan
te globalno popularan. Danas broji preko 700 milijuna aktivnih korisnika, od kojih se 50%
njih svakog dana prijavljuje na stranicu. Sve veća popularnost pametnih telefona utjecala je
na pojavu lokacijskih društvenih mreţa. Danas najpopularnije lokacijske društvene mreţe
su Foursquare i Gowalla koje svoj rad temelje na umreţavanju lokacijski bliskih
korisnika.

2.2. Kontekst u društvenim mreţama

Dominantan kontekst u većini društvenih mreţa je društveni kontekst, gdje se korisnici


povezuju (umreţavaju) na temelju zajedniĉkih interesa ili poznanstava u stvarnosti. No
osim društvenog konteksta, sve veću pozornosti privlaĉi lokacijski kontekst. Lokacijski
kontekst doprinosi unaprjeĊenju usluge na naĉin da su isporuĉene informacije vezane samo
uz trenutnu lokaciju što korisniku moţe uĉiniti informaciju vrijednijom. Pojavom pametnih
telefona s ugraĊenim mehanizmima za otkrivanje lokacije, ona je postala lako dostupna za
primjenu, stoga ne ĉudi sve veći broj usluga koje su „svjesne“ okruţenja u kojem se
koriste. Lokacijski se kontekst sve više primjenjuje i u društvenim mreţama, tako postoje
lokacijske društvene mreţe za ĉiju je funkcionalnost primarno bitna trenutna lokacija u

8
kojoj se korisnik nalazi. Trenutno su najpopularnije dvije takve društvene mreţe:
Foursquare [5] i Gowalla [6]. Foursquare je društvena mreţa kojoj se pristupa preko
aplikacije za pokretne ureĊaje. Društvena mreţa Foursquare u javnoj je upotrebi od oţujka
2009. godine. Registrirani korisnici Foursquarea objavljuju (engl. check in) svoje trenutne
lokacije. Ĉestim objavljivanjem na istoj lokaciji stjeĉu nagrade koje im daju odreĊen status
nad tom lokacijom ili mogućnost osvajanja promotivnih nagrada kompanija (npr. osoba će
biti Major nekog mjesta ako se najviše puta prijavila u tom mjestu ili će kad skupi dovoljan
broj check-inova ostvariti popust na asortiman reklamirane kompanije). Broj korisnika
Foursquarea dosegao je 30 milijuna u sijeĉnju 2013. godine, zanimljiv je podatak o
godišnjem rastu korisnika od impresivnih 3400%. Tek nakon izlaska na trţište, Foursquare
su mogli koristiti samo korisnici u 100 gradova, a od 2010. godine korisnici ga u cijelom
svijetu mogu koristiti.

Uz Foursquare, usporedno se razvija još jedna lokacijska društvena mreţa, Gowalla.


Društvena mreţa Gowalla idejno je gotovo identiĉna Foursquareu dok su male razliĉitosti
prisutne u samom korištenju (podrţavani ureĊaji, lokacijska toĉnost, korisniĉko suĉelje,
upravljanje povezanostima). Relativno velik broj bugova u poĉetnim izdanjima aplikacije u
odnosu na Foursquare, ostavio je traga na broju korisnika Gowalle koji iznosi oko 600
tisuća. Obje su aplikacije integrirane s Facebookom i Twitterom što omogućuje dijeljenje
informacija meĊu prijateljima na tim mreţama. Osim Foursquarea i Gowalle nova usluga
društvene mreţe Facebook, Facebook Places [7] uvodi lokacijski kontekst i u tu društvenu
mreţu. Places omogućuje korisnicima:

 objavu i dijeljenje lokacijske informacije meĊu prijateljima;

 pregled prijatelja u blizini te interakciju s njima;

 oznaĉavanje (engl. tag) prijatelja s kojima se korisnik trenutno nalazi na nekoj


lokaciji;

 komentiranje objavljene lokacije.

Korištenje Facebook Placesa vrlo je jednostavno. Ovisno o trenutnoj lokaciji, korisniku se


ponude obliţnja fiziĉka mjesta (poznate zgrade, ulice, itd.), a korisnik odabire ono njemu
najbliţe. Navedene mogućnosti Facebook Placesa omogućuju stvaranje privremene
umreţenosti koja je ovisna o trenutnoj lokaciji. U kontekstu društvenih mreţa radi se o ad-

9
hoc društvenoj umreţenosti lokacijski bliskih korisnika. Društvena komponenta ostvarena
je korištenjem već postojećeg društvenog grafa na Facebooku, dok je lokacijska
komponenta ostvarena prepoznavanjem trenutne lokacije. Općenitije govoreći, u svakoj
ad-hoc društvenoj mreţi ove komponente ĉine okosnicu na koju se mogu nadograditi
proizvoljne znaĉajke s dodanom vrijednosti za korisnika.

2.3. Ad-hoc društvene mreţe

Ad-hoc društvena mreţa, privremena je mreţa korisnika koja se moţe ostvariti spontano
izmeĊu lokacijski bliskih korisnika [8]. Privremenost se ostvaruje praćenjem lokacije
korisnika koja ograniĉava trajanje umreţenosti. Društveni se kontekst ostvaruje iz
objavljenih podataka u profilima korisnika koji su bitan dio društvene mreţe jer je na njima
prisutna većina informacija koje korisnici izmjenjuju. Profili korisnika mogu biti preuzeti
sa stalnih društvenih mreţa (Facebook, Twitter), ali mogu i biti implementirani u sklopu
ad-hoc mreţe. Komunikacija u ad-hoc mreţama po definiciji podrazumijeva izravnu
komunikaciju izmeĊu korisnika koristeći za to pogodne protokole (npr. Bluetooth). Ovakav
je naĉin komunikacije ĉesto iznimno efikasan u smislu potrošnje mreţnih resursa te brzine
jer se komunikacija odvija izravno, bez dodatnih mreţnih ĉvorova. Kako bi se korisnicima
ad-hoc društvenih mreţa omogućila komunikacija, potrebni su korisniĉki profili na kojima
bi korisnici mogli pregledavati pristigle poruke ili odašiljati nove poruke. Ad-hoc mreţe
imaju još jednu bitnu znaĉajku, a to je stalna dostupnost usluge. Kako je već reĉeno,
komunikacija se odvija izravno te nije potrebna nikakva dodatna infrastruktura u mreţi. To
omogućuje dostupnost usluge i u okolini uništenoj prirodnim nepogodama kada je većina
komunikacijskih usluga uništena. Tablica 2.1 prikazuje razlike izmeĊu pojedinih ad-hoc
mreţa zajedno sa sustavom Bfriend.

10
Tablica 2.1 Razlike izmeĊu ad-hoc društvenih mreţa

Facebook
Razliĉitosti Foursquare Google Latitude Bfriend
Places

WiFi, GPS, WiFi, GPS,


Prikupljanje lokacije GPS GPS
3G/GSM 3G/GSM

Prijava/odjava u
Da Da Da Da
sustav

Korisniĉka stanja
Ne Ne Ne Da
dostupnosti

Obavještavanje
Ne Ne Ne Da
notifikacijama

Eksplicitni prikaz
Da Da Da Ne
lokacije

Personalizirana
Da Da Da Ne
usluga

11
3. Programska izvedba sustava Bfriend

Ad-hoc društvena mreţa Bfriend umreţava lokacijski bliske korisnike sa zajedniĉkim


interesom. Zajedniĉki je interes preuzet sa stalne društvene mreţe Facebook, toĉnije,
preuzeta je lista prijatelja osobe na toj društvenoj mreţi. Kod umreţavanja se u obzir uzima
i lokacijski kontekst, konkretno, korisnici će biti umreţeni ukoliko se nalaze unutar
definirane meĊusobne udaljenosti. Svaki od korisnika ove ad-hoc društvene mreţe dobit će
notifikaciju s imenima onih korisnika koji se nalaze na njegovoj listi prijatelja te su
dodatno unutar definirane meĊusobne udaljenosti. Osim preuzimanja postojećih
povezanosti s društvene mreţe Facebook moguće je preuzeti informacije i povezanosti s
društvene mreţe Google. U ovom će poglavlju najprije biti predstavljena arhitektura
implementirane ad-hoc društvene mreţe s općenitijim opisom funkcionalnosti svih entiteta
koji je ĉine. Nakon toga, rijeĉ će biti o konkretnoj implementaciji potrebnih entiteta u ad-
hoc društvenoj mreţi Bfriend.

3.1. Arhitektura sustava

Arhitektura sustava je prikazana Slikom 3.1 i sastoji se od sljedećih komponenti:

 Klijentska Android aplikacija za pokretne ureĊaje;

 Središnji posluţitelj GlassFish;

 Baza podataka MySQL;

 Xtify push-posluţitelj;

 Facebook posluţitelj;

 Google posluţitelj.

12
Slika 3.1 Arhitektura Bfriend sustava

Komunikacija izmeĊu središnjeg posluţitelja i klijentske aplikacije je jednosmjerna.


Korisnik moţe slati podatke posluţitelju, ali ne i obratno. Za potrebe slanja podataka
korisniku (toĉnije, obavijesti) koristi se vanjski push-posluţitelj u vlasništvu tvrtke Xtify.
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š dvije vaţne komponente sustava su
Facebook posluţitelj i Google posluţitelj. Obzirom da Facebook ima golem broj korisnika,

13
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. Dodatno je implementiran i Google posluţitelj
zato što jako veliki broj korisnika ima raĉun s Google domenom. Detaljan tijek
komunikacije unutra sustava su opisane u nastavku:

 interakcija 1: Korisnik se prijavljuje na stalnu društvenu mreţu Facebook ili


Google+, a kao odgovor dobiva identifikacijski parametar koji omogućuje pristup
informacijama o korisniku bez njegove aktivnosti;

 interakcija 2: Korisnik se prijavljuje na push-posluţitelj koji mu dodjeljuje


identifikacijski parametar. Korištenjem identifikacijskog parametra, push-
posluţitelj isporuĉuje poruku korisniku;

 interakcija 3: Klijent prema središnjem posluţitelju šalje identifikacijske parametre


prikupljene sa odabrane društvene mreţe i push-posluţitelja. Ti se parametri šalju
samo u inicijalnoj komunikaciji klijent-središnji posluţitelj, dok se kasnije šalje
samo trenutna lokacija korisnika;

 interakcija 4: Nakon što je središnji posluţitelj dobio sve identifikacijske


parametre, periodiĉki komunicira sa odabranom društvenom mreţom (interakcija 1
korisnik bira ili Facebook ili Google+) te će u ime korisnika dobavljati dopuštene
informacije iz njegovog društvenog grafa. Informacije se pohranjuju u bazu
podataka;

 interakcija 5: Dobivanje lokacije na klijentu korištenjem dostupnog davatelja


usluge – GSM (Global System for Mobile Communications) mreţa, GPS, WiFi
(Wireless Fidelity). Nakon svake promjene lokacije, ona se šalje središnjem
posluţitelju;

 interakcija 6: Središnji posluţitelj za svakog korisnika na temelju njegove lokacije


pronalazi ostale korisnike s kojima dijeli društveni i lokacijski kontekst;

 interakcija 7: Push-posluţitelju se šalju identifikacijski parametri korisnika kao i


odgovarajuća poruka za svakog od njih;

 interakcija 8: Push-posluţitelj prosljeĊuje poruku do korisnika.

Više detalja i opis na razini funkcionalnost sustava navedeni su u sljedećim pod


poglavljima.

14
3.2. Klijentska Android aplikacija na pokretnom ureĎaju

Android aplikacija koja je razvijena prije dvije godine trebala je biti izmijenjena zato što
dosta funkcionalnosti nije podrţavalo nove operacijske sustave Android (spajanje na
Facebook posluţitelj i Xtify posluţitelj). Prva izmjena koja će biti opisana je spajanje na
Facebook posluţitelj [9].

Komunikacija s društvenom mreţom Facebook u klijentskoj se aplikaciji obavlja


korištenjem Facebook Android SDK (Software Development Kit). Ispis 3.1 dio je kôda
klijentske aplikacije, a pokreće obrazac za prijavu korisnika na društvenu mreţu Facebook.

private void getUserFacebookID() {

mFacebook = new Facebook("375020219269796");

facebookRunner = new AsyncFacebookRunner(mFacebook);

mFacebook.authorize(this, PERMISSIONS, new


LoginRequestListener());
}

Ispis 3.1 Spajanje na Facebook mreţu s Android aplikacijom

Bitno je pojasniti nekoliko stvari iz gore navedenog kôda. Razred Facebook predstavlja
najvaţniji razred u komunikaciji s društvenom mreţom Facebook. U konstruktoru kao
parametar prima niz znakova koji identificira aplikaciju. Da bi se dobio spomenuti niz
znakova, potrebno je registrirati aplikaciju na društvenoj mreţi Facebook. Pomoću metode
authorize() pokreće se postupak prijave. Ta metoda prima tri parametra: trenutnu
aktivnost, zahtjeve za informacijama koje korisnik mora odobriti te instancu razreda
LoginRequestListener. Budući da središnji posluţitelj periodiĉki preuzima listu
prijatelja za sve korisnike ad-hoc mreţe, mora mu se omogućiti neograniĉeno trajanje
pristupne oznake koja se dobije prilikom prijave na Facebook. Tako je moguće
preuzimanje podataka o osobi bez njezine ikakve aktivnosti. Neograniĉeno trajanje
pristupne oznake postiţe se unosom odgovarajućeg parametra u polje znakova
PERMISSIONS što je prikazano u Ispis 3.2.

15
private static final String[] PERMISSIONS = new String[] {"offline_access" };

Ispis 3.2 Zahtjev za neograniĉenim trajanjem pristupne oznake

Prijava korisnika odvija se asinkrono, što znaĉi da aplikacija nije blokirana dok proces
prijave traje. Nakon pokretanja prijave, daljnji se kôd nesmetano moţe izvoditi, a odgovor
o uspješnosti prijave obradit će se callback pozivom instance razreda
LoginRequestListener. Navedeni razred implementira suĉelje DialogListener
koje je zaduţeno za obradu odgovora o uspješnosti prijave. Ako postupak prijave završi
uspješno, korisniku će biti dodjeljena pristupna oznaka neograniĉenog trajanja (zbog
poslanog parametra offline_access). Nakon dohvaćene pristupne oznake, potrebno je
dohvatiti podatke o prijavljenom korisniku koji će biti poslani središnjem posluţitelju u
svrhu jednoznaĉne identifikacije korisnika. Kao jednoznaĉni identifikator koristi se
facebook_id koji identificira korisnika društvene mreţe Facebook, a osim njega,
dohvaća se ime i prezime osobe. Dohvaćanje podataka o prijavljenom korisniku takoĊer je
asinkroni proces za kojeg se koristi instanca razreda AsyncFacebookRunner
deklarirana u Ispis 3.1.

Nova funkcionalnost koja je dodana u aplikaciju je komunikacije izmeĊu Bfriend Android


aplikacije i Google posluţitelja. Aplikacija poziva metodu iz Google SDK paketa koja je
prikazana sljedećim Ispis 3.3.

private class DownloadFilesTask extends AsyncTask<Void, Void, Void> {

protected Void doInBackground(Void... params) {

token = GoogleAuthUtil.getToken(Login.this,
mPlusClient.getAccountName(),"oauth2:" + Scopes.PLUS_LOGIN + " " +
Scopes.PLUS_PROFILE);

Ispis 3.3 Prijava korisnika na društvenu mreţu Google+

Ovdje se komunikacija odvija asinkrono sliĉno kao i kod Facebook komunikacije ali je
proces puno jednostavnije nego kod Facebook prijave. Prilikom poziva gore navedenog
kôda Google SDK će ponuditi korisniku prozor u koji moţe unijeti svoje podatke i
dohvatiti njegov profil koji će kasnije biti dostupni kroz razred mPlusClient. Nakon

16
toga potrebno je unutra aplikacije pozvati metodu koja će dohvatiti trenutno prijavljenog
korisnik:

Person account = mPlusClient.getCurrentPerson();

Ispis 3.4 Dohvaćanje referentnog korisnika s društvene mreţe Google+

Nakon ovog koraka moguće je pozivati niz metoda koje će vraćati podatke o korisniku:

account.getId();
account.getName();
account.getEmail();

Ispis 3.5 Dohvaćanje konkretnih podataka o korisniku s društvene mreţe Google+

Metoda account.getId() dohvaća jedinstveni identifikacijski broj korisnika na


društvenoj mreţi Google+, account.getName() dohvaća korisnikovo ime i prezime
dok account.getEmail() dohvaća korisnikov e-mail kako bi aplikacija mogla
usporediti jeli trenutno prijavljeni korisnik ujedno i referentan korisnik na pokretnom
ureĊaju. Slika 3.2 prikazuje ekran na Android aplikaciji koji omogućuje korisniku odabir
prijave putem Facebooka ili Googla.

17
Slika 3.2 Izbornik sustava Bfriend za prijavu na društvene mreţe Facebook ili Google

18
Slika 3.3 prikazuje kako toĉno izgledaju ekrani za prijavu na Facebook društvenu mreţu ili
Google+ društvenu mreţu.

a) b)

Slika 3.3 Prijava na društvenu mreţu a) Facebook ili b) Google+

Zadnja izmjena koja je napravljena na Android aplikaciji je implementacija nove


komunikacije sa posluţiteljem Xtify. Razlog tome je što je posluţitelj Xtify prešao s
Android XMPP (Extensible Messaging and Presence Protocol) komunikacije na Android
GCM (Google Cloud Messaging) komunikaciju. Kako je stara verzija aplikacije koristila
Android XMPP komunikaciju ona više nije radila i bilo je neophodno zamijeniti ju s novim
naĉinom komunikacije. Dodatno uz komunikaciju s posluţiteljem Xtify izmijenjen je i
Inbox dio unutra aplikacije koji je sluţio za spremanje pristiglih notifikacija. Inbox dio
aplikacije bio je usko povezan sa starim Xtify SDK paketom i iz tog razloga trebao je biti u
potpunosti zamijenjen novim Xtify SDK paketom. Detaljniji opis izmjena vezanih uz Xtify
posluţitelj će biti opisane u posebnom pod poglavlju.

19
3.3. Središnji posluţitelj GlassFish

GlassFish je poznati aplikacijski posluţitelj tvrtke Sun MicroSystems (u vlasništvu tvrtke


Oracle), napisan u programskom jeziku Java, besplatan za korištenje i otvorenog tipa koda.
Neke od internetskih stranica koje koriste aplikacijski posluţitelj GlassFish su Gameduell,
Computer.org i Online-Utility [10]. Odabran je zbog lakoće kojom se instalira i podešava
na raĉunalu.

3.3.1. Algoritam lokacijske bliskosti

Algoritam lokacijske bliskosti omogućuje periodiĉko raĉunanje udaljenosti izmeĊu


korisnika u bazi podataka i aplikacija Bfriend svoju osnovnu funkcionalnost duguje upravo
ovom algoritmu. Algoritam za programski jezik Java je implementirao Ahmed Taha i
upravo njegov paket LatLongLib.jar je korišten za potrebe aplikacijskog posluţitelja
[11]. 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 [12]. Vincentyeva formula aproksimira Zemlju kao elipsoid,
a ne kuglu, kao što je sluĉaj kod primjerice Haversine formule [13]. 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 (stanja dostupnosti su detaljno
objašnjena u poglavlju 3.4. Baza podataka MySQL), 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 gore navedenih

20
referentnih korisnika, poĉinje odabir prijatelja za koje će se raĉunati udaljenost. Za
poĉetak, algoritam zanemaruje prijatelje koji su ignorirani od strane referentnog korisnika
jer ih korisnik ne ţeli u notifikacijama. Nakon toga, algoritam teĉe istim slijedom kao i za
referentne korisnike – provjerava se stanje dostupnosti i postojanost vrijednosti koordinata
te ukoliko su navedeni uvjeti zadovoljeni, lista potencijalno lokacijski bliskih prijatelja je
gotova. Tek sada nastupa glavni dio algoritma, a to je samo raĉunanje udaljenosti.
Udaljenost se raĉuna izmeĊu svakog referentnog korisnika i svakog njegovog potencijalno
lokacijski bliskog prijatelja te ukoliko je ona manja od 100 metara, prijatelj se sprema u
listu za dostavljanje notifikacije. Iz ovoga je vidljivo da je moguća situacija u kojoj se više
prijatelja nalazi u blizini referentnog korisnika, ĉime će se svi takvi prijatelji spremiti i
dostaviti jednom jedinstvenom notifikacijom umjesto više njih, time ne ometajući
korisnika. Algoritam lokacijske bliskosti se iznova izvršava periodiĉki – svakih 60
sekundi, što je regulirano unutarnjim brojaĉem vremena u središnjem posluţitelju [14].

Testiranjem algoritma u stvarnom okruţenju primijetili su se nedostatci. Glavni nedostatak


algoritma je robusnost. Algoritam svakih 60 sekundi prolazi kroz cijelu list prijatelja i za
svaki par raĉuna udaljenost što nije problem za male sustave s malo korisnika, ali ako je
konaĉni cilj imati veliki i stabilan sustav onda ovo postaje biti jako veliki problem jer
posluţitelj nije u stanju izraĉunati sve udaljenosti za jako veliki broj parova u listi
prijatelja. Gore navedeni problem je riješen s raĉunanjem broj ciklusa koliko dugo
posluţitelj ne treba raĉunati udaljenosti za odreĊeni par. Primjer toga je ako su dva
prijatelju udaljena 50 kilometara onda posluţitelj nema potrebu raĉunati svakih 60 sekundi
udaljenost kada ni teorijski ne postoji šansa da se ta dva korisnika naĊu u krugu 100 metara
za 60 sekundi. Još jedino pitanje ostaje kako raĉunati broj ciklusa. Formula po kojoj se
raĉuna broj ciklusa:

(1)

Posluţitelj inicijalno odnosno prvi put uvijek raĉuna udaljenost i nakon izraĉuna
udaljenosti raĉuna broj ciklusa. Inicijalna udaljenost se dijeli s prosjeĉnom brzinom
korisnika ali pomnoţenom 2 puta zato što se korisnici mogu kretati jedan prema drugome.
Dodatno se iznos treba podijeliti sa 60 kako bi se dobio broj ciklusa (60 sekundi = 1

21
ciklus). Sada posluţitelj umjesto raĉunanja udaljenosti svakih 60 sekundi ima minimalni
broj ciklusa za koji ne treba raĉunati udaljenost. Posluţitelj prilikom prolaska kroz listu
prijatelja ako naiĊe na redak koji sadrţi vrijednost gdje je broj_ciklusa > 0 onda
treba samo smanjiti broj ciklusa za jedan i nastaviti na sljedeći redak te time uštedjeti jako
puno vremena u odnosu na zahtjevne operacije raĉunanja udaljenosti izmeĊu dva
korisnika. Kada posluţitelj doĊe do vrijednosti broj_ciklusa == 0 onda treba
raĉunati udaljenost izmeĊu dva korisnika zato što postoji mogućnost da su se korisnici
našli u krugu od 100 metara.

3.3.2. Algoritam osvjeţavanja liste prijatelja

Algoritam osvjeţavanja liste prijatelja aplikaciji Bfriend omogućuje rad s najnovijom


listom prijatelja korisnika u bazi podataka. Algoritam se izvršava periodiĉki, svakih 300
minuta (5 sati). Nakon pristupanja bazi podataka, središnji posluţitelj komunicira s
Facebook API-em (Application Programming Interface) ili Google API-em i za svakog
korisnika u bazi traţi listu njegovih prijatelja, na temelju Facebook ID-a ili Google ID-a
tog korisnika. Ako je komunikacija uspješno izvršena, Facebook posluţitelj ili Google
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 niti Google 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 poglavlju o bazi podataka
(3.4. Baza podataka MySQL).

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

22
i sama baza podataka sustava Bfriend. Baza podataka sastoji se od dvije tablice – is_friend
i users (Slika 3.4 i Slika 3.5).

Slika 3.4 Izgled tablice user

Slika 3.5 Izgled tablice is_friend

Tablica users sadrţi sve korisnike sustava sa stupcima: FB_ID (primarni kljuĉ), Xtify_ID,
Name, Loc_X, Loc_Y, Availability, Access_token, account, status i notifikacije. 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. Xtify_ID moţe poprimiti dvije vrste vrijednosti. Prva
vrijednost koju moţe poprimiti je jedinstveni identifikacijski broj na s Xtify posluţitelja
ako je registracija uspjela ili vrijednost ERROR ako registracija nije uspjela. Stupac Name
sadrţi ime i prezime korisnika, kako je zapisano u njegovom Facebook ili Google raĉunu.
Stupci Loc_X i Loc_Y sadrţe informacije o koordinatama na kojima se korisnik trenutno
nalazi. Stupac Availability oznaĉava stanje dostupnosti (0 – Offline, 1 – Invisible, 2 – Busy,
3 – Online). Tablica 3.1 detaljnije prikazuje što odreĊuje koja vrijednost unutras stupca.

23
Tablica 3.1 Moguća stanja korisnika

Stanje Korisnik vidljiv u mreţi Korisnik prima notifikacije

Online Da Da

Busy Da Ne

Invisible Ne Da

Offline Ne Ne

Stupac Access_token sadrţi kljuĉ više razine za Facebook autorizaciju ili Google
autorizaciju korištene za dobavljanje liste prijatelja, koju je klijent poslao središnjem
posluţitelju u svom inicijalnom javljanju. 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 ili Google posluţitelja), ali to rješenje je napušteno obzirom da je
previše opterećivalo klijenta, a vrlo malo posluţitelj – što nije išlo u prilog posluţiteljski-
orijentiranom sustavu kakav je Bfriend. Stupac account oznaĉava o kakvom se korisniku
radi (1 - Facebook korisnik, 2 - Google korisnik). Stupci status i notifikacije sluţe samo
kao brojaĉi za evaluaciju sustava o kojoj će biti više rijeĉi u nastavku ovo rada.

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 ili Googla; 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

24
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.
Zadnji stupac broj_ciklusa kao što je već prethodno bilo rijeĉi oznaĉava koliko dugo
Bfriend posluţitelj ne treba raĉunati udaljenost za odreĊeni par iz tablice.

Baza podataka, tj. njene dvije tablice, su u trećoj normalnoj formi (3.NF), jer zadovoljavaju
pravila prve, druge i treće normalne forme [15].

3.5. Facebook i Google posluţitelj

Facebook i Google posluţitelj imaju dva vaţna zadatka u Bfriend sustavu. Prvi zadatak im
je da prilikom prijave korisnika putem Bfriend Android aplikacije autentificiraju korisnika
i time dopuste Bfriend aplikaciji pristup odabranoj društvenoj mreţi. Drugi zadatak ova
dva posluţitelja je vraćanje liste prijatelja kada to od njih zatraţi Bfriend posluţitelj. Kako
je već navedeno Bfriend posluţitelj periodiĉki svakih 5 minuta osvjeţava listu prijatelja.
Kako Bfriend posluţitelj ima u bazi podataka zapisan access_token, on pomoću njega
pristupa Facebook ili Google posluţitelju i od njih zahtjeva listu prijatelja za referentnog
korisnika i zatim na temelju liste prijatelja samostalno u bazi podataka spaja referentnog
korisnika s njegovim prijateljima na odabranoj društvenoj mreţi.

3.6. Push-posluţitelj Xtify

Xtify Push API je korišten za dostavljanje notifikacije korisnicima [16] [17]. Razvila ga je
tvrtka Xtify, za pristup svojoj platformi za dostavljanje notifikacija koja trenutno podrţava
operacijske sustave iOS, Android i Blackberry.

Pristup Xtify push-posluţitelju je trebao biti u potpunosti promijenjen zato što je


kompanija Xtify 1.5.2013. godine odluĉila u potpunosti napustiti komunikaciju putem
Android XMPP koja je bila implementirana u prethodnoj verziji Bfriend Android
aplikacije. Stoga je u Bfriend aplikaciju implementira nova komunikacija preka Xtify

25
push-posluţitelju putem Android GCM-a. Dodatno Inbox dio Bfriend Android aplikaciju
koji je spremao pristigle notifikacije trebao je biti prilagoĊen novom formatu notifikacija.
Notifikacije u prethodnoj verziji su pristizale kao XML-objekt (Extensible Markup
Language) i sadrţavale su jednostavne poruke korisniku. Notifikacije u novoj verziji se
prenose preko mreţe kao JSON-objekt (JavaScript Object Notation) i sloţenog su tipa.
Mogu sadrţavati tekst, slike, video zapise, kartu s lokacijskom oznakom korisnika, itd.
Primjer kôda koji na Bfriend posluţitelju generira JSON notifikaciju prikazan je na
sljedećem Ispisu 3.4.

JSONObject content = new JSONObject();


content.put( "subject", "Bfriend");
content.put( "message", "Prijatelji: "+friendList+" se nalaze u
blizini");

JSONObject action = new JSONObject();


action.put("type","RICH");
content.put("action", action);

JSONObject rich = new JSONObject();


rich.put( "subject", "Bfriend");
rich.put( "message", "Prijatelji: "+friendList+" se nalaze u
blizini");

JSONObject action1 = new JSONObject();


action1.put("type","DEFAULT");
rich.put("action", action1);

content.put("rich", rich);

send.put( "content", content);

Ispis 3.4 Izrada JSON notifikacije

Mogućnosti za sadrţaj notifikacije su neizmjerne, a uslugu koriste tvrtke kao što su


DailyCandy, OrganizedWisdom, Go800 i dr., najĉešće za proširenje svojih usluga. S druge
strane, sadrţaj notifikacija u sustavu Bfriend je generiran dinamiĉki (broj primatelja je
promjenjiv i proizvoljan), a izgled notifikacija se moţe vidjeti na Slici 3.6. Slika prikazuje
dvije vrste notifikacija. Prva vrsta notifikacija preporuĉa korisniku prijatelja na temelju
broja zajedniĉkih prijatelja, dok druga vrsta notifikacija obavještava korisnika o njegovim
prijateljima koji se nalaze u blizini.

26
Slika 3.6 Inbox ekran unutra Bfriend aplikacije

27
4. Evaluacija

Cilj evaluacije projekta/programa je nepristrano ocjenjivanje uspješnosti specifiĉnog


projekta, odreĊivanje njegovih krajnjih ishoda i davanje zakljuĉaka i preporuka radi
poticanje promjena i daljnjih poboljšanja razvojnih intervencija. Prvenstveno ju treba
gledati kao na potencijalni poĉetak novog ciklusa i novog projekta.

4.1. Evaluacija sustava Bfriend

Evaluacija sustava je trajala 2 tjedna i ukljuĉivala je 20 korisnika. Iako je prvotno


planirano duţe vrijeme evaluacije i više korisnika zbog ograniĉenog vremena i krajnjeg
roka predaje diplomskog rada trajala je manje od planiranog s manje ukljuĉenih korisnika.
Trajanje evaluacije nije jako utjecalo na rezultate zato što su rezultati dali dosta zanimljive
informacije o sloţenim društvenim sustavima kao što je Bfriend. Dodatno se došlo do
zakljuĉaka koji su glavni problemi pri evaluaciji društvenog sustava Bfriend.

4.2. Mjerenja parametara za evaluaciju sustava Bfriend

Svaki korisnik je u prosjeku malo više od jednog puta promijenio stanje dostupnosti na
društvenoj mreţi Bfriend (Online, Invisible, Busy, Offline). Ako pogledamo broj primljenih
notifikacija onda je u prosjeku svaki korisnik primio nešto manje od jedne notifikacije.
Mjerenje se radilo pomoću posebnih brojaĉa u bazi podataka. Svaki korisnik je u bazi
podataka imao svoje brojaĉe koji su oznaĉavali broj promjena stanja dostupnosti i broj
primljenih notifikacija. Ove brojke nisu posebno „lijepe“, ali zato će u nastavku biti
objašnjeni problemi evaluacije i kako se evaluaciji ovakvog sustava u budućnosti moţe
bolje i kvalitetnije napraviti.

28
4.3. Rezultati evaluacije sustava Bfriend

Prvi problem pri evaluacije je skupiti dovoljno veliki broj korisnika u sustavu kako bi on
mogao dati kvalitetne rezultate. Broj korisnika pri kojem bi evaluacija dala korisne
rezultate prema procjeni bi trebao iznositi više od sto korisnika. Tako veliki broj korisnika
za jednu aplikaciju nije lako skupiti ako uzmemo u obzir i ĉinjenicu da se dosta ljudi još
uvijek plaši nepoznatih aplikacija koje uzimaju podatke s društvene mreţe onda ovo
postaje još teţi zadatak. Recimo da smo uspjeli skupiti u sustavu sto ili više korisnika i
riješili prvi problem sada dolazimo do drugog problema povezanosti korisnika. Drugi
problem govori o tome da nije dovoljno samo skupiti odreĊenu brojku korisnika već da
treba skupiti dovoljno veliki broj korisnika koji su povezani preko društvene mreţe
Facebook ili Google+. Jer ako u sustavu imamo jako veliki broj nepovezanih korisnika
onda taj isti sustav ne moţe generirati notifikacije i ne izvršava svoju primarnu funkciju, a
to je da korisnike obavještava kada mu se neki od prijatelja nalazi u blizini. Pretpostavimo
da smo uspjeli naći dovoljno veliki broj korisnika i uz to da su korisnici dosta povezani
putem društvene mreţe Facebook ili Google+ onda dolazimo do zadnjeg problema
evaluacije ovakvog sustava, a to je lokacijska pozicija korisnika. Sustav Bfriend moţe
sadrţavati puno korisnika i oni mogu biti jako povezani meĊusobno ali sustav i dalje neće
generirati notifikacije ako se ti korisnici ne kreću istim lokacijama, pod istim lokacijama se
mislim na krug od 100 metara zato što je to predefinirani radius u kojem sustav generira
notifikaciju.

Na kraju ako uzmemo u obzir sve uvjete koji trebaju biti ispunjeni (broj korisnika,
meĊusobna povezanost korisnika i kretanje istim lokacijama) onda dolazimo do zakljuĉka
da evaluaciju ovakvog sustava nije jednostavno izvesti i zahtjeva puno vremena kako bi se
sustav mogao razviti do odreĊenog broja korisnika kada je evaluaciju moguće kvalitetno
obaviti.

29
Zaključak

Podruĉje društvenih mreţa jedno je od najbrţe rastućih grana u podruĉju informacijskih i


komunikacijskih tehnologija. U svega nekoliko godina, društvene su mreţe ušle u
svakodnevni ţivot velikog broja ljudi. Razvoj tehnologija omogućio je unaprjeĊenje
društvenih mreţa obogaćivanjem naĉina povezivanja.

Diplomski rad istraţuje povezivanje korisnika temeljem društvenog konteksta te


zajedniĉke lokacije. Osim teoretskog opisa modela ad-hoc društvenog umreţavanja,
razvijena je ad-hoc društvena mreţa Bfriend koja umreţava lokacijski bliske korisnike
Facebooka koji mogu, ali ne moraju biti prijatelji na društvenoj mreţi Facebook.
Lokacijski se kontekst koristi u svrhu odreĊivanja trajanja umreţenosti izmeĊu korisnika
na naĉin da su korisnici umreţeni jedino kada su unutar definirane meĊusobne udaljenosti.

Iako korisnici ad-hoc društvene mreţe Bfriend mogu koristiti razliĉita stanja prisutnosti
kojima mogu utjecati na svoju privatnost, i dalje postoji mogućnost neţeljenog širenja
informacija. Pritom se prvenstveno misli na trenutnu lokaciju koja je dostupna relativno
nepoznatim osobama za korisnika. Unatoĉ tome, Bfriend je zanimljivo rješenje zbog
integriranosti s društvenom mreţom Facebook te zbog korištenja lokacijskog konteksta
koji je danas prisutan u svim popularnijim aplikacijama za pametne telefone.

Evaluacija sustava je pokazala da Android aplikacija nije bila korisna korisnicima koji nisu
ima puno prijatelja unutar sustava Bfriend zato što nisu dobivali notifikacije o prijateljima,
ali se pokazalo isto tako da je Android aplikacija bila izuzetno korisna korisnicima koji su
imali dosta prijatelja unutar sustava Bfriend zato što su mogli vidjeti kada im je neki od
njihovih prijatelja u blizini.

30
Literatura

[1] DEY A. K., ABOWD G. D., Towards a Better Understanding of Context and
Context-Awareness, Workshop on The What, Who, Where, When, and How of
Context-Awareness, Hag, Nizozemska, (2000).
[2] KORPIPÄÄ P., MÄNTYJÄRVI J., KELA J., KERÄNEN H., MALM E.,
Managing Context Information in Mobile Devices, VTT Technical Research
Centre of Finland, Finska, (2003).
[3] DEY A. K., ADOWD G. D., SALBER D., A Conceptual Framework and a Toolkit
for Supporting the Rapid Prototyping of Context-Aware Applications. Hum-
Comput Interact, 16;97-166, (2001).
[4] BOYD, D., ELLISON, N.: Social Network Sites: Definition, History, and
Scholarship. Journal of Computer-Mediated Communication 13(1), str. 210-230
(2007.)
[5] Foursquare, http://foursquare.com [posjećeno: 13.5.2013.]
[6] Gowalla, http://gowalla.com [posjećeno: 13.5.2013.]
[7] Facebook places, http://www.facebook.com/places [posjećeno: 13.5.2013.]
[8] PODOBNIK, V., LOVREK, I. : An Agent-based Platform for Ad-hoc Social
Networking. Lecture Notes in Computer Science 6682, str. 74-83, (2011).
[9] HEVĈUK, I.: "Ad-hoc društvena umreţenost lokacijski bliskih korisnika,"
Diplomski rad. Sveuĉilište u Zagrebu, Fakultet elektrohethnike i raĉunarstva, Zagreb
(Hrvatska), 2011.
[10] W3Techs.com. (2013, lipanj) Usage statistics and market share of GlassFish
for websites. [Online]. http://w3techs.com/technologies/details/ws-glassfish/all/all
[11] TAHA, A. (2013, travanj) Ahmed Taha Home Page. [Online].
http://sites.google.com/site/ahmdalitaha2/latlonglib
[12] T. VINCENTY, "Survey Review," vol. XXIII, no. 176, travanj 1975.
[13] Movable Type Scripts. (2013, travanj) GIS FAQ Q5.1: Great circle distance between
2 points. [Online]. http://www.movable-type.co.uk/scripts/gis-faq-5.1.html
[14] SMAILOVIĆ, V.: Komunikacija u ad-hoc društvenim mreţama. Diplomski rad.
Sveuĉilište u Zagrebu, Fakultet elektrohethnike i raĉunarstva, Zagreb (Hrvatska),
2011.

31
[15] "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.
[16] Programmableweb. (2013, travanj) Xtify API. [Online].
http://www.programmableweb.com/api/xtify-2
[17] Xtify Inc. (2013, travanj) Push Notification API. [Online].
http://console.xtify.com/push-notifications-web-service
[18] PODOBNIK, V.; LOVREK, I. : Transforming Social Networking from a Service to a
Platform: a Case Study of Ad-hoc Social Networking. Proceedings of the 13th
International Conference on Electronic Commerce (ICEC'11). Liverpool, UK: ACM,
2012. Article No. 8, 10 pages.
[19] PODOBNIK, V.; SMAILOVIĆ, V. : Bfriend: Context-Aware Ad-Hoc Social
Networking for Mobile Users. Proceedings of the 35th International Convention on
Information and Communication Technology, Electronics and Microelectronics
(MIPRO 2012). Rijeka, Croatia : Croatian Society for Information and
Communication Technology, Electronics and Microelectronics - MIPRO, 2012. 612-
617.

32
Saţetak

Ad-hoc društvena umreţenost lokacijski bliskih korisnika

Povijest društvenih mreţa seţe još u doba prvih raĉunala. Tadašnje društvene mreţe poput
BBS-a i CompuServea preteĉa su suvremenih društvenih mreţa. Relativno jednostavan
koncept koji se koristi u društvenim mreţama privukao je ogroman broj korisnika već u
prvim ozbiljnijim izvedbama društvene mreţe (primjer je Classmates.com). Vrlo brzo
nastalo je nekoliko razliĉitih društvenih mreţa poput Facebooka, Twittera ili Foursquarea
koje biljeţe ogromnu popularnost (1.11 milijardi korisnika Facebooka), no razvoj
društvenih mreţa tu ne staje. Društveni i lokacijski kontekst otvaraju mogućnosti razvoja
ad-hoc društvenih mreţa koje umreţavaju privremeno bliske korisnike zajedniĉkih
karakteristika. U diplomskom radu teoretski je opisan model ad-hoc društvene mreţe te je
ostvarena ad-hoc društvena mreţa Bfriend koja preuzima postojeće povezanosti s
društvene mreţe Facebook te umreţava lokacijski bliske prijatelje. Dodatno je napravljena
evaluacija sustava Bfriend koja je pokazala kojoj skupini korisnika je Android aplikacija
sustava Bfriend bila korisna i dodatno unaprijedila društveni ţivot.

33
Summary

Ad-hoc social networking of location close users

History of social networks dates back to the time of the first computers. Former social
networks such as BBS and CompuServe are predecessors of the modern social networks. A
relatively simple concept that is used in social networks has attracted a huge number of
users in the first performances of social networks (an example is Classmates.com). Very
quickly several different social networks like Facebook, Twitter and Foursquare was
released. They have reached immense popularity (1.11 billions Facebook users), but the
development of social networks didn't stop. Social and locational context opens
opportunities for the development of ad-hoc social networks which links temporarily close
users with common characteristics. This thesis depicts theorethical model of ad-hoc social
networks but also is developed ad-hoc social network Bfriend that takes existing
relationships from Facebook and links location close Facebook friends. Additionally, an
evaluation of system Bfriend was done. Evaluation showed which group of users
considered Android applications of system Bfriend to be useful and further improves their
social life.

34
Privitak A: Upute za pokretanje sustava Bfriend

U ovom poglavlju kroz korake će se opisati kako pokrenuti i importati cijeli projekt
Bfriend.

Skinuti potrebne programe:

 Glassfish;
 MySQL server;
 MySQL workbench;
 Eclipse EE;
 Android SDK;
 Bfriend.zip;
 Bfriend folder;
 Bfriend.apk;
 Dump20130606.sql;
 facebook-android-sdk-3.0.1 folder;
 GlassfishDiplomski folder;

Instalirati MySQL server i MySQL workbench.

Upaliti MySQL workbench, odabrati import/export te importati datoteku u kojoj se nalazi


baze nazvanu Dump20130606.sql. Nakon dodavanja baza je spremna za rad.

Instalirati Glassfish.

Potrebno je otvoriti Eclipse (sa instaliranim Android SDK-om, nabolje sa najnovijom


verzijom, ali minimalno sa verzijom 2.2 ) te je potrebno dodati novi server (Preferences ->
Server -> Add new -> Install additional) pa odabrati Glassfish 3.1. Zatim izabrati Windows
-> View -> Servers i dodati Glassfish te ga uputiti u folder gdje je instaliran. Slika 4
prikazuje propertise cijelog projekta GlassfishDiplomski kako trebaju biti postavljeni.
Nakon postavki Glassfish je spreman za rad. Slika 6 prikazuje ispis u konzoli nakon što je
server ispravno postavljen i pokrenut.

35
Import projekata (File -> Import)

BFriend i GlassfishDiplomski potrebno je importati kao obiĉne Java projekte.

Facebook-android-SDK-3.0.1 potrebno je importati kao Android projekt.

Napomena: Ako Facebook SDK ima drugaĉiji naziv potrebno ga je u BFriend postavkama
promijeniti sa desni klik na projekt -> Propertis -> Android -> Library kao što je
prikazano na Slika 1, nakon toga se klikne na pogrešnu referencu od Facebook-a i klikne se
remove te se pomoću tipke add doda ovaj novi importarni Facebook projekt. Nakon toga
se klikne na Java Build Path (Slika 2), pa na Projects -> Add -> Facebook te se mora
staviti kvaĉica na order and export (Slika 3).

Pokretanje:

GlassfishDiplomski: desni klik -> run as -> run on server (Slika 5)

BFriend: desni klik -> run as -> Android application

Napomene:

 U projektu BFriend unutar paketa diplomski.activities treba promijeniti:


- u klasi util: IP i port

- u klasi login: ID aplikacije s Facebooka (ako je potrebno).

 Potrebno je stvoriti SSL s kojim se dobije hash code koji se ukucava u Facebook
developer aplikaciju.

 Treba biti iskljuĉena opcija sandbox u Facebook developer aplikaciji kako bi


svimogli koristiti aplikaciju (ako je ta opcije ukljuĉena onda će aplikacija raditi
samo za navedene korisnike unutar Facebook developer aplikacije).

36
Slika 1. Postavke FacebookSDK za projekt BFriend

37
Slika 2. Postavke Java Build Path za projekt Bfriend

Slika 3. Dodavanje i brisanje Java Build Path postavki za projekt BFriend

38
Slika 4. Postavke Java Build Path za projekt GlassfishDiplomski

39
Slika 5. Postavke za pokretanje servera u projektu GlassfishDiplomski

Slika 6. Ispis u konzoli prilikom uspješnog pokretanja servera

40
Privitak B: Upute za korištenje Bfriend Android
aplikacije.

Prilikom pokretanja koda Android aplikacije, stvorio se .apk file koji je potrebno prenijeti
na mobilni ureĊaj s operacijskim sustavom Android i pokrenuti instalaciju. Kada se
aplikacija instalira, na zaslonu nam se pojavljuje ikonica preko koje ulazimo u samu
aplikaciju.

Prvo što vidimo je poĉetni zaslon aplikacije Bfriend. Pritiskom na tipku meni na ureĊaju u
donjem dijelu zaslona pojavljuje nam se izbornik prikazan slikom (Slika 7).

Slika 7. Osnovni izbornik

41
Izbornik nam nudi ĉetiri opcije:

 Start;

 Inbox;

 Settings;

 My Friends.

Opciju Start biramo kada prvi puta pokrećemo aplikaciju kako bi se aplikacija povezala s
korisnikovim Facebook profilom. Da bi se to ostvarilo korisnik bi trebao biti već spojen na
Facebook ili unijeti traţene podatke za spajanje kada ga aplikacija zatraţi. Nakon
povezivanja, aplikaciji je pridruţen korisnik, te se preuzimaju njegovi prijatelji i podaci,
opcija Start postaje beskorisna a aktiviraju se ostale tri opcije.

Ako korisnik odabere opciju Settings moţe promijeniti svoj status. Prilikom prvog
pokretanja korisnikov status automatski se stavlja na Online što znaĉi da korisnik vidi sve
prijatelje, prima notifikacije i vidljiv je drugima. Osim Online korisnik moţe biti u stanju
Busy, Invisible ili Offline. Ako je korisnik u stanju Busy neće primati nikakve notifikacije,
ali će njegovi prijatelji vidjeti da je u blizini, te će i Leeloo za njega slati notifikacije
potencijalnim prijateljima. Kada je pak korisnik u stanju Invisible znaĉi da je nevidljiv
drugima, tj. da on prima sve notifikacije, ali sustav ga ne vidi pa drugi ne mogu primati
notifikacije za njega. Ako je korisnik u stanju Offline niti on vidi druge korisnike niti oni
vide njega. Kako bi se promijenilo stanje potrebno je odabrati ţeljenu opciju i pritisnuti
tipku Apply. Izbornik stanja prikazan je slikom (Slika 8).

42
Slika 8. Izbornik stanja koje korisnik moţe mijenjati

Opcija Inbox otvara sanduĉić u kojemu su pohranjene sve primljene notifikacije. Trenutne
notifikacije koje korisnik moţe primiti su Bfriend notifikacija koja javlja korisniku koji
prijatelji mu se nalaze u blizini i Leeloo notifikacija ”Prijedlog za prijatelja” kojom se
korisnika obavještava da se u njegovoj blizini nalazi drugi korisnik koji mu nije prijatelj,
ali ima dovoljan broj zajedniĉkih prijatelja pa postoji mogućnost da se korisnici poznaju i
ţele biti prijatelji na Facebooku. U toj notifikaciji nalazi se i gumb na koji kada se pritisne
otvara Facebook profil predloţenog korisnika. Sanduĉić i Leeloo notifikacija prikazani su
slikom (Slika 9).

43
Slika 9. Izgled notifikacija

Posljednja opcija koju korisnik moţe odabrati je My Friends. Tamo se nalaze liste
korisnikovih prijatelja. Korisnik moţe odabrati izmeĊu ĉetiri liste:

 liste svih prijatelja;


 liste prijatelja koji su u blizini;
 liste prijatelja svojih prijatelja koji koriste aplikaciju;
 liste prijatelja od prijateljevih prijatelja koji takoĊer koriste aplikaciju.

Izbornik je prikazan slikom (Slika 10).

44
Slika 10. Izbornik odabira prijatelja

45

You might also like