<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel>
    <title>Tekin Ali</title>
    <link>https://tekinali.com/</link>
    <description>Bilgisayar Mühendisi · .NET, iOS &amp; NLP</description>
    <language>tr</language>
    <item>
      <title>SQL'de grup başına ilk satır: sorguyu veriye göre seçmek</title>
      <link>https://tekinali.com/blog/her-gruptan-ilk-satir</link>
      <guid>https://tekinali.com/blog/her-gruptan-ilk-satir</guid>
      <pubDate>Wed, 21 Oct 2026 00:00:00 GMT</pubDate>
      <description>SQL Server, PostgreSQL, EF Core ve Spark'ta grup başına ilk ya da ilk N satırı seçme rehberi: her kalıp nasıl çalışır, hangisinin kazanacağını veri dağılımı neden belirler, hangi index'ler gerekir ve seçim plan üzerinde nasıl doğrulanır.</description>
      <category>sql</category>
      <category>sql-server</category>
      <category>postgresql</category>
      <category>performance</category>
    </item>
    <item>
      <title>C#'ta senkron koddan async çağırmak: deadlock, thread pool ve doğru yaklaşım</title>
      <link>https://tekinali.com/blog/async-metodu-senkron-cagirmak</link>
      <guid>https://tekinali.com/blog/async-metodu-senkron-cagirmak</guid>
      <pubDate>Tue, 13 Oct 2026 00:00:00 GMT</pubDate>
      <description>Bir Task'ı bloklayarak beklemek UI uygulamalarında nasıl deadlock'a, ASP.NET Core'da nasıl thread pool tükenmesine yol açar; bloklamak kaçınılmazsa ne yapılır; ConfigureAwait(false) ve ConfigureAwaitOptions nerede önemlidir; gizli async void process'i nasıl çökertir.</description>
      <category>dotnet</category>
      <category>csharp</category>
      <category>async</category>
    </item>
    <item>
      <title>SQL Server, PostgreSQL ve SQLite'ta eşzamanlılığa dayanıklı upsert</title>
      <link>https://tekinali.com/blog/upsert-sql-server-postgresql-sqlite</link>
      <guid>https://tekinali.com/blog/upsert-sql-server-postgresql-sqlite</guid>
      <pubDate>Mon, 12 Oct 2026 00:00:00 GMT</pubDate>
      <description>Upsert'in eşzamanlılık altında nasıl bozulduğu ve nasıl güvenli yazılacağı: SQL Server'da UPDLOCK ve SERIALIZABLE ya da MERGE, PostgreSQL'de ON CONFLICT, MERGE ve RETURNING, SQLite'ta yerleşik UPSERT ve INSERT OR REPLACE'in neden upsert olmadığı.</description>
      <category>sql</category>
      <category>sql-server</category>
      <category>postgresql</category>
      <category>sqlite</category>
    </item>
    <item>
      <title>Spark'ta partition yönetimi: repartition(), coalesce() ve Adaptive Query Execution</title>
      <link>https://tekinali.com/blog/spark-repartition-coalesce-aqe</link>
      <guid>https://tekinali.com/blog/spark-repartition-coalesce-aqe</guid>
      <pubDate>Wed, 23 Sep 2026 00:00:00 GMT</pubDate>
      <description>Partition sayısının Spark performansını nasıl belirlediği, repartition() ve coalesce()'un gerçekte ne yaptığı, coalesce(1)'in neden bütün bir job'ı tek task'a sıkıştırabildiği ve Spark 3.2'den beri açık olan AQE'nin partition tuning'in çoğunu çalışma anında nasıl üstlendiği.</description>
      <category>spark</category>
      <category>pyspark</category>
      <category>performance</category>
    </item>
    <item>
      <title>NOLOCK'un ötesi: row versioning, RCSI ve SQL Server 2025 optimized locking</title>
      <link>https://tekinali.com/blog/nolock-neden-hala-yanlis</link>
      <guid>https://tekinali.com/blog/nolock-neden-hala-yanlis</guid>
      <pubDate>Thu, 17 Sep 2026 00:00:00 GMT</pubDate>
      <description>NOLOCK'un gerçekte nasıl davrandığı (dirty read, atlanan ve iki kez okunan satırlar, 601 hatası), RCSI ve SNAPSHOT isolation'ın onun yerini nasıl aldığı ve SQL Server 2025 optimized locking'in üstüne neler kattığı, sınırlarıyla birlikte.</description>
      <category>sql-server</category>
      <category>concurrency</category>
      <category>performance</category>
    </item>
    <item>
      <title>Main actor, @concurrent ve [weak self]: Swift 6.2 için concurrency alışkanlıkları</title>
      <link>https://tekinali.com/blog/swift-6-2-main-thread-ve-weak-self</link>
      <guid>https://tekinali.com/blog/swift-6-2-main-thread-ve-weak-self</guid>
      <pubDate>Wed, 09 Sep 2026 00:00:00 GMT</pubDate>
      <description>Swift 6.2'deki varsayılan main actor izolasyonu, nonisolated(nonsending) ve @concurrent kodun nerede çalıştığını nasıl değiştiriyor, async neden arka plan demek değil ve Task içinde [weak self] ne zaman hâlâ önemli.</description>
      <category>ios</category>
      <category>swift</category>
      <category>concurrency</category>
    </item>
    <item>
      <title>UIKit ve SwiftUI'da text field'ları klavyenin üstünde tutmak</title>
      <link>https://tekinali.com/blog/ios-klavye-text-field-kapatiyor</link>
      <guid>https://tekinali.com/blog/ios-klavye-text-field-kapatiyor</guid>
      <pubDate>Sat, 05 Sep 2026 00:00:00 GMT</pubDate>
      <description>Yazılım klavyesinin layout'la ilişkisi ve bugünün araçları: UIKit'te UIKeyboardLayoutGuide, SwiftUI'da klavye safe area'sı; focus ve klavyeyi kapatmak için @FocusState, onSubmit ve scrollDismissesKeyboard.</description>
      <category>ios</category>
      <category>uikit</category>
      <category>swiftui</category>
    </item>
    <item>
      <title>Ekranlar arası veri akışı: UIKit'te injection'dan SwiftUI'da @Observable'a</title>
      <link>https://tekinali.com/blog/ekranlar-arasi-veri-aktarimi-observable</link>
      <guid>https://tekinali.com/blog/ekranlar-arasi-veri-aktarimi-observable</guid>
      <pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate>
      <description>UIKit view controller'ları arasında veriyi singleton kullanmadan ileri ve geri taşımak, SwiftUI'da @Observable, @State, @Environment ve @Bindable ile state paylaşmak, değer tabanlı navigasyon ve Xcode 27'de @State başlangıç değerlerinde neyin değiştiği.</description>
      <category>ios</category>
      <category>swift</category>
      <category>uikit</category>
      <category>swiftui</category>
    </item>
    <item>
      <title>Bu site nasıl çalışıyor?</title>
      <link>https://tekinali.com/blog/bu-site-nasil-calisiyor</link>
      <guid>https://tekinali.com/blog/bu-site-nasil-calisiyor</guid>
      <pubDate>Thu, 27 Aug 2026 00:00:00 GMT</pubDate>
      <description>Özgeçmişimi neden bir IDE'ye ve gerçek bir SQLite veritabanına koydum, alttaki SQL konsolu nasıl güvenli tutuluyor.</description>
      <category>dotnet</category>
      <category>sqlite</category>
      <category>security</category>
    </item>
    <item>
      <title>SQLite'ta hızlı ve güvenli toplu INSERT: transaction'lar, WAL ve iOS</title>
      <link>https://tekinali.com/blog/sqlite-insert-performansi-ios</link>
      <guid>https://tekinali.com/blog/sqlite-insert-performansi-ios</guid>
      <pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate>
      <description>SQLite'ta toplu INSERT'in varsayılan olarak neden yavaş olduğu, bunu düzelten üç teknik, synchronous=OFF ve journal_mode=MEMORY'nin gerçek riski, WAL ile synchronous=NORMAL'ın neden daha güvenli bir varsayılan olduğu ve bunların Core Data, SwiftData ve .NET'teki karşılığı.</description>
      <category>sqlite</category>
      <category>ios</category>
      <category>dotnet</category>
      <category>performance</category>
    </item>
    <item>
      <title>ASP.NET Core'da servis ömürleri: transient, scoped, singleton ve captive dependency tuzağı</title>
      <link>https://tekinali.com/blog/addtransient-addscoped-addsingleton</link>
      <guid>https://tekinali.com/blog/addtransient-addscoped-addsingleton</guid>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
      <description>Transient, scoped ve singleton gerçekte ne demek, scoped bir DbContext singleton içinde nasıl esir kalır, scope doğrulaması bunu nasıl yakalar; background service'ler, thread safety, keyed service'ler (.NET 8) ve HttpClient ömürleri nasıl yönetilir.</description>
      <category>dotnet</category>
      <category>aspnet-core</category>
      <category>dependency-injection</category>
    </item>
    <item>
      <title>EF Core'da toplu ekleme, güncelleme ve silme: SaveChanges batch'lemeden SqlBulkCopy'ye</title>
      <link>https://tekinali.com/blog/ef-core-toplu-ekleme-guncelleme-silme</link>
      <guid>https://tekinali.com/blog/ef-core-toplu-ekleme-guncelleme-silme</guid>
      <pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate>
      <description>EF Core'un batch'lenen SaveChanges'ı EF6 dönemi yaklaşımdan nasıl ayrılır; ExecuteUpdate/ExecuteDelete nasıl çalışır, nerede ısırır; EF Core 10'un koşullu setter'ları, map'lenmemiş tipler için SqlQuery ve ne zaman SqlBulkCopy ya da PostgreSQL COPY'ye geçmeli.</description>
      <category>dotnet</category>
      <category>efcore</category>
      <category>performance</category>
    </item>
    <item>
      <title>OpenAI Responses API'de token sayma, konuşma durumu ve 429 hataları</title>
      <link>https://tekinali.com/blog/openai-api-token-sayma-ve-konusma-durumu</link>
      <guid>https://tekinali.com/blog/openai-api-token-sayma-ve-konusma-durumu</guid>
      <pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate>
      <description>OpenAI API'nin nasıl değiştiği, bir istekten önce input token sayısının nasıl hesaplanacağı, konuşma durumunu korumanın üç yolu (manuel tekrar gönderim, previous_response_id, Conversations API) ve 429'da kota hatasını rate limit'ten ayırmak; Python ve C# örnekleriyle.</description>
      <category>openai</category>
      <category>ai</category>
      <category>python</category>
      <category>dotnet</category>
    </item>
  </channel>
</rss>