Ana içeriğe atla

Kayıtlar

C# etiketine sahip yayınlar gösteriliyor

C# Generic Singleton Pattern

Bu yazımda C# programlama dilinde Generic Singleton Pattern'nin uygulanmasını anlatacağım. Konuyu sadece kodları kopyalamak için bakıyorsanız biraz aşağı kaymanız yeterli olacaktır. Ama yazdığınız kodların ne anlama geldiğini bilmek bu kodlardan doğabilecek problemlerin veya bu kodların sizi kazandırdığını da doğru yorumlama açısından önemli olduğu için makaleyi de okumanız önemlidir. Öncelikle kısaca bahsetmem gerekirse generic singleton tasarım deseni nesne üretiminde singleton patternini uygularken sizi kopyala yapıştır mantığından kurtaran ve bir anlamda kod kalitenizi artırarak okunabilirliğini de artıran bir tasarım kalıbıdır. Generic Singleton Pattern sizi sürekli singleton patterninin private constructor ve instance objelerini yazmanızdan kurtarır. Önemli bir nokta singleton tasarım kalıbını çok iyi anlamanızın gerektiğidir. Daha önce yazdığım " Singleton Tasarım Deseni " makalesine buradan erişebilirsiniz. Singleton konusunu tam olarak anladıysa

C# nameof Operatörü İle Magic String'den Kurtulma

Bir projenin sürdürülebilirliğindeki en önemli noktalardan bir tanesi mümkün olduğu kadar az "magic string" kullanmaktır. Çünkü sabit metinlerin tanımlanması belirli bir süre sonra projenin anlaşılabilirliğini azaltan en önemli özelliklerden bir tanesidir ve çoğu programlama dili string verilerinin doğruluğunu kontrol etmediği ve yaptığınız bir değişikliği her yerde yapmak zorunda olduğunuz için zamanla uygulamalarınızda beklenmedik hatalarla veya olumsuz durumlarla karşılaşabilirsiniz. C# programlama dilinde bu gibi sorunların tamamını çözmese de belirli bir oranda çözüm üreten nameof özelliği bu makalede incelenecektir. Konunun basitliği açısından kısa örnekle de konuyu açıklaya çalışacağım. Bazı durumlarda kod içerisinde kullandığımız değişkenlerin metotların isimlerini string olarak yazma gereği duyarız. Çoğu zaman bu zorunluluk haline de gelir. Örneğin, bir metoda gelen parametrelerden biri null ise ArgumentNullException içerisinde gelen parametrenin adını

C# Medyan Hesaplama Algoritması

Medyan(diğer adıyla ortanca) istatiksel hesaplamalarda aritmetik ortalama işleminin alternatifi olarak sıkça kullanılan ve bir sayı dizisinin küçükten büyüğe sıralandığında ortada kalan değeri sonuç olarak döndüren işlemdir.  Bu makalemizde C# programlama dilinde medyan hesaplama algoritmasını yazmaya çalışacağız. Medyan (Ortanca) ile ilgili ayrıntılı bili almak isterseniz buradaki makaleye göz atmanızı tavsiye ederim. Bir algoritmayı yazmadan önce problemi tam olarak ortaya koymak ve bu problemin çözüm yöntemini tüm yönleriyle ele almak önemlidir. Medyan hesaplama algoritmasını yazabilmek için de yapmamız gereken adımları sayı dizisini sıralamak, sıralama işleminden sonra ortanca değeri bulmak ve eğer iki ortanca değeri varsa bunun aritmetik ortalamasını bulmak olacaktır.  Konuyu anlatabilmek açısından öncelikle kodları paylaşıp bundan sonra konunun açıklamasını yapacağım. public double CalculateMedian(List<double> numberList) {

C# Request IP Adresi Bulma

Loglama her web projesi için önemlidir. Özellikle de web servisleri için... Local network için izin verilen ve dışarıya açık olmayan servisler için çokta önemli olmasa da, özellikle dışarıya açık servislerde kullanıcılardan gelen requestlerin ve request ip'lerinin loglanması çok önemlidir. Bu da, geçmişe yönelik açıklamalarda veya kötü amaçlı saldırıların tespitinde çok önemlidir. Bu makalemde de C# programlama dilinde web requestlerin ip adresinin nasıl elde edildiğinin kodunu vermeye çalışacağım. Bunun için projenize System.Web isim uzayının eklenmesi gerekiyor. Bundan sonra HttpContext.Current.Request.ServerVariables ve HttpContext.Current.Request.ServerVariables değerlerinden ihtiyacımız olanları alacağız.

C# İle Bilgisayarın Kullandığı RAM Miktarının Yüzdesel Ölçümü

Bu makalemizde C# programlama dili ile bilgisayarın kullandığı RAM miktarının yüzdesel olarak nasıl ölçüldüğünü anlatmaya çalışacağım. Daha önce benzer konu olan C# İle Bilgisayarın Kullandığı CPU Miktarının Yüzdesel Ölçümü makalesini yazmıştım. CPU kullanımın ölçümü için kullandığım PerformanceCounter metodunu uygun parametrelerle burada da kullanabiliriz. Ama farklılık olsun diye burada farklı bir yöntem deneyeceğim. Temel mantık olarak Bilgisayarın kullandığı RAM miktarının yüzdesel ölçümü için bilgisayarın dolu olan RAM miktarını toplam RAM miktarına bölmemiz yeterli olacaktır. Biz de bu işlemi uygulayacağız. Ama öncelikle bu iki değeri elde etmemiz gerekiyor.

C# İle Bilgisayarın Kullandığı CPU Miktarının Yüzdesel Ölçümü

Bu makalemizde C# programlama dilinde Bilgisayarın Kullandığı CPU Miktarının Yüzdesel Ölçümünün nasıl yapıldığını anlatmaya çalışacağım. Buna nerede ihtiyacımız olacak diye düşünmeyin. Çünkü özellikle Windows sunucularla çalıştığınızda çok işinize yarayacağını söyleyebilirim... Örneğin bir Ddos atağının ilk belirtisi CPU yükselmesi sonra da RAM yükselmesi, veri yollarının kitlenmesi ... dir Konuyu fazla uzatmadan biraz açıklama yaparak kodları vermeye çalışacağım. C# programlama dilinde bilgisayarlara ilgili analizleri yapabilmek için  System.Diagnostics isim uzayı yer alır. Biz de CPU kullanımını ölçebilmek için  System.Diagnostics isim uzayının  altında yer alan  PerformanceCounter sınıfını kullanacağız. Kullanılan CPU miktarını ölçmek için PerformanceCounter sınıfını tanımlarken bir kaç parametrenin verilmesi gerekiyor. Daha doğrusu birkaç parametrenin değeri string olarak girilmesi gerekiyor. 

MoreLinq Nedir? MoreLINQ Metot Listesi

More LINQ MoreLINQ C# programlama dilindeki Lınq To Sql sorgu yapılarının eksiklerini tamamlamak için geliştirilmiş bir kütüphanedir. Eğer Linq to Sql kütüphanesine biraz hakimseniz biraz advaced düzey sorgulara geçtiğinizde Linq To Sql bazı konularda eksik kaldığını ve ulaşmak istediğiniz sorgu sonuçları için birkaç sorgu sonucunu birleştirmeniz gerekir. En basit örnek verecek olursak Linq To Sql de 5 sorgu kolonundan sadece 1 kolona göre distinct işlemi yapmak isterseniz nasıl bir yol izleyeceksiniz...

Aritmetik Ortalama, Algoritması ve Kullanım Alanları

Aritmetik Ortalama Matematikte bir çok ortalama hesaplama yöntemleri vardır. Bu hesaplama yöntemleri genelde birden çok sayının ortalamasını bulmak için kullanılır. Matematikte yoğun şekilde kullanılan ortalama yöntemlerine Aritmetik Ortalama, Ortanca, Geometrik Ortalama, Kuadratik Ortalama, Harmonik Ortalama, Genelleştirilmiş Ortalama örnek verilebilir. Bu yöntemlerin hepsi ayrı ayrı makalelerde incelenmiştir. Bu makalede ise Aritmetik ortalama incelenecektir. Aritmetik ortalama matematiksel işlemlerde, istatiksel  hesaplamalarda, yapay zeka ile karar verme algoritmalarında, görüntü işleme algoritmalarında ve birçok yerde yoğun olarak kullanılan bir hesaplama yöntemidir. 

XML Nedir?

XML konusu sadece bilgisayar programcılarının değil, özellikle veri alışverişinde etkin kullanıldığında programcıların yanında bir çok kişinin bilmesi gereken bir konudur. Bu makale serisinin bir amacı C# programlama dili kullananlar için XML'i etkin şekilde kullanabilmeleri için yeterli bilgileri vermek ve genel olarak XML konusunu merak edenlleri konuyla alakalı bilgilendirmektir. Konunun ayrıntılı olarak incelenebilmesi açısından ve siz okuyucuları da tek uzun makaleyi okutup sıkmamak için makaleyi parçalara bölerek ve spesifik konuların incelendiği kısımlar halinde paylaşmak istedim. Makalelerdeki bir amacım da kısa ve öz olmak ve bu makaleleri bitirdikten sonra konuyu tam olarak anlayabilmenizdir. Bu yüzden anlatımın yeterli olmadığını düşünürseniz bize yazabilirsiniz.

C# String Reverse (Ters Çevirme) İşlemi

C# programlama dilinde string işlemine direkt olarak Reverse fonksiyonu uygulanabilse de bu işlem istenilen sonucu vermez. Kısaca bahsetmemiz gerekirse de string reverse işlemi bir metni ters çevirme işlemidir. Örneğin Alizade metninin ters çevrilmiş hali olan edazilA olacaktır. Bu kısa makalemizde C# programlama dilinde bir metninin tersini elde etmek için yöntemlere değineceğiz. Bu makalemizde 2 hazır fonksiyonla string reverse işleminin nasıl yapılacağını anlatacağım. Tabiki bu işlemler dışında binlerce yöntem yazılabilir. Ama önemli olan bu işlemin çok kısa sürede yapılmasıdır. Örneğin metin üzerindeki for döngüsüyle de karakterleri tersten okuyup yazabilirsiniz. Ama dediğim gibi önemli olan bu işlemin kısa sürede yapılmasıdır. Bu açıdan bakıldığında string reverse işlemi için kod kütüphanenize aşağıda anlatacağım iki yöntemi yazmanızı tavsiye ederim.

C# Decimal HEXADECIMAL Dönüşümü

C# programlama dilinde program yazanların genelde kullandıkları sayı sistemi onluk sayı sistemi olsa da özellikle elektronik sistemlerle entegreli sistemlerde en çok kullanılan sayı sistemi 16'lık yani Hexadecimal sayı sistemidir. Genel düşünme yapısı olarak ve tüm hayatımızda onluk yani decimal sayı sistmemini kullandığımız için Hexadecimal sayı sistemini kullanabilmemiz için decimal hexadecimal dönüşümlerinini yapabilmemiz gerekiyor. Bu kısa makalede de bu konuya değineceğiz ve C# programlama dilinde bu işlemleri nasıl yapıldığını öğreneceğiz. Konuyu anlayabilmek açısından küçük bir form uygulaması yapacaız ve bu form uygulamasına bir tane textbox bir tane de buton ekleyeceğiz. Bu programın amacı ise textboxa girdiğimiz sayının hexadecimal karşılığını bulmaktır. Forma butonu ve textboxı ekledikten sonra butona'a çift tıklıyoruz ve butonun click eventine aşağıdaki kodları yazıyoruz. Kodları size gösterdikten sonra daha sonra detaylı açıklamasını da yapacağım.

C# OpenFileDialog Kullanımı Ve Özellikleri

C# programlama dilinde OpenFileDialog dosya  yüklemek için kullanılır. Bu makalenin amaçlarından bir tanesi de OpenFileDialog sınıfının detaylarını, parametreleri ile birlikte kullanımını örnekler üzerinden açıklamaktır. OpenFileDialog sınıfı genel çalışma yapısı olarak kullandığını diğer programlarda olduğu gibi size dosya seçme penceresine yönlendirir. Visual Studio araçlar menüsünden projeye eklenebildiği gibi sınıf içinde de tanımlanabilir. Visual Studio ortamında da araçlar kutusunda OpenFileDialog'u görebilirsiniz. Eğer bulunmuyorsa da seçtiğiniz tab'ın üzerinde Choose Item yaparak araçlar kutusuna ekleyebilirsiniz. Ama benim önerim kod içinde bu sınıfı çağırmaktır. Çünkü her zaman form uygulaması dışında normal sınıflarda da kullanmanız gerekebilir. Bu gibi durumlara da hazırlıklı olabilmeniz açısından class içinde çağırmak ve buna alışmak daha iyi olabilir. Konuyu fazla uzatmadan OpenFileDialog örneğine geçmek istiyorum. Genel kullanımla ilgili örnekten sonra bu

Kalıtımı Engellemek - SEALED Anahtar Sözcüğü

Programlama nesne yönelimli programlamayla yani Object Oriented mantığıyla sanata dönüşür. Nesne yönelimli programlamanın temel konularından bir tanesi de inheritance yani kalıtımdır. Kalıtımı kullanmak yada kullanmamak tamamen sizin program tasarımınıza kalmış. Ama bazı durumlarda yazdığınız sınıfın kalıtımını engellemek veya bir fonksiyon, property'nin(özelliğin) override edilmesini engellemek isteyebilirsiniz. İşte bu işlemleri C# programlama dilinde yapmanın yolu sealed anahtar kelimesini kullanmaktır. Bu makelemin de temel amacı C# programlama dilinde sealed anahtar sözcüğünü tanıtmak, kullanım alanlarını ve kullanım mantığını açıklamaktır. Konuyu geçmeden önce belirtmem gerekiyor ki bu konuyu anlayabilmek için nesne yönelimli programlama mantığını ve kalıtım konusunu çok iyi anlamanız gerekir. Burada anlatılan konular C# programlama dili kullanılarak örneklense de kullandığınız programlama dilinde büyük ihtimal sadece kullanılan sözcükler değişecektir. Yani önemli olan kon

Visual Studio Web Projelerinde Türkçe Karakter Sorunu Çözümü

Visual Studio ile web projesi yapıyorsanız karşılaşabileceğiniz sorunlardan bir tanesi Türkçe karakterleri görüntüleme sıkıntısı olabilir. Bu sorunu çözmek için yapacağınız işlem çok basittir. File menüsünden  “Advanced Save Option” Encoding seçeneğini Unicode(UTF-8 with signature)-Codepage 65001 seçmeniz, Line endings seçeneğinini de Current Setting olarak bırakmanız yeterli olacaktır. Bundan sonra projeyi kaydederseniz projenizde Türkçe karakter sorunu giderilmiş olur.  Aynı zamanda projenizi çok dilli de geliştiriyorsanız yine bu seçeneği seçmelisiniz. Eğer özel bir dilde geliştiriyorsanız buna uygun diğer dil seçeneklerine bakabilirsiniz. Ama sorunla sürekli karşılaşmamak için Unicode(UTF-8 with signature)-Codepage 65001 seçmenizi tavsiye ederim.

Fibonacci Serisi Algoritması

Bu makalemizde programlama derslerinde verilen ve matematik dünyasında ünlü olan fibonacci serilerini inceleyeceğiz. Öncelikle fibonacci serisinin ne olduğundan, mantığından bahsedeceğiz. Bu konular anlaşıldıktan sonra ise serinin algoritmik olarak nasıl bulunacağı incelenecektir. Bu makaleyi okumak ve yapılanları uygulamak sadece fibonacci serisinin programını yazmaya değil, aynı zamanda programlama konusunda da gelişmenize yardımcı olacaktır. Ayrıca bu konuyu yazılım dünyasına yeni başlamış kişilerin okuyacağını dikkate alarak yazılım konusunda da birkaç tüyo vererek makalemi yazmaya çalışacağım… Öncelikle önemli olan bir konudan bahsetmek istiyorum. Size verilen bir problemi çözmek istiyorsanız öncelikle verilen problemi çok iyi anlamanız gerekir. Mesela burada fibonacci serileri ile ilgili bir algoritma yazacaksak öncelikle matematiksel olarak sorunu ortaya koyabilmemiz lazım. Bu iş hayatınızda da karşılaştığınız sorunlarda aynıdır. Eğer sorunu iyi ortaya koyarak analiz edemezsen

C# Programlama Dilinde HASH ALGORİTMALARI ve Kullanımı

Hash fonksiyonları kullanım yeri olarak çoğunlukla şifrelerin veri tabanında tutulmasında, aynı zamanda büyük bir veride değişikliklerin olup olmamasında kullanılır. Hash fonksiyonları mantığı gereği veri üzerinde kullanılan algoritmaya göre işlem yapar ve bu algoritma sonucunda sabit uzunlukta sonuç üretir. Bu veriden tekrar orjinal veriyi elde etmek ideal algoritma için imkansız olmalıdır. Bu konuları daha iyi anlayabilmeniz için " Checksum Nedir? Kullanım Alanları Nelerdir? " ve " Hash Fonksiyonu Nedir? Hash Fonksiyonları ve Kullanım Alanları " makalelerine göz atmanızı tavsiye ederim. Bu makalemizde C# programlama dilindeki hash algoritmalarını inceleyeceğiz ve örneklere genel kullanım mantığını açıklayacağız.

C# Programlama Dilinde HMACSHA384 Hash Algoritması VE Uygulama Örneği

C# programlama dilinde SHA384 hash algoritması ile birlikte bu algoritmanın simetrik algoritma veya simetrik şifreleme mantığı ile birleştirilmiş HMACSHA384  algoritması da vardır. HMACSHA384 algoritmasının temel amacı SHA384 algoritmasındaki şifreleme mantığını simetrik şifreleme ile birleştirerek bir güvenlik katmanı daha eklemektir. Algoritma çıktısı 96 karakterden ibaret olan SHA384 algoritmasının mapping yapılarak çözülmesi zor olsa da imkansızdır diyemeyiz. Simetrik algoritmayla birleşmesi ise şifrelenmiş bir metnin çözülmesini çok zorlaştırır. Bu açıdan bakıldığında HMACSHA384 algoritmasının kullanılmasının güvenlik açısından SHA384 algoritmasına göre daha avantajlı olduğunu söyleyebiliriz.

C# Programlama Dilinde HMACSHA256 Hash Algoritması VE Uygulama Örneği

C# programlama dilinde SHA256 hash algoritması ile birlikte bu algoritmanın simetrik algoritma veya simetrik şifreleme mantığı ile birleştirilmiş HMACSHA256 algoritması da vardır. HMACSHA256 algoritmasının temel amacı SHA256 algoritmasındaki şifreleme mantığını simetrik şifreleme ile birleştirerek bir güvenlik katmanı daha eklemektir. Algoritma çıktısı 64 karakterden ibaret olan SHA256 algoritmasının mapping yapılarak çözülmesi zor olsa da imkansızdır diyemeyiz. Simetrik algoritmayla birleşmesi ise şifrelenmiş bir metnin çözülmesini çok zorlaştırır. Bu açıdan bakıldığında HMACSHA256 algoritmasının kullanılmasının güvenlik açısından SHA256 algoritmasına göre daha avantajlı olduğunu söyleyebiliriz.

C# Programlama Dilinde HMACSHA512 Hash Algoritması VE Uygulama Örneği

C# programlama dilinde SHA512 hash algoritması ile birlikte bu algoritmanın simetrik algoritma veya simetrik şifreleme mantığı ile birleştirilmiş HMACSHA512  algoritması da vardır. HMACSHA512 algoritmasının temel amacı SHA512 algoritmasındaki şifreleme mantığını simetrik şifreleme ile birleştirerek bir güvenlik katmanı daha eklemektir. Algoritma çıktısı 128 karakterden ibaret olan SHA512 algoritmasının mapping yapılarak çözülmesi zor olsa da imkansızdır diyemeyiz. Simetrik algoritmayla birleşmesi ise şifrelenmiş bir metnin çözülmesini çok zorlaştırır. Bu açıdan bakıldığında HMACSHA512 algoritmasının kullanılmasının güvenlik açısından SHA512 algoritmasına göre daha güvenli olduğunu söyleyebiliriz.

C# ?: Operatörü Kullanımı Ve Kullanım Yerleri

C# programlama dilinde ?: Operatörü if else veya koşul ifadesini tek cümlede kullanmak için geliştirilmiş yöntemdir.. Basitçe if else yapısında bir koşul vardır. Bu koşul sağlanırsa buna uygun işlemleri, eğer koşul sağlanmazsa da ona uygun işlemleri yaparsınız. ?: operatörünün normal if else, switch case yapılarından farkı ise sadece iki koşullu olmasıdır. Koşul ifadesinin sadece iki durumu için işlem yapabilirsiniz. Oysa if else yapısı ele aldığımızda isteğimiz kadar else if ifadesini ekleyerek koşulları çoğaltabiliriz. Önemli olan konulardan bir tanesi de ?: operatörünün çok fazla kullanılmasının kod okunabilirliğini negatif yönde etkilemesidir. Buna rağmen bazı durumlarda bu operatörün kullanılması kod kalitesini artırabilir ve kodunuz daha profesyonel görünmesine neden olabilir.