3+5 Devrimi ve Birkaç Çıkarım

Daha 3 ile 5’i bir kod parçası ile toplatıp ekrana bastıktan sonra “Yazılım dünyası için küçük ama benim için dev bir adım!” dediğim yıllarda, yazılım sektöründeki benim için -ve genellikle diğer kişiler için de- yazılım gurusu olan insanların hayat hikayelerini okur, hayret içinde nasıl bu noktaya geldiklerini merak ederdim. Hala bu tarz insanların günlük ve sitelerinde bulunan hakkında kısmını okumaktan büyük zevk alırım. Ne yazık ki bu tarz insanların bazılarıyla tanışsam da merakımı giderecek kadar soru soracak seviyede bir sohbette bulunamadım.

Peki ben çok fazla ilerleme kaydettiğim için mi bu yazıyı yazıyorum. Kesinlikle HAYIR! Hatta yazılım hayatımda 3+5=8 adımı kadar büyük bir adım atamadım. Çok küçük adımlarla ilerliyorum.

Kimi insanlar inkar etse de, herkes küçükde olsa bir çizgi çizmek ister dünyaya. Bunu ben yaptım, işte benim eserim diyebilmek ister. Bunu ben de çok istiyorum. Yapılmamış bir şey yapmak, insanlara faydalı olmak. Belki insan psikolojisinde bir adı bile vardır bu durumun. Ama ben kesinlikle yanlış, olağandışı bir durum olarak görmüyorum bu hali.

Ama hayat her zaman elinizden tutup yardımcı olmuyor ilerlemenize. Öyle günler geliyor ki aslında bırakın bir çizgi çizmeyi kalemi bile tutamayacak durumda olduğunuz hissine kapılıyorsunuz. Ama bir yandan da o çizginin hayali duruyor kenarda.

Ben şu ana kadar bir çizgi çizemedim, belki çizemeyeceğimde. Ama bir şeyi farkettim. İlk üçe girecek yetenekte bir koşucu olamayabilirim, hatta her yarışı sonuncu da tamamlayabilirim. Ama en azından koşacağım. Belki seyirciler gülecek, hatta ben yarışı bitirene kadar kimse beklemeyecek. Fakat benim içimde koşmanın, amacımın olmasının, amacımın yolunda başarısız olmanın mutluluğu olacak.

Yazılım benim için çok büyük bir koşu, ve bu koşuda bir çizgi çizmek istiyorum. Belki hiçbir şey yapamam, belki de çok büyük işler başarırım. Ama en azından ne için mücadele ettiğimi, nasıl bir ortamda mücadele ettiğimi biliyorum.

Bu yazıyı yazmamdaki asıl amaç programlamaya, yazılıma başlarken nereden başlamalıyım, hangi kitapları okumalıyım, hangi programlama diliyle başlayabilirim vb. sorulara kendi bulduğum cevabı vermekti. Cevabımı birkaç madde halinde sıralamak gerekirse:

1-) Hangi kitapları, yazıları okumalıyım?

Bulabildiğiniz her metni, kitabı, haberi, yazıyı okuyun. Yazılımla ilgili olması yeterli olsun sizin için. Teknik kitapların yanında, yazılımın felsefesi ile ilgili kitapları da okuyun. Yazılım sektöründeki kişilerin günlüklerini ziyaret edin, çeşitli konular hakkındaki düşüncelerini okuyun. Yazılım ve teknoji ile ilgili haberleri kesinlikle takip edin.

2-) Hangi programlama dilini seçeyim?

Bu soruyu kendinize sormayın bile. O an başlamanız için en kısa süre, en az gereklilik isteyen dille başlayın. Daha sonra her dille en azından bir “Hello World” uygulaması yazın. Kesinlikle C dilini iyice öğrenin. Unutmayın yazılımı geliştiren programlama dili değil, sizsiniz. Tüm denizlere girin, en rahat hissettiğiniz denizde yüzün.

3-) Nasıl bir uygulama geliştirmeliyim?

Yazılımla ilgili aklınıza gelen her şeyi deneyin. Birisi size fikrinizin çok zor olduğunu, çok saçma olduğunu, başaramayacağınızı söylerse, ona fikri için çok teşekkür edin ve kesinlikle dikkate almayın. Belki gerçekten çok saçma bir fikir de olabilir, ama üzerinde emek verilen herşey bir tuğla daha koyacaktır gelişiminize.

4-) Hangi teknolojilere yönelmeliyim?

Yazılım geliştirme teknolojileri amaç değil, araçtır. Bu yüzden bu konuda ayrım yapmayın ve şirket yazılımcısı olmayın. Bazen gideceğiniz yere otomobille, bazen vapurla, bazen de yürüyerek gitmeniz gerekir. Şirket yazılımcısı olup vapurla caddeye, otomobille denize çıkmaya kalkmayın.

Alakasız gibi görünse de, aşağıdaki maddeler en önemlileri.

5-) Ne olursa olsun iştahınız kaybetmeyin.

6-) Hayal kurun! Hayal kurmadan yaşamak bile çok zorken, yazılım geliştirmek imkansız olur.

7-) Alçakgönüllü olun, ama neler başardığınızında farkında olun.

z-index, flash nesnesi, menü yerleşim sorunu

Daha önceden birkaç sitede flash nesnesinin açılan menülerin üzerinde kaldığına, dolayısıyla menünün açılan kısımlarının kullanılamadığına şahit olmuştum. Açıkcası bu nedendir diye o zamanlar merak edip araştırmamıştım ama aynı problem bu kez benim başıma geldi. Çözümü ise şöyle : Her nedense flash nesneleri normal z-index ile katmanlamayı dikkate almıyor. Bunun için öncelikle flash nesnemize (objectler tagi arasına)

<param name=”wmode” value=”transparent” />

tagini eklememiz gerekiyor. Daha sonra embed tagi içine ise

wmode=”transparent”

özelliğini ekliyoruz. Tabi bu flash nesnemize bir adette id veriyoruz. Son olarak CSS’miz içerisinden z-index değerlerini girerek sorunumuzu hallediyoruz. Örnek olması açısından kodları da aşağıda veriyorum. CSS’deki menu menünün içerisinde bulunduğu div’in idsi, flashnesne ise flash nesnemizin idsi.

Flash nesnemiz 

——————        

<object id=”flashnesne” classid=”clsid:D27CDB6E-AE6D-11cf-96B8-444553540000″ codebase=
“http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0″
width=”527″ height=”164″ title=”baslik”>
            <param name=”wmode” value=”transparent” />
            <param name=”movie” value=”flash/fl.swf” />
            <param name=”quality” value=”high” />
           <param name=”BGCOLOR” value=”#FFFF33″ />
           <embed src=”flash/fl.swf” mce_src=”flash/fl.swf” width=”527″ height=”164″ quality=”high” pluginspage=”http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash” type=”application/x-shockwave-flash” bgcolor=”#FFFF33″ id=”flashnesne” wmode=”transparent” ></embed>
</object>

CSS dosyasındaki özelliklerimiz 

——————

#menu
{
z-index: 2;
}
#flashnesne
{
z-index: 1;
 
}

Yazılım Mühendisliği Karikatürleri

Karikatüleri çok severim, çok basit şekilde çok fazla şeyi anlatmamızı sağlıyorlar. Hele bu karikatürler iş alanımla ilgili olursa bazen dakikalarca gülmeme sebep olabiliyor. Tesadüf eseri bir sitede yazılım mühendisliğiyle ilgili karikatürlerle karşılaştım. Oldukça fazla ama karikatür var ama zaman zaman bakıp kafamızı dağıtmaya yardımcı olacağı kesin. Karikatürleri buradan bulabilirsiniz.

Araştırıyorum öyleyse varım :)

Nerdeyse evime ve işime alıştım sayılır artık. Düzenim oturmaya başladı, yani eskiye dönme vakti geldi.

Şu aralar www.kanalfutbol.com için tasarım ve kodlama işine devam ediyorum. İnşallah en kısa süre içinde bunu tamamlayacağım.

Onun dışında Model Driven Architecture- Model Driven Development üzerine biraz biraz araştırma yapmaya başladım. Bakalım sırayla Test Driven, Domain Driven vs. gider belki.

NOT : Bu arada eğer yurtdışından kitap getirtebilecek arkadaşlar varsa benle irtibata geçebilirse sevinirim. Amazon demeyin denedimde para birimine takıldım nerdeyse tüm paramı alacaklar 🙂

Yeni Çalışma Tekniğim

Öğrencilikten çalışan olmaya, kendi istediğim uygulamayı yazmaktan, iş için uygulama yazmaya geçince başlangıçta ister istemez bazı uyum sorunları yaşanıyor. Ben de ilk bir iki ay bu sorunu yaşadım. Bu iki ay sonunda biraz biraz nasıl çalışmam gerektiği hakkında teknik geliştirdim.

Yazılım geliştirmek diğer fiziksel işlerden çok farklı bir çalışma gerektirir. Örneğin bütün gün boyunca gücünüz olduğu müddetçe kutu taşıyabilirsiniz. Eğer gücünüz yerindeyse başka bir şey gerekmez. Ama bu yazılım için bu şekilde değildir. Ne kadar fiziksel gücünüz yerinde olsa da bazen takılır, öylece kalırsınız. Bir adım bile ilerleyemezsiniz.

Ben de artık yeni yeni bir çalışma tekniği deniyorum.

Continue…

XPO ile O\R MAPPING -3

 Merhabalar, bu makale serimizde Object Relational Mapping kavramından ve DevExpress ürün ailesine ait XPO ile temel veritabanı işlemlerimizi nasıl yapabileceğimizden bahsedeceğiz.

İlişkiler:

Veritabanı uygulamalarımızda her zaman tek tabloyla çalışmadığımız için XPO’da da birden fazla tabloyla çalışmamızı ve aralarında ilişkiler kurmamızı sağlayan yapılar var. XPO’da tablolar arası ilişki kurmak istediğimizde bunu bu tablolara ait sınıflarımızı oluştururken Association anahtar sözcüğüyle oluşturuyoruz. Ancak bire bir ilişkiler de Association sözcüğünü kullanmak yerine ilişki içinde bulunan her iki sınıfta da diğer sınıf türünden bir nesne oluşturmamız yeterli oluyor.

  Continue…

XPO ile O\R MAPPING -1

   Merhabalar, bu makale serimizde Object Relational Mapping kavramından ve DevExpress ürün ailesine ait XPO ile temel veritabanı işlemlerimizi nasıl yapabileceğimizden bahsedeceğiz

  Object Relational Mapping : O\R Mapping kısaca nesne tabanlı programlama dilleri ile ilişkisel veritabanları arasında ilişkilendirme yapmamızı sağlayan bir programlama tekniğidir. Yani veritabanı üzerinde yapacağımız işlemler için hiçbir Sql kodu yazmamız gerekmez. Veritabanı üzerindeki alanlara programımızda oluşturduğumuz sınıflar aracılığıyla ulaşıyoruz ve ekleme silme vb işlemleri sınıflar üzerinden yapıyoruz. Böylece veritabanı bağımsız uygulamalar yapabiliyoruz. Bu işlemi yapmamamız sağlayan çeşitli çözümler var açık kaynak kodlu Nhibernate, .Net 3.0 ile gelen LINQ, DevExpress Xpo bunlardan bir kaçı.

Continue…