1 00:00:00,000 --> 00:00:05,616 2 00:00:05,616 --> 00:00:07,030 >> חנה בלומברג: שלום לכולם. 3 00:00:07,030 --> 00:00:09,530 אנחנו הולכים להתחיל רק כמה דקות מוקדם 4 00:00:09,530 --> 00:00:11,738 מאז יש לנו הרבה חומר לעבור אותו. 5 00:00:11,738 --> 00:00:12,790 אני חנה. 6 00:00:12,790 --> 00:00:13,865 אני TF. 7 00:00:13,865 --> 00:00:16,239 מריה הולכת להיות הצטרפות שלנו רק כמה דקות. 8 00:00:16,239 --> 00:00:17,560 היא מלמדת את הסעיף נכון לפני. 9 00:00:17,560 --> 00:00:19,351 אני מלמד זכות סעיף לאחר, כך אנחנו הולכים 10 00:00:19,351 --> 00:00:21,200 כדי לשמור אותו לשעה וחצי. 11 00:00:21,200 --> 00:00:25,490 >> אז כפי שאתם תראו עד כאן, יש לנו די כמה נושאים שאנחנו צריכים לעבור, 12 00:00:25,490 --> 00:00:27,200 אז אנחנו הולכים קצת מהר. 13 00:00:27,200 --> 00:00:31,140 אבל אם בכל נקודה שאנחנו אומרים משהו מהר מדי או שאתה לא מבין, 14 00:00:31,140 --> 00:00:33,170 אל תהסס להפסיק עם שאלות. 15 00:00:33,170 --> 00:00:36,610 אנחנו רוצים להיות מסוגלים לעשות את זה לסקור פגישה כשימושית לכולכם 16 00:00:36,610 --> 00:00:37,973 ככל האפשר. 17 00:00:37,973 --> 00:00:38,920 מדהים. 18 00:00:38,920 --> 00:00:41,650 >> אז בואו לקפוץ ישר בעם כמה נושאים שאנחנו באמת 19 00:00:41,650 --> 00:00:46,980 מאוד, מאוד מכוסה בקצרה ל חידון 0 במפגש סקירת חידון 0. 20 00:00:46,980 --> 00:00:48,840 אז החל ברשימות מקושרות. 21 00:00:48,840 --> 00:00:52,090 אז רק לוודא שיש לך כמה ידע בסיסי על רשימות מקושרות 22 00:00:52,090 --> 00:00:55,110 והם נוחים עושים חלק מהפעולות הבסיסיות. 23 00:00:55,110 --> 00:00:58,560 >> אז רק כדי לסקור, מקושר רשימות טובות יותר ממערכים 24 00:00:58,560 --> 00:01:01,020 כי הם יכולים לגדול באופן דינמי. 25 00:01:01,020 --> 00:01:03,300 אז יש לנו יתרון עצום ש. 26 00:01:03,300 --> 00:01:06,031 ראינו אותם בשימוש בשולחנות חשיש כש 27 00:01:06,031 --> 00:01:08,280 לא יודע בדיוק כמה דברים שאנחנו הולכים לרוצים 28 00:01:08,280 --> 00:01:10,900 להכניס לתוך מבנה הנתונים שלנו. 29 00:01:10,900 --> 00:01:15,700 למרבה הצער, יש לנו חתיכות של הרשימה המקושרת בכל רחבי זיכרון, 30 00:01:15,700 --> 00:01:20,820 כדי שלא יהיה בהכרח מסוגל לעשות גישה מתמדת זמן 31 00:01:20,820 --> 00:01:22,502 לכל אלמנט ברשימה המקושרת. 32 00:01:22,502 --> 00:01:24,210 כדי למצוא אלמנט מסוים, אנחנו 33 00:01:24,210 --> 00:01:26,510 צריך לחזר כל דרך מההתחלה. 34 00:01:26,510 --> 00:01:30,610 אז יש לזכור כי רוב פעולות בסיסיות הן אומגה של 1. 35 00:01:30,610 --> 00:01:32,130 אז להכניס רק הולך לקחת 1. 36 00:01:32,130 --> 00:01:37,520 מחק הולך לקחת n מאז ש צריך ללכת למצוא אותו מהרשימה. 37 00:01:37,520 --> 00:01:39,260 וחיפוש יכול לקחת, במקרה הגרוע ביותר, n. 38 00:01:39,260 --> 00:01:42,330 אנחנו לא יכולים לעשות משהו כמו חיפוש בינארי ברשימה מקושרת 39 00:01:42,330 --> 00:01:45,101 מאחר שאנחנו לא יכולים פשוט באופן אקראי לקפוץ לאמצע. 40 00:01:45,101 --> 00:01:45,600 מגניב. 41 00:01:45,600 --> 00:01:48,160 42 00:01:48,160 --> 00:01:48,960 מדהים. 43 00:01:48,960 --> 00:01:50,270 >> קצת ערימות. 44 00:01:50,270 --> 00:01:53,980 זה, שוב, עלה על חידון 0, כך ש צריך להיות סופר נוח עם זה. 45 00:01:53,980 --> 00:01:57,210 אבל לערימות, אנו מבקשים מכם לזכור ערימה של מגשים. 46 00:01:57,210 --> 00:01:59,940 וזה הולך להיות ראשון ב, יימשך החוצה. 47 00:01:59,940 --> 00:02:02,272 אז אנחנו מחסנית דברים בערימה, ולאחר מכן 48 00:02:02,272 --> 00:02:04,980 אם אנחנו מנסים לקחת משהו off-- שאנו מכנים צצים מ 49 00:02:04,980 --> 00:02:06,581 stack-- אנחנו באים את החלק העליון. 50 00:02:06,581 --> 00:02:09,289 ואם אנחנו רוצים לשים משהו בערימה, אנחנו קוראים לזה דוחף. 51 00:02:09,289 --> 00:02:13,170 אז זה תמיד הולך להיות גדל מלמטה כמו ערימה של מגשים. 52 00:02:13,170 --> 00:02:14,540 מדהים. 53 00:02:14,540 --> 00:02:17,607 >> אנחנו כבר מיושמות ערימות ראו עם שני רשימות ומערכים קשורים. 54 00:02:17,607 --> 00:02:19,440 אם אתה מיישם עם מערכים, אתה רוצה 55 00:02:19,440 --> 00:02:22,350 לוודא כדי לעקוב אחר שני בגודל וביכולת. 56 00:02:22,350 --> 00:02:27,540 אז הגודל הולך להיות הנוכחי מספר דברים בערימה שלך, 57 00:02:27,540 --> 00:02:32,900 אילו יכולת הוא המספר הכולל דברים שאתה יכול לאחסן בערימה שלך. 58 00:02:32,900 --> 00:02:34,220 מגניב. 59 00:02:34,220 --> 00:02:35,767 >> מאוד דומה, יש לנו תורים. 60 00:02:35,767 --> 00:02:38,850 במקרה זה, במקום לחשוב על ערימה של מגשים, לחשוב על קו. 61 00:02:38,850 --> 00:02:40,697 זה הולך להיות ראשון ב, ראשון החוצה. 62 00:02:40,697 --> 00:02:42,780 אז אם אתה עומדים בתור ל משהו בחנות, 63 00:02:42,780 --> 00:02:46,920 אנו מקווים כי האדם הראשון ב הקו הולך להיות עזר ראשון. 64 00:02:46,920 --> 00:02:49,350 >> במקום לומר דחיפה ו פופ כמו שאנחנו עושים לערימה, 65 00:02:49,350 --> 00:02:52,000 רק אנחנו אומרים Enqueue וdequeue. 66 00:02:52,000 --> 00:02:54,970 ושוב, אם אתה יישום זה עם מערך, 67 00:02:54,970 --> 00:02:56,720 אנחנו צריכים לשמור על מסלול לא רק את הגודל 68 00:02:56,720 --> 00:03:02,390 ויכולת, אלא גם את הראש, ש הולך להיות מול התור שלנו. 69 00:03:02,390 --> 00:03:03,010 מגניב. 70 00:03:03,010 --> 00:03:05,770 כל שאלות על כל זה? 71 00:03:05,770 --> 00:03:06,320 מדהים. 72 00:03:06,320 --> 00:03:07,640 נע ימינה לאורך. 73 00:03:07,640 --> 00:03:08,564 >> אישור, שולחנות חשיש. 74 00:03:08,564 --> 00:03:10,605 כאן זה מתחיל להגיע ממש מעניין. 75 00:03:10,605 --> 00:03:14,150 אז שולחן חשיש יישום אחד של מערך אסוציאטיבי. 76 00:03:14,150 --> 00:03:16,700 אז בעצם מה שקרה הוא שיש לנו את כל הקלט הזה, 77 00:03:16,700 --> 00:03:18,750 ואנחנו נותנים לזה חשיש פונקציה שאומרת, 78 00:03:18,750 --> 00:03:21,840 אישור, זה מקום שבו ב שולחן חשיש הוא שייך. 79 00:03:21,840 --> 00:03:24,860 >> אז פונקצית החשיש הפשוטה שראינו הוא רק אומר, 80 00:03:24,860 --> 00:03:28,170 אישור, נניח שאנו רוצים לשים מחרוזות בטבלת החשיש שלנו. 81 00:03:28,170 --> 00:03:30,870 ובאמת רעיון פשוט יכול להיות לומר, בסדר, 82 00:03:30,870 --> 00:03:34,350 בואו פשוט למיין לפי האות ראשונה של המילה. 83 00:03:34,350 --> 00:03:37,570 אז אתם יכולים לראות כאן, אנחנו לוקחים את הבננה, אנחנו שמים את זה דרך פונקצית חשיש, 84 00:03:37,570 --> 00:03:40,190 וזה אומר, היי, ש צריך ללכת במדד 1. 85 00:03:40,190 --> 00:03:45,120 >> אז בעצם אנחנו יכולים לחשוב על חשיש שולחן כמו חבורה של דליים שונים. 86 00:03:45,120 --> 00:03:49,880 וכל אחד מדליים אלה הולך להחזיק את הראש של רשימה מקושרת. 87 00:03:49,880 --> 00:03:55,030 ושברשימה המקושרת שבו אנחנו יכולים למעשה לשים פיסות מידע שונות. 88 00:03:55,030 --> 00:03:57,820 >> אז צלילה קצת יותר לפונקצית חשיש, הנה 89 00:03:57,820 --> 00:03:59,870 הדוגמא אני רק תיארתי שבו אנחנו פשוט אומרים, 90 00:03:59,870 --> 00:04:02,460 אישור, לקחת את האות הראשונה של המילה ואנחנו 91 00:04:02,460 --> 00:04:03,990 הולך כדי למיין אותו לדליים. 92 00:04:03,990 --> 00:04:08,490 אז ככל הנראה, יהיו 26 דליים, אחד לכל אות של אלף בית. 93 00:04:08,490 --> 00:04:10,090 למה זה לא פונקצית חשיש גדולה? 94 00:04:10,090 --> 00:04:13,461 מה עושה שאינם אידיאלי זה? 95 00:04:13,461 --> 00:04:13,960 כֵּן. 96 00:04:13,960 --> 00:04:15,790 >> קהל: אתה הולך יש התנגשויות. 97 00:04:15,790 --> 00:04:16,390 >> חנה בלומברג: כן, בדיוק. 98 00:04:16,390 --> 00:04:18,000 אתה הולך להיות התנגשויות. 99 00:04:18,000 --> 00:04:18,954 אז זה דבר אחד. 100 00:04:18,954 --> 00:04:21,620 ונדבר על איך אנחנו יכולים לתקן התנגשויות רק שני. 101 00:04:21,620 --> 00:04:23,980 בעיה נוספת עם זה פונקצית חשיש בפרט 102 00:04:23,980 --> 00:04:25,980 הוא ששונה שלנו דליים הולכים להיות 103 00:04:25,980 --> 00:04:28,960 גדלים של די שונים באופן דרסטי. 104 00:04:28,960 --> 00:04:33,840 >> אנחנו יודעים שיש הרבה יותר מילות שמתחילות במ X, 105 00:04:33,840 --> 00:04:38,980 כך אנחנו הולכים להיות מאוד דליים לא מאוזנים בטבלת החשיש שלנו. 106 00:04:38,980 --> 00:04:40,050 מגניב. 107 00:04:40,050 --> 00:04:41,340 אז כן, בואו נחזור ל הנקודה של התנגשויות. 108 00:04:41,340 --> 00:04:42,900 מה עושה אם יש התנגשות? 109 00:04:42,900 --> 00:04:44,490 >> יש לנו כמה אפשרויות שונות. 110 00:04:44,490 --> 00:04:47,600 אז אחת, כך מניח שאנחנו מנסים לשים פירות יער לשולחן החשיש שלנו. 111 00:04:47,600 --> 00:04:50,370 ואנו רואים, אה, אנחנו רוצים לשים את זה במדד 1, 112 00:04:50,370 --> 00:04:52,070 אבל בננה כבר גרה שם. 113 00:04:52,070 --> 00:04:53,110 מה שאנחנו הולכים לעשות? 114 00:04:53,110 --> 00:04:54,560 יש לנו שתי אפשרויות עיקריות. 115 00:04:54,560 --> 00:04:58,050 >> מספר אחד הוא שאנחנו יכולים לומר, בסדר, אין מקום במדד 1, 116 00:04:58,050 --> 00:05:03,210 אבל בואו פשוט להמשיך לחפש דרך עד שנוכל למצוא עוד מקום פתוח. 117 00:05:03,210 --> 00:05:08,490 אז אנחנו אומרים, בסדר, בואו לשים אותו במקום 3. 118 00:05:08,490 --> 00:05:09,240 זה אפשרות אחת. 119 00:05:09,240 --> 00:05:11,470 זה נקרא ליניארי חיטוט. 120 00:05:11,470 --> 00:05:15,500 >> ואפשרות שנייה אומרת, בסדר, טוב, בואו פשוט לעשות כל אחד מאלה דליים 121 00:05:15,500 --> 00:05:17,470 להיות ראשי הרשימות מקושרות. 122 00:05:17,470 --> 00:05:21,910 וזה בסדר אם יש עוד מדבר אחד בדלי. 123 00:05:21,910 --> 00:05:23,820 אנחנו רק הולכים לצרף אותו על החזית. 124 00:05:23,820 --> 00:05:26,032 אז הנה אתה יכול לראות, אישור, כאשר אנו מוכנסים ברי, אנחנו 125 00:05:26,032 --> 00:05:28,240 פשוט לקח בננה, סוג של דחף אותו מעל קצת 126 00:05:28,240 --> 00:05:29,842 וזרקתי את יער שם. 127 00:05:29,842 --> 00:05:31,050 וזה גם בסדר גמור. 128 00:05:31,050 --> 00:05:32,830 זה נקרא שרשור נפרד. 129 00:05:32,830 --> 00:05:38,100 אתה יכול לחשוב על זה כסוג של כמו מערך של ראשי רשימות מקושרות. 130 00:05:38,100 --> 00:05:41,950 כל שאלות על חשיש שולחנות, פונקציות חשיש? 131 00:05:41,950 --> 00:05:44,290 מדהים. 132 00:05:44,290 --> 00:05:45,470 >> עצים ומנסה. 133 00:05:45,470 --> 00:05:47,287 אז עץ הוא כל סוג של מבנה הנתונים 134 00:05:47,287 --> 00:05:49,453 שבו יש סוג מסוים של היררכיה או סוג כלשהו 135 00:05:49,453 --> 00:05:51,247 של דירוג לאובייקטים השונים שלך. 136 00:05:51,247 --> 00:05:53,580 וזה יהפוך סופר ברור, כאשר אנו רואים דוגמא. 137 00:05:53,580 --> 00:05:56,960 וראינו ניסיונות, יחד עם שולחנות חשיש, בpset5-- 138 00:05:56,960 --> 00:06:00,700 אשר, שוב, משחק לגמרי הוגן לזה quiz-- נתונים נוספים 139 00:06:00,700 --> 00:06:03,110 מבנים שאנחנו יכולים לאחסן דברים שונים. 140 00:06:03,110 --> 00:06:06,782 במקרה של מילון, אנחנו מאוחסנים חבורה של מילות. 141 00:06:06,782 --> 00:06:08,240 אז בואו נסתכל על כמה עצים. 142 00:06:08,240 --> 00:06:10,190 אז זה הוא דוגמא לעץ. 143 00:06:10,190 --> 00:06:13,105 יש לו סוג של מבנה, שמבנה היררכי, 144 00:06:13,105 --> 00:06:15,920 שבו אתה יכול לראות את זה צומת 1 זה בראש 145 00:06:15,920 --> 00:06:20,750 יש סוג של דרגה מעל 2 ו -3, שמעל 4, 5, 6 ו -7 והם, 146 00:06:20,750 --> 00:06:22,860 שהם מעל 8 ו -9. 147 00:06:22,860 --> 00:06:25,210 כך שכל מה שאנחנו מתכוונים ב עץ, כך שאתה יכול פשוט סוג 148 00:06:25,210 --> 00:06:26,660 תמונה זו בראש שלך. 149 00:06:26,660 --> 00:06:29,050 >> עכשיו, יש לנו כמה עצים מיוחדים יותר. 150 00:06:29,050 --> 00:06:31,070 אז דוגמא אחת הוא עץ בינארי. 151 00:06:31,070 --> 00:06:33,290 ועץ בינארי הוא, שוב, רק הולך להיות 152 00:06:33,290 --> 00:06:37,040 מבנה נתונים עם איזה היררכיה, אבל כל אחד מהצמתים 153 00:06:37,040 --> 00:06:38,650 יכול להיות לכל היותר שני ילדים. 154 00:06:38,650 --> 00:06:41,530 זה המקום שבי המילה בינארי מגיע מ. 155 00:06:41,530 --> 00:06:43,410 אז זה הוא דוגמא לעץ בינארי. 156 00:06:43,410 --> 00:06:45,720 אז זה קטגוריה קטנה של עצים. 157 00:06:45,720 --> 00:06:48,960 >> עכשיו בואו לקבל אפילו יותר ספציפי ו לדבר על חיפוש בינארי בינארי trees-- 158 00:06:48,960 --> 00:06:51,310 עצים, ולא. 159 00:06:51,310 --> 00:06:56,430 אז הנה הרעיון הוא לא רק עושה יש כל צומת ברוב שני ילדים, 160 00:06:56,430 --> 00:07:00,300 אבל כל הילדים ל השמאל הולך להיות קטן יותר 161 00:07:00,300 --> 00:07:03,450 וכל הילדים ל נכון הולכים להיות גדול יותר. 162 00:07:03,450 --> 00:07:05,890 אז שם לב רק שלנו עץ בינארי, יש 163 00:07:05,890 --> 00:07:08,650 אין קשר בין המספרים. 164 00:07:08,650 --> 00:07:12,990 אבל בחיפוש בינארי שלנו עץ, שאנו רואים, בסדר, הנה 44. 165 00:07:12,990 --> 00:07:17,080 וכל מספר בצד השמאל של 44 הוא קטן יותר וכל מה שלימין 166 00:07:17,080 --> 00:07:17,920 הוא גדול יותר. 167 00:07:17,920 --> 00:07:20,130 >> ושמחזיק בכל רמה של העץ. 168 00:07:20,130 --> 00:07:24,810 אז הנה, זה הוא קטן יותר מאשר 22 וזה הוא גדול יותר מאשר 22. 169 00:07:24,810 --> 00:07:26,390 וזה עץ חיפוש בינארי. 170 00:07:26,390 --> 00:07:28,900 למה אנחנו חושבים שזה נקרא עץ חיפוש בינארי? 171 00:07:28,900 --> 00:07:30,651 מה אלגוריתם עושה את זה מזכיר לך? 172 00:07:30,651 --> 00:07:31,650 קהל: חיפוש בינארי. 173 00:07:31,650 --> 00:07:32,480 חנה בלומברג: חיפוש בינארי. 174 00:07:32,480 --> 00:07:35,150 כי אם אתה מחפש מספר מסוים בעץ הזה, 175 00:07:35,150 --> 00:07:38,800 בכל נקודה, אתה יכול פשוט לדפוק מחצית מהעץ, וזה נהדר. 176 00:07:38,800 --> 00:07:43,800 וכך זה הולך לתת לנו משהו שנראה הרבה כמו חיפוש בינארי. 177 00:07:43,800 --> 00:07:45,870 יש שאלות? 178 00:07:45,870 --> 00:07:47,570 בסדר, מגניב. 179 00:07:47,570 --> 00:07:48,560 >> בסדר, מנסה. 180 00:07:48,560 --> 00:07:49,657 האהוב על כולם. 181 00:07:49,657 --> 00:07:51,990 אז זה הדוגמא ש ראינו חבורה בכיתה. 182 00:07:51,990 --> 00:07:54,710 ושוב, זה רק עוד דרך שאנחנו יכולים לאחסן נתונים. 183 00:07:54,710 --> 00:07:57,530 במקרה של מילון, שוב, זה רק הולך להיות מחרוזות. 184 00:07:57,530 --> 00:08:00,870 אז בואו לראות מה זה בעצם נראה כמו ברמה מעט נמוכה יותר. 185 00:08:00,870 --> 00:08:03,690 >> אז בואו נסתכל בצומת אחד באיירי. 186 00:08:03,690 --> 00:08:07,532 ואנו רואים, בסדר, יש הולכים להיות בוליאנית וצומת, 187 00:08:07,532 --> 00:08:09,170 מצביע לצומת. 188 00:08:09,170 --> 00:08:11,400 ואנחנו רואים ש בוליאנית נקראת is_word. 189 00:08:11,400 --> 00:08:13,490 אז בעצם, זה הולך מתאים 190 00:08:13,490 --> 00:08:16,750 למשולשים הקטנים האלה ש אומר, אם אתה כבר הגעת לכאן, 191 00:08:16,750 --> 00:08:19,100 אתה כבר נמצא מילה שלמה. 192 00:08:19,100 --> 00:08:23,670 >> אנו יודעים כי "טיורינג" על כאן היא מילה שלמה, 193 00:08:23,670 --> 00:08:28,030 אילו רק T-U-R הוא לא מילה כי אנחנו לא רואים שדלתא קטנה. 194 00:08:28,030 --> 00:08:31,440 ושדלתא קטנה, שוב, מתאים לis_word זה, 195 00:08:31,440 --> 00:08:34,480 is_word וליאנית זה. 196 00:08:34,480 --> 00:08:36,320 ואז יש לנו מערך של ילדים. 197 00:08:36,320 --> 00:08:39,860 אז בכל רמה, אתה יש לי צומת מסוימת, 198 00:08:39,860 --> 00:08:42,470 וכי נקודות צומת ל מערך של כל אלף-בית. 199 00:08:42,470 --> 00:08:44,346 >> אז אתה יכול לראות, שוב, בpicture-- זה אני 200 00:08:44,346 --> 00:08:48,170 הולך לשמור קופץ בחזרה ו forth-- שמערך שבראש 201 00:08:48,170 --> 00:08:51,640 יש חבורה של שונה בלוטות יורדים ממנו. 202 00:08:51,640 --> 00:08:57,140 יש לו 26, או 27, אם אתה רוצה לכלול אופי נוסף. 203 00:08:57,140 --> 00:09:01,320 וזה נותן לנו דרך לאחסון נתונים שלנו 204 00:09:01,320 --> 00:09:04,450 באופן שניתן הביט ב שאתה יכול לחפש את הסופר מהיר. 205 00:09:04,450 --> 00:09:06,650 מהו זמן בדיקה לאיירי? 206 00:09:06,650 --> 00:09:07,970 >> קהל: [לא ברור]. 207 00:09:07,970 --> 00:09:08,300 >> חנה בלומברג: כן. 208 00:09:08,300 --> 00:09:09,550 בתאוריה, זה זמן קבוע. 209 00:09:09,550 --> 00:09:13,230 זה רק הולך להיות בגודל של המילה שאתה רוצה להסתכל למעלה. 210 00:09:13,230 --> 00:09:15,950 גם אם נוסיף מיליארדים עוד מילות לאיירי, 211 00:09:15,950 --> 00:09:18,160 זה לא הולך לקחת אותנו עוד לקבוע 212 00:09:18,160 --> 00:09:19,690 אם מילה מסוימת היא באיירי. 213 00:09:19,690 --> 00:09:21,412 אז זה ממש נחמד. 214 00:09:21,412 --> 00:09:23,697 >> קהל: האם אתה פשוט לאתחל מערך זה? 215 00:09:23,697 --> 00:09:24,780 פספסת נקודה או שתיים. 216 00:09:24,780 --> 00:09:26,130 אתה יכול רק לדבר על זה לרגע? 217 00:09:26,130 --> 00:09:26,680 >> חנה בלומברג: בטח, בהחלט. 218 00:09:26,680 --> 00:09:27,590 שאלה טובה. 219 00:09:27,590 --> 00:09:31,140 השאלה הייתה, אנחנו יש מערך זה 220 00:09:31,140 --> 00:09:34,180 הולך להיות כוכב צומת כ בניגוד לסתם צומת, נכון? 221 00:09:34,180 --> 00:09:35,180 מגניב. 222 00:09:35,180 --> 00:09:37,990 אז הנה מה שאנחנו אומרים הוא המערך שלנו הוא רק 223 00:09:37,990 --> 00:09:40,035 הולך להיות מצביעים למערכים אחרים. 224 00:09:40,035 --> 00:09:42,910 אז זה essentially-- זה סוג של מרגיש כמו רשימה מקושרת בדרך זו 225 00:09:42,910 --> 00:09:46,620 שבו כל אחד מילדים אלה רק להצביע על הצומת הבאה. 226 00:09:46,620 --> 00:09:49,030 >> והאופן שבו אנחנו למעשה לקבוע, היי, אישור, 227 00:09:49,030 --> 00:09:52,320 אנחנו כבר iterated דרך כל מילה, היא מילה זו במילון, 228 00:09:52,320 --> 00:09:54,476 אנחנו פשוט לבדוק is_word זה. 229 00:09:54,476 --> 00:09:55,100 שאלה גדולה. 230 00:09:55,100 --> 00:09:55,675 כֵּן. 231 00:09:55,675 --> 00:09:56,216 קהל: אישור. 232 00:09:56,216 --> 00:09:57,470 אז מה הייתה הריצה לאיירי? 233 00:09:57,470 --> 00:09:58,386 >> חנה בלומברג: בטח. 234 00:09:58,386 --> 00:10:01,852 אז זמן הריצה לאיירי ל בדיקה הולכת להיות זמן קבוע. 235 00:10:01,852 --> 00:10:04,310 אז זה רק הולך להיות מספר האותיות במילה. 236 00:10:04,310 --> 00:10:06,310 זה לא תלוי ב גודל של המילון 237 00:10:06,310 --> 00:10:09,510 או הגודל של מבנה הנתונים. 238 00:10:09,510 --> 00:10:12,170 אז הנה דוגמא פשוטה מעט. 239 00:10:12,170 --> 00:10:15,430 >> במקרה זה, אתה יכול לראות ש מילת העטלף הוא במילון 240 00:10:15,430 --> 00:10:18,900 ויש לך זום, אבל אתה אין לי משהו כמו גן חיות. 241 00:10:18,900 --> 00:10:20,050 איך הייתם אנחנו עושים בגן חיות? 242 00:10:20,050 --> 00:10:24,276 איך להוסיף גן חיות לנו מילון, לאיירי? 243 00:10:24,276 --> 00:10:24,776 כֵּן. 244 00:10:24,776 --> 00:10:27,014 >> קהל: הפוך is_word נכון ל[ לא ברור]. 245 00:10:27,014 --> 00:10:27,930 חנה בלומברג: טוב. 246 00:10:27,930 --> 00:10:31,731 אז היינו אומר Z-O-O, ואז היינו רוצה לבדוק את תיבה שכן. 247 00:10:31,731 --> 00:10:32,230 גדול. 248 00:10:32,230 --> 00:10:35,160 249 00:10:35,160 --> 00:10:37,930 בואו להשוות לזמן קצר מאוד מנסה לעומת שולחנות חשיש. 250 00:10:37,930 --> 00:10:39,770 מנסה באמת גדולים כי, כפי שאמרנו, 251 00:10:39,770 --> 00:10:41,610 הם מספקים בדיקה קבוע-זמן. 252 00:10:41,610 --> 00:10:44,285 אבל החסרון הענק הוא שהם humongous. 253 00:10:44,285 --> 00:10:46,160 אתה יכול לקבל את התחושה, אפילו מלהסתכל על זה, 254 00:10:46,160 --> 00:10:48,454 כי זה הולך לקחת כמות הזיכרון עצומה. 255 00:10:48,454 --> 00:10:50,620 אז הם הולכים להיות הרבה יותר גדול יותר משולחנות חשיש, 256 00:10:50,620 --> 00:10:52,270 אבל הם הולכים לתת לי שלנו פעמים בדיקה הרבה יותר מהר. 257 00:10:52,270 --> 00:10:54,478 אז זה סוג שלך איזון, מה אכפת לך, 258 00:10:54,478 --> 00:10:57,350 בין אם זה במהירות או זיכרון. 259 00:10:57,350 --> 00:11:02,251 כל שאלות על כל אחד ש, כל מבני נתונים C. 260 00:11:02,251 --> 00:11:02,750 יָפֶה. 261 00:11:02,750 --> 00:11:03,250 אוקיי. 262 00:11:03,250 --> 00:11:07,322 אנחנו הולכים לעבור לקטנים קצת התפתחות אינטרנט עם מריה. 263 00:11:07,322 --> 00:11:08,280 MARIA ZLATKOVA: יפה. 264 00:11:08,280 --> 00:11:09,036 אוקיי. 265 00:11:09,036 --> 00:11:10,380 >> חנה בלומברג: אתה יכול להשתמש במחשב הנייד שלי. 266 00:11:10,380 --> 00:11:11,255 >> MARIA ZLATKOVA: נחמד. 267 00:11:11,255 --> 00:11:13,320 268 00:11:13,320 --> 00:11:14,912 בסדר מגניב. 269 00:11:14,912 --> 00:11:17,120 ככל שאנו מתקדמים עכשיו לאינטרנט פיתוח, שדברנו קצת 270 00:11:17,120 --> 00:11:20,680 אודות הרשאות שינוי של קבצים וספריות 271 00:11:20,680 --> 00:11:24,190 כדי שיוכלו להיות נגיש למשתמשים אחרים, לעולם, 272 00:11:24,190 --> 00:11:28,640 וכדי שנוכל לראות איך בעצם אנחנו יכולים להעביר אותם 273 00:11:28,640 --> 00:11:32,600 כאשר אנו מפתחים דברים כמו אתרים שאנחנו כבר בעיקר עושים. 274 00:11:32,600 --> 00:11:36,400 >> אז ראינו את פקודת chmod, שהוא מצב שינוי, בעצם. 275 00:11:36,400 --> 00:11:39,300 זה פקודת לינוקס ו הוא משנה את הרשאות גישה 276 00:11:39,300 --> 00:11:40,410 של אובייקטים במערכת קבצים. 277 00:11:40,410 --> 00:11:43,370 ואובייקט מערכת קבצים הוא רק ספרייה, קובץ, 278 00:11:43,370 --> 00:11:46,810 כל דבר שאתה יכול לשנות את ההרשאות של. 279 00:11:46,810 --> 00:11:53,750 >> אז כדי לראות את הרשאות קובץ, אנחנו הקלד את הפקודה ls, רשימה, -l. 280 00:11:53,750 --> 00:11:56,500 וכאשר אנו מקלידים את זה, אנחנו בדרך כלל לראות כמה הרשאות 281 00:11:56,500 --> 00:11:59,660 שנראה כמו סוג של זה מול שם ספרייה. 282 00:11:59,660 --> 00:12:01,260 אז ד מתייחס לספרייה. 283 00:12:01,260 --> 00:12:05,930 ואז יש לנו שלוש שלשות שבעצם 284 00:12:05,930 --> 00:12:11,675 מתייחס להרשאות של כל אחד למשתמש, קבוצה, או העולם. 285 00:12:11,675 --> 00:12:16,490 >> הסוגים של הרשאות שאנחנו יכולים יש שלוש הקבוצות של אנשים האלה 286 00:12:16,490 --> 00:12:20,830 הם או r לקריאה, w ל לכתוב, וx לביצוע. 287 00:12:20,830 --> 00:12:23,650 ואנחנו יכולים להיות אלה ל הקבוצה והעולם, כמו גם. 288 00:12:23,650 --> 00:12:26,940 הדבר מסובך הוא שלפעמים כאשר אנו הקלד את פקודת chmod, 289 00:12:26,940 --> 00:12:32,960 היינו להקליד כמה מספר שהיה מורכב משלושה חלקים. 290 00:12:32,960 --> 00:12:36,990 כדי שנוכל לעשות כמו 777 ושבעצם 291 00:12:36,990 --> 00:12:40,450 התייחס לערך המוסף של כל אחד משלשות אלה 292 00:12:40,450 --> 00:12:45,060 כי r היה מתייחס ל4, היית w עיין 2, ו- X היה מתייחס ל1, 293 00:12:45,060 --> 00:12:50,020 כך כאשר הוסיף את, כל אחד מהמספרים היה יורד למספר מצטבר 294 00:12:50,020 --> 00:12:52,750 לערך מצטבר בין 0 ל 7. 295 00:12:52,750 --> 00:12:55,150 אז גם אנחנו יכולים להיות 0 ללא הרשאות בכל. 296 00:12:55,150 --> 00:12:58,200 ושבעצם נותנים לנו ההרשאות לשני המשתמשים, 297 00:12:58,200 --> 00:13:00,450 הקבוצה, או העולם. 298 00:13:00,450 --> 00:13:02,620 כל שאלות על זה כל כך הרבה? 299 00:13:02,620 --> 00:13:05,331 >> קהל: אמר קרא היה 4? 300 00:13:05,331 --> 00:13:06,164 MARIA ZLATKOVA: כן. 301 00:13:06,164 --> 00:13:07,568 קהל: [לא ברור]. 302 00:13:07,568 --> 00:13:08,504 חנה בלומברג: כן. 303 00:13:08,504 --> 00:13:11,790 קהל: ואז על ידי הוספה כל אלה אחרים מצביעים על המספר שלך. 304 00:13:11,790 --> 00:13:12,665 MARIA ZLATKOVA: כן. 305 00:13:12,665 --> 00:13:14,970 כֵּן. 306 00:13:14,970 --> 00:13:17,810 אלו הן שאלות גדולות. 307 00:13:17,810 --> 00:13:20,490 יָפֶה. 308 00:13:20,490 --> 00:13:25,340 לאחר מכן, קפצנו ל- HTML ו קצת יותר על פיתוח אינטרנט. 309 00:13:25,340 --> 00:13:27,990 אז HTML רק אומר שפת סימני עריכה לתמליל - על. 310 00:13:27,990 --> 00:13:30,460 וזה הסימון שפה שהיא סטנדרטי 311 00:13:30,460 --> 00:13:32,720 כי זה משמש ליצירת דפי אינטרנט. 312 00:13:32,720 --> 00:13:35,750 >> זה נקרא שפת סימון כי זה לא הידור למעשה. 313 00:13:35,750 --> 00:13:40,310 זה לא אומר איך צריך קצת קוד יבוצע או משהו כזה. 314 00:13:40,310 --> 00:13:44,800 זה פשוט משרטט ו מתאר כיצד אינטרנט 315 00:13:44,800 --> 00:13:46,840 דף יש להגדיר עם כל אחד ממרכיביה 316 00:13:46,840 --> 00:13:48,460 ואיך צריכים שהם נראים למשתמש. 317 00:13:48,460 --> 00:13:53,090 318 00:13:53,090 --> 00:13:57,110 >> חלק מתגי HTML ש ניגש הם הבא. 319 00:13:57,110 --> 00:14:00,500 כל מסמכי HTML שלנו התחיל עם html DOCTYPE. 320 00:14:00,500 --> 00:14:02,550 אז תמיד יש לנו את תג html. 321 00:14:02,550 --> 00:14:03,930 יש לנו ראש וגוף. 322 00:14:03,930 --> 00:14:07,890 וזה חשוב כי יש HTML סוג זה של מבנה מקונן 323 00:14:07,890 --> 00:14:09,280 כי זה מאוד ברור. 324 00:14:09,280 --> 00:14:13,200 ואז זה הופך להיות מאוד ברור כאשר אנו צריך לפתוח ולמעשה קרובים תגים. 325 00:14:13,200 --> 00:14:18,400 ואנחנו תמיד צריכים לסגור תגים שפתחנו. 326 00:14:18,400 --> 00:14:23,170 >> וכאן יש לנו כמה הסוגים דברים קדימה כי אנחנו רוצים להיות. 327 00:14:23,170 --> 00:14:26,580 אז יש לנו, למשל, הכותרת של CS50. 328 00:14:26,580 --> 00:14:31,980 ואז אנחנו באמת יכול לקשר גיליון סגנון 329 00:14:31,980 --> 00:14:34,030 המגדיר את האופן בו אנו סגנון אתר האינטרנט שלנו. 330 00:14:34,030 --> 00:14:35,650 זה CSS. 331 00:14:35,650 --> 00:14:39,320 אנחנו הולכים לעבור על זה ב הזוג הבא של שקופיות, כמו גם. 332 00:14:39,320 --> 00:14:42,580 >> בתוך הגוף, אנו קובעים כמה שיעורים ומזהי. 333 00:14:42,580 --> 00:14:45,860 וכתזכורת, שוב, מזהים ייחודיים וכיתות 334 00:14:45,860 --> 00:14:47,390 ניתן להקצות לפריטים מרובים. 335 00:14:47,390 --> 00:14:52,110 וזה רק אומר ש אנו יכולים להשתמש בכיתות ומזהי 336 00:14:52,110 --> 00:14:55,860 בתוך structures-- האחר כך, ל למשל, בתוך קבצי CSS או סגנון 337 00:14:55,860 --> 00:15:00,940 sheets-- להתייחס לאלמנטים ספציפיים ובעצם אומר שאנחנו רוצים לעצב 338 00:15:00,940 --> 00:15:03,280 או לעצב כמה אלמנט בדרך מסוימת כלשהי. 339 00:15:03,280 --> 00:15:06,440 ואנו מתייחסים אליהם על ידי תעודות הזהות שלהם ושיעורים. 340 00:15:06,440 --> 00:15:09,870 ואנחנו גם יכולים להתייחס ל דברים שונים לפי תגיות, כמו גם, 341 00:15:09,870 --> 00:15:13,830 אבל תעודות זהות ושיעורים רק לתת לנו קצת צדדיות ומה במיוחד 342 00:15:13,830 --> 00:15:15,850 רוצה להפנות אליו. 343 00:15:15,850 --> 00:15:19,620 >> אז רק דוגמא. 344 00:15:19,620 --> 00:15:22,730 , אנחנו יכולים שוב, בתוך קובץ CSS שבו אנחנו 345 00:15:22,730 --> 00:15:25,770 רוצה להגדיר כמה style-- כך צבעים, גופנים, 346 00:15:25,770 --> 00:15:30,340 ודברים לראות-- כמו שאנחנו יכולים להגדיר את הסגנון לגוף. 347 00:15:30,340 --> 00:15:32,640 כך שהייתי מגדיר אותו לכל תג הגוף. 348 00:15:32,640 --> 00:15:36,160 אבל אז אנחנו יכולים גם להגדיר סגנון ל#title. 349 00:15:36,160 --> 00:15:40,390 ושוב, hashtag מתייחס לנו זיהוי והנקודה מתייחסים לכיתה שלנו. 350 00:15:40,390 --> 00:15:44,760 >> ולאחר מכן ל.info, אנחנו ניתן גם להגדיר כמה תכונות. 351 00:15:44,760 --> 00:15:49,750 ושוב, כאשר אנחנו חוזרים, היו לנו שלנו מחלקה בשם מידע וכותרת הזהות שלנו. 352 00:15:49,750 --> 00:15:53,422 ואנחנו יכולים לראות שאנו מתייחסים להם על ידי #title ו.info. 353 00:15:53,422 --> 00:15:55,380 קהל: האם היית אומר האשטאג [? לאמץ אותי? ?] 354 00:15:55,380 --> 00:15:55,725 MARIA ZLATKOVA: מצטער? 355 00:15:55,725 --> 00:15:58,120 קהל: האם היית אומר האשטאג [? לאמץ אותי? ?] 356 00:15:58,120 --> 00:16:01,400 MARIA ZLATKOVA: סולמית משמעות זהות, כך #title 357 00:16:01,400 --> 00:16:07,890 מתייחס לכל מה שאלמנטים יש מספר הזה שנקרא כותרת. 358 00:16:07,890 --> 00:16:10,735 ואז הנקודה מתייחסת לכיתה. 359 00:16:10,735 --> 00:16:14,590 אז .info מתייחס לאלמנט זה כי יש לו המידע ברמה. 360 00:16:14,590 --> 00:16:15,090 כן. 361 00:16:15,090 --> 00:16:17,905 >> קהל: למה אתה להבדיל ביניהם ב- HTML? 362 00:16:17,905 --> 00:16:20,985 למה אתה אומר דברים מסוימים הם תעודות ודברים מסוימים הן ברמה? 363 00:16:20,985 --> 00:16:22,610 MARIA ZLATKOVA: זהו בדיוק עד אתם-- 364 00:16:22,610 --> 00:16:24,151 חנה בלומברג: חזור על השאלה. 365 00:16:24,151 --> 00:16:25,370 MARIA ZLATKOVA: אה, סליחה. 366 00:16:25,370 --> 00:16:29,480 למה אנחנו להבחין אלמנטים מסוימים כמזהים ואלמנטים אחרים כמו שיעורים? 367 00:16:29,480 --> 00:16:34,760 זה רק בגלל שזה באמת לעתים קרובות בחירת עיצוב. 368 00:16:34,760 --> 00:16:38,520 זה נותן לך הרבה רבגוניות שב 369 00:16:38,520 --> 00:16:43,250 תוכל לומר שאני רוצה פריט הספציפי הזה יש מספר זה בגלל שהם רוצים 370 00:16:43,250 --> 00:16:45,300 לעשות הרבה דברים עם זה, ואני רק 371 00:16:45,300 --> 00:16:50,010 סגנון רוצה להגדיר סגנון, מסוים או צבע מה לפריט זה. 372 00:16:50,010 --> 00:16:52,630 והדרך לעשות את זה הוא רק נותן לו תעודת זהות. 373 00:16:52,630 --> 00:16:55,060 >> ואז אם אני רוצה שאהיה לי כמה פריטים שונים 374 00:16:55,060 --> 00:16:58,940 יש ש, במקום הולך והגדרת their-- 375 00:16:58,940 --> 00:17:03,840 במקום לעשות זאת על ידי תג כי היית התג 376 00:17:03,840 --> 00:17:07,369 להגדיר את התא לכל התג על כל פעם משמש תג ש, 377 00:17:07,369 --> 00:17:09,740 אתה יכול להגדיר את מעמד למספר רב של פריטים. 378 00:17:09,740 --> 00:17:15,109 ואז פשוט לגשת מעמד זה ואומר אני רוצה לעצב את זה בכיתה בדרך זו. 379 00:17:15,109 --> 00:17:17,579 >> ושוב, בכיתה יכולה להיות פריטים שונים מרובים 380 00:17:17,579 --> 00:17:21,150 וזיהוי צריך להיות ייחודי. 381 00:17:21,150 --> 00:17:21,849 שאלות גדולה. 382 00:17:21,849 --> 00:17:25,339 כל שאלות אחרות? 383 00:17:25,339 --> 00:17:26,220 אישור, מדהים. 384 00:17:26,220 --> 00:17:30,680 385 00:17:30,680 --> 00:17:35,330 שוב, זה איך בוררים אלה נזכרים בCSS, עם hashtag, 386 00:17:35,330 --> 00:17:40,031 עם נקודה, או בלי שום דבר ל הקצאת הסגנון של כמה תג, 387 00:17:40,031 --> 00:17:40,530 כמו גוף. 388 00:17:40,530 --> 00:17:43,500 389 00:17:43,500 --> 00:17:47,860 וכאן יש לנו בכלל תחביר של איך זה נעשה. 390 00:17:47,860 --> 00:17:52,830 391 00:17:52,830 --> 00:17:55,680 >> לחזור על כמה הטוב ביותר שיטות לHTML ו- CSS, 392 00:17:55,680 --> 00:17:59,170 אנחנו צריכים, שוב, סגרו את כל תגי HTML שאנחנו פותחים. 393 00:17:59,170 --> 00:18:03,950 ומה שאנחנו המומלצים לעשות לפרויקטי הגמר שלך, 394 00:18:03,950 --> 00:18:10,560 כמו גם לCS50 האוצר, הוא להפוך את בטוח שכל ה- HTML שלך מאמת. 395 00:18:10,560 --> 00:18:12,920 ואת זה עושה עם Validator W3. 396 00:18:12,920 --> 00:18:16,940 >> ואז מה שעשינו ו מה שאנחנו ממליצים לעשות 397 00:18:16,940 --> 00:18:19,790 הוא מפריד בין סגנון, כל כך CSS מהסימון HTML. 398 00:18:19,790 --> 00:18:24,210 אז כל דבר שנוגע לאופן ש הדף שלך הולך להיראות חזותי 399 00:18:24,210 --> 00:18:27,330 ואיך זה הולך להיות שונה צריך ללכת למסמך CSS. 400 00:18:27,330 --> 00:18:33,880 ולאחר מכן הסימון שלך אומר כמה דברים הם ביחס לזה הוא HTML, 401 00:18:33,880 --> 00:18:37,550 ושצריך להיכנס פנימה מסמכי ה- HTML שלך. 402 00:18:37,550 --> 00:18:38,590 יש שאלות? 403 00:18:38,590 --> 00:18:39,226 Mhm. 404 00:18:39,226 --> 00:18:42,628 >> קהל: מה בדיוק קורה עם אימות הדף 405 00:18:42,628 --> 00:18:47,945 כאשר אנחנו אימות HTML ש[ לא ברור] נוצר? 406 00:18:47,945 --> 00:18:49,850 >> MARIA ZLATKOVA: אז what-- שאתה חושב. 407 00:18:49,850 --> 00:18:53,020 אז מה בדיוק קורה עם אימות דף 408 00:18:53,020 --> 00:18:55,570 ולמה אנחנו צריכים לעשות את זה? 409 00:18:55,570 --> 00:18:59,180 בעיקרון, אנחנו צריכים לעשות את זה כי הרבה פעמים, הדפדפן שלך, 410 00:18:59,180 --> 00:19:01,390 אם אתה לא סוגר תג או משהו כזה, 411 00:19:01,390 --> 00:19:05,680 הדפדפן שלך הוא עדיין הולך ל להפוך דף ואולי עדיין עובד, 412 00:19:05,680 --> 00:19:10,840 אבל זה התרגול הטוב ביותר לוודא ש ש, שוב, סגר את כל התגים שלך, 413 00:19:10,840 --> 00:19:13,190 שכל האלמנטים שלך אופן שבו הם צריכים להיות, 414 00:19:13,190 --> 00:19:18,470 ובעצם שזה על ידי מוסכמות שנקבעו מראש. 415 00:19:18,470 --> 00:19:21,970 >> זה, שוב, רק דבר שאתה צריך 416 00:19:21,970 --> 00:19:24,040 תלמד לעשות, בניגוד לכך ש 417 00:19:24,040 --> 00:19:25,696 קוד מרושל ודברים כאלה. 418 00:19:25,696 --> 00:19:26,688 כֵּן. 419 00:19:26,688 --> 00:19:27,680 אה סליחה. 420 00:19:27,680 --> 00:19:29,221 חשבתי שאתה מרים את היד שלך. 421 00:19:29,221 --> 00:19:31,240 קהל: לא, אני היה פשוט [לא ברור]. 422 00:19:31,240 --> 00:19:33,800 >> MARIA ZLATKOVA: אישור. 423 00:19:33,800 --> 00:19:34,640 >> קהל: תודה לך. 424 00:19:34,640 --> 00:19:36,181 >> MARIA ZLATKOVA: כמובן, תודה לך. 425 00:19:36,181 --> 00:19:41,680 אז שוב, קורה לאיך מידע מועבר 426 00:19:41,680 --> 00:19:44,630 ומודלי תקשורת להעביר מידע. 427 00:19:44,630 --> 00:19:45,730 TCP / IP. 428 00:19:45,730 --> 00:19:48,600 TCP רק אומר הילוכים פרוטוקול הבקרה וIP 429 00:19:48,600 --> 00:19:51,260 מתייחס לפרוטוקול אינטרנט. 430 00:19:51,260 --> 00:19:54,275 וזה רק מתייחס ל הנתונים מועבר הדרך. 431 00:19:54,275 --> 00:19:59,470 432 00:19:59,470 --> 00:20:02,710 >> אם יש לנו כמה נתונים ש צריך נמסר לאתם-- כך 433 00:20:02,710 --> 00:20:06,770 אתה להגיש בקשה לשרת מסוים. 434 00:20:06,770 --> 00:20:09,800 לדוגמא, כאשר אנו מנסה לגשת cs50.net, 435 00:20:09,800 --> 00:20:12,420 אנחנו עושים בקשה ל שרת CS50 ו 436 00:20:12,420 --> 00:20:14,720 רואה שאנחנו רוצים להגיע זה סוג של מידע. 437 00:20:14,720 --> 00:20:19,294 ולאחר מכן מבוססים על פרוטוקול זה כיצד מידע זה מועבר, 438 00:20:19,294 --> 00:20:21,460 השרת נותן מידע בחזרה אלינו, הלקוח. 439 00:20:21,460 --> 00:20:25,590 ואז אנחנו יכולים להציג המידע לדף 440 00:20:25,590 --> 00:20:26,390 ולאחר מכן להשתמש בו. 441 00:20:26,390 --> 00:20:29,300 442 00:20:29,300 --> 00:20:33,050 >> אז העברת Hypertext פרוטוקול הוא רק עוד פרוטוקול או להגדיר 443 00:20:33,050 --> 00:20:37,470 של מוסכמות המגדיר כיצד דפדפן האינטרנט לבין שרת האינטרנט 444 00:20:37,470 --> 00:20:38,890 צריך לתקשר. 445 00:20:38,890 --> 00:20:43,730 ולשים את זה כל יחד, HTTP, שוב, 446 00:20:43,730 --> 00:20:50,960 רק מגדיר כיצד היפר זו מוגדר על ידי HTML שאנחנו עובדים אותו, 447 00:20:50,960 --> 00:20:59,500 איך זה צריך להיות מועבר אליך ו איך נתונים שיועברו אליך 448 00:20:59,500 --> 00:21:00,540 מגיע לך. 449 00:21:00,540 --> 00:21:05,990 >> ולכן, אם אתם זוכרים מכיתה, היו לנו הרבה בקשות 450 00:21:05,990 --> 00:21:08,970 והיו לנו הרבה תחביר לבקשות אלה שאנחנו 451 00:21:08,970 --> 00:21:10,250 הולך לעבור על עכשיו. 452 00:21:10,250 --> 00:21:13,270 אז שוב, כאשר אנו שולחים בקשה לשרת, 453 00:21:13,270 --> 00:21:15,920 אנחנו צריכים להגדיר כמה דברים. 454 00:21:15,920 --> 00:21:18,520 אז אנחנו צריכים למצוא את הסוג של בקשה שאנחנו הגדרה. 455 00:21:18,520 --> 00:21:22,180 ושוב, יש לנו, למשל, מקבל הוא סוג אחד של שיטה 456 00:21:22,180 --> 00:21:25,290 שיש לנו בבקשתנו. 457 00:21:25,290 --> 00:21:31,710 >> ולאחר מכן HTTP / 1.1 הוא פשוט פרוטוקול שבו אנו משתמשים כיום. 458 00:21:31,710 --> 00:21:34,224 459 00:21:34,224 --> 00:21:36,890 רוב הזמן, זה הולך לפרוטוקול שבו אנו משתמשים. 460 00:21:36,890 --> 00:21:40,290 אז אם יש לך שאלה כמו שבחידון שלך. 461 00:21:40,290 --> 00:21:43,120 זה מוסכמות שיש לנו עד כה. 462 00:21:43,120 --> 00:21:46,580 >> קו נטוי מתייחס למה סוג דברים שאנחנו מבקשים. 463 00:21:46,580 --> 00:21:52,810 לאחר מכן, המארח שלנו הוא, למשל, בזה מקרה, שאנחנו מנסים ללכת ל- google.com. 464 00:21:52,810 --> 00:21:57,070 אז זה הערך עבור מארח. 465 00:21:57,070 --> 00:21:59,330 זהו סוג של בקשה כי יכול להיות שנשלח. 466 00:21:59,330 --> 00:22:02,890 >> ואז סוג של תגובה שיכול יישלח, שוב, המבוסס על פרוטוקול זה, 467 00:22:02,890 --> 00:22:05,190 שוב, HTTP / 1.1. 468 00:22:05,190 --> 00:22:07,150 אז זה הגרסה HTTP שוב. 469 00:22:07,150 --> 00:22:09,730 200 אישור הוא רק קוד המצב. 470 00:22:09,730 --> 00:22:12,860 והאישור כי הוא פשוט ביטוי המבוסס על קוד מצב ש. 471 00:22:12,860 --> 00:22:15,520 >> סוג התוכן ולאחר מכן מתייחס לסוג 472 00:22:15,520 --> 00:22:20,295 כי הוא חזר אליך כי הוא שלדף האינטרנט שאתה מקבל 473 00:22:20,295 --> 00:22:22,570 ושהדפדפן שלך יכול לדקלם לאחר מכן. 474 00:22:22,570 --> 00:22:24,401 וזה text / html. 475 00:22:24,401 --> 00:22:26,660 >> קהל: מה 1.1 מתכוונים? 476 00:22:26,660 --> 00:22:29,910 >> MARIA ZLATKOVA: זהו בדיוק גרסת ל-- הו, מה 1.1 מתכוונים? 477 00:22:29,910 --> 00:22:37,075 זה פשוט הגרסה, HTTP גרסה של פרוטוקול שבו אנו משתמשים. 478 00:22:37,075 --> 00:22:37,700 שאלה גדולה. 479 00:22:37,700 --> 00:22:38,366 שאלות אחרות? 480 00:22:38,366 --> 00:22:41,222 481 00:22:41,222 --> 00:22:45,080 >> קהל: האם אתה יכול לסכם Content-Type מהיר אמיתי? 482 00:22:45,080 --> 00:22:48,150 >> MARIA ZLATKOVA: אז זה מה השרת. 483 00:22:48,150 --> 00:22:51,020 הסוג של information-- מה הוא סוג התוכן היה השאלות. 484 00:22:51,020 --> 00:22:53,400 אז זה היה הסוג של מידע שאתה מקבל בחזרה 485 00:22:53,400 --> 00:22:58,200 מהשרת, הסוג של נתונים שלאחר מכן הדפדפן יכול 486 00:22:58,200 --> 00:23:00,604 להבהיר כי אתה משתמש. 487 00:23:00,604 --> 00:23:03,020 קהל: האם זה מה שזה פרוטוקול הוא אומר לך לעשות? 488 00:23:03,020 --> 00:23:03,390 MARIA ZLATKOVA: מצטער? 489 00:23:03,390 --> 00:23:05,380 קהל: האם זה מה שהפרוטוקול אומר? 490 00:23:05,380 --> 00:23:05,915 MARIA ZLATKOVA: protocol-- 491 00:23:05,915 --> 00:23:07,940 קהל: --what Content-Type הוא או what-- 492 00:23:07,940 --> 00:23:12,040 MARIA ZLATKOVA: מבוסס הפרוטוקול on-- מה הוא הפרוטוקול אומר לך? 493 00:23:12,040 --> 00:23:16,070 זה בדיוק כמו ש כי מידע זה 494 00:23:16,070 --> 00:23:18,610 נמסר לך מבוסס על איזה סוג של פרוטוקול 495 00:23:18,610 --> 00:23:21,830 האם מידע זה היה לי נמסר יחזור אליך. 496 00:23:21,830 --> 00:23:23,500 האם זה סוג הגיוני של? 497 00:23:23,500 --> 00:23:28,320 498 00:23:28,320 --> 00:23:30,070 חנה בלומברג: אתה יכול לחשוב על פרוטוקול 499 00:23:30,070 --> 00:23:33,300 כזה-- אני חושב שפרופ מלאן תאר אותו 500 00:23:33,300 --> 00:23:36,910 בכיתה כסוג של כמו זה-- זה כמו המקבילה של לחיצות ידיים אדם. 501 00:23:36,910 --> 00:23:44,930 אומר, כמו, היי, אני בקשה ואני יודע איך להתמודד עם HTTP של גרסה 1.1. 502 00:23:44,930 --> 00:23:48,770 ולאחר מכן השרת אומר, אה, אוקיי, אני- והן קיים. 503 00:23:48,770 --> 00:23:51,337 אני גם יודע איך להתמודד עם HTTP / 1.1. 504 00:23:51,337 --> 00:23:53,170 ואני הולך לתת לי לגבות חלק מתכנים. 505 00:23:53,170 --> 00:23:56,230 במקרה זה, זה הולך להיות של text / html סוג. 506 00:23:56,230 --> 00:23:58,480 אז זה סוג של רק דרך שלהם לcommunicating-- 507 00:23:58,480 --> 00:24:00,480 >> MARIA ZLATKOVA: זה פשוט המאשר כי אתה 508 00:24:00,480 --> 00:24:03,290 שני הבאים באותו פרוטוקול וששניהם 509 00:24:03,290 --> 00:24:06,620 הלקוח וserver-- כך הדפדפן שלך וserver-- 510 00:24:06,620 --> 00:24:09,280 יודע סוג של מה שאתה מדבר ויש לי 511 00:24:09,280 --> 00:24:12,557 הכנס להעברת נתונים ב. 512 00:24:12,557 --> 00:24:17,022 >> קהל: אז part-- Content-Type טקסט Content-Type / html-- זה 513 00:24:17,022 --> 00:24:18,521 חלק נפרד של אותה ההודעה? 514 00:24:18,521 --> 00:24:20,509 או שזה חלק מנניח, 200? 515 00:24:20,509 --> 00:24:22,010 האם 200 יגידו להם או שהוא-- 516 00:24:22,010 --> 00:24:23,770 >> MARIA ZLATKOVA: 200 אומר הכל הלך בסדר. 517 00:24:23,770 --> 00:24:27,900 ולאחר מכן סוג התוכן הוא סוג של חלק נפרד של אותה ההודעה, 518 00:24:27,900 --> 00:24:34,274 ואומר את הדבר שאני חזר זה סוג של text / html. 519 00:24:34,274 --> 00:24:35,690 זה רק נותן מידע נוסף. 520 00:24:35,690 --> 00:24:38,700 521 00:24:38,700 --> 00:24:39,995 יש משהו להוסיף? 522 00:24:39,995 --> 00:24:40,495 אוקיי. 523 00:24:40,495 --> 00:24:43,590 524 00:24:43,590 --> 00:24:46,530 >> כל שאלות אחרות על זה? 525 00:24:46,530 --> 00:24:48,370 מדהים. 526 00:24:48,370 --> 00:24:54,070 אז כמה סטטוסי HTTP אחרים ש אנחנו יכולים לקבל, בנוסף לאישור 200, 527 00:24:54,070 --> 00:24:59,500 אלה שראינו אולי אולי הרבה הם 403 ו -404. 528 00:24:59,500 --> 00:25:05,190 אז 404, אם הייתם מנסה גישת משהו שאינו קיימים. 529 00:25:05,190 --> 00:25:10,460 כך למשל, בך psets CS50 האוצר, 530 00:25:10,460 --> 00:25:15,640 אם אתה היה טיוח quote.html ולא שיש לך קובץ ש, 531 00:25:15,640 --> 00:25:19,740 אבל במקום זה אתה היה quote.php, ש יביא 404 לא נמצא 532 00:25:19,740 --> 00:25:21,600 כי ייתכן שהקובץ לא קיים. 533 00:25:21,600 --> 00:25:25,690 >> ל403 אסור, ש מתייחס להרשאות. 534 00:25:25,690 --> 00:25:31,150 אז אם קובץ כלשהו הוא לא קריא על ידי עולם, אתה עלול לקבל חזרה 403. 535 00:25:31,150 --> 00:25:34,510 536 00:25:34,510 --> 00:25:37,810 כמה אחרים שאולי get-- 301, הועבר לצמיתות; 537 00:25:37,810 --> 00:25:41,300 302, נמצאו; 304, השתנו; 400 בקשה, רעה; 538 00:25:41,300 --> 00:25:47,330 ושגיאת שרת פנימית אז ל 500 ו503, שירות לא זמין. 539 00:25:47,330 --> 00:25:48,140 כֵּן. 540 00:25:48,140 --> 00:25:51,490 >> קהל: האם אנו צפויים ל לשנן את כל הסטטוסים האלה? 541 00:25:51,490 --> 00:25:53,739 MARIA ZLATKOVA: שיהיה לי שלהם על גיליון לרמות שלך. 542 00:25:53,739 --> 00:25:55,146 [צְחוֹק] 543 00:25:55,146 --> 00:25:59,954 קהל: האם אנו צפויים ל יודע מה מעורר כל אחד? 544 00:25:59,954 --> 00:26:00,995 MARIA ZLATKOVA: האם הם? 545 00:26:00,995 --> 00:26:03,870 חנה בלומברג: לאלה שיש לנו לרוץ into-- כך השאלה was-- 546 00:26:03,870 --> 00:26:08,010 MARIA ZLATKOVA: האם הם צפויים יודע מה כל אחד מאלה מעמד 547 00:26:08,010 --> 00:26:09,330 קודים עשויים להיות מופעל על ידי? 548 00:26:09,330 --> 00:26:13,240 אז לאלה שאנחנו כבר בשימוש ונתקלתי ב, הייתי אומר, כן. 549 00:26:13,240 --> 00:26:16,610 אז בהחלט שראינו 200 אישור והרצה אותו בpsets. 550 00:26:16,610 --> 00:26:19,071 ראינו 403, 404. 551 00:26:19,071 --> 00:26:20,550 לאלה אחרים? 552 00:26:20,550 --> 00:26:22,690 >> חנה בלומברג: הייתי אומר 500 נראה משחק הוגן. 553 00:26:22,690 --> 00:26:23,330 >> MARIA ZLATKOVA: 500, כן. 554 00:26:23,330 --> 00:26:24,246 >> חנה בלומברג: כן. 555 00:26:24,246 --> 00:26:27,006 רק יש תחושה כללית של מה גורם להם. 556 00:26:27,006 --> 00:26:28,880 וגם רק על ידי אלה שמות, אתה יכול סוג של 557 00:26:28,880 --> 00:26:32,890 כמו לעשות ניחוש מושכל כ למה דווקא גרם להם. 558 00:26:32,890 --> 00:26:36,919 לדוגמא, להעביר באופן קבוע, כנראה הקובץ הועבר באופן קבוע. 559 00:26:36,919 --> 00:26:39,328 >> קהל: אבל על קודם בחינה, היה כל כך 560 00:26:39,328 --> 00:26:41,050 איך אתה מצפה מאתנו לענות על זה? 561 00:26:41,050 --> 00:26:42,883 >> חנה בלומברג: זה היה שווה אפס נקודות. 562 00:26:42,883 --> 00:26:45,870 השאלה על 418 על הקומקום מבחינה טכנית מצב HTTP, 563 00:26:45,870 --> 00:26:47,090 אבל זה היה שווה אפס נקודות. 564 00:26:47,090 --> 00:26:48,320 ברור, אתה לא צפוי לדעתם. 565 00:26:48,320 --> 00:26:49,670 >> קהל: האם זה אמיתי? 566 00:26:49,670 --> 00:26:51,970 >> חנה בלומברג: זה אמיתי אחד, אבל זה לא אומר כלום. 567 00:26:51,970 --> 00:26:52,700 זה פשוט בדיחה. 568 00:26:52,700 --> 00:26:55,480 569 00:26:55,480 --> 00:26:57,010 אנשי אינטרנט הם מצחיקים. 570 00:26:57,010 --> 00:26:59,680 >> MARIA ZLATKOVA: שאלות גדולה, בחורים. 571 00:26:59,680 --> 00:27:01,452 כל שאלות אחרות? 572 00:27:01,452 --> 00:27:04,891 >> קהל: מה היא שגיאת שרת פנימית? 573 00:27:04,891 --> 00:27:06,640 MARIA ZLATKOVA: פנימי שגיאת שרת רק 574 00:27:06,640 --> 00:27:10,050 משמעות הדבר היא שיש לך כבר הצלחתי לתקשר 575 00:27:10,050 --> 00:27:13,400 עם השרת מסיבה כלשהי. 576 00:27:13,400 --> 00:27:15,400 אז זה לא בהכרח משהו שיש לעשות 577 00:27:15,400 --> 00:27:19,170 עם לקוח או משהו כזה. 578 00:27:19,170 --> 00:27:22,170 אני לא מכיר שום דוגמא ספציפית שעברנו על להסביר, 579 00:27:22,170 --> 00:27:23,000 אבל כן. 580 00:27:23,000 --> 00:27:23,250 >> חנה בלומברג: בטח. 581 00:27:23,250 --> 00:27:25,625 כך למשל, כמו בואו אומר שאתה עובד על mashup 582 00:27:25,625 --> 00:27:30,440 ושרת גוגל ירד לכמה סיבה, הפסקת חשמל, נניח. 583 00:27:30,440 --> 00:27:33,400 זה יהיה שרת פנימי שגיאה או סוג מסוים של-- אוהב אותך 584 00:27:33,400 --> 00:27:34,630 לא היית מקבל תגובה בחזרה. 585 00:27:34,630 --> 00:27:35,260 >> MARIA ZLATKOVA: כן. 586 00:27:35,260 --> 00:27:37,050 זה רק כשאתה הצלחתי לתקשר 587 00:27:37,050 --> 00:27:40,299 עם השרת מסיבה כלשהי כי שלו הולך למטה או מסיבה אחרת. 588 00:27:40,299 --> 00:27:44,430 589 00:27:44,430 --> 00:27:47,690 אז לקפוץ לתוך PHP. 590 00:27:47,690 --> 00:27:49,930 PHP, בניגוד ל- HTML, הוא שפת תכנות. 591 00:27:49,930 --> 00:27:54,820 והתחלנו להשתמש בו כי זה שימושי מאוד לפיתוח אינטרנט. 592 00:27:54,820 --> 00:27:56,940 >> אנחנו השתמשנו בו לראשונה בCS50 האוצר. 593 00:27:56,940 --> 00:28:02,240 וזה בעצם עוזר לנו להביא יחד סימון זו, העיצוב, 594 00:28:02,240 --> 00:28:07,460 ואיך בעצם אנו משתמשים במידע להצגת דברים בדף אינטרנט. 595 00:28:07,460 --> 00:28:11,870 אז PHP עצמו אומר PHP Hypertext Preprocessor, 596 00:28:11,870 --> 00:28:15,360 אז זה backnorym רקורסיבית על ידי עצמו. 597 00:28:15,360 --> 00:28:22,330 ואנחנו שמאלי פתיחת תגים עבור PHP חיצים ימינה ועם סימני השאלה 598 00:28:22,330 --> 00:28:23,060 ו- PHP. 599 00:28:23,060 --> 00:28:25,890 >> אז כבר ראינו חבורה שלו. 600 00:28:25,890 --> 00:28:29,150 עכשיו, אנחנו רק הולכים לעבור על חלק מהדברים הבסיסיים על זה. 601 00:28:29,150 --> 00:28:32,280 אז עם PHP, משתנה שמות מתחילים עם סימן דולר. 602 00:28:32,280 --> 00:28:35,660 אנחנו לא לציין, שוב, משתנה להקליד יותר. 603 00:28:35,660 --> 00:28:38,450 בדיוק כמו שעשינו עם C, אנחנו לא צריכים לעשות את זה. 604 00:28:38,450 --> 00:28:41,670 605 00:28:41,670 --> 00:28:44,490 >> אנחנו יכולים לעשות חבורה של שונה דברים עם משתנים. 606 00:28:44,490 --> 00:28:47,750 אנחנו יכולים לשים אותם יחד על ידי שרשורם 607 00:28:47,750 --> 00:28:52,900 עם סימון הנקודה, ש לא יכולתי לעשות בC שוב. 608 00:28:52,900 --> 00:28:57,490 שוב, יש לנו קצת יותר צדדיות עם PHP במונחים של משתנים. 609 00:28:57,490 --> 00:29:00,080 שוב, אין לנו פונקציה העיקרית. 610 00:29:00,080 --> 00:29:03,370 >> ו- PHP מתפרש בניגוד להידור, 611 00:29:03,370 --> 00:29:09,970 אז איך בדיוק אנחנו לא להפוך לקבצי C, אנחנו לא צריכים לעשות את זה עבור PHP. 612 00:29:09,970 --> 00:29:15,440 אלא, אופן שבו השפה מנוהל על ידי עצמו, זה מתפרש. 613 00:29:15,440 --> 00:29:18,550 ולאחר מכן הקליד באופן רופף רק אומר שאנחנו 614 00:29:18,550 --> 00:29:22,490 לא צריך לציין משתנה סוג והסוגים משתנים 615 00:29:22,490 --> 00:29:25,415 הם הבינו בזמן הריצה. 616 00:29:25,415 --> 00:29:29,185 >> קהל: אבל מה עשיתי לך מתכוון בשרשור נקודה? 617 00:29:29,185 --> 00:29:30,060 MARIA ZLATKOVA: בטח. 618 00:29:30,060 --> 00:29:37,660 כאשר אנו רוצים לשים דברים together-- כך שאם היו לנו כמה משתנים ש 619 00:29:37,660 --> 00:29:41,500 היה הערך של 3 והיה לנו עוד משתנה שהערך של מחרוזת, 620 00:29:41,500 --> 00:29:45,920 אנחנו יכולים לשים את המשתנים יחד על ידי הצבת נקודה שבביניהם 621 00:29:45,920 --> 00:29:46,970 ושרשורם. 622 00:29:46,970 --> 00:29:52,670 או שאנחנו יכולים ליצור שם נקרא משתנה 623 00:29:52,670 --> 00:29:56,900 ולשים את זה ביחד על ידי שרשור שתי מחרוזות. 624 00:29:56,900 --> 00:30:00,680 >> אז אם היו לנו מחרוזת בכפולה ציטוטים ואנחנו שמים נקודה אחריו, 625 00:30:00,680 --> 00:30:03,660 ואז היו לנו עוד מחרוזת, ש היה ליצור מחרוזת לגמרי. 626 00:30:03,660 --> 00:30:05,242 >> קהל: אישור. 627 00:30:05,242 --> 00:30:06,450 MARIA לטביה: האם זה ברור? 628 00:30:06,450 --> 00:30:07,099 קהל: כן. 629 00:30:07,099 --> 00:30:07,890 MARIA ZLATKOVA: אישור. 630 00:30:07,890 --> 00:30:08,766 כֵּן. 631 00:30:08,766 --> 00:30:11,146 >> קהל: כשאתה אומר פירש ולא הידור, 632 00:30:11,146 --> 00:30:14,160 אתה מדבר שאתה לא צריך להיות ספציפי כמו כש 633 00:30:14,160 --> 00:30:15,906 מדובר PHP לעומת C? 634 00:30:15,906 --> 00:30:18,085 635 00:30:18,085 --> 00:30:20,710 MARIA ZLATKOVA: כאשר אנו אומרים פירש בניגוד להידור, 636 00:30:20,710 --> 00:30:21,850 מה אנחנו אומר? 637 00:30:21,850 --> 00:30:26,220 אז זה אומר שאנחנו לא צריכים קבצי הפעלה להפעיל PHP. 638 00:30:26,220 --> 00:30:29,870 זה אומר שהוא פועל כפי שהוא הולך. 639 00:30:29,870 --> 00:30:31,650 האם זה הגיוני? 640 00:30:31,650 --> 00:30:32,495 קצת יותר. 641 00:30:32,495 --> 00:30:34,620 חנה בלומברג: אז אתה יכול לחשוב על מתורגמן 642 00:30:34,620 --> 00:30:38,980 כתכנית אחרת שהיא אחראי להולך שורה אחרת שורה באמצעות PHP 643 00:30:38,980 --> 00:30:42,745 ושמבצע בפועל אותו, בניגוד לעריכה את כל זה לינארי. 644 00:30:42,745 --> 00:30:46,050 זה לא ממש אומר שום דבר על איך ספציפי שאנחנו צריכים להיות. 645 00:30:46,050 --> 00:30:49,470 אנחנו עדיין צריכים להיות מדויקים, ולא תשכח פסיק שלך, ולוודא 646 00:30:49,470 --> 00:30:51,470 יש לך סימן הדולר שלך, ודברים כאלה. 647 00:30:51,470 --> 00:30:52,240 שאלה טובה. 648 00:30:52,240 --> 00:30:53,115 >> MARIA ZLATKOVA: כן. 649 00:30:53,115 --> 00:30:55,590 אז שורה אחרת שורה, כ בניגוד לעם קבצי C, 650 00:30:55,590 --> 00:30:59,100 אנחנו צריכים לעשות את כל סופיים לפני שאנחנו באמת יכולים להפעיל אותו. 651 00:30:59,100 --> 00:31:00,360 זה ההבדל העיקרי. 652 00:31:00,360 --> 00:31:02,655 אבל שוב, אנחנו לא יכולים באמת להיות פחות ספציפי. 653 00:31:02,655 --> 00:31:08,760 654 00:31:08,760 --> 00:31:13,950 אז מערכים ב- PHP מייצגים למעשה מפת הורה. 655 00:31:13,950 --> 00:31:17,550 >> אז ערכים כלולות מערכים למפתחות. 656 00:31:17,550 --> 00:31:23,350 שתי הדרכים להכריז מערך, המבוסס על תחביר זה, 657 00:31:23,350 --> 00:31:26,380 אנחנו יכולים להיות מפורשים יותר באומרו שיש לנו מערך 658 00:31:26,380 --> 00:31:31,010 ויש לנו key1 זה שממפה ל value1 זה, key2 הממפה value2. 659 00:31:31,010 --> 00:31:34,660 או שאנחנו יכולים רק ליצור מערך המכיל את הערכים עצמו 660 00:31:34,660 --> 00:31:38,360 ולאחר מכן על המקשים הם הבין בדרך. 661 00:31:38,360 --> 00:31:40,000 כל שאלות על זה? 662 00:31:40,000 --> 00:31:42,500 >> קהל: מה היית המפתחות להיות בדוגמא השנייה? 663 00:31:42,500 --> 00:31:47,100 664 00:31:47,100 --> 00:31:47,920 0, 1, 2, 3? 665 00:31:47,920 --> 00:31:50,650 666 00:31:50,650 --> 00:31:55,780 >> MARIA ZLATKOVA: לדוגמא, זה פשוט המפתחות בזה לא בהכרח 667 00:31:55,780 --> 00:31:56,550 לעשות שינוי. 668 00:31:56,550 --> 00:32:01,720 הם פשוט להגדיר איך אתה יכול להשתמש בערכים הפנימיים שלו. 669 00:32:01,720 --> 00:32:08,660 אז אם היו לנו foreach הלולאה ב- PHP שהיית 670 00:32:08,660 --> 00:32:14,760 מאפשר לנו לעבור את כל הערכים, אנחנו יכולים לעבור את כל הערכים, 671 00:32:14,760 --> 00:32:19,570 גם אם היו לנו או לא מוגדר מפתח ספציפי בתוך האתר של 672 00:32:19,570 --> 00:32:20,820 תחביר קודם. 673 00:32:20,820 --> 00:32:23,460 >> אז גם עם סוג זה של מערך, אנחנו עדיין יכולים 674 00:32:23,460 --> 00:32:26,260 יש לולאת foreach שעובר כל 675 00:32:26,260 --> 00:32:31,240 של הערכים במפתח במערך. 676 00:32:31,240 --> 00:32:36,180 אז התחביר של foreach לולאה, אנחנו מתחילים עם מערך. 677 00:32:36,180 --> 00:32:38,720 678 00:32:38,720 --> 00:32:43,900 משתנים $ arr זה המערך האמיתי שלנו שהוגדרנו בשקופית הקודמת 679 00:32:43,900 --> 00:32:47,550 כערך שממש הולך באמצעות כל אחד מהערכים, 680 00:32:47,550 --> 00:32:50,122 בלי שום קשר ל היו לנו מפתח או לא. 681 00:32:50,122 --> 00:32:53,080 ואז אנחנו יכולים לעשות משהו עם הערך הפנימי של foreach הלולאה. 682 00:32:53,080 --> 00:32:57,730 אז שוב, אם היו לנו מערך כמו זה כאן created-- 683 00:32:57,730 --> 00:33:03,270 אז יש לנו את המפתח של foo וערך של בר, המפתח של באז וערך של qux-- 684 00:33:03,270 --> 00:33:09,730 אנחנו יכולים להיות לולאת foreach ש עובר מערך כערך מרכזי 685 00:33:09,730 --> 00:33:11,900 ואז לעשות משהו עם מפתח ו / או ערך. 686 00:33:11,900 --> 00:33:15,980 אבל אנחנו לא בהכרח תמיד צריך שיהיה לי foreach לולאות ש 687 00:33:15,980 --> 00:33:19,410 עובר מערך כמפת מפתח לערך. 688 00:33:19,410 --> 00:33:26,060 אנחנו יכולים לעבור מערך לולאת foreach כערך. 689 00:33:26,060 --> 00:33:28,990 >> חנה בלומברג: ואני חושב ש צריכה-- הייתה השאלה שלך, מה ש 690 00:33:28,990 --> 00:33:31,229 הוא המדד משתמע? 691 00:33:31,229 --> 00:33:31,895 קהל: דיי. 692 00:33:31,895 --> 00:33:32,240 MARIA ZLATKOVA: אה. 693 00:33:32,240 --> 00:33:33,406 חנה בלומברג: כן, כן. 694 00:33:33,406 --> 00:33:36,150 אז בעצם, אם לא תציין מפתח, זה הולך להיות 01. 695 00:33:36,150 --> 00:33:37,140 >> MARIA ZLATKOVA: כן. 696 00:33:37,140 --> 00:33:41,718 בדיוק כמו עם C, זה אפס אינדקס אם לא תציין מפתח. 697 00:33:41,718 --> 00:33:42,384 קהל: מצטער. 698 00:33:42,384 --> 00:33:43,827 אתה יכול לנסות לדבר קצת יותר חזק? 699 00:33:43,827 --> 00:33:45,270 יש לי קצת בעיה לשמוע כל דבר. 700 00:33:45,270 --> 00:33:46,478 >> MARIA ZLATKOVA: אני כל כך מצטער. 701 00:33:46,478 --> 00:33:48,439 כן כמובן. 702 00:33:48,439 --> 00:33:50,230 אז אתה רוצה אותי לעבור על זה שוב? 703 00:33:50,230 --> 00:33:51,680 או האם זה-- 704 00:33:51,680 --> 00:33:54,930 קהל: אז על slide-- הקודם אם אתה פשוט יכול לחזור לשנייה אחת. 705 00:33:54,930 --> 00:33:57,313 MARIA ZLATKOVA: כמובן, מצטער. 706 00:33:57,313 --> 00:33:59,237 קהל: אז השני מערך כאן לא 707 00:33:59,237 --> 00:34:04,135 נראה שיש ערך למפתח, בערך [? גְרִימָה. ?] 708 00:34:04,135 --> 00:34:05,343 MARIA ZLATKOVA: נכון, נכון. 709 00:34:05,343 --> 00:34:07,608 קהל: אז איך עושה את זה עבודה כשאתה אומר שזה לא או כל. 710 00:34:07,608 --> 00:34:08,969 לי, שנראה כמו א [? foo?] כבר. 711 00:34:08,969 --> 00:34:10,093 >> MARIA ZLATKOVA: כן, כן. 712 00:34:10,093 --> 00:34:12,969 אז שוב, זה מפת הורה במובן זה 713 00:34:12,969 --> 00:34:15,639 שיש הם הבינו, למשל, המדדים 714 00:34:15,639 --> 00:34:20,159 כאן ניתן להבין 0, 1, 2, 3. 715 00:34:20,159 --> 00:34:25,929 שוב, זה אלה שיש מדדים הוא שווה הערך שלנו 716 00:34:25,929 --> 00:34:28,980 שיש מפתחות הממופים על ערכים. 717 00:34:28,980 --> 00:34:34,710 אז אם המפתח שלנו היה 0-- מצטער. 718 00:34:34,710 --> 00:34:36,524 >> חנה בלומברג: לא, יש לרשום לכאן. 719 00:34:36,524 --> 00:34:36,929 זה ממש ממש נחמד. 720 00:34:36,929 --> 00:34:37,460 >> MARIA ZLATKOVA: זה נהדר. 721 00:34:37,460 --> 00:34:38,260 אוקיי. 722 00:34:38,260 --> 00:34:49,489 אז שוב, עיבוד $ 0 יהיה המפתח לערך 1. 723 00:34:49,489 --> 00:34:51,138 0 יהיו המפתח לערך 1. 724 00:34:51,138 --> 00:34:51,971 קהל: אני מצטער. 725 00:34:51,971 --> 00:34:53,190 זה בלתי נראה. 726 00:34:53,190 --> 00:34:53,659 >> חנה בלומברג: בסדר, Nevermind. 727 00:34:53,659 --> 00:34:54,980 הגיר היה רעיון רע. 728 00:34:54,980 --> 00:34:58,030 אני לוקח אותו בחזרה. 729 00:34:58,030 --> 00:35:01,425 אתה יכול לחשוב על המקשים כ0 מפות לערך 1. 730 00:35:01,425 --> 00:35:02,300 MARIA ZLATKOVA: כן. 731 00:35:02,300 --> 00:35:04,630 אז זה הוא 0, זה 1, 2, 3. 732 00:35:04,630 --> 00:35:05,760 אלה יכולים להיות המפתחות שלך. 733 00:35:05,760 --> 00:35:10,020 אתה יכול לחשוב עליהם as-- כן. 734 00:35:10,020 --> 00:35:12,740 אז במקום שיש מפתחות מפורשים, הם 735 00:35:12,740 --> 00:35:17,180 הבין סוג של כ המדדים החל משעת 0. 736 00:35:17,180 --> 00:35:21,630 737 00:35:21,630 --> 00:35:24,820 הגיר לא עזר. 738 00:35:24,820 --> 00:35:25,722 כֵּן. 739 00:35:25,722 --> 00:35:30,914 >> קהל: לforeach הלולאה, אם אנחנו רוצים להציג כערך, 740 00:35:30,914 --> 00:35:33,245 זה היה רק ​​באופן אוטומטי למדד 0? 741 00:35:33,245 --> 00:35:34,120 MARIA ZLATKOVA: כן. 742 00:35:34,120 --> 00:35:35,745 זה יהיה לעבור כל אחד מהערכים. 743 00:35:35,745 --> 00:35:39,130 קהל: [לא ברור] כ 0 או שתעשה רק 0? 744 00:35:39,130 --> 00:35:43,710 >> MARIA ZLATKOVA: אתה היית צריך לומר כסימן דולר ולאחר מכן 745 00:35:43,710 --> 00:35:46,266 כמה שם משתנה, ערך. 746 00:35:46,266 --> 00:35:47,182 קהל: [לא ברור]. 747 00:35:47,182 --> 00:35:50,048 748 00:35:50,048 --> 00:35:50,964 MARIA ZLATKOVA: מצטער? 749 00:35:50,964 --> 00:35:52,839 קהל: מצטער, אני רק מנסה להיזכר. 750 00:35:52,839 --> 00:35:57,190 איך היית עושה את זה אם אתה יכול לעשות את זה באופן אוטומטי לאינדקס הוא רק 0? 751 00:35:57,190 --> 00:36:00,780 >> MARIA ZLATKOVA: אז איך היית עושה את זה אם לא היה לך שמות מפתח ספציפיים? 752 00:36:00,780 --> 00:36:01,710 >> קהל: כן. 753 00:36:01,710 --> 00:36:07,820 >> MARIA ZLATKOVA: אתה היית רק define-- רק אומר את עצמך כחלק משם. 754 00:36:07,820 --> 00:36:17,950 אז אולי בpsets, אתם זוכר שורת $ foreach כשורות $, 755 00:36:17,950 --> 00:36:24,610 יצרנו לעצמנו שורת $ זה אומר אנחנו רוצים לעבור שורה כמו שורות $. 756 00:36:24,610 --> 00:36:28,360 למרות שלא היה לנו $ מפורשים זו שורות מוגדרות, 757 00:36:28,360 --> 00:36:31,990 אנחנו יכולים פשוט ללכת ו אומר את זה יכול להיות המפתח שלנו, 758 00:36:31,990 --> 00:36:33,615 ורק לעבור כל אחד מהערכים. 759 00:36:33,615 --> 00:36:37,295 760 00:36:37,295 --> 00:36:41,660 >> קהל: אז ערך משתנה חדש אנחנו יוצרים לאחסון [לא ברור]? 761 00:36:41,660 --> 00:36:46,820 762 00:36:46,820 --> 00:36:49,990 >> MARIA ZLATKOVA: אז זה לא מטבע משתנה חדש. 763 00:36:49,990 --> 00:37:00,310 זה משתנה המתייחס ל בתוך המערך לכל אחד מהם. 764 00:37:00,310 --> 00:37:02,060 חנה בלומברג: זה שם משתנה חדש. 765 00:37:02,060 --> 00:37:04,018 MARIA ZLATKOVA: כן, זה שם משתנה חדש, 766 00:37:04,018 --> 00:37:06,680 אבל זה לא inherently-- כן. 767 00:37:06,680 --> 00:37:08,950 זה פשוט משתנה חדש כי אתה יכול לעשות את זה. 768 00:37:08,950 --> 00:37:12,680 אז איך בדיוק לעשות את שעשינו $ שורה כ$ שורות, שורות 769 00:37:12,680 --> 00:37:17,980 היה שם משתנה חדש ש יכול ליצור בforeach הלולאה שלנו. 770 00:37:17,980 --> 00:37:22,065 זה לא חייב לpreexist לפני ש. 771 00:37:22,065 --> 00:37:25,777 >> קהל: אתה יכול לעבור היגיון לכל, באמצעות הדוגמא שם? 772 00:37:25,777 --> 00:37:26,610 MARIA ZLATKOVA: מהמ. 773 00:37:26,610 --> 00:37:31,240 774 00:37:31,240 --> 00:37:32,080 אה סליחה. 775 00:37:32,080 --> 00:37:33,780 הנה הדוגמא. 776 00:37:33,780 --> 00:37:34,280 בַּטוּחַ. 777 00:37:34,280 --> 00:37:38,950 אז לכל array-- כך זה אומר ללכת למערך זה 778 00:37:38,950 --> 00:37:43,930 כמפתח value-- שקורה לעבור מערך זה 779 00:37:43,930 --> 00:37:49,480 והראשון ללכת ולקבל foo, foo מפתח ובר הערך. 780 00:37:49,480 --> 00:37:51,570 ואז על השני איטרציה של לולאה, 781 00:37:51,570 --> 00:37:55,090 זה הולך לעבור ולקחת אז המפתח וqux הערך. 782 00:37:55,090 --> 00:38:00,512 ואז אתה יכול לעשות משהו עם אחד מהם או שניהם. 783 00:38:00,512 --> 00:38:03,488 >> קהל: אז הרעיון מאחורי יש נקודת מפתח לערך, 784 00:38:03,488 --> 00:38:07,470 מה שאתה עושה בסופו הגישה? 785 00:38:07,470 --> 00:38:10,680 >> MARIA ZLATKOVA: מהו הרעיון שיש לו מפתח להצבעה מעריכה? 786 00:38:10,680 --> 00:38:16,400 זה פשוט כנס אחר, אחר דרך של עובר המערך 787 00:38:16,400 --> 00:38:22,600 ולהיות מסוגל לגשת לאחד מ מפתח או הערך או שניהם ולהשתמש בם. 788 00:38:22,600 --> 00:38:27,100 >> קהל: מה התפקיד ל להורות כי foreach פועל ב? 789 00:38:27,100 --> 00:38:29,250 אז אם היינו להוסיף אלמנטים למערך מאוחר יותר, 790 00:38:29,250 --> 00:38:32,140 היו אלה להיות הראשונים נקרא במערך foreach, 791 00:38:32,140 --> 00:38:33,750 או שזה יהיה בהמשך? 792 00:38:33,750 --> 00:38:37,770 >> MARIA ZLATKOVA: אז מה הוא כדי שforeach 793 00:38:37,770 --> 00:38:39,210 הלולאה עוברת מערך ב? 794 00:38:39,210 --> 00:38:42,220 זה עובר הראשון אלמנט לאלמנט האחרון, 795 00:38:42,220 --> 00:38:43,400 לאלמנט נוסף שעבר. 796 00:38:43,400 --> 00:38:48,020 אם אתה מוסיף אלמנטים מאוחר יותר, הם היו להיות accessed-- האלמנטים הראשונים היו 797 00:38:48,020 --> 00:38:51,410 ניתן לגשת כראשון אלמנטים של המערך, 798 00:38:51,410 --> 00:38:57,620 ואז היית עובר כל אחד מ האלמנטים כמו סוג של ordered-- 799 00:38:57,620 --> 00:39:02,930 לא הזמין, אבל הדרך שבי הם כבר הכניסו לתוך המערך. 800 00:39:02,930 --> 00:39:06,855 >> קהל: אלמנטים אז חדשים הם הוסיפו מאוחר יותר? 801 00:39:06,855 --> 00:39:10,680 אז הם הוסיף-- הם יהיו אחרון שב[? איטרציה. ?] 802 00:39:10,680 --> 00:39:14,280 >> MARIA ZLATKOVA: אלמנטים חדשים can-- בעצם, כאשר אלמנטים חדשים מתווספים, 803 00:39:14,280 --> 00:39:16,520 הם הוסיפו לסוף המערך? 804 00:39:16,520 --> 00:39:17,632 >> קהל: כן. 805 00:39:17,632 --> 00:39:18,840 MARIA ZLATKOVA: אני מאמין שכן. 806 00:39:18,840 --> 00:39:20,850 כֵּן. 807 00:39:20,850 --> 00:39:24,330 ולאחר מכן עם foreach הלולאה שלך, לאחר שהוספת אלמנטים חדשים 808 00:39:24,330 --> 00:39:26,790 ואתה עובר אותם, האלמנטים החדשים היית 809 00:39:26,790 --> 00:39:30,930 להיות accessed-- האלמנט החדש, אם זה הוסיף שעבר, זה היה לגשת אחרון. 810 00:39:30,930 --> 00:39:34,416 >> קהל: האם אתה יכול פשוט לתת דוגמא של משהו שהיית [לא ברור] 811 00:39:34,416 --> 00:39:37,404 עם משהו עם ערך כמו או ערך [לא ברור], 812 00:39:37,404 --> 00:39:38,910 כמו איך הייתי לך לעצב את זה? 813 00:39:38,910 --> 00:39:39,785 >> MARIA ZLATKOVA: בטח. 814 00:39:39,785 --> 00:39:42,340 815 00:39:42,340 --> 00:39:46,410 האם אני יכול לתת דוגמא למה ש היינו עושה עם הערך? 816 00:39:46,410 --> 00:39:52,440 אז מה אתם יכולים להיות מוכרים עם הוא שאנחנו כבר עברנו מערך 817 00:39:52,440 --> 00:39:55,380 ובעצם מודפס כל אחד מהמרכיבים, 818 00:39:55,380 --> 00:40:00,910 לדוגמא, כחלק מ רשימה מסודרת או משהו ש. 819 00:40:00,910 --> 00:40:02,674 האם זה הגיוני או שאנחנו רוצים צריכה-- 820 00:40:02,674 --> 00:40:04,340 קהל: האם אנחנו יכולים להדפיס את הערכים הללו? 821 00:40:04,340 --> 00:40:13,220 MARIA ZLATKOVA: כן, אנחנו יכולים להדפיס ואז בעצם $ ערך כי ב 822 00:40:13,220 --> 00:40:16,570 שהערך ספציפי, שנהיה להדפיס את הערך הפנימי שלו. 823 00:40:16,570 --> 00:40:20,150 אז אם היינו באיטרציה הראשונה שלנו שלו ואנחנו מודפסים ערך $, 824 00:40:20,150 --> 00:40:23,775 היינו מדפיס בר. 825 00:40:23,775 --> 00:40:27,020 >> קהל: האם יש גם ל לולאות ב PHP או סתם לולאות foreach? 826 00:40:27,020 --> 00:40:30,430 >> MARIA ZLATKOVA: יש גם ללולאות ב- PHP. 827 00:40:30,430 --> 00:40:33,399 וההיגיון שלהם הוא בעיקר אותו דבר כמו מה שאתה כבר רגיל אליו. 828 00:40:33,399 --> 00:40:34,690 קהל: אז הערך שלה הוא null. 829 00:40:34,690 --> 00:40:35,090 MARIA ZLATKOVA: זה כמו אותו הדבר. 830 00:40:35,090 --> 00:40:35,590 כֵּן. 831 00:40:35,590 --> 00:40:37,747 קהל: אני רק הולך לשאול. 832 00:40:37,747 --> 00:40:39,695 לכן, כאשר אתה מצהיר מערך, אתה לא צריך 833 00:40:39,695 --> 00:40:42,617 לספר מה גודל זה הולך להיות, מה שאומר שאתה יכול פשוט 834 00:40:42,617 --> 00:40:44,417 להוסיף ולקחת אלמנטים [לא ברור]. 835 00:40:44,417 --> 00:40:45,250 MARIA ZLATKOVA: כן. 836 00:40:45,250 --> 00:40:45,750 כן. 837 00:40:45,750 --> 00:40:46,251 בְּדִיוּק. 838 00:40:46,251 --> 00:40:48,875 כאשר אנו מצהירים מערך, אנחנו לא צריך לומר מה גודל זה, 839 00:40:48,875 --> 00:40:51,022 כך אנחנו יכולים רק להוסיף אלמנטים על זה מאוחר יותר גם כן. 840 00:40:51,022 --> 00:40:55,075 841 00:40:55,075 --> 00:40:55,700 עוד שאלות? 842 00:40:55,700 --> 00:40:59,870 843 00:40:59,870 --> 00:41:05,950 אז להביא PHP ו- HTML יחד, מה יש לנו גם seen--, 844 00:41:05,950 --> 00:41:15,130 למשל, בדוגמא זו, יש לנו טופס HTML שיש שדה קלט. 845 00:41:15,130 --> 00:41:18,830 >> ושדה הקלט הוא רק שם ואז יש לו כפתור Submit. 846 00:41:18,830 --> 00:41:26,040 וכאשר אתה לוחץ על שלח כפתור, בקובץ hello.php, 847 00:41:26,040 --> 00:41:32,130 בגלל השיטה לצורה היא לקבל, אנו יכולים לגשת כל מה שהוא בשם 848 00:41:32,130 --> 00:41:40,360 על ידי זה מקבל משתנה גלובלי ש הוא-- תחביר לזה _GET $. 849 00:41:40,360 --> 00:41:44,520 ואז אנו יכולים לגשת כל מה ש קלט משתמש בתוך צורה שלשם 850 00:41:44,520 --> 00:41:47,410 על ידי ציון שמו של תחום זה. 851 00:41:47,410 --> 00:41:51,480 852 00:41:51,480 --> 00:41:55,060 >> כל שאלות אחרות או כל שאלות על הדוגמא הספציפית הזה? 853 00:41:55,060 --> 00:41:58,275 >> קהל: איפה PHP? 854 00:41:58,275 --> 00:41:59,150 MARIA ZLATKOVA: כאן. 855 00:41:59,150 --> 00:42:01,150 אז זה תג הפתיחה שלנו ל- PHP. 856 00:42:01,150 --> 00:42:01,530 >> קהל: אה, נכון. 857 00:42:01,530 --> 00:42:02,363 >> MARIA ZLATKOVA: כן. 858 00:42:02,363 --> 00:42:05,320 859 00:42:05,320 --> 00:42:09,609 >> חנה בלומברג:? = הוא קצרנות לכך הוא PHP ורק הד. 860 00:42:09,609 --> 00:42:10,150 קהל: אה. 861 00:42:10,150 --> 00:42:10,720 MARIA ZLATKOVA: כן, מצטער. 862 00:42:10,720 --> 00:42:12,040 אני צריך לעשות את זה ברור. 863 00:42:12,040 --> 00:42:13,759 >> חנה בלומברג: הדפסה. 864 00:42:13,759 --> 00:42:16,800 MARIA ZLATKOVA: זה רק הפונקציה המאפשר לנו להדפיס משהו. 865 00:42:16,800 --> 00:42:19,795 866 00:42:19,795 --> 00:42:20,420 שאלה גדולה. 867 00:42:20,420 --> 00:42:24,140 868 00:42:24,140 --> 00:42:25,495 אז going-- כן. 869 00:42:25,495 --> 00:42:31,940 >> קהל: האם יש הולך להיות די קצת יד קידוד של PHP ו- HTML 870 00:42:31,940 --> 00:42:33,450 בחידון 1? 871 00:42:33,450 --> 00:42:36,310 872 00:42:36,310 --> 00:42:38,810 MARIA ZLATKOVA: לא יכול להיות כמות נכבדה של פרשנות 873 00:42:38,810 --> 00:42:43,330 של PHP ו- HTML, לא בהכרח כמו כמות עצומה של קידוד, 874 00:42:43,330 --> 00:42:46,960 למרות שייתכן שתצטרך לכתוב foreach לולאה, אם כי, ללולאה. 875 00:42:46,960 --> 00:42:49,790 כל הלולאות ש לכסות כאן הוא משחק הוגן. 876 00:42:49,790 --> 00:42:51,889 וזה בעיקר זה. 877 00:42:51,889 --> 00:42:53,430 חנה בלומברג: אני יהיה מוכן. 878 00:42:53,430 --> 00:42:57,010 באותו אופן שאנו מבקשים ממך לכתוב חבורה של פונקציות C בחידון 0, 879 00:42:57,010 --> 00:42:59,766 אני יהיה מוכן לעשות אותו הדבר ב- PHP ו- JavaScript. 880 00:42:59,766 --> 00:43:00,640 MARIA ZLATKOVA: כן. 881 00:43:00,640 --> 00:43:03,210 חנה בלומברג: הייתי אומר little-- כמו שאנחנו לא 882 00:43:03,210 --> 00:43:06,251 הולך לעשות לך לכתוב HTML ענק דף רק בגלל שזה קצת 883 00:43:06,251 --> 00:43:08,240 , אבל אולי יש לך משעממים חלקים. 884 00:43:08,240 --> 00:43:09,310 זה משחק לגמרי הוגן. 885 00:43:09,310 --> 00:43:11,082 כמו דף HTML הקטן, לגמרי הוגן. 886 00:43:11,082 --> 00:43:11,623 קהל: אישור. 887 00:43:11,623 --> 00:43:13,814 מה דעתך על בJavaScript, כמו גם? 888 00:43:13,814 --> 00:43:14,730 חנה בלומברג: כן. 889 00:43:14,730 --> 00:43:15,250 משחק ההוגן של JavaScript. 890 00:43:15,250 --> 00:43:15,635 >> MARIA ZLATKOVA: כן. 891 00:43:15,635 --> 00:43:16,801 זה משחק הוגן לחלוטין. 892 00:43:16,801 --> 00:43:19,280 חנה בלומברג: תקבל לזה שבכמו 10 דקות. 893 00:43:19,280 --> 00:43:23,750 >> MARIA ZLATKOVA: SQL, שוב, שפת שאילתות מובנית. 894 00:43:23,750 --> 00:43:28,651 זה בעצם מאפשר לנו לנהל את הנתונים בניהול מסדי נתונים יחסי 895 00:43:28,651 --> 00:43:29,150 מַעֲרֶכֶת. 896 00:43:29,150 --> 00:43:31,149 שרק בעצם אומר שיש לנו אי שם 897 00:43:31,149 --> 00:43:37,980 כדי לאחסן נתונים מסוימים שייתכן שירצו להשתמש באתר או בכל צורה אחרת. 898 00:43:37,980 --> 00:43:42,190 ואז יש לנו שאילתות כדי לקבל מידע ממאגר הנתונים שלנו, 899 00:43:42,190 --> 00:43:44,320 או להכניס מידע בהם. 900 00:43:44,320 --> 00:43:47,560 הרבה של עדכון ones-- המשותף, INSERT, בחר, ולמחוק. 901 00:43:47,560 --> 00:43:50,790 >> אז לעדכון, זה התחביר לעדכון נתונים במסד נתונים. 902 00:43:50,790 --> 00:43:53,330 903 00:43:53,330 --> 00:43:57,340 עדכון טבלה זו נקראת שולחן באומר SET, 904 00:43:57,340 --> 00:44:04,170 אנו יכולים להגדיר כמה ערכים בכל שורות למשהו שווה אחר. 905 00:44:04,170 --> 00:44:09,410 אז אנחנו גם יכולים לציין כמה ספציפיים ערכים שאנו רוצים לשנות 906 00:44:09,410 --> 00:44:11,240 וזה יכול להיות באמצעות איפה. 907 00:44:11,240 --> 00:44:16,380 ואנחנו יכולים לציין שאנחנו רק רוצים לשנות כמה שורות שבו לבית ל, 908 00:44:16,380 --> 00:44:19,830 אם היו לנו שולחן של תלמידים וכל הסטודנטים בית, 909 00:44:19,830 --> 00:44:24,890 כדי שרק היה לשנות כמה ערכים שבו בית שווה קורייר, 910 00:44:24,890 --> 00:44:25,430 לדוגמה. 911 00:44:25,430 --> 00:44:29,120 912 00:44:29,120 --> 00:44:31,800 >> לINSERT, אנחנו יכולים להכניס ערכים מסוימים בטבלה. 913 00:44:31,800 --> 00:44:35,150 אז INSERT INTO שולחן, ולאחר מכן את הערכים, 914 00:44:35,150 --> 00:44:39,080 ולאחר מכן בסוגריים, שנציין אילו ערכים שאתה רוצה להוסיף. 915 00:44:39,080 --> 00:44:43,220 אז INSERT INTO שולחן, col1 ו col2, הערך הוא VAL1 וVAL2. 916 00:44:43,220 --> 00:44:48,930 אז זה מוסיף בעצם שורה חדשה ל טבלה המכילה את הערכים 1 ו -2 917 00:44:48,930 --> 00:44:50,850 תחת עמודות 1 ו -2. 918 00:44:50,850 --> 00:44:54,760 >> ואז אנחנו הולכים לעבור על דוגמה קטנה על איך זה נראה 919 00:44:54,760 --> 00:44:56,310 כמו באתר שלנו קצת. 920 00:44:56,310 --> 00:44:58,685 אבל שאילתא סופית זה שאני חושבים שאנחנו הולכים לעבור על, 921 00:44:58,685 --> 00:45:01,450 SELECT, זה פשוט מאפשר לנו כדי לבחור נתונים מטבלה 922 00:45:01,450 --> 00:45:03,080 כדי להשתמש בו ואולי אחר כך. 923 00:45:03,080 --> 00:45:05,830 והדרך בה אנו עושים זאת היא ש רק לאחסן אותו בכמה משתנה. 924 00:45:05,830 --> 00:45:07,780 ואז אנחנו יכולים אולי להשתמש בו שוב. 925 00:45:07,780 --> 00:45:10,260 >> אז כוכב SELECT אומר לבחור את כל. 926 00:45:10,260 --> 00:45:13,280 זה פשוט קצרנות לבחירה כל. 927 00:45:13,280 --> 00:45:19,760 מהשולחן שבו, אנחנו מחפשים לכמה תנאים ספציפיים, 928 00:45:19,760 --> 00:45:22,290 אז איפה טור שווה משהו, לדוגמא. 929 00:45:22,290 --> 00:45:24,410 אם אנחנו רק רצינו בחר בכל מהשולחן, 930 00:45:24,410 --> 00:45:28,400 זה פשוט בוחר את כל העמודות ואת כל השורות מטבלה. 931 00:45:28,400 --> 00:45:32,040 >> ולאחר מכן למחוק מטבלה איפה col שווה משהו, 932 00:45:32,040 --> 00:45:36,440 זה פשוט מוחק חלק שורה מהשולחן שלנו 933 00:45:36,440 --> 00:45:38,860 שבו יש לנו כמה תנאים ספציפיים. 934 00:45:38,860 --> 00:45:41,870 במקרה זה, התנאים הם טור שווה משהו. 935 00:45:41,870 --> 00:45:43,460 אז רק דוגמה קטנה לכך. 936 00:45:43,460 --> 00:45:49,100 אם יש לנו טבלה זו ממש כאן ואנחנו הכנס אותו לשולחן, ערכים אלה, 937 00:45:49,100 --> 00:45:50,400 שיכניס שורה חדשה. 938 00:45:50,400 --> 00:45:56,380 ואם היו לנו אוטומטית תוספת, היית זה רק להגדיל הזהות שלנו 0-1 ל -2. 939 00:45:56,380 --> 00:46:00,010 >> אם בחרו את כל תלמידים מ, זה רק מחזיר את כל שדות ואת כל השורות. 940 00:46:00,010 --> 00:46:02,430 איפה שנה היא גדולה יותר או שווה לשנת 2016, 941 00:46:02,430 --> 00:46:04,390 שאחזור רק חנה ואת עצמי. 942 00:46:04,390 --> 00:46:08,360 ואז אם רק נבחר id שנה ושנה מתלמידים 943 00:46:08,360 --> 00:46:11,710 שבו הבית הוא בית קאבוט, ש היה, שוב, לחזור חנה ואת עצמי. 944 00:46:11,710 --> 00:46:14,430 >> אז אם אנחנו נמחקו מתלמידים שבו שם שווה לרוב, 945 00:46:14,430 --> 00:46:16,760 שימחק את כל השורה. 946 00:46:16,760 --> 00:46:19,696 ואז אם אנו קובעים את שם, תלמידי UPDATE 947 00:46:19,696 --> 00:46:21,570 שם SET שווה לךייבן איפה הבית הוא שווה 948 00:46:21,570 --> 00:46:27,010 בית קאבוט, שהולך ללכת ל שורות אלה ולאחר מכן לעדכן את השם. 949 00:46:27,010 --> 00:46:31,470 >> ואז כמה סוגי נתונים SQL הם CHAR, varchar, INT, ולצוף. 950 00:46:31,470 --> 00:46:32,760 אלה הם משחק הוגן. 951 00:46:32,760 --> 00:46:36,740 הייתי הולך שוב ולוודא שאתה יודע 952 00:46:36,740 --> 00:46:40,930 ויש להם על גיליון לרמות שלך, מה כל אחת מדמויות אלה 953 00:46:40,930 --> 00:46:44,140 היה בשימוש במשך, מה אתה השתמשת בהם על psets, 954 00:46:44,140 --> 00:46:48,050 ולוודא שאתה מכיר ו נוח עם הצורך לבחור 955 00:46:48,050 --> 00:46:51,450 מסוגי נתונים שונים בpset. 956 00:46:51,450 --> 00:46:51,950 כֵּן. 957 00:46:51,950 --> 00:46:54,300 >> קהל: מה היה מאוחסן שולחן ש? 958 00:46:54,300 --> 00:46:57,119 כן, שבו מאוחסנת בטבלה זו? 959 00:46:57,119 --> 00:46:59,160 MARIA ZLATKOVA: ובכן, עכשיו, זה לא מאוחסן. 960 00:46:59,160 --> 00:47:00,700 בכל מקרה, שבו מאוחסנת בטבלה זו? 961 00:47:00,700 --> 00:47:04,503 אבל זה יכול להיות מאוחסן במסד נתוני SQL. 962 00:47:04,503 --> 00:47:07,330 >> קהל: ואיפה הוא מסד נתונים SQL? 963 00:47:07,330 --> 00:47:11,200 במחשב, באינטרנט איפשהו, השרת? 964 00:47:11,200 --> 00:47:15,000 >> MARIA ZLATKOVA: זה יכול להיות מספר דברים שונים. 965 00:47:15,000 --> 00:47:19,690 >> חנה בלומברג: יש לנו ממשק עם שולחנות SQL בעיקר עם phpMyAdmin. 966 00:47:19,690 --> 00:47:22,060 כדי שנוכל לשאול את השרת לאחסן אותם עבורנו. 967 00:47:22,060 --> 00:47:23,830 אנו יכולים לאחסן אותם במחשב שלנו. 968 00:47:23,830 --> 00:47:27,950 >> MARIA ZLATKOVA: זה פשוט תלוי ב איך אתה רוצה לעשות את זה בעצמך. 969 00:47:27,950 --> 00:47:30,075 אבל אנחנו כבר אחסון שלהם, כמו חנה ציינו, 970 00:47:30,075 --> 00:47:31,755 על phpMyAdmin, שנמצא במצב מקוון. 971 00:47:31,755 --> 00:47:36,550 972 00:47:36,550 --> 00:47:39,280 ואז הדרך בה אנו משתמשים ב PHP ו- SQL, אנו מאחסנים אותו 973 00:47:39,280 --> 00:47:43,450 לכמה משתנה מה ששאלנו ל. 974 00:47:43,450 --> 00:47:48,370 >> אז אם אנו בוחרים כל מההיסטוריה שם user_id שווה מזהה ההפעלה, 975 00:47:48,370 --> 00:47:53,900 שבחר את כל השורות לאדם הספציפי ש 976 00:47:53,900 --> 00:47:58,327 נרשם מההיסטוריה שולחן ולמיין אותם לשורות. 977 00:47:58,327 --> 00:48:00,410 דבר מגניב לדעת שהפונקציה השאילתה של CS50 978 00:48:00,410 --> 00:48:02,180 מגן מפני תגי הזרקת SQL. 979 00:48:02,180 --> 00:48:07,420 זה רק אומר שזה עושה בטוח הקלט שהוא נכנס הוא נכון 980 00:48:07,420 --> 00:48:09,920 וכי מי ש נכנס הקלט 981 00:48:09,920 --> 00:48:15,100 לא מנסה קלט כמה זדוני קוד לאו לרדת השולחנות שלנו 982 00:48:15,100 --> 00:48:17,305 או למחוק את כל מה בתוך מסד הנתונים שלנו. 983 00:48:17,305 --> 00:48:20,060 984 00:48:20,060 --> 00:48:23,400 >> סקירה מהירה של מודל הדגם צפה בקר, 985 00:48:23,400 --> 00:48:27,360 זה פשוט דרך של ארגון ולחשוב על קוד. 986 00:48:27,360 --> 00:48:29,100 זה שוב, הפרדיגמה עיצוב. 987 00:48:29,100 --> 00:48:33,380 מה שזה אומר הוא ש can-- וזה תרגול טוב 988 00:48:33,380 --> 00:48:37,790 להפריד חלקים שונים של הקוד ואת מה שהם שלנו 989 00:48:37,790 --> 00:48:40,530 לשלוט לשלוש פרדיגמות אלה. 990 00:48:40,530 --> 00:48:46,700 >> אז לדעתנו הוא לרוב שלנו תבניות, הפריסה שלנו, בדרך 991 00:48:46,700 --> 00:48:48,260 שהצבנו איך הקוד שלנו נראה. 992 00:48:48,260 --> 00:48:55,190 זה בעיקר קבצי CSS שלנו ואת הדרך שהגדרנו את העיצוב של הקוד שלנו, 993 00:48:55,190 --> 00:48:55,710 באופן בסיסי. 994 00:48:55,710 --> 00:48:59,280 בקר שלנו הוא בעיקר מה ש אנחנו כבר עושים עם קבצי PHP. 995 00:48:59,280 --> 00:49:03,030 אז שוב, עבודה עם מידע שיש לנו 996 00:49:03,030 --> 00:49:06,700 ואיך שהגדרה מידע משמש, 997 00:49:06,700 --> 00:49:10,660 ולאחר מכן העברת מידע ש גם על התצוגה או המודל. 998 00:49:10,660 --> 00:49:13,880 והמודל, אופן שבו יש לנו כבר משתמשים הוא כבר בסיס הנתונים שלנו, 999 00:49:13,880 --> 00:49:17,510 אז איפה המידע שלנו הוא מאוחסן כך שיש אי שם 1000 00:49:17,510 --> 00:49:21,490 לחיות ב, וכל אחד מ קוד המתייחס לדרך 1001 00:49:21,490 --> 00:49:25,410 כי אנחנו מקבלים מידע זה או דרך שאנחנו לעדכן את המידע הזה. 1002 00:49:25,410 --> 00:49:28,940 1003 00:49:28,940 --> 00:49:33,200 >> אז במודל MVC, HTTP בקשות נשלחות לשרת אינטרנט. 1004 00:49:33,200 --> 00:49:36,220 לאחר מכן, מפרש בקר הבקשה מהמשתמש 1005 00:49:36,220 --> 00:49:38,260 ולאחר מכן מאמת את קלט המשתמש. 1006 00:49:38,260 --> 00:49:41,580 זה אופציונאלי שיש לנו בקר תקשורת 1007 00:49:41,580 --> 00:49:44,000 עם מודל, כך משהו כמו מסד הנתונים שלנו 1008 00:49:44,000 --> 00:49:47,500 או חלק מהפונקציונליות אחרת המעביר מידע. 1009 00:49:47,500 --> 00:49:50,340 ולבסוף, בקר עובר מידע על הנוף 1010 00:49:50,340 --> 00:49:52,090 כך שהוא יכול להיות שניתנו ושהוא יכול 1011 00:49:52,090 --> 00:49:55,860 להיות גלוי לכל אדם גישה לדף האינטרנט. 1012 00:49:55,860 --> 00:49:58,440 1013 00:49:58,440 --> 00:50:01,340 >> יש שאלות? 1014 00:50:01,340 --> 00:50:01,840 מדהים. 1015 00:50:01,840 --> 00:50:04,530 1016 00:50:04,530 --> 00:50:08,469 אז שוב, המודל, תפקידה, שוב, 1017 00:50:08,469 --> 00:50:11,260 הוא אחסון מתמשך של מידע, ניהול וארגון מידע. 1018 00:50:11,260 --> 00:50:13,890 ומה שראינו בכך כה הוא מסד נתוני MySQL 1019 00:50:13,890 --> 00:50:16,200 ואת כל קבצי נתונים שעשויים להשתמש. 1020 00:50:16,200 --> 00:50:20,580 >> צפה ב, הצגה של מידע ל המשתמש, ממשק המשתמש, או ממשק משתמש. 1021 00:50:20,580 --> 00:50:22,350 והדוגמא לכך הוא HTML. 1022 00:50:22,350 --> 00:50:23,950 ואז אולי יש לנו PHP המינימלי. 1023 00:50:23,950 --> 00:50:28,360 אז ללולאה שסובב הם על הנתונים שהדפיסו 1024 00:50:28,360 --> 00:50:30,720 הוא חלק מהנוף, כ בניגוד לבקר. 1025 00:50:30,720 --> 00:50:35,660 ואז הרבה קבצי PHP שלנו נופל לקטגוריה בקר. 1026 00:50:35,660 --> 00:50:38,410 זה פשוט מטפל בבקשות משתמש ו מקבל מידע מהמודל. 1027 00:50:38,410 --> 00:50:42,880 1028 00:50:42,880 --> 00:50:45,590 >> לקפוץ לתוך המסמך מודל אובייקטים, זה רק 1029 00:50:45,590 --> 00:50:47,700 מתייחס לאופן HTML מסמכים מאורגנים. 1030 00:50:47,700 --> 00:50:51,600 והם מאורגנים בעץ מבנה שיש היררכיה. 1031 00:50:51,600 --> 00:50:56,720 אז אם יש לנו גישה ל[ לא ברור] ייצוג של המסמך, 1032 00:50:56,720 --> 00:51:02,750 אנחנו יכולים לעבוד עם המסמך, כמו אנחנו לתפעל אובייקטים בעצם. 1033 00:51:02,750 --> 00:51:06,630 >> וכדי לעשות את זה קצת יותר ברור, כאשר 1034 00:51:06,630 --> 00:51:10,540 יש לנו הרבה משלנו תגים שונים מגיבים 1035 00:51:10,540 --> 00:51:12,590 למסלולים שונים בעץ שלנו. 1036 00:51:12,590 --> 00:51:17,070 ולאחר מכן לדוגמא זו, אנו יש לי צומת המסמך מתחילה. 1037 00:51:17,070 --> 00:51:20,010 יש לנו, אז, צומת HTML שלנו שמתפצל לראש והגוף. 1038 00:51:20,010 --> 00:51:22,810 יש ראש כותרת ולאחר מכן כותרת מכילה שלום, עולם. 1039 00:51:22,810 --> 00:51:24,860 והגוף שלנו פשוט מכיל שלום, עולם גם כן. 1040 00:51:24,860 --> 00:51:28,700 1041 00:51:28,700 --> 00:51:31,900 >> אז שאלות על כל אחד מ דברים שאנחנו מכוסים עד כה? 1042 00:51:31,900 --> 00:51:35,891 ואם לא, חנה להשתלט על עם JavaScript. 1043 00:51:35,891 --> 00:51:36,390 מדהים. 1044 00:51:36,390 --> 00:51:37,473 >> חנה בלומברג: בסדר, מגניב. 1045 00:51:37,473 --> 00:51:40,980 אם כל דבר בא עם PHP או HTML, או כל החומר מריה מכוסה, 1046 00:51:40,980 --> 00:51:42,700 אנחנו תמיד יכולים להשהות. 1047 00:51:42,700 --> 00:51:46,430 אנחנו עושים יותר טובים ב שוב, כל כך מדהים. 1048 00:51:46,430 --> 00:51:48,770 ורק כדי לחזור מהר מאוד לזה, 1049 00:51:48,770 --> 00:51:51,010 אם אתה מסתכל על כל הבחינה של השנה האחרונה, זה 1050 00:51:51,010 --> 00:51:54,120 עולה either-- כאן הוא כמה HTML, להפוך את התרשים הזה. 1051 00:51:54,120 --> 00:51:58,380 או הנה תרשים זה, לעשות קצת HTML, כך בהחלט לתרגל את זה. 1052 00:51:58,380 --> 00:52:01,500 ואז זה אחד מובטח שאלה שאתה יכול לקבל זכות. 1053 00:52:01,500 --> 00:52:02,000 מגניב. 1054 00:52:02,000 --> 00:52:04,510 אז בואו נדבר על JavaScript ואיך זה קצת 1055 00:52:04,510 --> 00:52:09,130 שונה משפות כמו PHP ו C, שתי שפות שראינו לפני כן. 1056 00:52:09,130 --> 00:52:10,780 אז מספר אחד, זה שהוקלד באופן רופף. 1057 00:52:10,780 --> 00:52:14,630 זה כמו PHP, אבל בניגוד לג 1058 00:52:14,630 --> 00:52:15,890 >> זה שפה פירשה. 1059 00:52:15,890 --> 00:52:19,870 שוב, זה כמו PHP, בניגוד לג וזה 1060 00:52:19,870 --> 00:52:24,630 הוא הולך כדי לאפשר לנו use-- זה עובד ממש יפה עם דפי אינטרנט. 1061 00:52:24,630 --> 00:52:28,350 זה הולך כדי לאפשר לנו לתפעל התוכן ואיך זה נראה 1062 00:52:28,350 --> 00:52:30,300 ומה הוא עושה. 1063 00:52:30,300 --> 00:52:32,330 >> אנחנו הולכים לראות קצת אייאקס. 1064 00:52:32,330 --> 00:52:36,140 זה מאפשר לנו לתקשר אסינכרוני עם שרתים שונים 1065 00:52:36,140 --> 00:52:37,950 ולקבל מידע. 1066 00:52:37,950 --> 00:52:42,820 וזה הדבר שבאמת מפריד JavaScript מPHP ו- C 1067 00:52:42,820 --> 00:52:45,590 הוא שזה בצד הלקוח. 1068 00:52:45,590 --> 00:52:49,860 שני PHP ו- C הם בדרך כלל בצד שרת. 1069 00:52:49,860 --> 00:52:51,960 >> על פי רוב ו כמעט כל מה ש 1070 00:52:51,960 --> 00:52:53,900 שראינו, לפחות ב המעמד הזה, JavaScript 1071 00:52:53,900 --> 00:52:57,040 פועל על צד הלקוח, מה שאומר ש שהדפדפן הוא למעשה 1072 00:52:57,040 --> 00:52:58,597 אחראי להפעלתו. 1073 00:52:58,597 --> 00:53:01,180 וזה אומר שאנחנו לא צריך אינטראקציה עם השרת. 1074 00:53:01,180 --> 00:53:04,380 אז זה אומר שזה יכול להיות הרבה יותר מהר כי זה בעצם רק זה Chrome, 1075 00:53:04,380 --> 00:53:10,420 זה ספארי, זה פיירפוקס, כל מה שאתה להשתמש בעצם פועל JavaScript שלך. 1076 00:53:10,420 --> 00:53:12,290 >> קהל: מה אסינכרוני אומר? 1077 00:53:12,290 --> 00:53:13,620 >> חנה בלומברג: אה, מה אין אסינכרוני אומר? 1078 00:53:13,620 --> 00:53:14,250 שאלה גדולה. 1079 00:53:14,250 --> 00:53:17,890 אסינכרוני means-- ובכן, את התוכן שבו 1080 00:53:17,890 --> 00:53:22,140 אנחנו משתמשים בו הוא, בסדר, יוצר דף אינטרנט 1081 00:53:22,140 --> 00:53:23,860 ואנחנו צריכים לקבל קצת מידע. 1082 00:53:23,860 --> 00:53:28,250 אז עם הדוגמא של mashup, קצת מידע שעשויים אנחנו רוצים 1083 00:53:28,250 --> 00:53:30,580 הוא כותרות מאמרים. 1084 00:53:30,580 --> 00:53:33,330 עכשיו, אנחנו could-- אפשרות אחת הוא לעשות את זה באופן סינכרוני 1085 00:53:33,330 --> 00:53:37,940 וזה אומר בואו לעצור, ללכת לקבל את המאמר, 1086 00:53:37,940 --> 00:53:41,275 לקבל בחזרה את המאמר, ולאחר מכן להבהיר, אבל זה יהיה ממש איטי. 1087 00:53:41,275 --> 00:53:44,150 זה יהיה חווית משתמש גרועה משום שהיית פשוט יושב 1088 00:53:44,150 --> 00:53:46,630 שם מחכה למשהו להגיב. 1089 00:53:46,630 --> 00:53:50,020 >> אסינכרוני אומר אנחנו להמשיך ללכת על העסק שלנו, 1090 00:53:50,020 --> 00:53:52,529 טיוח הדף, ו אנחנו נשלח את בקשה 1091 00:53:52,529 --> 00:53:54,570 זה סוג של הולך לקרות ברקע. 1092 00:53:54,570 --> 00:53:57,610 אני חושב שאנו משתמשים בדוגמא ב הרצאה של קורא רוב ואומרים, 1093 00:53:57,610 --> 00:53:59,980 היי, אתה יכול להסתכל למעלה זה לי ולחזור אליי, 1094 00:53:59,980 --> 00:54:02,870 בניגוד לרק אני מחכה בטלפון. 1095 00:54:02,870 --> 00:54:07,020 אז אסינכרוני אומר שזה קורה ברקע מאתנו 1096 00:54:07,020 --> 00:54:08,676 במקביל. 1097 00:54:08,676 --> 00:54:10,400 >> שאלה גדולה. 1098 00:54:10,400 --> 00:54:11,830 משהו נוסף? 1099 00:54:11,830 --> 00:54:12,330 גדול. 1100 00:54:12,330 --> 00:54:15,020 אנחנו נקפוץ הרבה יותר ל בקשות אסינכרוני עם אייאקס. 1101 00:54:15,020 --> 00:54:18,287 >> קהל: האם JavaScript-- בי עושה זה ייפול עם Model-View-בקר? 1102 00:54:18,287 --> 00:54:19,620 חנה בלומברג: שאלה גדולה. 1103 00:54:19,620 --> 00:54:23,320 איפה עושה JavaScript סתיו עם Model-View-בקר? 1104 00:54:23,320 --> 00:54:23,930 HM. 1105 00:54:23,930 --> 00:54:28,350 אני מניח שזה יכול fall-- ולכן אנחנו בדרך כלל לא 1106 00:54:28,350 --> 00:54:31,340 רוצה squish אותו של הפרדיגמה, אבל אני מניח שהייתי אומר, 1107 00:54:31,340 --> 00:54:34,280 אוקיי, אז JavaScript למעשה הולך לאפשר 1108 00:54:34,280 --> 00:54:37,587 לנו לאסוף נתונים, לפרש את הנתונים, בעצם לעשות 1109 00:54:37,587 --> 00:54:38,920 דברים משמעותיים עם נתונים. 1110 00:54:38,920 --> 00:54:41,100 באופן זה, זה מאוד כמו שליטה. 1111 00:54:41,100 --> 00:54:43,900 >> אבל זה גם הולך כדי לאפשר לנו להציג את הדברים ודברים דפוס. 1112 00:54:43,900 --> 00:54:47,021 באופן זה, זה מאוד כמו נוף. 1113 00:54:47,021 --> 00:54:47,520 כֵּן. 1114 00:54:47,520 --> 00:54:51,710 אז זה סוג של כמו PHP ב בו סוג של יכולה להיות שניהם. 1115 00:54:51,710 --> 00:54:53,330 שאלה טובה. 1116 00:54:53,330 --> 00:54:55,209 משהו נוסף? 1117 00:54:55,209 --> 00:54:56,000 בסדר, מדהים. 1118 00:54:56,000 --> 00:54:57,120 נע ימינה לאורך. 1119 00:54:57,120 --> 00:54:59,110 >> אז בואו לראות דוגמא איך אנחנו יכולים להשתמש 1120 00:54:59,110 --> 00:55:02,250 JavaScript באחת מהתוכניות שלנו באינטרנט. 1121 00:55:02,250 --> 00:55:05,680 אז אני אשקול את זה index.html עם חבורה של HTML. 1122 00:55:05,680 --> 00:55:08,800 והדבר שאני רוצה אותך להתמקד בהוא תג התסריט הזה. 1123 00:55:08,800 --> 00:55:13,280 וזה אומר, בסדר, אני רוצה להריץ כמה JavaScript וכאן הוא המקום שבו גר. 1124 00:55:13,280 --> 00:55:15,400 הוא חי בhello.js. 1125 00:55:15,400 --> 00:55:21,120 >> וממש כמו CSS, שיכולנו לשים JavaScript בתוך ה- HTML. 1126 00:55:21,120 --> 00:55:24,000 למה עלולים אנחנו רוצים להפריד אותו? 1127 00:55:24,000 --> 00:55:24,500 כֵּן. 1128 00:55:24,500 --> 00:55:25,486 >> קהל: קל יותר לכתוב מחדש? 1129 00:55:25,486 --> 00:55:26,402 >> חנה בלומברג: כן. 1130 00:55:26,402 --> 00:55:28,450 זה קל יותר לשימוש על פני דפי אינטרנט שונים. 1131 00:55:28,450 --> 00:55:29,980 זה שומר דברים נקיים. 1132 00:55:29,980 --> 00:55:32,090 זה רק אימון טוב. 1133 00:55:32,090 --> 00:55:32,590 מדהים. 1134 00:55:32,590 --> 00:55:33,930 תשובה טובה. 1135 00:55:33,930 --> 00:55:36,690 כל כך טוב, אז זה הולך להיות index.html שלנו. 1136 00:55:36,690 --> 00:55:39,430 ואז כאן הוא שלנו קובץ JavaScript קטנטן. 1137 00:55:39,430 --> 00:55:42,410 >> וכל זה אומר הוא ערני שלום, עולם. 1138 00:55:42,410 --> 00:55:46,040 אז מה שקורה הוא כאשר renders-- דף זה 1139 00:55:46,040 --> 00:55:49,680 כך שאם אתה הולך לכל אתר זה הוא-- כל מה שהולך לקרות 1140 00:55:49,680 --> 00:55:53,330 הוא זה הולך לומר, בסדר, אני הולך להפעיל קוד JavaScript זה. 1141 00:55:53,330 --> 00:55:56,370 וקוד JavaScript זה רק אומר התראת שלום, עולם. 1142 00:55:56,370 --> 00:55:59,090 אז אני הולך לקבל את זה ידידותי מוקפץ קטן. 1143 00:55:59,090 --> 00:56:00,360 >> מגניב? 1144 00:56:00,360 --> 00:56:04,746 זה כמו סוג שלנו הראשון JavaScript תכנית, שלום שלנו, עולם. 1145 00:56:04,746 --> 00:56:07,690 1146 00:56:07,690 --> 00:56:12,190 בואו נסתכל קצת יותר על מה ש התחביר של JavaScript נראה. 1147 00:56:12,190 --> 00:56:16,330 ובמיוחד, בואו להשוות אותו ל C ו- PHP, אשר ראינו לפני. 1148 00:56:16,330 --> 00:56:20,610 >> ב- JavaScript, אנחנו הולכים לי var, השם המשתנה, ולאחר מכן 1149 00:56:20,610 --> 00:56:21,690 הערך האמיתי שלה. 1150 00:56:21,690 --> 00:56:26,170 ואנחנו לא תציינו סוג, רק כמו ב- PHP, אבל מאוד לא כמו בג 1151 00:56:26,170 --> 00:56:28,850 כך למשל, אם אנחנו רוצים כדי לאחסן את הערך 50, 1152 00:56:28,850 --> 00:56:32,490 ב- C, היינו חייב לומר, היי, C, אני רוצה שלם, 1153 00:56:32,490 --> 00:56:35,076 אני הולך לקרוא לזה אני, וערך שלה הוא 50. 1154 00:56:35,076 --> 00:56:36,450 ב- PHP, זה קצת יותר קל. 1155 00:56:36,450 --> 00:56:41,880 אנחנו אומרים, היי, אני רוצה משתנה בשמי וערך שלה הוא 50. 1156 00:56:41,880 --> 00:56:45,890 מאוד דומה, ב- JavaScript, אנחנו אומר היי, אני רוצה משתנה בשם i, 1157 00:56:45,890 --> 00:56:47,080 הערך שלה הוא 50. 1158 00:56:47,080 --> 00:56:52,140 בכל פעם שלאחר מכן שאני משתמש אני, אני לא צריך לכתוב var. 1159 00:56:52,140 --> 00:56:53,810 זה רק אני מנקודה זו ואילך. 1160 00:56:53,810 --> 00:56:58,660 באותו אופן, ב- C, שבו ברגע שאנחנו אומרים int i, אנחנו פשוט להשתמש אני. 1161 00:56:58,660 --> 00:57:00,340 מגניב? 1162 00:57:00,340 --> 00:57:01,800 בסדר. 1163 00:57:01,800 --> 00:57:03,710 >> על מנת להזיז לולאות, למזלנו, כמעט אלה 1164 00:57:03,710 --> 00:57:06,720 נראה exactly-- אני חושב שהם בדיוק כמו מה ש 1165 00:57:06,720 --> 00:57:09,799 לולאות הולכים להיראות כמו ב משהו כמו C שבך ללולאה 1166 00:57:09,799 --> 00:57:11,840 הוא הולך להיות שלוש parts-- אתחול, 1167 00:57:11,840 --> 00:57:13,640 מצב, ועדכון. 1168 00:57:13,640 --> 00:57:15,340 לולאה בזמן, זה נראה אותו הדבר בדיוק. 1169 00:57:15,340 --> 00:57:16,390 אנחנו רק נותנים לו מצב. 1170 00:57:16,390 --> 00:57:18,264 >> ולעשות בזמן לולאה, שוב, בדיוק אותו הדבר. 1171 00:57:18,264 --> 00:57:20,190 אנחנו נותנים לו מצב. 1172 00:57:20,190 --> 00:57:24,510 נניח שאני רוצה לחזר over-- אני רוצה לעשות משהו חמש פעמים. 1173 00:57:24,510 --> 00:57:27,840 ב- C, אנו עשויים לכתוב לinit אני שווה 0. 1174 00:57:27,840 --> 00:57:30,480 הוא אני פחות מ -5, אני ++. 1175 00:57:30,480 --> 00:57:34,240 הבדל היחיד, ב- JavaScript, במקום לומר int i שווה 0, 1176 00:57:34,240 --> 00:57:36,820 אנחנו אומרים שאני var שווה 0. 1177 00:57:36,820 --> 00:57:38,370 יָפֶה. 1178 00:57:38,370 --> 00:57:41,320 זה ההבדל היחיד. 1179 00:57:41,320 --> 00:57:43,200 כל שאלות על כל זה? 1180 00:57:43,200 --> 00:57:44,160 כֵּן. 1181 00:57:44,160 --> 00:57:48,480 >> קהל: אז ב- PHP, זה אותו הדבר דבר, מלבד אבל כמו משתנה? 1182 00:57:48,480 --> 00:57:49,564 או שזה היה דוגמא var? 1183 00:57:49,564 --> 00:57:50,480 חנה בלומברג: כן. 1184 00:57:50,480 --> 00:57:52,310 אז ב- PHP, זה הולך להיות סימן דולר. 1185 00:57:52,310 --> 00:57:59,450 אז זה הולך $ אני שווה 0, $ הוא אני פחות מ -5, $ i ++. 1186 00:57:59,450 --> 00:58:02,490 שאלה גדולה. 1187 00:58:02,490 --> 00:58:04,570 >> עכשיו בואו נדבר על הצהרות פונקציה. 1188 00:58:04,570 --> 00:58:07,010 ב C, כאשר אנו הכריזו פונקציה, נתנו לזה שם 1189 00:58:07,010 --> 00:58:08,490 ונתנו לו כמה פרמטרים. 1190 00:58:08,490 --> 00:58:10,670 ובתחילת, שכתבנו את הסוג. 1191 00:58:10,670 --> 00:58:12,440 ב- JavaScript, כולנו צריך לעשות הוא לכתוב 1192 00:58:12,440 --> 00:58:15,080 הפונקציה של מילות מפתח ש אומר, היי, JavaScript, 1193 00:58:15,080 --> 00:58:16,570 אני עומד להגדיר פונקציה. 1194 00:58:16,570 --> 00:58:18,520 >> במקרה זה, יש לו שם סכום. 1195 00:58:18,520 --> 00:58:20,820 וזה לוקח שני טיעונים, x ו- y. 1196 00:58:20,820 --> 00:58:23,280 שים לב שלא אכפת לנו על סוגי x ו- y. 1197 00:58:23,280 --> 00:58:26,280 ובדיוק כמו C, יש לנו תמורה זו מילת המפתח, 1198 00:58:26,280 --> 00:58:29,140 כדי שנוכל לעשות משהו כמו x ו- y תמורה. 1199 00:58:29,140 --> 00:58:32,540 >> ועכשיו ברגע שכתבנו את זה ראשון פונקציה, אנו יכולים להשתמש בסכום בכל מקום. 1200 00:58:32,540 --> 00:58:34,740 וזה לגמרי בסדר. 1201 00:58:34,740 --> 00:58:37,530 דבר ממש מגניב אחד על JavaScript שהוא מאוד לא כמו C 1202 00:58:37,530 --> 00:58:40,770 היא שפונקציות יכולה להיות מטופלים כמו ערכים. 1203 00:58:40,770 --> 00:58:43,895 אז אנחנו יכולים לעשות משהו כמו כאן שבו אני מניח שאני מכסה את זה up-- 1204 00:58:43,895 --> 00:58:46,400 כיסיתי את סכום var part-- ואנחנו רק אמרו 1205 00:58:46,400 --> 00:58:49,850 XY הפונקציה שווה x תמורה בתוספת y. 1206 00:58:49,850 --> 00:58:52,140 >> זה מה שייקרא פונקציה אנונימית. 1207 00:58:52,140 --> 00:58:53,920 זה פונקציה ללא שם. 1208 00:58:53,920 --> 00:58:56,290 ואילו זה אומר פונקציה סכום, בלה, בלה, בלה, 1209 00:58:56,290 --> 00:58:59,340 זה הייתי אומר רק פונקציה. 1210 00:58:59,340 --> 00:59:02,020 אבל עכשיו למרות שיש לי פונקציה אנונימית זה, 1211 00:59:02,020 --> 00:59:03,630 פונקציה שהיא באמת רק ערך. 1212 00:59:03,630 --> 00:59:05,160 אנחנו יכולים להתייחס אליו כמו ערך. 1213 00:59:05,160 --> 00:59:10,180 >> אז אנחנו יכולים לשמור אותו במשתנה אותו דרך בה אנו יכולים לאחסן 50 במשתנים. 1214 00:59:10,180 --> 00:59:13,870 אז אנו יכולים לומר, בסדר, אני רוצה משתנה, זה נקרא סכום, 1215 00:59:13,870 --> 00:59:16,011 וזה פונקציה זו. 1216 00:59:16,011 --> 00:59:18,760 אז שני הדברים האלה הם בעצם הולך לעשות בדיוק את אותו הדבר, 1217 00:59:18,760 --> 00:59:21,576 אבל התחביר הוא קצת שונה וסוג של פתק כיף. 1218 00:59:21,576 --> 00:59:22,076 כֵּן. 1219 00:59:22,076 --> 00:59:25,548 >> קהל: אז אתה יכול לקרוא ל פונקציה שהייתה אלמוני באומרו, 1220 00:59:25,548 --> 00:59:28,244 סוגריים סכום 2, 5? 1221 00:59:28,244 --> 00:59:29,160 חנה בלומברג: כן. 1222 00:59:29,160 --> 00:59:32,280 אתה יכול לקרוא לזה בעילום שם פונקציה באותו אופן. 1223 00:59:32,280 --> 00:59:33,350 (, 5 2) היית עושה סכום ;. 1224 00:59:33,350 --> 00:59:36,180 1225 00:59:36,180 --> 00:59:38,200 זה יהיה בסדר גמור. 1226 00:59:38,200 --> 00:59:41,575 >> אם אני לא עושה את סכום var שווה פונקציה, אם אני פשוט נמחק 1227 00:59:41,575 --> 00:59:45,480 זה-- אני יודע שזה ביד שלי, אבל להעמיד פנים שנמחקתי זה-- אז 1228 00:59:45,480 --> 00:59:46,964 הפונקציה שהיא סוג של פשוט נעלמה. 1229 00:59:46,964 --> 00:59:49,630 אתה לא יכול להשתמש בו שוב, כי אין לך לזה שם. 1230 00:59:49,630 --> 00:59:53,497 קשה להתייחס למשהו אתה לא יודע איך לקרוא ל. 1231 00:59:53,497 --> 00:59:54,080 שאלה טובה. 1232 00:59:54,080 --> 00:59:54,580 כֵּן. 1233 00:59:54,580 --> 00:59:59,580 >> קהל: האם אתה יכול להפנות סכום ב מקומות אחרים עם הערך של X ועוד Y? 1234 00:59:59,580 --> 01:00:01,940 >> חנה בלומברג: האם אתה יכול סכום התייחסות במקומות אחרים 1235 01:00:01,940 --> 01:00:03,360 עם x הערך בתוספת y? 1236 01:00:03,360 --> 01:00:05,130 אני לא לגמרי בטוח למה אתה מתכוון. 1237 01:00:05,130 --> 01:00:10,582 >> קהל: חצי אנונימי אז עבר שלך פונקציה היא הסכום שווה לזה 1238 01:00:10,582 --> 01:00:14,452 פונקציה אנונימית, כך הסכום היא עכשיו משתנה שאתה can-- 1239 01:00:14,452 --> 01:00:15,410 חנה בלומברג: ימין. 1240 01:00:15,410 --> 01:00:18,980 אז הסכום הוא משתנה, אבל זה מעשה-- 1241 01:00:18,980 --> 01:00:23,770 כך הסכום הוא משתנה ש ערך הוא הפונקציה. 1242 01:00:23,770 --> 01:00:27,030 אז זה הוא פונקציה, שהיא סוג של דבר מוזר לעטוף את הראש סביב 1243 01:00:27,030 --> 01:00:29,880 מאז ששחקנו עם C ואתה לא יכולים לעשות את זה בג 1244 01:00:29,880 --> 01:00:32,679 אבל עכשיו אנחנו יכולים לקרוא לסיכום אותו אופן שאנו יכולים לקרוא לסכום כאן. 1245 01:00:32,679 --> 01:00:33,220 קהל: אישור. 1246 01:00:33,220 --> 01:00:33,970 חנה בלומברג: כן. 1247 01:00:33,970 --> 01:00:34,553 שאלה טובה. 1248 01:00:34,553 --> 01:00:35,438 כֵּן. 1249 01:00:35,438 --> 01:00:39,862 >> קהל: אז אנחנו לא משתמשים ב אב טיפוס בPHP או JavaScript? 1250 01:00:39,862 --> 01:00:42,070 חנה בלומברג: לא, אנחנו לא צריך להשתמש באבות טיפוס, 1251 01:00:42,070 --> 01:00:43,880 במיוחד ב- JavaScript. 1252 01:00:43,880 --> 01:00:49,380 דבר בפועל רע כל כך שאני הולך להגיד שאתה לא צריך לעשות 1253 01:00:49,380 --> 01:00:52,620 הוא שאתה לא צריך לכתוב לי var = 50. 1254 01:00:52,620 --> 01:00:54,840 אתה יכול פשוט להתחיל לעשות i = 50. 1255 01:00:54,840 --> 01:00:57,490 ויגרום לי משתנה גלובלי פשוט. 1256 01:00:57,490 --> 01:01:00,550 >> זה תרגול רע מאוד אף פעם לא אומר לי במפורש var, 1257 01:01:00,550 --> 01:01:01,800 אבל זה משהו שאתה יכול לעשות. 1258 01:01:01,800 --> 01:01:03,591 המתורגמן לא הולך לצעוק עליך. 1259 01:01:03,591 --> 01:01:05,920 JavaScript היא יפה כמו, אתה יכול לעשות מה שאתה רוצה. 1260 01:01:05,920 --> 01:01:09,301 1261 01:01:09,301 --> 01:01:09,800 אה סליחה. 1262 01:01:09,800 --> 01:01:10,300 יש שתיים. 1263 01:01:10,300 --> 01:01:12,150 במכנסיים הכתומים. 1264 01:01:12,150 --> 01:01:13,190 לך על זה. 1265 01:01:13,190 --> 01:01:14,390 >> קהל: לא, אתה הולך ראשון. 1266 01:01:14,390 --> 01:01:16,765 >> קהל: לא, אני רק אומר לא היה לי היד שלי. 1267 01:01:16,765 --> 01:01:20,248 1268 01:01:20,248 --> 01:01:20,748 אוקיי. 1269 01:01:20,748 --> 01:01:26,604 אז אם היית קורא כי בפעם הראשונה, עכשיו סיכום, 1270 01:01:26,604 --> 01:01:29,864 אנחנו קוראים לזה באותו אופן, x, y, כמו בכל פעם? 1271 01:01:29,864 --> 01:01:30,780 חנה בלומברג: כן. 1272 01:01:30,780 --> 01:01:32,572 אז שני אלה במהות לעשות את אותו הדבר. 1273 01:01:32,572 --> 01:01:35,113 קהל: ומה היתרון שימוש באחד או אחר? 1274 01:01:35,113 --> 01:01:37,500 חנה בלומברג: לא יתרון שימוש באחד או אחר. 1275 01:01:37,500 --> 01:01:40,080 רק רציתי להראות לך שני חלקים שונים של תחביר. 1276 01:01:40,080 --> 01:01:42,770 הרבה פעמים שבי אנונימי יש לי מטרת פונקציות 1277 01:01:42,770 --> 01:01:48,220 הוא אם לטענה אחרת פונקציה צריכה להיות פונקציה. 1278 01:01:48,220 --> 01:01:50,600 ואנו רואים כי ב רק שני עם אייאקס. 1279 01:01:50,600 --> 01:01:53,577 >> אז אם זה לא הגיוני, לאחסן אותו בחלק האחורי של הראש שלך. 1280 01:01:53,577 --> 01:01:55,660 זה המקום שבי אנונימי פונקציה עשויה להיות שימושית 1281 01:01:55,660 --> 01:01:58,284 כי זה לא באמת שווה נותן לו שם מאז אנחנו רק 1282 01:01:58,284 --> 01:01:59,443 הולך להשתמש בו פעם אחת. 1283 01:01:59,443 --> 01:02:00,370 כֵּן. 1284 01:02:00,370 --> 01:02:03,635 >> קהל: אם x ו- y שינוי מאוחר יותר ב, תסכם לשנות גם כן? 1285 01:02:03,635 --> 01:02:06,510 חנה בלומברג: אם x ו- y שינוי בשלב מאוחר יותר, יהיה לסכם לשנות גם כן? 1286 01:02:06,510 --> 01:02:08,840 אז זה בעצם אני חושב משהו שהוא, 1287 01:02:08,840 --> 01:02:12,260 שוב, זה פשוט מרגיש שונה מאוד מג זה לא ערך. 1288 01:02:12,260 --> 01:02:13,620 זה לא 5. 1289 01:02:13,620 --> 01:02:15,550 זה רק הפונקציה עצמה. 1290 01:02:15,550 --> 01:02:19,110 אז ברגע שאתה נותן לו פרמטרים, אז אתה בעצם תוכל לחשב ערך. 1291 01:02:19,110 --> 01:02:21,193 >> MARIA ZLATKOVA: ואז אתה יכול לקרוא לפונקציה 1292 01:02:21,193 --> 01:02:23,272 ולהשתמש בו כדי לקבל קצת ערך. 1293 01:02:23,272 --> 01:02:24,230 חנה בלומברג: ימין. 1294 01:02:24,230 --> 01:02:25,250 בְּדִיוּק. 1295 01:02:25,250 --> 01:02:25,863 כֵּן. 1296 01:02:25,863 --> 01:02:27,946 >> קהל: אז אם אתה רק לאחסן אותו במשתנה, 1297 01:02:27,946 --> 01:02:31,430 כמו x var שווה סכום של שתי values-- 1298 01:02:31,430 --> 01:02:32,420 >> חנה בלומברג: כן. 1299 01:02:32,420 --> 01:02:35,320 אז רק אתה יכול לעשות סכום var שווה סכום של שני ערכים. 1300 01:02:35,320 --> 01:02:37,670 כֵּן. 1301 01:02:37,670 --> 01:02:38,680 כל שאלות אחרות? 1302 01:02:38,680 --> 01:02:39,642 כֵּן. 1303 01:02:39,642 --> 01:02:42,047 >> קהל: אבל היית ש לבלבל סכום וסכום? 1304 01:02:42,047 --> 01:02:45,062 כמו אם אתה קורא סכום משתנה, היית קורא את סכום הפונקציה? 1305 01:02:45,062 --> 01:02:45,895 חנה בלומברג: במ"מ. 1306 01:02:45,895 --> 01:02:46,395 מ"מ. 1307 01:02:46,395 --> 01:02:51,253 אם עשה משהו כמו, סכום שווה סכום 2, 5? 1308 01:02:51,253 --> 01:02:53,170 >> קהל: כן. 1309 01:02:53,170 --> 01:02:56,465 >> חנה בלומברג: אני מאמין ש היה להחליף את הערך של סכום. 1310 01:02:56,465 --> 01:02:59,290 אז אחר מעניין דבר על JavaScript 1311 01:02:59,290 --> 01:03:02,950 הוא שמשתנה אחד יכול לקחת על חבורה של סוגים שונים. 1312 01:03:02,950 --> 01:03:03,790 תרגול רע. 1313 01:03:03,790 --> 01:03:06,280 אתה לא צריך לעשות משהו כמו מה שאמרת רק. 1314 01:03:06,280 --> 01:03:10,240 >> אבל בC, אם אני מוגדר שווה למספר שלם, 1315 01:03:10,240 --> 01:03:13,570 אנחנו יודעים שזה לא הולך להיות מחרוזת. 1316 01:03:13,570 --> 01:03:15,670 זה לא המקרה ב- JavaScript. 1317 01:03:15,670 --> 01:03:17,770 כן, שאלה טובה. 1318 01:03:17,770 --> 01:03:20,151 משהו נוסף? 1319 01:03:20,151 --> 01:03:20,650 בסדר. 1320 01:03:20,650 --> 01:03:21,850 עושה כל בדיוק בזמן. 1321 01:03:21,850 --> 01:03:23,050 שמירה הולך. 1322 01:03:23,050 --> 01:03:25,200 בסדר. 1323 01:03:25,200 --> 01:03:27,780 >> אם נתבונן במערך ב- JavaScript, הנה 1324 01:03:27,780 --> 01:03:30,250 דוגמא מהירה של מערך של מחרוזות. 1325 01:03:30,250 --> 01:03:31,967 ומערכים יכולים לגדול באופן דינמי. 1326 01:03:31,967 --> 01:03:33,675 אין להם גודל קבוע באותה הדרך 1327 01:03:33,675 --> 01:03:37,990 שהם עושים בג אנחנו יכולים לגשת ל אלמנטים עם רק סוגריים מרובעים. 1328 01:03:37,990 --> 01:03:41,720 >> זה נראה הרבה כמו PHP והרבה כמו C, שבו אנחנו יכולים לומר, במקרה זה, 1329 01:03:41,720 --> 01:03:48,360 אם אני רוצה את המילה JavaScript, הייתי אל ARR סוגריים מרובעים עם 0, 1, 2. 1330 01:03:48,360 --> 01:03:51,450 1331 01:03:51,450 --> 01:03:55,390 ואז אם אתה זוכר ב- C כאשר אנו רציתי לקבל את אורכו של מערך, 1332 01:03:55,390 --> 01:03:56,820 זה היה ממש מעצבן. 1333 01:03:56,820 --> 01:03:58,460 אבל בJavaScript, סופר קל. 1334 01:03:58,460 --> 01:03:59,910 כל מה שאנחנו עושים, .length. 1335 01:03:59,910 --> 01:04:01,120 נותן לו את האורכים. 1336 01:04:01,120 --> 01:04:01,892 זה הכל. 1337 01:04:01,892 --> 01:04:03,140 >> קהל: זה פשוט. 1338 01:04:03,140 --> 01:04:05,306 >> חנה בלומברג: כן, עושה החיים שלך הרבה יותר קל. 1339 01:04:05,306 --> 01:04:08,950 1340 01:04:08,950 --> 01:04:11,560 אישור, לא object-- שם. 1341 01:04:11,560 --> 01:04:15,480 אובייקטים בתחושת JavaScript הרבה כמו structs בC 1342 01:04:15,480 --> 01:04:18,280 ומערכים אסוציאטיביים ב- PHP. 1343 01:04:18,280 --> 01:04:20,270 אז מה שראינו הרבה JSON, ש 1344 01:04:20,270 --> 01:04:23,150 עומד לסימון אובייקט JavaScript. 1345 01:04:23,150 --> 01:04:25,550 וזה בעצם דרך של בניית הנתונים שלנו. 1346 01:04:25,550 --> 01:04:27,880 >> אז בואו לראות דוגמא, כנראה הקל ביותר. 1347 01:04:27,880 --> 01:04:32,540 אז הנה דוגמא לאובייקט שמאחסן את הכיתה, CS50. 1348 01:04:32,540 --> 01:04:37,790 וכשאני אומר בכיתה, אני מתכוון כמובן, לא like-- כן, כמובן, CS50. 1349 01:04:37,790 --> 01:04:40,730 ותראה ש כל דבר באובייקט 1350 01:04:40,730 --> 01:04:43,526 הולך להיות כלול בסוגריים מסולסלים. 1351 01:04:43,526 --> 01:04:48,260 >> ואנחנו מתחילים לקשר שמות שדות או מפתחות עם הערכים השונים. 1352 01:04:48,260 --> 01:04:52,920 אז אתה יכול להתחיל לראות איך מסוג זה מרגיש כמו מערך אסוציאטיבי ב- PHP. 1353 01:04:52,920 --> 01:04:57,450 אז אנחנו הולכים ללשייך את השדה או המפתח שם, כמובן, עם המחרוזת, 1354 01:04:57,450 --> 01:04:58,510 CS50. 1355 01:04:58,510 --> 01:04:59,940 >> אנחנו הולכים להיות מורה. 1356 01:04:59,940 --> 01:05:00,940 אנחנו הולכים לי TFS. 1357 01:05:00,940 --> 01:05:05,240 אנחנו הולכים להיות מספר psets ואנחנו הולכים רשמנו. 1358 01:05:05,240 --> 01:05:10,720 ודבר מגניב אחד שיש לשים לב לכל יש הדברים האלה סוגים שונים, 1359 01:05:10,720 --> 01:05:12,020 וזה לגמרי בסדר. 1360 01:05:12,020 --> 01:05:15,330 >> זה בסדר לאובייקט, למעשה, זה כנראה צפוי לאובייקט 1361 01:05:15,330 --> 01:05:19,620 יש שילוב של מחרוזות ומספרים וBooleans ומערכים 1362 01:05:19,620 --> 01:05:23,420 וכל דבר אחר שעלולים רוצה להיות בתוך האובייקט שלך. 1363 01:05:23,420 --> 01:05:28,570 ולציין כי אלה הולכים להיות השמות או את המפתחות, ואז אנחנו פשוט 1364 01:05:28,570 --> 01:05:30,300 להגדיר את זה שווה עם קצת מעי גס. 1365 01:05:30,300 --> 01:05:32,015 >> קהל: מה בדיוק עושה JSON אומר? 1366 01:05:32,015 --> 01:05:33,890 חנה בלומברג: מה בדיוק עושה JSON אומר? 1367 01:05:33,890 --> 01:05:36,470 JSON רק עומד ל סימון אובייקט JavaScript. 1368 01:05:36,470 --> 01:05:38,430 זה פשוט דרך של עיצוב. 1369 01:05:38,430 --> 01:05:40,040 כֵּן. 1370 01:05:40,040 --> 01:05:41,800 זוהי דרך של עיצוב הנתונים שלנו. 1371 01:05:41,800 --> 01:05:43,620 >> ב C, זה structs. 1372 01:05:43,620 --> 01:05:45,800 ב- PHP, זה מערכים אסוציאטיביים. 1373 01:05:45,800 --> 01:05:47,120 ב- JavaScript, יש לנו אובייקטים. 1374 01:05:47,120 --> 01:05:48,969 >> קהל: אז CS50 זה אובייקט? 1375 01:05:48,969 --> 01:05:51,010 חנה בלומברג: CS50 הוא האובייקט במקרה זה. 1376 01:05:51,010 --> 01:05:54,830 1377 01:05:54,830 --> 01:05:57,880 עכשיו, איך אנחנו למעשה גישה שדות אלה או לשנות שדות אלה. 1378 01:05:57,880 --> 01:06:03,920 לדוגמא, נניח שהחליטו ש אתה רוצה pset אחד פחות בסמסטר הזה. 1379 01:06:03,920 --> 01:06:06,300 במקום תשע, אנחנו פשוט אצטרך שמונה. 1380 01:06:06,300 --> 01:06:08,240 איך היינו משנה את זה? 1381 01:06:08,240 --> 01:06:09,436 >> הו, דרך הלא נכונה. 1382 01:06:09,436 --> 01:06:11,060 ישנן שתי דרכים שאנחנו יכולים לעשות את זה. 1383 01:06:11,060 --> 01:06:13,490 מספר אחד הוא עם הנקודה סימון ומספר שתיים 1384 01:06:13,490 --> 01:06:15,750 הוא עם סימון הסוגר המרובע. 1385 01:06:15,750 --> 01:06:19,720 כך, למשל, אם אני רציתי לשנות או גישה 1386 01:06:19,720 --> 01:06:26,820 שדה psets באובייקט CS50, מה הייתי עושה הוא CS50.psets, 1387 01:06:26,820 --> 01:06:30,770 לכן השם של נקודת האובייקט שמו של השדה או על המקש. 1388 01:06:30,770 --> 01:06:37,120 >> מאוד דומה, זה בדיוק שווה לעשות CS50, ולאחר מכן 1389 01:06:37,120 --> 01:06:42,050 בסוגריים מרובעים, psets. 1390 01:06:42,050 --> 01:06:42,837 מגניב? 1391 01:06:42,837 --> 01:06:44,298 כֵּן. 1392 01:06:44,298 --> 01:06:47,707 >> קהל: אז JSON מבחינה טכנית JavaScript עדיין, 1393 01:06:47,707 --> 01:06:51,814 למרות בpsets להפריד את זה [לא ברור]? 1394 01:06:51,814 --> 01:06:52,730 חנה בלומברג: בטח. 1395 01:06:52,730 --> 01:06:56,290 אז השאלה היא, הם שווה ערך JavaScript וJSON? 1396 01:06:56,290 --> 01:07:00,750 אז JSON הוא סימון, בעצם אופן שבו אנו כותבים את 1397 01:07:00,750 --> 01:07:02,700 אובייקט מJavaScript. 1398 01:07:02,700 --> 01:07:05,190 אז הם לא בדיוק אותו הדבר. 1399 01:07:05,190 --> 01:07:08,950 >> הייתי אומר JavaScript, יש אובייקטים ב- JavaScript. 1400 01:07:08,950 --> 01:07:12,590 JSON לוקח חפצים אלה ו מדפיס אותם ומציג אותם 1401 01:07:12,590 --> 01:07:15,160 או מאחסן אותם בצורה יפה. 1402 01:07:15,160 --> 01:07:18,110 אז JSON הוא לא תכנות שפת הדרך כי JavaScript הוא. 1403 01:07:18,110 --> 01:07:20,900 זה פשוט הסימון ל האובייקטים שלנו ב- JavaScript. 1404 01:07:20,900 --> 01:07:21,400 כֵּן. 1405 01:07:21,400 --> 01:07:24,144 >> קהל: אז מה בדיוק [לא ברור] להשלים? 1406 01:07:24,144 --> 01:07:25,060 חנה בלומברג: בטח. 1407 01:07:25,060 --> 01:07:27,727 אז זה בעצם לא עושה כלום. 1408 01:07:27,727 --> 01:07:28,935 זוהי רק דרך לגשת. 1409 01:07:28,935 --> 01:07:31,393 אז בואו נגיד שאנחנו רוצים לשנות מספר סטי בעיה 1410 01:07:31,393 --> 01:07:32,450 9-8. 1411 01:07:32,450 --> 01:07:34,383 מה שאנחנו עושים הוא לעשות משהו כמו CS50.psets = 8 ;. 1412 01:07:34,383 --> 01:07:38,500 1413 01:07:38,500 --> 01:07:39,400 >> כן, שאלה גדולה. 1414 01:07:39,400 --> 01:07:40,733 זה רק כדי להראות לך תחביר. 1415 01:07:40,733 --> 01:07:43,620 לא ממש עושה משהו מועיל. 1416 01:07:43,620 --> 01:07:46,085 יש שאלות? 1417 01:07:46,085 --> 01:07:48,210 נע ימינה לאורך. 1418 01:07:48,210 --> 01:07:51,960 >> אז בואו נסתכל על דוגמה קטנה על איך JavaScript עובד כי אמרתי לך את זה 1419 01:07:51,960 --> 01:07:55,170 עושה את כל הדברים מגניבים האלה ו מאפשר לנו לשנות את דפי אינטרנט. 1420 01:07:55,170 --> 01:07:56,970 בואו ממש לראות אותו בפעולה. 1421 01:07:56,970 --> 01:07:59,850 אז קח, למשל, קובץ HTML זה. 1422 01:07:59,850 --> 01:08:04,350 >> והדבר שאני רוצה שתתמקד בהוא תג זה בפרט, אשר הוא כפתור, 1423 01:08:04,350 --> 01:08:06,182 עם search_button id. 1424 01:08:06,182 --> 01:08:08,670 זה רק בעמוד. 1425 01:08:08,670 --> 01:08:10,690 אז עכשיו בואו נראה מה אנחנו באמת יכולים לעשות. 1426 01:08:10,690 --> 01:08:12,560 >> ובכן, נניח שכאשר אתה לוחץ על כפתור ש, 1427 01:08:12,560 --> 01:08:16,010 אנחנו רוצים לעשות alert-- לחצת על הכפתור. 1428 01:08:16,010 --> 01:08:17,840 בואו לראות איך אנחנו יכולים לעשות את זה. 1429 01:08:17,840 --> 01:08:23,869 אז window.onload-- זה לא משהו שראית בכיתה, ולכן 1430 01:08:23,869 --> 01:08:26,180 לא צריך לדעת את זה לחידון. 1431 01:08:26,180 --> 01:08:33,660 אבל זה בעצם אומר, בסדר, שיחה כאשר עומסי חלון פונקציה זו. 1432 01:08:33,660 --> 01:08:35,080 >> אז זה פשוט סוג של קוד התקנה. 1433 01:08:35,080 --> 01:08:36,390 אל תדאג כל כך הרבה על זה. 1434 01:08:36,390 --> 01:08:39,170 מה שאני רוצה להתמקד הוא בכאן. 1435 01:08:39,170 --> 01:08:44,020 אנחנו אומרים searchButton var שווה document.getElementById search_button. 1436 01:08:44,020 --> 01:08:46,450 >> אז כמו שאתם יכולים לנחש, מה המשמעות של זה הוא שהוא אומר, 1437 01:08:46,450 --> 01:08:50,920 אישור, ללכת למצוא את האלמנט עם search_button מזהה. 1438 01:08:50,920 --> 01:08:52,790 ועכשיו יש לנו ש אלמנט בפועל ואני 1439 01:08:52,790 --> 01:08:56,279 הולך לאחסן אותו ב searchButton משתנה. 1440 01:08:56,279 --> 01:09:00,651 ועכשיו אנחנו יכולים למעשה להשתמש באלמנט ש ולשנות אותו, או לגשת לערכיה, 1441 01:09:00,651 --> 01:09:01,359 דברים כאלה. 1442 01:09:01,359 --> 01:09:04,649 אנחנו באמת יכולים להתחיל ל לעסוק בדף האינטרנט. 1443 01:09:04,649 --> 01:09:10,330 >> אז הנה אני אומר, אוקיי, עכשיו שיש לי כפתור ש, כאשר הוא לחץ, 1444 01:09:10,330 --> 01:09:12,859 לקרוא לפונקציה אנונימי זה. 1445 01:09:12,859 --> 01:09:16,811 אז זה מקום שבו בעילום שם הפונקציות להיות שימושיות. 1446 01:09:16,811 --> 01:09:18,060 ומה הפונקציה עושה? 1447 01:09:18,060 --> 01:09:20,529 ובכן, זה פשוט קורא לזה פונקצית התראה וזה אומר, 1448 01:09:20,529 --> 01:09:22,910 לחצת על כפתור החיפוש. 1449 01:09:22,910 --> 01:09:29,670 >> אז מה יקרה אם אני הולך לכל מקום HTML זה חי ואני לוחץ על הכפתור, 1450 01:09:29,670 --> 01:09:33,729 אני אקבל התראה קטנה מפוארת זה אומר שאתה לוחץ על הכפתור. 1451 01:09:33,729 --> 01:09:40,710 אז הדברים להתמקד ב כאן-- document.getElementById 1452 01:09:40,710 --> 01:09:44,960 מקבל HTML מסוים אלמנט עם זהות המסוימת. 1453 01:09:44,960 --> 01:09:48,529 ועכשיו אנחנו יכולים להגדיר מה צריך לקרות כאשר 1454 01:09:48,529 --> 01:09:50,702 אלמנט מסוים שלוחץ. 1455 01:09:50,702 --> 01:09:52,670 >> קהל: אנחנו צריכים לשים את כל זה ב? 1456 01:09:52,670 --> 01:09:53,162 >> חנה בלומברג: מצטער? 1457 01:09:53,162 --> 01:09:55,130 >> קהל: האם יש לנו ל פיזי קוד כל זה? 1458 01:09:55,130 --> 01:09:56,340 >> חנה בלומברג: יש לנו ל פיזי קוד כל זה? 1459 01:09:56,340 --> 01:09:56,839 כֵּן. 1460 01:09:56,839 --> 01:09:58,120 האם לא של מעצבן סוג זה? 1461 01:09:58,120 --> 01:10:00,032 זה הרבה קוד. 1462 01:10:00,032 --> 01:10:01,574 >> קהל: אתה יכול לייבא משהו. 1463 01:10:01,574 --> 01:10:02,532 חנה בלומברג: ימין. 1464 01:10:02,532 --> 01:10:03,610 אנחנו יכולים להשתמש במשהו. 1465 01:10:03,610 --> 01:10:08,140 ובparticular-- הו, זה אומר לי שאני צריך ללמד את הסעיף. 1466 01:10:08,140 --> 01:10:11,061 בפרט, בואו להשתמש בספרייה jQuery, 1467 01:10:11,061 --> 01:10:13,060 משום שהיה באמת ארוך וממש מעצבן 1468 01:10:13,060 --> 01:10:16,860 ואני רוצה להיות מסוגל לפשט את זה ולהפוך אותו קצר יותר וקל יותר לכתוב. 1469 01:10:16,860 --> 01:10:19,810 >> אז jQuery הוא ספריית JavaScript. 1470 01:10:19,810 --> 01:10:24,930 אז JavaScript היא תכנות שָׂפָה; jQuery היא ספרייה. 1471 01:10:24,930 --> 01:10:27,190 וזה עושה חבורה של דברים קלים יותר. 1472 01:10:27,190 --> 01:10:33,230 זה עושה שינוי והולך על פני מסמך HTML הרבה יותר קל. 1473 01:10:33,230 --> 01:10:35,030 >> זה עושה אירועי טיפול קל יותר. 1474 01:10:35,030 --> 01:10:37,580 זה עושה אנימציה קלה וזה גורם אייאקס קל יותר. 1475 01:10:37,580 --> 01:10:40,140 אז בואו נקפוץ לשתיים אלה דברים עכשיו. 1476 01:10:40,140 --> 01:10:40,900 סלח לי. 1477 01:10:40,900 --> 01:10:42,620 לפני שאנחנו עושים, כמה תחביר בסיסי. 1478 01:10:42,620 --> 01:10:46,870 >> זה מה שקורא לביותר ספריית jQuery נראית. 1479 01:10:46,870 --> 01:10:50,520 אנו משתמשים בדולר זה sign-- שום סימן חיבור ל- PHP, 1480 01:10:50,520 --> 01:10:56,030 רק inconvenient-- השם בורר, נקודה, ואז פעולה. 1481 01:10:56,030 --> 01:10:58,860 אז בואו לראות כמה דוגמאות קונקרטיות לכך. 1482 01:10:58,860 --> 01:11:02,980 >> אז זה בעצם אותו קוד משקופית האירוע. 1483 01:11:02,980 --> 01:11:08,740 אז דבר ארוך, מכוער זה הופך , דבר זה הרבה יותר נחמד קטן יותר. 1484 01:11:08,740 --> 01:11:10,370 אז בואו ננסה לשבור את זה. 1485 01:11:10,370 --> 01:11:17,090 זה אומר, בסדר, jQuery-- דולר זה sign-- jQuery, למצוא לי את החלון. 1486 01:11:17,090 --> 01:11:18,480 אז זה את הבורר. 1487 01:11:18,480 --> 01:11:21,800 >> כאשר הוא טוען, לקרוא לפונקציה זו. 1488 01:11:21,800 --> 01:11:23,880 אז זה כל מה שבפנים. 1489 01:11:23,880 --> 01:11:24,380 אוקיי. 1490 01:11:24,380 --> 01:11:25,740 בינתיים בסדר? 1491 01:11:25,740 --> 01:11:26,750 בסדר. 1492 01:11:26,750 --> 01:11:32,970 >> עכשיו, jQuery, למצוא אותי דבר עם search_button מזהה. 1493 01:11:32,970 --> 01:11:36,090 ומה שהוא לחץ, לקרוא לפונקציה זו. 1494 01:11:36,090 --> 01:11:37,900 ואז הפונקציה של זה בדיוק אותו הדבר. 1495 01:11:37,900 --> 01:11:41,052 פשוט תעשה קצת ערני, לחצת על כפתור החיפוש. 1496 01:11:41,052 --> 01:11:42,650 >> אז זה ממש נחמד. 1497 01:11:42,650 --> 01:11:46,260 זה באמת מתעבה ו מפשט את הקוד שלנו. 1498 01:11:46,260 --> 01:11:49,030 איך אני יודע ש זה search_button זיהוי 1499 01:11:49,030 --> 01:11:50,960 ולא אוהב search_button כיתה? 1500 01:11:50,960 --> 01:11:52,024 >> קהל: סולמית? 1501 01:11:52,024 --> 01:11:52,940 חנה בלומברג: כן. 1502 01:11:52,940 --> 01:11:56,450 סמל חשיש זה, זה בדיוק כמו CSS. 1503 01:11:56,450 --> 01:12:00,080 אז לזכור, עם CSS, כאשר אנו רציתי לבחור משהו לפי תעודת זהות, 1504 01:12:00,080 --> 01:12:01,590 השתמשנו בסולמית. 1505 01:12:01,590 --> 01:12:05,400 וכאשר אנחנו רוצים לבחור משהו בכיתה, אנו משתמשים בנקודה. 1506 01:12:05,400 --> 01:12:06,870 גדול. 1507 01:12:06,870 --> 01:12:08,230 הגיוני? 1508 01:12:08,230 --> 01:12:11,500 אז jQuery אמור רק להפוך את החיים שלנו לקלים יותר. 1509 01:12:11,500 --> 01:12:12,000 כֵּן. 1510 01:12:12,000 --> 01:12:15,660 >> קהל: אז אני קצת מבולבל איך הפונקציה אנונימית עובדת. 1511 01:12:15,660 --> 01:12:19,027 האם אתה שם את זה anonymouse פונקציה, לתפקד? 1512 01:12:19,027 --> 01:12:20,594 איך קרא לזה? 1513 01:12:20,594 --> 01:12:21,510 חנה בלומברג: בטח. 1514 01:12:21,510 --> 01:12:25,812 אז פונקציה היא רק מילת מפתח ש אומר, שאני עומד להגדיר פונקציה. 1515 01:12:25,812 --> 01:12:26,520 קהל: אה, בסדר. 1516 01:12:26,520 --> 01:12:27,353 חנה בלומברג: בסדר? 1517 01:12:27,353 --> 01:12:32,120 ולאחר מכן אנחנו עוברים אותו כ טיעון צריכה-- בואו ניקח 1518 01:12:32,120 --> 01:12:37,040 one-- הפנימי זה לפונקצית קליק. 1519 01:12:37,040 --> 01:12:39,420 אז כן, כך פונקציה ש, פונקציה אנונימית זה, 1520 01:12:39,420 --> 01:12:40,910 הופך טיעון ממשי. 1521 01:12:40,910 --> 01:12:43,632 אז לזכור ב- JavaScript, אנחנו ניתן לטפל בפונקציות כערכים. 1522 01:12:43,632 --> 01:12:44,340 קהל: אה, בסדר. 1523 01:12:44,340 --> 01:12:45,256 חנה בלומברג: כן. 1524 01:12:45,256 --> 01:12:46,035 אני אוהב את זה "אה." 1525 01:12:46,035 --> 01:12:47,490 נחמד. 1526 01:12:47,490 --> 01:12:49,915 שאלות אחרות? 1527 01:12:49,915 --> 01:12:50,505 זְמַן? 1528 01:12:50,505 --> 01:12:51,380 MARIA ZLATKOVA: טוב. 1529 01:12:51,380 --> 01:12:52,760 טוֹב. 1530 01:12:52,760 --> 01:12:54,210 >> חנה בלומברג: מדהים. 1531 01:12:54,210 --> 01:12:55,720 חלק jQuery שימושי מהיר. 1532 01:12:55,720 --> 01:12:57,559 אני לא מתכוון ללכת באמצעות כל אלה. 1533 01:12:57,559 --> 01:12:59,350 שקופיות אלה יהיו עד מקוון קצת 1534 01:12:59,350 --> 01:13:02,040 מאוחר יותר, כך שאתה יכול לבדוק את זה קצת מאוחר יותר. 1535 01:13:02,040 --> 01:13:07,120 אבל בעצם, הכללי דפוס מחזיק בו אנחנו אומרים, 1536 01:13:07,120 --> 01:13:11,510 אישור, היי, jQuery, הנה שלי בורר ואז הנה פעולה. 1537 01:13:11,510 --> 01:13:15,940 ואתה יכול לעשות דברים כמו גישה ערך של צורה, לגשת לחלק HTML, 1538 01:13:15,940 --> 01:13:19,195 שליטה מה קורה כאשר המשתמש מגיש טופס, דברים כאלה. 1539 01:13:19,195 --> 01:13:20,106 כֵּן. 1540 01:13:20,106 --> 01:13:22,090 >> קהל: אז ב בחינה, אנחנו הולכים צריכים 1541 01:13:22,090 --> 01:13:25,066 לדעת די הרבה מ תיעוד jQuery. 1542 01:13:25,066 --> 01:13:31,018 אז בהתחשב בכך שאנו להעתיק / להדביק את jQuery תיעוד לגיליון לרמות שלנו, 1543 01:13:31,018 --> 01:13:32,506 איפה הקו נמשך? 1544 01:13:32,506 --> 01:13:33,957 כמו כמה אנחנו צריכים לדעת? 1545 01:13:33,957 --> 01:13:35,290 חנה בלומברג: שאלה גדולה. 1546 01:13:35,290 --> 01:13:37,765 השאלה היא בעצם בהתחשב בעובדה שאתה 1547 01:13:37,765 --> 01:13:41,330 לא יכול לגשת לתיעוד jQuery במהלך הבדיקה, כמה אתה צריך 1548 01:13:41,330 --> 01:13:41,830 לָדַעַת? 1549 01:13:41,830 --> 01:13:45,540 לא הייתי מצפה ממך לבוא עם כמה פונקציה אקראית 1550 01:13:45,540 --> 01:13:47,240 שהיינו מצפה לך ל- Google. 1551 01:13:47,240 --> 01:13:52,930 >> דברים שהם משחק הוגן הם הייתי אומר רק סוג של התחביר הכללי, 1552 01:13:52,930 --> 01:13:58,310 יכולת לבחור לפי תעודת זהות ו על ידי class-- כל כך פשוט כמו CSS. 1553 01:13:58,310 --> 01:14:01,876 ולאחר מכן פונקציות הממשיות עצמם אחרי, אנחנו נגיד לך סיכוי. 1554 01:14:01,876 --> 01:14:02,376 כֵּן. 1555 01:14:02,376 --> 01:14:05,591 >> קהל: אז כשאתה בוחר על פי מעמד פירוש נקודה. 1556 01:14:05,591 --> 01:14:06,840 חנה בלומברג: כן, בדיוק. 1557 01:14:06,840 --> 01:14:07,340 טוֹב. 1558 01:14:07,340 --> 01:14:10,461 כאשר אתה בוחר בכיתה, זה הולך להיות נקודה במקום הסולמית. 1559 01:14:10,461 --> 01:14:10,960 כֵּן. 1560 01:14:10,960 --> 01:14:12,710 >> קהל: האם אתה ללכת על ההבדל 1561 01:14:12,710 --> 01:14:14,310 בין הבחירה לפי תעודת זהות ועל ידי כיתה? 1562 01:14:14,310 --> 01:14:14,560 >> חנה בלומברג: בטח. 1563 01:14:14,560 --> 01:14:17,510 ההבדל בין הבחירה זיהוי ובחירה בכיתה. 1564 01:14:17,510 --> 01:14:20,685 אז כמו שאמרה מריה קצת קודם לכן, יש 1565 01:14:20,685 --> 01:14:26,280 יכול להיות רק אחד אלמנט HTML עם זיהוי נתון, ואילו בכיתה, 1566 01:14:26,280 --> 01:14:29,740 זה מאפשר לנו קבוצת חבורה אלמנטים שונים של יחד, 1567 01:14:29,740 --> 01:14:34,300 כך דברים שקשורים, אבל לא בדיוק אותו הדבר. 1568 01:14:34,300 --> 01:14:35,685 האם זה עונה על השאלה? 1569 01:14:35,685 --> 01:14:36,200 מדהים. 1570 01:14:36,200 --> 01:14:37,194 כֵּן. 1571 01:14:37,194 --> 01:14:40,680 >> קהל: מה אם יש לך מספר רב של דברים שהם באותה הכיתה? 1572 01:14:40,680 --> 01:14:42,150 >> חנה בלומברג: מה קורה אם יש לך דברים רבים ש 1573 01:14:42,150 --> 01:14:43,280 הוא אותו הסוג? 1574 01:14:43,280 --> 01:14:45,829 כך, למשל, אם אנחנו רק באמצעות JavaScript הטהור, 1575 01:14:45,829 --> 01:14:48,120 היינו עושה משהו כמו document.getElementsByClass. 1576 01:14:48,120 --> 01:14:52,280 1577 01:14:52,280 --> 01:14:56,320 ואז מה שעושה בפועל הוא מחזיר מערך של אלמנטים. 1578 01:14:56,320 --> 01:14:59,517 >> ואתה צריך גם לחזר על שלהם או למצוא איזה מהם אתה רוצה. 1579 01:14:59,517 --> 01:15:01,350 זה לא הולך לתת לי אתה אלמנט בודד. 1580 01:15:01,350 --> 01:15:03,450 זה הולך לתת לך מערך של אלמנטים. 1581 01:15:03,450 --> 01:15:05,280 שאלה גדולה. 1582 01:15:05,280 --> 01:15:07,700 משהו נוסף? 1583 01:15:07,700 --> 01:15:09,520 מדהים. 1584 01:15:09,520 --> 01:15:12,860 >> אז אני חושב שאם אתה מכיר כל jQuery שראית בpset, 1585 01:15:12,860 --> 01:15:15,600 אתה צריך להיות טוב ללכת. 1586 01:15:15,600 --> 01:15:16,325 שְׁאֵלָה? 1587 01:15:16,325 --> 01:15:17,610 אוי לא. 1588 01:15:17,610 --> 01:15:18,859 אני באמת צריך ללמד. 1589 01:15:18,859 --> 01:15:19,358 לְהִרָגַע. 1590 01:15:19,358 --> 01:15:20,035 זה יהיה בסדר. 1591 01:15:20,035 --> 01:15:20,660 אני אגיע לשם. 1592 01:15:20,660 --> 01:15:24,670 1593 01:15:24,670 --> 01:15:26,870 >> בואו נדבר על אייאקס. 1594 01:15:26,870 --> 01:15:31,350 אז אייאקס הולך להיות זה-- גם, בואו נתחיל עם מה שהוא מייצג. 1595 01:15:31,350 --> 01:15:32,350 זה ראשי תיבות. 1596 01:15:32,350 --> 01:15:35,855 עומד זה לאסינכרוני JavaScript ו- XML. 1597 01:15:35,855 --> 01:15:39,800 וXML הוא בעצם הולך להיות [לא ברור] עם סוג הנתונים שלנו. 1598 01:15:39,800 --> 01:15:42,100 אבל אנחנו לא ממש בשימוש XML. 1599 01:15:42,100 --> 01:15:43,430 במקום זאת, אנחנו פשוט להשתמש JSON. 1600 01:15:43,430 --> 01:15:48,350 >> אז בעצם, זה חלק data-- אסינכרוני, JavaScript, ונתונים, 1601 01:15:48,350 --> 01:15:50,040 במקרה זה, JSON. 1602 01:15:50,040 --> 01:15:52,820 והמטרה שלנו, כפי שהזכרנו קצת קודם לכן, 1603 01:15:52,820 --> 01:15:56,880 הוא להיות מסוגל לעשות בקשה, שהבקשה שתעשה 1604 01:15:56,880 --> 01:16:00,700 הדבר ב רקע, אבל תמשיך 1605 01:16:00,700 --> 01:16:02,550 לעשות כל מה שאנחנו מתכוונים לעשות. 1606 01:16:02,550 --> 01:16:06,650 ולאחר מכן, כאשר המידע ש מוכן, אז לשלב אותו. 1607 01:16:06,650 --> 01:16:08,470 >> אז בואו לראות מה זה למעשה נראה. 1608 01:16:08,470 --> 01:16:11,210 וזה, אתה צריך להיות קצת מוכר 1609 01:16:11,210 --> 01:16:13,680 מpset8, אחד אתה פשוט הפך ב. 1610 01:16:13,680 --> 01:16:16,200 אז הנה jQuery חוקי פונקציה שאולי 1611 01:16:16,200 --> 01:16:18,250 רוצה לדעת על-- סימן דולר זה. 1612 01:16:18,250 --> 01:16:21,500 אז זה אומר פונקצית jQuery, .getJson. 1613 01:16:21,500 --> 01:16:25,020 >> ומה תפקיד של זה הוא זה לוקח URL וכמה parameters-- 1614 01:16:25,020 --> 01:16:28,000 לכן אני חושב במקרה של pset8, היה אוהב את זה, 1615 01:16:28,000 --> 01:16:33,520 כתובת האתר הייתה articles.php ו פרמטרים היו ללכת = כמה מיקוד. 1616 01:16:33,520 --> 01:16:41,580 וזה אומר, בסדר, להגיש בקשה ל כתובת אתר עם פרמטרים מסוימים. 1617 01:16:41,580 --> 01:16:43,480 וזה פשוט קורה. 1618 01:16:43,480 --> 01:16:47,730 >> כשזה יסיים, זה או הולך להשלים בהצלחה 1619 01:16:47,730 --> 01:16:49,370 או שזה הולך להיכשל. 1620 01:16:49,370 --> 01:16:53,480 אז זה שווה הערך לשיחה רוב ולבקש ממנו לעשות משהו. 1621 01:16:53,480 --> 01:17:00,260 ואז כשהוא מתקשר בחזרה, הוא גם הולך להגיד שאני עושה או שאני לא הצליח. 1622 01:17:00,260 --> 01:17:04,030 >> אז במקרה שבו אתה עשית, אתה אומר, בסדר, גמרת. 1623 01:17:04,030 --> 01:17:05,980 ואז אתה קורא לפונקציה זו. 1624 01:17:05,980 --> 01:17:08,915 במקרה זה, זה הולך להיות פונקציה שלוקחת קצת מידע. 1625 01:17:08,915 --> 01:17:12,890 אחד אנחנו בדרך כלל אכפת הוא נתונים, הנתונים שהוחזרנו בפועל 1626 01:17:12,890 --> 01:17:15,900 כתוצאה מקוראה .getJSON. 1627 01:17:15,900 --> 01:17:17,470 >> ואתה יכול לעשות עם זה משהו. 1628 01:17:17,470 --> 01:17:23,670 אז במקרה של pset8, אנחנו מוצגים בה כרשימה. 1629 01:17:23,670 --> 01:17:29,050 Fail הולך להיות פונקציה זה נקרא אם הבקשה נכשלה 1630 01:17:29,050 --> 01:17:30,450 מכל סיבה שהיא. 1631 01:17:30,450 --> 01:17:35,104 ובמקרה של pset8, אנחנו פשוט console.log זה. 1632 01:17:35,104 --> 01:17:36,020 כל שאלות על זה? 1633 01:17:36,020 --> 01:17:36,300 כֵּן. 1634 01:17:36,300 --> 01:17:39,633 >> קהל: האם אנחנו יכולים פשוט להשתמש תטא פונקציה במקום פונקציה, textStatus, jqHXR. 1635 01:17:39,633 --> 01:17:43,464 1636 01:17:43,464 --> 01:17:44,380 חנה בלומברג: בטח. 1637 01:17:44,380 --> 01:17:46,713 אז כן, אני חושב בpset, רק שראינו נתונים פונקציה. 1638 01:17:46,713 --> 01:17:48,700 אז זה רק כל-- כן, אישור. 1639 01:17:48,700 --> 01:17:50,510 זה מה שראינו בpset. 1640 01:17:50,510 --> 01:17:51,480 זה לגמרי בסדר. 1641 01:17:51,480 --> 01:17:54,210 >> אלה הם רק אם אתה רוצה לשלוף מידע נוסף, 1642 01:17:54,210 --> 01:17:57,190 אלה הם הדברים ש אתה יכול לקבל מ.getJSON. 1643 01:17:57,190 --> 01:17:59,040 שאלה טובה. 1644 01:17:59,040 --> 01:17:59,706 משהו נוסף? 1645 01:17:59,706 --> 01:18:00,206 כֵּן. 1646 01:18:00,206 --> 01:18:01,787 >> קהל: אז .getJSON הוא אייאקס? 1647 01:18:01,787 --> 01:18:02,620 חנה בלומברג: אישור. 1648 01:18:02,620 --> 01:18:05,700 אז זה סוג של חלק בעייתי. 1649 01:18:05,700 --> 01:18:12,390 זה הוא פונקצית jQuery שמאפשרת לך לעשות שיחות אסינכרוני. 1650 01:18:12,390 --> 01:18:16,080 ושיחות אסינכרוני אלה, זה מה שאנחנו כבר מתייחסים אליו כאייאקס. 1651 01:18:16,080 --> 01:18:16,850 כֵּן. 1652 01:18:16,850 --> 01:18:20,185 זה לקח לי המון זמן ל לפרק כשהייתי סטודנט. 1653 01:18:20,185 --> 01:18:21,560 קהל: האם אתה יכול להגיד את זה שוב? 1654 01:18:21,560 --> 01:18:22,476 חנה בלומברג: כן. 1655 01:18:22,476 --> 01:18:23,630 אני יכול להגיד את זה שוב? 1656 01:18:23,630 --> 01:18:29,010 פונקציה זו .getJSON, זה הוא פונקצית jQuery. 1657 01:18:29,010 --> 01:18:31,970 וזה הולך לעשות שיחת אסינכרוני. 1658 01:18:31,970 --> 01:18:35,700 ושיחות אסינכרוני אלה, יש לנו כבר מתייחס לאלה שאייאקס. 1659 01:18:35,700 --> 01:18:39,610 1660 01:18:39,610 --> 01:18:41,872 >> כל שאלות אחרות? 1661 01:18:41,872 --> 01:18:43,330 יש לנו רק כמה דקות עזבו. 1662 01:18:43,330 --> 01:18:45,080 ומריה הולך לעטוף את עם ביטחון 1663 01:18:45,080 --> 01:18:47,464 ואז אנחנו הולכים להיות על עשה בדיוק. 1664 01:18:47,464 --> 01:18:48,630 MARIA ZLATKOVA: מדהים, בסדר. 1665 01:18:48,630 --> 01:18:54,030 אז זה רק הוא-- לקחת כמה שניות להסתכל על זה. 1666 01:18:54,030 --> 01:18:56,750 וזה לא משהו גדול באמת. 1667 01:18:56,750 --> 01:18:59,430 ומישהו יכול להגיד לי למה? 1668 01:18:59,430 --> 01:19:05,650 מה שקורה בfoo ומאי היה יכול פוטנציאל לגרום למשהו רע, 1669 01:19:05,650 --> 01:19:06,770 ומה זה נקרא? 1670 01:19:06,770 --> 01:19:07,270 כֵּן. 1671 01:19:07,270 --> 01:19:10,391 קהל: אם הטיעון זה עבר בהוא יותר מ -12 תווים, 1672 01:19:10,391 --> 01:19:11,454 זה יכול לעלות על גדות. 1673 01:19:11,454 --> 01:19:12,370 MARIA ZLATKOVA: ימין. 1674 01:19:12,370 --> 01:19:14,180 ללא רבב. 1675 01:19:14,180 --> 01:19:15,384 איך זה נקרא? 1676 01:19:15,384 --> 01:19:16,300 אתה פשוט ציינו שהיא. 1677 01:19:16,300 --> 01:19:16,840 >> קהל: הצפת מאגר. 1678 01:19:16,840 --> 01:19:18,381 >> MARIA ZLATKOVA: כן, גלישת חוצץ. 1679 01:19:18,381 --> 01:19:21,230 אז זה משהו שאנחנו מכנה הצפת מאגר. 1680 01:19:21,230 --> 01:19:25,500 ואנחנו רואים שבתוך של foo, אנחנו כבר מוגדרים החיץ, ג, 1681 01:19:25,500 --> 01:19:27,240 עם גודל של 12. 1682 01:19:27,240 --> 01:19:32,680 עם זאת, בעיקרי, אנחנו לא לבדוק בכל דרך בכל 1683 01:19:32,680 --> 01:19:36,480 אם argv1-- כך ש הייתה הטענה השנייה. 1684 01:19:36,480 --> 01:19:39,630 אנחנו לא לבדוק אם גודל שלו הוא מתאים. 1685 01:19:39,630 --> 01:19:43,380 >> אז אם היו לנו משתמש זדוני במיוחד 1686 01:19:43,380 --> 01:19:47,170 מי לשים בחלק הטיעון שהיה יותר מ -12, ולאחר מכן עלול להיות 1687 01:19:47,170 --> 01:19:50,850 מעבר לגבולות של ש טיעון, היה כמה קוד הפעלה 1688 01:19:50,850 --> 01:19:55,570 שהוא מנסה לעשות משהו רע עם זה; אז זה, מה היה קורה, 1689 01:19:55,570 --> 01:19:59,310 היה לעקוף את התשואה כתובת של פונקצית foo, 1690 01:19:59,310 --> 01:20:04,370 גורם פונקציה כאשר חוזר לביצוע קוד ש. 1691 01:20:04,370 --> 01:20:07,540 ואז דברים רעים יכולים לקרות. 1692 01:20:07,540 --> 01:20:09,850 האם זה הגיוני לכולם? 1693 01:20:09,850 --> 01:20:12,424 >> וכיצד אנו יכולים להגן מפני זה? 1694 01:20:12,424 --> 01:20:13,090 הצעות כלשהן? 1695 01:20:13,090 --> 01:20:16,480 1696 01:20:16,480 --> 01:20:21,890 בעיקרון, בתוך פוטנציאל foo, איך 1697 01:20:21,890 --> 01:20:28,294 אנחנו יכולים לבדוק כדי לוודא ש שזה לא יכול לקרות? 1698 01:20:28,294 --> 01:20:33,879 >> קהל: אם הגודל 12 הוא חריגה, היית להקצות זיכרון נוסף? 1699 01:20:33,879 --> 01:20:37,170 MARIA ZLATKOVA: הצעה היא, להקצות זיכרון נוסף בגודל חריגה. 1700 01:20:37,170 --> 01:20:39,800 למעשה, אנחנו יכולים לעשות משהו הרבה יותר פשוט מזה גם כן. 1701 01:20:39,800 --> 01:20:44,870 אנחנו רק יכולים לקבל את אורך המחרוזת של הטיעון שהוא נכנס, 1702 01:20:44,870 --> 01:20:48,590 לבדוק אם זה פחות או שווה ל12-- 1703 01:20:48,590 --> 01:20:50,790 וזה מה שאנחנו רוצים את זה להיות בגלל שאנחנו לא רוצים 1704 01:20:50,790 --> 01:20:52,373 זה יעלה את הגבולות של החיץ שלנו. 1705 01:20:52,373 --> 01:20:55,690 ואז אם זה לא, אנחנו יכול לעבוד עם הטיעון. 1706 01:20:55,690 --> 01:21:00,296 ואז אם היא עושה, אנחנו באמת רוצים לYello פוטנציאלי במשתמש. 1707 01:21:00,296 --> 01:21:01,670 אבל ככה אנחנו היינו עושים את זה. 1708 01:21:01,670 --> 01:21:02,443 כֵּן. 1709 01:21:02,443 --> 01:21:04,360 >> קהל: הייתה לך להסביר מהיר אמיתי memcpy? 1710 01:21:04,360 --> 01:21:05,443 MARIA ZLATKOVA: אה, סליחה. 1711 01:21:05,443 --> 01:21:06,040 כֵּן. 1712 01:21:06,040 --> 01:21:11,290 Memcpy לוקח כל מה שהוא-- מצטער, אישור. 1713 01:21:11,290 --> 01:21:15,850 Memcpy לוקח כל מה שהוא בבר, ​​מה שעבר 1714 01:21:15,850 --> 01:21:18,050 על foo כטיעון שורת הפקודה. 1715 01:21:18,050 --> 01:21:19,440 אז זה הולך לקחת argv1. 1716 01:21:19,440 --> 01:21:21,420 Argv1 נקרא בר כאן. 1717 01:21:21,420 --> 01:21:24,453 אז זה הולך לקחת בר ו זה הולך להעתיק אותו לג. 1718 01:21:24,453 --> 01:21:25,402 >> קהל: אישור. 1719 01:21:25,402 --> 01:21:28,360 MARIA ZLATKOVA: וזה הולך copy-- הטיעון השלישי רק מתייחס 1720 01:21:28,360 --> 01:21:30,601 לכמה זה הולך להעתיק לג. 1721 01:21:30,601 --> 01:21:31,142 קהל: אה. 1722 01:21:31,142 --> 01:21:33,030 אז ההעתקה של זה אחד כל זה אז. 1723 01:21:33,030 --> 01:21:34,310 >> MARIA ZLATKOVA: כן, זה העתקה כל זה. 1724 01:21:34,310 --> 01:21:34,810 כֵּן. 1725 01:21:34,810 --> 01:21:38,400 1726 01:21:38,400 --> 01:21:41,910 ראשית, אנו מוודאים בר הוא לא שווה ל null כי זה מצביע. 1727 01:21:41,910 --> 01:21:44,680 אז אנחנו מקבלים את אורך המחרוזת של בר. 1728 01:21:44,680 --> 01:21:47,530 אנו מוודאים שזה קטן או שווה ל -12. 1729 01:21:47,530 --> 01:21:50,070 ולאחר מכן, כי יש לנו דאג, אנחנו באמת יכולים 1730 01:21:50,070 --> 01:21:53,122 memcpy ולהיות בטוחים שזה בסדר. 1731 01:21:53,122 --> 01:21:53,705 יש שאלות? 1732 01:21:53,705 --> 01:21:56,280 1733 01:21:56,280 --> 01:21:58,690 גדול. 1734 01:21:58,690 --> 01:22:00,400 יש לי שתי שאלות אמת או שקר. 1735 01:22:00,400 --> 01:22:05,470 מישהו יכול להגיד לי מייד אם אלה הם אמת או שקר? 1736 01:22:05,470 --> 01:22:07,460 כן, זה שקר. 1737 01:22:07,460 --> 01:22:07,960 בְּדִיוּק. 1738 01:22:07,960 --> 01:22:09,330 שניהם כוזבים. 1739 01:22:09,330 --> 01:22:12,682 אז באמצעות סיסמא אחת הוא רעיון לא ממש טוב 1740 01:22:12,682 --> 01:22:14,890 כי אם מישהו יודע הסיסמה שלך, הם יכולים פשוט 1741 01:22:14,890 --> 01:22:16,260 גישה לכל החשבונות האחרים שלך. 1742 01:22:16,260 --> 01:22:19,260 ואז סמלים לא לעשות כלום כדי להבטיח את הביטחון. 1743 01:22:19,260 --> 01:22:24,900 אנחנו צריכים בדרך כלל לחפש HTTPS במקום HTTP ואת כתובת האתר. 1744 01:22:24,900 --> 01:22:28,560 >> וכמה סוגים אחרים של התקפות שאנחנו כבר הזכרנו, 1745 01:22:28,560 --> 01:22:31,390 כי דוד מוזכר ב להרצות, התקפות הזרקת SQL. 1746 01:22:31,390 --> 01:22:37,310 אנחנו כבר ראינו שאם אנחנו don't-- פונקצית שאילתא CS50 מוודאת SQL ש 1747 01:22:37,310 --> 01:22:39,530 הזרקת התקפות לא יכולות להתרחש. 1748 01:22:39,530 --> 01:22:42,640 אבל אם לא היינו משתמשים בCS50, ציטוט, סוף ציטוט "בשאילתא," 1749 01:22:42,640 --> 01:22:46,830 היינו צריך לוודא ש קלט משתמש הוא לא ממש חלק SQL 1750 01:22:46,830 --> 01:22:49,670 שאילתא שתגרום לכל השולחנות שלנו להיות ירד 1751 01:22:49,670 --> 01:22:54,070 או משהו רע ל יקרה עם בסיס הנתונים שלנו. 1752 01:22:54,070 --> 01:22:56,790 >> חטיפת הפעלה היא סוג אחר של התקפה 1753 01:22:56,790 --> 01:23:05,940 זה קורה כאשר כמה רע אדם משתמש מושב חלק של הקורבן 1754 01:23:05,940 --> 01:23:08,740 מזהה כדי לגשת למידע ההתחברות. 1755 01:23:08,740 --> 01:23:13,620 אז דוגמא מאוד טריוויאלי של שהיא כמו אם יש לנו במחשב ציבורי, 1756 01:23:13,620 --> 01:23:21,120 אז האדם הרע יומנים ובאז יש להם עוגיות שנשמרו. 1757 01:23:21,120 --> 01:23:23,380 ועוגיות לא משתנות למושב. 1758 01:23:23,380 --> 01:23:27,620 >> אז יש לנו את הקורבן ללכת ב ולאחר מכן להיכנס לאתר. 1759 01:23:27,620 --> 01:23:30,290 העוגיות לא משתנות לישיבה מסוימת. 1760 01:23:30,290 --> 01:23:33,060 ואז הקורבן נכנס לתוך האתר ולאחר מכן עוזב. 1761 01:23:33,060 --> 01:23:36,190 ואז האדם שחוזר אז עדיין יכול להשתמש מזהה ההפעלה שלהם 1762 01:23:36,190 --> 01:23:37,430 כדי לגשת למידע שלהם. 1763 01:23:37,430 --> 01:23:40,050 אז זו דוגמא אחת של איך זה יכול לקרות. 1764 01:23:40,050 --> 01:23:45,570 >> ואז אני לא הייתי דואג יותר מדי על קוד או משהו ספציפי 1765 01:23:45,570 --> 01:23:49,270 כמו שזה יכול לגרום לזה, אבל יש איזשהו המושג מה 1766 01:23:49,270 --> 01:23:51,400 המשתנים מעורבים בזה הם. 1767 01:23:51,400 --> 01:23:53,897 ולאחר מכן מניפולציה כותרת הנתונים הוא סוג אחר של התקפה 1768 01:23:53,897 --> 01:23:55,230 שיש דוד דיבר על. 1769 01:23:55,230 --> 01:23:59,730 וזה רק מתייחס ל מה יכול לקרות כאשר 1770 01:23:59,730 --> 01:24:04,300 התגובה, HTTP תגובה בתוך הכותרת שלנו 1771 01:24:04,300 --> 01:24:05,720 לא מחוטא כראוי. 1772 01:24:05,720 --> 01:24:14,340 >> וכל fields-- למשל, אם מישהו מחליף אחד את הכותרת 1773 01:24:14,340 --> 01:24:18,860 ערכים להכיל משהו יותר מה הם צריכים contain-- ולמעשה 1774 01:24:18,860 --> 01:24:22,720 לכלול, למשל, 200 קוד מצב מניח את הדעת, ואז הם 1775 01:24:22,720 --> 01:24:26,890 עלול לעשות זדוני דברים כשהם לא אמורים. 1776 01:24:26,890 --> 01:24:30,815 אבל אני לא הייתי דואג יותר מדי הרבה על הקוד הספציפי 1777 01:24:30,815 --> 01:24:34,110 שיכול לגרום לזה, רק סוג של הבנה 1778 01:24:34,110 --> 01:24:37,290 דברים כאלה ברמה גבוהה. 1779 01:24:37,290 --> 01:24:39,570 >> אני חושב שזה כל שיש לנו כדי לכסות. 1780 01:24:39,570 --> 01:24:40,090 מדהים. 1781 01:24:40,090 --> 01:24:43,310 למישהו יש שאלות על כל מהדברים שאנחנו מכוסים? 1782 01:24:43,310 --> 01:24:44,213 כֵּן. 1783 01:24:44,213 --> 01:24:48,077 >> קהל: אז סוג אחד של שאלה לוגיסטית יותר. 1784 01:24:48,077 --> 01:24:53,400 האם התוכן התמקד בעיקר על דברים לאחר חידון 1? 1785 01:24:53,400 --> 01:24:55,730 >> MARIA ZLATKOVA: אז שאלה היא, האם התוכן 1786 01:24:55,730 --> 01:24:59,720 התמקד בעיקר בדברים אחרי חידון 1? 1787 01:24:59,720 --> 01:25:06,070 אז הדגש הוא על אחרי חידון 1, למעט 1788 01:25:06,070 --> 01:25:10,914 שאנחנו צריכים להתמקד בדברים ב pset5 והרבה מבני נתונים 1789 01:25:10,914 --> 01:25:11,580 שכיסינו. 1790 01:25:11,580 --> 01:25:14,300 ואנחנו לא יכולים לומר שאנחנו יכול להתעלם מכל דבר לפני 1791 01:25:14,300 --> 01:25:17,120 זה כי זה בונה על זה גם כן. 1792 01:25:17,120 --> 01:25:21,845 >> אז להתמקד בזה, בתוספת חומר pset5 כמו כולל רשימות מקושרות, ערימות, 1793 01:25:21,845 --> 01:25:23,720 תורים, וכל מה ש שחנה ניגש. 1794 01:25:23,720 --> 01:25:24,050 >> חנה בלומברג: ימין. 1795 01:25:24,050 --> 01:25:27,450 כן, הלכנו על כל הדברים C בהתחלה מהר מאוד. 1796 01:25:27,450 --> 01:25:29,090 אבל לוודא לסקור ש. 1797 01:25:29,090 --> 01:25:32,700 לחזור ולצפות בסקירת חידון 0. 1798 01:25:32,700 --> 01:25:36,110 >> כמה הערות לוגיסטיות יותר, רק בזמן שיש לנו את תשומת הלב שלך. 1799 01:25:36,110 --> 01:25:39,100 אנחנו הולכים להיות שעתי עבודה גם ביום שני בלילה וביום שלישי. 1800 01:25:39,100 --> 01:25:41,540 הם הולכים להיות בMD 119. 1801 01:25:41,540 --> 01:25:44,220 כל זה באתר האינטרנט, כך אם אתה לא שומע את זה, אין דאגות. 1802 01:25:44,220 --> 01:25:45,266 >> MARIA ZLATKOVA: 8:30 עד 11:00. 1803 01:25:45,266 --> 01:25:46,260 >> חנה בלומברג: כן, 8:30 עד 11:00. 1804 01:25:46,260 --> 01:25:46,910 אנחנו נהיה שם. 1805 01:25:46,910 --> 01:25:48,368 אנחנו נהיה שם כדי לענות על שאלות. 1806 01:25:48,368 --> 01:25:49,480 זה צינה וכיף יפה. 1807 01:25:49,480 --> 01:25:53,240 אתם יכולים לשאול כל שאלה שיש לך על חידון 1. 1808 01:25:53,240 --> 01:25:55,740 וחידון 1 הוא ב יום רביעי, מזל טוב כל כך. 1809 01:25:55,740 --> 01:25:59,770 אם יש לך שאלות, אולי לבוא לדבר איתנו כאן אחד-על-אחד. 1810 01:25:59,770 --> 01:26:00,880 מגניב. 1811 01:26:00,880 --> 01:26:01,630 תודה רבה. 1812 01:26:01,630 --> 01:26:02,880 >> MARIA ZLATKOVA: תודה רבה, חבר 'ה. 1813 01:26:02,880 --> 01:26:03,480 >> קהל: יש. 1814 01:26:03,480 --> 01:26:05,930 >> [תְשׁוּאוֹת] 1815 01:26:05,930 --> 01:26:07,530