Salı, Temmuz 22, 2008

Web uygulama

muziktek.net web uygulamaları geliştirmek isteyenler için yol haritası niteliğinde bir yazı yazmıştım. Bu yazıyı düzenleyip buraya da ekliyorum.

1. HTML öğrenin. Daha önce bahsettiğim gibi syntax highlighting özelliği olan bir editör kullanmanızı öneririm. Basit web sayfaları yapın. Özellikle tablolara iyi hakim olun ve CSS öğrenin. HTML bilginizi iyi bir noktaya getirmeden diğer basamaklara geçmeyin.

Örneğin forumdaki tablo yapısının bir benzerini yapamıyorsanız diğer basamaklar için erken demektir. Tabloları manuel olarak yapabilmenin önemini PHP ile veritabanından okuyup tablolara yazarken anlayacaksınız.

Tablolara ve CSS'ye gerçekten hakim olmak biraz zaman alabilir. Özellikle IE ve Firefox arasındaki farklardan dolayı zor zamanlar yaşayabilirsiniz.

Bu arada HTML'de renk kullanımı (HEX renk kodları), font boyutlandırma ve metin formatlama gibi konuları iyice öğrenin. Bunları daima CSS ile yapın.

W3C kurallarını öğrenin ve göz ardı etmeyin.

2. Photoshop veya GIMP yada başka bir grafik programını öğrenin. Bir resim nasıl slice'lara bölünür öğrenin. Tasarımlarınızda renk uyumuna dikkat edin. Müzikteki armoni gibi renklerde de armoni vardır. Bu konuda gözünüzü eğitin. Bu renk uyumu konusu tabloların, yazıların, zeminin vs. renkleri için de geçerli.

3. JavaScript öğrenin. JavaScript kullanarak HTML'in bazı kısıtlamalarını aşabilirsiniz. İlk bakışta karışık gelebilir, zira sözdizimi biraz tuhafdır ama JavaScript kolay ve eğlenceli bir dildir.

İlk üç aşamayı geçtiğinizde durağan (statik) sayfalardan oluşan web siteleri yapabilirsiniz. Bu sitelerdeki sayfa sayısı arttıkça PHP'ye gereksinimiz artacak.

Diyelimki on sayfadan oluşan bir site yaptınız, ve her sayfanın en üstünde logo, bir altında menü, bir altında içerik kısmı ve en altta telif hakları bildirgesi olsun istiyorsunuz. Her sayfanın html dosyası içinde bu kısımlar olmalı... Hepsinde aynı... Tekrar... tekrar... En küçük bir değişiklik durumunda on dosyayı da teker teker açıp düzenlemek gerekecek. Önce frame'lerle bu sorunun üstesinden gelmeye çalışın. İleriki dönemlerde PHP ve AJAX ile angaryadan kurtulacaksınız.

Bu noktada "şunları baştan öğrensek ya" diye itiraz edenler olabilir... Bu işin enstrüman çalmayı öğrenmekten çok farklı olmadığını söylemeliyim. Başlangıçta biraz sıkıcı gelse de temel çalışmalar iyi bir programcı/enstrümantalist olmanızı sağlar. İnanmayan denesin görsün...

4. PHP ile programlamaya başlangıç yapın. PHP algoritma kurma, fonksiyon kullanma, nesne kullanma açısında diğer programlama dillerinden farklılık göstermez. PHP bir web tasarım dili değildir. O yüzden programcı formasyonu ile adım adım öğrenin.

Sağdan soldan snippet kopyalayıp yapıştırmakla programcı olunmaz. O yüzden bir kitap alın ve sayfa sayfa takip edin. O'Reilly kitaplarını tavsiye ederim. Bu arada bir önceki mesajımdaki PHP Official Manual tavsiyemi de unutmayın.

Tüm fonksiyonları, tüm formatlamaları ezberlemeye çalışmayın ama arada manuele göz gezdirin. Elinizin altında nasıl fonksiyonlar olduğunu öğrenin. Bazen işlerinizi çok kolaylaştıracak fonksiyonlar gözünüzden kaçabiliyor. Yada okuduğunuz kitap, yada takip ettiğiniz tutorialler eski bir sürümü anlatıyor ve yeni özellikler gelmiş olabilir.

Bu aşamada problemlerinizi önce kendiniz çözmeye çalışın. Hemen Google'a koşmayın. Bunun iki nedeni var, (1) çabalayarak ulaştığınız bilgi kalıcı olur (2) programcılık konusunda zihniniz bakir ise herkesten daha iyi bir yöntem bulabilirsiniz. Taklitçilerin bişey icad ettiği görülmemiştir.

Tabiki bu tüm dünyaya gözlerinizi kapatın demek değil. Boş zamanlarınızda, programcılık sorunlarına diğer programcılar nasıl çözümler getirmişler bakın. Daha iyi ve daha hızlı çözümler bulmaya çalışın.

Yazdığınız kodların hatasız ve hızlı olmasına dikkat edin. Aceleyle yazarken yaptığınız küçük bir hatayı tespit etmek çok zamanınızı alabilir.

Bazı programcılık kitaplarında KISS diye bir prensipten bahsederler. Keep it Simple, Stupid, yani kodu basit tut, anlaşılır tut... Fazla karmaşık hale getirme... Ben KISS prensibini kabul etmiyorum.

Programcılıkta amaç hatasız, etkin ve mümkün olan en hızlı programı yazmaktır. Programlar insanlar okusun diye yazılmıyor, bilgisayarlar okusun diye yazılıyor. O yüzden ahmaklar okuyunca anlamıycak diye barok bir program yazmaktan çekinmeyin. Bazen bir tekerleme gibi görünen çok kompleks kodlar en iyi çözümdür. Tabi bu işi yokuşa sürün demek değil. Herşey için bilmece gibi kod yazın, kimse işin içinden çıkamasın demek değil. Ama daha etkin kod yazmak için zekanızı kullanmaktan çekinmeyin, basitlik görecelidir, anlamayan anlamasın.

Corporate programcılar, yani programcılığı sevdiği için değil, mesleği olduğu için yapan ve şirketlerde programcılık yapan adamlar için geçerli prensipler "I like challanges, and I like to challange" diyen hacker programcılar için geçerli değildir. Bilişim sektörü para kazandırmaya başladığından beri çok sayıda ahmak bu sektöre girdi. Bunun sonucu olarak programcılıkta genel zeka seviyesi düştü. Müzikte de aynısı var işte. Bu tuzağa düşmeyin...

PHP'de biraz ilerledikten sonra başka dillere de göz atın. Birden fazla programlama dili öğrenmeniz hakimiyetinizi ve dilleri anlayışınızı geliştirir. Sıradan PHP programcılığı gelenekleri dışına çıkmak, diğer dillerdeki stratejileri PHP'ye uyarlamak programcılığınız için iyidir.

5. SQL öğrenmeye başlayın. Benim önerim PostreSQL kullanmanız. SQL sorgularını iyice öğrenin. Bazı SQL fonksiyonları veri sorgulamada çok büyük kolaylıklar sağlarlar. Eğer bir iş SQL sorgusu ile yapılabiliyorsa bu işi PHP'ye bırakmayın.

Veritabanı konusunda en önemli nokta veri tabanının tasarımıdır. Yani her bir tablo hangi verileri tutacak, alan büyüklükleri ve türleri ne olacak, tablolar arası ilişkilendirmeler nasıl yapılacak en kritik sorulardır. Veritabanı tasarımı çok ciddi planlama gerektiren bir konudur. Yanlışınızdan dönmeniz güç olabilir. Veritabanını tasarladınız, tabloları oluşturdunuz ve veri giren ve sorgulayan kodları yazdınız, bu aşamadan sonra veri tabanında yapacağınız tasarım değişiklikeri PHP kodlarını da değiştirmenizi gerektirecektir. Bu yüzden veritabanı tasarımı aşamasında çok dikkatli olun. Ben bu aşamada tüm sistemin algoritmasını kafamda kuruyorum. Bol bol not alıyorum. Kağıt üzerinde veri sorgulama senaryolarımı sınıyorum. Bu aşamanın önemini vurguluyorum ama öğrenilmesi güç bir şey değil. Basit veritabanlarından karmaşığa doğru ilerledikçe tasarım becerisi artıyor.

Veritabanından PHP ile sorgu yapma ve bunu HTML ile formatlamayı öğrenin. Zaten tablolara ve PHP ile döngü kurmaya hakim olduğunuz için bu sizin için kolay olacaktır.

İşin teorik kısmını burada noktalıyorum. Bu konularda sorularınız olursa bildiğim kadarıyla yardımcı olmaya çalışırım.

Hiç yorum yok: