SİTE
İÇİ ARAMA |
|
Blogroll |
|
|
|
GConf ve Mono Bölüm 1 |
|
Gönderiliyor lütfen bekleyin... |
|
|
Mononun gconf ile çalışmasını incelemeden önce gconfun
ne olduğuna, ne işe yaradığına bakmakta yarar olduğu kanısındayım. GConf a gnome
masaüstü yönetim sisteminde uygulamaların referanslarının tutulduğu bir bilgi
database i diyebiliriz. GConf modern uygulamalar geliştirmek için çok kullanışlı
bir database dir. Buradaki database kelimesinden aklımıza Ms SQL veya MySql
gelebilir fakat bahsi geçen database in çalışma şekli diğer gelişmiş veritabanı
yönetim sistemlerinden biraz daha
farklıdır. Hala daha neden bahsediyor bu adam yav diyerek kendi kendinize
düşünüyor olabilirsiniz. Bu noktada hemen bir benzetme yaparak kafalardaki soru
işaretlerini kaldırmak istiyorum. GConf için windows işletim sisteminde sıklıkla kullanılan
Registry Editor un Gnome üzerindeki hali diyebiliriz. Umarım şimdi çoğu windows
programcısı şöyle bir "hımmmm" diyerek koltuklarına yaslandılar. GConf, Gnome
masaüstünü kurarken yüklenir. Eğer yüklemediyseniz de sorun değil çünkü açık
kaynak kodlu yazılımlarda internet bağlantınızın olması yeterli. GConfu
ftp://ftp.gnome.org/pub/GNOME/sources/GConf/1.2 adresinden rahatlıkla günün
24 saati indirebilirsiniz.

şekil-1 registry editorunden bir görünüm

Şekil-2 GConf-Editorunden bir görünüm
GConf kendi içerisinde mantıksal olarak düzenlenmiş bir
anahtar hiyararşisine sahiptir. Bu hiyararşinin sağlanması masaüstü
uygulamalarının yönetimini kolaylaştırmıştır. Her bir dosyanın kendi anahtarı
olabileceği gibi birden fazla da anahtara sahip olabilir. Anahtardan
kastedilen kavram ise saklanacak ve referans gösterilecek olan değerlerdir.
Mesela
/apps/metacity/general/titlebar_font gibi bir hiyararşi
lokasyonunu incelersek buradaki titlebar_font anahtarı integer bir deger
tutmakta ve titlebar ın yazı karakteri boyutunu saklamaktadır.

Şekil-3 Anahtar ile ilgili bir örnek
Dosyaların altındaki her bir anahtarın çok güzel bir
şekilde dökümante edildiğini görmekteyiz. Buda GConf un estetik ve yararlı bir
yönü. Yukarıdaki şekillerde görmekte olduğumuz
GConf-editor çok kullanışlı bir arayüz olmasına karşın tam olarak tamamlanamadığı
için bazı özel işlemleri konsol ekranına girerek yapmak durumunda kalmaktayız.
Bunun için gconftool-2 konsol aracını kullanarak bu işlemleri rahatlıkla
yapabiliyoruz. Bu aracı kullanarak Gconf içerisinde bir dizinin tüm
altdizinlerini listeleyebiliriz. Örneğin, /desktop/gnome dizinin alltındaki tüm
dosyaları;

Şekil-4 gconftool aracı kullanımı
GConf ta her değerin saklandığı lokasyonlar
konfigürasyon kaynağı(configuration source) olarak isimlendirilir. Konfigürasyon
kaynakları sistemizde
/etc/gconf/<version>/ adresi altında bulunurlar. Bu lokasyonlarda
gezinirken dosya ve dizin hiyararşisinden başka birşey olmadığının farkına
varabilirsiniz. Bu dizinlerdeki dosyaların xml dosyaları olduğunu görüceksiniz.

Şekil-5 konfigürasyon kaynakları

Şekil-6 anahtarın metadatası
GConf ta bazı değerler kendiliğinden konfigüre
edilmiş olarak gelirler ve değiştirilmelerine izin verilmez yani sadece
okunabilir özelliğe sahiptirler. Bu özel konfigürasyonların sadece okunabilir
olması bilmeyerekte olsa silinmesi gibi hataları önlemek içindir. Sadece
okunabilir şekildeki konfigurasyonlar tüm sistem kullanıcıları için
zorunlu(mandatory) edilen ayarlardır.
gconftool-2 xml:readonly:
/etc/gconf/.xml.mandatory
gconftool-2
include "$(Home) /.gconf.path
gconftool-2 xml:readwrite: $(Home) /.gconf
gconftool-2 xml:readonly
:/etc/gconf/gconf.xml.defaults |
Görmüş olduğunuz komutlar gconftool-2 aracını kullanarak
çeşitli ayarlamalar yapmak için kullanılır. include komutu kullanıcıların kendi
konfigurasyon dosyalarını belirterek HOME dizin adresini içermesini sağlar.
readwrite komutuda kullanıcının yapmış olduğu ayarların sonradan
değiştirilebileceği anlamında kullanıcılara sunulmasıdır. readonly de yapmış
olduğumuz ayarların sadece okunabilir olmasını ve sonradan değiştirilememesini
sağlar.
Şemalar
Daha önce anahtarımın aslında bir xml dosyası altında
tutulduğunu görmüştük. Bu xml dosyaları bir çok türden (int,string,boolean...)
değerleri saklamaktadır. Bu değişkenler saklanırken belirli şemalar kullanılmaktadır. Şemalar bir demet metabilgisinin konfigürasyon ayarlarını
tutar.
Bu metabilgisi değerin tipini, ayarlar hakkında kısa bilgileri ve factory default
değerlerini tutarlar. Şemalar /schemas
dizin başlığı altında toplanırlar. gconftool-2 aracını kullanarak anahtarın
kullandığı şema bilgilerini görebiliriz.

şekil-7 şemaların özellikleri
Genelde uygulama geliştiriciler bir yazılım
geliştirirken kullandıkları şemayı kendileri yaratmak isterler ve geleneksel
olarak bunu .schemas uzantısı ile kaydederler. Bu format insanların
okuyabileceği bir yöntemdir. Fakat bu dosyalar gconf ile doğrudan kullanılamaz. Bunun
yerine uygulamayı "make install" veya rpm/deb paketlerini yüklediğimiz zaman
gconftool u kullanarak uygun şemalara geçmesini sağlarız. Şema dosyalarının
bulunduğu yer ise /etc/gconf/schemas lokasyonudur.

Şekil-8 şema dosyalarının lokasyonları
GCong kullanıcılar için bekletici bir
programdır(daemon)(gconfd)
GConf un ana olarak sağladığı her kullanıcı için
bekletici bir program(daemon) olmasıdır. Bu daemon ın birinci özelliği
uygulamanın konfigurasyon değeri değiştiği zaman uygulamayı uyarmasıdır.
Daemon ların ikinci önemli bir görevide cache de değerleri tutması ve bu yüzden
uygulamaların xml dosyalarını parse etme zorunluluğunu ortadan kaldırmasıdır.
Daeman ın cachedeki değerini yeniden yüklemek ve tazeleme yapmak için
gconftool-2 aracına SIGHUP sinyalini göndermemiz yeterlidir.
Uygulama geliştirici olarak dikkat edilmesi gereken
önemli noktalar vardır. Bunlar anahtar isimlendirmeleridir. Genel olarak
uygulamalarımız /app lokasyonu altında yerleşirler. Ayrıca anahtarları küçük
harfle ve her kelime alt çizgi ile ayrılacak şekilde düzenlenir. Anahtar
isimlendirmelerini bu şekilde yapmamız zorunlu değildir ama bu
şekilde yapmamız okunabilirliği büyük oranda arttıracaktır. /app dizini altına
açtığımız dosyaya direkt olarak deger vermekten sakınmalıyız. Bunun yerine
mantıksal olarak düzenlenmiş altdosyalara değerler vermek çok daha doğru
olacaktır. GConf içinde herşeyi saklamak önerilmemekte ve referans olabilecek
değerlerin saklanması önerilmektedir. GConf u detaylı bir şekilde inceledikten
sonra Mono ile kullanımına bir sonraki makalede geçeceğiz.
Diğer makalede görüşmek üzere...
kaynaklar:
www.go-mono.com
www.gnome.org/projects/gconf/
Makale:
GConf ve Mono Bölüm 1 Mono - Linux'ta .NET Caner Şahan
|
|
|
-
-
Eklenen Son 10
-
Bu Konuda Geçmiş 10
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
|
|
|