Pazartesi, Kasım 27, 2006

Nadan

* Vaktiyle devr-i Osmânî'de pek müdebbir, tecrübeli, yüksek sezişli, aklı başında bir vezir vardır. Bir meseleden ötürü padişaha gücenmiş olduğu için köşesine çekilmiş, devlet işlerinden el-etek çekerek siyasetten uzak kalmayı tercih etmiştir.

Ne var ki, -her zaman olduğu gibi- devlet mühim buhranlar içindedir ve padişah, illâ ki bu müdebbir vezirin yeniden devlet hizmetine dönmesini istemekteyken vezir, Nuh deyip peygamber dememekte ve devlet kapısına yaklaşmamakta inad etmektedir. Neticede bir başka hinoğlu hin'in aklıyla şöyle bir çâre bulunur: Vezir, kıytırık bir gerekçeyle hapse atılır, yanına hücre arkadaşı olarak bir "nâdân" konulur. Nâdân saçma sapan konuşmaları ile veziri tez zamanda canından bezdirir ve neticede, "çıkarın beni buradan; ucunda ölüm de olsa bu vazifeyi yerine getirmek, şu nâdânın kahrını çekmekten evlâdır�" diyerek vazifeye başlar ve hikâye şu beyit ile sona erer:
Nâdân ile sohbet güçtür bilene, **

Nâdân ile sohbet güçtür bilene,
Çünkü nâdân ne gelirse söyler diline

* Ömer Seyfettin merhûmun meşhur bir "Nâdân" hikayesinin özeti

** A.Turan ALKAN'ın yazısı

Çarşamba, Kasım 22, 2006

BluePlayer'ın Büyük Başarısı !!!

Bir süredir BluePlayer'la uğraşıyorum
ilk olarak 27 Eylül BluePlayer 0.1 olarak başladı
13 Ekim' de BluePlayer 0.5
8 Kasım da SourceForge taşındı http://blueplayer.sourceforge.net/
13 Kasım da 0.6 versiyonu çıktı
  • BluePlayer 0.1 Download sayısı : 67
  • BluePlayer 0.5 Download sayısı : 110 * + 149 = 259
  • BluePlayer 0.6.1 Download sayısı : 96
olmak üzere toplam 422 adet indirilmiş.

eee ne var bunda demeyiniz. Bir Allahın kulu da bir mesaj atıp programın şöyle bir bug'ı var dememiş - Heyt be ne program yazarmışım ;) -

işte başarı bu !!!

* dosya arşivimden indirilenler daha sonraki kısım Sourceforgedan indirilenler

Cuma, Kasım 17, 2006

En Önemli C++ ... 'ları


* “The Most Important C++ Books...Ever”

o The C++ Programming Language by Bjarne Stroustrup
o Effective C++ by Scott Meyers
o Design Patterns by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides
o International Standard for C++
o Modern C++ Design by Andrei Alexandrescu

* “The Most Important C++ Non-Book Publications...Ever”

o Programming in C++, Rules and Recommendations by Mats Henricson and Erik Nyquist
o “Exception Handling: A False Sense of Security” by Tom Cargill
o “Curiously Recurring Template Patterns,” by Jim Coplien
o “Using C++ Template Metaprograms” by Todd Veldhuizen
o “Exception-Safety in Generic Components” by David Abrahams

* “The Most Important C++ Software...Ever”

o Cfront by AT&T Bell Telephone Laboratories
o GCC by the GNU Project
o Visual C++ by Microsoft
o The Standard Template Library, originally by HP
o The Libraries at Boost

* “The Most Important C++ People...Ever”

o Bjarne Stroustrup
o Andrew Koenig
o Scott Meyers
o Herb Sutter
o Andrei Alexandrescu

Perşembe, Kasım 16, 2006

YSA kullanarak Kanserli Doku Teşhisi

1) öncelikle şunu belirteyim eğer okumadınızsa tarihteki ilk yapay zeka projesinin anlatıldığı Zeka Hakkında Kıssalı Yazılar - 3 yazımı tavsiye ediyorum. Okuduysanız tekrar okuyun :)

2) Bu konuda daha önce yapılmış faydalanabilecek örnek varmı diyerekten bir araştırma yapmak lazım araştırma sonunda öğreniyoruz ki değişik yollar kullanan pek çook çalışma var. Biz bu yazının yazılmasına sebep olan arkadaşımızın* önerisine uyup http://www.codeproject.com/useritems/nxml.asp deki örneği inceliyoruz

3) Bahsi geçen örnekte Assume spherical chicken** marifetiyle "multi layer back prop network" bir YSA kullanılarak 16x16 lık bir bitmap den 4 sonuca ulaşıyor. sonuç olarak
input layer 256
hidden layer 256
output layer 4


olarak YSA nın tasırmını yapıp eğitiyor vede şakır şakır :) çalışıyor.

4) Şimdi gelelim hazin gerçeğe elimize MR görüntülerini alınca göreceğiz ki 16x16 bitmap yok yerine atıyorum 300x300' lük bir resim var - dikkatinizi çekerim 0 ve 1 lerden oluşan bitmap değil resim - pekiii ne yapacağız şimdi.

5) İlk akla gelen şey Resmi bitmap'e çevirip 16X16 lık parçalara ayırabiliriz. Denemesi bedava resimi ama büyük bir ihtimalle görüntü bitmap'e çevrilince veri kaybına uğrayacak ve tesbiti zorlaşacak. Beyin boydan boya tek tip bir yapıdada olmadığından parçaların konumuda önemli olacak.

6) Anlamadan anlatamayız öğrenmeden öğretemeyiz. Bir MR'a bakıp tümörlü olan şöyle oluyor olmayan böyle diyebilmeliyiz sonra ben bunu nasıl fark ediyorum sorusuna cevap aramalyız. Bu sorunun cevabına göre filanca görüntü işleme metodunu kullanırsam tümörü daha belirgin hale nasıl gelir sonucuna ulaşabiliriz. Belirginleşmiş görütü parçalanıp gerekiyorsa parçaların konumlarıda hesaba katılarak YSA uygulamasına başlaya biliriz.

7) Sonuç olarak yapılamayacak birşey değil ama pek çok emek isteyen bir proje.

Not : Yanlış anlaşılmasın proje benim değil. Bana e-mail ile ulaşan bir arkadaşın* projesi


* H. K. K. - tekrar haberleşip iznini alamadığım için ismini yazmadım -

** Assume spherical chicken = farzedelim tavuklar küre şeklinde olsun anlamına gelen ve konu anlatımlarında olayı basitleştirmek adına nerelere varılabileceğini gösteren veciz söz.

Çarşamba, Kasım 08, 2006

BluePlayer artık Sourceforge da

BluePlayer'ı başlangıçta sadece Audiere kütüphanesinin kullanımına örnek olsun diye yazmıştım. Pek öyle geliştirmeyi düşünmüyordum. Bu haliyle güdük şekilde kalmasına gönlüm
razı olmadı. En azından 1.0 bir versiyona ulaştırmak niyetindeyim. Basit sade küçük bir program.

Geliştime için kullandığım gerek IDE -Code::Blocks - gerek GUI kütüphanesi FLTK gerekse ses kütüphanesi - Audiere - cross-platform özellikteler. Bu özelliklerinden faydalanıp değişik işletim sistemleri içinde sürüm çıkarmayı istiyorum.

Yardım etmek isteyen olursa şu an için geliştime için yardıma ihtiyacım yok. Fakat programı kullanıp değerli fikirlerinizi benimle paylaşa bilirseiniz sevinirim

Deep Not ! : Bu Sourceforge yüzünden daha önce bilmediğim konularla uğraşıyorum.
Web sayfası gözünüzü tırmalıyorsa bu yüzdendir acemiliğime verin.

Web sayfası - Tek sayfası ;) - : http://blueplayer.sourceforge.net/
Projenin sayfası : http://sourceforge.net/projects/blueplayer
İletişim için : BlueKid

Pazartesi, Kasım 06, 2006

Audiere Ses kütüphanesi kullanımı

Esasında benim pek öğretici makale yazmada maharetim yoktur
bu yüzden sizlere daha çok kendi yaptığım örnekleri sunabiliyorum.
Audiere ses kütüphanesini BluePlayer için kullanmıştım

Şimdide basit bir şekilde kullanımını anlatacağım becerebilirsem tabii

char* GetVersion()
Audiere Kütüphanesinin versiyon bilgisini verir

Örnek:
printf("Audiere versiyon : %s\n",GetVersion());
Audiere versiyon : 1.9.4


void GetSupportedFileFormats(std::vector& formats)
Çalabileceğiniz ses formatlarını verir
FileFormatDesc 'ın yapısı aşağıdaki şekildedir.

struct FileFormatDesc {
std::string description;
std::vector extensions;
};

Örnek:

std::vector formats;
// Desteklenen Ses Dosyası formatları
GetSupportedFileFormats(formats);
puts("Desteklenen Ses Dosyası formatları");
for(int i=0;i<>
puts((formats[i].description).c_str());
std::vector ext=formats[i].extensions;
for(int j=0;j<>
puts(ext[j].c_str());
}
}



void GetSupportedAudioDevices(std::vector& devices)

kullanıla bilecek ses aygıtlarını listeler, Windows için Directsound ve WinMM
Linux için Oss gibi

AudioDeviceDesc in yapısı aşaıdaki gibidir

struct AudioDeviceDesc {
std::string name; // aygıt ismi

// Textual description of device.
std::string description; // açıklama
};

Örnek :

puts("Desteklenen ses aygıtları");
std::vector devices;
GetSupportedAudioDevices(devices);
for(int j=0;j<>
puts((devices[j].name).c_str());
puts((devices[j].description).c_str());
}


AudioDevice* OpenDevice (const char * name = 0, const char * parameters = 0 )

Ses aygınını açmak için kullanılır ismi ve parametreleri kullanılabileceği gibi paramateresizde çağrılabilir.


Örnek:

AudioDevicePtr device;
device =OpenDevice(); // yada
device =OpenDevice("winmm"); //gibi
if(device)
printf("Kullanılan aygıt : %s\n",device->getName());
else
puts("Aygıt açılamadı !");


OutputStream* OpenSound ( const AudioDevicePtr & device,
const char * filename,
bool streaming = false,
FileFormat file_format = FF_AUTODETECT
)


device = daha önce açtığımız aygıt
filename = açılacak ses dosyasının adı
streaming = ses dosyası çalıma şekli
false : Bütün dosyayı hafızaya yükle öyle çal
true : Dosyadam çalmaya başla


Örnek :

OutputStreamPtr sound;
sound=OpenSound(device,"BW.mp3",true);


evet artık açılmış bir ses dosyamız var pekii neler yapabiliriz

void play (); // ses dosyasını çalmaya başla

void stop (); // ses dosyasını çalmayı durdur

bool isPlaying (); // ses dosyası çalıyorsa doğru değeri döndür

void reset (); // ses dosyasını başa al

bool isSeekable (); // çalınan dosyanın istenen kısmına ulaşılabiliniyormu
int getLength (); // ses dosyasının uzunluğu
int getPosition (); // çalma esnasındaki yer kısım
void setPosition ( int pos ); // çalınan kısmı ayarlar

// ses değer aralığı 0.0 to 1.0
float getVolume (); // ses değerini oku
void setVolume ( float volume ); ses değerini ayarla

void setRepeat ( bool repeat ); // çalma işlemi tekrar ayarı
bool getRepeat (); //

// Hopörlör ses çıkış ayarı
// -1.0 = Sol, 0.0 = Eşit (default), 1.0 = Sağ
void setPan ( float pan ); // ayarla
float getPan (); // öğren

// Ses dosyası çalma hızı
// Hız aralığı 0.5 ile 2.0, normal değer 1.0
void setPitchShift ( float shift ); // ayarla
float getPitchShift (); // öğren

Örnek :

sound->play();
sound->setVolume (0.8);