14 Şubat 2011 Pazartesi

Fatih Akın Filmleri

Kısa ve Acısız (Kurz und Schmerzlos)

Yapım: 1998
Yönetmen: Fatih Akın
Senaryo: Fatih Akın
Oyuncular: Mehmet Kurtuluş (Cebrail)
                 Alexandar Jovanovic (Bobby)
                 Adam Bousdoukos (Costa)
                 Regula Grauwiller (Alice)
                 İdil Güner (Ceyda)

Cebrail, Almanya’da yaşayan ve hapisten yeni çıkmış genç bir Türk göçmenidir. Hapishane Cebrail için dayanılması zor ancak öğretici bir tecrübe olmuştur. Kararı kesindir; her türlü yasadışı işten uzak duracaktır. Cebrailin yakın arkadaşları da kendisi gibi göçmendir. Yunanistanlı Costa hırsızlığı meslek edinmiştir. Sırp Bobby ise gözünü çok daha ciddi işlere dikmiştir; uyuşturucu pazarlayacaktır. Bobby’nin sevgilisi Alice ile Cebrail arasında ise önüne geçilemeyen bir yakınlık yaşanmaktadır. Bobby Arnavut bir mafya lideriyle bağlantıya geçer ve onun adına bazı pis işler çevirir. Başlarda işler iyi gidiyor gibi görünür ancak bir gece Bobby kendisine verilen bir görevi başaramaz ve elindeki tüm malı çaldırır. Artık ne Bobby ne de arkadaşları güvende değildir. Cebrail, Bobby’nin başlarına açtığı sorunu temizlemek zorundadır. Üç arkadaş, dostluklarını hayatlarıyla test etmek durumundadırlar. En ufak hatalarında Hamburg sokakları kana bulanacaktır.


Temmuzda ( Im Juli)


Yapım: 2000
Yönetmen: Fatih Akın
Senaryo: Fatih Akın
Oyuncular: Moritz Bleibtreu(Daniel Bannier)
                   Christiane Paul (Juli)
                   Mehmet Kurtuluş (İsa)
                   İdil Üner (Melek)

Daniel, öğrencileriyle yakın ilişki kurma konusunda isteksiz davranan, kendi dünyasına gömülü genç bir öğretmendir. Juli ile tanıştıktan sonra yaşamının yeni bir yön alabileceğine inanmaya başlar.

Çünkü kadın, Daniel'in falına bakmış ve hayatının aşkını pek yakında bulacağı konusunda onu ikna etmiştir. Bir süre sonra adam, bir Türk kızı olan Melek'e tutulur ve peşinden Türkiye'ye gitmeye karar verir. Juli ise Daniel'in peşindedir ve birlikte bir dolu süpriz ve tesadüflerle dolu keyifli bir yolculuğa başlarlar.        


Solino


Yapım: 2002
Yönetmen: Fatih Akın
Senaryo: Ruth Toma
Oyuncular: Moritz Bleibtreu(Giancarlo Amato)
                    Barnaby Metschurat (Gigi Amato)
                    Antonella Attili (Rosa Amato)
                   Tiziana Lodato (Ada)

Gigi ve Giancarlo'nun babaları Romano ve anneleri Rosa, Apulia’daki evlerini terk edip Almanya’ya taşınmaya karar verirler. Duisburg’un gelişmekte olan tekdüze endüstriyel kesiminde mahallenin ilk pizza dükkanını açarlar.

Romano, restorant sahibi rolüne kolayca alışır fakat Rosa ülkesini özlemektedir ve özlemi yıllar geçmesine rağmen dinmek bilmez. Oğulları Gigi ve Giancarlo ise içine girdikleri yeni sosyal ortamda buldukları özgürlüğün tadını çıkarırlar. İkisi de, aynı kadına aşık olunca araları açılır ve Gigi annesiyle Solino’ya dönmeye karar verir.
                                                                                                                                                                     
                                                                                                                                                      
                                                                                           
Duvara Karşı (Gegen Die Wand)


Yapım: 2004
Yönetmen: Fatih Akın
Senaryo: Fatih Akın
Oyuncular: Birol Ünel (Cahit)
                   Sibel Kekilli (Sibel)
                   Catrin Striebeck
                   Güven Kıraç

Bir intihar girişiminin ardından psikiyatrik tedavi gören alkol ve uyuşturucu bağımlısı Cahit, 40 yaşlarında, Türk kökenli bir Alman'dır. Doktoru ona "İntihar, hayatına nokta koymanın tek yolu değildir" dediğinde yaşama yenidne başlaması gerektiğini anlar. Yine bir Türk olan Sibel, genç ve güzel bir kızdır ve tutucu ailesinin baskısı onu da bir intihar denemesine sürüklemiştir. Sibel, ölmeyi denemek yerine başka bir kurtuluş yolu getirir aklına: yeni tanıştığı Cahit'ten onunla evlenmesini ister!
Hayatına biraz olsun anlam katmak, biraz da kıza yardım etmek isteyen Cahit bu teklifi kabul eder. İlk başta tek paylaşımları, birlikte oturdukları küçük daire olan ikiliye, kaderin oynayacağı bir oyun vardır elbette:
aşktan kaçabilir misiniz?


                                                              
Yaşamın Kıyısında (Auf der anderen Seite)


Yapım: 2006
Yönetmen: Fatih Akın
Senaryo: Fatih Akın
Oyuncular:Nurgül Yeşilçay (Ayten Öztürk)
                Nejat İşler (Baki Davrak)
                Patrycia Ziolkowska(Lotte Staub)
                Nursel Köse (Yeter)

Emekli bir dul olan Ali, yalnızlığını paylaşacağı bir insan ararken fahişelik yapan Yeter ile tanışır. Para karşılığı kendisine hayat arkadaşlığı yapmasını öneren Ali'nin bu teklifini, Alman Dili Ve Edebiyatı profesörü olan oğlu Nejat hiç olumlu karşılamaz. Nejat için Yeter'in mesleği kabul edilemezdir.

Yeter'in asıl amacının Türkiye'de üniversitede okuyan kızını rahat ettirebilmek olduğunu anlayan Nejat, Yeter'e karşı daha sıcak duygular beslemeye başlar. Yeter'in beklenmedik bir şekilde hayatını kaybetmesi üzerine kızı Ayten'i bulmaya Türkiye'ye gitmeye karar veren Nejat'ın hayatında bambaşka bir pencere açılacaktır.

Bilmediği tek şey ise, siyasi eylemci Ayten'in kaçak olarak Almanya'ya gitmiş olduğudur. Nejat'ın tahmin ettiği zamanda ve şekilde olmasa da, bir gün tüm bu karakterlerin yaşamları beklenmedik bir şekilde kesişecektir.

 Aşka Ruhunu Kat ( Soul Kitchen)


Yapım: 2009
Yönetmen: Fatih Akın
Senaryo: Fatih Akın, Adam Bousdoukos
Oyuncular: Adam Bousdoukos(Zinos Kazantsakis)
                   Moritz Bleibtreu (Illlias Kazantsakis)
                   Birol Ünel (Shayn Weiss)
                   Anna Bederke (Lucia Faust)


Restoranında sunduğu özensiz ve ucuz yemeklerden para kazanamadığı için başı derde girdiği bir dönemde, sevgilisiyle de- hem duygusal hem fiziki olarak- arası açılan Zinos'un, 'star' bir ahçıyı işe alarak nasıl yeni bir müşteri kitlesine kavuştuğu, son derece esprili bir dille anlatılıyor.




11 Şubat 2011 Cuma

Yazılım Mühendisliği, Yazılım Mühendisliği Süreçleri

Yazılım Mühendisliği 1993 IEE tanımıyla; "sistemli, düzenli, ölçülebilir yaklaşımın yazılım geliştirmede, yazılımın işlenilmesinde ve bakımında uygulanmasıdır, başka deyişle mühendisliğin yazılıma uygulanmasıdır." Yazılım için en önemli özellik, bir yazılımın sürdürülebilir, güvenilir, verimli ve kullanılabilir olmasıdır.Günümüzde bir çok yazılım türü mevcut. Bunlardan bir kaç örnek verecek olursak; sistem yazılımları, gerçek zaman yazılımları, iş yazılımları, mühendislik ve bilimsel yazılımlar, gömülmüş yazılımlar,yapay zeka yazılımları. Bu yazılımlar çeşitli alanlarda kullanılmakta. Bir yazılım üretimi yaparken, bu süreçte öncelikle belirteçlerin hazırlanmasını sağlamalıyız. Burada yazılımın işlevselliği ve işlemlere koyulmuş sınırlamalar tanımlanmalıdır. Yani sistem ne yapar ve geliştirim kısıtları nelerdir. Geliştirme bölümünde, daha önceden belirlemiş olduğumuz belirteçlere göre yazılımın üretimini sağlarız. Ürettiğimiz bu yazılımın doğruluğunu test etmeliyiz. Bu süreçte yazılım müşteri isteklerini karşılıyor mu sorusuna cevap ararız. Bu doğruluğu yaptıktan sonra yazılımımız evrim sürecine geçer. Bir yazılımın en uzun süreci evrimdir. Çünkü müşteri istekleri sürekli değişir ve hatalar her an çıkabilir.

Çeşitli yazılım geliştirme modelleri mevcut. Şelale modeli, evrimsel geliştirme, formal sistem geliştirme, yeniden kullanılabilirliğe dayalı geliştirme bu modellere örnek olarak verilebilir. Bunlardan en çok kullanılan şelale modeli ve evrimsel geliştirmeyi inceleyelim.

Şelale Modeli (Waterfall Model):
Faaliyetlere ayrı süreçler gibi bakılıyor.


Gereksinimlerin Belirlenmesi: Sistem servisleri ve sınırları analiz edilir, sistem tanımlanması yapılır.
Sistem ve yazılım tasarımı: Donanımın ve yazılımın gerekliliklerine göre bölme yapılır.
Çalıştırma ve Birim Denemesi: Yazılım dizaynı uygulanır ve yazılımın birimi test edilir.
Bütünleşik ve Sistem Denemesi: Yazılımın birimleri birleştirilir ve bütün bir sistem olarak test edilir.Yazılım bu işlemin ardından müşteriye gönderilir.
Bakım:Sistem işletilir. Hatalar düzeltilir, uygulama geliştirilir.Genellikle uzun fazdır.

Şelale modelinin yetersiz yönü, süreç tamamlandıktan sonra değişikliklerin yapılmasının zorluğudur. Projenin farklı aşamalara esnek biçimde bölünmemesi, değişen müşteri gereksinimlerini yerine getirmekte zorluklar yaratır.
Şelale modeli, gereksinimlerin yalnızca çok iyi tanımlandığı takdirde uygun modeldir. Şelale modeli yavaş yavaş popülerliğini yitirmektedir.

Evrimsel Geliştirme (Iterative Development) :
Keşif Geliştirmesi ve Prototip Geliştirme olarak ikiye ayrılır.


Keşif Geliştirmesi:Müşteri ile çalışarak gereksinimlerin keşfi yapılır.Başlangıç ana hatlarıyla verilmiş belirteçten son sisteme doğru evrimsel geliştirme yapılır. Sistemin anlaşılır kısmı ile başlanılmalıdır. Müşterinin önerdiği yeni özellikleri ilave etmekle evrimleşir.Daha iyi anlaşılır ve yüksek öncelikli gereksinimler ile başlanır.
Prototip Geliştirme: Sistem için gereksinimlerin en iyi tanımlanması yapılır. Zayıf anlaşılır müşteri gereksinimleri ile başlar.Bunun nedeni onları daha iyi anlamaktır.Çünkü çok iyi anlaşılan gereksinimler için prototipe gerek yoktur.

Evrimsel geliştirmenin sorunları; tüm geliştirme süreci iyi görülmüyor, sistemler çoğu zaman zayıf yapılandırılmış oluyor.Örneğin hızlı prototip oluşturan diller gibi özelliklere sahip olunması gerekir.
Küçük ve orta boyutlu projeler için daha uygundur. Büyük sistemlerin bazı bölümleri için örneğin arayüz yapımında kullanılabilir. Kısa yaşam devirli sistemler için daha uygundur.


3 Şubat 2011 Perşembe

Java Applet: MouseListener

Java Applet'de mouse listener olaylarını inceleyelim. Mouse Listener default olarak gelen ve bulunması zorunlu olan bir kaç fonksiyon içeriyor. Bunlar; mouseClicked, mousePressed, mouseReleased, mouseEntered, mouseExited. İngilizcelerinden de anlaşılacağı üzere mouse'un hangi olaya tepki vermesini istiyorsak, o fonksiyonun içini dolduruyoruz.

Mouse listener olaylarını örneklendirecek olursak; sabit bir applet boyu oluşturalım. İçerisine dikdörtgen şekli çizelim. Applet sınırlarına faremiz ile gelindiğinde ve Applet içinde olduğumuzda, panelde "mouse applet içinde" yazdıralım, fare ile Applet dışına çıktığımızda ise "mouse applet dışında" yazdıralım. Applet'de herhangi bir yere tıkladığımızda, tıklanan koordinat mouseClicked fonksiyonu içerisinde yazılan kod ile alınıp, Applet'e yazdırılsın.

Bu örneğin Java kodu aşağıdaki gibidir.

import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class MouseClickTesting extends Applet implements MouseListener
{
 int xcoor;
 int ycoor;
 int rectxcoor,rectycoor,rectwidth,rectheight;
 boolean mouseEnter;
 boolean rectClick;
 
 public void init() 
 {
  rectxcoor = 20;
  rectycoor = 20;
  rectwidth = 100;
  rectheight = 50;
  addMouseListener(this);
 }
 
 public void paint(Graphics g) 
 {
  this.resize(500, 300);
  g.setColor(Color.red);
  g.fillRect(rectxcoor,rectycoor,rectwidth,rectheight);
  g.setColor(Color.black);
  g.drawString("("+xcoor+","+ycoor+")",xcoor,ycoor);
  if (rectClick) g.drawString("Dikdörtgen icine tikladiniz",20,120);
  else g.drawString("Dikdörtgen disina tikladiniz",20,120);
  
  if (mouseEnter) g.drawString("Mouse applet icinde",20,160);
  else g.drawString("Mouse applet disinda",20,160);
 }
public void mouseClicked (MouseEvent me) {
 xcoor = me.getX();
 ycoor = me.getY();
  if (xcoor > rectxcoor && xcoor < rectxcoor+rectwidth && ycoor >rectycoor && ycoor < rectycoor+rectheight) 
   rectClick = true;
    else 
     rectClick = false;
 
  repaint();
 }
 public void mousePressed (MouseEvent me) {}
 public void mouseReleased (MouseEvent me) {}
 public void mouseEntered (MouseEvent me) {
  mouseEnter = true;
  repaint();
 }
 public void mouseExited (MouseEvent me) {
  mouseEnter = false;
  repaint();
 }
}  
  

Kolay gelsin.

1 Şubat 2011 Salı

Owl Belgesinde Java ile İşlemler Yapmak


Owl belgesinde hazırladığımız sistemde, java ile bazı işlemler gerçekleştirelim. Bunun için öncelikle ide'mize bazı kütüphaneler eklemeliyiz. Owl için mevcut kütüphaneler jena,owlapi vb.. İşlemlerim için gerekli olacak owlapiyi Eclipse'e import ediyorum. Projem basit bir e-magaza sistemi. Bu sistemi protege ile açıyorum. Şekilden de görüldüğü üzere musteri isminde bir sınfım var. Musteri1 ve musteri2 isminde individuallerim var. 




















Şimdi Id ile typeName isimli sınıfın bir individual'ini yaratıp, bu individual'ın porpName isimli objectProperty'sinin değerini parametre olarak aldığı indv ile dolduralım. Elde ettiğimiz yeni ontoloji yapısını sabit diske kaydedip, geri dönüş değeri olarak geri döndürelim.
Fonksiyonumuzu; public OWLOntology addIndividual(String ID, String typeName, String propName, OWLIndividual indv) olarak yazalım. Yani bu ontolojimizde musteri sınıfına ait individual yaratıyoruz(ya da var olan indivual'i kullanıyoruz), bu individual'i yarattığımız ürün individual'i ile birleştiriyoruz.

Bu işlemden sonra ontolojimiz şekildeki gibi olacaktır.


Şekilden de görüldüğü üzere musteri2 individual'ine masaustu ürünü verildi. Musteri2 artık masaustu2 ye sahiptir.


Diğer bir fonksiyon olarak; tipi parametre olarak elde edilen typeName isminde OwlClass olan tüm individual'lerin silinmesi işleminde sorumlu olsun. Elde ettiği yeni ontoloji yapısını yine sabit diske kaydetsin ve dönüş değeri olarak döndürsün.Bu işlemde fonksiyonumuz; public OWLOntology removeIndividuals(String TypeName) .

Bu işlemden sonra ise ontolojimiz şekildeki gibi olacaktır.





















Görüldüğü üzere Musteri sınıfındaki tüm individualler silindi. 


Bu işlemlerin yapıldığı Java kodu aşağıdadır. 


import java.io.File;
import java.util.Collections;
import java.util.Set;
import org.semanticweb.owlapi.apibinding.OWLManager;
import org.semanticweb.owlapi.io.SystemOutDocumentTarget;
import org.semanticweb.owlapi.model.AddAxiom;
import org.semanticweb.owlapi.model.IRI;
import org.semanticweb.owlapi.model.OWLClass;
import org.semanticweb.owlapi.model.OWLClassAssertionAxiom;
import org.semanticweb.owlapi.model.OWLDataFactory;
import org.semanticweb.owlapi.model.OWLIndividual;
import org.semanticweb.owlapi.model.OWLObjectProperty;
import org.semanticweb.owlapi.model.OWLObjectPropertyAssertionAxiom;
import org.semanticweb.owlapi.model.OWLOntology;
import org.semanticweb.owlapi.model.OWLOntologyCreationException;
import org.semanticweb.owlapi.model.OWLOntologyManager;
import org.semanticweb.owlapi.model.OWLOntologyStorageException;
import org.semanticweb.owlapi.model.PrefixManager;
import org.semanticweb.owlapi.model.UnloadableImportException;
import org.semanticweb.owlapi.util.DefaultPrefixManager;
import org.semanticweb.owlapi.util.OWLEntityRemover;

public class OwlTest{
 public static void main(String[] args) 
 {
  try {   
   OWLOntology ontology = null;
   OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
   OWLDataFactory dataFactory = manager.getOWLDataFactory();
   String base = "http://www.semanticweb.org/ontologies/2011/0/Ontology1294596587406.owl#";
         PrefixManager pm = new DefaultPrefixManager(base);
         
         OWLClass sinifim=dataFactory.getOWLClass(":Masaustu",pm);
         ontology = manager.loadOntologyFromOntologyDocument(new File("E:\\projesonhali.owl"));
   OWLIndividual urunIndv = dataFactory.getOWLNamedIndividual(IRI.create(base+"masaustu2"));
   OWLClassAssertionAxiom sinifIndBirlestirim=dataFactory.getOWLClassAssertionAxiom(sinifim,urunIndv );
   manager.addAxiom(ontology, sinifIndBirlestirim);
   manager.saveOntology(ontology);
   
   //addIndividual("musteri2", "Musteri", "sahiptir", urunIndv);
   removeIndividuals("Musteri");
   
  } catch (OWLOntologyCreationException e) {
   
  }
  catch (OWLOntologyStorageException e) {   
  } 
 }

public static OWLOntology addIndividual(String ID,String typeName,String propName,OWLIndividual indv) throws OWLOntologyStorageException{
   OWLOntology magazaontology = null;
    try {          
             OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
             File file = new File("E:\\projesonhali.owl");
             magazaontology = manager.loadOntologyFromOntologyDocument(file);
             System.out.println("Loaded ontology: " + magazaontology);
             IRI documentIRI = manager.getOntologyDocumentIRI(magazaontology);
             System.out.println("    from: " + documentIRI);             
             
             OWLDataFactory dataFactory = manager.getOWLDataFactory();
String base = "http://www.semanticweb.org/ontologies/2011/0/Ontology1294596587406.owl#";
             PrefixManager pm = new DefaultPrefixManager(base);
             
             OWLIndividual newIndividual = dataFactory.getOWLNamedIndividual(IRI.create(base + ID));
             OWLClass sinifAdi = dataFactory.getOWLClass(":"+typeName, pm);
             OWLClassAssertionAxiom SinifIndBirlesimi = dataFactory.getOWLClassAssertionAxiom(sinifAdi, newIndividual);
             manager.addAxiom(magazaontology,SinifIndBirlesimi);
             manager.saveOntology(magazaontology, new SystemOutDocumentTarget());

             OWLObjectProperty owlProperty = dataFactory.getOWLObjectProperty(propName, pm);
             
             OWLObjectPropertyAssertionAxiom propertyekleme = dataFactory.getOWLObjectPropertyAssertionAxiom(owlProperty, newIndividual, indv);
             AddAxiom aksiomekle = new AddAxiom(magazaontology, propertyekleme);
             manager.applyChange(aksiomekle);                                  
                        
             manager.saveOntology(magazaontology, IRI.create(file.toURI()));
             System.out.println();
             System.out.println();
             manager.saveOntology(magazaontology, new SystemOutDocumentTarget());       
         }     
          catch (UnloadableImportException e) {
             System.out.println("Could not load import: " + e.getImportsDeclaration());
             OWLOntologyCreationException cause = e.getOntologyCreationException();
             System.out.println("Reason: " + cause.getMessage());
         }          
          catch (OWLOntologyCreationException e) {
             System.out.println("Could not load ontology: " + e.getMessage());
         }
          return magazaontology;
  }

  public static OWLOntology removeIndividuals(String typeName)
  {
   OWLOntology magazaOntology = null;
    try
   {
    File newFile = new File("E:\\projesonhali.owl");
    OWLOntologyManager manager = OWLManager.createOWLOntologyManager();
    OWLDataFactory dataFactory = manager.getOWLDataFactory();
    magazaOntology = manager.loadOntologyFromOntologyDocument(newFile);
    String base = "http://www.semanticweb.org/ontologies/2011/0/Ontology1294596587406.owl#";
    PrefixManager pm = new DefaultPrefixManager(base);
    
    OWLEntityRemover remover = new OWLEntityRemover(manager,Collections.singleton(magazaOntology));
    OWLClass Sinif = dataFactory.getOWLClass(":"+typeName, pm);
    Set < owlindividual >  SilinecekIndv = Sinif.getIndividuals(magazaOntology);
    for (OWLIndividual ind : SilinecekIndv) 
    {
       ind.asOWLNamedIndividual().accept(remover);
    } 
    
    manager.applyChanges(remover.getChanges()); 
    remover.reset();
    manager.saveOntology(magazaOntology);
    System.out.println(SilinecekIndv);
    }
   catch (OWLOntologyCreationException e) {
      System.out.println("Could not load ontology: " + e.getMessage());
      } 
   catch(Exception e)
   {
    System.out.println(e.getMessage());
   }
   return magazaOntology;
  } 
 }

Kolay gelsin.