Skip to content

Latest commit

 

History

History
182 lines (128 loc) · 25.8 KB

README.md

File metadata and controls

182 lines (128 loc) · 25.8 KB

Friday Night Programmer

Bu sene boyunca yapacağımız Friday Night Programmer çalışmalarını toplayacağımız genel repodur.

Önsöz

Yeni yıl planlarım arasında yer alan ve çok uzun zamandır gerçekleştirmek istediğim bir canlı yayın serisi var. Her cuma gecesi kendimi geliştirmek, tecrübelerimi aktarmak, bilgilerimi pekiştirmek ve tartışmak için çalışma masamın başında olmayı planlıyorum. Programın misyonu ve içeriği aşağıdaki gibidir.

image

Oyun Sahası Hakkında

Friday Night Programmer uzun soluklu bir çalışma alanı. Tek bir proje değil de birden fazla konuyu ele almak için, çeşitli pratikler ve kod antrenmanları yapmak için kullandığım bir alan. Bu oyun sahasında zaman içerisinde birçok eklenti, yardımcı araç veya fikir gündeme gelecek. Bu eklemeler yeni ihtiyaçları da beraberinde getirecek. Örneğin sisteme eklediğim bağımsız servis sayısı arttıkça bunların kolayca keşfedilmesini sağlamak için (Service Discovery) Consul aracına ihtiyaç olacak. Ya da genel bir ftp ortamı için bir docker imajı gerekecek. Dolayısıyla oyun sahası zamanla genişleyecek. İçeriye alınan enstrümanları göz önüne aldığımızda aşağıdaki gibi bir High Level Diagram göz önüne alabiliriz.

High Level Diagram of Playground

Genel Ortamlar başlığı altında yer alan enstrümanlar docker-compose üzerinden kullanılır. docker-compose.yml dosyasını inceleyebilirsiniz. Docker içeriklerini ayağa kaldırmak için aşağıdaki komutu çalıştırmak yeterlidir. Elbette sistemde docker'ın yüklü olduğunu varsayıyorum.

docker-compose up -d

Bununla birlikte servislerin sayısı arttıkça onları nasıl çağırdığımızı da unutabiliriz. Var olan ve ilerleyen zamanlarda eklenemsi düşünülen servisler için bir Postman koleksiyonundan yararlanılması iyi olacaktır. İlgili dosyaya buradan ulaşabilirsiniz. Bu arada yer yer api adreslerini Environment değişkenleri ile de tutmak yararlı olabilir. Örneğin project_api servisi için docker adresi environment değişkeni olarak eklenmiştir. Bu anlamda Environment dosyasını Postman ortamına aktarmakta yarar var.

Yardımcı Dokümanlar

Sezon boyunca yardımcı olabilecek bazı dokümanlar, araçlar, gereçler...

  • Bölümlerde ele alınacak ana senaryolar Use Cases isimli dokümanda yer almaktadır.
  • Sezon boyunca birçok dummy uygulamaya ihtiyacımız olacak. Dummy servisler, veritabanları, docker imajları vs Bunlara ait özet bilgileri Utilities dokümanında bulabilirsiniz.

Diğer yandan bazı işlerimizi kolaylaştıracak rehber niteliğindeki how to dokümanları da aşağıdaki listede toplanabilir.

Chapter 00 - Hello World (3 0cak 2025 Cuma, 21:30 - 22:30)

Yayın Linki

Bu ilk yayınımız tanışma ile geçti. Yayın sırasında aşağıdaki başlıklara değindiğimiz oldu.

Yayının ilerleyen kısımlarında şu konu üzerinde durmaya çalıştık. Managed/Unmanaged ortamlar ve burada Rust'ın konumu. C# ve Java gibi managed environment'ler üzerinde koşan diller esasında line of business diye ifade edebileceğimiz iş çözümlerinin hızlı, az hatayla geliştirilmesinde endüstriyel olarak kendilerini kanıtlamış diller. Bu ortamlar belleği bizim için yönetir ve GC (Garbage Collector) gibi mekanizmalar kullanılmayan referansların bellekten düşürülmesini unutmamızı engeller (en basit anlamda) Java ve C# kodları derlendiğinde bir ara kod çıktısı oluşur ve bir çalışma zamanı (runtime) bu kodları yürütür. Bu çalışma zamanı olası program çökmelerine karşı istisnaları (exception) yönetmemizi de sağlar. Tür güvenliği (type safety) söz konusudur, geniş kütüphane desteği ile birçok işlevi kolayca gerçekleştirmemizi sağlarlar.

image

Ancak uzaya gönderdiğimiz bir mekiğin yörünge hesaplama modülü ve bağlı sistemlerinde, ya da az enerji tüketimi ile yüksek hesaplama sürelerine çıkmamız beklenen akıllı bir donanım modülünde, gömülü sistemlerin çoğunda, makinelerin programlamasında pek fazla tercih edilmezler. Burada devreye unmanaged ortamlarda koşan C, C++ gibi diller giler. Ne varki bu dillerde kodlama yapmak epey külfetli olabilir. Memory optimazasyonunu çok ileri seviyede yapabilsekde referansların yönetimi kolay değildir. Kullanılmayan bir referansı bellekte düşürmeyi unutmaya görün veya boşaltılmış bir bellek alanına referans eden başka bir atamayı gözden kaçırmaya görün... Olaylar karışabilir ve aşağıdaki gibi bir çok sorun tarihe altın harflerle kazınabilir.

image

Görsel DevNot Summit 2023'te yaptığım Rust dili sunumuna aittir. İşte tam bu notkada hızlı geliştirme yapmamızı sağlayan güvenli ortamlarla, yüksek hız ve performansa kavuşabildiğimiz ama geliştirmenin görece zor olduğu ortamlar arasında kalırız. Rust tam orta noktada her iki tarafın ihtiyaçlarını giderebilecek kadar güçlü çözümlerle gelir. Unmanaged ortamlarda karşılaşabileceğimiz ve yukarıdaki görselde ifade edilen birçok hatayı henüz derleme _(compile time) aşamasında engeller. Rust dilinin Sustainability Software Engineering tarafında da önemli bir yeri vardır hatta bu konuyu ilk olarak Amazon şu makalesinde ele almıştır. Diğer yandan rust dilinin yazılım güvenliği açısından birçok açığa karşı etkili bir çözüm olduğu ifade edilebilir.

Yayın sırasında Rust programlama dilinin bu kadar çok reklamını yapmadım elbette.

İlk programımız bu şekilde sonlandı diyebilirim. Yayın sırasında her ne kadar sürçü lisan ettiysem affola diyeyim. Bir sonraki canlı yayında görüşmek ümidiyle.

Chapter 01 - A New Hope (10 Ocak 2025 Cuma, 21:30 - 22:30)

Yayın Linki

Bu programda aşağıdaki konulardan bahsettik.

Chapter 02 - War Games (17 Ocak 2025 Cuma, 21:30 - 22:30)

Yayın Linki

Bu programda aşağıdaki konulardan bahsettik.

  • Tavsiye edeceğim kitap Harry Harrison'dan Yer Açın! Yer Açın! Hatta 1973 yılında Soylent Green olarak da sinemaya uyarlanmış.
  • Bahsettiğimiz 1984 Eylül tarihli Sinclair Programs dergisi için şu adrese uğrayabilir ve derginin tamamına ulaşabilirsiniz.
  • Dotty The Kangroo isimli oyun üzerine güzel bir video ve Ian McTavish'i bulma macerası için şu videoya bakılabilir. İlgili oyunu oynamak isterseniz de buradaki emulatorlerden yararlanabilirsiniz.
  • Rust'ı 100 örnek ile öğrenmek isterseniz güzel bir doküman var. İşte burada
  • Google'ın Android takımı için hazırladığı Rust eğitim dokümanı oldukça doyurucu.
  • Google'ın kapattığı projeleri öğrenmek isterseniz bir mezarlık var.
  • Web sitelerinde kullanıcıların en sevmediği şey sanırım 404 hatası almak. Ancak bunu da kullanıcı dostu hale getiriyorlar.
  • Readme dokümanlarını hazırlarken yazı stillerini düzenlemekte kullanabileceğimiz kavramların özetine buradan ulaşabilirsiniz.
  • .Net platformu için kullanılabilecek araçların derlenmiş bir listesi Arada sırada güncellense de topluca türlü bilgilere ulaşabileceğimiz bir alan.

Chapter 03 - Ready, Player One (31 Ocak 2025 Cuma, 21:30 - 22:30)

Yayın Linki

Bu programda aşağıdaki konulardan bahsettik.

  • Futbol ekonomisinin büyüklüğünü gözler önüne seren Deloitte analizi ile başladık. Detaylar burada. Ayrıca La Liga'nın Microsoft CoPilot ile olan işbirlikteliğine baktık.
  • Dünyanın ilk ev içi oyun konsolu olan Magnavox'u ve 1972 yılı yapımı Tennis oyununa baktık. Youtube videosu burada. Oyun konsolunun kullanım kılavuzuna da Internet Arşivinden bakılabilir. Ayrıca diğer oyun konsolları ile ilgili detaylı bir sitede var. Teknoloji tarihçesini sevenler için tam bir hazine, Video Game Console Library
  • Bu bölüm değindiğim iki kitap var. Birisi The Nostalgia Nerd's Retro Tech diğeri ise System Programming with Rust
  • Rust'ın Linux çekirdeğindeki kullanımı da artıyor. Bilgilendirme yazısı şurada
  • Eğer Rust ile bir işletim sistemi yazmayı düşünüyorsanız hangi yollardan ilerleyebileceğinizi anlatan dolu dolu bir blog var. İlk bölümde bare metal programming'e giriş yapıyor ardından VGA kartının belleğine doğrudan erişerek işletim sisteminin terminal ekranını tasarlıyorsunuz. Kaçırmayın
  • Rust ile C# ın belli noktalarda kıyaslandığı bir yazıya da değindik. Hatta sevgili Salih Cantekin hocanın blog yazısına da uğradık, In place string reverse in Rust Bora Kaşmer hocamızı unutur muyuz? Microsoft Teams’e bir Worker Üzerinden Mesaj Atmak
  • Eğer 2025 yılında bir yazılım geliştirici olarak kendinize çeşitli challenge'lar arıyorsanız bu yazı size birkaç fikir verebilir.
  • Sıklıkla ThoughtWorks firmasının teknoloji radarını takip etmenizi öneriyorum. Bu son yazıda en çok dikkatimi çeken Replacing pair programming with AI tekniğinin uzun vadede zarar vereceğini ve kullanılmamasının tavsiye edildiğini belirten kısım oldu.
  • Repodaki gelişmelere de değindik. Yeni bir Use Case' imiz var. Use Case dokümanındaki UC01 kodlu vaka. Projemizde src klasöründe yer alıyor. İlk etapta servis tarafının geliştirilmesi söz konusu. projects_api isimli rust uygulamasına bakabilirsiniz. Test için gerekli postman dosyası ise burada. Ayrıca Rust ile WASM kullanımının ele alındığı basit bir senaryodan da bahsettik. Detaylara bu yazıdan ulaşabilirsiniz.
  • Gelen bir soru üzerine ufakta olsa CAP teoremi üzerine konuştuk. Kısaca bir dağıtık sistemde Consistency, Availability ve Partition Tolerance kavramlarının üçü bir arada olamaz üzerine dayalı.

Sonraki yayında yazılım mimarilerine de değineceğiz.

Chapter 04 - The Usual Suspects (7 Şubat 2025 Cuma, 21:30 - 22:30)

Yayın Linki

Bu programa geçen bölümden gelen bir soru üzerine yazılım mimarisi seçiminde yaparken nelere dikkat ederiz ile başlıyoruz. Ben bu konu ile ilgili referans kitap olarak Richards & Ford’ un Fundamentals of Software Architecture kitabını öneriyorum.

  • Mimariler, servisler vs demişken kullandığımız çatıların her zaman kontrol altında tutulması da gerekiyor. Bu haftanın gündemine düşen bir diğer konuda güvenlik açıkları ile ilgili. CISA tags Microsoft .NET and Apache OFBiz bugs as exploited in attacks yazısında belirtildiğine göre eski dostumuz .Net Remoting ile ilgili bir açıkda varmış. Diğeride Apache'nin Open For Business ürününe ait.
  • Haftanın oyunu (Airborne Empire) Oyunla alakalı Steamdb üstünden de bilgi alınabilir. Oyun Unity ile geliştirilmiş bir koloni simülasyon oyunu. Diğerlerinden farklı olarak koloniniz havada uçan bir şehir ve sizi sık sık bela olan korsan pilotlar mevcut.
  • O'Reilly, kendi öğrenim platformundaki bilgilerden yararlanarak yıllık bir rapor yayınlamış ve 2025 yılı teknoloji trendlerinden bahsetmiş. Programda yazının detayları (Özellikle programlama dilleri bölümü) üzerinde durduk. Buradan okuyabilirsiniz.
  • The Angry Dev'in C# geliştiricilerinin neden Rust öğrenmesi gerektiğini vurguladığu güzel bir karşılaştırma yazısına denk geldim; Why C# Developers Should Also Learn Rust, and What It Can Teach Them
  • Bir başka güzel yazıda Rust'ın özelliklerinin hangi dillerden esinlenilerek alındığını da içeren şu yazı. Stop saying Rust is Complicated. Bu yazıda Rust'ın sadece bir sistem programla dili olarak değil birçok alanda kullanılabileceği de belirtiliyor. Mesela WASM ile birlikte. Bende ilkel bir WASM oyunumu paylaşayım. Yarıda bırakmış olsam da ilgilenenler daha ileri bir seviyeye taşıyabilirler.
  • Gömülü sistemler ve emniyet-kritik olanlar demişken güzel bir podcast'e de denk geldim. Volvo' da bir Rust eko sisteminin oluşturulmasının hikayesini merak ediyorsanız buyrun. Volvo with Julius Gustavsson - Rust in Production Podcast
  • Gömülü sistemlerde Rust ile geliştirme yapmayı öğrenmek istiyorsanız A 5-Step Guide For Learning Embedded Rust iyi bir giriş noktası olabilir (Bu arada pek çok noktada HAL diye bir kavram geçiyor. Bu tabii Kubrick' in Space Odyssey filmindeki HAL 9000 değil :D Hardware Abstraction Layer manasında geçen bir kavram)
  • Emniyet-kritik sistemler (Safety-Critical Systems) açık kaynak yazılımların belirli güvenlik standartlarına göre sertifikalandırılmasını ifade eder. Bu tür yazılımlar, hataların ciddi sonuçlar doğurabileceği alanlarda kullanılır, örneğin:
  • ESP kodlu mikro denetleyicilerde Rust ile geliştirme yapmak isterseniz genele açık şu kitabı tavsiye ederim. Introduction - The Rust on ESP Book ESP
  • Mikrodenetleyicilerde genellikle farklı bir işletim sistemi çalışır. RTOS (Real Time Operating System) olarak adlandırılır. Temelleri için RTOS Fundamentals - FreeRTOS™ isimli dokümana bakılabilir. Ayrıca iki örnek işletim sistemi şunlar; Zephyr Project ve FreeRTOS
  • Bu bölümde yer verdiğim kitap ise Sovyetler döneminin en önemli bilim kurgu yazarlarından olan Arkadi ve Boris Strugatski kardeşlerin 1997 yılında kaleme aldığı Kıyamete Bir Milyar Yıl

Programda ayrıca Örnek Senaryolar dokümanındaki UC02 - İzole Edilmiş SMTP Server ve UC03 - Servisler Arası İletişim içim gRPC Kullanımı konularına da değinildi.

Chapter 05 - Dark City (14 Şubat 2025 Cuma, 21:30 - 22:30)

Yayın Linki

  • Bu programda Stanley G. Weinbaum' un Bir Mars Destanı isimli bilim kurgu öyküsünü ve başka öykülerini de içeren kitabı tavsiye ettik. Kitapla ilgili Bilimkurgu.com sitesinde güzel de bir bilgilendirme mevcut. 1930'larda bilim kurgu dergilerini merak ediyorsanız şuraya ve buraya da bakabilirsiniz. Ayrıca Türkiye Bilişim Derneği'nin de bilim kurgu öyküleri üzerine yarışması olduğunu biliyor muydunuz? Detaylar burada
  • Haftanın oyunu yine Unity ile yazılmış olan Kingdom two Crowns. Ayrıca oyunun OST müziklerine de buradan ulaşabilirsiniz.
  • Yayında değindiğimiz, Primitive Obsession olarak bilinen ve DDD içinde ayrı bir yeri olan Value Object konusuna ait Nuget paketine buradan erişebilirsiniz. Github reposu ise şurada
  • Asp.Net Middleware konusunu tekrar etmek isterseniz şu adresteki yazıya bakabilirsiniz.
  • Programda ayrıca Ollama üzerinden deepseek-r1 modelini kullanarak kod kalite ölçümüne değindik. Detaylar şurada
  • Diğer yandan Rust dilinde enum türünün etkili kullanımına da baktık ki bu konuyla ilgili şu yazıya bakabilirsiniz.

Chapter 06 - Memento (21 Şubat 2025 Cuma, 21:30 - 22:30)

Yayın Linki

Bu bölümde sırasıyla aşağıdaki konulara yer verdik.

  • Microsoft geliştirdiği yeni malzeme ve ünlü teorik fizikçi Ettore Majarona'nın fermiyonlarını bir araya getirerek milyon seviyede qubit' i avuçiçi büyüklüğünde bir işlemciye yerleştirmeyi başarmış. Detaylar burada Tabii bu konuya giriş noktamız ise Microsoft Q# oldu
  • Free Open Source Developers European Meeting (FOSDEM) organizasyonun tüm sunumlarına bu adresten erişiliebilir.
  • Haftanın oyunu yine Unity ile geliştirilmiş olan Windows, MacOs, Linux, Steam Deck gibi tüm platformlardan çalışan Rouge-like turn based combat game olarak ifade edilen Shogun Showdown
  • Bu hafta radarıma takılan yazılar ise şöyle; Salih Cantekin Rust türlerine yeni davranışlar eklerken trait'lerin nasıl kullanıldığına değinmiş. Farklı seviyeden C# geliştiricileri için olası mülakat soruları ve cevaplarını da buradaki blog yazısından okuyabiliriz. Rust ile oyun geliştirme tarafında en çok kullanılan motorlardan birisi Bevy Game Engine. Jetbrains tarafından Vitaly Bragilevsky' nin bu konu ile ilgili çok güzel bir yazısına denk geldim.
  • Ayrıca Unity benzeri arabirimi ile oyun geliştirmeye farklı bir boyut kazandıran Fyrox Game Engine ile ilgili bir deneme yaptık. Bu oyun geliştirme motoru ile ilgili detaylı bilgi için resmi kitabına bakılabilir.
  • Rust ile ilgili en çok gelen sorulardan birisi de iş alanının ne kadar geniş olduğu. Bu konuda güzel bir raporlama sitesi var.
  • Bu yayın Entity Component System konusuna da değindik. Özellikle Composition over Inheritance prensibi üstünde de durduk. Burada kısa bir özeti yer alıyor.
  • Yayınımızda bir kuple de mono-bird oyunuma değindik. Rust ve SDL2 kullanılarak yazılmış oyun kodlarına repodan bakabilirsiniz.

Chapter 07 - Johnny Mnemonic

Chapter 08 - Return of the King