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.
-
Asp.Net Web API Üzerinden Resim Döndürmek
Eminim çocukken çizgi filmlerle aranız vardı. Hatta çoğumuz yaşı kaç olursa olsun çizgi filmlere arada sırada da olsa zaman ayırmakta. (Ben Batman gördüm mü pür dikkat izlerim örneğin) Keza pek çok büyüğümüz de, eskiden izlediği çizgi filmler ile karşılaştığında taaaa çocukluk yıllarına kadar gidip aynı o zamanki gibi içten gülebiliyorlar da (Rahmetli babamdan bilirim) Aslına bakarsanız bazen teknoloji de bizi aynen bu mantıkta epeyce güldürebiliyor. Örneğin Microsoft’ un ürünlerini düşünelim. (Gerçi çok fazlalar ama gene de düşünmeye çalışalım) Sürekli yenilikler çıkartıyorlar, sürekli verisyon atlatıyorlar ve işin en acı tarafı da koşan Road Runner’ a benziyorlar. Biz mi? Biz ise Road Runner’ ı her fırsatta yakalamaya çalışıp yakaladığını zanneden ama son anda hep elinden kaçıran Coyote’ ye
-
Excel ve Entity Framework Konuşuyor
Artık uygulamaların birbirleri ile konuşmaları çok ama çok kolay. Bu gerçekten önemli bir mesele. Özellikle farklı segmentlerden insanların bir araya geldiği bilişim toplumlarında. Kimi kullanıcı için Office Excel, Word veya Powerpoint çok şey ifade ederken, kimi kullanıcı içinde SQL Management Studio ortamında hazırlanan karmaşık bir sorguya bakmak daha anlamlı olabiliyor. Ya da bir Web sayfası üzerinden alınan raporlar şirketin Muhasebe Şefi için değerli iken, kimisi SSRS ile elde edilen raporları mobil cihazında görmeyi tercih edebiliyor.
-
WCF Uygulamalarında Enterprise Library Validation Block Kullanımı
Enterprise Library ve içerisinde yer alan Application Block’ lar çoğunlukla projelerimizde ihtiyaç duyduğumuz ve Cross-Cutting olarak geçen parçaların hızlı ve kolay bir biçimde uygulanmasında kullanılmaktadır. Cross-Cutting’ ler özellikle birden fazla katmandan oluşan proje bazlı çözümlerde, katmanların pek çok noktasında sıklıkla kullanılabilen (ihtiyaç duyulabilen) fonksiyonelliklerdir.
-
Tek Fotoluk İpucu 102–Ne Zaman XmlInclude Gerekir?
Diyelim ki elinizde Role isimli bir sınıf var. Hatta bu sınıftan türemiş Manager ve Worker isimli iki ayrı sınıf daha var. Hatta Role tipinden Employees isimli bir listeyi özellik (Property) olarak içeren Company isimli başka bir sınıf daha var…Derken Company sınıfına ait bir nesne örneğini çalışma zamanında XML serileştirmek istediniz. Klasik olarak XmlSerializer tipini işin içerisine kattınız. Peki ya sonra? Aldınız InvalidOperationException hatasını oturdunuz aşağıya :D Nasıl çözersiniz? Aşağıdaki gibi olabilir mi?
-
Asp.Net Routing – Hatırlamak
Geçtiğimiz günlerde şirkette çok küçük bir web uygulamasına ihtiyaç duyuldu. Neredeyse bir günlük geliştirme maliyeti olan, küçük bir departmanın önemli bir gereksinimi karşılayacaktı. Tabi insan uzun zaman kodlama yapmayınca veya kodlamaya ara verince bazı temel bilgileri de unutabiliyor. Ben de kafayı Team Foundation Server entegrasyonu, SOA mimarisi ve Scrum gibi metodolojiler ile bozunca, zihinsel diskimdeki ana partition’ a yeni bilgilerin yazıldığına ve eskilerinin yerinde yeller estiğine şahit oldum. Ama malum, günümüz teknolojilerinde bilginin tamamını ezberlemeye çalışmak yerine, en doğrusuna en hızlı şekilde nasıl ulaşabileceğimizi bilmek daha önemli. İşte bu felsefeden yola çıkıp dedim ki, şu Asp.Net Routing konusunu bir hatırlayayım ve hatta kayıt altına alayım. İşte hikayemiz böyle başladı.
-
Tek Fotoluk İpucu 101–Team Project Process Template
Bazı komut satırı araçları oldukça işlevseldir ve çoğunlukla tercih edilir. Örneğin TFS üzerinde bir Team Project silinmek istendiğinde, tfsdeleteproject komut satırı aracına başvrulur. Peki şirketinizde kurulu olan TFS üzerindeki Team Project örneklerinin kullandıkları Process Template’ leri yine bir komut satırı aracı ile öğrenmek isteseydiniz, nasıl bir yol izlerdiniz? Aşağıdaki fotoğraf size bir ipucu verebilir belki de
-
Tek Fotoluk İpucu 100–AutoMapper Kullanımı
Bildiğiniz üzere şu yazımızda nesneler arası özellik (Property) eşleştirmelerinin nasıl yapılabileceğini incelemeye çalışmıştık. Ancak işin çok daha profesyonel bir boyutu var. Örneğin tipler arası özellik adları birbirlerinden farklı olabilir ve bu nedenle bir haritayı önceden söylemeniz gerekebilir. Neyseki NuGet üzerinden yayınlanan AutoMapper kütüphanesi çok gelişmiş özellikleri ile buna imkan vermektedir. Söz gelimi aşağıdaki fotoğraf özellik adlarının farklı olması halinde bile AutoMapper ile başarılı bir şekilde eşleştirme yapılabileceğini göstermektedir.
-
Hanoi Towers Probleminin Recursive Çözümü
Bu görsel dersimizde eğlenceli Matematik oyunlarından birisi olan Hanoi Kuleleri problemini, Recursive bir metod yardımıyla nasıl çözebileceğimizi incelemeye çalışıyoruz. İlk olarak problemi tanımlıyor ve oyunun kurallarına kısaca bakıyoruz. Sonrasında ise 3 disk için gerçekleştirilen çözümü simüle ediyoruz. Problemin çözümü için kullanılan alt problem parçalarını tanımlıyor ve C# ile kodlama işlemlerini gerçekleştirerek uygulamamızı inşa ediyoruz.
-
Asp.Net 4.5 için Yeni Nesil Doğrulama(Validation)
Bilişim sektöründe yer alan ve özellikle 70li yıllarda doğanların neredeyse tamamı bu efsane cümleyi bilir. A long tim ago in a galaxy far, far away… Hikaye hep yazılı bir anlatım ile başlar ve daha sonra ekran yukarıdaki yıldızlardan aşağıya doğru inerek devam eder. Sornasında ya bir uzay mekiğinin kaçıs sahnesi ya da imparatorluk güçleri ile isyancılar arasındaki savaşla karşı karşıya kalırız. İşte geçen gün özlediğim Star Wars serilerinden birisini izlerken birden kendimi bilgisayarımın başında ve başka bir hikayenin giriş noktasında buldum. Karşımdaki ekran da karalara bağlamış, alacalı bulacalı bir geliştirme penceresi duruyordu. İçerisinde ise HTML ve Asp.Net karışımı bir şeyler…
-
C#’ ın Enteresan Yanları
Yazılım sektöründe yer alan bizler, mutlak suretle en az bir programlama dilini çok iyi seviyede öğrenmeye çalışır ve bunun için epey yoğun çaba sarf ederiz (Hatta değerli bir büyüğümüzün sözüne göre, hayatımızın her hangibir noktasında C veya C++ gibi bir dili öğrenmeye çalışmış ama hiç bir zaman iyi bir C/C++ geliştiricisi olamamışızdır) Ne varki bazen dilin kullanılmayan pek çok özelliğini, zamanında öğrenmiş olsak dahi unutabiliriz. Hatta bazı ilginç olan yanlarını bugüne kadar hiç görmemiş, denememiş ya da duymamış olabiliriz. İşte size C# dili ile ilişkili olarak pek çoğumuzun hatırından giden bir kaç enteresan vaka…
-
Recursive Fibonacci Neden Yavaş?
Okulda “Algoritma ve Veri Yapıları” dersinde ya da C# benzeri nesne yönelimli (Object Oriented) bir dili öğrenmeye başladığımız ilk zamanlarda, karşımıza muhakkak Recursive fonksiyonlar çıkmıştır (Çıkmaya da devam edecektir). Hatta en meşhur olanları da, bir sayının faktöryelinin (6!=6x5x4x3x2x1=720 ve 0!=1) bulunması veya Fibonacci sayı dizisinin (0,1,1,2,3,5,8,13,21,34…, Fn=(Fn-1 (+(Fn-2)) ardışıl olarak ekrana yazdırılmasıdır.
-
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) Java’ cılar, C#’ çıları pek sevmez iken tam tersi durum da pekala geçerliydi. Ben hiç bir zaman birisinin fanatiği olmadım. Hatta Java ile ufak çaplı bir kaç deneyimim bile oldu.
-
.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ı. Robotların, gelişmiş endüstürinin ve insan gücünün bir araya geldiği fabrika, sadece 24 saat içerisinde üretim hattından mükemmel spor arabalar çıkmaktaydı. Üstelik motor bloğu da kıtanın bir diğer ucundan geliyordu.
-
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.