Ocak ayında İzmir Devlet Tiyatroları

İzmir Devlet Tiyatrosu Ocak ayında birçok oyun sergiliyor. Üye olduktan sonra boş yer durumunu görme ve bilet alma işlemlerini internetten de yapabilirsiniz.

Ubuntu Linux üzerinde USB hoparlör

Birkaç hafta önce İstanbulda dolanırken usb bağlantılı bir çift hoparlör almıştım. XP de ses alabilmek için kutudan çıkan sürücüyü yüklemek gerekti. Bu linuxta sıkıntı yaratacaktı ama biraz arayınca çözümü buldum.

Ubuntu ayarlarını tek ses çıkışına göre yapıyordu, bu da varsayılan üzerinden oluyordu zaten. Yapılması gereken ses çıkışını değiştirmekti. Önce usb'yi takıp şu komut ile test edelim:
cat /bin/bash > /dev/dsp
Varsayılan höparlörden ses gelmeli, Ctrl+C ile durdurabilirsiniz. Şimdi ikinci hoparlör yani usb için /dev/dsp1 ile aynı komutu çalıştıralım. Ses geldi ise usb hoparlörümüz de çalışıyor demektir.

Son işlem kullandığınız müzik programında (örneğin xmms)usb çıkışını tanıtmak. Bunun için çıkış eklentisini (Output Plugin) ALSA olarak değiştirin ve ses cihazı olarak USByi gösterin (Options ->preferences). Ve deneyin.

Kaynak : http://www.michaeldolan.com/258

Film önerileri




Kes (1969)- Ken Loach
(They beat him. They deprived him. They ridiculed him. They broke his heart. But they couldn't break his spirit.)
Fakir bir şekilde büyümekte olan İngiliz bir çocuğun yaşadıkları, karşılaştıkları anlatılıyor. Çocuğun bir doğan büyütmeye çalışması hayat içerisinde en önemli mutluluğu bu uğraşın ona vermesi oldukça güzel anlatılmış. Filmin etkileyici sahneleri var. Mesela eğitimin disiplin ve dayak yapılan bir şeymiş gibi gösterilmesi ve fakir çocukların okulda karşılaştıkları farklı davranışlar iyi anlatılmış. Bir sahne müdürün dayak atma sahnesi bence bu konuyu ve suçsuz çocukların da bu dayak mantığıyla ne kadar kötü hale sokulabileceği oldukça güzel anlatmış.

(Film boyunca aklıma daha önce Ozzy Osbourne'den dinlediğim Working Class Hero parçası geldi nedense)

Maden (1978) - Yavuz Özkan
Politik sinema dönemi sayabileceğimiz bir zamanda Tarık Akan ve Cüneyt Arkın ikilisinin beraber oynadığı ve oldukça ilginç bir örnek bu film. Maden işçilerinin patronla ve patronla anlaşmış olan "sarı" sendikayla çatışmalarını, hayatlarından kesitlerini ve grevlerini anlatan önemli bir film.

Office Open XML

Microsoft'un yeni icadı. Ortak bir dosya biçimi ihtiyacının farkına varan Microsoft, bu ihtiyacı karşılamak için Office Open XML adını verdiği bu yeni standartı kabul ettirmeye çalışıyor. Microsoft Open Office tarafından tehdit edilen ofis piyasasını koruyabilmek için çok önceleri zaten ortaya çıkmış olan ODF'a rakip olarak bu yeni standartı ortaya atıyor. XML tabanlı bu standartın bir sorunu, Linux kullanıyorsanız henüz Open Office destek vermediği için (3.0 sürümünde verecek) açma şansınız yok. Bunun yerine eski doc biçimine çevirip açmanız gerekiyor. Ben OpenXML'in standart olarak kabul edilmesine karşı çıkıyorum ve sizi de karşı çıkmaya çağırıyorum. Her ne kadar buna karşı çıksam da, Office 2007 kullanan öğrencilerin ve kişilerin pdf göndermek yerine docx biçiminde dosya göndermesi, beni bir şekilde çevirim işini yapmaya zorladı. Bir kaç dönüştürme sitesini denediğimde en iyi sonucu Zamzar'da aldım. Ayrıca bazı Open Office dağıtımları da bu biçimi destekliyor (aşağıdaki bağlantıda bu listeyi görebilirsiniz). Bitirirken vurgulamak isterim ki, sadece okunmaya yönelik dosyaların PDF olarak gönderilmesi en iyi çözümdür :).

Bağlantılar:
How do I open Microsoft Office 2007 files?

DOM ile hazırlanmış XML yapısını dosyaya aktarma

Bugün derste öğrencilerden birinin sorusu üzerine DOM'da XML yapısını dosyaya aktarmayı gösteren örnek bir uygulama hazırladım. Bu örnek uygulamada XML yapısının çalışma zamanında hazırlanmasını ve işlem bittikten sonra dosyaya aktarılmasını görebilirsiniz.

DOMXMLDosya.java:
import java.io.File;
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Node;

/**
* Bir xml belgesi yaratma ve belgeyi dosyaya kaydetme
*
* @author Tahir Emre KALAYCI, http://kodveus.blogspot.com
* @version $Id: DOMXMLDosya.java,v 1.0 11.12.2007 09:36:55
*/
public class DOMXMLDosya {
public static void main(final String[] args) throws IOException {
// Sinifi ilkleyelim
final DOMXMLDosya dw = new DOMXMLDosya();
// XML belgesini olusturalim
final Document doc = dw.docOlustur();
// XML belgesini dosyaya kaydedelim
dw.xmlDosyayaKaydet(doc, "deneme.xml");
}

/** XML belgesini olusturalim */
protected Document docOlustur() {
try {
// Bos belgeyi yaratiyoruz
final DocumentBuilderFactory fact = DocumentBuilderFactory
.newInstance();
final DocumentBuilder parser = fact.newDocumentBuilder();
final Document doc = parser.newDocument();

// Kok elemani olarak "Kisiler" yaratiliyor
final Node kok = doc.createElement("Kisiler");
// Belgemize kokumuzu ekleyelim
doc.appendChild(kok);

// Kokumuze yeni bir kisi ekleyelim
kisiEkle(doc, kok, new Kisi("Mustafa", "Az", "1901"));
// Kokumuzu yeni bir kisi ekleyelim
kisiEkle(doc, kok, new Kisi("Ahmet", "Çok", "1902"));

// Yaratilan DOM XML belgesini dondurelim
return doc;

} catch (final Exception ex) {
ex.printStackTrace();
return null;
}
}

/**
* Bu metodun amaci parametre olarak verilen kisiyi xml belgesine eklemek
*
* @param doc
* Eklenecegi xml belgesi
* @param kok
* Eklenecegi kok
* @param kisi
* Kisinin bilgilerini tutan sinif
*/
private void kisiEkle(final Document doc, final Node kok, final Kisi kisi) {
// Kisi elemanini olusturuyoruz
final Node kisiNode = doc.createElement("Kisi");
// Kokumuze ekliyoruz
kok.appendChild(kisiNode);

// Kisinin isim elemanini olusturuyoruz
Node node = doc.createElement("Ad");
// Kisinin isim elemanini kisi elemanina ekliyoruz
kisiNode.appendChild(node);
// Isim bilgisini ekliyoruz
node.appendChild(doc.createTextNode(kisi.getAd()));

// Kisinin soyad elemanini olusturuyoruz
node = doc.createElement("Soyad");
// Kisinin soyad elemanini kisi elemanina ekliyoruz
kisiNode.appendChild(node);
// Soyad bilgisi ekliyoruz
node.appendChild(doc.createTextNode(kisi.getSoyad()));

// Kisinin numara elemanini olusturuyoruz
node = doc.createElement("Numara");
// Kisinin numara elemanini kisi elemanina ekliyoruz
kisiNode.appendChild(node);
// Numara bilgisini ekliyoruz
node.appendChild(doc.createTextNode(kisi.getNumara()));
}

/**
* Bu metod DOM xml belgesini bir dosyaya kaydetmemize yarar
*
* @param doc
* kaydedilecek DOM XML belgesi
* @param filename
* kaydedecegimiz dosya adi
*/
public void xmlDosyayaKaydet(final Document doc, final String filename) {
try {
// DOM belgesini yazma icin hazirliyoruz
final Source source = new DOMSource(doc);

// Cikti dosyasini hazirliyoruz
final File file = new File(filename);
final Result result = new StreamResult(file);

// DOM belgesini dosyaya yaziyoruz
final Transformer xformer = TransformerFactory.newInstance()
.newTransformer();
xformer.transform(source, result);
} catch (final TransformerConfigurationException e) {
e.printStackTrace();
} catch (final TransformerException e) {
e.printStackTrace();
}
}
}

Kisi.java:

public class Kisi {
String ad;
String numara;
String soyad;

public Kisi(final String _ad, final String _soyad, final String _numara) {
ad = _ad;
soyad = _soyad;
numara = _numara;
}

public String getAd() {
return ad;
}

public String getNumara() {
return numara;
}

public String getSoyad() {
return soyad;
}

public void setAd(final String ad) {
this.ad = ad;
}

public void setNumara(final String numara) {
this.numara = numara;
}

public void setSoyad(final String soyad) {
this.soyad = soyad;
}
}

Oluşan XML Dosyası:

Yeni bir eclipse ve eklentilerim

Eclipse'i yeniden kurmam gerektiğinde hangi eklentileri ve yardımcı uygulamaları da kurmam gerektiğini buraya not ediyorum:

  • Subversion
  • Visual Editor
  • Maven
  • JUnit
  • ArgoUML
  • Azzurri Database Modeling Plugin
  • Dia Diagram Editor
  • SQuirrel SQL
  • Eclipse SQL Explorer
  • Ajax jMaki
  • iReport
  • PhpEclipse
Bunların dışında eklemek isteyebileceğiniz seçeneklere buradan bakabilirsiniz:
http://www.eclipseplugincentral.com

AMD64, Ubuntu, firefox ve flash player ayarları

AMD64 bilgisayarlarda Ubuntu üzerinde çalışabilecek bir flash oynatıcı henüz yok. Yinede buradaki yöntemi uygularsanız, x86 mimarisi için hazırlanmış olan versiyonunu kullanabilirsiniz.

31 günde 8000 km

Askerliğim bitti. Bugün tekrar sivil oluşumun 8. günü :) Son 1 ayda izne çıkma, iş arama ve askerliği bitirmek için toplam 8000 km yol gittim ve geldim. Sonra tekrar geldim ve gittim; elimde çantalar, koliler sürekli yoldayım, gecelerim otobüslerde geçti.

2 Kasımda Ankara'dan yola çıktım, ve şu yolları izledim:

Ankara-İstanbul-İzmir-Antakya-Ankara-İstanbul-Amasya-Ankara-İzmir-İstanbul-İzmir

Bu gidiş gelişleri tam 31 günde yaptım; ellerimde, sırtımda, göğsümde hep yük taşıdım, nasıl daha fazla taşınır iyi öğrendim.

Bu kadar yol çektikten sonra sonuçta yine İzmir'deyim, yani boşuna yorulmuşum :)

Not: Bu 8000 km ye şehir içlerindeki yollar dahil değil, belediye otobüsleri ayrı bir dert.

Python Sınıf Örneği

Python'da yeni bir şeyler öğrenmek için sınıfların nasıl oluşturulduğuna dair örnek yaptım. Bir metin dosyasında bulunan sahaları tab karakteriyle ayrılmış olan öğrenci bilgilerini (her satırda bir öğrenci bilgisi olacak şekilde) okuyup Ogrenci sınıfı şeklinde örnekler oluşturan ve bu örnekleri ekrana basan bir proje yaptım.

Aşağıda bu proje için yazmış olduğum sınıfları açıklamalarıyla inceleyebilirsiniz. Java'da yazabileceğimden daha az kod yazdığım bir gerçek. Metin hallerini en alttaki bağlantıdan indirebilirsiniz.

Metin Dosyası Yapısı (ogrenciler.txt)(sahalar \t - tab - karakteriyle ayrılmıştır)

1    Ali Veli Kirkdokuzelli    4    1998
2    Suphi Suphan    3    1999
3    Mustafa Canveren    2    2000
4    Ahmet Bitiveren    1    2001

Ogrenci sınıfı (Ogrenci.py):

#Ogrenci bilgilerini tuttugumuz sinif
class Ogrenci:
    #Yeni ogrenci yaratmak icin ilgili bilgilerini girmek gerekiyor
    #__init__ bu sinifin yapicisi oluyor
    def __init__(self, numara,isim,sinif,girisYili):
        #Basina __ ekleyince private degisken oluyor
        self.__isim = isim
        self.__numara = numara
        self.__sinif = sinif
        self.__girisYili = girisYili

    #Ogrenci bilgileri metin olarak donduren metod
    def toString(self):
        return self.__numara+' '+self.__isim+' '+self.__sinif+' '+self.__girisYili

OgrenciAraclar sınıfı (OgrenciAraclar.py):

from Ogrenci import *
#Bu metodun amaci parametre olarak adi verilen dosyayi acmak
#ve icerisindeki ogrenci bilgilerini bir dizi veri yapisina aktarmaktir
class OgrenciAraclar:
    def ogrencileriOku(self,dosyaAdi):
        #Dosyayi okumak icin aciyoruz
        f=open(dosyaAdi,'r')
        #Dosyadaki tum satirlari okuyoruz
        satirlar =f.readlines()
        #Ogrenci listesini yaratiyoruz
        ogrenciler = []
        #Dosyadan okudugumuz her satir icin
        for ogrenciBilgisi in satirlar:
            #Satirdaki ogrenci bilgisinden ogrenci nesnesini olusturup
            #listemize ekliyoruz
            ogrenciler.append(self.__ogrenciUret(ogrenciBilgisi))
        #ogrenci listemizi donduruyoruz
        return ogrenciler

    #Bu metodun amaci string olarak verilen ogrenci bilgisinden
    #Ogrenci sinifi ornegini olusturup dondurmektir
    def __ogrenciUret(self,ogrenciBilgisi):
        #String icerisindeki satir sonu karakterini yokediyoruz ve bosluklari kaldiriyoruz
        ogrenciBilgisi = ogrenciBilgisi.replace('\n',' ').strip()
        #Ogrenci bilgisi stringini saha parcalarina ayiriyoruz
        tokenler = ogrenciBilgisi.split('\t')
        #yeni ogrenci nesnesini tokenlerden olusturup donduruyoruz
        return Ogrenci(tokenler[0],tokenler[1],tokenler[2],tokenler[3])

AnaProgram sınıfı (AnaProgram.py):

#OgrenciAraclar icerisindeki tum siniflari kullanacagiz
from OgrenciAraclar import *
#Yukaridaki metodu cagirip deniyoruz
ogrenciAraclar = OgrenciAraclar()
ogrenciler = ogrenciAraclar.ogrencileriOku('ogrenciler.txt');
#Okunan ogrenci bilgilerini ekrana yaziyoruz
for ogrenci in ogrenciler:
    print ogrenci.toString()


Bu kaynak kodları sınıf ismini kullanarak ilgili *.py dosyasına yazın (yazılmışını alttaki bağlantıdan indirebilirsiniz), öğrenci bilgilerini ogrenciler.txt dosyasına yazın ve tüm dosyaları aynı dizinde toplayın. python AnaProgram.py komutunu komut satırında girerek projeyi çalıştırabilirsiniz.

Kaynak kodlar için tıklayabilirsiniz.

Not: Biçimlendirme için http://formatmysourcecode.blogspot.com/ kullanıldı.