Yazılım geliştirme becerilerini şekillendir.

Türkçe ve İngilizce pratik öğrenme içerikleri.

Java

Java Basics
String

Java Basics kategorisinin ilk topic'i: `String`'in IMMUTABLE tasarımı, string pool ve `==` vs `equals()` tuzağı, `+` ile birleştirmenin O(n^2) maliyeti vs `StringBuilder`'ın amortized O(1)'i (gerçek, ısıtılmış bir ölçümle), `String.format()`/text block'lar (Java 15+), ve split/join/replace/trim/strip gibi yardımcı metotlar.

Başlangıç 20 dk
İncele →
Arrays

Java Basics kategorisinin ikinci topic'i: dizilerin sabit boyutlu, bitişik bellek yapısı, çok boyutlu diziler (jagged array dahil), `Arrays` yardımcı sınıfı (sort/binarySearch/equals/fill/copyOf), array covariance ve `ArrayStoreException` tuzağı, `Arrays.asList()`'in görünüm (view) olması, ve varargs.

Başlangıç 20 dk
İncele →
Scanner

Java Basics kategorisinin üçüncü topic'i: `Scanner`'ın token tabanlı okuma modeli, klasik `nextInt()` + `nextLine()` tuzağı, `useDelimiter()` ile özel ayırıcılar, `File` üzerinden okuma, `Scanner` ile `BufferedReader` arasındaki gerçek bir performans farkı, ve `InputMismatchException`/`NoSuchElementException` istisna yönetimi.

Başlangıç 20 dk
İncele →
Wrapper Classes & Autoboxing

Java Basics kategorisinin dördüncü topic'i: ilkel tiplerin nesne karşılıkları (Integer/Double/Boolean vb.), autoboxing/autounboxing, Integer önbellekleme (-128..127) ve `==` tuzağı, null bir wrapper'ı unboxing yapmanın gerçek bir NullPointerException fırlatması, autoboxing'in sıkı döngülerdeki performans maliyeti, ve wrapper sınıflarının generic koleksiyonları mümkün kılması.

Başlangıç 20 dk
İncele →
File Reading

Java Basics kategorisinin beşinci topic'i (File I/O'nun okuma yarısı): `Path`/`Files` temelleri, `Files.readAllLines()`/`Files.readString()`, `BufferedReader` ile satır satır okuma, `Files.lines()`'in lazy ve Closeable olması, dosyada kelime arama, ve `NoSuchFileException` ile `FileNotFoundException` arasındaki gerçek fark.

Başlangıç 20 dk
İncele →
File Writing

Java Basics kategorisinin altıncı topic'i (File I/O'nun yazma yarısı): `Files.writeString()`/`Files.write()`, `StandardOpenOption.APPEND` ile sona ekleme, `BufferedWriter` ile yazma, `Files.copy()` ile dosya kopyalama, `Files.createDirectories()`, bir dizin ağacını silmenin standart deseni, ve CSV dosyası yazma.

Başlangıç 20 dk
İncele →
Enum

Java'da sabit değer kümelerini tip güvenli şekilde tanımlama.

Başlangıç 35 dk
İncele →
Record

Java'da sabit (immutable) veri taşıyıcıları tek satırda tanımlama.

Orta 45 dk
İncele →
Reflection

Java'da çalışma zamanında sınıf, alan, metot ve constructor bilgisine erişme ve bunları dinamik olarak kullanma.

İleri 50 dk
İncele →
Date & Time API

Java'da java.time paketi; LocalDate/LocalTime/LocalDateTime, Instant, ZonedDateTime/OffsetDateTime, Duration/Period/ChronoUnit, formatlama/parse, saat dilimleri ve legacy Date/Calendar'dan geçiş.

Orta 55 dk
İncele →
Exceptions
Exception'lara Giriş

Bir exception'ın gerçekte ne olduğu -- neden var olduğu (dönüş-değeri-tabanlı hata sinyallemesinin sorunları), Java'nın checked exception tasarım kararının kısa tarihçesi, bir exception nesnesinin taşıdığı mesaj/cause/stack trace, yakalanmamış bir exception'ın programı nasıl sonlandırdığı, stack trace okumak ve propagation, ve yaygın runtime exception tetikleyicileri (NullPointerException, ArrayIndexOutOfBoundsException, NumberFormatException). Bu serinin 7 dersinin ilki, henüz try/catch mekaniği yok.

Başlangıç 20 dk
İncele →
Try-Catch ve Finally

Bir exception'ı gerçekten handle etmenin mekanizması: temel try-catch bloğu, birden fazla catch bloğu (sırayla eşleşme, süper sınıf/alt sınıf sıralama kısıtı), | ile multi-catch (Java 7+), finally'nin koşulsuz olarak her zaman çalışması, ve finally içinde return/throw'un try/catch'in ürettiği her şeyi sessizce ezmesi. Exception Handling serisinin 2.'si.

Başlangıç 20 dk
İncele →
Exception Hiyerarşisi

Throwable, Error, Exception ve RuntimeException arasındaki miras ilişkisi -- her exception'ın tek bir ortak kökten geldiği, catch bloklarının bir türün herhangi bir atasını da hedefleyebildiği (polimorfik yakalama), ve instanceof ile bu hiyerarşinin çalışma zamanında nasıl sorgulanacağı. Exception Handling serisinin 3.'sü.

Başlangıç 20 dk
İncele →
Checked ve Unchecked Exception'lar

Checked exception'ın derleyici tarafından zorlanan throws/catch sözleşmesi ile unchecked exception'ın (RuntimeException ailesi) bu zorunluluğu hiç taşımaması arasındaki fark -- ikisi arasında ne zaman hangisinin seçileceği, checked bir exception'ı cause parametresiyle unchecked'e sarmalamak, ve override edilen bir metotta throws bildiriminin yalnızca DARALTILABİLECEĞİ kısıtı. Exception Handling serisinin 4.'sü.

Başlangıç 20 dk
İncele →
Throw ve Throws

throw ifadesinin çalışma zamanında bir Throwable nesnesini JVM'e teslim etmesi ile throws bildiriminin yalnızca derleme-zamanı bir sözleşme olması arasındaki fark -- fail-fast doğrulama, yakalanan bir exception'ı cause parametresiyle farklı bir türle yeniden fırlatmak, ve checked exception'ın çağrı zinciri boyunca yakalanmadan yayılması. Exception Handling serisinin 5.'si.

Başlangıç 20 dk
İncele →
Özel (Custom) Exception Oluşturmak ve Fırlatmak

Kendi exception türünü Exception (checked) ya da RuntimeException (unchecked) genişleterek tanımlamak -- ekstra bağlam (context) taşıyan alanlar eklemek, Throwable'ın dört standart constructor'ını yansıtmak, ve ortak bir custom base sınıfıyla kendi küçük exception hiyerarşini kurmak. Exception Handling serisinin 6.'sı.

Başlangıç 20 dk
İncele →
Exception Handling Best Practices

Önceki altı dersin mekaniğinin üzerine kurulan pratikler -- exception'ları kontrol akışı için kullanma ve yutma anti-pattern'leri, catch bloklarını spesifikten genele doğru doğru sırada yakalamak, ve yalnızca gerçekten anlamlı bir tepki verilebilecek yerde yakalamak. Exception Handling serisinin 7. ve son dersi, tüm seriyi özetleyen bir kapanış bölümüyle.

Başlangıç 20 dk
İncele →
Generics
Generics'e Giriş

Generics'in neden var olduğu (pre-generics raw type/cast/ClassCastException sorunu), tür güvenliğinin derleme zamanında nasıl sağlandığı, generic sınıflar ve interface'ler, ve tür parametresi adlandırma kuralı. Generics serisinin 1.'si.

Orta 25 dk
İncele →
Generic Metotlar

Sınıfının generic olup olmamasından bağımsız olarak kendi tür parametresini bildiren generic metotlar -- metot tür parametreleri, birden fazla tür parametresi, tür çıkarımı (type inference) ve açık tür tanığı (type witness). Generics serisinin 2.'si.

Orta 20 dk
İncele →
Sınırlı Tür Parametreleri

Üst sınırlar (`<T extends ...>`), `&` ile birleştirilen birden fazla sınır, sınıflarla ve interface'lerle sınırlama, ve bir tür parametresini sınırlamanın tür parametresine hangi metotların çağrılabileceğini nasıl genişlettiği. Generics serisinin 3.'sü.

Orta 20 dk
İncele →
Wildcard'lar

Sınırsız wildcard (`<?>`), üst sınırlı wildcard (`<? extends T>`), alt sınırlı wildcard (`<? super T>`), üçü arasındaki fark, ve PECS (Producer Extends, Consumer Super) kuralı -- Java generics'in en yaygın yanlış anlaşılan bölümü, gerçek örneklerle adım adım. Generics serisinin 4.'sü.

Orta 30 dk
İncele →
Koleksiyonlarla Generics

List<T>, Set<T> ve Map<K,V> gibi generic koleksiyonlar, koleksiyonlarla tür güvenliği, List<Object>'in neden List<String> OLMADIĞI (generics değişmezliği, tam işleniş), ve diamond operatörü/var ile tür çıkarımı. Generics serisinin 5.'si.

Orta 25 dk
İncele →
Type Erasure ve Generics'in Kısıtları

Type erasure'ın (tür silme) ne olduğu, generic türlere çalışma zamanında ne olduğu, `new T()` ve generic array'lerin neden izin verilmediği, statik üyeler ve generics, ve generics'in çalışma zamanı kısıtlarının pratikte (raw type/unchecked uyarı/heap pollution) nasıl karşımıza çıktığı. Generics serisinin 6. ve son dersi.

Orta 25 dk
İncele →
Control Flow
if / else

Yeni Control Flow kategorisinin ilk topic'i: `if`/`else`'in temel kullanımı, `else if` zinciri, iç içe koşullar, altı karşılaştırma operatörü (`==`/`!=`/`<`/`>`/`<=`/`>=`) ve ondalıklı sayı/`String` karşılaştırma tuzakları, `&&`/`||`/`!` mantıksal operatörleri ve kısa devre değerlendirme, ve üçlü (ternary) operatör.

Başlangıç 20 dk
İncele →
switch

Control Flow kategorisinin ikinci topic'i: klasik `case`/`break` sözdizimi ve fall-through tuzağı, modern ok (`->`) sözdizimi, switch İFADESİ ve `yield`, birden fazla etiket ve enum kapsayıcılık (exhaustiveness) kontrolü, ve `String`/enum üzerinde `switch` kullanımı.

Başlangıç 20 dk
İncele →
for Loop

Control Flow kategorisinin üçüncü topic'i: klasik üç bölümlü (init;condition;update) `for` sözdizimi, `break` ile erken çıkış, `continue` ile bir adımı atlama, kasıtlı/kasıtsız sonsuz döngüler, virgüllü init/update ile birden fazla değişken, ve klasik index tabanlı dizi gezinme.

Başlangıç 20 dk
İncele →
Enhanced for Loop

Control Flow kategorisinin dördüncü topic'i: dizi/koleksiyon üzerinde for-each sözdizimi, üç gerçek sınırı (indekse erişilememesi, döngü değişkeninin bir kopya olması ve yapısal değişikliğin ConcurrentModificationException fırlatması, birden fazla koleksiyonu paralel gezememe), ve klasik `for` ile ne zaman hangisinin kullanılacağı.

Başlangıç 20 dk
İncele →
while & do-while Loops

Control Flow kategorisinin beşinci topic'i: temel `while` sözdizimi, gövdeyi en az bir kez çalıştıran `do-while`, while vs do-while karşılaştırması, break/continue, Scanner ile girdi doğrulama döngüsü, ve uygulamalı örnek olarak Sayı Tahmin Oyunu (Number Guessing Game).

Başlangıç 20 dk
İncele →
Nested Loops

Control Flow kategorisinin altıncı ve son topic'i: temel iç içe `for` döngüsü, 2 boyutlu dizi gezinme, etiketsiz break/continue'nun yalnızca en içteki döngüyü etkilemesi, etiketli (labeled) break/continue, ve O(n²) performans farkındalığı.

Başlangıç 22 dk
İncele →
Collections
Lists

Collections kategorisinin ilk topic'i: `List` arayüzü, `ArrayList` ile `LinkedList`'in gerçek bir ısıtılmış ölçümle karşılaştırılan performans farkı, `List.of()`/`Collections.unmodifiableList()`/`List.copyOf()` ile immutable listeler, `Iterator`/`ListIterator` ile güvenli dolaşma, `List.sort(Comparator)` ile sıralama, ve `subList()`/`toArray()`.

Başlangıç 20 dk
İncele →
Sets

Collections kategorisinin ikinci topic'i: `Set` arayüzü ve tekrar eden elemanlara izin vermemesi, `HashSet`/`LinkedHashSet`/`TreeSet` farkları, `NavigableSet` metotları, `equals()`/`hashCode()` sözleşmesinin `HashSet` için neden kritik olduğu (gerçek bir hata örneğiyle), küme işlemleri (birleşim/kesişim/fark), ve List/HashSet/TreeSet arasındaki gerçek bir performans ölçümü.

Başlangıç 20 dk
İncele →
Maps

Collections kategorisinin üçüncü topic'i: `Map<K,V>` arayüzü (her anahtar bir kez, değerlere eşlenir), `HashMap`/`LinkedHashMap`/`TreeMap` farkları, `NavigableMap` metotları, immutable map'ler (`Map.of()`/`Map.copyOf()`), Java 8'in modern API'si (`getOrDefault()`/`computeIfAbsent()`/`merge()`), ve `entrySet()` ile `keySet()+get()` arasındaki gerçek bir performans ölçümü.

Başlangıç 20 dk
İncele →
Queues & Collections Utility

Collections kategorisinin son topic'i: `Queue`/`Deque` arayüzleri (offer()/poll()/peek() vs add()/remove()/element()), `ArrayDeque`'ın hem kuyruk hem stack olarak `LinkedList`/`java.util.Stack`'a tercih edilmesi, `PriorityQueue`'nun heap tabanlı ve toString()'inin sıralı OLMADIĞI gerçek bir keşif, ve `Collections` yardımcı sınıfının sort/shuffle/max/binarySearch gibi statik metotları.

Başlangıç 20 dk
İncele →
Object-Oriented Programming
Interface

Java'da davranış sözleşmeleri tanımlama; default/static/private metotlar ve sealed interface'ler.

Orta 50 dk
İncele →
Abstract Class

Java'da ortak durum ve davranışı paylaşan soyut sınıflar; constructor, Template Method Pattern ve abstract class vs interface karşılaştırması.

Orta 50 dk
İncele →
Inheritance

Java'da kalıtım (inheritance); extends, constructor zinciri, method overriding, field hiding, upcasting/downcasting ve composition vs inheritance karşılaştırması.

Orta 50 dk
İncele →
Polymorphism

Java'da çok biçimlilik (polymorphism); method overloading, overload çözümleme kuralları, covariant return type, polymorphism vs inheritance ve composition ile Strategy Pattern.

Orta 45 dk
İncele →
Concurrency
Threads

Java'da thread'ler; oluşturma (Thread/Runnable), lifecycle, thread metotları, race condition, synchronized, volatile, wait/notify, Atomic sınıflar, ReentrantLock ve deadlock.

İleri 55 dk
İncele →
Functional Interfaces & Streams
Lambda Expressions

Lambda expression syntax'ının tamamı: parametre yazım kuralları, expression body vs block body, derleyicinin lambda'ya bağlamdan tip vermesi (target typing), effectively final değişken yakalama, ve lambda'nın anonymous inner class'tan farkı.

Orta 20 dk
İncele →
Built-in Functional Interfaces

java.util.function paketindeki hazır interface'ler: Predicate<T>, Function<T,R>, Consumer<T>, Supplier<T>, UnaryOperator<T>, BinaryOperator<T>. Dört method reference biçimi: Class::staticMethod, object::instanceMethod, Class::instanceMethod, Class::new.

Orta 22 dk
İncele →
Stream API Temelleri

Stream API'nin temelleri: Stream nedir, Collection'dan Stream'e geçiş, pipeline'ın üç aşaması (source/intermediate/terminal). Intermediate operation'lar: filter(), map(), flatMap(), distinct(), sorted(), peek(), limit(), skip(). Lazy evaluation ve stream'in tek kullanımlık doğası.

Orta 25 dk
İncele →
Terminal Operations

Stream pipeline'ını tetikleyip sonuç üreten terminal operation'lar: forEach(), reduce(), count(), min()/max(), findFirst()/findAny(), anyMatch()/allMatch()/noneMatch(), toList()/toArray(). Kısa devre (short-circuiting) davranışı ve count()'un source boyutundan doğrudan hesaplanabilme optimizasyonu.

Orta 22 dk
İncele →
Collectors

Collectors sınıfının sunduğu hazır collect() tarifleri: toList()/toSet(), joining(), groupingBy() (+ downstream collector olarak counting()/mapping()), partitioningBy(), toMap(). Bir Collector'ın üç bileşeni: supplier, accumulator, combiner.

Orta 22 dk
İncele →
Optional

Optional<T>: bir değerin bulunmama ihtimalini tip sisteminde ifade etmek. of()/ofNullable()/empty() ile oluşturma, orElse() vs orElseGet() (eager vs lazy), orElseThrow(), map()/flatMap(), ifPresent()/ifPresentOrElse(), filter().

Orta 20 dk
İncele →
Primitive & Parallel Streams

IntStream/LongStream/DoubleStream ile autoboxing maliyetinden kaçınmak, boxed()/mapToInt() köprüleri. parallelStream() ile paralel çalışma, forEach() vs forEachOrdered() sıralama farkı, thread-safe olmayan paylaşılan durum tuzağı, ne zaman kullanılmalı ve neden her zaman daha hızlı olmadığı.

Orta 25 dk
İncele →

Spring Boot

Spring Core
Dependency Injection ve IoC

Spring'e değinmeden, saf Java ile Inversion of Control, Dependency Injection ve constructor/setter/field injection.

Orta 45 dk
Erişmek için giriş yapın
Spring IoC Container ve Bean Yaşam Döngüsü

BeanFactory/ApplicationContext, bean lifecycle, @PostConstruct/@PreDestroy, bean scope'ları, @Lazy ve circular dependency çözümü.

İleri 55 dk
Erişmek için giriş yapın
Component Scanning ve Configuration

@Component/@Service/@Repository/@Controller stereotype'ları, @ComponentScan, @Autowired (field/setter/constructor), @Qualifier ve @Primary.

Orta 45 dk
Erişmek için giriş yapın
Spring Boot Auto-Configuration ve Properties

@SpringBootApplication, @Conditional ailesi (@ConditionalOnClass/@ConditionalOnMissingBean/@ConditionalOnProperty), @Value, @ConfigurationProperties, @Profile ve ApplicationEvent/@EventListener.

İleri 55 dk
Erişmek için giriş yapın
Transaction Management

@Transactional'ın proxy tabanlı mekanizması, rollback kuralları, propagation (REQUIRED/REQUIRES_NEW), self-invocation tuzağı, isolation levels, readOnly, TransactionTemplate ve @TransactionalEventListener.

İleri 55 dk
Erişmek için giriş yapın
Spring MVC
Spring MVC Temelleri

DispatcherServlet, MVC deseni (Model/View/Controller) ve @Controller ile @RestController arasındaki fark.

Orta 35 dk
Erişmek için giriş yapın
Mapping Annotation'ları ve HTTP Metotları

@RequestMapping ve beş kısayolu (@GetMapping/@PostMapping/@PutMapping/@PatchMapping/@DeleteMapping), consumes/produces ve HTTP metotlarının safe/idempotent semantiği.

Orta 35 dk
Erişmek için giriş yapın
Path Variable'lar ve Request Parametreleri

@PathVariable, @RequestParam ve @RequestHeader ile bir HTTP isteğinin URL'sinden ve header'larından veri okumak; path variable ile query parametresi arasındaki fark.

Orta 40 dk
Erişmek için giriş yapın
Request ve Response Handling

@RequestBody ile istek gövdesini nesneye çevirmek, ResponseEntity ile yanıtı tam kontrol etmek, HTTP durum kodları ve content negotiation.

Orta 45 dk
Erişmek için giriş yapın
Validation & Exception Handling

Bean Validation (@NotBlank, @Size, @Email, @Pattern) ile @Valid, iç içe nesnelerde cascading, @ExceptionHandler, @RestControllerAdvice ve RFC 7807 ProblemDetail ile standart hata yönetimi.

Orta 45 dk
Erişmek için giriş yapın
Spring MVC Views ve Thymeleaf

Model, ModelMap ve ModelAndView ile view'a veri taşımanın üç yolu; Thymeleaf'in "natural templating" felsefesi; Thymeleaf değişken/link/mesaj ifadeleri (@{...}, #{...} ve dolar-süslü-parantez erişimi); th:if, th:each, th:fragment; SpringEL seçim ifadeleri (.?[...] / #vars); ve projenin kendi layout'una referansla MVC vs REST karşılaştırması.

Orta 40 dk
Erişmek için giriş yapın
Advanced Spring MVC

HandlerInterceptor (preHandle/postHandle/afterCompletion) ve Filter vs Interceptor ayrımı; WebMvcConfigurer ile interceptor kaydı ve global CORS yapılandırması; same-origin policy, preflight request ve @CrossOrigin; MultipartFile ile dosya yükleme ve boyut sınırları.

İleri 45 dk
Erişmek için giriş yapın
REST API Tasarımı

Entity'yi doğrudan dışarı vermenin riskleri ve DTO deseni; Pageable/Page/Sort ile sayfalama, sıralama ve query parametreleriyle filtreleme; URI versioning vs header versioning; idempotency ve Idempotency-Key header'ı ile POST'u idempotent yapmak; HATEOAS (kısa bakış).

İleri 42 dk
Erişmek için giriş yapın
Spring MVC'de Test Yazmak

MockMvc ve @WebMvcTest ile web katmanı testleri; @MockitoBean ile bağımlılıkları sahteleme; model(), view() ve jsonPath() ile doğrulama; request body, path variable/query param, validation hataları ve multipart dosya yükleme testleri; bu projenin gerçek HomeController'ı ve TopicController'ı için gerçek testler.

İleri 45 dk
Erişmek için giriş yapın
Microservices
Microservices Temelleri

Monolitik mimarinin sınırları, mikroservis mimarisinin temel özellikleri, servis sınırlarını (bounded context) belirlemek, database per service, CAP teoremi ve Conway Yasası'na kısa bir bakış -- hiç kod yazmadan, kavramsal bir giriş.

Orta 20 dk
Erişmek için giriş yapın
Mikroservis Yapılandırma

Tek bir Spring Boot mikroservisini (order-service) baştan sona yapılandırmak: kendi giriş noktası, kendi application.yml'i (port, uygulama adı, veritabanı), REST controller ile API sözleşmesi, service katmanı, domain modeli ve health check.

Orta 18 dk
Erişmek için giriş yapın
Servisler Arası İletişim

order-service'in yanına ikinci bir mikroservis (inventory-service) eklemek ve ikisini Spring'in RestClient'ıyla senkron bir REST çağrısıyla konuşturmak: stok kontrolü, hata yönetimi (servis ayakta değilse ne olur), ve servisler arası DTO ayrımı. Kategorinin gerçek, çalıştırılabilir Pratik Proje'sine buradan ulaşılıyor.

Orta 22 dk
Erişmek için giriş yapın
Servis Keşfi ve Eureka

order-service'in inventory-service'i artık sabit kodlanmış bir URL yerine bir İSİMLE bulması: Eureka Server (merkezi kayıt defteri), Eureka Client (spring.application.name'in keşif anahtarına dönüşmesi), DiscoveryClient ile doğrudan sorgu, @LoadBalanced RestClient ile isimle çağrı yapma, heartbeat/eviction/self-preservation modu, ve Eureka'nın CAP teoreminin AP tarafını seçmesi.

Orta 24 dk
Erişmek için giriş yapın
API Gateway

order-service ve inventory-service'in artık dış istemciler için tek bir giriş noktası üzerinden erişilebilir olması: Spring Cloud Gateway ile ayrı bir api-gateway uygulaması kurmak, rota (route) predicate/URI/filtre üçlüsü, lb:// ile Eureka üzerinden keşif tabanlı yönlendirme, özel bir GlobalFilter yazmak (kursun ilk reaktif kodu), ve correlation id gibi sistem geneli konuların neden gateway'de kalıp iş mantığının serviste kalması gerektiği.

Orta 24 dk
Erişmek için giriş yapın
Resilience4j

order-service'in inventory-service çağrılarını manuel try/catch hata yönetiminin ötesine taşıması: Resilience4j ile @CircuitBreaker (CLOSED/OPEN/HALF_OPEN durum makinesi) ve @Retry annotation'larını ResilientStockClient'a uygulamak, fallback metotlarının devre açıldığında ne yaptığı, Spring proxy mekanizmasının self-invocation'da neden çalışmadığı, ve rate limiter/bulkhead'in circuit breaker'dan farklı bir riske karşı koruması.

Orta 24 dk
Erişmek için giriş yapın
Configuration Management

Her servisin şimdiye kadar kendi application.yml'inde tuttuğu yapılandırmayı Spring Cloud Config ile merkezileştirmek: @EnableConfigServer ile ayrı bir config-server uygulaması kurmak, bir Config Repository'nin neyi merkezileştirmeye değdiğine karar vermesi, spring.config.import ile Config Client olmak, profillerle ortam bazlı override, @RefreshScope ile yeniden başlatmadan yapılandırma yenileme, ve sırların neden düz metin olarak saklanmaması gerektiği.

Orta 24 dk
Erişmek için giriş yapın
Event-Driven Architecture ve Kafka

Bu kategorideki her servisler arası çağrının şimdiye kadar senkron olmasının yarattığı zaman ve doğrudan-bilgi bağlantısını Kafka ile kaldırmak: topic/partition kavramları, order-service'in KafkaTemplate ile OrderPlacedEvent yayınlaması, inventory-service'in @KafkaListener ile tepki vermesi, senkron vs asenkron arasında ne zaman hangisinin seçileceği, en az bir kez teslimat garantisinin her tüketiciyi idempotent yapmayı gerektirmesi, ve JSON serialization tercihi.

Orta 26 dk
Erişmek için giriş yapın
Distributed Transactions

Event-Driven Architecture ve Kafka dersinin açık bıraktığı boşluğu kapatmak -- inventory-service stok rezerve edemezse order-service'in zaten commit ettiği siparişe ne olur: Two-Phase Commit'in mikroservislerde neden nadir olduğu, Saga deseni (yerel işlemler + kompansasyon eylemleri), choreography ile StockReservationFailedEvent üzerinden iki yönlü bir saga akışı kurmak, kompansasyonun bir rollback olmadığı, ve Outbox deseninin bir olayın hiç yayınlanmama riskini kapatması.

Orta 26 dk
Erişmek için giriş yapın
Observability

API Gateway ve Resilience4j derslerinin kasıtlı olarak açık bıraktığı iki ipliği kapatmak: correlation id'yi order-service'in kendi loglarına (MDC) ve inventory-service'e giden çağrılara GERÇEKTEN yaymak, structured (JSON) loglama, Micrometer/Actuator ile metrikler, distributed tracing'in aynı correlation id kavramı üzerine inşa edilmesi, ve Resilience4j'nin Micrometer'la zaten otomatik entegre olması.

Orta 26 dk
Erişmek için giriş yapın
Security

Bu kategorideki her dersin şimdiye kadar varsaydığı koşulsuz güveni kapatmak: Spring Security'yi projeye ilk kez tanıtmak, authentication vs authorization ayrımı, JWT'nin kendi kendine yeterli doğası, api-gateway ve order-service'te AYRI AYRI JWT doğrulaması (zero trust), role-bazlı authorization, ve kimliğin correlation id'ye paralel şekilde servisler arası yayılması.

Orta 26 dk
Erişmek için giriş yapın
Deployment

Bu kategorinin şimdiye kadar her dersinin localhost varsayımının gerçek dünyada nasıl deploy edildiği: multi-stage Dockerfile ile küçük image'lar, tüm sistemi (eureka-server, config-server, api-gateway, order-service, inventory-service, Kafka) tek bir docker-compose dosyasında orkestre etmek, container'larda ortam değişkeni ile yapılandırma, depends_on'un health check olmadan neden yetmediği, ve Kubernetes'e kısa/dürüst bir bakış.

Orta 26 dk
Erişmek için giriş yapın
Advanced Spring
Java Bean Validation

Spring MVC'nin "Validation & Exception Handling" dersinin üzerine inşa edilir -- işaret kısıtları (@Positive/@PositiveOrZero/@Negative/@NegativeOrZero), tarih/saat kısıtları (@Past/@Future/@PastOrPresent/@FutureOrPresent), tam ondalık sınırlar (@DecimalMin/@DecimalMax/@Digits), validation mesajlarını özelleştirmek, custom constraint annotation + ConstraintValidator ile çapraz alan validasyonu, ve validation grupları. Advanced Spring serisinin 1.'si.

İleri 35 dk
Erişmek için giriş yapın
Exception Handling

Spring MVC'nin "Validation & Exception Handling" ve bu kategorinin "Java Bean Validation" derslerinin üzerine inşa edilir -- MethodArgumentNotValidException'ın gerçekte ne taşıdığı, validasyon hatalarını ProblemDetail'e dönüştürmek (çapraz-alan hatalar dahil), custom ProblemDetail özellikleri, domain exception'ları doğru HTTP durum koduna (400/404/409/422/500) eşlemek, ResponseEntityExceptionHandler ile merkezileştirme, ve internal detay sızdırmayan güvenli hata yanıtları. Advanced Spring serisinin 2. ve son dersi.

İleri 35 dk
Erişmek için giriş yapın
Task Execution & Scheduling

"Threads"in dil seviyesinde işlediği thread pool temelinin üzerine inşa edilir -- Spring'in TaskExecutor soyutlaması, @Async ve @EnableAsync ile arka plan işi, self-invocation'ın @Async'i neden bozduğu ("Transaction Management"taki AYNI proxy tuzağı), @Scheduled ile fixed rate/fixed delay/initial delay/cron ifadeleri, ve scheduling'in kendi ayrı thread pool'unun (TaskScheduler) yapılandırılması. Advanced Spring serisinin 3.'sü.

İleri 35 dk
Erişmek için giriş yapın
Spring Batch

Neden büyük ölçekli batch işlemlerinin `@Scheduled`'ın tek başına sağlayamadığı bir yapıya ihtiyacı olduğu -- Job/Step/chunk-odaklı işleme zihinsel modeli, tek bir CSV-'den-veritabanına sipariş içe aktarma örneği boyunca ItemReader/ItemProcessor/ItemWriter, JobParameters/JobInstance/JobExecution ayrımı, JobRepository ile yeniden başlatılabilirlik, skip/retry fault tolerance, ve `@Scheduled` ile pratik birleşim. Advanced Spring serisinin 4.'sü.

İleri 50 dk
Erişmek için giriş yapın
Spring Data JPA
JPA, Hibernate ve Spring Data JPA

Bir Java nesnesini bir veritabanına kalıcı hale getirme sorunundan başlayarak, ORM → JPA (spesifikasyon) → Hibernate (implementasyon) → Spring Data JPA (repository soyutlaması) → Spring Boot (auto-configuration) zihinsel modeli, bu projenin gerçek Topic/TopicRepository sınıflarıyla inşa ediliyor. Spring Data JPA kategorisinin 1.'si.

Orta 25 dk
Erişmek için giriş yapın
Entities and the Repository Abstraction

@Entity/@Id/@GeneratedValue/@Column mapping'i, @Table/@Enumerated/nullable-unique kısıtları/argümansız constructor/entity vs DTO/equals()-hashCode() (kısaca), ve Repository → CrudRepository → PagingAndSortingRepository → JpaRepository hiyerarşisinin her katmanının ne kattığı -- bu projenin gerçek Topic/Category/TopicRepository sınıflarıyla. Spring Data JPA kategorisinin 2.'si.

Orta 30 dk
Erişmek için giriş yapın
Query Methods and JPQL with @Query

Spring Data JPA'nın bir repository metodunun adından bir sorguyu nasıl çıkardığı (findBy/existsBy/countBy, And/Or/OrderBy), @Query ile JPQL yazmak ve isimli parametreler, toplu güncelleme/silme için @Modifying, join fetch, ve ne zaman bir native query'ye başvurulacağı -- bu projenin gerçek repository'leriyle. Spring Data JPA kategorisinin 3.'sü.

Orta 30 dk
Erişmek için giriş yapın
Pagination, Sorting, and Projections

"REST API Tasarımı"nın controller-seviyesinde çözdüğü Pageable/Sort'un, repository seviyesinde gerçekte nasıl LIMIT/OFFSET + count sorgusuna dönüştüğü, findAll(Sort)/derived metotlarla sıralama, ve bütün bir entity yerine yalnızca ihtiyaç duyulan alanları döndüren interface-tabanlı ve record/constructor-expression projection'lar -- bu projenin gerçek Topic/TopicTranslation sınıflarıyla. Spring Data JPA kategorisinin 4.'sü.

Orta 30 dk
Erişmek için giriş yapın
Dynamic Queries with Specifications

"REST API Tasarımı"nın bellek içinde bıraktığı isteğe bağlı filtrelemeyi, JPA'nın Criteria API'si (Root/CriteriaQuery/CriteriaBuilder/Predicate) üzerine ince bir sarmalayıcı olan Specification interface'i, JpaSpecificationExecutor, Specification.where/and/or ile birleştirme, ve findAll(Specification, Pageable) ile gerçek sayfalamayla birleştirme -- bu projenin gerçek Topic entity'siyle. Spring Data JPA kategorisinin 5.'si.

İleri 35 dk
Erişmek için giriş yapın
Relationships, Fetching, and the N+1 Problem

@OneToMany/@ManyToMany mapping ("Transaction Management"in zaten kapsamlıca işlediği @ManyToOne'un ötesinde), cascade türleri (PERSIST/MERGE/REMOVE/ALL) ve orphanRemoval, N+1 probleminin somut gösterimi, ve @EntityGraph/batch fetching/projection'larla üç farklı düzeltme -- bu projenin gerçek Topic/Category/QuizQuestion sınıflarıyla. Spring Data JPA kategorisinin 6.'sı.

İleri 40 dk
Erişmek için giriş yapın
The Persistence Context and Locking

"Transaction Management"in zaten kapsamlıca işlediği dirty checking'in NEDEN çalıştığı -- persistence context'in kendisi, entity yaşam döngüsü durumları (transient/managed/detached/removed), first-level cache, persist/merge/detach, flush zamanlaması -- ve iki transaction aynı satıra dokunduğunda ne olduğu: @Version ile optimistic locking, @Lock ile pessimistic locking. Spring Data JPA kategorisinin 7.'si.

İleri 35 dk
Erişmek için giriş yapın
Auditing in Spring Data JPA

Bu projenin gerçek QuestionIngestService'inin elle yazdığı LocalDateTime.now() deseninden başlayarak, @CreatedDate/@LastModifiedDate, @EntityListeners(AuditingEntityListener.class) + @EnableJpaAuditing bağlantısı, @CreatedBy/@LastModifiedBy, AuditorAware<T>, ve @MappedSuperclass ile audit alanlarını paylaşmak. Spring Data JPA kategorisinin 8.'si.

Orta 25 dk
Erişmek için giriş yapın
Testing Spring Data JPA Repositories

"Spring MVC'de Test Yazmak"ın yalnızca isim olarak andığı @DataJpaTest ve TestEntityManager -- bu projenin kendi Mockito-mock'lanmış servis testlerinin bırakmadan geçtiği boşluğu (bir sorgunun gerçekten çalıştığının hiç doğrulanmaması) kapatıyor; derived query/custom @Query testi, ve embedded test veritabanı vs gerçek PostgreSQL vs Testcontainers -- bu projenin kendi application-test.yml'inin gerçek yorumuna dayanarak. Spring Data JPA kategorisinin 9. ve son dersi.

İleri 35 dk
Erişmek için giriş yapın

React

React Fundamentals
React Nedir?

React'in ne olduğu, neden ortaya çıktığı, library ile framework arasındaki fark, SPA kavramı ve React'in nerede kullanıldığı -- sade bir dille, hiç kod yazmadan.

Başlangıç 8 dk
Erişmek için giriş yapın
Bir React Projesi Oluşturmak

Node.js ve npm, Vite ile yeni bir proje oluşturma, proje yapısı, package.json, npm run dev ve development ile production farkı.

Başlangıç 10 dk
Erişmek için giriş yapın
JSX

JSX nedir, HTML ile farkları, süslü parantez { } ile JavaScript gömme, attribute'lar ve className, JSX kuralları ve conditional rendering'e kısa bir bakış.

Başlangıç 12 dk
Erişmek için giriş yapın
Components & Props
Components

Component nedir, fonksiyon olarak nasıl yazılır, nasıl kullanılır (render edilir), isimlendirme kuralı ve yeniden kullanılabilirlik -- basit örneklerle.

Başlangıç 8 dk
Erişmek için giriş yapın
Props

Props nedir, parent'tan child'a veri gönderme, birden fazla prop, destructuring, varsayılan değerler ve props'un normal fonksiyon parametrelerinden farkı.

Başlangıç 10 dk
Erişmek için giriş yapın
Component Composition

children prop'u, iç içe component'ler ve composition ile inheritance arasındaki fark -- yeniden kullanılabilir bir Card component'i mini projesiyle.

Başlangıç 12 dk
Erişmek için giriş yapın
State & Events
Events

React'te olay (event) sistemi -- onClick, event handler tanımlamak, onChange, onSubmit ve event object -- basit örneklerle.

Başlangıç 9 dk
Erişmek için giriş yapın
State

State nedir, useState ile nasıl tanımlanır, nasıl güncellenir, bir önceki state'e göre güncelleme ve state immutability -- basit örneklerle.

Başlangıç 12 dk
Erişmek için giriş yapın
Conditional Rendering

if, ternary (? :) ve && operatörü ile koşula göre farklı arayüz göstermek, ve koşula göre farklı component'ler döndürmek -- basit örneklerle.

Başlangıç 9 dk
Erişmek için giriş yapın
Lists & Keys

map() ile liste render etmek, key prop'u nedir, neden önemlidir, ve en yaygın hata olan index'i key olarak kullanmak -- basit örneklerle.

Başlangıç 10 dk
Erişmek için giriş yapın
Hooks
What Are Hooks?

Hook nedir, neden var, Hooks kuralları (Rules of Hooks) ve function component'lerle ilişkisi -- basit örneklerle.

Orta 10 dk
Erişmek için giriş yapın
useEffect

Side effect nedir, useEffect ile nasıl çalıştırılır, dependency array'in üç kullanımı, cleanup fonksiyonu ve yaygın infinite loop hatası -- basit örneklerle.

Orta 14 dk
Erişmek için giriş yapın
useRef

DOM referansları, render'lar arası kalıcı değerler, useRef vs useState, ve useRef'i useEffect ile birlikte kullanmak -- basit örneklerle.

Orta 11 dk
Erişmek için giriş yapın
useMemo & useCallback

Memoization nedir, useMemo ile hesaplama sonucunu ve nesne referansını, useCallback ile fonksiyon referansını önbelleğe almak, ve ne zaman kullanılmaması gerektiği -- basit örneklerle.

Orta 12 dk
Erişmek için giriş yapın
Custom Hooks

Custom hook nedir, use öneki ve isimlendirme kuralı, aynı hook'u birden fazla kez kullanmak, ve bir useFetch örneği -- basit örneklerle.

Orta 10 dk
Erişmek için giriş yapın
Forms
Controlled Components

Controlled component nedir, value ve onChange ile bir input'u state'e bağlamak, checkbox/select'lerde de aynı deseni kullanmak -- basit örneklerle.

Orta 11 dk
Erişmek için giriş yapın
Form Handling

onSubmit ile formu göndermek, birden fazla alanı tek bir state nesnesiyle yönetmek, validation ve hata mesajları göstermek -- basit örneklerle.

Orta 13 dk
Erişmek için giriş yapın
Routing
React Router Basics

react-router ile bir React uygulamasına sayfa geçişi eklemek -- BrowserRouter, Routes, Route, Link, NavLink ve tanımsız URL'ler için Not Found sayfası, basit örneklerle.

Orta 12 dk
Erişmek için giriş yapın
Route Parameters & Navigation

URL'in içine değişken değerler koymak (route parametreleri), useParams ile okumak, Outlet ile iç içe route'lar kurmak, ve useNavigate ile programatik yönlendirme -- basit örneklerle.

Orta 14 dk
Erişmek için giriş yapın
API & Data Fetching
Fetching Data

React'te fetch ile bir sunucudan veri çekmek ve göndermek -- GET, POST, PUT, DELETE, loading ve error handling, basit örneklerle.

Orta 12 dk
Erişmek için giriş yapın
React + REST API

React'in bir REST API'ye bağlanması -- API katmanını bir api.js modülünde ayırmak, listeleme, oluşturma ve silme işlemlerini birlikte yönetmek, basit örneklerle.

Orta 15 dk
Erişmek için giriş yapın
State Management
Sharing State

Birden fazla component'in aynı state'e ihtiyaç duyduğu durumlar -- state'i yukarı taşımak (lifting state up) ve props drilling sorunu, basit örneklerle.

Orta 11 dk
Erişmek için giriş yapın
Context API

React'in props drilling'e yerleşik çözümü Context API -- createContext, useContext, Provider, ve context'i bir custom hook'a sarmalamak, basit örneklerle.

Orta 13 dk
Erişmek için giriş yapın
Advanced React
React Performance

React.memo, useMemo ve useCallback ile gereksiz yeniden render'ları önlemek, ve React'in Profiler component'i ile render sürelerini ölçmek -- basit örneklerle.

İleri 12 dk
Erişmek için giriş yapın
Error Boundaries

React'te render sırasındaki hataları yakalayan class component'ler: getDerivedStateFromError, componentDidCatch, error boundary'lerin kapsamı ve yakalamadıkları, basit örneklerle.

İleri 13 dk
Erişmek için giriş yapın
Lazy Loading & Code Splitting

React.lazy ile component'leri sonradan yüklemek, route bazlı code splitting, named export'larla lazy kullanmak, ve koşullu lazy loading -- basit örneklerle.

İleri 11 dk
Erişmek için giriş yapın
Suspense

Suspense'in fallback prop'u, iç içe Suspense sınırları, React 19'un use() hook'u ile Suspense entegrasyonu, ve Suspense'in otomatik yapmadıkları -- basit örneklerle.

İleri 11 dk
Erişmek için giriş yapın
Portals

react-dom'un createPortal fonksiyonu ile component'leri farklı bir DOM düğümüne render etmek -- modal'lar, event bubbling davranışı, ve portal hedefi ayarlamak, basit örneklerle.

İleri 12 dk
Erişmek için giriş yapın
Testing
Component Testing

Vitest ve React Testing Library kurulumu, render+screen ile ilk test, getByRole/getByLabelText ile sorgulama, jest-dom matcher'ları, ve koşullu render'ı test etmek -- basit örneklerle.

Orta 12 dk
Erişmek için giriş yapın
User Interaction Testing

user-event ile gerçekçi etkileşim simülasyonu, tıklamayı ve yazmayı test etmek, form gönderimini vi.fn() ile doğrulamak, ve asenkron UI güncellemelerini findBy* ile test etmek -- basit örneklerle.

Orta 11 dk
Erişmek için giriş yapın
Production
Build & Deployment

npm run build ile production build almak, Vite'ta ortam değişkenleri (VITE_ öneki, .env), ve tamamen statik bir React uygulamasını Vercel'e deploy etmek -- basit örneklerle.

Orta 13 dk
Erişmek için giriş yapın
React + Spring Boot Deployment

React'i Vercel'e, gerçek bir Spring Boot REST API'sini Render'a (Docker) deploy etmek, ortam değişkenleriyle backend adresini yönetmek, ve production CORS yapılandırması -- basit örneklerle.

Orta 14 dk
Erişmek için giriş yapın

Artificial Intelligence

AI Fundamentals
Yapay Zeka Nedir?

Yapay zekanın gerçekte ne anlama geldiğine dair net bir harita -- dar ve genel yapay zeka, geleneksel yazılımdan farkı, ve Machine Learning, Deep Learning, Generative AI'ın birbiriyle ilişkisi.

Başlangıç 15 dk
Erişmek için giriş yapın
Machine Learning

Machine Learning'in gerçekte ne olduğu -- training ve inference farkı, supervised/unsupervised/reinforcement öğrenme türleri, ve overfitting/underfitting'in eğitimi nasıl yanlış gösterebileceği.

Başlangıç 18 dk
Erişmek için giriş yapın
Deep Learning

Neural network'lerin nasıl yapılandırıldığı -- katmanlar, ağırlıklar, aktivasyon fonksiyonları -- ve backpropagation ile eğitim, ve CNN/RNN/transformer mimarilerine kısa bir bakış.

Başlangıç 18 dk
Erişmek için giriş yapın
Generative AI

Generative AI'ın discriminative modellerden farkı, metin/görüntü üreten modellerin nasıl çalıştığı, Large Language Model'lere kısa bir önizleme, ve akıcılık ile doğruluk arasındaki kritik ayrım.

Başlangıç 15 dk
Erişmek için giriş yapın
Large Language Models
Large Language Model'ler Nasıl Çalışır?

LLM'lerin mekanik olarak ne olduğu, pretraining ve knowledge cutoff, base model ile instruction-tuned model farkı, ve in-context learning ile context kavramına ilk bakış.

Orta 20 dk
Erişmek için giriş yapın
Token'lar ve Context Window'lar

Token'ların ve tokenization'ın ne olduğu, context window'un sert sınırı, context dolduğunda ne olduğu, ve truncation/summarization/retrieval ile sınırlı context'i yönetme stratejileri.

Orta 18 dk
Erişmek için giriş yapın
Prompting and Prompt Engineering

Prompt yapısı (system/user/assistant rolleri), zero-shot ve few-shot prompting, etkili prompt yazma pratikleri, ve chain-of-thought gibi yaygın prompting tekniklerine giriş.

Orta 20 dk
Erişmek için giriş yapın
LLM Yetenekleri ve Sınırlamaları

LLM'lerin gerçekten güçlü olduğu alanlar, hallucination'ın neden olduğu, knowledge cutoff'un etkisi, akıl yürütme sınırları, ve eğitim verisindeki bias'ın nasıl yeniden üretildiği.

Orta 20 dk
Erişmek için giriş yapın
Tools & MCP
Tools and Function Calling

Bir LLM'in gerçek kod çalıştırmasını isteyebilmesini sağlayan tool use/function calling mekanizması: tool-calling loop, bir tool'u tanımlamak, ve tool use'un bir "agent"tan farkı.

Orta 18 dk
Erişmek için giriş yapın
MCP'ye Giriş

Model Context Protocol (MCP) nedir, hangi N×M entegrasyon problemini çözer, host/client/server rolleri, ve bir server'ın sunabileceği tools/resources/prompts primitive'leri.

Orta 18 dk
Erişmek için giriş yapın
MCP Mimarisi

MCP'nin mesaj biçimi olan JSON-RPC 2.0, stdio ve Streamable HTTP transport'ları, initialize/discover/invoke bağlantı yaşam döngüsü, ve capability negotiation.

Orta 20 dk
Erişmek için giriş yapın
TypeScript ile MCP Sunucusu Oluşturma

Resmi TypeScript SDK'sıyla gerçek, çalıştırılabilir bir MCP server ve client inşa etme: proje kurulumu, registerTool ile tool tanımlama, in-memory transport üzerinden bağlanma, ve gerçek çıktı.

Orta 28 dk
Erişmek için giriş yapın
AI Agents
Bir AI Agent Nedir?

Bir AI agent'i tanımlayan şey: gözlemle-karar ver-eyleme geç loop'u, tek bir tool call'dan farkı, ve otonomi spektrumu.

Orta 18 dk
Erişmek için giriş yapın
Agent Planlama ve Akıl Yürütme Kalıpları

Bir agent'ın "karar ver" adımının somut kalıpları: ReAct, plan-and-execute, reflection, ve bir loop'un ne zaman durması gerektiği.

Orta 20 dk
Erişmek için giriş yapın
Agent Davranışını Kontrol Etmek

Bir agent loop'unu güvenli kılan korkuluklar: adım sınırları, human-in-the-loop onayı, en az yetki ilkesi, ve observability.

Orta 18 dk
Erişmek için giriş yapın
TypeScript ile Bir AI Agent Oluşturma

Gerçek, çalışan bir agent loop inşa edin: deterministik, açıkça simüle edilmiş bir karar adımı, "Building an MCP Server"daki gerçek MCP tool'larını gerçekten çağırıyor.

Orta 30 dk
Erişmek için giriş yapın
AI Development Tools
Claude Code ile AI Destekli Yazılım Geliştirme

Gerçek bir Spring Boot özelliğini, gerçek bir Claude Code terminal oturumunda analiz edip planlayın, uygulayın, test edin ve gözden geçirin: Plan Mode, izin modeli, ve gerçekten yakalanmış hatalarla.

Orta 35 dk
Erişmek için giriş yapın
Claude Code CLI: Komutlar ve Kullanım

Terminali kapatıp geri dönmekten context yönetimine, izin modlarından komut keşfetmeye: Claude Code CLI'ını günlük kullanımda etkin kullanmak için hızlı bir başvuru kaynağı -- resmi dokümantasyon ve gerçek bir CLI oturumuyla doğrulanmış.

Orta 22 dk
Erişmek için giriş yapın

PostgreSQL

PostgreSQL Foundations
PostgreSQL ve İlişkisel Model

İlişkisel bir veritabanının ne olduğu, PostgreSQL'in özellikle ne olduğu, Spring Boot → Spring Data JPA → Hibernate → SQL → PostgreSQL yığını, ve bu projenin gerçek TopicRepository'sinin bir çağrısının bu yığından nasıl geçtiği -- hiç SQL sözdizimi olmadan, yalnızca zihinsel model. PostgreSQL kursunun ve PostgreSQL Foundations kategorisinin 1.'si.

Başlangıç 15 dk
Erişmek için giriş yapın
PostgreSQL'e Bağlanmak: psql ve Gerçek Bir Spring Boot DataSource

Docker ile yerel bir PostgreSQL çalıştır, psql ile doğrudan bağlan, ve bu projenin kendi Spring Boot DataSource yapılandırmasının PostgreSQL seviyesinde gerçekte ne anlama geldiğini gör. PostgreSQL Foundations kategorisinin 2.'si.

Başlangıç 15 dk
Erişmek için giriş yapın
Databases, Schemas, Tables, and Basic SQL Syntax

Sunucu → veritabanı → şema → tablo hiyerarşisi, CREATE TABLE sözdizimi bu projenin kendi gerçek V1__init_schema.sql'i üzerinden okunarak, kolon tanımları/kısıtlar, SQL yorumları, ve DDL ile DML arasındaki ilk ayrım. PostgreSQL Foundations kategorisinin 3.'sü.

Başlangıç 20 dk
Erişmek için giriş yapın
PostgreSQL Data Types

INTEGER/BIGINT/BIGSERIAL, VARCHAR/TEXT, BOOLEAN, ve DATE/TIMESTAMP/TIMESTAMPTZ -- her birinin bu projenin kendi gerçek Topic/TopicTranslation/Question entity'lerindeki karşılık gelen Java alan türüne (Long/String/boolean/LocalDateTime) nasıl eşlendiği. PostgreSQL Foundations kategorisinin 4.'sü.

Başlangıç 20 dk
Erişmek için giriş yapın
Constraints and Keys

PRIMARY KEY, FOREIGN KEY ve referential integrity, ON DELETE CASCADE vs. RESTRICT (bu projenin kendi quiz_question_link tablosundaki gerçek kontrastıyla), composite UNIQUE, CHECK kısıtları, ve BIGSERIAL PRIMARY KEY'in GenerationType.IDENTITY'ye nasıl bağlandığı. PostgreSQL Foundations kategorisinin 5.'si.

Başlangıç 20 dk
Erişmek için giriş yapın
Inserting, Updating, and Deleting Data

INSERT/UPDATE/DELETE, bu projenin kendi gerçek INSERT ... SELECT ve UPDATE ... WHERE migration'larıyla, RETURNING, ON CONFLICT (upsert), ve Flyway'in migration'ların neden hiç ON CONFLICT'e ihtiyaç duymadığını nasıl garanti ettiği. PostgreSQL Foundations kategorisinin 6.'sı.

Orta 25 dk
Erişmek için giriş yapın
SELECT and Filtering

SELECT'in temel şekli, SELECT * yerine kolonları açıkça adlandırma, karşılaştırma/mantıksal operatörler, LIKE desen eşleştirme, IN/BETWEEN, ve NULL'ın neden = ile değil yalnızca IS NULL ile filtrelenebildiği -- bu projenin kendi gerçek topic/category tablosu üzerinde. PostgreSQL Foundations kategorisinin 7.'si.

Başlangıç 20 dk
Erişmek için giriş yapın
Sorting, Limiting, and Pagination

ORDER BY, LIMIT/OFFSET, ve NULLS FIRST/LAST -- Spring Data JPA kursundaki Pageable/Sort/Page<T>'in altta gerçekte hangi ham SQL'e dönüştüğü, bu projenin kendi gerçek topic tablosu üzerinde. PostgreSQL Foundations kategorisinin 8.'i.

Orta 20 dk
Erişmek için giriş yapın
JOINs

INNER/LEFT/RIGHT/FULL JOIN, bu projenin kendi gerçek topic→category→course zinciriyle ve gerçek TopicRepository.findBySlugWithCategoryAndCourse JPQL join fetch'iyle -- ve "henüz İngilizce'de yayınlanmamış topic'leri bulma" gibi gerçek bir LEFT JOIN örneğiyle. PostgreSQL Foundations kategorisinin 9.'u.

Orta 25 dk
Erişmek için giriş yapın
Aggregation and GROUP BY

COUNT/SUM/AVG/MIN/MAX, GROUP BY, ve HAVING -- Spring Data JPA'nın Pageable/Sort/projection kelime dağarcığında hiç karşılığı olmayan, tamamen yeni materyal -- bu projenin kendi gerçek "kategori başına topic" LEFT JOIN + GROUP BY sorgusuyla. PostgreSQL Foundations kategorisinin 10.'u ve SONUNCUSU.

Orta 20 dk
Erişmek için giriş yapın
Advanced PostgreSQL
Subqueries, CTEs, and Window Functions

Scalar ve korelasyonlu subquery'ler, WITH (CTE) zincirleme, ve window fonksiyonları (ROW_NUMBER, RANK, PARTITION BY) -- GROUP BY'nin aksine satırları çökertmeden onlar arasında hesaplama, bu projenin kendi gerçek topic tablosuyla. Advanced PostgreSQL kategorisinin 1.'i.

İleri 30 dk
Erişmek için giriş yapın
PostgreSQL-Specific Data Types: UUID, JSON/JSONB, and Arrays

UUID (BIGSERIAL'a alternatif olarak, trade-off'larla), JSON vs. JSONB, ->/->>/@> ile JSONB sorgulama, ve array'ler (ANY/@>/unnest) -- bu projenin gerçek şemasının hiçbirini kullanmadığı dürüstçe belirtilerek, illüstratif ama bu projenin domain'ine bağlı örneklerle. Advanced PostgreSQL kategorisinin 2.'si.

İleri 30 dk
Erişmek için giriş yapın
Indexes and Query Performance with EXPLAIN

EXPLAIN/EXPLAIN ANALYZE, Seq Scan vs. Index Scan, bu projenin kendi gerçek idx_topic_category B-tree index'iyle CREATE INDEX, partial/expression index'ler, ve OFFSET'in maliyetine keyset pagination'la geri dönüş. Advanced PostgreSQL kategorisinin 3.'ü.

İleri 30 dk
Erişmek için giriş yapın
Transactions and Concurrency in PostgreSQL

psql'de gerçek BEGIN/COMMIT/ROLLBACK, MVCC'nin mekanik açıklaması (xmin/xmax), SELECT ... FOR UPDATE ile satır-seviyesi kilitleme, ve bilerek üretilip açıklanan bir deadlock -- "Transaction Management"in isolation kapsamını TEKRARLAMADAN. Advanced PostgreSQL kategorisinin 4.'ü ve SONUNCUSU -- PostgreSQL kursunun 14/14 topic'ini tamamlıyor.

İleri 30 dk
Erişmek için giriş yapın

Git & GitHub

Git Fundamentals
Git Fundamentals

Git nedir, GitHub'dan nasıl farklıdır, ve working tree/staging area/repository zihinsel modeli -- git init, status, add, commit, diff ve log ile. Git & GitHub kursunun ve Git Fundamentals kategorisinin 1.'si.

Başlangıç 30 dk
Erişmek için giriş yapın
Working With Commits

İyi commit mesajları yazmak, git log/git show ile geçmişte gezinmek, git commit -am, ve git commit --amend'in var olan bir commit'i yerinde değiştirmek yerine YENİ bir commit oluşturduğunu anlamak. HEAD ve HEAD~1/HEAD~2 referansları.

Başlangıç 25 dk
Erişmek için giriş yapın
Undoing Changes

git restore ile working tree değişikliklerini geri almak, git reset'in soft/mixed/hard modları arasındaki fark, ve git revert ile paylaşılan commit'leri güvenle geri almak. HEAD, staging area ve working tree arasındaki ilişki, ve git reset --hard'ın veri kaybı riski.

Orta 30 dk
Erişmek için giriş yapın
Branches & Merging

Branch oluşturmak/silmek/yeniden adlandırmak, git switch ile branch değiştirmek, git merge ile fast-forward ve merge commit'in farkı, merge conflict'lere giriş, ve gerçekçi bir Spring Boot feature branch workflow'u. git switch'in git checkout'a neden tercih edildiği.

Orta 35 dk
Erişmek için giriş yapın
GitHub & Remotes

Remote nedir, git clone/push/fetch/pull nasıl çalışır, fetch'in pull'dan farkı (fetch: entegre etmeden indir, pull: fetch + entegre), tracking branch'ler ve git push -u, ve yerel/remote branch'leri senkronize etmek.

Orta 35 dk
Erişmek için giriş yapın
Pull Requests

Pull Request nedir, gerçekçi bir feature branch workflow'u üzerinden nasıl oluşturulur/incelenir/onaylanır, merge vs squash-and-merge farkı, merge sonrası branch'leri silmek, ve branch protection rules.

Orta 30 dk
Erişmek için giriş yapın
Advanced Git
Rebase & Squash

Rebase nedir, merge'den farkı, git rebase -i ile commit'leri squash/reorder/reword etmek, rebase conflict'lerini çözmek, paylaşılan geçmişi yeniden yazmanın tehlikesi, ve git push --force ile --force-with-lease arasındaki fark.

Orta 35 dk
Erişmek için giriş yapın
Merge Conflicts

Bir merge conflict'i tam olarak nedir, conflict marker'ları (<<<<<<<, =======, >>>>>>>) nasıl okunur, gerçek Java kod örnekleriyle nasıl çözülür, merge ve rebase sırasında aynı mekanik, ve git merge --abort/git rebase --abort ile güvenli iptal.

Orta 30 dk
Erişmek için giriş yapın
Stash

git stash ile commit edilmemiş değişiklikleri bir kenara kaydetmek, apply vs pop farkı, çoklu ve isimlendirilmiş stash'ler, git stash drop/clear, ve takip edilmeyen dosyaları stash'lemek. Gerçekçi bir "işi yarıda bırakıp başka göreve geçmek" senaryosu.

Orta 25 dk
Erişmek için giriş yapın
Advanced Git & Best Practices

git cherry-pick, git reflog (özellikle kayıp commit'leri kurtarma mekanizması olarak), git blame, alias'lar, iyi branch/commit konvansiyonları, ve merge/rebase/squash/revert'i özetleyen bir karşılaştırma. Bir geliştirme takımı için Git en iyi pratikleri.

Orta 30 dk
Erişmek için giriş yapın
Practical Git & GitHub Workflow

Kursun tamamında öğretilen her şeyi tek, gerçekçi bir uçtan uca Spring Boot senaryosunda birleştiren kapanış dersi: clone, feature branch, commit/amend, push, Pull Request, inceleme geri bildirimi, main üzerine rebase, conflict çözümü, force-with-lease, ve squash and merge.

Orta 30 dk
Erişmek için giriş yapın

Docker

Docker Fundamentals
Docker Nedir?

Docker'ın ne olduğu, container'ların sanal makinelerden nasıl farklı olduğu, image ile container arasındaki fark, Docker Engine, ve Docker Hub -- Docker kursunun ve Docker Fundamentals kategorisinin 1.'si.

Başlangıç 15 dk
Erişmek için giriş yapın
Docker CLI Temelleri

docker pull, docker images, docker run, docker ps, docker logs, docker exec, docker stop/start, ve docker rm -- bir PostgreSQL container'ının tam yaşam döngüsü üzerinden, gerçek örneklerle anlatılıyor.

Başlangıç 25 dk
Erişmek için giriş yapın
Docker İmajları ve Dockerfile

Bir Dockerfile nedir, FROM, WORKDIR, COPY, RUN, EXPOSE talimatları, CMD ile ENTRYPOINT arasındaki fark, ve docker build ile bir image inşa etmek -- jenerik, minimal bir web sunucusu örneği üzerinden.

Başlangıç 30 dk
Erişmek için giriş yapın
Bir Spring Boot Uygulamasını Docker'a Taşımak

Bir Spring Boot JAR'ı için JRE vs JDK base image seçimi, .dockerignore, multi-stage build'ler, ve container-farkında JVM bellek boyutlandırması -- bu projenin kendi gerçek learning-platform uygulaması üzerinden.

Orta 35 dk
Erişmek için giriş yapın
Docker in Practice
Docker Networking

Varsayılan bridge network'ün container'lar arasında isim çözümlemesini neden desteklemediği, user-defined network'lerle docker network create, container'dan container'a isimle iletişim, ve localhost'un bir container içinde neden farklı bir şey ifade ettiği.

Orta 30 dk
Erişmek için giriş yapın
Docker Volumes

Container'ların neden ephemeral (geçici) olduğu, named volume'lar, docker run -v ile bir volume mount etmek, PostgreSQL'in verisini nerede sakladığı, named volume vs bind mount, ve kalıcılığın bilinçli bir testle doğrulanması.

Orta 30 dk
Erişmek için giriş yapın
Docker Compose

docker-compose.yml, service'ler, depends_on, Compose'ın otomatik servis-adı-ile-networking'i, ve volumes -- "Docker Networking" ile "Docker Volumes"un elle yaptığı her şeyi tek bir dosyaya ve docker compose up'a indirerek.

Orta 35 dk
Erişmek için giriş yapın
Production İçin Docker (Java Uygulamaları)

Layer caching ile daha hızlı rebuild'ler, root olmayan bir kullanıcı, Dockerfile HEALTHCHECK, Compose'un depends_on: condition: service_healthy'siyle gerçek bağımlılık hazırlığını beklemek, ve production konfigürasyonu/sırlar.

İleri 40 dk
Erişmek için giriş yapın
Pratik Proje: Docker ile Spring Boot + PostgreSQL

Bu kursun her dersinin işlediği her parçayı -- multi-stage Dockerfile, non-root kullanıcı, HEALTHCHECK, Docker Compose, named volume, otomatik networking -- küçük, tam bir Spring Boot + PostgreSQL task tracker uygulamasında bir araya getiren, kursun kapanış dersi.

İleri 45 dk
Erişmek için giriş yapın