ΧΑΝΑ Blumberg: Γεια σε όλους. Εμείς πάμε για να ξεκινήσετε μόλις δύο λεπτά νωρίτερα δεδομένου ότι έχουμε ένα σωρό του υλικού για να περάσει. Είμαι Χάνα. Είμαι TF. Μαρία πρόκειται να ενταχθεί μας σε μόλις δύο λεπτά. Διδάσκει ενότητα σωστά πριν. Διδάσκω σωστό τμήμα μετά, έτσι θα πάμε για να το κρατήσει στην ώρα και ένα μισό. Έτσι, όπως θα δείτε εδώ, έχουμε αρκετά λίγα θέματα που πρέπει να περάσει, έτσι θα πάμε λίγο γρήγορα. Αλλά αν κάποια στιγμή λέμε κάτι πάρα πολύ γρήγορα ή δεν καταλαβαίνετε, διστάσετε να διακόψει με τις ερωτήσεις. Θέλουμε να είμαστε σε θέση να κάνουν αυτό το ένα επανεξετάζει συνεδρία ως χρήσιμη για όλους εσάς όσο το δυνατόν. Φοβερός. Ας ξεκινήσετε αμέσως με κάποια θέματα τα οποία έχουμε στην πραγματικότητα πολύ, που πολύ σύντομα για το κουίζ 0 στην αναθεώρηση συνεδρία κουίζ 0. Έτσι, ξεκινώντας με συνδεδεμένες λίστες. Έτσι, απλά βεβαιωθείτε ότι έχετε κάποια βασικές γνώσεις σχετικά με συνδεδεμένες λίστες και είναι άνετα με αυτό ορισμένες από τις βασικές λειτουργίες. Έτσι απλά να αναθεωρήσει, συνδέεται καταλόγους είναι καλύτερα από συστοιχίες επειδή μπορούν να αναπτυχθούν δυναμικά. Έτσι, έχουμε αυτό το τεράστιο πλεονέκτημα. Έχουμε δει να χρησιμοποιείται σε πίνακες κατακερματισμού όταν Δεν ξέρω ακριβώς πόσες τα πράγματα θα πάμε να θέλουν για την εισαγωγή στη δομή των δεδομένων μας. Δυστυχώς, έχουμε κομμάτια η συνδεδεμένη λίστα σε όλη τη μνήμη, γι 'αυτό δεν θα είναι απαραίτητα είναι σε θέση να κάνει συνεχή πρόσβαση χρόνο σε οποιοδήποτε στοιχείο της συνδεδεμένης λίστας. Για να βρείτε μια συγκεκριμένο στοιχείο, εμείς πρέπει να επαναλάβει όλα τα τρόπο από την αρχή. Έτσι, έχετε κατά νου ότι τα περισσότερα από τα βασικές λειτουργίες είναι τα ω 1. Έτσι ένθετο είναι ακριβώς πρόκειται να πάρει 1. Διαγραφή πρόκειται να πάρει ν δεδομένου ότι πρέπει να πάει το βρείτε από τη λίστα. Και αναζήτηση θα μπορούσε να λάβει, στη χειρότερη περίπτωση, n. Δεν μπορούμε να κάνουμε κάτι σαν δυαδική αναζήτηση σε συνδεδεμένη λίστα Επειδή δεν μπορούμε απλά τυχαία άλμα στη μέση. Δροσερός. Φοβερός. Ένα μικρό κομμάτι της στοίβες. Αυτό, πάλι, ήρθε σε ένα κουίζ 0, έτσι ώστε να θα πρέπει να είναι σούπερ άνετα με αυτό. Αλλά για στοίβες, σας ζητάμε να θυμηθούμε μια στοίβα των δίσκων. Και αυτό πρόκειται να είναι η πρώτη σε, διαρκούν έξω. Γι 'αυτό και πήγαν τα πράγματα στη στοίβα, και στη συνέχεια αν προσπαθούμε να πάρουμε κάτι off-- που ονομάζουμε σκάει από η stack-- ερχόμαστε από την κορυφή. Και αν θέλουμε να βάλουμε κάτι στη στοίβα, καλούμε πιέζει. Γι 'αυτό πάντα θα πρέπει να μεγαλώνουν από τον πυθμένα σαν μια στοίβα από δίσκους. Φοβερός. Έχουμε δει στοίβες εφαρμόζονται με δύο συνδεδεμένες λίστες και πίνακες. Αν είστε εφαρμογής με συστοιχίες, θέλετε να σιγουρευτείτε για να παρακολουθείτε τόσο το μέγεθος και η χωρητικότητα. Έτσι, το μέγεθος θα είναι η τρέχουσα διάφορα πράγματα στο stack σας, λαμβάνοντας υπόψη ότι η ικανότητα είναι ο συνολικός αριθμός πράγματα που μπορείτε να αποθηκεύσετε στη στοίβα σας. Δροσερός. Πολύ Ομοίως, έχουμε ουρές. Σε αυτήν την περίπτωση, αντί να σκεφτόμαστε μια στοίβα των δίσκων, σκεφτείτε μιας γραμμής. Αυτό πρόκειται να είναι η πρώτη in, first out. Έτσι, αν είστε στην ουρά για κάτι στο κατάστημα, ελπίζουμε ότι το πρόσωπο για πρώτη φορά το γραμμή πρόκειται να βοηθήσει πρώτα. Αντί να λέει ώθησης και ποπ όπως κάνουμε για την στοίβα, απλά λέμε Τοποθέτηση στην ουρά και dequeue. Και πάλι, αν είστε Εφαρμόζοντας αυτό με μια σειρά, θα πρέπει να παρακολουθείτε όχι μόνο το μέγεθος και την ικανότητα, αλλά και το κεφάλι, το οποίο πρόκειται να είναι η ουρά μπροστά μας. Δροσερός. Οποιεσδήποτε ερωτήσεις σχετικά με κάποιο από αυτά; Φοβερός. Μετακίνηση δεξιά κατά μήκος. Εντάξει, πίνακες κατακερματισμού. Εδώ είναι όπου αρχίζει να να πάρει πραγματικά ενδιαφέρουσα. Έτσι, ένας πίνακας κατακερματισμού είναι μια εφαρμογή από ένα συνδυαστικό πίνακα. Έτσι, βασικά, τι συνέβη Είναι όλοι έχουμε αυτή την είσοδο, και δίνουμε σε ένα hash λειτουργία που λέει, Εντάξει, αυτό είναι όπου στο hash πίνακα ανήκει. Έτσι, η απλούστερη συνάρτηση κατακερματισμού ότι έχουμε δει αυτό ακριβώς λέει, Εντάξει, ας υποθέσουμε ότι θέλετε να βάλετε χορδές σε πίνακα κατακερματισμού μας. Και μια πραγματικά απλή ιδέα θα μπορούσε να είναι να πούμε, εντάξει, ας λύσουμε από το πρώτο γράμμα της λέξης. Έτσι μπορείτε να δείτε εδώ, παίρνουμε μπανάνα, το βάζουμε μέσα από μια συνάρτηση κατακερματισμού, και λέει, hey, ότι θα πρέπει να πάτε στο ευρετήριο 1. Έτσι, μπορούμε να σκεφτούμε ουσιαστικά από ένα hash τραπέζι ως μια δέσμη των διαφορετικών κουβάδες. Και κάθε ένα από αυτά τα κάδων πρόκειται για να κρατήσει το κεφάλι του μια συνδεδεμένη λίστα. Και σε αυτή την συνδεδεμένη λίστα είναι όπου μπορούμε τίθενται ουσιαστικά διαφορετικά κομμάτια των δεδομένων. Έτσι, καταδύσεις λίγο περισσότερο σε συνάρτηση κατακερματισμού, είναι εδώ το παράδειγμα που μόλις όπου περιγράφεται απλά λέμε, Εντάξει, πάρτε το πρώτο γράμμα της λέξης και είμαστε πρόκειται να το λύσουμε μέσα στους κάδους. Έτσι, κατά πάσα πιθανότητα, θα είναι εκεί 26 κάδους, μία για κάθε γράμμα της αλφαβήτου. Γιατί δεν είναι αυτό μια μεγάλη συνάρτηση κατακερματισμού; Τι κάνει αυτό το μη ιδανικό; Ναι. Κοινό: Θα πάμε να έχουν συγκρούσεις. ΧΑΝΑ Blumberg: Ναι, ακριβώς. Θα πάμε να έχουν συγκρούσεις. Έτσι, αυτό είναι ένα πράγμα. Και θα μιλήσουμε για το πώς μπορούμε να καθορίσει συγκρούσεις σε μόλις ένα δευτερόλεπτο. Ένα άλλο πρόβλημα με αυτό Ειδικότερα συνάρτηση κατακερματισμού είναι ότι οι διαφορετικές μας Οι κάδοι θα είναι όμορφη δραστικά διαφορετικά μεγέθη. Γνωρίζουμε ότι υπάρχει ένα πάρα πολύ περισσότερες λέξεις που ξεκινούν με ένα από τα Χ, έτσι θα πάμε να έχουν πολύ ασύμμετρη κάδων σε πίνακα κατακερματισμού μας. Δροσερός. Οπότε ναι, ας πάμε πίσω στο το σημείο της σύγκρουσης. Τι θα κάνουμε αν υπάρχει μια σύγκρουση; Έχουμε ένα ζευγάρι διαφορετικές επιλογές. Έτσι ένα, έτσι ας υποθέσουμε ότι προσπαθούμε να θέσει μούρο σε πίνακα κατακερματισμού μας. Και βλέπουμε, ω, θέλουμε για να το θέσω στο δείκτη 1, αλλά μπανάνα ήδη ζει εκεί. Τι θα κάνουμε? Έχουμε δύο κύριες επιλογές. Νούμερο ένα είναι που μπορούμε να πούμε, εντάξει, δεν υπάρχει χώρος στο δείκτη 1, αλλά ας κρατήσει αναζητούν μέσα από μέχρι να βρούμε ένα άλλο ανοιχτό σημείο. Γι 'αυτό και θα πω, εντάξει, ας το βάλει στο σημείο 3. Αυτό είναι μια επιλογή. Αυτό ονομάζεται γραμμική σχολαστικά. Και μια δεύτερη επιλογή που λέει, εντάξει, καλά, ας κάνουν τον καθένα από αυτούς τους κάδους είναι επικεφαλής των συνδεδεμένων λιστών. Και είναι εντάξει, αν υπάρχουν και άλλα από ένα πράγμα σε έναν κάδο. Είμαστε ακριβώς πρόκειται να επισυνάπτει το πάνω στο μέτωπο. Έτσι, εδώ μπορείτε να δείτε, εντάξει, όταν θα εισαχθεί μούρο, εμείς μόλις πήρε μπανάνα, το είδος του έσπρωξε το πάνω από ένα λίγο και έριξε ένα μούρο εκεί. Και αυτό είναι επίσης μια χαρά. Αυτό ονομάζεται Ξεχωριστές αλυσίδες. Μπορείτε να σκεφτείτε αυτό ως κάτι σαν μια σειρά από κεφάλια με συνδεδεμένες λίστες. Οποιεσδήποτε ερωτήσεις σχετικά με χασίς πίνακες, συναρτήσεις κατακερματισμού; Φοβερός. Δέντρα και προσπαθεί. Έτσι, ένα δέντρο είναι οποιοδήποτε είδος της δομής των δεδομένων στις οποίες υπάρχει κάποιο είδος της ιεραρχίας ή κάποιου είδους κατάταξης σε διάφορα αντικείμενα σας. Και αυτό θα γίνει super σαφές όταν βλέπουμε ένα παράδειγμα. Και είδαμε προσπαθεί, μαζί με πίνακες κατακερματισμού, σε pset5-- το οποίο, και πάλι, εντελώς δίκαιο παιχνίδι γι 'αυτό quiz-- ως μια άλλη δεδομένα δομές που μπορούμε να αποθηκεύσει διαφορετικά πράγματα. Στην περίπτωση του λεξικού, θα αποθηκεύεται ένα μάτσο λέξεις. Έτσι, ας ρίξουμε μια ματιά σε μερικά δέντρα. Έτσι, αυτό είναι ένα παράδειγμα ενός δέντρου. Έχει ένα είδος δομής, ότι ιεραρχική δομή, όπου μπορείτε να δείτε πως Αυτό 1 κόμβος στην κορυφή έχει κάποιο είδος της τάξης άνω του 2 και 3, τα οποία είναι πάνω από 4, 5, και 6 και 7, η οποία είναι πάνω από 8 και 9. Έτσι ώστε να είναι όλα εννοούμε με τον όρο δέντρο, έτσι ώστε να μπορείτε ακριβώς το είδος της εικόνα αυτή στο μυαλό σας. Τώρα, έχουμε ένα ζευγάρι των πιο εξειδικευμένες δέντρα. Έτσι, ένα παράδειγμα είναι ένα δυαδικό δένδρο. Και ένα δυαδικό δέντρο είναι, και πάλι, ακριβώς πρόκειται να είναι μια δομή δεδομένων με κάποιο είδος του ιεραρχία, αλλά κάθε μία από τις κόμβων μπορεί να έχει το πολύ δύο παιδιά. Αυτός είναι όπου η λέξη προέρχεται από το δυαδικό. Έτσι, αυτό είναι ένα παράδειγμα ενός δυαδικού δένδρου. Έτσι, αυτό είναι μια μικρότερη κατηγορία των δέντρων. Τώρα ας πάμε ακόμη πιο συγκεκριμένες και μιλάμε για δυαδικό trees-- δυαδική αναζήτηση δέντρα, μάλλον. Μέχρι εδώ η ιδέα δεν είναι μόνο η κάθε κόμβος έχει το πολύ δύο παιδιά, αλλά όλα τα παιδιά να το αριστερά πρόκειται να είναι μικρότερη και όλα τα παιδιά για το το δικαίωμα πρόκειται να είναι μεγαλύτερο. Έτσι παρατηρήσετε σε μόλις μας δυαδικό δέντρο, υπάρχει καμία σχέση μεταξύ των αριθμών. Αλλά σε δυαδική αναζήτηση μας δέντρο, βλέπουμε, εντάξει, εδώ είναι 44. Και κάθε αριθμός στα αριστερά του 44 είναι μικρότερα και τα πάντα προς τα δεξιά είναι μεγαλύτερη. Και αυτό ισχύει σε κάθε επίπεδο του δέντρου. Έτσι εδώ, αυτό είναι μικρότερο από 22 και αυτό είναι μεγαλύτερο από 22. Και αυτό είναι δυαδικό δένδρο αναζήτησης. Γιατί νομίζω ότι λέγεται ένα δυαδικό δέντρο αναζήτησης; Τι αλγόριθμο αυτό σας θυμίζει; Κοινό: δυαδική αναζήτηση. ΧΑΝΑ Blumberg: δυαδική αναζήτηση. Διότι, αν ψάχνετε για ένα συγκεκριμένο αριθμό σε αυτό το δέντρο, σε κάθε σημείο, μπορείτε να χτυπήσει μόνο μακριά από το ήμισυ του δέντρου, η οποία είναι μεγάλη. Και έτσι αυτό πρόκειται να μας δώσει κάτι ότι μοιάζει πολύ με δυαδική αναζήτηση. Καμιά ερώτηση? Εντάξει, δροσερό. Εντάξει, προσπαθεί. Το αγαπημένο όλων. Έτσι, αυτό είναι το παράδειγμα που έχουμε δει ένα σωρό στην τάξη. Και πάλι, αυτό είναι ακριβώς ένα άλλο τρόπο που μπορεί να αποθηκεύσει δεδομένα. Στην περίπτωση του λεξικού, και πάλι, αυτό ακριβώς πρόκειται να είναι χορδές. Ας δούμε λοιπόν τι είναι αυτό που πράγματι μοιάζει σε ελαφρώς χαμηλότερο επίπεδο. Έτσι, ας ρίξουμε μια ματιά σε έναν κόμβο σε ένα trie. Και βλέπουμε, εντάξει, υπάρχει μετάβαση να είναι ένα Boolean και ένας κόμβος, ένα δείκτη σε έναν κόμβο. Και βλέπουμε ότι ο Boolean ονομάζεται is_word. Έτσι, κατ 'ουσίαν, ότι είναι πρόκειται να αντιστοιχούν σε αυτά τα μικρά τρίγωνα τα οποία λέει, αν έχετε πάρει εδώ, έχετε βρει μια ολόκληρη λέξη. Γνωρίζουμε ότι «αναδιάρθρωσης» πάνω εδώ είναι ένα πλήρες λέξη, λαμβάνοντας υπόψη ότι μόλις Τ-U-R δεν είναι μια λέξη γιατί δεν βλέπουμε αυτό το μικρό δέλτα. Και αυτό το μικρό δέλτα, και πάλι, αντιστοιχεί σε αυτό is_word, Αυτό Boolean is_word. Και τότε έχουμε μια σειρά από παιδιά. Έτσι, σε κάθε επίπεδο, θα έχουν ένα συγκεκριμένο κόμβο, και ότι τα σημεία κόμβου σε ένα συστοιχία ολόκληρου του αλφαβήτου. Έτσι μπορείτε να δείτε, και πάλι, σε αυτό το picture-- είμαι πρόκειται να κρατήσει το άλμα πίσω και forth-- ότι η σειρά στην κορυφή έχει μια δέσμη των διαφορετικών κόμβοι έρχεται από αυτό. Διαθέτει 26, 27 ή αν θέλετε να περιέχουν ένα επιπλέον χαρακτήρα. Και αυτό μας δίνει μια τρόπος για να αποθηκεύσετε τα δεδομένα μας με έναν τρόπο που μπορεί να εξεταστεί σε ότι μπορείτε να αναζητήσετε σούπερ γρήγορα. Ποιος είναι ο χρόνος αναζήτησης για ένα trie; Κοινό: [δεν ακούγεται]. ΧΑΝΑ Μπλούμπεργκ: Ναι. Στη θεωρία, είναι σταθερά χρόνου. Είναι μόνο πρόκειται να είναι το μέγεθος της η λέξη που θέλετε να αναζητήσετε. Ακόμα και αν προσθέσετε ένα zillion περισσότερες λέξεις στο Trie μας, δεν πρόκειται να μας πάρει πλέον να προσδιοριστεί εάν μια δεδομένη λέξη είναι στο Trie. Έτσι, αυτό είναι πραγματικά ωραίο. Κοινό: Μήπως απλά η προετοιμασία αυτής της διάταξης; Δεν προλάβατε ένα σημείο ή δύο. Μπορείς να μιλάμε μόνο για ότι για ένα δευτερόλεπτο; ΧΑΝΑ Blumberg: Σίγουρα, απολύτως. Καλή ερώτηση. Το ερώτημα ήταν, εμείς έχουν μια σειρά που είναι θα έχουν ως κόμβο αστέρι σε αντίθεση με μόνο κόμβο, έτσι δεν είναι; Δροσερός. Έτσι, εδώ αυτό που λέμε είναι σειρά μας είναι απλά πρόκειται να είναι δείκτες σε άλλες σειρές. Έτσι είναι το είδος της essentially-- αισθάνεται σαν μια συνδεδεμένη λίστα με αυτόν τον τρόπο όπου το καθένα από αυτά τα παιδιά ακριβώς το σημείο στον επόμενο κόμβο. Και ο τρόπος που εμείς στην πραγματικότητα καθορίζουν, hey, εντάξει, έχουμε επαναλαμβάνεται μέσα από ένα ολόκληρο λέξη, είναι αυτή η λέξη στο λεξικό, ελέγχουμε μόνο αυτό is_word. Μεγάλη ερώτηση. Ναι. Κοινό: OK. Λοιπόν, τι ήταν τότε ο χρόνος για την trie; ΧΑΝΑ Μπλούμπεργκ: Σίγουρα. Έτσι, το χρόνο εκτέλεσης για trie για αναζήτηση θα είναι σταθερά χρόνου. Γι 'αυτό ακριβώς πρόκειται να είναι η αριθμός των γραμμάτων της λέξης. Δεν είναι εξαρτάται από το μέγεθος του λεξικού ή το μέγεθος της δομής των δεδομένων. Τόσο εδώ είναι μια ελαφρά απλούστερο παράδειγμα. Σε αυτήν την περίπτωση, μπορείτε να δείτε ότι η λέξη νυχτερίδα είναι στο λεξικό και έχετε ζουμ, αλλά θα Δεν έχουμε κάτι σαν ζωολογικό κήπο. Πώς θα κάνουμε ζωολογικό κήπο; Πώς μπορούμε να προσθέσουμε στο ζωολογικό κήπο μας λεξικό, για να trie μας; Ναι. Κοινό: Κάντε is_word ισχύει και για την [δεν ακούγεται]. ΧΑΝΑ Μπλούμπεργκ: Καλή. Έτσι, θα λέγαμε Ζ-Ο-Ο, και τότε θα θέλετε να ελέγξετε έξω αυτό το κουτί, καθώς και. Εξαιρετική. Ας συγκρίνουμε πολύ σύντομα προσπαθεί έναντι πίνακες κατακερματισμού. Προσπαθεί είναι πραγματικά μεγάλη επειδή, όπως είπαμε, παρέχουν συνεχή αναζήτηση απασχόλησης. Αλλά το τεράστιο μειονέκτημα είναι ότι είναι τεράστια. Μπορείτε να πάρετε την αίσθηση, ακόμη και με την εξέταση αυτή, ότι πρόκειται να λάβει ένα τεράστιο ποσό της μνήμης. Έτσι, από όπου και αν πρόκειται να είναι πολύ μεγαλύτερο από πίνακες κατακερματισμού, αλλά πρόκειται να δώσει μας πολύ ταχύτερους χρόνους αναζήτησης. Έτσι, αυτό είναι το είδος του σας δίλημμα, τι σας ενδιαφέρει, είτε πρόκειται για την ταχύτητα ή τη μνήμη. Οποιεσδήποτε ερωτήσεις σχετικά με τίποτα από αυτά, όλα τα δομών δεδομένων C. Όμορφος. ΕΝΤΆΞΕΙ. Εμείς πάμε για να προχωρήσουμε σε ένα μικρό κομμάτι της ανάπτυξης ιστοσελίδων με τη Μαρία. ΜΑΡΙΑ ZLATKOVA: Υπέροχο. ΕΝΤΆΞΕΙ. ΧΑΝΑ Blumberg: Μπορείτε να χρησιμοποιήσετε το φορητό υπολογιστή μου. ΜΑΡΙΑ ZLATKOVA: Νίκαια. Εντάξει, δροσερό. Καθώς προχωρούμε τώρα στο διαδίκτυο ανάπτυξης, μιλήσαμε λίγο σχετικά με την αλλαγή δικαιώματα των αρχείων και καταλόγων έτσι ώστε να μπορούν να είναι προσβάσιμα σε άλλους χρήστες, στον κόσμο, και έτσι ώστε να μπορούμε να δούμε πώς βασικά μπορούμε να τα μεταφέρει όταν θα εξελιχθούν τα πράγματα όπως ιστοσελίδες ότι έχουμε κάνει ως επί το πλείστον. Έτσι είδαμε την εντολή chmod, η οποία είναι η κατάσταση αλλαγής, βασικά. Αυτή είναι μια εντολή Linux και αλλάζει τα δικαιώματα πρόσβασης των αντικειμένων του συστήματος αρχείων. Και ένα αντικείμενο συστήματος αρχείων είναι μόνο ένας κατάλογος, ένα αρχείο, κάτι που μπορείτε να να αλλάξετε τα δικαιώματα του. Έτσι για να δείτε τα δικαιώματα αρχείου, πληκτρολογούμε την εντολή ls, λίστα, -l. Και όταν γράφουμε αυτό, συνήθως δούμε κάποια δικαιώματα που μοιάζουν κάπως έτσι μπροστά από ένα όνομα καταλόγου. Έτσι d αναφέρεται σε κατάλογο. Και τότε έχουμε τρεις τριάδες ότι βασικά αναφέρονται στα δικαιώματα της είτε ένας χρήστης, ομάδα, ή ο κόσμος. Οι τύποι των δικαιωμάτων που μπορούμε έχουν γι 'αυτές τις τρεις ομάδες ανθρώπων είναι είτε r για ανάγνωση, w για γράφουν, και x για να εκτελέσει. Και μπορούμε να έχουμε εκείνες για η ομάδα και τον κόσμο, καθώς και. Το δύσκολο πράγμα είναι ότι μερικές φορές Όταν πληκτρολογείτε την εντολή chmod, θα πληκτρολογήσετε κάποιον αριθμό ότι αποτελείτο από τρία bits. Έτσι, θα μπορούσαμε να κάνουμε, όπως 777 και ότι βασικά αναφέρεται στην προστιθέμενη αξία του καθενός από αυτά τριάδες γιατί r παραπέμπει σε 4, w θα Ανατρέξτε στο σημείο 2, και το Χ θα αναφέρονται σε 1, έτσι ώστε όταν προστίθενται, κάθε ένα από τους αριθμούς θα έρθει κάτω σε ένα συνολικό αριθμό σε μια αθροιστική τιμή μεταξύ 0 και 7. Έτσι, θα μπορούσαμε επίσης να έχουμε 0 για τα δικαιώματα χωρίς καθόλου. Και αυτό θα μας δώσει βασικά τα δικαιώματα είτε για τον χρήστη, η ομάδα, ή ο κόσμος. Οποιεσδήποτε ερωτήσεις σχετικά με αυτό το μέτρο; Κοινό: Είπατε διαβάστε ήταν 4; ΜΑΡΙΑ ZLATKOVA: Ναι. Κοινό: [δεν ακούγεται]. ΧΑΝΑ Μπλούμπεργκ: Yup. Κοινό: Και στη συνέχεια, με την προσθήκη όλους εκείνους άλλοι θα αναφέρει τον αριθμό σας. ΜΑΡΙΑ ZLATKOVA: Ναι. Ναι. Αυτά είναι μεγάλα ερωτήματα. Ωραίος. Στη συνέχεια, πήδηξε σε HTML και λίγο περισσότερα για την ανάπτυξη ιστοσελίδων. Έτσι HTML σημαίνει ακριβώς HyperText Markup Language. Και αυτό είναι το περιθώριο κέρδους γλώσσα που είναι ένα πρότυπο ότι χρησιμοποιείται για τη δημιουργία ιστοσελίδων. Αυτό λέγεται μια γλώσσα σήμανσης επειδή δεν είναι πραγματικά καταρτίζονται. Δεν λέει πώς μερικοί κώδικας θα πρέπει να να εκτελεστεί ή κάτι τέτοιο. Σκιαγραφεί απλά και περιγράφει πώς ένα web σελίδα θα πρέπει να συσταθεί με κάθε ένα από τα στοιχεία του και πώς θα πρέπει να κοιτάξουμε προς το χρήστη. Μερικές από τις ετικέτες HTML που θα πήγε πάνω είναι τα ακόλουθα. Όλα τα έγγραφα HTML μας ξεκίνησε με την HTML DOCTYPE. Στη συνέχεια, έχουμε πάντα την ετικέτα HTML. Έχουμε ένα κεφάλι και το σώμα. Και είναι σημαντικό ότι η HTML έχει Αυτού του είδους η ένθετη δομή επειδή είναι πολύ σαφές. Και τότε γίνεται ξεκάθαρο όταν πρέπει να ανοίξει και πραγματικά κοντά ετικέτες. Και εμείς πάντα πρέπει να κλείσετε ετικέτες που έχουμε ανοίξει. Και εδώ έχουμε μερικά από τα είδη πράγματα μπροστά που θέλουμε να έχουμε. Έτσι έχουμε, για παράδειγμα, ο τίτλος του CS50. Και τότε πραγματικά μπορείτε να συνδέσετε ένα φύλλο στυλ που καθορίζει τον τρόπο μπορούμε στυλ ιστοσελίδα μας. Αυτό είναι το CSS. Εμείς πάμε για να πάει πέρα ​​από το στο επόμενα δύο διαφάνειες, καθώς και. Μέσα στο σώμα, θέτουμε ορισμένες τάξεις και ταυτότητες. Και ως υπενθύμιση, και πάλι, Αναγνωριστικά είναι μοναδικά και τάξεις μπορεί να ανατεθεί σε πολλά στοιχεία. Και αυτό σημαίνει απλά ότι μπορούμε να χρησιμοποιήσουμε τις κατηγορίες και τα αναγνωριστικά εντός άλλων structures-- έτσι, για παράδειγμα, μέσα σε αρχεία CSS ή στυλ sheets-- να αναφερθώ σε συγκεκριμένα στοιχεία και βασικά λένε ότι θέλουμε να το στυλ ή σχεδιάζουν κάποιο στοιχείο με κάποιο συγκεκριμένο τρόπο. Και αναφερόμαστε σε αυτούς από αναγνωριστικά και τις τάξεις τους. Και μπορούμε επίσης να αναφέρεται σε διαφορετικά τα πράγματα με λέξεις-κλειδιά, καθώς, αλλά και τα αναγνωριστικά μαθήματα μόνο να μας δώσει κάποια ευελιξία και τι συγκεκριμένα εμείς θέλω να αναφερθώ. Έτσι, μόνο ένα παράδειγμα. Μπορούμε, και πάλι, στο πλαίσιο ένα αρχείο CSS όπου θέλετε να ορίσετε κάποια style-- έτσι τα χρώματα, τις γραμματοσειρές, και τέτοια πράγματα μπορούμε that-- ορίσετε το στυλ για το σώμα. Έτσι, ότι θα το καθορίσει για ολόκληρο το σώμα ετικέτας. Αλλά τότε μπορούμε επίσης να καθορίσουμε ένα στυλ για μια #title. Και πάλι, το hashtag αναφέρεται σε μας ID και η τελεία παραπέμπει στην τάξη μας. Και στη συνέχεια για τις .info, εμείς Μπορείτε επίσης να ρυθμίσετε κάποια χαρακτηριστικά. Και πάλι, όταν πάμε πίσω, είχαμε μας κατηγορία που ονομάζεται πληροφορίες και ο τίτλος μας ταυτότητας. Και μπορούμε να δούμε ότι αναφερόμαστε σε αυτούς από #title και .info. Κοινό: Θα λέγατε hashtag [? υιοθετήσουν μου; ?] ΜΑΡΙΑ ZLATKOVA: Συγνώμη; Κοινό: Θα λέγατε hashtag [? υιοθετήσουν μου; ?] ΜΑΡΙΑ ZLATKOVA: Hashtag σημαίνει ID, έτσι #title αναφέρεται σε οποιεσδήποτε στοιχεία έχουν αυτό που ονομάζεται ID τίτλο. Και τότε η τελεία αναφέρεται σε μια τάξη. Έτσι, .info αναφέρεται σε αυτό το στοιχείο επειδή έχει τις πληροφορίες κατηγορίας. Ναι. Κοινό: Γιατί το κάνετε διακρίνει τους στο HTML; Γιατί το λες κάποια πράγματα είναι Ταυτότητες και ορισμένα πράγματα είναι τάξη; ΜΑΡΙΑ ZLATKOVA: Αυτό είναι απλά μέχρι you-- ΧΑΝΑ Blumberg: Επαναλάβετε την ερώτηση. ΜΑΡΙΑ ZLATKOVA: Ω, συγγνώμη. Γιατί να διακρίνουμε ορισμένα στοιχεία καθώς και τα αναγνωριστικά στοιχεία και άλλες κατηγορίες; Αυτό είναι απλά επειδή είναι Πραγματικά συχνά μια σχεδιαστική επιλογή. Σας δίνει πολλή ευελιξία στο να είναι σε θέση να πω ότι θέλω αυτό το συγκεκριμένο σημείο να έχουν αυτό το αναγνωριστικό επειδή θέλουν να κάνει πολλά πράγματα με αυτό, και εγώ μόνο θέλετε να ορίσετε ένα στυλ, συγκεκριμένο στυλ ή όποια και αν είναι το χρώμα για αυτό το στοιχείο. Και ο τρόπος για να το κάνουμε αυτό είναι απλά δίνει μια ταυτότητα. Και στη συνέχεια, αν θέλω να έχω ένα ζευγάρι από διαφορετικά στοιχεία έχοντας ότι, αντί του πηγαίνει και τον καθορισμό their-- αντί να το κάνετε από ετικέτα, επειδή η ετικέτα θα ρυθμίσετε το τηλέφωνο για το σύνολο της ετικέτας για κάθε φορά που χρησιμοποιείται αυτή η ετικέτα, μπορείτε να ορίσετε μια τάξη σε πολλά αντικείμενα. Και τότε ακριβώς έχουν πρόσβαση στη συγκεκριμένη κατηγορία και να πω Θέλω να Style Αυτό τάξη με αυτόν τον τρόπο. Και πάλι, η τάξη μπορεί να είναι πολλαπλά διαφορετικά στοιχεία και το αναγνωριστικό πρέπει να είναι μοναδική. Μεγάλη ερωτήσεις. Οποιεσδήποτε άλλες ερωτήσεις; Εντάξει, φοβερό. Και πάλι, αυτό είναι το πώς αυτοί οι επιλογείς αναφέρονται σε CSS, με hashtag, με τελεία ή χωρίς τίποτα για αναθέτοντας το στυλ κάποιου ετικέτας, όπως το σώμα. Και εδώ έχουμε το γενικό σύνταξη του πώς γίνεται αυτό. Για να επαναλάβετε κάποια καλύτερη πρακτικές για την HTML και CSS, Οφείλουμε, αλλά και πάλι, κλείστε όλα οι ετικέτες HTML που θα ανοίξει. Και αυτό που σας συνέστησε κάνει για τελευταία έργα σας, καθώς και για CS50 Οικονομικών, είναι να κάνει βεβαιωθείτε ότι όλες HTML σας επικυρώνει. Και αυτό γίνεται με το W3 Validator. Και τότε τι κάναμε και τι προτείνουμε κάνουμε χωρίζει το στυλ, έτσι CSS από τη σήμανση HTML. Έτσι, ό, τι σχετίζεται με τον τρόπο σελίδα σας πρόκειται να δούμε οπτικά και πώς πρόκειται να τροποποιηθεί θα πρέπει να πάει σε ένα έγγραφο CSS. Και τότε σήμανσης σας λέει πώς τα πράγματα είναι σε σχέση με κάθε άλλο είναι HTML, και ότι θα πρέπει να πάνε μέσα των εγγράφων HTML σας. Καμιά ερώτηση? Mhm. Κοινό: Τι ακριβώς συμβαίνει σχετικά με την επικύρωση της σελίδας όταν είμαστε επικύρωση του HTML που [δεν ακούγεται] δημιούργησε; ΜΑΡΙΑ ZLATKOVA: Έτσι what-- νομίζετε. Έτσι τι ακριβώς συμβαίνει σχετικά με την επικύρωση της σελίδας και γιατί πρέπει να το κάνουμε αυτό; Βασικά, θα πρέπει να το κάνουμε αυτό γιατί πολλές φορές, ο browser σας, αν δεν κλείσει μια ετικέτα ή κατι τετοιο, Ο περιηγητής σας είναι ακόμα πρόκειται να καθιστούν μια σελίδα και μπορεί να εξακολουθούν να εργάζονται, αλλά είναι καλύτερη πρακτική για να βεβαιωθείτε ότι έχετε, και πάλι, έκλεισε όλες τις ετικέτες σας, ότι όλα τα στοιχεία σας είναι ο τρόπος με τον οποίο θα πρέπει να είναι, και βασικά αυτό είναι από το συμβάσεις που έχουν προκαθοριστεί. Είναι, πάλι, μόνο ένα πράγμα που θα πρέπει να πρέπει να μάθουν να κάνουν, σε αντίθεση με έχοντας sloppier κώδικα και τέτοια πράγματα. Ναι. Ω συγνώμη. Νόμιζα ότι σηκώνοντας το χέρι σας. Κοινό: Όχι, ήμουν μόλις [δεν ακούγεται]. ΜΑΡΙΑ ZLATKOVA: OK. Κοινό: Σας ευχαριστώ. ΜΑΡΙΑ ZLATKOVA: Φυσικά, σας ευχαριστώ. Έτσι και πάλι, πηγαίνοντας για το πώς πληροφορίες μεταφέρονται και τα μοντέλα επικοινωνίας για τη μεταφορά πληροφοριών. TCP / IP. TCP σημαίνει ακριβώς Μεταφοράς Πρωτόκολλο Ελέγχου και IP αναφέρεται στο πρωτόκολλο διαδικτύου. Και αυτό αναφέρεται μόνο σε ο τρόπος δεδομένα έχει παραδοθεί. Αν έχουμε κάποια δεδομένα τα οποία πρέπει να παραδίδεται στην you-- έτσι κάνετε μια αίτηση για ένα συγκεκριμένο διακομιστή. Για παράδειγμα, όταν Προσπαθείτε να αποκτήσετε πρόσβαση cs50.net, κάνουμε μια αίτηση στην ο διακομιστής CS50 και εμείς βλέπουμε ότι θέλουμε να Αυτό το είδος των πληροφοριών. Και στη συνέχεια με βάση αυτό το πρωτόκολλο για το πώς αυτή η πληροφορία παραδίδεται, ο διακομιστής παρέχει πληροφορίες πίσω σε μας, ο πελάτης. Και τότε θα είμαστε σε θέση να δείτε οι πληροφορίες για τη σελίδα και στη συνέχεια να το χρησιμοποιήσετε. Έτσι, στη συνέχεια το πρωτόκολλο Hypertext Transfer είναι ακριβώς ένα άλλο πρωτόκολλο ή που των συμβάσεων που ορίζει τον τρόπο το πρόγραμμα περιήγησης στο Web και ο web server πρέπει να επικοινωνούν. Και βάζοντας όλα αυτά μαζί, HTTP, και πάλι, ακριβώς καθορίζει τον τρόπο αυτό ορίζεται υπερκειμένου από την HTML που έχουμε αυτό που εργάζονται, πώς θα πρέπει να παραδοθεί σε σας και πώς τα δεδομένα που παραδίδονται σε σας φτάνει σε σας. Και γι 'αυτό, αν εσείς θυμάστε από μια κλάση, είχαμε πολλά αιτήματα και είχαμε μια πολύ σύνταξη για αυτά τα αιτήματα που είμαστε πρόκειται να πάει πέρα ​​τώρα. Έτσι και πάλι, όταν στέλνουμε ένα αίτημα σε ένα διακομιστή, πρέπει να ορίσουμε μια-δυο πράγματα. Γι 'αυτό πρέπει να βρούμε τον τύπο της αίτησης που είμαστε ρύθμιση. Και πάλι, έχουμε, για παράδειγμα, GET είναι ένα είδος μεθόδου ότι έχουμε στο αίτημά μας. Και τότε HTTP / 1.1 είναι ακριβώς το πρωτόκολλο που χρησιμοποιούμε σήμερα. Τις περισσότερες φορές, ότι πρόκειται με το πρωτόκολλο που χρησιμοποιούμε. Έτσι, εάν έχετε μια ερώτηση όπως ότι σε ένα κουίζ σας. Αυτό είναι οι συμβάσεις ότι έχουμε μέχρι στιγμής. Ανάστροφη κάθετο αναφέρεται σε τι είδους των πραγμάτων είμαστε ζητούν. Στη συνέχεια, οικοδεσπότης μας είναι, για παράδειγμα, σε αυτό το περίπτωση, προσπαθούμε να πάμε στο google.com. Έτσι, αυτό είναι η τιμή για ένα ξενιστή. Αυτό είναι ένα είδος του αιτήματος ότι θα μπορούσε να σταλεί. Και τότε ένα είδος αντίδρασης που θα μπορούσε να αποσταλεί, και πάλι, με βάση αυτό το πρωτόκολλο, είναι και πάλι, HTTP / 1.1. Έτσι ώστε να είναι και πάλι η έκδοση HTTP. 200 OK είναι ακριβώς ο κωδικός κατάστασης. Και αυτό είναι ΟΚ απλά μια φράση με βάση την εν λόγω κώδικα κατάστασης. Και τότε το Content-Type αναφέρεται στον τύπο που επέστρεψε για να σας πω ότι είναι για την εν λόγω ιστοσελίδα που θα λάβετε και ότι ο browser σας μπορεί να καταστήσει αργότερα. Και αυτό είναι text / html. Κοινό: Τι σημαίνει 1,1; ΜΑΡΙΑ ZLATKOVA: Αυτό είναι ακριβώς το έκδοση of-- Ω, τι σημαίνει 1,1; Αυτό είναι μόνο η έκδοση, το HTTP έκδοση του πρωτοκόλλου που χρησιμοποιούμε. Μεγάλη ερώτηση. Άλλες ερωτήσεις; Κοινό: Θα μπορούσατε να συνοψίσω Content-Type πραγματικά γρήγορα; ΜΑΡΙΑ ZLATKOVA: Ώστε είναι ό, τι ο διακομιστής. ο τύπος του information-- τι είναι τύπος περιεχομένου ήταν οι ερωτήσεις. Έτσι ώστε ήταν ο τύπος του πληροφορίες που μπορείτε να πάρετε πίσω από το διακομιστή, το είδος του στοιχεία που το πρόγραμμα περιήγησης μπορεί, στη συνέχεια, καταστήσει ότι χρησιμοποιείτε. Κοινό: Είναι ότι αυτό που πρωτόκολλο σας λέει να κάνετε; ΜΑΡΙΑ ZLATKOVA: Συγνώμη; Κοινό: Είναι αυτό που λένε το πρωτόκολλο; ΜΑΡΙΑ ZLATKOVA: Η protocol-- Κοινό: --αυτό η Content-Type είναι ή what-- ΜΑΡΙΑ ZLATKOVA: Το πρωτόκολλο βασίζεται on-- τι είναι το πρωτόκολλο σας λέει; Αυτός είναι ακριβώς ο τρόπος ότι αυτή η πληροφορία παραδόθηκε σε εσάς με βάση σε ποιο είδος πρωτοκόλλου ήταν η πληροφορία αυτή πήρε παραδίδεται μαζί σας. Μήπως αυτό έχει νόημα είδος; ΧΑΝΑ Blumberg: Μπορείτε μπορεί να σκεφτεί πρωτοκόλλου όπως a-- Νομίζω Καθηγητής Malan περιέγραψε στην κατηγορία και το είδος του σαν a-- είναι σαν το ισοδύναμο των ανθρώπινων χειραψίας. Ας πούμε, όπως, hey, είμαι και εγώ αίτηση ξέρουν πώς να χειριστούν HTTP της έκδοσης 1.1. Και τότε ο διακομιστής λέει, Ω, εντάξει, I-- και υπάρχουν και τα δύο. Γνωρίζω, επίσης, πώς να ασχοληθεί με το HTTP / 1.1. Και Πάω να δώσει θα υποστηρίξει κάποιο περιεχόμενο. Σε αυτήν την περίπτωση, πρόκειται να είναι του τύπου text / html. Έτσι είναι το είδος του απλά ένας τρόπος από αυτά για communicating-- ΜΑΡΙΑ ZLATKOVA: Είναι απλά επιβεβαιώνει ότι είστε τόσο ακολουθώντας την ίδια πρωτόκολλο και ότι και οι δύο ο πελάτης και ο server-- έτσι Ο περιηγητής σας και το server-- είδος ξέρετε τι είστε μιλάμε και να έχουν η σύμβαση για το πέρασμα στα δεδομένα. Κοινό: Έτσι, το Content-Type part-- το κείμενο Content-Type / html-- ότι είναι ένα ξεχωριστό τμήμα του ίδιου μηνύματος; Ή είναι μέρος της ας πούμε, 200; Μήπως 200 να τους πούμε ότι ή is-- ΜΑΡΙΑ ZLATKOVA: 200 λέει ότι όλα πήγαν ΟΚ. Και τότε ο τύπος περιεχομένου είναι ένα είδος ξεχωριστό μέρος του ίδιου μηνύματος, και λέγοντας ότι το πράγμα που μου Επέστρεψε έχει αυτό το είδος του κειμένου / html. Είναι απλά δίνει περισσότερες πληροφορίες. Έχετε να προσθέσετε κάτι; ΕΝΤΆΞΕΙ. Οποιεσδήποτε άλλες ερωτήσεις σχετικά με αυτό; Φοβερός. Έτσι, κάποιες άλλες HTTP καταστάσεων που θα μπορούσε να πάρει επιπλέον 200 ΟΚ, αυτά που έχουμε δει ίσως ενδεχομένως πολλά είναι 403 και 404. Έτσι, 404, αν προσπαθούσατε να πρόσβαση κάτι που δεν υπάρχει. Έτσι, για παράδειγμα, σε σας CS50 Οικονομικών psets, αν είχε καταστεί quote.html και δεν είχατε αυτό το αρχείο, αλλά αντ 'αυτού θα έπρεπε quote.php, ότι θα οδηγήσει σε 404 Not Found επειδή το αρχείο μπορεί να μην υπάρχει. Για 403 απαγορευμένο, ότι αναφέρεται στα δικαιώματα. Έτσι, αν κάποιο αρχείο δεν είναι αναγνώσιμο από το κόσμο, μπορείτε να πάρετε ένα 403 επέστρεψε. Κάποιοι άλλοι που μπορεί να get-- 301, εγκαταστάθηκε μόνιμα? 302 Βρέθηκαν? 304, Τροποποιημένο? 400, Bad Αίτημα? και στη συνέχεια Εσωτερικό σφάλμα διακομιστή για 500 και 503, Μη διαθέσιμη υπηρεσία. Ναί. Κοινό: Θα περιμέναμε να απομνημονεύει όλες αυτές τις καταστάσεις; ΜΑΡΙΑ ZLATKOVA: Θα ήθελα να έχω τους σχετικά με σκονάκι σας. [ΓΈΛΙΟ] Κοινό: Είμαστε αναμένεται να γνωρίζουν τι προκαλεί το κάθε ένα; ΜΑΡΙΑ ZLATKOVA: Είναι; ΧΑΝΑ Blumberg: Για αυτούς που έχουμε τρέξει into-- έτσι το ερώτημα was-- ΜΑΡΙΑ ZLATKOVA: Είναι αναμένεται να ξέρετε τι κάθε ένα από αυτά το καθεστώς κώδικες θα μπορούσε να προκληθεί από; Έτσι, για αυτά που έχουμε χρησιμοποιήσει και έτρεξε, θα έλεγα, ναι. Έτσι έχουμε δει σίγουρα 200 ΟΚ και να διδάξει το στο psets. Έχουμε δει 403, 404. Για άλλες είναι αυτές; ΧΑΝΑ Blumberg: Θα ήθελα δηλαδή 500 φαίνεται δίκαιο παιχνίδι. ΜΑΡΙΑ ZLATKOVA: 500, ναι. ΧΑΝΑ Μπλούμπεργκ: Ναι. Απλά ρίξτε μια γενική αίσθηση από ό, τι τους προκαλεί. Και επίσης μόνο από αυτά ονόματα, μπορείτε να το είδος του όπως κάνει μια εκπαιδευμένη εικασία ως σε ό, τι τους προκάλεσε πραγματικά. Για παράδειγμα, κινούνται μόνιμα, πιθανώς το αρχείο έχει μετακινηθεί μόνιμα. Κοινό: Αλλά σε μια προηγούμενη εξετάσεις, υπήρχε μια τόσο πώς περιμένουν από εμάς να απαντήσουμε αυτό; ΧΑΝΑ Blumberg: Ότι άξιζε μηδέν βαθμούς. Το ερώτημα σε 418 για την τσαγιέρα είναι τεχνικά ένα κατάστασης HTTP, αλλά ήταν αξίζει μηδέν βαθμούς. Προφανώς, δεν είστε αναμένεται να τους γνωρίζουν. Κοινό: Είναι ένα πραγματικό; ΧΑΝΑ Blumberg: Πρόκειται για μια πραγματική ένα, αλλά αυτό δεν σημαίνει τίποτα. Είναι απλά ένα αστείο. Οι άνθρωποι στο Διαδίκτυο είναι αστείο. ΜΑΡΙΑ ZLATKOVA: Μεγάλη ερωτήσεις, παιδιά. Οποιεσδήποτε άλλες ερωτήσεις; Κοινό: Τι είναι το εσωτερικό σφάλμα διακομιστή; ΜΑΡΙΑ ZLATKOVA: Εσωτερική σφάλμα διακομιστή μόνο σημαίνει ότι έχετε ανίκανος να επικοινωνήσει με το διακομιστή για κάποιο λόγο. Έτσι δεν είναι κατ 'ανάγκην κάτι που έχει να κάνει με τον πελάτη ή κάτι τέτοιο. Δεν ξέρω από οποιοδήποτε συγκεκριμένο παράδειγμα ότι έχουμε πάει πάνω για να εξηγήσει, αλλά ναι. ΧΑΝΑ Μπλούμπεργκ: Σίγουρα. Έτσι, για παράδειγμα, όπως ας λέτε ότι εργάζονταν για mashup και ένα διακομιστή της Google πήγε κάτω για μερικά λόγο, μια διακοπή ρεύματος, ας πούμε. Αυτό θα ήταν ένας εσωτερικός διακομιστής σφάλμα ή κάποιο είδος που σας αρέσει of-- Δεν θα πάρετε μια απάντηση πίσω. ΜΑΡΙΑ ZLATKOVA: Ναι. Είναι ακριβώς όταν είστε ανίκανος να επικοινωνήσει με το διακομιστή για κάποιο λόγο επειδή από αυτό που πηγαίνει προς τα κάτω ή κάποιο άλλο λόγο. Έτσι, το άλμα σε PHP. PHP, σε αντίθεση με HTML, είναι μια γλώσσα προγραμματισμού. Και άρχισαν να το χρησιμοποιούν επειδή είναι πολύ χρήσιμο για την ανάπτυξη Ιστού. Εμείς αυτό που χρησιμοποιείται για πρώτη φορά το CS50 Οικονομικών. Και αυτό ουσιαστικά μας βοηθάει να φέρει μαζί αυτό σήμανσης, ο σχεδιασμός, και πώς μπορούμε πραγματικά να χρησιμοποιούν πληροφορίες για να εμφανίσετε τα πράγματα σε μια ιστοσελίδα. Έτσι, η ίδια η PHP σημαίνει PHP Hypertext Preprocessor, γι 'αυτό είναι ένα αναδρομικό backnorym από μόνη της. Και το άνοιγμα ετικέτες για την PHP έχουμε το αριστερό και δεξιά βέλη με τα ερωτηματικά και php. Έτσι, έχουμε ήδη δει ένα σωρό από αυτό. Τώρα, είμαστε ακριβώς πρόκειται να πάει πέρα ​​από μερικά από τα βασικά πράγματα γι 'αυτό. Έτσι με την PHP, την μεταβλητή τα ονόματα αρχίζουν με το σύμβολο του δολαρίου. Εμείς δεν διευκρινίζουν, και πάλι, μια μεταβλητή τύπου πια. Ακριβώς όπως κάναμε με C, δεν χρειάζεται να το κάνουμε αυτό. Μπορούμε να κάνουμε ένα σωρό διαφορετικές τα πράγματα με τις μεταβλητές. Μπορούμε να τα βάλει μαζί με συνένωση τους με τον συμβολισμό με την τελεία, η οποία δεν θα μπορούσαμε να κάνουμε σε C και πάλι. Και πάλι, έχουμε μια λίγο μεγαλύτερη ευελιξία με την PHP όσον αφορά τις μεταβλητές. Και πάλι, δεν έχουμε μια κύρια λειτουργία. Και PHP ερμηνεύεται σε αντίθεση με συγκεντρώνονται, Τόσο ακριβώς πώς θα έκανε για τα αρχεία C, δεν έχουμε να το κάνουμε αυτό για την PHP. Αλλά μάλλον, ο τρόπος που η γλώσσα διοικείται από μόνη της, ερμηνεύεται. Και τότε χαλαρά πληκτρολογήσει Σημαίνει απλώς ότι εμείς Δεν χρειάζεται να ορίσετε μια μεταβλητή τύπο και τη μεταβλητή είδη Τα κατανοητό κατά το χρόνο εκτέλεσης. Κοινό: Αλλά τι έκανες εννοούμε με τον όρο dot συνένωση; ΜΑΡΙΑ ZLATKOVA: Σίγουρα. Όταν θέλουμε να βάλουμε τα πράγματα together-- Έτσι, αν είχαμε κάποια μεταβλητή που είχε την τιμή 3 και είχαμε ένα άλλο μεταβλητή που είχε την τιμή της συμβολοσειράς, θα μπορούσε να θέσει τις μεταβλητές μαζί βάζοντας μια τελεία στο μεταξύ τους και να τους συνενώσει. Ή θα μπορούσαμε να δημιουργήσουμε μια μεταβλητή που ονομάζεται όνομα και το βάζουμε μαζί με συνένωση δύο χορδές. Έτσι, αν είχαμε μια σειρά σε δίκλινο εισαγωγικά και βάλτε μια τελεία μετά, και στη συνέχεια είχαμε ένα άλλο string, ότι θα δημιουργήσει μια σειρά εντελώς. Κοινό: OK. ΜΑΡΙΑ ΛΕΤΟΝΙΑ: Ήταν σαφής; Κοινό: Ναι. ΜΑΡΙΑ ZLATKOVA: OK. Ναί. Κοινό: Όταν λέτε ερμηνεύεται όχι καταρτίζονται, είναι αυτά που λες δεν το κάνετε Πρέπει να είστε όσο πιο συγκεκριμένοι όταν πρόκειται για την PHP έναντι C; ΜΑΡΙΑ ZLATKOVA: Όταν λέμε ερμηνεύεται ως αντίθεση προς καταρτίζονται, Τι εννοούμε; Έτσι, αυτό σημαίνει ότι δεν χρειαζόμαστε εκτελέσιμα αρχεία για να τρέξει PHP. Αυτό σημαίνει ότι τρέχει όπως πάει. Βγάζει νόημα αυτό? Λίγο περισσότερο. ΧΑΝΑ Blumberg: Άρα μπορεί να σκεφτεί διερμηνέα ως ένα άλλο πρόγραμμα που είναι υπεύθυνο για να πάει γραμμή προς γραμμή μέσω της PHP και στην πραγματικότητα εκτέλεσης, σε αντίθεση με Για την κατάρτιση όλα κάτω σε δυαδικό. Αυτό δεν σημαίνει τίποτα στην πραγματικότητα σχετικά με το πώς συγκεκριμένες πρέπει να είμαστε. Θα πρέπει ακόμα να είναι ακριβείς, και δεν ξεχνάμε ερωτηματικό σας, και βεβαιωθείτε ότι Έχετε σύμβολο του δολαρίου σας, και τέτοια πράγματα. Καλή ερώτηση. ΜΑΡΙΑ ZLATKOVA: Ναι. Έτσι, γραμμή προς γραμμή, όπως σε αντίθεση με τα αρχεία με C, πρέπει να κάνουμε όλη την τελική πριν μπορούμε να τρέχουμε. Αυτή είναι η βασική διαφορά. Αλλά και πάλι, δεν μπορούμε να Πραγματικά είναι λιγότερο συγκεκριμένες. Έτσι συστοιχίες στην PHP αντιπροσωπεύουν στην πραγματικότητα ένα διέταξε χάρτη. Έτσι συστοιχίες συνεργάτης τιμές στα πλήκτρα. Οι δύο τρόποι για να κρίνει την συστοιχία, με βάση αυτή τη σύνταξη, μπορούμε να είμαστε πιο σαφείς λέγοντας έχουμε μια σειρά και έχουμε αυτό το key1 που χαρτογραφείται Αυτό value1, key2 που χαρτογραφεί value2. Ή μπορούμε απλά να δημιουργήσετε έναν πίνακα που περιέχει η ίδια τις τιμές και στη συνέχεια τα πλήκτρα είναι κατανοητή με έναν τρόπο. Οποιεσδήποτε ερωτήσεις σχετικά με αυτό; Κοινό: Ποια θα ήταν τα κλειδιά είναι στο δεύτερο παράδειγμα; 0, 1, 2, 3; ΜΑΡΙΑ ZLATKOVA: Για παράδειγμα, είναι ακριβώς τα κλειδιά σε αυτό δεν είναι απαραίτητο κανε τη διαφορα. Απλώς καθορίσει πώς μπορείτε να χρησιμοποιήσετε τις τιμές στο εσωτερικό του. Έτσι, αν είχαμε μια foreach βρόχο σε PHP που θα να μας επιτρέψει να περάσουν από όλες τις τιμές, μπορούμε να περάσουν από όλες τις αξίες, ακόμη και αν είχαμε ή δεν ορίζεται ένα ειδικό κλειδί μέσα στην περιοχή του προηγούμενη σύνταξη. Έτσι, ακόμη και με αυτό το είδος του πίνακα, θα μπορούσαμε ακόμα έχουν έναν βρόχο foreach ότι περνά από κάθε από τις τιμές του κλειδιού στον πίνακα. Έτσι, η σύνταξη ενός foreach βρόχου, ξεκινάμε με μια σειρά. Αυτή η μεταβλητή $ ARR είναι πραγματική σειρά μας ότι ορίσαμε στην προηγούμενη διαφάνεια ως αξία που πηγαίνει κυριολεκτικά μέσω καθεμία από τις αξίες, ανεξάρτητα από το αν είχαμε ένα κλειδί ή όχι. Και τότε μπορούμε να κάνουμε κάτι με η αξία εσωτερικό του βρόχου foreach. Έτσι και πάλι, αν είχαμε μια σειρά όπως αυτή εδώ created-- έτσι έχουμε το κλειδί του foo και την αξία των μπαρ, το κλειδί του Baz και την αξία των qux-- μπορούμε να έχουμε έναν βρόχο foreach ότι περνά μέσα από τη συστοιχία ως βασική αξία και στη συνέχεια να κάνουμε κάτι με το κλειδί ή / και την αξία. Αλλά εμείς δεν πρέπει απαραίτητα να είναι πάντα Πρέπει να έχεις ένα foreach loops ότι περνά μέσα από τη συστοιχία ως βασικό χάρτη με την αξία. Μπορούμε να πάμε μέσω της foreach σειρά βρόχο ως αξία. ΧΑΝΑ Blumberg: Και νομίζω ότι Ήταν to-- ερώτησή σας, τι είναι ο τεκμαρτός δείκτης; Κοινό: Κάπως. ΜΑΡΙΑ ZLATKOVA: Αχ. ΧΑΝΑ Blumberg: Ναι, ναι. Έτσι, βασικά, αν δεν καθορίσετε ένα κλειδί, αυτό πρόκειται να είναι 01. ΜΑΡΙΑ ZLATKOVA: Ναι. Ακριβώς όπως και με C, είναι μηδέν αναπροσαρμόζονται, αν δεν ορίσετε ένα κλειδί. Κοινό: Συγνώμη. Θα μπορούσατε να δοκιμάσετε ομιλία λίγο πιο δυνατά; Είμαι έχοντας ένα μικρό κομμάτι της προβλήματα ακοής πάντα. ΜΑΡΙΑ ZLATKOVA: Λυπάμαι τόσο πολύ. Ναι φυσικά. Έτσι θέλετε να μου για να πάει πέρα ​​από αυτό πάλι; Ή είναι this-- Κοινό: Έτσι, με το προηγούμενο, αν slide-- θα μπορούσατε απλά να πάτε πίσω για ένα δευτερόλεπτο. ΜΑΡΙΑ ZLATKOVA: Φυσικά, συγνώμη. Κοινό: Έτσι, η δεύτερη συστοιχία εδώ δεν φαίνεται να έχει μια τιμή για να πληκτρολογήσετε, είδος [? αιτία. ?] ΜΑΡΙΑ ZLATKOVA: Σωστά. Κοινό: Και πώς αυτό το έργο όταν λέτε ότι είναι όλα ή τίποτα. Για μένα, που μοιάζει ένα [? foo;] ήδη. ΜΑΡΙΑ ZLATKOVA: Ναι, ναι. Έτσι και πάλι, αυτό είναι ένα παραγγείλει χάρτης με αυτή την έννοια ότι υπάρχουν κατανοητές, για παράδειγμα, οι δείκτες εδώ μπορεί να γίνει κατανοητή ως 0, 1, 2, 3. Και πάλι, αυτό είναι εκείνοι που έχουν ευρετήρια είναι ισοδύναμη μας έχουν κλειδιών χαρτογραφηθεί πάνω τιμές. Έτσι, αν το κλειδί μας ήταν 0-- συγγνώμη. ΧΑΝΑ Blumberg: Όχι, έχει υπάρξει αποδώσει εδώ. Είναι πραγματικά πολύ ωραίο. ΜΑΡΙΑ ZLATKOVA: Αυτό είναι μεγάλη. ΕΝΤΆΞΕΙ. Έτσι και πάλι, $ 0 ARR θα το κλειδί για την τιμή 1. 0 θα είναι το κλειδί για την τιμή 1. Κοινό: Λυπάμαι. Είναι αόρατη. ΧΑΝΑ Blumberg: Εντάξει, ξέχνα. Κιμωλία ήταν μια κακή ιδέα. Το παίρνω πίσω. Μπορείτε να σκεφτείτε τα πλήκτρα ως 0 χάρτες με την τιμή 1. ΜΑΡΙΑ ZLATKOVA: Ναι. Έτσι, αυτό είναι 0, αυτό είναι 1, 2, 3. Αυτά μπορεί να είναι τα κλειδιά σας. Μπορείτε να σκεφτείτε τους as-- ναι. Έτσι, αντί να έχουν ρητή κλειδιά, από όπου και αν είδος νοούνται ως τα ευρετήρια ξεκινώντας από μηδέν. Η κιμωλία δεν βοήθησε. Ναι. Κοινό: Για το βρόχο foreach, αν θέλαμε να δείτε το σαν αξία, θα ήταν απλώς αυτόματα ευρετήριο 0; ΜΑΡΙΑ ZLATKOVA: Ναι. Θα περάσουν από κάθε μια από τις αξίες. Κοινό: [δεν ακούγεται] ως 0 ή θα κάνει ότι ακριβώς 0; ΜΑΡΙΑ ZLATKOVA: Θα πρέπει δηλαδή ως σύμβολο του δολαρίου και, στη συνέχεια, μερικοί όνομα της μεταβλητής, αξία. Κοινό: [δεν ακούγεται]. ΜΑΡΙΑ ZLATKOVA: Συγνώμη; Κοινό: Συγγνώμη, είμαι απλά προσπαθώ να θυμηθώ. Πώς θα το κάνουμε αυτό, αν μπορείτε να το κάνετε αυτόματα ευρετηρίαση είναι μόνο 0; ΜΑΡΙΑ ZLATKOVA: Λοιπόν, πώς θα το κάνουμε αυτό εάν δεν έχετε συγκεκριμένες βασικές ονόματα; Κοινό: Ναι. ΜΑΡΙΑ ZLATKOVA: Θα ακριβώς define-- μόνο να πω τον εαυτό σας ως κάποιο όνομα. Έτσι, στο psets σας, εσείς θα μπορούσε θυμηθείτε foreach $ γραμμή με $ σειρές, δημιουργήσαμε τον εαυτό μας αυτό το $ λέγοντας σειρά θέλουμε να περάσει σειρά από $ σειρές. Ακόμα κι αν δεν είχαμε Αυτή η ρητή $ σειρές που ορίζονται, θα μπορούσαμε να φύγουμε και να λένε ότι αυτό μπορεί να είναι το κλειδί μας, και μόλις περάσουν από κάθε μια από τις αξίες. Κοινό: Έτσι είναι η αξία μια νέα μεταβλητή που δημιουργούμε για να αποθηκεύσετε [δεν ακούγεται]; ΜΑΡΙΑ ZLATKOVA: Έτσι δεν είναι εγγενώς μια νέα μεταβλητή. Είναι μια μεταβλητή που αναφέρεται στην εντός της συστοιχίας σε καθένα από αυτά. ΧΑΝΑ Blumberg: Είναι ένα νέο όνομα μεταβλητής. ΜΑΡΙΑ ZLATKOVA: Ναι, είναι ένα νέο όνομα μεταβλητής, αλλά δεν είναι inherently-- ναι. Είναι απλά μια νέα μεταβλητή ότι μπορείτε να το κάνετε αυτό. Τόσο ακριβώς πώς το κάναμε $ γραμμή με $ σειρές, σειρές Ήταν μια νέα μεταβλητή όνομα που θα θα μπορούσε να δημιουργήσει σε βρόχο foreach μας. Δεν πρέπει να προϋπάρχουν πριν από αυτό. Κοινό: Θα μπορούσατε να πάτε μέσω του λογική για το καθένα, χρησιμοποιώντας το παράδειγμα εκεί; ΜΑΡΙΑ ZLATKOVA: Mhm. Ω συγνώμη. Εδώ είναι το παράδειγμα. Σίγουρος. Έτσι, για κάθε array-- έτσι αυτό σημαίνει ότι πηγαίνω σε αυτήν την σειρά ως βασικό value-- ότι πρόκειται να περάσει μέσα από αυτή τη σειρά και το πρώτο πάει και να πάρει foo, ο κλειδί foo και το μπαρ αξία. Και στη συνέχεια για τη δεύτερη επανάληψη του βρόχου for, πρόκειται να περάσουν και να λάβει το κλειδί Baz και η QUX αξία. Και τότε μπορείτε να κάνετε κάτι με είτε από αυτούς ή και οι δύο από αυτούς. Κοινό: Έτσι, η ιδέα πίσω που έχει ένα σημείο-κλειδί για την τιμή, τι θα καταλήξετε πρόσβασης; ΜΑΡΙΑ ZLATKOVA: Ποια είναι η ιδέα έχουν ένα πλήκτρο που δείχνει στην αξία; Είναι ακριβώς μια άλλη σύμβαση, άλλο τρόπο που διέρχεται από τη συστοιχία και να είναι σε θέση να έχουν πρόσβαση, είτε η κλειδί ή την αξία ή και τα δύο και να τα χρησιμοποιήσουν. Κοινό: Ποιος είναι ο ρόλος του να διατάξει ότι η foreach εκτελείται σε; Έτσι, αν ήμασταν για να προσθέσετε στοιχεία στη συστοιχία αργότερα, Θα εκείνοι είναι οι πρώτοι κάλεσε στον πίνακα foreach, ή θα ήταν αργότερα; ΜΑΡΙΑ ZLATKOVA: Λοιπόν, τι είναι η διάταξη ότι η foreach βρόχος περνά μέσα από ένα πίνακα; Στη συνέχεια, μέσω του πρώτου στοιχείο για το τελευταίο στοιχείο, στο τελευταίο προστέθηκε στοιχείου. Αν προσθέσετε στοιχεία αργότερα, θα έκαναν να accessed-- τα πρώτα στοιχεία θα να προσεγγιστεί ως η πρώτη στοιχεία της συστοιχίας, και τότε θα περάσουν από κάθε μία από τα στοιχεία όπως το είδος της ordered-- όχι μια εντολή, αλλά ο τρόπος που έχουν τεθεί σε συστοιχία. Κοινό: Έτσι νέα στοιχεία προστίθενται αργότερα; Έτσι, από όπου και αν added-- θα είναι η τελευταίοι στην [? επανάληψη. ?] ΜΑΡΙΑ ZLATKOVA: Νέα στοιχεία can-- Βασικά, όταν προστίθενται νέα στοιχεία, είναι αυτοί προστίθενται στο τέλος της συστοιχίας; Κοινό: Ναι. ΜΑΡΙΑ ZLATKOVA: Έτσι πιστεύω. Ναί. Και στη συνέχεια, με το βρόχο foreach σας, αφού έχετε προσθέσει νέα στοιχεία και μπορείτε να πάτε μέσω αυτών, τα νέα στοιχεία που θα accessed-- είναι το νέο στοιχείο, αν είναι προστίθεται τελευταίο, θα προσεγγιστεί τελευταία. Κοινό: Μπορείς να δώσω ένα παράδειγμα του κάτι που θα [δεν ακούγεται] με κάτι με αξία όπως [δεν ακούγεται] ή της αξίας, όπως το πώς θέλετε να μορφοποιήσετε αυτό; ΜΑΡΙΑ ZLATKOVA: Σίγουρα. Μπορώ να δώσω ένα παράδειγμα του τι θα κάνουμε με την τιμή; Λοιπόν, τι εσείς μπορεί να είναι εξοικειωμένος με είναι ότι έχουμε περάσει από μια σειρά και βασικά τυπωμένο κάθε ένα από τα στοιχεία, για παράδειγμα, ως μέρος μιας ταξινομημένη λίστα ή κάτι τέτοιο. Μήπως αυτό έχει νόημα ή θέλουμε to-- Κοινό: Μπορούμε να τυπώνει αυτές τις τιμές έξω; ΜΑΡΙΑ ZLATKOVA: Ναι, θα μπορούσαμε να εκτυπώσετε και τότε ουσιαστικά $ value διότι στο ότι συγκεκριμένη τιμή, θα είναι εκτύπωση του αξία μέσα από αυτό. Έτσι, αν ήμασταν στην πρώτη μας επανάληψη αυτό και εμείς τυπωμένο $ αξία, θα πρέπει να εκτυπώσετε μπαρ. Κοινό: Υπάρχουν υπάρχουν επίσης για βρόχων σε PHP ή απλά foreach loops; ΜΑΡΙΑ ZLATKOVA: Δεν υπάρχει Επίσης, για βρόχων σε PHP. Και η λογική τους είναι ως επί το πλείστον η ίδιο με αυτό που έχετε συνηθίσει. Κοινό: Έτσι η αξία του είναι μηδενική. ΜΑΡΙΑ ZLATKOVA: Είναι σαν τον ίδιο. Ναι. Κοινό: Είμαι ακριβώς πρόκειται να ρωτήσω. Έτσι, όταν δηλώνετε ένα σειρά, δεν χρειάζεστε να πω τι μέγεθος πρόκειται να είναι, πράγμα που σημαίνει ότι μπορείτε απλά προσθέσετε και να πάρει στοιχεία [δεν ακούγεται]. ΜΑΡΙΑ ZLATKOVA: Yup. Ναι. Ακριβώς. Όταν δηλώνουμε έναν πίνακα, μπορούμε Δεν χρειάζεται να πω τι μέγεθος είναι, έτσι μπορούμε να προσθέσουμε απλά στοιχεία σε αυτό αργότερα, καθώς και. Περισσότερες ερωτήσεις; Έτσι, φέρνοντας PHP και HTML μαζί, τι έχουμε seen-- καλά, για παράδειγμα, σε αυτό το παράδειγμα, έχουμε μια φόρμα HTML που έχει ένα πεδίο εισαγωγής. Και το πεδίο εισαγωγής είναι απλά το όνομά και στη συνέχεια θα έχει ένα κουμπί Υποβολή. Και όταν πατήσετε το κουμπί Υποβολή κουμπί, στο αρχείο hello.php μας, επειδή η μέθοδος για τη μορφή είναι πάρει, μπορούμε να έχουμε πρόσβαση ό, τι είναι στο όνομά από αυτό να πάρει την παγκόσμια μεταβλητή που is-- τη σύνταξη για να είναι $ _GET. Και τότε θα μπορούν να έχουν πρόσβαση, ανεξάρτητα από το είσοδο του χρήστη στο εσωτερικό του εν λόγω εντύπου για το όνομα καθορίζοντας το όνομα του εν λόγω τομέα. Οποιεσδήποτε άλλες ερωτήσεις ή οποιαδήποτε ερωτήσεις σχετικά με αυτό το συγκεκριμένο παράδειγμα; Κοινό: Πού είναι η PHP; ΜΑΡΙΑ ZLATKOVA: Εδώ. Έτσι, αυτό είναι το άνοιγμα ετικέτα μας για την PHP. Κοινό: Σωστά. ΜΑΡΙΑ ZLATKOVA: Ναι. ΧΑΝΑ Μπλούμπεργκ: Η = είναι στενογραφία γι 'αυτό είναι η PHP και μόνο ηχώ. Κοινό: Αχ. ΜΑΡΙΑ ZLATKOVA: Ναι, συγγνώμη. Θα έπρεπε να είχα γίνει σαφές. ΧΑΝΑ Μπλούμπεργκ: Εκτύπωση. ΜΑΡΙΑ ZLATKOVA: Είναι απλά η λειτουργία ότι μας επιτρέπει να εκτυπώσετε κάτι. Μεγάλη ερώτηση. Έτσι going-- ναι. Κοινό: Υπάρχει πρόκειται να είναι αρκετά ένα κομμάτι της κωδικοποίησης χέρι της PHP και HTML σε ένα κουίζ 1; ΜΑΡΙΑ ZLATKOVA: Δεν μπορεί να υπάρξει μια δίκαιη ποσό της διερμηνείας της PHP και HTML, όχι κατ 'ανάγκην σαν ένα τεράστιο ποσό της κωδικοποίησης, αν και ίσως χρειαστεί να γράψετε ένα βρόχου foreach, όμως, ένα για το βρόχο. Οποιαδήποτε από τις θηλιές ότι εμείς καλύψει εδώ είναι δίκαιο παιχνίδι. Και αυτό είναι ως επί το πλείστον. ΧΑΝΑ Blumberg: Θα ήθελα να είναι προετοιμασμένοι. Με τον ίδιο τρόπο που σας ζητήσαμε να γράψετε μια δέσμη των λειτουργιών C σε ένα κουίζ 0, Θα ήμουν διατεθειμένη να πράξει το ίδια σε PHP και JavaScript. ΜΑΡΙΑ ZLATKOVA: Ναι. ΧΑΝΑ Blumberg: Θα έλεγα α little-- όπως δεν είμαστε πρόκειται να σας κάνει να γράψετε ένα τεράστιο HTML σελίδα μόνο και μόνο επειδή αυτό είναι ένα μικρό κομμάτι κουραστικό, αλλά μπορεί να έχετε μέρη. Αυτό είναι εντελώς δίκαιο παιχνίδι. Όπως μικρές σελίδα HTML, εντελώς δίκαιες. Κοινό: OK. Τι θα λέγατε σε JavaScript, καθώς; ΧΑΝΑ Μπλούμπεργκ: Ναι. Δίκαιη παιχνίδι της Javascript. ΜΑΡΙΑ ZLATKOVA: Ναι. Αυτό είναι απολύτως δίκαιο παιχνίδι. ΧΑΝΑ Blumberg: Θα πάρετε με αυτή, όπως 10 λεπτών. ΜΑΡΙΑ ZLATKOVA: SQL, και πάλι, Structured Query Language. Βασικά μας επιτρέπει να διαχειρίζεστε τα δεδομένα σε ένα διαχείρισης σχεσιακών βάσεων δεδομένων σύστημα. Αυτό σημαίνει απλά βασικά ότι έχουμε κάπου για να αποθηκεύσετε κάποια στοιχεία που θα μπορούσαμε να θέλουμε να χρησιμοποιήσετε σε μια ιστοσελίδα ή σε κάποια άλλη μορφή. Και τότε θα πρέπει να πάρετε ερωτήματα πληροφορίες από τη βάση δεδομένων μας, ή για να εισάγετε πληροφορίες σε αυτά. Ένα μεγάλο μέρος της κοινής ones-- ΕΝΗΜΕΡΩΣΗ, INSERT, SELECT, και DELETE. Έτσι, για την ενημέρωση, αυτή είναι η σύνταξη για την ενημέρωση των δεδομένων σε μια βάση δεδομένων. Ενημέρωση αυτόν τον πίνακα που ονομάζεται τραπέζι λέγοντας SET, μπορούμε να ορίσουμε κάποιες τιμές σε όλα γραμμές για ίση κάτι άλλο. Έτσι, μπορούμε επίσης να προσδιοριστούν ορισμένοι ειδικοί καταχωρήσεις που θέλουμε να τροποποιήσετε και ότι μπορεί να είναι όπου είναι. Και μπορούμε να καθορίσουμε ότι θέλουμε μόνο να τροποποιήσει ορισμένες γραμμές όπου βρίσκεται το σπίτι για, αν είχαμε ένα τραπέζι των μαθητών και όλοι οι μαθητές είχαν σπίτι, γι 'αυτό θα τροποποιήσει μόνο κάποιες τιμές όπου ένα σπίτι ισούται Currier, για παράδειγμα. Για INSERT, μπορούμε να εισάγουμε ορισμένες τιμές σε έναν πίνακα. Έτσι, εισάγετε στο τραπέζι, και τότε οι τιμές, και στη συνέχεια σε παρενθέσεις, ορίζουμε οποία οι τιμές που θέλετε να εισαγάγετε. Έτσι, εισάγετε στο τραπέζι, και Στ1 COL2, η τιμή είναι VAL1 και Val2. Έτσι, αυτό εισάγει ουσιαστικά μια νέα γραμμή σε ένας πίνακας που περιέχει τις τιμές 1 και 2 κάτω από τις στήλες 1 και 2. Και μετά θα πάμε για να πάει πέρα ​​από ένα γρήγορο παράδειγμα του πώς αυτό φαίνεται όπως και στην βάση δεδομένων μας λίγο. Αλλά αυτό το τελικό ερώτημα που έχω ότι θα πάμε για να πάει πάνω, SELECT, μας επιτρέπει μόνο για να επιλέξετε δεδομένα από έναν πίνακα πιθανώς να το χρησιμοποιήσετε αργότερα. Και ο τρόπος που το κάνουμε αυτό είναι ότι απλά να το αποθηκεύσετε σε κάποια μεταβλητή. Και τότε μπορούμε ίσως να το χρησιμοποιήσετε ξανά. Έτσι, επιλέξτε αστέρι σημαίνει επιλέξετε όλα. Αυτό είναι μόνο ένα στενογραφία για την επιλογή όλων. ΑΠΟ τραπέζι όπου, ψάχνουμε για ορισμένες ειδικές συνθήκες, Έτσι, όταν στήλη ισούται με κάτι, για παράδειγμα. Αν θέλαμε απλώς να επιλέξτε όλα από τον πίνακα, Αυτό επιλέγει μόνο όλες τις στήλες και όλες οι σειρές από έναν πίνακα. Και τότε Διαγραφή από το τραπέζι ΕΦΟΣΟΝ στήλη ισούται με κάτι, Η επιλογή αυτή διαγράφει μόνο μερικά σειρά από το τραπέζι μας όπου έχουμε κάποιες συγκεκριμένες προϋποθέσεις. Στην περίπτωση αυτή, οι συνθήκες είναι στήλη ισούται με κάτι. Έτσι απλά ένα γρήγορο παράδειγμα. Αν έχουμε αυτό το τραπέζι εδώ και εμείς τοποθετήστε την σε έναν πίνακα, οι τιμές αυτές, ότι θα εισάγει μια νέα γραμμή. Και αν είχαμε την αυτόματη αύξηση, αυτό θα μόλις αυξήσετε μας ταυτότητας 0-1 2 κατά. Αν έχουμε επιλέξει όλα από τους μαθητές του, επιστρέφει ακριβώς όλα τα πεδία και όλες τις γραμμές. Σε περίπτωση που το έτος είναι μεγαλύτερη από ή ίσο με 2,016, ότι θα επέστρεφε μόνο Χάνα και τον εαυτό μου. Και στη συνέχεια, αν εμείς απλά επιλεγεί id χρόνο και χρόνο από τους μαθητές όπου το σπίτι είναι Cabot Σπίτι, ότι θα, και πάλι, την επιστροφή Hannah και τον εαυτό μου. Στη συνέχεια, αν διαγραφούν από τους φοιτητές όπου name είναι ίση με τον Rob, ότι θα διαγράψετε ολόκληρη τη γραμμή. Και τότε, αν ορίσουμε τον όνομα, φοιτητές ΕΝΗΜΕΡΩΣΗ Ρυθμίστε το όνομα ισοδυναμεί με Daven Όπου το σπίτι είναι ίση Cabot Σπίτι, ότι πρόκειται να πάει στο αυτές οι γραμμές και στη συνέχεια να ενημερώσετε το όνομα. Και στη συνέχεια μερικά είδη δεδομένων SQL είναι ΧΑΡ, VARCHAR, INT, και FLOAT. Αυτά είναι δίκαιο παιχνίδι. Θα ήθελα να πάω ξανά και βεβαιωθείτε ότι γνωρίζετε και να έχετε στο σκονάκι σας, τι κάθε ένα από αυτούς τους χαρακτήρες έχουν χρησιμοποιηθεί για, τι που τα χρησιμοποιούσαν για psets σας, και βεβαιωθείτε ότι είστε εξοικειωμένοι και άνετα με την κατοχή να επιλέξετε από διαφορετικούς τύπους δεδομένων με το chipset σας. Ναί. Κοινό: Τι ήταν αυτό πίνακα αποθηκεύονται; Ναι, όπου ο πίνακας αυτός αποθηκεύεται; ΜΑΡΙΑ ZLATKOVA: Λοιπόν, αυτή τη στιγμή, δεν είναι αποθηκευμένα. Τέλος πάντων, όπου ο πίνακας αυτός αποθηκεύεται; Αλλά μπορεί να αποθηκευτεί σε μια βάση δεδομένων SQL. Κοινό: Και πού είναι η βάση δεδομένων SQL; Στον υπολογιστή, σε απευθείας σύνδεση κάπου, ο διακομιστής; ΜΑΡΙΑ ZLATKOVA: Μπορεί να είναι μια πολλά διαφορετικά πράγματα. ΧΑΝΑ Blumberg: Έχουμε διασυνδεθεί με SQL πίνακες ως επί το πλείστον με το phpMyAdmin. Έτσι, θα μπορούσαμε να ζητήσουμε ένα διακομιστή την αποθήκευσή τους για εμάς. Θα μπορούσαμε να τα αποθηκεύσετε στον δικό μας υπολογιστή. ΜΑΡΙΑ ZLATKOVA: Εξαρτάται μόνο πώς θέλετε να το κάνετε για τον εαυτό σας. Αλλά έχουμε την αποθήκευση τους, όπως αναφέρθηκε Χάνα, σχετικά με το phpMyAdmin, η οποία είναι σε απευθείας σύνδεση. Και τότε ο τρόπος που χρησιμοποιούμε PHP και SQL, τα αποθηκεύουμε σε κάποια μεταβλητή τι έχουμε ερωτηθούν για. Έτσι, αν επιλέξετε όλα τα από την ιστορία όπου user_id ισούται με το αναγνωριστικό περιόδου, ότι θα επιλέξετε όλες τις σειρές για το συγκεκριμένο άτομο που καταγράφεται από την ιστορία τραπέζι και να τα ταξινομήσετε σε σειρές. Ένα δροσερό πράγμα που πρέπει να ξέρετε είναι ότι η λειτουργία του ερωτήματος CS50 προστατεύει από ετικέτες SQL ένεση. Αυτό σημαίνει απλά ότι κάνει σίγουρα η είσοδος που έχει εισαχθεί είναι σωστή και ότι το πρόσωπο που εισέρχεται στην είσοδο δεν προσπαθεί να εισάγει κάποια κακόβουλα Κωδικός είτε να πέσει στο τραπέζι μας ή να διαγράψει τα πάντα στο εσωτερικό της βάσης δεδομένων μας. Μια γρήγορη επισκόπηση των Μοντέλο Προβολή ελεγκτή μοντέλο, είναι απλά ένας τρόπος οργάνωσης και σκεφτόμαστε κώδικα. Είναι και πάλι, ένα παράδειγμα σχεδιασμού. Αυτό σημαίνει ότι εμείς can-- και καλή πρακτική για το διαχωρισμό διαφόρων τμημάτων του κώδικα μας και ό, τι τον έλεγχο σε αυτά τα τρία παραδείγματα. Έτσι, η άποψή μας είναι τις περισσότερες φορές μας προτύπων, τη διάταξη, ο τρόπος ότι θέτουμε το πώς κωδικό μας κοιτάζει. Αυτό είναι ως επί το πλείστον CSS αρχεία μας και ο τρόπος ότι ορίσαμε το σχεδιασμό μας κώδικα, βασικά. Ελεγκτής μας είναι ως επί το πλείστον, τι έχουμε κάνει με τα αρχεία PHP. Έτσι και πάλι, σε συνεργασία με το πληροφορίες που έχουμε και ορίζοντας τον τρόπο αυτό πληροφορίες χρησιμοποιούνται, και στη συνέχεια περνά αυτές τις πληροφορίες είτε πάνω στην όψη ή το μοντέλο. Και το μοντέλο, ο τρόπος που έχουμε έχει χρησιμοποιείτε είναι έχει τη βάση δεδομένων μας, Έτσι, όταν οι πληροφορίες μας είναι αποθηκεύονται έτσι ώστε να έχει κάπου να ζήσουν, και οποιοδήποτε από τα κώδικα που σχετίζεται με τον τρόπο ότι έχουμε αυτές τις πληροφορίες ή την τρόπο που θα επικαιροποιεί τις πληροφορίες αυτές. Έτσι στο μοντέλο MVC, HTTP Οι αιτήσεις που αποστέλλονται σε έναν web server. Στη συνέχεια, οι ερμηνεύει ελεγκτής το αίτημα του χρήστη και στη συνέχεια επικυρώνει την είσοδο του χρήστη. Είναι προαιρετικό να έχουμε ο ελεγκτής επικοινωνούν με ένα μοντέλο, οπότε κάτι σαν βάση δεδομένων μας ή κάποια άλλη λειτουργικότητα ότι αναμεταδίδει πληροφορίες. Και τελικά, ο ελεγκτής περνά στοιχεία στην προβολή έτσι ώστε να μπορεί να είναι παρέχονται και ότι μπορεί να γίνονται ορατά σε οποιοδήποτε πρόσωπο την πρόσβαση στην ιστοσελίδα. Καμιά ερώτηση? Φοβερός. Έτσι και πάλι, το μοντέλο, η λειτουργία του, και πάλι, Είναι επίμονη αποθήκευση των πληροφοριών, τη διαχείριση και την οργάνωση των δεδομένων. Και ό, τι έχουμε δει μέχρι τώρα είναι η βάση δεδομένων MySQL και όλα τα αρχεία δεδομένων που μπορεί να χρησιμοποιήσει. Δείτε την παρουσίαση των πληροφοριών σε ο χρήστης, ο ΚΠΕ, ή διεπαφή χρήστη. Και το παράδειγμα αυτό είναι HTML. Και τότε θα μπορούσαμε να έχουμε την ελάχιστη PHP. Έτσι, ένα για το βρόχο που επαναλαμβάνεται πάνω από τα δεδομένα που εκτυπώνονται από αποτελεί μέρος της άποψης, όπως σε αντίθεση με τον ελεγκτή. Και τότε πολλά αρχεία PHP μας εμπίπτουν στην κατηγορία ελεγκτή. Χειρίζεται δίκαιων αιτημάτων των χρηστών και παίρνει πληροφορίες από το μοντέλο. Άλμα στο έγγραφο Object Model, αυτό ακριβώς αναφέρεται στον τρόπο HTML Τα έγγραφα οργανώνονται. Και είναι οργανωμένα σε ένα δέντρο δομή που έχει μια ιεραρχία. Έτσι, αν έχουμε πρόσβαση σε [δεν ακούγεται] αναπαράσταση του εγγράφου, μπορούμε να εργαστούμε με το έγγραφο, όπως χειριζόμαστε αντικείμενα βασικά. Και για να γίνει αυτή η λίγο πιο σαφής, όταν έχουμε πολλά μας διαφορετικές ετικέτες απαντήσετε με διαφορετικές διαδρομές στο δέντρο μας. Και στη συνέχεια για αυτό το παράδειγμα, έχουμε έχουν το βασικό κόμβο εγγράφου. Έχουμε, λοιπόν, ο κόμβος HTML μας ότι χωρίζεται σε κεφάλι και το σώμα. Επικεφαλής έχει τον τίτλο και, στη συνέχεια, τίτλος περιέχει Γεια σου, κόσμε. Και το σώμα μας περιέχει μόνο γειά σου, τον κόσμο, καθώς και. Έτσι, οποιεσδήποτε ερωτήσεις σχετικά με οποιοδήποτε από τα πράγματα που καλύψαμε μέχρι τώρα; Και αν όχι, θα Χάνα αναλάβει με JavaScript. Φοβερός. ΧΑΝΑ Blumberg: Εντάξει, δροσερό. Αν μη τι άλλο έρχεται με την PHP ή HTML, ή οποιαδήποτε από τα πράγματα που καλύπτεται Μαρία, μπορούμε πάντα να διακόψετε. Κάνουμε καλύτερα σε ξανά, τόσο φοβερό. Και μόνο για να πάει πίσω πολύ γρήγορα σε αυτό, αν κοιτάξετε κάθε εξετάσεις παρελθόν έτος, αυτό έρχεται either-- είναι εδώ μερικά HTML, κάνουν αυτό το διάγραμμα. Ή εδώ είναι το διάγραμμα αυτό, κάνουν μερικά HTML, έτσι σίγουρα ασκούν αυτό. Και τότε αυτό είναι ένα εγγυημένο ερώτηση που μπορείτε να πάρετε σωστά. Δροσερός. Ας μιλήσουμε για το JavaScript και πώς είναι λίγο διαφορετικές από τις γλώσσες όπως η PHP και C, οι δύο γλώσσες που είδαμε προηγουμένως. Έτσι νούμερο ένα, είναι χαλαρά πληκτρολογήσει. Αυτό είναι όπως PHP, αλλά σε αντίθεση με C. Είναι μια ερμηνευμένη γλώσσα. Και πάλι, αυτό είναι σαν να PHP, σε αντίθεση με C. Και αυτό πρόκειται να επιτρέψει σε μας για να το use-- λειτουργεί πραγματικά καλά με τις ιστοσελίδες. Δεν πρόκειται να μας επιτρέψει να χειραγωγήσουν το περιεχόμενο και το πώς φαίνεται και τι κάνει. Εμείς πάμε να δούμε λίγο Άγιαξ. Μας επιτρέπει να επικοινωνούν ασύγχρονα με διαφορετικούς servers και να πάρει πληροφορίες. Και αυτό είναι το πράγμα που πραγματικά χωρίζει JavaScript από PHP και C είναι ότι είναι στην πλευρά του πελάτη. Τόσο PHP και C είναι συνήθως server-side. Για το μεγαλύτερο μέρος και σχεδόν εξ ολοκλήρου τι έχουμε δει, τουλάχιστον σε αυτή η κατηγορία, το JavaScript δρα στην πλευρά του πελάτη, πράγμα που σημαίνει ότι ο browser είναι στην πραγματικότητα υπεύθυνος για τη λειτουργία του. Και αυτό σημαίνει ότι εμείς δεν κάνουμε πρέπει να αλληλεπιδράσει με το διακομιστή. Έτσι, αυτό σημαίνει ότι μπορεί να είναι πολύ πιο γρήγορα επειδή είναι στην πραγματικότητα ακριβώς αυτό είναι το Chrome, Είναι Safari, Firefox είναι, ό, τι χρησιμοποιούν στην πραγματικότητα τρέχει JavaScript σας. Κοινό: Τι σημαίνει ασύγχρονη σημαίνει; ΧΑΝΑ Blumberg: Αχ, τι ασύγχρονα σημαίνει; Μεγάλη ερώτηση. Ασύγχρονα means-- καλά, το περιεχόμενο στο οποίο που χρησιμοποιούμε είναι, εντάξει, εμείς Τα δημιουργία ιστοσελίδων και θα πρέπει να πάρετε κάποιες πληροφορίες. Έτσι, με το παράδειγμα της mashup, κάποιες πληροφορίες που θα μπορούσαμε να θέλουμε είναι οι τίτλοι των άρθρων. Τώρα, έχουμε μια επιλογή could-- είναι να το κάνουμε συγχρόνως και αυτό σημαίνει ας να σταματήσει, να πάει να πάρει το άρθρο, να πάρει πίσω το άρθρο, και στη συνέχεια καθιστούν, αλλά αυτό θα ήταν πολύ αργοί. Αυτό θα ήταν μια κακή εμπειρία του χρήστη γιατί θα ήταν απλά να κάθεται περιμένει εκεί για να απαντήσει κάτι. Ασύγχρονα σημαίνει ότι θα συνεχίσουν τη δραστηριότητά μας, καθιστώντας την σελίδα, και θα στείλει μακριά ένα αίτημα Αυτό είναι το είδος πρόκειται να συμβαίνουν στο παρασκήνιο. Νομίζω ότι χρησιμοποιούμε το παράδειγμα σε διάλεξη του καλώντας τον Rob και λέγοντας, hey, μπορείτε να αναζητήσετε αυτό επάνω για μένα και να πάρετε πίσω σε μένα, σε αντίθεση με μόνο μου αναμονή στο τηλέφωνο. Έτσι σημαίνει ασύγχρονα συμβαίνει στο παρασκήνιο μακριά από εμάς παράλληλα. Μεγάλη ερώτηση. Τίποτα άλλο; Εξαιρετική. Θα πηδήξει πολύ περισσότερο σε ασύγχρονη αιτήματα με Άγιαξ. Κοινό: Μήπως JavaScript-- όπου κάνει να πέσει με το μοντέλο-View-Controller; ΧΑΝΑ Blumberg: Μεγάλη ερώτηση. Πού JavaScript πτώση με το μοντέλο-View-Controller; Χμ. Υποθέτω ότι μπορεί να fall-- γι 'αυτό συνήθως δεν ήθελα να λιώσει σε αυτό πρότυπο, αλλά υποθέτω ότι θα έλεγα, Εντάξει, έτσι το JavaScript στην πραγματικότητα πρόκειται να επιτρέψει μας για τη συλλογή δεδομένων, ερμηνεύουν τα στοιχεία, πραγματικά να κάνουμε σημαντικά πράγματα με τα δεδομένα. Με αυτόν τον τρόπο, είναι πολύ ελέγχου-όπως. Αλλά είναι, επίσης, πρόκειται να μας επιτρέψουν να εμφανίσει τα πράγματα και τα πράγματα εκτύπωσης. Με αυτόν τον τρόπο, είναι πολύ θέα-όπως. Ναι. Έτσι είναι κάτι σαν την PHP όπου μπορεί να είναι το είδος των δύο. Καλή ερώτηση. Τίποτα άλλο; Εντάξει, φοβερό. Μετακίνηση δεξιά κατά μήκος. Ας δούμε ένα παράδειγμα για το πώς μπορούμε να χρησιμοποιήσουμε JavaScript σε ένα από τα προγράμματα ιστοσελίδας μας. Γι 'αυτό και θα εξετάσουμε αυτό index.html με ένα μάτσο HTML. Και το πράγμα που θέλετε επικεντρωθώ είναι αυτή η ετικέτα σενάριο. Και αυτό το λέει, εντάξει, θέλω να τρέξει μερικά JavaScript και εδώ είναι όπου ζει. Ζει σε hello.js. Και μοιάζει πολύ με το CSS, θα μπορούσαμε βάλτε το JavaScript εντός της HTML. Γιατί μπορεί να θέλουμε να διαχωρίσουμε; Ναι. Κοινό: Ευκολότερη να ξαναγράψει; ΧΑΝΑ Μπλούμπεργκ: Ναι. Είναι ευκολότερο να χρησιμοποιήσει όλη την διαφορετικές ιστοσελίδες. Διατηρεί τα πράγματα καθαρότερα. Είναι ακριβώς ορθές πρακτικές. Φοβερός. Καλή απάντηση. Τόσο καλά, έτσι αυτό θα να είναι index.html μας. Και στη συνέχεια κάτω εδώ είναι μας μικροσκοπικό αρχείο JavaScript. Και μόνο που λέει είναι σε εγρήγορση Γεια σου, κόσμε. Έτσι, αυτό που συμβαίνει είναι όταν Αυτή η σελίδα renders-- οπότε αν πάτε σε ό, τι την ιστοσελίδα Αυτό is-- όλα αυτά που πρόκειται να συμβούν είναι αυτό που πρόκειται να πω, εντάξει, είμαι πρόκειται να εκτελέσετε αυτόν τον κώδικα JavaScript. Και αυτός ο κώδικας JavaScript ακριβώς λέει ειδοποίηση Γεια σου, κόσμε. Έτσι, Πάω να πάρει αυτό φιλόξενο, μικρό pop-up. Δροσερός? Αυτό είναι το είδος του σαν να μας πρώτα Προγράμματος JavaScript, Γεια μας, τον κόσμο. Ας δούμε λίγο περισσότερο για το τι Η σύνταξη της JavaScript μοιάζει. Και συγκεκριμένα, ας το συγκρίνουμε με C και PHP, που έχουμε δει στο παρελθόν. Σε JavaScript, θα πάμε να έχουν var, το όνομα της μεταβλητής, και στη συνέχεια την πραγματική αξία του. Και εμείς δεν καθορίσετε έναν τύπο, απλά όπως σε PHP, αλλά πολύ σε αντίθεση με C. Έτσι, για παράδειγμα, αν θέλαμε για να αποθηκεύσετε την τιμή 50, σε C, θα πρέπει να πω, hey, C, θέλω έναν ακέραιο, Πάω να το ονομάσουμε i, και η αξία του είναι 50. Στην PHP, είναι λίγο πιο εύκολη. Εμείς λέμε, hey, θέλω μια μεταβλητή που ονομάζεται i και η αξία του είναι 50. Πολύ Ομοίως, σε JavaScript, εμείς λένε hey, θέλω μια μεταβλητή που ονομάζεται i, η αξία του είναι 50. Κάθε μεταγενέστερη στιγμή που χρησιμοποιώ Εγώ, εγώ δεν χρειάζεται να γράψω var. Είναι ακριβώς εγώ από εκείνο το σημείο. Κατά τον ίδιο τρόπο, σε C, όπου μια φορά λέμε int i, εμείς απλά χρησιμοποιήστε i. Δροσερός? Εντάξει. Προχωρώντας στην βρόχους, Ευτυχώς, αυτά σχεδόν δείτε exactly-- Νομίζω ότι είναι ακριβώς το ίδιο με αυτό Οι βρόχοι πρόκειται να μοιάσει σε κάτι σαν C, όπου σας για βρόχο πρόκειται να έχει τρεις parts-- μια προετοιμασίας, μια κατάσταση, και μια ενημέρωση. Μια βρόχο while, φαίνεται ακριβώς το ίδιο. Εμείς απλά δώστε μια κατάσταση. Και ένα do while loop, πάλι, ακριβώς το ίδιο. Έχουμε θέσει ως προϋπόθεση να δώσει. Ας πούμε ότι ήθελε να επαναλάβει over-- Ήθελα να κάνω κάτι πέντε φορές. Στην C, μπορούμε να γράφουμε για init i ισούται με 0. i είναι μικρότερο από 5, i ++. Μόνο η διαφορά, σε JavaScript, αντί να λέει int i ισούται με 0, λέμε var i ισούται με 0. Όμορφος. Αυτή είναι η μόνη διαφορά. Οποιεσδήποτε ερωτήσεις σχετικά με κάποιο από αυτά; Ναί. Κοινό: Έτσι σε PHP, είναι το ίδιο πράγμα, εκτός αλλά σαν μια μεταβλητή; Ή ότι ήταν ένα παράδειγμα var; ΧΑΝΑ Μπλούμπεργκ: Ναι. Έτσι σε PHP, πρόκειται να είναι το σύμβολο του δολαρίου. Έτσι πρόκειται να θ $ ίσων 0, $ i είναι μικρότερο από 5, $ i ++. Μεγάλη ερώτηση. Τώρα ας μιλήσουμε για δηλώσεις λειτουργία. Στην C, όταν ανακήρυξε λειτουργία, δώσαμε ένα όνομα και μας έδωσε κάποιες παραμέτρους. Και στην αρχή, γράψαμε το είδος. Σε JavaScript, όλοι εμείς πρέπει να κάνετε είναι να γράψετε η λειτουργία-κλειδί που λέει, hey, JavaScript, Είμαι έτοιμος να ορίσουμε μια συνάρτηση. Σε αυτήν την περίπτωση, έχει το όνομα ποσό. Και παίρνει δύο επιχειρήματα, x και y. Παρατηρήστε ότι δεν με νοιάζει σχετικά με τους τύπους των x και y. Και ακριβώς όπως η C, έχουμε Αυτή η λέξη-κλειδί return, ώστε να μπορούμε να κάνουμε κάτι όπως το return x και y. Και τώρα όταν θα έχω γράψει αυτό το πρώτο λειτουργία, μπορούμε να χρησιμοποιήσουμε ποσό οπουδήποτε. Και αυτό είναι εντελώς καλά. Ένα πραγματικά δροσερό πράγμα για JavaScript που είναι πολύ αντίθεση με την C είναι ότι οι συναρτήσεις μπορούν να να αντιμετωπίζονται σαν αξίες. Έτσι, μπορούμε να κάνουμε κάτι σαν εδώ όπου υποθέτω ότι θα καλύψει αυτό το up-- Θα καλύπτεται μέχρι του ποσού var part-- και εμείς απλά είπε xy λειτουργία ισούται με την επιστροφή x συν y. Αυτό είναι ό, τι θα μπορούσε να ονομάζεται μια ανώνυμη λειτουργία. Είναι μια συνάρτηση χωρίς όνομα. Λαμβάνοντας υπόψη ότι αυτό λέει η λειτουργία άθροισμα, μπλα, μπλα, μπλα, αυτό θα πω μόνο λειτουργία. Αλλά τώρα, ακόμη και αν έχω Αυτή η ανώνυμη συνάρτηση, ότι η λειτουργία είναι πραγματικά ακριβώς μια τιμή. Μπορούμε να την αντιμετωπίσουμε σαν μια αξία. Έτσι μπορούμε να το αποθηκεύσετε σε μια μεταβλητή με την ίδια τρόπο με τον οποίο θα μπορούσε να αποθηκεύσει 50 σε μια μεταβλητή. Έτσι μπορούμε να πούμε, εντάξει, θέλω ένα μεταβλητή, αυτό λέγεται ποσό, και είναι αυτή η λειτουργία. Έτσι, αυτά τα δύο πράγματα είναι πράγματι πρόκειται να κάνει το ίδιο ακριβώς πράγμα, αλλά η σύνταξη είναι λίγο διαφορετικά και το είδος του ένα σημείωμα διασκέδαση. Ναι. Κοινό: Έτσι, μπορείτε να καλέσετε μια λειτουργία που ήταν ανώνυμα, λέγοντας, άθροισμα στηρίγματα 2, 5; ΧΑΝΑ Μπλούμπεργκ: Ναι. Μπορείτε να καλέσετε αυτό το ανώνυμο λειτουργία με τον ίδιο τρόπο. Θα κάνουμε άθροισμα (2, 5) ;. Αυτό θα ήταν εντελώς καλά. Αν δεν έκανα άθροισμα ισούται var λειτουργία, αν εγώ απλά διαγράφεται this-- Ξέρω ότι είναι στο χέρι μου, αλλά προσποιούνται Διέγραψα this-- συνέχεια ότι η λειτουργία του είδους μόλις φύγει. Δεν μπορείτε ποτέ να το χρησιμοποιήσετε ξανά, διότι δεν έχετε ένα όνομα για αυτό. Είναι δύσκολο να αναφερθώ σε κάτι δεν ξέρετε τι να καλέσετε. Καλή ερώτηση. Ναι. Κοινό: Μπορεί να κάνετε αναφορά σε ποσό άλλες θέσεις με την τιμή του x συν y; ΧΑΝΑ Blumberg: Μπορείτε να ποσό αναφοράς σε άλλα μέρη με την τιμή x συν y; Δεν είμαι απόλυτα σίγουρος τι εννοείτε. Κοινό: Έτσι το παρελθόν σου ημι-ανώνυμος λειτουργία είναι άθροισμα είναι ίσο με αυτό λειτουργία ανώνυμα, έτσι άθροισμα είναι τώρα μια μεταβλητή που can-- ΧΑΝΑ Μπλούμπεργκ: Δεξιά. Έτσι, το ποσό είναι η μεταβλητή, αλλά είναι actually-- έτσι άθροισμα είναι μια μεταβλητή της οποίας αξία είναι η λειτουργία. Γι 'αυτό είναι μια λειτουργία, η οποία είναι το είδος του ένα περίεργο πράγμα για να τυλίξει γύρω από το κεφάλι σας αφού παίζαμε με C και δεν μπορείτε να το κάνετε αυτό σε C. Αλλά τώρα μπορούμε να συνοψίσουμε το ονομάζουμε ίδιο τρόπο θα μπορούσαμε να αποκαλέσουμε άθροισμα εδώ. Κοινό: OK. ΧΑΝΑ Μπλούμπεργκ: Ναι. Καλή ερώτηση. Ναι. Κοινό: Γι 'αυτό δεν χρησιμοποιούν το πρωτότυπα σε PHP ή JavaScript; ΧΑΝΑ Blumberg: Όχι, Δεν χρειάζεται να χρησιμοποιήσετε πρωτότυπα, ειδικά σε JavaScript. Έτσι, ένα κακό πρακτική που είμαι πρόκειται να πω ότι δεν πρέπει να κάνετε είναι ότι δεν έχετε να γράψετε var i = 50. Θα μπορούσατε απλά να αρχίσει να κάνει θ = 50. Και θα κάνω μόνο εγώ μια global μεταβλητή. Είναι πολύ κακή πρακτική να Ποτέ δεν λένε ρητά var i, αλλά αυτό είναι κάτι που μπορείτε να κάνετε. Ο διερμηνέας δεν είναι πρόκειται να φωνάζω σε σας. JavaScript είναι αρκετά παρόμοια, μπορείτε να κάνετε ό, τι θέλετε. Ω συγνώμη. Υπάρχουν δύο. Σε πορτοκαλί παντελόνι. Προχώρα. Κοινό: Όχι, θα πάει πρώτα. Κοινό: Όχι, εγώ απλά λέγοντας Δεν είχα το χέρι μου. ΕΝΤΆΞΕΙ. Έτσι, εάν επρόκειτο να καλέσετε ότι για πρώτη φορά, τώρα κατακλείδι, καλούμε τον ίδιο τρόπο, χ, y, όπως κάθε φορά; ΧΑΝΑ Μπλούμπεργκ: Ναι. Έτσι, αυτά τα δύο βασικά κάνουν το ίδιο πράγμα. Κοινό: Και ποιο είναι το πλεονέκτημα του χρησιμοποιώντας ένα ή το άλλο; ΧΑΝΑ Blumberg: Όχι πλεονέκτημα του χρησιμοποιώντας ένα ή το άλλο. Ήθελα απλώς να σας δείξω δύο διαφορετικά κομμάτια της σύνταξης. Πολλές φορές όταν ανώνυμο λειτουργίες έχουν ένα σκοπό είναι αν το επιχείρημα σε ένα άλλο λειτουργία πρέπει να είναι συνάρτηση. Και θα δούμε ότι σε μόλις ένα δευτερόλεπτο με Άγιαξ. Έτσι, αν αυτό δεν έχει κανένα νόημα, φυλάξτε το στο πίσω μέρος του κεφαλιού σας. Αυτός είναι όπου ένας ανώνυμος λειτουργία μπορεί να είναι χρήσιμο γιατί δεν είναι πραγματικά αξίζει δίνοντάς του ένα όνομα από τότε είμαστε απλά πρόκειται να το χρησιμοποιήσετε μια φορά. Ναι. Κοινό: Αν x και y αλλαγή αργότερα και στο εξής, θα συνοψίσω αλλάξει, καθώς; ΧΑΝΑ Blumberg: Αν x και y αλλαγή αργότερα, θα συνοψίσω αλλάξει, καθώς; Έτσι, αυτό είναι πραγματικά εγώ σκεφτείτε κάτι που είναι, και πάλι, αυτό ακριβώς αισθάνεται πολύ διαφορετικά από C. Αυτό δεν είναι μια τιμή. Δεν είναι 5. Είναι ακριβώς η ίδια λειτουργία. Έτσι, μόλις δώσετε τις παραμέτρους, τότε θα υπολογίσετε πραγματικά μια αξία. ΜΑΡΙΑ ZLATKOVA: Και στη συνέχεια, μπορείτε να καλέσετε τη λειτουργία και να το χρησιμοποιήσετε για να πάρετε κάποια αξία. ΧΑΝΑ Μπλούμπεργκ: Δεξιά. Ακριβώς. Ναι. Κοινό: Έτσι, αν απλά αποθηκεύστε το στη μεταβλητή, όπως var x ισούται με άθροισμα των δύο values-- ΧΑΝΑ Μπλούμπεργκ: Ναι. Έτσι, θα μπορούσατε να κάνετε ακριβώς ποσό var ισούται με άθροισμα των δύο τιμών. Ναι. Οποιεσδήποτε άλλες ερωτήσεις; Ναι. Κοινό: Αλλά θα συγχέουν ποσό και το άθροισμα; Όπως και αν σας καλέσει μεταβλητή άθροισμα σας, θα σας καλέσουμε το άθροισμα λειτουργία; ΧΑΝΑ Μπλούμπεργκ: mm. Mm. Αν έκανε κάτι όπως, ποσό που ισούται με ποσό 2, 5; Κοινό: Ναι. ΧΑΝΑ Blumberg: Πιστεύω ότι θα αντικαταστήσει την τιμή του αθροίσματος. Έτσι, μια άλλη ενδιαφέρουσα πράγμα για το JavaScript είναι ότι μια μόνο μεταβλητή μπορεί να λάβει σε μια δέσμη των διαφορετικών τύπων. Κακή πρακτική. Δεν πρέπει να κάνουμε κάτι όπως αυτό που μόλις είπατε. Αλλά σε C, εάν εγώ έχει οριστεί ισοδύναμο προς ένα ακέραιο, γνωρίζουμε ότι ποτέ δεν πρόκειται να γίνει ένα string. Αυτό δεν συμβαίνει σε JavaScript. Ναι, καλή ερώτηση. Τίποτα άλλο; Εντάξει. Κάνοντας εντάξει για την ώρα. Κρατώντας πηγαίνει. Εντάξει. Αν κοιτάξουμε έναν πίνακα σε JavaScript, εδώ είναι ένα γρήγορο παράδειγμα μίας συστοιχίας χορδές. Και συστοιχίες μπορούν να αναπτυχθούν δυναμικά. Δεν έχουν σταθερού μεγέθους με τον ίδιο τρόπο ότι το κάνουν στο Γ Μπορούμε να προσπελάσουμε το στοιχεία μόνο με τις αγκύλες. Αυτό μοιάζει πολύ με PHP και μια παρτίδα όπως η C, όπου μπορούμε να πούμε, σε αυτή την περίπτωση, αν ήθελα τη λέξη JavaScript, θα ήθελα δεν arr αγκύλες με 0, 1, 2. Και στη συνέχεια, αν θυμάστε σε C, όταν ήθελε να πάρει το μήκος μιας συστοιχίας, ήταν πραγματικά ενοχλητικό. Αλλά σε JavaScript, εξαιρετικά εύκολο. Το μόνο που κάνουμε, .length. Δίνει τα μήκη. Αυτό ήταν. Κοινό: Αυτό είναι απλό. ΧΑΝΑ Blumberg: Ναι, κάνει τη ζωή σας πολύ πιο εύκολη. Εντάξει, δεν object-- εκεί. Αντικείμενα σε JavaScript αίσθηση πολύ σαν structs σε C και συνειρμική συστοιχίες σε PHP. Έτσι, αυτό που έχουμε δει Πολλοί είναι JSON, το οποίο σημαίνει JavaScript Object Notation. Και αυτό είναι ουσιαστικά ένας τρόπος της δόμησης των δεδομένων μας. Ας δούμε ένα παράδειγμα, ίσως το πιο εύκολο. Έτσι, εδώ είναι ένα παράδειγμα ενός αντικειμένου που αποθηκεύει την τάξη, CS50. Και όταν λέω κατηγορίας, εννοώ φυσικά, Δεν like-- ναι, την πορεία, CS50. Και θα δείτε ότι τα πάντα στο αντικείμενο πρόκειται να περιέχεται σε άγκιστρα. Και θα αρχίσουμε να συνδέσει τα ονόματα των πεδίων ή τα πλήκτρα με τις διαφορετικές τιμές. Έτσι, μπορείτε να αρχίσετε να δούμε πώς αυτό το είδος του αισθάνεται σαν ένα associative πίνακα στην PHP. Έτσι θα πάμε να συνδέσει το πεδίο ή το όνομα του κλειδιού, φυσικά, με το κορδόνι, CS50. Εμείς πάμε για να έχουν έναν εκπαιδευτικό. Εμείς πάμε για να έχουμε ΤΡ. Εμείς πάμε για να έχουν τον αριθμό των psets και θα πάμε να έχουν καταγραφεί. Και ένα δροσερό πράγμα που παρατηρούμε είναι το σύνολο των Αυτά τα πράγματα έχουν διαφορετικά είδη, και αυτό είναι εντελώς καλά. Είναι μια χαρά για ένα αντικείμενο, στην πραγματικότητα, είναι πιθανώς αναμενόμενο για ένα αντικείμενο να έχουν ένα συνδυασμό των χορδών και αριθμών και Booleans και συστοιχίες Και ό, τι άλλο μπορεί να θέλουν να έχουν μέσα το αντικείμενό σας. Και σημειώστε ότι αυτά πρόκειται να είναι τα ονόματα ή τα πλήκτρα, και στη συνέχεια απλά που είναι ίσο με ένα μικρό παχέος εντέρου. Κοινό: Τι ακριβώς σημαίνει το JSON; ΧΑΝΑ Blumberg: Τι ακριβώς δεν σημαίνει JSON; JSON ξεχωρίζει μόνο για JavaScript Object Notation. Είναι απλά ένας τρόπος μορφοποίησης. Ναι. Είναι ένας τρόπος μορφοποίησης δεδομένων μας. Στην C, είναι structs. Στην PHP, είναι συνειρμική συστοιχίες. Σε JavaScript, έχουμε αντικείμενα. Κοινό: Έτσι CS50 είναι ένα αντικείμενο; ΧΑΝΑ Blumberg: CS50 είναι το αντικείμενο σε αυτή την περίπτωση. Τώρα, πώς μπορούμε πράγματι πρόσβαση Τα πεδία ή να αλλάξετε αυτά τα πεδία. Για παράδειγμα, ας υποθέσουμε ότι έχουμε αποφασίσει ότι που ήθελε ένα λιγότερο το chipset αυτό το εξάμηνο. Αντί εννέα, είμαστε ακριβώς πρόκειται να έχει οκτώ. Πώς θα το αλλάξουμε αυτό; Αχ, λάθος τρόπο. Υπάρχουν δύο τρόποι με τους οποίους μπορούμε να το κάνουμε αυτό. Νούμερο ένα είναι με την τελεία σημειογραφία και νούμερο δύο είναι με την πλατεία συμβολισμός βραχίονα. Έτσι, για παράδειγμα, αν ήθελε να αλλάξει ή πρόσβασης το πεδίο psets στο αντικείμενο CS50 μας, τι θα έκανα είναι CS50.psets, οπότε το όνομα του αντικειμένου dot το όνομα του πεδίου ή το κλειδί. Πολύ Ομοίως, είναι ακριβώς που ισοδυναμεί με κάνει CS50, και στη συνέχεια, σε αγκύλες, psets. Δροσερός? Ναι. Κοινό: Έτσι είναι το JSON τεχνικά JavaScript ακόμα, έστω και αν στα psets μας διαχωρίζουν τα έξω [δεν ακούγεται]; ΧΑΝΑ Μπλούμπεργκ: Σίγουρα. Έτσι, το ερώτημα είναι, JavaScript και JSON ισοδύναμο; Έτσι JSON σημειογραφία είναι, βασικά ο τρόπος που γράφουμε έξω ένα αντικείμενο από το JavaScript. Έτσι δεν είναι ακριβώς το ίδιο. Θα έλεγα JavaScript, υπάρχει είναι αντικείμενα σε JavaScript. JSON παίρνει αυτά τα αντικείμενα και τις εκτυπώνει και τις εμφανίζει ή να τα αποθηκεύει σε ένα ωραίο τρόπο. Έτσι JSON δεν είναι ένας προγραμματισμός γλώσσα ο τρόπος που το JavaScript είναι. Είναι ακριβώς ο συμβολισμός για αντικείμενα μας σε JavaScript. Ναι. Κοινό: Λοιπόν, τι ακριβώς [Δεν ακούγεται] ολοκληρώσει; ΧΑΝΑ Μπλούμπεργκ: Σίγουρα. Έτσι, αυτό κάνει πραγματικά τίποτα. Αυτό είναι απλά ένας τρόπος για να αποκτήσετε πρόσβαση. Ας πούμε ότι θέλουμε να αλλάξουμε ο αριθμός των προβληματικών σύνολα 9 με 8. Αυτό που κάνουμε είναι να κάνουμε κάτι όπως CS50.psets = 8 ;. Ναι, μεγάλο ερώτημα. Αυτό είναι απλά για να δείξει τη σύνταξη σας. Δεν κάνουν πραγματικά κάτι χρήσιμο. Καμιά ερώτηση? Μετακίνηση δεξιά κατά μήκος. Ας ρίξουμε μια ματιά σε ένα γρήγορο παράδειγμα για το πώς Το JavaScript λειτουργεί επειδή σας είπα ότι κάνει όλα αυτά τα πράγματα και δροσερά μας επιτρέπει να τροποποιήσετε τις ιστοσελίδες. Ας το δούμε πραγματικά σε δράση. Πάρτε λοιπόν, για παράδειγμα, αυτό το αρχείο HTML. Και το πράγμα που θέλω να επικεντρωθώ είναι αυτό το συγκεκριμένο ετικέτα, η οποία είναι ένα κουμπί, με id search_button. Είναι ακριβώς στη σελίδα. Έτσι τώρα ας δούμε τι μπορούμε να κάνουμε πραγματικότητα. Λοιπόν, ας υποθέσουμε ότι όταν κάνετε κλικ σε αυτό το κουμπί, θέλουμε να κάνουμε μια alert-- πατήσατε το κουμπί. Ας δούμε πώς μπορούμε να το κάνουμε αυτό. Έτσι window.onload-- αυτό δεν είναι κάτι που έχετε δει στην τάξη, ως εκ τούτου, δεν θα πρέπει να το γνωρίζουν για το κουίζ. Αλλά αυτό ουσιαστικά λέει, εντάξει, κλήση Η λειτουργία αυτή, όταν τα φορτία παράθυρο. Έτσι, αυτό είναι ακριβώς το είδος του κωδικού εγκατάστασης. Μην ανησυχείτε τόσο πολύ για αυτό. Αυτό που θέλω να επικεντρωθώ είναι εδώ. Λέμε var searchButton ισούται document.getElementById search_button. Έτσι, όπως μπορείτε να μαντέψετε, τι είναι αυτό που κάνει είναι να λέει, Εντάξει, πηγαίνετε να βρείτε το στοιχείο με ID search_button. Και τώρα έχουμε ότι πραγματικό στοιχείο και είμαι πρόκειται να το αποθηκεύσετε σε ένα μεταβλητή searchButton. Και τώρα μπορούμε να χρησιμοποιήσουμε πραγματικά αυτό το στοιχείο και να το αλλάξετε, ή να έχετε πρόσβαση αξίες της, πράγματα σαν αυτό. Μπορούμε πραγματικά να αρχίσουμε να ασχολούνται με την ιστοσελίδα. Εδώ, λοιπόν, να πω, εντάξει, τώρα που έχω ότι το κουμπί, όταν κάνετε κλικ, ονομάζουμε ανώνυμη συνάρτηση. Έτσι, αυτό είναι όπου ανώνυμο λειτουργίες είναι χρήσιμη. Και τι κάνει η λειτουργία κάνει; Λοιπόν, καλεί ακριβώς αυτό άγρυπνη λειτουργία και λέει, κάνατε κλικ στο κουμπί Αναζήτηση. Λοιπόν, τι θα συμβεί αν πάω οπουδήποτε Αυτό HTML ζει και κάντε κλικ στο κουμπί, Θα πάρω ένα φανταχτερό λίγο ειδοποίηση που λέει ότι κλικ στο κουμπί. Έτσι, τα πράγματα να επικεντρωθεί στην here-- document.getElementById παίρνει ένα συγκεκριμένο HTML στοιχείο με το δεδομένο ταυτότητας. Και τώρα μπορούμε να καθορίσουμε τι πρέπει να συμβεί όταν το συγκεκριμένο στοιχείο έχει πατηθεί. Κοινό: Πρέπει να βάλουμε όλα αυτά μέσα; ΧΑΝΑ Μπλούμπεργκ: Συγνώμη; Κοινό: Μήπως πρέπει να σωματικά κωδικοποιήσει όλα αυτά; ΧΑΝΑ Blumberg: Μήπως πρέπει να σωματικά κωδικοποιήσει όλα αυτά; Ναί. Δεν είναι αυτό το είδος των ενοχλητικό; Αυτό είναι ένα πολύ κώδικα. Κοινό: Θα μπορούσατε να εισάγετε κάτι. ΧΑΝΑ Μπλούμπεργκ: Δεξιά. Θα μπορούσαμε να χρησιμοποιήσουμε κάτι. Και σε particular-- Ω, είναι λέγοντάς μου ότι πρέπει να διδάξει την ενότητα. Συγκεκριμένα, ας χρήση της βιβλιοθήκης jQuery, γιατί αυτό ήταν πραγματικά μακρά και πραγματικά ενοχλητικό και θέλω να είμαι σε θέση να το απλοποιήσουμε και να καταστεί συντομότερη και πιο εύκολο να γράψει. Έτσι jQuery είναι μια βιβλιοθήκη JavaScript. Έτσι, το JavaScript είναι ο προγραμματισμός γλώσσα; jQuery είναι μια βιβλιοθήκη. Και αυτό κάνει ένα σωρό πράγματα πιο εύκολα. Κάνει την αλλαγή και να πηγαίνει πέρα ​​από ένα έγγραφο HTML πολύ ευκολότερη. Κάνει τα γεγονότα ευκολότερο χειρισμό. Κάνει ευκολότερη κινούμενα σχέδια και καθιστά ευκολότερη Άγιαξ. Ας άλμα σε δύο αυτά τα πράγματα αυτή τη στιγμή. Με συγχωρείτε. Πριν το κάνουμε, κάποια βασική σύνταξη. Αυτό είναι ό, τι πιο καλεί να η βιβλιοθήκη jQuery μοιάζουν. Χρησιμοποιούμε αυτό το δολάριο sign-- κανένα σημάδι σύνδεση με την PHP, inconvenient-- μόνο το όνομα ενός επιλογέα, τελεία, και στη συνέχεια μια δράση. Ας δούμε λοιπόν μερικά συγκεκριμένα παραδείγματα γι 'αυτό. Έτσι, αυτό στην πραγματικότητα είναι το ίδιο Κωδικός από το κλείστρο εκδήλωση. Έτσι, αυτό το μεγάλο, άσχημο πράγμα γίνεται Αυτό το πολύ καλύτερο, μικρότερο πράγμα. Οπότε ας προσπαθήσουμε να σπάσει αυτό κάτω. Αυτό λέει, εντάξει, αυτό jQuery-- δολάριο sign-- jQuery, βρείτε μου το παράθυρο. Έτσι, αυτό είναι ο επιλογέας. Όταν φορτώνει, καλέσετε τη συνάρτηση αυτή. Έτσι ώστε να είναι πάντα μέσα. ΕΝΤΆΞΕΙ. Μέχρι εδώ καλά? Εντάξει. Τώρα, jQuery, βρείτε μου το πράγμα με ID search_button. Και τι γίνεται κλικ, καλέσετε τη συνάρτηση αυτή. Και τότε αυτή η λειτουργία του ακριβώς το ίδιο. Απλά κάνουμε ένα μικρό κομμάτι της προειδοποίησης, κάνατε κλικ στο κουμπί Αναζήτηση. Γι 'αυτό είναι πολύ ωραίο. Είναι πραγματικά συμπυκνώνει και απλοποιεί τον κωδικό μας. Πώς ξέρω ότι Είναι ID search_button και όχι σαν τάξη search_button; Κοινό: Hashtag; ΧΑΝΑ Μπλούμπεργκ: Ναι. Το σύμβολο αυτό hash, είναι ακριβώς όπως το CSS. Έτσι θυμηθείτε, με το CSS, όταν ήθελε να επιλέξετε κάτι με ID, χρησιμοποιήσαμε το σύμβολο της λίρας. Και όταν θέλαμε να επιλέξετε κάτι από την τάξη, θα χρησιμοποιήσω την τελεία. Εξαιρετική. Βγάζει νόημα? Έτσι jQuery υποτίθεται ότι απλά κάνουν τη ζωή μας πιο εύκολη. Ναι. Κοινό: Έτσι είμαι μια μικρή σύγχυση ως για το πώς λειτουργεί η ανώνυμη λειτουργία. Έχετε ονομάσετε αυτό Anonymouse λειτουργία, λειτουργούν; Πώς είναι αυτό που ονομάζεται; ΧΑΝΑ Μπλούμπεργκ: Σίγουρα. Έτσι, η λειτουργία είναι απλά μια λέξη κλειδί που λέει, είμαι έτοιμος να ορίσουμε μια συνάρτηση. Κοινό: Ω, εντάξει. ΧΑΝΑ Μπλούμπεργκ: εντάξει; Και τότε θα το περάσει ως επιχείρημα to-- ας ρίξουμε Αυτή η εσωτερική ένα-- στη λειτουργία κλικ. Οπότε ναι, έτσι ώστε η λειτουργία, Αυτή η ανώνυμη συνάρτηση, γίνεται ένα πραγματικό επιχείρημα. Έτσι θυμηθείτε σε JavaScript, εμείς μπορεί να θεραπεύσει λειτουργεί ως αξίες. Κοινό: Ω, εντάξει. ΧΑΝΑ Μπλούμπεργκ: Ναι. Μου αρέσει ότι "Ω". Όμορφη. Άλλες ερωτήσεις; Φορά? ΜΑΡΙΑ ZLATKOVA: Καλή. Καλός. ΧΑΝΑ Μπλούμπεργκ: Awesome. Μερικά γρήγορα χρήσιμα jQuery. Είμαι δεν πρόκειται να πάει μέσω όλων αυτών. Αυτές οι διαφάνειες θα είναι σε απευθείας σύνδεση λίγη αργότερα, ώστε να μπορείτε να ελέγξετε έξω λίγο αργότερα. Αλλά βασικά, το γενικό μοτίβο κατέχει όπου λέμε, ΟΚ, hey, jQuery, εδώ μου επιλογής και, στη συνέχεια, εδώ είναι μια ενέργεια. Και μπορείτε να κάνετε πράγματα όπως η πρόσβαση στην αξία μιας μορφής, έχουν πρόσβαση σε κάποια HTML, ελέγχου τι συμβαίνει όταν ο χρήστης υποβάλλει μια φόρμα, τέτοια πράγματα. Ναί. Κοινό: Έτσι, στο εξετάσεις, θα πάμε να χρειάζονται να γνωρίζουν αρκετά από η τεκμηρίωση jQuery. Έτσι, δεδομένου ότι copy / paste το jQuery τεκμηρίωση για σκονάκι μας, όπου κληρωθεί η γραμμή; Όπως και πόσα χρειαζόμαστε να ξέρουμε; ΧΑΝΑ Blumberg: Μεγάλη ερώτηση. Το ερώτημα είναι κατ 'ουσίαν, δεδομένου ότι δεν μπορεί να έχει πρόσβαση στην τεκμηρίωση jQuery κατά τη διάρκεια της δοκιμής, Πόσο θα πρέπει να ξέρω? Εμείς δεν θα περιμένουμε να έρθει με κάποια τυχαία λειτουργία ότι θα σας περιμένουμε στην Google. Πράγματα που είναι δίκαιο παιχνίδι είναι θα το έκανα λένε ακριβώς το είδος της γενικής σύνταξης, να είναι σε θέση να επιλέξει με ID και από class-- έτσι ακριβώς όπως CSS. Και τότε οι πραγματικές λειτουργίες εαυτό, εμείς μάλλον θα σας πω. Ναι. Κοινό: Έτσι, όταν επιλέγετε ανά κατηγορία θα σήμαινε τελεία. ΧΑΝΑ Blumberg: Ναι, ακριβώς. Καλός. Όταν επιλέγετε ανά κατηγορία, πρόκειται να dot αντί του σύμβολο της λίρας. Ναί. ΚΟΙΝΟ: Θα πάει πάνω από τη διαφορά μεταξύ της επιλογής με ID και ανά κατηγορία; ΧΑΝΑ Μπλούμπεργκ: Σίγουρα. Η διαφορά μεταξύ της επιλογής ID και επιλέγοντας ανά κατηγορία. Έτσι, όπως δήλωσε η Μαρία α Λίγο νωρίτερα, υπάρχει μπορεί να είναι μόνο ένα στοιχείο HTML με αυτό το ID, ενώ τάξη, μας επιτρέπει να ομαδοποιήσετε ένα μάτσο των διαφόρων στοιχείων μεταξύ τους, έτσι τα πράγματα που σχετίζονται, αλλά όχι ακριβώς το ίδιο. Μήπως αυτό να απαντήσει στο ερώτημα; Φοβερός. Ναί. Κοινό: Τι γίνεται αν έχετε πολλαπλές πράγματα που βρίσκονται στην ίδια τάξη; ΧΑΝΑ Blumberg: Τι συμβαίνει αν έχετε πολλά πράγματα ότι είναι το ίδιο τάξη; Έτσι, για παράδειγμα, αν είμαστε χρησιμοποιώντας μόνο αγνά JavaScript, θα κάναμε κάτι σαν document.getElementsByClass. Και τότε τι κάνει αυτό πραγματικότητα Είναι επιστρέφει έναν πίνακα των στοιχείων. Και θα πρέπει είτε να επαναλάβει πάνω τους ή να βρουν ποια θέλετε. Δεν πρόκειται να δώσω Είσαι ένα μόνο στοιχείο. Δεν πρόκειται να σας δώσω μια συστοιχία των στοιχείων. Μεγάλη ερώτηση. Τίποτα άλλο; Φοβερός. Πιστεύω λοιπόν ότι, αν είστε εξοικειωμένοι με κάθε jQuery είδατε στο PSET, θα πρέπει να είναι καλό να πάει. Ερώτηση? Ωχ όχι. Θα ήθελα πραγματικά να διδάξουν. Χαλαρώστε. Θα είναι μια χαρά. Θα φτάσετε εκεί. Ας μιλήσουμε για Ajax. Έτσι Ajax πρόκειται να είναι a-- καλά, Ας ξεκινήσουμε με το τι σημαίνει. Είναι ένα αρκτικόλεξο. Ξεχωρίζει για Ασύγχρονης JavaScript και XML. Και XML είναι βασικά πρόκειται να είναι [Δεν ακούγεται] με τον τύπο των δεδομένων μας. Αλλά δεν έχουν πράγματι χρησιμοποιηθεί XML. Αντ 'αυτού, εμείς απλά χρησιμοποιήστε JSON. Έτσι, βασικά, είναι μερικά data-- ασύγχρονη, JavaScript, και τα δεδομένα, Στην περίπτωση αυτή, JSON. Και ο στόχος μας, όπως αναφέραμε λίγο νωρίτερα, είναι να είναι σε θέση να κάνει μια αιτήματος, έχουν κάνει το αίτημα αυτό πράγμα στο φόντο, αλλά να συνεχίσει κάνουμε ό, τι σκόπευαν να κάνουν. Και στη συνέχεια, όταν οι πληροφορίες αυτές είναι έτοιμο, τότε θα το ενσωματώσει. Ας δούμε λοιπόν τι είναι αυτό πραγματικά μοιάζει. Και αυτό, θα πρέπει να είναι λίγο εξοικειωμένοι από pset8, αυτό που μόλις γύρισε στο. Έτσι, εδώ είναι μια έγκυρη jQuery λειτουργία ώστε να μπορούμε να θέλουν να ξέρουν about-- αυτό το σύμβολο του δολαρίου. Έτσι λέει η λειτουργία jQuery, .getJson. Και τι αυτή η λειτουργία δεν είναι παίρνει μια διεύθυνση URL και κάποια parameters-- έτσι νομίζω ότι στην περίπτωση της pset8, ήταν σαν, η διεύθυνση URL ήταν articles.php και η παράμετροι ήταν go = κάποια ταχυδρομικό κώδικα. Και λέει, εντάξει, να υποβάλει αίτηση για Αυτή η διεύθυνση URL με τις δεδομένες παραμέτρους. Και αυτό ακριβώς συμβαίνει. Όταν τελειώνει, είναι είτε πρόκειται να ολοκληρωθεί με επιτυχία ή πρόκειται να αποτύχει. Έτσι, αυτό είναι το ισοδύναμο της κλήσης Ο Rob και τον καλούν να κάνει κάτι. Και στη συνέχεια, όταν ο ίδιος αποκαλεί πίσω, αυτός είναι είτε πρόκειται να πω είμαι γίνει ή θα αποτύχει. Έτσι, στην περίπτωση που είστε κάνει, λέτε, εντάξει, είμαι done. Και τότε θα καλέσετε τη συνάρτηση αυτή. Σε αυτή την περίπτωση, πρόκειται να είναι μια συνάρτηση που παίρνει κάποιες πληροφορίες. Η μία που συνήθως νοιάζει είναι τα δεδομένα, Τα δεδομένα που έχουν πραγματικά επιστραφεί ως αποτέλεσμα της κλήσης .getJSON. Και μπορείτε να κάνετε κάτι με αυτό. Έτσι, στην περίπτωση της pset8, Εμείς θα εμφανίζονται σε μια λίστα. Fail πρόκειται να είναι μια συνάρτηση ότι λέγεται, εάν η αίτηση δεν για οποιονδήποτε λόγο. Και στην περίπτωση της pset8, εμείς απλά console.log. Οποιεσδήποτε ερωτήσεις σχετικά με αυτό; Ναι. Κοινό: Μπορούμε απλά να χρησιμοποιήσετε τη λειτουργία θήτα αντί της λειτουργίας, textStatus, jqHXR. ΧΑΝΑ Μπλούμπεργκ: Σίγουρα. Οπότε ναι, νομίζω ότι στην PSET, μόλις είδαμε τα δεδομένα λειτουργίας. Έτσι είναι ακριβώς the-- ναι, εντάξει. Αυτό είναι ό, τι είδαμε στο PSET. Αυτό είναι εντελώς καλά. Αυτά είναι μόνο αν ήθελες να τραβήξει περισσότερες πληροφορίες, αυτά είναι τα πράγματα που θα μπορούσατε να πάρετε από .getJSON. Καλή ερώτηση. Τίποτα άλλο; Ναι. Κοινό: Έτσι .getJSON είναι Ajax; ΧΑΝΑ Μπλούμπεργκ: OK. Έτσι, αυτό είναι το είδος των δύσκολο μέρος. Είναι μια λειτουργία που επιτρέπει jQuery μπορείτε να κάνετε κλήσεις ασύγχρονη. Και αυτές οι ασύγχρονες κλήσεις, αυτό είναι αυτό που έχουμε αναφέρονται ως Ajax. Ναι. Αυτό μου πήρε ένα πραγματικά μεγάλο χρονικό διάστημα για να τραβήξει χώρια όταν ήμουν φοιτητής. Κοινό: Μπορείτε να πείτε ότι και πάλι; ΧΑΝΑ Μπλούμπεργκ: Ναι. Μπορώ να πω ότι και πάλι; Αυτή η λειτουργία .getJSON, είναι μια συνάρτηση jQuery. Και αυτό πρόκειται να κάνει μια ασύγχρονη κλήση. Και αυτές οι ασύγχρονες κλήσεις, έχουμε έχουν αναφερόμενος σε αυτούς ως Ajax. Οποιεσδήποτε άλλες ερωτήσεις; Έχουμε μόλις μερικά λεπτά αριστερά. Και η Μαρία πρόκειται να τυλίγουμε με ασφάλεια και στη συνέχεια θα πάμε πρέπει να γίνει ακριβώς για. ΜΑΡΙΑ ZLATKOVA: Awesome, εντάξει. Έτσι, αυτό is-- απλά πάρτε ένα ζευγάρι δευτερόλεπτα να κοιτάξει πέρα ​​από αυτό. Και αυτό δεν είναι κάτι πραγματικά μεγάλο. Και μπορεί κάποιος να μου πει γιατί; Τι συμβαίνει στην foo και μπορεί μπορούσαν δυνητικά να οδηγήσει σε κάτι κακό, και τι λέγεται; Ναι. Κοινό: Εάν το επιχείρημα ότι είναι περνιέται είναι πάνω από 12 χαρακτήρες, θα μπορούσε να ξεχειλίσει. ΜΑΡΙΑ ZLATKOVA: Δεξιά. Τέλειος. Πώς ονομάζεται? Απλά το ανέφερα. Κοινό: Υπερχείλιση. ΜΑΡΙΑ ZLATKOVA: Yup, υπερχείλισης buffer. Έτσι, αυτό είναι κάτι που αναφέρονται ως υπερχείλιση του buffer. Και βλέπουμε ότι στο εσωτερικό της foo, έχουμε καθορίσει ρυθμιστικό μας, γ, με μέγεθος 12. Ωστόσο, σε γενικές γραμμές, δεν το κάνουμε ελέγχει με οποιοδήποτε τρόπο σε όλα αν η argv1-- έτσι ώστε Ήταν το δεύτερο επιχείρημα. Εμείς δεν ελέγχει αν η το μέγεθος της είναι σκόπιμο. Έτσι, αν είχαμε ένα ιδιαίτερα κακόβουλος χρήστης που βάζουν σε κάποιο επιχείρημα που ήταν περισσότερο από 12, και στη συνέχεια, ενδεχομένως πέρα από τα όρια της εν λόγω επιχείρημα, είχε κάποια εκτελέσιμο κώδικα ότι προσπαθούσε να κάνει κάτι κακό Με αυτό; τότε αυτό, τι θα συνέβαινε, θα υπερισχύσει η επιστροφή διεύθυνση της συνάρτησης foo, προκαλώντας τη λειτουργία όταν επιστρέφοντας να εκτελέσει αυτόν τον κώδικα. Και τότε κακά πράγματα θα μπορούσαν να συμβούν. Μήπως αυτό έχει νόημα για όλους; Και πώς μπορούμε να προστατευθούν από αυτό; Οποιεσδήποτε προτάσεις? Βασικά, στο εσωτερικό του δυνητικά foo, πώς μπορούμε να ελέγξετε για να βεβαιωθείτε ότι αυτό δεν μπορεί να συμβεί; Κοινό: Σε περίπτωση υπέρβασης της μέγεθος 12, θα διαθέσουν επιπλέον μνήμη; ΜΑΡΙΑ ZLATKOVA: πρόταση είναι, να κατανείμει πρόσθετη μνήμη του μεγέθους ξεπεραστεί. Στην πραγματικότητα, μπορούμε να κάνουμε κάτι πολύ απλούστερο από αυτό επίσης. Μπορούμε να πάρουμε μόνο το μήκος του αλφαριθμητικού του επιχειρήματος που αναγράφεται, ελέγξτε αν αυτό είναι λιγότερο από ή ίση με 12-- που είναι αυτό που θέλουμε να είναι γιατί δεν θέλουμε να υπερβαίνει τα όρια του ρυθμιστικού μας. Και στη συνέχεια, αν δεν το κάνει, εμείς μπορεί να λειτουργήσει με το επιχείρημα. Και στη συνέχεια, αν το κάνει, πραγματικά θέλουμε να Yello δυνητικά στο χρήστη. Αλλά αυτό είναι το πώς θα το κάνουμε αυτό. Ναί. Κοινό: Θα μπορούσατε να εξηγήσει memcpy πραγματικά γρήγορα; ΜΑΡΙΑ ZLATKOVA: Ω, συγγνώμη. Ναί. Memcpy παίρνει Όποια και αν είναι is-- συγγνώμη, εντάξει. Memcpy παίρνει ό, τι είναι στο μπαρ, ό, τι έχει περάσει πάνω foo ως όρισμα γραμμής εντολών. Έτσι, πρόκειται να λάβει argv1. Argv1 ονομάζεται μπαρ εδώ. Έτσι, πρόκειται να λάβει bar και πρόκειται να το αντιγράψετε σε c. Κοινό: OK. ΜΑΡΙΑ ZLATKOVA: Και αυτό πρόκειται να copy-- το τρίτο επιχείρημα αφορά μόνο στο πόσο πρόκειται να αντιγράψετε σε γ. Κοινό: Αχ. Έτσι αντιγραφή Αυτό και μόνο είναι όλα αυτά τότε. ΜΑΡΙΑ ZLATKOVA: Ναι, αυτό είναι αντιγραφή όλο αυτό. Ναι. Πρώτον, βεβαιωθείτε ότι η γραμμή δεν είναι ίσο με null επειδή είναι ένας δείκτης. Στη συνέχεια παίρνουμε το μήκος του νήματος του μπαρ. Μπορούμε να διασφαλίσουμε ότι είναι μικρότερη ή ίση με 12. Και τότε γιατί έχουμε φρόντισε, μπορούμε πραγματικά να memcpy και να είστε σίγουροι ότι αυτό είναι εντάξει. Καμιά ερώτηση? Εξαιρετική. Έχω δύο αληθείς ή ψευδείς ερωτήσεις. Μπορεί κάποιος να μου πει αμέσως αν αυτά είναι αληθής ή ψευδής; Ναι, είναι ψευδείς. Ακριβώς. Και οι δύο είναι ψευδείς. Έτσι, χρησιμοποιώντας έναν κωδικό πρόσβασης Ποτέ δεν είναι πολύ καλή ιδέα γιατί αν κάποιος ξέρει κωδικό σας, μπορείτε απλώς να πρόσβαση σε όλους τους άλλους λογαριασμούς σας. Και τότε τα εικονίδια δεν κάνουν τίποτα για την εξασφάλιση της ασφάλειας. Θα πρέπει συνήθως αναζητούν HTTPS αντί του HTTP και τη διεύθυνση URL. Και κάποια άλλα είδη επιθέσεις που έχουμε αναφέρει, ότι ο David έχει αναφερθεί σε διάλεξη, SQL ένεση επιθέσεις. Ήδη είδαμε ότι αν η don't-- Λειτουργία ερώτημα CS50 σιγουρεύεται ότι ο SQL ένεση επιθέσεις δεν μπορεί να συμβεί. Αλλά αν δεν ήμασταν χρησιμοποιώντας CS50, παραθέτω, εισαγωγικά "στο ερώτημα," θα πρέπει να βεβαιωθείτε ότι ο που εισάγει ο χρήστης δεν είναι στην πραγματικότητα κάποια SQL ερώτημα που θα προκαλέσει σε όλους τραπέζια μας να πέσει ή κάτι κακό να να συμβεί με τη βάση δεδομένων μας. Συνεδρία πειρατεία είναι ένα άλλο είδος της επίθεσης ότι συμβαίνει όταν κάποιο κακό άτομο χρησιμοποιεί συνεδρία κάποιου θύματος ID για να έχουν πρόσβαση στις πληροφορίες σύνδεσης. Έτσι, ένα πολύ τετριμμένο παράδειγμα του ότι είναι όπως και αν έχουμε ένα δημόσιο υπολογιστή, τότε το κακό πρόσωπο συνδεθεί και, στη συνέχεια, έχουν τα cookies που αποθηκεύονται. Και τα cookies δεν αλλάζουν για τη συνεδρία. Στη συνέχεια έχουμε το θύμα να πάει στο και, στη συνέχεια, συνδεθείτε με την ιστοσελίδα. Τα cookies δεν αλλάζουν για ένα ορισμένο συνεδρία. Και τότε το θύμα καταγράφει σε η ιστοσελίδα και στη συνέχεια να αποχωρεί. Και τότε το πρόσωπο που πηγαίνει πίσω μπορεί στη συνέχεια να εξακολουθούν να χρησιμοποιούν αναγνωριστικό περιόδου λειτουργίας τους να έχουν πρόσβαση στις πληροφορίες τους. Έτσι, αυτό είναι ένα παράδειγμα πώς αυτό θα μπορούσε να συμβεί. Και τότε εγώ δεν θα ανησυχούσα πάρα πολύ για το συγκεκριμένο κώδικα ή οτιδήποτε όπως αυτό που θα μπορούσε να προκαλέσει αυτό, αλλά έχει κάποια ιδέα για το τι οι μεταβλητές που εμπλέκονται σε αυτό είναι. Και μετά το χειρισμό κεφαλίδα δεδομένων είναι ένα άλλο είδος της επίθεσης ότι έχει ο David έχει μιλήσει. Και αναφέρεται μόνο σε τι μπορεί να συμβεί όταν η απάντηση, το HTTP ανταπόκριση στο εσωτερικό της επικεφαλίδας μας δεν απολυμαίνονται σωστά. Και κάθε της fields-- για παράδειγμα, αν κάποιος αντικαθιστά ένας από την επικεφαλίδα οι τιμές περιέχουν τίποτα περισσότερο από τι πρέπει να contain-- και πραγματικότητα περιέχουν, για παράδειγμα, ένα 200 Εντάξει κωδικό κατάστασης, τότε θα μπορούσε ενδεχομένως να κάνει κακόβουλα τα πράγματα όταν κατέστη σαφές πως δεν έπρεπε. Αλλά εγώ δεν θα ανησυχούσα πάρα πολύ πολύ για το συγκεκριμένο κωδικό ότι θα μπορούσε να προκαλέσει αυτό, ακριβώς το είδος της κατανόησης τα πράγματα σε υψηλό επίπεδο όπως αυτό. Νομίζω ότι αυτό είναι το μόνο ότι θα πρέπει να καλύψουμε. Καταπληκτικός. Όποιος έχει οποιαδήποτε απορία σχετικά με οποιαδήποτε από τα πράγματα που καλύψαμε; Ναί. Κοινό: Έτσι, ένα είδος περισσότερα υλικοτεχνική ερώτηση. Είναι το περιεχόμενο επικεντρώθηκε κυρίως για τα πράγματα μετά την 1η κουίζ; ΜΑΡΙΑ ZLATKOVA: Λοιπόν ερώτημα είναι, είναι το περιεχόμενο επικεντρώθηκε κυρίως σε πράγματα μετά κουίζ 1; Έτσι, η εστίαση είναι στην μετά κουίζ 1, με την εξαίρεση ότι πρέπει να επικεντρωθεί σε πράγματα σε pset5 και πολλές από τις δομές δεδομένων ότι καλύψαμε. Και δεν μπορούμε να πούμε ότι μπορεί να αγνοήσει τίποτα πριν ότι επειδή στηρίζεται σ 'αυτήν, καθώς και. Έτσι επικεντρωθεί σε αυτό, συν το υλικό pset5 όπως περιλαμβανομένων συνδεδεμένες λίστες, στοίβες, ουρές, και τα πάντα ότι η Hannah πήγε πάνω. ΧΑΝΑ Μπλούμπεργκ: Δεξιά. Ναι, πήγαμε πάνω από όλα τα πράγματα C Στην αρχή πολύ γρήγορα. Αλλά φροντίστε να επανεξετάσει αυτό. Πηγαίνετε πίσω και να παρακολουθήσετε το κουίζ 0 κριτική. Ένα ζευγάρι σημειώσεις πιο υλικοτεχνική, μόνο, ενώ έχουμε την προσοχή σας. Θα έχετε ώρες γραφείου τόσο τη Δευτέρα και την Τρίτη το βράδυ. Είναι πρόκειται να είναι σε MD 119. Αυτό είναι όλο στην ιστοσελίδα, έτσι αν δεν το κάνει, μην ανησυχείτε ακούσετε. ΜΑΡΙΑ ZLATKOVA: 8:30 - 11:00. ΧΑΝΑ Blumberg: Ναι, 8:30 - 11:00. Θα είμαστε εκεί. Θα είμαστε εκεί για να απαντήσει σε ερωτήσεις. Είναι αρκετά διασκεδαστικό και ψύχρα. Εσείς μπορείτε να κάνετε ερωτήσεις ότι έχετε στο κουίζ 1. Και κουίζ είναι για 1 Τετάρτη, τόσο καλή τύχη. Εάν έχετε οποιεσδήποτε ερωτήσεις, ίσως Ελάτε να μιλήσουμε για μας μέχρι εδώ one-on-one. Δροσερός. Ευχαριστώ πολύ. ΜΑΡΙΑ ZLATKOVA: Ευχαριστώ πολύ, παιδιά. Κοινό: Yay. [ΧΕΙΡΟΚΡΟΤΉΜΑΤΑ]