.NET Aspire AppHost’ta DragonflyDB: Snappyup.Aspire.Hosting.Dragonfly

Giriş

Dağıtılmış uygulamalarda düşük gecikmeli önbellek veya Redis® kablosuna (wire-protocol) uyumlu bir veri deposu ihtiyacı sık görülür. .NET Aspire ile bu bileşenleri AppHost içinde gerçek bir kaynak olarak modelleyebilir; servis keşfi, WaitFor akışları ve bağlantı ifadelerini tek yerde tutabilirsiniz.

Bu yazı, DragonflyDB sürecini Aspire AppHost’ta düzenlemeyi kolaylaştıran topluluk bakımındaki Snappyup.Aspire.Hosting.Dragonfly paketinin ne olduğunu, Microsoft’un Redis hosting uzantılarıyla paralellik ve farkları neler olduğunu ve somut C# kullanımlarını adım adım özetliyor.

Devamını Oku

Intentum: .NET’te Intent-Driven Development ve Niyet Tabanlı Karar Verme

Giriş

Deterministik olmayan kullanıcı akışları, tekrarlı denemeler (login, ödeme) veya AI tabanlı kararlar söz konusu olduğunda “ne oldu?” sorusundan çok “sistem ne yapmaya çalışıyor?” sorusu öne çıkar.

Intentum, .NET ekosisteminde bu ihtiyacı karşılayan açık kaynak bir kütüphanedir: davranış olaylarını toplar, niyet (intent) ve güven (confidence) çıkarır, policy (politika) kurallarıyla Allow, Observe, Warn, Block gibi kararlar üretir.

Bu yazıda Intentum’un ne olduğunu, hangi mimari problemi çözdüğünü, nasıl kurulup kullanılacağını ve ne zaman tercih edilmemesi gerektiğini teknik detay ve kod örnekleriyle ele alıyorum.

Devamını Oku

Mediator.Net

Mediator.Net ile .NET’te CQRS ve Pipeline Tabanlı Mesajlaşma

Giriş

Controller’ların onlarca servisi enjekte ettiği, iş kurallarının doğrudan handler çağrılarıyla dağıldığı bir codebase’de değişiklik yapmak hem testi zorlaştırır hem de mimariyi kırar. Mediator pattern, isteğin tek bir giriş noktasından geçmesini ve ilgili handler’a taşınmasını sağlayarak bu bağımlılığı azaltır. .NET ekosisteminde bu ihtiyacı karşılayan kütüphanelerden biri de Mediator.Net: komut (command), sorgu (request/response) ve olay (event) yayımını ayrı pipeline’lar üzerinden yönetir ve CQRS/clean architecture hedefleriyle uyumludur.

Bu yazı Mediator.Net’in ne olduğunu, hangi problemi çözdüğünü, MediatR ile farklarını ve uygulama içinde nasıl kullanılacağını adım adım ele alıyor.

Mediator.Net Nedir?

Mediator.Net, .NET için yazılmış, mediator pattern’i uygulayan ve CQRS (Command Query Responsibility Segregation) ile uyumlu bir mesajlaşma kütüphanesidir. İstekleri doğrudan handler sınıflarına göndermek yerine, tek bir IMediator aracı üzerinden gönderir; kütüphane mesaj tipine göre ilgili handler’ı bulur ve pipeline (boru hattı) üzerinden çalıştırır. Böylece uygulama katmanları birbirini tanımak zorunda kalmaz; clean architecture ve hexagonal mimaride kullanılabilir.

Üç temel mesaj tipi vardır:

  • ICommand (yanıt beklemeden çalıştırılan komut),
  • IRequest / IResponse (tek yanıt dönen sorgu) ve
  • IEvent (birden fazla handler’ın dinleyebildiği olay).

Ayrıca IAsyncEnumerable ile streaming yanıt desteği sunar. Devamını Oku

Regex, RegExp, Regular Expressions (Düzenli/Kurallı İfadeler) – Bölüm 1

Regex’e Giriş

Bugün birçok programcının ve hatta veri işleyen herkesin kurtarıcısı olan sayısal ve dizgesel içeriklerde belirli kurallara uyan bölümleri bulan ifadelerden yani Düzenli/Kurallı İfadelerden (Regex/RegExp/Regular Expressions) bahsedeceğiz.

Amerikalı matematikçi Stephen Cole Kleene tarafından 1950’li yıllarda tasarlanan bu kavram günümüzde oldukça yaygın olarak birçok işletim sistemi temelinde ve programlama dilinde entegre olarak gelmektedir.

Bir metin dizisi (string) içerisinde belirlediğimiz düzen/kurallar (pattern) ile eşleşenleri döndüren oluşumdur kısaca.

  • Metin dizisi (string) – Arama yapılacak metin
  • Düzen/kural (pattern) – Arama için kullanılacak kalıplar
  • Eşleşen – Metin içerisinde düzenlere uyan sonuçlar (tekil ya da grup olabilir)
Ufak bir hatırlatma
Düzenli ifadelere makale boyunca kısaca regex, arama yapılacak metine string, kurala da pattern diyeceğim. Yukarıda da dediğim gibi bir çok işletim sistemi ve programlama diline entegre edildiğinde kullanımı farklılık göstermektedir. Başlıca kullanım şekilleri PCRE, ECMAScript, Python, Golang diyebiliriz. Ben aktif olarak C tabanlı diller  (Perl, PHP, C++, C# vb.) kullandığım için PCRE (Perl Compatible Regular Expressions) ile makaleme devam edeceğim. Diğer diller için ufak tefek değişiklikler ile sorunsuz çalışacaktır.
Devamını Oku

C# Kodlama Standartları, Adlandırma Kuralları ve İpuçları

Giriş

Bugün C# ile programlama yapılırken uyulması gereken kodlama standartları ve adlandırma kurallarından bahsedeceğim. Gerek sosyal medyadan gerekse başka mecralardan öğrenci arkadaşlarımızdan gelen kodlara baktığımda kodlama standartlarına ve adlandırma kurallarına uyulmadığını hatta daha da vahim bir şekilde Türkçe karakterli adlandırmaların yapıldığını (C# derleyicisi için sorun teşkil etmez ama TR klavyeye sahip olmayan biri için sorun teşkil eder) görmekteyim. Bu sebepten Türkçe kaynak olarak bu konu hakkında fazla birşey olmadığından bu makaleyi yazma ihtiyacı duydum.

Microsoft .Net Framework yazılırken kullanılan standartlardan örnekler ile C# programlama dilinde herkesin bir bakışta anlayabileceği kod nasıl oluşturulur anlatmaya çalışalım.

Devamını Oku

QHotspot – pfSense için Captive Portal ve FreeRADIUS Yönetim Paneli

Bu makalemizde pfSense Açık Kaynak Firewall yazılımının Captive Portal yönetimini FreeRADIUS uzaktan kimlik doğrulama servisi kullanarak yönetmemizi sağlayan tarafımdan geliştirilmesi devam eden QHotspot projesini tanıtacağım.

Nedir pfSense ?

pfSense logo

pfSense projesi 2004 yılında m0n0wall isimli bir projeden Chris Buechler ve Scott Ullrich tarafından fork’lanarak başlamış ve 2006 yılında ilk sürümünü piyasaya sunmuş içerdiği packet-filtering yazılımı yüzünden “pf” önekini kullanan açık kaynak router firewall FreeBSD dağıtımıdır.

2014 yılında Electric Sheep Fencing LLC (ESF) tarafından satın alınan pfSense temmuz 2017 den beri Apache Lisansı 2.0 kapsamında lisanslanmıştır. 2004 yılından beri telif hakkı Rubicon Communications, LLC (Netgete) firmasındadır.

pfSense, güvenlik duvarı/yönlendirici olarak kullanılmak üzere fiziksel bir bilgisayara veya bir sanal makineye yüklenebilen, web tabanlı bir ara birim üzerinden yapılandırılabilen, güncellenebilen ve yönetmek için altta çalışan FreeBSD bilgisi gerektirmeyen genellikle güvenlik duvarı, yönlendirici, kablosuz erişim noktası (Hotspot), DHCP sunucusu, DNS sunucusu ve VPN çözümü olarak kullanılan son kullanıcı dostu bir yazılımdır. pfSense, Snort, Squid, SquidGuard vb. üçüncü taraf paketlerinin Paket Yöneticisi aracılığıyla yüklenmesini destekler. Devamını Oku

pfSense logo

pfSense 2.3.2 için Captive Portal ve Hotpsot Ghost Panel

Lütfen okuyun 1
Bu makale pfSense nin sürüm güncellemeleri sebebiyle bazı sistemlerde çalışmaz hale gelmektedir. MySQL, freeRADIUS, PHP ve gerekli paketlerin kurulumu ve Ghost panelin daha kullanıcı dostu bir arabirimle değiştirilmesini kapsayan bir proje yazmaya başladım. Siz değerli ziyaretçilerim buradan QHotspot projesine erişebilir, bilginiz var ise projeye katkıda bulunabilirsiniz. Şimdiden teşekkürler.

Lütfen okuyun 2
QHotspot projesi iş yoğunluğunda yavaş ilerlediği için mevcut ghost panelinde çalışmasını sağlamak adına projeye ghost adında bir branch oluşturdum. Sitede verilen yönergeleri takip etmeniz durumunda size sadece captive portal a index.html hata.html ve gerekli dosyaları eklemeniz kalıyor. Gerekli bilgilere buradan ulaşabilirsiniz. Kurulum Videosu: https://youtu.be/VHfOwj6Ljn0

Lütfen okuyun 3
Aşağıdaki bilgiler geçerliliğini yitirmiş olabilir.

Captive Portal Karşılama Ekranı
Captive portal karşılama ekranını buradan indirebilirsiniz.

Merhabalar,

Bildiğiniz üzere pfSense 2.3 sürümü ile birlikte bir çok değişiklik meydana geldi. Bu değişiklikler ile çalışmakta olan captive portal TC Kimlik doğrulama sistemi ve Ghost Radius sistemi çalışmaz hale geldi.

Sebebi, hem ghost hem de captive portal kodlarının mysqli uyumlu olmaması idi.

Geçtiğimiz günlerde bende kullandığım bir kaç firmada pfSenseyi yükseltmek zorunda kaldım ve bu sorun yüzünden captive portalı kullanamaz oldum.
Captive portal’ın login ekranındaki bir kaç javascript sorunu zaten dikkatimi çekiyordu. Bahane ile onları da kapsayacak bir düzenleme yaptım. Devamını Oku

Windows 8, 8.1, 10, Server 2012/2016 R2 İşletim Sistemlerinde WinSxS Klasörünü Temizlemek

Özellikle SSD (Solid State Disk) kullanıyorsanız ve Microsoft Windows 8, 8.1 yada Server 2012 işletim sistemlerinden birine sahipseniz belirli bir süre sonra sistemin kurulu olduğu diskinizde yer kalmayabilir. Ufak bir araştırma yaptığınızda C:\Windows\WinSxS klasörünün gigabyte’larca yer kapladığının farkına varırsınız.

Nedir bu WinSxS ?

Microsoft şöyle tanımlamış;
Windows bileşen deposu (C:\Windows\winsxs) dizini, Windows kurulumları içindeki bakım işlemleri sırasında kullanılır. Bakım işlemlerinin bazıları Windows Update, hizmet paketi ve düzeltme yüklemeleridir, ancak bunlarla sınırlı değildir. Bileşen deposu bir Windows kurulumu için gerekli olan tüm dosyaları içerir. Bu dosyalara yönelik tüm güncelleştirmeler de güncelleştirmelerin yüklendiği sırada bileşen deposu içinde tutulur. Bu da zaman içinde kuruluma yeni güncelleştirmeler, özellikler veya roller eklendikçe bileşen deposunun büyümesine yol açar. Bileşen deposu Windows platformunun sağlamlığını artırmak için kendisi ile diğer Windows dizinleri arasında NTFS sabit bağlantıları kullanır. Kaynak

Devamını Oku