18.02.2013 Views

NCURSES ile Yazılım Geli¸stirme NASIL

NCURSES ile Yazılım Geli¸stirme NASIL

NCURSES ile Yazılım Geli¸stirme NASIL

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

1. Giri¸s<br />

<strong>NCURSES</strong> <strong>ile</strong> Yazılım Geli¸stirme <strong>NASIL</strong><br />

Aptal uçbirimlerin oldu˘gu eski zamanlarda, uçbirimler bilgisayarlardan uzakta ve onlara ba˘glantıları seri kablolar<br />

<strong>ile</strong> idi. Uçbirimler seri ¸sekilde bayt ver<strong>ile</strong>ri göndermek için ayarlanabiliyordu. Uçbirimlerin tüm bu yetenekleri<br />

(imleci yeni bir noktaya ta¸sımak, ekranın belli bir kısmını silmek, ekranda gezinmek, durumlar arası geçi¸sler, v.b.<br />

gibi) seri ¸sekilde gönder<strong>ile</strong>n bu baytlar <strong>ile</strong> sa˘glanmaktaydı. Bu denetim ardı¸sılları genelde kaçı¸s tu¸su dizisi olarak<br />

adlandırılırdı, çünkü kaçı¸s karakteri olan (0x1B) <strong>ile</strong> ba¸slamaktaydı. ¸Simdi b<strong>ile</strong> uygun bir benzetim <strong>ile</strong> benzeticiye<br />

kaçı¸s karakterlerini göndererek uçbirim penceresinde aynı etkiyi olu¸sturabiliriz.<br />

Bir satırı renkli olarak yazmak istedi˘ginizi dü¸sünelim. Konsolda ¸sunu yazmayı deneyin.<br />

echo –e "\033[1;37;44mRenkli"<br />

Ba¸staki "\033[" dizgesi kaçı¸s karakteridir. Di˘ger karakterler ekrana yazılabilir karakterlerdir. Sonucu mavi zemin<br />

üzerine beyaz "Renkli" olarak görüyor olmalısınız. Bu renklendirme, bu ¸sekilde kalır, eski haline dönmek için<br />

¸sunu yazın:<br />

echo –e "\033[0;39;49mRenkli"<br />

¸Simdi, bu sihirli karakterler de ne anlama geliyor? Anlaması zor mu? Bunlar farklı uçbirimler için farklı b<strong>ile</strong> olabilir.<br />

Bunun için UNIX’ı tasarlayanlar termcap isimli bir mekanizma bulmu¸slardır. Belli bir uçbirimin tüm yetenekleri<br />

<strong>ile</strong> belli bir etkiyi elde etmek için gerekli kaçı¸s karakterlerini listeleyen bir dosyadır. Sonraki yıllarda bu terminfo<br />

<strong>ile</strong> yer de˘gi¸stirmi¸stir. Çok fazla ayrıntıya inmeden, bu mekanizma uygulama programlarının terminfo veritabanını<br />

sorgulamasını ve uçbirime veya uçbirim benzeticisine gönder<strong>ile</strong>cek denetim karakterlerini edinmelerini sa˘glar,<br />

demekle yetinece˘giz.<br />

1.1. <strong>NCURSES</strong> nedir?<br />

Tüm bu teknik saçmalıkların ifade edilmesinin nedenini merak ediyor olabilirsiniz. Yukarıdaki senaryoda her uygulama<br />

programının terminfo’yu sorgulaması ve gerekli i¸slemleri yapması gerekmektedir (denetim karakterlerinin<br />

gönderilmesi v.s.). Bu karma¸sıklıkla u˘gra¸smak bir süre sonra zorla¸stı ve bu da ’CURSES”ın do˘gmasına sebep<br />

oldu. Curses "imleç eniy<strong>ile</strong>me" ("cursor optimization") anlamına gelen bir kelime oyunudur. Curses kütüphanesi<br />

ham uçbirim kodları <strong>ile</strong> çalı¸sırken onları sarmalayıcı bir yapı ve verimli bir API (Uygulama Programlama Arayüzü)<br />

olu¸sturmaktadır. ˙Imleci hareket ettirmek, pencereler olu¸sturmak, renkler üretmek, fare <strong>ile</strong> oynamak v.b. için<br />

i¸slevler sa˘glamaktadır. Uygulama programları alt kısımdaki uçbirim yeteneklerini dü¸sünmek zorunda kalmazlar.<br />

Yani <strong>NCURSES</strong> ne demektir? Asıl System V gözden geçirme 4.0 (SVr4) curses’ın bir kopyasıdır. Özgür olarak<br />

da˘gıtılan ve eski curses sürümleriyle tamamen uyumlu olan bir kütüphanedir. Kısacası, bir uygulamanın karakter<br />

tabanlı uçbirimlerde görüntüleri üzerinde çalı¸sabilmeyi sa˘glayan i¸slevler kütüphanesidir. Belgenin geri kalanında,<br />

curses ve ncurses birbirleri yerine kullanılmı¸stır.<br />

<strong>NCURSES</strong> hakkındaki ayrıntılı bilgi kaynak da˘gıtımındaki NEWS dosyasından bulunabilir. ¸Su anki paket Thomas<br />

Dickey tarafından geli¸stirilmektedir. Paketi hazırlayanlarla <br />

adresinden <strong>ile</strong>ti¸sime geçebilirsiniz.<br />

1.2. <strong>NCURSES</strong> <strong>ile</strong> Ne Yapabiliriz?<br />

<strong>NCURSES</strong> sadece uçbirim yetenekleri sarmalayan bir yapı olu¸sturmaz aynı zamanda metin kipinde ho¸s<br />

görü¸sünü¸slü arayüzler olu¸sturmak için sa˘glam bir çalı¸sma tasla˘gı da olu¸sturur. Pencereler v.b. görünümleri<br />

olu¸sturmak için i¸slevler sa˘glar. Karde¸s kütüphaneleri olan panel, menu ve form, temel curses kütüphanesine<br />

bir geni¸sleme sa˘glar. Bu kütüphaneler genelde curses kütüphanesiyle beraber gelmektedir. Pekçok pencere,<br />

menu, panel ve formlar içeren bir uygulama olu¸sturulabilir. Pencereler üzerinde ba˘gımsız olarak çalı¸sılabilir,<br />

gezin<strong>ile</strong>bilir ve hatta pencereler gizlenebilir.<br />

http://belgeler.org Linux Kitaplı˘gı 7 / 90

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!