Global Interpreter Lock (GIL): Thread’ler Neden Tek Çekirdeğe Takılır?

global-interpreter-lock-18

Bir programda onlarca iş parçacığı oluşturduğunuz hâlde işlemci kullanımının tek çekirdeğin çevresinde dolaştığını görmek şaşırtıcı olabilir. Bunun yaygın nedenlerinden biri, özellikle CPython gibi yorumlayıcılarda bulunan Global Interpreter Lock (GIL) mekanizmasıdır. GIL, belleği korumayı kolaylaştırırken CPU ağırlıklı thread’lerin gerçek paralelliğini sınırlar; ancak doğru eşzamanlılık modeli seçildiğinde bu sınıra takılmadan verimli uygulamalar geliştirilebilir.

Devamı...

Derleyicinin Çöp Kutusu: Ölü Kod Eleme Nasıl Çalışır?

Kodunuzda kimsenin ziyaret etmediği bir if dalı veya hesaplanıp unutulan bir değişken bulunabilir. Bunlar kaynak dosyada gayet canlı görünse de programın gözlemlenebilir sonucuna katkı sağlamaz. Derleyicilerin ölü kod eleme (Dead Code Elimination, DCE) optimizasyonu, bu gereksiz parçaları belirleyip makine kodundan çıkarır. Sonuç genellikle daha küçük, daha hızlı ve işlemci önbelleğiyle daha iyi anlaşan bir programdır.

Devamı...

CAP Teoremi: Dağıtık Sistemlerde Üç İdealden Hangisi Feda Edilir?

Dağıtık sistem tasarlamak, üç önemli özelliği aynı valize sığdırmaya çalışmaya benzer: tutarlılık, erişilebilirlik ve ağ bölünmelerine tolerans. CAP Teoremi, ağ koptuğunda bu valizin kapanmayacağını ve mimarın zorunlu bir seçim yapması gerektiğini söyler. Bu nedenle mesele “mükemmel veritabanını” bulmak değil, sistemin hangi hata durumunda nasıl davranacağını bilinçli biçimde belirlemektir.

Devamı...

Biyoinformatikte DNA Dizilimi: Smith-Waterman ile Mutasyonların Peşinde

İnsan genomu yaklaşık 3 milyar nükleotitten oluşur. Bu devasa metin içinde tek bir harfin değişmesi, eklenmesi veya silinmesi bile biyolojik açıdan önemli bir mutasyonu gösterebilir. Ancak DNA dizilerini sıradan metinler gibi karşılaştırmak yeterli değildir; evrimsel değişimleri, boşlukları ve hatalı okumaları hesaba katan özel algoritmalara ihtiyaç duyarız.

Devamı...

YOLO Mimarisi: Bilgisayar Görüşünün Tek Bakışta Nesne Avcısı

yolo-mimarisi-bilgisayar-94

Bir fotoğraftaki kediyi bulmak kolay görünebilir; fakat bilgisayarın aynı anda kediyi, koltuğu ve masayı tanıyıp konumlarını milisaniyeler içinde işaretlemesi ciddi bir problemdir. YOLO, yani You Only Look Once, bu problemi görüntüye yalnızca bir kez bakarak çözen hızlı bir nesne tespiti ailesidir. Klasik yöntemlerin aksine önce bölge arayıp sonra sınıflandırma yapmak yerine bütün işlemi tek bir sinir ağı geçişinde tamamlar.

Devamı...

Yapay Zekâ İmalı Konuşunca Şaşırıyor: Duygu Analizinde Sarkazm, Mecaz ve İroni

yapay-zeka-imali-33

Bir forum kullanıcısı “Harika, uygulama yine çöktü; tam da ihtiyacım olan şeydi!” yazdığında insan zihni olumsuzluğu hemen sezer. Duygu analizi modeli ise “harika” ve “ihtiyacım olan” ifadelerine bakarak yorumu olumlu sınıflandırabilir. Çünkü sarkazm, mecaz ve ironi, sözcüklerin sözlük anlamıyla konuşanın gerçek niyeti arasına görünmez bir mesafe koyar.

Devamı...

Web3 Mimarisi: DApp’lerin Dağıtık Arka Planını Anlamak

Bir DApp ilk bakışta React, Vue veya sade JavaScript ile hazırlanmış sıradan bir web uygulamasına benzeyebilir. Ancak kullanıcı “Gönder” düğmesine bastığında istek merkezi bir API sunucusuna değil, cüzdan tarafından imzalanarak dağıtık bir ağa gider. Veritabanı rolünü blokzincir, iş kurallarını ise akıllı sözleşmeler üstlenir. Kısacası görünen yüz tanıdık, motor bölümü oldukça farklıdır.

Devamı...

Sistem Yöneticileri İçin SSH Tünelleme: Kapalı Portlara Güvenli Erişim

SSH tünelleme, doğrudan internete açılmaması gereken veritabanı, yönetim paneli ve iç ağ servislerine şifreli bir kanal üzerinden erişmenin pratik yoludur. Buradaki amaç güvenlik politikalarını izinsiz biçimde delmek değil; yetkili olduğunuz sistemlerde, güvenlik duvarının izin verdiği SSH bağlantısını kontrollü bir geçit olarak kullanmaktır. Kısacası SSH, yalnızca uzak terminal değil, aynı zamanda cebinizde taşıdığınız şifreli bir ağ borusudur.

Devamı...

OpenAPI ile REST Servislerini Konuşturan Dokümantasyon Kültürü

Bir REST servisini geliştirmek bazen kalabalık bir restoranda sipariş vermeye benzer: İstemci başka bir şey söyler, sunucu başka bir şey anlar, test ekibi ise menüde hiç bulunmayan bir yanıtla karşılaşır. OpenAPI Standardı, diğer adıyla Açık API Standardı, bu iletişim kazalarını azaltmak için endpoint’leri, parametreleri, veri modellerini ve olası yanıtları makineler tarafından da okunabilen ortak bir sözleşmede tanımlar.

openapi-ile-rest-65

Devamı...

Kodlamada Siper Etkisi: Ekipler Aynı Projede, Ama Farklı Dünyalarda

Büyük bir yazılım projesinde mobil ekip yeni bir özellik geliştirirken backend ekibi API’yi değiştirmiş, güvenlik ekibi farklı bir kimlik doğrulama standardına geçmiş ve operasyon ekibi bunların hiçbirinden haberdar olmamış olabilir. Her ekip kendi bölgesini başarıyla savunur; fakat ortaya çıkan ürün, birbirine uymayan parçalarla dolu teknolojik bir yapboza dönüşür. İşte bu görünmez ayrışmaya Siper Etkisi, yani Silo Effect denir.

kodlamada-siper-etkisi-36

Devamı...

Gömülü Sistemlerin Son Savunma Hattı: Watchdog Zamanlayıcıları

gomulu-sistemlerin-son-97

Bir mikrodenetleyici çalışırken kodun sonsuz döngüye girmesi, bir çevre biriminin yanıt vermemesi veya beklenmeyen bir bellek hatası tüm sistemi sessizce kilitleyebilir. İnsan müdahalesinin mümkün olmadığı otomobillerde, endüstriyel kontrol kartlarında ve uzaktaki IoT cihazlarında bu durum ciddi sonuçlar doğurur. Watchdog zamanlayıcısı, yazılımın hâlâ sağlıklı olduğunu düzenli olarak kanıtlamasını isteyen ve kanıt gelmezse sistemi otomatik olarak yeniden başlatan küçük ama etkili bir güvenlik mekanizmasıdır.

Devamı...

Event Sourcing: Sistemin Geçmişini Yeniden Oynatmak

event-sourcing-sistemin-72

Bir banka hesabındaki bakiyenin 1.250 TL olduğunu bilmek faydalıdır; ancak bu bakiyeye nasıl ulaşıldığını bilmek çok daha güçlüdür. Event Sourcing, yalnızca güncel durumu saklamak yerine, durumu meydana getiren bütün olayları değiştirilemez bir günlükte tutar. Böylece sistemin geçmişi silinmez; gerektiğinde baştan oynatılarak herhangi bir andaki durum yeniden oluşturulabilir.

Devamı...

A/B Testlerinde P-Değeri: Arayüz Değişikliği Gerçekten İşe Yarıyor mu?

Yeni ödeme butonunu yeşile boyadınız ve dönüşüm oranı %4,0’dan %4,4’e çıktı. Tasarım ekibi kutlama hazırlığında, ürün yöneticisi ise sunuma roket emojileri ekliyor. Fakat durun: Bu artış gerçekten yeni arayüzden mi kaynaklandı, yoksa kullanıcıların rastlantısal davranışlarından mı? A/B testlerindeki p-değeri, tam olarak bu soruyu yanıtlamaya yardımcı olur.

Devamı...

Veri Ambarlarında Kar Tanesi Şeması: Daha Az Tekrar, Daha Çok JOIN

Bir veri ambarında aynı şehir, kategori veya marka bilgisinin binlerce kez tekrarlandığını gördüğünüzde içinizdeki düzen tutkunu geliştirici hemen normalizasyon düğmesine basmak isteyebilir. Kar tanesi şeması, tam olarak bu isteğin veri modeline dönüşmüş hâlidir: Boyut tablolarını alt tablolara ayırarak tekrarı azaltır, bütünlüğü güçlendirir ve karşılığında sorgulara birkaç JOIN daha hediye eder.

Devamı...

Otonom Araç İkilemleri: Faydacı Etiği Algoritmaya Dönüştürmek

Otonom bir araç, kazanın artık fiziksel olarak önlenemediği birkaç milisaniyede nasıl davranmalıdır? Bu soru genellikle “Yolcuyu mu, yayayı mı korusun?” biçiminde sorulsa da gerçek dünya, klasik tramvay probleminden çok daha karmaşıktır. Belirsiz sensör verileri, farklı yaralanma ihtimalleri ve hukuki yükümlülükler aynı anda değerlendirilir. Dolayısıyla etik algoritma, kime çarpılacağını seçen soğuk bir hâkim değil; beklenen zararı güvenli ve denetlenebilir kurallarla azaltmaya çalışan son savunma katmanıdır.

otonom-arac-ikilemleri-95

Devamı...

Mikroişlemcilerde Dal Tahmini: CPU Geleceği Nasıl Tahmin Ediyor?

mikroislemcilerde-dal-tahmini-44

Modern işlemciler yalnızca komutları çalıştırmaz; bir sonraki komutun hangisi olacağını tahmin etmeye de çalışır. Özellikle if, else, döngü ve koşullu sıçrama içeren kodlarda kullanılan dal tahmini (branch prediction), işlemcinin boru hattını dolu tutarak performansı artırır. Kısacası CPU, kodun geleceği hakkında küçük ama son derece hızlı bahisler oynar.

Devamı...

Kriptografide ECC: Küçük Anahtarların Büyük Matematiği

kriptografide-ecc-kucuk-88

Kriptografi dünyasında “daha büyük anahtar, daha güçlü güvenlik” düşüncesi her zaman geçerli değildir. Eliptik Eğri Kriptografisi (Elliptic Curve Cryptography veya ECC), zekice seçilmiş matematiksel yapılar sayesinde RSA gibi klasik açık anahtarlı yöntemlerle benzer güvenliği çok daha kısa anahtarlarla sunar. Böylece özellikle mobil cihazlarda, akıllı kartlarda ve IoT sistemlerinde daha az bellek, bant genişliği ve enerji tüketimi hedeflenir.

Devamı...

Graf Veritabanlarıyla Forumun Görünmeyen Güç Haritasını Çıkarmak

Bir forum yalnızca mesajların sıralandığı dijital bir pano değildir; üyelerin cevap verdiği, tartıştığı, destek olduğu ve bazen küçük krallıklar kurduğu canlı bir ilişkiler ağıdır. Graf veritabanları sayesinde bu ağı çizge olarak modelleyebilir, topluluğun merkezindeki kullanıcıları ve görünmeyen hiyerarşisini matematiksel metriklerle ortaya çıkarabiliriz.

Devamı...