Web API Tarafında Dapper Kullanımı

Veri kaynakları ile kod tarafındaki modeller arasında devreye giren bir çok ORM aracı mevcut. Stackoverflow tarafından geliştirilen ve Micro ORM olarak nitelendirilen Dapper bunlardan birisi. SQLite, MySQL, SQLCE, SQL Server, Firebird ve daha bir çok veritabanı platformu ile çalışabilen Dapper'ın performans olarak da iyi sonuçlar verdiği ifade edilmekte. Amacım Dapper'ı bir Web API uygulamasında SQLite ile birlikte kullanabilmek. [Daha fazla]

Bir Web Uygulamasında Gantt Chart Kullanımı

Henry Gantt tarafından icat edilen Gantt tabloları, proje takvimlerinin şekilsel gösteriminde kullanılmaktadır. Temel olarak yatay çubuklardan oluşan bu tablolarda proje planlarını, task'ları, süreleri ve ilerleyişi görmek mümkündür. Excel üzerinde bile kullanılabilen Gantt Chart'lar sanıyorum proje yöneticilerinin de vazgeçilmez araçlarındandır. Benim amacım ise dhtmlxGantt isimli Javascript kütüphanesinden yararlanarak bir Asp.Net Core projesinde Gantt Chart kullanmak. [Daha fazla]

Tek Fotoluk İpucu 131 - Servisim Yaşıyor mu?

Böyle yeni bir şeyler öğrenmek için enerji bulamadığım vakitler oluyor zaman zaman. Ya çevremdekilerin ya da işlerin etkisi ile azalır enerjim. Bir şeyler öğrenmeyince de kendimi kötü hissettiğimden en azından genişletme metodu(Extension Method) yazmaya çalışayım da pas tutmayım derim. Tabii önce konu seçmek gerekir. Bu kez aklıma "bir servisin yaşayıp yaşamadığını nasıl anlarım?" sorusu takıldı. Mesela bir Uri için Http durum kodu bilgisinin 200 olmasını kontrol eden bir genişletme metodu yazabilirdim. Örneğin aşağıdaki fotoğrafta görüldüğü gibi. [Daha fazla]

Tek Fotoluk İpucu 130 - Distinct Fonksiyonunu IEqualityComparer<T> ile Özelleştirmek

Koleksiyon bazlı veri kaynaklarında LINQ(Language INtegrated Query) sorgularını yoğun şekilde kullanmaktayız. LINQ bildiğiniz üzere pek çok genişletme metodundan oluşan ve ifadesel olarak koleksiyonlar üzerinde SQL benzeri sorgular yapabilmemizi sağlayan bir alt yapı sunmaktadır. Sıklıkla Select, Where, Count, Sort, Max, Min, Reverse, GroupBy, OrderBy ve daha pek çok metodu kullanırız. Bunlar zaman zaman ifadeler şeklinde ele aldığımız gibi zaman zamanda metod zincirleri biçiminde değerlendiririz. [Daha fazla]

Tek Fotoluk İpucu 129 - Override Edemediğimiz ToString Metodunu Genişletmek

Geçtiğimiz günlerde çalışma arkadaşımın oldukça enteresan bir sorusu ile karşılaştım. Projesinde referans ettiği bir kütüphane içerisinde yer alan POCO(Plain Old CLR Objects) tiplerine ait ToString metodlarını ezmesi(Override) gerekiyordu. Ne yazık ki ilgili kütüphane dll olarak referans edildiğinden, içerisindeki sınıflara girip ToString metodunu ezmek mümkün değildi. Bir şekilde ToString metodunu genişletebilir miyiz diye düşünmeye başladık. [Daha fazla]

Tek Fotoluk İpucu 128 - DataTable içeriğini Generic List'e İndirmek

Diyelim ki kullandığınız harici bir metod size DataTable tipinden bir nesne örneği döndürmekte. Ne var ki kendi sisteminizde bu nesne içeriğini List tipinden koleksiyon örnekleri ile dolaştırmanız gerekiyor. Hatta DataTable içeriğinin doldurulduğu tablonun kolon adları da sizin programınızdaki standartlar ile uyumlu değil. Bu durumda karşımıza şöyle bir soru çıkıyor. Herhangi bir DataTable içeriğini bir List tipine nasıl dönüştürebiliriz? [Daha fazla]

Hamming Distance Algoritmasının Basit Kullanımı

Hamming Distance, Amerikalı Matematikçi Richard Hamming tarafından bulunmuş olan ve kodlama teorisinde geçen vektör bazlı bir karşılaştırma algoritmasıdır(Bu adresten teori hakkında biraz bilgi alabiliriz) Programlama tarafından baktığımızda çoğunlukla eşit uzunluktaki içeriklerin benzerliklerine ilişkin bir mesafe ölçüsünün bulunmasında kullanılır. Bu sayede bir metnin diğerine dönüştürülebilmesi için kaç adımlık değişime ihitiyaç duyulduğu da hesaplanabilir. Ya da benzerliğin ne kadarlık bir değere denk geldiği anlaşılabilir. Hata tespiti ve düzeltilmesi, grafik dosyaları üzerinden şekil eşleştirmelerinin(Shape Recognation) yapılması gibi hesaplamalarda kullanılmaktadır. Aslında örnekler ile konuyu daha iyi anlayabiliriz. Basit düşünmeye çalışalım ve aşağıdaki gibi bir kaç kelime çiftini ele alalım. [Daha fazla]

Tek Fotoluk İpucu 126 - XML Tabanlı Metinsel İçerikleri Nesneleştirme

Malumunuz nesne yönelimli(Object Oriented) dünyanın en önemli unsurlarından birisi de varlıklar(Entity). Uygulamaların çalıştığı alanlarda(Domains) bu varlıklar dolaşmakta. Birer sınıf olarak tasarlanan bu varklıklar çalışma zamanlarında örneklenmekte ve belirli içerikleri taşımakta. Varlığı niteleyen verinin kaynağı çeşitli enstrümanlar olabiliyor. Veritabanı üzerindeki bir tablo, fiziki bir dosya, bir servis uç noktası, başka bir donanım, bir ara motorunun ürettiği çıktı vb [Daha fazla]

TCP Bazlı Soket Haberleşmesinde Sertifika Kullanımı

Günümüzde geliştirilen yazılım ürünleri çoğunlukla farklı uygulamalar ile de konuşmak durumunda. Sistemler sürekli birbirleri ile konuşan parçalar bütünü halinde genişlemeye devam ediyor. Akıllı cihazlar büyük ölçekli sistemlerin birer parçası olup çeşitli iş süreçlerinin işletilmesinde rol alıyor. Bu iletişimde servislerin de yeri var. [Daha fazla]

Tek Fotoluk İpucu 116 - Sayısal mı?

Oldu ya geliştirdiğiniz projenin bir yerinde, koda düşen metinsel bazı değişkenlerin sayısal olup olmadığını tespit etme ihtiyacı duydunuz. Söz gelimi bir Excel dokümanı içerisinden aldığınız hücre değerlerinin sayısallığını kontrol etmek ve buna göre program akışını yönlendirmek gerekiyor. Gelen içeriğin sayısal olup olmadığını anlamanın bir kaç yolu olduğu kesin. Pek tabi Regex sınıfının static Match metodu çözüm alternatifleri içerisinde en kuvvetli olanlarından. Bunu bir de Extension metod haline getirsek ve public bir sınıf kütüphanesi(Class Library) içerisine koysak daha şık olmaz mı? Peki ama nasıl? [Daha fazla]

TFİ 111 - Dosya Adı İçinden Geçersiz Karakterleri Çıkartmak

Diyelim ki elinizde bir takım dosya adları var. Bu dosya adları herhangi bir kaynaktan okunuyor. Ancak bazı dosya adlarında geçersiz karakterler yer aldığını tespit ediyorsunuz(? : < vb) Siz de dosya adlarını kendi uygulamanız içerisinde değerlendirirken bu geçersiz karakterlerden arındırarak hareket etmek niyetindesiniz. Ne yaparsınız? Bunun için bir genişletme fonksiyonu(extension method) yazmak isteseniz nasıl hareket edersiniz? [Daha fazla]

En Kısa Metni Bulmak

İşte geçtiğimiz hafta içerisinde de Internet üzerinden araştırma yaparken enteresan bir konu ile karşılaştım. Aslında konuyu isimlendirmek oldukça zor ama bir optimizasyon işlemi olduğunu ifade edebilirim. Sorun n sayıda kelimenin saklanmak istendiği bir durumda ortaya çıkıyor. İstenen, bu kelimeleri birleştirerek saklamak ancak bunu yaparkende olabilecek en kısa cümleyi elde ederek ilgili depolama işlemini gerçekleştirmek. Öyleki, üretilen cümle hem çok kısa olmalı hem de tüm kelimeleri içermeli. [Daha fazla]

C#’ ın Enteresan Yanları

Bu arada C# diline ait geniş bir dökümantasyonu C:\Program Files\Microsoft Visual Studio 11.0\VC#\Specifications\1033 klasörü altında bulabilirsiniz Winking smile 527 sayfalık CSharp Language Specification isimli bu döküman, elinizin altındaydı her zaman. Başka bir kitaba ihtiyacınız yok. En azından başlangıç seviyesinde. Visual Studio 2012 kurulumu sonrası gelen bu dökümantasyon aslında C# 3.0 sürümünden beri de mevcut. [Daha fazla]