13 Aralık 2017 Çarşamba

Design Patterns Nedir?

Merhaba Arkadaşlar,
Uzun bir aradan sonra Design Patterns(Tasarım Şablonları) yazı dizimle tekrardan bloğuma dönüş yaptım.Bu yazı dizimde Tasarım şablonlarının çoğunu ayrıntılı olarak sizlere açıklamaya çalışacağım.İlk olarak bugün Tasarım Şablonlarının ne olduğundan ve bu şablonları kullanmanın yararlarından bahsedeceğim.Daha sonraki günlerde her bir Tasarım Şablonunu ayrı ayrı ele alacağım.
    Tasarım Şablonları, yazılım geliştirme sürecinde,yazılım geliştiricilerin karşılaştıkları, tekrar eden belirli sorunlara getirilen genel çözümlerdir.Bu şablonlar yazılım geliştiriciler tarafından edindikleri tecrübeler sonucunda oluşturulmuş kalıplardır.Tasarım şablonları, sorunun ne olduğunu tanımlayarak bu sorunu çözmek için gerekli adımları içinde barındırır.  
Tasarım Şablonlarının yazılım geliştirme sürecinde iki ana işlevi:
  1. Yazılım geliştiriciler için ortak bir terminoloji sağlar ve  tasarım şablonları belirli bir senaryoya özgüdür.
  2. Zaman içinde sürekli geliştikleri için yazılım geliştirme sırasında karşılaşılan problemlere en iyi çözümleri sağlamaktadırlar.

  • Tasarım Şablonları programlama dillerinden bağımsız olarak,nesne yönelimli tasarım problemlerini çözebilmek için geliştirilmiş stratejilerdir
  • Tasarım Şablonlarını kullanarak yazdığımız kodun esnek olmasını ve yeniden kullanılabilir olmasını sağlayabiliriz.
  • Ayrıca geliştirilen yazılımda, müşterinin daha sonra gelen yeni taleplerini karşılayabilmek için kodda gerekli değişikliklerin ve yazılımın bakım onarımının yapılabilme kapasitesini (maintainable) artırmayı sağlar.
İyi bir yazılımcı olabilmek için Tasarım Şablonları mutlaka bilinmelidir. 

Bugün genel olarakTasarım Şablonları (Design patterns)' larını açıklamaya çalıştım.
Diğer Yazımda görüşmek üzere ... Hoşçakalın.


Kaynaklar:
https://www.tutorialspoint.com/design_pattern
https://www.javatpoint.com/design-patterns-in-java

21 Eylül 2017 Perşembe

Android de Firebase'e Bağlanma ve Authentication

Merhaba Arkadaşlar,

Önceki yazımda genel olarak Google Firebase'den bahsetmiştim.Bugün Android'de Firebase'in uygulamamıza nasıl ekleneceğini ve Authentication işleminin nasıl yapıldığını anlatmaya çalışacağım.

Firebase Authentication ile geliştiricilere birçok kimlik doğrulama yöntemi kullanma imkanı sağlanmıştır.Bu kimlik doğrulama yöntemleri:

  • Email/Password
  • Google
  • Facebook
  • Github
  • Phone
  • Twitter
  • Anonymous
 Firebase kütüphanesini  projemizde kullanabilmek için projemize Firebase kütüphanesini eklememiz gerekmektedir.Eğer Google Firebase de hesap oluşturmadıysanız, öncelikle https://firebase.google.com adresine girerek buradan hesap oluşturmanız gerekmektedir.Bu yazımda, Firebase 'i Firebase Asistant kullanmadan  manuel olarak nasıl projenize ekleneceğini anlatacağım. 
          Manuel Olarak Firebase,Android Studio Projesine Nasıl Eklenir?

  1. Firebase sitesinden hesabımıza giriş yaptıktan sonra Go To Console 'u tıklıyoruz.Console üzerinde eğer yeni bir proje oluşturmak istiyorsak Proje Ekle,var olan google projemizi import etmek için ise "Google projesini içe aktar"ı tıklıyoruz. 



   2- Proje ekle seçeneğini tıkladığımızda  karşımıza çıkan formdan proje adını yazıp,ülkeyi           seçiyoruz.Ve Proje Oluştur Butonuna Tıklıyoruz.
Firebase'i Android Uygulamasına Eklemek
1-.Android Studio'da Firebase ekleyeceğimiz yeni bir proje oluşturuyoruz.

2-Firebase'de  sign-in olduktan sonra oluşturduğumuz projeyi açıyoruz.Ve aşağıdaki şekildeki gibi "Firebase'i Android uygulamanıza ekleyin" kısmına tıklıyoruz.




3-Yukarıda Android paket adını yazarken dikkat etmemiz gereken nokta Android Studio'da oluşturduğumuz projenin paket ismi ile aynı olmasıdır.
4-Projemizin paket ismini yukarıda yazıp,Uygulamayı Kaydet butonuna bastığımızda karşımıza aşağıdaki adım gelecektir.Aşağıdaki adımları takip edip google-services.json'ı bilgisayara indirip daha sonra Android Studio'da projemizde app modulunun altına google-services.json'ı kopyalıyoruz.
 5-Son adımda aşağıdaki ekrandaki yönlendirmeleri uygulayarak projemizdeki gradle dosyasında eklemeleri yapıp IDE'deki çubukta gözüken  sync now a basıyoruz.
Projemizde Firebase Authentication'ı kullanabilmemiz için build.gradle (Module: App)dosyasına aşağıdaki eklemeleri yapıyoruz.
compile 'com.google.firebase:firebase-database:11.0.1'

compile 'com.google.firebase:firebase-auth:11.0.1'

Ve son olarak da hangi Authentication tipini (Email/Password,Facebook,Twitter vs.)kullanmak istiyorsanız onu Firebase Consoldan aktif hale getiriyoruz. Firebase artık kullanımımıza hazır durumda.Diğer yazımda görüşmek üzere. Hoşçakalın.

6 Eylül 2017 Çarşamba

Firebase nedir?

Merhaba arkadaşlar bu yazımda,özellikle mobil yazılım geliştiriciler için büyük kolaylıklar sağlayan Firebase platformundan bahsedeceğim.Ekim 2014'te Firebase adı verilen uygulama geliştirme servisi,Google tarafından satın alındı.Böylece Google geliştiricilerin ihtiyaç duyduğu pek çok hizmeti kullanıma açtığını duyurdu. Firebase arka plan(backend) uygulama servisidir. Bulut tabanlı depolama ve verilere erişim sunmaktadır. Google Firebase tarafından farklı platformlar için kolay bir alt yapı ve tek yerden geliştirebilme imkanı sunulmaktadır.
Firebase'in geliştiricilere sunduğu hizmetlerden bazıları:

  1. Analytics:Firebase Framework'un en önemli kısmıdır.Ücretsizdir. Veri analiz ara yüzüdür.
  2. Realtime Database
  3. Cloud Storage
  4. Google Cloud Messaging
  5. Hosting
  6. Authentication
  7. Test Lab
  8. Notification
  9. AdMob
Google Firebase kullanıcısı olan mobil geliştiriciler, bir dizi mobil analitik hizmetinden faydalanabilmektedirler.Bu hizmetleri kullanabilmek için uygulamaya birkaç satır kod eklemek yeterlidir.Bu işlemden sonra uygulamadaki kullanıcı verileri,uygulamanın içinden Firebase'e aktarılmaktadır.Eğer geliştiriciler daha detaylı bilgilere ulaşmak istedikleri takdirde ,aynı işlemi erişmek istedikleri tüm bölümlere uygulayarak daha fazla bilgiye ulaşabilmektedirler.Böylece geliştiriciler, kararlarını tahminlere göre değil,Google Analytics verilerine dayandırarak vermektedirler.Geliştiricilerin uygulamayı kullanacak olan kullanıcıların neyi sevdiğini ve nelerden hoşlanmadıklarını bulmak için davranışlarını izlemeleri gerekir. Kullanıcıların kullandıkları platform ve geliştirilen tasarıma verdikleri tepkilerin detaylıca analiz edilmesi gerekir.
Analytics yardımıyla, Firebase kullanan geliştiriciler kendi uygulamalarındaki 500 benzersiz hareketi izleyebilir. Kullanıcı davranışına, uyumluluk raporuna ve hatalara göz atabilmekte, reklam performansını ölçebilmektedirler.
Google Cloud Messaging tabanlı bildirim sistemi yeniliklerden bir tanesi. Google buradan hem IOS ve android hem de web uygulamakarı için sınırsız bildirim desteği sağlamaktadır.Bu bildirimler tamamen ücretsizdir. Google sunduğu hizmetlerin bir kısmını ücretsiz ,bir kısmını ise ücretli olarak sağlamaktadır.Bu hizmetlerden Analytics,Hata Raporlama,Uzaktan Konfigürasyon ve Dinamik Linkler'in tamamı sınırsız kullanıma açık ve ücretsiz olarak sunulmaktadır. Firebase ile kullanılabilen ücretli olanlar  ürünler ise Test Lab, Storage, Hosting ve Realtime Database'dir. Bu ücretli hizmetlerden faydalanmak isteyenler belirli kısıtları olan ücretsiz plan, startuplar için bir aylık özel tarifeyi ya da "kullandıkça öde" modelini seçip, bahsedilen ücretli hizmetleri kullanmaya başlayabilirler.
Gelecek yazıda, Android ile Firebase Authentication 'ın nasıl yapılacağından bahsedeceğim.Görüşmek üzere...

Kaynaklar:
https://firebase.google.com/docs/
http://www.sistemoptima.com/yazilim/firebase-nedir
https://www.techinside.com/google-firebase-mobil-analitik-ucretsiz/

16 Ağustos 2017 Çarşamba

Web Servis nedir?

Merhaba arkadaşlar ,
Bugün son zamanlarda popüler olan web servislerden bahsetmek istiyorum. Web servis XML ,HTTP, SOAP gibi çeşitli protokol ve standartları kullanarak diğer web uygulamalar ile veri alış verişi yapmak amacıyla etkileşim kuran web uygulamalarıdır.Var olan uygulamalarımız web servisler sayesinde birer web uygulamalara dönüşebilmektedir. Web servisler, bir kez yazılır ve farklı platformlarda ve değişik programlama dilleriyle kullanılabilirler.İşletim sisteminin linux yada windows, programlama dilinin java ,php veya herhangi başka bir dil olması web servisin çalışmasını etkilemez. Web servisler, client (istemci bilgisayar )tarafından gönderilen istekleri yorumlayarak ona yapısında bulundurduğu bilgilerden ,istemcinin isteğine göre bir cevap göndermektedir. Web servisin avantajlarını toparlayacak olursak,Web servisi platform bağımsızdır ve istenilen yerden erişilebilmektedir.
Yukarıda bahsedilen kompleks mimarilerin kullanımının artmasının bir sonucu olarak uygulamalar arası iletişimin sağlanabilmesi için çözüm ihtiyacı ortaya çıkmıştır.Her uygulama geliştirildiği programlama dili ve veri tabanı itibari ile farklı  tür veriler oluşturmaktadır.Uygulamalar arası iletişimin ne olduğunu açıklayacak olursak, bu uygulamalar arası karşılıklı  veri alışverişini anlatmaktadır.Kompleks mimarilerin birbirleri ile iletişim sağlanabilmesinin çözümü herkesin kullanabileceği,kendi ihtiyacına göre yapılandırabileceği ortak bir dil olan xml standartıdır. Web servisler ile m için xml standardı kullanılır.En çok REST ve SOAP web servisleri kullanılmaktadır.

Web servisler bir çok alanda kullanılmaktadır.Örneğin TCMB döviz kurlarını uygulamamızda kullanmamız gerekirse kurumun yayınladığı  web servisinden istediğimiz verileri çekebiliriz.Bir başka ornek, Mernisten bilgi edinmek isteyen her kurum,daha önceden belirleniş olan xml 'e göre uygulamalarını yapılandırıp istediği bilgilere yetkileri dahilinde ulaşabilmektedir.



Kaynaklar:
https://www.tutorialspoint.com
http://www.mshowto.org

16 Mayıs 2017 Salı

Android'de ListView Oluşturma

Merhaba Arkadaşlar ;
ListView en önemli widgetlardan birisidir. Listview, ekranda verileri alt alta listelemek istediğimizde kullanılmaktadır.İki çeşit Listview vardır.Bunlardan birincisi android'in kendi adapter larını kullanarak oluşturulmaktadır.Bunlar sadece TextView'lardan oluşmaktadır.Yeni bir özellik eklenemez.İkincisinde ise özelleştirilmiş Listview oluşturulabilmektedir. Ben bu yazımda ilk seçeneği, yani android'in kendi adapter larını  kullanarak nasıl Listview oluşturulacağını anlatacağım.
ListView örneğine geçmeden önce  Adapter'dan bahsetmekte fayda var.
Adapter :Elektrik şebekesindeki elektrik, telefonumuzun bu elektriği direk kullanmasına elverişli değildir. Burada devreye adapter girer. Adapter sayesinde elektrik şebekesindeki elektrik telefonlarda kullanabilecek hale dönüştürülür. Androiddeki ArrayAdapter da aynı şekilde verilerin kullanıcı arayüzlerinde gösterilebilecek hale dönüştürmektedir. 
Örneğimizde ekranda yiyecek listesini göstereceğiz.

  • Öncelikle tasarım kısmını yapalım. activity_main.xml dosyasına ListView ekliyoruz.Bütün ekranı kaplaması için listview'ın  layout_width ve layout_height özelliklerini match_parent olarak tanımlıyoruz.
activity_main.xml dosyasının kodları aşağıdaki gibidir:

MainActivity.java dosyası aşağıdaki gibidir:

  • Burada ilk olarak String türünde yiyecekler listesi oluşturuldu.
  • OnCreate Metodunun içinde ListView 'ı tanımladık.
  • String tipinde verileri gösterecek bir ArrayAdapter oluşturduk.Burada Android'in gösterim şekillerinden simple_list_item_1 çağırdık.Parametredeki this ile ListView 'ın gösterileceği bağlamı belirttik.Aynı sayfada gösterileceği için this deyimini kullandık.yiyecekler parametresini de gönderdik.Bu sayede ListView'ın her satırındaki textView'lar yiyecekler listesinin elemanları ile doldurulacak.
  • Listview'a Adaptörü set ederek ekranda ListView 'ın görünmesini sağladık
  • Her bir elemana tıklama özelliği kazandırmak için setOnItemClickListener methodunu ekledik.Bu methodu onCreate Method içine ve setAdapter yapılan satırdan sonra yazılması gereklidir.
  • Örnekte tıklanan yiyeceğin ismini yazan bir diyalog penceresi ekrana gelmektedir. 
         Projeyi çalıştırdığımızda yiyecekler aşağıdaki resimdeki gibi ekranda listelenecektir.

Listedeki yiyeceklerden bir tanesi tıklandığında ise aşağıdaki gibi bir görüntü oluşacaktır.



Bu yazıda basit anlamda bir ListView'n nasıl olşturulacağını görmüş olduk.Bir sonraki yazıda görüşmek üzere...

10 Mayıs 2017 Çarşamba

Git ve Github Nedir?

Merhaba Arkadaşlar;
Bugün, yazılımcıların sıkça kullandıkları Git ve Github'dan bahsedeceğim.
Öncelikle ,yaygın düşüncenin aksine Git ve GitHub aynı şey değildir. Git bir versiyon kontrol sistemidir(VCS). GitHub ise içerisinde Repository'ler oluşturulan bir uzak depolama alanıdır.
Git dağıtık bir yapıya sahiptir:Yani her kullanıcı kendi bilgisayarında projenin bir kopyasını bulundurabilmektedir. İnternet bağlantısı olmadan kendi bilgisayarında proje üstünde çalışabilmektedir.
Git Versiyon Kontrol Sistemi ile ,
  • Projenin versiyon numaralarını, hangi kullanıcının ne zaman değişiklik yaptığı gibi bilgileri saklanmaktadır.
  • Projedeki takım arkadaşlarının yaptıkları değişikler görülebilmektedir.
  • Git bizim için projede yaptığımız çalışmaların yedeğini almaktadır. Bu sayede projenin güncel versiyonunda bir sorunla karşılaşıldığında eski versiyonlarda ne yaptığımızı görüp, kontrol edebilmekteyiz.Git çalışmalarımızın yedeğini kendisi alarak, bizi hem çalışmalarımızın yedeğini almak zahmetinden ve zamanından kurtarmakta, hem de yer tasarrufu sağlamaktadır. 
  • Yazılım şirketlerinde projelerde birden fazla kişi çalıştığı düşünüldüğünde,takım halinde çalışmayı kolaylaştırabilmek adına bir versiyon kontrol sistemi kullanmak kaçınılmazdır.Ayrıca müşteriler yazılan kodları görmek istediğinde, müşterinin sistemine kodları yüklemeden göstermeyi sağlamaktadır. 
  • Tek olarak gerçekleştirilen projelerde ise GitHub kullanmak projede yapılan kodda yapılan değişiklikleri görebilmek  ve kullanıcıların projelere katkıda bulunarak kendilerini geliştirebilmesi adına önemlidir.
  • GitHub, projeleri Public(projeyi herkes görebilir ve katkıda bulunabilir.)seçeneği ve private (Sadece belirlenen kişiler proje üzerinde çalışabilmektedir)seçeneği olmak üzere iki tane depolama  seçeneği sunmaktadır. 
  • Public seçeneği ücretsiz iken projeyi private olarak depolamak ise ücretlidir. 
  • Geliştiriciler herkesin görebileceği şekilde projelerini GitHub'a yüklediklerinde GitHub'daki herhangi bir kullanıcı projedeki kodları görebilmekte ve katkıda bulunabilmektedir. Ayrıca projeniz hakkına yorumlar yapabilmektedir. Yazılımcılar ,GitHub'daki projelere katkıda bulunarak deneyim kazanabilmektedir.