Danışman Yrd. Doç. Dr. Feza Buzluca
İTÜ Bilgisayar Mühendisliği Bitirme Projesi
iCity
HazırlayanlarOben Işık (040080220) , Gökhan Karaca(040070234)
iCity Tanıtım Aşamaları
“Innovation distinguishes between a leader and a follower” – Steve Jobs
1Proje Amacı
2Kullanılan
Teknolojiler
3Kuramsal Bilgiler
4Analiz Modelleme
5Tasarım
1 Proje AmacıNeden iCity uygulamasına ihtiyaç duyuyoruz ?
“It is fine to celebrate success but it is more important to heed the lessons of failure” – Bill Gates
Neden iCity Uygulaması ?
1. Şehri yakından tanımak
2. Arkadaş takibi yapabilmek
3. Akıllı yer önerisi yapabilmek
4. Ulaşım yardımı almak
5. Sosyal ağ entegrasyonu
6. Mobil dünyaya uyum sağlamak
2 iCity’de
Kullanılan Teknolojiler
“Design is not just what it looks like and feels like. Design is how it works.” – Steve Jobs
Kuramsal Bilgiler
“It’s fine to celebrate success but it is more important to heed the lessons of failure.” – Bill Gates
3
iCity – Kuramsal Bilgiler | Android Tanım
Android, Google ve Open Handset Alliance tarafından kodlanmış, Linux OS tabanlı bir mobil cihaz için geliştirilmiş, açık kaynak kodlu bir işletim sistemidir.
Android işletim sistemli bir mobil telefon için, Android SDK kullanılarak uygulama yazılımları geliştirilebilmektedir.
Projemizin ana çatısı android üzerine kurulmuştur.
iCity – Kuramsal Bilgiler | Android Kullanımı
Günümüzde Android işletim sistemli mobil telefonların sayısı hızla artmaktadır.
iCity – Kuramsal Bilgiler | Android Yapısı
iCity – Kuramsal Bilgiler | Android Yapısı II
Androidde uygulama JAVA dilinde geliştirilir. Android işletim sistemine göre tüm ekranlar birer activity dir. Activity ler kullanıcı ile etkileşimi sağlayan ekranlardır. Her bir activity kendine adanmış bir layouta sahiptir. Activityler birbirlerini çağırabilirler ve aralarında veri transferi yapabilirler.
iCity – Kuramsal Bilgiler | Android Yapısı III
Activityler, manifest dosyası adı verilen bir xml dosyasında tanımlanır.
• Uygulama clientler tarafından Google Play Store dan indirilirken kullanıcıdan istenecek izinleri ifade ediyor.
• Uygulamada activity olarak görev alacak olan sınıfları tanımlıyoruz.
• Uygulama bağımsız olarak çalışacak olan servisimizi tanıtıyoruz.
iCity – Kuramsal Bilgiler | JSON
JSON, veri alış verişini sağlamak amacıyla geliştirilmiş bir veri biçimlendirme yöntemidir. JavaScript Object Notation XML den çok daha kolay ve hızlı biçimde işlenebilme özelliğine sahiptir. XML ile biçimlendirilmiş bir veri kümesi, JSON ile biçimlendirilmiş veri kümesine oranla
daha fazla bellek alanı ihtiyacı doğurur.
iCity – Kuramsal Bilgiler | JSON – XML Karşılaştırması
XML JSON<?xml version="1.0" encoding="UTF-8"?><root>
<data> <id>1</id>
<name>PHP </name>
</data></root>
{ "data": [{
"id" : "1", "name" : "PHP” }]
}
var root = xhr.responseXML;var dataElements = root.getElementsByTagName('data'); var idElementsValue = dataElements[0].getElementsByTagName('id')[0].firstChild.nodeValue;var nameElementsValue = dataElements[0].getElementsByTagName('name')[0].firstChild.nodeValue;
data.name[0];
iCity – Kuramsal Bilgiler | JSON – Projemizdeki Kullanımı
Projemizde JSON kullanımı web servisimiz ile uygulamamız arasındaki iletişimi sağlamak üzerine kurulmuştur.
Bilgi almak üzere servise istek gönderilir.
Servis JSON nesnesi olarak dönüş yapar
iCity – Kuramsal Bilgiler | .Net Framework (C#)
.Net framework projemizde, uzak host ile iletişimi yaparken kullanacağımız web servisi oluşturmak için kullanılmıştır.
Web servisi, XML mesajlaşma tabanlı bir sistem entegrasyon yöntemidir. W3C tarafından yapılan resmi tanımıyla web servisi, bilgisayarlar arasında ağ üzerinden etkileşimi ve uyumluluğu sağlayacak yazılım sistemidir.
XML tabanlı mesajlaşma esas alınmıştır. Biz projemizde JSON ile haberleşmeyi tercih ettik.
Web servis erişim standardı olarak SOAP (Simple Object Access Protocol) adı verilen basit nesne erişim protokolü kullanılmaktadır.
SOAP sayesinde web servis ile basit ve mesaj tabanlı bir iletişim sağlanmaktadır. Projemizde .net c# ile kodlanmış olan ve uzak host da koşan bir webservis bulunmaktadır.
iCity – Kuramsal Bilgiler | PHP
PHP, özellikle Web için tasarlanmış olan, sunucu taraflı çalışan bir script dilidir.
iCity – Kuramsal Bilgiler | PHP – Projemizdeki Kullanımı
Projemizde PHP dilini, yüklü miktarda datayı her defasında tek tek bir api kullanılarak sorgulamak yerine, hangi datalara ilişkin bilgilere ihtiyaç olduğunu php sayfamıza gönderip, cURL ile sorgunun uzak hostta çalışmasını sağlamak için kullandık.
Foursquare Kullanıcı Sayısı : 27M1 Kişinin Ortalama Arkadaş Sayısı : 137
1090120912
3212326712
…
foursquareGetCheckins.php
Foursquare API
Kullanıcı
Arkadaş Listesi
cURL Log
Analiz ve Modelleme
“It’s fine to celebrate success but it is more important to heed the lessons of failure.” – Bill Gates
4
iCity – Analiz
iCity – Analiz
iCity – Analiz
iCity – Analiz
iCity – Analiz
iCity – Analiz
Tasarım
“It’s fine to celebrate success but it is more important to heed the lessons of failure.” – Bill Gates
5
iCity – Tasarım | İnternet Bağlantısının Algılanması
iCity – Tasarım | İnternet Bağlantısının Algılanması
iCity – Tasarım | İnternet Bağlantısının Algılanması
05-12 19:51:49.669: D/NetworkConnectivityListener(1307): onReceive(): mNetworkInfo=NetworkInfo: type: WIFI[], state: CONNECTED/CONNECTED, reason: (unspecified), extra: (none), roaming: false, failover: false, isAvailable: true mOtherNetworkInfo = [none] mState=CONNECTED 05-12 20:14:00.524: D/NetworkConnectivityListener(1307): onReceive(): mNetworkInfo=NetworkInfo: type: WIFI[], state: DISCONNECTED/DISCONNECTED, reason: (unspecified), extra: (none), roaming: false, failover: false, isAvailable: false mOtherNetworkInfo = [none] mState=NOT_CONNECTED
iCity – Tasarım | Login
Kullanıcı log in butonuna tıkladığında, açılan foursquare api web view ile uygulamamıza login olur.
iCity – Tasarım | Application Base
iCity – Tasarım | Login
Mobil uygulama kullanıcısının Foursquare Api ile iletişime geçebilmesi için ise sisteme oAuth ile login olması gerekmektedir. Buna göre;
1. Kullanıcı uygulamanın login paneline girer.2. oAuth güvenli authorization panelimiz açılır.3. Kullanıcı adı ve şifre girişini yapar.4. Kullanıcıya ilişkin bilgiler ile foursquare üzerinde koşacak olan api key foursquare
tarafına gönderilir. 5. Foursquare servisi kullanıcıyı login ettikten sonra access token dönüşü yapar.6. Kullanıcıya spesifik bu access token key ile, izinler dahilinde işlemler yapılmaktadır.
iCity – Tasarım | Login
iCity – Tasarım | Login
DEMO
iCity
iCity – Tasarım | Uygulama Ana Ekranı
Action Bar
Sub Activity
TabGroup
iCity – Tasarım | Uygulama Ana Ekranı
iCity – Tasarım | Son Check-in Yapılan Yerler
iCity – Tasarım | Son Check-in Yapılan Yerler
iCity – Tasarım | Son Check-in Yapılan Yerler
• Son check-in yapılan yerleri tek tek Foursquare api ile birlikte sorgulama yapmak oldukça performans düşürücü olacağından bu konuda akıllı bir çözüm üretilmiştir.
• Bu sebeple de www.yoncamodaevi.com/foursquareGetCheckins.php sayfası liste olarak kullanıcının arkadaş listelerini alır ve bu arkadaş listesine göre son check-in lerin listesi dönülür.
• Bu sayfada kullanıcıdan alınan access token ile CURL altyapısı kullanılarak sorgulama yapılmaktadır.
• Bu sayede sonuçlar mobil uygulamaya göre çok daha hızlı bir uzak server üzerinde toplu halde hesaplanır ve bu da oldukça akıllı bir çözüm olmaktadır.
iCity – Tasarım | Mekan Arama
Tablar üzerindeki yazılar kaymakta
Kategori kısıtlamaları (Akıllı Öneride Kullanılacak)
Her kategoriye ait alt kategoriler bulunmaktadır.
iCity – Tasarım | Mekan Arama (Kısıtlamalar)
iCity – Tasarım | Mekan Arama
iCity – Tasarım | Mekan Arama (Harita)
iCity – Tasarım | Mekan Arama (Harita)
iCity – Tasarım | Check-in Yapma Süreci
iCity – Tasarım | Check-in Yapma Süreci
iCity – Tasarım | Check-in Yapma Süreci
DEMO
iCity
iCity – Tasarım | Akıllı Yer Önerme
Kullanıcılar daha önce hiç gitmedikleri yerler hakkında bilgi edinebilmek istediklerinde akıllı yer önerme algoritması kullanılmaktadır.
Akıllı yer önermeyi sağlayabilmek için, kullanıcının sosyal ağ üzerinde yaptığı bir takım işlemleri, web servisimiz aracılığıyla kendi veritabanımızda tutmak suretiyle kayıt altına aldık.
Bu kayıtlar kişinin sevdiği ya da sevmediği yerler hakkında bilgilerin tutulması ve mekanlar hakkında puanlamanın yapılabilmesi için kullanılmaktadır.
Akıllı yer önermenin temel amacı kullanıcıya daha önce hiç gezmediği mekanları, daha önce gittiği mekanlardan ve arkadaşlarının gittiği mekanlardan yola çıkarak mantıklı biçimde önerebilmektir.
iCity – Tasarım | Akıllı Yer Önerme
Foursquare APIistek
istekkayıt
http://obenws.yoncamodaevi.com
iCity – Tasarım | Akıllı Yer Önerme
iCity – Tasarım | Akıllı Yer Önerme
iCity – Tasarım | Akıllı Yer Önerme
iCity – Tasarım | Akıllı Yer Önerme
PROCEDURE [dbo].[graduationSP_getUsersSuggestedVenues]
1. Check-in tablosundan kullanıcının daha önce gitmediği ve kullanıcıya yakın mesafedeki mekanlar getirilir.
2. Mekanların kategori bilgileri ilgili tablodan alınmakta ve sonrasında web servise dönderilmektedir.
3. Web servis daha önceden almış olduğu kullanıcının geçmiş check-in’lerinin kategori bilgilerine göre bu mekanlar arasında çok sevilenden az sevilene göre bir sıralama yapmaktadır. • Örnek vermek gerekirse; • İncelediğimiz kullanıcı daha önceden 3 kere fast food kategorili mekanda
ve 2 kez de eğitim kategorili mekanlarda check-in olmuş ise, sistem bu kullanıcı için fast food kategorisine sahip mekanı listede eğitim kategorili mekanlardan daha ön sıralara koyacaktır.
Teşekkürler. Sorular?“I am as proud of what we don’t do as I am of what we do.” – Steve Jobs
Oben ISIK – Gökhan KARACA
Top Related