tag:blogger.com,1999:blog-42022078200547252392024-02-21T00:16:16.623+01:00Tolga Yaramış - BlogTolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.comBlogger40125tag:blogger.com,1999:blog-4202207820054725239.post-84443681112359739912013-01-05T19:12:00.001+01:002013-01-05T19:12:15.747+01:00Instant Dictionary Privacy Statement<span style="font-family: inherit;"><b>Instant Dictionary Privacy Statement </b></span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">The Instant Dictionary application will not collect, store and share any personal information or device information. </span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">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. </span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">The content is translated using Microsoft Translator Service.
</span>Tolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com0tag:blogger.com,1999:blog-4202207820054725239.post-30429132943722410902010-04-14T11:27:00.004+02:002010-04-18T18:43:26.261+02:00S.O.L.I.D. Software DevelopmentSolid principles hakkinda güzel bir makale...<br /><br /><a href="http://www.code-magazine.com/Article.aspx?quickid=1001061">http://www.code-magazine.com/Article.aspx?quickid=1001061</a>Tolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com0tag:blogger.com,1999:blog-4202207820054725239.post-55630318211455256642010-02-14T13:22:00.002+01:002010-02-14T13:24:42.949+01:00ALT.NET KavramiGürkan Yeniceri den Alt.Net kavrami hakkinda güzel bir yazi ve ayrica Alt.Net yazilimcilarinin kullandigi araclardan bazilarinin listesi.<br /><br />http://analystdeveloper.com/blogs/gurkan/archive/2008/09/26/3551.aspxTolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com0tag:blogger.com,1999:blog-4202207820054725239.post-77008599161648362982009-04-21T16:10:00.001+02:002009-04-21T16:13:10.818+02:00Görsel Egitim VideolariFarkli konularda bir cok webcast in bulundugu bir egitim sitesi. Kesinlikle ziyaret edilmesini öneririm.<br /><br /><a href="http://dimecasts.net">http://dimecasts.net</a>Tolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com0tag:blogger.com,1999:blog-4202207820054725239.post-78137283256674886902009-04-03T10:16:00.002+02:002009-04-03T10:17:31.441+02:00James Kovacs, her yazilimcinin okumasi gereken kitaplar hakkinda güzel bir liste hazirlamis.<br /><br /><a href="http://www.jameskovacs.com/blog/TheBookshelf.aspx">http://www.jameskovacs.com/blog/TheBookshelf.aspx</a>Tolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com0tag:blogger.com,1999:blog-4202207820054725239.post-5946012749545310262009-01-09T17:05:00.002+01:002009-01-09T17:11:40.930+01:00Explore the Data Access Options in Visual Studio 2008VS.2008 icerisinde data erisim yöntemlerinin anlatildigi güzel bir makale...<br /><br /><a href="http://www.devx.com/codemag/Article/39751/1954">http://www.devx.com/codemag/Article/39751/1954</a><br /><br />Microsoft ORM cözümü olan ADO.NET Entity Framework'un örneklerle anlatildigi 4 bölümden olusan güzel bir makale serisi.<br /><br /><a href="http://www.scip.be/index.php?Page=ArticlesNET12">http://www.scip.be/index.php?Page=ArticlesNET12</a>Tolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com0tag:blogger.com,1999:blog-4202207820054725239.post-58915864891810730122008-10-21T17:17:00.002+02:002008-11-28T16:34:52.456+01:00.NET -> Web.Config dosyasinda upload dosya büyüklügünü ayarlamakAsp.Net yada web service uygulamalarinda default olarak belirlenen 4 MB dan daha büyük bir dosya upload edilemek istediginde asagidaki hata olusur.<br /><br />"There was an exception running the extensions specified in the config file.<br />--> Maximum request length exceeded."<br /><br />Bu problemi icin web.config dosyasi icerisine <system.web> elementleri icerisine, asagidaki kod satirlarini ekleyerek cözebiliriz.<br /><br /><span><span class="S10"><</span>httpRuntime<br /><span class="S0"> </span>executionTimeout<span class="S10">=</span><span class="S6">"1200"</span><span class="S0"> </span><br /><span class="S0"> </span>maxRequestLength<span class="S10">=</span><span class="S6">"10240"</span><span class="S0"> </span><br /><span class="S0"> </span>useFullyQualifiedRedirectUrl<span class="S10">=</span><span class="S6">"false"</span><span class="S0"> </span><br /><span class="S0"> </span>minFreeThreads<span class="S10">=</span><span class="S6">"8"</span><br /><span class="S0"> </span>minLocalRequestFreeThreads<span class="S10">=</span><span class="S6">"4"</span><span class="S0"> </span><br /><span class="S0"> </span>appRequestQueueLimit<span class="S10">=</span><span class="S6">"100"</span><span class="S0"> </span><span class="S10">/></span></span><br /><br />Burada belirtilen maxRequestLength="10240" degeri ile 10 MB kadar dosyalarin upload edilebilcegini ayarlamis oluyoruz.<br /><br /></system.web>Tolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com0tag:blogger.com,1999:blog-4202207820054725239.post-30939227796508592022008-10-14T21:28:00.004+02:002008-10-16T21:16:51.400+02:00.NET -> .Net siniflarindan XSD schema dosyasi yaratmak.XML dosyalarinin dogrulanmasinda XSD dosyalarinin kullanildigindan <a href="http://tolgayaramis.blogspot.com/2008/10/xml-dosyalarinin-gecerliligini-schema_14.html">bir önceki</a> yazida bahsetmistim. Bir assembly icerisindeki bir yada birden fazla sinifdan XSD schema dosyasi yaratmak icin, .NET Framework icerisinde bulunan "xsd.exe" yardimci uygulamasi kullanilabilir.<br /><br />Nasil kullanildigina dair bir örnek verirsek.<br /><br /><span style="font-weight: bold;">xsd C:\TestApplication.exe /t:Product</span><br /><br />Burdaki ilk paremetre assembly nin oldugu path bilgisidir. /t: anahtarindan sonra belirtilen deger de assembly icinde schema dosyasi olusturulmak istenen sinif ismidir.<br /><br />Bu sekilde Product sinifi icin XSD dosyasi uygulama ile ayni dizinde yaratilmis olur.<br /><br />Olusturulan bu dosya özellikle deserialize islemleri yapilmadan önce, XML dosyanin iceriginin dogrulanmasinda kullanilir.Tolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com0tag:blogger.com,1999:blog-4202207820054725239.post-61487348746527731042008-10-14T17:04:00.015+02:002008-10-14T21:27:57.767+02:00XML dosyalarinin gecerliligini Schema dosyasi kullanarak kontrol etmek (Validate an XML Document using Schema)Bir XML dosyanin icerigini kontrol etmek icin schema dosyalarindan faydalanabiliriz.<br />XML schema dosyasi, XML dosyasinin iceriginin sahip olmasi gereken kurallari tanimlayan, uzantisi XSD (XML Schema Definition) olan dosyalardir.<br /><br />XSD icerisnde bahsedilen kurallar sunlardir;<br /><br />- XML dosyasi icinde var olmasi beklenen element ve attibute'ler, bunlara ait olan data tipleri.<br />- XML dosyasinin yapisi. Elementler ve bu elementlere ait olan child element'ler.<br />- Child elementlerin sayisi ve sirasi.<br />- Element'lerin bir text degere sahip olup olmayacagi.<br /><br />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.<br /><br />Asagidaki örnekde ProductCatalog.xml dosyasinin, ProductCatalog.xsd dosyasi kullanilarak nasil validate edilecegini görelim. Bu iki dosyanin icerigi asagidaki gibi olacakdir.<br /><br /><span style="font-weight: bold;">ProductCatalog.xml:</span><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_MTp0oMkxbNQ/SPS4Z2nf6EI/AAAAAAAAAdY/ex04PTGmVYU/s1600-h/1.PNG"><img style="cursor: pointer;" src="http://1.bp.blogspot.com/_MTp0oMkxbNQ/SPS4Z2nf6EI/AAAAAAAAAdY/ex04PTGmVYU/s400/1.PNG" alt="" id="BLOGGER_PHOTO_ID_5257029419345635394" border="0" /></a><br /><br /><span style="font-weight: bold;">ProductCatalog.xsd:</span><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_MTp0oMkxbNQ/SPS427pUfqI/AAAAAAAAAdg/d3bDY9LV8cE/s1600-h/2.PNG"><img style="cursor: pointer; width: 418px; height: 310px;" src="http://2.bp.blogspot.com/_MTp0oMkxbNQ/SPS427pUfqI/AAAAAAAAAdg/d3bDY9LV8cE/s400/2.PNG" alt="" id="BLOGGER_PHOTO_ID_5257029918911659682" border="0" /></a><br /><br />Asagidaki örnek consol uygulamasinda XML dosyanin gecerliligini XSD kullanarak nasil denetlicegimizi görelim:<br /><br />using System;<br />using System.Xml;<br />using System.Xml.Schema;<br /><br />public class ValidateXml<br /> { <br /> private static void Main()<br /> {<br /> // XmlValidator sinifimiz icerisinde XMLReader sinifi kullanilarak dogrulama islemi yapilacak.<br /> XmlValidator validator = new XmlValidator();<br /> Console.WriteLine("ProductCatalog.xml dogrulama islemi...\n");<br /><br /> //Xml ve Xsd dosyalari uygulamamizin calistigi dizinde.<br /> bool success = validator.ValidateXml("ProductCatalog.xml", "ProductCatalog.xsd");<br /> if (!success) <br /> Console.WriteLine("XML dosyasi icerigi dogrulanamadi!"); <br /> else <br /> Console.WriteLine("XML dosyasi icerigi uygun."); <br /><br /> Console.ReadLine();<br /> }<br /> }<br /><br />public class XmlValidator<br /> { <br /> private bool failed;<br /><br /> public bool Failed<br /> {<br /> get {return failed;}<br /> }<br /><br /> public bool ValidateXml(string xmlFilename, string schemaFilename)<br /> { <br /> // Schema tipinde dogrulama (validation) yapacagimizi tanimliyoruz.<br /> XmlReaderSettings settings = new XmlReaderSettings();<br /> settings.ValidationType = ValidationType.Schema;<br /><br /> // Schema dosyasi yükleniyor..<br /> XmlSchemaSet schemas = new XmlSchemaSet();<br /> settings.Schemas = schemas;<br /> // ilk parametre de kendimiz bir target namespace girebiliriz validate islemi icin<br /> // null olarak birakildiginda "targetNamespace" degeri schema dosyasindan alinir.<br /> schemas.Add(null, schemaFilename);<br /> <br /> // Dogrulama yapilirken hata olustugunda calisacak event handler tanimlaniyor.<br /> settings.ValidationEventHandler += ValidationEventHandler;<br /> <br /> //Schema ayarlari ile birlikte xml dosyasi okunmak üzere XMLReader nesnesi olusturuluyor.<br /> XmlReader validator = XmlReader.Create(xmlFilename, settings); <br /> <br /> failed = false;<br /> try<br /> {<br /> // XML dosyasi icerisindeki tüm datalar okunuyor.<br /> while (validator.Read())<br /> {}<br /> }<br /> catch (XmlException err)<br /> {<br /> // XML dosyasi icersinde gecersiz bir karakter oldugunda yada acilmis bir tag dogru sekilde kapatilmadiginda hataya düser.<br /> Console.WriteLine(err.Message);<br /> failed = true;<br /> }<br /> finally<br /> {<br /> validator.Close();<br /> }<br /><br /> return !failed;<br /> }<br /><br /> private void ValidationEventHandler(object sender, ValidationEventArgs args)<br /> {<br /> failed = true;<br /> // Dogrulama (Validation) hatasini ekrana yazdir.<br /> Console.WriteLine("XML Dogrulama Hatasi: " + args.Message);<br /> }<br /> }<br /><br /><br />Uygulamayi calistirdigimizda console ekraninda asagidaki ciktiyi aliriz;<br /><br /><span style="font-weight: bold;">ProductCatalog.xml dogrulama islemi...<br /><br />XML Dogrulama Hatasi: The element 'product' has invalid child element 'description'. List of possible elements expected: 'productPrice'.<br />XML Dogrulama Hatasi: The element 'product' has invalid child element 'description'. List of possible elements expected: 'productPrice'.<br />XML dosyasi icerigi dogrulanamadi!</span><br /><br /><br />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.<br /><br />ProductCatalog.xsd dosya icerisinden<br /><br /><span><span class="S10"><</span>xsd<span class="S10">:</span>element<span class="S0"> </span>name<span class="S10">=</span><span class="S6">"productPrice"</span><span class="S0"> </span>type<span class="S10">=</span><span class="S6">"xsd:decimal"</span><span class="S10">/></span></span><br /><br />satirini sildigimizde, XML dosyanin iceriginin kullanilan schema dosyasina uygun oldugunu ve dogrulama isleminin hatasiz sekilde tamamlandigini görürüz.<br /><br />Kaynak: Apress Visual C# 2005 RecipesTolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com0tag:blogger.com,1999:blog-4202207820054725239.post-69599725674046692772008-10-13T00:31:00.009+02:002008-10-14T16:06:31.959+02:00.NET -> Dosya yolu üzerinde "Path" static sinifi ile islemlerSystem.IO namespace'i altinda bulunan static "Path" sinifi ile dosya yada dizin bilgisi iceren string ifadeler üzerinde islemler yapabiliriz. Yararli metodlardan bazilari;<br /><br />- ChangeExtension: Dosyanin var olan uzantisi degistirilir. Eger yeni uzanti belirtilmemisse, var olan uzanti silinir.<br />- GetDirectoryName: Dosyanin bulundugu dizin ismini döndürür.<br />- GetFileName: Belirtilen dosyayolundan, dosya ismini geri döndürür.<br />Console.WriteLine(Path.GetFileName(@"..\System\myFile.txt"));<br />>> myFile.txt<br /><br />- GetFileNameWithoutExtension: Dosya ismini uzantisi olmaksizin döndürür.<br />- GetFullPath: Paremetre olarak verilen string sadece dosya ismi barindiriyorsa, uygulamanin calistigi dizin bilgisi ile dosya yolu olusturur. Örnegin uygulama C:\Test dizininde calisiyor olsun.<br /><br />Console.WriteLine(Path.GetPathRoot("myfile.txt"));<br />>> C:\Test\myFile.txt<br /><br />- GetPathRoot: Dosya yolunun root dizinini döndürür.<br />Console.WriteLine(Path.GetPathRoot(@"C:\Temp\myfile.txt"));<br />>> C:\<br /><br />- HasExtension: Dosya yolu uzanti ile sonlaniyorsa True döndürür.<br />- Combine: iki string ifadeyi birlestirir.<br />Console.WriteLine(Path.Combine(@"C:\Temp", "myfile.txt"));<br />>> C:\Temp\myfile.txt<br /><br />- GetInvalidFileNameChars: Dosya isimlerinde gecersiz olacak karakterlerin listesini char[] array olarak geri döndürür.<br />- GetInvalidPathChars: Dosya yolu icin gecersiz olan karakterleri char[] array olarak geri döndürür.<br />- GetTempPath: Sistemin temp dizinini almak icin kullanilir.<br />- 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.Tolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com0tag:blogger.com,1999:blog-4202207820054725239.post-49155105505516308692008-08-08T09:21:00.000+02:002008-08-08T09:22:42.850+02:00Advantages and disadvantages of using typed datasets<p><b>Advantages of typed datasets:</b></p> <ul><li> <p> <b>Compile-time type checking</b>— Reduces runtime errors by having members based on the data's actual schema as opposed to untyped datasets, where you call a generic function and can pass an object of any type. </p> </li><li> <p> <b>Schema-specific members</b>— Typed datasets define properties for getting and setting values where the property name is the same as the underlying column name. They also define properties for determining if the column is null and methods for searching the table via primary key(s). </p> </li><li> <p> <b>Data binding support in VS.NET—</b> Only useful with Windows Forms applications, but bears mentioning if you plan on doing development based entirely on .NET in addition to the mixed-mode programming that is the focus of this book. </p> </li><li> <p> <b>Intellisense support</b>— When using untyped datasets, you have to know beforehand the names of the columns and the types that the respective columns work with. With typed datasets, as soon as you enter the name of the type, Intellisense displays its members, thereby saving you development and debugging time. </p> </li></ul> <p><b>Disadvantages of typed datasets:</b></p> <ul><li> <p> <b>Versioning</b>— Typed datasets can actually increase development time in situations where your schema changes, because you'll need to update the typed dataset information manually. This is obviously the same problem we've battled for years with <tt>CRecordset</tt> classes—having to modify them manually when the underlying schema changes. </p> </li><li> <p> <b>Tightly coupled</b>— In its current design, typed datasets are difficult to extend and can't be modified (as they're auto-generated each time the project is built). In addition, they force a tight coupling of client to data access code, which might not be best for all situations</p></li></ul>Kaynak: InformITTolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com0tag:blogger.com,1999:blog-4202207820054725239.post-74748517370266789992008-06-02T10:26:00.005+02:002008-06-02T10:44:00.500+02:00Sql Server 2005 - Timeout problemiSql Server 2005 de birden fazla index'i ve data yogunlugu olan bir tablonun tasariminda degisiklik yapmak istedigimde ( var olan bir varchar alanin büyüklügü degistirildiginde), asagidaki time out hatasi ile karsilastim.<br /><br /><span style="font-weight: bold;">- Unable to modify table. </span> <span style="font-weight: bold;">Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.<br /><br /></span>Cözüm olarak table designer transaction timeout süresini yükseltmek gerekli. Bunun icin, Sql Server Management Studio da;<br /><br />Tools > Options > Designers > Table and Database Designers<br /><br /><div style="text-align: center;"><div style="text-align: left;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_MTp0oMkxbNQ/SEOylAafVqI/AAAAAAAAAXM/NCH0JgEqpqU/s1600-h/SqlServerTimeOut.jpg"><img style="cursor: pointer;" src="http://bp0.blogger.com/_MTp0oMkxbNQ/SEOylAafVqI/AAAAAAAAAXM/NCH0JgEqpqU/s400/SqlServerTimeOut.jpg" alt="" id="BLOGGER_PHOTO_ID_5207201943006434978" border="0" /></a></div><br /><div style="text-align: left;"><span style="font-weight: bold;">"Transaction time-out after" </span>alaninda default olarak gelen 30 saniyelik degeri yükseltirsek problemin üstesinden gelebiliriz.<br /><br /><br /></div></div>Tolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com0tag:blogger.com,1999:blog-4202207820054725239.post-40892874871295910042008-05-14T12:11:00.002+02:002008-05-14T12:12:55.502+02:00Sql Server PerformansSql Server Optimizasyonu ile ilgili güzel bir makale...<br /><br /><br /><a href="http://harriyott.com/2006/01/sql-server-performance-tips.aspx">http://harriyott.com/2006/01/sql-server-performance-tips.aspx</a>Tolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com0tag:blogger.com,1999:blog-4202207820054725239.post-5204992266569248062008-03-25T12:13:00.002+01:002008-03-25T12:19:32.211+01:00Asp.Net uygulamalarinin Application Pool kullanilarak izole edilmesiAsp.Net uygulamalarinin izolasyonu icin,<br /><br />Uygulama Havuzları (Application Pool) kullanılabilir. Her uygulama için bir Uygulama Havuzu oluşturulur. Hangi havuzun sistem kaynaklarının ne kadarını kullanabileceği ayarlanır. <p>Bir Asp.NET uygulasının hareket kabiliyetini sınırlamak için aşağıdaki işlemler yapılabilir;</p> <ul><li>Uygulama için yeni bir Windows kullanıcısı oluşturulur. </li><li>Yeni kullanıcı, Users grubundan çıkartılır IIS_WPG grubuna eklenir. </li><li>Uygulama için yeni bir Uygulama Havuzu oluşturulur. </li><li>Uygulama Havuzunun Identity ayarı değiştirilir yeni kullanıcı üzerinden çalışması sağlanır. </li><li>Uygulamanın yeni Uygulama Havuzunu kullanması sağlanır. </li><li>Uygulamanın çalıştığı klasörlere kullanıcı için yeterli ve gerekli izinler verilir. </li><li>Windows TEMP klasörüne (Örn: C:\WINDOWS\Temp), IIS_WPG grubu için veya yeni kullanıcı için yazma yetkisi verilir. </li><li>Registry'de gerekli tüm dallara yazma yetkisi verin.</li></ul> <p>Makalede anlatılan türde sınırlamalar yapıldığında;</p> • Uygulamayı hack’leyen bir saldırgan, sistem genelini etkileyemez. Yalnızca uygulamanın kendi kaynaklarını tüketir. Yalnızca o uygulama çöker.<br />• Yazılan kötü ve performanssız kodlardan dolayı, sistem geneli etkilenmez.<br /><br /><br />Kaynak: blog.vukuf.comTolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com3tag:blogger.com,1999:blog-4202207820054725239.post-58952028969605639952008-03-25T12:11:00.002+01:002008-03-25T12:16:57.890+01:00Ajax kullanmanin avantaj ve dezavantajlariGüzel bir karsilastirma:<br /><br /><a href="http://blog.vukuf.com/2007/10/ajaxn-avantajlar-ve-dezavantajlar.html">http://blog.vukuf.com/2007/10/ajaxn-avantajlar-ve-dezavantajlar.html</a>Tolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com0tag:blogger.com,1999:blog-4202207820054725239.post-53087800659833932862008-03-18T11:47:00.004+01:002008-03-18T12:07:15.920+01:00SQL Performans - NOT EXISTS yerine JOIN kullanarak perfomans artisi saglamak.Iki iliskili tablo arasinda kayitlarin varligi sorgulanirken sql de "not exists" ifadesi kullaniliriz. Bu nekadar pratik ve yazimi kolay gözüksede performans acisindan büyük sorun cikarmaktadir.<br /><br />Ve bu performans problemi üst tablolardaki join sayisi arttikca daha da büyümektedir. Bu sorunu cözmek icin "not exists" ifadesi yerine yazacagimiz sorguda JOIN kullanabiliriz.<br /><br />Örnek olarak;<br /><span style="font-style: italic;font-size:100%;" ><br />SELECT dk.VKopf_Nr<br />FROM Dossier_Kopf dk INNER JOIN<br /> Dossier_Verfahren dv ON DV.Ref_Kopf = DK.VKopf_Nr <br />WHERE dk.Ref_Instanz='BM' and dk.VKopf_Sprache = 'D'<br /> and DV.Ref_PSchritt IN (6,67)<br />and <span style="font-weight: bold;">not exists</span> (<br />select ref_dkopf from dbo.Verfahren_Rechtsfolge<br />where ref_dkopf = dk.VKopf_Nr<br />)<br /><br /></span><span style="font-size:100%;">Yukardaki sorgununu tamamlanma süresi:<span style="font-weight: bold;"> 00:01:34</span><br /><br />Bu sorguyu birde JOIN kullarak yazalim.<br /><br />SELECT dk.VKopf_Nr<br />FROM Dossier_Kopf dk INNER JOIN<br /> Dossier_Verfahren dv ON DV.Ref_Kopf = DK.VKopf_Nr<br /> <span style="font-weight: bold;">LEFT OUTER JOIN</span> dbo.Verfahren_Rechtsfolge VR<br /> ON DV.Ref_Kopf = VR.ref_dkopf<br />WHERE dk.Ref_Instanz='BM' and dk.VKopf_Sprache = 'D' <br /> and DV.Ref_PSchritt IN (6,67)<br />and VR.ref_dkopf is null<br /><br /></span><span style="font-size:100%;">Join kullanarak yazilan sorgununu tamamlanma süresi: <span style="font-weight: bold;">00:00:01</span><br /><br /><br />Elde ettigimiz sonuc her iki sorgudada aynidir fakat görüldügü gibi sorgularin calisma zamanlari arasinda cok büyük fark olusur.<br /><br />Sonuc olarak JOIN ifadesi kullanarak yazilan sorgular bize cok büyük bir performans artisi saglamaktadir.<br /></span><span style="font-size:100%;"><br /><br /><br /><br /><br /></span>Tolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com0tag:blogger.com,1999:blog-4202207820054725239.post-16142476948018027702008-03-05T11:34:00.003+01:002008-03-05T11:37:38.242+01:00Connection Pooling and the "Timeout expired" exception FAQÖzellikle web tabanli, ayni anda birden fazla kullanicisi olan uygulamalarda karsilasilan connection pooling ve connection timeout problemlerine karsi yazilmis bir FAQ makalesi.<br /><br /><br /><a href="http://blogs.msdn.com/angelsb/archive/2004/08/25/220333.aspx">http://blogs.msdn.com/angelsb/archive/2004/08/25/220333.aspx</a>Tolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com0tag:blogger.com,1999:blog-4202207820054725239.post-33334593824143349582008-02-26T11:12:00.002+01:002008-02-26T11:15:14.422+01:00Sql Server - Sa şifresini değistirmekiki yöntem de kullanilabilir.<br /><br />1) USE [master]<br />GO<br />ALTER LOGIN [sa] WITH DEFAULT_DATABASE=[master],<br />DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=ON, CHECK_POLICY=ON<br />GO<br />USE [master]<br />GO<br />ALTER LOGIN [sa] WITH PASSWORD=N'yeni_sifre' MUST_CHANGE<br />GO<br /><br />2) start > run > cmd...<br /> OSQL -S <your_servername_goes_here> -E<br /> 1> EXEC sp_password NULL, '</your_servername_goes_here>yeni_sifre<your_servername_goes_here>', 'sa'<br /> 2> GO</your_servername_goes_here>Tolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com1tag:blogger.com,1999:blog-4202207820054725239.post-70230114394474108752008-02-05T15:05:00.000+01:002008-02-05T15:51:12.397+01:00Sql Server - Identity Column resetlemekSql Server'da bir tablo icerisinde bulunan, identity kolonu resetlemek yada identity baslangic numarasini vermek icin asagidaki DBCC ifadesi kullanilabilir.<br /><br />DBCC (Database Console Commands) CHECKIDENT ifadesinin son parametresini istenilen baslangic degeri atilir. "0" degeri vererek identity kolonu resetleyelim.<br /><br />USE TestDB<br />GO<br /> DBCC CHECKIDENT (TestTable, RESEED, 0)<br />GO<br /><br /><br />DBCC (Database Console Commands) in diger ifadelerinin listesini ve aciklamasini asagidaki linkden bulabilirsiniz.<br /><br /><a href="http://msdn2.microsoft.com/en-us/library/aa258281.aspx">http://msdn2.microsoft.com/en-us/library/aa258281.aspx</a>Tolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com0tag:blogger.com,1999:blog-4202207820054725239.post-68689226950810216562008-01-22T15:28:00.000+01:002008-01-28T08:01:03.028+01:00TDD (Test Driven Development) ile ilgili güzel bir makaleCihat Altuntas sitesini begenerek takip ettigim yazilimcilardan biri.<br />Özellikle refactoring ve TDD ile ilgili örneklerle pekistirdigi güzel makaleleri var. Bunlardan bir tanesini sizin ile paylasmak istedim. TDD nin örnek bir uygulama ile güzel bir sekilde anlatildigi bir makale. Asagidaki linkden makaleye ulasabilirsiniz.<br /><br /><a href="http://www.cihataltuntas.com/?p=37"></a><a href="http://www.cihataltuntas.com/?p=37">Test Driven Development</a>Tolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com0tag:blogger.com,1999:blog-4202207820054725239.post-61576203578195627632008-01-22T11:14:00.000+01:002008-01-22T11:15:22.898+01:00Oracle - PL-SQL ile Dosya Boyutunu bulmaCREATE OR REPLACE FUNCTION flength (<br />location_in IN VARCHAR2,<br />file_in IN VARCHAR2<br />)<br />RETURN PLS_INTEGER<br /><br />IS <br />TYPE fgetattr_t IS RECORD (<br />fexists BOOLEAN,<br />file_length PLS_INTEGER,<br />block_size PLS_INTEGER<br />); <br /><br />fgetattr_rec fgetattr_t;<br />BEGIN<br />UTL_FILE.fgetattr (<br />location => location_in,<br />filename => file_in,<br />fexists => fgetattr_rec.fexists,<br /><br />file_length => fgetattr_rec.file_length,<br />block_size => fgetattr_rec.block_size<br />);<br />RETURN fgetattr_rec.file_length;<br />END flength;<br />/Tolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com0tag:blogger.com,1999:blog-4202207820054725239.post-83011116455285773722008-01-22T11:07:00.000+01:002008-01-22T11:14:15.040+01:00SQL Server - T-Sql ile Dosya boyutunu bulmaCREATE FUNCTION udf_GetFileSize (@filename varchar(1000))<br /> returns bigint<br />as<br />BEGIN<br /> DECLARE @FS int<br /> DECLARE @OLEResult int<br /> DECLARE @FileID int<br /> DECLARE @Size bigint<br /> DECLARE @Flag bigint<br /> <br /> Set @size =0<br /> Set @Flag =0<br /><br /> EXECUTE @OLEResult = sp_OACreate 'Scripting.FileSystemObject', @FS OUT<br /> EXECUTE @OLEResult = sp_OAMethod @FS, 'GetFile', @FileID OUT,@filename<br /><br /> IF @OLEResult <> 0 <br /> begin<br /> set @Flag =-1<br /> end<br /> else<br /> begin<br /> EXECUTE @OLEResult = sp_OAGetProperty @FileId,'Size', @Size OUT<br /> IF @OLEResult <> 0 <br /> begin<br /> set @Flag =-2<br /> end<br /> end<br /><br /> EXECUTE @OLEResult = sp_OADestroy @FileID<br /> EXECUTE @OLEResult = sp_OADestroy @FS<br /><br /> if @flag <> -1 and @flag <> -2<br /> begin<br /> set @flag = @size<br /> end<br /> return @flag<br /> END<br /><br />'Kullanimi<br />select dbo.udf_GetFileSize ('c:\temp\test.txt')Tolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com0tag:blogger.com,1999:blog-4202207820054725239.post-74493198032219004852008-01-16T11:04:00.000+01:002008-01-31T09:18:08.874+01:0012 Agile Principles<table style="font-family: arial;" class="tbl" width="100%"><tbody><tr> <th><br /></th></tr> <tr> <td> <ol><li><strong>Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.</strong><br />Proje başlangıcından hemen bir kaç hafta sonra sadece bir kısmı çalışan proje yayınlanır ve her bir modül bittikçe proje yayına geçriilir.Bir kaç haftalık periyodlarla bu düzenleme gerçekleştir,ta ki müşteri kendi en temel ihtiyaçlarını karşılayana kadar.Bundan itibaren,müşteri projeyi kullanmaya başlar.Burada önemli olan nokta bizim belirlediğimiz periyodlarla(bu 2 veya 3 hafta olabilir) projenin çalışan kısmını müşteriye sunmak, yayına sokmaktır.Böylelikle müşteriden sürekli geri dönüşüm alınacağından dolayı,projede hata olasılığı azaltılacak,müşteriyle yazılımcı arasında kuvvetli bir bağ kurulacaktır. </li><li><strong>Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.</strong><br />Bir yazılım ekibi yazılım gereksinimlerinin değişmesine açık olmalıdır.Öyle bir sistem kurmalıdır ki, gerçekleştirilen bir gereksinim değiştiğinde projedeki düzeltilen yerler çok az olmalıdır.Yani proje genişleyebilir ve değiştirilebilir olmalıdır. </li><li><strong>Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter time scale.<br /></strong>Çalışan proje belli aralıklarla müşteriye teslim edilmelidir.Bu süre bir kaç hafta veya ay olabilir.Müşteriye çok büyük bir proje verilmemelidir.Bunun yerine ufak ufak ama zamanla kapsamı genişlemiş parçalar teslim edilmelidir. </li><li><strong>Businesspeople and developers must work together daily throughout the project.</strong><br />Projeyi talep eden,Projeye maddi yatırım yapan firma,sponsorlar,proje yöneticisi,takım lideri ve yazılımcılar birbirleriyle çok sıkı ilişki içerisinde olmalı ve belli ve kısa aralıklarla görüşmeler yapmalıdırlar.Bir yazılım projesi için şu yanlış bir yöntemdir;Müşteri projeyi yazılımcılara devreder ve yazılımcılar proje bitiminde müşteriye yapılanları gösterir.Bu kesinlikle yanlış bir yöntemdir,onun yerine Agile takımlar,müşteri ve diğer kişilerle proje süresince sıkı sıkıya ilişki içerisinde olmalıdırlar. </li><li><strong>Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.</strong><br />Bir projede en önemli faktör insandır yani yazılım mühendisidir.Metodlar,tasarımlar,mekan vs. gibi etkenler çok önemli olsa da yazılım mühendisi bunların içinde en fazla öneme sahip olandır.O yüzden yazılımcıların motivasyonları kaybedilmemelidir. Ücretleri düzenli verilmeli,kafalarını meşgul eden durumlar ortadan kaldırılmalı ve yazılımcıya kesinlikle güvenilmelidir.Yazılımcıya rahat bir şekilde çalışacağı ortam sağlanmalıdır.Kısacası yazılım mühendisinin,yazılımı düşünmesini etkileyecek etkenler ortadan kaldırılmalıdır. </li><li><strong>The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.</strong><br />Bir projede emeği geçen bütün kişiler(Yazılım mühendisleri,proje yönetcileri,müşteriler vs.) sık sık yüzyüze görüşmelidirler.Böylelikle insanlar birbirlerini daha iyi anlamış ve ortaya az hatalı ürünler koyulmuş olur.Dökümantasyon ve yazılı iletişim sadece sadece ihtiyaç duyulduğunda yapılmalıdır.Aksi durumda herşey yüzyüze görüşülmelidir. </li><li><strong>Working software is the primary measure of progress.</strong><br />En önemli unsur yazılımın çalışan kısmıdır.Bir projede yazılım alt yapısı çok iyi kurulmuş olabilir,dökümantasyon çok iyi yapılmış,en önemli kodlar türlü zorluklarla yapılmış olabilir.Her ne kadar bunlar önemli olsada birinci öncelik müşterinin ihtiyaçlarını karşılan,çalışan proje kısmıdır.Bir projede ihtiyaçların %30'u karşılandı ise projenin %30'u bitmiş demektir. </li><li><strong>Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.</strong><br />Bir yazılım ekibi kısa mesafe koşucusu gibi bir süre hızlı bir şekilde koşup daha sonra tükenmez.Onun yerine uzun mesafe koşucuları gibi,sürekli sabit hızla gidebilecek kadar hızlı giderler.Hızlı gidip de yorgun düşecekler ise,bu durumda hızlı gitmezler.Hızlı gerçekleştirilen projelerin sonu hiç de iyi olmamaktadır,ilk anda her ne kadar çalışan parçalar elde ediliyor olsada,zaman içerisinde yapılan şeyin aslında ne kadar yanlış olduğu anlaşılmaktadır.Bir yazılım mühendisinin bir sonraki gün ki enerjisi bugünden kesnlikle ama kesinlikle çalınmamalı,yazılım mühendisine bir anda çok yük bindirip,100 metre koşucusu gibi koşması beklenmemelidir. </li><li><strong>Continuous attention to technical excellence and good design enhances agility.</strong><br />Bir yazılım takımı yaptığı yazılımlarda maksimum kaliteyi hedefler.Bunu gerçekleştirmek için teknik anlamda en iyi ve en güzel mimariyi kullanır.Yalnız bunu yaparkende yazılımın karmakarışık olmasına izin vermez.Yapılan yazılımda önemli olan onun açık(kolay anlaşılır) ve sağlam olmasıdır. </li><li><strong>Simplicitythe art of maximizing the amount of work not doneis essential.</strong><br />Yazılım takımı yazılımı gerçekleştiriken bugünün gereksinimlerine odaklanır ve bugünün problemlerini en basit ve en tutarlı,en kaliteli ve en değiştirilebilir bir biçimde gerçekleştirir.Bugünün işini yaparken yarını düşünerek yapmaz.Yaptığı yazılımlarda kaliteyi en üst düzeyde tuttuğu için yarın karşılacak bir gereksinim sisteme sorunsuz bir biçimde dahil edilebilinecektir(entegre edilebilecektir). </li><li><strong>The best architectures, requirements, and designs emerge from self-organizing teams.</strong><br />Yazılım ekibi bütün sorumluluklarda ortaktırlar.Yani bir kişi test işinde görevlendirilip,biri veri tabanı işinde görevlendirilip,biri de arayüz tasarlamada görevdirilmez.Bu yanlış bir tutumdur.Takım içiçe olmalı ve herkes her adımda bulunmalıdır.Bazı takım üyelerinin özellikleri bir iş konusunda daha yeterli ise bu durumda belki o kişiye ilgili konuda daha fazla görev verilebilir ama muhakkak diğer takım elemanları da o işe dahil edilirler.Böylelikle bütün problemler yazılım takımının bir elemanı tarafından değil,tamamı tarafından çözülmüş olur. </li><li><strong>At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.</strong><br />Yazılım ekibi belli aralıklarla toplantılar yaparak, kaliteyi geliştirmek adına yöntemlerinde,durumlarında bazı değişiklikler yapabilirler.Zira yazılım ekibinin ortamı(yazılım ortamı,fiziksel ortamı,yazılımda gerçekleştirilecek bölümler) değişeceğinden,yazılım ekibide bu değişime ayak uydurmalıdır.O yüzden takımın davranışları,rolleri, poziyonları, görevleri belli aralıklarla yapılan görüşmelerde yeniden gözden geçirilmelidir.</li></ol><span style="font-style: italic;">Kaynak: </span><br /><span style="font-style: italic;" id="ctl00_ContentPlaceHolder1_gvMakaleler_ctl03_lblEgitmen">Nurettin Şimşek</span><br /><span style="font-style: italic;">msegitim.net</span><br /></td></tr></tbody></table>Tolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com0tag:blogger.com,1999:blog-4202207820054725239.post-36122467189338430262007-11-26T17:45:00.000+01:002007-11-26T17:48:01.189+01:00_123 TSQL functionsCok yararli T-SQL fonksiyonlarinin oldugu bir link.<br />Download edileblir zip dosya sitede bulunmakda.<br /><br /><a href="http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=502&lngWId=5">http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=502&lngWId=5</a>Tolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com0tag:blogger.com,1999:blog-4202207820054725239.post-55041957079390716442007-11-13T08:40:00.000+01:002007-11-13T09:09:19.008+01:00Asp.Net - Jscript ile sayfa üzerindeki bir kontrolü gizlemek (invisible)Örnegimizde bir dropdownlist ve bir linkbutton kontrolü kullaniyoruz.<br /><br />CodeBehind sayfamizda öncelikle drowpdownlist kontrolümüzün attribute'ne onchange event'nde hangi JScript fonksiyonun cagrilcagini belirtiyoruz.<br /><br />ddlNation.Attributes("onchange") = "javascript:checkSelectedNation(this, " & DBConstants.Land.SCHWEIZ & ");"<br /><br /><br />checkSelectedNation fonksiyonu parametre olarak ddlNation (dropdownlist) kontrolünü ve birde kodumuz icinde tanimlamis oldugumuz constant bir degeri aliyor.<br /><br />aspx sayfamiz icine yazacagimiz JScript kodu ise söyle olacak:<br /><br /><script language="javascript" type="text/javascript"><br /> function checkSelectedNation(dropDown, schweizID)<br /> { <br /> var selectedVal = dropDown.value; <br /> var btnGebOrt = document.getElementById('<%=btnSelCHGebOrt.ClientID%>'); <br /> <br /> if (selectedVal == schweizID) <br /> { <br /> btnGebOrt.style.display="";<br /> }else<br /> { <br /> btnGebOrt.style.display="none";<br /> } <br /> }<br /><br /></script>function checkSelectedNation(dropDown, schweizID)<br />{<br /> var selectedVal = dropDown.value;<br /> var btnGebOrt = document.getElementById('<%=btnSelCHGebOrt.ClientID%>');<br /><br /> if (selectedVal == schweizID)<br /> {<br /> btnGebOrt.style.display="";<br /> }else<br /> {<br /> btnGebOrt.style.display="none";<br /> }<br />}<br /><br />----<br /><br />dropdownlist kontrolünde secilen deger bizim yolladiigmiz constant degere esit ise btnSelCHGebOrt button kontrolü görülecek. Aksi durumda ise gizlenecek.<br /><br />Burda önemli bir durum var. Örnegin sayfa ilk yüklenirken DB den gelen "ddlNation" in degerine göre, btnSelCHGebOrt konrolümüzü yine gizlicez yada göstericez. Bu durumda btnSelCHGebOrt kontrolünün visible özelligini kullanirsak, false set ettigimiz durumda, daha sonra kullanacagimiz JScript fonksiyonumuz calismicakdir. Bunuun yerine ilk yüklemede codebehind' da söyle bir kullanim vardir.<br /><br />Kontolü gizlemek icin:<br /><br />btnSelCHGebOrt.Style.Item("display") = "none"<br /><br />Kontolü göstermek icin:<br />btnSelCHGebOrt.Style.Item("display") = ""Tolga Yaramışhttp://www.blogger.com/profile/05338089505819548726noreply@blogger.com0