<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Berkay Kanca on Medium]]></title>
        <description><![CDATA[Stories by Berkay Kanca on Medium]]></description>
        <link>https://medium.com/@berkaykanca78?source=rss-2c4bc19bdc68------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/0*8npajazNVlYpNkAP</url>
            <title>Stories by Berkay Kanca on Medium</title>
            <link>https://medium.com/@berkaykanca78?source=rss-2c4bc19bdc68------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Fri, 22 May 2026 00:17:02 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@berkaykanca78/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[En Çok Kullandığım NuGet Paketleri]]></title>
            <link>https://medium.com/@berkaykanca78/en-%C3%A7ok-kulland%C4%B1%C4%9F%C4%B1m-nuget-paketleri-hakk%C4%B1nda-6670f775fac5?source=rss-2c4bc19bdc68------2</link>
            <guid isPermaLink="false">https://medium.com/p/6670f775fac5</guid>
            <dc:creator><![CDATA[Berkay Kanca]]></dc:creator>
            <pubDate>Sun, 19 Nov 2023 08:40:55 GMT</pubDate>
            <atom:updated>2023-11-26T17:32:16.168Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*i187nPo6cCRP-WPcAmLkKQ.png" /><figcaption>NuGet Paketleri</figcaption></figure><h3>NuGet Paketleri: (12)</h3><blockquote><em>Kullanımını Tavsiye Ettiğim Harici Kütüphaneler Burada Yer Alacaktır.</em></blockquote><ul><li><strong>AutoMapper:</strong> ViewModel ile Modelinizi istediğiniz şekilde eşleştirir ve gelen değerleri tek tek eşitlemeye gerek kalmadan kodu daha temiz yazmamıza yardımcı olur.</li><li><strong>Benchmark DotNet:</strong> Benchmark testlerini kolayca uygulamamıza yardımcı olur, yazdığımız kodların daha performanslı nasıl çalışabileceğini test ederken kullanabiliriz.</li><li><strong>Bogus:</strong> Sahte veri oluşturarak Unit Testlerde kullanılabilir, ben genellikle proje ilk kez ayağa kalktığında veritabanınındaki tabloları beslemek için kullanıyorum.</li><li><strong>Entity Framework Core: </strong>Genellikle LINQ kütüphanesi ile birlikte kullanılır, veritabanındaki tabloların verilerin nesneler halinde kod içerisinde rahatlıkla kullanımını sağlar.</li><li><strong>Entity Framework Core Pagination ~ Taner Saydam:</strong> EF ile birlikte kullanılıp sayfalamaları kolayca yapmamıza yardımcı olur.</li><li><strong>ErrorOr:</strong> Generic Error Kullanımı İçin Kolaylık Sağlamaktadır.</li><li><strong>Fluent Validation:</strong> Validasyon işlemlerinde eskiden attribute üzerinden ilgili zorunlu alanlar, hata mesajları vs ayarlanılırdı. Artık bu paket ile birlikte fluent şekilde daha anlaşılır validasyon kontrolleri yapılaiblmektedir.</li><li><strong>GrapeCity Pdf: </strong>.NET uygulamalarında ilgili resim, metin, grafik gibi verilerin kolayca pdf içerisinde kullanımını sağlamaktadır.</li><li><strong>Polly:</strong> Endpointe istek atıldığında geçici bir problem , sistemsel bir hata, zaman aşımı, atılan istek sayısı kısıtlaması, başarısızlık durumunda bir B planı olarak işlemi kesme gibi vb alanlar da çalışmalar yapabilirsiniz.</li><li><strong>Serilog:</strong> Loglama mekanizması için kullanılır. Seq kütüphanesi ile birlikte kullanılırsa loglar görselleştirleiblir ve arayüz üzerinden kolaylık erişileiblir.</li><li><strong>SmartEnum ~ Steve Smith:</strong> Birçok faydalı özelliği vardır, benim en çok hoşuma giden özelliği ise enumlarda kategorilendirme işlemlerinin kolayca yapılabilmesi.</li><li><strong>Swashbuckle.AspNetCore ~ Swagger</strong>: Swagger arayüzü sayesinde Controller içerisindeki REST API metodlarımıza istek atıp canlı olarak test edebilmemizi sağlar.</li></ul><p>İlgili NuGet Paketlerinin Örneklerini İçeren Proje İle Uygulamalı Olarak Kendiniz Deneyebilirsiniz:</p><pre>https://github.com/berkaykanca78/BestNugetPackages</pre><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6670f775fac5" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Sık Kullandığımız PostgreSQL Komutları]]></title>
            <link>https://medium.com/@berkaykanca78/postgresql-komutlar%C4%B1-4ceb1ad4d19f?source=rss-2c4bc19bdc68------2</link>
            <guid isPermaLink="false">https://medium.com/p/4ceb1ad4d19f</guid>
            <category><![CDATA[postgresql]]></category>
            <dc:creator><![CDATA[Berkay Kanca]]></dc:creator>
            <pubDate>Mon, 23 Oct 2023 10:10:48 GMT</pubDate>
            <atom:updated>2023-11-14T13:26:58.212Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/512/1*i0OENSIke8E_vSk76S2bfg.png" /><figcaption>PostgreSQL</figcaption></figure><p><em>Merhabalar, bugün sizlerle sıklıkla kullanılan </em>PostgreSQL k<em>omutlarını kısa cümlelerle açıklayacağım. Yazımı tek seferde bitiremeyeceğim, araştırdıkça yeni bulduğum anahtar kelimeleri ekleyerek güncellemeye devam edeceğim. (Bazı anahtar kelimeler bütün SQL dillerinde ortaktır, bazıları ise </em>PostgreSQL’e <em>özgüdür.) Tanımları kabataslak yazmaktayım, daha anlaşılır hale getireceğim. :)</em></p><ol><li><strong>VERİ TİPLERİ:</strong></li></ol><blockquote><strong>1.1. SMALLINT: </strong>-32.768 ile +32.767 arasındaki sayısal değerleri tutar.</blockquote><blockquote><strong>1.2. REAL:</strong> Ondalık Basamak hassasiyeti 6 basamağa kadar olan ondalıklı sayısal değerleri tutmamızı sağlar. (5,5 veya 5,5003 gibi.)</blockquote><blockquote><strong>1.3. DOUBLE PRECISION:</strong> Ondalık Basamak hassasiyeti 15 basamağa kadar olan ondalıklı sayısal değerleri tutmamızı sağlar. (150.5566212228 gibi.)</blockquote><blockquote><strong>1.4. INTEGER:</strong> -2147483684 ile +2147483647 arasındaki sayısal verileri saklar.</blockquote><blockquote><strong>1.5. TIME:</strong> Saat bilgisini kaydetmek istersek kullanırız. (11:45:59.1530 gibi)</blockquote><blockquote><strong>1.6. TIME WITH TIME ZONE:</strong> Saat dilimine göre veri tutan veri tipidir (11:45:59.1530 +3 gibi +3 saat dilimine göre saatini tuttuk.)</blockquote><blockquote><strong>1.7. TIMESTAMP:</strong> Zaman ile ilgili verileri tutar, saat dilimi tutmaz.</blockquote><blockquote><strong>1.8. TIMESTAMPTZ: </strong>Saat dilimi tutar, zaman ile ilgili verileri tutar.</blockquote><blockquote><strong>1.9. INTERVAL:</strong> Aralık halinde veri getiren bir ifadedir. SELECT NOW() — INTERVAL ‘ -3 MONTHS AGO’; 3 ay önceki bilgileri getirdi.</blockquote><blockquote><strong>1.10. UUID:</strong> Evrensel olarak benzersiz 128 bitlik sayılardır. CREATE EXTENSION IF NOT EXISTS “uuid-ossp”; ile kurulur. Tablo içerisinde veri tipini kullanarak kolonlar oluşturabiliriz.</blockquote><blockquote><strong>1.11. ARRAY: </strong>Dizi değerlerini tutuğumuz bir veri tipi TEXT [] gibi kullanılabilir.</blockquote><blockquote><strong>1.12. JSON:</strong> Json tipinde verileri tutarız. Anahtar değer şeklinde veriler tutulur.</blockquote><blockquote><strong>1.13. SMALLSERIAL: </strong>1 ile 32767 arası sayı aralığı tutan yapıdır. Otomatik artan verilerde kullanılır örneğin id: 1,2,3,4 … diye otomatik kendisi verir değerini.</blockquote><blockquote><strong>1.14. DATE: </strong>tarih türü tipi ifdeleri saklayan tiptir.</blockquote><blockquote><strong>1.15. SERIAL: </strong>1 ile 2.147.483.647 sayı aralığı arasında otomatik artan sayısal veri tutar.</blockquote><blockquote><strong>1.16. BIGSERIAL: </strong>1 ile 9,223,372,036,854,775,807 sayı aralığı arasında otomatik artan sayısal veri tutar.</blockquote><blockquote><strong>1.17. CHAR:</strong> Metinsel yazısal ifadedleri bunu kullanarak saklarız. Ad CHAR(5) gibi…</blockquote><blockquote><strong>1.18. VARCHAR:</strong> Metinsel ifadeleri skalayn bir tiptir. Soyad VARCHAR(10) gibi..</blockquote><blockquote><strong>1.19. TEXT:</strong> Metinsel ifadeleri skalayn bir tiptir. Sınırı yoktur, istediğin kadar metinsel ifade ekleyebilrisiniz içerisine.</blockquote><blockquote><strong>1.20. BIGINT:</strong> 8 bytelık sayısal veriyi tutar. -9, 223, 372, 036, 854, 775, 808 ile +9, 223, 372, 036, 854, 775, 807 sayıları arasında.</blockquote><blockquote><strong>1.21. DECIMAL: </strong>Ondalık noktasından önce 131072 sonra ise 16383 basamağa kadar tutar, küsuratlı yapıları tutar.</blockquote><blockquote><strong>1.22. NUMERIC:</strong> Veri tipi ondalık öncesi̇ 131072, sonrası ise 16383 basamağa kadar tutar, deci̇mal gi̇bi̇di̇r.</blockquote><blockquote><strong>1.23. BOOLEAN:</strong> True false değerlerini tuttuğumuz ifadesel durumları tutan veri tipidir.</blockquote><p><strong>2. ANAHTAR KELİMELER:</strong></p><blockquote><strong>2.1. INTERSECT:</strong> 2 tablomuzun ortak kesişim noktalarını bize verir. A KESİŞİM B</blockquote><blockquote><strong>2.2. EXCEPT: </strong>İlk tablomuzun 2. tablomuzdan farkını bize verir. A/B</blockquote><blockquote><strong>2.3. UNION ALL:</strong> Eşleşmesini istediğimiz 2 farklı tablodaki satırların birleşmiş şekilde toplu kolonlarını görmemize yardımcı olur.</blockquote><blockquote><strong>2.4. GROUP BY:</strong> Adı üzerinde tablomuzda istediğimiz alanları gruplayıp kullanmamızı sağlar AGGREGATE anahtar kelimeler kullanılması gerekmektedir (SUM, COUNT, AVG, MIN, MAX gibi) ve gruplamasını istediğimiz satırlar dışında başka satır yazarsak sorgumuzda hata verir. Örneğin: Adları aynı olanları gruplayalım gibi.</blockquote><blockquote><strong>2.5. HAVING:</strong> Bu kullanım aslında bize GROUP BY içinde WHERE sorgusu yazmamızı sağlar. Genellikle belli sayıdan fazla veya az eleman sayısını içeren kolonu getirmekte kullanmaktayız. Örneğin: TC’si birden fazla o satırda içeren kayıtları getir gibi..</blockquote><blockquote><strong>2.6. NOT IN: </strong>İstemediğimiz verileri sorguda WHERE içerisinde NOT IN içerisindeki parantezler arasına yazarız ve bu istemediklerimizi dışındaki durumlar gelir.</blockquote><blockquote><strong>2.7. BETWEEN: </strong>Belirlediğimiz iki değer arasındaki kayıtları sorgulamamız için kullanılır.</blockquote><blockquote><strong>2.8. CURRENT_DATE:</strong> Mevcut tarihi almamızı sağlayan komuttur.</blockquote><blockquote><strong>2.9. CURRENT_TIME:</strong> Saat dilimine göre geçerli saat bilgisini getirir. CURRENT_TIME(3) gibi kullanılırsa parantez içindeki sayı kadar son değeri son değeri hassas olur, milisaniye cinsinden bahsetmekteyim.</blockquote><blockquote><strong>2.10. LOCALTIME:</strong> Geçerli saat bilgisini getirir. LOCALTIME(3) gibi kullanılırsa parantez içindeki sayı kadar son değeri hassas olur, milisaniye cinsinden bahsetmekteyim.</blockquote><blockquote><strong>2.11. NOW: </strong>Geçerli tarihi ve saati bize getiren fonksiyon. SELECT NOW()::DATE; sadece tarihi getirdi saat getirmedi böyle de bir kullanımı vardır.</blockquote><blockquote><strong>2.12. AGE:</strong> Fonksiyona tarih bilgilerini parametre olarak girdiğimizde bizim güncel yaşımızı kaç ay kaç gündür yaşadığımızı gösterir.</blockquote><blockquote><strong>2.13. UNION:</strong> Aynı tipteki aynı kolondaki verileri alt alt alta dizmek için kullanırız. (SELECT e.home_phone AS Telefon FROM employees e;<br>UNION<br>SELECT c.phone AS Telefon FROM customers c;) 2 farklı tablodaki telefonları bir araya getirdik örnekte. UNION’un UNION ALL’dan farkı; UNION DISTINCT işlemi yaparak tekrar eden kayıtları getirmez, UNION ALL ise onları getiririr.</blockquote><blockquote><strong>2.14. IN: </strong>İstediğimiz verileri sorguda WHERE içerisinde IN içerisindeki parantezler arasına yazarız ve bu istediğimiz durumlar gelir.</blockquote><blockquote><strong>2.15. GROUPING SETS:</strong> GROUP BY’dan daha karmaşık gruplama ihtiyaçları için PostgreSQL GROUPING SETS, CUBE ve ROLL UP seçeneklerini sunar. Çoklu gruplayıp birleşimlerini alacağınız işlemlerde kullanılır.</blockquote><blockquote><strong>2.16 LIMIT:</strong> MSSQL’deki TOP’un karşılığıdır. İlk x kadar kaydı getir derken kullanırız. Örneğin: SELECT * FROM products LIMIT 5; Products tablosundaki ilk 5 kaydı getir gibi. ORDER BY DESC ile kullanıp sondaki kayıtları da getirebilirsiniz.</blockquote><blockquote><strong>2.17. OFFSET: </strong>Sayfalama işlemlerinde kullanılır genellikle. İlk x kadar satırı atlaıp ondan sonrakileri getir diyebiliriz. LIMIT ile birlikte kullanıp ilk 10 satırı atlayıp sonraki 10 satırı getir gibi diyebiliriz. Örneğin : SELECT * FROM categories c LIMIT 10 OFFSET 10;</blockquote><blockquote><strong>2.18. DISTINCT: </strong>SELECT DISTINCT category_id FROM products gibi kullanılarak tekrar eden kayıtları tekilleştiririz. BU örnekte her katgoriden 1 tane gelecek şekilde tablodan verileri aldırdık.</blockquote><blockquote><strong>2.19. SELECT: </strong>Verilerimizi tablomuzdan çekmekte kullanılan sorgu biçimidir. SELECT * FROM İllerile İller tablosundaki bütün kolonları çektik. * yerine istediğimiz kolon isimlerini yazarak sadece onları getirebiliriz. Örneğin; SELECT il_adi FROM İller gibi..</blockquote><blockquote><strong>2.20. WHERE: </strong>Verilerimiz içerisinde filtreleme yaparken kullanırız. İstediğimiz durumları getirmek için and or gibi ara cümlecikleri de kullanarak sorgumuzu yazarız. Örneğin SELECT * FROM product WHERE price &gt; 50 50 birimden daha pahalı ürünleri getir gibi kullanabiliriz.</blockquote><blockquote><strong>2.21. FETCH FIRST ROW ONLY: </strong>İstediğimiz kadar ilk verileri veya sıralama terseten desc yaparak son verileri getirmemizi sağlar. FETCH FIRST ROW ONLY dersek 1 kayıdı getirir. FETCH FIRST 5 ROW ONLY dersek ilk 5 kaydı getirir gibi kullanabiliriz.</blockquote><blockquote><strong>2.22. ORDER BY: </strong>Sıralama işlemlerinde kullanılır. ASC ile küçükten büyüğe (1–9 veya A-Z) DESC ile ise tam tersi büyükten küçüğe (9–1 veya Z-A) şeklinde sıralama yapılır.</blockquote><blockquote><strong>2.23. LENGTH:</strong> Kullandığımız kolunun boyutunu bize verir. SELECT LENGTH(name) FROM Person Person tablosuandaki isimlerin uzunluklarını verdi Mesela Berkay için 6 karakter olduğundan 6 olarak döner.</blockquote><blockquote><strong>2.24. TO_CHAR:</strong> Tarih formatını değiştirip kullanmamızı sağlar. İstediğimiz formatta yazabiliriz. Örneğin: SELECT TO_CHAR(now()::DATE, ‘dd/mm/yyyy’); 31/01/2020 veya SELECT TO_CHAR(now()::DATE, ‘yyyy-mm-dd’); 2020–01–30 gibi.</blockquote><blockquote><strong>2.25. LIKE:</strong> Buna benzeyen, içinde bunları barındıran anlamına gelir. %% arasında ise o aralıkta başta veya sonda ise başında sonunda anlamında kullanılır. ‘%a_s’ a ile s arasında herhangi bir harf olabilir gibi..</blockquote><blockquote><strong>2.26. IS NULL: </strong>Tablodaki verilerin null olup olmadığını kontrol etmek için kullanılırlar, başına NOT alırsa null olmayanları getir diyebiliriz, tam tersi durumda ise null olanları getirir.</blockquote><blockquote><strong>2.27. ALIAS:</strong> SELECT işlemlerinde kullanılan takma addır. AS takısı kullanılarak yapılabilir ya da yazdıktan sonra sonuna eklenebilir employees e gibi..</blockquote><p><strong>3.KÜME İŞLEMLERİ: ( JOIN)</strong></p><blockquote><strong>3.1. CROSS JOIN:</strong> 2 tablomuz arasında kartezyen birleştirmesi yapar. Örneğin Tablo1 : A,B,C Tablo2: 1,2,3 SELECT * FROM Tablo1 CROSS JOIN Tablo2 -&gt; Sonuç: A-1, A-2, A-3, B-1, B-2, B-3, C-1, C-2, C-3. Alt kategorileri aynı olan üst kategorilerde bu işlem denenebilir.</blockquote><blockquote><strong>3.2. RIGHT JOIN: S</strong>ağ tarafı temel alır. Sağ taraftaki eşleşmeyen verileri soldakilerine null atar.</blockquote><blockquote><strong>3.3. FULL JOIN:</strong> Karşılaştırırız, sağ tarftaki solda değer yoksa null gelir, soldaki değeri sağda yoksa null gelir,left ile right join birleşimi gibidir karşılığı yoksa null basar.</blockquote><blockquote><strong>3.4. SELF JOIN: </strong>Bazı durumlarda aynı tablo içerisinde JOIN işlemleri yapmak gerekebilir. Örneğin ast-üst bilgileri farklı idler ile aynı tabloda tutulunca gibi. LEFT JOIN kullanarak aynı tabloya bağlanılıp farklı idler birbirlerine eşitlenip gerekli bilgileri kullanabilirsiniz.</blockquote><blockquote><strong>3.5. INNER JOIN:</strong> 2 tabloyu birbirine ortak alanlar vasıtasıyla bağlamak için kullanılır.</blockquote><blockquote><strong>3.6. LEFT JOIN: </strong>2 tablo var 2 tablodan ana tabloyu sol tarafta dıra buna karşılık gelen sağdaki verileri getirir.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/500/1*ZEw_emmxb9k3nscR7lFkWA.jpeg" /><figcaption>JOIN İşlemleri Güzel Anlatım :)</figcaption></figure><p><strong>4. VERİTABANI İŞLEMLERİ (DATABASE)</strong></p><blockquote><strong>4.1. WITH TEMPLATE:</strong> Veritabanı kopyalama işleminde kullanılır. CREATE DATABASE Veritabani2 WITH TEMPLATE Veritabani1;</blockquote><blockquote><strong>4.2. DROP DATABASE:</strong> Veritabanını silmeye yardımcı olur. IF EXISTS ile de var mı yok mu ilgili tablo kontrol edilebilir ve varsa kaldırılır.</blockquote><blockquote><strong>4.3. ALTER DATABASE:</strong> Veritabanı özelliklerini değiştirmek için kullanılır. ALTER DATABASE berkaytablosu RENAME TO berkay; tablo ismi değiştirildi.</blockquote><blockquote><strong>4.4. CREATE DATABASE:</strong> Veritabanı eklerken kullanılır.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/1*BmTD_vEntaDT10owQQvY9A.png" /></figure><p><strong>5. EDİTÖR ÖNERİLERİ:</strong></p><blockquote><strong>SQLGate, DBeaver, Navicat, dbForge …</strong></blockquote><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4ceb1ad4d19f" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>