Programlamada Üretim Hızını Arttırmak…

Bir ürün ortaya koyarken, aynı diğer sektörlerde olduğu gibi yazılım sektöründe de maliyet çok önemli elbette.

Yazılım ve donanım masraflarını çıkardığımız zaman geriye kalan maliyet yazılımcıların çalışma süresi, bu yüzden de projenin ne kadar hızlı geliştirilirse maliyeti o kadar düşük olur diyebiliriz. İster kendi projenizi geliştiren bir yazılımcı olun, ister bir şirket, bu gerçek değişmiyor.

Tabii üretim hızını arttırırken, bunun tam karşısında dikilen çok önemli bir parametre var, o da KALİTE ! Hızlı yazmak uğruna kaliteden ödün vermemeliyiz… Türkiye’deki berbat yazılım kalitesinin bence en büyük nedeni bu.

Sorun?

Makine mühendliği eğitimi sırasında üretim planlama ile ilgili derslerimiz vardı. Bunlardan biri de seri üretimde maliyetin düşürülmesi için yapılabilecekler. Mesela bir otomobil üretim bandını düşünün.

Her ne kadar yazılım sektörü ile kıyasladığınızda maliyeti etkileyen çok fazla parametre olsa da, aynen yazılımdaki gibi üretim hızını ne kadar arttırırsanız birim otomobil başına maliyetiniz de o kadar düşer.

Burada hızı optimize ederken en önemli bir prensip vardır:

Üretim işleminin hızını arttırmaya zorlarsanız kaliteden kaybedersiniz. Ancak asıl optimize edebileceğiniz nokta, üretim işlemleri arasında ara maddelerin bir yerden bir yere transferi, makineye bağlanması, makineden sökülmesi gibi ara işlemlerdir.

Örneğin bir torna işlemini olması gerekenden daha hızlı yaparsanız torna bıçağının ısınması vb. nedenlerden ürettiğiniz malzemenin yüzey KALİTESİ düşer, pürüzsüz bir yüzey yerine tırtıklı bir yüzey elde edersiniz.

Çok benzer bir şekilde kod yazma süreniz 3 aşağı  5 yukarı bellidir. Eğer çok hızlı yazmaya çalışırsanız mutlaka bazı noktaları gözden kaçırmaya başlarsınız. Bunun da acısı birkaç ay sonra çıkar: “Ben mi yazmışım lan bunu?!?!”

Nasıl?

Peki bu konuda ne yapılabilir? Programcı özelinde baktığımızda bence önemli unsurlardan birisi, aynı seri üretim yapan bir fabrikada olduğu gibi, ara işlemleri optimize etmek. Yani program yazarken rutin olarak yaptığımız ara işlemleri hızlandırmak.

İşte benim optimize ettiğim bazı şeyler. Eğer bu listeye eklemek istediğiniz bir şey varsa lütfen yorum olarak yazın, buraya eklerim…

1. Çift Monitör Kullanmak

Bilkent’teki işimde monitörümün yanına ikinci bir monitör koyduğum zaman çalışma arkadaşlarımın ilk tepkileri daha çok “wow ne havalı” gibi hafif dalga geçen bir yaklaşımdı. Şu an, departman müdürümüz de dahil çoğu kişi çift monitör kullanıyor…

Nedeni kesinlikle hava atma merakımdan değil. Basit bir rutini devreden çıkartmak: (Alt + TAB) kombinasyonu. Bir proje yazıp test ederken saatte kaç keç alt+tab kombinasyonunu kullandığınızı saydınız mı? Ben de saymadım aslında ama: ÇOK :)

Bir monitöre favori browser’ınızı koyuyorsunuz, diğerine editörü. Editörde yazdığınızın sonucunu browser’dan karşılaştırıyorsunuz. Ya da CSS ile uğraşıyorsunuz atıyorum. CSS’i Firebug ile modifiye ederek istediğiniz sonucu elde ediyorsunuz. Sonra yandaki monitörden son halini CSS’e yazıyorsunuz.

Hatta itiraf ediyorum atuyorum 5 dakika süren bir işlemi yaparken ikinci monitörde minesweeper oynadığım da çoktur :) Çünkü o sırada başka bir işe girerek ilkine olan konsantrasyonumu kaybetmek istemem…

2. 10 Parmak Yazabilmek

Dalga geçmiyorum, hala 2-3 parmakla kod yazmaya çalışan insanlar var yahu!

3. Shortcut Kullanmak

Belki abarttığımı düşüneceksiniz ama, hiç klavyeden elinizi kaldırıp mouse’a götürmenin size vakit kaybettirdiği dikkatinizi çekmiş miydi? Bu hareket belki 0,3 saniye alıyor ama günde belki 10.000 kere yapıyoruz.  Hemen hemen her işlemin bir shortcut’ı var: Commit et, kaydet, yükle (upload), dosya aç, dosya bul vs.vs. Bazı işlemlerin çok abuk shortcut’ları olabiliyor, tek elle yapamadığınız. Onları da üşenmeden değiştirin derim…

Aslında shortcut değil ama, yeni IDE’lerde code templates diye bir olgu var. Örneğin netbeans’de “assign” yazıp TAB’a bastığımda $this->assign(‘parameter’, $parameter); gibi bir kodu otomatik üretiyor ve cursor ‘parameter’ üzerinde oluyor. Onu örneğin ‘users’ olarak değiştirdiğimde otomatik olarak $parameter da $users oluyor…

Kullandığım başka bir trick de Textmate’ten: Shift + Ctrl Enter yaptığımda bulunduğum satırın sonuna bir noktalı virgül koyup sonraki satıra geçiyor. Bunu netbeans’de yapmak için basit bir makro kaydetmem gerekti. Bir satırın ortasındayken sona git, noktalı virgül koy, sonra enter’a bas yerine epey hızlandırıyor beni…

Siz de kendi hızınızı arttıracak shortcut’lar üretebilirsiniz.

4. Programlara Kolay Erişim

Favori programlarınızı başlat menüsü altından tüm programlara, oradan program dizinine, oradan programa gidip mi çalıştırıyorsunuz?

Her gün kullandığınız programları mac kullanıyorsanız dock’a ekleyebilir, windows 7 kullanıyorsanız “pin” ile taskbar’a sabitleyebilirsiniz. (Daha eski bir windows kullanıyorsanız önce onu çöpe atmakla işe başlayabilirsiniz!) Günlük kullanmadıklarınızı ise buraya koymayın ki bu sefer de yüzlerce program arasından günlük programınızı aramayın…

Diğer programlara erişmek için Mac’te Cmd+Space ile spotlight’ı açıp programın adını yazabilirsiniz. Aynısını windowsda yapmak için klavyenizdeki windows tuşuna basıp programın adını yazmaya başlayın, başlat menüsü açılıp program listede çıkar, oradan yine klavyeyle seçip açabilirsiniz.

5. Yıldırım gibi Çalışan Bir Bilgisayar

Birçok yerde işin bu erbapları der ki:

“Paranızın alabileceği en iyi bilgisayarı alın”

Sonuçta işinize yatırımdır bu. Bir yandan donanım problemleriyle ya da kanıran bir bilgisayarla uğraşırken nasıl konsantre olabilirsiniz ki işinize?

Kullandığınız donanımın birbirine uyumlu olması çok önemli o yüzden marka bilgisayarları tercih etmekte yarar var. Para ayırabiliyorsanız Mac’i sırf bu yüzden tavsiye ederim. Windows 7 bana göre gerek stabilite, gerek performans, gerekse fonksiyonalite açısından Snow Leopard’ı solladı ancak donanım olarak Mac kadar düzgün çalışan PC her zaman toplanmıyor. Sessizliği de cabası…

En son yakın bir arkadaşım bilgisayarının sesinden bıkıp kasayı yan odaya koymaktan bahsediyordu… Duvarı delip kabloları oradan geçirecekmiş ;)

Windows 7 kullanıyorsanız hızlı bir USB belleği windows 7’yi hızlandırmak için kulanabilirsiniz. USB’yi takın ve ekrana çıkan yönlendirmeleri takip edin. Bilgisayarınızın daha hızlı tepki verdiğini görebilirsiniz.

Linux’a gelince… Desktop olarak Kullanmayın! Bu kadar basit :)

MySQL türkçe desteği: Collation ve character set nedir?

MySQL 4.1’den itibaren türkçe karakter işi karıştı. “SET NAMES latin5” ile çözdük bu problemi gerçi ama yine de sistemin nasıl çalıştığını bilmezseniz sorun yaşayabilirsiniz. O yüzden MySQL’in karakter seti ve collation hakkında birşeyler yazayım istedim.

Tanımlar

Konuyu kavramak için önce tanımları ele alalım. Bilmemiz gereken iki tanım var: “Character Set” ve “Collation”

Character Set (Karakter Seti)
Adından anlayabileceğiniz gibi desteklenen karakterleri kast ediyoruz. Örneğin latin5 karakter setindeki “ı” harfinin ASCII kodu latin1 karakter setindeki ý harfi ile aynıdır. Dolayısıyla türkçe bir dokümanı latin1 olarak gösterirseniz tüm ‘ı’ harfleri ‘ý’ olarak gösterilecektir.

Farklı diller aynı karakter setlerine sahip olabilir, örneğin latin1 seti almanca, ispanyolca, ingilizce, isveçce gibi dilleri kapsar.

Continue reading

HTML Validator

Aslında trendlere çok takılmayan, daha çok pratik bir fakat düzenli, kalıcı çözümler üretmeyi severim. O yüzden de standartları pek sevmem.

XHTML yazmam mesela, tableless design umrumda değildir, kod semantik olsun diye dert etmem. Bunların hepsi mutlaka yararları olan standartlar ama aynı zamanda vakit alan, uğraştırıcı şeyler. Ama kodun temiz ve anlaşılır, tüm tarayıcılarda düzgün çalışmasına dikkat ederim o ayrı.Watch Full Movie Streaming Online and Download

O yüzden HTML validator, CSS validator türevi kodunuzun ne kadar standartlara uyduğunu kontrol eden programları da pek kullanmam, zira ota boka hata mesajı çıkartırlar.

Mesela bu programlara FotoKritik‘te fotoğraf listelediğim bir sayfayı verdiğimde (rakamları atıyorum) 187 tane hata bulundu diyor, bunlardan 170’i “IMG” tag’ına “ALT” özelliği koymamam nedeniyle…

Bilmeyenler için: ALT özelliği görme engeli olan kişiler için düşünülmüş bi komuttur ve standartlar mutlaka tüm imajlarda bu özelliğin bulunması gerektiğini söyler. Aslında gerçekten dikkat edilmesi gereken bir kural…

Allahaşkına FotoKritik bir fotoğraf sitesi, görme engelli arkadaşların yararlanmak isteyeceği belki de son kaynak. Banane ALT özelliğinden…

Allahtan sağolsun benimle benzer düşünen birileri oturmuş Firefox’a bir eklenti yazmışlar: HTML Validator. Bu eklenti sayesinde HTML kodundaki standart dışı ve hatalı kullanımları listelerken ilgili olmadığını düşündüğünüz hata mesajlarını bir daha göstertmeyebiliyorsunuz. Özellikle sayfa görüntüleme ile ilgili problemlerin keşfinde çok işe yarıyor.

Şu yazımda web geliştiricisinin olmazsa olmazı bazı araçları kısaca tanıtmıştım, bu listeye HTML Validator’ı da eklesem iyi olacak…

Web geliştiricisinin olmazsa olmazları

Arada bir Buces BBS’te ve forumlarda sorulan sorulara bakıyorum, ya da ilgi çekici girişimlerin kaynak kodlarına göz atıyorum. Aslında bir web geliştiricisinin hayatını kolaylaştıran birçok araç ve kütüphane varken insanlar hala zor yolları seçiyor. Ben kullandığım bazı araçlardan bahsedeyim:

  1. Firefox
  2. Firebug
  3. Web Developer Toolbar
  4. Add’N Edit Cookies
  5. Zend Studio
  6. prototype ve script.aculo.us
  7. HTML Validator

Continue reading