Monthly Archives: March 2007

WHAT YOU SEE IS NOT ALWAYS WHAT YOU GET

express.pngMalum son senem ve bitirme projesi belası başımda. Başa gelen çekilir diyerekten kolları sıvayıp işe giriştim. Hazırladığımız sistemin web tabanlı yönetici arayüzünü yazmak benim görevim. Bu konuda ASP.NET ve VISUAL STUDIO 2005 ikilisi bana eşlik ediyor.

Gerçekten kodlama sırasında bana fazlasıyla faydası dokunuyor Visual Studio ‘nun ama tasarım sırasında yaşattığı perişanlık hayata küstürecek cinsten. Hele tablo kullanıyorsam durum daha da felaket. Deveye hendek atlatmak Visual Studio ‘da tasarım yapmaktan bazen daha kolay olabiliyor.

Sonunda düşümdüm ve bu işin altından bu şekilde kalkamayacağımı anladım çünkü tablolara ait tüm değerleri neredeyse elle giriyordum. Daha CTP (Community Technology Preview ) zamanında denediğim  ve beğenmeyip hemen bilgisayarımdan kaldırdığım Microsoft Expressin Web ‘den yardım almaya karar verdim. 

Expression Web gerçekten de tasarım konusunda Visual Studio ‘dan daha iyi bir araç. Biraz Dreamweaver havası estirmişler. Dedim tamamdır artık rahatça hallederim herşeyi ama yine aynı sorunlar başladı. Arka planda oluşturduğu kodlara bakınca 28569px gibi bir tablo genişliğinin atandığını gördüm :) . Sanırım erken sevinmişim. Bir de AJAX bileşenlerinin görüntülenememesi beni daha da zor durumda bıraktı.

Özetle artık tabloları kendim elle oluşturuyorum. Sanırım WHAT YOU SEE IS WHAT YOU GET (WYSWYG) sloganlarına pek de anladanmamak lazım. Aklıma takılan bir soru da acaba bu işin bu kadar zor mu olduğu konusunda. Anlaşılan birileri çıkıp adam akıllı bir şekilde tasarım ile oluşturulan tablonun HTML kodunu arka planda üretebilen bir araç yapsa köşeyi dönecek.

Şimdilik benden bu kadar. Oluşturulmayı bekleyen tablolarımın yanına gidiyorum. Sağlıcakla kalın…

PARDUS PROJESİNDE YER ALMAK İSTER MİSİNİZ?

pardus_penguen.png

Blogumu takip eden öğrenci arkadaşlar için Darkhardware.com’da gördüğüm güzel bir haberi aynen aktarıyorum

“TÜBİTAK UEKAE bünyesinde geliştirilen Pardus projesi, kapılarını yaz sezonunu verimli bir çalışma ile geçirmek isteyen öğrencilere açıyor. 14′ü TÜBİTAK UEKAE çalışanı yaklaşık 50 kadar geliştiricinin katkısıyla gelişen Pardus, Türkiye’nin en büyük özgür yazılım projesi. Kendine güvenen ve programlama deneyimi kazanmak isteyen öğrencilere staj imkânı sağlayacak olan Pardus projesi, kullanıcıları geliştiricilerle buluşturarak onlara, özgür yazılım dünyasını yakından ve derinlemesine tanıma fırsatı sunuyor.

Üniversitelerin ilgili bölümlerinde okuyan öğrenci ve bağımsız bir şekilde ayakta durmaya çalışan genç geliştiricileri yaz aylarında güneye gitmek yerine TÜBİTAK içinde “ter dökmeye” çağıran Pardus, geliştiriciler tarafından hazırlanan staj konuları dışında öğrencilere kendi özgün fikirleriyle de başvurma imkanı sağlıyor.

TÜBİTAK Gebze Yerleşkesi’ndeki Pardus ofisinde gerçekleştirilecek staj için son başvuru tarihi 20 Nisan 2007. Başvuru bilgileri ve staj konuları için ayrıntılı bilgiye, www.pardus.org.tr/staj adresinden ulaşılabilinir.”

Sizlere bu staj süreci için başvuruda bulunmanızı şiddetle tavsiye ediyorum. Öncelikle böyle ciddi bir projenin içinde yer alarak çok şey öğrenebilirsin. Öte yandan ileriki iş başvurularınız için elinizde iyi bir referansınız olur. Daha da önemlisi yerli işletim sistemimiz için yapılan çalışmalara destek olmuş olursunuz. Öğrencilik döneminde yapılan stajların önemini o zamanlarda anlamak pek kolay olmuyor ama naylon staj yada işe yaramayacak sadece defter doldurma amaçlı yapılan stajlar ileride can sıkabiliyor. Benden hatırlatması…

Kaynak : Darkhardware.com

NORMALIZE UNTIL IT HURTS DE-NORMALIZE UNTIL IT WORKS

database.gifBu yazıyı daha önce yazmayı düşünüyordum ama başlıktaki cümleyi tam olarak hatırlamam bir ayımı aldı . Sonunda cümleyi not aldığım yeri buldum ve konuyu buraya taşıyorum. Bu arada başlıktaki güzel sözün Jason Couhman ‘a ait olduğunu da öğrendim.

NORMALIZATION ve DE-NORMALIZATION kavramlarını bir buçuk ay önce moderatörü olduğum JDBC_TR  mail grubunda da tartışmaya açmıştım. Gerçekten de çok değişik cevaplar gelmişti. Bu yazıda normalization yada de-normalization nedir üzerinde durmayacağım. Merak edenler yada hiç bilgisi olmayanlar buradan birşeyler öğrenelebilirler.

Veritabanı yönetim sistemleri dersi alanlar yada az buçuk veritabanı kavramıyla işi olanlar normalization ve normal form terimlerini mutlaka duymuşlardır. Derslerde yada sınavlarda harıl harıl normalizasyon yapmaya çalıştığımızı hatırlıyorum. 1.NF(NORMAL FORM), 2.NF, 3.NF, 4.NF, 5.NF hatta 6. NF, BOYCE-CODD, DOMAIN/KEY olmak üzere benim bildiğim 8 adet normalizasyon kuralıvar. Bunlardan esas olanlar ilk 3 tanesidir. Yani ilk üç normal formu refleks olarak uygulayabilmeniz beklenir sizden.

Aslında bu normal form olayına öğrenme aşamasındayken dikkat ediyoruz , daha sonra tasarım yaparken zaten otomatik olarak normal yapmaya başlıyoruz herşeyi (Deneyime bağlı olarak değişebilir :) ). Bu cümle ile İLK HATAYI DA YAPMIŞ OLDUM çünkü normalizasyon tasarım (design) aşamasında değil analiz aşamasında yapılması gereken bir işlemdir. Yani oluşturulacak veritabanı üzerindeki işlemlerin , kullanıcı sayısının ve diğer kriterlerin iyi bir şekilde analiz edilmesinden sonra buna karar verilir. 

Peki normalizasyon bize neler kazandırır?

  • Aynı veriden birden fazla olmasını engeller. (Avoids duplication)
  • Veri girişini daha efektif hale getirir.
  • Veri yönetimini kolayşlaştırır.
  • Disk alanının daha efektif kullanılmasını sağlar.

Bunlar normalizasyonun güzel yanları ki hep derslerde bunlardan bahsedilir. Sürekli birşeyleri normalize ederiz ve sütten çıkma ak kaşık gibi görürüz normalizasyonu. Halbuki yan etkileri de vardır. Örneğin:

  • Veri çekme  (Data Retrieval) işlemlerini zorlaştırır.
  • Daha karmaşık SQL ifadeleri gerektirir. ( Joinler havalarda uçuşabilir :) )

İşte bu yan etkilerinden dolayı bazı sistemlerde veya senaryolarda normalizasyon yerine de-normalizasyon dediğimiz yöntem tercih edilir.

De-normalize bir yapıda çoğu bilgi aynı tabloda tutulur. Mesela veritabanımızda bir kullanıcya ait email adreslerini saklamak istiyoruz. Bunu normalize bir şekilde yapmak istersek ayrı bir e-mail tablosu yaratıp kullanıcıya ait unique (tekil) bir değerle birlikte mail adreslerini buraya kaydederiz ve bu tablolar arasında PK/FK ilişkisi kurarız. Ama de-normalize bir yapıda doğrudan kullanıcı bilgilerinin olduğu tabloya kolon ekleyerek (n adet e-mail kolonu) yada satır ekleyerek (tüm bilgiler aynı sadece e-mail alanı farklı bir satır) bu işi halledebiliriz. Eğer tüm bilgiler aynı tabloda olursa sorgulama ,raporlama gibi işlmeler daha hızlı ve kolayca halledilebilir.

Görülüyorki normalizasyon ve de-normalizasyon konusu ciddi bir analiz istiyor. Genel olarak OLTP (ONLINE TRANSACTION PROCESSING) ortamlarında Normalizasyon doğal bir yaklaşımken OLAP (ONLINE ANALYTICAL PROCESSING) ortamlarında da De-normalizasyon doğal bir yaklaşımdır. Verilerimizi normalize etmek uğruna yüzlerce tabloya bölerken ilerisini de düşünmekte fayda var diyorum. Özelikle Datawarehouse yada Data Mart ortamlarında daha az ve büyük boyutlu tablolarla çalışılarak sorgulardan daha hızlı sonuç alınması sağlanır. Milyonlarca kaydın bulunduğu tablolar arasında JOIN yapmaya kalkmak ciddi performans sorunları yaratabilir. Bu nedenle az değişen (rarely updated), daha çok listemele ve raporlama gibi amaçlarla kullanılan , çok fazla tablo arasında join işlemi gerektiren verilerde de-normlizasyon yapılabilir. Fakat güncellemenin çok olduğu veri gruplarında normalizasyon işlemi VERİ TUTARLILIĞI için şarttır.

Bu konu üzerinde araştırma yaparken özellikle analiz amaçlı kullanılacak veri grupları için kurumların normalize olan tablolardaki verileri de-normalize bir tablo yapısına kopyalayarak, analiz ,raporlama vb.  işlemleri bunlar üzerinde yaptıklarını öğrendim. Bu noktada kurumlar kararı ya danışman şirketlere bırakıyorlar yada DBA ‘lardan görüş alıyorlar. Bazıları da Allaha emanet yaşıyorlar :) .

Bir diğer nokta da aslında herşeyin böyle milimetrik hesaplanmadığı gerçeği . Yukarıda yazanlar neydi peki diye sorabilirsiniz ki haklısınız da ama biraz rahat olmakta fayda var. Tablolarımızı  normalize yada de-normalize etmek için günlük hayatta bu kadar da çok ince eleyip sık dokumuyoruz. Özellikle de donanımların ucuzlamasıyla sonra performans dar boğazlarını insanlar donanım yükseltmeleriyle aşar oldular. Her ne kadar bir yazılımcı olarak bu yaklaşımı kabul etmek istemesem de bazen yazılımsal çözümler ve bunların maliyetleri (iş gücü, zaman vs.) donanımsal çözümlerden kat kat fazla olabiliyor.

Veritabanı yönetim sistemleri dersinin projesinin ilk raporu verileceği zaman daha projeye başlamadığımız için bir saatlik yemek arasında 2 sayfalık senaryoyu 3 tablo ile halletmiştik (Nasıl becerdik hala inanamıyorum ) . Ama raporlar incelip düzeltilmek üzere geri dağıtılınca pek de birşey beceremediğimiz ortaya çıkmıştı. Biz de ikinci raporda herşeyi ayrı tablolara koymaya kalkışınca bu defa tablo sayımız 3 ‘ten 13 ‘e çıkmıştı ama iş tabloları sorgulamaya gelince ve insan JOIN özürlü olunca baya bir ecel teri dökmüştük.

İşte yukarıda okuduğunuz  yazı o günlerde yaşadığım perişanlığın bir yansımasıdır. Umarım keyif alarak ve birşeyler öğrenerek okumuşsunuzdur. Hepiniz sağlıcakla kalın ve beni okumaya devam edin…  

GÜNLÜK İNDİRİM SİTELERİ

İnternette artık sıklıkla karşımıza çıkan bir diğer site modeli de “GÜNLÜK İNDİRİM” siteleri. Bu konudaki web girişimlerinin sayısı her geçen gün artıyor. Bu tarz sitelerde bir gün boyunca tek bir ürün sergileniyor ve ciddi indirimler olabiliyor. Tabi indirime giren ürünlerin ciddiyeti tartışılır. Bazı siteler tekstil ,elektronik, kitap gibi tek bir konuya odaklanırken bazıları her çeşit ürünü sergileyebiliyor. Ben de internette gezinirken rastladığım bir kaç siteyi buraya yazıyorum ,belki işinize yarayabilir. Unutmadan hatırlatmam gereken birşey var. O da ben bu yazıda adı geçen sitelerin hiçbirinden alışveriş yapmış değilim. Yani alışveriş yapacaksanız , kredi kartı şifrenizi verecekseniz güvenilirliklerini araştırmanızı öneriyorum. Bir diğer önemli nokta da gerçekten indirim olup olmadığı konusunda. Alışveriş yapmadan önce  Teknofiyat gibi arama motorlarından veya kullandığınız online alışveriş sitelerinden o ürünlerin fiyatına bakmakta fayda var. Aşağıda bildiğim 5 adet günlük indirim sitesinin linki yer alıyor. Umarım faydalı olur. 

ind.jpghttp://www.bendeistiyorum.com/

http://www.bunualiyorum.com/

http://www.buguneozel.com/

http://www.indragandi.com/

http://www.kachmaz.com/