30 Nisan 2026 Perşembe

Session Nedir? Neden İhtiyacım Var?

HTTP nedir? HTTP, yani Hypertext Transfer Protocol, web tarayıcıları ile web sunucuları arasında veri alışverişini sağlayan internetin temel iletişim protokolüdür.

HTTP nasıl çalışır? Tarayıcı bir URL’ye istek gönderir. Sunucu bu isteği alır ve yanıt döner. Yanıtın içinde durum kodu (örneğin 200 OK veya 404 Not Found) ve içerik bulunur.

HTTP’nin özellikleri nelerdir?

  • HTTP stateless yani durumsuzdur. Sunucu önceki istekleri hatırlamaz, her istek bağımsızdır.

  • Metin tabanlıdır, yani istek ve yanıtlar okunabilir formatta iletilir.

  • Genişletilebilir bir yapıya sahiptir. HTTP/1.1, HTTP/2 ve HTTP/3 gibi sürümleri vardır.

Peki güvenlik açısından durum nedir? HTTP’de veriler şifrelenmeden iletilir, bu yüzden güvenli değildir. HTTPS ise HTTP’nin güvenli versiyonudur. TLS/SSL ile veriler şifrelenir ve üçüncü kişiler tarafından okunamaz.

HTTP ile HTTPS arasındaki farklara bakalım:

  • HTTP’de güvenlik yok, HTTPS’de şifreleme vardır.

  • HTTP basit sayfalarda kullanılır, HTTPS ise bankacılık, e-ticaret gibi güvenliğin önemli olduğu alanlarda.

  • Tarayıcıda HTTP http:// olarak görünür, HTTPS ise https:// ve yanında kilit simgesiyle.

Garson Örneği

HTTP’nin stateless olmasını bir örnekle açıklayalım: Bir restoranda garsondan sipariş verdiğinizi düşünün. Garson siparişi alır, mutfağa iletir ve yemek gelir. Ama garson sizin önceki siparişinizi hatırlamaz. Her sipariş bağımsızdır.

İşte HTTP de böyle çalışır. Sunucu, önceki isteği hatırlamaz. Peki kullanıcıya ait bilgileri nasıl hatırlatırız? İşte burada session devreye girer. Garsonun bir defteri olduğunu hayal edin. Siparişinizi deftere yazar, sonraki siparişte deftere bakarak sizin önceki siparişinizi hatırlar. Session da aynı şekilde çalışır: Kullanıcıya özel bilgileri saklar ve sonraki isteklerde hatırlatır.

Session Nedir?

Session, kullanıcı ile sunucu arasında geçici veri saklama yöntemidir. Kullanıcı siteyi ziyaret ettiğinde ona özel bir session kimliği (ID) oluşturulur. Bu kimlik ile kullanıcıya ait veriler sunucuda saklanır.

Session’ın kullanım amaçları:

  • Kullanıcı oturum bilgilerini tutmak (örneğin giriş bilgileri, alışveriş sepeti).

  • Kısa süreli işlemler için geçici veri saklamak (örneğin form bilgileri).

ASP.NET Core’da Session Kullanımı

ASP.NET Core’da session’u kullanmak için önce services.AddSession() ile servisi ekleriz, sonra app.UseSession() ile pipeline’a dahil ederiz. Ayrıca session süresini IdleTimeout ile ayarlayabiliriz.

Örnek:

csharp
builder.Services.AddSession(options =>
{
    options.IdleTimeout = TimeSpan.FromMinutes(30);
    options.Cookie.HttpOnly = true;
    options.Cookie.IsEssential = true;
});

Session’a Veri Ekleme ve Alma

  • String veri:

csharp
HttpContext.Session.SetString("MyText", "Merhaba ASP.NET Core!");
var value = HttpContext.Session.GetString("MyText");
  • Int veri:

csharp
HttpContext.Session.SetInt32("MyNumber", 42);
int? value = HttpContext.Session.GetInt32("MyNumber");
  • Nesne veri (JSON ile):

csharp
var user = new UserInfo { Name = "Ahmet", Age = 25 };
HttpContext.Session.SetString("UserInfo", JsonSerializer.Serialize(user));

var jsonData = HttpContext.Session.GetString("UserInfo");
var userObj = JsonSerializer.Deserialize<UserInfo>(jsonData);

Örnek Senaryo

Bir e‑ticaret sitesinde kullanıcı sepete ürün ekledi. HTTP stateless olduğu için sunucu, sonraki istekte bu kullanıcının sepetinde ürün olduğunu hatırlamaz. İşte burada session devreye girer: Kullanıcının sepet bilgisi session’da saklanır ve sonraki isteklerde session ID üzerinden hatırlanır.

 

 

 

 


19 Nisan 2026 Pazar

Dockerlandık !!!

 Merhabalar,

Yazılım geliştirme dünyasında “benim bilgisayarımda çalışıyordu” cümlesi neredeyse tarih oldu. Nasıl mı dediğinizi duyuyorum. Hepsi Docker ile :) 

 

 

   







     Docker sayesinde developerlar artık sadece kod yazabilirler. Sunucudaki kurulum sorunlarıyla 
uğraşmak yerine doğrudan kodlarına odaklanabilir; ekipler ise aynı projeyi farklı ortamlarda sorunsuz bir şekilde çalıştırabilir. Kısacası Docker, geliştirme ile üretim ortamı arasındaki farkları ortadan kaldırarak süreci hem daha hızlı hem de daha güvenilir hale getirir.

 

İyi de nasıl yapacağız? 

        Alttaki gibi minik bir algoritmayı sırayla yaparak dockerlanabiliriz :) Haydi vakit kaybetmeden başlayalım...

 

Dockerlanma Algoritması

1. Çalıştığımız bilgisayara Docker kurarak başlayalım.  Uygun versiyon için tıklayınız.

2. Kurulum sonrasında Docker'ı çalıştırmamız gerekecek. Masaüstüne kısayolu gelmiştir. Çift tıklayıp açabilirsiniz.

3. Sol menüdeki builds sekmesine tıklayarak daha eski zamanda çalışmış olanları görebiliriz.

4. komut satırından docker testi yapmak için alttaki kodu yazalım.

 docker info

5. docker çalıştırma testi  komut satırına docker run hello-world yaz

Hello, World!

6. Projeyi açarken Docker seçelim. Açıldıktan sonra projeye sağ tıklayıp Add->Docker Support diyelim.

 

 

7. dockerfile içerisindeki kodları alttaki gibi düzenledim.

 # See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.

# This stage is used when running from VS in fast mode (Default for Debug configuration)
FROM mcr.microsoft.com/dotnet/runtime:9.0-bookworm-slim AS base
USER $APP_UID
WORKDIR /app


# This stage is used to build the service project
FROM mcr.microsoft.com/dotnet/sdk:9.0-bookworm-slim AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["helloworld.csproj", "./"]
RUN dotnet restore "./helloworld.csproj"
COPY . .
WORKDIR "/src"
RUN dotnet build "./helloworld.csproj" -c $BUILD_CONFIGURATION -o /app/build

# This stage is used to publish the service project to be copied to the final stage
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "helloworld.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false

# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "helloworld.dll"]

 

8. kodu docker üzerinde çalıştıralım. Projeyi çalıştırma kısmında Container yazacak.

9. docker build -t helloworld . bunu yaz komut satırına build edildiğini ve hata almadığını gör.

10. docker run helloworld komut satırına bunu yaz kodlarını gör. Çıktıyı aynı ekranda kod olarak ne yazmışsan görüyor olman lazımdı.
Hello, World!
nagihan 

 

Kodda değişiklik olması durumunda 9-10 basamaklarını tekrardan sırayla yap ve sonucu kontrol et :)  

Böylece docker tarafında projemizi yayınlamış olduk. Bundan sonraki aşamada  real-life aşaması olabilir.

 

  • Azure / AWS / DigitalOcean
  • Docker image upload (Docker Hub)
  • production ortamında çalıştırma
  •  

     

     

     

     

     

     

     

     

    9 Aralık 2025 Salı

    Flutter Örnekleri ve Flutter Kurulum Algoritması

    Merhaba arkadaşlar, bugün bilgisayarımıza flutter kurulumuna bakacağız. 


    Flutter ile tek bir kod kullanarak mobil (Android/iOS), web ve masaüstü (Windows, macOS, Linux) uygulamaları geliştirebilirsin. Ayrıca oyun, IoT, AR/VR ve yapay zekâ tabanlı projeler için de kullanılabilir.


    AvantajlarDezavantajlar
    Tek kod tabanı ile çoklu platform desteğiBüyük ve karmaşık projelerde performans sınırlamaları olabilir
    Google destekli, sürekli gelişen ekosistemNative çözümlere göre bazı donanım entegrasyonları daha zor
    Zengin widget kütüphanesi ile hızlı UI geliştirmeYeni başlayanlar için Dart öğrenme eğrisi
    Açık kaynak ve geniş topluluk desteğiÇok ileri seviye grafik/oyun motoru ihtiyaçlarında sınırlı



    Piyasada flutter ile yapılmış örnek uygulamalar

    Google Ads → Reklam kampanyalarını yönetmek için kullanılan resmi uygulama.

    Alibaba (Xianyu) → Çin’de ikinci el ürün alışverişi için kullanılan dev platform.

    BMW – My BMW App → Araç sahiplerinin araç bilgilerini takip edebildiği resmi uygulama.

    Nubank → Latin Amerika’nın en büyük dijital bankalarından biri.

    Reflectly → Yapay zekâ destekli kişisel günlük ve mindfulness uygulaması.

    Hamilton Musical App → Broadway müzikali Hamilton için resmi uygulama.

    Realtor.com → ABD’de gayrimenkul arama ve listeleme uygulaması.

    Tencent → Çin’in teknoloji devi, bazı uygulamalarında Flutter kullanıyor.

    Square → Finansal hizmetler ve ödeme çözümleri sunan uygulama.

    Hookle → Sosyal medya yönetim uygulaması.

    Cryptograph → Kripto para takibi için kullanılan uygulama


    Kurulum Algoritması aşağıdaki gibidir: 

    • Windows kullanıcı adında boşluk olup olmadığına bak
    • Eğer boşluk içeren ya da tr karakter bir kullanıcı adın varsa bu durumda yeni kullanıcı adı açman gerekecektir.

    Flutter paketini indirmemiz gerekecek.

    Windows işletim sistemi üzerinde android geliştirmek için alttaki linki kullanıyoruz.
    https://docs.flutter.dev/install/manual


    Android Studio indirmemiz gerekecek. 
    Android Studio Narwhal 3 Feature Drop | 2025.1.3
    https://developer.android.com/studio


    c:\src oluştur
    flutter.zip içindeki flutter klasörünü src nin içine at 

    system variables / path icine 
    c:\src\flutter\bin I ekle

    windows 11 system variables icine path eklemem lazim ama bütün butonlar disabled gözüküyor
    kisayol kullanmadan eski usul gidince aktifler. kisayol user variable icin calisiyor. digerlerini disabled getiriyor.

    komut satiri ac
    flutter --version komutunu calistir

    işlemlerin tamamlanmasını bekle

    flutter doctor komutu ile eksik adımları öğrenebilirsin.

    ------------------------------------------------
    android studio kur
    kurulumda android virtual device da sec

    kurulum 2. parçası var
    her seyi kur

    kurulum sonrasi welcome ekrani acilinca
    sol altta settings alalina tikla (cark simgesi)
    emulator yoksa kur. full kurulum yaptiysan var.


    welcome ekraninda plugins alaninda flutter search et ve kur
    android studio restart et


    Path ekle
    C:\Users\porta\AppData\Local\Android\Sdk
    C:\Users\porta\AppData\Local\Android\Sdk\platform-tools

    doktoru tekrar calistir

    adb kur (otomatik acilirsa onayla)

    -------------------------------------------------
    new flutter project
    flutter sec sdk yol gir C:\src\flutter

    proje adi gir: ilk_proje
    java sec
    projeyi olustur
    -------------------------------
    download the tools from https://developer.android.com/studio#command-line-tools-only and make sure
    ANDROID_HOME environment variable ekle C:\Users\porta\AppData\Local\Android\Sdk

    android studio projesi olustumus iken settings ac
    search alaninda sdk tool ara
    Android SDK Command Line Tools kur.

    flutter doctor --android-licenses çalıştır
    lisansları onayla

    ----------------------------


    -----------
    visual studio installer ac
     desktop development with c++ workload kur
    (vs 2 farklı version kurulu ise dikkat et ve doctor ne istiyorsa onu kur)

    doktoru son kez calistir.

    ----------------------------
    emulator 14 imaj indir
    virtual device pixel 7 kur
    start et
    bos proje ac, pixel 7 sec, run et
    ------------------------
    vdm ile emulatoru ac


    Stateless Widget ve Stateful Widget Nedir?

    StatelessWidget: Sabit, değişmeyen içerikler için. StatefulWidget: Kullanıcı etkileşimi veya veri değişimiyle güncellenen içerikler için kullanılır.

    22 Temmuz 2024 Pazartesi

    SQL Çalışma Sorularının Çözümü

     -Ürünler tablosundaki ürünlerden Rengi siyah,silver ya da multi renkte olanları fiyat bilgisine göre büyükten küçüğe getirilip gösterilecek şekilde sql kodunu yazınız.(in yapısı kullanalım)

    select * from Production.Product where Color in('Black','Silver','Multi') order by ListPrice desc


    -Person.Address tablosunda addressline1 datası içinde road içeren kayıtların sadece Addressline1 ve Postakodu bilgilerini türkçe başlıklarla gözükecek şekilde getiriniz

    select AddressLine1 'Adres Satırı 1',PostalCode 'Posta Kodu' from Person.Address
    where AddressLine1 like '%road%'


    8 Haziran 2024 Cumartesi

    .Net 8 Projesinde Excel Export Nasıl Alabilirim

     Merhaba arkadaşlar, 

    .net ile geliştirdiğimiz bir uygulamamız var ve biz bu verileri excel olarak indirebilmek istiyorsak bu durumda nugget üzerinden paket indirerek bu işlemi yapabiliriz. 



    Proje türünü alttaki gibi seçtik. 



    Projeye nugget üzerinden paket olarak ClosedXml ekledim

    Sonrasında alttaki gibi kodlar yazarak projenin bin/Debug/ içerisine .xlsx formatında excel oluşturmasını sağlamış olduk.
         
      using var workbook = new XLWorkbook();
      var worksheet = workbook.Worksheets.Add("Veriler");

      List<Kisi> kisiler = new List<Kisi>()
      {
          new Kisi() {Ad="Nagihan",Soyad="Esendal"},
          new Kisi() {Ad="Eda",Soyad="Yazıcı"},
          new Kisi() {Ad="Ela",Soyad="Öztürk"},
          new Kisi() {Ad="Melis",Soyad="Er"},
      };

      worksheet.Cell(1, 1).Value = "Ad";
      worksheet.Cell(1, 2).Value = "Soyad";

      int sayac = 0;
      for (int i=2;i<kisiler.Count+2;i++)
      {
          worksheet.Cell(i, 1).Value = kisiler[sayac].Ad;
          worksheet.Cell(i, 2).Value = kisiler[sayac].Soyad;
          sayac++;
         
      }

      worksheet.Columns().AdjustToContents();


      var filePath = Path.Combine(Environment.CurrentDirectory, "veriler.xlsx");
      workbook.SaveAs(filePath);

      Console.WriteLine($"Excel dosyası oluşturuldu: {filePath}");


    Excel dosyasını kontrol ederseniz buradaki listeyi excel olarak çıktı alabildiğimizi görmüş olursunuz.




    2 Mart 2024 Cumartesi

    SQL Server ve SQL Server Management Studio Kurulumu

    Merhaba arkadaşlar, bu makalede SQL Server kurulumunu inceleyeceğiz. Öncelikle kurulum yapmak istediğimiz bilgisayarın işletim sistemine bakmamız gerekecektir. Bunun için bilgisayara sağ tıklayıp özellikler menüsünden bilgisayardaki işletim sistemi öğrenebiliriz.

    SQL Server: Database ve Database objelerini tutar.
    SQL Server Management Studio : SQL'e baglanmak için kullandığımız program.

    Eğitimlerde hem SQL Server'ı hem de SQL Server Management Studio'yu kurmamız gerekir. 


    1. SQL Server kurulumu
    2. SQL Server Management Studio kurulumu

     
    SQL Server'ı kurmak için buraya  tıklayınız. SQL Server Express versiyonunu eğitimlerde kullanıyoruz. Ücretsiz bir versiyon olup, SQL Server'ın bütün özelliklerine sahiptir.

















    Installation type olarak Basic seçiyoruz.


    Bu kurulumu tamamladıktan sonra, 2. olarak SSMS (SQL Server Management Studio) kurmamız gerekecektir.


    SQL Server Management Studio kurulumu işlemi için lütfen buraya tıklayınız. 

    SSMS kurulumu için eski bir makaleme bakarak kurulumu tamamlayabilirsiniz. Ordaki eski versiyonu anlatıyordu. Siz burdaki linkten güncel versiyonu indirip makaledeki aşamaları takip ederek kurulumu tamamlayabilirsiniz. Makeleye gitmek için tıklayınız


    İyi Çalışmalar,


    28 Kasım 2023 Salı

    EpochTime'dan DateTime'a Yolculuk

     Merhaba Arkadaşlar,

    SQL tarafında bazı tablolarda tarih alanına alternatif olarak EpochTime değeri tutulmaktadır. Bu değer genel bir terim olup 01.01.1970den bu zamana geçen saniyeyi bize vermektedir.


    Eğer tablolarınızda böyle bir alan tanımlanmışsa bu alanın tanımlanmasındaki ana hedef aşağıdakilerden birisi olabilir:

    • taşınabilirlik
    • hesaplama kolaylığı
    • veri saklama ve işlem hafifliği
    • sıralama ve karşılaştırma kolaylığı
    Dezavantajlarıda vardır ki bunlardan ilki gözle baktığınızda bu sayısal ifadenin hangi zamana karşı geldiğini yakalayamayız. Bu durumda kendimize bir converter yazmamız gerekecektir. Bugün birlikte bu converter'ı yazıyor olacağız.

    SQL ortamında;

    --EpochTime2Date
    declare @epochtime bigint=1700392556;
    select DATEADD(second,@epochtime,'19700101') as convertedTime

    --Date2EpochTime
    select cast(datediff(second,'1970-01-01',getdate()) as bigint) as epoch

    C# Ortamında;

     public long Date2EpochTime(DateTime dt)
     {
                DateTime epochDateTime = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
                TimeSpan timeSpan = dt-epochDateTime;
                return (long)timeSpan.TotalSeconds;
     }

     public DateTime EpochTime2Date(long epochValue)
     {
                DateTime dt = new DateTime();
                return  dt.AddSeconds(epochValue);
     }








    10 Kasım 2023 Cuma

    .Net 6 ile Geliştirilmiş Projeyi Sunucu Ortamında Https Sertifikalı Yapma

    Merhaba Arkadaşlar, 


    Web sitelerinde https:// yani güvenli bağlantı olması için ssl sertifikasını yüklüyor olmamız gerekecektir. Burada yüklemiş olduğumuz sertifika, girilen verilerin client ile server arasında veri iletimi esnasında şifreli olmasını sağlar. 









    Bir siteye web sertifikası yüklemek istediğimizde ise aşağıdaki basamaklardan sırayla geçebiliriz.

    Aşağıdaki örnekte .net 6 ortamında prod ortamı için sertifika yükleme örneği bulunmaktadır.

    1. Power shell üzerinden new-guid diyip yeni bir Guid generate ediyoruz. (sunucu ortamında)

    2..Net 6 ile geliştirmiş olduğumuz uygulama içine publish edilmesi durumunda tanıması için 80 ve 443 portunu aşağıdaki kod örneğindeki gibi ekliyoruz



    3. Program.cs içerisine eklemiş oldugumuz app.UseHttpsRedirection(); kodu http tarafıyla girilmek istendiği zaman otomatik olarak https tarafına yönlendirme yapmasını sağlayacaktır.

    4. sunucu ortamında .net 6 sdk'sını kurduk.

    5. sunucu ortamında cmd'yi run as administrator olarak çalıştırıp sırayla aşağıdaki komutları çalıştırdık.

     * dotnet dev-certs https --clean

     * dotnet dev-certs https

     * dotnet dev-certs https --trust


    Ayrıca sunucuya yüklenmiş olan sertifikaları görmek istersek;
    netsh http show sslcert 


    Daha önce eklenmiş olanları silmek istersek;
    netsh http delete sslcert ipport=10.10.10.10:443   


    Yeni bir sertifika eklemek için;
    netsh http add sslcert ipport = 10.10.10.10:443 certhash = 518E7213569963F5F34ECCFE87F148DC6BECAB04C appid = {8a1c86ca-0f9d-4663-a740-e8ce8291ce9d}

    3 Ekim 2023 Salı

    Asp.Net 6 Projelerinde Log Yapısnın Eklenmesi

     Merhaba Arkadaşlar,

    Asp.net core 6 ile geliştirdiğimiz bir projenin production'a çıktığında yani kullanıcılar tarafında kullanıma açıldığında buradaki yaşanan hatalı senaryoların kaydını tutmak gerekir ki bu bugfix aşamasında çok büyük önem taşımaktadır. Bu aşamada yapabileceğimiz kullanabileceğimiz log yapısını projemize eklemek için proje tarafında bazı konfigurasyonlar yapmak gerekecektir. 


    Sırasıyla yapmamız gerekenleri aşağıdaki sırayla yapabiliriz.

    Projemiz içerisindeki appsetting.json içerisine aşağıdaki gibi bir ayarlama yapmamız gerekir. Loglarında önem sırasını değiştirebileceğimiz ve hatalı olması durumundaki hataları loglamamız gerekiyorsa bu durumda bunu LogSettings içerisindeki LogLevel'da belirtebiliriz. Aşağıdaki örnekte sadece Error ve Info durumundaki logları yazmasını sağlamış olacağız.

    appsettings.json

    {

      "Logging": {

        "LogLevel": {

          "Default": "Error",

          "Microsoft.AspNetCore": "Warning",

          "IsBilge": "Information"

        }

      },

      "LogSettings": {

        "LogLevel": [ "Error", "Info" ]

      }

    }


    Log Ayarları için LogSettings.cs'i ekledik projemize ve kodlarınız aşağıdaki gibi yazdım.

       public class LogSettings

        {

            public List<string> LogLevel { get; set; }

        }


    Log yapısını kullanabileceğimiz LogSettings'i de içerisinde barındıran LogService.cs yapısını ekledim.

        public class LogService

        {

            private readonly LogSettings _settings;

            public LogService(IOptions<LogSettings> settings)

            {

                _settings = settings.Value;

            }

            public List<string> GetLogLevel()

            {

                return _settings.LogLevel;

            }

         public void Log(string logFilePath, string log,string type)

            {

                string okunan = ""; //içine configten gelen değer ya da değerler gelecek.

                if (okunan.Contains(type)){

                    System.IO.File.AppendAllText(logFilePath, log);

                }           

            }

        }

    Program.cs içerisine aşağıdaki kodlarla register etmemiz gerekecektir.

    var builder = WebApplication.CreateBuilder(args);

    builder.Services.Configure<LogSettings>(builder.Configuration.GetSection("LogSettings"));

    builder.Services.AddScoped<LogService>(); // MyService sınıfınızı ekleyin

    builder.Services.AddControllersWithViews();


    Sıra geldi log yazmak istediğimiz Controller içerisindeki ilgili metotta bunları kullanmaya. 


        public class HomeController : Controller

        {        

            private readonly LogSettings_settings;

            private readonly LogService_myService;


            public HomeController(ILogger<HomeController> logger, LogService service, IOptions<LogSettings> settings)

            {

                _logger = logger;

                _settings = settings.Value;

                _myService = service;

            }

            public IActionResult Index()

            {

                _myService. Log(logFilePath, "bilgi amaçlıdır", "Info");

               _myService. Log(logFilePath, "hata var, "Error");

                return View();

            }

    }

    Log projedeki sıkıntılı durumları görmenizi sağladığı gibi kullanılma oranını da görmenize yardımcı olacaktir.

    Log hayat kurtarır :)

    İyi Çalışmalar,


    4 Temmuz 2023 Salı

    ASP.Net Core Projesinde Şifrelerimi Nasıl Şifrelerim?

    Merhaba arkadaşlar,


    Uygulama içerisinde kullanmış olduğunuz şifrelerinizi gizlemek isterseniz bu durumda Microsoft tarafından çıkartılmış bir package var. Bu paketi kullanarak şifrelenmiş halini tutarak sonrasında bu şifre decrypte ederek istediğiniz yerde kullanabilirsiniz. Bu sürecin algoritması ise aşağıdaki gibidir.

    1. Microsoft.AspNetCore.DataProtection paketini kur.

    2. appsettings.json içerisine alttaki gibi bir tanımlama yap.

      "Secrets": {

        "EncryptedPassword": ""

      }

    3. 2 nolu basamaktaki EncryptedPassword yerine başka bir uygulamada mevcut şifrenin şifrelenmiş halini eklemen gerekiyor.

    4. Startup.cs içerisinde alttaki kodu ekleyerek ilgili kütüphanenin middleware katmanında projeye tanıtılma işlemini yapıyor olmamız gerekecek.

        public void ConfigureServices(IServiceCollection services)

        {

            services.AddControllersWithViews();
            services.AddDataProtection();

        }


    5. Şifreninin Şifresini Almak için alttaki kodlar kullanılıp 2nolu basamaktaki EncryptedPassword alanına eklememiz gerek. 

     public class HomeController : Controller

     {

         private readonly ILogger<HomeController> _logger;

         private readonly IDataProtector _protector;

         private readonly IConfiguration _config;

         public HomeController(ILogger<HomeController> logger, IDataProtectionProvider protector,IConfiguration configuration)

         {

             _logger = logger;
             _protector = protector.CreateProtector("MySecretPurpose");
             _config = configuration;

         }

         public IActionResult Index()

         {
             var encrypted = _protector.Protect("sifre123");
             return View();
         }

    6. işlem sonucunda elde ettiğimiz şifrelenmiş şifre "CfDJ8BtApkD7hSdMtfe5D8CdXY1Re-hol1m-4Ay4AH0q76UQ_UrNsVwhnp8eAqOnH8MFeBFB9ZFPSrp-mmG4p8G3qRhu5b7LpPmipBaw1emW8FX1FmNAUtpiU4aC5ffdfLc3Bg" şeklindeydi. Bunu da alttaki şekilde appsettings.json içerisine ekledim.

      "Secrets": {

        "EncryptedPassword": "CfDJ8BtApkD7hSdMtfe5D8CdXY1Re-hol1m-4Ay4AH0q76UQ_UrNsVwhnp8eAqOnH8MFeBFB9ZFPSrp-mmG4p8G3qRhu5b7LpPmipBaw1emW8FX1FmNAUtpiU4aC5ffdfLc3Bg"

      }


    7. Şifrelenmiş şifreyi çözmek için ise alttaki gibi bir kod yazmak yeterli olacaktır.

      var encrypted = _config["Secrets:EncryptedPassword"];

      var decrypted = _protector.Unprotect(encrypted);


    Artık şifrelenmiş verimizden orjinal şifreye ulaşmış olduk. Burada bir ara kod yazarak şifrelenme sürecini o kütüphane üzerinden anlık yapabiliriz.  


    Şifrelerinizi koruyun :) 







     


    14 Mart 2023 Salı

    Asp.net core Projelerinde User Formunun Validationlarının Tanımlanması

    User classı :


     public class User

    {

        [Required(ErrorMessage = "Ad alanı boş olamaz.")]

        public string FirstName { get; set; }


        [Required(ErrorMessage = "Soyad alanı boş olamaz.")]

        public string LastName { get; set; }


        [Required(ErrorMessage = "E-posta alanı boş olamaz.")]

        [EmailAddress(ErrorMessage = "Geçerli bir e-posta adresi girin.")]

        public string Email { get; set; }


        [Range(18, 99, ErrorMessage = "Yaş aralığı 18 ile 99 arasında olmalıdır.")]

        public int Age { get; set; }

    }



    HomeController tarafı 

     public IActionResult CreateUser()

     {

         return View();

     }


     [HttpPost]

     public IActionResult CreateUser(User user)

     {

         if (!ModelState.IsValid)

         {

             return View(user);

         }


         // Doğrulama başarılı, kullanıcıyı kaydet

         // ...


         return RedirectToAction("Index");

     }


    View tarafı 

    @model User


    @using (Html.BeginForm("CreateUser", "Home"))

    {

        <div>

            <label for="FirstName">Ad:</label>

            @Html.TextBoxFor(model => model.FirstName)

            @Html.ValidationMessageFor(model => model.FirstName)

        </div>

        

        <div>

            <label for="LastName">Soyad:</label>

            @Html.TextBoxFor(model => model.LastName)

            @Html.ValidationMessageFor(model => model.LastName)

        </div>

        

        <div>

            <label for="Email">E-posta:</label>

            @Html.TextBoxFor(model => model.Email)

            @Html.ValidationMessageFor(model => model.Email)

        </div>

        

        <div>

            <label for="Age">Yaş:</label>

            @Html.TextBoxFor(model => model.Age)

            @Html.ValidationMessageFor(model => model.Age)

        </div>

        

        <div>

            <input type="submit" value="Kaydet" />

        </div>

    }



    11 Şubat 2023 Cumartesi

    Visual Studio 2022 Kurulumu

     Merhaba Arkadaşlar,


    Visual Studio bizler için etkin kod yazmayı sağlayan bir kod geliştirme ortamıdır.
    İçerisinde farklı dilleri yazmamıza imkan tanımaktadır. Bu diller C#, C, C++, F# (Fonksiyonel Programlama), Pyhton vb. gibi dillerdir.

    Visual Studio'nun çeşitli versiyonları var hangisini kullanmalıyım?
    Visual Studio Community olan versiyonu bireysel developerlar için yeterli olacaktır. Enterprise olan sürümü daha çok kurumsal firmalar tarafından kullanılmaktadır. Bu versiyonu indirmeniz durumunda bir ayın sonunda sizden bir key girmenizi isteyecektir. Bu key bilgisini girmeniz durumunda programı kullanabilirsiniz.

    Eğitimler ve bireysel çalışmalarımız için Visual Studio Community versiyonunu indirip kurabilirsiniz.

    Nasıl İndiririm?
    Visual Studio Community 2022 İndirmek için buraya tıklayınız.

    Bilgisayarınıza indirilmiş olan .exe uzantılı dosyayı çalıştırmanız durumunda online olarak kurulum gerçekleşecektir. Kurulum esnasında internet bağlantınızın olması önemlidir. Bağlantınız ne kadar hızlıysa kurulumu o kadar hızlı tamamlayacaktır.






    25 Temmuz 2022 Pazartesi

    Entity Framework Nedir?

     Entity Framework ile uygulama geliştirme aşamasında aşağıdaki yaklaşımlardan birisini kullanabiliriz. Bu yaklaşımlar:

    1. Database First
    2. Model First
    3. Code First



    Database First 

    Eğer hali hazırda bir veri tabanımız varsa ve bu veri tabanı uzun zamandır kullanılıyorsa bu yaklaşım tercih edilir. Bununla çalışabilmek için veri tabanını klasik yöntemlere göre SQL Server üzerinden oluşturmalısınız. (kodla ya da arayüzden)

    Bu yöntemde veri tabanı üzerinde herhangi bir değişiklik yapmak istersek, SQL Server üzerinden yapmalıyız. Bu durumun projeye tarafına aktarılması için “update model from database” demek gerekir.

    Model First

    Eğer bir veri tabanına sahip değilseniz, direk visual studio üzerinden model kullanarak oluşturabilirsiniz. Burada gerçekleştirdiğimiz değişiklikleri SQL’e tanıtmak için “generate database from” tıklamamız gerekir. Eğer kod ya da SQL yazmayı sevmiyorsanız, bu yöntemi tercih edebilirsiniz. Bu yöntemde genellikle kodlama yerine design yaparız. 
    Projeniz çok sayıda tablo içeriyor ve kompleks bir yapıya sahipse bu yöntem kullanışlı olacaktır. Büyük çaplı kurumsal projelerde tercih edilebilir.

    Code First

    Eğer kodlama yapmayı çok seviyorsanız ve veri tabanımı kodlama ile oluşturmak istiyorum diyorsanız bu yöntem size göre. Bu yöntemde design yapmak yerine kodlama yapıyorsunuz. Bu yaklaşım ile tüm kontrol elinizde oluyor, diğer yaklaşımlardaki gibi arka tarafta otomatik kodlar üretilmiyor. Yazmış olduğunuz kodlar veri tabanını ve tablolarınızı oluşturacaktır. Tablo sayısı az olan projelerde kullanılması tercih ediliyor.























    Code First Örneği  (Migrations) :

    https://docs.microsoft.com/en-us/ef/ef6/modeling/code-first/migrations/

    https://www.slideshare.net/jibranrasheed/learn-entity-framework-in-a-day-with-code-first-model-first-and-database-first?qid=5e47d6ca-eaf2-4240-a05b-31ccf5276fcd&v=&b=&from_search=8


    Migration Nedir?

    İngilizcede doğrudan kelime anlamı göç, yani şöyle düşünün benim buradaki bilgilerim, kurallarım veritabanına göç ediyor. Böyle hayal edin, tasvir doğru mu oldu bilemiyorum ama uygun gibi. Tam olarak yapılan da bu, uygulamamda dediğim kurallar, model classlar, bağıntıları migration ile anlatıyorum.

    Migration 3 adımlı bir işlemdir.

    1. Öncelikle model oluşturur veya modellerimizde değişiklik yaparız. Bu noktada yeni bir model oluşturmuş olabilirsiniz veya var olan modellerinizde değişiklik yapmış olabilirsiniz. Böyle bir işlem yaptığınızda mutlaka migration ile database tarafına değişiklik yansıtılmalıdır.
    2. Migration Ekleme işlemi yaparız. Database tarafına değişikliği yansıtabilmek için migration ekleriz. add-migration MigrationAdı
    3. Migration uygulama işlemi yaparız. Migration uygulamamıza bir isimle eklenince, henüz işlem database yansıdı demek değildir bunu database’e yansıtabilmek için migration’u database’e push etmemiz gerekir. update-database



















    18 Mayıs 2022 Çarşamba

    Github Desktop Kullanarak GitHub Web Sitesine Proje Nasıl Yüklenir?

    Merhabalar,

    Kendi bilgisayarımızda oluşturmuş olduğumuz projemizi github web sitesinde barındırmak için aşağıdaki adımları izleyelim.


    1. Github hesabı açalım.

    2.Github Desktop uygulamasını buradan indirelim ve bilgisayarımıza kuralım.

    3. 1 numarada açmış olduğumuz hesap bilgilerini kullanarak github desktop'a giriş yapalım.


















    4. Projemizi barındıracak yeni bir repo seçelim. 
















    5. Projemizin adını, açıklamasını, kaydedeceği dosyanın yolunu, readme dosyasını ve license bilgisini seçelim. 

















    6 .Github Desktop tarafında gelen ana ekranda publish repository dersek eğer github websitesi üzerinde böyle bir folder açacak. 


    7. Github web sitesine gidip bakarsak aşağıdaki gibi bir yapı oluşturduğunu görebiliriz.















    8. Github tarafında açılan yapının görünümü aşağıdaki gibi olacaktır, içerisinde readme dökümanının olduğunu görebilirsiniz. 
















    9. Bu aşamada bilgisayar tarafında da bir folder oluşturur ve içine aşağıdaki gibi proje dosyalarını yüklememiz gerekecek.













    10 .  Github desktop üzerinden bu klasördeki değişiklikleri github web sitesine göndereceğiz. 






















    Son olarak github desktop da push origin diyerek o değişiklikleri göndermesini söylüyoruz. 


    Kontrol amaçlı github web sitesine girip bakarsak eğer,  aşağıdaki gibi kodların oraya da eklendiğini görmüş oluruz. 




    İyi Çalışmalar :) 






    Session Nedir? Neden İhtiyacım Var?

    HTTP nedir? HTTP, yani Hypertext Transfer Protocol , web tarayıcıları ile web sunucuları arasında veri alışverişini sağlayan internetin t...