Mert Özen Her Satırda Daha İleri

Blog

Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.

Seriler
317 yazı bulundu
JavaScript'te Animasyon ve Scroll API'leri: element.animate, getAnimations, finished Promise'i, scrollIntoView ve scrollend
Frontend SERİ 17

JavaScript'te Animasyon ve Scroll API'leri: element.animate, getAnimations, finished Promise'i, scrollIntoView ve scrollend

JavaScript'te animasyonu element.animate ile başlatır, dönen Animation object'iyle yönetir, bitişini finished promise'iyle beklersin; kaydırmada scrollIntoView ve scrollBy ile hedefe gider, işi scrollend ile kaydırma bitince yaparsın. Bookstore'da sepete uçan kapak, checkout'ta hatalı alana gitme ve kitap şeridi oklarıyla, gerçek tarayıcı çıktılarıyla gösteriyoruz.

15 Kas 2026 12 dk 8
JavaScript Intl ile Yerelleştirme: Collator ile Türkçe Sıralama, PluralRules, ListFormat, Segmenter, DisplayNames ve DurationFormat
Frontend SERİ 19

JavaScript Intl ile Yerelleştirme: Collator ile Türkçe Sıralama, PluralRules, ListFormat, Segmenter, DisplayNames ve DurationFormat

Türkçe sıralama için Intl.Collator("tr"), tekil/çoğul metin için PluralRules, "Dune, Emma ve The Hobbit" için ListFormat, emoji'li yorumda karakter sınırı için Segmenter ve okuma süresi için DurationFormat kullanılır. Bookstore örnekleriyle her birini, tarayıcı farklarını ve instance'ları cache'lemenin neden önemli olduğunu gerçek çıktılarla gösteriyoruz.

15 Kas 2026 13 dk 8
HTML'de Global Attribute'lar, Link Türleri ve Inline SVG: data-*, hidden, contenteditable, spellcheck, translate, download, mailto/tel ve Erişilebilir İkon
Frontend SERİ 13

HTML'de Global Attribute'lar, Link Türleri ve Inline SVG: data-*, hidden, contenteditable, spellcheck, translate, download, mailto/tel ve Erişilebilir İkon

contenteditable bir form control'ü değildir: plaintext-only zengin metni düz metne çevirir ama not form'la sunucuya gitmez, doğru element textarea. Bu yazıda data-*, hidden="until-found", spellcheck, autocapitalize ve translate'i Chromium ve WebKit'te ölçüyor; tel:, mailto: ve download'ın aynı origin sınırını, erişilebilir SVG ikonları ve <svg hidden> tuzağını Bookstore üzerinde gösteriyoruz.

15 Kas 2026 17 dk 7
Angular'da Animasyon: animate.enter, animate.leave, CSS ile Geçişler ve @angular/animations'tan Geçiş
Frontend SERİ 35

Angular'da Animasyon: animate.enter, animate.leave, CSS ile Geçişler ve @angular/animations'tan Geçiş

Angular 20.2 ile gelen animate.enter ve animate.leave, element DOM'a girerken ve çıkarken bir CSS class'ı ekleyip animasyonun bitmesini bekler; @angular/animations gerekmez. Bookstore sepetinde satır ve toast animasyonları, prefers-reduced-motion, @starting-style, withViewTransitions ve eski trigger kodundan geçişi anlatıyoruz.

15 Kas 2026 8 dk 6
Angular'da i18n: $localize, i18n Attribute'u, ICU Mesajları, ng extract-i18n ve Locale Başına Build
Frontend SERİ 34

Angular'da i18n: $localize, i18n Attribute'u, ICU Mesajları, ng extract-i18n ve Locale Başına Build

Angular'ın build-time i18n'i metni i18n attribute'u ve $localize ile işaretler, ng extract-i18n ile XLIFF dosyasına çıkarır ve her dil için ayrı bir uygulama build eder. Bookstore arayüzünü TR/EN yapıyor, ICU plural/select, LOCALE_ID, ASP.NET Core'da /tr ve /en yönlendirmesi ile eksik çeviriyi build'de yakalamayı anlatıyoruz.

15 Kas 2026 9 dk 7
Angular'da Kendi Form Control'ünü Yazmak: FormValueControl, FormCheckboxControl ve Eski Kodda ControlValueAccessor
Frontend SERİ 33

Angular'da Kendi Form Control'ünü Yazmak: FormValueControl, FormCheckboxControl ve Eski Kodda ControlValueAccessor

Angular 22'de bir component'in form control olması için value = model() yeterli: FormValueControl ve FormCheckboxControl ile adet stepper'ı ve hediye paketi düğmesi yazıyor, aynı control'ü Reactive Forms ve ngModel ile kullanıyor, eski ControlValueAccessor kodunu okuyup taşıyoruz.

15 Kas 2026 10 dk 5
Angular Signal Forms Pratikte: form(), Schema, Built-in ve Custom Validator'lar, Async Doğrulama ve submit()
Frontend SERİ 32

Angular Signal Forms Pratikte: form(), Schema, Built-in ve Custom Validator'lar, Async Doğrulama ve submit()

Signal Forms'ta veri bir model signal'inde durur, form() onun üstüne tipli bir FieldTree kurar. Bookstore checkout form'unu schema, built-in ve custom validator'lar, applyWhen/applyEach, debounce'lu validateHttp ile kupon kontrolü ve sunucu hatalarını field'lere dağıtan submit() ile kuruyoruz.

15 Kas 2026 11 dk 7
Flutter 3 ve Dart 3'te Gelenler: Impeller, Pattern'ler, Widget Previews, material_ui ve Sırada Ne Var
Frontend SERİ 17

Flutter 3 ve Dart 3'te Gelenler: Impeller, Pattern'ler, Widget Previews, material_ui ve Sırada Ne Var

Dart 3.0 null safety'yi zorunlu yapıp record, pattern ve sealed class getirdi; 3.6–3.13 digit separator'dan primary constructor'a kadar küçük ama günlük kodu değiştiren adımlar attı. Flutter tarafında Impeller, SwiftPM, UIScene, Widget Previews ve 3.44–3.50 arasında Material'in material_ui paketine ayrılması var; dil sürümünün pubspec'ten geldiğini ve yükseltme pratiğini gerçek çıktılarla gösteriyoruz.

15 Kas 2026 8 dk 14
Flutter Uygulamasını Yayınlamak: Google Play ve App Store, Signing, Versioning, Flavor'lar ve CI
Frontend SERİ 16

Flutter Uygulamasını Yayınlamak: Google Play ve App Store, Signing, Versioning, Flavor'lar ve CI

Flutter uygulaması iki mağazada da aynı yoldan geçer: release build, imzalama, test kanalı, inceleme ve kademeli yayın. Bookstore için sürüm numaralarını, --dart-define-from-file ile ortamları (ve neden secret taşıyamadıklarını), Android upload key ve Play App Signing'i, iOS imzalama ve TestFlight'ı, 2026 mağaza kurallarını ve GitHub Actions'ta imzalı App Bundle build'ini anlatıyoruz.

15 Kas 2026 8 dk 14
Flutter'da Test: Unit, Widget ve Integration Test, Fake Repository'ler ve Golden Test
Frontend SERİ 15

Flutter'da Test: Unit, Widget ve Integration Test, Fake Repository'ler ve Golden Test

Flutter'da testin omurgası fake repository'lerle yazılan unit ve widget testleridir; mock yalnız "bu çağrı yapıldı mı?" sorusu için, integration_test kritik akışlar için, golden test de tek platformda görsel değişiklikleri yakalamak için. Bookstore'un 86 testi, provider ve go_router'lı checkout akışı, mocktail'in registerFallbackValue tuzağı ve golden'ın platform farkıyla.

15 Kas 2026 9 dk 15
Flutter'da Local Storage ve Offline: shared_preferences, flutter_secure_storage, SQLite/drift ve Cache Stratejisi
Frontend SERİ 14

Flutter'da Local Storage ve Offline: shared_preferences, flutter_secure_storage, SQLite/drift ve Cache Stratejisi

Flutter'da küçük ve gizli olmayan ayarlar shared_preferences'a, token'lar flutter_secure_storage'a (iOS Keychain, Android Keystore), sorgulanan veri drift ile SQLite'a yazılır. Bookstore'un sepetini drift'e taşıyor, migration ve reactive query'yi deniyor, katalogu fresh cache, ağ ve stale cache sırasıyla internet yokken de gösteriyoruz; ViewModel'ler değişmeden.

15 Kas 2026 9 dk 10
Flutter'da API Entegrasyonu: http/dio, JSON Serialization, Repository ve ASP.NET Core Bookstore API'ye Bağlanmak
Frontend SERİ 13

Flutter'da API Entegrasyonu: http/dio, JSON Serialization, Repository ve ASP.NET Core Bookstore API'ye Bağlanmak

Flutter uygulamasını bir ASP.NET Core API'ye bağlamanın sağlam yolu, HTTP'yi tek bir ApiClient'ta toplamak (timeout, yalnız GET için retry, 401'de tek refresh), JSON'u domain modeline tek noktada çevirmek ve repository'yi değiştirip ViewModel'e dokunmamaktır. Bookstore API'nin SQLite kopyasına karşı gerçek yanıtlar, ProblemDetails eşlemesi, 10.0.2.2, cleartext ve CORS tuzaklarıyla.

15 Kas 2026 12 dk 8
Blog Haritası