[Powered by Google Translate] [Εβδομάδα 8]
[David J Malan] [Πανεπιστήμιο του Χάρβαρντ]
[Αυτό είναι CS50.] [CS50.TV]
>> Καλώς ήρθατε και πάλι.
Αυτό είναι CS50, και αυτή είναι η αρχή της εβδομάδας 8.
Ένα ζευγάρι των ευκαιριών αυτή την εβδομάδα,
μεταξύ των οποίων και αυτή η συζήτηση εδώ, στην οποία ορισμένα τρόφιμα θα πρέπει να υπηρετήσει.
Για περισσότερες λεπτομέρειες δείτε τις διαφάνειες που είναι σε απευθείας σύνδεση.
Και επίσης ένα άλλο γεγονός αυτή την εβδομάδα από τη δική μας Carriero Thomas.
Είναι ένας από τους πρώην συντρόφους διδασκαλίας κεφάλι CS50 ο οποίος είναι τώρα στο Dropbox,
και αυτός είναι ο τύπος που μας γαντζώθηκε με το ξέρετε τι,
οπότε αν θέλετε περισσότερα από το κεφάλι τους για να μιλήσουμε σήμερα το απόγευμα για Dropbox και περισσότερο.
CS50 γεύμα είναι αυτή την Παρασκευή.
Κάντε μαζί μας εάν είστε σε θέση, 1:15, ως συνήθως, σε Fire and Ice.
>> Και τώρα έχουμε βουτήξει σε κάτι που ονομάζεται Σεμινάρια.
CS50 Σεμινάρια μας, ανάκληση, είναι αυτά τα προαιρετικά μαθήματα υπό την ηγεσία των υποτρόφων διδασκαλία
και φυσικά οι βοηθοί και οι φίλοι του μαθήματος,
λαοί από μια ομάδα στην πανεπιστημιούπολη ονομάζεται ABCD, η οποία είναι μια ομάδα από
technophiles στην πανεπιστημιούπολη, καθώς και μια ομάδα που ονομάζεται HCS,
το Χάρβαρντ Computer Society, φοιτητές οι οποίοι ενδιαφέρονται ομοίως στην πληροφορική.
Το φετινό ρόστερ των σεμιναρίων περιλαμβάνει σεμινάρια για Android και iOS και JavaScript
και PHP, Unix, Vim, και περισσότερο, έτσι ώστε να συνειδητοποιήσουν ότι τα σεμινάρια αυτά έρχονται.
Αν θέλετε να RSVP για οποιοδήποτε από τους επικεφαλής σε αυτό το URL εκεί.
Στη συνέχεια, θα δημοσιεύσετε στην ιστοσελίδα του μαθήματος τους χρόνους και τόπους από τη στιγμή που θα οριστικοποιηθούν.
Αλλά ξέρετε αξίζει εκεί 5 χρόνια της προηγούμενης σεμινάρια διαθέσιμα στο διαδίκτυο,
πολλές από τις οποίες εξακολουθούν να είναι πάρα πολύ ρεύμα από την άποψη των τεχνολογιών μπορεί να
θέλετε να παίξετε με τα έργα για την τελική σας, έτσι ώστε το κεφάλι εκεί για μερικές διαθέσιμα βίντεο τους.
>> CSS, όσοι από εσάς είναι εξοικειωμένοι με CSS ήδη,
τι είναι αυτό με λίγα λόγια;
Τι είναι το CSS;
Είναι επικαλυπτόμενα φύλλα στυλ, και τι σημαίνει αυτό;
Τι σημαίνει ότι το κάνει για μας, CSS;
Εντάξει, ας ζεσταθεί με μια πιο εύκολη, HTML, Hypertext Markup Language.
Τι σημαίνει ότι το κάνει για μας;
Όποιος καθόλου;
Είναι πραγματικά περίεργο να πάρει αυτές τις ερωτήσεις.
HTML, Hypertext Markup Language.
Ναι; Όχι;
[Ακούγεται ανταπόκριση των φοιτητών]
Εντάξει, καλά, αυτό μας επιτρέπει να επισημάνετε κείμενο για να εμφανιστεί σε ένα πρόγραμμα περιήγησης στο web.
Δεν είναι μια γλώσσα προγραμματισμού που.
Είναι πράγματι μια γλώσσα σήμανσης, που σημαίνει ότι το πρόγραμμα περιήγησης καθοδηγεί πώς να εμφανίσετε
πληροφορίες, έτσι ώστε η απλούστερη ενσάρκωση αυτού όπως είδαμε
είναι κάτι εξαιρετικά απλό, όπως boldfacing, ανοιχτό βραχίονα β κλειστό βραχίονα λέει
κάνουν αυτό το κείμενο έντονο, και αυτό είναι πραγματικά ακριβώς ένας από τους πολλούς τρόπους
στο οποίο μπορούμε να το κάνουμε αυτό, και μάλιστα, αυτές τις μέρες μια καλύτερη προσέγγιση
να stylizing ιστοσελίδα σας, κάνοντας τα πράγματα έντονους και πλάγιους χαρακτήρες
και στο κέντρο και να αιτιολογούνται και τα παρόμοια, δεν γίνεται μέσω HTML ετικέτες μόνο
αλλά μάλλον με μια τεχνική που ονομάζεται CSS, επικαλυπτόμενα φύλλα στυλ.
Αυτή είναι μια γλώσσα μόνο του.
Είναι πάρα πολύ δεν είναι μια γλώσσα προγραμματισμού, αλλά-
ο καθένας, αυτό είναι Dan, ο οποίος συνεχίζει να είσαστε μαζί μας.
Μερικές τεχνικές δυσκολίες. Όχι ένα πρόβλημα.
>> CSS μας επιτρέπει να στυλιζάρω μια σελίδα
θέτοντας τα λεγόμενα ιδιότητες, γι 'αυτό ας ρίξουμε μια ματιά σε αυτό
μέσω μερικά βασικά παραδείγματα.
Επιτρέψτε μου να πάω στη συσκευή σήμερα.
Έχω την πηγή 8 κατάλογο Δευτέρα εδώ,
και είμαι πρόκειται να πάει σε έναν κατάλογο που ονομάζεται CSS, όπου έχουμε ένα σωρό
από τα αρχεία μας περιμένει εδώ,
και σε αυτό το φάκελο που έχουμε, για παράδειγμα, από search0.html τελευταία φορά.
Τώρα, με την ανάκληση search0 φύγαμε για αυτή τη σημείωση
από το είδος της εφαρμογής Google ή πολύ απλά το μπροστινό τέλος για μια εβδομάδα ή έτσι πριν,
και παρατηρήστε ότι είχαμε κάποιες νέες ετικέτες εκεί.
Είχαμε h1 για ένα μεγάλο, τολμηρό τίτλος,
μορφή, η οποία μας επέτρεψε να έχουμε πραγματικά μια φόρμα HTML για την είσοδο του χρήστη.
Δράση, ποιο ήταν το νόημα της δράσης ενός χαρακτηριστικού
στην ετικέτα HTML μορφή;
Ποια ήταν η έννοια της παρούσας, η δράση;
Απλά θα το κάνω αυτό σήμερα.
Δράσης είναι ο προορισμός όπου το έντυπο θα πρέπει να υποβληθεί.
Το γεγονός ότι η δράση που λέει = "google.com / search"
σημαίνει ότι όταν ο χρήστης κάνει κλικ στο κουμπί υποβολής ή το ισοδύναμο
οποιαδήποτε μορφή πεδία συμπλήρωσαν πρόκειται να αποσταλεί όχι στον server μας
ή συσκευή μας, αλλά μάλλον με τη συγκεκριμένη διεύθυνση URL στο Google.
Και η μέθοδος πρόκειται να χρησιμοποιήσετε καλείται να πάρετε,
και να πάρει, προς το παρόν, είναι απλώς μια τεχνική για τη μεταβίβαση πληροφοριών μαζί με έναν web server
μέσω του URL, οπότε ας ρίξουμε μια γρήγορη ματιά πίσω στο πώς αυτό λειτουργεί.
>> Σημειώστε ότι υπάρχει μια είσοδος της οποίας το όνομα είναι q
τύπος του οποίου είναι το κείμενο και στη συνέχεια μια δεύτερη είσοδο του τύπου υποβάλουν
αξία των οποίων είναι CS50 Αναζήτηση, και μάλιστα, αν ανοίξουμε αυτό το αρχείο εδώ,
search0.html, είναι μια εξαιρετικά απλή μορφή,
και αν ψάχνω για κάτι σαν επιστήμη των υπολογιστών
και να χτυπήσει στη συνέχεια, πληκτρολογήστε ή κάντε κλικ στο CS50 Αναζήτηση
παρατηρήσετε ότι αυτό που συμβαίνει είναι να πάρει πέρα ​​από το Google
Έχω συγκεκριμένα καταλήξαμε σε αυτό το URL στο πάνω μέρος,
google.com / search? q = + επιστήμη υπολογιστών,
και της επιστήμης υπολογιστών είναι προφανώς αυτό που θα πληκτρολογήσει μέσα
Το + σημαίνει ακριβώς αυτό είναι όπου ένα κενό διάστημα ήταν,
και έχει κάνει από το πρόγραμμα περιήγησης μόνο για να βεβαιωθείτε ότι δεν υπάρχει
σύγχυση και λευκό χώρο στην πραγματική διεύθυνση URL.
Και τότε q, φυσικά, είναι το όνομα της παραμέτρου.
Εμείς δεν έχουμε δει πώς εμείς, ο προγραμματιστής, μπορούν να έχουν πρόσβαση στην πραγματικότητα q ακόμα.
Μπορούμε να υποθέσουμε ότι η Google ξέρει τι να κάνει με αυτό εδώ,
αλλά εμείς θα φτάσουμε εκεί σε εύθετο χρόνο σήμερα.
>> Αλλά επιτρέψτε μου να ρίξουμε μια ματιά σε αντί search1.html,
το οποίο φαίνεται λίγο διαφορετική, διότι αποφάσισα ότι αυτή η μορφή εδώ ήταν λίγο κουτσός.
Θέλω να πω, είναι στην πάνω αριστερή.
Δεν υπάρχει πραγματικά καμία αισθητική σε αυτό, και γι 'αυτό θέλω να στυλιζάρω αυτό
λίγο περισσότερο όπως το Google, του οποίου η αρχική σελίδα, την ανάκληση,
ακόμα κι αν δεν μπορείτε να το επισκεφτείτε ότι συχνά, μοιάζει αυτό σήμερα στις Απόκριες.
Αν αντί να ανοίξει την έκδοση 1 του παρόντος αρχείου, αναζήτηση 1.html, το έχω στο κέντρο.
Ακόμα αρκετά άσχημο, αλλά τουλάχιστον τώρα έχω αρχίσει να ελέγχει την αισθητική αυτής της σελίδας,
όχι μόνο η σήμανση επάνω τους.
Ας ρίξουμε μια ματιά σε αναζήτηση 1, και υπάρχει πραγματικά μόνο μία διαφορά εδώ,
η οποία θα μπορούσε να πηδούν έξω σε σας, ή ίσως όχι,
αλλά ποια είναι η μια γραμμή ή απόσπασμα της διαφοράς;
>> Υπάρχει αυτό το χαρακτηριστικό στυλ, έτσι ώστε να αποδεικνύεται ότι σε HTML
περισσότερα στοιχεία, οι περισσότερες ετικέτες μπορεί να έχει ένα χαρακτηριστικό στυλ τους,
και μέσα από αυτό το χαρακτηριστικό στυλ είναι εισηγμένη στο χρηματιστήριο σειρά,
και ότι αναφέρεται string είναι CSS.
Μπορείτε να βάλετε επικαλυπτόμενο φύλλο στυλ εκεί
καθορίζοντας το όνομα ως ιδιοκτησία
ακολουθούμενο από άνω και κάτω τελεία που ακολουθείται από μια τιμή.
Αυτό είναι το είδος της μια ατυχής απόφαση του σχεδιασμού πριν από μερικά χρόνια
ότι η CSS είναι μια γλώσσα μόνο του,
αλλά συντακτικά είναι πολύ διαφορετική από την HTML.
Σε αυτή την περίπτωση, βλέπουμε ότι μέσα από την ιστοσελίδα μου, το οποίο είναι γραμμένο σε HTML,
Έχω CSS μέσα από αυτά τα αποσπάσματα, καθώς και η σύμβαση για CSS
είναι ότι έχετε αυτό που ονομάζεται ένα ακίνητο που ακολουθείται από, και πάλι, μια άνω και κάτω τελεία,
ακολουθείται από την αξία του εν λόγω ακινήτου, οπότε δεν υπάρχει ίσον.
Δεν υπάρχει καμία επιπλέον εισαγωγικά.
Είναι ακριβώς αυτή η άνω και κάτω τελεία διαχωρίζονται ζεύγος κλειδιών αξία,
γραμμή κειμένου και κάνει ακριβώς αυτό που λέει.
Είναι ευθυγραμμίζει το κείμενο στο κύριο σώμα της σελίδας, η οποία είναι πραγματικά τα κότσια της σελίδας,
στο κέντρο.
>> Εντάξει, το τελικό αποτέλεσμα, στη συνέχεια, να είναι σαφές, είναι αυτό.
Δεν είναι όλα ότι πιο σέξι, αλλά τουλάχιστον είναι στο κέντρο και λίγο περισσότερο σαν την πραγματική Google.
Τι γίνεται όμως αν εγώ αντί να ανοίξει την έκδοση 2 του παρόντος
και να επισημάνω εδώ κάτω μια νέα ετικέτα εντελώς;
Τώρα, στο κεφάλι της σελίδας μου, η οποία προηγουμένως είχε μόνο που tag
σε όλα τα προηγούμενα παραδείγματα;
Είχε ακριβώς αυτό, τον τίτλο.
Μια στιγμή πριν το tag κεφάλι έμοιαζε με αυτό.
Τώρα, αντί να έχει ένα στυλ μέσα από την ετικέτα,
και αυτό πάρα πολύ, ζητώ συγγνώμη, συντακτικά είναι πολύ διαφορετική από την HTML,
αλλά μπορείτε να το συνηθίσεις, όπου μέσα από την ετικέτα στυλ
Μπορώ τώρα να συνυπολογίσει ό, τι ήταν πριν από λίγο
ένα χαρακτηριστικό, το χαρακτηριστικό στυλ, και μπορώ να το θέσω στην κορυφή της σελίδας μου.
>> Γιατί;
Λοιπόν, αυτό είναι ένα βήμα προς τον καθαρισμό τα πράγματα, σαν γραπτώς κώδικα C
θα γράψω μερικές φορές λειτουργεί στον παράγοντα έξω κοινή λειτουργικότητα.
Είναι λίγο καθαριστικό για να ξεκινήσει factoring από τα πράγματα όπως την αισθητική
σε μία κεντρική τοποθεσία, αντί όλα διανθίστε όλη HTML σας.
Αυτό κάνει πάρα πολύ αυτό που λέει, ακόμα κι αν υπάρχει ένα κομμάτι της νέας σύνταξης.
Αυτή εδώ είναι μια επιλογέα, και το σώμα σημαίνει απλά επιλέξτε το στοιχείο του σώματος
και να εφαρμόζουν τις ακόλουθες ιδιότητες σε αυτό.
Λοιπόν, η ιδιοκτησία είναι ακριβώς το ίδιο.
Για το καλό μέτρο Έχω προσθέσει ένα ερωτηματικό στο τέλος,
η οποία τείνει να είναι σύμβαση, και έχω τυλιγμένο όλο αυτό το ακίνητο
σε αγκύλες, γιατί θα μπορούσε να έχει πραγματικά διαφορετικά πράγματα εδώ.
Θα μπορούσα να πω πραγματικά κάτι σαν χρώμα: μπλε?
>> Τώρα, αυτό επίσης δεν πρόκειται να είναι ένα βήμα προς κάτι όλα αυτά πιο όμορφη,
αλλά αν εγώ τώρα πάω πίσω στην έκδοση 2 που έχω τουλάχιστον κάνει τώρα το σώμα μου
το κείμενο της σελίδας όλα μπλε.
Το κουμπί παραμένει το ίδιο, γιατί αυτό είναι μια εισαγωγή. Δεν είναι καθαρό κείμενο.
Αλλά ό, τι άλλο είναι το κείμενο, όπως CS50 Αναζήτηση επάνω στην κορυφή, είναι σε μπλε πραγματικότητα.
Και πάλι, το μόνο που κάνει τώρα είναι να αφαιρέσετε από την ετικέτα του σώματος, ειδοποίηση,
το χαρακτηριστικό στυλ, και έχουμε υπολογιστεί ότι από εδώ.
Αυτό δεν είναι μια τεράστια βελτίωση, αλλά αν πάρουμε ένα βήμα παραπέρα
παρατηρήσετε τι μπορούμε να κάνουμε σε αυτή την τρίτη έκδοση εδώ.
>> Σε search3.html η ιστοσελίδα είναι σχεδόν πανομοιότυπο
εκτός από ποια νέα ετικέτα τώρα;
Link, έτσι ώστε αυτό να μην είναι πολύ εύστοχα ονομάστηκε
επειδή δεν είστε σε σύνδεση με την έννοια μιας clickable υπερσύνδεσμο.
Μάλλον, είστε το είδος του να κάνει το ισοδύναμο # include στην C
σύμφωνα με την οποία η ετικέτα συνδέσμου με ένα χαρακτηριστικό href
και ένα χαρακτηριστικό rel λέει προχωρήστε
και αντίγραφο επικολλήσετε τα περιεχόμενα ενός αρχείου που ονομάζεται search3.css δικαίωμα εδώ, ουσιαστικά.
Δεν κάνει αρκετά αυτό, αλλά αυτό είναι το πνεύμα του.
Λέει πάει ανοικτό αυτό το αρχείο, search3.css,
και να το αντιμετωπίσουμε σαν ο χρήστης πληκτρολογήσει είχε δικαίωμα εδώ στο κεφάλι της σελίδας
ακριβώς όπως έκανα και στο προηγούμενο παράδειγμα.
Search3.css, εν τω μεταξύ, είναι αρκετά απλή.
Είναι πραγματικά ακριβώς περιλαμβάνει ακριβώς ό, τι ήταν πριν από λίγο
στην ετικέτα στυλ, αλλά έχω υπολογιστεί ότι από εδώ για το δικό της αρχείο.
>> Ακόμα κι αν δεν έχουμε περάσει πολύ χρόνο σε όλα ή σε μορφή HTML web προγραμματισμό
μόνο διαισθητικά τι είναι το κίνητρο, ίσως, για το factoring από
αυτό το μικρό απόσπασμα, ακόμη και του CSS στο δικό του αρχείο
συμπεριλαμβανομένων και στη συνέχεια με αυτήν την ετικέτα σύνδεσμο εδώ;
[Ακούγεται ανταπόκριση των φοιτητών]
Εντάξει, είναι πιο εύκολο να διαβάσει, υπό την έννοια ότι έχετε CSS σας σε ένα αρχείο CSS.
Έχετε HTML σας σε HTML αρχείο σας, έτσι ώστε να είναι πιο ευανάγνωστο με αυτή την έννοια.
Τι άλλο θα μπορούσε να είναι συναρπαστικό; Ναι.
[Ακούγεται ανταπόκριση των φοιτητών]
Ναι, έτσι ώστε να μπορεί να συμπεριλάβει πολλές φορές, έτσι τώρα κάνουμε αυτά
βασικά παραδείγματα με μεμονωμένα αρχεία, αλλά ας υποθέσουμε ότι είστε πραγματικά κάνει
ένα πραγματικό δικτυακό τόπο, όπως εσείς θα PSET για 7 ή τελικό έργο σας ίσως,
και θέλετε να έχετε πολλαπλές ιστοσελίδες, όπως είναι σίγουρα κοινά για
η πραγματική World Wide Web, και θα είναι το είδος του κουτσός
να χρειαστεί να αντιγράψετε και να επικολλήσετε το ίδιο μπλε χρώμα
και το ίδιο το κείμενο ευθυγραμμίζεται κέντρο σε κάθε μία από αυτές τις σελίδες.
Μάλλον είναι πιο λογικό να συνυπολογίσει, όπως ακριβώς κάναμε σε C
με το αρχείο. ώρα, το βάζουμε σε ένα κεντρικό σημείο,
σε αυτή την περίπτωση search3.css, και στη συνέχεια να επιτρέψει οποιοδήποτε αρχείο
στην ιστοσελίδα σας για να συμπεριλάβετε στην πραγματικότητα αυτό το αρχείο μέσω αυτής της ετικέτας εδώ στην γραμμή 16.
Όπως συμβαίνει συνήθως, ξεκινήσαμε με την έκδοση 0, το οποίο είδος των έργων
αλλά δεν είναι απαραίτητα το καλύτερο, και με κάθε βήμα,
αναζήτηση 1, αναζήτησης 2, και τώρα αναζήτησης 3 έχουμε πάρει αυτά τα βήματα μωρών
προς σχέδια που είναι λίγο καθαρότερο και πιο προπαρασκευαστικές
για πιο σύνθετες σελίδες που θα μπορούσαμε να κάνουμε κάτω από το δρόμο.
>> Επιτρέψτε μου να ανοίξει ένα τελευταίο παράδειγμα εδώ μόνο και μόνο για να δείξει
ένα ακόμα πιο στυλιζαρισμένη σελίδα, αλλά πρώτα ας δούμε την HTML.
Αυτό είναι search4.html, και να παρατηρήσετε ότι είναι δομικά σχεδόν το ίδιο
εκτός από την εισαγωγή μιας νέας ετικέτας, div.
Div είναι μια ετικέτα που εισάγει ένα τμήμα της σελίδας.
Μπορείτε να σκεφτείτε το σαν ένα αόρατο τετράγωνο.
Το είδος του δημιουργεί μια λωρίδα της περιοχής στην ιστοσελίδα
ότι μπορείτε να στυλιζάρω όλα με τη μία.
Αυτό που έχω κάνει εδώ είναι ως εξής.
Μέσα από την ετικέτα σώμα μου, το οποίο ήταν εκεί όλοι μαζί,
Λέω δημιουργήσει ένα τμήμα της σελίδας μέσω εδώ γραμμές 45 έως 47,
και αυτό σημαίνει ότι ουσιαστικά να μου δώσει ένα αόρατο τετράγωνο κατά μήκος του πάνω μέρος της σελίδας.
Στη συνέχεια, να μου δώσει μια δεύτερη ορθογώνιο, αν και αόρατη, κάτω από αυτό,
και να προσδιορίσει το περιεχόμενο όνομα, και στη συνέχεια, τέλος,
να μου δώσει ένα τρίτο τμήμα της σελίδας στο κάτω μέρος
που ονομάζεται ID.
Θα δούμε γιατί έχω κάνει αυτό σε μια στιγμή,
εννοιολογικά, αλλά έχω ένα τμήμα κεφαλίδας.
Έχω ένα τμήμα περιεχομένου, και έχω ένα υποσέλιδο διαίρεση της σελίδας
ακόμα κι αν αυτά είναι μόνο σε σήμανσης.
Ο χρήστης δεν πρόκειται να δείτε 3 ορθογώνια,
αλλά το είδος της δομής εκεί πίσω από τις σκηνές
είναι πραγματικά παρόντες.
>> Τώρα, ποιος νοιάζεται; Γιατί να το κάνετε πραγματικά αυτό;
Όλα τα άλλα στη σελίδα είναι η ίδια όπως έχουμε δει στο παρελθόν.
Εδώ είναι μορφή μου. Εδώ είναι είσοδο μου, είσοδος μου, μια αλλαγή γραμμής και ούτω καθεξής.
Εδώ είναι μια εικόνα, όμως, έτσι θα δούμε εάν αυτό προήλθε από ακριβώς σε μια στιγμή.
Εδώ είναι ένα υποσέλιδο, το οποίο είναι νέο, μόνο και μόνο επειδή ήθελα να εισαγάγει
λίγο περισσότερο περιεχόμενο εδώ.
Αν μετακινηθείτε προς τα επάνω παρατηρήσετε ότι η ταυτότητα αυτού είναι η κεφαλίδα div.
Η ταυτότητα αυτού του div είναι το περιεχόμενο, καθώς και η ταυτότητα του αυτό είναι το υποσέλιδο.
Και όπως υποδηλώνει το όνομα, όταν έχετε ένα χαρακτηριστικό ID
σε μορφή HTML, εξ ορισμού θα πρέπει να προσδιορίσει επακριβώς
ένα εκ των στοιχείων, μία από τις ετικέτες στην σελίδα σας.
Το βάρος είναι εντελώς από εσάς να θυμάστε ότι έχετε ένα αναγνωριστικό κεφαλίδα ήδη.
Έχετε ένα υποσέλιδο. Έχετε ένα αναγνωριστικό περιεχόμενο ήδη.
Ο υπολογιστής δεν πρόκειται να καταλάβω τι είναι διαθέσιμο ID είναι για σας,
ώστε να μπορείτε να λάθος δώσει 2 ετικέτες ένα αναγνωριστικό της κεφαλίδας,
και ότι θα ήταν απλά να είναι λάθος.
>> Θα πρέπει να έχετε κατά νου αυτό που έχετε δημιουργήσει,
αλλά από τη στιγμή που έχετε κάνει ότι ειδοποίηση τι μπορούμε να κάνουμε εδώ.
Μπορώ τώρα να καθορίσετε το στυλ μου ετικέτα στην κορυφή
ή ισοδύναμα στο CSS αρχείο μου, αν ήμουν ακόμα χρησιμοποιώντας αυτήν την έκδοση,
Μπορώ να πω # header, και τι σημαίνει αυτό είναι ότι ανεξάρτητα από την ετικέτα
σε αυτή την ιστοσελίδα έχει ένα αναγνωριστικό της κεφαλίδας
# και, ακριβώς από την ανθρώπινη συνθήκη, αποτελεί ID.
Η απότομη σήμα ή σήμα αντιπροσωπεύει λίρα ID.
Header είναι το όνομα που μου έδωσε.
Αυτό σημαίνει ότι ισχύουν αυτήν την ιδιότητα CSS
για ο, τιδήποτε ετικέτα σε αυτή τη σελίδα έχει ένα αναγνωριστικό της κεφαλίδας.
Η ίδια συμφωνία εδώ.
Εφαρμόστε αυτό το ακίνητο, το οποίο συμβαίνει να είναι το ίδιο, σε κάθε στοιχείο
των οποίων η ταυτότητα είναι το περιεχόμενο, και στη συνέχεια, εδώ κάτω
παρατηρήσετε πήρα λίγο πιό φανταχτερό με υποσέλιδο.
Κάθε στοιχείο του οποίου είναι η ταυτότητα υποσέλιδο, εκ των οποίων μπορεί να υπάρξει μόνο ένα εξ ορισμού,
να προχωρήσει και να κάνει το μέγεθος της γραμματοσειράς του μικρότερου,
γραμματοσειρά τολμηρή του βάρος, το περιθώριο του 20 pixel.
>> Τι σημαίνει αυτό;
Είναι απλά ένα περιθώριο στην κορυφή, τον πυθμένα, και το αριστερό και το δεξί.
Αυτό σημαίνει να μου δώσει μια 20-pixel αόρατο περιθώριο γύρω από αυτό
απλά για να ωθήσει όλα τα άλλα από μακριά λίγο, όπως μπορείτε να κάνετε με το Word,
Microsoft Word ή σελίδες ή τα παρόμοια.
Και στη συνέχεια, ευθυγραμμίστε κείμενο κέντρο.
Ας δούμε το τελικό αποτέλεσμα, και στη συνέχεια θα πάμε πίσω μέχρι και το υπόλοιπο ένα απόσπασμα του CSS εκεί.
Αυτή είναι η έκδοση 4, το τελευταίο μας για τα παραδείγματα αναζήτησης, και είναι πολλά, πολλά σέξι.
Τώρα, για να είμαστε δίκαιοι, εγώ μόλις Googled "γραμματοσειρά γεννήτρια google λογότυπο."
Και αυτό μου έδωσε τη δυνατότητα να δημιουργήσετε ένα GIF, η μορφή εικόνας, το οποίο μοιάζει με ότι υπάρχει.
Στην πραγματικότητα, μπορείτε να το κάνετε αυτό πάρα πολύ.
Έχουμε "google γεννήτρια logo γραμματοσειρές."
>> Ας δούμε αν μπορούμε να το κάνουμε αυτό.
Εντάξει, νομίζω ότι αυτό είναι το δικτυακό τόπο που χρησιμοποιείται.
Μπορούμε να πούμε Ec 10, για παράδειγμα, και να τους το δικό τους.
Μπορείτε να παίξετε με αυτό όλη την ημέρα και στη συνέχεια, κάντε δεξί κλικ πάνω του
και στη συνέχεια κατεβάστε το πραγματικό GIF, το οποίο είναι το μόνο που έκανα.
Και πράγματι, γι 'αυτό σε HTML μου, θυμάμαι, εδώ
Είχα μια ετικέτα εικόνας, το οποίο είδαμε για λίγο την περασμένη εβδομάδα
των οποίων η πηγή είναι logo.gif.
Και πάλι τι ήταν το κίνητρο για το γεγονός ότι αυτό το χαρακτηριστικό alt,
αυτή η εναλλακτική χαρακτηριστικό;
Ναι.
[Ακούγεται ανταπόκριση των φοιτητών]
Καλό, έτσι 2 λόγους πραγματικά, αν ο browser δεν μπορεί να σηκώσει την εικόνα
επειδή έχετε μια αργή σύνδεση με το δίκτυο ή η εικόνα είναι κατεστραμμένο
ή κάτι τέτοιο, τουλάχιστον το ανθρώπινο μπορεί να δει "CS50 αναζήτηση,"
και ακολούθως επίσης για λόγους προσβασιμότητας.
Εάν έχετε ένα χρήστη ο οποίος είναι τυφλός και χρησιμοποιεί ένα πρόγραμμα ανάγνωσης οθόνης
και ως εκ τούτου προφανώς δεν μπορούν να δουν εικόνες μπορούν τουλάχιστον
ακούσετε το κείμενο, αν ο υπολογιστής τους δεν μιλάει γι 'αυτούς.
>> Σε γενικές γραμμές, αυτή είναι η καλύτερη πρακτική, όταν πρόκειται για την προσβασιμότητα των σελίδων
έτσι ώστε ακόμη και οι χρήστες σε αυτή την κατάσταση μπορεί να ακούσει ή να δει, να το πω έτσι,
τι είναι αυτό που είναι στη σελίδα σας.
Υπάρχει ένα άλλο πράγμα που έκανα εδώ
το οποίο είναι ένα μικρό ενδιαφέρον, και θα δούμε περισσότερα για αυτό το πρόβλημα που 7
μέσω ενός από τους επικεφαλής σορτς από έναν από τους υποτρόφων διδασκαλίας.
Αλλά # περιεχόμενο αναφέρεται στην ετικέτα
των οποίων η ταυτότητα είναι το περιεχόμενο, αλλά στη συνέχεια υπάρχει ένα κενό διάστημα, και στη συνέχεια υπάρχει η είσοδος λέξη.
Λοιπόν, τι είναι ενδιαφέρον για το CSS είναι ότι μπορείτε να
αναφέρονται στις ετικέτες σε ένα είδος σελίδα του ιεραρχικά,
και ό, τι αυτό σημαίνει απόσπασμα του CSS είναι να βρούμε την ετικέτα
των οποίων η ταυτότητα είναι το περιεχόμενο, και στη συνέχεια να εφαρμόσει τις ακόλουθες ιδιότητες
σε όλες τις ετικέτες εισόδου που είναι απόγονοι του περιεχομένου,
ότι είναι ότι είναι εσοχή στο εσωτερικό του.
Εγκοπής, και πάλι, είναι σημαντικό μόνο με τον υπολογιστή, όχι στον άνθρωπο,
αλλά με σύμβαση που εδάφιο πράγματα όπως πάμε βαθύτερα σε μια σελίδα,
έτσι αυτό σημαίνει εφαρμόσει ένα περιθώριο 5 pixel σε κάθε στοιχείο εισόδου
αυτό είναι κάπου μέσα ή ένθετα στο εσωτερικό του
το στοιχείο του οποίου είναι η ταυτότητα του περιεχομένου.
>> Ποιος δεν ισχύει ότι για να?
Λοιπόν, υπάρχει πραγματικά μόνο αυτά τα 2 παιδιά εδώ.
Παρατηρήστε ότι μέσα από τη μορφή, υπάρχουν 2 είσοδοι,
όπως έχει υπάρξει για το σύνολο αυτών των παραδειγμάτων.
Αλλά ειδοποίηση ότι οι 2 είσοδοι τυχαίνει να είναι ένθετα στο εσωτερικό,
αν και λίγο βαθιά, ένα ζευγάρι στρώματα της εσοχής,
μέσα από την ετικέτα του οποίου ID είναι το περιεχόμενο.
Τι σημαίνει αυτό;
Αν πάμε στο πρόγραμμα περιήγησης εδώ μπορείτε να δείτε πάντα τόσο ελαφρώς-
επιτρέψτε μου μεγέθυνση-ότι υπάρχει ένα κομμάτι της συμπλήρωσης ανάμεσα στο κουμπί
και μεταξύ του πεδίου κειμένου.
>> Επιτρέψτε μου να στραφώ προσωρινά αυτό το off.
Επιτρέψτε μου να πάω μέχρι το CSS μου, και επιτρέψτε μου να προχωρήσει και μόνο
αλλάξει αυτό το περιθώριο από 5 έως 0 pixels pixels.
Επιτρέψτε μου να προχωρήσει και στη συνέχεια να αποθηκεύσετε το αρχείο, πηγαίνετε πίσω στη μηχανή αναζήτησης
και reload, και να παρακολουθήσουν τη μέση της σελίδας.
Όλα πήρε συμπιεσμένα μαζί, και όταν χτυπημένη πρώτη φορά αυτό το παράδειγμα επάνω
Σκέφτηκα ότι φαινόταν ηλίθιο με το πεδίο κειμένου και στη συνέχεια το κουμπί αμέσως κάτω από αυτό.
Ήθελα να το μαξιλάρι λίγο, γι 'αυτό εισήγαγε περιθώρια.
Αυτό που δεν θα κάνει διάλεξη είναι να πάτε μέσω του αρκετές δεκάδες
CSS ιδιότητες που υπάρχουν, επειδή, πάλι, υπάρχουν πράγματα όπως το μέγεθος γραμματοσειράς,
βάρος γραμματοσειρά, το περιθώριο, το κείμενο ευθυγράμμιση, και μερικοί άλλοι δώδεκα,
και εμείς θα σας παραπέμψει σε πρόβλημα που 7 στα διάφορα μαθήματα σε απευθείας σύνδεση
και αναφορές που σας επιτρέπουν να επιλέξετε αυτά τα πράγματα.
Αλλά αυτό που είναι πραγματικά σημαντικό στο τέλος της ημέρας
>> είναι να καταλάβουμε πώς εφαρμόζονται αυτά τα πράγματα.
Και πάλι, αν έχουμε το εσωτερικό στυλ ετικέτα των οποίων
μπορούν να πάνε οι επιλογείς, το είδος των αναγνωριστικών στοιχείων που προσδιορίζουν
σε ποιον θέλετε να εφαρμόσετε αυτές τις ιδιότητες,
και τότε θα θέσει τις ιδιότητες ως ζεύγος κλειδιών αξία
διαχωρίζονται με άνω και κάτω τελεία και στη συνέχεια τελείωσε με ένα ερωτηματικό,
ή μπορείτε να αντιγράψετε όλα αυτά έξω και το βάζουμε σε ένα ξεχωριστό αρχείο CSS
από μόνο του.
Εντάξει, οποιεσδήποτε ερωτήσεις σχετικά με τις έννοιες
ή η μεγάλη εικόνα του CSS;
Θα δούμε και πάλι πάνω από το PSET σε 7,
αλλά εμείς θα κρατήσουμε γενικά αρκετά απλή.
Όχι; Εντάξει.
Ήρθε η ώρα για μια πραγματική γλώσσα προγραμματισμού,
και θα επανέλθουμε σε λίγο CSS, με τη μορφή ενός παραδείγματος.
PHP είναι στην πραγματικότητα μια θαυμάσια προσβάσιμη γλώσσα
κατά το ότι είναι συντακτικά σχεδόν ισοδύναμο με Ο.
Με άλλα λόγια, αν ξέρεις C, ξέρετε για το μεγαλύτερο μέρος της PHP,
τουλάχιστον συντακτικά, ακόμα κι αν υπάρχουν κάποια νέα χαρακτηριστικά
και μερικές νέες έννοιες που θα πρέπει να εξετάσουμε.
>> Αλλά για το μεγαλύτερο μέρος, τώρα που έχουμε μετάβαση από το C στο PHP
τα περισσότερα από τα νέα πράγματα είναι πραγματικά στη μεγάλη εικόνα,
το πώς να χρησιμοποιήσετε μια γλώσσα για το πρόγραμμα στο διαδίκτυο, σε αντίθεση με
στη γραμμή εντολών ή σε άμεση αναβοσβήνει όπως έχουμε κάνει μέχρι τώρα.
Για την αναφορά, ειδικά με PSET 7 και το τελικό σχέδιο προς τα εμπρός,
να επωφεληθούν από αυτό το URL εδώ αν θέλετε να διαβάσετε σχετικά με τις διατυπώσεις της PHP.
Είναι σαν ένα πραγματικά δωρεάν online βιβλίο αποτελεσματικά,
και θα βρείτε, επίσης, ότι αυτό είναι πολύ ωραίο για PHP
είναι ότι υπάρχουν εκατοντάδες των λειτουργιών που έρχονται με αυτό,
ενώ στην C που δεν έχουν κατ 'ανάγκη την πρόσβαση σε
περισσότερες λειτουργίες από ό, τι ήταν στη βιβλιοθήκη μαθηματικά, η CS50 βιβλιοθήκη.
Στην PHP και πολλές σύγχρονες γλώσσες, Python και Ruby μεταξύ τους,
μπορείτε να αποκτήσετε πρόσβαση σε τόσες πολλές περισσότερες λειτουργίες, το οποίο σημαίνει ότι μπορείτε να πάρετε για να γράψετε
πολύ λιγότερο κώδικα, επειδή μπορείτε να σταθεί στους ώμους των άλλων ανθρώπων
που έχουν ήδη γράψει κάποια πράγματα για εσάς.
>> Ας ρίξουμε μια γρήγορη ξενάγηση στην σύνταξη της PHP και στη συνέχεια να γράψει μερικά παραδείγματα.
Τι ωραίο για PHP πρώτα απ 'όλα
είναι ότι δεν υπάρχει κύρια λειτουργία.
Αν θέλετε να γράψετε ένα πρόγραμμα σε PHP που μόλις αρχίσετε να γράφετε κώδικα,
και δεν έχετε να ανησυχείτε για το κύριο.
Δεν υπάρχει καμία int. Δεν υπάρχει καμία επιστροφή.
Υπάρχει καμία argv, argc μόνο που απαιτείται όταν γράφετε το πρόγραμμα.
Μάλλον μπορείτε απλά να αρχίσετε να γράφετε κώδικα, και αυτό είναι εν μέρει
επειδή η PHP είναι αυτό που ονομάζεται μια ερμηνευμένη γλώσσα.
C συντάχθηκε, και συντάχθηκε με την έννοια ότι θα ξεκινήσει
με τον πηγαίο κώδικα, να τρέχει μέσα από Clang, το οποίο είναι ένα μεταγλωττιστή,
και τελικά μετά από κάποιο αριθμό των βημάτων που έχετε αντικειμενικό κώδικα, 0s και 1s.
PHP και Python και Ruby και Pearl και άλλοι
είναι διαφορετικοί τύποι των γλωσσών ώστε να μην συγκεντρώνουν τους.
Δεν πάμε από τον πηγαίο κώδικα για να 0s και 1s.
Μπορείτε να εκτελέσετε μόνο τον πηγαίο κώδικα, και να εκτελέσετε τον πηγαίο κώδικα
γράφοντας σε ένα συνηθισμένο αρχείο κειμένου, με κατάληξη. php σε αυτή την περίπτωση
αντί του. c, και τι κάνει το πρόγραμμα στον υπολογιστή σας
είναι ερμηνεύει κυριολεκτικά γραμμή κώδικα σας ανά γραμμή.
>> Με άλλα λόγια, αντί να γράψει ένα πρόγραμμα και να εκτελέσετε το πρόγραμμα
άμεσα, αντί να γράψετε ένα πρόγραμμα με ένα αρχείο με κατάληξη. php.
Στη συνέχεια, μπορείτε να εκτελέσετε ένα πραγματικό πρόγραμμα που ονομάζεται php.exe, αν είστε σε Windows,
PHP ή απλά αν είστε σε Mac OS ή Linux,
και να σας προσφέρει ως είσοδο στο πρόγραμμα PHP δικό σας κώδικα,
και ο σκοπός της ζωής είναι να διαβάσετε τον κωδικό σας πάνω προς τα κάτω, αριστερά προς τα δεξιά,
και ό, τι δεν το έχεις πει να κάνει.
>> Ας δούμε τι αυτό θα σημαίνει συντακτικά.
Στην PHP έχουμε συνθήκες.
Αυτή η διαφάνεια είναι πανομοιότυπο με αυτό που είδε πίσω στην εβδομάδα 1
επειδή συντακτικά συνθήκες, IFS και άλλο ifs και αλλού στην PHP
μοιάζει ακριβώς με αυτό.
Όταν πρόκειται για την boolean εκφράσεις που πάμε να δούμε ακριβώς όπως αυτό.
Όταν πρόκειται για την Anding πράγματα μαζί ως booleans πρόκειται να δούμε ακριβώς όπως αυτό.
Διακόπτες μοιάζει το ίδιο, και θα έχετε το προστιθέμενο όφελος σε PHP
ότι οι διακόπτες σε C θα μπορούσε μόνο να στραφούν σε ένα char ή int.
Δεν θα μπορούσαν να στραφούν σε μια τιμή συμβολοσειράς.
Στην PHP, μπορείτε να έχετε πραγματικά μια έκφραση
που είναι μια μεταβλητή της οποίας το περιεχόμενο είναι ένα string,
και μπορείτε να το κάνετε πραγματικά σύγκρισης συμβολοσειράς σε πραγματικό διαισθητικό τρόπο,
Δεν σύγκριση δείκτη, προκειμένου να αποφασίσει αν θα κάνει περίπτωση i ή j ή κάτι άλλο.
Θα δούμε ότι ενδεχομένως πριν από καιρό.
>> Βρόχους υπερβολικά θαυμάσια είναι τα ίδια.
Για βρόχοι έχουν αρχικοποίηση, μια κατάσταση, και κάποια αριθμός των ενημερώσεων.
Ενώ βρόχους υπάρχουν επίσης σε PHP.
Do while loops υπάρχουν επίσης σε PHP,
και πίνακες υπάρχουν σε PHP, αλλά εδώ είναι όπου η σύνταξη αρχίζει να παίρνει λίγο διαφορετικό,
αλλά οι έννοιες είναι η ίδια, και οι έννοιες είναι πραγματικά η ίδια
όπως ήταν την εβδομάδα 0 με Scratch.
Πρώτα απ 'όλα είναι το σύμβολο $.
Αυτή ήταν μια σχεδιαστική απόφαση σύμφωνα με την οποία σε PHP κάθε μεταβλητή
σε PHP με σχέδιο ξεκινά με $ σημάδι.
Δεν υπάρχει πιο Χ, Υ, Ζ είναι τώρα $ X, Y $, $ μόνο και μόνο επειδή Z.
Είναι κάτι που πρέπει να θυμάστε, και τώρα στη δεξιά πλευρά
αυτό μοιάζει με μια σειρά,
, αλλά είμαστε χρησιμοποιώντας αγκύλες εδώ.
Στην PHP και JavaScript, όπως θα δούμε τελικά,
να κηρύξει μια σειρά κάνετε ανοικτή αγκύλη και κλειστό αγκύλη,
και στη συνέχεια να έχετε ένα κόμμα χωρίζονται λίστα τιμών, αν ints
ή κορδόνια ή χαρακτήρες, ό, τι θέλετε, μέσα από την έκφραση εκεί.
>> Τώρα, πώς κάνουμε κάτι σαν αυτό σε C;
Ποια ήταν η σύνταξη για στατικά δηλώνοντας μια σειρά από γνωστούς αριθμούς;
Ήταν άγκιστρα, τόσο μικρή διαφορά εδώ, αλλά σε τόσο PHP
και τελικά το JavaScript χρησιμοποιεί μόνο αγκύλες, ώστε πραγματικά
η μόνη ενδιαφέρουσα λεπτομέρεια εδώ είναι το σύμβολο $ για το όνομα της μεταβλητής
καθώς επίσης και οι αγκύλες, και εκεί είναι ένα περίεργο πράγμα
που είναι ήδη παραληφθεί, καθώς και στην αριστερή πλευρά του σημείου =.
Τι λείπει ότι έχουμε απαίτηση για εβδομάδες τώρα; Ναι.
[Ακούγεται ανταπόκριση των φοιτητών]
Το μέγεθος, οπότε δεν υπάρχει αναφορά του μεγέθους της συστοιχίας.
Ειλικρινά, δεν υπάρχει καμία αναφορά αγκύλες στην αριστερή πλευρά
του σημείου =, και ό, τι άλλο λείπει από τη γραμμή;
Ναι. >> [Ακούγεται ανταπόκριση των φοιτητών]
Ο τύπος, έτσι αυτό που είναι ενδιαφέρον, ιδίως για PHP
είναι ότι δεν είναι ένας έντονα δακτυλογραφημένη γλώσσα, όπως C είναι,
και ότι είναι strongly typed, υπό την έννοια ότι θα πρέπει να πω char,
θα πρέπει να πω int, θα πρέπει να πω float.
>> Οποτεδήποτε θέλετε μια μεταβλητή που έχετε να πείτε Clang τι είδους του είναι.
PHP είναι λίγο lazier.
Είναι χαλαρά πληκτρολογήσει, υπό την έννοια ότι
μπορείτε να έχετε άρματα και χαρακτήρες και έγχορδα
και ints και ούτω καθεξής, αλλά η ίδια η γλώσσα
δεν ενδιαφέρονται πραγματικά τι βάζετε μέσα σε μια μεταβλητή.
Δεν χρειάζεται να το ενημερώσει εκ των προτέρων τι τύπο δεδομένων
συμβαίνει σε μια μεταβλητή.
Είναι εξ ολοκλήρου μέχρι σας, έτσι αυτό είναι ωραίο
υπό την έννοια ότι δεν έχετε να ανησυχείτε τόσο πολύ για τα δεδομένα πληκτρολογώντας
ανησυχητικό και ποια είναι τα επιχειρήματά σας και ούτω καθεξής.
Αυτό σημαίνει επίσης τελικά λειτουργίες σε PHP πρόκειται να είναι σε θέση να επιστρέψει
int είτε τις περισσότερες φορές, και ίσως κάποια στιγμή
ότι θα επιστρέψει ένα bool, μια boolean false, για παράδειγμα, να σημαίνει ότι κάτι πήγε στραβά.
Αυτό μας δίνει κάποιες upsides, αλλά επίσης θα μας κάνει είδος του σχεδιασμού
λίγο lazier όταν πρόκειται για δεδομένα πληκτρολόγηση.
>> Τι άλλο είναι εκεί για να κρατήσει στο μυαλό εδώ;
Οι μεταβλητές φαίνονται αρκετά αρέσει αυτό, έτσι $ s = "Hello, world."
Αυτό είναι ίσως που προκύπτουν με το προηγούμενο παράδειγμα,
και έχουμε ένα άλλο είδος βρόχου.
Αυτό και μόνο θα δούμε πραγματικά μια φορά σε μια στιγμή δεδομένου ότι είναι αρκετά βολικό,
foreach μια κατασκευή.
Σε αυτή την περίπτωση, ο βρόχος foreach λαμβάνει εσωτερικό των παρενθέσεων 3 λόγια τυπικά,
Κάτι $ πρώτη, η οποία είναι ό, τι σειρά θέλετε να επαναλάβει τα μέλη της,
τότε κυριολεκτικά η λέξη-κλειδί, όπως και, στη συνέχεια, τέλος,
ένα άλλο όνομα της μεταβλητής που θα έχετε να επιλέξετε.
Μπορεί να είναι foo, bar, ή στοιχείο,
και τι κάνει αυτό το κατασκεύασμα
είναι αν η $ array περιέχει 10 στοιχεία
σε κάθε επανάληψη αυτού του πίνακα-συγγνώμη, σε κάθε επανάληψη του βρόχου αυτού
η μεταβλητή που ονομάζεται στοιχείο πρόκειται να ενημερωθεί
να είναι το πρώτο στοιχείο του πίνακα, τότε το δεύτερο στοιχείο στη συστοιχία,
τότε το τρίτο στοιχείου του πίνακα, αποφεύγοντας έτσι την ανάγκη
να κάνει το ελαφρώς ενοχλητικό πλατεία σημειογραφία βραχίονα και
$ I για να δείκτη σε ένα πίνακα.
PHP κάνει όλο αυτό το έργο για σας και σε κάθε επανάληψη
απλά τα χέρια σας την επόμενη στοιχείο από τον πίνακα
χωρίς να χρειάζεται να γνωρίζουν ή να νοιάζονται για αριθμητική θέση του δείκτη.
>> Και τότε, τέλος, προς το παρόν, υπάρχει ένα άλλο χαρακτηριστικό της PHP
που πρόκειται να είναι εξαιρετικά χρήσιμο, ειδικά όταν ξεκινάμε τον προγραμματισμό στο Web,
και ότι είναι γνωστό ως ένα associative array.
Οι πίνακες που γνωρίζουμε μέχρι στιγμής από τις 20 δευτερόλεπτα
και για τα τελευταία 8 εβδομάδες αναπροσαρμόζονται αριθμητικά συστοιχίες,
είδος των παραδοσιακών πινάκων, όπου οι δείκτες είναι ints,
0, 1, 2, σε όλη τη διαδρομή προς τα πάνω.
Συνειρμική συστοιχίες είναι πολύ πιο ισχυρό.
Θα σας επιτρέψει να έχετε αυθαίρετες κλειδιά,
αυθαίρετες δείκτες και αυθαίρετες τιμές.
Ενώ σε μια παραδοσιακή διάταξη είναι 0, 1, 2,
σε ένα associative array μπορείτε να έχετε ένα ευρετήριο
ή ένα κλειδί του foo των οποίων η αξία είναι το μπαρ.
Μπορείτε να έχετε στη συνέχεια, ένα άλλο βασικό του οποίου το όνομα είναι baz και των οποίων η αξία είναι qux.
>> Και πάλι, η επιστήμη των υπολογιστών ηλίθιο γενική μεταβλητή ονόματα εδώ,
αλλά το θέμα είναι ότι αυτή η σειρά δεν έχει στήριγμα βραχίονα 0 ή 1.
Είναι αντ 'αυτού πρόκειται να έχει στήριγμα και στήριγμα foo baz.
Αυτό είναι ένα πολύ πιο ευέλικτο στο ότι θα πάμε να είναι σε θέση να συνδέσει
δηλαδή με άλλα λόγια, τα πλήκτρα με τιμές εντελώς αυθαίρετα,
και θα πάμε να είναι σε θέση να πάρετε πίσω αυτές τις τιμές σε συνεχή χρόνο
επειδή κάτω από το καπό τι ένα associative array
πραγματικά είναι είναι ένα πίνακα κατακερματισμού.
Θυμηθείτε ότι ένα πίνακα κατακερματισμού σας επιτρέπει να βάλετε σε κάποια εισόδου
όπως θέσει τη λέξη David εάν θέλετε να εισάγετε τον David σε κάποιο είδος του λεξικού,
και στη συνέχεια μπορείτε να πάρετε πίσω κάποια αξία συνήθως.
Στην περίπτωση του Ορθογράφου, αληθείς ή ψευδείς.
David ή ό, τι λέξη είναι ή δεν είναι στο λεξικό.
Ένας associative array είναι πραγματικά ακριβώς ένα πίνακα κατακερματισμού,
αλλά είναι μια πολύ πιο φιλική προς το χρήστη ενσάρκωση του.
Όπως θα δούμε, πρόκειται να μας επιτρέψει να κάνουμε κάποια πράγματα
πολύ, πολύ εύκολα.
>> Ας ρίξουμε μια ματιά σε μερικά βασικά PHP
παραδείγματα και να δούμε τι μπορούμε να κάνουμε με αυτή τη γλώσσα.
Επιτρέψτε μου να προχωρήσει και να ανοίξει στον κατάλογο πηγή μας σήμερα
ένα αρχείο που ονομάζεται hello1.php.
Αυτό το αρχείο είναι περισσότερο από ό, τι σχόλιο είναι πραγματικό κώδικα,
οπότε επιτρέψτε μου να αφαιρέσει πραγματικά όλα τα σχόλια από το αρχείο
και να σας παρουσιάσουμε ίσως το πιο απλό πρόγραμμα PHP δικαίωμα εδώ.
5 γραμμές, και μερικοί από αυτούς είναι λευκό χώρο,
έτσι παρατηρήσετε κάποιες βασικές διαφορές εδώ.
Το αρχείο ονομάζεται hello1.php.
Η πρώτη γραμμή, όμως, είναι <? Php.
Παρόμοια στο πνεύμα με HTML,
ότι η ακολουθία των χαρακτήρων που λέει στον υπολογιστή
"Γεια σου, υπολογιστή, έρχεται εδώ ένα πρόγραμμα είμαστε σε σε PHP."
Κάνει βέβαιος ότι δεν είναι σύγχυση ότι είναι κάποια άλλη γλώσσα.
Η γραμμή 2 είναι μια ενδιαφέρουσα λευκό χώρο.
Η γραμμή 3 είναι παλιός φίλος μας printf,
αυτή τη φορά στο πλαίσιο της PHP.
PHP έχει τη δική του εκδοχή της printf που συμπεριφέρεται ακριβώς το ίδιο,
έτσι αυτό είναι ακριβώς πρόκειται να εκτυπώσετε "Hello, world."
Και τότε αυτό απέναντι ετικέτα εδώ,>, σημαίνει ότι είναι για την PHP κώδικα μου.
>> Ας δούμε πώς μπορείτε να εκτελέσετε αυτό.
Πάω να πάει πίσω στο παράθυρο του τερματικού μου εδώ.
Πάω να μπω σε PHP κατάλογο μου.
Παρατηρήστε ότι έχουμε ένα σωρό αρχεία, το πρώτο εκ των οποίων είναι hello.php.
Επιτρέψτε μου να πάμε μπροστά και να τρέξει αυτό, hello1.php, εισάγετε.
Permission denied. Εντάξει.
Πώς καθορίζεται έχουμε πράγματα όπως αυτό στο παρελθόν;
Τι είναι αυτό; >> [ακούγεται ανταπόκριση των φοιτητών]
Εμείς χρειάζεται να διαβάζουν και να γράφουν, αλλά επιτρέψτε μου να κάνω ls-l.
Θυμηθείτε αυτό το κάπως αινιγματικά εξόδου σύμφωνα με την οποία hello1
φαίνεται να είναι αναγνώσιμα και εγγράψιμα από εμένα
αλλά αναγνώσιμη από όλους τους άλλους.
Βγάζει αυτό στην πραγματικότητα δεν είναι ένα βήμα προς τη σωστή κατεύθυνση.
Η διαφορά, και πάλι, με μια γλώσσα που ερμηνεύεται
είναι δεν τρέχει το πρόγραμμα άμεσα.
Μπορείτε να εκτελέσετε αντί διερμηνέα και παραδώστε τον κωδικό
ότι έχετε γράψει γι 'αυτό μπορεί να ερμηνεύσει την γραμμή προς γραμμή.
Σε αυτή την περίπτωση, ο διερμηνέας ή πρόγραμμα που πραγματικά θέλετε να εκτελέσετε
κυριολεκτικά ονομάζεται PHP.
>> Κάπου σε αυτό το σκληρό δίσκο της συσκευής υπάρχει ένα πρόγραμμα
κάποιος άλλος έγραψε ονομάζεται PHP, ή στα Windows php.exe.
Τι θα πάω να κάνω εδώ είναι Πάω να τρέξει πραγματικά PHP
όμως δώσει ως όρισμα γραμμής εντολών τον κώδικα που έγραψα,
και στη συνέχεια θα σμίκρυνση και πατήστε enter.
Τρέχει το πρόγραμμα μου για μένα, πάνω προς τα κάτω, αριστερά προς τα δεξιά.
Επιτρέψτε μου να προχωρήσει και να ανοίξει μια μικρή διακύμανση από αυτό.
Σε hello2.php ειδοποίηση ότι αυτό είναι πολύ
είναι ως επί το πλείστον σχόλια, οπότε επιτρέψτε μου να απαλλαγούμε από αυτά ως μια απόσπαση της προσοχής,
και τι είναι σαφώς διαφορετικά τώρα για αυτό το αρχείο;
Υπάρχει αυτή η νέα γραμμή, κάπως αινιγματικά στην κορυφή.
Στη γραμμή 1 είναι #! / Bin / php.
Bin είναι μια σύμβαση για Linux και Mac OS για τα εκτελέσιμα,
έτσι / bin σημαίνει ότι αυτό είναι ένα φάκελο που περιέχει μια δέσμη των δυαδικών
δηλαδή είναι προγραμματισμένος, ένα από τα οποία είναι η PHP.
Το #! είναι το παρατσούκλι δουλεία,
που είναι ο γρήγορος τρόπος για να πούμε αυτό, και τι σημαίνει αυτό
είναι ότι όταν εκτελείτε αυτό το πρόγραμμα τώρα υπάρχει ένας υπαινιγμός στην κορυφή του αρχείου
που λέει στον υπολογιστή τι να χρησιμοποιήσει διερμηνέα.
>> Παίρνει λίγο ενοχλητικό, αν είχατε να πείτε στους χρήστες σας και τους πελάτες σας
"Hey, γράψαμε αυτό το πρόγραμμα που ονομάζεται hello1.php."
Το μόνο που έχετε να κάνετε είναι να εκτελέσετε PHP για πάντα και στη συνέχεια το όνομα του εν λόγω προγράμματος.
Ειλικρινά, θα ήταν απλώς να είναι καλύτερο για να τρέξει hello1.php,
και πράγματι, αν μπορούμε να κάνουμε το εξής.
Επιτρέψτε μου να πάμε μπροστά και να κάνουμε ls-l, και σε ανακοίνωση Hello2 είναι ακόμα μόλις διαβάσει γράφουν
και στη συνέχεια, διαβάστε διαβάσει, έτσι δεν μπορώ να κάνω ακόμα αυτό, hello2.php.
Αλλά αυτό εισήγαγε ποτέ τόσο σύντομο χρονικό διάστημα την τελευταία φορά, η εντολή chmod.
Αν κάνω ένα chmod + x, που σημαίνει ότι όλα τα συν δυνατότητα εκτέλεσης,
και στη συνέχεια hello2.php και στη συνέχεια να ls-l και πάλι παρατηρήσετε τι άλλαξε.
Ένα, το Linux μου δείχνει το όνομα του αρχείου στο πράσινο για να μεταφέρω την ιδέα
ότι αυτό είναι εκτελέσιμο, αλλά το πιο σημαντικό, στην αριστερή πλευρά
παρατηρήσετε ότι το bit που αντιπροσωπεύει x για εκτελέσιμο έχει ρυθμιστεί.
Αυτό σημαίνει ότι τώρα είναι ότι μπορεί να τρέξει ./hello2.php ως συνήθως,
πατήστε enter, και λόγω της δουλεία στην κορυφή του αρχείου
αυτό είναι μια υπόδειξη, και πάλι, στο Linux που λέει
χρησιμοποιήσετε αυτό το διερμηνέα για να τρέξει αυτό το αρχείο.
Μην ανησυχείτε για αναγκάζοντας τον χρήστη να πληκτρολογήσει πραγματικά.
>> Και τι ωραία τώρα είναι το είδος του άσχετα με τους πελάτες μου ή τους φίλους μου
ποια γλώσσα Έγραψα αυτό το πρόγραμμα, ώστε να μπορώ να προχωρήσει με mv
και μετονομάστε αυτό το πράγμα να Hello2, για παράδειγμα.
Και τώρα αν κάνω ./hello2
και σμίκρυνση πρόγραμμα μου συνεχίζει να λειτουργεί.
Αυτές οι επεκτάσεις αρχείων είναι μια ανθρώπινη σύμβαση που είναι αναγκαία
για κάτι τέτοιο και Clang Κάντε που ψάχνουν για αυτούς.
Αλλά για την PHP, θα μπορούσαμε να την ονομάσουμε κάτι επέκταση αρχείου που θέλω.
Θα μπορούσα να ξεγελάσουν τον κόσμο να νομίζει ότι είμαι πολύ καλός στο Ruby,
και θα μπορούσα να γράψω hello2.rb και στη συνέχεια να εκτελέσετε αυτή,
και ιδού, τώρα έχω την έκδοση Ruby, το οποίο είναι ένα απόλυτο ψέμα.
Αλλά οι επεκτάσεις αρχείων είναι χωρίς νόημα
εάν το αρχείο είναι εκτελέσιμο και έχει ειδική αυτή υπαινιγμός στο επάνω μέρος του αρχείου.
>> Τώρα, ως ένα μέρος, επιτρέψτε μου να σας δείξει γρήγορα την έκδοση 3,
η οποία είναι ένα είδος χρήσιμο τέχνασμα για να ξέρω.
Σε hello3 έκανα κάτι λάθος ελαφρώς
ότι εγώ θα ενημερώσουμε την online πηγαίο κώδικα.
Στην έκδοση 3 αποδεικνύεται ότι στους περισσότερους υπολογιστές με Linux
υπάρχει ένα πρόγραμμα που ονομάζεται env για το περιβάλλον,
και τι μπορείτε να κάνετε εδώ είναι, αν δεν έχετε καμία ιδέα για το πού PHP
είναι εγκατεστημένο στον τοπικό σκληρό δίσκο, διότι πράγματι θα μπορούσε να διαφέρει ανάλογα με τον υπολογιστή
ότι κάποιος χρησιμοποιεί, env λέει απλά εκτελέστε env,
η οποία είναι στα περισσότερα συστήματα, και να καταλάβω όπου PHP είναι.
Ακριβώς ένα κοινό τέχνασμα έτσι δεν έχετε να ανησυχείτε για να ανακαλύψει όπου ένα πρόγραμμα είναι.
Αλλά αν το κάνετε φροντίδα για να μάθετε πού είναι ένα πρόγραμμα και δεν έχετε φροντίσει μέχρι στιγμής
μπορείτε να χρησιμοποιήσετε την εντολή που.
>> Επιτρέψτε μου σμίκρυνση και τύπου που php,
παρατηρήσετε και μου λέει ότι είναι πραγματικά σε usr / bin / php.
Είναι το είδος της ένα ψέμα. Είναι, επίσης, στον κάδο.
Είναι απλά μου δείχνει το πρώτο χτύπημα.
Εάν έχετε ποτέ αναρωτηθεί όπου είναι Clang, η οποία Clang, αυτό είναι σε usr / bin / κλαγγή,
που κάνουν, usr / bin / κάνουν, και τι σημαίνει αυτό είναι όλο αυτό το διάστημα
που θα μπορούσαν να έχουν πληκτρολογώντας usr / bin / κλαγγή αρχίζει να τρέχει Clang,
αλλά αυτό είναι το είδος της κουραστικό να το κάνουμε αυτό, έτσι μερικοί φάκελοι
όπως usr / bin bin και υποτίθεται ότι είναι προεπιλογές
έτσι ώστε ο υπολογιστής ξέρει να δούμε σε αυτά για εσάς.
Οποιεσδήποτε ερωτήσεις σχετικά με τη σύνταξη ενός σούπερ, σούπερ απλό πρόγραμμα Hello World
σε PHP και στη συνέχεια να τρέχει;
Επειδή τώρα θα αρχίσουμε να εισαγάγει πιο συναρπαστικό σύνταξη.
Εντάξει, εδώ είμαστε.
Αυτά τα προγράμματα που έχουμε δει πραγματικά όλα αυτά πριν.
>> Αν ανοίξει, για παράδειγμα, ας κάνουμε beer1.php,
εμείς δεν θα περάσει μέσα από διάφορες εκδόσεις του αυτό, αλλά ό, τι έκανα
ήταν κάθισα και το έχυσε ή μετατρέπονται
Γ κωδικό μου για PHP κώδικα εδώ.
Οι περισσότεροι από την κορυφή του αρχείου είναι τα σχόλια εδώ.
Αποδεικνύεται ότι υπάρχει μια νέα λειτουργία που ονομάζεται χρειαζόμαστε readline.
GetString, ανάκληση, από την Εβδομάδα 0 και μετά ήταν CS50 πράγμα.
PHP έρχεται με τη δική του φιλική προς το χρήστη λειτουργία που ονομάζεται readline
που παίρνει 1 όρισμα που καθορίζει την έγκαιρη
που θέλετε να δείτε στον χρήστη, και τι κάνει readline
είναι ότι επιστρέφει ό, τι πληκτρολογεί ο χρήστης μέσα
Σε αυτή την περίπτωση, είμαι δηλώνοντας μια μεταβλητή που ονομάζεται n $.
Είμαι αποθήκευση σε αυτήν την τιμή επιστροφής της readline
μετά από προτροπή του χρήστη με αυτή τη σειρά.
Ακριβώς για να δημιουργήσετε αντίγραφα ασφαλείας, να τρέξει πραγματικά αυτό το πράγμα, επιτρέψτε μου να προχωρήσει
και να τρέξει php beer1.php.
Πόσα μπουκάλια θα υπάρξουν; Ας κάνουμε μόλις 2 αυτή τη φορά.
Enter. Αυτό είναι όλο.
>> Το πρόγραμμα είναι λειτουργικά ταυτόσημη με την έκδοση C από εβδομάδες πριν.
Αλλά συντακτικά ας δούμε τι είναι διαφορετικό.
Αφού πάρετε μια int από την ειδοποίηση των χρηστών που κάνω κάποιο έλεγχο σφαλμάτων,
και αν το n είναι μικρότερο από 1 παράτησα και εγώ εκτυπώσετε
ένα θλιβερό μήνυμα προς τον χρήστη και με την έξοδο 1.
Αυτό είναι πολύ λίγο διαφορετική.
Σε ό, τι C κάναμε; Στην Γ γυρίσαμε 1.
Στην PHP βγείτε με 1, το οποίο ειλικρινά πιστεύω ότι είναι λίγο πιο διαισθητικό
επειδή είστε κυριολεκτικά την έξοδο από το πρόγραμμα.
Εντάξει, και στη συνέχεια, εδώ κάτω το ενοχλητικό τραγούδι είναι η ίδια συντακτικά
εκτός από τη μεταβλητή, έτσι εδώ κάτω στη γραμμή 24 και μετά
παρατηρήσετε μου για το βρόχο είναι σχεδόν το ίδιο,
αλλά έχω $ μπροστά από i και n,
και αυτό που επίσης λείπει από τη γραμμή 26 που είχαμε στο παρελθόν
όταν δηλώνει μια μεταβλητή i;
Δεν υπάρχει κανένα είδος.
Είναι λάθος στην PHP να πω int.
Μπορείτε απλά δεν χρειάζεται να το κάνουμε αυτό.
Ο υπολογιστής, ο διερμηνέας PHP είναι αρκετά έξυπνος για να συνειδητοποιήσουμε
ότι αν βάλετε μια σειρά σε $ εγώ θα την αντιμετωπίσουμε
ως αριθμός για εσάς.
Και τότε εμείς εδώ κάτω βύσμα σε $ i, i $, $ i - 1.
Όλα αυτά είναι το ίδιο, και τότε εδώ κάτω κάνουμε μια "Ουάου, αυτό είναι ενοχλητικό" printf
και στη συνέχεια κλείστε το (0).
>> Και πάλι, η πακέτο εδώ είναι ότι ακόμα κι αν πρόκειται να περάσετε σχετικά
λίγο χρόνο για PHP, σίγουρα σε σχέση με ό, τι κάναμε στο C,
είναι σχεδόν το ίδιο, και έτσι αυτό που θα κάνουμε σήμερα και την επόμενη εβδομάδα
και πέρα ​​είναι πραγματικά επικεντρώνεται σε κάποιες από τις νέες ιδέες.
Ακριβώς για να δει ότι κάτι άλλο έχει μεταφράσει πάνω από το C,
αυτό ήταν ένα εξαιρετικά απλό πρόγραμμα που κάναμε στην εβδομάδα 1
ή 2 κύβους που μια τιμή.
Αλλά αυτό που ήταν ενδιαφέρον κατά το χρόνο σχετικά με αυτό το πρόγραμμα είναι ότι
εισήγαγε την έννοια της γραπτής προσαρμοσμένη συνάρτηση που εμείς οι ίδιοι έγραψαν.
Η σύνταξη της PHP είναι σχεδόν το ίδιο.
Εδώ είναι το πρόγραμμά μου επάνω στην κορυφή.
Παρατηρήστε και πάλι απουσιάζει είναι οποιαδήποτε έννοια της κύριας.
Αρχίζω να γράφω κώδικα, και αυτό είναι ό, τι πρόκειται να πάρει εκτελούνται από το διερμηνέα.
Μπορώ να εκτυπώσω από το x είναι τώρα 2, κατά πάσα πιθανότητα.
Τότε θα διεκδικήσει cubing ...
Στη συνέχεια, καλώ τη λειτουργία κύβο και να περάσει σε $ x
και να ορίσετε την τιμή επιστροφής για $ x.
Τότε θα ισχυρίζονται ότι είναι κομμένο σε κύβους, και στη συνέχεια το λέω αυτό, το οποίο ελπίζουμε
Θα πω x είναι τώρα 8.
Η σύνταξη της συνάρτησης σε PHP είναι πάντα τόσο ελαφρώς διαφορετική.
Και πάλι λείπει είναι ο τύπος επιστροφής.
Και πάλι λείπει είναι ο τύπος επιστροφής, αλλά και ό, τι λείπει είναι άλλου τύπου;
[Ακούγεται ανταπόκριση των φοιτητών]
Λοιπόν, εντάξει, αυτό είναι καλό. Ας επανέλθουμε σε αυτό σε ένα δευτερόλεπτο.
>> Δεν έχουμε, για παράδειγμα, int εδώ.
Δεν, για παράδειγμα, έχουν int εδώ επειδή, πάλι, σε PHP
απλά δεν χρειάζεται και δεν πρέπει να το κάνουμε αυτό,
αλλά μάλλον δεν υπάρχει αυτή η λέξη-κλειδί που ονομάζεται νέα λειτουργία.
Στην PHP είναι σχεδόν ένα λίγο πιο σαφής γιατί όταν θέλετε μια λειτουργία
λέτε κυριολεκτικά λειτουργία, δίνετε ένα όνομα και στη συνέχεια μια λίστα χωρισμένη με κόμμα
αν κάποια από τα επιχειρήματά της.
Δεν χρειάζεται να πω άκυρη ή κάτι τέτοιο, και στη συνέχεια την επιστροφή είναι η ίδια,
$ A * $ a * $ a.
Αυτό που επίσης λείπει; Sammy επισήμανε αυτό από εδώ.
Στην κορυφή του αρχείου εντελώς απούσα στην PHP επίσης είναι ένα πρωτότυπο.
Αυτό είναι πάρα πολύ από το σχεδιασμό.
Γλώσσες και διερμηνείς, όπως η PHP είναι εξυπνότερα από ό, τι ήταν ποτέ C
σε μεταγλωττιστές όπως Clang.
>> Υπενθυμίζουμε ότι Clang, αν δεν πω ότι αυτό το κύβο υπάρχει,
αν δεν το πω ότι υπάρχει ως printf με ένα πρωτότυπο
ή με μια # περιλαμβάνουν, επίσης, ότι επρόκειτο να φωνάζω σε σας και δεν συγκεντρώνουν καν τον κωδικό σας.
PHP και πιο σύγχρονες γλώσσες είναι πολύ πιο έξυπνη, όταν πρόκειται για αυτό.
Θα το αναλάβουν οι ίδιες να διαβάσετε όλες κωδικό σας
και στη συνέχεια να φωνάζω σε σας μόνο αν διαπιστώσει πουθενά κύβο.
Δεν έχει σημασία αν κύβου είναι στο κάτω μέρος ή την κορυφή ή ακόμα και σε κάποιο ξεχωριστό αρχείο.
PHP και παρόμοιες γλώσσες είναι τώρα αρκετά έξυπνος για να κοιτάξουμε μπροστά
σε ό, τι πριν την εκλάβει ως σας έχουν κάνει κάποιο λάθος.
Όταν αυτός μας αφήνει;
>> Ας κάνουμε ένα τελευταίο παράδειγμα εδώ σε συνθήκες,
και αν έχω ανοίξει conditions2.php ειδοποίηση πάρα πολύ
σύνταξη εδώ είναι σχεδόν η ίδια.
Είμαι χρησιμοποιώντας readline αντί του GetString, αλλά ότι η γραμμή είναι η ίδια όπως και πριν,
"Θα ήθελα παρακαλώ ένας ακέραιος."
Έχω λοιπόν μια κατάσταση αν, ένα άλλο αν, και στη συνέχεια ένα άλλο,
αλλά λειτουργικά αυτό το πρόγραμμα είναι επίσης ίδιο με αυτό που κάναμε εβδομάδες πριν,
οπότε αν μπορώ να εκτελέσω αυτό το πράγμα, php του conditions2,
και δίνω έναν αριθμό, όπως 23 -
Πήρα ένα θετικό αριθμό. Αν μου δώσει -1 πήρα έναν αρνητικό αριθμό.
Αν μου δώσει το 0 πήρα όντως 0.
Έτσι, ποιος νοιάζεται για όλα αυτά;
Λοιπόν, ένας από τους διασκέδαση είδος των ασκήσεων εδώ
για μένα τουλάχιστον ήταν να πάει πίσω και να δούμε πόσο γρήγορα θα μπορούσε να εφαρμόσει PSET 5,
η PSET ορθογραφικά λάθη.
Υπενθυμίζουμε ότι υπήρχε αυτό το αρχείο με το όνομα speller.c,
και υπήρχε ένα αρχείο που λέγεται dictionary.c.
Αυτό που έκανα εγώ ήταν το είδος του πέρασε λίγα λεπτά και θα μετατραπούν τον κωδικό C
σε κώδικα PHP, και δεν θα περνούν πολύ χρόνο για ορθογράφος
επειδή ακριβώς όπως σε PSET 5 μπορείτε πραγματικά δεν χρειάζεται να
περνούν πολύ χρόνο για ορθογράφος ίδια προσοχή σας, γιατί ήταν σε λεξικό.
>> Αρκεί να πούμε ότι, αν μπορείτε να διαβάσετε μέσω ορθογράφος,
αυτό το αρχείο εδώ, είναι λίγο πολύ ισοδύναμη με τον κωδικό C
σας δώσαμε για PSET 5.
Έχω προσθέσει μόνο μερικά δολάρια σε χώρους.
Έχω αλλάξει ορισμένα ονόματα λειτουργία αν δεν υπάρχει στην PHP.
Υπάρχει ένα επιπλέον πράγμα εδώ, preg_match,
το οποίο είναι λίγο πιό φανταχτερό τρόπος για να γίνει κάτι, αλλά θα επανέλθω σε αυτό τελικά.
Όμως, εν ολίγοις, ορθογράφος είναι σχεδόν ταυτόσημες, και αν κοιτάξετε στο κάτω μέρος
αυτό που φτύνει έξω τελικά είναι αυτό εδώ,
λέξεις με ορθογραφικά λάθη, λέξεις λέξεις από το λεξικό, στο κείμενο.
Εντάξει, έτσι αυτό που είναι τώρα ενδιαφέρον είναι η ακόλουθη.
Στην κορυφή του αρχείου μου, είμαι απαιτούν dictionary.php.
Ακριβώς όπως C # έχει περιλαμβάνουν PHP έχει μια ειδική λειτουργία που ονομάζεται απαιτούν
ότι λίγο πολύ κάνει το ίδιο πράγμα, απαιτούν ένα αρχείο με όνομα dictionary.php.
Πώς μπορώ να πάω για την εφαρμογή PSET 5;
Επιτρέψτε μου να πάμε μπροστά και να ανοίξει ένα αρχείο εδώ.
Επιτρέψτε μου να πάρει λίγο αναφορά εδώ.
Και επιτρέψτε μου να δημιουργήσετε ένα νέο αρχείο και να αρχίσει καλώντας αυτό dictionary.php.
Επιτρέψτε μου να το θέσω σε άλλο φάκελο ώστε να μπορούμε να το κάνουμε αυτό ζουν.
Και τώρα θα μεγεθύνετε
Πάω να ξεκινήσει PHP αρχείο μου με ανοιχτό βραχίονα php κλειστό βραχίονα.
Και στη συνέχεια, εδώ υπήρχαν μερικές λειτουργίες που απαιτούνται για την εφαρμογή για PSET 5,
έτσι επιτρέψτε μου να ξεκινήσω την εφαρμογή ορισμένων από αυτούς,
έτσι έλεγχο λειτουργίας, η οποία έπρεπε να λάβει μια λέξη ως επιχείρημα.
Θα κάνουμε ότι και να επανέλθουμε σε αυτό σε μια στιγμή.
>> Υπήρχε φορτίο λειτουργία, η οποία έλαβε σε ό, τι ως επιχείρημα;
Λεξικό, έτσι ώστε το αρχείο που πραγματικά ήθελε να φορτώσει.
Υπήρχε μέγεθος λειτουργία, η οποία δεν έλαβε κανένα επιχείρημα
και δεν υπήρχε λειτουργία-ό, τι ήταν το άλλο;
Unload, η οποία δεν έλαβε κανένα επιχείρημα ούτε.
Αυτά είναι τα 4 λειτουργίες που θα πρέπει να εφαρμόσει τώρα σε PHP,
και ό, τι Πάω να κάνουμε είναι να προχωρήσει και να το κάνουμε αυτό.
Πολλοί από εσάς χρησιμοποίησε ένα πίνακα κατακερματισμού σε PSET 5,
οπότε επιτρέψτε μου να προχωρήσει και να δημιουργήσει ένα πίνακα κατακερματισμού σε PHP.
Τέλος.
Αυτό μου δίνει ένα πίνακα κατακερματισμού. Λοιπόν, γιατί;
Ένα, η μεταβλητή ονομάζεται $ τραπέζι, ακριβώς για να πλάθω την ιδέα ενός πίνακα κατακερματισμού.
Οι αγκύλες, όμως, υπενθυμίζουν, τι αντιπροσωπεύει;
Μια σειρά, αλλά σε PHP συστοιχίες δεν πρέπει να αναπροσαρμόζονται αριθμητικά.
Μπορούν επίσης να είναι συνεταιριστικές συστοιχίες,
το οποίο σημαίνει ότι μπορείτε να έχετε αυθαίρετες κλειδιών και τιμών.
>> Πολλά αρέσει σε PSET 5, εκείνους από εσάς που έκανε hash εφαρμογές τραπέζι
θα εισαχθεί κατά πάσα πιθανότητα την λέξη και στη συνέχεια να εισαχθεί σε αυτό μια αλυσίδα συνδεδεμένων λιστών,
ή έχετε αποθηκεύσει την αξία της αληθινής κάπου ή κάτι για το σκοπό αυτό.
Θα θυμόμαστε κάπως το γεγονός ότι η λέξη δεν υπήρχε.
Προς το παρόν, αυτό πρόκειται να είναι hash τραπέζι μου,
και έτσι τώρα να πάει για την υλοποίηση της λειτουργίας ελέγχου
Απλά πρέπει να κοιτάξουμε στο εσωτερικό του εν λόγω πίνακα κατακερματισμού
και να δούμε αν μια λέξη είναι εκεί.
Αυτό Πάω να κάνουμε είναι να πάω να πω αν-
ας πούμε isset, το οποίο είναι ένα PHP λειτουργία που κυριολεκτικά σημαίνει ακριβώς είναι το βασικό σύνολο,
έτσι isset ($ πίνακα [$ λέξη],
και αν ναι επιστρέψει αλήθεια.
Αυτό είναι όλο. Αυτό είναι PSET 5 σε PHP.
Λοιπόν, για να είμαστε δίκαιοι, εντάξει.
Αλλιώς επιστρέψει ψευδείς, έτσι δεν είναι εκεί.
Τι πραγματικά συμβαίνει εδώ;
Λοιπόν, αν τραπέζι-ή πίνακα κατακερματισμού εδώ γενικότερα-
είναι ένας associative array που σημαίνει ότι μπορείτε να το δείκτη σε
με μια λέξη, όπως «λέξη», και θα πρέπει να πάρει πίσω κάποια αξία.
>> Είμαστε είδος του να πάρει ένα βήμα μπροστά από τους εαυτούς μας.
Θα ήταν ωραίο είδος του αν πράγματι φορτωθεί το αρχείο πρώτα,
έτσι ώστε το φορτίο δεν είναι τόσο απλό, αλλά επιτρέψτε μου να πάω μπροστά και να μαστίγιο μέχρι
μια πραγματικά γρήγορη εφαρμογή του φορτίου.
Επιτρέψτε μου να προχωρήσει και να πω λόγια παίρνει λεξικό αρχείο.
Η λειτουργία αρχείου σε PHP ανοίγει ένα αρχείο
και επιστρέφει σε εσάς μια σειρά από όλες τις λέξεις σε αυτό το αρχείο,
μόνο τα χέρια τους σε σας.
Αυτό ήταν ένα μεγάλο πόνο πάρα πολύ, έτσι δεν είναι;
Τώρα foreach, αυτό είναι το νέο μας κατασκεύασμα, foreach ($ $ λόγια ως λέξη).
Αυτός ο βρόχος πρόκειται να ξεκινήσει την επανάληψη πάνω από τις λέξεις σειρά
και να αναθέσει στην μεταβλητή $ λέξη κάθε λέξη στο αρχείο
από το πρώτο προς το δεύτερο με το τρίτο στο τέταρτο όλους το δρόμο
έτσι δεν έχω να κάνω την ενοχλητική [i] σημειογραφία και τα παρόμοια.
Και τι είμαι απλώς πρόκειται να κάνει για κάθε μία από αυτές τις λέξεις
έχει αποθηκεύσει στο τραπέζι μου με τιμαριθμική αναπροσαρμογή στο τραπέζι
και στη συνέχεια να κάνει αληθινή, γιατί να θυμάστε
ότι είναι μια λέξη στο λεξικό μου, το μόνο που μπορώ πραγματικά να κάνω
είναι το είδος του αναστρέψετε λίγο και να πω αυτή η λέξη στον πίνακα κατακερματισμού μου είναι εκεί, είναι αλήθεια.
Και αν δεν υπάρχει, δεν έχω να θέσει ρητά ψευδείς,
αλλιώς θα είχα να θέσει ψευδείς για όλες τις πιθανές λέξεις στο σύμπαν.
>> Αρκεί για μένα μόνο να ορίσετε μια τιμή του δείκτη
να ισχύει εάν μια λέξη είναι πραγματικά σε πίνακα κατακερματισμού μου.
Τώρα, είμαι κοπή μερικές γωνίες εδώ ότι εγώ θα κυματίσει στα χέρια μου για τώρα,
αλλά τώρα η λειτουργία του φορτίου γίνεται.
Έχω φορτώσει όλες τις λέξεις από το αρχείο σε μια σειρά.
Έχω επαναλάβει τη διάρκεια αυτής της διάταξης, καθώς και για κάθε λέξη στη συστοιχία
Το βύσμα σε πίνακα κατακερματισμού μου με 1 γραμμή κώδικα.
Αυτό είναι διασκέδαση. Ξέρετε πώς μπορούμε να εφαρμόσουμε το μέγεθος τώρα;
Λοιπόν, το μέγεθος είναι πάντα πολύ εύκολο, για να είμαστε δίκαιοι.
Εδώ μπορούμε απλά να επιστρέψετε αριθμό του πίνακα.
Αυτό είναι αρκετά εύκολο πάρα πολύ, μετρήστε τον αριθμό των πραγμάτων στο τραπέζι.
Αυτό είναι πραγματικά το είδος του δεν τον πιο αποτελεσματικό.
Θα πρέπει να έχουν μάλλον μια μεταβλητή που ονομάζεται μέγεθος ώστε να μπορούμε να το κάνουμε
σε συνεχή χρόνο, αλλά αυτό είναι αρκετά εύκολο.
Ω, και στη συνέχεια να ξεφορτώσουν, αν θέλουμε πραγματικά να είναι πρωκτικό εδώ
μπορούμε να πούμε ότι είναι το πώς θα ξεφορτώσουν κάτι.
Μπορείτε να ορίσετε μόνο την μεταβλητή ίση με ένα άδειο πίνακα,
και παίρνει απαλλαγούμε από ό, τι ήταν εκεί.
Δεν χρειάζεται να καλέσετε δωρεάν.
>> Και πάλι, έχω κόψει κάποιες γωνίες, και ζητώ συγγνώμη για το σύνολο πρόβλημα εκχώρηση 5
ίσως σε C, αλλά αν εμείς τώρα να προχωρήσει και αυτό λειτουργεί,
Πάω να τρέξει πραγματικά την έκδοση που έγραψα εκ των προτέρων
ακριβώς έτσι ότι δεν είχα κάνει καμία απολύτως συντακτικά λάθη.
Επιτρέψτε μου να πάμε μπροστά και να τρέξει ορθογράφος. Η χρήση είναι η ίδια.
Εδώ είναι ένα αρχείο το οποίο περιέχει λεξικό τη λέξη foo.
Εδώ είναι ένα αρχείο κειμένου που περιέχει μόνο foo bar.
Ας ορθογραφικό έλεγχο αυτό, έτσι ορθογράφος, χρησιμοποιώντας αυτό το αρχείο λεξικού για αυτό το αρχείο κειμένου.
Υπάρχει μια ανορθόγραφη λέξη, μπαρ, και voila.
Έγινε με PSET 5.
Ας ρίξουμε μια 5-λεπτά με διάλειμμα εδώ, και θα έρθει πίσω και περισσότερο σε PHP.
Εντάξει, είμαστε πίσω.
Ας μου κάνουν-το μίσος για λίγο.
Ας δούμε τώρα πραγματικά αν αυτό δεν ήταν μια θετική
ουσιαστική εφαρμογή αυτό το πράγμα στην PHP.
Σύμφωνοι, χρειάστηκε 45 δευτερόλεπτα για να εφαρμόσει.
>> Αλλά ας προχωρήσουμε τώρα και να τρέξει τα πράγματα.
Επιτρέψτε μου να προχωρήσει και να εκτελέσετε μια έκδοση C
του Ορθογράφου, και θα τρέξει σε ένα από τα μεγαλύτερα αρχεία,
το οποίο είναι το βασιλιά James Bible.
Και αυτό είναι εδώ, ας πάμε στο φάκελο C μας,
ορθογράφος στο King James το 5ο.
Πολλές λέξεις με ορθογραφικά λάθη.
Εντάξει, έτσι ώστε να είναι η έξοδος ίσως έχεις ακόμη και αν οι καιροί είναι λίγο διαφορετικό,
αν έχεις τα πάντα λειτουργούν σωστά, και έτσι συνολικά το χρόνο για ορθογραφικό έλεγχο
το βασιλιά James Bible ήταν 0,38 δευτερόλεπτα, έτσι αρκετά καλή χρησιμοποιούν την εφαρμογή.
Τώρα, επιτρέψτε μου να πάω στην έκδοση της PHP, που μόλις έγραψε.
Επιτρέψτε μου να τρέξει ορθογράφος στο King James.
Ωχ, αγνοήστε το σφάλμα. Είμαι σε λάθος κατάλογο.
Ορθογράφος στο King James το 5ο.
Σχεδόν γίνει.
>> Εντάξει, ο οξυδερκής παρατηρητής θα διαπιστώσει ότι ήταν περισσότερο από 3 δευτερόλεπτα εκεί.
Αυτός είναι ο αληθινός χρόνος τρέχει.
Αποδεικνύεται ότι χρειάζεται χρόνος για να φτύνουν πολλά από κείμενο
λόγω των ρυθμιστικών θεμάτων, αλλά τα πολυλογώ,
που ήταν 3,15 δευτερόλεπτα του χρόνου μηχανής, CPU χρόνο,
σε σχέση με αυτό που ήταν πριν από λίγο;
Όπως .3.
Θέλω να πω, αυτό είναι μια τάξη μεγέθους πιο αργή, ώστε όπου είναι ότι
γελοίο επιβράδυνση που προέρχονται από;
Λοιπόν, όπως ήταν η περίπτωση με τα περισσότερα οποιαδήποτε απόφαση σχεδιασμό που έχουμε κάνει
στην τάξη κατά τη διάρκεια των τελευταίων 9 εβδομάδων υπάρχει σχεδόν πάντα αυτό το δίλημμα.
Μερικές φορές μόνο μεταξύ διάστημα, μερικές φορές ανάμεσα στο χώρο και το χρόνο,
χώρου, χρόνο και προσπάθεια ανάπτυξης, και μάλιστα εδώ, ακόμη και αν
σώσαμε ένα τεράστιο ποσό του χρόνου, ίσως δυνητικά 20/10/30 ώρα
του χρόνου εφαρμογής της ανάπτυξης ορθογραφικό έλεγχο
από το μαστίγωμα σε μόλις 45 δευτερόλεπτα με αυτό γλώσσα
το τίμημα που πληρώνουμε είναι ότι είναι μια τάξη μεγέθους πιο αργή ως αποτέλεσμα,
και αυτό συμβαίνει κατά κανόνα με τις περισσότερες ερμηνεύεται οποιαδήποτε γλώσσα,
PHP, Python, Ruby, Pearl ή άλλους σύμφωνα με την οποία
αν θέλει κάποιος να τρέξει μέσω διερμηνέα και έχετε διαβάσει τον κωδικό σας
γραμμή προς γραμμή, πάνω προς τα κάτω, αριστερά προς τα δεξιά,
μεσάζων που πρόκειται να πάρει κάποιο χρόνο από τη δική του,
και αυτό που αισθάνεται εδώ στα 3 δευτερόλεπτα, σε αντίθεση με 0,3 δευτερόλεπτα
είναι το γεγονός ότι υπάρχει αυτή η μεσάζων ο οποίος έχει να ερμηνεύσει κυριολεκτικά κώδικα μας
γραμμή προς γραμμή, και Θεός φυλάξοι, αν είστε μέσα από ένα βρόχο
με ένα τεράστιο αρχείο που περιέχει εκατοντάδες χιλιάδες λέξεις.
>> Αυτό γενικά πρόκειται να προσθέσει μέχρι και να προσθέσετε και να προσθέσετε έως και αθροίζονται.
Για ένα εργαλείο όπως αυτό είναι πιθανόν να μην είναι η καλύτερη γλώσσα που θα χρησιμοποιηθεί για την υλοποίηση
ένα ορθογράφο αν αμεσότητα είναι ενδιαφέρον για τους χρήστες σας και να σας.
Αλλά η πολυτέλεια που έχουμε σε μια στιγμή είναι αν
χρησιμοποιήσετε μια γλώσσα όπως η PHP ή πολλές γλώσσες ερμηνεύεται
στο πλαίσιο του Web, για εκείνο το θέμα, έχετε το πλεονέκτημα
ότι το Διαδίκτυο είναι μια πολύ πιο αργή από ό, τι οι περισσότεροι υπολογιστές.
Έχετε GHz CPU στον υπολογιστή σας, 2 GHz, ίσως ακόμη περισσότερο αυτές τις μέρες.
Αλλά η πραγματικότητα είναι στο διαδίκτυο υπάρχει ένα μεγάλο ποσό από λανθάνουσα κατάσταση
σύμφωνα με την οποία ένα πρόγραμμα περιήγησης για να μιλήσετε με έναν server, αν και είδαμε την περασμένη εβδομάδα
ότι είναι αρκετά γρήγορος, μισό χιλιοστό του δευτερολέπτου ή έτσι,
που προσθέτει πάρα πολύ, και αν είστε λήψη πράγματα όπως μια εικόνα
ή μια φωτογραφία στο Facebook ή να πάρει άμεσα μηνύματα πάνω φλυαρία του Facebook,
GChat ή τα παρόμοια, όλα αυτά τα μετ χρόνους
μεταξύ του προγράμματος περιήγησης και την έναρξη του διακομιστή για να προσθέσετε επάνω,
γεγονός που καθιστά συγκεκριμένη επιλογή της γλώσσας σε πολλές περιπτώσεις
δεν είναι όλοι ότι είναι σκόπιμο, ώστε να είστε πρόστιμο χρησιμοποιώντας μια ελαφρώς πιο αργή γλώσσα
όπως PHP ή Python ή Ruby
αλλά για τα οποία υπάρχουν τεράστιες upsides για εσάς και τους συναδέλφους σας
και τους φίλους σας, επειδή μπορείτε να εφαρμόσετε τα πράγματα έτσι, πολύ πιο γρήγορα.
Και επιπλέον, έχετε πολύ μικρότερο κίνδυνο από ορισμένα κενά ασφαλείας.
Δεν υπάρχει καμία δείκτες σε PHP.
Δεν υπάρχει καμία διαχωρίζονται από σφάλματα που μπορείτε εύκολα να προκαλέσει
με τον ίδιο τρόπο που θα μπορούσε C.
Με C είστε σούπερ κοντά στο hardware.
Με την PHP και παρόμοιες γλώσσες είστε το είδος του υψηλότερου επιπέδου, να το πω έτσι,
με πολλές άμυνες ανάμεσα σε εσάς και το τι πραγματικά συμβαίνει
στο εσωτερικό της μηχανής, και αυτό είναι ακριβώς μια ανταλλαγή.
>> Έχουμε φτάσει στο σημείο να έχουμε αυτές τις πιο σύγχρονες, υψηλού επιπέδου γλώσσες
όπως PHP, διότι τα διδάγματα που αντλήθηκαν σε γλώσσες όπως η PHP σε C.
Αλλά αν δεν καταλαβαίνετε τι συμβαίνει με κάτω από την κουκούλα όλο αυτό το διάστημα
σίγουρα δεν μπορεί να κάνει τις σωστές αποφάσεις για το σχεδιασμό,
και σίγουρα όταν πρόκειται για την εργασία σε ένα μέρος όπως το Facebook ή το Google
ή οποιαδήποτε από αυτά τα μέρη που είναι όλο και περισσότερο παίζει με μεγάλα σύνολα δεδομένων
ακόμη και αν πάτε πίσω και να premed και εργάζονται με κάποια MD
σε ορισμένες μεγάλες δεδομένα που αφορούν τους ασθενείς και τους γιατρούς
και τα παρόμοια με τα κατάλληλα εργαλεία είναι εξαιρετικά συναρπαστικό
γιατί διαφορετικά η ανάλυση σας από κάποιο σύνολο δεδομένων θα μπορούσε να λάβει δευτερόλεπτα,
ή μπορεί να χρειαστούν κυριολεκτικά ώρες.
Αυτό είναι μόνο ένα παράδειγμα, για να μην σας εμποδίσει με πόση περισσότερη προσπάθεια
ήταν σε C αλλά για να σας βοηθήσει να εκτιμήσετε ότι, όταν δεν εφαρμόζουν κάτι σε C
που πραγματικά καταλαβαίνουν, ή στη θεωρία, πραγματικά καταλαβαίνουν
πως ό, τι είναι ή θα πρέπει να εργάζονται, και έχετε πλήρη έλεγχο σχεδόν
πάνω από ό, τι συμβαίνει κάτω από την κουκούλα, και με αυτές τις υψηλότερες επιπέδου γλώσσες
θα πρέπει να παραιτηθεί από περισσότερο έλεγχο στους ανθρώπους που τους επινόησε
και υπόκεινται περισσότερο σε αποφάσεις του σχεδιασμού τους από τη δική σας.
Αλλά αν λάβουμε ως δεδομένο ότι η απόδοση
δεν είναι τόσο σημαντική για το Web, λόγω αυτών των άλλων θεμάτων,
μόλις ταχύτητες δικτύου είναι λίγο πιο αργή από ό, τι CPU ταχύτητες ούτως ή άλλως,
έτσι μπορούμε να ταξινομήσουμε από την οικονομική δυνατότητα να χρησιμοποιήσετε μια ελαφρά πιο αργό γλώσσα
αν είναι οι upsides μπορούμε να αναπτύξουμε τα πράγματα 10 φορές πιο γρήγορα ή ακόμη περισσότερο.
>> Ας δούμε πώς μπορούμε να αρχίσετε να χρησιμοποιείτε αυτό.
Επιτρέψτε μου να πάω σε ένα φάκελο
μεταξύ παραδείγματα σήμερα ονομάζεται frosh.ims,
και αυτό είχε πράγματι προσωπικά αιτιολογείται από το γεγονός ότι το πρώτο πράγμα
Έγραψα για το Web χρόνια μετά τη λήψη CS50 και CS51
Ήταν μια ιστοσελίδα για το πρόγραμμα Frosh ΔΥ, καινούριο σπορ εντός των τειχών,
η οποία κατά το χρόνο αυτό ήταν αρκετά χρόνια πριν ότι κατά το χρόνο
δεν υπήρχε καμία ιστοσελίδα για το πρόγραμμα, ακόμα κι αν υπήρχε στο Web,
και αντ 'αυτού υπήρξε μια Proctor σε Wigglesworth σύμφωνα με την οποία αν θέλετε
να εγγραφείτε για βόλεϊ ή το ποδόσφαιρο ή ό, τι θα συμπληρώσετε ένα κομμάτι χαρτί.
Τότε θα περπατήσει σε όλη την αυλή.
Τότε θα χτυπήσει την πόρτα και διαφάνεια στην πόρτα τους ή το χέρι τους για να την επόπτη
ένα κομμάτι χαρτί με το όνομά σας σε αυτό, αν θέλετε ή όχι να είναι ένας αρχηγός της ομάδας,
τι άθλημα που ήθελε να κάνει, και τι dorm ήσουν μέσα
Ήταν το είδος του ένα παλιό σχολείο τρόπο να κάνουμε πράγματα, και αυτό ήταν μια προνομιακή
ευκαιρία για αυτοματοποίηση πολλά από αυτή τη διαδικασία.
Απλά πηγαίνετε στην ιστοσελίδα. Πληκτρολογείτε κάτι μέσα
Μπορείτε να πάρετε ένα e-mail επιβεβαίωσης, και έκρηξη, τελειώσατε.
>> Αυτό ήταν το πρώτο πράγμα που έκανα, αν και σε μια γλώσσα που ονομάζεται Pearl,
αλλά είναι σχετικά εύκολο να γίνει σε PHP, και αυτό είναι το είδος της αντιπροσωπευτικής
από τα προβλήματα που μπορεί να ξεκινήσει την επίλυση όταν μπορείτε να εκφραστείτε
προγραμματισμού και να μην χρειάζεται να βασίζονται σε πράγματα όπως το Google τόπων
ή το Excel ή εργαλεία που παραδίδονται σε σας.
Εσείς έχετε τώρα τη δυνατότητα να κάνουμε τα πράγματα όπως αυτό.
Αυτό είναι ένα εξαιρετικά άσχημο έκδοση ενός εντύπου,
αλλά ας το χρησιμοποιούν μόνο για την αρχή της συνομιλίας όπου αυτό είναι
περίπου ποια είναι η μορφή έμοιαζε για χρόνια μας
να επιτρέψει στους ανθρώπους για το Web για να υπογράψει επάνω για Frosh ΔΥ.
Ζητήσαμε ένα όνομα, ένα πλαίσιο ελέγχου για το αν ή δεν ήθελαν να είναι καπετάνιος,
αρσενικό ή θηλυκό, και τότε τι dorm που ήταν,
και στη συνέχεια θα υποβάλει το παρόν έντυπο.
Ας πρώτη ματιά κάτω από την κουκούλα στο HTML που εκπροσωπεί αυτή την ιστοσελίδα.
Επιτρέψτε μου να πάω σε froshims0,
και ως ένα μέρος, για PSET 7 παίρνω ως δεδομένο
τους καταλόγους και τους φακέλους που βάζω τα πράγματα μέσα
Θα σας καθοδηγήσει ακριβώς όπου τα πράγματα πρέπει να πάνε στη συσκευή,
εντολές οι οποίες mod θα πρέπει να τρέξει, οπότε μην ανησυχείτε για όλα τα
ηλίθιο λεπτομέρειες σε συγχρονισμό από το get-go εδώ.
>> Εντάξει, εδώ είναι froshims0.php.
Επιτρέψτε μου να μετακινηθείτε προς τα κάτω, και τι είναι περίεργο εδώ,
αυτό είναι ένα PHP αρχείο, αλλά αυτό που είναι μέσα από αυτό, με σαφήνεια;
Είναι ένα πάρα πολύ της HTML, και μάλιστα, προέλευση της PHP
Πραγματικά ήταν για να είναι μια Web-centric γλώσσα.
Μια στιγμή πριν το χρησιμοποιήσαμε για την εφαρμογή της μπύρας παράδειγμα,
οι συνθήκες παράδειγμα, ο γειά σου παράδειγμα, και ότι είναι μια χαρά.
Μπορείτε να χρησιμοποιήσετε την PHP ως γλώσσα scripting
όπου ένα σενάριο είναι πραγματικά μόνο η ονοματολογία που δίνεται σε ένα γρήγορο και βρώμικο πρόγραμμα
ή κάτι που γράφετε σε ένα σενάριο ή πιο γενικά ερμηνεύεται μια γλώσσα.
PHP είναι εξαιρετικά χρήσιμο για ότι επειδή έχετε δει πόσο γρήγορα
σχετικά μπορούμε να μαστίγιο μέχρι προγραμμάτων σε PHP.
Αλλά ήταν πραγματικά σχεδιαστεί για να χρησιμοποιηθεί για το Web,
και έχει σχεδιαστεί για το Web, με την έννοια που παρατηρώ εδώ στην κορυφή του αρχείου
Εγώ αρχίζουν με <? Php.
Στη συνέχεια, έχω ένα σωρό άχρηστες χορηγηθεί σχόλια, αλλά στη συνέχεια, κλείνω PHP λειτουργία.
Αλλά τότε θα πέσει σε HTML mode.
>> Τι ενδιαφέρον για PHP είναι αν το αρχείο τελειώνει σε. Php
αυτό είναι γενικά προορίζεται να αναμειγνύονται με HTML,
ο κώδικας PHP, HTML μερικά.
Και θα δούμε τελικά ότι μπορούμε να αρχίσουμε να πειράζω τα εκτός
και κρατήστε HTML μας ξεχωριστά από PHP μας συνολικά,
αλλά οι ρίζες της PHP ήταν πραγματικά να σας δώσει αυτή την ευελιξία,
ότι αν θέλετε κάποια HTML γράφουν απλά, και ότι θα είναι
φτύσει τον ίδιο τρόπο στο πρόγραμμα περιήγησης.
Αλλά εάν χρειάζεστε κάποια τεχνική προγραμματισμού,
κάποια κώδικα προγραμματισμού, μπορείτε να βάλετε επίσης στο ίδιο ακριβώς αρχείο, όπως θα δούμε σύντομα.
Εδώ είναι HTML μου.
Έχω έναν τίτλο για αυτό Frosh ΔΥ.
Έχω μια ετικέτα σώμα που έχει πήρα κάποια CSS για να τα πάντα κέντρο στη μέση,
και στη συνέχεια κάτω εδώ έχω ένα έντυπο το οποίο προφανώς θα πρέπει να υποβληθούν
σε ένα νέο αρχείο που ονομάζεται register0.php, έτσι θα δούμε ότι σε μια στιγμή.
Είναι χρησιμοποιώντας μια μέθοδο που ονομάζεται μετά, το οποίο θα επανέλθουμε, καθώς και.
Στη συνέχεια, έχω κάποιες εισόδους μορφή, ένα όνομα που ονομάζεται, των οποίων ο τύπος είναι κείμενο,
εκείνο του οποίου το όνομα είναι καπετάνιος, του οποίου ο τύπος είναι κουτάκι,
και αυτό, δεν έχουμε ξαναδεί, αλλά κάνει ακριβώς αυτό που λέει.
Θα πάρετε ένα κουτάκι αντί για ένα πλαίσιο κειμένου.
Εδώ κάτω, έχετε ένα κουμπί, το οποίο είναι ένα από τα κυκλικά κουμπιά
ότι μπορείτε να επιλέξετε είτε αυτή ενός ή του άλλου.
>> Σημειώστε ότι είναι σκόπιμη ότι έδωσα και τα δύο κουμπιά ραδιοφώνου το όνομα της ισότητας των φύλων.
Αυτό είναι το πώς μπορείτε να πάρετε αμοιβαίου αποκλεισμού σύμφωνα με την οποία πρέπει να κάνετε κλικ
είτε αυτό ή εκείνο το ένα, και πατώντας το άλλο
το unchecks το άλλο, έτσι ώστε να πρέπει να τους δώσουμε το ίδιο όνομα
αν θέλετε να είναι αμοιβαία αποκλειόμενα, όπως αυτό.
Και στη συνέχεια, για dorm, δεν νομίζω ότι έχουμε δει ακόμα αυτό, αλλά είναι μια επιλογή μενού, ένα drop-down μενού.
Η ετικέτα για αυτό είναι επιλογή.
Μπορείτε στη συνέχεια να δώσει το drop-down μενού το όνομα,
και στη συνέχεια, έχετε ένα σωρό από αυτές τις επιλογές.
Η πρώτη, μόνο για λόγους αισθητικής, είναι μια κενή συμβολοσειρά.
Ήθελα απλώς το drop down να είναι κενή από προεπιλογή,
και στη συνέχεια υπάρχει Apley, Canaday, Grays, και ούτω καθεξής.
Και παρατηρήσετε την διχοτόμηση εδώ.
Η επιλογή του σταγόνα κάτω έχει μια αξία,
αλλά τότε έχει ένα ανθρώπινο-φιλικό όνομα, η οποία σε αυτό το παράδειγμα
είναι η ίδια, αλλά αν πραγματικά ήθελε να είναι πρωκτικό θα μπορούσαμε να έχουμε
η αξία αυτής της πτώσης κάτω ακριβώς είναι η σύντομη εκδοχή,
Grays, αλλά μπορούμε να πούμε πραγματικά Grays Hall ότι ο άνθρωπος βλέπει πραγματικά,
αλλά αυτό δεν είναι και τόσο ενδιαφέρουσα, γι 'αυτό ακριβώς το κράτησε απλό και έκανε τα ίδια.
Στη συνέχεια, κάτω στο κάτω μέρος έχουμε ένα κουμπί submit
που έχουμε δει μέχρι σήμερα, αλλά παρατηρώ εγώ απλά του έδωσε μια διαφορετική λέξη.
Αντί CS50 αναζήτηση έδωσα την ετικέτα "Εγγραφή".
>> Το τελικό αποτέλεσμα είναι η ιστοσελίδα εδώ, και πάλι,
όταν το κάνει αυτό παίρνει υποβάλλονται;
Παίρνει υποβάλλονται σε κάποιο αρχείο, η τιμή του χαρακτηριστικού δράσης,
που ήταν register0.php.
Για να δούμε τι πραγματικά συμβαίνει εδώ.
Επιτρέψτε μου να προχωρήσει και συμπληρώστε την φόρμα, λένε David,
αρσενικό, Matthews, και τότε θα πω εγγραφείτε.
Επιτρέψτε μου σμίκρυνση και κάντε κλικ στο εγγραφείτε.
Εντάξει, έτσι το είδος των άχρηστων, αλλά ας δούμε τι πραγματικά συμβαίνει.
Παρατηρήστε ότι η διεύθυνση URL έχει αλλάξει για να είναι register0.php.
Τι είναι περιέργως, απουσιάζει από το URL, όμως, ακόμα κι αν υποβάλλονται μόνο μια μορφή;
[Ακούγεται ανταπόκριση των φοιτητών]
Εντάξει, αυτό είναι ακριβώς Chrome είναι φιλικό προς το χρήστη αυτές τις μέρες.
Αυτό είναι πραγματικά εκεί. Κρύβουν ακριβώς για να εξοικονομήσετε χώρο.
Όμως, η καλή σκέψη, καλή σκέψη.
Προς το άλλο άκρο του URL, όμως, τι λείπει; Ναι.
[Φοιτητικό] Η συμβολοσειρά ερωτήματος.
Το ερώτημα συμβολοσειρά, έτσι θυμάμαι από απλά παραδείγματα αναζήτησης Google μας.
Μόλις κάνω κλικ στο κουμπί υποβολής το URL
Μου πήρε στο Google, αλλά τότε ήταν εκεί; q = επιστήμη των υπολογιστών ή ό, τι είχα πληκτρολογήσει μέσα
Αυτό συμβαίνει γιατί χρησιμοποιήσαμε τη μέθοδο GET με το παράδειγμα αναζήτησης.
>> Αυτή τη φορά είμαστε με ποια μέθοδο αντ 'αυτού;
Δημοσίευση, και μία από τις άμεσες διακρίσεις
μεταξύ να πάρει και μετά είναι ότι μετά δεν θέτει είσοδο του χρήστη στο URL.
Είναι κρύβει. Στέλνει ακόμα.
Στην πραγματικότητα, αυτό που βλέπουμε στο πρόγραμμα περιήγησης εδώ, όπως θα αποκαλύψει σε μια στιγμή
κοιτάζοντας register0, είναι βλέπω μόνο τα περιεχόμενα
του πίνακα που υποβλήθηκαν από το πρόγραμμα περιήγησης στον server.
Όμως, η διεύθυνση URL δεν έχει;, δεν έχει λέξεις-κλειδιά
αξιών ή σε αυτό, και γιατί συμβαίνει αυτό;
Λοιπόν, μετά σας επιτρέπει να υποβάλει ακόμα τα δεδομένα από τη φόρμα σε ένα διακομιστή,
αλλά δεν το έθεσε στη διεύθυνση URL, έτσι τι είδους πληροφορίες είναι μετά
ιδιαίτερα κατάλληλη για ίσως όταν ζητάτε από το χρήστη να
πληκτρολογήστε στην είσοδο σε μια φόρμα;
Κάτι σαν έναν κωδικό πρόσβασης, κάτι σαν τι άλλο;
Αριθμούς πιστωτικών καρτών.
Ό, τι είναι ελαφρώς ευαίσθητο ίσως δεν θέλουν να καταλήξουν στη διεύθυνση URL
έστω και μόνο επειδή αυτό σημαίνει ότι ο συγκάτοικος σας ή μέλος της οικογένειας μπορεί μόνο μέσω troll
ιστορία Διαδικτύου σας και στη συνέχεια να δούμε κυριολεκτικά τους κωδικούς πρόσβασης σας,
κυριολεκτικά δείτε αριθμούς πιστωτικών καρτών σας επειδή οι περισσότεροι browsers
θυμηθείτε την ιστορία ό, τι διευθύνσεις URL που έχουν πάει στο,
οπότε αν μόνο διότι αυτό θα ήταν μια κακή ιδέα.
Χρησιμοποιώντας κρύβει ότι μετά λεπτομέρεια από το χρήστη.
>> Επίσης, πώς να ανεβάσετε μια φωτογραφία στο Facebook;
Λοιπόν, οι μηχανισμοί μόνο 2 μπορείτε πραγματικά να χρησιμοποιήσετε,
ακόμα κι αν υπάρχουν μερικά άλλα πιο απόκρυφες αυτές, είναι να πάρετε και μετά.
Πως να ανεβάσετε μια φωτογραφία, ενδεχομένως μέσω ενός URL;
Μπορείτε να το κάνετε πραγματικότητα.
Μπορείτε να πάρετε ένα JPEG ή bitmap ή GIF και μπορείτε να την εκπροσωπήσει σε δεκαεξαδικό
ή κάτι που ονομάζεται βάση 64.
Αντί της βάσης 16 που χρησιμοποιείτε βάση 64, που ουσιαστικά μοιάζει
Χαρακτήρες ASCII, και μπορείτε να ανεβάσετε μια φωτογραφία στην πραγματικότητα μέσω ενός URL
μετά από ένα ερωτηματικό, αλλά υπάρχουν γενικά όρια μεγέθους.
Οι περισσότεροι browsers αναγκάσει τις διευθύνσεις URL για να είναι όχι περισσότερους από 1.000 χαρακτήρες,
ίσως 2.000 χαρακτήρες ή τα παρόμοια, έτσι δεν μπορείτε να ανεβάσετε
10 MB μια φωτογραφία στο Facebook.
Για να μπορείτε μετά τη χρήση, καθώς, έτσι για τώρα να βάζει τις παραμέτρους στη διεύθυνση URL,
το οποίο είναι ωραίο και χρήσιμο μερικές φορές, αλλά για κάτι μεγάλο ή ευαίσθητα
μετά είναι ο τρόπος να πάει.
Τι register0 πραγματικά κάνει εδώ;
Λοιπόν, αν έχω ανοίξει register0 ειδοποίηση ότι πρόκειται για μια εξαιρετικά απλή σελίδα,
αλλά αυτό είναι που αποδεικνύουν το γεγονός ότι μπορώ να συν-σμίγω, προς το καλύτερο ή προς το χειρότερο,
HTML με PHP.
Όλο αυτό το αρχείο, εκτός από τα σχόλια στην κορυφή, είναι HTML
εκτός από αυτόν τον τύπο εδώ.
>> Παρατηρήστε στην μέση του κώδικα PHP μου,
στην μέση του HTML μου, έχω το είδος του προσωρινά
εισέλθει PHP λειτουργία.
Παίρνω μια ειδική λειτουργία που ονομάζεται εκτύπωση r.
Αυτό σημαίνει αναδρομική εκτύπωση, και αυτό που κάνει είναι να τυπώνει αναδρομικά
μεταβλητή ό, τι μπορείτε να παραδώσετε, ερωτηματικό, έξοδος PHP λειτουργία.
Και η προ ετικέτα σας δίνει προ-μορφοποιημένο κείμενο,
μονο κείμενο χώρου, έτσι ώστε κάθε χώρος που βλέπετε είναι στην πραγματικότητα.
Δεν εξαφανίζονται. Ποια είναι η θέση;
Λοιπόν, τι είναι ενδιαφέρον και συναρπαστικό για PHP
είναι ότι κάθε φορά που υποβάλλετε μια φόρμα χρησιμοποιώντας πάρει ή να δημοσιεύσετε
κάτι που είναι που υποβάλλονται σε σας από ένα πρόγραμμα περιήγησης
PHP η ίδια υπολογίζει ποια είναι αυτά τα βασικά ζεύγη αξία,
από τα στοιχεία, εάν υπάρχει ίση σημάδια, τα στοιχεία έξω αν υπάρχει ένα ερωτηματικό.
Αυτό κάνει όλη τη σκληρή δουλειά για σας, και στη συνέχεια τα χέρια σας ένα associative array
που περιέχει τα πάντα ότι ο χρήστης πληκτρολογήσει στη φόρμα.
Λοιπόν, ποια πεδία δεν έχει αυτή η μορφή;
>> Είχε 4 πεδία.
Το ένα ήταν ένα πεδίο κειμένου που ονομάζεται όνομα.
Το ένα ήταν ένα κουτάκι που ονομάζεται καπετάνιος.
Το ένα ήταν ένα κουμπί που ονομάζεται φύλο,
και ο ένας ήταν ένα drop-down μενού που ονομάζεται dorm,
έτσι παρατηρήσετε όταν εκτυπώνω αναδρομικά
τα περιεχόμενα αυτής της ειδικής μεταβλητής.
Αυτή είναι μια ειδική μεταβλητή που ονομάζεται παγκόσμια κυριολεκτικά $ _POST, σε όλα τα καλύμματα.
Αυτή είναι μια ειδική παγκόσμια μεταβλητή ότι η PHP δημιουργεί μόνο για εσάς
και τα χέρια σας έτσι ώστε να μπορείτε να έχετε πρόσβαση τα πάντα
που υποβλήθηκε μέσω μιας φόρμας από ένα χρήστη.
Και καλώντας r εκτύπωσης σε αυτό-δεν θα το κάνουμε αυτό σε μια κανονική εφαρμογή.
Κάνουμε αυτό για να δείτε μέσα από αυτή τη μεταβλητή,
και τι είναι μέσα από αυτό, καλά, 4 κλειδιών,
4 http παραμέτρους, να το πω έτσι,
όνομα, καπετάνιος, το φύλο, dorm, και στη συνέχεια, οι αξίες που ο χρήστης
πληκτρολογήσει με μία εξαίρεση.
Έκανα τύπου ϋ-Α-V-Ι-ϋ.
Έλεγξα το πλαίσιο, όμως, για τους άνδρες, που υποβάλλονται προφανώς μια τιμή
μόλις μέτρα να είναι σύντομη.
>> Όταν έχω επιλέξει Matthews αυτή είναι η τιμή που πήρε επιλεγεί,
και αυτό είναι λίγο χαζό, αλλά είναι η σύμβαση.
Όταν έλεγξα το πλαίσιο, η αξία του για «την», πήρε υποβλήθηκαν για το κουτάκι.
Αν δεν είχε ελεγχθεί, δεν έχει αξία θα έχουν σταλεί καθόλου.
Αυτό ακριβώς μας δίνει ιδέες για το τι είναι μέσα από αυτή την ειδική καθολική μεταβλητή,
και είναι τόσο ξεχωριστό που λέγεται σούπερ global μεταβλητή.
Υπάρχει παντού για σας στον κωδικό σας, ώστε να μπορείτε να έχετε πρόσβαση πραγματικά.
Αυτό δεν είναι ότι συναρπαστικό, έτσι ας χρησιμοποιήσουμε πραγματικά το σούπερ παγκόσμιο
και πραγματικά να προσπαθήσει κάποιος να εγγραφείτε.
Σε froshims1 Πάω να κάνω μια αλλαγή.
Αλλάζω την προσφυγή register1.php,
και κάνω κάτι άλλο.
Ήμουν είδος δύσκολη θέση από την ποιότητα της ιστοσελίδας μου εκεί.
Είναι αρκετά αποκρουστικό, ειλικρινά, έτσι ώστε να αποδεικνύεται
που μπορείτε να χρησιμοποιήσετε πολύ εύκολα στο διαδίκτυο
JavaScript άλλων ανθρώπων κώδικα, CSS άλλων ανθρώπων
ότι έχουν γράψει και ανοικτή προέλευσης και διατίθεται ως μια βιβλιοθήκη,
να το πω έτσι, και, για παράδειγμα, εδώ είμαι χρησιμοποιώντας ένα ελεύθερα διαθέσιμο βιβλιοθήκη,
μια δέσμη των κώδικα που έγραψε κάποιος άλλος.
>> Twitter έτυχε να γράψω αυτόν τον κώδικα, και ονομάζεται η βιβλιοθήκη εκκίνησης,
και αυτό είναι ακριβώς μια δέσμη των CSS φύλλα στυλ, ένα σωρό. css αρχείων
ότι κάποιος άλλος έγραψε και βρει τον τρόπο για να πάρει ό, τι ωραίο και αρκετά
έτσι ώστε οι άνθρωποι σαν κι εμάς να ανησυχούμε λίγο λιγότερο για την αισθητική και επικεντρωθεί περισσότερο
στη λογική και την πραγματική προγραμματισμό.
Με τη σύνδεση αυτή με την ετικέτα, η οποία είναι η ίδια ετικέτα που χρησιμοποιείται για να θυμάστε styles3.css νωρίτερα,
Τώρα έχω πρόσβαση σε ένα αρχείο που ονομάζεται bootstrap.min.css.
Ελάχιστη σημαίνει ακριβώς αυτό που έχουν minified και έχουν πάρει απαλλαγούμε από όλα το λευκό χώρο και ούτω καθεξής
ακριβώς για να βεβαιωθείτε ότι δεν είστε να μου στείλει περισσότερα bytes από ό, τι πραγματικά χρειάζεται.
Αλλά υπάρχει ένα σωρό CSS, οπότε αν εγώ τώρα να ανοίξει την έκδοση 1 του Frosh ΔΥ
παρατηρήσετε ότι το αρχείο μου είναι σίγουρα πιο όμορφη.
Τώρα είναι ακόμα μόνο μαύρο και άσπρο, αλλά παρατηρώ ότι με τη χρήση μόνο φύλλο στυλ τους
και με τη χρήση ορισμένων δυνατοτήτων του στη φόρμα μου, δεν είναι εκπληκτικό,
αλλά είναι σίγουρα καθαρότερη από ό, τι ήταν πριν, και ο προβολέας δεν έχει κάνει δικαιοσύνη.
Υπάρχει λίγο γκρι γραμμές γύρω από τα κουμπιά και γύρω από το πεδίο κειμένου εδώ,
, αλλά είναι σίγουρα καθαρότερη από ό, τι ήταν πριν.
>> Τώρα, για να είμαστε δίκαιοι, θα έπρεπε να αλλάξει σήμανσης μου λίγο.
Αυτή είναι η έκδοση 1, και να παρατηρήσετε ότι έχω χρησιμοποιήσει μερικές νέες ετικέτες,
και ειλικρινά, δεν είχα ιδέα πώς να το κάνουμε αυτό μέχρι να διαβάσετε την τεκμηρίωση
για τη βιβλιοθήκη εκκίνησης του Twitter, και μου είπαν, αν θέλετε να χρησιμοποιήσετε τη βιβλιοθήκη μας
χρησιμοποιήσετε ένα στοιχείο πεδίων στο εσωτερικό της φόρμας σας,
βάλει τη λέξη που θέλετε να δείτε δίπλα σε ένα πεδίο μέσα από μια ταμπέλα,
στη συνέχεια να δώσει τη συμβολή σας ένα όνομα, όπως ακριβώς και πριν,
και στη συνέχεια για το πλαίσιο ελέγχου, όχι μόνο δεν θα το τυλίγουμε σε μια ετικέτα στοιχείου,
χρησιμοποιείτε κάτι που ονομάζεται μια τάξη, γι 'αυτό δεν έχουν ξαναδεί αυτό,
αλλά θα δείτε αυτό σε μία από τις ταινίες μικρού μήκους 7 PSET του.
Μια τάξη CSS σας επιτρέπει να κάνετε κάτι πολύ παρόμοιο με την ταυτότητα,
αλλά πριν όταν είχαμε ένα αναγνωριστικό με το σύμβολο #
που ήταν για ένα και μόνο ένα στοιχείο.
Τι είναι ωραίο για μια κατηγορία είναι ότι πολλά στοιχεία μπορεί να έχουν την ίδια τάξη
ή το ίδιο υλικό CSS εφαρμόζονται σε αυτό.
>> Αλλά και πάλι, περισσότερο σε εκείνους που, βραχυπρόθεσμα, και το υπόλοιπο αυτό είναι απλά να αντιγράψετε και να επικολλήσετε
από τα έγγραφα που τους έχω προσθέσει μια ετικέτα εδώ και εκεί.
Και στο τέλος, γιατί έχω την ετικέτα περιλαμβάνονται σύνδεσμο στην κορυφή,
ό, τι φαίνεται πιο όμορφη αυτόματα
με απλά να σημειώνονται μέχρι τη σελίδα μου με έναν τρόπο που
Twitter αναμένεται, και υπάρχει τόσο πολλούς διαφορετικούς τρόπους
για να γίνει αυτό, και αυτό είναι πράγματι πολύ κατάλληλο.
Σε αυτό το σημείο στο εξάμηνο, όπως θα δείτε στο spec PSET 7, η
Googling γύρω, ανάγνωση επάνω σε βιβλιοθήκες, χρησιμοποιώντας CSS άλλων ανθρώπων
και JavaScript για να λύσει τα προβλήματα βοηθητικές
στο σύνολο ίδιο πρόβλημα είναι ασφαλώς ενθαρρύνεται και είναι ο τρόπος
ο Παγκόσμιος Ιστός είναι χτισμένο αυτές τις μέρες, με στέκεται στους ώμους των άλλων ανθρώπων
έτσι ώστε να μπορείτε πραγματικά να επικεντρωθεί στις νέες και ενδιαφέρουσες προβλήματα.
Αλλά τώρα ας εστιάσουμε την προσοχή, και πάλι τη λογική.
>> Αυτό ήταν μια γρήγορη παράκαμψη στην αισθητική μόνο για να σας δείξει την κατεύθυνση προς την οποία μπορείτε να πάτε.
Πάω να επανέλθει στο πιο άσχημο ένα για τώρα μόνο και μόνο επειδή
δεν υπάρχει καμία απόσπαση της προσοχής με την ουσία Twitter, και επιτρέψτε μου να προχωρήσει και να ανοίξει
froshims2, η οποία, και πάλι, διαφέρει μόνο στην ενέργεια, register2.php,
και ας ρίξουμε μια ματιά σε αυτό το αποτέλεσμα είναι εδώ.
Επιτρέψτε μου να προχωρήσει και να πληκτρολογήσετε τον David.
Δεν θα είμαι καπετάνιος αυτή τη φορά.
Θα πω αρσενικό, Matthews, μητρώο.
Γαμώτο. Εντάξει, αυτό είναι μια βίδα πάνω από την πλευρά μου.
Stand by.
Register2, γραμμή 22, εάν άδειο ή-συγνώμη.
Ας reload.
Εντάξει, κατά την υποβολή αυτής της φόρμας τι ακριβώς συνέβη;
I δακτυλογραφημένα σε David, ελέγχεται άνδρες, κάνετε κλικ Matthews, μητρώο.
Έχετε εγγραφεί. (Καλά, δεν είναι πραγματικά.)
Αυτό είναι σαφώς ένα βήμα πέρα ​​από την απλή εκτύπωση από το περιεχόμενο κάποιων μεταβλητών,
αλλά τι είναι αυτό το αρχείο πραγματικά κάνει;
Σε register2.php
παρατηρήσετε ότι έχω κάποια νέα κώδικα.
Μέσα από την ετικέτα σώμα μου έχω ουσιαστικά ένα άλλο, αν κατασκευάσει,
αλλά επειδή είμαι συν-ανάμειξη με κάποια HTML
Έχω να εισέλθει και να εξέλθει PHP λειτουργία εμπρός και πίσω, οπότε ας δούμε τι κάνω.
>> Στην πρώτη γραμμή εδώ λέω αν είναι η περίπτωση
ότι η θέση σούπερ παγκόσμια είναι άδειο για το κλειδί του όνομα,
οπότε με άλλα λόγια, αν ο χρήστης δεν μου έδινε μια τιμή για το όνομα, με τη μορφή,
άδειο τότε θα επιστρέψει αλήθεια, επειδή η τιμή είναι άδειο.
Ή-παρατηρήσετε τις κάθετες μπάρες-αν το φύλο είναι άδειο
εσωτερικό της ειδικής αυτής σούπερ παγκόσμια, η οποία, και πάλι, αντιπροσωπεύει τα περιεχόμενα της φόρμας,
ή η κοιτώνα είναι άδειο, τότε θα πάω να προχωρήσει και να φωνάζω στο χρήστη.
Πώς; Λοιπόν, παρατηρήσετε Πάω να πω πρέπει να δώσετε το όνομά σας, το φύλο, και dorm.
Ας προκαλέσει πραγματικά αυτό το λάθος.
Επιτρέψτε μου να πάμε πίσω στη φόρμα μου. Επιτρέψτε μου να φορτώσετε εκ νέου σαφές.
Και είμαι απλώς πρόκειται να δώσει ο David, και δεν χρειάζεται να ξέρετε όπου ζω.
Εγγραφή. Προφανώς εγώ δεν χρειάζεται να τους πω όπου ζω.
Πρέπει να δώσετε το όνομά σας, το φύλο και dorm. Πηγαίνετε πίσω.
>> Και θα μπορούσα κλικ για να επιστρέψετε σε αυτή τη μορφή, αλλά γιατί συμβαίνει αυτό;
Λοιπόν, σε περίπτωση που αυτό το όνομα δεν ήταν άδειο, αλλά το φύλο ήταν, και ήταν dorm,
έτσι ώστε όλη αυτή η έκφραση να αξιολογούνται αλήθεια, και ακόμα κι αν η σύνταξη είναι ένα μικρό νέο,
πάλι, μπαίνουμε PHP λειτουργία, αν εξοικειωμένοι δήλωση,
αλλά το νέο μέρος εδώ είναι ακριβώς αυτή η άνω και κάτω τελεία, και είχα μαντάρα με παραλείποντας μια παρένθεση
από ατύχημα, αλλά παρατηρήσετε την άνω και κάτω τελεία, και αυτό σημαίνει ότι
ακόμα κι αν είμαστε πάντα έξοδο PHP λειτουργία
που ακολουθεί θα πρέπει να φτύσει επί λέξει στο πρόγραμμα περιήγησης
μέχρι να δείτε ένα άλλο μπλοκ, όπως κάνουμε εδώ,
στην οποία περίπτωση θα πρέπει να φτύνουν έξω αντί αυτό
μέχρι να δείτε το endif, έτσι κάποια ελαφρώς νέα σύνταξη
που μου δίνει τη δυνατότητα για εναλλαγή μεταξύ HTML και PHP.
Μπορούμε να καθαρίσει αυτό επάνω τελικά, αλλά για τώρα,
είναι το είδος του ένα συναρπαστικό τρόπο του ελέγχου σφαλμάτων τη φόρμα.
>> Τώρα, λέω δεν είστε εγγεγραμμένος πραγματικά γιατί προφανώς έχουμε κάνει τίποτα, αλλά τα δεδομένα,
οπότε ας πραγματικά να προσπαθήσουμε να κάνουμε κάτι δροσερό.
Σε froshims3 η μόνη διαφορά είναι Πάω να υποβάλει στο register3,
έτσι ώστε το HTML υπάρχει η ίδια.
Σε register3 παρατηρήσετε αυτό.
Αυτό είναι το είδος της σέξι.
Στην κορυφή Είμαι χρησιμοποιώντας ένα απαιτεί όπως στην κατάσταση, έτσι όπως αυτό είναι # include.
Αυτή τη φορά δεν είναι stdio.h ή κάτι τέτοιο.
Είναι μια βιβλιοθήκη της PHP, και αυτό ονομάζεται PHPMailer.
Πώς να ξέρω ακριβώς περιλαμβάνει αυτό το string με?
Το διάβασα στην τεκμηρίωση, έτσι όταν μου είπαν βάλει αυτό στην κορυφή του αρχείου
αν θέλετε να χρησιμοποιήσετε μια ειδική βιβλιοθήκη που ονομάζεται PHPMailer που κάνει ό, τι λέει.
Σας επιτρέπει να στείλετε email μέσω PHP.
Τώρα ας μετακινηθείτε προς τα κάτω περαιτέρω.
>> Προσέξτε να αρχίσει είμαι σε κατάσταση PHP όλο αυτό το χρονικό διάστημα,
έτσι και τώρα παρατηρούμε εδώ κάτω μετά την εισαγωγή ότι η βιβλιοθήκη,
να το πω έτσι, κάνω μερικούς ελέγχους λογική.
Αν είναι η υπόθεση ότι το όνομα δεν είναι άδειο
και το φύλο δεν είναι άδειο-παρατηρήσετε το επιφώνημα σημεία-
dorm και δεν είναι κενή, τότε ο χρήστης έχει λογικά συμπληρώσει τη φόρμα, τουλάχιστον αρκετά.
Δεν με νοιάζει αν είναι αρχηγός ή όχι. Απλά πρέπει το όνομά τους, το φύλο, και dorm.
Εάν έχουν γεμίσει από αυτές, έτσι ώστε κανένας από αυτούς τους τομείς είναι άδειο
αυτό είναι ελαφρώς νέα σύνταξη.
PHP, ως ένα μέρος, είναι μια αντικειμενοστραφής γλώσσα προγραμματισμού
που κάποιοι από εσάς μπορεί να θυμάστε παιδιά από APCS ή παρόμοια.
Προς το παρόν, αν δεν είναι εξοικειωμένοι, απλά ξέρουν ότι για να χρησιμοποιήσετε αυτήν τη βιβλιοθήκη
θα πρέπει να γράψει μια γραμμή κώδικα, όπως αυτό χρησιμοποιώντας μια νέα λέξη-κλειδί,
κυριολεκτικά μια νέα λέξη-κλειδί που ονομάζεται νέα.
Αλλά πέρα ​​από αυτό, έχουμε κάποια εξοικειωμένοι σύνταξη.
Είναι ένας χειριστής βέλος, το οποίο είναι παρόμοιο με αυτό που χρησιμοποιείται για structs στο πλαίσιο των δεικτών.
Για σήμερα PHP δεν έχει δείκτες,
αλλά γνωρίζουμε τώρα ότι μέσα από τη μεταβλητή ταχυδρομείου
είναι ουσιαστικά είδος ενός δείκτη σε μια ειδική βιβλιοθήκη
ότι κάποιος άλλος έγραψε, και αν θέλω να έχουν πρόσβαση σε ειδικές λειτουργίες
στο εσωτερικό της βιβλιοθήκης κάνω, όπως σε C, χρησιμοποιήστε τον τελεστή βέλους,
ακόμη και αν αυτά δεν είναι πραγματικά δείκτες.
Είναι το είδος του τη δική του εκδοχή αυτής της PHP.
Αυτό σημαίνει ότι πάμε στη βιβλιοθήκη και να καλέσετε τον IsSMTP λειτουργία.
SMTP, ανάκληση, από πολεμιστές μας από το Δίκτυο αναφέρεται στο ηλεκτρονικό ταχυδρομείο,
και αυτό σημαίνει απλά χρησιμοποιήστε ένα e-mail server για αυτό το Frosh ΔΥ εγγραφή.
>> Τι υποδοχής μπορώ να θέλετε να χρησιμοποιήσετε;
Λοιπόν, το Χάρβαρντ, αν το Google γύρω, έχει ένα e-mail server που ονομάζεται smtp.fas.harvard.edu.
Αν παίζετε μαζί στο σπίτι ή ζείτε σε ένα δίκτυο Comcast
θα μπορούσε να είναι κάτι σαν smtp.comcast.net.
Εξαρτάται απόλυτα με το πού ζείτε και ποιος είναι ο ISP σας.
Μετά από αυτό θα πάω να μου από τη διεύθυνση αυθαίρετα να jharvard@cs50.net.
Είμαι στη συνέχεια, πρόκειται να θέσει το να αντιμετωπίσει είναι να jharvard@cs50.net.
Ο μόνος τρόπος που ήξερα ότι αυτές οι λειτουργίες κλήθηκαν SetFrom και AddAddress
είναι, και πάλι, διάβασα την τεκμηρίωση.
Αυτό δεν είναι το είδος της μαγείας είναι γνωστό σε όλους τους προγραμματιστές.
Στη συνέχεια, έθεσα ένα θέμα στο «εγγραφή».
Και τώρα αυτή η γραμμή είναι λίγο άσχημο, γιατί ό, τι κάνει ο χειριστής σημαίνει τελεία στην PHP;
Όποιος ξέρει;
Συνενώστε.
Στο C είναι ένας πόνος στο λαιμό για να ενώσετε 2 στοιχειοσειρές μαζί.
Θα πρέπει να ασχοληθεί με malloc ή realloc ή όλα από αυτά τα πράγματα
απλά να παρατείνει τη διάρκεια της μιας συμβολοσειράς.
Στην PHP, JavaScript και σε άλλες γλώσσες
μπορείτε να το κάνετε αυτό συνήθως με ένα μόνο χαρακτήρα.
Σε αυτή την περίπτωση, τελεία σημαίνει εκμεταλλευτώ αυτή την σειρά εδώ
και να προσθέσετε αυτό το string.
>> Α, και από τον τρόπο, επισυνάπτει σε αυτήν την σειρά,
η οποία συμβαίνει να είναι μια μεταβλητή μέσα από αυτό το σούπερ παγκόσμια.
Στη συνέχεια, για να προσθέσετε μια νέα γραμμή, έτσι ώστε όλα αυτά τα σημεία ακριβώς σημαίνει
συνεχίσει να κάνει ένα όλο και μεγαλύτερο και μεγαλύτερη συμβολοσειρά,
και δεν χρειάζεται να νοιάζονται καθόλου για malloc ή παρόμοια σε μια γλώσσα όπως αυτό,
και δεν υπάρχουν και άλλοι τρόποι για να γίνει αυτό, αλλά αυτό είναι ένα από τα πιο γρήγορος
τρόποι για να το βάλω έξω.
Τι κάνει αυτό;
Είναι η δημιουργία ενός ηλεκτρονικού οργάνου που πρόκειται να πω Όνομα: Captain: Φύλο: Dorm:
όλα σε ξεχωριστές γραμμές, και στη συνέχεια τέλος,
μία γραμμή κώδικα, και θα πάω να αγνοήσετε αυτό για τώρα.
Αν == ψευδής σημαίνει μόνο αν κάτι πήγε στραβά,
αλλά η μαγεία συμβαίνει εδώ.
Mail Αποστολή σημαίνει να στείλετε αυτό το email.
Για να δούμε ποιο είναι το καθαρό αποτέλεσμα είναι.
Στο κάτω μέρος του αρχείου, παρατηρήσετε ότι πρόκειται να πω είστε εγγεγραμμένος πραγματικά
αν πάρω τόσο πολύ.
Αν, όμως, ο χρήστης βίδες επάνω, παρατηρούμε ότι αρχίσαμε αυτό
Εάν η κατάσταση μέχρι εδώ, αν δεν είναι άδειο και δεν είναι κενή
και να μην αδειάσετε στέλνουμε το μήνυμα.
Διαφορετικά, θα πάμε να στείλει αυτή τη γραμμή του κώδικα,
η οποία θα έχει ως αποτέλεσμα, όπως θα δείτε στο PSET 7, του αναπροσανατολισμού του χρήστη
πίσω από εκεί που ήρθαν, froshims3.php.
>> Δάχτυλα διασχίσει, διαφορετικά αυτό θα είναι το πιο απογοητευτικό demo σήμερα.
Εδώ πάμε.
Επιτρέψτε μου να ανοίξει inbox μου για jharvard e-mail στο Gmail.
Δεν email αυτή τη στιγμή. Εντάξει.
Τώρα, επιτρέψτε μου να ανοίξει froshims3, το οποίο είναι το τρίτο και τελευταίο παράδειγμα θα εξετάσουμε εδώ.
Εντάξει, εδώ είμαστε.
Nate, αυτός θα είναι ο αρχηγός, αρσενικό, από, ας πούμε, Apley.
Εγγραφή. Εντάξει, έχετε εγγραφεί πραγματικά.
Τώρα, αν μετακινηθείτε πάνω στο e-mail μου, ω, Θεέ μου.
Έχω μόλις έστειλε ένα email δυναμικά στο Web.
>> Ας αφήσουμε στην εν λόγω σημείωση.
Ένα βίντεο είναι για την επικείμενη διάλεξη χάσαμε. Τα λέμε την επόμενη εβδομάδα.
[CS50.TV]