Web programlama çok geniş bir alan ama iş sonuçta dönüp dolaşıp statik HTML taglarına dayanmakta. HTML kodlama yaparken TAG’ları kapatmak çok önemli …
471 - (Toplam) 0 - (Bugün)
Web programlama çok geniş bir alan ama iş sonuçta dönüp dolaşıp statik HTML taglarına dayanmakta. HTML kodlama yaparken TAG’ları kapatmak çok önemli …
471 - (Toplam) 0 - (Bugün)
Yeni işe başladığım şirketin sitesini yenileme çalışmalarına başlamıştık. XHTML standartlarına uyumlu, grafik şekillerden ziyade içeriğe önem veren bir site olsun diye bir karar almıştım ve ona uygun bir şekilde devam ettim. Veritabanı işlemleri için PHP kullandık. Böylece ilk etapta hosting konusundaki ayakbağından kurtulmuş olduk. Şirket sitesini yenilerken eski siteden kalma bir banner kullanmamız gerekti. Banner oldukça hoştu ancak eni yetersizdi. Dolayısı ile yenilemektense bunu biraz çekiştirmek daha mantıklı geldi.
Enini uzatıp boyunu CSS DIV boyutuna ayarladıktan sonra eski siteden bu bannerı görüntülen OBJECT kodunu alıp yapıştırdım. İşlem sorunsuzdu. Sonra imajlar için efekt yapmam istendi. Javascript kullanmaktense CSS Opaque filtrelerle yapmayı seçtim. Daha sonra bir menü için gene Javascripte dokunmadan CSS pulldown menu ekleyip kullandık.
Benim bilgisayarımda tüm işlemler sorunsuzdu. Bilgisayarım Firefox, IE7 ve Opera ile çalışıyordu. Ancak diğer ççalışanlardan bazıları sitenin ekranda “zıpladığını” belirterek durumu bildirdiler. Kontrol ettim ve haklıydılar. Ben bir sürü aşama geçmiş olduğumdan tabii ilk başladığı aşamayı kaçırmış oldum. Kısaca hatanın başlangıcı belirsizdi.
Adım adım geriye giderek çözmem gerekiyordu ancak layer sorunu olduğunu tahmin ediyordum.
1. Opaque kodlarını devre dışı bıraktım olmadı.
2. Css menuleri devre dışı bıraktım olmadı.
3. Z-index değerleri sildim olmadı.
4. Sonunda flashtan olmasın diye sallayıp görüntü parametrelerini sildim. Flash objeyi aktif etmek tıklayın yada enter tuşuna basın diye bir mesaj vermeye başladı. Objeye tıkladığım anda ise zıplama durmuştu.
Teşhis konulmuştu şimdi iş hangi parametre olduğunu bulmaya gelmişti. Sıra ile değerleri silip denedim. Wmode parametresini eski sitede “window” olarak kullanmışlardı. Bende öyle kullanmıştım… Transparent yapınca tüm site normal çalışmaya başladı.
Size tavsiyem xhtml ile wmode=window kullanırken ekstra dikkat
685 - (Toplam) 0 - (Bugün)
XHTML belgelerin kodlamasına bazı kurallar getiren bir standarttır. <html> etiketinden önce belge tipi, DOCTYPE ifadesi ile belirlenebilir. XHTML’de üç tip belge türü seçeneği vardır. Bunlar Transitional (Geçişli), Strict (Katı), Frameset (Çerçeve Kümeleri) ‘dir. XHTML ile kodlama yaparken en belirgin kurallar ise tüm tagların kapatılması ve taglar arası ?ezme? yapılmamasıdır.
Bu belge türü standart HTML üzerine kurulmuş olup artık geçerli olmayan HTML etiketleri ile de geriye dönük uyumludur. Genelde kullanılan belge türüdür. Belgeye <html> etiketinden önce aşağıdaki kod eklenir.
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>
Uygunluğu kabul edilmemiş etiketleri kabul etmeyen bir belge türüdür. Belgeye <html> etiketinden önce aşağıdaki kod eklenir.
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01//EN” “http://www.w3.org/TR/html4/strict.dtd”>
Bu belge tipi sayfada Frame kullanımına izin verir. Ancak Framelerin neden fazla kullanışlı olmadıkları nı daha önce incelediğimizden bu belge tipinin kullanımıda tavsiye edilmez. Belgeye <html> etiketinden önce aşağıdaki kod eklenir.
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Frameset//EN” “http://www.w3.org/TR/html4/frameset.dtd”>
1215 - (Toplam) 1 - (Bugün)
Örnek bir tablo
Öğrenci no Adı Soyadı Sınıfı Doğum Tarihi Cinsiyet Mezuniyet
1 İbrahim Kutluay 5 01.04.1974 Erkek Yüsekokul
3 İsmail Kutluay 4 02.02.1976 Erkek Üniversite
2 Tuba Şahin 2 03.05.1980 Kadın Lise
8 İbrahim Şahin 5 05.05.1983 Erkek İlkokul
4 İsmail Şahin 1 08.01.1986 Erkek İlkokul
9 Azize Şahin 2 02.04.1988 Kadın Lise
5 Türkan Şahin 1 01.01.1960 Kadın İlkokul
Şimdi genel mantık açısından tablo tasarımı konusunda fikir geliştirelim.
Son olarak ise arama işlevleri için hazırlık yapmaya gelelim. Şimdi Örneğin adı Tuba olan öğrenciyi bulmak istersek ne yapmak gerekecek. CSV örneklerini hatılarsak For each ile bütun tabloyu sırayla okuyup kontrol edeceğiz. Peki bu işlemi hızlandıramazmıyız. Örneğin yukardaki asıl tablonun asıl tablonun yanında birde anahtar dosya tanımlasak. Mesela numara alanı için
Öğrenci no Adı
1 İbrahim
2 İsmail
3 Tuba
4 İsmail
5 Türkan
8 İbrahim
9 Azize
Şeklinde kayıt tutan bir indeks dosyası tanımlasak ve burada kayıtlar sıralı olduğu için arama yöntemleri kullansak nasıl olur. Örneğimizde 8 nolu kayda ulaşmak için 5 kayda gidip kontrol etmek gerekirken ikiye bölerek arama yöntemi kullanılırsa neler olur.
Bu töntemde kayıtların en ortasındaki eleman bulunur. Örneğimizde bu 4 tür. Aradığımız değer bundan büyükse buraya kadar elemanlar iptal olur, küçükse bundan sonraki değerler iptal olur. Görüldüğü gibi ilk elemede kayıtların yarısı uçmakta. Daha sonra orta eleman 8 oluncaya kadar bu yüntem devam edecektir.
Bir adım daha ileri gidelim;
Bu öğrencilerin derslerini ve bu derslerden aldıkları notlarıda tabloda tutacak olursak ilk akla gelen öğrenci tablonsunun sonuna tüm dersleri eklemek olacaktır. Oysa lisede bu öğrenciler dallara ayrılacak ve her öğrenci sadece belli bir ders grubunu alacaktır. Kısaca bu yapı hem öğrenci tabslonu şişirecek hemde hiçbilgi girişi yapılamayacak bir sürü boş alana sebep olacaktır.
Şimdi o zaman dersleri ayrı bir tabloda tutalım demenin vakti gelmiştir. Yani
Öğrenci No Ders Adı Not 1 Not 2 Not 2 Sözlü Ortalama
1 Matematik 50 40 60 80 55
Yukardaki ilk örneğe bakılırsa daha pratik çünkü öğrenciler sadece aldıkları derslerden not almış ve kayıt edilmiş olacaklar. Ancak hala yapıalacak bir şey var; Gördüğünüz gibi ders adı metin bir alan ancak ders isimleri genelde belli. Yani bunlarıda cinsiyet gibi bir tabloda tutup, 0 ? Matematik, 1 Türkçe şeklinde tutmak mümkün.
Gördüğünüz gibi veriyi şu anda bir çok tabloya bölündü ama bir çok yer tasarrufuda sağlanmış oldu. Bu tasarımın Turkcell gibi 20 milyona yakın abonesi olan bir yerde yapıldığını düşünürseniz veritabanının boyunun kaç GB küçülmüş olabileceğini düşünün.
Programcılık dünyasında artık veritabanı tasarımı ayrı bir uzmanlık alanı haline gelmiştir. Yukarda saydıklarımız şüphesiz kimseyi veritabanı yöneticisi yapmaz ama arama algoritmaları ve indekslerin gerekliliği ise sadece tavsiye anlamında kaynaklarda yer almaktadır. O bakımdan işin detayını öğrenmek bakımından iyi bir adım atılmış olmaktadır.
2516 - (Toplam) 8 - (Bugün)
Verilerin CSV formatında ve hazır olduğunu varsayalım (internette hazır halde bir sürü kelime listesi çeşitli formatlarda bulunmaktadır. Dolayısı ile bu uygulamayı şirket için bir sözlük olarak kullanmanız mümkündür). Aşağıdaki örnek verileri inceleyecek olursak;
yes;evet
no;hayır
evet;yes
hayır;no
name;ad,isim
ad;name
isim;name
bu yapıda bir veri ile hem İngilizce hem Türkçe sözlük olarak aşağıdaki 30-40 satırlık programı kullanabileceğimizi görürüz. örnek koda geçelim;
<html>
<head>
<title>CSV arama</title>
<META Http-Equiv=”Pragma” Content=”no-cache”>
<meta http-equiv=”content-type” content=”text/html; charset=iso-8859-9″ />
<meta name=”keywords” content=”Csv” />
</head>
<body>
<?
if (!$_POST):
{?>
<Form Action=”<?$PHP_SELF?>” Method=”POST”>
<tr><td colspan=2 align=center style=”font-color:red;”> Basit Sözlük </td></tr>
<tr><td> Kelimeyi Giriniz </td> <td><input type=”TEXT” name=”sozcuk”></td></tr>
<tr><td> <input type=”SUBMIT” value =”ARA”></td></tr>
</table>
</form>
<?}
else :
$sozcuk=$_POST['sozcuk];
$dosya=”dosya.csv”;
$baglan=fopen($dosya,’r');
if (!$baglan)
{
echo “baglanti kurulmadı”;
exit();
}
else
{
echo “tabloya baglandi <br>”; }
while (!feof($baglan))
{
$satir=fgetcsv($baglan,filesize($dosya),”;”);
//echo $satir[0]; okuyor mu kontrol için kullanabiliriz
if ($satir[0]==$sozcuk)
{
$varmi=true;
break;
}
}
if ($varmi)
{
echo “<b>$satir[0]</b> kelimesinin anlamı: <b>$satir[1]</b>”;
}
else {echo “kelime dosyada mevcut değil “; }
endif;
?>
</body>
</html>
Bu kodda da tek dosya içinde hem form hemde formu işleyen kod verilmiştir. Program ilk kez çalıştığında $_POST dizi değişkeni boş olacağından, programın form kısmı ekrana verilmekte ve numarası aranan kişinin girilmesi istenmektedir. Bilgi girilip butona tıklandığında ise $_POST bu sefer dolu olacağından programın formu işleyen kısmı yani bu ismi arayan kısım çalışacaktır.
Arayan kısımda ise sıra ile satırlar fgetcsv ile okup parçalanmakta ve soldaki ilk bilginin yani parçalandıktan sonra dizinin [0]. elemanının forma girilen bilgiye eşit olup olmadığı kontrol edilmektedir. Eşitlik sağlandığında döngü kırılmaktadır aksi takdirde numara bulunsa bile dosya bitene kadar döngü sürecektir.
1475 - (Toplam) 1 - (Bugün)
Web master açısından PHP sunucu tarafından çalışan bir programdır. Dolayısı ile sunucu ile uyumlu olmalıdır 5. sürümü itibariyle, PHP bütün Unix-türevi sistemler (örneğin Linux, Mac Os, BSD, Solaris) ve Microsoft Windows sistemleri ile uyumludur. Birlikte çalışabileceği Web sunucu programları arasında Apache, IIS, FHTTP, Omni HTTPd, Xitami ve Windows 95/98 için PWS (Personal Web Server) vardır.
Internet ortamında ortamında web sunuculara PHP işleme yeteneğinin eklenmesi haliyle bizim sorunumuz değildir, (işimiz hosting ise o zaman başka tabii). Bizim için Hosting firmasının PHP desteği verip vermediğini bilmek yeter. Fakat çalışmalarımızın doğruluğunu, hataların kontrolünü yapabilmek için (hatta site tasarımını gerçek ortamdaki gibi müşteri test edebilsin diye) kendi bilgisayarımıza bir kişisel Web Server kurmak ve bu programı PHP-uyumlu hale getirmek gerekir.
Normal şartlar altında Apache, PHP, MYSQL kurulumu detaylı bir işlemdir. Merak edenler için kitabın sonlarında yinede yer verilecektir. Ama benim önerim bu yöntemi takip etmeyip, hazır WAMP paketlerinden birini kullanmanız olacaktır.
WAMP Windows+Apache+Mysql+PHP kelimelerinin kısaltılmışıdır. WAMP paketleri tüm bu programların sisteminize otomatik kurulumunu sağlarlar. Böylece ayarlarla uğraşmadan doğrudan işinize bakabilirsiniz. Linux için tasarlanan bu paketler ise LAMP olarak bilinirler.
En çok tutulan WAMP paketlerinden birisi www.apachefriends.org adresinden bulabileceğiniz XAMMP paketidir. Linus sürümüde vardır. PHP varsayılan olarak desteklenmiştir. Ayrıca istenirse JSP çalıştırmak için TOMCAT eklentiside vardır. Paket bir çok ögeyi barındırdığı için biraz büyük, download edilmesi daha uzun ve dosya sayısı çok fazlaolduğu için kopyala yapıştır vs işlemlerde belirgin bir yavaşlık sözkonusu olmakta.
Yine aynı şekilde APPSERV paketide iyi bir pakettir. Kendine özgü bir kullanıcı kitlesi olup Flash disk üzerinde çalışmasını sağlayan betikleride vardır.
Benim kişisel olarak tercih ettiğim WAMP paketi budur. www.uniformserver.com adresinde yayınlanan bu paket, küçük ve sadece amaca yönelik bir paket. Üstelik bir flash disk üzerinde tüm tasarımları (MYSQL verileri ve veri ayarları ilede birlikte) taşıabilme avantajı vermekte. Bu işlemi XAMMP ilede yapmak mümkün ama Uniform açık halde iken sadece 40 mb civarı yer tutarken XAMPP 250 mb civarında yer kaplıyor. Fakat Uniform Server içinede PEAR ve diğer bir çok eklentinin elle kurulması gerekebiliyor. Uniform varsayılan olarak sadece MYSQL eklentisi hazır halde geliyor ve PEAR kütüphaneleride dahil değil.
1102 - (Toplam) 1 - (Bugün)
|
php_bz2.dll |
Bzip2 dosyaları ile çalışma. Sıkıştırma ve açma işlemi |
|
php_zip.dll |
Zip dosyaları ile çalışmaç sıkıştırma ve açma işlemi |
|
php_curl.dll |
Değişik tipte protokol kullanan istemci ve sunucular (ftp,http,https,gopher vs) ile bağlantı kurabilmek için |
|
php_exif.dll |
Exif bilgileri ile çalışma (resim meta verileri) |
|
php_fdf.dll |
Form Data Format eklentisi. PDF dosyalarında formlarla çalışma |
|
php_gd2.dll |
Grafik oluşturma ve çizme |
|
php_gettext.dll |
Değişik dillerde çalışabilecek yazılımlar için |
|
php_gmp.dll |
|
|
php_imap.dll |
IMAP protokolü ile iletişim kurmak için |
|
php_ldap.dll |
LDAP (Lightweight Directory Access Protocol) protokolü ile iletişim kurmak için gerekli fonksiyonlar |
|
php_mbstring.dll |
MultiByte String işleme fonksiyonları |
|
php_mcrypt.dll |
DES, TripleDES, Blowfish (varsayılan), 3-WAY, SAFER-SK64, SAFER-SK128, TWOFISH, TEA, RC2 and GOST in CBC, OFB, CFB, ECB cipher, RC6 ve IDEA algoritmaları ile şifreleme yapmak için gerekli kütüphane (son iki free algoritma değildir) |
|
php_mhash.dll |
HASH şifreleme fonksiyonları |
|
php_mime_magic.dll |
Dosya içeriğine bakıp dosya türü hakkında tahminde bulunan kütüphane dosyası. (Bu eklenti yerine artık Fileinfo eklentisi geçmektedir. Bu eklenti geri dönük uyumluluk için korunmaktadır) |
|
php_ming.dll |
Flash animasyon dosyaları üretmek için gerekli fonksiyonlar |
|
php_openssl.dll |
SSL protolü için |
|
php_snmp.dll |
SNMP protokolü (Simple Network Managemet Protocol) |
|
php_soap.dll |
Web servisleri için |
|
php_sockets.dll |
Soket bağlantılar için |
|
php_xmlrpc.dll |
XML ve RPC kütüphanesi. XML-RPC sunucu ve istemcileri geliştirmek için gerekli fonksiyonlar |
|
php_xsl.dll |
XML dosyalarına çıkış formatı tanımlamak için gerekli fonksiyonlar |
|
php_dbase.dll |
Dbase VTYS bağlantısı |
|
php_interbase.dll |
Interbase VTYS bağlantısı |
|
php_msql.dll |
Msql VTYS bağlantısı |
|
php_mssql.dll |
Mssql VTYS bağlantısı |
|
php_mysql.dll |
Mysql VTYS bağlantısı |
|
php_mysqli.dll |
Mysql VTYS bağlantısı (Nesne erişimlidir) |
|
php_oci8.dll |
Oracle VTYS bağlantısı (Oracle Call Interface |
|
php_pgsql.dll |
Postgresql VTYS bağlantısı |
|
php_sqlite.dll |
Sqlite VTYS bağlantısı |
|
php_sybase_ct.dll |
Sybase VTYS bağlantısı |
|
php_pdo.dll |
PHP Data Object bağlantılarının kullanımı için (Database Abstraction Layer kütüphanesi) |
|
php_pdo_firebird.dll |
Firebird PDO bağlantısı |
|
php_pdo_mssql.dll |
Mssql PDO bağlantısı |
|
php_pdo_mysql.dll |
Mysql PDO bağlantısı |
|
php_pdo_oci.dll |
Oracle PDO bağlantısı |
|
php_pdo_oci8.dll |
Oracle PDO bağlantısı |
|
php_pdo_odbc.dll |
ODBC PDO bağlantısı |
|
php_pdo_pgsql.dll |
Postgres PDO bağlantısı |
|
php_pdo_sqlite.dll |
Sqlite PDO bağlantısı |
752 - (Toplam) 0 - (Bugün)
Günümüzde neredeyse tüm programlama dilleri ile en çok veritabanına yönelik programlar yazılmaktadır. Kısaca programların çoğu hep bir şeyleri kayıt altına almak üzere yazılmaktadır. Zaman içinde bu kayıt altına alınan bilgilerin yönetilmesi ve hızlı işlenmesi bir sorun olarak ortaya çıktı ve bu defada ortaya bu verilerin işlenmesi konusunda teknikler içeren DBMS olarak kısaltılmış haliyle Data Base Management System programları çıktı. Türkçe olarak VTYS yani Veri Tabanı Yönetim Sistemi ifadesi kullanılmaktadır. Veritabanı programları kendisine gönderilen verileri istenen ortamlarda tutar, talep edilmiş ise bunları aramada kolaylık sağkayacak indeks dosyalarını güncelleştirir, gelen talebe göre aranan şartlara uygun kayıtları bulur ve telp eden programa gönderir. VTYS geliştiren şirketler ise kendi sistemlerinin kullanımını artırmak için kendi sistemlerinin kullanımında yardımcı olmak üzere çeşitli sürücüleri geliştirip bunları yazılım dünyasına sunmaktadır. Bu bakımdan günümüzde VTYS ile ilişki kurmak isteyen diller sadece bu VTYS ile iletişim kuran bir sürücü dosyası kullanmak durumundadır. PHP geliştiricileri ise neredeyse bilinen bütün VTYS sistemleri için bu sürücülere erişimde kullanmak üzere bağlantı dosyaları hazırlamışlardır. Örneğin MYSQL için gerekli olan LIBMYSQL.DLL dosyası (Mysql tarafından geliştirilmiştir.) PHP ile hazır gelmektedir. PHP ise bu LIBMYSQL.DLL dosyasını kendisi için geliştirilmiş bir bağlantı kütüphanesi ile yönetir. PHP geliştiricileri aşağı yukarı bütün VTYS sistemleri için sürücüler geliştirmiştir (Adabas, dBase, FilePro, Informix, InterBase, mSQL, Oracle, Solid, Sybase, Sqlite, Firebird ve bir çok Unix veritabanı). PHP ayrıca, ODBC sürücüleri ile de çalışabilir; ve ODBC’nin okuduğu bütün veritabanlarından veri çekebilir. (ODBC’nin Unix-Linux sürümü de vardır.)
PHP dilinin detaylarından önce PHP ile kullanılabilen veritabanlarından üçünden bahsedelim. PHP’nin varolma sebeplerinin başında, ticarî Unix veya Microsoft Windows işletim sistemlerinden ayrı, kar kaygısı olmayan, her türlü platformda çalışabilen Script dili ile bu dille kullanılabilecek yine Açık Sistem ürünü bir VTYS aracına sahip olmak gelir. Perl, PHP’den çok önce de bu platformda mevcuttu ama PERL VTYS yönetmekten çok sadece metin dosyalarını okuyup ve sonucu biçimlendirerek rapor haline getirmek amacıyla tasarlanmıştı. Bu bakımdan PERL veritabanına dayalı işlemlerde programcıya çok güçlük çıkartıyordu. Geliştirilmeside sıkıntılı bir süreçti. PERL açılım olarak ?Practical Extraction and Report Language? kelimelerinden oluşyor dendiği zaman zaten PERL dinin amacı ve yapmak üzere tasarlandığı şey kendiliğinden ortaya çıkmış olmaktadır. ASP ise sadece Windows üzerinde çalışabilir olması sebebiyle hosting konusunda masraflı bir dildi. Üstelik Open source felsefesine uygun değildi. PHP, tasarımcılarının MySQL ve PostgreSQL teknolojilerini geliştiren kurum ve firmalarla yaptığı yakın işbirliği sonucu ikinci sürümünden itibaren veri-yönlendirmeli (Data-Driven) Web uygulaması alanında önemli bir araç olarak belirdi. PHP ile, Web Server’a sayfanızı Internet ziyaretçisine göndermeden önce bir takım komutları yürütmesini, bir takım veri dosyalarını açıp içindeki kayıtları okuyup örneğin bir tablo içine yerleştirmesini söyleyebiliriz.
MySQL, PostgreSQL ve SQLite ise, açık Kaynak şeklinde geliştirilen Veri Tabanı Yönetim Sistemi ? VTYS (Data Base Management System ?DBMS) dediğimiz türden programlardır. En çok bilinen VTYS programları ticari olarak Oracle, MSSQL, Informix, DB2 ve açık kaynak tarafında ise MYSQL, PostgreSQL, Firebird ve Sqlite?dır.
MySQL, çok-kanallı (multi-threaded), çok kullanılıcılı çalışabilen (multi-user), hızlı ve sağlam (robust) bir veritabanı yönetim sistemidir. Mysql veri tablolarını iki formatta tutabilmekteydi. InnoDB ve MYisam. Veritabanları arasında kızışan rekabet sonucu pabucu pahalı gören Oracle, Innobase şirketini satın alarak bir anlamda MYsql ?in elini kolunu bağladı. Çünkü dilediği anda Innobase?i lisanslı hale geçirip MySql ürünlerini tartışmalı duruma getirebilecekti. MYsql ?in buna cevabı ise farklı oldu. Onlarda InnoDb yerine yıllar önce Interbase?i geliştiren Jim Starkey? i işe alarak, kendi tablo formatlarını entegre etme yoluna gittiler.
PHP geliştiricileri ise 5. sürümden itibaren doğal MYSQL desteği yerine, SQLite veritabanını öne çıkarmaya başladılar. SQLlite, basit veritabanı işlemleri için olduça yeterli bir veritabanı programıdır. Gerçi network ortamında çoklu kullanım için uygun değildir ama internet programlarının çoğunun buna ihtiyacı yoktur.
1049 - (Toplam) 1 - (Bugün)
Web sayfalarına dinanizm kazandırmanın iki yolu vardır. Sunucu tarafındaki interaktif uygulamalar ve Kullanıcı tarafındaki interaktif uygulamalar. Kullanıcı tarafındaki uygulamalara örnek olarak Javascript veya VBscript ile yapılan veri doğrulama işlemleri ve Java dilinde yazılmış appletleri sayabiliriz. Bunun avantajları;
Sunucu tarafında çalışan uygulamalarında tabiî ki kendine göre avantajları vardır?
614 - (Toplam) 0 - (Bugün)
Rasmus Lerdorf, adlı genç bir mezun iş aradığını belirtmek üzere sitesinde özgeçmişini yayınlıyordu. Bu amaçla site yapmak üzere bir program geliştirdi. Yazdığı program çoğunlukla PERL dilinden alınmış yordamları kapsıyordu. Buna PHP (Personal Home Page Tool) adını verdi.
PHP adlı bu programın (Kişisel Ana Sayfa) çok tutulması üzerine Rasmus, bu programa, form yoluyla ziyaretçiden gelen bilgileri işlemeyi sağlayan komut setlerinide ekledi ve programın adı PHP/FI (Form Interpreter/Form Yorumlayıcı) oldu. Kimileri programın bu sürümüne PHP2 dedi; ve bu ad, programın çok değişmesine ve gelişmesine rağmen uzun süre değişmeden kaldı.
Rasmus Lerdorf, 1995 ortalarında, Zeev Suraski, Stig Bakken, Shane Caraveo ve Jim Winstead ?inde katıldığı bir grup ile PHP dilini yeniden tasarlayarak, Perl’den ödünç alma rutinlerle iş yapan bir paket yerine, Nesne-Yönelimli (Object-Oriented Programming) bir programlama dili haline getirdi. PHP dili 3 sürümüne geldiğinde bu defa genişletibilir yani extensible bir dil oldu. Ayrıca sınırlı da olsa nesneye yönelik proglamlama desteği kazanmıştı. Eklenti ve nesneye yönelik destek sayesinde de önü dahada açıldı. Öyleki 18 ay önce sadece 250.000 civarında web sunucuya yüklü olan PHP, bu süre içinde bu sayıyı 2.500.000 web sunucuya çıkarmıştı.
PHP 4 sürümüne geldiğinde ise çeşitli geliştirmeler resmen bariyerleri yerle bir etmiştir. Bunlar
· Zend Engine
· Sunucudan bağımsız çalışma
· Önce dersle sonra çalıştır mantığı ile hız kazanma
· Nesneye yönelik programlama
· Multithreading
Zeev ve Andi ZEND adlı şirketi kurup PHP dilini kurumsal ölçeğe taşıdılar. Geliştilen Zend Engine ile PHP artık referans sayma, hafıza yönetimi ve sunucudan bağımsız çalışma yeteneğide kazanmıştı. Tabi veritabanı bağlantılarının, dosyaların, hafıza boşluklarının bu engine ile kontrol edilebilir hale gelmeside cabası. Sunucudan bağımsız çalışma derken PHP dilinin neredeyse bilinen bütün web sunucularla ortak çalışabilir hale gelmesi kastedilmektedir. Ayrıca derleyici önceki sürümlerdeki ?bir satır oku, yorumla, çalıştır, diğer satıra geç? mantığını bırakmış, önce tüm kodu okuyup, ardından derleme ve çalıştırma yeteneğine kavuşmuştur. Buda tabiî ki çeşitli hızlandırma mekanizmalarınıda beraberinde getirmiştir. Tabiî ki bu çabalar sonuçsuz kalmamış PHP bu sürümde kurulu olduğu sunucu sayısını 9.500.000 ?a taşımıştır. En çok kullanılan Apache sunucu modülü olma özelliği uzun zamandır PHP?dedir.
PHP 5 dilinde artık dilin olgunlaşma aşamasına gelinmiştir. Çünkü önceki PHP sürümleri büyük çaplı projeler için biraz basit kalmakta idi. PHP 5, ile gelen yenilikler ise
· try/catch
· XML
· Mysql Improved
· Sqlite
· yeni bir SOAP eklentisi
olmuştur. PHP, Linux gibi, Açık Sistem (Open source) kurallarına tabidir; isteyen programda istediği değişikliği yapabilir; ancak bu değişiklikten para kazanamaz ve yaptığı değişiklikleri isteyen herkese açıklamak zorundadır. Dilin resmî adı “PHP: Hypertext Preprocessor” (Hiper-metin ön-işleyici) olarak değiştirildi, ve çeşitli Web Server’ların PHP dili anlaması için gerekli eklentiler yeniden üretildi.
PHP arkasında ASP yada JSP gibi kurumsal bir destek olmamasına rağmen gerek performans gerek destek açısından diğer Web yazılım geliştirme dilleri ile kolayca yarışabilecek kapasitedir. Hemen her türlü işletim sistemiyle çalışabilir olması ve yine açık kaynak geliştirilen MYSQL ile birlikte gösterdikleri ikili performans onları bir anda yazılım dünyasının gözdeleri arasına sokmuştur.
2887 - (Toplam) 1 - (Bugün)