ANDI PENG: Είμαστε σχεδόν μέσα από όλες τις psets. Στην πραγματικότητα, είμαστε μέσα από την πλειονότητα από τα πιο δύσκολα psets. Έτσι είμαστε στην πραγματικότητα μόνο Θα είδους αεράκι μέσα στα επόμενα δύο εβδομάδες. Εμείς πάμε για να αρχίσουμε να μιλάμε για μας τελευταία έργα, τα γεγονότα έρχονται στις επόμενες εβδομάδες. Και η ζωή θα είναι ένα αεράκι. Έτσι, δεν είναι πάρα πολύ σήμερα. Ας ελπίσουμε ότι, θα αεράκι πραγματικότητα μέσω της ημερήσιας διάταξης για σήμερα, και, στη συνέχεια, να είναι έξω από εδώ με κάποιο χρόνο να διαθέσουν. Επίσης, θέλω να ζητήσω συγγνώμη για την έλλειψη της καραμέλας σήμερα. Δεν ξέρω γιατί. Όμως, κατά την εβδομάδα που οδήγησαν Απόκριες, θα ήθελα να ξεχάσω καραμέλα. Έτσι, στην πραγματικότητα είμαι απλά ένας απέραντος απογοήτευση για σας τώρα. Γιατί εγώ θυμάμαι κυριολεκτικά καραμέλα για κάθε κατηγορία, αλλά Απόκριες. Αλλά την επόμενη εβδομάδα, θα φέρω διπλασιάσει το ποσό της καραμέλας για να αναπληρώσετε αυτό, όλα για σένα. Θα είναι μεγάλη. Έτσι έχω μια-δυο ανακοινώσεις σχετικά με κάποιο προγραμματισμό. Έχω κάποια θέματα προγραμματισμού. Στη συνέχεια θα πάμε να προχωρήσουμε σε μιλήσουμε για ό, τι λέγεται chmod. Εμείς πάμε να μιλήσουμε για γρήγορα TCP / IP HTTP. Και μετά θα πάμε να κωδικοποιήσει μας δική του ιστοσελίδα χρησιμοποιώντας HTML και CSS. Και τότε εγώ θα αφήσει πραγματικά ίσως όπως 20 λεπτά για να μιλήσουμε για pset6. Επειδή pset6 είναι στην πραγματικότητα ένα πολύ πράγματα που έχουμε ήδη δει πριν, αλλά ήθελα να φρεσκάρω ορισμένες από αυτές τις έννοιες καθώς και να διδάξει ένα ζευγάρι νέων λειτουργιών. Δροσερός. Έτσι, πρώτα απ 'όλα, Καλώς ήρθατε και πάλι από το διάλειμμα. Ελπίζω να είστε διάλειμμα ήταν απολαυστική. Θα έκανες για διάλειμμα; Κοινό: Πήγε στη Νέα Υόρκη. ANDI PENG: Μπορείτε πήγε στη Νέα Υόρκη; Νομίζω ότι το ήμισυ του σχολείου μας πήγε στη Νέα Υόρκη. Όλα είναι εντάξει. Έχω περάσει το μεγαλύτερο μέρος του διαλείμματος μου καθιστική ζωή στο κρεβάτι Netflixing. Και αυτό ήταν μια καλή στιγμή. Αλλά τώρα είμαστε πίσω, πίσω συνεδρία, πίσω στην ταλάντευση των πραγμάτων. Έχουμε το chipset που οφείλεται αυτή την Παρασκευή το μεσημέρι. Νομίζω ότι έχετε ήδη πήρε κουίζ σας, ναι; Έτσι, κάποιος άλλος που έχει δεν είχε κουίζ τους, παρακαλούμε να έρθει και να πάρει κουίζ σας από μένα στο τέλος της ενότητας. Ή ένα κομμάτι μου κάτω στην πανεπιστημιούπολη. Θα έχω μαζί μου κάπου. Τελικό έργο μας προ-πρόταση επίσης. Έτσι, για όσους από εμάς δεν έχουν λάβει αυτή την κατηγορία πριν, το επιστέγασμα της CS50 είναι πολύ κορυφώθηκε με αυτό μεγάλου σχεδίου που προτείνουν οι μαθητές. Και η προκαταρκτική πρόταση, μόνο μια γενική ιδέα από ό, τι θα μπορούσε κανείς να θέλουν να κάνουν για τους έργο, η ιδέα αυτή οφείλεται Δευτέρα, την ερχόμενη Δευτέρα το μεσημέρι. Έτσι, λίγο πολύ, David πιστεύω ότι θα μιλήσουμε περισσότερο για αυτό σε διάλεξη αν δεν έχει ήδη. Και υπάρχει μια σταθερή σελίδα στην ιστοσελίδα μας εξηγεί όλες οι απαιτήσεις του έργου. Αλλά κατ 'ουσίαν, να πάρει οποιοδήποτε θέμα που έχετε ενδιαφέρεται για όλο το χρόνο σας εδώ στο CS, είτε πρόκειται για παιχνίδια ή σχεδιασμού ή βίντεο ή οτιδήποτε άλλο. Και μπορείτε πραγματικά το είδος του τώρα ισχύουν κάποια από τα μαθήματα ότι έχουμε μάθει εδώ στο CS50-- γεια, welcome-- λίγο πολύ τη διεξαγωγή ένα τελικό σχέδιο της επιλογής σας. Όλα αυτό οφείλεται Δευτέρα είναι απλά μια σύντομη διαφήμιση μέσω ηλεκτρονικού ταχυδρομείου για μένα, μια γρήγορη πρόταση, όπως, hey, Andi, Είμαι πραγματικά ενδιαφέρονται για το σχεδιασμό ένα παιχνίδι που το κάνει αυτό για το iOS. Δροσερός. Απλά επιτρέψτε μου σύντομη αρχική σας ιδέες για την τελική έργα σας. Και θα μιλήσουμε με το αν ή όχι ότι είναι πραγματικά μια καλή ιδέα ή όχι, αν είναι εφικτή ιδέα ή όχι. Αλλά ακριβώς η προκαταρκτική πρόταση οφείλεται επόμενη Δευτέρα. pset6, υπέροχη web-- μας που είναι λάθος. Pset7; pset6; Είναι pset6, σωστά; pset6, τον web server μας, οφείλεται Παρασκευή το μεσημέρι με τον αείμνηστο ημέρα. Ώρες γραφείου συνεχιστεί κανονικά από τη Δευτέρα έως Πέμπτη 8:00-11 η ώρα αυτή την εβδομάδα. Νομίζω Commons για οι επόμενες τρεις νύχτες. Δροσερός. Πριν είχαμε στο υλικό, το κάνει ο καθένας Για οποιαδήποτε ερώτηση, ανέκδοτα, ιστορίες; Τι κάνατε για να σπάσει την πτώση; Κοινό: Τι να κάνω; ANDI PENG: Ήδη είναι εδώ και πολύ καιρό πραγματικότητα. Christabel πήγε στη Νέα Υόρκη. Έμεινα εδώ και Netflixed. Κοινό: Ω, ναι ήμουν εδώ. ANDI PENG: Ω, εντάξει. Κοινό: Δεν θυμάμαι τι συγκεκριμένα. ANDI PENG: Αυτό είναι ΟΚ. Κοινό: Netflixing πιθανώς. ANDI PENG: Netflixing. Ναι, είναι μια καλή στιγμή. ΕΝΤΆΞΕΙ. Εντάξει. Όλες οι ερωτήσεις πριν βιαστούμε σε υλικό; Επίσης, θα πάμε να προσπαθήσουμε να επιταχύνει μέσα από το τμήμα σήμερα, όχι πάρα πολύ για να καλύψει. Και ελπίζω, θα πάρουμε εδώ είναι λίγο νωρίς. Συγνώμη για να μην καραμέλα, επίσης. Είμαι μια απογοήτευση, ιδιαίτερα κατά τη διάρκεια αποκριών. Εντάξει. Δροσερός. Έτσι θα πάμε να αρχίσουμε να μιλάμε για ένα όρισμα γραμμής εντολών που ονομάζεται chmod. chmod, όλα είναι είναι απλώς ένα σύστημα Unix κλήσεων που πραγματοποιούνται από τη γραμμή εντολών για να αλλάξετε τα δικαιώματα αρχείων. Έτσι, για παράδειγμα, έχουμε όλα αντιμετώπισε σελίδα όπως αυτό πιθανότατα κάποια στιγμή μέσα στο διάρκεια ζωής μας, είναι μια διαδικτυακή χρήστη, όπου web server μας έχει μας έδωσε το σφάλμα της Απαγορευμένη. Δεν έχετε άδεια για πρόσβαση, μπλα, μπλα, μπλα, σε αυτόν το διακομιστή. Το μόνο που πραγματικά σημαίνει είναι ότι οι άδειες ότι συνδέθηκαν σε ό, τι σελίδα που προσπαθείτε να αποκτήσετε πρόσβαση δεν ήταν ανοικτές σε σας. Έτσι, λίγο πολύ, chmod είναι ο τρόπος με τον οποίο μπορούμε να τροποποιήσουμε αυτά τα δικαιώματα του συστήματος να δώσει σε όλους, ο χρήστης, η ομάδα, ή ο κόσμος, ή οποιαδήποτε συνδυασμός αυτών πρόσβασης σε ορισμένα αρχεία, καταλόγους, τίποτα πραγματικά, οποιοδήποτε είδος του συστήματος ένα λειτουργικό σύστημα. Έτσι, αν κάποιο από τα παιδιά έχουν υπολογιστές, αν αισθάνεστε όπως παρακάτω μαζί μου σήμερα, εντελώς μη διστάσετε να πληκτρολογήσετε απλά πράγματα σε. Αν όχι, μπορείτε απλά να κρεμάσετε έξω. Έτσι, Πάω να τραβήξει πραγματικά το τερματικό μου τώρα. Έτσι, η εντολή προς εκτέλεση chmod, ή τουλάχιστον μόνο στη λίστα τα δικαιώματα των σας κατάλογο αρχείων, είναι ακριβώς ls-l. Όπως μπορείτε να δείτε, ένα μάτσο πράγματα αναδύεται περισσότερα από τα οποία Είναι σημαντικό για εμάς στο η αριστερή πλευρά εδώ. Εσείς δείτε ένα μάτσο rs, ws, 1 /. Ναι. Αυτά είναι κατ 'ουσίαν μόνο όλα τα δικαιώματα αρχείου να εξηγήσει τι ορισμένες καταλόγους και τα αρχεία μέσα στο σύστημά σας έχουν. Ας πάμε πίσω στο το σημείο τροφοδοσίας. Έτσι, εκτός από τα ονόματα των αρχείων όπως εσείς μπορείτε να δείτε στα δεξιά, ψάχνουμε να δούμε κατ 'ουσίαν μόλις η στήλη στα αριστερά. Έτσι, εκτός από την μόλις τα ονόματα των αρχείων, θα μπορούν να δουν τα δικαιώματα των αρχείων, τους ομάδα ιδιοκτήτη, το όνομα της ομάδας, η ημερομηνία ότι ο φάκελος ήταν η τελευταία τροποποιημένα, κλπ. Μπορείτε να δείτε πολλά πράγματα χρησιμοποιώντας chmod. Έτσι ο τρόπος που διαβάζουμε chmod είναι ότι η πρώτη επιστολή που λίγο πολύ αγνοήσει σε όρους δικαιωμάτων ανάγνωσης. Το πρώτο γράμμα ακριβώς μας λέει τι είδος του συστήματος είμαστε πρόσβαση. d, σε αυτή την περίπτωση, είναι ένα φάκελο ή κατάλογο. Γνωρίζουμε, λοιπόν, ότι επί του παρόντος χώρο εργασίας μου τμήμα επτά ήταν ένας κατάλογος. Και τότε θα δείτε τρεις τριάδες, ουσιαστικά μόνο τρία σετ τριών χαρακτήρων. Και μπορείτε να σκεφτείτε το καθένα, όπως ένα κομμάτι. Έτσι, το μόνο που έχουν τρία σύνολα τρία δυαδικά ψηφία, εννέα bits στο σύνολο. Θα τους αντιμετωπίσουμε σε ομάδες των τριών. Έτσι, η πρώτη ομάδα των τριών είναι Πάντα τα δικαιώματα χρήστη σας. Δεύτερη ομάδα των τριών είναι Πάντα δικαιώματα της ομάδας σας. Και τρίτο σύνολο των τριών σας είναι πάντα όπως ο κόσμος, τα δικαιώματα παντού. Έτσι υποθέτω ότι το εύκολο ερώτημα που τίθεται είναι τι είναι η διαφορά μεταξύ του χρήστη και της ομάδας. Η κύρια διαφορά μεταξύ του χρήστη και της ομάδας είναι ότι ο χρήστης είναι μόνο εσείς προσωπικά πρόσβαση σε ό, τι είναι τώρα. Μια ομάδα μπορεί να είναι, αν έχετε πολλαπλά Οι χρήστες σε έναν υπολογιστή, για παράδειγμα. Όλα αυτά μπορεί να αντιμετωπίζεται ως μια ομάδα. Και τότε ο κόσμος είναι απλά ο κόσμος, ο καθένας. Έτσι μπορούμε να δούμε στη συνέχεια πώς μπορούμε τροποποιούν τους σε διαφορετικά δικαιώματα. Έτσι, λίγο πολύ, είμαστε θα εξακολουθούν να επικεντρώνονται εκ μέρους στα αριστερά, όπου για CS50 κατάλογο βλέπουμε drwx, όπου το r σημαίνει απλώς ότι είναι αναγνώσιμο. Το β σημαίνει απλά ότι είναι εγγράψιμο. Και τότε τα x μόνο σημαίνει ότι είναι εκτελέσιμο. Θα ήθελα να σκεφτείτε το είδος της δεν έχει νόημα. Θα πρέπει να είναι ε. Αλλά x πραγματικότητα το είδος του λειτουργεί λίγο καλύτερα, επειδή μπορείτε να το θυμούνται καλύτερα. Έτσι, οι τρεις τύποι των πραγμάτων που μπορεί να κάνει, μπορείτε να διαβάσετε είτε ένα αρχείο, μπορείτε να έχετε άδεια για να γράψει ένα αρχείο, ή θα μπορούσατε να έχετε την άδεια να εκτελέσει ένα αρχείο. Και έτσι ο τρόπος που έχουμε στην πραγματικότητα αντιπροσωπεύουν τους σε bits είναι οι αριθμοί 4, 2, 1 και. Έτσι, κάτι που είναι αναγνώσιμα είναι αντιπροσωπεύεται από τον αριθμό 4. Οτιδήποτε είναι εγγράψιμο αντιπροσωπεύεται από 2. Και κάτι που είναι εκτελέσιμο που εκπροσωπείται από την 1η. Έτσι, με αυτή την έννοια, μπορούμε επίσης αντιπροσωπεύουν αυτές numbers-- Γεια σου, καλώς, με διαφορετικό τρόπο. Συγνώμη. Πριν από όλους, Πάω να συγγνώμη εκ μέρους όλων εισέρχονται στην τάξη τώρα. Ξέχασα καραμέλα σήμερα. Λυπάμαι που είμαι μια αποτυχία αυτή την εβδομάδα των αποκριών. Θα φέρω το διπλάσιο του ποσού της καραμέλα επόμενη φορά να μπορέσουν να το κάνουν. Αλλά ούτως ή άλλως, συγγνώμη όσον αφορά στα παιδιά, συγγνώμη. Έτσι ο τρόπος που μπορούμε πραγματικά εισόδου σχετικά με την εντολή μας, το επιχείρημα είναι ότι μπορεί να κάνει chmod δικαιώματα της ομάδας κάθετος, όπου η ομάδα είναι ακριβώς ό, τι ομάδα προσπαθούμε να αλλάξουμε. Και τα δικαιώματα είναι ό, τι θέλουμε να προσθέσει σε αυτό. Έτσι, για παράδειγμα, η συν προσθέτει δικαιώματα, και η αφαίρεσης αφαιρεί δικαιώματα. Και τα είδη της ομάδας έχουμε ένα μας για όλους, u για τους χρήστες, g για τις ομάδες, ή o για τους άλλους. Είναι ένα αφηρημένο κομμάτι τώρα. Αλλά θα πάμε πάνω από ένα ζευγάρι παραδείγματα απλώς για να αποδειχθεί αυτό πραγματικά γρήγορα. Όλοι καλή σε αυτό διαφάνεια, ώστε να μπορώ να προχωρήσω; Δροσερός. Έτσι, για παράδειγμα, rwx. Πριν μιλήσουμε για το τι αντιπροσωπεύει, πρώτα απ 'όλα τι rwx σημαίνει; Αν δείτε ότι αυτό το συγκεκριμένο αρχείο έχει δικαιώματα rwx του, τι σημαίνει η άτομο μπορεί να είναι σε θέση να κάνει; Κοινό: διαβάσει, να γράψει και να εκτελέσει. ANDI PENG: Ναι, ακριβώς. Μπορείτε να διαβάσετε εγγραφής και εκτέλεσης. Επειδή όλα τρεις από αυτούς χαρακτήρες είναι παρόντες. Έτσι, αν πάμε μπροστά και να μιλήσει γι 'αυτό από την άποψη των bits, η rwx μπορεί επίσης να παρασταθεί ως 700. Διότι, όπως μπορείτε να δείτε σε οποιαδήποτε είδος της άδειας κατάλογο αρχείων, υπάρχουν τρεις τριάδες. Στην περίπτωση αυτή, μόνο το πρώτο τριάδα έχει τίποτα εκεί. Έτσι, στην περίπτωση αυτή, ο r είναι 4, το w είναι 2, και το χ είναι 1. Αν προσθέσετε αυτά συνολικά, είναι 7. Και έτσι εάν μετατρέψετε να δυαδικό, είναι 700. Επειδή 7 είναι η πρώτη τριάδα. 0, δεν υπάρχει τίποτα παρούσα στη δεύτερη τριάδα. Και τότε δεν υπάρχει τίποτα που υπάρχουν στο η τρίτη τριάδα, έτσι ώστε να είναι μια άλλη 0. Έτσι, με την ίδια έννοια, ένα μάτσο τριάδες μπορεί να εκπροσωπείται μόνο σε bits, μόλις σε δυαδικό, καθώς και. Έτσι, 700 σημαίνει ακριβώς το ίδιο πράγμα όπως rwx ------ άποψη των δικαιωμάτων. Όλοι σαφείς ως προς αυτό; Δροσερός. Και έτσι chmod 111 θα δώσει η οποία δικαιώματα για το αρχείο; Να σας δώσει μια-δυο παιδιά δευτερόλεπτα για να μετατρέψει αυτό. Θυμηθείτε, το πρώτο τριάδα είναι για το χρήστη. Η δεύτερη τριάδα είναι για την ομάδα. Και η τρίτη τριάδα είναι για όλους. Και έτσι chmod 111 θα δώσει το οποίο είδος των αδειών και σε ποιον; Πάρτε ένα ζευγάρι δευτερόλεπτα για να σκέφτομαι και να έρθουν πίσω. Ναι. Κοινό: Έτσι, ο καθένας μπορεί να το εκτελέσει. ANDI PENG: Yup, ακριβώς. Κοινό: Αλλά κανείς δεν μπορεί να διαβάσει ή να γράψει. ANDI PENG: Και μη διστάσετε για να εξηγήσει σε όλους πώς κατέληξε στο συμπέρασμα αυτό. Κοινό: Λοιπόν, για το χρήστη, ο ομάδα, και ο κόσμος, είναι όλα 1, η οποία είναι ο κωδικός για το εκτελέσιμο. ANDI PENG: Ναι, ακριβώς. Έτσι 1, στην περίπτωση αυτή, όλοι γνωρίζουμε ότι είναι ότι αυτό είναι το εκτελέσιμο κώδικα. Επειδή η ανάγνωση είναι 4. Το γράψιμο είναι 2. Και το εκτελέσιμο είναι 1. Έτσι είναι και οι τρεις τριάδες είναι 1, ότι σημαίνει ότι στον κόσμο, για το χρήστη, και στην ομάδα, αυτοί είναι όλα τα εκτελέσιμα. Όλοι καλό με αυτό; ΕΝΤΆΞΕΙ. Και έτσι ο δεύτερος τρόπος ότι μπορούμε πράγματι γράφω αυτό, επίσης, είναι να σας θα μπορούσε να κάνει ακριβώς το chmod ένα συν x. α: το σύνολο ή ο καθένας. Η συν σημαίνει δίνοντας δικαιώματα. Και τότε το x είναι εκτελέσιμο. Έτσι, υπάρχουν δύο εντολές είναι στην πραγματικότητα ταυτόσημες. Έτσι, εάν θέλετε να εκτελέσετε αυτό στο τερματικό σας, κάνετε chmod 111, το όνομα του σας κατάλογο ή το αρχείο σας. Ή μπορείτε να κάνετε chmod a Plus X, Το όνομα του αρχείου καταλόγου σας. Το ίδιο πράγμα, απλά ένας ευκολότερος τρόπος, ίσως, για κάποιους να εκπροσωπεί ή αλλαγή δικαιώματα αρχείου. Κάθε μία εντάξει με chmod πριν προχωρήσουμε; Δροσερός. Έτσι, τώρα θα πάμε να το κεφάλι σε ένα λίγες διαφάνειες πολύ αφηρημένων εννοιών ότι είμαι λίγο πολύ πρόκειται να αεράκι μέσα. Και είναι εντελώς εντάξει, αν σας Δεν καταλαβαίνω τα πάντα. Ακόμη και τώρα, εγώ ακόμα δεν το κάνουν πραγματικά καταλαβαίνουν τα πάντα εντελώς. Αλλά είναι περισσότερο από να πάρει το ανώτερο επίπεδο κατανόησης το πώς μερικές από αυτές λειτουργούν τα πράγματα. Έτσι θα πάμε να μιλήσουμε γρήγορα για το πρωτόκολλο TCP / IP, το οποίο απέχει μόλις ελέγχου κιβωτίου ταχυτήτων Πρωτόκολλο κάθετο πρωτοκόλλου Internet. Ανάκληση από διάλεξη, David, έκανε σας διδάξει Το παράδειγμα όπου θα περάσει οι σημειώσεις σε ένα φάκελο έως αρέσει η κορυφή της αίθουσας διαλέξεων; Έτσι, στο αμφιθέατρο της Νομικής Σχολής David αποδεικνύεται ουσιαστικά πώς το TCP / IP λειτουργεί η αίσθηση ότι το μόνο που είναι είναι ένα μέσο για την εξασφάλιση ότι τα δεδομένα έχει παραδοθεί σε ένα διακομιστή ή στο διαδίκτυο. Έτσι, στο παράδειγμα του περιβλήματος και το μήνυμα, ο χρήστης στο τέλος θα μπορούσε να δει ότι, OH, έπρεπε να λαμβάνουν τέσσερα πακέτα πληροφοριών. Αλλά στην πραγματικότητα έλαβε μόνο τρεις. Αυτό σημαίνει ότι πρέπει να του λείπει ένα. Και κάποιος δεν παραδόθηκε. Και έτσι το πρωτόκολλο TCP / IP στο διαδίκτυο, μέσω του υπολογιστή σας και του διακομιστή, κάνει ακριβώς το ίδιο πράγμα. Το μόνο που κάνει είναι να καθορίσετε μια πλαίσιο, το οποίο τα χαμένα στοιχεία πακέτα μπορούν να δυσανασχετούν και να λάβει. Όπως και στο διαδίκτυο, όταν προσπαθείτε να έχουν πρόσβαση σε αρχεία στο διαδίκτυο ή να στείλετε αρχεία στο φίλο σας ή ματιά στο Web browsers, χιλιάδες και χιλιάδες της δισεκατομμύρια και δισεκατομμύρια των bytes πληροφοριών μεταφέρονται ανά χιλιοστό του δευτερολέπτου. Και είναι πραγματικά, πραγματικά σύγχυση. Και είναι πραγματικά δύσκολο να ξέρει πραγματικά τι έχει αποσταλεί και τι δεν έχει σταλεί. Και έτσι το πρωτόκολλο TCP / IP ορίζει μόνο ένα συνεκτικό πλαίσιο στην οποία ιστού σας browser και server σας μπορούν να επικοινωνούν είδος με το άλλο, μόλις βεβαιωθείτε ότι τα πακέτα όλοι εδώ και τίποτα δεν έχει χαθεί και όλα τα στοιχεία που ζητήσατε είναι στην πραγματικότητα εμφανίζεται σωστά. Όλοι ΟΚ για ακριβώς αυτό πολύ σύντομη υψηλού επιπέδου καταλαβαίνουν; Δροσερός. Μέχρι τότε θα πάμε για να μετακινήσετε σε μιλάμε για HTTP, η οποία Είναι ακριβώς Hypertext Transfer Protocol. HTTP, όλα είναι είναι ανεξάρτητα από οποιαδήποτε σελίδα ή το αρχείο είναι προσβάσιμο στην ιστοσελίδα σας, ο διακομιστής επιστρέφει ένα HTTP κωδικός κατάστασης στην απάντηση με το αίτημα να διασφαλίσουμε ότι είτε, OH, το αίτημα αυτό πέρασε. Και όλα είναι εμφανίζεται σωστά. Ή, Ω, όχι, 404. Κάτι πήγε στραβά. Αχ, δεν μπορώ να εμφανίσει. Όλα είναι πως ό, τι είναι προσπαθείτε να αποκτήσετε πρόσβαση, χρησιμοποιήσετε ως χρήστης προσπαθεί να αποκτήσει πρόσβαση, σχετικά με την internet-- απλώς να διασφαλίσουμε ότι είτε έχετε επιτυχώς πρόσβαση ό, τι ήταν ή όχι επιτυχώς η πρόσβαση ό, τι ήταν. Και έτσι η κατάσταση HTTP κωδικός σας παρέχει μόνο ένα μέσο για να είναι σε θέση να γνωρίζουν αν ή δεν ήταν επιτυχής ή όχι. Έτσι, για παράδειγμα, ένα αίτημα παράδειγμα. Μπορείτε να δείτε εδώ είναι συνήθως συνήθως τέσσερις γραμμές. Έχουμε ένα HTTP GET 1.1, το οποίο είναι ακριβώς η διεύθυνση URL αιτήματος μέθοδο, το πρωτόκολλο εκδοχή, το όνομα του πεδίου, και η τιμή του πεδίου. Έτσι, δεν χρειάζεται να εντελώς απομνημονεύσουν τίποτα εδώ. Ακριβώς το είδος του συμβολαίου τον εαυτό σας με το πώς αυτοί φαίνονται. Σε αυτό το παράδειγμα, η αίτηση μέθοδος URL είναι απλά οποιοδήποτε αίτημα θέλετε να στείλετε το διακομιστή. Όπως, hey, server, θέλω πραγματικά να Πρόσβαση μπλα, μπλα, μπλα, σελίδα HTTP. Η έκδοση του πρωτοκόλλου είναι ακριβώς ό, τι έκδοση υποδοχής σας ή τον server σας χρησιμοποιεί για την πρόσβαση σε πληροφορίες. Το όνομα τομέα είναι η ιστοσελίδα ή η URL που προσπαθείτε να αποκτήσετε πρόσβαση, Στην περίπτωση αυτή, www.apple.com. Και η τιμή του πεδίου είναι ακριβώς όπως το πλήρες όνομα, αξία. Και μπορεί να είναι οποιοδήποτε είδος του συνδυασμού από γράμματα ή αριθμούς ή οτιδήποτε άλλο. Έτσι, ένα τυπικό αίτημα, έτσι τι ο υπολογιστής σας πραγματικότητα αποστέλλει στον server που λέει, hey, Ξέρετε τι χρειάζομαι αυτό εμφανίζεται, αυτό είναι το είδος του αιτήματος ότι πραγματικά λαμβάνουν. Ένα παράδειγμα απάντηση του ό, τι ο διακομιστής θα στείλει πίσω σε σας θα είναι λίγο πολύ το ίδιο πράγμα, παρά μόνο με έναν κωδικό κατάστασης στο επάνω μέρος. Έτσι, 200, 2 0 0 είναι πάντα ο κωδικός κατάστασης για OK. Όπως, εντάξει, το αίτημα αυτό πέρασε. Θα ήταν σε θέση να έχουν πρόσβαση σε τα πάντα σωστά. Η ζωή είναι ωραία. Η ζωή είναι ωραία. Τα πάντα είναι εντελώς καλά. Και έτσι αυτό ακριβώς λέει το πρόγραμμα περιήγησης και διακομιστή σας, hey, όλα είναι καλά. Πήρα όλες τις πληροφορίες που χρειάζεστε. Δροσερός. Αλλά το πρόβλημα είναι Μερικές φορές τα προβλήματα έρχονται όταν have-- διαρκέσει νομίζω Μίλησα για τα διπλότυπα. Έχετε λιγότερο καλές απαντήσεις. Έτσι, για παράδειγμα, 404 είναι η σελίδα δεν βρέθηκε. Έχετε μερικές φορές Απαγορευμένη πρόσβαση. Έχετε διάφορα άλλα κωδικοί κατάστασης που είμαι βεβαιωθείτε ότι έχετε δει όλα, όταν είστε προσπαθούν να κάνουν έρευνα στο διαδίκτυο. Και το πρόγραμμα περιήγησής σας δίνει η, όχι, δεν μπορούν να έχουν πρόσβαση. Και είστε όπως, επίσης, χάλια. Έτσι απλά λίγο πολύ, υπάρχει μερικά αρκετά κοινά κωδικούς κατάστασης. Ίσως να εξοικειωθείτε με την οποία αυτά είναι αυτά. Το πιο αστείο ότι ένα Νομίζω ότι έχω ακούσει ποτέ of-- αν τύχει να κοιτάζω προς τα πάνω όλα αυτά σε απευθείας σύνδεση, για κάποιο λόγο δεν υπάρχει στην πραγματικότητα ένα πραγματικό κωδικό κατάστασης ονομάζεται 418 Είμαι τσαγιέρα. Έψαξα στο Google, όπου η προέλευσή του ήταν από. Και προφανώς ένα Πρωταπριλιά Ημέρα μερικές δεκαετίες πριν, κάποιος σκέφτηκε ότι θα ήταν ξεκαρδιστικό για να δημιουργήσετε ένα νέο κωδικό κατάστασης που ονομάζεται 418 Είμαι μια τσαγιέρα. Νόμιμα, το όνομα αυτό Κωδικός ονομάζεται είμαι τσαγιέρα. Ξεχάσω τι σελίδα θα πρέπει να πάει να κάνει πραγματικότητα αυτή την ένδειξη. Αλλά προφανώς, μπορείτε πραγματικά να αποκτήσετε έναν κωδικό κατάστασης του είμαι μια τσαγιέρα με κάποιο τρόπο μέσω κάνουμε κάτι. Έτσι, υπάρχει και εκατοντάδες εκατοντάδες των κωδικών κατάστασης. Μερικοί απ 'αυτούς κάνουν περισσότερα αίσθηση από ό, τι άλλοι. Αλλά λίγο πολύ απλά συμβολαίου τον εαυτό σας με τις πιο συνηθισμένες. Η ζητούμενη σώμα οντότητα σύντομη και stout, προφανώς. Έτσι, μερικές φορές υπάρχουν περισσότερα τρομακτικό λάθη από ό, τι είμαι τσαγιέρα. Αλλά αυτό είναι κάτι που υποθέτω κατά κάποιο τρόπο ελπίζουμε να χτυπήσει. Αλλά δεν νομίζω ότι θα σας. Όλοι καλή κατάσταση για λίγο κώδικες, τα αιτήματα, τις διαδικασίες, τη διαδικασία λήψης βεβαιωθείτε ότι τα στοιχεία παραδίδονται σωστά; Έτσι, τώρα θα πάμε να μετάβαση σε ένα διασκεδαστικό μέρος του τμήματος σήμερα, όπου μπορούμε να μιλήσουμε λίγο για την HTML. HTML, όλα είναι υπερκειμένου Markup Language. Είναι ακριβώς η τυπική γλώσσα μπορείτε να χρησιμοποιήσετε για να δημιουργήσετε όλα τα web σελίδες στο διαδίκτυο. Έτσι, κάθε ιστοσελίδα, τι είναι αγαπημένη σας ιστοσελίδα; Ποια είναι η αγαπημένη σας ιστοσελίδα; Κοινό: [δεν ακούγεται]. ANDI PENG: Συγνώμη; Κοινό: Tumblr. ANDI PENG: Tumblr. Έτσι Tumblr είναι γραμμένο σε HTML. Και έτσι θα πραγματικά να περάσει και παίζουν με μερικά από αυτά τα πράγματα αργότερα. Λίγο πολύ όλα όσα πρέπει να μάθουν, να γνωρίζουν, να γράφεις HTML μπορείτε πιθανώς μόνο το Google στο διαδίκτυο. HTML, δεν είναι ένα πρόγραμμα όπως η C όπου μπορείτε να δημιουργήσετε μεταβλητές και να κάνουμε δροσερά πράγματα με αυτό. Είναι περισσότερο από ακριβώς, ω, αυτό είναι το πώς θα θέλουν τα πράγματα να εμφανίζονται στην ιστοσελίδα μου. Και είμαι απλώς πρόκειται να το βάλετε σε. Και πρόκειται να το στυλ. Έτσι, HTML, κατά μία έννοια, είναι ακριβώς όπως μια μορφοποίηση ή πρότυπο γλώσσας. Είναι πολύ πιο εύκολο. Είναι πολύ πιο εύκολο να μάθουν, πολύ πιο εύκολο να γράψει στο ό, τι τυπικό προγραμματισμό σας γλώσσα, είναι πολύ εύκολο, προσιτό και πολύ φιλική. Έτσι, είμαστε πραγματικά πρόκειται να παίξει γύρω, γράψτε δική μας σελίδες σήμερα. Αλλά πριν ξεκινήσουμε, θα ήθελα απλώς να πάει πέρα ​​από κάποιες σύντομες βέλτιστες πρακτικές. Επειδή HTML είναι τόσο εύκολο γλώσσα και επειδή ακόμη Αν κάνετε μια-δυο πράγματα λάθος, μερικές φορές μπορεί να μην παρατηρήσετε, θέλουμε να διασφαλίσουμε ότι είμαστε στην πραγματικότητα ακολουθώντας τις βέλτιστες πρακτικές μας για να βεβαιωθείτε ότι τα πράγματα που θα μπορούσε να πηγαίνει γύρω, αλλά Δεν πρόκειται πάντα για να μην πάει δεξιά βεβαιωθείτε ότι είμαστε ελαχιστοποιείται. Έτσι, λίγο πολύ, βεβαιωθείτε κλείνοντας όλα τα tags σας σας όταν γράφετε σε μορφή HTML. Εάν το άνοιγμα σώμα, βεβαιωθείτε ότι είστε κλείνοντας με ένα σώμα κάπου. Θέλετε να βεβαιωθείτε ότι σας ιστοσελίδας επικυρώνει χρησιμοποιώντας ό, τι λέγεται η W3 επικύρωσης. Μπορείτε μόνο το Google ώστε online, και υπάρχει μια σύνδεση με αυτό. Και τότε θα θέλετε να ξεχωριστό HTML, η οποία είναι η γλώσσα σήμανσης σας από το ύφος σας, που είναι η γλώσσα του CSS ότι ο David έδειξε ότι είμαστε επίσης πρόκειται να παίξει λίγο με διάλεξη. Δροσερός. Έτσι, κάθε φορά που θέλετε να εκτελέσετε HTML στη συσκευή CS50, θα πάμε για να τρέξει ένα πρόγραμμα που ονομάζεται Apache, τα οποία όλα είναι απλά ένα ενσωματωμένο στο web server ότι όλοι στην CS50 έχει πρόσβαση. Καλούμε το apache50 μόνο και μόνο επειδή ήθελα να καλέσω όλα 50 σε CS50. Έτσι, ο τρόπος που θα ξεκινήσετε το web CS50 server είναι πληκτρολογώντας στην εντολή σας γραμμή apache50 ξεκινήσει τελεία. Και αν θέλετε να τελειώσει σε οποιοδήποτε ώρα, μπορείτε να apache50 δεν λήγει τελεία. Και μπορείτε απλά να πατήσετε Enter. Και θα πρέπει να είναι τίτλος εδώ σύντομα. Ναι. Έτσι, είμαι απλώς πρόκειται να πάει γρήγορα πάνω ένα παράδειγμα ενός πραγματικά σύντομη ιστοσελίδας. Και θα πάμε να δαπανήσει όπως 10, 15 λεπτά παίζοντας γύρω από τη σύνταξη του δικού μας ιστοσελίδες. ΕΝΤΆΞΕΙ. Έτσι, εδώ στο IDE-- μπορεί να δει ότι ο καθένας; Όχι ακριβώς. Εδώ, θα μεγεθύνετε. Έχω μόλις πήρε αυτή τη σύντομη πρότυπο εδώ με τίποτα πραγματικά σε αυτό. Είμαστε ακριβώς πρόκειται να γράψει γρήγορα ένα πρόγραμμα HTML στην οποία εμείς απλά να πω γεια στον κόσμο. Έτσι ίδιο πράγμα όπως στη C, τώρα είμαστε ακριβώς πρόκειται να το κάνει σε μορφή HTML. Υπάρχει κάποιος που θέλει πραγματικά να μόνο δοκιμάστε να μου δίνετε το πρώτο πράγμα που θα πρέπει να τεθεί σε ένα έγγραφο HTML; Ναι. Κοινό: Οι παρενθέσεις, η [δεν ακούγεται]. ANDI PENG: Ναι. Έτσι, κάτι που είναι πολύ μοναδικό σε HTML που έχουμε συνήθως κατά παράδοση δεν αντιμετωπίζουν σε άλλες εντολή γλώσσες προγραμματισμού επίπεδο γραμμής είναι ότι στην πραγματικότητα να καθορίσετε τον τύπο του αρχείου ότι αυτό πρόκειται να είναι στην κορυφή του κώδικά μας. Έτσι σε αυτό το instance-- νομίζω αυτή είναι η σωστή εντολή, σωστά; Ναι. Στην κορυφή, απλά θέλετε να συμπεριλάβετε Έκρηξη DOCTYPE html σε παρένθεση μόνο για να πείτε στον υπολογιστή σας, hey, να κοιτάξει έξω. Και HTML έγγραφο έρχεται. Και τότε πώς θέλουμε για να ξεκινήσει το αρχείο μας; Αν θέλουμε απλώς να πω ένα γεια, έχουν web σελίδα που λέει γειά σου στον κόσμο, πώς θα πάτε για την οικοδόμηση αυτό; Στην πραγματικότητα, ας γυρίσουμε στο Google. Και μπορούμε να το κάνουμε πραγματικότητα αυτό. Ναι. Εκεί πάμε. Έτσι HTML. Όπως μπορείτε να δείτε, το πρόγραμμα περιήγησης μου είναι στην πραγματικότητα αυτόματα styling αυτό για μένα. Το ίδιο πράγμα όπως στη C, όταν τη δημιουργία ενός ανοικτού σγουρά στήριγμα, Ο περιηγητής σας αυτόματα προσθέτει σε μια στενή σγουρά στήριγμα. Ευτυχώς, IDE μας αγαπά να το κάνει αυτό για εμάς. Έτσι τώρα μπορούμε να το είδος του τύπου η αρχή μιας ετικέτας, και πρόκειται να μας πει πάντα να θυμηθείτε να πληκτρολογήσετε το τέλος της ετικέτας. Νομίζω ότι αυτό πρέπει να κεφαλαιοποιούνται. Και μετά θέλουμε να προσθέσουμε, πάντα, μία κεφαλή στην οποία είναι ο τίτλος. Εμείς απλά θέλουμε να καλέσετε ίσως γεια αυτή, και στη συνέχεια το σώμα. Και εκεί θα πάτε. Αυτό είναι στην πραγματικότητα το έγγραφο HTML μας. Έτσι, ο τρόπος που κάθε έγγραφο HTML είναι πάντα στιλ in-- ίδιο πράγμα με int main άκυρη. Μπορείτε πάντα θέλουν να έχουν HTML μια ανοικτή και στενή ετικέτα στην κορυφή και στο κάτω μέρος του κωδικού σας. Θέλετε να έχετε ένα κεφάλι μέσα το οποίο περιέχει τον τίτλο, ακριβώς ό, τι πρόκειται να εμφανιστεί η καρτέλα του web σας σελίδα, και στη συνέχεια ένα σώμα μέσα από τα οποία θα εμφανιστεί στην πραγματικότητα το περιεχόμενο από ό, τι θέλετε να κάνετε. Έτσι, αν θέλετε να τρέξετε στην πραγματικότητα αυτό, Πάω να μεγεθύνετε έξω. Μπορείτε πραγματικά να αρχίσετε apache50 ξεκινήσει τελεία. Δροσερός. Και έτσι όπως μπορείτε να δείτε, τώρα αυτός ο σύνδεσμος έχει σκάσει επάνω. Λέει το site σας είναι τώρα διαθέσιμο σε κάποιο παρακάτω σύνδεσμο. Έτσι, όλα τα IDE μας έχει done-- Δεν IDE, sorry-- ναι, IDE μας έχει κάνει είναι να δημιουργήσετε ένα web σύνδεσμος κατά την οποία όλες τις ιστοσελίδες μας Μπορείτε να έχετε πρόσβαση στο διακομιστή. Έτσι, ας ρίξουμε μια ματιά εδώ. Ας κλικ σε αυτό, πηγαίνετε στο hello.html. Και θα δείτε μια πολύ απλή ιστοσελίδα για την hello world. ΕΝΤΆΞΕΙ. Είμαστε στην πραγματικότητα πρόκειται για απλά έχουν everyone-- ναι, τι συμβαίνει; Κοινό: Έχω ένα βασικό ερώτημα. ANDI PENG: Yup. Κοινό: Πώς μπορείτε να αποθηκεύσετε το αρχείο σας ως αρχείο HTML; ANDI PENG: Ναι. Έτσι, αν ήμουν στη θέση να δημιουργήσετε ένα νέο αρχείο, αν το κάνω νέου αρχείου, Untittle, αν το κάνω, section.html, έκρηξη, αυτό είναι το μόνο που έχω να κάνω. Κοινό: [δεν ακούγεται]; ANDI PENG: Όχι. Κοινό: [δεν ακούγεται]. ANDI PENG: Όχι. Κοινό: [δεν ακούγεται]. ANDI PENG: Ναι. Λίγο πολύ, η επέκταση το αρχείο που είναι μέσα σας IDE, ότι λέει στον υπολογιστή, ότι λέει το πρόγραμμα περιήγησης, hey, κοίτα έξω. Αυτό πρόκειται να είναι κωδικός γραμμένα σε αυτή τη γλώσσα. Έτσι, για παράδειγμα, στο Microsoft Word, τι κάνουν όλα τα έγγραφα του Word τελειώνουν με, τι παράταση; .doc ή .docx, σωστά; Το μόνο που κάνει είναι να διευκρινίζει του λειτουργικού σας συστήματος, hey, έχετε ένα έγγραφο του Word να ανεβαίνει. Ανοίξτε το με το Word. Το ίδιο πράγμα με αρχεία PDF. Γνωρίζει, OH, χρειάζομαι να ανοίξουν αυτό το αρχείο με το Adobe Reader ή Adobe Acrobat. Και έτσι λειτουργεί ο επεκτάσεις ίδιο τρόπο όπως και στον υπολογιστή σας. Αν έχετε ορίσει κωδικό σας σελίδα να ονομαστεί HTML, τότε ξέρει, Ω, έχεις κώδικα HTML. Πάω να την αντιμετωπίσουμε ως κώδικα HTML. Έτσι είναι πανέξυπνο με αυτή την έννοια. Έτσι, ο καθένας, ας πάρουμε σαν 10 λεπτά και μόλις δημιουργήσετε τις δικές μας ιστοσελίδες. Ας προσθέσουμε στα υπέροχα πράγματα. Νιώστε ελεύθεροι να πείτε ό, τι θέλετε. Θέλω μόνο να βεβαιωθείτε ότι Οι διακομιστές του καθενός λειτουργεί σωστά πριν σας ελευθερώσει στη PSET. Διότι, αν οι διακομιστές σας Δεν τρέχει για την PSET, ότι θα είναι πραγματικά, πραγματικά κακός. Είμαι ακριβώς πρόκειται να επιπλέουν γύρω και να δούμε τι ο καθένας εργάζεται πάνω. Πώς πάει? Κοινό: Γύρισα μόλις στον υπολογιστή μου. ANDI PENG: Αυτό είναι ΟΚ. Κοινό: [δεν ακούγεται]. ANDI PENG: Απλά IDE σας. Ναι. Κοινό: [δεν ακούγεται]. ANDI PENG: Είναι εντάξει. Κοινό: [δεν ακούγεται]. ANDI PENG: Απόλυτα πρόστιμο. Είναι όλοι πρόσβαση web server τους εντάξει; Είναι apache50 τρέχει εντάξει; Νομίζω ότι σε ορισμένες από τα άλλα τμήματα, εμείς είχε προβλήματα με τους ανθρώπους που δεν να είναι σε θέση να έχουν πρόσβαση στο διακομιστή. Ναι. Έτσι, μπορείτε απλά τρέξτε apache50 χώρο αρχίσει περίοδος χώρο. Κοινό: [δεν ακούγεται]. ANDI PENG: Yup. Καλός? Κοινό: [δεν ακούγεται]. ANDI PENG: Ω, εντάξει. Έτσι, είστε υποτίθεται για να έχουν ένα χώρο. Έτσι apache50-- Κοινό: έκανα. ANDI PENG: --start χώρο. Κοινό: Ω, χώρος τελεία. ANDI PENG: Yup, χώρος τελεία. Ορίστε. Έτσι, στη συνέχεια, αν έχετε μια σελίδα HTML που δημιουργήθηκε, τότε μπορείτε απλά να πάτε απευθείας στο σύνδεσμο που καθορίζει. Και θα πρέπει να είναι σε θέση να έχουν πρόσβαση. Ο καθένας ήταν σε θέση να πρόσβαση σε ιστοσελίδες τους εντάξει; Κοινό: [δεν ακούγεται]. ANDI PENG: Ω, αυτό είναι εντάξει. Κοινό: [δεν ακούγεται]. ANDI PENG: Ναι. Νομίζω ότι μπορείτε πραγματικά να ανοίξετε εντός του προγράμματος περιήγησης, το πρόγραμμα περιήγησης και όχι μόνο το πρόγραμμα περιήγησης σας IDE. Ναι, νομίζω ότι αν αντιγραφή και επικόλληση. Κοινό: Και στη συνέχεια, πώς μπορούμε να το κλείσετε; [ΜΗ ΑΚΟΥΣΤΌΣ] ANDI PENG: Ναι, το κάνετε apache50 σταματήσει χωρίς περίοδο. Ναι. Κοινό: [δεν ακούγεται]. ANDI PENG: Χωρίς περίοδο. Ναι. Εκεί πάμε. Ναι. Είμαστε δημιουργώντας τις δικές μας ιστοσελίδες. Κοινό: Ω, δροσερό. ANDI PENG: Ναι. Κοινό: Έχω μια ερώτηση. Έτσι apache 50-- ANDI PENG: 50, ναι. Κοινό: [δεν ακούγεται]. ANDI PENG: Τι; Αυτό είναι παράξενο. Βλέπε, ότι ήταν το είδος του θέματος ότι συνέβαινε πριν. ΕΝΤΆΞΕΙ. Δείτε μένα μετά ενότητα. Επειδή έχουν κάποια προβλήματα με τον server. Και θέλετε να κάνετε βεβαιωθείτε ότι ο διακομιστής σας είναι τρέχει πριν από την έναρξη του το chipset. Επειδή πρόκειται να το χρειαστείτε. Ναι. Υπάρχει κανείς άλλος που δεν ήταν εκεί είναι σε θέση να πάρει τους server για να ξεκινήσετε; Για όσους από εσάς θέλετε να προσθέσετε επιπλέον στυλ στις ιστοσελίδες σας, μπορούμε να κάνουμε πραγματικά ό, τι Ο David έκανε στην ομιλία καθώς και, η οποία είναι να δημιουργήσετε ένα πρόσθετο στυλ φύλλο, το οποίο είναι ένα CSS τελεία, με υπερχείλιση Στυλ Φύλλο και στην πραγματικότητα απλά προσθέστε στο. Έτσι, για παράδειγμα, έχω μόλις δημιουργήσατε λίγο πολύ σχεδόν το ίδιο ακριβώς ένα Ο David έκανε στη διάλεξη. Μπορείτε λίγο πολύ ακριβώς κάνει το σώμα. Έχετε ό, τι καλούνται ετικέτες στις οποίες μπορείτε να εφαρμόσετε σε IDE ανεξάρτητα από το τμήμα θέλετε μέσα σας πραγματική σε HTML σελίδα. Έτσι, το σώμα της σελίδας, μπορείτε μπορεί να κάνει το κείμενο Κέντρο Στοίχιση. Και τότε θα δημιουργικός μια ετικέτα που ονομάζεται κορυφή μέσα εκ των οποίων θέλω αυτά τα πράγματα να να συμβεί, να ορίσετε ένα μεγαλύτερο μέγεθος pixel για τη γραμματοσειρά. Θέλω το βάρος της γραμματοσειράς να είναι τολμηρή. Και θέλω να το χρώμα είναι μπλε, λίγο αυθαίρετο αξίες που αποφάσισα να επιλέξετε. Μπορώ να δημιουργήσω μια άλλη ετικέτα που ονομάζεται μέση. Μέγεθος γραμματοσειράς, το κάνουν ένα λίγο μικρότερο. Και τότε μπορώ να δημιουργήσω μια άλλη ετικέτα που ονομάζεται κάτω όπου θέλω το μέγεθος της γραμματοσειράς να είναι ακόμη μικρότερη ακόμα. Και έτσι λίγο πολύ αυτό είναι μόνο παράδειγμα του πηγαίου κώδικα ή κώδικα φύλλα στυλ ότι είναι πολύ εύκολο να απλά το Google. Εάν λέτε, OH, θέλω γραμματοσειρά μου να είναι πλάγια και σκούρο πράσινο, μπορείτε πιθανώς να το Google, και τότε θα σας πω οι κατάλληλες ετικέτες ή τα αναγνωριστικά για να δημιουργήσετε. Και έτσι ο τρόπος που θα πραγματικά είδος έχει αυτό σε ένα έγγραφο HTML ή να το χρησιμοποιήσετε είναι το μόνο που έχετε να κάνουμε εδώ είναι επικεφαλής προσθέσετε ένα σύνδεσμο με το φύλλο στυλ. Έτσι, μπορείτε να συνδέσετε μόνο href ίσων ανεξάρτητα από το όνομα του φύλλου στυλ σας είναι. Και τότε η σχέση είναι ένα φύλλο στυλ. Έτσι, μέσα σε οποιοδήποτε έγγραφο HTML, εφ ' όπως μπορείτε να συμπεριλάβετε το φυλλάδιο με CSS τελεία, θα πρέπει να είναι σε θέση να έχουν πρόσβαση σε και έχουν τις ιδιότητες εκεί. Έτσι, για παράδειγμα, εδώ έχω μόνο δημιουργήσετε μια άλλη ιστοσελίδα παράδειγμα. Αυτό είναι ευπρόσδεκτοι να ενότητα CS50 Τρίτη 2:00 - 3:30 με μένα. Και τότε έχω προσθέσει μία υπέροχη εικόνας που που ενδεχομένως θα πρέπει να είναι σε θέση να δουν. Έτσι, αν ρίξετε μια ματιά εδώ, αν πάτε να style.html, δημιουργήσαμε μια ιστοσελίδα με τα γατάκια. Επειδή το γατάκι είναι φοβερό. Έτσι, προσθέτοντας μια εικόνα ακριβώς img SRC σύνδεσμο. Λίγο πολύ, αν υπάρχει κάθε είδους χαρακτηριστικό Θέλετε να προσθέσετε σας website-- οπότε ας πούμε, Θέλετε να προσθέσετε ένα μενού ή μια γραμμή αναζήτησης ή παρόμοια ένα image-- μόνο το Google πώς να το κάνουμε αυτό. Και απλά γδούπο σε αυτή τη μορφή. Και μπορείτε απλά όμορφο πολύ απλά προσθέστε στο. Είναι πραγματικά, πραγματικά εύκολο. Δημιουργούμε το δικό μας ιστοσελίδες τώρα. Αν θέλεις-- Κοινό: [δεν ακούγεται] ANDI PENG: Συγνώμη; Κοινό: [δεν ακούγεται]. ANDI PENG: Ω, η div είναι απλά ένα τμήμα λέγοντάς μου ότι, OH, έχω ένα ορισμένο τμήμα που ονομάζεται μέση στην οποία είμαι εφαρμογή CSS ετικέτα μου, και στη συνέχεια, άλλο τμήμα μου με το κάτω μέρος. Αυτό είναι το μόνο που σας λέει. Επειδή είναι ωραίο να κρατήσει τακτοποιημένο πράγματα σε τάξη, ώστε το πρόγραμμα να γνωρίζει πώς ακριβώς να τρέξει. Και πιστεύω ότι μπορώ να αντιγράψετε επικολλήσετε αυτό σε πραγματικές μου browser σας. Θα πρέπει να είναι μια χαρά. Ναι. Yay. Έτσι, αν ο καθένας θέλει να απλά προσπαθήστε να δημιουργήσετε μια ιστοσελίδα, θα πάρουμε ένα άλλο δύο έως τρία λεπτά. Θέλω μόνο να βεβαιωθείτε Οι διακομιστές του καθενός τρέχει και ο καθένας έχει μια ιδέα για το πώς να το κάνουμε αυτό. Αν εσείς θέλετε να βγάλτε τους υπολογιστές σας. Ακόμα δεν λειτουργεί; Κοινό: Είμαι απλά [δεν ακούγεται]. ANDI PENG: Ίσως προσπαθήσουμε να ενημερώσετε 50, καθώς και. Ναι. Κοινό: [δεν ακούγεται]. ANDI PENG: Ναι. Έτσι, ο τρόπος που θα ξεκινήσετε μια νέα web server στο IDE είναι μόνο κάνει apache50 έναρξη space space τελεία. Ήθελα απλώς να βεβαιωθείτε Οι διακομιστές όλοι τρέχουν στο OK. Κοινό: Εδώ, στο τερματικό; ANDI PENG: Ναι. Κοινό: [δεν ακούγεται]. ANDI PENG: Apache. Στην πραγματικότητα, νομίζω ότι είσαι τρέχει κάτι ήδη. Ναι, είστε πραγματικά τρέχει ένα διαφορετικό διακομιστή. Ναι, είσαι καλός. Εφ 'όσον αυτό δουλεύει, είσαι ΟΚ. Κοινό: OK. ANDI PENG: Υπάρχουν δύο τρόπους για να τρέξει διακομιστές. Έτσι εφ 'όσον ένας από τους τρόπους εργάζεται, είναι εντάξει. Θα πάρουμε άλλο ένα λεπτό ακριβώς το είδος της τελειώσουμε οι τελευταίες πινελιές ανεξαρτήτως Η ιστοσελίδα σας παιδιά ήθελα να κάνω. Είναι όλοι όσοι εργάζονται από το δρόμο; Όλοι οι διακομιστές είναι τρέχει εκτός για τα δικά σας; Θα καταλάβω. Και HTML είναι αρκετά απλή. Έτσι, νομίζω ότι είμαστε όλοι καλά. Ναι. Θα επανέλθω. Κοινό: [δεν ακούγεται]. ANDI PENG: OK. Κοινό: Έτσι είναι ακριβώς άρχισε να φορτώσει. ANDI PENG: Δεν ανησυχεί. Έτσι HTML, εκεί τον πηγαίο κώδικα που θα είναι σε απευθείας σύνδεση, μετά το τμήμα. Επίσης, ο David έχει ένα ολόκληρο μάτσο σε απευθείας σύνδεση, καθώς και. Ακριβώς το είδος του ματιά πάνω σε να δούμε πώς γράφονται σελίδες HTML. Είναι αρκετά εύκολο. Οτιδήποτε δεν ξέρετε, έχετε αρκετά πολύ απλά το Google και είστε καλοί. Θέλω μόνο να βεβαιωθείτε ότι Οι διακομιστές σας που τρέχει. Κοινό: Μήπως να το κάνουμε αυτό συχνά; ANDI PENG: Έχει συμβεί ποτέ σε μένα. Δεν ήξερα ότι θα μπορούσε ακόμη και αδρανοποίησης. Κοινό: [δεν ακούγεται]. ANDI PENG: Νομίζω everyone-- ορυχείο δεν έχει ποτέ πριν από νάρκη. Και δεν ξέρω γιατί. Είναι περίεργο. Κοινό: [δεν ακούγεται]. ANDI PENG: Είναι δική σας χειμερία νάρκη; Κοινό: [δεν ακούγεται]. ANDI PENG: Ναι. Κοινό: Είναι εντάξει. Έτσι, μόλις είναι ανοιχτή. ANDI PENG: OK. Θα ασχοληθεί με κάποιο διακομιστή ζητήματα μετά την ενότητα. Θα πρέπει να είναι μια χαρά. Παρά το γεγονός ότι, θέλετε να βεβαιωθείτε ότι έχετε να τους πάρει επιλυθεί πριν φύγετε. Διότι αν ο διακομιστής σας δεν λειτουργεί, τότε είστε δεν πρόκειται να είναι σε θέση να κάνει η το chipset, όπως και κάθε μέρος του το chipset. Έτσι θέλετε να είστε σίγουροι ότι δουλεύει. Δροσερός. Εντάξει. Πείτε αντίο γατάκια. Πέρασα πολύ χρόνο ψάχνοντας για ότι η εικόνα γατάκι να τεθεί σε. Έτσι, ούτως ή άλλως. Κοινό: [δεν ακούγεται]. ANDI PENG: Συγνώμη; Κοινό: [δεν ακούγεται]. ANDI PENG: Νομίζω ότι είναι στην ιστοσελίδα. Όπως και το spec; Κοινό: [δεν ακούγεται]. Νομίζω ότι το spec είναι απλά σε απευθείας σύνδεση στην εβδομάδα επτά. Νομίζω ότι λέγεται pset6, ακόμη και αν και είμαστε στην εβδομάδα επτά, η οποία είναι ένα υπολογιστικό κομμάτι. Κοινό: Αλλά θέλω να πω αν Θέλετε να δείτε αν at-- Θέλετε να σηκώσει τη δική μας εκδοχή η ιστοσελίδα από την κόβω μας; Έτσι, όπως είναι η server.c το chipset, έτσι δεν είναι; Αν θέλετε να εξετάσουμε αυτό το θέμα, όπως το πώς ελέγχει έξω; ANDI PENG: Ω, έτσι στην πραγματικότητα η το chipset, το μόνο που κάνουμε εδώ implementing-- εδώ, Θα πάω πάνω από αυτό για λίγο. Έτσι, για τον καθένα που μόλις πάρει στην ενότητα, εσείς είστε στην τύχη. Υπάρχει πολύ λίγο υλικό να καλύψει στην πραγματικότητα σήμερα. Είμαι ακριβώς πρόκειται να δαπανήσει το επόμενο 20 λεπτά που πηγαίνει πέρα ​​από το chipset βοήθεια. Επειδή υπάρχει κάποια χρήσιμα λειτουργίες που θα βοηθήσει τη ζωή σας. Και ελπίζουμε, θα είμαστε έξω εδώ μέσα όπως 20 λεπτά. ΕΝΤΆΞΕΙ. Έτσι pset7 είναι λάθος. Ακόμα κι αν είμαστε στην εβδομάδα επτά, είναι πραγματικά pset6. Θα αλλάξει αυτό. Όλα κάνουμε σε pset6 είναι η δημιουργία ενός web server. Αυτό ακούγεται τρομακτικό σούπερ. Και ειδικά για εκείνους από εσάς που έχετε ήδη κοίταξε τον κώδικα της διανομής, υπάρχει μια πολύ κώδικα, ένα πολύ κώδικα. Αλλά είναι εντελώς ΟΚ. Επειδή το κονιδιασμένος λιθίαση μέρος της δημιουργεί πραγματικά ο διακομιστής γίνεται από εμάς. Όλα είστε πραγματικά ρώτησε να κάνουμε σε αυτό το chipset είναι απλά για να κάνει κάποια επεξεργασία των strings στο αρχείο I / O. Είναι πραγματικά όπως αρκετά απλή. Έτσι, όταν πρώτα να κατεβάσετε that-- που εδώ έχει πράγματι ήδη κατεβάσει η το chipset και μια ματιά; Εντάξει. Ναι. Δεν υπάρχει σαν 500 γραμμές κώδικα ότι θα πάμε να είναι όπως, τι γίνεται? Και αυτό είναι εντελώς καλά. Βεβαιωθείτε ότι μπορείτε να παρακολουθήσετε τα περάσματα. Επειδή ο David and-- Δεν ξέρω. Δεν νομίζω ότι είναι Zamyla του, αυτό το ένα. Αλλά νομίζω ότι κάποιο άλλο περάσματα είναι αρκετά χρήσιμη από την άποψη της απλά επιτρέποντάς σας να γνωρίζετε τι συμβαίνει στο εσωτερικό του κώδικά σας. Και είναι εντελώς ΟΚ. Επειδή οι τέσσερις λειτουργίες που είστε ζήτησε να εφαρμόσει το έχουν πραγματικά μηδέν να κάνει με την πραγματική διακομιστή. Το μόνο που έχετε να κάνετε είναι απλά parsing διαφορετικές χορδές, αναζήτηση μέσω χορδές, για να βεβαιωθείτε ότι τα πράγματα που κάνουν ό, τι υποτίθεται ότι πρέπει να κάνει. Έτσι, για το σκοπό αυτό, υπάρχουν μερικά πολύ, πολύ χρήσιμες λειτουργίες, ειδικά για κορδόνι χειραγώγηση, ότι θα πρέπει όλοι να πάει πάνω από ότι σκέφτηκα είναι πολύ χρήσιμο για σας παιδιά να μάθουν πριν επιχειρήσετε την PSET. Και είναι όλα που περιέχονται εντός string.h βιβλιοθήκη σας. Δεν υπάρχει ίσως πιο χρήσιμη λειτουργίες δεν έχω περιλαμβάνονται εδώ, γιατί είτε δεν τους χρησιμοποιούν ποτέ ή ίσως απλά δεν ξέρουν ότι υπάρχουν. Μη διστάσετε να ρίξετε μια ματιά μέσα από student.h. Επειδή εκεί πρόκειται να είναι πολύ των λειτουργιών που είναι πολύ χρήσιμα. Έτσι, οι έξι που μπορώ να χρησιμοποιήσω τον περισσότερο μου PSET όταν έκανα την τελευταία εβδομάδα ήταν strtok, strchr, strrcher, strstr, strcasecmp, και strcpy. Και έτσι τα δύο τελευταία μπορεί να φαίνεται αρκετά γνωστό στους περισσότερους από εσάς. Περίπτωση Str συγκρίνουν, το μόνο που κάνει είναι να συγκρίνουμε χορδές για να ελέγξετε για την ισότητα, συμπεριλαμβανομένης και της περίπτωσης. Και strcpy απλά αντίγραφα μία χορδή σε ένα ρυθμιστικό διάλυμα. Και έτσι αυτά τα δύο θα πρέπει να φαίνεται πολύ γνωστά σε σας παιδιά σε αυτό το σημείο. Επειδή έχουμε χρησιμοποιήσει πολύ, ειδικά για τις τελευταίες psets. Αλλά η πρώτη ίσως τέσσερις δεν έχετε δει μέχρι τώρα. Αλλά Πάω να περπατήσετε λίγο μέσα από αυτά. Επειδή πρόκειται να κάνουν τη ζωή σας πραγματικά, πραγματικά εύκολο να μην for-- εύκολο, αλλά πολύ πιο εύκολο για το επερχόμενο το chipset. ΕΝΤΆΞΕΙ. Έτσι, char * strtok, αυτή είναι η λειτουργία ορισμός για τη λειτουργία αυτή περιείχε μέσα σε ένα αλφαριθμητικό, η βιβλιοθήκη. Αν σας δοθεί μια είσοδο του char * χορδών, η οποία είναι απλά μια κλωστή, ή μια σταθερή char * deliminator, DELIM για συντομία, όλα είναι που κάνει είναι το σπάσιμο το μεγαλύτερο string σε μια σειρά από αυτό που ονομάζουμε μάρκες που χωρίζονται από μια ορισμένη τιμή. Έτσι, κατά μία έννοια, αν ήταν να δώσει Σας section.7.php, αυτό είναι ένα string. Έτσι ώστε θα ήταν αν ήταν να περάσει σε αυτή την οδό, όπως μου, μου char * str, αν deliminator μου ήταν τελεία, όλα αυτά Θα κάνετε είναι να αναζητήσετε μέσα από κορδόνι. Και η πρώτη φορά που βλέπει μια τελεία, θα επιστρέψει μόνο με το δείκτη στην τελευταία συμβολική βρέθηκαν στη συμβολοσειρά πριν από αυτό. Γι 'αυτό θα πάει δεξιά εδώ. Και θα μου δώσει 7.php μόνο. Και αν ήταν να καλέσει το λειτουργήσει μια ακόμη φορά, θα μου δώσει μόνο το .php. Και έτσι όλα αυτά που κάνει η λειτουργία διασπά το μεγαλύτερο εγχόρδων σε μικρότερες χορδές ανάλογα σε ό, τι ψάχνετε. Και έτσι, για παράδειγμα, σε Look Up σας λειτουργία αν θέλετε να δούμε τι ορισμένους χαρακτήρες έρχονται για ή εάν συμβεί κουκκίδες ή επεκτάσεις συμβεί, Η λειτουργία αυτή θα ήταν αρκετά χρήσιμη. Ναι. Μην ανησυχείς. Αυτό θα είναι όλα be-- ναι, τι συμβαίνει; Κοινό: Έτσι, στην πρώτη γραμμή, αν ήμασταν χρησιμοποιώντας αυτό το παράδειγμα, τι θα εισάγουμε σε αυτό; ANDI PENG: Ναι. Θα καλέσει μόνο ένα strtok DELIM κορδόνι κόμμα. Και string είναι ίση με section.7.php. Και τότε είστε DELIM θα μπορούσε να είναι ίση με dot μόνο. Κοινό: OK. ANDI PENG: Ναι. Σαν αυτό. Όλες αυτές οι λειτουργίες είναι αρκετά παρόμοιο όταν θα πάτε μέσω αυτών. Κάνουν μόνο ελαφρώς διαφορετικά πράγματα. Αλλά όλοι πηγαίνουν να κάνουν τη ζωή σας πολύ ευκολότερη. Δεύτερον λειτουργία, αυτό είναι σαν να super, super, super σημαντικό, είναι the-- κρατήσει ψηλά. Ωχ. Strchr αναζητήσεις για την πρώτη occurrence-- πραγματικότητα, ναι. Strchr είναι η λειτουργία που Εγώ σίγουρα απλά πήγε πάνω. Έτσι αγνοούν τι είπα για την πρώτη λειτουργία. Είναι στην πραγματικότητα ονομάζεται strchr. Λοιπόν, τι θα συμβεί εδώ είναι αν σας δόθηκε ένα string σε μια char c, θα δώσει μόνο Σας όποια και αν ήταν. Ναι. Έτσι σκεφτείτε το σαν οδό, η οποία είναι ένα string, και CHR ως char. Έτσι το μόνο που προσπαθούμε να κάνουμε είναι να αναζητήσετε για την περίπτωση που μια χαρα είναι μέσα σε ένα string. Και γι 'αυτό ψάχνει για το πρώτο εμφάνιση του χαρακτήρα γ στην οδό κορδόνι. Κοινό: [δεν ακούγεται]. ANDI PENG: Yup. Και στη συνέχεια, αν δεν βρείτε αυτό, πρόκειται να επιστρέψει NULL. Έτσι, κάτι που πρόκειται να είναι πολύ χρήσιμο για σας παιδιά να κάνουν το PSET αν, ας πούμε, που ψάχνατε για ένα επέκταση σαν ένα .docx για το Word εγγράφου ή .pdf για ένα έγγραφο PDF, μπορείτε να το είδος του να το χρησιμοποιήσει για να εξετάσει για ό, τι είναι στη συνέχεια Κάθε φορά που βλέπετε μια κουκκίδα, σωστά; Και έτσι λίγο πολύ, αν τρέχει ότι μέσω της λειτουργίας, σε περίπτωση που επιστρέφει NULL, τότε ξέρετε ότι δεν το βρείτε dot, το οποίο σημαίνει ότι αυτή η προφανώς δεν είναι έγκυρο επέκταση αρχείου. Ή σε περίπτωση που επιστρέφει κάτι, τότε ξέρετε πρόκειται να επιστρέψουν ανεξάρτητα του στην πραγματικότητα μετά από την επέκταση. Έτσι, όσοι από εσάς που είχε άρχισε να ψάχνει μέσα αναζήτησης και να αναλύσει, αυτή η λειτουργία του πρόκειται να είναι εξαιρετικά χρήσιμη. Έτσι είμαστε στην πραγματικότητα θα να αποδειχθεί με τη χρήση αυτού. Γιατί δεν σας παιδιά προσπαθήστε να γράψετε λειτουργία bool πρόταση char * s ότι απλά επιστρέφει true αν s είναι πρόταση και ψευδής αλλιώς. Έτσι υπόδειξη, θα πάμε να χρησιμοποιήσει κατά πάσα πιθανότητα strchr. Ή μπορείτε απλά αναζήτηση στο κορδόνι για ένα συγκεκριμένο χαρακτήρα. Και έτσι σε μια πρόταση, αυτό που χωρίζει μια πρόταση από μια μη-πρόταση, τι ιδιοτυπίας; Κοινό: Ένας χώρος. ANDI PENG: Ένας χώρος, σωστά; Και έτσι αυτό που κάνουμε κατά πάσα πιθανότητα πρόκειται να Θέλετε να κάνετε κατά τη λειτουργία αυτή εδώ; Κοινό: [δεν ακούγεται]. ANDI PENG: Εμείς πάμε να θέλουν να strchr κορδόνι για την εμφάνιση του χώρου. Διότι σε περίπτωση που επιστρέφει κάτι, στη συνέχεια, γνωρίζουμε ότι αυτό πρέπει να είναι μια πρόταση. Αυτό σημαίνει ότι πρέπει να έχουν ένα χώρο αυτής της στοιχειοσειράς. Εάν δεν υπάρχει χώρος, τότε ξέρουμε ότι, hey, υποθέτω ότι δεν είναι ένα string. Είναι πιθανώς μόνο μια πραγματικά μεγάλη λέξη. Γι 'αυτό θα σας δώσω ένα ζευγάρι παιδιά λεπτά για να γράψει αυτή τη λειτουργία. Ναι. Κοινό: Πήρες Αυτή η σειρά από το χρήστη; ANDI PENG: Ναι. Έτσι, αυτό είναι μόνο μια λειτουργία. Φανταστείτε λοιπόν μέσα κύρια λειτουργία σας έχετε ήδη have-- ας πάμε εδώ. ΕΝΤΆΞΕΙ. Έτσι έχω γράψει αυτό το πρόγραμμα, εφόσον Έχω κύρια λειτουργία μου, όπου Έχω μόλις δημιουργήσατε δύο χορδές. Το πρώτο είναι Γεια σου, το όνομά μου είναι Andi-- σαφώς, μια φράση. Δεύτερο μου είναι ακριβώς Andi, σαφώς δεν είναι πρόταση. Και έτσι είμαι τρέχει τόσο εκείνων χορδές μέσω αυτής της λειτουργίας. Θέλω εσείς να γράψετε κρύο ποινή. Και είμαι αποθήκευση αυτές τις αξίες, και στη συνέχεια, μόλις εκτύπωσή τους. Έτσι σκεφτείτε ότι ο χρήστης είναι πρόκειται να περάσει σε μια σειρά. Και τότε θα πάμε σε ουσιαστικά καταλάβω αν είναι μια πρόταση ή όχι και να επιστρέψει true ή false ανάλογα. Αν εσείς θέλετε να δώσετε ένα μπράβο ή heads-up, νεύμα το κεφάλι, Είναι κάποιος είναι έτοιμος να ξεκινήσει αυτό, ότι θα ήταν καλό. Ίσως σαν 30 δευτερόλεπτα; Εντάξει. Ας δούμε αν μπορείτε να δοκιμάσετε γράφοντας αυτή τη λειτουργία. Έτσι ψευδο coding-- είμαι απλώς πρόκειται να είδος με τα πόδια μέσα από αυτό το δικαίωμα τώρα. Λίγο πολύ, γνωρίζουμε ότι η λειτουργία που πρέπει να χρησιμοποιήσουμε. Εμείς πάμε για να καλέσετε τη λειτουργία αυτή στις εγχόρδων και αναζήτηση για ένα χώρο μας. Εάν επιστρέφει κάτι, τότε πρέπει Γνωρίζουμε ότι, προφανώς, αυτό είναι μια πρόταση. Επειδή υπάρχει χώρους. Στη συνέχεια θα πάμε να επιστρέψει αλήθεια. Αλλιώς, θα πάμε να επιστρέψει false. Υπάρχει κάποιος που θέλει να δώσει μένα η πρώτη γραμμή του κώδικα ότι είμαστε στην πραγματικότητα θα να χρησιμοποιήσει για να γράψει αυτό; Είναι πραγματικά το πιο δύσκολο γραμμή κώδικα, καθώς και. Ναι. Κοινό: Αν strtok S-- ANDI PENG: Ακριβώς strchr. Κοινό: [παρεμβάλλοντας ΦΩΝΕΣ] χώρος δεν είναι ίση με null. ANDI PENG: Cool. Ακριβώς δεξιά. Όλοι καταλαβαίνουν ότι η πρώτη γραμμή; Εμείς πάμε για να καλέσει strstr, η οποία είναι μια λειτουργία που αναζητήσεις το string s για την χαρα του χώρου. Και αν διαπιστώσει, ότι πρόκειται να επιστρέφει ένα δείκτη στο σημείο όπου αυτό είναι. Αν δεν το βρείτε, πρόκειται να επιστρέψει NULL. Έτσι, αν επιστρέφει οτιδήποτε άλλο εκτός από NULL, τότε ξέρουμε ότι βρήκε ένα κενό. Βγάζει νόημα αυτό? Δροσερός. Εντάξει. Έτσι, αν ξέρουμε ότι είναι βρεθεί μια χώρου, τι θέλουμε να κάνουμε; Κοινό: Επιστροφή αλήθεια. ANDI PENG: Yup. Επιστροφή αλήθεια. Και τότε, κάποιος θέλει να τελειώσω τη λειτουργία για μένα; Ναι. Αλλιώς, έτσι απλά. Και προσπαθήσετε να χτίσετε αυτό. Ναι. Έτσι όπως εσείς να δείτε από το εξόδους, θυμηθείτε Booleans σε C Τα πάντα εκφράζονται σε δυαδικό. 1 είναι αληθές. 0 είναι ψευδής. Αν επρόκειτο να τρέξει αυτό λειτουργία σε ένα κορδόνι, το οποίο Είναι Γεια, το όνομά μου Andi-- σαφώς, ένα sentence-- το αποτέλεσμα εκτυπώνεται προς 1 η οποία είναι αληθής. Το δεύτερο, το οποίο είναι ακριβώς μια λέξη, τα αποτελέσματα εκτυπώνονται με 0, η οποία είναι ψευδής. Ο καθένας σαφές το είδος του σχετικά με το πώς η λειτουργία αυτή γράφτηκε; Ναι. Κοινό: Μπορούμε επίσης να κάνουμε, αντί δεν Ίδιος αριθμός, ισούται ισούται με 0, έτσι ώστε να είναι ίση με; ANDI PENG: Όχι. Επειδή strchr είναι μια λειτουργία. Πάω να επιστρέψω σε αυτό. Έτσι τι είναι ο τύπος επιστροφής της λειτουργίας strchr μας; Κοινό: Ω, εντάξει. Ή null. ANDI PENG: Ναι. Είναι ένα char * που μου λέει πως ό, τι Αυτή η λειτουργία πρόκειται να επιστρέψει, πρόκειται να είναι ένας δείκτης. Είτε ο δείκτης θα είναι επισημαίνοντας όπου αυτό είναι που βρέθηκαν, ή πρόκειται να επιστρέψει ένας δείκτης για την τιμή null. Σε κάθε περίπτωση, πρόκειται να επιστρέψει ένα δείκτη σε κάτι. Και έτσι, αν ήταν να εξισώσουν Αυτό ισοδυναμεί, ισούται με 0, θα πάμε να πάρετε ένα σφάλμα μεταγλώττισης. Επειδή πρόκειται να επιστρέψει ένα δείκτη. Και θα πάμε να προσπαθήσουμε να συγκρίνετε δείκτη σε ακέραιο. Και ο υπολογιστής δεν είναι θα του αρέσει. Ναι, ακριβώς. Δροσερός. Όλοι καλό; Και δεύτερον, θα πάμε για να πάει πάνω από μια λειτουργία που ονομάζεται strstr. Μην ανησυχείτε αν αυτά Οι λειτουργίες που προκαλούν σύγχυση. Είναι μου προκαλεί σύγχυση. Ως εκ τούτου, εσείς θα μπορούσε να δει, όλα ακούγονται λίγο πολύ το ίδιο. Απλά κάθε φορά που είστε σε σύγχυση, τραβήξτε το string.h βιβλιοθήκη. Και εσείς μπορείτε να ταξινομήσετε μέσω των οποίων το ένα, το οποίο. Έτσι strstr, το μόνο που κάνει είναι να αναζητήσεις μια σειρά για μια ολόκληρη άλλα έγχορδα. Έτσι, όταν strchr μόλις αναζητήσεις για ένα μεμονωμένο χαρακτήρα, strstr αναζητήσεις για έναν ολόκληρο εγχόρδων. Ήθελα λοιπόν να εξετάσουμε, δεν το κάνω Ξέρετε, Γεια σας, το όνομά μου είναι ο Andi. Και το όνομα του καλύτερου φίλου μου είναι, επίσης, ο Andi. Αν ήθελα να αναζητήσει σε αυτό πρόταση για ολόκληρη τη λέξη του Andi, βελόνα μου θα ήταν ό, τι ψάχνετε. Και άχυρα σας είναι ό, τι ψάχνετε αλλού. Έτσι, αν ψάχνετε για ένα συγκεκριμένη λέξη μέσα σε μια φράση, ότι η λέξη θα είναι βελόνα σας. Και τότε η ίδια η φράση πρόκειται να είναι άχυρα σας. Και γι 'αυτό ακριβώς αναζητήσεις η πρώτη εμφάνιση της βελόνας συμβολοσειράς στα άχυρα κορδόνι. Επιστρέφει το δείκτη με την πρώτη εμφάνιση. Εκτός, θυμάμαι σε αυτή την περίπτωση, είναι η πρώτη εμφάνιση του συνόλου εγχόρδων ότι ψάχνετε για, όχι μόνο ένας χαρακτήρας. Και έτσι αυτό είναι σχεδόν το ίδιο πράγμα με τη λειτουργία απλά κάναμε, μόνο με λίγο μεγαλύτερη εξειδίκευση. Επειδή ψάχνετε για περισσότερο από ακριβώς ένα χαρακτήρα. Και η χρήση του είναι ακριβώς το ίδιο όπως αυτή που μόλις κάναμε. Όλοι εντάξει με αυτό; ΕΝΤΆΞΕΙ. Τελευταία μία θα πάμε για να πάει πάνω είναι strrchr, η οποία δεν είναι συγχέεται με strstr ή με strchr. strrchr έχει ένα επιπλέον r εκεί. Να είστε προσεκτικοί όταν πληκτρολογείτε. Μπορείτε να βρείτε τον εαυτό σας, συμπεριλαμβανομένων ένα επιπλέον r ή που δεν περιλαμβάνουν r, και στη συνέχεια η λειτουργία σας δεν πήρε πρόκειται να λειτουργήσει. Και θα πάμε να είναι συγκεχυμένη. Να είστε προσεκτικοί ώστε να είστε ορθογραφία όλες αυτές οι λειτουργίες δεξιά. Έτσι strrchr είναι η ακριβής ίδιο πράγμα όπως strchr εκτός του ότι δεν ψάχνει για την πρώτη εμφάνιση ενός συγκεκριμένου χαρακτήρα, αλλά μάλλον η τελευταία εμφάνιση. Και έτσι, με αυτή την έννοια, είναι σχεδόν ακριβώς το ίδιο. Όμως αντί να ασχοληθώ διαβιβάσει σε μια σειρά, θα πάμε να κινείται προς τα πίσω σε μια σειρά. Ακριβής ίδιο πράγμα, είστε ακριβώς αναζήτηση σε διαφορετική σειρά. Και έτσι αυτό θα μπορούσε να είναι σούπερ, σούπερ χρήσιμο για την αναζήτηση σας τη λειτουργία, η πρώτη λειτουργία για το chipset σας. Ας προσποιηθούμε ότι έπρεπε να γράψω ένα λειτουργία του κενού επιμήκυνσης, του οποίου είμαστε περάσει μια σταθερή char * όνομα αρχείου, μόνο ένα string, ένα όνομα αρχείου, που παίρνει σε αυτό το όνομα και εκτυπώσεις από την επέκταση του αρχείου. Έτσι, για παράδειγμα, εάν επρόκειτο να περάσει στη σειρά των pset7.zip, πρόκειται να εκτυπώσετε μόνο η επέκταση, η οποία είναι .zip. Και αυτό θα μπορούσε να λειτουργήσει για οποιοδήποτε είδος επέκτασης, .docx για το Word ή .pdf για PDF αρχείο ή .html για ένα αρχείο HTML. Λίγο πολύ, γράφετε λειτουργία που μπορεί να το κάνει αυτό. Είμαι πραγματικά πρόκειται να μετάβαση στο IDE. Δεν load-- εκεί πάμε. Έτσι, όλα τα έχω κάνει εδώ είναι δημιούργησε ένα char *, μια πρώτη χορδή, που ονομάζεται pset7.zip. Πάω για μεγέθυνση. Έχω δημιουργήσει μια δεύτερη σειρά που ονομάζεται finalpaper.docx. Και μου γράψετε μια λειτουργία η οποία όταν κάλεσε πρόκειται απλά να εκτυπώσετε οι επεκτάσεις ονόματος αρχείου. Ίσως χρειαστούν μερικά λεπτά για να σκεφτείτε σχετικά με το πώς θα πάμε να το κάνουμε αυτό. Ελαφρώς πιο δύσκολο από το τελευταίο, αλλά η χρήση του είναι σχεδόν ακριβώς το ίδιο. Ναι. Έτσι γράψετε μια συνάρτηση που ονομάζεται επέκταση ότι, αν σου δώσω το όνομα του αρχείου, αν ήμουν στη θέση να σας δώσει pset7.zip-- μου θέλετε να εκτυπώσετε μόνο το .zip. Αν σας δίνω αρέσει finalpaper.docx, μόλις εκτυπώσετε το .docx, ακριβώς η επέκταση του αρχείου, ανεξάρτητα. Αυτό στην πραγματικότητα μόνο Χρειάζονται δύο γραμμές κώδικα. Έτσι προσπαθήστε να δείτε αν μπορείτε ίσως μπορεί να το κάνει σε αυτό. Στην πραγματικότητα, μόνο παίρνει μία γραμμή κώδικα. Ωστόσο, δύο γραμμές είναι ίσως πιο τυπική. Ποια είναι η λειτουργία που πιθανώς πρόκειται να θέλετε να καλέσετε; Κοινό: strrchr. ANDI PENG: strrchr, δεξιά. Επειδή ψάχνουμε από τη δεξιά αριστερά. Δεν είχα να σας δώσω παιδιά ένα παράδειγμα όπως αυτό, αλλά αν σας έδωσα ένα παράδειγμα, όπως www.apple.com και θα ήθελα απλώς το .com, θα ήθελα να είναι ένα παράδειγμα για το πού θέλετε να καλέσετε τον τελευταίο βαθμό της περιόδου και δεν είναι η πρώτη, έτσι δεν είναι; Αν ήταν κλήση strchr αυτό, Θα έχετε δώσει την apple.com. Εάν ονομάζεται strrchr αυτό, Θα έχετε δώσει το .com. Και έτσι πρέπει να είστε προσεκτικοί κατά την οποία ways-- στο παράδειγμά μου, θα μπορούσατε πιθανώς θα μπορούσε να έχει απλά γραμμένο χρησιμοποιώντας strchr, δεδομένου ότι υπάρχει μόνο μία τελεία. Αλλά σε άλλες περιπτώσεις, ότι δεν μπορεί να είναι η περίπτωση. Και έτσι προσπαθούμε πάντα να σχεδιάσουμε κωδικό σας καλά, έτσι that-- ναι; Κοινό: Έτσι, στο παράδειγμα που μόλις είπατε, όταν κάνετε strrchr θα ήταν να σας δώσει com ή απλά να έρθει; ANDI PENG: Θα σας δώσω το .com. Κοινό: OK. ANDI PENG: Ναι. Επισημαίνει εκεί που το βρήκε. Ναι. 30 δευτερόλεπτα ίσως; Ναι. Ο καθένας καλό ή ίσως λίγο περισσότερο χρόνο; Εμφάνιση των χεριών; Εμφάνιση των αρχηγών; Δροσερός. Όποιος θέλει να μου δώσει την πρώτη γραμμή κώδικα για αυτό το πρόγραμμα; Κοινό: [δεν ακούγεται]. ANDI PENG: Έτσι, πρώτα απ 'όλα, ας ίσως σπάσει αυτό κάτω. Έτσι τι είναι ο τύπος επιστροφής της strrchr; Ας πάμε πίσω. strrchr, τι είναι ο τύπος επιστροφής; Κοινό: Char * ANDI PENG: Είναι μια char *, σωστά; Πράγμα που σημαίνει ότι πρόκειται πιθανώς να θέλουν να δημιουργήσουν μια άλλη char * σε είδος του καταστήματος, όποτε αυτό είναι επιστροφή στην, έτσι δεν είναι; Διότι, αν σας καλέσει η strrchr λειτουργία, πρόκειται να σας δώσω ένα δείκτη σε όπου διαπίστωσε ότι την τελευταία περίοδο, έτσι δεν είναι; Αλλά θα πάμε να θέλουν να αποθηκεύσετε ότι κάπου, σωστά; Και έτσι πώς θα κωδικοποιήσουν αυτό στο πρόγραμμά μας; Κοινό: Μπορείτε να κάνετε το char * [δεν ακούγεται]. ANDI PENG: Ναι. Κοινό: [δεν ακούγεται]. ANDI PENG: strrchr. Ναι. Ω, έχασε ένα r εκεί. Κοινό: όνομα αρχείου [δεν ακούγεται]. Τι είναι αυτό? Ω, είναι ακριβώς s. ANDI PENG: Ω, είναι ακριβώς s. Yup, συγγνώμη. Λάθος μου. Παραδείγματα δεν ταιριάζουν. Κοινό: Και τότε dot. ANDI PENG: Yup. Να είστε προσεκτικοί όταν εσείς are-- εδώ, επιτρέψτε μου να μεγεθύνετε. Εκεί πάμε. Να είστε προσεκτικοί όταν εσείς πληκτρολόγηση, ειδικά όταν κάνετε απλά μια χαρα. Είναι πραγματικά εύκολο να τυχαία μόνο κάνει διπλά εισαγωγικά και όχι μεμονωμένα. Αυτό δεν θα λειτουργήσει. Compiler σας πρόκειται να παραπονεθεί. Και η λειτουργία σας είναι Απλά δεν πρόκειται να τρέξει. Και έτσι πρέπει να είστε προσεκτικοί όταν κάνετε τα πράγματα με χαρακτήρες που είναι μονά εισαγωγικά. Και το ίδιο κάνει και αυτή τη γραμμή Κωδικός νόημα για όλους; Είμαστε δημιουργώντας ένα char * δείκτη. Επειδή επιστρέφει strrchr κάτι δείκτη τύπου. Και έτσι θα πάμε να καλέσετε strchr σε s, η οποία είναι το string, το αρχείο αναφέρουμε, ότι είμαστε περνώντας. Και ψάχνουμε για την τελευταία παράδειγμα της περιόδου, η οποία είναι μόνο η μόνη προσφορά dot μόνη προσφορά. Ναι. Κοινό: Όταν χρησιμοποιούμε διπλά εισαγωγικά και όταν το κάνουμε εμείς, Χρησιμοποιήστε μονά εισαγωγικά; ANDI PENG: Ναι. Έτσι διπλά εισαγωγικά είναι χρησιμοποιείται πάντα όταν έχουν μια σειρά από περισσότερα από ένα. Έτσι, αν κάνετε strstr, το οποίο είναι αυτό που σας αναζητήσετε ένα κορδόνι για το string, θα Θα πρέπει να το δώσετε σε διπλά εισαγωγικά. Αλλά κάθε φορά που είναι ακριβώς ένα ενιαίο χαρακτήρα, Θέλετε να κάνετε μονά εισαγωγικά. Είναι ένα καλό πράγμα που πρέπει να θυμάστε. Έτσι τώρα που έχουμε μας δείκτη, τι θα κάνουμε με αυτό; Σας ζητάω παιδιά να εκτυπώνει, σωστά; Έτσι, [δεν ακούγεται], που θέλετε να δώσε μου τη γραμμή του κώδικα; Κοινό: printf-- ANDI PENG: Ναι. Κοινό: --you χρειάζονται ένα στήριγμα θέση. ANDI PENG: Yup. Κοινό: Εκτυπώστε τη θήκη θέση. Δεν ξέρω ποια είναι η θέση κάτοχος είναι το σημείο, αλλά σε αυτό. ΕΝΤΆΞΕΙ. Ας παραλείψτε ότι προς το παρόν στη συνέχεια. Κοινό: Και τότε comma-- ANDI PENG: Πόιντερ, σωστά; Κοινό: Πόιντερ, yup. ANDI PENG: Έτσι το είδος της μια ερώτηση τέχνασμα, έχει να κάνει με δείκτες και έγχορδα ότι έχουμε το είδος της μίλησε ήδη. Τι είδους του δικαιούχου του τόπου κάνουμε χρειάζεστε για ένα δείκτη για μια char *; Κοινό: [δεν ακούγεται]. ANDI PENG: Ναι. Είναι ευκολότερο από ό, τι εσείς πιστεύετε ότι είναι. Κοινό: String; ANDI PENG: Είναι απλά ένα string, ακριβώς. Επειδή θυμάμαι χορδές δεν υπάρχουν πραγματικά. Μια char * είναι το ακριβές ίδιο πράγμα όπως ένα string. Και έτσι πραγματικά αυτό είναι ό, τι s θα πρέπει να έχουν χρησιμοποιηθεί σε όλο το μήκος. ΕΝΤΆΞΕΙ. Ας δούμε αν μπορούμε να προσπαθήστε να εκτελέσετε αυτή. Ας κάνουμε μια επέκταση μάρκα. Δροσερός. Εσείς να δούμε πώς πέρασα στο psset7.zip και η finalpaper.docx, και εκτυπώνει ακριβώς έξω το .zip και το .docx; Βγάζει νόημα? Εντάξει Πιστεύω λοιπόν ότι στο βλέμμα σας προς τα πάνω λειτουργία σε PSET σας είστε πρόκειται να ζητηθεί εάν η κορδόνι έχει μια συγκεκριμένη κατάληξη, θα πρέπει να δώσει ένα συγκεκριμένο κωδικό σφάλματος. Και έτσι αυτό θα είναι αρκετά φοβερό. Διότι, αν μπορείτε να υπολογίσετε τι είναι η επέκταση, μπορείτε στη συνέχεια να συγκρίνουμε επέκταση για να δείτε αν ταιριάζει με μια ορισμένη επέκταση. Και στη συνέχεια μπορείτε να επιστρέψετε ένα μήνυμα σφάλματος, σωστά; Ναι. Κοινό: Έτσι δεν κάνουμε Πρέπει να προσθέσετε 1 ή οτιδήποτε άλλο; Ο δείκτης θα πάει να the-- ANDI PENG: Όχι. Κοινό: --point μετά από αυτό. ANDI PENG: Ναι. Επισημαίνει ακριβώς να όπου η εμφάνιση ήταν. Έτσι, για παράδειγμα εδώ, είμαστε ψάχνοντας για την περίοδο. Έτσι, πρόκειται να επιστρέψει ένας δείκτης για την περίοδο. Και στη συνέχεια πρόκειται να εκτυπώσετε ξεκινώντας κατά τη διάρκεια της περιόδου. Έτσι, δεν χρειάζεται να προσθέσετε 1. Παρά το γεγονός ότι είναι εντελώς καλά σε αυτά, αν δεν είστε βέβαιοι, με ακριβώς το είδος από το δοκιμάσετε μόνοι σας. Φτιάξτε ένα πρόγραμμα δείγμα. Δοκιμάστε το μόνοι σας και δείτε πού είναι η εκτύπωση. Αυτό δεν είναι επίσης ένας κακός τρόπος για να το κάνουμε. Δροσερός. Και αυτό είναι λίγο πολύ όλα Είχα για σας παιδιά σήμερα. Κάναμε πολλά πράγματα PSET σήμερα. Έτσι, σε περίπτωση αμφιβολίας, όπως Είπα, πάντα κοιτάζω προς τα πάνω η string.h βιβλιοθήκη για αυτό το chipset. Εκεί πρόκειται να είναι πολύ λειτουργία εκεί που μπορεί να είναι χρήσιμη. Ορισμένοι μπορεί να μην είναι χρήσιμο. Εγώ δεν ξέρω πραγματικά. Wade μέσα από αυτό, υπάρχει ένα σωρό από αυτά. strstr, strchr, είναι strrchr σούπερ, σούπερ εξυπηρετικό, καθώς και οι strcpys και strcasecmps ότι έχουμε ήδη χρησιμοποιηθεί. Είναι απλά πολύ Messing περίπου με χορδές, τον προσδιορισμό αν είναι ίσα, να πάρει τα πράγματα έξω από χορδές, και να είναι σε θέση να ανοίξετε αρχεία σωστά. Είναι μια πολύ αρχείο I / O. το chipset δεν είναι πραγματικά τόσο άσχημα. Θα πάμε για να πάρει ένα το κοιτάξετε, να το κατεβάσετε, και να δείτε ένα σωρό κώδικα. Μην ανησυχείτε, ο κωδικός σας να γράψω πραγματικά δεν είναι καθόλου κακό. Αν κάποιος έχει προβλήματα με τους server, έρχονται με δει μετά το τμήμα. Συγγνώμη για άλλη μια φορά για να μην φέρνοντας καραμέλα για Απόκριες. Δεν ξέρω τι ήταν λάθος με μένα. Αλλά θα έχουμε διπλό η καραμέλα επόμενη φορά. Και καλή τύχη σε PSET σας αυτή την εβδομάδα. Ναι.