JWT Nedir? JSON Web Belirteçleri Bir Çalışma Örneğiyle Açıklanıyor

  1. Ana sayfa
  2. Blog
  3. Yazılım Geliştirme

Yazılım Geliştirme

JWT Nedir? JSON Web Belirteçleri Bir Çalışma Örneğiyle Açıklanıyor

JWT, sunucunun hiçbir şeye bakmadan bir isteğe güvenmesini sağlar. Sıfırdan bir tane oluşturun, onu kurcalamaya çalışın ve başarısızlığını izleyin, ardından belirteçlerin oturumları ne zaman geçtiğini ve bunları güvenli bir şekilde nasıl kullanacağınızı öğrenin.

9 dk okuma
JWT nedir? JSON Web Belirteçleri çalışan bir örnekle açıklandı

Önemli noktalar

  • JWT, üç bölümden oluşan kompakt, imzalı bir jetondur: başlık, yük ve imza.
  • İmza, bir belirtecin değiştirilmediğini kanıtlar, böylece sunucu arama yapmadan ona güvenebilir.
  • Yük, herkes tarafından okunabilir olduğundan, içine asla sır koymayın.
  • Tokenların iptal edilmesi zordur, bu nedenle onları kısa ömürlü tutun ve güvenilir bir kütüphaneyle doğrulayın.

Oturum açtıktan sonra sunucu, sonraki her isteğin gerçekten sizden geldiğini nasıl biliyor? Popüler yanıtlardan biri, genellikle “jot” olarak telaffuz edilen JSON Web Simgesi veya JWT’dir. Bu, istemcinin her istekle birlikte gönderdiği küçük, imzalı bir veri parçasıdır ve sunucu, veri tabanına dokunmadan bunu kontrol edebilir.

Bir JWT’yi anlamanın en hızlı yolu bir tane oluşturmak ve sonra onu kırmaya çalışmaktır. Bunu Python 3.13’te yalnızca Python’un standart kütüphanesini kullanarak yaptık ve aşağıdaki çıktı bu çalıştırmadan geliyor. Bu kod öğrenme amaçlıdır. Gerçek bir uygulamada bakımlı bir kitaplık kullanın çünkü doğrulama ayrıntılarının yanlış anlaşılması kolaydır.

JWT nedir?

JWT, iddiaların iki taraf arasında kompakt bir dize olarak iletilmesine yönelik RFC 7519’da tanımlanan açık bir standarttır. Bir iddia, “bu kullanıcının kimliği 42” gibi basit bir ifadedir. Token imzalandığı için alıcı onu kimin verdiğini ve kimsenin onu değiştirmediğini doğrulayabilir.

Bir festival bilekliği düşünün. Kapıdaki görevliler biletinizi bir kere kontrol edip size sahtesi zor bir bant veriyor. Bundan sonra, bilet gişesini aramanıza gerek kalmadan her kabin sadece gruba bakıyor. Bir JWT, bir API için hemen hemen aynı şekilde çalışır.

JWT girişi nasıl çalışır?

  1. Kullanıcı, giriş uç noktasına bir kullanıcı adı ve şifre gönderir.
  2. Sunucu bunları kontrol eder ve imzalı bir jeton oluşturur.
  3. İstemci jetonu saklar.
  4. Daha sonraki her istek, genellikle bir başlıkta bunu içerir: Authorization: Bearer <token>.
  5. Sunucu imzayı ve geçerlilik süresini doğrular, ardından talepleri okur.

Asıl fayda 5. adımdadır. Sunucunun bir oturumu aramasına gerek yoktur; bu, birçok hizmet veya sunucunun aynı jetonu kontrol etmesi gerektiğinde kullanışlıdır. API’ler konusunda yeniyseniz, API nedir ile başlayın.

JWT’nin üç bölümü

JWT rastgele bir metne benzer, ancak noktalarla ayrılmış üç Base64URL kodlu bölümden oluşur. İşte oluşturduğumuz bir tanesi:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
.eyJzdWIiOiI0MiIsInJvbGUiOiJ1c2VyIiwiaWF0IjoxNzkzNTAwMDAwLCJleHAiOjE3OTM1MDA5MDB9
.7YfUDH_T-iDh8bMmUT8mmKYwOstzT8Ty--DTTAmQGWM

Okumayı kolaylaştırmak için satır sonları ekledik. İlk iki bölümün kodunun çözülmesi düz JSON’u verir:

Header:  {"alg":"HS256","typ":"JWT"}
Payload: {"sub":"42","role":"user","iat":1793500000,"exp":1793500900}
Parça İçerir Amaç
Başlık Belirteç türü ve imzalama algoritması Belirtecin nasıl doğrulanacağını söylüyor
Yük Kullanıcı veya oturumla ilgili talepler Gerçek bilgi
İmza Bir anahtar kullanarak ilk iki parçanın karması Bütünlüğü ve kökeni kanıtlar

Standart iddialar

Talep İsim Anlamı
alt Konu Belirtecin kiminle ilgili olduğu (genellikle bir kullanıcı kimliği)
bu İhraççı Tokenı kim yarattı?
ses Seyirci Tokenin kime yönelik olduğu
deneyim Son kullanma tarihi Belirtecin geçerliliği sona erdiğinde
işte Yayınlandığı tarih Ne zaman yaratıldı
nbf Daha önce değil Geçerli olmaya başladığında
jti JWT Kimliği Bu belirteç için benzersiz bir kimlik

Ayrıca role gibi özel talepler de ekleyebilirsiniz. Zamanlar, saniye cinsinden Unix zaman damgalarıdır. Belirteç her istekle birlikte hareket ettiğinden yükü küçük tutun.

Kendiniz bir tane oluşturun

Belirteç oluşturmak, iki JSON bölümünün kodlanmasını ve ardından bunların HMAC-SHA256 kullanılarak bir sır ile imzalanmasını içerir:

import base64, hashlib, hmac, json

SECRET = b"demo-secret-do-not-use-in-production"

def b64url(data):
    return base64.urlsafe_b64encode(data).rstrip(b"=").decode()

def sign(message):
    return b64url(hmac.new(SECRET, message.encode(), hashlib.sha256).digest())

def create_token(payload):
    header = {"alg": "HS256", "typ": "JWT"}
    parts = [
        b64url(json.dumps(header, separators=(",", ":")).encode()),
        b64url(json.dumps(payload, separators=(",", ":")).encode()),
    ]
    message = ".".join(parts)
    return message + "." + sign(message)

Doğrulama, imzayı yeniden hesaplayarak ve onu jetondakiyle karşılaştırarak çalışır. Yalnızca sırrı bilen biri eşleşen bir sır ortaya çıkarabilir:

def verify_token(token, now):
    header, payload, signature = token.split(".")
    expected = sign(header + "." + payload)
    if not hmac.compare_digest(signature, expected):
        raise ValueError("bad signature")
    claims = json.loads(b64url_decode(payload))
    if claims["exp"] < now:
        raise ValueError("token expired")
    return claims

Geçerli bir token, taleplerini beklendiği gibi geri getirdi. compare_digest sabit zamanda çalıştığı için kullanılır, bu da zamanlama farklılıkları nedeniyle bilgi sızıntısını önler.

Onu karıştırmayı dene

Bir saldırganın veri kodunu çözdüğünü, "role":"user"‘i "role":"admin" olarak değiştirdiğini, tekrar kodladığını ve eski imzayı koruduğunu varsayalım. Bunu diğer iki saldırıyla birlikte denedik:

deneme Sonuç
Rolü yönetici olarak değiştirdim kötü imza
Belirtecin süresi dolduktan 1 saniye sonra kullanıldı belirtecin süresi doldu
"alg":"none"‘i ayarlayın ve imzayı kaldırın kötü imza

Bu son girişim gerçek bir tarihi zayıflığı hedef alıyor. Bazı kütüphaneler bir zamanlar belirtecin kendi başlığına güveniyordu, böylece bir saldırgan imzaya gerek olmadığını kolayca bildirebiliyordu. Kodumuz her zaman tek bir sabit algoritma kullanır, bu yüzden reddedildi. Gerçek bir kütüphanede her zaman kabul ettiğiniz algoritmaları belirtin.

İmzalanmış, şifrelenmemiş

JWT’ler hakkında en yanlış anlaşılan nokta budur. Sahte jetonumuz reddedildi ancak içeriği hala mükemmel bir şekilde okunabiliyordu:

{"sub":"42","role":"admin","iat":1793500000,"exp":1793500900}

Base64URL bir şifrelemedir, şifreleme değildir ve herkes bunu hiçbir anahtara ihtiyaç duymadan tersine çevirebilir. İmza, kişilerin verileri değiştirmesini engeller ancak verileri okumasını engellemez. Bu nedenle hiçbir zaman şifreleri, kart numaralarını veya özel kişisel verileri JWT verisine koymayın. İçeriğin gizlenmesi gerekiyorsa şifrelenmiş belirteçler (JWE) kullanın veya verileri yalnızca sunucuda tutun.

HS256 ve RS256

Görünüş HS256 RS256 veya ES256
Tür Simetrik Asimetrik
Anahtarlar Paylaşılan bir sır Özel anahtar imzalar, genel anahtar ise doğrular
Kimler jeton oluşturabilir? Sırrı tutan herkes Yalnızca özel anahtar sahibi
Şunun için en iyisi: Bir hizmet veya küçük bir güvenilir grup Birçok hizmet, üçüncü taraf, kimlik sağlayıcı

Asimetrik imzalamayla, diğer hizmetler kendi tokenlarını basamadan tokenleri doğrulayabilir, bu da bir tanesinin tehlikeye atılması durumunda hasarı sınırlar.

JWT ve oturumlar

JWT’ler genellikle oturumların modern bir alternatifi olarak sunulur. Gerçekte her birinin değiş tokuşları vardır:

Görünüş Sunucu oturumu JWT
Devletin yaşadığı yer Sunucuda belirteçte
Her istekte arama Genellikle Gerekli değil
Oturumu kapatma veya iptal etme Kolay, oturumu sil Son kullanma tarihi geçmeden zor
İstek başına boyut Küçük kimlik Daha büyük jeton (bizimki 161 karakterdi)
Birçok hizmette Paylaşılan depolama alanına ihtiyaç var Her biri doğrudan doğrulayabilir
İzinleri değiştirme Hemen uygulanır Eski jeton sona erene kadar geçerli kalır

Sunucu tarafından oluşturulan geleneksel bir web sitesi için oturum çerezi genellikle daha basit ve daha güvenlidir. JWT’ler, çeşitli hizmetler tarafından tüketilen API’ler veya mobil istemciler için daha anlamlı olma eğilimindedir.

İpucu: JWT’yi yalnızca vatansız gibi göründüğü için seçmeyin. Birçok gerçek sistem, oturumu kapatmayı desteklemek için bir reddetme listesi veya veritabanı kontrolü ekler; bu, JWT’nin kaçınması gereken aramayı geri getirir.

Jetonların tarayıcıda nerede saklanacağı

Konum XSS riski CSRF riski Notlar
yerelDepolama Komut dosyalarının okuyabileceği kadar yüksek Düşük Basit ancak enjekte edilen herhangi bir komut dosyasına açık
HttpOnly çerezi Komut dosyaları okuyamadığı için daha düşük Korumaya ihtiyaç var Secure ve SameSite‘yi kullanın
Bellek içi değişken Daha düşük Düşük Yenileme sırasında kayboldu, bu nedenle yenileme akışına ihtiyacı var

Birçok güvenlik kılavuzu, web uygulamaları için HttpOnly, Secure, SameSite çerezlerini tercih eder. Hangisini seçerseniz seçin, her zaman HTTPS kullanın. JavaScript’ten jeton göndermek için JavaScript Fetch API eğitimimize bakın.

Belirteçleri yenile

Sürenin kısa olması, çalınan tokenın vereceği zararı sınırlar ancak kimse 15 dakikada bir giriş yapmak istemez. Her zamanki çözüm iki jeton kullanır:

  • Erişim belirteci: dakika gibi kısa ömürlüdür ve her API isteğiyle birlikte gönderilir.
  • Yenileme jetonu: daha uzun ömürlüdür, daha dikkatli bir şekilde saklanır ve yalnızca yeni erişim jetonları elde etmek için kullanılır.

Sunucu, yenileme belirteçlerini takip eder, böylece bunları iptal edebilir, bu da size pratik bir oturum kapatma olanağı sağlar. Bunları her kullanımda döndürmek aynı zamanda hırsızlığı tespit etmenize de yardımcı olur çünkü çalınan eski bir jeton tekrar çalınır.

Yaygın güvenlik hataları

  • Doğrulamadan kod çözme. Bir veriyi okumak onu güvenilir yapmaz. Her zaman imzayı kontrol edin.
  • Herhangi bir algoritmayı kabul etme. İzin verilen algoritmaların açık bir listesini ayarlayın.
  • Zayıf bir sır kullanma. Kısa sırlar çevrimdışı olarak kırılabilir. Uzun bir rastgele değer kullanın ve onu kaynak kontrolünün dışında tutun.
  • Son kullanma tarihi atlanıyor. exp numarası olmayan jetonlar çalınırsa sonsuza kadar çalışabilir.
  • iss ve aud işaretlenmiyor. Aksi takdirde, bir hizmet için verilen jeton başka bir hizmet tarafından kabul edilebilir.
  • Eski taleplere güvenme. Bir jetonun içindeki bir rol, süresi dolana kadar güncelliğini yitirebilir.
  • Günlüğe kaydetme jetonları. Günlüklerinizi okuyan herkes bunları yeniden kullanabilir.
  • Hata yolları test edilmiyor. Geçerli olanların yanı sıra süresi dolmuş ve değiştirilmiş jetonlar için testler ekleyin. Postacı ile API testi kılavuzumuz yardımcı olabilir.

Son sözler

JWT, bir sunucunun arama yapmadan güvenebileceği imzalı verilerdir; gizli bir kapsayıcı değildir ve oturumlar boyunca otomatik yükseltme yapılmaz. Kısa süre sonu kullanın, bakımı yapılan bir kitaplıkla her şeyi doğrulayın ve özel verileri veri yükünün dışında tutun. Bunu kendiniz görmek için bizimki gibi küçük bir komut dosyası çalıştırın, bir belirtecin bir karakterini değiştirin ve doğrulamanın başarısız olduğunu izleyin.

Sık sorulan sorular

JWT ne için kullanılır?

JWT’ler çoğunlukla API’lerde kimlik doğrulama ve yetkilendirme için kullanılır. Oturum açtıktan sonra, istemci her istekle birlikte belirteci gönderir ve sunucu, kullanıcıyı tanımlamak için bunu doğrular.

JWT şifrelenmiş mi?

Genellikle hayır. Standart bir JWT imzalanır ve kodlanır, böylece herkes onun yükünü okuyabilir. İmza yalnızca değişiklikleri engeller. Şifrelenmiş belirteçler, JWE adı verilen ilgili bir formatı kullanır.

Bir JWT ne kadar sürmeli?

Erişim belirteçleri genellikle kısa ömürlüdür; genellikle günler yerine dakikalardır. Bunları bir yenileme jetonuyla eşleştirin, böylece kullanıcıların sürekli oturum açması gerekmez.

JWT iptal edilebilir mi?

Kendi başına değil, çünkü süresi dolana kadar geçerli kalıyor. İptal, durum bilgisi olmayan avantajların bir kısmını ortadan kaldıran, red listesi gibi sunucu tarafı izlemeyi gerektirir.

JWT oturumlardan daha mı iyi?

İkisi de her zaman daha iyi değildir. Oturumların iptal edilmesi ve birçok web sitesine uyması daha kolaydır; JWT’ler ise kimliği bağımsız olarak doğrulaması gereken API’lere ve hizmetlere uygundur.

Öğrenmeye devam et

Stack Quora ile çalışın

Test, WordPress veya SEO konusunda yardıma mı ihtiyacınız var?

Ekiplerin daha iyi yazılımlar sunmasına ve sitelerini büyütmesine yardımcı oluyoruz. Bize ne üzerinde çalıştığınızı söyleyin, biz de bir sonraki adım için net bir öneride bulunalım.

Okumaya devam et

Daha fazla kılavuz test, yapay zeka ve modern geliştirme

Bu makaleyi beğendiniz mi? Bir konu seçin ve doğrudan en yeni eğitimlerimize geçin.

Yapay zekâ

Yapay Zeka Halüsinasyonları Açıklandı: Dil Modelleri Neden İşleri Düzeltiyor ve Nasıl Azaltılabilir?

Yapay zeka halüsinasyonları açıkladı: ne olduklarını, dil modellerinin bunları neden ürettiğini, yaygın türlerini, temellendirme ve yönlendirmelerle…

Makaleyi okuyun →
DevOps

Açıklanan Ortam Değişkenleri: .env Dosyaları, Sırlar ve Yapılandırma Doğru Yapıldı

Çalıştırdığımız Python örnekleriyle açıklanan ortam değişkenleri: bunları okumak ve ayarlamak, neden her değerin bir dize olduğu, .env dosyaları, sü…

Makaleyi okuyun →
Yazılım geliştirme

API Hız Sınırlamasının Açıklaması: Algoritmalar, Başlıklar ve 429 Hatalarının Ele Alınması

API hızı sınırlaması, çalıştırdığımız bir simülasyonla açıklanmıştır: belirteç kümesi, sabit pencere, kayan pencere, 429 yanıt, hız sınırı başlıklar…

Makaleyi okuyun →
Test otomasyonu

Python'da alay etme: Unittest.mock, patch ve Testleri Yalan Yapan Hatalar

Unittest.mock ile Python'da alay etme, test edildi: Sahte ve dönüş_değeri, yan_etki, bir adın kullanıldığı yerde yama uygulama, spesifikasyon ve oto…

Makaleyi okuyun →
Yazılım testi

Kod Kapsamının Açıklaması: Hat ve Şube Kapsamı ve %100'ün Gerçek Anlamı

Kod kapsamı gerçek bir kapsama.py çalışmasıyla açıklanmıştır: hat, şube ve durum kapsamı, bir raporun okunması, %100 kapsamın neden hâlâ hataları ka…

Makaleyi okuyun →
Veritabanları ve SQL

SQL'de DELETE vs TRUNCATE vs DROP: Farklılıklar, Geri Alma ve Her Biri Ne Zaman Kullanılmalı

DELETE vs TRUNCATE vs DROP test edilmiş SQL ile açıklandı: her birinin neyi kaldırdığı, geri aldığı, tetiklediği, kimlik sıfırlaması, hızı ve Postgr…

Makaleyi okuyun →
Veritabanları ve SQL

Açıklanan SQL Görünümleri: Örneklerle Tuzakları Oluşturun, Kullanın ve Önleyin

Çalıştırdığımız sorgularla açıklanan SQL görünümleri: görünüm oluşturma, canlı sonuçlar, sütunları gizleme, performans, güncellenebilir ve gerçekleş…

Makaleyi okuyun →
Yazılım geliştirme

TypeScript Arayüzü ve Tür: Gerçek Farklılıklar, Derleyiciyle Test Edildi

TypeScript arayüzü ve türü, gerçek derleyiciyle kontrol edildi: her ikisinin de yapabileceği, yalnızca birinin yapabileceği, bildirim birleştirme, g…

Makaleyi okuyun →
Yazılım geliştirme

Python *args ve **kwargs'ın Açıklaması: Açık Örneklerle Esnek Fonksiyonlar

Python *args ve **kwargs çalıştırdığımız kodla açıklanmıştır: paketleme ve paketten çıkarma, parametre sırası, yalnızca anahtar kelime ve yalnızca k…

Makaleyi okuyun →
Yazılım geliştirme

Python Lambda İşlevleri: Söz Dizimi, Gerçek Kullanımlar ve Ne Zaman Kullanılmaması Gerektiği

Çalıştırdığımız kodla açıklanan Python lambda işlevleri: sözdizimi, anahtarla sıralama, harita ve filtre, kapatmalar, geç bağlama tuzağı ve normal b…

Makaleyi okuyun →
Yapay zekâ

Yapay Zeka Ajanları Nelerdir? Çalıştırabileceğiniz Basit Bir Aracı Döngüsüyle Nasıl Çalışırlar?

Yapay zeka ajanları nedir? Aracı döngüsüne, araçlara, belleğe ve korkuluklara ilişkin basit bir kılavuz, çalıştırdığımız küçük bir Python döngüsü, g…

Makaleyi okuyun →
DevOps

İzleme ve Gözlemlenebilirlik: Günlükler, Metrikler ve İzlerle Gerçek Fark

İzleme ve gözlemlenebilirliğin açıklanması: bilinen ve bilinmeyen arızalar, günlükler, ölçümler ve izler, ödeme olayının gözden geçirilmesi, altın s…

Makaleyi okuyun →
DevOps

Docker Birimleri ve Bağlama Bağlantıları: Konteyner Verilerini Doğru Şekilde Kalıcılaştırın

Docker birimleri ile bağlama bağlamaları arasındaki karşılaştırma açıklandı: kapsayıcı verilerinin neden kaybolduğu, adlandırılmış birimler, bağlama…

Makaleyi okuyun →
Test otomasyonu

TDD ve BDD: Temel Farklılıklar, Her İki Şekilde Geliştirilmiş Bir Özellik ve Her Birinin Ne Zaman Kullanılacağı

TDD ve BDD, her iki yönde de oluşturulmuş bir indirim özelliğiyle açıklandı: çalıştırdığımız kodla kırmızı-yeşil-refactor, Verilen-Ne Zaman-O Zaman …

Makaleyi okuyun →
Yazılım testi

Kullanıcı Kabul Testi (UAT): Süreç, Kontrol Listesi ve Gerçek Örnekler

Kullanıcı kabul testi açıklandı: bunu kimin yürüttüğü, QA'dan farkı, yedi adımlı bir süreç, bir UAT test senaryosu şablonu, bir kontrol listesi, otu…

Makaleyi okuyun →
Veritabanları ve SQL

Açıklanan SQL NULL Değerleri: IS NULL, COALESCE, NULLIF ve Kaçınılması Gereken Tuzaklar

SQL NULL değerleri, çalıştırdığımız sorgularla açıklandı: üç değerli mantık, IS NULL, COALESCE, NULLIF, toplamaların, birleştirmelerin ve sıralamanı…

Makaleyi okuyun →
Veritabanları ve SQL

SQL CASE WHEN İfadesi: Sözdizimi, Gerçek Örnekler ve Yaygın Hatalar

SQL CASE WHEN çalıştırdığımız sorgularla açıkladı: basit ve aranmış formlar, koşul sırası, SUM'lu pivotlar, COUNT hileleri, özel sıralama, güncellem…

Makaleyi okuyun →
Yazılım geliştirme

JWT Nedir? JSON Web Belirteçleri Bir Çalışma Örneğiyle Açıklanıyor

JWT nedir? JSON Web Tokens açıkladı: üç bölüm, çalıştırdığımız kodda oluşturulan ve üzerinde değişiklik yapılan bir token, JWT ile oturumlar, depola…

Makaleyi okuyun →
Yazılım geliştirme

JavaScript Olay Döngüsü Açıklaması: Örneklerle Çağrı Yığını, Mikro Görevler ve Zamanlayıcılar

JavaScript olay döngüsü çalıştırdığımız kodla açıklandı: çağrı yığını, görev ve mikro görev kuyrukları, setTimeout 0'ın neden anında olmadığı, engel…

Makaleyi okuyun →
Yazılım geliştirme

Python Jeneratörleri ve Verim Açıklaması: Gerçek Örneklerle Bellekten Tasarruf Edin

Python üreteçleri ve verim, çalıştırdığımız kodla açıklandı: nasıl duraklatılır ve devam ettirilir, ölçülen bellek tasarrufları, işlem hatları, sons…

Makaleyi okuyun →
Yapay zekâ

Gömmeler Nelerdir? Vektörler ve Kosinüs Benzerliği Basitçe Açıklandı

Gömmeler nedir? Vektörler, kosinüs benzerliği ve anlamsal aramaya ilişkin sade dilli bir kılavuz; çalıştırdığımız küçük bir örnek, yaygın kullanımla…

Makaleyi okuyun →
DevOps

Mavi-Yeşil ve Kanarya Konuşlandırılması: Farklılıklar, Takaslar ve Nasıl Seçilir

Mavi-yeşil ve kanarya konuşlandırması açıklandı: her birinin nasıl çalıştığı, maliyet, risk ve geri alma, test ettiğimiz istikrarlı kullanıcı grubu,…

Makaleyi okuyun →
Test otomasyonu

Kesintili Testler: Bunların Sebepleri ve Nasıl Düzeltileceği

Yaptığımız demolarla açıklanan hatalı testler: ana nedenler, birinin nasıl doğrulanacağı ve teşhis edileceği, zamanlama için uygun düzeltmeler, payl…

Makaleyi okuyun →
Yazılım testi

Yük Testi ve Stres Testi: Farklılıklar, Metrikler ve k6 Örnekleri

Yük testi ve stres testinin açıklaması: her birinin neyi kanıtladığı, ani yükselme ve soğuma testleri, önemli ölçümler, ortalamaların neden yanıltıc…

Makaleyi okuyun →
Yazılım testi

Test Senaryosu ve Test Senaryosu: Temel Farklılıklar, Örnekler ve Her Biri Ne Zaman Kullanılmalı?

Test senaryosu ve test senaryosunun açıklaması: net tanımlar, yan yana tablo, senaryolardan vakalara, şablonlara ve her birinin ne zaman kullanılaca…

Makaleyi okuyun →
Veritabanları ve SQL

SQL Sorgu Optimizasyonu: Zamanlamalarla Yürütme Planlarını Okuyun ve Yavaş Sorguları Düzeltin

SQL sorgu optimizasyonu bir milyon satırda test edilmiştir: yürütme planlarını okuyun, doğru dizinleri ekleyin, değiştirilemeyen filtreleri düzeltin…

Makaleyi okuyun →
Veritabanları ve SQL

SQL UNION ve UNION ALL: Farklılıklar, Örnekler ve Test Edilmiş Performans

SQL UNION ve UNION ALL, yürüttüğümüz sorgularla açıklandı: kopyalar, her ikisinin de takip ettiği kurallar, gerçek bir veri hatası, ölçülen performa…

Makaleyi okuyun →
Yazılım geliştirme

JavaScript Fetch API Eğitimi: GET, POST, Hata İşleme ve Zaman Aşımları

Yerel bir sunucuya karşı test edilen bir JavaScript Fetch API öğreticisi: GET ve POST, 404'ün neden atmadığı, yeniden kullanılabilir bir yardımcı, s…

Makaleyi okuyun →
Yazılım geliştirme

Python Dosya İşleme: Örneklerle Okuma, Yazma, CSV, JSON ve pathlib

Python dosya işleme, çalıştırdığımız kodla açıklanmıştır: açık modlar, büyük dosyaları okuma, CSV, JSON, pathlib, ikili dosyalar, güvenli yazma, hat…

Makaleyi okuyun →
Yazılım geliştirme

Python Sınıfları ve Nesneleri: Gerçek Örneklerle OOP Eğitimi

Çalıştırdığımız kodla açıklanan Python sınıfları ve nesneleri: __init__, yöntemler, sınıf ve örnek nitelikleri, kalıtım, özellikler, dunder yöntemle…

Makaleyi okuyun →
Yapay zekâ

Büyük Dil Modeli Nedir? Yüksek Lisans'ların Nasıl Çalıştığı, Abartmadan Açıklanıyor

Büyük dil modeli nedir? LLM'ler sade bir dille açıklandı: belirteçler, yerleştirmeler, dikkat, eğitim, sıcaklık ve bağlam pencereleri, küçük bir son…

Makaleyi okuyun →
DevOps

Yeni Başlayanlar İçin Linux Komutları: Örneklerle Temel Terminal Kılavuzu

Yeni başlayanlar için göreve göre gruplandırılmış Linux komutları: pratik bir günlük analizi örneğiyle gezinme, dosyalar, günlükleri görüntüleme, gr…

Makaleyi okuyun →
Test otomasyonu

Selenyum ve Oyun Yazarı: Temel Farklılıklar, Karşılaştırılan Kod ve Hangisinin Seçileceği

Selenium ve Playwright karşılaştırması: mimari, bekleme, tarayıcı ve dil desteği, hata ayıklama, her iki araçta da aynı test, geçiş tavsiyesi ve nas…

Makaleyi okuyun →
Yazılım testi

Eşdeğerlik Bölümleme: Test Tasarımı Tekniğinin Çalışılmış Örneklerle Açıklanması

Eşdeğerlik bölümlemenin açıklaması: geçerli ve geçersiz bölümlerin nasıl bulunacağı, yaşlara yönelik çalışılmış örnekler, şifreler ve kuponlar, yürü…

Makaleyi okuyun →
Yazılım testi

Yazılım Testinde Şiddet ve Öncelik: Farklılıklar, Matris ve Gerçek Örnekler

Yazılım testinde önem ve önceliğin açıklanması: net tanımlar, örnekler içeren dört yönlü bir matris, seviye ölçekleri, her birini kimin belirlediği …

Makaleyi okuyun →
Veritabanları ve SQL

SQL Alt Sorguları Eğitimi: Türler, İlişkili Alt Sorgular ve Örneklerle EXISTS

Çalıştırdığımız sorguları içeren bir SQL alt sorgu eğitimi: skaler, IN, FROM ve SELECT alt sorguları, ilişkili alt sorgular, EXISTS, NOT IN NULL tuz…

Makaleyi okuyun →
Veritabanları ve SQL

SQL İşlemleri ve ACID Açıklaması: COMMIT, ROLLBACK ve İzolasyon Seviyeleri

SQL işlemleri ve ACID, yürüttüğümüz bir banka transferiyle açıklandı: COMMIT, ROLLBACK, kayıt noktaları, kilitler, izolasyon seviyeleri, kirli okuma…

Makaleyi okuyun →
Yazılım geliştirme

Git merge vs rebase: farklar, örnekler ve hangisi ne zaman kullanılır

Git merge vs rebase; gerçek log çıktısı, karşılaştırma tablosu, rebase'in altın kuralı ve güvenli bir ekip iş akışıyla anlatılıyor.

Makaleyi okuyun →
Yazılım geliştirme

Python Liste Üreteci (List Comprehension): Sözdizimi, Örnekler ve Kaçınılacak Durumlar

Python list comprehension anlatımı: sözdizimi, filtreleme, if-else, iç içe döngüler, ölçülmüş süreler ve düz for döngüsünün daha iyi olduğu durumlar.

Makaleyi okuyun →
Veritabanları ve SQL

SQL JOIN Örneklerle Açıklama (Inner, Left, Right, Full)

SQL JOIN'leri örnek tablolar ve sorgularla adım adım öğrenin: INNER, LEFT, RIGHT, FULL, CROSS ve SELF; yaygın hatalar ve performans ipuçları.

Makaleyi okuyun →