Arşiv

Archive for the ‘NEDİR?’ Category

2008 MICROSOFT VİZYONU ve YENİ TEKNOLOJİLER SEMİNERİNE DAVETLİSİNİZ

Ocak 3, 2008 5 yorum

Geçtiğimiz ay Ocak 2008 ‘de sizleri güzel bir seminer organizasyonun beklediğini söylemiştim. Artık seminer ile iligli detaylar netleşti ve 12 Ocak 2008 ‘de CETURK olarak yeni bir seminere imza atıyoruz.

Yaklaşık 1 ay süren yoğun e-posta trafiğinin ardından seminer programını oluşturabildik. Başlıktan da anlaşılacağı üzerine seminer Microsoft ‘un 2007 ‘nin ilk çeyreğinden sonra belirgin bir şekilde su üstüne çıkardığı teknolojilerinin 2008 ‘de hayatımıza ne şekilde gireceği üzerine. Her ne kadar bu teknolojiler 2007 ‘de lanse edilmiş olsa da geliştirilme süreçlerini tamamlamamış oldukları için asıl meyveleri 2008 ‘de hayatımızda olacak. (Microsoft bile downlaoad sitesinde Silverlight ‘ı yeni yeni hayata geçirdi)

expbox_studio.jpgSeminerde 3 konuşmacımz olacak. (Kendimi saymıyorum) Öncelikle Ercan Altuğ YILMAZ Microsoft ‘un Expression Web ve Expression Design ürünlerini bizlere tanıtacak. Bunlarla ufak tasarım demoları yapıp olayı daha da keyifli hale getirecek. Açıkcası Altuğ Hocam ‘ın tasarım konusunda olaya yaklaşımını ben de diğer insanlar gibi merakla bekliyorum. Sürekli business ağırlı bir seminer olmasından ziyade zarif ve şık tasarımların (ki bana çok uzak bir kavram) güne renk kattığı bir seminer olması daha güzel olacaktır diye düşünüyorum.
silver.jpg

Ardından söz Daron Yöndem ‘de olacak. Expression Blend ile WPF animasyonları yapıp devamında web ile ilgilenen arkadaşlar için Silverlight anlatıyor olacak. Eski adı WPF /E ile hayatımıza giren yeni Silverlight ‘ın gerçekten cross-platform ve cross-browser olup olmadığını ben yine soracağım elbette.
vs2008.jpgDaron ‘un ardından söz Eralp Eralt ‘da olacak. Visual Studio 2008 ile bizleri tanıştırıp (Ben VS 2008 ile çok zor şartlar altında tanıştım. Umarım sorunsuz bir tanışma olur) , C# 3.0 ‘ın özelliklerinden ve Microsoft ‘un ORM (Object Relational Mapping) için geliştirdiği çözümlerden (LINQ,DLINQ,XLINQ) bahsediyor olacak. Yani bunlar planlanmış kısımları ama eminim Eralp o an içinden geçen başka bir konuya da değinmeden sözü başkasına devretmeyecektir. (Mesala Windows Mobile olabilir)
Günün sonunda da ben deniz anlatılanları birkaç cümle ile toparlayıp çekilişle kitap hediyelerimizi vereceğim.

Yazımı bitirmeden evvel seminer organizasyonu ve bilgi paylaşımı konusunda bana her türlü yardımı gösteren her üç konuşmacı arkadaşıma da ayrı ayrı teşekkür ediyorum. Umarim keyfli ,verimli ve sorunsuz bir organizasyon olur. 12 Ocak ‘ta seminerde görüşmek üzere…

Ayrıntılı bilgi ve kayıt için tıklayınız…

UNIT TESTING & TDD (Test Driven Development)

Ağustos 29, 2007 1 yorum

Geçtiğimiz haftadan bu yana üzerinde çalıştığımız projenin test aşamasını iyileştirebilmek (yada gerçekleştirebilmek) adınatest.jpg Unit Testing ve Test Driven Development ile ilgili araştırmalar yapıyorum. Bu süreçte bir yandan birşeyler öğrenme bir yandan da bu öğrendiklerimi hali hazırda yürüttüğümüz projeye uygulama şansına sahibim. Bu nedenlerden ötürü geçtiğimiz haftayı Unit Testing ve Test Driven Development üzerinde araştırma yaparak geçirdim. Bu noktada bana düşen en önemli görev developer arkadaşları Unit Test yazmanın bir lüks değil bir gereklilik olduğuna ikna etmek. O nedenle bu gerekliliğe kendimi iyice inandırmaya çalıştım ve yüzlerce linki , yazıyı taradım. Bu süreçte öğrendiklerimi belirli başlıklar altında sizlere paylaşmak güzel olacaktır diye düşündüm.

(NOT: Test-Driven Development = Test Güdümlü Yazılım Geliştirme ,Unit Test= Birim Testi olarak kullanılacaktır.)

Test Güdümlü Yazılım Geliştirme Nedir?

Test Güdümlü Yazılım Geliştirme: önce gerekli test koşullarını yazıp ardında da bu testleri geçecek ve hedeflenen işi yapacak kodu yazmayı öngören bir yazılım geliştirme modelidir.

Bu yazılım geliştirme modeli dahilinde aşağıdaki adımlar izlenir:

• Öncelikle yazılımın ilgili birimi için basitçe bir test yazılır.
• Bir sonraki adımda teste tabi tutulacak birim yazılır.
• Eğer o birim, testi geçerse test geliştirilir ve birim tekrardan test edilir.
• Eğer birim testi geçemezse gerekli değişiklik yapılır ve tekrar test edilir.
• Birim son halini alana kadar her değişiklikte test edilir.
• Birim beklenen işi gerçekleştiriyorsa ve tüm testleri geçiyorsa süreç tamamlanır.

Test Güdümlü Yazılım Geliştirme , geliştirme sürecimizi hem hızlandırır hem de iyileştirir çünkü yazılan kodların bir hata durumunda tekrardan yazılması veya hatanın bulunmaya çalışılması ciddi bir maliyet oluşturur.
Test Güdümlü Yazılım Geliştirme yöntemi bir Sürüm Yönetim Sistemiyle birlikte kullanılırsa çok daha verimli olacaktır çünkü bu yaklaşım hata durumunda tüm testleri geçen sürüme geri dönülmesi kolaylığını getirir ve de kodun içerisinden hata ayıklamaktan daha efektiftir.

Birim Testi Nedir?

Birim Testi yazılım projemizdeki her bir birimin (Object-Oriented Programming çerçevesinde en küçük birim sınıftır) doğru bir şekilde çalışıp çalışmadığını anlamak amacıyla oluşturduğumuz testtir.

Birim testi hem Test Güdümlü Yazılım Geliştirme Sürecini kolaylaştırır hem de uygulamamızın her bir biriminin sorunsuzca çalıştığından emin olmamızı sağlar.

Neden Önce Birim Testi Yazılmalıdır ? (Test-First Approach)

Yazılım geliştiriciler için Birim Testi yazmanın yada Test Güdümlü Yazılım Geliştirme Süreci ‘ne adapte olmanın en zor noktası henüz yazılmamış bir birim için test yazmaktır. Bu noktada alışkanlıkların değiştirilmesi biraz zaman alabilir.

Testi , işi yapacak birimden önce yazmamızın nedeni: testi yazabilmek için o teste tabi tutulacak birimin ne iş yapacağını iyice anlamamızı gerektirmesidir. Eğer ilgili birimin verilen giriş bilgisine karşılık çıkışta ne üreteceğini iyice anlamışsak ancak o koşulda testini yazabiliriz. Testi yazdıktan sonra da o testi geçecek kodu yazmak daha kolay olacaktır çünkü testin yazımı sırasında o birimin yapacağı iş kafanızda netleşmiş olur.

Birim testini önce yazmak konusunda yapılan en büyük hata; ilk seferde doğru testi ve bu teste uygun birimi yazmayı hedeflemektir. İlk başta hem test hem de teste tabi tutulacak birimde hatalar ve eksiklikler olabilir fakat test ve düzeltme süreci yukarıda bahsedildiği şekilde tekrarlandıkça bu süreç sonunda ortaya daha kaliteli ve daha güvenilir bir ürün ortaya çıkacaktır.

Birim Testini Projemdeki Hangi Bileşenler İçin Yazmalıyım?

Bu noktada karar uygulama geliştiriciye aittir. Fakat Nesne Yönelimli Programlamada genel yaklaşım bir sınıf içerisindeki tüm public metodlar için birim testi yazmak yönündedir.

Öte yandan değişkenlere erişimi düzenlemek amaçıyla kullandığımız (Accessors- Mutators) metodlar ve bir bakışta işlevi anlaşılıp hata olduğunda kolaylıkla bulunabilecek metodlar için birim testi yazılmayabilir.

Tüm metodlar için birim testi yazmamanın tek dezavantajı projemizin Code Coverage (Code Coverage:Bir projedeki test edilen kodların, tüm kodlara oranı ) yüzdesini düşürmesidir.

Birim Testi ile İşlevsellik Testi (Functional Test) Arasındaki Temel Fark Nedir?

Birim Testi uygulama geliştiricinin kendi perspektifinden, yazdığı kodun doğru çalışıp çalışmadığından emin olmak amacıyla yapılırken , İşlevsellik Testi kullanıcının perspektifinden bakılarak yazılan kodun kullanıcı ihtiyaçlarını karşılayıp karşılamadığını tespit etmek amcıyla yapılır.

Birim Testi kod yazımından önce yapılırken , İşlevsellik Testi ürün müşteriye verilmeden evvel yapılır.

Birim Testinin Yazılım Geliştirme Sürecine Katkıları Nelerdir?

• Refactoring işlemlerini kolaylaştırır: Tüm birim testlerden başarıyla geçmiş bir kod bloğu üzerinde refactoring yaptığınızda kodunuzun bozulup bozulmadığını birim testini tekrar çalıştırarak rahatlıkla anlayabilirsiniz.
• Sonradan ortaya çıkabilecek hataların oluşturacağı maliyeti en aza indirir.
• Yazılımış kodları inceleme (Code Inspection) işleminden daha kolay ve daha verimlidir.
• Uzun vadede testsiz kod yazmaktan daha hızlı kod yazmayı sağlar çünkü aynı kodların hata durumunda tekrardan düzenlenmesi ihtiyacını en aza indirger.
• Birim testi yazmak, bizleri yazacağımız kodun işlevini en ufak detayıyla anlayama iter çünkü işlevini tam olarak anlayamadığımız bir birimin testini yazma şansımız yoktur. Bu da yazılan birimlerin daha doğru olmasını sağlar.
• Yazılan kodlar için bir çeşit dökümantasyon sağlar çünkü yazılan test koşulları incelenerek o kod bloğunun işlevi rahatlıkla anlaşılabilir.

Yukarıda bahsi geçen konularla ilgili öğrenme sürecim hala sürüyor o nedenle blogumda bu konuyla ilgili paylaşımlara devam edeceğim. Kısa bir süre içinde bu konuyla ilgili faydalanabileceğiniz linkleri kategorize ederek sizlerle paylaşmayı planlıyorum. Şimdilik benden bu kadar. Bir sonraki yazıma kadar sağlıcakla kalın…

NOT: Bu gece 3 gün sürecek ufak bir İzmir tatiline çakacağım. Umarım orada da blogumu güncellemeye fırsatım olur?

UYUMSUZLUĞA MICROSOFT ‘TAN ÇÖZÜM GELDİ

Ağustos 29, 2007 11 yorum

Internet Explorer 7 ‘ye geçiş sırasında ciddi problemler yaşanlardan biriyim ben de. Neyseki artık hayatımda IE ‘nin pek bir yeri kalmadı. Fakat bu durum herkes için geçerli değil elbette. Israrlı ve sadık Microsoft kullanıcıları hala IE kullanmaktan bir türlü vazgeçmiyorlar. (İşletim sistemine entegre olarak gelmenin avantajı böyle birşey olsa gerek) Microsoft da bu arkadaşları düşünerek User Agent String Utility v2.0 adlı aracını geçtiğimiz hafta yayınladı.

Bu araç sayesinde henüz IE 7 ‘ye adapte olamamış sitelere kendinizi farklı bir tarayıcından geliyormuş gibi gösterip bağlanqbiliyorsunuz. (Daha doğrusu daha düzgün görüntülüyebilemenizi sağlıyor) Bu ufak uygulamayı kurduktan sonra masaüstünüze oluşturacağı kısayol yardımıyla Internet Explorer ‘ı farklı bir User Agent bilgisiyle açabilirsiniz. Sisteme herhangi bir kayıt eklemieyen bu uygulamaın oluşturduğu kimlik sadece masaüstünüzdeki kısayol ile açtığınız pencere için geçerli oluyor.

Eğer Internet Explorer ‘a kalıcı olarak bu profili vermek istiyorsanız http://www.enhanceie.com/useragent.aspx adresindeki registry scriplerden faydalanabilirsiniz. EricLaw tarafından hazırlanan sitede Internet Explorer kullanıcılarının işine yarayabilecek çok faydalı scriptler ve eklentiler mevcut.

Microsoft ‘un bu tip bir araç çıkarması bana Microsoft MVP olan bir arkdaşım söylemiş olduğu: “Microsoft geriye uyumluluk konusunda dünyanın en iyi firmasıdır.” cümlesini hatırlattı. Geriye uyumluluk bu mudur , böyle birşey midir? Uydurmacılık nedir peki?…

user_agent.jpg

ECLIPSE İÇİN QUANTUM DB

Ağustos 9, 2007 7 yorum

Hangi Java mail grubuna yada forumuna bakarsanız bakın konu dönüp dolaşıp IDE (Integrated Development Environment) konusuna gelmiştir. Hatta bir kısım Javacı arkdaşlar bu tartışmalardan ve belirsizlikten bunalıp kendilerini .NET platformunun dolayısıyla Visual Studio ‘nun sıcak kollarına atmışlardır. Her ne kadar Visual Studio gibi kur ve kullan başka da birşey yapma tarzında yada daha modern bir ifadeyle ALL-IN-ONE bir IDE ‘ye sahip olmasak da Javacılar için de vazgeçilmez hatta yavaş yavaş standart haline gelmeye başlayan Eclipse var. (Bir kere ayarla her yerde kullan.)

Aslında bu tip bir ihtiyaç her uygulama geliştiricinin hayatında var. Yani uygulama geliştirirken herşeyin bir arada olması en azından basitçe işinizi görecek araçların tek bir yerde toplanması önemlidir.(Ciddi durumlarda Aqua Data Studio, Rapid SQL yada TOAD gibi araçlara ihtiyaç olabiliyor.) Bu nedenle Visual Studio ‘nun hakkının verilmesi gerektiğine inanıyorum.

Eclipse ‘e dönecek olursak default olarak gelen eklentilerle zaten Javacıların işini fazlasıyla görecektir ama ihtiyaçlar değiştikçe yeni eklentiler kurarak daha da zenginelştirmek gerekebilir. Bu noktada en büyük sıkıntı doğru eklentiyi seçme konusunda yaşanır. (Eclipse için yüzlerce plugin -eklenti- mevcut)

quantum2.jpg  Bitirme projem sırasında Visual Studio ‘da en sevdiğim ve sıklıkla kullandığım özelliklerden bir  tanesi de Server Explorer idi. Hatta eğer bağlantı kuracağınız sunucu yerelinizde değilse SQL  Server 2005 Management Studio ‘dan daha hızlı çalıştığını da söyleyebilirim. Bu güzel özelliği Eclipse ‘e de kazandırmak gerekli diye düşünürken karşıma Quantum DB eklentisi çıktı. JDBC tabanlı bu güzel plugin ile hem veritabanı sunucunuzda ne var ne yok visual bir şekilde görebilirsiniz hem de SQL sorgularınızı çalıştırabilirsiniz.

Quantum DB ‘yi Eclipse dahil etmek çok kolay ama burada karşınıza bir GEF (Graphical Editing Framework) plugin sorunu çıkabilir.Öncelikle Eclipse GEF ‘in doğru sürümünü eklemeli , ardından da Quantum DB kurulumuna geçmelisiniz. ( Note: Quantum needs the GEF plugin to work, so you have to install it before installing Quantum)

Eclipse ‘e plugin eklemek için ben genellikle web update ‘i tercih etmiyorum. Onun yerine plugini bilgisayarıma indirip Eclipse ‘e ekliyorum , bu sayede ileride farklı bir Eclipse ‘e de kurma şansım oluyor. (Plugin dosyalarını kopyalayıp yapıştırmak her zaman olumlu sonuçlar doğurmuyor o nedenle bu yöntem daha sağlıklı !)

Kullandığınız Eclipse sürümü için uygun GEF pluginini buradan indirebilirsin. İndirdiğiniz zip dosyasını uygun bir yere extract ettikten sonra Help -> Software Updates ->Find and Install yolunu takip edin. Search For New Futures To Install seçeneğini seçtikten sonra ilerleyin ve bir sonraki adımda New Local Site butonuna tıklayın. Açılan pencereden az önce plugini extract ettiğiniz dizini seçin ve tamam diyerek bir sonraki adıma geçin. Kullanıcı sözleşmesini de onayladıktan sonra kurulum tamamlanacaktır ve pluginin düzgün bir şekilde çalışabilmesi için Eclipse ‘i baştan başlatın.

GEF eklentisini kurduktan sonra buradan Quantum DB ‘yi indirin ve GEF ‘i kurarken izlediğiniz adımların aynısını tekrarlayın. Eğer herhangi bir hata almadıysanız Eclipse ‘i yeniden başlattıktan sonra eklentiniz kullanımıma hazır.

Window -> Open Perspective -> Other -> Qunatum DB yolunu izleyerek Quantum DB perspektifine geçebilirsiniz. Sonra da Window -> Show View yolu ile bu perspektif içerisinde görülmesini istediğiniz Quantum DB bileşenlerini seçebilirsiniz.

quan.jpg  Artık Quantum DB ‘nin görsel ayarları tamam. Tek yapmanız gereken Veritabanı          sunucunuzun çalışır halde olup olmadığını kontrol etmek ve Database Bookmarks alanına New Bookmark ile eklemek. Burada en önemli nokta uygun sürücüyü Quantum DB ‘ye göstermek. Açılan JDBC Driver penceresinden Add Driver ile veritabanı yönetim sisteminize ait sürücüyü eklemeniz gerekir. (İlgili sürücüleri kullandığınız DBMS ‘in üreticisine ait web sitesinden indirebilirsiniz.) Bir sonraki adımda da ilgili DBMS için gerekli bağlantı bilgilerini verip, bu bookmark ‘a bir ad vererek işleminizi tamamlayabilirsiniz. ( MySql için yandaki resimde örnek bir bağlantı gerçekleştirdim.)

Quantum DB ile ilgili başlangıçta sizlere lazım olacak bilgileri bu yazıda aktarmaya çalıştım. Bu güzel aracın diğer özelliklerini keşfetmek sizlere kalıyor. Fırsat buldukça farklı Eclipse pluginlerini inceleyip , deneyimlerimi sizlerle paylaşamaya çalışacağım. Şimdilik benden bu kadar . Sağlıcakla kalın…

[SOA]CILAR ve [ANTI-SOA]CILAR

Temmuz 25, 2007 3 yorum

soa.jpg

Geçtiğimiz hafta Cumartesi günü IBM ve Ceturk iş birliği ile keyifli bir SOA semineri düzenlemiştik. Seminere ait sunumu indirmek için Arden AGOPYAN ‘ın blogunu ziyaret edebilirsiniz. Bu yazıyı da sadece seminer sunumunu paylaşmak için yazacaktım ama konuyu bu kadar yüzeysel bırakmaya içim el vermedi.

SOA ‘ya karşı olan ilgim ben daha öğrenciyken okulumzda gerçekleştirilen Ulusal Yazılım Mimarileri Konferansı ‘a katıldığım bir sunumda başlamıştı. (Daha öğrenciyken dediğime bakmayın çok uzun zaman olmadı öğrenciliğimi sonlandıralı.) Konuşmacı olarak gelen kişi (Prof Dr. M. Naci Akkök) her ne kadar Oracle çalışanı (Chief Architect) olsa da seminer boyunca sık sık IBM ‘den ve SOA ile IBM arasındaki bağdan bahsetti durdu. Bir Oracle çalışanının bu kadar çok IBM ‘den bahsetmesi garibime gitmişti açıkcası. (Bu arada seminerin konusu: “A Practical and Methodical Interpretation of the Service-Oriented Architecture” idi)

Zamanla işin içine girdikçe IBM ‘in SOA alanındaki çalışmalarına ben de şahit oldum. Oracle adına bizlere SOA anlatmaya gelen kişi Oracle ‘ın bu alandaki ürünlerden ve SOA yaklaşımından da bahsetmişti ve o zamanlar anlattığı konuları anlamak bir hayli güçtü benim için. (Sadece benim için değil şu anki patronum Semih Çetin için de anlatılanlarda gariplikler ve anlaşılması güç noktalar vardı ki kendisi de sık sık sunumu bölüp hararetli sorular sormuştu.) Sunumda binlerce parçadan oluşan bir sisteme ait bir resim gösterildi ve SOA budur dendi. (Resimdeki parçaları seminerden 2 saat sonra yavaş yavaş çözmeye başlamıştım.) Güya iş akışını ve süreçleri basitleştiren SOA , o resmi gördükten sonra bana çok karmaşık birşeymiş gibi gelmişti.

Şimdilerde ise dahil olduğum projede Servis Yönelimli Mimari ‘yi (Service Oriented Architecture) elimizden geldiğince uygulamaya çalışıyoruz ve böylesine büyük bir projede ciddi manada faydasını görüyoruz. Hatta bazen tembellik edip “Kesin bunun servisini birisi yazmıştır” diyerekten ilgili işlemi yapacak servisi bulma çabasına giriyoruz. (Aslında tembellikten değil sadece projedeki kod tekrarını önlemek için) Yada başka birisinin üzerinde çalıştığı modül ile ilgili işlem yapmamız gerekiyorsa kendisine ihtiyacımızı anlatıp bize bir servis yazmasını istiyoruz (Yani gidip yüzlerce sayfalık o modüle ait dokümanı oturup okumuyoruz) Kısacası biz SOA ‘yı seviyoruz ve kullanıyoruz.

Fakat bunlar benim kişisel görüşlerim. Yani bir yandan birileri SOA ‘ya hayranlık duyarken birileri de SOA Facts yazısındaki gibi işin dalgasını geçebiliyor. Sanırım her yeni teknoloji (Hatta SOA ‘nın yeni bir yaklaşım olup olmadığı konusunda da tartışmalar var ) bizlere kutuplaşmak için bahane oluyor. Kim o teknolojiyi adam gibi kullanmayı becerebiliyorsa onu yerlere göklere sığdıramıyor ve ondan bir “SILVER BULLET” gibi bahsediyor. Bu kadar çok fanatiklikten rahatsız olanlar da hemen karşıt bir cephe oluşturuyorlar. Anlayacağınız şu anda ciddi bir SOA ve ANTI-SOA kutuplaşması yaşanıyor.

Burada suçlu olan elbette teknoloji değil. Yani birileri onu efektif bir şekilde kullanamıyorsa yada kullanmaması gereken bir durumda kullanmaya kalkıyorsa ve başarısız oluyorsa burada suç tamamen o kişe aittir. Öte yandan her zaman yaptığımız gibi SOA ‘yı ölümsüzlüğün formülü olarak görmeyi de doğru bulmuyorum. Hele de Yazılım Mühendisliği gibi bir alanda birşeyleri bu kadar sıkı savunmak bana pek de akıllıca gelmiyor. (Tabi bu işten para kazanıyorsanız durum değişir ??) Yazılım Mühendisliği anlanında “işte en iyisi budur” denen kavramlar bir süre sonra herşeyin suçlusu olarak gösterilebiliyor. Bu kadar çok kavramın türemesini bazı kişiler Yazılım Mühendisliği ‘nin sürekli gelişiyor olması şeklinde yorumlarken bazıları da Yazılım Mühendisliği alanının yeterince olgunlaşmamış olması şeklinde yorumluyor.

Bir önceki paragrafta SOA ‘nın efektif bir şekilde kullanılamamasından bahsetmiştim. Burada sanırım gözden kaçan en önemli nokta her teknolojinin her iş modeline uygun olmadığı noktası.. Hatta seminerde Arden SOA mimarisine geçmek isteyen şirketlerin önce iş süreçlerini incelediklerini ve gerekli değişiklikleri yaptıktan sonra SOA altyapısını oturttuklarını belirtmişti. Bu alanda yatırım yapmanın ciddi bir maliyeti olduğundan , adam akıllı bir geri dönüş alabilmek için işi kuralına uygun yapmakta fayda var. Yine bizlerin şirket içinde biribirimizden servis istediğinden bahsetmiştim. Burada da en önemli nokta TAKIM ÇALIŞMASI. Eğer şirket içi iletişim zayıfsa oluşturulan servis havuzu efektif bir şekilde kullanılamaycaktır.

SOA ile ilgili görüşlerimi belirttikten sonra şimdi size soruyorum siz hangi cephedesiniz? SOA mı ANTI-SOA mı ?

Sağlıcakla kalın…

Konuyla ilgili linkler:

SOA Hakkında Herşey
What is SOA, really?
Service Architecture – SOA
SOA From a Corporate Perspective
IBM Developerworks – SOA

NOT: Seminerden sonra bana enteresan e-postalar gönderen arkadaşlar için ek açıklama:

*SOA bir uygulama değildir.
*IBM ‘in SOA adlı bir ürünü yoktur.
*Haliyle SOA ‘nin Crack ‘i de yoktur.
*SOA bir ürün değildir ve haliyle SOA.exe diye de birşey mevcut değildir.
*SOA web servisi demek değildir ,web servisi de SOA demek değildir.

SQL SERVER 2005 ‘DE FILLFACTOR KAVRAMI

Temmuz 18, 2007 Yorum bırakın

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.

SAFARI 3 PUBLIC BETA İLE WEB PERİŞANLIĞI

Haziran 24, 2007 2 yorum

safari.jpgÇoğunuz duymuştur ama ben yine de ufak bir hatırlatmayla yazıma giriş yapmak istiyorum. Apple ‘ın Mac platformunda kullanılan internet tarayıcısı Safari artık PC platformunda da kullanılabiliyor.

Bu haberi duymamla Safari 3’ü makinama indirip kurmam bir oldu çünkü hep Apple Store ‘larda gördüğüm Mac ‘lar aracılığıyla denediğim Safari ‘yi incelemek için iyi bir fırsattı bu ama beklentilerimi karşılayamadığını baştan belirtmeliyim.

Öncelikle ürün sayfasında yer alan o Blazing Performance ‘yi ben nedense bir türlü göremedim ? Yani ortada bir yerlerde ciddi bir sorun vardı. Ben ürünü doğru düzgün çalıştıramadım ki performansını ölçeyim. Bir ara kendi sistemimden şüphelendim ama internette ufak bir arama yapınca gördümki sorun bende değildi.

Sürekli kilitlemeler ve çökmelerle geçti Safari denemelerim. Hatta yazıya eklemek için bir screenshot alacaktım , tam o sırada yine çöktü. Dedim insanlara bir faydam dokunsun bir hata raporu göndereyim ,bu defa da bilgisayarım kilitlendi.

Tüm bu olumsuzluklara rağmen itiraf etmeliyim ki bazı siteler safari yorumuyla daha güzel görünüyor. Sanırım tarayıcının kendi Internal CSS ‘inden kaynaklanan bir durum bu. Fakat yaptığım site uyumluluk testlerinde malesef bazı sitelerin de doğru  düzgün görüntülenemediğini gördüm. (Ör: rememberthemilk)

Safari ‘nin en çok hoşuma giden özelliği dahili RSS (Built-in RSS) okuyucusu oldu. Basit ve temiz bir arayüze sahip bu RSS okuyucu akıllıca düşünülmüş.

Güvenlik konusunda yorum yapma gibi bir düşüncem yoktu ama okuduklarım karşısında dehşete düşmedim desem yeridir. Safari ‘nin bu zamana kadar güvenli olarak bilinmesinin nedeni kullanıcı sayısının diğer tarayıcıları göre az olmasıydı. Bir yazılım ne kadar çok kişi tarafından kullanılırsa o kadar çok güvenlik açığı tespit edilebiliyor. Ondandır ki Internet Exploerer ‘ı güvenliksiz olmakla suçlayan Firefox ‘un da zamanla açıkları bir bir ortaya çıkmıştır. Aynı durum Safari için de geçerli kullanımı yaygınlaştıkça daha fazla saldırıya maruz kalacaktır. (Bknz: Konuyla ilgili güzel bir yazı)

Bu özellikler dışında 12 Reasons You ‘ll Love Safari başlığı altında geçen diğer özellikler (Easy bookmarks, Pop-up blocking, Inline find, Tabbed browsing , SnapBack, Forms auto-fill, Resizable text-fields ) zaten diğer tarayıcılarda da mevcut.

Özetle şu an beta aşamasında olan Safari 3’ü masaüsütünüze taşımak için çok erken hatta Firefox gibi çok güzel bir web tarayıcısı varken (Eklentilerle daha da güzelleştirilebilir) Safari 3 beta sürecini tamamlasa da sisteminize dahil etmek için pek de sağlam bir gerekçe sunmuyor. Ama bu son cümle için bir istisna var. Eğer web uygulaması geliştiryorsanız yaptığınız web sitesi, web projesi vs. ‘nin Safari ile görüntülenip görüntülenemediğini yada ne kadar Cross-browser olduğunu görmeniz için Safari ‘yi de sisteminize dahil etmeniz gerekebilir.

Apple ‘ın bu haldeki bir ürünü son kullanıcıya sunması beni çok şaşırttı çünkü Apple ürünlerini uzun test süreclerinin ardından beta etiketi koymadan piyasaya sürmeyi seven bir şirket. Her ne kadar Apple ürünlerine beta etiketi koymasa da bir ürünün son kullanıcıyla buluştuğu ilk anda otomatik olarak beta sürecine girdiğini unutmamak gerekir diye düşünüyorum. (Bknz: Beta test)

ieformac.jpgInternet Explorer ile Microsoft Mac kullanıcılarının hayatına daha önceden girmişti. Şimdi de sıra Apple ‘da. Yazılım devleri sürekli birbirlerinin ceza sahalarına girmek için büyük bir çaba içindeler. Safari daha stabil bir hale gelirse ve bizlere kullanmamız için GERÇEKÇİ nedenler sunarsa Internet Explorer Windows platformunda bir darbe daha almış olacak. Söz tarayıcılardan açılmışken Internet Explorer ‘dan vazgeçeyemeyenler ve Light-weight bir tarayıcı arayanlar Maxthon ‘u deneyebilirler.

Şimdilik benden bu kadar. Herkese mutlu pazarlar diliyorum…

Kategoriler:APPLE, GÜNLÜK, HABERLER, NEDİR?