Hilmi BAYCAN

20 Şubat 2010 Cumartesi

Cumartesi Ogleden Sonra

Bu cumartesiyi yapay zekaya ve resim islemeye ayirdim. Oldukca uzun suredir ticari yazilimlar uzerinde calistigimdan artik akademik calismalara da zaman ayirmanin vakti geldi de geciyor bile.

Hazir gecende konusu acilmisken nesne tanima ile ilgili bir program yazayim dedim ama laptop tamirde oldugu icin ve yedek laptop da degil C derlemek, msn e zor girdigi icin bu fikrimden vazgecip makale okumaya karar verdim. Bakalim neler yapmis insanlar son zamanlarda...

Oldukca can sikici bir donem aslinda... Normalde bu gibi zamanlarda cok basarili olmam lazim ama sanirim her konuda oldugu gibi bu konuda da istisnasin efem...

Sali gunu Microsoft genel muduru ile toplantimiz var Ankara'da. Coo icin oldukca iyi olacagini dusundugum bir toplanti. Umarim katilabilirim.

Uzun suredir bloga birseyler yazmiyordum... Hayattayim :) Iyiyim... Olabildigi kadar iste ve sanirim yaslaniyorum... Galiba birkac gun oncesini ozlemem ondandir he?... Yo onlar yillar oncesini mi ozlerdi? Neyse...

27 Aralık 2009 Pazar

Civilization of Ottoman

Oyun geliştirmek deneyimlisinden acemisine her mühendisin(bilgisayar) ve programcının hayalidir. Hepimiz ufaktan girmişizdir bu işe ama genelde hepimiz berbat grafikli bir iki denemeden sonra vazgeçmişizdir. Malum biz 3D modelleme ya yapamıyoruz ya da yapabilsek de zaman ayıramıyoruz. Kaldı ki bunun kaplamaları var vs vs..

İşte bu nedenlerle oyun yapmak bir ekip işi ve sonunda togogda bunu buldum. Oyun yapmaya başlamış, bu işte ilerlemiş azimli ve büyüyen bir topluluk.

Civilization of Ottoman projesine de bu nedenle katılma kararı aldım. Bu kararın kesinlikle yerinde bir karar olduğunu ve zamanında alındığını düşünüyorum. Ekibimizin arkasında büyük destek ve umut var. Şimdi sanırım arkadaşlar oyundan tanıtım videosunu hazırlıyorlar. Bittiğinde buradan paylaşacağım.

Bu arada geçen pazartesi Adobe Türkiye ile toplantı yaptım. Olaya heyecanla yaklaşıyorlar onlar da en az bizim kadar. Görüşmelerimiz sürüyor, yakında adobe developer grubumuz aktif olacak. Bu gurubun türkiyenin işine yarayacağı kesin.

Adobe'un yanında Medianova da Togog'u destekliyor. Sanırım ilk fiziksel destek Medianovadan geldi. İstediğimiz gibi kullanmak üzere bize bir hesap açtılar. Bundan sonra yayınlarımızı Medianova'nın CDN'i üzerinden yapacağız. Togog.tv nin çalışmalarını merakla bekliyoruz.

20 Aralık 2009 Pazar

Ajax Yazarken Napalım?

Ajaxların bir siteyi nasıl karıştırabileceğini bilirsiniz. OOP ya da prosedürel programlamaya göre bakımı çok daha zor bir koddur ajax eğer biraz dikkatli yazılmamışsa.

En basit ajax tipi:

Sayfanın içerisinde bir button yaparsınız ve onclick olayına yap(x,y,z); gibi bir javascript koyarsınız.

yap() adlı fonksiyon ajax kullanan bir fonksiyon olsun.


function yap(x, y, z)
{
var req = newXMLHttpRequest();
var callbackHandler = StateHandler(req, updateBrowser, "newSelect", 1);
req.onreadystatechange = callbackHandler;
req.open("POST", "/dosomething.php", true);
req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
req.send("x="+x+"&y="+y+"&z="+z);
}


Birinci önerim:
dosomething.php kendi başına bir sayfa olmasın. Aynen diğer sayfalarda olduğu gibi modüler bir sayfa olsun. Çünkü aynen diğer sayfalarda olduğu gibi ajax sayfalarında da modülerite çok önemlidir. Bir güvenlik önlemi eklediğinizde sitedeki tüm ajaxları arayıp bulmak kesinlikle inanılmaz bir zaman kaybı olacaktır.

İkinci önerim:
Bu sayfaları websitenizin içerisindeki klasörler içerisinde kaybetmeyin. Ajax için ayrı bir folder açıp tüm sayfaları orada ya da oranın altındaki klasörlerde tutun. Ve mümkünse bunların hepsi anasayfadaki index aracılığı ile çalışan tek başına çalışmayan sayfalar olsun.

if(!defined("BLOCK"))
{
die(unAuthorizedAction());
}


kullanın. Dikkatsizce yerleştirilen Ajaxların sitenizde ne gibi güvenlik açıklarına neden olduğunu biraz düşünseniz rahatlıkla kavrarsınız.

Gelelim ikinci kısma


function newXMLHttpRequest() {
var xmlreq = false;
if (window.XMLHttpRequest) {
xmlreq = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e1) {
try {
xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
}
}
}
return xmlreq;
}


Bu fonksiyon objemizi oluşturuyor. İsterseniz durumlara ait ufak debug kodları ya da hata loglamaları yapabilirsiniz ama size kalmış.


function StateHandler(req, responseXmlHandler, upDiv, noloading)
{
return function ()
{
if (req.readyState == 4)
{
if (req.status == 200)
{
responseXmlHandler(req.responseText, upDiv);
}
else
{
//document.getElementById(upDiv).innerHTML = "ERROR: "+ req.status;
}
}
else
{
if(!noloading)
document.getElementById(upDiv).innerHTML = "
< i mg src='/images/loading.gif'>
";
}
}
}


Bu da ünlü yükleniyor resmini sayfanıza yerleştiren yer.

Ve en son da sayfanızı güncelleyen, karşıdan (ajax tarafından çağrılan sayfadan dönen verinin işlendiği yer.)


function updateBrowser(testXML, upDiv)
{
var updateDiv = document.getElementById(upDiv);
var hiddendiv = document.getElementById("hiddendiv");
updateDiv.innerHTML =testXML;
}


Yukarıdaki kodda gelen verinin aynen sayfaya verildiğini görüyorsunuz. Oldukça kolaycı bir yöntemdir. Php sayfasında her türlü işlemi düşünüp hesaplayıp kullanıcıya sadece html çıktısını gönderirsiniz. Oldukça işe yarayan bir yöntem ama birçok yerde yeterli olmaz. Sayfanın birçok farklı yerlerinde değişiklik yapacaksanız bunun yerine sayfadan xml döndürmeli ve bu fonksiyonda sonuçları değerlendirip sayfanın ayrı ayrı noktalarını update etmelisiniz.


Bu iş böyle yapılır klavuzu değil belki ama php ile ajax yazarken dikkat etmeniz gerekebilecek bazı konuları buraya yazdım. Daha az baş ağrısı için bu şekilde çalışmak iyi olacaktır.

Kaçınmanız gereken konulardan biri de mümkün olduğunca ajala gelen sayfanın içine çok fazla javascript gömmemek. Aslında teknik olarak bir sorun değil ama yine de sayfanızın kodu o kadar karmaşık ve takip edilemez bir hal alır ki(özellikle de karşı tarafta ajaxla çağrılan sayfalarda iyi bir modüler yapı kurmadıysanız, makineler tıkır tıkır çalışmıyorsa) kafayı yiyebilirsiniz. Henüz ben rastlamadım ama bazı projelerde bu duruma birbir şahit oldum.

İyi çalışmalar beyler bayanlar ;)

Kişisel sitemin nerelere gittiğine şöyle bir bakayım demiştim. Yoğunluğu görünce şaşırdım :) Tam da ya neden insanlar bu siteye giriyor diyordum ki matrisin özdeğerlerini hesaplamaktan bahsettiğim bi sayfanın acayip ünlendiğini farkettim. Bu araştırma esnasında da Anadolu Üniversitesinin net üzerinden yayınladığı ders kitaplarına rastladım.

Bilginin bu kadar hür bir şekilde yayıldığı bir toplumun kesinlikle geleceği var demektir. Bu bizim için gerçekten de çok iyi bir gelişme diye düşünüyorum. Ülkemin parlak geleceğine olan inancım artıyor. Aşağıda benim kişisel sitemin ziyaretine ilişkin google haritasını verdimç Bu kadar fazla şehirden bu kadar insanın gelip birşeyler alması insana mutluluk veriyor gerçekten. Bundan sonra mümkün olduğunca (Şirket politikaları yüzünden birçok çalışmamı hiçkimse ile paylaşamıyorum malesef) çalışmalarımı ve arada deneyimlediğim ufak şeyleri burada paylaşmayı düşünüyorum.

18 Aralık 2009 Cuma

Frpworld.com

Çok uzun bi zaman oldu frpworld ile ilgilenmeyeli ama artık ilgileniyorum. Fantastik edebiyat konusu ile artık eskisi kadar fazla ilgilenmesem de bir zamanlar o kadar emek harcadığım ve sevdiğim bir yere dönmek oldukça eğlenceli oluyor.

D&D 4th editionı çıkaralı baya oldu ama bizde hak getire :) Heralde 3.5 den ileri bu gidişle biraz zor geçerim. Yine de frp oldukça tazeleyici bir uğraş oluyor.

27 Kasım 2009 Cuma

Bilgisayarımla anlaşabilecek miyim?

Konu bu! Bilgisayarımla iletişime geçmek için gerekli altyapıyı hazırladım.

Hafıza için gerekli xml yapılarını hazırladım. Fiziksel durum motorunu, konuşma ve ezberleme altyapısını hazırladım.

IPC calllar ile çalışan bi hafıza servisi hazırladım. Ona öğrettiğiniz herşeyi aklında tutan, her soruya verilen cevabı ve bu cevapların verilme sıklığını depolayan. Kendi fiziksel durumunu eğer başka işi yoksa 10-15 saniyede bir kontrol eden bir sistem.

Peki bu kadar iş ne işin?

Birçoğumuzun hayali olan bilgisayarımla anlaşabilmek için. Basit işleri ve hatta karmaşık işleri yapabilecek ve anlayabilecek bir bilgisayara sahip olmak için.

Biri anlamak mı dedi? Komik olmayalım bilgisayarlar anlayamaz diyenler çıkabilir. Üzerinde çalışıyoruz. Verimli bir altyapı oldu. Bundan sonra üzerine geliştirdiğim her sistem anlama işine bizi biraz daha yanaştıracak.

Konuşmalarla ilgili ön incelemeleri yapması için AIML kullanıyorum. Pek sevdiğim ve tercih ettiğim söylenemez ama hazır yapılmışı varken üzerinde durmaya gerek duymadım. Basit anlaşmaların projem için çok önemi yok. Nasıl olsa yakında onun içine girip AIML den çok uzak ve işe yarar bir sisteme dönüştüreceğim onu. Ama AIML nin de pratik yararlarını gözardı etmeyelim. Oldukça kolay uygulanabilir bir sistem. Adın ne yavrum senin sorusunun cevabını verebilmesi için bilgisayara taklalar attırmama gerek kalmıyor.

Konu hakkındaki gelişmeleri buradan bildiririm. Ya da bu proje için bi subdomain açarım.

Herkesin kurban bayramını tebrik ediyorum. :) Mutlu bayramlar.

22 Eylül 2009 Salı




Karadenizin en yüksek tepelerinden birinden (o yüksek tepelerden taa rusyayı görenler bile varmış(bilimsel olaylara girmeyin kardeşim, görmüşse görmüştür!)) Madur tepesinden karadeniz bölgesini seyretmenin insana vereceği hazzı çok az şey verebilir.

Hava soğuk gibi geliyor insana ama 15 dakika o güneşe maruz kaldığınızda akşam deriniz soyulmaya sanki saatlerce plajda güneşlenmiş gibi bronzlaşmaya başlarsanız (aynı görüntü olmuyo ama :p önerilmez.) hiç şaşırmayın.

100 metre aşağıda sis, duman, soğuk hava, hatta yağış varken biraz ileride güneşlenilebilen kaç yer vardır bilmiyorum ama şu resmin çekildiği yer oralardan biri.

Buz gibi soğuk su kaynakları, temiz havası(bol oksijenli diyemiyorum çünkü o yükseklikte çok oksijen yok :)) ve diğer güzellikleri ile karadeniz yaylaları insana bulunmaz güzellikler vadediyor.

Hele varsa orada size kuymak yapacak bir teyzeniz :) Yaşadınız :)

Bir ara arkadaşlarımla bir tur düzenlemek istiyorum oralara, bu ülkede yaşayıp sadece antalyanın(vb..) boğucu sıcağını ve doğal! :p güzelliklerini yaşamakla yetinmemeli insan. Karadenize mutlaka bir göz atmasılınız.