Bir Satranç Oyunu, Node.JS ile İşlemler Arası İletişim ve İş Dağıtımı

Bu makalenin konusu, Facebook gruplarından birinde karşılaştığım güzel bir sorudan geliyor. Soru hem temel konularda bilgi sahibi olmayı, hem de kullanılacak aracı iyi tanımayı gerektiriyor. Bu konuda fikirlerimi kısa bir cevap olarak yazarsam, haksızlık ederim diye düşündüm. Aynı zamanda bir şeyler öğrenmek ve kod maymunluğu yapmak için eğlenceli bir konu bulmuş oldum. Ortaya bu makale ve github üzerinde yayınladığım örnek kodlar çıktı. Soruya bakarak, esas konumuzu yavaş yavaş işleyelim.

Node.JS Event Loop, Sync/Async, Promise, Async/Await ve RxJS üzerine...

Bu makalede Event Loop, Sync/Async, Promise, Async/Await, RxJS kavramlarını anlatmaya ve tüm bu kavramları tek bir örnek üzerinde kodlayarak göstermeye çalışacağım. Kendi sisteminizde denemeler yapmak istiyorsanız Node versiyonunuzun 8’in üzerinde olduğundan emin olun. Bu makalede yazılan tüm kodların, çalışır hallerine, yengas/async-blog-post@Github adresinden ulaşabilirsiniz. Problem İlk önce problemimiz ile başlayalım… Elimde daha önce izlemek için kaydettiğim Ghibli filmlerinin id’leri var. Bu filmlerin hepsinin adını ve açıklamasını almak istiyorum. İlk önce elimdeki dosyanın formatına bakalım…

Bu siteyi nasıl yaptım?

Github Actions yayınlandıktan sonra, bu projeyi wercker yerine Github Actions kullanacak şekilde değiştirdim. Blog yazıları ve Hugo konfigürasyonu Yengas/yengas.github.io projesinin source branch’inde yer alıyor. Bu branch’de yapılan her değişiklikte Github Actions html/css/js dosyalarını oluşturup, aynı projenin master branch’ine bu dosyaları gönderiyor. Web platformunu bırakıp, Android ve daha sonrada diğer platform ve teknolojiler ile ilgilenmeye başladığımdan beri, arayüzden çok, backend sistemler ile uğraşmaya başladım. Bu dönemde tamamladığım çoğu proje; ya tek sayfalık bir arayüze sahipti, yada direk olarak arkaplanda çalışıyordu.

Statik Website Oluşturucuları nedir? Neden tercih edilir?

Web’in ilk zamanlarında, tamamen statik olarak çalışan websiteleri, daha sonradan kullanıcılar için özelleştirilmiş deneyimler sunmak ve kullanıcı girdisine göre işlem yaparak çıktı verebilmek için dinamik bir hal aldı. Fakat tarayıcılarımız güçlendikce; bir çok şeyi Javascript kullanarak yapabilir hale geldik. Bu durum hem websitelerinin istemci kısmının daha çok yük üstlenebilmesini, hemde bir websitesinin bir masaüstü veya mobil uygulama gibi, uzak sunucusundan tamamen bağımsız çalışabilmesine olanak sağladı. Tarayıcı ve Sunucularda çalışan sistemlerin birbirinden bağımsız çalışabilmesi ve geliştirilebilmesi; Javascript kullanarak sitemize entegre edebileceğimiz 3.

Hakkımda

Merhaba, ben Yiğitcan! Lise yıllarımdan beri yazılımla ilgileniyorum. Şuanda Trakya Üniversitesi‘nde Bilgisayar Teknolojisi ve Bilişim Sistemleri okumaktayım. Son 5 yılda, bir çok dil ve teknoloji ile haşır neşir oldum. Web, Mobil ve Masaüstü olmak üzere bir çok platformda yazılım yapma şansı yakaladım. Son zamanlarda; karar vermekte ne kadar zorlanmış olsamda; Scala ve NodeJS dillerini kullanarak, Microservice mimarisinde ve Container teknolojilerinde kendimi geliştirme kararı aldım. Şuanda özellikle DevOps konuları ve Backend development ile ilgilenmekteyim.