Bildiğimiz üzere SQL Server Management Studio varsayılan olarak Autocommit modunda çalışır. Bunun manası ne zaman bir transaction çalışsa tüm yapılan değişiklikler commit edilir. Yani eğer transaction içerisinde rollback yapmıyorsanız, yaptığınız değişiklikler kalıcı olarak veritabanına kaydedilir.
Eğer bu özelliği kapatmak istiyorsanız. Aşağıdaki adımları takip edin.
1. SSMS ile SQL Server'a bağlanın.
2. Menüden Tools -> Options 'i seçin.
3. Açılan pencereden Query Execution -> SQL Server -> ANSI tabını seçin.
4. SET IMPILICIT_TRANSACTIONS seçeneğini işaretleyin.
5. Sonra OK butonuna basıp kaydedin.
29 Aralık 2014 Pazartesi
Sql Server Management Studio'nun auto commit özelliğini kapatma
10 Ekim 2014 Cuma
InvokeRequired nedir?
En basit anlamıyla; Bir windows kontrolünün metoduna, kontrolün yaratıldığı threadin dışında başka bir thread üzerinden erişilmeye çalışıldığında, erişim için bir invoke methoduna ihtiyaç duyup duymadığını belirten bir değerdir.
Eğer kontrol başka bir thread üzerinde yaratılmışsa true döner aksi halde false döner.
Windows Forms ta kontroller belli bir thread'e bağlıdır ve thread safe değillerdir. (Hayda thread safe ne yahu?)
Thread Safe: Bir kaynağa veya fonksiyona herhangi bir zamanda sadece bir tek threadin erişimini garanti etmek gibi diyebiliriz. Bir banka hesabı düşünün ToplamPara adında bir değişkeni olsun ve bu değişkenin değeri 100 olsun. 2 kişi aynı anda bu banka hesabı üzerinde işlem yapıyor diyelim. Birinci kişi 100 lira para çekmeye çalışsın diğer kişide 100 lira para yatırmaya çalışsın. Her ikisi de aynı anda işlem yapmaya çalıştığı için ekranda 100 lira değerini görüyor. Eğer hesapta bulunan toplam para değerine erişimi bir hizaya dizmez ise birinci kişi 100 lira çektiğinde ToplamPara değişkeninin değerini 0 (ToplamPara - 100 = 0) olarak değiştirir . İkinci kişi ise bu değişkeni 200(ToplamPara + 100 = 200) olarak değiştirir. Sonuçta hesabın ToplamPara değeri 200 olur ama doğrusu 100 olmalıydı. İşte bunun olmaması için iki kişinin ToplamPara değişkenine aynı anda erişimini engellemeliyiz. İşte Windows forms kontrolleri bunu sağlamayı garanti etmediği için thread safe değillerdir.
InvokeRequired property'sine ek olarak thread safe olan 4 tane method bulunmaktadır. Bunlar: Invoke, BeginInvoke, EndInvoke and CreateGraphics metodlarıdır.
Eğer kontrolün handle'ı henüz oluşturulmamışsa InvokeRequired, window handle'ı elinde bulunduran form veya window'u bulana kadar kontrolün parentlarını aramaya başlar. Eğer bulamazsa false değeri döner.
Bunun anlamı, ya kontrolün methoduna erişmek için Invoke kullanmaya gerek yoktur (kontrolün metoduna kontrolün yaratıldığı threadden ulaşılmaya çalışılmaktadır.) ya da kontrol başka bir thread üzerinde yaratılmıştır ama kontrolün handle ı henüz oluşturulmamıştır. (Bir de böyle bişey var malesef!)
Böyle kontrolün handle'ının henüz oluşturulmadığı durumlarda kontrolün property,metod ve eventlerine ulaşmaya çalışmayınız. Çünkü siz ulaşmaya çalıştığınızda handle henüz yeni oluşturuluyor olabilir.
Böyle durumlarda IsHandleCreated propertysinide kontrol etmeniz gerekmektedir. Handle henüz yaratılmamışsa, Invoke ya da BeginInvoke methodunu handle yaratılana kadar çağırmayınız. Bu senaryo çok fazla karşınıza çıkmaz eğer background threadi formun constructorunda oluşturmuyorsanız ya da yada formu göstermeden önce çağırmıyorsanız.
Bunun çözümü ya handle yaratılana kadar bekleyeceksiniz ya da Handle propertysini çağırarak zorla yaratılmasını sağlayacaksınız.
Umarım InvokeRequired nedir, anlayabilmiş ve anlatabilmişimdir.
Etiketler:
.net,
BeginInvoke,
C#,
Invoke,
InvokeRequired,
Nedir,
Windows Forms
26 Aralık 2013 Perşembe
SQL - Count() ile Count_Big() Fonksiyonları Arasındaki Fark
Bazen SQL sorgularımızda veritabanındaki kayıtların sayısına ihtiyacımız olabilir. Bunun için genellikle Count() fonksiyonunu kullanırız. Şimdi SQL Server Count_Big() isimli başka bir fonkisyona sahip. Kendi kendime bu acaba başka bir aggregate fonksiyonumudur diye sordum. Cevap HAYIR.
Count() ve Count_Big() aslında aynı işi yapan fonksiyonlardır. Aralarındaki tek fark Count() fonksiyonu Int tipinde bir değer dönderirken Count_Big() fonksiyonu BigInt tipinde bir değer dönderir.
Yani tablonuzda milyonlarca kayıt varsa Count() fonksiyonunu kullandığınızda hatayla karşılaşırsınız ancak Count_Big() fonksiyonunu kullanırsanız hiçbir sorun çıkmaz.
Count() Fonksyionu:
Count_Big Fonction :
Count() ve Count_Big() aslında aynı işi yapan fonksiyonlardır. Aralarındaki tek fark Count() fonksiyonu Int tipinde bir değer dönderirken Count_Big() fonksiyonu BigInt tipinde bir değer dönderir.
Yani tablonuzda milyonlarca kayıt varsa Count() fonksiyonunu kullandığınızda hatayla karşılaşırsınız ancak Count_Big() fonksiyonunu kullanırsanız hiçbir sorun çıkmaz.
Count() Fonksyionu:
Select Count(Column_Name) From Table_Name |
Select Count_Big(Column_Name) From Table Name
21 Eylül 2012 Cuma
Scrum Nedir
Scrum, kısa döngüler ile çıktı üretme ve sürekli iyileştirme felsefesi üzerine oturan “çevik” proje yönetimi uygulamalarından biridir. Diğer çevik metodlojilere; eXtreme Programming, Adaptive Software Development, Crystal Clear, Feature Driven Development ve Lean Software Development örnek olarak verilebilir. Bunlar arasında en popüler olanları Extreme Programming ve Scrum’dır. Microsoft Solutions Framework Agile metodolojiler için de süreç kılavuzları sunmaktadır.
Scrum Jeff Sutjerland ve Ken Schawaber tarafından 1990’ların ortalarında geliştirilmiştir. Kapsam perspektifinden bakıldığında yüksek seviyede belirsizlik arzeden projelerde son yıllarda yoğun biçimde uygulanan ve başarılı sonuçlar üreten bir tür metololidir. Scrum, küçük takımlarda (20 kişiden az) uygulaması kolay olan bir proje yönetimi yöntemi olup, büyük projelerde takımların küçük parçalara ayrılması ile etkinleştirilir. Scrum değişimi bir istisna olarak görmeyen, adaptif sistem geliştirme hayat döngüsü perspektiflerinin genel özelliğine paralel olarak proje kapsamının proje boyunca sürekli değişeceğini en baştan kabul eden bir yöntemdir. Bu kabul doğrultusunda Scrum, fazla dokümantasyon yapmadan, kısa periyotlarda geliştirme yapılıp, sonuçların müşteriye sıkça gösterildiği ve geribeslemeler doğrultusunda geliştirmelerin yönünün sürekli değiştiği, gereksiz geliştirmelerin minimuma indirilmeye çalışıldığı bir sürecin yönetimini üstlenir.
Scrum’ın süreçlerini kısaca ifade etmekte fayda var. Bu bağlamda Product Backlog, Sprint Backlog, Sprint ve Scrum toplantılarına kısaca değinelim. Scrum projelerinde ilk yapılan proje sponsorları ile bir masaya oturulup projenin kapsamını ifade eden “Product Backlog”u çıkartmaktır. “Product Backlog” proje sonunda üretilmesi beklenen sistemin özellik ve fonksiyonlarının önceliklerine göre yazıldığı bir liste dokümanıdır. Bu dokümanda, sponsorun ihtiyaçları ve istekleri öncelik sırasına konarak listelenir. Proje süresince bu doküman proje sponsoru tarafından sürekli güncellenir; yeni fonksiyon ve özellikler listeye eklenir, mevcut fonksiyon ve özelliklerin öncelikleri değiştirilebilir.
Scrum yöntemi ile yönetilen projeler “sprint” denilen fazlara ayrılır. Herbir “sprint”in süresi genellikle (en fazla) 30 gündür. İdeal olan proje boyunca boyunca tüm “sprint”ler aynı süreli olur. Proje takımı (scrum team), proje yöneticisi (scrum master) ile her sprint başlangıcında masaya oturarak yeni “sprint” dahilinde geliştirilecek özellik ve fonksiyonları belirler. Bu süreçte seçilen fonksiyon ve özellikler daha önceden oluşturulmuş ve sürekli güncellenen Product Backlog listesindeki sıra ile en öncelikli olanlardır. Hiçbir zaman önceliği düşük bir özellik veya fonskyon önceliği yüksek bir özellik veya fonskyiondan önce geliştirilemez. Bu bağlamda bazı “sprint”lerde proje takımı, Product Backlog’dan 4 eleman, bazı sprint’lerde 25 eleman seçebilir. Seçilen özellik ve fonksiyonlar Sprint Backlog denilen ikinci bir listeye aktarılır. Proje takımı bir sonraki sprint başlangıcına kadar bir daha Product Backlog’a bakmaz, o sprint dahilinde sadece ilgili Sprint Backlog listesine odaklanır.
Sprint Backlog dahilindeki her özellik veya fonsksiyon için maksimum 3 günlük geliştirme süresi verilir. Bu sürede sözkonusu elemanın geliştirmesinin tamamlanmasına çalışılır. Scrum takımı her sabah Scrum Master eşliğinde “Scrum” denilen günlük toplantısını yapar. Bu toplantıya tüm takım üyeleri katılmak zorundadır. Scrum toplantısına proje takımı dışındaki diğer proje paydaşları da katılabilir; ancak onların toplantı sırasında kesinlikle konuşma hakları yoktur; sadece dinleyici olabilirler. Konuşan paydaşlar bir sonraki “Scrum” toplantısına alınmaz. Scrum toplantılarında kimse oturmaz; herkes ayaktadır. Scrum toplantısında bir önceki gün yapılanlar, o gün yapılacaklar, karşılaşılan ve karşılaşılabilecek riskler tartışılır. Scrum toplantısı en fazla 15 dakika sürer.
Her sprint sonunda sprint raporu çıkarılır. Bu rapor dikey ekseni kalan Sprint Backlog’da bulunan ve daha geliştirilmemiş özellik ve fonskyion sayısını, yatay ekseni sprint gün sayısını gösteren iki eksenli basit bir rapordur. Her sprint için bir adet sprint raporu çıkarılır ve günlük olarak Scrum Master tarafından güncellenir. Sprint’in ilk günü yatay eksendeki değer en yüksektir, sprint sonuna doğru aşağıya doğru eğimli bir çizgi oluşur.
Scrum Jeff Sutjerland ve Ken Schawaber tarafından 1990’ların ortalarında geliştirilmiştir. Kapsam perspektifinden bakıldığında yüksek seviyede belirsizlik arzeden projelerde son yıllarda yoğun biçimde uygulanan ve başarılı sonuçlar üreten bir tür metololidir. Scrum, küçük takımlarda (20 kişiden az) uygulaması kolay olan bir proje yönetimi yöntemi olup, büyük projelerde takımların küçük parçalara ayrılması ile etkinleştirilir. Scrum değişimi bir istisna olarak görmeyen, adaptif sistem geliştirme hayat döngüsü perspektiflerinin genel özelliğine paralel olarak proje kapsamının proje boyunca sürekli değişeceğini en baştan kabul eden bir yöntemdir. Bu kabul doğrultusunda Scrum, fazla dokümantasyon yapmadan, kısa periyotlarda geliştirme yapılıp, sonuçların müşteriye sıkça gösterildiği ve geribeslemeler doğrultusunda geliştirmelerin yönünün sürekli değiştiği, gereksiz geliştirmelerin minimuma indirilmeye çalışıldığı bir sürecin yönetimini üstlenir.
Scrum’ın süreçlerini kısaca ifade etmekte fayda var. Bu bağlamda Product Backlog, Sprint Backlog, Sprint ve Scrum toplantılarına kısaca değinelim. Scrum projelerinde ilk yapılan proje sponsorları ile bir masaya oturulup projenin kapsamını ifade eden “Product Backlog”u çıkartmaktır. “Product Backlog” proje sonunda üretilmesi beklenen sistemin özellik ve fonksiyonlarının önceliklerine göre yazıldığı bir liste dokümanıdır. Bu dokümanda, sponsorun ihtiyaçları ve istekleri öncelik sırasına konarak listelenir. Proje süresince bu doküman proje sponsoru tarafından sürekli güncellenir; yeni fonksiyon ve özellikler listeye eklenir, mevcut fonksiyon ve özelliklerin öncelikleri değiştirilebilir.
Scrum yöntemi ile yönetilen projeler “sprint” denilen fazlara ayrılır. Herbir “sprint”in süresi genellikle (en fazla) 30 gündür. İdeal olan proje boyunca boyunca tüm “sprint”ler aynı süreli olur. Proje takımı (scrum team), proje yöneticisi (scrum master) ile her sprint başlangıcında masaya oturarak yeni “sprint” dahilinde geliştirilecek özellik ve fonksiyonları belirler. Bu süreçte seçilen fonksiyon ve özellikler daha önceden oluşturulmuş ve sürekli güncellenen Product Backlog listesindeki sıra ile en öncelikli olanlardır. Hiçbir zaman önceliği düşük bir özellik veya fonskyon önceliği yüksek bir özellik veya fonskyiondan önce geliştirilemez. Bu bağlamda bazı “sprint”lerde proje takımı, Product Backlog’dan 4 eleman, bazı sprint’lerde 25 eleman seçebilir. Seçilen özellik ve fonksiyonlar Sprint Backlog denilen ikinci bir listeye aktarılır. Proje takımı bir sonraki sprint başlangıcına kadar bir daha Product Backlog’a bakmaz, o sprint dahilinde sadece ilgili Sprint Backlog listesine odaklanır.
Sprint Backlog dahilindeki her özellik veya fonsksiyon için maksimum 3 günlük geliştirme süresi verilir. Bu sürede sözkonusu elemanın geliştirmesinin tamamlanmasına çalışılır. Scrum takımı her sabah Scrum Master eşliğinde “Scrum” denilen günlük toplantısını yapar. Bu toplantıya tüm takım üyeleri katılmak zorundadır. Scrum toplantısına proje takımı dışındaki diğer proje paydaşları da katılabilir; ancak onların toplantı sırasında kesinlikle konuşma hakları yoktur; sadece dinleyici olabilirler. Konuşan paydaşlar bir sonraki “Scrum” toplantısına alınmaz. Scrum toplantılarında kimse oturmaz; herkes ayaktadır. Scrum toplantısında bir önceki gün yapılanlar, o gün yapılacaklar, karşılaşılan ve karşılaşılabilecek riskler tartışılır. Scrum toplantısı en fazla 15 dakika sürer.
Her sprint sonunda sprint raporu çıkarılır. Bu rapor dikey ekseni kalan Sprint Backlog’da bulunan ve daha geliştirilmemiş özellik ve fonskyion sayısını, yatay ekseni sprint gün sayısını gösteren iki eksenli basit bir rapordur. Her sprint için bir adet sprint raporu çıkarılır ve günlük olarak Scrum Master tarafından güncellenir. Sprint’in ilk günü yatay eksendeki değer en yüksektir, sprint sonuna doğru aşağıya doğru eğimli bir çizgi oluşur.
Kaydol:
Kayıtlar (Atom)