Description
Neleri konuşacağız?
Bu sette Node.JS nedir dedikten sonra, bir iki örnekle konu kapanmayacak. Yani konumuz sadece Node.JS değil. Mesela yazdığınız Node uygulamasını scale edemezseniz bunun hiçbir anlamı yok. Bunun için "Load Balancing (Yük Dengeleme)" konusunu konuşacağız. Test ve deploy işlemlerini otomatize edemedikten sonra neyleyim ben öyle Node'u. Bu yüzden "Continuous Integration (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.
javascriptBir 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. javascript'in çalışma mantığına hakim olmadan Node.JS ile geliştirme yapmaya çalışan nice yiğitler heba oldu gitti bu yolda. javascript'in diğer dillerden farkı üstüne basıla basıla "Temel javascript" bölümünde anlatıldı.
EcmaScript 6EcmaScript'in ne olduğunu öğrenecek ve EcmaScript 6 ile birlikte gelen yeni özellikleri anlamaya çalışacağız. Let, Const, Promise, Async / Await, Inter Milan bunları uzun uzun konuşacağız.
Express FrameworkNode.JS dünyasının en popüler framework'ü şüphesiz Express. Geliştirme ortamını hızlıca ayağa kaldırabilen ve hafif yapısıyla işleri epey kolaylaştıran Express Framework neyin ne'si kimin fesi anlayacağız. Pug Tema Motoru, Routing ve Middleware kavramlarının ne olduğunu burada öğreneceğiz.
MongoDBNoSQL'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.
Restful API Geliştirme ProjesiMongoDB ü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.
Mocha ve Chai ile Unit TestingÜ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.
DeployNode.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.
Travis CI ile Continuos Integration (Sürekli Entegrasyon)Continuos Integration 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 test ve deploy sürecini öğreneceğiz.
Nginx Reverse Proxy ile Load BalancingGünümüzün modern web uygulamalarının olmazsa olmaz kavramlarından biri şüphesiz 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.
Bu bölümde Nginx'in ne olduğunu anlayacak ve Node.JS ile nasıl bir arada kullanabileceğimizi öğreneceğiz. Uygulamamızın yükünü farklı sunuculara dağıtacağız, kafamız rahat olacak ve peşin satan esnaf oturuşu yapacağız.
Vagrant"Nginx ile Load Balancing" bölümünde sunucularımızı Vagrant ile ayağa kaldıracağız. "Vagrant nedir? Nasıl kullanılır? Vagrant yapılandırması nasıl yapılır?" gibi sorulara cevap bulabileceksiniz.
RedisÖyle zannediyorum ki, Redis'in nam'ını sağır sultan bile duymuştur. Bir NoSQL veritabanı olan Redis'e arkadaşları "Hız Canavarı" diyor. Bu canavarı eğitimimizde kendi doğal ortamında göreceğiz. Direkt uygulama üzerinde. Hem de chat uygulaması üzerinde.
Projeler
- Bölüm 14: Express ve MongoDB ile Restful API Geliştirme Projesi
- Bölüm 22: Socket.IO ve Angular.JS ile Real-time "Live Balls" Uygulaması
- Bölüm 23: Socket.IO ve Redis ile Gelişmiş Chat Sistemi
Bu kurs kimler için uygun:
- NodeJS öğrenmek isteyen,
- javascript öğrenmek isteyen,
- Gerçek zamanlı web uygulaması geliştirmek isteyen,
- Modern web teknolojilerini öğrenmek isteyen herkes.
Course content
- Tanıtım Videoları
- Socket.IO ile Real-time "Live Balls" Uygulaması Trailer
- Giriş
- GitHub Repoları
- Event driven / Non blocking nedir ?
- Node.JS nedir ?
- Node.JS nasıl çalışır ?
- "Hello world" uygulaması
- IDE Seçimi
- Node.JS Kurulumu
- Linux için
- Mac için
- Windows için
- Temel javascript
- console.log() metodu
- Değişkenler
- Büyük-küçük harf duyarlılığı
- Açıklama satırları
- Birleştirme operatörü
- Aritmetik operatörler
- Karşılaştırma operatörleri
- Mantıksal operatörler
- Koşullandırmalar
- Fonksiyonlar
- Callback Fonksiyonlar
- setTimeout fonksiyonu
- setInterval fonksiyonu
- Callback fonksiyonlar - 2
- Scope kavramı
- Döngüler: For
- Döngüler: While
- Döngüler: Do While
- Nesneler
- Diziler
- javascript istisna yönetimi (try, catch, throw, finally)
- "use strict" ifadesi
- EcmaScript 6
- EcmaScript Nedir ?
- WebStorm üzerinde ES6'yı aktive etme
- var,let,const ve farkları
- Template Literal
- Destructing
- Destructing-2
- Spread operator
- Arrow functions
- Promise yapısı
- Async / Await
- Async / Await hata yakalama
- Modül Sİstemi
- Module.exports ve require
- Node Paket Yöneticisi (NPM)
- Paket nedir ?
- Paket yükleme ve kullanma
- Yerel ve global paketler
- Package.json dosyası ve paket güncelleme işlemleri
- Bağımlılık yönetimi
- Script tanımla
- Paket kaldırma
- Events (Olaylar) ve I/O İşlemleri
- Olaylar (Events & Event Emitter)
- __filename ve __dirname
- Diskten dosya okuma
- Dosya oluşturma ve yazma
- Dosya silme
- Node.JS ve HTTP
- Basit bir HTTP sunucusu oluşturmak
- Nodemon nedir ? Nasıl kullanılır ?
- Bir HTML dökümanı serve etmek
- HTTP metodları
- Basit bir yönlendirme yapısı
- Streams (Yayınlar)
- Stream nedir?
- Okunabilir Stream oluşturmak (fs.createReadStream())
- Yazılabilir Stream oluşturmak (fs.createWriteStream())
- Bellek performans testleri (Stream kullanımından önce ve sonra)
- Express Framework
- Express nedir?
- Merhaba Express
- Pug: Pug nedir ?
- Pug: Pug dosyasını render etmek
- Pug: Parametre olarak değişken göndermek
- Pug: Include
- Pug: Açıklama satırları
- Pug: Değişken tanımlamak
- Pug: If kontrolü
- Pug: Döngüler
- Pug: Layout ve Block yapısı
- Express statik klasör belirleme
- Rotalar (Routing): Giriş
- Rotalar: Get isteklerine parametre atamak
- Rotalar: Router nesnesi
- Ara katman (Middleware)
- Ara katman (Mİddleware)-2
- Express hata yönetimi
- Express Uygulama Oluşturucu
- NoSQL ve MongoDB
- NoSQL nedir? Ne zaman ihtiyaç duyarız?
- MongoDB kurulumu (Linux & Windows)
- MongoDB Kurulumu (Mac)
- MongoDB komut satırı arayüzü (Mongo CLI)
- Robomongo
- Veritabanı oluşturma ve mongoose ile bağlanma
- Mongoose bağlantı ayarları - 2
- Mongoose: Şemalar: Şema oluşturma ve kayıt ekleme
- Mongoose: Şemalar: Veri tipleri
- Mongoose: Şemalar: Type, Default, Required, Unique
- Sorgu yapmak (Find)
- Tüm kayıtları seçmek
- Tekil sorgu yapmak (findOne)
- ID bazlı sorgu yapmak (findById)
- Veri güncelleme (update)
- Upsert anahtar kelimesi
- Id bazlı güncelleme yapmak (findByIdAndUpdate)
- Veri silme (findOneAndRemove, remove)
- Sıralama işlemleri (sorting)
- Limit belirleme ve atlama yapma (limit, skip)
- Aggregate: $match operatörü
- Aggregate: $group operatörü
- Aggregate: $project operatörü
- Aggregate: $sort, $limit, $skip operatörleri
- Aggregate: $lookup operatörü ile join işlemleri
- $exists operatörü
- Şemalarda validasyon işlemleri
- Express ve MongoDB ile Restful API Geliştirme Projesi
- Movie API tanıtımı
- Git ve Github ayarları
- İlk commit
- EcmaScript 6 ayarları
- Bilgilendirme (mLab)
- MongoDB Ayarları
- mLab Düzeltme
- Movie şemasının hazırlanması
- Movie şemasının hazırlanması - 2
- Movies endpoint'i için route ayarları
- Movies endpoint'i için post metodunun yazılması (/api/movies [POST] )
- Readme dosyasının düzenlenmesi
- Readme dosyasının düzenlenmesi - 2
- Tüm filmleri listeleyen endpoint'in yazılması (/api/movies [GET])
- Film detay endpoint'inin yazılması (/api/movies/:movie_id [GET] )
- Hata yönetimi
- Film güncelleme endpoint'inin yazılması (/api/movies/:movie_id [PUT])
- Güncelleme işleminde new operatörü (MongoDB)
- Film silme endpoint'inin yazılması (/api/movies/:movie_id [DELETE])
- Top10 endpoint'inin yazılması ( /api/movies/top10 [GET] )
- Between endpoint'inin yazılması (/api/movies/:start_year/:end_year [GET])
- Directors endpoint'i post metodunun yazılması (/api/directors [POST])
- Tüm yönetmenleri listeleyen endpoint'in yazılması (/api/directors [GET])
- Yönetmen detay endpoint'inin yazılması (/api/directors/:director_id [GET] )
- Yönetmen güncelleme endpoint'inin yazılması (/api/directors/:director_id [PUT])
- Yönetmen silme endpoint'inin yazılması (/api/directors/:director_id [DELETE])
- Tüm filmleri listeleyen endpoint'in düzenlenmesi (/api/movies [GET])
- Movie şeması validasyon işlemleri
- Director şeması validasyon işlemleri
- JSON Web Token (JWT) İle Oturum Yönetimi
- Kullanıcı kayıt endpoint'inin yazılması (/register [POST])
- Bcrypt ile parola şifreleme
- Json Web Token(JWT) nedir? Nasıl çalışır?
- Jsonwebtoken ile token oluşturma servisinin yazılması
- Token verify middleware'ının yazılması
- Restful API için Unit Test Yazmak (Mocha & Chai)
- Neden test yazarız?
- Test ortamının hazırlanması ve ilk test kodu (describe ve it kavramları)
- Package.json dosyasına test script'i eklemek
- /api/movies/ [GET] testinin yazılması
- /api/movies/ [POST] testinin yazılması
- /api/movies/:movie_id [GET] testinin yazılması
- /api/movies/:movie_id [PUT] testinin yazılması
- /api/movies/:movie_id [DELETE] testinin yazılması
- Describe düzenlemesi
- Heroku ve Deploy İşlemleri
- Heroku nedir? IaaS nedir? PaaS nedir?
- Heroku deploy işlemleri
- Heroku web arayüzü
- Travis CI ile Sürekli Entegrasyon (Continuous Integration)
- Sürekli entegrasyon nedir?
- Travis CI nedir? Nasıl kullanılır?
- Travis CI ve Github ile otomatik deploy işlemleri
- Travis CI'de Cron Jobs ve Build Trigger oluşturma
- Github üzerinde build durumunun gösterilmesi
- DigitalOcean Üzerine Deploy İşlemleri
- DigitalOcean nedir? Droplet nasıl oluşturulur?
- Sunucuya Node.JS kurulumu
- Uygulamanın deploy edilmesi
- PM2 nedir? Nasıl kullanılır?
- Bazı PM2 komutları
- Nginx Reverse Proxy ile port yönlendirme
- Nginx ile Load Balancing (Yük Dengeleme)
- Yük dengeleme nedir? Neler yapacağız?
- Vagrant ve VirtualBox kurulumları
- Vagrant yapılandırmaları
- Server-1 için Nginx kurulumu
- Server-2 ve Server-3 için Node.JS kurulumu
- Uygulama sunucularının ayağa kaldırılması
- Nginx Load Balance konfigürasyonunun yapılması
- Load Balancing performans testleri (Apache Benchmark Tool)
- Websocket Temelleri ve Socket.IO
- Websocket nedir?
- Server ve Client arasında TCP bağlantısı oluşturmak
- Socket.on ve Socket.emit
- Emit işleminde data göndermek
- Bağlı olan diğer clientlara mesaj göndermek (broadcast.emit)
- Socket.IO Namespace ve Room farkları
- Socket.IO Namespaces (İsim Uzayları)
- Namespace oluşturmak, bağlanmak ve broadcast etmek
- Socket.IO Rooms (Odalar)
- Room (oda) oluşturmak ve sadece room üyelerine mesaj göndermek
- Leave metodu ile odadan ayrılma işlemi
- Leave metodunda son bağlantının da ayrılması durumu
- Socket ID nedir?
- Bağlı olunan oda(room)ları listelemek
- Socket.IO Client: reconnectionAttempts, reconnectionDelay, reconnection
- Socket.IO Client: reconnect_attempt, reconnect_error ve reconnect event'ları
- Socket.IO ve Angular.JS ile Real-time "Live Balls" Projesi
- Uygulama Tanıtımı
- GitHub Repo Yapılandırması
- Express Kurulumu
- Arayüzün entegre edilmesi
- Bower kurulumu
- Angular modülünün yazılması
- Socket.IO implementasyonu
- Angular.JS indexFactory servisinin yazılması
- newUser Event'inin yazılması
- newUser Event'inin yazılması - 2
- Disconnect event'inin yazılması
- Kullanıcının oyun alanında gösterilmesi
- Oyuncu animasyon işlemlerinin yapılması
- Giriş yapan yeni kullanıcının oyun alanında realtime gösterilmesi
- Animasyon işleminin tüm kullanıcılarda realtime gösterilmesi
- Her oyuncuya farklı renk atamasının yapılması
- Chat sisteminin hazırlanması - 1
- Chat scroll işleminin yapılması
- Chat sisteminin hazırlanması - 2
- Mesaj baloncuklarının oyun alanında gösterilmesi
- Buglar hakkında
- Async / Await Yapısına Geçiş
- Heroku Üzerine Deploy İşlemleri
- Ortam değişkenlerinin hazırlanması
- Socket.IO ve Redis ile Gelişmiş Chat Sistemi Projesi
- Uygulama Tanıtımı
- Git ve GitHub Yapılandırması
- Express.JS Kurulumu
- Bower Kurulumu
- Angular Kurulumu
- Login Ekranının Hazırlanması
- Login Ekranının Hazırlanması - 2
- Ortam Değişkenlerinin Hazırlanması (dotenv)
- MongoDB Bağlantısının Yapılması
- Google Uygulamasının Oluşturulması
- User Modelinin Oluşturulması
- Auth Route'unun Yazılması
- Passport.JS ile Google Auth Stratejisinin Yazılması
- Passport.JS ile Google Auth Stratejisinin Yazılması - 2
- Chat Route'unun Hazırlanması ve Session İşlemleri
- isAuthenticated Middleware'ının Yazılması
- Chat Sayfası UI Entegresi
- Anasayfa Yönlendirme İşlemi
- Redis Kurulumu (Mac ve Linux)
- Redis Kurulumu (Windows)
- Redis GUI
- Redis Session Store İmplementasyonu
- Socket.IO Kurulumu
- Socket.IO Redis Adapter Kurulumu
- Socket Authorization İşlemleri
- Chat Sayfası Tab Yapısının Hazırlanması
- Online Listesinin Hazırlanması - 1 (Redis Upsert Methodunun Yazılması)
- Online Listesinin Hazırlanması - 2 (Redis Remove Methodunun Yazılması)
- Online Listesinin Hazırlanması - 3 (Redis List Methodunun Yazılması)
- Online Listesinin Hazırlanması - 4 (Online Kullanıcıların Arayüzde Gösterilmes)
- Redis Client Modülünün Oluşturulması
- Chat Odalarının Hazırlanması - 1 (Upsert methodunun yazılması)
- Chat Odalarının Hazırlanması - 2 (List methodunun yazılması)
- Chat Odalarının Hazırlanması - 3 (Odaların arayüzde gösterilmesi)
- Chat Odalarının Hazırlanması - 4 (Custom oda ismi vermek)
- Sohbet Detayının Arayüzde Gösterilmesi
- Redis Room ID Tanımının Yapılması
- Mesaj Yapısnın Hazırlanması - 1 (newMessage event front-end)
- Mesaj Yapısnın Hazırlanmasi - 2 (Upsert methodunun hazırlanması)
- Mesaj Yapısnın Hazırlanmasi - 3 (List methodunun hazırlanması)
- Lodash ile Mesajların Sıralanması
- getMessages Angular Servisinin Yazılması
- Angular Ortam Değişkenlerinin Hazırlanması
- Mesajların Arayüzde Gösterilmesi
- Redis ID Tanımının Değiştirilmesi
- Angular User Servisinin Yazılması
- Mesaj Baloncuklarının Gösterilmesi
- "Loading..." İfadesinin Gösterilmesi
- Client'da ki Mesaj Verisini Kullanmak
- Mesajların Anlık Olarak Arayüzde Gösterilmesi (Client)
- Mesajların Anlık Olarak Arayüzde Gösterilmesi (Server Broadcasting)
Sifirdan.Her.Yonuyle.javascript.Node.JS.part1.rar
Sifirdan.Her.Yonuyle.javascript.Node.JS.part2.rar