Τεχνολογίες που χρησιµοποιήθηκαν για την υλοποίηση του συστήµατος Οι τεχνολογίες που χρησιµοποιήθηκαν είναι οι εξής : 1. PHP 2. MySQL 3. APACHE Server PHP/FI PHP Η PHP είναι διάδοχος µιας παλαιότερης γλώσσας, γνωστή ως PHP/FI. Η PHP/FI δηµιουργήθηκε από τον Rasmus Lerdorf το 1995, αρχικά ως ένα απλό σετ από αρχεία Perl (Perl scripts) για να έχει πρόσβαση στο on-line βιογραφικό του. Ονόµασε το σετ «Εργαλεία Προσωπικών Ιστοσελίδων» (Personal Home Page Tools). Με την πάροδο του χρόνου, η ανάγκη για λειτουργικότητα των scripts αυξήθηκε και ο Rasmus έγραψε ένα µεγαλύτερο C implementation, το οποίο ήταν ικανό να επικοινωνεί µε βάσεις δεδοµένων και επέτρεπε στους προγραµµατιστές να αναπτύξουν απλές δυναµικές Ιστοσελίδες και διαδικτυακές εφαρµογές. Στην συνέχεια ο Rasmus αποφάσισε να κοινοποιήσει τον πηγαίο κώδικα για την PHP/FI, έτσι ώστε ο καθένας να την χρησιµοποιήσει, να διορθώσει τυχόν παραλείψεις/δυσλειτουργίες του ιδίου και αν µπορέσει να την αναβαθµίσει. Η PHP/FI, που τα αρχικά της σηµαίνουν Personal Home Page / Forms Intepreter (Προσωπική Ιστοσελίδα / ιερµηνέας Φορµών), συµπεριλάµβανε κάποια από τα βασικά λειτουργικά στοιχεία της PHP, έτσι όπως τα ξέρουµε σήµερα. Έχει µεταβλητές όπως η Perl, αυτόµατη διερµηνεία των µεταβλητών των φορµών και συνυφασµένη HTML σύνταξη. Η σύνταξη ήταν παρόµοια µε την σύνταξη της Perl, αλλά σαφώς πιο περιορισµένη, απλή και λιγότερο αξιόπιστη. Το 1997, η PHP/FI 2.0, η δεύτερη έκδοση της PHP, είχε µερικές χιλιάδες οπαδούς ανά τον κόσµο, µε περίπου µόλις 50.000 domains να την χρησιµοποιούν (1% του συνολικού Internet). Αν και είχαν συµβάλει πολλοί στη ανάπτυξη και διάδοση της γλώσσας, ήταν ακόµα µια προσωπική δουλειά του Rasmus. Η PHP/FI είχε εκδοθεί επισήµως τον Νοέµβριο του 1997. Μετά από λίγο, οι πρώτες εκδόσεις (alpha versions) της PHP 3.0 διαδέχθηκαν την PHP/FI 2.0. PHP 3 Η PHP 3.0 ήταν η πρώτη έκδοση που άρχιζε να µοιάζει µε την σηµερινή µορφή της PHP. ηµιουργήθηκε από τον Andi Gutmans και τον Zeev Suraski το 1997 ξανά από την αρχή και όχι σαν αναβάθµιση της ήδη υπάρχουσας PHP/FI 2.0, λόγω της
αδυναµίας της εν λόγω γλώσσας να υποστηρίξει µια εφαρµογή ηλεκτρονικού εµπορίου για το Πανεπιστήµιο. Σε µια προσπάθεια τους να συνεργαστούν µε τους προγραµµατιστές της PHP/FI, ο Gutmans, Suraski και ο Lerdorf αποφάσισαν να ενώσουν τις δυνάµεις τους, ανακυρρήσοντας την PHP 3.0 ως τον επίσηµο διάδοχο της PHP/FI 2.0. Ένα από τα θετικότερα στοιχειά της νέας PHP 3.0 ήταν τα ευρέως επεκτάσιµα χαρακτηριστικά της. Εκτός από τις δυνατότητες της πάγιας εσωτερικής δοµής της σε σχέση µε τις βάσεις δεδοµένων, τα πρωτόκολλα και τις διαφορές βιβλιοθήκες γραφικών, η δυνατότητα προσθήκης user-made extensions (επεκτάσεων φτιαγµένων από χρήστες) ώθησε πολλούς προγραµµατιστές στην PHP 3.0. Αυτό στάθηκε ακρογωνιαίος λίθος στην επιτυχία της PHP 3.0. Άλλα πολύ σηµαντικά χαρακτηριστικά ήταν η προσθήκη αντικειµενοστραφούς σύνταξης αλλά και της αντικειµενοστραφούς προγραµµατιστικής θεώρησης. Η νέα γλώσσα εκδόθηκε µε ένα νέο όνοµα αφαιρώντας το στοιχειό FI από το όνοµα της που προσδιόριζε την περιορισµένη χρήση της για προσωπική εκµετάλλευση. Ονοµάστηκε PHP, που είναι η αναδροµική ακροστιχίδα του PHP: Hypertext Preprocessor. Μέχρι το τέλος του 1998, η PHP είχε δεκάδες χιλιάδες οπαδούς και εκατοντάδες χιλιάδες sites χρησιµοποιούσαν την γλώσσα (περίπου τότε το 10% του συνολικού Internet). Η PHP 3.0 εκδόθηκε επισήµως τον Ιούνιο του 1998, µετά από 9 µήνες public testing (ανοιχτής επαλήθευσης). PHP 4 Τον χειµώνα του 1998, λίγο µετά από την επίσηµη έκδοση της PHP, ο Andi Gutmans και ο Zeev Suraski είχαν ξεκινήσει να ξαναγράψουν τον πυρήνα της PHP. Σκοπός τους ήταν να βελτιώσουν τις επιδόσεις των συνθετών εφαρµογών, και να βελτιώσουν την αυτονοµία των επιµέρους λειτουργιών του πηγαίου κώδικα της PHP. Τέτοιες εφαρµογές υποστηρίζονταν από την PHP 3.0, δυστυχώς µε µη αποδοτικό τρόπο. Η νέα µηχανή, ονόµατει «µηχανή Zend» από τα αρχικά του Andi και του Zeev, υποστήριζε τους σκοπούς των δηµιουργών της και πρωτοπαρουσιάστηκε στα µισα του 1999. Η PHP 4, βασισµένη σε αυτή την µηχανή και µια προσθήκη κάποιων νέων χαρακτηριστικών, δόθηκε σε κυκλοφορία τον Μάιο του 2000, µετά από 2 χρονιά από την έκδοση του προγόνου της, της PHP 3.0. Επιπροσθέτως µε τις σαφώς βελτιωµένες επιδόσεις της νέας έκδοσης, πλέον υποστηριζόταν σαφώς περισσότερη ιαδικτυακοί Εξυπηρέτες (Web Servers), HTTP sessions, προσωρινή αποθήκευση ρευµάτων εξόδου (output buffering), ασφαλέστερη τρόποι µεταχείρισης των δεδοµένων εισόδου και µερικά νέα δοµήµατα (constructs). Σήµερα η PHP χρησιµοποιείται από εκατοντάδες χιλιάδες χρήστες και υπολογίζεται ότι έχουν εγκατεστηµένη PHP τεχνολογία εκατοµµύρια Ιστοσελίδες, που το αριθµητικό ανάλογο τους σε σχέση µε άλλες τεχνολογίες ξεπερνά το 20% του συνολικού διαδικτύου. Η οµάδα ανάπτυξης της PHP συµπεριλαµβάνει πολλούς ερευνητές που ασχολούνται µε διαφορά projects όπως το PEAR (PHP Extension and Application Repository) και το project τεκµηρίωσης. PHP 5
Η PHP 5 εκδόθηκε τον Ιούλιο του 2004 µετά από µια µεγάλη φάση ανάπτυξης και αρκετές προ-εκδόσεις (pre-releases). Το κύριο χαρακτηριστικό που παρουσίασε ήταν ο καινούριος πυρήνας της, Zend 2.0 µε µια προσθήκη πολλών νέων αντικειµενοστραφών µοντέλων και άλλων χαρακτηριστικών. 1.4.1. Η προ-mysql εποχή MySQL Πριν το 1994, έπρεπε κάποιος να επικαλεστεί την Θεά Τύχη εάν ήθελε να βρει ένα σύστηµα διαχείρισης βάσεων δεδοµένων βασισµένα σε SQL ερωτήµατα (SQL-based RDBMS) χωρίς να πληρώσει µεγάλα χρηµατικά ποσά. Οι κυρίαρχες εµπορικές SQL λύσεις της εποχής ήταν η Oracle, Sybase και η Informix. Αυτές οι µηχανές ήταν σχεδιασµένες να διαχειρίζονται τεράστια ποσά δεδοµένων µε πολυσύνθετες σχέσεις. Ήταν παρά πολύ δυνατές και είχαν µεγάλο εύρος χαρακτηριστικών, αλλά ήταν ακριβές και άκρως δαπανηρές σε υπολογιστικούς πόρους. Μεγάλες εταιρίες και γνωστά πανεπιστήµια φυσικά δεν είχαν κανένα απολύτως πρόβληµα να ξοδέψουν εκατοµµύρια δολάρια τον χρόνο σε Σ..Β.. (D.B.M.S.) ή/και σε ιαδικτυακούς Εξυπηρέτες (Web Servers). Φυσικά, οι µεµονωµένοι χρήστες και οι µικροί οργανισµοί έπρεπε να συµβιβαστούν µε ένα µικρό αδύναµο επιτραπέζιο (Desktop) σύστηµα. Υπήρχαν αρκετού φτηνές µηχανές βάσεων δεδοµένων τύπου πελάτη/εξηπηρέτη αλλά κανένας από αυτές δεν είχαν την SQL σαν γλώσσα ερωτηµάτων. Η πιο αξιοσηµείωτη βάση από αυτές ήταν η Postgres, ένα D.B.M.S. προερχόµενο από το εµπορικό Ingres RDBMS. H Postgres, δυστυχώς, είχε τις ίδιες ανάγκες για υπολογιστικούς πόρους που είχε και το εµπορικό ανάλογο της, χωρίς τις δυνατότητες της SQL σαν γλώσσα ερωτηµάτων. Εκείνο τον καιρό η Postgres χρησιµοποίησε µια παραλλαγή της γλώσσας QUEL, ονοµατει PostQUEL. 1.4.1.1. David Hughes Ο David Hughes, κάνοντας το Ph.D. του στο πανεπιστήµιο Bond της Αυστραλίας, ανέπτυσσε ένα σύστηµα παρακολούθησης και διαχείρισης πολλών συστηµάτων από αποµακρυσµένες τοποθεσίες. Το project λεγόταν Minerva Network Management System. Ένα σηµαντικό στοιχείο του Minerva ήταν ένα DMBS για να αποθηκεύει πληροφορίες για τα µηχανήµατα του δικτύου. Όντας πανεπιστηµιακός φοιτητής χωρίς απευθείας πρόσβαση σε µηχάνηµα που να τρέχει µια από τις µεγάλες εµπορικές σχεσιακές βάσεις δεδοµένων, ο Hughes στράφηκε στην Postgres για την ικανοποίηση των αναγκών του. Οι συνάδελφοι του Hughes αρχικά πρότειναν την SQL ως την σταθερή γλώσσα ερωτηµάτων για το Minerva. Εξάλλου, η SQL ήταν και είναι η πιο ευρέως διαδεδοµένη και αποδεκτή γλώσσα ερωτηµάτων παγκοσµίως. Με αυτή την κίνηση η Minerva θα µπορούσε να εξυπηρετήσει τις ανάγκες χιλιάδων ανθρώπων παγκοσµίως, αρκεί να διέθεταν κάποιο SQL DBMS σύστηµα. Η ταλάντωση µεταξύ της SQL standard και της πρόσβασης σε µια SQL βάση δεδοµένων ήταν πρόβληµα για τον Hughes. Άµα αποφάσιζε να βασίσει την γλωσσά ερωτηµάτων του Minerva στην SQL, δεν θα ειχε βάση δεδοµένων. Επειδή σαφέστατα η αγορά ενός RDBMS αξίας χιλιάδων δολαρίων δεν ήταν επιλογή, ο Hughes αποφάσισε να επιλέξει µια δηµιουργική οδό για την διεξαγωγή της λύσης του προβλήµατος του. Αποφάσισε να
δηµιουργήσει µια εφαρµογή που θα µετέτρεπε την SQL σε PostQUEL «on-the-fly». Αυτό το πρόγραµµα θα παρέµβαινε µεταξύ Minerva και όλων των SQL ερωτηµάτων, θα τα µετέτρεπε σε PostQUELκαι θα τα έστελνε στην Postgres. Η εφαρµογή αυτή ονοµάστηκε minisql ή msql. 1.4.1.2. Από τον PostQUEL µεταφραστή στο RDBMS Για λίγο καιρό, το σύστηµα αυτό ικανοποιούσε τις ανάγκες του Hughes. Το σύστηµα Minerva αδιαφορούσε για το ποιο DBMS χρησιµοποιούσε, αρκεί να καταλάβαινε SQL ερωτήµατα. Η Postgres καταλάβαινε SQL επειδή ο µεταφραστικός µεσάζοντας msql µετέφραζε τα SQL σε PostQUEL ερωτήµατα. υστυχώς µε την ανάπτυξη του Minerva, η διαδικασία µετάφρασης άρχισε να δαπανά σηµαντικό υπολογιστικό χρόνο. Μετά από λίγο ήταν ξεκάθαρο ότι η Postgres ή οποιοδήποτε άλλο µεγάλο RDBMS δεν ήταν ικανό να υποστηρίξει το σύστηµα Minerva µε τους περιορισµένους πόρους που διέθετε. Π.χ. το Minerva ήθελε ταυτόχρονες συνδέσεις στην ίδια βάση δεδοµένων. Για να το υποστηρίξει αυτό, η Postgres έπρεπε να τρέχει πολλαπλά οµότυπα της ίδιας διαδικασίας ταυτοχρόνως. Επιπροσθέτως, αρκετοί πιθανοί συνεισφέροντες δεν µπορούσαν να συµβάλουν στο Minerva Project, επειδή η Postgres δεν υποστήριζε τα συστήµατα τους και δεν ειχαν την επιλογή αγοράς ενός ακριβού SQL-DBMS. Μπροστά σε αυτά τα προβλήµατα, ο Hughes αναθεώρησε την απόφαση του να χρησιµοποιήσει Postgres. Τα περισσότερα ερωτήµατα του Minerva ήταν INSERT, DELETE και SELECT. Όλες οι άλλες δυνατότητες της Postgres, που δεν αξιοποιούνταν από το Minerva, απλώς δαπανούσαν υπολογιστική ισχύ. Ο Hughes ειχε ήδη το msql να µεταφράζει σε SQL. Το µόνο που χρειαζόταν ήταν να προσθέσει αποθηκευτικό χώρο και δυνατότητες ανάκτησης δεδοµένων και θα είχε στην διαθεση του την βάση δεδοµένων που θα ικανοποιούσε τις ανάγκες του. Αυτή η εξέλιξη οδήγηση την msql να πάρει την µορφή που ξέρουµε σήµερα. 1.4.2. Η γέννηση της MySQLζ Θα ήταν λαθος να χαρακτηρίζαµε την ΜySQL µια απλή διόρθωση των αδυναµιών και των λαθών της msql. Ο εφευρέτης της, Michael Widenius (Monty) δούλευε στη σουηδική εταιρία βάσεων δεδοµένων TcX από το 1979. Το 1979 ανέπτυξε το οικιακό εργαλείο UNIREG για διαχείριση βάσεων δεδοµένων. Μέχρι το 1979 το UNIREG ειχε γραφτεί σε πολλές γλώσσες προγραµµατισµού και είχε σχεδιαστεί για να µπορεί να διαχειρίζεται µεγάλες βάσεις δεδοµένων. Το 1994, η TcX άρχισε να αναπτύσσει εφαρµογές για το διαδίκτυο και χρησιµοποίησε το UNIREG για αυτούς τους σκοπούς. υστυχώς το UNIREG ήταν άκρως δαπανηρό σε υπολογιστικούς πόρους για να είναι αποτελεσµατικό σε δυναµικές ιστοσελίδες. Η TcX άρχισε να κοιτά την SQL και το msql. Τοτε το msql βρισκόταν στις αρχικές εκδόσεις (1.x) και οι επιδόσεις του msql ήταν ακόµα πολύ κατώτερες του UNIREG. Ο Widenius ήρθε σε επικοινωνία µε τον Hughes, για να δει αν ενδιαφερόταν να ενώσει το msql µε το UNIREG και ένα διαχειριστή ISAM (ISAM handler). Όµως ο Hughes ήδη βρισκόταν στα πρόθυρα της έκδοσης 2.0 του msql. Η TcX αποφασίζει να δηµιουργήσει µια βάση δεδοµένων που ήταν πιο συµβατή µε τις απαιτήσεις της. Το UNIREG, οντάς µια αρκετά ολοκληρωµένη βάση, χρησιµοποιήθηκε από την TcX. Στην συνέχεια προστέθηκαν
ένας µεγάλος αριθµός από εργαλεία (utilities) για την msql, συνθέτοντας ένα API (Application Programming Interface) σχεδόν ίδιο µε αυτό της msql. Οπότε ένας msql χρήστης θα χρειαζόταν µόνο ελάχιστες µετατροπές στον κώδικα του, εάν επιθυµούσε να αλλάξει στην νέα, σαφώς πιο εµπλουτισµένη βάση της TcX. Μέχρι τον Μάη του 1995, η TcX είχε δηµιουργήσει την βάση δεδοµένων που ικανοποιούσε τις ανάγκες τις την MySQL 1.0. Ένας επαγγελµατικός συνεργάτης της TcX, ο David Axmark της εταιρίας Detron HB, πίεζε για έκδοση της MySQL στο διαδίκτυο. Ο σκοπός της έκδοσης στο ιαδίκτυο, ήταν να χρησιµοποιηθεί ένα επαγγελµατικό µοντέλο, που είχε δηµιουργηθεί πρώτιστα από τον Aladdin Peter Deutsch. Το όνοµα της MySQL έχει δύο εκδοχές : η πρώτη είναι ότι η εταιρία TcX χρησιµοποιεί το πρόθεµα my για πολλές βιβλιοθήκες της και διαφορά εργαλεία της, ενώ η δεύτερη εκδοχή λέει ότι η MySQL πήρε το όνοµα της από την κόρη του Widenius, που λέγεται «My». Μέχρι και σήµερα παραµένει µυστήριο ο πραγµατικός λόγος που ονοµάστηκε έτσι η MySQL. Από την πρώτη έκδοση της MySQL στο διαδίκτυο, η διάσηµη βάση δεδοµένων είναι συµβατή µε UNIX, Win32 και OS/2. Η TcX υπολογίζει ότι παγκοσµίως τρέχουν περίπου 500.000 MySQL servers. Η MySQL είναι ίσως η ταχύτερα αναπτυσσοµένη βάση δεδοµένων στον κόσµο, εξαιτίας του «στρατού» εθελοντών που βοηθούν στην ενδυνάµωση της και στην παγιοποίηση της στο πληροφοριακό στερέωµα. Apache Web Server Τον Φεβρουάριο του 1995, το πιο διάσηµο λογισµικό Web Server που κυκλοφορούσε στο ιαδίκτυο ήταν ο «public domain HTTP daemon», µια εφαρµογή που αναπτύχθηκε από τον Rob McCool στο Εθνικό κέντρο για υπερυπολογιστικές εφαρµογές του πανεπιστηµίου του Illinois (NCSA). Η ανάπτυξη του httpd σταµάτησε µε την παραίτηση του McCool από το NCSA στα µέσα του 1994, και πολλοί webmasters είχαν ήδη δηµιουργήσει τις δικές τους προσθήκες που έχρηζαν κοινής δηµοσιοποίησης. Μια µικρή οµάδα, επικοινωνώντας µέσω ηλεκτρονικού ταχυδροµείου, κατάφερε να µαζέψουν τις δικές τους προσθήκες (σε patch µορφή). O Brian Behlendorf και ο Cliff Skolnick δηµιοργησαν µια mailing list, ένα χώρο αποθήκευσης πληροφοριών, και παροχή πρόσβασης σε όλους τους core developers, σε ένα µηχάνηµα στο California Bay Area, µε bandwidth δωρισµένο από την HotWired. Μέχρι το τέλος του Φεβρουαρίου, 8 προγραµµατιστές είχαν σχηµατίσει το αρχικό Apache Group : 1. Brian Behlendorf 2. Robert S. Thau 3. Roy T. Fielding 4. Rob Hartill 5. David Robinson 6. Cliff Skolnick 7. Randy Terbush 8. Andrew Wilson
Την οµάδα αυτή βοήθησαν οι : 1. Eric Hagberg 2. Frank Peters 3. Nicolas Pioch Χρησιµοποιώντας το NCSA httpd 1.3 σαν βάση, προστέθηκαν όλες οι προγραµµατιστικές διορθώσεις και όλες οι αξιόλογες προσθήκες που βρέθηκαν, αξιολογηθήκαν τα αποτελέσµατα και έγινε η πρώτη επίσηµη beta έκδοση (0.6.2) του Apache Server τον Απρίλιο του 1995. Κατά σύµπτωση, το NCSA ξαναξεκίνησε την δικιά του ανάπτυξη και ο Brandοn Long και η Beth Frank της οµάδας Ανάπτυξης Εξυπηρετών του NCSA στρατολογήθηκαν από το Apache Group σαν επιτιµά µέλη, µε απώτερο σκοπό την διαµοίραση ιδεών και επιδιορθώσεων στα δυο projects. Η αρχική έκδοση του Apache Server είχε µεγάλη επιτυχία, αλλά οι προγραµµατιστές του γνωρίζαν ότι η βάση του κώδικα χρειαζόταν επανασχεδιασµό. Κατά την διάρκεια του Μαιου- Ιουνιου του 1995, καθώς ο Rob Harthill και το υπολοιπον της οµάδας είχε εστιάσει στην εµφύτευση νέων χαρακτριστικών για την έκδοση 0.7.x και στην υποστηριξη της συνεχώς αυξανόµενης οµάδας των υποστηρικτών του Apache Server, ο Robert Thau σχεδίασε µια νέα αρχιτεκτονική (µε το κωδικό όνοµα Shambhala), που συµπεριλάµβανε τµηµατοποιηµένη δοµή και ένα API µε περισσότερη ευκολία επέκτασης, πράγµα που οδήγησε στην µεταπήδηση από τον 0.7.x στον 0.8.8 (και στα «παιδιά» του) τον Αύγουστο του 1995. Μετά από εκτεταµένο beta testing, καινούργια τεκµηρίωση (από τον David Robinson), και την προσθήκη νέων λειτουργιών, ο Apache 1.0 εκδόθηκε στις 1 εκέµβρη του 1995. Σε λιγτότερο από ένα χρονο από την στιγή δηµιουργίας του, ο Apache server ξεπέρασε το NCSA s http, που εώς τότε ήταν ο #1 Web Server στο διαδίκτυο, και σύµφωνα µε την έρευνα της Netcraft, διατηρεί ακόµα τα πρωτεία µέχρι και σήµερα. Το 1999, µέλη του Apache Group σχηµάτισαν το Apache Software Foundation (ASF) για να παρέχει νοµιµη οργανωσιακή και χρηµατική υποστήριξη στην ανάπτυξη του Apache HHTP Server. Το ΑSF τοποθέτησε τον Apache σε σταθερούς ρυθµούς ανάπτυξης και επέκτεινε σε πολύ µεγάλο βαθµό τον αριθµό των Open Source software projects.