Comments
Description
Transcript
Τεχνολογικό Εκπαιδευτικό Ίδρυµα
Τεχνολογικό Εκπαιδευτικό Ίδρυµα Κρήτης Σχολή Τεχνολογικών Εφαρµογών Τµήµα Εφαρµοσµένης Πληροφορικής & Πολυµέσων Πτυχιακή Εργασία Συµµετοχή στην σχεδίαση-δηµιουργία ιστοσελίδας που παρέχει πλατφόρµα για την υποστήριξη της κινητικότητας των σπουδαστών Erasmus (MUTW Project) Κατσιαµπούρη Αγγελική-Ιωάννα ΑΜ:2233 Μουντράκης Στέφανος ΑΜ:1611 Επιβλέπων Καθηγητής: ∆ρ. Παπαδουράκης Γεώργιος Ηράκλειο 2011 1 Ευχαριστίες Αρχικά θα ήθελα να ευχαριστήσω τον συνάδελφό µου Μουντράκη Στέφανο, που µε την θέλησή του και τις γνώσεις του καταφέραµε να βγάλουµε την εργασία αυτή εις πέρας. Χωρίς την πολύτιµη βοήθειά του δεν θα ήταν εύκολο να επιτευχθεί ο στόχος της πραγµατοποίησης της εργασίας εντός 4 µηνών, καθώς δεν υπήρχε προηγούµενη επαφή µε το αντικείµενο της PHP. Στην συνέχεια θα ήθελα να ευχαριστήσω τους φοιτητές από τις υπόλοιπες χώρες που πήραν µέρος στο project αυτό, για το πνεύµα συνεργασίας που επέδειξαν, καθώς και την διάθεση τους να βοηθήσουνε εµένα και τον συνάδελφό µου σε ότι χρειαζόµασταν. Τέλος, θέλω να ευχαριστήσω τον καθηγητή κ.Παπαδουράκη Γεώργιο που µας ενέταξε σε αυτό το πρόγραµµα και µας βοήθησε στην πρώτη γνωριµία που έγινε µε τους υπόλοιπους φοιτητές, αλλά και την οικογένειά µου και τουσ φίλους µου για την ψυχολογική- και όχι µόνο, υποστήριξη που µου προσέφεραν. Κατσιαµπούρη Αγγελική-Ιωάννα Θα ήθελα να ευχαριστήσω τον κ. Παπαδουράκη που µε δέχτηκε σε αυτή την πτυχιακή και µου έδωσε την ευκαιρία να µάθω καινούργια πράγµατα ενώ παράλληλα να αποκτήσω εµπειρία στην συνεργασία µε Ευρωπαίους συναδέλφους. Θα ήθελα επίσης να ευχαριστήσω τους Ευρωπαίους συναδέλφους που ήµασταν µαζί σε αυτό το σχέδιο και ιδιαίτερα τους Stephane Polet, Daniel Lopes και τον Pedro Ferreira για την σηµαντική τους συνεισφορά και καθοδήγηση στο γενικότερο project. Ευχαριστώ επίσης τη συνεργάτη µου Αγγελική Κατσιαµπούρη που µε άριστη συνεργασία και πολύ δουλειά καταφέραµε να πραγµατοποιήσουµε την πτυχιακή µας. Τέλος θα ήθελα να ευχαριστήσω την οικογένεια µου για την συµπαράσταση τους και την συνεχή υποστήριξη που µου παρέχουν στο να πετυχαίνω τους στόχους µου. Στέφανος Μουντράκης 2 Abstract The main purpose of this thesis is to develop a website for all those who are involved in the Erasmus Program, in order to avoid the bureaucracy of filling forms and waiting for response. It is part of the MUTW project, in which students of all around Europe are coming together in order to create this site. Students and coordinators can log in the website by using their unique user – password after they have registered. In the site, there are all the forms that have to be filled by students and coordinators. The exact way of making the process is explained in the chapters beneath. For the creation of the site, web programming languages were used, such as HTML and CSS for design, Javascript and Jquery for error control and PHP for functionality. For data' s storage and recovery, we used the database management system MySQL supported by XAMPP which provides the web server Apache. All tools and languages which are used for the creation of this website are explained with details during the access of the thesis. 3 Σύνοψη Ο κύριος σκοπός της πτυχιακής αυτής είναι η δηµιουργία – κατασκευή ιστοσελίδας που θα βοηθήσει όλους αυτούς που ασχολούνται µε το πρόγραµµα Erasmus, µε σκοπό να αποφύγουν την γραφειοκρατεία και την αναµονή. Αποτελεί µέρος του project MUTW κατά το οποίο φοιτητές από όλη την Ευρώπη δηµιουργούν µαζί την σελίδα αυτή, ο καθένας το δικό του ξεχωριστό κοµµάτι.Οι φοιτητές και οι συντονιστές θα µπορούν να µπαίνουν στην ιστοσελίδα χρησιµοποιώντας τους κωδικούς user – password, αφού πρώτα θα έχουν κάνει εγγραφή. Το site έχει την ονοµασία ErasmusLine. Στην ιστοσελίδα περιέχονται όλες οι φόρµες που πρέπει να συµπληρωθούν από τους φοιτητές και τους συντονιστές. Η ακριβής διαδικασία εξηγείται παρακάτω. Για την δηµιουργία της σελίδας αυτής χρησιµοποιήθηκαν όλες οι “απαραίτητες” γλώσσες προγραµµατισµού. Το design των φορµών έγινε µε χρήση HTML και CSS, ο έλεγχος για λάθη µε javascript και jquery και η λειτουργικότητα µε PHP. Για την αποθήκευση και ανάκτηση δεδοµένων χρησιµοποιήθηκε το εργαλέιο διαχείρησης βάσης MySQL το οποίο υποστηρίζεται από το XAMPP, που προσφέρει το web server Apache. Πλήρης περιγραφή των εργαλείων και των γλωσσών που χρησιµοποιήθηκαν , θα βρείτε κατά την διάρκεια προσπέλασης της πτυχιακής εργασίας. 4 Περιεχόµενα 1. ΕΙΣΑΓΩΓΗ 1.1 Περίληψη …………………………………………………………………………………………9 1.2 Κίνητρο για την διεξαγωγή της εργασίας………………………………………………………...9 1.3 Σκοπός και στόχοι εργασίας ……………………………………………………………………..9 1.4 ∆οµή εργασίας …………………………………………………………………………………..10 2. ΜΕΘΟ∆ΟΛΟΓΙΑ ΥΛΟΠΟΙΗΣΗΣ 2.1 Μέθοδος Ανάπτυξης και Ανάλυσης Πτυχιακής…………………………………………………11 2.2.1 Ορισµός Ίντερνετ(διαδίκτυο)……………………………………………………………...……11 2.2.1.a Παγκόσµιος Ιστός (WWW) – Internet………………………………………………....……..11 2.2.1.b Web Server ( ∆ιακοµιστής Ιστού)……………………………………………………………..11 2.2.1.c Φυλλοµετρητές (web browser)…………………………………………………..……………12 2.2.2 Ιστοσελίδα (Web Page)………………………………………………………………………….13 2.2.2.a Στατικές Ιστοσελίδες ( Static Web Pages)………………………………………………...…..13 2.2.2.b ∆υναµικές Ιστοσελίδες ( Dynamic Web Pages)……………………………………………...13 2.2.2.c Πλεονεκτήµατα – Μειονεκτήµατα ∆υναµικής – Στατικής Ιστοσελίδας……………………..13 2.3 Σύστηµα Ονοµάτων Τοµέων (Domain Name System)………………………………………….14 2.4.1 Εξυπηρετητής (Server)…………………………………………………………………………16 2.4.2 Μοντέλο Πελάτη – ∆ιακοµιστή………………………………………………………………..18 2.4.3 Apache – HTTP εξυπηρετητής…………………………………………………………………19 2.5 PHP…………………………………………………………………………………………..20 2.6 HTML………………………………………………………………………………………..22 2.7 CSS…………………………………………………………………………………………..23 2.7.1 Πλεονεκτήµατα CSS ………………………………………………………………………....24 2.8 jQuery…………………………………………………………………………………...……….24 2.9 Javascript………………………………………………………………………………………....25 2.10 Framework – Plonk……………………………………………………………………………..26 2.10.1 ∆οµή του Plonk………………………………………………………………………………..26 2.11 XAMPP………………………………………………………………………………………….31 3. ΣΧΕ∆ΙΟ ∆ΡΑΣΗΣ ΓΙΑ ΤΗΝ ΕΚΠΟΝΗΣΗ ΤΗΣ ΕΡΓΑΣΙΑΣ 3.1 State of the Art……………………………………………………………………………….36 3.1.1 Ελεύθερο Λογισµικό……………………………………………………………………...……36 3.1.2 Πλεονεκτήµατα Ελεύθερου Λογισµικού………………………………………………………37 3.1.3 NetBeans…………………………………………………………………………………….…38 3.1.4 Χρήση της πλατφόρµας NetBeans…………………………………………………………….39 3.1.5 Λόγοι Επιλογής NetBeans………………………………………………………………...……43 3.1.6 MySQL…………………………………………………………………………………………45 3.1.7 Χρήση της MySQL……………………………………………………………………………..45 3.1.8 Λόγοι Χρήσης των XAMPP και PLONK………………………………………………………51 3.2 Microsoft Project……………………………………………………………………………..51 3.2.1 Σηµαντικοί Στόχοι για την Εκπλήρωση της Πτυχιακής……………………………………...…52 3.2.2 Προετεινόµενο Χρονοδιάγραµµα (Gantt Chart) Εργασίας………………………………....…..52 4. ΚΥΡΙΟ ΜΕΡΟΣ ΠΤΥΧΙΑΚΗΣ 4.1 Ανάλυση Προβλήµατος…………………………………………………………………………….56 4.1.1 Σύντοµη Περιγραφή του Προγράµµατος MUTW……………………………………………….56 4.1.2 Η Οµάδα µας (ORANGE TEAM)……………………………………………………………….56 4.1.3 Links Προγραµµάτων που Χρησιµοποιήθηκαν………………………………………...………59 4.1.4 SourceForge…………………………………………………………………………………...…59 4.1.5 Adobe Connect Pro Meeting…………………………………………………………………….60 4.1.6 DropBox………………………………………………………………………………………….61 5 4.1.7 Git..............................................................................................................................................62 4.1.8 In-Coming Students Package-P5...............................................................................................63 4.1.9 Απαιτήσεις Συστήµατος..............................................................................................................65 4.2 Σχεδιασµός Υλοποίησης – Υλοποιηση..........................................................................................65 4.2.1 Φόρµες – ∆ηµιουργία και Λειτουργικότητα...............................................................................65 4.2.2 ∆οµή της Βάσης ∆εδοµένων.......................................................................................................67 4.2.3 ∆ηµιουργία Βάσης ∆εδοµένων...................................................................................................68 4.2.4 ∆οµή της ιστοσελίδας Erasmusline..............................................................................................71 5. ΑΠΟΤΕΛΕΣΜΑΤΑ 5.1 Συµπεράσµατα................................................................................................................................92 5.2 Μελλοντική Εργασία και Επεκτάσεις.............................................................................................92 6. ΒΙΒΛΙΟΓΡΑΦΙΑ 6 Πίνακας Εικόνων Εικόνα 1 – λειτουργίες φυλλοµετρητών………………………………………………………….12 Εικόνα 2 – Ιεραρχική οργάνωση χώρου ονοµάτων DNS………………...………………………15 Εικόνα 3 – εξυπηρετητές………………………………………………………………………….17 Εικόνα 4 – Πού χρησιµεύει η ΡΗΡ..................................................................................................21 Εικόνα 5 – Φάκελος Πτυχιακή........................................................................................................26 Εικόνα 7 – Περιεχόµενα CSS.........................................................................................................26 Εικόνα 8 – Φάκελος Includes..........................................................................................................27 Εικόνα 9 – Περιεχόµενα Includes...................................................................................................27 Εικόνα 10 – Περιεχόµενα js............................................................................................................28 Εικόνα 11 – Φάκελος Layout..........................................................................................................28 Εικόνα 12 - ΠεριεχόµεναLibrary...................................................................................................29 Εικόνα 13 – Φάκελος Library.........................................................................................................29 Εικόνα 14 – Αρχεία .tpl/.php...........................................................................................................30 Εικόνα 15 – Start XAMPP..............................................................................................................30 Εικόνα 16 – Localhost in XAMPP..................................................................................................32 Εικόνα 17 – PhPMyAdmin.............................................................................................................32 Εικόνα 18 – Αρχική σελίδα Βάσης ∆εδοµένων..............................................................................33 Εικόνα 19 – ∆ηµιοργία Βάσης ∆εδοµένων.....................................................................................33 Εικόνα 20 – Υπάρχουσες Βάσεις ...................................................................................................34 Εικόνα 21 – Πίνακες Βάσης............................................................................................................34 Εικόνα 22 – ∆ηµιουργία Project σε NetBeans................................................................................35 Εικόνα 23 – Χαρακτηριστικά ενός Project.....................................................................................39 Εικόνα 24 – Περιεχόµενα Libraries................................................................................................40 Εικόνα 25 – Πάράδειγµα Project σε NetBeans...............................................................................40 Εικόνα 26 – Εργαλεία NetBeans.....................................................................................................41 Εικόνα 27 – ∆ηµιουργία UML........................................................................................................41 Εικόνα 28 – ∆ηµιουργία Project σε Java........................................................................................42 Εικόνα 29 – Username / Password MySQL....................................................................................45 Εικόνα 30 – Create new Schema in MySQL ….............................................................................45 Εικόνα 31 – Storage Engine............................................................................................................47 Εικόνα 32 – address book …..........................................................................................................48 Εικόνα 33 – Κώδικας για δηµιουργία πίνακα.................................................................................49 Εικόνα 34 - Παράδειγµα χρήσης της γραµµής εντολών.................................................................50 Εικόνα 35 - αντίγραφο ασφαλείας..................................................................................................50 Εικόνα 36 – Στόχοι Πτυχιακής........................................................................................................51 Εικόνα 37 – Gantt Chart..................................................................................................................53 Εικόνα 38 – Πακέτα ανά οµάδα......................................................................................................53 Εικόνα 39 - Adobe Connect Pro Meeting.......................................................................................58 Εικόνα 39 – Βάση ∆εδοµένων........................................................................................................66 Εικόνα 40 – Εισαγωγή πινάκων......................................................................................................67 Εικόνα 41 – Αναζήτηση Πίνακα.....................................................................................................68 Εικόνα 42 – Επιτυχής εισαγωγή πίνακα.........................................................................................69 Εικόνα 43 – Αρχική σελίδα Erasmusline........................................................................................70 Εικόνα 44 – Info Page.....................................................................................................................71 Εικόνα 45 – Contact........................................................................................................................71 Εικόνα 46 – Erasmus Info...............................................................................................................72 Εικόνα 47 – Partners Info …...........................................................................................................73 Εικόνα 48 – EIS..............................................................................................................................77 Εικόνα 49 – Register Form.............................................................................................................77 Εικόνα 50 – Login...........................................................................................................................78 Εικόνα 51 – Forgot Password.........................................................................................................78 7 Εικόνα 52 – New Password Sent.....................................................................................................79 Εικόνα 53 – Javascript στην φόρµα Registration.............................................................................80 Εικόνα 54 – Strength of password...................................................................................................80 Εικόνα 55 – Weak password............................................................................................................81 Εικόνα 56 – valid email...................................................................................................................82 Εικόνα 57 – error in login...............................................................................................................83 Εικόνα 58 – Javascript στην φόρµα Accomodation.........................................................................84 Εικόνα 59 – Transcript of Records...................................................................................................85 Εικόνα 60 – Επιλογή φοιτητή..........................................................................................................86 Εικόνα 61 – Certficate of Arrival / Departure..................................................................................86 Εικόνα 62 – Παράδειγµα Certficate of Staying...............................................................................86 Εικόνα 63 – Παράδειγµα Accomodation.........................................................................................87 8 1. ΕΙΣΑΓΩΓΗ 1.1 Περίληψη Η δηµιουργία του website ErasmusLine ήρθε µέσα από την συµµετοχή στο πρόγραµµα MUTW. Κατά το πρόγραµµα αυτό, φοιτητές από διάφορα µέρη της Ευρώπης συνεργάζονται, έχοντας ο καθένας το δικό του µοναδικό ρόλο στο project , και δηµιουργούνε µια ιστοσελίδα που έχει ως βασικό στόχο να εξυπηρετεί τους ανθρώπους που χρησιµοποιούν ή θέλουν να χρησιµοποιήσουν το πρόγραµµα Erasmus. Η σελίδα παρέχει όλες τις απαραίτητες φόρµες που χρειάζεται να συµπληρωθούν από τους ενδιαφερόµενους κια να σταλούν µέσω email στους υπέυθυνους. Η ιστοσελίδα είναι δυναµική, που σηµαίνει ότι µπορεί να εγγραφεί στην βάση δεδοµένων οποιοδήποτε νέο στοιχείο βρεθεί, όπως π.χ ένα επιπλέον πανεπιστήµιο ή κάποιο καινούργιο µάθηµα. Όπως προαναφέρθηκε, κάθε µέλος του προγράµµατος αυτού έχει κι έναν µοναδικό ρόλο στην δηµιουργία της ιστοσελίδας. Ο ρόλος της ελληνικής οµάδας είναι η κατασκευή και λειτουργικότητα κάθε φόρµας που πρέπει να συµπληρωθεί είτε από τους φοιτητές είτε από τους συντονιστές. Για την υλοποίηση συνέβαλαν πολλές γλώσσες προγραµµατισµού και πολλά εργαλεία. Χρησιµοποιήσαµε το πρόγραµµα NetBeans για τον κώδικα και το XAMPP για να βλέπουµε το αποτέλεσµα αυτού. 1.2 Κίνητρο για την ∆ιεξαγωγή της Εργασίας Αρχικό και πρωταρχικό κίνητρο για την δηµιουργία της ιστοσελίδας αυτής είναι να παρακαµφθεί όλη η γραφειοκρατεία που υπάρχει µέχρι σήµερα σε όλη την διαδικασία του προγράµµατος Erasmus. Οι συντονιστές και οι φοιτητές θα έχουν την ευκαιρία πλέον να τα κάνουν όλα διαδικτυακά. Θα συµπληρώνονται οι φόρµες µέσα από την σελίδα και µέσω email θα πηγαίνουν στους εκάστοτε υπεύθυνους, οι οποίοι µε την σειρά τους θα συµπληρώνουν τα απαιτούµενα πεδία και θα τα στέλνουν µε email στους επόµενους. Η σελίδα βέβαια έχει και κάποιες άλλες παροχές, όπως ποιες χώρες έχουν την µεγαλύτερη προτίµηση από τους φοιτητές ή τα ποσοστά των φοιτητών που χρησιµοποίησαν το πρόγραµµα αυτό ανά έτος, όµως αυτά δεν ήταν µέρος της ελληνικής οµάδας. Όπως προαναφέρθηκε, η εργασία αυτή είναι οµαδική και οι συµµετέχοντες είναι από διάφορα µέρη της Ευρώπης. Συνεπώς, το δεύτερο κίνητρο είναι η ανάπτυξη των ικανοτήτων των συµµετέχοντων όσον αφορά την εξασκηση της αγγλικής γλώσσας και του οµαδικού πνεύµατος και επικοινωνίας. Εκτός από τα κίνητρα που µας δώσανε οι ίδιοι οι συντονιστές, είχαµε και ως προσωπικό κίνητρο την πρόκληση σε κάτι καινούριο, αφού κανείς από τους δύο δεν είχε ασχοληθεί πριν µε κάτι παρόµοιο. 1.3 Σκοπός και Στόχοι Εργασίας Σκοπός της πτυχιακής εργασίας είναι η κατακευή και η λειτουργικότητα των εγγράφων που πρέπει να συµπληρωθούν από όλους τους συµµετέχοντες του προγράµµατος Erasmus σε ηλεκτρονική µορφή. Οι βασικοί στόχοι για την εκπόνηση της πτυχιακής είναι: ➢ ➢ ➢ ➢ ➢ Ολοκλήρωση της ανάλυσης του προβλήµατος Υλοποιήση του τεχνικού µέρους της πτυχιακής εργασίας Έλεγχος λειτουργίας του τεχνικού µέρους Συγγραφή της πτυχιακής εργασίας Ανάλυση όλων των εργαλείων και των γλωσσών προγραµµατισµού που χρησιµοποιήθηκαν 9 ➢ ➢ Ανάλυση της διαδικασίας εκπόνησης του τεχνικού µέρους Παρουσίαση της πτυχιακής εργασίας 1.4 ∆οµή της Εργασίας Η παρούσα πτυχιακή εργασία έχει αναλυθεί στα παρακάτω κεφάλαια: Στο κεφάλαιο 1 παρέχονται κάποιες εισαγωγικές πληροφορίες για τους στόχους και τον σκοπό της πτυχιακής εργασίας Στο κεφάλαιο 2 περιγράφονται τα εργαλεία και οι γλώσσες προγραµµατισµού που χρησιµοποιήθηκαν για την δηµιουργία του τεχνικού µέρους της πτυχιακής εργασίας Στο κεφάλαιο 3 γίνεται σύγκριση των εργαλείων ανάπτυξης και η τελική επιλογή µε βάση τα προτερήµατα – µειονεκτήµατα του καθενός. Στο κεφάλαιο 4 παρουσιάζονται οι απαιτήσεις και οι περιορισµοί σύµφωνα µε τους οποίους θα λειτουργήσει τελικά η ιστοσελίδα Στο κεφάλαιο 5 παρατίθενται τα αποτελέσµατα και τα συµπεράσµατα της πτυχιακής εργασίας , καθώς και πιθανές µελλοντικές επεκτάσεις του συστήµατος που υλοποιήθηκε Στο κεφάλαιο 6 παρουσιάζεται η βιβλιογραφία που χρησιµοποιήθηκε κατά την διάρκεια της εκπόνησης της πτυχιακής εργασίας και της εφαρµογής 10 2.ΜΕΘΟ∆ΟΛΟΓΙΑ ΥΛΟΠΟΙΗΣΗΣ 2.1Μέθοδος Ανάλυσης και Ανάπτυξης της Πτυχιακής Εργασίας Το βασικό πρόβληµα που πρέπει να επιλυθεί είναι να µετατραπούν τα έγγραφα συµπλήρωσης από χειρόγραφα σε ηλεκτρονικά. Έγινε χρήση διαφόρων εργαλείων και γλωσσών προγραµµατισµού και το τελικό αποτέλεσµα αφοµοιώθηκε στην κεντρική ιστοσελίδα που έχει δηµιουργηθεί από τα άλλα µέλη του project. Όλη η εργασία έγινε βάσει ενός framework που ονοµάζεται Plonk και δεν βρίσκεται προς διάθεση στο εµπόριο. Το πρόγραµµα που χρησιµοποιήσαµε είναι το NetBeans, λόγω των υπηρεσιών που προσφέρει και κάνει πιο εύκολη την διαδικασία. Αρχικά, θα γίνει η δηµιουργία της κάθε φόρµας µε χρήση HTML και CSS. Αφού τελειώσει το κατασκευαστικό κοµµάτι, σειρά έχει το λειτουργικό. Σε αυτό το σηµείο πρέπει να φροντισουµε όλες τις τεχνικές λεπτοµέρειες που θα κάνουν τις φόρµες όχι µόνο λειτουργικές αλλά και εύκολα προσιτές από όλους όσους χρησιµοποιούν την σελίδα αυτή. Η διαδικασία αυτή απαιτεί την χρήση PHP Javascript και Jquery. Και οι τρεις αποτελούν γλώσσες προγραµµατισµού για το διαδίκτυο, για να γίνεται σωστή και ελεγχόµενη η διαδικασία συµπλήρωσης και υποβολής των εγγράφων. Τα πεδία που θα συµπληρώνονται από τους εκάστοτε ενδιαφερόµενους, θα αποθηκεύονται σε µια βάση δεδοµένων που θα δηµιουργηθεί µε την χρήση του εργαλείου MySQL και του XAMPP που προσφέρει τον server Apache για επικοινωνία µε το διαδίκτυο. Παρακάτω γίνεται µια αναφορά σε όλα τα εργαλεία που χρησιµοποιήθηκαν για την κατασκευή των ηλεκτρονικών εγγράφων. 2.2.1 Ορισµός Internet (διαδίκτυο) Το Internet ή διαδίκτυο , είναι το παγκόσµιο δίκτυο που συνδέει όλους τους ηλεκτρονικούς υπολογιστές µεταξύ τους, χρησιµοποιώντας ένα κοινό πρωτόκολλο επικοινωνίας, το TCP/IP (Transmission Control Protocol / Internet Protocol). Όλοι οι υπολογιστές απολαµβάνουν τις ίδιες υπηρεσίες και µπορούν να επικοινωνούν µεταξύ τους και να διαµοιράζονται αρχεία και δεδοµένα µε διάφορα πρωτόκολλα µεταφοράς όπως πχ HTTP, SMTP, FTP όπου το καθένα ελέγχει διαφορετικά τµήµατα στην διαδικασία της µεταφοράς. 2.2.1.a Παγκόσµιος Ιστός (WWW) – Internet Ο όρος παγκόσµιος ιστός- WWW(World Wide Web) εύκολα συγχέεται µε τον όρο διαδίκτυο, όµως δεν είναι ταυτόσηµοι. Ο παγκόσµιος ιστός αποτελεί τµήµα του διαδικτύου και είναι το µεγαλύτερο και το ταχύτερα αναπτυσσόµενο κοµµάτι του. Συγκεκριµένα, αποτελεί το µεσο για τη µεταφορά του τεράστιου όγκου δεδοµένων που είναι διαθέσιµα στο διαδίκτυο. Χρησιµοποιεί το πρωτόκολλο HTTP (Hyper Text Transfer Protocol). Η πληροφορία παρουσιάζεται στον χρήστη µε τη µορφή ιστοσελίδων (web pages) οι οποίες προσφέρονται από έναν εξυπηρετητή (web server) και γίνονται ορατές µέσα από ένα πρόγραµµα φυλλοµετρητή σελίδων (web browser) που έχει εγκαταστήσει ο κάθε χρήστης στον υπολογιστή του. 11 2.2.1.b Web Server ( ∆ιακοµιστής Ιστού) Κάθε ιστοσελίδα βρίσκεται αποθηκευµένη σε κάποιον διακοµιστή Ιστού µε τη µορφή αρχείου. Οι διακοµιστές Ιστού είναι ειδικοί υπολογιστές αρκετά µεγάλης ισχύος που διαθέτουν ειδικό λογισµικό και µε τις κατάλληλες δικτυακές συνδέσεις επιτρέπουν την διάθεση ιστοσελίδων σε ολόκληρο τον κόσµο. Όταν ο χρήστης ζητήσει να δει µια ιστοσελίδα, ο server του καθιστά διαθέσιµη την σελίδα αυτή χρησιµοποιώντας ως µέσο τον φυλλοµετρητή. 2.2.1.c Φυλλοµετρητές (web browser) Η ενεργοποίηση του φυλλοµετρητή γίνεται επιλέγοντάς το εικονίδιό του από την επιφάνεια εργασίας του υπολογιστή του χρήστη. Αυτόµατα ανακτάται η ιστοσελίδα που έχει αποθηκεύσει ο χρήστης ως αρχική ή που προυπάρχει από τους κατασκευαστές του. Όταν ο χρήστης επιλέξει έναν σύνδεσµο, το πρόγραµµα φυλλοµετρητή αναλαµβάνει την διαδικασία µεταφοράς του υπερκειµένου από τον κεντρικό υπολογιστή σε αυτόν του χρήστη. Στον παρακάτω πίνακα παρατίθενται οι βασικές λειτουργίες του φυλλοµετρητή. Εικόνα 1 – λειτουργίες φυλλοµετρητών 12 2.2.2 Ιστοσελίδα (Web Page) Ιστοσελίδα είναι ένα είδος ηλεκτρονικού εγγράφου του παγκόσµιου Ιστού που περιλαµβάνει πληροφορίες σε µορφή κειµένου, υπερκειµένου, ήχου , βίντεο και εικόνας. Πολλές ιστοσελίδες µαζί συνθέτουν έναν ιστότοπο ή web site. Οι σελίδες του ίδιου ιστότοπου παρουσιάζονται µε το ίδιο όνοµα χώρου (domain name) . Οι ιστoσελίδες αλληλοσυνδέονται και εµφανίζονται σύµφωνα µε την επιλογή του χρήστη πατώντας απλά πάνω στα κατάλληλα “σηµεία” που υποδυκνείει η ίδια η σελίδα. Οι δύο µεγάλες κατηγορίες στις οποίες χωρίζονται οι ιστοσελίδες είναι οι στατικές (static) και οι δυναµικές(dynamic). Η διαφορά τους δεν έγκειται στο εµφανισιακό κοµµάτι αλλά στο λειτουργικό. 2.2.2.a Στατικές Ιστοσελίδες ( Static Web Pages) Οι στατικές σελίδες είναι ουσιαστικά απλά ηλεκτρονικά έγγραφα. Συνήθως περιέχουν κείµενο, εικόνα, ήχο, βίντεο, συνδέσµους και αρχεία για download. Χρησιµεύουν κυρίως στην δηµιουργία µόνιµων – στατικών παρουσιάσεων, όπου δεν υπάρχει συχνά η ανάγκη για τροποποίηση του περιεχοµένου τους. Ο χαρακτηρισµός “στατική” δεν αναφέρεται στο περιεχόµενο της σελίδας αλλά στο γεγονός ότι το περιεχόµενό της είναι σταθερό και συγκεκριµένο. Πρόκειται δηλαδή για σταθερά ηλεκτρονικά έγγραφα. Το κυριότερο µειονέκτηµά τους είναι ότι δεν είναι ιδιαίτερα πρακτικά όταν το περιεχόµενό τους χρειάζεται συχνή αλλαγή. Αυτό µπορεί βέβαια να επιτευχθεί µε επεµβάσεις κατευθείαν πάνω στην ιστοσελίδα µε διάφορα προγράµµατα, αλλά είναι µια διαδικασία που χρειάζεται σχετική εµπειρία. 2.2.2.b ∆υναµικές Ιστοσελίδες (Dynamic Web Pages) Οι δυναµικές ιστοσελίδες µπορεί εµφανισιακά να µην έχουν κάποια ιδιαίτερη διαφορά µε τις στατικές, όµως οι δυνατότητές τους είναι πολύ περισσότερες από όλες τις πλευρές καθώς πρόκειται ουσιαστικά για ένα ολόκληρο πρόγραµµα – εφαρµογή και όχι ένα απλό ηλεκτρονικό έγγραφο. Συνήθως οι δυναµικές ιστοσελίδες χρησιµοποιούν κάποια βάση δεδοµένων για να αποθηκεύουν το περιεχόµενο τους και να ανακτούν τµήµα αυτού ανάλογα µε το σηµείο που “πάτησε” ο χρήστης. Η χρήση της βάσεως δεδοµένων είναι αυτή που κάνει εύκολη την διαδικασία προσθαφαίρεσης δεδοµένων στην ίδια ιστοσελίδα, καθώς δεν χρειάζεται να επεµβαίνουµε στην ιστοσελίδα αλλά µέσα από την βάση δεδοµένων διαχειριζόµαστε την πληροφορία που θέλουµε να τροποποιήσουµε. Οι υπόλοιπες διαδικασίες γίνονται “αυτόµατα” από τον µηχανισµό της ιστοσελίδας. Για την διαχείρηση του περιεχοµένου της σελίδας υπάρχει ένας µηχανισµός που ονοµάζεται CMS (Content Management System) και η χρήση του είναι αρκετά εύκολη. 2.2.2.c Πλεονεκτήµατα – Μειονεκτήµατα ∆υναµικής – Στατικής Ιστοσελίδας Οι στατικές ιστοσελίδες κατασκευάζονται ευκολότερα µε χαµηλότερο κόστος από µια δυναµική ιστοσελίδα και έχουν µικρότερες απαιτήσεις σε χώρο (φιλοξενία ιστοσελίδας). Απο την άλλη µεριά µια στατική ιστοσελίδα έχει δυσκολίες στην ανανέωση και την ανάπτυξή της και δεν συνιστάται για πολύ µεγάλες ιστοσελίδες. Το περιεχόµενο της δεν αλλάζει εύκολα και απαιτεί κάποιες γνώσεις για να µπορέσει να αλλαχθεί ή να προστεθεί νέο υλικό. Μια δυναµική ιστοσελίδα µπορεί να απαιτεί αρκετές σελίδες κώδικα και πολλές γνώσεις για να κατασκευαστεί όµως απο κει και πέρα γίνετε πολύ εύκολη στην χρήση της. Σε αντίθεση µε τις στατικές ιστοσελίδες ο απλός χρήστης χωρίς ιδιαίτερες γνώσεις µπορεί να προσθέσει ή να αλλάξει το περιεχόµενο της ιστοσελίδας. Πίσω από κάθε δυναµική ιστοσελίδα υπάρχει µια βάση δεδοµένων. Το κόστος κατασκευής µιας δυναµικής ιστοσελίδας και της φιλοξενία της είναι πολύ µεγαλύτερο από ότι µια στατικής ιστοσελίδας. 13 2.3 Σύστηµα Ονοµάτων Τοµέων (Domain Name System) Το Domain Name System ή DNS είναι ένα ιεραρχικό σύστηµα ονοµατοδοσίας για υπολογιστές, υπηρεσίες και οποιοδήποτε άλλο δικτυακό πόρο συνδέεται σε δίκτυο µε πρωτόκολλο ΙΡ. Το σύστηµα DNS µπορεί και αντιστοιχίζει ονόµατα µε διευθύνσεις ΙΡ ή άλλα ονόµατα στο ∆ιαδίκτυο ή ένα ιδιωτικό δίκτυο. Ο χώρος ονοµατων τοµέων (Domain Name Space ) του DNS είναι δοµηµένος ιεραρχικά σε δενδρική δοµή, µε τα ονόµατα να φέρουν πληροφορία που αντανακλά τη θέση τους στη δοµή αυτή. Ο χώρος ονοµάτων DNS ενός ιδιωτικού δικτύου µπορεί να διαφέρει µε τον χώρο ονοµάτων DNS του ∆ιαδικτύου ή κάποιου άλλου διαδικτύου. Η αντιστοίχιση ονοµάτων µε αριθµητικές διευθύνσεις προέκυψε επειδή οι αριθµητικές διευθύνσεις IP δεν είναι εύχρηστες απο τους ανθρωπους. Οι άνθρωποι αποδιδουν σηµασία και θυµούνται ευκολότερα ονόµατα. Οι χώροι ή περιοχές ή τοµείς (domains) χωρίζονται σε επίπεδα, και κάθε επίπεδο συχνά περιέχει κατώτερα επιπέδα, για παράδειγµα ένας τοµέας πρώτου επιπέδου µπορεί να περιέχει ιεραρχικά τοµείς δεύτερου επιπέδου κτλ. Η αλλαγή επιπέδου των ονοµάτων χώρου είναι πολλές φορές ισοδύναµη µε αλλαγή ζώνης DNS (DNS zone). Χρησιµοποιόντας την ορολογία που χρησιµοποιήται στην δενδρική δοµή η ζώνη DNS είναι ένας κόµβος και ένα όνοµα χώρου είναι ένα φύλλο. Όλες οι ζώνες DNS είναι και ονόµατα χώρου αλλά το αντίστροφο δεν ισχύει πάντα. Στην πράξη οι ζώνες DNS είναι τα φυσικά αρχεία που βρίσκονται σε εξυπηρετητές DNS και περιέχουν τις αντιστοιχίσεις ονοµάτων και διευθύνσεων ή άλλων ονοµάτων ως εγγραφές DNS ( DNS records ή resource records ). ∆ηλαδή οι ζώνες DNS είναι απλές βάσεις δεδοµένων και οι εγγραφές DNS είναι τα δεδοµένα. Πχ. µια ζώνη DNS είναι η ζώνη ietf.org που περιέχει όλες τις εγγραφές DNS γιά το όνοµα χώρου του ietf.org. Για διαχειριστικούς και λογιστικούς λόγους ο διαχειριστής της ζώνης ietf.org δηµιούργησε τη ζώνη tools.ietf.org και έδωσε το δικαίωµα της διαχειρισής των εγγραφών DNS στον χώρο ονοµάτων tools.ietf.org σε κάποιον άλλο διαχειριστή συστηµάτων. Άλλη µια ζώνη DNS είναι η ζώνη com. Ο ∆ιαχειριστής της ζώνης com δηµιούργησε τη ζώνη example.com και έδωσε τον έλεγχο της στον IANA. Τώρα ο IANA ελέγχει όλες τις εγγραφές DNS για τον χώρο ονοµάτων example.com.Οι ζώνες DNS συνήθως σηµαίνουν την αλλαγή διαχείρισης µιάς περιοχής/χώρου και περιέχουν εγγραφές DNS (µε κατεύθυνση από το όνοµα) µόνο µε το όνοµα χώρου ή τοµείς του. Όταν κάποιος κατοχυρώνει ένα όνοµα χώρου στο σύστηµα DNS στη ουσία παίρνει τον έλεγχο της ζώνης DNS αυτού του ονόµατος χώρου. Το Σύστηµα DNS βασίζεται σε µια διανεµηµένη βάση δεδοµένων η οποία «τρέχει» στους εξυπηρετητές (servers) του συστήµατος και αποτελείται από ζώνες DNS οργανωµένες σε µια δενδρική δοµή. Οι εξυπηρετητές DNS χωρίζονται στους αρχικούς (root) εξυπηρετητές, τους εξουσιοδοτηµένους (authoritative) εξυπηρετητές, και τους αποθηκευτικούς (caching) εξυπηρετητές. Οι εξουσιοδοτηµένοι εξυπηρετητές DNS χωρίζονται σε πρωτεύοντες και εναλλακτικούς (masters and slaves). Συνήθως κάποιος από τους πρωτεύοντες εξουσιοδοτηµένους εξυπηρετητές ενός ονόµατος χώρου είναι ο πρωταρχικός. Σε αυτόν γίνονται συνήθως οι αλλαγές. Πελάτες των υπηρεσιών που παρέχουν οι εξυπηρετητές DNS είναι οι λύτες DNS (DNS resolvers). Οι λύτες είναι λογισµικό που χρησιµοποιήται απο έναν χρήστη ή κάποιo πρόγραµµα που ζητά τις υπηρεσίες DNS. Οι λύτες διαβάζουν τα ονόµατα του DNS από δεξιά προς τα αριστερά. Κάθε τελεία δείχνει την αρχή ενός υποσυνόλου και το σύνολο που περιλαµβάνει όλα τα σύνολα είναι η πιο δεξιά τελεία που ονοµάζεται ρίζα και συνήθως παραλείπεται. Π.χ. όταν γράφουµε το όνοµα "DNS.example.wikipedia.www.el.ipduh.com" εννοούµε "DNS.example.wikipedia.www.el.ipduh.com." . Η τελική τελεία είναι το σύνολο που περιλαµβάνει όλο το σύστηµα και το υποσύνολο που ονοµάζεται "com.". Το σύνολο "com." περιλαµβάνει το σύνολο "ipduh.com.", το σύνολο "ipduh.com." περιλαµβάνει το "el.ipduh.com." Το σύνολο "el.ipduh.com." περιλαµβάνει το σύνολο "www.el.ipduh.com." κτλ Οι άνθρωποι διαβάζουν τα ονόµατα DNS από αριστερά προς τα δεξιά και πάντα παραλείπουν την τελευταία τελεία. Στα ονόµατα DNS επιτρέπεται η χρήση αλφαριθµητικών στοιχείων παυλών και τελειών. Συνεχόµενες παύλες και συνεχόµενες τελείες απαγορεύονται. Στα ονόµατα χώρου τα κεφαλαία γράµµατα είναι ισοδύναµα µε τα µικρά γράµµατα. Π.χ example.net και exAmpLE.nET είναι το ίδιο όνοµα. Η σχέση µεταξύ ονοµάτων και διεύθύνσεων IP δεν είναι 1 προς 1. ∆ηλαδή σε ένα όνοµα µπορεί να αντιστοιχούν πολλές διευθύνσεις IP και σε µια διεύθυνση πολλά ονόµατα. 14 Εικόνα 2 – Ιεραρχική οργάνωση χώρου ονοµάτων DNS Το σύστηµα DNS προέκυψε επειδή στους άνθρωπους ονόµατα σηµαίνουν περισσότερα απο αριθµητικές διευθύνσεις αλλά στην συνέχεια το συστηµα DNS απέκτησε και άλλες χρήσεις εξίσου σηµαντικές. Το DNS επιτρέπει την ανεύρεση ενός εξυπηρετητή (server) ή µιας υπηρεσίας σε έναν εξυπηρετητή χρησιµοποιώντας ένα όνοµα. Ένας εξυπηρετητής µπορεί να προσφέρει ταυτόχρονα περισσότερες από µια υπηρεσίες, σύµφωνα µε διάφορα πρωτόκολλα, όπως το HTTP, το FTP, το POP, το IMAPκαι το SMTP, δίνοντας τη δυνατότητα στο χρήστη να συνδεθεί σε µια ιστοσελίδα (HTTP), σε µια αποθήκη αρχείων (FTP), ή να λάβει email (POP ή IMAP). Για ένα χρήστη είναι ευκολότερο να θυµάται το όνοµα της ιστοσελίδας www.google.gr παρά το χ.ψ.ω.ζ:80 (ο συνδυασµός διεύθυνσης IP και θύρας TCP στην οποία βρίσκεται ο εξυπηρετητής HTTP του www.google.gr). Επίσης το DNS χρησιµοποιείται για να αντιστοιχίσει διευθύνσεις IP µε ονόµατα. Έτσι ο διαχειριστής ενός δικτύου µπορεί να χρησιµοποιήσει ονόµατα για να επικοινωνήσει ή να απλώς να θυµάται ονόµατα µηχανηµάτων, τοποθεσίες, ονόµατα χώρου, και ότι άλλο σκεφτεί. Τα ονόµατα των διευθύνσεων IP λειτουργούν και κατά κάποιον τρόπο σαν εγγυήσεις µιας και µόνο οι διαχειριστές των δικτύων κάτοχοι των διευθύνσεων µπορούν να τα αλλάξουν. Στην λειτουργία του ηλεκτρονικού ταχυδροµείου το όνοµα της διεύθυνσης IP του εξυπηρετητή ηλεκτρονικού ταχυδροµείου (Mail Server) θεωρείται απόδειξη του ότι είναι αυτός που λέει. Το σύστηµα DNS δίνει, τέλος, τη δυνατότητα αντιστοίχισης µεταξύ ονοµάτων, καθώς και τη δυνατότητα αντιστοίχισης ενός ονόµατος σε πολλαπλές διευθύνσεις IP (round robin DNS και IP sorting), πράγµα που βοηθά στη διαµοίραση του φόρτου µας µιας δικτυακής υπηρεσίας σε περισσότερους του ενός εξυπηρετητές ή την κατεύθυνση των πελατών δικτυακών υπηρεσιών σε γεωγραφικά κοντινότερους εξυπηρετητές. Στο σύστηµα DNS είναι δυνατή η αντιστοίχιση άπειρων ονοµάτων σε µία διεύθυνση IP ή µια οµάδα διευθύνσεων IP. Αυτό διευκολύνει λογιστικά την διαχείριση εξυπηρετητών δικτυακών υπηρεσιών και βοηθά στην οικονοµία διευθύνσεων IP. 15 2.4 Εξυπηρετητής (Server) Εξυπηρετητής ή διακοµιστής (server) είναι υλικό ή / και λογισµικό που αναλαµβάνει την παροχή διάφορων υπηρεσιών, «εξυπηρετώντας» αιτήσεις από άλλους υπολογιστές γνωστούς ως πελάτες (clients). Όταν ένας υπολογιστής εκτελεί κυρίως τέτοια προγράµµατα εξυπηρετητές συνεχόµενα, 24 ώρες την ηµέρα, τότε µπορούµε να αναφερθούµε σε όλον τον υπολογιστή ως εξυπηρετητή, αφού αυτή είναι η κύρια λειτουργία του. Παροµοίως, ως πελάτη µπορούµε να θεωρήσουµε είτε κάποιο λογισµικό που επικοινωνεί και υποβάλει αιτήµατα στον εξυπηρετητή, είτε τον υπολογιστή στον οποίο εκτελείται το λογισµικό πελάτης. Η επικοινωνία µεταξύ πελάτη και εξυπηρετητή γίνεται µέσω ενός τοπικού δικτύου, ή ακόµα και µέσω του ∆ιαδικτύου. Ο εξυπηρετητής είναι συνήθως ένας υπολογιστής που διαφέρει ως προς τη σύνθεσή του από άλλους κοινούς υπολογιστές, µιας και οι δυνατότητες του είναι σαφώς αναβαθµισµένες. Κύρια χαρακτηριστικά ενός εξυπηρετητή είναι οι επεξεργαστές που υποστηρίζει και χρησιµοποιεί για την επεξεργασία των δεδοµένων που δέχεται, οι γρήγοροι και µεγάλης χωρητικότητας σκληροί δίσκοι αλλά και οι ταχύτητες µνήµης που υποστηρίζει. Συνήθως συνοδεύεται από σύστηµα διπλής τροφοδοσίας (dual power supply) και από συσκευή παροχής αδιάλειπτης ενέργειας (UPS), για µεγαλύτερη αξιοπιστία και σιγουριά στις παρεχόµενες υπηρεσίες του. Οι υπολογιστές που χρησιµοποιούνται ως εξυπηρετητές πρέπει να µπορούν να δουλεύουν όλη την ηµέρα και συνεχώς χωρίς διακοπές. Για το λόγο αυτό οι εταιρείες κατασκευής υπολογιστών και τµηµάτων υπολογιστών προσφέρουν ξεχωριστές κατασκευές για εξυπηρετητές. Φυσικά αυτές οι κατασκευές µπορούν να χρησιµοποιηθούν και για προσωπικό υπολογιστή όµως ανεβάζουν το κόστος. Συνηθισµένα χαρακτηριστικά για το υλικό είναι: • µητρικές πλακέτες µε • µεγάλη αντοχή στις θερµοκρασίες • ενσωµατωµένα συστήµατα RAID • ενσωµατωµένη κάρτα οθόνης µικρής µνήµης και ταχύτητας • πιο άνετα κατανεµηµένα τα στοιχεία της µνήµης και του επεξεργαστή ώστε να είναι δυνατή η ψύξη και των δύο από ξεχωριστά δυνατά ανεµιστηράκια • λιγότερες θύρες επέκτασης • περισσότερα ενδεικτικά στοιχεία λειτουργίας • δυνατότητα χρήσης µνήµης ECC • κουτιά • βαριά • µε ειδικό κλείδωµα • θέσεις για περισσότερα ανεµιστηράκια • ειδικά διαµορφωµένους εσωτερικούς χώρους ώστε να γίνεται πιο καλή κυκλοφορία του αέρα • ειδικά κουτιά που µπορούν να ενσωµατωθούν σε rack • δίσκοι • µε προδιαγραφές για µεγαλύτερο συνεχόµενο χρόνο χρήσης • που µπορούν να αποσυνδέονται την ώρα που είναι σε λειτουργία 16 Εικόνα 3 – εξυπηρετητές Τα περισσότερα λειτουργικά συστήµατα έχουν ειδική έκδοση για χρήση ως εξυπηρετητή. Τα χαρακτηριστικά που την διαφοροποιούν είναι πολλά µερικά από τα οποία είναι: • δυνατότητα λειτουργίας χωρίς την ύπαρξη: • πληκτρολογίου • οθόνης • γραφικού περιβάλλοντος • κάρτας ήχου • δυνατότητες επιλογής χρόνου επεξεργασίας των διάφορων προγραµµάτων • πρόγραµµα επικοινωνίας µε το UPS • δυνατότητα χρήσης περισσότερων του ενός επεξεργαστή • δυνατότητα συνεπεξεργασίας µε άλλους υπολογιστές- εξυπηρετητές • περισσότερες δυνατότητες αλλαγής του υλικού και αναβάθµισης του λειτουργικού χωρίς την ανάγκη επανεκκίνησης του συστήµατος • περισσότερα συστήµατα ασφαλείας Πολλά σύγχρονα προγράµµατα δουλεύουν µε τη λογική πελάτη - εξυπηρετητή. Ακόµα και το ίδιο το λειτουργικό σύστηµα δουλεύει µε αυτήν τη λογική. Τα προγράµµατα ζητάνε κάποια ενέργεια και το λειτουργικό σύστηµα αναλαµβάνει να τα εξυπηρετήσει εκτελώντας τις λειτουργίες που του ζητήθηκαν. Συνήθως τα περισσότερα προγράµµατα εξυπηρετητών απαιτούν και ξεχωριστό υπολογιστήεξυπηρετητή χωρίς αυτό να είναι πάντα απαραίτητο. 17 Συνηθισµένοι εξυπηρετητές-προγράµµατα σε περιβάλλον γραφείου που µπορεί να βρίσκονται ή όχι σε ξεχωριστούς υπολογιστές είναι: • • • • • • • Εξυπηρετητής αρχείων (file server) Εξυπηρετητής εκτυπωτών (printer server) Εξυπηρετητής αντιγράφων ασφαλείας (backup server) Εξυπηρετητής βάσεων δεδοµένων (database server) Εξυπηρετητής φαξ (fax server) Εξυπηρετητής διαµεσολαβητή (proxy server) Εξυπηρετητής ηλεκτρονικού ταχυδροµείου ΙΜΑΡ Συνηθισµένοι εξυπηρετητές-προγράµµατα στο Ίντερνετ είναι: • • • • • • • • Παγκόσµιου Ιστού (World Wide Web, web server) Domain Name System (DNS server) Ηλεκτρονικού ταχυδρµείου (mail server) Μεταφοράς αρχείων µε το πρωτόκολλο FTP(ftp server) irc και instant messaging (irc server) Επικοινωνίες φωνής streaming audio και video (streaming server) Online παιχνίδια Κάθε εξυπηρετητής έχει διαφορετικές ανάγκες για υλικό. Σύνήθως έχει ανάγκη από γρήγορη πρόσβαση στο δίκτυο όµως ένας εξυπηρετητής φαξ δεν θα υποφέρει τόσο αν δεν έχει γρήγορη κάρτα δικτύου ή αρκετή µνήµη όσο το να έχει προβληµατικό modem. Ένας εξυπηρετητής αρχείων και ένας εξυπηρετητής αντιγράφων ασφαλείας είναι προτιµότερο να έχουν όσο γίνεται πιο αξιόπιστους και πιο ταχείς δίσκους από το να έχουν µεγαλύτερο επεξεργαστή ή περισσότερη και ακριβότερη µνήµη. Ένας εξυπηρετητής DNS χρειάζεται όσο το δυνατό µεγαλύτερη ασφάλεια και γι αυτό το λόγο εκείνο που χρειάζεται περισσότερο είναι να τρέχουν όσο το δυνατόν λιγότερα προγράµµατα. 2.4.2 Μοντέλο Πελάτη – ∆ιακοµιστή Στην επιστήµη υπολογιστών το µοντέλο αρχιτεκτονικης λογισνικού πελάτη-διακοµιστή αποτελεί µία συνήθη µέθοδο ανάπτυξης λογισµικού στην οποία ο πελάτης (ένα τµήµα λογισµικού) ζητά κάτι (π.χ. έναν πόρο τα αποτελέσµατα ενός υπολογισµού κ.ο.κ.) και ένα άλλο τµήµα λογισµικού, ο διακοµιστής (ή εξυπηρετητής), του το επιστρέφει. Κάθε διακοµιστής µπορεί να εξυπηρετεί πολλαπλούς πελάτες. Ο διακοµιστής και ο πελάτης µπορούν να εκτελούνται σε διαφορετικές διεργασίες, οι οποίες µε τη σειρά τους µπορούν να εκτελούνται σε διαφορετικούς υπολογιστές , οπότε απαιτείται ένα δίκτυο υπολογιστών για τη διαδιεργασιακή επικοινωνία µεταξύ τους. Σε αυτή την περίπτωση το µοντέλο πελάτη-διακοµιστή αποτελεί µία από τις µεθόδους ανάπτυξης και λειτουργίας κατανεµηµένων συστηµάτων, όπου θεωρούµε τόσο τον πελάτη όσο και τον διακοµιστή διαφορετικά τµήµατα της ίδιας κατανεµηµένης εφαρµογής (π.χ., µε την έννοια αυτή, ο Παγκόσµιος Ιστός είναι µία µεγάλη κατανεµηµένη εφαρµογή αποτελούµενη από τους πλοηγούς Web και το σύνολο των διακοµιστών Web). 18 2.4.3 Apache – HTTP εξυπηρετητής Ο Apache HTTP γνωστός και απλά σαν Apache είναι ένας εξυπηρετητής του παγκόσµιο υ ιστού (web). Όποτε ένας χρήστης επισκέπτεται ένα ιστότοπο το πρόγραµµα πλοήγησης (browser) επικοινωνεί µε έναν διακοµιστή (server) µέσω του πρωτοκόλλου ΗΤΤΡ, ο οποίος παράγει τις ιστοσελίδες και τις αποστέλλει στο πρόγραµµα πλοήγησης. O Apache είναι ένας από τους δηµοφιλέστερους, εν µέρει γιατί λειτουργεί σε διάφορες πλατφόρµες όπως τα Windows, το Linux, το Unix και το Macos X. Συντηρείται τώρα από µια κοινότητα ανοικτού κώδικα µε επιτήρηση από το Ίδρυµα Λογισµικού Apache (Apache Software Foundation). Ο Apache χρησιµοποιείται και σε τοπικά δίκτυα σαν διακοµιστής συνεργαζόµενος µε συστήµατα διαχείρισης Βάσης ∆εδοµένων π.χ. , oracle, MySQL. Η πρώτη του έκδοση, γνωστή ως NCSA HTTPd, δηµιουργήθηκε από τον Robert McCool και κυκλοφόρησε το 1993. Θεωρείται ότι έπαιξε σηµαντικό ρόλο στην αρχική επέκταση του παγκόσµιου ιστού. Ήταν η πρώτη βιώσιµη εναλλακτική επιλογή που παρουσιάστηκε απέναντι στον εξυπηρετητή http της εταιρίας Netscape και από τότε έχει εξελιχθεί στο σηµείο να ανταγωνίζεται άλλους εξυπηρετητές βασισµένους στο Unix σε λειτουργικότητα και απόδοση. Από το 1996 ήταν από τους πιο δηµοφιλείς όµως από τον Μάρτιο του 2006 έχει µειωθεί το ποσοστό της εγκατάστασής του κυρίως από τον Microsft Internet Information Services και την πλατφόρµα .NET . Τον Οκτώβριο του 2007 το µερίδιο του ήταν 47.73% από όλους τους ιστοτόπους. 19 2.5 PHP Η PHP είναι µια ευρέως χρησιµοποιούµενη, γενικού σκοπού scripting γλώσσα η οποία είναι κατάλληλη για ανάπτυξη web σελίδων και µπορεί να ενσωµατωθεί σε HTML κώδικα. Εκτελείται σε έναν web server, λαµβάνοντας ως είσοδο PHP κώδικα και παράγοντας ως έξοδο ιστοσελίδες. Μπορεί να αναπτυχθεί στους περισσότερους web servers, σε σχεδόν κάθε λειτουργικό σύστηµα και πλατφόρµα και µπορεί να χρησιµοποιηθεί µε τα περισσότερα συστήµατα διαχείρισης βάσεων δεδοµένων (DBMS). Η PHP είναι εγκατεστηµένη σε περισσότερες από 20 εκατοµµύρια ιστοσελίδες και 1 εκατοµµύριο web servers.Αντίθετα από µια συνηθισµένη HTML σελίδα, η σελίδα PHP δεν στέλνεται άµεσα σε έναν πελάτη (client-side), αντί’ αυτού πρώτα µεταγλωττίζεται στο web server(server-side)και µετά αποστέλλεται το παραγόµενο αποτέλεσµα. Έτσι τα στοιχεία HTML στον πηγαίο κώδικα µένουν ως έχουν, αλλά ο PHP κώδικας µεταγλωττίζεται και εκτελείται. Η µεταγλώττιση αυτή αυξάνει το χρόνο εκτέλεσης του script διότι προσθέτει ένα επιπλέον βήµα προς εκτέλεση. Τα PHP scripts µπορούν να µεταγλωττιστούν και από πριν, µε την χρήση των PHP compilers όπως γίνεται και σε άλλες γλώσσες προγραµµατισµού όπως η C. Η PHP είναι παρόµοια µε άλλες server-side scripting γλώσσες που παρέχουν δυναµικό περιεχόµενο από τον web server στο πελάτη(client), όπως το ASP.NET της Microsoft, οι JavaServer Pages της Sun Microsystems και mod_perl.Η ιστορία της PHP ξεκινά από το 1995, όταν ένας φοιτητής, ο Rasmus Lerdorfδηµιούργησε χρησιµοποιώντας τη γλώσσα προγραµµατισµού Perl ένα απλό script µε όνοµα php.cgi, για προσωπική χρήση. Το script αυτό είχε σαν σκοπό να διατηρεί µια λίστα στατιστικών για τα άτοµα που έβλεπαν το online βιογραφικό του σηµείωµα. Αργότερα αυτό το script το διέθεσε και σε φίλους του, οι οποίοι άρχισαν να του ζητούν να προσθέσει περισσότερες δυνατότητες. Η γλώσσα τότε ονοµαζόταν PHP/FI από τα αρχικά Personal Home Page/Form Interpreter. Το 1997 η PHP/FI έφθασε στην έκδοση 2.0, βασιζόµενη αυτή τη φορά στη γλώσσα C και αριθµώντας περισσότερους από 50.000 ιστότοπους που τη χρησιµοποιούσαν, ενώ αργότερα την ίδια χρονιά οι Andi Gutmans και Zeev Suraski ξαναέγραψαν τη γλώσσα από την αρχή, βασιζόµενοι όµως αρκετά στην PHP/FI 2.0. Έτσι η PHP έφθασε στην έκδοση 3.0 η οποία θύµιζε περισσότερο τη σηµερινή µορφή της. Στη συνέχεια, οι Zeev και Andi δηµιούργησαν την εταιρεία Zend (από τα αρχικά των ονοµάτων τους), η οποία συνεχίζει µέχρι και σήµερα την ανάπτυξη και εξέλιξη της γλώσσας PHP. Ακολούθησε το 1998 η έκδοση 4 της PHP, τον Ιούλιο του 2004 διατέθηκε η έκδοση 5, ενώ αυτή τη στιγµή έχουν ήδη διατεθεί και οι πρώτες δοκιµαστικές εκδόσεις της επερχόµενης PHP 6, για οποιονδήποτε προγραµµατιστή θέλει να τη χρησιµοποιήσει. Οι περισσότεροι ιστότοποι επί του παρόντος χρησιµοποιούν κυρίως τις εκδόσεις 4 και 5 της PHP. Τον Αύγουστο του 2004 ήταν σε χρήση σχεδόν σε 17 εκατοµµύρια τοµείς παγκόσµια και αυτός ο αριθµός µεγαλώνει γρήγορα. µπορείτε να δείτε τον τρέχοντα αριθµό στο : http://www.php.net/usage.php. Η PHP είναι ένα προϊόν ανοιχτού κώδικα, που σηµαίνει ότι έχετε πρόσβαση στον κώδικα προέλευσης και µπορείτε να τον χρησιµοποιείτε, να τον αλλάζετε και να τον αναδιανείµετε χωρίς χρέωση. Η PHP αρχικά ήταν το ακρωνύµιο του Personal Home Page(προσωπική αρχική σελίδα), αλλά άλλαξε σύµφωνα µε τη σύµβαση GNU και τώρα είναι ακρωνύµιο του PHP Hypertext Preprocessor(προεπεξεργαστής κειµένου PHP). Η τρέχουσα βασική έκδοση της PHP είναι η 5. 20 Αυτή η έκδοση έχει υποστεί πλήρη ανανέωση στη Zend µηχανή της και µερικές µεγάλες βελτιώσεις στη γλώσσα. Η αρχική σελίδα της PHP είναι διαθέσιµη στο: http://www.php.net Η αρχική σελίδα της Zend Technologies είναι διαθέσιµη στο: http://www.zend.com Ένα αρχείο µε κώδικα PHP θα πρέπει να έχει την κατάλληλη επέκταση (π.χ.*.php,*.php4, *.phtml κ.ά.). Η ενσωµάτωση κώδικα σε ένα αρχείο επέκτασης .html δεν θα λειτουργήσει και θα εµφανίσει στον browser τον κώδικα χωρίς καµία επεξεργασία, εκτός αν έχει γίνει η κατάλληλη ρύθµιση στα MIME types του server. Επίσης ακόµη κι όταν ένα αρχείο έχει την επέκταση .php, θα πρέπει ο server να είναι ρυθµισµένος για να επεξεργάζεται κώδικα PHP. Ο διακοµιστής Apache, που χρησιµοποιείται σήµερα ευρέως σε συστήµατα µε τα λειτουργικά συστήµατα Linux και Microsoft Windows, υποστηρίζει εξ ορισµού επεξεργασία κώδικα PHP. Εικόνα 4 – Πού χρησιµεύει η ΡΗΡ 2.5.1 Πλεονεκτήµατα της PHP Κάποιοι από τους ανταγωνιστές της PHP είναι η Perl, Microsoft ASP.NET, Java Server Pages(JSP), ColdFusion. Σε σύγκριση µε αυτά τα προϊόντα τα πλεονεκτήµατα της PHP είναι: Υψηλή απόδοση ιασυνδέσεις µε πολλά διαφορετικά συστήµατα βάσεων δεδοµένων Ενσωµατωµένες βιβλιοθήκες για πολλές συνηθισµένες Web διαδικασίες Χαµηλό κόστος Ευκολία µάθησης και χρήσης υνατή αντικειµενοστραφή υποστήριξη Μεταφερσιµότητα ιαθεσιµότητα του κώδικα προέλευσης ιαθεσιµότητα υποστήριξης 21 2.6 HTML Τα αρχικά HTML προέρχονται από τις λέξεις HyperText Markup Language. Η html δεν είναι µια γλώσσα προγραµµατισµού. Είναι µια γλώσσα σήµανσης (markup language), δηλαδή ένας ειδικός τρόπος γραφής κειµένου. Ο καθένας µπορεί να δηµιουργήσει ένα αρχείο HTML χρησιµοποιώντας απλώς εναν επεξεργαστή κειµένου. Aποτελεί υποσύνολο της γλώσσας SGML (Standard Generalized Markup Language) που επινοήθηκε από την IBM προκειµένου να λυθεί το πρόβληµα της µη τυποποιηµένης εµφάνισης κειµένων στα διάφορα υπολογιστικά συστήµατα. Ο browser αναγνωρίζει αυτόν τον τρόπο γραφής και εκτελεί τις εντολές που περιέχονται σε αυτόν. Αξίζει να σηµειωθεί ότι η html είναι η πρώτη και πιο διαδεδοµένη γλώσσα περιγραφής της δοµής µιας ιστοσελίδας. Η html χρησιµοποιεί τις ειδικές ετικέτες (τα tags) να δώσει τις απαραίτητες οδηγίες στον browser. Τα tags είναι εντολές που συνήθως ορίζουν την αρχή ή το το τέλος µιας λειτουργίας. Τα tags βρίσκονται πάντα µεταξύ των συµβόλων < και >. Π.χ. <BODY> Οι οδηγίες είναι case insensitive, δεν επηρεάζονται από το αν έχουν γραφτεί µε πεζά (µικρά) ή κεφαλαία. Ένα αρχείο HTML πρέπει να έχει κατάληξη htm ή html. Για να µπορούν οι browser να ερµηνεύουν σχεδόν απόλυτα σωστά την html έχουν θεσπιστεί κάποιοι κανόνες. Αυτοί οι κανόνες είναι γνωστοί ως προδιαγραφές. Εποµένως σχεδόν κάθε είδος υπολογιστή µπορεί να δείξει το ίδιο καλά µια ιστοσελίδα. Οι πρώτες προδιαγραφές ήταν η html 2.0. Πρόβληµα προέκυψε όταν η Μicrosoft και η Νetscape πρόσθεσαν στην html τέτοιες δυνατότητες που στην αρχή τουλάχιστον ήταν συµβατές µόνο µε συγκεκριµένους browser. Ακόµη και σήµερα υπάρχουν διαφορές στην απεικόνιση κάποιας σελίδας από διαφορετικούς browsers. Ιδιαίτερο είναι το πρόβληµα όταν η ιστοσελίδα, εκτός απο "καθαρή" HTML περιλαµβάνει και εφαρµογές Javascript. Σήµερα πολλοί είναι εκείνοι που δηµιουργούν µια ιστοσελίδα σε κάποιο πρόγραµµα που επιτρέπει την δηµιουργία χωρίς την συγγραφή κώδικα. Η κοινή άποψη πάνω στο θέµα όµως είναι ότι κάτι τέτοιο είναι αρνητικό επειδή ο δηµιουργός δεν έχει τον απόλυτο έλεγχο του κώδικα µε αποτέλεσµα πολλές φόρες να υπάρχει οπτικό χάος στην προσπάθεια των browser να εµφανίσουν την ιστοσελίδα. Για το σκοπό αυτό έχει δηµιουργηθεί ειδικό λογισµικό, που επιτρέπει το "στήσιµο" της σελίδας οπτικά, χωρίς τη συγγραφή κώδικα, δίνει όµως τη δυνατότητα παρέµβασης ΚΑΙ στον κώδικα. Χαρακτηριστικό παράδειγµα το λογισµικό Dreamweaver της Adobe και το FrontPage της Microsoft. 22 2.7 CSS Η CSS (Cascading Style Sheets-∆ιαδοχικά Φύλλα Στυλ) ή ( αλληλουχία φύλλων στύλ ) είναι µια γλώσσα υπολογιστή που ανήκει στην κατηγορία των γλωσσών φύλλων στυλ που χρησιµοποιείται για τον έλεγχο της εµφάνισης ενός εγγράφου που έχει γραφτεί µε µια γλώσσα σήµανσης. Χρησιµοποιείται δηλαδή για τον έλεγχο της εµφάνισης ενός εγγράφου που γράφτηκε στις γλώσσες HTML και XHTML, δηλαδή για τον έλεγχο της εµφάνισης µιας ιστοσελίδας και γενικότερα ενός ιστότοπου. Η CSS είναι µια γλώσσα υπολογιστή προορισµένη να αναπτύσσει στυλιστικά µια ιστοσελίδα δηλαδή να διαµορφώνει περισσότερα χαρακτηριστικά, χρώµµατα, στοίχιση και δίνει περισσότερες δυνατότητες σε σχέση µε την html. Για µια όµορφη και καλοσχεδιασµένη ιστιοσελίδα η χρήση της CSS κρίνεται ως απαραίτητη. Για ένα έγγραφο πχ xhtml θα υπάρχουν παραπάνω από ένα φύλλα στυλ τα οποία περιέχουν δηλώσεις για την εµφάνιση ενός συγκεκριµένου στοιχείου. Το Φύλλο στύλ που εφαρµόζεται σε ένα έγγραφο µπορεί να προέρχεται από : • το συγγραφέα µιας ιστοσελίδας • το χρήστη του πλοηγού • τον ίδιο τον πλοηγό, αν έχει το δικό του προκαθορισµένο φύλλο στυλ . Συνεπώς για ένα xhtml στοιχείο θα υπάρχουν παραπάνω από µια δηλώσεις που πιθανόν να είναι συγκρουόµενες.Το πρότυπυ css για να επιλύσει παρόµοιες συγκρούσεις έχει καθορίσει µια αλληλουχία-σειρά στην οποία θα µπούν αυτές οι δηλώσεις και µε βάση την οποία θα επιλεγεί πχ η δήλωση που είναι πρώτη στη σειρά. Ο αλγόριθµος δηµιουργίας αυτής της σειράς-αλληλουχίας είναι ο ακόλουθος: 1. Βρες όλες τις δηλώσεις που εφαρµόζονται στο στοιχείο που µας ενδιαφέρει. Οι δηλώσεις εφαρµόζονται στο στοιχείο αν ο επιλογέας του το επιλέξει (ταιριάζει µε αυτό). 2. Ταξινόµησε µε βάση τη σηµασία (κανονική ή σηµαντική) και προέλευση ( συγγραφέας , χρήστη ή πλοηγός χρήστη). Με αύξουσα σειρά προτεραιότητας: 1. ∆ηλώσεις πλοηγού χρήστη 2. Κανονικές δηλώσεις χρήστη 3. Κανονικές δηλώσεις συγγραφέα 4. Σηµαντικές δηλώσεις συγγραφέα 5. Σηµαντικές δηλώσεις χρήστη 3. Ταξινόµησε τις δηλώσεις ίδιας σηµασίας και προέλευσης µε κριτήριο την εξειδίκευση του επιλογέα: οι πιο εξειδικευµένοι επιλογείς υπερισχύουν των πιο γενικών. Τα ψευδό-στοιχεία και οι ψευδο-κλάσεις λογαριάζονται σαν κανονικά στοιχεία και κλάσεις αντίστοιχα. 4. Τέλος ταξινόµησε ανάλογα µε τη σειρά καθορισµού: αν δύο δηλώσεις έχουν το ίδιο βάρος , προέλευση και εξειδίκευση , αυτή που προσδιορίστηκε τελευταία επικρατεί. Οι δηλώσεις σε εισαγώµενα φύλλα στυλ θεωρούνται ότι δηλώνονται πριν από τις δηλώσεις στο ίδιο το φύλλο στυλ . 23 Αφού λοιπόν προκύψει µια σειρά-αλληλουχία κανόνων εµφάνισης που αφορούν το ίδιο στοιχείο θα επιλεγεί προς εφαρµογή (για την αποφυγή συγκρούσεων ) η δήλωση που θα είναι τελευταία στην σειρά που αναλύθηκε πιο πάνω. 2.7.1 Πλεονεκτήµατα CSS Μερικά από τα πλεονεκτήµατα των CSS είναι: • ∆ιαχωρισµός του περιεχοµένου από την σχεδίαση. • Ελαχιστοποίηση του χρόνου για τις αλλαγές στην σχεδίαση αφού όλα τα στοιχεία περιέχονται σε ένα αρχείο. • Πιο καθαρός κώδικας HTML • Προσβασιµότητα από όλους τους Web Browsers • Πιστοποίηση από την W3C το µεγαλύτερο οργανισµό Web Standards • Αύξηση ταχύτητας της εµφάνισης της ιστοσελίδας • Μικρότερο µέγεθος αρχείων • Καλύτερη θέση στις µηχανές αναζήτησης λόγω καθαρότερου κώδικα. • Οµοιόµορφη εµφάνιση όλων των ιστοσελίδων που συνδέονται µε το CSS αρχείο αφού τα στοιχεία δεν αλλάζουν. 2.8 jQuery Η jQuery είναι µία cross-browser JavaScript βιβλιοθήκη µε σκοπό την απλοποίηση της δέσµης ενεργειών υπολογιστή-πελάτη της HTML. Είχε κυκλοφορήσει τον Ιανουάριο του 2006 στο BarCamp NYC από τον John Resig. Χρησιµοποιείται σε πάνω από το 43% των 10.000 πιο δηµοφιλών ιστοτόπων, η jQuery είναι η πιο δηµοφιλής βιβλιοθήκη JavaScript σε χρήση σήµερα. Η jQuery είναι ελεύθερο, ανοικτό λογισµικό, µε άδεια από την MIT License και την GNU General Public License, Έκδοση 2. Η jQuery έχει ως στόχο να καταστήσει ευκολότερη την περιήγηση σε ένα έγγραφο, να επιλέγει τα στοιχεία DOM, τη δηµιουργία animations, να χειρίζεται γεγονότα , και να αναπτύσει τις εφαρµογές Ajax. Η jQuery προβλέπει επίσης δυνατότητες για τους προγραµµατιστές που θέλουν δηµιουργήσουν plugins στην κορυφή της βιβλιοθήκης JavaScript. Χρησιµοποιώντας αυτές τις εγκαταστάσεις, οι προγραµµατιστές µπορούν να δηµιουργήσουν πηγές για αλληλεπίδραση χαµηλού επιπέδου και κινούµενα σχέδια, τα προηγµένα εφέ και σε υψηλό επίπεδο, το θέµα-είναι σε θέση 24 widgets. Αυτό συµβάλλει στη δηµιουργία ισχυρών και δυναµικών ιστοσελίδων. H jQuery περιέχει τα ακόλουθα χαρακτηριστικά: - DOM επιλογές στοιχείου χρησιµοποιώντας την cross-browser ανοιχτού κώδικα επιλογής κινητήρα Sizzle, ένα spin-off από το πρόγραµµα jQuery. - DOM traversal και τροποποίηση (συµπεριλαµβανοµένης της υποστήριξης CSS 1-3). - Εκδηλώσεις - CSS χειραγώγησης - Επιδράσεις και κινούµενα σχέδια - Ajax - Επεκτασιµότητα µέσω plug-ins - Βοηθητικά προγράµµατα - όπως η έκδοση του προγράµµατος περιήγησης και την κάθε λειτουργία. -Cross-browser υποστήριξη 2.9 JAVASCRIPT Η JavaScript είναι γλώσσα προγραµµατισµού η οποία έχει σαν σκοπό την παραγωγή δυναµικού περιεχοµένου και την εκτέλεση κώδικα στην πλευρά του πελάτη (client-side) σε ιστοσελίδες. To πρότυπο της γλώσσας κατά τον οργανισµό τυποποίησης ECMA ονοµάζεται ECMAscrip. Όπως και η PHP, η Javascript έχει βασιστεί όσον αφορά τον τρόπο σύνταξης του κώδικά της στη γλώσσα προγραµµατισµού C µε την οποία παρουσιάζει πολλές οµοιότητες. Όµως ενώ η PHP εκτελείται στο διακοµιστή (server-side γλώσσα προγραµµατισµού), η Javascript εκτελείται στον πελάτη (client-side γλώσσα προγραµµατισµού). Αυτό σηµαίνει ότι η επεξεργασία του κώδικα Javascript και η παραγωγή του τελικού περιεχοµένου HTML δεν πραγµατοποιείται στο διακοµιστή, αλλά στο πρόγραµµα περιήγησης των επισκεπτών. Αυτή η διαφορά έχει και πλεονεκτήµατα και µειονεκτήµατα για καθεµιά από τις δύο γλώσσες. Συγκεκριµένα, η Javascript δεν έχει καµία απαίτηση από πλευράς δυνατοτήτων του server για να εκτελεστεί (όπως επεξεργαστική ισχύ ή συµβατό λογισµικό διακοµιστή), αλλά βασίζεται στις δυνατότητες του browser των επισκεπτών. Επίσης µπορεί να ενσωµατωθεί σε στατικές σελίδες HTML. Παρόλα αυτά, οι δυνατότητές της διαφέρουν σηµαντικά από αυτές της PHP (για παράδειγµα δεν παρέχει συνδεσιµότητα µε βάσεις δεδοµένων που βρίσκονται στο διακοµιστή). ΣΗΜΕΙΩΣΗ! Η Javascript δεν θα πρέπει να συγχέεται µε τη Java, που είναι διαφορετική γλώσσα προγραµµατισµού και µε διαφορετικές εφαρµογές. Τονίζεται ότι ο σωστός τρόπος γραφής της είναι "Javascript" και όχι 'Java script' σαν δύο λέξεις, όπως λανθασµένα γράφεται ορισµένες φορές. 25 2.10 Framework – Plonk Για την δηµιουργία και το design του site, πρέπει να χρησιµοποιηθεί ένα συγκεκριµένο framework, για να είναι οµοιόµορφο και καλαίσθητο το τελικό αποτελέσµα. Λόγω της συνεργασίας µε τα υπόλοιπα µέλη, η απόφαση για το framework που θα χρησιµοποιηθεί έπρεπε να παρθεί από κοινού. Η οµάδα από το Βέλγιο δηµιούργησε ένα δικό της,καινούργιο framework που ονόµασαν Plonk, και το οποίο τελικά ήταν και αυτό που χρησιµοποιήσαµε µε επιτυχία. Παρακάτω παρατίθενται λίγα λόγια για την δοµή του Plonk, µε την συνοδεία εικόνων, για να γίνει πιο κατανοητή η µελλοντική χρήση του,αφού είναι έτοιµο να βγει πλέον στο εµπόριο. 2.10.1 ∆οµή του Plonk Αρχικά, είναι ο κεντρικός κορµός από τον οποίο αποτελείται το framework. Στον κύριο κορµό, έχουµε τον φάκελο Source Files, µέσα στον οποίο βρίσκονται οι φάκελοι core, files, library, modules, καθώς και το αρχείο index, το οποίο είναι τύπου php. Εικόνα 5 – Φάκελος Πτυχιακή Ας πούµε τώρα λίγα λόγια για τον κάθε φάκελο χωριστά. Μέσα στον φάκελο core έχουµε τους υποφακέλους css, img, includes, js και layout. Ο φάκελος css περιέχει κατά βάση το design του site, δηλαδή το µέγεθος, το χρώµα, το background των φορµών, καθώς και την διάταξη – δοµή που έχει κάθε φόρµα εσωτερικά. Όλα αυτά γίνονται µε συγκεκριµένες εντολές, αλλά περισσότερα για το css θα παρατεθούν παρακάτω. Εικόνα 6 – Φάκελος CSS 26 Εικόνα 7 – Περιεχόµενα CSS Μέσα στον φάκελο img βρίσκονται οι εικόνες που χρησιµοποιήθηκαν σε όλο το site συνολικά. Εικόνα 8 – Φάκελος Includes Στον φάκελο includes βρίσκονται τα αρχεία στα οποία δηλώνονται οι βάσεις δεδοµένων,οι server και τα πρωτόκολλα που έχουν χρησιµοποιηθεί. 27 Εικόνα 9 – Περιεχόµενα Includes Στον φάκελο js βρίσκονται τα αρχεία jquery-validation, τα οποία περιέχουν τις λειτουργίες ( functions ), οι οποίες είναι απαραίτητες για την σωστή και ολοκληρωµένη λειτουργία του site. Παρακάτω θα παρατεθεί ο κώδικας των λειτουργιών. Εικόνα 10 – Περιεχόµενα js Τέλος, µέσα στον φάκελο layout, έχουµε το αρχείο layout.tpl, το οποίο είναι η αρχική σελίδα που φαίνεται µόλις µπαίνουµε στο Erasmusline site. 28 Εικόνα 11 – Φάκελος Layout Στην συνέχεια έχουµε τον φάκελο library, ο οποίος περίεχει τον φάκελο phpmailer. Μέσα στον φάκελο αυτο, βρίσκονται τα αρχέια που περιέχουν τις λειτουργίες (functions) των πρωτοκόλλων (στην περίπτωσή µας τα πρωτόκολλα SMTP και POP3) τα οποία είναι απαραίτητα για να υπάρχει σωστή αντιστοίχηση των θυρών µεταξύ τερµατικών υπολογιστών, έτσι ώστε να στέλνονται σωστά και µε ακρίβεια τα αρχεία που επιθυµούµε. Εικόνα 12 – Περιεχόµενα Library 29 Τέλος, έχουµε των φάκελο που ονοµάζεται modules και µέσα στον οποίο έχουµε τα αρχέια µε το design της κάθε φόρµας. Για κάθε φόρµα που σχεδίαζουµε, δηµιουργούµε και από ένα ξεχωριστό φάκελο. Εικόνα 13 – Φάκελος Library Σε κάθε ένα φάκελο που έχουµε για την κάθε φόρµα, δηµιουργούµε άλλον ένα υποφάκελο, και δύο αρχεία τύπου php. Στον υποφάκελο που ονοµάσαµε layout, φτιάχνουµε το αρχείο .tpl, το οποίο είναι και το κεντρικό design της εκάστοτε φόρµας που δηµιουργούµε. Από τα άλα δύο αρχεία, το ένα είναι η βάση δεδοµένων της κάθε φόρµας που θα συνδεθεί µε την κεντρική βάση δεδοµένων, και το άλλο αρχείο είναι η “γενικότερη” σύνδεση της φόρµας µε το κεντρικό site. !ΣΗΜΕΙΩΣΗ! - Τα αρχεία στα οποία δηµιουργούµε την δοµή της φόρµας, είναι σε µορφή .tpl. Εικόνα 14 – Αρχεία .tpl/.php Τέλος, όπως ειπώθηκε παραπάνω, έχουµε το κεντρικό αρχείο index, το οποίο περιέχει την σύνδεση όλων των φορµών που δηµιουργήθηκαν µε την αρχική σελίδα, αλλά και την σύνδεση των πρωτοκόλλων του φακέλου library µε το site. 30 2.11 XAMPP Το XAMPP είναι ένα δωρεάν και open source web cross-platform λύση server στοίβα πακέτο, που αποτελείται κυρίως από την Apache HTTP Server, MySQL βάση δεδοµένων, και τους διερµηνείς για scripts γραµµένα στην PHP και σε Perl γλώσσες προγραµµατισµού. XAMPP είναι ένα ακρώνυµο από τις λέξεις: • • • • • X (cross-platform) Apache HTTP Server MySQL PHP Perl Το πρόγραµµα εκδίδεται σύµφωνα µε τους όρους της GNU General Public License και λειτουργεί ως ένα ελεύθερο web server κατάλληλο να εξυπηρετεί δυναµικές σελίδες. Η XAMPP είναι διαθέσιµη για τα Microsoft Windows, Linux, Solaris και Mac OS X, και χρησιµοποιείται κυρίως για έργα ανάπτυξης ιστοσελίδων. Αυτό το λογισµικό είναι χρήσιµο όταν δηµιουργείτε δυναµικές ιστοσελίδες µε χρήση γλωσσών προγραµµατισµού όπως η PHP, JSP, Servlets. Το XAMPP απαιτεί µόνο ένα zip, tar ή exe για να το κατεβάσετε και να τρέξει, και µικρή ή καθόλου διάρθρωση των επιµέρους στοιχείων που συνθέτουν τον web server απαιτείται. Το XAMPP ενηµερώνεται τακτικά για να συµπεριλαµβάνει τις τελευταίες εκδόσεις του Apache / MySQL / PHP και Perl. Επίσης, έρχεται µε µια σειρά από άλλες µονάδες, συµπεριλαµβανοµένων OpenSSL και phpMyAdmin. Η Εγκατάσταση του XAMPP απαιτεί λιγότερο χρόνο για την εγκατάσταση κάθε στοιχείου του ξεχωριστά. Αυτοτελές, πολλαπλές παρουσίες του XAMPP µπορεί να υπάρχουν σε έναν υπολογιστή, καθώς και κάθε δεδοµένη περίσταση µπορούν να αντιγραφούν από έναν υπολογιστή στον άλλο. Προσφέρεται σε δύο πλήρεις εκδόσεις, µια κανονική έκδοση και µια µικρότερη έκδοση. Επισήµως, οι σχεδιαστές του XAMPP το προόριζαν για χρήση µόνο ως εργαλείο ανάπτυξης, για να επιτρέπουν στους σχεδιαστές ιστοσελίδας και τους προγραµµατιστές να δοκιµάσουν τις εργασίες τους στους δικούς τους υπολογιστές χωρίς καµία πρόσβαση στο Internet. Για να γίνει αυτό όσο το δυνατόν ευκολότερο, πολλά σηµαντικά χαρακτηριστικά ασφαλείας είναι απενεργοποιηµένα από προεπιλογή. Στην πράξη, όµως, το XAMPP µερικές φορές χρησιµοποιείται για να εξυπηρετήσει πραγµατικές ιστοσελίδες σχετικά µε το World Wide Web. Ένα ειδικό εργαλείο που παρέχεται για να προστατέψετε τα πιο σηµαντικά µέρη του πακέτου µε κωδικό πρόσβασης. Το XAMPP παρέχει επίσης υποστήριξη για τη δηµιουργία και το χειρισµό βάσεων δεδοµένων MySQL και SQLite, µεταξύ άλλων. Μόλις το XAMPP είναι εγκατεστηµένο µπορείτε να µεταχειριστείτε τον localhost σας όπως ένα αποµακρυσµένο υπολογιστή χρησιµοποιώντας ένα FTP client. Χρησιµοποιώντας ένα πρόγραµµα όπως FileZilla έχετε πολλά πλεονεκτήµατα κατά την εγκατάσταση ενός συστήµατος διαχείρισης περιεχοµένου (CMS) όπως το Joomla. Μπορείτε επίσης να συνδεθείτε στο localhost µέσω FTP µε το πρόγραµµα επεξεργασίας HTML. Η προεπιλογή FTP χρήστη "newuser", η default FTP password είναι "wampp". Η προεπιλογή MySQL χρήστης "root" δεν υπάρχει καµία προεπιλογή MySQL κωδικό πρόσβασης. 31 Εφόσον έχουµε εγκαταστήσει το XAMPP στον υπολογιστή µας, από το Start Control Panel πατάµε το κουµπί Start και περιµένουµε να γίνει πράσινο στον Apache και στην MySql. Εικόνα 15 – Start XAMPP Επόµενο βήµα είναι να ανοίξουµε τον browser και να πληκτρολογήσουµε το url: http://localhost/xampp/ Εικόνα 16 – Localhost in XAMPP Έπειτα, επιλέγουµε από το αριστερό µέρος της σελίδας την επιλογή PhpMyAdmin. 32 Εικόνα 17 - PhPMyAdmin Μας εµφανίζεται η σελίδα δηµιουργίας µιας βάσης δεδοµένων. δεδοµένων Εικόνα 18 – Αρχική σελίδα Βάσης ∆εδοµένων Πλέον µπορούµε να φτιάξουµε την δική µας βάση γράφοντας ένα όνοµα και βάζοντας την σύνθεση που επιθυµούµε. 33 Εικόνα 19 – ∆ηµιοργία Βάσης ∆εδοµένων Αριστερά της σελίδας υπάρχουν αποθηκευµένες οι βάσεις δεδοµένων που έχουµε ήδη δηµιουργήσει δηµιουργήσει. Εικόνα 20 – Υπάρχουσες Βάσεις Αφού δηµιουργήσουµε την βάση ή ανακτήσουµε µια που έχουµε ήδη φτιάξει “πατώντας “πατώντας” πατώντας πάνω της της, µπορούµε να εισαγάγουµε εισαγάγουµε, να εξαγάγουµε και γενικά να διαχειριστούµε τα στοιχεία που περιέχει µέσα η βάση και πατάµε Εκτέλεση για να καταχωρηθεί στην βάση. 34 Εικόνα 21 – Πίνακες Βάσης Αφού καταχωρηθούν οι πίνακες και τα στοιχεία τους στην βάση, πλεόν είµαστε έτοιµοι να την χρησιµοποιήσουµε στην εργασία µας. 3. ΣΧΕ∆ΙΟ ∆ΡΑΣΗΣ ΓΙΑ ΤΗΝ ΕΚΠΟΝΗΣΗ ΤΗΣ ΕΡΓΑΣΙΑΣ 3.1 State of the Art 3.1.1 Ελεύθερο Λογισµικό Το λογισµικό, ξεκινά την ζωή του ως ένας µακροσκελής κατάλογος από προτάσεις, σε µια λίγο-πολύ κωδικοποιηµένη µορφή βασισµένη στην αγγλική γλώσσα. Φαντάζοµαι ότι ο παραπάνω ορισµός δεν φωτίζει ιδιαίτερα το θέµα αλλά ένα παράδειγµα µάλλον θα είναι αρκετό. Ορίστε λοιπόν µια λίστα µε αναλυτικές οδηγίες για να βρείτε την έξοδο σας από έναν δαιδαλώδη λαβύρινθο γραµµένη µε στυλ που µοιάζει µε τον πηγαίο κώδικα ενός προγράµµατος: AHEAD 5 STEPS TURN 90 DEGREES CLOCKWISE $StepsToWalk=10 AHEAD $StepsToWalk STEPS /* at this point we should have reached a door */ TURN KNOB 180 DEGREES CLOCKWISE WAIT DOING NOTHING UNTIL DOOR OPENS CROSS DOOR TURN -90 DEGREES CLOCKWISE... Είναι φανερό πως οι προτάσεις αυτές αποτελούνται µεν από συνηθισµένα γράµµατα, αριθµούς 35 και λίγα µαθηµατικά κυρίως σύµβολα αλλά οι λέξεις και η σύνταξη θυµίζει περισσότερο κάποια περίεργη διασταύρωση αγγλικών και άλγεβρας. Και µπορεί το παράδειγµα µας να µοιάζει λίγο-πολύ κατανοητό αλλά στην περίπτωση ενός περίπλοκου προγράµµατος τα πράγµατα είναι σαφώς πιο... στρυφνά. Ευτυχώς µε την προσθήκη σχολίων και αρκετής εµπειρίας το τελικό αποτέλεσµα είναι τελικά κατανοητό στους προγραµµατιστές και ονοµάζεται πηγαίος κώδικας (source code). Οι προγραµµατιστές αναπτύσσουν λογισµικό δουλεύοντας σχεδόν αποκλειστικά σε αυτήν τη µορφή τον πηγαίο κώδικα. Στην συνέχεια ο πηγαίος κώδικας µπορεί να δοθεί ως είναι στον Η/Υ για άµεση εκτέλεση αλλά η ταχύτητα δεν θα είναι η µέγιστη δυνατή. Για να επιτύχουµε την µέγιστη ταχύτητα ο πηγαίος κώδικας περνά από ένα ειδικό πρόγραµµα. Αυτό τον απογυµνώνει από καθετί περιττό ενώ επίσης συµπυκνώνει την ουσία του σε µία νέα µορφή την οποία ο Η/Υ µπορεί να εκτελέσει χωρίς καµιά ενδιάµεση µετατροπή - δηλαδή γρήγορα. Η µορφή αυτή καλείται object code ή εκτελέσιµος κώδικας. Λόγο της απογύµνωσης και της συµπύκνωσης ο εκτελέσιµος κώδικας είναι αδύνατον να µετατραπεί µε αυτόµατο τρόπο στην αρχική µορφή πηγαίου κώδικα χωρίς να χαθούν πολλές και σηµαντικές πληροφορίες. Αν ένας προγραµµατιστής είναι αναγκασµένος να εργαστεί µόνο µε τον εκτελέσιµο κώδικα και εφόσον έχει την σχετική εµπειρία ίσως να καταφέρει να εργαστεί αλλά η πορεία του θα είναι και εξαιρετικά επίπονη και εξαιρετικά αργή. Για την ακρίβεια το επίπεδο δυσκολίας και καθυστέρησης είναι τέτοιο που οτιδήποτε πέραν από απλές αλλαγές καθίσταται αδύνατο. Από όλες τις παραπάνω λεπτοµέρειες πρέπει να θυµάστε πως το λογισµικό µπορεί να προσφερθεί σε δυο µορφές: Ως πηγαίος κώδικας και ως εκτελέσιµος κώδικας. Αντίθετα από τον πηγαίο κώδικα, εκτελέσιµος κώδικας ∆ΕΝ επιτρέπει ούτε εις βάθος µελέτη ούτε την πραγµατοποίηση ουσιαστικών αλλαγών και βελτιώσεων. 3.1.2 Πλεονεκτήµατα Ελεύθερου Λογισµικού Με την ανάπτυξη του Internet οι προγραµµατιστές που συνειδητοποιούσαν τους περιορισµούς του ιδιόκτητου λογισµικού µπόρεσαν να έρθουν εύκολα σε επαφή και αναζήτησαν µια µέθοδο ανάπτυξης, διάθεσης και χρήσης λογισµικού που θα τους έδινε µεγαλύτερη ελευθερία. Το αποτέλεσµα ήταν αφενός η ωρίµανση µεθόδων συνεργασιακής ανάπτυξης και ελεύθερης διάθεσης λογισµικού το οποίο φτάνει στους χρήστες του µε ελάχιστους περιορισµούς και αφετέρου µια αυξανόµενη συλλογή από τα προϊόντα αυτής της µεθόδου, δηλαδή το Ελεύθερο Λογισµικό / Λογισµικό Ανοικτού Κώδικα.Οι προγραµµατιστές ΕΛ/ΛΑΚ δραστηριοποιούνται φυσικά εντός του νοµικού πλαισίου περί πνευµατική ιδιοκτησίας που αναφέραµε. Ως εκ τούτου µπορούν να παραχωρήσουν το προϊόν της δουλειάς τους διαθέτοντας στους ενδιαφερόµενους µια άδεια χρήσης. Σχετικά πρόχειρα αυτό που διαφοροποιεί το ΕΛ/ΛΑΚ από το ιδιόκτητο λογισµικό είναι η άδεια χρήσης βάση της οποίας διατίθεται. Το ΕΛ/ΛΑΚ διατίθεται µε µία άδεια χρήσης που παρέχει στον χρήστη του σχεδόν όλα τα δικαιώµατα που απολαµβάνει και ο ίδιος ο δηµιουργός: συµπεριλαµβάνονται τα δικαιώµατα χρήσης για κάθε σκοπό, αντιγραφής, διάθεσης σε τρίτους και το δικαίωµα της τροποποίησης για τη δηµιουργία παράγωγου λογισµικού. Η διάθεση του πηγαίου κώδικα είναι προαπαιτούµενη ώστε να µπορεί ο αποδέκτης να µελετήσει και να µετατρέψει το λογισµικό (επειδή όπως αναφέραµε ένας προγραµµατιστής µπορεί να µελετήσει αποδοτικά και να κάνει ουσιαστικές τροποποιήσεις στο λογισµικό µόνο στην µορφή πηγαίου κώδικα). Η δυνατότητα της µελέτης και της µετατροπής του πηγαίου κώδικα ενέπνευσε όπως είναι προφανές την ονοµασία "Open Source Software" που στα ελληνικά θα µπορούσε να αποδοθεί µε ακρίβεια ως "λογισµικό ανοιχτού πηγαίου κώδικα" αλλά που χάριν συντοµίας αποδίδεται ως "Λογισµικό Ανοικτού Κώδικα (ΛΑΚ)". Το δε γεγονός ότι ο αποδέκτης είναι ελεύθερος να αξιοποιήσει το λογισµικό σχεδόν µε κάθε τρόπο ενέπνευσε την ονοµασία "Ελεύθερο Λογισµικό (ΕΛ)". Σε αυτό το σηµείο και πριν δούµε πιο λεπτοµερώς τι πρέπει να ισχύει ώστε ένα λογισµικό να θεωρείται αυτό ΕΛ/ΛΑΚ έχουµε την ευκαιρία να διαλευκάνουµε γιατί η ονοµασία είναι µία αλλά 36 διπλή: Η ονοµασία "Ελεύθερο Λογισµικό / Λογισµικό Ανοικτού Κώδικα" είναι λοιπόν διπλή διότι αφορά σε δύο τυπικά ξεχωριστούς ορισµούς και είναι µία διότι οι δύο αυτοί ορισµοί στην συντριπτική πλειοψηφία των περιπτώσεων περιγράφουν το ίδιο αντικείµενο! Η διατύπωση αυτή θυµίζει λίγο... σοφιστική οπότε ας εξηγήσουµε λίγο καλύτερα τι συµβαίνει: Η ανάπτυξη του ΕΛ/ΛΑΚ είναι µια πρόσφατη τεχνική, οικονοµική και κοινωνική εξέλιξη (2 µε 3 δεκαετίες) και αρκετές λεπτοµέρειες είναι ακόµα ρευστές. Υπάρχουν δύο φορείς που έχουν σφραγίσει µε τις επιλογές τους αυτή την εξέλιξη. Η προσέγγιση τους εκπροσωπεί τους περισσότερους συµµετέχοντες. Πρόκειται για το Free Software Foundation (FSF) και το Open Source Initiative (OSI). Οι δύο φορείς είτε συµφωνούν είτε συγκλίνουν έντονα σε πάρα πολλά σηµαντικά, πρακτικά και λειτουργικά ζητήµατα. Για παράδειγµα, συγκλίνουν σχεδόν απόλυτα ως προς το τι πρέπει να ισχύει για να είναι ένα πρόγραµµα ΕΛ/ΛΑΚ (παρότι το περιγράφουν µε διαφορετική γλώσσα!). Από την άλλη όµως, διαφωνούν σε διάφορα ιδεολογικά ζητήµατα. Ίσως η βασικότερη ιδεολογική διαφορά είναι πως το FSF θεωρεί το µηελεύθερο λογισµικό κοινωνικό πρόβληµα που πρέπει να λυθεί ενώ το OSΙ το θεωρεί απλά µια µη ιδανική µέθοδο ανάπτυξης λογισµικού [Β∆][ΑΠ∆]. Επίσης οι δύο φορείς διαφέρουν ορισµένες φορές σε επιλογές όπως η πολιτική προώθησης του ΕΛ/ΛΑΚ. Ακολουθεί σε ελεύθερη (αλλά όσο γίνεται προσεκτική) απόδοση το τι θεωρεί σηµαντικό ο κάθε φορέας για να χαρακτηρίσει ένα λογισµικό ΕΛ/ΛΑΚ (για την ακρίβεια ΕΛ ή ΛΑΚ αντίστοιχα) Το Free Software Foundation ονοµάζει ένα πρόγραµµα Ελεύθερο Λογισµικό αν η άδεια χρήσης διασφαλίζει τις παρακάτω τέσσερις ελευθερίες για τον αποδέκτη του: • Την ελευθερία να εκτελέσουν το πρόγραµµα για οποιονδήποτε σκοπό • Την ελευθερία να µελετήσουν τον τρόπο λειτουργίας του προγράµµατος και να το προσαρµόσουν στις ανάγκες τους (η πρόσβαση στον πηγαίο κώδικα είναι προϋπόθεση για αυτό) • Την ελευθερία να αναδιανέµουν αντίγραφα του προγράµµατος ώστε να βοηθήσούν το συνάνθρωπο τους. • Την ελευθερία να βελτιώσούν το πρόγραµµα και να διανείµουν τις βελτιώσεις που έχουν κάνει στο ευρύ κοινό, ώστε να επωφεληθεί ολόκληρη η κοινότητα (η πρόσβαση στον κώδικα είναι προϋπόθεση για αυτό) Το δε Open Source Initiative ονµάζει Λογισµικό Ανοιχτού Κώδικα αν η άδεια χρήσης παρέχει τα παρακάτω δικαιώµατα στον αποδέκτη του: • Το δικαίωµα οποιουδήποτε να κάνει χρήση του λογισµικού για οποιοδήποτε σκοπό • Το δικαίωµα να παραλαµβάνει τον πηγαίο κώδικα του λογισµικού και το δικαίωµα να τροποποιεί του λογισµικό • Το δικαίωµα να αναδιανέµει το πρωτότυπο λογισµικό ή κάθε άλλο που προέκυψε από µετατροπή του πρωτότυπου (είτε επί αµοιβή είτε δωρεάν) • Το δικαίωµα να αποκτήσει το λογισµικό χωρίς να καταβάλει κάποιο αντίτιµο. Και οι δύο ορισµοί αφήνουν περιθώρια για την δηµιουργία µιας πληθώρας αδειών χρήσης αλλά είναι επίσης φανερό πως συγκλίνουν εντονότατα. Αυτός ακριβώς είναι και ο λόγος που είναι τόσο δύσκολο µία άδεια χρήσης να καλύπτει µόνο τις απαιτήσεις του ενός φορέα και όχι του άλλου [∆∆]. Στην πράξη οι άδειες που καλύπτουν τις απαιτήσεις ενός και µόνο από τους δυο ορισµούς είναι ακόµα σπανιότερες διότι παρά τις όποιες διαφορές, υπάρχει αρκετή συγκατάβαση µεταξύ των ανθρώπων που εστερνίζοντε την φιλοσοφία του κάθε ενός από τους δύο φορείς ώστε οι περισσότεροι να κατακρίνουν την χρήση τέτοιων αδειών.[todo: ξέρει κανείς παράδειγµα;] Εν τέλη ο όρος ΕΛ/ΛΑΚ είναι κατάλληλος για το 99% του λογισµικού που είναι είτε Ελεύθερο είτε Ανοικτού κώδικα και για αυτό είναι και αρκετά διαδεδοµένος. 37 3.1.3 NetBeans Το NetBeans είναι ένα επιτυχηµένο ερευνητικό έργο ανοιχτής πηγής (open source) µε µεγάλο αριθµό χρηστών, µια αναπτυσσόµενη κοινωνία, κοντά στους 100 συνεργάτες παγκοσµίως. Η Sun Microsystems ίδρυσε το ερευνητικό έργο ανοιχτής πηγής NetBeans τον Ιούνιο του 2000 και συνεχίζει να είναι ο κύριος ανάδοχος. Σήµερα δύο ερευνητικά έργα υπάρχουν: Το NetBeans IDE και το NetBeans Platform. Tο NetBeans IDE είναι ένα περιβαλλοντικό ανάπτυγµα IDE - ένα εργαλείο στους προγραµµατιστές για να γράψουν, να κάνουν compile, debug και να αναπτύξουν προγράµµατα. Είναι γραµµένο σε Java - αλλά µπορεί να υποστηρίξει όλες τις γλώσσες προγραµµατισµού. Υπάρχει επίσης ένας µεγάλος αριθµός υποµονάδων (modules) που βοηθάνε στην επέκταση της λειτουργικότητας του NetBeans IDE. To NetBeans IDE είναι ένα ελεύθερο προιόν δίχως περιορισµούς στον τρόπο χρησιµοποίησής του. ∆ιαθέσιµο επίσης είναι το NetBeans Platform, ένα εκτατό θεµέλιο αποτελούµενο από υποµονάδες (modular) που χρησιµοποιείται σαν βάση λογισµικού για τη δηµιουργία µεγάλων επιτραπέζιων (desktop) εφαρµογών. Οι ISV συνεργάτες διαθέτουν προσθήκες, επιπρόσθετα προγράµµατα (plug-ins) που εύκολα συνενώνονται στο Platform και µπορούν επίσης να χρησιµοποιηθούν για την ανάπτυξη άλλων εργαλίων και λύσεων. Και τα δύο τα προιόντα είναι ανοιχτής πηγής (open source) και ελεύθερα για εµπορική ή µη χρήση. Ο κώδικας πηγής (source code) είναι διαθέσιµος για επαναχρησιµοποίηση κάτω από το Common Development and Distribution License(CDDL). Το πρόγραµµα NetBeans αναφέρεται τόσο στο πλαίσιο πλατφόρµας για εφαρµογές Java desktop, όσο και σε ένα ολοκληρωµένο περιβάλλον ανάπτυξης (IDE) για την ανάπτυξη µε Java, JavaScript, PHP, Python, Ruby, Groovy, C, C + +, Scala,Clojureκαιάλλα. Το NetBeans IDE είναι γραµµένο σε Java και µπορεί να τρέξει σε οποιοδήποτε σηµείο ενός JVM που είναι εγκατεστηµένο, συµπεριλαµβανοµένων των Windows, Mac OS, Linux και Solaris. Μια JDK είναι απαραίτητη για τη λειτουργία ανάπτυξης της Java, αλλά δεν απαιτείται για την ανάπτυξη σε άλλες γλώσσες προγραµµατισµού.Η πλατφόρµα NetBeans επιτρέπει στις εφαρµογές που θα αναπτυχθούν αρθρωτά στοιχεία λογισµικού που ονοµάζονται ενότητες. Οι αιτήσεις που βασίζονται στην πλατφόρµα NetBeans (συµπεριλαµβανοµένου του NetBeans IDE) µπορούν να παραταθούν µε τρίτου τύπου προγραµµατιστές. Το NetBeans Platform είναι µία επαναχρησιµοποιήσιµη πλατφόρµα για την απλούστευση της ανάπτυξης εφαρµογών Java desktop Swing. Το NetBeans IDE πακέτο για την Java SE περιέχει ό, τι χρειάζεται για να αρχίσει να αναπτύσσει NetBeans plugins και το NetBeans Platform εφαρµογές που βασίζονται. Συµπληρωµατική SDK δεν είναι απαραίτητη. Η πλατφόρµα προσφέρει επαναχρησιµοποιήσιµες υπηρεσίες κοινές για τις εφαρµογές γραφείου, επιτρέποντας στους προγραµµατιστές να επικεντρώνονται στην λογική ειδικά για την εφαρµογή τους. 38 Ανάµεσα στα χαρακτηριστικά της πλατφόρµας,είναι: 1. Χρήστης διαχείριση διεπαφής (π.χ. µενού και γραµµές εργαλείων) 2. Χρήστης διαχείριση των ρυθµίσεων 3. Αποθήκευση διαχείριση (αποθήκευση και φόρτωση οποιουδήποτε είδους δεδοµένα) 4.Παράθυρο διαχείριση 5.Οδηγός πλαισίου (υποστηρίζει βήµα-βήµα διαλόγους) 6. NetBeans Visual Βιβλιοθήκη 7. Ολοκληρωµένα Εργαλεία ανάπτυξης 3.1.4 Χρήση της πλατφόρµας NetBeans Η πλατφόρµα NetBeans παρέχει πολλές κατηγορίες πάνω στις οποίες µπορεί ο χρήστης να προγραµµατίσει. Από τα πρώτα βήµατα που πρέπει να κάνει ο χρήστης στην πλατφόρµα, είναι να επιλέξει ποια κατηγορία του χρειάζεται. Εικόνα 22 – ∆ηµιουργία Project σε NetBeans Στην συνέχεια, αφού έχουµε επιλέξει κατηγορία και το όνοµα του project, εµφανίζεται στην οθόνη η πλατφόρµα στην οποία θα γράψουµε τον κώδικά µας. Κάθε project έχει κάποια χαρακτηριστικά, όπως πχ το όνοµα, τα αρχεία που θα αποθηκευτούν στον υποφάκελο source package αλλά και την βιβλιοθήκη (Libraries) όπου βρίσκονται αποθηκευµένα όλα τα εργαλεία που θα χρησιµοποιήσουµε για να διευκολυνθούµε ως χρήστες. 39 Εικόνα 23 – Χαρακτηριστικά ενός Project Ένα πλεονέκτηµα του προγράµµατος αυτού είναι ότι παρέχει την δυνατότητα στον χρήστη να προσθέσει και ο ίδιος εξωτερικές βιβλιοθήκες, σε περίπτωση που χρειάζεται κάποιο εργαλείο που δεν προυπάρχει στην πλατφόρµα. Εικόνα 24 – Περιεχόµενα Libraries Το πρόγραµµα NetBeans δίνει την δυνατότητα στον χρήστη αφού γράψει τον κώδικα να κάνει compile για την διόρθωση τυχόν λαθών και στην συνέχεια να 'τρέξει' το πρόγραµµα. Στην παρακάτω εικόνα βλέπουµε ότι αριστερά υπάρχουν αποθηκευµένα όλα τα project που έχουµε δηµιουργήσει στο παρελθόν, στην κάτω αριστερή µεριά φαίνονται οι µεταβλητές που έχουµε χρησιµοποιήσει σε κάθε project. Στην κάτω πλευρά του προγράµµατος είναι η έξοδος που έχει ο εκάστοτε κώδικας που έχουµε γράψει, εάν φυσικά δεν έχουµε γράψει στον κώδικα ότι θέλουµε η έξοδος να είναι σε κάποιο γραφικό περιβάλλον. Τέλος, στην πάνω πλευρά έχουµε όλα τα κουµπιά για compile, build, build and clean και run. 40 Εικόνα 25 – Πάράδειγµα Project σε NetBeans Ένα άλλο πλεονέκτηµα της πλατφόρµας αυτής είναι ότι µπορεί ο χρήστης να κάνει download τα plugin του uml (unified modeling language) και να φτιάξει το δικό του uml Εικόνα 26 – Εργαλεία NetBeans Αφού εγκαταστήσουµε τα plugin µπορούµε πλεόν να κάνουµε χρήση του uml κάνοντας την ίδια διαδικασία µε την αρχική για να δηµιουργήσουµε το project µας, δηλαδή επιλέγουµε την κατηγορία uml και δίνουµε όνοµα. Στην συνέχεια, µε δεξί κλικ πάνω στο όνοµα του uml -> New και επιλέγουµε ποιο ακριβώς κοµµάτι του uml χρειαζόµαστε την συγκεκριµένη στιγµή (diagram, package, element). 41 Εικόνα 27 – ∆ηµιουργία UML Μια άλλη χρησιµότητα του προγράµµατος αυτού είναι ότι µπορεί ο χρήστης να δηµιουργήσει εφαρµογή σε όποια κατηγορία και να επιλέξει, µέσα από το γραφικό περιβάλλον που παρέχει το NetBeans. Για να εµφανίσει όµως η πλατφόρµα την οθόνη του γραφικού περιβάλλοντος πρέπει ο χρήστης να πάει πάλι στην αρχή του προγράµµατος και να επιλέξει το application project από την κατηγορία που επιθυµεί. Εικόνα 28 – ∆ηµιουργία Project σε Java 42 Το παράθυρο που εµφανίζεται είναι το παρακάτω. Ο χρήστης έχει πλέον την δυνατότητα να δηµιουργήσει την δική του εφαρµογή. Στην δεξιά µεριά του παραθύρου υπάρχουν όλα τα απαραίτητα εργαλεία που χρειάζεται ο χρήστης για την εφαρµογή του. Κάτω αριστερά υπάρχει ένα µικρό παράθυρο όπου εµφανίζει όλα τα 'εξαρτήµατα' που έχουν χρησιµοποηθεί στην εφαρµογή 3.1.5 Λόγοι Επιλογής NetBeans Το NetBeans προσφέρει ολοκληρωµένο περιβάλλον ανάπτυξης (IDE). Το NetBeans IDE µπορεί να ενισχύσει την παραγωγικότητά σας όταν εργάζεστε µε Java SE, της Java EE, ή Java ME τεχνολογία καθώς και PHP, Groovy, JavaScript, και C / C + +. Visual εργαλεία που δηµιουργούν κώδικα σκελετό είναι επίσης διαθέσιµα, επιτρέποντάς σας να δηµιουργήσετε µια βασική εφαρµογή, χωρίς να γράψετε ούτε µία γραµµή κώδικα. Εδώ είναι οι κυριότεροι λόγοι χρήσης του NetBeans IDE: 1. Έργα Out of the Box - Απλά κατεβάστε και εγκαταστήστε το NetBeans IDE και είστε καλοί να πάτε. Η εγκατάσταση είναι ένα αεράκι µε το µικρό µέγεθος λήψης του. Όλα τα εργαλεία IDE και διαθέτει πλήρως ενσωµατωµένη-δεν χρειάζεται να κυνηγούν για plug-ins, και συνεργάζονται στενά, όταν ξεκινήσει το IDE. 2. Ελεύθερη και Ανοικτού Κώδικα - Όταν χρησιµοποιείτε το NetBeans IDE, θα ενταχθούν σε µια ζωντανή, open-source κοινότητα χιλιάδων χρηστών έτοιµοι να βοηθήσουν και να συµβάλουν. Υπάρχουν συζητήσεις για το NetBeans λίστες αλληλογραφίας blogs, σε PlanetNetBeans, και χρήσιµες συχνές ερωτήσεις. 43 3. συνδεδεµένο Developer - Το NetBeans IDE είναι το εργαλείο της επιλογής για τις οµάδες που εργάζονται σε ένα συνεργατικό περιβάλλον. Μπορείτε να δηµιουργήσετε και να διαχειριστείτε java.net-έργα που φιλοξενούνται, για παράδειγµα? Εκθέσεις παρακολούθησης αρχείο το ζήτηµα µε τα δύο Jira και Bugzilla, και να συνεργάζονται µε τους οµοϊδεάτες προγραµµατιστές-όλα απευθείας από το οικείο περιβάλλον του IDE. 4. Ισχυρή GUI Builder - Η GUI Builder (παλαιότερα γνωστό ως Έργο Matisse) υποστηρίζει µια σοφιστικέ αλλά απλοποιηµένο πλαίσιο εφαρµογής Swing και Φασόλια δεσµευτική. Τώρα µπορείτε να χτίσετε GUIs µε φυσικό τρόπο. 5. Υποστήριξη για Java προτύπων και πλατφορµών -Το IDE παρέχει end-to-end λύσεις για όλες τις πλατφόρµες ανάπτυξης Java καθώς τα πιο σύγχρονα πρότυπα Java. Java Κινητικότητα Υποστήριξη πλήρες περιβάλλον για τη δηµιουργία, τη δοκιµή και την εκτέλεση εφαρµογών για κινητές συσκευές. Με προεπεξεργαστή µπλοκ, µπορείτε να χειριστείτε εύκολα θέµατα κατακερµατισµού. Υποστήριξη για την ανάπτυξη Java κινητικότητα είναι το καλύτερο µεταξύ όλων των εργαλείων ανάπτυξης Java. Java Enterprise Edition (EE) 6 υποστήριξη: Το πρώτο δωρεάν, ανοιχτού κώδικα IDE για την υποστήριξη της Java EE 6 προδιαγραφές. Java Standard Edition (SE) Υποστήριξη: Μπορείτε να αναπτύξουν εφαρµογές που χρησιµοποιούν τις πιο πρόσφατες προδιαγραφές Java SE. 6. Ο χαρακτηρισµός και Debugging Tools - Με το NetBeans IDE profiler, έχετε σε πραγµατικό χρόνο εικόνα για τη χρήση της µνήµης και των δυνητικών προβληµάτων απόδοσης. Επιπλέον, µπορείτε να κάνετε πράξη συγκεκριµένα τµήµατα του κώδικα για να αποφευχθεί η υποβάθµιση των επιδόσεων κατά τη διάρκεια της προφίλ. Το εργαλείο HeapWalker σας βοηθά να αξιολογούν το περιεχόµενο Java σωρού και να βρουν τις διαρροές µνήµης. 7. ∆υναµική Υποστήριξη ξένων γλωσσών - Το NetBeans IDE παρέχει ολοκληρωµένη υποστήριξη για scripting γλώσσες, όπως η PHP, Groovy, και JavaScript. PHP: Με το NetBeans IDE για PHP, µπορείτε να πάρετε το καλύτερο και των δύο κόσµων: την παραγωγικότητα της IDE (ολοκλήρωση κώδικα, σε πραγµατικό χρόνο έλεγχο σφαλµάτων, διόρθωσης σφαλµάτων και περισσότερο) µε την ταχύτητα και την απλότητα του αγαπηµένου σας επεξεργαστή κειµένου σε ένα λιγότερο από 30MB download. JavaScript: Το NetBeans IDE έχει τα εργαλεία JavaScript χρειάζεστε: ένα έξυπνο επεξεργαστή JavaScript, CSS / HTML ολοκλήρωση κώδικα, τη δυνατότητα εντοπισµού σφαλµάτων JavaScript στον Firefox και IE, και η συνδυασµένη υπηρεσία δηµοφιλείς βιβλιοθήκες JavaScript. Αγαπηµένες σας πλαίσιο JavaScript θα σας πάρει 80% από το δρόµο, το NetBeans IDE, θα σας βοηθήσει µε το τελευταίο 20%. Groovy: Στο NetBeans IDE, µπορείτε να δηµιουργήσετε τώρα ∆ισκοπότηρα εφαρµογές, ενσωµατώνουν Groovy σενάρια µε το έργο JavaSE σας. 8. επεκτάσιµη πλατφόρµα - Ξεκινήστε µε επεκτάσιµη πλατφόρµα της και να προσθέσετε τις δικές σας δυνατότητες NetBeans IDE και επεκτάσεις ή να χτίσετε ένα IDE που µοιάζει µε την εφαρµογή, κρατώντας µόνο τα χαρακτηριστικά που θέλετε. Η επέκταση της πλατφόρµας και Swing µε βάση την ίδρυσή του εξοικονοµεί χρόνο ανάπτυξης και µπορούν να βελτιστοποιήσουν την απόδοση. 9. Προσαρµοζόµενα Έργα - Μέσω του NetBeans IDE διαδικασία κατασκευής, το οποίο βασίζεται σε βιοµηχανικά πρότυπα, όπως Apache Ant, κάνει, Maven, και γκανιότα, όχι µια ιδιόκτητη διαδικασία κατασκευής, µπορείτε να προσαρµόσετε εύκολα τα σχέδια και να προσθέσετε λειτουργικότητα. Μπορείτε να κατασκευάσουν, να λειτουργήσουν, και να αναπτύξετε σχέδια για διακοµιστές εκτός του IDE. 10. Μη Υποστήριξη Java Code - ∆εν περιορίζεστε στη γλώσσα προγραµµατισµού Java. Μπορείτε να συµπεριλάβετε πολλές άλλες γλώσσες προγραµµατισµού, όπως C / C + +, scripting γλώσσες, όπως η 44 JavaScript, κλπ. Ακόµα πιο συναρπαστικό, να καθορίζει τη δική σας γλώσσα και να συµπεριληφθεί στα έργα σας. 11. Αφιερωµένο στήριξη που διατίθεται - Όταν δεν µπορείτε να πάρετε τη βοήθεια που χρειάζεστε από την κοινότητα, θεωρούν πακέτα στήριξης για προγραµµατιστές, τα οποία προσφέρουν συµβουλές προγραµµατισµού, υποστήριξη λογισµικού, και οι πιστώσεις εκπαίδευσης. 3.1.6 MySQL SQL είναι τα αρχικά της αγγλικής ονοµασίας (Structured Query Language) η οποία στην ελληνική ορολογία µεταφράζεται ως δοµηµένη γλώσσα αναζήτησης. Συνοπτικά µε την SQL µπορούµε να έχουµε πρόσβαση σε µια βάση δεδοµένων, να εκτελούµε αναζητήσεις µε κριτήρια, να εισάγουµε νέα δεδοµένα, να διαγράψουµε υπάρχοντα δεδοµένα να κάνουµε αλλαγές σε υπάρχοντα δεδοµένα. Αξίζει να σηµειωθεί ότι η SQL είναι τυποποιηµένη από τον Αµερικανικό Ινστιτούτο Τυποποιήσεων γνωστή και ως ANSI (American National Standards Institute) για την πρόσβαση και διαχείριση βάσεων δεδοµένων. Εντολές SQL χρησιµοποιούνται για την εξαγωγή και ανανέωση δεδοµένων από µια βάση δεδοµένων. Η SQL ακολουθείτε από τα πιο γνωστά προγράµµατα σχεσιακής βάσεις δεδοµένων όπως MS Access, DB2, Informix, MS SQL Server, Oracle, Sybase κτλπ. ∆υστυχώς, υπάρχει µεγάλος αριθµός διαφορετικών εκδόσεων της γλώσσας SQL αλλά τουλάχιστον για να είναι εγκεκριµένη βασικές εντολές συναντιούνται σε όλες τις βάσεις δεδοµένων όπως SELECT, UPDATE, DELETE, INSERT, WHERE, και άλλες). 3.1.7 Χρήση της MySQL Παρακάτω θα δείξουµε συνοπτικά πώς µπορούµε ναχρησιµοποιήσουµε το γραφικό περιβάλλον του εργαλείου MySQL Query Browser και MySQL Administrator για ορισµένες διαδικασίες. Για περισσότερες και αναλυτικότερες πληροφορίες ανατρέξτε στα εγχειρίδια χρήσης των προγραµµάτων. Το πρόγραµµα MySQL Query Browser είναι ένα από τα εργαλεία (MySQL GUI Tools) µε γραφικό περιβάλλον τα οποία διατίθενται για την MySQL στην διεύθυνση http://dev.mysql.com/downloads/gui-tools/5.0.html . Θα πρέπει να τα κατεβάσετε ξεχωριστά από την MySQL. Τα εγχειρίδια χρήσης των MySQL GUI Tools βρίσκονται στην διεύθυνση http://dev.mysql.com/doc/ . 45 Σύνδεση του Query Browser µε τον server Εικόνα 29 – Username / Password MySQL Παράδειγµα δηµιουργίας βάσης δεδοµένων Για να δηµιουργήσουµε µια καινούργια βάση δεδοµένων κάνουµε δεξί κλικ στην καρτέλα Schemata και επιλέγουµε Create New Schema. Ο όρος «σχήµα» στην ορολογία των βάσεων δεδοµένων περιγράφει την δοµή της βάσης και των πινάκων που την αποτελούν. Το σχήµα της νέας βάσης εµφανίζεται στην λίστα µε τα υπόλοπα σχήµατα. Για να δηµιουργήσουµε πίνακες κάνουµε δεξλι κλικ στην βάση και επιλέγουµε Create New Table. Σηµαντικό επίσης για την MySQL είναι η επιλογή της µηχανής αποθήκευσης και διαχείρισης των πινάκων (storage engine). Η µηχανή αυτή έχει καθαρά εσωτερικό, ως προς το πρόγραµµα, ρόλο και δεν είναι εξωτερικά παραµετροποιήσιµη. Η µόνη δυνατότητα που µας δίνεται είναι η επιλογή µιας από τις ήδη υπάρχουσες. Η επιλογή αυτή υπάρχει για να καλύπτει τις διαφορετικές ανάγκες που µπορεί να προκύπτουν από βάσεις δεδοµένων διαφορετικών προδιαγραφών. Εικόνα 30 – Create new Schema in MySQL 46 Από τις διαθέσιµες µηχανές, αυτή που δίνει την δυνατότητα δηµιουργίας ξένων κλειδιών είναι η InnoDB την οποία και πρέπει να χρησιµοποιήσετε σε όλους τους πίνακες της βάσης. Αντίθετα, η µηχανή MYISAM δεν υποστηρίζει την χρήση ξένων κλειδιών και δεν προτείνεται για χρήση. Εικόνα 31 – Storage Engine Παράδειγµα εισαγωγής στοιχείων στην βάση δεδοµένων Για να µπορέσουµε να εισάγουµε χειροκίνητα, δίχως SQL, δεδοµένα στην βάση πρέπει πρώτα να εµφανίσουµε τα περιεχόµενα ενός πίνακα. 1) Γράφουµε και εκτελούµε το ερώτηµα πατώντας το κουµπί Execute 2) Εφόσον ο πίνακας είναι άδειος δεν εµφανίζονται εγγραφές στην καρτέλα Resultset 3) Για να ενεργοποιηθεί η δυνατότητα επεξεργασίας των δεδοµένων πρέπει να επιλέξουµε Edit 47 Εικόνα 32 – address book Για να εισάγουµε δεδοµένα αλλάζοντας την τιµή των κελιών κάνουµε διπλό κλικι σε αυτά. 1. Αν ένα πεδίο έχει auto increment τότε αν δεν του θέσουµε εµείς συγκεκριµένη τιµή, τότε µετά την επεξεργασία αυτή τίθεται αυτόµατα. Σε δεδοµένα τα οποία έχουν την δυνατότητα να είναι NULL µπορούµε να αφήσουµε την τιµή αυτή. 2. Τα νέα δεδοµένα εµφανίζοντα µε πράσινο χρώµα, ενώ µε µωβ τα δεδοµένα τα οποία προυπήρχαν αλλά τα µεταβάλλαµε. 3. Για να επικυρωθούν οι αλλαγές επιλέγουµε Apply Changes. Στην αντίθετη περίπτωση επιλέγουµε Discard. Scripts - Τα scipts είναι ένας πολύ βολικός τρόπος για την διαχείριση ενός προγράµµατος. Η χρήση των script µπορεί να γίνει τόσο από την γραµµή εντολών όσο και από τον MySQL Query Browser. Αφού ανοίξουµε ένα script µπορούµε να το εκτελέσουµε είτε όλο µαζί είτε εντολήεντολή. 48 Εικόνα 33 – Κώδικας για δηµιουργία πίνακα ΓΡΑΜΜΗ ΕΝΤΟΛΩΝ Το εκτελέσιµο του MySQL client βρίσκεται στον φάκελο “φάκελος mysql server”/bin και το εκτελούµε µε την εντολή : mysql -u root -p. Αν έχουµε δηµιουργήσει άλλον χρήστη αντί για root χρησιµοποιούµε username . Χρήσιµες εντολές: ?: εµφανίζει λίστα µε όλες τις εντολές της MySQL SHOW DATABASES: Μας εµφανίζει λίστα µε τις βάσεις που υπάρχουν. USE database_name: Αλλάζουµε την τρέχουσα βάση προς επεξεργασία στην database_name. SHOW TABLES: Μας εµφανίζει λίστα µε τους πίνακες της τρέχουσας βάσης. QUIT ή \q: έξοδος από τον MySQL client. 49 Παράδειγµα χρήσης της γραµµής εντολών: Εικόνα 34 - Παράδειγµα χρήσης της γραµµής εντολών BACKUP KAI RESTORE Για την δηµιουργία αντιγράφων ασφαλείας µπορεί να χρησιµοποιηθεί το GUI MySQL Administrator. Για την σύνδεση του MySQL Administrator µε τον server ακολουθείται η ίδια διαδικασία µε τον MySQL Query Browser. 50 Επιλέγουµε από την αριστερή πλευρική στήλη την επιλογή Αντίγραφα ασφαλείας. 1) ∆ηµιουργούµε ένα νέο Έργο για ένα νέο αντίγραφο ασφαλείας 2) του δίνουµε όνοµα 3) επιλέγουµε την βάση δεδοµένων που θέλουµε να αποθηκεύσουµε 4) και τέλος δηµιουργούµε το αντίγραφο ασφαλείας. Mε την αντίστροφη διαδικασία επαναφέρουµε ένα αντίγραφο ασφαλείας. Εικόνα 35 - αντίγραφο ασφαλείας Επιλέγουµε από την αριστερή πλευρική στήλη την επιλογή Αποκατάσταση Αντιγράφων. 1) ανοίγουµε το αρχείο αντιγράφου ασφαλείας. 2) Επιλέγουµε τις κατάλληλες παραµέτρους. 3) Ξεκινάµε την αποκατάσταση. 51 Βοήθεια και Τεκµηρίωση των Προγραµµάτων Tόσο το RDBMS MySQL όσο και τα εργαλεία µε γραφικό περιβάλλον έχουν εγχειρίδια, όπου µπορείτε να ανατρέξετε για την χρήση τους. Η τεκµηρίωση αυτή βρίσκεται στο http://dev.mysql.com/doc/. Εκεί θα βρείτε τόσο το εγχειρίδιο της MySQL (MySQL Reference Manual) όσο και το εγχειρίδιο χρήσης των εργαλείων µε γραφικό περιβάλλον (MySQL GUI Tools). Επίσης στον δικτυακό τόπο της MySQL µπορείτε να βρείτε mailing lists http://lists.mysql.com/ και forum http://forums.mysql.com/ . 3.1.8 Λόγοι Χρήσης των XAMPP και PLONK Μετά από έρευνα µε τους υπόλοιπους φοιτητές της οµάδας, καταλήξαµε στο συµπέρασµα ότι η πιο εύχρηστη πλατφόρµα που µπορούµε να χρησιµοποιήσουµε είναι το XAMPP. Αυτό συµβαίνει κυριώς, επειδή το συγκεκριµένο λογισµικό υποστηρίζει όλα τα προγράµµατα που θέλουµε να χρησιµοποιήσουµε, αλλά και µπορεί να φιλοξενήσει µια ιστοσελίδα χωρίς να είναι συνδεδεµένο στο διαδίκτυο, δηλαδή σε localhost. Επίσης χρησιµοποιεί την βάση δεδοµένων MySQL για σύνδεση µε την ιστοσελίδα και υπάρχουν συγκεκριµένα username και password που µπορούµε να χρησιµοποιήσουµε για την είσοδό µας στην βάση (παντα όσο η σελίδα µας φιλοξενείται στον localhost). Όσον αφορά το framework PLONK, όπως έχουµε ήδη αναφέρει είναι µια δουλειά που ξεκίνησε από την οµάδα του βελγίου, και παρόλο που ακόµα δεν έχει τελιοποιηθεί (π.χ σε θέµατα ασφάλειας) είναι ήδη αρκετά λειτουργική και εύχρηστη. 3.2 Microsoft Project Το Microsoft Project (MSP, MSOP ή WinProj) είναι ένα πρόγραµµα διαχείρισης έργων λογισµικού, που αναπτύχθηκε και πωλείται από τη Microsoft, η οποία έχει σχεδιαστεί για να βοηθήσει ένα διαχειριστή του έργου για την ανάπτυξη ενός σχεδίου, διαθέτει πόρους για τα καθήκοντα, την παρακολούθηση της προόδου, τη διαχείριση του προϋπολογισµού, και την ανάλυση των φορτίων εργασίας . Ήταν η τρίτη έκδοση της Microsoft που βασίζεται σε Windows εφαρµογή, και µέσα σε δύο χρόνια από την εισαγωγή τους έγινε το κυρίαρχο PC-based λογισµικό διαχείρισης του έργου. Αν και επώνυµα ως µέλος της οικογένειας του Microsoft Office, ποτέ δεν έχει συµπεριληφθεί σε κάποια από τις οικογένειες προγραµµάτων του Office (όπως το Visio). Είναι διαθέσιµο σήµερα σε δύο εκδόσεις, Standard και Professional. Αποκλειστική µορφή αρχείου MS Project είναι. MPP. Microsoft Project και το Microsoft Project Server είναι οι ακρογωνιαίοι λίθοι του Microsoft Office Enterprise Project Management (EPM). 52 3.2.1 Σηµαντικοί Στόχοι για την Εκπλήρωση της Πτυχιακής Εικόνα 36 – Στόχοι Πτυχιακής 3.2.2 Προτεινόµενο Χρονοδιάγραµµα (Gantt Chart) Εργασίας Εικόνα 37 – Gantt Chart 53 4. ΚΥΡΙΟ ΜΕΡΟΣ ΠΤΥΧΙΑΚΗΣ 4.1 Ανάλυση Προβλήµατος 4.1.1 Σύντοµη Περιγραφή του Προγράµµατος MUTW Το Multinational Undergraduate Team Work (MUTW) είναι ένα πρόγραµµα που επιδοτείται από την Ευρωπαική Ένωση και έχει ως σκοπό την συνεργασία µεταξύ διαφόρων χωρών για την επιτυχή δηµιουργία ενός project. Απώτερος στόχος του προγράµµατος αυτού είναι η αύξηση των δεξιοτήτων των φοιτητών, ενώ το πνεύµα επικοινωνίας και οµαδικότητας αποτελούν κινητήριο δύναµη για την επίτευξη του στόχου αυτού. Συνολικά 11 Πανεπιστήµια λαµβάνουν µέρος στην εργασία αυτή, κάθε Πανεπιστήµιο έχει δύο φοιτητές που συµµετέχουν, και είµαστε χωρισµένοι σε δύο οµάδες, την Orange Team και την Blue Team (εµείς ανήκουµε στην Orange Team). Κάθε οµάδα θα δηµιουργήσει την ιστοσελίδα όπως αυτή νοµίζει, χρησιµοποιώντας συγκεκριµένα πρότυπα όπως την PHP για την σύνδεση µε το internet και την SQL για βάση δεδοµένων, όµως το framework που θα χρησιµοποιηθεί για το design του site είναι στην ευχέρεια της κάθε οµάδας. Κάθε Πανεπιστήµιο έχει αναλάβει διαφορετικό τµήµα της εργασίας αυτής που πρέπει να φέρει εις πέρας µέχρι την καταληκτική ηµεροµηνία, όπου θα γίνει και η παρουσίαση του τελικού project. Κατά την διάρκεια των 4 αυτών µηνών, έγιναν εβδοµαδιαίες τακτικές συναντήσεις όπου συµµετείχαν όλα τα µέλη της οµάδας και παρουσιάζαµε την πρόοδο που είχαµε πραγµατοποιήσει κατά την διάρκεια της εκάστοτε εβδοµάδας, και συζητούσαµε για τα ζητήµατα που προέκυπταν ή τους τυχόν προβληµατισµούς µας επί της εργασίας. Οι συναντήσεις αυτές έγιναν µέσω του προγράµµατος Adobe Acrobat Connect Pro Meeting που µας συνέστησαν οι καθηγητές- κριτές των Πανεπιστηµίων που συµµετέχουν, και για τα αρχεία που χρειάστηκαν να “ανέβουν” σε ένα κοινό φάκελο που µοιραζόµασταν όλοι οι συµµετέχοντες χρησιµοποιήθηκε το πρόγραµµα Sourceforge. Όλες οι συζητήσεις καταγράφηκαν, και στα αρχεία είχαν πρόσβαση και οι καθηγητές. Με αυτά τα δεδοµένα,καθώς και την αρχική παρουσίαση του προετεινόµενου timetable, αλλά και την παρουσίαση του τελικού project, οι καθηγητές- κριτές απέδωσαν στη κάθε οµάδα την βαθµολογία που αναλογούσε. 4.1.2 Η Οµάδα µας (ORANGE TEAM) Η οµάδα µας αποτελείται από 6 Πανεπιστήµια, δηλαδή 12 φοιτητές. Υπάρχουν συνολικά 8 διαφορετικά πακέτα που αποτελούν το project αυτό, και διανεµήθηκαν στους φοιτητές επί ίσοις όροις. Παρακάτω παραθέτεται ο πίνακας µε την διανοµή των πακέτων, καθώς και ο µέγιστος αριθµός credits που µπορεί να κερδίσει η κάθε οµάδα σύµφωνα µε τους κριτές. 54 Orange team Package Partner ECTS P1-CONFIG P8-Kiel 12 P2-INFOX P2-Gent 18 P3-ALERT P7-Heraklion 20 P4-OUT P9-Veliko Turnovo 15-20 P5-IN P11-Reykjavik 6 P6-EXAM P1-Porto 18 P7-MATCH P8-STATS Εικόνα 38 – Πακέτα ανά οµάδα Παρακάτω παραθέτουµε λίγα λόγια για το κάθε πακέτο. P1 - CONFIG, Πακέτο ∆ιαµόρφωσης (Configuration Package): Το πακέτο αυτό είναι υπεύθυνο για την διαχείρηση του ErasmusLine. Όλα τα άλλα πακέτα βασίζονται σε αυτό για την παροχή επικύρωσης και συνεκτικών στοιχείων που απαιτούνται για την λειτουργία του συστήµατος. Το πακέτο αυτό διαχειρίζεται τους λογαριασµούς, τα προφίλ των χρηστών, την αρχική σελίδα του site καθώς και το κύριο µενού. 55 P2 - INFOX, Πακέτο Ανταλλαγής Πληροφοριών και Ασφαλείας (Information Exchange and Security Package): Αυτό το πακέτο επιτρέπει την αναταλλαγή εγγράφων και την διεκπεραίωση των διαδικασιών που γλινονται από τους φοιτητές σε κάθε στάδιο της κινητικότητας. Παρέχει µηχανισµό ασφαλής ανταλλαγής πληροφοριων που είναι συσχετισµένες µε την ανταλλαγή των φοιτητών τα οποία διαχειρίζονται τα συµµετέχοντα Ιδρύµατα µέσω του ∆ιαδικτύου. P3 - ALERTS, Πακέτο Αυτόµατης Ειδοποίησης (Automatic Alerts Package): Το πακέτο αυτό δηµιουργεί αυτόµατες ειδοποιήσεις για τις εκκρεµούσες εργασίες. Οι ειδοποιήσεις αυτές προκαλούνται απο χρονικά όρια και συσχετίζονται µε τις αιτήσεις που δεν έχουν απαντηθεί στο επιτρεπόµενο χρονικό όριο. P4- OUT, Πακέτο Εξερχόµενων Φοιτητών (Outgoing Students Package): Ως εξερχόµενο φοιτητή εννοούµε τον φοιτητή εκείνο ο οποίος φεύγει από το Ίδρυµα Αποστολής και εισέρχεται σε κάποιο Ίδρυµα Υποδοχής, συµµετέχει ήδη ή προτίθεται αν συµµετάσχει σε κάποια κινητικότητα Erasmus. Αυτό το πακέτο βοηθά τους φοιτητές, τους συντονιστές και γενικά το προσωπικό από τη µεριά του Ιδρύµατος Αποστολής. P5 - IN, Πακέτο Εισερχόµενων Φοιτητών (Incoming Students Package): Ως εισερχόµενο φοιτητή εννοούµε τον φοιτητή εκείνο που εισέρχεται στο Ίδρυµα Αποδοχής από κάποιο Ίδρυµα Αποστολής, έχει υπογράψει διµερή συµφωνία µε το Ίδρυµα Υποδοχής, είναι ήδη στην κινητικότητα Erasmus ή προτίθεται να υπάρξει. Αυτό το πακέτο βοηθά τους φοιτητές, τους συντονιστές και γενικά το προσωπικό από τη µεριά του Ιδρύµατος Υποδοχής. P6 - EXAMS, Πακέτο ∆ιαγωνισµών Erasmus (Erasmus Exams Package): Όταν ένας φοιτητής έχει ένα µάθηµα στο Ίδρυµα Αποστολής και δεν υπάρχει αντιστοιχία µε µάθηµα στο Ίδρυµα Υποδοχής, ο φοιτητής δικοιούται να ζητήσει να λάβει µέρος στις εξετάσεις που διαικπεραιώνονται στο µάθηµα αυτό από το Ίδρυµα Υποδοχής για να περάσει το µάθηµα. P7 - MATCH, Πακέτο Αυτόµατης Αντιστοιχίας Μαθηµάτων (Automatic Course Matching Package): Σε αυτό το πακέτο οφείλεται η αναγνώριση και η αυτόµατη αντιστοιχία των µαθηµάτων του Ιδρύµατος Αποστολής µε το Ίδρυµα Υποδοχής. P8 - STATS, Πακέτο Στατιστικων Erasmus (Erasmus Statistics Package): Αυτό το πακέτο χρησιµοποιεί ένα εκτελεστικό σύστηµα πληροφοριών που συλλέγει λειτουργικά δεδοµένα και τα γνωστοποιεί στους χρήστες µετά απο µια σειρά στατιστκών δεικτών. 56 4.1.3 Links Προγραµµάτων που Χρησιµοποιήθηκαν – Για την επικοινωνία µεταξύ των φοιτητών και το εβδοµαδιαίο τακτικό meeting, χρησιµοποιήθηκε το πρόγραµµα Adobe Acrobat Connect Pro Meeting : – Για τον διαµοιρασµό των αρχείων και την κοινή πρόσβαση σε αυτά, χρησιµοποιήθηκε το πρόγραµµα SourceForge : Η δική µας οµάδα χρησιµοποιούσε το link ως Forum. 4.1.4 Sourceforge Το SourceForge είναι ένας “χώρος” web-based πηγαίου κώδικα. Λειτουργεί ως µια κεντρική τοποθεσία για τους προγραµµατιστές λογισµικού για να ελέγχουν και να διαχειρίζονται την ανάπτυξη του ελεύθερου λογισµικού. Η ιστοσελίδα λειτουργεί σε µια έκδοση του SourceForge Enterprise Edition, που σχετιζεται µε την τελευταία έκδοση open-source διαθέσιµη. Από τον Φεβρουάριο του 2009, το SourceForge αποθετήριο φιλοξενεί περισσότερα από 230.000 έργα και έχει περισσότερους από 2 εκατοµµύρια εγγεγραµµένους χρήστες, αν και δεν είναι όλα ενεργά. Η sourceforge.net προσέλκυσε τουλάχιστον 33 εκατοµµύρια επισκέπτες µέχρι τον Αύγουστο του 2009, σύµφωνα µε µια έρευνα Compete.com. Η SourceForge προσφέρει δωρεάν πρόσβαση στο hosting και στα εργαλεία για την ανάπτυξη του ελεύθερου λογισµικού ανοικτού κώδικα, σε ανταγωνισµό µε άλλους παρόχους, όπως η RubyForge, Tigris.org, BountySource, Launchpad, BerliOS, JavaForge και το GNU Savannah. Οι προγραµµατιστές έχουν πρόσβαση σε κεντρική αποθήκευση και σε εργαλεία για τη διαχείριση των έργων, αν και είναι περισσότερο γνωστή για την παροχή συστηµάτων ελέγχου αναθεώρησης όπως CVS, SVN, Bazaar, Git ή Mercurial. Κύρια χαρακτηριστικά (µεταξύ άλλων) περιλαµβάνουν τα wikis του έργου, µετρήσεις και ανάλυση, η πρόσβαση σε µια βάση δεδοµένων MySQL, και το µοναδικό sub-domain URLs (όπως http://project-name.sourceforge.net). Ο µεγάλος αριθµός των χρηστών στο SourceForge.net (πάνω από 2.000.000 από το 2009) εκθέτει εξέχοντα έργα σε µια ποικιλία από προγραµµατιστές, και µπορεί να δηµιουργήσει ένα βρόγχο θετικής ανάδρασης. Καθώς αυξάνεται η δραστηριότητα ενός έργου, η SourceForge.net του εσωτερικού συστήµατος κατάταξης καθιστά πιο ορατό σε άλλους προγραµµατιστές, που µπορούν να συµµετάσχουν και να συνεισφέρουν σε αυτό. ∆εδοµένου ότι πολλά έργα ανοικτού κώδικα αποτυγχάνουν λόγω έλλειψης υποστήριξης για την ανάπτυξη, η έκθεση σε µια τέτοια µεγάλη κοινότητα προγραµµατιστών µπορεί να αποδίδει συνεχώς νέα ζωή σε ένα έργο. Οι προγραµµατιστές πρέπει να συµφωνήσουν να χορηγούν άδεια χρήσης της SourceForge.net πριν να µπορούν να φιλοξενούν κώδικα σε διακοµιστές της. Η SourceForge.net χρησιµοποιεί Trove Categorization για τα έργα της. 57 4.1.5 Adobe Connect Pro Meeting Adobe Connect (πρώην Presedia Publishing System, Macromedia Breeze, και το Adobe Acrobat Connect Pro) είναι το λογισµικό που χρησιµοποιείται για τη δηµιουργία πληροφοριών και για γενικές παρουσιάσεις, online εκπαιδευτικό υλικό, web conferencing, µάθητικές ενότητες, και κοινή χρήση επιφάνειας εργασίας - χρήστη. Το προϊόν έχει Adobe Flash ως βάση. Όλα τα δωµάτια είναι συνάντηση που οργανώθηκε σε «λοβούς». Με κάθε pod που εκτελεί ένα συγκεκριµένο ρόλο (π.χ. chat, whiteboard, σηµείωµα, κλπ). Η συνιστώµενη βάση δεδοµένων για backend υποστήριξη του Microsoft SQL Server. Το προϊόν µπορεί να λάβουν άδεια λειτουργίας ως εγκατεστηµένο προϊόν που θα εγκαταστήσετε στον συλλογισµό, µια cloud-based εφαρµογής που φιλοξενείται από την Adobe, ή ως µια υπηρεσία διαχείρισης, στην οποία ένας εταίρος (ConnectSolutions), αναπτύσσει και διαχειρίζεται κάθε εγκατάσταση πελάτη ξεχωριστά (µόνο ενοικιαστή) σε ένα FISMA συµβατό data center. Adobe Connect ήταν στο παρελθόν µέρος της οικογένειας Adobe Acrobat και έχει αλλάξει αρκετές φορές τα ονόµατα. Το προϊόν αναπτύχθηκε για πρώτη φορά από µια νεοσύστατη εταιρεία που ονοµάζεται Presedia, η οποία δηµιούργησε το Σύστηµα Εκδόσεις Presedia και περιλάµβανε µια πρώτη γενιά του PowerPoint σε Flash Plugin, το οποίο έγινε το Adobe Presenter, και µια εκπαιδευτική ενότητα. Macromedia απέκτησε Presedia και προστίθενται σε πραγµατικό χρόνο συστατικό το web conferencing, που ονοµάζεται Breeze Live (αργότερα µετονοµάστηκε Συνέλευση Breeze). Στην έκδοση 5, Macromedia Breeze περιλαµβάνονται τέσσερις εφαρµογές: Παρουσιαστής Breeze, Εκπαίδευση Breeze, συνεδριάσεων Breeze, και Εκδηλώσεις Breeze (νέο στην έκδοση 5). Μετά την εξαγορά από την Adobe,η Macromedia Breeze συνεδριάσεων αρχικά επαναλανσάρισε το Adobe Connect, τότε το Adobe Acrobat Connect Professional (µε µια έκδοση SMB που ονοµάζεται Adobe Connect), είναι τώρα Adobe Connect. Η πλήρης σειρά προϊόντων περιλαµβάνει εκδόσεις του Κατάρτιση Breeze, Breeze Παρουσιαστής , Breeze Συνέλευση, και Εκδηλώσεις Breeze. Υπάρχει επίσης ένα προϊόν που ονοµάζεται Adobe ConnectNow η οποία αποτελεί µέρος του Acrobat.com, µια σουίτα του cloud-based για εφαρµογές που παρέχονται από την Adobe. Εικόνα 39 - Adobe Connect Pro Meeting 58 4.1.6 DropBox Εκτός από το Adobe Connect Pro Meeting που χρησιµοποιούσαµε µε τα υπόλοιπα παιδιά από το project, χρησιµοποιήσαµε επίσης το πρόγραµµα Dropbox για διαµοιρασµό αρχέιων. Το Dropbox είναι µια Web-based υπηρεσία φιλοξενίας που λειτουργεί από την Dropbox, Inc η οποία χρησιµοποιεί το cloud computing για να επιτρέψει στους χρήστες να αποθηκεύουν και να µοιράζονται αρχεία και φακέλους µε άλλους µέσω του Internet χρησιµοποιώντας το συγχρονισµό αρχείων. Ιδρύθηκε το 2007 από αποφοίτους του ΜΙΤ Drew Χιούστον και Arash Ferdowsi ως Υ Combinator εκκίνησης . Υπάρχουν δύο δωρεάν και επί πληρωµή υπηρεσίες, το καθένα µε ποικίλες επιλογές. Σε σύγκριση µε παρόµοιες υπηρεσίες, Dropbox προσφέρει ένα σχετικά µεγάλο αριθµό πελατών χρήστη σε µια ποικιλία της επιφάνειας εργασίας και τα κινητά λειτουργικά συστήµατα. Υπάρχει ένας αριθµός των εκδόσεων σε πολλά λειτουργικά συστήµατα, συµπεριλαµβανοµένων των εκδόσεων για τα Microsoft Windows, Mac OS X και Linux (επίσηµες και ανεπίσηµες), καθώς και εκδόσεις για φορητές συσκευές, όπως το Android, Windows Phone 7, το iPhone, iPad και BlackBerry, καθώς και µια web-based client για όταν δεν υπάρχει τοπική πελάτης έχει εγκατασταθεί. Dropbox χρησιµοποιεί το freemium οικονοµικό µοντέλο και δωρεάν υπηρεσία του προσφέρει 2 GB δωρεάν online αποθηκευτικό χώρο. Οι χρήστες που αναφέρονται Dropbox σε άλλους µπορεί να κερδίσει µέχρι και 8 GB δωρεάν αποθηκευτικού χώρου. Κυριότερους ανταγωνιστές της υπηρεσίας περιλαµβάνουν Box.net, Egnyte, το Windows Live SkyDrive, το Ubuntu One, TitanFile, SugarSync, Mozy, ZumoDrive, SpiderOak και Wuala. Τόσο ο διακοµιστής Dropbox και desktop λογισµικό του πελάτη είναι κυρίως γραµµένα σε Python. Ο πελάτης επιφάνειας εργασίας χρησιµοποιεί σετ εργαλείων για GUI όπως wxWidgets και το κακάο. Άλλες αξιοσηµείωτες βιβλιοθήκες περιλαµβάνουν Twisted Python, ctypes, και pywin32. Το λογισµικό δεν χρησιµοποιεί καµία από τρίτους συγχρονισµού αρχείων ή βιβλιοθήκες έλεγχος έκδοσης και χτίστηκε από το µηδέν. Ο πελάτης Dropbox επιτρέπει στους χρήστες να απορρίψουν οποιοδήποτε αρχείο σε καθορισµένο φάκελο που στη συνέχεια συγχρονίζονται µε την υπηρεσία παροχής Internet Dropbox και σε οποιοδήποτε άλλο από υπολογιστές και συσκευές του χρήστη µε τον πελάτη Dropbox. Οι χρήστες µπορούν επίσης να ανεβάσετε τα αρχεία χειροκίνητα µέσω ενός web browser. Μέσα από αυτές τις χρήσεις, µπορεί να είναι µια εναλλακτική λύση για couriering φυσική αφαιρούµενα µέσα, και άλλες παραδοσιακές µορφές µεταφοράς αρχείων, όπως το FTP και συνηµµένα ηλεκτρονικού ταχυδροµείου. Ενώ το Dropbox λειτουργεί ως υπηρεσία αποθήκευσης, στόχος του είναι σχετικά µε το συγχρονισµό και την κοινή χρήση. Υποστηρίζει ιστορία αναθεώρηση, έτσι ώστε τα αρχεία διαγράφονται από το φάκελο Dropbox µπορεί να ανακτηθεί από οποιαδήποτε από τις συγχρονισµένες υπολογιστών. Ο έλεγχος έκδοσης Dropbox βοηθά επίσης τους χρήστες γνωρίζουν την ιστορία ενός αρχείου µπορεί να επεξεργάζεται επί του παρόντος, διευκολύνοντας περισσότερους από ένα άτοµο να επεξεργαστείτε και εκ νέου µετά αρχείων χωρίς επιπλοκές να χάσει την προηγούµενη µορφή του. Η ιστορία έκδοση περιορίζεται σε 30 ηµέρες. Μια πληρωµένη επιλογή για απεριόριστες ιστορία έκδοση που ονοµάζεται "Rat Pack-" είναι διαθέσιµη. Το ιστορικό εκδόσεων έχει συνδυαστεί µε τη χρήση της τεχνολογίας κωδικοποίησης δέλτα. Για την εξοικονόµηση εύρους ζώνης και του χρόνου, εάν ένα αρχείο στο Dropbox φάκελο του χρήστη έχει αλλάξει, Dropbox µόνο προσθήκες τα κοµµάτια του αρχείου που αλλάζουν όταν το συγχρονισµό.Αν ο πελάτης δεν έχει κανένα περιορισµό στο µέγεθος µεµονωµένων αρχείων, τα αρχεία που µεταφορτώνονται µέσω του δικτυακό τόπο είναι περιορισµένη σε ένα µέγιστο των 300 MB ανά αρχείο. Εµποδίζει τους ελεύθερους χρήστες (που παίρνουν 2 GB δωρεάν αποθηκευτικού χώρου) από τη δηµιουργία πολλών δωρεάν λογαριασµούς, Dropbox περιλαµβάνει το περιεχόµενο των κοινόχρηστων φακέλων όταν συνολικά το ποσό του χώρου που χρησιµοποιείται για την το λογαριασµό. Το Dropbox χρησιµοποιεί S3 συστήµατος της Amazon αποθήκευσης για την αποθήκευση των αρχείων. Επίσης, χρησιµοποιεί SSL µεταφορές για συγχρονισµό και αποθηκεύει τα δεδοµένα µέσω AES. -256 κρυπτογράφησης . 59 Οι έµπειροι χρήστες έχουν επινοήσει µια σειρά από καινοτόµες χρήσεις και τα mash-ups από την τεχνολογία που επεκτείνουν τη λειτουργικότητα Dropbox ». Αυτά περιλαµβάνουν: την αποστολή αρχείων σε µια Dropbox µέσω Gmail. Χρησιµοποιώντας Dropbox για συγχρονισµό IM συνοµιλία καταγράφει, διαχείριση BitTorrent, διαχείριση κωδικό πρόσβασης, αποµακρυσµένη έναρξη εφαρµογής και παρακολούθησης του συστήµατος, και ως δωρεάν υπηρεσία web hosting. 4.1.7 Git Για τον διαµοιρασµό και την αποθήκευση των αρχείων ολόκληρης της οµάδας καθ'όλη την διάρκεια του project, χρησιµοποιήσαµε το λογισµικό Git ώστε να µπορεί ο καθένας να κάνει ανάκτηση αρχείου όποια ώρα θελήσει. Το Git είναι ένα κατανεµηµένο σύστηµα ελέγχου και αναθεώρησης, µε µια έµφαση στην ταχύτητα. Αρχικά σχεδιάστηκε και αναπτύχθηκε από τον Linus Torvalds για την ανάπτυξη του πυρήνα Linux. Κάθε Git κατάλογος εργασίας είναι ένα ολοκληρωµένο σύστηµα αποθήκης µε πλήρες ιστορικό και όλες τις δυνατότητες εντοπισµού αναθεώρησης, δεν εξαρτάται από την πρόσβαση στο δίκτυο ή από έναν κεντρικό server. Η τρέχουσα συντήρηση του λογισµικού της GIT εποπτεύεται από τον Junio Hamano. Είναι ελεύθερο λογισµικό και διανέµεται υπό τους όρους της GNU General Public License έκδοση 2. Ο σχεδιασµός του GIT είναι µια σύνθεση των εµπειριών Torvalds µε το Linux στη διατήρηση ενός µεγάλου έργου ανάπτυξης, µαζί µε βαθιά γνώση του για τις επιδόσεις του συστήµατος αρχείων που αποκτήθηκε από το ίδιο σχέδιο και την επείγουσα ανάγκη να παράγει ένα λειτουργικό σύστηµα στη σύντοµη διαταγή. Αυτές οι επιρροές οδήγησαν στις ακόλουθες επιλογές εφαρµογής: Ισχυρή υποστήριξη για τις µη γραµµικές ανάπτυξη Το Git στηρίζει την ταχεία διακλάδωση και συγχώνευση, και περιλαµβάνει ειδικά εργαλεία για τον εντοπισµό και την πλοήγηση σε µια µη γραµµική ιστορία ανάπτυξης. Μια υπόθεση για το Git είναι ότι µια αλλαγή θα συγχωνευθεί πιο συχνά από ό, τι είναι γραµµένο, καθώς περνά γύρω από διάφορους αναθεωρητές. Κατανεµηµένα ανάπτυξη Όπως οι Darcs, BitKeeper, Mercurial, SVK και Bazaar, το Git δίνει σε κάθε προγραµµατιστή ένα τοπικό αντίγραφο του µε όλη την ιστορία της ανάπτυξης, και οι αλλαγές αντιγράφονται από ένα τέτοιο χώρο αποθήκευσης σε κάποιο άλλο. Οι αλλαγές αυτές εισάγονται ως επιπλέον ανάπτυξη, και µπορούν να συγχωνευθούν µε τον ίδιο τρόπο όπως τοπικά αναπτύχθηκε το αρχικό. Συµβατότητα µε τα υπάρχοντα συστήµατα / πρωτόκολλα Αποθετήρια µπορούν να δηµοσιεύονται µέσω HTTP, FTP, rsync, ή ένα πρωτόκολλο Git πάνω είτε σε µια απλή πρίζα ή ssh. 'Έχει επίσης µια εξοµοίωση εξυπηρετητή CVS, η οποία επιτρέπει τη χρήση των υφιστάµενων πελατών CVS και IDE plugins για να αποκτήσετε πρόσβαση αποθετήρια git. Subversion και SVK αποθετήρια µπορούν να χρησιµοποιηθούν άµεσα µε git-svn. 60 Η αποτελεσµατική διαχείριση των µεγάλων έργων Ο Torvalds έχει περιγράψει Git ότι είναι πολύ γρήγορη και κλιµακωτή, και οι δοκιµές επιδόσεων γίνονται µε Mozilla έδειξαν ότι ήταν µία τάξη µεγέθους ταχύτερα από ό, τι ορισµένα συστήµατα ελέγχου αναθεώρηση, και η αναθεώρηση από ένα τοπικά αποθηκευµένο αποθετήριο µπορεί να είναι εκατό φορές πιο γρήγορη από ό, τι αυτό από τον αποµακρυσµένο διακοµιστή. Το ιστορικό του Git είναι αποθηκευµένο µε τέτοιο τρόπο ώστε το όνοµα της συγκεκριµένης αναθεώρησης (µια «δέσµευση» από την άποψη Git) εξαρτάται από το πλήρες ιστορικό της ανάπτυξης . Μόλις δηµοσιευθεί, δεν είναι δυνατό να αλλάξει, χωρίς να γίνονται αντιληπτό. Η δοµή είναι παρόµοια µε µια hash δέντρο, αλλά µε τα πρόσθετα δεδοµένα στους κόµβους καθώς και τα φύλλα.(Mercurial και µονοχρωµία έχουν επίσης αυτή την ιδιότητα.) Toolkit µε βάση το σχεδιασµό Το Git σχεδιάστηκε ως ένα σύνολο από προγράµµατα γραµµένα σε C, και µια σειρά από σενάρια κελύφους που παρέχουν περιτυλίγµατος γύρω από αυτά τα προγράµµατα. Παρά το γεγονός ότι τα περισσότερα από αυτά σενάρια έχουν έκτοτε ξαναγραφεί σε C για την ταχύτητα και τη δυνατότητα µεταφοράς, ο σχεδιασµός παραµένει, και είναι εύκολο να αλυσίδα τα στοιχεία µαζί. Pluggable στρατηγικές συγχώνευσης Στο πλαίσιο του σχεδιασµού της εργαλειοθήκης, το Git είναι ένα καλά καθορισµένο µοντέλο ελλιπούς συγχώνευσης, και αυτό έχει πολλούς αλγορίθµους για την ολοκλήρωσή της, µε αποκορύφωµα να ενηµερώνει το χρήστη ότι είναι σε θέση να ολοκληρώσει τη συγχώνευση αυτόµατα και χειροκίνητα. Σκουπίδια συσσωρεύεται ή συλλέγονται Η εγκατάλειψη ή αλλαγές θα αφήσουν άχρηστα αντικείµενα να αιωρούνται στη βάση δεδοµένων. Αυτά είναι γενικά ένα µικρό κλάσµα των συνεχώς αυξανόµενων αντικείµενων, αλλά το διάστηµα µπορεί να ανακτηθεί µε το GC git. Περιοδική ρητή αντικείµενο συσκευασίας Το Git αποθηκεύει κάθε αντικείµενο που µόλις δηµιουργήθηκε ως ξεχωριστό αρχείο. Παρά το γεγονός ότι είναι µεµονωµένα συµπιεσµένο, αυτό παίρνει πολύ χώρο και είναι αναποτελεσµατικό. Αυτό λύνεται µε τη χρήση "πακέτων" που αποθηκεύουν ένα µεγάλο αριθµό αντικειµένων σε ένα ενιαίο αρχείο (ή το δίκτυο ρεύµα byte), συµπιεσµένα µεταξύ τους. Τα πακέτα είναι συµπιεσµένα χρησιµοποιώντας την λογική ότι τα αρχεία µε το ίδιο όνοµα είναι πιθανώς παρόµοια, αλλά δεν εξαρτώνται από αυτό για την ορθότητα. Τα νεοσύστατα αντικείµενα (που προστέθηκαν πρόσφατα) εξακολουθούν να αποθηκεύονται µεµονωµένα, καθώς και η περιοδική επανασυσκευασία είναι απαραίτητη για τη διατήρηση της αποτελεσµατικότητας . Το Git κάνει περιοδική ανασυσκευασία αυτόµατα αλλά το εγχειρίδιο ανασυσκευασίας είναι επίσης δυνατό µε την GIT GC εντολή. 4.1.8 In-Coming Students Package-P5 Με τον όρο “εισερχόµενος φοιτητής, εννοούµε τον φοιτητή που εισέρχεται από ένα Ίδρυµα Αποστολής σε ένα Ίδρυµα Αποδοχής µέσω της κινητικότητας Erasmus. Με το πρόγραµµα Erasmus, οι φοιτητές µπορούνα να παρακολουθήσουν έως και δύο εξάµηνα τα µαθήµατα που θα έκαναν στο δικό τους πανεπιστήµιο, σε άλλης χώρας, ή να κάνουν την πρακτική τους άσκηση. Το πακέτο αυτό έχει ως σκοπό να βοηθήσει τους φοιτητές, τους συντονιστές αλλά και γενικότερα όλους όσους εµπλέκονται στις διαδικασίες της πραγµατοποίησης της κινητικότητας. Θα πρέπει να τονιστεί ότι το πακέτο αυτό είναι άρρηκτα συνδεδεµένο µε το πακέτο Ρ4(εξερχόµενοι φοιτητές), καθώς οι φόρµες που θα δηµιουργηθούν και από τα δύο πακέτα , θα χρησιµοποιηθούν και από τα δύο είδη φοιτητών. 61 Θεωρητικό υπόβαθρο - Ένας φοιτητής για να γίνει δεκτός από το πανεπιστήµιο που επιθυµεί, θα πρέπει να ακολουθήσει κάποιες συγκεκριµένες διαδικασίες. Κατ' αρχήν, θα πρέπει να στείλει τις πρώτες φόρµες, οι οποίες είναι το βιογραφικό του, την Συµφωνία Μάθησης και την Αίτηση Αποδοχής. Το Πανεπιστήµιο που θα λάβει τα έγγραφα αυτά, θα εξετάσει αν ο φοιτητής πληρεί τις προυποθέσεις να γίνει αποδεκτός ή όχι. Σε περίπτωση αποδοχής, µπορεί να γίνει ή να µην γίνει αποδεκτή η Συµφωνία Μάθησης. (Για κάθε βήµα θα παρέχεται και το ανάλογο σχήµα.) Σε περίπτωση που κάποιος φοιτητής θελήσει να κάνει κάποια αλλαγή σε κάποιο µάθηµα ( να διαγράψει µια προηγούµενη επιλογή του ή και να προσθέσει κάποιο άλλο µάθηµα), υπάρχει φόρµα Αλλαγής Συµφωνία Μάθησης , η οποία πάλι µπορεί να γίνει αποδεκτή από το Ίδρυµα Αποδοχής ή όχι. Εάν ο φοιτητής περάσει αυτά τα στάδια µε επιτυχία, τότε προχωράει στο δεύτερο µέρος της διαδικασίας, το οποίο είναι η συµπλήρωση της φόρµας για Στέγαση. Το αν αυτή η αίτηση θα γίνει αποδεκτή από το Ίδρυµα Αποδοχής εξαρτάται από το αν διαθέτει εστίες το Πανεπιστήµιο αυτό, αλλά και κατά πόσο οι εστίες είναι διαθέσιµες για το χρονικό διάστηµα που θα χρειαστεί ο εκάστοτε φοιτητής. Μετά απο την συµπλήρωση και αποστολή και αυτήσ της φόρµας, πληρούνται πλέον οι προυποθέσεις για να ξεκινήσει ο φοιτητής την διαδικασία κινητικότητας. Το επόµενο βήµα γίνεται πλέον αφού έχει φτάσει ο φοιτητής στο Ίδρυµα Αποδοχής και αφορά την φόρµα πιστοποίησης αφίξεως. Το Πανεπιστήµιο συµπληρώνει την φόρµα αυτή αναγράφοντας ηµεροµηνία άφιξης του φοιτητή, βεβαιώνοντας έτσι ότι ο φοιτητής βρίσκεται εκεί στην ώρα του και θα ξεκινήσει κανονικά την περίοδο σπουδών του. Αυτή η πιστοποίηση έχει άµεση σχέση µε την υποτροφία που παίρνει ο κάθε φοιτητής, καθώς η καταµέτρηση των χρηµάτων που θα λάβει ο φοιτητής γίνεται βάσει των ηµερών διαµονής του στο εξωτερικό και όχι βάσει µηνών.Η φόρµα αυτή αποστέλεται στο Ίδρυµα Αποστολής. 62 Ο φοιτητής έχει δικαίωµα για αλλαγή µαθηµάτων και µπορεί να συµπληρώσει την φόρµα Αλλαγής Συµφωνίας Μάθησης όπου µπορεί να διαγράψει και να πρσθέσει µαθήµατα. Η φόρµα αυτή µπορεί να γίνει αποδεκτή ή όχι. Σε περίπτωση µη αποδοχής, ο φοιτητής µπορεί να ξανακάνει αίτηση, επιστρέφοντας στο βήµα 9. Εάν κάποιος φοιτητής επιθυµεί να παρατείνει την διαµονή του και την διάρκεια σπουδών του στο Ίδρυµα που ήδη βρίσκεται, µπορεί να συµπληρώσει την φόρµα επιµήκυνσης περιόδου κινητικότητας, η οποία µπορεί πάλι να γίνει αποδεκτή ή όχι. Σε περίπτωση που η αίτηση γίνει αποδεκτή, ο φοιτητής πρέπει να ξαναγυρίσει στο βήµα 9 και να να συµπληρώσει την αίτηση Αλλαγής Μαθηµάτων. Στο τέλος πλέον της σπουδαστικής περιόδου, οι συντονιστές του Ιδρύµατος Αποδοχής πρέπει να συµπληρώσουν την φόρµα των Βαθµών-Μονάδων που έχει ο κάθε µαθητής σε κάθε µάθηµα που δήλωσε. Επίσης, θα πρέπει να συµπληρωθεί η πιστοποίηση διαµονής και αναχωρήσεως από τους συντονιστές του Ιδρύµατος Αποδοχής, και οι δύο αυτές φόρµες θα σταλούν στο Ίδρυµα Αποστολής. 63 4.1.9 Απαιτήσεις Συστήµατος Όπως κάθε ιστοσελίδα, έτσι και η δική µας πρέπει να καλύπτει ορισµένες ανάγκες των χρηστών. Για παράδειγµα, θα πρέπει να είναι εύχρηστη έτσι ώστε να µπορεί να χρησιµοποιηθεί από όλους τους χρήστες, γνώστες του αντικειµένου και µη. Αυτό σηµαίνει ότι το layout θα πρέπει να παραµείνει απλό και κατανοητό. Μια δεύτερη απαίτηση του συστήµατος είναι ότι πρέπει να χρησιµοποιηθεί javascript για τυχόν λάθη που µπορεί να γίνουν, όπως π.χ στο πεδίο του τηλεφώνου να γράψει κάποιος έναν χαρακτήρα. Οι προγραµµατιστές θα πρέπει να προβλέψουν και να προνοήσουν για τέτοιες περιπτώσεις. Εκεί χρησιµοποιήται η γλώσσα javascript, όπου “βλέπει” τα λάθη και µας εµφανίζει µηνυµατα µε τις διορθώσεις που πρέπει να γίνουν. 4.2 Σχεδιασµός Υλοποίησης - Υλοποίηση Παρακάτω εξηγούµε λεπτοµερώς πώς έγινε η υλοποίηση της ιστοσελίδας βήµα βήµα, δηλαδή πως δηµιουργήθηκαν οι φόρµες και η βάση δεδοµένων. 4.2.1 Φόρµες – ∆ηµιουργία και Λειτουργικότητα Όπως έχουµε ήδη επισηµάνει σε προηγούµενο κεφάλαιο, οι φόρµες που πρέπει να δηµιουργήσουµε είναι τα πιστοποιητικά άφιξης / διαµονής / αναχώρησης, την φόρµα αλλαγής µαθηµάτων και την φόρµα µε τις βαθµολογίες των µαθηµάτων. Θα αρχίσουµε την περιγραφή της διαδικασίας δηµιουργίας τους µε τα πιστοποιητικά άφιξης / διαµονής / αναχώρησης. 1. ΠΙΣΤΟΠΟΙΗΤΙΚΑ ΑΦΙΞΗΣ / ∆ΙΑΜΟΝΗΣ / ΑΝΑΧΩΡΗΣΗΣ ( CERTIFICATES OF ARRIVAL / STAY / DEPARTURE ) Τα πιστοποιητικά αυτά συµπληρώνονται από τον συντονιστή (coordinator) του εκάστοτε Ιδρύµατος Αποδοχής και στέλνονται στο Ίδρυµα Αποστολής. To πιστοποιητικό άφιξης συµπληρώνεται και στέλνεται όταν φτάσει ο φοιτητής στο Ίδρυµα Αποδοχής, το πιστοποιητκό αναχώρησης όταν ο φοιτητής φεύγει από το Πανεπιστήµιο Αποδοχής και το πιστοποιητικό διαµονής συµπληρώνεται αυτόµατα όταν συµπληρωθεί και το αναχώρησης, αφού τα πεδία που περιέχει, έχουν ήδη συµπληρωθεί στα προηγούµενα δύο. Όταν µπούµε στην σελίδα των certificates, η πρώτη φόρµα που εµφανίζεται είναι η Select Student . Εδώ, εµφανίζονται όλα τα ονόµατα και οι αριθµοί µητρώων των φοιτητών που συµµετέχουν στο πρόγραµµα Eramus για το συγκεκριµένο εξάµηνο. Κάθε όνοµα έχει δίπλα του ένα βέλος, το οποίο αν το πατήσουµε µας παραπέµπει στο πιστοποιητκό άφιξης. Εκεί, υπάρχουν όλες οι πληροφορίες για τον φοιτητή , τους συντονιστές και τα Ιδρύµατα Αποστολής και Αποδοχής. Στο τέλος της φόρµας, υπάρχει η ηµεροµηνία άφιξης που πρέπει να συµπληρωθεί από τον συντονιστή του Ιδρύµατος Αποδοχής και να σταλεί στο mail του συντονιστή Ιδρύµατα Αποστολής. Εδώ πρέπει να τονίσουµε οτι όλα τα πεδία της φόρµας αυτής είναι ήδη συµπληρωµένα,αφού είναι συνδεδεµένες οι µεταβλητές µε την βάση δεδοµένων. Συνεπώς, ο συντονιστής το µόνο στοιχείο που πρέπει να συµπληρωσει είναι η ηµεροµηνία άφιξης. Σε περίπτωση που η φόρµα αυτή έχει ήδη συµπληρωθεί, αντί για το κουµπί Submit Form, εµφανίζεται η ηµεροµηνία και ένα κουµπί Resend Form, που σηµαίνει ότι έχουµε δικαίωµα να ξαναστείλουµε την φόρµα στον συντονιστή, αλλά χωρίς να την αναµορφώσουµε. Την ίδια φόρµα έχουµε και για το πιστοποιητικό αναχώρησης, µόνο που αν η ηµεροµηνία αναχώρησης είναι µικρότερη από αυτήν της άφιξης, δε µας επιτρέπει να στείλουµε την φόρµα και µας εµφανίζει ένα µήνυµα: Departure Date Should Be After Arrival Date. Επίσης, αν το πιστοποιητικό άφιξης δεν έχει συµπληρωθεί µέχρι να συµπληρωθεί το πιστοποιητικό αναχώρησης, τότε όταν ο συντονιστής θα επιχειρήσει να στείλει το πιστοποιητικό αναχώρησης θα εµφανιστεί πάλι το ίδιο µήνυµα. 64 Όταν πλέον θα έχουν σταλεί και τα δύο πιστοποιητικά, τότε στην φόρµα Select Student θα εµφανίζεται για κάθε όνοµα η επιλογή Sended Certificates. Αν πατήσουµε πάνω σε αυτήν την επιλογή, µας παραπέµπει στο πιστοποιητικό διαµονής όπου έιναι πάλι η ίδια φόρµα µε τις προηγούµενες αλλά εµφανίζονται επίσης οι ηµεροµηνίες άφιξης και αναχώρησης, που είχαν καταχωρηθεί στην βάση δεδοµένων . Κατά συνέπεια, ο συντονιστής δεν έχει πρόσβαση στα στοιχεία της φόρµας αυτής, µόνο µπορεί να δει τα στοιχέια που έχουν αυµπληρωθεί από την βάση δεδοµένων του Ιδρύµατος. 2. TRANSCRIPT OF RECORDS Αρχικά, πρέπει να τονίσουµε ότι πρόσβαση και σε αυτήν την φόρµα έχουν µόνο οι συντονιστές των Ιδρυµάτων. Όταν επιλέξουµε να µπούµε στην φόρµα του transcript of records (δηλαδή στην φόρµα µε τις βαθµολογίες των φοιτητών ανά µάθηµα) αρχικά µας παραπέµπει στην φόρµα Select Students όπου εµφανίζονται τα ονόµατα των συµµετέχοντων φοιτητών και οι αριθµοί µητρώων τους. Πατώντας το βέλος δεξιά από το όνοµα, µας εµφανίζεται η φόρµα transcript of records. Η φόρµα αυτή περιέχει όλες τις πληροφορίες του φοιτητή, των συντονιστών και των Ιδρυµάτων που έχουν ήδη καταχωρηθεί στην βάση δεδοµένων µε την συµπλήρωση των πρώτων φορµών από τον φοιτητή. Κάτω από τα στοιχεία αυτά υπάρχει ένας πίνακας µε τα µαθήµατα που έχει επιλέξει ο φοιτητης να παρακολουθήσει κατά την διάρκεια του προγράµµατος Erasmus, ο κωδικός του κάθε µαθήµατος ,πόσες µονάδες έχει το κάθε µάθηµα στο ECTS καθώς και την διάρκεια του µαθήµατος κατά την διάρκεια του εξαµήνου. Ο συντονιστής το µόνο που έχει να κάνει συνεπώς, είναι να συµπληρώσει το πεδίο µε την τοπική βαθµολογία δίπλα σε κάθε µάθηµα. Αυτόµατα, συµπληρώνεται και το πεδίο µε την βαθµολογία στο ECTS. Τέλος, κάτω από τον πίνακα µε τις βαθµολογίες υπάρχουν πληροφορίες σχετικά µε τους βαθµούς και τις µονάδες του ECTS και πως αυτά µεταφράζονται σε κάθε χώρα ώστε να προσαρµοστούν κατάλληλα. 4.2.2 ∆οµή της Βάσης ∆εδοµένων Είναι πολύ σηµαντικό να υπάρχει µια γερή και σωστή βάση για να µπορέσει η εφαρµογή να είναι καθ' όλα λειτουργική. Βασική προυπόθεση είναι να συµπεριλάβουµε σε κάθε πίνακα όσο το δυνατόν περισσότερες πληροφορίες µε λιγότερες επαναλήψεις εγγραφών που θα κάλυπταν την διαδικασία κινητικότητας. Συνεχώς όµως προέκυπταν καινούρια δεδοµένα κατά την διάρκεια του project, κατά συνέπεια η βάση έπρεπε συνεχώς να µετατρέπεται. Αρχικά, καταγράψαµε τα δεδοµένα που θα χρειαστεί µια συνιθησµένη διαδικασία εγγραφής χρήστη, επιλογής Ιδρύµατος και µαθηµάτων. Μετά από συζήτηση µε όλα τα µέλη της οµάδας, καταλήξαµε στο συµπέρασµα ότι θα χρησιµοποιήσουµε βάση MySQL µε κωδικοποίηση UTF8. Έτσι, το κάθε ίδρυµα θα µπορεί να αποθηκεύει τα δεδοµένα στην δική του γλώσσα. Η τελική βάση δεδοµένων του website Erasmusline αποτελείται συνολικά από 15 πίνακες. Ο παρακάτω κώδικας είναι ο ένας εκ των πινάκων και τον παραθέτουµε ως παράδειγµα. Παρακάτω παρατίθεται η βάση : 65 Εικόνα 39 – Βάση ∆εδοµένων Όπως φαίνεται στο σχεδιάγραµµα, σχεδιάγραµµα ο πιο σηµαντικός πίνακας της βάσης ειναι ο erasmusstudent, erasmusstudent καθώς αποτελεί την 'καρδιά' καρδιά της βάσης και συνδέεται µε τους περισσότερους πίνακες πίνακες. Είναι απαραίτητος από την αρχή της διαδικασίας µέχρι ρι το τέλος τέλος. Ο δεύτερος πιο σηµαντικός πίνακας είναι ο erasmuslevel. Εκεί αποσαφηνίζονται τα βήµατα που πρέπει να περάσει ο µαθητής µαθητής. Ο παρακάτω κώδικας είναι η δηµιουργία του πίνακα erasmuslevel. CREATE TABLE IF NOT EXISTS `erasmuslevel` ( `idStatusLevel` int(11) NOT NULL AUTO_INCREMENT, `Name` varchar(45) DEFAULT NULL, PRIMARY KEY (`idStatusLevel`) ) ENGINE=InnoDB DEFAULT EFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; 4.2.3 ∆ηµιουργία Βάσης ∆εδοµένων Αφού έχουµε εγκαταστήσει την πλατφόρµα XAMPP και έχουµε συνδεθεί µε τον localhost, πηγαίνουµε στην αριστερή στήλη της σελίδας κι επιλέγουµε Tools → PhpMyAdmin. PhpMyAdmin Μας ανοίγει το εργαλείο PhpMyAdmin µε το οποίο θα δηµιουργήσουµε την βάση µας µας. Εάν έχουµε ήδη φτιάξει µια βάση, θα µας την εµφανίσει στην αριστερή µεριά της σελίδας βάση σελίδας, αλλιώς θα δη δηµιουργήσουµε µιουργήσουµε µια δίνοντας της όνοµα και τύπο κωδικοποίησης και στην συνέχεια πατάµε το κουµπί '∆ηµιουργία'. '∆ηµιουργία ∆ηµιουργία 66 Πλέον είµαστε έτοιµοι να εισάγουµε τους πίνακες µέσα στην βάση µας. Εικόνα 40 – Εισαγωγή πινάκων 67 Για να γίνει η εισαγωγή των πινάκων, µπορούµε είτε να γράψουµε κώδικα, είτε να έχουµε ήδη έτοιµο αρχείο και να το φορτώσουµε είτε να δηµιοργήσουµε τα δεδοµένα γράφοντας το όνοµα του πίνακα και τα στοιχεία του. Εικόνα 41 – Αναζήτηση Πίνακα Είχαµε ήδη δηµιουργήσει σε αρχείο την βάση µας, οπότε την φορτώσαµε στην βάση που µόλις φτιάξαµε. Αφού έχει ολοκληρωθεί το φόρτωµα του αρχείου, η πλατφόρµα θα µας εµφανίσει το µήνυµα “Η εισαγωγή ολοκληρώθηκε επιτυχώς, 32 ερωτήµατα εκτελέστηκαν.” και θα φαίνονται οι πινακες στην αριστερή µεριά της σελίδας. 68 Εικόνα 42 – Επιτυχής εισαγωγή πίνακα 4.2.4 ∆οµή της ιστοσελίδας Erasmusline Το layout της ιστοσελίδας ήταν υπόθεση της γερµανικής οµάδας, όµως το συναποφασίσαµε όλοι µαζί. Καταλήξαµε στο γεγονός ότι επειδή πολλοί φοιτητές χρησιµοποιούν µικρές οθόνες στους υπολογιστές τους ή netbooks, φτιάξαµε την εφαρµογή σε ένα πλαίσιο 980 pixels. Έτσι, η οθόνη θα έχει πάντα µικρό buffer για τους κέρσορες ή ότι άλλο χρειάζεται προσαρµογή σε κάθε οθόνη. Συναποφασίσαµε η ιστοσελίδα να έχει απλή εµφάνιση για να είναι εύκολα προσπελάσιµη από όλους τους ανθρώπους. Πάνω αριστερά έχουµε βάλει το λογότυπο του erasmusline και δεξιά τους φακέλους (tabs) µε τα µενού και τα υποµενού. 69 Εικόνα 43 – Αρχική σελίδα Erasmusline Εκτός από το γενικό layout της ιστοσελίδας, η οµάδα των γερµανών έπρεπε να φτιάξει και τις πληροφορίες που βρίσκονται στο tab “Info”. Στον υποφάκελο αυτό , έχουν τοποθετηθεί κάποια link που κάνουν ανακατεύθυνση σε άλλες σελίδες που περιέχουν γενικές πληροφορίες για το πρόγραµα Erasmus, για τις φόρµες που πρέπει να συµπληρωθούν, αλλά και για τους συµµετέχοντες στο πρόγραµµα αυτό. 70 Εικόνα 44 – Info Page Εικόνα 45 - Contact 71 Στο πάνω αριστερό τµήµα της ιστοσελίδας, παρατηρούµε δύο συνδέσµους , τους About και Contact. Το πρώτο περιλαµβάνει λίγες πληροφορίες για το πρόγραµµα Erasmus και το δεύτερο δίνει τα στοιχεία των ανθρώπων που µπορούµε να επικοινωνήσουµε ώστε να µας βοηθήσουν σε τυχόν απορίες. Εικόνα 46 – Erasmus Info 72 Εικόνα 47 – Partners Info Η διαδικασία µεταφοράς δεδοµένων γίνεται µε την βοήθεια της cURL βιβλιοθήκης, προκειµένου να υπάρχει µεγαλύτερη ασφάλεια και να φτάνουν τα δεδοµένα στον host server. Η µεταφορά τους γίνεται µε ένα JSON-string το οποίο έχει κρυπτογραφηθεί µε τον αλγόριθµο 3DES. To cURL είναι ένα λογισµικό που παρέχει βιβλιοθήκη και εντολές συγκεκριµένες για τη µεταφορά δεδοµένων χρησιµοποιώντας διάφορα πρωτόκολλα όπως HTTP / HTTPS. Παρέχει επίσης επαλήθευση username και password και είναι συµβατό µε τις Ipv6. Στην εφαρµογή χρησιµοποιούµε µόνο ένα µικρό τµήµα της βιβλιοθήκης αυτής. Παρακάτω παρατίθενται οι εντολές που σου προσφέρει η βιβλιοθήκη και τι σηµαίνει η καθεµία. CURLOPT_URL ∆ηµιουργεί τον προορισµό URL CURLOPT_POST Αν είναι true, τα δεδοµένα έχουν αποσταλεί σωστά CURLOPT_RETURNTRANSFER Αν είναι true, η εφαρµογή επιστρέφει µια γραµµατοσειρά CURLOPT_SSL_VERIFYPEER Αν είναι false, το λογισµικό σταµατάει την επικύρωση CURLOPT_POSTFIELDS Για να γίνει η µεταφορά µε το πρωτόκολλο HTTP Το JSON (JavaScript Object Notation) είναι file format που βασίζεται σε κείµενο για επικοινωνία µεταξύ διαφορετικών server / εφαρµογών. Αποφασίσαµε να χρησιµοποιήσουµε JSON αντί για XML για την δυναµική του χρήση. Κάθε δεδοµένο που µεταφέρεται µεταξύ δύο server, µεταφέρεται µέσα σε ένα JSON string το οποίο µπορεί να διαχειριστεί πολλούς δείκτες. Το 3DES ( Data Encryption Standard) είναι ένας συµµετρικός αλγόριθµος κρυπτογράφησης. Λόγω της τριπλής του κρυπτογράφησης, αποτελεί το πιο διαδεδοµένο αλγόριθµο. Για να γίνει η µεταφορά δεδοµένων χρειαζόµαστε τη µέθοδο, τους πίνακες και τα δεδοµένα για κάθε µέθοδο: public function dataTransfer($method, $table, $data, $idInst) { } 73 Στο επόµενο βήµα, γίνεται η µεταφορά δεδοµένων για τον host server και έχουµε ως παράµετρο το πρώτο JSON string. [ { "method":"Method 1", "params":{ "table":"Table 1", "data":{ "Data 1.1":"Value 1.1", "Data 1.2":"Value 1.2" }}}, { "method":"Method 2", "params":{ "table":"Table 2", "data":{ "Data 2.1":"Value 2.1", "Data 2.2":"Value 2.2" }}} ] Κάθε string κρυπτογραφείται σε 3DES ώστε να µη µπορεί κανένα plain text να µεταφέρεται πάνω από τον WWW. Όταν ο φάκελος φτάσει στον host server, τα δεδοµένα αποκρυπτογραφούνται σε plain text και το string σε αντκείµενο. Η µέθοδος φορτώνεται και καλείται. Η µέθοδος που αφορά τη µεταφορά φακέλων, χρειάζεται το όνοµα του φακέλου, το host institution, το user – id και τον host server: public function fileTransfer($method, $file, $idInst, $userid) { } Σε αυτήν την περίπτωση, το JSON string χρειάζεται το user-id και τον φάκελο ως παράµετρο. Όλη η υπόλοιπη διαδικασία είναι ίδια µε το απλό κείµενο. Στο layout χρησιµοποιηθήκε επίσης javascript για την επιβεβαίωση φόρτωσης της σελίδας. <script type="text/javascript"> document.observe("dom:loaded", function() { // second manual example : multicolor (and take all other default paramters) manualPB2 = new JS_BRAMUS.jsProgressBar($("elementMain"),{$progress}, { barImage : Array( "./core/js/progress/images/bramus/percentImage_back4.png", "./core/js/progress/images/bramus/percentImage_back3.png" "./core/js/progress/images/bramus/percentImage_back2.png", 74 "./core/js/progress/images/bramus/percentImage_back1.png"), onTick : function(pbObj) { return true; } }); }, false); </script> και τα υπόλοιπα τµήµατα µε html όπως πχ τα tab: {option:oNotLogged} <a href="index.php?module=home&view=home" title="home">Home</a> <a href="index.php?module=login&view=login" title="Login">Login</a> {/option:oNotLogged} Μέσα στο αρχείο layout.tpl υπάρχουν και άλλα τµήµατα κώδικα τα οποία εµφανίζονται αφού έχουµε κάνει login, όπως οι φόρµες που πρέπει να συµπληρωθούν: {option:oOffice} <div id="subnav"> <ul> <li class="level2"><a href="index.php?module=office&view=precandidates" title="Show Precandidate Forms">Show Precandidate Forms</a></li> <li class="level2"><a href="index.php?module=office&view=applics" title="Show Student Application Forms">Show Student Application Forms</a></li> <li class="level2"><a href="index.php?module=office&view=agreements" title="Show Learning Agreements">Show Learning Agreements</a></li> <li class="level2"><a href="index.php?module=learnagr_ch&view=learnagrch" title="Show Change of Learning Agreements">Show Change of Learning Agreements</a></li> <li class="level2"><a href="index.php?module=trrec&view=select" title="Show Transcript of Records">Show Transcript of Records</a></li> <li class="level2"><a href="index.php?module=abroad_stay&view=select" title="Show Certificates">Show Certificates</a></li> <li class="level2"><a href="index.php?module=office&view=extends" title="Show Extend Mobility Period">Show Extend Mobility Period</a></li> </ul> </div> {/option:oOffice} Για να γίνει η σελίδα ακόµα πιο αποτελεσµατική, η οµάδα από την Βουλγαρία ασχολήθηκε µε το κοµµάτι του deamon. Σε αυτό το στάδιο, η οµάδα δηµιούργησε µια 'αφύπνιση' κατά την οποία εάν οι φόρµες που έπρεπε να συµπληρωθούν είχαν λιγότερο από τρεις µέρες για να λήξει η προθεσµία τους, το λογισµικό στέλνει ειδοποίηση µε µηνυµα στον αντίστοιχο άνθρωπο. Το λογισµικό αυτό τρέχει µέσα στην βάση δεδοµένων µια φορά την ηµέρα. ∆ηµιουργήθηκε µε κώδικα PHP. Η οµάδα της Πορτογαλίας είχε αναλάβει το κοµµάτι των πληροφοριακών συστηµάτων. Το κοµµάτι αυτό καταλαµβάνει ένα µεγάλο τµήµα της βάσεως δεδοµένων, καθώς υπάρχουν συνέχεια δεδοµένα που πρέπει να εισαχθούν και να καταχωρηθούν. Περιέχουν αναφορές, υπολογιστικά φύλλα, γραφικά διαγράµµατα και πίνακες που µπορούν να βοηθήσουν τους ενδιαφερόµενους να αναλύσουν και να συγκρίνουν τα δεδοµένα για κάθε χώρα ξεχωριστά. Γι αυτόν τον λόγο, τα δεδοµένα που παίρνει η βάση δεδοµένων πρέπει να ανανεώνεται κάθε εξάµηνο. Η διεπαφή πρέπει να είναι απλή, εύχρηστη και ταυτόχρονα συγκεκριµένη. 75 Εικόνα 48 - EIS Η επικοινωνία µε τον εξυπηρετητή γίνεται µέσα από το Jason. Το µήνυµα – αίτηση στέλνεται στον Slave Server {"jsonrpc":"2.0","id":1, "method":"runScenario", "params":{"cube":"fact_efficacy", "columns":["dim_gender.dim_gender_id","dim_institution.institution_code"], "rows": ["dim_mobility.dim_mobility_id","measure.M1"],"filters":{}}} και µεταφράζεται : {"jsonrpc":"2.0","result":[{"Mobility Type":"both","M | fkl | Applications":1130,"M | gent | Applications":1280,"M | gun | Applications":1075,"M | isep | Applications":943,"F | fkl | Applications":1006,"F | gent | Applications":964,"F | gun | Applications":1092,"F | isep | Applications":1020}, {"Mobility Type":"intern","M | fkl | Applications":1262,"M | gent | Applications":1030,"M | gun | Applications":1356,"M | isep | Applications":967,"F | fkl | Applications":884,"F | gent | Applications":1170,"F | gun | Applications":1035,"F | isep | Applications":997}, {"Mobility Type":"study","M | fkl | Applications":976,"M | gent | Applications":966,"M | gun | Applications":1101,"M | isep | Applications":1144,"F | fkl | Applications":784,"F | gent | Applications":1087,"F | gun | Applications":851,"F | isep | Applications":1121}],"id":1} 76 Η οµάδα του Βελγίου βρισκόταν σε συνεχή επικοινωνία µαζί µας, αφού η δουλειά και των δύο οµάδων ήταν σχεδόν η ίδια. Παραπάνω, έχουµε ήδη αναφερθεί στην διαδικασία που πρέπει να ακολουθήσει ένας φοιτητής προκειµένου να ολοκληρώσει την συµπλήρωση των ηλεκτρονικών εντύπων και να συµµετάσχει στο πρόγραµµα Erasmus. Στις παρακάτω εικόνες παρατίθενται οι φόρµες που έχουµε δηµιουργήσει οι δύο οµάδες µαζί. Αρχικά, ο φοιτητής πρέπει να συµπληρώσει την φόρµα εγγραφής, για να αποθηκευτούν τα στοιχεία του στην βάση και να µπορεί απο κει και πέρα να έχει πάντα πρόσβαση απλά µε το username και το password που έχει επιλέξει. Το 'αστεράκι' δίπλα από κάθε πεδίο δηλώνει ότι το πεδίο αυτό πρέπει να συµπληρωθεί υποχρεωτικά και δίπλα στο password υπάρχει µια υποσηµείωση ότι ο κωδικός που θα επιλέξει ο φοιτητής πρέπει να περιέχει τουλάχιστον 8 χαρακτήρες. Επειδή είχαµε λίγο χρόνο στην διάθεσή µας για την ολοκλήρωση του project, δεν βάλαµε στην βάση πολλές χώρες στο πεδίο του nationality. Αυτή η πρόσθεση µπορεί να γίνει στο µέλλον. Επίσης, στην φόρµα εγγραφής ζητείται από τον φοιτητή να φορτώσει και µια φωτογραφία του, όπως συµβαίνει και στην έντυπη φόρµα. Εικόνα 49 – Register Form 77 Η φόρµα αυτή συµπληρώνεται αποκλειστικά από τους φοιτητές. Αφού συµπληρωθεί η αίτηση, τους αποστέλεται ένα mail στο email που έχουν συµπληρώσει στο αντίστοιχο πεδίο. Το µήνυµα αυτό περιέχει µέσα ένα σύνδεσµο στον οποίο ο φοιτητής πρέπει να κάνει 'κλικ' για να µπει στην σελίδα και να πιστοποιήσει την εγγραφή του. Εκτός από το login που εµφανίζεται στην αρχική σελίδα, υπάρχει και ξεχωριστό tab που µπορεί ο φοιτητής να γράψει τους κωδικούς του και να εισέλθει στις υπόλοιπες φόρµες. Εικόνα 50 - Login Στην περίπτωση που καποιος έχει ξεχάσει τον κωδικό του, υπάρχει κάτω από το πεδίο του password ένας σύνδεσµος “forgot your password”. Ο φοιτητής µπορεί να πατήσει αυτόν τον σύνδεσµο και η σελίδα θα τον πάει σε ένα καινούριο tab στο οποίο θα ζητηθεί πάλι το email του. Αφού το πληκτρολογήσει και πατήσει το κουµπί “send a new passord” , θα του αποσταλεί ένα µήνυµα, όπου θα υπάρχει ένα καινούριο password. Εικόνα 51 – Forgot Password 78 Εικόνα 52 – New Password Sent Εάν πληκτρολογηθεί λάθος το email το σύστηµα του επιστρέφει την εξής απάντηση: Προκειµένου να είναι πιο ασφαλής και συγκεκριµένη η εγγραφή του φοιτητή, σε όλες τις φόρµες που πρέπει να συµπληρωθούν έχουµε φτιάξει µε κώδικα Javascript εφαρµογές µικρές που καθοδηγούν τον ενδιαφερόµενο ώστε να συµπληρωθούν σωστά τα πεδία και να αποθηκευτούν στην βάση όλα τα στοιχεία σε ίδια µορφή. Για την διευκόλυνσή µας, χρησιµοποιήσαµε την βιβλιοθήκη jQuery Validation Engine. Το µεγαλύτερο πλεονέκτηµα της βιβλιοθήκης αυτής σε σχέση µε τις υπόλοιπες είναι ότι κάνει έλεγχο σε κάθε πεδίο της φόρµας ξεχωριστά και όχι αφού έχει ήδη συµπληρωθεί η φόρµα. Ένα άλλο πλεονέκτηµα της βιβλιοθήκης αυτής είναι ότι µπορεί εύκολα κάποιος να την ενσωµατώσει στον κώδικά του, πχ <input type=”text”class=”validate[required,custom[email]]” name=”email” /> 79 Εικόνα 53 – Javascript στην φόρµα Registration Στο πεδίο του password, µέσα στο .tpl καλείται ένα script σε javascript το οποίο ελέγχει αν το pasword που έχει πκηκτρολογηθεί είναι επαρκές ή όχι. <div class="TRdiv"> <label for="password"><span>Password: </span></label> <input value="{$password|htmlentities}" class="validate[required,custom[onlyLetterNumber]] text-input" type="password" name="password" id="password" /> <span class="req" id="msgPassword">{$msgPassword|htmlentities}</span> <script type="text/javascript"> jQuery('#password').pstrength(); </script> </div> Εικόνα 54 – Strength of password 80 Εικόνα 55 – Weak password Σε περίπτωση που κάποιος προσπαθήσει να κάνει εγγραφή στο σύστηµα ενώ έχει ήδη ξανακάνει και εισάγει το ίδιο email, η σελίδα του επιστρέφει µε την βοήθεια της javascript το µήνυµα ότι το email έχει ήδη χρησιµοποιηθεί για εγγραφή. <div class="mainDiv"> {option:oSuccess} <h3>Your email has been succesfully validated.</h3> <form action=" " method="post" enctype="multipart/form-data"> <fieldset> <legend>Login</legend> <div class="TRdiv"> <label>Email</label> <input class="field" type="text" name="Email" /> </div> <div class="TRdiv"> <label>Password</label> <input class="field" type="password" name="Password"/> </div> <div class="TRdiv"> <input type="hidden" name="formAction" id="formLogin" value="mainLogin" /> <input class="button" name="btnLogin" id="btnLogin" type="submit" value="Login"/> </div> </fieldset> </form> {/option:oSuccess} {option:oNoSuccess} <h3>Your email couldn't be validated</h3> {/option:oNoSuccess} </div> 81 Εικόνα 56 – valid email Εάν κάποιος προσπαθήσει να κάνει login χωρίς πρώτα να έχει κάνει εγγραφή στο σύστηµα, τότε του επιστρέφεται µήνυµα ότι το σύστηµα δεν τον βρίσκει και τυ υπενθυµίζει να κάνει πρώτα εγγραφή. Αυτό γίνεται µέσα απο µια function σε php που καλείται από το αντίστοιχο τµήµα του html. public function showLogin() { $this->mainTplAssigns('Login'); $this->checkLogged(); if (PlonkFilter::getGetValue('error') === '1') { $this->pageTpl->assign('errorMsg', 'Username or password is incorrect'); } else if (PlonkFilter::getGetValue('error') === '2') { $this->pageTpl->assign('errorMsg', 'We couldn\'t find you. Is it possible you don\'t have an <a href="index.php?module=register&view=register" title="Create account">account</a> yet?'); } else { $this->pageTpl->assign('errorMsg', ''); } } Μέσα στον φάκελο modules υπάρχει για κάθε µοντέλο ξεχωριστά ένα αρχείο java.tpl µέσα από το οποίο καλούνται οι συναρτήσεις της βιβλιοθήκης της jquery. Η βιβλιοθήκη είναι αποθηκευµένη στον φάκελο library → validation µέσα στο framework plonk. Παρακάτω παρατίθενται τα scripts που χρησιµοποιήσαµε για να καλούµε τις συνασρτήσεις για την φόρµα εγγραφής. <script type="text/javascript" src="./core/js/jquery/jquery-1.5.js"></script> <script type="text/javascript" src="./core/js/progressbar/js/jquery.progressbar.js"></script> <script type="text/javascript" src="./core/js/jquery/jquery.pstrength-min.1.2.js"></script> <script type="text/javascript" src="./core/js/jquery/jquery.validationEngine.js"></script> <script type="text/javascript" src="./core/js/jquery/jquery.validationEngine-en.js"></script> <script type="text/javascript" src="./core/js/jquery/jquery.MultiFile.js"></script> <link rel="stylesheet" href="./core/css/validationEngine.jquery.css" type="text/css" /> <script type="text/javascript"> jQuery(document).ready(function(){ // binds form submission and fields to the validation engine jQuery("#register").validationEngine(); }); </script> 82 Εικόνα 57 – error in login Από τη µεριά του server, ο έλεγχος σφαλµάτων γίνεται µέσα από την βιβλιοθήκη benjaminkeen.com PHP validation. Επιλέξαµε αυτήν την βιβλιοθήκη γιατί είναι εύκολο να ενσωµατωθεί στον κώδικα και να τροποποιηθεί. Όταν ο server βρίσκει λάθος στα στοιχεία, ενηµερώνει την φόρµα. private function fillRules() { $this->rules[] = "required,familyName,Last name is required."; $this->rules[] = "required,firstName,First name is required."; $this->rules[] = "required,email, Email address is required."; $this->rules[] = "valid_email,email,Please enter a valid email address"; $this->rules[] = "required,password,Password is required"; $this->rules[] = "length>8,password,Password minimum 8 characters"; $this->rules[] = "same_as,password,password2,Passwords do not match."; $this->rules[] = "required,birthPlace,Birthplace is required"; $this->rules[] = "required,mobilePhone,Phone number is required"; $this->rules[] = "required,telephone,Phone number is required"; $this->rules[] = "required,street,Street + NR = required"; $this->rules[] = "required,city,City is required"; $this->rules[] = "required,postalCode,Postal Code is required"; $this->rules[] = "is_alpha,postalCode,Only digits allowed in Postal Code"; $this->rules[] = "required,nationality,Choose a country"; $this->rules[] = "required,password2,Password 2 required"; $this->rules[] = "required,birthDate,Date wrong format";} 83 Εικόνα 58 – Javascript στην φόρµα Accomodation Η οµάδα της Ελλάδας ασχολήθηκε κυρίως µε τις φόρµες που πρέπει να συµπληρωθούν από τους συντονιστές, δηλαδή τις φόρµες άφιξης, διαµονής και αποχώρησης, αλλά και την φόρµα για την αίτηση καταλύµατος από τη µεριά του φοιτητή. Αυτό σηµαίνει ότι η οµάδα αυτή ασχολήθηκε περισσότερο µε την βάση δεδοµένων, καθώς στις περισσότερες φόρµες τα πεδία πρέπει να τραβάνε δεδοµένα κατευθείαν από την βάση δεδοµένων και να τα εµφανίζουν. Και σε αυτές τις φόρµες, έχουν χρησιµοποιηθεί οι βιβλιοθήκες για τον client και τον server για έλεγχο σφαλµάτων. Στις παραπάνω εικόνες είδαµε παραδείγµατα από τα form checking client – server. Για τα πεδία που πρέπει να συµπληρωθούν µέσα από την βάση – όπως είναι η εικόνα παρακάτω, χρησιµοποιήσαµε έναν αντίστοιχο κώδικα σαν αυτόν στην συνέχεια που δείχνει µόνο το κοµµάτι των στοιχείων που συµπληρώνονται από την βάση κατευθείαν. <div class="leftAlDiv"> <p class="minHead">Student Information</p> <div ><span class="spleft">First Name :</span><span class="spright" id="lol" name="lol">{$stFirstName}</span></div> <div ><span class="spleft">Last Name :</span><span class="spright">{$stLastName}</span></div> <div ><span class="spleft">Gender :</span><span class="spright">{$stGender}</span></div> <div ><span class="spleft">Date of Birth :</span><span class="spright">{$stDtBirh}</span></div> 84 Εικόνα 59 – Transcript of Records Μέσα στο αρχείο java.tpl του transcript of records έχουµε καλέσει όλα τα script για να γίνεται ο έλεγχος των µαθηµάτων και των αντίστοιχων βαθµών πριν αυτά εµφανιστούν στην ιστοσελίδα. <script type="text/javascript" src="./core/js/jquery/jquery-1.5.js"></script> <script type="text/javascript" src="./core/js/jquery/jquery.validationEngine.js"></script> <script type="text/javascript" src="./core/js/jquery/jquery.validationEngine-en.js"></script> <script type="text/javascript" src="./core/js/Custom/custom.js" type="text/javascript" charset="utf-8"> </script> <script type="text/javascript" src="./core/js/jquery/sorttable.js" type="text/javascript"></script> <link rel="stylesheet" href="./core/css/validationEngine.jquery.css" type="text/css" /> <link rel="stylesheet" href="./core/css/Style.css" type="text/css" media="screen"/> <script type="text/javascript"> jQuery(document).ready(function(){ jQuery("#form1").validationEngine(); }); </script> Για λόγους εµφάνισης κυρίως, αποφασίσαµε να φτιάξουµε ένα layout για την αναζήτηση των φοιτητών από τη µεριά του συντονιστή, όπου ο συντονιστής θα µπορεί να κάνει αναζήτηση του φοιτητή είτε από το ονοµατεπώνυµο είτε από τον αριθµό µητρώου. Όταν θα βρεί τον φοιτητή που επιθυµεί, δίπλα στο ονοµά του θα εµφανίχεται ένα βελάκι το οποίο πατώντας το σε παραπέµπει κατευθείαν στην φόρµα που χρειάζεται , ενώ παρέχει αυτόµατα και τα στοιχεία του φοιτητή. 85 Εικόνα 60 – Επιλογή φοιτητή Εικόνα 61 – Certficate of Arrival / Departure Εικόνα 62 – Παράδειγµα Certficate of Staying 86 Εικόνα 63 – Παράδειγµα Accomodation Το τµήµα της αίτησης εξετάσεων ήταν επίσης της Βουλγαρίας. Για την δηµιουργία του χρειάστηκαν τα ίδια εργαλεία µε τα δικά µας, PHP ενσωµατωµένη σε κείµενο HTML και MySQL για την βάση δεδοµένων. Με το κουµπί 'manage exams' στέλνεται µήνυµα στον συντονιστή του αντίστοιχου ιδρύµατος που επιθυµεί ο φοιτητής να εξεταστεί στο µάθηµα. Από τη µεριά του φοιτητή υπάρχει η επιφάνεια παρακάτω: 87 Από τη µεριά του συντονιστή υντονιστή η επιφάνεια χρήστη είναι η εξής εξής: Στο παρακάτω διάγραµµα φαίνονται τα βήµατα που πρέπει να κάνει ο φοιτητής για να δηλώσει ότι επιθυµεί να δώσει εξετάσεις. Αφού ακολουθήσει τα βήµατα αυτά αυτά, ο συντονιστής σε συνεργασία µε τον αντίστοιχο καθηγητή θα πρέπει να απαντήσει θετικά ή αρνητικά αρνητικά. Το σχεδιάγραµµα δείχνει την πορεία που πρέπει να ακολουθήσει ο συντονιστής. 88 Η αντιστοίχηση µαθηµάτων µεταξύ των δύο ιδρυµάτων δε µπόρεσε να επιτευχθεί επιτευχθεί, διότι η εν λόγω οµάδα αποχώρησε από το project και δεν υπήρχε αρκετός καιρός για να πραγµατοποιηθεί από τους υπόλοιπους. 89 5. ΑΠΟΤΕΛΕΣΜΑΤΑ Μετά από 3 µήνες δουλειάς, φτάσαµε στο τέλος της εργασίας MUTW. Τις τελευταίες 103 µέρες πετύχαµε πολλούς στόχους και είχαµε µια παραγωγική περίοδο όλοι µαζί σε µια οµάδα πανευρωπαικού τύπου. Σκοπός µας ήταν να δηµιουργήσουµε µια διαδικτυακή εφαρµογή που θα καλύπτει όλες τις απαραίτητες ανάγκες για την συµµετοχή στο πρόγραµµα Erasmus. Σε περισσότερες από 30 συναντήσεις συζητήσαµε το 'χτίσιµο' της εφαρµογής, τα δεδοµένα προβλήµατα αλλά και συντονίζαµε τη µελλοντική µας εργασία. Μετά από σκληρή δουλειά δηµιοργήσαµε τελικά την εφαρµογή Erasmusline, που ελπίζουµε να ανταποκρίνεται στις πραγµατικές ανάγκες των συµµετεχόντων, αλλά ταυτόχρονα είναι και το αποτέλεσµα της τρίµηνης οµαδικής προσπάθειας. Κάθε οµάδα είχε τους δικούς της στόχους να εκπληρώσει. Παρακάτω παρατίθενται οι στόχοι του κάθε πακέτου. P1 – Config • ∆ηµιουργία βάσης δεδοµένων (Γερµανία) • κεντρική σελίδα και µενού • σχεδιασµός ιστοσελίδας • διαχείρηση δεδοµένων • διαχείρηση χρήστη • άδεια πρόσβασης P2 – Infox (Γερµανία) • • • Ανταλλαγή πληροφοριών µε JSON και cURL ανταλλαγή αρχείων µε cURL κρυπτογράφηση P3 – Alert (Βουλγαρία) • Αποστολή µηνυµάτων σε περίπτωση εισβολής ιού P4 – Out (Βέλγιο) • • • • • Σχεδιασµός ροής εξερχόντων σχεδιασµός φόρµας πρώτη φάση υποψηφίου δεύτερη φάση υποψηφίου φόρµα διαµονής P5 – In (Ελλάδα) • • • • • Σχεδιασµός φόρµας λειτουργικότητα σε PHP επικύρωση σε Javascript, PHP, jQuery αποθήκευση – ανάκτηση δεδοµένων µε χρήση MySQL φόρµες µηνυµάτων µεταξύ συντονιστών P6 – Exam (Βουλγαρία) • • Αίτηµα φοιτητή για γραπτές εξετάσεις στο πανεπιστήµιο αποδοχής ο συντονιστής δέχεται – απορρίπτει το αίτηµα P7 – Match (Ισλανδία) • • • Ανεύρεση πανεπιστηµίου και µαθηµάτων συσχετισµός µαθηµάτων λίστα συσχετισµένων µαθηµάτων • • Ενσωµάτωση βάσης δεδοµένων στην σελίδα EIS web-interface σχεδιασµός και ενσωµάτωση P8 – Stats (Πορτογαλία) 90 Εκτός από τα απτά αποτελέσµατα, η πτυχιακή αυτή µας οφέλησε στο γεγονός ότι και οι δύο χρησιµοποιήσαµε για πρώτη φορά τα προγράµµατα αυτά , έτσι κερδίσαµε και την τεχνογνωσία των προγραµµάτων. Τέλος, το πρακτικό κοµµάτι της πτυχιακής µπορεί να χρησιµοποιηθεί µελλοντικά από άλλους προγραµµατιστές, να τροποποιηθεί και να τελειοποιηθεί έτσι ώστε να µπορέσει να βγει στο εµπόριο. 5.1 Συµπεράσµατα ∆εδοµένου του γεγονότος ότι η εργασία αυτή είναι αποτέλεσµα συµµετοχής ανθρώπων απο όλη την Ευρώπη, ένα συµπέρασµα στο οποίο καταλήξαµε έιναι ότι µε τον συνδυασµό της τεχνογνωσίας που προσέφερε η κάθε οµάδα από την χώρα της, πετύχαµε τους στόχους µας και ζήσαµε µια µοναδική εµπειρία ανάµιξης πολιτισµού και κουλτούρας. ∆ηµιουργήσαµε ένα πρότυπο πάνω στο οποίο µπορούν µελλοντικά να το εξελίξουν και να κάνουν τυχόν τροποποιήσεις. 5.2 Μελλοντική Εργασία και Επεκτάσεις Η εφαρµογή που δηµιοργήθηκε, καλύπτει τις περισσότερες από τις ανάγκες που έχουν οι συµµετέχοντες του προγράµµατος Erasmus. Ωστόσο, κυρίως λόγω της έλλειψης χρόνου, η εφαρµογή δε µπόρεσε να τελειοποιηθεί µε αποτέλεσµα να υπάρχουν κάποιες µελλοντικές εργασιές που µπορούν να γίνουν πάνω στην εφαρµογή. Παρακάτω παρατίθενται οι εργασίες αυτές. α) τα πρότυπα προσβασιµότητας Για να συνάδει µε τα πρότυπα της Ευρωπαϊκής Ένωσης η ιστοσελίδα πρέπει να ταιριάζει µε το πρότυπο “Παγκόσµιος Ιστός του W3C Initiative για την Προσβασιµότητα (WAI)” , κυρίως µε την δεύτερη έκδοση του Web Content Accessibility Guidelines (WCAG v2). Για την επίτευξη αυτού του στόχου η ιστοσελίδα πρέπει να βελτιωθεί ώστε να ταιριάζει µε όλες τις απαιτήσεις που έχουν τα άτοµα µε ειδικές ανάγκες ώστε να έχουν απεριόριστη πρόσβαση στην εφαρµογή ErasmusLine. β) την διαδικασία πρακτικής άσκησης Αποδείχθηκε ότι η διαδικασία της πρακτικής άσκησης είναι µια περίπλοκη διαδικασία. Λόγω της υψηλότερης προτεραιότητας της διαδικασίας ανταλλαγής πανεπιστήµιου δεν θα µπορούσε να ολοκληρωθεί εγκαίρως. γ) την ολοκλήρωση της Επίσηµης Σύµβασης Erasmus Η επίσηµη σύµβαση Erasmus είναι ένα έγγραφο το οποίο είναι ειδικό και συγκεκριµένο για κάθε ίδρυµα. Θα πρέπει να υπάρχει µια διαδικασία τυποποίησης που να περιλαµβάνει µια φόρµα στην εφαρµογή. δ) ένταξη ανάκτησης δεδοµένων Η καλύτερη ενσωµάτωση µεταξύ του P1-Config και P4-Out για τη βελτίωση της ροής των πληροφοριών στο ODS. ε) Γενική διόρθωση σφαλµάτων Το λογισµικό δεν υφίσταται σχεδόν ποτέ χωρίς σφάλµατα. Γενική διόρθωση σφαλµάτων πρέπει να γίνει στις µελλοντικές εργασίες. 91 6. ΒΙΒΛΙΟΓΡΑΦΙΑ ➢ ➢ ➢ mess/ ➢ ➢ ➢ ➢ ➢ PHP- βιβλιοθήκη http://phpmailer.worxware.com/ http://www.benjaminkeen.com/software/php_validation/ JavaScript- βιβλιοθήκη http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-isahttps://github.com/jquery/jquery-ui http://plugins.jquery.com/project/jQueryProgressBar http://www.eyecon.ro/datepicker/ http://plugins.jquery.com/project/maskedinput http://plugins.jquery.com/project/password_strength Internet- βιβλιοθήκη ➢ http://www.google.gr/url?sa=t&source=web&cd=5&ved=0CEMQFjAE&url=http%3A %2F%2Fwww.cnc.uom.gr%2Fservices%2Fguides%2Finternet.doc&rct=j&q ➢ http://www.google.gr/url?sa=t&source=web&cd=4&ved=0CDsQFjAD&url=http%3A %2F%2F1tee-renti.att.sch.gr%2Fimages%2FDIADIKTIO NetBeans- βιβλιοθήκη ➢ ➢ http://www.cs.uoi.gr/~zarras/se-notes/NetBeansPresentation.pdf-- netbeans http://en.wikipedia.org/wiki/NetBeans-- netbeans ➢ Βασικές Γνώσεις http://www.wikipedia.com ➢ http://www.php.net Βιβλία – Ακαδηµαικά Άρθρα ➢ The data warehouse toolkit : the complete guide to dimensional modeling / Ralph Kimball, Margy Ross. - 2nd ed. ➢ Executive Information Systems: Development Lifecycle and Building by using the Business ➢ Inteligence Tools / Lungu Ion, Vatuiu Teodora. ➢ Building Information out of Data: Executive Information System at Penn State University / ➢ The Pennsylvania State University Executive Information System Coordinating Committee ➢ Building and Optimizing Data Warehouse "Star Schemas" with MySQL / Bert Scalzo ➢ ➢ Άλλα άρθρα The Erasmus Programme December 2010 – A Statistical Overview / European Commission, Education and Culture DG ➢ Ιστοσελίδες Saiku – Next Generation Open Source Analytics / http://www.analytical-labs.com 92 ➢ ➢ Data Warehouse – GeekInterview / http://www.learn.geekinterview.com/data-warehouse/ LearnDataModeling.com / http://www.learndatamodeling.com/ ➢ Open Source Business Intelligence / http://www.squidoo.com/osbi 93