Select İfadesi ile Çoklu Kanal Yönetimi

Modern yazılımlarda işler sırayla değil, çoğu zaman aynı anda olur: kullanıcıdan mesaj gelir, ağdan cevap döner, zamanlayıcı tetiklenir, iptal sinyali ulaşır. Go dilindeki select ifadesi tam bu karmaşada trafik polisi gibi davranır; birden fazla kanalı aynı anda dinler ve hangi kanal hazırsa onu bloklanmadan işleme alır.

Devamı...

Rastgele Sayı Üretmenin Felsefesi: Determinist Bir Evrende Gerçekten Rastgele Var mı?

Bilgisayarların zar atabildiğini düşünmek tatlı bir yanılsamadır; çünkü işlemcinin içinde minik bir kumarbaz yoktur. Bir programın ürettiği sayı çoğu zaman, sadece iyi gizlenmiş bir düzenin sonucudur. İşte bu yüzden rastgele sayı üretimi, hem yazılım mühendisliğinin pratik bir konusu hem de ‘evren gerçekten öngörülebilir mi?’ sorusuna açılan küçük ama derin bir kapıdır.

Devamı...

Paket Yönetimi ve Go Modules: Go Projelerini Düzenli, Güvenli ve Tekrarlanabilir Tutmak

Bir Go projesi büyüdükçe kodu tek dosyada tutmak, mutfakta tüm malzemeleri aynı çekmeceye atmaya benzer: başta pratik görünür, sonra tarçınla tornavidayı karıştırırsın. Paket yönetimi ve Go Modules, kodu yeniden kullanılabilir parçalara ayırmayı, dış kütüphaneleri doğru sürümle projeye dahil etmeyi ve aynı projenin farklı makinelerde aynı şekilde çalışmasını sağlar.

Devamı...

Kod Arkeolojisi: Terk Edilmiş Repolardan Algoritma Hazinesi Çıkarmak

Terk edilmiş açık kaynak repoları, yazılım dünyasının tozlu tavan araları gibidir: kırık README’ler, çalışmayan CI rozetleri ve arada bir “Bunu kim, nasıl düşünmüş?” dedirten parlak fikirler. Kod arkeolojisi tam da burada başlar; amaç eski kodu kutsamak değil, içindeki zekice çözümü bugünün diliyle yeniden anlamaktır.

Devamı...

Go ile Temel HTTP Web Sunucusu Geliştirme

Go ile web sunucusu yazmak, mutfağa girip “Ben bugün internet pişireceğim” demek gibidir: az malzemeyle şaşırtıcı derecede doyurucu sonuç alırsın. Go’nun standart kütüphanesindeki net/http paketi, harici framework kurmadan HTTP isteklerini dinleyen, yönlendiren ve yanıtlayan sade ama güçlü bir sunucu ayağa kaldırmamızı sağlar.

Devamı...

Go ile JSON İşlemleri ve Veri Serileştirme

Modern yazılımlar artık tek başına yaşayan küçük adacıklar değil; API’ler, mikroservisler, mobil uygulamalar ve üçüncü parti sistemlerle sürekli konuşan sosyal kelebekler. Go tarafında bu sohbetin en popüler dili JSON’dır. Bir Go yapısını JSON’a çevirmek, valize kıyafet yerleştirmeye benzer: veriyi dış dünyaya taşınabilir, okunabilir ve standart bir forma sokarız. Gelen JSON’u tekrar Go struct’ına çözmek ise valizi açıp eşyaları doğru çekmecelere yerleştirmektir.

Devamı...

Dosya İşlemleri ve I/O Akışları: Veriyi Diskle Dans Ettirmek

Bir programın dış dünyayla konuşmasının en eski ama en vazgeçilmez yolu dosyalardır. Günlük tutan bir uygulama, JSON ayarı okuyan bir oyun, CSV raporu üreten bir analiz aracı ya da büyük veri parçasını satır satır işleyen bir servis… Hepsi aslında aynı soruyu sorar: Veriyi güvenli, hızlı ve anlaşılır biçimde nasıl okur/yazarım?

Devamı...

Birim Testleri ve Profil Analizi: Koduna Dedektif Gibi Yaklaş

Kod yazmak bazen Lego yapmak gibidir: Parçalar tek tek güzel görünür ama kuleyi kaldırınca ortadan ikiye ayrılıyorsa bir yerde hata vardır. Birim testleri, bu Lego parçalarının tek başına sağlam olup olmadığını kontrol eder. Profil analizi ise aynı parçaların ne kadar hızlı, ne kadar bellekle ve hangi maliyetle çalıştığını gösterir. Yani biri doğruluk dedektifi, diğeri performans dedektifidir.

Devamı...

Yapılar (Structs) ve Veri Odaklı Tasarım: Veriyi Kahraman Yapmak

Programlamada bazen bir şeyi nesne gibi davranışlarıyla değil, taşıdığı verilerle düşünmek daha doğrudur. İşte yapılar, yani structs, tam bu noktada sahneye çıkar. Bir koordinat, renk, sağlık değeri, tarih aralığı veya fiziksel hız vektörü düşünün: Bunlar genellikle küçük, anlamlı ve birlikte taşınması gereken veri paketleridir. Struct, farklı tiplerdeki alanları mantıksal bir bütün halinde gruplar ve özellikle veri odaklı tasarımda gereksiz soyutlama sisini dağıtarak işlemciye daha dost bir programlama modeli sunar.

Devamı...

Hata Yönetimi: Error Değerleri ve Panic-Recover ile Kontrollü Kaos

Bir programın gerçek dünyayla ilk teması genellikle bir hatadır: dosya yoktur, ağ isteği zaman aşımına uğrar, kullanıcı sayı yerine “patates” yazar. Bazı diller bu anlarda istisna fırlatıp akışı dramatik biçimde keserken, Go gibi yaklaşımlar hatayı sıradan bir değer olarak masaya koyar. Yani hata, programın çökmesine çalışan bir canavar değil; kontrol edilmesi gereken bir dönüş değeridir.

Devamı...