1 00:00:00,000 --> 00:00:02,964 2 00:00:02,964 --> 00:00:05,434 >> [השמעת מוסיקה] 3 00:00:05,434 --> 00:00:11,825 4 00:00:11,825 --> 00:00:12,700 חנה: היי, כולם. 5 00:00:12,700 --> 00:00:15,866 תודה לכם כל כך הרבה עבור יוצא במזג האוויר המגעיל לחידון אחד 6 00:00:15,866 --> 00:00:16,910 לסקור פגישה. 7 00:00:16,910 --> 00:00:20,020 כאתם יודעים, חידון אחד הוא ביום רביעי. 8 00:00:20,020 --> 00:00:22,209 אז אנחנו הולכים ללכת דרך חבורה של נושאים. 9 00:00:22,209 --> 00:00:24,000 דווין: היי, אני יכול לומר משהו ממש מהר? 10 00:00:24,000 --> 00:00:25,215 חנה: כן, דווין של הולכים לומר משהו ממש מהר. 11 00:00:25,215 --> 00:00:25,780 דווין: מצטער. 12 00:00:25,780 --> 00:00:29,490 רק ממש מהר, אם יש לך שאלות על החידון, אתה יכול להיכנס לאינטרנט. 13 00:00:29,490 --> 00:00:32,420 עבור 2014 אחד חידון, על החידון. 14 00:00:32,420 --> 00:00:34,680 זה חייב לוגיסטיקה על לאן ללכת, מתי ללכת. 15 00:00:34,680 --> 00:00:38,100 אם אתה לומד בו-זמנית, אנחנו הולך להיות לנו חידון איפור בשעת 5:30. 16 00:00:38,100 --> 00:00:40,350 או אם שלח לי בעיה, יש לך כמה נושא אחר. 17 00:00:40,350 --> 00:00:42,640 אבל 5:30 הוא האיפור זמן ביום רביעי. 18 00:00:42,640 --> 00:00:44,540 אבל אם יש לך שאלות, שאלות כלליות, 19 00:00:44,540 --> 00:00:45,748 באינטרנט יש את כל הלוגיסטיקה. 20 00:00:45,748 --> 00:00:47,690 אז לבדוק שם קודם. 21 00:00:47,690 --> 00:00:49,070 >> חנה: מדהימה. 22 00:00:49,070 --> 00:00:53,030 אז הנה הרשימה הגדולה של נושאים שאנחנו הולכים לעבור היום. 23 00:00:53,030 --> 00:00:57,390 אני הולך כדי לכסות את כל C דברים, והוא שהעמודה הראשונה. 24 00:00:57,390 --> 00:01:00,710 כך שהדברים שאנחנו C מכוסה לאחר חידון אפס. 25 00:01:00,710 --> 00:01:05,459 החל עם רשימה מקושרת, הכולל מצביעים. 26 00:01:05,459 --> 00:01:07,668 >> בסדר, אז שראינו את זה בפגישה הסקירה האחרונה, 27 00:01:07,668 --> 00:01:10,000 אז אני הולך לעבור זה קצת יותר מהר. 28 00:01:10,000 --> 00:01:13,500 רק להרים את היד שלך אם אתה רוצה שאני להאט או לטפל במשהו נוסף. 29 00:01:13,500 --> 00:01:17,150 אבל אנחנו משתמשים רשימות מקושרות, כי התחלנו בC עם מערכים. 30 00:01:17,150 --> 00:01:20,920 ומערכים הם נהדרים, אבל הבעיה היא שיש להם בגודל קבוע. 31 00:01:20,920 --> 00:01:24,925 רשימות מקושרות תאפשר לנו ליצור באופן דינמי בגודל מבני נתונים. 32 00:01:24,925 --> 00:01:28,520 33 00:01:28,520 --> 00:01:32,320 >> ויש לנו הפעולות הבסיסיות שלנו, להוסיף, למחוק, ולחפש. 34 00:01:32,320 --> 00:01:36,780 ואנחנו יכולים לעשות להכניס ב במקרה הגרוע ביותר זמן קבוע 35 00:01:36,780 --> 00:01:39,140 אם אנחנו רק לשים אותו בהתחלה. 36 00:01:39,140 --> 00:01:45,220 למחוק ולחפש, הגרוע ביותר תיק גדול הו זמן n. 37 00:01:45,220 --> 00:01:47,140 אז שוב, רק כדי להעיף באמצעות התמונות הללו, 38 00:01:47,140 --> 00:01:50,860 אני יודע שראינו בפעם האחרונה אלה, אבל אנחנו רוצה לעקוב אחר הרשימה המקושרת שלנו 39 00:01:50,860 --> 00:01:53,440 על ידי שמירה על מסלול של ראש הרשימה המקושרת שלנו. 40 00:01:53,440 --> 00:01:55,580 כי אנחנו יודעים ש כל אחד מצומת שלנו 41 00:01:55,580 --> 00:01:58,610 הוא רק הולך להצביע הצומת הבאה ברשימה המקושרת שלנו. 42 00:01:58,610 --> 00:02:00,460 >> אז ככה אנחנו לעקוב אחר. 43 00:02:00,460 --> 00:02:02,910 למרות שאלו אינם חתיכות רציפות של זיכרון, 44 00:02:02,910 --> 00:02:07,410 אנחנו יכולים למצוא אותם רק על ידי בעקבות החצים השונים. 45 00:02:07,410 --> 00:02:09,800 הנה המבנה שלנו לצומת רשימה מקושרת. 46 00:02:09,800 --> 00:02:11,440 ראינו בפעם האחרונה זה. 47 00:02:11,440 --> 00:02:13,080 יש לנו צומת struct שלנו. 48 00:02:13,080 --> 00:02:14,340 ויש לו שתי תכונות. 49 00:02:14,340 --> 00:02:17,020 מספר אחד, בפועל ערך שאנו רוצים לאחסן. 50 00:02:17,020 --> 00:02:18,290 במקרה זה, זה מספר שלם. 51 00:02:18,290 --> 00:02:21,100 זה יכול להיות מחרוזת, היא יכולה להיות char, מה שאתה רוצה. 52 00:02:21,100 --> 00:02:24,710 ואז, אנחנו צריכים לעקוב אחר הצומת הבאה ברשימה המקושרת שלנו. 53 00:02:24,710 --> 00:02:29,797 אז זה הולך להיות מצביע לצומת הבאה. 54 00:02:29,797 --> 00:02:31,880 אם רק היית עושים חיפוש, כמו שאמרתי קודם, 55 00:02:31,880 --> 00:02:34,900 היית צריך לעקוב את החצים שלך. 56 00:02:34,900 --> 00:02:40,720 הכנסה, שהיית לעקוב אחר היכן שאר הרשימה שלך הוא. 57 00:02:40,720 --> 00:02:44,150 ואתה רוצה להפנות את הראש כדי להצביע על הגורם החדש שלנו, ש 58 00:02:44,150 --> 00:02:46,640 במקרה זה הוא אחד, ואז אחד יצביע 59 00:02:46,640 --> 00:02:49,480 לשאר הרשימה המקושרת. 60 00:02:49,480 --> 00:02:52,996 אז שוב, אני יודע שזה קצת קצת חוזר מהחידון אפס. 61 00:02:52,996 --> 00:02:55,370 אז אנחנו צריכים להיות מאוד זהירים על הסדר שבו אנחנו 62 00:02:55,370 --> 00:03:00,390 לעשות pointings האלה כדי שלא לאבד את החלק האחורי של הרשימה. 63 00:03:00,390 --> 00:03:04,122 OK, שאלות עם רק ביחידים רשימות מקושרים? 64 00:03:04,122 --> 00:03:06,060 מדהים, בסדר, מגניב. 65 00:03:06,060 --> 00:03:09,410 >> אז עכשיו, אנחנו הולכים ללכת על משהו רק מעט יותר מסובך, 66 00:03:09,410 --> 00:03:10,920 כפליים רשימות מקושרות. 67 00:03:10,920 --> 00:03:13,680 אז בנוסף לשמירה מסלול של הצומת הבאה, 68 00:03:13,680 --> 00:03:16,220 אנחנו רוצים גם כדי לעקוב אחר של הצומת הקודמת. 69 00:03:16,220 --> 00:03:19,580 וזה מאפשר לנו, אם אנחנו בשלב מסוים ברשימה המקושרת שלנו, 70 00:03:19,580 --> 00:03:23,110 לא רק ללכת קדימה, אבל גם לחזר אחורה. 71 00:03:23,110 --> 00:03:25,220 כי כמו שראינו ב רשימה מקושרת ביחידים, 72 00:03:25,220 --> 00:03:27,980 אם היינו בחלק הצומת, ו פתאום, החלטנו, 73 00:03:27,980 --> 00:03:30,160 למעשה, אני רוצה ללכת ל זכות הצומת לפניי, 74 00:03:30,160 --> 00:03:32,034 היית צריך ללכת כל בדרך חזרה לראש 75 00:03:32,034 --> 00:03:35,710 ולחזר דרך עד שמצאת הצומת שחיפשת. 76 00:03:35,710 --> 00:03:37,680 >> אז זה עושה את הדברים מעט קל יותר כמו שאנחנו 77 00:03:37,680 --> 00:03:39,670 מנסה לחזר באמצעות הרשימה המקושרת שלנו. 78 00:03:39,670 --> 00:03:47,870 אבל זה מחייב אותנו לעקוב אחר אחד יותר מצביע, כך כוכב צומת אחד יותר. 79 00:03:47,870 --> 00:03:50,830 בסדר, אז הנה מגיע החלק הכיפי. 80 00:03:50,830 --> 00:03:55,600 אנחנו הולכים לתרגל יישום להסיר לרשימות מקושרות כפליים. 81 00:03:55,600 --> 00:03:58,660 אז זה משהו ש משחק לגמרי הוגן לחידון. 82 00:03:58,660 --> 00:04:00,750 זה הופיע בחידוני העבר. 83 00:04:00,750 --> 00:04:04,220 אז בהחלט להיות מוכן קוד קצת בג 84 00:04:04,220 --> 00:04:07,900 אל תשכחו שעם כל PHP זה הכיף ו- JavaScript, 85 00:04:07,900 --> 00:04:10,560 אנחנו עדיין צריכים לזכור לעשות C. אז לרענן את ש 86 00:04:10,560 --> 00:04:12,146 אם אתה מרגיש חלוד. 87 00:04:12,146 --> 00:04:14,580 >> בסדר, בואו תראו אם אנחנו יכולים לעשות את זה. 88 00:04:14,580 --> 00:04:16,312 OK, מגניב. 89 00:04:16,312 --> 00:04:18,600 אז אנחנו הולכים לנסות כדי לערוך את הזכות כאן, 90 00:04:18,600 --> 00:04:20,707 ואני מקווה שזה ילך כמתוכנן. 91 00:04:20,707 --> 00:04:23,915 בסדר, האם מישהו רוצה לתת לי הצעה לגבי איך אני צריך להתחיל? 92 00:04:23,915 --> 00:04:27,030 ההנחה היחידה שאני קבלת היא שאני כבר 93 00:04:27,030 --> 00:04:30,180 הגדיר מבנה, אחד הראיתי בעמוד האחרון, 94 00:04:30,180 --> 00:04:31,420 בשקופית האחרונה. 95 00:04:31,420 --> 00:04:39,250 ואני אחסון ראש שלי מקושר רשימה בחלק המצביע בשם רשימה. 96 00:04:39,250 --> 00:04:42,190 האם מישהו רוצה יתחיל איתי? 97 00:04:42,190 --> 00:04:45,410 >> קהל: אתה יכול ליצור חדש צומת לקרוא ברשימה? 98 00:04:45,410 --> 00:04:46,410 >> חנה: מדהימה, כל כך אנחנו הולכים ליצור 99 00:04:46,410 --> 00:04:47,951 צומת חדשה לזחול ברשימה. 100 00:04:47,951 --> 00:04:48,570 אני אוהב את זה. 101 00:04:48,570 --> 00:04:50,799 אני רק קורא לזה מצביע אם זה בסדר. 102 00:04:50,799 --> 00:04:52,340 ושבו צריך אותו במקור להתחיל? 103 00:04:52,340 --> 00:04:57,280 104 00:04:57,280 --> 00:04:59,840 >> קהל: כנראה ב ראש הרשימה. 105 00:04:59,840 --> 00:05:00,590 חנה: יפה. 106 00:05:00,590 --> 00:05:03,670 אנחנו רוצים להתחיל בראש, ש אמרתי הולך להיות מאוחסן ברשימה. 107 00:05:03,670 --> 00:05:04,170 מדהים. 108 00:05:04,170 --> 00:05:05,220 עד כה, כל כך טוב. 109 00:05:05,220 --> 00:05:08,260 ועכשיו, המטרה שלנו היא איטרציות ברשימה 110 00:05:08,260 --> 00:05:12,870 עד שאנחנו מוצאים את הצומת עם n הערך שאנו רוצים למחוק. 111 00:05:12,870 --> 00:05:13,540 בסדר? 112 00:05:13,540 --> 00:05:15,910 >> אז עכשיו הוא החלק שבו אנחנו רוצים לחזר דרך. 113 00:05:15,910 --> 00:05:19,488 האם מישהו יכול להציע הדרך ללחזר דרך? 114 00:05:19,488 --> 00:05:20,979 >> קהל: לולאה. 115 00:05:20,979 --> 00:05:21,840 >> חנה: לולאה. 116 00:05:21,840 --> 00:05:22,620 אני אוהב את זה. 117 00:05:22,620 --> 00:05:25,550 באופן ספציפי, אנחנו יכולים לנסות לולאה בזמן. 118 00:05:25,550 --> 00:05:30,919 OK, ואנחנו יודעים שאנחנו כבר הגענו סוף הרשימה, כאשר מה שלנו? 119 00:05:30,919 --> 00:05:32,210 קהל: כאשר המצביע הוא null. 120 00:05:32,210 --> 00:05:33,418 חנה: כאשר המצביע הוא null. 121 00:05:33,418 --> 00:05:34,320 יפה, אני אוהב את זה. 122 00:05:34,320 --> 00:05:35,110 OK, מגניב. 123 00:05:35,110 --> 00:05:39,300 124 00:05:39,300 --> 00:05:43,190 כל כך מצטער אם הסד התוחם שלי הוא סוג של נפילה את המסך. 125 00:05:43,190 --> 00:05:44,090 אנחנו הבאנו אותו בחזרה. 126 00:05:44,090 --> 00:05:46,610 OK, מגניב. 127 00:05:46,610 --> 00:05:48,690 מה הלאה? 128 00:05:48,690 --> 00:05:51,950 >> אז אנחנו יודעים שאנחנו רוצים למחוק הצומת שיש n הערך. 129 00:05:51,950 --> 00:05:56,340 אז בואו למצוא את המקרה שבו אנחנו באמת למצוא צומתנו. 130 00:05:56,340 --> 00:05:57,840 אז איך הייתי בודק את זה? 131 00:05:57,840 --> 00:06:02,210 אני פשוט הייתי אומר אם מצביע, ולאחר מכן אם אני רוצה לקבל את הערך מתוך מצביע, 132 00:06:02,210 --> 00:06:08,940 אני פשוט חץ n, שווה n, הפרמטר 133 00:06:08,940 --> 00:06:14,490 שנתנו לפונקציה זו, צומת שאנחנו רוצים למחוק למעשה. 134 00:06:14,490 --> 00:06:17,090 כל שאלות עד כאן? 135 00:06:17,090 --> 00:06:18,360 בְּסֵדֶר. 136 00:06:18,360 --> 00:06:24,140 אוקיי, אז עכשיו בואו לצייר תמונה מהירה על הלוח כדי להמחיש את זה. 137 00:06:24,140 --> 00:06:30,710 >> אז בואו נגיד שיש הצומת היפה שלנו. 138 00:06:30,710 --> 00:06:34,480 ויש לה ערך, אני רק אומר ארבעה. 139 00:06:34,480 --> 00:06:40,340 וזה מצביע על הבא צומת ברשימה המקושרת שלנו. 140 00:06:40,340 --> 00:06:42,220 ואין שום דבר לפני זה. 141 00:06:42,220 --> 00:06:45,800 אז יש לנו הקודם שלנו מצביע על שום דבר. 142 00:06:45,800 --> 00:06:48,110 במקרה זה, אנו מצביעים לאחור. 143 00:06:48,110 --> 00:06:50,960 בסדר, רק הגדרה שלי רשימה מקושרת לכאן. 144 00:06:50,960 --> 00:06:53,630 ויש לנו רשימה שמציינת למבנה הזה מלכתחילה. 145 00:06:53,630 --> 00:06:57,220 146 00:06:57,220 --> 00:07:00,485 אני לצייר עוד אחד ל למען השלמות. 147 00:07:00,485 --> 00:07:04,209 148 00:07:04,209 --> 00:07:06,117 OK. 149 00:07:06,117 --> 00:07:07,480 אני אצביע קדימה זה. 150 00:07:07,480 --> 00:07:09,550 ואני אצביע כי גב אחד. 151 00:07:09,550 --> 00:07:10,360 אופס, מצטער. 152 00:07:10,360 --> 00:07:12,710 כן, יש לי לאחור זה. 153 00:07:12,710 --> 00:07:15,548 154 00:07:15,548 --> 00:07:16,967 לעשות את זה שוב. 155 00:07:16,967 --> 00:07:18,330 בסדר, יש לנו ללכת. 156 00:07:18,330 --> 00:07:19,910 בסדר, יש את זה. 157 00:07:19,910 --> 00:07:21,780 OK, הנה התמונה שלנו. 158 00:07:21,780 --> 00:07:24,860 >> אוקיי, אז אנחנו רוצים לשקול שני מקרים. 159 00:07:24,860 --> 00:07:27,330 המקרה הראשון הוא אם צומת שאנחנו רוצים למחוק 160 00:07:27,330 --> 00:07:29,420 הוא בתחילת מאוד של הרשימה שלנו. 161 00:07:29,420 --> 00:07:34,070 ולאחר מכן, המקרה השני שאנחנו רוצים לקחת בחשבון הוא אם זה בכל מקום אחר. 162 00:07:34,070 --> 00:07:37,660 אני מבין שזה לגמרי מבולגן ציור עם כל המחיקה שלי, 163 00:07:37,660 --> 00:07:40,400 אבל אני מקווה שננסה להבהיר זאת עם כמה קוד. 164 00:07:40,400 --> 00:07:45,450 >> אוקיי, אז בואו לכסות את המקרה שם מצאנו צומתנו, 165 00:07:45,450 --> 00:07:48,900 וזה ממש ב תתחיל מהרשימה המקושרת שלנו. 166 00:07:48,900 --> 00:07:50,810 כל אחד ייתן לי הצעה כאן על מה 167 00:07:50,810 --> 00:07:54,684 אני צריך לעשות בעצם כדי להסיר הצומת שלנו? 168 00:07:54,684 --> 00:07:55,970 זה קצת מסובך. 169 00:07:55,970 --> 00:07:56,470 בסדר? 170 00:07:56,470 --> 00:07:59,628 >> קהל: אתה צריך לקחת צומת שתהיה לפני ש 171 00:07:59,628 --> 00:08:01,794 ולעשות את זה מצביע על אחד שיהיה אחרי זה, 172 00:08:01,794 --> 00:08:03,004 ולקחת את הצומת ש יהיה אחריו ולהפוך את 173 00:08:03,004 --> 00:08:04,554 זה מצביע על הצומת לפני ש. 174 00:08:04,554 --> 00:08:05,220 חנה: בדיוק. 175 00:08:05,220 --> 00:08:10,640 אוקיי, אז זה המקרה where-- יש לנו שני מקרים. 176 00:08:10,640 --> 00:08:14,100 יש לנו המקרה שבו צומת שאנחנו מחפשים 177 00:08:14,100 --> 00:08:18,270 הוא מול הרשימה. 178 00:08:18,270 --> 00:08:23,110 OK, ולאחר מכן במקרה שאתה תיארתי הוא אחרת, נכון? 179 00:08:23,110 --> 00:08:24,500 זה במקום אחר ברשימה. 180 00:08:24,500 --> 00:08:27,460 181 00:08:27,460 --> 00:08:32,840 אז אתה אמר, אנחנו צריכים מסתכל הצומת הקודמת, 182 00:08:32,840 --> 00:08:36,500 ולהפוך את הצומת הקודמת להצביע לקשר הבא. 183 00:08:36,500 --> 00:08:40,510 אז בואו נגיד שאנחנו מנסה להוציא את חמש 184 00:08:40,510 --> 00:08:43,059 בציור מאוד המבולגן שלי כאן. 185 00:08:43,059 --> 00:08:47,530 אנחנו רוצים לוודא ש ארבעה עכשיו מצביעים על שש. 186 00:08:47,530 --> 00:08:49,590 של ארבעה נקודות הבאות לשש. 187 00:08:49,590 --> 00:08:52,150 ושל שש נקודות קודמות לארבעה. 188 00:08:52,150 --> 00:08:53,960 זו המטרה שלנו כאן, נכון? 189 00:08:53,960 --> 00:08:56,150 זה מה שאני חושב שאתה רק אמר שם. 190 00:08:56,150 --> 00:08:58,450 >> אוקיי, אז בואו לקבל את זה החתיכה ראשונה. 191 00:08:58,450 --> 00:09:02,300 בואו לעשות של לי מצביע קודם קודם. 192 00:09:02,300 --> 00:09:06,550 193 00:09:06,550 --> 00:09:09,690 אז של ארבעה הבאים צריכים להצביע על מה? 194 00:09:09,690 --> 00:09:13,210 195 00:09:13,210 --> 00:09:14,900 בדיוק, במקרה זה, שש. 196 00:09:14,900 --> 00:09:18,470 אז אנחנו צריכים לומר מצביע, הבא. 197 00:09:18,470 --> 00:09:20,600 בסדר? 198 00:09:20,600 --> 00:09:21,150 בְּסֵדֶר. 199 00:09:21,150 --> 00:09:24,870 אז בואו להיפטר מהתמונה המכוערת הזאת ולנסות לצייר אחד מעט יותר נחמד. 200 00:09:24,870 --> 00:09:29,040 201 00:09:29,040 --> 00:09:31,172 יש לנו ראש הרשימה שלנו כאן. 202 00:09:31,172 --> 00:09:36,440 203 00:09:36,440 --> 00:09:42,740 וזה מצביע על הצומת הראשונה ב הרשימה שלנו קשורה, שאמרנו היא ארבע. 204 00:09:42,740 --> 00:09:45,620 הנה הצומת השנייה שלנו, חמש. 205 00:09:45,620 --> 00:09:47,307 והצומת השלישית שלנו, שש. 206 00:09:47,307 --> 00:09:50,265 רק מנסה לצייר את אותו הדבר תמונה, רק קצת יותר נקי. 207 00:09:50,265 --> 00:09:52,780 208 00:09:52,780 --> 00:09:56,280 אוקיי, אז הבא של ארבעה במקור מצביע על חמש. 209 00:09:56,280 --> 00:09:58,620 של חמש נקודות הבאות לשש. 210 00:09:58,620 --> 00:10:00,170 של שש נקודות קודמות לחמש. 211 00:10:00,170 --> 00:10:02,470 ושל חמש נקודות קודמות לארבעה. 212 00:10:02,470 --> 00:10:03,360 כל כך הרבה יותר נחמד! 213 00:10:03,360 --> 00:10:04,530 OK, מגניב. 214 00:10:04,530 --> 00:10:07,770 >> אז עכשיו, מה שעשינו רק כאן, שורת קוד הזאת, 215 00:10:07,770 --> 00:10:12,680 שאומר מצביע קודם הבא, אז מה זה אומר? 216 00:10:12,680 --> 00:10:17,540 כלומר, אם אנחנו מסתכלים על חמש, ללכת לצומת הקודמת, 217 00:10:17,540 --> 00:10:21,970 וזה הבא צריך עכשיו נקודה לחמש של הבא. 218 00:10:21,970 --> 00:10:27,840 אז למעשה, מה זה עושה הוא זה מוחק את החץ הזה 219 00:10:27,840 --> 00:10:29,640 ומה שהופך את לדלג תקין בחמש. 220 00:10:29,640 --> 00:10:31,360 האם זה ברור? 221 00:10:31,360 --> 00:10:33,200 אני יודע שיכול להיות קצת גס. 222 00:10:33,200 --> 00:10:34,480 אני רואה כמה הנהוני ראש. 223 00:10:34,480 --> 00:10:35,390 זה טוב. 224 00:10:35,390 --> 00:10:36,670 OK, מגניב. 225 00:10:36,670 --> 00:10:39,590 עכשיו, מה הצעד הבא? 226 00:10:39,590 --> 00:10:42,060 >> אני כבר לאפס הבא. 227 00:10:42,060 --> 00:10:45,297 עכשיו, חץ אחר ש אני צריך לעשות כדי לשנות? 228 00:10:45,297 --> 00:10:46,130 זה אחד ממש כאן. 229 00:10:46,130 --> 00:10:47,560 של שש קודם. 230 00:10:47,560 --> 00:10:50,620 אנחנו לא רוצים שישה של קודמים כדי להצביע על חמש יותר. 231 00:10:50,620 --> 00:10:54,580 אנחנו רוצים את זה כדי להצביע על ארבעה. 232 00:10:54,580 --> 00:10:56,190 האם תמונה שהגיונית? 233 00:10:56,190 --> 00:10:58,370 אז עכשיו אנחנו יכולים למעשה לקחת חמש החוצה. 234 00:10:58,370 --> 00:10:59,370 אז בואו לקבל חתיכה ש. 235 00:10:59,370 --> 00:11:03,390 236 00:11:03,390 --> 00:11:11,180 מה עליי לעשות לפני ש לאפס שש של קודם לארבעה? 237 00:11:11,180 --> 00:11:14,360 יש לך רעיונות לשם? 238 00:11:14,360 --> 00:11:17,369 >> קהל: שחרר את הצומת בין שלהם על ידי הגדרתו לnull? 239 00:11:17,369 --> 00:11:17,910 חנה: מגניב. 240 00:11:17,910 --> 00:11:21,100 בהחלט, המטרה הסופית שלנו היא הולך להיות לשחרר את הצומת. 241 00:11:21,100 --> 00:11:22,490 אז אנחנו יכולים לעשות את זה כאן. 242 00:11:22,490 --> 00:11:23,540 מצביע חינם. 243 00:11:23,540 --> 00:11:24,810 בהחלט. 244 00:11:24,810 --> 00:11:29,160 אבל עוד לפני ש, בואו פשוט- תקין המטרה שלנו 245 00:11:29,160 --> 00:11:38,730 כאן הוא להגדיר מצביע הבא קודם שווה למצביע קודם. 246 00:11:38,730 --> 00:11:40,760 אני יודע שזה הוא מקבל מכוסה. 247 00:11:40,760 --> 00:11:45,440 OK, בואו take-- מגניב. 248 00:11:45,440 --> 00:11:46,990 יכול כולם לראות את שורה תחתונה זה? 249 00:11:46,990 --> 00:11:47,840 או שזה סופר זעיר? 250 00:11:47,840 --> 00:11:50,430 251 00:11:50,430 --> 00:11:54,300 >> אז לפני שאנו מבצעים הקו הזה כאן, אנחנו רוצים 252 00:11:54,300 --> 00:11:58,375 לוודא כי המצביע הוא הבא לא ריק. 253 00:11:58,375 --> 00:12:00,500 כי אם המצביע הבא הוא null, איזה סוג של שגיאה 254 00:12:00,500 --> 00:12:02,727 יהיה שאני מקבל כאשר אני מנסה התייחסות מצביע null? 255 00:12:02,727 --> 00:12:03,560 קהל: אשמת צינוק. 256 00:12:03,560 --> 00:12:05,660 חנה: אשמת SEG, יפה. 257 00:12:05,660 --> 00:12:09,690 אוקיי, אז אם זה לא null, אז אנחנו יכולים לאפס. 258 00:12:09,690 --> 00:12:14,420 ויש לנו שש נקודות שוב לארבעה. 259 00:12:14,420 --> 00:12:17,440 שאלות עד לנקודה זו? 260 00:12:17,440 --> 00:12:17,940 כן? 261 00:12:17,940 --> 00:12:19,814 >> קהל: בך הראשון אם הצהרה, עשיתי לך 262 00:12:19,814 --> 00:12:23,817 אומר שיש על החץ הבא, או [לא ברור]? 263 00:12:23,817 --> 00:12:25,150 חנה: התכוונתי n חץ מצביע. 264 00:12:25,150 --> 00:12:30,270 אז בעצם, מה שאני מנסה לעשות הוא אומר, הצומת הנוכחית שאני 265 00:12:30,270 --> 00:12:34,100 , הצומת הנוכחית iterating על ש אני מסתכל, אני אחסון במצביע. 266 00:12:34,100 --> 00:12:37,630 ואני רוצה לדעת מצביע של ערך, אשר במקרה זה הוא n. 267 00:12:37,630 --> 00:12:39,500 ואני רוצה לראות, הוא הצומת אני מחפש 268 00:12:39,500 --> 00:12:42,790 לצומת שאני מכוון למחיקה? 269 00:12:42,790 --> 00:12:47,657 אז זאת הסיבה שיש לנו כאן מצביע n. 270 00:12:47,657 --> 00:12:49,857 >> קהל: אז החץ הולך לn, תגדיר את הערך 271 00:12:49,857 --> 00:12:52,058 ולאחסן אותו בצומת נקראת n? 272 00:12:52,058 --> 00:12:55,410 273 00:12:55,410 --> 00:12:58,820 >> חנה: אז זה כמו שאם אני עובר רשימה מקושרת זה 274 00:12:58,820 --> 00:13:00,310 ומצביע על חמש. 275 00:13:00,310 --> 00:13:03,600 אם אני רוצה לקבל ערך ש, אם אני רוצה לקבל את המספר הזה, 5, 276 00:13:03,600 --> 00:13:06,400 אני צריך לעשות n חץ מצביע. 277 00:13:06,400 --> 00:13:06,900 מגניב? 278 00:13:06,900 --> 00:13:07,900 כן. 279 00:13:07,900 --> 00:13:11,200 >> קהל: הוא n השם המשתנה? 280 00:13:11,200 --> 00:13:11,700 חנה: כן. 281 00:13:11,700 --> 00:13:14,870 אז אם אנחנו להעיף בחזרה אחד שקופיות, n הוא השם 282 00:13:14,870 --> 00:13:18,660 של הערך הפנימי של צומת ברשימה המקושרת שלנו. 283 00:13:18,660 --> 00:13:21,510 ואני יודע שזה יכול להיות קצת קצת מבלבל גם בגלל ש 284 00:13:21,510 --> 00:13:24,680 קוראים דבר שאנחנו רוצים למחוק את n. 285 00:13:24,680 --> 00:13:26,717 אז זה המקום שבי ש קו אחד מגיע מ. 286 00:13:26,717 --> 00:13:27,671 כן? 287 00:13:27,671 --> 00:13:31,010 >> קהל: מה יש לך [לא ברור] הם איך עובדים? 288 00:13:31,010 --> 00:13:33,872 289 00:13:33,872 --> 00:13:35,780 מצביע [לא ברור]? 290 00:13:35,780 --> 00:13:37,520 >> חנה: בטח. 291 00:13:37,520 --> 00:13:40,027 אתה מדבר? על-- ששורה 292 00:13:40,027 --> 00:13:41,526 קהל: השורה האחרונה [לא ברור]. 293 00:13:41,526 --> 00:13:44,280 294 00:13:44,280 --> 00:13:45,250 >> חנה: בטח, OK. 295 00:13:45,250 --> 00:13:48,540 אז בואו נסתכל על התמונה ב כדי לנסות ולהסביר את זה. 296 00:13:48,540 --> 00:13:51,030 אני מצטער, ל מצלמה, השאלה הייתה 297 00:13:51,030 --> 00:13:54,580 אפשר להסביר מצביע חץ המצביע הבא קודם. 298 00:13:54,580 --> 00:14:01,510 אוקיי, אז נניח שאנחנו בחמש והמטרה שלנו היא למחוק חמש. 299 00:14:01,510 --> 00:14:07,240 אז מצביע הבא, שמהן שלושה צמתים שאין לנו? 300 00:14:07,240 --> 00:14:10,840 זה מביא אותנו לצומת השישית, נכון? 301 00:14:10,840 --> 00:14:16,490 >> אוקיי, אז עכשיו אנחנו מבקשים לשל שש קודמים. 302 00:14:16,490 --> 00:14:17,060 בסדר? 303 00:14:17,060 --> 00:14:20,210 ואנחנו איפוס זה להיות שווה לארבעה, 304 00:14:20,210 --> 00:14:23,214 שהיה במקרה של חמש קודמים. 305 00:14:23,214 --> 00:14:25,180 אני יודע, זה סופר קשה לעקוב אחר. 306 00:14:25,180 --> 00:14:29,286 אני באמת ממליץ לך לצייר תמונות אם אתה מקבל שאלה כזאת. 307 00:14:29,286 --> 00:14:30,242 כן? 308 00:14:30,242 --> 00:14:32,617 >> קהל: האם הסיבה ש אין לנו [לא ברור]? 309 00:14:32,617 --> 00:14:37,430 310 00:14:37,430 --> 00:14:38,570 >> חנה: בדיוק. 311 00:14:38,570 --> 00:14:44,800 אז השאלה הייתה, מדוע לעשות אנחנו לא צריכים לבדוק כאן? 312 00:14:44,800 --> 00:14:48,160 למה אנחנו לא צריכים לבדוק ש המצביע קודם הוא לא שווה ל null? 313 00:14:48,160 --> 00:14:50,070 וזה בגלל שיש לנו הופרד כבר 314 00:14:50,070 --> 00:14:52,490 המקרה אם של המצביע ממש בהתחלה. 315 00:14:52,490 --> 00:14:54,060 שאלה טובה מאוד. 316 00:14:54,060 --> 00:14:56,880 שום דבר על זה אחר? 317 00:14:56,880 --> 00:14:57,380 OK, מגניב. 318 00:14:57,380 --> 00:14:58,360 אז בואו נסיים את זה. 319 00:14:58,360 --> 00:14:59,890 אנחנו כמעט שם. 320 00:14:59,890 --> 00:15:01,310 >> אז מה אם זה בראש? 321 00:15:01,310 --> 00:15:03,360 מה אם במקום מנסה למחוק חמש, 322 00:15:03,360 --> 00:15:06,240 אנחנו באמת רוצים למחוק ארבעה? 323 00:15:06,240 --> 00:15:07,270 מה הייתי צריך לעשות? 324 00:15:07,270 --> 00:15:09,610 ובכן, אני רוצה לאפס את הראש שלי למה? 325 00:15:09,610 --> 00:15:14,288 326 00:15:14,288 --> 00:15:15,585 לצעוק את זה? 327 00:15:15,585 --> 00:15:16,710 קהל: אחד אחריו. 328 00:15:16,710 --> 00:15:17,460 חנה: יפה. 329 00:15:17,460 --> 00:15:26,430 OK, אז אנחנו רוצים לרשום להצבעה לכל מה שהצומת הבאה המצביע שלנו היא. 330 00:15:26,430 --> 00:15:29,040 טוב. 331 00:15:29,040 --> 00:15:30,810 ורק בשביל השלמות של למען, הייתי 332 00:15:30,810 --> 00:15:35,590 רוצה לבדוק כל עוד שכפי שהרשימה שלנו אינו null, כל עוד הרשימה שלנו היא לא 333 00:15:35,590 --> 00:15:42,730 ריק, אז אנחנו רוצים להגדיר הקודם השווה null. 334 00:15:42,730 --> 00:15:46,960 335 00:15:46,960 --> 00:15:50,230 שאלה עד כה? 336 00:15:50,230 --> 00:15:53,205 צעד אחד from-- משם? 337 00:15:53,205 --> 00:15:55,530 >> קהל: האם זה יהיה אם הרשימה אינה שווה לnull? 338 00:15:55,530 --> 00:15:56,950 >> חנה: כן, אתה צודק לחלוטין. 339 00:15:56,950 --> 00:15:58,130 אני כל כך מצטער. 340 00:15:58,130 --> 00:16:00,040 האם הרשימה היא לא שווה ל null. 341 00:16:00,040 --> 00:16:01,915 מדהים. 342 00:16:01,915 --> 00:16:04,245 מנסה להביא את זה כל על המסך. 343 00:16:04,245 --> 00:16:06,870 זה סוג של הנפילה. 344 00:16:06,870 --> 00:16:07,730 מצטער, חבר'ה. 345 00:16:07,730 --> 00:16:11,874 ואחרון אחרון חביב, כל אנחנו צריכים לעשות הוא לחזור. 346 00:16:11,874 --> 00:16:12,840 OK. 347 00:16:12,840 --> 00:16:15,400 זה היה הרבה דחוס בבאמת במהירות. 348 00:16:15,400 --> 00:16:16,800 קח רגע כדי להסתכל על זה. 349 00:16:16,800 --> 00:16:18,216 תגיד לי אם יש לך שאלות. 350 00:16:18,216 --> 00:16:20,232 351 00:16:20,232 --> 00:16:20,732 כן? 352 00:16:20,732 --> 00:16:26,940 >> קהל: אם רשימה היא ב הראש, then-- לחכות, Nevermind. 353 00:16:26,940 --> 00:16:27,700 >> חנה: OK, טוב. 354 00:16:27,700 --> 00:16:30,987 אז זה אם רשימה היא בראש, אנו מסירים אותו לכל מה שאנו מוכנסים. 355 00:16:30,987 --> 00:16:31,486 כן? 356 00:16:31,486 --> 00:16:33,777 >> קהל: האם אתה יכול להסביר הראשון אם הצהרה שוב? 357 00:16:33,777 --> 00:16:36,149 אם את המצביע לn שווה לn? 358 00:16:36,149 --> 00:16:36,690 חנה: בטח. 359 00:16:36,690 --> 00:16:42,780 אז המטרה של כל פונקציה זו שלנו היא כדי למחוק את הצומת שיש n הערך. 360 00:16:42,780 --> 00:16:47,460 אז אם אנו מוצאים, כאנחנו iterating דרך הרשימה שלנו, 361 00:16:47,460 --> 00:16:51,770 הצומת עם n הערך, זה אחד שאנחנו רוצים למחוק. 362 00:16:51,770 --> 00:16:57,286 אז כל המחיקה קורה בתוך כך גדול אם ההצהרה. 363 00:16:57,286 --> 00:16:58,593 האם זה הגיוני? 364 00:16:58,593 --> 00:16:59,480 מגניב. 365 00:16:59,480 --> 00:16:59,990 כן? 366 00:16:59,990 --> 00:17:02,864 >> קהל: אולי אתה פשוט לא יכול לראות את זה, אבל אתה לא צריך גם קו 367 00:17:02,864 --> 00:17:06,024 לגלילה ברשימה? 368 00:17:06,024 --> 00:17:06,690 חנה: מדהימה. 369 00:17:06,690 --> 00:17:10,896 בואו נביא את זה קצת, ו אנחנו נזרוק תקין שבתחתית. 370 00:17:10,896 --> 00:17:13,282 371 00:17:13,282 --> 00:17:15,490 אולי הלוח היה לי היה רעיון קצת יותר טוב. 372 00:17:15,490 --> 00:17:17,829 אז איך הייתי להעביר את סמן קדימה? 373 00:17:17,829 --> 00:17:20,184 >> קהל: פוינטר שווה מצביע ועוד אחד. 374 00:17:20,184 --> 00:17:21,599 >> חנה: יפה. 375 00:17:21,599 --> 00:17:25,050 כך שמאפשר לנו תמשיך iterating דרך. 376 00:17:25,050 --> 00:17:26,251 OK. 377 00:17:26,251 --> 00:17:27,750 קהל: האם לא יהיה אחר? 378 00:17:27,750 --> 00:17:29,028 חנה: עוד פעם אחת? 379 00:17:29,028 --> 00:17:32,444 קהל: האם לא יהיה אחר לאחר גדול הישן אם 380 00:17:32,444 --> 00:17:35,519 הצהרה [לא ברור]? 381 00:17:35,519 --> 00:17:36,310 חנה: איזה חלק? 382 00:17:36,310 --> 00:17:38,350 אני מצטער. 383 00:17:38,350 --> 00:17:41,800 >> קהל: חציה, לא צריך להיות אחר? 384 00:17:41,800 --> 00:17:43,550 חנה: אתה בהחלט יכול להיות אחר. 385 00:17:43,550 --> 00:17:46,930 בגלל שיש לי זכות שיבה שם, אתה לא צריך עוד. 386 00:17:46,930 --> 00:17:48,760 אבל כן, שאלה טובה. 387 00:17:48,760 --> 00:17:50,170 OK, כן? 388 00:17:50,170 --> 00:17:52,878 קהל: האם אנחנו יכולים לחשוב על מצביע כי הוא נע ברשימה 389 00:17:52,878 --> 00:17:56,610 כלוקח על הערך של כל צומת ברשימה? 390 00:17:56,610 --> 00:18:00,650 או שאנחנו צריכים לחשוב על זה כ סוג של חיצוני לרשימה? 391 00:18:00,650 --> 00:18:02,350 >> חנה: או אחד היא בסדר, אני חושב. 392 00:18:02,350 --> 00:18:05,880 כמו שאני מניח שזה הוא אני אומר, אוקיי, אני מצביע. 393 00:18:05,880 --> 00:18:06,520 וזה לי. 394 00:18:06,520 --> 00:18:07,150 זה היד שלי. 395 00:18:07,150 --> 00:18:09,960 אני הולך להצביע על שונה דברים שאני רוצה לחזר דרך. 396 00:18:09,960 --> 00:18:12,270 ראשית, אני הולך להצביע לראש הרשימה. 397 00:18:12,270 --> 00:18:14,144 וזה אומר לי שאני הולך להצביע על ארבעה. 398 00:18:14,144 --> 00:18:18,060 וכך, להיות חיצוני לרשימה, אני יכול להצביע על כל אחד מהמרכיבים האלה. 399 00:18:18,060 --> 00:18:19,520 אז אני חושב על עצמי כמצביע. 400 00:18:19,520 --> 00:18:21,645 קהל: אז כאשר אתה מוחק אחד מהמרכיבים האלה, 401 00:18:21,645 --> 00:18:23,404 אתה מוחק את עצמך, אם אפשר לומר כך. 402 00:18:23,404 --> 00:18:24,070 חנה: בדיוק. 403 00:18:24,070 --> 00:18:25,920 אז אתה מוחק את הדבר אתה מצביע. 404 00:18:25,920 --> 00:18:28,340 אז בדוגמא ש ראינו בו אנו נמצאים 405 00:18:28,340 --> 00:18:31,670 מנסה למחוק חמש, כשאני מצביע על חמש, 406 00:18:31,670 --> 00:18:34,200 אני רוצה למחוק דבר שאני מצביע. 407 00:18:34,200 --> 00:18:35,870 בדיוק נכון. 408 00:18:35,870 --> 00:18:36,577 כן? 409 00:18:36,577 --> 00:18:39,410 קהל: האם אנו טופלו מקרה שבו n הוא לא ברשימה? 410 00:18:39,410 --> 00:18:40,460 חנה: אם n הוא לא ברשימה? 411 00:18:40,460 --> 00:18:43,501 כל מה שהולך לקרות הוא שאתה הולך לחזר דרך ולחזר 412 00:18:43,501 --> 00:18:47,616 דרך, ולאחר מכן, אתה הולך כדי להגיע למצביע null להיות, 413 00:18:47,616 --> 00:18:48,990 ואז אתה הולך לעשות. 414 00:18:48,990 --> 00:18:50,812 >> קהל: לעשות אז יש לנו לחזור משהו? 415 00:18:50,812 --> 00:18:51,520 חנה: אנחנו יכולים. 416 00:18:51,520 --> 00:18:54,500 כך שאם זה מוגדר פונקציה, אני רק אומר שזה חוזר 417 00:18:54,500 --> 00:18:55,770 לבטל את קשר. 418 00:18:55,770 --> 00:18:58,360 אבל אתה יכול להיות משהו כמו חוזר מספר שלם, 419 00:18:58,360 --> 00:19:00,920 ויש לו לחזור שלילי 1 אם זה לא מצליח. 420 00:19:00,920 --> 00:19:03,070 משהו כזה. 421 00:19:03,070 --> 00:19:04,494 שאלות with-- כן? 422 00:19:04,494 --> 00:19:05,410 קהל: [לא ברור]? 423 00:19:05,410 --> 00:19:05,993 חנה: מצטער? 424 00:19:05,993 --> 00:19:07,419 קהל: [לא ברור]? 425 00:19:07,419 --> 00:19:07,960 חנה: בטח. 426 00:19:07,960 --> 00:19:11,730 אז זה actual-- פעם יש לנו כל העבודה הזאת נעשתה נעים 427 00:19:11,730 --> 00:19:16,530 כל החיצים האלה מסביב, כולנו המטרה הייתה להיפטר מהצומת 428 00:19:16,530 --> 00:19:18,230 שאנחנו מחפשים. 429 00:19:18,230 --> 00:19:21,610 אז במקרה הזה, לשחרר מצביע, אם אני מצביע לחמישה, 430 00:19:21,610 --> 00:19:24,670 זה כמו מחיקת צומת אמצע זה. 431 00:19:24,670 --> 00:19:27,250 זה חלק המצביע החופשי. 432 00:19:27,250 --> 00:19:29,090 כי תחושה? איפור 433 00:19:29,090 --> 00:19:31,390 >> קהל: אז גם חשב אתה לא [לא ברור]? 434 00:19:31,390 --> 00:19:36,060 >> חנה: אז הנחנו בתחילת היו לנו כמה רשימה שהייתה already-- 435 00:19:36,060 --> 00:19:37,220 הם לשים את זה ביחד. 436 00:19:37,220 --> 00:19:39,761 אז כדי לבנות את זה רשימה, הם בטח [לא ברורים]. 437 00:19:39,761 --> 00:19:42,190 438 00:19:42,190 --> 00:19:42,750 מגניב. 439 00:19:42,750 --> 00:19:44,490 כל דבר אחר עם זה? 440 00:19:44,490 --> 00:19:46,386 כן? 441 00:19:46,386 --> 00:19:49,204 >> קהל: מה אם הרשימה אינו שווה לקו האפס? 442 00:19:49,204 --> 00:19:49,704 [לא ברור]? 443 00:19:49,704 --> 00:19:52,289 444 00:19:52,289 --> 00:19:53,080 חנה: ממש כאן? 445 00:19:53,080 --> 00:19:53,840 קהל: כן. 446 00:19:53,840 --> 00:19:57,370 חנה: OK, כל מה שאני עושה הוא אני רק מוודא 447 00:19:57,370 --> 00:20:03,250 לפני שאני מנסה לרשימת dereference, לפני שאני מנסה לגשת קודם, 448 00:20:03,250 --> 00:20:07,210 אני רוצה לוודא שזה לא null אז אני לא מקבל אשמת צינוק. 449 00:20:07,210 --> 00:20:08,400 מגניב. 450 00:20:08,400 --> 00:20:10,820 >> בסדר, אני יודע שזה היה די הרבה לעבור אותו. 451 00:20:10,820 --> 00:20:14,950 אז שקופית זו תהיה עומד לרשותך. 452 00:20:14,950 --> 00:20:17,341 אז אתה יכול לעבור את זה בפירוט רב יותר. 453 00:20:17,341 --> 00:20:17,841 כן? 454 00:20:17,841 --> 00:20:19,749 >> קהל: מדוע [לא ברור] ברשימה? 455 00:20:19,749 --> 00:20:24,129 456 00:20:24,129 --> 00:20:24,670 חנה: בטח. 457 00:20:24,670 --> 00:20:27,390 אז רשימה באמת מצביעה על אלמנט זה ממש כאן, 458 00:20:27,390 --> 00:20:29,200 האלמנט הראשון ברשימה. 459 00:20:29,200 --> 00:20:30,748 כך שזה לא יכול להיות קודם. 460 00:20:30,748 --> 00:20:31,736 כן? 461 00:20:31,736 --> 00:20:35,194 >> קהל: האם נקודת המצביע לאותה הכתובת בזיכרון? 462 00:20:35,194 --> 00:20:38,404 האם זה מצביע על אותו כתובת בזיכרון כצומת 463 00:20:38,404 --> 00:20:40,640 שזה מצביע על? 464 00:20:40,640 --> 00:20:43,865 >> חנה: כן, זה מצביע לצומת זה בזיכרון. 465 00:20:43,865 --> 00:20:47,190 >> קהל: נכון, כל כך כאשר [לא ברור]? 466 00:20:47,190 --> 00:20:50,580 >> חנה: במובן מסוים, כן. 467 00:20:50,580 --> 00:20:51,280 OK. 468 00:20:51,280 --> 00:20:52,997 בסדר, בואו נעבור יחד עם זה. 469 00:20:52,997 --> 00:20:55,330 ואם יש לכם עוד שאלות, להישאר בסביבה בסוף, 470 00:20:55,330 --> 00:20:57,130 ואנחנו יכולים לעבור את זה שוב. 471 00:20:57,130 --> 00:20:58,120 OK, מגניב. 472 00:20:58,120 --> 00:21:00,490 עכשיו, אנחנו מקבלים לנוע ב חשיש שולחנות, ניסיונות, 473 00:21:00,490 --> 00:21:04,940 ועצים, שיש לך סופר מכיר באיות חמש, להגדיר p-. 474 00:21:04,940 --> 00:21:11,020 >> אז שולחן חשיש רק מערך עם רשימות מקושרות ביחידים 475 00:21:11,020 --> 00:21:14,050 או צמוד כפליים רשימות יורדים ממנו. 476 00:21:14,050 --> 00:21:16,380 אז יש לנו סוג כלשהו של מערך אסוציאטיבי. 477 00:21:16,380 --> 00:21:21,280 ואיך אנחנו יודעים מי אלה מערכי דליים להיכנס, 478 00:21:21,280 --> 00:21:24,137 אנו משתמשים בפונקצית חשיש. 479 00:21:24,137 --> 00:21:26,470 אז במקרה הזה, כל אחד יכול נחש מה פונקצית החשיש 480 00:21:26,470 --> 00:21:28,636 היה רק ​​להיות מבוסס על כמה של הקלט והפלט? 481 00:21:28,636 --> 00:21:31,392 482 00:21:31,392 --> 00:21:33,194 >> קהל: מספר מכתב של האלפבית. 483 00:21:33,194 --> 00:21:33,860 חנה: בדיוק. 484 00:21:33,860 --> 00:21:36,160 זה פשוט מכניס אותם לפי סדר אלפביתי. 485 00:21:36,160 --> 00:21:39,280 כל מה שמתחיל ב הוא הכניס לתוך הדלי הראשון. 486 00:21:39,280 --> 00:21:43,340 כל מה שעם B הוא להכניס דלי שני, כן הלאה, וכן הלאה. 487 00:21:43,340 --> 00:21:45,620 מדהים, על אישור. 488 00:21:45,620 --> 00:21:48,980 ופונקציה חשיש היא כל פונקציה שלוקחת במילה 489 00:21:48,980 --> 00:21:51,910 ואגיד לך מה דלי הוא שייך ב. 490 00:21:51,910 --> 00:21:55,150 אז איזה ערך בנו מערך זה שייך ב. 491 00:21:55,150 --> 00:21:58,080 >> אז בכל פעם שאני נותן לי חשיש לתפקד מילה, 492 00:21:58,080 --> 00:22:00,660 זה צריך להגיד לי את אותו מקום כל זמן. 493 00:22:00,660 --> 00:22:03,270 אז אם אנו משתמשים בפונקצית החשיש מהשקף הקודם 494 00:22:03,270 --> 00:22:05,950 לאן אנחנו ממיינים לפי אות הראשונה של האלפבית, 495 00:22:05,950 --> 00:22:08,230 בכל פעם שאני נותן לי פונקצית חשיש "תפוח" 496 00:22:08,230 --> 00:22:10,180 זה תמיד צריך להחזיר לי 0. 497 00:22:10,180 --> 00:22:12,890 אז אם יש לי תפוח לשים בטבלת החשיש שלי, 498 00:22:12,890 --> 00:22:17,700 אם אני נותן "תפוח" לפונקצית hash שלי, זה צריך לומר, ללכת לשים אותו בדלי 0. 499 00:22:17,700 --> 00:22:19,980 אם אני מחפש תפוח בטבלת החשיש שלי 500 00:22:19,980 --> 00:22:24,340 ואני אומר, שבו תפוח כוח חי, אתה שואל את פונקצית hash שלך. 501 00:22:24,340 --> 00:22:26,900 וזה אומר, ללכת לדלי 0. 502 00:22:26,900 --> 00:22:29,150 בסדר? 503 00:22:29,150 --> 00:22:32,660 שאלות עם פונקציות חשיש? 504 00:22:32,660 --> 00:22:34,570 מדהים. 505 00:22:34,570 --> 00:22:37,320 >> הנה מעט יותר הסבר מפורט 506 00:22:37,320 --> 00:22:39,570 של מה פונקצית חשיש עשויה להיראות. 507 00:22:39,570 --> 00:22:42,230 508 00:22:42,230 --> 00:22:42,960 בְּסֵדֶר. 509 00:22:42,960 --> 00:22:45,960 עכשיו, הבעיה עם חשיש פונקציות היא בעולם אידיאלי, 510 00:22:45,960 --> 00:22:48,870 תהיה לנו רק אחד דבר בכל אחד מהסלים. 511 00:22:48,870 --> 00:22:50,900 אבל במציאות, יש לא רק מילה אחת 512 00:22:50,900 --> 00:22:54,280 שמתחיל עם א 'יש לא רק מילה אחת שמתחילה עם B. אז 513 00:22:54,280 --> 00:22:56,960 במקרה זה, אם פתאום "ברי", 514 00:22:56,960 --> 00:22:58,710 ואנחנו רוצים לשים את זה לטבלת הגיבוב שלנו, 515 00:22:58,710 --> 00:23:03,640 ואנחנו רואים, אה, לא, בננה היא כבר שם, מה אנחנו הולכים לעשות? 516 00:23:03,640 --> 00:23:05,900 >> ובכן, יש לנו שתי אפשרויות. 517 00:23:05,900 --> 00:23:07,990 האפשרות הראשונה היא ליניארי חיטוט, ש 518 00:23:07,990 --> 00:23:11,100 רק אומר לך תמצא הדלי הריק הבא. 519 00:23:11,100 --> 00:23:14,100 לך תמצא את כניסת המערך הריקה הבאה. 520 00:23:14,100 --> 00:23:15,750 ופשוט לשים "ברי" לשם. 521 00:23:15,750 --> 00:23:18,880 אז אני יודע שזה אמור ללכת עם בננה בדלי אחד. 522 00:23:18,880 --> 00:23:22,155 אבל רק לשים אותו בדלי שלושה, כי דלי שלושה הוא ריקים. 523 00:23:22,155 --> 00:23:24,806 524 00:23:24,806 --> 00:23:26,680 אפשרות נוספת היא כנראה מה אתה מיישם 525 00:23:26,680 --> 00:23:29,220 בp-הסט שלך, שבו אתה היה שרשור נפרד. 526 00:23:29,220 --> 00:23:33,990 אז כל אחד מהדליים שלך, כל אחד מהאלמנטים במערך שלך, 527 00:23:33,990 --> 00:23:38,410 לא רק מחזיק באחד מילות, אך למעשה מחזיק מצביע לרשימה של מילות. 528 00:23:38,410 --> 00:23:41,880 כך שאם היה לך בננה בטבלת החשיש שלך 529 00:23:41,880 --> 00:23:44,740 ואתה רוצה פתאום כדי להוסיף פירות יער, אין בעיה. 530 00:23:44,740 --> 00:23:51,110 רק להוסיף פירות יער עד הסוף, או ל ההתחלה, של הרשימה המקושרת שלך. 531 00:23:51,110 --> 00:23:54,040 OK, מדהים. 532 00:23:54,040 --> 00:23:58,490 שאלות עם חשיש שולחנות לפני שאנחנו הולכים על? 533 00:23:58,490 --> 00:23:59,850 >> בְּסֵדֶר. 534 00:23:59,850 --> 00:24:01,070 עצים ומנסה. 535 00:24:01,070 --> 00:24:07,980 אוקיי, אז זה היה עוד אפשרות ליישום מילון. 536 00:24:07,980 --> 00:24:09,100 אתה יכול היה לנסות. 537 00:24:09,100 --> 00:24:13,420 אז זה סוג מיוחד של עץ ש מתנהג כמו שולחן חשיש רב ברמה. 538 00:24:13,420 --> 00:24:16,862 אז אתה תראה את התמונה שבו יש לך מערך ש 539 00:24:16,862 --> 00:24:19,320 מצביע על חבורה של מערכים נקודה שלחבורה של מערכים 540 00:24:19,320 --> 00:24:20,390 נקודה שלחבורה של מערכים. 541 00:24:20,390 --> 00:24:23,140 ואנו רואים בדיוק מה ש היה נראה כמו בשקופית עתיד. 542 00:24:23,140 --> 00:24:26,070 ואופן כללי יותר, עץ רק כל מבנה נתונים 543 00:24:26,070 --> 00:24:29,710 שבו נתונים הוא מאורגן בהיררכיה מסוימת. 544 00:24:29,710 --> 00:24:32,610 אז איפה ראינו שיש לנו הבנה כלשהי 545 00:24:32,610 --> 00:24:36,130 ברמה עליונה, רמה הבאה, הרמה הבאה, רמה הבאה. 546 00:24:36,130 --> 00:24:39,690 אז זה כנראה ברור ביותר עם כמה דוגמאות ספציפיות. 547 00:24:39,690 --> 00:24:40,880 אז הנה העץ שלנו. 548 00:24:40,880 --> 00:24:42,970 אתה יכול לראות שזה יש רמות מסוימות 549 00:24:42,970 --> 00:24:45,480 כי אנחנו מתחילים עם שצומת השורש, אחד. 550 00:24:45,480 --> 00:24:47,640 ואנחנו יכולים לרדת דרך העץ שלנו. 551 00:24:47,640 --> 00:24:50,730 552 00:24:50,730 --> 00:24:53,910 >> עץ בינארי הוא סוג מסוים של עץ. 553 00:24:53,910 --> 00:24:56,770 והמפרט רק לעץ בינארי 554 00:24:56,770 --> 00:25:01,130 הוא שיש כל צומת לכל היותר שני עלים. 555 00:25:01,130 --> 00:25:03,960 אז אתה לא הולך לראות את כל יש לי של בלוטות אלה שלוש או ארבעה 556 00:25:03,960 --> 00:25:06,880 או מספר אחר של עלים. 557 00:25:06,880 --> 00:25:11,310 ואז אפילו יותר ספציפי הוא עץ חיפוש בינארי 558 00:25:11,310 --> 00:25:18,010 שבו כל צומת בצד השמאל של צומת הוא הולכת להיות ערך קטן יותר. 559 00:25:18,010 --> 00:25:21,180 וכל ערך ל נכון הולך להיות גדול יותר. 560 00:25:21,180 --> 00:25:26,900 אז אם אתה רואה 44 הוא בשורש שלנו, משמאל, 11, 22, ו -33 561 00:25:26,900 --> 00:25:28,940 כולם פחות מהשורש שלנו. 562 00:25:28,940 --> 00:25:33,890 ועל זכותם כל מספרי bigger-- 66, 55, ו -77. 563 00:25:33,890 --> 00:25:37,380 ונכס זה נכון גם בכל רמה של העץ. 564 00:25:37,380 --> 00:25:42,690 >> לכן, כאשר אנחנו יורדים ל 22, 11, ו -33, עדיין 11 565 00:25:42,690 --> 00:25:46,950 הוא קטן יותר מ -22 ו 33 הוא גדולים יותר מ -22. 566 00:25:46,950 --> 00:25:50,160 וזה עושה את זה יותר קל לחפש כי אם אנחנו מחפשים מספר, 567 00:25:50,160 --> 00:25:53,877 אנחנו יודעים בדיוק ש סניף לעקוב למטה. 568 00:25:53,877 --> 00:25:56,210 כך זה צריך להזכיר לך קצת חיפוש בינארי. 569 00:25:56,210 --> 00:25:56,967 כן? 570 00:25:56,967 --> 00:25:58,835 >> קהל: אז כשאתה מתאר בינארי, 571 00:25:58,835 --> 00:26:00,587 אתה אמר שיש לו לכל היותר שני עלים? 572 00:26:00,587 --> 00:26:01,170 חנה: ממ-הממ. 573 00:26:01,170 --> 00:26:02,580 קהל: זה יכול להיות פחות? 574 00:26:02,580 --> 00:26:03,121 חנה: כן. 575 00:26:03,121 --> 00:26:06,720 אז בוא נגיד ש, למשל, אתה לא היה לי אפילו מספר דברים 576 00:26:06,720 --> 00:26:11,791 ואתה לא יכול למלא את כולך עלים, זה בסדר אם יש אחד אחד. 577 00:26:11,791 --> 00:26:12,290 בסדר? 578 00:26:12,290 --> 00:26:12,789 מדהים. 579 00:26:12,789 --> 00:26:15,930 כל שאלות אחרות על עצים? 580 00:26:15,930 --> 00:26:16,670 OK. 581 00:26:16,670 --> 00:26:20,110 >> חזרה לניסיונות שלנו כמו שאני מדבר על קצת קודם לכן, 582 00:26:20,110 --> 00:26:23,900 איך יש לנו מערכים מרובות רמות אלה. 583 00:26:23,900 --> 00:26:26,280 אז במקרה הזה, אנחנו מתחילים בראש. 584 00:26:26,280 --> 00:26:29,030 ואנחנו יכולים לעקוב אחר כל מילה שניתנה במורד. 585 00:26:29,030 --> 00:26:30,780 אז בואו נגיד שאנחנו רוצים לחפש טיורינג. 586 00:26:30,780 --> 00:26:34,380 אנחנו מתחילים ב- T, בצע אותו למערך שמכיל U, 587 00:26:34,380 --> 00:26:37,350 ובצע אותה עד ש להגיע הדלתא הקטנה הזה ש 588 00:26:37,350 --> 00:26:39,060 אומר לנו, כן, מצא את מילה. 589 00:26:39,060 --> 00:26:43,200 590 00:26:43,200 --> 00:26:44,120 ברור על ניסיונות? 591 00:26:44,120 --> 00:26:48,138 כל דבר ללכת לשם? 592 00:26:48,138 --> 00:26:48,908 כן? 593 00:26:48,908 --> 00:26:51,866 קהל: האם הסמל של דלתא צריך לכבוש שטח בתוך לנסות? 594 00:26:51,866 --> 00:26:54,532 חנה: כן, אז זה לא בהכרח גם צריך להיות דלתא. 595 00:26:54,532 --> 00:26:57,760 אבל אנחנו צריכים דרך כלשהי ל לספר computer-- מצטער, 596 00:26:57,760 --> 00:27:01,130 כך שאנו יודעים שTUR הוא לא מילה. 597 00:27:01,130 --> 00:27:04,180 כי בואו נגיד שאין לנו תפיסה זו של דלתא, את המושג הזה 598 00:27:04,180 --> 00:27:09,850 ברכה, שמצאת את מילה, זה יהיה לעבור ולחזר T-U-R, 599 00:27:09,850 --> 00:27:11,300 ואז אומר, מדהים, אני מצאתי את זה! 600 00:27:11,300 --> 00:27:12,670 זה חייב להיות מילה. 601 00:27:12,670 --> 00:27:13,720 אבל זה ממש לא. 602 00:27:13,720 --> 00:27:15,310 אנחנו רוצים כל טיורינג להיות מילה. 603 00:27:15,310 --> 00:27:17,760 אז אנחנו חייבים להיות משהו ב סוף שאומר, מזל טוב, 604 00:27:17,760 --> 00:27:19,051 אתה כבר נמצא מילה לגיטימית. 605 00:27:19,051 --> 00:27:21,680 קהל: אז אם היה לך כמו 26 אותיות האלפבית, 606 00:27:21,680 --> 00:27:24,560 היית באמת צריך 27 מפתחות בניסיון שלך? 607 00:27:24,560 --> 00:27:26,010 >> חנה: מדהימה, כן. 608 00:27:26,010 --> 00:27:28,210 אז בעצם, אני חושב ש יהיה בשקופית הבאה. 609 00:27:28,210 --> 00:27:29,440 טה-דה! 610 00:27:29,440 --> 00:27:32,880 שבו אם יש לך צומת בניסיון שלך, אתה 611 00:27:32,880 --> 00:27:35,800 הולך להיות 27 ילדים במקום 26. 612 00:27:35,800 --> 00:27:39,010 613 00:27:39,010 --> 00:27:40,050 כל שאלות עם זה? 614 00:27:40,050 --> 00:27:40,550 כן? 615 00:27:40,550 --> 00:27:44,569 קהל: מדוע ניסיונות לוקחים כל כך [לא ברור] הרבה מקום כמו שאתה הולך? 616 00:27:44,569 --> 00:27:47,629 למה זה נחשב [לא ברור]? 617 00:27:47,629 --> 00:27:48,170 חנה: בטח. 618 00:27:48,170 --> 00:27:48,790 בואו נחזור. 619 00:27:48,790 --> 00:27:52,350 השאלה היא, מדוע הם מנסה כל כך הרבה יותר גדולים 620 00:27:52,350 --> 00:27:54,620 מאשר משהו כמו שולחן חשיש. 621 00:27:54,620 --> 00:27:57,790 אז לכל אחת מהרמות אלה, גם אם הם לא נמשכים לכאן, 622 00:27:57,790 --> 00:28:01,250 אתה צריך שתהיה לי כל 26 התווים. 623 00:28:01,250 --> 00:28:04,420 והסיבה שאתה לא יכול אומר, אה, אבל כמו לטיורינג, אני 624 00:28:04,420 --> 00:28:07,570 לא צריך להיות כל אחד מאלה אותם דברים ברמה של U. ובכן, 625 00:28:07,570 --> 00:28:11,390 אם פתאום אתה רוצה להוסיף משהו שהיה כמו T-H, 626 00:28:11,390 --> 00:28:14,800 היית צריך לעבור את יכולת של הוספת מילה ש. 627 00:28:14,800 --> 00:28:17,330 אז לכל אות ואות, אתה הולך לי 628 00:28:17,330 --> 00:28:19,730 יש חבורה של מערכים יורדים ממנו. 629 00:28:19,730 --> 00:28:24,060 אז אתה יכול לראות איך זה הייתי לקבל גדול באמת, ממש מהר. 630 00:28:24,060 --> 00:28:26,560 יש עוד שאלות? 631 00:28:26,560 --> 00:28:28,980 בְּסֵדֶר. 632 00:28:28,980 --> 00:28:29,832 כן? 633 00:28:29,832 --> 00:28:33,210 >> קהל: מתי ניסיונות מהר יותר מאשר שולחנות חשיש? 634 00:28:33,210 --> 00:28:36,280 >> חנה: כאשר הם מנסה מהר יותר מאשר שולחנות חשיש? 635 00:28:36,280 --> 00:28:39,120 אז אם היה לך באמת פונקצית hash רעה. 636 00:28:39,120 --> 00:28:41,840 אז בואו נגיד שהיה לי כמו, הנה פונקצית hash שלך. 637 00:28:41,840 --> 00:28:43,660 לא משנה מה מילה אתה נותן לי, אני תמיד 638 00:28:43,660 --> 00:28:47,740 הולך לשים את זה בכניסת מערך 0. 639 00:28:47,740 --> 00:28:52,000 וכך אנחנו בסופו של דבר עם רק לשים הכל ברשימה אחת גדולה ארוך צמודה. 640 00:28:52,000 --> 00:28:58,740 וכך זמן בדיקה היה לוקח במקרה הגרוע n אם זה ממש בסוף של הרשימה שלנו. 641 00:28:58,740 --> 00:29:03,150 עם הניסיון, אנחנו רק צריכים לחזר באמצעות האותיות במילה. 642 00:29:03,150 --> 00:29:07,080 אז גם אם הוספנו חבורה יותר מילות כדי לנסותנו, 643 00:29:07,080 --> 00:29:09,620 זה לא ייקח לנו עוד כדי למצוא מילה מסוימת. 644 00:29:09,620 --> 00:29:11,750 >> כל שעל לעשות הוא, ל למשל, במקרה זה, 645 00:29:11,750 --> 00:29:17,170 נניח שאנחנו מחפשים זום, היינו רק צריך לחזר על 646 00:29:17,170 --> 00:29:19,840 Z-O-O-M, ארבע אותיות. 647 00:29:19,840 --> 00:29:22,250 אז זה פשוט אורך של המילה זום. 648 00:29:22,250 --> 00:29:25,400 זה לא משנה כמה יותר מילות שאנחנו מכניסים לנסות את זה. 649 00:29:25,400 --> 00:29:30,225 אנחנו תמיד יכולים לקבל את זה בארבעת שלבים אלה. 650 00:29:30,225 --> 00:29:31,215 מדהים. 651 00:29:31,215 --> 00:29:32,205 כן? 652 00:29:32,205 --> 00:29:34,185 >> קהל: אז [לא ברור] הוא מערך, נכון? 653 00:29:34,185 --> 00:29:35,322 >> חנה: ממ-הממ. 654 00:29:35,322 --> 00:29:37,155 קהל: אם אתה מחפש [לא ברור], 655 00:29:37,155 --> 00:29:40,929 היית צריך לעבור המערך שלך כדי למצוא [לא ברור]? 656 00:29:40,929 --> 00:29:41,470 חנה: בטח. 657 00:29:41,470 --> 00:29:44,000 קהל: האם זה לא ייקח יותר זמן? 658 00:29:44,000 --> 00:29:46,370 חנה: אם אני הולך ל אומר שהמערך שלי הוא תמיד 659 00:29:46,370 --> 00:29:49,250 הולך להיות A, B, C, D, E, F, G, בלה בלה בלה, 660 00:29:49,250 --> 00:29:51,630 כך שאם אני תמיד יודע זה באותו סדר מדויק, 661 00:29:51,630 --> 00:29:53,880 אם אני תמיד יודע שזה בסדר אלפביתי, 662 00:29:53,880 --> 00:29:57,860 אני רק יכול לומר O הוא מספר כך וכך באלף-הבית. 663 00:29:57,860 --> 00:29:59,620 פשוט לקפוץ למקום הזה. 664 00:29:59,620 --> 00:30:01,860 כי תזכור, עם מערכים, אנו יכולים לגשת 665 00:30:01,860 --> 00:30:06,590 כל אלמנט של מערך שבמתמיד זמן אם אנחנו יודעים איפה אנחנו מחפשים. 666 00:30:06,590 --> 00:30:09,080 667 00:30:09,080 --> 00:30:09,580 כן? 668 00:30:09,580 --> 00:30:12,005 >> קהל: ביום הקודם להחליק [לא ברור] 27, 669 00:30:12,005 --> 00:30:14,430 אך 26 לראשון. 670 00:30:14,430 --> 00:30:15,400 >> חנה: מצטער? 671 00:30:15,400 --> 00:30:18,800 >> קהל: האם לא הראשון אחד 0, כך זה לא יהיה 26? 672 00:30:18,800 --> 00:30:24,900 >> חנה: בטח, ולכן כאשר אנו אומרים 27, זה הולך לתת לנו מדדי 0 עד 26. 673 00:30:24,900 --> 00:30:28,220 אבל אם אתה באמת לספור אותם החוצה, זה הולך להיות 27. 674 00:30:28,220 --> 00:30:30,007 שאלה טובה. 675 00:30:30,007 --> 00:30:30,590 כל דבר אחר? 676 00:30:30,590 --> 00:30:31,200 כן? 677 00:30:31,200 --> 00:30:34,420 >> קהל: אז הם מנסה איטי יותר מאשר שולחנות חשיש? 678 00:30:34,420 --> 00:30:37,920 >> חנה: מנסה הולך להיות, ב תאוריה, שולחנות חשיש מהר יותר 679 00:30:37,920 --> 00:30:39,760 אבל תופס יותר זיכרון. 680 00:30:39,760 --> 00:30:40,534 כן? 681 00:30:40,534 --> 00:30:41,450 קהל: [לא ברור]? 682 00:30:41,450 --> 00:30:45,770 683 00:30:45,770 --> 00:30:47,484 >> חנה: אני מצטער, אני לא שומע אותך. 684 00:30:47,484 --> 00:30:48,400 קהל: [לא ברור]. 685 00:30:48,400 --> 00:30:51,250 686 00:30:51,250 --> 00:30:54,100 0-25 נותן לך 26. 687 00:30:54,100 --> 00:30:56,958 >> חנה: 0 עד 25 היית אתן לך 26, תקין. 688 00:30:56,958 --> 00:30:58,457 >> קהל: ואז [לא ברור]. 689 00:30:58,457 --> 00:30:59,040 חנה: ימין. 690 00:30:59,040 --> 00:31:04,760 אז המספר שאנחנו מפרטים הוא מספר דברים במערך שלנו. 691 00:31:04,760 --> 00:31:07,260 אז אם יש לנו 27, זה הולך לתת לנו 0 692 00:31:07,260 --> 00:31:10,620 עד 26, אשר ייתן לי שלנו מקום ל, במקרה זה, 693 00:31:10,620 --> 00:31:12,770 אני לא כולל גרש. 694 00:31:12,770 --> 00:31:17,040 אז אנחנו מקבלים 0 עד 25 הם 26 האותיות הראשונות של האלף-בית, 695 00:31:17,040 --> 00:31:18,990 או כל 26 אותיות האלף-בית. 696 00:31:18,990 --> 00:31:21,190 ולאחר מכן שעבר דבר, בכניסה 26, הוא 697 00:31:21,190 --> 00:31:24,598 הולך להיות הצ'ק סימן, או הדלתא. 698 00:31:24,598 --> 00:31:26,960 כל דבר אחר? 699 00:31:26,960 --> 00:31:29,130 מדהים. 700 00:31:29,130 --> 00:31:30,020 איבדתי את המקום שלי. 701 00:31:30,020 --> 00:31:31,020 OK, מגניב. 702 00:31:31,020 --> 00:31:33,240 >> אז אנחנו כבר נגענו בזה. 703 00:31:33,240 --> 00:31:37,430 אבל הסחר הגדול מ בין ניסיונות ושולחנות חשיש 704 00:31:37,430 --> 00:31:39,720 הוא שמנסה לספק, ב התאוריה, קבוע להסתכל למעלה 705 00:31:39,720 --> 00:31:42,890 פעמים אבל להשתמש המון זיכרון. 706 00:31:42,890 --> 00:31:46,495 בסדר, עכשיו יש לנו מעט מבנים פחות מסובכים, 707 00:31:46,495 --> 00:31:49,640 ונגמור עם C, ואנו לנוע ימינה לאורך. 708 00:31:49,640 --> 00:31:51,930 >> אז ערימות, שראינו את זה בהרצאה שבו אתה 709 00:31:51,930 --> 00:31:55,020 יש משהו כמו ערימה של מגשים בי 710 00:31:55,020 --> 00:31:57,330 הדבר האחרון שאתה שם על הערימה הולכת 711 00:31:57,330 --> 00:31:59,500 להיות הדבר הראשון שאתה להמריא. 712 00:31:59,500 --> 00:32:02,880 אז זה מה שבאמת מגדיר ערימה הוא שהדבר האחרון שאתה שם על 713 00:32:02,880 --> 00:32:06,080 הולך להיות הראשון דבר שאתה להמריא. 714 00:32:06,080 --> 00:32:09,279 והטרמינולוגיה שאנו משתמשים בי אם אנחנו הולכים לשים משהו, 715 00:32:09,279 --> 00:32:12,070 אם אנחנו הולכים להוסיף משהו ל הערימה שלנו, אנחנו קוראים לזה דוחף. 716 00:32:12,070 --> 00:32:14,970 ואם ניקח משהו את, אנחנו קוראים לזה נפץ. 717 00:32:14,970 --> 00:32:17,080 ואם אנחנו הולכים ל ליישם ערימה, אנחנו 718 00:32:17,080 --> 00:32:20,660 צריך להיות בטוח כדי לעקוב אחר שני בגודל ובקיבולת. 719 00:32:20,660 --> 00:32:24,940 אז המספר הכולל של אלמנטים שאנחנו יכולים להחזיק ואת המספר הנוכחי של אלמנטים 720 00:32:24,940 --> 00:32:27,880 שאנו מחזיקים. 721 00:32:27,880 --> 00:32:29,885 >> ודומה מאוד, יש לנו תורים. 722 00:32:29,885 --> 00:32:34,510 וההבדל היחיד הוא במקום עם ערימות, 723 00:32:34,510 --> 00:32:37,630 אמרנו הדבר האחרון שאנחנו שמים על זה הדבר הראשון שאנחנו להמריא. 724 00:32:37,630 --> 00:32:40,940 אז עם תורים, דבר ראשון שאנחנו מכניסים ל 725 00:32:40,940 --> 00:32:43,129 הולך להיות הדבר הראשון שאנחנו מוציאים. 726 00:32:43,129 --> 00:32:45,420 אז זה כמו שאם אתה למעשה בתור בחנות 727 00:32:45,420 --> 00:32:48,140 ואתה להיות עזר, אז האדם הראשון בשורה 728 00:32:48,140 --> 00:32:50,880 צריך להיות האדם הראשון שעזר. 729 00:32:50,880 --> 00:32:52,220 אז זה יהיה תור. 730 00:32:52,220 --> 00:32:55,880 >> אז אנחנו צריכים לעקוב אחר גודל, קיבולת, וראש מאז שאנחנו 731 00:32:55,880 --> 00:33:01,130 הולך לקחת את כולם בחזית הרשימה במקום בחזרה. 732 00:33:01,130 --> 00:33:03,480 שאלות על זה? 733 00:33:03,480 --> 00:33:06,330 כל שאלות C המטרידות אותך? 734 00:33:06,330 --> 00:33:09,590 מבני נתונים, כל זה דברים כיפיים? 735 00:33:09,590 --> 00:33:10,530 בסדר, מגניב. 736 00:33:10,530 --> 00:33:14,120 אז אני למסור אותו לאליסון ל לקפוץ לתוך כמה תכנות יותר. 737 00:33:14,120 --> 00:33:15,965 >> אליסון: אה, אנחנו תראו. 738 00:33:15,965 --> 00:33:17,370 נצטרך לראות איך גם אני עושה כאן. 739 00:33:17,370 --> 00:33:21,410 בסדר, אני הולך לנסות ולעוף באמצעות החומר הזה, בחורים. 740 00:33:21,410 --> 00:33:24,540 חנה הלכה מאוד ב עומק על כל הדברים שלה. 741 00:33:24,540 --> 00:33:26,900 אני הולך לנסות לתת לי שלכם סקירה פיצוץ מהירה 742 00:33:26,900 --> 00:33:31,290 כדי שנוכל להגיע לDavin עם כל הדברים JavaScript וביטחון הכיף 743 00:33:31,290 --> 00:33:33,380 שאולי אתה בעצם רוצה לשמוע עוד על. 744 00:33:33,380 --> 00:33:36,600 >> OK, חנה אמרה, אם יש לך שאלות, 745 00:33:36,600 --> 00:33:39,170 אני הולך מהר מדי, אנא, תן לי לדעת. 746 00:33:39,170 --> 00:33:42,114 אני אענה על שאלות במידת צורך. 747 00:33:42,114 --> 00:33:45,280 אז כדי להתחיל, אנחנו הולכים להתחיל עם כנראה אחד הדברים הראשונים 748 00:33:45,280 --> 00:33:48,730 למדת עם אינטרנט תכנות, הרשאות. 749 00:33:48,730 --> 00:33:52,720 אז chmod, אתם צריכים להיות אדונים בשלב זה עם כל האינטרנט 750 00:33:52,720 --> 00:33:54,870 תכנות שיש לך עושה בזמן האחרון. 751 00:33:54,870 --> 00:33:57,320 זה בעצם רק פקודה שמשנה את ההרשאות 752 00:33:57,320 --> 00:34:00,779 או הרשאות הגישה של האובייקטים במערכת קבצים שלנו. 753 00:34:00,779 --> 00:34:02,570 כמובן, לבעצם רואה את אלה, אם אתה 754 00:34:02,570 --> 00:34:04,910 איזושהי בעיה עם אלה במהלך סטי הבעיה שלך, 755 00:34:04,910 --> 00:34:11,460 ייתכן שהשתמשת -l ls, שאורכו, כדי לקבל את סוג התצוגה של כזה, 756 00:34:11,460 --> 00:34:14,209 שבו אתה בעצם רואה את כל ההרשאות לקובץ. 757 00:34:14,209 --> 00:34:16,850 758 00:34:16,850 --> 00:34:20,732 >> ובאמת, אנחנו רק הולכים דרך די מהר רק יפה 759 00:34:20,732 --> 00:34:21,940 הרבה מה כל אחד מהם אומר. 760 00:34:21,940 --> 00:34:24,481 אז יש לנו ד ממש כאן, ש פשוט עומד לספרייה. 761 00:34:24,481 --> 00:34:26,790 762 00:34:26,790 --> 00:34:31,739 ברור שממש כאן, אנו רואים rwx, ש הוא קריא, הניתן לכתיבה, והפעלה. 763 00:34:31,739 --> 00:34:37,090 אלה גם יכולים להיות מיוצגים כביטים, שיהיה לנו בעמוד הבא. 764 00:34:37,090 --> 00:34:40,699 אז כל שלשה שראינו כאן, אז זה שלוש שלישיות. 765 00:34:40,699 --> 00:34:48,120 יש לנו rwx, x שום דבר r r ו שום דבר X עבור קובץ ראשון זה. 766 00:34:48,120 --> 00:34:49,690 זה מבנה כללי זה. 767 00:34:49,690 --> 00:34:50,940 >> אז יש לנו כמה ספרייה. 768 00:34:50,940 --> 00:34:53,999 יש לנו כמה קבוצת משתמשים עם הרשאות אלה. 769 00:34:53,999 --> 00:34:57,040 חלק הקבוצה שיש לו הרשאות אלה, ועולם שיש לו אישור. 770 00:34:57,040 --> 00:34:59,420 אתה יכול לחשוב על אלה כשלישייה. 771 00:34:59,420 --> 00:35:01,130 אתה יכול לחשוב על אלה כשלוש חתיכות. 772 00:35:01,130 --> 00:35:04,060 אז הם יכולים להחזיק ערכים בכל מקום בין 0 עד 773 00:35:04,060 --> 00:35:07,350 עד 7, וזו הסיבה שלפעמים היו לנו שאתה עושה chmod 774 00:35:07,350 --> 00:35:17,510 600 במקום chmod RW מה. 775 00:35:17,510 --> 00:35:19,170 אנחנו נגיע לדוגמה לשם. 776 00:35:19,170 --> 00:35:24,260 אבל בעיקרון, אתה יכול לחשוב אלה כמו גם פשוט rwx, 777 00:35:24,260 --> 00:35:28,520 או שאתה יכול לחשוב עליהם כחלק מ מספר שבו ראשון זה כאן 778 00:35:28,520 --> 00:35:31,480 מייצג מספר בין 0 ו -7, שני אחת זה 779 00:35:31,480 --> 00:35:33,970 מייצג מספר בין 0 ו -7, והשליש 780 00:35:33,970 --> 00:35:38,245 מייצג מספר בין 0 ל 7, בסדר? 781 00:35:38,245 --> 00:35:42,700 >> יש r ערך 4. w יש ערך של 2, וx 782 00:35:42,700 --> 00:35:49,230 יש לו ערך של 1, ולכן זה רשות כאן תהיה chmod 700. 783 00:35:49,230 --> 00:35:53,520 כי במקרה זה כאן, זה אומר שאנחנו יש קצת הראשון יש הדליק. 784 00:35:53,520 --> 00:35:55,380 אז יש לנו 4 לקריאה. 785 00:35:55,380 --> 00:35:58,730 קצת השני הוא התהפך על ל w, שהוא 2, אז עכשיו יש לנו 6. 786 00:35:58,730 --> 00:36:02,070 וקצת השלישי הדליקו לx, שהוא 1, ולכן אנחנו מקבלים שבע. 787 00:36:02,070 --> 00:36:04,820 ו, הקבוצה שלנו כמובן והעולם שלנו הם כל 0. 788 00:36:04,820 --> 00:36:07,770 אז זה גם מקבילה של chmod 700. 789 00:36:07,770 --> 00:36:12,081 ואני בהחלט אנסה להבין את המיפוי בין אלה. 790 00:36:12,081 --> 00:36:14,080 אני לא בטוח אם יש לו לבוא בחידון לפני, 791 00:36:14,080 --> 00:36:18,590 אבל זה יהיה שאלה שאני יכול לשאול. 792 00:36:18,590 --> 00:36:22,110 >> רק קצת הולכים אפילו נוסף לchmod כאן, כאן 793 00:36:22,110 --> 00:36:27,730 הוא מאוד כללי מבנה של שיחת chmod. 794 00:36:27,730 --> 00:36:29,500 אז כמובן, יש לנו כאן chmod. 795 00:36:29,500 --> 00:36:34,410 אזכור, מה זה מתייחס להוא מי אנחנו נותנים הרשאות אלה ל 796 00:36:34,410 --> 00:36:36,570 או שאנחנו לוקחים אלה הרשאות מ. 797 00:36:36,570 --> 00:36:44,330 אז יש לנו כאן בהרשאות, כמו שנתנו לך chmod x בתוספת, 798 00:36:44,330 --> 00:36:45,440 כפי שנראה בקרוב. 799 00:36:45,440 --> 00:36:48,460 רק אומר לתת ספציפי אלה הרשאות לכולם. 800 00:36:48,460 --> 00:36:49,600 תן להם לכל. 801 00:36:49,600 --> 00:36:55,370 אז אתה יכול מאוד להיות u תוספת x או גרם בתוספת x או o בתוספת x או מרובה 802 00:36:55,370 --> 00:36:55,870 שלהם. 803 00:36:55,870 --> 00:36:59,280 כך שהחלק הראשון הוא תמיד הולך להיות אזכור. 804 00:36:59,280 --> 00:37:03,220 מי אנחנו נותנים הרשאות אלה ל, או שאנחנו לוקחים אותם מ? 805 00:37:03,220 --> 00:37:04,850 >> השני הוא המפעיל. 806 00:37:04,850 --> 00:37:07,350 אז אתם בעיקר עסקו בתוספת. 807 00:37:07,350 --> 00:37:12,140 זה נותן הרשאות ל מי שאתה נותן להם, 808 00:37:12,140 --> 00:37:14,840 בעוד פחות, באופן הגיוני, מסיר אותם. 809 00:37:14,840 --> 00:37:16,880 כך ששום דבר נורא מדי שם. 810 00:37:16,880 --> 00:37:23,060 ולאחר מכן מצבים הוא על מה דברנו עם קריאה, כתיבה, או ביצוע. 811 00:37:23,060 --> 00:37:29,070 אז בתוספת x פירושו לתת הפעלה הרשאות לכולם. 812 00:37:29,070 --> 00:37:33,430 ואז, כמובן, שב קובץ ספציפי או ספרייה. 813 00:37:33,430 --> 00:37:33,980 בסדר? 814 00:37:33,980 --> 00:37:36,010 כולם טובים עם chmod? 815 00:37:36,010 --> 00:37:37,850 לא רע? 816 00:37:37,850 --> 00:37:42,417 >> אוקיי, אז HTML, כל אחד מכם הוא ישן מספיק to-- גיל MySpace? 817 00:37:42,417 --> 00:37:44,750 אני שלחתי את זה לקטע שלי, ופשוטו כמשמעו מחצית האנשים 818 00:37:44,750 --> 00:37:45,790 הסתכל עליי כאילו אני משוגע. 819 00:37:45,790 --> 00:37:47,498 ואני הייתי כמו, בחורים, אנחנו לא כל כך ישנים. 820 00:37:47,498 --> 00:37:48,910 יאללה. 821 00:37:48,910 --> 00:37:53,360 אז HyperText Markup Language, זה באמת רק דרך בשבילך 822 00:37:53,360 --> 00:37:57,990 כדי להציג דברים מסוימים באינטרנט. 823 00:37:57,990 --> 00:37:59,210 אז זה שפת סימון. 824 00:37:59,210 --> 00:38:00,640 זה לא שפת scripting. 825 00:38:00,640 --> 00:38:02,160 אין היגיון בזה. 826 00:38:02,160 --> 00:38:05,710 זה פשוט לשנות את מוצג דרך משהו. 827 00:38:05,710 --> 00:38:07,670 אוקיי, אז זה חשוב הבחנה לעשות. 828 00:38:07,670 --> 00:38:12,030 זה נחשב שפת סימון, לא שפת scripting. 829 00:38:12,030 --> 00:38:15,100 >> אז הנה יש לנו תגי HTML שלנו. 830 00:38:15,100 --> 00:38:20,390 בשקופית זו הן כנראה רוב אלה שאתה צריך להיות מוכר עם 831 00:38:20,390 --> 00:38:22,390 ולהיות באמת בנוח עם. 832 00:38:22,390 --> 00:38:25,700 אז ברור, שיש לנו תג HTML שלנו, ש 833 00:38:25,700 --> 00:38:29,930 מייעד את כל מה שב בין שני אלה יהיו HTML. 834 00:38:29,930 --> 00:38:33,070 יש לנו כמה קישור, ש כמובן אתן לך 835 00:38:33,070 --> 00:38:34,990 קישור לדף אינטרנט חיצוני. 836 00:38:34,990 --> 00:38:37,520 כותרת מסוימת, בתוך הראש שלנו כאן. 837 00:38:37,520 --> 00:38:40,020 ויש לנו הגוף שלנו עם h1, אשר הוא כותרת, 838 00:38:40,020 --> 00:38:42,260 כך זה יהיה לעשות את זה נחמד ונועז וגדול יותר. 839 00:38:42,260 --> 00:38:46,040 ואז, יש לנו כמה p, שהוא סעיף. 840 00:38:46,040 --> 00:38:49,000 אתה כנראה צריך לדעת ולהיות מוכר עם דברים 841 00:38:49,000 --> 00:38:54,030 כמו איך אתה מכניס תמונה, הם יש כיתות כותרת אחרות? 842 00:38:54,030 --> 00:38:57,240 הייתי בהחלט להיות נוח עם div. 843 00:38:57,240 --> 00:39:00,840 אז יש לי אלה רוב התגים כי אתה צריך להיות מוכר. 844 00:39:00,840 --> 00:39:04,370 אבל כמובן, כמו בכל דבר ב 50 CS, הרשימה אינה ממצה. 845 00:39:04,370 --> 00:39:08,200 כדי לוודא שאתה לרענן את זה. 846 00:39:08,200 --> 00:39:13,260 >> CSS, כך CSS, אם מישהו מכם לצפות ב הסמינר שלי מלפני שבועיים, 847 00:39:13,260 --> 00:39:16,250 היא באמת רק דרך לסגנון דף האינטרנט שלך? 848 00:39:16,250 --> 00:39:18,950 אוקיי, אז יש לנו כמה שפת סימון. 849 00:39:18,950 --> 00:39:23,220 HTML, שדואג רק את הטקסט ואיפה שזה עשוי להיות בעמוד. 850 00:39:23,220 --> 00:39:25,760 אבל CSS הוא באמת מה שעושה את זה יפה. 851 00:39:25,760 --> 00:39:30,690 אתה יכול להיות אלה ב- HTML שלך קבצים, אך כפי שאנו נדבר על מאוחר יותר, 852 00:39:30,690 --> 00:39:32,660 אני די בטוח שזה אולי להיות השקופית הבאה, זה 853 00:39:32,660 --> 00:39:35,620 הוא מנהג נפוץ, ולמעשה תרגול שאנחנו באמת לעודד, 854 00:39:35,620 --> 00:39:40,670 כדי שתוכלו לשמור על הפריד ביניהם כאשר אנו לדבר על MVC, וכי כל הפרדיגמה. 855 00:39:40,670 --> 00:39:42,490 זה באמת מה זה הזנות לתוך. 856 00:39:42,490 --> 00:39:46,110 >> אז CSS הוא רק דרך ל לעשות את הדברים נראים יפה. 857 00:39:46,110 --> 00:39:50,500 הדברים כאן, כמו גוף ו#title ו.info, 858 00:39:50,500 --> 00:39:54,340 אלה נקראים בוררים ומה הם עושים הוא שהם בוחרים דברים ספציפיים 859 00:39:54,340 --> 00:39:59,260 בתוך קובץ HTML שלך ולהחיל מה סגנון, 860 00:39:59,260 --> 00:40:04,090 מה סוג של דברים שאתה רוצה, שלאלמנט מסוים של האינטרנט שלך 861 00:40:04,090 --> 00:40:04,590 דף. 862 00:40:04,590 --> 00:40:08,820 אז הנה, יש לנו צבע רקע וצבע 863 00:40:08,820 --> 00:40:12,450 ומשפחה גופן זה להיות יחול על כל מה שהוא בגוף. 864 00:40:12,450 --> 00:40:15,530 אז אם אנחנו הבטנו לאחור כאן, זה לא אחול על התואר. 865 00:40:15,530 --> 00:40:22,340 זה רק יחול על מה הוא בבוררי גוף אלה, בסדר? 866 00:40:22,340 --> 00:40:25,250 >> עם הכותרת כאן, זה הוא הולך להיות אותו הדבר, 867 00:40:25,250 --> 00:40:28,410 צבע הטקסט להיות כחול הוא רק הולך 868 00:40:28,410 --> 00:40:33,870 כדי להשפיע על מה הוא בתוך בוררי הכותרת. 869 00:40:33,870 --> 00:40:36,580 כמו גם מידע כאן, הטקסט יהיה ורוד, 870 00:40:36,580 --> 00:40:38,600 מה של מידע, שנמצא ממש כאן. 871 00:40:38,600 --> 00:40:40,860 כך שהדבר היחיד ש יהיה ורוד בדף זה 872 00:40:40,860 --> 00:40:44,100 הוא תאריך, יום שני, נובמבר 17, 2014. 873 00:40:44,100 --> 00:40:48,770 אוקיי, אז CSS הוא רק דרך ל יש להם יותר שליטת over-- כן? 874 00:40:48,770 --> 00:40:51,850 >> קהל: למה יש לך להשתמש בחשיש עם כותרת? 875 00:40:51,850 --> 00:40:55,170 >> חנה: השקופית הבאה, מבטיח! 876 00:40:55,170 --> 00:40:56,810 אנחנו נגיע לשם. 877 00:40:56,810 --> 00:40:59,830 אז בגלל זה אנחנו צריכים להשתמש בחשיש. 878 00:40:59,830 --> 00:41:03,429 אז בוררים לקחת על שלושה עיקרי צורות שאנחנו מדברים אתם על. 879 00:41:03,429 --> 00:41:05,595 אני fyou רוצה ללמוד יותר, יש הרבה שם בחוץ. 880 00:41:05,595 --> 00:41:07,540 יש תיעוד CSS גדול. 881 00:41:07,540 --> 00:41:12,680 יש תג שם, שבו יש לעשות רק עם התגים הרגילים שלך ב- HTML. 882 00:41:12,680 --> 00:41:17,210 אז h1, p, div, H2, אלה מיני דברים. 883 00:41:17,210 --> 00:41:20,320 ואנחנו יכולים רק שם אלה כפי שהוא. 884 00:41:20,320 --> 00:41:22,650 אז כפי שאנו רואים כאן עם גוף, זה תג נורמלי. 885 00:41:22,650 --> 00:41:26,660 אז אנחנו פשוט יכולים לשים את הגוף בעת אנחנו מדברים בקובץ CSS שלנו. 886 00:41:26,660 --> 00:41:29,730 >> עם כותרת, כל הסיבה ש יש לי חשיש זה שיש לנו מה 887 00:41:29,730 --> 00:41:31,010 נחשב ID. 888 00:41:31,010 --> 00:41:35,400 אז ID צריך להיות תמיד ייחודי בתוך דף ה- HTML שלך 889 00:41:35,400 --> 00:41:37,930 כך שכאשר אתה בהתייחסו לזה, אתה 890 00:41:37,930 --> 00:41:41,990 יודע שאתה מתייחס רק דבר אחד ספציפי. 891 00:41:41,990 --> 00:41:46,270 אז במקרה הזה כאן, עם שלנו h1 כאן, CS 50 מושב ביקורתם, 892 00:41:46,270 --> 00:41:47,810 יש לנו id של כותרת. 893 00:41:47,810 --> 00:41:54,280 אז כדי רק כדי להתייחס של חתיכת HTML שלנו, אנחנו עושים כותרת חשיש. 894 00:41:54,280 --> 00:41:58,080 רק על ידי אמנה, מזהים מיועדים עם חשיש לפניהם. 895 00:41:58,080 --> 00:42:01,650 באותו אופן, אנו רואים מידע כאן הוא בכיתה. 896 00:42:01,650 --> 00:42:06,070 וכך בכיתה עם CSS היא מיועד כתובענה dot 897 00:42:06,070 --> 00:42:08,895 או dot מה הכיתה שהיא. 898 00:42:08,895 --> 00:42:10,850 אז במקרה הזה כאן, זה מידע. 899 00:42:10,850 --> 00:42:13,090 >> אז אני חוזר בי. 900 00:42:13,090 --> 00:42:16,200 שני אלה יהיו ורוד לCSS שלנו כאן 901 00:42:16,200 --> 00:42:18,430 כי לשניהם יש מעמד של מידע. 902 00:42:18,430 --> 00:42:23,070 ובקובץ CSS שלנו, יש לנו מיועד כל דבר שעם כיתה של מידע 903 00:42:23,070 --> 00:42:24,120 יהיה ורוד. 904 00:42:24,120 --> 00:42:25,968 האם זה הגיוני? 905 00:42:25,968 --> 00:42:27,435 כן? 906 00:42:27,435 --> 00:42:30,731 >> קהל: אם היית עושה הכל בלבן גוף, 907 00:42:30,731 --> 00:42:32,814 ואז אתה מנסה לעשות משהו בתוכו כחול, 908 00:42:32,814 --> 00:42:34,770 היה שגורם לבעיות? 909 00:42:34,770 --> 00:42:37,310 >> חנה: אז CSS הוא גיליונות סגנון מדורג. 910 00:42:37,310 --> 00:42:40,730 אז מה הוא לכיוון תחתון הם הקובעים. 911 00:42:40,730 --> 00:42:44,080 אז אם אתה עושה משהו עם גוף, ואתה עושה את כל מה שלבן, 912 00:42:44,080 --> 00:42:49,300 ואז בשלב מאוחר יותר אתה לשנות את הכותרת או שאתה לשנות את הטקסט בתוך גוף, 913 00:42:49,300 --> 00:42:50,560 זה מחליף את זה. 914 00:42:50,560 --> 00:42:55,360 אז כל דבר לכיוון תחתון הם הקובעים. 915 00:42:55,360 --> 00:42:56,730 כן? 916 00:42:56,730 --> 00:42:59,627 >> קהל: ומזהים ייחודיים, אבל שיעורים יכולים להיות יותר? 917 00:42:59,627 --> 00:43:00,210 חנה: ימין. 918 00:43:00,210 --> 00:43:06,320 אז מזהים צריכים להיות ייחודיים, ושיעורים יכולים מתייחס לכמה שיותר דברים כמו שאתה רוצה. 919 00:43:06,320 --> 00:43:07,580 יש עוד שאלות? 920 00:43:07,580 --> 00:43:09,800 כן. 921 00:43:09,800 --> 00:43:11,210 >> קהל: [לא ברור]. 922 00:43:11,210 --> 00:43:13,509 אני תוהה אם שעושה את הבדל. 923 00:43:13,509 --> 00:43:15,217 חנה: אני מצטער, מה הייתה השאלה? 924 00:43:15,217 --> 00:43:18,960 קהל: יש קטן "F" ובירה "פ" 925 00:43:18,960 --> 00:43:21,440 חנה: אז ההבדל בין "f" הקטן והון "F" 926 00:43:21,440 --> 00:43:22,606 לא צריך לעשות את הבדל. 927 00:43:22,606 --> 00:43:26,330 אז "f" יהיו 15 או כך. 928 00:43:26,330 --> 00:43:28,130 מגניב, כל דבר אחר? 929 00:43:28,130 --> 00:43:29,930 כולם טובים, CSS? 930 00:43:29,930 --> 00:43:30,850 כן? 931 00:43:30,850 --> 00:43:31,790 >> קהל: מצטער. 932 00:43:31,790 --> 00:43:35,550 יכול להיות שאתה בכיתה ומזהה? 933 00:43:35,550 --> 00:43:38,030 >> חנה: כן, אתה יכול. 934 00:43:38,030 --> 00:43:40,420 דברים יכולים להיות גם בכיתה וזיהוי. 935 00:43:40,420 --> 00:43:44,670 ואני מאוד ממליץ בדיקות אלה בעצמך. 936 00:43:44,670 --> 00:43:50,480 CSS אתה לומד הכי טוב רק על ידי ביצוע משהו, דף אינטרנט פשוט מאוד, 937 00:43:50,480 --> 00:43:53,440 ציור קצת CSS, ורק לראות כיצד הם פועלים. 938 00:43:53,440 --> 00:43:56,970 ותוכל להרוויח טוב מאוד, אינטואיטיבי תחושה לאיך זה עובד. 939 00:43:56,970 --> 00:43:58,810 >> OK, כולם טובים עם CSS? 940 00:43:58,810 --> 00:44:01,280 אתה כל הולך לעשות אתרים יפים עם CSS עכשיו. 941 00:44:01,280 --> 00:44:05,460 OK, שיטות עבודה מומלצת, רק דברים שכדאי לזכור, דברים 942 00:44:05,460 --> 00:44:09,810 that-- זו הסיבה שאנחנו לעגון לך על מעצב ומה לא. 943 00:44:09,810 --> 00:44:11,820 אז לסגור את כל תגי HTML שלך. 944 00:44:11,820 --> 00:44:14,840 אז אם יש לך גוף פתוח, לא צריך להיות גוף קרוב. 945 00:44:14,840 --> 00:44:18,180 אם יש לך סעיף פתוח, לא צריך להיות סגור פיסקה. 946 00:44:18,180 --> 00:44:19,555 בדקו את הדף שלך מאמת. 947 00:44:19,555 --> 00:44:23,330 אתם צריכים להיות מאוד מוכרים עם זה משבע להגדיר p- 948 00:44:23,330 --> 00:44:26,350 עם CS מימון 50 עם validator W3. 949 00:44:26,350 --> 00:44:28,340 וכפי שאמרתי קודם, אחד מפרדיגמות הגדולות שלנו 950 00:44:28,340 --> 00:44:33,780 מפריד את הסגנון שלך עם CSS מהסימון שלך, שהוא HTML. 951 00:44:33,780 --> 00:44:36,900 ואז, כמובן, יש לנו XKCD זה נהדר כאן למטה. 952 00:44:36,900 --> 00:44:38,280 Yay, אתנחתא קומית! 953 00:44:38,280 --> 00:44:41,340 >> OK, TCP / IP. 954 00:44:41,340 --> 00:44:44,650 בין אלה וHTTP, בעצם שניהם הפרוטוקולים. 955 00:44:44,650 --> 00:44:46,810 אז רק אתה יכול לחשוב מהם כמערכת של כללים 956 00:44:46,810 --> 00:44:50,110 הקובעים כיצד דברים להעביר דרך האינטרנט. 957 00:44:50,110 --> 00:44:53,410 אז שליטת שידור פרוטוקול, או פרוטוקול אינטרנט, 958 00:44:53,410 --> 00:44:57,280 הוא רק דרך לוודא נתונים שמקבל לאן זה הולך 959 00:44:57,280 --> 00:45:00,030 ושאנחנו יודעים אם שנהיה אי פעם חסר נתונים. 960 00:45:00,030 --> 00:45:03,520 אז אם אתם חושבים לחזור להרצאה כמה שבועות לפני עם דוד 961 00:45:03,520 --> 00:45:06,980 שבו היו לנו ארבע מעטפות, הם היו כל ממוספר כמו אחד מארבעה, 962 00:45:06,980 --> 00:45:11,300 שתיים מתוך ארבעה, שלוש מתוך ארבעה, ארבעה מ ארבעה, זה רק מערכת של כללים. 963 00:45:11,300 --> 00:45:13,830 אנחנו אמרו, בסדר, בכל פעם שאנחנו שליחת מנות יותר מפעם אחת, 964 00:45:13,830 --> 00:45:16,610 אנחנו הולכים למספר אותו עם מה מספר זה 965 00:45:16,610 --> 00:45:19,040 וכמה כולל ש המשתמש צריך לקבל. 966 00:45:19,040 --> 00:45:22,540 >> וזה רק אומר מי ש הוא מקבל את הנתונים אם הם 967 00:45:22,540 --> 00:45:26,120 מקבל הכל או אם משהו הלך לאיבוד בדרך. 968 00:45:26,120 --> 00:45:28,840 והם צריכים לבקש את זה שוב. 969 00:45:28,840 --> 00:45:31,140 זה באמת רק מערכת של כללים. 970 00:45:31,140 --> 00:45:33,650 ככה אתה יכול לחשוב על זה, בסדר? 971 00:45:33,650 --> 00:45:37,700 וגם, היא קובעת את הנמל, ש אתם can-- אני יודע בהרצאה, 972 00:45:37,700 --> 00:45:39,170 היה להם רשימה של יציאות כולו. 973 00:45:39,170 --> 00:45:41,630 אבל אין לנו אותם כאן עכשיו. 974 00:45:41,630 --> 00:45:45,290 >> פרוטוקול העברת היפר-טקסט כל כך הוא, שוב, זה פרוטוקול אחר. 975 00:45:45,290 --> 00:45:48,630 אז זה עוד סט של כללים ששולטים, במקרה זה, 976 00:45:48,630 --> 00:45:51,130 איך היפרטקסט מועבר. 977 00:45:51,130 --> 00:45:54,340 אז זה רק מאפשר דפדפנים לדבר עם שרתי אינטרנט. 978 00:45:54,340 --> 00:45:56,910 וכמו שאמרנו כאן, זה כמו לחיצת יד של אדם. 979 00:45:56,910 --> 00:46:00,480 זה פשוט דרך למשול איך שרת האינטרנט הוא 980 00:46:00,480 --> 00:46:02,690 הולך אינטראקציה עם הדפדפן שלך. 981 00:46:02,690 --> 00:46:05,660 ויש לנו רק כמה דוגמאות. 982 00:46:05,660 --> 00:46:09,100 יש לנו כמה בקשות כאן שבו מקבל הוא השיטה. 983 00:46:09,100 --> 00:46:13,760 יש לנו HTTP 1.1, שהוא גרסת פרוטוקול עבורנו. 984 00:46:13,760 --> 00:46:17,230 ולאחר מכן, המארח, וזה מה ש אנחנו באמת מנסים לגשת. 985 00:46:17,230 --> 00:46:21,800 ולאחר מכן, כפי שאתה רואה כאן, אנחנו לקבל תגובה מסוימת עם 200 זה 986 00:46:21,800 --> 00:46:25,032 אישור כקוד תגובת HTTP שלנו. 987 00:46:25,032 --> 00:46:27,240 יש לנו רשימה גדולה אני הולך כדי למשוך את בשנייה אחת 988 00:46:27,240 --> 00:46:29,430 כי אתם צריכים להיות מוכרים עם. 989 00:46:29,430 --> 00:46:35,750 ויש לנו טקסט / HTML סוג תוכן זה, אשר רק אומר איזה סוג של נתונים 990 00:46:35,750 --> 00:46:39,990 אנחנו מקבלים מהשרת, בסדר? 991 00:46:39,990 --> 00:46:44,230 מארח זה וסוג תוכן זה הם חלק מכותרות HTTP. 992 00:46:44,230 --> 00:46:49,610 אתה יכול לקבל כמה שפחות או מעט ככל הכרחי להקשר של מה ש 993 00:46:49,610 --> 00:46:50,580 עם יש לך עסק. 994 00:46:50,580 --> 00:46:53,371 לפעמים יהיה לך הרבה מידע שמגיע מהשרת שלך. 995 00:46:53,371 --> 00:46:56,040 אולי הם מבקשים הרבה מידע מהמשתמש. 996 00:46:56,040 --> 00:46:57,600 זה משתנה בהתאם להקשר. 997 00:46:57,600 --> 00:47:01,144 אם אתה מסתכל על CS 50 מחקר, יש הרבה יותר על זה. 998 00:47:01,144 --> 00:47:03,060 אבל יש לנו הרבה כדי לקבל דרך, אז אני הולך 999 00:47:03,060 --> 00:47:05,760 ללכת זכות קדימה אם זה בסדר איתכם? 1000 00:47:05,760 --> 00:47:07,960 מגניב. 1001 00:47:07,960 --> 00:47:08,460 תחזיק חזק. 1002 00:47:08,460 --> 00:47:11,182 בהחלט יש לי ש רשימה כל ל-- הא! 1003 00:47:11,182 --> 00:47:13,140 אני לא יודע למה זה כל הדרך לכאן. 1004 00:47:13,140 --> 00:47:15,660 חשבתי שאני ממש עברתי זה בזמן שאני היה sitting-- 1005 00:47:15,660 --> 00:47:16,540 >> דווין: האם אתה רוצה ללמד אותו? 1006 00:47:16,540 --> 00:47:17,420 או שאתה רוצה אותי ללמד אותו? 1007 00:47:17,420 --> 00:47:20,010 >> קהל: חשבתי שנוכל רק להראות להם להתחיל עם. 1008 00:47:20,010 --> 00:47:22,210 אני מתכוון, אתה יכול ללכת ל אותם עוד יותר, אבל אני 1009 00:47:22,210 --> 00:47:26,030 חשבתי שיותר הגיוני מאז ש רק דיברתי על סטטוסי HTTP. 1010 00:47:26,030 --> 00:47:28,200 אז הנה כל הרשימה. 1011 00:47:28,200 --> 00:47:31,730 אני מניח מה שהולך לקרות הוא דווין הולך להיכנס אליהם מאוחר יותר. 1012 00:47:31,730 --> 00:47:35,330 אבל יש כל רשימה, תצוגה מקדימה של הטעם לבוא. 1013 00:47:35,330 --> 00:47:41,640 בסדר, אנחנו הולכים blow-- זה הולך להיות קורס מזורז PHP שאין כמותו. 1014 00:47:41,640 --> 00:47:44,874 >> אז PHP, preprocessor היפרטקסט, זה backronym רקורסיבית, 1015 00:47:44,874 --> 00:47:46,540 מה שאומר שהיה שם משהו אחר. 1016 00:47:46,540 --> 00:47:49,050 ולאחר מכן הם היו כמו, זה לא ממש הגיוני. 1017 00:47:49,050 --> 00:47:52,210 אז הם פשוט בשם it-- וזה היה ראשי תיבות, 1018 00:47:52,210 --> 00:47:54,840 אז הם פשוט עשו את זה PHP preprocessor היפרטקסט, ש 1019 00:47:54,840 --> 00:47:55,980 רק לא הגיוני. 1020 00:47:55,980 --> 00:47:57,714 סיפור משעשע. 1021 00:47:57,714 --> 00:47:58,880 זו שפת תכנות. 1022 00:47:58,880 --> 00:48:02,360 כל כך הרבה כמו שאני מדגיש ש HTML הוא לא שפת תכנות, 1023 00:48:02,360 --> 00:48:05,350 זה שפת סימון, PHP היא שפת תכנות. 1024 00:48:05,350 --> 00:48:07,422 איך אתה יודע שזה כי יש היגיון. 1025 00:48:07,422 --> 00:48:08,380 יש תניות. 1026 00:48:08,380 --> 00:48:12,750 יש לנו משתנה, ואילו אנחנו יש אף אחד מהדברים האלה ב- HTML. 1027 00:48:12,750 --> 00:48:16,960 >> בסדר, אז יש לנו את זה קצת קצת כאן זה כמו טעם של PHP. 1028 00:48:16,960 --> 00:48:20,510 אז יסודות, שמות משתנים להתחיל עם סימן דולר. 1029 00:48:20,510 --> 00:48:21,500 הרבה אנשים אוהבים את זה. 1030 00:48:21,500 --> 00:48:22,371 מזכיר לנו כסף. 1031 00:48:22,371 --> 00:48:22,995 זה כל גדול. 1032 00:48:22,995 --> 00:48:25,280 כולנו רוצים PHP. 1033 00:48:25,280 --> 00:48:28,020 אז אנחנו לא תציינו הסוג של משתנה יותר. 1034 00:48:28,020 --> 00:48:29,995 היא נקבעת בזמן הריצה. 1035 00:48:29,995 --> 00:48:32,710 1036 00:48:32,710 --> 00:48:35,890 המתורגמן יהיה כמו, הו, אנחנו פשוט לרוץ דרך, 1037 00:48:35,890 --> 00:48:39,565 ועל-פי ההקשר, נראה מה סוגים של סוגים 1038 00:48:39,565 --> 00:48:41,560 משתנה אלה צריכים להיות. 1039 00:48:41,560 --> 00:48:42,815 אין פונקציה העיקרית. 1040 00:48:42,815 --> 00:48:43,690 דברים פשוט ירוצו. 1041 00:48:43,690 --> 00:48:47,851 אתם עם היבוא שלך בך להגדיר p-אחרון, תבחין זה. 1042 00:48:47,851 --> 00:48:49,350 לא הייתה באמת פונקציה העיקרית. 1043 00:48:49,350 --> 00:48:52,070 אתה פשוט כתב את מה ש אתה רוצה שקורה. 1044 00:48:52,070 --> 00:48:53,280 וזה קרה רק סוג של. 1045 00:48:53,280 --> 00:48:56,760 אז זה PHP בשבילך. 1046 00:48:56,760 --> 00:48:59,180 >> מערכים דומים מאוד. 1047 00:48:59,180 --> 00:49:01,270 עדיין יש לנו מסגרת זו. 1048 00:49:01,270 --> 00:49:05,940 הנה, יש לנו כמה משתנים בשם arr, וזה שווה 1049 00:49:05,940 --> 00:49:08,540 to-- יש לנו נורמלי שלנו סימון הסוגר. 1050 00:49:08,540 --> 00:49:10,630 ויש לנו כמה ערך מפתח. 1051 00:49:10,630 --> 00:49:14,630 וההבדל הגדול בין מערכי C ו- PHP 1052 00:49:14,630 --> 00:49:19,330 הוא שיכול להיות לנו associate-- זה אנו יכולים לשייך את הערכים למפתחות. 1053 00:49:19,330 --> 00:49:22,440 אז במקום שיש רק מערך זה צמוד 1054 00:49:22,440 --> 00:49:26,630 במספר או העמדה של אלמנט שבמערך, 1055 00:49:26,630 --> 00:49:29,060 אנחנו באמת יכולים לקשר את זה עם מפתח. 1056 00:49:29,060 --> 00:49:36,700 שבו אנו יכולים לומר, בסדר, אני רוצה כל מה ש הערך קשור לפרות. 1057 00:49:36,700 --> 00:49:39,280 ואולי יש לנו פירות הלכו לבננה. 1058 00:49:39,280 --> 00:49:41,760 אז זה הייתי לחזור בננה אלינו. 1059 00:49:41,760 --> 00:49:44,100 >> אבל בעיקרון, רוב דבר חזק על זה 1060 00:49:44,100 --> 00:49:47,960 הוא שאם אתם זוכרים הדגמה מהרצאה שבו אנחנו בעצם 1061 00:49:47,960 --> 00:49:53,050 איות שכתב בPHP, וזה בדיקת was-- הייתה באמת רק רוצה, 1062 00:49:53,050 --> 00:49:55,007 אין מפתח זה קיים? 1063 00:49:55,007 --> 00:49:56,590 זה באמת סוג של הכח שלו. 1064 00:49:56,590 --> 00:49:58,560 אתה לא צריך לחזר באמצעות המערך שלך. 1065 00:49:58,560 --> 00:50:00,311 אתה לא צריך לדעת מה מרחב זה ב. 1066 00:50:00,311 --> 00:50:01,976 זה יכול להיות בסוף או בתחילת. 1067 00:50:01,976 --> 00:50:04,790 כל עוד אתה יודע את המפתח המשויך לערך, 1068 00:50:04,790 --> 00:50:09,740 PHP רק יכול לירוק ערך ש זכות חזרה החוצה אליך, בסדר? 1069 00:50:09,740 --> 00:50:12,960 >> ולאחר מכן, אנחנו גם רק יש רק בגלל שאנחנו 1070 00:50:12,960 --> 00:50:16,750 יכול להיות זוגות ערך מפתח זה לא אומר שיש לך. 1071 00:50:16,750 --> 00:50:19,180 אתה יכול גם פשוט ליצור מערך רגיל כמו כאן, 1072 00:50:19,180 --> 00:50:21,540 בתחתית, שבו זה רק אחד, שתיים, שלוש, ארבעה. 1073 00:50:21,540 --> 00:50:22,510 אלה הם הערכים שלנו. 1074 00:50:22,510 --> 00:50:25,320 ולמעשה, את המפתחות שלהם הם המדדים. 1075 00:50:25,320 --> 00:50:26,830 אז המפתח לאחד יהיה אפס. 1076 00:50:26,830 --> 00:50:28,610 המפתח לשני יהיה אחד. 1077 00:50:28,610 --> 00:50:31,910 כן הלאה וכן הלאה, אלא אם כן אתה במפורש להקצות מקש, 1078 00:50:31,910 --> 00:50:34,630 אתה יכול להניח ש ערך הוא רק המדד שלהם. 1079 00:50:34,630 --> 00:50:37,290 האם זה הגיוני לכולם? 1080 00:50:37,290 --> 00:50:38,070 אין שאלות? 1081 00:50:38,070 --> 00:50:38,930 מדהים. 1082 00:50:38,930 --> 00:50:44,420 >> OK, foreach הוא דרך ל לחזר באמצעות המערכים שלך. 1083 00:50:44,420 --> 00:50:47,490 אז יש לנו כאן משהו, רק המבנה הכללי. 1084 00:50:47,490 --> 00:50:51,020 אז foreach, את שמו של המערך שלנו, כמו כל מה ש 1085 00:50:51,020 --> 00:50:53,930 אתה רוצה לקרוא לכל אחד אלמנט במערך שלך, 1086 00:50:53,930 --> 00:50:57,270 ואנחנו יכולים לעשות משהו עם שאלמנט או עם ערך ש. 1087 00:50:57,270 --> 00:50:58,680 אז יש לנו דוגמא כאן. 1088 00:50:58,680 --> 00:51:05,770 יש לנו אסוציאטיבי מערך עם שני ערכים אלה 1089 00:51:05,770 --> 00:51:10,080 עם בר להיות קשור foo וqux להיות קשור עם באז. 1090 00:51:10,080 --> 00:51:12,180 אז מפתחות הם foo ואז. 1091 00:51:12,180 --> 00:51:13,650 ערכים הם בר וqux. 1092 00:51:13,650 --> 00:51:18,560 אז foreach, יש לנו המערך שלנו כאן, כזוג ערך המפתח. 1093 00:51:18,560 --> 00:51:21,560 זה מאפשר לנו גישה שני מפתח וערך. 1094 00:51:21,560 --> 00:51:23,680 אולי אתה פשוט רוצה ערך, ובמקרה זה 1095 00:51:23,680 --> 00:51:27,640 אתה יכול פשוט לעשות כמו arr כערך $, ואז אתה 1096 00:51:27,640 --> 00:51:30,640 רק גישה הערך כפי שאתה לחזר באמצעות. 1097 00:51:30,640 --> 00:51:32,600 אבל אולי, לכמה סיבה, אתה רוצה את המפתח, 1098 00:51:32,600 --> 00:51:35,460 וזו הסיבה שבחרתי דוגמא זו במקום. 1099 00:51:35,460 --> 00:51:40,240 אז אתה בעצם יכול לתפעל מפתח וערך במקרה זה. 1100 00:51:40,240 --> 00:51:41,070 בסדר? 1101 00:51:41,070 --> 00:51:41,905 שאלה? 1102 00:51:41,905 --> 00:51:44,279 >> קהל: אם אתה רוצה רק לתפעל את המפתח, היה 1103 00:51:44,279 --> 00:51:45,910 אתה צריך לעשות foreach-- 1104 00:51:45,910 --> 00:51:47,360 >> אליסון: ימין. 1105 00:51:47,360 --> 00:51:50,560 אז אם אתם רוצים לתפעל רק את המפתח, 1106 00:51:50,560 --> 00:51:53,680 אתה עדיין צריך את זה תחביר, כי אם אתה רק 1107 00:51:53,680 --> 00:51:56,930 יש לי עיבוד כמשהו, כדבר אחד, זה 1108 00:51:56,930 --> 00:52:00,070 הולך להניח שאתה רוצה הערך, לא את המפתח. 1109 00:52:00,070 --> 00:52:06,780 אז אם אתה אי פעם רק צריך בדיוק כמו עיבוד: כ, אולי זה כמו אלמנט $, 1110 00:52:06,780 --> 00:52:11,670 זה הולך להניח שאתה שואל רק הערך בכל נקודה. 1111 00:52:11,670 --> 00:52:13,879 אם אתה רוצה באופן מפורש לעשות משהו עם המפתח, 1112 00:52:13,879 --> 00:52:16,170 גם אם אתה לא הולך ל לעשות משהו עם הערך, 1113 00:52:16,170 --> 00:52:18,430 אתה צריך את המבנה הזה שיש לנו כאן 1114 00:52:18,430 --> 00:52:22,330 שבו אתה מבקש באופן מפורש לשניהם את המפתח והערך. 1115 00:52:22,330 --> 00:52:24,170 שאלה גדולה. 1116 00:52:24,170 --> 00:52:25,940 כל דבר אחר? 1117 00:52:25,940 --> 00:52:27,490 מגניב. 1118 00:52:27,490 --> 00:52:29,911 >> בסדר, PHP ו- HTML. 1119 00:52:29,911 --> 00:52:31,410 הו, אנחנו בחזרה לשבע שוב להגדיר p-. 1120 00:52:31,410 --> 00:52:35,380 כך זה צריך להיראות קצת מוכר. 1121 00:52:35,380 --> 00:52:41,760 אז זה קצת טופס HTML פשוט שיש לו כמה קלט שם של שלום. 1122 00:52:41,760 --> 00:52:43,820 ואנחנו רואים שיש לנו שיטת GET שלנו. 1123 00:52:43,820 --> 00:52:47,430 ואם אנחנו זוכרים מp-סטנו, כאשר טופס זה יוגש, 1124 00:52:47,430 --> 00:52:58,130 הוא שולח מערך נקרא _GET $ שיש לי כל התשומות אלה או משתנים מ 1125 00:52:58,130 --> 00:53:00,490 הטופס שצריכה להיות מניפולציות בPHP שלנו. 1126 00:53:00,490 --> 00:53:03,320 אז במקרה הזה, המשתמש היה שם בשמם. 1127 00:53:03,320 --> 00:53:04,370 הם יפרסמו אותה. 1128 00:53:04,370 --> 00:53:07,810 ואנחנו רואים שאנחנו מקבלים כמה מערך כאן. 1129 00:53:07,810 --> 00:53:09,080 יש לנו מערך GET שלנו. 1130 00:53:09,080 --> 00:53:11,510 ואנחנו ניגשים לשם. 1131 00:53:11,510 --> 00:53:15,070 >> כך שאומר, בסדר, תן לי את ערך המשויך לשם, 1132 00:53:15,070 --> 00:53:16,550 שם להיות המפתח כאן. 1133 00:53:16,550 --> 00:53:21,400 ושממפה ישירות למה ש אמרנו שם הקלט שלנו הוא. 1134 00:53:21,400 --> 00:53:28,960 אז זה היה נותן לך את המפתח למה ש הוא הולך להיות במערך שלך כאן. 1135 00:53:28,960 --> 00:53:31,220 האם זה הגיוני לכולם? 1136 00:53:31,220 --> 00:53:32,070 כן? 1137 00:53:32,070 --> 00:53:36,240 >> קהל: האם את השם בGET מתייחס לקו הסגול ב[ לא ברור]? 1138 00:53:36,240 --> 00:53:37,740 >> אליסון: הוא מתייחס לזה כאן. 1139 00:53:37,740 --> 00:53:43,840 אז תחום זה ממש כאן, הוא מתייחס לשם זה כאן. 1140 00:53:43,840 --> 00:53:47,800 אז זה היה יכול להיות שם כמו מספר טלפון, או משהו כזה. 1141 00:53:47,800 --> 00:53:51,790 שם זה אומר בעצם, מה ש אתה מתקשר תחום זה? 1142 00:53:51,790 --> 00:53:53,600 איך אתה מתכוון ל מתייחס לתחום הזה? 1143 00:53:53,600 --> 00:53:57,670 ושם זה הוא למעשה רוצה, אנחנו אומר תחום זה נקרא שם. 1144 00:53:57,670 --> 00:53:59,224 ככה אנחנו הולכים לגשת אליו. 1145 00:53:59,224 --> 00:54:02,070 >> קהל: אז האם זה אוהב, שם קלט שווה בוב, and-- 1146 00:54:02,070 --> 00:54:04,380 >> אליסון: ימין, אז אתה היית מקבל בוב שם למטה. 1147 00:54:04,380 --> 00:54:06,090 בדיוק. 1148 00:54:06,090 --> 00:54:07,800 כולם מגניבים? 1149 00:54:07,800 --> 00:54:10,990 בסדר, אז לקבל לעומת POST, אלה הם שתי הדרכים עיקריות 1150 00:54:10,990 --> 00:54:14,880 שאנו עוברים נתונים בבקשת HTTP. 1151 00:54:14,880 --> 00:54:17,370 אתם צריכים לראות שניהם תקווה אלה. 1152 00:54:17,370 --> 00:54:20,940 אז עם GET, המידע עובר דרך את כתובת האתר. 1153 00:54:20,940 --> 00:54:23,490 אז אם אי פעם לעשות Google חיפושים, YouTube, שתצליח 1154 00:54:23,490 --> 00:54:25,130 כנראה להבחין בכמה סימן שאלה. 1155 00:54:25,130 --> 00:54:28,230 ולאחר מכן, כל המילים כי אתה פשוט לשים שם. 1156 00:54:28,230 --> 00:54:31,410 וPOST מעביר את הנתונים בגוף ההודעה HTTP. 1157 00:54:31,410 --> 00:54:36,922 כך שלא כמו GET, אתה סוג של חשבון כי הנתונים חבוי מהמשתמש. 1158 00:54:36,922 --> 00:54:38,630 אבל מה שבאמת חשוב להבין 1159 00:54:38,630 --> 00:54:44,040 הוא שזה עדיין רק חסר ביטחון כמו GET. 1160 00:54:44,040 --> 00:54:48,780 האנלוגיה אני רוצה להשתמש היא אם יש לך את מספר חשבון הבנק שלך 1161 00:54:48,780 --> 00:54:52,795 ואתה כותב את זה בצד החיצוני של מעטפה, זה די בטוח. 1162 00:54:52,795 --> 00:54:55,920 אם היית כותב אותו על פיסת נייר והכניס אותו למעטפה, 1163 00:54:55,920 --> 00:54:58,850 זה עדיין לא בטוח, כי באמת כל מה שאתה צריך לעשות הוא לפתוח את ש 1164 00:54:58,850 --> 00:55:03,480 ולהסתכל על התוכן הממשי של ההודעה כדי לראות את זה. 1165 00:55:03,480 --> 00:55:08,310 אז זה "נסתר", ואנשים כמו ל חושב שזה בטוח, אבל זה ממש לא. 1166 00:55:08,310 --> 00:55:11,000 ואני בטוח שיהיה Davin להיכנס לזה יותר, אולי. 1167 00:55:11,000 --> 00:55:12,850 אבל זה חשוב הבחנה לעשות 1168 00:55:12,850 --> 00:55:15,820 ומשהו ממש טוב כדי להבין. 1169 00:55:15,820 --> 00:55:19,220 >> OK, SQL, שפת שאילתות מובנית. 1170 00:55:19,220 --> 00:55:22,220 כל הדברים ש שראינו עד לאחרונה! 1171 00:55:22,220 --> 00:55:25,400 אז זה בעצם רק נועד, ברור, לניהול נתונים. 1172 00:55:25,400 --> 00:55:30,560 היו לך בחורים הרבה ניסיון עם זה בשולחנות שלך עם MyAdmin PHP. 1173 00:55:30,560 --> 00:55:34,100 ויש ארבע שאילתות נפוצות כי אנחנו רוצים אתכם לדעת. 1174 00:55:34,100 --> 00:55:37,304 אז יש עדכון, להוסיף, לבחור, ולמחוק. 1175 00:55:37,304 --> 00:55:38,970 כדי לוודא שאתה יודע אותם ממש טוב. 1176 00:55:38,970 --> 00:55:40,960 אנחנו הולכים ללכת דרך אותם ממש מהר. 1177 00:55:40,960 --> 00:55:44,340 >> אז לעדכן, באמת, כמו מה ש אולי אתה חושב שהיא עושה, 1178 00:55:44,340 --> 00:55:46,740 זה פשוט מעדכן נתונים במסד הנתונים שלך. 1179 00:55:46,740 --> 00:55:48,750 אז יש לנו כמה דוגמא כאן. 1180 00:55:48,750 --> 00:55:53,310 זה בכלל מבנה של שאילתא עדכון. 1181 00:55:53,310 --> 00:55:56,150 אז אנחנו לעדכן את הטבלה על זה אנחנו מדברים. 1182 00:55:56,150 --> 00:56:00,520 ואנחנו רוצים להגדיר מסוימים ערכים, עמודות מסוימות 1183 00:56:00,520 --> 00:56:02,600 שווה לערכים ספציפיים. 1184 00:56:02,600 --> 00:56:07,500 אז זה רק מעדכן את השולחן, שינוי ערכים בכל השורות במקרה זה. 1185 00:56:07,500 --> 00:56:13,690 אז בזה כאן למטה, בפועל דוגמא, יש לנו מצטער insert--. 1186 00:56:13,690 --> 00:56:17,630 השקופית שהתקדמה ללא להבין את זה. 1187 00:56:17,630 --> 00:56:22,230 >> אז להגדיר שולחן עדכונים זה col1 שווה לVAL1 בי הבית שווה "קורייר". 1188 00:56:22,230 --> 00:56:25,300 מה זה עושה הוא זה רק משנה, זה רק 1189 00:56:25,300 --> 00:56:28,130 מעדכן את הערכים הללו במקומות מסוימים. 1190 00:56:28,130 --> 00:56:32,300 אז בהתחלה זה אחד, זה משנה אלה ערכים לכל דבר בשולחן שלך, 1191 00:56:32,300 --> 00:56:32,860 בסדר? 1192 00:56:32,860 --> 00:56:35,820 זה הולך לשנות את זה עמודה עבור כל כניסה, 1193 00:56:35,820 --> 00:56:37,020 לכל שורה. 1194 00:56:37,020 --> 00:56:40,840 אבל איפה זה, אתה יכול חושב על זה כעל מוקדמות. 1195 00:56:40,840 --> 00:56:44,020 כך שזה הולך רק לשינוי זה במקומות מאוד מסוימים. 1196 00:56:44,020 --> 00:56:47,840 אז בשבעה, כאשר אתה מגדיר p- אולי עדכן את כמות המזומנים 1197 00:56:47,840 --> 00:56:53,050 שהמשתמש שלך, אתה כנראה לא היית לי מסוים שבם מזהה שווה מזהה הפעלה, נכון? 1198 00:56:53,050 --> 00:56:55,280 >> מכיוון שאתה לא רוצה לשנות את כמות המזומנים 1199 00:56:55,280 --> 00:56:57,630 לכל אדם ש היה שימוש באתר שלך. 1200 00:56:57,630 --> 00:57:00,480 אתה רוצה לשנות את זה לאחד אדם מסוים, אותו אדם להיות 1201 00:57:00,480 --> 00:57:02,410 מי שהיה משתמש בו באותה העת. 1202 00:57:02,410 --> 00:57:04,320 נכון? 1203 00:57:04,320 --> 00:57:07,510 אוקיי, אז להכניס, להכניס ערכים מסוימים לשולחנות. 1204 00:57:07,510 --> 00:57:11,650 זה כמו כשאתה יצירת משתמש חדש לגמרי. 1205 00:57:11,650 --> 00:57:14,240 המבנה הכללי כאן הוא להכניס לתוך כל מה ששולחן 1206 00:57:14,240 --> 00:57:15,680 אנחנו מדברים. 1207 00:57:15,680 --> 00:57:18,910 ערכים, הערכים להיות ש אנחנו באמת רוצים להכניס. 1208 00:57:18,910 --> 00:57:23,060 אוקיי, אז כפי שאנו רואים כאן, אנחנו יש להכניס לטבלה. 1209 00:57:23,060 --> 00:57:27,790 זהו עמודות ספציפיות עם ערכים תואמים. 1210 00:57:27,790 --> 00:57:29,940 אז זה אומר, להוסיף שורה חדשה מכילה 1211 00:57:29,940 --> 00:57:33,660 VAL1 ערכים וVAL2 תחת העמודות ספציפיות האלה. 1212 00:57:33,660 --> 00:57:39,240 >> אז אולי אתה רוצה רק כדי למלא את מחצית הדברים בשורה זו. 1213 00:57:39,240 --> 00:57:41,150 זה מה שחלק זה כאן מאפשר לך לעשות. 1214 00:57:41,150 --> 00:57:43,280 הוא מאפשר לך למעשה איזה חלק. 1215 00:57:43,280 --> 00:57:44,244 כן? 1216 00:57:44,244 --> 00:57:52,150 >> קהל: אתה יכול רק [לא ברור] תאים בשורה [לא ברור]? 1217 00:57:52,150 --> 00:57:55,000 >> אליסון: אם אתה ממלא רק ב חלקים מסוימים של השורה שלך, 1218 00:57:55,000 --> 00:57:57,480 שאר תאים אלה הם רק ריקים. 1219 00:57:57,480 --> 00:58:02,730 1220 00:58:02,730 --> 00:58:05,660 כל עוד אתה מאפשר להם להיות ריק, זה לא בעיה. 1221 00:58:05,660 --> 00:58:09,570 אם אתה מנסה לגשת אליהם, זה הולך לחזור כמה אלמנט ריק. 1222 00:58:09,570 --> 00:58:13,850 אבל חשוב לדעת כי בשולחנות מסוימים, 1223 00:58:13,850 --> 00:58:16,690 הם צריכים להיות מותר null. 1224 00:58:16,690 --> 00:58:18,890 ייתכן שנתקלת ב בעיה במהלך p-הסט שלך 1225 00:58:18,890 --> 00:58:21,320 בגלל שלא נתנו לאף הערכים שלך יהיו בטלים. 1226 00:58:21,320 --> 00:58:26,110 אבל אתה יכול לציין ערך אופציונאלי בשולחן שלך. 1227 00:58:26,110 --> 00:58:29,640 >> OK, בחר, אז זה רק דרך להגיע 1228 00:58:29,640 --> 00:58:33,790 נתונים ספציפיים משולחן ב כמה מזהה שאתה רוצה. 1229 00:58:33,790 --> 00:58:37,990 כוכב אז בחר משולחן שבו col שווה משהו רק אומר, 1230 00:58:37,990 --> 00:58:43,820 תן לי את כל הנתונים הקשורים שם עמודה מסוימת זה נכון. 1231 00:58:43,820 --> 00:58:49,020 אז הכוכב במקרה זה יהיה להחזיר את כל השורה אליך, בסדר? 1232 00:58:49,020 --> 00:58:54,880 >> ואז, במקרה זה, בחר כוכב מ שולחן פשוט נותן לך את הטבלה כולה. 1233 00:58:54,880 --> 00:58:58,940 ולאחר מכן, להסיר ספק, זה פשוט מוחק את השורה מהשולחן. 1234 00:58:58,940 --> 00:59:01,320 אז למחוק משולחן, מה שולחן אנחנו 1235 00:59:01,320 --> 00:59:06,830 התייחסות, שבו כמה ספציפי מזהה או כמה מצב נכון. 1236 00:59:06,830 --> 00:59:07,720 כן? 1237 00:59:07,720 --> 00:59:08,700 >> קהל: שאלה. 1238 00:59:08,700 --> 00:59:10,699 למה אתה משתמש כפול ציטוטים, ואם אתה 1239 00:59:10,699 --> 00:59:13,600 לעשות מרכאות כפולות או בודדת ציטוטים, אין זה משנה? 1240 00:59:13,600 --> 00:59:18,235 >> אליסון: ציטוטים זוגי או גרשיים בודדים לא לעשות את הבדל בSQL. 1241 00:59:18,235 --> 00:59:19,610 חשבתי שראיתי כבר שאלה אחרת. 1242 00:59:19,610 --> 00:59:20,814 כן? 1243 00:59:20,814 --> 00:59:25,070 >> קהל: האם זה לא משפיע על מה ש מקבל נמלט מהשאילתה? 1244 00:59:25,070 --> 00:59:27,945 >> אליסון: רוב? 1245 00:59:27,945 --> 00:59:31,410 >> ROB: מה זאת אומר נמלט מהשאילתה? 1246 00:59:31,410 --> 00:59:36,870 >> קהל: אם למישהו יש שאילתא אחת בצורה של-- 1247 00:59:36,870 --> 00:59:39,862 >> ROB: אם מישהו היה לשים ציטוט אחד ב, 1248 00:59:39,862 --> 00:59:43,560 אז כל עוד אתה חיטוי הקלט שלך, אז זה לא משנה. 1249 00:59:43,560 --> 00:59:46,205 אבל אם אתה משתמש באחת הצעת מחיר ואתה באופן שגוי 1250 00:59:46,205 --> 00:59:47,914 בריחת התשומות שלך, אז כן, הם צריכים 1251 00:59:47,914 --> 00:59:51,079 לשים ציטוט אחד כדי לשבור הקוד שלך. אם אתה משתמש במרכאות כפולות, 1252 00:59:51,079 --> 00:59:53,580 הם צריכים לשים כפולים לצטט לשבור את הקוד שלך. 1253 00:59:53,580 --> 00:59:56,163 אבל כל עוד אתה להימלט דברים נכון, זה לא משנה. 1254 00:59:56,163 --> 00:59:59,220 זה רק הולך להיות מתורגם לסמל הנכון בכל מקרה. 1255 00:59:59,220 --> 01:00:02,332 >> קהל: מה בריחה זה אומרת? 1256 01:00:02,332 --> 01:00:04,040 אליסון: ובכן, כמו חיטוי ובריחה. 1257 01:00:04,040 --> 01:00:06,810 1258 01:00:06,810 --> 01:00:13,820 הבחינה שיש לנו, XKCD הגדול קומיקס שהם מושכים את בו יש לך, 1259 01:00:13,820 --> 01:00:15,629 oh-- 1260 01:00:15,629 --> 01:00:16,670 ROB: זה השקופית האחרונה. 1261 01:00:16,670 --> 01:00:18,500 אליסון: זה השקופית האחרונה, באמת? 1262 01:00:18,500 --> 01:00:20,200 אוי אלוהים. 1263 01:00:20,200 --> 01:00:21,780 יש לנו ללכת, מושלם. 1264 01:00:21,780 --> 01:00:27,900 אוקיי, אז בעצם, אתה יכול להזריק משהו לשאילתא SQL זה 1265 01:00:27,900 --> 01:00:30,560 שבו הוא שובר שלך קוד, או כפי שהראה דוד 1266 01:00:30,560 --> 01:00:38,460 בכיתה, אם יש לנו כמה בודד ציטוט 1 שווה 1 ואם בקוד שלנו, 1267 01:00:38,460 --> 01:00:41,230 אנחנו פשוט להעתיק ישירות שב, ו יש לנו הצעה אחת שהסתיימה, 1268 01:00:41,230 --> 01:00:44,740 מה שקורה הוא שאנחנו מקבלים ביטוי כלשהו ש 1269 01:00:44,740 --> 01:00:48,680 מעריך לנכון שיהיה לתת למישהו להיכנס לבסיס הנתונים של 1270 01:00:48,680 --> 01:00:51,720 ולקבל את הנתונים ש לא רוצה אותם כדי לקבל. 1271 01:00:51,720 --> 01:00:54,240 אז חיטוי התשומות רק אומר שכדי לוודא ש 1272 01:00:54,240 --> 01:00:57,680 שאנחנו בורחים אלה דמויות ומייעד אותם 1273 01:00:57,680 --> 01:01:01,720 כתווים ולא דברים כי יש לאפשר ל 1274 01:01:01,720 --> 01:01:04,990 להילקח פשוטו כמשמעו כהצהרת SQL שלנו. 1275 01:01:04,990 --> 01:01:09,980 >> אז הדבר הגדול שאמרנו כי אתם צריכים להיות באמצעות 1276 01:01:09,980 --> 01:01:13,650 היו תווים מיוחדים HTML, וזה משהו ש 1277 01:01:13,650 --> 01:01:15,730 שאולי כדאי לך להעיף מבט על. 1278 01:01:15,730 --> 01:01:17,240 OK, למחוק. 1279 01:01:17,240 --> 01:01:19,450 סוגי נתונים, כל זה יהיה באינטרנט. 1280 01:01:19,450 --> 01:01:23,510 מאז יש לנו 15 דקות לסיום, אני רק הולך ישר דרך זה. 1281 01:01:23,510 --> 01:01:28,500 PHP ו- SQL, בעצם זה רק שהיו לנו פונקצית שאילתא ש 1282 01:01:28,500 --> 01:01:31,520 סייע בהגנה מפני התקפות זדוניות אלה. 1283 01:01:31,520 --> 01:01:33,970 אז בכל פעם שאתה משתמש ב שאילתא, אנחנו עושים בטוחים 1284 01:01:33,970 --> 01:01:36,560 שדברים מחוטא ומה לא. 1285 01:01:36,560 --> 01:01:41,070 >> MVC הוא רק הפרדיגמה עיצוב, כך מודל, נוף, בקר. 1286 01:01:41,070 --> 01:01:44,200 זה פשוט דרך לשמור על דברים נחמד ונפרד באותה הדרך 1287 01:01:44,200 --> 01:01:47,100 שאנו נוטים גורם קוד אל פונקציות. 1288 01:01:47,100 --> 01:01:53,390 זוהי רק מסגרת עיצוב אתרים המאפשר לך לעשות את אותו הדבר. 1289 01:01:53,390 --> 01:01:54,760 אני הולך לדלג על זה. 1290 01:01:54,760 --> 01:01:58,530 >> זה משהו שאני יהיה סופר נוח עם. 1291 01:01:58,530 --> 01:02:01,132 זה שולחן קטן גדול שם. 1292 01:02:01,132 --> 01:02:03,090 זה נותן לך את הפונקציה דוגמא למודל. 1293 01:02:03,090 --> 01:02:05,473 אני רק עובר את זה כי אני באמת רוצה Davin להיות מסוגל לדבר. 1294 01:02:05,473 --> 01:02:07,140 אם יש לך שאלות, אל תהסס. 1295 01:02:07,140 --> 01:02:07,931 אני אהיה כאן אחרי. 1296 01:02:07,931 --> 01:02:10,360 רק יבואו לדבר איתי. 1297 01:02:10,360 --> 01:02:13,380 עם זה, יש לנו סטטוסי HTTP. 1298 01:02:13,380 --> 01:02:16,270 ודווין של הולכים לפוצץ דרך זה ב- 15 דקות. 1299 01:02:16,270 --> 01:02:17,560 זה הולך להיות גדול. 1300 01:02:17,560 --> 01:02:18,893 >> דווין: OK. 1301 01:02:18,893 --> 01:02:20,312 אה, המיקרופון שלך? 1302 01:02:20,312 --> 01:02:22,210 כן. 1303 01:02:22,210 --> 01:02:23,336 מצטער. 1304 01:02:23,336 --> 01:02:24,460 אליסון: דרך להיות מוכן. 1305 01:02:24,460 --> 01:02:25,335 דווין: לא, אני מוכן. 1306 01:02:25,335 --> 01:02:25,860 אני מוכן. 1307 01:02:25,860 --> 01:02:28,790 בואו נעשיתי את זה. 1308 01:02:28,790 --> 01:02:29,290 הוא מוכן. 1309 01:02:29,290 --> 01:02:30,041 OK. 1310 01:02:30,041 --> 01:02:30,540 מצטער. 1311 01:02:30,540 --> 01:02:31,664 שפכתי קפה על עצמי. 1312 01:02:31,664 --> 01:02:36,037 1313 01:02:36,037 --> 01:02:38,210 אני לא יודע אם אני יותר מבואס שנראה טיפשי, 1314 01:02:38,210 --> 01:02:40,600 או שאין לי קפה יותר. 1315 01:02:40,600 --> 01:02:44,480 בכל מקרה, רק הודעה מהירה על גיליון יש לכם. 1316 01:02:44,480 --> 01:02:47,994 אז גיליון זה יש לך חבר 'הוא לא הרשמי מה על החידון. 1317 01:02:47,994 --> 01:02:49,660 זה רשמי מה על החידון. 1318 01:02:49,660 --> 01:02:52,520 כמו כן, באתר האינטרנט, אנו אומרים לי אתה, בסדר, זה יהיה בחידון. 1319 01:02:52,520 --> 01:02:55,020 אז בגיליון לרמות הקטן יש לך, לא רשמי. 1320 01:02:55,020 --> 01:02:56,690 ויש טעויות בזה. 1321 01:02:56,690 --> 01:03:01,490 אז הכי טוב לא רק בעיוורון להשתמש בו. 1322 01:03:01,490 --> 01:03:04,390 אז כן, זהו זה. 1323 01:03:04,390 --> 01:03:05,980 אז בואו להיכנס ממש מהר זה. 1324 01:03:05,980 --> 01:03:07,420 >> אז HTTP סטטוסים. 1325 01:03:07,420 --> 01:03:10,430 אז מה קורה כאשר אתר, הכל בסדר. 1326 01:03:10,430 --> 01:03:11,144 אישור של כל דבר. 1327 01:03:11,144 --> 01:03:13,310 הכל חוזר ל לך את הדרך שאתה רוצה זה. 1328 01:03:13,310 --> 01:03:15,370 אתה מקבל אישור 200. 1329 01:03:15,370 --> 01:03:19,250 301, שבו יש לנו לראות כי 301 לפני? 1330 01:03:19,250 --> 01:03:20,890 חכה, מה קורה? 1331 01:03:20,890 --> 01:03:23,250 מצטער. 1332 01:03:23,250 --> 01:03:24,980 ראינו הרצאת פח אני בביטחון. 1333 01:03:24,980 --> 01:03:30,690 אז בביטחון, כך שאם דוד הקליד ב http ולאחר מכן ניסיתי ללכת לcs50.net, 1334 01:03:30,690 --> 01:03:31,940 אתה הולך לראות 301 עבר. 1335 01:03:31,940 --> 01:03:32,440 למה? 1336 01:03:32,440 --> 01:03:35,570 בגלל זה הולך להפנות אתה באופן אוטומטי לHTTPS שלנו. 1337 01:03:35,570 --> 01:03:38,649 >> אז 301 עברו, רק שזה בעצם ניתוב מחדש. 1338 01:03:38,649 --> 01:03:40,190 ואתה יכול לחשוב על זה ככה. 1339 01:03:40,190 --> 01:03:43,790 כל אחד מהסטטוסים שיתחילו עם 2 של, אלה הם כמו, בסדר, בסדר של כל דבר. 1340 01:03:43,790 --> 01:03:46,530 כל אחד מהסטטוסים שיתחילו עם 3, אלה הם ניתוב מחדש. 1341 01:03:46,530 --> 01:03:49,571 סטטוסים שיתחילו עם 4, כי אמצעים יש איזה סוג של שגיאת לקוח. 1342 01:03:49,571 --> 01:03:52,440 סטטוסים שיתחילו עם 5, זה סוג של שגיאת שרת. 1343 01:03:52,440 --> 01:03:54,680 אז אתה סוג של לשבור את סטטוסים כמו ש. 1344 01:03:54,680 --> 01:03:59,120 אז 304 לא לא שונו, כך בך server.c p-סטים, אז בואו נגיד שאתה 1345 01:03:59,120 --> 01:04:00,600 cat.html הטעון. 1346 01:04:00,600 --> 01:04:03,360 הכל חוזר, אתה מקבל 200s, OK, גדול. 1347 01:04:03,360 --> 01:04:04,540 >> בואו נגיד שאתה רענון זה. 1348 01:04:04,540 --> 01:04:07,310 ובכן, בתוך ש cat.html, יש לך JPEG. 1349 01:04:07,310 --> 01:04:09,520 ובכן, JPEG, כי הוא לא הולך לקבל מחדש. 1350 01:04:09,520 --> 01:04:12,140 אתה לא הולך לתפקיד אחר GET בקשה לשרת, 1351 01:04:12,140 --> 01:04:13,980 ולאחר מכן לקבל את כל מידע שיחזור. 1352 01:04:13,980 --> 01:04:17,560 זה הולך רק כדי be-- תמונה שהיא הולך להיות במטמון במחשב שלך. 1353 01:04:17,560 --> 01:04:19,540 וכך תמונה שתהיה 304. 1354 01:04:19,540 --> 01:04:20,720 אז זה לא שונה. 1355 01:04:20,720 --> 01:04:24,600 אם לאחר מכן לסגור את, ברור עוגיות, ולאחר מכן רענן 1356 01:04:24,600 --> 01:04:27,490 ומנסה לטעון שדף שוב, אתה הולך לראות 200s. 1357 01:04:27,490 --> 01:04:28,910 אתה לא הולך לראות 304 ש. 1358 01:04:28,910 --> 01:04:32,340 >> 400, בקשה רעה, אמיתי כמו אם מהיר, אתה 1359 01:04:32,340 --> 01:04:34,880 היו הולכים לשלוח אובייקט JSON לשרת 1360 01:04:34,880 --> 01:04:38,090 ואובייקט JSON שלך היה שגוי, תראה משהו כזה. 1361 01:04:38,090 --> 01:04:39,000 403, אסורים. 1362 01:04:39,000 --> 01:04:40,330 כאשר היית רואה אסור? 1363 01:04:40,330 --> 01:04:41,394 כנראה כנראה? 1364 01:04:41,394 --> 01:04:42,060 קהל: chmod. 1365 01:04:42,060 --> 01:04:42,950 דווין: chmod, כן. 1366 01:04:42,950 --> 01:04:44,730 אז לא הגדרת הרשאות נכונה. 1367 01:04:44,730 --> 01:04:45,577 404, לא נמצאו. 1368 01:04:45,577 --> 01:04:46,410 זה פשוט לא קיים. 1369 01:04:46,410 --> 01:04:48,670 אז אם אתה מקליד את כתובת האתר השגויה. 1370 01:04:48,670 --> 01:04:53,500 500, שגיאת שרת פנימית, השרת כנראה אינו מוגדר כראוי. 1371 01:04:53,500 --> 01:04:56,260 משהו לא בצד שלך, אבל משהו בצד השרת. 1372 01:04:56,260 --> 01:04:57,240 ו503? 1373 01:04:57,240 --> 01:04:59,502 הרבה אנשים ראו 503s בp-הסט האחרון. 1374 01:04:59,502 --> 01:05:00,460 כשזה יקרה? 1375 01:05:00,460 --> 01:05:04,180 1376 01:05:04,180 --> 01:05:05,660 שמעתי לחישות. 1377 01:05:05,660 --> 01:05:07,767 >> קהל: כאשר גוגל מחליט שאתה רובוט. 1378 01:05:07,767 --> 01:05:10,350 דווין: כן, כאשר גוגל מחליטה אתה רובוט, אתה מקבל 503s. 1379 01:05:10,350 --> 01:05:11,560 אז זה עומס יתר. 1380 01:05:11,560 --> 01:05:14,620 אם ביקש מהשרת יותר מדי, זה בדרך כלל זמני. 1381 01:05:14,620 --> 01:05:15,560 ורובכם שמו לב לזה. 1382 01:05:15,560 --> 01:05:16,185 אז אתה ראית 503. 1383 01:05:16,185 --> 01:05:19,282 אתה עלול לקחת קצת הפסקה, אז 503s הלך, 1384 01:05:19,282 --> 01:05:20,490 והכל היה בסדר. 1385 01:05:20,490 --> 01:05:26,640 >> גייב: Real מהיר, כאשר אתם מקבלים 500 בככל הנראה הבעיה האחרונה זה נקבע? 1386 01:05:26,640 --> 01:05:27,954 כן? 1387 01:05:27,954 --> 01:05:30,906 >> קהל: בדרך כלל אם יש שרת קובץ איבד 1388 01:05:30,906 --> 01:05:34,650 או [לא ברור] מכונה [לא ברור]. 1389 01:05:34,650 --> 01:05:38,870 >> גייב: אז זה יכול להיות תצורה נושא בPHP שלך בשרת שלך. 1390 01:05:38,870 --> 01:05:42,250 אבל זה יכול להיות רק משהו כמו פסיק ששכח. 1391 01:05:42,250 --> 01:05:44,130 אם אתה מקליד PHP, כמה תחביר שגוי 1392 01:05:44,130 --> 01:05:46,000 עשוי להביא לך משהו כזה. 1393 01:05:46,000 --> 01:05:46,960 בסדר? 1394 01:05:46,960 --> 01:05:48,610 >> דווין: מגניב. 1395 01:05:48,610 --> 01:05:51,180 האם אתה רוצה שאני אעשה רק עד AJAX? 1396 01:05:51,180 --> 01:05:52,950 >> גייב: [לא ברור]. 1397 01:05:52,950 --> 01:05:53,450 דווין: OK. 1398 01:05:53,450 --> 01:05:54,230 אז מה DOM? 1399 01:05:54,230 --> 01:05:55,290 מה DOM לבלוט ל? 1400 01:05:55,290 --> 01:05:56,990 >> קהל: מודל אובייקט מסמך. 1401 01:05:56,990 --> 01:05:57,490 דווין: נחמד. 1402 01:05:57,490 --> 01:06:00,775 ולמה אנחנו אוהבים את זה? 1403 01:06:00,775 --> 01:06:02,670 מדהים. 1404 01:06:02,670 --> 01:06:06,651 טוב, אז זה רק מאפשר לנו גישה HTML, לגשת לדף שלנו במהירות רבה. 1405 01:06:06,651 --> 01:06:07,150 למה? 1406 01:06:07,150 --> 01:06:09,980 כי אנחנו בטיפול שלנו דף, טיפול בתגי HTML שלנו, 1407 01:06:09,980 --> 01:06:11,730 הכל טיפול כאילו הם אובייקטים. 1408 01:06:11,730 --> 01:06:13,710 אם אנחנו מטפלים בהם כמו שהם אובייקטים, אז מה אנחנו יכולים לעשות? 1409 01:06:13,710 --> 01:06:15,210 ובכן, אנחנו יכולים לקרוא לפונקציות עליהם. 1410 01:06:15,210 --> 01:06:16,460 וזה חשוב למה? 1411 01:06:16,460 --> 01:06:19,200 ובכן, כי אנחנו הולכים להשתמש JavaScript כדי לעדכן HTML שלנו, 1412 01:06:19,200 --> 01:06:20,500 לעדכן את החפצים האלה. 1413 01:06:20,500 --> 01:06:23,869 אז אם אנחנו מתייחסים אליהם כאל חפצים, אז אנחנו יכולים לקרוא לפונקציות עליהם. 1414 01:06:23,869 --> 01:06:26,660 אני הולך להיכנס לזה קצת יותר כשאני הולך לJavaScript, 1415 01:06:26,660 --> 01:06:30,510 אבל אתה ראית את כל כמו document.getElementById. 1416 01:06:30,510 --> 01:06:32,870 אז מסמך הוא שלך אלמנט, לקבל אלמנט לפי תעודת זהות, 1417 01:06:32,870 --> 01:06:35,087 אז אתה הולך לחפש עבור חלק מהזהות של בתג HTML. 1418 01:06:35,087 --> 01:06:36,920 ואז, אתה יכול לעשות משהו שאחר. 1419 01:06:36,920 --> 01:06:40,089 לדוגמא, כמו document.body, אז אתה יכול לצרף ילד. 1420 01:06:40,089 --> 01:06:41,630 אז אתה הולך למצוא את המסמך. 1421 01:06:41,630 --> 01:06:42,340 יש לך את המסמך. 1422 01:06:42,340 --> 01:06:43,629 אתה הולך למצוא את הגופה. 1423 01:06:43,629 --> 01:06:44,420 אתה מצאת את הגופה. 1424 01:06:44,420 --> 01:06:46,545 ואז, אתה הולך קורא כמה פונקציה על זה. 1425 01:06:46,545 --> 01:06:50,312 אז לצרף ילד, ואתה יכול לצרף כמה HTML על הסוף בתוך הגוף שלך. 1426 01:06:50,312 --> 01:06:52,520 אז בעצם, אתה פשוט בטיפול זה כמו חפץ. 1427 01:06:52,520 --> 01:06:54,515 אתה מתייחס HTML תגים כמו אובייקט. 1428 01:06:54,515 --> 01:06:57,071 וזה עושה את זה קל מאוד ומהיר לעבור אותם. 1429 01:06:57,071 --> 01:06:59,070 אבל זה גם מאפשר לך קוראים פונקציות עליהם 1430 01:06:59,070 --> 01:07:04,410 כך שאתה יכול לתפעל ולשנות את האלמנטים. 1431 01:07:04,410 --> 01:07:10,162 >> גייב: בהתחשב בזה, למה הוא כזה JavaScript שפה נחמדה אינטראקציה עם HTML? 1432 01:07:10,162 --> 01:07:12,870 רוב הסיכויים הם, כאשר אנשים היו בוחרים השפה עבור הדפדפן, 1433 01:07:12,870 --> 01:07:14,990 לצד הלקוח, JavaScript היא ממש נחמדה, 1434 01:07:14,990 --> 01:07:16,765 זה ממש טוב בטיפול בחפצים. 1435 01:07:16,765 --> 01:07:20,620 ואובייקטי סוג שלהם אוהבים האובייקטים המופיעים בHTML, 1436 01:07:20,620 --> 01:07:23,940 אז זה קל מאוד עבור JavaScript לעשות את זה סוג של טיפול. 1437 01:07:23,940 --> 01:07:24,440 דווין: נחמד. 1438 01:07:24,440 --> 01:07:25,670 אז הנה רק דוגמא. 1439 01:07:25,670 --> 01:07:29,020 אז אני חושב על החידון בשנה שעברה, או אולי לפני שנתיים, אנחנו 1440 01:07:29,020 --> 01:07:30,840 ביקשתי ממך ליצור עץ. 1441 01:07:30,840 --> 01:07:32,660 אז זה בדיוק מה שהיית עושה. 1442 01:07:32,660 --> 01:07:34,255 אז אתה מתחיל לצאת עם מסמך. 1443 01:07:34,255 --> 01:07:36,130 ואז אתה בעצם רק להסתכל על התגים. 1444 01:07:36,130 --> 01:07:38,100 אז אם אתה מסתכל, אנחנו מתחיל בתג HTML. 1445 01:07:38,100 --> 01:07:41,660 ואז, אתה מקבל רמזים על איך לעשות את זה מבוסס על השקע. 1446 01:07:41,660 --> 01:07:43,870 אז סוג ראש מסתעף. 1447 01:07:43,870 --> 01:07:46,242 בתוך הראש, יש לנו תג נוסף לתואר. 1448 01:07:46,242 --> 01:07:47,450 אז, יש לנו תג כותרת. 1449 01:07:47,450 --> 01:07:49,760 ובתוך כך, יש לנו כמה מחרוזת. 1450 01:07:49,760 --> 01:07:52,210 וכך אנו מייצגים מחרוזת במעגל. 1451 01:07:52,210 --> 01:07:54,010 ואת כל התגים נמצאים בריבועים. 1452 01:07:54,010 --> 01:07:56,270 >> ואם אתה מסתכל, אם לחשוב על זה כעץ, 1453 01:07:56,270 --> 01:07:58,730 ונניח שHTML הוא הורה, אז ראש וגוף 1454 01:07:58,730 --> 01:07:59,772 הולכים להיות אחים. 1455 01:07:59,772 --> 01:08:01,813 הם שניהם הולכים להיות ילדיו של ההורה ש. 1456 01:08:01,813 --> 01:08:03,620 אז בגלל שהם שני האחים, שהם 1457 01:08:03,620 --> 01:08:06,590 הולך להיות סוג של ליד אחד את השני במודל העץ שלנו. 1458 01:08:06,590 --> 01:08:08,590 ואז, אתה בעצם לעשות את אותו הדבר בדיוק. 1459 01:08:08,590 --> 01:08:13,512 אז לא קשה, אבל יש לנו שאלנו שאלות כמו זו לפני בחידון. 1460 01:08:13,512 --> 01:08:15,220 גייב: האם מישהו יש לך שאלות עד כה? 1461 01:08:15,220 --> 01:08:16,357 האם זה טוב? 1462 01:08:16,357 --> 01:08:16,856 דווין: מגניב. 1463 01:08:16,856 --> 01:08:19,630 1464 01:08:19,630 --> 01:08:21,600 JavaScript, אישור, את הדברים טובים. 1465 01:08:21,600 --> 01:08:24,069 אז JavaScript, מה הוא JavaScript? 1466 01:08:24,069 --> 01:08:28,370 ובכן, JavaScript is-- זה , אבל אלה מסובכים 1467 01:08:28,370 --> 01:08:30,727 כמה מרגעי השיא שאתה צריך לזכור. 1468 01:08:30,727 --> 01:08:31,810 ראשית, זה שהוקלד באופן רופף. 1469 01:08:31,810 --> 01:08:33,529 מה זה אומר? 1470 01:08:33,529 --> 01:08:35,596 אז PHP was-- כן, מה קורה? 1471 01:08:35,596 --> 01:08:39,854 >> קהל: אין לך לבמפורש מדינה איזה סוג של משתנה זה. 1472 01:08:39,854 --> 01:08:40,479 דווין: מושלם. 1473 01:08:40,479 --> 01:08:43,270 אז הוא אמר שאין לך ל במפורש סוג משתנה. 1474 01:08:43,270 --> 01:08:44,160 זה בדיוק נכון. 1475 01:08:44,160 --> 01:08:49,700 אז בC, אם היה לי int i שווה 50, לאחר מכן ב- PHP, זה בדיוק כמו זה, $ i, 1476 01:08:49,700 --> 01:08:50,550 שווה 50. 1477 01:08:50,550 --> 01:08:54,319 ואז ב- JavaScript, מה הייתה השיחה להיות? 1478 01:08:54,319 --> 01:08:55,260 Var, נכון? 1479 01:08:55,260 --> 01:08:56,566 זה יהיה כמו שאני var שווה 50. 1480 01:08:56,566 --> 01:08:58,649 אבל אתה לא צריך להיות כמו, אוקיי, זה int. 1481 01:08:58,649 --> 01:09:00,350 OK, זה הוא מחרוזת. 1482 01:09:00,350 --> 01:09:01,731 אין צורך לעשות את זה. 1483 01:09:01,731 --> 01:09:02,939 זה שפה פירשה. 1484 01:09:02,939 --> 01:09:04,904 אז מה זה אומר? 1485 01:09:04,904 --> 01:09:06,340 >> קהל: לא נאסף. 1486 01:09:06,340 --> 01:09:10,470 >> דווין: מה שלא נערך אומר? 1487 01:09:10,470 --> 01:09:11,392 כן? 1488 01:09:11,392 --> 01:09:15,336 >> קהל: אין לך לבנות מחדש את הקוד 1489 01:09:15,336 --> 01:09:18,294 כדי לקבל את זה מוכן ל המחשב כדי להפעיל אותו. 1490 01:09:18,294 --> 01:09:23,144 זה פשוט לקח בזמן ביצוע והמחשב [לא ברור]. 1491 01:09:23,144 --> 01:09:25,560 דווין: כן, אז זה הולך עובר באמצעות מתורגמן. 1492 01:09:25,560 --> 01:09:26,750 אבל אתה בדיוק נכון. 1493 01:09:26,750 --> 01:09:28,319 כך שלעולם לא הולכים כדי לקמפל את זה, נכון? 1494 01:09:28,319 --> 01:09:30,399 כאשר אתה עושה שלך PHP וקוד JavaScript, 1495 01:09:30,399 --> 01:09:31,365 אתה אף פעם לא קראת הידור. 1496 01:09:31,365 --> 01:09:33,779 אתה אף פעם לא קראת משהו כזה לעשות או משהו כזה. 1497 01:09:33,779 --> 01:09:34,800 זה בגלל שהוא פירש. 1498 01:09:34,800 --> 01:09:37,319 אז בכל פעם שהוא עובר דפדפן, זה הולך באמצעות מתורגמן. 1499 01:09:37,319 --> 01:09:40,370 וזה הולך לפרש אותו בדיוק בזמן אמיתי מייד בשבילך. 1500 01:09:40,370 --> 01:09:43,770 אז מה הם כמה חיוביים וגם שליליים שיש לפרש שפה 1501 01:09:43,770 --> 01:09:45,258 ויש להם שפת הידור? 1502 01:09:45,258 --> 01:09:48,240 1503 01:09:48,240 --> 01:09:50,540 אז compiling-- כן, מה קורה? 1504 01:09:50,540 --> 01:09:52,444 >> קהל: המפורש הוא איטי יותר. 1505 01:09:52,444 --> 01:09:53,319 דווין: באיזה מובן? 1506 01:09:53,319 --> 01:09:57,167 1507 01:09:57,167 --> 01:09:59,091 >> קהל: לאחר ש לקמפל, אין לך 1508 01:09:59,091 --> 01:10:04,400 לעשות כל צעדים נוספים כדי לבצע זה, ואילו [לא ברור] זה. 1509 01:10:04,400 --> 01:10:05,570 >> דווין: ימין, מושלם. 1510 01:10:05,570 --> 01:10:08,386 אז מה שאמרת הוא בעצם שקומפילציה, 1511 01:10:08,386 --> 01:10:10,760 כאשר אתה מהדר, יש לך הרבה עלויות מראש, נכון? 1512 01:10:10,760 --> 01:10:11,760 אתה הולך לעבד אותו. 1513 01:10:11,760 --> 01:10:13,750 אבל אחרי שאתה לקמפל אותו, מהדר הולך לייעל את זה. 1514 01:10:13,750 --> 01:10:14,840 זה הולך להיות מהיר. 1515 01:10:14,840 --> 01:10:16,170 זה הולך בעצם להיות מהיר כמו שזה יכול להיות. 1516 01:10:16,170 --> 01:10:18,830 לפרש, אתה אף פעם לא יש שעלות מראש. 1517 01:10:18,830 --> 01:10:22,260 במקום זאת, זה הולך להיות קצת יותר איטי כל פעם שאתה מפרש אותו. 1518 01:10:22,260 --> 01:10:24,940 ואתה הולך צריך לפרש אותו בכל פעם. 1519 01:10:24,940 --> 01:10:27,114 אז במקום שיש זה עלות פעם אחת, עכשיו אתה 1520 01:10:27,114 --> 01:10:29,530 אצטרך לפרש את זה בכל פעם הדף הופך. 1521 01:10:29,530 --> 01:10:31,890 >> אז מתורגמנים טובים, כי אתה לא צריך לקמפל אותו, 1522 01:10:31,890 --> 01:10:33,980 אבל הם רעים שבכל עת את הדף נטען, זה 1523 01:10:33,980 --> 01:10:35,771 אצטרך לפרש JavaScript זה. 1524 01:10:35,771 --> 01:10:40,520 וזה הולך לרוץ מעט איטי מאשר אם היה לך לעבד אותו. 1525 01:10:40,520 --> 01:10:43,044 מאפשר לך communicate-- הו, לחכות. 1526 01:10:43,044 --> 01:10:44,960 משמש כדי לתפעל תוכן ומראה. 1527 01:10:44,960 --> 01:10:46,043 אנחנו רק דיברנו על זה. 1528 01:10:46,043 --> 01:10:47,250 היא משתמשת DOM. 1529 01:10:47,250 --> 01:10:49,930 AJAX, נקבל ל AJAX בקצת. 1530 01:10:49,930 --> 01:10:51,520 ואז, זה בצד הלקוח. 1531 01:10:51,520 --> 01:10:53,110 אז PHP היא צד שרת. 1532 01:10:53,110 --> 01:10:54,360 JavaScript היא בצד הלקוח. 1533 01:10:54,360 --> 01:10:57,780 מה הם חיוביים לזה? 1534 01:10:57,780 --> 01:10:58,280 זה אומר שזה. 1535 01:10:58,280 --> 01:11:01,480 1536 01:11:01,480 --> 01:11:02,780 זה מהיר, נכון? 1537 01:11:02,780 --> 01:11:05,282 מכיוון שאתה לא צריך to-- זה יותר מהר. 1538 01:11:05,282 --> 01:11:07,490 אתה לא צריך לתקשר עם כמה מכשיר אחר. 1539 01:11:07,490 --> 01:11:08,790 אם אתה רק עליך הלקוח, אתה אף פעם לא 1540 01:11:08,790 --> 01:11:11,280 תצטרך ללכת ו לראות מה בשרת 1541 01:11:11,280 --> 01:11:13,150 ואז לדווח בחזרה או משהו כזה. 1542 01:11:13,150 --> 01:11:15,410 אז בצד הלקוח נוטה להיות קצת יותר מהר. 1543 01:11:15,410 --> 01:11:17,910 >> גייב: כן, אבל זה זה לא אומר שPHP היא 1544 01:11:17,910 --> 01:11:20,440 מהר יותר מאשר JavaScript או כל דבר של כדומה. 1545 01:11:20,440 --> 01:11:23,270 הם רצים סוג של באותו מהירות כי הם שניהם 1546 01:11:23,270 --> 01:11:24,490 שפות פירשו. 1547 01:11:24,490 --> 01:11:26,680 הדבר זה איטי כאן היא הבקשה. 1548 01:11:26,680 --> 01:11:28,870 אז אתה בעצם הולך כל הדרך לברזיל 1549 01:11:28,870 --> 01:11:31,460 כדי לקבל קצת מידע שגרתי שם. 1550 01:11:31,460 --> 01:11:34,590 אבל PHP ו- JavaScript, הם סוג של לרוץ באותה המהירות. 1551 01:11:34,590 --> 01:11:37,930 זה לא שהוא אחד מהר יותר מאשר אחרים. 1552 01:11:37,930 --> 01:11:40,600 זה, גם, שאלת טריק כאן. 1553 01:11:40,600 --> 01:11:47,338 אז JavaScript לא הופך קוד מכונה, אמת או שקר? 1554 01:11:47,338 --> 01:11:48,590 >> קהל: False. 1555 01:11:48,590 --> 01:11:49,090 גייב: False. 1556 01:11:49,090 --> 01:11:51,298 זה חייב להיות מכונה קוד כי קוד המכונה הוא 1557 01:11:51,298 --> 01:11:53,210 הדבר היחיד שמכונה מבין. 1558 01:11:53,210 --> 01:11:55,800 למרות שזה לא הידור, זה עדיין הופך קוד מכונה 1559 01:11:55,800 --> 01:11:59,120 כי המתורגמן הוא רק תכנית שהולכת שורה אחרת שורה 1560 01:11:59,120 --> 01:12:02,170 והופך את קו של משהו במחשב מבין. 1561 01:12:02,170 --> 01:12:02,825 בסדר? 1562 01:12:02,825 --> 01:12:03,325 מגניב. 1563 01:12:03,325 --> 01:12:08,530 1564 01:12:08,530 --> 01:12:12,890 >> דווין: הנה רק בסיסי מאוד שלום תכנית JavaScript עולם. 1565 01:12:12,890 --> 01:12:15,590 אז אני לא יודע if-- שראית את זה. 1566 01:12:15,590 --> 01:12:17,630 אבל בדיוק יש לך HTML כאן. 1567 01:12:17,630 --> 01:12:21,020 ובמקום באמת לשים JavaScript בתגי script, 1568 01:12:21,020 --> 01:12:22,810 אז בדרך כלל היית לשים אותו בראש. 1569 01:12:22,810 --> 01:12:24,030 יש לך תגי סקריפט. 1570 01:12:24,030 --> 01:12:24,870 אתה מפיל אותו שם. 1571 01:12:24,870 --> 01:12:28,350 כל מה שעשינו כאן הוא שאנחנו מקושרים in-- אז אנחנו כבר מקושרים בקובץ JavaScript 1572 01:12:28,350 --> 01:12:29,137 כמו זה. 1573 01:12:29,137 --> 01:12:30,470 ועשית כולך את זה, נכון? 1574 01:12:30,470 --> 01:12:34,740 לכן, כאשר אתה משתמש jQuery ו underscore.js בp-הסט האחרון, 1575 01:12:34,740 --> 01:12:38,700 אין לך טונות של קוד ב תגי התסריט שלך, בראש שלך. 1576 01:12:38,700 --> 01:12:41,415 אתה יכול לעשות את זה, אבל במקום אתה פשוט מחבר אותו ב. 1577 01:12:41,415 --> 01:12:43,540 ואתה מקשר אותו ב רק אתה אוהב לעשות עם CSS. 1578 01:12:43,540 --> 01:12:50,186 אז זה פשוט עושה את זה קל יותר לקריאה כל כך הקוד שלך לא אוהב ארוך 1,000 קווים 1579 01:12:50,186 --> 01:12:52,310 עם טונות של פונקציות ש ייתכן שאתה לא משתמש. 1580 01:12:52,310 --> 01:12:53,518 >> במקום זאת, אתה רק לקשר אותו ב. 1581 01:12:53,518 --> 01:12:55,050 זה תאים, זה. 1582 01:12:55,050 --> 01:13:00,110 זה כמו לכתוב כמה קובץ כותרת, ו לאחר מכן, כולל שקובץ הכותרת בג 1583 01:13:00,110 --> 01:13:01,620 תחשוב על זה בדיוק כמו זה. 1584 01:13:01,620 --> 01:13:02,680 אז מה זה עושה? 1585 01:13:02,680 --> 01:13:04,560 ובכן, זה הולך לרוץ. 1586 01:13:04,560 --> 01:13:05,410 זה הולך כדי להתריע. 1587 01:13:05,410 --> 01:13:08,020 אז אתה הולך לקבל קצת צץ בשם שלום עולם. 1588 01:13:08,020 --> 01:13:11,420 שאלה מהירה, בדיקת שפיות רק, כך שאתם רואים כאן בגוף, 1589 01:13:11,420 --> 01:13:13,160 אומר שגוף, HTML כאן. 1590 01:13:13,160 --> 01:13:14,080 מה בא קודם? 1591 01:13:14,080 --> 01:13:16,864 האם אני רואה את הגוף, HTML כאן, או שאני רואה את ההתראה ראשונה? 1592 01:13:16,864 --> 01:13:19,828 1593 01:13:19,828 --> 01:13:20,820 >> קהל: התראה. 1594 01:13:20,820 --> 01:13:21,470 >> דווין: נכון. 1595 01:13:21,470 --> 01:13:22,110 לדבריו, ערניים. 1596 01:13:22,110 --> 01:13:22,610 למה? 1597 01:13:22,610 --> 01:13:24,470 >> קהל: מכיוון שאתה ללכת מלמעלה עד למטה. 1598 01:13:24,470 --> 01:13:25,600 >> דווין: כן. 1599 01:13:25,600 --> 01:13:26,100 מושלם. 1600 01:13:26,100 --> 01:13:29,207 אז הוא אומר, שאתה הולך מלמעלה תחתון, שהיא נכונה באופן מוחלט. 1601 01:13:29,207 --> 01:13:30,790 אתה הולך מלמעלה למטה. 1602 01:13:30,790 --> 01:13:34,790 ובJavaScript, jQuery, יש לך פונקציה זו onload כמו, או מוכן, 1603 01:13:34,790 --> 01:13:38,030 וזה אומר, בסדר, תחכה עד ש כל HTML זה נטען. 1604 01:13:38,030 --> 01:13:39,580 ואז, קורא JavaScript. 1605 01:13:39,580 --> 01:13:42,190 כי אין לנו את זה כאן, דבר הראשון שהולך לקרות 1606 01:13:42,190 --> 01:13:43,920 הוא זה הולך ללכת מלמעלה עד למטה. 1607 01:13:43,920 --> 01:13:46,310 זה הולך להכות שJS קורא, זה הולך כדי להתריע. 1608 01:13:46,310 --> 01:13:49,510 לאחר שתלחץ על אישור, ההתראה שהולכת משם. 1609 01:13:49,510 --> 01:13:53,600 אז זה הולך להראות אתה הגוף HTML כאן. 1610 01:13:53,600 --> 01:13:54,590 נחמד. 1611 01:13:54,590 --> 01:14:00,880 >> OK, מהירה, כתיבה כל כך פשוט אמיתית ב- JavaScript הוא סופר מהיר. 1612 01:14:00,880 --> 01:14:02,710 כדי להכריז שם. משתנה, var 1613 01:14:02,710 --> 01:14:07,070 אז בC, יש לך אני int, יש לך להכריז איזה סוג של סוג זה. 1614 01:14:07,070 --> 01:14:08,040 PHP, $. 1615 01:14:08,040 --> 01:14:08,755 JavaScript, var. 1616 01:14:08,755 --> 01:14:09,630 דברנו על זה. 1617 01:14:09,630 --> 01:14:11,020 בסדר, בואו נלך. 1618 01:14:11,020 --> 01:14:12,510 >> לולאות, אותו דבר. 1619 01:14:12,510 --> 01:14:14,230 אותו דבר. 1620 01:14:14,230 --> 01:14:18,165 הצהרות פונקציה, כך בדיוק כמו שראית בג 1621 01:14:18,165 --> 01:14:21,290 הדבר היחיד שהשונה הוא כל כך כש אתה מגיע לשפות תכנות אחרות, 1622 01:14:21,290 --> 01:14:24,780 כמו שלוקח 51 סמסטר הבא ואתה עושה עם ocaml, 1623 01:14:24,780 --> 01:14:26,690 אתה יכול להתמודד עם פונקציות בעילום שם. 1624 01:14:26,690 --> 01:14:28,240 אז זה בדיוק מה שיש לך כאן. 1625 01:14:28,240 --> 01:14:31,560 אז אתה רוצה לשים בסכום, איזה ערך הסכום. 1626 01:14:31,560 --> 01:14:33,870 אבל ייתכן שרק עושה את זה פעם אחת. 1627 01:14:33,870 --> 01:14:37,310 אז אתה לא רוצה לקרוא לזה פונקציה סכום, נותן לו הצהרה על פונקציה. 1628 01:14:37,310 --> 01:14:39,830 במקום זאת, אתה פשוט להשתמש בו כפונקציה אנונימית. 1629 01:14:39,830 --> 01:14:42,469 ושראית את זה הרבה. 1630 01:14:42,469 --> 01:14:44,510 תראה דוגמא ל זה בכמה שקופיות. 1631 01:14:44,510 --> 01:14:45,597 כן, אנחנו תראו. 1632 01:14:45,597 --> 01:14:46,430 גייב: שאלה טובה. 1633 01:14:46,430 --> 01:14:50,660 כאשר ייתכן שתרצה להשתמש ב פונקציה אנונימית כאן? 1634 01:14:50,660 --> 01:14:54,111 בעיקרון, כאשר אתה רוצה משהו, כמו אירוע, שיקרה. 1635 01:14:54,111 --> 01:14:55,860 לכן, כאשר העכבר הוא לחץ, למשל, 1636 01:14:55,860 --> 01:14:57,790 אתה רוצה קצת פונקציה שתיקרא. 1637 01:14:57,790 --> 01:15:00,570 אז אתה עובר לאירוע מטפל, אתה עובר לאירוע, 1638 01:15:00,570 --> 01:15:02,870 סוג של, הפונקציה ש אתה רוצה שתיקרא. 1639 01:15:02,870 --> 01:15:04,710 ומה שאתה עובר זה כמו, בסופו של הדבר 1640 01:15:04,710 --> 01:15:08,757 שלו של היום, רק מצביע ל הוראה ש, לפונקציה. 1641 01:15:08,757 --> 01:15:11,090 אז זה לא כמו שאתה עובר כל הקוד, בדיוק כפי ש 1642 01:15:11,090 --> 01:15:12,173 מצביע לפונקציה. 1643 01:15:12,173 --> 01:15:17,871 ולאחר מכן, כאשר מישהו לוחץ על עכבר, אז פונקציה שנקראת. 1644 01:15:17,871 --> 01:15:22,340 >> דווין: מערכים, כך ש יש לי הכרזת מערך. 1645 01:15:22,340 --> 01:15:23,990 ואז, מערך לשים את הדברים ב. 1646 01:15:23,990 --> 01:15:25,769 ממש מהר, מה זה להדפיס את? 1647 01:15:25,769 --> 01:15:27,060 מה האלמנט השלישי יהיה? 1648 01:15:27,060 --> 01:15:31,470 1649 01:15:31,470 --> 01:15:32,450 >> קהל: "JS". 1650 01:15:32,450 --> 01:15:33,940 >> דווין: נכון, זה יהיה "JS". 1651 01:15:33,940 --> 01:15:35,760 חכה, לחזור. 1652 01:15:35,760 --> 01:15:37,100 מהו האורך? 1653 01:15:37,100 --> 01:15:38,117 >> קהל: שלוש. 1654 01:15:38,117 --> 01:15:38,950 דווין: שלוש, נכון? 1655 01:15:38,950 --> 01:15:40,210 בדיוק מה שאתה חושב. 1656 01:15:40,210 --> 01:15:42,072 אוקיי, עכשיו ללכת. 1657 01:15:42,072 --> 01:15:43,530 מערכים, אתה יכול להוסיף להם דברים. 1658 01:15:43,530 --> 01:15:45,395 אז אתה יכול ללכת מעבר ל הגבולות הראשוניים שלהם. 1659 01:15:45,395 --> 01:15:46,740 רק משהו שכדאי לזכור. 1660 01:15:46,740 --> 01:15:49,760 PHP, JavaScript, הם קצת קצת יותר סלחני במונחים של דברים 1661 01:15:49,760 --> 01:15:50,570 כמו ש. 1662 01:15:50,570 --> 01:15:54,260 אובייקטים, דומה מאוד ל structs בC, מאוד 1663 01:15:54,260 --> 01:15:56,590 כמו מערכים אסוציאטיביים ב- PHP. 1664 01:15:56,590 --> 01:15:58,720 היה לך כל ניסיון עם זה. 1665 01:15:58,720 --> 01:16:01,880 אז JSON, כאשר אתה עובר JSON הלוך ושוב בשמונה להגדיר p-, 1666 01:16:01,880 --> 01:16:03,260 זה האובייקט שלך. 1667 01:16:03,260 --> 01:16:06,290 >> אז כן, דוגמא, דוגמא מהירה אמיתית. 1668 01:16:06,290 --> 01:16:07,880 כאן הוא אובייקט. 1669 01:16:07,880 --> 01:16:12,700 הדרך בה אתה אזכור זה אובייקט, כל כך פשוט ממש מהר, 1670 01:16:12,700 --> 01:16:18,630 בואו נגיד שאני רוצה למצוא , בסדר, מה הוא הקורס? 1671 01:16:18,630 --> 01:16:20,681 ולכן שם האובייקט כאן הוא CS50. 1672 01:16:20,681 --> 01:16:23,180 ולאחר מכן, אם היה לי אסוציאטיבי מערך, איך אני אעשה את זה? 1673 01:16:23,180 --> 01:16:24,580 אני אהיה באמצעות מפתח, נכון? 1674 01:16:24,580 --> 01:16:26,030 אז יש לי את שמו של המערך. 1675 01:16:26,030 --> 01:16:30,160 יש לי הסוגר, ציטוטים, מפתח, ציטוטי סוף, תושבת הסוף, 1676 01:16:30,160 --> 01:16:33,610 ושיהיה התייחסות ש אלמנט בתוך המערך האסוציאטיבי שלי. 1677 01:16:33,610 --> 01:16:37,646 איך אני הפניה כמובן בתוך האובייקט שלי? 1678 01:16:37,646 --> 01:16:39,170 מישהו יודע? 1679 01:16:39,170 --> 01:16:40,622 >> קהל: [לא ברור]. 1680 01:16:40,622 --> 01:16:41,784 >> דווין: מה קורה? 1681 01:16:41,784 --> 01:16:42,700 קהל: CS50.course. 1682 01:16:42,700 --> 01:16:43,510 דווין: נכון, כן. 1683 01:16:43,510 --> 01:16:45,320 אז CS50.course. 1684 01:16:45,320 --> 01:16:48,770 אז דרכך הפניה דברים בתוך אובייקט JSON הוא עם נקודה. 1685 01:16:48,770 --> 01:16:53,114 >> קהל: אתה יכול גם להשתמש בתחביר מערך. 1686 01:16:53,114 --> 01:16:54,050 >> דווין: OK, בסדר. 1687 01:16:54,050 --> 01:16:57,544 >> גייב: אתה יכול גם להשתמש בסוגר CS50, מחרוזת, כמו מרכאות. 1688 01:16:57,544 --> 01:16:59,210 קהל: אני חושב שזה זהה ל- PHP. 1689 01:16:59,210 --> 01:17:00,293 גייב: זה אותו הדבר. 1690 01:17:00,293 --> 01:17:02,487 דווין: פיין! 1691 01:17:02,487 --> 01:17:03,945 אבל אתה תראה במקומות אחרים זה. 1692 01:17:03,945 --> 01:17:08,990 1693 01:17:08,990 --> 01:17:10,480 כן, אז תמשיך. 1694 01:17:10,480 --> 01:17:13,330 זה מה שאני רק אמרתי. 1695 01:17:13,330 --> 01:17:17,840 אז לדוגמא JavaScript jQuery. 1696 01:17:17,840 --> 01:17:19,440 אז זה DOM שלי, נכון? 1697 01:17:19,440 --> 01:17:22,290 1698 01:17:22,290 --> 01:17:25,410 ממש מהר, כך שיש לי ראש, שלום עולם, גוף. 1699 01:17:25,410 --> 01:17:26,160 יש לי לחץ. 1700 01:17:26,160 --> 01:17:27,870 זה אומר "לדחוף אותי," אז אני רוצה לדחוף אותו. 1701 01:17:27,870 --> 01:17:29,745 ואני רוצה לעשות משהו כאשר הוא לחץ. 1702 01:17:29,745 --> 01:17:31,220 ימין, הבא. 1703 01:17:31,220 --> 01:17:34,630 >> נכון, אז זה JavaScript שלי. 1704 01:17:34,630 --> 01:17:37,790 אז jQuery הוא פשוט יותר קל דרך לכתוב JavaScript. 1705 01:17:37,790 --> 01:17:40,920 אז זה, ומה שאני הולך להראות לי אתה הבא, הולך להיות jQuery, 1706 01:17:40,920 --> 01:17:41,930 זהים. 1707 01:17:41,930 --> 01:17:43,990 אז הם יעשו את אותם דברים. 1708 01:17:43,990 --> 01:17:45,974 רק jQuery נוטה להיות קצת יותר קל. 1709 01:17:45,974 --> 01:17:47,140 אנשים נוטים לאהוב את זה יותר. 1710 01:17:47,140 --> 01:17:48,390 יש לו הרבה פונקציונלי. 1711 01:17:48,390 --> 01:17:49,830 אז אנשים נוטים להשתמש jQuery. 1712 01:17:49,830 --> 01:17:53,270 כל מה שאתה משמש jQuery בp-הסט האחרון. 1713 01:17:53,270 --> 01:17:54,270 אז מה זה יעשה? 1714 01:17:54,270 --> 01:17:56,580 מה יהיה JavaScript-- זה כל כך זה פשוט JavaScript. 1715 01:17:56,580 --> 01:17:57,430 מה זה יעשה? 1716 01:17:57,430 --> 01:18:00,600 1717 01:18:00,600 --> 01:18:03,450 מה הוא יעשה? 1718 01:18:03,450 --> 01:18:04,890 >> אז קודם כל, אתה רואה חלון onload. 1719 01:18:04,890 --> 01:18:05,390 נכון? 1720 01:18:05,390 --> 01:18:06,640 אז אנחנו לא רואים את זה לפני. 1721 01:18:06,640 --> 01:18:09,380 אז זה הולך לחכות עד לטעינת החלון כולו. 1722 01:18:09,380 --> 01:18:12,770 אז זה הולך לחכות עד עומס HTML, כל התמונות 1723 01:18:12,770 --> 01:18:13,770 לפני שהוא עושה משהו. 1724 01:18:13,770 --> 01:18:16,050 אז בואו נגיד שDOM שלנו עמוס. 1725 01:18:16,050 --> 01:18:17,270 כל מה שיש שם. 1726 01:18:17,270 --> 01:18:19,080 אז מה הולך לקרות? 1727 01:18:19,080 --> 01:18:19,922 כן? 1728 01:18:19,922 --> 01:18:22,880 >> קהל: לחצן מופיע. 1729 01:18:22,880 --> 01:18:25,201 >> דווין: לחצן כבר שם. 1730 01:18:25,201 --> 01:18:26,700 כן, כל כך שלהן כבר שם. 1731 01:18:26,700 --> 01:18:31,190 אבל זה הולך לומר, OK, אם אני לוחץ על הכפתור, 1732 01:18:31,190 --> 01:18:33,650 כך על הכפתור כבר שם, כמו שתג HTML. 1733 01:18:33,650 --> 01:18:35,980 חכה, לחזור ממש מהר. 1734 01:18:35,980 --> 01:18:39,470 תג זה נכון כאן הוא הולך להיות לחצן כבר. 1735 01:18:39,470 --> 01:18:40,810 יש כבר כפתור. 1736 01:18:40,810 --> 01:18:44,120 אבל אז, JavaScript תג, ממש כאן, 1737 01:18:44,120 --> 01:18:46,160 זה אומר, בסדר, אני רוצה כדי לקבל אלמנט לפי תעודת זהות, 1738 01:18:46,160 --> 01:18:50,300 כך כפתור חיפוש פשוט אומר, בסדר, אני רוצה כדי למפות משתנה זה ללחצן זה. 1739 01:18:50,300 --> 01:18:53,120 אז משתנה כי הוא פשוט דרך קלה יותר לגשת ללחצן זה. 1740 01:18:53,120 --> 01:18:57,300 ואני אומר, אוקיי, אם אני לוחץ ש כפתור, כך שאם אני לוחץ על אלמנט ש, 1741 01:18:57,300 --> 01:18:59,560 ויסוד זה מתייחס ל הכפתור, אם אני לוחץ עליו, 1742 01:18:59,560 --> 01:19:00,875 אז אני רוצה לקרוא לפונקציה. 1743 01:19:00,875 --> 01:19:03,500 הנה אחד אנונימי אלה פונקציות שאנחנו מדברים על. 1744 01:19:03,500 --> 01:19:04,840 >> פשוט לקרוא כמה פונקציה. 1745 01:19:04,840 --> 01:19:08,840 בתוך פונקציה ש, בעצם משהו שראינו הרבה, ערני. 1746 01:19:08,840 --> 01:19:10,477 אתה לוחץ על כפתור החיפוש. 1747 01:19:10,477 --> 01:19:12,060 זה הולך להן בעצם. 1748 01:19:12,060 --> 01:19:13,040 אתה לוחץ עליו. 1749 01:19:13,040 --> 01:19:14,040 אתה מקבל התראה ש. 1750 01:19:14,040 --> 01:19:14,850 X החוצה. 1751 01:19:14,850 --> 01:19:15,754 זֶה הַכֹּל. 1752 01:19:15,754 --> 01:19:16,254 כן? 1753 01:19:16,254 --> 01:19:21,980 >> קהל: אז אם אתה שם את התסריט , תג תסריט [לא ברור] ב- HTML שלך? 1754 01:19:21,980 --> 01:19:24,300 >> דווין: אתה יכול לשים את התסריט ישר תג בראש 1755 01:19:24,300 --> 01:19:30,667 כי יש לך onload זה. 1756 01:19:30,667 --> 01:19:32,000 זה גם שיש לך בלחיצה. 1757 01:19:32,000 --> 01:19:34,166 אז זה הולך לחכות עד אתה לוחץ על משהו. 1758 01:19:34,166 --> 01:19:37,470 אבל onload הוא רק כדי להיות בטוח, כדי להפוך את עומסים בטוחים הכל ל- HTML שלך 1759 01:19:37,470 --> 01:19:38,170 לפני כן. 1760 01:19:38,170 --> 01:19:39,247 כן? 1761 01:19:39,247 --> 01:19:40,330 אתה רוצה להגיד משהו? 1762 01:19:40,330 --> 01:19:41,080 >> גייב: [לא ברור]. 1763 01:19:41,080 --> 01:19:42,485 דווין: כן. 1764 01:19:42,485 --> 01:19:45,426 >> קהל: נמנע אז onload הגדרת כפתור החיפוש משתנה 1765 01:19:45,426 --> 01:19:49,930 על ידי רק אומר document.getElementById dot כפתור חיפוש [לא ברור]. 1766 01:19:49,930 --> 01:19:52,320 >> דווין: בהחלט, אבל אז המחרוזת שלך פשוט מקבלת עצומה. 1767 01:19:52,320 --> 01:19:55,553 בדיוק, אז זה רק ל לעשות את זה יותר קל לך, כן. 1768 01:19:55,553 --> 01:19:56,053 כן? 1769 01:19:56,053 --> 01:19:57,886 >> קהל: מאיפה אנחנו ליצור window.onload? 1770 01:19:57,886 --> 01:19:58,951 או document.ready? 1771 01:19:58,951 --> 01:20:00,590 >> דווין: כן, יש. 1772 01:20:00,590 --> 01:20:02,094 כן, יש, בדקתי. 1773 01:20:02,094 --> 01:20:03,710 >> גייב: לא לאכפת להם על. 1774 01:20:03,710 --> 01:20:06,970 >> דווין: אוקיי, אז אני הולך להגיד לך בכל מקרה. 1775 01:20:06,970 --> 01:20:11,005 אז בעצם, רק באופן כללי, כל כך window.onload מחכה עד DOM שלך, את כל 1776 01:20:11,005 --> 01:20:12,180 HTML שלך, המון. 1777 01:20:12,180 --> 01:20:13,513 הוא ממתין עד לעומס התמונות שלך. 1778 01:20:13,513 --> 01:20:14,930 הוא ממתין עד לעומסי הכל. 1779 01:20:14,930 --> 01:20:18,410 document.ready, זה פשוט מחכה עד עומסי DOM שלך. 1780 01:20:18,410 --> 01:20:22,190 ברגע HTML הוא כל מה שיש, ברגע ש DOM שלך הוא שם, מתחיל לרוץ. 1781 01:20:22,190 --> 01:20:23,400 זה ההבדל היחיד. 1782 01:20:23,400 --> 01:20:24,700 >> גייב: שפיות מהירה לבדוק כאן. 1783 01:20:24,700 --> 01:20:29,060 אז זה ניתן לראות סוג של כמו שורת קוד, נכון? 1784 01:20:29,060 --> 01:20:33,600 כי זה window.onload שווה חבורה של דברים. 1785 01:20:33,600 --> 01:20:39,030 כאשר JavaScript קורא, או נכון זה שווא, הפונקציה מקבלת להורג. 1786 01:20:39,030 --> 01:20:40,020 שווא. 1787 01:20:40,020 --> 01:20:40,920 בסדר? 1788 01:20:40,920 --> 01:20:44,470 מה קורה כאן, אתה פשוט עובר פונקציה זו כפונקציות בעילום שם 1789 01:20:44,470 --> 01:20:45,300 לwindow.onload. 1790 01:20:45,300 --> 01:20:48,480 ואז כשזה הולך בעצם לקבל להורג? 1791 01:20:48,480 --> 01:20:49,600 כאשר עומסי החלון. 1792 01:20:49,600 --> 01:20:50,420 זה אירוע. 1793 01:20:50,420 --> 01:20:52,460 אז זה דבר לא jus אנחנו מדבר קודם לכן, נכון? 1794 01:20:52,460 --> 01:20:54,580 לכן, כאשר האירוע מתרחש, הפונקציה קורה. 1795 01:20:54,580 --> 01:20:55,746 אותו דבר עם onclick. 1796 01:20:55,746 --> 01:20:59,510 1797 01:20:59,510 --> 01:21:03,130 >> דווין: אוקיי, אז מישהו לקח משם document.ready. 1798 01:21:03,130 --> 01:21:04,698 אבל זה יהיה same-- המדויק 1799 01:21:04,698 --> 01:21:06,864 קהל: סימן הדולר, כי הוא document.ready. 1800 01:21:06,864 --> 01:21:07,710 זה קיצור דרך. 1801 01:21:07,710 --> 01:21:08,501 >> דווין: אה, זה הוא? 1802 01:21:08,501 --> 01:21:10,880 1803 01:21:10,880 --> 01:21:15,500 אוקיי, אז זה אמצעי document.ready, קיצור. 1804 01:21:15,500 --> 01:21:19,660 אבל זה אותו הדבר כמו window.onload מלבד ההבדל קטן 1805 01:21:19,660 --> 01:21:20,680 סיפרתי לכם על. 1806 01:21:20,680 --> 01:21:21,870 וזה jQuery. 1807 01:21:21,870 --> 01:21:25,190 אז זה אותו הדבר thing-- זה JavaScript. 1808 01:21:25,190 --> 01:21:29,500 זה פשוט- כמה אנשים חושבים על זה כמשקל קל יותר, גרסה מלוטשת 1809 01:21:29,500 --> 01:21:32,370 כי יש הרבה פונקציונלי כי אתה בטח תשתמש. 1810 01:21:32,370 --> 01:21:34,500 אז זה עושה את אותו דבר בדיוק. 1811 01:21:34,500 --> 01:21:37,110 >> אז דברים להצביע על סוג של. 1812 01:21:37,110 --> 01:21:40,364 אז בדוגמא אחרת, אנחנו היה לי document.getElementById, 1813 01:21:40,364 --> 01:21:42,280 אז היו לנו כל כך הרבה זמן מחרוזת שהולכת לקבל 1814 01:21:42,280 --> 01:21:44,290 האלמנט על ידי כל מה שיש לו תעודת זהות. 1815 01:21:44,290 --> 01:21:46,470 זה הוחלף על ידי קריאה זו ממש כאן. 1816 01:21:46,470 --> 01:21:50,860 אז אתה רואה סימן הדולר, אז אתה רואה ציטוט, hashtag. 1817 01:21:50,860 --> 01:21:52,370 Hashtag תמיד בורר. 1818 01:21:52,370 --> 01:21:54,730 זה אומר, בסדר, זה קשור לזיהוי. 1819 01:21:54,730 --> 01:21:56,120 מה את הבורר לכיתה? 1820 01:21:56,120 --> 01:21:57,190 >> קהל: Dot. 1821 01:21:57,190 --> 01:21:57,960 >> דווין: Dot, תקין. 1822 01:21:57,960 --> 01:22:01,950 אם אתה רק הולך בחר תג, מה זה? 1823 01:22:01,950 --> 01:22:03,310 זה פשוט התג, בדיוק. 1824 01:22:03,310 --> 01:22:05,560 ואתה יכול להשתמש בזה כאן, גם כן. 1825 01:22:05,560 --> 01:22:08,560 >> גייב: ולפי תגית, אנחנו מתכוונים כמו div, למשל, או את הראש. 1826 01:22:08,560 --> 01:22:11,500 >> דווין: או או גוף או p משהו כזה, כן. 1827 01:22:11,500 --> 01:22:14,390 אז הנה, אישור, במקום לומר document.getElementById, 1828 01:22:14,390 --> 01:22:16,500 זה רק מדויק אותו הדבר. 1829 01:22:16,500 --> 01:22:17,990 רק בjQuery, זה קצר יותר. 1830 01:22:17,990 --> 01:22:19,860 אז זה פשוט יותר. 1831 01:22:19,860 --> 01:22:23,420 אז, לא יותר onclick, פשוט לחץ. 1832 01:22:23,420 --> 01:22:26,320 פונקצית jQuery, לקרוא לפונקציה זו. 1833 01:22:26,320 --> 01:22:27,580 התראה היא אותו הדבר. 1834 01:22:27,580 --> 01:22:29,452 אז זה קצת או קצת קטנים יותר, קטן 1835 01:22:29,452 --> 01:22:32,410 קצר יותר, אנשי bit-- קטנים חושבים זה קצת יותר קל לכתוב את, 1836 01:22:32,410 --> 01:22:34,600 קצת יותר קל להבין. 1837 01:22:34,600 --> 01:22:35,640 אבל זה jQuery. 1838 01:22:35,640 --> 01:22:37,887 הרבה אנשים לקבל קצת קצת מבולבל ומודאג 1839 01:22:37,887 --> 01:22:40,220 והם חושבים, בסדר, jQuery שונה מJavaScript. 1840 01:22:40,220 --> 01:22:42,136 אני צריך לזכור אלה שני דברים שונים. 1841 01:22:42,136 --> 01:22:42,740 זה לא. 1842 01:22:42,740 --> 01:22:45,315 אני מתכוון, זה תחביר שונה. 1843 01:22:45,315 --> 01:22:46,970 אבל jQuery הוא JavaScript. 1844 01:22:46,970 --> 01:22:50,050 זה רק לכאורה גרסה טובה יותר ש 1845 01:22:50,050 --> 01:22:51,967 יכול להיות קל יותר להבין שאנשים משתמשים. 1846 01:22:51,967 --> 01:22:53,716 גייב: כן, להיות , שסימן דולר כנה 1847 01:22:53,716 --> 01:22:57,240 שאתה רואה בjQuery, זה רק שם של פונקציה שjQuery מגדיר. 1848 01:22:57,240 --> 01:22:58,614 זה לא חייב שום דבר מיוחד. 1849 01:22:58,614 --> 01:23:03,140 האם זה רק השם של פונקציה, בדיוק כמו שאתה יכול להגדיר סימן דולר. 1850 01:23:03,140 --> 01:23:05,670 >> דווין: כן, אז דיבר על זה. 1851 01:23:05,670 --> 01:23:06,680 כמה דברים שימושיים. 1852 01:23:06,680 --> 01:23:10,414 אני מסתכל אחורה בחידונים הישנים. 1853 01:23:10,414 --> 01:23:13,080 בכמה חידוני העבר, יש להם הייתי צריך להשתמש בדברים כאלה. 1854 01:23:13,080 --> 01:23:15,230 אז document.ready, כך לוודא שפעלו כראוי 1855 01:23:15,230 --> 01:23:17,410 נטען לפני שאתה מתחיל לעשות דברים. 1856 01:23:17,410 --> 01:23:20,120 בחר ID, או בחר כיתה, זה פשוט הייתי 1857 01:23:20,120 --> 01:23:24,020 להיות ציטוט נקודה מסוים בכיתה, סוף ציטוט. 1858 01:23:24,020 --> 01:23:26,580 שלח, כך שאם אתה הגשת טופס ושיחה 1859 01:23:26,580 --> 01:23:28,830 פונקציה זו לאחר הטופס מגישה. 1860 01:23:28,830 --> 01:23:34,210 ערך, אז בואו נגיד שיש לי טופס הגשה, כמו שם משתמש, דוא"ל, 1861 01:23:34,210 --> 01:23:34,950 מה. 1862 01:23:34,950 --> 01:23:36,010 היה לי תיבת טקסט. 1863 01:23:36,010 --> 01:23:37,670 אז אני מקליד לתוך תיבת טקסט. 1864 01:23:37,670 --> 01:23:42,170 ובכן, אם אתה רוצה לקבל את הערך מתוך שתיבת הטקסט, אתה משתמש בנקודה val. 1865 01:23:42,170 --> 01:23:44,050 ואז, כאן למטה, נקודת HTML הוא אותו 1866 01:23:44,050 --> 01:23:47,710 זה כמו נקודת מסמך getElementByID הנקודה innerHTML. 1867 01:23:47,710 --> 01:23:50,890 אז זה הולך לחזור אתה HTML מזיהוי ש. 1868 01:23:50,890 --> 01:23:55,080 הנה, אתה פשוט להשתמש בכמה מזהה או מה נקודת HTML. 1869 01:23:55,080 --> 01:23:56,930 שיקבל את ה- HTML מאלמנט ש. 1870 01:23:56,930 --> 01:24:00,130 אם אתה רוצה אז לשנות את זה HTML, אתה יכול להעביר אותו משהו. 1871 01:24:00,130 --> 01:24:05,600 אז אתה רוצה להיות כמו HTML נקודה, ולאחר מכן בתוך, ציטוטים, HTML או משהו החדש. 1872 01:24:05,600 --> 01:24:07,490 >> גייב: אוקיי, אז AJAX. 1873 01:24:07,490 --> 01:24:10,347 אני באמת רוצה להבין AJAX ממש טוב. 1874 01:24:10,347 --> 01:24:12,430 אז אני רוצה שבחורים ל להבין AJAX ממש טוב. 1875 01:24:12,430 --> 01:24:14,221 כי אם אתה עושה, אתה הולך פחות או יותר 1876 01:24:14,221 --> 01:24:16,810 כדי להבין את כל מה ש יש לעשות עם HTTP, PHP, 1877 01:24:16,810 --> 01:24:21,080 JavaScript כי זה כל מגיע יחד בAJAX. 1878 01:24:21,080 --> 01:24:25,130 AJAX הוא לא שפה. 1879 01:24:25,130 --> 01:24:27,000 AJAX הוא טכניקה. 1880 01:24:27,000 --> 01:24:31,690 והוא משתמש בהרבה כלים שונים. 1881 01:24:31,690 --> 01:24:35,090 AJAX עומד ל XML JavaScript אסינכרוני. 1882 01:24:35,090 --> 01:24:36,730 אז השיטה, השפה, את הנתונים. 1883 01:24:36,730 --> 01:24:40,610 >> אז את השפה העיקרית שאנו משתמשים בי ב- AJAX כדי לעורר הכל 1884 01:24:40,610 --> 01:24:42,830 ולהתמודד עם כל דבר מאוחר יותר הוא JavaScript. 1885 01:24:42,830 --> 01:24:45,160 זו הסיבה לכך שהיא מתייחסת קרוב מאוד לJavaScript. 1886 01:24:45,160 --> 01:24:49,810 ולאחר מכן אסינכרוני הוא כי אנחנו לא עושים את זה 1887 01:24:49,810 --> 01:24:51,980 בבת אחת כשאנחנו טעינת הדף. 1888 01:24:51,980 --> 01:24:57,190 זה הדבר שאנחנו יכולים לעשות דברים מסוג של במקביל. 1889 01:24:57,190 --> 01:24:59,725 הרעיון המרכזי מאחורי AJAX הוא שאתה רוצה 1890 01:24:59,725 --> 01:25:02,170 זה כדי לקבל קצת מידע ספציפי. 1891 01:25:02,170 --> 01:25:06,450 לדוגמא, כאשר אתה מקליד חדש שם משתמש בעת רישום שם משתמש, 1892 01:25:06,450 --> 01:25:08,520 שם המשתמש שלי הוא abc123. 1893 01:25:08,520 --> 01:25:11,671 ולאחר מכן, בסוף צורה, אתה צריך ללחוץ על שלח. 1894 01:25:11,671 --> 01:25:14,420 וזה הייתי צריך ללכת לשרת, ולאחר מכן בדוק אם באתר, 1895 01:25:14,420 --> 01:25:15,594 abc123 הוא כבר שם. 1896 01:25:15,594 --> 01:25:18,510 ואם הוא כבר נמצא שם, הוא אומר, שם משתמש כבר במסד הנתונים. 1897 01:25:18,510 --> 01:25:21,010 והם, אתה צריך למלא מתוך כל הצורה שוב. 1898 01:25:21,010 --> 01:25:23,110 וזה היה ממש, ממש רע. 1899 01:25:23,110 --> 01:25:25,440 >> ואז אנשים אומרים, OK, למה אנחנו לא יכולים פשוט 1900 01:25:25,440 --> 01:25:29,560 לעשות בקשת HTTP קטנה רק כדי לבדוק כדי לראות אם משתמש זה הוא באתר 1901 01:25:29,560 --> 01:25:32,080 לפני שהיה לי למשתמש להגיש את הטופס כולו? 1902 01:25:32,080 --> 01:25:36,350 כך למשל, כאשר משתמשים מסיים להקליד abc123, 1903 01:25:36,350 --> 01:25:39,660 בואו פשוט ללכת לשרת קטן קצת ופשוט לקבל אמת או שקר 1904 01:25:39,660 --> 01:25:43,080 מהשרת כדי לראות אם זה שם משתמש תקף או לא. 1905 01:25:43,080 --> 01:25:49,250 אוקיי, אז זה אחד העיקרי משתמש ב- AJAX בימינו עדיין. 1906 01:25:49,250 --> 01:25:52,130 >> דווין: אז ממש מהר, ב שיחת אייאקס בjQuery, 1907 01:25:52,130 --> 01:25:54,770 אתה יכול לסמן ש רוצה שזה יהיה סינכרוני. 1908 01:25:54,770 --> 01:25:56,330 אתה לא צריך לעשות את זה. 1909 01:25:56,330 --> 01:25:57,640 אבל אתה יכול לעשות את זה. 1910 01:25:57,640 --> 01:25:59,277 ואם אתה עשית את זה, מה היה קורה? 1911 01:25:59,277 --> 01:26:01,610 ובכן, לדוגמא, כשאתה מקבל את החדשות או כל דבר אחר, 1912 01:26:01,610 --> 01:26:05,464 הדפדפן שלך הוא רק הולך לחכות עד שכל השיחה היא מלאה 1913 01:26:05,464 --> 01:26:08,130 במקום לתת לך לעשות אחרים דברים נכון לאחר לחיצה עליו. 1914 01:26:08,130 --> 01:26:14,560 1915 01:26:14,560 --> 01:26:17,115 >> גייב: זה לא עובר יותר. 1916 01:26:17,115 --> 01:26:19,681 אוי אלוהים. 1917 01:26:19,681 --> 01:26:20,180 סליחה! 1918 01:26:20,180 --> 01:26:22,810 1919 01:26:22,810 --> 01:26:23,601 כן. 1920 01:26:23,601 --> 01:26:25,350 "בעבר, הלקוח צריך בקשה 1921 01:26:25,350 --> 01:26:26,840 כל התוכן של אתר אינטרנט. " 1922 01:26:26,840 --> 01:26:28,210 זה מה שאמרתי. 1923 01:26:28,210 --> 01:26:30,070 זה מאפשר לנו לשלוח GET או POST נוסף 1924 01:26:30,070 --> 01:26:32,140 בקשות מבלי כדי לטעון מחדש הדפדפן שלנו. 1925 01:26:32,140 --> 01:26:34,806 אז בסופו של היום, אנחנו למעשה מה שהופך את בקשות HTTP 1926 01:26:34,806 --> 01:26:35,740 כאן באמצעות JavaScript. 1927 01:26:35,740 --> 01:26:39,700 כי לפני, אנחנו רק משמשים JavaScript כדי לשנות את ה- HTML שהגיע כבר. 1928 01:26:39,700 --> 01:26:43,110 ועכשיו, אנחנו יכולים להשתמש בו להתממשק עם שרתי האינטרנט, כמו גם. 1929 01:26:43,110 --> 01:26:46,140 הדרך זה קורה הוא שיש לנו לקוח. 1930 01:26:46,140 --> 01:26:47,340 דווין הוא לקוח. 1931 01:26:47,340 --> 01:26:50,797 ויש לו את כל JavaScript פועל מפני HTML הוא מטומטם. 1932 01:26:50,797 --> 01:26:51,630 JavaScript היא חכמה. 1933 01:26:51,630 --> 01:26:54,690 אז יש דווין Davin החכם חלק והחלק המטומטם שלו. 1934 01:26:54,690 --> 01:26:57,590 הוא הולך להשתמש בחלק החכם שלו עכשיו. 1935 01:26:57,590 --> 01:27:00,860 הוא הולך להשתמש ב- JavaScript לבקשה, לדוגמא, 1936 01:27:00,860 --> 01:27:04,340 אם abc123 הוא ב מסד נתונים או לא. 1937 01:27:04,340 --> 01:27:08,450 >> אז Davin, בבקשה, אתה רק שלח לי בקשת HTTP. 1938 01:27:08,450 --> 01:27:09,197 תודה לך. 1939 01:27:09,197 --> 01:27:10,530 אז הוא פשוט שלח בקשת HTTP. 1940 01:27:10,530 --> 01:27:11,270 אתה רואה את זה? 1941 01:27:11,270 --> 01:27:14,700 וזה רק באותה הדרך כי כל בקשת HTTP נשלחה. 1942 01:27:14,700 --> 01:27:16,830 הדפדפן, Google Chrome או משהו, הוא 1943 01:27:16,830 --> 01:27:19,570 הולך לראות שDavin של מנסה לשלוח בקשת HTTP, 1944 01:27:19,570 --> 01:27:20,930 הולך לעזור HM קצת. 1945 01:27:20,930 --> 01:27:23,950 וזה הולך ללכת כל הדרך לשרת. 1946 01:27:23,950 --> 01:27:27,370 עכשיו, השרת הוא הולך להיות PHP כאן, או כל שפה אחרת. 1947 01:27:27,370 --> 01:27:29,990 בדיוק כמו בבקשת HTTP רגילה. 1948 01:27:29,990 --> 01:27:31,950 זה פחות או יותר בקשת HTTP רגילה. 1949 01:27:31,950 --> 01:27:33,658 >> ולאחר מכן, השרת הולך להגיד, בסדר, 1950 01:27:33,658 --> 01:27:37,270 דווין רוצה אותי כדי לבדוק אם abc123 זה באתר. 1951 01:27:37,270 --> 01:27:38,310 תלכו לדבר עם המודל. 1952 01:27:38,310 --> 01:27:41,310 המודל אומר שזה לא. abc123 הוא שם משתמש טוב. 1953 01:27:41,310 --> 01:27:47,940 ולאחר מכן, שרת האינטרנט הולך להשתמש PHP כדי להבהיר בצורה כלשהי של קובץ. 1954 01:27:47,940 --> 01:27:52,280 זה יכול להיות ממש ממש קובץ המכיל "כן" בזה, או "לא, 1955 01:27:52,280 --> 01:27:53,315 או משהו כזה. 1956 01:27:53,315 --> 01:27:54,190 זה יכול להיות כל קובץ. 1957 01:27:54,190 --> 01:27:57,080 >> זה יכול להיות כמו שאני הולך לשלוח Davin תמונה של ברווז 1958 01:27:57,080 --> 01:28:01,200 אם זה באתר ו לשלוח תמונה של אוגר 1959 01:28:01,200 --> 01:28:02,420 אם זה לא במסד הנתונים. 1960 01:28:02,420 --> 01:28:04,294 זה יהיה סוג של מטומטם, אבל זה יעבוד. 1961 01:28:04,294 --> 01:28:07,030 אוקיי, אז אני שולח ברווז לDavin. 1962 01:28:07,030 --> 01:28:08,150 Davin לי ברווז. 1963 01:28:08,150 --> 01:28:13,330 ועכשיו, מי הולך כדי להתמודד עם הברווז? 1964 01:28:13,330 --> 01:28:16,390 החלק החכם של דווין שוב, כך JavaScript, נכון? 1965 01:28:16,390 --> 01:28:18,620 JavaScript שלח בקשה, וJavaScript 1966 01:28:18,620 --> 01:28:22,300 הוא הולך לקבל את הבקשה ולפרש אותו בצורה כלשהי. 1967 01:28:22,300 --> 01:28:26,630 >> ובמובן זה, זה הולך אומר, בסדר, אם ברווז אז אני טוב. 1968 01:28:26,630 --> 01:28:30,770 אם אוגר, אז אני הולך לומר, לא, שם משתמש כבר 1969 01:28:30,770 --> 01:28:31,970 קיים במסד הנתונים. 1970 01:28:31,970 --> 01:28:33,845 אבל בדרך כלל, אתה לא הולך לשלוח ברווז. 1971 01:28:33,845 --> 01:28:36,740 אתה הולך לשלוח משהו מעט חכמה יותר. 1972 01:28:36,740 --> 01:28:40,320 ומה שאנו משתמשים הוא XML. 1973 01:28:40,320 --> 01:28:42,690 ולאחרונה, אנו משתמשים JSON. 1974 01:28:42,690 --> 01:28:45,629 JSON הוא רק JavaScript סימון אובייקט, ש 1975 01:28:45,629 --> 01:28:47,670 בעצם אתה מקבל אובייקט JavaScript כולו. 1976 01:28:47,670 --> 01:28:50,820 ואתה שם אותו בקובץ, בדיוק כמו שאובייקט CS50 שאתם ראו. 1977 01:28:50,820 --> 01:28:53,090 אתה שם אותו בקובץ, ו אתה שולח אותו לDavin. 1978 01:28:53,090 --> 01:28:55,850 >> אז במקרה הזה, הייתי להפוך את אובייקט JavaScript 1979 01:28:55,850 --> 01:28:59,570 ורק אומר, משתמשים קיימים, כן. 1980 01:28:59,570 --> 01:29:01,630 או משתמש קיים, לא. 1981 01:29:01,630 --> 01:29:02,810 ולשלוח אותו בחזרה אליו. 1982 01:29:02,810 --> 01:29:03,830 ומדוע JSON? 1983 01:29:03,830 --> 01:29:07,330 כי האדם מי שקיבל זה 1984 01:29:07,330 --> 01:29:10,030 הולך להשתמש ב- JavaScript כדי להתמודד עם התגובה. 1985 01:29:10,030 --> 01:29:14,970 וJavaScript עובד כל כך טוב, כי זה נקרא סימון אובייקט JavaScript. 1986 01:29:14,970 --> 01:29:15,470 נכון? 1987 01:29:15,470 --> 01:29:19,660 אז הוא יכול פשוט לקרוא לפונקציה ולקבל אובייקט זה נחמד מהתגובה. 1988 01:29:19,660 --> 01:29:22,890 ולאחר מכן, הוא הולך לדעת אם המשתמש שהוא באתר או לא. 1989 01:29:22,890 --> 01:29:25,230 >> אז אתה רואה, כל זה בא יחד בשרת האינטרנט, 1990 01:29:25,230 --> 01:29:28,450 ואז יש HTTP אחד לבקשה ותגובה אחד HTTP והכל. 1991 01:29:28,450 --> 01:29:30,600 כדי לוודא שאתה בחורים להבין שיחת AJAX זה 1992 01:29:30,600 --> 01:29:37,260 כי זה עוזר לך להבין את כל על המושגים שאנחנו מדברים. 1993 01:29:37,260 --> 01:29:40,260 >> אז הנה דוגמא של AJAX עם jQuery. 1994 01:29:40,260 --> 01:29:42,130 והנה, אנחנו עושים עם JSON גט. 1995 01:29:42,130 --> 01:29:45,660 אז אנחנו לא מנסים להשיג תמונה של חתול כאן, או ברווז. 1996 01:29:45,660 --> 01:29:48,110 אנחנו מנסים לקבל קובץ JSON. 1997 01:29:48,110 --> 01:29:51,184 ואז נחכה עד זה נעשה, נעשה נקודה. 1998 01:29:51,184 --> 01:29:52,850 זה אומר שאני מחכה לתגובה. 1999 01:29:52,850 --> 01:29:54,180 זה עלול לקחת קצת זמן. 2000 01:29:54,180 --> 01:29:56,360 ואז, אתה רואה קצת טעינה. 2001 01:29:56,360 --> 01:29:59,340 אם אתה רוצה לעשות את זה באתר האינטרנט שלך. 2002 01:29:59,340 --> 01:30:01,440 אז dot עשה, ואז מה קורה כאשר עושה את זה? 2003 01:30:01,440 --> 01:30:04,040 אתה עובר בעילום שם פונקציה, בדיוק כמו שראינו קודם. 2004 01:30:04,040 --> 01:30:07,800 בגלל לעשות הוא אירוע, רק כמו לחיצה עכבר או מה, 2005 01:30:07,800 --> 01:30:08,710 לjQuery. 2006 01:30:08,710 --> 01:30:13,710 אז אתה עובר בפונקציה זו עם הנתונים, טקסט, מעמד, וjqXHR. 2007 01:30:13,710 --> 01:30:15,790 ובעצם, זה רק חלק ממשתנים 2008 01:30:15,790 --> 01:30:22,160 כי אתה יכול להשתמש מאוחר יותר כדי לי הסטטוס של בקשת HTTP, 2009 01:30:22,160 --> 01:30:24,470 נתונים שזה הולך לשלוח בחזרה אליך. 2010 01:30:24,470 --> 01:30:28,740 אז אתה יכול בשלב מאוחר יותר לפרש את זה ולעשות משהו משמעותי עם זה. 2011 01:30:28,740 --> 01:30:30,240 ואם זה לא מצליח, כשזה עלול להיכשל? 2012 01:30:30,240 --> 01:30:33,780 ובכן, כאשר בקשת HTTP נותנת אתה 500 או משהו כזה. 2013 01:30:33,780 --> 01:30:37,420 ואז, זה הולך לספר לכם מעמד, איזה סוג של כישלון שהיה, 2014 01:30:37,420 --> 01:30:38,420 וכל מיני דברים. 2015 01:30:38,420 --> 01:30:40,630 אתה צריך לוודא ש כדי לטפל בשני המקרים, 2016 01:30:40,630 --> 01:30:42,770 אחרת התכנית משתגעת. 2017 01:30:42,770 --> 01:30:45,820 >> דווין: אז כן, זה בדיוק מה שראית בp-הסט האחרון שלך. 2018 01:30:45,820 --> 01:30:49,720 שיחת AJAX בפועל היא בJSON הגט. 2019 01:30:49,720 --> 01:30:50,587 זה השיחה. 2020 01:30:50,587 --> 01:30:52,920 ולאחר מכן, נקודה עשתה היא כמו הוא בודק אם זה מצליח. 2021 01:30:52,920 --> 01:30:55,620 אם הוא מוצלח, אתה רוצה לעשות משהו עם הנתונים. 2022 01:30:55,620 --> 01:30:59,290 אתה מקבל בחזרה שמ נתוני בקשת JSON. 2023 01:30:59,290 --> 01:31:00,600 זה מה שאתה מקבל בחזרה. 2024 01:31:00,600 --> 01:31:04,470 אז אם אתה זוכר מp-הסט שלך, הרבה היית כמו הסוגר נתונים i 2025 01:31:04,470 --> 01:31:06,302 או מה, קישור נקודה או כותרת. 2026 01:31:06,302 --> 01:31:08,260 לא משנה מה חוזר מJSON ש, מה ש 2027 01:31:08,260 --> 01:31:11,020 השדות שבאובייקט JSON, זה מה שאתה מקבל בחזרה. 2028 01:31:11,020 --> 01:31:12,394 הנתונים הוא מה שאתה מקבל בחזרה. 2029 01:31:12,394 --> 01:31:15,510 מצב טקסט, פשוט משהו ש מאפשר לך לדעת מה קרה. 2030 01:31:15,510 --> 01:31:20,570 ולאחר מכן, jqXHR, זה רק בקשת HTTP XML jQuery. 2031 01:31:20,570 --> 01:31:21,990 זה בדיוק כמו אובייקט. 2032 01:31:21,990 --> 01:31:23,932 ואז להיכשל, בדיוק כמו גייב אמר. 2033 01:31:23,932 --> 01:31:27,140 גייב: בדוגמא הקטנה שלנו abc123 רק כדי לבדוק אם זה באתר 2034 01:31:27,140 --> 01:31:32,260 או לא, הנתונים יהיו משהו שאתה הייתי עושה, אם שם משתמש dot נתונים קיים, 2035 01:31:32,260 --> 01:31:37,720 וזה מה שPHP שלך נוצר ל לך, אם שם משתמש dot נתונים קיים, אז 2036 01:31:37,720 --> 01:31:40,880 אני הולך כדי להתריע, משתמש שם כבר קיים. 2037 01:31:40,880 --> 01:31:44,300 אחר, אני פשוט הולך לתת לי משתמשים להמשיך למלא את הטופס. 2038 01:31:44,300 --> 01:31:47,860 2039 01:31:47,860 --> 01:31:50,820 OK, ביטחון, מגניב. 2040 01:31:50,820 --> 01:31:52,060 >> דווין: רוצה אותי? 2041 01:31:52,060 --> 01:31:54,500 >> גייב: אני אוהב את זה. 2042 01:31:54,500 --> 01:31:57,680 אז משהו שנראה מוכר. 2043 01:31:57,680 --> 01:31:59,750 אנחנו כמעט סיימנו. 2044 01:31:59,750 --> 01:32:02,670 אז זה רק הדוגמא אתם ראו בכיתה. 2045 01:32:02,670 --> 01:32:04,860 הייתם משתמש argv1 כאן. 2046 01:32:04,860 --> 01:32:06,460 זה כמו ויכוח שורת הפקודה. 2047 01:32:06,460 --> 01:32:09,270 ואנחנו ממ העתקה ש למאגר של גודל 12. 2048 01:32:09,270 --> 01:32:12,560 מה הבעיה כאן? 2049 01:32:12,560 --> 01:32:13,660 הצפת מאגר! 2050 01:32:13,660 --> 01:32:15,400 כי יש לנו מאגר של גודל 12. 2051 01:32:15,400 --> 01:32:18,400 argv1 שאולי יש לי גודל של שני מליארד דולרים. 2052 01:32:18,400 --> 01:32:19,960 אנחנו לא עושים שום בדיקת גבולות. 2053 01:32:19,960 --> 01:32:24,970 אז אנחנו יכולים להעתיק הרבה זיכרון. 2054 01:32:24,970 --> 01:32:28,630 ואנחנו נהיה במיוחד רע על זה. 2055 01:32:28,630 --> 01:32:32,600 מה שאנחנו יכולים לעשות זה מאוד, מאוד אומר במקרה זה? 2056 01:32:32,600 --> 01:32:33,278 כן? 2057 01:32:33,278 --> 01:32:36,528 קהל: חלק משני מליארד הדברים מכיל קוד הפעלה שחוזר 2058 01:32:36,528 --> 01:32:38,127 [לא ברור]. 2059 01:32:38,127 --> 01:32:38,710 גייב: בדיוק. 2060 01:32:38,710 --> 01:32:41,110 אז זה הסוג של דבר שאנשים משתמשים ב 2061 01:32:41,110 --> 01:32:43,344 לjailbreak iPhone, למשל. 2062 01:32:43,344 --> 01:32:44,260 אז זה סוג של דבר. 2063 01:32:44,260 --> 01:32:48,610 כי אתה יכול פשוט להפוך את המכשיר לבצע כל קוד שאתה אוהב. 2064 01:32:48,610 --> 01:32:50,247 התיקון, כך התיקון קל. 2065 01:32:50,247 --> 01:32:51,330 רק לבדוק את הגבולות. 2066 01:32:51,330 --> 01:32:53,455 אתה לבדוק null כי אנחנו תמיד לבדוק null 2067 01:32:53,455 --> 01:32:54,940 כאשר עם מחרוזות יש לנו עסק. 2068 01:32:54,940 --> 01:32:57,840 ואז, אתה לוקח אורך שרשרת לפני. 2069 01:32:57,840 --> 01:33:00,150 ואם המחרוזת אורך הוא מחרוזת חוקית 2070 01:33:00,150 --> 01:33:03,700 אורך, אשר נמצא ב0 ו -12, אז אנחנו טובים. 2071 01:33:03,700 --> 01:33:07,144 >> דווין: אם אתה לא בודק ל null, ממש מהר, מה יקרה? 2072 01:33:07,144 --> 01:33:07,810 זה יהיה צינוק באשמה. 2073 01:33:07,810 --> 01:33:10,850 למה זה SEG פגם? 2074 01:33:10,850 --> 01:33:12,510 בגלל שאתה קורא strlen על null. 2075 01:33:12,510 --> 01:33:13,010 גייב: כן. 2076 01:33:13,010 --> 01:33:16,490 2077 01:33:16,490 --> 01:33:19,630 אמת או שקר, באמצעות אחת סיסמא היא רעיון טוב. 2078 01:33:19,630 --> 01:33:20,430 >> קהל: False. 2079 01:33:20,430 --> 01:33:21,150 >> גייב: False. 2080 01:33:21,150 --> 01:33:23,870 השתמש בסיסמות רבות, וגדול עוד יותר,. 2081 01:33:23,870 --> 01:33:26,050 סמלי מנעול להבטיח את הביטחון. 2082 01:33:26,050 --> 01:33:27,080 >> קהל: False. 2083 01:33:27,080 --> 01:33:27,749 >> גייב: False. 2084 01:33:27,749 --> 01:33:28,790 זה לא אומר שום דבר. 2085 01:33:28,790 --> 01:33:30,480 זה רק סמל. 2086 01:33:30,480 --> 01:33:32,824 SSL מגן מפני איש בפיגוע במרכז. 2087 01:33:32,824 --> 01:33:33,490 קהל: False. 2088 01:33:33,490 --> 01:33:34,110 גייב: False. 2089 01:33:34,110 --> 01:33:35,355 אוקיי, אז כל אלה הם שקריים. 2090 01:33:35,355 --> 01:33:38,324 2091 01:33:38,324 --> 01:33:39,490 נחמד. 2092 01:33:39,490 --> 01:33:40,220 [לא ברור] 2093 01:33:40,220 --> 01:33:42,500 רוצה לדבר על זה? 2094 01:33:42,500 --> 01:33:43,259 עכשיו תורך. 2095 01:33:43,259 --> 01:33:45,050 דווין: סוגים של התקפות, גבר באמצע. 2096 01:33:45,050 --> 01:33:47,134 מה איש בפיגוע במרכז? 2097 01:33:47,134 --> 01:33:48,050 קהל: [לא ברור]. 2098 01:33:48,050 --> 01:33:51,437 2099 01:33:51,437 --> 01:33:54,020 דווין: אם אתה שולח HTTP בקשה, שהם יכולים לעשות את זה, נכון? 2100 01:33:54,020 --> 01:33:57,890 אבל אם אתה שולח HTTPS, הם כנראה לא יהיה מסוגל לעשות את זה. 2101 01:33:57,890 --> 01:33:59,952 יש הרבה נקודות לאורך החיבור שלך. 2102 01:33:59,952 --> 01:34:00,660 יש לך נתב. 2103 01:34:00,660 --> 01:34:01,746 יש לך שרתי DNS. 2104 01:34:01,746 --> 01:34:04,120 אם מישהו מסוגל פיזי לראות את מה שאתה שולח, 2105 01:34:04,120 --> 01:34:06,140 אז מישהו יכול למעשה לקבל בינך, 2106 01:34:06,140 --> 01:34:08,840 הלקוח, והשרת, והוא תוכל לראות את מה שאתה שולח, 2107 01:34:08,840 --> 01:34:10,298 מדובר באדם בפיגוע במרכז. 2108 01:34:10,298 --> 01:34:14,287 אז כדי לראות את מה שאתה מנסה להשיג מ השרת, או שתוכל see-- גרוע, 2109 01:34:14,287 --> 01:34:16,620 ייתכן שתוכל לראות עוגיות או משהו כזה. 2110 01:34:16,620 --> 01:34:19,290 >> כך למשל, אם אתה לא משתמש ב- SSL, הוא 2111 01:34:19,290 --> 01:34:21,900 ייתכן שתוכל לראות העוגיות מזהה ההפעלה שלך. 2112 01:34:21,900 --> 01:34:25,460 וזה נקרא חטיפת הפעלה משום שהוא רואה בקבצי עוגיות שלך, 2113 01:34:25,460 --> 01:34:28,317 ולאחר מכן הוא מסוגל ללכת של אתר ומתיימר להיות אתה. 2114 01:34:28,317 --> 01:34:31,150 כי כמו ב- PHP, זוכר כאשר אנו מחוברים, מה אנחנו עושים? 2115 01:34:31,150 --> 01:34:33,340 אנו קובעים מזהה הפעלה שווה לזיהוי. 2116 01:34:33,340 --> 01:34:34,810 כך שמזהה אותך. 2117 01:34:34,810 --> 01:34:38,300 זו הסיבה שאתה יכול לראות תיק ההשקעות שלך ולא של כולם תיק. 2118 01:34:38,300 --> 01:34:42,320 >> ובכן, אם אני יכול לקבל עוגייה ש, אז אני יכול להיכנס לדף זה. 2119 01:34:42,320 --> 01:34:45,380 ואז, אני יכול רק לראות את הדברים שלך ולהתחיל לקנות ולמכור דברים. 2120 01:34:45,380 --> 01:34:46,800 אז זה חטיפת הפעלה. 2121 01:34:46,800 --> 01:34:50,810 אבל אתה לא צריך להיות מסוגל to-- כך ש ניתן להשתמש באיש בפיגוע במרכז 2122 01:34:50,810 --> 01:34:52,290 גם אם הם משתמשים ב- SSL. 2123 01:34:52,290 --> 01:34:53,520 אבל אתה לא צריך להיות מסוגל. 2124 01:34:53,520 --> 01:34:56,580 אם הם משתמשים ב- SSL, אתה לא יכול לחטוף מושב. 2125 01:34:56,580 --> 01:34:58,927 למה? 2126 01:34:58,927 --> 01:35:01,135 כי זה כל זה מוצפן, נכון? אם זה מוצפן, 2127 01:35:01,135 --> 01:35:03,509 ואני עדיין גבר ב אמצע, אני עדיין מקבל את הנתונים שלך. 2128 01:35:03,509 --> 01:35:04,279 זה בסדר. 2129 01:35:04,279 --> 01:35:05,070 אבל זה מוצפן. 2130 01:35:05,070 --> 01:35:07,750 אז אני באמת לא יכול להשתמש בו. 2131 01:35:07,750 --> 01:35:09,840 אז זה שתי. 2132 01:35:09,840 --> 01:35:11,544 >> ממש מהר, זיוף בקשת אתר צלב. 2133 01:35:11,544 --> 01:35:13,960 זה רק אם יש קישור והקישור שעושה משהו 2134 01:35:13,960 --> 01:35:14,890 כי אתה לא חושב שזה צריך לעשות. 2135 01:35:14,890 --> 01:35:18,150 כך למשל, אם הקישור היה הולך לקנות מניות או למכור מניות, 2136 01:35:18,150 --> 01:35:19,360 ואתה לא יודע את זה. 2137 01:35:19,360 --> 01:35:22,040 אתה לוחץ על הקישור, שלח בקשה, קנתה 2138 01:35:22,040 --> 01:35:24,240 או נמכר משהו ש שלא התכוון לעשות. 2139 01:35:24,240 --> 01:35:25,120 זהו זה. 2140 01:35:25,120 --> 01:35:30,720 >> האתר לחצות scripting, אז הנה, אתה עובר בבאמצעות q משתנה, 2141 01:35:30,720 --> 01:35:33,510 במקום עובר באיזשהו של ערך, אולי q הוא כמו שם. 2142 01:35:33,510 --> 01:35:36,560 אז במקום עובר שווים q דווין או משהו כזה, 2143 01:35:36,560 --> 01:35:38,740 אם אתה לא משתמש ב- HTML תווים מיוחדים, אם אתה 2144 01:35:38,740 --> 01:35:43,100 לא לברוח זה כדי לוודא שזה OK, אז אני יכול לעבור במקום, 2145 01:35:43,100 --> 01:35:46,910 נניח כאן שאני אומר הדפסה או משהו כזה, 2146 01:35:46,910 --> 01:35:51,070 אז אני יכול לעבור לכאן שיחת תסריט. 2147 01:35:51,070 --> 01:35:53,140 >> אז, במקום פשוט מקבל משתנה, 2148 01:35:53,140 --> 01:35:54,960 אז הייתי לבצע שיחת התסריט הזה. 2149 01:35:54,960 --> 01:35:57,065 אז בתוך שהתסריט קורא, מה הוא עושה? 2150 01:35:57,065 --> 01:36:00,190 מיקום נקודת מסמך, שהולך לשנות את מיקומו של המסמך. 2151 01:36:00,190 --> 01:36:02,290 אז אני הולך להפנות למקום אחר. 2152 01:36:02,290 --> 01:36:08,170 זה נקרא איש רע ב דוגמא זו, טוב מאוד. 2153 01:36:08,170 --> 01:36:10,536 לא יכולתי לחשוב על המילה. 2154 01:36:10,536 --> 01:36:12,410 ולאחר מכן, מה גם יותר גרוע הוא שאני הולך 2155 01:36:12,410 --> 01:36:16,832 לעוגייה ולאחר מכן קבעה, שהוא חלק מ משתנה שיש לי באתר זה. 2156 01:36:16,832 --> 01:36:19,040 אני הולך להגדיר את זה שווה לעוגיית dot המסמך. 2157 01:36:19,040 --> 01:36:20,660 לכן, אני הולך לגנוב העוגייה שלך. 2158 01:36:20,660 --> 01:36:22,951 ואני הולך להפנות קצת מידע לאתר אינטרנט 2159 01:36:22,951 --> 01:36:25,120 כי אתה לא צריך להיות גישה. 2160 01:36:25,120 --> 01:36:29,250 וזה הכל קורה בגלל שאתה לא לברוח מה שראית. 2161 01:36:29,250 --> 01:36:29,910 כן? 2162 01:36:29,910 --> 01:36:32,160 >> קהל: אז רק כדי להבהיר את זה, זה 2163 01:36:32,160 --> 01:36:37,550 vulnerable.com ש הוא פגיע לזה. 2164 01:36:37,550 --> 01:36:39,300 אז קישור שיכול להופיע בכל דף נתון. 2165 01:36:39,300 --> 01:36:42,200 מישהו לוחץ עליו, הולך לvulnerable.com. 2166 01:36:42,200 --> 01:36:43,700 יש לך עוגייה לvulnerable.com. 2167 01:36:43,700 --> 01:36:46,670 בואו נגיד שפייסבוק היא פגיע כל כך, facebook.com. 2168 01:36:46,670 --> 01:36:48,310 יש לך העוגייה שלך בפייסבוק. 2169 01:36:48,310 --> 01:36:50,925 מה זה עושה, אתה הולך facebook.com, 2170 01:36:50,925 --> 01:36:53,990 זה הפניית מייד לך badguy.com, 2171 01:36:53,990 --> 01:36:57,182 אבל כולל מידע העוגייה שלך. 2172 01:36:57,182 --> 01:36:59,310 אז זה הפניה מהירה, אבל העוגייה שלך בפייסבוק 2173 01:36:59,310 --> 01:37:02,572 כלול בהפניה ש, וככה הם [לא ברורים]. 2174 01:37:02,572 --> 01:37:04,280 גייב: כן, יש כמה דברים מאוד ממוצעים 2175 01:37:04,280 --> 01:37:06,070 שאנשים יכולים לעשות אם יש זה. 2176 01:37:06,070 --> 01:37:09,190 לדוגמא, אם פייסבוק מותר כולם לשנות את שם המשתמש שלך, 2177 01:37:09,190 --> 01:37:11,680 והם לא עשו שום בדיקות שפיות, כך ש 2178 01:37:11,680 --> 01:37:16,810 יכול להכניס דבר JavaScript ש משנה את התמונה שלך לאוגר. 2179 01:37:16,810 --> 01:37:22,590 וזה מכניס את אותו JavaScript לכל מי שרואה בדף שלך. 2180 01:37:22,590 --> 01:37:26,400 אז כל מי שרואה את הדף שלך יש את אותו הדבר בשם המשתמש. 2181 01:37:26,400 --> 01:37:30,104 ומכיוון שמדוברים בוירוס, הוא מתפשט באופן אקספוננציאלי. 2182 01:37:30,104 --> 01:37:32,270 דווין: אנחנו לדלג האחרונים אחד, ולאחר מכן שנסיים. 2183 01:37:32,270 --> 01:37:34,120 אז זה הוא רק דוגמא נוספת. 2184 01:37:34,120 --> 01:37:36,120 אז זה שהם לא בריחת שולחן SQL שלהם. 2185 01:37:36,120 --> 01:37:37,090 אז אתה יכול לשחרר אותו. 2186 01:37:37,090 --> 01:37:38,805 אז אתה רוצה לברוח דברים. 2187 01:37:38,805 --> 01:37:44,010 זה היה הדוגמא הקודמת עם האתר לחצות scripting. 2188 01:37:44,010 --> 01:37:45,430 מצטער שרצנו קצת מאוחר. 2189 01:37:45,430 --> 01:37:46,870 מחר, מצטער! 2190 01:37:46,870 --> 01:37:48,560 מחר, יש לנו שעתי עבודה. 2191 01:37:48,560 --> 01:37:50,870 אז שעתי עבודה בCabbot 8:00-11:00. 2192 01:37:50,870 --> 01:37:55,240 שעתי העבודה הן אך ורק לשאלות חידון. 2193 01:37:55,240 --> 01:37:56,587