ISO dosyayı bağlama ("iso mount")

Linux kullanıyorsanız ve indirdiğiniz bir ISO dosyasını cd'ye yazmadan incelemek istiyorsanız bunun iki yolu vardır. Biri daha sık kullandığım ve daha kolay olan "Archive Manager" (Gnome File Roller) kullanarak dosyayı açma işlemidir. Diğer yöntem ISO dosyasını bağlama (basiretini bağlamak değil, ingilizce "Mount" etmek) işlemidir. Ben burada bu ISO bağlama işleminin komutunu vereceğim. Geçen hafta böyle bir komuta ihtiyacım olmuştu ancak karşılaştım. Unutmayın bazı dosyaların arşiv yönetici ile açılması işe yaramaz bu durumlarda ISO dosyasını bağlayarak normal bir CD'ymiş gibi çalıştırmalısınız. Gelelim komuta:

mount -t iso9660 isodosyasi.iso /media/iso -o loop

isodosyasi.iso dosyasini /media/iso dizini şeklinde bağlıyoruz. Siz dilediğiniz yere bağlayabilirsiniz. Komut bu kadar kolay.

Wikitravel

Gezi meraklılarına http://www.wikitravel.org/ sitesini tavsiye ederim. Sitedeki ifadeye göre tam, güncel ve güvenilir bir gezi rehberi kendileri. İnsanın aklına (mesela benim) Otostopçunun galaksi rehberi geliyor.

Not: Sanırım Türkçe desteği yok, aslında sanmaktan öte öyle bir destek göremedim. Belki de gönüllüler bu işe bir el atıp Türkçe desteği ekleyebilirler. Benim gönüllü olmam için öncelikle vakit bulmam gerekiyor :)

Sığacık - Teos çadır kampı

Sezonun son yüzme ve çadır eylemini bu haftasonu Seferihisar ilçesinin Sığacık beldesinde gerçekleştirdik ;). Hava durumu pek iç açıcı olmasa da, http://www.weather.com/ sitesi yine tam olarak yağmur, çamur oranını tutturdu.

Cumartesi günü sabahtan yola çıkamasak da, saat 13.30 gibi otogardaydık. Önce bayramda gitmek istediğim için Antakya biletlerini ayarlamaya çalıştık ama dört firmada da hiç yer yoktu. Sonra Seferihisar arabası bulmak için aranmaya başladık ki, Seferihisar'a otogardan araç kalkmadığını öğrendik. İşler yolunda gidemedi bir türlü.

Seferihisar'a gitmek istediğimizi duyan uyanık Gümüldür minibüslerinden biri(ki daha önce de benzer uyanıklığa sahip birtanesi bizi çileden çıkarmıştı, ama ders olmamış demek ki) ben sizi SeferiHisar arabasına bindiririm dedi ve 14 de İzmir otogarından Sığacığa gitmek üzere yola koyulduk. Aslında Gümüldür üzerinden gitmek yanlış oluyordu haritadan hatırladığım kadarıyla ama; yolu tam olarak bilmediğimiz, Üçkuyulara gitmek zor geldiği için ve Gümüldürdeki Denizatı kamp alanının açık olma ihtimali nedeniyle bindik bu minibüse. Yolu neredeyse iki kat uzatmıştık. Neyseki İzmirden, evimizden çok uzaklaşmamıştık.

Araçtaki yazlıkçı bir çift sayesinde en sonunda Seferihihar araçlarının olduğu, Ürkmez deki minibüs durağını da bulduk. Burada Cem Yılmaz benzeri, Karadenizli bir şöfor bizi karşıladı. Gerçekten iyi ve komik biriydi :). Seferihisar'a 24 km vardı daha.

Biz indik ve bu sefer de Sığacık'a araç beklemeye başladık. Araç bekleme ve minibüler çok acı çektirdi bize. Sonunda Teos orman kampı tabelasını gördük, ama o kadar. Son minibüste bizi gitmek istediğimiz yere uzak bir yerde bıraktı, 2 km kadar. İndiğimiz yerde pek de sevimli olmayan bir adam ve aynı sevimsizlikte bir çoçuğun işlettiği bir yemek yeri vardı. Biz şurayı arıyoruz, çadır kurulacak yer varmış burda dedik; adam istediğiniz yere kurun dedi. Dağ başında bir biz, bir onlar var. Görünürde deniz yok, biz çadır kuracakmışız. Yok birader biz sahibini, Özkan'ı aradık başka bir yer varmış burda deyince, o zaman daha yürüyeceksiniz siz dedi neyseki.

Yürü yürü, gelmez kamp alanı, Katrancı'yı anımsattı bize. En sonunda geldik. Bizden başka bir çadır daha vardı,ü o da numune olan :). Çadırımızı kurduk ve hooop denize. Sığacık'ta öyle hamam suyu gibi deniz olmaz diyordu yazılardan birtanesi; inanılmaz soğuktu su gerçekten. Yinede girdik, o kadar minibüs çilesi çekmişiz üstüne 2 km yol yürümüşüz, denize girmeyecek miydik?

Hava hemen karardı tabi, geç kalmıştık çünkü. Işık yok, Balıklıova'da da benzer birkaç saat geçirmiştim, karanlıkta da oltanın iğnesini elime saplamamayı öğrenmiştim orda :). Yaşayıp tecrübe kazanmak iyi oluyor gerçekten. Sığacık'ın havası daha sıcaktı ama. Üşümeden, sadece biraz korkarak uyuduk.


Sabah gerçekten mükemmeldi. Biraz yağmur çiselemiş, toprak nemli. Serin ve temiz bir hava. Güneş birkaç dakika saklanıp yine gösteriyordu kendini. Denizin dibi görünüyor, rüzgar karadan estiği için dalga oluşmuyordu. Kahvaltı ettik ve yine hooop denize. Su yine soğuk, olsun.


Bu koy gerçekten çok güzel ve temizmiş. Ama hafiften bir kirlilik başlamış, o da resmen bindiği dalı kesen işletmecinin, tuvalet çıkışını denize vermesinden kaynaklanıyor. Umarım bunu düzeltirler.

Eşyaları toplamak gerek. Bir buçuk saat alacak bir işti bu. Ona göre planlama yaptık, kahveler içildi(termosumuz 24 saat sıcak tutabiliyormuş suyu), atıştırdık ve tabiki yine denize. Çadırın ve eşyeların toplanması ile saat 16.30 olmuştu. Önümüzde 2 km lik yürünecek yol ve saatlerce beklenebilecek minibüler vardı. Ama birşeyler güzel gitmeye başladı ve biraz yürümüştük ki, yolda bizi kamyonetine alan Ege 74 yılı Mimarlık mezunu adam sayesinde Seferihisar garajina kadar gidebildik(tekrar teşekkürler). Burada da minibüsü hiç beklemedik :) ve tüm dönüş trafiğine rağmen 18. 30 da İzmir deydik. Evim evim güzel evim.


GNU/Linux için flash player 9 (32 bit BETA)

Sonunda sabırla beklenen GNU/Linux için flash oynatıcının son sürümünün betası çıktı. (En azından ben bekliyordum, flash 7'de çalışmayan bir sürü site oluyor :) )

Kurmak için buradan ilgili dosyayı indirip içerisindeki libflashplayer.so dosyasını firefox'unuzun plugin klasörüne kopyalamanız yetmektedir.

* Eklenti (plugin)
o Normal kullanıcı olarak kurmak için:
+ libflashplayer.so dosyasını plugins dizinine kopyalıyoruz/taşıyoruz. (Genellikle ~/.mozilla/plugins şeklindedir)
+ plugins dizini yoksa yaratıyoruz.
o root olarak kurmak için:
+ libflashplayer.so dosyasını sistemde tarayıcının kurulu olduğu yerdeki plugins klasörüne kopyalıyoruz/taşıyoruz (/usr/lib//plugins şeklinde oluyor genellikle, eğer bulamazsanız locate libflashplayer.so yazıp öncekini bularak üstüne yazabilirsiniz).
+ plugins dizini yoksa yaratıyoruz.
Kaynak: http://labs.adobe.com/technologies/flashplayer9/

Basit bir soket hesap makinesi

Dağıtık sistemler dersinde ilk ödev olarak basit bir hesap makinesi yapmamız istendi. Özelliği soketler üzerinden haberleşen sunucu ve istemciye sahip olmasıydı. Bu işin yapılmasında en çok karşılaşılan bir problemle arkadaşım Cumhur da karşılaşınca acaba o problemi nasıl çözüyorduk, threadlerle nasıl yapıyorduk sorularına cevaplar bulmak için projeyi genişletmeye karar verdim.

Proje çok basit 4 işlem yapıyor. Sadece iki sayı alıyor. İki farklı uygulama (JFrame) içeriyor. Biri CalcServerFrame.java adındaki sunucumuz, diğeri de CalcClientFrame.java adındaki istemcimiz. İstemci kolay anlaşılır bir yapıda. Kullanıcı hesapla düğmesine bastığı zaman kullanıcının verdiği sunucu adresine verilen porttan bağlanıp Islem sınıfı gönderiyor. Karmaşıklık sunucu tarafında. Sunucuda iki düğme var. Çalıştır düğmesi sunucu threadini yaratarak threadi başlatıyor. Buradaki ince nokta threadin çalışmaya devam ederken bizim arayüzde herhangi bir problem olmaması. Bunu Thread'ten ürettiğimiz ServerThread sınıfı içerisine run metodunu gerçekleştirip, threadi çalıştırmak için start() metodunu çağırarak yapıyoruz.
Bağlan düğmesini eylemi gerçekleştiren kısmı:
btnBaglan.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
// Sunucu olarak calisacak olan is parcacigini
// yaratip baslatalim
st = new ServerThread();
// FIX start dedigimiz zaman swingteki dugmenin
// takilma problemi olmuyor
st.start();
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "Bir hata oluştu:"
+ ex.getMessage());
}
}
ServerThread sınıfımız:
class ServerThread extends Thread {

private ServerSocket ss;

private boolean acik = true;

/**
* Baslat dugmesine basilinca calisacak olan baslangic metodu
*/
public void run() {
try {
System.out.println("Sunucu başlatılıyor!");
// Sunucunun dinleme yapacagi soketi yaratiyoruz
ss = new ServerSocket(Integer.parseInt(txtPort.getText()));
// Bu sunucu surekli olarak calisacak
acik = true;

while (acik) {
try {
// Istemciden talep gelmesini bekliyoruz
Socket socket = ss.accept();
// Istemci talebi geldigi zaman istemciden Islem
// nesnesini okuyoruz
ObjectInputStream in = new ObjectInputStream(socket
.getInputStream());
// Ve bu islem nesnesi uzerinde islemi
// gerceklestiriyoruz
Islem islem = isle((Islem) in.readObject());
// Ekranan bize bir istemci talebi geldigini adresiyle
// yaziyoruz
System.out.println("Bağlantı geldi:"
+ socket.getInetAddress().getHostName());
// Daha sonra islem sonucunu aktarmak icin islem
// nesnesini
ObjectOutputStream out = new ObjectOutputStream(socket
.getOutputStream());
// istemciye geri donduruyoruz
out.writeObject(islem);
} catch (Exception e) {
// Hata olusmasi durumunda ekrana yaziyoruz
System.out.println(e.getMessage());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

public void stopServer() {
try {
// Sunucunun dinleme yaptigi soketi kapatalim
ss.close();
// dinleme dongusunden cikmamiz gerekli
acik = false;
// thread durdurulsun
this.interrupt();
System.out.println("Sunucu kapatıldı!");
} catch (IOException e) {
e.printStackTrace();
}
}

/**
* Bu metodun amaci aldigi Islem nesnesinin talep ettigi matematiksel
* islemi gerceklestirip sonucu Islem nesnesine yazarak Islem nesnesini
* geri dondurmektedir.
*
* @param islem
* @return
*/
private Islem isle(Islem islem) {
// Islem toplama
if (islem.getIslem().equals(Islem.TOPLA)) {
islem.setSonuc(islem.getSayi1() + islem.getSayi2());
}
// Islem carpma
if (islem.getIslem().equals(Islem.CARP)) {
islem.setSonuc(islem.getSayi1() * islem.getSayi2());
}
// Islem cikarma
if (islem.getIslem().equals(Islem.CIKAR)) {
islem.setSonuc(islem.getSayi1() - islem.getSayi2());
}
// Islem bolme
if (islem.getIslem().equals(Islem.BOL)) {
islem.setSonuc((float) islem.getSayi1()
/ (float) islem.getSayi2());
}
return islem;
}
}

Daha ayrıntılı olarak kodu incelemek ve nasıl çalıştığını görmek için şu eclipse projesini indirebilirsiniz. Sunucuyu (CalcServerFrame.java) önce çalıştırmanız gerekiyor. Daha sonra herhangi bir makineden sunucuya istemciden (CalcClientFrame.java) bağlanabilirsiniz.