FAYDALI BİLGİLER :.
ANA SAYFA
 
     
  web tasarım web programlama web site tasarımı asp.net İnternet Nedir?
  web tasarım web programlama web site tasarımı asp.net İnternetin Tarihçesi
  web tasarım web programlama web site tasarımı asp.net Ftp Nedir?
  web tasarım web programlama web site tasarımı asp.net Outlook Ayarları
  web tasarım web programlama web site tasarımı asp.net İnternet Kısaltmaları
  web tasarım web programlama web site tasarımı asp.net Arama Motorları
  web tasarım web programlama web site tasarımı asp.net TCP/IP Nedir?
  web tasarım web programlama web site tasarımı asp.net Intranet Nedir?
  web tasarım web programlama web site tasarımı asp.net E-Posta Nedir?
  web tasarım web programlama web site tasarımı asp.net İnternet Terimleri
  web tasarım web programlama web site tasarımı asp.net Ağ Protokolleri
  web tasarım web programlama web site tasarımı asp.net Evinizi Ağlandırın
  web tasarım web programlama web site tasarımı asp.net Anakart
  web tasarım web programlama web site tasarımı asp.net Ağ Yüklenmesi
  web tasarım web programlama web site tasarımı asp.net 3D Mini Sözlük
     
  web tasarım web programlama web site tasarımı asp.net 3D Studio MAX
  web tasarım web programlama web site tasarımı asp.net Frontpage Kullanımı
  web tasarım web programlama web site tasarımı asp.net Javascript Nedir?
  web tasarım web programlama web site tasarımı asp.net Portlar
  web tasarım web programlama web site tasarımı asp.net Dos Komutları
  web tasarım web programlama web site tasarımı asp.net CGI Nedir?
  web tasarım web programlama web site tasarımı asp.net Flash Nedir?
  web tasarım web programlama web site tasarımı asp.net Flash'ta ASP Kullanımı
  web tasarım web programlama web site tasarımı asp.net Veri Tabanı Nedir?
  web tasarım web programlama web site tasarımı asp.net XML Nedir?
  web tasarım web programlama web site tasarımı asp.net HTML Dersleri
  web tasarım web programlama web site tasarımı asp.net Bilgisayarın Bileşenleri
  web tasarım web programlama web site tasarımı asp.net Windows NT
  web tasarım web programlama web site tasarımı asp.net UNIX İşletim Sistemi
  web tasarım web programlama web site tasarımı asp.net USB Nedir?
     
  web tasarım web programlama web site tasarımı asp.net SQL Sorgulama Dili
  web tasarım web programlama web site tasarımı asp.net Windows 2000
  web tasarım web programlama web site tasarımı asp.net ASP (Active Server Pages)
  web tasarım web programlama web site tasarımı asp.net PHP
     
     
     
     
     
     
     
     
     
     
     

 


  CGI NEDİR? :.
 



 

GİRİŞ

Bu çalışma, Common Gateway Interface (CGI) adı verilen, WWW'de kullanıcı arayüzleri oluşturulmasını sağlayan sistem hakkında genel bir bilgi vermek amacıyla hazırlanmıştır.
CGI web üzerinden kullanıcı arayüzleri hazırlamak için kullanılan en yaygın yöntemdir. En yaygın kullanım alanları arasında veri tabanı sorgu sistemleri sayılabilir. Biz bu çalışma çerçevesinde hazırladığımız basit örnek uygulamalarda CGI kullandık. Bu çalışmada genel olarak CGI tanıtımı yapılmakta ve özellikle Delphi ile CGI programları hazırlama konusu çeşitli örneklerle açıklanmaktadır.

CGI Nedir?

CGI (Common Gateway Interface), Web Servisleri ile bu servislerin dışındaki programlar arasında etkileşim (ortak çalışma) platformu oluşturmak için geliştirilmiş bir standarttır. CGI, aslında bir programdır. Web'in statik yapısına, HTML kodu içinden çağrılan CGI programları dinamik bir nitelik kazandırmaktadır.
Internet üzerindeki hemen bütün kullanıcı arayüzleri, Common Gateway Interface (CGI), kullanılarak hazırlanmıştır. CGI www kullanıcılarının www sunucusunun çalıştığı makine üzerinde belirlenen programları çalıştırmasını sağlayan bir sistemdir.
CGI’yı geliştirmedeki en büyük amaç Web sunucusu üzerinden sunucu tarafından programlar çalıştırabilmekti. Bu yeni teknolojiye Common Gateway denilmesinin sebeplerinden en önemli üçü şuydu:

  • CGI programları sunucudan bağımsız olmalıydı
  • CGI programları hemen her dille yazılabilmeliydi
  • Hemen her istemcide çalışabilmeliydi

Dolayısıyla, CGI bir programlama dili değildir. Piyasadaki, bir girdiyi işleyip, çıktı üretebilen her dil CGI programları geliştirmek için kullanılabilir.
CGI programlarında temel fikir, uygulamaların mantık katmanının, sunucu tarafında oluşturulmasıydı.

CGI ile hazırlanan kullanıcı arayüzlerinin başlıca avantajlarını aşağıdaki gibi sıralyabiliriz:

  • Kolay ve hızlı hazırlanabilmesi. CGI arayüzlerinde, diğer kullanıcı yüzlerindeki birçok çabaya gerek yoktur. Kullanıcıyla ilişkiyi www tarayıcısı (web browser) yaptığından, siz zaten web tarayıcısı için çoktan hazırlanmış karmaşık kullanıcı arayüzü işlemleriyle uğraşmak zorunda kalmazsınız.
  • İstediğiniz herhangi bir programlama dili kullanabilirsiniz. Biz uygulamamızda  Delphi kullandığımız için aşağıda CGI programlarını özelde Delphi ile nasıl yazacağınız anlatılmıştır, ama deneyimli programcı herhangi bir programlama dili için gerekli ipuçlarını aşağıdaki açıklamadan çıkarabilir.
  • Kolay kullanılır, kullanıcının alışık olduğu arayüzler. CGI arayüzleri Internet kullanan herkesin alışık olduğu Netscape, Lynx, Mosaic gibi web tarayıcılarından yararlanır. Bu nedenle programınız kullanıcının çoktan alışık olduğu bir arayüz kullanmış olursunuz.
  • Değişik ortamlarda çalışabilir. Programınızın asıl çalıştığı sistem web sunucusunun çalıştığı sistem olmasına karşın, programınıza bilgisayar ağına bağlı herhangi bir bilgisayardan ulaşılabilir. Kullanabileceğiniz hemen hemen bütün işletim sistemleri ve ortamlar için web tarayıcısı bulabileceğiniz için, yazdığınız tek program birçok farklı ortamdan kullanılabilir.
  • Dağıtık ortamlarda kullanılabilme olasılığı. Programınızın kullanıcı arayüzü (web tarayıcısı) başka bir ortamda, web html formlarınız başka bir sistemde, CGI programlarınız başka bir sistemde olabilir.

Bu avantajların yanında sayılabilecek bir kac dezavantaj,

  • Dikkatsiz yazılmış CGI programları güvenlik açıklarına neden olabilirler.
  • Kullanıcı arayüzleri çok kolay ve hızlı oluşturulmalarına karşın, web tarayıcısının yetenekleriyle sınırlıdır.

CGI programcıklarını (script) kullanarak okuyucu ile gerçek bir etkileşim içinde güçlü, kişisel ve profesyonel Web yayımları yaratabilirsiniz. CGI programcıkları Web sunucusu ile diğer uygulamalar arasında bir ağgeçit gibi davranan dış kaynaklı programlardır. CGI programcıklarını okuyuculardan gelen girişleri işlemek için kullanabilir, böylelikle okuyucu ile çift yönlü bir iletişim yolu kurabilirsiniz. Okuyucu girişleri doldurma formlarının verileri şeklinde olabildiği gibi veri tabanı sorgulamaları için anahtar sözcükler ya da okuyucunun inceleyicisinin ya da bağlantının tanımladığı değerler şeklinde de olabilir.
CGI programcıklarınızı bu girişleri bir indekse veri olarak eklemek, veri tabanında sorgulama yapmak, kişisel dokümanlar yaratmak için kullanabilirsiniz. CGI programcıklarının en mükemmel özelliği karmaşıklıklarını kullanıcıdan gizlemeleridir. Web üzerinde bir doldurma formunu ya da bir haritayı kullanırken ne olduğunu bilmeseniz de bir ağgeçit programcığı kullanıyor olabilirsiniz. Bu nedenle her şey otomatik yapılıyor gibi görünür. Veriyi girin, farenin düğmesine basın ve bir an sonra sonuç görüntülensin. Bu çalışmada fareye tıkladıktan sonra sonuç görülünceye kadar gerçekte neler olduğu anlatılmaktadır. CGI programcıkları hakkında neler bilmeniz gerekiyorsa hepsini, CGI programcılarının ne olduğunu, nasıl ve neden kullanıldıklarını bu çalışmadan öğrenebilirsiniz.

Niçin CGI Öğrenmeliyiz?

Eğer web sayfaları tasarlıyorsanız sayfanızı kaç kişinin ziyaret ettiğini öğrenmek, ziyaretçilerin size mesaj bırakmalarını yada bir sipariş geçmelerini sağlamak ve buna benzer şeyler isteyebilirsiniz. CGI, tüm buları ve daha fazlasını yapmak için size birtakım imkanlar sunar. Günümüzde CGI, basit bir sayaç veya e-posta programından tutun da daha karmaşık ve veri tabanı kullanan pek çok siteye kadar her yerde kullanılmaktadır. Mesela; hepimizin bildiği amazon.com, yahoo.com veya hotmail.com sitelerinin gerisinde hep CGI programlamanın olduğunu görürüz.

CGI programlarıyla neler yapılabilir?

Bir CGI programı genel olarak şu 4 adımdan geçer, ancak bunların bazıları her uygulamada olmayabilir:

  • Kullanıcıdan bilgi alma
  • Alınan verilerin bir veri tabanına işlenmesi
  • İstenen verilerin veri tabanından bir sorgu sonucu alınması
  • Kullanıcıya işlenmiş bilgilerin gönderilmesi

Bu adımları kullanabilecek uygulama sayısı sınırsız gibidir. Birkaç örnek vermek gerekirse:

  • Öğrencilerin, isimleri ve numaralarıyla beraber almak istedikleri derslerin kodlarını bir Web sayfasından girmesi, ve bunların bir veri tabanına işlenerek, öğrenci işleri ve danışmanları tarafından gözden geçirilmesi
  • Siteyi ziyaret eden kişilerin bırakacağı e-posta adreslerine, sitedeki yeniliklerin düzenli olarak postalanması
  • Ziyaretçilerin, site hakkında görüşlerini bildirebileceği bir erişim formu
  • Site hakkında anketler
  • Yerel ağın bir program tarafından sürekli gözlenerek, sorunların bir Web sayfasında gerçek zamanlı yayınlanması
  • Site içi arama motorları (en kolaylarından biri olmasına rağmen hep ihmal edilen bir özelliktir)
  • Web tabanlı e-posta, haber öbekleri okuma/gönderme
  • Web tabanlı stok yönetimi, muhasebe, iş akışı, proje yönetimi vb (biraz zor olsa da)
  • İçerik oluşturucuların, Web sayfalarını sunucuya koyması için, dosya yöneticisi tarzı bir arabirim.
CGI Programcığı Nedir?

CGI programcıkları Web sunucusu üzerinde çalışan dış kaynaklı programlardır. CGI programcıklarını yüksek etkileşimli Web yayınları yaratmak için kullanabilirsiniz. Web sunucuları üzerinde kullanılan yabancı kaynaklı programların standartları ve ortak ağgeçit arayüzünün diğer uygulamalarla etkileşiminin nasıl olması gerektiği belirlenmiştir. Ortak, ağgeçit ve arayüz sözcükleri bu standartların anahtar sözcükleridir ve nasıl çalıştığını tanımlar.

CGI; programcığın erişilebilir olmasını sağlamak için ortak bir yol tanımlayarak, herhangi bir kimsenin kullandığı ortam ne Olursa olsun bir CGI programcığına bilgi geçirmesini sağlar.
CGI; programcık, sunucu ve diğer uygulamalar arasında bir bağlantı ya da ağgeçit tanımlayarak dış kaynaklı programları genelleştirilmiş girişler olarak kabul edilebilmesini ve diğer uygulamalara bilgi aktarılabilmesini mümkün kılar.
CGI; kullanıcıların dış kaynaklı programlara erişebilmesi için bir arayüz ya da bir yol tanımlayarak dış kaynaklı programlar için gerçekleştirilen karmaşık arayüz işlemlerini birkaç basit prosedüre indirger.

CGI’yı geliştirenler Web yayımcılarının okuyucularını karmaşıklıklardan korumasını sağlamak için güçlü ve eklenebilir nitelikte özellikler yaratmak üzere bir CGI standardı oluşturmak amacıyla bu anahtar kavramlar doğrultusunda çalışmışlardır. Okuyucunun tek yapması gereken iş, bir görüntü haritasındaki bir alana tıklamak ya da doldurma formunu tamamladıktan sonra teslim etmek olacaktır. Her şey farenin tuşuna dokunur dokunmaz otomatik yapılıyor gibi görünür ve kullanıcı nasıl veya niçin gibi sorular sorma durumuyla karşılaşmaz, her şey kendi kendine yürür.
Bir Web yayımcısı için özellikle güçlü Web yayımları yaratırken CGI programcıklarının sunduğu avantajlardan faydalanmak istiyorsa, CGI programcığının nasıl çalıştığını bilmek çok önemlidir.
Kullanıcı sadece yaptığı işlerin sonuçlarını görür arkadaki manzaradan habersizdir. Programcıklar yürütülürken arka planda gerçekleşen olaylar şöyledir:

  • Okuyucunun inceleyicisi girişleri Web sunucusuna aktarır.
  • Sunucu sistem sırası geldiğinde girişleri CGI programcığına aktarır.
  • CGI; programcığı girişi işler ve eğer başka bir uygulama gerekiyorsa uygulamayı programcığa geçirir ve çıkışı Web sunucusuna gönderir.
  • Web sunucusu okuyucunun cevabını onun inceleyicisine geri yollar. Bir CGI programcığının çıkışı; bir veri tabanı sorgulamasının sonucundan, okuyucunun cevabına göre yaratılmış yeni bir dokümana kadar her şey olabilir.

UNIX sistemlerinde CGI programcıkları usr dosya sistemi içinde cgi-bin olarak adlandırılan kataloglara yerleştirilmiştir ve CGI uygulamaları da yine usr dosya sistemi içinde cgi-scr olarak adlandırılan kataloglara yerleştirilmiştir. Diğer sistemlerde CGI programcıklarınızı ve uygulamalarınızı nerelere yerleştirmeniz gerektiği Web sunucu dokümanında açıklanır.

CGI Programcıklarınız için bir Programlama Dili Seçme

CGI programcıkları ağgeçit programcıkları (gateway scripts) olarak adlandırılır. Programcık terimi shell programcığının arkasındaki UNIX ortamından gelmektedir, ancak ağgeçit programcıkları bir programcık formatında olmak zorunda değildir. Ağgeçit programcıklarını çalıştırılabilir bir dosya yaratabilen herhangi bir programlama dilinde yazabilirsiniz. En çok kullanılan diller şunlardır:
Bourne Shell
C Shell
C/C++
Perl
Python
Tel
Visual Basic
Delphi

Programcık yazma dillerinin önde gelen ikisi:
JavaScript
VBScript

Programcıklarınızı yazmak için kullanabileceğiniz en iyi programlama dili tabii ki Web sunucunuz üzerinde kullanılabilen ve ihtiyaçlarınıza cevap verebilen dil olacaktır. Tercihen bu dil Web sunucunuz üzerinde zaten mevcut olmalıdır ve siz bu dili profesyonel bir şekilde kullanabiliyor ya da en azından bu dil hakkında bir bilgi birikimine sahip olmalısınız. Şunu da unutmayın ki, çoğu kullanıcı bilgilerini metin olarak girer. Bu nedenle kullanacağınız dil karakter katarlarını desteklemeli ve onlarla ilgili önemli işlemleri yapabilmelidir.
Dilin uygun olup olmadığını öğrenmenin en kolay yolu bunu sunucu sistemden sorumlu sistem yöneticisine ya da Webmaster'a sormaktır. UNIX sistemleri üzerinde çoğu Web sunucusunda olduğu gibi aşağıdaki UNIX komutlarını kullanarak hangi dillerin sisteminizde kullanılabilir olduğunu öğrenebilirsiniz.
which
whereis
which ve whereis komutlarının her ikisi de UNIX sistemlerinde kullanılabilir. Bu komutları shell komut satırından girebilirsiniz, komutun ardından aramayı ne üzerine yapacağınızı belirleyen bir anahtar sözcüğü, örneğin kullanmayı istediğiniz programlama dilinin adını, girmelisiniz. UNIX sunucunuzun Perl'i destekleyip desteklemediğini belirlemek için aşağıdaki komut satırlarından birini girmelisiniz:
which Perl
ya da
whereis perl
Perl, C/C++ ve UNIX shell gibi sık kullanılan popüler programcık yazma dilleri aşağıda, neden ve ne zaman kullanılmaları gerektiği üzerinde durularak anlatılmaktadır. Her bölüm niteliklerin ve sistem desteklerinin bir listesini içerir. Sistem destekleri şöyle özetlenebilir:

İşletim Sistemi Desteği    - Dilin kullanıldığı işletim sistemi
Programlama Düzeyi       - Dili kullanma ve öğrenme zorlukları
İşleme Karmaşıklığı        - Dilin bir işlemi gerçekleştirme karmaşıklığı

Metin İşleme Yetenekleri- Metin ve katarları işleme yeteneği

Genel olarak hangi dilin seçileceği, aslında bir mühendislik problemi gibidir ve şu soruların cevaplarında saklıdır:

  • Platform seçimi:

Bu genel olarak bir işletim sistemi ve Web sunucusu seçimidir. Bazı diller, işletim sistemi seçildiği anda dışarıda kalmaktadır. Örneğin, MacOS dışında bir seçim yapıldığı anda AppleScript de dışarıda bırakılmaktadır. Genel olarak Web sunucularında, sağladıkları yüksek güvenlik ve sağlamlık nedeniyle, Unix ve türevi işletim sistemleri seçilmelidir. Örneğin, Solaris, HP-UX, Linux ve FreeBSD sunucu olarak en çok kullanılan Unix sistemleridir.

  • Dil seçimi:

Kendini kabul ettirmiş birçok dil, birden fazla işletim sistemine taşınmıştır. Örneğin Perl ve C, varolan bütün işletim sistemlerinde vardır.

  • Uygulamanın çalıştırılma sıklığı:

Eğer yazılacak uygulama, sunucunuzun bütün trafiğini ön işlemden geçiriyorsa, ya da 1 gün içinde 100,000 gibi bir sıklıkta çalışmak zorundaysa, yorumlanan (interpreted) diller yerine (Perl, Python, Tcl, PHP, kabuk programları vb) derlenen (compiled) dillerin (C/C++ vb) kullanılması daha yerinde olur.
Tersi durumu ele alırsak, uygulamaların, sunucuya çok fazla yük bindirmeyeceği biliniyorsa, yorumlanan diller işin daha kısa sürede yapılmasını sağlarlar, çünkü yorumlanan dillerin yapısı genel olarak daha basittir. Ancak bu durumda dilin basitliği nedeniyle kendine fazla güvenen acemi geliştiricilerin hata yapma olasılığı artar.

  • Örnek kodların ve harici modüllerin bulunabilirliği:

Özellikle büyük uygulamaların yazılımında, eğer bu iş için ayırabilecek yeterli personeliniz yoksa, örnek kodlar çok işinize yarayacaktır. Bu kodları inceleyerek, programınıza uygun kısımları kendi kodunuzun içine yapıştırabilir, ya da teknikleri inceleyerek ilham alabilirsiniz. Eğer programın belli kısımlarını yazamayacak gibiyseniz, ya da dahası, bu işi yapan modüller piyasada mevcutsa, bu modülleri programınızın içine tümleştirebilirsiniz. Örneğin Java için, piyasada birçok hazır modül bulunmaktadır. Ayrıca, bu modüller Internet üzerinden de ücretsiz olarak kullanıma açılmış olabilir. Özellikle Perl için konuşmak gerekirse, birçok kütüphane Internet'te mevcuttur. Bu modüllerin birçoğu yukarıda da belirtildiği gibi, uzun süredir kullanımda olduğu için, güvenirlikleri, milyonlarca kullanıcı tarafından ve birçok farklı durum için test edilmiştir.

  • Sisteme tümleştirme:

Yeni yazacağınız programlar, sisteminizde bulunan diğer programlarla iletişim kurmak zorundaysa, bu da dil seçiminizi etkileyecektir. Örneğin elinizde RMI üzerinden veri bekleyen bir Java programı varsa, bu programla CGI programınız arasında bağlantı kurmak için sizin programınızı da Java'yla yazmanız akıllıca olur. Bir C ya da Perl programıyla şansınızı denemek için, Java RMI tariflerine %100 uyan bir modül yazmanız gerekecektir.

Yorumlanan diller mi, derlenen diller mi?

Yorumlanan dillerin en büyük dezavantajlarından biri kullanıcıdan gelen verilerin, komut satırına aynen aktarılabilmesidir. Ayrıca, bir dezavantaj da programların kodlarının ve çalışır hallerinin aynı olmasıdır, halbuki derlenen dillerde, çalışan programı ele geçiren biri kaynak kodunu ele geçirmediği için programı kolayca inceleyemez ve güvenlik deliklerini bulamaz. Son olarak, yorumlanan dillerin çalışma hızı derlenen dillere göre daha yavaştır.
Derlenen dillerin hızlarına rağmen büyük dezavantajı da daha uzun geliştirme süresi, programa kısıtlı kişilerin müdahalesi gibi sorunlardır.
Ancak burada iki noktayı belirtmek gerekir, bu durum yavaş yavaş değişmektedir. Apache sunucusu için geliştirilen mod_perl ve mod_php modülleriyle, yorumlanan diller sunucu tarafından çok daha hızlı çalıştırılabilirler. Ayrıca, perl'deki tainting gibi mekanizmalarla, güvenlik konusunda ciddi adımlar da atılmıştır ve komut satırına gönderilen verilere kısıtlamalar getirilebilir.
Dolayısıyla, yorumlanan diller (artık çok az) daha yavaş olsa da, çok kısa zamanda uygulama geliştirilebilmeleri nedeniyle derlenen dillere tercih edilebilirler.

Ortak programcık dilleri ile ilgili bu başlıktan sonra en yeni iki programcık yazma dillerinden olan JavaScript ve VBScripcs incelenmektedir. Çalışmamızın en son bölümünde de asıl amacımız olan; Delphi ile CGI programcığı yazma konusu örneklerle anlatılmaktadır.

UNIX Shell Kullanma

UNIX işletim sistemi iş dünyasında, eğitim ve araştırma alanlarında geniş çapta kullanılmaktadır. Kullanılan ortama göre UNIX işletim sisteminin çok çeşitti değişkenleri bulunmaktadır. Aynı üretici tarafından üretilen ortamlarda bile UNIX iştetim sisteminin farklı değişkenleri kullanılmış olabilir. Örneğin DEC'ce Dec-Alpha, Decstation ve Dec OSF değişkenleri bıılunur.
Bu işietim sistemlerinin ortak noktası aynı çekirdeği kullanmalarıdır. Çogu UNIX iştetim sistemi Berkeley UNIX (BSD), AT&T System V ya da BSD ve System V'in bir birleşimine dayanmaktadır. BSD ve System V'in ikisi de şu üç shell programcığı yazma dilini kullanabilmektedir
Bourne Shell

C Shell

Korn Shell
Programcığın ilk satırını inceleyerek Shell programcının hangi dilde yazddığını kolayca belirleyebilirsiniz. Bourne Shell prograımcıklarının i1k satırı şöyledir;
#! /bin/sh
C Shell programcıklarında ilk satır şöyledir;
#i!/bin/csh
Korn Shell programcıklarında ilk satır şöytedir;
#!/bin/ksh
Tüm UNIX shell'leri programcık yaratmak için kullanılan ve derlenmesine gerek duyulmayan diller olarak yorumlanabilir. Bourne Shell en temel shell'dir. C shell ise C programlama dilinin birçok niteliğini taşıyan geliştirilmiş bir shell'dir. Bourne Shell C Shell'den çok farklı yazım kuralları kullandığından Bourne Shell'de yazılmış bir programcık C Shell'de çalışmayacaktır. C Shell'in bu programcığı yorumlaması için programcığı yeniden ve C Shell'de yazmak gerekir.
Bazı programcılar C Shell'in geliştirilmiş niteliklerini Bourne Shell'in basit yapısı ile birlikte kullanmak istemektedir. Bu ihtiyaçtan Korn Shell doğmuştur. Korn Shell en fazla tercih edilen shell'dir. Bourne Shell'in işlevselliğine sahiptir ve C Shell'in bazı niteliklerini desteklemektedir. Bourne Shell'de yazılmış bir programcık Korn Shell tarafından doğrudan yorumlanabilir. Böylece Korn Shell'i kullanabilme imkanına kavuştuğunuzda Bourne Shell programcıklarınızı çevirmek için zaman harcamanız gerekmeyecektir. Korn Shell her geçen gün daha da popülerleşmesine rağmen Bourne Shell ve C Shell en çok kullanılan iki UNIX shell'idir. Belli bir shell'i kullanıyorsanız Bourne, C ve Korn Shell'ler arasındaki farklar yanlızca görüntüseldir. Kullandığınız shell'i aşağıdaki komutları yazarak istediğiniz anda değiştirebilirsiniz:
/bin/sh       Bourne Shell’e geçmek için
/bin/csh     C Shelt’e geçmek için
/bin/ksh     Korn Shell’e geçmek için
Çeşitli shell’ler arasındaki gözlenebilir farklılıkları anında görmek mümkündür. Örneğin Bourne Shell’in önceden belirlenmiş komut yorumlayıcısı $ işaretidir. C shell’in önceden belirlenmiş komut yorumlayıcısı genellikle ana bilgisayar adı ve bir boşluğun takip ettiği kullanıcı adıdır. Bunun ötesinde C Shell, Bourne Shell’de olmayan, tarih fonkşiyonunu, komutların takma adlarını ve bir çok diğer kontrolü destekler. Fakat genellikle bu tür farklılıktar CGI programcıları için önemli değildir. Sizi asıl ilgilendiren shell'in doğrudan desteklediği nitelikler ve işletildiğinde programcıkların davranışlarının nasıl olduğu olmalıdır.
Bu nedenle Bourne Shell daha çok tercih edilir. Bourne Shell diğer shell’ler içinde en küçügü ve en etkilisidir. Bu yüzden, bir Bourne Shell programcısı genellikle daha hızlı çalışır ve daha az sayıda sistem kaynağı kullanır. Diziler gibi daha ileri nitelikler kullanmak isterseniz Korn Shell’i kullanmalısınız. Korn Shell Bourne Shell’den daha fazla niteliğe sahiptir ve biraz daha fazla sayıda sistem kaynağına ihtiyaç duyar. Fonksiyon çağrıları yada ilişkilendirmeleri yapmak için C Shell’i kullanmalısınız. C Shell, Bourne ve Korn Shell’den daha büyük olduğundan genellikle C Shell’de yazılmış programcıklar daha fazla yetenek ve sistem kaynağı kullanımı gerektirir.
UNIX shell’leri metin işlemek için; sed, avk ve grep gibi hazır uygulamalar bulundurmasına rağmen bunlar geleneksel programlama dilleri gibi güçlü ve geliştirilebilir değillerdir. Basit işler gerçekleştirmek ve nispeten ileri düzeyde bir metni ya da dosyayı işlemek isterseniz shell programcıklarını kullanmayı tercih etmelisiniz.

İşletim Sistemi Desteği: UNIX
Programlama Düzeyi   : Temel
İşleme Karmaşıklığı     : Basit
Metin İşleme Yeteneği : Orta Derecede Gelişmiş

 

C/C++ Kullanma

Karmaşık işleri gerçeklemek için kendi programcıklarınızı kullanmak istiyorsanız büyük silahlarla donatılmışsınız demektir. CGI programcıkları için en çok kullanılan iki gelişmiş dil C ve C++’tır. C, bugün kullanılan en popüler programlama dilidir. C++ ise C’nin nesne tabanlı kuşağıdır. Hem C ve hem de C++ ile kullanılmadan önce derlenmesi gereken programlar yaratılabilir. C ve C++’ın en büyük avantajı her türlü ortamda kullanılabilir olmalarıdır.
C kullandığınızda programcıklarınızı işletebilmek ve minimum sistem kaynağı kullanabilmek için bir hazırlık zamanı gerekir. C, 20 yıl önce geliştirildi ve o zamandan beri her an popülerliği artıyor. CGI programlayıcılarının C’yi tercih etmelerinin nedeni, derlenmiş C programcıklarının benzer işlevlere sahip diğer dillere göre çok küçük oluşudur. Küçük programlar minimum sistem kaynağı kullanırlar ve hızlı çalışırlar. Ancak C’deki metin işleme işlevlerinin zor olması nedeniyle C karmaşık bir dildir. Bu nedenle C’de uzman değilseniz, C’nin ileri metin işleme fonksiyonlarını kullanırken dikkatli olmalısınız.
Uzun vadede geliştirme maliyeti ana konu olduğunda yazılmış olan programcıkların yeniden kullanımı da söz konusudur. C++ nesne tabanlı bir dil olarak birçok fonksiyonu kullanmanızı sağlayan bir kütüphaneye sahiptir. Bu fonksiyonlar sizin programcığınızın çekirdeğini oluşturur ve diğer CGI programcıklarında yeniden kullanılabilirler. Örneğin, kullanıcı girişlerini sıralayan bir fonksiyon, bir girişi kullanarak veri tabanı arayan bir fonksiyon ya da bir çıkışı bir HTML dökümanı olarak gösterecek bir fonksiyon kullanabilirsiniz. Nesne tabanlı C++ diğer dillerden oldukça farklıdır. Daha önce nesne tabanlı bir dil kullanmadıysanız, C’yi de tanımıyor ve C++ kullanmayı planlıyorsanız bir öğrenme sürecine girmeye hazırlıklı olun.

İşletim Sistemi Desteği : UNIX, DOS, Windoars, MAC ve diğerleri
Programlama Düzeyi    : Gelişmiş
İşleme Karmaşıklığı      : İleri
Metin İşleme Yeteneği : Kullanımı zor

Perl Kullanma

Perl (Practical Extraction and Report Language - Pratik Çıkarım ve Raporlama dili); C elemanlarını ve awk, sed ve grep gibi UNIX shell niteliklerini metin katarlarını işleme ve rapor yaratma için güçlü bir dil yaratmak üzere birleştirmektedir. CGI programcıkları tarafından gerçekleştirilen metin işleme yöntemlerine yenilikler getirdiği için geniş çapca kullanılmakcadır. C ve C++ gibi Perl de her ortamda kullanılabildiği için tercih edilmektedir. Perl sürümleri düşünebileceğiniz her işletim sisteminde kullanılabilmektedir. Perl’i aşağıdaki amaçlar için kullanabilirsiniz:

  • Dosyaları, metinleri ve işlemleri kolayca işlemek
  • Metinlerden katar çıkarmak ve onları karmaşık yollarla işlemek
  • Kolay ve hızlı bir şekilde dosya, veritabanı ve indeks aramak
  • Veri sorgulama sonuçları ile ilgili ileri düzeyde rapor basmak

 

Pert, Bourne ve C Shell gibi yorumlanan bir dildir. Ancak Perl birçok yorumlanan dil gibi sınırlamalar içermez, çok büyük miktarlarda veriyi işlemek, çok karmaşık desen uydurma tekniklerini kullanmak için Perl kullanabilirsiniz, dosyaları çok hızlı bir şekilde tarayabilirsiniz. Perl katarlarının uzunluk sınırlaması yoktur, bütün bir dosya bir tek katar olarak kullanılabilir. Yazım kuralları C’ye çok benzemektedir. İf, for ve while gibi komutları aynen C’de kullandığınız gibi kullanabilirsiniz.
UNIX shell programcıkları gibi, Perl’de yazılmış bir programcığın ilk satırı da kaynak programın yol tanımını belirler. Bu nedenle Perl programcığının ilk satırı sisteminizde Perl’ü kurduğunuz yerin yol tanımını belirlemektedir. Bu yol tanımı genellikle aşağıdaki gibidir:
#!/usr/local/perl
veya
#/usr/local/bin/perl
Şaşırtıcıdır ki Perl, özellikle C veya UNIX shell hakkında temel bilgilere sahip olduğunuz takdirde öğrenilmesi ve kullanılması kolay bir dildir. Perl programcıkları genellikle UNIX shell programcıklarından daha hızlı ve derlenmiş C/C++ programcıklarından biraz daha yavaştırlar. Büyük miktarlarda metin işlemek için Perl’i kullanabilirsiniz.
Perl'in bazı avantajları avantajlarını şoyle sıralayabiliriz:

  • Perl öğrenmesi kolay bir dildir (yine de bazı programcılar kodlarını anlaşılması çok zor şekilde yazmaktadır).
  • Yukarıdaki sebeple, dünya üzerinde birçok geliştiricisi vardır ve karşılaşılan sorunların çözümünü Internet üzerinden bulmak kolaydır.
  • Yine aynı sebeple, varolan uygulamaları geliştirmek için, Perl bilen üniversite öğrencileri, mühendisler vb birçok kişi görevlendirilebilir.
  • CGI uygulamalarında en çok karşılaşılan görevlerden biri olan karakter dizilerinin işlenmesi (string manipulation) için Perl çok güçlü bir dildir.

Kendini kabul ettirmiş olması nedeniyle, Perl için yazılmış birçok modül bulunmaktadır ve bunlar uzun zamandır kullanıldığı için karşılaşılabilen birçok sorunun çözümü test edilmiş ve sağlamlaşmışlardır.

İşletim Sistemi Desteği : UNIX, DOS, Windows, MAC ve diğerleri
Programlama Düzeyi    : Gelişmiş
İşleme Karmaşıklığı      : İleri
Metin İşleme Yeteneği  : Kullanımı kolay

Kaynak : Anonim