Διάλεξη 7 / Διάλεξη 7 / Διάλεξη 7

Διάλεξη 7: Παρακολουθούμε την τελευταία ενότητα, την ένατη ενότητα που θα δούμε. Θα μιλήσουμε σήμερα γενικά για τις εφαρμογές στο διαδίκτυο. Δηλαδή θα δούμε τη γλώσσα HTML, θα δούμε το πρωτόκολλο HTTP και θα δούμε κάποιες άλλες τεχνολογίες που εξοπλούνται στο διαδίκτυο. Ξέρουμε ότι στο διαδίκτυο, πο...

Πλήρης περιγραφή

Λεπτομέρειες βιβλιογραφικής εγγραφής
Κύριος δημιουργός: Γούδος Σωτήριος (Λέκτορας)
Γλώσσα:el
Φορέας:Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης
Είδος:Ανοικτά μαθήματα
Συλλογή:Φυσικής / Δίκτυα Επικοινωνίας και Υπολογιστών
Ημερομηνία έκδοσης: ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 2015
Θέματα:
Άδεια Χρήσης:Αναφορά-Παρόμοια Διανομή
Διαθέσιμο Online:https://delos.it.auth.gr/opendelos/videolecture/show?rid=20e3b6ee
Απομαγνητοφώνηση
Διάλεξη 7: Παρακολουθούμε την τελευταία ενότητα, την ένατη ενότητα που θα δούμε. Θα μιλήσουμε σήμερα γενικά για τις εφαρμογές στο διαδίκτυο. Δηλαδή θα δούμε τη γλώσσα HTML, θα δούμε το πρωτόκολλο HTTP και θα δούμε κάποιες άλλες τεχνολογίες που εξοπλούνται στο διαδίκτυο. Ξέρουμε ότι στο διαδίκτυο, που είναι ένα κατανεμένο σύστημα υπερμέσων, υποστηρίζετε τι? Υπερμέσα τι σημαίνει? Hypermedia στα γλυκά. Δηλαδή σημαίνει ότι μπορώ από μία σελίδα, από μία πληροφορία να φτάσω σε μία άλλη, με έναν απλό και εύκολο τρόπο. Ενώ ο όρος κατανεμημένο τι σημαίνει? Σημαίνει ότι εκτείνεται προφανώς ο παγκόσμιστός σε πολλούς υπολογιστές. Δεν είναι υπολογιστές, είναι πολυ υπολογιστές και μεταξύ αυτών υπολογιστών υπάρχουν διαφορετικές συνδέσεις και μπορώ έτσι να κατεβάσω διαφορετικά έγγραφα, αλλά αυτά τα ξέρουμε ήδη. Η γλώσσα του διαδικτύου, που φαντάζομαι το έχετε ξανακούσει, δηλαδή η μορφή που τα έγγραφα αυτά διατίθονται στον ιστό, είναι η HTML ή αλλιώς γνωστή ως Hypertext Markup Language. Έχει χαρακτηριστεί αυτό που λέμε γλώσσα σήμανσης, στα αγγλικά markup language. Δηλαδή τι σημαίνει αυτό, δεν είναι μια γλώσσα προγραμματισμού, δεν περιέχει εντολές, περιέχει μόνο γενικές κατεφετήρες γραμμές, δηλαδή το πώς θα εμφανιστούν κάποια πράγματα στην οθόνη, αλλά όχι ακριβείς λεπτομερές οδηγίες μορφωποίησης. Τώρα, έχουν βγει διάφορες επεκτάσεις οι οποίες μου δίνουν τη δυνατότητα για ένα έγγραφο να το μορφωποιήσω έτσι ώστε να μπορεί να εμφανιστεί σε ένα οθόνη υπολογιστή, να μπορεί να εμφανιστεί σε οθόνη tablet, να μπορεί να εμφανιστεί σε οθόνη smartphone. Όλα αυτά καταλαβαίνουν ότι έχουν διαφορετικές μορφωποίησεις, διαφορετικές απαιτήσεις, άρα λοιπόν οι επεκτάσεις της HTML μου δίνουν αυτή τη δυνατότητα. Τώρα, κάθε έγγραφο HTML αποτελείται από δύο τμήματα. Την επικεφαλίδα, το head και το σώμα, το body που περιέχει όλες τις πληροφορίες. Το κάθε έγγραφο χρησιμοποιεί αυτά που λέγουμε αιτικέτες, tags. Δηλαδή, ξεκινάει μια αιτικέτα με κάποιο όνομα και μετά από πιο κάτω κλείνει αυτή η αιτικέτα. Αλλά αυτά μπορούμε να δούμε καλύτερα λίγο σχηματικά, δηλαδή φαντάζομαι ότι αυτά τα έχετε ξαναδεί, έτσι. Δηλαδή, για παράδειγμα, κάθε έγγραφο ξεκινάει μεταρχικά με την αιτικέτα HTML και κλείνει με την HTML. Δηλαδή, όταν κλείνει, υπάρχει αυτό, είναι ακριβώς το ίδιο, απλά υπάρχει αυτό το σώμα με το ίδιο όνομα, που σημαίνει ότι κλείνει η αιτικέτα. Στη συνέχεια, υπάρχει το κομμάτι του head, εδώ θα υπάρχει ο τίτλος του έγγραφου, έτσι. Ο τίτλος τι είναι? Ο τίτλος είναι αυτό που εφανίζεται στο παράθυλο του browser. Ο τίτλος είναι αυτό εδώ το πράγμα. Το title, από εκεί πέρα. Υπάρχει το body, έτσι, που είναι το κυρίως σώμα του έγγραφου HTML, έτσι. Αυτό φαντάζομαι ότι το έχετε ξαναδεί, έτσι, δεν είναι, ε? Εντάξει, αυτό ακριβώς το ίδιο το head. Πόσες εκδόσεις υπάρχουν το HTML, έτσι. Κυκλοφορείς το 1993, ήταν η 1.0, μετά πήγαμε στην 4 το 1999. Τώρα υπάρχει η HTML 5. Η 4.0.1, που είναι η τελευταία έκδοση, έχει κατασταθεί με την XHTML, έτσι, Extensible Hypertext Markup Language. Και υπάρχει η HTML 5, είναι υποψήφια σύσταση του W3C, έτσι. Μπορεί να έχει γίνει και ήδη standard, δεν το έχω ελέγξει αυτό. Αλλά πάντως είναι αυτή που χρησιμοποιείται, η HTML 5 περιλαμβάνει όλες αυτές τις επεκτάσεις για κινητές συσκευές, έτσι, για τη δημιουργία και μόνος για κινητές συσκευές. Για παράδειγμα, αν θέλουμε να δούμε ένα κείμενο, πηχή, αυτό εδώ είναι ένα απλό τεξίδικο κείμενο, δηλαδή αυτό μπορούμε να το γράψουμε, μπορούμε να φτιάξουμε μια HTML σελίδα, απλά με ένα απλό με το Notepad, έτσι. Με ένα απλό πεξεραστή κειμένου, δεν χρειάζεται κάποιο εξειδικευμένο πρόγραμμα, έτσι. Τα εξειδικευμένα πρόγραμματα απλά μας τα δείχνουν γραφικά και μας έχουν επιπλέον τέτοιες. Αυτό εδώ, στην πραγματικότητα γίνεται αυτό, έτσι, αυτό το κείμενο. Εντάξει, τώρα υπάρχουν πολλά διαφορετικά tags, να αναφέρουμε λίγο και όλα που ανοίγουν και κλείνουν, να αναφέρουμε λίγο κάποια, δηλαδή υπάρχουν τα επίπεδα επικεφαλήδας από ένα έως έξι, έτσι. Heading 1, Heading 2. Προσέξτε τώρα, αυτό στην ουσία του, όταν λες επικεφαλήδα H1, δεν καθορίζει κάποιο μέγεθος φόντ, είναι ανάλογα με την οθόνη του υπολογιστή και τον browser. Δηλαδή, αν ανοίγουμε στη διαδότηση της οθόνης, θα στο δείξει πιο μεγάλο, θα στο δείξει το άλλο μικρότερο, κτλ. Υπάρχει το παράγραφος, έτσι, το p tag, εντάξει, η αλλαγή γραμμής είναι αυτό εδώ, έτσι, το λευκό λέει, αν βάλω κενά, διάμεσα στο κείμενο της HTML, κάπου εδώ, ας πούμε, δεν έχει νόημα. Δηλαδή, η έλλειψη αυτού σε κώδικα δεν έχει σημασία, γιατί δεν εφανίζεται στην οθόνη. Δεν έχει σημασία, όπως λέει και εδώ. Κάποιες ιδιότητες, δηλαδή, που συνήθως αυτές οι ιδιότητες θα είναι μέσα σε αυτάκια, δηλαδή, ξέρω εγώ, width ίσον 150, ξέρω εγώ, κτλ. Body background color, έτσι, teal, κτλ. Έχουν αυτά τα χαρακτηριστικά, έτσι, μέσα στα tags, πάντα μέσα στα tags. Εντάξει, όχι αιτικέτα άγγυρας, εντάξει, αιτικέτα θα έλεγα συνδέσμου, έτσι, δηλαδή, το α ξεκινάει α και κλείνει πάλι α. Αυτό σημαίνει τι, ότι εδώ μπαίνει συνδέσμος, υπερσύνδεσμος. Δηλαδή, για παράδειγμα, πηχή, ξεκινάει έτσι, my page, έτσι, είναι ασύνδεσμος στη σελίδα μου, είναι ασύνδεσμος στο Google κτλ. Οτιδήποτε είναι μεταξύ αυτούνου και αυτούνου είναι clickable, έτσι, μπορώ να το πατήσω και να πάω σε αυτή τη σελίδα. Δεν ξέρω, αυτά τα έχετε ξανακούσει, ε, ναι, οπότε να πάμε λίγο πιο γρήγορα. Παράδειγμα αυτό, εντάξει, το χαρακτηριστικό source, πάλι που μπορώ να βάλω images κτλ, έτσι, image source κτλ, ένα άλλο χαρακτηριστικό είναι ότι μπορώ να φτιάξω πίνακες, πίνακες με τα table, ανοίγει table, κλείνει table. Τώρα, υπάρχουν και άλλα tags που είναι table raw, ανοίγει, κλείνει και table data, έτσι, τα κελιά και τα λοιπά, έτσι. Μπορώ να φτιάξω πίνακες HTML, px, ο κώδικας θα ήταν αυτός, για να φτιάξω τι, αυτό εδώ, έτσι, βλέπουμε δηλαδή πως λειτουργεί το tag table. Τώρα, μια άλλη τεχνολογία που χρησιμοποιείται πάρα πολύ συχνά στον Web είναι τα λεγόμενα cascading styles, έτσι, CSS. Τι είναι αυτά, τα έχουμε ξανακούσει, είναι ένας τρόπος στην ουσία. Για αντίποιχα, ας πούμε, έχω ένα site, δεν θέλω να κάνω μορφοποιήσεις, δηλαδή με τον παλιό τρόπο θα έπρεπε να κάνω μορφοποιήσεις σε κάθε σελίδα, δηλαδή να πω σε κάθε σελίδα, το background είναι αυτό, το χρώμα ξέρω εγώ είναι αυτό, το heading 1 έχει αυτά τα χαρακτηριστικά και τα λοιπά και θα πω να τα κάνω αυτά σε κάθε σελίδα. Αντί να τα κάνω αυτά σε κάθε σελίδα, λέω ότι πάρε το still από ένα CSS έγγραφο και το οποίο περιέχει όλες τις μορφοποιήσεις για ένα ολόκληρο site, μπορεί να είναι για ένα ολόκληρο site, για όλες τις σελίδες του site. Δηλαδή, όταν το περιλαμβάνω αυτό στη σελίδα, τι σημαίνει, σημαίνει ότι το background color είναι αυτό που περιγράφεται στο cascading styles, ή το background image. Το heading 1 είναι αυτό το font που είναι Arial που είναι 12 πόντους και τα λοιπά. Δηλαδή, περιγράφονται με σαφήνια όλα τα χαρακτηριστικά του still, του site. Μια σελίδα και καταπέκτα σε ένα site. Με αυτόν τον τρόπο δεν χρειάζεται να τα γράψω πολλές φορές, είναι ορισμένα μια φορά και είναι σε αυτόν τον still. Με αυτόν τον τρόπο μπορώ εύκολα να αλλάξω τη μορφωποίηση ας πούμε ενός site, αλλάζοντας απλά το CSS. Το CSS, συγγνώμη. Δηλαδή, έχει το font, έχει νέες αιτικέτες, π.χ. υπάρχουν οι αιτικέτες font, base font, center strike κτλ. Ας πούμε το πώς χωρίζονται. Τώρα αυτό δεν φαίνεται πολύ καλά εδώ. Ποιος καθορίζει τα πρότυπα για το web? Τα καθορίζει το World Wide Web Consortium ή αλλιώς το W3C. Καθορίζει δηλαδή τις πρωτογραφές για την HTML, το CSS, την XML κτλ. Όλα αυτά, όλες αυτές τις τεχνολογίες καθορίζονται από τον οργανισμό. Η στόχη ποιή είναι του W3C? Είναι καταρχήν η καθολική πρόσβαση σε όλους μέσα από το World Wide Web. Είναι ο σημασιολογικός ιστος, δηλαδή να γίνεται καλύτερη δυνατή χρήση των πόρων και οι πόροι να αποκτούνε και νόημα, σημασία, σημασιολογικός ιστος. Και φυσικά ο αξιόπιστος ιστος να μπορεί να οδηγήσει την ανάπτυξη του στου με βάση τα σύγχρονα δεδομένα νομικά, εμπορικά και κοινωνικά. Ζητήματα που εγείρονται. Τώρα, εντάξει, πώς γίνεται ο εντοπισμός μιας σελίδας, έτσι. Μπορεί να πελαμβάνει πολλούς υπολογιστές, ένας υπολογιστής μπορεί να περιέχει πολλές σελίδες, έτσι. Άρα λοιπόν, για να γίνει ο εντοπισμός μιας σελίδας τι χρειάζεται να έχω. Χρειάζεται να έχω μια ακριβή διεύθυνση και του πρωτόκολλου αλλά και του ονόματος στο γράφο που θέλουμε. Τη διεύθυνση αυτή, έτσι, τη μορφή αυτής διεύθυνσης, την ονομάζω στο διαδίκτυο URL ή αλλιώς Uniform Resource Locator. Και η μορφή της είναι αυτή, δηλαδή είναι πρωτόκολλα, πρωτόκολλο, έτσι. Όνομα υπολογιστή, δηλαδή IP διεύθυνσης στην ουσία υπολογιστή, θύρα και φυσικά όνομα γράφ. Το πρωτόκολλο μπορεί να είναι HTTP, μπορεί να είναι, ξέρω εγώ, FTP, μπορεί να είναι κάποιο άλλο πρωτόκολλο. Όταν λέει κομπί δεν εννοεί το όνομα του υπολογιστή, εντάξει, στην ουσία εννοούμε τι? Το όνομα του υπολογιστή ξέρω www.outs.gr αλλά τι, την IP διεύθυνση του υπολογιστή. Τη θύρα, αν εννοείται συνήθως η θύρα 80, άρα είναι default θύρα, δεν χρειάζεται να το γράψουμε. Και φυσικά, τη συγκεκριμένη διεύθυνση. Δηλαδή, αυτό εδώ, όλο αυτό εδώ, δεν είναι IP διεύθυνση, το λέμε URL. Είναι διεύθυνση μέσα στον ιστό. Uniform resource locator. Το ξέρουμε ήδη, απλά τώρα μαθαίνουμε πώς λέγεται. Τώρα, υπάρχει μία, τι γίνεται όταν ζητάμε ένα έγγραφο, έτσι. Ο υπολογιστής μας στέλνει μία έτηση εκεί στον απομακρυσμένο server, ζητάμε το έγγραφο, το έγγραφο αυτό κατεβαίνει στον υπολογιστή μας, ανοίγει μία συγκεκριμένη TCP συνδέση και μόλις κατεβεί όλη η σελίδα, η TCP αυτή η σύνδεση κλείνει, έτσι. Δηλαδή, όπως θα δούμε, το HDP είναι αυτό που λέμε stateless, δηλαδή χωρίς καταστάσεις. Μπαίνω σε μία σελίδα, κατεβάζω τη σελίδα και τέλος, κλείνει η TCP συνδέση, έτσι έχω τελειώσει, το κατέβασα. Για να πάρω κλικ, να πάω σε άλλη σελίδα, πάλι πρέπει να ξεκινήσω νέα TCP σύνδεση, έτσι. Εντάξει, τώρα, για αυτό τώρα η έκδοση 5, για να το λύσουμε αυτό, αυτό προφανώς δημιουργεί πολλά προβλήματα, έτσι. Δηλαδή, το να κάνω, και μάλιστα παλαιότερα τι γίνονταν, στις προηγούμενες εκδόσεις, μέχρι την 4, για να κατεβάσω πηχή, ένα HTML κείμενα, το οποίος περιέχει και εικόνες, περιέχει και άλλα αντικείμενα, για κάθε πόρο που περιέχει, ξέρω εγώ για την εικόνα, χρησιμοποιούταν μία ξεχωριστή TCP σύνδεση, για κάθε εικόνα, ή για κάθε άλλο πόρο, ας πούμε, και τα λοιπά. Το αποτέλεσμα ήταν να έχω πολλαπλές συνδέσεις. Η νέα έκδοση του προοκόλου, η 5, εξαλήφια αυτό το πρόβλημα και λέει ότι μπορώ να κατεβάσω μία σελίδα, μόλις τους πόρους που περιέχει, με μία μόνο TCP σύνδεση. Αυτή είναι μια πολύ σημαντική διαφορά στην έκδοση 5. Τώρα, στα ελληνικά τα προγράμματα αυτά λέμε φιλομετρητές, ο browser. Τι δομή μπορεί να έχει ένα τέτοιο πρόγραμμα. Είναι καταρχήν πολύ πιο σύνθετη από έναν διακομιστή web, γιατί ο web server, ο διακομιστής web τι κάνει. Απλά δέχεται μία έκδοση, στέλνει μία σελίδα. Δεν έχει κάποια τόσο πολύπλοκη λειτουργία. Αντίθετος, ένα τέτοιο πρόγραμμα αποτελείται από έναν σύνολο από clients, έναν σύνολο διερμηναίων, interpreters, που μεταφράζουν από ένα πρωτόκολλο σε άλλο, και έναν ελεκτή. Για να δούμε δηλαδή, πως είναι ένας browser. Δηλαδή, ένας browser παίρνει είσοδο από το ποντί και το πυθρολόγιο στον ελεγκτή. Ο ελεγκτής έχει, εάν πρόκειται για, ζητάω μία σελίδα http, ενεργοποιεί έναν http client, που ζητάει τη σελίδα μέσα από το interface του δικτύου, δηλαδή πάει στο tcp, πάει στο πιο κάτω πρωτόκολλο για να την κοινωνήσει με τον άλλον υπολογιστή, ή θα μπορούσε να είναι και ένας άλλος client, δηλαδή θα μπορούσε να είναι επειχειασμένο ένας FTP client. Και από εκεί και πέρα, όταν φτάσουν τα δεδομένα, έχει έναν HTML διερμηνεά, ένα HTML interpreter, ή και άλλους τύπους interpreter, π.χ. όλα αυτά τα plug-ins, π.χ. για να παίξουμε το adobe flash, τι θέλουμε, plug-in. Άρα δηλαδή είναι ένας interpreter, τι είναι αυτό το plug-in, ένας adobe flash interpreter. Και φυσικά σε συνδυασμό και με τους drivers του υπολογιστή, τα στέλνει τελικά στην οθονή της οποιαδήποτε συσκευή. Αυτό είναι μια γενική αρχιτεκτονική browser που μπορεί να ασκεί όχι μόνο για τον υπολογιστή μας, αλλά και για το smartphone και το tablet, για όλες τις συσκευές που μπορούν να κάνουν περίγγιση στο δίκτυο. Μπορεί να έχει και διαφορετικούς clients όπως FTP, email client κλπ. Τώρα να δούμε λίγο, βλέποντας αυτά λίγο για την HTML, να δούμε λίγο για το πρωτόκολλο που μας ενδιαφέρει. Το πρωτόκολλο μεταφοράς υπερκυμένου θα λέγαμε στα αλληλεγγάτες, το ATP, το hypertext transfer protocol. Δηλαδή το βασικό πρωτόκολλο που μεταφέρει τις σελίδες. Το είπαμε ήδη, δεν είναι ομότιμο πρωτόκολλο, δηλαδή ορίζει δύο οντότητες στην ουσία, ένας πελάτης και ένας διακομιστής. Είναι client server αρχιτεκτονική, δεν είναι το ίδιο πράγμα. Τώρα είμαστε στην έκδοση 1.1 και είναι στην προκαθορισμένη θήρα επικοινωνίας του web server, είναι 80. Αυτό δεν σημαίνει ότι μπορούμε να αλλάξουμε τη θήρα επικοινωνίας και να πάει ξέρω πως στην 90, στην 80-80 πολλές φορές και τα λοιπά. Είπαμε, εξομωπή συνδέσεις TCP είναι χωρίς καταστάσεις, state-less, δηλαδή κάθε σύνδεση TCP αντιμετωπίζεται αυτόνομα, είναι αυτόνομη σύνδεση και τερματίζει αυτή τη σύνδεση όταν ολοκληρώνονται η συναλλαγή. Δηλαδή ποια συναλλαγή, κατέβασα τη σελίδα, κατέβασα τη σελίδα, τέλος ας πούμε. Κάνει δηλαδή αίτηση του web browser και απάντηση του web server. Τώρα, κάποιοι όροι κλειδιά που θα δούμε σε αυτό το πρωτόπουλο είναι π.χ. η μνήμη CAS. Τι σημαίνει αυτό, σημαίνει ότι αποθηκεύω τοπικά στο σκληρό μου δίσκο σελίδες και πολλές φορές χρειάζεται, δεν τις ανακαλώ από τη μνήμη μου, π.χ. Όρος πελάτης, client, το πρόγραμμα πελάτη, η σύνδεση, η TCP σύνδεση, φορέας, τώρα στα αγγλικά δεν θα είπαμε πως είναι αυτό, τέλος πάντων, δεν είναι ακριβώς φορέας. Το πώς θα κρατήσω ανοιχτή τη σύνδεση στην ουσία είναι αυτό. Η πύλη, το gateway, δηλαδή το να μεταφράσω, το να στείλω μια συσκευή, ένα λογισμικό, το οποίο μεταφράζει μεταξύ HTTP και ενώ σε κάποιο άλλο πρωτόκολλο που κάνει μεταφράσεις πρωτοκόλων. Το μήνυμα, το μήνυμα ποιο είναι, είναι αυτό που στέλνω εγώ στο server ότι ζητάω αυτή τη σελίδα και αυτό μου απαντάει η σελίδα, δηλαδή μου απαντάει ο άλλος το server. Το διακομιστής προέλευσης, έτσι, origin server, έτσι, δηλαδή ο αρχικός server που έχει αυτή τη σελίδα, σε αντίθεση με τον proxy. Τον όρο proxy τον έχετε ξανακούσει, τι είναι ο proxy δηλαδή, ξέρετε να μου πείτε, λέει διακομιστής μεσολάβησης, δηλαδή τι κάνει. Είναι ένα λογισμικό, στην ουσία πάλι, το οποίο σε κάποιους clients φέρεται σαν web server, ενώ σε κάποιους άλλους δρά ως client και τραβάει, δηλαδή τραβάει σελίδες από ένα απομακυσμένο web server, τις αποθηκεύει τοπικά και για μένα φαίνεται σαν web server ο ίδιος. Έτσι, γι' αυτό λέμε διακομιστής μεσολάβησης, έτσι, επώρος, resource, δηλαδή τι, οποιοδήποτε κείμενο, οποιοδήποτε, οτιδήποτε έχω μέσα στο δίκτυο. Εντάξει, διακομιστής, καταλαβαίνουμε, η σειρά, έτσι, το tunnel, δηλαδή το να μεταφέρω μέσα από η HTTP σύνδεση πληροφορίες και το user agent, έτσι, ο παράγοντας χρήσης, δηλαδή το, ο πράκτορας χρήσης θα λέγαμε, user agent, δηλαδή το πρόγραμμα, ο web browser αυτό είναι στην ουσία. Έτσι, πάλι, δηλαδή να δούμε λίγο κάποια παράδειγματα λειτουργίας για να καταλάβουμε, για παράδειγμα, έχω το user agent στη μια πλευρά, τον server στην άλλη, έχω, ζητάω, ο user agent κάνει requests, έτσι, έχει αιτήσεις, στέλνει αιτήσεις μέσα από την ίδια, μέσα από μια TCP σύνδεση και ο origin server κάνει αποκρίσεις, έτσι, response chain βλέπετε, έτσι, τώρα, αυτό, θα μπορούσα να έχω ενδιάμεσα διαφορετικούς υπολογιστές, έτσι, διαφορετικούς server, που τελικά να μην γίνει δηλαδή απευθείας η σύνδεση με τον αρχικό server, να έχω και κάποιους ενδιάμεσους server, ή μπορώ να έχω και το άλλο, να έχω εδώ, τι, ενδιάμεσους servers, αλλά και εδώ να έχω συνδέσεις που δεν είναι HTTP, έτσι, που είναι κάποιο άλλο πρωτόκολλο, που έχει FTP, έτσι, εδώ ας πούμε δεν είναι της HTTP και κάπου εδώ γίνεται η μετάφραση από το HTTP στο άλλο πρωτόκολλο και αντίστροφα, έτσι, ή μπορώ να έχω τα ενδιάμεσα συστήματα, δηλαδή ο proxy που λέγαμε, προσέξτε, ο proxy δρά, για το user agent είναι web server, για τον πραγματικό server, στέλνει HTTP requests, είναι τι, είναι draws client, ή μπορώ να έχω το ενδιάμεσο το άλλο, το gateway, τη πύλη, δηλαδή εδώ μεταφράζει, βλέπετε εδώ είναι no HTTP request, δηλαδή εγώ στέλνω σε αυτόν, αυτός έχει και HTTP interface και non HTTP interface, δηλαδή μεταφράζει από το άλλο interface που έχει το FTP σε HTTP, έτσι, μπορώ να βγω στη σελίδα, ή να έχω και ένα tunnel, μια σύραγγα, στην οποία εδώ στέλνω το, μέσα από το tunnel, δηλαδή tunnel τι σημαίνει, σημαίνει ότι εδώ αυτό το μέσα δεν είναι HTTP, είναι κάτι άλλο, περνάει μέσα από το tunnel, ενθυλακώνται δηλαδή κάπου αλλού και φτάνει τελικά το HTTP request, αυτά είναι πιθανές περιτώσεις ενδιαμέσων συστημάτων HTTP. Τώρα, η δομή ενός μηνύματος HTTP, φαντάζομαι ότι το έχετε ξαναδει αυτό, θα το έχετε ξαναδει, δηλαδή είτε αντίστοιχα θα είναι το λεγόμενο request line or status line, δηλαδή αντίστοιχα αν το στέλνει ο client ή ο server, υπάρχει μια επικεφαλήδα, υπάρχει το request header or response header, entity header και entity body, αυτή είναι η γενικότερη δομή ενός HTTP μηνύματος, δηλαδή υπάρχει το request message και το response message, αυτό που είδαμε πριν. Εντάξει, this is a request, ας το καταλαβαίνουμε, τώρα για το URL το είπαμε, για την έτηση γραμμής πάλι έχουμε, έχει το format request, μέθοδος, δηλαδή θα δούμε τι είναι η μέθοδη, είναι η μέθοδος, δηλαδή HTTP με την οποία ζητάω κάνω έτηση, θα υπάρχει ένα space, το URL η διεύθυνση και η έκδοση του HTTP, δεν θα λέει HTTP έκδοση 1.1, 1.0 ας πούμε. Εντάξει, το URL το είδαμε πριν, το μήνυμα πάντιστα είναι status line, δηλαδή θα έχει τη μορφή πάλι το HTTP version, space, status code, έχετε δει που λέει HTTP 404 not found, δηλαδή HTTP version 1.1, status code 404 ας αριθμός, status phrase, page not found, status phrase, πολύ απλό, το έχουμε δει αυτό όλοι. Δηλαδή η πιθανή μορφή απάντησης από τον server. Για παράδειγμα, όσο θέλουμε να χρησιμοποιούμε τη μέθοδο get λίγη να πάρουμε ένα, δηλαδή το αρχείο αυτό, δηλαδή θα στείλω get φέρε αυτό σε αυτή τη διαδρομή αυτό το αρχείο, έτσι. Το image αυτό είναι τύπου, δέχομαι και images που είναι GIF, δέχομαι και images που είναι JPEG, έτσι, το πρωτόκολλο είναι αυτό, εντάξει ξέρω για τα λοιπά, και εδώ του θέλει το body of the document, δηλαδή εδώ του στείλει το image, έτσι. Η request head, εντάξει το head είναι, στην ουσία, στείλε μου μόνο την επικεφαλίδα του εγγράφου, αυτό σημαίνει το head, η μέθοδος head, δηλαδή στείλε μου μόνο την επικεφαλίδα του εγγράφου, όχι όλο το εγγραφό. Εδώ τώρα τι έχω κάνει, εδώ έχω συμπληρώσει μία φόρμα και στέλνω τα δεδομένα της φόρμας στο server με τη μέθοδο post, έτσι, στέλνω κάποια φόρμα, ας πούμε και πηχή ας πούμε ή η πληροφορία εδώ του χρήστη ας πούμε και τα λοιπά και αυτός απαντάει ok. Άρα λοιπόν ήδη είπαμε και τις μεθόδους, να τις δούμε λίγο τις πιο σημαντικές, όλες δηλαδή, λοιπόν, η πιο απλή μέθοδος είναι η get, δηλαδή που λέμε δίνουμε εντολή, δίνει ο web browser εντολή στο server, έτσι, get φέρει αυτό το document, έτσι, φέρει αυτό το document όπου φαίνεται όλο το URL. Τώρα, εάν θέλουμε η get έχει ένα μειονέκτημα ότι φαίνεται σε όλο το URL, φαίνεται ακριβώς η διαδρομή του εγγράφου, έτσι, εάν δεν θέλω να φαίνεται, δηλαδή πηχεάς πούμε εισάγω στοιχεία σε μία φόρμα, έτσι, εισάγω τα στοιχεία μου, δεν θέλω όμως να φαίνονται αυτά ακριβώς στο δικτύο, θέλω να πάνε πιο προστατευμένα να φαίνονται στο URL. Άρα, λοιπόν, θα χρησιμοποιήσω εδώ τη μέθοδο POST. Με τη μέθοδο POST, στέλνω, είναι η πιο βασική μέθοδος που χρησιμοποιείται για να στέλνω, δεν συμπληρώνω στοιχεία σε φόρμα, σε φόρμα, έτσι, που γράφω το όνομά μου και τα λοιπά ή οτιδήποτε άλλο, username, login ας πούμε, όλα αυτά με τη μέθοδο POST πάνε, έτσι, είναι πιο ασφαλής μέθοδος. Και μετά από και πέρα υπάρχει η PUT για τη μεταφορά, τι, όταν θέλω εγώ να στείλω αρχείο στον server, η PUT, στέλνω εγώ το αρχείο στον server, θέλω να κάνω απλό ότι είναι αρχείο, ας πούμε, ξέρω, τον στέλνω με τη PUT και η μέθοδος HEAD που τη χρησιμοποιώ για να πάρω μόνο την HTTP την επικεφαλίδα, έτσι, για να δω κάποια πληροφορά από την επικεφαλίδα, δεν θέλω όλη την HTTP σελίδα. Εντάξει, τώρα, οι κώδικες καταστάσεων, νομίζω ότι δεν έχει σημασία, είναι απλά τραψήφι, τώρα, είπαμε ότι είναι ένα πρωτόκολλο χωρίς κατάσταση του HTTP, δηλαδή, τι εννοώ χωρίς κατάσταση, ζητάω μια σελίδα, την κατεβάζω, τέλος, τελείως, αυτό είναι. Ναι, αλλά, τι κάνω στα προγράμματα, ξέρω εγώ, στα οποία πρέπει να έχω διαρκή ελεπίδραση, πήγε, ας πούμε, σε ένα site όπου ψωνίζω, έτσι, σε ένα site ηλεκτρονικού εμπορίου, σε ένα forum, έτσι, πώς διατηρώ την κατάσταση, δηλαδή, που κάνω user name και login, πώς διατηρώ την κατάσταση, έτσι. Για να γίνει αυτό, πρέπει να το ξεγελάσω λίγο το HTTP, άρα, λοιπόν, πρέπει να χρησιμοποιήσω μερικά τεχνάσματα σε αυτή την περίπτωση. Σε αυτή την περίπτωση, ένα τέχνασμα ποιχή, ας πούμε, θα είναι να βάλω input type hidden, έτσι, κάποιες κρυφές μεταβλητές στην είσοδο, έτσι, ώστε να θυμάται μένα, όσοι φορές δίνω αυτή την κρυφή μεταβλητή, να θυμάται μένα. Ή να κάνω συνεδρίες, δηλαδή, στα αγγλικά sessions, δηλαδή, να ξεκινήσω σε άλλο επίπεδο, πάνω από το TCP, μια ειδικότερη σύνδεση. Η σύνδεση αυτή τι προϋποθέτει, προϋποθέτει ότι εγώ θα κάνω αποδοχή τι, θα έχω έναν μοναδικό αριθμό στον υπολογιστή μου, μοναδικός αυτός ο αριθμός στον υπολογιστή μου, υπάρχει στα λεγόμενα cookies. Και τα ακούς τα cookies, τα cookies τι είναι, μπισκότα, δηλαδή, σου δίνω ένα, είναι απλά ένα κειμενάκι, τι είναι, ένα αρχείο κειμένου, όχι cookies λέγονται από τα μπισκότα, είναι ακριβώς η ίδια έννοια. Είναι ένα κειμενάκι που λέει τι, έχει έναν αριθμό και έχει και την πληροφορία της ώρας και της ημέρας, δηλαδή πότε πήρα, πότε έγινε αυτή η σύνδεση ας πούμε. Βλέποντας ο άλλος, όταν λέω να διαβάζει cookies, σημαίνει ότι επιτρέπω στον άλλο web server να διαβάζει από τη δικιά μου, από το δικό μου υπολογιστή το cookie, έτσι, που πήρε. Άρα λοιπόν, διαβάζω αυτό το cookie, είναι στην ουσία ο αριθμός του session, ξέρει ότι εγώ έχω κάνει login και είμαι other user, άρα λοιπόν μπορώ να περιγηθώ στο site αυτό, χωρίς να αλλάξω κατάσταση. Και αυτά πάλι μετά από λίγο χρόνο μπορεί να αλληλίξουν, ας πούμε, να κάνω clear την cache του υπολογιστή ή κλείσω τον browser και τα λοιπά, δεν ισχύει το cookie, μετά πρέπει πάλι να ξανακάνω login και τα λοιπά, έτσι. Ή μπορεί και να ισχύει, ανάλογα. Το καταλαβαίνουμε, δηλαδή φαντάζουμε ότι όλοι έχετε δει που λέει αυτός ο υπολογιστής δέχεται cookies, έτσι. Ακριβώς τώρα μαθαίνουμε γιατί ακριβώς γίνεται αυτό. Αυτό γίνεται γιατί το HTTP δεν έχει καταστάσεις, έτσι. Ναι, τώρα τα στοιχεία επικεφαλήδες, εντάξει, δεν μας ενδιαφέρουν αυτά. Απλά, εναλλακτικά πρωτόκολλα μεταφοράς αντί για το HTTP είναι το HTTP secure ή το HTTPS, που χρησιμοποιείται για κρυπτογράφηση, έτσι. Ασφαλή μεταφορά πάνω από το HTTP και η διαφορά του HTTP 1.1 από το 1.0 είναι ότι εισάγει την... Μπορώ να κάνω πολλαπλές επίσης get από τον ίδιο browser για μια σαλίδα, έτσι, δηλαδή τις πολλαπλές συνδέσεις. Τώρα, άλλες γλώσσες σήμασεις που έχουν δημιουργεί για δικούς σκοπούς, για παράδειγμα είναι η voice.xml. Δηλαδή, η voice.xml που χρησιμοποιείται, χρησιμοποιείται σε συστήματα IVR, interactive voice response. Δηλαδή, δηλώνω με κώδικα, έχετε δει που παίρνετε ένα τηλέφωνο και λέγετε πατήστε το 1 για να κάνετε αυτό, πατήστε το 2 κτλ. Αυτό εδώ μπορεί να είναι γραμμένο σε format voice.xml. Δηλαδή, να λέει ότι αν πατηθεί το 1 παίξε αυτό το τέτοιο, αν πατηθεί το 2 κάνε αυτές τις ενέργειες. Έτσι, γι' αυτό τον τρόπο χρησιμοποιείται μια δίθια φαρμογή που χρησιμοποιείται η voice.xml. Τώρα, η άλλη μεγάλη γλώσσα που χρησιμοποιείται, έτσι, που είναι σημαντική, είναι η XML. Έχετε ακούσει τον όρο XML. Έτσι, τι είναι αυτή, είναι extensible markup language, δηλαδή extensible, δηλαδή ότι μπορεί να επεκταθεί. Δεν ορίζει συγκεκριμένα δομή, άρα μπορώ εγώ με format.xml να παραστήσω οτιδήποτε δεδομένα, έτσι, οποιοδήποτε είδους δεδομένα. Και να πω εδώ ότι και οι από πάνω γλώσσες του σημασιολογικού ιστού χρησιμοποιούν σαν βάση την XML και πάνω στο format.xml χτίζουν τις δικές τους δομές. Για παράδειγμα, μπορώ να γράψω αυτό, έτσι. Αυτό δεν ορίζεται κάπου στο πρότυπο ότι υπάρχει το tag address, έτσι. Εγώ το ορίζω, υπάρχουν προγράμματα που διαβάζουν XML parses, που διαβάζουν XML, έτσι, ή άλλα που γράφουν XML. Δηλαδή είναι ένας τρόπος που έχει γίνει πολύ διαδεδομένος να διαβάζω και να γράφω δεδομένα με αυτόν τον τρόπο, ειδικά στο Web, έτσι. Πίχη, ας πούμε, έχετε ακούσει τον όρο Web Service, υπηρεσία ιστού. Μπορεί να υπάρχει μια υπηρεσία ιστού, πίχη, η οποία ανεκτελεί πίχη τραπεζικές συναλλαγές, έτσι. Η υπηρεσία αυτή θα είναι γραμμένη σε XML, με κάποιο format XML. Τώρα, ένα άλλο βασικό που θέλω να δούμε είναι οι τύποι των διαδικτυακών εγγράφων, έτσι. Μιλήσαμε για ένα φαγητό για τους τύπους τους. Ο ένας τύπος που μάλλον το είπαμε, ψιλοίπαμε, είναι τα λεκόμενα στατικά έγγραφα, έτσι. Δηλαδή, μια σελίδα η οποία είναι γραμμένη από την αρχή μέχρι το τέλος, ας πούμε, περιέχει μια στιγμή πληροφορία, περιέχει, ξέρω εγώ, εικόνες και τα λοιπά. Μια στατική σελίδα την οποία την κατεβάζω, έτσι. Δεν αλλάζει αυτή η σελίδα. Μπορεί να είναι μια δυναμική σελίδα. Δηλαδή, για παράδειγμα, κάνω αναζήτηση στο νοτέ ένα τηλέφωνο. Αυτή η σελίδα δεν υπάρχει, μου επιστρέφει το τηλέφωνο, έτσι. Το όνομα και τη διεύθεση, ας πούμε, και το τηλέφωνο. Η σελίδα αυτή δεν υπάρχει σε εκείνο το site. Δημιουργείται εκείνη τη στιγμή δυναμικά ανάλογα με αυτά που κάνω εγώ αναζήτηση, έτσι. Δυναμική σελίδα. Δυναμικό έγγραφο. Από εκεί πέρα υπάρχουν και τα λεγόμενα active, ενεργά έγγραφα. Τι είναι αυτά δηλαδή? Δηλαδή αυτά είναι στην ουσία προγράμματα τα οποία κατά κανόνα κατεβαίνουν στον υπολογιστή μου και μπορώ αντίστοιχα να κάνω υπολογισμούς και να αλλάξουν φυσικά κατάσταση, αλλά μέσα στον υπολογιστή μου, τοπικά. Έτσι, μπορεί να αλλάζει συνεχώς κατάσταση. Είναι ένα ενεργό έγγραφο. Για παράδειγμα τα Java applets. Έτσι, έχετε ακούσει τον όρο Java applets? Τώρα θα τα δούμε εδώ. Εντάξει, τώρα πληρονοτική μεγεμιουργία της κάθε περίπτωσης έγγραφων, προφανώς ένα στατικό έγγραφο. Εντάξει, έχει απλότητα, είναι απόδοση το πιο γρήγορο να το κατεβάσεις. Το μειονέκτημά του είναι ακαμσία, έτσι, δεν μπορεί να αλλάξει, είναι στατικό. Τώρα, το δυναμικό έγγραφο είπαμε ότι έχει το πλαιονέκτημα να αναφέρει τις τρέχουσες πληροφορίες, αλλά δεν μπορεί να εμφανίσει αλλαγές σε αυτές τις πληροφορίες. Για παράδειγμα, δεν μπορεί να αλλάξει. Αν αλλάξω αυτά τα δομένα, θα πρέπει να αλλάξω τα δομένα και να ζητήσω τη σελίδα για να έχω αλλαγές. Τώρα, το ενεργό έγγραφο με το πλαιονέκτημα είναι να ενημερώνει διαρκώς τις πληροφορίες, έτσι, δηλαδή να τζαβάω απλά επειδή έχει που κάνει γραφικές παραστάσεις. Αλλά τα δομένα, κάθε φορά, κάνω τις γραφικές παραστάσεις. Δεν χρειάζεται να ξαναζητήσω πάλι έτηση, να κάνω νέα έτσι στο web server, είναι τοπικά στον υπολογιστή μου. Εντάξει, το μειονέκτημα είναι ποθανώς έχει πρόσθετο κόστος για τη δημιουργία και τη λειτουργία αυτών των εγγράφων, έτσι. Σε πολλές περιπτώσεις, όλα αυτά παρουσιάζουν και κενά ασφαλείας που μπορεί να δημιουργήσουν προβλήματα και πιο εξελιγμένα προγράμματα περίγεις, πιο εξελιγμένους browser. Το γράψιμό τους φυσικά είναι προγραμματισμός, απαιτεί προγραμματισμό και η εκτέλεση τους μπορεί να αποτελέσει έναν δυνάμι κίνδυνο ασφαλείας, έτσι. Αντίστοιχα είναι και τα ActiveX κάτι plug-ins ας πούμε της Microsoft, έτσι, κάτι αντίστοιχα με τα Java Applets. Τώρα, για παράδειγμα ας πούμε μπορώ να έχω η form HTML, έτσι, που ξεκινάει με το form και το slash form, έτσι, μπορεί να περιέχει διάφορα κουμπιά και μπορεί να δώσει, στέλνει κωδικοποιημένα τις πληροφορίες που βάζω εγώ σαν είσοδο, δηλαδή είναι μια πρώτης μορφή αλληλεπίδραση με το χρήστη. Τώρα, εδώ λίγο βέβαια ξεφεύγουμε από το δικηματοδικτήριο και πάμε στο δικηματοδικτήριο του προγραμματισμού, αλλά θα θεωρώ σημαντικά να τα ξέρουμε και αυτά, μια που κάνουμε το μάθημα. Δηλαδή από εδώ και πέρα τώρα θα ασχοληθούμε με γλώσσες προγραμματισμού στο διαδίκτυο. Υπάρχουν δύο κατηγορίες γλωσσών, υπάρχουν η client side και η server side. Δηλαδή τι σημαίνει το ένα και τι σημαίνει το άλλο. Client side σημαίνει κάτι που το κατεβάζω από το server και εκτελείται στον υπολογιστή μου, εκτελείται τοπικά στον υπολογιστή μου, στο smartphone, στη συσκευή μου. Server side σημαίνει κάτι το οποίο το ζητάω από το server, τρέχει τοπικά στο server και ο server μου στέλνει απλά το αποτέλεσμα της εκτέλεσης. Δηλαδή τώρα, τεχνολογίες διάφορες που λήγουν σε script, δηλαδή JavaScript, JScript της Microsoft, VBScript της Microsoft είναι client side, είναι γλώσσες προγραμματισμού, τις οποίες τον κώδικα τον βλέπετε, δηλαδή κατεβάζει σε μια σαλίδα και έχει ένα τέτοιο script, κάνοντας view source, θα δείτε τον κώδικα. Βλέπετε τον κώδικα που εκτελείται, ενώ σε μια περίπτωση που έχετε server side τεχνολογία δεν βλέπετε τον κώδικα, δεν ξέρετε τον κώδικα, παίρντε μόνο το αποτέλεσμα. Προφανώς το πλεονέκτημα είναι ότι μειώνει το φορτίο στο server και μειώνει τη κυκλοφορία του δικτύου, γιατί τα κατεβάζω μία φορά και μετά εκτελούνται στον υπολογιστή μου. Τώρα, όταν είναι στο δίκτυο, βέβαια εδώ το client side μου βάζει περιορισμού στι, ως προς το browser, δηλαδή θα πρέπει ο browser να υποστηρίζει αυτές τις τεχνολογίες. Αντιθέτως, στο server side δεν χρειάζεται κάτι. Χρειάζεται πιο απλούς browser γιατί τρέχει τοπικά στο server, μου στέλνει σε μένα μόνο το αποτέλεσμα, δεν βλέπω τον κώδικα, δεν ξέρω τίποτα, δεν ξέρω τι εκτελείται και έχει περισσότερη απλότητα ως προς αυτό. Τώρα, τεχνολογίες αυτές είναι το CGI που δεν υπάρχει πλέον στην ουσία. Αντάξει, υπέρλου τα active server pages, το PHP, το goal fusion, τα Java server pages και τα λοιπά, έτσι. Θα τα δούμε λίγο πιο αναλυτικά τις τεχνολογίες. Δηλαδή, έχουμε client side, έτσι, την HTML, την XML, τα cascading style sheets, γλώσσες script, όπως την JavaScript, VB Script, τα Java applets, τα active X-controllers από την Microsoft, το flash, το Adobe Flash, έτσι, το Silverlight, μια τεχνολογία της Microsoft, πάλι για τον Explorer, server side είναι τα CGI και υπέρλου, έτσι, τα έχετε ξανακούσει αυτά, το PHP, που είναι το πιο δημοφιλές έτσι, το νούμερο ένα, το goal fusion και κάποια scripting languages, δηλαδή, υπάρχουν και server side JavaScript και από κε πέρα υπάρχουν και τα active server pages της Microsoft, τα Java server pages, έτσι, η Java και τα λεγόμενα Java servlets, έτσι. Σε αντίθεση με το applet, το servlet είναι προγραμματάκια που εκτελέται στο server, έτσι. Τώρα, να τα δούμε λίγο πιο αναλυτικά, έτσι. Το Silverlight της Microsoft, το έχετε ξανακούσει, έτσι, είναι μια τεχνολογία της Microsoft, είναι plug-in για τον Explorer, νομίζω τώρα ότι υπάρχει και σε plug-in για το Mozilla, αλλά δεν είμαι βέβαιος, έτσι, νομίζω ότι υπάρχει για plug-in για το Mozilla, που χρησιμοποιεί πάλι τα τεχνολογία της Microsoft, δηλαδή το.NET framework και τα λοιπά, δεν είναι το πιο διαδομένο, μια πλατφόρμα που είναι διαδομένη είναι το Adobe Flash, έτσι, παλιέτον το Macromedia Flash, τα οποία χρειάζεται πάλι ένα ειδικό plug-in και δουλεύουμε όλους τους browser, δηλαδή και με τον Explorer και με το Mozilla και με τον Chrome, μπορεί να προσθέσει συνεχή ροή βίντεο, διαφημίσεις, διαδραστικό περιεχόμενο κτλ. Και για να πάρετε μια ιδέα πώς φτιάχνεις ένα Flash, έτσι, είναι κάτι τέτοιο, δηλαδή μοιάζει σαν κάτι τέτοιο, είναι μια παλέτα, εδώ γράφεις κώδικα, εδώ βάζεις τα γραφικά, ας πούμε, και εδώ πάλι, ας πούμε, επιλέγεις τα χρώματα, έτσι, για να πάρουμε λίγο μια ιδέα πώς κάνουμε ένα διαδραστικό πρόγραμμα σε Flash. Μία άλλη τεχνολογία client-side και αρκετά δεδομένη είναι η VBScript, έτσι, είναι η Visual Basic Script, δηλαδή έχει εντολές που θυμίζουν πάρα πολύ τη Visual Basic της Microsoft, για παράδειγμα, μέσα στην Xbox Hello World, έτσι, και βγαίνει αυτό, ας πούμε, Hello World, έτσι, αρκετά απλό, είναι γενικά, είναι αρκετά απλή σαν γλώσσα, έτσι, δηλαδή θυμίζει πάρα πολύ τη Visual Basic, δηλαδή αν ξέρει κάποιος Visual Basic είναι πάρα πολύ εύκολο να γράψει σε VBScript. Δεν είναι η πιο διαδεδομένη, βέβαια, έτσι, η πιο διαδεδομένη είναι η JavaScript, έτσι, βέβαια, εδώ μην το αυτοίσουμε με την Java, άλλο Java, άλλο JavaScript, έτσι, δεν είναι Java, έτσι, είναι μια, στην ουσία, επέκταση, είναι αντίκηση μενοστροφής γλώσσα, κάνει κάποιες επεκτάσεις στην HTML, η βασική της λειτουργία ποια είναι, η βασική της λειτουργία είναι να παρέχει κάποια διαδραστικότητα από το χρήστη, δηλαδή, για παράδειγμα, τα εφέ που γίνεται, έχετε δει που ένα συνηθισμένο εφέ τι είναι, όταν περνάω από το ποντίκι πάνω από ένα κουμπί, αυτό αλλάζει χρώμα, έτσι, αυτό γίνεται με JavaScript, συνήθως γίνεται με JavaScript, ένα πολύ συνηθισμένο εφέ, έτσι, δηλαδή, ορίζει κάποια, ή μπορεί να ορίσει πως θα κάνω upload ένα document, πως θα κάνω download άλλο document και τα λοιπά, έτσι, κάποιες τέτοιες καταστάσεις, δηλαδή, που αφορούν πάντα διαδραστικότητα με το χρήστη, μπορεί να δώσει είσοδο, μπορεί να δώσει έξοδο, να παρέχει τα αποτελέσματα και τα λοιπά, έτσι, η JavaScript βλέπουμε, γράφεται μέσα σε, όπως και οι άλλες γλώσσες, δηλαδή, μέσα σε HTML κείμενα, είτε ξεχωριστά, μπορεί να καθορίσει, δηλαδή, ο χρήστης, αυτός που γράφει τον κώδικα να πει ότι βρέσει τον κώδικα JavaScript εκεί, σε αυτό το TAD αρχείο, ας πούμε, που έχουν κατάληξη JS συνήθως, και, εάν δούμε, επαναλαμβάνω ότι, αν είμαστε οποιαδήποτε φιλομετρητή, έτσι, ανοίξουμε ένα αρχείο και πούμε ότι, κατεβάζουμε μια σαλίδα και δούμε, κάνουμε εκεί που λέει προβολή πηγαίου κώδικα, έτσι, view source code, θα δούμε και τον κώδικα στην JavaScript. Μπορεί να κάνει και cookies, εντάξει, δεν μπορεί να κάνει έναν ουσιαγραφή αρχείων, έτσι, γενικά, και αυτό είναι για λόγους ασφαλείας, δεν μπορεί να κάνει κάτι τέτοιο, δηλαδή, να σου ανοίξει αρχεία από τον υπολογιστή και να κάνει, δεν μπορεί να το κάνει αυτό, έτσι, και αυτό έχει γίνει καθαρά για λόγους ασφαλείας. Πώς βάζουμε JavaScript σε ένα αρχείο HTML, το βάζουμε ανοίγοντας τα script, έτσι, αυτές οι εντολές script, υπάρχουν διάφορες συναρτήσεις και τα λοιπά, για να δούμε λίγο κάποια παραδείγματα, δηλαδή, για παράδειγμα, αυτή εδώ, μια πολύ απλή εντολή, document.write.date, έτσι, δηλαδή, αυτό τι σημαίνει, σημαίνει ότι με το που θα ανοίξω εγγραφό, θα μου βγάλει την σημερινή ημερομηνία, το date, η συνάρτηση date, κάνει εφανίστηση με ενήμερομενία και έχει μία αντικειμενοστραφή δομή, βλέπετε, έχει document.write, έτσι, έγινε με κλάσεις και αυτή. Today is... και τα λοιπά, άρα κάθε φορά μπορεί να μου δίνει, η συνάρτηση μπορεί να το φτιάξω σαν συνάρτηση, κάθε φορά να μου δίνει την τρέχουσα ημερομηνία, έτσι, δηλαδή, δεν είναι πολλοί που λένε σε πολλά sites, δεν βλέπετε ότι με το που κατεβάζετε ότι η ώρα τώρα και ημερομηνία αυτή, έτσι, αυτό γίνεται κάπως έτσι. Βάλω και έτσι, ας πούμε, πηχή script source, ίσον αυτό και να πάει σε αυτό το source, μπορώ να έχω τέτοιες εντολές, να που σας έλεγα πριν, on mouse over κάνε αυτό, τρέξε αυτή τη συνάρτηση, έτσι, on click place order και τα λοιπά, τρέξε αυτή τη συνάρτηση και τα λοιπά, έτσι, έχει κάποιες τέτοιες, δηλαδή εντολές τι να κάνεις, πώς να επιδράσεις, όταν ο χρήστης κάνει συγκεκριμένες, δίνει συγκεκριμένες εντολές. Εντάξει, για να πάρουμε τη μήνα, για να γράψουμε κάτι δέκα φορές πηχή, ας πούμε, πηχή if username is on bob, βλέπετε ότι το format σας μοιάζει, δεν μοιάζει πάρα πολύ με εσύ, έτσι, μοιάζει πάρα πολύ με εσύ σαν format, έτσι, είναι απλό. Εντάξει, για να κάνουμε έναν υπολογισμό, για να βάλουμε κάποιο κείμενο στο project window, στο clipboard, βλέπετε ότι μπορώ να κάνω copy για κάποιο κείμενο στο clipboard, έτσι, μπορώ να κάνω, μια άλλη πολύ συνθημένη κρίση είναι ανακατεύτηση, window location, ένα σελίδα, έτσι, για να κάνω ανακατεύτηση, δηλαδή, όταν διαβάζει αυτή, πηγαίνει σε άλλη σελίδα, έτσι, δυναμικά, μπορεί να κάνει αυτά τα cookies, έτσι, set cookie, βλέπετε, το cookie συνήθως πως γινόνται με κάτι τέτοιες συναρτήσεις, document.cookie, λύσον αυτό κτλ, unset cookie, expires και τα τέτοια, έτσι, δηλαδή, μπορώ με πάρα πολύ εύκολο τρόπο να φτιάξω cookies με βάση την javascript, έτσι, τώρα, μετά την javascript, νομίζω λογικό να δούμε και μια άλλη τεχνολογία που είναι αντίστοιχη, μάλλον, όχι, δεν είναι αντίστοιχη με την javascript, αλλά η java είναι μια πλήρως αντικειμενοστραφής γλώσσα, έτσι, η οποία χρησιμοποιείται όχι μόνο για το web αλλά και για οποιοσδήποτε άλλες εφαρμογές, έτσι, φαίνοντας ότι έχετε ξανακούσει την java, έτσι, τι είναι η java, έτσι, ποιες διαφορές, είναι μια γλώσσα που μοιάζει πάρα πολύ με τη C++, έτσι, έχει αντίστοιχη δομή και πολύ εξομοιώδες με τη C++, βέβαια, είναι, στην ουσία είναι ανωτέρο επίπεδο από τη C++, γιατί κάποια πράγματα που η C++ πρέπει να τα ορίσεις, η java δεν τα αφήνει έτσι ας πούμε και γίνονται αυτοματά, π.χ., να σας πω ένα κλασικό παράδειγμα ότι η java δεν έχει pointers, έτσι, δεν έχει δίκτες, η java έχει αυτό που λέμε το garbage collection και στο τέλος, δηλαδή έχει τελευταία νέα, για να δεσμεύσεις μνημεί, αλλά δεν έχει τελευταία delete, αυτό γίνεται αυτοματά με το που κλείνει το πρόγραμμα, έτσι, το κάνει, το είναι το λεγόμανο, το garbage collection, έτσι, οπότε δεν έχεις δίκτες, γι'αυτό λέω ότι είναι ανωτέρο επίπεδο από την C++, δηλαδή έχει κάποιες περισσότερες ευκολίες σε σχέση, είναι πιο εύκολη στο να μάθει κάποιος java παρά C++ και μάλιστα σε πολλές περίπτωσης σε ξένα πανεπιστήματα θέλουν να ειδάξουν προγραμματισμό στο πρώτο εξάμινο μαθαίνουν java και στο δεύτερο C++, γιατί ακριβώς θεωρείται πιο εύκολη, τώρα, τι χαρακτηριστικά έχει, έχει αυτό που λέμε το run time environment, δηλαδή η java είναι μία γλώσσα η οποία τρέχει σε κάθε υπολογιστή, δηλαδή ο ίδιος κώδικας ακριβώς θα τρέξει σε οποιοδήποτε μηχάνημα, γιατί, γιατί έχει το συγκεκριμένο run time μηχάνημα, run time περιβάλλον, δηλαδή με βάση αυτό το περιβάλλον, το περιβάλλον αυτό που μεταφράζει τις εντολές java στο αντίστοιχο περιβάλλον του κάθε λειτουργικού συστήματος. Εντάξει, έχει και μεγάλη βιβλιοθήκη, η βιβλιοθήκη class library που σου δίνει διάφορες δεδομένα, είπαμε ότι τα ταχαραστικά σύνοδοι υψηλού παιδού είναι γενικής χρήσης, εντάξει είναι αντικειμένος στραφής, λοιπόν κάποια ώρα που λέει είναι strongly typed, ισχυρά ορισμένη, δηλαδή σημαίνει ότι όπως και στη C++ έχω ορισμένους τύπους δεδομένων, δεν γίνονται πράξεις μεταξύ δεδομένων διαφορετικού τύπου, υπάρχει στατικός έλεγχος δεδομένων, δηλαδή όλα αυτά όλα έχω στο τύπο γίνονται στατικά από το compiler και όχι σε run time και μου επιτρέπει ταυτόχρονα να έχω πολλά νήματα έτσι πολλά software threads να εκτελούνται ταυτόχρονα μέσα στο ίδιο μηχάνημα. Τώρα απλά γιατί ξέρουμε C++ να δούμε κάποιες ομοιότητες και διαφορές σε σχέση με την C++, εντάξει οι περισσότεροι τύποι δήλως βρίσκονται και σε C++, δηλαδή έχει τύπο int, τύπο w, τύπο char, όλα αυτά που υπάρχουν στη C++ υπάρχουν και στην Java, κάποιες όπως σας είπα κάποιες πολυπλοκότητες της C++ δεν υπάρχουν, δεν έχει υπερφόρτωση τελεστών, έτσι, θυμόμαστε τι είναι αυτό στη C++, operator overloading, υπερφόρτωση τελεστών, δηλαδή να μπορώ με τον ίδιο τελεστή να κάνω για διαφορετικούς τύπους δεδομένων. Δεν έχει πολλαπλή κληρονομικό, δηλαδή οι κλάσεις εδώ κληρονομούν μόνο από μια κλάση και όχι βέβαια και εμείς δεν κάναμε, ενώ στη C++ θεωρητικά μπορεί μια κλάση να κληρονομήσει από περισσότερους του ενός γονείς και φυσικά δεν έχει δίκτες, όπως σας είπα και πριν. Έχει κάποιες τέτοιες ομοιότητες. Τώρα, η Java παρέχει ολική ανεξαρτησία από πλατφόρμες. Γιατί, η λεωκή ποια είναι? Έχει το Java compiler, που είναι ένας μεταφραστής. Μεταφράζεται, δηλαδή, το αρχείο.java, το όνομα του αρχείου.class και γίνεται σε αυτό που λέμε Java bytecode, δηλαδή είναι, θα λέμε, ένας κώδικας για αυτό που ονομάζεται Java virtual machine, για ένα εικονικό μηχάνημα, όχι για κάποιο πραγματικό μηχάνημα. Και στη συνέχεια, μέσω του Java interpreter, που είναι ξεχωριστός για κάθε λειτουργικό, μπορεί να τρέξει σε κάθε ξεχωριστό μηχάνημα, δηλαδή, μέχρι εδώ είναι το ίδιο για όλες πλατφόρμες. Από εδώ και πέρα, με τον interpreter, είναι ξεχωριστό για κάθε πλατφόρμα και εδώ θα μπορούσαμε να προσθέσουμε και smartphones και οτιδήποτε. Τώρα, για το Web, είπαμε ότι υπάρχουν δύο είδους προγράμματα Java, υπάρχει η εφαρμογή, δηλαδή, ένα οποιοδήποτε πρόγραμμα, όπως κάνουμε τα προγράμματα σε C++, θα το τρέχουμε μέσα από τη γραμμή αδολής, με τον τρόπο που ξέρουμε, είτε υπάρχει το applet, το οποίο μπορεί να τρέξει μέσα από το browser. Τώρα, δούμε πως τρέχει το καθένα. Είπαμε ότι υπάρχει το compile-time-eval, δηλαδή, ο κώδικας Java μεταγλωτίζεται σε κώδικα Java bytecode, σε assembly, θα λέγαμε, του virtual machine και πέντε κατάληξη class και μετά, ας πούμε, υπάρχει ο Java interpreter, υπάρχει ο Justin Time μεταγλωτιστής και εδώ υπάρχει το runtime σύστημα. Εδώ, αυτά είναι διαφορετικά ανά λειτουργικό, έτσι, μπορούν να εξοπλισθούν για το compile και Java classes και τρέχει κανονικά, έτσι. Το Justin Time προσπαθεί να βγει στην ταχύτητα, τώρα, είπαμε ότι είναι φορητά τα προγράμματα Java, λοιπόν, για αυτό το λόγο το applet, το κάθε Java applet μπορεί να τρέξει, αυτό μου δίνει δυνατότητα να τρέξει το κάθε Java applet σε κάθε τύπο υπολογιστή, έτσι, γιατί είναι ανεξάρτητο. Αρκεί τι? Αρκεί να έχω εγκαταστήσει στον υπολογιστή μου το Java runtime environment, έτσι, δεν χρειάζεται κάτι άλλο. Αν το έχω καταστήσει, μπορεί να τρέξει το applet με τον ίδιο ακριβώς τρόπο σε κάθε μηχάνημα ανεξάρτητος του λειτουργικού, έτσι, και αυτό είναι πάρα πολύ σημαντικό, δηλαδή αυτή η φορητότητα που φέρει η Java που δεν υπάρχει σε άλλες γλώσσες, έτσι, δεν υπάρχει κάτι έτσι στο C++, ένα πρόγραμμα γραμμός στη C++ για Windows, έτσι, δεν θα εκτελεστεί με τον ίδιο ακριβώς τρόπο σε Linux, για παράδειγμα, σε Ubuntu, θέλει πολλές αλλαγές, μπορεί να θέλει πολλές αλλαγές, έτσι, ακόμα και αν έχει γραφτεί με τον ίδιο compiler, δηλαδή αν έχεις ακόμα και τον ίδιο compiler για Windows και τον ίδιο compiler για Linux, πολύ πιθανόν το πρόγραμμα θέλει αλλαγές, έτσι, δεν σίγουρα θα εκτελεστεί με τον ίδιο τρόπο, ενώ στην Java θα εκτελεστεί με ακριβώς τον ίδιο τρόπο, έτσι. Ένα παράδειγμα Java, έτσι, δεν ξέρω αν έχετε ξαναδεί, πάλι το κλασικό το Hello World, ορίζω μια κλάση την κλάση Hello World, και απλά με την println, println το τυπώνω, έτσι. Αυτό είναι ένα απλό παράδειγμα Java, έτσι, το πρώτο μου πρόγραμμα σε Java. Τώρα, είπαμε ότι για τη μονταγλότηση απλά να πω ότι χρησιμοποιούμε τον Java Compile, τον Java C, που παίρνει το κάθε αρχείο στο όνειρο αυτό που έχει την κατάληξη Java, έτσι. Στο Applet τώρα θα κάνω πάλι το ίδιο πράγμα, δηλαδή θα φτιάξω αυτό το applet.java, θα το κάνω compile, έχω αυτό το applet class, και στη συνέχεια σε μια HTML σελίδα θα βάλω αυτές εδώ τις γραμμές, δηλαδή applet code είναι αυτό, myapplet.class, πρέπει να βρίσκεται στον ίδιο director βέβαια στο web server, θα τρέξει σε αυτές τις διαστάσεις pixel, έτσι σε width και height, και μπορώ να το τρέξω είτε με ένα applet viewer, έτσι, ή μπορώ να το τρέξω με ένα browser, έτσι, να το ανοίξω σε ένα browser. Αυτά τα δήματα κάνω για να φτιάξω ένα Java applet, έτσι, δηλαδή το Hello World που είδα πριν, θα μπορούσα να το βάλω εδώ και ανοίγοντας μια σελίδα, ας πούμε, να μου βγάζει αυτό, εντάξει. Βλέπετε είναι σχετικά πάρα πολύ απλό. Τώρα, εντάξει, τώρα υπάρχουν κάποια, για παράδειγμα, κάποια applets, εδώ πάλι, ένα γενικό σχόλιο, όπως τις είχαμε τα include files, και εδώ απλά έχουμε κάποιες ετοιμές που λέει import, εδώ εισάγουμε classes, δηλαδή αυτή είναι η class applet της Java, βλέπετε java.applet και η άλλη, η awt, αυτή είναι η abstract windows toolkit, η class, που έχει διάφορες εντολές σχετικές με αλληλεπίδραση με GUI, έτσι, με το χρήστη, δηλαδή κάνει τέτοιο και τα λοιπά, έτσι, για παράδειγμα, εντάξει, αυτό σας έβαλα για παράδειγμα για να δείτε πως είναι ένα applet στην πραγματικότητα, έτσι, εντάξει, δεν κάνουμε Java στο μεταπιακό και αυτό, δηλαδή, αυτό που ο κώδικας, αυτός που είδατε πριν θα φτιάξει αυτό. Τώρα, εντάξει, για tablets τώρα δεν θα κάνουμε τίποτα άλλο, μια άλλη τεχνολογία που θα δούμε είναι, που απλά θέλω να ξέρουμε τι είναι, είναι τα active server pages της Microsoft, τώρα αυτά χρησιμοποιούν πάλι VBScript, έτσι, Visual Basic Script, πάλι χρησιμοποιούν το.NET, το framework της Microsoft, τώρα πως φορτώνει μέσα σελίδα, έχω το client, στέλνει μια αίτηση, ο server απαντάει εδώ και το στέλνει στο ASP Server Component, ας πούμε, στο ASP και το ASP του απαντάει με κάποιο τρόπο, έτσι, που εδώ μεταφράζει αυτό το script, δηλαδή την απάντηση σε HTML, έτσι ώστε να μπορεί να μούρθει η απάντηση, δηλαδή για παράδειγμα το ASP θα μπορούσε να είναι αυτή η σελίδα, τελευταία ανέωση για τώρα, ξεκινάει, εδώ αυτά ξεκινά από αυτό, αυτά τα κουτάκια, έτσι, και θα μου βγάλει αυτό το αποτέλεσμα. Έτσι, η κυρία γλώσσα εδώ, το scripting είναι πάλι VBScript, είναι τεχνολογία της Microsoft. Μια άλλη τεχνολογία server-side, τι είναι πουραστήκαμε, τα έχετε ξανακούσει αυτά, όχι, μία άλλη τεχνολογία server-side είναι το PHP, είναι η πιο διαδεδομένη τεχνολογία, δηλαδή το εύρος της sites πλέον είναι τις τάξεις του 80% και πάνω, έτσι, είναι αντικείμενος τραφής, έχει δυνατότητες πλέον αντικείμενος τραφής και το βασικό είναι ότι υποστηρίζει διασυνδέσεις με διάφορες βάσεις δεδομένων, έτσι, και με πιο διάσημη τη MySQL που είναι και open source, ας πούμε, την Oracle και τα λοιπά, ας πούμε, δηλαδή έχει τεράστια δυνατότητες και πλέον, δεν ξέρω αν έχετε ακούσει τον όρο content management system, έτσι, δηλαδή σύστημα διαχείρισης περιεχομένου, για παράδειγμα τέτοια είναι το Drupal, το Joomla, είχαμε δώσει παρελθόν τα εργασία στα αδείκτες αυτά, δεν ξέρω αν τα έχετε ξανακούσει αυτά, δηλαδή όλα αυτά είναι τι, είναι έτοιμα συστήματα σε PHP, γραμμένα σε PHP με διασύνδεση με MySQL τα οποία έχουν μια πολύ απλή εγκατάσταση και επιτρέπουν στην ουσία στον οποιοδήποτε να φτιάξει τι, να φτιάξει ένα site μέσα σε πάρα πολύ λίγο χρονικό διάστημα, έτσι, ένα πλήρες site, δηλαδή με ό,τι βλέπετε σε ένα site, με νέα ξέρω εγώ, με αλληλεπίδραση, με όλα αυτά, με διαφορετικά χρώματα και τα λοιπά, για παράδειγμα το κεντρικό site του πανεπιστημίου είναι φτιαχμένο σε Drupal, έτσι, το e-learning που μπαίνεται είναι, το πρόγραμμα πώς λέγεται, είναι το Moodle, το οποίο είναι ένα e-learning περιβάλλον γραμμένο σε PHP και με διασύνδεση με MySQL. Θέλω να πω δηλαδή τώρα ότι πλέον έχουμε περάσει πλέον από το, δεν γράφει πλέον κανείς από μόνος του κώδικα PHP, εκτός θέλω να κάνει κάτι πολύ συγκεκριμένο, αλλά χρησιμοποιεί τα έτοιμα περιβάλλοντα διαχείρισης περιεχομένου που όλα αυτά βέβαια είναι open source και φυσικά διαντίθονται δωρεάν στο διαδίκτυο, έτσι. Υπάρχει και το Magneto που είναι για e-shop, έτσι, μπορείς να φτιάξεις ένα e-shop, αν θυμάμαι καλά, ναι. Δηλαδή είναι μία γλώσσα προγραμμασμών ανοιχτού κώδικα, μοιάζει πάρα πολύ με τη C και αυτή. Αυτή είναι server-side καθαρά, δηλαδή εμείς δεν βλέπουμε τον κώδικα. Εντάξει, τώρα είναι, δεν είναι ακριβώς απλή ως αυτή, όπως όλες τις λειτουργίες όπως στην Java πρέπει να σε κλάσεις, κάποιες λειτουργίες μπορεί να σε κλάσεις, κάποιες άλλες όχι. Ενσωματώνεται ο κώδικας πάλι μέσα στην HTML, σε αυτή την περίπτωση ξεκινάνε από αυτά, δηλαδή, ό,τι ξεκινά από PHP ξεκινάει έτσι και κλείνει πάλι έτσι πριν date, έτσι. Με αυτό το χώμα πήχει, αυτό εδώ. Ή, για παράδειγμα, ξέρω εγώ, η πιο απλή εντολή το echo, έτσι, που σημαίνει γράψε στην έξοδο high mps script, έτσι. Είναι γενικά, είναι πάρα πολύ απλός, είναι αρκετά απλός ο κώδικας. Το πιο πολύπλοκο είναι οι συνδέσεις με βάση δεδομένων, έτσι. Όλα τα υπόλοιπα είναι σχετικά πολύ απλά. Γιατί, καταρχήν, είπαμε, είναι εύκολη συγκλήση. Είναι cross platform, δηλαδή, τρέχει σχεδόν σε κάθε από τους πιο διάσημους web servers, έτσι. Και όταν λέω web server, τι εννοώ, δηλαδή, αυτά που λέει μέσα Apache, Microsoft, RSS, κλπ, αυτά τι είναι? Web server, δηλαδή, όταν λέω web server, τι εννοώ, δηλαδή, το μηχάνημα, τι είναι αυτό. Ο Apache τι είναι, μηχάνημα, εε, όχι, είναι λογισμικό, έτσι. Δηλαδή, ο Apache, που είναι ο πιο δωρεάν web server για όλα τα λειτουργικά, έτσι, που είναι ο πιο διαδεδομένος web server, μετά είναι ο Microsoft, ο Internet Information Server, ας πούμε, και τα λοιπά, έτσι. Και διάφοροι άλλοι, και άλλοι που δεν υπάρχουν εδώ. Δηλαδή, η PHP θα τρέξει, γιατί, ακριβώς, τρέχει σε όλους τους web server, και σε server της Microsoft, και τρέχει φυσικά και σε όλα τα λειτουργικά συστήματα, και σε ένα πολύ μεγάλο αριθμό βάσεων, αλλά, επαναλαμβάνω, το πιο, η πιο συνηθισμένη είναι η MySQL, δηλαδή, και γιατί έχει και ο DPC Driver, μπορεί να τρέξει και την access, έτσι, μπορεί να χρησιμοποιήσεις και βάση access. Και φυσικά, και με τις βάσεις της Oracle. Τώρα, την MySQL, νομίζω, την έχει πάρει Oracle, αν δεν κάνω λάθος, ή όχι, δεν είμαι σίγουρος τώρα, τέλος πάντων. Την Java, πάντως, την έχει πάρει Oracle. Τώρα, είπαμε ότι είναι δωρεάν, είναι ανοιχτός κώδικας και τα λοιπά, έτσι, και υπάρχουν πολλές βιβλιοθήκες, δηλαδή, μπορείτε να βρείτε πάρα πολύ δωρεάν, διαθέσιμο κώδια για PHP στο δίκτυο, που να κάνει σχεδόν οτιδήποτε, έτσι. Δηλαδή, δεν χρειάζεται να γράψετε κώδικα, απλά να τροποποιήσετε κώδικα που θα βρείτε στο δίκτυο. Εντάξει, είναι ελεύθερο. Πώς δουλεύει τώρα πάλι, πάλι δουλεύει με το ίδιο τρόπο, δηλαδή, ο client πάλι ζητάει ένα HTML, ένα PHP script, αυτός επικοινωνεί με το web server και εκτελεί το script στο web server και ο web server επιστρέφει τι? Επιστρέφει το αποτέλεσμα εκτέλεσης του PHP. Και τώρα εδώ θα σας δείξω την αρχιτεκτονική εντάξει, δεν έχει να κάνει και πάλι με τα δίκτυα, αλλά πάλι με βάσεις δεδομένων κυρίως. Να δούμε λίγο πώς μπορεί να αλληλεπιδράσει ένας χρήστης, έτσι, η λεγόμενη three tier architecture, έτσι, σε τρία στάδια αρχιτεκτονική στο web. Ποια είναι αυτή, δηλαδή, μπορεί να επιδράσει με τη φωνή, έτσι, με επαφή, με όραση, με μηνύματα SMS, έτσι, μέσω του browser. Να στείλει HTTP, με το πρωτόκολλο HTTP, επίσης. Να γίνουν διάφορα εδώ, στο web server, PHP σενάρια. Πυχή να ψάξει με σεβιά σε μια SQL βάση δεδομένων, άρα να πάρει εδώ την απάντηση και να το επιστραφούν αυτά σε μοφή HTML. Ή μπορεί να υπάρχει ένα άλλο εφαρμογή πελάτη, έτσι, που πάλι να αλληλεπιδράσει με το web server, είτε να καλέσει κάποιες υπηρεσίες web services απομακρυσμένες, έτσι. Αυτό θα είναι ένα γενικό παράδειγμα αυτής της αρχιτεκτονικής. Και λέμε σε τρία στάδα, γιατί υπάρχει το πρώτο στάδιο που είναι τι, το interface, έτσι, το αρχικό το web interface. Μετά έχουμε το ενδιάμεσο στάδιο που είναι ο server, έτσι, που τρέχει το PHP. Και το τρίτο στάδιο που είναι στην ουσία η βάσης δεδομένων. SQL τι είναι ξέρουμε, όχι, πώς θα τα ακούτε, έτσι. Η SQL τι είναι, είναι η γλώσσα, στην ουσία η γλώσσα, η πιο διαδεδομένη πλέον γλώσσα, αναζήτησης και διαχείρισης μιας σχεσιακής βάσης δεδομένων. Αυτό θα μου πείτε τι είναι σχεσιακή βάσης δεδομένων. Μια βάση που ορίζει πίνακες που έχουν μεταξύ τους διαφορετικές σχέσεις, έτσι. Ας μην επεκτάχθουμε άλλο, δεν κάνουμε βάση δεδομένων. Αυτό πάνω κάτω, έτσι. Μια άλλη τεχνολογία, το Cold Fusion, δεν είναι πλέον πολύ διαδεδομένη, πάλι χρησιμοποιεί και αυτή, είναι server-side, ας πούμε, και τα λοιπά. Έχει και μια γλώσσα Cold Fusion Markup Language. Και φτάσαμε να δούμε σε αυτή τη σελίδα. Αυτά τα στατιστικά, βέβαια, είναι του Ιανουαρίου 2013. Εάν μπείτε στη σελίδα w3text.com, θα βρείτε τα φετινά στατιστικά. Δηλαδή, τι μου λένε αυτά τα στατιστικά. Είναι ένα πολύ καλό site που μου δίνει στην ουσία την εξάπλωση των διαφόρων τεχνολογιών. Δηλαδή, μου λέει ότι για τα client-site, JavaScript χρησιμοποιεί το 91%, το 92%, για το Flash χρησιμοποιεί το 20%, Silverlight αυτό, η Τζάδα μόνο αυτό, έτσι, δίνει την τρέχουσα εικόνα και αυτά τα ποσοστά από χρόνια σε χρόνο αλλάζουν γενικά, έτσι. Βλέπετε, όλοι θα δείτε, αν μπείτε μέσα για το 2015, θα δείτε διαφορετικά στατιστικά. Για το 2015, διαφορετικά στατιστικά. Και προτείνω να μπείτε. Μου δείχνει απλά πόσο τελικά, δηλαδή, γιατί, από αυτές τις τεχνολογίες, αν με ρωτήσει κάποιος, ποιες είναι αυτές που αξίζει να μάθω, αυτό που έχει να κάνει κανείς, είναι να μπει σε αυτό το share και να δει τα ποσοστά. Έτσι, να μάθω να γράφω, θα μπορούσε να δει κάτι τέτοιο. Ή αντίστοιχα για server-side, εντάξει, για το 2015, να πω ότι το ποσοστό του PHP έχει γίνει πάνω από 80%, το οποίο και πέρα έχει το ASP, το.NET, της Java, το Colfusion, το Pel, η Ruby, έτσι. Η Ruby είναι μια άλλη γλώσσα αντικειμενοστραφούς προγραμματισμού, έχει κερδίσει κάποια, πάλι για το Web, έχει άνοδο τελευταία, αλλά όχι τόσο σημαντική όσο το PHP. Έχει και φυσικά το Python, έτσι. Τα στατιστικά, δηλαδή, μου δίνουν τι, τα διάφορα, τα ποσοστά των Web-sites και τι τεχνολογίες χρησιμοποιούν. Λοιπόν, οπότε κάπου εδώ τελειώσαμε και, αυτή την ενότητα.