1 00:00:00,000 --> 00:00:01,940 >> [השמעת מוסיקה] 2 00:00:01,940 --> 00:00:11,130 3 00:00:11,130 --> 00:00:14,620 >> DAVID מלאן: זה 50 CS, ו זהו תחילתו של שבוע תשע. 4 00:00:14,620 --> 00:00:18,240 ומה שחשבנו שאנחנו היינו עושים היום הוא לא רק לסגור את הפרק על השבוע שעבר 5 00:00:18,240 --> 00:00:22,670 חומר שבו אנו מתמקדים בשרת תכנות אינטרנט צד עם PHP ו- SQL, 6 00:00:22,670 --> 00:00:23,549 כמה דברים מסד הנתונים. 7 00:00:23,549 --> 00:00:25,590 נדבר על קצת היום ביטחון ולאחר מכן 8 00:00:25,590 --> 00:00:29,590 מעבר לתכנות בצד הלקוח שפה הידועה כJavaScript. 9 00:00:29,590 --> 00:00:31,330 אבל קודם, כמה גאולה. 10 00:00:31,330 --> 00:00:35,030 >> אולי אתה זוכר שעל יום רביעי, יצאתי 11 00:00:35,030 --> 00:00:37,550 לכתוב באתר ש לקח בקלט של המשתמש 12 00:00:37,550 --> 00:00:41,120 על ידי HTML טופס שאז מאוחסן שקלט משתמש שמות, טלפון 13 00:00:41,120 --> 00:00:43,124 מספרים, וטלפון סלולארי ספקים באתר. 14 00:00:43,124 --> 00:00:45,540 ואז היה לי קצת הפקודה קו תסריט שנכתב ב- PHP 15 00:00:45,540 --> 00:00:47,956 שהיה אמור לחזר מעל השורות באתר 16 00:00:47,956 --> 00:00:49,400 ולשלוח הודעות טקסט. 17 00:00:49,400 --> 00:00:53,870 למרות כמה ניסיונות,, אנחנו לא קבלתי את העבודה עד הסוף. 18 00:00:53,870 --> 00:00:57,820 >> אז ביליתי את כל השבוע הזה עובד בקוד שכדי להוציא אותנו מעבר לנקודה 19 00:00:57,820 --> 00:01:01,220 שבו הפסקנו, לפיה כל יש לי עד סוף יום רביעי 20 00:01:01,220 --> 00:01:05,500 הייתה הודעת טקסט זה ממרגו כנאבקתי, 21 00:01:05,500 --> 00:01:09,940 ואחריו הודעת טקסט מאחר כיתה, יש לך דוד זה. 22 00:01:09,940 --> 00:01:14,030 ואחרי זה, נפלא מעודד. 23 00:01:14,030 --> 00:01:15,840 המשיך ללכת, מאוד מעודד. 24 00:01:15,840 --> 00:01:20,960 אני כמעט קיבלתי אותו עד then-- ו זה הפתק שנסתיימו ביום רביעי. 25 00:01:20,960 --> 00:01:25,850 ואז בעצם אולי האהוב עליי, רגע לאחר מכן, זה בא ב. 26 00:01:25,850 --> 00:01:27,000 לעזאזל חיים בזרם. 27 00:01:27,000 --> 00:01:31,080 >> אז היום, אנחנו לתקן את זה עם מהיר להסתכל על מה שעשיתי מאז. 28 00:01:31,080 --> 00:01:35,440 אז כל קוד זה זמין באינטרנט משבוע שעבר, שבוע שמונה, 29 00:01:35,440 --> 00:01:36,300 קוד מקור. 30 00:01:36,300 --> 00:01:39,425 ואתה תראה שעברתי עליי, ואני דווקא ניקיתי את דברים קצת. 31 00:01:39,425 --> 00:01:42,080 הצגתי את זוג אחר תכונות של מסד נתונים SQL. 32 00:01:42,080 --> 00:01:45,300 לדוגמא, במקום פשוט לעשות נשא של char var 33 00:01:45,300 --> 00:01:47,310 כמו שאני חושב שעשיתי על לטוס בשבוע שעבר. 34 00:01:47,310 --> 00:01:49,820 אני במקום הגדרתי אותו כ מה שנקרא enum. 35 00:01:49,820 --> 00:01:53,310 >> וכמה מכם אולי ראו את זה כפי שאנו בחנו ג Enum הוא למעשה 36 00:01:53,310 --> 00:01:56,820 תכונה של C שבו אתה יכול למנות חבורה של קבועים שלמות 37 00:01:56,820 --> 00:01:59,640 ולהקצות להם ערכים אוטומטיים, כמו אחד, שתיים, שלוש, ארבע 38 00:01:59,640 --> 00:02:01,330 מבלי מספרי קוד קשים. 39 00:02:01,330 --> 00:02:04,780 אז SQL תומך באותה, לפיה אם יש לך שדה של מסד נתונים שרק 40 00:02:04,780 --> 00:02:09,389 רוצה לקחת על אחד סופי ערכים, אתה יכול, פשוטו כמשמעו, לציין את זה 41 00:02:09,389 --> 00:02:13,120 כפי שאני עשיתי שם ארבעה ספקי הסלולר פופולריים בארה"ב. 42 00:02:13,120 --> 00:02:13,819 >> אז אני עשיתי את זה. 43 00:02:13,819 --> 00:02:16,610 ואני עשיתי מספר השינויים כ גם, והחשוב שבי 44 00:02:16,610 --> 00:02:20,090 היה לקבל דואר אלקטרוני עובד, כי כזכור, כי תכנית זו הסתמכה על ש 45 00:02:20,090 --> 00:02:23,470 בדרך כלל נקרא דואר אלקטרוני ל שער SMS, וזה רק 46 00:02:23,470 --> 00:02:27,670 דרך מפוארת לומר כי ורייזון, ו AT & T, ואנשים אחרים לתמוך בשרת, 47 00:02:27,670 --> 00:02:30,740 לפיו במקרה שהוא מקבל דואר אלקטרוני, היא ממירה אותו ל- SMS 48 00:02:30,740 --> 00:02:33,290 ושולח את טקסט הודעה לטלפון של מישהו. 49 00:02:33,290 --> 00:02:37,010 אז אם עשיתי את זה בצורה נכונה, כאן היא צורה חדשה והמשופרת 50 00:02:37,010 --> 00:02:39,259 כי הוא הולך לדבר קוד חדש ומשופר, ש 51 00:02:39,259 --> 00:02:40,300 אתה יכול לשחק עם באינטרנט. 52 00:02:40,300 --> 00:02:44,140 ואני מקווה שזה יגרום לי צפצוף טלפון ברגע. 53 00:02:44,140 --> 00:02:47,240 >> אז קודם כל, אני הולך להקליד את השם שלי. 54 00:02:47,240 --> 00:02:51,400 שנית, אני לא הולך כדי לעשות את זה הפעם. 55 00:02:51,400 --> 00:02:53,920 אני הולך לעשות בדיקת רכיב. 56 00:02:53,920 --> 00:02:56,710 וזו רק דבר קטן כל כך שאני לא 57 00:02:56,710 --> 00:02:59,250 ליצור שעות שלאחר ייצור לעבוד כמו שעשיתי בפעם האחרונה. 58 00:02:59,250 --> 00:03:02,300 יש כיום מספר הטלפון שלי. 59 00:03:02,300 --> 00:03:03,560 >> אני יהיה לבחור ורייזון. 60 00:03:03,560 --> 00:03:10,260 וכאן, בואו להפעיל את המיקרופון הזה כאן, ומטרה הזאת בטלפון שלי כאן. 61 00:03:10,260 --> 00:03:13,130 אני הולך ללחוץ הרשמה, אשר צריך לקוות 62 00:03:13,130 --> 00:03:14,530 הכניס אותו לתוך מסד הנתונים. 63 00:03:14,530 --> 00:03:16,780 עכשיו אני הולך ללכת ל תכנית שורת הפקודה, ש 64 00:03:16,780 --> 00:03:20,825 זוכר נקרא לוכסן נקודה טקסט, ויחזיק האצבעות. 65 00:03:20,825 --> 00:03:24,092 66 00:03:24,092 --> 00:03:26,527 הנה אנחנו מתחילים. 67 00:03:26,527 --> 00:03:27,501 >> [סימני מכות בטלפון] 68 00:03:27,501 --> 00:03:28,962 >> [מחיאות כפות] 69 00:03:28,962 --> 00:03:31,815 70 00:03:31,815 --> 00:03:34,940 DAVID מלאן: אז יותר כיף מאשר זה-- זה כיף, כמובן, אם אני נכנס לזה. 71 00:03:34,940 --> 00:03:38,004 אבל זה יותר כיף, חשבתי, אם אנחנו יצרת את אחד רגעי סרט אלה 72 00:03:38,004 --> 00:03:40,420 שבו כמו משהו באמת רע קרה בעולם, 73 00:03:40,420 --> 00:03:42,860 וכמו כל האנשים של NSA טלפונים סלולריים מתחילים לצפצף 74 00:03:42,860 --> 00:03:44,860 עם הודעות טקסט להתריע אותם לעובדה זו. 75 00:03:44,860 --> 00:03:47,026 אז חשבתי שננסה כדי לשחזר את אותו הדבר כאן, 76 00:03:47,026 --> 00:03:49,610 לפי לא משתמש בבסיס נתונים, אני במקום מראש 77 00:03:49,610 --> 00:03:51,490 כתב תכנית שנראית כך. 78 00:03:51,490 --> 00:03:53,660 >> זה index.php-- ואני שם את הקוד הזה באינטרנט 79 00:03:53,660 --> 00:03:56,710 כwell-- שככל הנראה רק הופך form.php, 80 00:03:56,710 --> 00:04:00,990 שימוש בדגם בסגנון MVC ש לדבר על בפירוט רב יותר בקבוצת בעיה 81 00:04:00,990 --> 00:04:01,650 שבע. 82 00:04:01,650 --> 00:04:02,910 הצורה שהיא די פשוט. 83 00:04:02,910 --> 00:04:06,634 זה הולך להגיש ל קובץ בשם here.php באמצעות דואר. 84 00:04:06,634 --> 00:04:09,300 וזה כנראה הולך לשאול לשם, ומספר טלפון, 85 00:04:09,300 --> 00:04:11,400 ולאחר מכן באמצעות של מה שנקרא תפריט בחר, זה 86 00:04:11,400 --> 00:04:14,250 הולך לתת לך לפחות ארבעה ספקי הסלולר פופולריים בארה"ב, 87 00:04:14,250 --> 00:04:17,470 ולאחר מכן מאפשר לך ביעילות לקחת נוכחות על ידי לחיצה כאן. 88 00:04:17,470 --> 00:04:20,471 >> וכאן, בינתיים, הולך ללוות חלק מהקוד מעת האחרונה. 89 00:04:20,471 --> 00:04:22,553 ואם אתה רק לרפרף זה, אתה תראה שיש 90 00:04:22,553 --> 00:04:23,900 חבורה שלמה של בדיקת שגיאות. 91 00:04:23,900 --> 00:04:26,640 אבל היופי בסוף הוא ש אנחנו לא כותבים למסד נתונים היום. 92 00:04:26,640 --> 00:04:29,130 אנחנו שומרים את זה פשוט ו רק שולח את התקווה 93 00:04:29,130 --> 00:04:32,190 הודעת טקסט באמצעות אני פונקציה כתב על השיחה בימים האחרונה 94 00:04:32,190 --> 00:04:36,270 טקסט, שהוא בפונקציות. php, אשר זמינים שוב באופן מקוון. 95 00:04:36,270 --> 00:04:38,210 >> אז אם אתם רוצים לקחת חלק בזה. 96 00:04:38,210 --> 00:04:40,190 אנחנו לא הולכים להיות אחסון כל דבר. 97 00:04:40,190 --> 00:04:43,809 עבור אל כתובת אתר זה כאן בזמן אמת. 98 00:04:43,809 --> 00:04:46,850 אל תפרסם אותה עדיין, אבל בואו לראות אם אנחנו יכולים להיות אחת מהסרט הבאים 99 00:04:46,850 --> 00:04:49,830 רגעים שבם הטלפון הסלולרי של כולם מתחיל לצפצף, אני מקווה רק 100 00:04:49,830 --> 00:04:53,580 פעם אחת השנה שלא כמו בשינה 2011 לאן זה הלך להחריד השתבש. 101 00:04:53,580 --> 00:04:58,910 וברגע שאתה הולך לכתובת זו, אתה צריך לראות את צורה פשוטה סופר 102 00:04:58,910 --> 00:05:03,884 שאם יש לך שם, טלפון סלולארי מספר, וספק הסלולר ש 103 00:05:03,884 --> 00:05:06,175 תואם את הרשימה יש, ללכת מוזמן למלא את הטופס. 104 00:05:06,175 --> 00:05:07,880 אבל לא פגע להגיש עדיין. 105 00:05:07,880 --> 00:05:10,850 >> הטופס הולך להיראות כך. 106 00:05:10,850 --> 00:05:13,660 קדימה והקלד ב השם שלך, מספר טלפון. 107 00:05:13,660 --> 00:05:17,670 OOP, מישהו הולך ביתרון של העקומה. 108 00:05:17,670 --> 00:05:18,170 זה בסדר. 109 00:05:18,170 --> 00:05:19,340 אישור, כולם מילאו את הטופס. 110 00:05:19,340 --> 00:05:21,400 זה אמור לעבוד ב טלפון, מדי, אם אתה רוצה. 111 00:05:21,400 --> 00:05:23,695 בסדר, על הסימנים שלך, להתארגן, ללכת. 112 00:05:23,695 --> 00:05:24,195 הכה כאן. 113 00:05:24,195 --> 00:05:27,275 114 00:05:27,275 --> 00:05:27,775 מה? 115 00:05:27,775 --> 00:05:31,140 116 00:05:31,140 --> 00:05:31,640 מס ' 117 00:05:31,640 --> 00:05:34,410 118 00:05:34,410 --> 00:05:40,250 אני נשבע באלוהים, אני נבדק היום זה מספר פעמים. 119 00:05:40,250 --> 00:05:41,720 יש לך את זה? 120 00:05:41,720 --> 00:05:43,145 >> [חציצת קולות] 121 00:05:43,145 --> 00:05:46,470 122 00:05:46,470 --> 00:05:49,560 >> DAVID מלאן: אישור, משתמש שגיאה אולי. 123 00:05:49,560 --> 00:05:50,550 זה שתי. 124 00:05:50,550 --> 00:05:53,300 זה עבד בשביל שניים מתוך כמה מאה, שלוש, ארבעה. 125 00:05:53,300 --> 00:05:55,940 אישור, זה טוב. 126 00:05:55,940 --> 00:05:58,520 ארבעה מתוך חמישה ל תקינות מה לגבי. 127 00:05:58,520 --> 00:05:59,810 >> אז מה בדיוק קרה? 128 00:05:59,810 --> 00:06:02,727 אז ככל הנראה, בלי לראותך מסכי, למה שזה עשוי להיות errored? 129 00:06:02,727 --> 00:06:05,518 זה כנראה שהיינו רק מנסה ליצור קשרים רבים מדי 130 00:06:05,518 --> 00:06:08,110 לשרת הדואר של אוניברסיטת הרווארד כל ב פעם אחת מאותה כתובת IP. 131 00:06:08,110 --> 00:06:10,740 אני רק מנחש שכן אני לא לנו את הלוקסוס של בדיקות 132 00:06:10,740 --> 00:06:13,220 את הקוד הזה עם כמה 300 אנשים מראש 133 00:06:13,220 --> 00:06:16,040 אך לעת עתה מבין ש שלפחות צריך 134 00:06:16,040 --> 00:06:18,250 מקבל את העבודה הפעם. 135 00:06:18,250 --> 00:06:22,880 >> בסדר, אז למה הוא כל כך יותר רלוונטי למה שקורה? 136 00:06:22,880 --> 00:06:24,900 ובכן ראשון, מהיר כמה הודעות. 137 00:06:24,900 --> 00:06:29,350 אז אחת, אם ברצונך להצטרף לצ'אנג, ו ניק, ואחרים בארוחת הצהריים ביום שישי קרוב, 138 00:06:29,350 --> 00:06:32,400 לעשות RSVP בכתובת הרגילה יש. 139 00:06:32,400 --> 00:06:35,650 אם אתה חושב על ריכוז באו עושה משנית בCS, 140 00:06:35,650 --> 00:06:38,941 בין אם אתה בכיתה י, או בשנה ראשונה, או אפילו זוטר או בכיר, בשלב זה 141 00:06:38,941 --> 00:06:42,490 ועדיין יכול לסחוט בקורסים, להבין שבית הספר להנדסה 142 00:06:42,490 --> 00:06:45,620 צובר לבן חופשיים ו הגלידה ועצתו של ג'רי 143 00:06:45,620 --> 00:06:48,910 זמן קצר לאחר המעמד ביום רביעי בשעה 4:00 בבניין CS 144 00:06:48,910 --> 00:06:49,771 במקסוול דבורקין. 145 00:06:49,771 --> 00:06:51,520 אם זה מהר מדי על המסך, פשוט ללכת 146 00:06:51,520 --> 00:06:55,260 לcs50.harvard.edu ל קישור לאירוע בפייסבוק 147 00:06:55,260 --> 00:06:57,140 שבו אתה יכול לראות פרטים נוספים. 148 00:06:57,140 --> 00:07:01,390 >> בינתיים, חשבתי שאני אתקן דבר אחד אני פשלתי ביום רביעי. 149 00:07:01,390 --> 00:07:04,400 מתברר שזהותו של מארק בפייסבוק לא היה שלוש. 150 00:07:04,400 --> 00:07:05,230 זה היה ארבעה. 151 00:07:05,230 --> 00:07:08,330 מתברר שיש לו יותר ניסיון חשבונות שזכורים לי. 152 00:07:08,330 --> 00:07:12,400 אבל מה זה הרגיש כמו הזדמנות לעשות הוא למשוך את כתובת כמו זו. 153 00:07:12,400 --> 00:07:16,680 >> אז מתברר שפייסבוק API, ממשק תכנות יישומים, 154 00:07:16,680 --> 00:07:20,070 אשר הוא מנגנון שבו אתה יכול לבקש נתונים תיכנותי 155 00:07:20,070 --> 00:07:24,480 בפייסבוק ולחזור מכונה מידע קריא, לא בדפי האינטרנט 156 00:07:24,480 --> 00:07:28,690 אבל טקסט פשוט גלם, משהו נקרא סימון אובייקט JavaScript. 157 00:07:28,690 --> 00:07:32,150 ולמעשה, אם אני מבקר בזה כתובת URL, ולהגדיל את התצוגה, כברירת מחדל, 158 00:07:32,150 --> 00:07:34,960 כך הוא מארק של הציבור מידע נגיש. 159 00:07:34,960 --> 00:07:37,430 >> והפרט המעניין כאן היא רק שתעודת הזהות שלו 160 00:07:37,430 --> 00:07:40,670 אכן, מספר ארבעה, שבו אני הבנתי ברגע שעשיתי את זה. 161 00:07:40,670 --> 00:07:44,260 אתה יכול לעשות את זה בעצמך אם אתה יודע שם המשתמש שלכם בפייסבוק, אם יש לך אחד. 162 00:07:44,260 --> 00:07:45,440 פשוט הקלד אותו למעלה יש. 163 00:07:45,440 --> 00:07:46,640 וכל זה הוא פרטי. 164 00:07:46,640 --> 00:07:48,670 אני רק עושה את זה אפילו במצב הגלישה בסתר. 165 00:07:48,670 --> 00:07:49,900 אז אני אפילו לא מחובר. 166 00:07:49,900 --> 00:07:54,440 ואתה רואה אני ש ככל הנראה היה מספר משתמש 6454 167 00:07:54,440 --> 00:07:56,480 בפייסבוק, וזה לא חבל בימים אלה. 168 00:07:56,480 --> 00:07:59,900 אז בכל אופן, תוכל גם לראות מידע נוסף קיימים. 169 00:07:59,900 --> 00:08:02,150 >> וההיבט השימושי לכך הוא שאתה 170 00:08:02,150 --> 00:08:06,890 יכול לכתוב תוכנה שלך ש איכשהו משלב נתונים כמו זה 171 00:08:06,890 --> 00:08:08,170 ליישום שלך. 172 00:08:08,170 --> 00:08:10,650 אתה יכול להעצים את המשתמשים ל להיכנס לאתר האינטרנט שלך, 173 00:08:10,650 --> 00:08:14,190 לא שימוש בשם המשתמש מותאם אישית משלהם ו סיסמא אבל אולי ההתחברות שלהם בפייסבוק 174 00:08:14,190 --> 00:08:16,170 ולקבל מידע גם על החברים שלהם, 175 00:08:16,170 --> 00:08:18,740 אם הם יאשרו כזה, או דומה. 176 00:08:18,740 --> 00:08:21,430 אז שים לב CS50 ש, מדי, יש כמה APIs שלה, 177 00:08:21,430 --> 00:08:24,620 אחד לנתונים קטלוג כמובן, כמה לתפריטי חיבוקים באוכל 178 00:08:24,620 --> 00:08:26,730 אולמות, כל מבנים ומקומות 179 00:08:26,730 --> 00:08:30,930 בקמפוס יש לנו API ל, כמו גם שאתה יכול לבצע שאילתא באופן דומה ולקבל 180 00:08:30,930 --> 00:08:35,520 נתונים טקסטואלי בחזרה, כי אתה יכול לשלב ל- PHP, או JavaScript, או אפילו, 181 00:08:35,520 --> 00:08:38,320 אם כי פחות נפוץ, פרויקט גמר C מבוסס. 182 00:08:38,320 --> 00:08:41,190 >> ואכן לפני לסופי פרויקט כמה אבני דרך. 183 00:08:41,190 --> 00:08:42,980 יש לך דוא"ל מאתנו היום האחר. 184 00:08:42,980 --> 00:08:45,761 להבין שההצעה בשל יום שני הקרוב. 185 00:08:45,761 --> 00:08:49,010 זה לא בהכרח מחייב, אבל אתה צריך לקבל עמיתי ההוראה שלך 186 00:08:49,010 --> 00:08:51,260 אישור לפני ביצוע כל שינוי לאחר מכן. 187 00:08:51,260 --> 00:08:54,280 ולאחר מכן קדימה הם מספר אבן דרך אחרת. 188 00:08:54,280 --> 00:08:56,542 >> אז כדי להקניט אותך, יותר מדי, עם כמה אפשרויות, 189 00:08:56,542 --> 00:08:58,250 יש לנו חבורה של נורות גוון אור אלה. 190 00:08:58,250 --> 00:09:01,190 וכמה מכם חבר'ה עכשיו יש לי כמה של אלה בחדר במעונות שלך גם כן. 191 00:09:01,190 --> 00:09:02,920 וגם להם יש API. 192 00:09:02,920 --> 00:09:07,300 אז זוכר שבועות בינארי נורות אלה לפני שדן ברדלי ואנסל 193 00:09:07,300 --> 00:09:08,780 דאף יצר עבורנו. 194 00:09:08,780 --> 00:09:12,560 הם השתמשו בממשק תוכנה ל הנורה זו, אשר כרגע 195 00:09:12,560 --> 00:09:15,232 מחובר לחשמל ולאחר מכן באמצעות אלחוטי 196 00:09:15,232 --> 00:09:17,690 מחובר למשהו קטן נקרא הגשר כאן למטה, 197 00:09:17,690 --> 00:09:21,280 כמו קנייני הנתב קטנים למכשיר המסוים הזה. 198 00:09:21,280 --> 00:09:26,540 >> אבל מתברר אם אני יודע איך לשלוח הודעות HTTP, כמו עכשיו שכולנו עושים, 199 00:09:26,540 --> 00:09:31,670 אני יכול לשלוח הודעה בנוסח זה ל הנורה זה כדי להפעיל או לכבות אותו 200 00:09:31,670 --> 00:09:34,000 או לעשות כל מספר פעולות נוספות על זה. 201 00:09:34,000 --> 00:09:36,110 שים לב שזה לא יקבל, זה לא לפרסם. 202 00:09:36,110 --> 00:09:37,760 יש עוד אחד בשם מכר. 203 00:09:37,760 --> 00:09:39,630 יש למעשה כמה פעלים אחרים מסוג זה. 204 00:09:39,630 --> 00:09:42,920 אבל שים לב שיש בדרך לשם, לקצץ API, לקצץ מפתח חדש, 205 00:09:42,920 --> 00:09:44,990 סלאש אור, לחתוך אחד, לקצץ מדינה. 206 00:09:44,990 --> 00:09:49,060 >> זה כנראה רק דרך שהחברה, פיליפס, 207 00:09:49,060 --> 00:09:51,640 החליט שאתה צריך להכות עם בקשת HTTP 208 00:09:51,640 --> 00:09:55,010 אם אתה רוצה לשנות את המצב של הנורה באמצעות HTTP 1.1. 209 00:09:55,010 --> 00:09:56,380 ואז שם לב השורה ריקה. 210 00:09:56,380 --> 00:10:00,170 ואז לבסוף מה שנראה כמו סוג של מערך כלשהו, 211 00:10:00,170 --> 00:10:04,730 זה שוב הולך להיקרא סימון JavaScript Object, או ג'ייסון. 212 00:10:04,730 --> 00:10:08,000 ומה שאתה רואה כאן הוא ש יש שלושה זוגות ערך מפתח. 213 00:10:08,000 --> 00:10:09,115 >> מפתח אחד נקרא על. 214 00:10:09,115 --> 00:10:10,990 וככל הנראה הערך שלה הולך להיות אמיתי. 215 00:10:10,990 --> 00:10:13,612 בהירות היא 128, ש הוא סוג כלשהו של int. 216 00:10:13,612 --> 00:10:15,820 ואז זמן מעבר הוא אפס, שהוא, ככל הנראה, 217 00:10:15,820 --> 00:10:17,970 כמה זמן זה הולך דרוש כדי להפוך את הדבר הזה על. 218 00:10:17,970 --> 00:10:19,890 >> אז עכשיו הנורה זו כבויה. 219 00:10:19,890 --> 00:10:22,880 אבל אם אני עושה בדיוק זה-- תן לי ללכת לגיליון לרמות קטן 220 00:10:22,880 --> 00:10:25,200 כי דן הוקם ב advance-- ואני הולך 221 00:10:25,200 --> 00:10:27,920 להמשיך ולהעתיק את הפקודה הבאה. 222 00:10:27,920 --> 00:10:30,200 תלתל, כפי שחלקכם אולי שלוקט על CS50 223 00:10:30,200 --> 00:10:35,080 נדון בו הוא שירות כמו Telnet כזה כי אתה יכול לדמות בקשות HTTP, 224 00:10:35,080 --> 00:10:36,360 במיוחד מעמיד. 225 00:10:36,360 --> 00:10:39,710 אני יכול לשלוח נתונים זה, במיוחד את מה שאנחנו פשוט 226 00:10:39,710 --> 00:10:43,430 ראה רגע במיוחד לפני לכתובת אתר זו כאן. 227 00:10:43,430 --> 00:10:46,310 ולאחר מכן סלסול הולך לטפל כל הכותרות הנדרשות 228 00:10:46,310 --> 00:10:47,600 וניתוח יש ל. 229 00:10:47,600 --> 00:10:54,700 >> אז כל מה שצריך לעשות הוא להעתיק את זה ל חלון מסוף ולאחר מכן לוחץ על Enter. 230 00:10:54,700 --> 00:10:56,000 ואת הנורה ממשיכה. 231 00:10:56,000 --> 00:10:59,060 וזה כל עובר המחשב שלי בצורה אלחוטית 232 00:10:59,060 --> 00:11:01,960 איכשהו עד לגשר, ש לאחר מכן דבר עם הנורה זו. 233 00:11:01,960 --> 00:11:02,960 אני יכול לעשות משהו אחר. 234 00:11:02,960 --> 00:11:07,050 אני יכול לעשות את הדבר הזה ללכת אדום למשל. 235 00:11:07,050 --> 00:11:11,040 אני יכול למשל לעשות דבר זה ללכת ירוק. 236 00:11:11,040 --> 00:11:12,220 אני יכול לעשות את זה ללכת כחול. 237 00:11:12,220 --> 00:11:14,760 >> ושים לב בכל אחד מאלה מקרים, כל כך שאני משתנה 238 00:11:14,760 --> 00:11:18,540 הוא מה שנקרא ערך הגוון ל למעשה לתת לו קצת צבע. 239 00:11:18,540 --> 00:11:20,320 אז תן לי להדביק את זה גם כן. 240 00:11:20,320 --> 00:11:21,000 עכשיו זה כחול. 241 00:11:21,000 --> 00:11:24,672 >> ואתה יכול לעשות אפילו מהודר יותר דברים where-- בואו נלך לירוק. 242 00:11:24,672 --> 00:11:26,630 ואני יכול לעשות את זה ב כמובן עם הקוד שלי. 243 00:11:26,630 --> 00:11:30,670 אבל גם API עצמו תומך בפעולות פאנקי 244 00:11:30,670 --> 00:11:35,510 כמו זה, שעכשיו מפריע שלנו במשך 30 שניות הבאות. 245 00:11:35,510 --> 00:11:39,170 >> אז זה טעם אחד של מה שאפשר לעשות עם ה- API, והפעם היה מעורב 246 00:11:39,170 --> 00:11:40,010 נורות. 247 00:11:40,010 --> 00:11:42,510 שימו לב שיש CS50 זוג זוגות של Google Glass אם היית 248 00:11:42,510 --> 00:11:45,380 רוצה להתמודד עם משהו לאורך קווים אלה, Arduino UNOS, ש 249 00:11:45,380 --> 00:11:48,670 הם מחשבים זעירים, בעצם, במעגלים קטנים 250 00:11:48,670 --> 00:11:50,470 שאתה יכול להתחבר חוטים ודברים אחרים 251 00:11:50,470 --> 00:11:52,732 וללמעשה שליטה סביבת העולם האמיתית שלך. 252 00:11:52,732 --> 00:11:54,940 ולאחר מכן יש כמה צעצועים של חדשים שיש לנו. 253 00:11:54,940 --> 00:11:59,294 אחד זה ממש ממש הגיע יום אחר בדואר, על זרועו סרט מיו. 254 00:11:59,294 --> 00:12:01,710 ואני חשבתי שזו דרך ל לעורר אותך על פרויקטים 255 00:12:01,710 --> 00:12:03,720 שיהיה אפשר להשתמש ב חומרה היית זה 256 00:12:03,720 --> 00:12:08,900 להיות לשחק זה קליפ קצר זה כי הם משתמשים כדי להקניט את האנשים 257 00:12:08,900 --> 00:12:10,500 כי אנחנו חיים עתה בעתיד. 258 00:12:10,500 --> 00:12:13,494 259 00:12:13,494 --> 00:12:15,490 >> [השמעת מוסיקה] 260 00:12:15,490 --> 00:13:33,410 261 00:13:33,410 --> 00:13:37,109 >> DAVID מלאן: אז רק כמה שבועות, אתה גם יכול להיות שמגניב ביריד CS50. 262 00:13:37,109 --> 00:13:39,150 מכשיר נוסף שאנו יש חבורה של שאנחנו 263 00:13:39,150 --> 00:13:42,090 תשמח להשאיל לך לפרויקטים נקרא בקר תנועה. 264 00:13:42,090 --> 00:13:45,030 זהו מכשיר USB קטן אתה מתחבר למחשב ש 265 00:13:45,030 --> 00:13:47,520 מאפשר לך אינטראקציה עם המחשב הנייד שלך, Mac או PC, 266 00:13:47,520 --> 00:13:51,570 כאילו שיש לך כמו Kinect Xbox ובעצם עושה תנועות פיזיות הרבה 267 00:13:51,570 --> 00:13:54,509 כמו שאנו רואים בזה חזון לעתיד. 268 00:13:54,509 --> 00:13:56,505 >> [השמעת מוסיקה] 269 00:13:56,505 --> 00:15:03,380 270 00:15:03,380 --> 00:15:06,260 >> DAVID מלאן: אז גם אם יש לך אין לי מושג איך דבר כזה 271 00:15:06,260 --> 00:15:10,050 יכול אולי להיות המציא או עבודה ברמה חומרה, לא משנה. 272 00:15:10,050 --> 00:15:13,520 גם אחרי כמה חודשים של CS50, והבנה של תכנות 273 00:15:13,520 --> 00:15:19,460 באופן כללי יותר, ותכנות אינטרנט יותר לאחרונה, ולאחר מכן גם בממשקי API, ו- HTTP, 274 00:15:19,460 --> 00:15:21,830 תהיה לך גישה באמצעות APIs תוכנה אם אתה 275 00:15:21,830 --> 00:15:24,680 רוצה לשאול את אחד מהם מכשירים באמת לדבר אליו 276 00:15:24,680 --> 00:15:27,180 ולא צריך לדאוג היישום הבסיסי 277 00:15:27,180 --> 00:15:30,220 פרטים, שהוא לגמרי עולה בקנה אחד עם הרעיון הזה של שכבות 278 00:15:30,220 --> 00:15:33,610 הפשטה שיש לנו ראה במהלך הסמסטר. 279 00:15:33,610 --> 00:15:37,990 >> אז גם בסוף השבוע, ראה כמה חתיכות של חדשות. 280 00:15:37,990 --> 00:15:40,640 ללכת ראשון, ללכת לסמינרים אם אתה רוצה ללמוד משהו 281 00:15:40,640 --> 00:15:42,160 נוסף על כל מספר של נושאים. 282 00:15:42,160 --> 00:15:43,340 לראות את כתובת האתר שם. 283 00:15:43,340 --> 00:15:45,890 וזה אחד נשלח ל שלי צ'אנג, שאתה יודע, 284 00:15:45,890 --> 00:15:47,850 מי הדפסת צבא הפילים שלנו. 285 00:15:47,850 --> 00:15:49,910 וזה היה כותרת כדלקמן. 286 00:15:49,910 --> 00:15:51,280 אני מבוהל של הטלוויזיה החדשה שלי. 287 00:15:51,280 --> 00:15:54,301 למה אני מפחד להפוך את זה דבר על ואתה רוצה להיות יותר מדי. 288 00:15:54,301 --> 00:15:56,050 אז אנחנו עכשיו ב להצביע בסמסטר, 289 00:15:56,050 --> 00:15:58,860 מדי, שבו גם אם יש לך שמץ של הבנה 290 00:15:58,860 --> 00:16:02,620 איך האינטרנט עובד, ו- HTTP, וביטחון, דברים כאלה 291 00:16:02,620 --> 00:16:03,980 צריך להתחיל לתפוס את העין. 292 00:16:03,980 --> 00:16:07,450 אבל גם, אתה תבין אם הדברים האלה הם או לא 293 00:16:07,450 --> 00:16:08,430 איומים ממשיים. 294 00:16:08,430 --> 00:16:10,940 >> אז לקחתי כמה קטעים ממאמר זה כאן. 295 00:16:10,940 --> 00:16:12,540 והסיפור הוא כדלקמן. 296 00:16:12,540 --> 00:16:14,300 עכשיו אני הבעלים של טלוויזיה חכמה חדשה, ש 297 00:16:14,300 --> 00:16:18,470 מבטיח לספק הזרמה תוכן מולטימדיה, משחקים, אפליקציה, 298 00:16:18,470 --> 00:16:21,450 מדיה חברתית, ואינטרנט גלישה, הו וטלוויזיה מדי. 299 00:16:21,450 --> 00:16:24,410 הבעיה היחידה היא שאני עכשיו מפחד להשתמש בו, אומר המחבר. 300 00:16:24,410 --> 00:16:29,592 אתה יהיה, גם אם אתה קורא את מדיניות הפרטיות של 46 דף לטלביזיה שלך. 301 00:16:29,592 --> 00:16:31,800 כמות הנתונים זו אוסף דבר הוא מדהים. 302 00:16:31,800 --> 00:16:35,710 זה מתחבר היכן, מתי, איך, ו לכמה זמן ותשתמש בטלביזיה. 303 00:16:35,710 --> 00:16:38,190 הוא מגדיר עוגיות מעקב, כפי שאמרנו, 304 00:16:38,190 --> 00:16:40,560 ומשואות שנועדו כדי לזהות כאשר יש לך 305 00:16:40,560 --> 00:16:43,185 תוכן מסוים שנצפה או הודעת דואר אלקטרוני מסוימת 306 00:16:43,185 --> 00:16:45,230 אם אתה רוצה לבדוק את הדוא"ל בטלוויזיה שלך. 307 00:16:45,230 --> 00:16:48,430 היא מתעדת את היישומים ש להשתמש, אתרים אתה מבקר, 308 00:16:48,430 --> 00:16:52,280 ואיך אתה מתקשר עם תוכן, עושה את כל זה דרך הטלוויזיה החכמה שלך. 309 00:16:52,280 --> 00:16:55,470 כמו כן, yet-- מצמרר זה addition-- שלי 310 00:16:55,470 --> 00:16:58,140 יש מובנה במצלמה עם זיהוי פנים. 311 00:16:58,140 --> 00:17:01,010 >> המטרה היא לספק ל שליטת מחווה לטלביזיה 312 00:17:01,010 --> 00:17:05,490 ונאפשר לכם להיכנס ל אישית חשבון באמצעות הפנים שלך. 313 00:17:05,490 --> 00:17:08,940 על הפוך, התמונות הן שנשמר בטלוויזיה במקום נטען 314 00:17:08,940 --> 00:17:09,940 לשרת ארגוני. 315 00:17:09,940 --> 00:17:12,520 על החסרון, באינטרנט חיבור הופך את כל הטלוויזיה 316 00:17:12,520 --> 00:17:14,811 פגיע להאקרים ש הדגימו את היכולת 317 00:17:14,811 --> 00:17:16,700 לקחת שליטה מלאה של המכונה. 318 00:17:16,700 --> 00:17:20,880 >> יותר מטריד, כאילו שלא היה מספיק חכם, הוא המיקרופון. 319 00:17:20,880 --> 00:17:23,599 הטלוויזיה מתגאה בקול תכונת זיהוי 320 00:17:23,599 --> 00:17:26,859 המאפשר לצופים לשלוט ב המסך באמצעות פקודות קוליות. 321 00:17:26,859 --> 00:17:30,290 אבל השירות מגיע עם אזהרה ולא מאיימת. 322 00:17:30,290 --> 00:17:33,030 שים לב שאם המילים המדוברות שלך כוללות 323 00:17:33,030 --> 00:17:36,210 אישי או אחר רגיש מידע, שמידע 324 00:17:36,210 --> 00:17:40,310 יהיה בין הנתונים שנלכדו ולמסור לצד שלישי. 325 00:17:40,310 --> 00:17:40,870 הבין את זה? 326 00:17:40,870 --> 00:17:45,860 אל תגידו אישי או רגיש דברים מול הטלוויזיה שלך. 327 00:17:45,860 --> 00:17:47,280 >> אז זה בעצם אמיתי. 328 00:17:47,280 --> 00:17:50,530 וקשה שלא לראות אם אתה ללכת לסט ביי או כמו לטלביזיות 329 00:17:50,530 --> 00:17:51,030 בימים אלה. 330 00:17:51,030 --> 00:17:52,540 הם כולם חכמים בדרך כלשהי. 331 00:17:52,540 --> 00:17:54,740 והם מקבלים חכמה יותר ומפחיד. 332 00:17:54,740 --> 00:17:57,490 והם פשוט לאסוף נתונים בדרכים שאנחנו כבר דיברנו על 333 00:17:57,490 --> 00:18:01,840 ולאחר מכן העלאתו באמצעות HTTP או איזה פרוטוקול אחר לכמה שרת. 334 00:18:01,840 --> 00:18:05,720 >> אז זה היה של מאמר כיף באתר האינטרנט זה 335 00:18:05,720 --> 00:18:08,940 כאן, שדבר על באג מסוים או קוד שגוי 336 00:18:08,940 --> 00:18:11,340 שאנחנו באמת יכולים לקשור לדיון בשבוע שעבר. 337 00:18:11,340 --> 00:18:15,730 אז הכותרת הזאת הייתה כ להלן, הסיפור הולך כאן, 338 00:18:15,730 --> 00:18:18,720 ג'וש Breckman עבד חברה שנחתה חוזה 339 00:18:18,720 --> 00:18:22,390 לפתח ניהול תוכן מערכת, או CMS כפי שהם נקראים, 340 00:18:22,390 --> 00:18:24,380 לאתר אינטרנט של ממשלה גדולה למדי. 341 00:18:24,380 --> 00:18:27,300 חלק גדול מהתוכניות מעורבות פיתוח מערכת ניהול תוכן 342 00:18:27,300 --> 00:18:29,840 כך שהעובדים יהיו תוכל לבנות ולתחזק 343 00:18:29,840 --> 00:18:31,877 שינוי המתמיד תוכן עבור האתר שלהם. 344 00:18:31,877 --> 00:18:34,210 די הלכתי ל ימים ספורים לאחר העלייה לאוויר. 345 00:18:34,210 --> 00:18:37,020 אבל ביום שש, דברים לא הלכו כל כך טוב. 346 00:18:37,020 --> 00:18:39,500 כל התוכן ב אתר נעלם לחלוטין. 347 00:18:39,500 --> 00:18:42,950 וכל הדפים הובילו לברירת המחדל, אנא הכנס דף אינטרנט תוכן. 348 00:18:42,950 --> 00:18:43,810 אופס. 349 00:18:43,810 --> 00:18:46,080 ג'וש הוזעק לחקור והבחין 350 00:18:46,080 --> 00:18:49,390 שאחד בעייתי במיוחד הייתה לי כתובת ה- IP חיצונית 351 00:18:49,390 --> 00:18:53,380 הלך ובמחק את כל התכנים במערכת. 352 00:18:53,380 --> 00:18:56,290 >> כתובת ה- IP של לא שייכת לחלק כפוף האקר חו"ל 353 00:18:56,290 --> 00:18:58,340 להרוס מועיל מידע ממשלתי. 354 00:18:58,340 --> 00:19:05,190 החלטת דירקטוריון על googlebot.com, עכביש סריקת האינטרנט עצמו מאוד של גוגל. 355 00:19:05,190 --> 00:19:06,010 אופס. 356 00:19:06,010 --> 00:19:09,150 אחרי קצת מחקר וערבול סביב כדי למצוא גיבוי noncorrupt, 357 00:19:09,150 --> 00:19:10,180 ג'וש מצא את הבעיה. 358 00:19:10,180 --> 00:19:12,700 >> ומשתמש יעתיק להדביק קצת תוכן מאחד 359 00:19:12,700 --> 00:19:15,670 דף למשנהו, ובכלל זה היפר-קישור עריכה 360 00:19:15,670 --> 00:19:17,577 כדי לערוך את התוכן בדף. 361 00:19:17,577 --> 00:19:20,160 בדרך כלל זה לא יהיה נושא מאז משתמשים מחוץ היית 362 00:19:20,160 --> 00:19:24,320 צריך להזין שם וסיסמא, אבל מערכת אימות CMS, 363 00:19:24,320 --> 00:19:27,520 מערכת כניסה, לא לקח בחשבון 364 00:19:27,520 --> 00:19:30,980 פריצה מתוחכמת טכניקות של Google עכביש. 365 00:19:30,980 --> 00:19:31,700 אופס. 366 00:19:31,700 --> 00:19:33,610 >> כפי שמתברר, Google העכביש אינו משתמש ב 367 00:19:33,610 --> 00:19:36,950 עוגיות, מה שאומר שהוא יכול בקלות לעקוף המחאה על 368 00:19:36,950 --> 00:19:39,840 נרשם על סט עוגייה ככוזב. 369 00:19:39,840 --> 00:19:42,620 זה גם לא לשים לב ל JavaScript, שעושה בדרך כלל 370 00:19:42,620 --> 00:19:45,170 תנחה ולהפנות משתמשים שאינם מחוברים ב. 371 00:19:45,170 --> 00:19:48,610 עם זאת הוא עושה מעקב כל קישור בכל דף שהוא מוצא, 372 00:19:48,610 --> 00:19:51,700 כולל אלה עם למחוק את הדף בכותרת. 373 00:19:51,700 --> 00:19:52,650 אופס. 374 00:19:52,650 --> 00:19:56,070 >> אז מה זה אומר יותר מונחים טכניים אבל די נגישים? 375 00:19:56,070 --> 00:19:58,340 זה רק אומר ש בכל אתר האינטרנט שלהם, 376 00:19:58,340 --> 00:20:02,287 היו להם כתובות שלא כמו זה ש אפשר אולי לראות בבעיה להגדיר שבע. 377 00:20:02,287 --> 00:20:04,620 נזכיר בבעיה להגדיר שבע או יודעים בבעיה להגדיר שבע 378 00:20:04,620 --> 00:20:06,411 כי אתה מאותגר, בין השאר, 379 00:20:06,411 --> 00:20:08,570 למכור מניות בשם המשתמשים. 380 00:20:08,570 --> 00:20:14,010 אבל יישום תכונה שבדרך של מקבל דרך קישורים במשתמש שלך 381 00:20:14,010 --> 00:20:16,880 ממשק, כנראה לא הרעיון הכי חכם 382 00:20:16,880 --> 00:20:20,300 כי אם האתר שלך הוא איכשהו נגיש או על ידי אדם 383 00:20:20,300 --> 00:20:23,577 מי לחיצה מסביב או לקנות בוט כמו גוגל או עכביש 384 00:20:23,577 --> 00:20:26,160 כפי שהם קראו זה רק סריקת האינטרנט מנסה מדד 385 00:20:26,160 --> 00:20:29,060 האינטרנט כמנוע חיפוש, הם יכלו בקלות רבה 386 00:20:29,060 --> 00:20:31,340 פגע באמצעות לקבל של כתובת אתר מסוג זה. 387 00:20:31,340 --> 00:20:33,770 וזה מבחינה תפקודית שווה, במקרה זה, 388 00:20:33,770 --> 00:20:37,000 למכור את כל המניות של גוגל. 389 00:20:37,000 --> 00:20:40,030 >> עכשיו בכנות, זה לגמרי מטופש שCMS 390 00:20:40,030 --> 00:20:43,240 JavaScript ועוגיות משומשים ליישם מערכת כניסתה 391 00:20:43,240 --> 00:20:47,100 ולא עושה את זה בצד השרת, כ אתם עושים ותעשו בPSet 7-- 392 00:20:47,100 --> 00:20:49,940 יש login.php file-- תמיד, תמיד, 393 00:20:49,940 --> 00:20:52,789 תמיד ביטחון צריך להיות נעשה בצד השרת, 394 00:20:52,789 --> 00:20:56,080 לא בצד הלקוח, כי, כפי שזה מאמר מציע ואת עלול עצמך 395 00:20:56,080 --> 00:20:59,600 לראות בשלב מסוים, זה הוא טריוויאלי עבור משתמש, טוב או רע, 396 00:20:59,600 --> 00:21:02,860 פשוט לכבות את JavaScript שלא לדבר על עוגיות. 397 00:21:02,860 --> 00:21:06,020 אז זה WTF היומי שלך. 398 00:21:06,020 --> 00:21:07,970 >> יש אחד יותר, ש הוא פשוט סוג של מפחיד, 399 00:21:07,970 --> 00:21:11,360 אז אני אזכיר את זה אם רק כלקח חיים. 400 00:21:11,360 --> 00:21:14,850 בכל פעם שאתה משתמש ביישום נקרא כמו סנאפצ'ט או כמו 401 00:21:14,850 --> 00:21:19,380 שאומר אלה התמונות האחרונות רק ל חמש שניות, עשר שניות, או מה שלא. 402 00:21:19,380 --> 00:21:21,680 הם בני חלוף זה בהחלט לא המקרה. 403 00:21:21,680 --> 00:21:25,670 כמו שאין כל דרך, באופן דיגיטלי, כדי ליישם בצורה כלשהי של וידאו, 404 00:21:25,670 --> 00:21:30,150 או תמונה, או טקסטואלי שיתוף כזה שנמען בצד השני 405 00:21:30,150 --> 00:21:31,660 לא יכול איכשהו לשמור את הנתונים. 406 00:21:31,660 --> 00:21:34,300 >> בדרך הנאיבית ביותר, מישהו יכול לקחת את הטלפון שלהם. 407 00:21:34,300 --> 00:21:36,850 ויש להם חלון שני 10 תוך התבוננות בכמה שניות ספורות 408 00:21:36,850 --> 00:21:39,410 רק לקחת כמה טלפון אחר ולצלם אותו, כמובן. 409 00:21:39,410 --> 00:21:41,660 אז אתה יכול לשמור משהו דיגיטלי שדרך. 410 00:21:41,660 --> 00:21:44,620 כמה מכם יודעים איך לקחת צילומי מסך בטלפון שלך. 411 00:21:44,620 --> 00:21:49,290 למעשה, אם אתה לא יודע את זה, להבין שלפחות סנאפצ'ט, 412 00:21:49,290 --> 00:21:51,040 ואני חושב אחר יישומים בימים אלה, 413 00:21:51,040 --> 00:21:53,720 לפחות להגיד לך אם נמען למעשה יש 414 00:21:53,720 --> 00:21:55,310 לקח צילום מסך של התמונה שלך. 415 00:21:55,310 --> 00:22:00,870 >> אבל גרוע מכך, זה היה snappening, כמי שטבע אותו לאחרונה, 416 00:22:00,870 --> 00:22:04,680 שבו כ -100,000 מצליפה שוחררה 417 00:22:04,680 --> 00:22:09,310 במה שנקרא קובץ הטורנט באתרי אינטרנט שונים סופו של דבר. 418 00:22:09,310 --> 00:22:12,000 ואלה כלולים כל חבורה הודעות והודעות פרטיות. 419 00:22:12,000 --> 00:22:15,210 מתברר רובם שפיר, כך לא מה שהיית מצפה. 420 00:22:15,210 --> 00:22:17,580 אבל בגלל שהיו לי אנשים שימוש באתר האינטרנט של צד שלישי, 421 00:22:17,580 --> 00:22:20,270 כניסה עם סנאפצ'ט שם משתמש וסיסמא ולאחר מכן 422 00:22:20,270 --> 00:22:23,470 לחסוך את כל מצליפה שלהם באתר אינטרנט של צד שלישי זה. 423 00:22:23,470 --> 00:22:26,130 וזה היה אותו צד שלישי אתר שנפרץ, 424 00:22:26,130 --> 00:22:30,710 שמישהו רק נועד הבין איך כדי לקבל את כל 100,000 בתוספת של תמונות אלה 425 00:22:30,710 --> 00:22:33,822 לתוך הכונן הקשיח שלהם לשיתוף לאחר מכן. 426 00:22:33,822 --> 00:22:36,030 למען האמת, גם כאן, זה סוג של אווילי שסנאפצ'ט 427 00:22:36,030 --> 00:22:39,360 מיושם באופן כזה ש צד שלישי יכול למיין של יירוט 428 00:22:39,360 --> 00:22:43,310 נתונים ושזה לא קשור לשלך יישום עצמו פועל בטלפון. 429 00:22:43,310 --> 00:22:46,947 אבל גם כאן, מבין כי אלה דברים לא צריכים לתפוס אותך בהפתעה, 430 00:22:46,947 --> 00:22:49,030 או לפחות לא אמורים להיות שיעור לחיים כאן. 431 00:22:49,030 --> 00:22:52,220 אם ברצונך טכני פרטים, ללכת ל- URL שיש 432 00:22:52,220 --> 00:22:53,570 זה בשקופיות של היום. 433 00:22:53,570 --> 00:23:00,960 בסדר, כל שאלה על שיעורי החיים של היום בCS? 434 00:23:00,960 --> 00:23:02,710 כבה את זה. 435 00:23:02,710 --> 00:23:04,970 משהו בכלל? 436 00:23:04,970 --> 00:23:06,301 משהו בכלל? 437 00:23:06,301 --> 00:23:09,050 יש לי הרבה אנשים בודקים סנאפצ'ט או משהו עכשיו. 438 00:23:09,050 --> 00:23:11,690 >> בסדר, אז SQL, שפת שאילתות מובנית. 439 00:23:11,690 --> 00:23:12,509 בואו לעטוף את זה. 440 00:23:12,509 --> 00:23:14,300 וגם, למרות ש אנחנו רק מגרדים 441 00:23:14,300 --> 00:23:16,310 פני השטח של זה שפה, אנו נספק לך 442 00:23:16,310 --> 00:23:18,930 מספיק של השפה בצורה של PSet 7 443 00:23:18,930 --> 00:23:22,140 כך שאתה יכול להתמודד עם כמה פונקציונלי שכיח למדי. 444 00:23:22,140 --> 00:23:24,912 אבל מבין שיש כמה דברים שלא דורשים מכם, 445 00:23:24,912 --> 00:23:27,120 אבל הם הולכים להיות חשוב לבוא פרויקטי גמר 446 00:23:27,120 --> 00:23:30,760 ובוודאי לבוא עושה בפועל אתרי אינטרנט עם משתמשים בפועל 447 00:23:30,760 --> 00:23:32,040 היא החלטה עיצובית זו. 448 00:23:32,040 --> 00:23:34,460 >> מתברר כי ב מסד נתוני MySQL, אתה 449 00:23:34,460 --> 00:23:37,460 יש צרורות של אפשרויות כמו סוגי נתונים עבור העמודות שלך 450 00:23:37,460 --> 00:23:41,670 ודברים אחרים, אבל גם לך הבחירה של אחסון שנקרא 451 00:23:41,670 --> 00:23:44,570 מנוע לכל הנתונים שלך, הסוג של מערכת קבצים, 452 00:23:44,570 --> 00:23:46,700 אם אתה מכיר, לכל הנתונים שלך. 453 00:23:46,700 --> 00:23:48,830 איזה פורמט הוא זה מאוחסן סופו של דבר ב? 454 00:23:48,830 --> 00:23:53,300 והנפוץ ביותר, אולי, היה MyISAM וInnoDB, מונחים טכניים 455 00:23:53,300 --> 00:23:56,060 שאנחנו אכפת רק במידה שאחד יש 456 00:23:56,060 --> 00:23:58,500 ואין לו אחד התכונה הבאה. 457 00:23:58,500 --> 00:24:00,390 >> נניח שיש לך מקרר מעונות קטן. 458 00:24:00,390 --> 00:24:03,030 ונניח שאתה ושלך שותפה, שחולקים את המקרר הזה, 459 00:24:03,030 --> 00:24:04,682 באמת מחבב חלב למשל. 460 00:24:04,682 --> 00:24:07,140 וזה, למעשה, כיצד סיפור שספר לי את הדרך חזרה 461 00:24:07,140 --> 00:24:10,890 ביום שבו לקחתי קורס בשם CS 161 מערכות הפעלה, ש 462 00:24:10,890 --> 00:24:12,580 באופן דומה בוחן את הנושא הזה. 463 00:24:12,580 --> 00:24:13,760 אז יש לך מקרר זה. 464 00:24:13,760 --> 00:24:14,630 אתה מחוץ לחלב. 465 00:24:14,630 --> 00:24:17,000 ואתה חוזר הביתה, השותפה שלך של עדיין בכיתה או מה, 466 00:24:17,000 --> 00:24:19,208 ואתה מחליט שאני הולך ל לצאת ולקבל קצת חלב. 467 00:24:19,208 --> 00:24:22,630 אז אתה סוגר את המקרר, מעצר החדר במעונות, ללכת מעבר לרחוב 468 00:24:22,630 --> 00:24:25,330 לCVS או בכל מקום, ולקבל בתור כדי לקנות קצת חלב. 469 00:24:25,330 --> 00:24:28,960 >> בינתיים, השותף שלך מגיע הביתה מכיתה, נכנס לחדר במעונות, 470 00:24:28,960 --> 00:24:31,802 פותח את המקרר, גם מבין ooph, נגמרנו לנו חלב. 471 00:24:31,802 --> 00:24:33,760 אז הוא או היא סוגרת את מקרר ואז קורה 472 00:24:33,760 --> 00:24:35,610 ללכת לCVS האחר, אשר קורה להיות 473 00:24:35,610 --> 00:24:38,470 בלוק אחד מCVS האחר בכיכר, ומקבל בשורה 474 00:24:38,470 --> 00:24:40,230 שם כדי לקבל קצת חלב. 475 00:24:40,230 --> 00:24:42,524 עכשיו, כמובן, כמה דקות מאוחר יותר, שניכם לחזור, 476 00:24:42,524 --> 00:24:44,690 והגרוע מכל אפשרי התוצאות שקרה. 477 00:24:44,690 --> 00:24:45,792 שניכם יש חלב. 478 00:24:45,792 --> 00:24:47,500 ואתה לא באמת כמו חלב שהרבה. 479 00:24:47,500 --> 00:24:49,625 אז אחד מהם הוא פשוט הולך חמוצים בשלב מסוים. 480 00:24:49,625 --> 00:24:55,941 אז עכשיו יש לך סכום מופרז חלב במקרר כל כי למה? 481 00:24:55,941 --> 00:24:57,072 >> [לא ברור] 482 00:24:57,072 --> 00:24:59,780 DAVID מלאן: כן, אתה לא איכשהו לתקשר אחד עם השני 483 00:24:59,780 --> 00:25:00,904 שאתה מקבל חלב. 484 00:25:00,904 --> 00:25:04,320 אז בפשוט ביותר של דרכים בעולם האנושי, 485 00:25:04,320 --> 00:25:08,390 איך אתה יכול למנוע את זה טיפשי תרחיש מקורה כזה 486 00:25:08,390 --> 00:25:09,750 שרק בסופו של דבר עם אחד. 487 00:25:09,750 --> 00:25:10,840 טקסט אותם, כן טוב. 488 00:25:10,840 --> 00:25:12,877 אבל איך אחר? 489 00:25:12,877 --> 00:25:13,460 הפתקיות. 490 00:25:13,460 --> 00:25:14,626 DAVID מלאן: פתקיות דביקות. 491 00:25:14,626 --> 00:25:17,150 כל צורת התקשורת שאומר לך שותף לחדר 492 00:25:17,150 --> 00:25:18,670 לא נכנס למקרר לחלב. 493 00:25:18,670 --> 00:25:20,440 אני הולך לחדש את המלאי בעצמי. 494 00:25:20,440 --> 00:25:22,770 אז אתה איכשהו צריך כדי לנעול את המשאב הזה. 495 00:25:22,770 --> 00:25:27,180 אז אנחנו יכולים לעשות זה-- שאנחנו יכולים סוג של להרוס את הסיפור ולהפוך לסיפור CS 496 00:25:27,180 --> 00:25:30,360 לפי לחשוב על זה כבדיוק כמו משתנה, האחסון כמה ערך. 497 00:25:30,360 --> 00:25:32,570 ועכשיו, ערך של חלב הוא אפס, 498 00:25:32,570 --> 00:25:35,410 שאתה לא רוצה השותפה לבדוק משתנה ש 499 00:25:35,410 --> 00:25:38,730 ולאחר מכן לקבל ההחלטה או את עצמה המבוסס על המצב משתנה ש 500 00:25:38,730 --> 00:25:42,430 אם אתה בתהליך של שינוי המצב של משתנה ש. 501 00:25:42,430 --> 00:25:46,140 >> אז אחת מהשורות של SQL ש לתת במפרט 7 PSet 502 00:25:46,140 --> 00:25:47,310 זה אחד כאן. 503 00:25:47,310 --> 00:25:49,740 ואנחנו לא מבלים ענק משך הזמן מדבר על זה. 504 00:25:49,740 --> 00:25:55,100 אבל מתברר, שאם אתה מנסה כדי לקנות כמה מניות באוצר CS50 505 00:25:55,100 --> 00:25:58,000 כי כבר יש לך כמה מניות של, 506 00:25:58,000 --> 00:26:01,750 רוצה להיות מסוגל לעשות מספר דברים ביחד באופן מיידי. 507 00:26:01,750 --> 00:26:04,360 אתה רוצה להיות מסוגל ביעילות, ברמה גבוהה, 508 00:26:04,360 --> 00:26:06,700 סמן את כל הימין, אם אני רוצה לקנות עוד מניות של חינם, 509 00:26:06,700 --> 00:26:08,780 המניות הפרוטות לדבר על במפרט, 510 00:26:08,780 --> 00:26:10,660 אני רוצה לבדוק קודם כמה מניות יש לי. 511 00:26:10,660 --> 00:26:11,810 ונניח שזה חמש. 512 00:26:11,810 --> 00:26:14,600 ונניח שאני רוצה לקנות 10 יותר, אני סופו של דבר 513 00:26:14,600 --> 00:26:17,069 רוצה להיות 15 מניות. 514 00:26:17,069 --> 00:26:18,360 אז אני חייב לשאול שתי שאלות. 515 00:26:18,360 --> 00:26:20,230 מה מצבו של משתנה? 516 00:26:20,230 --> 00:26:21,470 מה המצב של השורה? 517 00:26:21,470 --> 00:26:22,970 כמה מניות אני צריך כרגע? 518 00:26:22,970 --> 00:26:24,636 אז אתה רוצה ללכת קדימה ולעדכן אותו. 519 00:26:24,636 --> 00:26:27,720 אז זה אנלוגי ל חלב שבבדקת את השורה, 520 00:26:27,720 --> 00:26:30,730 ואז אתה רוצה לעדכן אותו כי אם אתה רוצה לקנות 10 מניות, 521 00:26:30,730 --> 00:26:32,521 אתה לא רוצה לשנות השורה 10, אתה 522 00:26:32,521 --> 00:26:35,300 רוצה לשנות את זה עד 5 בתוספת 10 או, כמובן, 15. 523 00:26:35,300 --> 00:26:40,030 >> שורת הקוד מבטיחה ש שני רעיונות מושגיים אלה 524 00:26:40,030 --> 00:26:42,810 לקרות יחד או בכלל לא. 525 00:26:42,810 --> 00:26:46,920 אף אחד, כולל כמה משתמשים אחרים מי מחובר לאותו האתר, 526 00:26:46,920 --> 00:26:49,900 איכשהו יכול להפריע הבדיקה של השורה 527 00:26:49,900 --> 00:26:52,960 והעדכון של השורה, לבחור והעדכון אם תרצה. 528 00:26:52,960 --> 00:26:57,360 והתחביר הוא לא סופר ברור, אבל שורה אחת זה, זמן זה הוא, 529 00:26:57,360 --> 00:27:01,150 מבטיח כי שתי פעולות אלה לבדוק משתנים או לבדוק את השורה 530 00:27:01,150 --> 00:27:04,660 ולעדכן את השורה לקרות אטומית. 531 00:27:04,660 --> 00:27:06,849 >> אה הנה זה באו שוב. 532 00:27:06,849 --> 00:27:07,890 הודעת טקסט בטלפון שלי. 533 00:27:07,890 --> 00:27:09,954 אז בואו נעשה את זה יותר בטון קטן. 534 00:27:09,954 --> 00:27:12,120 נניח שאתה לא יישום מקרר, 535 00:27:12,120 --> 00:27:16,400 ואתה לא מיישם PSet 7 אבל בנק בפועל, 536 00:27:16,400 --> 00:27:20,000 או כספומט, כספומט מכונת, שבה אתה איכשהו 537 00:27:20,000 --> 00:27:22,960 רוצה להיות מסוגל להעצים משתמשים להעביר כסף 538 00:27:22,960 --> 00:27:24,500 מחשבון אחד למשנהו. 539 00:27:24,500 --> 00:27:25,100 אישור, לתלות על. 540 00:27:25,100 --> 00:27:26,683 אני הולך להשתיק את זה עכשיו, תודה לך. 541 00:27:26,683 --> 00:27:30,450 אז אנחנו רוצים להעביר את הכסף ממספר חשבון אחד 542 00:27:30,450 --> 00:27:33,600 לחשבון אחר מספר, במיוחד 100 $. 543 00:27:33,600 --> 00:27:37,690 אז זה סוג של שרירותי דוגמא, שבו אתה, הכספומט, 544 00:27:37,690 --> 00:27:41,060 אולי כדאי לך לבצע שני SQL שאילתות, להחסיר מחשבון אחד, 545 00:27:41,060 --> 00:27:42,430 ולהוסיף לחשבון האחר. 546 00:27:42,430 --> 00:27:46,766 אבל אתה רוצה לוודא כי אלה שני קווים שני לקרות או בכלל לא. 547 00:27:46,766 --> 00:27:48,640 אתה לא רוצה משהו מקבל נקטע. 548 00:27:48,640 --> 00:27:51,440 אתה לא איזה בחור רע חכם עומד איכשהו בבנק אוף אמריקה 549 00:27:51,440 --> 00:27:53,270 עם שני כספומטים בחזית שלו, ואיכשהו 550 00:27:53,270 --> 00:27:55,270 סוג של הקלדה ב פקודות באותו הזמן, 551 00:27:55,270 --> 00:28:01,230 אני מקווה שמנסה לנכות 200 $ במקום של 100 $ ויש להם רק 100 $ לזכותו. 552 00:28:01,230 --> 00:28:04,450 בקיצור, אתה רוצה שזה להתנהג בדיוק כפי שאתה מצפה. 553 00:28:04,450 --> 00:28:06,540 >> והדרך שאתה עושה זה במסד נתונים של SQL הוא 554 00:28:06,540 --> 00:28:09,350 אתה עוטף אותו במה נקרא עסקה. 555 00:28:09,350 --> 00:28:14,290 פשוטו כמשמעו ב- SQL, אתה יכול להתקשר CS50 של פונקצית שאילתא עם תחילת סוף ציטוט ציטוט 556 00:28:14,290 --> 00:28:15,370 עסקה. 557 00:28:15,370 --> 00:28:18,640 ואז אתה יכול לבצע כל מספר של שאילתות SQL הבאות, 558 00:28:18,640 --> 00:28:20,870 אבל אף אחד מהם לקחת השפעה על מסד הנתונים 559 00:28:20,870 --> 00:28:25,880 עד שאתה קורא סוף ציטוט ציטוט שאילתא להתחייב, אם באמצעות PHP שוב. 560 00:28:25,880 --> 00:28:29,810 ובדרך זו, אתה יכול להבטיח כי גם אם יש לך 1,000 משתמשים בכל 561 00:28:29,810 --> 00:28:32,080 להכות באתר שלך באותו הזמן, SQL 562 00:28:32,080 --> 00:28:34,540 מבטיח כי אלה שתי שאילתות תהיה 563 00:28:34,540 --> 00:28:36,740 ממש את הזכות אחד אחרי השני. 564 00:28:36,740 --> 00:28:40,330 אז אתה לא בסופו של דבר עם עודף של חלב או הכמות השגויה, סופו של דבר, 565 00:28:40,330 --> 00:28:40,830 כסף. 566 00:28:40,830 --> 00:28:43,110 >> אז לשמור את זה בחשבון, לא כל כך הרבה לPSet 7 567 00:28:43,110 --> 00:28:45,250 אבל לפרויקטי גמר אם אתם ממש 568 00:28:45,250 --> 00:28:49,690 מנסה להעביר את הנתונים סביב על פני לוחות כפי שאתה כאן אולי. 569 00:28:49,690 --> 00:28:53,980 אבל אולי אפילו פשוט יותר ויותר ברור להבין בדוגמה 570 00:28:53,980 --> 00:28:54,860 זה אחד כאן. 571 00:28:54,860 --> 00:28:57,760 ומישהו בדוא"ל לנו על רק לפני כמה ימים זה 572 00:28:57,760 --> 00:28:59,600 כשהוא ראה משהו באינטרנט דומה. 573 00:28:59,600 --> 00:29:03,480 >> אז למיטב ידיעתי, את מערכת הסיכה אינו פגיע להתקפה זו. 574 00:29:03,480 --> 00:29:06,637 ואין לי מושג אם זה אפילו שימושים מסד נתוני SQL מתחת למכסת המנוע. 575 00:29:06,637 --> 00:29:08,470 אבל בואו להשתמש בו ל לצורך דיון. 576 00:29:08,470 --> 00:29:10,178 הנה המסך ש אנשי הרווארד נוטים 577 00:29:10,178 --> 00:29:13,620 כדי לראות מתי להיכנס עימם מספר הרווארד זהות וזיהוי האישי שלהם. 578 00:29:13,620 --> 00:29:19,020 ונניח שמערכת הסיכה היתה מיושם ב- PHP ועם MySQL 579 00:29:19,020 --> 00:29:22,000 מסד הנתונים, הקוד שמישהו לפני שנים היו יכול לכתוב 580 00:29:22,000 --> 00:29:23,270 עשוי להיראות כך. 581 00:29:23,270 --> 00:29:25,230 ראשית, להכריז שם משתמש משתנה בשם. 582 00:29:25,230 --> 00:29:27,560 ורק לקבל את זה מ superglobal POST. 583 00:29:27,560 --> 00:29:30,140 ואז לקבל עוד משתנים בשם הסיסמה ולעשות את אותו הדבר. 584 00:29:30,140 --> 00:29:33,080 ולאחר מכן רק בביצוע שאילתא ארוכה זה כאן, 585 00:29:33,080 --> 00:29:36,690 כוכב בחר ממשתמשים בי שם משתמש שווה כך וכך 586 00:29:36,690 --> 00:29:38,510 וסיסמא שווה כך וכך. 587 00:29:38,510 --> 00:29:40,660 >> שים לב שמתולתל פלטה אני השתמשתי כאן 588 00:29:40,660 --> 00:29:42,880 מתכוון רק ל- PHP, ללכת קדימה ותחליף 589 00:29:42,880 --> 00:29:45,400 ערכם של שני אלה משתנים ממש שם. 590 00:29:45,400 --> 00:29:50,090 הם לא הכרחי, אבל הם נוטים להימנע משגיאות תחביר עדינות. 591 00:29:50,090 --> 00:29:53,650 אז זה נראה לגמרי נכון במבט ראשון. 592 00:29:53,650 --> 00:29:54,240 וזה. 593 00:29:54,240 --> 00:29:56,680 אתה יכול ליישם את מערכת סיכה בדרך זו. 594 00:29:56,680 --> 00:30:00,460 >> אבל נניח שסופר תלמיד חכם וזדוני 595 00:30:00,460 --> 00:30:03,020 קלט זה כסיכה שלו או שלה. 596 00:30:03,020 --> 00:30:05,550 אז אני כבר הוצאתי את הכדור סימנים כאן בדמה עד, 597 00:30:05,550 --> 00:30:08,760 ואני דווקא גילה מה שהוא או היא עשויה להיות הקלדה. 598 00:30:08,760 --> 00:30:10,350 וזה קצת מוזר. 599 00:30:10,350 --> 00:30:13,850 אבל מה קופץ עליך באופן פוטנציאלי מדאיג על הקלט של המשתמש, 600 00:30:13,850 --> 00:30:16,450 גם אם אין לך מושג מה התקפת הזרקת SQL אומרת. 601 00:30:16,450 --> 00:30:20,300 למה זה נראה קצת חשוד? 602 00:30:20,300 --> 00:30:21,050 מה זה? 603 00:30:21,050 --> 00:30:21,550 [לא ברור] 604 00:30:21,550 --> 00:30:24,260 DAVID מלאן: או הוא קצת חשוד. 605 00:30:24,260 --> 00:30:26,310 למעשה, זה מילת מפתח מSQL. 606 00:30:26,310 --> 00:30:28,105 כך שאינו מבשר טוב. 607 00:30:28,105 --> 00:30:29,980 העובדה שיש כל גרשיים בודדים אלה 608 00:30:29,980 --> 00:30:32,646 there-- למעשה, אחד של הקלה דרכים לשבור כמה מאגרי מידע 609 00:30:32,646 --> 00:30:35,880 הוא על ידי הקלדה שם כמו אוריילי שיש גרש בזה 610 00:30:35,880 --> 00:30:38,600 כי אם האדם שכתב הקוד מאחורי הקלעים 611 00:30:38,600 --> 00:30:41,570 לא לוקח בחשבון שיש יכול להיות בגרשיים בודדים למשתמש של 612 00:30:41,570 --> 00:30:45,060 קלט, והוא או היא משתמשת גרשיים בודדים בקוד שלהם, 613 00:30:45,060 --> 00:30:46,040 דברים רעים יכולים לקרות. 614 00:30:46,040 --> 00:30:47,870 >> למעשה, גרוע מכך, רואים את זה. 615 00:30:47,870 --> 00:30:50,600 אם זה היה שוב את הקוד שמישהו בשנתי הרווארד 616 00:30:50,600 --> 00:30:53,100 לפני כתבתי לסיכה מערכת, שים לב מה 617 00:30:53,100 --> 00:30:56,220 עומדים לקבל תחליף שם משתמש וסיסמא 618 00:30:56,220 --> 00:30:59,780 אם המשתמש מקליד שוב skroob כשם המשתמש שלהם 619 00:30:59,780 --> 00:31:03,960 ואז אחד, שתיים, שלוש, ארבעה, חמש, ציטוט או ציטוט סוף ציטוט אחד שווה 620 00:31:03,960 --> 00:31:04,660 מצטט את אחד. 621 00:31:04,660 --> 00:31:07,220 ושים לב מה מפתח כאן הוא שהמשתמש לא 622 00:31:07,220 --> 00:31:09,900 התחיל את הסיסמה שלהם או הפינים שלהם בציטוט. 623 00:31:09,900 --> 00:31:12,610 והם לא גמרו את זה בציטוט כי הוא או היא 624 00:31:12,610 --> 00:31:16,315 בהנחה שאם מתכנת לא היה כל כך חד, 625 00:31:16,315 --> 00:31:18,690 הם הולכים להיות אלה גרשיים בודדים בקוד שלהם. 626 00:31:18,690 --> 00:31:19,860 >> אז הנה הקוד. 627 00:31:19,860 --> 00:31:23,820 והתחלופה ש אולי עכשיו יקרה הוא זה. 628 00:31:23,820 --> 00:31:26,350 ואני הדגשתי את מה ש המשתמש שהוקלד ב. 629 00:31:26,350 --> 00:31:28,480 אז לפני ש, לאחר. 630 00:31:28,480 --> 00:31:33,330 ושים לב מה המעטה מדאיג עכשיו על המחצית הימנית של קוד SQL זה? 631 00:31:33,330 --> 00:31:36,300 זה קצת יותר מורכב, יש להודות, מהשאילתות שראינו. 632 00:31:36,300 --> 00:31:38,550 אבל זה לא יכול להיות דבר טוב אם אתה 633 00:31:38,550 --> 00:31:42,240 אומר כוכב נבחרים, שהוא בחר הכל משולחנו של המשתמש 634 00:31:42,240 --> 00:31:46,630 שבו שם משתמש שווה skroob ו סיסמא שווה לאחד, שתיים, שלוש, ארבעה, 635 00:31:46,630 --> 00:31:49,610 חמש או אחד שווה אחד. 636 00:31:49,610 --> 00:31:53,860 מה המשמעות הלוגית של שהסעיף האחרון יש להניח? 637 00:31:53,860 --> 00:31:55,650 זה פשוט תמיד נכון. 638 00:31:55,650 --> 00:31:59,930 >> וכי יש לנו סוג של ניחשו או הבין על ידי ניסוי וטעייה 639 00:31:59,930 --> 00:32:02,760 שהמתכנת ש כתבתי את הקוד הזה לא 640 00:32:02,760 --> 00:32:07,250 צופה אדם אנושי או רע הקלדה כמו גם בגרשיים בודדים, 641 00:32:07,250 --> 00:32:10,350 אנחנו יכולים מבחינה תחבירית להשלים את שאילתא SQL 642 00:32:10,350 --> 00:32:12,260 עם משהו שטותי אבל משהו ש 643 00:32:12,260 --> 00:32:15,930 הוא מבחינה תחבירית שגוי שתמיד מעריך לאמיתי. 644 00:32:15,930 --> 00:32:19,130 אז אם קוד זה נמצא בשימוש כדי לענות שאלת אמת או שקר צריך 645 00:32:19,130 --> 00:32:22,930 יורשה משתמש זה לעבור, התשובה תמיד הולכת כנראה 646 00:32:22,930 --> 00:32:26,930 להיות אמיתי, כי זה תמיד הולך כדי לבחור משהו מבסיס הנתונים 647 00:32:26,930 --> 00:32:29,280 כי אחד כמובן תמיד שווה לאחד. 648 00:32:29,280 --> 00:32:30,360 >> אז מה הפתרון? 649 00:32:30,360 --> 00:32:33,290 ובכן בPSet 7, אנחנו באמת להימנע מכל זה ביחד. 650 00:32:33,290 --> 00:32:37,360 אנחנו נותנים לך פונקצית שאילתא, ואנחנו ממליץ לך להשתמש בסימני שאלה 651 00:32:37,360 --> 00:32:40,430 כמצייני מיקום, דומה ברוחה ל% s של printf, 652 00:32:40,430 --> 00:32:43,710 אבל מה מפתח על סימני השאלה כאן הוא אם אתה קורא למעשה דרך 653 00:32:43,710 --> 00:32:46,950 functions.php, בנו פונקצית שאילתא מיושמת, 654 00:32:46,950 --> 00:32:52,780 סימני שאלה אלה נמלטו, לפי כל דבר שעלול להיות מסוכן 655 00:32:52,780 --> 00:32:58,210 כמו ציטוט אחד מופעל לציטוט אחד נמלט. 656 00:32:58,210 --> 00:33:00,590 >> אז זה מה שזה באמת קורה אם אתה 657 00:33:00,590 --> 00:33:04,850 להשתמש בפונקצית השאילתה של CS50 או כל מספר ספריות חופשיות צד השלישי ש 658 00:33:04,850 --> 00:33:06,000 לעשות את אותו הדבר. 659 00:33:06,000 --> 00:33:09,850 לא משנה במקרה זה, בירוק, אם משתמש הקליד בציטוט אחד 660 00:33:09,850 --> 00:33:12,070 כי השאילתה פונקציה שכתבנו היא 661 00:33:12,070 --> 00:33:15,120 הולך להוסיף לוכסנים לפני כל ציטוט מסוכן כאלה. 662 00:33:15,120 --> 00:33:17,360 אז זה לא, ב למעשה, הולך להיות לגיטימי. 663 00:33:17,360 --> 00:33:20,910 זה כמו הקלדה מטורפת מחפש סיסמא זה, כמובן, לא הולך 664 00:33:20,910 --> 00:33:23,490 להיות הסיסמה בפועל של skroob. 665 00:33:23,490 --> 00:33:28,260 >> אז האוכל לCS50 הוא אחד, בהחלט תמיד להשתמש במשהו 666 00:33:28,260 --> 00:33:30,860 כמו פונקצית השאילתה של CS50 או הספרייה הבסיסית, 667 00:33:30,860 --> 00:33:32,560 שנקרא במקרה PDO. 668 00:33:32,560 --> 00:33:35,880 אבל לעולם, לעולם, אף פעם לא לעשות קוד כזה 669 00:33:35,880 --> 00:33:39,472 ללא בריחה או קרצוף כמו שאומרים התשומות שלך. 670 00:33:39,472 --> 00:33:42,430 ותוכלו בשלב מסוים כנראה נתקל כמה אתר כזה. 671 00:33:42,430 --> 00:33:46,060 למעשה, נראה שזה המקרה כמו בשדות תעופה ובתי מלון במקומות 672 00:33:46,060 --> 00:33:48,880 שם יש להם אינטרנט אלחוטי חינם גישה שאתה צריך להתחבר ל, 673 00:33:48,880 --> 00:33:51,010 אתרים אלה הם תמיד מיושם בצורה איומה. 674 00:33:51,010 --> 00:33:55,680 וכך סוג של כיף בתרגיל הבית, לא למטרות זדוניות או יותר 675 00:33:55,680 --> 00:33:59,170 של כיף על הכביש תרגיל, הוא פשוט סוג 676 00:33:59,170 --> 00:34:02,850 גרש, ציטוט אחד, לטופס מסוים באתר האינטרנט של 677 00:34:02,850 --> 00:34:03,810 ולראות מה קורה. 678 00:34:03,810 --> 00:34:06,660 ואם השרת מתרסק או נותן אתה סוג של הודעת שגיאה, 679 00:34:06,660 --> 00:34:09,690 זה עשוי להיות טוב מאוד ש מישהו לא צפה את זה. 680 00:34:09,690 --> 00:34:15,239 ואז אתה צריך להתריע נכון הרשויות ולהמשיך הלאה. 681 00:34:15,239 --> 00:34:20,843 >> אז עכשיו אתם צריכים בתקווה מבין קצת יותר הומור חנון כאן. 682 00:34:20,843 --> 00:34:24,120 >> [שחוק] 683 00:34:24,120 --> 00:34:27,571 684 00:34:27,571 --> 00:34:29,070 DAVID מלאן: אתה יודע שאתה חנון. 685 00:34:29,070 --> 00:34:30,944 לכמה הבא שנים, שתזכורנה 686 00:34:30,944 --> 00:34:33,520 ששולחנות בובי קטנים הוא בגלל קריקטורה זה כאן. 687 00:34:33,520 --> 00:34:36,760 אז לזכור את זה כמו שאנחנו מתג הקשר בפעם האחרונה 688 00:34:36,760 --> 00:34:38,770 היום ל- JavaScript. 689 00:34:38,770 --> 00:34:41,600 בילינו מעט יחסית זמן בתחביר של PHP 690 00:34:41,600 --> 00:34:43,440 כי זה בעצם סופר דומה לג 691 00:34:43,440 --> 00:34:47,300 ויפה מספיק, JavaScript מדי הוא סופר דומה לתחביר של C 692 00:34:47,300 --> 00:34:49,639 כמו גם שנראה ב רק לרגע וכן אנו 693 00:34:49,639 --> 00:34:51,205 נראה בהמשך השבוע בפרט. 694 00:34:51,205 --> 00:34:54,080 מה אתה יכול לעשות עם השפה הזאת, אם כי, הוא כל חזק יותר, 695 00:34:54,080 --> 00:34:55,790 במיוחד עם APIs. 696 00:34:55,790 --> 00:34:56,960 >> אבל קודם לסיור מהיר. 697 00:34:56,960 --> 00:35:00,450 אז אחת, ב- JavaScript, יש לא פונקציה העיקרית, וזה נחמד. 698 00:35:00,450 --> 00:35:02,650 כמו עם PHP, אתה יכול פשוט לכתוב את קוד. 699 00:35:02,650 --> 00:35:04,310 תנאים להיראות כך. 700 00:35:04,310 --> 00:35:07,100 ואולי ביטויים בוליאני ייראה כך או כך. 701 00:35:07,100 --> 00:35:09,530 מתגים קיימים, והם עשוי להיראות כך. 702 00:35:09,530 --> 00:35:10,970 ארבע לולאות נראות ככה. 703 00:35:10,970 --> 00:35:12,390 בעוד לולאות להיראות כך. 704 00:35:12,390 --> 00:35:14,160 האם whiles להיראות כך. 705 00:35:14,160 --> 00:35:16,850 ולאחר מכן מערכים נראים כמו זה, מאוד דומה ל- PHP. 706 00:35:16,850 --> 00:35:20,740 אבל שים לב, כי בJavaScript מכריז על משתנה לא עם דולר 707 00:35:20,740 --> 00:35:25,190 לחתום, לא עם סוג נתונים, אבל ממש באומרו var למשתנה לפני זה. 708 00:35:25,190 --> 00:35:27,900 גם הוא הוקלד באופן רופף בכי יש לו סוגים, 709 00:35:27,900 --> 00:35:29,729 אבל אתה לא במפורש להכריז עליהם. 710 00:35:29,729 --> 00:35:31,520 ולאחר מכן מחרוזת, ל למשל, עשוי להיראות 711 00:35:31,520 --> 00:35:34,350 ככה, מחרוזת ש להיקרא S במקרה זה. 712 00:35:34,350 --> 00:35:35,410 ולאחר מכן אובייקט. 713 00:35:35,410 --> 00:35:37,010 ואנחנו אלה יראו יותר לפני זמן רב. 714 00:35:37,010 --> 00:35:41,470 ומטרה היא אולי אחד מ הנפוץ ביותר ראה מבני נתונים 715 00:35:41,470 --> 00:35:44,050 מבוסס בJavaScript תכנית משום שהיא מאפשרת 716 00:35:44,050 --> 00:35:46,680 לך לשייך שרירותי זוגות ערך מפתח פשוט 717 00:35:46,680 --> 00:35:51,240 כמו המערכים האסוציאטיביים של PHP ובדיוק כמו טבלת הגיבוב שלך 718 00:35:51,240 --> 00:35:54,042 או לנסות כפי שמיושמים לפני כמה שבועות. 719 00:35:54,042 --> 00:35:56,250 אז בואו באמת רואים את מה ש אנחנו יכולים לעשות עם JavaScript. 720 00:35:56,250 --> 00:35:59,410 ובפרט, זה הוא רשימת מכולת של תכונות 721 00:35:59,410 --> 00:36:02,300 שיש לי דפדפנים ש מאפשר לנו להתחבר JavaScript 722 00:36:02,300 --> 00:36:05,470 לאתר באופן הבא. 723 00:36:05,470 --> 00:36:09,340 JavaScript משמש לעתים קרובות כ בצד הלקוח שפת scripting. 724 00:36:09,340 --> 00:36:10,130 זה לא הידור. 725 00:36:10,130 --> 00:36:11,370 גם זה מתפרש. 726 00:36:11,370 --> 00:36:15,740 אבל שלא כמו PHP, שכבר פועל בשרת, בשרת האינטרנט, 727 00:36:15,740 --> 00:36:18,220 או בתוך עמוק של לקוחות, JavaScript 728 00:36:18,220 --> 00:36:22,190 הוא שונה בזה ש בדרך כלל פועל בדפדפן. 729 00:36:22,190 --> 00:36:26,060 >> אז כל קוד JavaScript שאתה מתחיל בכתיבה לPSet 8, או פרויקט הגמר שלך, 730 00:36:26,060 --> 00:36:29,890 או בעולם האמיתי הוא בדרך כלל הולך כדי להינצל בשרת, באופן מוחלט 731 00:36:29,890 --> 00:36:33,110 ב- HTML או נקודת נקודה JS לקובץ JavaScript. 732 00:36:33,110 --> 00:36:35,770 אבל הדפדפן הולך להוריד כי JavaScript 733 00:36:35,770 --> 00:36:39,530 קוד לדוגמא של Chrome שלך, או IE, או Firefox, או משהו כזה. 734 00:36:39,530 --> 00:36:43,870 והקוד הוא בעצם הולך לקבל בוצע בתוך הדפדפן שלך. 735 00:36:43,870 --> 00:36:46,560 רק כדי לעשות את זה יותר אמיתי, בואו לראות את זה בצורה מוחשית. 736 00:36:46,560 --> 00:36:50,120 >> אין לנו מושג מה הקוד הזה עושה בלי באמת לקרוא את זה. 737 00:36:50,120 --> 00:36:52,670 אבל הרשית לי ללכת לFacebook.com ללא כניסה. 738 00:36:52,670 --> 00:37:00,440 תן לי ללכת לבדיקת רכיב וללכת, נניח, רשת וטען מחדש את הדף. 739 00:37:00,440 --> 00:37:04,150 ואנחנו see-- תן לי לעבור רענן עמוד כדי לקבל את כל הבקשות לחדשות. 740 00:37:04,150 --> 00:37:08,850 וראשון קובץ שאני רואה זה CSS, CSS. 741 00:37:08,850 --> 00:37:10,880 הנה הראשון JavaScript קובץ, ויש לי 742 00:37:10,880 --> 00:37:14,600 אין לי מושג מה זה עושה, אבל כאן הוא חלק מקוד JavaScript 743 00:37:14,600 --> 00:37:16,180 שמניע את פייסבוק. 744 00:37:16,180 --> 00:37:18,400 זה אפילו לא באמת ש חשיפה כדי להתקרב. 745 00:37:18,400 --> 00:37:20,260 זה עדיין שטותי באותה מידה. 746 00:37:20,260 --> 00:37:24,341 >> אבל תראה גם למטה, יש עוד יותר של קבצי JavaScript אלה. 747 00:37:24,341 --> 00:37:24,840 אופס. 748 00:37:24,840 --> 00:37:25,440 זה פינג. 749 00:37:25,440 --> 00:37:28,550 בואו נרד קצת הלאה, הלאה, עוד יותר. 750 00:37:28,550 --> 00:37:29,894 יש אחד. 751 00:37:29,894 --> 00:37:31,238 יש אחד. 752 00:37:31,238 --> 00:37:31,880 יש אחד. 753 00:37:31,880 --> 00:37:35,820 >> אז למרות שפייסבוק, מאחורי סצנות, כתובה בחלק ב- PHP 754 00:37:35,820 --> 00:37:39,100 וממנו הגרסה של פייסבוק עצמו, יש כמות עצומה של JavaScript. 755 00:37:39,100 --> 00:37:41,330 למעשה, כל אחד מ לפטפט אתה עושה בפייסבוק, 756 00:37:41,330 --> 00:37:45,520 כל עדכוני ציר הזמן מוטבע זה קרה בזמן אמת, את כל זה 757 00:37:45,520 --> 00:37:47,944 הוא מונע על ידי JavaScript. 758 00:37:47,944 --> 00:37:48,444 כן? 759 00:37:48,444 --> 00:37:50,235 >> קהל: אני לא בטוח אם זה פייסבוק, 760 00:37:50,235 --> 00:37:53,624 אבל חשבתי שפייסבוק פיתח השפה שלהם בבית הקוד? 761 00:37:53,624 --> 00:37:54,540 DAVID מלאן: הם עשו. 762 00:37:54,540 --> 00:37:58,110 אז בגלל זה אני אומר שונות של PHP נקרא היפ הופ שהם בעצם 763 00:37:58,110 --> 00:38:03,440 תכונות שנוספו לכך שכאשר מארק מיושם פייסבוק הראשון, 764 00:38:03,440 --> 00:38:04,710 הוא נכתב ב- PHP. 765 00:38:04,710 --> 00:38:07,370 וזה סוג של נשאר הסוג של שפה הקדמית 766 00:38:07,370 --> 00:38:09,030 כי הם משתמשים בהרבה הקידוד שלהם, אבל זה 767 00:38:09,030 --> 00:38:11,870 לא הייתה שפה שהיא מאזניים טובים במיוחד למליארד 768 00:38:11,870 --> 00:38:12,630 אנשים. 769 00:38:12,630 --> 00:38:15,300 וכך יש להם הוסיפו משלהם שיפורים מאחורי הקלעים. 770 00:38:15,300 --> 00:38:17,049 והם משתמשים בכל מספר שפות אחרות 771 00:38:17,049 --> 00:38:19,170 לחלקים שונים של התשתית שלהם. 772 00:38:19,170 --> 00:38:24,080 אז כן, זה שונות מ מה שאנחנו יודעים כיום כמו PHP. 773 00:38:24,080 --> 00:38:26,610 >> אז בואו נסתכל בכמה דוגמאות 774 00:38:26,610 --> 00:38:28,890 איך אנחנו יכולים להשתמש ב- JavaScript כאן. 775 00:38:28,890 --> 00:38:32,530 בקוד המקור של היום, יש לנו חבורה של קבצים, הראשון שבם, 776 00:38:32,530 --> 00:38:34,090 בואו נקראים DOM אפס. 777 00:38:34,090 --> 00:38:36,770 אז DOM אפס נראה כדלקמן. 778 00:38:36,770 --> 00:38:40,730 תן לי ללכת לספרייה זו ולפתוח domzero.html, 779 00:38:40,730 --> 00:38:44,970 ראש שיש לו סוג doc הצהרה, אומר כאן מגיעה HTML 5. 780 00:38:44,970 --> 00:38:46,440 ועכשיו הנה תג HTML. 781 00:38:46,440 --> 00:38:47,540 הנה תג הראש. 782 00:38:47,540 --> 00:38:49,210 והנה מה חדש היום. 783 00:38:49,210 --> 00:38:52,620 >> עכשיו יש לנו תג סקריפט בתוך הראש של הדף. 784 00:38:52,620 --> 00:38:55,290 וזה עושה כנראה מעט מאוד, אבל הודעה 785 00:38:55,290 --> 00:38:58,410 שהגדרתי תסריט, JavaScript. 786 00:38:58,410 --> 00:39:01,050 ואגב זה, שכן זה זוהי טעות נפוצה, 787 00:39:01,050 --> 00:39:05,220 יש JavaScript שום דבר לעשות עם ג'אווה, השפה 788 00:39:05,220 --> 00:39:08,010 שחלק מכם אולי למד באכזריות. 789 00:39:08,010 --> 00:39:10,480 זה היה יותר משיווק דבר מכל דבר, 790 00:39:10,480 --> 00:39:12,980 רכיבת coattails שנות Java לפני. 791 00:39:12,980 --> 00:39:17,300 אבל JavaScript, ולא כלום עם Java, רק באופן דומה, ומעצבן, 792 00:39:17,300 --> 00:39:18,480 שם מבלבל. 793 00:39:18,480 --> 00:39:21,890 >> אז הנה איך אתה מצהיר על פונקציה ב- JavaScript, פשוטו כמשמעו, אומר פונקציה, 794 00:39:21,890 --> 00:39:24,556 לאחר מכן את השם של הפונקציה, אז כל טיעונים שזה עלול לקחת, 795 00:39:24,556 --> 00:39:25,530 בדיוק כמו ב- PHP. 796 00:39:25,530 --> 00:39:28,990 מתברר ב- JavaScript, אחד מביותר פונקציות מעצבנות שקיימות היא התראה. 797 00:39:28,990 --> 00:39:31,392 זהו חלון קטן ש יצוץ ותתריע 798 00:39:31,392 --> 00:39:32,600 לפיסת מידע. 799 00:39:32,600 --> 00:39:33,766 זה כלל בעין יפה. 800 00:39:33,766 --> 00:39:35,980 אבל אנחנו מתכוונים להשתמש בו כ התרגיל הראשון כאן. 801 00:39:35,980 --> 00:39:37,900 >> שים לב כמה תכונות של JavaScript. 802 00:39:37,900 --> 00:39:41,524 ציטוטים בודדים ומרכאות כפולות לא ממש משנה יותר. 803 00:39:41,524 --> 00:39:43,690 ציטוטים וכפולים אחת יכולים להיות להחלפה ציטוטים, 804 00:39:43,690 --> 00:39:46,220 ואילו בC, אתה צריך להשתמש מרכאות כפולות עבור מחרוזות, 805 00:39:46,220 --> 00:39:48,150 ויש לך שתי אחד מצטט לתווים. 806 00:39:48,150 --> 00:39:51,150 בעולם JavaScript, אנשים רבים, רוב האנשים 807 00:39:51,150 --> 00:39:54,970 השתמש בגרשיים בודדים סביב מחרוזות רק בגלל שזה דבר סגנונית. 808 00:39:54,970 --> 00:39:58,330 אבל מה המפעיל בתוספת כאן, שלא ראה קודם? 809 00:39:58,330 --> 00:39:59,836 >> קהל: שרשור. 810 00:39:59,836 --> 00:40:00,960 DAVID מלאן: שרשור. 811 00:40:00,960 --> 00:40:02,450 אז C אפילו לא צריך את זה. 812 00:40:02,450 --> 00:40:04,820 PHP יש מפעיל הנקודה, שעושה את זה. 813 00:40:04,820 --> 00:40:09,710 יש JavaScript המפעיל בתוספת, אשר מבלבל הוא בדיוק כמו Java. 814 00:40:09,710 --> 00:40:11,440 עכשיו מה קורה כאן? 815 00:40:11,440 --> 00:40:14,260 >> אז הנה המקום שבו בסיסי הבנה של תמונה ש 816 00:40:14,260 --> 00:40:17,010 זרקנו את זוג לפני ימים נכנס לשחק. 817 00:40:17,010 --> 00:40:19,620 זכור כאשר היו לנו פשוט גרסה של HTML page-- 818 00:40:19,620 --> 00:40:20,830 זה פשוט אמר, שלום עולם. 819 00:40:20,830 --> 00:40:22,770 ואז משכו את עץ מימין, ש 820 00:40:22,770 --> 00:40:27,320 הייתה חבורה של מלבנים וקווים הקושר אותם כמו עץ ​​משפחה. 821 00:40:27,320 --> 00:40:30,820 אז זה DOM שנקרא או סוג Document Object Model. 822 00:40:30,820 --> 00:40:36,759 ומתברר שאתה יכול לגשת ל מלבנים בעץ שעם תחביר 823 00:40:36,759 --> 00:40:37,550 כמו הבא. 824 00:40:37,550 --> 00:40:41,370 אתה ממש אומר מסמך, שבו הוא משתנה הגלובלי מיוחד בJavaScript 825 00:40:41,370 --> 00:40:45,890 תכנית שיש לו תפקיד הקשורים אליו, כי אתה יכול לגשת ל 826 00:40:45,890 --> 00:40:50,280 בדומה לstruct, אבל אתה פשוט אומר נקודה ולאחר מכן את השם של הפונקציה, 827 00:40:50,280 --> 00:40:52,390 לקבל אלמנט לפי תעודת זהות. 828 00:40:52,390 --> 00:40:55,460 >> האלמנט אני רוצה לקבל הוא כנראה לצטט שם סוף ציטוט. 829 00:40:55,460 --> 00:40:57,150 ולאחר מכן אני רוצה לקבל הערך שלה. 830 00:40:57,150 --> 00:40:58,330 עכשיו אנחנו מקבלים נקדים את המאוחר. 831 00:40:58,330 --> 00:41:00,038 אני אפילו לא בטוח מה כל זה עומד. 832 00:41:00,038 --> 00:41:03,000 קדימה מהר בואו לHTML על הדף, שהוא סופר פשוט. 833 00:41:03,000 --> 00:41:05,370 >> הודעה שהגדרתי טופס כאן למטה. 834 00:41:05,370 --> 00:41:07,940 שים לב שנתתי לו ייחודי זהות, למרות שאנחנו כבר לא בשימוש 835 00:41:07,940 --> 00:41:08,870 תכונה זו לפני. 836 00:41:08,870 --> 00:41:11,300 אבל זה קיים ב- HTML. 837 00:41:11,300 --> 00:41:15,570 באופן ייחודי ניתן לזהות כמה נתח של HTML עם מזהה כזה. 838 00:41:15,570 --> 00:41:19,880 >> הודעת החברה זה-- מתברר HTML תומך, שלרשימת מכולת 839 00:41:19,880 --> 00:41:22,490 לפני רגע, כל חבורה של מטפלים באירועים. 840 00:41:22,490 --> 00:41:25,060 ומטפל באירועים זה אומר על שליחה. 841 00:41:25,060 --> 00:41:28,730 על הגשת המשתמש של זה צורה, קוראת את הקוד הבא. 842 00:41:28,730 --> 00:41:31,360 והקוד זה הולך שייקרא או שבוצע 843 00:41:31,360 --> 00:41:35,260 הוא בדיוק זה, יווני פונקציה ואחריו שווא תמורה. 844 00:41:35,260 --> 00:41:37,360 צריך כל דבר אחר להיות די מוכר. 845 00:41:37,360 --> 00:41:42,050 >> הנה קלט מסוג text, ש זיהוי, במקרה זה, הולך להיות שם. 846 00:41:42,050 --> 00:41:45,430 אין לנו בפועל שם תכונה time-- זה וכפתור שליחה. 847 00:41:45,430 --> 00:41:48,330 אז בדף שהתקבל נראה כך. 848 00:41:48,330 --> 00:41:52,890 וההתנהגות כתוצאה, תראה, נראה כך. 849 00:41:52,890 --> 00:41:56,940 דף המארחים המקומיים הוא אומר, שלום דוד, כמעט לא אסתטי 850 00:41:56,940 --> 00:41:58,340 דרך לקבל את פני משתמש. 851 00:41:58,340 --> 00:41:59,950 אך מה שבאמת קורה? 852 00:41:59,950 --> 00:42:01,360 >> ובכן, לשקול מה זה. 853 00:42:01,360 --> 00:42:02,310 זהו שדה טקסט. 854 00:42:02,310 --> 00:42:04,635 ובהתאם ל HTML כאן, נתתי לו 855 00:42:04,635 --> 00:42:07,350 מזהה ייחודי נקרא ציטוט שם סוף ציטוט. 856 00:42:07,350 --> 00:42:09,770 בינתיים, אני כבר אמרתי כש המשתמש שולח טופס זה 857 00:42:09,770 --> 00:42:13,820 על ידי להכות על Enter או לחיצה על שלח כפתור, לקרוא לפונקציה שנקראת לברך 858 00:42:13,820 --> 00:42:15,410 ולאחר מכן לחזור שווא. 859 00:42:15,410 --> 00:42:16,870 הבה נבחן אותם בכיוון הפוך. 860 00:42:16,870 --> 00:42:20,590 שים לב כאשר אני לוחץ שלח, כתובת של הדף הזה אינו משתנה. 861 00:42:20,590 --> 00:42:22,420 הסמל של הדפדפן לא מתחיל מסתחרר. 862 00:42:22,420 --> 00:42:27,050 אני לא הולך לשום מקום, וזה פשוטו כמשמעו, כי אמרתי בתמורת שווא. 863 00:42:27,050 --> 00:42:31,534 חזור מעגלים קצרים שקר או עצירות התנהגות ברירת המחדל של טופס. 864 00:42:31,534 --> 00:42:33,700 כך שלאחר מכן משאיר אותנו עם שאלה זו אחת סופית. 865 00:42:33,700 --> 00:42:34,764 מה לברך עושה? 866 00:42:34,764 --> 00:42:36,680 ובכן, לברך כנראה קורא פונקציה שנקראת 867 00:42:36,680 --> 00:42:39,250 התראה, עוברת באחד ויכוח ארוך זה 868 00:42:39,250 --> 00:42:43,950 התוצאה של שרשור יחד חבורה של מחרוזות, שלום חלל פסיק, 869 00:42:43,950 --> 00:42:45,810 אז מה זה חוזר. 870 00:42:45,810 --> 00:42:51,490 אז מסמך הוא כמו גלובלי משתנה לשורש של עץ ש, 871 00:42:51,490 --> 00:42:55,560 קורא לפונקציה מיוחדת, אחרת ידועה כיום בשם שיטה. 872 00:42:55,560 --> 00:42:57,650 פונקציה זו בתוך משתנה 873 00:42:57,650 --> 00:42:59,640 נקרא שיטה במקום פונקציה. 874 00:42:59,640 --> 00:43:01,570 >> אז לקבל את האלמנט לפי תעודת זהות. 875 00:43:01,570 --> 00:43:03,940 מה אלמנט אתה רוצה לקבל לפי תעודת הזהות שלה? 876 00:43:03,940 --> 00:43:06,970 ציטוט שם סוף ציטוט ו אז במיוחד מעריך. 877 00:43:06,970 --> 00:43:12,000 אז במילים אחרות, קוד שפשוט מוצא את שדה הטקסט מזהה שהוא שם 878 00:43:12,000 --> 00:43:13,380 ולאחר מכן מקבל הערך שלה. 879 00:43:13,380 --> 00:43:16,460 לכן, אם הייתי לשנות את זה ואומר דווין במקומו של דוד, 880 00:43:16,460 --> 00:43:20,670 ולוחצים על שלח, עכשיו אנחנו יש ברכה לדיווין. 881 00:43:20,670 --> 00:43:22,890 >> בסדר, אז כל מה שטוב ויפה. 882 00:43:22,890 --> 00:43:25,480 אבל בואו תראו אם אנחנו יכולים לעשות זה קצת נקי מאז רק 883 00:43:25,480 --> 00:43:28,190 כתיבת קוד כזה הוא בדרך כלל הולך להיות בעין יפה. 884 00:43:28,190 --> 00:43:30,060 זה הולך להיראות יותר מפחיד. 885 00:43:30,060 --> 00:43:32,330 אבל מה הראשון הבדל שאתה לציין כאן 886 00:43:32,330 --> 00:43:35,970 בגרסה זו, מלבד שם שינוי לDOM אחד? 887 00:43:35,970 --> 00:43:41,110 מה מבני נראה שונה על זה מול אחר? 888 00:43:41,110 --> 00:43:41,932 כן? 889 00:43:41,932 --> 00:43:43,890 קהל: האם טופס ראש הסקריפט עכשיו? 890 00:43:43,890 --> 00:43:46,570 DAVID מלאן: כן, הצורה היא על העליונה של התסריט מסיבה כלשהי סקרנית. 891 00:43:46,570 --> 00:43:48,736 אז זה הדבר הראשון שגם קופץ עליי,. 892 00:43:48,736 --> 00:43:50,990 ותודה לאל, לפחות, חלק זה הוא זהה. 893 00:43:50,990 --> 00:43:53,470 אז הדבר היחיד שנראה להיות שונה זה. 894 00:43:53,470 --> 00:43:55,296 >> אז הנה מה שזה באופן מסודר על JavaScript 2. 895 00:43:55,296 --> 00:43:57,420 וזה עושה את זה קשה להבין במבט ראשון, 896 00:43:57,420 --> 00:44:00,670 במיוחד עבור פרויקט גמר אם אתה מסתכל על קוד לדוגמא באינטרנט, 897 00:44:00,670 --> 00:44:04,200 אבל זה מסתכם לכ תכונות תחביריות בסיסיות. 898 00:44:04,200 --> 00:44:06,230 הנה שוב ש מסמך משתנה גלובלי. 899 00:44:06,230 --> 00:44:09,540 גם כאן היא ששיטה או פונקציה שאומר לקבל את האלמנט לפי תעודת זהות. 900 00:44:09,540 --> 00:44:11,570 הפעם אני רוצה לקבל את קוד זיהוי נקרא הדגמה. 901 00:44:11,570 --> 00:44:12,490 איפה זה? 902 00:44:12,490 --> 00:44:15,400 זה נכון, ככל הנראה, כאן, לטופס עצמו. 903 00:44:15,400 --> 00:44:20,010 >> ועכשיו שמו לב שככל הנראה אם ​​אני לחזור צומת שמן העץ ש 904 00:44:20,010 --> 00:44:22,940 מייצג את הצורה עצמו, לא בשדה טקסט, 905 00:44:22,940 --> 00:44:26,970 מתברר צורה ש, ש צומת או מלבן מהעץ, 906 00:44:26,970 --> 00:44:30,450 יש את מה שאנחנו קוראים לרכוש, מאוד, מאוד, מאוד דומה 907 00:44:30,450 --> 00:44:35,390 ברוחה לstruct ב C. זה פשוט חבר מידע שבתוך המלבן הזה. 908 00:44:35,390 --> 00:44:38,300 >> אז יש לי את הטופס כאן, ואני מצרף, 909 00:44:38,300 --> 00:44:44,650 או שאני הקצאה, ליומה שלח מטפל או לייתר דיוק בהגשת רכוש 910 00:44:44,650 --> 00:44:45,740 את הפונקציה הבאה. 911 00:44:45,740 --> 00:44:49,000 וזה, ללא ספק, הכי מטורף דבר עד כה מבחינה תחבירית. 912 00:44:49,000 --> 00:44:53,610 מתברר ב- JavaScript וב PHP, ולמען אמת לצורך העניין ב- C, 913 00:44:53,610 --> 00:44:58,990 למרות שאנחנו לא עושים את זה, אתה יכול להוסיף או למבדה חסרות שם, בעילום שם, AKA 914 00:44:58,990 --> 00:45:03,000 פונקציות שאין לי שם אבל יכול להיקרא בכל זאת. 915 00:45:03,000 --> 00:45:07,050 >> אז מה אני עושה כאן אני הקצאה זה בשולח רכוש, ש 916 00:45:07,050 --> 00:45:14,330 הוא בתוך הצומת הזה של עץ DOM שלי, פונקציה, מצביע פונקציה אם תרצה. 917 00:45:14,330 --> 00:45:16,310 יש פונקציה שלא שם, אבל זה לא 918 00:45:16,310 --> 00:45:19,110 משנה כי אנחנו תראו ברגע איך לקרוא לזה. 919 00:45:19,110 --> 00:45:21,780 כאשר פונקציה זו נקראת, קוד זה מקבל להורג, אז 920 00:45:21,780 --> 00:45:24,210 שקר הוא חזר בדיוק כמו לפני. 921 00:45:24,210 --> 00:45:25,800 >> אבל שים לב מה שעשיתי. 922 00:45:25,800 --> 00:45:27,830 בנקודה זו בזה סיפור, יש לי צורה. 923 00:45:27,830 --> 00:45:30,190 יש בו זיהוי ייחודי הנקרא הדגמה. 924 00:45:30,190 --> 00:45:33,740 כאן למטה, יש לי תג סקריפט שמבצע את הקוד הבא. 925 00:45:33,740 --> 00:45:37,720 זה מתחבר לצומת שב העץ לזה בהגשה 926 00:45:37,720 --> 00:45:40,260 רכוש בפונקציה זו כאן. 927 00:45:40,260 --> 00:45:44,310 ורק על ידי הטבע של איך דפדפנים לעבוד, כשאני עכשיו לוחץ על Submit או על Enter, 928 00:45:44,310 --> 00:45:45,889 הפונקציה שהוא הולכת לקבל בשם. 929 00:45:45,889 --> 00:45:48,680 היא לא צריכה שם כי מי לעזאזל אכפת מה זה נקרא. 930 00:45:48,680 --> 00:45:52,540 רק הזמן זה אי פעם הולך לקבל נקרא הוא כאשר אני מגיש את הטופס. 931 00:45:52,540 --> 00:45:55,130 אין צורך בשבילי, מפתח האנושי, 932 00:45:55,130 --> 00:45:57,330 למעשה לקרוא לזה בכל מקום אחר. 933 00:45:57,330 --> 00:46:00,720 >> עכשיו רק בתור טיזר, כאילו ש לא היו אכפת לי כיפוף מספיק, 934 00:46:00,720 --> 00:46:03,330 אנחנו יכולים אפילו לעשות את זה לחפש באמצעות נסתר יותר 935 00:46:03,330 --> 00:46:05,850 ספריית סופר פופולרית בשם jQuery. 936 00:46:05,850 --> 00:46:08,760 למעשה jQuery ו- JavaScript מתאחדים ומתמזגים לעתים קרובות. 937 00:46:08,760 --> 00:46:12,790 ומה שנעשינו ביום רביעי הוא התחלה שימוש בשפה זו וספריות אלה 938 00:46:12,790 --> 00:46:16,030 לבנות אסינכרוני יותר ויותר ויישומים דינמיים 939 00:46:16,030 --> 00:46:18,950 כמו המפה מקבלת יישומים, יישומים 940 00:46:18,950 --> 00:46:22,360 שתעדכן את דף האינטרנט בתחום זמן, ממש כמו פייסבוק או Gchat כלשהו 941 00:46:22,360 --> 00:46:27,130 לעשות, וכבר לא להגביל את עצמנו ל להכות שלח על ידי גט, או רק לאחר 942 00:46:27,130 --> 00:46:27,630 לבד. 943 00:46:27,630 --> 00:46:29,055 אז אני אראה אותך ביום רביעי. 944 00:46:29,055 --> 00:46:31,805 945 00:46:31,805 --> 00:46:35,550 >> [השמעת מוסיקה] 946 00:46:35,550 --> 00:48:09,728