Sayfalar

Perşembe, Ocak 25, 2007

CBuiler 'ın Ölümü 2


Okumadıysanız öncelikle birinci yazıyı okuyun ! hani
"kimse üvey evlat olmak istemiyordu." diye bitirmiştik.
Bu adam fena halde abartıyor diye düşünüyorsanız, Interbase'in sokağa atılışı ve FireBird'ün doğuşunu hatırlatırım 1 Pek çok işletim sisteminde çalışan bir veri tabanına sahipsiniz ve siz artık bu ürünü geliştirmeyeceğim deyip sokağa salıyorsunuz. Bu - tabiri caizse - salaklığın tek açıklaması "biz C ile çalışmak istemiyoruz Bize pascal yeter anlayışıdır"

Neyse efendim biz konumuza dönelim Windowslu günler başladı ve Borland OWL Microsoft MFC gibi OO kütüphaneler çıktı. OO Kütüphaneler iskelet bir sınıftan :) başlayan her tarafa dal budak salan devasa yapılar içeriyordu. -Kullanımlarıda anlaşılmalarıda pek kolay değildi - Sonra daha değişik bir sistem çıktı RAD Rapid Aplication Development. yine OO bir kütüphane vardı, anlamanız yine kolay olmasada kullanımı basitleşmişti 2

Borland Bu sisteme VCL ile katıldı. Delphi ortaya çıktı ve tabiri caizse ortalığı silip süpürdü. Tabii üvey evlat Turbo C de artık VCL takviyesi ve bunun için dile yapılan eklemeriyle 3 CBuilder' dönüştü ve CBuilder -BCB- doğdu.
Yıllar geçtikçe Delphi yaygınlaşmasına rağmen aynı kolaylığa sahip olan BCB C cephesinde aynı sonuca ulaşamadı. Yeni öğrenenler "Eğer VCL kullanacaksam Niçin aslından başlamayayım " deyip Delphi'ye başladılar. Eski C ler ise "Ben VCL'e VCL demem VCL C ile yazılmamışsa" deyip BCB den uzak durdular. Bütün Bunlara rağmen Borland 6. versiyona kadar üvey evladını bırakmadı. Bundan sonra tamamiyle bağrına basdı :)

Unutmadan Bu arada bir de Kylix macerası var. Borland Linux'un geleceğini parlak görüp Linux IDE için gibi çok doğru bir işe girişir. Doğru işe başlamıştır fakat doğru şekilde yapmamıştır 4 işini Borland VCL kütüphanesini QT kütüphanesini kullanarak cross-platform hale getirir CLX. IDE yi ise libwine kullanarak Linux altında çalıştırır. Elhasıl Kylix bir Hilkat garibesi olarak doğar zaten fazlada yaşamaz.Eğer Borland C/C++'ı üvey evlat olarak görmeseydi en azından Linux'a geçiş işinde C/C++'ı bazalırdı pek çok GUI kütüphanesi emrine amade haline gelirdi. Belki Kylix çok daha uzun ömürlü olurdu.

Ve son atılımlar; Önce bir haber yayıldı ortalığa "Borland, IDE Araçlarını Satıyor..." diye, üzülüyoruz. Ardından sonra Turbo olarak yeniden çıkarıyor. Seviniyoruz, Küllerinden yeniden doğdu diye fakat sonuç yine hüsran 5

Son söz : CBuilder'a ve VCL 'e alışmış bir C / C++ programcısının artık alternatifi yoktur 6 CBuilder ölmüştür. Eğer Windows üzerinde programcılık yapacaksanız CBuilder 6 - hatta 5 - işinizi fazlasıyla görecektir. Yok gelecekle ilgili planlarınız varsa. Kendinize alternatifler aramanız lazım. 7

_________________

1 ) Borland böyle bir veritabanı sistemini terk etti -opensource - geliştirmeyeceğini söyledi
sonradan bu kadar salaklık olmaz deyip kodu yeniden kapayıp geliştirmeye devam ettiysede Interbase'i Firebirde çeviren uçup gitmişti

2) Hatta bu şekilde programlamaya başlayan! insanlara forumlarda çok basit işler için bile
component ararken rastlıyoruz.
- Başımı kaşıyacak zamanım yok. Baş kaşıyan component yokmu ?
- Programı kendi yazan component yok mu ?
3) Eklentiler konusunda "I am, of course, aware of how controversial it is to add extensions to C++. However, I personally am only interested in good technology and the quality of the products I use. BCB is a good product, and part of what makes it good is the power of the VCL
and the power of the component, property, event model of programming. The new extensions have been added to the language to make this kind of programming possible, and so I am in favor of these changes." demiş Charlie Calvert "C++ Builder Unleashed" adlı kitabında
ve fakat bu eklentiler yüzünden artık başka bir alternatifiniz olmuyor

4) Pascal içinden C++ library lerini direk olarak çağıramıyorsunuz yani CLX için borland
OO kütüphane olan Qt'ye C den bir arabirim yazıp sonra Pascal içinden çağırarak CLX
kütüphanesini oluşturur siz bide bunu C++ içinden çağırıldığını düşünün. yada Kylix C++'ı
çalıştırmayı bir deneyin

5) http://bdn.borland.com/article/33659

-Does Turbo Delphi (for Win32) require the .NET Framework to be installed?
-Yes. Some of the functionality in the IDE is managed code that requires the .NET Framework. However, the apps you build in Turbo Delphi (Win32) do not need the .NET Framework.
sonundaki yorumları bir okuyun
From what I can tell dont count on it. It seems like Borland is finally in bed with MS without a condom and doing anything for Linux is a big NO NO.

6) Delphi kullananların bir alternatifi var freepascal + lazarus ama Biraz kolları sıvayıp yardım etmeleri gerikiyor.

7) Eğer yazdıklarımı takip ediyorsanız, Bulduğum alternatifleride biliyorsunuzdur.
Başka bir yazı konusu ama ben yinede kısaca belirteyim Cross-platform bir IDE ve
Cross-platform kütüphaneler - ihtiyacınıza göre -
IDE : CodeBlocks
GUI : FLTK , wxWidgets, gtk+, Qt, Fox Toolkit, Ultimate++, ...
Veritabanı : Sqlite , IBPP , libmysql, libodbc++, libpq, ...
Oyun Programlama : Allegro, Irricht
Ses : Audiere, OpenAL, libcda, libogg, ...
Grafik : OpenGL freeGlut SDL

Cumartesi, Ocak 20, 2007

OpenMortal yada Mortál Szombat!!

Mortal Kombat oyununu bilmeyeniniz yoktur herhalde işte OpenMortal da Açık kaynak kodlu
benzeri. Daha da güzel tarafı kendi karakterinizi oluşturabiliyorsunuz.
OpenMortal

Özellikle programlayla uğraşanlar Muhakkak inceleyin, öğrenecek çok şey bulacaksınız


Biri de sevabına bir Kara yağız palabıyıklı bir Yağlı güreşçi ekleyiversin oyuna ;)

Perşembe, Ocak 18, 2007

PathFinder Demo



Fazla söze gerek yok Bizim Fatih Presta'nın lib2dp' sinin demosunun Grafik ortama
aktarılması.
Kullanımı basit :
Max X Len ve Max Y Len ile Ebatlar belirlenir
Random Map ile Yeni harita oluşturulur
Empty Map ile Boş bir harita oluşturup kendiniz çize bilirsiniz
Harita üzerinde hücrelere tıklayarak düzenleme yapılır
Find Path ile çözüm bulunur

Program Bu haliyle sol üst hüğcreden sağ alt hücreye olan yolu buluyor fakat ufak tefek
düzenlemeyle herhangi iki hücre arasındaki yoluda bulabilir.
İndirmek için
Download For Windows
Download For Linux

Cumartesi, Ocak 13, 2007

Dili yok kalbimin !

Yeni yıla girdik epeydir bir şey yazamıyorum. Yazacak pek çok şey birikti;
BluePlayer'ın 0.7 versiyonu, Bizim Fatih Presta'nın lib2dp' sinin demosu,
TextIntoBmp nin yeni versiyonu, CBuilderın Ölümü 2, MCH den aktaracaklarım...
ama
olmuyor işte Dili yok kalbimin !
Bana sor sevgili kâri, sana ben söyleyeyim
Ne hüviyette şu karşında duran eş'arım:
Bir yığın söz ki, samîmiyyeti ancak hüneri;
Ne tasannu'bilirim, çünkü, san'atkârım
Şi'r için ''göz yaşı'' derler; onu bilmem, yalnız
Aczimin giryesidir bence bütün âsârım!
Ağlarım ağlatamam; hissederim, söyleyemem,
Dili yok kalbimin, ondan ne kadar bîzarım!
Oku şâyed sana bir hisli yürek lâzımsa
Oku, zîrâ onu yazdım iki söz yazdımsa.
Koca şair böyle dedikten sonra bu konuda şikayet etmemek lazım

Perşembe, Ocak 04, 2007

Yürü hala ne oyunda oynaştasın Presta'nın FGA'yı yazdığı yaştasın !



Genetic metod için kullandığım kütüphanyi biliyorsunuz FGA geçenlerde bu konuda gezinirken. Projenin yazarının pinkfloyd_ap nickli şahıs olduğu öğrendim.
* FGA - Fast Genetic Algorithm' nın dışında
* 2DPathfinder (lib2dp) :
2 Boyutlu Haritalar üzerinden yol bulma işini yapan ilgiç bir kütüphane
* NNF - Neural Net Framework (nnf)
Yapay Sinir Ağlarından "feed-forward neural nets" oluşturan diğer kütüphane.
iki kütüphane daha yazdığını şaşkınlıkla öğrendim
My name is Alessandro Presta, I'm 17 years old and I live in Genoa, Italy. I love basketball, rock music, maths and, of course, programming.
satırlarını okuyunca şakınlığım daha da arttı. Bu projeleri hazırlayan kişi 17 yaşındaki genç bir italyanmış.
Ya bizim ne eksiğimiz var dedim kendi kendime. Forumlarda rastlıyoruz Programlamayla ilgili eğitim alanlar bile ödevlerinin yapacak enayi arıyor. Tembellikten bir kurtulabilsek başka eksiğimiz yok.
Üstteki resimdeki artist görünümlü genç kardeşimiz Sourceforgde 3 adet yapay zeka konulu proje sahibi -artık- 18 yaşında Alessandro Presta. Genç olmak tembel olmayı gerektirmediğinin fiili ispatı. Atalarımızın mirasını çoktan bitirdik. Lale devri çoktaan bitti. Artık çalışma zamanı başka yolu yok. Haydi

Yürü hala ne oyunda oynaştasın Presta'nın FGA'yı yazdığı yaştasın

Cumartesi, Aralık 16, 2006

BluePlayer 0.66 for Linux

En sonunda yeniden Linux altında çalışmaya başlaya bildim.
SuSe 10.1 Linux' u indirdim ve bilgisayarıma kurdum.
YasT ile gereken paketleri kurdum
Audiere ve FLTK kütüphanelerini Kaynak kodundan derleyerek kurdum.
CodeBlocks'u da kurduktan sonra başladım çalışmaya.
Kısa bir uğraş sonunda BluePlayer'ı derlemeyi başardım.
Download : BluePlayer 0.66 for Linux

Kullanabilmeniz için Audiere kütüphanesini kurmanız lazım
Kaynok Kodunu İndirin : audiere-1.9.4.tar.gz
uygun bir yere açın ve audiere-1.9.4 dizini oluşacak içine girin
./configure
make
make install
make install için yetki alın
veya kullandığınız Linux için derlenmiş paket halinde varsa
libaudiere-1.9.4 kurun

Cuma, Aralık 15, 2006

CBuiler 'ın Ölümü 1


Her şey Turbo C ile başladı Turbo Pascal gibi uçuk bir hızda derleme yapmasada C kullananlar için tek alternatifti. Microsoftun Quick C'nin esamesi bile okunmazdı.

Turbo C 3.0 ile birlikte derleme için Uzatılmış belleğide kullanmaya başladı ki değmeyin keyfimize ( Önceden büyük bir proje derlerken hafız yetmediğinde swapping diyerek diski hafıza yerine kullanmaya başlıyordu. -ölüm- Derlemeyi hızlandırmak için bir sürü dalavere yapmanız gerekiyordu - RamDisk oluşturup derlenecek projeyi oraya atıp orada derlemek gibi
Yanlış hatırlamıyorsam TurboVision kütüphaneside bu versiyonda çıkmıştı
Ben de ilk olarak TVision yüzünden farkına varmıştım. TVision pascalda yazılmış C ye tercüme edilmişti. TVision dökümantasyonunda örneklerin bazılarının tercüme edilmesi unutulmuş
pascal olarak duruyordu. Hatta birde Pascal dan C++'a çevri hatası içeriyordu ; Bir TInputLine kullandığınızda hiçbir şey yazmadan Del tuşuna basınca - c de char dizi sonunu gösteren 0 karekterini siliyorsunuz - olanlar oluyordu.
Demekki neymiş C/C++ Borlandın üvey evladıymış. Yıllar geçtikçe C/C++ camiasında ( ! )
Turbo C hakimiyeti azalmaya başladı -ne de olsa kimse üvey evlat olmak istemiyordu.

Çarşamba, Aralık 13, 2006

Yapay Zeka Optimizasyon Algoritmaları



Geçen haftasonu kitapçıları gezerken rastladım bu kitaba "Yapay Zeka Optimizasyon Algoritmaları".
Derviş KARABOĞA'nın yazdığı kitap herhalde bu konuda Türkçe yazılmış tek kaynak. Uygulamaya dönük örnekler verilmesine rağmen anlatımı bence biraz akademik olmuş ama yinede alın bir inceleyin, destekleyin.
Bu kitap yapay zeka optimizasyon algoritmaları olarak adlandırılan tabu araştırma, genetic programlama, yapay ısıl işlem, karınca koloni ve yapay bağışıklık algoritmalarını kapsamaktadır.
...

Kitap, önce optimizasyonla ilgili temel kavramları tanımakta ve sonra bu beş optimizasyon algoritmasının temel prensiplerini vererek her birisiyle ilgili değişik mühendislik alanlarından uygulamalar sunmaktadır.
google da Derviş beyin adından ufak bir araştırmayla aşağıdaki makalelerede ulaştım özellikle ilki çok ilginç, Kitapda da bahsedilen Ders Programı sistemi için Genetic Programlama kullanılmış.

Perşembe, Aralık 07, 2006

Genetik Programlamayla Bir işlem



Yine bir yapay zeka projesiyle karşınızadayız !

Bu sefer YSA değil genetik programlama metoduyla birşeyler yapya çalışacağız.

Ya bu genetik Programlamada nedir yahu ? diyenleriniz için linke müracat ediniz.
Link!

Daha yokmu diyen için google emrinize amade sizi bekliyor
Her neyse Biz uygulamamıza dönelim

Bir Kelime Bir İşlem yarışmasını bilmeyeniniz yoktur herhalde Biz Bir işlem kısmını yapmaya çalışacağız - Bir Kelime kısmınıda siz yaparsınız artık :) -

Problemi analiz edersek :
3 Basamaklı bir sayıya 6 adet sayı ile ulaşmaya çalışılır

Elimizde 6 adet sayı var ve sadece bir kere kullanabiliyoruz.
işlem 4 işlem yapılabiliyor fakat her sayıyı kullanmak zorunda da değiliz
Problemin bütün çözümleri için
sayı Num
işlem Op

Num1 Op1 Num2 Op2 Num3 Op3 Num4 Op4 Num5 Op5 Num6

sayıların kullanılacağı sıralama = 6 * 5 * 4 * 3 * 2 * 1 =6! = 720 ihtimal
her iki sayı arasında 4 işlem yada kullanılmama olmak üzere 5 ihtimal 6 sayı için 5 kere
5*5*5*5*5=5^5= 3125 ihtimal

Toplam = 720 *3125 = 62500 değişik sıralama oluyor.
Pek tabi Problemin pek çok çözümüde olabilir. Tam Çözümü olmayada bilir

Gelelim çözüme öncelikle bize bir Genetik Programlama kütüphanesi lazım
-tabii tekerleği yeniden icad edip debelenip durmak ta bir tercih olabilir biz kolay yoldan gidiyoruz -
İhtiyacınıza göre kütüphane bulmak için size freshmeat'i önerebilirim

Efendim biz bukonuda FGA -Fast Genetic Algorithm - kullanacğız
FGA sadece tek bir başlık dosyasından -fga.h- oluşan kullanımı kolay template library.
Paralel çalışa bilmek için POSIX thread kullanılmış yani windows altında bizim pthreads-win32 indirip kurmamız lazım zahmet edip aramayın indirin pthreads-win32 açın ve derleyiciniz için uygun olan library ve dll dosyalarını gereken kısımlara ekleyin

FGA ve pthreads-win32 indirip kurduktan sonra Kodumuzu yazmaya başlaya biliriz

Problemin kodlanması için veri yapımızı oluşturuyoruz

typedef struct {
int Num[6]; // sayılar
int Op[5]; // işlemler
}PData ;


sonra bu veri yapısıyla işlem yapacak GP için gereken fonksiyonlarımızı yazıyoruz

my_fitness // uygunluk yada sağlık değeri
my_random_chromosome // rasgele varyasyon üret
my_mutate_chromosome // değişme uğrat
my_crossover // Çaprazlama yap

Ooo yazı epey uzamış. kim okur bukadar yazıyı ? Daha fazla uzatmayayım en iyisi inirip inceleyin. Soracağınız bir şey olursa biz de bilebilirsek eğer cevaplamaya gayret ederiz

Download : GHedef yada daha kolay GHedef

* Kullanıcı Ara birimi pek tabii ki FLUID ile FLTK kullanılarak yazıldı. IDE olarak CodeBlock kullanıldı
** www.biliyormusun.net de bugünkü (08/12/2006) Bir işlem kısmındaki günün sorusunun çözümü

9*75 = 675
675-7= 668
668-9=659
659+10=669

Cuma, Aralık 01, 2006

BluePlayer 0.66

BluePlayer 0.66
  • Bazı ufak tefek düzeltmeler yapıldı
  • Windows'a daha uygun dosya seçim dialogu kullanıldı
  • sürükle bırak konuldu
  • Çalan dosya isimleri ufak animasyonla! gösterildi

hala eksikleri var.
Linux versiyonu için uygun bir zaman ve
uygun bir Linux versiyonu - full set - lazım bulunca İnşallah

Destekleriniz , hata bildirimleriniz, uyarı ve önerileriniz
hasretle bekleniyor ;)

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);

Cumartesi, Ekim 28, 2006

Code Blocks'a Giriş

CodeBlocks'un sitesinde yayınlanan versiyonu epey bir eski son halini Nightly-Build'den bulabiliyorsunuz ama yeni başlayanlara için zor oluyor.
Code Blocks' başlamak artık çok daha kolay "Brooklyn College of CUNY"den
Lawrence Goetz, Yedidyah Langsam, Theodore Raphan güzel bir paket hazırlamışlar

1) MingW yi indirin ve kurun download
2) CodeBlocks'u (22/10/06) indirin ve kurun download
3) Bu konuda hazırlanmış olan dökümanı indirin ve inceleyin
download

Cumartesi, Ekim 21, 2006

Fl_OpenCV



Fl_OpenCV OpenCV kütüphanesinin FLTK ile birlikte kullanmak için yazılmış bir sınıf
ve Kullanımını göstermek için yazılmış basit bir kenar bulma -Edge detection- programı
OpenCV örnek programlarından edge deki metodla yapılıyor. Bir alttaki yazdığım gibi
Bu haliyle kullanılabilir halde, eksikleri olduğunu biliyorum geliştimek için vakit bulabilirmiyim bilemiyorum. ama yine de paylaşmak istedim.
Programı kullanabilmek için OpenCV'yi kurmuş olmanız gerekiyor.

Download : Fl_OpenCV