ShoutMix chat widget
- Ebolax -
Ebolax Emre Şenkal
World Programmer
CV
Profile - Send mail
msn : ebolax@hotmail.com
email : ebolax@gmail.com

Search

Categories

Calendar

<<  March 2010  >>
SuMoTuWeThFrSa
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910

Pages

Tags

Blogroll


Rakı muhabbetsiz gitmez

ebolax - 20.01.2008

Ebola-X:

o paraya biz ne iş kurardık be

Krokiller:

gene kurarız

Krokiller:

ati ibnesi ne bok yiycek acaba

Ebola-X:

öyle olsa flash'in manyak bir ortamı olacaktı

Krokiller:

adam grafik dışında bi zikimden anlamıo

Ebola-X:

olm ne alaka

Ebola-X:

adam c++ bilio köküne kadar

Ebola-X:

ayrıca süper programlama kafası var adamda

Ebola-X:

bariz senden benden zeki yani

Krokiller:

haha

Krokiller:

olsun o kadar ibne

Krokiller:

ben adamla tanıştığımda

Ebola-X:

java c# falan c++'in yerini almaz hiç bir zaman

Krokiller:

(ilkokul yeni bittiydi)

Krokiller:

adam program yazıodu amstradda

Ebola-X:

yaw bir de onun yazdığı zamanlar program yazmak daha da zordu

Ebola-X:

şimdi ne ararsan gir google bulsun

Ebola-X:

o zaman bir şeyi bilemedin mi ara dur mna koyim

Krokiller:

evek

Ebola-X:

kitap yok adam yok

Krokiller:

olm biz zaten

Krokiller:

o zaman ööörenmesek öğrendiklerimizi

Krokiller:

şimdi afedersinde bi zikim olamazdık

Krokiller:

sıradan olurduk daha doğrusu

Krokiller:

şimdiki salaklarda problem çözme kafası yok

Ebola-X:

ya şu anda bilgi çöplük olmuş durumda

Ebola-X:

millet içinde yüzüo

Krokiller:

evet

Ebola-X:

ben sana istediğin programı yapayım yeterki internetim olsun

Krokiller:

eskiyi düşününce dumur direk

Ebola-X:

c++ olsun c olsun hatta perl olsun yani

Ebola-X:

ne istersen

Krokiller:

Ebola-X:

ortam göt oldu duygu

Ebola-X:

yeni projeme bel bağladım artık

Krokiller:

göt ortam, ibne ortam

Krokiller:

hahaa

Krokiller:

devlet sırrı olanamı ?

Ebola-X:

yes

Ebola-X:

çok gizli duygu

Ebola-X:

ama öyle matah bir şey değiş

Krokiller:

bende bi tene develop edem ööle bişey

Ebola-X:

bir tek işleme olayına iyi kasıcam

Krokiller:

hmmzz

Ebola-X:

ulan emule bir zik almaz oldu laaan

Ebola-X:

durduk duyguu

Krokiller:

burdan yapalım

Krokiller:

şimdi

Krokiller:

hafifçe gaza basarken, ayağını debriyajdan çek emre

Ebola-X:

larry 7 gelemedi bir türlü

Krokiller:

oda dursun

Krokiller:

kırmızı yanıo

Krokiller:

sen estetik a yı bitirip estetik b'ye başladınmı emre

Ebola-X:

hit'i çok az abi dosyaların

Ebola-X:

en tırtları kaldı artık

Krokiller:

lan kaç manyak var larry 7 çekçek

Krokiller:

bulduğuna şükret

Ebola-X:

ecstatica 2'yi bu sefre bitirecem abi

Krokiller:

hepiiiimizzzziiin şaaaahsiyeetttitiiiii

Ebola-X:

işte jon joooon cumhuriiyeetiiii

Ebola-X:

eheh olm adam topla adaaam

Ebola-X:

ilk 10 olmalı duygu

Ebola-X:

sen de gel aralarda "yow yow" atarsın

Krokiller:

peki abi

Krokiller:

yow yow

Ebola-X:

yalnız kimle konuşsam bu muhabbeti yapıom

Ebola-X:

ilk 10'a girersek arkamızda bir yow korosu olacak

Krokiller:

vocal yaparım uzun hava gibi arkada

Ebola-X:

soliste ihtiyacımız var aslında

Krokiller:

kanon yaparız yowlardan

Ebola-X:

sen nakarat kısmını iyi söylersin

Krokiller:

dimi

Krokiller:

bunu kaç kişiye söyledin ibne emre

Krokiller:

kaç kişiyle solo yapcam ahahaa

Ebola-X:

aha geldi supersound

Ebola-X:

ben en iyi nakarat'dan önceki piç gibi söylediğim yerleri yapıom

Krokiller:

hahaha

Krokiller:

harbi süper olm orası yaaa

Ebola-X:

jon jon'u doldura doldura söylemişim ikinci kısımda da

Krokiller:

abi çok cingen gibi söylüyon

Krokiller:

jonjon jumhuriyeti gibi çıkıo

Ebola-X:

abe jan jan cumhiriyatı!

Ebola-X:

jan jan jan jan

Ebola-X:

9/8 'lik de yaparız şarkıyı

Krokiller:

 

Ebola-X:

canlı performansda coşarız

Krokiller:

olur oda

Ebola-X:

böyle bele bağlı eşarplar falan

Ebola-X:

şıkkıdı şıkkıdı

Krokiller:

of ki ne of

Ebola-X:

walla konsepti bulduk gibi

Ebola-X:

güneş gözlüğüyle çıkacam olm ben

Krokiller:

hahaha

Krokiller:

ben maskeyle

Krokiller:

tanınmamak için

Ebola-X:

HAHAHAHA

Ebola-X:

ulan kahkahayı basıodum walla

Krokiller:

adımı sööölesinler tamamda

Ebola-X:

o halimizi gözümüzün önüne getirdim de

Ebola-X:

sen maskeli falan

Krokiller:

suratım bari kazınmasın kamuoyunun zihnine

Ebola-X:

sahneye deliler gelmiş

Ebola-X:

sana kenshin kostümü yaptıralım en kralından

Krokiller:

sonunda deliririz falan

Krokiller:

JON OJN OJOOBBONO JON

Krokiller:

diye

Ebola-X:

iyi iyi konsept iyice şekillendi

Krokiller:

olm sondaki kısım çok sıkı lan

Krokiller:

oraya hastayım

Ebola-X:

tam bateri girince jon jon jon jon

Ebola-X:

jon jon lafını duyduğum anda aklıma bu rap ritmi geldi zaten

Krokiller:

tam film soundtrack'i olur aslında o kısım

Ebola-X:

jon jon jon jon diye

Ebola-X:

eheh sulukule belgeseli

Ebola-X:

abe jan jan cımhiriyatyası

Krokiller:

 

Krokiller:

isimlerde tutuo

Krokiller:

hayriye, jale, melaaat

Krokiller:

sahne isimlerimizde hazır

Ebola-X:

kopçik deniz, tırtıl emre, kapkaç duygu

Krokiller:

ben jale, deniz, hayriye, sen melaat

Krokiller:

LAN YARILDIM BURDA

Krokiller:

KAPKAÇ DUYGU YAAA

Ebola-X:

yapalım en kralından

Ebola-X:

şu muhabbeti blog'a atayım bari.

Translation :

Flash ile Realtime Birşeyler

ebolax - 11.01.2008

Sabah sabah Krokiller kardeşimin açtığı muhabbet üzerine yazıyorum bu yazıyı. Flash'da realtime multiplayer oyun nasıl yapılır? Evet bir çoğunuz bu sorunun cevabını merak ediyorsunuz! O zaman bu yazı tam size göre gençler taaam size göree. 

Şimdi efendim Flash'da sayfa yapanlarınız vardır elbet lakin hep dusunmussunuzdur "ulen bu sayfalar zıplıyor oynuyor ama bir dinamizm olsun bir coşku patlaması olsun ne bileyim". İşte bu hayallerin sonu ya bakırköy'e gider ya da "ulaaaan realtime oyun yapacam!" şeklinde bir düşünceye dönüşür. Flash'da kayda değer çok az uç konu varıdr. Bunlardan biri 3D olabilir (Flash'da Director gibi hazır bi 3D destegi olmadığını belirteyim) ve biri de mutlaka socket programlamadır. Bu işin en zor yanı, yalnızca flash içerisinden halledilememesidir. Ya kendiniz bir server yazmak zorundasınızdır veya hazır server'lardan birinin kurallarına uymak zorundasınızdır. Aslında Macromedia Firması bu işler için Macromedia Flash Communication Server programını çıkarmıştır ve gayt güzel çalışmaktadır ama ben her zaman kendi işimi kendim halletmek isterim :) - Tabii chat falan sorun değil ama video konferans gibi coşkulu işlerde kendi server'ını yazmak çüğünüzü kendi k.çınıza sokmak kadar zordur :) 

Şimdi size basit olarak bir C# yani dotnet Server ve buna bağlanan Client mantığını yazacağım. Öncelikle

Server'dan başlayalım :

Aşağıda açıklamaları ile beraber C# kodlarını okuyabilenzi

// Bunlar socket programming için çağırılıan gerekli sınıflar

using System;
using System.IO;
using System.Net.Sockets;
using System.Net;

// simpleServer diye bir isimuzayında saklanıyor

namespace simpleServer
{
 class Class1
 {

  // 2 oyunculu bir sistemin 1. ve 2. oyuncularının konumlarının başlangıç noktaları
  static int p1_x = 30;
  static int p1_y = 30;
  static int p2_x = 50;
  static int p2_y = 50;
 

konumarın listesini veren fonkiyon
  static string listeVer()
  {
   return p1_x.ToString() + ":" + p1_y.ToString() + ":" + p2_x.ToString() + ":" + p2_y.ToString();
  }

  [STAThread]
  static void Main(string[] args)
  {

   // Local ip adresi belirtiliyor ve TcpListener adındaki dinleyici 2800 numaralı portu dinlemeye alıyor.
   IPAddress ipAd = IPAddress.Parse("127.0.0.1");

   TcpListener TcpDinleyicisi = new TcpListener(ipAd,2800);
   TcpDinleyicisi.Start();

   // Sunucu ile ilgili Console'a bilgi gonderiliyor

   Console.WriteLine("Sunucu baslatildi...");

  // İlgili Port'dan gelen çağrı alındığı zaman ne yapılacağı

  Socket IstemciSoketi = TcpDinleyicisi.AcceptSocket();

   if (!IstemciSoketi.Connected)
   {
    Console.WriteLine("Sunucu baslatilamiyor...") ;
   }
   else
   {  
    // Mesaj sonlandirici (Flash icin Gerekli)
    char EOF = (char) 0x00;

    while(true)
    {    

     İlgili port'dan gelen giden veriyi kontrol etmek içinbi NetworkStream, StreamWriter ve StreamReader nesneleri yaratılıyor
     NetworkStream AgAkimi = new NetworkStream(IstemciSoketi);     
     StreamWriter AkimYazici = new StreamWriter(AgAkimi);
     StreamReader AkimOkuyucu = new StreamReader(AgAkimi);

     try
     {

      // Gelen bilgi işleniyor
      string IstemciString = AkimOkuyucu.ReadLine();     

      String[] plBilgi = IstemciString.Split(':');     
     
      if (plBilgi[0].Trim().Equals("1"))
      {
       p1_x = int.Parse(plBilgi[1]);
       p1_y = int.Parse(plBilgi[2]);
      }
      else
      {
       p2_x = int.Parse(plBilgi[1]);
       p2_y = int.Parse(plBilgi[2]);
      }

      String message = listeVer();
      Console.WriteLine(listeVer());
     

      // oyuncuların konumları WriteLine metodu ile client'a gönderiliyor
      AkimYazici.WriteLine(listeVer() + EOF);
      AkimYazici.Flush() ;
     }
        
     catch
     {

      // Konsola bilgi gönderiliyor
      Console.WriteLine("Sunucu kapatiliyor...");
      return ;
     }
    }
   }

   // Bitti ulan

   IstemciSoketi.Close();
   Console.WriteLine("Sunucu Kapatiliyor..."); 
  }
 }
}

işte gençler basit bir server bu şekilde kodlanabilir.Tabii bu server tek bir portdan bilgi alıp veriyor. Aslında bilginin bir portdan alınıp client'in boş olan diğer portlardan birine yönlendirilmesi lazım. Bir portdan aynı anda yalnızca bir client bağlı kalabilir (kalıcı bir bağlantıdan söz ediyoruz) Sağolsun Poison kardeşim bu konuda beni aydınlattı Öpüyorum yanaklarından :)

Neyse bir de flash kodunu yazalım da tam olsun :

Bunda açıklama falan yok uğraşın anasını satayım. Bir tek htırlatma ekranda mov1_mc, mov2_mc isimli iki tane movieclip olması br de log tutmak için log_txt isminde bir dynamictext olması lazım. Aşağıdaki kodları ilk frame'e yazdıktan sonra eğerki yukarıdaki server'ı yapmış ve çalıştırmışsanız flash da çalışacaktır. Ama yapamamışsanız e ben ne diyim size bilmiyorum ki?

var xs_xmlsocket = new XMLSocket();
var data_xml = new XML();

// Baglaninca yapilacak islemler
xs_xmlsocket.onConnect = function(success) {
 if (success) {
  log_txt.text = "Bağlantı Başarılı!";
 } else {
  log_txt.text = "Bağlantı Başarısız!";
 }
}

// Data alininca yapilacak islemler
xs_xmlsocket.onData = function(msg)
{
 log_txt.text = msg;
 var plYer = msg.split(":");
 mov1_mc._x = parseInt(plYer[0]);
 mov1_mc._y = parseInt(plYer[1]);
 mov2_mc._x = parseInt(plYer[2]);
 mov2_mc._y = parseInt(plYer[3]);
}

// Bagklanti kapandigi zamanki islemler
xs_xmlsocket.onClose = function(doc) {
 log_txt.text += "Server Bağlantısı Kesildi";
}

// Mesaj Gonderme Fonksiyonu
function sendMsg(a)
{
 xs_xmlsocket.send(a + "\n");
}

// Baglan
if (_root.plNumber == 1)
{
 xs_xmlsocket.connect("localhost", 2800)
} else {
 xs_xmlsocket.connect("localhost", 2900)
}


// ****************************************************************
// Hareket Kontrolü
mov1_mc._x = _root.pl_1.x;
mov1_mc._y = _root.pl_1.y;
mov2_mc._x = _root.pl_2.x;
mov2_mc._y = _root.pl_2.y;

_root.onEnterFrame = function () {
 if(Key.isDown(Key.DOWN))
 {
  eval("_root.pl_"+_root.plNumber).y += 1;
 }
 if(Key.isDown(Key.UP))
 {
  eval("_root.pl_"+_root.plNumber).y -= 1;
 }
 if(Key.isDown(Key.LEFT))
 {
  eval("_root.pl_"+_root.plNumber).x -= 1;
 }
 if(Key.isDown(Key.RIGHT))
 {
  eval("_root.pl_"+_root.plNumber).x += 1;
 }
 
 message = _root.plNumber + ":" + eval("_root.pl_"+_root.plNumber).x + ":" + eval("_root.pl_"+_root.plNumber).y; 
 sendMsg(message); 
}

stop();

Translation :

Dispossessed (Mülksüzler)

ebolax - 10.01.2008
Selamlar beyler bayanlar,

Fazla zamanım yok konunun en ince noktalarını belirtip gidecem :)
Başlıkta belirttiğim Ada Sahip olan kitap tartışmasız hayatımda okuduğum en iyi kitaptır. Bir kere en sevdiğim konulardan birinin üzerine (Fizik) kurulmuş olup konunun geçtiği ortamın da süper tasarlanmış olması kitaba bir çok değer eklemiştir. Yazarı olan Ursula K. LeGuin hanımefendi nasıl oluyor da yazıyor bu romanları aklım almıyor :) Şimdiye kadar ne kadar romanını okuduysam beğendim hatunun.
Kitap Türkiye'de "Mülksüzler" adı altında çıkmış olup rahatlıkla bulunabilmektedir :) Yalnız kapak konusunda aşağıda da göreceğiniz üzere bu amerigonyalılar harika canım






Translation :

Call By Reference

ebolax - 03.01.2008

Efendim yazma peiyodumuz oldukça uzadı bari yazmışken düzgün bir şeyler yazalım kaygısıyla şöyle teknik olarak siz okuyucularımı bilgilendirecek bir şeyler yazmak ister bu gönül. Bugünkü konumuz da Call By Reference yani türkçesi ile Referans Olarak Çağırma. Şimdi nedir bu Referans olarak Çağırma? (Referans olarak Atama şeklinde de söylenir).

Bu şudur efendim:

Şimdi diyelim ki sizin güzel bir fonksiyonunuz var. Bu fonksiyonun da çok şık bir parametresi mevcut. Yalnız bu parametre o kadar güzel bir parametre ki bu fonksyonu kullandığınız zaman bu parametreye atadığınız değer fonksiyon içerisinde değişiyorsa (başka bir değer alıyorsa) fonksiyondan değişik halde çıkıyor ve hayatına böyle devam ediyor. İşte böyle büyülü bir olay Call By Reference! Şimdi böyle kuru kuru bir b.k anlamayanlar olacaktır elbet. Şöyle güncel C# diliyle bir örnek vermek ister bu deli gönül:

Değer Olarak Atama (Call By Value) :

function degistir(int a)
{
    a = 18;
}

int b = 10;
degistir(b);
Console.WriteLine(b); // Sonuc 10 yani fonksiyon içerisinde atanan deger olmadı.

Bakınız bu fonksiyon Call By Value kullanarak aldığı a değişkeninin bir örneğini oluşturuyor. Ve artık ne yaparsa bu oluşturduğu örnek üzerinde yapıyor ve fonksiyon bitiminde bu örneği atıyor çöpe. Oysa ki;

Referans Olarak Atama (call By Reference) :

function degistir(ref int a)
{
    a = 18;
}

int b = 10;
degistir(b);
Console.WriteLine(b); // Sonuc 18 yani referans olarak atanan b değişime uğradı.

İşte bu harika örnekte "ref" anahtar kelimesi kullanılmak suretiyle Referans olarak atanan b değişkeni fonksiyon içerisinde 18 değerini almıştır. Yani referans olarak atama işleminde örnek oluşturulmaz doğrudan o değişken üzerinde işlem yapılır.

Yani böyle işte sayın okuyucular. Gelin şimdi de hangi dilde bu işin nasıl yapıldığına bakalım. Dilden dile o kadar fark ediyor ki bu meret şaşar kalırsınız :)

C# 'da yukarıdaki örnekde olduğu gibin "ref" anahtar kelimesi ile. Bir de "out" var ve ref'den farklı olarak ilk değer almamış olan değişkenleri için kullanılıyor.

Java'da durum çok dertli. Bütün her şey Değer Olarak Atama kullanıyor. Yalnız kendi sınıfınızı yazıp onun bir üyesini ayarladıktan sonra sonra değişken parametre olarak atarsanız ve atadığınız object'in üyelerini fonksyion içinde değiştirirseniz ahanda değişmiş olarak çıkıyor! yoksa kıçınızı yırtsanız nafile :)

PHP'de function deneme(&$degisken) olarak yazıyoruz.

C++'da void (int& a);

C'de void (int* a); // değişken olarak &b gibi adresini göndermemiz gerekiyor.

Javascript'de de Java'da olduğu gibi Object kullanıyorsunuz. a.deger = 10; diyip a'yı gönderiyoruz mesela.

Falan filan işte okuyun anasını satayım uf amma yazdım be!:)

Translation :