JASON Hirschhorn: Καλώς ήρθατε, ο καθένας, μέχρι την εβδομάδα 10. Αυτό είναι μια συναρπαστική εβδομάδα, διότι αύριο είναι Quiz 1, το οποίο θα πάρει στο ένα δευτερόλεπτο. Σήμερα στο τμήμα, πρόκειται να πάει πάνω από ορισμένες πηγές για το κουίζ, και τότε θα απαντήσει σε οποιαδήποτε και όλα τα ερωτήσεις που εσείς έχετε. Και στο τέλος θα με κάποια προβλήματα πρακτικής. Μπορούμε να περάσουν ολόκληρο το τμήμα απαντώντας σε ερωτήσεις. Μπορούμε να περάσουν ολόκληρο το τμήμα πηγαίνει πέρα ​​από τα προβλήματα πρακτικής. Εμείς θα επεκτείνει απλά για να γεμίσει το χώρο και το χρόνο που έχουμε. Έτσι έβαλα αυτή τη λίστα κάθε εβδομάδα, αλλά είναι ιδιαίτερα σημαντικό αυτή την εβδομάδα. Για τη μελέτη, αν δεν έχετε ήδη αρχίσει, αμάν. Αλλά ελπίζουμε ότι έχετε ήδη ξεκινήσει. Και θα έχετε την ευκαιρία μέσα από τα υλικά και τους πόρους που αναφέρονται εδώ. Θα συνιστούσα ένας αριθμός από αυτά. Ειδικότερα, σημειώσεις διάλεξης είναι εξαιρετικά σημαντικό και χρήσιμο. Η study.cs50.net παρέχει μια μεγάλη αλφαβητάρι για πολλά τα θέματα που καλύπτονται. Έχει επίσης κάποια μεγάλη πρακτική προβλήματα. Και στη συνέχεια, η Google είναι μεγάλη, πάρα πολύ. Δεν ξέρω τι θα το χρησιμοποιήσετε για. Αλλά χρησιμοποιούν το Google, καθώς και. Απευθυνθείτε σε μένα, αν έχετε οποιαδήποτε ερωτήσεις, σχόλια, ή ανησυχίες. Κοιτάξτε πέρα ​​από τη σύνοδο επανεξέτασης διαφάνειες από χθες το βράδυ. Ή, αν έχετε λίγο χρόνο, δείτε το βίντεο. Παρέχουν πολλές χρήσιμες υλικού και πληροφοριών. Και να προσπαθήσουμε και να καλύπτει, αν όχι όλα, πολλά από τα τα θέματα που καλύψαμε και ότι θα μπορεί να δει στο κουίζ. Μιλώντας για το κουίζ, ότι θα είναι αύριο. Είναι 75 λεπτά καιρό. Πολλοί από εσάς το παίρνετε σε 1 ώρα, και κάποιοι από εσάς είναι τη λήψη του στις 5:30. Για την ώρα το παίρνετε και το θέση το παίρνετε, βεβαιωθείτε μπορείτε να ελέγξετε το έγγραφο στην αρχική σελίδα CS50.net. Να θυμάστε ότι μπορείτε να πάρετε μια 8 1/2 με 11 φύλλα για να πάρετε μαζί σας. Πολλάκις, οι άνθρωποι δεν χρησιμοποιούν αυτό το φύλλο καθόλου κατά τη διάρκεια του κουίζ. Αλλά πραγματικά, είναι μια απίστευτα χρήσιμο εργαλείο μελέτης. Έτσι, βάζοντας μαζί αυτό το φύλλο είναι αυτό που Πέρασα ίσως τρεις ή τέσσερις ώρες κάνει όταν σπούδαζα για CS50, και ότι ήταν σίγουρα το πιο χρήσιμο τρόπος που θα μπορούσε να μελετήσει για το κουίζ. Έτσι, ακόμη και αν έχετε κάποια άλλη ανθρώπων οδηγούς σπουδών για να εξετάσει και χρησιμοποιήσετε ως αναφορά, συστήνω ιδιαίτερα κάνοντας τη δική σας οδηγός σπουδών, θέτοντας αυτά τα πράγματα μαζί. Αυτό πραγματικά σας βοηθά να μάθετε όλο το υλικό. Τελευταίο αλλά όχι λιγότερο σημαντικό σε αυτή την ενότητα, μετά την αυριανή κουίζ υπάρχει ένα περισσότερα διάλεξη - την ερχόμενη Δευτέρα. Υπάρχει ένα ακόμα τμήμα, όχι τον επόμενο Τρίτη πριν από την ημέρα των ευχαριστιών, αλλά η Τρίτη μετά από αυτό. Θα συναντηθεί μαζί για μια τελική αντίο κόμμα, αλλά και να κάνει κάποιο δροσερό πράγματα για να σας πάρει ενθουσιασμένος για παιδιά περαιτέρω σπουδές στην επιστήμη των υπολογιστών. Υπάρχει ένα ακόμα έργο, ένα ακόμη δίκαιη, ένα ακόμη hackathon. Πλησιάζουμε στο τέλος του CS50, το οποίο είναι συναρπαστικό - αλλά επίσης, αν είστε σαν μου, λίγο θλιβερό. Πριν προχωρήσουμε, όμως κάποιοι έχουν απορίες σχετικά με το τι καλύψαμε μέχρι τώρα; Εντάξει, αλλά ας πάει πέρα ​​από μερικές ερωτήσεις που έχετε για το κουίζ και θέματα θα μπορούσαμε να καλύψουμε. Έτσι, αυτό είναι μια λίστα που έβαλα μαζί. Δεν είναι καθόλου εξαντλητικός, αλλά ελπίζουμε ότι θα βοηθήσει τη μνήμη σας, εάν έχετε κάποιες ερωτήσεις σχετικά με οποιοδήποτε από αυτά τα θέματα, ή αν έχετε ερωτήσεις σχετικά με προβλήματα πρακτικής από κουίζ τα προηγούμενα χρόνια. Είχα ένα ζευγάρι ερωτήματα που ήταν αποστέλλονται σε μένα, αλλά θέλω να κρατήσει μακριά σε εκείνες για ένα δευτερόλεπτο. Μήπως κάποιος έχει απορίες, προβλήματα που δεν καταλαβαίνουν, απαντήσεις που δεν κατάλαβαν για να ξεκινήσουμε; Avi. ΚΟΙΝΟ: Μπορείς να πήγαινε πάνω DOM και Ajax πραγματικά γρήγορα; Όπως, τι πρέπει να ξέρουμε ή θα πρέπει να καταλαβαίνουν γι 'αυτούς; JASON Hirschhorn: Πάω να απαντήσει γενικά αυτό το ερώτημα, τι μπορώ να κάνω πρέπει να ξέρετε για συγκεκριμένο θέμα x; Επειδή έχω μια αίσθηση ότι πολλοί από εσάς πρόκειται να με ρωτήσεις ότι, ή περίεργος γι 'αυτό. Έτσι, στο βαθμό που το θέμα ήταν καλύπτεται από διάλεξη, ή τμήμα, ή σε study.cs50.net, ένα πρόβλημα που, σας θα πρέπει να είναι εξοικειωμένοι με αυτό. Έτσι, δεν χρειάζεται να γνωρίζουν κάθε τύπο ετικέτας που είναι διαθέσιμο σε μορφή HTML ή κάθε είδους παράμετρος ή μια ιδιότητα μπορείτε να δώσετε κάτι στο CSS. Αλλά αν το είδε σε ένα παράδειγμα διάλεξη, αν το είδε σε ένα πρόβλημα σύνολο, θα πρέπει πιθανότατα να είναι εξοικειωμένοι με αυτό, ιδιαίτερα τα πράγματα που είδατε στη διάλεξη. Έτσι συζητήσαμε το έγγραφο μοντέλο αντικειμένου λίγο στο τμήμα, πολύ περισσότερο στην διάλεξη. Θα πρέπει να είστε εξοικειωμένοι με την εν λόγω πολύ από αυτό. Και θα πρέπει να είναι εξοικειωμένοι με AJAX στον ίδιο βαθμό. Εμείς ποτέ δεν είδε απίστευτα προχωρημένο ή περίπλοκη παραδείγματα Ajax, έτσι δεν πρόκειται να ζητηθεί κάνουμε κάτι απίστευτα περίπλοκο. Αλλά μπορεί να σας ζητηθεί, πώς μπορώ να κάνω πραγματοποιήσετε μια κλήση χρησιμοποιώντας jQuery Ajax; Ποια είναι κάτι που έχετε δει μια σειρά φορές πριν, τόσο στην επανεξετάζει συνόδου και στη διάλεξη, και Είναι μόνο δύο-ish γραμμές κώδικα. Έτσι, αυτό είναι κάτι που πρέπει να είναι εξοικειωμένοι με. Αλλά και πάλι, για όλα αυτά τα θέματα, αν το έχετε δει πριν, είναι δίκαιο παιχνίδι. Και θα μπορούσαμε να σας ρωτήσω - προφανώς, είμαστε πρόκειται να σας ζητήσω να σας τα πράγματα δεν έχουμε ξαναδεί. Κωδικοποίηση κάτι που δεν έχουν ξαναδεί. Ποια δεν είναι να πούμε ότι δεν έχουν δει τα εργαλεία για την επίλυση το πρόβλημα πριν. Έχετε δει αυτά τα εργαλεία. Για παράδειγμα, σε ένα κουίζ 1, εάν θα πρέπει να κωδικοποιήσει strlen. Δεν έχουν κωδικοποιηθεί strlen πριν. Αλλά ξέρετε πώς να χρησιμοποιούμε ένα for loop, ξέρετε πώς να χρησιμοποιήσετε αν οι συνθήκες. Ξέρετε πώς να γράψει μεταβλητές C. Είναι πρόκειται να είναι το ίδιο πράγμα εδώ. Δεν πρόκειται να σας ζητηθεί να κάνετε κάτι που δεν έχετε ξαναδεί, αλλά μπορεί να σας ζητηθεί να, όπως, βάλτε κάτι μαζί με έναν νέο τρόπο, ή λύσει ένα διαφορετικό είδος του προβλήματος. Δυστυχώς, αυτό δεν ήταν ειδικά για σας ερώτηση, αλλά δεν μπορώ να απαντήσω σχετικά με κάθε θέμα τι ή δεν χρειάζεται να ξέρετε. Αλλά, επίσης, συγγνώμη, το τελευταίο πράγμα που σε αυτό. Έχουμε περάσει πολύ περισσότερο χρόνο στους καταλόγους σύνδεσμο ό, τι έχουμε για Ajax. Δεν έκανε χρήση Ajax σε ένα σύνολο πρόβλημα. Ένα από τα κεντρικά χαρακτηριστικά του εν λόγω πρόβλημα που αυτό ήταν σύνδεση καταλόγους. Και περάσαμε πολύ χρόνο στη διάλεξη και ενότητα με αυτό. Έτσι, οι πιθανότητες είναι σύνδεση κατάλογο θα καταλήξει περισσότερο συχνά στο κουίζ από Ajax βούληση. Ή τα ερωτήματα που έχουν να κάνουν με τη σύνδεση κατάλογος θα αξίζει περισσότερα σημεία. Έτσι, μπορείτε σίγουρα εστίαση και στενό σε σχετικά με τα πράγματα που είναι πιο ενδέχεται να καταλήξει γιατί έχουμε αφιέρωναν περισσότερο χρόνο σε αυτά. OK οποιεσδήποτε άλλες ερωτήσεις; Ναι. ΚΟΙΝΟ: Μπορούμε να πάει πέρα ​​από τη χρήση του ανώνυμες λειτουργίες σε JavaScript; Είμαι ένας είναι λίγο σύγχυση σχετικά με αυτό. JASON Hirschhorn: Έτσι, στο JavaScript - Προσπαθώ να σκεφτώ πώς θα θα μπορούσε να γράψει αυτό σε - οπότε ας πραγματικά να ανοίξει αυτόν τον κώδικα. Έτσι, αυτό είναι ένας κώδικας που κάναμε την περασμένη εβδομάδα. Και έχετε δει αυτό πριν, αν ήταν εδώ στο τμήμα την περασμένη εβδομάδα. Ή έχετε δει κάτι παρόμοιο με αυτό πριν. Αλλά μπορείτε να δείτε σε αυτή την πρώτη γραμμή. Αυτό είναι το πώς να ξεκινήσετε - ο καθένας έχει δει αυτό πριν. Αν θέλετε να βάλετε κάποιο JavaScript κώδικα, μπορείτε να το βάλετε μέσα σε αυτό, με την προϋπόθεση είστε με τη χρήση JQuery. Αυτό λέει, δεν κάνουν τίποτα μέχρι να φορτωθεί του εγγράφου. Και τότε, Curt, μπορείτε να δείτε εδώ κάνουμε κάτι σαν αυτό - λειτουργία ανοικτής paren, έκλεισε paren. Γι 'αυτό και δεν δίνουν αυτή την λειτουργεί ένα όνομα. Εμείς δεν πρόκειται να ορίσει αυτή τη λειτουργία υποτίθεται για να τρέξει και στη συνέχεια το ονομάσουμε ένα σωρό φορές. Απλά λέμε σε αυτό το έγγραφο ήδη λαμβάνει μια λειτουργία. Ένα ζευγάρι από τα πράγματα που πρέπει να κάνουμε. Και δεν θέλουμε να περάσουν το χρόνο δίνοντάς του ένα όνομα ή να το αποθηκεύσετε για διηνεκές. Εμείς απλά θέλουμε να εκτελέσετε κάποια πράγματα. Έτσι, ένας ανώνυμος είδος λειτουργίας του εξυπηρετεί το σκοπό αυτό. Όταν δεν πρόκειται να χρησιμοποιήσετε κάτι ξανά και ξανά, έτσι ώστε να μην χρειάζεται να δώσετε ένα όνομα - απλά θέλετε να το χρησιμοποιήσετε μια φορά - θα σας πω ακριβώς την λειτουργία τους, παράδειγμα, στην περίπτωση αυτή, και είστε ακριβώς τον καθορισμό κάτι που θα μπορούσε να δώσει ένα όνομα. Όπως, θα μπορούσε να τραβήξει αυτή τη λειτουργία από και να της δώσει ένα όνομα και στη συνέχεια να καλέσετε ότι λειτουργούν εδώ. Αλλά δεν χρειάζεται να γιατί δεν το κάνουμε θέλετε να χάνετε χρόνο δίνοντάς του ένα όνομα ή σπατάλη κάτι στο χώρο όνομά μας. Και θα δείτε ότι πολλά. Για παράδειγμα, βλέπουμε ότι ένα πολύ σε αυτό κώδικα, αλλά έχετε δει αυτό πριν, όταν κάνετε κλικ κάτι - εκτελέσετε αυτόν τον τύπο κώδικα. Θα μπορούσαμε να ορίσουμε τον κώδικα που θέλουμε να τρέχει όταν κάνουμε κλικ, στην περίπτωση αυτή, αυτό το αναγνωριστικό, ως ξεχωριστή λειτουργία και στη συνέχεια να εκτελέσετε αυτή τη λειτουργία. Αλλά σε αυτή την περίπτωση, απλά παρακάμπτοντας αυτό το βήμα και κίνηση εδώ και μόνο για τον καθορισμό πάντα ότι θέλουμε να συμβεί και δεν της έδωσε ένα όνομα. Αυτό ακόμα δεν θα μπορούσε να έχει απαντήσει στην ερώτησή σας. ΚΟΙΝΟ: Όχι, δεν κάνει. Θέλω να πω, υποθέτω ότι απλά δεν κάνουν πραγματικά καταλαβαίνω γιατί θα ήταν μια λειτουργούν καθόλου, όμως. Επειδή δεν είναι πραγματικά να ονομάζεται. Δεν έχει πραγματικά ένα όνομα. JASON Hirschhorn: Είναι μια λειτουργία στην την αίσθηση ότι πρόκειται για μια σειρά από βήματα, όπως θα θέσει σε λειτουργία. Και στη συνέχεια, γι 'αυτό καλούμε είναι ανώνυμη συνάρτηση. Εμείς δεν πρόκειται να δώσει ένα όνομα. Εμείς δεν πρόκειται να σπαταλήσουν την προσπάθεια για το όνομα, αλλά θα μπορούσαμε. Ανώνυμος λειτουργίες, μπορείτε μπορούν να δίνουν πάντα ένα όνομα. Έτσι, για παράδειγμα, αυτός ο κώδικας εδώ, θα μπορούσαμε να βάλουμε αυτόν τον κώδικα μέσα σε ένα λειτουργία και στη συνέχεια να καλέσετε αυτή η λειτουργία εδώ. Αντ 'αυτού, ας πούμε, εμείς δεν πρόκειται να ασχοληθείτε με αυτό. Εμείς απλά θα γράψω εντάξει εδώ. Είναι σαν μερικές φορές όταν είστε γραπτώς τεσσάρων βρόχο C - εσείς το έχετε ξαναδεί - ίσως είστε επανάληψη μέσω forloop σε i ισούται με 0. Ι είναι μικρότερη από strlen. Ή θα πάμε μέσα από μερικά πίνακα, μπορείτε να αποθηκεύσετε σειρά δείκτης i σε κάποια μεταβλητή. Και μπορείτε να χρησιμοποιήσετε αυτή τη μεταβλητή. Έτσι δεν χρειάζεται να ξαναγράψουμε σειρά βραχίονα i ξανά και ξανά και ξανά. Και αυτό είναι το είδος του όπως μια εικονική μεταβλητή. Δεν είναι πολύ εξυπηρετούν σκοπούς άλλους από να κάνουν τον κωδικό σας λίγο πιο καθαρά και εύκολο να το διαβάσετε. Παρόμοια λειτουργία εδώ. Απλά το κάνει λίγο πιο εύκολο, αλλά λειτουργικά δεν υπάρχει καμία διαφορά. Μήπως αυτό απαντήσω στην ερώτησή σας; ΚΟΙΝΟ: Ναι. JASON Hirschhorn: OK .. Mario; ΚΟΙΝΟ: Χθες βάζουν συχνά λειτουργία παρενθέσεις εκδήλωση. Μήπως αυτό σημαίνει κάτι; Ή μήπως είναι για τα πράγματα όπως ότι θα κάνουν document.ready εκδήλωση λειτουργία. JASON Hirschhorn: Το έχουμε δει αυτό, και και πάλι, αυτά είναι μικρότερα πράγματα που μάλλον δεν θέλω να ξοδεύουν πάρα πολύ χρόνο σε. Επειδή μερικές φορές δεν θέλω οι άνθρωποι να φρίκαρε ότι δεν έχουν ακούσει για αυτά τα πράγματα τόσο πολύ. Αλλά μιλήσαμε λίγο για χειρισμού συμβάντων. Έτσι, συμβαίνει κάτι, και στη συνέχεια Αυτή η λειτουργία εκτελείται. Και τότε θα θέλουν επίσης να γνωρίζουν κάποιες λεπτομέρειες σχετικά με το τι συνέβη σε αυτήν την περίπτωση. Έτσι σκεφτείτε πίσω στο πρόβλημα που 4. Αυτό είναι πιθανώς ο ευκολότερος τρόπος για να καταλάβετε ότι break out. Υπήρξε κάποια κώδικα - σαν ένα γεγονός θα συμβεί, αλλά γεγονός μπορεί να σημαίνει πολλά πράγματα. Αν θα μπορούσε να σημάνει το ποντίκι πατηθεί, θα μπορούσε να σημαίνει ότι θα χτυπήσει ένα πλήκτρο βέλους, et κ.λπ., κ.λπ.. Αλλά είναι όλα αποθηκεύονται σε αυτό το γενικό πράγμα που ονομάζεται εκδηλώσεις. Και τότε μπορούμε να πούμε, είναι το γεγονός αυτό το πράγμα; Ή μήπως αυτό το γεγονός αυτό το πράγμα; Ή, τι είδους συνέβη με αυτό το γεγονός; Έτσι, γι 'αυτό μπορείτε να δημιουργήσετε τη μεταβλητή εκεί για να σώσει ότι επιπλέον πληροφορίες για το τι ακριβώς συνέβη εκείνο το θα πάμε να θέλουν να χρησιμοποιήσει στη συνάρτηση. Αλλά και πάλι, αυτό είναι ίσως ένα από τα λιγότερο σημαντικά πράγματα να είναι σούπερ εξοικειωμένοι με. Εντάξει, τι άλλα ζητήματα έχουν οι άνθρωποι είχε, ή εμπόδια που έχουν ανέκυψαν κατά την αναθεώρηση; Θα πίσω στον εν λόγω κατάλογο. Τι γίνεται κατά τη διάρκεια κουίζ πρακτική, εάν άνθρωποι έχουν εκείνα που έχουν ήδη; Ποια ήταν μερικά από τα προβλήματα που τελική εσείς επάνω; Ξέρω για ένα γεγονός ότι πέρυσι κουίζ ήταν πραγματικά δύσκολο. ΚΟΙΝΟ: Μπορείτε να εξηγήσετε τι μια επίθεση SQL ένεση είναι; JASON Hirschhorn: Εντάξει, ωραία. Έτσι, μιλήσαμε για αυτό το λίγο. Υπάρχει μια διάλεξη σχετικά με την ασφάλεια. Και πάλι, όπως ανέφερα προηγουμένως, Αυτό είναι ένα μέρος. Αλλά θα πρέπει να απογοητεύονται στο κουίζ όταν έχετε διαβάσει κάποιες μικρές δύο σημεία ερώτηση, και είστε όπως, όταν σου έχω μάθει ότι; Όλα αυτά τα πράγματα σε αυτές τις διαλέξεις ότι δεν πίστευα ότι θα έπρεπε να γνωρίζουν, ή θα μπορούσατε να gloss πάνω, επειδή που δεν έχουν να κάνουν με το σύνολο του προβλήματος, εκείνοι κατά πάσα πιθανότητα θα καταλήξουμε και πάλι στο κουίζ. Έτσι, δροσερό, διασκέδαση πράγματα που απλά σκέφτηκε ο David έλεγε για να μπορείτε να απολαύσετε, που σου έλεγε για να μπορείτε να απολαύσετε και να σας κάνει να είναι μόνο super ενθουσιασμένος για την εκμάθηση τα πάντα Είναι εκεί για να μάθουν σχετικά με την επιστήμη υπολογιστών. Αυτά τα πράγματα έρχονται επίσης σε κουίζ. Έτσι, ακόμα και αυτά τα μικρά πράγματα που δεν έκανε σχετίζονται άμεσα με το πρόβλημά σας που, όπως εσείς είστε εξοικειωμένοι με από Quiz 0, κατά πάσα πιθανότητα θα καταλήξει. Και αυτό είναι ένα καλό παράδειγμα κάτι. Έτσι, ένα SQL ένεση επιθέσεις είναι όταν πάρετε κάποιες πληροφορίες από το χρήστη και θέλετε να το τοποθετήσετε σε ένα τραπέζι με τη χρήση ένα SQL ένθετο δήλωση, αλλά θα δεν αποστειρώνουν την είσοδο μπροστά από το χρόνο. Έτσι, είναι προφανές ότι έχουμε δει SQL. Εγώ απλώς θα ανοίξει - ας πάμε - Θα πάμε στην αναθεώρηση - Νομίζω, ο οποίος κάλυπτε; Νομίζω ότι Samala έκανε. Έτσι, μπορούμε να πάρουμε - ΚΟΙΝΟ: Πού το βρήκες αυτό; JASON Hirschhorn: Έτσι, αν πάτε να CS50.net, κουίζ, και στη συνέχεια μπορείτε μετακινηθείτε προς τα πάνω και να πάρει διαφάνειες από τη σύνοδο επανεξέτασης. Αλλά μπορείτε να δείτε αυτό είναι ένα καλό παράδειγμα μιας επίθεσης SQL ένεση. Παίρνουμε κάποιες πληροφορίες από τον χρήστη και μας δίνουν μια σειρά, και στη συνέχεια θα θέλετε να εισαγάγετε αυτό το αλφαριθμητικό σε μια βάση δεδομένων. Σε γενικές γραμμές πρόκειται να αποστειρώνουν ότι εισόδου, το οποίο σημαίνει ότι υπάρχουν μερικά χαρακτήρες που είναι επικίνδυνο. Για παράδειγμα, σε χορδές SQL, αυτά τα αποσπάσματα - μονά εισαγωγικά ή διπλά εισαγωγικά - σημαίνει κάτι. Σημαίνουν το τέλος αυτή τη σειρά εδώ. Και έτσι, αν ο χρήστης που δίνει μια μοναδική ή ένας διπλός απόσπασμα, θα μπορούσαν να προσπαθώντας να σκοντάψει επάνω ερώτημα SQL σας και εισάγετε κάποια άσχημα πράγματα σε αυτό. Και αν το κάνουν αυτό, θα μπορούσαν να αποκτήσουν τον έλεγχο της βάσης δεδομένων σας ή να κάνετε κάποια πράγματα που δεν θέλετε να κάνουν. Έτσι, γι 'αυτό κάθε φορά που παίρνουμε SQL ερωτήματα, ελέγξαμε την είσοδο πριν θέτει σε βάση δεδομένων, η οποία σημαίνει ότι ξεφύγουν από αυτούς τους χαρακτήρες. Θα μιλήσουμε για αυτό σε ένα δευτερόλεπτο. Αλλά μακρά ιστορία σύντομη, μια ένεση SQL επίθεση είναι αν δεν το κάνουμε αυτό - αν δεν αναλάβει τη φροντίδα της εισόδου που σας έδωσε πριν από τη θέση σας βάση δεδομένων, μπορούν, όπως μπορείτε να δείτε κάτω εδώ, να εκτελέσετε ένα ερώτημα που, στην πραγματικότητα - βάζουν στον κώδικά τους εδώ κάτω και αυτή η επιλογή γραμμής εδώ κάτω θα επιλέξει τα πάντα, από τον πίνακα, ανεξάρτητα τι δίνεται ο κωδικός πρόσβασης. Επειδή έχετε την ή 1 ισούται με 1. Έτσι είναι, βασικά, τα πολυλογώ, ένας τρόπος για να αναλάβει τη βάση δεδομένων. Το ερώτημα, λοιπόν, για σας παιδιά, είναι όπου το p σύνολα 7 έκανες απολυμάνετε όλα οι είσοδοι στα ερωτήματα SQL σας; Όταν το έκανε αυτό το βήμα να συμβεί; Πού μπορώ να αποτρέψω την ένεση SQL επιθέσεις από το να συμβεί σε p που 7; Ναι. ΚΟΙΝΟ: Crypt; JASON Hirschhorn: Άρα δεν ήταν κρύπτη. Εμείς δεν σας κάνει να το κάνετε αυτό για το σκοπό αυτό ιδιαίτερο πρόβλημα που, αλλά αυτό συμβαίνει στη λειτουργία ερωτήματος. Στην πραγματικότητα το έγραψε για σένα, και πήραμε τη φροντίδα του απολύμανση εισόδους για εσάς. Αλλά τα τελευταία χρόνια, οι μαθητές είχαν για να πληκτρολογήσετε τις εισόδους για το δικό τους. Στο σύνολο σελ. 7, πολλοί από εσάς - επιτρέψτε μου να ανοίξει ένα άλλο αρχείο. Έτσι θα παρατηρήσετε εδώ πολλά άνθρωποι, σε πρόβλημα που 7, δεν θέτει αυτή η λειτουργία στις χορδές. Αυτή η λειτουργία, htmlspecialchars, και πάλι - αυτή η σειρά μπορεί να έχει κάποια πράγματα ότι στην HTML σημαίνει κάτι άλλο. Όπως ένα στήριγμα, ένα τετράγωνο, ή μία γωνία βραχίονα σημαίνει κάτι σε μορφή HTML. Και έτσι εάν εκτυπώνετε ότι για να το οθόνη ή εάν παίρνετε ακριβώς αυτό και εκτυπώστε ότι από HTML στη σελίδα σας, που θα μπορούσε να κάνει κάτι που δεν το περιμένετε. Έτσι htmlspecialchars πηγαίνει πάνω από όλους εκείνους χαρακτήρες που έχουν ειδική συνάντηση και να τους διαφεύγει. Γι 'αυτό παίρνει εκτυπωθεί ως κείμενο θέλετε να δείτε, όχι βίδωμα HTML σας. Ζητήσαμε αυτή τη λειτουργία στην κεφαλίδα. Και πολλοί άνθρωποι ξέχασαν να καλέσετε τη λειτουργία αυτή στο κώδικα που έγραφες. Έτσι, για παράδειγμα, αν ένα όνομα απόθεμα είχε μια αγκύλη σε αυτό και έχετε ξεχάσει για να καλέσετε τη λειτουργία αυτή, ότι η γωνία βραχίονας θα μπορούσε να αποτινάξει αυτό HTML σας έμοιαζε. Όμως, καλώντας τη λειτουργία αυτή θα ξεφύγει ότι γι 'αυτό εκτυπώνει στην πραγματικότητα ως αγκύλη και δεν ρίχνει off κώδικα HTML σας. Το ίδιο λόγο που έχουμε δει, μερικές φορές, καθέτους πριν από διπλά εισαγωγικά σε μια γραμμή printf επειδή δεν θέλουμε η διπλά εισαγωγικά κάτω στην ταινία. Θέλουμε να τα εκτυπώσετε έξω προς την οθόνη. Έτσι, όλα αυτά είναι η ίδια ιδέα. Μήπως αυτό απαντήσω στην ερώτησή σας; ΚΟΙΝΟ: Είδος. JASON Hirschhorn: Σας έχουν μια συνέχεια; ΚΟΙΝΟ: Υποθέτω ότι η ένεση SQL η επίθεση έχει να κάνει με αυτό; Δεν καταλαβαίνω πώς τα δύο είναι συνδεδεμένα. Γιατί θα κάνει τα specialchars; JASON Hirschhorn: Εντάξει, έτσι ώστε ο SQL επίθεση ένεση είναι όταν κάνετε την ένεση κάποιες κακόβουλες χορδές σε κάποιου πρόγραμμα, και το μόνο που το πάρετε και να τρέξει το ερώτημα SQL με ένα string που τους έδωσε. Όπως μπορείτε να δείτε εδώ κάτω, ότι θα μπορούσε να είναι προβληματική. Έτσι, ο τρόπος που εμποδίζουν ενάντια σε αυτό είναι παίρνετε σειρά τους ότι δίνουν σας - έτσι αυτή η σειρά εδώ - και μπορείτε να το απολυμάνετε. Μπορείτε να ξεφύγουν όλα τα πράγματα που είναι δυνητικά προβληματική. Έτσι δεν τα ερμηνεύουν ως κάτι αυτό σημαίνει κάτι. Και ένα παράδειγμα του ότι με την HTML είναι αυτή η λειτουργία. Έτσι είναι η ίδια ιδέα εδώ. Και ήμουν απλά σας δείχνουν άλλα παραδείγματα για το πότε έχετε δει αυτή την ιδέα πριν. Αποφυγής της εισόδου του χρήστη πριν από την εκτύπωση έξω σε μια οθόνη ή το θέτει μέσα σε μια πρόταση SQL. ΚΟΙΝΟ: Έτσι, στην περίπτωση αυτή, ο χρήστης βρωμίζει με τον προγραμματιστή. JASON Hirschhorn: Ναι. Με όλες αυτές τις επιθέσεις ασφαλείας, αυτό είναι πάντα γενικά το χρήστη, ή κάποιος, προσπαθεί να το χάος με εσάς, ο προγραμματιστής. Και αυτοί είναι τρόποι που μπορείτε να πρόληψη εναντίον τους. ΚΟΙΝΟ: Έτσι έχω μια ερώτηση σχετικά με τις λειτουργίες hash. Σε Quiz 1 από το 2011, υπάρχουν δύο ερωτήσεις σχετικά με μονόπλευρη hashes. Και αναρωτιόμουν τι σήμαινε αυτό. JASON Hirschhorn: OK, η οποία κουίζ; 2011; ΚΟΙΝΟ: Ναι. ΚΟΙΝΟ: Quiz 1; ΚΟΙΝΟ: [δεν ακούγεται]. Αυτό είναι σαν τον κατακερματισμό έναν κωδικό πρόσβασης. Αυτό δεν είναι να βάλουμε τα πράγματα - JASON Hirschhorn: Τι σελίδα ήταν; ΚΟΙΝΟ: Νομίζω ότι ήταν 9 ή 10, ή και τα δύο. JASON Hirschhorn: Εντάξει, προχωρήσει, Curt. Μπορείτε να απαντήσετε, ενώ κοιτάμε. ΚΟΙΝΟ: Νομίζω ότι μιλάει για hashing έναν κωδικό πρόσβασης. Όπως, όταν κάποιος μπαίνει έναν κωδικό πρόσβασης, μπορείτε να το μετατρέψει σε ένα κρυπτογραφημένο πράγμα. Αυτό είναι το hash κωδικό πρόσβασης, το οποίο είναι διαφορετική από μια συνάρτηση κατακερματισμού που βάζει κάτι σε ένα πίνακα κατακερματισμού. JASON Hirschhorn: Ας δούμε. Επιτρέψτε μου να σηκώσει ό, τι μας δίνουν την απάντηση. Και τότε θα περπατάς με τα πόδια. Έτσι Curt έδωσε ένα πολύ καλό παράδειγμα από ένα one-way hash. Όταν έχω ξαναδεί αυτό, εμείς λάβει τον κωδικό πρόσβασης και να μετατρέψει - θυμηθείτε, σε σύνολο σελ. 7, κάποιος θα μπορούσε έχει έναν κωδικό πρόσβασης που είναι ακριβώς κωδικό, αλλά στη συνέχεια παίρνει κρυπτογραφημένο σε κάποια πραγματικά μεγάλο πράγμα. Η μονόδρομη hash σημαίνει ότι είναι πολύ εύκολο για να πάει από ένας τρόπος για να το άλλο, αλλά είναι πολύ δύσκολο να πάει από ο άλλος τρόπος πίσω. Και έτσι ξέρετε, όταν είχαν τον έλεγχο κωδικούς πρόσβασης των ανθρώπων σε πρόβλημα που 7, θα λάβει τους - έτσι, για παράδειγμα, ότι ήθελαν να αλλάξουν τον κωδικό τους, να τους ρωτήσετε για τον παλιό κωδικό πρόσβασης τους. Πήρατε τον παλιό κωδικό πρόσβασης τους. Μπορείτε να κρυπτογραφηθεί. Και στη συνέχεια, σε σύγκριση με τις δύο κρυπτογράφησης αντί Αποκρυπτογράφηση του αρχικού ένα, γιατί είναι πραγματικά δύσκολο να πάει με αυτόν τον τρόπο. Ναι. ΚΟΙΝΟ: Πώς σε βάθος δεν μας κατανόηση του Telnet πρέπει να είναι; JASON Hirschhorn: Εάν αναφέρθηκε συντομία στη διάλεξη, μόνο μια σύντομη κατανόηση. Και πάλι, πίσω στην απάντηση στην ερώτηση του Avi - τα περισσότερα πράγματα έρχονται, το πιο πιθανό αυτό θα πρέπει να είναι σούπερ εξοικειωμένοι με αυτά. Αν έχετε μόνο καταλήξει σε διάλεξη, αυτό είναι μόνο ένα μέρος. Αλλά αν καταλήξουμε σε διάλεξη, ενότητα, και ένα πρόβλημα που, τότε θα μάλλον πρέπει να είναι super εξοικειωμένοι με αυτά. Έτσι είχα μια ερώτηση νωρίτερα για - είναι ήταν το φθινόπωρο του 2010 - Quiz 1, ας σηκώσει - αυτό το ερώτημα σχετικά με στοίβες και ουρές, που το κάναμε περάσετε ένα δίκαιο κομμάτι του χρόνου μιλάμε στη διάλεξη, ακόμα και αν δεν είχαμε πραγματικά ποτέ χτυπήσει στο τμήμα. Έτσι, το ερώτημα αυτό σας δίνει μια σειρά εντολών και ζητώντας σας τι θα εκτυπωθεί σε αυτή την περίπτωση. Έτσι, αυτό είναι μια εντελώς λογική ερώτηση ότι θα μπορούσε να ζητηθεί από εσάς παιδιά, και στη συνέχεια, εσείς θα πρέπει να να είναι σε θέση να απαντήσει. Έτσι, γιατί δεν κοιτάς για 30 δευτερόλεπτα, και στη συνέχεια, αν κάποιος θέλει να προτείνει τις απαντήσεις σε μένα, και Στη συνέχεια θα περπατήσετε μέσα από αυτό. Εντάξει, ο οποίος έχει μια απάντηση στην ερώτηση 27; Ναι. ΚΟΙΝΟ: Είναι 1, 2, 3, 3; JASON Hirschhorn: Αυτό είναι σωστό. 27 είναι 1, 2, 3, 3. Έτσι, ας δούμε πώς φτάσαμε αυτό. Πρώτον, λέμε, αν s είναι μια ουρά, τι θα εκτυπωθεί; Έτσι, μια q είναι first in, first out. Έχουμε δει ότι πριν. Είδαμε την εικόνα του λαού περιμένει στην Μήλο Αποθηκεύστε να αγοράσετε κάποιο προϊόν. Οι πρώτοι άνθρωποι στον είναι οι πρώτοι άνθρωποι έξω. Τα πρώτα πράγματα σε μια ουρά είναι τα πρώτα πράγματα έξω. Έτσι, αν έχουμε κάτι να ωθήσει σε μια ουρά, πιέζετε το 1, τότε θα εμφανιστεί το 1. Pop σημαίνει απλά βγάλτε. Σε αυτή την περίπτωση, απλά να πάρουν κάτι. Παίρνουμε το πρώτο πράγμα, αυτό είναι ένα 1. Έτσι θα βάλουμε τα πράγματα εμείς εκτυπώσετε τα κάτω πάνω από εδώ. Αυτό δεν είναι πλέον στην ουρά μας. Στη συνέχεια πιέζουμε σε 2 και 3, και έχουμε σκάσει από το πρώτο πράγμα. Και πάλι, επειδή είναι μια ουρά. Έτσι έχουμε ένα 2, τότε βάζουμε σε ένα άλλο 3 και καλέστε πάλι ποπ. Μας 3 είναι το πρώτο. Και τότε είχαμε ένα σωρό άλλα πράγματα και pop κλήση. Αλλά και πάλι, δεδομένου ότι αυτό είναι μια ουρά, first in, first out. Παίρνουμε το πρώτο πράγμα που που είχε τεθεί ποτέ μέσα Αυτό είναι μας 3. Και, σε αυτή την περίπτωση, μην ανησυχείτε για όλα τα άλλα πράγματα. Έτσι, αυτό είναι αν αυτό είναι μια ουρά. Οποιεσδήποτε ερωτήσεις σχετικά με μια ουρά; Μια στοίβα διαφορετικό. Τι είναι το ακρωνύμιο που έχουμε για την κατανόηση μια στοίβα; ΚΟΙΝΟ: Η τελευταία in, first out. JASON Hirschhorn: LIFO, νομίζω. Τελευταία in, first out. Έτσι είδαμε ένα παράδειγμα μιας στοίβας των δίσκων σε μια τραπεζαρία. Όποια και αν είναι δίσκος είναι στην κορυφή παίρνει επιβιβάζονται. Και στη συνέχεια, αν νέους δίσκους έρχονται σε, παίρνουν θέσει στην κορυφή. Και τότε ό, τι είναι στην top παίρνει επιβιβάζονται. Έτσι ώστε αυτές οι δίσκοι στο κάτω δύναμη μείνετε εκεί για λίγο. Σε αυτή την περίπτωση, πάλι, θα συντάξει αυτό. Πιέζουμε τη μία, έτσι ώστε ένα είναι πρώτο στη γραμμή. Και εμείς pop κάτι μακριά. Και υπάρχει μόνο ένα πράγμα εκεί, έτσι εμείς κινούμαστε 1 εδώ κάτω. Στη συνέχεια βάζουμε στις 2 και 3 και θα εμφανιστεί κάτι off. Αλλά και πάλι, δεδομένου ότι αυτό είναι μια ουρά - ή αυτό είναι μια στοίβα, και όχι - παίρνουμε ό, τι ήταν στην τελευταία. Ό, τι είναι στην τελευταία βγαίνει πρώτος. Και 3 είναι στην τελευταία. Έτσι βάζουμε το 3 εκεί κάτω, στη συνέχεια, βάζουμε σε ένα άλλο 3 και pop και πάλι κάτι. Τέλος, βάζουμε στο 4, 5, 6 και 7, και εδώ έχουμε ποπ. Και επειδή είναι μια στοίβα, παίρνουμε ό, τέθηκε στην τελευταία και να γράφουν ότι εδώ κάτω. Έτσι καταλήγουμε με 1, 3, 3, 7. Μήπως κάποιος έχει απορίες σχετικά με στοίβες ή ουρές, ή αυτό το παράδειγμα; OK. Ας πάμε πίσω στον κατάλογο των θεμάτων. Όχι με αυτόν τον τρόπο, με αυτόν τον τρόπο. Ποιες άλλες ερωτήσεις κάνουν οι άνθρωποι; ΚΟΙΝΟ: Δεν ξέρω πόσο σημαντικό Αυτό είναι, αλλά ήμουν συγχέεται με το διαφορά μεταξύ των διαφόρων τύπων γλώσσες όπως η σήμανση, καταρτίζονται, ερμηνεύεται. JASON Hirschhorn: Αυτό είναι μια καλή ερώτηση. Νομίζω ότι αυτό είναι αρκετά σημαντικό, οπότε ας πάμε πάνω γρήγορα. Οι μεγάλες γλώσσες που έχουμε δει μέχρι τώρα είναι C, PHP, JavaScript και, από την άποψη των γλωσσών προγραμματισμού. HTML, όπως αναφέρατε, δεν είναι μια γλώσσα προγραμματισμού. Είναι μια γλώσσα σήμανσης. Και στη συνέχεια έχουμε CSS, η οποία είναι επίσης δεν είναι μια γλώσσα προγραμματισμού. Έχουμε δει επίσης SQL, η οποία δεν είναι μια γλώσσα προγραμματισμού, είτε. Έτσι SQL σας επιτρέπει να γράψετε ερωτήματα για μια βάση δεδομένων. HTML είναι μια γλώσσα σήμανσης. Καθορίζει το πώς τα πράγματα είναι δομημένα. Και CSS σας επιτρέπει να φορμάρετε τα πράγματα. Αυτό είναι πιθανώς η έκταση για ό, τι πρέπει να ξέρετε για αυτά τα τρία. Αλλά είναι πιο ενδιαφέρον να φιγούρα τις διαφορές μεταξύ C, PHP, και JavaScript. Έτσι, μία από τις μεγαλύτερες διαφορές, όπως αναφέρατε, είναι το πώς θα είναι καταρτίζονται, ή ο, τιδήποτε το ισοδύναμο είναι. Έτσι, C καταρτίζεται. Θα τρέχει πάντα ένα compiler. Και τότε πού είναι τα λάθη σας όταν εκτελείτε το compiler C; Πού θα το δείξει Στο λάθη τον κωδικό σας; Πώς ξέρεις ότι υπάρχει μια σφάλμα στον κώδικά σας σε C; ΚΟΙΝΟ: Σας δείχνει στο τερματικό. JASON Hirschhorn: Σας δείχνει το τερματικό σταθμό, όπως είστε κατάρτιση. Και αν υπάρχουν λάθη, θα Δεν θα συγκεντρώσει πραγματικά. Έτσι, ξέρετε ότι υπάρχουν λάθη δεξιά μακριά, μπροστά από το χρόνο, προτού να τρέξουν ακόμη και τον κωδικό σας. Φυσικά, μπορείτε να εκτελέσετε τον κωδικό σας και να πάρει ένα σφάλμα κατάτμησης, αλλά αυτό ήταν πιθανώς επειδή κάνατε κάποια ανόητη λογική πράγμα. Αλλά ο κώδικας σας με τεχνικά όλα σωστά και θα μπορούσε να τρέξει. Έτσι κώδικα C παίρνει συγκεντρώνονται μπροστά από το χρόνο. Τι γίνεται με κώδικα PHP; Πού ήταν τα σφάλματα στον κώδικά σας PHP; Πώς ξέρατε ότι είχαν σφάλματα στον κώδικα της PHP σας; ΚΟΙΝΟ: Εκτέλεση του χρόνου; JASON Hirschhorn: Ναι, όταν θα το τρέξει, θα πρέπει να εκτελέσετε το PHP κώδικα στην πλάτη. Και τότε θα εμφανιστεί μια οθόνη. Μπορείτε να δείτε κάποια πράγματα στην κορυφή, αλλά τότε θα δείτε, όπως, ορισμένα πορτοκάλι, άσχημο πίνακα. Και θα σας δώσω έναν αριθμό γραμμής και ας πούμε, μπλα, μπλα, μπλα, αυτά τα πράγματα δεν λειτούργησε. Έτσι, PHP ερμηνεύεται γραμμή προς γραμμή και εκτελούνται στο διακομιστή. Και τότε το αποτέλεσμα είναι σταλεί σε σας. Μεγάλη. Εκτελούνται στο διακομιστή γραμμή προς γραμμή και στη συνέχεια αποστέλλονται σε εσάς. Και αν υπάρχει ένα λάθος, που θα στείλει Σας το σφάλμα, αλλά μπορεί να έχετε πάρει κάποια πράγματα μπροστά από το χρόνο. Έτσι, ορισμένα από αυτά μπορεί να έχουν εργαστεί, αλλά αργότερα, κάποια πράγματα μπορεί να μην έχει δεν λειτούργησε. Τι γίνεται με JavaScript; Πού είδες JavaScript λάθη; Στο p που 8, όταν έχεις ένα λάθος, πώς το ήξερες; Πού θα εμφανίζεται; ΚΟΙΝΟ: Στην κονσόλα, στο κάτω μέρος. JASON Hirschhorn: Στο κονσόλα, στο κάτω μέρος. Θα σας το δώσει, επίσης, αριθμό γραμμής, και θα εμφανιστούν στο κάτω μέρος. Και JavaScript δεν εκτελέστηκε στο διακομιστή. JavaScript στάλθηκε στον υπολογιστή σας, και στη συνέχεια, όταν ήρθε η ώρα για να τρέξει το JavaScript, η JavaScript ήταν τρέχει γραμμή προς γραμμή για το πελάτη, από την πλευρά σας. Δεν είναι ο server, η πλευρά του client. Και, ομοίως, ήταν τρέχουν ανά γραμμή. Και στη συνέχεια, όταν θα πάρετε ένα λάθος, θα εμφανιστούν στο κάτω μέρος. Ομοίως σε PHP, κάποιες από αυτές θα μπορούσε εκτελέσει, και στη συνέχεια μπορείτε να πάρετε μια σφάλμα αργότερα. Επίσης, ένα μικρό σε αντίθεση με PHP, εάν έχεις ένα σφάλμα JavaScript - λένε ότι δεν κάνει το σωστό κώδικα για ένα πλαίσιο ειδοποίησης - θα μπορούσε να συνεχίσει να τρέχει το πρόγραμμά σας. Το πλαίσιο ειδοποίησης δεν θα μπορούσε να λειτουργήσει, αλλά το πρόγραμμα σας θα είναι μια χαρά. Απλά ίσως ότι η λειτουργία θα αποτύχει. Έτσι, δεν υπάρχει κάποια από τα μεγαλύτερα διαφορά από την άποψη του πώς αυτά γλώσσες, ή πώς ο κώδικας προγραμματισμού που γράφετε είναι πραγματικά αξιολογούνται. Υπάρχουν επίσης και άλλες διαφορές στην όρους - τη μεγαλύτερη διαφορά έχουμε δει από την άποψη των μεταβλητών στις διάφορες γλώσσες. Έτσι, μπορεί κανείς να μου δώσει μια διαφορά μεταξύ των μεταβλητών στις τρεις γλώσσες; Ναι. ΚΟΙΝΟ: Στο C, είναι αυστηρά πληκτρολογήσει. Στις άλλες δύο, είναι χαλαρά πληκτρολογήσει. JASON Hirschhorn: Και Τι σημαίνει αυτό; ΚΟΙΝΟ: Ότι σε C, θα πρέπει να δηλώσουν ο τύπος της μεταβλητής όταν δηλώνετε τη μεταβλητή, όπως interbool ή char. JASON Hirschhorn: Εξαιρετική. Στο C, είχαμε πάντα να θέσει ένας τύπος μιας μεταβλητής. Και δεν θα μπορούσε να αναμειγνύεται πραγματικά τύπους. Δεν θα μπορούσε να κάνει έναν ακέραιο συν ένα string. Αλλά, όπως έχουμε δει σε αυτά τα άλλα γλώσσες, μπορείτε πραγματικά να ανακατεύετε διαφορετικούς τύπους, και ποτέ δεν έχετε πραγματικά να δώσει κάτι ένας τύπος, ποτέ. Έτσι, πώς ξέρουμε τα πράγματα είναι μεταβλητές σε PHP και JavaScript; ΚΟΙΝΟ: Στην PHP, αρχίζουν με το σύμβολο του δολαρίου. Στο JavaScript, όταν δηλώνετε τους, θα πρέπει να έχετε ένα μπαρ. JASON Hirschhorn: Σωστά. Έτσι, PHP, αρχίζουν με το σύμβολο του δολαρίου. Στο JavaScript, θα πρέπει να έχουν bar, αν και μερικές φορές δεν το κάνουν πραγματικά πρέπει να έχουν μπαρ. Αλλά αυτό είναι σωστό. Έτσι, αυτό είναι μια μεγάλη διαφορά μεταξύ των μεταβλητών. Νομίζω ότι αυτά είναι κατά πάσα πιθανότητα, από το κορυφή του κεφαλιού μου, τα δύο μεγαλύτερα διαφορές μεταξύ αυτών τρεις γλώσσες. Αλλά, ναι. ΚΟΙΝΟ: Και η εμβέλεια των μεταβλητών C περιορίζεται στα άγκιστρα, όπου οι άλλες, είναι ακριβώς όπως, πεθαίνει αν είναι μόνο μια λειτουργία, αλλά κατά τα άλλα, Ειναι για - JASON Hirschhorn: Σωστά. Έτσι, το πεδίο εφαρμογής είναι ελαφρώς διαφορετικό στη C. Όπως Θυμάστε, άγκιστρα ορίζουν το πεδίο εφαρμογής των μεταβλητών. Έτσι, αν ορίστηκε στο εσωτερικό ενός αν κατάσταση, η οποία είναι μέσα σε ένα βρόχο, η μεταβλητή υπάρχει μόνο εκεί. Στο JavaScript, αν μια μεταβλητή ορίζεται μέσα σε μια κατάσταση, αν - μέσα σε ένα βρόχο - θα υπάρχουν για ότι η λειτουργία, αλλά δεν θα υπάρχει έξω από τη λειτουργία αυτή. Έτσι, το πεδίο εφαρμογής είναι λίγο πιο ευέλικτη σε JavaScript και PHP. Αυτό απαντήσει στην ερώτηση; OK, οποιεσδήποτε άλλες ερωτήσεις; Μπορούμε να κάνουμε τέσσερα λεπτά ερωτήσεις, τότε θα μεταβείτε σε κωδικοποίηση. ΚΟΙΝΟ: Μπορούμε να πάμε σε Ajax και να μιλήσουμε για το τι είναι αυτό; JASON Hirschhorn: Συζήτηση σε AVI μετά. Ζήτησε από αυτή την ερώτηση νωρίτερα. ΚΟΙΝΟ: Λάθος μου. JASON Hirschhorn: Μην ανησυχείτε. ΚΟΙΝΟ: Τι ακριβώς είναι το JSON; JASON Hirschhorn: Τι είναι το JSON; Ποια είναι η ερώτησή σας; ΚΟΙΝΟ: Απλά πολύ γρήγορα, η διαφορά μεταξύ εκτύπωσης και ηχώ σε PHP. JASON Hirschhorn: Γιατί δεν το google η διαφορά μεταξύ της εκτύπωσης και ηχώ; Μικρή διαφορά. Δεν είναι ότι μεγάλο ζήτημα. Αλλά θα πρέπει να το google σίγουρα, και αυτό θα σας δώσει μια καλή απάντηση. JSON, πιθανώς μεγαλύτερο από μια συμφωνία. Βάσεις για JavaScript Object Notation. Και όταν έχουμε δει JSON που χρησιμοποιείται; Όταν έχετε δει - γιατί ξέρεις καν τη λέξη JSON; Όταν το έχετε δει; ΚΟΙΝΟ: Όταν παίρναμε τιμές των μετοχών για τη χρηματοδότηση. JASON Hirschhorn: Ώστε είδες όταν ήταν να πάρει τιμές των μετοχών για τη χρηματοδότηση. Και γιατί δεν το βλέπετε; ΚΟΙΝΟ: Όταν ήμασταν ανάκτηση όλες οι πληροφορίες που ήρθε σε αυτή τη μορφή. JASON Hirschhorn: Έτσι, θα πάρετε - ναι. Προχωρήστε. ΚΟΙΝΟ: [δεν ακούγεται] πληροφορίες από ένα αντικείμενο; JASON Hirschhorn: Και τα δύο βάλει μαζί είναι η απάντηση ψάχνουμε. Θέλετε πληροφορίες από αυτή η άλλη ιστοσελίδα. Και θα ήθελα να ελπίζω ότι όταν είστε να πάρει αυτές τις πληροφορίες, θα είναι παρουσιάζεται σε σας σε κάποιο είδος της τυποποιημένη μορφή. Όλοι είναι πιθανότατα εξοικειωμένοι με τιμές διαχωρισμένες με κόμμα. Μπορείτε να εξάγετε ένα υπολογιστικό φύλλο Excel ή κάθε είδους υπολογιστικό φύλλο ως λίστα τιμών διαχωρισμένων με κόμματα. Και τα κόμματα χωρίζουν όλα Τα διαφορετικά πεδία. JavaScript Object Notation - JSON - είναι ένας άλλος τύπος τυποποιημένων διάταξη των πραγμάτων. Και αυτό είναι συχνά το πώς θα ανακτήσετε πληροφορίες από τα ερωτήματα μας Ajax. Έτσι, σε αυτή την περίπτωση, το πήραμε από την ιστοσελίδα της Yahoo. Θα επιστρέψουν τα πράγματα στην μας σε ένα αντικείμενο JSON. Και τότε ξέρουμε, γιατί είναι ένα πρότυπο, τι είναι πρόκειται να μοιάσει. Έτσι μπορούμε να επαναλάβει μέσω της συστοιχίας ότι επέστρεψε για να μας τη συστοιχία αντικείμενα που επιστρέφονται σε μας. Μάλλον εμείς πρέπει να γνωρίζετε τα κλειδιά, αλλά γενικά να σας δώσει τεκμηρίωση στην ιστοσελίδα όταν είστε γοητευτικός κάποια JSON σημειογραφία για αυτούς. Ομοίως, μπορείτε να JSON κωδικοποιούν ένα αντικείμενο. Έτσι, υπάρχει μια λειτουργία JSON υπογραμμίζουν κωδικοποιούν. Και έτσι μπορείτε να πάρετε ένα αντικείμενο που που έχετε δημιουργήσει, JSON να κωδικοποιούν, και να το δώσετε σε κάτι αλλιώς, αν θέλετε να. Και JSON αποκωδικοποίησης υπάρχει και για Ανάλογο σκοπό, ή για το αντίθετο σκοπό. ΚΟΙΝΟ: Μήπως θα πρέπει να γνωρίζετε κωδικοποίησης για πίνακες κατακερματισμού και προσπαθεί; Ή μήπως απλά πρέπει να καταλάβουν πώς συνηθίσει, εννοιολογικά; JASON Hirschhorn: Λοιπόν, σηκώστε το χέρι σας αν κάνατε ένα πίνακα κατακερματισμού για p σετ 4 με έναν κατάλογο σύνδεσμο. Ή σ. σετ 5. Έτσι, αυτό ήταν μια μεγάλη πλειοψηφία των ανθρώπων. P σετ 5, 6, ποιος ξέρει. Πριν από πολύ καιρό. Έτσι, η συντριπτική πλειοψηφία των κάνατε hash πίνακες με σύνδεση καταλόγους. Και επειδή αυτό είναι ίσως το πιο κοινή προσέγγιση, και επειδή περάσαμε πολύ χρόνο να κάνει σύνδεση καταλόγους και hash πίνακες, θα πρέπει πιθανώς να είναι αρκετά εξοικειωμένοι με το πώς να κωδικοποιήσει ένας πίνακας κατακερματισμού και ένας κατάλογος σύνδεσμο. Και αν νομίζετε ότι πίσω σε αυτό το πρόβλημα οριστεί, δεν ήταν πραγματικά τόσο σκληρά όσο θα αναμενόταν. Και υπήρχε μια πολύ λιγότερο Κωδικός ό, τι αναμενόταν. Θα έλεγα ότι θα πρέπει να γνωρίζουν πώς να κωδικοποιεί ένα πίνακα κατακερματισμού ή μια λίστα σύνδεσμο. Όχι ότι θα ήθελα να σας ζητηθεί ότι, κατ 'ανάγκην, αλλά θα πρέπει να ασφαλώς γνωρίζετε ότι. Επίσης, αν κοιτάξετε μέσα από το παρελθόν κουίζ, υπήρξαν πολλές ερωτήσεις σχετικά με τη σύνταξη λειτουργίες της καταλόγους σύνδεσμο ή διπλά συνδεδεμένες λίστες. Αυτό φαίνεται να καταλήξουμε κάθε χρόνο. Δικαίωμα τοποθετήστε σε έναν κατάλογο σύνδεσμο, το δικαίωμα διαγράψετε από τη λίστα συνδέσμου, δεξιά τοποθετήστε για μια διπλά συνδεδεμένη λίστα, κ.λπ.. Έτσι ώστε, αισθάνομαι πολύ άνετα λέγοντας ότι θα πρέπει να γνωρίζετε ότι. Για δοκιμή, θα έλεγα ότι πρέπει να σίγουρα ξέρουν πώς λειτουργεί, και ίσως δώσει κάποια ψευδοκώδικα για το πώς να κωδικοποιήσει και το έστησαν. Αλλά δεν θα ήταν το χειρότερο πράγμα ο κόσμος, αν δεν ξέρετε πώς να κωδικοποιούν την Γ. Θα ήταν μεγάλη, αν ήξερε πώς να κώδικα σε C, αλλά νομίζω πιθανώς pseudocode για μια δοκιμή θα είναι το μεγαλύτερο ποσό που θα χρειαστεί να ξέρετε για μια δοκιμή. ΚΟΙΝΟ: Extra πίστωση; JASON Hirschhorn: Και ίδιο με, αν πηγαίνετε σε δυαδικά δέντρα αναζήτησης, ίσως Πρέπει - και έχετε δει στο παρελθόν, έχουμε κάνει πολλά - ξέρετε πώς δυαδικό δένδρο αναζήτησης λειτουργεί. Θα πρέπει πιθανώς να είναι σε θέση να δημιουργήσετε ένα εκ των ψευδο-κώδικα. Αλλά επειδή η συντριπτική πλειοψηφία των ανθρώπων δεν το κάνουμε αυτό με το πρόβλημα σύνολο, θα έλεγα ότι είναι μάλλον λιγότερο σημαντικό ότι ξέρετε πώς να κώδικα και να δημιουργήσει ένα δέντρο σαν αυτό. Οποιεσδήποτε άλλες ερωτήσεις; Επίσης, μπορούμε να τους ζητήσει σε όλη καθώς περνάμε μέσα από κάποια προβλήματα. Εντάξει, θα πάμε για να προχωρήσουμε. Περάστε αυτό το slide για τώρα. Μιλώντας για τα δέντρα, που είναι η πρώτη ερώτηση που έχω για σας παιδιά. Επειδή αυτό είναι ένα πρόβλημα. Θα έλεγα ότι είναι πολύ πιθανό ότι θα πάρετε ένα πρόβλημα σαν αυτό σε ένα κουίζ σας ζητώντας σας να κωδικοποιήσει κάποιο είδος εισαγωγής, διαγραφή, αναζήτηση, για έναν τύπο της δομής των δεδομένων που έχουμε δει. Αυτό έρχεται κάθε χρόνο και περάσαμε πολύ χρόνο το δεύτερο ήμισυ του εν λόγω εξάμηνο που πηγαίνει πέρα ​​από αυτούς τους τύπους δεδομένων. Έτσι, αυτή τη στιγμή, έχω ορίσει ένα κόμβο σε ένα δυαδικό δένδρο αναζήτησης. Και αυτό που θα ήθελα να κάνουμε είναι να δοθεί ένα δυαδικό δέντρο αναζήτησης που ξεκινά σε αυτό το ριζικό κόμβο αστέρι, την ολοκλήρωση της εφαρμογή της παρακάτω λειτουργίας, η οποία συμβαίνει να είναι μια λειτουργία της αναζήτησης. Και το κάνουμε με και χωρίς επαναλήψεις. Γι 'αυτό θέλω να γράψω δύο λειτουργίες. Ένα κάνουμε αυτό με αναδρομή, ένα κάνει αυτό χωρίς αναδρομή. Και μην υποθέσουμε ότι η root θα είναι μη μηδενική. Έτσι, ψάχνουμε για τον ακέραιο i στο το δέντρο ξεκινώντας από τη ρίζα, και χρειαζόμαστε να γράψω αυτό αναδρομικά και επαναληπτικά. Ναι. ΚΟΙΝΟ: Έτσι θέλετε να επιστρέψουμε αλήθεια αν το βρείτε, και false αν εμείς δεν το βρείτε. JASON Hirschhorn: Πώς το ήξερες; Πώς το ξέρεις αυτό; ΚΟΙΝΟ: ρωτούσα πρώτα, αλλά ήμουν υποθέτοντας, γιατί λέει bool σε η αρχή της λειτουργίας. JASON Hirschhorn: Σωστά. Λέει bool, γι 'αυτό δεν χρειάζεται καν να να σας πω τι περιμένω να επιστρέψετε γιατί λέει εκεί. Αλλά αυτό είναι σωστό. Επιστροφή, αληθής ή ψευδής. Έτσι, πριν ξεκινήσετε, θα ήθελα να συστήσω, αν δεν είστε εξοικειωμένοι με δυαδικά δέντρα αναζήτησης, γρήγορα σχέδιο μια εικόνα από αυτό για να πάρετε σας κατανόηση, σωστά. Αυτό θα σας βοηθήσει επίσης κατά τη σύνταξη κωδικό σας και τον έλεγχο. Και πάλι, μπορείτε επίσης δεν έχουν τόσο πολύ φορά στο κουίζ για να κάνει όλα τα πράγματα ότι σας ζητάμε να κάνετε. Έτσι, το γράψιμο κώδικα ψευδο είναι πολύ χρήσιμη. Και γενικά να παρέχει σχετικά με - αν ο ψευδοκώδικας είναι τέλεια σωστό, αυτό είναι γενικά 50% σε μια ερώτηση. Έτσι δεν είναι ένα σκληρό και απαράβατο κανόνα, αλλά αν απλά γράψετε ψευδοκώδικα και είναι σωστή, είναι γενικά 50%. Έτσι, θα σύστηνα πάντα - αν πιεστεί για το χρόνο, ή ακόμα και αν είστε απλά προσπαθώ να το καταλάβω - ξεκινώντας με το ψευδοκώδικα. Και τέλος, αν θα μπορούσατε να γράψετε αυτό όλα σε C, αυτό θα ήταν φανταστικό. Έτσι, ας ρίξουμε τρία λεπτά να εργαστούν σε αυτό το πρόγραμμα. Και τότε θα πρόκειται να γράψω pseudocode για μόνο μία φορά, και στη συνέχεια θα πάμε για να το κωδικό αναδρομικά και στη συνέχεια επαναληπτικά. Αν έχετε οποιεσδήποτε απορίες, μπορείτε δωρεάν σηκώστε το χέρι σας. Στην ευχάριστη θέση να περπατήσουν και να απαντήσει σε αυτά πριν αρχίσουμε ως ομάδα. Ας συνεχιστεί, και θα πάμε να pseudocode την αναδρομική εκδοχή της αυτό, και στη συνέχεια θα το κωδικοποιήσει. Έτσι, μια αναδρομική συνάρτηση χρειάζεται δύο πράγματα. Αυτό μπορεί να είναι μια ερώτηση που θα μπορούσε να ζητηθεί. Χρειάζεται δύο πράγματα. Ποιος μπορεί να σηκώσει το χέρι του και να μου πείτε ό, τι τα δύο πράγματα ένα αναδρομικό λειτουργία χρειάζεται; Εξ ορισμού έχει δύο πράγματα. Ποια είναι αυτά τα δύο πράγματα; Νέα χέρια. Ναι, Alden. ΚΟΙΝΟ: Γι 'αυτό και δεν είμαι ακριβώς σίγουρος αν αυτή είναι η ορολογία, αλλά - JASON Hirschhorn: Χαίρομαι είστε σηκώνοντας το χέρι σας. ΚΟΙΝΟ: Χρειάζεται μια βασική περίπτωση, και χρειάζεται ένα αναδρομικό βήμα. JASON Hirschhorn: Perfect. Χρειάζεται μια βασική περίπτωση και ένα αναδρομικό βήμα. Έτσι, αυτό είναι βασικό μας εδώ; ΚΟΙΝΟ: F ρίζα ισούται ισούται με null. Δυστυχώς, μόνο σε ψευδοκώδικα, αν είναι null. Αν η ρίζα είναι null. JASON Hirschhorn: Αν η ρίζα είναι null. Αυτό είναι εξαιρετικό. Αυτό είναι το βασικό μας. Γι 'αυτό θα πάμε να ελέγχει κάθε φορά. Και βασική περίπτωση είναι η το πρώτο πράγμα που κάνετε. Αν χτυπήσει το βασικό σενάριο, τελειώσατε. Τώρα χρειαζόμαστε αναδρομική κλήση μας, και εγώ έπαιρνα πρόθυμος να στοιχηματίσει χρειαζόμαστε ένα ζευγάρι αναδρομικές κλήσεις εδώ. Επειδή είναι ένα δέντρο, και εμείς θα μπορούσε να πάει με πολλούς τρόπους. Έτσι, αν ρίζα είναι null, είμαστε καλά. Τι προτείνετε; Και τώρα είμαι πρόκειται να αρχίσει να φωνάζει για τα παιδιά σας, γιατί ξέρω ότι εσείς Όλοι το ξέρουμε αυτό. Αλλά Annie, τι θα έπρεπε η επόμενη γραμμή είναι; Τι θα συμβεί αν το βρήκαμε; Τι πρέπει να κάνουμε; ΚΟΙΝΟ: Αν το βρήκαμε; JASON Hirschhorn: Ή τι πρέπει να είναι ότι - Δώσε μου το ψευδοκώδικα για την γραμμή όπου το βρήκαμε. ΚΟΙΝΟ: Αν i ισούται με i ρίζα; JASON Hirschhorn: Και τότε τι κάνουμε; ΚΟΙΝΟ: Επιστροφή αλήθεια. JASON Hirschhorn: Μεγάλη. Έτσι, αν το i είναι i - OH, όπου και αν ονομάζεται i και τα δύο. Αυτό γίνεται σύγχυση. Αλλά αν i είναι i επιστρέψει αλήθεια. Αυτό είναι ίσως το επόμενο πράγμα που πρέπει να κάνουμε. Έχει νόημα. Εντάξει, τώρα δεν έχουμε κάνει αναδρομικό μας καλέσει ακόμα, όμως, γιατί ένα αναδρομικό κλήση θα καλέσει και πάλι αυτή τη λειτουργία. Λοιπόν, τι θα πρέπει η επόμενη γραμμή ψευδοκώδικα είναι; Άννα. ΚΟΙΝΟ: Η αριστερή πλευρά. JASON Hirschhorn: Να είστε συγκεκριμένοι, όμως. Αυτό είναι ένα δυαδικό δένδρο αναζήτησης, έτσι ώστε ό, τι δεν ελέγχει την αριστερή πλευρά συνεπάγεται; ΚΟΙΝΟ: Έτσι κόμβο - Λυπάμαι, ρίζα. Και τότε βέλος αριστερά. Κόμβου, ο κόμβος, συγγνώμη. Δεν είμαι το διαβάζω σωστά. Λέγεται κόμβο, έτσι δεν είναι; JASON Hirschhorn: Θα ονομάζεται root σε αυτή τη λειτουργία, αλλά κάθε τρόπο. Η αριστερή πλευρά - Ναι; ΚΟΙΝΟ: Αν δεν είναι ίσο με i, τότε θα πάμε να καλέσετε η λειτουργία και πάλι; JASON Hirschhorn: Αυτό είναι σωστό. Αν δεν το κάνει ίσο i, θα πάμε να καλέσει ξανά τη λειτουργία. Αλλά ποια πλευρά του δέντρου πάμε για να καλέσετε τη συνάρτηση και πάλι; ΚΟΙΝΟ: Στην αριστερή πλευρά. JASON Hirschhorn: Δεν είμαστε πάντα πρόκειται να το ονομάσουμε το αριστερό, αν δεν είναι ίσο. ΚΟΙΝΟ: Συγγνώμη. Πρόσκληση στα δεξιά. JASON Hirschhorn: Θέλουμε να γνωρίζουμε Συγκεκριμένα, αν και - θυμηθείτε, σε μια δυαδικό δένδρο αναζήτησης, τα πάντα για να η αριστερή πλευρά είναι μικρότερη. Τα πάντα προς τα δεξιά πλευρά είναι μεγαλύτερη. Έτσι δεν είναι μόνο - ναι, προχωρήστε. ΚΟΙΝΟ: Αν είναι λιγότερο από ό, τι εγώ, τότε - αν είναι στο αριστερό - JASON Hirschhorn: Έτσι, αν RI είναι μικρότερη από - οπότε αν ο αριθμός μας είναι λιγότερο από ό, τι εγώ, τι πλευρά θέλουμε να πάμε στο; ΚΟΙΝΟ: Θέλουμε να πάμε στη δεξιά πλευρά. JASON Hirschhorn: Θέλουμε να πάμε - επιτρέψτε μου να επιστήσω ένα γρήγορο δέντρο. Αν αυτό είναι 5, αυτό θα είναι 3. Έτσι, αν ri είναι μικρότερος από πέντε, τι πλευρά θέλουμε να μεταβείτε στον ιστότοπο; ΚΟΙΝΟ: Συγγνώμη, τι; JASON Hirschhorn: αριθμός μας είναι μικρότερος από τον αριθμό είμαστε κοιτάζοντας τώρα. ΚΟΙΝΟ: Ω, τότε θέλουμε για να μεταβείτε στην αριστερή πλευρά. Ναι. Λυπάμαι. JASON Hirschhorn: Ακριβώς. Καμία ανησυχία. Στο δυαδικό δένδρο αναζήτησης, όλα χαμηλότερη είναι προς τα αριστερά, τόσο μεγαλύτερη είναι προς τα δεξιά. Έτσι, αν ο αριθμός μας είναι λιγότερο από ό, τι το i είμαστε έλεγχο - γιατί βλέπεις στην κόμβος, έχει ένα i - τότε θα θέλετε να πάτε προς τα αριστερά. Και αυτό είναι εύκολο. Τι είναι η άλλη γραμμή του ψευδοκώδικα Τώρα πρέπει να γράψουμε; Κάρλος; ΚΟΙΝΟ: Το ίδιο πράγμα, απλά μεταβείτε σε ένα μεγαλύτερο σήμα και να πάει προς τα δεξιά. JASON Hirschhorn: Μπορείς λένε ότι για μια ακόμη φορά; ΚΟΙΝΟ: Εάν ο αριθμός μας είναι μεγαλύτερη ό, τι εγώ, πάμε προς τα δεξιά. JASON Hirschhorn: Εξαιρετικό εργασία στο ψευδοκώδικα. Ας το κάνουμε αυτό σε πραγματικό κώδικα. Και πάλι, αυτό θα ψευδοκώδικα ίσως μπορείτε να πάρετε, γιατί είναι σωστή, 50% για το θέμα αυτό. Αλλά αυτό pseudocode μεταφράζεται επίσης ένα σε ένα, κατ 'ουσίαν, σε κώδικα. Έτσι, ας το κάνουμε αυτό σε C. Ποιος μπορεί να δώσει μένα η πρώτη γραμμή του κώδικα; Στην πραγματικότητα, πρώτα, πριν το κάνω ότι, επιτρέψτε μου να τραβήξει πάνω - ΚΟΙΝΟ: Έχω μια ερώτηση. Γιατί η εσοχή γραμμή που σου έδωσα; JASON Hirschhorn: Επειδή Εγώ δεν μπορούσα να γράψω. Δεν ξέρω. Έχεις δίκιο. Αυτή η γραμμή θα πρέπει να είναι εκεί. Εντάξει, εδώ είναι η λειτουργία μας. Και επιτρέψτε μου να τραβήξει πάνω, επίσης, ορισμό μας του κόμβου. Τι θα συμβεί αν δεν το κάναμε γράψτε typedef; Ξέρει κανείς; ΚΟΙΝΟ: Δεν θα καταρτίζει. JASON Hirschhorn: Θα ήταν μεταγλώττιση, ναι. ΚΟΙΝΟ: Θα ήταν απλώς να δηλώσει ένα παράδειγμα, αντί να το κάνουμε ένα νέο τύπο που θα μπορούσε να κηρύξει πολλαπλές περιπτώσεις; JASON Hirschhorn: Γι 'αυτό δεν θα ξέρετε - δεν θα απλά να δηλώσει έναν τύπο. Θα μπορούσε ακόμη να κάνει πολλά κόμβων. ΚΟΙΝΟ: Αλλά δεν θα πρέπει να γράψτε struct node κάθε φορά; JASON Hirschhorn: Αυτό είναι σωστό. Θα πρέπει να γράψετε struct node κάθε φορά, και όχι μόνο κόμβο. Αλλά με typedef, μπορείτε απλά γράψτε κόμβο κάθε φορά. Εντάξει, ο οποίος δεν έχει δώσει - ναι, Avica. ΚΟΙΝΟ: Αν η ρίζα είναι ίση μεταξύ ίσων null, επιστρέφει false. JASON Hirschhorn: Μεγάλη, και αυτό είναι βασική μας υπόθεση. Επόμενη γραμμή κώδικα. Κάποιος που δεν έχει δώσει με μια γραμμή κώδικα ακόμα; Ναι. ΚΟΙΝΟ: Root βέλος i είναι ίση ίση με i. Στη συνέχεια, επιστρέψτε αλήθεια. JASON Hirschhorn: Μεγάλη. Επόμενη γραμμή; Ναι. Κάποιος άλλος; Και τότε μπορείτε να πάει δίπλα. ΚΟΙΝΟ: Αλλιώς, αν ρίζα βέλος i είναι μικρότερο από επιστρέψω λειτουργία που ονομάζεται ρίζα find - JASON Hirschhorn: Συγγνώμη. ΚΟΙΝΟ: root Επιστροφή find επισημαίνει προς τα αριστερά κόμμα i. JASON Hirschhorn: Έτσι, αν ri είναι μεγαλύτερη από το πράγμα στο δέντρο, θέλουμε να πάμε προς τα αριστερά; ΚΟΙΝΟ: Όχι, είχα αυτό ενεργοποιημένο. JASON Hirschhorn: Ποιο από τα δύο; ΚΟΙΝΟ: Όχι, ναι. Έχω ένα λιγότερο από ό, τι υπογράψει εκεί. JASON Hirschhorn: Σωστά, αν είναι ri λιγότερο από ό, τι είναι στη ρίζα - τρέχουσα ρίζα μας - τότε θέλουν να πάνε προς τα αριστερά. Και ποια είναι η τελευταία γραμμή, έτσι; ΚΟΙΝΟ: Βασικά το ίδιο πράγμα, εκτός αλλάξετε το μεγαλύτερο ή ίση προς λιγότερο από ό, τι και αριστερά προς τα δεξιά. JASON Hirschhorn: Εξαιρετική. Μήπως κάποιος έχει απορίες γι 'αυτό; Έτσι, κάποια άλλα πράγματα που θα έχουν το σωστό είναι να θα μπορούσε να είναι η-ltiff. Μαντέψτε, από τεχνική άποψη, καμία από αυτές πραγματικά πρέπει επίσης να είναι-ltiff. Επίσης, είναι πιθανόν να υπάρχει μόνο μία περίπτωση εδώ κάτω. Έτσι, αυτό είναι πιθανότατα η τελευταία περίπτωση σας. Δεν χρειάζεται καν αυτό-ltiff. Αλλά μάλλον καλό να γράψω αυτό, να είμαστε σαφείς. Ναι. ΚΟΙΝΟ: Έτσι δεν νομίζω ότι το κουίζ - αν κάνουμε λάθη, για παράδειγμα, στο συντακτικό - λίγο συντακτικά λάθη - πώς αυτός να ληφθεί στο κουίζ; JASON Hirschhorn: Γενικά για το κουίζ, μικρά συντακτικά λάθη ή μικρές σφάλματα στυλ δεν χάνετε πόντους. Έτσι, αν έχετε ξεχάσει ένα ερωτηματικό εδώ, θα ήταν εντάξει. Εάν έχετε ξεχάσει να κλείσει την παρένθεση, ότι θα ήταν εντάξει. Τεράστια συντακτικά λάθη που αλλοιώνουν το λειτουργική έννοια του κωδικού σας δραματικά, μπορείτε να πάρετε απογειωθεί πόντους. Ή γενικώς, μόνο εσείς ταξινόμησης σχετικά με το εάν ή όχι λειτουργίες κώδικα, ακόμη και - Δεν σχεδιασμό του τόσο πολύ, και όχι το στυλ της. Ας τώρα να κωδικοποιεί μια επαναληπτική έκδοση find. Γι 'αυτό πρόκειται να είναι αρκετά παρόμοια, αλλά υπάρχουν σίγουρα πρόκειται να είναι ορισμένες βασικές διαφορές. Ωστόσο, ο ψευδοκώδικας μας μπορεί πιθανώς να πάτε - μπορούμε ακόμα να πάρει μια γραμμή από το pseudocode και να καταλάβω ποια είναι η γραμμή είναι σε αυτή την περίπτωση. Έτσι, σε μια επαναληπτική εκδοχή, τι νομίζεις, Τζούλια, θα πρέπει να είναι η πρώτη γραμμή; ΚΟΙΝΟ: Και πάλι, σε επαναληπτική boolean, θα πρέπει να δημιουργήσει ένα βρόχο, έτσι δεν είναι; JASON Hirschhorn: OK. ΚΟΙΝΟ: Έτσι, για παρόμοια, k, για το x ισούται με 0, x είναι μικρότερο από ό, τι εγώ. Ή όχι, το χ είναι μικρότερο από το μέγεθος του δέντρου. JASON Hirschhorn: Το δέντρο. Οπότε δεν ξέρουμε πραγματικά το μέγεθος της δέντρο, και εμείς δεν γνωρίζουμε πραγματικά για πόσες φορές μπορούμε να πάμε, έτσι τι είναι ένα διαφορετικού τύπου βρόχου που θα μπορούσαν να καλύτερα σε αυτή την περίπτωση; ΚΟΙΝΟ: Εάν άλλος; JASON Hirschhorn: Εάν άλλος δεν μπορεί να είναι ένας βρόχος. Έτσι τι είναι ένα είδος βρόχου μπορούμε ακριβώς πάει μέχρι κάποια υπόθεση ικανοποιείται; Ποιο είναι το μόνο άλλο είδος βρόχου σε C, εκτός από ένα βρόχο; ΚΟΙΝΟ: Ενώ. JASON Hirschhorn: Ενώ, ακριβώς. Σε ένα βρόχο while, δεν Πρέπει να ξέρετε πώς - ένας βρόχος while και την for loop μπορεί να κάνει η ακριβώς το ίδιο πράγμα, αλλά το ωραίο περίπου ένα βρόχο, ενώ είναι δεν χρειαζόμαστε να ξέρετε πόσο μεγάλο δέντρο μας. Έτσι θα πάμε για να πάει μέχρι τι; ΚΟΙΝΟ: Μέχρι να ισούται το μέγεθος της - JASON Hirschhorn: Λοιπόν, είναι πολύ παρόμοια με αναδρομική περίπτωσή μας. Έτσι - ΚΟΙΝΟ: Ενώ η ρίζα i δεν είναι ίσο με i. JASON Hirschhorn: Αυτό είναι πραγματικά κοντά. Ενώ η ρίζα i - ας το προσπαθήσουμε. Δεν νομίζω [δεν ακούγεται] όπου root i δεν είναι ίσο με i. Μπορεί να χρειαστεί να το αλλάξετε σε ένα μικρό bit, αλλά αυτό ακούγεται σαν να είναι αρκετά καλό, για τώρα. Γι 'αυτό και θα το κάνουμε αυτό. Επίσης, να θυμάστε, δεν μπορούμε να υποθέσουμε ανά ερώτηση. Δεν υποθέσουμε ότι η root θα είναι μη μηδενική. Λοιπόν, τι νομίζετε ότι η πολύ το πρώτο πράγμα που πρέπει να κάνουμε είναι; ΚΟΙΝΟ: Απλά κάνουν το ίδιο πράγμα όπως πριν. Αν η ρίζα είναι ίση μεταξύ ίσων null, επιστρέφει false. JASON Hirschhorn: Μεγάλη. Έτσι, θα μπορούσε να είναι null. Έτσι θέλουμε να απαλλαγούμε από αυτό αμέσως. Και μετά θα πάμε ελέγχου, εάν root i δεν είναι ίσο με i. Έτσι, ας πούμε πως ψάχνετε σε αυτό το δέντρο 3, ρίζα i δεν ίσο i, τώρα είμαστε σε βρόχο while μας. Τι θέλουμε να κάνουμε; Και πάλι, πρόκειται να είναι αρκετά παρόμοια με αναδρομική εκδοχή μας. Ναι. ΚΟΙΝΟ: Έτσι, θα θέλατε να μετακινηθείτε, ή συνεχίζω κάτω από το δέντρο για όσο διάστημα η ρίζα δεν είναι ίση με null. JASON Hirschhorn: Εφ 'όσον η root δεν είναι ίση με null; ΚΟΙΝΟ: Η παύλα ρίζα i δεν είναι ίση με null. Μόλις η ρίζα, ναι. Ως μια μακρά, όπως η ρίζα είναι δεν ισούται με μηδέν. JASON Hirschhorn: Έτσι θέλετε να αλλάξει αυτό στο root δεν ισούται με null; ΚΟΙΝΟ: Ναι. ΚΟΙΝΟ: Θα μπορούσαμε να συνδυάσουμε αυτά, σωστά; Δεν χρειαζόμαστε το αν, αρχικά. JASON Hirschhorn: Εντάξει, έτσι ώστε αν μην το - αν τα συνδυάσετε, έτσι θα πάμε να κάνουμε ενώ η ρίζα δεν είναι ίσο με null, και εάν η ρίζα συμβαίνει να είναι μηδενική κατά τη αρχίζουν, τι κάνουμε εμείς εδώ κάτω; ΚΟΙΝΟ: Επιστροφή ψευδείς. JASON Hirschhorn: Μεγάλη. Έτσι, και οι δύο τρόποι πιθανώς Θα έχουν εργαστεί. Αυτό είναι ένα διαφορετικό τρόπο, και αυτό συνδυάζει. Αλλά και πάλι, αν το έκανες ή τον άλλο τρόπο, είμαστε Δεν πρόκειται να απογειωθεί σχεδιασμό επισημαίνει στο κουίζ. Αλλά αυτό φαίνεται καλό. Έτσι, ενώ η ρίζα δεν είναι ίσο με null, ποια είναι η πρώτη πράγμα που θέλετε να ελέγξετε; Κάποιος άλλος; Null, ποιο είναι το πρώτο πράγμα; ΚΟΙΝΟ: Αν ri είναι μικρότερη από - Ω, υποθέτω, αν έχουμε ήδη βρήκε στη ρίζα. Έτσι, αν ρίζα βέλος i είναι ίσο με το i - JASON Hirschhorn: Συγγνώμη; ΚΟΙΝΟ: Αν η ρίζα βέλος i ισούται ισούται με i - JASON Hirschhorn: Τι πρέπει να κάνουμε; ΚΟΙΝΟ: Επιστροφή αλήθεια. JASON Hirschhorn: Μεγάλη. Και τι γίνεται στη συνέχεια; Jeff, ποια είναι η επόμενη γραμμή του κώδικα; ΚΟΙΝΟ: Αν i είναι μικρότερο από ρίζα βέλος i, τότε ισούται με ρίζα ρίζα βέλος αριστερά. JASON Hirschhorn: ισούται Root ρίζα βέλος αριστερά. Έτσι, αυτό είναι ίσως το μεγαλύτερο διαφορά εδώ σε αυτή την επαναληπτική έκδοση, σε αντίθεση με το αναδρομική εκδοχή. Η αναδρομική εκδοχή, εμείς καλέστε ξανά τη λειτουργία. Θα πρέπει να την ενημέρωση του root όταν αυτό καλούμε τη νέα λειτουργία. Εδώ δεν είμαστε καλώντας μια νέα λειτουργία. Είμαστε απλά ενημέρωση ρίζα σε αυτή τη λειτουργία. Αυτό είναι εξαιρετικό. Και ποια είναι η τελευταία γραμμή του κώδικα; Ναι, Mario; ΚΟΙΝΟ: Else ισούται root ρίζα βέλος δεξιά. JASON Hirschhorn: Συγγνώμη; Ισούται Root: ΚΟΙΝΟ ρίζα βέλος δεξιά. JASON Hirschhorn: Θα μπορούσατε επίσης να γράψει κάτι σαν αυτό; ΚΟΙΝΟ: Δεν έχω ιδέα. JASON Hirschhorn: Δεν μπορείς. Δεν μπορείτε να κάνετε πλέον ίσων. Εντάξει, έτσι αυτό φαίνεται καλό. Γιατί δεν μπορούμε απλά να κάνουμε ότι για να το καθαρίσει. Αυτό φαίνεται μεγάλη, και αυτό θα μπορούσε να λειτουργήσει. Και θα ξεσπάσει. Αν η ρίζα αριστερά ήταν μηδενική ή ρίζα δικαιώματος ήταν μηδενική, θα έρθει εδώ. Root θα είναι ίση με null. Είχαμε ξεφύγει από βρόχο μας, και εμείς θα επιστρέψει false. Έτσι, όταν έχουμε ξεφύγει από το βρόχου, θα επιστρέψει false. Και πάλι, το ένα βρόχο, ενώ ήταν τέλεια εδώ γιατί δεν ξέρουμε πώς μεγάλο δέντρο μας. Προσπαθήσαμε να γράψει ο βρόχος for, αλλά εμείς συνειδητοποίησε έχετε να καταλάβω πώς μεγάλο είναι μπροστά από το χρόνο. Ναι. ΚΟΙΝΟ: Αν αυτό δεν ήταν ένα δυαδικό δένδρο αναζήτησης, θα ήταν πραγματική μαθηματικά-y για να το γράψω επαναληπτικά, έτσι δεν είναι; Όπως, αν ήταν ένα δέντρο, αλλά όχι απαραίτητα - οπότε δεν ήταν όλα μικρότερα στα αριστερά, και όλα τα μεγαλύτερα στα δεξιά. Θα ήταν πραγματικά δύσκολο για να μετακινηθείτε πάνω, σωστά; Εμείς θα πρέπει να σώσει ό, τι ήταν προηγουμένως σχετικά με το δέντρο και θα πάνε πίσω, και τέτοια πράγματα. JASON Hirschhorn: Αν δεν ήταν ένα δυαδικό δένδρο αναζήτησης, αν ήταν μόνο ένα δέντρο και τα πράγματα δεν ήταν ταξινομούνται σαν αυτό - και συνειδητοποιήσαμε νωρίτερα, όταν η Άννα μας βοηθούσε ότι καθιστά ταξινομημένη μας βοηθά πολύ - θα πρέπει να, ναι, πάντα να αποθηκεύσετε όπου ήταν προηγουμένως. Αλλά θα μπορούσαν να υπάρχουν πολλά όπου ήμασταν previouslys. Θα μπορούσαν να υπάρχουν πολλοί κόμβοι πατέρες. Πιθανώς ο καλύτερος τρόπος για να γίνει αυτό θα είναι να συνεχίσουμε να πιέζουμε τα πράγματα σε κάποια το είδος της καπνοδόχου ή ουρά. Ποτέ δεν θα πρέπει να τον κωδικό αυτό επειδή είναι ένα δύσκολο πρόβλημα. Αλλά να σας ωθήσει κάποια πράγματα σε μια στοίβα ή ουρά και στη συνέχεια να σκάσει τους μακριά, και στη συνέχεια να αξιολογήσουν τους. Και έπειτα, έχουν κάποιο άλλο πράγμα, όπου είστε πραγματικά βάζοντας τους κόμβους, και στη συνέχεια να δημιουργήσετε ότι, και στη συνέχεια αναζήτηση μέσα από αυτό. Αυτό θα μπορούσε να είναι ο καλύτερος τρόπος για να το κάνει. OK, οποιεσδήποτε ερωτήσεις σχετικά με αυτό το πρόβλημα; ΚΟΙΝΟ: Πρόκειται για μια σχετική σημείωση. Θα πρέπει να συγκρίνουμε τους χρόνους λειτουργίας για πίνακες κατακερματισμού, δυαδική δένδρα αναζήτησης, κ.λπ.; JASON Hirschhorn: Πιθανώς. Οπότε ας το κάνουμε αυτό πολύ γρήγορα. Εκτέλεση του χρόνου για τον πίνακα hash - ποιες είναι οι άλλοι; Δυαδικό δέντρο; ΚΟΙΝΟ: κατάλογοι συνδέσεων. JASON Hirschhorn: Εντάξει, ας κάνουμε ένθετο. Ποια είναι η μεγάλη O ενθέτου σε ένα πίνακα κατακερματισμού; Ποιες είναι οι παραδοχές θέλετε να κάνετε; ΚΟΙΝΟ: Είσαι εισαγωγή κατά τη ξεκινώντας από τη λίστα συνδέσμου. JASON Hirschhorn: Πιθανότατα η πρώτη υπόθεση είναι ότι δεν υπάρχουν συγκρούσεις. Αν δεν υπάρχουν συγκρούσεις, τότε η χρονική στιγμή της εισαγωγής είναι ένα. Εάν υπάρχουν συγκρούσεις, και να είστε κάνει Ξεχωριστές αλυσίδες και εισάγοντας στην αρχή της λίστας συνδέσμου, τότε ένθεση είναι επίσης σταθερή. Αν κάνεις ένα πίνακα κατακερματισμού, αλλά θα έχουν μια διαφορετική μέθοδος αντιμετώπισης με συγκρούσεις, τι είναι μια διαφορετική μέθοδο; Τι είναι μια διαφορετική μέθοδο για την αντιμετώπιση των Σύγκρουση σε έναν πίνακα κατακερματισμού; ΚΟΙΝΟ: Γραμμικός προγραμματισμός. JASON Hirschhorn: Γραμμικός προγραμματισμός. Έτσι θα πάμε για να συνεχίσετε να ψάχνετε για το επόμενο ανοικτό σημείο. Αυτό δεν είναι σταθερή χρονική στιγμή της εισαγωγής. Θα μπορούσατε να πρέπει να περάσουν ολόκληρο τον πίνακα, έτσι ώστε θα μπορούσε να είναι μεγάλη O κ. Ναι. ΚΟΙΝΟ: Διαφορετικά απλά αλυσιδωτή σύνδεση; JASON Hirschhorn: Κάναμε Ξεχωριστές αλυσίδες. Αυτή ήταν η πρώτη. Αυτό είναι ό, τι ο κατάλογος σύνδεσμο. Το φανταχτερό όνομα είναι Ξεχωριστές αλυσίδες. Θα μπορούσε να είναι οποιοσδήποτε τύπος δομής λίστας τυχαίνει να κάνουμε στη λίστα σύνδεσμο. Έτσι και πάλι, η εισαγωγή σε ένα πίνακα κατακερματισμού θα μπορούσε να είναι σταθερό χρόνο. Τι γίνεται με την εισαγωγή σε μια ουρά στοίβαξης; ΚΟΙΝΟ: Δεν είναι σταθερή; JASON Hirschhorn: Είναι σταθερό χρόνο. Μπορείτε απλά να το πιέζετε. OK. Η εισαγωγή, ποιες ήταν οι άλλες είναι αυτές; Σε μια δοκιμή; Ποια είναι η μεγάλη O εισαγωγής σε μια δοκιμή; ΚΟΙΝΟ: Μήκος είναι σταθερή. Μήκος του μακρύτερου - το μήκος της λέξης είστε εισαγωγή. JASON Hirschhorn: Συγγνώμη; Περίμενε, οπότε τι άκουσα; Είπατε - τι είπες; Ποια ήταν η απάντησή σας, Μάρκους; ΚΟΙΝΟ: Το μήκος της λέξης είστε εισάγοντας χαρακτήρες, υποθέτοντας ότι είναι μια δοκιμή του χαρακτήρα. JASON Hirschhorn: Εντάξει, έτσι ώστε το μήκος της λέξης. Θα κάνει την παραδοχή ότι είναι μια σειρά χαρακτήρων. Είπατε κάτι διαφορετικό, όμως. Είπατε μήκος της μεγαλύτερης λέξης. ΚΟΙΝΟ: Αυτό είναι μόνο σταθερή, έτσι δεν είναι; JASON Hirschhorn: Γιατί θα να είναι σταθερή; ΚΟΙΝΟ: Όπως, αν χρησιμοποιείτε μεγάλη O σημειογραφία, τότε δεν διαφέρει ανάλογα με σχετικά με τον αριθμό των πραγμάτων που είναι ήδη στην προσπάθεια. JASON Hirschhorn: Γι 'αυτό και θα λένε ότι είναι σταθερό χρόνο. Είναι σταθερή εισαγωγή, και αυτό είναι επειδή αυτή η ιδέα - πούμε ότι έχουμε μια λέξη που είναι 45, ή μια λέξη που είναι 60, ότι έχει ένα σταθερό αριθμό. Και θα ήταν απλώς να εισαχθεί σε σταθερό χρόνο. Στην πράξη όμως, δεν θα ήταν, προφανώς, να συμβεί σε ένα χιλιοστό του δευτερολέπτου, για παράδειγμα. Αλλά θα λέγαμε μεγάλο O είναι σταθερά για μια δοκιμή. Και αυτός είναι ένας από τους μεγαλύτερα πλεονεκτήματα. Τι γίνεται με την εισαγωγή σε μια λίστα με σύνδεση; Απλά μια γενική, ταξινομημένη λίστα σύνδεση; Ναι. ΚΟΙΝΟ: Είχα μια ερώτηση. Σχετικά με τη δοκιμή, θα μπορούν ποτέ να μας το ζητήσετε χρονική στιγμή της εισαγωγής που είναι τέσσερα βήματα, ή κάτι άλλο; Ή μήπως είναι απλά - όταν λένε ότι ο χρόνος εισαγωγής είναι μία, αυτό σημαίνει ότι μόνο σταθερό χρόνο; JASON Hirschhorn: Ναι, θα ρωτά πάντα, είναι μεγάλο O κ; O Big του log n; Ν τετράγωνο σταθερή. Αυτά είναι πραγματικά το μόνο αυτά που πρέπει να ξέρετε. Τι γίνεται με την εισαγωγή σε ταξινομημένη λίστα σύνδεση; ΚΟΙΝΟ: Είχα μια ερώτηση - μια ερώτηση - JASON Hirschhorn: Ποια είναι η απάντηση στο ερώτημα αυτό, όμως; ΚΟΙΝΟ: Περιμένετε, τι ρώτησες; JASON Hirschhorn: Ποια είναι η μεγάλη του O εισαγωγή σε μια ταξινομημένη λίστα σύνδεση; ΚΟΙΝΟ: One; Χωρίς αναμονή, αναμονή Όχι, n. JASON Hirschhorn: N. Εκτός ο κατάλογος σύνδεσμο. Και ποια ήταν η ερώτησή σας; ΚΟΙΝΟ: Έτσι θα γράψω o του k ή o 1 για το - JASON Hirschhorn: Αχ. Θα ήθελα να γράψω o 1, κατά πάσα πιθανότητα. Υπήρχε μία άλλη δομή δεδομένων ότι θα ήταν καλό. Δέντρο, δυαδικό δένδρο αναζήτησης. Τι είναι η εισαγωγή σε ένα δυαδικό δέντρο αναζήτησης; ΚΟΙΝΟ: Είσοδος. JASON Hirschhorn: Λοιπόν, ποιο είναι το χειρότερο περίπτωση σε ένα δυαδικό δένδρο αναζήτησης; Έτσι, αν τυχαίνει να ξεκινήσει στις 5, και κάθε αριθμός είναι μεγαλύτερος από 5, τότε έχουμε 5, 7, 9, 11, κ.λπ.. Σε αυτή την περίπτωση, είναι ουσιαστικά μόνο ένα σύνδεσμο λίστα, και θα πρέπει να εισάγετε όλες τις ο τρόπος στο τέλος. Γι 'αυτό είναι μεγάλη O κ. Αυτό θα μπορούσε να είναι χειρότερη περίπτωση μας σε ένα δυαδικό δένδρο αναζήτησης. Προφανώς, εσείς ποτέ δεν θα κατασκευάσει ένα δυαδικό δένδρο αναζήτησης με 5 στο μέση, γνωρίζοντας 5 θα είναι το χαμηλότερο αριθμό. Αλλά θα μπορούσε να είναι, αν είστε ξεκινώντας από το μηδέν. Οποιεσδήποτε ερωτήσεις σχετικά με αυτό πριν περάσουμε σε ένα άλλο θέμα; Αυτό ήταν μια καλή ερώτηση. Θα ήθελα να γνωρίζετε το μεγάλο Ξ - ΚΟΙΝΟ: Τι γίνεται με την αναζήτηση για εκείνα τα τέσσερα; JASON Hirschhorn: Σίγουρα εμείς έκανε αναζήτηση και την ταξινόμηση. Κάναμε όλα αυτά τα αλγόριθμους, σωστά. Περιμένετε, ήταν ότι για Quiz 1; Ήταν που καλύπτονται - δεν έχετε ήδη ότι ερώτηση σχετικά με Quiz 1; Η μεγάλη O χρόνου εκτέλεσης της δυαδικής αναζήτησης, ταξινόμηση με εισαγωγή, bubble sort; ΚΟΙΝΟ: Ναι. JASON Hirschhorn: Αν είχατε ότι ερώτηση σχετικά με Quiz 0, οι πιθανότητες είναι εσείς δεν θα πάρετε την ίδια ακριβώς ερώτηση σχετικά Quiz 1. Θα μπορούσε να είναι ακόμα καλό να γνωρίζουμε εκείνες. Θα πρέπει να ξέρετε ελπίζουμε gh ήδη. Αλλά και άλλες λογαριθμική runtimes είναι ίσως καλό να γνωρίζουμε. Πράγματα που δεν καλύφθηκαν στις Quiz 0. Όπως σύνολο των φορέων για αυτά αφηρημένους τύπους δεδομένων. Εντάξει, ας προχωρήσουμε. Αυτό και μόνο θα πρέπει να είναι αρκετά γρήγορη. Και αυτή είναι μια νέα γλώσσα δεν έχουμε κωδικοποιούνται πράγματι πριν. Αυτό είναι ένα ερώτημα που ζητά να κώδικα σε PHP. Έτσι, θεωρούν την PHP πίνακα παρακάτω. Γράψτε PHP ή / και HTML κώδικες έτσι ώστε να εξάγει ένα πίνακα με δύο στήλες με TFs τα ονόματα και τα σπίτια. Ποτέ δεν έχω κάνει πριν από αυτό, αυτό το συγκεκριμένο πρόβλημα. Αλλά αυτό θα πρέπει να είναι πολύ εξοικειωμένοι με τι κάνατε στο πρόβλημα που 7. Γι 'αυτό και θα ήταν πρόθυμος να στοιχηματίσει θα ζήτησε να κωδικοποιήσει κάτι σε PHP που είναι πολύ παρόμοιο με αυτό που έκανε στο πρόβλημα που 7. Πρώτον, array δεν είναι ότι οι συγκεκριμένες. Τι είδους του πίνακα είναι αυτό; ΚΟΙΝΟ: Συσχετιστική. JASON Hirschhorn: Είναι ένα associative array. Και ποια είναι η διαφορά ανάμεσα σε ένα associative array και ένα αντικείμενο; ΚΟΙΝΟ: Μια σειρά αντικείμενο έχει ένα δείκτη ακεραίων, και ένα associative array είναι ένας δείκτης μιας συμβολοσειράς, ή κάτι τέτοιο. JASON Hirschhorn: Έτσι, μια σειρά από αντικείμενα θα έχουν δείκτες ακέραιοι, αλλά ένα αντικείμενο έχει πεδία. Έχει αυτά τα πεδία, όπως τα ονόματα το όνομα, το σπίτι, φοιτητής. Έχετε μια ιδέα; ΚΟΙΝΟ: Λοιπόν, συνειρμική πίνακας είναι σε PHP, έτσι δεν είναι; Και το αντικείμενο είναι σε JavaScript; JASON Hirschhorn: Ειλικρινά, δεν υπάρχει πραγματική διαφορά μεταξύ των δύο. Και οι δύο έχουν χορδές, όπως τα κλειδιά, και μπορεί να έχουν ουσιαστικά τίποτα ως τιμή. Διαφορετικές γλώσσες τηλεφωνήσετε πράγμα associative array, ένα πράγμα ένα αντικείμενο. Οπότε, ειλικρινά, δεν υπάρχει πραγματική διαφορά, αλλά υπάρχει σίγουρα κάποια συντακτικές διαφορές μεταξύ των δύο. Ναι. ΚΟΙΝΟ: Έτσι είναι αντικείμενο κωδικοποιείται επίσης κάτω η κουκούλα ως πίνακα κατακερματισμού, τότε; JASON Hirschhorn: Τι να κάνετε Δηλαδή, κωδικοποιημένα κάτω από την κουκούλα; ΚΟΙΝΟ: Μας είπαν ότι η συνειρμική συστοιχία ήταν τεχνικά ένα hash πίνακα. Έτσι είναι το αντικείμενο και τεχνικά ένα πίνακα κατακερματισμού; JASON Hirschhorn: Δεν πάω να απαντήσει σε αυτό το ερώτημα. Θα επικοινωνήσουμε μαζί σας σχετικά με αυτό. Αλλά εγώ δεν θα σκεφτώ ούτε αυτών έτσι. Όμως, σε καμία περίπτωση, associative array και αντικείμενο, σε γενικές γραμμές, οι άνθρωποι χρησιμοποιούν εκείνες όρους εναλλακτικά. Στην περίπτωση αυτή, το δροσερό μέρος είναι ότι μπορείτε να χρησιμοποιήσετε τα πλήκτρα. Χορδές όπως κλειδιά, παρά μόνο απλούς αριθμούς. Έτσι έχω μιλήσει για αυτό για λίγο. Ας ελπίσουμε ότι, μερικοί άνθρωποι έχουν πάρει ξεκίνησε για το θέμα αυτό. Εμείς πάμε για να γράψετε κάποιο PHP και HTML κώδικα, έτσι ώστε να έχουμε ένα δύο-στηλών πίνακας με τα ονόματα TFs και σπίτια. Εντάξει, θα ήθελα και εγώ μια κεφαλίδα γραμμή αυτού του πίνακα. Έτσι, Πάω να πάρει κατ 'ευθείαν σε αυτό. Εμείς πάμε για να καταθέσει, νέα, και θα πάμε να - OK. Πώς μπορώ να ξεκινήσω ένα τραπέζι; Ποια είναι η ετικέτα, Μιχαήλ, να ξεκινήσει έναν πίνακα; ΚΟΙΝΟ: Πίνακας. JASON Hirschhorn: Πίνακας. Και αν μπορώ να ανοίξω μια ετικέτα, τι άλλο πρέπει να κάνω; ΚΟΙΝΟ: Ένα κεφάλι; Ή, μάλλον, την τάξη. JASON Hirschhorn: Λοιπόν, συγγνώμη. Ας υποθέσουμε ότι έχουμε ήδη γράψει doctab, HTML, όλα αυτά τα πράγματα. Αλλά αν ανοίξω αυτόν τον πίνακα ετικέτα, τι άλλο πρέπει να κάνω για να γράψω; για την επικύρωση HTML; ΚΟΙΝΟ: Κλείστε αυτό. JASON Hirschhorn: Κλείστε την ετικέτα. Πώς μπορώ να γράψω μια ετικέτα κοντά τραπέζι; ΚΟΙΝΟ: Dot κάθετο πίνακα. JASON Hirschhorn: Slash τραπέζι, μεγάλη. Μάλλον έχει νόημα να γράψω τόσο από αυτά μαζί, γιατί έχετε να το κάνουμε. Εντάξει, αν θέλω μια γραμμή κεφαλίδας, πώς Γράφω μια γραμμή κεφαλίδας με τίτλους; ΚΟΙΝΟ: Είναι λιγότερο από 10 ώρες κοντά - TR, ναι. JASON Hirschhorn: TR; ΚΟΙΝΟ: Τότε ίδιο πράγμα, το κάθετο, ναι. JASON Hirschhorn: OK, και δώστε μου δύο στήλες. ΚΟΙΝΟ: T D; JASON Hirschhorn: OK. Θέλω δύο στήλες. Μήπως αυτό να μου δώσει δύο στήλες; Πόσες στήλες είναι αυτό; Ένα. Οπότε ας αντιγράψετε και να επικολλήσετε αυτό. Έτσι, στην πραγματικότητα, στο κουίζ, όλα αυτός ο κώδικας ότι έχουμε γράψει μέχρι τώρα ήταν πραγματικότητα που σας έχει δοθεί. Αλλά θα πρέπει πιθανώς ακόμα ξέρουν πώς να το γράψω. Ναι. ΚΟΙΝΟ: Το σπίτι σας είναι μεταξύ των δύο. JASON Hirschhorn: Boom. Θα πρέπει να πάμε εκεί, έτσι δεν είναι; Καλή κλήση. Έτσι και πάλι, όλο αυτό τον κωδικό είναι στην πραγματικότητα που σας έχει δοθεί σχετικά με την πραγματική κουίζ. Αλλά είναι διασκεδαστικό να το γράψω, και θα πρέπει να γνωρίζουν πώς να το γράψω. Έτσι, αυτό είναι που θα πρέπει να ξεκινήσει τον κωδικό σας. Τι πρέπει να γράψω εδώ; Συγνώμη, πρέπει να αλλάξετε το όνομα αυτού του αρχείου. Γι 'αυτό και αποθηκεύονται σε ένα αρχείο HTML., όχι σε ένα αρχείο PHP.. Αυτά τα πράγματα θα σήμαινε τίποτα σε ένα αρχείο PHP.. Έτσι, είμαστε σε ένα αρχείο HTML.. Ποιο είναι το πρώτο πράγμα που Πρέπει να γράψω; Θέλω να βάλω κάποια PHP κώδικα σε ένα HTML. ΚΟΙΝΟ: PHP, όπως και ένα άλλο καρότο και ερωτηματικό PHP, έτσι δεν είναι; JASON Hirschhorn: Μεγάλη. Και πώς μπορώ να τελειώσει αυτό; ΚΟΙΝΟ: Με ένα ερωτηματικό. JASON Hirschhorn: Αυτό είναι μεγάλη. Αυτό είναι το πρώτο πράγμα που χρειάζεστε, αν θέλω να βάλει κάποια PHP κώδικα εδώ. ΚΟΙΝΟ:. Σκέφτηκα ένα PHP το αρχείο θα μπορούσε να πάρει HTML. JASON Hirschhorn: Ναι. Ένα αρχείο PHP. Μπορεί να πάρει μερικά HTML και να εμφανίζεται. Αυτό ήταν κακό μου. Ήμουν απλώς προσπαθεί να μιμηθεί ό, τι ήταν στο κουίζ. Εντάξει, συγγνώμη που σας μπερδεύουν. Ναι, practice.HTML. Τώρα θα πάμε να θέσει κάποιο κώδικα PHP μέσα Ποια είναι η πρώτη γραμμή PHP κώδικα πρέπει να γράψω; Πάω να περάσει μέσα από αυτή την σειρά και το κάνει σε ένα τραπέζι. Ναι. ΚΟΙΝΟ: Μπορείτε να χρησιμοποιήσετε είτε α για το βρόχο H ή ένα βρόχο. JASON Hirschhorn: Εντάξει, τι θέλετε να χρησιμοποιήσετε; ΚΟΙΝΟ: Θα ήθελα να χρησιμοποιήσει ένα for loop. Και, στη συνέχεια κάνετε το σύμβολο του δολαρίου i ισούται με 0 ερωτηματικό δολαρίου υπογράφουν i λιγότερο από 2. Και τότε ερωτηματικό i δολάριο υπογράψουν i plus plus. JASON Hirschhorn: Πώς ξέρετε να χρησιμοποιήσετε ένα 2; ΚΟΙΝΟ: Επειδή υπήρχαν δύο associative arrays μέσα στο μεγαλύτερο associative array. JASON Hirschhorn: Έτσι, το μεγάλο πράγμα για Δεν αναπληρωτής σειρά. Το μεγάλο πράγμα είναι απλά μια κανονική σειρά. Αλλά έχετε δίκιο, υπάρχουν δύο associative arrays μέσα μεγαλύτερη ποικιλία μας. Αυτός είναι ο λόγος για τον οποίο χρησιμοποιείτε δύο. Νιώθω άβολα και αν υποτεθεί ότι ότι είναι 2, οπότε τι είναι ένας τρόπος για να γράψει αυτό χωρίς την παραδοχή ότι είναι 2; ΚΟΙΝΟ: [δεν ακούγεται]; JASON Hirschhorn: Εντάξει, πώς γράφεις αυτό; ΚΟΙΝΟ: foreach σύμβολο του δολαρίου tfs ή σαν σύμβολο του δολαρίου tf. JASON Hirschhorn: Εντάξει, έτσι ώστε για κάθε tfs ως tfs, θέλω να, τώρα και πάλι, να έχει το τραπέζι μου. Έτσι, ο οποίος μπορεί να μου δώσει το επόμενη γραμμή κώδικα; ΚΟΙΝΟ: Εκτύπωση και στη συνέχεια, τιμές, τέλος βραχίονα tr βραχίονα, τέλος απόσπασμα. Παρενθέσεις Τέλος, ερωτηματικό. JASON Hirschhorn: OK, και τι που πρόκειται να κάνει; ΚΟΙΝΟ: Δεν πρόκειται να πω, νέα σειρά. Είναι πρόκειται να θέσει το ετικέτα για μια νέα σειρά. JASON Hirschhorn: Δεξιά, αυτή η PHP, όπως μιλήσαμε νωρίτερα - αυτό PHP πρόκειται να αξιολογηθούν, και στη συνέχεια πρόκειται να εκτυπώσετε σε αυτό το αρχείο ένα πίνακα ρυμούλκησης, και στη συνέχεια, ότι HTML θα αξιολογηθούν. Είμαστε απλά αντιγράφουν αυτό HTML είχαμε εδώ. Ναι. ΚΟΙΝΟ: [δεν ακούγεται]; JASON Hirschhorn: Συγγνώμη; Είναι ακριβώς εδώ. Φθινόπωρο 2012. Μην κοιτάτε τις απαντήσεις, ας το λύσουμε από κοινού. Γι 'αυτό και εκτυπώσετε σειρά του πίνακα. Έτσι, είστε πιθανώς σε η ταλάντευση των πραγμάτων. Ποια είναι η επόμενη γραμμή κώδικα που πρέπει να γράψετε; Assam, δώσε μου την επόμενη γραμμή κώδικα. ΚΟΙΝΟ: Χρειάζεται το όνομα του tf του. Tf παρενθέσεις εισαγωγικά όνομα κλειστά παρένθεση. JASON Hirschhorn: Δώσε μου το όνομά τους. ΚΟΙΝΟ: Θα πρέπει να εκτυπώσετε αυτό. [Παρεμβάλλοντας VOICES] JASON Hirschhorn: OK, πώς μπορώ να εκτυπώσω; [Παρεμβάλλοντας VOICES] JASON Hirschhorn: είμαι λείπει κάτι τώρα. Τι είμαι εγώ που λείπει; ΚΟΙΝΟ: Χρειάζεται ένα σύμβολο του δολαρίου. JASON Hirschhorn: Τι αλλιώς χάνω; Όλοι έχουμε τυπωμένα μέχρι στιγμής είναι το tr. ΚΟΙΝΟ: Κλείστε το tr μετά από αυτό. JASON Hirschhorn: Άρα χρειαζόμαστε για να κλείσετε το tr μετά. Ποιος βλέπει αυτό που μας λείπει στη γραμμή 16; Ναι, η Άννα. ΚΟΙΝΟ: Θα χρειαστεί να ανοίξετε ένα td και άγκιστρα. JASON Hirschhorn: Και πού βάζουμε άγκιστρα; ΚΟΙΝΟ: Γύρω από το όνομα tf. JASON Hirschhorn: Σας αρέσει αυτό; ΚΟΙΝΟ: Ναι. Και στη συνέχεια, κλείστε το td. JASON Hirschhorn: Σας αρέσει αυτό; ΚΟΙΝΟ: Μήπως θα πρέπει να έχετε διπλά εισαγωγικά σημάτων δίπλα στα άγκιστρα; JASON Hirschhorn: Δικαίωμα εδώ; Όχι, δεν το κάνουν. Έτσι ώστε να είναι ακριβώς σωστό. Ναι. ΚΟΙΝΟ: Έτσι, η διαφορά μεταξύ αυτού και encatenating με κουκκίδες, αν χρησιμοποιείτε τελείες, τότε θα πρέπει να έχουν το διπλά εισαγωγικά, στη συνέχεια, μια κουκίδα, τότε η τελεία - JASON Hirschhorn: Σωστό. Δηλαδή λέτε ότι υπάρχει ένα απόλυτο τρόπος σύνταξης της παρούσας, όπως αυτό. Τι το τελεστή συνένωσης σε JavaScript; ΚΟΙΝΟ: Ένα θετικό πρόσημο. Μπορείτε ξέχασε να βάλει το σγουρά συγκρατήσει πίσω. JASON Hirschhorn: Μεγάλη. Και υπάρχει μια κοινή γραμμή κώδικα που λείπουν. Ποιος μπορεί να μου δώσει την τελευταία γραμμή του κώδικα που λείπει; ΚΟΙΝΟ: Ακριβώς το ίδιο ακριβώς πράγμα, μόνο με το σπίτι, αντί του ονόματος. Μεγάλος JASON Hirschhorn: Μεγάλη. Και τη σύνταξη σας είναι ακριβώς σωστό για να πάρει τα πράγματα σε μια συγγενή σειρά. Έτσι, το πραγματικό κουίζ, είστε όντως δίνεται μέχρι εδώ. Έτσι, αυτός ο κώδικας σας δόθηκε. Το μόνο που έπρεπε να γράψω ήταν αυτά τέσσερις γραμμές και να θυμάστε να κλείστε την ετικέτα πίνακα. Εσείς όντως όλα αυτά και πολλά άλλα. Ναι. ΚΟΙΝΟ: Έτσι θα είναι λειτουργικά το ίδιο αν είχατε μόνο ότι όλα ένα μεγάλο κλήση εκτύπωσης, σωστά; Και τότε μόνο συνεχόμενα το σε, κ.λπ.; JASON Hirschhorn: Σας αρέσει αυτό; ΚΟΙΝΟ: Ναι. Απλώς δεν θα φαίνονται καλά, αν ήταν κοιτάζοντας αυτό όταν είστε επιθεώρηση το στοιχείο στην ιστοσελίδα σας, έτσι δεν είναι; JASON Hirschhorn: Συμφωνώ. Αν έχω φορτωθεί αυτή την ιστοσελίδα, θα ήμουν μπορείτε να δείτε αυτόν τον κώδικα PHP, ποτέ; ΚΟΙΝΟ: Όχι. JASON Hirschhorn: Όχι. Και στην πραγματικότητα, δεν θα το έκανα. ΚΟΙΝΟ: Αυτό δεν είναι HTML, έτσι δεν είναι; Έτσι, μπορείτε να είστε σε θέση να - JASON Hirschhorn: Έτσι, αυτό θα PHP να αξιολογηθούν πλευρά του server. PHP είναι πάντα αξιολογούνται πλευρά του server, έτσι ποτέ δεν είσαι σε θέση να δείτε τον κώδικα PHP. ΚΟΙΝΟ: Αλλά θα ήθελα να είναι σε θέση να δείτε το αποτέλεσμα των εκτυπώσεων. JASON Hirschhorn: Σωστά. Και ειλικρινά δεν θα μπορούσε βάζουμε όλα στη γραμμή. Θα μπορούσε να το διαμορφώσετε όμορφα για σας, ή θα μπορούσε να θέσει σε μία γραμμή. Ασαφές. Αλλά ναι, καλό σημείο. ΚΟΙΝΟ: Γιατί είναι εκεί καμία επισήμανση κειμένου για οποιαδήποτε από τις εντολές PHP; Επειδή θυμάμαι βλέποντας ότι. JASON Hirschhorn: Επειδή είναι ένα . HTML αρχείο εδώ στην κορυφή. Εκεί θα πάτε. ΚΟΙΝΟ: Αν κάναμε την αρχική μέθοδο με την βρόγχους for, σωστά, αν ήθελε να αποκτήσει πρόσβαση σε ένα tfs, θα έχουμε κάνει βραχίονα tfs 0 βραχίονα, τότε [Δεν ακούγεται]; JASON Hirschhorn: Θα το έκανες - έτσι λέτε για το βρόχο for, σας θα κάνει το σύμβολο του δολαρίου βραχίονα tfs 1 ή εγώ, σωστά. Ή το σύμβολο του δολαρίου κλείνω βραχίονα και στη συνέχεια αγκύλη διπλά εισαγωγικά, ναι. Εντάξει, εξαιρετική. Έχουμε ένα πιο γρήγορο ένα. Επτά λεπτά, έτσι θέλω να πάει πέρα ​​από αυτό. Αυτό είναι ένα άλλο παράδειγμα. Είμαστε τώρα μια εντελώς άλλη γλώσσα. Έχουμε κάποιο κώδικα HTML. Είναι το είδος των μικρών στην οθόνη, αλλά Θέλω να κοιτάξετε μέσα από πραγματικά γρήγορα, και μπορεί κάποιος να μου πει, εάν επρόκειτο να φορτώσει αυτήν τη σελίδα web, τι θα δούμε; Περιγράψτε τα πάντα για αυτή η ιστοσελίδα. Νώε; Τι θα δω; ΚΟΙΝΟ: Κωδικός στο εμπρόσθιο άκρο του Google με μια αίσθηση για το κείμενο και κουμπί υποβολής. JASON Hirschhorn: Και τι θα το κουμπί πω; ΚΟΙΝΟ: Υποβολή. Ω, αναζήτηση. Λυπάμαι. JASON Hirschhorn: Θα έλεγα αναζήτησης. Θυμηθείτε, το όνομα. Τι χρησιμοποιούμε όνομα; Αυτό το χαρακτηριστικό όνομα, τι είναι αυτό που χρησιμοποιείται για; [Παρεμβάλλοντας VOICES] ΚΟΙΝΟ: Αυτό είναι το όνομά του όταν κάποιος κάνει κλικ; JASON Hirschhorn: Αυτό θα μπορούσε να είναι. Αλλά τι γενικά δούμε - γιατί δίνουμε αυτή την ουρά όνομα; Γιατί βλέπουμε ότι; Ναι. ΚΟΙΝΟ: Θεωρεί ότι δεν γίνονται δείκτη του super global μεταβλητή; JASON Hirschhorn: Ναι, γενικά όταν αυτή η μορφή θα υποβάλει, και στη συνέχεια, όταν θα ήταν αυτό να υποβάλει; Ποια σελίδα; Νώε, ποια σελίδα θα υποβάλει αυτό; ΚΟΙΝΟ: Δεν είμαι σίγουρος. JASON Hirschhorn: Πού θα μπορούσε να μπορούμε να το βρούμε; Πού θα βρείτε ό, τι Η σελίδα υποβάλλει στο; Ποια γραμμή κώδικα; ΚΟΙΝΟ: δράση φόρμας. JASON Hirschhorn: Ακριβώς. Δράση. Γι 'αυτό υποβάλλει στη σελίδα αναζήτησης. Backslash αναζήτηση. Έτσι ώστε να είναι ακριβώς σωστό. Ποια μέθοδο; ΚΟΙΝΟ: Λήψη. JASON Hirschhorn: Λήψη. Ακριβώς. Γι 'αυτό διαβάστε αυτό. Αυτό πρόκειται να είναι μια μορφή. Έχεις απόλυτο δίκιο. Δύο πράγματα σχετικά με τη μορφή, ο τίτλος του σελίδα και η κορυφή θα είναι το Google. Έτσι, εδώ είναι δύο ερωτήσεις που πρέπει να να είναι σε θέση να απαντήσει σχετικά με αυτή τη σελίδα. Εάν αυτή η HTML ζει σε αυτή την ιστοσελίδα και ο χρήστης εισάγει σφάλμα σε αυτό το κείμενο τομέα εδώ, ποια URL θα ο χρήστης να βρει τον εαυτό της μετά από υποβολή της φόρμας; Έτσι έχουμε αυτό το δικαίωμα εδώ. Πάω να πάει πίσω στο αυτή τη σελίδα, όμως. Θα γράψω αυτό το πρώτο μέρος. Μπορεί ο καθένας να δούμε εδώ; OK, Mario, νομίζετε ότι ξέρετε; Ποια σελίδα; ΚΟΙΝΟ: Backslash αναζήτησης. JASON Hirschhorn: Πάω για να μετακινηθείτε προς τα κάτω εδώ. OK, backslash ερώτημα αναζήτησης σήμα q ισούται bug. Ο καθένας έχει μια διαφορετική πρόταση; Ναι. Επομένως, πώς θα πάρει αυτό; Λοιπόν, έχουμε δει αυτό πριν. Και ήρθε με αυτό νωρίτερα. Είχες δίκιο, ο Νώε, ότι η δράση μας λέει τι Η σελίδα θα πάμε να. Ξέρουμε επίσης ποια μέθοδο. Κάνουμε πάρει. Και η διαφορά μεταξύ get και μετά είναι ότι παίρνουν εμφανίζεται στο URL και μετά δεν το κάνει. Έτσι, αν έγραψα μετά εκεί στο μέθοδο, τι θα ήταν διαφορετικά; ΚΟΙΝΟ: Θα ήθελα απλώς να είναι κάθετο αναζήτηση. JASON Hirschhorn: Θα ήταν απλώς να μειώσει την αναζήτηση. Τίποτα εδώ δεν θα συνέβαινε. Αλλά επειδή είναι ένα πάρει, η διεύθυνση URL εμφανίζεται ως εξής. Πρώτη βλέπουμε ένα ερωτηματικό και βλέπουμε το όνομα και την τιμή. Πείτε υπήρχε ένα άλλο πεδίο κειμένου και Μου έδωσε ένα όνομα του r και εισόδου Ι α αξία, κάμπια. Τι θα ήταν αυτό τώρα μοιάζει; Έχω ένα ακόμα πεδίο κειμένου, δίνω ένα το όνομα του r και αξία της κάμπιας. ΚΟΙΝΟ: Μετά το μπαρ θα είχατε η κάμπια εμπορικό. JASON Hirschhorn: Αυτό είναι Δεν εμπορικό. ΚΟΙΝΟ: Ή απλά ό, τι η και το σύμβολο. JASON Hirschhorn: Ναι, όχι. Είχες δίκιο, έκανα λάθος. Αυτό είναι σαν ένα g. ΚΟΙΝΟ: Caterpillar. r ισούται με κάμπια, συγγνώμη. JASON Hirschhorn: Υπάρχει δεν r εκεί; ΚΟΙΝΟ: Όχι, δεν υπάρχει. JASON Hirschhorn: Θα μιλήσουμε γι 'αυτό μετά το μάθημα. Αυτό είναι ακριβώς σωστό. Έτσι, η και είναι σωστή. Και τότε θα μπορούσε να έχει πολλές από αυτές, και όλοι θα πρέπει να συνενωθούν μαζί με αυτό και. Έτσι ώστε να είναι ακριβώς σωστό. Υπάρχει ένα ακόμη ερώτημα. Σχεδιάστε DOM αυτής της HTML, ξεκινώντας με το έγγραφο. Θα μπορούσαμε να το κάνουμε αυτό σε δύο λεπτά. Θα το κάνουμε εδώ. Θα πάω πίσω σε αυτήν την ιστοσελίδα. Εντάξει, ξεκινάμε με το έγγραφο. Ποιο είναι το επόμενο; Έτσι, όταν διαβάζετε μέσα - ΚΟΙΝΟ: HTML. JASON Hirschhorn: HTML είναι δίπλα. Εμείς πάμε για να πάει ετικέτα με βάση την ετικέτα. Ποια μετά HTML; ΚΟΙΝΟ: Head. JASON Hirschhorn: Head. Τι υπάρχει μετά το κεφάλι; ΚΟΙΝΟ: Τίτλος. JASON Hirschhorn: Τίτλος. Και ο τίτλος έχει την αξία της Google, αλλά εγώ δεν πρόκειται να γράφουν ότι προς το παρόν. Εντάξει, πού το σώμα πάει; ΚΟΙΝΟ: Επίσης, έρχεται από την HTML. JASON Hirschhorn: Ακριβώς. Body έρχεται μακριά από εδώ. Μήπως όλοι να δείτε γιατί αυτή είναι η περίπτωση; Θα πρέπει πιθανώς να είναι σε θέση να καταλάβω αυτό έξω, πάρα πολύ, ακόμα κι αν δεν είχα αυτό το ωραίο εσοχή. Η εσοχή είδος του δίνει μακριά, αλλά μπορείτε να δείτε ότι η ετικέτα της κεφαλής έχει έχουν κλείσει, πράγμα που θα σημαίνει ότι κατά πάσα πιθανότητα δεν μπορεί να πάει εδώ κάτω. Πρέπει να πάμε πίσω μέχρι ανεξαρτήτως Ήταν ακριβώς πριν από το κεφάλι ετικέτα, ή κάτω από αυτό. Είμαστε ακόμα με την ετικέτα της κεφαλής. Και κάτω από το σώμα πηγαίνει μορφή. Υπό μορφή, υπάρχουν δύο είσοδοι. OK. Αυτό είναι το μόνο που πήρα. Quiz 1 είναι αύριο. Είμαι τόσο ενθουσιασμένος για σας παιδιά. Είναι πρόκειται να είναι ένα ωστικό κύμα. Αν έχετε - ΚΟΙΝΟ: [χειροκροτήματα] JASON Hirschhorn: Ω σταματήσει, να σταματήσει. Αλλά όχι, δεν είμαι αστειεύεστε. Αν έχετε οποιεσδήποτε απορίες, δεξιά Μετά το σημείο, θα είμαι έξω. Εάν έχετε οποιεσδήποτε ερωτήσεις απόψε, μη διστάσετε να καλέσετε, e-mail, GChat, μεταφορέα μου περιστέρι. Καλή τύχη αύριο. Έχετε ένα υπέροχο διάλειμμα Ευχαριστιών, αν δεν βλέπεις πριν από τότε. Και θα σας δω μετά την Ημέρα των Ευχαριστιών την Τρίτη για την τελική μας τμήμα κόμμα ποτέ. ΚΟΙΝΟ: [δεν ακούγεται]. JASON Hirschhorn: Μεγάλη. Εντάξει, θα σας δω την επόμενη εβδομάδα, ή σε δύο εβδομάδες. Και καλή τύχη αύριο.