Linux’ta Yazılım Geliştirme Afyon Kocatepe Üniversitesi Bilgi İşlem Daire Başkanlığı Linux’ta Yazılım Geliştirme Arş.Gör. Yaşar Arslan yarslan@aku.edu.tr
Linux geniş yazılım arşiv ve kütüphanesi ile birlikte sunuluyor. C, C++, Java, Ada, Fortran, Pascal, Cobol, Basic, Lisp, Scheme, Python, Kylix başta olmak üzere hemen her programlama dilinin yorumlayıcı ve derleyicisini bulabilirsiniz. C, C++ dilleri esnekliği ve zengin sistem geliştirme kütüphaneleriyle tavsiye edilen dillerdir. Grafiksel arayüz hazırlamada fazla kullanılmaz.
Grafiksel... X Window (kısaca X) adı verilen grafik arayüzü Linux’ta sadece metin ekranda çalışmak istemeyen kullanıcılar için günümüz windows sistemlerine benzer şekilde geliştirilmiş mekanizmadır. Grafiksel programlama için Kylix ve Java başta gelen dillerdir. Ayrıca Kdevelop yazılımı grafiksel arayüzleri kısa sürede hazırlamanızı sağlayacaktır. www.linuxapps.com www.linuxlinks.com www.linux-directory.com ‘dan bulabilirsiniz.
Kendi içinde Kabuk programlama: Kabuk, klavyeden girilen komutları çalıştırarak bir arabirim görevi yapar. Sistem komutlarını döngüler kurarak, şartlara bağlayarak, normal bir programlama gibi düzenlememizi sağlar Değişik türde kabuk derleyicileri kullanıcılara sunulmuştur. sh: İlk Unix kabuğu. ksh: sh kabuğunun geliştirilmiş hali. bash: Kullanım kolaylığı bakımında nen çok rağbet gören ve kaynak koduyla dağıtılan dildir. csh: C diline benzer bir programlama yapısı vardır.
cp /var/deneme.txt /home/yedekler/ rm –rf /var/deneme.txt Örnek kabuk programı: #!/bin/bash cp /var/deneme.txt /home/yedekler/ rm –rf /var/deneme.txt cd /home/yedekler echo “İşlem tamamlandı” Editörde yazıp prg ismiyle kaydedelim ve >chmod 700 prg komutu ile çalışır hale getirelim. >. /prg dosya ismini bu şekilde yazıp çalıştıralım
Yazılım Geliştirme sunumuz iki bölüm halinde devam edecek. 1. Görsel Programlama: Kylix; Kurulum, kullanım ve özellikleri. 2. Esnek programlama: C: Kullanım ve özellikleri.
KYLIX: Linux üzerinde Görsel programlama Kylix tanımlaması, Kylix uygulama platformları, Kylix’in yeni sürümü Kylix3, Bileşen ekleme yöntemleri, Veritabanı ile kullanımı ve ek bileşenler, Örnek uygulamalar.
Kylix Paketi Kylix; Delphi kütüphanesinin, Linux GUI birimini destekleyecek biçimde tasarlanması ile oluşturulan programlama paketidir. Windows ortamında program geliştirme aracı olarak kullanılan Delphi’nin Linux platformuna uygun hale getirilmesi diyebiliriz. Kısa zamanda geniş çapta bir yenilemeye dönüşerek Borland ailesinin yeni ve farklı bir üyesi olmuştur.
Özellikleri Üç paket halinde kullanıcılara sunuluyor: Enterprise, Professional, Open Edition. Kolay kullanım ara yüzleri oluşturma (GUI). Nesneye bağlı programlama (Object Oriented). Veritabanı uygulamaları geliştirme. Web ve Web Servisleri uygulamaları geliştirme. Komponent kütüphanesi (CLX) desteği ile yeni bileşenler ekleyebilme. İstemci-sunucu uygulamaları geliştirme. Kullanıcının Delphi veya C++ ile çalışabilmesi
Kylix 3 Deneme Sürümü Hangi Linux versiyonu destekler Redhat 7.2 Mandrake 8.2 Suse 7.3 ve üst versiyonları Download www.borland.com/kylix > tar -xvzf kylix3_trial.tar.gz dosya açılır, /usr/local/kylix3 dizini altına kopyalanır, mailinize gelen reg89.txt dosyasini /usr/local/kylix3 altına kopyalayın ~/kylix3> sh setup.sh –m komutu ile kurulum başlar. ~/kylix3/bin>. /kylixstart komutu ile çalıştırın.
Kullanım Delphi’ye benzer arayüz ile hızlı ve kolay kullanım. Borland Delphi ve Kylix, ortak gramer olarak ObjectPascal (Object Oriented Pascal - OOP) dili kullanır. Delphi ile yazılmış kodlar library ayarlarını yapmak suretiyle Kylix üzerinde de çalışır. Delphi Windows ortamında Win32 arabirimini kullanır. Yazılan kodları bu arabirime çevirir. Kylix Linux ortamında Xwindow sistemini yöneten Qt arabirimini kullanarak derleme yapar.
Bileşen Yükleme Bileşenler genellikle kurulumunu açıklayan bir dosya ile birlikte gelirler ve o açıklamaya göre kurulumu yapılır. Başlıca siteler: www.torry.net www.delphi32.com www.delphiturk.com (Türkçe) zeoslib.sourceforge.net (Veritabanı araçları) www.fast-report.com (Raporlama araçları) www.teechart.com (Grafik çizim araçları) Kylix’te eksikliği hissedilen raporlama, veritabanı ve grafik araçlarını kurmanız tavsiye edilir.
Bileşen Yükleme
Veritabanı Uygulamaları Kylix; Oracle, DB2, Informix, Red Hat Database, PostgreSQL, MySQL, and InterBase veritabanlarını destekler. Delphi’de olduğu gibi veritabanı motoru ile gelmez, kullanılacak veritabanı sunucusu sisteme kurulur ve program tarafından bağlantısı sağlanarak işlemler yapılır. Kylix içerisinde gelen dbexpress bileşeni veritabanı bağlantısını ve işlemlerini sağlar. Veritabanı bağlantı ve işlemlerini sağlayan bileşenleri, önceden açıklanan sitelerden indirebilirsiniz.
Veritabanı ile bağlantı
Linux üzerinde veritabanı Bir veritabanı sunucusu kurmak, izlemek, sorgulamak ve diğer işlemlerini yapmak için 3 yazılımı kullanmamız gerekiyor. MySQL (Veritabanı modeli) Apache webserver (server durumuna dönüştürme) Phpmyadmin (MySQL veritabanı izleme aracı) Kurulumlardan sonra safe_mysql komutu ile Mysql çalıştırılır, izlemek için web browser adres kutusuna localhost.localdomain/phpmyadmin yazarak veritabanı işlemlerimize başlayabiliriz. Her açılışta veritabanımızın devreye girmesini istiyorsak rc.local dosyasına safe_mysql eklenir.
Kylix
C ile programlama Esnek ve zengin kütüphane desteği. Yeni başlayan ve geliştirme amaçlı kullanım için ideal ve kapsamlı bir dil (basit ve güçlü yapı). Çoğu işletim sistemleri C dili kullanılarak yazılmıştır (Unix, Linux, Windows API). Gelişmiş programlama dilleri temelde C’yi kullanır (C++, CBuilder, Java). Linux üzerinde sistem programlama ve netwok işlemleri yapılabilir. Veritabanı işlemleri için kullanılabilir.
Kullanım: Linux üzerinde herhangi bir editor ile yazılır ve Linux komutu ile derlenir, derleme sırasında hata oluşursa hatalar satır numarası ile bildirilir. Hazırladığımız programı deneme.c isminde kaydetmiş olalım, derlemek için; >cc –o deneme deneme.c >cc –o çalışacak_dosya hazırlanmış_dosya >. /deneme komutu ile çalıştırılır.
C yapısı #include<.....> Kullanılacak kütüphane dosyaları. int fonk(); int a; Fonksiyon ve global variable tanımı int main(arguman kullanılabilir) Ana yapı başlangıcı { int a=3; Local variable tanımı(herhangi yerde tanımlanabilir) İşlemler, döngüler, fonksiyon çağırma işlemleri. fonk(); } int fonk() { Fonksiyonun yapacağı işlemler }
C içinde Linux’a has özellikler Windows veya Dos ortamında kullandığımız C, Linux’a daha zengin kütüphanelerle gelir. Sistem Programlama: Bir program içerisinde birden fazla process (işlem) çalıştırma. Çok karmaşık ve zor yapıları process’lere paylaştırarak çözümleyebiliriz. i=fork(); Yeni process oluşturma aşaması if (i) {....} Process oluşmuşsa işlemleri yapabiliriz. - Oluşturulan process sanki yeni bir programmış gibi diğerinden ayrı olarak programlanabilir.
Bilgisayarlar arası iletişim sağlanabilir. Proccessler arası iletişim sağlanabilir. Ayrı ayrı çalışan iki process arasına sanal borularla köprüler(Pipe) kurulur ve iletişimi sağlanır. Named ve Unnamed Pipe. Network Programlama: Bilgisayarlar arası iletişim sağlanabilir. Network ortamında mesaj veya dosya alışverişi, istemci-sunucu işlemleri, TCP/IP veya UDP protokollerinin kullanımları ile gerçekleştirilebilir. Bu amaç için genelde soketler kullanılır, IP ve port numaraları aracılığı ile iletişim gerçekleşir.
Günümüz network iletişim sistemlerinin (software) temeli, bu ilkelerden oluşmaktadır. Programlamacı olarak network programlama ile uğraşıyorsanız C size güzel ve hızlı kütüphaneler sunuyor. C dilinin bu özelliklerini kullanarak standart programlardan ziyade network ortamında çalışabilen veri transferini network ortamına aktarabilen istemci-sunucu mantığı ile çalışan yazılımlar geliştirilebilir. Web server’dan chat programına kadar profesyonel amaçlı yazılımlar geliştirilebilir.
C ile Veritabanı işlemleri Kylix’te olduğu gibi çeşitli veritabanlarını destekler ve veritabanı bağlantısı sağlar. Grafiksel dillere göre hızlı çalışır, binlerce kaydı olan kütüklerde bu hissedilir. Görsel açıdan zayıf olduğundan dolayı programcının arayüz hazırlamasında fazla kod yazması gerekir. Grafik ortamını kaldıramayan düşük konfigürasyonlu bilgisayarlarda çok rahat çalışır. Program çalışması esnasında, sistem kaynaklarını daha az tüketir.
Gerekli Ayarlamalar Sistemimizde veritabanı kurulu olması gerekli, (Mysql kurduğumuzu varsayalım) eğer program haricinde görsel olarak işlemler yapmak istiyorsak Apache server ve phpmyadmin türünden yazılımları kurmamız gerekir. Program içerisinde kütüphane kısmına; #include<“mysql.h”> satırını eklememiz gerekir ki bu veritabanımız ile program arsındaki bağlantı anahtarıdır(dosya). Derleme sırasında dosya bulunamadı gibi hatalar alınırsa mysql’ in kurulu olduğu dizinde bu dosya bulunabilir ve programın klasörüne taşınır.
Ayarlar devamı... Diğer bir ayar ise derleme sırasında gerçekleşir ki bu, bağlantı kurulacak veritabanın path’ini belirterek gerçekleştirilir. >cc –o dnm dnm.c -L/var/lib/mysql -lmysqlclient /usr/lib/mysql: veritabanımızın bulunduğu path. Derleme sorunsuz tamamlanmışsa ayarlarımız yapılmış ve eğer bir sorun olursa sorunu program içerisinde yazdığımız kodlarda aramamız gerekir
Program içinde kullanımı #include "mysql.h" #include <stdio.h> MYSQL my_connection; int main() { mysql_init(&my_connection); mysql_real_connect(&my_connection, "127.0.0.1", "root",NULL, "yasar",0,NULL,0); char query1[100]={"SELECT * FROM tablo1"}; mysql_query(&my_connection,query1); }
mysql_. uzantısı ile başlayan bütün fonksiyonlar mysql mysql_..... uzantısı ile başlayan bütün fonksiyonlar mysql.h dosyası içerisinden çağrılırlar ve veritabanımızla ilgili bütün fonksiyonlarımızı bu şekilde gerçekleştiririz. Bütün fonksiyonlarını bilmemiz şart değildir, bize gerekli olan fonksiyonları mysql.h dosyası içerisinden veya aşağıdaki linkde bulunan dosyayı inceleyerek kullanabiliriz. www.uni-regensburg.de/www_server/dokumentation/mysql/manul_clients.html Ayrıca sistem programlama için dokümanlar; cmpe.emu.edu.tr/kostin/PUBLIC/CMPE343.LEC/
Örnek programlarla açıklamalarımız devam ediyor... Kylix arayüzü tanıtımı Bileşen yükleme Veritabanı açılışı ve yöneticiliği Kylix ile veritabanına bağlantı sağlama C ile veritabanına bağlantı sağlama
Katıldığınız için Teşekkürler!