Hilmi BAYCAN

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.