24 Ekim 2007 Çarşamba

Ubuntu - Kaybolan Grub menüsünü tekrar yükleme...


Bilgisayarımda Windows ve Linux kardeş kardeş çalışıyorken, Windows'u bir sebepten dolayı baştan kurmak durumunda kaldım. Tabi Windows tekrar yüklenince başlangıçta çıkan GRUB menüsünü sildi. Ubuntu yükleme DVD'im ile bilgisayarı açtım, ve ubuntu forumlarından gerekli bilgileri okuyup GRUB menüsünü düzelttim. Yalnız forumlarda yazan bazı bilgiler güncelliğini yitirmiş, özellikle Live CD ile "fake installation" yöntemi yeni Ubuntu sürümlerinde çalışmıyor.

İşte benim izlediğim adımlar:

1. Live CD yada DVD ile bilgisayarı açın.
2. Terminal ekranı açın.
3. "sudo grub" yazın. (root hakları ile grub'u çalıştırmak için başına sudo yazdık, önemli.)
-artık grub programı konsolundasınız -
4. "root" yazın. "(" yazın ve tab'a basın. Grub size yardımcı olacaktır. Bu adımda amacımız MBR olan, yani bootable olan disk bölümünü seçmek. "root" yazdıktan sonra ne yapacağınızı tam bilmiyorsanız 'tab' tuşunu kullanmanızı kesinlikle öneririm.
Örnek kullanım: "root (hd0, 3)"
5. "setup (hd0)" yazın. Burdaki 'hd0', bir önceki adımdaki sabit disk kodu ile aynı olmalıdır.
6. "quit" ile grub'dan çıkın.
7. Baştan başlatın.

İşte bu kadar. Bu adımlardan sonra bilgisayarımı açtığımda, GRUB menüm kaybolmadan önceki hali ile geri geldi. ;-)

26 Ağustos 2007 Pazar

Yitik Projeler

Okul zamanı boyunca uğraştığım projeler takıldı gözüme. Hepsi ufak tefek ve anlamsız şeyler. Ama sabit diskimin ücra bir köşesinde öylesine masum duruyorlardı ki, yitip gitmelerine gönlüm elvermedi. Hem belki aralarından bazıları birilerine bir şekilde yardımı olur. Örneğin Knight's Tour problemi veri yapıları (data structures) dersinde karşınıza çıkabilir.

-- Knight's Tour --

At ile satranç tahtasının gezilen yere bir daha uğramayarak tüm karelerini dolaşmaktır. Bu meseleye ilişkin bir çok çözüm var. Ben zamanında H. C. Warnsdorff 'un sezgisel (heuristic) algoritmasını incelemiştim. Sezgisel kelimesinden kasıt; çözüme giderken olabilecek tüm olasılıkları denemek(brute force) yerine bir ön-sezi mantığı ile sadece bir kaç olası yolu deneyerek çözüme gitmektir. Warnsdorff algoritmasının işleyişi de oldukça ilginç. Atın bulunduğu konumdan gidebileceği yerler saptanır. Sonra o gideceği yerlerden hepsi için kaç hamleye yol açtığı hesaplanır. Örneğin at yukarı gitseydi ondan sonra 4 yere hamle olasılığı olacaktı. Aşağı gitseydi 3 hamlelik olasılığı olacaktı. Warnsdorff algoritmasının özü "az hamleye yol açan yol seçilmelidir". Bir nevi ata daha az hamleli yeri seçtirerek çıkmaza sokmaktır. Merak etmeyin at çıkmaza girdiğinde tüm tahtayı dolaşmış oluyor zaten :). Örnek problemimize göre at aşağı yani 3 hamle olasılığıklı yere gitmelidir. Sonra aynı adımlar o yer için hesaplanmalıdır. Çok karışık oldu değil mi? Şurdaki appleti biraz kurcalayın, tahtada beliren sayılar atın o yerden yapabileceği hamle sayısını gösteriyor. Kurala göre en az hamleye yol açan yolu seçerek sonuca gitmelisiniz. Yoksa bir yerde tıkanırsınız :) .

Benim programımda Warnsdorff algoritmasına göre atın tahta üzerine dolaşmasını animasyon şeklinde gösteriyor. Kodlar zip paketi içinde mevcut.

İndir: Knight's Tour (28KB)









-- Java Bird --

Jaba Bird sadece 1 level oynanabilen, oldukça vasat ama kendi içinde tutarlı bir oyun. Grafikleri ve sesleri büyük ölçüde başka oyunlardan çalıntı. Oyunu sonradan Resident demoscene grubu için çevirdiğim için bazı grafikler Spritus/Resident tarafından çizildi. Aynı şekilde seslerin bazıları da Flexi/Resident tarafından yapıldı. Java Bird 7d5 demo party'de wild kategorisinde yarışmaya katıldı ve 3. oldu. Oyuna başlamadan önce "readme" kütüğüne bir göz atmanızda fayda var. Yoksa, hadi "space" tuşu ile ateş edildiğini keşfettin, peki silah değiştirme tuşunun "x" olduğunu nereden bilecektin! :)

Java'nın kullanması oldukça kolay olan grafik kütüphanelerini keşfettikten sonra, ufak bir oyun yapma hevesi ile başladı herşey. İlk başta amacım Space Invaders gibi bir oyun yapmaktı. Kahraman uçağımız ve ateş etme mekanizmasını yapınca, oyunu Raiden gibi dikey kayan herşeye ateş et (vertical scrolling shoot-em up) tarzı bir oyuna dönüştürmeye karar verdim. Oyuna bir bütün olarak bakınca oldukça karmaşık görünebilir. Elbette ki tecrübeli arkadaşların kafalarında hemen bir fikir ve dizayn canlanacaktır. Her şeyi adım adım yapınca işler oldukça kolaylaşıyor. Mesela böyle bir oyun yapmak için, ilk olarak bir pencere açmalı ve bunu animasyon oynatabilir hale getirmeliyiz. Ben o kısmı Deitel Deitel'in Java kitabından bakmıştım. Sonra ekranda objeleri gösterebilmeliyiz...vs, vs. Bu arada belirtmeden geçemeyeceğim; Java-Sun forumları gerçekten çok başarılı, takıldığınız her soruyu google'la boğuşmadan önce bu forumlarda arayınız.

Ah işte bu kadar. Java Bird gerçekten yitik bir proje. Sadece 1 level'lik bir oyun için haddinden fazla kod içeriyor :) Zamanında bir "level editörü" yapsaydım şimdi burda yitik projeler arasında olmayacaktı. Belki de kendine ait bir web sitesi olacaktı. Hmm "Java Bird - Remastered" gibi bir isimle geri gelse bir fark yaratır mı dersiniz? :)


Java Bird inspire13 için tekrar elden geçirildi ve Java Web Start ile oynanabilir hale geldi. Java Game Tome'dan oynayabilirsiniz.

Java Bird kodları ve projesi: www.inspire13.com/javaBird


Yıllar yıllar sonra gelen edit: Kaynak kodlar falan tüm linkler entropiye yenik düşüp kaybolmuşlar. Bir gün hepimizin olacağı gibi. Ama daha ölmedik ve kodlar da şurada: