4 Ekim 2010 Pazartesi

BULANIK MANTIK ( FUZZY LOGIC )

             Bulanık Mantık kuramı 1965 yılında Lotfy A. Zadeh tarafından geliştirilmiştir.Ancak Zadeh Bulanık Mantık kavramını ortaya attığında "Bulanık Mantık mı olurmuş canım?" şeklinde alaycı bi tavırla karşılaşmıştır.Amerikalılar böyle alay ede dursun Japonya bu fikri alıp başarılı bi şekılde kullanmıştır.Peki nedir bu Bulanık Mantık? Kuramın geliştricisine göre "Bulanık Mantık herşeyin ,doğrunun da ,bir derece meselesi olduğu insani akıl yönetme için bir modeldir.Temelde sözcükle hesaplama anlamı sunmaktadır.".Yani Bulanık Mantıkta Klasik Boolean Mantığı gibi herşey kesin 1 (doğru) ya da 0 (yanlış) değildir.Belirsizlikleri ifade edebilmek için  0 ile 1 arasındaki değerler kullanılarak doğruluk/yanlışlık derecelendirilir.Çünkü gerçek hayatta kesin doğru ya da kesin yanlış yoktur.Bu nedenle 0 ya da 1 lerden oluşan önermeleri kullanan bilgisayarların insanların kullandığı belirsizlik ve yargı içeren önermeleri,"biraz kalabalık","az pişmiş","çok yaşlı" gibi kesin olmayan değerler içeren cümleleri değerlendirebilmesi için Bulanık Mantıktan yararlanılır. Bu sayede daha zeki makineler,sistemler geliştirilebilir.
        Örneğin bu konuda en ileri çalışmaları yapan Japonya'daki Sendai metrosunda tren o kadar sarsıntısız hareket etmektedir kı yolcuların tutunmalarına gerek kalmamaktadır.Bu Bulanık Mantık ile sağlanmaktadır.Trendeki  etki-tepki süresi insanlarınkinden üç kat daha kısadır.Ayrıca bu sistem ile %10 yakıt tasarrufu sağlanmaktadır.Bir diğer örnek yine Japonya'da bir enstitüde yapılan çalışmada fırtınada denizde mahsur kalan denizcileri kurtarma amacıyla kullanılan helikopterin Bulanık Mantıkla programlanan bir simulatörü yapılmıştır.Bu simulatörün ardından helikopterin maketi yapılarak denendiğinde havada helikopterde hiçbir sarsıntı  gözlemlenmemiştir.
        Bulanık Mantık sanayinin bütün alanlarında kullanılmaktadır.Televizyonlar,fotoğraf makineleri,kameralar,fırınlar,çamaşır makineleri,elektirikli süpürgeler bu mantıkla dizgilendirilir.Mühendislik ve bilgisayar bilimleri,yönetim ve karar destekleri,güvenilirlik ve kalite kontrolü,ekonomi ve finans,biyoloji ve tıp,çevre bilimi,psikoloji...gibi birçok alanda kullanılmaktadır.

Bulanık Mantık ve Bulanık Teknolojiler,Şevki Işıklı

5 Ağustos 2010 Perşembe

J2ME İLE FILE BROWSER

          J2ME ile  mobil aygıtlar için bir dosya tarayıcısı yapalım. Bu sayede cihazımızın belleğindeki dosyaları görüntüleyebileceğiz.

          Uygulamamızı adım adım yapalım:

          Netbeanste yeni bir proje açıyoruz.

          * Proje türünü Java ME -> Mobile Application seçiyoruz.
        
          * Uygulamamıza isim verirken "Create HelloMIDlet" checkbox ın checkini kaldırıyoruz ve projemizi oluşturuyoruz.

          * Sol taraftaki Projects kısmında projemizin üzerine gelip New->Java Package diyoruz.

          * Projemizle aynı isimli paketimizi oluşturuyoruz.

          * Paketimizin üzerine gelip New->Visual Mıdlet diyoruz.

          * Projemizle aynı ismi verip Midletimizi olşturuyoruz.

         * Midletimizi açtığımızda karşımıza Flow Designerı çıkıyor.Bu ekranda sağdaki Paletimizden bileşenleri sürükleyip bırakıyoruz.

         * 1 tane File Browser,1 tane Splash Screen,1 tane de Textbox sürükleyip bırakıyoruz.

         * Şimdi de Commandlarımızı ekleyelim.Exit commandını File Browsera,Back commandını Textbox a sürükleyip bırakıyoruz.

        * Her şey iyi hoş,bileşenleri ekledik ancak bunların şu anda birbiriyle bir bağlantısı yok.Bunu da şu şekilde yapıyoruz :



          * Şimdi sırada kodumuza dosyaları okuyacak metodu eklemek var.Source sekmesinden kodumuzu açtıktan sonra aşağıdaki kodu ekliyoruz :

private void readFile() {
        try {
            FileConnection textFile = fileBrowser.getSelectedFile();
            getTextBox().setString("");
            InputStream fis = textFile.openInputStream();
            byte[] b = new byte[1024];
            int length = fis.read(b, 0, 1024);
            fis.close();
            if (length > 0) {
                textBox.setString(new String(b, 0, length));
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

          * Son olarak da bu metodu çağırmamız gerekiyor.commandAction metodumuzun içinde readFile() diyerek metodumuzu çağırıyoruz.


public void commandAction(Command command, Displayable displayable) {
    
        if (displayable == fileBrowser) {
            if (command == FileBrowser.SELECT_FILE_COMMAND) {
               readFile();
               switchDisplayable(null, getTextBox());
              
            } else if (command == exitCommand) {
            
                exitMIDlet();
              
            }
        } else if (displayable == splashScreen) {
            if (command == SplashScreen.DISMISS_COMMAND) {
              
                switchDisplayable(null, getFileBrowser());
              
            }
        } else if (displayable == textBox) {
            if (command == backCommand1) {
              
                switchDisplayable(null, getFileBrowser());
              
            }
        }
      
    }

            Vee artık projemizi çalıştırabilir,telefonumuzun içindeki dosyalara göz atabilir,istediğimiz dosyanın içeriğini görüntüleyebiliriz.

http://netbeans.org/


1 Ağustos 2010 Pazar

J2ME KULLANICI ARAYÜZÜ ( USER INTERFACE ) BİLEŞENLERİ

     Bu yazımda J2ME uygulamalarının kullanıcı tarafında sunulmasını sağlayan kullanıcı arayüz bileşenlerinden kısaca bahsedip basit bir uygulama yapacağım.
     J2ME de arayüz bileşenleri ikiye ayrılır.Bunlar düşük seviye ve yüksek seviye bileşenlerdir.Düşük seviye bileşenler çalıştığı sisteme bağlı olmayıp bütün cihazlarda aynı görünüme sahiptirler.Bu bileşenleri Canvas sınıfı oluşturur.Canvaslar grafik çizmek için kullanılırlar.Yüksek seviye bileşenler ise çalıştıkları sisteme bağlıdırlar.Yani çalıştıkları cihazın kütüphanelerini kullanırlar.Dolayısıyla görünümleri cihazdan cihaza farklılık gösterebilir.Bu bileşenler ise Screen sınıfından türemişlerdir.


Burada bir şeyi belirtmek gerekiyor ki yukarıda gördüğümüz ,Screen sınıfından türeyen Alert,List,Textbox gibi bileşenlerden ekranda bir seferde  yalnızca bir tanesi gösterilebiliyor.Ekranda birden fazla bileşen göstermek istiyorsak Form sınıfını kullanmamız gerekiyor ve form sınıfından türeyen Choice Group,DateField gibi bileşenleri forma ekleyip formumuzu da ekrana eklememiz gerekiyor.Bir diğer önemli nokta ise dokunmatik ekrana sahip ceptelefonları dışında,ceptelefonlarında butonların kullanılmayışıdır.Bunun yerine Command kullanırız.Şimdi isterseniz bu bileşenleri kullandığımız basit bir uygulama yapalım:

package hello;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class HelloMIDlet extends MIDlet implements CommandListener {

    private boolean midletPaused = false;

    Display ekran;
    Command karsılastir;
   
    TextField cumle;
    TextField cumle2;                     
    private Command exitCommand;
    private Form form;
    private StringItem stringItem;
   
    public HelloMIDlet() {

        form=new Form("Formumuz");
          
            cumle=new TextField("Cümle:","bu cümleyi yaz",40,TextField.ANY);
            cumle2=new TextField("Senin Cümlen:",null,40,TextField.ANY);

            karsılastir=new Command("Karsılastir",Command.OK,1);
            exitCommand=new Command("Çıkış",Command.EXIT,2);

            form.append(cumle);
            form.append(cumle2);

            ekran=Display.getDisplay(this);
            form.addCommand(karsılastir);
            form.addCommand(exitCommand);

            form.setCommandListener(this);

    }

  
    private void initialize() {                                        
        // write pre-initialize user code here
                                          
        // write post-initialize user code here
    }                           
    
    public void startMIDlet() {                                     
        // write pre-action user code here
        switchDisplayable(null, getForm());                                       
        // write post-action user code here
    }                            
    
    public void resumeMIDlet() {                                      
        // write pre-action user code here
                                        
        // write post-action user code here
    }                             
   
    public void switchDisplayable(Alert alert, Displayable nextDisplayable) {                                            
        // write pre-switch user code here
        Display display = getDisplay();                                              
        if (alert == null) {
            display.setCurrent(nextDisplayable);
        } else {
            display.setCurrent(alert, nextDisplayable);
        }                                            
        // write post-switch user code here
    }                                  
  
    public void commandAction(Command command, Displayable displayable) {                                              
       
        if (displayable == form) {                                          
            if (command == exitCommand) {                                        

               
                exitMIDlet();                                          
                // write post-action user code here
            }                                                 
        }                                               
        if(command==karsılastir)
       {
          
         int snc=cumle2.getString().compareTo(cumle.getString());
           if(snc!=0)
           {
               Alert uyarı=new Alert("HATA!!!","yanlıs giris",null,AlertType.ERROR);
               ekran.setCurrent(uyarı);
           
           }
          
 else
           {
               Alert uyarı=new Alert("TEBRİKLER","dogru giris",null,AlertType.CONFIRMATION);
               ekran.setCurrent(uyarı);

 }

       }

    }                              
   
    public Command getExitCommand() {
        if (exitCommand == null) {                                
            // write pre-init user code here
            exitCommand = new Command("Exit", Command.EXIT, 0);                                  
            // write post-init user code here
        }                        
        return exitCommand;
    }
    
    public Form getForm() {
        if (form == null) {                                
            // write pre-init user code here
            form = new Form("Welcome", new Item[] { getStringItem() });                                   
            form.addCommand(getExitCommand());
            form.setCommandListener(this);                                 
            // write post-init user code here
        }                        
        return form;
    }
   
    public StringItem getStringItem() {
        if (stringItem == null) {                                
            // write pre-init user code here
            stringItem = new StringItem("Hello", "Hello, World!");                                  
            // write post-init user code here
        }                        
        return stringItem;
    }
    
    public Display getDisplay () {
        return Display.getDisplay(this);
    }

    /**
     * Exits MIDlet.
     */
    public void exitMIDlet() {
        switchDisplayable (null, null);
        destroyApp(true);
        notifyDestroyed();
    }

  
    public void startApp() {
        if (midletPaused) {
            resumeMIDlet ();
        } else {
            initialize ();
            startMIDlet ();
            ekran.setCurrent(form);

        }
        midletPaused = false;
    }

  
    public void pauseApp() {
        midletPaused = true;
    }

  
    public void destroyApp(boolean unconditional) {
    }
 }      

Bu kadar koda bakıpta çok bişey yaptığını düşünmeyin:) Yaptığı şey şu: 1.textFielddeki cümle ile 2. textFielddeki yani kullanıcının girdiği cümleyi karşılaştırıp doğru yada yanlış şeklinde geri bildirimde bulunuyor.
Koda baktığımızda bizim için önemli olan kısımlar kalın harflerle yazılmış kısımlardır.Birinci kısım ,HelloMIDlet metodu Constructor metodumuz.Burada bileşenleri oluşturup forma ekledik formu da ekrana ekledık.İkinci kısımda ise yani commandAction metodumuzda Commandlarımızdan biri uyarıldığıı takdirde yapılacak işlemleri belirttik.

7 Temmuz 2010 Çarşamba

ÜÇ ÇİNGENE KADININ HIDIRELLEZ DUASI

        Bu yeni zamanda sevdiğim kim varsa, kendim de dahil, sevebileceğim herkes de dahil...

        Sağlığı iyi olsun.

        Kalbi ritmini çalsın.Yanakları kiraz pembesi,dudakları bal olsun.Teni sıcak kalsın,enerjisi dışına taşsın.Ciğerlerinden nefes,midesinden gurultu,bacaklarından güç eksik olmasın.

        Kanı bol olsun,damarlarında dönüp dönüp dolaşsın.

        Sevdikleriyle bir arada olsun.Kolu kollarına değsin,gözü gözlerinin içine baksın.Lafları birbiriyle başlasın.Nesi varsa, bölüşecek biri olsun;.nesi yoksa bulup getirecek biri olsun.Bu birileri az ama öz olsun.Bazıları dünyada tek olsun.Sevgisinin tamamını harcasın.Harcasın ki,ona büyük bir miras kalsın.

        Sevmekten bıkıp usanmayacağı biri olsun.Onun yeri ayrı olsun.Onu soysun,başucuna koysun ama yalan uydurmasın.O herşeyine her haline ,tek tanık olsun.

        Bir hareketiyle güldüren ,bir hareketiyle ağlatan olsun.Duyguların hepsi onda olsun.Kalbi buna teslim olsun.Bütün şarkılar onu anlatsın.Aşık olsun,sırılsıklam olsun.Kurumasın.

       Yapmaktan bıkıp usanmayacağı bir işi olsun.Başarının gerçek adının bu olduğunu unutmasın.İbadet eder gibi,bu keşfini her gün yeniden kutlar gibi,onu yapıp dursun.Yaptıkça daha iyi yaptığını görsün.Daha iyi yaptıkça bunu başkaları da görsün.O başkalarının bunu gördüğünü,dış gözüyle görsün,iç gözüyle işine baksın.

        Neşesi bol olsun...

        Kendini mutlu etsin,durduk yere neşelenmek nedir bilsin.İçinde bir şey durup durup zıplasın.Duydukları,gördükleri onu gıdıklasın,kahkaha attırsın.Gürültü çıkarsın.Saçma şeyler söylesin.Çocuklukta en şımardığı ana,sık sık gidip gelsin.Nereye gidip geldiği bilinmesin.

         Değiştirmek istedikleri değişsin.

         İçte ve dışta ,iyi günde ve kötü günde tadilat yapsın.Eskilerini atsın,ruhunu havalandırsın.Kapıda hep kamyonu dursun.Dilediği yere taşınsın.Kendinden taşınmak isterse,içindeki güç dışındaki sevgi ona yardımcı olsun.Bileği,bütün alışkanlıklarıyla,bağımlılıklarıyla güreşsin.

         Bir şey ona sürpriz olsun.Günlerinden bir günü bir pakete sarılı olsun.Açılınca ,içinden hiç beklemediği güzel bir haber çıksın.Bugün üç yüz altmış beşten herhangi biri olsun.Öylesine bir pazartesi,arkaya kavuşturduğu ellerinde ,unutulmaz bir salı saklasın.Öyle tahmini mümkün olmayan bir şey olsun ki bu,hayatın zekasını anlatsın.

        Bir hayali gerçek olsun.Bir hayale gözünü yumsun.Peşinden koşup,onu sobelesin.Hayalini kendinden saklamasın.Bir çizgi filmde olduğunu,her şeyin mümkün olduğunu unutmasın.

        Bu duayı okusun.Kendi sesiyle duysun.Duası gerçek olsun.

        Her kelimesine şükretsin.Tek satırına nazar değmesin.

        Amin.

        http://www.hurriyet.com.tr/magazin/yazarlar/14752717.asp?yazarid=113&gid=225

6 Temmuz 2010 Salı

Holografik TV Teknolojisi

Biz javayla falan uğraşaduralım, teknoloji aldı başını gidiyor:)

http://cnetturkiye.com/haberler/tuketici-elektronigi/4483-holografik-tvde-turk-parmagi-var

4 Temmuz 2010 Pazar

HELLO J2ME WORLD

         
             Bu yazımda J2ME ' e giriş yapmaya çalışacağım.J2ME ,  javanın cep telefonları , PDA lar , gömülü cihazlar gibi mobil cihazlar için geliştirilmiş versiyonudur.Birtakım profiller içerir.Bu profillerde belirli bir tipteki cihaz için gerekli minumum sınıf kütüphanesi ve cihazı destekleyen java sanal makinesi tanımlanır.Şimdi gelin bu profillere bir göz atalım:

             Foundation Profile : CDC tabanlı ve grafiksel arayüze sahip olmayan cihazlar için tanımlanmış bir profildir.

             Mobile Information Device Profile (MIDP) : CLDC tabanlıdır ve mobil bilgi cihazları için tanımlanmış bir profildir.

             Personal Basis ,Personal and RMI Profile : CDC ve Foundation Profile tabanlı cihazlar için grafik  ve RMI desteği sunar.

             Profiller aslında bir iş yapmazlar , sadece tanımlamaları içerirler.Profillerin tanımladıkları belirtimleri konfigürasyonlar gerçekleştirir.

             Connected Device Configuration (CDC) : Yeni nesil gömülü ve elektronik cihazlar için Foundation Profile ' ın gerçekleştirimidir.

             Connected Limited Device Configuration (CLDC) : Kaynak kısıtlı cihazların  gerçekleştirimidir.

         


             Biz bu yazıda "Mobile phones & entry-level PDAs" kısmıyla ilgilenıcez.Bu alanda gördüğünüz üzere KVM diye bir kavram var.Peki ne demektir KVM önce onu açıklayalım.KVM ; açılımı  Kuali VM olup,küçük cihazlar için optimize edilmiş java sanal makinesine verilen isimdir.
            Bu tanımlamalardan sonra yavaş yavaş uygulama kısmına geçelim.Öncelikle bir kavramdan daha bahsetmek istiyorum : Midlet. Midlet ; mobil cihazlar için yazılmış java uygulamalarına verilen isimdir. Midlet oluşturmak için  Netbeans  gibi bir IDE kullanabileceğimiz gibi  Java Wireless Toolkit gibi bir araç da kullanabiliriz.Yalnız burada dikkat etmemiz gereken JWTK nın bir IDE olmayışıdır.Yani Netbeans le otomatik yapılan işlemler JWTK de elle komut satırından yapılır.Tabi bir midletin nasıl yaratıldığını ve çalıştırıldığını aşama aşama görmek istiyorsanız bu araçla çalışabilirsiniz.http://www.mobilpro.com/makaleler/JAD_JAR_files/JAD_JAR_files.html adresinde bu aşamalar çok güzel bir şekilde anlatılmış.Ben buradaki uygulamada Netbeans'in son sürümü olan Netbeans 6.9 u kullandım.Uygulamamızın amacı Midlet yaratmayı öğrenmek olduğu için örneği oldukça basit tutmayı tercih ettim.Şimdi uygulamamıza geçelim:

             1.Programımızı açtıktan sonra File -> New Project diyerek proje türümüzü seçiyoruz.




2.Projemizin ismini ve konumunu belirliyoruz.                                                                 





3.Platform ve Device seçimlerimizi yapıyoruz.





4.Daha ayrıntılı şablon seçimimizi yapabiliyoruz.Ve Finish diyerek projemizi oluşturuyoruz.





5.Bu uygulamada amacımız (her dilde ilk uygulamamızda yaptığımız gibi:))ekrana "Hello J2ME World" yazdırmak olduğu için default olarak gelen text imizi değiştirmek için aşağıdaki ekranda "Screen" sekmesine tıklayarak cihazımızın ekran görüntüsünü açıyoruz.








6.Bu ekranda stringimizin textini sağ tarafta Properties'den "J2ME World :)" olarak değiştiriyoruz.





7.Artık projemizi derleyebiliriz.Çıktımız şu şekilde olacaktır:





Gördüğünüz gibi oldukça basit bi uyulama,zaten biz bişey yapmadık Netbeans saolsun bizim yerimize herşeyi otomatik yapıyor:) Peki  uygulamamızı bir de telefonumuz da çalıştırmak istersek ne yapmamız gerekiyor?Öncelikle çalştırılabilir dosyanın yani ".jar" dosyasının ve onun tanımlayıcı dosyası olan ".jad "dosyasının oluşturulması  gerekiyor.Netbeans bunu da oluşturuyor:)Ama bundan önce ".jar" ve ".jad" dosyaları tam olarak ne demek buna bi bakalım:

JAR :  Bir java uygulamasının sınıf dosyalarının ve uygulamanın çalışması için gerekli bütün dosyaların paketlenmesi ile oluşan çalıştırılabilir dosyadır.Bunların dışında JAR paketinde bir de "manifest.mf" isimli bir dosya vardır.Bu dosya JAR dosyasının içeriğini tanımlar.Yani içinde MIDlet-Name,MIDlet-Version,MIDlet-Vendor gibi değişkenler vardır.

    JAD : Bir java uygulamasının cihaza yüklenmeden önce cihazla uyumlu olup olmadığı,hafıza gereksinimi gibi kontrollerin yapılması gerekir.Aslında bu kontroller manifest dosyasıyla da yapılabilir ancak bunun için JAR dosyasının cihaza yüklenmesi ve açılması gerekir.Bu nedenle bu kontrolleri gerçekleştirmek için JAD dosyası oluşturulur.İçeriği manifest dosyasıyla aynıdır ancak manifest dosyası gibi JAR dosyasının içinde yer almaz.

 Jar dosyası projemizin klasörünün içinde "dist" klasörünün içinde bulunuyor.Bu dosyayı telefonumuza atıp uygulamayı yüklüyoruz.Daha sonra uygulamaya çift tıklayarak çalıştırdığımızda textimiz telefon ekranında gözüküyor. İşte bu kadaar:) Yalnız burada birşeyi hatırlatmam da yarar var projenizi eğer telefonda çalıştırmak istiyorsanız oluştururken telefonunuzla uyumlu olan Device Configuration ve Device Profile ı seçmeniz gerekiyor aksi takdirde uygulama telefonunuzda çalışmaz.Teefonunuzun desteklediği versiyonları öğrenmek için üstad Google'a "(telefonunuzun modeli) spec" yani Nokia N73 ise "Nokia N73 spec " diye sormanız yeterli oluyor.Son olarak Midletin çalışma mantığını daha iyi anlamak için aşağıdaki şekli inceleyelim :





Umarım faydalı bir yazı olmuştur.Bir başka yazıda görüşmek üzere...

Kaynaklar:
www.mobilpro.com
J2ME & M3G Sunusu - Oğuz Dönmez

10 Mayıs 2010 Pazartesi

DON GIOVANNI VE UŞAĞI PULCINELLA





 Eskişehir’e gelmeden önce de tiyatroya gitmeyi çok severdim.Hatta babamla abartıp bi günde 3 oyuna gitmişliğimiz bile vardırJ Oda tiyatrosu,küçük tiyatro,büyük tiyatro…Birden sanat aşkımız depreşti heraldeJ Ama Eskişehir’e gelince ve de komik bilet fiyatlarını görünce(gerçi zam geldi ama o kadar da olsun artık) Tiyatro en favori etkinliğim haline geldi…Her ayın 25 gibi bir sonraki ayın biletleri satılmaya başlanıyor ve bikaç gün içinde bitiveriyor.Bunun sebebi sadece ucuz olması değil tabi çok kaliteli EBB Sehir Titayrosu.4 yıldır neredeyse tüm oyunlara gittim ve sevmediğim belki bi tane çıkmışsa çıkmştır.Şu zamanda tiyatro gençlik arasında pek popüler değil gibi en azından sinemaya kıyasla.Nedeni ne bilmiyorum belki de sıkıcı gelıo çoğu insana,sinema kadar action yok ya,görsellik falan…ondan olsa gerek.Ama ben tiyatroda güldüğüm kadar hiçbir filmde güldüğümü hatırlamıyorum.Canlı bi kere,samimi,sıcak…Karşılıklı bi paylaşım var.Bu yüzden sanırım büyük bi haz veriyo bana.






Önceki gün Don Giovanni ve Uşağı Pulcinella adlı oyuna gittim müzikal komediydi ve çok eğlendim.Komikliği bi tarafa orkestranın olması,müzikler,danslar falan fevkaladenin fevkindeydiJ Özellikle uşak Pulcinella’a  bayıldım.Oyunun biletleri tükendi  ve Mayıs ayıyla da tükkanı kapatıyolar  ama önümüzdeki sezon en azından bi oyuna gidip bu zevki tadın derim ben… 
 
Copyright © AYCAN GÖKDEMİR | Theme by BloggerThemes & frostpress | Sponsored by BB Blogging