flash kurcalarken

geçende adam asmaca yazmışdım sözlükle çalışan. ona bide türkçe versiyon yazdım. şimdide başka ne yazabilirim böle dirty hack hızlı yolundan diye bakınıyorken. güzel bir open source proje buldum 1 fla 7 as dosyasından oluşuyor.

ee class lar var bunda kütürt kod değil. flash 10 bile kurmama rağmen class browser yok. meğersem flex ide de o tip naneler olarmış. yinede cool görünen bir flash yaptım buyrun :

üşenmezsem bi arada flex ide kuram …..

velocity

apache nin süper projelerinden biri olan velocity özünde bi şablon motoru(template engine). son günlerde oynamam gerekdi eclipse için güzel bir editor de buldum buyrunuz.

php nin smarty’i andıran basit bir template dili var. bu tip teknolojiler code generator’lardan web sayfa oluşturmalarına kadar heryerde kullanılıyor. ben velocity nin hızına hayran kaldım azbuz test serverda bu kadar hızlı tepki vermez kendisi velocity den html çıkartırken çok hızlı sonuçlar aldım.

bi ara bu dalgayı kullanıma alsak tam süper olacak.

ie8 rc1 v8 sonucu

ilk sonuç

Score: 34.0
Richards: 32.4
DeltaBlue: 35.6
Crypto: 19.3
RayTrace: 37.8
EarleyBoyer: 53.9

inanamayıp 2. kere denedim
Score: 39.7
Richards: 32.8
DeltaBlue: 35.6
Crypto: 34.2
RayTrace: 50.6
EarleyBoyer: 48.7

arada beni uyardı ikisindede bu kodu çalıştırırsam non responsive olabilerim dedi. diğerleri için.

blogumun çirkin görünmeside ayrı bir eksi.

ie8 rc1 çıkdı

uzun süre önce ie8 beta kurmuştum sonra beta 2 kurmak durumunda kaldım. ileri gidince geri gelmeyi semiom. ve ie8 beta 2 de bazen sayfalar alt üst oluyordu özellikle javascript kasan sitelerde. neyse rc1 çıkdı hemen kurdum.

bir iki gezindim benim javascriptlerin arıza yaptığı yerleri gördüm. telaşa gerek yok bakalım daha bunun rc2 si var. şimdide v8 testi yapcam nihahahahahahaha 🙂

meraklı olmayan kurmasın çok gereksiz zahmet olur.

BinarySearch deki böcek(bug)

bilen bilir bu epey eski en hızlı arama algoritmasıdır. tabii sıralı dizilerde. yani diziniz doğru sort edilmişse ki bunun içinde ekleme işleminde ayarlar yaparız. sonuçda çok bilinen çok fazla olmasada aradabir kullanılması ihtimali mevcut olan bu algoritmada bir bug olmasını ben hiç beklemezdim

50 yaşını geçmiş bu algoritmada hata olması imkansız gibi görünebilir. buyrun örnek java implementasyon:

1: public static int binarySearch(int[] a, int key) {
2: int low = 0;
3: int high = a.length – 1;
4:
5: while (low <= high) {
6: int mid = (low + high) / 2;
7: int midVal = a[mid];
8:
9: if (midVal < key)
10: low = mid + 1
11: else if (midVal > key)
12: high = mid – 1;
13: else
14: return mid; // key found
15: }
16: return -(low + 1); // key not found.
17: }

basitçe anlatmak gerekirse. aranan değeri diziyi ortadan ikiye bölerek arıyor. sonuçda sıralı olduğu için aranan şey ortanın üstü sonun altındadır veya tam tersi şeklinde duruma bakıp öyle geziyor bu durumda O(logn) de çalışıyor. detayları merak eden için.

mantık olarak bir yanlış görünmezken ben hatayı şurdan öğrendim. olay int de tıkanıyor. günümüz dizileri(array) kocaman olabilir ve kodda 6. satırdaki toplama işlemi integer veri tipinin limitlerinin(231 – 1) üstünde bir değer verebiliyor. işte orda çatlıyor. ortama göre bu işlemin sonucu negatif değer verebiliyor ve dizinin dışında bir indis oluşturabiliyor. buda diziden veriyi alırken hataya sebep oluyor. yine aynı yazıda bunu çözmek için verilen yöntemler mevcut:

6: int mid = (low + high) >>> 1;

bu işlemi 6. satıra uygularsak sağlıklı olabilir. ama yinede emin değiliz test etmemiz lazım diye gidiyor linkli yazı.

ben okuduğumda çok şaşırdım ortam google olunca limitler zorlanıyor işte. demekki hala bilgisayar özellikle veri yapıları ve algoritmalar tam anlamıyla oturmuş değil. ben knuth‘tan sonra ki kendisinin 3 ciltlik bir külliyatı computer science’ı vardır bu cilterin herhangi biri düşse kafa yarar bu konular tartışılmaz sanıyordum:)

back to the basics action script 2

çok uzun süredir flash ve action script ile oynamamışdım. bu gece oynamak durumunda kaldımki bu desktopu upgrade etmem lazım geldiği yine aklıma geldi. çok kanırdı flash çalışırken. hadi yavaşlık bi nebze çözülebilir sabredince geçio. ekranın kayıklıkları fitil etti.

neyse gelelim konumuza. benim sözlükde bi oyun yapasım vardı uzun süredir adam asmaca düşünüodum. onun için araştırmaya başladım. iki yol mevcut biri ajax / javascript biri flash / swf. server amerikada olduğundan çok ajax call yaparsam kanırık durcak(yavaş çalışcak django ile örneği) ve şükela fontlarla eğlenceli bişey yapamicam. sonuç flash olmalı.

google “hangman” veya “hang man” arayınca kütür kütür dökdü. kurcalarken kurcalarken hedef bulundu. biçilmiş kaftan grafikleri çok gelişkin değil ama algoritma çalışıyor. statik içine verilen kelimelerde mis gibi çalışan bu dalgayı sözlüklen birleşik çalışır duruma getirmeliyim. hemen aklıma gelen flashvars. bi kaç şekil denedim swf ye gönderemedim. sonra bunu ajaxdan çektirsem daha şükela olmazmı dedim. fla da gereken kod değişikliğini yaptım.

loadVariables(“http://www.sozlukcell.com/ajaxProxy.aspx?cmd=GetAdamAsmacaKelime”,_root);

yemedi bunu. allah allah dedim sonra _root u “_root” yaptım yemedi sora _gloabl ve “_global” de denedim yemiyor. değişkenleri bi türlü alamıom serverdan swf ile. aynı url firefoxdan çağırıyorum kelime ve anlam kütürt diye geliyor. sonra action script 2 de bu iş nasıl düzgün olur diye bakınırken bi örnek daha buldum.

var veriler:LoadVars = new LoadVars();
var yollagerial:LoadVars = new LoadVars();
yollagerial.sendAndLoad(someurl,veriler,POST)

bu yollada deniyorum deniyorum olmuyor. bu arada ben biliyorum zekiyim ya o POST u GET yapıp denedim uzunca bi süre. en sonunda mesele çözüldü. meğer swf GET den alamıomuş. garip olan şu ki get ile bi veri almak benim bildiğim posttan kolaydır. head de gidip gelmez veriler url de yazar. neyse son hali şudur:

var veriler:LoadVars = new LoadVars();
var yollagerial:LoadVars = new LoadVars();
yollagerial.sendAndLoad(“http://www.sozlukcell.com/ajaxProxy.aspx?cmd=GetAdamAsmacaKelime&”+Math.random(),veriler,”POST”);
trace(veriler.kelime);
veriler.onLoad = function(success) {
if (success) {
trace(“variables loaded”);
_root.kelime=veriler.kelime;
getURL(“javascript:updateAnlam(‘”+veriler.anlam+”‘);”);
afterWordLoadNewGame();
} else {
trace(“Error loading page”);
yollagerial.sendAndLoad(“http://www.sozlukcell.com/ajaxProxy.aspx?cmd=GetAdamAsmacaKelime&”+Math.random(),veriler,”POST”);
}
};

değinmem gereken birinci konu sanırım sizinde merak ettiğiniz gibi Math.tandom(). serverda herşey cache den geliyor o sebep url nin götüne böle abuk bişey eklenmezse bi önceki select lenen şey geliyor. bu sayede cache den kurtulmuş oluyoruz.

bide onload konusuna taşıdım yeni oyunun kurulmasını bu sayede sözlükden yeni kelime gelmedikçe oyun başlamıyor. v1(versiyon 1) adam asmaca benim sözlükden çalışır oldu 🙂 mutlu hissettim kendimi uzun süredir böle şeker şeyler kodmuodum. neyse bide skor bord yaptım ki kendisi aynı twitter daki mesajlaşmalara benzedi.

bu arada neden as3 yapmadın aga daha tatlı olmazmıydı diyen çıkar hemen diyem compiler versiyonu 3 e dayayınca oyun çalışmaz oldu üşendim onlarıda yenilemeye. biri grafikleri adam ederse aslında as3 e de taşırım why not.

hadi iyi eğlenceler.