CategoryMicrosoft .NET

HTML5 Data Attribute

H

Bu yazımca kısaca HTML5 ile birlikte gelen data attritube kullanımından bahsedeceğim.

Bu attribute sayesinde HTML elemanları üzerinde (div, button, input vb.) istediğiniz bir veriyi(datayı) tutabiliyorsunuz.

Data atrritube kullanımı şu şekildedir.

data-data_adi=”data_degeri

“data-” yazımından dan sonra oluşturacağınız data attribute’e istediğiniz bir ismi verebilir ve içerisine string formatında istediğiniz veriyi doldurabilirsiniz. Bir html elemanı üzerinde istediğiniz kadar data attribute kullanabilirsiniz. Tanımlama yaparken büyük harf kullanmamaya özen gösteriniz, yazım standartlarına aykırı ve bazen çalışmayabiliyor.

(daha&helliip;)

C# Erişim Belirleyiciler (Access Modifiers)

C

Güvenlik vb. çeşitli sebeplerle nesnelerimizin dışarıdan erişilmesini veya erişilmemesini isteyebiliriz. Bu tarz yetkilendirme işlemlerini C# dilinde erişim belirleyiciler (access modifiers) ile sağlanmaktadır. Erişim belirleyiciler C# üzerinde tanımlanmış tüm nesnelere uyarlanabilir. (değişkenler, classlar, methodlar vb.)

(daha&helliip;)

MySQL Specified key was too long; max key length is 767 bytes

M

Entity Framework ile birlikte MySQL kullanırken karşılaştığım hatalardan bir tanesi daha :) update-database komutu sonrası __migrationhistory tablosunu oluşturmaya çalışırken bu hatayı fırlatıyor. Sistemimizin çalışmasına engel olmasa da biz hatanın çözümüne bakalım.

“MySQL Specified key was too long; max key length is 767 bytes”

Hatanın çözümü için MySQL Context’imizin içerisinde classımızın başlangıç satırının bir üstüne aşağıdaki kodu ekliyoruz.

[csharp][DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))][/csharp]

mysql_ef_conf

Yani Context’ imizin database yapılandırmasının tipini MySQL Entity Framework yapılandırmasına göre ayarla diyoruz. Entity Framework üzerinde MySQL ile çalışacaksanız bunu her seferinde yazmanızı tavsiye ederim.

No MigrationSqlGenerator found for provider ‘MySql.Data.MySqlClient’.

N

No MigrationSqlGenerator found for provider ‘MySql.Data.MySqlClient’. Use the SetSqlGenerator method in the target migrations configuration class to register additional SQL generators.

Entity Framework Code First ile birlikte MySQL veritabanı kullanmak istediğimde yukarıdaki hata ile karşılaştım. Kısaca diyor ki Microsoft SQL Server dışında bir veritabanıyla çalışacaksan Sql Generator’ını eklemen gerekiyor.

Migration işlemimi yaptığım Configuration.cs içerindeki constructor‘a aşağıdaki kodu eklemem yeterli oldu.

[csharp]SetSqlGenerator("MySql.Data.MySqlClient", new MySql.Data.Entity.MySqlMigrationSqlGenerator());[/csharp]

mysql_migration_entity_framework

Entity Framework ile MySQL kullanmak MSSQL’e göre veya  Ado.Net ile MySQL’e bağlanmaya göre biraz daha karmaşık. Maalesef Türkçe kaynak yok denecek kadar az, bununla ilgili Türkçe bir makale yazsam iyi olacak gibi :)

Entity States Nedir

E

entity_state

 

Entity State kısaca Entity’imizin o an ki durumunu bildiren bir propertydir. Entity üzerinde yapılan çeşitli işlemler sonrası durumu değişmektedir.

Entity’mizin durumunu State property si ile görebilirsiniz.

[csharp]ContextAdi.Entry(EntityAdi).State[/csharp]

(daha&helliip;)

C# Lambda İfadeleri ve Kullanımları

C

lambda

 

Lambda İfadeleri, değişkenlere değer atamak için kullanılan sadeleştirilmiş anonim (isimsiz) fonksiyonlardır. Bu fonksiyonlar matematikteki ve bilgisayar bilimlerindeki Lambda Calculus’un C# ve Visual Basic’e uyarlanmasıdır.

Lambda İfadeleri kullanarak parametre geçilebilen ve değer döndüren isimsiz yerel fonksiyonlar oluşturabilirsiniz. Bu ifadeler genelde basit işlemleri bildirmekte kullanılabilir.

Kendim için aldığım lambda ifadeleri ve kullanımları notlarını blog takipçilerimle de paylaşıyorum.

(daha&helliip;)

C# ile Basit Yoldan HTTP Post Gönderimi

C

C# ile hızlı bir şekilde post gönderimi yapmak isteyebilirsiniz.

Örneğin web sitenizde veya iletişim formunuzda kullanıcılardan aldığınız verileri bir başka yere de post ile gönderip kayıt altına alabilirsiniz. Yada çok farklı bir kullanım olarak Windows Forms bir uygulamanız var diyelim, buradan girilen mesajları web sitenizin iletişim formundan otomatik olarak gönderilmesini/kayıt edilmesini istiyorsunuz, bunun içinde post işleminden faydalanabilirsiniz.

Bu yöntemle captcha koruması bulunmayan web formlarına saldırı da yapabilirsiniz ancak yapmayın :) Efendi olun!

Lafı uzatmadan kodlara geçiyorum :)

(daha&helliip;)

C# Kredi Kartı Algoritması

C

Kısa tarih bilgisi ile bir alman olan Hans Peter Luhn abimiz tarafından 1954 yılında dakte edilen sayıların yanlış girilip girilmediğini kontrol amaclı geliştirilmiş. IMEI – Kredikarti gibi sayıların son karakterinde doğrulama kodu olarak kullanılır.

1. Girilen karakter sayısı 16 olmak zorundadır.
2. Bir değişkene indisleri çift olan sayıların iki katlarının basamak toplamlarının, toplamları aktarılmalıdır.
3. Diğer bir değişkene ise indisleri tek olan sayıların toplamları aktarılmalıdır.
4. Son olarak da iki değişkenin toplamının 10 a bölünüp bölünmediğini kontrol edeceğiz.

[csharp]

private bool KrediKartiDogrulama(string pKartNo)
{
int toplam = 0;
for (int i = 0; i < 16; i++)
{
int sayi = Convert.ToInt32(pKartNo[i].ToString());

if (i % 2 == 0)
{
sayi = sayi * 2;
if (sayi.ToString().Length == 2)
sayi = Convert.ToInt32(sayi.ToString().Substring(0, 1)) + Convert.ToInt32(sayi.ToString().Substring(1, 1));
}

toplam += sayi;
}

if (toplam % 10 == 0)
return true;
else
return false;
}

[/csharp]

C# TcKimlik Algoritması

C
  • TC Kimlik numaraları 11 basamaktan oluşmaktadır.
  • İlk 9 basamak arasında kurulan bir algoritma bize 10. basmağı, ilk 10 basamak arasında kurulan algoritma ise bize 11. basamağı verir.
  • 11 hanelidir.
  • Her hanesi rakamsal değer içerir.
  • İlk hane 0 olamaz. 1. 3. 5. 7. ve 9. hanelerin toplamının 7 katından, 2. 4. 6. ve 8. hanelerin toplamı çıkartıldığında, elde edilen sonucun 10’a bolumunden kalan, yani Mod10’u bize 10. haneyi verir.
  • İlk 10 hanenin toplamından elde edilen sonucun 10’a bolumunden kalan, yani Mod10’u bize 11. haneyi verir.

 

[csharp]

private bool TcKimlikDogrulama(string pTCKimlik)
{
if (pTCKimlik.Length < 11)
return false;
else if (pTCKimlik.Substring(0, 1) == "0")
return false;

int toplam1 = Convert.ToInt32(pTCKimlik[0].ToString()) + Convert.ToInt32(pTCKimlik[2].ToString()) + Convert.ToInt32(pTCKimlik[4].ToString()) + Convert.ToInt32(pTCKimlik[6].ToString()) + Convert.ToInt32(pTCKimlik[8].ToString());
int toplam2 = Convert.ToInt32(pTCKimlik[1].ToString()) + Convert.ToInt32(pTCKimlik[3].ToString()) + Convert.ToInt32(pTCKimlik[5].ToString()) + Convert.ToInt32(pTCKimlik[7].ToString());

int sonuc = ((toplam1 * 7) – toplam2) % 10;

if (sonuc.ToString() != pTCKimlik[9].ToString())
return false;

int toplam3 = 0;
for (int i = 0; i < 10; i++)
toplam3 += Convert.ToInt32(pTCKimlik[i].ToString());

if ((toplam3 % 10).ToString() != pTCKimlik[10].ToString())
return false;

return true;
}

[/csharp]

Get in touch

Quickly communicate covalent niche markets for maintainable sources. Collaboratively harness resource sucking experiences whereas cost effective meta-services.