Tureng Online sözlüğü çok kullanışlı buldum, tavsiye ederim.
tureng.com sitesindeki kaynaklar kısmında çok sayıda online sözlüğün bağlantıları da derlenmiş.
Ayrıca mobile.tureng.com m.tureng.com pocket.tureng.com pda.tureng.com adreslerinden sözlüğün taşınabilir bilgisayarlar ve cep telefonlarına uygun sayfasına ulaşabilirsiniz.
Kişisel weblog sayfam... 2D ve 3D bilgisayar grafikleri, Free Software, GNU/Hurd, GNU/Linux, Amiga ve müzik üzerine görüşlerim ve Mehmet Cihan'la grafik çalışmalarımızdan örnekler, Accodeum'dan haberler vs.
Salı, Temmuz 15, 2008
Cumartesi, Temmuz 12, 2008
PHP üzerine yüzeysel bir yazı
muziktek.net forumlarında PHP üzerine yazdığım bir yazı... Biraz değiştirip, düzenleyip buraya da ekliyorum.
Benim önerdiğim PHP öğrenme yöntemi işin en temelinden başlamaktır. Biraz C ve biraz Java biliyorsanız C dilinden fonksiyon kullanımıda ve Java'dan nesnelere zaten alışık olduğunuz için PHP öğrenmek sizin için çok kolay olacaktır. Hiç programlama bilmeyen biri için bile PHP oldukça iyi bir başlangıç noktasıdır.
PHP konusunda bilmeniz gereken ilk şey PHP'nin C gibi derlenen (compiled) bir dil değil, yorumlanan (interpreted) bir dil olduğudur. PHP ile yazılan web uygulamalarında ikili (binary) yani çalıştırılabilir (executable) bir dosya oluşturmayız. Betik (script) her defasında yeniden yorumlanır.
PHP'nin temel çalışma prensibini canlı bir örnek ile -yüzeysel olarak- anlatmaya çalışayım.
Önce sadece bir HTTP server ile çalıştığımızı düşünelim. Sunucu uygulaması olarak Apache kullandığımızı varsayalım. Önermesem de IIS gibi şeyler de var.
Eğer özel bir ayar yapmadıysanız Apache sunucuya gelen HTTP isteklerine htdocs dizini altındaki dosyaları gönderek cevap verir. Örneğin, dosya bir html dosyasıysa dosyayı olduğu gibi aktarır, ve istemci bu dosyayı bir ağ tarayısıyla (Firefox, IE, Safari, Opera vs.) istemişse bu tarayıcı gelen html dosyasını önce parse eder, yani okur, sonra render eder, yani tarayıcı sayfasına çizer. Eğer sayfa içinde grafik gibi elemanlar varsa bunlar için de sunucuya istek gönderir ve sunucudan gelen grafiği (jpeg, png, bmp, svg vs.) gerekli yere yerleştirir. Eğer tarayıcıda Flash, Quicktime gibi eklentiler yüklü ise bunları yorumlaması için ilgili eklentiyi çağırır.
Yani; tarayıcının adres satırına adresi (URL) yazıp gönder tuşuna basmamızla birlikte tarayıcı bir HTTP istemi (HTTP request) oluşturur, bunu TCP/IP paket yönetimine uygun kapıyı (port) kullanarak bildirir, istem Internet'e çıkar ve sunucuya ulaşır, sunucu (1) istemin yapıldığı portu dinliyorsa (2) o isteme cevap verecek uygulamaya sahipse (ve düzgün ayarlanmışsa) istemi dikkate alır ve ilgili uygulamayı haber verir, bizim örneğimizde Apache devreye girer, eğer istenilen dosya mevcutsa o dosyayı sunucu üzerindeki TCP/IP yöneticisine iletir, dosya paketlenir ve istemciye doğru yola çıkar. Aslına arada çalışan başka programlar var, ben özetliyorum, tam isabetli bir anlatım olmuyor.
Şimdi bu sunucuya bir de PHP sunucusu ekleyelim. Bu kez Apache kendine gelen isteği değerlendirirken, istek yapılan dosya içinde PHP betiği var mı diye bakar. Eğer PHP betiği varsa bu kez dosyayı istemciye olduğu gibi göndermez. Dosya PHP uygulaması tarafından değerlendirilir ve Apache'ye geri gönderilir. Apache, PHP'den geri gelen dosyayı istemciye yollar.
Şimdi bir html dosyasının içinden PHP'yi nasıl harekete geçirebileceğimize ve neler yapabileceğimize bakalım. PHP'yi göreve çağırmak için normalde HTML içinde bulunmayan etiketleri (tag) kullanırız, "<?PHP" ile başlayıp "?>" ile biten blok PHP'nin işleyeceği bloktur.
Peki PHP'ye neden ihtiyaç duyarız? PHP kullanarak statik HTML ile yapamayacağımız şeyler yapabiliriz. PHP bize sunucu tarafında çalışan bir programlama ortamı sunar. Matematiksel işlemlerden, veritabanı erişimine, grafik işlemlerinden, veri madenciliğine kadar pek çok şeyi mümkün kılar.
Eğer sunucu ile istemci arasında hızlı bir bağlantı varsa bilgisayarımızdan yerel olarak kullandığımız pekçok program tamamen sunucu üzerinde çalışacak şekilde yeniden tasarlanabilir. AJAX kullanımıyla da program oldukça akıcı hale gelir. Bunun pek çok örneği de var.
Bu arada bu işler için tek yol PHP değildir, başka yollar da var. PHP'nin yetersiz, yavaş kaldığı yerlerde, örneğin C ile hatta Assembly dili ile sunucu tarafı uygulamaları geliştirilebilir. Perl, Python, Ruby gibi diller de bu işler için yaygın olarak kullanılır.
PHP'ye alternatif bir de Coldfusion var. Hakkında çok fazla bilgim yok.
Veritabanı erişiminde de durum Apache ile PHP'nin iletişimine benzer. Apache PHP etiketini gördüğünde dosyanın işlenmesi için PHP'ye başvuruyordu. PHP de veritabanı işlemleri için veritabanı sunucusuna başvurur, üretilen sonucu alır, işler, ve Apache'ye aktarır.
Bu arada belirtmem gereken bir nokta var, Apache en sade kurulumda PHP'yi tanımaz. PHP ile iletişimini sağlamak için çeşitli ayarlar yapmak gereklidir. PHP de benzer şekilde en sade kurulumunda hiç bir veritabanı sunucusunu tanımaz, tanıştırmak için ayar yapmak gerekir.
Bu ayarlar özel yazılımlarla otomatik olarak yapılabilir. Apache+PHP+MySQL gibi paketler var. Tek kurulumla tüm ilişkilendirmeyi yapıp sistemi çalışır halde teslim ediyorlar. Ama ben teker teker kendim kurup elle ayarlamayı tercih ediyorum.
Örneği iyice pratiğe dökelim....
PHP ile veritabanı işlemi yapan bir web uygulaması geliştirmek istersek ilk olarak sunucuları yüklemememiz gerekecek. Önce Apache kurup, sonra PostgreSQL'i yüklerip en son PHP kurulumu ile sunucu tarafını hazır hale getiririz. Sunucu çalıştığımız bilgisayarın kendisi de olabilir. Yani aynı makine hem sunucu hem istemci olabilir. Eğer yerel ağda bulunan başka bir bilgisayarı sunucu yapmak istersek, bu sunucuya bir de FTP sunucusu kurmamız gerekecek.
Ben örneğimde istemci ve sunucunun aynı bilgisayar olduğunu varsayacağım.
Sunucu kurulumu tamamlandıktan sonra bir metin düzenleyicisine ihtiyacımız olacak. Aslında Windows üzerinde notepad bu iş için yeterli. Ama notepad'den daha iyi imkanlar sunan programcılara özel metin düzenleyicileri var. Bu programlar bize bazı kolaylıklar sağlarlar;
- Sözdizim yardımı yani syntax high-lighting; yazdığımız metni her an inceleyip komutları ayrı renk, parantezleri yarı renk, yorum satırlarını yarı renkte gösteriler. Bu bize çok büyük bir kolaylık sağlar.
- Bazı programların komutları tamamlama özelliği vardır, leb deyince leblebeyi anlarlar yani.
- If-Else, Switch-Case gibi sık kullanılan program bloklarını kolayca koda ekleyebilirler.
- Bütünleşik yardım sistemi sunarlar. İmleç bir komutun üzerindeyken yardım istendiğinde o komutun manuel sayfasını açarlar.
- Bütünleşik FTP istemcisi barındırırlar, sunucuya başlanıp bir php dosyasını çekerler, istediğiniz düzenlemeyi yaparsınız, dosyayı FTP'ye koyarlar.
Daha pek çok kolaylık sayılabilir. Bunlar aklıma ilk anda gelenler. Tüm özelliklerden vazgeçebilirim ama sözdizimi yardımı olmadan çok fazla hata yapıyorum ben.
DZSoft PHP Editor, PHP Expert Editor gibi programlar var Windows için. Ben iki örnek verdim ama onlarca var piyasada, bazıları ücretsiz ve gayet iyi programlar. Mac için ne var bilmiyorum. GNU'da ise yüzlerce editör var, hepsi özgür yazılım, hepsi ücretsiz.
Metin düzenleyicimizi seçtikten sonra PHP ile programlamaya başlayabiliriz. Benim genelde kurulumdan sonra ilk yaptığım şey phpinfo() komutu ile sistemi test etmek...
Yani önce metin düzenleyicisinde şöyle bir program yazıyorum;
<?PHP
phpinfo();
?>
PostgreSQL için;
<?PHP
$dbconn = pg_connect("host=localhost port=5432 dbname=mary")
or die("Could not connect");
echo "Connected successfully";
pg_close($dbconn);
?>
MySQL için;
<?PHP
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
or die('Could not connect: ' . mysql_error());
echo 'Connected successfully';
mysql_select_db('my_database') or die('Could not select database');
?>
* Böyle bir dosyayı, halka açık bir sunucu üzerinde asla bırakmamak gerekir. phpinfo() komutu kötü niyetli kişiler için sistem hakkında çok güzel bilgiler sağlar.
İlk olarak hatırlatmam gereken şey, bir web uygulaması geliştirken grafik tasarımı ve programlama aşamalarının ayrı olduğudur. Yani PHP, SQL, JavaScript vs. bilmeniz size grafik tasarım konusunda pek yardımcı olmayacaktır.
Benim önerdiğim PHP öğrenme yöntemi işin en temelinden başlamaktır. Biraz C ve biraz Java biliyorsanız C dilinden fonksiyon kullanımıda ve Java'dan nesnelere zaten alışık olduğunuz için PHP öğrenmek sizin için çok kolay olacaktır. Hiç programlama bilmeyen biri için bile PHP oldukça iyi bir başlangıç noktasıdır.
PHP konusunda bilmeniz gereken ilk şey PHP'nin C gibi derlenen (compiled) bir dil değil, yorumlanan (interpreted) bir dil olduğudur. PHP ile yazılan web uygulamalarında ikili (binary) yani çalıştırılabilir (executable) bir dosya oluşturmayız. Betik (script) her defasında yeniden yorumlanır.
PHP'nin temel çalışma prensibini canlı bir örnek ile -yüzeysel olarak- anlatmaya çalışayım.
Önce sadece bir HTTP server ile çalıştığımızı düşünelim. Sunucu uygulaması olarak Apache kullandığımızı varsayalım. Önermesem de IIS gibi şeyler de var.
Eğer özel bir ayar yapmadıysanız Apache sunucuya gelen HTTP isteklerine htdocs dizini altındaki dosyaları gönderek cevap verir. Örneğin, dosya bir html dosyasıysa dosyayı olduğu gibi aktarır, ve istemci bu dosyayı bir ağ tarayısıyla (Firefox, IE, Safari, Opera vs.) istemişse bu tarayıcı gelen html dosyasını önce parse eder, yani okur, sonra render eder, yani tarayıcı sayfasına çizer. Eğer sayfa içinde grafik gibi elemanlar varsa bunlar için de sunucuya istek gönderir ve sunucudan gelen grafiği (jpeg, png, bmp, svg vs.) gerekli yere yerleştirir. Eğer tarayıcıda Flash, Quicktime gibi eklentiler yüklü ise bunları yorumlaması için ilgili eklentiyi çağırır.
Yani; tarayıcının adres satırına adresi (URL) yazıp gönder tuşuna basmamızla birlikte tarayıcı bir HTTP istemi (HTTP request) oluşturur, bunu TCP/IP paket yönetimine uygun kapıyı (port) kullanarak bildirir, istem Internet'e çıkar ve sunucuya ulaşır, sunucu (1) istemin yapıldığı portu dinliyorsa (2) o isteme cevap verecek uygulamaya sahipse (ve düzgün ayarlanmışsa) istemi dikkate alır ve ilgili uygulamayı haber verir, bizim örneğimizde Apache devreye girer, eğer istenilen dosya mevcutsa o dosyayı sunucu üzerindeki TCP/IP yöneticisine iletir, dosya paketlenir ve istemciye doğru yola çıkar. Aslına arada çalışan başka programlar var, ben özetliyorum, tam isabetli bir anlatım olmuyor.
Şimdi bu sunucuya bir de PHP sunucusu ekleyelim. Bu kez Apache kendine gelen isteği değerlendirirken, istek yapılan dosya içinde PHP betiği var mı diye bakar. Eğer PHP betiği varsa bu kez dosyayı istemciye olduğu gibi göndermez. Dosya PHP uygulaması tarafından değerlendirilir ve Apache'ye geri gönderilir. Apache, PHP'den geri gelen dosyayı istemciye yollar.
Şimdi bir html dosyasının içinden PHP'yi nasıl harekete geçirebileceğimize ve neler yapabileceğimize bakalım. PHP'yi göreve çağırmak için normalde HTML içinde bulunmayan etiketleri (tag) kullanırız, "<?PHP" ile başlayıp "?>" ile biten blok PHP'nin işleyeceği bloktur.
Peki PHP'ye neden ihtiyaç duyarız? PHP kullanarak statik HTML ile yapamayacağımız şeyler yapabiliriz. PHP bize sunucu tarafında çalışan bir programlama ortamı sunar. Matematiksel işlemlerden, veritabanı erişimine, grafik işlemlerinden, veri madenciliğine kadar pek çok şeyi mümkün kılar.
Eğer sunucu ile istemci arasında hızlı bir bağlantı varsa bilgisayarımızdan yerel olarak kullandığımız pekçok program tamamen sunucu üzerinde çalışacak şekilde yeniden tasarlanabilir. AJAX kullanımıyla da program oldukça akıcı hale gelir. Bunun pek çok örneği de var.
Bu arada bu işler için tek yol PHP değildir, başka yollar da var. PHP'nin yetersiz, yavaş kaldığı yerlerde, örneğin C ile hatta Assembly dili ile sunucu tarafı uygulamaları geliştirilebilir. Perl, Python, Ruby gibi diller de bu işler için yaygın olarak kullanılır.
PHP'ye alternatif bir de Coldfusion var. Hakkında çok fazla bilgim yok.
Veritabanı erişiminde de durum Apache ile PHP'nin iletişimine benzer. Apache PHP etiketini gördüğünde dosyanın işlenmesi için PHP'ye başvuruyordu. PHP de veritabanı işlemleri için veritabanı sunucusuna başvurur, üretilen sonucu alır, işler, ve Apache'ye aktarır.
Bu arada belirtmem gereken bir nokta var, Apache en sade kurulumda PHP'yi tanımaz. PHP ile iletişimini sağlamak için çeşitli ayarlar yapmak gereklidir. PHP de benzer şekilde en sade kurulumunda hiç bir veritabanı sunucusunu tanımaz, tanıştırmak için ayar yapmak gerekir.
Bu ayarlar özel yazılımlarla otomatik olarak yapılabilir. Apache+PHP+MySQL gibi paketler var. Tek kurulumla tüm ilişkilendirmeyi yapıp sistemi çalışır halde teslim ediyorlar. Ama ben teker teker kendim kurup elle ayarlamayı tercih ediyorum.
Örneği iyice pratiğe dökelim....
PHP ile veritabanı işlemi yapan bir web uygulaması geliştirmek istersek ilk olarak sunucuları yüklemememiz gerekecek. Önce Apache kurup, sonra PostgreSQL'i yüklerip en son PHP kurulumu ile sunucu tarafını hazır hale getiririz. Sunucu çalıştığımız bilgisayarın kendisi de olabilir. Yani aynı makine hem sunucu hem istemci olabilir. Eğer yerel ağda bulunan başka bir bilgisayarı sunucu yapmak istersek, bu sunucuya bir de FTP sunucusu kurmamız gerekecek.
Ben örneğimde istemci ve sunucunun aynı bilgisayar olduğunu varsayacağım.
Sunucu kurulumu tamamlandıktan sonra bir metin düzenleyicisine ihtiyacımız olacak. Aslında Windows üzerinde notepad bu iş için yeterli. Ama notepad'den daha iyi imkanlar sunan programcılara özel metin düzenleyicileri var. Bu programlar bize bazı kolaylıklar sağlarlar;
- Sözdizim yardımı yani syntax high-lighting; yazdığımız metni her an inceleyip komutları ayrı renk, parantezleri yarı renk, yorum satırlarını yarı renkte gösteriler. Bu bize çok büyük bir kolaylık sağlar.
- Bazı programların komutları tamamlama özelliği vardır, leb deyince leblebeyi anlarlar yani.
- If-Else, Switch-Case gibi sık kullanılan program bloklarını kolayca koda ekleyebilirler.
- Bütünleşik yardım sistemi sunarlar. İmleç bir komutun üzerindeyken yardım istendiğinde o komutun manuel sayfasını açarlar.
- Bütünleşik FTP istemcisi barındırırlar, sunucuya başlanıp bir php dosyasını çekerler, istediğiniz düzenlemeyi yaparsınız, dosyayı FTP'ye koyarlar.
Daha pek çok kolaylık sayılabilir. Bunlar aklıma ilk anda gelenler. Tüm özelliklerden vazgeçebilirim ama sözdizimi yardımı olmadan çok fazla hata yapıyorum ben.
DZSoft PHP Editor, PHP Expert Editor gibi programlar var Windows için. Ben iki örnek verdim ama onlarca var piyasada, bazıları ücretsiz ve gayet iyi programlar. Mac için ne var bilmiyorum. GNU'da ise yüzlerce editör var, hepsi özgür yazılım, hepsi ücretsiz.
Metin düzenleyicimizi seçtikten sonra PHP ile programlamaya başlayabiliriz. Benim genelde kurulumdan sonra ilk yaptığım şey phpinfo() komutu ile sistemi test etmek...
Yani önce metin düzenleyicisinde şöyle bir program yazıyorum;
<?PHP
phpinfo();
?>
Sonra bunu Apache kurulumunu nereye yaptıysam oradaki htdocs dizini altına info.php olarak kaydediyorum* ve Firefox'u açıp localhost yada 127.0.0.1 yada bilgisayarın IP adresini giriyorum. (Sunucu başka bir bilgisayarsa IP adresini girmek gerekir)
Karşıma PHP bilgi sayfası çıkıyor ve isteğim tüm bileşenlerin yüklü olduğunu görüyorsam (veritabanı bağlantısı gibi) yoluma devam ediyorum. Sorun varsa gidermeye çalışıyorum.
Bu aşamada en yaygın sorunlar, Apache'nin HTTP kök dizini ayarlarındaki hatalar, Apache ayar dosyasında PHP ile ilgili ayarlardaki hatalar, PHP'nin veritabanı sunucusu ayarları ve yerelleştirme (localization) hatalarıdır.
PHP ve Apache ikilisi sağlıklı çalışıyorsa ikinci basamak PHP ile PostreSQL bağlantısını sınamaktır. Veri tabanı sunucusu ilk kurulumda örnek bir veritabanı ile gelir. Bu veritabanına bağlantı yaparak bağlantımızı sınayabiliriz. Ben genelde sisteme bir de veritabanı sorgu sistemi kuruyorum. Bu sistemler iki çeşit olabilir, (1) PGAdmin, SQLMaestro gibi çalıştırabilir (exe) programlar (normal yükleme yapılan programlar) (2) PHPMyAdmin gibi PHP tabanlı, Apcahe htdocs altına kopyalanıp, tarayıcı üzerinden çalışan sistemler. Bu sistemler PHP kullandıkları için eğer veritabanına bağlanabiliyorlarsa PHP+SQL sistemi çalışıyor demektir.
Böyle bir programı kurduktan sonra o program içinden önce bir veritabanı sonra bu veritabanı için bir tablo oluşturarak devam ediyorum.
Karşıma PHP bilgi sayfası çıkıyor ve isteğim tüm bileşenlerin yüklü olduğunu görüyorsam (veritabanı bağlantısı gibi) yoluma devam ediyorum. Sorun varsa gidermeye çalışıyorum.
Bu aşamada en yaygın sorunlar, Apache'nin HTTP kök dizini ayarlarındaki hatalar, Apache ayar dosyasında PHP ile ilgili ayarlardaki hatalar, PHP'nin veritabanı sunucusu ayarları ve yerelleştirme (localization) hatalarıdır.
PHP ve Apache ikilisi sağlıklı çalışıyorsa ikinci basamak PHP ile PostreSQL bağlantısını sınamaktır. Veri tabanı sunucusu ilk kurulumda örnek bir veritabanı ile gelir. Bu veritabanına bağlantı yaparak bağlantımızı sınayabiliriz. Ben genelde sisteme bir de veritabanı sorgu sistemi kuruyorum. Bu sistemler iki çeşit olabilir, (1) PGAdmin, SQLMaestro gibi çalıştırabilir (exe) programlar (normal yükleme yapılan programlar) (2) PHPMyAdmin gibi PHP tabanlı, Apcahe htdocs altına kopyalanıp, tarayıcı üzerinden çalışan sistemler. Bu sistemler PHP kullandıkları için eğer veritabanına bağlanabiliyorlarsa PHP+SQL sistemi çalışıyor demektir.
Böyle bir programı kurduktan sonra o program içinden önce bir veritabanı sonra bu veritabanı için bir tablo oluşturarak devam ediyorum.
PostgreSQL için;
<?PHP
$dbconn = pg_connect("host=localhost port=5432 dbname=mary")
or die("Could not connect");
echo "Connected successfully";
pg_close($dbconn);
?>
MySQL için;
<?PHP
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
or die('Could not connect: ' . mysql_error());
echo 'Connected successfully';
mysql_select_db('my_database') or die('Could not select database');
?>
Eğer bağlantı başarılıysa veritabanı oluşturaya ve sorgulamaya geçiyorum.
PHP hakkında çok sayıda kaynak var.
Benim ilk önereceğim kaynak ise www.php.net sitesindeki PHP belgeleri; http://id2.php.net/docs.php
İster bilgisayarına indirin, ister siteden okuyun... Ben Extended HTML sürümünü öneririm. Ben ne öğrendiysem oradan öğrendim. Belgelerde bahsedilmeyen çok az şey var, onlar da ilk günlerde çok gerekli değil... Hatta belki yeni manuel sürümlerine dahil edilmişlerdir.
Bir de phpfreaks.com var. Uzun zamandır bakmıyordum, formatı değişmiş. Buradan da faydalanabilirsiniz.
....
Neyse... Özetle ben herşeyin önce manuel yolunu öğrenmek gerek diyorum... Şuradan template, oradan kod parçası aşırıp web uygulaması geliştirdim diye gezen vatandaşlardan olmamak lazım.
PHP hakkında çok sayıda kaynak var.
Benim ilk önereceğim kaynak ise www.php.net sitesindeki PHP belgeleri; http://id2.php.net/docs.php
İster bilgisayarına indirin, ister siteden okuyun... Ben Extended HTML sürümünü öneririm. Ben ne öğrendiysem oradan öğrendim. Belgelerde bahsedilmeyen çok az şey var, onlar da ilk günlerde çok gerekli değil... Hatta belki yeni manuel sürümlerine dahil edilmişlerdir.
Bir de phpfreaks.com var. Uzun zamandır bakmıyordum, formatı değişmiş. Buradan da faydalanabilirsiniz.
....
Neyse... Özetle ben herşeyin önce manuel yolunu öğrenmek gerek diyorum... Şuradan template, oradan kod parçası aşırıp web uygulaması geliştirdim diye gezen vatandaşlardan olmamak lazım.
* Böyle bir dosyayı, halka açık bir sunucu üzerinde asla bırakmamak gerekir. phpinfo() komutu kötü niyetli kişiler için sistem hakkında çok güzel bilgiler sağlar.
Gitar çalışırken yaptığım hatalar
Sol elimi sakatlayıp uzun süre ara vermiştim gitara. Yaklaşık bir ay önce tekrar başladım ve tekniğimi yeniden gözden geçirerek daha bilinçli çalışmaya başladım. Gerçi işten güçten fazla çalışamıyorum ama...
Hatalarımın benzer hataları yapanlara ve yeni başlayan arkadaşlara örnek olabileceğini düşünüyorum.
Önce hatalarımı sıralayayım;
- İlk hatamın gereğinden fazla güç uygulamak olduğunu farkettim.
- İkinci hatamın metronomu hızlandırmaya çalışırken o anki kapasitemin üzerinde hızlarda çalmaya çalışmak olduğunu farkettim. Özellikle metromonla çalışırken bir süre sonra çalış kalitesi değil, metromonun üzerinde yazan rakam önemli oluyor. Ayrıca; örneğin solo partisyonunu çalışırken elimin alışık olduğu kısımlarda biraz hızlanma, zor kısımlarda biraz yavaşlama olduğunu farkettim.
- Üçüncü hatam oturma pozisyonumun kolumda ve bileğimde fazla gerilmeye neden olmasıydı.
- Dördüncü hatam tonu isteğim sertlikte olsa da klayvesi rahat olmayan bir gitarla çalışmaktı.
Bu hataları düzeltmek için şöyle yöntemler kullandım;
Aslında bunlar temel bilgiler, yeni hiç birşey yok, ama bazen gözardı ediyoruz.
- Yıllardır çalmadığım için parmak uçlarımda nasır kalmamıştı ve tellere fazla güç uygulayamıyordum. Bu yanlışlarımdan birini düzeltmeme yardımcı oldu; tele gereğinden fazla güç uygulamadan çalmaya çalıştım. Çok yavaş egzersizlerle kas belleğimi en az güç uygulayıp doğru sesi alacak şekilde geliştirmeye çalışıyorum. Şimdi parmak uclarımdaki deri kalınlaşması çok az, çok çalışsam bile aşırı sertleşmiyor.
- Hız problemlerini çözmek için, ilk önce metronomsuz olarak çalışıyorum, ve reaksiyonu yavaş basamaktan yürütüyorum. Yani bir partisyonun yavaş çaldığım yerine göre hızımı ayarlıyorum. Partisyonun bazı yerlerini ayırıp çalışıyorum, adım adım diğerler kısımlara bağlıyorum.
- Normalde çalmadığım, hiç bilmediğim akorlar öğrendim. Örneğin, jazz'da sıkca kullanılan 7'li akorların bazılarını öğrendim. Bunları ilk defa çalmaya çalışırken duruşumu düzeltmek zorunda kalıyorum. Yıllardır çaldığım akorları, dizileri çalarken duruşuma fazla dikkat etmeden çalabiliyorum ama yeni bir akor yada tuhaf yürüyüşlü bir dizi özen istiyor. İşte bu özeni her ne çalarsam çalayım göstermeye başladım. Yeni akorlar öğrenirken kas belleğimin yanlış gelişmemesi için her defasında aynı şekilde basmaya ve fazla güç uygulamamaya çalışıyorum. Eskiden bildiklerimi ise çok yavaş bir şekilde çalıp nerede fazla güç uyguluyorum belirlemeye ve düzeltmeye çalışıyorum.
- Klavyesi rahat bir gitar aldım, E bemol akortladım ve telleri de çarpma yapmayacak en düşük konuma getirdim. Hammer-on, pull-off ve sweeplerde ve tremololarda alıştığım performansı göstermiyor, ama ellerim biraz daha alıştığında telleri aşamalı olarak yükseltmeyi planlıyorum.
- Metronomu düzeltmek için bir partisyonu önce; 10 dakika kadar her vuruş bir nota -örneğin- 180 bpm çalışıyorum, sonra 10 dakika her vuruş iki nota 90 bpm, sonra çeyrek notalarla 45 bpm'de uzun süre çalışıyorum. Arada bir metromonu durdurup yeniden başlatıyor ve vuruşları hatasız yakalayabildiğimi duyduktan sonra 8'li notalara geçip, bu kez metromonu 45, 50, 60, 70 şeklinde hızlandırmaya çalışıyorum (Bu forumda HititGunesi yazmıştı daha önce bunu).
Bu çalışmayı yaparaken uyguladığım başka birşey var, eğer yanlış birşeyse düzeltin; ilk başta bastığım her notayı görerek bir sonraki basamağı planlayarak basıyorum, çaldığımı çok iyi dinliyorum. Çalışım akıcı bir hale geldikten sonra sanki başka biri çalıyormuş gibi kendimi dinlemeye çalışıyorum. Yani basacağım yerleri hiç düşünmeden bir sonraki notanın sesini düşünmeden... Bir süre sonra çaldığım dizi içinde kalıplar (paternler) oluşmaya başlıyor. Sanki çaldığım parçadan loop almışım, defalarca dinliyormuşum gibi. Bu aşamada ara sıra kendime gelip duruşumu, tellere uyguladığım gücü kontrol ediyorum. Kollarımda, sırtımda gereksiz bir gerilme var mı diye kontrol ediyorum. Eğer varsa en başa dönüp daha yavaş bir tempo ile daha kontrollü olarak yeniden başlıyorum.
Asla uykusuzken, yorgunken, kafam başka şeylerle meşgülken çalışmıyorum. Çalışırken, örneğin MSN'den biri ile yazışmıyorum, çünkü karşıdan yanıt beklerken farkında olmadan dikkatim sürekli mönitöre kayıyor. Kendimi dış dünyadan ne kadar soyutlarsam o kadar verimli bir çalışma oluyor. Şu günlerde verimli bir çalışma yapacak fırsatı fazlaca bulamasam da bu yöntemler ile iyi bir gelişme kaydedilebileceğini düşünüyorum.
Enstrüman konusunda tecrübeli arkadaşların yazdıklarım hakkında yorumlarını ve eleştirilerini duymak isterim.
(Bu yazıyı 6 Tem 2008 tarihinde muziktek.net forumuna yazmıştım.)
Hatalarımın benzer hataları yapanlara ve yeni başlayan arkadaşlara örnek olabileceğini düşünüyorum.
Önce hatalarımı sıralayayım;
- İlk hatamın gereğinden fazla güç uygulamak olduğunu farkettim.
- İkinci hatamın metronomu hızlandırmaya çalışırken o anki kapasitemin üzerinde hızlarda çalmaya çalışmak olduğunu farkettim. Özellikle metromonla çalışırken bir süre sonra çalış kalitesi değil, metromonun üzerinde yazan rakam önemli oluyor. Ayrıca; örneğin solo partisyonunu çalışırken elimin alışık olduğu kısımlarda biraz hızlanma, zor kısımlarda biraz yavaşlama olduğunu farkettim.
- Üçüncü hatam oturma pozisyonumun kolumda ve bileğimde fazla gerilmeye neden olmasıydı.
- Dördüncü hatam tonu isteğim sertlikte olsa da klayvesi rahat olmayan bir gitarla çalışmaktı.
Bu hataları düzeltmek için şöyle yöntemler kullandım;
Aslında bunlar temel bilgiler, yeni hiç birşey yok, ama bazen gözardı ediyoruz.
- Yıllardır çalmadığım için parmak uçlarımda nasır kalmamıştı ve tellere fazla güç uygulayamıyordum. Bu yanlışlarımdan birini düzeltmeme yardımcı oldu; tele gereğinden fazla güç uygulamadan çalmaya çalıştım. Çok yavaş egzersizlerle kas belleğimi en az güç uygulayıp doğru sesi alacak şekilde geliştirmeye çalışıyorum. Şimdi parmak uclarımdaki deri kalınlaşması çok az, çok çalışsam bile aşırı sertleşmiyor.
- Hız problemlerini çözmek için, ilk önce metronomsuz olarak çalışıyorum, ve reaksiyonu yavaş basamaktan yürütüyorum. Yani bir partisyonun yavaş çaldığım yerine göre hızımı ayarlıyorum. Partisyonun bazı yerlerini ayırıp çalışıyorum, adım adım diğerler kısımlara bağlıyorum.
- Normalde çalmadığım, hiç bilmediğim akorlar öğrendim. Örneğin, jazz'da sıkca kullanılan 7'li akorların bazılarını öğrendim. Bunları ilk defa çalmaya çalışırken duruşumu düzeltmek zorunda kalıyorum. Yıllardır çaldığım akorları, dizileri çalarken duruşuma fazla dikkat etmeden çalabiliyorum ama yeni bir akor yada tuhaf yürüyüşlü bir dizi özen istiyor. İşte bu özeni her ne çalarsam çalayım göstermeye başladım. Yeni akorlar öğrenirken kas belleğimin yanlış gelişmemesi için her defasında aynı şekilde basmaya ve fazla güç uygulamamaya çalışıyorum. Eskiden bildiklerimi ise çok yavaş bir şekilde çalıp nerede fazla güç uyguluyorum belirlemeye ve düzeltmeye çalışıyorum.
- Klavyesi rahat bir gitar aldım, E bemol akortladım ve telleri de çarpma yapmayacak en düşük konuma getirdim. Hammer-on, pull-off ve sweeplerde ve tremololarda alıştığım performansı göstermiyor, ama ellerim biraz daha alıştığında telleri aşamalı olarak yükseltmeyi planlıyorum.
- Metronomu düzeltmek için bir partisyonu önce; 10 dakika kadar her vuruş bir nota -örneğin- 180 bpm çalışıyorum, sonra 10 dakika her vuruş iki nota 90 bpm, sonra çeyrek notalarla 45 bpm'de uzun süre çalışıyorum. Arada bir metromonu durdurup yeniden başlatıyor ve vuruşları hatasız yakalayabildiğimi duyduktan sonra 8'li notalara geçip, bu kez metromonu 45, 50, 60, 70 şeklinde hızlandırmaya çalışıyorum (Bu forumda HititGunesi yazmıştı daha önce bunu).
Bu çalışmayı yaparaken uyguladığım başka birşey var, eğer yanlış birşeyse düzeltin; ilk başta bastığım her notayı görerek bir sonraki basamağı planlayarak basıyorum, çaldığımı çok iyi dinliyorum. Çalışım akıcı bir hale geldikten sonra sanki başka biri çalıyormuş gibi kendimi dinlemeye çalışıyorum. Yani basacağım yerleri hiç düşünmeden bir sonraki notanın sesini düşünmeden... Bir süre sonra çaldığım dizi içinde kalıplar (paternler) oluşmaya başlıyor. Sanki çaldığım parçadan loop almışım, defalarca dinliyormuşum gibi. Bu aşamada ara sıra kendime gelip duruşumu, tellere uyguladığım gücü kontrol ediyorum. Kollarımda, sırtımda gereksiz bir gerilme var mı diye kontrol ediyorum. Eğer varsa en başa dönüp daha yavaş bir tempo ile daha kontrollü olarak yeniden başlıyorum.
Asla uykusuzken, yorgunken, kafam başka şeylerle meşgülken çalışmıyorum. Çalışırken, örneğin MSN'den biri ile yazışmıyorum, çünkü karşıdan yanıt beklerken farkında olmadan dikkatim sürekli mönitöre kayıyor. Kendimi dış dünyadan ne kadar soyutlarsam o kadar verimli bir çalışma oluyor. Şu günlerde verimli bir çalışma yapacak fırsatı fazlaca bulamasam da bu yöntemler ile iyi bir gelişme kaydedilebileceğini düşünüyorum.
Enstrüman konusunda tecrübeli arkadaşların yazdıklarım hakkında yorumlarını ve eleştirilerini duymak isterim.
(Bu yazıyı 6 Tem 2008 tarihinde muziktek.net forumuna yazmıştım.)
Vikipedi V-Ray maddesi ve Türkçe 3D render kavramları
Vikipedi'ye yeni bir madde yazdım; V-Ray
Elimden geldiğince Türkçe terimler kullanmaya çalıştım; Indirect Illumination, Irradiance Map, Light Cache, Photo Map, Progressive Path Tracing, Subsurface Scaterring gibi terimlere yakışır Türkçe karşılıklar bulmaya çalıştım.
Render sözcüğüne bile Türkçe karşılık bulamazken render kavramlarını Türkçeleştirmek gerçekten güç.
Türkçeleştirdiğim kavramlar şunlar;
Elimden geldiğince Türkçe terimler kullanmaya çalıştım; Indirect Illumination, Irradiance Map, Light Cache, Photo Map, Progressive Path Tracing, Subsurface Scaterring gibi terimlere yakışır Türkçe karşılıklar bulmaya çalıştım.
Render sözcüğüne bile Türkçe karşılık bulamazken render kavramlarını Türkçeleştirmek gerçekten güç.
Türkçeleştirdiğim kavramlar şunlar;
- Işıklanım Haritalama (Irradiance Map)
- Işık Önbelleği (Light Cache)
- Foton Haritalama (Photon Mapping)
- Doğrudan Hesaplama (Direct Computation)
- Dolaylı Işıklanma (Indirect Illumunation)
- İlerlemeli Yol İzleme (Progressive Path Tracing)
- Yüzey altı ışık dağılımı/saçılımı (Subsurface scattering)
- Malzeme (Material)
- Yordamsal güneş ve gökyüzü (Procedural sun and sky)
- Işık sıçraması (Light bounce)
- Schlick Örnekleme (Schlick Sampling)
- Resim Örnekleme (Image Sampling)
- Kırık giderme (Antialiasing)
- Görüntü Tabanlı Işıklandırma (Image Based Ligthing)
Etiketler:
3B grafik,
3ds Max,
canlandırma,
Türkçe,
V-Ray
Çarşamba, Mayıs 10, 2006
www.accodeum.com
Bir türlü fırsat bulup bitiremediğimiz web sitemiz sonunda yayında...
Galerimize bekleriz..
www.accodeum.com
Galerimize bekleriz..
www.accodeum.com
Çarşamba, Ocak 25, 2006
reGNUm free dictionary
Uzun süredir -gerçekten- eksikliğini hissettiğim, ne gerek var deyip hep vazgeçtiğim işe bugün başladım. reGNUm özgür sözlük! Aslında web'de beslenen ve offline olarak da kullanılabilen bir sözlük çok orijinal bir fikir değil, ama yapmak istiyorum. Mevcut sözlüklerden çok sıkıldım, kendime iş çıkarmak istiyorum. Projenin ismi de esas motivasyon unsuruna işaret ediyor :)
Şu anda veritabanı yapısı üzerinde çalışıyorum, PostgreSQL'de bir veritabanı oluşturarak başlıyacağım. Daha sonra PHP ile veritabanına sorgular göndermeye ve arayüzü biraz şekillendirmeye başlayacağım. Bu ara en sevdiğim kelimeleri de veritabanına girmiş olurum. Aslında veritabanı projenin çok büyük bir kısmını oluşturuyor, sonradan eklediğim field'lar için kodu yamamaktan nefret ederim... Belki tembellikten; ama bu tembellik sayesinde "başlarken iyi düşünme" prensibine sıkı sıkıya bağlanıyorum. Eğer sözlük hakkında fikirleriniz varsa ya da geliştirme sürecinde benimle birlikte çalışmak isterseniz bana e-mail atın lütfen, en küçük katkı bile beni motive edecek...
reGNUm özgür sözlük projesini duyurduğum sayfa burada... Teknik ayrıntıları oradan öğrenebilirsiniz... [25 Ocak 2006, henüz çok fazla teknik ayrıntı yok :( ]
Şu anda veritabanı yapısı üzerinde çalışıyorum, PostgreSQL'de bir veritabanı oluşturarak başlıyacağım. Daha sonra PHP ile veritabanına sorgular göndermeye ve arayüzü biraz şekillendirmeye başlayacağım. Bu ara en sevdiğim kelimeleri de veritabanına girmiş olurum. Aslında veritabanı projenin çok büyük bir kısmını oluşturuyor, sonradan eklediğim field'lar için kodu yamamaktan nefret ederim... Belki tembellikten; ama bu tembellik sayesinde "başlarken iyi düşünme" prensibine sıkı sıkıya bağlanıyorum. Eğer sözlük hakkında fikirleriniz varsa ya da geliştirme sürecinde benimle birlikte çalışmak isterseniz bana e-mail atın lütfen, en küçük katkı bile beni motive edecek...
reGNUm özgür sözlük projesini duyurduğum sayfa burada... Teknik ayrıntıları oradan öğrenebilirsiniz... [25 Ocak 2006, henüz çok fazla teknik ayrıntı yok :( ]
Pazar, Ocak 22, 2006
spurious 8259A interrupt: IRQ7.
arobustus adında ASUS Elan Vital kasada ikamet eden bir bilgisayarımız var. Oldukça dengesiz (unstable) bir makine olduğu için Mehmet kullanmayı reddetmiş ve PIII 800 işlemcili bir makineyi tercih etmişti. Ben de robustus'a Woody kurup kişisel bilgisayarım yapmıştım. Debian GNU/Linux kurulunca makine birden akıllanmış ve ikide bir göçme huyundan vazgeçmişti. Yaklaşık 6-7 ay kullandıktan sonra harddiskine bir haller oldu; 160 GB Samsung diskte inodelar birbirine girmişti, diski garantiye gönderdim. Çözüm Bilgisayar Teknik Servisi (Ankara) harddiskte bir sorun bulamadı. Teknik servise bir sürü sövüp saydıktan sonra diski tekrar takıp yeniden partisyonlandırdım, sistem kurdum; herşey normaldi; diskte fiziksel hata yoktu gerçekten... Sarge çıkınca hemen kurdum, testing net install CD'si ile 6 saat kadar süren kurulum ardından tam bir hayal kırıklığı yaşadım; Gnome'da ne çalıştırsam iki dakika sonra göçüyordu. Testing sürümleri ile bugüne kadar böyle bir sorun yaşamamıştım ama yine de stable'a geçmeyi denedim. Sarge'ın stable net install CD imajını indirip, yazdım ve robustus'a kurdum, ancak sistem yine stabil değildi. Bu arada sistem açılırken "spurious 8259A interrupt: IRQ7." mesajı gözüme ilişti. Kernel'in APIC fonksiyonlarının sorun çıkardığını ve kapatırsam düzeleceğine dair bilgiler edindim netten; ama robustus'ta kernel bile compile etmek mümkün olmadı. Sistem KDE'de, Gnome'a göre daha stabil... Arasıra Firefox, noatun, XMMS felan göçüyor, bazen KDE, hatta bazen X gidiyor, bazen sistem tamamen donuyor. Bu arada mecburen KDE kullanıyorum, sevmediğimden değil ama Gnome'um yeri ayrı... "spurious 8259A interrupt: IRQ7." nedir bilen varsa bir desin bana, çok aradım, mantıklı izahat bulamadım, ya da buldum da anlayamadım. Kesin çözüm anakartı değiştirmek gibi geliyor bana, zaten sicili bozuk... AOpen AK77 600GN; belalı anakartın modeli, belki hepsi sorunlu değildir ama benimki bana çok çektiriyor.
Google'daki şeytani mesaj!
Çarşamba, Ocak 18, 2006
White Room (3D)
Sıfırın altında doğalgazsız hayat...
Konya'da gece sıcaklık -3°C ve önümüzde günlerde -8°C'a inmesi bekleniyor. Konya'da doğalgaz kesik... Donuyoruz ve daha da donacağız. Temiz, ucuz ve güvenli bir şekilde hem de!
Pazartesi, Ocak 16, 2006
Arkeoloji != Kazıbilim
Bir kaç aydır Vikipedi'de bir hayli zaman geçiriyorum. Bir tane makale bile yazdım [YJM]. Vikipedi'de makale sayısı gün geçtikçe artıyor; bu sevindirici bir gelişme ama makalelerin kalitesi ne âlemde acaba... Bazı makaleler maalesef üç satırdan oluşan uyduruk bilgiler demeti!
Vikipedi'de en çok rahatsız olduğum şey "uydurma" Türkçe! Adamlar yıllardır dilimize yerleşmiş, toplumun geneli tarafından kabul görmüş terimlere Türkçe karşılık bulma derdinde... Kazıbilim de bunlardan biri... Vikipedi'de Arkeoloji makalesi bu başlığa yönlendirilmiş. Bu makalenin tartışma sayfasına yazdığım şeyleri burayada aynen aktarıyorum.
Arkeoloji => Kazıbilim şeklinde bir çeviriyi yapan, Vikipedi'deki sayfanın başlığını "Kazıbilim" koyan zavallı zihniyet beni asla anlamayacak, bundan eminim. Benim gibi düşünenlerin sayısı da şu günlerde pek bir moda olan ulusalcılık dalgasıyla bir hayli azaldı. Herkes, herşeye Türkçe isim uydurma telaşında... Yalan, yanlış farketmez!
Ben de bu "Türkçe uydurma" işine bir isim bulayım o zaman; Kazmabilim! Anlamadan, özünü bilmeden yapılan çevirinin hakettiği kelime budur. Kazıbilim; idraki kıt insanların marifeti budur.
Vikipedi'de en çok rahatsız olduğum şey "uydurma" Türkçe! Adamlar yıllardır dilimize yerleşmiş, toplumun geneli tarafından kabul görmüş terimlere Türkçe karşılık bulma derdinde... Kazıbilim de bunlardan biri... Vikipedi'de Arkeoloji makalesi bu başlığa yönlendirilmiş. Bu makalenin tartışma sayfasına yazdığım şeyleri burayada aynen aktarıyorum.
Uydurma Türkçe'ye ne güzel bir örnek; Kazıbilim... Bu kelimeyi uyduran ve getirip buraya yazan zihniyete acıyorum. Arke ne demektir? Arkeoloji ne demektir? Bir düşünün! Bir araştırın! Arkeoloji kazmaktan ibaret olan bir bilim midir? Arke kazmak mı demektir? Türkçe'yi zenginleştiriyoruz diye kavramları daraltıyorsunuz. Daraltmanında ötesinde anlamlarını bozuyorsunuz. İnsan kavramlarla düşünür. Gelecek nesillere içi boş, karşılığı olmayan, anlamı havada kavramlar bırakıyorsunuz. Anlamadığınız bilmediğiniz şeyler hakkında ahkam kesmeyi bırakın artık! Türkçe yabancı dillerden gelen kelimelere karşı kendini gerektiği ölçüde korur ve ayakta durur ama sizin bu "uydurukça" saldırılarınıza karşı dayanabilir mi bilmiyorum...
Arkeoloji => Kazıbilim şeklinde bir çeviriyi yapan, Vikipedi'deki sayfanın başlığını "Kazıbilim" koyan zavallı zihniyet beni asla anlamayacak, bundan eminim. Benim gibi düşünenlerin sayısı da şu günlerde pek bir moda olan ulusalcılık dalgasıyla bir hayli azaldı. Herkes, herşeye Türkçe isim uydurma telaşında... Yalan, yanlış farketmez!
Ben de bu "Türkçe uydurma" işine bir isim bulayım o zaman; Kazmabilim! Anlamadan, özünü bilmeden yapılan çevirinin hakettiği kelime budur. Kazıbilim; idraki kıt insanların marifeti budur.
Pazar, Ocak 01, 2006
Morning Light (3D)
Mehmet Cihan'ın sonu gelmeyen ışık testlerinden biri... Bu çalışmalarla zamanında modelleyip de bir kenara attığımız objeler hayat bulmuş oluyorlar. Çalışmanın yüksek çözünürlüklü versiyonları için aşağıdaki linkleri takip edebilirsiniz.CGTalk, Evermotion ve DeviantArt'ta "Morning Light"
Kaydol:
Kayıtlar (Atom)

