Dependency Injection, Dependency Inversion ve Inversion of Control Kavramları

Özellikle büyük projelerde yazılım tasarımı çok önemlidir. İyi tasarlanmış bir yazılımda geliştirme daha rahat yapılabilmektedir. Bu noktada en önemli kavramlardan biri de Dependency Injection’dır.

Dependency Injection nedir?

public class Employee{

private DBHelper helper;
public Employee(){
helper = new DBHelper();
} .... ...}

Yukarıdaki klasik yöntemle yazılmış class’ın constructor’ında DBHelper türünden helper nesnesi oluşturuluyor. Bu durumda Employee class’ı DBHelper class’ına bağımlı hale gelmiş oluyor(tightly coupled). Eğer DBHelper yerine başka bir helper class’ı kullanmak isterseniz Employee class’ını güncellemeniz gerekecek. Bu durumdan kaçınmak için Dependency Inversion Principle(DIP) kullanılır. Dependency Inversion prensibine göre yüksek seviye modüller, düşük seviye modüllere bağlı olmamalı. Her ikisi de soyut (abstract) kavramlara bağlı olmalıdır. Yani DBHelper class’ına bağımlı olmamak için interface veya abstract class kullanmalıyız.

public class Employee{

private IDBHelper helper;
public Employee(){
helper = new DBHelper();
} ... ...}

Yukarıdaki kodumuz her ne kadar ilk yazılan koddan iyi olsa da hala bir problem var. helper nesnesi hala Employee class’ı içerisinde oluşturuluyor. Bu noktada karşımıza Inversion of Control(IoC) prensibi çıkıyor. Bu prensibe göre bağımlılıkları oluşturmanın kontrölü dışarıdan olmalıdır. Bu örneğimiz üzerinden açıklamak istersek Employee class’ı helper nesnesini oluşturmamalı, bu nesneyi dışarıdan almalı. Dependency Injection, IoC prensibini implement eden bir design patern’dır. Bağımlılıklar class’a dışarıdan “enjekte” edilir.

public class Employee{

private IDBHelper helper;
public Employee(IDBHelper helper){
this.helper = helper;
}... ...}

helper nesnesini parametre ile dışarıdan alarak dependency injection yapmış oluyoruz. IDBHelper interface’ini implement eden her class’ın nesnesi Employee class’ı içerisinde kullanilebilir duruma gelmiş oldu. Böylelikle bağımlılığı minimuma indirmiş olduk(loosely coupled).

 

Dependency Injection avantajları nelerdir?

  • Yazılımı oluşturan yapıların birbirleri ile olan bağımlılıkları azalır,
  • Kod tekrarını azaltır,
  • Yazılımın geliştirilmesini kolaylaştırır,
  • Test edilebilmeyi kolaylaştırır.

A Priceless Competition: Masters of Code Istanbul 2015

On 3-4 October 2015, I attended Masters of Code Istanbul Hackathon with a team. All team members were my friends from Turkcell, we developed official Android application of Turkcell Geleceği Yazanlar. So we all have known each member of the team, who is the best in design, who could lead to team, who is better on front-end and who is better on back-end etc. Before going forward, I would like to introduce my awesome teammates;

Feyza Okumus – UI/UX Designer
Abdullah Sarikaya – Front&Back-End Developer
Eren Utku – Back-End Developer
Yasin Arslan – Back-End Developer
and me also back-end developer 🙂

 

Team Master of Cities

Team Master of Cities

We decided to attend this hackathon 2 weeks before the hackathon. We made Skype calls and tried to find a cool idea about the Istanbul Challange. Istanbul Challange was;

 

Combine in-store or online travel purchases with gamification to let consumers unlock Priceless Experiences globally.

After making hours of Skype calls, we found an idea, and we believed that idea until the end of the competition. The idea was developing a mobile application that lists must be seen places when someone goes to new city. Application will have missions. When all missions are completed the user will be the master of city. And if the user wants to see another city, we will direct him to ticket page to offer him tickets with discount.

 

On 3 October, we were the first team who came to Koç University Incubation Center. It was good because we could reserve the place where we wanted to work. After opening ceremony, the secret API was announced, it was Lost & Stolen Account List API. At 13:00 all developers started coding. Feyza designed UI and we started to code each pages of application. We had 24 hours to finish the project. Firstly we developed application without using any APIs. After that we started analyzing the APIs that we would use in our application. Featured API was Simplify Commerce, we used it in Tickets page while making payment process. When we were using APIs we got some problems. We asked a lot of questions to Simplify Commerce developers and they always came up with an answer.

While trying to solve API problem :)

While trying to solve API problem 🙂

We continued coding until the last second of the hackathon. When time was 13:00 we stopped coding, we’d almost finished everything and started to preparing the pitch.

Mission completed :)

Mission completed 🙂

While waiting results after piching with Peter Van Der Linedn

While waiting results after pitch with Peter van der Linden

 

Eren was the person who demonstrate and present our awesome application to jury. We all was excited, especially Eren. But it was a cool presentation and we announced as a finalist, with 5 other cool apps. 6 teams demonstrated their apps to jury again. At the end, we announced for 3rd place. “Nane” announced as runner-up team and Mobil Bayi is selected the winner of Masters of Code Istanbul and they will represent Turkey in San Francisco. I wish them good luck in San Francisco and hope they would win first-ever Masters of Code Competition.

Team Masters of Cities, 3rd place

Team Masters of Cities, 3rd place

 

At the end of hackathon, Mete Güney, General Manager of MasterCard Turkey, came and talked with us. He said I really like your idea and do not feel bad because you didn’t win. Hearing this from him was pleasant. He was so kind, the workers who work with him are lucky because they have amazing Manager.

I would like to thank my teammates; Feyza Okumus, Abdullah Sarikaya, Eren Utku, Yasin Arslan,
MasterCard General Manager Mete Güney, Elvan Ebru Yektin and all MasterCard Crew who bring this hackathon to Istanbul,
AngelHack Crew! They have limitless energy!!!
Simplify Commerce Crew,
and special thanks for Peter van der Linden,
and big thanks for Eren Beksal Bektas.

Geleceği Yazanlar Elçileri Olarak App Inventor Eğitim Seti Hazırladık

22 – 26 Haziran 2015 tarihleri arasında Turkcell Geleceği Yazanlar Merkezi’nde Türkiye’deki çocukların mobil uygulama geliştirmesini sağlayabilecek bir eğitim seti hazırladık. Bu eğitim setinde App Inventor ile kod yazmadan Android uygulamaları geliştirmeyi anlattık.İstanbul dışından da gelen elçi arkadaşlarımla birlikte çok eğlenceli bir o kadar da yoğun bir tempoyla çalışarak yaklaşık 5 saatlik bir eğitim seti ortaya çıkarmış olduk.

blog1

İlk gün, birçoğuyla ilk defa bir araya geldiğimiz elçi arkadaşlarımızla tanıştık, ekipteki herkes inanılmaz derecede sıcakkanlı ve samimiydi. Hiç kimse yabancılık çekmedi, sanki uzun yıllardır arkadaşmışız gibi kaynaştık 🙂 Tanışma faslı bittikten sonra ufak bir boğaz turu yaptık ve sonrasında da Geleceği Yazanlar Merkezi’ne geçtik. App Inventor hakkında Mehmet Aca hocamız bize bilgiler verdi ve videoları hazırlamamız için konu dağılımlarımızı yaptık.

blog2 blog3

Sonraki günler hız kesmeden video çekimlerine başladık, birçok sorunla karşılaştık; bilgisayarların çoğunun mikrofon girişi ayrı değildi, boş oda sayısı azdı.. Fakat bu sorunlar bizi durduramadı, otel odalarında kayıtları yetiştirmek için sabahladığımız bile oldu ve sonunda hepimiz kayıtlarımızı yetiştirdik.

blog5 blog6

Başta MehmetAca ( büyükelçi :p ) olmak üzere harika bir 5 gün yaşatan elçi arkadaşlarım Volkan Kılıç, Ahmet Yaylalıoğlu, Kadirhan Ekmekçioğlu, İsmail Arslan, Gizem Nur Yurdagül, Tuğçe Gürsoy, Doğukan Yıldırım, İbrahim Höbekkaya, Eren Utku, Ceren Coşkun ve Abdullah Sarıkaya‘ya teşekkür ediyorum.

Eğitim setine ulaşmak için tıklayınız.

MSHOWTO Yazılım Semineri

10 Mayıs Pazar günü Bahçeşehir Üniversitesi’nde herkese açık şekilde Bilgisayar Mühendisleri Odası’nın da desteği ile ilk yazılım seminerimizi gerçekleştiriyor olacağız.

MSHOWTO olarak yıllardır altyapı seminerlerinde sizler ile bir araya geliyorduk. Ve bildiğiniz gibi bir süre önce yazılım ekibimiz ile yazılım alanında da paylaşımlar yapmaya başlamıştık. Ve ilk seminerimizi de 10 mayıs günü Beşiktaş’ta Bahçeşehir Üniversitesi’nde gerçekleştireceğiz.

Detaylar ve kayıt için:

Kayıt için : http://bmo-mshowto-yazilim-gunleri.eventbrite.com

İletişim    : istanbul@bimo.org.tr

mshowto-yazilim

MSHOWTO Bahçeşehir Üniversitesi 2015 Etkinliği

MSHOWTO_BAU2015

Emre AYDIN       

Teknik Topluluk Lideri – MSHOWTO

Microsoft Exchange Server – MVP

Bilge Adam Bilişim Grubu – Birim Müdürü

 

İçerik     : Bilişim Sektöründe Kariyer

Tanım   : Bu oturumda, özellikle Bilişim Sektöründe iş hayatına başlamak isteyen öğrenciler için kariyerlerinin ilk yıllarında neler yapabileceklerine, hangi alanlarda kendilerini geliştirebileceklerine, sektördeki firma türlerine ve teknolojik anlamda ürün yelpazesine değinilirken iş görüşmeleri konusunda da bilgiler aktarılacaktır.

 

Mert YETER

Yazılım Biriminden Sorumlu Yönetici – MSHOWTO

Netaş ArGe – Yazılım Mimarı

 

İçerik     : IoT ve Enerji Yönetimi

Tanım   : Bu oturumda, Internet of Things kavramı, bu kapsamda günümüzün en önemli ihtiyaçlarından biri olan enerjinin nasıl daha verimli kullanılacağı ve bu konudaki çözümler anlatılacaktır.

 

Baki Onur OKUTUCU

Windows Expert – IT Pro MVP

BilgeAdam Bilişim Grubu – Birim Müdürü

 

İçerik     : Yeni Nesil Window: Windows 10

Tanım   : Bu oturumda, Microsoft’un çok yakın zamanda tüm platformlar için kullanıma sunmayı planladığı yeni nesil işletim sistemi olan Windows 10’un, 10 çarpıcı özelliğini canlı demolar ile izleme fırsatı bulacaksınız.

 

Kayıt için tıklayınız.

Windows Phone Dev Center nedir, nasıl kullanılır?

Windows Phone Dev Center, Microsoft’un Windows Phone geliştiricileri için sunduğu bir platformdur. Bu platformu kullanarak yazdığınız uygulamaları Windows Phone Store’a yükleyebilir, Store’da olan uygulamalarınızın analizini yapabilirsiniz. Yazımın sonunda Store’a nasıl uygulama yüklenir ve nasıl analiz yapılır sorularının cevaplarını bulmuş olacaksınız.

Adım adım, bir uygulama Store’a nasıl yüklenir görelim;

1. Dev Center’da giriş yapıp Dashboard’a girince aşağıdaki ekranla karşılaşıyoruz. Burada işlemde olan uygulamalarımızı ve hemen altında uygulamalarımızın ne kadar indirildiğini kolayca görebiliriz. Sol üstte bulunan Submit App‘e tıklayarak yeni bir uygulama yüklemeye başlayabiliriz.

1

2. Bu kısımda bizden uygulamamızın bilgilerini doldurmamız ve package( package nedir diyorsanız daha önceki yazımı okuyabilirsiniz: https://tanerutku.wordpress.com/2014/01/31/xap-file-nedir/ )’ı yüklememiz gerekiyor.

2

3. App info’yu düzenleyip kaydettikten sonra .xap dosyamızı yükleyebiliriz. Add new linkine tıkladıktan sonra yüklememiz gereken dosyamız, uygulamanın bulunduğu dizin/Assets/Bin/Release/ klasöründe bulunan .xap uzantılı dosyamızdır. Release klasörü boşsa uygulamayı release modda çalıştırmanız gerekmektedir.

3

.xap dosyası yüklendikten sonra store’da gözükecek olan açıklamayı, keywordslerinizi, uygulama iconunuzu ve uygulamanızın ekran görüntülerini yüklememiz gerekli.

4. Uygulamanızda herhangi bir reklam veya harita servisi kullanmayacaksanız yapmanız gerekenler bu kadar.

4

Uygulamanızda konum bilgisi kullanıyorsanız Map services kısmından id ve token almanız gerekli.

11

Kullanımı ise şu şekilde;

12

Review and Submit diyerek uygulama yükleme işlemimizi bitiriyoruz. 🙂

Windows Phone Dev Center hakkında değinmek istediğim bir diğer konu raporlar. Dev Center bizlere bazı raporlar sunmakta. Bu raporları inceleyerek uygulamanızı hangi ülkeden, hangi yaş aralığından, hangi cinsiyetten kullanıcılar indirmiş rahatlıkla bakıp analiz edebilirsiniz.Rapor dosyasında ulaşabileceğiniz bilgiler;

  • Satın alma tipi
  • Ülke
  • Dil
  • Yaş aralığı
  • Cinsiyet
  • Telefonun işletim sistemi
  • Telefonun üreticisi
  • Operator
  • İndirilme

5

Sağ alt köşedeki Export linkine tıkladığınız zaman detaylı şekilde hazırlanmış raporun exelde hazırlanmış halini indirmiş olacaksınız.

2

App downloads report

Crash count report

Crash count report

Muhteşem Deneyim: Microsoft Yaz Okulu 2014

4 Ağustos’ta büyük bir heyecan ve merakla başladığımız Microsoft Yaz Okulu 2014’ü 29 Ağustos’ta yaz okulu boyunca geliştirdiğimiz projelerin sunumlarının ardından geride bıraktık. Türkiye genelinde binlerce başvuru arasından 110 seçilmiş kişi arasına girip yaz okuluna katılmak insanın hayatına çok sık gelmeyecek bir fırsattı. Yaz okulu boyunca Yazılım Mühendisliği, Microsoft Azure, SQL, Windows Phone ve Windows 8 uygulama geliştirme gibi teknik eğitimlerin yanında sektörün önde gelen şirketlerinin üst düzey yöneticileriyle söyleşi imkanları da bulduk. Bu söyleşilerden çıkardığım ortak sonuç ise hata yapmaktan korkmamak, başarısızlık sonrası pes etmemek, inandığımız şeylerin arkasında durmak ve sabırlı olmaktı.

blog1

 

Microsoft Yaz Okulu 2014’te en keyifli söyleşi ise Ahmet Kural ve Murat Cemcir ile olan söyleşiydi. 😀 Onların da diğer konuşmacılar gibi vurguladığı şey vazgeçmemekti.

blog4

Yaz okulu boyunca bilardo, masa tenisi ve XBOX, stres atmamıza yardımcı olan arkadaşlardı 😛

blog2

Created with Nokia Smart Cam

Bu eğitimlerin yanında bir yandan da projelerimizi yetiştirmemiz gerekiyordu. Bu yüzden code day ve code night’lar düzenlendi. Hepsi birbirinden güzel ve yararlıydı. Bahçeşehir Üniversitesi’nde yaptığımız code night’ın terasında geçen keyifli sohbeti hiç unutmayacağım, ben hayatımda bu kadar güldüğümü hatırlamıyorum ! 😀

blog3

Keyifli ve yorucu geçen 1 ay sonunda projemi bitirerek Microsoft Yaz Okulu 2014’ü başarıyla tamamladım. Microsoft Türkiye Yazılım Geliştirme Teknolojileri Platformu Pazarlama Müdürü Behice Funda‘nın bizlere sık sık “anlatacak bir hikayeniz olsun” dediği gibi, benimde artık gururla anlatacak bir hikayem var: Microsoft Yaz Okulu 2014! Bizlere bu fırsatı sunan Microsoft Türkiye Akademik Programlar Yöneticisi Mustafa Kasap‘a ne kadar teşekkür etsek az ! Herşeyden önemlisi ben bu program sonucunda muhteşem arkadaşlıklar kurdum ve eminim ki bu arkadaşlıklar uzun süreli olacak, belki de ortak işler yapacağız.

 

Yaz okulunun son günü projelerimizi sunduk, veda konuşması ve pasta kesimi sonrasında Microsoft Yaz Okulu 2014 resmen bitmiş oldu.

Microsoft Yaz Okulu 2014 proje sunumu

Microsoft Yaz Okulu 2014 proje sunumu

 

blog5

Mustafa Kasap ile selfie 🙂

1 ay,110 öğrenci,200 saat eğitim,70 eğitmen,50.000 izleyici, yüzlerce uygulama müthiş bir gurur, müthiş bir final

1 ay,110 öğrenci,200 saat eğitim,70 eğitmen,50.000 izleyici, yüzlerce uygulama müthiş bir gurur, müthiş bir final