Category Archives: MICROSOFT

VISUALSVN – Subversion Plugin For Visual Studio

vssvn.pngSanırım başlıkta Visual ile başlayan bir sözcük blogumu takip eden görmek .NETci arkadaşlarımızı mutlu etmiştir. Dünkü Eclipse yazısından sonra bugün de Visual Studio için bir eklentiden bahsetmeye karar verdim.

Uygulama geliştirirken özellikle de takım halinde çalışıyorsak Version Control (yada Source Control yada Revision Control) dediğimiz kaynak kodlarımızı bir havuzda (repository) toplayarak bunların yönetilmesini sağlayan bir sisteme mutlaka ihtiyaç duyarız. (Yönetmek: Senkronizayon, aynı dosya üzerinde birlikte çalışma ,değişiklikleri geriye alma vb.)

Bu iÅŸ için son zamanlarda popülerliÄŸi gitgide artan (Neredeyse CVS ‘i unutturacak bizlere) SVN (SubVersioN) sistemini kullanabilirsiniz.

Bundan bir kaç ay evvel Visual Source Safe ile ilgili ufak bir araÅŸtırma yaparken Visual Source Safe ‘in Eclipse ile birlikte de kullanılabileceÄŸini görmüştüm. Malumunuz Visual Source Safe kurulumu yaptığınızda kendisini Visual Studio ‘ya entegre eder ve projelerinizi Source Safe içinde saklamanıza ve yönetmenize imkan tanır. İşte Visual Source Safe ‘i Eclipse ortamında da kullanabilmek için de VSS Plugin adlı open-source bir uygulama geliÅŸtirmiÅŸler. Hatta o zamanlar IDE ‘ye para vermeyip Source Control ‘e (VSS ‘ye) kim para verir diye düşünmüştüm. (Hala da düşünüyorum?)

Bu yazıya konu olan uygulama ise bir Eclipse eklentisi deÄŸil Visual Studio eklentisi. Bu eklenti sayesinde SVN ‘i .NET uygulamalarınızın kaynak kodlarını yönetmek için kullanabilirsiniz. Elbette bu uygulama da ücretli. (Ücretli bir ürüne ücretsiz bir eklenti yazıldığı nerede görülmüş :) ) Fakat lisans ücretleri gayet uygun. Elbetteki Visual Source Safe kadar kompleks ve geliÅŸmiÅŸ bir ürün deÄŸil fakat Visual Studio ‘ya verdiÄŸiniz linsans ücretinin üstüne bir de Visual Source Safe ücreti eklemek istemiyorsanız tercih edilebilir ve gayet de iyi iÅŸ görecektir.

Bu yazıyı yazmadan evvel sabah ufak ben de bir deneme yaptım. EÄŸer sizler de denemek isterseniz buradan 30 günlük deneme sürümünü indirebilirsiniz. Ayrıca buradaki adresten VisualSVN ‘e ait dokümantasyonu indirip anlatılanları adım adım uygulamak faydalı olacaktır. (24 sayfalık gayet güzel ve sıkmayan bir döküman hazırlamışlar.) Sizlere tavsiyem SVN ile çalışacaksanız Tortoise SVN ‘i indirip kurun. (Windows platformunda olduÄŸunuzu varsayıyorum.) Bu sayede dosya sisteminiz üzerinde bu güzel shell eklentisi ile hızlıca iÅŸlemlerinizi yapabilirsiniz. Kurulumdan sonra boÅŸ bir dizin yaratın ve saÄŸ tıklayarak Create Repository komutunu çalıştırın. Bir sonraki adımda VisaulSVN eklentisini de kurun ve Visaul Studio ‘ya eklenen VisualSVN menüsünden repository’e baÄŸlanın (file:///D:/SVN şeklinde) Bundan sonra dökümandaki yönergeleri takip ederek VisualSVN ile kolaylıkla çalışabilirsiniz.

EÄŸer Microsoft ‘a elimizi verdik kolumuzu nasıl kurtarırız diye düşünüyorsanız bu gibi farklı uygulamalara ÅŸans tanımak ve  ihtiyaçlarınızı karşılıyorsa bu tarz ürünleri kullanmak maliyetlerinizi düşürecektir. Åžimdilik benden bu kadar. SaÄŸlıcakla kalın…

MICROSOFT OFFICE OUTLOOK CONNECTOR BETA

connector_beta.jpgGeçen hafta cumartesi günü e-posta ile gönderilen Microsoft Download Notifications aracılığı ile haberdar olduÄŸum Microsoft Office Outlook Connector Beta ‘yı bu haftaiçi hem iÅŸte hem de evde deneme fırsatı buldum. (Deneme sürecini biraz uzatmış olmalıyım ki Outlook Connector ile ilgili yazılar diÄŸer bloglardaki yerini çoktan aldı.)

Outlook Connector nedir diyenler için ürünün tanımını Microsoft şu şekilde yapıyor:

With Microsoft Office Outlook Connector Beta, you can use Microsoft
Office Outlook 2003 or Microsoft Office Outlook 2007 to access and manage your
Microsoft Windows Live Hotmail or Microsoft Office Live Mail accounts,
including e-mail messages and contacts, for free.

Yani Office Outlook 2003 veya 2007 kullanıcısı iseniz (İndirebilmek için geçerli bir lisansınız olmalı ) Microsoft tarafından verilen web tabanlı e-posta hizmeti Hotmail (Windos Live Hotmail) hesabınıza Outlook ile erişebilirsiniz. Bildiğiniz gibi önceden Outlook ile sadece ücretli Hotmail hesaplarına erişilebiliniyordu.

Aslında Outlook Connector alternatifsiz bir ürün deÄŸil. Mesela Microsoft ‘un bu iÅŸi yapan Live Mail Desktop ürünü vardı. Hatta duyar duymaz indirip denemiÅŸtim. Live ürün ailesinin klasik sorunu olan sistem kaynağı sömürme sorunu bu üründe de olduÄŸu için sistemimden bir an evvel uzaklaÅŸtırmıştım. Ayrıca sırf Hotmail hesabıma eriÅŸim için Outlook ‘un yanında baÅŸka bir ürün daha kullanmak iÅŸime gelmemiÅŸti.

Sonra arkadaşım Erhan blogundaki bu yazıda Thunderbird ile bu işi nasıl yapcağımızı anlattı. Ama bir türlü doğru ayarı yapmadığım için sunucuya erişemedim. (Nedense yazıdaki aynı adımları takip etmeme rağmen yanlış sunucuya bağlanmaya çalışıyordu) Yine aynı şekilde iş yerinde Mozilla ürün ailesiyle (Thunderbird,firefox vb.) internete erişimde problem yaşadığımdan bu sevdadan da vazgeçmiştim. (Meselenin proxy ayarlarından olduğunu anlamam biraz vakit aldı)

Şimdi Outlook Connector ile Hotmail hesabımdaki postalarımı okuyuyorum. Ürünün en çok hoşuma giden özelliği ise sağ alt köşedeki server status alanında Mail Storage bilgisini göstermesi. Bir de downlaod mode özelliği sayesinde e-postalarınızın ister tamamını isterseniz de sadece başlıklarını inderebiliyorsunuz. (Downlaod Headers and Then Full Items, Download Full Items, Downlaod Headers) . Bu özellik sayesinde şu zamana kadar Hotmail sunucunuzda biriken postalarınızın tüm içeriğini indirme derdinden kurtulmuş oluyorsunuz.

Ürünün en sıkıntılı yanı ise beta aÅŸamasındaki her Microsoft ürününden alıştığımız kitlenmeler. Özellikle de Outlook açıldıktan bir kaç saniye sonra sunucuya baÄŸlanırken Outlook ‘u kullanılamaz hale getirebiliyor.

Microsoft ‘un bu tip bir ürünü neden piyasaya sürdüğünü düşündüğümde aklıma E-POSTA SAVAÅžLARI ‘nda kendi yerini biraz daha güçlendirme amacı geliyor. Malum GMail ile bu gibi dertlerden uzak bir ÅŸekilde her türlü e-posta istemcisi ile e-postalarımızı okuyup, yazabiliyoruz. Microsoft da hem Office ailesinin hem de Hotmail ‘in kullanımını yaygınlaÅŸtırmak için bu plug-in ‘i çıkarmış olmalı.

Ürünü denemek isteyenler buradan indirebilirler. Åžimdilik benden bu kadar. SaÄŸlıcakla kalın…

SQL SERVER 2005 ‘DE FILLFACTOR KAVRAMI

sqlserver.jpgBlogumdaki SQL Server 2005 ile ilgili önceki yazılarımda SQL Server Storage Engine ‘in biraz sorunlu olduÄŸundan bahsetmiÅŸtim. Hal böyle olunca verilerimizi SQL Server üzerinde tutarken daha da dikkatli olmamız gerekiyor. Ben de bu konuda dikkat etmeniz gereken noktalardan bir kaçına deÄŸinmeye karar verdim.

SQL Server verileri diskten EXTENT dediğimiz formatta okur ve yazar . (the smallest unit of data that SQL Server can allocate is 64 KB) Extent ise bünyesinde 8 tane Page barındırır. Windows işletim sistemi ortamında 8*Page_Size=64K eder (İşletim Sistemleri dersini alan arkdaşların kulaklarını da çınlatmış olduk) ki bu da diskten bir defada okunabilecek veri boyutuna denk gelir.

Fillfactor kavramı ise verilerin page üzerinde ne kadarlık bir alanı kaplayacağını belirler. Yani veritabanı yönetim sisteminiz bir page ‘in ne kadarlık kısmını (yüzde olarak 1..100 aralığında) dolduracak ne kadarlık kısmını boÅŸ bırakacak bunu belirleyen parametredir. Fillfactor deÄŸeri index oluÅŸturulurken veya rebuild edilirken karar verilen bir deÄŸerdir. Mesela indeks oluÅŸtururken 70 ‘lik bir fillfactor deÄŸeri belirlediÄŸinizde page üzerinde yüzde 30 ‘luk bir alan sonradan eklenecek veriler için ayrılmış olacaktır. Burada dikkat edilmesi gereken en önemli nokta fillfactor deÄŸerini 100 vermek ile 0 (sıfır) vermek arasında bir fark olmadığıdır. Fillfactor deÄŸerleri 1-100 arasındadır o nedenle 0(sıfır) verdiÄŸinizde bu 100 olarak kabul edilir ve tüm page doldurulur.

Gelelim bu kavramların önemine: EÄŸer veritabanınızdaki okuma sayısı fazla ise bu deÄŸerin yüksek olması çok önemli yani 100 seviyesinde olması en ideali (Zaten server bazında default deÄŸer 100 ) ama okuma iÅŸlemlerinin yanı sıra sıklıkla veri ekleme ve güncelleme (yazma) da yapıyorsanız böyle zamanlarda PAGE SPLIT dediÄŸimiz vakit kaybettirici bir durumla karşılaÅŸmanıza neden olabilir.(Elbette kaybettiÄŸiniz vakti anlamanız o kadar kolay deÄŸil) Nasıl ki multi-threading yapabilen bir iÅŸletim sistemi CPU ‘da processleri çalıştırırken context-switching yapıyorsa (İşletim Sistemleri dersini alan arkadaÅŸların kulaklarını bir kez daha  çınlatmış oldum) aynı durum veriler okunurken ve yazılarken de geçerli. Tam dolu bir page’de sorgulama yaptığınızda aradığın verinin o page içerisinde olma olasılığı daha fazla olur. Öte yandan tam dolu bir page ‘e yazmaya kaltığınızda dolu olduÄŸu için diÄŸer page ‘e geçilir (Page Split) ve page split iÅŸlemi sırasındaki hesaplamalar vakit kaybına neden olur.

Tablolarınızın fillfactor bilgilerini incelemek için SQL Server üzerinde dbcc showcontig komutundan faydalanabilirsiniz. Aşağıdaki örnekte Northwind veritabanınki Categories tablosuna ait bilgiler çağırılmıştır:

use Northwind

go
dbcc showcontig (Categories) with tableresults  (tableresults parametresi seçimliktir)

*Pages Scanned:1 Extent ‘i aşıyor mu aÅŸmıyor mu görmenizi saÄŸlar
*Extent Switches: 1 ise switch var demektir (tehlikeli bir durum :) )
*Scan Density: Düşükse indeksleri yeniden oluşturmak faydalı olabilir (ALTER INDEX REBUILD )
*Avg Page Density: Bu bilgi aracılığıyla pagelerin doluluk oranları hakında bilgi sahibi olabilirsiniz.

Fill factor kullanarak index oluşturmak isterseniz de aşağıdaki örnek size yol gösterebilir:

CREATE CLUSTERED INDEX deneme_indx ON my_table (col1, col2) WITH FILLFACTOR = 50 

Yazımı bitirmeden evvel neden bu konuyu bloguma taşığıma da deÄŸineyim. JDBC_TR mail grubumuzda arkadaşım Emrah Åžeker yapacağı proje için performanslı bir DBMS arayışına girmiÅŸti ve ona cevap verirken Flickr ‘ın altyapısını anlatan bir sunumda bahsi geçen yazma ve okuma deÄŸerlerinin oranına deÄŸindim. (Kullanıcılar her 14 okumya (select) karşılık 1 yazma (insert,delete,update) yapılıyorlarmış) Yani aldığınız bir DBMS ‘i default deÄŸerlerle kullanmak her zaman akıllıca olmuyor. İşinizi ve kullanıcılarınızı iyi analiz etmek gerekir diye düşünüyorum. Yine aynı ÅŸekilde perfomans sorunlarını çözerken olayları donanım güncellemeleri ile ölçeklemeye kalkmak her zaman beklenen sonuçları doÄŸurmayacaktır. Diyorsanız ki kim bu kadar detaylı ÅŸeylere dikkat ediyor? Ben de diyorum ki Dikkat Eden Kazanır!

Åžimdilik benden bu kadar saÄŸlıcakla kalın…

-Tavsiye-
Who Cares about FillFactor?
SQL Server 2005 Books On-Line
Understanding SQL Server’s DBCC SHOWCONTIGÂ

NOT: Yukarıda bahsi geçen konu diÄŸer DBMS ‘leri kapsayacağı gibi kapsamaya da bilir. O nedenle bu yazıyı sadece bilgi sahibi olduÄŸum SQL Server ‘i örnekleyerek yazdım.

IN ALL TEST CASES J2EE PLATFORM OUTPERFORMED .NET

sunlogo.jpgÇalışma hayatına atılmam ile birlikte kendim için yaptığım işlere ayırdığım vakit de daraldı. Kendimi geliştirmek adına yeri geldiğinde günde 25-30 arasında blog yazısı yada makale okurdum. Fakat çalışma hayatı bunlara yavaş yavaş engel olmaya başladı. Ben de çözüm olarak okumayı planladığım makalelerin çıktısını alıp serviste okumaya karar verdim. İş yerim Anadolu yakasında evim ise Avrupa yakasında olduğundan yolda gün içerisinde yaklaşık 3 saatimi geçiriyorum. Bu zaman dilimi de birşeyler okumak için ideal. (Malesef Musta Abi gibi yolda video izleme lüksüne de sahip değilim :) )

Akşam eve dönerken okuduğum yazılardan bir tanesi de SUN Microsystems tarafından yapılan bir test ile ilgili. Yazının başlığı aynen şöyle: Web Services Performance Comparing Java 2 Enterprise Edition and .NET Framework.

Bu blog yazıma verdiğim başlık da testin özet bölümündeki ilk cümle.(Olayı çok güzel özetlemişler :) )  Biraz fazla iddialı bir söz de olsa test sonuçlarını aynen özetleyen bir cümle.

Kendilerince tarafsız bir test gerçekleştirmişler. Test Windows paltformunda işletim sistemine ait gereksiz servisler etkisiz hale getirilerek yapılmış. Test için de kendi yazdıkları WSTest aracını kullanmışlar. Bu araç çok basitçe tasarlanmış bir web servis test aracı. Tek yaptığı web servisinde tanımlı metodlara parametre göndererek çağrıda bulunmak ve sonucu almak. Metodlarda da hiçbir işlem yapılmıyor yani alınan değerler doğrudan geriye döndürülüyor bu sayede platformların diğer özelliklerinin Web Servis kıyaslamasındaki etkisi en aza indirilmiş.

Test ile ilgili daha fazla detay vermeye gerek yok. Test sonucuna göre J2EE paltformu .NET platfomundan 2 kat hatta yeri geldiÄŸinde 3 kata kadar dah hızlı. Burada en önemli nokta .NET Framework 1.1 ve IIS 6.0′a karşılık Java Web Service Developer Pack 1.3+Tomcat 5.0 kullanılmış olması. Yani .NET Framework 2.0 ile web servisi konusunda ne gibi geliÅŸmeler oldu ve perfomans konusuna bu nasıl yansır bu test ile bu konuda bilgi sahibi olma ÅŸansımız yok. (Ama Microsoft ‘un  yaptığı testte bu konu ile ilgili bilgiler mevcut. İlgili testi yazının sonunda bulabilirsiniz.)

Aslında perfomans konusunda farkı yaratan J2EE ile kullanılan JAX-RPC implementasyonu. Aman canım ne olacak ne var bir XML ‘i iÅŸlemekte deyip geçmemek gerektiÄŸini de bir kere daha görmüş olduk. “Parsing” olayı söz konusu oldu mu fazladan koyulacak bir kontrol ifadesi bile ciddi performans kayıplarına neden olabiliyor. Hele bir de parser RECURSIVE bir algortimayla çalışıyorsa vay haline sistem kaynaklarınızın.

Bu testi sizlerle paylaşmanın asıl nedeni ise bir teknoloji ile çalışmaya karar verdiğinizde size getireceklerinin yanında sizden götüreceklerini de düşünmenizi sağlamak. Ben de bu testin elbette biraz da olsa taraflı olduğunun farkındayım. ( Aynı durum yazının sonunda bulacağınız ve Microsoft tarafından gerçekleştirilen test için de geçerli.) Asıl mevzu ise popüler teknolojilerin (WEB SERVİSİ , XML , AJAX vs.) bilinçsiz kullanıldıklarında bizlere faydandan çok zarar getireceğidir.

Fırsat buldukça servis yolculuklarım sırasında okuduÄŸum güzel makaleleri blogumda paylaÅŸamaya devam edeceÄŸim. Åžimdilik benden bu kadar. SaÄŸlıcakla kalın…

KONUYLA İLGİLİ FAYDALI LİNKLER:

Sun tarafından gerçekleştirilen teste ait yazı
Microsoft tarafından gerçekleştirilen web servisi performans kıyaslaması
Mustafa TAN tarafından yazılmış konuya ilişkin çok güzel bir yazı
Web service performance checklist