Node.JS Eğitim Seti

featured image

Kurs'a Git

Çok güzel haberlerim var. Aralık ayının başından beri ummalı bir çalışma içerisindeyim biliyorsunuz. Hazırlamakta olduğum Node.JS eğitim seti artık yayında.

Node.JS'i her yönüyle öğreneceğiniz, sıfırdan başlayan bir set. Zaten setin başlığı da, "Sıfırdan Her Yönüyle Node.JS". Yani, hiç JavaScript bilmeyenler ve hatta bu güne kadar programlama ile hiç ilgilenmemiş olanlar bile yararlanabilirler.

Node.JS'in tüm detaylarını içinde bulunduracak olan bu setin yaklaşık 14 saatlık kısmı hazır. Şuan hazır olan bölümler ile yayınlanmış oldu. Bundan sonraki süreçte eksik konular sürekli hazırlanarak eğitim içeriğine eklenecek.

Neleri konuşacağız?

Ben bu sette Node.JS nedir dedikten sonra biri iki örnekle konuyu kapatmak istemiyorum.Yani konumuz sadece Node.JS değil. Mesela yazdığınız Node uygulamasını scale edemezseniz bunun hiçbir anlamı yok. Bunun için Yük dengeleme konusunu konuşacağız. Test ve deploy işlemlerini otomatize edemedikten sonra neyleyim ben öyle Node'u. Bu yüzden Sürekli Entegrasyon ve bununla beraber Travis CI konuşuyor olacağız. Yani bir Node projesi geliştirirken bununla birlikte ne gibi sistemlere ihtiyaç duyarız bunları da konuşacağız.

Sadede Gel

Bir kere iyi bir JavaScript temeli atacağınıza inanıyorum. Node.JS ile çalışırken JavaScript'in çalışma mantığına hakim olmak çok önemli.

EcmScript 6 ile birlikte gelen yeni özellikleri anlamaya çalışacağız. Let, Const, Promise, Async / Await, Inter Milan bunları uzun uzun konuşacağız.

Node.JS'de önemli bir yer tutan Events, I/O ve Streams mevzularını iyice bir kavrayacağız.

Express Framework neyin ne'si kimin fesi anlayacağız. Pug Tema Motoru, Routing ve Middleware kavramlarının ne olduğunu burada öğreneceğiz.

NoSQL'in ne olduğunu konuşacak ve günümüzün en popüler NoSQL veritabanlarından biri olan MongoDB'yi anlamaya çalışıp ne zaman ihtiyacımız olduğunu öğreneceğiz.

MongoDB üzerinde çalışma yapmaya başladıktan sonra Express ve MongoDB ile Restful API geliştirme projesi yapacağız. Bu bölüm bir proje olacak. Express'i ve MongoDB'yi daha iyi bir şekilde burada anlayabileceğinizi düşünüyorum. Bu projede oturum yönetimini JSON Web Token (JWT) ile yapacağız.

Ülkemizde pek yazılmasa da, yazılım kalitesini belirleyen olmazsa olmaz kavramlardan biri tartışmasız yazılım testleridir. Biz de bu eğitim içinde geliştirmiş olduğumuz Restful API için Mocha ve Chai ile Unit Testler yazacağız. Elbette yazmakla kalmayacak neden test yazmamız gerektiğini de öğreneceğiz.

Node.JS'e yeni başlayanların en çok zorlandığı konulardan biri yazmış oldukları uygulamayı deploy etmek. PaaS servislerinden Heroku ve IaaS servislerinden DigitalOcean için deploy sürecinin nasıl olduğunu kavrayacağız.

Continuos Integration (Sürekli Entegrasyon) nedir? Neden ihtiyaç duyarız sorularını yanıtlayacağız. Travis CI ile sürekli entegrasyon işlemlerini anlayacağız. Travis CI ve GitHub aracılığı ile otomatik deploy sürecini öğreneceğiz.

Günümüz web uygulamalarının olmazsa olmaz kavramlarından biri, Load Balancing. Bin kişi girince çöken siteyi ne edeyim ben? Yok mu bunun bir çıkar yolu? Var babacım, gelen yükü farklı klon sunuculara böleceğiz. Bunu da Nginx ile yapacağız.

Aşağıda görmüş olduğunuz müfredatta detayı olmayan bölümleri henüz hazırlamadım. İlk yayına çıktığında 21 bölüm yayınlanmış olacak. Socket.IO ve Socket.IO projeleri dahil.

Müfredata eklenmesini tavsiye ettiğiniz konular olursa lütfen bunu yorum olarak belirtin, birlikte daha iyi bir eğitim haline getirelim. Özellikle Socket.IO Projeleri bölümünde tavsiye proje fikirleri olursa çok makbule geçer.

Müfredat

  • Bölüm 1: Giriş
    • Ders 1: Event driven / Non blocking nedir ?
    • Ders 2: Node.JS nedir?
    • Ders 3: Node.JS nasıl çalışır?
    • Ders 4: Hello world uygulaması
  • Bölüm 2: IDE Seçimi
    • Ders 5: WebStorm
  • Bölüm 3: Node.JS Kurulumu
    • Ders 6: Linux için
    • Ders 7: Mac için
    • Ders 8: Windows için
  • Bölüm 4: Temel JavaScript
    • Ders 9: console.log() metodu
    • Ders 10: Değişkenler
    • Ders 11: Büyük-küçük harf duyarlılığı
    • Ders 12: Açıklama satırları
    • Ders 13: Birleşirme operatörü
    • Ders 14: Aritmetik operatörler
    • Ders 15: Karşılaştırma operatörleri
    • Ders 16: Mantıksal operatörler
    • Ders 17: Koşullandırmalar
    • Ders 18: Fonksiyonlar
    • Ders 19: Callback fonksiyonlar
    • Ders 20: setTimeout fonksiyonu
    • Ders 21: setInterval fonksiyonu
    • Ders 22: Callback fonksiyonlar-2
    • Ders 23: Scope kavramı
    • Ders 24: Döngüler: For
    • Ders 25: Döngüler: While
    • Ders 26: Döngüler: Do While
    • Ders 27: Nesneler
    • Ders 28: Diziler
    • Ders 29: Javascript istisna yönetimi (try, catch, throw, finally)
    • Ders 30: "use strict" ifadesi
  • Bölüm 5: EcmaScript 6
    • Ders 31: EcmaScript nedir?
    • Ders 32: WebStorm üzerinde ES6'yı aktive etme
    • Ders 33: var, let, const ve farkları
    • Ders 34: Template riterals
    • Ders 35: Destructing
    • Ders 36: Destructing-2
    • Ders 37: Spread operator
    • Ders 38: Arrow functions
    • Ders 39: Promise yapısı
    • Ders 40: Async / Await
    • Ders 41: Async / Await hata yakalama
  • Bölüm 6: Modül Sistemi
    • Ders 42: Module.exports ve require
  • Bölüm 7: Node Paket Yöneticisi (NPM)
    • Ders 43: Paket nedir?
    • Ders 44: Paket yükleme ve kullanma
    • Ders 45: Yerel ve global paketler
    • Ders 46: Package.json dosyası ve paket güncelleme işlemleri
    • Ders 47: Bağımlılık yönetimi
    • Ders 48: Script tanımlama
    • Ders 49: Paket kaldırma
  • Bölüm 8: Events (Olaylar) ve I/O İşlemleri
    • Ders 50: Olaylar (Events & Event Emitter)
    • Ders 51: **filename ve **dirname
    • Ders 52: Dosya okuma
    • Ders 53: Dosya oluşturma ve yazma
    • Ders 54: Dosya silme
  • Bölüm 9: Node.JS ve HTTP
    • Ders 55: Basit bir HTTP sunucusu oluşturmak
    • Ders 56: Nodemon nedir? Nasıl kullanılır?
    • Ders 57: Bir HTML dökümanını serve etmek
    • Ders 58: HTTP metodları
    • Ders 59: Basit bir yönlendirme yapısı
  • Bölüm 10: Streams (Yayınlar)
    • Ders 60: Stream nedir?
    • Ders 61: Okunabilir Stream oluşturmak (fs.createReadStream())
    • Ders 62: Yazılabilir Stream oluşturmak (fs.createWriteStream())
    • Ders 63: Bellek performans testleri (Stream kullanımından önce ve sonra)
  • Bölüm 11: Express Framework
    • Ders 64: Express nedir?
    • Ders 65: Merhaba Express
    • Ders 66: Pug: Pug nedir?
    • Ders 67: Pug: Pug dosyasını render etmek
    • Ders 68: Pug: Parametre olarak değişken göndermek
    • Ders 69: Pug: Include
    • Ders 70: Pug: Açıklama satırları
    • Ders 71: Pug: Değişken tanımlamak
    • Ders 72: Pug: If kontrolü
    • Ders 73: Pug: Döngüler
    • Ders 74: Pug: Layout ve Block yapısı
    • Ders 75: Express statik klasör belirleme
    • Ders 76: Rotalar (Routing): Giriş
    • Ders 77: Rotalar: Get isteklerine parametre atamak
    • Ders 78: Rotalar: Router nesnesi
    • Ders 79: Ara katman (Middleware)
    • Ders 80: Ara katman (Mİddleware)-2
    • Ders 81: Express hata yönetimi
    • Ders 82: Express Uygulama Oluşturucu
  • Bölüm 12: NoSQL ve MongoDB
    • Ders 83: NoSQL nedir? Ne zaman ihtiyaç duyarız?
    • Ders 84: MongoDB kurulumu
    • Ders 85: MongoDB komut satırı arayüzü (Mongo CLI)
    • Ders 86: Robomongo
    • Ders 87: Veritabanı oluşturma ve mongoose ile bağlanma
    • Ders 88: Mongoose bağlantı ayarları-2
    • Ders 89: Mongoose: Şemalar: Şema oluşturma ve kayıt ekleme
    • Ders 90: Mongoose: Şemalar: Veri tipleri
    • Ders 91: Mongoose: Şemalar: Type, Default, Required, Unique
    • Ders 92: Sorgu yapmak (Find)
    • Ders 93: Tüm kayıtları seçmek
    • Ders 94: Tekil sorgu yapmak (findOne)
    • Ders 95: ID bazlı sorgu yapmak (findById)
    • Ders 96: Veri güncelleme (update)
    • Ders 97: Upsert anahtar kelimesi
    • Ders 98: Id bazlı güncelleme yapmak (findByIdAndUpdate)
    • Ders 99: Veri silme (findOneAndRemove, remove)
    • Ders 100: Sıralama işlemleri (sorting)
    • Ders 101: Limit belirleme ve atlama yapma (limit, skip)
    • Ders 102: Aggregate: $match operatörü
    • Ders 103: Aggregate: $group operatörü
    • Ders 104: Aggregate: $project operatörü
    • Ders 105: Aggregate: $sort, $limit, $skip operatörleri
    • Ders 106: Aggregate: $lookup operatörü ile join işlemleri
    • Ders 107: $exists operatörü
    • Ders 108: Şemalarda validasyon işlemleri
  • Bölüm 13: Express ile Restful API Geliştirme Projesi
    • Ders 109: Movie API tanıtımı
    • Ders 110: Git ve Github ayarları
    • Ders 111: İlk commit
    • Ders 112: EcmaScript 6 ayarları
    • Ders 113: MongoDB Ayarları
    • Ders 114: Movie şemasının hazırlanması
    • Ders 115: Movie şemasının hazırlanması - 2
    • Ders 116: Movies endpoint'i için route ayarları
    • Ders 117: Movies endpoint'i için post metodunun yazılması (/api/movies [POST])
    • Ders 118: Readme dosyasının düzenlenmesi
    • Ders 119: Readme dosyasının düzenlenmesi-2
    • Ders 120: Tüm filmleri listeleyen endpoint'in yazılması (/api/movies [GET])
    • Ders 121: Film detay endpoint'inin yazılması (/api/movies/:movie_id [GET])
    • Ders 122: Hata yönetimi
    • Ders 123: Film güncelleme endpoint'inin yazılması (/api/movies/:movie_id [PUT])
    • Ders 124: Güncelleme işleminde new operatörü (MongoDB)
    • Ders 125: Film silme endpoint'inin yazılması (/api/movies/:movie_id [DELETE])
    • Ders 126: Top10 endpoint'inin yazılması ( /api/movies/top10 [GET] )
    • Ders 127: Between endpoint'inin yazılması (/api/movies/:start_year/:end_year [GET])
    • Ders 128: Directors endpoint'i post metodunun yazılması (/api/directors [POST])
    • Ders 129: Tüm yönetmenleri listeleyen endpoint'in yazılması (/api/directors [GET])
    • Ders 130: Yönetmen detay endpoint'inin yazılması (/api/directors/:director_id [GET] )
    • Ders 131: Yönetmen güncelleme endpoint'inin yazılması (/api/directors/:director_id [PUT])
    • Ders 132: Yönetmen silme endpoint'inin yazılması (/api/directors/:director_id [DELETE])
    • Ders 133: Tüm filmleri listeleyen endpoint'in düzenlenmesi (/api/movies [GET])
    • Ders 134: Movie şeması validasyon işlemleri
    • Ders 135: Director şeması validasyon işlemleri
  • Bölüm 14: JSON Web Token (JWT) İle Oturum Yönetimi
    • Ders 136: Kullanıcı kayıt endpoint'inin yazılması (/register [POST])
    • Ders 137: Bcrypt ile parola şifreleme
    • Ders 138: Json Web Token(JWT) nedir? Nasıl çalışır?
    • Ders 139: Jsonwebtoken ile token oluşturma servisinin yazılması
    • Ders 140: Token verify middleware'ının yazılması
  • Bölüm 15: Restful API için Unit Test Yazmak (Mocha & Chai)
    • Ders 141: Neden test yazarız?
    • Ders 142: Test ortamının hazırlanması ve ilk test kodu (describe ve it kavramları)
    • Ders 143: Package.json dosyasına test script'i eklemek
    • Ders 144: /api/movies/ [GET] testinin yazılması
    • Ders 145: /api/movies/ [POST] testinin yazılması
    • Ders 146: /api/movies/:movie_id [GET] testinin yazılması
    • Ders 147: /api/movies/:movie_id [PUT] testinin yazılması
    • Ders 148: /api/movies/:movie_id [DELETE] testinin yazılması
  • Bölüm 16: Heroku ve Deploy İşlemleri
    • Ders 149: Heroku nedir? IaaS nedir? PaaS nedir?
    • Ders 150: Heroku deploy işlemleri
    • Ders 151: Heroku web arayüzü
  • Bölüm 17: Travis CI ile Sürekli Entegrasyon (Continuous Integration)
    • Ders 152: Sürekli entegrasyon nedir?
    • Ders 153: Travis CI nedir? Nasıl kullanılır?
    • Ders 154: Travis CI ve Github ile otomatik deploy işlemleri
    • Ders 155: Travis CI'de Cron Jobs ve Build Trigger oluşturma
    • Ders 156: Github üzerinde build durumunun gösterilmesi
  • Bölüm 18: DigitalOcean üzerine Deploy İşlemleri
    • Ders 157: DigitalOcean nedir? Droplet nasıl oluşturulur?
    • Ders 158: Sunucuya Node.JS kurulumu
    • Ders 159: Uygulamanın deploy edilmesi
    • Ders 160: PM2 nedir? Nasıl kullanılır?
    • Ders 161: Bazı PM2 komutları
    • Ders 162: Nginx Reverse Proxy ile port yönlendirme
  • Bölüm 19: Nginx ile Load Balancing (Yük Dengeleme)
    • Ders 163: Yük dengeleme nedir? Neler yapacağız?
    • Ders 164: Vagrant ve VirtualBox kurulumları
    • Ders 165: Vagrant yapılandırmaları
    • Ders 166: Server-1 için Nginx kurulumu
    • Ders 167: Server-2 ve Server-3 için Node.JS kurulumu
    • Ders 168: Uygulama sunucularının ayağa kaldırılması
    • Ders 169: Nginx Load Balance konfigürasyonunun yapılması
    • Ders 170: Load Balancing performans testleri (Apache Benchmark Tool)
  • Bölüm 20: Websocket Temelleri ve Socket.IO
    • Ders 171: Websocket nedir?
    • Ders 172: Server ve Client arasında TCP bağlantısı oluşturmak
    • Ders 173: Socket.on ve Socket.emit
    • Ders 174: Emit işleminde data göndermek
    • Ders 175: Bağlı olan diğer clientlara mesaj göndermek (broadcast.emit)
    • Ders 176: Socket.IO Namespace ve Room farkları
    • Ders 177: Socket.IO Namespaces (İsim Uzayları)
    • Ders 178: Namespace oluşturmak, bağlanmak ve broadcast etmek
    • Ders 179: Socket.IO Rooms (Odalar)
    • Ders 180: Room (oda) oluşturmak ve sadece room üyelerine mesaj göndermek
    • Ders 181: Leave metodu ile odadan ayrılma işlemi
    • Ders 182: Leave metodunda son bağlantının da ayrılması durumu
    • Ders 183: Socket ID nedir?
    • Ders 184: Bağlı olunan oda(room)ları listelemek
    • Ders 185: Socket.IO Client: reconnectionAttempts, reconnectionDelay, reconnection
    • Ders 186: Socket.IO Client: reconnect_attempt, reconnect_error ve reconnect event'ları
  • Bölüm 21: Socket.IO ve Redis ile Gelişmiş Chat Sistemi
    • Kullanıcıların sohbet odası oluşturabilme özelliği.
    • Sadece belli odaya mesaj gönderebilme özelliği.
    • Sadece belli kişiye mesaj gönderebilme özelliği.
    • Odalarda ve genelde bulunan online kullanıcı bilgilerini gösterme özelliği.
    • "Mehmet Yazıyor..." şeklinde yazıyor mesajının gösterilmesi özelliği.
  • Bölüm 22: Child Process
  • Bölüm 23: Clustering
  • Bölüm 24: Monitoring
  • Bölüm 25: Debugging
  • Bölüm 26: Logging
  • Bölüm 27: Caching
  • Bölüm 28: NPM modülü geliştirmek
  • Bölüm 29: Performans taktikleri
  • Bölüm 30: Öğrendiğiniz tüm bilgileri kullanabileceğiniz WEB projesi

Örnek Videolar

Aşağıya eğitimden iki adet videoyu bırakıyorum.

Load Balancing Bölümünden

Streams Bölümünden

Kurs'a Git

Lütfen önerilerinizi belirtmeyi unutmayın. :) Selametle.