GDG Kocaeli Üniversitesi etkinliğinde yaptığım “Android’den Para Kazanma Sanatı” isimli sunuma aşağıdaki linkten ulaşabilirsiniz:
AndroiddenParaKazanmaSanati
Comments are off for this post	
Appium Essentials
Mar 22 2015	Published by yalcin under mobile, software development
Gözden geçirmesini (review) ve danışmanlığını yaptığım “Appium Essentials” kitabı yayınlandı:
http://www.amazon.com/Appium-Essentials-Manoj-Hans/dp/1784392480/ref=sr_1_1?ie=UTF8&qid=1429093755&sr=8-1&keywords=appium+essentials#reader_1784392480
İyi okumalar. 😉
Comments are off for this post	
Native, Mobil veya Hibrid : Mobil uygulama geliştirme teknolojisi seçerken nelere dikkat etmeliyiz ?
Apr 04 2014	Published by yalcin under mobile, software development
2015 yılında dünyadaki akıllı telefon kullanıcı sayısının 2 milyar olacağı tahmin edilirken (eMarketer) firmaların mobil uygulamalara olan ilgisi artarak devam edecek gibi görünüyor. Bu ilgi karşısında bilgi teknolojileri firmaları platform bağımsız mobil uygulama geliştirmek için vizyonlarını, kullanacakları araçları ve metodolojileri belirlemeye çalışıyorlar.
Acil markete çıkma gerekliliği olan ve kısa sürede geliştirilebilen uygulamaların (ör: Etkinlik Rehberi uygulamaları..vs.) yanı sıra karmaşıklığı fazla ve mobil cihazın tüm özelliklerini (Konum belirleme, hareket sensörü..vs.) kullanan uygulamalar (ör: Arttırılmış gerçeklik uygulamaları) da pazarın önemli bir payını oluşturuyor. Tüm bu uygulamaların ortak yanı ise firmaların bilgi teknolojileri firmalarından en ucuz, en hızlı ve tüm mobil cihazları destekleyen (IPhone, Android, Windows Phone..vs.) uygulamalar istemeleri. Haliyle bu konu hakkında bir çok araç ve kütüphane var ve fakat hiçbir araç veya kütüphane kendiliğinden ucuz, hızlı ve tüm cihazlarda çalışan çözümler sunmuyorlar. Mobil araçları, kütüphaneleri veya teknolojileri kullanırken çok dikkatli olmak gerekiyor zira Facebook gibi IPhone uygulaması için HTML5’e yatırım yapıp başarısız olma şansımız yüksek.
Mobil uygulama geliştirmek istediğimizde önümüze 3 tane uzun ve ince yol çıkıyor: Native, Web veya Hibrid. Native uygulamalar ilgili mobil işletim sistemine özgü ve marketten yüklenen uygulamalardır. Sadece tek bir platforma özel olarak geliştirilir ve ilgili cihazın tüm özelliklerini (kamera, GPS, ivmeölçer..vs.) kullanabilir. Mobil web uygulamaları ise Native uygulama görünümü olan web siteleridir. Kullanıcılar bu tür uygulamalara tarayıcı üzerinden erişirler. Hibrid mobil uygulamalar ise yarı web yarı native uygulamalardır. Native uygulamalar gibi marketler (Google Play Store, Apple App Store..vs.) aracılığıyla cihaza yüklenebilirler. HTML5 destekli tarayıcı ise uygulama içerisine gömülü durumdadır. Peki mobil uygulama geliştiren kişiler veya kurumlar olarak hangi yolu ne zaman tercih etmeliyiz ? Bu konudaki ölçü birimleri şu şekilde sıralanabilir:
Cihaz Özellikleri: GPS, Kamera, Hareket Sensörü..vs. gibi cihazın temel özelliklerine erişim – Native > Hibrid
Çevrimdışı (offline) Çalışma: İnternete bağlı olmadan da çalışabilme – Native
Hız: Native uygulamalar diğerlerine göre en hızlı tercihtir. Mark Zuckerberg’in (Facebook CEO) “HTML5’e yatırım yapmamız en büyük hataydı” deyip Facebook uygulamasını HTML5’ten Native uygulamaya çevirmesinin en büyük nedeni HTML5’teki performans problemleridir.
Güncelleme: Native uygulamayı güncellemek ve yeni sürüme geçmek hem kullanıcı için hem geliştirici için daha zordur. En kolay güncellenen uygulamalar mobil web uygulamalarıdır.
Platform Bağımsızlık: Hibrid veya mobil web uygulaması tercih edildiğinde platform bağımsızlık en güçlü argüman olarak ortaya çıkmaktadır. Aynı uygulama tüm platformlarda kullanılabilir.
İçerik kısıtlamaları, Onaylar ve Ücretler: Hibrid ve Native uygulamalarda uygulama marketler içeriği kısıtlayabilir. Bu marketler ücretlidir. Mobil web uygulamalarında herhangi bir kısıt yoktur ve ücret ödenmez.
Geliştirme Maliyeti: Geliştirme maliyeti Hibrid ve Mobil web uygulamalarında görece daha azdır.
Kullanıcı Arayüzü: Çok güçlü grafiksel ihtiyaçlar varsa (3D oyun..vs. ) Native tercih edilmelidir.
Sonuç olarak Hibrid, Mobil web veya Native tercih ederken ihtiyaçlar göz önünde bulundurulmalıdır. İhtiyaçtan bağımsız olarak herhangi birini diğerinden daha iyi olarak göremeyiz. Her birini seçerken firmanın ihtiyaçlarına göre tercih yapılmalıdır.
Comments are off for this post	
Yaygın Hesaplama ve Algılama
Aug 01 2013	Published by yalcin under mobile, software development
Her yerde ya da yaygın hesaplama (ubiquitous or pervasive computing) konusunun temelleri 90’ların başında Mark Weiser tarafından ortaya atılan “yok olan bilgisayar” (disappearing computer) terimine dayanmaktadır ve temel olarak bilgisayarların ve hesaplamanın insanların hayatının bir parçası olarak ve onları rahatsız etmeden ve hatta onların farkında olmadan çevreleyerek, çevreleri ile etkileşimlerini arttırarak hayat kalitelerini arttırmayı amaçlamaktadır. Yaygın hesaplamının 3 temel özelliği vardır: i) görünmezlik, ii) bağlam farkındalık (kişilerin konumları, eylemleri, çevresel faktörlere göre sistemin farklılık göstermesi) , iii) yaygınlık (hesaplamaya erişimin her yerde olması). Yaygın hesaplama konusuna katkıda bulunan araştırma konuları dağıtık sistemlerden yapay zekaya uzanan konuları içermektedir. Algılama (sensing) konusu ise yaygın hesaplama sistemlerinin vazgeçilmez unsurudur. Yaygın algılama konusu ise gömülü, algılama kapasitesi olan, ve çoğunlukla kablosuz iletişim yeteneği olan, evimizdeki cihazlarda, arabamızda, cep telefonlarımızda mevcut algılama sistemlerini kapsamaktadır.
Yaygın Algılama konusunda çevresel destekli yaşam (ambient assisted living), akıllı ev uygulamaları, e-sağlık ve özellikle akıllı telefonları kullanarak mobil algılama sistemlerinin geliştirilmesi üzerine araştırmalar yapılmaktadır. Akıllı telefonları kullanarak katılımcılı algılama sistemlerinin geliştirilmesi (örneğin telefonlar üzerindeki mikrofonları kullanarak şehrin gürültü haritasının çıkarılması), insan eylemlerinin algılanması ve uzaktan sağlık takibi gibi konularda çalışmaktayız.
Araştırmacılar
Yrd. Doç. Dr. Özlem Durmaz İncel
Yrd. Doç. Dr. Bahri Atay Özgövde
Yüksek Lisans Öğrencisi Doruk Coşkun
Yüksek Lisans Öğrencisi Yalçın Yenigün
Yüksek Lisans Öğrencisi Mehmet Aktaş
Seçili Yayınlar
O. Durmaz Incel, M. Kose, C. Ersoy A Review and Taxonomy of Activity Recognition on Mobile Phones, Springer BioNanoScience Journal, Special Issue on Personal Health Systems for Well-being and Lifestyle Change, 2013.
H. Alemdar, H. Ertan, O. Durmaz Incel, C.Ersoy, ARAS Human Activity Datasets in Multiple Homes with Multiple Residents, Proc. of the 7th International Conference on Pervasive Computing Technologies for Healthcare, PervasiveHealth 2013, Venice, Italy, May 2013.
Mustafa Kose, Ozlem Durmaz Incel, Cem Ersoy, Online Human Activity Recognition on Smart Phones, Proc. of the Workshop on Mobile Sensing: From Smartphones and Wearables to Big Data (colocated with IPSN 2012), April 2012.
Referans
http://bm.gsu.edu.tr/yaygin-hesaplama-ve-algilama
Comments are off for this post	
Android’de XMPP Client Geliştirme
Oct 23 2011	Published by yalcin under mobile
Android’de bir chat uygulaması yazmak isterseniz bu yazı tam da sizin için diyebilirim. Öncelikle bir chat sunucusuna ihtiyaç var. Bunun için OpenFire biçilmiş kaftan zira açık kaynak kodlu (GPL ile lisanslı), yönetimi kolay ve güvenli. Üstelik GTalk ve Facebook dahil piyasadaki chat uygulamalarının bir çoğu bu sunucuyu kullanıyor.
XMPP client geliştirmek için İlk olarak OpenFire sunucusunu bilgisayarımıza kuruyoruz. (http://www.igniterealtime.org/projects/openfire/) Sunucuyu kurduktan sonra başlatıyoruz:
Sunucu kısmını hallettikten sonra client tarafına geçebiliriz. XMPP client için en uygun kütüphane SMACK API. (http://www.igniterealtime.org/projects/smack/) SMACK jar’larını aldıysak Android uygulamamızı geliştirmeye başlayabiliriz.
Chat sunucusuna bağlanmak için:
ConnectionConfiguration config = new ConnectionConfiguration(server.getAddress(),server.getPort()); XMPPConnection connection = new XMPPConnection(config); connection.connect();
1
2
3
ConnectionConfiguration config = new ConnectionConfiguration(server.getAddress(),server.getPort());
XMPPConnection connection = new XMPPConnection(config);
connection.connect();
Chat uygulaması icin bir login ekranına ihtiyacımız var. Android’de ekrana bileşenler ekleyip onlardan değerleri almayı bildiğinizi varsayarak bu kısmı atlıyorum. (http://developer.android.com/guide/index.html)
Login ekranından aldığımız kullanıcı ismi ve şifreyle Openfire sunucusuna bağlanmak için (login başarısız olduğunda XMPPException atar.):
connection.login(userName, password);
1
connection.login(userName, password);
Login olduktan sonra ulaşılabilir (available) olduğumuzu da sunucuya göndermemiz gerekiyor:
Presence p = new Presence(Presence.Type.available); p.setFrom(connection.getUser()); p.setMode(Presence.Mode.available); connection.sendPacket(p);
1
2
3
4
Presence p = new Presence(Presence.Type.available);
p.setFrom(connection.getUser());
p.setMode(Presence.Mode.available);
connection.sendPacket(p);
Eğer giriş yapan kullanıcı OpenFire sunucusunda herhangi bir gruba üye değil ise default grup yaratıyoruz:
if(connection.getRoster().getGroups().size() == 0){ account.getRoster().createGroup("Friends"); }
1
2
3
if(connection.getRoster().getGroups().size() == 0){
account.getRoster().createGroup("Friends");
}
Giriş yaptıktan sonra arkadaşlarımızı görmek için önce chat gruplarına ulaşıyoruz. (Grupları listelemek için String RosterGroup.getName() metodunu kullanabiliriz.
Collection rosterGroups = connection.getRoster().getGroups();
1
Collection rosterGroups = connection.getRoster().getGroups();
Grup üyesi olan kullanıcıları listelemek için:
Collection allEntriesOfRosterGroup = rosterGroup.getEntries();
1
Collection allEntriesOfRosterGroup = rosterGroup.getEntries();
Listelenen kullanıcıları da hallettik. Artık chat yapabilmek için yeterli altyapıya sahibiz. Chat yapmak için ChatManager sınıfına ihtiyacımız var:
ChatManager chatManager = connection.getChatManager();
1
ChatManager chatManager = connection.getChatManager();
Kullanıcının üzerine tıklandığında yeni bir chat başlatmamız gerekiyor. İlk parametre chat’in ismi. Yani chat yaptığınız kullanıcının ismi. İkinci parametre şimdilik önemsiz.
Chat newChat = chatManager.createChat(rosterEntry.getName(), null);
1
Chat newChat = chatManager.createChat(rosterEntry.getName(), null);
Chat yarattıktan sonra gelen mesajların ekranımızda görünmesi için bir Listener’a ihtiyacımız var:
newChat.addMessageListener(new MessageListener() { public void processMessage(Chat chat, Message message) { String messageBody = message.getBody(); displayMessage(messageBody); } });
1
2
3
4
5
6
7
newChat.addMessageListener(new MessageListener() {
public void processMessage(Chat chat, Message message) {
String messageBody = message.getBody();
displayMessage(messageBody);
}
});
Send tuşuna basıldığında yazılan mesajı göndermek için:
newChat.sendMessage("merhaba, ben dostum. ");
1
newChat.sendMessage("merhaba, ben dostum. ");
Chat için ihtiyacımız olan metodlar bunlar. Ancak tabii bir chat uygulamasının login olan kullanıcının bir dahaki girişinde isterse kullanıcı ismi ve/veya şifresini hatırlatma ve gönderilen mesajların history’sini kaydetme gibi özelliklerinin olması gerekmektedir. Android’de DB işlemleri için SQLite kullanıyoruz. DB yaratmak için SQLiteOpenHelper sınıfından extend eden bir sınıf yazabilir ve SQLiteDatabase sınıfıyla da scriptlerinizi çalıştırabilirsiniz. Ayrıca kullanıcının kendisinin sisteme kaydolması için de gerekli metodlar Smack API’de mevcut.
Yukarıdaki işleyişin doğru çalışması için OpenFire chat sunucusundan grup yaratmanız ve kullanıcı eklemeniz gerekmektedir. Bu işemlerin ekran çıktıları aşağıdadır:
Kullanıcı listesi: (OpenFire sunucusu admin ekranı)
Bu API ve yukarıdakilerle aşağıda ekran çıktılarını bulabileceğiniz türden bir uygulamayı çok rahat yazabilirsiniz:
Login ekranı:
Arkadaş listesi ekranı:
Konuşma penceresi:
Comments are off for this post	
"On ne voit bien qu'avec le cœur. L'essentiel est invisible pour les yeux." Le Petit Prince
Search
Recent Posts
Soyutlamalar
H2O ile Yapay Zeka Geliştirme
H2O ve Python ile Makine Öğrenmesi Modeli Oluşturma
Plotly ve Python ile 3D Veri Görselleştirme
Spark ML’e Kategori Değişkenlerini Belirtme
Categories
book
fraud
machine learning
music
concert
other
software development
agile
bdd
java
mobile
python
scala
security
wireless sensor networks
Tag Cloud
agile android antisamy antivirüs c chat dart design patterns dosya tarama framework google gözlemci h2o istanbul devlet klasik türk müziği korosu jabber java java 8 java api jconsole jmx machine learning makale ml observer owasp antisamy paper python restful web services ruby on rails scala scrum seam security smack api spark spring symantec scan engine sûzidil tasarım desenleri unix upload user story uyms web xmpp