<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-3430704453605558775</id><updated>2009-12-29T17:55:59.942+02:00</updated><title type='text'>YAZILIM ÇÖZÜMLERI</title><subtitle type='html'>Her türlü yazilim problemlerini veya yenilikleri tartişma adresi.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://nurtenmehmed.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default?orderby=updated'/><link rel='alternate' type='text/html' href='http://nurtenmehmed.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Nurten</name><uri>http://www.blogger.com/profile/01131874895114170023</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3430704453605558775.post-853464229851949646</id><published>2009-12-29T15:13:00.010+02:00</published><updated>2009-12-29T17:55:59.955+02:00</updated><title type='text'>QlikView</title><content type='html'>&lt;div align="justify"&gt;&lt;a href="http://3.bp.blogspot.com/_rzSW56Qcf0s/SzoBUHx2aHI/AAAAAAAAAGk/tJ2gXPj9K-k/s1600-h/qlik_small.jpg"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 136px; FLOAT: left; HEIGHT: 200px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5420646546690959474" border="0" alt="" src="http://3.bp.blogspot.com/_rzSW56Qcf0s/SzoBUHx2aHI/AAAAAAAAAGk/tJ2gXPj9K-k/s200/qlik_small.jpg" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;Kısaca &lt;strong&gt;QlikView&lt;/strong&gt; çok temel ve anlaşılması kolay bir mimari üzerine yapılandırılmıştır. İnsan beyninin çalışma yöntemiyle çalışır.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;QlikTech&lt;/strong&gt;'in patentine sahip olduğu "İlişkilendirilmiş bellek içi veri" modeli sayesinde günü geçen raporları beklemeye ve uzun stratejik kararlar için uykusuz gecelere gerek kalmaz. İlk kez, eş zamanlı ticari cevaplara sahip olmanın gücü, tüm kullanıcıların eline geçiyor. Bu sayede daha iyi ve daha hızlı kararlar alarak verimliliği arttırıyorlar.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Daha fazla bilgi için: &lt;a href="http://ctsyazilim.blogspot.com/"&gt;http://ctsyazilim.blogspot.com/&lt;/a&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3430704453605558775-853464229851949646?l=nurtenmehmed.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nurtenmehmed.blogspot.com/feeds/853464229851949646/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://nurtenmehmed.blogspot.com/2009/12/qlikview.html#comment-form' title='1 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/853464229851949646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/853464229851949646'/><link rel='alternate' type='text/html' href='http://nurtenmehmed.blogspot.com/2009/12/qlikview.html' title='QlikView'/><author><name>Nurten</name><uri>http://www.blogger.com/profile/01131874895114170023</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03193549594053055631'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_rzSW56Qcf0s/SzoBUHx2aHI/AAAAAAAAAGk/tJ2gXPj9K-k/s72-c/qlik_small.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3430704453605558775.post-251773523509368623</id><published>2009-01-12T17:55:00.005+02:00</published><updated>2009-04-28T12:06:43.110+03:00</updated><title type='text'>Visual Studio.Net 2008 Yenilikleri</title><content type='html'>&lt;p&gt;&lt;span style="font-size:130%;color:#ff0000;"&gt;.NET FRAMEWORK&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_rzSW56Qcf0s/Sfax-WJEzlI/AAAAAAAAAE8/TKpMsT1uE1E/s1600-h/framework.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5329642893693210194" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 218px" alt="" src="http://2.bp.blogspot.com/_rzSW56Qcf0s/Sfax-WJEzlI/AAAAAAAAAE8/TKpMsT1uE1E/s320/framework.jpg" border="0" /&gt;&lt;/a&gt;&lt;span style="color:#009900;"&gt;Multi-Targeting&lt;br /&gt;&lt;/span&gt;Framework 2.0, 3.0 ve 3.5 için tek geliştirme ortamı sağlamaktadır.&lt;/p&gt;&lt;p&gt;•&lt;span style="font-size:85%;"&gt;Önceden geliştirmeye başladığımız projeyi VS 2008’i kurduktan sonra da kaldığımız yerden geliştirmeye devam edebileceğiz.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;•VS 2008 ortamında Framework 2.0 ile geliştirmek istediğimiz projede sadece Framework 2.0’ın bize sağladığı taslakları(template), kütüphaneleri, sınıflarını ve veri tiplerini kullanabileceğiz.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:180%;color:#ff0000;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:130%;color:#ff0000;"&gt;Geliştirilmiş C# &amp;amp; VB.NET&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="color:#33cc00;"&gt;&lt;span style="color:#009900;"&gt;Nesne İlkleme (Object Initializers)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;Nesne yaratıldığında nesnenin alanlarını ve özelliklerini Constructor’a ihtiyaç duymadan ilklenmesi.&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;color:#3333ff;"&gt;[Visual Basic]&lt;br /&gt;Dim p As New Person With {.FirstName = "John", .LastName = "Doe", .State="AZ“}&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="color:#009900;"&gt;Anonim tipler (Anonymous types)&lt;/span&gt;&lt;br /&gt;Değişkenlerin tipleri belirtilmezse derleyici uygun olanlarıyla anlamlandırıyor.&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;color:#3333ff;"&gt;[Visual Basic]&lt;br /&gt;Dim p = New With {.FirstName = "John", .LastName = "Doe"}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;font-size:85%;color:#3333ff;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="color:#009900;"&gt;İlave Metodlar (Extension Methods)&lt;/span&gt;&lt;br /&gt;İlave metodlar var olan tiplerin kalıtım kullanmadan genişletebilmesini sağlar.&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;•Var olan metodları override edemez&lt;br /&gt;•Extension metod mantığı alanlara (fields), özelliklere (properties) ve olaylara (events) uygulanamaz.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#3333ff;"&gt;namespace StringExtensions {&lt;br /&gt;public static class StringExtensionsClass {&lt;br /&gt;public static string RemoveNonAlphaNumeric(this string s)&lt;br /&gt;{&lt;br /&gt;...&lt;br /&gt;return sb.ToString();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;----------------------------------------------&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;color:#3333ff;"&gt;…&lt;br /&gt;string phone = "123-123-1234";&lt;br /&gt;string newPhone=phone.RemoveNonAlphaNumeric();&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#009900;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#009900;"&gt;Lambda İfadesi (Lambda Expressions)&lt;/span&gt;&lt;br /&gt;Lambda ifadesi ismi olmayan, tek bir expression’u değerlendiren ve onun değerini döndüren bir fonksiyondur.&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;color:#3333ff;"&gt;[Visual C#]&lt;br /&gt;List&lt;string&gt; names = new List&lt;string&gt; { "John", "Jim", "Michelle" };&lt;br /&gt;IEnumerable&lt;string&gt; filter = names.Where(p =&gt; p.StartsWith(“J”));&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:georgia;font-size:130%;color:#ff0000;"&gt;LINQ (Language Integrated Query)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;LINQ bize VisualBasic ve C# kodlarımızda kullanacağımız “sorguları” tanımlıyor. &lt;/p&gt;&lt;p&gt;&lt;span style="color:#009900;"&gt;LINQ Tipleri &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;◦&lt;span style="color:#6666cc;"&gt;LINQ2Objects&lt;/span&gt; – .NET objeleri üzerindeki sorgular&lt;br /&gt;◦&lt;span style="color:#6666cc;"&gt;LINQ2Entity&lt;/span&gt; – Entity üzerindeki sorgular&lt;br /&gt;◦&lt;span style="color:#6666cc;"&gt;LINQ2XML&lt;/span&gt; – XMLüzerindeki sorgular&lt;br /&gt;◦&lt;span style="color:#6666cc;"&gt;LINQ2SQL&lt;/span&gt; – SQL üzerindeki sorgular&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="color:#33cc00;"&gt;&lt;span style="color:#009900;"&gt;LINQ2Objects&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;◦.NET objeleri üzerinde yaptığımız sorgular.&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;u&gt;1) Örnek:&lt;/u&gt;&lt;br /&gt;Bir DataTable nesnesini oluşturduğumuzu ve içerisinden ‘D’ ile başlayan kayıtları listelemek istediğimizi düşünelim:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;color:#3333ff;"&gt;Dim Bulunanlar = From n In tablom.Rows Where n.item(0) Like "D*" Order By n.item(0)&lt;br /&gt;For Each n As Data.DataRow In Bulunanlar&lt;br /&gt;Response.Write(n.Item(0))&lt;br /&gt;Next&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;u&gt;2) Örnek:&lt;/u&gt;&lt;br /&gt;Bir integer dizi yaratalım:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;color:#3333ff;"&gt;Dim Sayilar() As Integer = {5, 7, 1, 4, 9, 3, 2, 6, 8}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Bu dizi içerisindeki değerlerden sadece 5’ten küçük olanları büyükte küçüğe kadar sıralamak istiyoruz:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;color:#3333ff;"&gt;Dim Bulunanlar = From n In Sayilar Select n Where n &lt;= 5 Order By n For Each n As Integer In Bulunanlar Response.Write(n) Next&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#33cc00;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="color:#33cc00;"&gt;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="color:#009900;"&gt;LINQ2Entity&lt;br /&gt;&lt;/span&gt;Entity’ler üzerinde yaptığımız sorgular.&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;u&gt;Örnek:&lt;br /&gt;&lt;/u&gt;Bir web sayfamızda birden çok TextBox ve control olduğunu varsayalım. Bu TextBox’ların Enable özelliğini aynı anda True yapmak istersek normalde yapmamız gereken işlem aşağıdaki gibi olacaktır.&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;color:#3333ff;"&gt;For Each kontrol As TextBox In From Gelenler In Me.Form.Controls&lt;br /&gt;Where TypeOf Gelenler Is TextBox Select Gelenler&lt;br /&gt;kontrol.Enabled = False&lt;br /&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="color:#009900;"&gt;LINQ2XML&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;u&gt;&lt;span style="font-size:85%;"&gt;Örnek:&lt;/span&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;"Dim sirket As XElement = _&lt;br /&gt;&lt;sirket&gt;&lt;br /&gt;&lt;adi&gt;CTS Yazilim&lt;/adi&gt;&lt;br /&gt;&lt;adres&gt;Çankaya/IZMIR&lt;/ adres&gt;&lt;br /&gt;&lt;telefon&gt;123456&lt;/ telefon&gt;&lt;br /&gt;&lt;/sirket&gt;&lt;br /&gt;Response.Write(Sirket.&lt;adi&gt;.Value)"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Dosya okuma - XPATH ve XMLReader yerine LINQ&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;color:#3333ff;"&gt;&lt;span style="color:#000000;"&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; doc = XDocument.Load(&lt;/span&gt;&lt;span style="color:#cc0000;"&gt;"http://www.tcmb.gov.tr/kurlar/today.xml"&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;span style="color:#3333ff;"&gt;For Each&lt;/span&gt; kur &lt;span style="color:#3333ff;"&gt;In&lt;/span&gt; doc.&lt;tarih_date&gt;.&lt;currency&gt;.Where(&lt;span style="color:#3333ff;"&gt;Function&lt;/span&gt;(x) x.&lt;isim&gt;.Value.Contains(&lt;span style="color:#cc0000;"&gt;"I"&lt;/span&gt;))&lt;br /&gt;Response.Write(kur.&lt;currencyname&gt;.Value)&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#3333ff;"&gt;Next&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;LINQ2SQL &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;u&gt;Örnek:&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; datalarim &lt;span style="color:#3333ff;"&gt;As New&lt;/span&gt; DataClassesDataContext&lt;br /&gt;&lt;span style="color:#33cc00;"&gt;&lt;span style="color:#009900;"&gt;’değişkenimiz LINQ nesnelerine ulaşmamızı sağlayacak&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; SeciliMesajlar = &lt;span style="color:#3333ff;"&gt;From&lt;/span&gt; Secililer In datalarim.Mesajlars &lt;span style="color:#3333ff;"&gt;Where&lt;/span&gt; Secililer.MesajText.Contains(&lt;span style="color:#ff0000;"&gt;“CTS"&lt;/span&gt;)&lt;br /&gt;GridView1.DataSource = SeciliMesajlar&lt;br /&gt;GridView1.DataBind()&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Arka planda olanlar:&lt;br /&gt;SQL Management Studio'yu açarak Activity Monitor üzerinden sunucuya gönderilen sorgulardan birini yakaladığımızda sorgumuzun SQL haline çevrilmiş olarak SQL sunucusuna gönderildiğiniz görüyoruz.&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;(@p0 nvarchar(7))&lt;br /&gt;SELECT [t0].[MesajID],[t0].[MesajText],[t0].[MesajDate],&lt;br /&gt;[t0].[LoginID],[t0].[KonuID],[t0].[IsHTML]&lt;br /&gt;FROM [dbo].[Mesajlar] AS [t0]&lt;br /&gt;WHERE [t0].[MesajText] LIKE @p0&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#ff0000;"&gt;JavaScript Intellisense&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;Javascript client tarafinda çalisan client tabanli bir script dilidir.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Kullanımı zor olması açısından pek tercih edilmeyen Javascript, VS 2008 ile birlikte Javascript içerisinde yer alan neredeyse tüm fonksyionlara ve yapilara Intellisense destegi verilmis durumda.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;a href="http://3.bp.blogspot.com/_rzSW56Qcf0s/Sfa574knJOI/AAAAAAAAAFE/CervkXglq6s/s1600-h/javascript+int..jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5329651647488926946" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 280px; CURSOR: hand; HEIGHT: 199px" alt="" src="http://3.bp.blogspot.com/_rzSW56Qcf0s/Sfa574knJOI/AAAAAAAAAFE/CervkXglq6s/s320/javascript+int..jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;/p&gt;&lt;p align="center"&gt;We ♥ (Ctrl+Space) &lt;/p&gt;&lt;p align="left"&gt; &lt;/p&gt;&lt;p align="left"&gt; &lt;/p&gt;&lt;p align="left"&gt; &lt;/p&gt;&lt;p align="left"&gt; &lt;/p&gt;&lt;p align="left"&gt;&lt;br /&gt; &lt;/p&gt;&lt;/span&gt;&lt;span style="color:#ff0000;"&gt;&lt;/span&gt;&lt;p align="left"&gt;&lt;span style="font-size:130%;color:#ff0000;"&gt;JavaScript Debugging&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;VS 2005 içerisinde kısmen debugging desteği vardı, fakat yeterli değildi.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;VS 2008 ’de Javascript kodlarını istediğimiz gibi debug edebiliriz.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#339999;"&gt;Çalışabilmesi için IE özelliklerinden Kod Hata Ayıklamasını Devre Dışı Bırak&lt;br /&gt;seçeneğini kaldırmalıyız!&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;color:#ff0000;"&gt;Javascript &amp;amp; CSS Hataları Gösterme &lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;CSS ve JavaScript Hatalarinin gösterilmesi.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color:#009900;"&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="color:#009900;"&gt;HTML Source Validation&lt;/span&gt; özelliği sayesinde.&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Bu özelliğin aktif olmasi için:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;1.Tools &gt; Options &gt; Text Editor &gt;HTML &gt; Validation &gt; As Warnings (HTML, CSS)&lt;br /&gt;2.Tools &gt; Options &gt; Text Editor &gt;HTML &gt; Validation &gt; As Warnings (Jscript)&lt;br /&gt;Seçeneklerinin aktif olması gerekiyor.&lt;/span&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:130%;color:#ff0000;"&gt;Web Designer &amp;amp; CSS&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#33cc00;"&gt;&lt;span style="color:#009900;"&gt;Split View&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;•Html ve design‘ı aynı anda görebiliyoruz. &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="color:#009900;"&gt;CSS Intellisence&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://2.bp.blogspot.com/_rzSW56Qcf0s/Sfa8yxV2FyI/AAAAAAAAAFU/ncTC_PRXtcI/s1600-h/css.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5329654789464004386" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 58px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_rzSW56Qcf0s/Sfa8yxV2FyI/AAAAAAAAAFU/ncTC_PRXtcI/s400/css.jpg" border="0" /&gt;&lt;/a&gt;&lt;span style="color:#009900;"&gt; CSS Property&lt;/span&gt;&lt;span style="color:#33cc00;"&gt;&lt;br /&gt;&lt;/span&gt;•CSS - Tüm özelliklerini gösteren property penceresi.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#ff0000;"&gt;Vertical Split&lt;/span&gt; - Design ve kodu dikey olarak aynı anda görmemizi sağlar.&lt;/p&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Bu özelliği kullanabilmek için “Split views vertically” seçmelisiniz.&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Tools &gt; Options &gt; HTML Designer &gt; Split Views Vertically&lt;/span&gt;&lt;/span&gt; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#990000;"&gt;Not:&lt;/span&gt; Bu seçeneğin aktif olabilmesi için visual studio'yu yeniden açmanız gerekmektedir.&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:130%;color:#ff0000;"&gt;ASP.NET AJAX Control Extender&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Atlas adı ile çıkan ve sonrasında ASP.Net Ajax adı ile VS 2005 ‘e extension olarak yüklenebilen ASP.NET AJAX 1.0, VS 2008 ‘de default olarak Visual Studio içinde kurulu geliyor. Artık hiçbir yükleme yapmadan ASP.NET Ajax’ı kullanabileceğiz.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Ajax Control Toolkit ile gelen Extender kontrolleri VS2005 ile kullanıyorduk (source-view, property grid).&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;VS2008’de eklediğimiz herhangi bir ASP.NET kontrolüne bir extender kontrol atayabiliyoruz (design-view içerisinde). &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://4.bp.blogspot.com/_rzSW56Qcf0s/Sfa-1kKl2sI/AAAAAAAAAFc/zdVpikOgMFg/s1600-h/control+extender.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5329657036490005186" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 116px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_rzSW56Qcf0s/Sfa-1kKl2sI/AAAAAAAAAFc/zdVpikOgMFg/s400/control+extender.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color:#ff0000;"&gt;ASP.NET Data Improvements&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Yeni &lt;span style="color:#009900;"&gt;"asp:LinqSqlDataSource"&lt;/span&gt; &lt;span style="color:#33cc00;"&gt;&lt;strong&gt;&lt;span style="color:#33cc00;"&gt;&lt;?xml:namespace prefix = asp /&gt;&lt;asp:linqsqldatasource&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;kontrolü&lt;br /&gt;&lt;span style="font-size:85%;"&gt;–LINQ birimlerine kolay veri bağlantısı sağlar&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Yeni &lt;span style="color:#009900;"&gt;"&lt;/span&gt;&lt;span style="color:#009900;"&gt;asp:ListView" &lt;strong&gt;&lt;asp:listview&gt;&lt;/strong&gt;&lt;/span&gt;&lt;asp:listview&gt;kontrolü&lt;br /&gt;&lt;span style="font-size:85%;"&gt;–Daha fazla UI esnekliği sağlar&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;UI (&lt;span style="color:#009900;"&gt;User Interface&lt;/span&gt;) Yapı İskeleti Oluşturma jeneratörü&lt;br /&gt;&lt;span style="font-size:85%;"&gt;–LINQ obje modeli ve UI sayfaları oluşturma &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/asp:listview&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;color:#ff0000;"&gt;Master Page &amp;amp; Silverlight&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#990000;"&gt;&lt;span style="color:#009900;"&gt;Nested Master Page&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;- İç içe master page kullanabiliyoruz, yani bir MasterPage'a ait farkli bir MasterPage belirtebiliyoruz.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="color:#33cc00;"&gt;&lt;span style="color:#009900;"&gt;Silverlight için JavaScript Intellisense&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;- Javascript intellisense de bahsettigimiz özellikler aynen silverlight için Javascript kullaniminda da geçerli. &lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:130%;color:#ff0000;"&gt;Faydalı “Küçük Özellikler”&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#009900;"&gt;Debug variables&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Debug modunda bir nesnenin özelliklerini çalışma sırasında değiştirebiliyoruz. Program çalışmaya devam ettiğinde bizim verdiğimiz değer ile devam edecektir. &lt;/li&gt;&lt;/ul&gt;&lt;a href="http://1.bp.blogspot.com/_rzSW56Qcf0s/Sfa_8wKhfAI/AAAAAAAAAFk/phnrCm5tzE8/s1600-h/debug.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5329658259481656322" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 107px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_rzSW56Qcf0s/Sfa_8wKhfAI/AAAAAAAAAFk/phnrCm5tzE8/s400/debug.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="color:#009900;"&gt;Alt+Tab for Visual Studio open windows&lt;/span&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Alt+ Tab kombinasyonu ile VS pencereleri arasında da geçiş yapılabiliyor.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="color:#009900;"&gt;Transparent” Intellisense&lt;/span&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Ctrl tuşuna tıklayarak intellisense menüsünü şeffaf yaparak alt satırdaki kodları görmemiz sağlanıyor.&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_rzSW56Qcf0s/SfbAV-wcgGI/AAAAAAAAAFs/6THR_wfHMfE/s1600-h/transperent.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5329658692895539298" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 172px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_rzSW56Qcf0s/SfbAV-wcgGI/AAAAAAAAAFs/6THR_wfHMfE/s400/transperent.jpg" border="0" /&gt;&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:85%;color:#666666;"&gt;Kaynaklar:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.semgoksu.com/visual-studio-2008-aspnet-35-ile-gelen-yenilikler-makalesi/471.aspx"&gt;&lt;span style="font-size:85%;color:#999999;"&gt;http://www.semgoksu.com/visual-studio-2008-aspnet-35-ile-gelen-yenilikler-makalesi/471.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;color:#999999;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.acorns.com.au/projects/vsaddins/"&gt;&lt;span style="font-size:85%;color:#999999;"&gt;http://www.acorns.com.au/projects/vsaddins/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;color:#999999;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.ilkeracar.com/post/Visual-Studio-2008-AJAX-Control-Extender-Destegi.aspx"&gt;&lt;span style="font-size:85%;color:#999999;"&gt;http://www.ilkeracar.com/post/Visual-Studio-2008-AJAX-Control-Extender-Destegi.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;color:#999999;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.turkforum.net/showthread.php?p=5568245"&gt;&lt;span style="font-size:85%;color:#999999;"&gt;http://www.turkforum.net/showthread.php?p=5568245&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;color:#999999;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://daron.yondem.com/tr/PermaLink.aspx?guid=3828ccde-9e6e-48ef-8335-948d4e839521"&gt;&lt;span style="font-size:85%;color:#999999;"&gt;http://daron.yondem.com/tr/PermaLink.aspx?guid=3828ccde-9e6e-48ef-8335-948d4e839521&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;color:#999999;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.simsasys.com/visualstudio2008.pdf"&gt;&lt;span style="font-size:85%;color:#999999;"&gt;http://www.simsasys.com/visualstudio2008.pdf&lt;/span&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;/asp:listview&gt;&lt;/asp:linqsqldatasource&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3430704453605558775-251773523509368623?l=nurtenmehmed.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nurtenmehmed.blogspot.com/feeds/251773523509368623/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://nurtenmehmed.blogspot.com/2009/01/visual-studionet-yenilikleri.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/251773523509368623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/251773523509368623'/><link rel='alternate' type='text/html' href='http://nurtenmehmed.blogspot.com/2009/01/visual-studionet-yenilikleri.html' title='Visual Studio.Net 2008 Yenilikleri'/><author><name>Nurten</name><uri>http://www.blogger.com/profile/01131874895114170023</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03193549594053055631'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_rzSW56Qcf0s/Sfax-WJEzlI/AAAAAAAAAE8/TKpMsT1uE1E/s72-c/framework.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3430704453605558775.post-2029966505627011420</id><published>2009-04-10T10:54:00.012+03:00</published><updated>2009-04-10T15:18:02.586+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dinamik'/><category scheme='http://www.blogger.com/atom/ns#' term='crystal report'/><category scheme='http://www.blogger.com/atom/ns#' term='veri'/><title type='text'>Crystal Report İçerisinde Dinamik Veri</title><content type='html'>&lt;div align="left"&gt;&lt;a href="http://1.bp.blogspot.com/_rzSW56Qcf0s/Sd833EjXwRI/AAAAAAAAAEc/I0i4xcPRktE/s1600-h/logo_crystal_reports.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5323034703829647634" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 144px" alt="" src="http://1.bp.blogspot.com/_rzSW56Qcf0s/Sd833EjXwRI/AAAAAAAAAEc/I0i4xcPRktE/s320/logo_crystal_reports.jpg" border="0" /&gt;&lt;/a&gt;Evet, ihtiyaç duyduğum birşeydi bu... Yeni keşfettim, çok işime yarayacak gibi, umarım sizin de işinize yarar.&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;Özellikle verilerin çok değişken olduğu günümüzde olabildiğince statik yazılımlar geliştirmekten kaçınmalıyız.&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;Birçok uygulamada olduğu gibi, Crystal Report içerisinde de veritabanı bağlantısı veritabanı sürücüleri (DB Drivers) tarafından yapılmaktadır. Bu veritabanı sürücüleri belli bir veritabanı tipini veya veri erişim metodunu tutmak için tasarlanmıştır.&lt;br /&gt;&lt;br /&gt;CrystalReport ile veri erişimi 2 şekilde gerçekleştirilir. Bunlar &lt;strong&gt;Pull&lt;/strong&gt; ve &lt;strong&gt;Push&lt;/strong&gt; olarak bilinen metodlardır.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#ff6600;"&gt;PULL Modeli&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_rzSW56Qcf0s/Sd8D83J8T4I/AAAAAAAAAEM/m--XzBOHQH4/s1600-h/pull.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5322977628707901314" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 290px; CURSOR: hand; HEIGHT: 100px" alt="" src="http://1.bp.blogspot.com/_rzSW56Qcf0s/Sd8D83J8T4I/AAAAAAAAAEM/m--XzBOHQH4/s320/pull.gif" border="0" /&gt;&lt;/a&gt; Bu modelde sürücü direkt db'ye bağlanır ve tasarım aşamasında ona verilen parametreleri kullanır.&lt;br /&gt;&lt;br /&gt;Bu modelde herşey rapor tarafından gerçekleştirilir: veritabanına bağlantı sağlamak ve SQL sorgularını çalıştırmak; Yazılımcının hiçbir kod müdahalesi bulunmasına gerek yoktur.&lt;br /&gt;&lt;br /&gt;Bu Crystal Reports içerisindeki default metodtur.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#ff6600;"&gt;PUSH Modeli&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_rzSW56Qcf0s/Sd8IFjRlRpI/AAAAAAAAAEU/J1EagF7TxMU/s1600-h/push.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5322982176036570770" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 333px; CURSOR: hand; HEIGHT: 91px" alt="" src="http://1.bp.blogspot.com/_rzSW56Qcf0s/Sd8IFjRlRpI/AAAAAAAAAEU/J1EagF7TxMU/s320/push.gif" border="0" /&gt;&lt;/a&gt; Bu model yazılımcının müdahalesini gerektirir.&lt;br /&gt;&lt;br /&gt;Crystal Report parametre olarak bir DataSet nesnesini alır (içerisinde belirtilen alanlar olma koşuluyla).&lt;br /&gt;Bu da yazılımcnın DataSet'i hazırlaması gerektiği anlamına gelir.&lt;br /&gt;Yani raporu çağırdığımız yerden istenilen veritabanına kod üzerinden bağlantıyı kurmak, SQL sorgularını çalıştırmak ve verileri DataSet'e yüklemek anlamına geliyor. Daha sonra da bu nesne Crystal Report'a gönderilerek uygun şekilde gösterilir.&lt;br /&gt;&lt;br /&gt;Bu model sayesinde crystal report içerisindeki dinamikliği sağlamış oluyoruz, çünkü ona gönderilen DataSet'i kod üzerinden dinamik olarak hazırlayıp ona sunuyoruz.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Örnek:&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;İlk önce ReportDocument tipinde bir değişken tanımlıyoruz.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#3366ff;"&gt;CrystalDecisions.CrystalReports.Engine.ReportDocument myReportDocument;&lt;br /&gt;myReportDocument = new CrystalDecisions.CrystalReports.Engine.ReportDocument();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Daha sonra hazırlamış olduğumuz raporu ReportDocument değişkenimize atıyoruz.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#3366ff;"&gt;myReportDocument.Load(@"C:\Documents and Settings\nurten\Desktop\Article776\CrystalTest\CrystalReport.rpt");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Alttaki işlemde ise DataSet nesnemizi rapora gönderiyoruz.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#3366ff;"&gt;myReportDocument.Database.Tables["preview"].SetDataSource(myDS);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Son olarak da Report Document nesnemizin görüntülenmesini sağlıyoruz.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#3366ff;"&gt;CrystalReportViewer1.ReportSource = myReportDocument;&lt;br /&gt;CrystalReportViewer1.DataBind();&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3430704453605558775-2029966505627011420?l=nurtenmehmed.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nurtenmehmed.blogspot.com/feeds/2029966505627011420/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://nurtenmehmed.blogspot.com/2009/04/crystal-report-icerisinde-dinamik-veri.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/2029966505627011420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/2029966505627011420'/><link rel='alternate' type='text/html' href='http://nurtenmehmed.blogspot.com/2009/04/crystal-report-icerisinde-dinamik-veri.html' title='Crystal Report İçerisinde Dinamik Veri'/><author><name>Nurten</name><uri>http://www.blogger.com/profile/01131874895114170023</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03193549594053055631'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_rzSW56Qcf0s/Sd833EjXwRI/AAAAAAAAAEc/I0i4xcPRktE/s72-c/logo_crystal_reports.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3430704453605558775.post-5733180177849817592</id><published>2009-03-26T23:33:00.015+02:00</published><updated>2009-03-26T23:49:32.894+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='yavru kirpi'/><category scheme='http://www.blogger.com/atom/ns#' term='sevimli kirpi yavrusu'/><title type='text'>Sevimli kirpi yavrusu :)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_rzSW56Qcf0s/Scv2V3nodmI/AAAAAAAAAD8/fcxz1ZJ0Muo/s1600-h/image010.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 320px; height: 238px;" src="http://1.bp.blogspot.com/_rzSW56Qcf0s/Scv2V3nodmI/AAAAAAAAAD8/fcxz1ZJ0Muo/s320/image010.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5317614640608867938" /&gt;&lt;/a&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color:#3366ff;"&gt;Bu kadar sevimli bişey olabilir mi yaa :)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color:#3366ff;"&gt;Şimdi bunun yazılım çözümüyle ne alakası var diyeceksiniz ama n'apiim, çok şirin, moral için bu :)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_rzSW56Qcf0s/Scv2SVNu3YI/AAAAAAAAAD0/umljpIWvo4s/s1600-h/image009.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_rzSW56Qcf0s/Scv2SVNu3YI/AAAAAAAAAD0/umljpIWvo4s/s320/image009.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5317614579833822594" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_rzSW56Qcf0s/Scv2PWncHoI/AAAAAAAAADs/3yXJh0f6Fuc/s1600-h/image008.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 320px; height: 239px;" src="http://3.bp.blogspot.com/_rzSW56Qcf0s/Scv2PWncHoI/AAAAAAAAADs/3yXJh0f6Fuc/s320/image008.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5317614528670473858" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_rzSW56Qcf0s/Scv2MFQ28lI/AAAAAAAAADk/V6Lo2KZvpMM/s1600-h/image007.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_rzSW56Qcf0s/Scv2MFQ28lI/AAAAAAAAADk/V6Lo2KZvpMM/s320/image007.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5317614472472752722" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3430704453605558775-5733180177849817592?l=nurtenmehmed.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nurtenmehmed.blogspot.com/feeds/5733180177849817592/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://nurtenmehmed.blogspot.com/2009/03/bu-kadar-sevimli-bisey-olabilir-mi-yaa.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/5733180177849817592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/5733180177849817592'/><link rel='alternate' type='text/html' href='http://nurtenmehmed.blogspot.com/2009/03/bu-kadar-sevimli-bisey-olabilir-mi-yaa.html' title='Sevimli kirpi yavrusu :)'/><author><name>Nurten</name><uri>http://www.blogger.com/profile/01131874895114170023</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03193549594053055631'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_rzSW56Qcf0s/Scv2V3nodmI/AAAAAAAAAD8/fcxz1ZJ0Muo/s72-c/image010.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3430704453605558775.post-6467407008942471857</id><published>2009-03-21T11:38:00.003+02:00</published><updated>2009-03-21T11:45:26.860+02:00</updated><title type='text'>Mobile 6 Uygulamalarında Breakpoint ile Debug Hatası</title><content type='html'>Windows Mobile 6 ile proje geliştirmek isteyenler bilgisayarlarında CF2 (Compact Framework 2) ve onun SP2 (Service Pack 2) kurmaları gerekiyor, çünkü projeyi çalıştırdığınızda programın gidişatını adım adım izlemek isteyenler breakpoint koyduklarında breakpoint'in yanında bir ünlem işareti görecektir, uyarısı ise (&lt;strong&gt;The breakpoint will not currently be hit, the specified module can not be loaded&lt;/strong&gt;).&lt;br /&gt;&lt;br /&gt;SP2'yi buradaki adresten indirebilirsiniz: &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=7befd787-9b5e-40c6-8d10-d3a43e5856b2&amp;amp;DisplayLang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=7befd787-9b5e-40c6-8d10-d3a43e5856b2&amp;amp;DisplayLang=en&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3430704453605558775-6467407008942471857?l=nurtenmehmed.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nurtenmehmed.blogspot.com/feeds/6467407008942471857/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://nurtenmehmed.blogspot.com/2009/03/mobile-6-uygulamalarnda-breakpoint-ile.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/6467407008942471857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/6467407008942471857'/><link rel='alternate' type='text/html' href='http://nurtenmehmed.blogspot.com/2009/03/mobile-6-uygulamalarnda-breakpoint-ile.html' title='Mobile 6 Uygulamalarında Breakpoint ile Debug Hatası'/><author><name>Nurten</name><uri>http://www.blogger.com/profile/01131874895114170023</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03193549594053055631'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3430704453605558775.post-7492003581348155108</id><published>2009-01-21T17:04:00.014+02:00</published><updated>2009-02-18T11:13:10.091+02:00</updated><title type='text'>MSN ME :)</title><content type='html'>&lt;div align="center"&gt;&lt;span style="font-size:85%;color:#6633ff;"&gt;Pek çevrimiçi olmam ama olduğumda ileti gönderebilirsin =)&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-size:85%;color:#6633ff;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;iframe style="BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-LEFT: black 1px solid; WIDTH: 300px; BORDER-BOTTOM: black 1px solid; HEIGHT: 400px" src="http://settings.messenger.live.com/Conversation/IMMe.aspx?invitee=9479f8fc1b5e14dd@apps.messenger.live.com&amp;amp;mkt=tr-TR" frameborder="0" width="300" height="400"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div align="left"&gt;Biliyorsunuz ki bulunduğumuz çağ bilgi çağı, iletişim çağı :) &lt;/div&gt;&lt;div align="left"&gt;Bende iletişim anlamında küççücük de olsa katkıda bulunmak istedim ve hemen hemen herkesin msn kullandığını bildiğimden böyle bir uygulamayı sizinle paylaşmak istedim.&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div align="left"&gt;Aşağıdaki adımları izleyerek siz de web sayfanıza MSN Messenger ekleyebilirsiniz.&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;İlk önce &lt;a href="http://settings.messenger.live.com/Applications/WebSettings.aspx"&gt;http://settings.messenger.live.com/Applications/WebSettings.aspx&lt;/a&gt; adresine tıklayarak msn hesabınız ile giriş yapın ve uygulamanızı etkinleştirerek &lt;span style="font-family:courier new;color:#3333ff;"&gt;&lt;strong&gt;Save&lt;/strong&gt; &lt;/span&gt;edin.&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Daha sonra &lt;span style="font-family:courier new;color:#3333ff;"&gt;&lt;strong&gt;Web Settings&lt;/strong&gt;&lt;/span&gt; altından &lt;span style="font-family:courier new;color:#3333ff;"&gt;&lt;strong&gt;Create HTML&lt;/strong&gt;&lt;/span&gt; seçerek sayfanızda görünecek olan messenger penceresinin renk ve boyutlarını isteğinize göre belirleyin. &lt;span style="font-size:85%;"&gt;(Ayarlamazsanız default geliyor zaten.)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Renklerle oynama işi bittiğinde :) &lt;span style="font-size:85%;"&gt;"&lt;span style="font-family:courier new;color:#3333ff;"&gt;&lt;strong&gt;Copy the HTML and paste it into your webpage&lt;/strong&gt;&lt;/span&gt;"&lt;/span&gt; altında bulunan HTML kodunu kopyalayın ve sitenize ekleyin.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="left"&gt;Sadece bu kadar, iyi sohbetler ;)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3430704453605558775-7492003581348155108?l=nurtenmehmed.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nurtenmehmed.blogspot.com/feeds/7492003581348155108/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://nurtenmehmed.blogspot.com/2009/01/msn-me.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/7492003581348155108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/7492003581348155108'/><link rel='alternate' type='text/html' href='http://nurtenmehmed.blogspot.com/2009/01/msn-me.html' title='MSN ME :)'/><author><name>Nurten</name><uri>http://www.blogger.com/profile/01131874895114170023</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03193549594053055631'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3430704453605558775.post-4047057594298320618</id><published>2009-02-16T15:30:00.015+02:00</published><updated>2009-02-18T10:34:28.131+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Binary File Upload'/><title type='text'>ASP.NET ile Veritabanına Dosya Upload &amp; Download</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_rzSW56Qcf0s/SZl8MyxeLZI/AAAAAAAAACk/jRUAAXh72yk/s1600-h/down.JPG"&gt;&lt;/a&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_rzSW56Qcf0s/SZl7b-CX5UI/AAAAAAAAACc/et2dObT592E/s1600-h/down.JPG"&gt;&lt;/a&gt;&lt;div&gt;Eğer dosyalarınızı belli bir sebepten dolayı veritabanına kaydetmek isterseniz bu makalede size bunun nasıl yapıldığını anlatacağım. Ayrıca dosyaları bozulmadan download edebileceksiniz.&lt;/div&gt;&lt;div&gt;İlk önce "&lt;span style="font-family:courier new;"&gt;DOSYALAR&lt;/span&gt;" adında bir veritabanı tablosunu oluşturduğunuzu varsayalım.&lt;/div&gt;&lt;div&gt;Tablonun alanları aşağıdaki gibi olmalıdır:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5303389899278369442" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 169px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_rzSW56Qcf0s/SZltA8vhwqI/AAAAAAAAACE/CpBgm8gAtfs/s320/db.JPG" border="0" /&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;SQL Server 2000 görüntü verilerini saklamak için "&lt;span style="font-family:courier new;"&gt;image&lt;/span&gt;" veri türünü destekler. Burada dikkat ederseniz "Data" alanı image tipindedir. Veritabanına dosya yüklemek resim yüklemek ile aynı anlama gelir, her iki örnekte de veriler binary olarak saklanır. &lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:180%;color:#009900;"&gt;&lt;strong&gt;UPLOAD&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Daha sonra "&lt;span style="font-family:courier new;"&gt;UploadDownload.aspx&lt;/span&gt;" sayfanızı oluşturun. İçine bir &lt;span style="font-family:courier new;"&gt;FileUpload, Label&lt;/span&gt; ve bir &lt;span style="font-family:courier new;"&gt;Button&lt;/span&gt; ekleyin.&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5303395009469207538" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 317px; CURSOR: hand; HEIGHT: 160px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_rzSW56Qcf0s/SZlxqZr90_I/AAAAAAAAACU/NjEYvzjlHZ8/s320/up.JPG" border="0" /&gt;&lt;/p&gt;&lt;div&gt;"&lt;span style="font-family:courier new;"&gt;Yükle&lt;/span&gt;" butonuna tıklandığında FileUpload kutusunda seçtiğimiz dosya "&lt;span style="font-family:courier new;"&gt;DOSYALAR&lt;/span&gt;" tablosuna kaydededilecektir.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;Private Sub&lt;/span&gt; Upload()&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;If&lt;/span&gt; BrowseUpload.PostedFile &lt;span style="color:#3333ff;"&gt;IsNot Nothing Then&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; myFile &lt;span style="color:#3333ff;"&gt;As&lt;/span&gt; HttpPostedFile = BrowseUpload.PostedFile&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; nFileLen &lt;span style="color:#3333ff;"&gt;As Integer&lt;/span&gt; = myFile.ContentLength&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;If&lt;/span&gt; nFileLen &gt; 0 &lt;span style="color:#3333ff;"&gt;Then&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; myData &lt;span style="color:#3333ff;"&gt;As Byte&lt;/span&gt;&lt;span style="color:#000000;"&gt;()&lt;/span&gt; = &lt;span style="color:#3333ff;"&gt;New Byte&lt;/span&gt;(nFileLen - 1) {}&lt;br /&gt;myFile.InputStream.Read(myData, 0, nFileLen)&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; strFilename &lt;span style="color:#3333ff;"&gt;As String&lt;/span&gt; = Path.GetFileName(myFile.FileName)&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; nFileID &lt;span style="color:#3333ff;"&gt;As Integer&lt;/span&gt; = WriteToDB(strFilename, myFile.ContentType, myData)&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;End If&lt;br /&gt;End If&lt;br /&gt;End Sub&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:Courier New;font-size:85%;color:#3333ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;Private Function&lt;/span&gt; WriteToDB(&lt;span style="color:#3333ff;"&gt;ByVal&lt;/span&gt; strName &lt;span style="color:#3333ff;"&gt;As String&lt;/span&gt;, &lt;span style="color:#3333ff;"&gt;ByVal&lt;/span&gt; strType &lt;span style="color:#3333ff;"&gt;As String&lt;/span&gt;, &lt;span style="color:#3333ff;"&gt;ByRef&lt;/span&gt; Buffer &lt;span style="color:#3333ff;"&gt;As By&lt;/span&gt;&lt;span style="color:#3333ff;"&gt;te&lt;/span&gt;()) &lt;span style="color:#3333ff;"&gt;As Integer&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; nFileID &lt;span style="color:#3333ff;"&gt;As Integer&lt;/span&gt; = 0&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; dbConn &lt;span style="color:#3333ff;"&gt;As New&lt;/span&gt; SqlConnection(ReturnConnstr)&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; dbAdapt &lt;span style="color:#3333ff;"&gt;As New&lt;/span&gt; SqlDataAdapter(&lt;span style="color:#cc0000;"&gt;"SELECT * FROM DOSYALAR"&lt;/span&gt;, dbConn)&lt;br /&gt;dbAdapt.MissingSchemaAction = MissingSchemaAction.AddWithKey&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; dbCB &lt;span style="color:#3333ff;"&gt;As New&lt;/span&gt; SqlCommandBuilder(dbAdapt)&lt;br /&gt;dbConn.Open()&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; dbSet &lt;span style="color:#3333ff;"&gt;As New&lt;/span&gt; DataSet()&lt;br /&gt;dbAdapt.Fill(dbSet, &lt;span style="color:#cc0000;"&gt;"DOSYALAR"&lt;/span&gt;)&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; dbTable &lt;span style="color:#3333ff;"&gt;As&lt;/span&gt; DataTable = dbSet.Tables(&lt;span style="color:#cc0000;"&gt;"DOSYALAR"&lt;/span&gt;)&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; dbRow &lt;span style="color:#3333ff;"&gt;As&lt;/span&gt; DataRow = dbTable.NewRow()&lt;br /&gt;dbRow(&lt;span style="color:#cc0000;"&gt;"Name"&lt;/span&gt;) = strName&lt;br /&gt;dbRow(&lt;span style="color:#cc0000;"&gt;"Size"&lt;/span&gt;) = Buffer.Length&lt;br /&gt;dbRow(&lt;span style="color:#cc0000;"&gt;"Type"&lt;/span&gt;) = strType&lt;br /&gt;dbRow(&lt;span style="color:#cc0000;"&gt;"Data"&lt;/span&gt;) = Buffer&lt;br /&gt;dbTable.Rows.Add(dbRow)&lt;br /&gt;dbAdapt.Update(dbSet, &lt;span style="color:#cc0000;"&gt;"DOSYALAR"&lt;/span&gt;)&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;If Not&lt;/span&gt; dbRow.IsNull(&lt;span style="color:#cc0000;"&gt;"ID"&lt;/span&gt;) &lt;span style="color:#3333ff;"&gt;Then&lt;/span&gt;&lt;br /&gt;nFileID = &lt;span style="color:#3333ff;"&gt;CInt&lt;/span&gt;(dbRow(&lt;span style="color:#cc0000;"&gt;"ID"&lt;/span&gt;))&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;End If&lt;/span&gt;&lt;br /&gt;dbConn.Close()&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;End Function&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;&lt;span style="font-size:180%;color:#009900;"&gt;DOWNLOAD&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="color:#cc0000;"&gt;&lt;span style="color:#000000;"&gt;Download işlemi için bize veritabanındaki kaydın &lt;span style="font-family:courier new;"&gt;ID&lt;/span&gt;'si gerekmektedir. Bunun için bir &lt;span style="font-family:courier new;"&gt;DataGrid&lt;/span&gt; oluşturup içini "&lt;span style="font-family:courier new;"&gt;DOSYALAR&lt;/span&gt;" tablosundaki veriler ile doldurun ( &lt;span style="font-family:courier new;"&gt;SELECT * FROM DOSYALAR&lt;/span&gt; ). Ben DevExpress componentini kullandığımdan DataGrid'e direkt link ekleyip işlemimi yapabiliyorum, siz de dosyanın ID'sini DataGrid içinde görüp fonksiyona parametre olarak gönderebilirsiniz.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5303406595435015570" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 316px; CURSOR: hand; HEIGHT: 270px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_rzSW56Qcf0s/SZl8MyxeLZI/AAAAAAAAACk/jRUAAXh72yk/s320/down.JPG" border="0" /&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#3333ff;"&gt;Private Sub&lt;/span&gt; Download(&lt;span style="color:#3333ff;"&gt;ByVal&lt;/span&gt; key&lt;span style="color:#3333ff;"&gt; As Integer&lt;/span&gt;)&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; nFileID&lt;span style="color:#3333ff;"&gt; As Integer&lt;/span&gt; = 0&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; dbConn&lt;span style="color:#3333ff;"&gt; As New&lt;/span&gt; SqlConnection(ReturnConnstr)&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; dbAdapt&lt;span style="color:#3333ff;"&gt; As New&lt;/span&gt; SqlDataAdapter(&lt;span style="color:#cc0000;"&gt;"SELECT * FROM DOSYALAR WHERE ID ="&lt;/span&gt; &amp;amp; key, dbConn)&lt;br /&gt;dbAdapt.MissingSchemaAction = MissingSchemaAction.AddWithKey&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; dbCB &lt;span style="color:#3333ff;"&gt;As New&lt;/span&gt; SqlCommandBuilder(dbAdapt)&lt;br /&gt;dbConn.Open()&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; dbSet&lt;span style="color:#3333ff;"&gt; As New&lt;/span&gt; DataSet()&lt;br /&gt;dbAdapt.Fill(dbSet, &lt;span style="color:#cc0000;"&gt;"DOSYALAR"&lt;/span&gt;)&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; dbTable &lt;span style="color:#3333ff;"&gt;As&lt;/span&gt; DataTable = dbSet.Tables(&lt;span style="color:#cc0000;"&gt;"DOSYALAR"&lt;/span&gt;)&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; dbRow As DataRow = dbTable.Rows(0)&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; buffer() &lt;span style="color:#3333ff;"&gt;As Byte&lt;/span&gt;&lt;br /&gt;buffer = dbRow(&lt;span style="color:#cc0000;"&gt;"Data"&lt;/span&gt;)&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; name &lt;span style="color:#3333ff;"&gt;As&lt;/span&gt; String = dbRow&lt;span style="color:#000000;"&gt;(&lt;/span&gt;&lt;span style="color:#cc0000;"&gt;"Name"&lt;/span&gt;)&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;Dim&lt;/span&gt; type &lt;span style="color:#3333ff;"&gt;As&lt;/span&gt; String = Mid(name, name.LastIndexOf(&lt;span style="color:#cc0000;"&gt;"."&lt;/span&gt;) + 2)&lt;br /&gt;name = Mid(name, 1, name.LastIndexOf(&lt;span style="color:#cc0000;"&gt;"."&lt;/span&gt;))&lt;br /&gt;Response.Clear()&lt;br /&gt;Response.AddHeader(&lt;span style="color:#cc0000;"&gt;"Content-Disposition"&lt;/span&gt;, &lt;span style="color:#cc0000;"&gt;"attachment;filename="&lt;/span&gt; &amp;amp; name &amp;amp; &lt;span style="color:#cc0000;"&gt;"."&lt;/span&gt; &amp;amp; type)&lt;br /&gt;Response.ContentType = &lt;span style="color:#cc0000;"&gt;"text/plain"&lt;/span&gt;&lt;br /&gt;Response.BinaryWrite(buffer)&lt;br /&gt;Response.End()&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;End Sub&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Bu dosya upload ve download işlemleri bana çok kolaylık sağladı, umarım sizin de işinize yarayacaktır. &lt;/p&gt;&lt;p&gt;Kolay gelsin.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3430704453605558775-4047057594298320618?l=nurtenmehmed.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nurtenmehmed.blogspot.com/feeds/4047057594298320618/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://nurtenmehmed.blogspot.com/2009/02/aspnet-ile-veritabanna-dosya-ekle.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/4047057594298320618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/4047057594298320618'/><link rel='alternate' type='text/html' href='http://nurtenmehmed.blogspot.com/2009/02/aspnet-ile-veritabanna-dosya-ekle.html' title='ASP.NET ile Veritabanına Dosya Upload &amp; Download'/><author><name>Nurten</name><uri>http://www.blogger.com/profile/01131874895114170023</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03193549594053055631'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_rzSW56Qcf0s/SZltA8vhwqI/AAAAAAAAACE/CpBgm8gAtfs/s72-c/db.JPG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3430704453605558775.post-4943017410292038913</id><published>2009-02-11T14:06:00.008+02:00</published><updated>2009-02-14T21:28:47.447+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cookie oluştur'/><category scheme='http://www.blogger.com/atom/ns#' term='çerez'/><category scheme='http://www.blogger.com/atom/ns#' term='cookie nedir'/><category scheme='http://www.blogger.com/atom/ns#' term='cookie sil'/><title type='text'>ASP.NET ile Cookie (çerez) İşlemleri</title><content type='html'>Cookie (çerez)'ler web sayfamızın belli bir kullanıcıya özel bilgilerini tutmamızı sağlar. Böylece o kullanıcı bizim web sayfamıza bir sonraki girişinde onu tanıyabilir ve ona özel işlemler yapabiliriz.&lt;br /&gt;"Response" nesnesinin bir kolaksiyonu olan çerezler istemcinin bilgisayarında küçük text (*.txt)dosyaları halinde saklanır.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#333399;"&gt;&lt;strong&gt;Cookie Oluştur&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;* Cookie oluştururken ilk önce çerezimize isim veririz, bu örnekte "myCOOKIE" adını verdik.&lt;br /&gt;* Daha sonra kaydetmek istediğimiz verileri çerezin içine yazarız, örneğin aşağıda da görüldüğü gibi kullanıcının kullanıcı adı ve şifresini kaydediyoruz. Bu işlem "Beni Hatırla" seçeneği tıklayan ve her seferinde kullanıcı adını ve şifresini girmek istemeyen kullanıcılar için uygundur.&lt;br /&gt;* Çerezlerin belli bir süre için geçerli olmalarını istiyorsak bunu "cerez.Expires" özelliğine Date(); tipinde bir değişken atayarak belirtiyoruz (veya aşağıdaki gibi oluşturulduğu andan 30 gün sonrasına kadar geçerli olmasını sağlıyoruz). Son olarak da "Response.Cookies.Add(crmCookie)" diyerek çerezimizi istemcinin bilgisayarına kaydetmiş oluyoruz.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;VB&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Dim cerez As HttpCookie = &lt;span style="color:#000099;"&gt;New&lt;/span&gt; HttpCookie(&lt;span style="color:#cc0000;"&gt;"myCOOKIE"&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;cerez.Values.Add(&lt;span style="color:#cc0000;"&gt;"Sifre"&lt;/span&gt;, TextBoxSifre.Text)&lt;br /&gt;cerez.Values.Add(&lt;span style="color:#cc0000;"&gt;"KullAdi"&lt;/span&gt;, TextBoxKull.Text)&lt;br /&gt;cerez.Expires = &lt;span style="color:#339999;"&gt;DateTime&lt;/span&gt;.Now.AddDays(30)&lt;br /&gt;Response.Cookies.Add(cerez)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;C#&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;HttpCookie cerez = &lt;span style="color:#000099;"&gt;new&lt;/span&gt; HttpCookie(&lt;span style="color:#cc0000;"&gt;"myCOOKIE"&lt;/span&gt;); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;cerez.Values.Add(&lt;span style="color:#cc0000;"&gt;"Sifre"&lt;/span&gt;, TextBoxSifre.Text); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;cerez.Values.Add(&lt;span style="color:#cc0000;"&gt;"KullAdi"&lt;/span&gt;, TextBoxKull.Text); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;cerez.Expires = &lt;span style="color:#339999;"&gt;DateTime&lt;/span&gt;.Now.AddDays(30); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;Response.Cookies.Add(cerez);&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#333399;"&gt;Cookie Oku&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Çerez okuma işlemi de oldukça kolay. İlk olarak o kullanıcı için önceden kaydedilmiş çerezimiz olup olmadığına bakarız. Eğer varsa, içinde bulunan "KullAdi" ve "Sifre" değişkenlerin değerlerini Session'a atıyoruz ve ilgili sayfaya yönlendiriyoruz.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;VB&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#000099;"&gt;If Not&lt;/span&gt; cerez &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color:#000099;"&gt;Is Nothing Then&lt;br /&gt;&lt;/span&gt;Session(&lt;span style="color:#cc0000;"&gt;"KULLANICI"&lt;/span&gt;) = cerez.Values(&lt;span style="color:#cc0000;"&gt;"KullAdi"&lt;/span&gt;)&lt;br /&gt;Session(&lt;span style="color:#cc0000;"&gt;"ADSOYAD"&lt;/span&gt;) = cerez.Values(&lt;span style="color:#cc0000;"&gt;"Sifre"&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Response.Redirect(&lt;span style="color:#cc0000;"&gt;"Anasayfa.aspx"&lt;/span&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#000099;"&gt;End If&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;C#&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#000099;"&gt;if &lt;/span&gt;((cerez != &lt;span style="color:#000099;"&gt;null&lt;/span&gt;)) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;{ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Session(&lt;span style="color:#cc0000;"&gt;"KULLANICI"&lt;/span&gt;) = cerez.Values(&lt;span style="color:#cc0000;"&gt;"KullAdi"&lt;/span&gt;); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Session(&lt;span style="color:#cc0000;"&gt;"ADSOYAD"&lt;/span&gt;) = cerez.Values(&lt;span style="color:#cc0000;"&gt;"Sifre"&lt;/span&gt;); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Response.Redirect(&lt;span style="color:#cc0000;"&gt;"Anasayfa.aspx"&lt;/span&gt;); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#333399;"&gt;Cookie Sil&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Bu işlemi çıkış yapıldığında yaparız genelde. Çerezi silmek için onun geçerlilik tarihini eski bir tarihe almak yeterli olacaktır.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;VB&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#000099;"&gt;If Not&lt;/span&gt; Request.Cookies(&lt;span style="color:#cc0000;"&gt;"myCOOKIE"&lt;/span&gt;) &lt;span style="color:#000099;"&gt;Is Nothing Then&lt;/span&gt;&lt;br /&gt;Response.Cookies(&lt;span style="color:#cc0000;"&gt;"myCOOKIE"&lt;/span&gt;).Expires = Now.AddDays(-1)&lt;br /&gt;&lt;span style="color:#000099;"&gt;End If&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#000099;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;font-size:85%;color:#333399;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;C#&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#000099;"&gt;if&lt;/span&gt; ((Request.Cookies(&lt;span style="color:#cc0000;"&gt;"myCOOKIE"&lt;/span&gt;) != &lt;span style="color:#000099;"&gt;null&lt;/span&gt;))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;{ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Response.Cookies(&lt;span style="color:#cc0000;"&gt;"myCOOKIE"&lt;/span&gt;).Expires = Now.AddDays(-1); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;color:#000000;"&gt;Herkese kolay gelsin.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3430704453605558775-4943017410292038913?l=nurtenmehmed.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nurtenmehmed.blogspot.com/feeds/4943017410292038913/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://nurtenmehmed.blogspot.com/2009/02/aspnet-ile-cookie-cerez-islemleri.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/4943017410292038913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/4943017410292038913'/><link rel='alternate' type='text/html' href='http://nurtenmehmed.blogspot.com/2009/02/aspnet-ile-cookie-cerez-islemleri.html' title='ASP.NET ile Cookie (çerez) İşlemleri'/><author><name>Nurten</name><uri>http://www.blogger.com/profile/01131874895114170023</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03193549594053055631'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3430704453605558775.post-1427696075921914261</id><published>2009-01-14T13:05:00.019+02:00</published><updated>2009-01-26T11:40:08.397+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='thread nedir'/><title type='text'>THREAD KAVRAMI NEDIR?</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_rzSW56Qcf0s/SW3W1jnNxWI/AAAAAAAAAB0/_55Nh3Twa5c/s1600-h/c%C4%B1kt%C4%B1.JPG"&gt;&lt;/a&gt;&lt;div&gt;&lt;div&gt;Kabaca thread’ler bir programın paralel ve birbirinden bağımsız işlemler yapmasını sağladığını söyleyebiliriz.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-size:130%;color:#333399;"&gt;&lt;strong&gt;Thread çeşitleri&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;İki tip thread vardır:&lt;br /&gt;· Kullanıcı tarafından oluşturulan thread’ler. – Bir programda oluşturulan thread’ler program için ayrılan adres alanını kullanır, yani onun için işlemci tarafından ayrı bir adres alanı ayrılmaz.&lt;br /&gt;· İşlemci tarafından oluşturulan thread’ler.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#333399;"&gt;Multithreading vs Single Threading&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;· Single threading - İşlemcinin thread kavramını desteklemediği durumlar; programımızda thread kullandığımızı anlamaz.&lt;br /&gt;· Multithreading - İşlemcinin aynı process içinde farklı thread’lerin kullanımını desteklediği durumdur.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img id="BLOGGER_PHOTO_ID_5291114091759217538" style="WIDTH: 320px; CURSOR: hand; HEIGHT: 196px" alt="" src="http://2.bp.blogspot.com/_rzSW56Qcf0s/SW3QO6FfK4I/AAAAAAAAABM/zDQ3n19cEaI/s320/mthread.gif" border="0" /&gt;&lt;/p&gt;&lt;div&gt;· &lt;span style="color:#3366ff;"&gt;MS-DOS&lt;/span&gt; - support a single user process and a single thread&lt;br /&gt;· &lt;span style="color:#3366ff;"&gt;UNIX &lt;/span&gt;- supports multiple user processes but only supports one thread per process&lt;br /&gt;· &lt;span style="color:#3366ff;"&gt;Solaris&lt;/span&gt; - supports multiple threads&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5291114834191991506" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 175px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_rzSW56Qcf0s/SW3Q6H3QQtI/AAAAAAAAABc/iUn41WmpXPo/s320/thread_stack.gif" border="0" /&gt; Yukardaki şekilde iki kavramın belleği nasıl kullandıkları gösterilmiştir. Görüldüğü üzere multittreading’te User Address Space tektir, yani o process tarafından oluşturulan tüm thread’ler aynı alanı paylaşırlar. &lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5291119811116590866" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 209px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_rzSW56Qcf0s/SW3Vb0Wi5xI/AAAAAAAAABk/V8bl9PVFl1g/s320/solaris_thr.gif" border="0" /&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#333399;"&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;Thread’lerin çakışması nasıl önlenir?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;Bu mutex sayesinde olur. Mutex, Process Control Block’un içinde bulunan bir çeşit global değişkendir; açılımı &lt;a href="http://sozluk.sourtimes.org/show.asp?t=mutual%20exclusion"&gt;mutual exclusion&lt;/a&gt; dur ve deadlock (işlemler düğümünü) önlemek için threadlerin kullandığı bir değişkendir. Bir thread CPU, I/O vb. gibi bir yerde işlem yapacağı zaman mutex değişkenine değer atarak o alanı kullanıldığını ifade eder. Bu sırada başka bir thread tarafından o alanda işlem yapılacaksa mutexin sıfırlanmasını bekler ve daha sonra kendisi mutex’e değer atarak işlemini gerçekleştirir. &lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5291120698154655986" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 243px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_rzSW56Qcf0s/SW3WPc05oPI/AAAAAAAAABs/mM4lrvFxmLw/s320/mutex.JPG" border="0" /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color:#333399;"&gt;&lt;strong&gt;Örnek&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Diyelim ki kullanıcının klavyeden herhangi bir input girmesini bekleyen bir program yazmak istiyouz, o zaman “Console.WriteLine("Bir input giriniz…");” yazarız ve programımız kullanıcı herhangi bir input girene kadar bekleyecektir.&lt;br /&gt;Fakat, diyelim ki bu bir chat programı ve aynı zamanda soketleri de dinleyerek gelen veri olup olmadığını kontrol etmek istiyoruz. Eğer sadece soketleri dinleyen program yazarsak program çalıştığınıda soketlerde veri görene kadar bekleyecektir ve bu zaman içerisinde başka bir işlem yapamayacaktır.&lt;br /&gt;Bir chat programını ancak thread mantığı ile yapabiliriz: İki tane thread metodu oluştururuz, bir tanesi soketi dinleyen metod olur, diğeri ise kullanıcıdan input bekleyen metod olacaktır. Daha sonra iki tane thread oluştururuz; thread’i oluşturma sırasında birine ekrandan input alan metodun adını yazarak ilkleriz, diğerine de soket metodunu çalıştır deriz:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Thread workerThread = new Thread(ScreenInput);&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;div&gt;&lt;br /&gt;Thread workerThread2 = new Thread(SocketData);&lt;/div&gt;&lt;div&gt;&lt;/span&gt;&lt;br /&gt;Herhangi biri tetiklendiğinde (örneğin ekrandan input girişi yapıldı veya soketten veri yakalandı) o zamano işi yapan thread işini bitirene kadar çalışır ve tekrar arka plana geri dönerek beklemeye devam eder.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#333399;"&gt;Kod örneği&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Aşağıda bulunan örnekte bir thread oluşturuluyor ve çalışmaya başladığında ekrana “worker thread: working...” yazısını yazdıran metodu çalıştırıyoruz. Thread’i 1 saniye bekleterek metodu durduruyoruz ve metodun sonlandığını yazdırıyoruz ekrana.&lt;br /&gt;Bir thread workerThread.Start()denildiği zaman çalışmaya başlar.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:courier new;font-size:78%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Text;&lt;br /&gt;using System.Threading;&lt;br /&gt;&lt;br /&gt;namespace ConsoleApplication1&lt;br /&gt;{&lt;br /&gt;class Program&lt;br /&gt;{&lt;br /&gt;static void Main(string[] args)&lt;br /&gt;{&lt;br /&gt;// Burada thread objesi yaratılmakta. Bu satırlar threadi çalıştırmaz,&lt;br /&gt;// sadece oluşturur.&lt;br /&gt;Worker workerObject = new Worker();&lt;br /&gt;Thread workerThread = new Thread(workerObject.DoWork);&lt;br /&gt;&lt;br /&gt;// Worker thread’i çalıştır.&lt;br /&gt;workerThread.Start();&lt;br /&gt;Console.WriteLine("main thread: Starting worker thread...");&lt;br /&gt;&lt;br /&gt;// Eğer worker thread çalışır haldeyken&lt;br /&gt;// yapılmasını istediğimiz birşey varsa&lt;br /&gt;// while (!workerThread.IsAlive){ Console.Writeline(); ... }; yazarız.&lt;br /&gt;// Eğer döngü içinde sleep() kullanarak çalışma süresi vermezsek&lt;br /&gt;// sonsuz döngüye girer.&lt;br /&gt;&lt;br /&gt;// main thread’i 1 milisaniye kadar duraklatıp&lt;br /&gt;// bu zaman içerisinde worker thread ekrana yazı basar.&lt;br /&gt;Thread.Sleep(1);&lt;br /&gt;&lt;br /&gt;// worker thread’in durdurulması sağlanır&lt;br /&gt;workerObject.RequestStop();&lt;br /&gt;&lt;br /&gt;// Join metodunu şu anda çalışan thread’i bloke etmek için kullanılır&lt;br /&gt;workerThread.Join();&lt;br /&gt;Console.WriteLine("main thread: Worker thread has terminated.");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class Worker&lt;br /&gt;{&lt;br /&gt;// Bu metod thread başlatıldığında çağırılır&lt;br /&gt;public void DoWork()&lt;br /&gt;{&lt;br /&gt;while (!_shouldStop)&lt;br /&gt;{&lt;br /&gt;Console.WriteLine("worker thread: working...");&lt;br /&gt;}&lt;br /&gt;Console.WriteLine("worker thread: terminating gracefully.");&lt;br /&gt;}&lt;br /&gt;public void RequestStop()&lt;br /&gt;{&lt;br /&gt;_shouldStop = true;&lt;br /&gt;}&lt;br /&gt;// Volatile derleyiciye bu verinin birkaç thread tarafından&lt;br /&gt;// kullanılacağını söyler&lt;br /&gt;private volatile bool _shouldStop;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;div&gt;Bu programı çalıştırdığımızda böyle bir çıktı elde ederiz:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5291121352811332962" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 159px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_rzSW56Qcf0s/SW3W1jnNxWI/AAAAAAAAAB0/_55Nh3Twa5c/s320/c%C4%B1kt%C4%B1.JPG" border="0" /&gt;&lt;/div&gt;Burada main thread de work thread de aynı zamanda çalışıyor biz sadece ekran çıktısını görmek adına main thread’e sleep() komutuyla bekle dedik.&lt;br /&gt;main thread’e sleep demek yerine başka işlem de yaptırabilirdik ve iki thread de aynı zamanda da arka planda çalışır durumda olacaktı. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3430704453605558775-1427696075921914261?l=nurtenmehmed.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nurtenmehmed.blogspot.com/feeds/1427696075921914261/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://nurtenmehmed.blogspot.com/2009/01/thread-kavrami-nedir.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/1427696075921914261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/1427696075921914261'/><link rel='alternate' type='text/html' href='http://nurtenmehmed.blogspot.com/2009/01/thread-kavrami-nedir.html' title='THREAD KAVRAMI NEDIR?'/><author><name>Nurten</name><uri>http://www.blogger.com/profile/01131874895114170023</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03193549594053055631'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_rzSW56Qcf0s/SW3QO6FfK4I/AAAAAAAAABM/zDQ3n19cEaI/s72-c/mthread.gif' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3430704453605558775.post-357933518372169424</id><published>2008-12-19T12:21:00.009+02:00</published><updated>2009-01-26T11:38:46.230+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='smtp'/><category scheme='http://www.blogger.com/atom/ns#' term='asp.net e-mail'/><title type='text'>ASP.NET ile Mail Gönderimi - SMTP Authentication</title><content type='html'>Eğer SMTP server'ınız yoksa bunu Gmail hostunu kullanarak yapabilirsiniz. Bunun için bir gmail hesabına ihtiyacınız olacaktır.&lt;br /&gt;Gönderme işlemini yapan fonksiyon aşağıda gösterilmiştir.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="color:#000099;"&gt;Public Sub&lt;/span&gt; SendMail(ByVal sHost As String, ByVal nPort As Integer, ByVal sUserName As String, ByVal sPassword As String, ByVal sFromName As String, ByVal sFromEmail As String, _&lt;br /&gt;ByVal sToName As String, ByVal sToEmail As String, ByVal sCC As String, ByVal sHeader As String, ByVal sMessage As String, ByVal fSSL As Boolean)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Dim Mail As New System.Web.Mail.MailMessage()&lt;br /&gt;&lt;span style="color:#000099;"&gt;If&lt;/span&gt; sToName.Length = 0 &lt;span style="color:#000099;"&gt;Then&lt;/span&gt;&lt;br /&gt;sToName = sToEmail&lt;br /&gt;&lt;span style="color:#000099;"&gt;End If&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;If&lt;/span&gt; sFromName.Length = 0 &lt;span style="color:#000099;"&gt;Then&lt;/span&gt;&lt;br /&gt;sFromName = sFromEmail&lt;br /&gt;&lt;span style="color:#000099;"&gt;End If&lt;br /&gt;&lt;/span&gt;Mail.Fields(&lt;span style="color:#990000;"&gt;"http://schemas.microsoft.com/cdo/configuration/smtpserver"&lt;/span&gt;) = sHost&lt;br /&gt;Mail.Fields(&lt;span style="color:#990000;"&gt;"http://schemas.microsoft.com/cdo/configuration/sendusing"&lt;/span&gt;) = 2&lt;br /&gt;Mail.Fields(&lt;span style="color:#990000;"&gt;"http://schemas.microsoft.com/cdo/configuration/smtpserverport"&lt;/span&gt;) = nPort.ToString()&lt;br /&gt;&lt;span style="color:#000099;"&gt;If&lt;/span&gt; fSSL &lt;span style="color:#000099;"&gt;Then&lt;/span&gt;&lt;br /&gt;Mail.Fields(&lt;span style="color:#990000;"&gt;"http://schemas.microsoft.com/cdo/configuration/smtpusessl"&lt;/span&gt;) = "true"&lt;br /&gt;&lt;span style="color:#000099;"&gt;End If&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;If&lt;/span&gt; sUserName.Length = 0 &lt;span style="color:#000099;"&gt;Then&lt;/span&gt;&lt;br /&gt;'nothing&lt;br /&gt;&lt;span style="color:#000099;"&gt;Else&lt;/span&gt;&lt;br /&gt;Mail.Fields(&lt;span style="color:#990000;"&gt;"http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"&lt;/span&gt;) = 1&lt;br /&gt;Mail.Fields(&lt;span style="color:#990000;"&gt;"http://schemas.microsoft.com/cdo/configuration/sendusername"&lt;/span&gt;&lt;span style="color:#000000;"&gt;)&lt;/span&gt; = sUserName&lt;br /&gt;Mail.Fields(&lt;span style="color:#990000;"&gt;"http://schemas.microsoft.com/cdo/configuration/sendpassword"&lt;/span&gt;) = sPassword&lt;br /&gt;&lt;span style="color:#000099;"&gt;End If&lt;/span&gt;&lt;br /&gt;Mail.[To] = sToEmail&lt;br /&gt;Mail.Cc = sCC&lt;br /&gt;Mail.From = sFromEmail&lt;br /&gt;Mail.Subject = sHeader&lt;br /&gt;Mail.Body = sMessage&lt;br /&gt;Mail.BodyFormat = System.Web.Mail.MailFormat.Html&lt;br /&gt;&lt;span style="color:#000099;"&gt;Dim&lt;/span&gt; attStr &lt;span style="color:#000099;"&gt;As String&lt;/span&gt; = ""&lt;br /&gt;&lt;span style="color:#000099;"&gt;Dim&lt;/span&gt; attachCount &lt;span style="color:#000099;"&gt;As Integer&lt;/span&gt; = 0&lt;br /&gt;&lt;span style="color:#000099;"&gt;For&lt;/span&gt; attachCount = 0&lt;span style="color:#000099;"&gt; To&lt;/span&gt; ASPxComboBoxAttach.Items.Count - 1&lt;br /&gt;&lt;span style="color:#000099;"&gt;Dim&lt;/span&gt; att &lt;span style="color:#000099;"&gt;As New&lt;/span&gt; Mail.MailAttachment(ASPxComboBoxAttach.Items(attachCount).ToString())&lt;br /&gt;Mail.Attachments.Add(att)&lt;br /&gt;&lt;span style="color:#000099;"&gt;Next&lt;/span&gt;&lt;br /&gt;System.Web.Mail.SmtpMail.SmtpServer = sHost&lt;br /&gt;&lt;span style="color:#000099;"&gt;Dim&lt;/span&gt; SendControl &lt;span style="color:#000099;"&gt;As Integer&lt;/span&gt; = 1&lt;br /&gt;&lt;span style="color:#000099;"&gt;Try&lt;/span&gt;&lt;br /&gt;System.Web.Mail.SmtpMail.Send(Mail)&lt;br /&gt;SendControl = 2&lt;br /&gt;&lt;span style="color:#000099;"&gt;Catch&lt;/span&gt; ex &lt;span style="color:#000099;"&gt;As&lt;/span&gt; Exception&lt;br /&gt;SendControl = 1&lt;br /&gt;&lt;span style="color:#000099;"&gt;End Try&lt;/span&gt;&lt;br /&gt;Response.Redirect(&lt;span style="color:#990000;"&gt;"NewMail.aspx?send="&lt;/span&gt; &amp;amp; SendControl)&lt;br /&gt;&lt;span style="color:#000099;"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;font-size:100%;color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;font-size:100%;color:#000000;"&gt;Yukardaki fonksiyonu çağırırken aldığı parametrelerin ilk değeri (sHost) &lt;span style="color:#cc0000;"&gt;"smtp.gmail.com"&lt;span style="color:#000000;"&gt; olmalı&lt;/span&gt; &lt;/span&gt;ve ikinci değeri (nPort) de &lt;span style="color:#cc0000;"&gt;465&lt;/span&gt; olmalı. Sonuncu değeri de &lt;span style="color:#cc0000;"&gt;"true"&lt;/span&gt; yapın.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;span style="font-family:georgia;font-size:100%;color:#000000;"&gt;Diğer değerler ise sizin belirleyeceğiniz değerlerdir.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;3. Gmail e-postanızı giriniz. Örn. &lt;a href="mailto:abc@gmail.com"&gt;abc@gmail.com&lt;/a&gt;&lt;br /&gt;4. Hesabınızın şifresini girin. Örn. "123456"&lt;br /&gt;5. Gönderen adı.&lt;br /&gt;6. Gönderen kişi olarak görünmesini istediğiniz e-posta adresi.&lt;br /&gt;7. Alıcı ismi.&lt;br /&gt;8. Alıcı e-posta.&lt;br /&gt;9. Bilgi mesajı olarak e-postanın gitmesini istediğiniz diğer e-postalar.&lt;br /&gt;10. E-posta başlığı.&lt;br /&gt;11. E-mail içeriği. Yani mesajınızı giriniz.&lt;br /&gt;12. Az önce de dediğim gibi bu değeri TRUE olarak yazın.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;P.S.&lt;/strong&gt; Yukarıda kullanılan kod bizzat denenmiştir ve çalıştığı görülmüştür fakat gerçekleştirimi için eski 'System.Web.Mail' sınıfları kullanılmıştır. Mail işlemleri için şu anda yeni 'System.Net.Mail' sınıfları mevcuttur. İki sınıf da aynı işlemi yapmaktadır ve eskisini kullanmakta hiçbir sakınca yoktur. Yine de yeni sınıfları kullanarak mail göndermek isteyenler varsa aşağıdaki kodu kullanabilirler:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Dim Mail As New System.Net.Mail.MailMessage&lt;br /&gt;Mail.IsBodyHtml = True&lt;br /&gt;Mail.Body = html&lt;br /&gt;Mail.To.Add(New System.Net.Mail.MailAddress("&lt;/span&gt;&lt;a href="mailto:hedef@mail.com"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;hedef@mail.com&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;"))&lt;br /&gt;Mail.From = New System.Net.Mail.MailAddress("&lt;/span&gt;&lt;a href="mailto:gonderen@mail.com"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;gonderen@mail.com&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;")&lt;br /&gt;Dim server As New System.Net.Mail.SmtpClient("mail.sunucum.com")&lt;br /&gt;server.Credentials = New System.Net.NetworkCredential("kullanıcı adı", "şifre")&lt;br /&gt;server.Send(Mail)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3430704453605558775-357933518372169424?l=nurtenmehmed.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nurtenmehmed.blogspot.com/feeds/357933518372169424/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://nurtenmehmed.blogspot.com/2008/12/aspnet-ile-gmail-hostunu-kullanarak.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/357933518372169424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/357933518372169424'/><link rel='alternate' type='text/html' href='http://nurtenmehmed.blogspot.com/2008/12/aspnet-ile-gmail-hostunu-kullanarak.html' title='ASP.NET ile Mail Gönderimi - SMTP Authentication'/><author><name>Nurten</name><uri>http://www.blogger.com/profile/01131874895114170023</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03193549594053055631'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3430704453605558775.post-8211718568439552759</id><published>2008-12-17T17:18:00.004+02:00</published><updated>2009-01-12T17:36:13.656+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cab dosyaları'/><category scheme='http://www.blogger.com/atom/ns#' term='windows mobile yazılım'/><title type='text'>Windows Mobile için CAB dosyalarını birleştirerek kurulum sihirbazı oluşturma</title><content type='html'>Öncelikle kısaca CAB dosyaları nedir ondan bahsedelim.&lt;br /&gt;*.cab dosyası PocketPC'lerde kullanılan kurulum dosyası olarak çalışmaktadır (Örn. windows üzerinde çalışan *.exe dosyaları gibi bunlar da Windows Mobile Platformunda aynı işlevi görmektedir)&lt;br /&gt;Windows Mobile 5.0 PocketPC için hazırlanan CAB uzantılı bir yazılım projesi geliştirdiğimi düşünün. Onu kurmam için .NET Compact Framework, SQL Compact Edition, v.b. yazılımlar daha kurmam gerekiyordu. Yani toplamda 5 adet yazılım sonunda benim projem düzgün çalışabilecekti. Tüm bu *.cab dosyalarını ayrı ayrı yüklemektense tek bir cab dosyası haline getirmek istedim. Uzun araştırmalar sonucunda birkaç yöntem denedim, ama hiçbiri tam olarak istediğim şeyi yapmıyordu... Şöyle ki benim istediğim sadece cab dosyalarını birleştirmek değil ayrıca açtığında da bunların tek tek kurulmasını sağlamaktı.&lt;br /&gt;&lt;br /&gt;Unutmadan: NSIS diye kurulum dosyası hazırlama programı var ama onun dosyalarını açmak için öncelikle onu kurmanız gerekiyor; fakat amacım kurulumu tek dosyaya indirmek olduğu için bu yazılımı ve şu an aklıma gelmeyen benzerlerini kullanmadım.&lt;br /&gt;&lt;br /&gt;1) İlk denemem Visual Studio 2005 kullanarak bir setup dosyası oluşturmaktı.&lt;br /&gt;Bu denemeye çok fazla zaman harcadım açıkçası. Burada tüm cab dosyalarınızı birleştirip tek dosya haline getirebiliyorsunuz, ayrıca dll dosyası oluşturup "Private Sub Installer_AfterInstall(...)" fonksiyonuyla onların kurulumunu yapabilirsiniz. Ben denedim ama yine bir sürü hatayla karşılaşıp tek tek onları gidermeye çalışırken çok sıkıldım açıkçası ve başka yöntemler aramaya yöneldim; &lt;span style="font-size:78%;"&gt;olmazsa geri dönerim mantığıyla :) neyse ki gerek kalmadı.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&gt;&lt;br /&gt;2) İkinci denememde Installshield programını kullandım. Onunla cab dosyalarını birleştirdiğimiz zaman kurulum dosyası çalışıyor fakat yüklendiğinde içindeki dosyalar çalıştırılmıyor, sadece onları bir dizine çıkarıyor ve teker teker hepsini kurmak gerekiyor. Yani bu işlem de yine işime yaramadı.&lt;br /&gt;&lt;br /&gt;3) Neyse ki bu son denememdi :)&lt;br /&gt;Çok basit ve tam istediğim şeyi yapan bir çözüm.&lt;br /&gt;"Basic4ppc" yazılımı PocketPC'ler için bir yazılım geliştirme ortamı. Arayüzü VS.NET'e çok benziyor ve kullanmakta zorluk çekmiyorsunuz, kullanımı çok kolay. Cep bilgisayarına özel form oluşturma seçeneğiyle istediğiniz form dizaynı ile kurulum sihirbazını oluşturabiliyorsunuz. Yazdığınız birkaç satırlık kod ile hangi dosyaları hangi sırayla kurmak istediğini belirtebiliyorsunuz. Proje debug edildiğinde exe dosyasını alıp onu PocketPC'nizin içine koyup oradan kurabiliyorsunuz.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.basic4ppc.com/"&gt;http://www.basic4ppc.com/&lt;/a&gt; - "Basic4ppc (Basic for Pocket PC), is a simple yet powerful development environment which targets Windows Mobile, Pocket PC devices and Windows desktops."&lt;br /&gt;&lt;br /&gt;Umarım bu bilgiler yardımcı olmuştur. Belirtmeyi unuttuğum veya eksik yazdığım kısımlar varsa lütfen sorun.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3430704453605558775-8211718568439552759?l=nurtenmehmed.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nurtenmehmed.blogspot.com/feeds/8211718568439552759/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://nurtenmehmed.blogspot.com/2008/12/windows-mobile-50-cab-dosyalarn.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/8211718568439552759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/8211718568439552759'/><link rel='alternate' type='text/html' href='http://nurtenmehmed.blogspot.com/2008/12/windows-mobile-50-cab-dosyalarn.html' title='Windows Mobile için CAB dosyalarını birleştirerek kurulum sihirbazı oluşturma'/><author><name>Nurten</name><uri>http://www.blogger.com/profile/01131874895114170023</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03193549594053055631'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3430704453605558775.post-545045508363947835</id><published>2008-12-22T10:10:00.007+02:00</published><updated>2008-12-22T10:47:01.437+02:00</updated><title type='text'>Bluetooth Barkod okuyucudan PocketPC'ye veri aktarma</title><content type='html'>Kablosuz barkod okuyucuları birçok alanda kullanım kolaylığı sağlamakta. Örneğin bir deponun ürün giriş çıkışlarını kemerinize bağlı barkod okuyucusuyla kontrol edebilirsiniz.&lt;br /&gt;Bir miktar hafısazı bulunan bu aygıtlar ayrıca bluetooth seri port aracılığıyla veriyi bilgisayarınıza/PocketPC'inize aktarabilirsiniz.&lt;br /&gt;Bu makalede size barkod okuyucudan PDA'nıza veri aktarma yolunu anlatacağım.&lt;br /&gt;Öncelikle PDA'nızın bluetooth'unu aktif hale getirin:&lt;br /&gt;Start -&gt; Settings -&gt; Connections&lt;br /&gt;1) "Turn on Bluetooth" seçin&lt;br /&gt;2) Altında bulunan "Make this device discoverable to other devices" seçin&lt;br /&gt;3) "Devices" sekmesine gelip "New Partnership..." tıklayarak bluetooth barkod okuyucunuzu bulun.&lt;br /&gt;Not: barkod okuyucunun açık olduğundan emin olun.&lt;br /&gt;4) Daha sonra "COM Ports" sekmesine gelin ve "New Incoming Port..." tıklayarak COM4 seçin.&lt;br /&gt;5) "Outgoing Port..." olarak da barkod cihazınızı seçmelisiniz.&lt;br /&gt;&lt;br /&gt;Bu ayarları yaptıktan sonra sıra barkod okuyucumuzla okuduklarımızı PocketPC'mize yansıtmak kaldı.&lt;br /&gt;Bunu VB'de yazılmış birkaç satır ile gerçekleştirebiliriz. Her bir okuma işlemi thread mantığı ile yapılmaktadır.&lt;br /&gt;&lt;br /&gt;* İlk önce VB.net ile bir Visual Basic -&gt; SmartDevice -&gt; Windows CE 5.0 projesi oluşturun.&lt;br /&gt;* Projenize toolbox'tan "SerialPort" ve bir de textbox ekleyin. İsimlerini default değerleriyle bırakın, değiştirmeyin.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Form1.vb&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Imports System.Threading&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;br /&gt;Public Class Form1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Private trd As Thread&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;br /&gt;Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort.DataReceived&lt;br /&gt;TextBox1.BeginInvoke(New myDelegate(AddressOf updateTextBox), New Object() {})&lt;br /&gt;End Sub&lt;br /&gt;Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load&lt;br /&gt;If SerialPort.IsOpen Then&lt;br /&gt;SerialPort.Close()&lt;br /&gt;End If&lt;br /&gt;With SerialPort&lt;br /&gt;.PortName = "COM4"&lt;br /&gt;.BaudRate = 9600&lt;br /&gt;.Parity = IO.Ports.Parity.None&lt;br /&gt;.DataBits = 8&lt;br /&gt;.StopBits = IO.Ports.StopBits.One&lt;br /&gt;End With&lt;br /&gt;SerialPort.Open()&lt;br /&gt;End Sub&lt;br /&gt;Public Delegate Sub myDelegate()&lt;br /&gt;Public Sub updateTextBox()&lt;br /&gt;TextBox1.Text = ""&lt;br /&gt;TextBox1.Text = SerialPort.ReadExisting&lt;br /&gt;End Sub&lt;br /&gt;End Class&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Projeyi çalıştırdığınızda PDA'nı erişim izni isteyebilir, onları onayladıktan sonra formumuz açılacaktır.&lt;br /&gt;Şimdi barkod okuyucunuzla birşeyi okuyyuğunuzda formumuzun textbox'una yansıdığını göreceksiniz.&lt;br /&gt;&lt;br /&gt;Herkese iyi çalışmalar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3430704453605558775-545045508363947835?l=nurtenmehmed.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nurtenmehmed.blogspot.com/feeds/545045508363947835/comments/default' title='Kayıt Yorumları'/><link rel='replies' type='text/html' href='http://nurtenmehmed.blogspot.com/2008/12/bluetooth-barkod-okuyucudan-pocketpcye.html#comment-form' title='0 Yorum'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/545045508363947835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3430704453605558775/posts/default/545045508363947835'/><link rel='alternate' type='text/html' href='http://nurtenmehmed.blogspot.com/2008/12/bluetooth-barkod-okuyucudan-pocketpcye.html' title='Bluetooth Barkod okuyucudan PocketPC&apos;ye veri aktarma'/><author><name>Nurten</name><uri>http://www.blogger.com/profile/01131874895114170023</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='03193549594053055631'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>