https://www.gravatar.com/avatar/15e166b5f6b79314d43280d7032210ef?s=240&d=mp

Mustafa Dizdar

[Dotnet] Program.cs dosyasındakı DI'ları toparlamak

Kod yazarken özellikle C# gibi bir OOP dil kullanınca her şey derli toplu olsun istiyorum. Çalıştığım projede Program.cs dosyasının Service katmanından eklenen Dependency Injection’larının epey kalabalık olması ve daha da eklenecek şeylerin olması sinirimi bozdu.

Program.cs dosyası ne işe yarıyor?

.NET projelerinde Program.cs, uygulamanın başlangıç noktasıdır (entry point). Uygulamanın çalıştığında ilk olarak buradaki Main metodu veya WebApplication yapılandırması çalışır. Özetle;

  • Uygulamanın giriş noktasını tanımlar
  • DI Container (Dependency Injection) servislerini burada tanımlarsın
  • Middleware pipeline burada oluşturulur
  • Uygulama ayarlarını yükler (appsettings.json vs.)
  • Web server (Kestrel) burada başlatılır

Kötü vaziyet

builder.Services.AddScoped(typeof(IRepositoryAsync<>), typeof(RepositoryAsync<>));
builder.Services.AddScoped(typeof(IService<>), typeof(Service<>));

builder.Services.AddScoped<BilmemNeService>();
builder.Services.AddScoped<BilmemNeGenelService>();
builder.Services.AddScoped<BilmemNeMobilBildirimService>();

builder.Services.AddScoped<IDegisikServis, DegisikServis>();
builder.Services.AddScoped<IBaskaBirService, BaskaBirService>();

Çözüm

Hal böyle olunca projede bir DependencyInjections klasörü açmak gerekti. İçine modül bazlı bir yapı kurdum.

Veritabaninda Bir Alani Uppercase Yapma Vakasi

Calistigim projelerin birinde kullanici veritabanina kurum adini kendi string olarak giriyor. Tabii bu degerin alindigi inputta bir standart konulmamis. Haliyle veriler uppercase, camelcase, lowercase, capitalized words vb. turlu turlu farkli sekilde kaydedilmis. Bu da gunun sonunda veriyi getirip gruplama yaparken problem yaratiyordu. Koyulduk Gemini ile ise :)

Ilk is olarak veriyi degistirmeden once dogru seyi yaptigimdan emin olmam gerek. O yuzden belirli bir id ile select atip hem mevcut veriyi hem de degistirdigimde gormek istedigim veri icin ornekler cagiriyorum.

Nginx - 413 Request Entity Too Large Hatası

Ubuntu server üzerinde çalışan bir uygulamamda klasik CRUD işlemleri yapılırken, form data ile giden veriler sonunda başlıktaki hatayı aldım. Kullanıcı sisteme 1.2MB büyüklüğünde bir PDF yüklemeye çalışmış.

Apple Silicon işlemcili bilgisayarda PHP ve XDebug kurulumu macerası

Geçenlerde Laravel projelerine merak sardım. Hızlıca auth sistemleri oluşturmak, direkt rest api destekli kod yazmak epey keyifli. Neyse bu başka yazıların konusu. Laravel yazarken debug yapmak için dd ya da ddd yapmak epey işlevsel sonuçlar döndürüyor ama yine de insan IDE içerisinden debug pointler ile akışı takip etme ihtiyacı duyuyor. Bunun için de XDebug kurmak gerekliymiş.

Windows Terminal’den uygulama güncellemek

Ubuntu kullananlar bilir, apt update ve apt upgrade çok sık yazdığımız komutlardır. Bunlar uygulamaları güncellemek için kullanılır. Malum Windows son zamanlarda WSL falan derken epey yanladı Linux cephesine 🙂 Şimdi de bu komut satırından güncelleme topuna girmiş gibi görünüyor.

Nasıl yapıyoruz peki? Powershell’i açıp, “winget upgrade” yazıp enter’layın.

Flutter Telefon Araması Yaptırmak

Geçenlerde bir proje için modelden gelen numarayı arama ihtiyacı doğdu. Sonrasında araştırınca url launcher paketi ile bunun gerçekleştirildiğini gördüm. Hatta paket sadece arama yapmak için değil, adı gibi tüm url açma işlemleri için kullanılıyor. Örn: web linkleri açmak, sms atmak, e-mail göndermek gibi.

Yeni Django Projesine Başlamak

Herkese selam, bu yazı aslında kendime not gibi olacak çünkü her yeni projeye başlarken komutları biliyor da olsam teyit etmek amaçlı dokümantasyonlardan kontrol ediyorum. Bu yüzden derli toplu bir şekilde blogta dursun istedim.

Django: Veritabanını Resetlemek

Bir proje olgunlaşırken gerek db model üzerinden gerekse data üzerinde sürekli değişiklikler oluyor ve bir yerden sonra test için veri çok anlamsız hâle gelebiliyor. Bu gibi durumlarda veritabanınızı resetlemek (sıfırlamak) ihtiyacı doğabilir. Bunun için birkaç farklı yöntem bulunuyor.