24 Aralık 2010 Cuma

Wndows 7'de AHCI Mod

Hard diskiniz BIOS'ta IDE modda iken Windows 7'yi kurup daha sonra AHCI moda geçirdiğinizde Windows'unuz açılmayacaktır. Windows'un repair özelliği bu problemi giderebilir. Ama, repair'de bu problemi giderememişse aşağıdaki adımları izleyerek hard diskinizi AHCI moda geçirebilirsiniz.

Ben problem yaşamadım ama aşağıdaki işlemleri yapmadan önce sisteminizi yedeklemenizi tavsiye ederim.

  •  BIOS'ta disk modunu IDE yapıp bilgisayarınızı açınız.
  • Registry editör'ü (regedit) açınız.
  • HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlset / Services / msahci dizinini açınız.
  • start değişkenine çift tıklayarak açınız. 3 olan değerini 0 yapınız.
  • Registry editör'ü kapatınız.
  • Bilgisayarınız yeniden başlatıp BIOS'a giriniz.
  • Hard disk modunu AHCI yapıp, BIOS ayarlarınızı kaydedip bilgisayarınızı yeniden başlatınız.
  • Windows açıldığında AHCI sürücüleri yükleyip yeniden başlatmak isteyecektir.
Bu işlemler Windows Vista için de geçerlidir.

16 Aralık 2010 Perşembe

Headless Ortamlarda Toolkit Kullanımı

Ekran, klavye veya fare'siz ortamlarda grafik arayüz kodları içeren bir Java uygulaması çalıştırırsanız HeadlessException alabilirsiniz. Linux/UNIX bir sunucuya telnet/ssh ile bağlandığınızda, uygulamanız sistem servisi olarak çalıştığında ve benzeri durumlarda bu hata ortaya çıkar.

Java'nin 1.4 versiyonundan itibaren bu durum için Headless mode desteği vardır. Uygulamanızı Headless mode'da çalıştırdığınızda sistem, Toolkit olarak HeadlessToolkit kullanır ve uygulamanızın ihtiyaç duyduğu bazı kaynakları ve parametreleri sağlar.
Uygulamanızın Headless mode'da başlaması için uygulamanızı -Djava.awt.headless=true parametresi ile çalıştırmalısınız. Panel, Canvas gibi bileşenler ve Swing bileşenleri Headless mode'da kullanabilirsiniz, ama JFrame, JDialog gibi en üst seviye container'ları kullanamazsınız.
Headless mode ile ilgili ayrıntılı bilgiye aşağıdaki bağlantıdan erişebilirsiniz.

http://java.sun.com/developer/technicalArticles/J2SE/Desktop/headless/

HeadlessToolkit'in sağladıkları sizin için yeterli olmayabilir. Örneğin Toolkit'in getScreenResolution, createCustomCursor metodlarına ihtiyacınız var. Bu gibi durumlarda aşağıdaki gibi bir Toolkit tanımlamalısınız.



public class CustomToolkit extends HeadlessToolkit {

    public CustomToolkit() {
        super(createSystemToolkit());
    }

    private static Toolkit createSystemToolkit() {
        String osName = System.getProperty("os.name");
        String toolkitClass = osName.startsWith("Windows") ? "sun.awt.windows.WToolkit" : "sun.awt.X11.XToolkit";
        try {
            Class<?> clazz = Class.forName(toolkitClass);
            Object toolkitInstance = clazz.newInstance();
            return (Toolkit)toolkitInstance;
        }
        catch (Exception exc) {
            throw new RuntimeException(exc);
        }
    }

    @Override
    public int getScreenResolution() throws HeadlessException {
        return 72;
    }

    @Override
    public Insets getScreenInsets(GraphicsConfiguration graphicsConfiguration) throws HeadlessException {
        return new Insets(0, 0, 30, 0);
    }

    @Override
    public Cursor createCustomCursor(Image image, Point point, String s)
            throws IndexOutOfBoundsException, HeadlessException {
        return Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR);
    }

}

createSystemToolkit metodunda işletim sistemine göre Toolkit döndürüyoruz. Reflection kullanmamızın sebebi Windows'taki JRE'lerde XToolkit'in, Linux'teki JRE'lerde WToolkit'in bulunmaması.

Bunun gibi problem yaşadığınız Toolkit metodlarını ezebilirsiniz.

Toolkit'imizin etkin olabilmesi için uygulamanızı aşağıdaki parametrelerle çalıştırmalısınız.
-Djava.awt.headless=false
-Dawt.toolkit=CustomToolkit