1 00:00:00,000 --> 00:00:11,330 2 00:00:11,330 --> 00:00:12,360 >> DAVID מלאן: בסדר. 3 00:00:12,360 --> 00:00:15,970 זה CS50, וזה סוף השבוע תשע. 4 00:00:15,970 --> 00:00:18,560 זה היה סופה מעל בימים האחרונים. 5 00:00:18,560 --> 00:00:21,580 ובעיה להגדיר שבע, אם אתה הברך עמוק לתוכו, מבין שיש די 6 00:00:21,580 --> 00:00:23,340 קצת חדשים שנמצא שם. 7 00:00:23,340 --> 00:00:26,660 אבל בואו נראה אם ​​אנחנו לא יכולים לחבר הכל ביחד כאן בקצרה 8 00:00:26,660 --> 00:00:29,230 לפני כן סוטה בזאת כיוון וראייה אחר 9 00:00:29,230 --> 00:00:30,510 איפה עוד אנחנו יכולים ללכת. 10 00:00:30,510 --> 00:00:32,630 >> אז עד כה, שדיברנו על ה-HTML. 11 00:00:32,630 --> 00:00:33,740 שדיברנו עליו ב-CSS. 12 00:00:33,740 --> 00:00:34,705 דברנו על PHP. 13 00:00:34,705 --> 00:00:36,520 שהתחלת לחוות SQL. 14 00:00:36,520 --> 00:00:38,360 היום, נדבר קצת על JavaScript. 15 00:00:38,360 --> 00:00:41,230 אבל איך עושים את כל אלה שונים שפות מתאימות זה לזה? 16 00:00:41,230 --> 00:00:44,970 >> אז דיברנו בשבוע שעבר על רעיון של צורך בשרת. 17 00:00:44,970 --> 00:00:48,470 אז בואו פשוט לצייר מלבן זה כשרת אינטרנט כאן. 18 00:00:48,470 --> 00:00:52,200 ושרת אינטרנט משרת בוודאי קבצים. 19 00:00:52,200 --> 00:00:54,640 וחלק מאותם קבצים יכול להיות קבצי HTML. 20 00:00:54,640 --> 00:00:58,270 אז אחד מהדברים ששרת אינטרנט יכול לירוק יכול להיות קובץ ש 21 00:00:58,270 --> 00:01:01,290 אנחנו פשוט לצייר ככה המכיל כמה HTML. 22 00:01:01,290 --> 00:01:04,786 אז במונחים של ההדיוטות, מה אין HTML מאפשר לך לעשות? 23 00:01:04,786 --> 00:01:06,036 >> קהל: נחמד מראה עמוד. 24 00:01:06,036 --> 00:01:09,670 25 00:01:09,670 --> 00:01:12,310 >> DAVID מלאן: בסדר, להפוך דף נראה נחמד, למרות שאני חושב שאני כבר מוכח 26 00:01:12,310 --> 00:01:13,370 שאחרת. 27 00:01:13,370 --> 00:01:18,250 אז ה-HTML אין לך לפרוס את דפים מבחינה מבנית, וזה מאפשר לך 28 00:01:18,250 --> 00:01:22,410 סוג של בחינה אסתטית לסמן את הדף, לסמן את תוכן סטטי, כך שאתה 29 00:01:22,410 --> 00:01:23,640 לאחר מכן תוכל להציג אותו בדפדפן אינטרנט. 30 00:01:23,640 --> 00:01:24,690 >> אבל זה המפתח. 31 00:01:24,690 --> 00:01:26,130 זה תוכן סטטי. 32 00:01:26,130 --> 00:01:28,590 אתה כותב את זה, אתה שומר אותו, ואז אתה שולח אותו. 33 00:01:28,590 --> 00:01:31,130 ושרת האינטרנט לאחר מכן משרת אותו למבקרים שלך. 34 00:01:31,130 --> 00:01:35,700 >> אבל אנחנו לסגנן דברים באמצעות שונה שפה לגמרי. 35 00:01:35,700 --> 00:01:40,150 התחלנו להשתמש בתכונת סגנון תגים מסוימים. 36 00:01:40,150 --> 00:01:43,400 ותכונת הסגנון תן לנו להגדיר דברים כמו גודל גופן וצבע. 37 00:01:43,400 --> 00:01:46,460 ויש לך כנראה התחיל לגלות, או שאתה בקרוב לסופי 38 00:01:46,460 --> 00:01:50,160 פרויקטים פוטנציאליים, אך אחרים תכונות שאתה יכול להשתמש ב-CSS. 39 00:01:50,160 --> 00:01:54,710 וכך במונחים של ההדיוטות, מה באמת אז CSS עושה? 40 00:01:54,710 --> 00:01:57,810 אלה הם רק דוגמאות ממנו. 41 00:01:57,810 --> 00:02:00,730 מה זה ייתן לך לעשות את זה HTML לא נראה ממה 42 00:02:00,730 --> 00:02:02,606 שראינו עד כה? 43 00:02:02,606 --> 00:02:04,850 >> קהל: הגדרת סגנונות בעצמך. 44 00:02:04,850 --> 00:02:06,700 >> DAVID מלאן: הגדרת סגנונות בעצמך. 45 00:02:06,700 --> 00:02:10,280 אז להגדיר דברים כמו שיעורים כמו שאתה אולי נתקל, או באופן ייחודי 46 00:02:10,280 --> 00:02:13,800 לזהות צמתים במסמך כך כי אתה יכול לסגנן אותם. 47 00:02:13,800 --> 00:02:16,890 אבל באופן ספציפי יותר, הייתי אומר שCSS באמת מאפשר לך לקחת את הדברים 48 00:02:16,890 --> 00:02:20,790 המייל אחרון ומאפשר לכם להגדיר הרבה באופן מדויק יותר את האסתטיקה, 49 00:02:20,790 --> 00:02:24,340 בעוד HTML על פי רוב מאפשר לי אתה מבנה הדפים שלך. 50 00:02:24,340 --> 00:02:27,310 >> ואף על פי שיש כמה ברירות מחדל, כמו שראינו את התג עבור 51 00:02:27,310 --> 00:02:30,690 תג כותרת, אשר באופן כללי עשה דברים גדולים ונועזים. 52 00:02:30,690 --> 00:02:34,250 זה הגדרה די גנרי של התג - גדול ונועז. 53 00:02:34,250 --> 00:02:35,260 מה גודל גופן זה? 54 00:02:35,260 --> 00:02:36,080 איזה צבע זה? 55 00:02:36,080 --> 00:02:36,890 איך מודגש הוא ש? 56 00:02:36,890 --> 00:02:39,830 ו-CSS מאפשר לך יותר דק דברים כמו שמנגינה. 57 00:02:39,830 --> 00:02:42,150 כמו גם פריסה, כמו כמה שלכם ראית. 58 00:02:42,150 --> 00:02:45,180 >> ולמען אמת, CSS הוא קצת של שפה מלוכלכת. 59 00:02:45,180 --> 00:02:48,370 זה מאוד חזק בכך שאתה יכול לעשות פשוטו כמשמעו, כל אתר אינטרנט שיש לך 60 00:02:48,370 --> 00:02:51,880 ראיתי באינטרנט היום עם זה, אבל זה סוג של כאב בצוואר. 61 00:02:51,880 --> 00:02:54,440 וכמה מכם דפקו את הראש שלך על הקירות כבר פשוט לעשות 62 00:02:54,440 --> 00:02:58,560 משהו טיפשי כמו מרכז תפריט על בעיה להגדיר שבע אם אתה כבר הגעת ל 63 00:02:58,560 --> 00:02:59,470 שלב זה כבר. 64 00:02:59,470 --> 00:03:01,530 >> אבל תבין, הדברים האלה קל יותר לאורך זמן. 65 00:03:01,530 --> 00:03:02,820 אתה מתחיל לשים לב לדפוסים. 66 00:03:02,820 --> 00:03:06,020 ושוב, גוגל תהיה חבר שלך לדרכים השונות שבהן אתה יכול 67 00:03:06,020 --> 00:03:07,220 לפתור בעיות מסוג זה. 68 00:03:07,220 --> 00:03:11,520 >> ואני מעז לומר שעם CSS, HTML ועוד בדרך כלל, אתה יכול לפתור את הבעיות ב 69 00:03:11,520 --> 00:03:15,910 דרכים רבות יותר, כל זה היה יכול מאוד גם יהיה נכון, ממה שאתה יכול 70 00:03:15,910 --> 00:03:18,900 במשהו כמו C, אפילו עכשיו PHP, או ב-JavaScript. 71 00:03:18,900 --> 00:03:21,080 יש רק רבים ושונה דרכים להוציא דברים. 72 00:03:21,080 --> 00:03:22,570 >> אבל זה התחיל לקבל מבולגן, אמרנו. 73 00:03:22,570 --> 00:03:26,480 פשוט סוג של ערבוב-HTML שלך ו CSS שלך עם תכונת הסגנון היה 74 00:03:26,480 --> 00:03:27,590 קצת מרושל. 75 00:03:27,590 --> 00:03:31,460 וכך אנו במקום אמרו, סוג של מופשט מדבר, שאתה צריך 76 00:03:31,460 --> 00:03:34,050 לפחות להתחיל לגורם מתוך CSS שלך כנראה. 77 00:03:34,050 --> 00:03:37,430 לא הסגנון שלך תכונות, אבל לפחות להשתמש בתג בסגנון בתוך מה 78 00:03:37,430 --> 00:03:38,840 חלק של דף האינטרנט? 79 00:03:38,840 --> 00:03:39,560 >> קהל: ראש. 80 00:03:39,560 --> 00:03:40,120 >> DAVID מלאן: בראש. 81 00:03:40,120 --> 00:03:43,270 עד עכשיו, הייתה לנו רק את הכותרת שם, אבל אתה יכול גם להוסיף סגנון 82 00:03:43,270 --> 00:03:47,230 לתייג, ואתה יכול לשים CSS שלך בערך מדבר לכיוון החלק העליון של הדף. 83 00:03:47,230 --> 00:03:52,550 אבל אז לקח את הדברים צעד אחד קדימה ואנו בחשבון כי מתוך יותר 84 00:03:52,550 --> 00:03:54,130 לקובץ נפרד. 85 00:03:54,130 --> 00:03:57,240 >> וכך שני קבצים אלה היו איכשהו עכשיו מקושר. 86 00:03:57,240 --> 00:03:59,550 ואכן זה היה תג שעשה את זה. 87 00:03:59,550 --> 00:04:02,920 ומה שהיה אחד מהעל מניעים להפקטורינג אותנו ל-CSS 88 00:04:02,920 --> 00:04:04,057 כל עוד? 89 00:04:04,057 --> 00:04:05,280 >> קהל: Reusability. 90 00:04:05,280 --> 00:04:05,785 >> DAVID מלאן: Reusability. 91 00:04:05,785 --> 00:04:06,150 נכון? 92 00:04:06,150 --> 00:04:09,470 יכול להיות שראית בשבעה כבר נקבע p- כי הרבה דפים, 93 00:04:09,470 --> 00:04:12,260 דף קנייה, בדף המכירה, דף תיק, הוא ככל הנראה 94 00:04:12,260 --> 00:04:13,550 מובנה באופן דומה במקצת. 95 00:04:13,550 --> 00:04:17,579 יש לוגו של מימון CS50 בראש אלא אם כן אתה כבר החלטת לשנות את זה. 96 00:04:17,579 --> 00:04:19,839 יש תחתונה ב חלק תחתון של עמודים. 97 00:04:19,839 --> 00:04:24,315 ו-CSS מאפשר לך אז גורם אותו אותו לקובץ נפרד, כך שאם 98 00:04:24,315 --> 00:04:27,780 אתה רוצה לשנות משהו בעולם על פני כל האתר שלך, אתה יכול באמת 99 00:04:27,780 --> 00:04:29,390 פשוט לשנות את זה במקום אחד. 100 00:04:29,390 --> 00:04:32,750 >> אבל יש מחיר שאתה משלם באופן פוטנציאלי על ידי בעל בחשבון את 101 00:04:32,750 --> 00:04:38,380 CSS מקובץ HTML לתוך נפרד להגיש התייחסותו עם 102 00:04:38,380 --> 00:04:40,650 תג, שראינו ביום שני. 103 00:04:40,650 --> 00:04:43,850 מה יכול להיות החסרון של זה? 104 00:04:43,850 --> 00:04:48,830 במחשבה לאחור לפני שבוע לכשאנחנו מדבר על HTTP ו-TCP / IP וכיצד 105 00:04:48,830 --> 00:04:52,070 האינטרנט עובד. 106 00:04:52,070 --> 00:04:53,530 משהו כאן? 107 00:04:53,530 --> 00:04:54,730 >> קהל: זה לוקח יותר זמן. 108 00:04:54,730 --> 00:04:55,470 >> DAVID מלאן: זה לוקח יותר זמן. 109 00:04:55,470 --> 00:04:56,750 למה? 110 00:04:56,750 --> 00:04:59,450 >> קהל: [לא ברור]. 111 00:04:59,450 --> 00:04:59,750 >> DAVID מלאן: כן. 112 00:04:59,750 --> 00:05:01,240 אז זה ללא ספק לוקח קצת יותר זמן. 113 00:05:01,240 --> 00:05:04,290 בגלל אחד, CSS הוא ברור לא באותו הקובץ. 114 00:05:04,290 --> 00:05:06,920 אז עכשיו אתה צריך לעשות לא אחד, אלא שתי בקשות. 115 00:05:06,920 --> 00:05:11,230 וכל אחת מהבקשות אלה כפי שראינו ב כרום במפקח כביכול, 116 00:05:11,230 --> 00:05:15,740 והסתכלנו על כרטיסיית הרשת, כל של קבצים אלה דורש HTTP אחד 117 00:05:15,740 --> 00:05:18,360 בקשה, שראינו לוקחת כמות מסוימת של זמן. 118 00:05:18,360 --> 00:05:19,290 עכשיו, אולי זה לא הרבה. 119 00:05:19,290 --> 00:05:20,670 אולי זה רק 20 אלפיות שנייה. 120 00:05:20,670 --> 00:05:22,260 אולי זה 200 אלפיות שנייה. 121 00:05:22,260 --> 00:05:25,530 >> אבל תחשוב על דף כמו פייסבוק, או CNN, או גוגל, שהם הרבה 122 00:05:25,530 --> 00:05:28,060 גדול יותר מהדוגמות שיש לנו הסתכל עד כה. 123 00:05:28,060 --> 00:05:32,070 דפים אלו עשויים להיות עשרות קבצים, כל אחד מהם עלול לחייב 124 00:05:32,070 --> 00:05:33,550 להורדה של קובץ. 125 00:05:33,550 --> 00:05:35,800 אז דברים יכולים באופן פוטנציאלי מתחיל להאט. 126 00:05:35,800 --> 00:05:39,280 >> ובמיוחד בימים אלה כאשר כולנו יש טלפונים ניידים בכיסים שלנו ו 127 00:05:39,280 --> 00:05:43,010 חיבורי אינטרנט איטיים יותר, צורך לחכות עוד כמה אלפיות שנייה, כמה 128 00:05:43,010 --> 00:05:46,110 יותר אלפיות שנייה עבור נוסף קבצים באמת יכולים להיות איטיים. 129 00:05:46,110 --> 00:05:50,430 מתנה היא המילה המתארת ​​את סוג של המתנה שיש לך שאתה 130 00:05:50,430 --> 00:05:53,110 חווה כאשר מחכים פיסת המידע. 131 00:05:53,110 --> 00:05:54,430 >> אבל יש הפוך. 132 00:05:54,430 --> 00:05:56,600 אז זה לא כל הסוג של - 133 00:05:56,600 --> 00:05:58,170 זה בעצם הוא קצת נדנדה כאן. 134 00:05:58,170 --> 00:06:02,970 חיסרון עכשיו, אבל מה שדפדפנים יכולים לעשות אם הם חכמים על מנת למנוע 135 00:06:02,970 --> 00:06:08,870 יש לבקש באותו styles.css להגיש שוב יכול להיות לעשות את מה? 136 00:06:08,870 --> 00:06:09,390 >> מטמון זה. 137 00:06:09,390 --> 00:06:10,370 אז במטמון - 138 00:06:10,370 --> 00:06:11,690 C-A-C-H-E - 139 00:06:11,690 --> 00:06:15,810 בדרך כלל אומר לכאן רק כדי להציל את קובץ שביקשת בפעם הראשונה, ו 140 00:06:15,810 --> 00:06:17,440 לאחר מכן לבדוק את המטמון על זה. 141 00:06:17,440 --> 00:06:20,400 בדוק שאתה סוג של מיכל אחסון, ואם יש לך כבר 142 00:06:20,400 --> 00:06:24,520 עותק של styles.css, גם אם חלק אחר עמוד בעמ 'שנקבע, או כל אתר אינטרנט, 143 00:06:24,520 --> 00:06:28,560 מבקש את זה שוב, רק כדי לתת לי שאותו עותק מטמון של משתמש. 144 00:06:28,560 --> 00:06:30,140 אל תטרחו לבקש אותו. 145 00:06:30,140 --> 00:06:32,560 >> חיסרון שם, אם כי, כפי שחלקכם יש מעד בp-הסט. 146 00:06:32,560 --> 00:06:35,870 אם אתם עושים את שינוי בשרת ו תחזור לדפדפן ואתה 147 00:06:35,870 --> 00:06:39,250 טען מחדש, לפעמים הדפדפן עושה לך טובה ולא מפריע 148 00:06:39,250 --> 00:06:43,660 מחדש הורדת קובץ styles.css כי, בחייך, מה הסיכויים 149 00:06:43,660 --> 00:06:47,620 שסגנונות אלה שמשתמש בפייסבוק הולכים לשנות שעה לשעה או 150 00:06:47,620 --> 00:06:48,140 יום ליום? 151 00:06:48,140 --> 00:06:48,800 זה די נמוך. 152 00:06:48,800 --> 00:06:52,260 הם עשויים להשתנות עם זמן, אבל לא מהרגע לרגע, או לפי השעה. 153 00:06:52,260 --> 00:06:55,810 >> אז טריק, רק לידיעתך אינטרנט כאשר עושה פיתוח, לעתים קרובות החזק את המקש 154 00:06:55,810 --> 00:06:59,500 מקש Shift למשל ולאחר מכן לחץ על טען מחדש בדפדפן שלך, ושרצונו 155 00:06:59,500 --> 00:07:03,280 בדרך כלל אומר לי רענן הדפדפן כל דבר, גם אם כבר יש לך 156 00:07:03,280 --> 00:07:04,180 זה במטמון. 157 00:07:04,180 --> 00:07:06,630 אז שוב, upsides וחסרונות, אבל כולם 158 00:07:06,630 --> 00:07:08,260 לעצב סופו של דבר החלטות. 159 00:07:08,260 --> 00:07:11,520 >> אז עכשיו, אנחנו לא עשינו רק בסופו של הסיפור כאן. 160 00:07:11,520 --> 00:07:15,790 אם אני עכשיו אלך אחורה וקדימה ואחורה ו חזרה, התחלנו להציג לא רק 161 00:07:15,790 --> 00:07:18,060 HTML, אבל PHP. 162 00:07:18,060 --> 00:07:20,786 אז במונחים של ההדיוטות, מה אין PHP תן לנו לעשות? 163 00:07:20,786 --> 00:07:22,770 >> קהל: [לא ברור]. 164 00:07:22,770 --> 00:07:24,258 >> DAVID מלאן: מה זה? 165 00:07:24,258 --> 00:07:25,250 >> קהל: להכניס היגיון לתוך הקוד. 166 00:07:25,250 --> 00:07:26,620 >> DAVID מלאן: כן, להציג את היגיון לקוד שלך. 167 00:07:26,620 --> 00:07:29,570 אז זה שפת תכנות אמיתית עם לולאות, ומשתנים, ו 168 00:07:29,570 --> 00:07:32,620 פונקציות, ותנאים, וכל הדברים שאנחנו כבר משתמשים בדרך חזרה 169 00:07:32,620 --> 00:07:33,780 כאשר מאז התחלה. 170 00:07:33,780 --> 00:07:36,780 ו-PHP, שראינו, ניתן להשתמש בם גם בשורת הפקודה - זה 171 00:07:36,780 --> 00:07:39,190 אין לי מה לעשות עם האינטרנט, למרות שזה 172 00:07:39,190 --> 00:07:43,150 באמת מקורותיה ומה שהיא נוטה להיות טוב ובתורם ל-- 173 00:07:43,150 --> 00:07:47,130 אבל אתה יכול להשתמש ב-PHP רק על ידי הטבע לעובדה שיש לו הדפסה () 174 00:07:47,130 --> 00:07:49,660 פונקציה, וprintf (פונקציה), או הד (פונקציה). 175 00:07:49,660 --> 00:07:52,440 יש צרורות של דרכים שאתה ניתן להדפיס טקסט עם PHP. 176 00:07:52,440 --> 00:07:56,540 >> לכן, אתה יכול להשתמש בזה תכנות שפה לפלט בדיוק 177 00:07:56,540 --> 00:07:58,460 מה שאנחנו מדברים על העבר. 178 00:07:58,460 --> 00:08:01,360 באופן דינמי אתה יכול ליצור HTML שלך. 179 00:08:01,360 --> 00:08:02,300 אולי לא את כולו. 180 00:08:02,300 --> 00:08:06,460 אולי דברים קוד קשים, כמו כותרת והכותרת תחתונה, ואת הלוגו, 181 00:08:06,460 --> 00:08:07,950 וגיליונות הסגנון שלך, וכל זה. 182 00:08:07,950 --> 00:08:11,190 אבל למשהו כמו שבע להגדיר p-, לאן אתה מניפולציה במניות ו 183 00:08:11,190 --> 00:08:14,690 מראה תיק של המשתמש, שהוא הולך לשנות באופן דינמי, אתה יכול 184 00:08:14,690 --> 00:08:18,960 בוודאי להשתמש PHP וההיגיון זה נותן לי אתה כשפת תכנות כדי 185 00:08:18,960 --> 00:08:22,320 פלט דינמי תת של הדף. 186 00:08:22,320 --> 00:08:25,900 >> לכן, כאשר אתה מדבר על אתרי אינטרנט דינמיים, או תכנות אינטרנט, זה 187 00:08:25,900 --> 00:08:27,200 מה שאתה באמת מדבר. 188 00:08:27,200 --> 00:08:31,450 שימוש בשפה כמו PHP, או דברים נקרא פייתון, או רובי, או ג'אווה, או 189 00:08:31,450 --> 00:08:35,900 עדיין שפות אחרות, לשאילתא מסד נתונים לעתים קרובות, או שרת אחר, ו 190 00:08:35,900 --> 00:08:38,580 אז לירוק את אופן דינמי ב-HTML. 191 00:08:38,580 --> 00:08:42,470 >> עכשיו את התוצאה הסופית, במאמר מוסגר, היא כי ה-HTML של רוב אתרי אינטרנט, 192 00:08:42,470 --> 00:08:45,970 כולל שבע להגדיר p-, הוא כנראה הולך להיות בלגן עצום אם 193 00:08:45,970 --> 00:08:48,060 אתה מסתכל על המקור קוד בדפדפן. 194 00:08:48,060 --> 00:08:49,010 זה לא עניין גדול. 195 00:08:49,010 --> 00:08:51,550 בשלב זה, כאשר אכפת לנו סגנון, אכפת לנו 196 00:08:51,550 --> 00:08:52,740 דברים שאתה כותב. 197 00:08:52,740 --> 00:08:56,240 אנחנו לא יהיו אכפת להם מהדברים כי מה תפוקות הקוד שלך. 198 00:08:56,240 --> 00:08:59,520 אז אל תדאגו בקשר לכניסה כאן, כי אם זה PHP זה 199 00:08:59,520 --> 00:09:01,190 למעשה פלט דברים. 200 00:09:01,190 --> 00:09:04,430 אחרי הכל, הדפדפן לא יהיה אכפת, ואדם לא מחפש 201 00:09:04,430 --> 00:09:05,400 במקור בכל מקרה. 202 00:09:05,400 --> 00:09:09,000 אנחנו צוות, למשל, היית להסתכל על PHP שלך. 203 00:09:09,000 --> 00:09:13,440 >> אז תן לי לתת דוגמא מהירה עכשיו למה אחר זה עשוי להיות שימושי. 204 00:09:13,440 --> 00:09:18,620 אז בכנות, אני לא זוכר שעבר זמן הייתי C כדי לפתור בעיה ב 205 00:09:18,620 --> 00:09:19,620 בעולם האמיתי. 206 00:09:19,620 --> 00:09:22,330 זה היה כנראה בבית הספר לתואר שני, כאשר הייתי צריך להשתמש בשפה ש 207 00:09:22,330 --> 00:09:26,710 הייתה ברמה נמוכה למדי ונתן לי את הזדמנות לעשות משהו גבוה מאוד 208 00:09:26,710 --> 00:09:30,720 ביצוע ממש כדי להציל כמה שמעבד מחזורים ככל שיכולתי, בחלקו הגדול 209 00:09:30,720 --> 00:09:33,990 בגלל שאני משתמש בערכות נתונים עצומות, וכל מחזור מעבד נספר. 210 00:09:33,990 --> 00:09:37,750 ולמען אמת, גם בדברים כמו טלפונים בימים אלה והתקנים אחרים 211 00:09:37,750 --> 00:09:39,910 שבו אתה לא ממש צריך כמה שיותר זיכרון ולא ממש יש לך כמו 212 00:09:39,910 --> 00:09:44,160 כמה מעבד, תוך שימוש בשפות מהר יותר הוא עדיין מושך. 213 00:09:44,160 --> 00:09:47,290 >> אבל בעולם האמיתי, כאשר אתה רק רוצה לזרוק כמה תכנית יחד כדי 214 00:09:47,290 --> 00:09:50,340 לנתח נתונים מסוימים, או שתאסוף חבורה שלמה של רישומים עבור 215 00:09:50,340 --> 00:09:53,330 חלק קבוצת סטודנטים ואתה רוצה מאוד להפוך במהירות שליחת הודעות דוא"ל 216 00:09:53,330 --> 00:09:56,240 אחד אחד לכל אחד מאותם נרשמים, אתה הולך להגיע ל 217 00:09:56,240 --> 00:09:59,240 שפה ברמה גבוהה יותר מ C אם אפשר לומר כך. 218 00:09:59,240 --> 00:10:04,060 משהו כמו PHP או Python, Ruby או, או חצי תריסר אחר שקיימות 219 00:10:04,060 --> 00:10:04,550 בימים אלה. 220 00:10:04,550 --> 00:10:07,200 אבל שלושה אלה הם כנראה האופנתי ביותר כרגע. 221 00:10:07,200 --> 00:10:10,840 >> ומה שזה אומר זה שאתה יכול לפתוח עד עורך כמו gedit טקסט או 222 00:10:10,840 --> 00:10:14,030 רוב כל דבר אחר, ואז פשוט להתחיל כתיבת קוד מבלי לדאוג 223 00:10:14,030 --> 00:10:17,800 על העריכה, מבלי באמת לדאוג לניהול זיכרון, 224 00:10:17,800 --> 00:10:20,820 אם כי יש לזכור כי קטן רשלנות סופו של דבר תחזור 225 00:10:20,820 --> 00:10:24,790 לנשוך אותך אם ערכת הנתונים מקבלת גדול יותר או הבעיה מקבלת גדולה. 226 00:10:24,790 --> 00:10:27,230 אבל מה זה אומר עבור שלנו הוא הבא. 227 00:10:27,230 --> 00:10:29,860 >> תן לי להמשיך ולהפעיל את איות מהבעיה להגדיר שש. 228 00:10:29,860 --> 00:10:33,480 אז זהו היישום המבוסס על הגיבורים שלי כי נהגתי על גדול 229 00:10:33,480 --> 00:10:35,500 לוח שבו אני לא ביצעתי כל כך טוב. 230 00:10:35,500 --> 00:10:38,720 אנחנו נחזור בזמן של שבוע ו לבקר את אלה שסופו של דבר על גבי 231 00:10:38,720 --> 00:10:40,430 לוח גדול בהרצאה האחרונה שלנו. 232 00:10:40,430 --> 00:10:44,520 אבל לעת עתה, תן לי ללכת קדימה ורק להפעיל את הפתרון שלי בטקסט, ואנחנו נעשה את 233 00:10:44,520 --> 00:10:48,460 המלך ג'יימס התנ"ך, והנה זה באנו. 234 00:10:48,460 --> 00:10:51,080 >> אז אלה הם כל כביכול מילות באיות שגוי מתוך 235 00:10:51,080 --> 00:10:52,240 ג'יימס התנ"ך המלך. 236 00:10:52,240 --> 00:10:55,560 ולקח את היישום שלי מחצית שנייה בסך הכל. 237 00:10:55,560 --> 00:10:58,270 אז לא רע בזה מחשב מסוים. 238 00:10:58,270 --> 00:11:01,540 אבל לחשוב על כמה קוד שהייתי צריך לכתוב. 239 00:11:01,540 --> 00:11:02,880 תחשוב כמה קוד שהייתי צריך לכתוב. 240 00:11:02,880 --> 00:11:06,170 תחשוב כמה שעות אתה בילה ב D-אולם או במעונות שלך או בכל מקום 241 00:11:06,170 --> 00:11:07,890 למעשה קידוד עד שהפתרון. 242 00:11:07,890 --> 00:11:11,850 >> ובכן, אם יש לי בעצם ברמה גבוהה יותר שפה כמו PHP, לשים לב 243 00:11:11,850 --> 00:11:13,350 מה אני יכול לעשות כאן. 244 00:11:13,350 --> 00:11:16,410 ראשית, נניח שמדובר במקום קוד ההפצה שלך. 245 00:11:16,410 --> 00:11:17,790 זהו קובץ שנקרא איות. 246 00:11:17,790 --> 00:11:20,220 זה זמין כחלק מהיום קוד הפצה. 247 00:11:20,220 --> 00:11:22,670 ואני הולך להניף את היד שלי ברוב מהפרטים, אבל זה בעצם 248 00:11:22,670 --> 00:11:25,500 דוגמא מעניינת לאופן אתה אולי יציאת שפה 249 00:11:25,500 --> 00:11:28,870 כמו C מעל ל-PHP. 250 00:11:28,870 --> 00:11:33,420 אני ממש פתחתי שני חלונות טקסט, אחד עם גרסת C שלי speller.c, 251 00:11:33,420 --> 00:11:36,960 ואני רק התחלתי לתרגם אותו בי הראש לPHP ולהקליד אותו באמצעות 252 00:11:36,960 --> 00:11:38,840 הפונקציות מקבילות הקרובות ביותר. 253 00:11:38,840 --> 00:11:40,100 >> אז כמה מהדברים האלה הם שונים. 254 00:11:40,100 --> 00:11:43,730 ראינו פעם האחרונה שPHP אינו משתמש כולל בדיוק באותה הדרך. 255 00:11:43,730 --> 00:11:47,050 למרות שהיא משתמשת דורשת בדרך כלל, כולל קיימת. 256 00:11:47,050 --> 00:11:50,330 הגדרה היא קצת שונה מ # Define ב-C, אבל זה 257 00:11:50,330 --> 00:11:51,890 איך אנחנו עושים קבועים. 258 00:11:51,890 --> 00:11:55,860 תכנית + $ מתברר קיים ב-PHP, כך שראינו את זה לפני. 259 00:11:55,860 --> 00:11:58,650 אלה הם רק כל משתנים, של שיתחיל עם סימני דולר. 260 00:11:58,650 --> 00:12:00,590 כזכור, אלה הם רק כמה צף נקודות. 261 00:12:00,590 --> 00:12:03,970 >> אז סיפור ארוך קצר, אתה מוזמן לדפדף זה אם סקרן, זה הוא 262 00:12:03,970 --> 00:12:10,010 כמעט המרת קו לשורה של גרסת C של speller.c לתוך PHP. 263 00:12:10,010 --> 00:12:12,630 ואתה יכול לעשות את זה שוב ל חצי תריסר שפות אחרות. 264 00:12:12,630 --> 00:12:14,910 >> אבל מה שמעניין הוא זה. 265 00:12:14,910 --> 00:12:16,910 או מה זה בכנות מייאשת היא זו. 266 00:12:16,910 --> 00:12:20,790 תן לי להמשיך ולהקליד על dictionary.php, וטענה שאני 267 00:12:20,790 --> 00:12:23,670 הולך קדימה וליישם מחדש בעיה להגדיר שש כאן. 268 00:12:23,670 --> 00:12:27,530 >> אז בואו נציע לראשונה כי בזה קובץ, אשר ייושם ב 269 00:12:27,530 --> 00:12:30,550 PHP, אז תן לי לפתוח את התגים שלי ככה. 270 00:12:30,550 --> 00:12:34,780 תן לי לתת את עצמי בעולם משתנה, גודל $ מקבל אפס. 271 00:12:34,780 --> 00:12:36,710 ואני הולך לתת לי עצמי שולחן חשיש. 272 00:12:36,710 --> 00:12:38,110 אני אשתמש בטבלת גיבוב לדבר הזה. 273 00:12:38,110 --> 00:12:42,070 כיצד אני יכול להכריז על שולחן חשיש ב-PHP? 274 00:12:42,070 --> 00:12:42,990 בוצע. 275 00:12:42,990 --> 00:12:43,980 על אישור. 276 00:12:43,980 --> 00:12:48,870 >> סוגר קרוב סוגר כל כך פתוח מייצג מה ב-PHP, כפי שראינו? 277 00:12:48,870 --> 00:12:51,850 מערך, אבל מערך שיכול יהיה מערך אסוציאטיבי. 278 00:12:51,850 --> 00:12:54,320 מערך אסוציאטיבי הוא מבנה נתונים ה 279 00:12:54,320 --> 00:12:55,860 מקורבי מפתחות עם ערכים. 280 00:12:55,860 --> 00:12:59,430 >> עכשיו באינדקס הפשוט ביותר מבחינה מספרית מערך, מפתחות אלה מה? 281 00:12:59,430 --> 00:13:02,250 282 00:13:02,250 --> 00:13:03,960 אפס, אחת, שתיים, שלוש, נכון? 283 00:13:03,960 --> 00:13:08,780 בית ספר ישן דברים בחזרה מC. אבל זה יכול להיות גם מחרוזות כמו foo, ובר, 284 00:13:08,780 --> 00:13:12,210 או מקסוול, או כל מחרוזת כזו. 285 00:13:12,210 --> 00:13:14,240 אז אני יכול למנף את זה ברגע. 286 00:13:14,240 --> 00:13:17,550 >> תן לי ללכת קדימה ולהכריז פונקציה כמו - 287 00:13:17,550 --> 00:13:19,020 בואו קודם לעשות עומס (). 288 00:13:19,020 --> 00:13:20,690 אז עומס פונקציה (). 289 00:13:20,690 --> 00:13:23,440 ו-PHP הוא קצת שונה שב אתה ממש סוג פונקציה, אבל אתה 290 00:13:23,440 --> 00:13:24,930 אל תקליד סוג תמורה. 291 00:13:24,930 --> 00:13:28,760 אני הולך קדימה, ואומר כי עומס פונקציה () צריכה לקחת ב 292 00:13:28,760 --> 00:13:31,000 מילון $ ויכוח, רק כמו גרסת C עשתה. 293 00:13:31,000 --> 00:13:32,510 אני עושה את זה מזיכרון. 294 00:13:32,510 --> 00:13:34,910 >> ואני מציע שאני הולך לעשות את זה. 295 00:13:34,910 --> 00:13:37,080 אני פשוט הולך לעשות foreach. 296 00:13:37,080 --> 00:13:40,710 אני הולך לקרוא לפונקציה הנקראת קובץ (), שעבר בשם של 297 00:13:40,710 --> 00:13:44,990 קובץ, שהוא משתנה מילון $ כמילת $. 298 00:13:44,990 --> 00:13:49,410 ואז בתוכי ללולאה כאן, אני הולך קדימה ולאחסן בי 299 00:13:49,410 --> 00:13:57,440 $ טבלה שמילה $ מקבלת אמיתית. 300 00:13:57,440 --> 00:13:57,918 בוצע. 301 00:13:57,918 --> 00:14:01,264 אה, רגע. 302 00:14:01,264 --> 00:14:02,422 בוצע. 303 00:14:02,422 --> 00:14:02,760 על אישור. 304 00:14:02,760 --> 00:14:04,970 >> זה העומס (פונקציה) אומר ב-PHP. 305 00:14:04,970 --> 00:14:05,865 עכשיו, למה זה עובד? 306 00:14:05,865 --> 00:14:07,010 ואני סוג של רמאות כאן. 307 00:14:07,010 --> 00:14:09,980 >> אז, אחד, foreach ראיתי בפעם האחרונה לזמן קצר. 308 00:14:09,980 --> 00:14:13,680 זה רק אומר שאתה יכול לחזר על מערך בלי לטרוח עם i 309 00:14:13,680 --> 00:14:16,150 וn ותוספת בתוספת, וכל זה. 310 00:14:16,150 --> 00:14:21,350 מילון הוא כמובן שם הקובץ, משהו כמו גדול או קטן, שני 311 00:14:21,350 --> 00:14:22,830 מילונים השתמשנו בפעם האחרונה. 312 00:14:22,830 --> 00:14:26,715 קובץ הוא פונקציה שפותחת את טקסט קובץ, קורא אותו בשורה אחרת שורה, ו 313 00:14:26,715 --> 00:14:29,840 ידיך לגבות מגוון עצום, כל אחד מהאלמנטים שהוא 314 00:14:29,840 --> 00:14:31,340 קו מקובץ זה. 315 00:14:31,340 --> 00:14:36,040 אז זה שילוב של fopen, ו fread, ותוך לולאה, וfclose, 316 00:14:36,040 --> 00:14:37,080 וכל זה. 317 00:14:37,080 --> 00:14:40,150 לבסוף, כמילה רק אומרת שזה משתנה שאני הולך יש להם גישה ל 318 00:14:40,150 --> 00:14:41,890 בכל איטרציה בלולאה הזו. 319 00:14:41,890 --> 00:14:46,910 >> אז בקיצור, אניה אחת זה כאן פירושו לפתוח את הקובץ ששמו ב 320 00:14:46,910 --> 00:14:50,750 מילון, משתנה, לחזר על זה שורה אחרת שורה, ובכל פעם שאתה מקבל 321 00:14:50,750 --> 00:14:54,290 קו, חנות במילה משתנה בשם, ולאחר מכן לעשות משהו עם מילה. 322 00:14:54,290 --> 00:14:55,280 מה אני רוצה לעשות? 323 00:14:55,280 --> 00:14:58,110 אני רוצה לשים את המילה לשולחן החשיש שלי. 324 00:14:58,110 --> 00:15:00,860 >> ובכן, אני יכול לשים משהו בי חשיש שולחן בדיוק כמו ב-C 325 00:15:00,860 --> 00:15:02,140 שימוש בסוגריים מרובעים. 326 00:15:02,140 --> 00:15:03,660 זהו שם לשולחן החשיש שלי. 327 00:15:03,660 --> 00:15:07,180 אני הולך לאינדקס לתוך החשיש ש שולחן במיקום זה. 328 00:15:07,180 --> 00:15:08,920 אז לא סוגר אפס, לא סוגר אחת. 329 00:15:08,920 --> 00:15:11,990 משהו סוף ציטוט ציטוט Bracket, כל המילה שהוא. 330 00:15:11,990 --> 00:15:15,200 ובדיוק כמו שאולי יש לך ב עבודת שולחן חשיש הגיבורים, אתה רק חנות 331 00:15:15,200 --> 00:15:17,650 ביעילות בוליאנית, במרומז או באופן מפורש. 332 00:15:17,650 --> 00:15:18,260 בוצע. 333 00:15:18,260 --> 00:15:20,000 אני אחסון נכון את הערך. 334 00:15:20,000 --> 00:15:23,150 >> עכשיו יש כמה דברים אני חיתוך פינות על כאן. 335 00:15:23,150 --> 00:15:27,720 מבחינה טכנית, יש הולך להיות קו חדש מעצבן, / n, בסוף 336 00:15:27,720 --> 00:15:28,820 כל אחת מהמילים הללו. 337 00:15:28,820 --> 00:15:31,770 אז אני כנראה צריך לקרוא לפונקציה PHP קוצצים בשם (), אשר יהיה 338 00:15:31,770 --> 00:15:33,460 פשוטו כמשמעו לכרות את זה. 339 00:15:33,460 --> 00:15:35,020 ואני באמת צריכה לעשות דבר אחד אחר. 340 00:15:35,020 --> 00:15:38,380 אני כנראה צריך להגדיל גודל בכל איטרציה, אז אני עוקב אחרי 341 00:15:38,380 --> 00:15:39,560 בעולם של מה זה. 342 00:15:39,560 --> 00:15:43,180 ולמען אמת, וזו אחת היבטים מטופשים של PHP, אם אתה 343 00:15:43,180 --> 00:15:46,950 שימוש במשתנה גלובלית, אתה צריך לומר במפורש שאתה נמצא. 344 00:15:46,950 --> 00:15:51,670 אז אני הולך בעצם להקליד גלובלי גודל $, שולחן $ גלובלי, ועכשיו 345 00:15:51,670 --> 00:15:52,690 הפונקציה שלי היא מלאה. 346 00:15:52,690 --> 00:15:57,475 >> אז לא ממש פשוט כמו בעבר, אבל כנראה לקח פחות זמן מאשר C 347 00:15:57,475 --> 00:15:58,220 גרסה, אולי? 348 00:15:58,220 --> 00:15:58,730 על אישור. 349 00:15:58,730 --> 00:16:00,390 >> אז עכשיו בואו נעשה את הסימון (פונקציה). 350 00:16:00,390 --> 00:16:04,300 בואו תראו אם זה לפחות לקח שעות על גבי שעות שזה לקח לנו בג אז 351 00:16:04,300 --> 00:16:06,500 תן לי ללכת קדימה ולהכריז לבדוק כפונקציה. 352 00:16:06,500 --> 00:16:09,070 לוקח במילה טיעון, שהוא הולך לבוא מהמאית. 353 00:16:09,070 --> 00:16:13,410 ואני רק הולך לבדוק אם Isset משתנה הבא, שולחן 354 00:16:13,410 --> 00:16:18,400 strtolower סוגר של מילה - 355 00:16:18,400 --> 00:16:20,590 בואו לאזן את כל הסוגריים שלי - 356 00:16:20,590 --> 00:16:24,275 לאחר מכן להחזיר אמיתי. 357 00:16:24,275 --> 00:16:27,020 358 00:16:27,020 --> 00:16:28,460 אחר - 359 00:16:28,460 --> 00:16:30,330 זה היה ממש קשה חלק מתכנית זו. 360 00:16:30,330 --> 00:16:31,940 אחר, בתמורת שווא. 361 00:16:31,940 --> 00:16:32,630 בוצע. 362 00:16:32,630 --> 00:16:33,460 זה סימון (). 363 00:16:33,460 --> 00:16:34,520 >> עכשיו, למה זה עובד? 364 00:16:34,520 --> 00:16:37,040 ובכן, אחד שעברתי במילה אחת, אשר היא מחרוזת. 365 00:16:37,040 --> 00:16:41,400 שני, אני בודק בתוך החשיש שולחן, שנקרא שולחן $. 366 00:16:41,400 --> 00:16:45,470 אני מכריח אותו לאותיות קטנות על ידי קורא פונקציה דומה למדי tolower () ב 367 00:16:45,470 --> 00:16:48,580 C, אבל זה עושה את כל המילה, לא תו בודד. 368 00:16:48,580 --> 00:16:52,680 ואם זה מוגדר, במילים אחרות יש מוגדר ערך, במילים אחרות, 369 00:16:52,680 --> 00:16:54,880 אם זה נכון, אז כן, זו מילה. 370 00:16:54,880 --> 00:16:56,530 מכיוון שאני שם את זה שם עם עומס (). 371 00:16:56,530 --> 00:16:59,100 ואם לא, אני הולך לחזור שווא. 372 00:16:59,100 --> 00:17:00,090 >> עכשיו האחרים קלים. 373 00:17:00,090 --> 00:17:03,570 גודל () פונקציה, איך אני עושה את זה? 374 00:17:03,570 --> 00:17:05,230 אני בעצם עושה לחזור גודל $. 375 00:17:05,230 --> 00:17:07,770 אבל אני מבחינה טכנית צריך לעשות את הדבר המעצבן הזה. 376 00:17:07,770 --> 00:17:10,640 ולמעשה עד לשמוע, הייתי חיתוך פינה אחת יותר מדי. 377 00:17:10,640 --> 00:17:12,920 אני באמת צריך לעשות שולחן $ גלובלי. 378 00:17:12,920 --> 00:17:16,260 >> אבל מה שנאמר, לפרוק). 379 00:17:16,260 --> 00:17:17,380 לפרוק () הוא מדהים. 380 00:17:17,380 --> 00:17:20,500 לפרוק פונקציה (). 381 00:17:20,500 --> 00:17:23,990 איך אני רוצה ליישם לפרוק ()? 382 00:17:23,990 --> 00:17:25,079 בוצע. 383 00:17:25,079 --> 00:17:25,450 על אישור. 384 00:17:25,450 --> 00:17:28,900 >> אז לפרוק (), ניהול זיכרון הוא טיפל לחלוטין בשבילך ב 385 00:17:28,900 --> 00:17:31,800 משהו כמו PHP והרבה שפות ברמה גבוהה יותר. 386 00:17:31,800 --> 00:17:32,600 אז זה מדהים. 387 00:17:32,600 --> 00:17:36,080 כמו למה לעזאזל אנחנו בילינו העבר שמונה שבועות פלוס על כתיבת C 388 00:17:36,080 --> 00:17:41,030 באמת הגיע זמן, כנראה באמת איטי בעיות רב עם עשרות שעות 389 00:17:41,030 --> 00:17:42,530 מלעבוד תחת חגורות שלנו? 390 00:17:42,530 --> 00:17:46,110 >> ובכן, על דבר אחד, זה יכול לעבוד קנס על תוכניות קטנות. 391 00:17:46,110 --> 00:17:47,840 זה בהחלט האיץ זמן פיתוח. 392 00:17:47,840 --> 00:17:49,790 אבל בואו נראה מה קורה בעולם האמיתי. 393 00:17:49,790 --> 00:17:52,370 >> תן לי ללכת לספרייה זו בחלון מסוף. 394 00:17:52,370 --> 00:17:53,370 יש מאית. 395 00:17:53,370 --> 00:17:56,570 ושים לב לצד, ואתה עלול נתקל בכך בבעיה להגדיר 396 00:17:56,570 --> 00:17:58,190 שש או בעיה להגדיר שבע. 397 00:17:58,190 --> 00:18:01,610 אין לך אך ורק כדי בסופו של קבצי PHP עם. PHP. 398 00:18:01,610 --> 00:18:05,250 אם אתה שם את קו כמו שהראשונה ב העליון, זה קו מיוחד 399 00:18:05,250 --> 00:18:10,980 תחביר זה אומר בעצם למצוא התוכנה בשם PHP ולהשתמש בו כדי 400 00:18:10,980 --> 00:18:12,270 לפרש קובץ זה. 401 00:18:12,270 --> 00:18:15,410 אז עכשיו אף אחד לא באמת יודע כי אני מפעיל תכנית PHP. 402 00:18:15,410 --> 00:18:19,860 אני יכול להפעיל אותו בדיוק כמו שזה היה משהו שנאסף בג 403 00:18:19,860 --> 00:18:20,650 >> אבל הנה העניין. 404 00:18:20,650 --> 00:18:21,600 למעשה, בואו נעשיתי את זה שוב. 405 00:18:21,600 --> 00:18:23,530 Dropbox/pset6 /. 406 00:18:23,530 --> 00:18:25,390 יש מאית. 407 00:18:25,390 --> 00:18:26,720 אוקיי, 0.44 שניות. 408 00:18:26,720 --> 00:18:28,080 זה הגיע מהר יותר הפעם. 409 00:18:28,080 --> 00:18:29,745 >> עכשיו בואו נלך לגרסת ה-PHP. 410 00:18:29,745 --> 00:18:43,070 411 00:18:43,070 --> 00:18:44,320 תוספת נחמדה. 412 00:18:44,320 --> 00:18:50,830 413 00:18:50,830 --> 00:18:53,285 אבל תחשוב כמה זמן אני הצלתי בשעתי עבודה. 414 00:18:53,285 --> 00:18:56,990 415 00:18:56,990 --> 00:18:57,790 על אישור. 416 00:18:57,790 --> 00:19:01,020 >> אז 3.59 שניות, אשר למעשה לא נשמע מדויק. 417 00:19:01,020 --> 00:19:03,710 אבל זה בגלל שסיפור ארוך קצר, כשאתה מדפיס את כמות עצומה 418 00:19:03,710 --> 00:19:06,840 דברים על המסך, כי עצמו מאט את הדברים. 419 00:19:06,840 --> 00:19:11,260 מה שהוא באמת לקח את המעבד ב מכשיר היה 3.59 שניות, ב 420 00:19:11,260 --> 00:19:15,260 ניגוד ל-C, שלקח 0.44 שניות ביותר לאחרונה. 421 00:19:15,260 --> 00:19:17,620 זה סדר באמת בסדר גודל שונה. 422 00:19:17,620 --> 00:19:20,280 >> אז איפה מחיר שממנו מגיע? 423 00:19:20,280 --> 00:19:21,790 למה זה כל כך הרבה יותר איטי? 424 00:19:21,790 --> 00:19:24,220 למה PHP אין לבצע כל כך גרוע? 425 00:19:24,220 --> 00:19:25,242 דניאלה? 426 00:19:25,242 --> 00:19:26,550 >> קהל: אתה לא באמת להשתמש בטבלת גיבוב. 427 00:19:26,550 --> 00:19:27,710 >> מלאן דוד: אני לא ממש להשתמש בטבלת גיבוב. 428 00:19:27,710 --> 00:19:28,760 אז אני סוג של עשיתי. 429 00:19:28,760 --> 00:19:29,870 אז זה מערך אסוציאטיבי. 430 00:19:29,870 --> 00:19:33,650 סביר להניח שאם אנשים בPHP הם באמת חכם, הם השתמשו מתחת 431 00:19:33,650 --> 00:19:39,520 מכסה המנוע שולחן חשיש בפועל מיושם במשהו כמו C או C + +. 432 00:19:39,520 --> 00:19:41,290 אבל. 433 00:19:41,290 --> 00:19:42,760 כן. 434 00:19:42,760 --> 00:19:44,010 >> קהל: [לא ברור]. 435 00:19:44,010 --> 00:19:46,690 436 00:19:46,690 --> 00:19:47,080 >> דוד Malan: כן. 437 00:19:47,080 --> 00:19:50,780 אז כל אחד מהפונקציות שכתבתי עכשיו - למעשה, אפשר להגיד שברגע שיותר 438 00:19:50,780 --> 00:19:51,480 קצת יותר חזק? 439 00:19:51,480 --> 00:19:54,509 >> קהל: כל אחד מהפונקציות ש אתה כלל יש הרבה יותר מלא 440 00:19:54,509 --> 00:19:56,610 קיבולת מ - 441 00:19:56,610 --> 00:19:57,550 >> דוד Malan: אז זה נכון מאוד. 442 00:19:57,550 --> 00:20:01,490 יש הרבה יותר תקורה שאנחנו לא ממש רואה על ידי התמקדות רק על 443 00:20:01,490 --> 00:20:03,730 dictionary.php, שאני פשוט כתבתי. 444 00:20:03,730 --> 00:20:08,020 לעומת זאת, יש כל פרשן הולך ברקע. 445 00:20:08,020 --> 00:20:12,040 ואכן, כשאני רצתי תכנית זו, לא היה פועל אפסים ואחדים שנאספו 446 00:20:12,040 --> 00:20:14,290 מיועד למעבד אינטל שלי. 447 00:20:14,290 --> 00:20:19,270 במקום זאת, הוא רץ שורה אחרת שורה קוד PHP שנראה בדיוק 448 00:20:19,270 --> 00:20:20,350 כמו שהקלדנו אותה. 449 00:20:20,350 --> 00:20:22,475 ולכן בכל פעם שאתה משתמש שפה פירש, אתה 450 00:20:22,475 --> 00:20:23,850 בעצם לעשות לשלם את המחיר הזה. 451 00:20:23,850 --> 00:20:27,010 זה הולך לקחת קצת זמן כדי לקרוא גבי הקובץ שלך למטה, משמאל ל 452 00:20:27,010 --> 00:20:30,740 ימין, ולאחר מכן לבצע כל בשורה שוב ושוב. 453 00:20:30,740 --> 00:20:34,250 >> עכשיו במציאות, במיוחד באינטרנט, למעשה אתה יכול לזרז את התהליך הזה 454 00:20:34,250 --> 00:20:38,660 על ידי במטמון את התוצאות של קוד PHP שפרש. 455 00:20:38,660 --> 00:20:41,640 וזה הגיוני באינטרנט, כי אם יש לך משתמש אחד לא כמו 456 00:20:41,640 --> 00:20:46,300 לי כאן, אבל 1,000 או 10,000 משתמשים, ולאחר מכן אולי בפעם הראשונה בקובץ הוא 457 00:20:46,300 --> 00:20:49,050 לגשת זה איטי, אבל לאחר מכן זה הרבה יותר מהר. 458 00:20:49,050 --> 00:20:51,000 >> אבל גם את זה, שוב, הוא את מסחר. 459 00:20:51,000 --> 00:20:53,870 ובשביל משהו כמו נתוני מחקר נקבע, או אפילו משהו גדול כמו 460 00:20:53,870 --> 00:20:58,330 זה, המשתמשים שלך יהיו בסופו של מתחיל להרגיש האטה ש. 461 00:20:58,330 --> 00:21:02,670 >> שפות אז בקיצור, הן לפרש מאוד באופנה, מאוד פופולרי, ו 462 00:21:02,670 --> 00:21:06,710 כנות הן כנראה שפותיך צריך להגיע לפתרון בעיות כאשר 463 00:21:06,710 --> 00:21:08,200 לאחר CS50. 464 00:21:08,200 --> 00:21:12,720 אבל מבין כמה אתה באמת לוקח כמובן מאליו מתחת למכסת המנוע 465 00:21:12,720 --> 00:21:15,910 באמת אלה כמה שבועות האחרונים בחשיש שולחנות, ועצים, ומנסה, 466 00:21:15,910 --> 00:21:20,770 אשר משמשים סופו של דבר לבפועל ליישם דברים כמו סוגר פתוח, 467 00:21:20,770 --> 00:21:24,200 סוגר מרובע, שבו אנו יכולים עכשיו הכרת תודה לוקח כמובן מאליו. 468 00:21:24,200 --> 00:21:26,360 >> אז בואו נסתכל עכשיו בהקשר הזה באינטרנט. 469 00:21:26,360 --> 00:21:29,890 ואני ציינו פעם האחרונה שיש חבורה של superglobals ב-PHP, כי 470 00:21:29,890 --> 00:21:32,490 הם לא באמת רלוונטיים בשורת הפקודה. 471 00:21:32,490 --> 00:21:36,210 הם רלוונטיים יותר בהקשר של שימוש PHP בהקשר אינטרנט. 472 00:21:36,210 --> 00:21:41,220 כך פועל PHP על שרת אינטרנט כדי כדי ליצור דברים כמו HTML. 473 00:21:41,220 --> 00:21:44,540 >> ואנחנו הביטו ב_GET $ _POST ודולרים, ו זה מקום שבי באופן אוטומטי למשתמשים " 474 00:21:44,540 --> 00:21:49,100 קלט מסתיים פשוט אם אתה שולח טופס לקובץ עם הסיומת. PHP באינטרנט 475 00:21:49,100 --> 00:21:50,460 שרת כמו המכשיר. 476 00:21:50,460 --> 00:21:53,310 אבל בואו נסתכל לרגע על _COOKIE $ ו $ _SESSION. 477 00:21:53,310 --> 00:21:56,670 >> במונחים של הדיוטות, מה היא עוגייה אתה מבין את זה בהקשר של 478 00:21:56,670 --> 00:21:58,220 שימוש באינטרנט? 479 00:21:58,220 --> 00:21:59,450 >> קהל: קובץ במחשב. 480 00:21:59,450 --> 00:21:59,920 >> דוד Malan: כן. 481 00:21:59,920 --> 00:22:03,500 זה קובץ במחשב של המשתמש כל מה שניטע על ידי אתר 482 00:22:03,500 --> 00:22:04,410 יקרה לך לבקר. 483 00:22:04,410 --> 00:22:07,334 אז כשאתה הולך לפייסבוק, כשאתה הולך לbankofamerica.com, כשאתה הולך 484 00:22:07,334 --> 00:22:10,330 ל-google.com, כשאתה הולך כמעט לכל אתר בעולם בימים אלה, 485 00:22:10,330 --> 00:22:14,850 כולל cs50.net, עוגייה נטועה במחשב שלך, שהוא 486 00:22:14,850 --> 00:22:19,800 או ערך שמאוחסן בזכרון RAM בך מחשב בזיכרון של הדפדפן שלך, או 487 00:22:19,800 --> 00:22:22,800 לפעמים אכן מאוחסן בקובץ בכונן הקשיח שלך. 488 00:22:22,800 --> 00:22:26,960 >> ומה בדרך כלל מאוחסן בקובץ ה זה לא שם המשתמש שלך, לא שלך 489 00:22:26,960 --> 00:22:31,060 סיסמא, בדרך כלל לא משהו רגיש, אלא אם כן אתר האינטרנט הוא לא כל כך 490 00:22:31,060 --> 00:22:35,040 טוב עם האבטחה שלהם, אלא זה מזהה ייחודי גדול בקרב 491 00:22:35,040 --> 00:22:35,680 דברים אחרים. 492 00:22:35,680 --> 00:22:38,920 זה מספר אקראי גדול שניטע עליך מחשב, אבל אתה יכול לחשוב עליו כ 493 00:22:38,920 --> 00:22:42,740 סוג של חותמת יד וירטואלית כמו מ מועדון או איזה פרק שעשועים ש 494 00:22:42,740 --> 00:22:47,160 מאפשר לצוות, הבעלים של ש שירות, לזכור מי אתה. 495 00:22:47,160 --> 00:22:51,030 אז אם המספר האקראי הגדול הוא כמו 12345678, אם כי זה כמובן 496 00:22:51,030 --> 00:22:54,180 לא יותר מדי אקראי, חשב על זה כ יד חותמת, כי כאשר אתה מבקר 497 00:22:54,180 --> 00:22:57,930 facebook.com בפעם הראשונה, הם להחתים מספר שעל היד שלך. 498 00:22:57,930 --> 00:23:01,510 ואז בגלל שאתה מדבר HTTP, אתה להיות דפדפן, ובגלל פייסבוק 499 00:23:01,510 --> 00:23:06,440 ברור שמדבר בדיוק כמו אינטרנט שרת, פרוטוקול HTTP, אומר כי 500 00:23:06,440 --> 00:23:09,930 בכל עת שלאחר מכן לבקר facebook.com, בין אם זה שני 501 00:23:09,930 --> 00:23:13,560 מאוחר יותר, כעבור שעה, גם ביום שלמחרת, כל עוד יש לך לא באופן מפורש 502 00:23:13,560 --> 00:23:17,050 יצא מהמערכת, אשר למעשה זה כמו לשטוף את הידיים. 503 00:23:17,050 --> 00:23:20,280 HTTP אומר שאתה צריך להציג אותך תמסור להחתים כל פעם שאתה 504 00:23:20,280 --> 00:23:22,020 לחזור לאתר זה. 505 00:23:22,020 --> 00:23:24,390 >> מה, אם כן, הוא פייסבוק שהם תסתכלו על זה יד וחותמת 506 00:23:24,390 --> 00:23:26,850 הם אומרים, אה, 123456789. 507 00:23:26,850 --> 00:23:30,260 אני לא יודע במבט הראשון שזה הוא דוד מלאן בקיימברידג', 508 00:23:30,260 --> 00:23:34,690 מסצ'וסטס, אבל הם יכולים לבדוק אותם מסד הנתונים ואומרים, הו, אדם 509 00:23:34,690 --> 00:23:39,930 במחשב שלו ששתלנו 123456789 הוא דוד מלאן מקיימברידג', 510 00:23:39,930 --> 00:23:40,440 מסצ'וסטס. 511 00:23:40,440 --> 00:23:46,000 בואו להראות למשתמש שאז הפרופיל שלו דף או אוסף החדשות שלו. 512 00:23:46,000 --> 00:23:49,660 >> אבל יש כאן בעיה אם זה איך האינטרנט אכן עובד. 513 00:23:49,660 --> 00:23:51,390 בואו נסתכל על דוגמא מהירה. 514 00:23:51,390 --> 00:23:55,190 בואו באמת ללכת לומר facebook.com. 515 00:23:55,190 --> 00:23:58,130 אבל לפני שאנחנו יכולים ללכת לשם, בואו לי ללכת קדימה ולפתוח את הכרום של 516 00:23:58,130 --> 00:23:59,790 מפקח כאן למטה. 517 00:23:59,790 --> 00:24:01,140 תן לי להסתכל על כרטיסיית הרשת. 518 00:24:01,140 --> 00:24:06,020 ועכשיו בואו נלך קדימה והקלד בhttps://facebook.com. 519 00:24:06,020 --> 00:24:09,410 ואני עושה את זה כל כך שאנחנו לא רואים כל אלה הפניות והפסולת 520 00:24:09,410 --> 00:24:10,660 זמן להסתכל דרך אותן. 521 00:24:10,660 --> 00:24:12,690 תן לי הקישו על Enter. 522 00:24:12,690 --> 00:24:13,130 >> בסדר. 523 00:24:13,130 --> 00:24:14,580 אנחנו רואים חבורה של בקשות. 524 00:24:14,580 --> 00:24:15,640 מגיע פייסבוק. 525 00:24:15,640 --> 00:24:16,930 יש חבורה של קבצים שלמה. 526 00:24:16,930 --> 00:24:19,290 והנה, לכל האזכור שלי הפעם האחרונה חביון, זה 527 00:24:19,290 --> 00:24:21,240 הרבה בקשות HTTP. 528 00:24:21,240 --> 00:24:23,700 אבל הראשון הוא כנראה המעניין ביותר. 529 00:24:23,700 --> 00:24:26,420 >> אז בואו לגלול למטה כאן, ו אני להתמקד בשנייה. 530 00:24:26,420 --> 00:24:29,090 זה הולך להיות סוג של בלגן, אבל בואו נראה. 531 00:24:29,090 --> 00:24:31,660 פייסבוק שולח לנו כל מיני דברים. 532 00:24:31,660 --> 00:24:33,490 >> אבל וואו, מעניין. 533 00:24:33,490 --> 00:24:37,880 הם נוטעים לא אחד, אלא ארבעה בולי יד אל היד שלי כאן. 534 00:24:37,880 --> 00:24:40,400 הגדרת עוגייה, הגדרת עוגייה, הגדרת עוגייה, הגדרת עוגייה. 535 00:24:40,400 --> 00:24:44,030 ויש כמה תכונות כאן. 536 00:24:44,030 --> 00:24:46,170 כולם להזכיר כמה סוג של פקיעה. 537 00:24:46,170 --> 00:24:50,090 וזה נראה כמו פייסבוק מקווה יזכור אותי עד 2015. 538 00:24:50,090 --> 00:24:53,670 אז זה כנראה הזמן שבו אני חייב להתנתק או שהם פשוט יהיו 539 00:24:53,670 --> 00:24:55,710 מניח באופן אוטומטי שאני לא חוזר. 540 00:24:55,710 --> 00:24:57,840 אז זה בעצם הגון כמות של זמן. 541 00:24:57,840 --> 00:24:59,170 >> ויש כמה אחר דברים קורה כאן. 542 00:24:59,170 --> 00:25:03,036 עוגייה זו נראית בכפייה נמחק באומרו שזה פג ב -1970 543 00:25:03,036 --> 00:25:04,460 לפני עוגיות על קיומם. 544 00:25:04,460 --> 00:25:06,510 אז הדפדפן הוא רק הולך להניח על אישור, זה כמו 545 00:25:06,510 --> 00:25:07,910 שוטף את חותמת הידיים. 546 00:25:07,910 --> 00:25:11,240 >> אולם כעת, כאשר הדפדפן שלי עושה בקשה הבאה - 547 00:25:11,240 --> 00:25:14,340 תנו לי ללכת ולעשות את זה שוב ורענן. 548 00:25:14,340 --> 00:25:18,170 עכשיו תנו לי לגלול חזרה ל בקשה עליונה ויורדים 549 00:25:18,170 --> 00:25:20,760 כאן, לבקש כותרות. 550 00:25:20,760 --> 00:25:21,390 הודעה זו. 551 00:25:21,390 --> 00:25:25,280 אז עכשיו אני לא תחת כותרות תגובה, אבל שמתי לב לזה, אומר כותרות בקשה. 552 00:25:25,280 --> 00:25:29,220 ושים לב שהדפדפן שלי, כחלק מ יש הבקשה שלה לאחר שפגע רענן 553 00:25:29,220 --> 00:25:32,780 שלח לפחות את הדברים הבאים מידע. 554 00:25:32,780 --> 00:25:34,670 לא הגדרת עוגייה, אבל עוגייה. 555 00:25:34,670 --> 00:25:38,750 אז זהו הקו, כותרת HTTP כך לדבר, שבו הדפדפן שלי הוא מעין 556 00:25:38,750 --> 00:25:43,340 שלי מבלי לדעת זאת הצגה היד שלי לבדיקה של פייסבוק. 557 00:25:43,340 --> 00:25:46,020 >> אז עוגיות אלה יכולים להיות השתמש אז בשביל מה? 558 00:25:46,020 --> 00:25:49,420 כדי לזכור מי אתה, או זוכר איך פעמים רבות אתה כבר שם, או 559 00:25:49,420 --> 00:25:50,280 באמת שום דבר. 560 00:25:50,280 --> 00:25:52,742 >> אז הנה counter.php. 561 00:25:52,742 --> 00:25:53,780 ותן לי להתמקד על הגופן. 562 00:25:53,780 --> 00:25:58,380 ובכל פעם שאני לטעון מחדש את הדף, הודעה זו זה לזכור כמה פעמים 563 00:25:58,380 --> 00:25:59,250 אני כבר שם. 564 00:25:59,250 --> 00:26:00,570 ובכן, זה לא כל כך מרשים. 565 00:26:00,570 --> 00:26:03,140 בואו נסגור כרטיסייה ש, ועכשיו בואו נחזור ל 566 00:26:03,140 --> 00:26:07,860 http://localhost/counter.php. 567 00:26:07,860 --> 00:26:08,970 >> אה, זה מעניין. 568 00:26:08,970 --> 00:26:10,960 זה עדיין זכר, גם למרות שאני סגרתי את הכרטיסייה. 569 00:26:10,960 --> 00:26:14,010 ולמען אמת, אם אני סוגר את הדפדפן, אם ייושם בדרך הנכונה, אני 570 00:26:14,010 --> 00:26:18,950 עדיין יכל לזכור כי משתמש זה הוא שהוא או היא הייתה בפעם הראשונה, ו 571 00:26:18,950 --> 00:26:22,840 רק פעם אחת אני נכנסתי לתפריט של הכרום, ה כאן הוא כאן, וללכת 572 00:26:22,840 --> 00:26:25,990 היסטוריה, ולחץ על נקה נתוני גלישה, כחלק מכם עשוי להיות ב 573 00:26:25,990 --> 00:26:33,050 בעבר, רק אז תהיה העוגיות שלך למעשה מחיקה באינטרנט 574 00:26:33,050 --> 00:26:33,970 פיתוח. 575 00:26:33,970 --> 00:26:35,340 >> לכן, אם אנחנו הולכים - 576 00:26:35,340 --> 00:26:37,080 בואו נסגור את gedit כאן. 577 00:26:37,080 --> 00:26:38,910 ואם אנחנו הולכים עכשיו לקובץ זה. 578 00:26:38,910 --> 00:26:44,210 תן לי להיכנס לשלנו vhosts / localhost / ציבורי, ונתת לי לעשות 579 00:26:44,210 --> 00:26:46,340 counter.php. 580 00:26:46,340 --> 00:26:48,350 שים לב כי מדובר בדי תכנית פשוטה. 581 00:26:48,350 --> 00:26:50,250 זה אתר די פשוט. 582 00:26:50,250 --> 00:26:51,770 >> כך שהחלק העליון של הקובץ רק הערות. 583 00:26:51,770 --> 00:26:54,930 אבל הנה קו חדש שאתה יכול ראיתי כבר בשבע להגדיר p-, 584 00:26:54,930 --> 00:26:56,000 session_start (). 585 00:26:56,000 --> 00:27:00,380 זו שורת קוד PHP ש בעצם אומר לשרת האינטרנט, לעשות 586 00:27:00,380 --> 00:27:03,400 הקפד להחתים את הידיים ולעשות הקפד לבדוק בולי יד. 587 00:27:03,400 --> 00:27:06,810 זה כל הקו שעושה, וזה עושה את כל תהליך שעבורנו. 588 00:27:06,810 --> 00:27:09,510 ואז שמתי לב רק שיש לי שני סניפים כאן. 589 00:27:09,510 --> 00:27:14,150 אם מפתח הדלפק הפנימי של זה משתנה הגלובלי מיוחד שנקרא 590 00:27:14,150 --> 00:27:18,010 _SESSION $ מוגדר - במילים אחרות, אם יש ערך כלשהו לשם - 591 00:27:18,010 --> 00:27:22,440 בואו לקבל אותו ולאחסן אותו במקומי משתנה בשם counter $. 592 00:27:22,440 --> 00:27:27,000 אחר, בואו להקצות דלפק $ ערך ברירת המחדל של 0. 593 00:27:27,000 --> 00:27:30,320 >> עכשיו הנה היבט של PHP אחד זה גם ברכה וקללה. 594 00:27:30,320 --> 00:27:32,080 PHP היא קצת מרושלת. 595 00:27:32,080 --> 00:27:35,160 אז אילו ב-C, מה היית עושה היקף הדלפק היה 596 00:27:35,160 --> 00:27:36,725 לא כאן ולא כאן? 597 00:27:36,725 --> 00:27:39,270 598 00:27:39,270 --> 00:27:41,690 >> זה היה מרותק לסוגריים המסולסלים האלה. 599 00:27:41,690 --> 00:27:42,090 נחש מה? 600 00:27:42,090 --> 00:27:46,920 ב-PHP, זה קיים גם מחוץ לאלה סוגריים מסולסלים, כאן, וכאן, 601 00:27:46,920 --> 00:27:49,120 וכאן, וכאן, ו אפילו למטה. 602 00:27:49,120 --> 00:27:52,400 אז אני אומר את זה הוא ברכה במובן שאתה לא צריך לחשוב כמו 603 00:27:52,400 --> 00:27:54,070 קשה כמו שעשינו לפני שבועות. 604 00:27:54,070 --> 00:27:56,880 אבל זה גם קצת קללה שב לא משנה איפה אתה משתמש במשתנה 605 00:27:56,880 --> 00:28:00,020 PHP, לפחות בתכנית כמו זו, זה בעולם נגיש עבור 606 00:28:00,020 --> 00:28:01,170 טוב או לרע. 607 00:28:01,170 --> 00:28:06,130 אז אתה צריך לזכור שבחברה המשתנים שלך לא יכולים להיות מוגדרים. 608 00:28:06,130 --> 00:28:07,640 ייתכן שהגדרת אותם במקום אחר. 609 00:28:07,640 --> 00:28:09,460 >> אבל מה שאני הולך לעשות סופו של דבר? 610 00:28:09,460 --> 00:28:13,160 אני הולך לאחסון פנימי של שגלובלי משתנה כערך של 611 00:28:13,160 --> 00:28:17,060 דלפק יקליד את התוצאה של עושה דלפק בתוספת 1. 612 00:28:17,060 --> 00:28:18,910 אז זה רק החשבון שעושה את 613 00:28:18,910 --> 00:28:20,590 incrementation של דלפק ש. 614 00:28:20,590 --> 00:28:24,850 והעובדה שאני אחסון ש ערך חזרה לכאן הוא אמצעי ל 615 00:28:24,850 --> 00:28:29,970 בעצם לעדכן את מסד הנתונים ל לזכור ש123456789 משתמשים כבר 616 00:28:29,970 --> 00:28:31,010 כאן שני פעמים. 617 00:28:31,010 --> 00:28:33,780 וכשאני עושה את זה שוב בפעם הבאה אני לטעון מחדש את הדף, זה הולך לבדוק 618 00:28:33,780 --> 00:28:36,710 היד החותמת שלי ואומר, הו, 123456789 משתמש יש עכשיו 619 00:28:36,710 --> 00:28:38,410 היה כאן שלוש פעמים. 620 00:28:38,410 --> 00:28:43,390 >> ואז מה PHP ושפות דומות עושים עבורנו הוא שהם להבין 621 00:28:43,390 --> 00:28:47,720 איך ואיפה ולכמה זמן כדי לאחסן ערכים בזה מיוחד 622 00:28:47,720 --> 00:28:48,830 superglobal. 623 00:28:48,830 --> 00:28:52,750 וזה superglobal בפעם הבאה שאני בקר בדף הוא סוג של קסם 624 00:28:52,750 --> 00:28:57,440 טרום מאוכלס, מלא בערכים ש היו שם בפעם האחרונה שבקר, 625 00:28:57,440 --> 00:29:02,310 אם זה היה לפני רגע, בשבוע לפני, או ב2013 ועכשיו אנחנו מדברים 626 00:29:02,310 --> 00:29:03,790 על 2015. 627 00:29:03,790 --> 00:29:07,600 PHP ואת הטיפול לקחת שרת האינטרנט מכל זה בשבילך. 628 00:29:07,600 --> 00:29:08,850 >> קהל: [לא ברור]. 629 00:29:08,850 --> 00:29:11,900 630 00:29:11,900 --> 00:29:15,760 >> DAVID מלאן: משתנים ב-PHP הם בעצם תמיד גלובלי, אלא אם כן 631 00:29:15,760 --> 00:29:18,400 להכריז עליהם פנימית של פונקציה, ואז הם מקומיים 632 00:29:18,400 --> 00:29:19,420 תפקידה היחיד. 633 00:29:19,420 --> 00:29:22,300 אבל מכיוון שלא אני כתבתי את כל פונקציות, הם עכשיו ביעילות 634 00:29:22,300 --> 00:29:25,090 הגלובלי לאורך כל הקובץ שלי כאן. 635 00:29:25,090 --> 00:29:26,040 >> קהל: האם יש דרך כדי להפוך אותם מקומיים? 636 00:29:26,040 --> 00:29:28,470 >> DAVID מלאן: האם יש דרך להפוך אותם למקומיים? 637 00:29:28,470 --> 00:29:30,680 רק על ידי עטיפתם לפונקציות. 638 00:29:30,680 --> 00:29:32,790 אשר בגרסה האחרונה של PHP, אתה יכול לעשות את זה עם 639 00:29:32,790 --> 00:29:34,130 פונקציה אנונימית. 640 00:29:34,130 --> 00:29:35,930 אבל עוד על כך ב הקשר של JavaScript. 641 00:29:35,930 --> 00:29:37,260 אבל התשובה הקצרה היא לא. 642 00:29:37,260 --> 00:29:40,888 תשובה ארוכה יותר היא כן. 643 00:29:40,888 --> 00:29:42,380 נחמד. 644 00:29:42,380 --> 00:29:43,380 שאלת חידון טובה. 645 00:29:43,380 --> 00:29:43,930 בסדר. 646 00:29:43,930 --> 00:29:47,760 >> אז לבסוף, הדף עצמו הוא בעצם די פשוט. 647 00:29:47,760 --> 00:29:51,470 שימו לב שברגע שאני נצא מהמצב PHP, זוכר שכל הדברים האלה למטה 648 00:29:51,470 --> 00:29:53,700 להלן הוא רק הולך לקבל לירוק מתוך גלם לדפדפן. 649 00:29:53,700 --> 00:29:57,050 וזה בסדר, כי אני רוצה לשלוח המשתמש קצת HTML, אבל אני רוצה 650 00:29:57,050 --> 00:29:59,140 לעדכן באופן דינמי HTML ש. 651 00:29:59,140 --> 00:30:03,930 ודרך היחידה שאני יכול לעשות את זה היא למיין של לרדת חזרה מהר מאוד לPHP 652 00:30:03,930 --> 00:30:07,730 מצב, סימן שאלת סוגר פתוח שימוש סימן שוויון, ואז להדפיס את הערך 653 00:30:07,730 --> 00:30:08,650 של דלפק. 654 00:30:08,650 --> 00:30:12,360 >> או אם זה נראה קצת לא ברור מאליהם, זה סימן שוויון הוא למעשה רק חלק 655 00:30:12,360 --> 00:30:16,190 סוכר תחבירי לכך printf (דלפק $). 656 00:30:16,190 --> 00:30:19,160 אבל בכנות, זה רק קטן ומכוער וקצת מעצבן להקלדה. 657 00:30:19,160 --> 00:30:23,660 אז PHP מאוד יפה מציע תכונה זו שבו אתה יכול פשוט להגיד את זה יותר 658 00:30:23,660 --> 00:30:25,450 בתמציתיות באותה הדרך. 659 00:30:25,450 --> 00:30:26,940 >> אז מה קורה מתחת למכסת המנוע? 660 00:30:26,940 --> 00:30:31,210 בואו נסתכל במהירות ברשת כרטיסייה כאן לcounter.php. 661 00:30:31,210 --> 00:30:35,090 ותן לי להמשיך וראשון בואו לנקות את העוגיות שלך. 662 00:30:35,090 --> 00:30:38,670 בואו נקה נתוני גלישה מאז תחילת הזמן. 663 00:30:38,670 --> 00:30:39,680 עכשיו בואו נחזור לכאן. 664 00:30:39,680 --> 00:30:41,340 עכשיו בואו לטעון מחדש את הדף. 665 00:30:41,340 --> 00:30:42,170 ואני שוב על אפס. 666 00:30:42,170 --> 00:30:44,810 בגלל יד החותמת שלי כבר נשטפה, עכשיו אני מקבל עוגייה חדשה. 667 00:30:44,810 --> 00:30:48,780 >> ואכן, אם אני מסתכל על כרטיסיית הרשת ו מסתכל על כותרות תגובה, הודעה 668 00:30:48,780 --> 00:30:51,960 כי המכשיר משולח אותי עוגייה ששמה הוא במידה מסוימת 669 00:30:51,960 --> 00:30:55,820 באופן שרירותי, אלא סוג של סביר, PHPSESSID. 670 00:30:55,820 --> 00:30:58,440 וזה שולח לי את זה באמת מספר אקראי גדול. 671 00:30:58,440 --> 00:30:59,440 זה לא ממש מספר. 672 00:30:59,440 --> 00:31:00,390 זה לא הקסדצימלי למדי. 673 00:31:00,390 --> 00:31:03,600 זה סוג כלשהו של מחרוזת אלפאנומריים, אבל יש להניח שזה אקראי. 674 00:31:03,600 --> 00:31:06,830 וזה יד החותמת כך לדבר שאני מתכוון. 675 00:31:06,830 --> 00:31:11,960 >> בינתיים, אם אני לוחץ על רענן ולאחר מכן מסתכל על שורה השנייה זה לשני שלי 676 00:31:11,960 --> 00:31:17,600 בקשה, הודעת החברה שהבקשה שלי כותרות כוללות PHPSESSID שווה את זה, 677 00:31:17,600 --> 00:31:19,390 לא עדכנתי את העוגיות, אבל רק עוגייה. 678 00:31:19,390 --> 00:31:22,950 וזה מצגת של הדפדפן שלי יד החותמת שלי. 679 00:31:22,950 --> 00:31:28,820 >> אז עכשיו בתור טיזר, ונדבר יותר על כך בשבוע או משהו כזה, אבל 680 00:31:28,820 --> 00:31:31,590 באיזה אופן זה גורם לך חשבון פייסבוק פגיע, 681 00:31:31,590 --> 00:31:34,137 פגיע, ואחרים, כגון חשבונות פגיעים? 682 00:31:34,137 --> 00:31:35,510 >> קהל: אם מישהו יש לו העוגייה שלך. 683 00:31:35,510 --> 00:31:36,750 >> DAVID מלאן: כן, אם מישהו יש העוגייה שלך. 684 00:31:36,750 --> 00:31:39,920 אני מתכוון באמת, כמו שחלק מכם אולי ניסיתי בכמו מועדון או 685 00:31:39,920 --> 00:31:44,030 פרק שעשועים, אם אתה מנסה משהו כמו זה כדי להעתיק את החותמת, אם כי 686 00:31:44,030 --> 00:31:47,560 לאחור על ידו של אדם אחר, ואז הוא או היא מציגה אותו כ 687 00:31:47,560 --> 00:31:53,250 משלהם, אם זה באמת נראה זהה 123456789, ולאחר מכן באינטרנט, 688 00:31:53,250 --> 00:31:57,980 שרת כנראה רק הולך סומך שהמשתמש שהוא אתה. 689 00:31:57,980 --> 00:32:01,450 >> ואת זה הוא אכן יסוד איום כל פעם שאתה משתמש בעוגיות 690 00:32:01,450 --> 00:32:05,420 כי אם מישהו רק זייף כל כך לדבר העוגייה שלך, מעריך את מה שהוא 691 00:32:05,420 --> 00:32:08,660 הוא, בין אם על ידי העתקתו באמת על ידי התבוננות במחשב שלך 692 00:32:08,660 --> 00:32:09,890 ולהיות כמו, בסדר. 693 00:32:09,890 --> 00:32:14,520 העוגייה של דוד היא JJ3JIK וכן הלאה, ולאחר מכן שהם חכמים מספיק כדי לדעת 694 00:32:14,520 --> 00:32:18,080 איך סוג של לשלוח באופן ידני כי עוגיות מדפדפן או מ 695 00:32:18,080 --> 00:32:22,350 תכנית שהם כותבים, הם לגמרי יכולים להיכנס לאתר כמו שאתה. 696 00:32:22,350 --> 00:32:28,560 זה לא כל כך קשה מתיימר להיות מישהו אחר, אלא אם כן אנחנו מחדש p-סט 697 00:32:28,560 --> 00:32:30,790 שני, שהציג את מה? 698 00:32:30,790 --> 00:32:32,065 >> קהל: קריפטוגרפיה. 699 00:32:32,065 --> 00:32:33,860 >> DAVID מלאן: קטן קצת הצפנה. 700 00:32:33,860 --> 00:32:36,550 הצפנה פשוטה, לפחות ב מהדורה סטנדרטית, אבל בסתר 701 00:32:36,550 --> 00:32:36,870 בכל זאת. 702 00:32:36,870 --> 00:32:37,410 פחות. 703 00:32:37,410 --> 00:32:41,440 אז מתברר אם להצפין את כל כותרות אלה באמצעות משהו שאתה 704 00:32:41,440 --> 00:32:48,770 אולי כעת יודע היותר מוכר SSL, שכבת שקע מאובטחת, או https:// כתובות, 705 00:32:48,770 --> 00:32:51,890 אז כל הדברים האלה אנחנו כבר מעיף מבט בעצם מוצפנים, 706 00:32:51,890 --> 00:32:54,800 מה שאומר שזה כמו שאתה לא יכול לקרוא את היד חותמת. 707 00:32:54,800 --> 00:32:59,350 רק facebook.com יכול, או google.com, או במקרה הזה, יכול המכשיר 708 00:32:59,350 --> 00:33:00,550 קרא שיד חותמת. 709 00:33:00,550 --> 00:33:04,020 >> למרבה הצער אם כי, ושוב, זה הוא מתאים מדי עם חומר NSA 710 00:33:04,020 --> 00:33:06,410 בזמן האחרון, גם ב-SSL הוא שביר. 711 00:33:06,410 --> 00:33:09,850 וזה בעצם לא כל כך קשה אפילו לפיצוח הצפנה ש. 712 00:33:09,850 --> 00:33:12,040 לא כל כך הרבה על ידי פיצוח ההצפנה, אבל על ידי הטעיית 713 00:33:12,040 --> 00:33:15,720 דפדפן לפענוח הנתונים בטרם עת. 714 00:33:15,720 --> 00:33:17,880 אבל שוב, אנחנו להקניט אותך עם זה לפני זמן רב. 715 00:33:17,880 --> 00:33:21,242 לעת עתה, רק לפחד. 716 00:33:21,242 --> 00:33:23,070 זה טרגי סוג של האמת. 717 00:33:23,070 --> 00:33:23,760 >> בסדר. 718 00:33:23,760 --> 00:33:27,910 אז, איפה זה עכשיו משאיר אותנו? 719 00:33:27,910 --> 00:33:29,010 ובכן, בואו נעשיתי את זה. 720 00:33:29,010 --> 00:33:31,790 בואו נלך קדימה ולקחת מהיר טיזר לפני שאנחנו לוקחים הפסקה. 721 00:33:31,790 --> 00:33:33,790 ואני חושב שאנחנו להתעכב עוד קצת היום, אבל אנחנו הולכים לצלול לתוך 722 00:33:33,790 --> 00:33:37,850 משהו חדש וסקסי, אשר יהיה לגרות את התיאבון לעוד יותר. 723 00:33:37,850 --> 00:33:38,950 אז זה טיזר. 724 00:33:38,950 --> 00:33:41,520 >> אז SQL, התחלנו לדבר על פעם כל כך בפעם האחרונה לזמן קצר. 725 00:33:41,520 --> 00:33:44,670 אתה באמת לקבל את הידיים מלוכלכות עם חלק ממנו בשבע להגדיר p-. 726 00:33:44,670 --> 00:33:46,480 ובמונחים של ההדיוטות, מה עושה SQL - 727 00:33:46,480 --> 00:33:47,110 S-Q-L - 728 00:33:47,110 --> 00:33:49,850 לעשות בשבילך? 729 00:33:49,850 --> 00:33:50,310 מה זה? 730 00:33:50,310 --> 00:33:51,546 כן. 731 00:33:51,546 --> 00:33:53,240 >> קהל: בואו הגישה לנתוניך. 732 00:33:53,240 --> 00:33:53,360 >> DAVID מלאן: כן. 733 00:33:53,360 --> 00:33:55,120 זה בוא הגישה לנתוניך במסד נתונים. 734 00:33:55,120 --> 00:33:56,710 שפת שאילתות מובנית. 735 00:33:56,710 --> 00:33:59,890 ואת זה הוא במהותו שפת תכנות. 736 00:33:59,890 --> 00:34:03,400 ישנן תכונות שלו ש אנחנו אפילו לא נשתמש בכיתה. 737 00:34:03,400 --> 00:34:04,710 אבל אתה יכול, למעשה, להגדיר פונקציות. 738 00:34:04,710 --> 00:34:06,870 הם נקראים מאוחסנים נהלים ב-SQL. 739 00:34:06,870 --> 00:34:09,860 אבל תשמור אותו פשוט למדי ופשוט להשתמש בו לכמה פעולות בסיסיות 740 00:34:09,860 --> 00:34:14,320 כמו בחירת נתונים, הכנסת נתונים, עדכון הנתונים, ומחיקה של נתונים. 741 00:34:14,320 --> 00:34:17,400 >> ואתה באמת יכול לחשוב על מסד הנתונים, כמו מסד נתונים SQL, כפי שרק 742 00:34:17,400 --> 00:34:18,800 להיות Microsoft Excel. 743 00:34:18,800 --> 00:34:21,989 בגלל SQL מתייחס ליחסים בסיס הנתונים, שבו 744 00:34:21,989 --> 00:34:23,480 ביחס רק אומר שולחנות. 745 00:34:23,480 --> 00:34:24,739 שורות ועמודות. 746 00:34:24,739 --> 00:34:27,929 אז כל דבר שאתה יכול לשים בגיליון אלקטרוני כמו Google Docs זה או, 747 00:34:27,929 --> 00:34:32,460 אתה יכול לשים לתוך מסד נתונים SQL על ידי הכרזה על שולחן. 748 00:34:32,460 --> 00:34:34,800 >> עכשיו, איך אתה בעצם לגשת מידע זה? 749 00:34:34,800 --> 00:34:38,239 ובכן, עם פקודות או שאילתות כמו זה. 750 00:34:38,239 --> 00:34:40,199 SELECT, INSERT, לעדכן ולמחוק. 751 00:34:40,199 --> 00:34:44,489 ולרוב, אלה הם ארבעת מרכיבים בלבד תצטרכו 752 00:34:44,489 --> 00:34:47,370 לעשות משהו די בעוצמה בבעיה להגדיר שבע. 753 00:34:47,370 --> 00:34:49,940 >> עכשיו בחזרה באותו היום, אתה בעצם היית אינטראקציה עם מסד נתונים ב 754 00:34:49,940 --> 00:34:52,730 חלון מסוף שחור ולבן ב הפקודה מהבהבת כמו זה. 755 00:34:52,730 --> 00:34:56,370 ומסד הנתונים שאנחנו פועלים על מכשיר נקרא MySQL, שהוא 756 00:34:56,370 --> 00:34:58,560 מנוע מסד הנתונים חופשי וקוד פתוח. 757 00:34:58,560 --> 00:35:02,240 אם תחפש בגוגל ולקרוא את ויקיפדיה מאמר, אתה יודע שהשם הוא 758 00:35:02,240 --> 00:35:05,060 קצת מעבר לכמה גרסאות של לינוקס. 759 00:35:05,060 --> 00:35:10,460 מסד הנתונים מריה הוא למעשה מזלג כביכול של MySQL. 760 00:35:10,460 --> 00:35:12,740 >> סיפור ארוך קצר, אורקל קנתה MySQL. 761 00:35:12,740 --> 00:35:13,870 אורקל היא חברה גדולה. 762 00:35:13,870 --> 00:35:17,010 אנשים כבר חששו שזה היה כבר לא יישאר די פתוח כמו מקור, 763 00:35:17,010 --> 00:35:20,930 אז זה רק עותק של MySQL זה עדיין חופשי, עדיין קוד פתוח, ו 764 00:35:20,930 --> 00:35:23,550 התקין בפדורה לינוקס כברירת מחדל. 765 00:35:23,550 --> 00:35:26,130 >> אבל זה סוג של כאב ב צוואר להכיר 766 00:35:26,130 --> 00:35:27,310 מסד הנתונים בדרך זו. 767 00:35:27,310 --> 00:35:30,560 אז אנחנו כוללים במכשיר CS50 כלי קוד פתוח חינמי בשם 768 00:35:30,560 --> 00:35:31,700 phpMyAdmin. 769 00:35:31,700 --> 00:35:33,940 רק צירוף מקרים ש זה כתוב ב-PHP. 770 00:35:33,940 --> 00:35:36,450 אין יסוד צריך עבור PHP כאן. 771 00:35:36,450 --> 00:35:40,090 אבל זה רק כלי מבוסס אינטרנט ה אנחנו להוריד בחינם, מותקנים ב 772 00:35:40,090 --> 00:35:43,850 המכשיר, שמאפשר לנו יש ממשק משתמש גרפי שבה 773 00:35:43,850 --> 00:35:48,610 כדי לחקור את מסד הנתונים להגדיר עמ 'ושבע עם אשר ליצירת מסדי נתונים חדשים, 774 00:35:48,610 --> 00:35:51,980 לומר לפרויקט הגמר שלך אם אתה הייתי כמו, וסופו של דבר ליצור 775 00:35:51,980 --> 00:35:55,900 אתרים דינמיים כמו CS50 האוצר המאפשרים לך לבצע שאילתות נתונים ו 776 00:35:55,900 --> 00:35:58,140 לעדכן את הנתונים באופן דינמי. 777 00:35:58,140 --> 00:36:01,420 >> אתה לא תצטרך להשתמש רק קובץ טקסט פשוט או CSV. 778 00:36:01,420 --> 00:36:05,950 למעשה אתה יכול להשתמש במסד נתונים חכם תכנית, כך שאתה יכול לבצע יותר 779 00:36:05,950 --> 00:36:10,240 שאילתות מתוחכמות מאשר רק לקרוא דרך כל דבר באופן ליניארי. 780 00:36:10,240 --> 00:36:14,150 >> כך למשל, זה מה שאנחנו נותנים לי אתה מחוץ לקופסה לשבעה להגדיר p-. 781 00:36:14,150 --> 00:36:18,280 זה שולחן עם לפחות למראית העין שלושה טורים, שאחד מהם הוא 782 00:36:18,280 --> 00:36:21,450 שם משתמש, אחד מהם הוא חשיש, והשני שבם הוא מזהה. 783 00:36:21,450 --> 00:36:26,200 >> אבל הדבר המעניין, ורק כדי להקניט את המחשבה אחת כאן, שם משתמש 784 00:36:26,200 --> 00:36:29,270 הוא ככל הנראה ייחודי כבר, נכון? 785 00:36:29,270 --> 00:36:31,190 אני מתכוון, רוב כל אתר אינטרנט, אם יש לך שם משתמש, יש 786 00:36:31,190 --> 00:36:32,370 לא יכול להיות שני קיסרים. 787 00:36:32,370 --> 00:36:33,440 לא יכול להיות שיש שני Malans. 788 00:36:33,440 --> 00:36:34,950 לא יכול להיות שיש שתי jharvards. 789 00:36:34,950 --> 00:36:35,600 הייחודי שלה. 790 00:36:35,600 --> 00:36:38,610 אחרת, הם לא יודעים איזה jharvard זה בעצם. 791 00:36:38,610 --> 00:36:42,710 אז מה יכול להיות המניע לגם בעל טור שלישי מהשמאל 792 00:36:42,710 --> 00:36:46,970 מזהה שם בשם, שנראה כמו מספר זה דומה ייחודי? 793 00:36:46,970 --> 00:36:51,300 זה מרגיש קצת מיותר לי במבט ראשון. 794 00:36:51,300 --> 00:36:54,910 למה שזה עשוי להיות משכנע ליש לי לא רק שמות משתמש ייחודיים, 795 00:36:54,910 --> 00:36:56,837 אבל גם מספרים ייחודיים? 796 00:36:56,837 --> 00:36:59,460 >> קהל: יש להם יכולים באותה הסיסמה. 797 00:36:59,460 --> 00:37:01,720 >> DAVID מלאן: אנשים שאולי יש לי באותה הסיסמה, בטח. 798 00:37:01,720 --> 00:37:03,900 זה בהחלט יכול לקרות. 799 00:37:03,900 --> 00:37:08,270 אבל אם יש להם את שם המשתמש ייחודי זה, אני הייתי טוען שזה לא ממש 800 00:37:08,270 --> 00:37:11,630 עניין, כי אם הם להקלידם שם משתמש, אני רק צריך לבודקם 801 00:37:11,630 --> 00:37:15,060 סיסמא, החשיש ממנו. 802 00:37:15,060 --> 00:37:15,970 אחרת, למה? 803 00:37:15,970 --> 00:37:17,950 >> קהל: חיפוש מהיר יותר. 804 00:37:17,950 --> 00:37:18,680 >> DAVID מלאן: חיפוש מהיר יותר. 805 00:37:18,680 --> 00:37:19,548 למה? 806 00:37:19,548 --> 00:37:21,460 >> קהל: זיהוי הוא רק אחד. 807 00:37:21,460 --> 00:37:24,040 >> DAVID מלאן: הזהות היא רק תו אחד, או לייתר דיוק, זה מספר, 808 00:37:24,040 --> 00:37:26,910 אז זה כנראה 32 ביטים או משהו כזה. 809 00:37:26,910 --> 00:37:30,270 ואילו שם המשתמש, ג'ייסון כנראה עד של הירשהורן יש סוג של 810 00:37:30,270 --> 00:37:33,900 גיחוך ארוך, וזה הולך תיקח לי הרבה יותר זמן למחרוזת 811 00:37:33,900 --> 00:37:40,910 להשוות H-I-R-S-C-H-H-O-R-N, ואולי / 0 או משהו כזה, כדי 812 00:37:40,910 --> 00:37:45,100 כדי לחפש את ג'ייסון, בניגוד לרק אומר לי את מספר משתמשים שתיים. 813 00:37:45,100 --> 00:37:46,510 זה 32 סיביות. 814 00:37:46,510 --> 00:37:48,550 זה INT אחד ש אתה צריך להשוות. 815 00:37:48,550 --> 00:37:52,150 ואכן, זה בדיוק למה מסדי נתונים נוטה להקצות מזהים ייחודיים 816 00:37:52,150 --> 00:37:53,710 שורות בהם. 817 00:37:53,710 --> 00:37:56,280 >> עכשיו מה הם סוגי נתונים אחרים שיש חוץ מזה INT וכנראה 818 00:37:56,280 --> 00:37:57,160 מחרוזות כזה? 819 00:37:57,160 --> 00:37:59,700 ובכן, כדי להיות ראוי יותר, מסדי נתונים של SQL, כמו 820 00:37:59,700 --> 00:38:02,060 MySQL, יש לי שדות CHAR. 821 00:38:02,060 --> 00:38:05,320 ותו קצת מטעה לא CHAR אחד. 822 00:38:05,320 --> 00:38:10,290 שדה CHAR במסד נתוני MySQL הוא תו אחד או יותר, אבל זה 823 00:38:10,290 --> 00:38:11,780 מספר קבוע של תווים. 824 00:38:11,780 --> 00:38:15,710 >> כך למשל, אם אני ניגש phpMyAdmin כפי שאתה אולי כבר, או 825 00:38:15,710 --> 00:38:21,340 בקרוב בעיה להגדיר שבע, ואני הולך לאתר שלי, ורק בשביל כיף, 826 00:38:21,340 --> 00:38:25,700 בואו ליצור טבלה חדשה בשם לבדוק עם רק שתי עמודות. 827 00:38:25,700 --> 00:38:27,160 אז אני יהיה לחץ על בצע. 828 00:38:27,160 --> 00:38:30,070 וזה יהיה מוכר למדי, במיוחד כפי שאתה להתעסק 829 00:38:30,070 --> 00:38:31,130 סביבך בעצמך. 830 00:38:31,130 --> 00:38:34,140 כאן אני יכול להקליד מזהה כדי ליצור טבלה חדשה של INT הסוג. 831 00:38:34,140 --> 00:38:37,770 אבל כאן אני יכול להקליד את שם המשתמש כדי לשחזר ששולחן קודם לכן. 832 00:38:37,770 --> 00:38:40,700 ושים לב שיש לי כל חבורה של סוגים לבחירה. 833 00:38:40,700 --> 00:38:43,610 >> וזה גם למה phpMyAdmin הוא סוג של נחמד. 834 00:38:43,610 --> 00:38:46,770 זה סוג של לימוד עצמי בכך שאתה יכול פשוט סוג של נקודה, ולחץ, ו 835 00:38:46,770 --> 00:38:50,730 מסתכל על תפריטים הנפתחים, ולהסיק מן כי מה סמכויות SQL נותן לך. 836 00:38:50,730 --> 00:38:54,090 >> ואכן, אם אני בוחר CHAR, אז אני יש לציין את האורך, או איך 837 00:38:54,090 --> 00:38:55,940 ערכים רבים, תווים כמה. 838 00:38:55,940 --> 00:39:00,090 ערכים כל כך נפוצים מאוד הם דברים כמו 255, אבל זה קצת ארוך. 839 00:39:00,090 --> 00:39:02,250 בדרך כלל הוא שמונה לשם משתמש. 840 00:39:02,250 --> 00:39:03,590 אבל זה קצת קטן בימים אלה. 841 00:39:03,590 --> 00:39:05,430 אז זו החלטת עיצוב. 842 00:39:05,430 --> 00:39:08,630 האם זה 8 תווים לכל היותר, 32, 255, 1,000? 843 00:39:08,630 --> 00:39:09,830 זה באמת תלוי בך. 844 00:39:09,830 --> 00:39:12,350 אבל שדה CHAR הוא מספר קבוע. 845 00:39:12,350 --> 00:39:16,420 אז לבחור מעט מדי ואתה סוג של דפוק אם אתה רוצה את שם משתמש של עוד. 846 00:39:16,420 --> 00:39:19,132 בחר רבים מדי ומה החסרון? 847 00:39:19,132 --> 00:39:20,820 >> קהל: [לא ברור]. 848 00:39:20,820 --> 00:39:21,620 >> DAVID מלאן: זה בזבזני. 849 00:39:21,620 --> 00:39:24,835 בדיוק כמו ב-C, אם יש לך יותר גדול נתח של זיכרון ממה שאתה צריך, אתה 850 00:39:24,835 --> 00:39:27,190 סתם מבזבז את הזמן ומבזבז את החלל. 851 00:39:27,190 --> 00:39:31,430 אז כחלופה, קיים Varchar, אשר פותר בעיה זו על ידי 852 00:39:31,430 --> 00:39:36,390 טיפול באורך לא כאורך קבוע, אלא כאורך מרבי, ובאמצעות 853 00:39:36,390 --> 00:39:40,990 מספר משתנה של תווים, אשר לאחר מכן נוטה להשתמש בתווים רק רבים ככל שאתה 854 00:39:40,990 --> 00:39:42,710 צריכים באמת. 855 00:39:42,710 --> 00:39:43,670 זה נשמע מושלם. 856 00:39:43,670 --> 00:39:45,640 >> למה שלא להיפטר נתונים CHAR הקלד אז? 857 00:39:45,640 --> 00:39:48,500 מה יכול להיות החסרון של באמצעות VARCHARs, שנשמע 858 00:39:48,500 --> 00:39:51,644 כמו שזה נצחון יפה? 859 00:39:51,644 --> 00:39:52,596 כן? 860 00:39:52,596 --> 00:39:53,846 >> קהל: [לא ברור]. 861 00:39:53,846 --> 00:39:57,360 862 00:39:57,360 --> 00:39:57,790 >> DAVID מלאן: בסדר, טוב. 863 00:39:57,790 --> 00:40:01,101 אז אם כל הנתונים שלך הוא אותו אורך, מה החשש? 864 00:40:01,101 --> 00:40:05,250 >> קהל: מכיוון שאתה מבזבז נתונים באומרו את כולם. 865 00:40:05,250 --> 00:40:09,060 >> DAVID מלאן: אז אם כל הנתונים שלך הוא באותו האורך, אם כי, ברצוני לטעון 866 00:40:09,060 --> 00:40:12,300 שמפרט אורך מרבי על varchar אינו שונה מ 867 00:40:12,300 --> 00:40:16,070 ציון אורך קבוע על CHAR אם אתה יודע את המספר הזה מראש. 868 00:40:16,070 --> 00:40:19,500 אבל יש אכן, ואני סוג של לחלץ מתשובה שהמציאות 869 00:40:19,500 --> 00:40:22,610 כי יש עדיין מקסימום, שיכול להיות מעצבן, במיוחד אם אתה 870 00:40:22,610 --> 00:40:25,920 נתקל בשמו של אדם זה ארוך במיוחד שאתה לא 871 00:40:25,920 --> 00:40:26,860 צופה. 872 00:40:26,860 --> 00:40:31,420 וזה גם קצת פחות יעיל לחפש דווקא בVARCHARs כמו 873 00:40:31,420 --> 00:40:35,620 בניגוד לתווי חיפוש, במיוחד לשולחנות ארוכים שיש לי המון ו 874 00:40:35,620 --> 00:40:36,510 המון נתונים. 875 00:40:36,510 --> 00:40:40,060 גם כאן אז, נושאיות היא שוב לא בחירה מובנת מאליה. 876 00:40:40,060 --> 00:40:42,870 >> אז רק כדי לתת לך תחושה של אחרים סוגי נתונים שעשויות להיות עניין 877 00:40:42,870 --> 00:40:45,400 גם עבור להגדיר עמ 'ושבע או ב בעתיד, יש INT. 878 00:40:45,400 --> 00:40:47,270 יש bigint, אשר זה כמו עוד ארוך. 879 00:40:47,270 --> 00:40:48,880 הוא נוטה להיות 64 סיביות. 880 00:40:48,880 --> 00:40:51,640 יש עשרוני, שבו אתה תראה ב סט הבעיה, שהוא הרבה יותר 881 00:40:51,640 --> 00:40:55,300 תשובה נקיה לבעיותינו נתקל עם מצוף וצף 882 00:40:55,300 --> 00:40:55,980 להצביע חוסר דיוק. 883 00:40:55,980 --> 00:40:57,390 ויש גם את התאריך ושעה. 884 00:40:57,390 --> 00:41:01,530 יש פשוטו כמשמעו, סוג הנתונים שיש להיראות כמו שנה, חודש, יום, 885 00:41:01,530 --> 00:41:03,730 ושעה, דקה ושנייה. 886 00:41:03,730 --> 00:41:07,470 >> אבל מסדי נתונים של SQL יש גם דברים שאנחנו נתקשר אינדקסים. 887 00:41:07,470 --> 00:41:11,630 ומדד הוא משהו שאתה לציין בעת ​​יצירת הטבלה 888 00:41:11,630 --> 00:41:15,720 להפוך את החיפושים ופעולות אחרות יעיל יותר. 889 00:41:15,720 --> 00:41:18,550 באופן ספציפי, יש משהו שנקרא המדד העיקרי שאתה יכול 890 00:41:18,550 --> 00:41:19,440 מצהיר כדלקמן. 891 00:41:19,440 --> 00:41:22,330 >> אנחנו עשינו את זה בשבילך עם שולחן משתמשים אנחנו נותנים לך. 892 00:41:22,330 --> 00:41:26,160 אבל שם לב אם היינו יצירה מחדש באופן ידני שולחן המשתמשים כאן נותן 893 00:41:26,160 --> 00:41:27,110 זה שמו של משתמשים. 894 00:41:27,110 --> 00:41:28,125 אני כבר צוין זהות. 895 00:41:28,125 --> 00:41:29,330 אני צוין INT. 896 00:41:29,330 --> 00:41:32,000 אני צוין שם משתמש עם 32 תווים לכל היותר. 897 00:41:32,000 --> 00:41:36,140 אבל אם אנחנו שומרים גלילה בזה די חלון רחב, שים לב שיש 898 00:41:36,140 --> 00:41:38,260 חבורה של דברים אחרים שאני יכול לציין. 899 00:41:38,260 --> 00:41:40,950 >> אחד, אני יכול לציין תכונות כאילו, אתה יודע מה, זה 900 00:41:40,950 --> 00:41:42,190 INT צריך להיות לא חתום. 901 00:41:42,190 --> 00:41:45,510 אני לא רוצה שמספרים שליליים, אז בואו נעשה את זה לא חתום. 902 00:41:45,510 --> 00:41:48,660 Null הוא לא רלוונטי כאן, כי אני רוצה שכל משתמש 903 00:41:48,660 --> 00:41:49,640 יש מספר ייחודי. 904 00:41:49,640 --> 00:41:50,830 אני לא רוצה שזה יהיה ריק. 905 00:41:50,830 --> 00:41:52,330 >> אבל זה מעניין. 906 00:41:52,330 --> 00:41:57,780 אני יכול לציין שזיהוי הוא גם מפתח ראשי של מסד נתונים זה, או שזה 907 00:41:57,780 --> 00:42:00,620 ייחודי, או שזה באינדקס, או טקסט מלא. 908 00:42:00,620 --> 00:42:05,630 אז למטרות של היום, סיפור ארוך בקיצור, יסודי אומר שיקבע זה 909 00:42:05,630 --> 00:42:10,570 להיות קונספטואלית והן מבחינה טכנית תחום שאנו משתמשים לייחודיים 910 00:42:10,570 --> 00:42:12,140 זיהוי משתמשים. 911 00:42:12,140 --> 00:42:16,140 >> לכן, כאשר אנחנו מסתכלים על משתמשים, זה סוג הבטחה לחפש אותם בעיקר על ידי 912 00:42:16,140 --> 00:42:17,370 שמזהה ייחודי. 913 00:42:17,370 --> 00:42:21,930 ומסד הנתונים יבטיחו שאם אתה יש מספר משתמשים 3, אתה לא יכול 914 00:42:21,930 --> 00:42:25,400 מבחינה פיזית להכניס משתמש אחר עם זה אותו מספר 3. 915 00:42:25,400 --> 00:42:28,380 מסד נתונים פשוט יסרבו כדי לשמור את השינויים. 916 00:42:28,380 --> 00:42:32,310 וזה דבר טוב, כי אתה יכול להגן על עצמך מעצמך. עצמי 917 00:42:32,310 --> 00:42:34,270 >> לחלופין, עבור שם משתמש. 918 00:42:34,270 --> 00:42:37,670 אז בשורה השנייה, כזכור, הוא שדה שם המשתמש. 919 00:42:37,670 --> 00:42:41,860 אז בשורה השנייה כאן היא שם משתמש, כפי שעשינו בשמאל הקיצוני שם. 920 00:42:41,860 --> 00:42:43,940 >> אז מה עוד יכול אני רוצה לציין? 921 00:42:43,940 --> 00:42:47,840 אסור לי, על פי SQL, כדי לציין את שני מפתחות ראשיים. 922 00:42:47,840 --> 00:42:50,750 באפשרותך לציין מפתח משותף שבו אתה תסתכלו על שני השדות, אבל הם לא יכולים 923 00:42:50,750 --> 00:42:52,260 בנפרד יהיה מפתחות ראשיים. 924 00:42:52,260 --> 00:42:54,750 אז זה לא בא בחשבון. 925 00:42:54,750 --> 00:42:56,040 כך שאולי אני רוצה לבחור? 926 00:42:56,040 --> 00:42:59,710 >> ובכן, ייחודי הוא דומה ברוח מפתח הראשי שבו אתה מציין את זה 927 00:42:59,710 --> 00:43:03,570 שדה יהיה ייחודי, אבל זה לא הולך להיות אחד 928 00:43:03,570 --> 00:43:04,410 אני משתמש כל הזמן. 929 00:43:04,410 --> 00:43:08,450 ואנחנו לא מתכוונים להשתמש בזה לכל אחד זמן מה סיבה שוב? 930 00:43:08,450 --> 00:43:10,490 זה איטי יותר שעלול להיות אם זה שם משתמש של ארוך. 931 00:43:10,490 --> 00:43:11,740 זה פשוט בזבוז הזמן. 932 00:43:11,740 --> 00:43:16,140 >> מדד, בינתיים, מציין שזה לא הולך להיות ייחודיים, אבל הייתי רוצה 933 00:43:16,140 --> 00:43:19,470 לך לעבוד בקסם שלך מתחת מכסה המנוע כדי לעשות את זה יותר מהר בשבילי 934 00:43:19,470 --> 00:43:21,420 לחפש בתחום זה. 935 00:43:21,420 --> 00:43:23,320 אז זה כנראה לא רלוונטי כאן. 936 00:43:23,320 --> 00:43:26,500 עבור שם משתמש, הייתי טוען כי ייחודי היא תשובה טובה. 937 00:43:26,500 --> 00:43:31,200 אבל נניח שאנחנו עשינו יותר משתמשים מעניין מאשר רק שמות משתמש, 938 00:43:31,200 --> 00:43:32,430 hashes, ומספרי זהות. 939 00:43:32,430 --> 00:43:33,860 מה אם נתנו לאנשים שמות מלאים? 940 00:43:33,860 --> 00:43:37,700 מה אם נתנו להם מטפל ונתונים אחרים עליהם? 941 00:43:37,700 --> 00:43:43,360 >> ובכן, אם אתה מציין שעמודה ב מסד הנתונים הוא באינדקס, זה אומר ש 942 00:43:43,360 --> 00:43:47,730 MySQL, או אורקל, או מה שמסד הנתונים אתה משתמש צריך, לעבוד הקסם שלה 943 00:43:47,730 --> 00:43:51,300 ולהשתמש בסוג כלשהו של נתונים מהודרים מבנה דמוי עץ, או trie, או 944 00:43:51,300 --> 00:43:55,940 שולחן חשיש, או משהו על מנת להבטיח כי כאשר אתה לחפש את נתונים באמצעות 945 00:43:55,940 --> 00:43:58,150 בחר בתחום מסוים ש-- 946 00:43:58,150 --> 00:44:01,310 רוצה להראות לי את כולם כי חיים ברחוב אוקספורד. 947 00:44:01,310 --> 00:44:02,540 השאילתה כזה. 948 00:44:02,540 --> 00:44:06,250 אם ציין מראש כי אתה רוצה מדד בתחום זה, 949 00:44:06,250 --> 00:44:09,050 חיפושים יהיו הרבה, הרבה יותר מהר. 950 00:44:09,050 --> 00:44:12,090 >> אם לא תציין מדד, את הטוב ביותר אתה יכול לעשות הוא חיפוש ליניארי אם 951 00:44:12,090 --> 00:44:13,030 זה לא מיון. 952 00:44:13,030 --> 00:44:16,220 אבל אם אתה מציין מדד, חכם אנשים שעשו את מסד הנתונים - 953 00:44:16,220 --> 00:44:19,340 אנשים כמוך שעכשיו יודעים עצים ומנסה ושולחנות חשיש - 954 00:44:19,340 --> 00:44:23,220 באופן אוטומטי לבנות כזה נתונים מבנה בזכרון RAM על מנת לוודא כי 955 00:44:23,220 --> 00:44:26,050 החיפושים האלה הם הרבה יותר מהר. 956 00:44:26,050 --> 00:44:29,660 >> FULLTEXT בינתיים הוא דומה ברוח, אך מאפשר לך לעשות כללי 957 00:44:29,660 --> 00:44:35,480 חיפושים, רוצים להראות לי את כולם כי חיים ברחובות שמתחילים עם 958 00:44:35,480 --> 00:44:36,960 אות O כל סיבה שהיא. 959 00:44:36,960 --> 00:44:38,850 אתה יכול לעשות חיפושים כלליים אוהב את זה. 960 00:44:38,850 --> 00:44:45,880 דברים או משכנעים, יותר כמו תכנית לי כל מי שיש לו את המילה - 961 00:44:45,880 --> 00:44:49,400 תראה לי כולם ששמה מתחיל עם אות מסוימת. 962 00:44:49,400 --> 00:44:51,880 אתה יכול לחפש מילות מפתח בדרך זו. 963 00:44:51,880 --> 00:44:52,630 בסדר. 964 00:44:52,630 --> 00:44:55,760 >> אז, הזדמנויות עיצוב יש פוטנציאל. 965 00:44:55,760 --> 00:44:57,740 ישנם אחרים שאני לנופף בידות שלי. 966 00:44:57,740 --> 00:45:00,530 מסתבר שאתה יכול להיות מנועי אחסון שונים. 967 00:45:00,530 --> 00:45:04,390 וזה יותר ממה שאנחנו צריכים מסתורי בהחלט לבעיה להגדיר שבע. 968 00:45:04,390 --> 00:45:06,920 כברירת מחדל, אתם משתמשים משהו שנקרא InnoDB. 969 00:45:06,920 --> 00:45:10,910 אתה תראה אזכור של זה איפשהו ב הממשק של phpMyAdmin הסביר ביותר. 970 00:45:10,910 --> 00:45:14,130 אבל יודע שיש עיצוב אחר החלטות שהם של פוטנציאל 971 00:45:14,130 --> 00:45:18,030 עניין לבוא פרויקטי גמר אם אתה עושה משהו מבוסס אינטרנט. 972 00:45:18,030 --> 00:45:19,330 >> אבל בואו נעשה את זה. 973 00:45:19,330 --> 00:45:23,130 בואו נלך קדימה ולשים את זה על מסך כטיזר לסיפור 974 00:45:23,130 --> 00:45:26,330 המעורב, שותף לחדר, וכוס חלב. 975 00:45:26,330 --> 00:45:28,240 בואו ניקח שתי דקות או כך לשבור כאן. 976 00:45:28,240 --> 00:45:31,060 ואם אתה יכול להישאר בסביבה, בואו נבוא בחזרה, נראה קצת יותר בSQL, ו 977 00:45:31,060 --> 00:45:35,160 אז קצת עם JavaScript P-להגדיר שמונה בראש. 978 00:45:35,160 --> 00:45:36,120 >> בסדר. 979 00:45:36,120 --> 00:45:40,420 אז, בואו לגרום לך לחשוב על מקרה פינה שיכול בקלות רבה מתעוררים 980 00:45:40,420 --> 00:45:44,240 בהקשר של שימוש במסד נתונים, או למען האמת, גם באמצעות עולם אמיתי דברים 981 00:45:44,240 --> 00:45:46,280 אוהב כספומטים כדי לקבל את הכסף. 982 00:45:46,280 --> 00:45:47,640 אז הנה מקרר. 983 00:45:47,640 --> 00:45:50,040 נניח שיש לך אחד יותר מדי ב המעונות שלך או בביתך. 984 00:45:50,040 --> 00:45:54,990 ויש לך שותף לחדר אחד, ושניהם אתה באמת אוהב חלב למשל. 985 00:45:54,990 --> 00:45:57,210 >> אז אתה חוזר הביתה מכיתת יום אחד. 986 00:45:57,210 --> 00:45:58,490 הוא או היא עדיין לא חזרה. 987 00:45:58,490 --> 00:45:59,180 אתה פותח את המקרר. 988 00:45:59,180 --> 00:46:00,870 אתה באמת רוצה כוס גדולה של חלב. 989 00:46:00,870 --> 00:46:01,820 אין חלב. 990 00:46:01,820 --> 00:46:02,920 אז מה אתה עושה? 991 00:46:02,920 --> 00:46:03,840 אתה סוגר את המקרר. 992 00:46:03,840 --> 00:46:04,670 אתה תופס את המפתחות שלך. 993 00:46:04,670 --> 00:46:05,930 אתה יוצא לכיכר. 994 00:46:05,930 --> 00:46:09,240 ואתה מקבל בתור בCVS באלה קופת דברים עצמיים, שתמיד 995 00:46:09,240 --> 00:46:11,180 תיקח זמן רב יותר מאשר למעשה יש קופאיות. 996 00:46:11,180 --> 00:46:11,820 בכל אופן. 997 00:46:11,820 --> 00:46:15,490 >> אז, בינתיים, נקודת נקודת נקודה, שותפה מגיעה הביתה והוא או היא 998 00:46:15,490 --> 00:46:17,440 יש עריגה דומה לקצת חלב. 999 00:46:17,440 --> 00:46:20,380 אז הוא או היא פותחת את המקרר, נראה בפנים, ואוה, לעזאזל. 1000 00:46:20,380 --> 00:46:21,160 לא חלב. 1001 00:46:21,160 --> 00:46:24,750 אז הוא או היא עומדת בראש החוצה, קורה ללכת לCVS האחרים, שהיה רק 1002 00:46:24,750 --> 00:46:27,900 מרחק רחוב אחד מסיבה כלשהי, והוא או היא מקבלת בתור כדי לקנות קצת חלב. 1003 00:46:27,900 --> 00:46:30,480 >> בינתיים, אתה חוזר הביתה, הוא או היא מגיעה הביתה, ומה לעשות 1004 00:46:30,480 --> 00:46:31,980 סופו של דבר יש לך? 1005 00:46:31,980 --> 00:46:33,080 כפליים חלב. 1006 00:46:33,080 --> 00:46:34,620 אבל אתה לא באמת אוהב חלב כל כך הרבה. 1007 00:46:34,620 --> 00:46:37,300 אז עכשיו יש לך כל כך הרבה חלב שעכשיו אחד מהם הוא רק הולך חמוצה 1008 00:46:37,300 --> 00:46:37,820 סופו של דבר. 1009 00:46:37,820 --> 00:46:39,370 אז מדוברים בבעיה ממש רעה. 1010 00:46:39,370 --> 00:46:39,900 נכון? 1011 00:46:39,900 --> 00:46:41,990 >> אז מה קרה? 1012 00:46:41,990 --> 00:46:44,810 כל כך בסיסי, זה סוג של דוגמה מגוחכת. 1013 00:46:44,810 --> 00:46:48,580 אבל מתחת למכסת המנוע, מה שהיינו לנו יקרו כאן הוא שניכם בדקו 1014 00:46:48,580 --> 00:46:52,390 המצב של פיסת זיכרון, המקרר. 1015 00:46:52,390 --> 00:46:54,420 שניכם בדקו את המצב של כמה משתנה. 1016 00:46:54,420 --> 00:46:57,360 גם אתה וגם הסקת מסקנה כי אז אתה בוחר בה. 1017 00:46:57,360 --> 00:47:01,420 אך למרבה הצער, בעוד השותפה שלך היה בחנות, שהמצב של 1018 00:47:01,420 --> 00:47:05,670 המשתנה השתנה, הוא או היא חזרה ועכשיו רוצה לשנות את המצב, אבל 1019 00:47:05,670 --> 00:47:07,480 זה כבר השתנה עליו או עליה. 1020 00:47:07,480 --> 00:47:11,120 וכמובן, הוא או היא לא תצטרך הלכתי לחנות אם הם ידעו 1021 00:47:11,120 --> 00:47:13,010 שכבר היו בדרך. 1022 00:47:13,010 --> 00:47:16,430 >> כך בעולם האמיתי, איך יכולת להימנע מבעיה זו, בהנחה שיש לך 1023 00:47:16,430 --> 00:47:18,940 מקרר, יש לך שותף לחדר, ואתה באמת אוהב חלב? 1024 00:47:18,940 --> 00:47:19,760 >> קהל: תקשורת. 1025 00:47:19,760 --> 00:47:20,580 >> DAVID מלאן: תקשורת. 1026 00:47:20,580 --> 00:47:21,160 על אישור. 1027 00:47:21,160 --> 00:47:22,500 אבל איך אתה יכול לתקשר? 1028 00:47:22,500 --> 00:47:23,990 >> קהל: השאר פתק. 1029 00:47:23,990 --> 00:47:25,480 >> DAVID מלאן: השאר פתק, נכון? 1030 00:47:25,480 --> 00:47:28,025 תמיד משאיר פתק, עבור אוהדים של המופע. 1031 00:47:28,025 --> 00:47:31,580 בסדר, אז תמיד השאירו פתק, או לשים באמת כמו מנעול או משהו 1032 00:47:31,580 --> 00:47:35,440 על המקרר שמחזיק אותך שותפה מבדיקת המצב 1033 00:47:35,440 --> 00:47:36,540 משתנה זה. 1034 00:47:36,540 --> 00:47:40,800 >> עכשיו, למה זה עלול להיות רלוונטי ל בעיה להגדיר שבע, או לכספומטים. 1035 00:47:40,800 --> 00:47:46,780 ובכן, דמיין עולם שבו כספומט אתה עלול להיות מסוגל ללכת עד כספומט 1036 00:47:46,780 --> 00:47:48,920 מכונה כאן, וכספומט אחר כאן. 1037 00:47:48,920 --> 00:47:50,680 וזה קורה לעתים קרובות למדי. 1038 00:47:50,680 --> 00:47:54,150 ונניח שהיה לך שני כרטיסי כספומט, שאפשר להשיג. 1039 00:47:54,150 --> 00:47:57,420 ואתה נכנסת לשני המכונות יעילות בו זמנית, בתקווה 1040 00:47:57,420 --> 00:47:58,660 בזמן שאף אחד לא מסתכל. 1041 00:47:58,660 --> 00:48:01,260 ואז אתה מקליד את מספר הזיהוי האישי שלך בערך בו זמנית. 1042 00:48:01,260 --> 00:48:06,280 ואז אתה עושה שאילתת איזון כדי לראות כמה כסף יש לך. 1043 00:48:06,280 --> 00:48:08,920 ונניח שיש לך 100 דולרים נותר בחשבונך. 1044 00:48:08,920 --> 00:48:13,310 אז בעצם בו זמנית, אתה אומר אחד, אפס, אפס, להיכנס. 1045 00:48:13,310 --> 00:48:16,000 ולך אני מקווה לחזור קצת כסף. 1046 00:48:16,000 --> 00:48:18,440 >> אבל כמה כסף אתה יכול לקבל בחזרה? 1047 00:48:18,440 --> 00:48:21,710 עכשיו מחשבים בסופו של היום, במיוחד אם הם מדברים 1048 00:48:21,710 --> 00:48:27,360 שרתים, לא בהכרח עושים דברים בצו זה צפוי. 1049 00:48:27,360 --> 00:48:30,860 >> אז נניח מה שקורה, בגלל בעיות מהירות כל מה שיש ברשת 1050 00:48:30,860 --> 00:48:34,530 הם, או בעיות מעבד יש, או משהו כזה, נניח ש 1051 00:48:34,530 --> 00:48:38,530 הכספומט ראשון בודק האיזון ושלך רואה, הו, לאדם זה 100 דולרים. 1052 00:48:38,530 --> 00:48:41,840 אבל אז מקבל מוסחת כי אולי גיבוי שקורה ולכן זה 1053 00:48:41,840 --> 00:48:42,500 האטה. 1054 00:48:42,500 --> 00:48:45,080 או אולי בעת בדיקה, הרשת חיבור יש לי קצת יותר איטי בגלל 1055 00:48:45,080 --> 00:48:45,910 זה פשוט קורה. 1056 00:48:45,910 --> 00:48:47,100 הם התקנים פיזיים. 1057 00:48:47,100 --> 00:48:49,330 אז בינתיים, הכספומט השני הוא שואל את אותה השאלה. 1058 00:48:49,330 --> 00:48:53,030 כמה כסף יש לדוד? $ 100 הוא התשובה. 1059 00:48:53,030 --> 00:48:58,930 אבל בגלל שהכספומט הראשון עדיין לא שלחתי את ההודעה לחסר 100 $, שני 1060 00:48:58,930 --> 00:49:03,000 כספומטים שנבדקו הכספת של הבנק, רואה שם 100 $ שם, ועכשיו 1061 00:49:03,000 --> 00:49:07,160 שני המכונות פוטנציאליות הן הולך לירוק את תשובה. 1062 00:49:07,160 --> 00:49:12,240 >> עכשיו, זה נהדר בשבילך במובן מסוים אם מה שהבנק עושה סופו של דבר 1063 00:49:12,240 --> 00:49:17,200 הוא לשנות את הסכום ל100 מינוס על ידי הגדרה משתנה שווה לשלך 1064 00:49:17,200 --> 00:49:21,570 חשבון בנק שווה 0, בניגוד לעושה מינוס 100. 1065 00:49:21,570 --> 00:49:24,410 עכשיו במקרה הגרוע ביותר עבור הבנק - 1066 00:49:24,410 --> 00:49:27,470 או במקרה הטוב לבנק, בינתיים, הם נותנים לך 200 דולרים, ו 1067 00:49:27,470 --> 00:49:31,690 חשבון הבנק שלך עכשיו מראה שלילי 100 $, שבאמת לא 1068 00:49:31,690 --> 00:49:32,950 להועיל לך בכלל. 1069 00:49:32,950 --> 00:49:36,500 אבל הנקודה היא שהמרוץ הזה תנאי לשתי שותפות מקבלים 1070 00:49:36,500 --> 00:49:40,660 חלב, או לשני כספומטים מנסים להשיג מזומנים ולשנות את המצב של קמרון 1071 00:49:40,660 --> 00:49:44,510 באותו הזמן קיים כל זמן שיש לך מסד נתונים. 1072 00:49:44,510 --> 00:49:48,290 >> עכשיו בבעיה להגדיר שבע, בעיה זו מתעורר במובן זה שאם אתה קונה 1073 00:49:48,290 --> 00:49:52,110 חלקה של מניית פייסבוק, ולאחר מכן עבור למשל אתה קונה מניות השניה של 1074 00:49:52,110 --> 00:49:55,160 מניית פייסבוק, אתה צריך לעשות החלטה כמתכנת. 1075 00:49:55,160 --> 00:49:58,710 על מנת להחליט כיצד לעדכן מסד הנתונים, רוב הסיכויים שאתה הולך 1076 00:49:58,710 --> 00:50:02,250 יש שורה אחת עבור המניה, וזו היא אחת דרכים ליישם אותו. 1077 00:50:02,250 --> 00:50:06,640 ואתה הולך להיות מניה אחת של FB, שהוא סמלה של מניה שלהם 1078 00:50:06,640 --> 00:50:10,120 לשם משתמש זה, או למשתמש זה מזהה, המזהה הייחודי. 1079 00:50:10,120 --> 00:50:12,340 >> אבל את אותו הסיפור יכול לקרות כאן. 1080 00:50:12,340 --> 00:50:15,800 אם אתה עושה SELECT ב-SQL, כפי שתראה בבעיה להגדיר שבע כשאתה רואה, 1081 00:50:15,800 --> 00:50:18,460 אה, יש דוד מניה אחת של מניית פייסבוק. 1082 00:50:18,460 --> 00:50:23,240 עכשיו תן לי לשנות את זה כדי להיות שתי מניות, בגלל שהוא רוצה לקנות 1083 00:50:23,240 --> 00:50:24,120 נתח שני. 1084 00:50:24,120 --> 00:50:27,860 אבל נניח שדוד היה למעשה שני חלונות פתוחים של דפדפן, או מניח כי 1085 00:50:27,860 --> 00:50:32,150 זה חשבון משותף עם שני בני זוג, ושניהם מנסים לבצע 1086 00:50:32,150 --> 00:50:36,770 את אותה הפעולה, גם שם, קיים פוטנציאל להחלטה להיות 1087 00:50:36,770 --> 00:50:39,670 נעשה על בסיס הקודם מצבו של העולם - 1088 00:50:39,670 --> 00:50:41,290 יש לו את החשבון מניה אחת - 1089 00:50:41,290 --> 00:50:45,630 ואנשים כאחד, או שני השרתים, עכשיו מנסה לומר להגדיל אותו לשתי מניות. 1090 00:50:45,630 --> 00:50:49,020 אבל במקרה זה, ייתכן שיש לחייב לי כסף לשתי המניות, אבל 1091 00:50:49,020 --> 00:50:50,830 מוגדל בדיוק את זה פעם אחת. 1092 00:50:50,830 --> 00:50:54,730 >> אז בקיצור, הבעיה הבסיסית כאן, כמו בבדיחה על עזיבה 1093 00:50:54,730 --> 00:50:58,750 שימו לב, או לשים מנעול על זה, הוא אם שני אנשים, או שני נושאים - 1094 00:50:58,750 --> 00:50:59,930 חושב לחזור להתחלה - 1095 00:50:59,930 --> 00:51:03,220 ניתן לבדוק את מצבם של כמה משתנים ולאחר מכן לנסות לשנות משתנה ש, 1096 00:51:03,220 --> 00:51:07,950 אבל שני הדברים האלה לא יקרו ב אותו זמן, אבל יכול לקבל נקטע 1097 00:51:07,950 --> 00:51:11,500 על ידי דברים אחרים שקורים, הנתונים יכולים להגיע למצב מאוד מוזר. 1098 00:51:11,500 --> 00:51:15,450 ואתה יכול להפיק תועלת, או שאתה יכול לסבול במובן של הכסף, למשל. 1099 00:51:15,450 --> 00:51:18,110 >> אז בבעיה להגדיר שבע, אנחנו נותנים לכם הקו הזה אחת של קוד, אשר ארוך 1100 00:51:18,110 --> 00:51:21,000 סיפור קצר, פותר את זה בעיה ב-MySQL. 1101 00:51:21,000 --> 00:51:24,950 הוראה ארוכה מאוד זה, שאינו אפילו להתאים אותו לשורה אחת על 1102 00:51:24,950 --> 00:51:30,370 מסך כאן מבטיח כי הפעולה שלך הוא מה שנקרא אטומי. 1103 00:51:30,370 --> 00:51:33,720 כל זה קורה בבת אחת, או זה לא קורה בכלל. 1104 00:51:33,720 --> 00:51:37,530 ביטוי ארוך מאוד זה לא יכול מקבל קטע באופן חלקי. 1105 00:51:37,530 --> 00:51:39,840 >> ומה שהיא עושה הוא, פשוטו כמשמעו, מה שהוא אומר. 1106 00:51:39,840 --> 00:51:44,200 הכנס לתוך כמה שולחן הבא שלושה שדות ערכים הספציפיים אלה, 1107 00:51:44,200 --> 00:51:47,280 אבל במפתח כפול, לא עושה את הכנס. 1108 00:51:47,280 --> 00:51:48,280 האם עדכון. 1109 00:51:48,280 --> 00:51:52,450 אז זה כמו לעשות SELECT ו INSERT כביכול באותו הזמן. 1110 00:51:52,450 --> 00:51:55,150 ומה הוא המפתח שכנראה מדובר כאן? 1111 00:51:55,150 --> 00:51:58,300 1112 00:51:58,300 --> 00:52:01,380 >> מתברר, ואתה רואה את זה ב בעיה מוגדרת של שבעה מפרט, כי 1113 00:52:01,380 --> 00:52:06,040 אנחנו כבר הכריזו שיהיה מפתח ייחודי על שולחן המסוים הזה כך ש 1114 00:52:06,040 --> 00:52:08,480 אתה לא יכול להיות מספר שורות עבור אותו משתמש עם 1115 00:52:08,480 --> 00:52:10,150 אותו סמל מניית אגורה - 1116 00:52:10,150 --> 00:52:13,780 בדוגמה זו כאן, היא DVN.V מניות פרוטה טיפשיות שאנחנו 1117 00:52:13,780 --> 00:52:14,980 עיין במפרט. 1118 00:52:14,980 --> 00:52:17,860 כי אנחנו כבר הכריזו עליו להיות ייחודיים, מה שזה אומר זה שאם אתה 1119 00:52:17,860 --> 00:52:23,580 מנסה להוסיף שורה כפולה, אתה במקום הולך לעדכן אותו בלי 1120 00:52:23,580 --> 00:52:27,020 כל אדם אחר שיש לו סיכוי לשנות מצבו של העולם או. 1121 00:52:27,020 --> 00:52:29,400 אז בקיצור, זה מבטיח דברים הם אטומיים. 1122 00:52:29,400 --> 00:52:32,530 >> באופן כללי יותר, אם כי מאגרי מידע כמו MySQL - 1123 00:52:32,530 --> 00:52:35,460 ואתה לא צריך תכונה זו עבור P-סט שבע, אבל לשמור את זה בחשבון עבור 1124 00:52:35,460 --> 00:52:36,200 עתיד - 1125 00:52:36,200 --> 00:52:38,870 לתמוך במה שנקראים עסקות, שבו אתה יכול לומר 1126 00:52:38,870 --> 00:52:40,990 START עסקה, פשוטו כמשמעו. 1127 00:52:40,990 --> 00:52:43,270 לאחר מכן תוכל לבצע שני משפטי SQL. 1128 00:52:43,270 --> 00:52:45,710 ומשפט SQL, כפי שתראה בעמ 'שנקבע שבע, נראה קצת 1129 00:52:45,710 --> 00:52:46,750 משהו כזה. 1130 00:52:46,750 --> 00:52:48,820 עדכון טבלה בשם חשבון. 1131 00:52:48,820 --> 00:52:52,550 הגדר את עמודת האיזון שווה לכל עמודת האיזון כיום 1132 00:52:52,550 --> 00:52:57,280 הוא מינוס 1000 שבו המספר, מספר חשבון, כמו זיהוי המשתמש, 1133 00:52:57,280 --> 00:53:00,830 שווה 2, ולאחר מכן לעדכן חשבון נקודת נקודת נקודה. 1134 00:53:00,830 --> 00:53:04,350 >> אז במונחים של הדיוטות, מה עושה שני אלה שאילתות נראות שהוא עושה ב 1135 00:53:04,350 --> 00:53:05,840 תחושה אמיתית של עולם בנקאות? 1136 00:53:05,840 --> 00:53:07,440 >> קהל: העברה לחיסכון. 1137 00:53:07,440 --> 00:53:08,020 >> דוד Malan: בדיוק. 1138 00:53:08,020 --> 00:53:10,470 העברת כספים מאחד להסביר לצד השני. 1139 00:53:10,470 --> 00:53:14,400 וזו היא דוגמה נוספת שבו אתה באמת רוצה שני הדברים האלה לקרות 1140 00:53:14,400 --> 00:53:15,570 או לא יקרה. 1141 00:53:15,570 --> 00:53:18,880 אתה לא רוצה משהו כדי לקבל ב אמצעם ופוטנציאל לבלגן 1142 00:53:18,880 --> 00:53:22,220 מתמטיקה, או בלגן כמה כסף יש לך, או כמה 1143 00:53:22,220 --> 00:53:23,170 לבנק כסף. 1144 00:53:23,170 --> 00:53:26,890 אז מה באמת נחמד על עסקות בMySQL הוא ש, ו 1145 00:53:26,890 --> 00:53:30,160 מאגרי מידע כללי יותר, הוא שהם ואנשים חכמים שכבר מיושמים 1146 00:53:30,160 --> 00:53:33,670 תכונות אלה להבין איך לעשות בטוח ששני הדברים האלה יקרו 1147 00:53:33,670 --> 00:53:35,120 או בכלל לא. 1148 00:53:35,120 --> 00:53:38,580 >> ואם אתה באמת שואף לעשות אתר המשמש על ידי אנשים על 1149 00:53:38,580 --> 00:53:41,490 קמפוס, אנשים בעולם האמיתי, עושים משהו בתחושת ההפעלה, 1150 00:53:41,490 --> 00:53:43,300 אלה הם סוגים שונים של החלטות עיצוב ש 1151 00:53:43,300 --> 00:53:45,020 תהפוך אי פעם כל כך חשוב. 1152 00:53:45,020 --> 00:53:48,240 אחרת, אתה מתחיל לאבד את הנתונים, תאבד משתמשים, או במקרה הגרוע כמו 1153 00:53:48,240 --> 00:53:51,800 שראינו כאן, באופן פוטנציאלי להפסיד כסף. 1154 00:53:51,800 --> 00:53:56,180 אז שוב, עוד על כך בבעיה להגדיר שבע, כמו גם אולי לחלק מן 1155 00:53:56,180 --> 00:53:57,530 אתה בפרויקט גמר. 1156 00:53:57,530 --> 00:54:01,870 >> אז בואו נשנה את זה תמונה שהיו לנו לפני רגע דרך רק באחת. 1157 00:54:01,870 --> 00:54:04,070 אז תן לי ממש לראות אם אני יכול - 1158 00:54:04,070 --> 00:54:06,030 לא, ככה זה נעלם. 1159 00:54:06,030 --> 00:54:06,690 זה מה שיש. 1160 00:54:06,690 --> 00:54:09,020 >> אז זה המקום שבו בפעם האחרונה. 1161 00:54:09,020 --> 00:54:12,390 ומתברר שאנחנו הולכים לזרוק עוד דבר אחד לתערובת כאן - 1162 00:54:12,390 --> 00:54:14,510 שפה נקראת-JavaScript. 1163 00:54:14,510 --> 00:54:18,060 אז JavaScript ממש מתאים לקטע הזה - 1164 00:54:18,060 --> 00:54:22,086 ואני לא ממש להשאיר מספיק מקום, אז זה לא עכשיו בקנה מידה. 1165 00:54:22,086 --> 00:54:23,900 אוקיי, זה באמת פתטי. 1166 00:54:23,900 --> 00:54:27,075 אוקיי, אז זה JavaScript. 1167 00:54:27,075 --> 00:54:27,340 בסדר. 1168 00:54:27,340 --> 00:54:28,760 אני באמת עושה את זה עוול. 1169 00:54:28,760 --> 00:54:29,390 בסדר. 1170 00:54:29,390 --> 00:54:34,790 >> אז JavaScript היא תכנות אחר שפה, והאחרון שלנו, אם זה עוזר 1171 00:54:34,790 --> 00:54:37,770 להרגיע שאין הרבה יותר מברזי כיבוי האש כאן. 1172 00:54:37,770 --> 00:54:41,100 אז גם הוא JavaScript פירש שפה, מה שאומר שאתה לא יודע 1173 00:54:41,100 --> 00:54:42,670 לעבד אותו לתוך אפסים ואחדים. 1174 00:54:42,670 --> 00:54:43,690 אתה פשוט להפעיל אותו. 1175 00:54:43,690 --> 00:54:47,680 אבל מה שונה במהותו עם JavaScript בדרך כלל הוא שאתה 1176 00:54:47,680 --> 00:54:49,815 לא להפעיל אותו בשרת האינטרנט שלך. 1177 00:54:49,815 --> 00:54:52,570 זה לא להידרס ב מכשיר כשלעצמו. 1178 00:54:52,570 --> 00:54:57,490 במקום זאת, הוא מקבל שהורד על ידי משתמש באמצעות פרוטוקול HTTP בדפדפן שלהם - 1179 00:54:57,490 --> 00:55:00,260 כרום, ספארי, הדפדפן Internet Explorer, פיירפוקס, מה - 1180 00:55:00,260 --> 00:55:03,860 וזה הדפדפן שמבצע את זה שפת תכנות מסוימת. 1181 00:55:03,860 --> 00:55:08,000 >> אז כדי שיהיה ברור, PHP עד כה היה בוצע גם בשורת הפקודה ב 1182 00:55:08,000 --> 00:55:11,290 החלון השחור ולבן שלנו, בשרת כמו המכשיר, מחשב 1183 00:55:11,290 --> 00:55:14,490 כמו במכשיר, או שזה היה הוצא להורג על ידי שרת אינטרנט 1184 00:55:14,490 --> 00:55:15,860 פועל על מחשב. 1185 00:55:15,860 --> 00:55:20,490 אבל הנושא כאן הוא PHP שעד כה בוצע בצד שרת, ולכן 1186 00:55:20,490 --> 00:55:24,820 משתמש והדפדפן של המשתמש אף פעם לא רואה את שורת קוד PHP. 1187 00:55:24,820 --> 00:55:28,530 >> למעשה, אם אתה אי פעם לפתוח את דפדפן ל אתר האינטרנט שלך או אחר, ואתה 1188 00:55:28,530 --> 00:55:32,400 למעשה לראות את קוד PHP בחלון שלך, מישהו דפוק. 1189 00:55:32,400 --> 00:55:34,950 כי זה לא אמור להיות נשלח לדפדפן באופן ישיר. 1190 00:55:34,950 --> 00:55:38,150 זה אמור להיות מוצא להורג והפך למשהו כמו HTML. 1191 00:55:38,150 --> 00:55:40,120 >> אבל JavaScript הוא למעשה ההפך הוא נכון. 1192 00:55:40,120 --> 00:55:44,350 זה אמור להיות מנוהל בדרך כלל בתוך של חלון הדפדפן של משתמש. 1193 00:55:44,350 --> 00:55:46,840 ואילו סוגים של אתרי אינטרנט להשתמש JavaScript לאחר מכן בימים אלה? 1194 00:55:46,840 --> 00:55:49,640 1195 00:55:49,640 --> 00:55:52,180 >> אוהב, פשוטו כמשמעו, בכל אתר אינטרנט פופולרי. 1196 00:55:52,180 --> 00:55:55,430 כל אתר אינטרנט שכנראה אתם שימוש יומיומי להשתמש ב-JavaScript ל 1197 00:55:55,430 --> 00:55:57,330 הפשוט ביותר ואפילו התכונות הסקסיות ביותר. 1198 00:55:57,330 --> 00:55:59,800 >> אז משהו כמו פייסבוק צ 'אט אם אתה משתמש בזה. 1199 00:55:59,800 --> 00:56:01,040 איך זה באמת עובד? 1200 00:56:01,040 --> 00:56:05,090 ובכן עד כה, את כל הדברים שיש לנו עשו עם HTML ו-PHP מניח כי 1201 00:56:05,090 --> 00:56:08,750 אתה מושך את כתובת אתר, ואתה מכה הזן, ואתה רואה כמה תוכן HTML. 1202 00:56:08,750 --> 00:56:11,970 ואתה לוחץ על הקישור, שמשנה את כתובת אתר, משנה את הדף, וטעינות 1203 00:56:11,970 --> 00:56:12,740 קצת תוכן חדש. 1204 00:56:12,740 --> 00:56:16,340 לחץ על כתובת אתר אחרת או לשלוח טופס, אתה לקבל whisked לדף ועוד 1205 00:56:16,340 --> 00:56:17,420 אתה רואה חלק מתוכן חדש. 1206 00:56:17,420 --> 00:56:22,710 >> אבל באמצעות משהו כמו פייסבוק צ'אט, או Gchat, או ב-Google Maps, רק לעתים נדירות 1207 00:56:22,710 --> 00:56:27,350 אין כל רענון הדף כזה אתה רואה מסך לבן ורגע 1208 00:56:27,350 --> 00:56:28,470 תוכן חדש לאחר מכן. 1209 00:56:28,470 --> 00:56:32,610 במקום זאת, דפי אינטרנט היום הם דינמי מקבל שוב ומעודכן 1210 00:56:32,610 --> 00:56:35,570 שוב ושוב למיון של מאחורי הקלעים. 1211 00:56:35,570 --> 00:56:38,560 ומתברר שכשאתה הולך ל משהו כמו פייסבוק, או Gchat, 1212 00:56:38,560 --> 00:56:43,050 או ב-Gmail, ואת העדכונים בדף באופן אוטומטי מבלי לטעון מחדש 1213 00:56:43,050 --> 00:56:47,630 מסך כולו, מה שקרה הוא ש הדפדפן שלך עשה סוג של הסתר 1214 00:56:47,630 --> 00:56:49,410 בקשות נוספות - HTTP 1215 00:56:49,410 --> 00:56:52,740 לא לכל דפי אינטרנט, אבל רק בשביל נתחים קטנים של נתונים, כמו 1216 00:56:52,740 --> 00:56:55,740 הודעה מיידית שהחבר שלך פשוט שלחתי לך, או שעדכון הסטטוס 1217 00:56:55,740 --> 00:56:58,210 מישהו רק שלח לך, או ציוץ מישהו שרק נשלח. 1218 00:56:58,210 --> 00:57:02,120 זה בדיוק מה שהופך את בקשות לקטנות הנתונים ולאחר מכן באמצעות JavaScript, זה 1219 00:57:02,120 --> 00:57:06,370 שפת תכנות, כדי לשנות את מה דף האינטרנט שנראה כמו בלי 1220 00:57:06,370 --> 00:57:09,860 שרת עוזר, ללא השרת יצירת ש- HTML. 1221 00:57:09,860 --> 00:57:13,820 >> אז בקיצור, ניתן להשתמש בו לאחר מכן JavaScript לא רק כדי להביא נתונים חדשים מ 1222 00:57:13,820 --> 00:57:16,750 השרת מבלי לטעון מחדש כל דף או הגשת טופס. 1223 00:57:16,750 --> 00:57:20,060 זה גם יכול לשמש כדי לשנות DOM מה שנקרא - 1224 00:57:20,060 --> 00:57:21,520 מודל מסמך אובייקט - 1225 00:57:21,520 --> 00:57:24,620 וזה רק הדרך המפוארת עבור אומר העץ של ה-HTML 1226 00:57:24,620 --> 00:57:26,220 שראינו בפעם האחרונה. 1227 00:57:26,220 --> 00:57:31,640 >> אז כדי להרגיע, JavaScript הוא תחבירי כך גם דומה ל-C. 1228 00:57:31,640 --> 00:57:32,820 אין פונקציה העיקרית. 1229 00:57:32,820 --> 00:57:35,430 אתה פשוט להתחיל לכתוב את הקוד והוא מוצא להורג, או 1230 00:57:35,430 --> 00:57:36,900 פירש יותר כמו שצריך. 1231 00:57:36,900 --> 00:57:38,660 תנאים ייראו כך. 1232 00:57:38,660 --> 00:57:41,230 לא שונה מC או PHP לצורך העניין. 1233 00:57:41,230 --> 00:57:43,890 ביטויים בוליאניים או-ed יחד ייראה כך. 1234 00:57:43,890 --> 00:57:45,590 Anded יחד נראה ככה. 1235 00:57:45,590 --> 00:57:47,750 >> מתגים ייראו כך. 1236 00:57:47,750 --> 00:57:49,440 ללולאות תיראה כך. 1237 00:57:49,440 --> 00:57:51,060 בעוד לולאות ייראו כך. 1238 00:57:51,060 --> 00:57:53,316 לעשות בזמן שלולאות ייראו כך. 1239 00:57:53,316 --> 00:57:54,780 >> זה חדש. 1240 00:57:54,780 --> 00:57:58,753 אז יש לי JavaScript אינו foreach לבנות כשלעצמו, אבל זה לבנות 1241 00:57:58,753 --> 00:58:03,870 עבור i משתנה במערך, ואני בזה מקרה הופך להיות ערך מדד. 1242 00:58:03,870 --> 00:58:06,880 אז זה קצת שונה מזה foreach, אם כי גירסאות חדשות של 1243 00:58:06,880 --> 00:58:10,280 JavaScript הם יוצאים כל הזמן, כך שגם השפה אלה כוללת 1244 00:58:10,280 --> 00:58:10,880 מתפתחים. 1245 00:58:10,880 --> 00:58:16,920 >> וכמאמר מוסגר, JavaScript בימים אלה יכול לשמש גם בשרת בדיוק כמו 1246 00:58:16,920 --> 00:58:19,920 PHP באמצעות מסגרת הנקראת Node.js. 1247 00:58:19,920 --> 00:58:24,670 אחד TFS של CS50, קווין, הוביל סמינר על Node.js זה זמין בכתובת 1248 00:58:24,670 --> 00:58:26,440 cs50.net/seminars. 1249 00:58:26,440 --> 00:58:28,830 אז אם אתה סקרן, יודע שאתה יכול להשתמש בזה בצד השרת כמו 1250 00:58:28,830 --> 00:58:33,870 כן, אבל זה טרנד חדש יחסית, אבל אחד חזק בזה. 1251 00:58:33,870 --> 00:58:35,270 >> זה קצת שונה. 1252 00:58:35,270 --> 00:58:37,910 זהו מערך ב-JavaScript. 1253 00:58:37,910 --> 00:58:40,115 ומה שנראה לך שונה לעומת C או PHP? 1254 00:58:40,115 --> 00:58:43,890 1255 00:58:43,890 --> 00:58:47,420 ישנם כמה סיפורים מהירים אנחנו יכולים לספר כאן. 1256 00:58:47,420 --> 00:58:49,367 מה חסר לעומת PHP? 1257 00:58:49,367 --> 00:58:51,652 >> קהל: [לא ברור]. 1258 00:58:51,652 --> 00:58:52,110 >> דוד Malan: כן? 1259 00:58:52,110 --> 00:58:53,322 מצטער, אומר שוב? 1260 00:58:53,322 --> 00:58:54,740 >> קהל: לא הכריז הסוג של משתנה. 1261 00:58:54,740 --> 00:58:56,390 >> מלאן דוד: אנחנו לא הצהירו הסוג של משתנה. 1262 00:58:56,390 --> 00:58:59,630 אז בעצם די כמו PHP, אנחנו לא המפרט את הסוגים של משתנה זה. 1263 00:58:59,630 --> 00:59:02,670 במקום זאת, אנחנו באופן כללי יותר אומר var למשתנה. 1264 00:59:02,670 --> 00:59:06,690 אין לנו המטרד של PHP של סימן דולר, שתוך מייגע 1265 00:59:06,690 --> 00:59:09,160 סוג, אין לעשות יותר ברור כי משהו לא משתנה. 1266 00:59:09,160 --> 00:59:11,830 ואילו כאן, אנחנו סוג של חזרה ל גישתו של C רק על ידי קורא 1267 00:59:11,830 --> 00:59:14,500 משתנה בשם שאנחנו רוצים כדי לתת לו, כמו מספרים. 1268 00:59:14,500 --> 00:59:17,170 וגם כמו PHP, יש לנו סוגריים מרובעים ל 1269 00:59:17,170 --> 00:59:19,170 ערכים בתוך המערך. 1270 00:59:19,170 --> 00:59:22,490 >> כך משתנה גם ב-JavaScript עשוי להיראות כך. 1271 00:59:22,490 --> 00:59:26,900 שים לב כאן זה הוא מחרוזת הנקראת ים, אבל דומה שאנו לא צוינו 1272 00:59:26,900 --> 00:59:28,750 שזה חוט. 1273 00:59:28,750 --> 00:59:33,160 כאן אף היא תכונה שאינה קיימת באותה הדרך בדיוק ב-PHP, 1274 00:59:33,160 --> 00:59:34,460 אבל קצת דומה. 1275 00:59:34,460 --> 00:59:36,530 זהו אובייקט ב-JavaScript. 1276 00:59:36,530 --> 00:59:42,110 ואובייקטים הם סוג של הצבא שוויצרי סכין של מבנה הנתונים שבך 1277 00:59:42,110 --> 00:59:43,900 ניתן להשתמש בם עבור כל מספר של דברים. 1278 00:59:43,900 --> 00:59:46,860 >> הנה, למשל, אנחנו מכריזים משתנים בשם ציטוט. 1279 00:59:46,860 --> 00:59:49,110 הסוג של משתנה ש הוא אובייקט. 1280 00:59:49,110 --> 00:59:53,550 אתה יכול לחשוב על זה כstruct C שיש לו מפתחות וערכים. 1281 00:59:53,550 --> 00:59:55,250 סמל הוא מפתח. 1282 00:59:55,250 --> 00:59:57,350 FB הוא ערך, ככל הנראה סמל מניית. 1283 00:59:57,350 --> 00:59:57,930 פסיק. 1284 00:59:57,930 --> 01:00:02,180 המחיר הוא מפתח נוסף, וערך שלו הוא ככל הנראה נקודה צפה, או 1285 01:00:02,180 --> 01:00:06,510 באופן כללי יותר במספר JavaScript, של 49.26 $. 1286 01:00:06,510 --> 01:00:09,030 >> אז PHP אין - 1287 01:00:09,030 --> 01:00:12,980 שלא ראו באובייקטי PHP די כמו זה, אבל אנחנו לא רואים אנלוגיים, 1288 01:00:12,980 --> 01:00:14,093 שהיה מה? 1289 01:00:14,093 --> 01:00:14,980 >> קהל: [לא ברור]. 1290 01:00:14,980 --> 01:00:16,110 >> דוד Malan: מערכים אסוציאטיביים. 1291 01:00:16,110 --> 01:00:19,990 אז אילו PHP יש מערכים אסוציאטיביים תחביר שלה הוא אי פעם כל כך מעט 1292 01:00:19,990 --> 01:00:20,370 שונה - 1293 01:00:20,370 --> 01:00:21,780 ראינו את סוגריים המרובעים. 1294 01:00:21,780 --> 01:00:23,860 ראינו את סמלי חצים המוזרים. 1295 01:00:23,860 --> 01:00:27,330 יש JavaScript אובייקטים, אבל זה בעיקר הבדל סמנטי ו 1296 01:00:27,330 --> 01:00:29,260 מילה נרדפת שונה לעת עתה. 1297 01:00:29,260 --> 01:00:35,060 עם זאת, במאמר מוסגר, יש גם PHP אובייקטים באופן שבו ג'אווה ואחרת 1298 01:00:35,060 --> 01:00:37,810 יש אובייקטים בשפות תכנות מונחה עצמים. 1299 01:00:37,810 --> 01:00:40,440 אבל אנו נשתמש רק אלה עבור סוגי נתונים לעת עתה. 1300 01:00:40,440 --> 01:00:42,170 אובייקטים ומערכים אסוציאטיביים. 1301 01:00:42,170 --> 01:00:44,140 >> אחד זה יכול לעשות את זה קצת יותר ברור. 1302 01:00:44,140 --> 01:00:45,890 הנה הסיבה האובייקט שימושי. 1303 01:00:45,890 --> 01:00:48,760 כאשר אתה רוצה להכריז על תלמיד, כמו Zamyla, אנחנו יכולים למעשה 1304 01:00:48,760 --> 01:00:52,630 לתמצת כביכול בתוך כי אובייקט באמצעות סוגריים מסולסלים בדיוק כמו 1305 01:00:52,630 --> 01:00:55,060 לפני כל חבורה של מפתחות וערכים לכאן. 1306 01:00:55,060 --> 01:00:59,150 יש לנו תעודת זהות, בית, ושם עבור Zamyla, ואחריו פסיק כ 1307 01:00:59,150 --> 01:01:00,690 כרגיל בסוף. 1308 01:01:00,690 --> 01:01:04,840 >> כאן למטה מדי, זה מעט שונה, אבל גם חזק מאוד 1309 01:01:04,840 --> 01:01:05,690 בימים אלה. 1310 01:01:05,690 --> 01:01:08,780 הנה מערך, ואני יודע את זה כי יש את סוגר מרובע 1311 01:01:08,780 --> 01:01:11,090 עליון וסוגר מרובע בתחתית. 1312 01:01:11,090 --> 01:01:16,050 ואת זה הוא מערך של מה שנתונים הקלד ככל הנראה ב-JavaScript? 1313 01:01:16,050 --> 01:01:21,260 זהו מערך של זה נראה כמו שלושה אובייקטים. 1314 01:01:21,260 --> 01:01:24,580 ואני יודע שזה רק אובייקט בגלל הסוגריים המסולסלים. 1315 01:01:24,580 --> 01:01:28,760 ושימו לב שיש סד מתולתל פתוח, כמה דברים, סד מתולתל קרוב, פסיק, 1316 01:01:28,760 --> 01:01:31,180 אז עוד קצת, פסיק, ואז עוד קצת. 1317 01:01:31,180 --> 01:01:33,800 אז זה שלוש טענות מופרד על ידי שני פסיקים. 1318 01:01:33,800 --> 01:01:36,810 >> אז זהו מערך של שלושה חפצים. 1319 01:01:36,810 --> 01:01:39,940 וכל אחד מאובייקטים אלה נראה חבר סטודנט או צוות של כמה 1320 01:01:39,940 --> 01:01:42,370 סוג, כל אחד עם תעודת זהות, בית, ושם. 1321 01:01:42,370 --> 01:01:45,060 אבל אני כבר בשם זה משהו נקרא JSON - 1322 01:01:45,060 --> 01:01:47,450 JavaScript סימון אובייקט. 1323 01:01:47,450 --> 01:01:52,060 ואת זה הוא פורמט נתונים שלמעשה הוא כל כך פופולרי מאוד וב 1324 01:01:52,060 --> 01:01:55,100 אופנה בימים אלה, שאם אתה כותב יישום המשתמש בפייסבוק 1325 01:01:55,100 --> 01:01:59,150 ה-API, API טוויטר, ממש כמעט כל API בחוץ בימים אלה, 1326 01:01:59,150 --> 01:02:02,820 כולל כמה של CS50, הנתונים שאתה מקבל בחזרה הוא לא ב 1327 01:02:02,820 --> 01:02:04,720 פורמט CSV בית ספר ישן. 1328 01:02:04,720 --> 01:02:06,780 >> בגלל זוכר שCSV הוא סופר פשוט. 1329 01:02:06,780 --> 01:02:10,230 זה רק עמודות מופרדות בפסיקים. 1330 01:02:10,230 --> 01:02:13,190 נתונים JSON נותן לך יותר מטה. 1331 01:02:13,190 --> 01:02:17,800 זה מקשר את מפתח עם כל ערך כל כך הם לא צריכים רק להניח כי 1332 01:02:17,800 --> 01:02:22,460 עמודת האפס היא ערך אחד, עמודה אחד הוא אחר, העמודה השנייה היא אחרת. 1333 01:02:22,460 --> 01:02:26,790 הכל באובייקט JSON כאן הוא מעין מתיאור עצמי, כי בכל 1334 01:02:26,790 --> 01:02:30,940 אחד מהשמות בקובץ זה יש ממש שם לפניו כ 1335 01:02:30,940 --> 01:02:32,510 מחרוזת מצוטטת. 1336 01:02:32,510 --> 01:02:34,950 >> אז בואו נסתכל כמה דוגמאות כאן. 1337 01:02:34,950 --> 01:02:36,800 תן לי להיכנס למכשיר. 1338 01:02:36,800 --> 01:02:41,000 ותן לי להיכנס לvhost ספרייה לציבור. 1339 01:02:41,000 --> 01:02:45,590 ותן לי להיכנס JavaScript מדריך. 1340 01:02:45,590 --> 01:02:49,610 ובואו נלך קדימה, לפתוח את Dom-0.html, שם DOM רק אומר 1341 01:02:49,610 --> 01:02:51,010 מודל אובייקט מסמך. 1342 01:02:51,010 --> 01:02:53,490 זה חומר העץ שאליו אני התייחסתי קודם לכן. 1343 01:02:53,490 --> 01:02:54,950 >> והרשה לי להציע את הדברים הבאים. 1344 01:02:54,950 --> 01:02:57,720 הנה דף אינטרנט ש גוף הוא די פשוט. 1345 01:02:57,720 --> 01:03:00,170 כאן למטה אז בתחתית, שמתי לב שיש לי טופס. 1346 01:03:00,170 --> 01:03:01,500 ראינו אותם בעבר. 1347 01:03:01,500 --> 01:03:07,600 יש לו שתי כניסות, אחת מהן יש זיהוי של שם, שאחד מהם יש סוג של 1348 01:03:07,600 --> 01:03:09,830 להגיש, והראשון הסוג של אדם הוא טקסט. 1349 01:03:09,830 --> 01:03:11,900 אז זה באמת נשמע די פשוט. 1350 01:03:11,900 --> 01:03:13,090 >> בואו נלך כאן. 1351 01:03:13,090 --> 01:03:15,390 בואו נחזור לדף זה כאן. 1352 01:03:15,390 --> 01:03:21,030 בואו נלך לlocalhost, ולהיכנס ל הספרייה שלנו ב-JavaScript, וללכת 1353 01:03:21,030 --> 01:03:24,640 Dom-0, וכאן יש לנו טופס זה. 1354 01:03:24,640 --> 01:03:26,550 אז זה כנראה כל הדף הזה עושה. 1355 01:03:26,550 --> 01:03:28,740 יש לו שם שדה עם שלח כפתור. 1356 01:03:28,740 --> 01:03:30,340 אבל אני לא הולך להשתמש PHP כאן. 1357 01:03:30,340 --> 01:03:34,310 אני הולך לעשות את צד לקוח הכל כביכול ב-JavaScript כדלקמן. 1358 01:03:34,310 --> 01:03:39,100 >> שים לב שאכן אני כבר קבלתי את השם תחום זה קלט ייחודי 1359 01:03:39,100 --> 01:03:42,350 מזהה, אשר יהיה למעשה תחסוך לי קצת זמן ברגע. 1360 01:03:42,350 --> 01:03:45,480 ושים לב שאני פוגש את תג אחר בראש דף האינטרנט שלי, 1361 01:03:45,480 --> 01:03:46,565  תג. 1362 01:03:46,565 --> 01:03:50,120 >> אז זה במובן זה שהוא JavaScript שפת תכנות בצד הלקוח. 1363 01:03:50,120 --> 01:03:55,020 במקרה זה, בדיוק כמו CSS, שמתי זה ישר בתוך ה-HTML שלי. 1364 01:03:55,020 --> 01:03:58,810 אבל שים לב שהכרזתי פונקציה שנראה קצת כמו PHP 1365 01:03:58,810 --> 01:04:01,530 מבחינה תחבירית, אבל זה בעצם JavaScript, כי שוב, זה 1366 01:04:01,530 --> 01:04:03,920 בצד לקוח בדפדפן. 1367 01:04:03,920 --> 01:04:07,590 ותנחש מה זה הולך לעשות, למרות שחלק מהתחביר 1368 01:04:07,590 --> 01:04:09,338 כאן הוא חדש. 1369 01:04:09,338 --> 01:04:11,760 >> קהל: תגיד שלום לכל מי. 1370 01:04:11,760 --> 01:04:14,020 >> DAVID מלאן: זה הולך להגיד שלום לכל מי שמבקר בדף זה. 1371 01:04:14,020 --> 01:04:15,120 אז איך? 1372 01:04:15,120 --> 01:04:18,070 >> אז שם לב, מתברר ב-JavaScript יש התראה (פונקציה). 1373 01:04:18,070 --> 01:04:22,840 זוהי פונקציה מאוד סוג של עצובה כי באמת רק נוטה לעצבן את המשתמשים. 1374 01:04:22,840 --> 01:04:25,440 זה לא אחד שאתה באמת צריך להשתמש בדרך כלל, אבל זה מהיר ומלוכלך 1375 01:04:25,440 --> 01:04:27,710 דרך מסוג של הדפסת משהו למשתמש גרפי 1376 01:04:27,710 --> 01:04:29,180 ממשק, כמו בדפדפן. 1377 01:04:29,180 --> 01:04:31,400 שים לב כאן שיש לי מחרוזת במרכאות בודדות. 1378 01:04:31,400 --> 01:04:36,010 מתברר כי בניגוד C, JavaScript בעצם יכול להיות שאתה משתמש באחת 1379 01:04:36,010 --> 01:04:38,730 מצטט, ולמען אמת זה רק סוג של אמנה הסגנוני בין 1380 01:04:38,730 --> 01:04:41,180 JavaScript מתכנתים להשתמש בגרשיים בודדים. 1381 01:04:41,180 --> 01:04:43,750 PHP, הם למעשה יש מעט משמעות שונה. 1382 01:04:43,750 --> 01:04:45,810 אבל לעת עתה, רק יודע ש זו הסיבה היחידה. 1383 01:04:45,810 --> 01:04:49,270 הכנס ב-JavaScript הוא לעתים קרובות השתמש בגרשיים בודדים, אבל אנחנו יכולים להשתמש 1384 01:04:49,270 --> 01:04:50,950 מרכאות כפולות בשני המקומות גם כן. 1385 01:04:50,950 --> 01:04:52,610 >> אז זה מעניין. 1386 01:04:52,610 --> 01:04:56,430 כזכור, בפעם האחרונה שהיו לנו כי תמונה על המסך שמשך את עץ 1387 01:04:56,430 --> 01:04:59,720 שבו הייתה לך את צומת ה-HTML, ו ראש צומת, וצומת הגוף, 1388 01:04:59,720 --> 01:05:00,800 ולאחר מכן חלק מטקסט. 1389 01:05:00,800 --> 01:05:04,700 אבל היה צומת מיוחד אחד ב מאוד עליון שקראתי את המסמך. 1390 01:05:04,700 --> 01:05:08,260 ובכן, מתברר ב-JavaScript, כל פעם שאתה כותב תכנית ב-JavaScript 1391 01:05:08,260 --> 01:05:11,040 בדפדפן, יש לך גישה ל משתנה גלובלי מיוחד. 1392 01:05:11,040 --> 01:05:14,130 דומה ברוחו לsuperglobals של PHP, זה נקרא ב 1393 01:05:14,130 --> 01:05:16,050 כל המסמך באותיות קטנות. 1394 01:05:16,050 --> 01:05:21,480 >> זה כמו struct, אבל struct זה יש גם פונקציות הפנימיים שלו. 1395 01:05:21,480 --> 01:05:23,790 אז struct C פשוט יש נתונים בדרך כלל. 1396 01:05:23,790 --> 01:05:29,060 אבל אובייקט JavaScript כמו זה מבחינה טכנית הוא גם פונקציות, 1397 01:05:29,060 --> 01:05:31,830 הידוע גם בשיטות, בתוכו. 1398 01:05:31,830 --> 01:05:35,750 ואתה יכול לקרוא לפונקציה פנימית של אובייקט זה ממש ממש עושה 1399 01:05:35,750 --> 01:05:39,610 שם, נקודה, ולאחר מכן את שמו של הפונקציה, או שוב שיטה. 1400 01:05:39,610 --> 01:05:41,160 זה פשוט מילה נרדפת, באמת. 1401 01:05:41,160 --> 01:05:42,450 >> ומה הפונקציה הזו עושה? 1402 01:05:42,450 --> 01:05:43,840 סוג של אתה יכול לנחש משמו. 1403 01:05:43,840 --> 01:05:45,590 קבל אלמנט לפי תעודת זהות. 1404 01:05:45,590 --> 01:05:50,040 אז זה הולך לחפש את דף האינטרנט, לחפש עץ ש, מחפש 1405 01:05:50,040 --> 01:05:55,210 כל צומת, אלמנט AKA, יש זיהוי ייחודי של שם סוף ציטוט ציטוט. 1406 01:05:55,210 --> 01:05:56,560 ואז מה אני הולך לעשות? 1407 01:05:56,560 --> 01:06:00,350 אני הולך לקבל את הערך הפנימי של צומת שעל העץ, ואני הולך 1408 01:06:00,350 --> 01:06:02,580 לומר איכשהו שלום לשם הזה. 1409 01:06:02,580 --> 01:06:05,360 >> אז לקחת ניחוש, למרות שיש לנו לא ראיתי את זה עדיין, מה לעשות בתוספת 1410 01:06:05,360 --> 01:06:07,396 סימנים אומר כאן וכאן כנראה? 1411 01:06:07,396 --> 01:06:08,230 >> קהל: לשרשר. 1412 01:06:08,230 --> 01:06:09,220 >> DAVID מלאן: לשרשר. 1413 01:06:09,220 --> 01:06:11,290 נכון, ואלה הם רק לעצב סוג של החלטות 1414 01:06:11,290 --> 01:06:12,280 אנשים עשו לפני שנים. 1415 01:06:12,280 --> 01:06:15,190 ב-PHP, אתה לשרשר דברים עם נקודות. 1416 01:06:15,190 --> 01:06:18,800 ב-C, אתה לקפוץ דרך חישוקים כמה ו לקרוא לפונקציות כמו strcopy () או 1417 01:06:18,800 --> 01:06:20,600 strcat () או פונקציות כגון אחרים. 1418 01:06:20,600 --> 01:06:22,060 אבל ב-JavaScript, אתה משתמש בפלוסים. 1419 01:06:22,060 --> 01:06:24,770 אז זה רק שרשור שלושה מיתרים - 1420 01:06:24,770 --> 01:06:27,850 שלום, שמו, ולאחר מכן סימן קריאה. 1421 01:06:27,850 --> 01:06:30,390 >> אז מתי ומדוע היא פונקציה זו קרא אף? 1422 01:06:30,390 --> 01:06:33,150 ובכן, תנחש מ HTML שבתחתית. 1423 01:06:33,150 --> 01:06:35,810 מדוע לברך () נקרא, או מתי? 1424 01:06:35,810 --> 01:06:39,730 1425 01:06:39,730 --> 01:06:44,030 >> ככל הנראה, כטוב ביותר שאני יכול לומר, על להגיש, כאשר טופס זה יוגש, 1426 01:06:44,030 --> 01:06:47,200 אני הולך לעשות מה שהוא בתוך הציטוטים אלה. 1427 01:06:47,200 --> 01:06:50,900 ובאופן ספציפי, אני הולך לקרוא לברך () ולאחר מכן בתמורת שווא. 1428 01:06:50,900 --> 01:06:53,090 >> ובכן, בואו לראות מה ברשת השפעה כאן היא ראשונה. 1429 01:06:53,090 --> 01:06:58,290 אז תן לי ללכת קדימה והקלד ב, נניח, לורן, שלח. 1430 01:06:58,290 --> 01:06:59,440 שלום לורן. 1431 01:06:59,440 --> 01:07:02,990 בואו לראות אם אולי זה היה רק יישום מזל. 1432 01:07:02,990 --> 01:07:03,200 לא ולא. 1433 01:07:03,200 --> 01:07:05,990 אז זה להקליד את כל מה שם אני באמת לשים שם. 1434 01:07:05,990 --> 01:07:07,970 >> אבל שים לב מה לא משתנה. 1435 01:07:07,970 --> 01:07:10,360 כתובת האתר הוא עדיין Dom-0.html. 1436 01:07:10,360 --> 01:07:11,820 אין register.php. 1437 01:07:11,820 --> 01:07:13,110 אין קובץ שני. 1438 01:07:13,110 --> 01:07:14,930 אין תכונת פעולה. 1439 01:07:14,930 --> 01:07:19,720 אז מה הוא שקר שיבה זו עושה ככל הנראה? 1440 01:07:19,720 --> 01:07:23,660 למה אני מתקשר לברך () ולאחר מכן חוזר שווא כנראה? 1441 01:07:23,660 --> 01:07:26,420 מה שבדרך כלל קורה בעת הלחיצה שלח בטופס שיש לנו אפילו 1442 01:07:26,420 --> 01:07:27,854 ראה בשבוע האחרון? 1443 01:07:27,854 --> 01:07:29,900 >> קהל: [לא ברור]. 1444 01:07:29,900 --> 01:07:30,860 >> DAVID מלאן: זה הולך לאנשהו, נכון? 1445 01:07:30,860 --> 01:07:32,720 זה הולך לחלק כתובת אתר יעד. 1446 01:07:32,720 --> 01:07:34,120 אבל אני לא רוצה שזה יקרה כאן. 1447 01:07:34,120 --> 01:07:37,620 אני רוצה דף האינטרנט שלי להיות לגמרי דינמי כמו ב-Gmail, שבו ברגע שאתה 1448 01:07:37,620 --> 01:07:38,650 שם, אתה תישאר שם. 1449 01:07:38,650 --> 01:07:42,900 כתובת האתר אינו משתנה באופן שבו מציין את הדף כולו מחדש. 1450 01:07:42,900 --> 01:07:46,680 במקום זאת, אני רק רוצה לשנות משהו כמו הדפסת משהו 1451 01:07:46,680 --> 01:07:48,320 כאן על המסך. 1452 01:07:48,320 --> 01:07:49,630 >> ובכן תנו לי לנקות את זה עד קצת. 1453 01:07:49,630 --> 01:07:55,370 הרשה לי לפתוח לא Dom-0, אבל הרשה לי לפתוח את dom-2. 1454 01:07:55,370 --> 01:07:57,350 רק כדי שראית כמה תחביר כאן. 1455 01:07:57,350 --> 01:08:02,080 >> מתברר כי מה שאנו פשוט לא הוא באמצעות JavaScript גלם. 1456 01:08:02,080 --> 01:08:04,420 אז זו באמת השפה ב-JavaScript. 1457 01:08:04,420 --> 01:08:07,340 חלק מכם אולי מכיר ספרייה נקראת jQuery. 1458 01:08:07,340 --> 01:08:09,980 >> אז jQuery היא לא אותו הדבר דבר כמו ב-JavaScript. 1459 01:08:09,980 --> 01:08:14,110 זה פשוט ספרייה שבאמת חכמה בחור כתב ופופולרי כגון 1460 01:08:14,110 --> 01:08:18,100 כי כמעט כולם בעולם עכשיו משתמש jQuery בעת השימוש ב-JavaScript. 1461 01:08:18,100 --> 01:08:20,890 ובמבט ראשון, בכנות, זה נראה קצת יותר ברורים מאליהם. 1462 01:08:20,890 --> 01:08:24,990 אבל אתה תמצא, במיוחד אם אתה הולך יש לפרויקט הגמר שלך עם אינטרנט 1463 01:08:24,990 --> 01:08:29,029 פיתוח, תמצא שזה מנקה את דברים וחוסך לך די 1464 01:08:29,029 --> 01:08:30,229 כמה שורות של קוד. 1465 01:08:30,229 --> 01:08:33,189 >> אז בואו רק להציץ בכמה טופס זה עובד. 1466 01:08:33,189 --> 01:08:35,664 שים לב מה שאני לא יסיר, ככל הנראה, מ-HTML שלי? 1467 01:08:35,664 --> 01:08:38,240 1468 01:08:38,240 --> 01:08:40,630 אין בתגיש מטפל אם אפשר לומר כך. 1469 01:08:40,630 --> 01:08:41,470 אין שום תכונה. 1470 01:08:41,470 --> 01:08:43,359 כי אתה יודע, מה אני לא באמת אוהב? 1471 01:08:43,359 --> 01:08:45,640 הרגשתי כאילו אנחנו נופלים להרגלים ישנים שם. 1472 01:08:45,640 --> 01:08:49,340 בדיוק כמו שזה התחיל להרגיש מרושל להתערבב גם עם CSS 1473 01:08:49,340 --> 01:08:52,149 HTML, כי אתה סוג של זריקה שפות שונות בכל רחבי 1474 01:08:52,149 --> 01:08:56,180 מקום, דומה שזה מתחיל להרגיש כמו כביש רע לרדת בי 1475 01:08:56,180 --> 01:09:01,069 אני שם את קוד JavaScript בתוכי HTML ולא הפקטורינג אותו החוצה. 1476 01:09:01,069 --> 01:09:02,279 >> אז זה הלקח כאן. 1477 01:09:02,279 --> 01:09:05,080 בDom-2.html, אני הפקטורינג אותו החוצה. 1478 01:09:05,080 --> 01:09:07,399 ואני עושה מעט דברים באופן שונה. 1479 01:09:07,399 --> 01:09:09,630 לעת עתה, אני הולך להניף את הידיים שלי על מה זה באמת 1480 01:09:09,630 --> 01:09:10,590 מתחת למכסת המנוע. 1481 01:09:10,590 --> 01:09:14,210 אבל רק לעת עתה תניח כי שראשון שורת קוד בספרייה זו 1482 01:09:14,210 --> 01:09:18,170 נקרא jQuery רק אומר כש המסמך מוכן, לעשות את הדברים הבאים. 1483 01:09:18,170 --> 01:09:20,080 >> מכיוון שדפי האינטרנט יכולים לקחת כמה זמן לטעון. 1484 01:09:20,080 --> 01:09:23,029 אתה יכול להיות על אינטרנט איטי חיבור, וזה יכול להיות מסתובב 1485 01:09:23,029 --> 01:09:25,290 וספינינג, ולבסוף הוא טעון. 1486 01:09:25,290 --> 01:09:29,060 קו זה של קוד פשוט אומר לחכות עד העמוד השלם מוכן, המסמך 1487 01:09:29,060 --> 01:09:31,189 מוכן, לפני ביצוע קוד זה. 1488 01:09:31,189 --> 01:09:34,390 >> ועכשיו שמנו לב, זה כנראה השימושיים ביותר הראשון 1489 01:09:34,390 --> 01:09:36,189 לקחת מן jQuery. 1490 01:09:36,189 --> 01:09:42,140 הקו הזה כאן הוא דומה מאוד ברוחו לשורה ארוכה הרבה יותר זה כאן. 1491 01:09:42,140 --> 01:09:46,920 ואילו בקוד JavaScript גלם, יש קיים אובייקט גלובלי מסמך ה 1492 01:09:46,920 --> 01:09:50,460 יש פונקציה שנקראת getElementById (), האנשים שכתבו 1493 01:09:50,460 --> 01:09:55,720 jQuery פשוטים שרק אומרים סימן דולר, ולאחר מכן בתוך 1494 01:09:55,720 --> 01:10:00,250 סוגריים לשים שני ציטוטים, ולאחר מכן לשים סמל חשיש ואחריו 1495 01:10:00,250 --> 01:10:02,250 זיהוי ייחודי אתה רוצה לתפוס. 1496 01:10:02,250 --> 01:10:06,170 אז זה שווה ערך ל document.getElementById. 1497 01:10:06,170 --> 01:10:11,090 >> בינתיים,. להגיש רק אומר על הגשת כל צורה שאתה 1498 01:10:11,090 --> 01:10:14,240 מתייחס לצד שמאל, ללכת קדימה ולבצע את זה. 1499 01:10:14,240 --> 01:10:16,600 אבל גם את זה הוא עכשיו הסקרנות. 1500 01:10:16,600 --> 01:10:19,560 מה מוזר על מה אני כבר מודגש כאן? 1501 01:10:19,560 --> 01:10:23,840 1502 01:10:23,840 --> 01:10:28,594 לא רק שזה סוג של בחינה תחבירית חדש, יש גם משהו חסר. 1503 01:10:28,594 --> 01:10:29,558 >> קהל: זה פשוט נקרא פונקציה? 1504 01:10:29,558 --> 01:10:31,970 זה לא נקרא התראה? 1505 01:10:31,970 --> 01:10:32,440 >> DAVID מלאן: כן. 1506 01:10:32,440 --> 01:10:35,450 ובכן, כל כך ערני () הוא למטה כאן, כדי להיות הוגן. 1507 01:10:35,450 --> 01:10:39,520 אבל אין כל אזכור של שם, כמו שאתה יודע, או foo 1508 01:10:39,520 --> 01:10:40,980 משהו כאן למעלה. 1509 01:10:40,980 --> 01:10:43,830 ואכן, זו אחת מהתכונות של JavaScript שדי 1510 01:10:43,830 --> 01:10:45,370 רב עוצמה, אבל גם די חדש. 1511 01:10:45,370 --> 01:10:47,460 ו-PHP באמת יש את זה גם כן. 1512 01:10:47,460 --> 01:10:49,500 >> תן לי ללכת ולעשות משהו ממש מהר. 1513 01:10:49,500 --> 01:10:52,030 תן לי ללכת קדימה ולשים את זה כאן. 1514 01:10:52,030 --> 01:10:52,600 תן לי לעשות את זה. 1515 01:10:52,600 --> 01:10:53,690 פונקציה. 1516 01:10:53,690 --> 01:10:56,455 בואו לקרוא מטפל זה (). 1517 01:10:56,455 --> 01:10:58,290 פונקצית מטפל כביכול. 1518 01:10:58,290 --> 01:11:00,110 משהו שמטפל בפעולה מסוימת. 1519 01:11:00,110 --> 01:11:02,700 תן לי לנקות הכניסה שלי. 1520 01:11:02,700 --> 01:11:04,380 ולשים את זה כאן. 1521 01:11:04,380 --> 01:11:06,090 ולשים את זה כאן. 1522 01:11:06,090 --> 01:11:06,470 כן. 1523 01:11:06,470 --> 01:11:07,060 אישור. 1524 01:11:07,060 --> 01:11:10,300 >> אז עכשיו יש לי פונקציה שנקראת מטפל () שאני לא ממש יודע 1525 01:11:10,300 --> 01:11:10,890 מה שהיא עושה עדיין. 1526 01:11:10,890 --> 01:11:12,710 פשוט יש לה עדיין את הדברים האלה. 1527 01:11:12,710 --> 01:11:13,900 אופס. 1528 01:11:13,900 --> 01:11:15,820 לקח יותר מדי. 1529 01:11:15,820 --> 01:11:18,490 בואו נעשה את זה. 1530 01:11:18,490 --> 01:11:18,990 בסדר. 1531 01:11:18,990 --> 01:11:20,240 סליחה. 1532 01:11:20,240 --> 01:11:23,140 1533 01:11:23,140 --> 01:11:23,690 בסדר. 1534 01:11:23,690 --> 01:11:24,720 תן לי לעשות את זה. 1535 01:11:24,720 --> 01:11:25,020 אישור. 1536 01:11:25,020 --> 01:11:27,040 זה נראה נחמד וישר קדימה עכשיו. 1537 01:11:27,040 --> 01:11:29,090 תן לי לעשות את זה. 1538 01:11:29,090 --> 01:11:29,860 לעשות את זה. 1539 01:11:29,860 --> 01:11:30,950 ואישור. 1540 01:11:30,950 --> 01:11:33,080 אז עכשיו, בואו נשים את זה כאן. 1541 01:11:33,080 --> 01:11:35,840 1542 01:11:35,840 --> 01:11:37,270 תכנות לא יותר על לטוס. 1543 01:11:37,270 --> 01:11:37,900 אישור. 1544 01:11:37,900 --> 01:11:40,000 >> אז עכשיו, בואו נחזור ל שבו התחיל את הסיפור. 1545 01:11:40,000 --> 01:11:43,530 בעבר, אמרתי כי קו זה כאן כלומר, כאשר המסמך מוכן, ללכת 1546 01:11:43,530 --> 01:11:44,380 מוזמנים לעשות את זה. 1547 01:11:44,380 --> 01:11:45,660 מה אני רוצה לעשות? 1548 01:11:45,660 --> 01:11:49,070 גם באופן ספציפי, אני רוצה ללכת קדימה, בצע את הפעולות הבאות. 1549 01:11:49,070 --> 01:11:53,700 ביצוע הקו הזה של קוד, ולאחר מכן מה שאני רוצה לעשות הוא לקרוא לזה 1550 01:11:53,700 --> 01:11:56,370 לתפקד כאשר הטופס נשלח. 1551 01:11:56,370 --> 01:11:57,730 >> עכשיו זה מה שהמעניין. 1552 01:11:57,730 --> 01:11:59,170 זה לא את עצמו לתפקד. 1553 01:11:59,170 --> 01:12:02,540 שים לב שאני לא לשים סוגריים כאן בדרך הרגילה. 1554 01:12:02,540 --> 01:12:06,800 אני עובר ממש פונקציה הנקראת מטפל () לפונקציה אחרת 1555 01:12:06,800 --> 01:12:10,800 קרא להגיש () כטיעון כ למרות שזה כמו משתנה. 1556 01:12:10,800 --> 01:12:14,290 וזו אחת מהתכונות של JavaScript, הוא פונקציות עצמם 1557 01:12:14,290 --> 01:12:15,710 הם באמת רק אובייקטים. 1558 01:12:15,710 --> 01:12:18,350 למעשה, הם באמת רק משתנים מסוג כלשהו. 1559 01:12:18,350 --> 01:12:21,340 ואם השם של הפונקציה הוא מטפל (), אין שום סיבה שאני לא יכול 1560 01:12:21,340 --> 01:12:23,390 להעביר את זה כבטיעון כאן. 1561 01:12:23,390 --> 01:12:27,530 וזה אומר כשאת הטופס עם זיהוי של הדגמה הוא 1562 01:12:27,530 --> 01:12:29,320 הוגש, קורא בפונקציה זו. 1563 01:12:29,320 --> 01:12:32,770 >> אבל עכשיו, אם אני לבטל את כל זה, מדוע אז אולי עשיתי 1564 01:12:32,770 --> 01:12:34,850 לפני זה רגע? 1565 01:12:34,850 --> 01:12:36,840 ובכן, זה פונקציה בעילום שם. 1566 01:12:36,840 --> 01:12:41,080 כי למען האמת, הבנתי למה אני טרח לבזבז זמן הכרזה 1567 01:12:41,080 --> 01:12:45,540 פונקציה שנקראת מטפל () רק לקרוא אותו באחת ורק במקום אחד? 1568 01:12:45,540 --> 01:12:48,640 אם אני לא צריך את השם, ואני לא צריך לקרוא לזה יותר ממקום אחד, 1569 01:12:48,640 --> 01:12:51,200 בואו פשוט ליישם את הפונקציה בדיוק איפה שאני צריך את זה. 1570 01:12:51,200 --> 01:12:55,190 ו-JavaScript ו-PHP תמיכה אז מה נקראים פונקציות אנונימיות ש 1571 01:12:55,190 --> 01:12:57,900 הרשה לי לעשות בדיוק את זה כאן. 1572 01:12:57,900 --> 01:12:59,570 >> אבל אנחנו רק מגרדים את פני השטח. 1573 01:12:59,570 --> 01:13:02,430 בואו להקניט עם רק כמה דוגמאות האחרונות כאן. 1574 01:13:02,430 --> 01:13:04,600 >> אם אני נכנסתי לquote.php. 1575 01:13:04,600 --> 01:13:07,160 1576 01:13:07,160 --> 01:13:11,870 שים לב שזה בעצם PHP פונקציה, תכנית PHP, שכתבתי 1577 01:13:11,870 --> 01:13:15,270 שמצפה פרמטר HTTP נקרא סמל, ואני יכול לעבור ב 1578 01:13:15,270 --> 01:13:16,730 ערך כמו FB. 1579 01:13:16,730 --> 01:13:20,010 ואם אנחנו באמת מסתכלים על המקור קוד, זה השאילתה לאתר ללא תשלום 1580 01:13:20,010 --> 01:13:23,680 בשם האוצר יאהו, בדיוק כמו P-סט שבע, וזה חוזר אליי 1581 01:13:23,680 --> 01:13:26,580 משהו בככל הנראה הפורמט הידוע הוא JSON - 1582 01:13:26,580 --> 01:13:28,010 סימון אובייקט JavaScript. 1583 01:13:28,010 --> 01:13:28,810 זה רק אובייקט. 1584 01:13:28,810 --> 01:13:32,500 שימו לב לסוגריים המסולסלים, את הציטוטים, המעי הגס, ואת הפסיקים. 1585 01:13:32,500 --> 01:13:34,720 >> עכשיו בינתיים, זה די מגניב. 1586 01:13:34,720 --> 01:13:38,520 כי אני כנראה יכול להשתמש בתכנות שפה כדי ליצור את הכתובות 1587 01:13:38,520 --> 01:13:40,370 שנראים כמו זה באופן דינמי, נכון? 1588 01:13:40,370 --> 01:13:43,340 אני יכול לשנות את זה ל-Google ולקבל בחזרה של גוגל 1589 01:13:43,340 --> 01:13:47,930 מחיר מניית של 1,017.55 $. 1590 01:13:47,930 --> 01:13:49,640 אז בואו נראה אם ​​אנחנו לא יכולים להשתמש בזה עכשיו. 1591 01:13:49,640 --> 01:13:56,590 >> תן לי ללכת לAJAX-0 כאן, אשר נראה את הדברים הבאים. 1592 01:13:56,590 --> 01:13:59,750 זה פשוט אתר שיש בי טופס עם כפתור. 1593 01:13:59,750 --> 01:14:05,860 תן לי כאן ללכת קדימה והקלד בYHOO לסמל מניית של יאהו, לחץ על קבל 1594 01:14:05,860 --> 01:14:10,530 ציטוט, ועכשיו שם לב שקבלתי כוננות עם 32.86. 1595 01:14:10,530 --> 01:14:14,050 >> תן לי באמת ללכת לגרסה מהודרת של דף זה, גרסה שתיים, ו 1596 01:14:14,050 --> 01:14:17,530 סוג ביניח מיקרוסופט, MSFT. 1597 01:14:17,530 --> 01:14:18,410 קבל הצעת. 1598 01:14:18,410 --> 01:14:19,850 ועכשיו שם לב, לא ערני. 1599 01:14:19,850 --> 01:14:22,770 שים לב איפה שכתוב מחיר שייקבע? 1600 01:14:22,770 --> 01:14:27,060 יש הפשוט של דוגמאות מרמז על מה Gchat, ופייסבוק 1601 01:14:27,060 --> 01:14:30,070 צ 'אט, ו-Gmail, ואחרים, כגון אתרים עושים בפועל על ידי 1602 01:14:30,070 --> 01:14:31,290 שינוי דף האינטרנט. 1603 01:14:31,290 --> 01:14:31,800 >> הודעה זו. 1604 01:14:31,800 --> 01:14:33,120 הרשה לי לטעון מחדש את הדף. 1605 01:14:33,120 --> 01:14:35,080 תן לי לפתוח את המפקח של כרום. 1606 01:14:35,080 --> 01:14:36,890 תן לי ללכת לאלמנטים כרטיסייה כאן למטה. 1607 01:14:36,890 --> 01:14:42,310 עכשיו שם לב אם אני קרב כאן למטה ו לפתוח את זה, שם לב שזה שלי 1608 01:14:42,310 --> 01:14:44,500 HTML DOM - מודל אובייקט המסמך שלי. 1609 01:14:44,500 --> 01:14:45,920 זוהי ה-HTML שלי. 1610 01:14:45,920 --> 01:14:48,750 אבל עכשיו שם לב, למרות שזה קורה להיות קצת קשה לראות את זה בשניהם 1611 01:14:48,750 --> 01:14:52,080 מקומות בפעם אחת, אם אני מקליד בFB עד כאן, לראות את התחתית 1612 01:14:52,080 --> 01:14:54,110 של המסך בלבד. 1613 01:14:54,110 --> 01:14:57,720 >> זה בעצם שינוי ה-HTML שלי על לטוס. 1614 01:14:57,720 --> 01:15:01,670 וזה עושה את זה בפשטות על ידי עושה משהו כזה. 1615 01:15:01,670 --> 01:15:06,800 אם אני פותח את AJAX-2, שימו לב ליישום משהו סקסי כמו 1616 01:15:06,800 --> 01:15:09,560 כי, למרות שזה די מכוער, אבל מתוחכם כמו ש 1617 01:15:09,560 --> 01:15:11,910 פונקציונלי, יש לו חלק HTML בתחתית. 1618 01:15:11,910 --> 01:15:13,810 אבל שם לב שאני נהגתי לתייג. 1619 01:15:13,810 --> 01:15:16,640 אנחנו כבר לא בשימוש זה בעבר, אבל זה כמו, אבל זה לא בכוח 1620 01:15:16,640 --> 01:15:17,840 כל מה שעל קו חדש. 1621 01:15:17,840 --> 01:15:20,830 זה פשוט הופך את אזור מלבני על אותו הקו במהות. 1622 01:15:20,830 --> 01:15:22,870 >> שים לב שאני נתתי לו תעודת זהות של מחיר. 1623 01:15:22,870 --> 01:15:26,800 ומתברר שעל ידי שימוש באותה ספריית JavaScript, יש לי פונקציה 1624 01:15:26,800 --> 01:15:30,440 קרא ציטוט () שנקרא בכל פעם הטופס נשלח. 1625 01:15:30,440 --> 01:15:31,800 ומה שאני עושה הוא זה. 1626 01:15:31,800 --> 01:15:35,730 אני מכריז על משתנה ב-JavaScript נקרא URL, שמירת הערך 1627 01:15:35,730 --> 01:15:38,650 quote.php? סמל =. 1628 01:15:38,650 --> 01:15:44,220 במילים אחרות, אני בעצמי אני מתחיל כדי להכין את בקשת HTTP, ולאחר מכן 1629 01:15:44,220 --> 01:15:49,250 אני שרשור על זה עם תוספת כל האלמנט עם ID 1630 01:15:49,250 --> 01:15:54,190 של סמל, שההודעה היא כי שדה טקסט מימין לכאן. 1631 01:15:54,190 --> 01:15:56,630 אז בדיוק כמו שהיו לנו צורות בעבר. 1632 01:15:56,630 --> 01:16:01,450 >> ואז מתברר בjQuery, אם אתה להתקשר. val (), שקורא לval 1633 01:16:01,450 --> 01:16:05,900 פונקציה, פונקצית ערך, שמקבלת כל מה שהמשתמש הקליד פנימה 1634 01:16:05,900 --> 01:16:08,920 ולאחר מכן את כל תעבורת הרשת מה שקורה הוא זה. 1635 01:16:08,920 --> 01:16:11,230 $. GetJSON. 1636 01:16:11,230 --> 01:16:13,720 >> ואגב זה, סימן דולר הוא רק סימון מקוצר. 1637 01:16:13,720 --> 01:16:16,860 זה באמת jQuery.getJSON. 1638 01:16:16,860 --> 01:16:21,520 קבל אותי לJSON מכתובת אתר זו, וכאשר הבקשה חוזרת, קורא לזה 1639 01:16:21,520 --> 01:16:26,550 פונקציה ועובר כבטיעון כל מה שחזר מהשרת. 1640 01:16:26,550 --> 01:16:31,205 >> אז במילים אחרות, אם אני חוזר ל דפדפן, ואני חוזר לquote.php, 1641 01:16:31,205 --> 01:16:35,590 מה הדפדפן שלי עושה הוא מקבל נתח זה של נתונים. 1642 01:16:35,590 --> 01:16:38,930 וכשאני הולך לדף אינטרנט זה כאן, תבחין אם במקום ללכת לרשת 1643 01:16:38,930 --> 01:16:43,820 כרטיסייה ולנקות אותה, ולאחר מכן להקליד משהו כמו GOOG לגוגל וקבל 1644 01:16:43,820 --> 01:16:46,340 ציטוט, שים לב הדף לא השתנה. 1645 01:16:46,340 --> 01:16:50,990 אבל בקשת HTTP נעשתה, ומה חזרתי לכאן אם אנחנו מסתכלים על 1646 01:16:50,990 --> 01:16:56,130 תגובה היא חבורה של JSON שלמה שאנחנו לגשת לבסוף עם 1647 01:16:56,130 --> 01:16:58,070 הקו הפשוט הזה כאן. 1648 01:16:58,070 --> 01:17:00,150 >> נתונים הוא מה שקבל מהשרת. 1649 01:17:00,150 --> 01:17:02,120 מחיר הוא שמו של מפתח אכפת לי. 1650 01:17:02,120 --> 01:17:05,230 אז data.price נותן לי את זה. 1651 01:17:05,230 --> 01:17:07,540 >> עכשיו בינתיים, וזה הוא הדוגמא האחרונה. 1652 01:17:07,540 --> 01:17:09,280 אתה יכול לעשות זאת יותר בדף. 1653 01:17:09,280 --> 01:17:12,440 אחד למעשה, גם שתיים. 1654 01:17:12,440 --> 01:17:14,780 אנחנו יכולים להחזיר את לתייג, אם אתה זוכר את זה. 1655 01:17:14,780 --> 01:17:15,850 זה ב-JavaScript. 1656 01:17:15,850 --> 01:17:17,110 אנחנו יכולים לעשות את זה. 1657 01:17:17,110 --> 01:17:17,690 מאוד מרגש. 1658 01:17:17,690 --> 01:17:18,800 אנחנו נשאיר את זה כמו סחרור מסוכן. 1659 01:17:18,800 --> 01:17:21,590 >> אבל יותר מרגש, אתה יכול לעשות דברים כאלה. 1660 01:17:21,590 --> 01:17:25,940 אם אני הולך למיקום גיאוגרפי-1, מתברר כי Chrome יודע שאנחנו נמצאים ב 1661 01:17:25,940 --> 01:17:30,672 קווי אורך ורוחב 42.37. -71.10. 1662 01:17:30,672 --> 01:17:32,940 אז יש אפילו יותר יש לרשותכם. 1663 01:17:32,940 --> 01:17:34,290 אבל עוד על כך בשבוע הבא. 1664 01:17:34,290 --> 01:17:35,540 להתראות ביום שני. 1665 01:17:35,540 --> 01:17:37,558