18 Kasım 2014 Salı

NodeJS Events ve EventEmitter


Merhaba arkadaşlar, bu yazıda sizlere Observer Pattern'ine çok benzeyen NodeJS Event ve EventEmitter'dan bahsedeceğim. Event ve EventEmitter Observer Patterni gibi çalışır dolayısıyla burada bir adet olay adı bir de observer mevcuttur. Gelin detaylı bir şekilde bunları detaylı bir şekilde örnek üzerinde inceleyelim.

Diyelimki askerde iki kişi bir kulede nöbet tutyorsunuz ve yanınızdaki eleman da sizin alt devreniz. Üst devre olmanın getirdiği bir takım rahatlıklar ve ayrıcalıklar nedeniyle diğer elemanın uyumamasını söyleyip, siz bir güzel uyumayı tercih ettiniz. Diğer elemanın görevi komutan kuleyi kontrole geldiğinde, sizi uyandırması. Bundan sonra sizin adınız AskerA alt devrenin adı da AskerB olsun. Olay adı KomutanGeliyor, bununla bağlantılı olan fonksiyon ise Uyan! olsun. Böyle bir örnek olayı NodeJS ile nasıl modelleriz hep beraber ona bakalım.

NodeJS'in hızlı olmasının nedenlerinden bir tanesi de, ön tanımlı olarak event(olay) ler ile çalışması. Siz gerekli tanımlamaları yaparsınız, ve ondan sonra bir olay olduğunda gerekli aksiyonları çalıştırırsınız. NodeJS'te ön tanımlı olarak varolan bu özelliği, kendinize özel bir sistem kurmak için kullanmanız da mümkün. Bunun için kullanmamız gereken modulün adı events . Aşağıda çok basit bir şekilde yukarıdaki olayı örnekleyen kod mevcuttur:




Burada askeri uyandırmak için bir fonksiyon tanımladık. Sonra, belirli bir olay olduğunda askeri uyandırma fonksiyonunu çağırdık. KomutanGeliyor olayı olduğunda AskerB bir olay bildiriyor, ve bunu eventEmitter.emit ile yapıyor. AskerA da eventEmitter.on ile KomutanGeliyor olayını dinlediği için, AskerB nin yolladığı haberi duyuyor ve uyan fonksiyonu çalışıyor yani AskerA uyanıyor. Tabi bunların hepsini NodeJS'in events modülü sayesinde oluyor, ve bunu ekstradan npm install events diyerek yüklemiyorsunuz çünkü ön tanımlı olarak mevcut.  

Bir olaya birden fazla fonksiyon bağlamak da mümkündür. Mesela, komutan gelirken hem uyanıp hem de can yeleğini giymek istediğinde;



Bitmedi... Olayları haber verirken parametre de geçebilirsiniz. Mesela hangi komutanın geldiğini de söyleyebilirsiniz. Sevdiğiniz bir komutan ise uyumaya devam eder, gıcık biriyse anında uyanırsınız. Örnek;



Olayı haber verirken aynı zamanda hangi komutanın geldiği de belirtiliyor. 

Diyelimki komutan geldi ve başarılı bir şekilde uyandın ve selamını verdin. Komutan gittikten sonra bir daha gelmeyeceğini biliyorsun. O zaman daha fazla dinlemeye gerek kalmayabilir. Bunun için de;

eventEmitter.removeListener("KomutanGeliyor", uyan); 

ile bu olayı dinlemeyi bırakabilirsiniz. Hiçbir olayı dinlemek istemiyorsanız, koğuşa gidip rahat bir uyku çekmek istiyorsanız;

eventEmitter.removeAllListeners("KomutanGeliyor");

kullanabilirsiniz.

Sonuç olarak, NodeJS'te event kullanmak basit olmasına rağmen çok ciddi uygulamalarda hayat kurtarıcı yerlerde kullanılabilir. 

Not: Burada anlatılan yöntemleri askerlik yaparken kullanılması durumunda oluşacak problemlerin sorumluluğunu biz kabul etmiyoruz :)

22 Ağustos 2014 Cuma

SDI Brown Bag Session Etkinliği

Merhaba arkadaşlar bir etkinlikle daha karşınızdayız. Optimist Payments Consulting kurucusu Hakan ErdoğanEntrepreneurship with Real Life Challenges başlıklı konuşmasıyla girişim hayatındaki serüvenlerinden edindiği tecrübelerini katılımcılarla paylaşacak. Ayrıca katılımcıları sürpriz etkinlikler ve hediyeler de bekliyor! Bunlardan bir tanesi, etkinlik dahilinde şanslı 1 katılımcıya bedava NodeJS in Action eğitimi verilecektir :) Etkinlik 30 kişiyle sınırlı olup aşağıdaki bağlantıyı kullanarak ücretsiz kayıt olabilirsiniz. 


6 Ağustos 2014 Çarşamba

NodeJS Türkiye Okuyucularına Ücretsiz "NodeJS in Action" Adlı Eğitim


Merhaba Arkadaşlar. 2 ay önce Udemy de NodeJS in Action adlı eğitimim yayınlandı. Bu eğitimi ücretsiz olarak siz NodeJS Türkiye okurlarına sunuyoruz. Eğitimi buradan temin edebilirsiniz.

27 Mayıs 2014 Salı

NodeCast #4 - NPM Nedir?

Bu dersimizde, NodeJS projelerinizdeki modullerin yönetimininden sorumlu olan NPM (Node Package Manager) hakkında kısaca bilgi vermek istedik. 



25 Mayıs 2014 Pazar

NodeCast #3 - MongoDB Nedir?

Bu dersimizde, ilerideki derslerimizde sıkça kullanacağımız döküman odaklı veritabanlarından biri olan MongoDB hakkında bilgiler ve uygulamalı örneklere yer verdik. Derste kullanılan araçların linki;

MongoDB: http://www.mongodb.org/downloads

Robomongo: http://robomongo.org/





29 Mart 2014 Cumartesi

NodeCast #2 - NodeJS Kurulumu

NodeJS'i windows bilgisayarımıza kurup,
en basit örnek kodları hızlıca nasıl çalıştırabildiğimizi göstermek istedik.

Konu ile ilgili yazı http://www.nodejstr.com/2012/08/nodejs-ile-ilk-kodlar.html

12 Mart 2014 Çarşamba

NodeCast #1 - NodeJS Nedir?

Merhaba arkadaşlar. Bugün itibariyle NodeJS video serisine bugün itibariyle başlamış bulunmaktayız. Fırsat buldukça NodeJS ile ilgili videolar hazırlayıp yayınlamaya çalışacağız. İlk dersimiz NodeJS Nedir?

İyi seyirler...