Fırsat buldukça bu domain altında çeşitli yazılara yer vermeyi planlamaktayım. Genelde yazılım ile ilgili başlıklara yer vereceğim.

Kategoriler

Kodçu & Programcı

Yazılım geliştirme zincirinin mutfağından 2 tür; Kodçular ve Programcılar.

Bu 2 türü tanımlamak gerekirse;

Kodçular genellikle kendilerine verilen yönergeleri izleyerek programın parçacıklarını oluştururlar. Kodçu yönergenin dışına çıkmaz yada yönergenin zayıflıklarını sorgulamaz. Kodçu için iş yönergedir ve yönerge tamamlandığında iş onun için bitmiştir.

Programcılar, kodçulara nazaran daha basit bir yönerge ile işi halledebilirler. Yönergenin mantığı anlatması yeterlidir. Çoğu zaman sözlü bir yönerge yeterli olur. Böylelikle programcı hem yönergeyi hazırlayan kişiye zaman kazandırır hem de çalıştığı şirkete. Programcı yönergelerini kendisi oluşturur, zaman planlamasını kendisi yapar ve parçacığı tüm olasılıkları göz önünde bulundurarak hazırlar.

Programcı boş durmaz. Mevcut sistemi her daim analiz eder ve hazırlayacağı yeni parçacığı mevcut parçacıklar ile birlikte ileride geliştirilebilecek olan parçacıkları da hesaba katarak geliştirir. Böylelikle ilerisi için de zaman tasarrufu sağlar. Hazırladığı sınıflar esnektir ve bir diğer parçacık tarafından rahatlıkla kullanılabilir.

Programcı mevcut sistemdeki işleyişleri sorgular ve mümkünse işleyişlerin daha kolay ve hızlı bir yoldan yapılması için çözüm sunar. Mevcut işleyişleri hızlandırarak iş yükünü azaltır ve şirkete zaman kazandırır.

Ve tüm bunların yanında bir programcıyla çalışmak kodçulara nazaran daha zordur. Programcı kendisini sürekli geliştirmek ister, aksi takdirde işten zevk almamaya başlar ve yaptığı işlerin monotonlaşmaya başladığını farkettiği an işten ayrılmak ister.

Yani kısaca;

Programcı beyindir. Fikir üretir, sorgular, araştırır, test eder, zamanı planlar, dökümantasyon yapar ve çağa uygun çözümler sunar.

Kodçu ise temelde montaj yapar. Programcı ile kıyaslandığında baktığı pencere daha küçüktür.

Peki siz hangi türdensiniz?

noty - a jQuery Notification Plugin

Açıkçası uzun zamandır open source birşeyler ortaya çıkarmak istiyordum. Bu konudaki ilk adım olarak da ortaya noty çıktı. Şuan Github üzerinde 90 fork ile 1016 takipçiye sahip. Bunun yanı sıra bir çok yabancı kaynakta noty'den bahsedilmesi beni gerçekten mutlu ediyor.

Muhittin Özer ile geliştirmeye başladığımız noty epey ilerledi. 2 layout ile başlayan yolculuk toplamda 8 layouta ulaştı.

Temelde pluginin yaptığı iş kullanıcılara bilgilendirme mesajı göstermek. Az önce de bahsettiğim gibi 8 değişik şekilde bilgilendirme mesajı gösterebiliyor. (top, center, bottom, topLeft, topCenter, topRight, bottomLeft, bottomRight). Gösterilebilecek mesaj tipleri ise şuan alert, error, success ve information olmak kaydıyla 4 adet.

noty bilgilendirme mesajlarını sıraya koyarak tüm mesajların kullanıcıya gösterilmesini sağlamakta. 8 layouttan 4'ü (topLeft, topRight, bottomLeft, bottomRight) growl-like olmak kaydıyla sıraya girmeden kullanıcıya gösterilebilmekte.

noty'yi olabildiğince esnek ve kolay kullanılabilir şekilde tasarladık diyebilirim. Basitçe bir bilgilendirme mesajı oluşturmak için şu şekilde bir kullanımı mevcut;

 
noty({text: 'noty - a jQuery notification library'});
 

Esneklik açısından noty tema desteğine sahip. Kullanıcılar sadece CSS kullanarak kendi temalarını oluşturabilmekteler. Aynı şekilde özel layout oluşturmak da sadece CSS'e bakıyor. Ek olarak özel mesaj tipi yaratmak da aynı şekilde gerçekleştirilebilmekte. Bu şekilde esnekliğin epey arttığını söyleyebilirim.

noty şimdilik default, mitgux, twitter bootstrap ve facebook olmak üzere 4 adet temaya sahip.

Proje şuan Github üzerinde (https://github.com/needim/noty) barındırılmakta. Tüm öneri ve eleştirileri sıcak bir şekilde karşılayacağımı belirtmek isterim. Dökümantasyona ve demolara ulaşmak için http://needim.github.com/noty/ adresini ziyaret edebilirsiniz. Hata bildirim ve yenilik talepleri için github issues kullanılabilir durumda.

noty'yi projelerinizde gönül rahatlığıyla kullanabilirsiniz. Kullandığınız projelerinizi bildirirseniz sevinirim. Belki "Who's using it" gibi bir bölüm oluşturabilirim.

SVN ile Web Sitenizi Senkronize Edin

Bir proje üzerinde birden fazla geliştirici ile çalışırken SVN çok kullanışlı bir araç haline geliyor.

Yazılımda yapılan bir değişiklik SVN ile commit edildiğinde otomatik olarak yayınlanan web sitesi üzerinde de aynı değişikliğin gerçekleşmesini otomatikleştirmek mümkün. Devamı »

Gazete

Kapının önündeki paspasa bırakılan bir gazete olmak isterdim.

Gazeteci beni senin paspasına bıraktığı zaman sabırsızlanır ve beni bir an önce içeriye almanı beklerdim. Bu bekleyişten sonra senin kapıyı aralayıp, beni tutuşunla sevinçten kırışır, tenine değmenin huzuruyla coşardım. Daha sonra kapıyı kapatır ve koridordan geçip, beni mutfaktaki masanın üzerine bırakırdın. Oysa ben elinden ayrılmak hiç istemezdim. Beni masada bıraktıktan sonra kendine bir çay doldururdun ve ben elinle tekrar kavuşurdum. Devamı »

'O'

Hayat çok garip diye basit bir cümle kurmayacağım. Hayat garipliklerden de öte şeyler yaşatıyor bazen.

Daha önce hiç hissetmediğiniz bir duyguyu düşünebilir misiniz? Mümkün değil. Aynı şekilde o hissi yaşadığınızda onu tanımlayamazsınız, açıklayamazsınız. O his daha önce hissettiğiniz hiç bir şeye benzemez. Benzetemezsiniz. Çabalamak fayda etmez.

Bilemezsiniz.

Onu tanımlamaya, açıklamaya çalışmayın. Onu doyasıya yaşayın. Ama hiç bir zaman doyamayacağınızı da bilin.

Kalbinizin ritmine kulak verin sadece. Daha önce hiç duymadığınız ve duyamayacağınız bir şarkı mırıldanır atışlarıyla.

Bu öyle bir şarkıdır ki; ne bildiğiniz bir dilde yazılmıştır, ne de bildiğiniz bir yerden söyleniyordur. Devamı »

Dışarıdan Codeigniter'a Erişmek

Çeşitli ihtiyaçlardan dolayı Codeigniter'a system yada application klasörlerinden hariç bir lokasyonda erişmem gerekti.

Çözüm olarak erişmek istediğim dosyada Codeigniter'ın index.php dosyasını include ettim ve include ettiğim dosyada bir constant tanımladım. Bu işlemden sonra yapılması gereken tek şey Codeigniter'ın default controllerı çalıştırmamasını sağlamak. Bu işlem için de tanımladığım constantı kullandım.

Adım 1: Codeigniter'ın index.php dosyası ile aynı klasörde ajax.php adında bir dosya oluşturduğumuzu varsayalım. İçeriği şu şekilde olsun;

 
<?php
    define('OUTSIDE_FIX', TRUE);
    include 'index.php';
    echo $CI->config->item('some_item'); // $CI is global.
?>
 

Adım 2: ./system_folder/codeigniter/CodeIgniter.php dosyasını düzenleyerek default controllerın çalışmasını engelliyoruz. (satır 235:238)

 
<?php
    if (!defined('OUTSIDE_FIX')):
        call_user_func_array(array(&$CI, $method), array_slice($URI->rsegments, 2));
    endif;
?>
 

Codeigniter - Language Helper Extension

Codeigniter Language Helper'ını geliştirmek adına yazdığım bu fonksiyon aldığı parametreler ile formatlı textler döndürebilmekte.

Adım 1: ./system/helpers/language_helper.php dosyasına aşağıdaki fonksiyonu yerleştiriyoruz.

 
<?php
if ( ! function_exists('vlang'))
{
    function vlang($line, $variables=array())
    {
        $CI =& get_instance();
        $line = $CI->lang->line($line);
        return @vsprintf($line, $variables) !== FALSE ? vsprintf($line, $variables) : 'vLang:error';
    }
}
 
// ------------------------------------------------------------------------
/* End of file language_helper.php */
/* Location: ./system/helpers/language_helper.php */
?>
 

Adım 2: Mevcut dil dosyamız içerisinde kullanacağımız textleri belirliyoruz. Parametrelerin sıraları yüzde imleri ile belirleniyor. (Daha fazla bilgi için: vsprintf)

 
<?php
 
$lang['test_en'] = '%1$s liked \'%2$s\' posted by %3$s at %4$s.';
$lang['test_tr'] = '%1$s %3$s tarafından yayınlanan \'%2$s\' adlı iletiyi %4$s tarihinde beğendi.';
 
/* End of file main_lang.php */
/* Location: ./system/language/english/main_lang.php */
?>
 

Adım 3: Artık vlang() fonksiyonunu kullanarak formatlanmış textleri elde edebiliriz.

 
<?php
// Örnek:
$parameters = array('needim', 'Twitter Api', 'Twitter', date('Y-m-d'));
echo vlang('test_en', $parameters);
echo vlang('test_tr', $parameters);
 
// Çıktı:
needim liked 'Twitter Api' posted by Twitter at 2010-12-02.
needim Twitter tarafından yayınlanan 'Twitter Api' adlı iletiyi 2010-12-02 tarihinde beğendi.
?>
 

Impact JS İle İlk Denemem

Impact JS; HTML5 oyunları yapabileceğimiz bir JavaScript Oyun Motoru. Impact JS ile yapılan oyunları oynamak için herhangi bir browser eklentisine gereksinim duyulmuyor. Sadece Canvas destekli bir modern browser gerekli. Ayrıca iPhone, iPod Touch ve iPad için de oyunlar yapabiliyoruz.

Impact JS hakkındaki ilk izlenimlerim çok iyi yönde. Dominic Szablewski ortaya çok iyi bir iş çıkarmış ve çıkarmaya da devam ediyor. Devamı »

Ne o kollarını açıyor, ne de ben kucaklanıyorum.

Yine karanlık bir gece. Yine yalnız bir ben. Uçsuz bucaksız bir sokakta nedensizce yürümekteyim. Neden yürüdüğümü ne ben biliyorum, ne de bu basit asfalttan sokak.

Anlamsız ve mantıksız düşüncelere dalıyor, kara asfaltı izliyorum yürürken. Yolun kenarındaki kedilerin çiftleşmesine, köpeklerin sidiklerini boşaltışına şahit oluyorum istemsizce. Bir tanesi önce hırlıyor sonra da havlıyor bana birşey dercesine. Yan bir bakış fırlatıp umursamazca yoluma devam ediyorum garip ve korkusuz bir şekilde. Devamı »

Giriş.

Fırsat buldukça bu domain altında çeşitli yazılara yer vermeyi planlamaktayım. Genelde yazılım ile ilgili başlıklara yer vereceğim.

Görüşmek üzere.