Instant Dictionary Privacy Statement
The Instant Dictionary application will not collect, store and share any personal information or device information.
The Instant Dictionary application will not collect any statistic data and analytic data from you and your device and it won’t trace your behavior.
The content is translated using Microsoft Translator Service.
Tolga Yaramış - Blog
5 Ocak 2013 Cumartesi
14 Nisan 2010 Çarşamba
S.O.L.I.D. Software Development
Solid principles hakkinda güzel bir makale...
http://www.code-magazine.com/Article.aspx?quickid=1001061
http://www.code-magazine.com/Article.aspx?quickid=1001061
14 Şubat 2010 Pazar
ALT.NET Kavrami
Gürkan Yeniceri den Alt.Net kavrami hakkinda güzel bir yazi ve ayrica Alt.Net yazilimcilarinin kullandigi araclardan bazilarinin listesi.
http://analystdeveloper.com/blogs/gurkan/archive/2008/09/26/3551.aspx
http://analystdeveloper.com/blogs/gurkan/archive/2008/09/26/3551.aspx
21 Nisan 2009 Salı
Görsel Egitim Videolari
Farkli konularda bir cok webcast in bulundugu bir egitim sitesi. Kesinlikle ziyaret edilmesini öneririm.
http://dimecasts.net
http://dimecasts.net
3 Nisan 2009 Cuma
James Kovacs, her yazilimcinin okumasi gereken kitaplar hakkinda güzel bir liste hazirlamis.
http://www.jameskovacs.com/blog/TheBookshelf.aspx
http://www.jameskovacs.com/blog/TheBookshelf.aspx
9 Ocak 2009 Cuma
Explore the Data Access Options in Visual Studio 2008
VS.2008 icerisinde data erisim yöntemlerinin anlatildigi güzel bir makale...
http://www.devx.com/codemag/Article/39751/1954
Microsoft ORM cözümü olan ADO.NET Entity Framework'un örneklerle anlatildigi 4 bölümden olusan güzel bir makale serisi.
http://www.scip.be/index.php?Page=ArticlesNET12
http://www.devx.com/codemag/Article/39751/1954
Microsoft ORM cözümü olan ADO.NET Entity Framework'un örneklerle anlatildigi 4 bölümden olusan güzel bir makale serisi.
http://www.scip.be/index.php?Page=ArticlesNET12
Etiketler:
Ado.Net,
Ado.Net Entity Framework,
ORM
21 Ekim 2008 Salı
.NET -> Web.Config dosyasinda upload dosya büyüklügünü ayarlamak
Asp.Net yada web service uygulamalarinda default olarak belirlenen 4 MB dan daha büyük bir dosya upload edilemek istediginde asagidaki hata olusur.
"There was an exception running the extensions specified in the config file.
--> Maximum request length exceeded."
Bu problemi icin web.config dosyasi icerisine elementleri icerisine, asagidaki kod satirlarini ekleyerek cözebiliriz.
<httpRuntime
executionTimeout="1200"
maxRequestLength="10240"
useFullyQualifiedRedirectUrl="false"
minFreeThreads="8"
minLocalRequestFreeThreads="4"
appRequestQueueLimit="100" />
Burada belirtilen maxRequestLength="10240" degeri ile 10 MB kadar dosyalarin upload edilebilcegini ayarlamis oluyoruz.
"There was an exception running the extensions specified in the config file.
--> Maximum request length exceeded."
Bu problemi icin web.config dosyasi icerisine
<httpRuntime
executionTimeout="1200"
maxRequestLength="10240"
useFullyQualifiedRedirectUrl="false"
minFreeThreads="8"
minLocalRequestFreeThreads="4"
appRequestQueueLimit="100" />
Burada belirtilen maxRequestLength="10240" degeri ile 10 MB kadar dosyalarin upload edilebilcegini ayarlamis oluyoruz.
14 Ekim 2008 Salı
.NET -> .Net siniflarindan XSD schema dosyasi yaratmak.
XML dosyalarinin dogrulanmasinda XSD dosyalarinin kullanildigindan bir önceki yazida bahsetmistim. Bir assembly icerisindeki bir yada birden fazla sinifdan XSD schema dosyasi yaratmak icin, .NET Framework icerisinde bulunan "xsd.exe" yardimci uygulamasi kullanilabilir.
Nasil kullanildigina dair bir örnek verirsek.
xsd C:\TestApplication.exe /t:Product
Burdaki ilk paremetre assembly nin oldugu path bilgisidir. /t: anahtarindan sonra belirtilen deger de assembly icinde schema dosyasi olusturulmak istenen sinif ismidir.
Bu sekilde Product sinifi icin XSD dosyasi uygulama ile ayni dizinde yaratilmis olur.
Olusturulan bu dosya özellikle deserialize islemleri yapilmadan önce, XML dosyanin iceriginin dogrulanmasinda kullanilir.
Nasil kullanildigina dair bir örnek verirsek.
xsd C:\TestApplication.exe /t:Product
Burdaki ilk paremetre assembly nin oldugu path bilgisidir. /t: anahtarindan sonra belirtilen deger de assembly icinde schema dosyasi olusturulmak istenen sinif ismidir.
Bu sekilde Product sinifi icin XSD dosyasi uygulama ile ayni dizinde yaratilmis olur.
Olusturulan bu dosya özellikle deserialize islemleri yapilmadan önce, XML dosyanin iceriginin dogrulanmasinda kullanilir.
XML dosyalarinin gecerliligini Schema dosyasi kullanarak kontrol etmek (Validate an XML Document using Schema)
Bir XML dosyanin icerigini kontrol etmek icin schema dosyalarindan faydalanabiliriz.
XML schema dosyasi, XML dosyasinin iceriginin sahip olmasi gereken kurallari tanimlayan, uzantisi XSD (XML Schema Definition) olan dosyalardir.
XSD icerisnde bahsedilen kurallar sunlardir;
- XML dosyasi icinde var olmasi beklenen element ve attibute'ler, bunlara ait olan data tipleri.
- XML dosyasinin yapisi. Elementler ve bu elementlere ait olan child element'ler.
- Child elementlerin sayisi ve sirasi.
- Element'lerin bir text degere sahip olup olmayacagi.
XSD dosyalar icinde tanimlanan element'ler "simple" ve "complex" type olmak üzere ikiye ayrilir. Sadece karakter data barindan element'ler simple type olarak ifade edilir. Elementler onlara bagli olan alt elementlere (nested elements) sahip ise bu tip elementlerde complex type olarak isimlendirilir.
Asagidaki örnekde ProductCatalog.xml dosyasinin, ProductCatalog.xsd dosyasi kullanilarak nasil validate edilecegini görelim. Bu iki dosyanin icerigi asagidaki gibi olacakdir.
ProductCatalog.xml:
ProductCatalog.xsd:
Asagidaki örnek consol uygulamasinda XML dosyanin gecerliligini XSD kullanarak nasil denetlicegimizi görelim:
using System;
using System.Xml;
using System.Xml.Schema;
public class ValidateXml
{
private static void Main()
{
// XmlValidator sinifimiz icerisinde XMLReader sinifi kullanilarak dogrulama islemi yapilacak.
XmlValidator validator = new XmlValidator();
Console.WriteLine("ProductCatalog.xml dogrulama islemi...\n");
//Xml ve Xsd dosyalari uygulamamizin calistigi dizinde.
bool success = validator.ValidateXml("ProductCatalog.xml", "ProductCatalog.xsd");
if (!success)
Console.WriteLine("XML dosyasi icerigi dogrulanamadi!");
else
Console.WriteLine("XML dosyasi icerigi uygun.");
Console.ReadLine();
}
}
public class XmlValidator
{
private bool failed;
public bool Failed
{
get {return failed;}
}
public bool ValidateXml(string xmlFilename, string schemaFilename)
{
// Schema tipinde dogrulama (validation) yapacagimizi tanimliyoruz.
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
// Schema dosyasi yükleniyor..
XmlSchemaSet schemas = new XmlSchemaSet();
settings.Schemas = schemas;
// ilk parametre de kendimiz bir target namespace girebiliriz validate islemi icin
// null olarak birakildiginda "targetNamespace" degeri schema dosyasindan alinir.
schemas.Add(null, schemaFilename);
// Dogrulama yapilirken hata olustugunda calisacak event handler tanimlaniyor.
settings.ValidationEventHandler += ValidationEventHandler;
//Schema ayarlari ile birlikte xml dosyasi okunmak üzere XMLReader nesnesi olusturuluyor.
XmlReader validator = XmlReader.Create(xmlFilename, settings);
failed = false;
try
{
// XML dosyasi icerisindeki tüm datalar okunuyor.
while (validator.Read())
{}
}
catch (XmlException err)
{
// XML dosyasi icersinde gecersiz bir karakter oldugunda yada acilmis bir tag dogru sekilde kapatilmadiginda hataya düser.
Console.WriteLine(err.Message);
failed = true;
}
finally
{
validator.Close();
}
return !failed;
}
private void ValidationEventHandler(object sender, ValidationEventArgs args)
{
failed = true;
// Dogrulama (Validation) hatasini ekrana yazdir.
Console.WriteLine("XML Dogrulama Hatasi: " + args.Message);
}
}
Uygulamayi calistirdigimizda console ekraninda asagidaki ciktiyi aliriz;
ProductCatalog.xml dogrulama islemi...
XML Dogrulama Hatasi: The element 'product' has invalid child element 'description'. List of possible elements expected: 'productPrice'.
XML Dogrulama Hatasi: The element 'product' has invalid child element 'description'. List of possible elements expected: 'productPrice'.
XML dosyasi icerigi dogrulanamadi!
Bu hatanin olusup dogrulama isleminin gerceklesmemesinin nedeni, ProductCatalog.xsd dosyasi icerisinde "complex type product tanimlamasi" altinda belirlenen elementlerde description isimli bir element in tanimlanmamasi, fakat ProductCatalog.xml dosyasindaki node'lar icerisinde description isimli bu elementin var olmasidir.
ProductCatalog.xsd dosya icerisinden
<xsd:element name="productPrice" type="xsd:decimal"/>
satirini sildigimizde, XML dosyanin iceriginin kullanilan schema dosyasina uygun oldugunu ve dogrulama isleminin hatasiz sekilde tamamlandigini görürüz.
Kaynak: Apress Visual C# 2005 Recipes
XML schema dosyasi, XML dosyasinin iceriginin sahip olmasi gereken kurallari tanimlayan, uzantisi XSD (XML Schema Definition) olan dosyalardir.
XSD icerisnde bahsedilen kurallar sunlardir;
- XML dosyasi icinde var olmasi beklenen element ve attibute'ler, bunlara ait olan data tipleri.
- XML dosyasinin yapisi. Elementler ve bu elementlere ait olan child element'ler.
- Child elementlerin sayisi ve sirasi.
- Element'lerin bir text degere sahip olup olmayacagi.
XSD dosyalar icinde tanimlanan element'ler "simple" ve "complex" type olmak üzere ikiye ayrilir. Sadece karakter data barindan element'ler simple type olarak ifade edilir. Elementler onlara bagli olan alt elementlere (nested elements) sahip ise bu tip elementlerde complex type olarak isimlendirilir.
Asagidaki örnekde ProductCatalog.xml dosyasinin, ProductCatalog.xsd dosyasi kullanilarak nasil validate edilecegini görelim. Bu iki dosyanin icerigi asagidaki gibi olacakdir.
ProductCatalog.xml:
ProductCatalog.xsd:
Asagidaki örnek consol uygulamasinda XML dosyanin gecerliligini XSD kullanarak nasil denetlicegimizi görelim:
using System;
using System.Xml;
using System.Xml.Schema;
public class ValidateXml
{
private static void Main()
{
// XmlValidator sinifimiz icerisinde XMLReader sinifi kullanilarak dogrulama islemi yapilacak.
XmlValidator validator = new XmlValidator();
Console.WriteLine("ProductCatalog.xml dogrulama islemi...\n");
//Xml ve Xsd dosyalari uygulamamizin calistigi dizinde.
bool success = validator.ValidateXml("ProductCatalog.xml", "ProductCatalog.xsd");
if (!success)
Console.WriteLine("XML dosyasi icerigi dogrulanamadi!");
else
Console.WriteLine("XML dosyasi icerigi uygun.");
Console.ReadLine();
}
}
public class XmlValidator
{
private bool failed;
public bool Failed
{
get {return failed;}
}
public bool ValidateXml(string xmlFilename, string schemaFilename)
{
// Schema tipinde dogrulama (validation) yapacagimizi tanimliyoruz.
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
// Schema dosyasi yükleniyor..
XmlSchemaSet schemas = new XmlSchemaSet();
settings.Schemas = schemas;
// ilk parametre de kendimiz bir target namespace girebiliriz validate islemi icin
// null olarak birakildiginda "targetNamespace" degeri schema dosyasindan alinir.
schemas.Add(null, schemaFilename);
// Dogrulama yapilirken hata olustugunda calisacak event handler tanimlaniyor.
settings.ValidationEventHandler += ValidationEventHandler;
//Schema ayarlari ile birlikte xml dosyasi okunmak üzere XMLReader nesnesi olusturuluyor.
XmlReader validator = XmlReader.Create(xmlFilename, settings);
failed = false;
try
{
// XML dosyasi icerisindeki tüm datalar okunuyor.
while (validator.Read())
{}
}
catch (XmlException err)
{
// XML dosyasi icersinde gecersiz bir karakter oldugunda yada acilmis bir tag dogru sekilde kapatilmadiginda hataya düser.
Console.WriteLine(err.Message);
failed = true;
}
finally
{
validator.Close();
}
return !failed;
}
private void ValidationEventHandler(object sender, ValidationEventArgs args)
{
failed = true;
// Dogrulama (Validation) hatasini ekrana yazdir.
Console.WriteLine("XML Dogrulama Hatasi: " + args.Message);
}
}
Uygulamayi calistirdigimizda console ekraninda asagidaki ciktiyi aliriz;
ProductCatalog.xml dogrulama islemi...
XML Dogrulama Hatasi: The element 'product' has invalid child element 'description'. List of possible elements expected: 'productPrice'.
XML Dogrulama Hatasi: The element 'product' has invalid child element 'description'. List of possible elements expected: 'productPrice'.
XML dosyasi icerigi dogrulanamadi!
Bu hatanin olusup dogrulama isleminin gerceklesmemesinin nedeni, ProductCatalog.xsd dosyasi icerisinde "complex type product tanimlamasi" altinda belirlenen elementlerde description isimli bir element in tanimlanmamasi, fakat ProductCatalog.xml dosyasindaki node'lar icerisinde description isimli bu elementin var olmasidir.
ProductCatalog.xsd dosya icerisinden
<xsd:element name="productPrice" type="xsd:decimal"/>
satirini sildigimizde, XML dosyanin iceriginin kullanilan schema dosyasina uygun oldugunu ve dogrulama isleminin hatasiz sekilde tamamlandigini görürüz.
Kaynak: Apress Visual C# 2005 Recipes
13 Ekim 2008 Pazartesi
.NET -> Dosya yolu üzerinde "Path" static sinifi ile islemler
System.IO namespace'i altinda bulunan static "Path" sinifi ile dosya yada dizin bilgisi iceren string ifadeler üzerinde islemler yapabiliriz. Yararli metodlardan bazilari;
- ChangeExtension: Dosyanin var olan uzantisi degistirilir. Eger yeni uzanti belirtilmemisse, var olan uzanti silinir.
- GetDirectoryName: Dosyanin bulundugu dizin ismini döndürür.
- GetFileName: Belirtilen dosyayolundan, dosya ismini geri döndürür.
Console.WriteLine(Path.GetFileName(@"..\System\myFile.txt"));
>> myFile.txt
- GetFileNameWithoutExtension: Dosya ismini uzantisi olmaksizin döndürür.
- GetFullPath: Paremetre olarak verilen string sadece dosya ismi barindiriyorsa, uygulamanin calistigi dizin bilgisi ile dosya yolu olusturur. Örnegin uygulama C:\Test dizininde calisiyor olsun.
Console.WriteLine(Path.GetPathRoot("myfile.txt"));
>> C:\Test\myFile.txt
- GetPathRoot: Dosya yolunun root dizinini döndürür.
Console.WriteLine(Path.GetPathRoot(@"C:\Temp\myfile.txt"));
>> C:\
- HasExtension: Dosya yolu uzanti ile sonlaniyorsa True döndürür.
- Combine: iki string ifadeyi birlestirir.
Console.WriteLine(Path.Combine(@"C:\Temp", "myfile.txt"));
>> C:\Temp\myfile.txt
- GetInvalidFileNameChars: Dosya isimlerinde gecersiz olacak karakterlerin listesini char[] array olarak geri döndürür.
- GetInvalidPathChars: Dosya yolu icin gecersiz olan karakterleri char[] array olarak geri döndürür.
- GetTempPath: Sistemin temp dizinini almak icin kullanilir.
- GetTempFileName: Sistemin temp dizini icerinde 0 Byte büyüklügünde bir dosya yaratir ve bu dosyanin dosya yolunu geri döndürür.
- ChangeExtension: Dosyanin var olan uzantisi degistirilir. Eger yeni uzanti belirtilmemisse, var olan uzanti silinir.
- GetDirectoryName: Dosyanin bulundugu dizin ismini döndürür.
- GetFileName: Belirtilen dosyayolundan, dosya ismini geri döndürür.
Console.WriteLine(Path.GetFileName(@"..\System\myFile.txt"));
>> myFile.txt
- GetFileNameWithoutExtension: Dosya ismini uzantisi olmaksizin döndürür.
- GetFullPath: Paremetre olarak verilen string sadece dosya ismi barindiriyorsa, uygulamanin calistigi dizin bilgisi ile dosya yolu olusturur. Örnegin uygulama C:\Test dizininde calisiyor olsun.
Console.WriteLine(Path.GetPathRoot("myfile.txt"));
>> C:\Test\myFile.txt
- GetPathRoot: Dosya yolunun root dizinini döndürür.
Console.WriteLine(Path.GetPathRoot(@"C:\Temp\myfile.txt"));
>> C:\
- HasExtension: Dosya yolu uzanti ile sonlaniyorsa True döndürür.
- Combine: iki string ifadeyi birlestirir.
Console.WriteLine(Path.Combine(@"C:\Temp", "myfile.txt"));
>> C:\Temp\myfile.txt
- GetInvalidFileNameChars: Dosya isimlerinde gecersiz olacak karakterlerin listesini char[] array olarak geri döndürür.
- GetInvalidPathChars: Dosya yolu icin gecersiz olan karakterleri char[] array olarak geri döndürür.
- GetTempPath: Sistemin temp dizinini almak icin kullanilir.
- GetTempFileName: Sistemin temp dizini icerinde 0 Byte büyüklügünde bir dosya yaratir ve bu dosyanin dosya yolunu geri döndürür.
Kaydol:
Kayıtlar (Atom)