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.

Diplomski rad - FER - Sveučilište u Zagrebu

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

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

1

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.

2

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

3

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.

4

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.

5

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.

6

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.

7

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

8

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

9

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-

10

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.

11

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

Razliĉitosti Foursquare Facebook

Places Google Latitude Bfriend

Prikupljanje lokacije GPS GPS WiFi, GPS,

3G/GSM

WiFi, GPS,

3G/GSM

Prijava/odjava u

sustav Da Da Da Da

Korisniĉka stanja

dostupnosti Ne Ne Ne Da

Obavještavanje

notifikacijama Ne Ne Ne Da

Eksplicitni prikaz

lokacije Da Da Da Ne

Personalizirana

usluga Da Da Da Ne

12

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.

13

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,

14

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.

15

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.

16

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

17

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.

18

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

19

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.

20

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

21

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 list i

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

22

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

23

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.

24

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

25

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

26

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.

27

Slika 3.6 Inbox ekran unutra Bfriend aplikacije

28

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.

29

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.

30

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.

31

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.

32

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

33

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.

34

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.

35

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.

36

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

37

Slika 1. Postavke FacebookSDK za projekt BFriend

38

Slika 2. Postavke Java Build Path za projekt Bfriend

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

39

Slika 4. Postavke Java Build Path za projekt GlassfishDiplomski

40

Slika 5. Postavke za pokretanje servera u projektu GlassfishDiplomski

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

41

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

42

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

43

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

44

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

45

Slika 10. Izbornik odabira prijatelja