Professional Documents
Culture Documents
Diplomski Rad - Dejan Vasko
Diplomski Rad - Dejan Vasko
KONTEKSTNE INFORMACIJE
POKRETNOG KORISNIKA USLUGA
DRUŠTVENOG UMREŢAVANJA
Dejan Vasko
Uvod ............................................................................................................................................ 1
4. Evaluacija ......................................................................................................................... 28
Zakljuĉak .................................................................................................................................. 30
Literatura ................................................................................................................................... 31
Saţetak ...................................................................................................................................... 33
Summary ................................................................................................................................... 34
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.
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.
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
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.
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.
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:
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.
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.
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.
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.
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.
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
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
Xtify push-posluţitelj;
Facebook posluţitelj;
Google posluţitelj.
12
Slika 3.1 Arhitektura Bfriend sustava
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:
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].
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" };
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.
token = GoogleAuthUtil.getToken(Login.this,
mPlusClient.getAccountName(),"oauth2:" + Scopes.PLUS_LOGIN + " " +
Scopes.PLUS_PROFILE);
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:
Nakon ovog koraka moguće je pozivati niz metoda koje će vraćati podatke o korisniku:
account.getId();
account.getName();
account.getEmail();
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)
19
3.3. Središnji posluţitelj GlassFish
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].
(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.
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).
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
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].
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.
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.
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.
content.put("rich", rich);
26
Slika 3.6 Inbox ekran unutra Bfriend aplikacije
27
4. Evaluacija
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
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
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
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.
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 Glassfish.
35
Import projekata (File -> Import)
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:
Napomene:
Potrebno je stvoriti SSL s kojim se dobije hash code koji se ukucava u Facebook
developer aplikaciju.
36
Slika 1. Postavke FacebookSDK za projekt BFriend
37
Slika 2. Postavke Java Build Path za projekt Bfriend
38
Slika 4. Postavke Java Build Path za projekt GlassfishDiplomski
39
Slika 5. Postavke za pokretanje servera u projektu GlassfishDiplomski
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).
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:
44
Slika 10. Izbornik odabira prijatelja
45