Meraklı bir bilgisayar programcısının notları.

Merhaba! Ben Burak Selim Şenyurt - yazılım geliştirici, blogger ve öğrenme tutkunu.

Bu blogda yazılım mühendisliği, sistem tasarımı, programlama dilleri ve yeni teknolojiler üzerine yazılar paylaşıyorum. Özellikle .NET, Rust, Zig, yapay zeka araçları ve mimari konularına ilgi duyuyorum. Kendimi sürekli geliştirmeye ve yeni şeyler öğrenmeye adıyorum.

Arama · Arşiv


Maceralar

Toplam 1022 yazı Tüm arşiv Arama RSS
  • Asp.Net Web API için Sayfalama Tekniği

    Bu aralar şirkette işler oldukça kesat. En azından benim bulunduğum departman itibariyle böyle bir durum söz konusu. Sanırım kurumsal kimlik kazanmış firmaların genel sorunu da bu olsa gerek. Kaynak planlaması ve dağıtımının bir türlü istenen şekilde yapılamayışı. Hal böyle olunca aynı firmada hatta aynı departman içerisinde, çok yoğun çalışan insanlara ve beraberinde her hangi bir işi olmayanlara (benim gibi) rastlamak mümkün.

  • Eclipse Üzerinden Java ile TFS Client Object Model Konuşuyor

    Çok değil daha bir kaç sene öncesine kadar (Özellikle.Net’ in duyurulduğu yıllarda ve izleyen bir kaç senede) yazılım dünyasında neredeyse yandaki resimdekine benzer bir kavga vardı (Benzetmeyi biraz abartmış olabilirim)

  • .Net Uygulama Güvenliği–Hacking ve Tedbirleri

    Bu görsel dersimizde önce basit bir.Net uygulamasını, CIL (Common Intermediate Language) kodları üzerinden Hackliyor ve sonrasında olası tedbirleri deneyerek söz konusu vakayı engellemeye çalışıyoruz. Bunun için komut satırından kolayca kullanılabilen sn.exe (Strong Name ile uygulamanın işaretlenmesi) ve SignTool.exe (Uygulamanın bir sertifika ile işaretlenmesi) araçlarını değerlendiriyoruz. Kodun Obfuscate edilmesinden bahsediyor ve son olarak sonuçları irdeliyoruz.

  • Dependency Inversion Principle - Kavramak

    Bu görsel dersimizde, SOLID ilkelerinden birisi olup Yazılım Tasarım Presinpleri (Software Design Principles) içerisinde yer alan Dependency Inversion’ ı kavramaya çalışıyoruz. Konuyu irdelerken basit bir senaryoyu göz önüne alıyor, önce DIP olmadan ilerliyor ve sorunları teşhis ediyoruz. Sonrasında ise Dependency Inversion prensibini baz alarak bağımlılıkları tersine çeviriyor ve problemli kısımları iyileştiriyoruz.

  • Asp.Net Web API Security - Giriş ve Custom Basic Authentication Module

    Bu görsel dersimiz ile birlikte Asp.Net Web API Security konusunu incelemeye başlıyoruz. Özellikle Asp.Net Web API Pipeline açısından olaya yaklaşıyor ve Authentication, Authorization mekanizmalarının nasıl yürütüldüğüne bakıyoruz. Demomuzda bir Http Module yazarak, Basic Authentication sürecini nasıl özelleştirebileceğimizi görüyoruz. Son olarak Authorize niteliği yardımıyla, global, controller ve action gibi çeşitli seviyelerde yetkilendirmelerin ele alınış biçimlerini test ediyoruz. Ayrıca AllowAnonymous niteliğini de ele alıyoruz.

  • Asp.Net Web API ile OData Service İnşa Etmek–CRUD Operasyonları

    Bilindiği üzere Asp.Net Web API’ den yararlanılarak Open Data Protocol destekli servisler geliştirmek mümkündür. Bu konu ile ile ilişkili olarak daha önceden bir Hello World uygulaması yazmış ve HTTP Get taleplerinin yürütülmesini incelemiştik. Bu görsel dersimizde ise, CRUD (CreateReadUpdateDelete) operasyonlarının nasıl yapılabileceğini görmeye çalışıyoruz. Bu anlamda Insert, Update ve Delete gibi temel operasyonlara bakıyoruz. Veri kaynağı olarak, Code First yaklaşımını tercih ettiğimiz bir Entity Framework içeriğini değerlendiriyoruz.

  • TFS Client Object Model ile Word Entegrasyonu

    Geçtiğimiz gün National Geographic kanalında Mega Fabrikalar’ ı seyretme fırsatı buldum. Amerikalı Dodge firması efsane Challanger‘ ı yeniden üretmekteydi. Konu bu üretimin gerçekleştirildiği mega fabrikaydı.

  • WCF–Concurrency

    Windows Communication Foundation içerisinde önem arz eden konuların başında, istemciden gelen taleplerin eş zamanlı olarak değerlendirilme stratejilerine karar verilmesi de gelir. Aslında bir servis davranış biçimi olan ve Single, Multiple, Reentrant olmak üzere 3 farklı modda uygulanabilen Concurrency, tek başına değil, Instance Context Mode ile birlikte düşünülmelidir. Servislerin PerCall, PerSession ve Single gibi modlarda örneklenebildikleri düşünüldüğünde ortaya, 9 farklı kombinasyon çıkmaktadır. İşte bu görsel dersimizde WCF Concurrency konusuna değiniyor ve örnek bir uygulama üzerinden Instance Context Mode ile olan kullanımını kavramaya çalışıyoruz.

  • Asp.Net Web API ile OData Servisi İnşa Etmek

    Bu görsel dersimizde, Asp.Net Web API’ den yararlanarak OData (Open Data) protokolü destekli bir Service geliştirmekteyiz. Ayrıca, servisin HTTP Get talebi sonucu ürettiği örnek JSON (JavaScript Object Notation) formatlı veri çıktısını da, bir Excel 2013 Sheet içerisine nasıl alabileceğimizi görmekteyiz. (Görsel dersimizi, Nedirtv’ ye ait YouTube kanalından da izleyebilirsiniz)

  • Tek Fotoluk İpucu 97–Google Shortener URL Hizmetini C# ile Kullanmak

    Malumunuz bazen Web adreslerine ait URL satırları epeyce uzun olabiliyorlar ve bunları saklamak gibi amaçlarla kullanmak istediğimizde, genellikle kısaltma yoluna gitmeyi tercih ediyoruz (Sanırım kimse 20 haneye sığdırılabilecek 200 karakterlik bir URL bilgisi ile uğraşmak istemez) Bir URL adresini kısaltmak için kullanılabilecek pek çok global hizmet bulunmakta. Bunlardan birisi de Google’ ın Shortener servisi (ki bu adresten de görebileceğiniz gibi kendisi de epeyce kısa Smile). Peki bir tarayıcı ile bu söz konusu servise kolayca gönderebildiğimiz bir talebi kod tarafında C# ile gerçekleştirmek isteseydiniz nasıl bir yol izlersiniz? Aşağıdaki gibi olabilir mi?

  • Tek Fotoluk İpucu 94–WMI ile Disk Bilgilerini Okumak

    WMI (Windows Management Instrumentation) maceralarımıza devam etmeye ne dersiniz? Eğer biraz daha kasarsak, geniş bir WMI kütüphanesi bile oluşturabiliriz. Bu fotoğrafımıza konu olan güncel senaryomuz ise şöyle; İşletim sistemi tarafından Map edilmiş Disk bilgilerine nasıl ulaşabiliriz? Sadece Hard Disk’ ler değil. Bağlı olduğumuz Network Driver’ ları da öğrenmek istediğimizi varsalayım

  • Tek Fotoluk İpucu 93–WMI ile Processor Bilgisini Okumak

    Hatırlayacağınız üzere bir önceki Tek Fotoluk İpucunda, Win32PhysicalMemory isimli WMI (Windows Management Instrumentation) tipinden yararlanarak, makinede takılı olan RAM’ ler hakkında temel bilgileri nasıl alabileceğimizi incelemiştik. Bu seferki ipucumuzda ise işlemci bilgilerini okumaya çalışıyor olacağız. Aşağıdaki fotoğrafta görüldüğü gibi.

  • Tek Fotoluk İpucu 92–WMI ile RAM Bilgilerini Almak

    Diyelim ki uygulamanız içerisinden, çalışmakta olduğu Windows işletim sistemi tabanlı makinenize ait fiziki RAM bilgilerini almak istiyorsunuz. Örneğin markasını, hangi slota takılı olduğunu, boyutunu, tipini vs…

  • Tek Fotoluk İpucu 91–Timestamp Veriyi String Olarak Okumak

    Diyelim ki SQL Server üzerinde duran tablolarda timestamp veri tipinden alanlar bulunmakta ve siz bu alanları belki bir Backoffice uygulamasında belki bir admin panelde, kullanıcalara göstermek istiyorsunuz. Normal şartlarda bilindiği üzere bu alan bir byte[] array olarak elde edilmektedir. Dolayısıyla timestamp içeriği taşıyan bu byte[] array’ in anlamlı bir string tipine dönüştürülmesi okunurluğu açısından şarttır. Ne yaparsınız? Belki basit bir extension method’ u bu amaçla projeye dahil edebilirsiniz. Aynen aşağıda görüldüğü gibi.

  • Tek Fotoluk İpucu 90–Office Ailesinin Versiyonlarını Öğrenmek

    Diyelim ki yazmış olduğunuz ürünü kuracağınız/kurduğunuz Windows platformunda yüklü olan Office ürünleri var ise, bunların versiyonlarını öğrenmeniz gerekiyor. Ne yaparsınız? Bilinen bir kaç yol var (önreğin bunlardan birisi Late Binding nedeniyle yavaş olan dynamic kelimesinin de kullanıldığı Activator.CreateInstance metodu) ama en hızlılarından birisi, Registery ayarlarına bakmak. Hatta bir de işin içerisine Enum sabiti kattığımızı ve hatta ona bir Extension metod olarak bu işlevselliği dahil ettiğimizi düşünelim. Aynen aşağıdaki fotoğrafta görüldüğü gibi

  • Tek Fotoluk İpucu 89–Exif Bilgilerini Okumak

    Takip edenler amatör düzeye yaklaşmaya çalışan/çabalayan fotoğrafçılık tutkunu birisi olduğumu bilirler. Hatta okullarda “Fotoğrafçı ve Hataları…” konulu bir ders konusu olabilecek kadar iddialı bir foto bloğumda da bulunmaktadır. Bu bloğa fotoğraf yüklerken her seferinde yapmak zorunda olduğum ama bundan çok fazla derecede sıkıldığım bir işlemde fotoğrafların exif bilgilerini öğrenip yazmaktır. Oysaki Image tipine eklenebilecek bir Extension metod ve fotoğrafa ait bazı özellik bilgilerinden yararlanarak ISO, EV, Focal Length gibi istediğim temel bilgilere ulaşabilirim. Nasıl mı? Aynen aşağıdaki fotoğrafta görüldüğü gibi

  • Tek Fotolok İpucu 88–Task.WaitAll out, Parallel.Invoke in

    Bildiğiniz üzere paralel çalışmasını istediğimiz görevler olduğunda genellikle bunları birer Task halinde üretir ve bir dizi içerisinde toplarız (En azından TPL-Task Parallel Library geldikten sonra böyle yapmakta olduğumuzu ifade edebiliriz) Görevleri Task tipinden bir dizi içerisinde toplamamızın sebebi ise genellikle WaitAll gibi bir çağrıya ihtiyaç duyabilecek olmamızdır.

  • Tek Fotoluk İpucu 87–Enum Sabitleri ile Attribute Kullanımı

    Bazen uygulamalarımızda kullandığımız Enum sabitlerinin içerikleri anlaşılabilir kelimelerden oluşmayabilir. Örneğin AR101,BR103 isimli Enum değerleri çalışma zamanında nasıl yorumlanabilirler. Mantıklı isimler verebilecek olsak da bazen bu değerler sistemin kendisi için anlamlı olabilirler. Ancak dilerseniz enum sabiti değerlerini, kendi geliştireceğiniz nitelikler (Attribute) ile donatabilir ve çalışma zamanına ek bilgiler sunabilirsiniz. Hem de basit bir extension metod yardımıyla bu fonksiyonelliğin kolayca ulaşılabilir olmasını sağlayabilirsiniz. Nasıl mı? İşte size bir örnek

  • Tek Fotoluk İpucu 86–Zahmetsizce Encryption (ProtectedMemory)

    Bir önceki tek fotoluk ipucunda ProtectedData sınıfından yararlanmış ve basitçe bir byte dizisinin nasıl şifrelenebileceğini/çözümlenebileceğini görmüştük. Hatırlarsanız veriyi Current User ve Local Machine seviylerinde ele alabiliyorduk. DPAPI’ nin kullanıldığı veri odaklı bu tekniğin yanında, bellek üzerinde yer alan bir içeriğin Process bazında şifrelenmesi/çözümlenmesi de mümkündür. Aynı Process (SameProcess), farklı Process (CrossProcess) veya aynı giriş (SameLogon) bilgisi için…Üstelik son derece de kolay bir şekilde. Nasıl mı?

  • Tek Fotoluk İpucu 85–Zahmetsizce Encryption(ProtectedData)

    Cryptography denilince.Net Framework tarafında epey bir çözüm bulunmakta. Bazıları oldukça karmaşıktır ve simetrik yada a-simetrik olmalarına bağlı olaraktan, ortak noktalarından birisi de, tekniğe göre kullanılan Vector-Key değerlerinin tutulması/bilinmesi gibi zorunluluklardır.