Perşembe, Haziran 25, 2009

Regaip Kandili

“Sana ibadet eder ve senden yardım dileriz” (Fatiha: 5/5)

Mübarek Kandilinizi kutlar ,Türk ve İslam alemine hayırlara vesile olmasını ,CENABI ALLAHTAN NIYAZ ederim.
Geceniz mübarek, ibadetiniz makbul olsun.

Cumartesi, Haziran 20, 2009

Profösörün talebelerine verdiği son ders

Profösörün talebelerine verdiği son ders

Bilgisayar Mühendisi Arkadaş, İnşallah iyi bir 'donanım'cı veya iyi bir 'program'cı veya iyi bir 'network'çü veya iyi bir 'system administrator' olacaksın. Yalnız şu mühim meseleleri sakın aklından çıkarma!

Bu kâinatın öyle bir donanımcısı vardir ki, bütün mevcudâtı ve içinde yer yüzünü 'create' etmiş;
güneş'i bir 'power source', ay'ı bir 'system clock' yapmış.

O 'power source'dır ki, kesintiye uğramaz ve o 'system clock'tir ki, şaşmaz ve şaşırmaz, O donanımcının ilminin ve sanatının nihayetsizliğini gösterir.

Bu zât aynı zamanda öyle yüce bir programcıdır ki, şu muazzam dünya üzerinde çalişacak şekilde koca hayat programını yazmış, yüzbinlerce yıldan fazladır, 'error' verdirmeden, 'crash' ettirmeden çalıştırıyor.

Eğer Onun ne kadar iyi bir programcı olduğunu da anlamak istersen, önce kendine bak. Gözünle göremediğin küçücük bir hücrene bütün kodunu 'save' etmiş ve yine o küçücük hücrende 'execute' ettiriyor.

Madem ki, DNA'nın bir program olduğu apaçıktır ve bir program programcısız olamaz demek ki, senin programcılığın ancak O büyük zâtın programcılığına ancak bir ayna hükmündedir.

Yine senin bütün hücrelerinden oluşturduğu 'network'ün içinde hadsiz protokollerle o hücreleri konuşturduğu gibi, madem ki, senin de diger insanlarla türlü dillerde ve protokollerde konuşabilmen için gerekli donanımı yanına vermiştir, öylece de gördürüyor, konuşturuyor ve dinletiyor.

Ve madem ki, sen etrafındaki bütün cisimlerden haber alasın diye ışık, ses gibi türlü medyayı hazırlamış kullandırıyor. Sen bunları keşfeder, kullanır fakat bir yenisini ekleyemezsin, o halde öyle büyük bir 'network' uzmanı zât vardır ki, senin her türlü ihtiyacını bilir, ona göre teçhizatını verir.

Senin 'network'çülügün ancak onun, sonsuz ilminden sana verdigi bir küçük parça ve bir büyük nimettir.

Arkadaş, aldanma!
Şu güzel dünya hayatı programı bir 'Limited Trial Version'dur, görüyorsun ki, elde ettiğin malı-mülkü hiç bir surette 'save' edemiyorsun.

Öyle ise;
bu kâinat yazılımını yazanı tanı.

Hem hiç mümkün müdür ki, bir programcı bu kadar güzel bir program yapsın ve yaptığı programda 'about' kesimi koyup kendini tanıttırmasın. Öyle ise bu kâinatin en büyük 'donanımcısı', 'programcısı', 'network'çüsü ve 'system administrator'u olan zâtın her yere işlediği 'about' kesimlerini gör, öğren, 'full versiyon'unu kazanmak için çalış.

Unutma ki, hiç bir hareketin atlanmadan çok dikkatli 'log'lar tutuluyor. Bu 'log'lar her şeye gücü yeten o 'system admini' tarafindan 'open' edilip 'check' edilecektir.

Aman ha dikkat !

Laedri

Pazartesi, Haziran 15, 2009

A,B,C, derken artık D'miz de var

D Programlama Dili

Evet başlıkta gördüğünüz gibi programlama dili furyasına yeni bir üye daha katıldı onun adı D. Aslında yeni dediğime bakmayın ilk kararlı sürümü 2 Ocak 2007 çıkmış. Fakat yinede programlama dili dünyasında henüz genç ve toy bir delikanlı sayılır =). D ismi tamamen bir geyik sonucu çıkmış.Dilin ilk ismi Mars Programming Language imiş.
D ilk olarak Walter Bright tarafından tasarlanmış. Fakat şimdilerde C++ tanınmış isimlerinden Andrei Alexandrescu tarafından geliştirilmekteymiş. Ayrıca yine Andrei Alexandrescu tarafından yazılan "The D Programming Language" adlı bir kitapda raflarda yerini almış durumda. Onun yazdığı D’dili ile ilgili bir yazının orjinaline burdan, Ali Çehreli tarafından Türkçeye çevrilmiş haline de buradan ulaşabilirsiniz.

Bu kadar tanıtımdan sonra ufaktan teknik özelliklerine değinelim;

  • Kaynak kodlarda Unicode desteği sunar. Bu sayede değişkenlerde Türkçe karakter kullanabiliriz. Artık rahatça büyük İ,ü,ö,ğ,ş,ç kullanabilirz .
  • Nesne yönelimli (Object-Oriented) olduğunu söylemeye gerek var mı bilmiyorum fakat biz yinede bahsi geçsin diye deyinelim. En azından Object-Oriented’ı cümle içinde kullanmış olduruz
  • Andrei Alexandrescu D’dilinin en doğru tanımı, üst düzey sistem programlama dili olarak yapmış. Ama bunun yanında programcıya alt düzey olanaklarda sunuyomuş. (İşaretciler, malloc/free)
  • Çöp toplayıcısı(Garbage collector) varmış. Bunun yanında kendi oluşturduğumuz nesneleri delete ile silmeye de izin veriyomuş.
  • Standart C kütüphanelerinin hepsi D için kullanıma hazır durumdaymış.
  • İlk GUI desteği Qt’den gelmiş. Buda taşınabilir görsel projelerde geliştirebiliriz demek. Darısı wxWidgets’e diyelim =).
  • C++’da yapıcı fonksiyon, sınıf ismi, yıkıcı ise sınıf isminin başına tilda(~) konmuş haliydi. D ise yapıcı this, yıkıcı ise ~this olarak tanımlanmış. (Biz this’i c++ da sınıf işaretçisi olarak kullanıyoduk acaba burada durum biraz daha farklımı. hımmm Bunu ilerde öğreneceğiz inşallah)
  • Resmi D derleyicisi DMD imiş. Windows,Mac,Linux platformlarına destek veriyomuş. Diğer platformlar içinde çalışmalar sürüyomuş.
  • D kodu içinde makine dili de kullanabiliyomuşuz. Örnek kod kısmında bununla ilgili bir örnek bulabilirsiniz.
  • foreach() döngüsü mevcut.
Sonuçlar olarak A,B,C derken artık D diye bir dilimizde var. Hayırlı olsun. Adamlar bize alfabeyi öğretmeye kararlı sanırım =). Ama bu alfabede türkçe karakterler yok. Ne diyelim darısı Ç’lerin Ğ’ lerin başına =).

Örnek Programcıklar
1.
Başlangıç için olmazsa olmaz. Tahmin edin ne? Tabiki "Merhaba Dünya" =)
------------------------------
import std.stdio;

void main()
{
writeln("merhaba dünya");
}
-----------------------------
2.
Kod içinde makine dili kullanımı. Sayi1 değişkenine 5 ekleyip gösteren bir program. 5 ekleme kısmı ASM ile yapılmış.
-----------------------------
import std.stdio;

void main()
{
uint sayi1 = 100;
writefln("sayi1 =",sayi1);
writefln("sayi1 degiskenine 5 ekleyelim");
asm
{
mov EAX,[sayi1];
add EAX,5;
mov [sayi1],EAX;
}
writefln("sayi1 =",sayi1);
}
-----------------------------

Kaynaklar ve Yardımcı Linkler

Perşembe, Haziran 11, 2009

wxWidgets Olaylar(Events)-4

wxWidgets Olay Türleri (wxEventType)

Olay tablolarındaki makroların her birine karşılık gelen bir olay tipi var. Bunlar kendi aralarında bölümlere ayrılır. Ben bu yazıda wxCommandEvent, wxKeyEvent ve wxMouseEvent sınıflarına değineceğim.

  1. wxCommandEvent: Bu olay sınıfı basit kontrollerin çeşitli olayları hakkında bilgiler içermektedir. Bu olay türünün fonksiyonları kullandığın nesneye göre değişmekte.

Fonksiyonları

· wxCommandEvent::GetClientData :Listbox ve Choice nesnesi için seçim olayında istemci bilgisi pointerını döndürür.

· wxCommandEvent::GetClientObject: Listbox ve Choice nesnesi için seçim olayında istemci nesnesinin pointerını döndürür.

· wxCommandEvent::GetSelection: Listbox ve Choice nesnesiçin seçim olayında seçili olan itemi döndürür.

· wxCommandEvent::IsChecked: Bu fonksiyon CheckBox ve Menu nesneleri ile kullanılır.Seçili ise ture seçili değilse false değerini döndürür.

· wxCommandEvent::SetClientData :Bu olay için istemci verisini ayarlar.

· wxCommandEvent::SetClientObject : Bu olay için istemci nesnesini ayarlar.

Olay Türleri

  • wxEVT_COMMAND_BUTTON_CLICKED
  • wxEVT_COMMAND_CHECKBOX_CLICKED
  • wxEVT_COMMAND_CHOICE_SELECTED
  • wxEVT_COMMAND_LISTBOX_SELECTED
  • wxEVT_COMMAND_LISTBOX_DOUBLECLICKED
  • wxEVT_COMMAND_MENU_SELECTED
  • wxEVT_COMMAND_RADIOBOX_SELECTED
  • wxEVT_COMMAND_RADIOBUTTON_SELECTED
  • wxEVT_COMMAND_COMBOBOX_SELECTED
  • wxEVT_COMMAND_ENTER
  • wxEVT_COMMAND_KILL_FOCUS
  • wxEVT_COMMAND_SET_FOCUS
  • wxEVT_COMMAND_RIGHT_CLICK
  • wxEVT_COMMAND_LEFT_DCLICK
  • wxEVT_COMMAND_TOOL_ENTER
  • wxEVT_COMMAND_TOOL_RCLICKED
  • wxEVT_COMMAND_TEXT_ENTER
  • wxEVT_COMMAND_TEXT_UPDATED
  • wxEVT_COMMAND_SLIDER_UPDATED
  • wxEVT_COMMAND_SCROLLBAR_UPDATED
  • wxEVT_COMMAND_TOGGLEBUTTON_CLICKED
  • wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED
  • wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGİNG
Örnek:
.h'dosyasında fonksiyonu tanımlayalım
void silButon(wxCommandEvent& event);

.cpp'dosyasında fonksiyonun yazalım
void Nesne BenimSinifim::silButon(wxCommandEvent& event)
{
butonY -=25;
delete event.GetEventObject();
}

Şimdide Dinamik Olay işleyici ( Connect() ) ile olayımızı ekleyelim
Connect(ID_Buton,wxEVT_COMMAND_BUTTON_CLICKED,
(wxObjectEventFunction)&BenimSinifim::silButon);

Bu örnekte wxWidgets Olaylar(Events)-3 yazımın örnek bölümünde verdiğim kodlarla oluşturlan nesnelerin sildirilmesini gerçekleştirdim. Butonlar üzerine tıklanarak TextCtrl'lerde üzerinde her hangi bir değişiklik yapıldığı anda silenecekler.

Çarşamba, Haziran 03, 2009

Bilim Şenliği ve METEF Fuarı - 2009

Önce başlıkta geçen METEF'in ne olduğunu açıklamak lazım. Mesleki ve Teknik Eğitim Fuarı yani METEF (bende fuara katılana kadar bilmiyodum) ülkemizdeki okullarda, mesleki ve teknik eğitimin ulaştığı noktayı gösteren öğretmenlerin ve öğrencilerin ürünlerini sergiledikleri bir etkinlik. METEF gerçekleştiği ilin Milli Eğitim Müdürlüğü katkılaryıla yapılıyomuş. Balıkesirde valiliğin de yardımı ile ilkkez düzenlenmiş. Umarım devamı da gelir. Buradan ve buradan fuarla ilgili bilgilere ulaşabilirsiniz.



Balıkesir Üniversitesini temsilen bizlere yani BÖTE'cilerede(Bilgisayar ve Öğretim Teknolojileri Eğitimi akılda tutması zor bi isim :D) bir stant verildi bu sayade derslerde yaptığımız projeleri sergileme imkanı bulduk. 2 gün süren etkinliğe yaklaşık olarak 11000 öğrencinin katılacağı tahmin ediliyodu. Bu da yaptığımız projeler hakkında hem öğrencilerden hem de öğretmelerden dönüt almak için eşi bulunmaz bir fırsattı.

Elinde çay bardağı,yakasında yaka kartı ,projeksiyonun yanındaki pembe gömlekli, soldan dördüncü,sağdan ikinci (bu kadar ipucu yeter sanırım :D) arkadaş işte o benim :)

Projelerimiz ağırlıklı olarak ilk öğretim kademesindeki öğrencilerin düzeyindeydi ve genel olarak Flash programı kullanılarak hazırlanmıştı.
Birazda Fuarla ilgili gözlemlerimden bahsetmek istiyorum;
  • Zamane öğrencileri zehir gibi özellikle bilgisayar konusunda. Leb demeden çorumu anlıyolar o derece :D
  • Genç öğretmenlerin ilgisi biraz azdı. Görevinde birazdaha eski öğretmenler çok ilgiliydi. Okullarına bile davet ettiler bu konularda öğrencilerine bilgi vermemiz için. Seneye inşallah böyle bi etkinlik yapıcaz.
  • Balıkesirde ilkkez böyle bi etkinlik düzenlenmesine rağmen organizasyon güzeldi( En azından biz, ufak tefek bir kaç şey dışında her hangi bi aksaklıkla karşılaşmadık).Emeği geçen herkese teşekkür etmek boynumuzun borcu.
  • Genel kanı böyle bi etkinliğin seneye tekrar düzenlenmesi yönünde herkes açısından çok faydalı geçti çünkü. Konuştuğum yetkililerden öğrendiğim kadarıyla(onların yalancısıyım :D) Ekim ve Haziran aylarında tekrar dan böyle bi fuar düzenlenecekmiş hatta organizasyonun uluslar arası yapılması bile söz konusu imiş.
Sonuç olarak dolu dolu 2 gün geçirdim ve birazda yoruldum. Ayaklarım hala ağrıyo :(( . Ama bu yorgunluk, fuarın bana sağladığı fayda ile mukayese bile edilemez. Umarım ikincisinde hatta üçüncüsünde de aktif olarak yer alma şansım olur.