1 00:00:00,000 --> 00:00:02,964 2 00:00:02,964 --> 00:00:05,434 >> [เล่นเพลง] 3 00:00:05,434 --> 00:00:11,825 4 00:00:11,825 --> 00:00:12,700 HANNAH: สวัสดีครับทุกคน 5 00:00:12,700 --> 00:00:15,866 ขอบคุณคนมากสำหรับการออกมา ในสภาพอากาศที่น่ารังเกียจสำหรับการตอบคำถามอย่างใดอย่างหนึ่ง 6 00:00:15,866 --> 00:00:16,910 เซสชั่นการตรวจสอบ 7 00:00:16,910 --> 00:00:20,020 ในฐานะที่พวกคุณรู้ว่าการตอบคำถาม หนึ่งพุธนี้ 8 00:00:20,020 --> 00:00:22,209 ดังนั้นเรากำลังจะไป ผ่านพวงของหัวข้อ 9 00:00:22,209 --> 00:00:24,000 Davin: Hey, ฉันสามารถพูดได้ บางสิ่งบางอย่างจริงอย่างรวดเร็ว? 10 00:00:24,000 --> 00:00:25,215 HANNAH: ใช่ Davin ที่เกิด จะพูดอะไรจริงอย่างรวดเร็ว 11 00:00:25,215 --> 00:00:25,780 Davin: ขออภัย 12 00:00:25,780 --> 00:00:29,490 เพียงแค่จริงอย่างรวดเร็วถ้าคุณมีคำถาม เกี่ยวกับการตอบคำถามที่คุณสามารถไปออนไลน์ 13 00:00:29,490 --> 00:00:32,420 ไปที่ 2014 แบบทดสอบหนึ่งเกี่ยวกับการตอบคำถาม 14 00:00:32,420 --> 00:00:34,680 มันมีจิสติกส์เกี่ยวกับ ที่จะไปเมื่อไป 15 00:00:34,680 --> 00:00:38,100 หากคุณกำลังลงทะเบียนเรียนไปพร้อม ๆ กันเราไม่ จะมีแบบทดสอบแต่งหน้าที่ 5:30 16 00:00:38,100 --> 00:00:40,350 หรือถ้าคุณส่งฉันปัญหา คุณมีบางปัญหาอื่น ๆ 17 00:00:40,350 --> 00:00:42,640 แต่ 05:30 คือการแต่งหน้า เวลาในวันพุธที่ 18 00:00:42,640 --> 00:00:44,540 แต่ถ้าคุณมีคำถาม คำถามทั่วไป 19 00:00:44,540 --> 00:00:45,748 ออนไลน์มีทั้งหมดจิสติกส์ 20 00:00:45,748 --> 00:00:47,690 เพื่อตรวจสอบมีครั้งแรก 21 00:00:47,690 --> 00:00:49,070 >> HANNAH: น่ากลัว 22 00:00:49,070 --> 00:00:53,030 ดังนั้นนี่คือรายการใหญ่ของหัวข้อ ที่เรากำลังจะไปถึงวันนี้ 23 00:00:53,030 --> 00:00:57,390 ฉันจะครอบคลุมทั้งหมดของ C สิ่งซึ่งเป็นที่คอลัมน์แรก 24 00:00:57,390 --> 00:01:00,710 ดังนั้นสิ่งที่ C ที่เรา หลังจากที่ครอบคลุมแบบทดสอบศูนย์ 25 00:01:00,710 --> 00:01:05,459 เริ่มต้นด้วยรายการที่เชื่อมโยง ซึ่งรวมถึงตัวชี้ 26 00:01:05,459 --> 00:01:07,668 >> สิทธิทั้งหมดดังนั้นเราจึงเห็นนี้ ในเซสชั่นการตรวจสอบที่ผ่านมา 27 00:01:07,668 --> 00:01:10,000 ดังนั้นฉันจะผ่านไป นี้เป็นนิด ๆ หน่อย ๆ ได้เร็วขึ้น 28 00:01:10,000 --> 00:01:13,500 เพียงแค่ยกมือของคุณถ้าคุณต้องการให้ฉันไป ช้าลงหรือบางสิ่งบางอย่างที่อยู่ไกลออกไป 29 00:01:13,500 --> 00:01:17,150 แต่เราใช้การเชื่อมโยงรายชื่อเพราะ เราเริ่มต้นใน C กับอาร์เรย์ 30 00:01:17,150 --> 00:01:20,920 และอาร์เรย์ที่ดี แต่ ปัญหาคือพวกเขามีขนาดคงที่ 31 00:01:20,920 --> 00:01:24,925 รายการที่เชื่อมโยงช่วยให้เราสามารถสร้าง ขนาดโครงสร้างข้อมูลแบบไดนามิก 32 00:01:24,925 --> 00:01:28,520 33 00:01:28,520 --> 00:01:32,320 >> และเรามีการดำเนินงานขั้นพื้นฐานของเรา แทรกลบและค้นหา 34 00:01:32,320 --> 00:01:36,780 และเราสามารถทำแทรกใน กรณีที่เลวร้ายที่สุดครั้งอย่างต่อเนื่อง 35 00:01:36,780 --> 00:01:39,140 ถ้าเราเพียงแค่วางมันไว้ที่จุดเริ่มต้นมาก 36 00:01:39,140 --> 00:01:45,220 ลบและค้นหาที่เลวร้ายที่สุด คดีใหญ่โอ้เวลา n 37 00:01:45,220 --> 00:01:47,140 ดังนั้นอีกครั้งเพียงเพื่อพลิก ผ่านภาพเหล่านี้ 38 00:01:47,140 --> 00:01:50,860 ฉันรู้ว่าเราเห็นเหล่านี้เป็นครั้งสุดท้าย แต่เรา ต้องการที่จะติดตามการเชื่อมโยงรายชื่อของเรา 39 00:01:50,860 --> 00:01:53,440 โดยการติดตาม หัวของรายการของเราเชื่อมโยง 40 00:01:53,440 --> 00:01:55,580 เพราะเรารู้ว่า แต่ละโหนดของเรา 41 00:01:55,580 --> 00:01:58,610 เป็นเพียงการไปให้ชี้ไปที่ โหนดถั​​ดไปในรายการของเราเชื่อมโยง 42 00:01:58,610 --> 00:02:00,460 >> นั่นคือวิธีการที่เราติดตาม 43 00:02:00,460 --> 00:02:02,910 แม้ว่าเหล่านี้ไม่ได้ ชิ้นอย่างต่อเนื่องของหน่วยความจำ 44 00:02:02,910 --> 00:02:07,410 เราสามารถค้นหาได้โดยเพียงแค่ ต่อไปนี้ลูกศรที่แตกต่างกัน 45 00:02:07,410 --> 00:02:09,800 นี่คือโครงสร้างของเรา สำหรับโหนดรายการที่เชื่อมโยง 46 00:02:09,800 --> 00:02:11,440 เราเห็นนี้เป็นครั้งสุดท้าย 47 00:02:11,440 --> 00:02:13,080 เรามีโหนด struct ของเรา 48 00:02:13,080 --> 00:02:14,340 และมันก็มีสองคุณสมบัติ 49 00:02:14,340 --> 00:02:17,020 จำนวนหนึ่งที่เกิดขึ้นจริง ค่าที่เราต้องการในการจัดเก็บ 50 00:02:17,020 --> 00:02:18,290 ในกรณีนี้มันเป็นจำนวนเต็ม 51 00:02:18,290 --> 00:02:21,100 มันอาจจะเป็นสตริงก็สามารถทำได้ เป็นถ่านสิ่งที่คุณต้องการ 52 00:02:21,100 --> 00:02:24,710 และจากนั้นเราจะต้องติดตาม โหนดถั​​ดไปในรายการของเราเชื่อมโยง 53 00:02:24,710 --> 00:02:29,797 เพื่อให้เป็นไปได้ ตัวชี้ไปยังโหนดถั​​ดไป 54 00:02:29,797 --> 00:02:31,880 ถ้าคุณได้เพียงแค่การทำ การค้นหาเช่นฉันกล่าวก่อน 55 00:02:31,880 --> 00:02:34,900 คุณจะต้องทำตามลูกศรของคุณลง 56 00:02:34,900 --> 00:02:40,720 แทรกคุณจะติดตาม ของที่ส่วนที่เหลือของรายการของคุณ 57 00:02:40,720 --> 00:02:44,150 และคุณต้องการที่จะเปลี่ยนเส้นทางหัว ให้ชี้ไปที่องค์ประกอบใหม่ของเราซึ่ง 58 00:02:44,150 --> 00:02:46,640 ในกรณีนี้เป็นหนึ่ง แล้วใครจะชี้ 59 00:02:46,640 --> 00:02:49,480 เพื่อที่เหลือของรายการที่เชื่อมโยง 60 00:02:49,480 --> 00:02:52,996 ดังนั้นอีกครั้งฉันรู้ว่านี้เป็นเพียงเล็กน้อย บิตของการทำซ้ำจากศูนย์การตอบคำถาม 61 00:02:52,996 --> 00:02:55,370 ดังนั้นเราจะต้องระมัดระวังเป็นอย่างมาก เกี่ยวกับคำสั่งที่เรา 62 00:02:55,370 --> 00:03:00,390 ทำ pointings เหล่านี้เพื่อให้เราไม่ได้ สูญเสียการติดตามของด้านหลังของรายการ 63 00:03:00,390 --> 00:03:04,122 ตกลงใด ๆ กับคำถาม เพียงรายการเชื่อมโยงโดยลำพัง? 64 00:03:04,122 --> 00:03:06,060 น่ากลัว, OK เย็น 65 00:03:06,060 --> 00:03:09,410 >> ดังนั้นตอนนี้เรากำลังจะไปสู่​​บางสิ่งบางอย่าง เพียงเล็กน้อยที่ซับซ้อนมากขึ้น 66 00:03:09,410 --> 00:03:10,920 รายการเชื่อมโยงทวีคูณ 67 00:03:10,920 --> 00:03:13,680 ดังนั้นนอกเหนือจากการรักษา การติดตามของโหนดถั​​ดไป 68 00:03:13,680 --> 00:03:16,220 เรายังต้องการที่จะติดตาม ของโหนดก่อนหน้านี้ 69 00:03:16,220 --> 00:03:19,580 และสิ่งนี้จะช่วยให้เราถ้าเรา จุดที่บางส่วนในรายการที่เชื่อมโยงของเรา 70 00:03:19,580 --> 00:03:23,110 ไม่เพียง แต่ไปข้างหน้า แต่ ยังย้ำไปข้างหลัง 71 00:03:23,110 --> 00:03:25,220 เพราะอย่างที่เราเห็นใน รายการที่เชื่อมโยงโดยลำพัง 72 00:03:25,220 --> 00:03:27,980 ถ้าเราอยู่ในโหนดบางส่วนและ ทั้งหมดในทันทีที่เราตัดสินใจ 73 00:03:27,980 --> 00:03:30,160 ที่จริงผมอยากจะไป โหนดขวาก่อนที่ฉัน 74 00:03:30,160 --> 00:03:32,034 คุณจะต้องไปทั้งหมด ทางกลับไปที่หัว 75 00:03:32,034 --> 00:03:35,710 และย้ำถึงจนกว่าคุณจะพบ โหนดที่คุณกำลังมองหา 76 00:03:35,710 --> 00:03:37,680 >> ดังนั้นนี้ทำให้สิ่งที่ เล็กน้อยง่ายขึ้นในขณะที่เรากำลัง 77 00:03:37,680 --> 00:03:39,670 พยายามที่จะย้ำ ผ่านรายการที่เชื่อมโยงของเรา 78 00:03:39,670 --> 00:03:47,870 แต่เราต้องติดตามอย่างใดอย่างหนึ่ง ตัวชี้มากขึ้นเพื่อดาวดวงหนึ่งโหนดเพิ่มเติม 79 00:03:47,870 --> 00:03:50,830 สิทธิทั้งหมดเพื่อให้ที่นี่มาส่วนที่สนุก 80 00:03:50,830 --> 00:03:55,600 เรากำลังจะไปฝึกการใช้ ลบสำหรับรายการที่เชื่อมโยงเป็นทวีคูณ 81 00:03:55,600 --> 00:03:58,660 ดังนั้นนี่คือสิ่งที่ เกมที่ยุติธรรมโดยสิ้นเชิงสำหรับการตอบคำถาม 82 00:03:58,660 --> 00:04:00,750 มันแสดงให้เห็นขึ้นในแบบทดสอบที่ผ่านมา 83 00:04:00,750 --> 00:04:04,220 ดังนั้นแน่นอนต้องเตรียม โค้ดนิด ๆ หน่อย ๆ ในซี 84 00:04:04,220 --> 00:04:07,900 อย่าลืมว่ามีทั้งหมด PHP นี้สนุกและ JavaScript, 85 00:04:07,900 --> 00:04:10,560 เรายังคงต้องจำ ที่จะทำซีดังนั้นแปรงขึ้นบนที่ 86 00:04:10,560 --> 00:04:12,146 ถ้าคุณรู้สึกสนิม 87 00:04:12,146 --> 00:04:14,580 >> สิทธิทั้งหมดให้ดูว่าเราสามารถทำเช่นนี้ 88 00:04:14,580 --> 00:04:16,312 ตกลงเย็น 89 00:04:16,312 --> 00:04:18,600 ดังนั้นเราจะพยายาม การแก้ไขที่เหมาะสมในที่นี่ 90 00:04:18,600 --> 00:04:20,707 และหวังว่านี้เป็นไปตามแผน 91 00:04:20,707 --> 00:04:23,915 สิทธิทั้งหมดไม่มีใครต้องการที่จะให้ฉัน ข้อเสนอแนะที่เป็นวิธีการที่ฉันควรเริ่มต้น? 92 00:04:23,915 --> 00:04:27,030 สมมติฐานเท่านั้นฉัน การทำคือว่าผมอยู่แล้ว 93 00:04:27,030 --> 00:04:30,180 มีโครงสร้างที่กำหนดไว้ หนึ่งที่ผมแสดงให้เห็นในหน้าสุดท้าย 94 00:04:30,180 --> 00:04:31,420 บนภาพนิ่งที่ผ่านมา 95 00:04:31,420 --> 00:04:39,250 และฉันเก็บหัวของการเชื่อมโยงของฉัน รายการในตัวชี้บางอย่างที่เรียกว่ารายการ 96 00:04:39,250 --> 00:04:42,190 ไม่มีใครต้องการที่จะได้รับฉันเริ่มต้น? 97 00:04:42,190 --> 00:04:45,410 >> ผู้ชม: คุณสามารถสร้างใหม่ โหนดที่จะเรียกผ่านรายการ? 98 00:04:45,410 --> 00:04:46,410 >> HANNAH: น่ากลัวดังนั้น เรากำลังจะสร้าง 99 00:04:46,410 --> 00:04:47,951 โหนดใหม่ที่จะรวบรวมข้อมูลผ่านรายการ 100 00:04:47,951 --> 00:04:48,570 ฉันชอบที่ 101 00:04:48,570 --> 00:04:50,799 ฉันเพิ่งจะเรียกว่าตัวชี้ถ้าที่ตกลง 102 00:04:50,799 --> 00:04:52,340 และสถานที่ที่มันควรจะมา แต่เดิมเริ่มต้นอย่างไร 103 00:04:52,340 --> 00:04:57,280 104 00:04:57,280 --> 00:04:59,840 >> ผู้ชม: น่าจะเป็นที่ หัวของรายการ 105 00:04:59,840 --> 00:05:00,590 HANNAH: สวย 106 00:05:00,590 --> 00:05:03,670 เราต้องการที่จะเริ่มต้นที่หัวซึ่ง ผมบอกว่าเป็นไปได้ที่จะถูกเก็บไว้ในรายการ 107 00:05:03,670 --> 00:05:04,170 น่ากลัว 108 00:05:04,170 --> 00:05:05,220 เพื่อให้ห่างไกลที่ดีเพื่อให้ 109 00:05:05,220 --> 00:05:08,260 และตอนนี้เป้าหมายของเราคือ ย้ำผ่านรายการ 110 00:05:08,260 --> 00:05:12,870 จนกว่าเราจะพบกับโหนด n ค่าที่เราต้องการที่จะลบ 111 00:05:12,870 --> 00:05:13,540 OK? 112 00:05:13,540 --> 00:05:15,910 >> ดังนั้นตอนนี้เป็นส่วนหนึ่งที่ เราต้องการที่จะย้ำถึง 113 00:05:15,910 --> 00:05:19,488 ใครสามารถแนะนำ วิธีที่จะย้ำผ่าน? 114 00:05:19,488 --> 00:05:20,979 >> ผู้ชม: ห่วง 115 00:05:20,979 --> 00:05:21,840 >> HANNAH: ห่วง 116 00:05:21,840 --> 00:05:22,620 ฉันรักมัน 117 00:05:22,620 --> 00:05:25,550 โดยเฉพาะเราสามารถลองห่วงขณะ 118 00:05:25,550 --> 00:05:30,919 ตกลงเรารู้ว่าเราได้มาถึง ตอนท้ายของรายการของเราเมื่อสิ่งที่? 119 00:05:30,919 --> 00:05:32,210 ผู้ชม: เมื่อชี้เป็นโมฆะ 120 00:05:32,210 --> 00:05:33,418 HANNAH: เมื่อชี้เป็นโมฆะ 121 00:05:33,418 --> 00:05:34,320 ที่สวยงาม, ฉันรักมัน 122 00:05:34,320 --> 00:05:35,110 ตกลงเย็น 123 00:05:35,110 --> 00:05:39,300 124 00:05:39,300 --> 00:05:43,190 ดังนั้นขอโทษถ้ารั้งขอบเขตของฉันคือ ชนิดของการลดลงปิดหน้าจอ 125 00:05:43,190 --> 00:05:44,090 เรานำมันกลับ 126 00:05:44,090 --> 00:05:46,610 ตกลงเย็น 127 00:05:46,610 --> 00:05:48,690 ทำอะไรต่อไป 128 00:05:48,690 --> 00:05:51,950 >> ดังนั้นเราจึงรู้ว่าเราต้องการที่จะลบ โหนดที่มีค่า n 129 00:05:51,950 --> 00:05:56,340 ดังนั้นลองหากรณีที่ เราจริงพบโหนดของเรา 130 00:05:56,340 --> 00:05:57,840 ดังนั้นวิธีการที่ฉันจะตรวจสอบว่า? 131 00:05:57,840 --> 00:06:02,210 ฉันต้องการเพียงแค่บอกว่าถ้าชี้แล้วถ้าฉัน ต้องการที่จะได้รับค่าออกมาจากตัวชี้ 132 00:06:02,210 --> 00:06:08,940 ฉันเพียงแค่ arrow n, เท่ากับ n พารามิเตอร์ 133 00:06:08,940 --> 00:06:14,490 ที่เราให้กับฟังก์ชั่นนี้ โหนดที่เราต้องการที่จะลบจริง 134 00:06:14,490 --> 00:06:17,090 คำถามใด ๆ จนถึงที่นี่? 135 00:06:17,090 --> 00:06:18,360 สิทธิ์ทั้งหมด 136 00:06:18,360 --> 00:06:24,140 ตกลงดังนั้นตอนนี้เราจะวาดภาพได้อย่างรวดเร็ว ในคณะกรรมการเพื่อให้เห็นภาพนี้ 137 00:06:24,140 --> 00:06:30,710 >> ดังนั้นสมมติว่ามีโหนดที่น่ารักของเรา 138 00:06:30,710 --> 00:06:34,480 และมันมีค่าที่ฉันอยากจะพูดแค่สี่ 139 00:06:34,480 --> 00:06:40,340 และมันก็ชี้ไปข้างหน้า โหนดในรายการที่เชื่อมโยงของเรา 140 00:06:40,340 --> 00:06:42,220 และไม่มีอะไรก่อนที่จะ 141 00:06:42,220 --> 00:06:45,800 ดังนั้นเราจึงมีก่อนหน้านี้ ชี้ไปที่อะไร 142 00:06:45,800 --> 00:06:48,110 ในกรณีนี้เราชี้ไปข้างหลัง 143 00:06:48,110 --> 00:06:50,960 OK เพียงแค่การตั้งค่าของฉัน เชื่อมโยงรายการมากกว่าที่นี่ 144 00:06:50,960 --> 00:06:53,630 และเรามีรายชื่อที่ชี้ โครงสร้างนี้จะเริ่มต้นด้วย 145 00:06:53,630 --> 00:06:57,220 146 00:06:57,220 --> 00:07:00,485 ผมจะวาดอีกหนึ่งสำหรับ เพราะความสมบูรณ์ 147 00:07:00,485 --> 00:07:04,209 148 00:07:04,209 --> 00:07:06,117 ตกลง 149 00:07:06,117 --> 00:07:07,480 ผมจะชี้นี้ไปข้างหน้า 150 00:07:07,480 --> 00:07:09,550 และผมจะชี้ว่าหนึ่งกลับ 151 00:07:09,550 --> 00:07:10,360 โอ๊ะขอโทษ 152 00:07:10,360 --> 00:07:12,710 ใช่มีนี้ไปข้างหลัง 153 00:07:12,710 --> 00:07:15,548 154 00:07:15,548 --> 00:07:16,967 ทำมันอีกครั้ง 155 00:07:16,967 --> 00:07:18,330 ตกลงเราจะไปที่นั่น 156 00:07:18,330 --> 00:07:19,910 สิทธิทั้งหมดได้รับมัน 157 00:07:19,910 --> 00:07:21,780 ตกลงนี่คือภาพของเรา 158 00:07:21,780 --> 00:07:24,860 >> ตกลงดังนั้นเราจึงต้องการที่จะต้องพิจารณาทั้งสองกรณี 159 00:07:24,860 --> 00:07:27,330 กรณีแรกคือถ้า โหนดเราต้องการที่จะลบ 160 00:07:27,330 --> 00:07:29,420 ที่เริ่มต้นมากของรายการของเรา 161 00:07:29,420 --> 00:07:34,070 แล้วกรณีที่สองที่เราต้องการ ที่จะต้องพิจารณาคือถ้ามันเป็นที่ใด 162 00:07:34,070 --> 00:07:37,660 ผมเข้าใจว่าเรื่องนี้โดยสิ้นเชิง วาดยุ่งกับการลบทั้งหมดของฉัน 163 00:07:37,660 --> 00:07:40,400 แต่หวังว่าเราจะพยายามที่จะ ให้ชัดเจนด้วยรหัสบางอย่าง 164 00:07:40,400 --> 00:07:45,450 >> ตกลงเพื่อให้ครอบคลุมกรณี ที่เราพบโหนดของเรา 165 00:07:45,450 --> 00:07:48,900 และมันเป็นเรื่องที่ดีมาก จุดเริ่มต้นของรายการที่เชื่อมโยงของเรา 166 00:07:48,900 --> 00:07:50,810 ทุกคนที่ให้ฉัน ข้อเสนอแนะของที่นี่เป็นสิ่งที่ 167 00:07:50,810 --> 00:07:54,684 ฉันควรทำอย่างไรที่จริงเอาโหนดของเราหรือไม่ 168 00:07:54,684 --> 00:07:55,970 มันเป็นเรื่องเล็ก ๆ น้อย ๆ ที่ยุ่งยาก 169 00:07:55,970 --> 00:07:56,470 OK? 170 00:07:56,470 --> 00:07:59,628 >> ผู้ชม: คุณต้องใช้เวลา โหนดที่จะเป็นก่อนที่จะ 171 00:07:59,628 --> 00:08:01,794 และทำให้มันชี้ไปที่ อย่างใดอย่างหนึ่งที่จะเป็นหลังจากที่มัน 172 00:08:01,794 --> 00:08:03,004 และใช้เวลาโหนที่ จะเป็นหลังจากที่มันและทำให้ 173 00:08:03,004 --> 00:08:04,554 มันชี้ไปยังโหนดก่อนที่จะ 174 00:08:04,554 --> 00:08:05,220 HANNAH: แน่นอน 175 00:08:05,220 --> 00:08:10,640 OK เพื่อให้เป็นกรณีนี้ where-- เรามีสองกรณี 176 00:08:10,640 --> 00:08:14,100 เรามีกรณีที่ โหนดที่เรากำลังมองหา 177 00:08:14,100 --> 00:08:18,270 เป็นด้านหน้าของรายการ 178 00:08:18,270 --> 00:08:23,110 ตกลงแล้วกรณีที่คุณ อธิบายเป็นอย่างอื่นใช่มั้ย? 179 00:08:23,110 --> 00:08:24,500 มันเป็นที่อื่นในรายการ 180 00:08:24,500 --> 00:08:27,460 181 00:08:27,460 --> 00:08:32,840 ดังนั้นคุณจึงกล่าวว่าเราจำเป็นที่จะต้อง มองไปที่โหนดก่อนหน้านี้ 182 00:08:32,840 --> 00:08:36,500 และทำให้โหนดก่อนหน้านี้ ชี้ไปที่โหนดต่อไป 183 00:08:36,500 --> 00:08:40,510 ดังนั้นสมมติว่าเรา พยายามที่จะออกจากห้า 184 00:08:40,510 --> 00:08:43,059 ในภาพวาดของฉันยุ่งมากมากกว่าที่นี่ 185 00:08:43,059 --> 00:08:47,530 เราต้องการที่จะให้แน่ใจว่า สี่ตอนนี้ชี้ไปที่หก 186 00:08:47,530 --> 00:08:49,590 สี่จุดต่อไปถึงหก 187 00:08:49,590 --> 00:08:52,150 และหกจุดก่อนถึงสี่ 188 00:08:52,150 --> 00:08:53,960 นั่นคือเป้าหมายของเราที่นี่ใช่มั้ย? 189 00:08:53,960 --> 00:08:56,150 นี่คือสิ่งที่ผมคิดว่าคุณ กล่าวว่าเพียงแค่ไปที่นั่น 190 00:08:56,150 --> 00:08:58,450 >> ตกลงจึงขอได้ที่ชิ้นแรก 191 00:08:58,450 --> 00:09:02,300 ขอทำมี ชี้ก่อนหน้าก่อนหน้า 192 00:09:02,300 --> 00:09:06,550 193 00:09:06,550 --> 00:09:09,690 ดังนั้นสี่ต่อไปควรชี้ไปที่อะไร? 194 00:09:09,690 --> 00:09:13,210 195 00:09:13,210 --> 00:09:14,900 ว่าในกรณีนี้หก 196 00:09:14,900 --> 00:09:18,470 ดังนั้นเราควรจะพูดว่าตัวชี้ต่อไป 197 00:09:18,470 --> 00:09:20,600 OK? 198 00:09:20,600 --> 00:09:21,150 สิทธิ์ทั้งหมด 199 00:09:21,150 --> 00:09:24,870 จึงขอได้กำจัดของภาพที่น่าเกลียดนี้ และพยายามที่จะวาดหนึ่งดีกว่าเล็กน้อย 200 00:09:24,870 --> 00:09:29,040 201 00:09:29,040 --> 00:09:31,172 เรามีหัวรายการของเราที่นี่ 202 00:09:31,172 --> 00:09:36,440 203 00:09:36,440 --> 00:09:42,740 และที่ชี้ไปยังโหนดแรกใน รายการที่เชื่อมโยงของเราซึ่งเรากล่าวว่าเป็นสี่ 204 00:09:42,740 --> 00:09:45,620 นี่คือโหนดที่สองของเราห้า 205 00:09:45,620 --> 00:09:47,307 และโหนดที่สามของเราหก 206 00:09:47,307 --> 00:09:50,265 เพียงแค่พยายามที่จะวาดเดียวกันแน่นอน ภาพเพียงเล็ก ๆ น้อย ๆ อย่างหมดจด 207 00:09:50,265 --> 00:09:52,780 208 00:09:52,780 --> 00:09:56,280 ตกลงดังนั้นสี่ต่อไป เดิมชี้ไปที่ห้า 209 00:09:56,280 --> 00:09:58,620 ห้าจุดต่อไปถึงหก 210 00:09:58,620 --> 00:10:00,170 หกจุดก่อนถึงห้า 211 00:10:00,170 --> 00:10:02,470 และห้าจุดก่อนถึงสี่ 212 00:10:02,470 --> 00:10:03,360 ดังนั้นมาก nicer! 213 00:10:03,360 --> 00:10:04,530 ตกลงเย็น 214 00:10:04,530 --> 00:10:07,770 >> ดังนั้นตอนนี้สิ่งที่เราทำเพียงแค่ นี่บรรทัดของรหัสนี้ 215 00:10:07,770 --> 00:10:12,680 ซึ่งบอกว่าตัวชี้ก่อนหน้านี้ ต่อไปดังนั้นสิ่งที่หมายความว่า? 216 00:10:12,680 --> 00:10:17,540 นั่นหมายความว่าถ้าเรากำลังมองหาที่ ห้าไปที่โหนดก่อนหน้านี้ 217 00:10:17,540 --> 00:10:21,970 และก็ควรต่อไปในขณะนี้ ชี้ไปที่ห้าต่อไป 218 00:10:21,970 --> 00:10:27,840 เพื่อเป็นหลักสิ่งที่ทำ เป็นที่ลบลูกศรนี้ 219 00:10:27,840 --> 00:10:29,640 และทำให้มันข้ามขวากว่าห้า 220 00:10:29,640 --> 00:10:31,360 เป็นที่ชัดเจน? 221 00:10:31,360 --> 00:10:33,200 ฉันรู้ว่าอาจจะเป็นนิด ๆ หน่อย ๆ ไม่สมบูรณ์ 222 00:10:33,200 --> 00:10:34,480 ผมเห็นบางพยักหน้าหัว 223 00:10:34,480 --> 00:10:35,390 นั่นเป็นสิ่งที่ดี 224 00:10:35,390 --> 00:10:36,670 ตกลงเย็น 225 00:10:36,670 --> 00:10:39,590 ตอนนี้สิ่งที่เป็นขั้นตอนต่อไป? 226 00:10:39,590 --> 00:10:42,060 >> ผมเคยตั้งค่าต่อไป 227 00:10:42,060 --> 00:10:45,297 ตอนนี้ที่ลูกศรอื่น ๆ ฉันจะต้องเปลี่ยน? 228 00:10:45,297 --> 00:10:46,130 หนึ่งนี้ที่นี่ 229 00:10:46,130 --> 00:10:47,560 หกก่อนหน้านี้ 230 00:10:47,560 --> 00:10:50,620 เราไม่ต้องการที่หกก่อนหน้านี้ ให้ชี้ไปที่ห้าอีกต่อไป 231 00:10:50,620 --> 00:10:54,580 เราอยากให้มันชี้ไปที่สี่ 232 00:10:54,580 --> 00:10:56,190 ภาพที่ไม่ทำให้รู้สึก? 233 00:10:56,190 --> 00:10:58,370 ดังนั้นตอนนี้เราสามารถใช้เวลาห้าออก 234 00:10:58,370 --> 00:10:59,370 ถ้าอย่างนั้นเราได้รับชิ้นส่วนที่ 235 00:10:59,370 --> 00:11:03,390 236 00:11:03,390 --> 00:11:11,180 สิ่งที่ฉันควรจะทำก่อนที่ฉัน รีเซ็ตหกก่อนหน้านี้ถึงสี่? 237 00:11:11,180 --> 00:11:14,360 ความคิดใดที่นั่น? 238 00:11:14,360 --> 00:11:17,369 >> ผู้ชม: ฟรีระหว่างโหนด พวกเขาโดยการตั้งค่าให้เป็นโมฆะ? 239 00:11:17,369 --> 00:11:17,910 HANNAH: โทน 240 00:11:17,910 --> 00:11:21,100 แน่นอนเป้าหมายของเราคือ ไปได้ที่จะเป็นอิสระโหนด 241 00:11:21,100 --> 00:11:22,490 ดังนั้นเราจึงสามารถทำเช่นนั้นได้ที่นี่ 242 00:11:22,490 --> 00:11:23,540 ตัวชี้ฟรี 243 00:11:23,540 --> 00:11:24,810 อย่างแน่นอน 244 00:11:24,810 --> 00:11:29,160 แต่ถึงแม้ก่อนหน้านั้น ขอ just-- ขวาเป้าหมายของเรา 245 00:11:29,160 --> 00:11:38,730 นี่คือการกำหนดตัวชี้ต่อไป ก่อนหน้านี้เท่ากับตัวชี้ก่อนหน้านี้ 246 00:11:38,730 --> 00:11:40,760 ฉันรู้ว่านี้คือการขึ้นปกคลุม 247 00:11:40,760 --> 00:11:45,440 ตกลงขอ take-- เย็น 248 00:11:45,440 --> 00:11:46,990 ทุกคนสามารถมองเห็นเส้นด้านล่างนี้หรือไม่? 249 00:11:46,990 --> 00:11:47,840 หรือจะเป็นขนาดเล็กสุด? 250 00:11:47,840 --> 00:11:50,430 251 00:11:50,430 --> 00:11:54,300 >> ดังนั้นก่อนที่เราจะดำเนินการ บรรทัดนี้ที่นี่เราต้องการ 252 00:11:54,300 --> 00:11:58,375 เพื่อให้แน่ใจว่า ตัวชี้ต่อไปคือไม่เป็นโมฆะ 253 00:11:58,375 --> 00:12:00,500 เพราะถ้าตัวชี้ต่อไปคือ null สิ่งที่ชนิดของข้อผิดพลาด 254 00:12:00,500 --> 00:12:02,727 ฉันจะได้รับเมื่อฉันพยายามที่จะ อ้างอิงชี้โมฆะ? 255 00:12:02,727 --> 00:12:03,560 ผู้ชม: ความผิด Seg 256 00:12:03,560 --> 00:12:05,660 HANNAH: ความผิด seg สวยงาม 257 00:12:05,660 --> 00:12:09,690 ตกลงดังนั้นหากที่ไม่ โมฆะแล้วเราสามารถตั้งค่า 258 00:12:09,690 --> 00:12:14,420 และเรามีหกจุดอีกครั้งถึงสี่ 259 00:12:14,420 --> 00:12:17,440 คำถามขึ้นมาจนถึงจุดนี้ 260 00:12:17,440 --> 00:12:17,940 ใช่? 261 00:12:17,940 --> 00:12:19,814 >> ผู้ชม: ในครั้งแรกของคุณ ถ้าคำสั่งคุณ 262 00:12:19,814 --> 00:12:23,817 หมายถึงการที่จะมีลูกศร ต่อไปหรือ [ไม่ได้ยิน] 263 00:12:23,817 --> 00:12:25,150 HANNAH: ผมหมายถึงลูกศรชี้ n 264 00:12:25,150 --> 00:12:30,270 ดังนั้นโดยทั่วไปสิ่งที่ฉันพยายามที่จะทำ จะบอกว่าโหนดปัจจุบันว่าฉัน 265 00:12:30,270 --> 00:12:34,100 วนไปโหนดปัจจุบันว่า ฉันกำลังมองหาที่ผมจัดเก็บในตัวชี้ 266 00:12:34,100 --> 00:12:37,630 และฉันต้องการที่จะรู้ว่าตัวชี้ ค่าซึ่งในกรณีนี้คือ n 267 00:12:37,630 --> 00:12:39,500 และผมต้องการที่จะเห็นคือ โหนดฉันกำลังมองหา 268 00:12:39,500 --> 00:12:42,790 สำหรับโหนดที่ผมมุ่งมั่นที่จะลบหรือไม่ 269 00:12:42,790 --> 00:12:47,657 นั่นคือเหตุผลที่เรามีที่นี่ตัวชี้ n 270 00:12:47,657 --> 00:12:49,857 >> ผู้ชม: ดังนั้นลูกศรไป ถึง n, คุณตั้งค่า 271 00:12:49,857 --> 00:12:52,058 และเก็บไว้ในโหนดที่เรียกว่า n? 272 00:12:52,058 --> 00:12:55,410 273 00:12:55,410 --> 00:12:58,820 >> HANNAH: ดังนั้นมันก็เหมือนถ้าฉัน จะผ่านรายการที่เชื่อมโยงนี้ 274 00:12:58,820 --> 00:13:00,310 และชี้ไปที่ห้า 275 00:13:00,310 --> 00:13:03,600 ถ้าผมต้องการที่จะได้รับค่าว่าถ้า ฉันต้องการที่จะได้รับตัวเลขที่ 5, 276 00:13:03,600 --> 00:13:06,400 ฉันต้องทำลูกศรชี้ n 277 00:13:06,400 --> 00:13:06,900 เย็น? 278 00:13:06,900 --> 00:13:07,900 ใช่ 279 00:13:07,900 --> 00:13:11,200 >> ผู้ชม: n คือชื่อของตัวแปร? 280 00:13:11,200 --> 00:13:11,700 HANNAH: ใช่ 281 00:13:11,700 --> 00:13:14,870 ดังนั้นหากเราพลิกกลับอย่างใดอย่างหนึ่ง สไลด์ n คือชื่อ 282 00:13:14,870 --> 00:13:18,660 ของมูลค่าที่อยู่ภายใน โหนดในรายการที่เชื่อมโยงของเรา 283 00:13:18,660 --> 00:13:21,510 และฉันรู้ว่ามันจะได้รับเพียงเล็กน้อย บิตสับสนเพราะเรายัง 284 00:13:21,510 --> 00:13:24,680 จะเรียกสิ่งที่ ว่าเราต้องการที่จะลบ n 285 00:13:24,680 --> 00:13:26,717 เพื่อให้เป็นที่ที่ หนึ่งบรรทัดมาจาก 286 00:13:26,717 --> 00:13:27,671 ใช่? 287 00:13:27,671 --> 00:13:31,010 >> ผู้ชม: อะไรที่คุณมี [ไม่ได้ยิน] วิธีที่พวกเขาทำงานอย่างไร 288 00:13:31,010 --> 00:13:33,872 289 00:13:33,872 --> 00:13:35,780 ตัวชี้ [ไม่ได้ยิน] 290 00:13:35,780 --> 00:13:37,520 >> HANNAH: แน่นอน 291 00:13:37,520 --> 00:13:40,027 คุณกำลังพูดคุย about-- ซึ่งสาย? 292 00:13:40,027 --> 00:13:41,526 ผู้ชม: บรรทัดสุดท้าย [ไม่ได้ยิน] 293 00:13:41,526 --> 00:13:44,280 294 00:13:44,280 --> 00:13:45,250 >> HANNAH: แน่นอนว่าตกลง 295 00:13:45,250 --> 00:13:48,540 เพื่อให้ดูภาพใน สั่งซื้อจะพยายามที่จะอธิบายเรื่องนี้ 296 00:13:48,540 --> 00:13:51,030 ฉันขอโทษสำหรับ กล้องคำถามคือ 297 00:13:51,030 --> 00:13:54,580 เราสามารถอธิบายตัวชี้ ลูกศรชี้ต่อไปก่อนหน้านี้ 298 00:13:54,580 --> 00:14:01,510 ตกลงจึงขอบอกว่าเราจะอยู่ที่ห้า และเป้าหมายของเราคือการลบห้า 299 00:14:01,510 --> 00:14:07,240 ดังนั้นตัวชี้ต่อไปซึ่งของเหล่านี้ สามโหนดไม่ที่ให้เรา? 300 00:14:07,240 --> 00:14:10,840 ที่นำเราไปโหนดหกใช่มั้ย? 301 00:14:10,840 --> 00:14:16,490 >> ตกลงดังนั้นตอนนี้เรากำลังถาม สำหรับหกก่อนหน้านี้ 302 00:14:16,490 --> 00:14:17,060 OK? 303 00:14:17,060 --> 00:14:20,210 และเรากำลังตั้งค่านี้ จะเท่ากับสี่ 304 00:14:20,210 --> 00:14:23,214 ซึ่งจะเกิดขึ้นก่อนหน้านี้ห้า 305 00:14:23,214 --> 00:14:25,180 ฉันรู้ว่ามันเป็นซุปเปอร์ ยากที่จะติดตาม 306 00:14:25,180 --> 00:14:29,286 ผมขอแนะนำให้คุณวาดภาพ ถ้าคุณได้รับคำถามเช่นนี้ 307 00:14:29,286 --> 00:14:30,242 ใช่? 308 00:14:30,242 --> 00:14:32,617 >> ผู้ชม: คือเหตุผลที่ว่า เราไม่ได้มี [ไม่ได้ยิน] 309 00:14:32,617 --> 00:14:37,430 310 00:14:37,430 --> 00:14:38,570 >> HANNAH: แน่นอน 311 00:14:38,570 --> 00:14:44,800 ดังนั้นคำถามคือทำไม เราไม่จำเป็นต้องตรวจสอบที่นี่? 312 00:14:44,800 --> 00:14:48,160 ทำไมเราไม่จำเป็นที่จะต้องตรวจสอบว่า ชี้ก่อนหน้านี้ไม่เท่ากันให้เป็นโมฆะ? 313 00:14:48,160 --> 00:14:50,070 และมันก็เป็นเพราะเราได้ แยกออกจากกันแล้วออก 314 00:14:50,070 --> 00:14:52,490 ในกรณีที่ตัวชี้ ที่จุดเริ่มต้นมาก 315 00:14:52,490 --> 00:14:54,060 คำถามที่ดีมาก 316 00:14:54,060 --> 00:14:56,880 สิ่งอื่น ๆ ที่เกี่ยวกับเรื่องนี้? 317 00:14:56,880 --> 00:14:57,380 ตกลงเย็น 318 00:14:57,380 --> 00:14:58,360 ดังนั้นขอให้จบมันขึ้น 319 00:14:58,360 --> 00:14:59,890 เราเกือบจะมี 320 00:14:59,890 --> 00:15:01,310 >> ดังนั้นสิ่งที่ถ้ามันเป็นที่หัว? 321 00:15:01,310 --> 00:15:03,360 เกิดอะไรขึ้นถ้าแทน พยายามที่จะลบห้า 322 00:15:03,360 --> 00:15:06,240 เราจริงต้องการที่จะลบสี่? 323 00:15:06,240 --> 00:15:07,270 สิ่งที่ผมจะต้องทำอย่างไร 324 00:15:07,270 --> 00:15:09,610 ดีฉันต้องการรีเซ็ตหัวของฉันเพื่ออะไร? 325 00:15:09,610 --> 00:15:14,288 326 00:15:14,288 --> 00:15:15,585 ตะโกนมันออกมา? 327 00:15:15,585 --> 00:15:16,710 ผู้ชม: หนึ่งหลังจากที่มัน 328 00:15:16,710 --> 00:15:17,460 HANNAH: สวย 329 00:15:17,460 --> 00:15:26,430 ตกลงดังนั้นเราจึงต้องการให้รายการที่จะชี้ เพื่อสิ่งที่ตัวชี้ของเราโหนดต่อไปคือ 330 00:15:26,430 --> 00:15:29,040 ดี 331 00:15:29,040 --> 00:15:30,810 และเพียงเพื่อความสมบูรณ์ของ ประโยชน์ที่เราจะ 332 00:15:30,810 --> 00:15:35,590 ต้องการตรวจสอบว่าตราบใดที่รายการของเรา ไม่ null ตราบเท่าที่รายการของเราไม่ได้ 333 00:15:35,590 --> 00:15:42,730 ว่างแล้วเราต้องการที่จะตั้ง ของเราก่อนหน้านี้เท่ากับเป็นโมฆะ 334 00:15:42,730 --> 00:15:46,960 335 00:15:46,960 --> 00:15:50,230 คำถามเพื่อให้ห่างไกล? 336 00:15:50,230 --> 00:15:53,205 หนึ่งขั้นตอน from--? 337 00:15:53,205 --> 00:15:55,530 >> ผู้ชม: มันจะเป็นถ้า รายการไม่เท่ากับให้เป็นโมฆะ? 338 00:15:55,530 --> 00:15:56,950 >> HANNAH: ใช่คุณขวาโดยสิ้นเชิง 339 00:15:56,950 --> 00:15:58,130 ฉันขอโทษ 340 00:15:58,130 --> 00:16:00,040 รายการคือไม่เท่ากับให้เป็นโมฆะ 341 00:16:00,040 --> 00:16:01,915 น่ากลัว 342 00:16:01,915 --> 00:16:04,245 พยายามที่จะนำมานี้ทั้งหมดบนหน้าจอ 343 00:16:04,245 --> 00:16:06,870 มันเป็นชนิดของการล้มปิด 344 00:16:06,870 --> 00:16:07,730 ขออภัยคน 345 00:16:07,730 --> 00:16:11,874 และสุดท้าย แต่ไม่น้อยทั้งหมด ที่เราต้องทำคือการกลับไป 346 00:16:11,874 --> 00:16:12,840 ตกลง 347 00:16:12,840 --> 00:16:15,400 นั่นเป็นจำนวนมากหนาตา ในอย่างรวดเร็วจริงๆ 348 00:16:15,400 --> 00:16:16,800 ใช้เวลาสองเพื่อดูมากกว่านี้ 349 00:16:16,800 --> 00:16:18,216 บอกฉันถ้าคุณมีคำถามใด ๆ 350 00:16:18,216 --> 00:16:20,232 351 00:16:20,232 --> 00:16:20,732 ใช่? 352 00:16:20,732 --> 00:16:26,940 >> ผู้ชม: ถ้ารายการที่ หัว then-- รอไม่เป็นไร 353 00:16:26,940 --> 00:16:27,700 >> HANNAH: ตกลงที่ดี 354 00:16:27,700 --> 00:16:30,987 ดังนั้นนี่คือถ้ารายการอยู่ที่หัว เราเอามันออกไปเพื่อสิ่งที่เราใส่ 355 00:16:30,987 --> 00:16:31,486 ใช่? 356 00:16:31,486 --> 00:16:33,777 >> ผู้ชม: คุณสามารถอธิบาย แรกถ้ามีคำสั่งอีกครั้งหรือไม่ 357 00:16:33,777 --> 00:16:36,149 หากตัวชี้ไปยัง n เท่ากับ n? 358 00:16:36,149 --> 00:16:36,690 HANNAH: แน่นอน 359 00:16:36,690 --> 00:16:42,780 ดังนั้นเป้าหมายของเราในการทำงานทั้งหมดนี้ ลบโหนดที่มีค่า n 360 00:16:42,780 --> 00:16:47,460 ดังนั้นหากเราพบว่าในขณะที่เรากำลัง การทำซ้ำผ่านรายการของเรา 361 00:16:47,460 --> 00:16:51,770 โหนดที่มีค่า n ที่ หนึ่งที่เราต้องการลบ 362 00:16:51,770 --> 00:16:57,286 ดังนั้นทุกการลบเกิดขึ้น ด้านในของที่ใหญ่ถ้าคำสั่ง 363 00:16:57,286 --> 00:16:58,593 ไม่ว่าจะทำให้ความรู้สึก? 364 00:16:58,593 --> 00:16:59,480 เย็น 365 00:16:59,480 --> 00:16:59,990 ใช่? 366 00:16:59,990 --> 00:17:02,864 >> ผู้ชม: บางทีคุณก็ไม่สามารถมองเห็น แต่คุณไม่ต้องสาย 367 00:17:02,864 --> 00:17:06,024 สำหรับการเลื่อนผ่านรายการ? 368 00:17:06,024 --> 00:17:06,690 HANNAH: น่ากลัว 369 00:17:06,690 --> 00:17:10,896 ลองนำมานี้ขึ้นเล็กน้อยและ เราจะโยนขวาด้านล่างว่า 370 00:17:10,896 --> 00:17:13,282 371 00:17:13,282 --> 00:17:15,490 บางทีคณะกรรมการจะได้ เป็นความคิดที่ดีกว่าเล็กน้อย 372 00:17:15,490 --> 00:17:17,829 ดังนั้นวิธีที่ผมจะก้าวไปข้างหน้าชี้? 373 00:17:17,829 --> 00:17:20,184 >> ผู้ชม: ตัวชี้ เท่ากับชี้บวกหนึ่ง 374 00:17:20,184 --> 00:17:21,599 >> HANNAH: สวย 375 00:17:21,599 --> 00:17:25,050 เพื่อที่จะช่วยให้เรา ยังคงทำซ้ำผ่าน 376 00:17:25,050 --> 00:17:26,251 ตกลง 377 00:17:26,251 --> 00:17:27,750 ผู้ชม: จะไม่จะมีอีกหรือไม่ 378 00:17:27,750 --> 00:17:29,028 HANNAH: อีกครั้งหนึ่ง? 379 00:17:29,028 --> 00:17:32,444 ผู้ชม: จะไม่มี อื่นหลังจากใหญ่เก่าถ้า 380 00:17:32,444 --> 00:17:35,519 คำสั่ง [ไม่ได้ยิน] 381 00:17:35,519 --> 00:17:36,310 HANNAH: ส่วนไหน? 382 00:17:36,310 --> 00:17:38,350 ฉันขอโทษ 383 00:17:38,350 --> 00:17:41,800 >> ผู้ชม: สำรวจเส้นทาง, ไม่ควรมีคนอื่น? 384 00:17:41,800 --> 00:17:43,550 HANNAH: คุณอย่างแน่นอน อาจจะมีคนอื่น 385 00:17:43,550 --> 00:17:46,930 เพราะผมมีสิทธิกลับมา มีคุณไม่จำเป็นอื่น ๆ 386 00:17:46,930 --> 00:17:48,760 แต่ใช่คำถามที่ดี 387 00:17:48,760 --> 00:17:50,170 ตกลงใช่? 388 00:17:50,170 --> 00:17:52,878 ผู้ชม: เราสามารถคิดของตัวชี้ ที่มีการเคลื่อนไหวผ่านรายการ 389 00:17:52,878 --> 00:17:56,610 กับการอยู่กับค่า ของแต่ละโหนดในรายการหรือไม่ 390 00:17:56,610 --> 00:18:00,650 หรือเราควรจะคิดว่ามันเป็น การเรียงลำดับของภายนอกในรายการ? 391 00:18:00,650 --> 00:18:02,350 >> HANNAH: หนึ่งไม่ว่าจะเป็นเรื่องปกติผมคิดว่า 392 00:18:02,350 --> 00:18:05,880 วิธีที่ฉันคิดว่ามันเป็น ผมบอกว่าโอเคผมชี้ 393 00:18:05,880 --> 00:18:06,520 และนี่คือฉัน 394 00:18:06,520 --> 00:18:07,150 นี่คือมือของฉัน 395 00:18:07,150 --> 00:18:09,960 ฉันจะชี้ไปที่ที่แตกต่างกัน สิ่งที่ผมอยากจะย้ำผ่าน 396 00:18:09,960 --> 00:18:12,270 ครั้งแรกที่ผมจะชี้ ไปที่หัวของรายการ 397 00:18:12,270 --> 00:18:14,144 และที่บอกฉันฉัน จะชี้ไปที่สี่ 398 00:18:14,144 --> 00:18:18,060 และเพื่อให้ฉันเป็นภายนอกในรายการ ฉันสามารถชี้ไปที่แต่ละองค์ประกอบเหล่านี้ 399 00:18:18,060 --> 00:18:19,520 ดังนั้นผมจึงคิดว่าตัวเองเป็นตัวชี้ 400 00:18:19,520 --> 00:18:21,645 ผู้ชม: ดังนั้นเมื่อคุณลบ หนึ่งในองค์ประกอบเหล่านั้น 401 00:18:21,645 --> 00:18:23,404 คุณลบตัวเองเพื่อที่จะพูด 402 00:18:23,404 --> 00:18:24,070 HANNAH: แน่นอน 403 00:18:24,070 --> 00:18:25,920 ดังนั้นสิ่งที่คุณลบ คุณกำลังชี้ไปที่ 404 00:18:25,920 --> 00:18:28,340 ดังนั้นในตัวอย่างที่ เราเห็นที่เรา 405 00:18:28,340 --> 00:18:31,670 พยายามที่จะลบห้า เมื่อฉันชี้ไปที่ห้า 406 00:18:31,670 --> 00:18:34,200 ผมต้องการที่จะลบ สิ่งที่ผมชี้ไปที่ 407 00:18:34,200 --> 00:18:35,870 ตรงขวา 408 00:18:35,870 --> 00:18:36,577 ใช่? 409 00:18:36,577 --> 00:18:39,410 ผู้ชม: เราได้รับการดูแล กรณีที่ n คือไม่ได้อยู่ในรายการหรือไม่ 410 00:18:39,410 --> 00:18:40,460 HANNAH: ถ้า n เป็นไม่ได้อยู่ในรายการหรือไม่ 411 00:18:40,460 --> 00:18:43,501 สิ่งที่จะเกิดขึ้นเป็นคุณ จะย้ำผ่านและย้ำ 412 00:18:43,501 --> 00:18:47,616 ผ่านแล้วคุณจะ ที่จะได้รับตัวชี้ null ถูก 413 00:18:47,616 --> 00:18:48,990 แล้วคุณจะทำได้ 414 00:18:48,990 --> 00:18:50,812 >> ผู้ชม: ดังนั้นเราจะมี ที่จะกลับมาอะไร? 415 00:18:50,812 --> 00:18:51,520 HANNAH: เราจะทำได้ 416 00:18:51,520 --> 00:18:54,500 วิธีการที่ถ้ากำหนดไว้นี้ ฟังก์ชั่นผมก็แค่บอกว่ามันกลับ 417 00:18:54,500 --> 00:18:55,770 ถือเป็นโมฆะโดยไม่คำนึงถึง 418 00:18:55,770 --> 00:18:58,360 แต่คุณอาจจะมีบางสิ่งบางอย่าง เหมือนกลับจำนวนเต็ม 419 00:18:58,360 --> 00:19:00,920 และมีมันกลับมา ลบ 1 ถ้ามันล้มเหลว 420 00:19:00,920 --> 00:19:03,070 สิ่งที่ต้องการที่ 421 00:19:03,070 --> 00:19:04,494 คำถามที่ with-- ใช่? 422 00:19:04,494 --> 00:19:05,410 ผู้ชม: [ไม่ได้ยิน] 423 00:19:05,410 --> 00:19:05,993 HANNAH: ขออภัย? 424 00:19:05,993 --> 00:19:07,419 ผู้ชม: [ไม่ได้ยิน] 425 00:19:07,419 --> 00:19:07,960 HANNAH: แน่นอน 426 00:19:07,960 --> 00:19:11,730 นั่นคือ actual-- เมื่อเราได้ ทำทุกงานนี้ในการเคลื่อนย้าย 427 00:19:11,730 --> 00:19:16,530 ลูกศรทั้งหมดเหล่านี้ไปรอบ ๆ ทั้งหมดของเรา เป้าหมายของเราคือการกำจัดของโหนด 428 00:19:16,530 --> 00:19:18,230 ที่เรากำลังมองหา 429 00:19:18,230 --> 00:19:21,610 ดังนั้นในกรณีนี้พ้น ชี้ถ้าฉันชี้ไปที่ห้า 430 00:19:21,610 --> 00:19:24,670 มันก็เหมือนการลบโหนดนี้กลาง 431 00:19:24,670 --> 00:19:27,250 นั่นเป็นส่วนหนึ่งของตัวชี้ฟรี 432 00:19:27,250 --> 00:19:29,090 ที่ทำให้รู้สึก? 433 00:19:29,090 --> 00:19:31,390 >> ผู้ชม: ดังนั้นคิดแม้แต่ คุณไม่ได้ [ไม่ได้ยิน] 434 00:19:31,390 --> 00:19:36,060 >> HANNAH: ดังนั้นเราจึงสันนิษฐานว่าที่จุดเริ่มต้น เรามีรายการที่เป็นบาง already-- 435 00:19:36,060 --> 00:19:37,220 พวกเขาได้ใส่นี้ด้วยกัน 436 00:19:37,220 --> 00:19:39,761 ดังนั้นเพื่อที่จะสร้างนี้ รายการที่พวกเขาคงจะ [ไม่ได้ยิน] 437 00:19:39,761 --> 00:19:42,190 438 00:19:42,190 --> 00:19:42,750 เย็น 439 00:19:42,750 --> 00:19:44,490 สิ่งอื่นใดกับเรื่องนี้? 440 00:19:44,490 --> 00:19:46,386 ใช่? 441 00:19:46,386 --> 00:19:49,204 >> ผู้ชม: อะไรถ้ารายการ ไม่เท่ากับสาย null? 442 00:19:49,204 --> 00:19:49,704 [ไม่ได้ยิน] 443 00:19:49,704 --> 00:19:52,289 444 00:19:52,289 --> 00:19:53,080 HANNAH ขวาที่นี่? 445 00:19:53,080 --> 00:19:53,840 ผู้ชม: ใช่ 446 00:19:53,840 --> 00:19:57,370 HANNAH: ตกลงทั้งหมดที่ฉันทำ คือฉันแค่การทำให้แน่ใจว่า 447 00:19:57,370 --> 00:20:03,250 ว่าก่อนที่ฉันพยายามที่จะรายการ dereference, ก่อนที่ผมจะพยายามที่จะเข้าถึงก่อนหน้านี้ 448 00:20:03,250 --> 00:20:07,210 ผมต้องการที่จะตรวจสอบให้แน่ใจว่ามันเป็นไม่ได้ null ดังนั้นผมจึงไม่ได้รับความผิด seg 449 00:20:07,210 --> 00:20:08,400 เย็น 450 00:20:08,400 --> 00:20:10,820 >> ตกลงฉันรู้ว่านี้ค่อนข้าง จำนวนมากจะได้รับผ่าน 451 00:20:10,820 --> 00:20:14,950 ดังนั้นสไลด์นี้จะเป็น ให้บริการแก่คุณ 452 00:20:14,950 --> 00:20:17,341 ดังนั้นคุณจึงสามารถผ่านมันไปในรายละเอียดมากขึ้น 453 00:20:17,341 --> 00:20:17,841 ใช่? 454 00:20:17,841 --> 00:20:19,749 >> ผู้ชม: ทำไมรายการ [ไม่ได้ยิน] 455 00:20:19,749 --> 00:20:24,129 456 00:20:24,129 --> 00:20:24,670 HANNAH: แน่นอน 457 00:20:24,670 --> 00:20:27,390 รายการดังนั้นจริงๆชี้ไป องค์ประกอบนี้ที่นี่ 458 00:20:27,390 --> 00:20:29,200 องค์ประกอบแรกในรายการ 459 00:20:29,200 --> 00:20:30,748 ดังนั้นจึงไม่สามารถมีก่อนหน้านี้ 460 00:20:30,748 --> 00:20:31,736 ใช่? 461 00:20:31,736 --> 00:20:35,194 >> ผู้ชม: ไม่ชี้จุด ไปยังที่อยู่เดียวกันในหน่วยความจำ? 462 00:20:35,194 --> 00:20:38,404 มันชี้ไปที่เดียวกัน ที่อยู่ในความทรงจำเป็นโหนด 463 00:20:38,404 --> 00:20:40,640 ว่ามันชี้ไป? 464 00:20:40,640 --> 00:20:43,865 >> HANNAH: ใช่มันชี้ ไปยังโหนดในความทรงจำนี้ 465 00:20:43,865 --> 00:20:47,190 >> ผู้ชม: ขวาดังนั้น เมื่อคุณ [ไม่ได้ยิน] 466 00:20:47,190 --> 00:20:50,580 >> HANNAH: ในความรู้สึกใช่ 467 00:20:50,580 --> 00:20:51,280 ตกลง 468 00:20:51,280 --> 00:20:52,997 สิทธิทั้งหมดขอย้ายพร้อมกับนี้ 469 00:20:52,997 --> 00:20:55,330 และถ้าคุณมีคำถามเพิ่มเติม ติดรอบในตอนท้าย 470 00:20:55,330 --> 00:20:57,130 และเราสามารถผ่านมันไปอีกครั้ง 471 00:20:57,130 --> 00:20:58,120 ตกลงเย็น 472 00:20:58,120 --> 00:21:00,490 ตอนนี้เราได้รับที่จะไป การแฮตารางพยายาม 473 00:21:00,490 --> 00:21:04,940 และต้นไม้ที่คุณได้สุด คุ้นเคยกับ P-ตั้งห้าสะกด 474 00:21:04,940 --> 00:21:11,020 >> ตารางแฮชดังนั้นเป็นเพียง อาร์เรย์กับรายการที่เชื่อมโยงโดยลำพัง 475 00:21:11,020 --> 00:21:14,050 หรือรายการที่เชื่อมโยงทวีคูณออกมาจากมัน 476 00:21:14,050 --> 00:21:16,380 ดังนั้นเราจึงมีการจัดเรียงบาง ของอาเรย์ 477 00:21:16,380 --> 00:21:21,280 และวิธีการที่เรารู้ว่าที่เหล่านี้ ถังอาร์เรย์จะได้รับใน, 478 00:21:21,280 --> 00:21:24,137 เราใช้ฟังก์ชันแฮช 479 00:21:24,137 --> 00:21:26,470 ดังนั้นในกรณีนี้ทุกคนสามารถ คาดเดาสิ่งที่ฟังก์ชันแฮช 480 00:21:26,470 --> 00:21:28,636 จะต้องขึ้นอยู่เพียงแค่ในบาง ของอินพุทและเอาท์พุท? 481 00:21:28,636 --> 00:21:31,392 482 00:21:31,392 --> 00:21:33,194 >> ผู้ชม: จำนวนตัวอักษรของตัวอักษร 483 00:21:33,194 --> 00:21:33,860 HANNAH: แน่นอน 484 00:21:33,860 --> 00:21:36,160 มันก็ทำให้พวกเขาในลำดับตัวอักษร 485 00:21:36,160 --> 00:21:39,280 ทุกอย่างที่เริ่มต้นด้วย จะใส่ลงในถังแรก 486 00:21:39,280 --> 00:21:43,340 ทุกอย่างกับ B จะใส่ลงใน ถังที่สองอื่น ๆ และอื่น ๆ 487 00:21:43,340 --> 00:21:45,620 น่ากลัว, OK 488 00:21:45,620 --> 00:21:48,980 และฟังก์ชันแฮชใด ๆ ฟังก์ชั่นที่ใช้ในคำ 489 00:21:48,980 --> 00:21:51,910 และจะบอกคุณว่า ถังมันอยู่ใน 490 00:21:51,910 --> 00:21:55,150 เพื่อที่รายการของเรา อาร์เรย์มันอยู่ใน 491 00:21:55,150 --> 00:21:58,080 >> ดังนั้นครั้งฉันให้ฉันทุก กัญชาทำงานคำ 492 00:21:58,080 --> 00:22:00,660 มันควรจะบอกฉันเดียวกัน วางทุกครั้งเดียว 493 00:22:00,660 --> 00:22:03,270 ดังนั้นถ้าเราใช้ฟังก์ชันแฮช จากสไลด์ก่อนหน้านี้ 494 00:22:03,270 --> 00:22:05,950 ที่เรากำลังเรียงลำดับตาม ตัวอักษรตัวแรกของตัวอักษร 495 00:22:05,950 --> 00:22:08,230 ทุกครั้งที่ผมให้ฉัน ฟังก์ชันแฮช "แอปเปิ้ล" 496 00:22:08,230 --> 00:22:10,180 มันก็ควรจะให้ฉันกลับ 0 497 00:22:10,180 --> 00:22:12,890 ดังนั้นถ้าผมมีแอปเปิ้ล จะใส่ในตารางแฮชของฉัน 498 00:22:12,890 --> 00:22:17,700 ถ้าฉันให้ "แอปเปิ้ล" เพื่อฟังก์ชันแฮชของฉัน มันควรจะพูดว่าให้ไปใส่ไว้ในถัง 0 499 00:22:17,700 --> 00:22:19,980 ถ้าฉันกำลังมองหา แอปเปิ้ลในตารางแฮชของฉัน 500 00:22:19,980 --> 00:22:24,340 และผมบอกว่าที่แอปเปิ้ลอาจจะ สดคุณถามฟังก์ชันแฮชของคุณ 501 00:22:24,340 --> 00:22:26,900 และกล่าวว่าให้ไปที่ถัง 0 502 00:22:26,900 --> 00:22:29,150 ทั้งหมดใช่มั้ย? 503 00:22:29,150 --> 00:22:32,660 คำถามที่มีฟังก์ชั่น? 504 00:22:32,660 --> 00:22:34,570 น่ากลัว 505 00:22:34,570 --> 00:22:37,320 >> ที่นี่มากขึ้นเล็กน้อย คำอธิบายรายละเอียด 506 00:22:37,320 --> 00:22:39,570 ของสิ่งที่ฟังก์ชันแฮชอาจมีลักษณะเช่น 507 00:22:39,570 --> 00:22:42,230 508 00:22:42,230 --> 00:22:42,960 สิทธิ์ทั้งหมด 509 00:22:42,960 --> 00:22:45,960 ตอนนี้มีปัญหากับกัญชา ฟังก์ชั่นที่อยู่ในโลกที่เหมาะ 510 00:22:45,960 --> 00:22:48,870 เราจะมีเพียงหนึ่ง สิ่งที่อยู่ในถังแต่ละ 511 00:22:48,870 --> 00:22:50,900 แต่ในความเป็นจริงมี ไม่เพียงหนึ่งคำ 512 00:22:50,900 --> 00:22:54,280 ที่เริ่มต้นด้วยเอมีไม่ เพียงหนึ่งคำที่เริ่มต้นด้วย B. ดังนั้น 513 00:22:54,280 --> 00:22:56,960 ในกรณีนี้ถ้าเรา ทันใดนั้นได้รับ "เบอร์รี่" 514 00:22:56,960 --> 00:22:58,710 และเราต้องการที่จะนำมัน ลงในตารางแฮชของเรา 515 00:22:58,710 --> 00:23:03,640 และเราเห็นโอ้ไม่มีกล้วย แล้วมีสิ่งที่เราควรจะทำอย่างไร 516 00:23:03,640 --> 00:23:05,900 >> ดีที่เรามีสองตัวเลือก 517 00:23:05,900 --> 00:23:07,990 ตัวเลือกแรกคือ เชิงเส้นละเอียดที่ 518 00:23:07,990 --> 00:23:11,100 ก็หมายความว่าการไปพบ ถังที่ว่างต่อไป 519 00:23:11,100 --> 00:23:14,100 ไปพบรายการอาร์เรย์ว่างต่อไป 520 00:23:14,100 --> 00:23:15,750 และเพียงแค่ใส่ "เบอร์รี่" มี 521 00:23:15,750 --> 00:23:18,880 ดังนั้นผมจึงรู้ว่ามันควรจะ ไปกับกล้วยในถังหนึ่ง 522 00:23:18,880 --> 00:23:22,155 แต่เพียงแค่ใส่มันในถังสาม เพราะถังสามเป็นที่ว่างเปล่า 523 00:23:22,155 --> 00:23:24,806 524 00:23:24,806 --> 00:23:26,680 อีกตัวเลือกหนึ่งน่าจะเป็น สิ่งที่คุณใช้ 525 00:23:26,680 --> 00:23:29,220 ใน P-ชุดของคุณซึ่งคุณ มีการผูกมัดแยกต่างหาก 526 00:23:29,220 --> 00:23:33,990 ดังนั้นแต่ละถังของคุณ แต่ละองค์ประกอบอาร์เรย์ของคุณ 527 00:23:33,990 --> 00:23:38,410 ไม่เพียง แต่ถือหนึ่งคำ แต่ที่จริงแล้ว ถือตัวชี้ไปยังรายการของคำ 528 00:23:38,410 --> 00:23:41,880 เพื่อที่ว่าถ้าคุณมี กล้วยในตารางแฮชของคุณ 529 00:23:41,880 --> 00:23:44,740 และคุณก็อยาก เพื่อเพิ่มผลไม้เล็ก ๆ ไม่มีปัญหา 530 00:23:44,740 --> 00:23:51,110 เพียงแค่เพิ่มผลไม้เล็ก ๆ ไปยังจุดสิ้นสุดหรือ จุดเริ่มต้นของรายการที่เชื่อมโยงของคุณ 531 00:23:51,110 --> 00:23:54,040 ตกลงที่น่ากลัว 532 00:23:54,040 --> 00:23:58,490 คำถามที่มีกัญชา ตารางก่อนที่เราจะไปหรือไม่ 533 00:23:58,490 --> 00:23:59,850 >> สิทธิ์ทั้งหมด 534 00:23:59,850 --> 00:24:01,070 ต้นไม้และพยายาม 535 00:24:01,070 --> 00:24:07,980 ตกลงดังนั้นนี้เป็นอีกทางเลือกหนึ่ง สำหรับการดำเนินการในพจนานุกรม 536 00:24:07,980 --> 00:24:09,100 คุณจะได้ทำลอง 537 00:24:09,100 --> 00:24:13,420 ดังนั้นจึงเป็นชนิดพิเศษของต้นไม้ที่ พฤติกรรมเช่นตารางแฮชมีหลายระดับ 538 00:24:13,420 --> 00:24:16,862 ดังนั้นคุณจะเห็นภาพ ที่คุณมีอาร์เรย์ที่ 539 00:24:16,862 --> 00:24:19,320 ชี้ไปที่พวงของอาร์เรย์ ที่ชี้ไปที่พวงของอาร์เรย์ 540 00:24:19,320 --> 00:24:20,390 ที่ชี้ไปที่พวงของอาร์เรย์ 541 00:24:20,390 --> 00:24:23,140 และเราจะดูว่าสิ่งที่ จะมีลักษณะเช่นเดียวกับสไลด์ในอนาคต 542 00:24:23,140 --> 00:24:26,070 และอื่น ๆ โดยทั่วไปต้นไม้ เป็นเพียงโครงสร้างข้อมูลใด ๆ 543 00:24:26,070 --> 00:24:29,710 ซึ่งข้อมูลที่มี จัดอยู่ในลำดับชั้นบาง 544 00:24:29,710 --> 00:24:32,610 เพื่อที่เราเห็นเรามี การเรียงลำดับของความเข้าใจบางอย่าง 545 00:24:32,610 --> 00:24:36,130 ของระดับบนสุดในระดับถัดไป ระดับถัดไปในระดับถัดไป 546 00:24:36,130 --> 00:24:39,690 ดังนั้นนี่อาจจะเป็นที่ชัดเจนมากที่สุด มีตัวอย่างที่เฉพาะเจาะจงบางอย่าง 547 00:24:39,690 --> 00:24:40,880 ดังนั้นนี่คือต้นไม้ของเรา 548 00:24:40,880 --> 00:24:42,970 คุณจะเห็นว่ามัน มีระดับโดยเฉพาะอย่างยิ่ง 549 00:24:42,970 --> 00:24:45,480 ที่เราเริ่มต้นด้วยโหนดรากที่หนึ่ง 550 00:24:45,480 --> 00:24:47,640 และเราสามารถไปลงผ่านต้นไม้ของเรา 551 00:24:47,640 --> 00:24:50,730 552 00:24:50,730 --> 00:24:53,910 >> ต้นไม้ไบนารีคือ ประเภทเฉพาะของต้นไม้ 553 00:24:53,910 --> 00:24:56,770 และสเปคเท่านั้น สำหรับต้นไม้ไบนารี 554 00:24:56,770 --> 00:25:01,130 คือการที่แต่ละโหนดมี ที่มากที่สุดสองใบ 555 00:25:01,130 --> 00:25:03,960 ดังนั้นคุณจะไม่เห็นใด ๆ ของโหนดเหล่านี้มีสามหรือสี่ 556 00:25:03,960 --> 00:25:06,880 หรือบางหมายเลขอื่นของใบ 557 00:25:06,880 --> 00:25:11,310 และจากนั้นก็เฉพาะเจาะจงมากขึ้น เป็นต้นไม้ค้นหาแบบทวิภาค 558 00:25:11,310 --> 00:25:18,010 ที่โหนดทุกทางด้านซ้ายของ โหนดจะมีค่าที่น้อยลง 559 00:25:18,010 --> 00:25:21,180 และมูลค่าให้กับทุก ขวาเป็นไปได้ที่ใหญ่กว่า 560 00:25:21,180 --> 00:25:26,900 ดังนั้นถ้าคุณเห็น 44 ที่อยู่ที่รากของเรา ไปทางซ้าย, 11, 22, และ 33 561 00:25:26,900 --> 00:25:28,940 มีทั้งหมดน้อยกว่ารากของเรา 562 00:25:28,940 --> 00:25:33,890 และด้านขวาที่มีทั้งหมด หมายเลข bigger-- 66, 55, และ 77 563 00:25:33,890 --> 00:25:37,380 และทรัพย์สินนี้ถือเป็นจริง ในระดับของต้นไม้ทุก 564 00:25:37,380 --> 00:25:42,690 >> ดังนั้นเมื่อเราลงไป 22, 11, 33 และยังคง 11 565 00:25:42,690 --> 00:25:46,950 มีขนาดเล็กกว่า 22 และ 33 มีขนาดใหญ่กว่า 22 566 00:25:46,950 --> 00:25:50,160 และสิ่งนี้ทำให้มันง่ายต่อการค้นหา เพราะถ้าเรากำลังมองหาตัวเลข 567 00:25:50,160 --> 00:25:53,877 เรารู้ว่าที่ สาขาที่จะปฏิบัติตามลง 568 00:25:53,877 --> 00:25:56,210 ดังนั้นนี้ควรเตือนคุณ นิด ๆ หน่อย ๆ ของการค้นหาแบบไบนารี 569 00:25:56,210 --> 00:25:56,967 ใช่? 570 00:25:56,967 --> 00:25:58,835 >> ผู้ชม: ดังนั้นเมื่อคุณอยู่ อธิบายไบนารี 571 00:25:58,835 --> 00:26:00,587 คุณบอกว่ามันมีที่มากที่สุดสองใบ? 572 00:26:00,587 --> 00:26:01,170 HANNAH: MM-HM 573 00:26:01,170 --> 00:26:02,580 ผู้ชม: มันอาจจะมีน้อยลงหรือไม่ 574 00:26:02,580 --> 00:26:03,121 HANNAH: ใช่ 575 00:26:03,121 --> 00:26:06,720 ดังนั้นสมมติว่าสำหรับตัวอย่างเช่นคุณ ไม่ได้มีแม้จำนวนของสิ่ง 576 00:26:06,720 --> 00:26:11,791 และคุณไม่สามารถเติมขึ้นทั้งหมดของคุณ ใบก็ปรับหากมีหนึ่ง 577 00:26:11,791 --> 00:26:12,290 OK? 578 00:26:12,290 --> 00:26:12,789 น่ากลัว 579 00:26:12,789 --> 00:26:15,930 คำถามใด ๆ ที่อื่น ๆ บนต้นไม้? 580 00:26:15,930 --> 00:26:16,670 ตกลง 581 00:26:16,670 --> 00:26:20,110 >> กลับไปพยายามของเราในฐานะที่ผมพูด เกี่ยวกับนิด ๆ หน่อย ๆ ก่อนหน้านี้ 582 00:26:20,110 --> 00:26:23,900 วิธีการที่เรามีทั้งอาร์เรย์หลายระดับ 583 00:26:23,900 --> 00:26:26,280 ดังนั้นในกรณีนี้เราเริ่มต้นที่ด้านบน 584 00:26:26,280 --> 00:26:29,030 และเราสามารถทำตามคำใดก็ตามลง 585 00:26:29,030 --> 00:26:30,780 ดังนั้นสมมติว่าเราต้องการ ที่จะมองหาทัวริง 586 00:26:30,780 --> 00:26:34,380 เราเริ่มต้นที่ T ทำตามมันลง ไปยังอาร์เรย์ที่มี U, 587 00:26:34,380 --> 00:26:37,350 และทำตามมันลงจนกว่าเรา ถึงนี้เดลต้าเล็ก ๆ น้อย ๆ ซึ่ง 588 00:26:37,350 --> 00:26:39,060 บอกเราใช่คุณพบคำ 589 00:26:39,060 --> 00:26:43,200 590 00:26:43,200 --> 00:26:44,120 ที่ชัดเจนในการพยายาม? 591 00:26:44,120 --> 00:26:48,138 อะไรที่จะไปที่นั่น? 592 00:26:48,138 --> 00:26:48,908 ใช่? 593 00:26:48,908 --> 00:26:51,866 ผู้ชม: ไม่สัญลักษณ์ของเดลต้า ต้องใช้พื้นที่ภายในลอง? 594 00:26:51,866 --> 00:26:54,532 HANNAH: ใช่ดังนั้นมันไม่ได้ จำเป็นต้องจำเ​​ป็นที่จะต้องเป็นเดลต้า 595 00:26:54,532 --> 00:26:57,760 แต่เราต้องมีวิธีการบางอย่าง บอก computer-- เราขอโทษ 596 00:26:57,760 --> 00:27:01,130 เพื่อให้เรารู้ว่า TUR ไม่ได้คำ 597 00:27:01,130 --> 00:27:04,180 เพราะสมมุติว่าเราไม่ได้มี แนวคิดของเดลต้านี้แนวคิดนี้ 598 00:27:04,180 --> 00:27:09,850 แสดงความยินดีที่คุณพบคำ มันจะผ่านไปและย้ำ T-U-R, 599 00:27:09,850 --> 00:27:11,300 แล้วบอกว่าน่ากลัวผมพบว่ามัน! 600 00:27:11,300 --> 00:27:12,670 มันจะต้องเป็นคำว่า 601 00:27:12,670 --> 00:27:13,720 แต่จริงๆไม่ได้ 602 00:27:13,720 --> 00:27:15,310 เราต้องการทั้งทัวริงที่จะเป็นคำ 603 00:27:15,310 --> 00:27:17,760 ดังนั้นเราจึงต้องมีบางสิ่งบางอย่างที่ ในตอนท้ายว่าขอแสดงความยินดี 604 00:27:17,760 --> 00:27:19,051 คุณจะพบว่าคำที่ถูกต้อง 605 00:27:19,051 --> 00:27:21,680 ผู้ชม: ดังนั้นถ้าคุณมีเหมือนกัน 26 ตัวอักษรในตัวอักษร, 606 00:27:21,680 --> 00:27:24,560 คุณจะมีจริง 27 คีย์ในลองของคุณหรือไม่ 607 00:27:24,560 --> 00:27:26,010 >> HANNAH: น่ากลัวใช่ 608 00:27:26,010 --> 00:27:28,210 ที่จริงผมคิดว่า จะอยู่ในภาพนิ่งถัดไป 609 00:27:28,210 --> 00:27:29,440 ตาดา! 610 00:27:29,440 --> 00:27:32,880 ซึ่งถ้าคุณมี โหนดในลองของคุณคุณ 611 00:27:32,880 --> 00:27:35,800 จะมีเด็ก 27 แทน 26 612 00:27:35,800 --> 00:27:39,010 613 00:27:39,010 --> 00:27:40,050 คำถามใด ๆ กับที่? 614 00:27:40,050 --> 00:27:40,550 ใช่? 615 00:27:40,550 --> 00:27:44,569 ผู้ชม: ทำไมพยายามใช้เวลาเพื่อให้ พื้นที่มาก [ไม่ได้ยิน] ตามที่คุณไป? 616 00:27:44,569 --> 00:27:47,629 เพราะเหตุใดจึงถือว่าเป็น [ไม่ได้ยิน] 617 00:27:47,629 --> 00:27:48,170 HANNAH: แน่นอน 618 00:27:48,170 --> 00:27:48,790 ลองกลับไป 619 00:27:48,790 --> 00:27:52,350 คำถามคือทำไม มีความพยายามอย่างมากที่ใหญ่กว่า 620 00:27:52,350 --> 00:27:54,620 กว่าสิ่งที่ต้องการตารางแฮช 621 00:27:54,620 --> 00:27:57,790 ดังนั้นสำหรับแต่ละระดับเหล่านี้ แม้ว่าพวกเขาจะไม่ได้วาดที่นี่ 622 00:27:57,790 --> 00:28:01,250 คุณจะต้องมีทั้งหมด 26 ตัว 623 00:28:01,250 --> 00:28:04,420 และเหตุผลที่คุณไม่สามารถ บอกว่าโอ้ แต่ชอบทัวริงสำหรับผม 624 00:28:04,420 --> 00:28:07,570 ไม่จำเป็นต้องมีการใด ๆ ของผู้ สิ่งที่เหมือนกันในระดับของ U. ดี 625 00:28:07,570 --> 00:28:11,390 ถ้าคุณก็ต้องการที่จะเพิ่ม บางสิ่งบางอย่างที่เป็นเช่น T-H, 626 00:28:11,390 --> 00:28:14,800 คุณจะต้องมี ความสามารถในการเพิ่มคำว่า 627 00:28:14,800 --> 00:28:17,330 ดังนั้นสำหรับทุกตัวอักษรเดียว คุณกำลังจะมี 628 00:28:17,330 --> 00:28:19,730 ที่จะมีพวงของ อาร์เรย์มาออกจากมัน 629 00:28:19,730 --> 00:28:24,060 ดังนั้นคุณจะเห็นว่ามันจะได้รับ ใหญ่จริงๆอย่างรวดเร็วจริงๆ 630 00:28:24,060 --> 00:28:26,560 คำถามใด ๆ ที่อื่น ๆ ? 631 00:28:26,560 --> 00:28:28,980 สิทธิ์ทั้งหมด 632 00:28:28,980 --> 00:28:29,832 ใช่? 633 00:28:29,832 --> 00:28:33,210 >> ผู้ชม: เมื่อมีความพยายาม เร็วกว่าตารางแฮช? 634 00:28:33,210 --> 00:28:36,280 >> HANNAH: เมื่อมีความพยายาม เร็วกว่าตารางแฮช? 635 00:28:36,280 --> 00:28:39,120 ดังนั้นถ้าคุณมีจริงๆ ฟังก์ชันแฮชที่ไม่ดี 636 00:28:39,120 --> 00:28:41,840 ดังนั้นสมมติว่าผมชอบ นี่คือฟังก์ชันแฮชของคุณ 637 00:28:41,840 --> 00:28:43,660 ว่าสิ่งที่ไม่มีคำว่า คุณให้ฉันฉันเสมอ 638 00:28:43,660 --> 00:28:47,740 ไปใส่ไว้ในรายการอาร์เรย์ 0 639 00:28:47,740 --> 00:28:52,000 และเพื่อให้เราจบลงด้วยเพียงแค่ใส่ ทุกอย่างในหนึ่งรายการใหญ่ที่เชื่อมโยงยาว 640 00:28:52,000 --> 00:28:58,740 และเพื่อให้เวลาค้นหาจะใช้เวลาที่เลวร้ายที่สุด n ถ้ามันจะอยู่ที่ปลายสุดของรายการของเรา 641 00:28:58,740 --> 00:29:03,150 ด้วยความพยายามที่เราเพียงแค่ต้องย้ำ ผ่านตัวอักษรในคำว่า 642 00:29:03,150 --> 00:29:07,080 ดังนั้นแม้ว่าเราได้เพิ่มพวง คำอื่น ๆ ที่จะลองของเรา 643 00:29:07,080 --> 00:29:09,620 มันจะไม่พาเราได้อีกต่อไป ที่จะค้นหาคำโดยเฉพาะอย่างยิ่ง 644 00:29:09,620 --> 00:29:11,750 >> ทั้งหมดที่เราต้องทำคือสำหรับ ตัวอย่างเช่นในกรณีนี้ 645 00:29:11,750 --> 00:29:17,170 สมมุติว่าเรากำลังมองหาซูม เราก็จะต้องย้ำกว่า 646 00:29:17,170 --> 00:29:19,840 Z-O-O-M สี่ตัวอักษร 647 00:29:19,840 --> 00:29:22,250 เพื่อให้เป็นเพียงแค่ ความยาวของคำซูม 648 00:29:22,250 --> 00:29:25,400 มันไม่สำคัญว่าหลาย คำอื่น ๆ ที่เราใส่ในความพยายามนี้ 649 00:29:25,400 --> 00:29:30,225 เรามักจะได้รับมัน ในบรรดาสี่ขั้นตอน 650 00:29:30,225 --> 00:29:31,215 น่ากลัว 651 00:29:31,215 --> 00:29:32,205 ใช่? 652 00:29:32,205 --> 00:29:34,185 >> ผู้ชม: ดังนั้น [ไม่ได้ยิน] เป็นอาเรย์ใช่มั้ย? 653 00:29:34,185 --> 00:29:35,322 >> HANNAH: MM-HM 654 00:29:35,322 --> 00:29:37,155 ผู้ชม: หากคุณ มองหา [ไม่ได้ยิน] 655 00:29:37,155 --> 00:29:40,929 คุณจะต้องไปผ่าน อาร์เรย์ของคุณเพื่อหา [ไม่ได้ยิน] 656 00:29:40,929 --> 00:29:41,470 HANNAH: แน่นอน 657 00:29:41,470 --> 00:29:44,000 ผู้ชม: ไม่ว่าจะใช้เวลามากขึ้น? 658 00:29:44,000 --> 00:29:46,370 HANNAH: ถ้าผมจะไป บอกว่าอาเรย์ของฉันอยู่เสมอ 659 00:29:46,370 --> 00:29:49,250 จะเป็น A, B, C, D, E, F, G, blah blah blah, 660 00:29:49,250 --> 00:29:51,630 ดังนั้นถ้าฉันมักจะรู้ว่ามันเป็น ในการสั่งซื้อที่แน่นอนเดียวกัน 661 00:29:51,630 --> 00:29:53,880 ถ้าฉันมักจะรู้ว่ามันเป็น ตามลำดับตัวอักษร 662 00:29:53,880 --> 00:29:57,860 ฉันเพียงแค่สามารถพูด O คือจำนวน ดังนั้นจึงในตัวอักษร 663 00:29:57,860 --> 00:29:59,620 เพียงแค่ข้ามไปยังสถานที่ที่ 664 00:29:59,620 --> 00:30:01,860 เพราะจำได้ว่ามี อาร์เรย์เราสามารถเข้าถึง 665 00:30:01,860 --> 00:30:06,590 องค์ประกอบใด ๆ ของอาร์เรย์ว่าในอย่างต่อเนื่อง เวลาถ้าเรารู้ว่าเรากำลังมองหา 666 00:30:06,590 --> 00:30:09,080 667 00:30:09,080 --> 00:30:09,580 ใช่? 668 00:30:09,580 --> 00:30:12,005 >> ผู้ชม: เมื่อก่อนหน้านี้ เลื่อน [ไม่ได้ยิน] 27 669 00:30:12,005 --> 00:30:14,430 แต่สำหรับ 26 คนแรก 670 00:30:14,430 --> 00:30:15,400 >> HANNAH: ขออภัย? 671 00:30:15,400 --> 00:30:18,800 >> ผู้ชม: ไม่ได้เป็นครั้งแรก หนึ่ง 0 ดังนั้นมันจะไม่ 26? 672 00:30:18,800 --> 00:30:24,900 >> HANNAH: แน่นอนดังนั้นเมื่อเราบอกว่า 27 ที่ จะให้เราดัชนี 0 ถึง 26 673 00:30:24,900 --> 00:30:28,220 แต่ถ้าคุณจริงนับ ออกเหล่านั้นก็จะเป็น 27 674 00:30:28,220 --> 00:30:30,007 คำถามที่ดี 675 00:30:30,007 --> 00:30:30,590 อะไรอีกหรือไม่ 676 00:30:30,590 --> 00:30:31,200 ใช่? 677 00:30:31,200 --> 00:30:34,420 >> ผู้ชม: ดังนั้นพยายาม ช้ากว่าตารางแฮช? 678 00:30:34,420 --> 00:30:37,920 >> HANNAH: พยายามจะไปได้ใน ทฤษฎีเร็วกว่าตารางแฮช 679 00:30:37,920 --> 00:30:39,760 แต่ใช้หน่วยความจำมากขึ้น 680 00:30:39,760 --> 00:30:40,534 ใช่? 681 00:30:40,534 --> 00:30:41,450 ผู้ชม: [ไม่ได้ยิน] 682 00:30:41,450 --> 00:30:45,770 683 00:30:45,770 --> 00:30:47,484 >> HANNAH: ฉันขอโทษฉันไม่ได้ยินคุณ 684 00:30:47,484 --> 00:30:48,400 ผู้ชม: [ไม่ได้ยิน] 685 00:30:48,400 --> 00:30:51,250 686 00:30:51,250 --> 00:30:54,100 0-25 จะช่วยให้คุณ 26 687 00:30:54,100 --> 00:30:56,958 >> HANNAH: 0-25 จะ ให้คุณ 26 ขวา 688 00:30:56,958 --> 00:30:58,457 >> ผู้ชม: แล้ว [ไม่ได้ยิน] 689 00:30:58,457 --> 00:30:59,040 HANNAH: ขวา 690 00:30:59,040 --> 00:31:04,760 ดังนั้นตัวเลขที่เรากำลังระบุเป็น จำนวนของสิ่งที่อยู่ในอาเรย์ของเรา 691 00:31:04,760 --> 00:31:07,260 ดังนั้นหากเรามี 27 ก็ จะให้เรา 0 692 00:31:07,260 --> 00:31:10,620 ผ่าน 26 ซึ่งจะให้ ห้องพักเราสำหรับในกรณีนี้ 693 00:31:10,620 --> 00:31:12,770 ผมไม่ได้รวมทั้งเครื่องหมายวรรคตอน 694 00:31:12,770 --> 00:31:17,040 ดังนั้นเราจึงได้รับ 0 ถึง 25 มี ครั้งแรก 26 ตัวอักษรของตัวอักษร 695 00:31:17,040 --> 00:31:18,990 หรือทั้งหมด 26 ตัวอักษรของตัวอักษร 696 00:31:18,990 --> 00:31:21,190 และแล้วที่ผ่านมา สิ่งที่รายการที่ 26 เป็น 697 00:31:21,190 --> 00:31:24,598 จะเป็นการตรวจสอบ เครื่องหมายหรือเดลต้า 698 00:31:24,598 --> 00:31:26,960 อะไรอีกหรือไม่ 699 00:31:26,960 --> 00:31:29,130 น่ากลัว 700 00:31:29,130 --> 00:31:30,020 สูญเสียพื้นที่ของฉัน 701 00:31:30,020 --> 00:31:31,020 ตกลงเย็น 702 00:31:31,020 --> 00:31:33,240 >> ดังนั้นเราได้สัมผัสนี้ 703 00:31:33,240 --> 00:31:37,430 แต่การปิดขนาดใหญ่ ระหว่างพยายามและตารางแฮช 704 00:31:37,430 --> 00:31:39,720 คือพยายามให้ใน ทฤษฎีคงมองขึ้น 705 00:31:39,720 --> 00:31:42,890 ครั้ง แต่ใช้เป็นจำนวนมากทั้งของหน่วยความจำ 706 00:31:42,890 --> 00:31:46,495 สิทธิทั้งหมดตอนนี้เรามีเล็กน้อย โครงสร้างที่มีความซับซ้อนน้อยลง 707 00:31:46,495 --> 00:31:49,640 และเราจะทำได้ด้วยซี และเราจะย้ายไปทางขวาพร้อม 708 00:31:49,640 --> 00:31:51,930 >> ดังนั้นกองเราเห็นนี้ ในการบรรยายที่คุณ 709 00:31:51,930 --> 00:31:55,020 มีบางอย่างเช่น สแต็คของถาดที่ 710 00:31:55,020 --> 00:31:57,330 สิ่งสุดท้ายที่คุณใส่ ในกองเป็นไป 711 00:31:57,330 --> 00:31:59,500 จะเป็นสิ่งแรกที่คุณจะออก 712 00:31:59,500 --> 00:32:02,880 นั่นคือสิ่งที่จริงๆกำหนดสแต็ค นั่นคือสิ่งสุดท้ายที่คุณใส่ใน 713 00:32:02,880 --> 00:32:06,080 จะไปเป็นคนแรก สิ่งที่คุณจะออก 714 00:32:06,080 --> 00:32:09,279 และคำศัพท์ที่เราใช้ ถ้าเราจะใส่บางสิ่งบางอย่าง 715 00:32:09,279 --> 00:32:12,070 ถ้าเราจะเพิ่มสิ่งที่ สแต็คของเราที่เราเรียกว่าการผลักดัน 716 00:32:12,070 --> 00:32:14,970 และถ้าเรานำสิ่งที่ ปิดเราเรียกว่า popping 717 00:32:14,970 --> 00:32:17,080 และถ้าเรากำลังจะไป ใช้สแต็คเรา 718 00:32:17,080 --> 00:32:20,660 จะต้องมีการตรวจสอบเพื่อให้การติดตามของ ทั้งขนาดและความจุ 719 00:32:20,660 --> 00:32:24,940 ดังนั้นจำนวนรวมขององค์ประกอบที่เราสามารถทำได้ ถือและปัจจุบันจำนวนขององค์ประกอบ 720 00:32:24,940 --> 00:32:27,880 ที่เราจะถือ 721 00:32:27,880 --> 00:32:29,885 >> และคล้ายกันมากเรามีคิว 722 00:32:29,885 --> 00:32:34,510 และความแตกต่างเท่านั้น คือแทนที่จะกับกอง, 723 00:32:34,510 --> 00:32:37,630 เรากล่าวว่าสิ่งสุดท้ายที่เราวางบน เป็นสิ่งแรกที่เราจะออก 724 00:32:37,630 --> 00:32:40,940 ดังนั้นด้วยคิว สิ่งแรกที่เราใส่ใน 725 00:32:40,940 --> 00:32:43,129 เป็นไปได้ สิ่งแรกที่เราจะออกจาก 726 00:32:43,129 --> 00:32:45,420 ดังนั้นนี่คือเช่นถ้าคุณอยู่ จริงแถวที่ร้าน 727 00:32:45,420 --> 00:32:48,140 และคุณกำลังถูกช่วย แล้วคนแรกในสาย 728 00:32:48,140 --> 00:32:50,880 ควรจะเป็นคนแรกที่จะได้รับความช่วยเหลือ 729 00:32:50,880 --> 00:32:52,220 เพื่อที่จะเป็นคิว 730 00:32:52,220 --> 00:32:55,880 >> ดังนั้นเราจึงจำเป็นที่จะติดตาม ขนาดความจุและหัวตั้งแต่เรา 731 00:32:55,880 --> 00:33:01,130 จะใช้เวลาทุกคนออกด้านหน้า ของรายการแทนกลับ 732 00:33:01,130 --> 00:33:03,480 คำถามในที่? 733 00:33:03,480 --> 00:33:06,330 คำถามใด ๆ C ที่ได้รับการรบกวนคุณ? 734 00:33:06,330 --> 00:33:09,590 โครงสร้างข้อมูลใด ๆ ที่สิ่งที่สนุก? 735 00:33:09,590 --> 00:33:10,530 สงวนเย็น 736 00:33:10,530 --> 00:33:14,120 ดังนั้นฉันจะส่งมันไปอลิสันที่จะ กระโดดลงไปในการเขียนโปรแกรมบางอย่างมากขึ้น 737 00:33:14,120 --> 00:33:15,965 >> ALISON: โอ้เราจะเห็น 738 00:33:15,965 --> 00:33:17,370 เราจะเห็นวิธีที่ดีที่ผมทำที่นี่ 739 00:33:17,370 --> 00:33:21,410 ตกลงผมจะพยายามและบิน ผ่านสิ่งนี้พวก 740 00:33:21,410 --> 00:33:24,540 ฮันนาห์ไปมากในการ เชิงลึกเกี่ยวกับสิ่งที่เธอทั้งหมด 741 00:33:24,540 --> 00:33:26,900 ฉันจะพยายามที่จะให้ ภาพรวมการระเบิดอย่างรวดเร็ว 742 00:33:26,900 --> 00:33:31,290 เพื่อที่เราจะได้รับ Davin กับทุก สนุก JavaScript และสิ่งที่การรักษาความปลอดภัย 743 00:33:31,290 --> 00:33:33,380 ว่าบางทีคุณจริง ต้องการที่จะได้ยินเพิ่มเติมเกี่ยวกับ 744 00:33:33,380 --> 00:33:36,600 >> ตกลงเป็นฮันนาห์กล่าวว่าถ้า คุณมีคำถามใด ๆ 745 00:33:36,600 --> 00:33:39,170 ฉันจะเร็วเกินไปโปรดแจ้งให้เราทราบ 746 00:33:39,170 --> 00:33:42,114 ผมจะตอบคำถามเท่าที่จำเป็น 747 00:33:42,114 --> 00:33:45,280 ดังนั้นการเริ่มต้นที่เรากำลังจะเริ่มต้นด้วย อาจจะเป็นหนึ่งในสิ่งแรกมาก 748 00:33:45,280 --> 00:33:48,730 คุณได้เรียนรู้กับเว็บ การเขียนโปรแกรมสิทธิ์ 749 00:33:48,730 --> 00:33:52,720 chmod ดังนั้นพวกคุณควรจะได้รับ ปริญญาโทที่นี้กับทุกเว็บ 750 00:33:52,720 --> 00:33:54,870 การเขียนโปรแกรมที่คุณได้ ได้ทำเมื่อเร็ว ๆ นี้ 751 00:33:54,870 --> 00:33:57,320 มันเป็นพื้นเพียงแค่คำสั่ง ที่มีการเปลี่ยนแปลงสิทธิ์ 752 00:33:57,320 --> 00:34:00,779 หรือสิทธิ์การเข้าถึง ของวัตถุระบบไฟล์ของเรา 753 00:34:00,779 --> 00:34:02,570 แน่นอนจริง เห็นเหล่านี้ถ้าคุณ 754 00:34:02,570 --> 00:34:04,910 มีปัญหากับเหล่านี้ ชุดในช่วงปัญหาของคุณ 755 00:34:04,910 --> 00:34:11,460 คุณอาจได้ใช้คำสั่ง ls -l ซึ่งเป็นเวลานาน ที่จะได้รับชนิดของมุมมองเช่นนี้ 756 00:34:11,460 --> 00:34:14,209 ที่คุณเห็นจริงทั้งหมด สิทธิ์ของแฟ้ม 757 00:34:14,209 --> 00:34:16,850 758 00:34:16,850 --> 00:34:20,732 >> และจริงๆเราก็จะไป ผ่านสวยได้อย่างรวดเร็วเพียงแค่สวย 759 00:34:20,732 --> 00:34:21,940 มากว่าแต่ละเหล่านี้หมายถึง 760 00:34:21,940 --> 00:34:24,481 ดังนั้นเราจึงได้ D ด้านขวาที่นี่ซึ่ง เพียงแค่ยืนไดเรกทอรี 761 00:34:24,481 --> 00:34:26,790 762 00:34:26,790 --> 00:34:31,739 เห็นได้ชัดว่าที่นี่เราเห็น rwx ซึ่ง คืออ่านเขียนได้และปฏิบัติการ 763 00:34:31,739 --> 00:34:37,090 เหล่านี้อาจจะมีการแสดงเป็นบิต ซึ่งเราจะได้รับในในหน้าถัดไป 764 00:34:37,090 --> 00:34:40,699 ดังนั้นสามที่เราเห็นแต่ละ ที่นี่จึงเป็นสาม triads 765 00:34:40,699 --> 00:34:48,120 เราได้ rwx วิจัยอะไร x และ R ไม่มีอะไร x สำหรับไฟล์แรกนี้ 766 00:34:48,120 --> 00:34:49,690 มันนี้โครงสร้างทั่วไป 767 00:34:49,690 --> 00:34:50,940 >> ดังนั้นเราจึงมีไดเรกทอรีบาง 768 00:34:50,940 --> 00:34:53,999 ขณะนี้มีกลุ่มผู้ใช้บางส่วน ที่มีสิทธิ์เหล่านี้ 769 00:34:53,999 --> 00:34:57,040 บางกลุ่มที่มีสิทธิ์เหล่านี้ และโลกที่มีสิทธิ์ 770 00:34:57,040 --> 00:34:59,420 คุณสามารถคิดว่าเหล่านี้เป็นสาม 771 00:34:59,420 --> 00:35:01,130 คุณสามารถคิดว่าเหล่านี้เป็นสามบิต 772 00:35:01,130 --> 00:35:04,060 ดังนั้นพวกเขาจึงสามารถเก็บค่า ใดก็ได้จาก 0 ขึ้น 773 00:35:04,060 --> 00:35:07,350 7 ซึ่งเป็นเหตุผลที่บางครั้ง เรามีคุณทำ chmod 774 00:35:07,350 --> 00:35:17,510 600 แทน RW chmod สิ่งที่ 775 00:35:17,510 --> 00:35:19,170 เราจะได้รับในตัวอย่างที่มี 776 00:35:19,170 --> 00:35:24,260 แต่โดยทั่วไปคุณสามารถคิด ของเหล่านี้เป็นอย่างใดอย่างหนึ่งเพียง rwx, 777 00:35:24,260 --> 00:35:28,520 หรือคุณสามารถคิดว่าพวกเขาเป็นบางส่วน จำนวนหนึ่งที่นี่เป็นครั้งแรกที่นี่ 778 00:35:28,520 --> 00:35:31,480 แสดงให้เห็นถึงตัวเลขระหว่าง 0 และ 7 นี้สอง 779 00:35:31,480 --> 00:35:33,970 แสดงให้เห็นถึงตัวเลขระหว่าง 0 และ 7 และคนที่สามหนึ่ง 780 00:35:33,970 --> 00:35:38,245 แสดงให้เห็นถึงตัวเลขระหว่าง 0 และ 7, OK? 781 00:35:38,245 --> 00:35:42,700 >> R มีค่า 4. W มีค่าเป็น 2 และ x 782 00:35:42,700 --> 00:35:49,230 มีค่าเป็น 1 ซึ่งเป็นเหตุผลนี้ ที่นี่ได้รับอนุญาตจะถูก chmod 700 783 00:35:49,230 --> 00:35:53,520 เพราะในกรณีนี้ที่นี่ก็บอกว่าเรา ได้บิตแรกที่มีการพลิกบน 784 00:35:53,520 --> 00:35:55,380 ดังนั้นเราจึงมี 4 สำหรับการอ่าน 785 00:35:55,380 --> 00:35:58,730 บิตที่สองคือการพลิกสำหรับ W, ซึ่งเป็น 2 ดังนั้นตอนนี้เรามี 6 786 00:35:58,730 --> 00:36:02,070 และบิตที่สามจะพลิกบน สำหรับ x ซึ่งเป็น 1 ดังนั้นเราจึงได้รับเจ็ด 787 00:36:02,070 --> 00:36:04,820 และแน่นอนว่ากลุ่มของเรา และโลกของเราแต่ละ 0 788 00:36:04,820 --> 00:36:07,770 ดังนั้นนี่คือยัง เทียบเท่า chmod 700 789 00:36:07,770 --> 00:36:12,081 และแน่นอนผมจะพยายามที่จะ เข้าใจการทำแผนที่ระหว่างผู้ 790 00:36:12,081 --> 00:36:14,080 ผมไม่แน่ใจว่าถ้ามันมี ขึ้นมาในแบบทดสอบก่อน 791 00:36:14,080 --> 00:36:18,590 แต่มันจะ คำถามที่ฉันอาจจะถาม 792 00:36:18,590 --> 00:36:22,110 >> เพียงแค่นิด ๆ หน่อย ๆ ไปแม้กระทั่ง ต่อไปใน chmod ที่นี่ที่นี่ 793 00:36:22,110 --> 00:36:27,730 เป็นทั่วไปมาก โครงสร้างของสาย chmod 794 00:36:27,730 --> 00:36:29,500 ดังนั้นแน่นอนเราได้ chmod ที่นี่ 795 00:36:29,500 --> 00:36:34,410 อ้างอิงสิ่งที่นี้หมายถึงคือ ที่พวกเราจะได้ให้สิทธิ์เหล่านี้ไป 796 00:36:34,410 --> 00:36:36,570 หรือผู้ที่เราจะพาเหล่านี้ สิทธิ์ห่างจาก 797 00:36:36,570 --> 00:36:44,330 ดังนั้นเราจึงมีที่นี่ในสิทธิ์ เหมือนอย่างที่เราได้กำหนดให้คุณ chmod บวก x, 798 00:36:44,330 --> 00:36:45,440 ในขณะที่เราจะได้เห็นเร็ว ๆ นี้ 799 00:36:45,440 --> 00:36:48,460 ก็หมายความว่าให้เฉพาะเหล่านี้ สิทธิ์ให้กับทุกคน 800 00:36:48,460 --> 00:36:49,600 ให้พวกเขาทั้งหมด 801 00:36:49,600 --> 00:36:55,370 เพื่อให้คุณสามารถเป็นอย่างดีมียูบวก x หรือกรัมบวก x หรือ o บวก x หรือหลาย 802 00:36:55,370 --> 00:36:55,870 ของมัน 803 00:36:55,870 --> 00:36:59,280 เพื่อให้ส่วนแรกอยู่เสมอ จะเป็นข้อมูลอ้างอิง 804 00:36:59,280 --> 00:37:03,220 ใครที่เราจะให้สิทธิ์เหล่านี้ไป หรือผู้ที่เราพาพวกเขาออกไปจาก? 805 00:37:03,220 --> 00:37:04,850 >> คนที่สองเป็นผู้ดำเนินการ 806 00:37:04,850 --> 00:37:07,350 ดังนั้นพวกคุณได้กระทำส่วนใหญ่บวก 807 00:37:07,350 --> 00:37:12,140 นี้จะช่วยให้สิทธิ์ในการ ใครก็ตามที่คุณกำลังให้พวกเขา 808 00:37:12,140 --> 00:37:14,840 ในขณะที่ลบเหตุผลขจัดพวกเขา 809 00:37:14,840 --> 00:37:16,880 ไม่มีอะไรที่น่ากลัวเกินไปดังนั้นมี 810 00:37:16,880 --> 00:37:23,060 และแล้วโหมดคือสิ่งที่เราได้พูดคุยเกี่ยวกับ ด้วยการอ่านการเขียนหรือการดำเนินการ 811 00:37:23,060 --> 00:37:29,070 ดังนั้นบวก x หมายถึงให้ปฏิบัติการ สิทธิ์ให้กับทุกคน 812 00:37:29,070 --> 00:37:33,430 และแล้วแน่นอนที่ แฟ้มที่เฉพาะเจาะจงหรือไดเรกทอรี 813 00:37:33,430 --> 00:37:33,980 OK? 814 00:37:33,980 --> 00:37:36,010 ทุกคนที่ดีกับ chmod? 815 00:37:36,010 --> 00:37:37,850 ไม่ได้เลวร้ายเกินไป? 816 00:37:37,850 --> 00:37:42,417 >> ตกลงดังนั้น HTML ใด ๆ ของคุณเป็น อายุมากพอที่ to-- อายุ MySpace? 817 00:37:42,417 --> 00:37:44,750 ผมส่งเรื่องนี้ไปยังส่วนของฉัน และตัวอักษรครึ่งคน 818 00:37:44,750 --> 00:37:45,790 มองมาที่ฉันเหมือนฉันเป็นคนบ้า 819 00:37:45,790 --> 00:37:47,498 และผมก็ชอบครับ เราไม่ได้ว่าเก่า 820 00:37:47,498 --> 00:37:48,910 มา 821 00:37:48,910 --> 00:37:53,360 ดังนั้น Hypertext Markup Language, ก็ตรงไปตรงมาเพียงวิธีสำหรับคุณ 822 00:37:53,360 --> 00:37:57,990 เพื่อแสดงสิ่งบางอย่างบนเว็บ 823 00:37:57,990 --> 00:37:59,210 ดังนั้นจึงเป็นภาษามาร์กอัป 824 00:37:59,210 --> 00:38:00,640 มันไม่ใช่ภาษาสคริปต์ 825 00:38:00,640 --> 00:38:02,160 มีตรรกะในนั้นไม่ได้ 826 00:38:02,160 --> 00:38:05,710 มันเป็นเพียงการเปลี่ยนแปลง บางสิ่งบางอย่างวิธีที่จะแสดง 827 00:38:05,710 --> 00:38:07,670 ตกลงดังนั้นที่สำคัญ ความแตกต่างที่จะทำให้ 828 00:38:07,670 --> 00:38:12,030 ก็ถือว่าเป็นภาษามาร์กอัป ไม่ใช่ภาษาสคริปต์ 829 00:38:12,030 --> 00:38:15,100 >> ดังนั้นที่นี่เรามีแท็กของเรา 830 00:38:15,100 --> 00:38:20,390 บนสไลด์นี้อาจจะเป็นส่วนใหญ่ของ คนที่คุณควรจะคุ้นเคยกับ 831 00:38:20,390 --> 00:38:22,390 และมีความสะดวกสบายมากกับ 832 00:38:22,390 --> 00:38:25,700 ดังนั้นเห็นได้ชัดว่าเรามี แท็กของเราซึ่ง 833 00:38:25,700 --> 00:38:29,930 กำหนดทุกอย่างที่อยู่ใน ระหว่างสองคนนี้จะเป็น HTML 834 00:38:29,930 --> 00:38:33,070 เรามีการเชื่อมโยงบางอย่างที่ เห็นได้ชัดที่จะทำให้คุณ 835 00:38:33,070 --> 00:38:34,990 เชื่อมโยงไปยังหน้าเว็บภายนอก 836 00:38:34,990 --> 00:38:37,520 ชื่อบางคนที่อยู่ในหัวของเราที่นี่ 837 00:38:37,520 --> 00:38:40,020 และเรามีร่างกายของเราด้วย h1 ซึ่งเป็นส่วนหัว 838 00:38:40,020 --> 00:38:42,260 ดังนั้นมันจะทำให้มันมีความสุข และเป็นตัวหนาและใหญ่ 839 00:38:42,260 --> 00:38:46,040 และแล้วเรามีบาง p, ซึ่งเป็นวรรค 840 00:38:46,040 --> 00:38:49,000 คุณอาจจะรู้ว่า และมีความคุ้นเคยกับสิ่งที่ 841 00:38:49,000 --> 00:38:54,030 เช่นเดียวกับวิธีการที่คุณแทรกรูปภาพเป็น มีผู้ใดเรียนส่วนหัวอื่น ๆ ? 842 00:38:54,030 --> 00:38:57,240 แน่นอนผมจะเป็น สะดวกสบายกับ div 843 00:38:57,240 --> 00:39:00,840 ดังนั้นเหล่านี้มีส่วนใหญ่ของแท็ก ที่คุณควรจะคุ้นเคยกับ 844 00:39:00,840 --> 00:39:04,370 แต่แน่นอนเช่นเดียวกับทุกอย่างใน CS 50 รายการไม่ครบถ้วนสมบูรณ์ 845 00:39:04,370 --> 00:39:08,200 เพื่อให้แน่ใจว่าคุณแปรงขึ้นบนที่ 846 00:39:08,200 --> 00:39:13,260 >> CSS, CSS ดังนั้นถ้าใด ๆ ของคุณดู การสัมมนาของฉันจากสองสัปดาห์ที่ผ่านมา 847 00:39:13,260 --> 00:39:16,250 เป็นจริงเพียงวิธี สไตล์หน้าเว็บของคุณ? 848 00:39:16,250 --> 00:39:18,950 ตกลงดังนั้นเราจึงมีภาษามาร์กอัปบาง 849 00:39:18,950 --> 00:39:23,220 HTML, ที่ดูแลเพียงข้อความ และสถานที่ที่มันอาจจะอยู่บนหน้า 850 00:39:23,220 --> 00:39:25,760 แต่ CSS เป็นจริงๆสิ่งที่ทำให้มันสวย 851 00:39:25,760 --> 00:39:30,690 คุณสามารถมีเหล่านี้ใน HTML ของคุณ ไฟล์ แต่ที่เราจะพูดถึงในภายหลัง 852 00:39:30,690 --> 00:39:32,660 ผมค่อนข้างมั่นใจว่ามันอาจจะ เป็นภาพนิ่งถัดไปก็ 853 00:39:32,660 --> 00:39:35,620 เป็นเรื่องธรรมดาและจริง การปฏิบัติที่เราจริงๆให้กำลังใจ 854 00:39:35,620 --> 00:39:40,670 สำหรับคุณที่จะให้พวกเขาแยกออกจากกันเมื่อเรา พูดคุยเกี่ยวกับ MVC และกระบวนทัศน์ทั้งหมด 855 00:39:40,670 --> 00:39:42,490 นั่นคือสิ่งที่ฟีดนี้ลง 856 00:39:42,490 --> 00:39:46,110 >> ดังนั้น CSS เป็นเพียงวิธีการ ทำให้สิ่งที่ดูสวย 857 00:39:46,110 --> 00:39:50,500 สิ่งที่นี่เช่น ร่างกายและ #title และ .info, 858 00:39:50,500 --> 00:39:54,340 เหล่านี้เรียกว่าเตอร์และสิ่งที่ ที่พวกเขาทำคือการที่พวกเขาเลือกสิ่งที่เฉพาะเจาะจง 859 00:39:54,340 --> 00:39:59,260 ภายในไฟล์ HTML ของคุณ และใช้สิ่งที่สไตล์ 860 00:39:59,260 --> 00:40:04,090 สิ่งที่จัดเรียงของสิ่งที่คุณต้องการ เพื่อว่าองค์ประกอบที่เฉพาะเจาะจงของเว็บของคุณ 861 00:40:04,090 --> 00:40:04,590 หน้า 862 00:40:04,590 --> 00:40:08,820 ดังนั้นที่นี่เรามี สีพื้นหลังและสี 863 00:40:08,820 --> 00:40:12,450 และครอบครัวของตัวอักษรที่เป็น นำไปใช้กับสิ่งที่อยู่ในร่างกาย 864 00:40:12,450 --> 00:40:15,530 ดังนั้นถ้าเรามองกลับมาที่นี่ก็ จะไม่นำไปใช้กับชื่อ 865 00:40:15,530 --> 00:40:22,340 มันจะนำไปใช้กับสิ่งที่เป็น ในร่างกายเตอร์เหล่านี้ OK? 866 00:40:22,340 --> 00:40:25,250 >> ด้วยชื่อที่นี่นี้เป็น จะเป็นสิ่งเดียวกัน 867 00:40:25,250 --> 00:40:28,410 สีของข้อความ เป็นสีฟ้าเป็นเพียงจะ 868 00:40:28,410 --> 00:40:33,870 ที่จะส่งผลกระทบต่อสิ่งที่อยู่ใน เตอร์ชื่อ 869 00:40:33,870 --> 00:40:36,580 เช่นเดียวกับข้อมูลที่นี่ ข้อความจะเป็นสีชมพู 870 00:40:36,580 --> 00:40:38,600 ข้อมูลใด ๆ ก็ตามซึ่งเป็นสิทธิที่นี่ 871 00:40:38,600 --> 00:40:40,860 ดังนั้นสิ่งเดียวที่ จะเป็นสีชมพูในหน้านี้ 872 00:40:40,860 --> 00:40:44,100 เป็นวันจันทร์ 17 พฤศจิกายน, 2014 873 00:40:44,100 --> 00:40:48,770 ตกลงดังนั้น CSS เป็นเพียงวิธีการ มีการควบคุมมาก over-- ใช่? 874 00:40:48,770 --> 00:40:51,850 >> ผู้ชม: ทำไมคุณมี ที่จะใช้กัญชาที่มีชื่อ? 875 00:40:51,850 --> 00:40:55,170 >> HANNAH: สไลด์ถัดไปสัญญา! 876 00:40:55,170 --> 00:40:56,810 เราจะได้รับมี 877 00:40:56,810 --> 00:40:59,830 ดังนั้นนี่คือเหตุผลที่เราต้องใช้กัญชา 878 00:40:59,830 --> 00:41:03,429 เตอร์เพื่อใช้ในหลักสาม รูปแบบที่เราพูดคุยกับพวกคุณเกี่ยวกับ 879 00:41:03,429 --> 00:41:05,595 ฉัน fyou ต้องการที่จะเรียนรู้เพิ่มเติม มีมากมายออกมี 880 00:41:05,595 --> 00:41:07,540 มีเอกสาร CSS ที่ดีคือ 881 00:41:07,540 --> 00:41:12,680 มีชื่อแท็กซึ่งมีจะทำ มีเพียงแท็กปกติของคุณในรูปแบบ HTML 882 00:41:12,680 --> 00:41:17,210 ดังนั้น h1, p, div, H2, ทุกประเภทของสิ่งเหล่านั้น 883 00:41:17,210 --> 00:41:20,320 และเราก็สามารถตั้งชื่อผู้ที่เป็น 884 00:41:20,320 --> 00:41:22,650 ดังนั้นที่เราเห็นที่นี่ด้วย ร่างกายก็แท็กปกติ 885 00:41:22,650 --> 00:41:26,660 ดังนั้นเราก็สามารถทำให้ร่างกายเมื่อ เรากำลังพูดถึงในไฟล์ CSS ของเรา 886 00:41:26,660 --> 00:41:29,730 >> ด้วยชื่อเหตุผลทั้งหมดที่เรา มีกัญชานี้คือเรามีสิ่งที่เป็น 887 00:41:29,730 --> 00:41:31,010 พิจารณา ID 888 00:41:31,010 --> 00:41:35,400 ดังนั้น ID ควรจะเป็น ที่ไม่ซ้ำกันภายในเพจ HTML ของคุณ 889 00:41:35,400 --> 00:41:37,930 เพื่อที่ว่าเมื่อคุณอยู่ หมายถึงว่ามันคุณ 890 00:41:37,930 --> 00:41:41,990 รู้ว่าคุณเพียงหมาย สิ่งหนึ่งที่เฉพาะเจาะจง 891 00:41:41,990 --> 00:41:46,270 ดังนั้นในกรณีนี้ที่นี่กับเรา h1 นี่ CS 50 เซสชั่นการตรวจสอบ 892 00:41:46,270 --> 00:41:47,810 เรามี id ของชื่อ 893 00:41:47,810 --> 00:41:54,280 ดังนั้นเพื่อที่จะเพียงแค่หมายถึงว่า ชิ้นส่วนของ HTM​​L ของเราที่เราทำชื่อกัญชา 894 00:41:54,280 --> 00:41:58,080 เพียงแค่การประชุมหมายเลขที่กำหนด กับกัญชาในด้านหน้าของพวกเขา 895 00:41:58,080 --> 00:42:01,650 ในทำนองเดียวกับที่เราเห็น ข้อมูลที่นี่เป็นชั้น 896 00:42:01,650 --> 00:42:06,070 และชั้นให้กับ CSS เป็น กำหนดให้เป็นชั้นจุด 897 00:42:06,070 --> 00:42:08,895 หรือจุดสิ่งที่ชั้นเป็น 898 00:42:08,895 --> 00:42:10,850 ดังนั้นในกรณีนี้ที่นี่ก็เป็นข้อมูล 899 00:42:10,850 --> 00:42:13,090 >> ดังนั้นผมจึงเอามันกลับมา 900 00:42:13,090 --> 00:42:16,200 ทั้งสองคนนี้จะเป็น สีชมพูสำหรับ CSS ของเราที่นี่ 901 00:42:16,200 --> 00:42:18,430 เพราะพวกเขาทั้งสองมีระดับชั้นของข้อมูล 902 00:42:18,430 --> 00:42:23,070 และในไฟล์ CSS ของเราเราได้กำหนด อะไรที่กับชั้นของข้อมูล 903 00:42:23,070 --> 00:42:24,120 จะต้องเป็นสีชมพู 904 00:42:24,120 --> 00:42:25,968 ไม่ว่าทำให้รู้สึก? 905 00:42:25,968 --> 00:42:27,435 ใช่? 906 00:42:27,435 --> 00:42:30,731 >> ผู้ชม: ถ้าคุณจะทำให้ ทุกอย่างในสีขาวร่างกาย 907 00:42:30,731 --> 00:42:32,814 และจากนั้นคุณพยายามที่จะทำให้ สิ่งที่อยู่ข้างในสีฟ้า 908 00:42:32,814 --> 00:42:34,770 จะที่ทำให้เกิดปัญหา? 909 00:42:34,770 --> 00:42:37,310 >> HANNAH: ดังนั้น CSS เป็น cascading แผ่นสไตล์ 910 00:42:37,310 --> 00:42:40,730 ดังนั้นอะไรที่เป็นไปทาง ด้านล่างจะมีความสำคัญ 911 00:42:40,730 --> 00:42:44,080 ดังนั้นถ้าคุณทำอะไรกับร่างกาย และคุณทำให้ทุกอย่างเป็นสีขาว 912 00:42:44,080 --> 00:42:49,300 และต่อมาในวันที่คุณเปลี่ยนชื่อ หรือคุณเปลี่ยนข้อความที่อยู่ภายในร่างกาย 913 00:42:49,300 --> 00:42:50,560 มันเขียนทับที่ 914 00:42:50,560 --> 00:42:55,360 ดังนั้นอะไรที่มีต่อ ด้านล่างจะมีความสำคัญ 915 00:42:55,360 --> 00:42:56,730 ใช่? 916 00:42:56,730 --> 00:42:59,627 >> ผู้ชม: และรหัสจะไม่ซ้ำกัน แต่เรียนได้มากขึ้น? 917 00:42:59,627 --> 00:43:00,210 HANNAH: ขวา 918 00:43:00,210 --> 00:43:06,320 รหัสดังนั้นควรจะไม่ซ้ำกันและชั้นเรียนสามารถ อ้างถึงหลายสิ่งหลายอย่างเท่าที่คุณต้องการ 919 00:43:06,320 --> 00:43:07,580 คำถามใด ๆ ที่อื่น ๆ ? 920 00:43:07,580 --> 00:43:09,800 ใช่ 921 00:43:09,800 --> 00:43:11,210 >> ผู้ชม: [ไม่ได้ยิน] 922 00:43:11,210 --> 00:43:13,509 ฉันสงสัยว่า ที่ทำให้แตกต่าง 923 00:43:13,509 --> 00:43:15,217 HANNAH: ฉันขอโทษ สิ่งที่เป็นคำถาม? 924 00:43:15,217 --> 00:43:18,960 ผู้ชม: มีขนาดเล็กเป็น "F" และทุน "เอฟ" 925 00:43:18,960 --> 00:43:21,440 HANNAH: ดังนั้นความแตกต่าง ระหว่างขนาดเล็ก "F" และทุน "F" 926 00:43:21,440 --> 00:43:22,606 ไม่ควรสร้างความแตกต่าง 927 00:43:22,606 --> 00:43:26,330 ดังนั้น "F" จะเป็น 15 ทางใดทางหนึ่ง 928 00:43:26,330 --> 00:43:28,130 เย็นอะไรอีกหรือไม่ 929 00:43:28,130 --> 00:43:29,930 ทุกคนที่ดี, CSS? 930 00:43:29,930 --> 00:43:30,850 ใช่? 931 00:43:30,850 --> 00:43:31,790 >> ผู้ชม: ขออภัย 932 00:43:31,790 --> 00:43:35,550 คุณสามารถมีชั้นเรียนและ ID? 933 00:43:35,550 --> 00:43:38,030 >> HANNAH: ใช่คุณสามารถ 934 00:43:38,030 --> 00:43:40,420 สิ่งที่สามารถมีทั้งการเรียนและ ID 935 00:43:40,420 --> 00:43:44,670 และผมขอแนะนำ การทดสอบเหล่านี้ด้วยตัวคุณเอง 936 00:43:44,670 --> 00:43:50,480 CSS คุณจะได้เรียนรู้ที่ดีที่สุดเพียงแค่การทำ บางสิ่งบางอย่างหน้าเว็บที่ง่ายมาก 937 00:43:50,480 --> 00:43:53,440 การวาดภาพขึ้นบาง CSS และเพียงแค่ เห็นว่าพวกเขามีปฏิสัมพันธ์ 938 00:43:53,440 --> 00:43:56,970 และคุณจะได้รับสิ่งที่ดีมาก ความรู้สึกที่ใช้งานง่ายสำหรับวิธีการทำงาน 939 00:43:56,970 --> 00:43:58,810 >> ตกลงทุกคนที่ดีกับ CSS? 940 00:43:58,810 --> 00:44:01,280 คุณกำลังจะทำ เว็บไซต์ที่สวยงามด้วย CSS ในขณะนี้ 941 00:44:01,280 --> 00:44:05,460 ตกลงปฏิบัติที่ดีที่สุดเพียง สิ่งที่จะต้องเก็บไว้ในใจสิ่งที่ 942 00:44:05,460 --> 00:44:09,810 that-- นี้คือเหตุผลที่เราท่าเรือ คุณสำหรับนักออกแบบและ whatnot 943 00:44:09,810 --> 00:44:11,820 ดังนั้นปิดแท็กของคุณ 944 00:44:11,820 --> 00:44:14,840 ดังนั้นถ้าคุณมีร่างกายที่เปิด ควรจะมีร่างกายใกล้ 945 00:44:14,840 --> 00:44:18,180 หากคุณมีวรรคเปิด ควรจะมีวรรคใกล้ 946 00:44:18,180 --> 00:44:19,555 ตรวจสอบเพื่อดูตรวจสอบหน้าเว็บของคุณ 947 00:44:19,555 --> 00:44:23,330 พวกคุณควรจะคุ้นเคยมาก กับเรื่องนี้จาก P-ตั้งเจ็ด 948 00:44:23,330 --> 00:44:26,350 กับ CS 50 การเงิน กับตัวตรวจสอบ W3 949 00:44:26,350 --> 00:44:28,340 และในขณะที่ผมกล่าวก่อน หนึ่งในกรอบความคิดที่ยิ่งใหญ่ของเรา 950 00:44:28,340 --> 00:44:33,780 จะแยกสไตล์ของคุณด้วย CSS จากมาร์กอัปของคุณซึ่งเป็น HTML 951 00:44:33,780 --> 00:44:36,900 และแล้วแน่นอนเรามี นี้ XKCD ที่ดีลงที่นี่ 952 00:44:36,900 --> 00:44:38,280 ยายการ์ตูนโล่งอก! 953 00:44:38,280 --> 00:44:41,340 >> ตกลง TCP / IP 954 00:44:41,340 --> 00:44:44,650 ระหว่างเหล่านี้และ HTTP, โดยทั่วไปพวกเขากำลังโปรโตคอลทั้งสอง 955 00:44:44,650 --> 00:44:46,810 ดังนั้นคุณก็สามารถคิด พวกเขาเป็นชุดของกฎ 956 00:44:46,810 --> 00:44:50,110 ที่ควบคุมว่าสิ่งที่ ย้ายผ่านทางอินเทอร์เน็ต 957 00:44:50,110 --> 00:44:53,410 ดังนั้นการควบคุมการส่ง โปรโตคอลหรือโปรโตคอลอินเทอร์เน็ต 958 00:44:53,410 --> 00:44:57,280 เป็นเพียงวิธีการเพื่อให้แน่ใจว่า ที่ได้รับข้อมูลที่มันจะ 959 00:44:57,280 --> 00:45:00,030 และที่เราทราบว่า เรากำลังข้อมูลที่เคยหายไป 960 00:45:00,030 --> 00:45:03,520 ดังนั้นถ้าพวกคุณคิดว่ากลับไปบรรยาย สองสามสัปดาห์ที่ผ่านมากับเดวิด 961 00:45:03,520 --> 00:45:06,980 ที่เรามีสี่ซองจดหมายที่พวกเขา ถูกเลขทั้งหมดเช่นหนึ่งในสี่ 962 00:45:06,980 --> 00:45:11,300 สองในสี่สามสี่สี่ สี่นี้เป็นเพียงชุดของกฎ 963 00:45:11,300 --> 00:45:13,830 เรากล่าวว่าตกลงเมื่อใดก็ตามที่เรา ส่งมากกว่าหนึ่งแพ็คเก็ต 964 00:45:13,830 --> 00:45:16,610 เราจะไปบ้านเลขที่ กับสิ่งที่จำนวนเป็น 965 00:45:16,610 --> 00:45:19,040 และวิธีการหลายที่รวม ผู้ใช้ควรจะได้รับ 966 00:45:19,040 --> 00:45:22,540 >> และนี่เป็นเพียงการบอกใครก็ตาม ได้รับข้อมูลว่าพวกเขา 967 00:45:22,540 --> 00:45:26,120 มีอากาศหรือถ้าทุกอย่าง บางสิ่งบางอย่างได้หายไปพร้อมกัน 968 00:45:26,120 --> 00:45:28,840 และพวกเขาต้องการที่จะขออีกครั้ง 969 00:45:28,840 --> 00:45:31,140 นี้เป็นจริงเพียงแค่ชุดของกฎ 970 00:45:31,140 --> 00:45:33,650 นั่นเป็นวิธีที่คุณสามารถคิดของมัน OK? 971 00:45:33,650 --> 00:45:37,700 และยังจะระบุพอร์ตซึ่ง พวกคุณ can-- ฉันรู้ว่าในระหว่างการบรรยาย 972 00:45:37,700 --> 00:45:39,170 พวกเขามีรายชื่อทั้งหมดของพอร์ต 973 00:45:39,170 --> 00:45:41,630 แต่เราไม่ได้มีพวกเขาที่นี่ในขณะนี้ 974 00:45:41,630 --> 00:45:45,290 >> ทาง hypertext transfer protocol ดังนั้น เป็นอีกครั้งก็เป็นโปรโตคอลอื่น 975 00:45:45,290 --> 00:45:48,630 ดังนั้นจึงเป็นชุดของกฎอื่น ที่ควบคุมในกรณีนี้ 976 00:45:48,630 --> 00:45:51,130 วิธีไฮเปอร์เท็กซ์จะถูกโอน 977 00:45:51,130 --> 00:45:54,340 ดังนั้นมันก็ช่วยให้เบราว์เซอร์ เพื่อพูดคุยกับเว็บเซิร์ฟเวอร์ 978 00:45:54,340 --> 00:45:56,910 และในขณะที่เราบอกว่าที่นี่มันเป็น เช่นการจับมือกันของมนุษย์ 979 00:45:56,910 --> 00:46:00,480 มันเป็นเพียงวิธีการที่จะควบคุม วิธีเว็บเซิร์ฟเวอร์เป็น 980 00:46:00,480 --> 00:46:02,690 จะมีปฏิสัมพันธ์กับเบราว์เซอร์ของคุณ 981 00:46:02,690 --> 00:46:05,660 และเรามีเพียงไม่กี่ตัวอย่าง 982 00:46:05,660 --> 00:46:09,100 เรามีการร้องขอบางอย่างที่นี่ ที่ได้รับคือวิธีการ 983 00:46:09,100 --> 00:46:13,760 เรามี HTTP 1.1 ซึ่งเป็น รุ่นโปรโตคอลสำหรับเรา 984 00:46:13,760 --> 00:46:17,230 แล้วโฮสต์ซึ่งเป็นสิ่งที่ เรากำลังจริงพยายามที่จะเข้าถึง 985 00:46:17,230 --> 00:46:21,800 แล้วที่คุณเห็นที่นี่เรา ได้รับการตอบสนองกับ 200 นี้บาง 986 00:46:21,800 --> 00:46:25,032 ตกลงเป็นรหัสของเราตอบสนอง HTTP 987 00:46:25,032 --> 00:46:27,240 เรามีรายการใหญ่ผมจะ ที่จะดึงขึ้นในหนึ่งวินาที 988 00:46:27,240 --> 00:46:29,430 ที่พวกคุณควรจะคุ้นเคยกับ 989 00:46:29,430 --> 00:46:35,750 และเรามีชนิดเนื้อหานี้ text / html, ซึ่งก็บอกว่าสิ่งที่ประเภทของข้อมูล 990 00:46:35,750 --> 00:46:39,990 ที่เราได้รับจากเซิร์ฟเวอร์, OK? 991 00:46:39,990 --> 00:46:44,230 โฮสต์นี้และประเภทเนื้อหานี้ เป็นส่วนหนึ่งของส่วนหัว HTTP 992 00:46:44,230 --> 00:46:49,610 คุณสามารถมีน้อยหรือน้อยเท่า ที่จำเป็นสำหรับบริบทของสิ่งที่ 993 00:46:49,610 --> 00:46:50,580 คุณจัดการกับ 994 00:46:50,580 --> 00:46:53,371 บางครั้งคุณจะมีจำนวนมาก ข้อมูลที่มาจากเซิร์ฟเวอร์ของคุณ 995 00:46:53,371 --> 00:46:56,040 บางทีพวกเขากำลังขอมาก ข้อมูลจากผู้ใช้ 996 00:46:56,040 --> 00:46:57,600 มันแตกต่างกันไปขึ้นอยู่กับบริบท 997 00:46:57,600 --> 00:47:01,144 ถ้าคุณดูที่ CS 50 การศึกษา มีมากขึ้นว่า 998 00:47:01,144 --> 00:47:03,060 แต่เรามีจำนวนมากที่จะได้รับ ผ่านดังนั้นฉันจะ 999 00:47:03,060 --> 00:47:05,760 จะไปขวาไปข้างหน้าถ้า ที่ตกลงกับพวกคุณ? 1000 00:47:05,760 --> 00:47:07,960 เย็น 1001 00:47:07,960 --> 00:47:08,460 ยึดมั่นใน 1002 00:47:08,460 --> 00:47:11,182 แน่นอนผมได้ว่า รายชื่อทั้งหมดเเล้ฮะ! 1003 00:47:11,182 --> 00:47:13,140 ผมไม่ทราบว่าทำไมถึงเป็น ทุกอย่างมากกว่าที่นี่ 1004 00:47:13,140 --> 00:47:15,660 ฉันคิดว่าฉันอย่างแท้จริงย้าย ในขณะที่ผมเป็น sitting-- 1005 00:47:15,660 --> 00:47:16,540 >> Davin: คุณต้องการที่จะสอนได้หรือไม่ 1006 00:47:16,540 --> 00:47:17,420 หรือคุณต้องการให้ฉันไปสอนมันได้หรือไม่ 1007 00:47:17,420 --> 00:47:20,010 >> ผู้ชม: ผมคิดว่าเราจะทำได้ เพียงแค่แสดงให้พวกเขาจะเริ่มต้นด้วย 1008 00:47:20,010 --> 00:47:22,210 ฉันหมายความว่าคุณสามารถไปยัง พวกเขาต่อไป แต่ฉัน 1009 00:47:22,210 --> 00:47:26,030 คิดว่ามันทำให้ความรู้สึกมากขึ้นตั้งแต่ฉัน เป็นเพียงการพูดคุยเกี่ยวกับสถานะ HTTP 1010 00:47:26,030 --> 00:47:28,200 ดังนั้นนี่คือรายชื่อทั้งหมด 1011 00:47:28,200 --> 00:47:31,730 ผมคิดว่าสิ่งที่จะเกิดขึ้นคือ Davin จะไปเป็นพวกเขาในภายหลัง 1012 00:47:31,730 --> 00:47:35,330 แต่มีรายชื่อทั้งหมด ตัวอย่างของรสชาติที่จะมา 1013 00:47:35,330 --> 00:47:41,640 ตกลงเรากำลังจะ blow-- นี้เป็นไป จะเป็นหลักสูตรความผิดพลาด PHP ที่ไม่เหมือนใคร 1014 00:47:41,640 --> 00:47:44,874 >> ดังนั้น PHP, preprocessor ​​ไฮเปอร์เท็กซ์ มันเป็น backronym recursive, 1015 00:47:44,874 --> 00:47:46,540 ซึ่งหมายความว่ามันเป็นชื่ออย่างอื่น 1016 00:47:46,540 --> 00:47:49,050 และพวกเขาก็เป็นเหมือนนี้ ไม่ทำให้รู้สึกจริงๆ 1017 00:47:49,050 --> 00:47:52,210 ดังนั้นพวกเขาเพียงแค่ชื่อพูดไป และมันก็เป็นคำย่อ, 1018 00:47:52,210 --> 00:47:54,840 ดังนั้นพวกเขาก็ทำให้มัน PHP preprocessor ​​Hypertext ซึ่ง 1019 00:47:54,840 --> 00:47:55,980 เพียงแค่ทำให้รู้สึกไม่ 1020 00:47:55,980 --> 00:47:57,714 เรื่องสนุก 1021 00:47:57,714 --> 00:47:58,880 มันเป็นภาษาโปรแกรม 1022 00:47:58,880 --> 00:48:02,360 ดังนั้นเท่าที่ผมเน้นว่า HTML คือไม่ใช่ภาษาการเขียนโปรแกรม 1023 00:48:02,360 --> 00:48:05,350 มันเป็นภาษามาร์กอัป, PHP เป็นภาษาโปรแกรม 1024 00:48:05,350 --> 00:48:07,422 วิธีที่คุณรู้ว่านี่เป็น เนื่องจากมีตรรกะ 1025 00:48:07,422 --> 00:48:08,380 มีเงื่อนไขอยู่ 1026 00:48:08,380 --> 00:48:12,750 เรามีตัวแปรในขณะที่เรา ไม่มีสิ่งเหล่านั้นในรูปแบบ HTML 1027 00:48:12,750 --> 00:48:16,960 >> สิทธิทั้งหมดแล้วเรามีเล็ก ๆ น้อย ๆ นี้ บิตที่นี่ที่ชอบรสชาติของ PHP 1028 00:48:16,960 --> 00:48:20,510 ดังนั้นพื้นฐานชื่อตัวแปร เริ่มต้นด้วยเครื่องหมายดอลลาร์ 1029 00:48:20,510 --> 00:48:21,500 ผู้คนจำนวนมากเช่นนั้น 1030 00:48:21,500 --> 00:48:22,371 แจ้งเตือนของเงินให้กับเรา 1031 00:48:22,371 --> 00:48:22,995 มันยิ่งใหญ่ทั้งหมด 1032 00:48:22,995 --> 00:48:25,280 เราทุกคนต้องการ PHP 1033 00:48:25,280 --> 00:48:28,020 ดังนั้นเราจึงไม่ได้ระบุ ประเภทของตัวแปรอีกต่อไป 1034 00:48:28,020 --> 00:48:29,995 มันจะถูกกำหนดในเวลาทำงาน 1035 00:48:29,995 --> 00:48:32,710 1036 00:48:32,710 --> 00:48:35,890 ล่ามจะเป็นเหมือน โอ้เราก็จะวิ่งผ่าน, 1037 00:48:35,890 --> 00:48:39,565 และเป็นไปตามบริบท เราจะเห็นสิ่งที่ประเภทของประเภท 1038 00:48:39,565 --> 00:48:41,560 ตัวแปรเหล่านี้จะต้องมี 1039 00:48:41,560 --> 00:48:42,815 ไม่มีหน้าที่หลักคือ 1040 00:48:42,815 --> 00:48:43,690 สิ่งที่จะวิ่ง 1041 00:48:43,690 --> 00:48:47,851 พวกคุณกับการนำเข้าของคุณในของคุณ ล่าสุด P-ตั้งคุณจะแจ้งให้ทราบนี้ 1042 00:48:47,851 --> 00:48:49,350 มีไม่ได้จริงๆฟังก์ชั่นหลัก 1043 00:48:49,350 --> 00:48:52,070 คุณเพียงแค่สิ่งที่เขียน คุณต้องการที่จะเกิดขึ้น 1044 00:48:52,070 --> 00:48:53,280 และมันก็เกิดขึ้นชนิดของ 1045 00:48:53,280 --> 00:48:56,760 นั่นคือ PHP สำหรับคุณ 1046 00:48:56,760 --> 00:48:59,180 >> อาร์เรย์จะคล้ายกันมาก 1047 00:48:59,180 --> 00:49:01,270 เรายังคงมีวงเล็บนี้ 1048 00:49:01,270 --> 00:49:05,940 ที่นี่เรามีตัวแปรบาง เรียกว่า ARR และก็เท่ากับ 1049 00:49:05,940 --> 00:49:08,540 to-- เรามีของเราตามปกติ สัญกรณ์วงเล็บ 1050 00:49:08,540 --> 00:49:10,630 และเรามีค่าบางอย่างที่สำคัญ 1051 00:49:10,630 --> 00:49:14,630 และความแตกต่างใหญ่ ระหว่าง C และ PHP อาร์เรย์ 1052 00:49:14,630 --> 00:49:19,330 คือการที่เราสามารถมี associate-- นี้ เราสามารถเชื่อมโยงค่ากับคีย์ 1053 00:49:19,330 --> 00:49:22,440 ดังนั้นแทนที่จะเพียงแค่มี อาร์เรย์ที่มีการจัดทำดัชนี 1054 00:49:22,440 --> 00:49:26,630 จากจำนวนหรือตำแหน่ง ขององค์ประกอบในอาร์เรย์ที่ 1055 00:49:26,630 --> 00:49:29,060 เราสามารถเชื่อมโยงกับที่สำคัญ 1056 00:49:29,060 --> 00:49:36,700 ที่เราสามารถพูดได้ว่าตกลงฉันต้องการสิ่งที่ ค่าที่เกี่ยวข้องกับผลไม้ 1057 00:49:36,700 --> 00:49:39,280 และบางทีเรามีผลไม้ไปกล้วย 1058 00:49:39,280 --> 00:49:41,760 ดังนั้นจึงต้องการกลับกล้วยกับเรา 1059 00:49:41,760 --> 00:49:44,100 >> แต่โดยทั่วไปมากที่สุด สิ่งที่ทรงพลังเกี่ยวกับเรื่องนี้ 1060 00:49:44,100 --> 00:49:47,960 คือว่าถ้าพวกคุณจำได้ การสาธิตจากการบรรยายที่เราโดยทั่วไป 1061 00:49:47,960 --> 00:49:53,050 rewrote สะกดใน PHP และมัน ค้นหา was-- ก็ชอบเพียง 1062 00:49:53,050 --> 00:49:55,007 ไม่สำคัญนี้อยู่? 1063 00:49:55,007 --> 00:49:56,590 ที่จริงชนิดของพลังของมัน 1064 00:49:56,590 --> 00:49:58,560 คุณไม่จำเป็นต้องย้ำ ผ่านแถวของคุณ 1065 00:49:58,560 --> 00:50:00,311 คุณไม่จำเป็นต้องรู้ สิ่งที่พื้นที่มันอยู่ใน 1066 00:50:00,311 --> 00:50:01,976 มันอาจจะเป็นที่สิ้นสุดหรือจุดเริ่มต้น 1067 00:50:01,976 --> 00:50:04,790 ตราบใดที่คุณรู้ว่าสำคัญ ที่เกี่ยวข้องกับค่า 1068 00:50:04,790 --> 00:50:09,740 PHP ก็สามารถคายค่าที่ ขวากลับออกไปที่คุณ OK? 1069 00:50:09,740 --> 00:50:12,960 >> และแล้วเราก็เป็นเพียงแค่ มีเพียงเพราะเรา 1070 00:50:12,960 --> 00:50:16,750 สามารถมีคู่ค่าที่สำคัญ ไม่ได้หมายความว่าคุณจะต้อง 1071 00:50:16,750 --> 00:50:19,180 คุณยังสามารถสร้าง อาร์เรย์ปกติเช่นที่นี่ 1072 00:50:19,180 --> 00:50:21,540 ที่ด้านล่างที่มัน เพียงแค่หนึ่งสองสามสี่ 1073 00:50:21,540 --> 00:50:22,510 เหล่านี้เป็นค่านิยมของเรา 1074 00:50:22,510 --> 00:50:25,320 และในความเป็นจริงของพวกเขาเป็นคีย์ดัชนี 1075 00:50:25,320 --> 00:50:26,830 ดังนั้นที่สำคัญสำหรับใครที่จะเป็นศูนย์ 1076 00:50:26,830 --> 00:50:28,610 ที่สำคัญสำหรับทั้งสองจะเป็นหนึ่ง 1077 00:50:28,610 --> 00:50:31,910 ดังนั้นในวันและอื่น ๆ เว้นแต่ คุณได้กำหนดคีย์ 1078 00:50:31,910 --> 00:50:34,630 คุณอาจจะคิดว่า เป็นเพียงค่าดัชนีของพวกเขา 1079 00:50:34,630 --> 00:50:37,290 ไม่ว่าทำให้ความรู้สึกที่ทุกคนหรือไม่ 1080 00:50:37,290 --> 00:50:38,070 ไม่มีคำถาม? 1081 00:50:38,070 --> 00:50:38,930 น่ากลัว 1082 00:50:38,930 --> 00:50:44,420 >> ตกลง foreach เป็นวิธีที่จะ ย้ำผ่านอาร์เรย์ของคุณ 1083 00:50:44,420 --> 00:50:47,490 ดังนั้นเราจึงมีบางสิ่งบางอย่างที่นี่ เพียงแค่โครงสร้างทั่วไป 1084 00:50:47,490 --> 00:50:51,020 foreach ดังนั้นชื่อของ อาร์เรย์ของเราเป็นสิ่งที่ 1085 00:50:51,020 --> 00:50:53,930 คุณต้องการที่จะโทรห​​ากัน องค์ประกอบในอาร์เรย์ของคุณ 1086 00:50:53,930 --> 00:50:57,270 และเราสามารถทำอะไรกับ ว่าองค์ประกอบหรือมีมูลค่าที่ 1087 00:50:57,270 --> 00:50:58,680 ดังนั้นเราจึงมีตัวอย่างที่นี่ 1088 00:50:58,680 --> 00:51:05,770 เรามีการเชื่อมโยง อาร์เรย์กับทั้งสองรายการ 1089 00:51:05,770 --> 00:51:10,080 กับบาร์ที่เกี่ยวข้องกับ foo และ qux ที่เกี่ยวข้องกับ baz 1090 00:51:10,080 --> 00:51:12,180 ดังนั้นคีย์ foo และ baz 1091 00:51:12,180 --> 00:51:13,650 ค่านิยมมีบาร์และ qux 1092 00:51:13,650 --> 00:51:18,560 foreach ดังนั้นเรามีอาร์เรย์ของเรา ที่นี่เป็นคู่ค่าคีย์ 1093 00:51:18,560 --> 00:51:21,560 นี้ช่วยให้เราสามารถเข้าถึง ทั้งที่สำคัญและความคุ้มค่า 1094 00:51:21,560 --> 00:51:23,680 บางทีคุณอาจจะต้องการเพียงแค่ ค่าซึ่งในกรณีนี้ 1095 00:51:23,680 --> 00:51:27,640 คุณก็สามารถทำเช่นเดียวกับปุ่มลูกศร เป็นค่า $ และจากนั้นคุณ 1096 00:51:27,640 --> 00:51:30,640 เป็นเพียงการเข้าถึงค่า ในขณะที่คุณย้ำผ่าน 1097 00:51:30,640 --> 00:51:32,600 แต่บางทีสำหรับบางคน เหตุผลที่คุณต้องการที่สำคัญ 1098 00:51:32,600 --> 00:51:35,460 ซึ่งเป็นเหตุผลที่ผมเลือก ตัวอย่างนี้แทน 1099 00:51:35,460 --> 00:51:40,240 จริงเพื่อให้คุณสามารถจัดการ คีย์และค่าในกรณีนี้ 1100 00:51:40,240 --> 00:51:41,070 OK? 1101 00:51:41,070 --> 00:51:41,905 คำถาม? 1102 00:51:41,905 --> 00:51:44,279 >> ผู้ชม: ถ้าคุณต้องการที่จะ เพียงแค่จัดการที่สำคัญจะ 1103 00:51:44,279 --> 00:51:45,910 ที่คุณต้องทำ foreach-- 1104 00:51:45,910 --> 00:51:47,360 >> ALISON: ขวา 1105 00:51:47,360 --> 00:51:50,560 ดังนั้นหากคุณต้องการที่จะ จัดการเพียงที่สำคัญ 1106 00:51:50,560 --> 00:51:53,680 คุณยังจะต้องนี้ ไวยากรณ์เพราะถ้าคุณเพียง 1107 00:51:53,680 --> 00:51:56,930 มี ARR เป็นบางสิ่งบางอย่าง เป็นสิ่งหนึ่งที่มันเป็น 1108 00:51:56,930 --> 00:52:00,070 จะถือว่าคุณต้องการ มูลค่าไม่สำคัญ 1109 00:52:00,070 --> 00:52:06,780 ดังนั้นถ้าคุณเคยเพียงแค่ต้องเช่นเดียวกับ ARR เป็นอาจจะเป็นเหมือนองค์ประกอบ $ 1110 00:52:06,780 --> 00:52:11,670 มันจะคิดว่าคุณกำลังถาม เพียงค่าในแต่ละจุด 1111 00:52:11,670 --> 00:52:13,879 ถ้าคุณต้องการอย่างชัดเจน ทำอะไรกับคีย์ 1112 00:52:13,879 --> 00:52:16,170 แม้ว่าคุณจะไม่ได้ไป ทำอะไรกับค่า 1113 00:52:16,170 --> 00:52:18,430 คุณต้องโครงสร้างนี้ ที่เรามีที่นี่ 1114 00:52:18,430 --> 00:52:22,330 ที่คุณถามอย่างชัดเจน ทั้งที่สำคัญและความคุ้มค่า 1115 00:52:22,330 --> 00:52:24,170 คำถามที่ดี 1116 00:52:24,170 --> 00:52:25,940 อะไรอีกหรือไม่ 1117 00:52:25,940 --> 00:52:27,490 เย็น 1118 00:52:27,490 --> 00:52:29,911 >> สงวน, PHP และ HTML 1119 00:52:29,911 --> 00:52:31,410 โอ้เราไม่กลับไปที่ P-ตั้งเจ็ดอีกครั้ง 1120 00:52:31,410 --> 00:52:35,380 ดังนั้นควรมีลักษณะเล็ก ๆ น้อย ๆ ที่คุ้นเคย 1121 00:52:35,380 --> 00:52:41,760 ดังนั้นนี่คือรูปแบบ HTML บางอย่างง่าย ที่มีชื่อเข้าของบางสวัสดี 1122 00:52:41,760 --> 00:52:43,820 และเราเห็นว่าเรามีวิธีการของเราแถม 1123 00:52:43,820 --> 00:52:47,430 และถ้าเราจำได้จาก P-ชุดของเรา เมื่อฟอร์มนี้ถูกส่ง 1124 00:52:47,430 --> 00:52:58,130 มันจะส่งอาเรย์ที่เรียกว่า $ _GET ที่มี ทั้งหมดของปัจจัยการผลิตเหล่านี้หรือตัวแปรจาก 1125 00:52:58,130 --> 00:53:00,490 รูปแบบที่ควรจะเป็น จัดการใน PHP ของเรา 1126 00:53:00,490 --> 00:53:03,320 ดังนั้นในกรณีนี้ผู้ใช้ จะใส่ในชื่อของพวกเขา 1127 00:53:03,320 --> 00:53:04,370 พวกเขาส่ง 1128 00:53:04,370 --> 00:53:07,810 และเราเห็นว่าเราได้รับอาเรย์บางอย่างที่นี่ 1129 00:53:07,810 --> 00:53:09,080 เรามีอาร์เรย์แถมของเรา 1130 00:53:09,080 --> 00:53:11,510 และเราจะเข้าถึงชื่อ 1131 00:53:11,510 --> 00:53:15,070 >> ดังนั้นที่บอกว่าตกลงให้ฉัน ค่าที่เชื่อมโยงกับชื่อ 1132 00:53:15,070 --> 00:53:16,550 ชื่อเป็นกุญแจสำคัญที่นี่ 1133 00:53:16,550 --> 00:53:21,400 และที่แผนที่โดยตรงกับสิ่งที่ เรากล่าวว่าใส่ชื่อของเราคือ 1134 00:53:21,400 --> 00:53:28,960 ดังนั้นนี่คือการให้คุณกุญแจสำคัญในสิ่งที่ เป็นไปได้ในอาร์เรย์ของคุณที่นี่ 1135 00:53:28,960 --> 00:53:31,220 ไม่ว่าทำให้ความรู้สึกที่ทุกคนหรือไม่ 1136 00:53:31,220 --> 00:53:32,070 ใช่? 1137 00:53:32,070 --> 00:53:36,240 >> ผู้ชม: ไม่ชื่อใน GET ดู กับสายสีม่วงใน [ไม่ได้ยิน] 1138 00:53:36,240 --> 00:53:37,740 >> ALISON: มันหมายถึงที่นี่ 1139 00:53:37,740 --> 00:53:43,840 ดังนั้นฟิลด์นี้ที่นี่ มันหมายถึงชื่อนี้ที่นี่ 1140 00:53:43,840 --> 00:53:47,800 ดังนั้นนี้จะได้รับการตั้งชื่อ เช่นหมายเลขโทรศัพท์หรืออะไรก็ตาม 1141 00:53:47,800 --> 00:53:51,790 ชื่อนี้จริงกล่าวว่าสิ่งที่ คุณกำลังเรียกข้อมูลนี้? 1142 00:53:51,790 --> 00:53:53,600 วิธีที่คุณจะไป อ้างถึงข้อมูลนี้? 1143 00:53:53,600 --> 00:53:57,670 และชื่อนี้เป็นจริงชอบเราไม่ บอกว่าข้อมูลนี้จะถูกเรียกชื่อ 1144 00:53:57,670 --> 00:53:59,224 นั่นเป็นวิธีที่เราจะเข้าถึงได้ 1145 00:53:59,224 --> 00:54:02,070 >> ผู้ชม: ดังนั้นจึงต้องการ ใส่ชื่อเท่ากับบ๊อบ and-- 1146 00:54:02,070 --> 00:54:04,380 >> ALISON: ใช่แล้วคุณ จะได้รับบ๊อบลงไปที่นั่น 1147 00:54:04,380 --> 00:54:06,090 อย่างแน่นอน 1148 00:54:06,090 --> 00:54:07,800 ทุกคนเย็น? 1149 00:54:07,800 --> 00:54:10,990 สิทธิทั้งหมดเพื่อให้ได้รับเมื่อเทียบกับ POST, เหล่านี้มีสองวิธีหลัก 1150 00:54:10,990 --> 00:54:14,880 ที่เราส่งผ่านข้อมูลในคำขอ HTTP 1151 00:54:14,880 --> 00:54:17,370 พวกคุณควรจะได้เห็น ทั้งสองคนนี้หวังว่า 1152 00:54:17,370 --> 00:54:20,940 ดังนั้นด้วยแถมข้อมูล จะถูกส่งผ่าน URL 1153 00:54:20,940 --> 00:54:23,490 ดังนั้นถ้าคุณเคยทำ Google ค้นหา, YouTube, คุณจะ 1154 00:54:23,490 --> 00:54:25,130 อาจจะสังเกตเห็นเครื่องหมายคำถามบางอย่าง 1155 00:54:25,130 --> 00:54:28,230 และแล้วทุกคำ ที่คุณเพียงแค่ใส่ในนั้น 1156 00:54:28,230 --> 00:54:31,410 และโพสต์ผ่านข้อมูล ในเนื้อหาของข้อความ HTTP 1157 00:54:31,410 --> 00:54:36,922 ดังนั้นไม่เหมือน GET, คุณก็ต้องพิจารณา ว่าข้อมูลที่ถูกซ่อนจากผู้ใช้ 1158 00:54:36,922 --> 00:54:38,630 แต่สิ่งที่เป็นจริง สิ่งสำคัญที่จะเข้าใจ 1159 00:54:38,630 --> 00:54:44,040 ว่าขณะนี้ยังคงเป็น เช่นเดียวกับที่ไม่ปลอดภัยเช่น GET 1160 00:54:44,040 --> 00:54:48,780 การเปรียบเทียบผมชอบที่จะใช้คือถ้า คุณมีหมายเลขบัญชีธนาคารของคุณ 1161 00:54:48,780 --> 00:54:52,795 และคุณเขียนมันที่ด้านนอกของ ซองจดหมายที่ไม่ปลอดภัยสวย 1162 00:54:52,795 --> 00:54:55,920 ถ้าคุณจะเขียนมันในชิ้นส่วนของ กระดาษและใส่ไว้ในซองจดหมาย 1163 00:54:55,920 --> 00:54:58,850 ก็ยังคงไม่ปลอดภัยจริงๆเพราะ ทั้งหมดที่คุณต้องทำคือการเปิดขึ้นมา 1164 00:54:58,850 --> 00:55:03,480 และดูที่เนื้อหาที่เกิดขึ้นจริง ของข้อความที่จะเห็นว่า 1165 00:55:03,480 --> 00:55:08,310 ดังนั้นนี่คือ "ซ่อน" และคนชอบ คิดว่ามันเป็นที่เชื่อถือได้ แต่มันไม่จริง 1166 00:55:08,310 --> 00:55:11,000 และผมมั่นใจว่าจะ Davin ได้รับเป็นที่มากขึ้นอาจจะ 1167 00:55:11,000 --> 00:55:12,850 แต่มันเป็นสิ่งที่สำคัญ ความแตกต่างที่จะทำให้ 1168 00:55:12,850 --> 00:55:15,820 และสิ่งที่ดีจริงๆที่จะเข้าใจ 1169 00:55:15,820 --> 00:55:19,220 >> ตกลง, SQL, โครงสร้างแบบสอบถามภาษา 1170 00:55:19,220 --> 00:55:22,220 ทุกสิ่งที่ เราได้เห็นเมื่อเร็ว ๆ นี้! 1171 00:55:22,220 --> 00:55:25,400 ดังนั้นจึงเป็นพื้นเพียงแค่การออกแบบ, อย่างเห็นได้ชัดสำหรับการจัดการข้อมูล 1172 00:55:25,400 --> 00:55:30,560 พวกคุณมีจำนวนมากประสบการณ์ที่มี นี้ในตารางของคุณกับ PHP MyAdmin 1173 00:55:30,560 --> 00:55:34,100 และมีสี่คำสั่งทั่วไป ที่เราต้องการพวกคุณจะรู้ว่า 1174 00:55:34,100 --> 00:55:37,304 ดังนั้นจึงมีการปรับปรุงแทรก เลือกและลบ 1175 00:55:37,304 --> 00:55:38,970 เพื่อให้แน่ใจว่าคุณรู้ว่าผู้ดีจริงๆ 1176 00:55:38,970 --> 00:55:40,960 เรากำลังจะไป ผ่านพวกเขาอย่างรวดเร็วจริงๆ 1177 00:55:40,960 --> 00:55:44,340 >> ดังนั้นการปรับปรุงจริงๆเป็นสิ่งที่ คุณอาจคิดว่ามันไม่ 1178 00:55:44,340 --> 00:55:46,740 มันเป็นเพียงแค่การปรับปรุงข้อมูลในฐานข้อมูลของคุณ 1179 00:55:46,740 --> 00:55:48,750 ดังนั้นเราจึงมีตัวอย่างบางส่วนที่นี่ 1180 00:55:48,750 --> 00:55:53,310 นี้เป็นทั่วไป โครงสร้างของแบบสอบถามการปรับปรุง 1181 00:55:53,310 --> 00:55:56,150 ดังนั้นเราจึงปรับปรุงตาราง ที่เรากำลังพูดถึง 1182 00:55:56,150 --> 00:56:00,520 และเราต้องการที่จะตั้งค่าบางอย่าง ค่านิยมบางคอลัมน์ 1183 00:56:00,520 --> 00:56:02,600 เท่ากับค่าเฉพาะ 1184 00:56:02,600 --> 00:56:07,500 ดังนั้นเพียงแค่นี้การปรับปรุงตารางการเปลี่ยนแปลง ค่าในแถวทั้งหมดในกรณีนี้ 1185 00:56:07,500 --> 00:56:13,690 ดังนั้นในการอย่างใดอย่างหนึ่งลงที่นี่ที่เกิดขึ้นจริง ตัวอย่างเช่นเรามีเสียใจ insert-- 1186 00:56:13,690 --> 00:56:17,630 ภาพนิ่งที่สูง โดยไม่ต้องให้ผมทราบว่ามัน 1187 00:56:17,630 --> 00:56:22,230 >> ดังนั้นตารางการอัปเดตชุดนี้ col1 เท่ากับ เพื่อ VAL1 ที่บ้านเท่ากับ "คิวเรีย". 1188 00:56:22,230 --> 00:56:25,300 สิ่งนี้จะเป็น มันเปลี่ยนแปลงเท่านั้นก็เท่านั้น 1189 00:56:25,300 --> 00:56:28,130 ปรับปรุงค่าเหล่านี้ในสถานที่เฉพาะ 1190 00:56:28,130 --> 00:56:32,300 ดังนั้นในครั้งแรกนี้จะมีการเปลี่ยนแปลงเหล่านี้ ค่าสำหรับทุกอย่างในตารางของคุณ 1191 00:56:32,300 --> 00:56:32,860 OK? 1192 00:56:32,860 --> 00:56:35,820 มันจะเปลี่ยน คอลัมน์ทุกรายการเดียว 1193 00:56:35,820 --> 00:56:37,020 สำหรับทุกแถวเดียว 1194 00:56:37,020 --> 00:56:40,840 แต่ที่นี้คุณจะทำได้ คิดว่ามันเป็นรอบคัดเลือก 1195 00:56:40,840 --> 00:56:44,020 จึงเป็นเพียงจะเปลี่ยน ในสถานที่เฉพาะเจาะจงมาก 1196 00:56:44,020 --> 00:56:47,840 ดังนั้นใน P-ตั้งเจ็ดเมื่อคุณ อาจจะมีการปรับปรุงจำนวนเงินสด 1197 00:56:47,840 --> 00:56:53,050 ที่ผู้ใช้ของคุณมีคุณอาจมี บางที่ ID เท่ากับ ID เซสชั่นใช่มั้ย? 1198 00:56:53,050 --> 00:56:55,280 >> เพราะคุณไม่ต้องการที่จะ เปลี่ยนจำนวนของเงินสด 1199 00:56:55,280 --> 00:56:57,630 สำหรับทุกคนที่ ได้รับการใช้เว็บไซต์ของคุณ 1200 00:56:57,630 --> 00:57:00,480 คุณต้องการที่จะเปลี่ยนมันเป็นเวลาหนึ่ง เฉพาะบุคคลคนนั้นเป็น 1201 00:57:00,480 --> 00:57:02,410 ใครก็ตามที่ได้รับการใช้ในช่วงเวลานั้น 1202 00:57:02,410 --> 00:57:04,320 ใช่มั้ย? 1203 00:57:04,320 --> 00:57:07,510 OK เพื่อแทรกแทรก ค่าบางอย่างลงในตาราง 1204 00:57:07,510 --> 00:57:11,650 นี้เป็นเหมือนเมื่อคุณอยู่ การสร้างผู้ใช้ใหม่ 1205 00:57:11,650 --> 00:57:14,240 โครงสร้างทั่วไปที่นี่ เป็นสิ่งที่ใส่ลงในตาราง 1206 00:57:14,240 --> 00:57:15,680 เรากำลังพูดถึง 1207 00:57:15,680 --> 00:57:18,910 ค่าเป็นค่าที่ เราจริงต้องการแทรก 1208 00:57:18,910 --> 00:57:23,060 ตกลงดังนั้นที่เราเห็นที่นี่เรา ได้ใส่ลงในตาราง 1209 00:57:23,060 --> 00:57:27,790 นี้เป็นคอลัมน์ที่เฉพาะเจาะจงกับ ค่าติดต่อของพวกเขา 1210 00:57:27,790 --> 00:57:29,940 ดังนั้นนี่พูดแทรก แถวใหม่ที่มี 1211 00:57:29,940 --> 00:57:33,660 ค่า VAL1 และ val2 ภายใต้ เหล่านี้คอลัมน์ที่เฉพาะเจาะจง 1212 00:57:33,660 --> 00:57:39,240 >> ดังนั้นบางทีคุณเพียงต้องการที่จะเติม ออกครึ่งสิ่งที่อยู่ในแถวนี้ 1213 00:57:39,240 --> 00:57:41,150 นั่นคือสิ่งที่เป็นส่วนหนึ่งที่นี่ช่วยให้คุณทำ 1214 00:57:41,150 --> 00:57:43,280 ซึ่งช่วยให้คุณจริง ตรวจสอบซึ่งเป็นส่วนหนึ่ง 1215 00:57:43,280 --> 00:57:44,244 ใช่? 1216 00:57:44,244 --> 00:57:52,150 >> ผู้ชม: สามารถคุณเท่านั้น [ไม่ได้ยิน] เซลล์ในแถว [ไม่ได้ยิน]? 1217 00:57:52,150 --> 00:57:55,000 >> ALISON: ถ้าคุณเพียงกรอกข้อมูลลงใน บางส่วนของแถวของคุณ 1218 00:57:55,000 --> 00:57:57,480 ส่วนที่เหลือของเซลล์เหล่านั้นจะว่างเปล่าเพียง 1219 00:57:57,480 --> 00:58:02,730 1220 00:58:02,730 --> 00:58:05,660 ตราบใดที่คุณให้พวกเขา เป็นที่ว่างเปล่าก็ไม่เป็นปัญหา 1221 00:58:05,660 --> 00:58:09,570 ถ้าคุณพยายามที่จะเข้าถึงพวกเขาก็ จะกลับมาบางส่วนองค์ประกอบที่ว่างเปล่า 1222 00:58:09,570 --> 00:58:13,850 แต่มันเป็นสิ่งสำคัญที่จะรู้ว่า ที่ในตารางบางอย่าง 1223 00:58:13,850 --> 00:58:16,690 พวกเขาจะต้องได้รับอนุญาตให้เป็นโมฆะ 1224 00:58:16,690 --> 00:58:18,890 คุณอาจจะได้ทำงานเป็น ปัญหาในช่วงพีชุดของคุณ 1225 00:58:18,890 --> 00:58:21,320 เพราะเราไม่ได้ให้การใด ๆ ของค่าของคุณเป็นโมฆะ 1226 00:58:21,320 --> 00:58:26,110 แต่คุณสามารถระบุ ค่าตัวเลือกในตารางของคุณ 1227 00:58:26,110 --> 00:58:29,640 >> ตกลงเลือกดังนั้นนี่คือ เพียงแค่วิธีการรับ 1228 00:58:29,640 --> 00:58:33,790 ข้อมูลที่เฉพาะเจาะจงจากตารางที่ ระบุบางอย่างที่คุณต้องการ 1229 00:58:33,790 --> 00:58:37,990 ดาวเลือกดังนั้นจากตารางที่ เทือกเขาเท่ากับเพียงแค่สิ่งที่หมายความว่า 1230 00:58:37,990 --> 00:58:43,820 ให้ฉันข้อมูลทั้งหมดที่เกี่ยวข้อง ที่คอลัมน์นี้โดยเฉพาะเป็นความจริง 1231 00:58:43,820 --> 00:58:49,020 ดังนั้นดาวในกรณีนี้จะ กลับทั้งแถวให้คุณ OK? 1232 00:58:49,020 --> 00:58:54,880 >> และแล้วในกรณีนี้ให้เลือกดาวจาก ตารางเพียงแค่ช่วยให้คุณทั้งตาราง 1233 00:58:54,880 --> 00:58:58,940 แล้วลบอย่างเห็นได้ชัดก็แค่ ลบแถวจากตาราง 1234 00:58:58,940 --> 00:59:01,320 ดังนั้นลบออกจากตาราง สิ่งที่โต๊ะเรา 1235 00:59:01,320 --> 00:59:06,830 การอ้างอิงที่เฉพาะเจาะจงบางอย่าง ระบุหรือเงื่อนไขบางอย่างที่เป็นความจริง 1236 00:59:06,830 --> 00:59:07,720 ใช่? 1237 00:59:07,720 --> 00:59:08,700 >> ผู้ชม: คำถาม 1238 00:59:08,700 --> 00:59:10,699 ทำไมคุณกำลังใช้สองครั้ง คำพูดและไม่ว่าคุณ 1239 00:59:10,699 --> 00:59:13,600 ทำเครื่องหมายคำพูดคู่หรือเดี่ยว คำพูดที่ไม่ได้สร้างความแตกต่าง? 1240 00:59:13,600 --> 00:59:18,235 >> ALISON: คำพูดคู่หรือราคาเดียว ไม่ได้สร้างความแตกต่างใน SQL 1241 00:59:18,235 --> 00:59:19,610 ฉันคิดว่าฉันเห็นคำถามอื่น 1242 00:59:19,610 --> 00:59:20,814 ใช่? 1243 00:59:20,814 --> 00:59:25,070 >> ผู้ชม: มันไม่ส่งผลกระทบต่อสิ่งที่ ได้รับการหลบหนีออกจากแบบสอบถาม? 1244 00:59:25,070 --> 00:59:27,945 >> ALISON: ร็อบ? 1245 00:59:27,945 --> 00:59:31,410 >> ROB: คุณหมายถึงอะไร หนีออกมาจากแบบสอบถาม? 1246 00:59:31,410 --> 00:59:36,870 >> ผู้ชม: ถ้าใครมี คำเดียวในรูปแบบเเล้ 1247 00:59:36,870 --> 00:59:39,862 >> ROB: ถ้ามีคนมา ใส่คำพูดเดียวใน 1248 00:59:39,862 --> 00:59:43,560 แล้วตราบใดที่คุณกำลังฆ่าเชื้อ การป้อนข้อมูลของคุณแล้วมันไม่สำคัญ 1249 00:59:43,560 --> 00:59:46,205 แต่ถ้าคุณใช้เพียงครั้งเดียว อ้างและคุณจะไม่ถูกต้อง 1250 00:59:46,205 --> 00:59:47,914 หนีปัจจัยการผลิตของคุณ แล้วใช่พวกเขาต้องการ 1251 00:59:47,914 --> 00:59:51,079 ที่จะนำคำพูดเดียวเพื่อที่จะทำลาย รหัสของคุณ ถ้าคุณใช้คำพูดคู่ 1252 00:59:51,079 --> 00:59:53,580 พวกเขาต้องการที่จะนำคู่ อ้างที่จะทำลายรหัสของคุณ 1253 00:59:53,580 --> 00:59:56,163 แต่ตราบใดที่คุณหนีสิ่ง อย่างถูกต้องมันไม่สำคัญ 1254 00:59:56,163 --> 00:59:59,220 มันเป็นเพียงแค่จะได้รับการแปล เพื่อเป็นสัญลักษณ์ที่ถูกต้องอยู่แล้ว 1255 00:59:59,220 --> 01:00:02,332 >> ผู้ชม: อะไรหลบหนีหมายถึงอะไร? 1256 01:00:02,332 --> 01:00:04,040 ALISON: ดีเช่น ฆ่าเชื้อและการหลบหนี 1257 01:00:04,040 --> 01:00:06,810 1258 01:00:06,810 --> 01:00:13,820 การสอบที่เรามี XKCD ที่ดี การ์ตูนที่พวกเขาดึงขึ้นที่คุณมี 1259 01:00:13,820 --> 01:00:15,629 oh-- 1260 01:00:15,629 --> 01:00:16,670 ROB: มันเป็นภาพนิ่งที่ผ่านมา 1261 01:00:16,670 --> 01:00:18,500 ALISON: มันเป็นภาพนิ่งที่ผ่านมาจริงเหรอ? 1262 01:00:18,500 --> 01:00:20,200 พระเจ้าช่วย 1263 01:00:20,200 --> 01:00:21,780 มีเราไปที่สมบูรณ์แบบ 1264 01:00:21,780 --> 01:00:27,900 ตกลงดังนั้นโดยทั่วไปคุณสามารถฉีด บางสิ่งบางอย่างในนี้แบบสอบถาม SQL 1265 01:00:27,900 --> 01:00:30,560 ที่จะแบ่งของคุณ รหัสหรือขณะที่เดวิดแสดงให้เห็นว่า 1266 01:00:30,560 --> 01:00:38,460 ในชั้นเรียนถ้าเรามีบางอย่างเดียว อ้าง 1 เท่ากับ 1 และถ้าในรหัสของเรา 1267 01:00:38,460 --> 01:00:41,230 เราเพียงแค่คัดลอกโดยตรงว่าในและ เรามีคำพูดเดียวจบ 1268 01:00:41,230 --> 01:00:44,740 สิ่งที่เกิดขึ้นคือการที่เราได้รับ การแสดงออกบางอย่างที่ 1269 01:00:44,740 --> 01:00:48,680 ประเมินความจริงที่ว่าจะ ปล่อยให้คนเข้าสู่ฐานข้อมูลของเรา 1270 01:00:48,680 --> 01:00:51,720 และได้รับข้อมูลที่เรา ไม่ต้องการให้พวกเขาได้รับ 1271 01:00:51,720 --> 01:00:54,240 ดังนั้นฆ่าเชื้อปัจจัยการผลิต ก็หมายความว่าการทำให้แน่ใจว่า 1272 01:00:54,240 --> 01:00:57,680 ที่เราจะหนีออกมาเหล่านี้ ตัวอักษรและกำหนดให้พวกเขา 1273 01:00:57,680 --> 01:01:01,720 เป็นตัวอักษรและไม่สิ่งที่ ที่ควรได้รับอนุญาต 1274 01:01:01,720 --> 01:01:04,990 จะต้องดำเนินการอย่างแท้จริง เป็นคำสั่ง SQL ของเรา 1275 01:01:04,990 --> 01:01:09,980 >> ดังนั้นสิ่งที่ใหญ่ที่เรากล่าวว่า ที่พวกคุณควรจะใช้ 1276 01:01:09,980 --> 01:01:13,650 มีตัวอักษรพิเศษ HTML, ซึ่งเป็นสิ่งที่ 1277 01:01:13,650 --> 01:01:15,730 ที่คุณอาจต้องการที่จะดูที่ 1278 01:01:15,730 --> 01:01:17,240 ตกลงลบ 1279 01:01:17,240 --> 01:01:19,450 ชนิดข้อมูลทั้งหมดนี้จะออนไลน์ 1280 01:01:19,450 --> 01:01:23,510 เนื่องจากเราได้ 15 นาทีที่เหลือฉัน เพียงแค่จะไปขวาผ่านทางนี้ 1281 01:01:23,510 --> 01:01:28,500 PHP และ SQL โดยทั่วไปนี้ เพียงแค่เรามีฟังก์ชั่นการสอบถามว่า 1282 01:01:28,500 --> 01:01:31,520 ช่วยป้องกัน เหล่านี้โจมตีที่เป็นอันตราย 1283 01:01:31,520 --> 01:01:33,970 ดังนั้นเมื่อใดก็ตามที่คุณใช้ สอบถามเราได้ทำให้แน่ใจว่า 1284 01:01:33,970 --> 01:01:36,560 ว่าสิ่งที่ถูกสุขอนามัยและ whatnot 1285 01:01:36,560 --> 01:01:41,070 >> MVC เป็นเพียงกระบวนทัศน์การออกแบบ ดังนั้นรูปแบบมุมมองของตัวควบคุม 1286 01:01:41,070 --> 01:01:44,200 มันเป็นเพียงวิธีการที่จะให้สิ่งที่ ที่ดีและแยกออกมาในลักษณะเดียวกัน 1287 01:01:44,200 --> 01:01:47,100 ที่เรามักจะเป็นปัจจัย รหัสออกไปในฟังก์ชั่น 1288 01:01:47,100 --> 01:01:53,390 นี่เป็นเพียงกรอบการออกแบบเว็บ ที่ช่วยให้คุณทำสิ่งเดียวกัน 1289 01:01:53,390 --> 01:01:54,760 ฉันจะข้าม 1290 01:01:54,760 --> 01:01:58,530 >> นี่คือสิ่งที่ผม จะสุดแสนสบายกับ 1291 01:01:58,530 --> 01:02:01,132 มันเป็นตารางเล็ก ๆ น้อย ๆ ที่ดีมี 1292 01:02:01,132 --> 01:02:03,090 มันจะช่วยให้คุณฟังก์ชั่น ตัวอย่างของรูปแบบ 1293 01:02:03,090 --> 01:02:05,473 ฉันแค่จะผ่านนี้เพราะผม อยาก Davin เพื่อให้สามารถที่จะพูดคุย 1294 01:02:05,473 --> 01:02:07,140 หากคุณมีคำถามใด ๆ โปรด 1295 01:02:07,140 --> 01:02:07,931 ฉันจะอยู่ที่นี่หลังจาก 1296 01:02:07,931 --> 01:02:10,360 เพียงแค่มาพูดคุยกับผม 1297 01:02:10,360 --> 01:02:13,380 กับที่เรามีสถานะ HTTP 1298 01:02:13,380 --> 01:02:16,270 และจะระเบิด Davin ของ ผ่านทางนี้ในเวลา 15 นาที 1299 01:02:16,270 --> 01:02:17,560 นี้เป็นไปได้ที่ดี 1300 01:02:17,560 --> 01:02:18,893 >> Davin: ตกลง 1301 01:02:18,893 --> 01:02:20,312 เอ่อ, ไมค์ของคุณหรือไม่ 1302 01:02:20,312 --> 01:02:22,210 ใช่ 1303 01:02:22,210 --> 01:02:23,336 ขอโทษ 1304 01:02:23,336 --> 01:02:24,460 ALISON: วิธีที่จะต้องเตรียม 1305 01:02:24,460 --> 01:02:25,335 Davin: ไม่มีฉันพร้อม 1306 01:02:25,335 --> 01:02:25,860 ฉันพร้อม 1307 01:02:25,860 --> 01:02:28,790 ลองทำเช่นนี้ 1308 01:02:28,790 --> 01:02:29,290 ก็พร้อม 1309 01:02:29,290 --> 01:02:30,041 ตกลง 1310 01:02:30,041 --> 01:02:30,540 ขอโทษ 1311 01:02:30,540 --> 01:02:31,664 ฉันกาแฟหกเลอะตัวเอง 1312 01:02:31,664 --> 01:02:36,037 1313 01:02:36,037 --> 01:02:38,210 ผมไม่ทราบว่าถ้าผมมากขึ้น ไม่พอใจที่ผมดูโง่ 1314 01:02:38,210 --> 01:02:40,600 หรือว่าผมไม่ได้มีเครื่องชงกาแฟอีกต่อไป 1315 01:02:40,600 --> 01:02:44,480 อย่างไรก็ตามเพียงแค่การประกาศอย่างรวดเร็ว เกี่ยวกับแผ่นพวกคุณมี 1316 01:02:44,480 --> 01:02:47,994 ดังนั้นแผ่นนี้พวกคุณมีไม่ได้ อย่างเป็นทางการสิ่งที่เกี่ยวกับการตอบคำถาม 1317 01:02:47,994 --> 01:02:49,660 นี่คือสิ่งที่อย่างเป็นทางการในการตอบคำถาม 1318 01:02:49,660 --> 01:02:52,520 นอกจากนี้บนเว็บไซต์ของเราบอก คุณตกลงนี้จะเป็นแบบทดสอบ 1319 01:02:52,520 --> 01:02:55,020 ดังนั้นในแผ่นโกงเล็ก ๆ น้อย ๆ ที่คุณมีและไม่เป็นทางการ 1320 01:02:55,020 --> 01:02:56,690 และมีข้อผิดพลาดเกี่ยวกับมัน 1321 01:02:56,690 --> 01:03:01,490 ดังนั้นสิ่งที่ดีที่สุดที่จะไม่เพียงสุ่มสี่สุ่มห้าใช้มัน 1322 01:03:01,490 --> 01:03:04,390 เพื่อใช่ที่ว่า 1323 01:03:04,390 --> 01:03:05,980 ถ้าอย่างนั้นเราได้รับในนี้อย่างรวดเร็วจริง 1324 01:03:05,980 --> 01:03:07,420 >> สถานะ HTTP ดังนั้น 1325 01:03:07,420 --> 01:03:10,430 ดังนั้นสิ่งที่เกิดขึ้นเมื่อ เว็บไซต์ทุกอย่างเป็นสิ่งที่ถูกต้อง 1326 01:03:10,430 --> 01:03:11,144 ตกลงทุกอย่าง 1327 01:03:11,144 --> 01:03:13,310 ทุกอย่างกลับมาถึง คุณในแบบที่คุณต้องการให้ 1328 01:03:13,310 --> 01:03:15,370 คุณจะได้รับ 200 ตกลง 1329 01:03:15,370 --> 01:03:19,250 301 ที่เราได้เห็นที่ 301 มาก่อนหรือไม่ 1330 01:03:19,250 --> 01:03:20,890 รออะไรขึ้น? 1331 01:03:20,890 --> 01:03:23,250 ขอโทษ 1332 01:03:23,250 --> 01:03:24,980 เราเห็นการบรรยายดีบุกฉันในระหว่างการรักษาความปลอดภัย 1333 01:03:24,980 --> 01:03:30,690 ดังนั้นในระหว่างการรักษาความปลอดภัยดังนั้นถ้าเดวิดพิมพ์ใน http และจากนั้นก็พยายามที่จะไป cs50.net, 1334 01:03:30,690 --> 01:03:31,940 คุณกำลังจะไปดู 301 ย้าย 1335 01:03:31,940 --> 01:03:32,440 ทำไม? 1336 01:03:32,440 --> 01:03:35,570 เพราะมันจะเปลี่ยนเส้นทาง คุณโดยอัตโนมัติเพื่อให้ HTTPS ของเรา 1337 01:03:35,570 --> 01:03:38,649 >> ดังนั้น 301 ย้ายเพียงแค่มัน โดยทั่วไปการเปลี่ยนเส้นทาง 1338 01:03:38,649 --> 01:03:40,190 และคุณสามารถคิดเกี่ยวกับมันเช่นนี้ 1339 01:03:40,190 --> 01:03:43,790 ใด ๆ ของสถ​​านะที่เริ่มต้นด้วย 2, เหล่านี้จะเหมือนตกลงทุกอย่างตกลง 1340 01:03:43,790 --> 01:03:46,530 ใด ๆ ของสถ​​านะที่เริ่มต้น 3, ผู้ที่มีการเปลี่ยนเส้นทาง 1341 01:03:46,530 --> 01:03:49,571 สถานะที่เริ่มต้นด้วย 4 นั่นหมายความว่า มีชนิดของข้อผิดพลาดของลูกค้าบางส่วน 1342 01:03:49,571 --> 01:03:52,440 สถานะที่เริ่มต้นด้วย 5 ที่เป็นชนิดของข้อผิดพลาดบางเซิร์ฟเวอร์ 1343 01:03:52,440 --> 01:03:54,680 ดังนั้นคุณชนิดของเลิก สถานะเช่นนั้น 1344 01:03:54,680 --> 01:03:59,120 ดังนั้น 304 ไม่ได้แก้ไขไม่ได้ดังนั้นในของคุณ server.c P-ชุดจึงขอบอกว่าคุณ 1345 01:03:59,120 --> 01:04:00,600 cat.html โหลด 1346 01:04:00,600 --> 01:04:03,360 ทุกอย่างกลับมา คุณจะได้รับ 200s, ตกลงที่ดี 1347 01:04:03,360 --> 01:04:04,540 >> สมมติว่าคุณสดชื่นมัน 1348 01:04:04,540 --> 01:04:07,310 ดีที่อยู่ภายใน cat.html คุณมี JPEG 1349 01:04:07,310 --> 01:04:09,520 ดี JPEG ที่มีขนาดไม่ได้ จะได้รับการโหลด 1350 01:04:09,520 --> 01:04:12,140 คุณจะไม่โพสต์อีก ได้รับการร้องขอไปยังเซิร์ฟเวอร์ 1351 01:04:12,140 --> 01:04:13,980 และจากนั้นได้รับข้อมูลทั้งหมดที่กลับมา 1352 01:04:13,980 --> 01:04:17,560 มันจะเพียงแค่ be-- ภาพที่มี จะถูกเก็บไว้บนเครื่องของคุณ 1353 01:04:17,560 --> 01:04:19,540 และเพื่อให้ภาพที่จะเป็น 304 1354 01:04:19,540 --> 01:04:20,720 ดังนั้นจึงไม่ได้รับการแก้ไข 1355 01:04:20,720 --> 01:04:24,600 จากนั้นถ้าคุณปิดออกชัดเจน คุกกี้และฟื้นฟูแล้ว 1356 01:04:24,600 --> 01:04:27,490 และพยายามที่จะโหลดหน้าเว็บที่ อีกครั้งคุณจะเห็น 200s 1357 01:04:27,490 --> 01:04:28,910 คุณจะไม่เห็นว่า 304 1358 01:04:28,910 --> 01:04:32,340 >> 400 ขอไม่ดีจริง อย่างรวดเร็วเช่นถ้าคุณ 1359 01:04:32,340 --> 01:04:34,880 กำลังจะไปส่ง วัตถุ JSON ไปยังเซิร์ฟเวอร์ 1360 01:04:34,880 --> 01:04:38,090 และวัตถุ JSON ของคุณไม่ถูกต้อง คุณจะเห็นสิ่งที่ต้องการที่ 1361 01:04:38,090 --> 01:04:39,000 403, ต้องห้าม 1362 01:04:39,000 --> 01:04:40,330 เมื่อคุณจะเห็นต้องห้ามหรือไม่? 1363 01:04:40,330 --> 01:04:41,394 น่าจะเป็นน่าจะเป็น? 1364 01:04:41,394 --> 01:04:42,060 ผู้ชม: Chmod 1365 01:04:42,060 --> 01:04:42,950 Davin: Chmod ใช่ 1366 01:04:42,950 --> 01:04:44,730 ดังนั้นคุณยังไม่ได้ตั้ง สิทธิ์อย่างถูกต้อง 1367 01:04:44,730 --> 01:04:45,577 404 ไม่พบ 1368 01:04:45,577 --> 01:04:46,410 มันเป็นเพียงไม่ได้มี 1369 01:04:46,410 --> 01:04:48,670 ดังนั้นถ้าคุณพิมพ์ใน URL ที่ไม่ถูกต้อง 1370 01:04:48,670 --> 01:04:53,500 500 ความผิดพลาดของเซิร์ฟเวอร์ภายในเซิร์ฟเวอร์ อาจจะไม่ได้ถูกกำหนดอย่างถูกต้อง 1371 01:04:53,500 --> 01:04:56,260 อะไรบางอย่างที่ไม่ได้อยู่ในส่วนท้ายของคุณ แต่ บางสิ่งบางอย่างในฝั่งเซิร์ฟเวอร์ 1372 01:04:56,260 --> 01:04:57,240 และ 503? 1373 01:04:57,240 --> 01:04:59,502 ผู้คนจำนวนมากเห็น 503s ในช่วงพีชุด 1374 01:04:59,502 --> 01:05:00,460 เมื่อที่จะเกิดขึ้น? 1375 01:05:00,460 --> 01:05:04,180 1376 01:05:04,180 --> 01:05:05,660 ผมได้ยินเสียงกระซิบ 1377 01:05:05,660 --> 01:05:07,767 >> ผู้ชม: เมื่อ Google ตัดสินใจที่คุณหุ่นยนต์ 1378 01:05:07,767 --> 01:05:10,350 Davin: ใช่เมื่อ Google ตัดสินใจ คุณหุ่นยนต์ที่คุณจะได้รับ 503s 1379 01:05:10,350 --> 01:05:11,560 ดังนั้นที่เกินพิกัด 1380 01:05:11,560 --> 01:05:14,620 ถ้าคุณได้รับการร้องขอจากเซิร์ฟเวอร์ มากเกินไปก็มักจะชั่วคราว 1381 01:05:14,620 --> 01:05:15,560 และส่วนใหญ่ของคุณสังเกตเห็นมัน 1382 01:05:15,560 --> 01:05:16,185 ดังนั้นคุณจะเห็น 503 1383 01:05:16,185 --> 01:05:19,282 คุณอาจจะมีการดำเนินการน้อย หยุดพักแล้ว 503s กลับออกไป 1384 01:05:19,282 --> 01:05:20,490 และทุกอย่างเป็นสิ่งที่ถูกต้อง 1385 01:05:20,490 --> 01:05:26,640 >> GABE รวดเร็วจริงเมื่อใดที่พวกคุณได้รับ 500 อาจจะเป็นปัญหาที่เกิดขึ้นล่าสุดนี้ตั้ง? 1386 01:05:26,640 --> 01:05:27,954 ใช่? 1387 01:05:27,954 --> 01:05:30,906 >> ผู้ชม: โดยปกติถ้า เซิร์ฟเวอร์มีไฟล์ถูกใส่ผิดที่ 1388 01:05:30,906 --> 01:05:34,650 หรือ [ไม่ได้ยิน] ของพวกเขา เครื่อง [ไม่ได้ยิน] 1389 01:05:34,650 --> 01:05:38,870 >> GABE: ดังนั้นก็อาจจะมีการกำหนดค่า ปัญหาใน PHP ของคุณบนเซิร์ฟเวอร์ของคุณ 1390 01:05:38,870 --> 01:05:42,250 แต่ก็อาจจะมีบางสิ่งบางอย่างเพียง เช่นอัฒภาคว่าลืมของคุณ 1391 01:05:42,250 --> 01:05:44,130 หากคุณกำลังพิมพ์ PHP, บางไวยากรณ์ไม่ถูกต้อง 1392 01:05:44,130 --> 01:05:46,000 อาจได้รับคุณสิ่งที่ต้องการที่ 1393 01:05:46,000 --> 01:05:46,960 OK? 1394 01:05:46,960 --> 01:05:48,610 >> Davin: โทน 1395 01:05:48,610 --> 01:05:51,180 คุณต้องการให้ฉันไปทำแค่จนถึง AJAX? 1396 01:05:51,180 --> 01:05:52,950 >> GABE: [ไม่ได้ยิน] 1397 01:05:52,950 --> 01:05:53,450 Davin: ตกลง 1398 01:05:53,450 --> 01:05:54,230 ดังนั้นสิ่งที่ DOM? 1399 01:05:54,230 --> 01:05:55,290 DOM อะไรยืน? 1400 01:05:55,290 --> 01:05:56,990 >> ผู้ชม: เอกสารรูปแบบวัตถุ 1401 01:05:56,990 --> 01:05:57,490 Davin: ดี 1402 01:05:57,490 --> 01:06:00,775 และทำไมเราชอบมันได้หรือไม่ 1403 01:06:00,775 --> 01:06:02,670 น่ากลัว 1404 01:06:02,670 --> 01:06:06,651 ขวาดังนั้นมันก็ช่วยให้เราสามารถเข้าถึง HTML, เข้าถึงหน้าเว็บของเราได้อย่างรวดเร็ว 1405 01:06:06,651 --> 01:06:07,150 ทำไม? 1406 01:06:07,150 --> 01:06:09,980 เพราะเรากำลังรักษาของเรา หน้ารักษาแท็กของเรา 1407 01:06:09,980 --> 01:06:11,730 การรักษาทุกอย่าง ราวกับว่าพวกเขากำลังวัตถุ 1408 01:06:11,730 --> 01:06:13,710 ถ้าเรารักษาพวกเขาเหมือนพวกเขากำลัง วัตถุแล้วสิ่งที่เราจะทำอย่างไร 1409 01:06:13,710 --> 01:06:15,210 ดีที่เราสามารถเรียกฟังก์ชั่นที่พวกเขา 1410 01:06:15,210 --> 01:06:16,460 และนี่เป็นสิ่งที่สำคัญทำไม? 1411 01:06:16,460 --> 01:06:19,200 ดีเพราะเรากำลังจะใช้ JavaScript เพื่อปรับปรุง HTM​​L ของเรา 1412 01:06:19,200 --> 01:06:20,500 ปรับปรุงวัตถุเหล่านี้ 1413 01:06:20,500 --> 01:06:23,869 ดังนั้นหากเราปฏิบัติต่อพวกเขาเช่นเดียวกับวัตถุ เราก็สามารถเรียกฟังก์ชั่นที่พวกเขา 1414 01:06:23,869 --> 01:06:26,660 ฉันจะได้รับเป็นเล็ก ๆ น้อย ๆ นี้ มากขึ้นเมื่อฉันไปเป็น JavaScript, 1415 01:06:26,660 --> 01:06:30,510 แต่คุณได้เห็นทุกคนชอบ document.getElementById 1416 01:06:30,510 --> 01:06:32,870 เอกสารเพื่อให้เป็นของคุณ องค์ประกอบได้รับองค์ประกอบโดยประชาชน 1417 01:06:32,870 --> 01:06:35,087 ดังนั้นคุณจะไปดู สำหรับรหัสบางอย่างในแท็ก 1418 01:06:35,087 --> 01:06:36,920 แล้วคุณจะทำอย่างไร อย่างอื่นที่ 1419 01:06:36,920 --> 01:06:40,089 ยกตัวอย่างเช่น document.body, จากนั้นคุณสามารถผนวกเด็ก 1420 01:06:40,089 --> 01:06:41,630 ดังนั้นคุณจะพบเอกสาร 1421 01:06:41,630 --> 01:06:42,340 คุณมีเอกสาร 1422 01:06:42,340 --> 01:06:43,629 คุณจะพบร่าง 1423 01:06:43,629 --> 01:06:44,420 คุณพบศพ 1424 01:06:44,420 --> 01:06:46,545 แล้วคุณกำลังจะไป เรียกฟังก์ชั่นบางอย่างกับมัน 1425 01:06:46,545 --> 01:06:50,312 ดังนั้นผนวกเด็กและคุณสามารถผนวก HTML สิ้นสุดลงภายในร่างกายของคุณ 1426 01:06:50,312 --> 01:06:52,520 ดังนั้นโดยทั่วไปคุณเพียงแค่ รักษามันเหมือนวัตถุ 1427 01:06:52,520 --> 01:06:54,515 คุณกำลังรักษา HTML แท็กเช่นวัตถุ 1428 01:06:54,515 --> 01:06:57,071 และก็จะทำให้มันง่ายมาก และรวดเร็วในการไปถึงพวกเขา 1429 01:06:57,071 --> 01:06:59,070 แต่มันยังช่วยให้คุณ ที่จะเรียกฟังก์ชั่นที่พวกเขา 1430 01:06:59,070 --> 01:07:04,410 เพื่อให้คุณสามารถจัดการกับ และการเปลี่ยนแปลงองค์ประกอบ 1431 01:07:04,410 --> 01:07:10,162 >> GABE: ให้นี้ทำไมเป็นเช่น JavaScript ภาษาที่ดีที่จะมีปฏิสัมพันธ์กับ HTML ได้ไหม? 1432 01:07:10,162 --> 01:07:12,870 ราคาต่อรองได้เมื่อคนที่ถูกเลือก ภาษาสำหรับเบราว์เซอร์ 1433 01:07:12,870 --> 01:07:14,990 ฝั่งไคลเอ็นต์สำหรับ JavaScript เป็นสิ่งที่ดีจริงๆ 1434 01:07:14,990 --> 01:07:16,765 มันเป็นเรื่องดีจริงๆที่วัตถุจัดการ 1435 01:07:16,765 --> 01:07:20,620 และวัตถุที่มีชนิดของชอบ วัตถุที่ปรากฏในรูปแบบ HTML, 1436 01:07:20,620 --> 01:07:23,940 ดังนั้นจึงเป็นเรื่องง่ายมากสำหรับ JavaScript ที่จะทำชนิดของการจัดการที่ 1437 01:07:23,940 --> 01:07:24,440 Davin: ดี 1438 01:07:24,440 --> 01:07:25,670 ดังนั้นนี่เป็นเพียงตัวอย่าง 1439 01:07:25,670 --> 01:07:29,020 ดังนั้นผมจึงคิดว่าในการตอบคำถามของปีที่แล้ว หรืออาจจะสองปีที่ผ่านมาเรา 1440 01:07:29,020 --> 01:07:30,840 ขอให้คุณสร้างต้นไม้ 1441 01:07:30,840 --> 01:07:32,660 ดังนั้นนี่คือสิ่งที่คุณต้องการจะทำอย่างไร 1442 01:07:32,660 --> 01:07:34,255 ดังนั้นคุณจึงเริ่มต้นด้วยเอกสาร 1443 01:07:34,255 --> 01:07:36,130 และจากนั้นคุณโดยทั่วไป เพียงแค่มองไปที่แท็ก 1444 01:07:36,130 --> 01:07:38,100 ดังนั้นถ้าคุณมองเรา เริ่มต้นด้วยแท็ก 1445 01:07:38,100 --> 01:07:41,660 และจากนั้นคุณจะได้รับเบาะแสเกี่ยวกับวิธีการ ทำเช่นนี้ขึ้นอยู่กับการเยื้อง 1446 01:07:41,660 --> 01:07:43,870 ดังนั้นชนิดหัวของสาขาออก 1447 01:07:43,870 --> 01:07:46,242 ในหัวของเรามี แท็กชื่อ 1448 01:07:46,242 --> 01:07:47,450 ดังนั้นแล้วเรามีแท็กชื่อ 1449 01:07:47,450 --> 01:07:49,760 และภายในที่เรามีสตริงบาง 1450 01:07:49,760 --> 01:07:52,210 และเพื่อให้เราเป็นตัวแทน สตริงในวงกลม 1451 01:07:52,210 --> 01:07:54,010 และแท็กทั้งหมดที่อยู่ในสี่เหลี่ยม 1452 01:07:54,010 --> 01:07:56,270 >> และถ้าคุณดูถ้าเรา คิดว่านี้เป็นต้นไม้ 1453 01:07:56,270 --> 01:07:58,730 และขอบอกว่า HTML คือ ผู้ปกครองแล้วหัวและลำตัว 1454 01:07:58,730 --> 01:07:59,772 กำลังจะเป็นพี่น้อง 1455 01:07:59,772 --> 01:08:01,813 พวกเขาทั้งสองจะเป็น ลูกหลานของผู้ปกครองที่ 1456 01:08:01,813 --> 01:08:03,620 ดังนั้นเพราะพวกเขากำลัง พี่น้องทั้งที่พวกเขากำลัง 1457 01:08:03,620 --> 01:08:06,590 จะเป็นชนิดของที่อยู่ถัดจาก ซึ่งกันและกันในรูปแบบต้นไม้ของเรา 1458 01:08:06,590 --> 01:08:08,590 และจากนั้นคุณโดยทั่วไป ทำสิ่งเดียวที่แน่นอน 1459 01:08:08,590 --> 01:08:13,512 ดังนั้นไม่ใช่เรื่องยาก แต่เราได้ถาม คำถามเช่นนี้มาก่อนในการตอบคำถาม 1460 01:08:13,512 --> 01:08:15,220 GABE: ไม่มีใคร มีคำถามเพื่อให้ห่างไกล? 1461 01:08:15,220 --> 01:08:16,357 มันเป็นสิ่งที่ดี? 1462 01:08:16,357 --> 01:08:16,856 Davin: โทน 1463 01:08:16,856 --> 01:08:19,630 1464 01:08:19,630 --> 01:08:21,600 JavaScript, ตกลงสิ่งที่ดี 1465 01:08:21,600 --> 01:08:24,069 ดังนั้น JavaScript, JavaScript คืออะไร? 1466 01:08:24,069 --> 01:08:28,370 ดี JavaScript เท่าไหร่ก็ ซับซ้อน แต่เหล่านี้ 1467 01:08:28,370 --> 01:08:30,727 คือบางส่วนของไฮไลท์ ที่คุณควรเก็บไว้ในใจ 1468 01:08:30,727 --> 01:08:31,810 ครั้งแรกก็พิมพ์อย่างหลวม ๆ 1469 01:08:31,810 --> 01:08:33,529 หมายความว่าอะไร? 1470 01:08:33,529 --> 01:08:35,596 ดังนั้น PHP was-- ใช่อะไรขึ้น? 1471 01:08:35,596 --> 01:08:39,854 >> ผู้ชม: คุณไม่ได้รับอย่างชัดเจน รัฐสิ่งที่ประเภทของตัวแปรมันเป็น 1472 01:08:39,854 --> 01:08:40,479 Davin: เหมาะ 1473 01:08:40,479 --> 01:08:43,270 ดังนั้นเขาจึงบอกว่าคุณจะได้ไม่ต้อง อย่างชัดเจนระบุชนิดของตัวแปร 1474 01:08:43,270 --> 01:08:44,160 ที่เหมาะสมว่า 1475 01:08:44,160 --> 01:08:49,700 ดังนั้นใน C ถ้าผมมีผม int เท่ากับ 50, จากนั้นใน PHP ก็เพียงเช่นนี้ $ i, 1476 01:08:49,700 --> 01:08:50,550 เท่ากับ 50 1477 01:08:50,550 --> 01:08:54,319 จากนั้นใน JavaScript, สิ่งที่เรียกร้องจะเป็นอย่างไร 1478 01:08:54,319 --> 01:08:55,260 Var ใช่มั้ย? 1479 01:08:55,260 --> 01:08:56,566 มันจะเป็นเหมือนฉัน var เท่ากับ 50 1480 01:08:56,566 --> 01:08:58,649 แต่คุณไม่จำเป็นต้องเป็น เหมือนตกลงนี้เป็น int 1481 01:08:58,649 --> 01:09:00,350 ตกลงนี้เป็นสตริง 1482 01:09:00,350 --> 01:09:01,731 ไม่จำเป็นต้องทำอย่างนั้น 1483 01:09:01,731 --> 01:09:02,939 มันเป็นภาษาที่ตีความ 1484 01:09:02,939 --> 01:09:04,904 ดังนั้นสิ่งที่หมายความว่า? 1485 01:09:04,904 --> 01:09:06,340 >> ผู้ชม: รวบรวมไม่ 1486 01:09:06,340 --> 01:09:10,470 >> Davin: อะไรไม่ได้รวบรวมหมายถึงอะไร? 1487 01:09:10,470 --> 01:09:11,392 ใช่? 1488 01:09:11,392 --> 01:09:15,336 >> ผู้ชม: คุณไม่จำเป็นต้อง เพื่อปรับโครงสร้างรหัส 1489 01:09:15,336 --> 01:09:18,294 จะได้รับมันพร้อมสำหรับ คอมพิวเตอร์เพื่อเรียกใช้ 1490 01:09:18,294 --> 01:09:23,144 มันเอาแค่ในเวลาที่ การดำเนินการและคอมพิวเตอร์ [ไม่ได้ยิน] 1491 01:09:23,144 --> 01:09:25,560 Davin: ใช่ดังนั้นมันจะ ผ่านล่าม 1492 01:09:25,560 --> 01:09:26,750 แต่คุณตรงขวา 1493 01:09:26,750 --> 01:09:28,319 ดังนั้นคุณไม่เคยไป เพื่อรวบรวมมันใช่มั้ย? 1494 01:09:28,319 --> 01:09:30,399 เมื่อคุณกำลังทำของคุณ PHP และรหัส JavaScript, 1495 01:09:30,399 --> 01:09:31,365 คุณไม่เคยเรียกว่าคอมไพล์ 1496 01:09:31,365 --> 01:09:33,779 คุณไม่เคยเรียกว่าสิ่งที่ต้องการ สร้างหรืออะไรอย่างนั้น 1497 01:09:33,779 --> 01:09:34,800 นั่นเป็นเพราะการตีความ 1498 01:09:34,800 --> 01:09:37,319 ดังนั้นเวลาที่มันจะต้องผ่านเบราว์เซอร์ทุก มันจะไปผ่านล่าม 1499 01:09:37,319 --> 01:09:40,370 และที่จะตีความว่า เพียงในเวลาจริงทันทีสำหรับคุณ 1500 01:09:40,370 --> 01:09:43,770 ดังนั้นสิ่งที่เป็นบวกและเชิงลบบาง จะมีการแปลภาษา 1501 01:09:43,770 --> 01:09:45,258 และมีภาษาที่รวบรวม? 1502 01:09:45,258 --> 01:09:48,240 1503 01:09:48,240 --> 01:09:50,540 ดังนั้น compiling-- ใช่อะไรขึ้น? 1504 01:09:50,540 --> 01:09:52,444 >> ผู้ชม: ตีความจะช้า 1505 01:09:52,444 --> 01:09:53,319 Davin: ในสิ่งที่รู้สึก? 1506 01:09:53,319 --> 01:09:57,167 1507 01:09:57,167 --> 01:09:59,091 >> ผู้ชม: หลังจากที่คุณ รวบรวมคุณไม่ได้ 1508 01:09:59,091 --> 01:10:04,400 ที่จะทำขั้นตอนพิเศษใด ๆ ที่จะดำเนินการ มันในขณะนี้ [ไม่ได้ยิน] 1509 01:10:04,400 --> 01:10:05,570 >> Davin: ขวา, ที่สมบูรณ์แบบ 1510 01:10:05,570 --> 01:10:08,386 ดังนั้นสิ่งที่คุณกล่าวว่า รวบรวมโดยทั่วไปว่า 1511 01:10:08,386 --> 01:10:10,760 เมื่อคุณรวบรวมคุณมี จำนวนมากของค่าใช้จ่ายล่วงหน้าใช่มั้ย? 1512 01:10:10,760 --> 01:10:11,760 คุณกำลังจะรวบรวมมัน 1513 01:10:11,760 --> 01:10:13,750 แต่หลังจากที่คุณรวบรวมมัน คอมไพเลอร์จะเพิ่มประสิทธิภาพของมัน 1514 01:10:13,750 --> 01:10:14,840 มันเป็นไปได้อย่างรวดเร็ว 1515 01:10:14,840 --> 01:10:16,170 มันจะเป็นพื้น จะให้เร็วที่สุดเท่าที่จะสามารถ 1516 01:10:16,170 --> 01:10:18,830 ด้วยการแปลความหมายของคุณไม่ ได้ว่าค่าใช้จ่ายล่วงหน้า 1517 01:10:18,830 --> 01:10:22,260 แต่ก็เป็นไปได้ช้าลงเล็กน้อย ทุกเวลาเดียวที่คุณตีความมัน 1518 01:10:22,260 --> 01:10:24,940 และคุณจะต้อง ตีความมันทุกครั้งเดียว 1519 01:10:24,940 --> 01:10:27,114 ดังนั้นแทนที่จะต้องนี้ หนึ่งค่าใช้จ่ายเวลาตอนนี้คุณ 1520 01:10:27,114 --> 01:10:29,530 จะมีการตีความว่า ทุกครั้งที่หน้าแสดงผล 1521 01:10:29,530 --> 01:10:31,890 >> ดังนั้นล่ามเป็นสิ่งที่ดีเพราะ คุณไม่ได้มีการรวบรวมมัน 1522 01:10:31,890 --> 01:10:33,980 แต่พวกเขากำลังไม่ดีในทุกที่ เวลาโหลดหน้ามัน 1523 01:10:33,980 --> 01:10:35,771 จะต้อง ตีความ JavaScript นี้ 1524 01:10:35,771 --> 01:10:40,520 และมันจะทำงานช้าลงเล็กน้อย กว่าถ้าคุณจะรวบรวมมัน 1525 01:10:40,520 --> 01:10:43,044 ช่วยให้คุณสามารถ communicate-- โอ้รอ 1526 01:10:43,044 --> 01:10:44,960 ใช้ในการจัดการ เนื้อหาและรูปลักษณ์ 1527 01:10:44,960 --> 01:10:46,043 เราเพียงแค่พูดคุยเกี่ยวกับว่า 1528 01:10:46,043 --> 01:10:47,250 มันใช้ DOM 1529 01:10:47,250 --> 01:10:49,930 AJAX เราจะได้รับใน AJAX ในนิด ๆ หน่อย ๆ 1530 01:10:49,930 --> 01:10:51,520 และแล้วก็ถึงฝั่งไคลเอ็นต์ 1531 01:10:51,520 --> 01:10:53,110 ดังนั้น PHP เป็นฝั่งเซิร์ฟเวอร์ 1532 01:10:53,110 --> 01:10:54,360 JavaScript เป็นฝั่งไคลเอ็นต์ 1533 01:10:54,360 --> 01:10:57,780 สิ่งที่เป็นบวกกับที่? 1534 01:10:57,780 --> 01:10:58,280 มันบอกว่ามัน 1535 01:10:58,280 --> 01:11:01,480 1536 01:11:01,480 --> 01:11:02,780 มันเร็วกว่าใช่มั้ย? 1537 01:11:02,780 --> 01:11:05,282 เพราะคุณไม่ได้มี to-- มันได้เร็วขึ้น 1538 01:11:05,282 --> 01:11:07,490 คุณไม่ได้มีการติดต่อสื่อสาร กับอุปกรณ์อื่น ๆ 1539 01:11:07,490 --> 01:11:08,790 หากคุณเพียงแค่ในของคุณ ไคลเอนต์คุณไม่เคย 1540 01:11:08,790 --> 01:11:11,280 จะต้องไปและ ดูว่ามีอะไรบนเซิร์ฟเวอร์ 1541 01:11:11,280 --> 01:11:13,150 แล้วรายงานกลับ หรือสิ่งที่ต้องการ 1542 01:11:13,150 --> 01:11:15,410 ด้านลูกค้าดังนั้นมีแนวโน้มที่จะ เป็นนิด ๆ หน่อย ๆ ได้เร็วขึ้น 1543 01:11:15,410 --> 01:11:17,910 >> GABE: ใช่ แต่นี้ ไม่ได้หมายความว่า PHP เป็น 1544 01:11:17,910 --> 01:11:20,440 เร็วกว่า JavaScript หรืออะไรที่ชอบ 1545 01:11:20,440 --> 01:11:23,270 พวกเขาใช้ชนิดของในเดียวกัน ความเร็วเพราะพวกเขาทั้งสอง 1546 01:11:23,270 --> 01:11:24,490 แปลภาษา 1547 01:11:24,490 --> 01:11:26,680 สิ่งที่ช้า นี่คือการขอ 1548 01:11:26,680 --> 01:11:28,870 ดังนั้นคุณจะจริง ตลอดทางไปยังบราซิล 1549 01:11:28,870 --> 01:11:31,460 ที่จะได้รับข้อมูลบางอย่าง ที่อาศัยอยู่ที่นั่น 1550 01:11:31,460 --> 01:11:34,590 แต่ PHP และ JavaScript พวกเขา ชนิดของการทำงานในความเร็วเท่ากัน 1551 01:11:34,590 --> 01:11:37,930 มันไม่ได้เป็นที่หนึ่ง ได้เร็วขึ้นกว่าที่อื่น ๆ 1552 01:11:37,930 --> 01:11:40,600 นี้ยังมีคำถามเคล็ดลับที่นี่ 1553 01:11:40,600 --> 01:11:47,338 ดังนั้น JavaScript ไม่เคยจะกลายเป็น รหัสเครื่อง, จริงหรือเท็จ? 1554 01:11:47,338 --> 01:11:48,590 >> ผู้ชม: เท็จ 1555 01:11:48,590 --> 01:11:49,090 GABE: เท็จ 1556 01:11:49,090 --> 01:11:51,298 มันจะกลายเป็นเครื่อง รหัสเพราะรหัสเครื่องเป็น 1557 01:11:51,298 --> 01:11:53,210 สิ่งเดียวที่เครื่องเข้าใจ 1558 01:11:53,210 --> 01:11:55,800 แม้ว่ามันจะไม่ได้รวบรวม ก็ยังกลายเป็นรหัสเครื่อง 1559 01:11:55,800 --> 01:11:59,120 เพราะล่ามเป็นเพียง โปรแกรมที่จะไปทีละบรรทัด 1560 01:11:59,120 --> 01:12:02,170 และแปลงที่เป็นเส้น สิ่งที่คอมพิวเตอร์เข้าใจ 1561 01:12:02,170 --> 01:12:02,825 OK? 1562 01:12:02,825 --> 01:12:03,325 เย็น 1563 01:12:03,325 --> 01:12:08,530 1564 01:12:08,530 --> 01:12:12,890 >> Davin: นี่เป็นเพียงขั้นพื้นฐานมาก สวัสดีชาวโลกโปรแกรม JavaScript 1565 01:12:12,890 --> 01:12:15,590 ดังนั้นผมจึงไม่ทราบใดถ้าคุณได้เห็นนี้ 1566 01:12:15,590 --> 01:12:17,630 แต่คุณก็ต้อง HTM​​L ที่นี่ 1567 01:12:17,630 --> 01:12:21,020 และแทนที่จะเป็นจริงใส่ ใช้งาน JavaScript ในแท็กสคริปต์ 1568 01:12:21,020 --> 01:12:22,810 เพื่อให้คุณได้ตามปกติจะใส่ไว้ในหัว 1569 01:12:22,810 --> 01:12:24,030 คุณมีแท็กสคริปต์ 1570 01:12:24,030 --> 01:12:24,870 คุณวางมันไว้ที่นั่น 1571 01:12:24,870 --> 01:12:28,350 ทั้งหมดที่เราได้ทำที่นี่คือเราได้เชื่อมโยง in-- ดังนั้นเราจึงได้มีการเชื่อมโยงในแฟ้ม JavaScript 1572 01:12:28,350 --> 01:12:29,137 เช่นนี้ 1573 01:12:29,137 --> 01:12:30,470 และคุณได้ทำทั้งหมดนี้ใช่มั้ย? 1574 01:12:30,470 --> 01:12:34,740 ดังนั้นเมื่อคุณกำลังใช้ jQuery และ underscore.js ในช่วงพีชุด 1575 01:12:34,740 --> 01:12:38,700 คุณไม่ได้มีตันขึ้นรหัสใน แท็กสคริปต์ของคุณขึ้นมาในหัวของคุณ 1576 01:12:38,700 --> 01:12:41,415 คุณสามารถทำเช่นนั้น แต่แทนที่จะ คุณเพียงแค่การเชื่อมโยงใน 1577 01:12:41,415 --> 01:12:43,540 และคุณกำลังเชื่อมโยงใน เช่นเดียวกับที่คุณทำกับ CSS 1578 01:12:43,540 --> 01:12:50,186 ดังนั้นมันก็ทำให้มันง่ายต่อการอ่านเพื่อ รหัสของคุณจะไม่ชอบ 1,000 เส้นยาว 1579 01:12:50,186 --> 01:12:52,310 กับตันของฟังก์ชั่นที่ คุณอาจไม่ได้ใช้ 1580 01:12:52,310 --> 01:12:53,518 >> แต่คุณก็เชื่อมโยงใน 1581 01:12:53,518 --> 01:12:55,050 มัน compartmentalizes มัน 1582 01:12:55,050 --> 01:13:00,110 มันก็เหมือนกับการเขียนไฟล์ส่วนหัวบางส่วนและ แล้วรวมทั้งไฟล์ส่วนหัวใน C. 1583 01:13:00,110 --> 01:13:01,620 คิดว่ามันเหมือนเพียงแค่นี้ 1584 01:13:01,620 --> 01:13:02,680 ดังนั้นสิ่งนี้จะทำอย่างไร 1585 01:13:02,680 --> 01:13:04,560 อย่างนี้จะไปทำงาน 1586 01:13:04,560 --> 01:13:05,410 มันจะแจ้งเตือน 1587 01:13:05,410 --> 01:13:08,020 ดังนั้นคุณกำลังจะได้รับเพียงเล็กน้อย ปรากฏขึ้นที่เรียกว่าสวัสดีชาวโลก 1588 01:13:08,020 --> 01:13:11,420 คำถามอย่างรวดเร็วเพียงแค่การตรวจสอบสติ เพื่อให้คุณดูที่นี่ในร่างกาย 1589 01:13:11,420 --> 01:13:13,160 บอกว่าร่างกาย, HTML ที่นี่ 1590 01:13:13,160 --> 01:13:14,080 อะไรมาก่อน? 1591 01:13:14,080 --> 01:13:16,864 ฉันเห็นร่างกาย, HTML ที่นี่ หรือฉันจะเห็นการแจ้งเตือนครั้งแรก? 1592 01:13:16,864 --> 01:13:19,828 1593 01:13:19,828 --> 01:13:20,820 >> ผู้ชม: การแจ้งเตือน 1594 01:13:20,820 --> 01:13:21,470 >> Davin: ขวา 1595 01:13:21,470 --> 01:13:22,110 เขาบอกว่าการแจ้งเตือน 1596 01:13:22,110 --> 01:13:22,610 ทำไม? 1597 01:13:22,610 --> 01:13:24,470 >> ผู้ชม: เพ​​ราะคุณ ไปจากบนลงล่าง 1598 01:13:24,470 --> 01:13:25,600 >> Davin: ใช่ 1599 01:13:25,600 --> 01:13:26,100 สมบูรณ์ 1600 01:13:26,100 --> 01:13:29,207 ดังนั้นเขาจึงบอกว่าคุณไปจากบนลง ด้านล่างซึ่งเป็นที่ถูกต้องอย่างแน่นอน 1601 01:13:29,207 --> 01:13:30,790 คุณกำลังจะไปจากบนลงล่าง 1602 01:13:30,790 --> 01:13:34,790 และใน JavaScript, jQuery คุณมี ฟังก์ชั่นที่เหมือน onload หรือพร้อม 1603 01:13:34,790 --> 01:13:38,030 และที่บอกว่าตกลงรอจนกว่า ทั้งหมดของภาษา HTML นี้มีการโหลด 1604 01:13:38,030 --> 01:13:39,580 แล้วเรียกใช้งาน JavaScript 1605 01:13:39,580 --> 01:13:42,190 เพราะเราไม่ได้ว่าที่นี่ สิ่งแรกที่จะเกิดขึ้น 1606 01:13:42,190 --> 01:13:43,920 มันจะไปจากบนลงล่าง 1607 01:13:43,920 --> 01:13:46,310 มันจะตีว่า JS โทรก็จะแจ้งเตือน 1608 01:13:46,310 --> 01:13:49,510 หลังจากที่คุณคลิกตกลง การแจ้งเตือนว่าจะหายไป 1609 01:13:49,510 --> 01:13:53,600 จากนั้นก็จะแสดง คุณร่างกาย HTML ที่นี่ 1610 01:13:53,600 --> 01:13:54,590 ดี 1611 01:13:54,590 --> 01:14:00,880 >> ตกลงดังนั้นเพียงจริงอย่างรวดเร็ว, การเขียน ใน JavaScript เป็นซุปเปอร์รวดเร็ว 1612 01:14:00,880 --> 01:14:02,710 เพื่อที่จะประกาศ ตัวแปรชื่อ var 1613 01:14:02,710 --> 01:14:07,070 ดังนั้นใน C คุณมีฉัน int, คุณมี ที่จะประกาศว่าชนิดของชนิดมันเป็น 1614 01:14:07,070 --> 01:14:08,040 PHP, $ 1615 01:14:08,040 --> 01:14:08,755 JavaScript, var 1616 01:14:08,755 --> 01:14:09,630 เราพูดคุยกันเกี่ยวกับเรื่องนี้ 1617 01:14:09,630 --> 01:14:11,020 สิทธิทั้งหมดให้เป็นไป 1618 01:14:11,020 --> 01:14:12,510 >> ลูป, สิ่งเดียวกัน 1619 01:14:12,510 --> 01:14:14,230 สิ่งเดียวกัน 1620 01:14:14,230 --> 01:14:18,165 ประกาศฟังก์ชั่นเพื่อ เช่นเดียวกับที่คุณเคยเห็นในซี 1621 01:14:18,165 --> 01:14:21,290 เป็นสิ่งเดียวที่แตกต่างกันดังนั้นเมื่อ คุณจะได้รับการเขียนโปรแกรมภาษาอื่น ๆ 1622 01:14:21,290 --> 01:14:24,780 เช่นเมื่อคุณใช้เวลา 51 ภาคการศึกษาต่อไป และคุณทำกับ OCaml, 1623 01:14:24,780 --> 01:14:26,690 คุณสามารถจัดการกับฟังก์ชั่นที่ไม่ระบุชื่อ 1624 01:14:26,690 --> 01:14:28,240 นั่นคือสิ่งที่คุณได้ที่นี่ 1625 01:14:28,240 --> 01:14:31,560 ดังนั้นคุณจึงต้องการที่จะใส่ในผลรวม ชนิดของค่าผลรวม 1626 01:14:31,560 --> 01:14:33,870 แต่คุณอาจจะทำมันอีกครั้งหนึ่ง 1627 01:14:33,870 --> 01:14:37,310 ดังนั้นคุณจึงไม่ต้องการเรียกว่าฟังก์ชั่น ผลรวมให้มันประกาศฟังก์ชัน 1628 01:14:37,310 --> 01:14:39,830 แต่คุณเพียงแค่ใช้มัน เป็นฟังก์ชั่นที่ไม่ระบุชื่อ 1629 01:14:39,830 --> 01:14:42,469 และคุณได้เห็นนี้เป็นจำนวนมาก 1630 01:14:42,469 --> 01:14:44,510 คุณจะเห็นตัวอย่างของ ในสไลด์คู่ 1631 01:14:44,510 --> 01:14:45,597 ใช่เราจะเห็น 1632 01:14:45,597 --> 01:14:46,430 GABE: คำถามที่ดี 1633 01:14:46,430 --> 01:14:50,660 เมื่อคุณอาจต้องการที่จะใช้ ฟังก์ชั่นที่ไม่ระบุชื่อที่นี่? 1634 01:14:50,660 --> 01:14:54,111 โดยทั่วไปเมื่อคุณต้องการบางสิ่งบางอย่าง เช่นเดียวกับเหตุการณ์ที่จะเกิดขึ้น 1635 01:14:54,111 --> 01:14:55,860 ดังนั้นเมื่อเมาส์อยู่ คลิกตัวอย่างเช่น 1636 01:14:55,860 --> 01:14:57,790 คุณต้องการฟังก์ชั่นบางอย่างที่จะเรียกว่า 1637 01:14:57,790 --> 01:15:00,570 ดังนั้นคุณจะส่งผ่านไปยังเหตุการณ์ จัดการคุณส่งผ่านไปยังเหตุการณ์ที่เกิดขึ้น 1638 01:15:00,570 --> 01:15:02,870 ชนิดของฟังก์ชั่นที่ คุณต้องการที่จะเรียกว่า 1639 01:15:02,870 --> 01:15:04,710 และสิ่งที่คุณกำลังผ่าน ก็เหมือนในตอนท้าย 1640 01:15:04,710 --> 01:15:08,757 ในวันนี้เพียงแค่ชี้ไปยัง ที่การเรียนการสอน, ฟังก์ชั่น 1641 01:15:08,757 --> 01:15:11,090 ดังนั้นจึงไม่ชอบคุณผ่าน รหัสทั้งหมดเช่นเดียวกับ 1642 01:15:11,090 --> 01:15:12,173 ตัวชี้ไปยังฟังก์ชั่น 1643 01:15:12,173 --> 01:15:17,871 และจากนั้นเมื่อคลิกที่ใครบางคน เมาส์แล้วฟังก์ชั่นที่ได้รับการเรียกว่า 1644 01:15:17,871 --> 01:15:22,340 >> Davin: อาร์เรย์เพื่อให้คุณ มีการประกาศอาร์เรย์ 1645 01:15:22,340 --> 01:15:23,990 จากนั้นอาเรย์ที่จะนำสิ่งใน 1646 01:15:23,990 --> 01:15:25,769 จริงอย่างรวดเร็วสิ่งนี้จะพิมพ์ออกมา? 1647 01:15:25,769 --> 01:15:27,060 อะไรองค์ประกอบที่สามจะเป็นอย่างไร 1648 01:15:27,060 --> 01:15:31,470 1649 01:15:31,470 --> 01:15:32,450 >> ผู้ชม: "JS" 1650 01:15:32,450 --> 01:15:33,940 >> Davin: ขวาก็จะเป็น "JS." 1651 01:15:33,940 --> 01:15:35,760 รอให้กลับไป 1652 01:15:35,760 --> 01:15:37,100 ความยาวคืออะไร? 1653 01:15:37,100 --> 01:15:38,117 >> ผู้ชม: สาม 1654 01:15:38,117 --> 01:15:38,950 Davin: สามใช่มั้ย? 1655 01:15:38,950 --> 01:15:40,210 สิ่งที่คุณคิดว่า 1656 01:15:40,210 --> 01:15:42,072 ตกลงตอนนี้ไป 1657 01:15:42,072 --> 01:15:43,530 อาร์เรย์คุณสามารถเพิ่มสิ่งที่พวกเขา 1658 01:15:43,530 --> 01:15:45,395 เพื่อให้คุณสามารถไปได้ไกลกว่า ขอบเขตแรกของพวกเขา 1659 01:15:45,395 --> 01:15:46,740 เพียงแค่สิ่งที่จะเก็บไว้ในใจ 1660 01:15:46,740 --> 01:15:49,760 PHP, JavaScript, พวกเขากำลังเล็ก ๆ น้อย ๆ บิตให้อภัยมากขึ้นในแง่ของสิ่งที่ 1661 01:15:49,760 --> 01:15:50,570 เช่นนั้น 1662 01:15:50,570 --> 01:15:54,260 วัตถุอย่างมากเช่น structs ใน C มาก 1663 01:15:54,260 --> 01:15:56,590 เช่นเชื่อมโยงอาร์เรย์ใน PHP 1664 01:15:56,590 --> 01:15:58,720 คุณมีประสบการณ์ทั้งหมดที่มีนี้ 1665 01:15:58,720 --> 01:16:01,880 ดังนั้น JSON เมื่อคุณผ่าน JSON กลับมาอยู่ในสถานที่ตั้งแปด 1666 01:16:01,880 --> 01:16:03,260 ที่วัตถุของคุณ 1667 01:16:03,260 --> 01:16:06,290 >> เพื่อใช่ตัวอย่างเช่นตัวอย่างรวดเร็วจริง 1668 01:16:06,290 --> 01:16:07,880 นี่คือวัตถุ 1669 01:16:07,880 --> 01:16:12,700 วิธีที่คุณอ้างอิงนี้ วัตถุดังนั้นเพียงจริงอย่างรวดเร็ว 1670 01:16:12,700 --> 01:16:18,630 สมมติว่าผมต้องการที่จะหา ออกตกลงสิ่งที่แน่นอน? 1671 01:16:18,630 --> 01:16:20,681 และเพื่อให้ชื่อวัตถุที่นี่เป็น CS50 1672 01:16:20,681 --> 01:16:23,180 แล้วถ้าผมมีการเชื่อมโยง อาร์เรย์ว่าฉันจะทำเช่นนั้น? 1673 01:16:23,180 --> 01:16:24,580 ฉันจะใช้คีย์ใช่มั้ย? 1674 01:16:24,580 --> 01:16:26,030 ดังนั้นผมจึงมีชื่อของอาร์เรย์ 1675 01:16:26,030 --> 01:16:30,160 ฉันมีวงเล็บ, คำพูด, กุญแจ คำพูดในตอนท้ายวงเล็บสิ้นสุด 1676 01:16:30,160 --> 01:16:33,610 และที่จะอ้างอิงว่า องค์ประกอบภายในอาเรย์ของฉัน 1677 01:16:33,610 --> 01:16:37,646 ฉันทำอ้างอิงวิธี แน่นอนภายในวัตถุของฉันได้อย่างไร 1678 01:16:37,646 --> 01:16:39,170 ใครรู้หรือไม่? 1679 01:16:39,170 --> 01:16:40,622 >> ผู้ชม: [ไม่ได้ยิน] 1680 01:16:40,622 --> 01:16:41,784 >> Davin: เกิดอะไรขึ้น? 1681 01:16:41,784 --> 01:16:42,700 ผู้ชม: CS50.course 1682 01:16:42,700 --> 01:16:43,510 Davin: ใช่ใช่ 1683 01:16:43,510 --> 01:16:45,320 ดังนั้น CS50.course 1684 01:16:45,320 --> 01:16:48,770 ดังนั้นวิธีการที่คุณสิ่งอ้างอิง ภายในวัตถุ JSON เป็นด้วยจุด 1685 01:16:48,770 --> 01:16:53,114 >> ผู้ชม: นอกจากนี้คุณยังสามารถใช้ไวยากรณ์อาร์เรย์ 1686 01:16:53,114 --> 01:16:54,050 >> Davin: ตกลงที่ดี 1687 01:16:54,050 --> 01:16:57,544 >> GABE: คุณยังสามารถใช้วงเล็บ CS50, สตริงเช่นเครื่องหมายคำพูด 1688 01:16:57,544 --> 01:16:59,210 ผู้ชม: ฉันคิดว่ามันเหมือนกันกับ PHP 1689 01:16:59,210 --> 01:17:00,293 GABE: มันเป็นสิ่งเดียวกัน 1690 01:17:00,293 --> 01:17:02,487 Davin: ดี! 1691 01:17:02,487 --> 01:17:03,945 แต่คุณจะดูสถานที่อื่น ๆ 1692 01:17:03,945 --> 01:17:08,990 1693 01:17:08,990 --> 01:17:10,480 ใช่เพื่อให้ไป 1694 01:17:10,480 --> 01:17:13,330 นี่คือสิ่งที่ผมเพิ่งกล่าวว่า 1695 01:17:13,330 --> 01:17:17,840 ดังนั้นเป็นตัวอย่าง JavaScript jQuery 1696 01:17:17,840 --> 01:17:19,440 ดังนั้นนี่คือ DOM ของฉันใช่มั้ย? 1697 01:17:19,440 --> 01:17:22,290 1698 01:17:22,290 --> 01:17:25,410 จริงอย่างรวดเร็วเพื่อให้ฉันมี หัวโลกสวัสดีร่างกาย 1699 01:17:25,410 --> 01:17:26,160 ฉันมีปุ่ม 1700 01:17:26,160 --> 01:17:27,870 มันบอกว่า "ผลักดันให้ฉัน" ดังนั้นฉันต้องการที่จะผลักดันมัน 1701 01:17:27,870 --> 01:17:29,745 และผมต้องการที่จะทำบางสิ่งบางอย่าง เมื่อมันคลิก 1702 01:17:29,745 --> 01:17:31,220 ขวาต่อไป 1703 01:17:31,220 --> 01:17:34,630 >> ขวาดังนั้นนี่คือ JavaScript ของฉัน 1704 01:17:34,630 --> 01:17:37,790 ดังนั้น jQuery เป็นเพียงง่ายขึ้น วิธีการเขียน JavaScript 1705 01:17:37,790 --> 01:17:40,920 ดังนั้นนี้และสิ่งที่ฉันจะแสดง คุณต่อไปเป็นไปได้ jQuery, 1706 01:17:40,920 --> 01:17:41,930 เหมือนกัน 1707 01:17:41,930 --> 01:17:43,990 ดังนั้นพวกเขาจะทำสิ่งเดียวกัน 1708 01:17:43,990 --> 01:17:45,974 เพียงแค่ jQuery มีแนวโน้มที่จะง่ายขึ้นเล็กน้อย 1709 01:17:45,974 --> 01:17:47,140 คนมักจะชอบมันมากขึ้น 1710 01:17:47,140 --> 01:17:48,390 มีจำนวนมากของการทำงาน 1711 01:17:48,390 --> 01:17:49,830 ดังนั้นผู้คนมักจะใช้ jQuery 1712 01:17:49,830 --> 01:17:53,270 ทุกท่านที่ใช้ jQuery ในช่วงพีชุด 1713 01:17:53,270 --> 01:17:54,270 ดังนั้นสิ่งนี้จะทำอย่างไร 1714 01:17:54,270 --> 01:17:56,580 สิ่งที่จะ JavaScript-- นี้เพื่อ นี้เป็นธรรมดาเพียง JavaScript 1715 01:17:56,580 --> 01:17:57,430 สิ่งนี้จะทำอย่างไร 1716 01:17:57,430 --> 01:18:00,600 1717 01:18:00,600 --> 01:18:03,450 สิ่งที่จะทำอย่างไร 1718 01:18:03,450 --> 01:18:04,890 >> ดังนั้นก่อนที่คุณเห็น onload หน้าต่าง 1719 01:18:04,890 --> 01:18:05,390 ใช่มั้ย? 1720 01:18:05,390 --> 01:18:06,640 ดังนั้นเราจึงไม่เห็นว่าก่อนที่จะ 1721 01:18:06,640 --> 01:18:09,380 ดังนั้นนี้จะต้องรอ จนกว่าจะโหลดหน้าต่างทั้งหมด 1722 01:18:09,380 --> 01:18:12,770 ดังนั้นก็จะรอจนกว่า HTML ทั้งหมดโหลดภาพ 1723 01:18:12,770 --> 01:18:13,770 ก่อนที่จะได้ทำอะไรเลย 1724 01:18:13,770 --> 01:18:16,050 ดังนั้นสมมติว่า DOM ของเรามีการโหลด 1725 01:18:16,050 --> 01:18:17,270 ทุกอย่างที่มี 1726 01:18:17,270 --> 01:18:19,080 จากนั้นสิ่งที่จะเกิดขึ้น? 1727 01:18:19,080 --> 01:18:19,922 ใช่? 1728 01:18:19,922 --> 01:18:22,880 >> ผู้ชม: ปุ่มปรากฏ 1729 01:18:22,880 --> 01:18:25,201 >> Davin: ปุ่มมีอยู่แล้ว 1730 01:18:25,201 --> 01:18:26,700 ใช่ดังนั้นปุ่มมีอยู่แล้ว 1731 01:18:26,700 --> 01:18:31,190 แต่นี้เป็นไปที่จะบอกว่า ตกลงถ้าผมคลิกที่ปุ่ม 1732 01:18:31,190 --> 01:18:33,650 ดังนั้นปุ่มแล้ว มีเช่นว่าแท็ก 1733 01:18:33,650 --> 01:18:35,980 รอให้กลับไปจริงอย่างรวดเร็ว 1734 01:18:35,980 --> 01:18:39,470 แท็กนี้ขวาตรงนี้คือ จะเป็นปุ่มแล้ว 1735 01:18:39,470 --> 01:18:40,810 แล้วมีปุ่มเป็น 1736 01:18:40,810 --> 01:18:44,120 แต่แล้ว JavaScript แท็กที่นี่ 1737 01:18:44,120 --> 01:18:46,160 มันบอกว่าตกลงฉันต้องการ ที่จะได้รับองค์ประกอบโดยประชาชน 1738 01:18:46,160 --> 01:18:50,300 ปุ่มค้นหาเพื่อเพียงกล่าวว่าตกลงฉันต้องการ เพื่อแมตัวแปรนี้ให้กับปุ่มที่ 1739 01:18:50,300 --> 01:18:53,120 ดังนั้นตัวแปรที่เป็นเพียง วิธีที่ง่ายต่อการเข้าถึงปุ่มนั้น 1740 01:18:53,120 --> 01:18:57,300 และผมก็บอกว่าโอเคถ้าฉันคลิกที่ ปุ่มดังนั้นถ้าฉันคลิกองค์ประกอบที่ 1741 01:18:57,300 --> 01:18:59,560 และองค์ประกอบที่นี้หมายถึง ปุ่มถ้าผมคลิกมัน 1742 01:18:59,560 --> 01:19:00,875 แล้วผมต้องการที่จะเรียกใช้ฟังก์ชัน 1743 01:19:00,875 --> 01:19:03,500 นี่คือหนึ่งในผู้ที่ไม่ระบุชื่อ ฟังก์ชั่นที่เราได้พูดคุยเกี่ยวกับ 1744 01:19:03,500 --> 01:19:04,840 >> เพียงแค่เรียกใช้ฟังก์ชันบางอย่าง 1745 01:19:04,840 --> 01:19:08,840 ภายในฟังก์ชันที่พื้น บางสิ่งบางอย่างที่เราได้เห็นมาก, การแจ้งเตือน 1746 01:19:08,840 --> 01:19:10,477 คุณคลิกที่ปุ่มค้นหา 1747 01:19:10,477 --> 01:19:12,060 มันเป็นไปโดยทั่วไปมีปุ่ม 1748 01:19:12,060 --> 01:19:13,040 คุณคลิก 1749 01:19:13,040 --> 01:19:14,040 คุณจะได้รับการแจ้งเตือนว่า 1750 01:19:14,040 --> 01:19:14,850 X ออก 1751 01:19:14,850 --> 01:19:15,754 นั่นแหล่ะ 1752 01:19:15,754 --> 01:19:16,254 ใช่? 1753 01:19:16,254 --> 01:19:21,980 >> ผู้ชม: ดังนั้นถ้าคุณวางสคริปต์ [ไม่ได้ยิน] แท็กสคริปต์ใน HTML ของคุณ? 1754 01:19:21,980 --> 01:19:24,300 >> Davin: คุณสามารถวางสคริปต์ ตรงแท็กในหัว 1755 01:19:24,300 --> 01:19:30,667 เพราะคุณมี onload นี้ 1756 01:19:30,667 --> 01:19:32,000 นอกจากนี้ยังเป็นที่ที่คุณต้องคลิก 1757 01:19:32,000 --> 01:19:34,166 ดังนั้นก็จะรอจนกว่า คุณคลิกสำหรับบางสิ่งบางอย่าง 1758 01:19:34,166 --> 01:19:37,470 แต่ onload เป็นเพียงเพื่อความปลอดภัยเพื่อให้ โหลดแน่ใจว่าทุกอย่างเป็น HTML ของคุณ 1759 01:19:37,470 --> 01:19:38,170 ล่วงหน้า 1760 01:19:38,170 --> 01:19:39,247 ใช่? 1761 01:19:39,247 --> 01:19:40,330 คุณต้องการที่จะพูดอะไรบางอย่าง? 1762 01:19:40,330 --> 01:19:41,080 >> GABE: [ไม่ได้ยิน] 1763 01:19:41,080 --> 01:19:42,485 Davin: ใช่ 1764 01:19:42,485 --> 01:19:45,426 >> ผู้ชม: หลีกเลี่ยงการ onload ดังนั้น การกำหนดปุ่มค้นหาตัวแปร 1765 01:19:45,426 --> 01:19:49,930 โดยบอกเพียง document.getElementById ปุ่มค้นหาจุด [ไม่ได้ยิน] 1766 01:19:49,930 --> 01:19:52,320 >> Davin: แน่นอน แต่แล้ว สายของคุณเพิ่งได้รับมาก 1767 01:19:52,320 --> 01:19:55,553 ตรงนี้จึงเป็นเพียงการ ทำให้มันง่ายขึ้นสำหรับคุณใช่ 1768 01:19:55,553 --> 01:19:56,053 ใช่? 1769 01:19:56,053 --> 01:19:57,886 >> ผู้ชม: Where did เรา สร้าง window.onload? 1770 01:19:57,886 --> 01:19:58,951 หรือ document.ready? 1771 01:19:58,951 --> 01:20:00,590 >> Davin: ใช่มี 1772 01:20:00,590 --> 01:20:02,094 ใช่มีผมตรวจสอบ 1773 01:20:02,094 --> 01:20:03,710 >> GABE: ไม่ได้สำหรับพวกเขาจะดูแลเกี่ยวกับ 1774 01:20:03,710 --> 01:20:06,970 >> Davin: ตกลงดังนั้นฉันจะ ที่จะบอกคุณอยู่แล้ว 1775 01:20:06,970 --> 01:20:11,005 ดังนั้นโดยทั่วไปเพียงในทั่วไปดังนั้น window.onload รอจนกระทั่ง DOM ของคุณทั้งหมด 1776 01:20:11,005 --> 01:20:12,180 HTML, คุณโหลด 1777 01:20:12,180 --> 01:20:13,513 จะรอจนกว่าจะโหลดภาพของคุณ 1778 01:20:13,513 --> 01:20:14,930 จะรอจนกว่าจะโหลดทุกอย่าง 1779 01:20:14,930 --> 01:20:18,410 document.ready ก็แค่ รอจนกระทั่งโหลด DOM ของคุณ 1780 01:20:18,410 --> 01:20:22,190 เมื่อ HTML คือทั้งหมดที่มีครั้งเดียว DOM ของคุณจะมีเริ่มทำงาน 1781 01:20:22,190 --> 01:20:23,400 นั่นคือความแตกต่างเท่านั้น 1782 01:20:23,400 --> 01:20:24,700 >> GABE: กาสติด่วนที่นี่ 1783 01:20:24,700 --> 01:20:29,060 ดังนั้นนี่สามารถมองเห็นชนิดของ เช่นบรรทัดของรหัสใช่มั้ย? 1784 01:20:29,060 --> 01:20:33,600 เพราะมัน window.onload เท่ากับพวงของสิ่งที่ 1785 01:20:33,600 --> 01:20:39,030 เมื่อใช้งาน JavaScript อ่านนี้จริงหรือ เท็จ, ฟังก์ชั่นที่ได้รับการดำเนินการ 1786 01:20:39,030 --> 01:20:40,020 เท็จ 1787 01:20:40,020 --> 01:20:40,920 OK? 1788 01:20:40,920 --> 01:20:44,470 จะเกิดอะไรขึ้นที่นี่คุณเพียงแค่ผ่าน ฟังก์ชั่นนี้เป็นฟังก์ชั่นที่ไม่ระบุชื่อ 1789 01:20:44,470 --> 01:20:45,300 เพื่อ window.onload 1790 01:20:45,300 --> 01:20:48,480 และเมื่อมันเป็นไป ที่จริงได้รับการดำเนินการ? 1791 01:20:48,480 --> 01:20:49,600 เมื่อโหลดหน้าต่าง 1792 01:20:49,600 --> 01:20:50,420 นั่นเป็นเหตุการณ์ 1793 01:20:50,420 --> 01:20:52,460 นั่นคือ Jus สิ่งทีเรา พูดคุยเกี่ยวกับก่อนหน้านี้ใช่มั้ย? 1794 01:20:52,460 --> 01:20:54,580 ดังนั้นเมื่อมีเหตุการณ์เกิดขึ้น ฟังก์ชั่นที่เกิดขึ้น 1795 01:20:54,580 --> 01:20:55,746 สิ่งเดียวกันกับ onclick 1796 01:20:55,746 --> 01:20:59,510 1797 01:20:59,510 --> 01:21:03,130 >> Davin: OK เพื่อให้ใครบางคนเอา ห่าง document.ready 1798 01:21:03,130 --> 01:21:04,698 แต่นี้จะเป็นมันเหมือนกับที่แน่นอน 1799 01:21:04,698 --> 01:21:06,864 ผู้ชม: เครื่องหมายดอลลาร์, ที่เป็น document.ready 1800 01:21:06,864 --> 01:21:07,710 นั่นเป็นทางลัด 1801 01:21:07,710 --> 01:21:08,501 >> Davin: โอ้ว่าคืออะไร? 1802 01:21:08,501 --> 01:21:10,880 1803 01:21:10,880 --> 01:21:15,500 ตกลงดังนั้นวิธีการนี​​้ document.ready ทางลัด 1804 01:21:15,500 --> 01:21:19,660 แต่ตอนนี้เป็นเช่นเดียวกับ window.onload ยกเว้นที่แตกต่างกันเล็กน้อย 1805 01:21:19,660 --> 01:21:20,680 ผมบอกคุณเกี่ยวกับ 1806 01:21:20,680 --> 01:21:21,870 และนี่คือ jQuery 1807 01:21:21,870 --> 01:21:25,190 ดังนั้นนี่คือเดียวกันแน่นอน thing-- นี้เป็น JavaScript 1808 01:21:25,190 --> 01:21:29,500 นี้ just-- บางคนคิดว่ามัน เป็นน้ำหนักเบามากขึ้นรุ่นเงา 1809 01:21:29,500 --> 01:21:32,370 ที่มีจำนวนมากของการทำงาน ที่คุณอาจจะใช้ 1810 01:21:32,370 --> 01:21:34,500 ดังนั้นนี้ไม่สิ่งเดียวที่แน่นอน 1811 01:21:34,500 --> 01:21:37,110 >> ดังนั้นสิ่งที่ชนิดของการชี้ให้เห็น 1812 01:21:37,110 --> 01:21:40,364 ดังนั้นในตัวอย่างอื่น ๆ ที่เรา มี document.getElementById, 1813 01:21:40,364 --> 01:21:42,280 ดังนั้นเราจึงนานนี้ สตริงที่จะได้รับ 1814 01:21:42,280 --> 01:21:44,290 องค์ประกอบโดยสิ่งที่ ID ก็มี 1815 01:21:44,290 --> 01:21:46,470 นั่นคือแทนที่ด้วยสายนี้ที่นี่ 1816 01:21:46,470 --> 01:21:50,860 ดังนั้นคุณจะเห็นเครื่องหมายดอลลาร์, แล้วคุณจะเห็นอ้าง hashtag 1817 01:21:50,860 --> 01:21:52,370 hashtag อยู่เสมอเลือก 1818 01:21:52,370 --> 01:21:54,730 มันบอกว่าตกลงนี้จะทำอย่างไรที่มี ID 1819 01:21:54,730 --> 01:21:56,120 อะไรคือตัวเลือกสำหรับการเรียน? 1820 01:21:56,120 --> 01:21:57,190 >> ผู้ชม: Dot 1821 01:21:57,190 --> 01:21:57,960 >> Davin: Dot ขวา 1822 01:21:57,960 --> 01:22:01,950 หากคุณกำลังจะ เลือกแท็กมันคืออะไร? 1823 01:22:01,950 --> 01:22:03,310 มันเป็นเพียงแค่แท็กว่า 1824 01:22:03,310 --> 01:22:05,560 และคุณสามารถใช้ที่นี่เป็นอย่างดี 1825 01:22:05,560 --> 01:22:08,560 >> GABE: และโดยแท็กเราหมายถึงเช่น div เช่นหรือหัว 1826 01:22:08,560 --> 01:22:11,500 >> Davin: ร่างกายหรือหรือ P หรือ อะไรอย่างนั้นใช่ 1827 01:22:11,500 --> 01:22:14,390 ดังนั้นที่นี่ตกลงแทนที่จะพูดว่า document.getElementById, 1828 01:22:14,390 --> 01:22:16,500 นี้เป็นเพียงสิ่งเดียวที่แน่นอน 1829 01:22:16,500 --> 01:22:17,990 เพียงใน jQuery ก็สั้นลง 1830 01:22:17,990 --> 01:22:19,860 ดังนั้นจึงเป็นที่เรียบง่าย 1831 01:22:19,860 --> 01:22:23,420 ดังนั้นแล้วไม่มาก onclick เพียงแค่คลิก 1832 01:22:23,420 --> 01:22:26,320 ฟังก์ชั่น jQuery เรียกฟังก์ชั่นนี้ 1833 01:22:26,320 --> 01:22:27,580 การแจ้งเตือนเป็นที่แน่นอนเดียวกัน 1834 01:22:27,580 --> 01:22:29,452 ดังนั้นจึงเป็นนิด ๆ หน่อย ๆ ที่มีขนาดเล็กหรือนิด ๆ หน่อย ๆ 1835 01:22:29,452 --> 01:22:32,410 สั้นกว่าคน bit-- เล็ก ๆ น้อย ๆ คิดว่า มันเป็นเรื่องง่ายขึ้นเล็กน้อยที่จะเขียนออกมา 1836 01:22:32,410 --> 01:22:34,600 นิด ๆ หน่อย ๆ ง่ายต่อการเข้าใจ 1837 01:22:34,600 --> 01:22:35,640 แต่นี่เป็น jQuery 1838 01:22:35,640 --> 01:22:37,887 ผู้คนจำนวนมากได้รับน้อย บิตสับสนและกังวล 1839 01:22:37,887 --> 01:22:40,220 และพวกเขาคิดว่าตกลง jQuery แตกต่างจากการใช้งาน JavaScript 1840 01:22:40,220 --> 01:22:42,136 ฉันต้องจำเ​​หล่านี้ สองสิ่งที่แตกต่างกัน 1841 01:22:42,136 --> 01:22:42,740 มันไม่ใช่ 1842 01:22:42,740 --> 01:22:45,315 ฉันหมายความว่ามันเป็นไวยากรณ์ที่แตกต่างกัน 1843 01:22:45,315 --> 01:22:46,970 แต่ jQuery เป็น JavaScript 1844 01:22:46,970 --> 01:22:50,050 มันเป็นเพียงแค่ดูเหมือน รุ่นที่ดีกว่าที่ 1845 01:22:50,050 --> 01:22:51,967 อาจจะง่ายต่อการ เข้าใจว่าคนใช้ 1846 01:22:51,967 --> 01:22:53,716 GABE: ใช่จะเป็น ซื่อสัตย์ที่เครื่องหมายดอลลาร์ 1847 01:22:53,716 --> 01:22:57,240 ที่คุณเห็นใน jQuery ที่เพียง ชื่อของฟังก์ชั่นที่กำหนด jQuery 1848 01:22:57,240 --> 01:22:58,614 แต่ไม่ได้มีอะไรเป็นพิเศษ 1849 01:22:58,614 --> 01:23:03,140 มันเป็นเพียงแค่ชื่อของฟังก์ชั่น เช่นเดียวกับที่คุณสามารถกำหนดเครื่องหมายดอลลาร์ 1850 01:23:03,140 --> 01:23:05,670 >> Davin: ใช่เพื่อพูดคุยเกี่ยวกับเรื่องนี้ 1851 01:23:05,670 --> 01:23:06,680 บางสิ่งที่มีประโยชน์ 1852 01:23:06,680 --> 01:23:10,414 ผมมองย้อนกลับไปที่เก่าแบบทดสอบ 1853 01:23:10,414 --> 01:23:13,080 ในแบบทดสอบคู่ที่ผ่านมาพวกเขาได้ มีการใช้สิ่งเช่นนี้ 1854 01:23:13,080 --> 01:23:15,230 document.ready ดังนั้น ให้แน่ใจว่าทุกอย่าง 1855 01:23:15,230 --> 01:23:17,410 โหลดก่อนที่จะเริ่มทำสิ่งที่ 1856 01:23:17,410 --> 01:23:20,120 เลือกหมายเลขหรือเลือก ชั้นก็ต้องการเพียงแค่ 1857 01:23:20,120 --> 01:23:24,020 ได้รับการเสนอราคาดอทชั้นบางคำพูดตอนท้าย 1858 01:23:24,020 --> 01:23:26,580 ส่งดังนั้นหากคุณ กรอกแบบฟอร์มและโทร 1859 01:23:26,580 --> 01:23:28,830 ฟังก์ชั่นนี้หลังจากที่รูปแบบส่ง 1860 01:23:28,830 --> 01:23:34,210 มูลค่าจึงขอบอกว่าผมมีรูปแบบ ส่งเช่นชื่อผู้ใช้อีเมล 1861 01:23:34,210 --> 01:23:34,950 อะไรก็ตาม 1862 01:23:34,950 --> 01:23:36,010 ผมมีกล่องข้อความ 1863 01:23:36,010 --> 01:23:37,670 ดังนั้นฉันพิมพ์ลงในกล่องข้อความว่า 1864 01:23:37,670 --> 01:23:42,170 ดีถ้าคุณต้องการที่จะได้รับค่า ออกจากกล่องข้อความที่คุณใช้ Val จุด 1865 01:23:42,170 --> 01:23:44,050 แล้วลงที่นี่ HTML คือจุดเดียวกัน 1866 01:23:44,050 --> 01:23:47,710 เป็นเหมือนจุดเอกสาร GetElementByID จุด innerHTML 1867 01:23:47,710 --> 01:23:50,890 เพื่อที่จะกลับมา คุณ HTML จาก ID ที่ 1868 01:23:50,890 --> 01:23:55,080 ที่นี่คุณเพียงแค่ใช้บางส่วน ประชาชนหรือสิ่งที่จุด HTML 1869 01:23:55,080 --> 01:23:56,930 ที่จะได้รับ HTML จากองค์ประกอบที่ 1870 01:23:56,930 --> 01:24:00,130 ถ้าคุณต้องการที่จะเปลี่ยนแปลงแล้วว่า HTML, คุณสามารถผ่านมันเป็นสิ่งที่ 1871 01:24:00,130 --> 01:24:05,600 ดังนั้นคุณจึงต้องการเป็นเช่น HTML จุดแล้ว ภายใน, คำพูด, HTML ใหม่หรือบางสิ่งบางอย่าง 1872 01:24:05,600 --> 01:24:07,490 >> GABE: OK เพื่อ AJAX 1873 01:24:07,490 --> 01:24:10,347 ผมชอบที่จะเข้าใจ AJAX ดีจริงๆ 1874 01:24:10,347 --> 01:24:12,430 ดังนั้นผมจึงอยากให้พวกคุณไป เข้าใจ AJAX ดีจริงๆ 1875 01:24:12,430 --> 01:24:14,221 เพราะถ้าคุณทำ คุณจะสวยมาก 1876 01:24:14,221 --> 01:24:16,810 ที่จะเข้าใจทุกอย่างที่ จะทำอย่างไรกับ HTTP, PHP, 1877 01:24:16,810 --> 01:24:21,080 JavaScript เพราะมันทั้งหมด มาร่วมกันในการ AJAX 1878 01:24:21,080 --> 01:24:25,130 AJAX ไม่ใช่ภาษา 1879 01:24:25,130 --> 01:24:27,000 AJAX เป็นเทคนิค 1880 01:24:27,000 --> 01:24:31,690 และใช้จำนวนมากของเครื่องมือที่แตกต่างกัน 1881 01:24:31,690 --> 01:24:35,090 AJAX ย่อมาจาก Asynchronous JavaScript XML 1882 01:24:35,090 --> 01:24:36,730 ดังนั้นวิธีการที่ภาษาข้อมูล 1883 01:24:36,730 --> 01:24:40,610 >> ดังนั้นภาษาหลักที่เราใช้ ใน AJAX จะเรียกทุกอย่าง 1884 01:24:40,610 --> 01:24:42,830 และจัดการทุกอย่าง ภายหลังเป็น JavaScript 1885 01:24:42,830 --> 01:24:45,160 นั่นเป็นเหตุผลที่มันเกี่ยวข้อง ใกล้กับ JavaScript 1886 01:24:45,160 --> 01:24:49,810 และจากนั้นไม่ตรงกันคือ เพราะเราไม่ได้ทำมัน 1887 01:24:49,810 --> 01:24:51,980 ทั้งหมดในครั้งเดียวเมื่อเรากำลังโหลดหน้าเว็บ 1888 01:24:51,980 --> 01:24:57,190 นี่คือสิ่งที่เราสามารถทำได้ ทำในสิ่งที่ชนิดของในแบบคู่ขนาน 1889 01:24:57,190 --> 01:24:59,725 ความคิดหลักที่อยู่เบื้องหลัง AJAX คือการที่คุณต้องการ 1890 01:24:59,725 --> 01:25:02,170 ก็จะได้รับข้อมูลบางอย่าง 1891 01:25:02,170 --> 01:25:06,450 ตัวอย่างเช่นเมื่อคุณกำลังพิมพ์ใหม่ ชื่อผู้ใช้เมื่อคุณลงทะเบียนชื่อผู้ใช้ 1892 01:25:06,450 --> 01:25:08,520 ชื่อผู้ใช้ของฉันคือ abc123 1893 01:25:08,520 --> 01:25:11,671 และจากนั้นในตอนท้ายของ รูปแบบที่คุณต้องคลิก Submit 1894 01:25:11,671 --> 01:25:14,420 และมันจะต้องไปยังเซิร์ฟเวอร์ แล้วตรวจสอบว่าในฐานข้อมูล 1895 01:25:14,420 --> 01:25:15,594 abc123 มีอยู่แล้ว 1896 01:25:15,594 --> 01:25:18,510 และถ้ามันมีอยู่แล้วก็กล่าวว่า ชื่อผู้ใช้อยู่แล้วในฐานข้อมูล 1897 01:25:18,510 --> 01:25:21,010 และพวกเขาคุณจะต้องกรอก แบบฟอร์มทั้งหมดอีกครั้ง 1898 01:25:21,010 --> 01:25:23,110 และมันก็เป็นจริงๆดีจริงๆ 1899 01:25:23,110 --> 01:25:25,440 >> และแล้วคนพูดว่า ตกลงว่าทำไมเราไม่สามารถเพียงแค่ 1900 01:25:25,440 --> 01:25:29,560 ทำคำขอ HTTP ขนาดเล็กที่จะเพียงแค่ตรวจสอบ เพื่อดูว่าผู้ใช้รายนี้อยู่ในฐานข้อมูล 1901 01:25:29,560 --> 01:25:32,080 ก่อนที่ผู้ใช้จะต้อง ส่งแบบฟอร์มทั้งหมด? 1902 01:25:32,080 --> 01:25:36,350 ดังนั้นสำหรับตัวอย่างเช่นเมื่อ ผู้ใช้เสร็จสิ้นการพิมพ์ abc123, 1903 01:25:36,350 --> 01:25:39,660 ขอเพียงแค่ไปที่เซิร์ฟเวอร์เล็ก ๆ น้อย ๆ บิตและเพิ่งได้รับจริงหรือเท็จ 1904 01:25:39,660 --> 01:25:43,080 จากเซิร์ฟเวอร์เพื่อดูว่า ที่เป็นชื่อผู้ใช้ที่ถูกต้องหรือไม่ 1905 01:25:43,080 --> 01:25:49,250 ตกลงเพื่อให้เป็นหนึ่งในหลัก ใช้ของ AJAX ในปัจจุบันยังคง 1906 01:25:49,250 --> 01:25:52,130 >> Davin: ดังนั้นจริงอย่างรวดเร็วใน โทรอาแจ็กซ์ใน jQuery, 1907 01:25:52,130 --> 01:25:54,770 คุณอาจจะมีความหมายว่าคุณ ต้องการให้เป็นจังหวะ 1908 01:25:54,770 --> 01:25:56,330 คุณไม่ควรทำเช่นนี้ 1909 01:25:56,330 --> 01:25:57,640 แต่คุณสามารถทำเช่นนั้นได้ 1910 01:25:57,640 --> 01:25:59,277 และถ้าคุณไม่ว่าอะไรจะเกิดขึ้น? 1911 01:25:59,277 --> 01:26:01,610 ดีตัวอย่างเช่นเมื่อคุณอยู่ ได้รับข่าวหรืออะไรก็ตาม 1912 01:26:01,610 --> 01:26:05,464 เบราว์เซอร์ของคุณเป็นเพียงจะรอ จนกว่าที่โทรทั้งหมดจะเสร็จสมบูรณ์ 1913 01:26:05,464 --> 01:26:08,130 แทนที่จะปล่อยให้คุณทำอื่น ๆ สิ่งที่ถูกต้องหลังจากที่คุณคลิก 1914 01:26:08,130 --> 01:26:14,560 1915 01:26:14,560 --> 01:26:17,115 >> GABE: มันไม่ได้ผ่านอีกต่อไป 1916 01:26:17,115 --> 01:26:19,681 พระเจ้าช่วย 1917 01:26:19,681 --> 01:26:20,180 ขออภัย! 1918 01:26:20,180 --> 01:26:22,810 1919 01:26:22,810 --> 01:26:23,601 Yup 1920 01:26:23,601 --> 01:26:25,350 "ในอดีตที่ผ่านมา ลูกค้าที่จำเป็นในการร้องขอ 1921 01:26:25,350 --> 01:26:26,840 เนื้อหาทั้งหมดของเว็บไซต์. " 1922 01:26:26,840 --> 01:26:28,210 นั่นคือสิ่งที่ผมพูด 1923 01:26:28,210 --> 01:26:30,070 มันช่วยให้เราสามารถส่ง แถมเพิ่มเติมหรือ POST 1924 01:26:30,070 --> 01:26:32,140 โดยไม่ต้องมีการร้องขอ เพื่อโหลดเบราว์เซอร์ของเรา 1925 01:26:32,140 --> 01:26:34,806 ดังนั้นในตอนท้ายของวันที่เราไม่ จริงการร้องขอ HTTP 1926 01:26:34,806 --> 01:26:35,740 ที่นี่โดยใช้ JavaScript 1927 01:26:35,740 --> 01:26:39,700 เพราะก่อนที่เราจะนำมาใช้งาน JavaScript ที่จะเปลี่ยน HTML ที่แล้วมา 1928 01:26:39,700 --> 01:26:43,110 และตอนนี้เราสามารถใช้ในการติดต่อ กับเว็บเซิร์ฟเวอร์ได้เป็นอย่างดี 1929 01:26:43,110 --> 01:26:46,140 วิธีนี้เกิดขึ้น คือเรามีลูกค้า 1930 01:26:46,140 --> 01:26:47,340 Davin เป็นลูกค้า 1931 01:26:47,340 --> 01:26:50,797 และเขามีทั้งหมด JavaScript ทำงานเนื่องจาก HTML ที่เป็นใบ้ 1932 01:26:50,797 --> 01:26:51,630 JavaScript เป็นสมาร์ท 1933 01:26:51,630 --> 01:26:54,690 ดังนั้น Davin Davin มีสมาร์ทของเขา ส่วนหนึ่งและเป็นส่วนหนึ่งของเขาเป็นใบ้ 1934 01:26:54,690 --> 01:26:57,590 เขาจะใช้เป็นส่วนหนึ่งของเขาตอนนี้สมาร์ท 1935 01:26:57,590 --> 01:27:00,860 เขาจะใช้ JavaScript จะขอยกตัวอย่างเช่น 1936 01:27:00,860 --> 01:27:04,340 ไม่ว่าจะอยู่ใน abc123 ฐานข้อมูลหรือไม่ 1937 01:27:04,340 --> 01:27:08,450 >> ดังนั้น Davin กรุณาคุณเพียงแค่ ส่งการร้องขอ HTTP 1938 01:27:08,450 --> 01:27:09,197 ขอบคุณ 1939 01:27:09,197 --> 01:27:10,530 ดังนั้นเขาก็ส่งคำขอ HTTP 1940 01:27:10,530 --> 01:27:11,270 คุณเห็นว่า? 1941 01:27:11,270 --> 01:27:14,700 และนี่เป็นเพียงวิธีเดียว ที่ร้องขอ HTTP ใด ๆ จะถูกส่ง 1942 01:27:14,700 --> 01:27:16,830 เบราว์เซอร์ Google Chrome หรือสิ่งที่เป็น 1943 01:27:16,830 --> 01:27:19,570 จะเห็นว่า Davin ของ พยายามที่จะส่งคำขอ HTTP, 1944 01:27:19,570 --> 01:27:20,930 จะช่วยให้ HM นิด ๆ หน่อย ๆ 1945 01:27:20,930 --> 01:27:23,950 และที่จะไป ตลอดทางไปยังเซิร์ฟเวอร์ 1946 01:27:23,950 --> 01:27:27,370 ตอนนี้เซิร์ฟเวอร์เป็นไปได้ PHP ที่นี่หรือภาษาอื่น ๆ 1947 01:27:27,370 --> 01:27:29,990 เช่นเดียวกับในการร้องขอ HTTP ปกติ 1948 01:27:29,990 --> 01:27:31,950 มันสวยมากขอ HTTP ปกติ 1949 01:27:31,950 --> 01:27:33,658 >> แล้วเซิร์ฟเวอร์ จะไปบอกว่าโอเค 1950 01:27:33,658 --> 01:27:37,270 Davin อยากให้ผมตรวจสอบว่า abc123 นี้อยู่ในฐานข้อมูล 1951 01:27:37,270 --> 01:27:38,310 ไปพูดคุยกับรุ่น 1952 01:27:38,310 --> 01:27:41,310 รูปแบบการบอกว่ามันไม่ได้ abc123 เป็นชื่อผู้ใช้ที่ดี 1953 01:27:41,310 --> 01:27:47,940 แล้วเว็บเซิร์ฟเวอร์เป็นไป ใช้ PHP ที่จะทำให้รูปแบบของไฟล์บาง 1954 01:27:47,940 --> 01:27:52,280 มันอาจจะเป็นเพียงแค่ตัวอักษรไฟล์ ที่ประกอบด้วย "ใช่" ในนั้นหรือ "ไม่มี 1955 01:27:52,280 --> 01:27:53,315 หรือสิ่งที่ต้องการ 1956 01:27:53,315 --> 01:27:54,190 มันอาจจะเป็นไฟล์ใด ๆ 1957 01:27:54,190 --> 01:27:57,080 >> มันอาจจะเป็นเหมือนฉันกำลังจะไป ส่ง Davin ภาพของเป็ด 1958 01:27:57,080 --> 01:28:01,200 ถ้ามันอยู่ในฐานข้อมูลและ ส่งภาพของหนูแฮมสเตอร์ 1959 01:28:01,200 --> 01:28:02,420 ถ้ามันไม่ได้อยู่ในฐานข้อมูล 1960 01:28:02,420 --> 01:28:04,294 ที่จะเป็นชนิดของ ใบ้ แต่มันจะทำงาน 1961 01:28:04,294 --> 01:28:07,030 ตกลงดังนั้นฉันส่งเป็ดเพื่อ Davin 1962 01:28:07,030 --> 01:28:08,150 Davin มีเป็ด 1963 01:28:08,150 --> 01:28:13,330 และตอนนี้ที่จะไป ที่จะจัดการกับเป็ด? 1964 01:28:13,330 --> 01:28:16,390 Davin ส่วนของสมาร์ทอีกครั้ง เพื่อให้ใช้งาน JavaScript ใช่มั้ย? 1965 01:28:16,390 --> 01:28:18,620 JavaScript ส่ง ขอและ JavaScript 1966 01:28:18,620 --> 01:28:22,300 กำลังจะได้รับการร้องขอ และตีความมันในรูปแบบบาง 1967 01:28:22,300 --> 01:28:26,630 >> และในแง่นี้ก็จะ บอกว่าโอเคถ้าเป็ดแล้วฉันดี 1968 01:28:26,630 --> 01:28:30,770 ถ้าหนูแฮมสเตอร์แล้วฉันจะ ที่จะบอกว่าไม่มีชื่อผู้ใช้แล้ว 1969 01:28:30,770 --> 01:28:31,970 ที่มีอยู่ในฐานข้อมูล 1970 01:28:31,970 --> 01:28:33,845 แต่โดยปกติคุณไม่ได้ จะส่งเป็ด 1971 01:28:33,845 --> 01:28:36,740 คุณกำลังจะไปส่ง บางสิ่งบางอย่างเล็กน้อยอย่างชาญฉลาด 1972 01:28:36,740 --> 01:28:40,320 และสิ่งที่เราใช้เป็น XML 1973 01:28:40,320 --> 01:28:42,690 และเมื่อเร็ว ๆ นี้เราจะใช้ JSON 1974 01:28:42,690 --> 01:28:45,629 JSON เป็นเพียง JavaScript Object สัญลักษณ์ซึ่ง 1975 01:28:45,629 --> 01:28:47,670 เป็นพื้นคุณจะได้รับ ทั้งวัตถุ JavaScript 1976 01:28:47,670 --> 01:28:50,820 และคุณใส่ไว้ในไฟล์เพียงชอบ ว่าวัตถุ CS50 ที่พวกคุณเห็น 1977 01:28:50,820 --> 01:28:53,090 คุณใส่ไว้ในแฟ้มและ คุณส่งมันไปยัง Davin 1978 01:28:53,090 --> 01:28:55,850 >> ดังนั้นในกรณีนี้ผมจะ ทำให้วัตถุ JavaScript 1979 01:28:55,850 --> 01:28:59,570 และเพียงแค่บอกว่าผู้ใช้มีอยู่ใช่ 1980 01:28:59,570 --> 01:29:01,630 หรือผู้ใช้ที่มีอยู่ไม่ 1981 01:29:01,630 --> 01:29:02,810 และส่งกลับไปให้เขา 1982 01:29:02,810 --> 01:29:03,830 และทำไม JSON? 1983 01:29:03,830 --> 01:29:07,330 เพราะคนที่ ผู้ที่ได้รับนี้ 1984 01:29:07,330 --> 01:29:10,030 จะใช้ JavaScript ที่จะจัดการกับการตอบสนอง 1985 01:29:10,030 --> 01:29:14,970 และ JavaScript ได้ผลดีเพราะ ก็เรียกว่าสัญกรณ์วัตถุ JavaScript 1986 01:29:14,970 --> 01:29:15,470 ใช่มั้ย? 1987 01:29:15,470 --> 01:29:19,660 ดังนั้นเขาก็สามารถเรียกฟังก์ชั่นและได้รับ วัตถุนี้ที่ดีจากการตอบสนอง 1988 01:29:19,660 --> 01:29:22,890 แล้วเขาจะทราบว่า ผู้ใช้ที่อยู่ในฐานข้อมูลหรือไม่ 1989 01:29:22,890 --> 01:29:25,230 >> ดังนั้นคุณจะเห็นทั้งหมดของมันมา ร่วมกันในเว็บเซิร์ฟเวอร์ 1990 01:29:25,230 --> 01:29:28,450 แล้วมีหนึ่ง HTTP การร้องขอ และการตอบสนองของ HTTP หนึ่งและทุกอย่าง 1991 01:29:28,450 --> 01:29:30,600 เพื่อให้แน่ใจว่าพวกคุณ เข้าใจในเรื่องนี้โทร AJAX 1992 01:29:30,600 --> 01:29:37,260 เพราะจะช่วยให้คุณเข้าใจทั้งหมด แนวความคิดที่เรากำลังพูดถึง 1993 01:29:37,260 --> 01:29:40,260 >> ดังนั้นนี่คือตัวอย่าง ของ AJAX กับ jQuery 1994 01:29:40,260 --> 01:29:42,130 และที่นี่เราจะทำอย่างไรกับรับ JSON 1995 01:29:42,130 --> 01:29:45,660 ดังนั้นเราไม่ได้พยายามที่จะได้รับ ภาพของแมวที่นี่หรือเป็ด 1996 01:29:45,660 --> 01:29:48,110 เรากำลังพยายามที่จะได้รับไฟล์ JSON 1997 01:29:48,110 --> 01:29:51,184 แล้วเราก็รอจนกว่า มันทำทำจุด 1998 01:29:51,184 --> 01:29:52,850 นั่นหมายความว่าผมกำลังรอการตอบสนอง 1999 01:29:52,850 --> 01:29:54,180 มันอาจจะใช้เวลาสักครู่ 2000 01:29:54,180 --> 01:29:56,360 แล้วคุณจะเห็นการโหลดน้อย 2001 01:29:56,360 --> 01:29:59,340 ถ้าคุณต้องการที่จะทำเช่นนั้นในเว็บไซต์ของคุณ 2002 01:29:59,340 --> 01:30:01,440 ดังนั้น dot ทำและแล้วสิ่งที่ ที่เกิดขึ้นเมื่อมันทำ? 2003 01:30:01,440 --> 01:30:04,040 คุณผ่านในที่ไม่ระบุชื่อ ฟังก์ชั่นเช่นเดียวกับที่เราเห็นก่อน 2004 01:30:04,040 --> 01:30:07,800 เพราะทำคือเหตุการณ์เพียง เช่นการคลิกเมาส์หรืออะไรก็ตาม 2005 01:30:07,800 --> 01:30:08,710 สำหรับ jQuery 2006 01:30:08,710 --> 01:30:13,710 ดังนั้นคุณผ่านในฟังก์ชั่นนี้ด้วย ข้อมูลข้อความสถานะและ jqXHR 2007 01:30:13,710 --> 01:30:15,790 และโดยทั่วไปว่าเป็น ตัวแปรเพียงบางส่วน 2008 01:30:15,790 --> 01:30:22,160 ที่คุณสามารถใช้ในภายหลังจะมี สถานะของการร้องขอ HTTP, 2009 01:30:22,160 --> 01:30:24,470 ข้อมูลที่ว่ามันจะ ที่จะส่งกลับมาให้คุณ 2010 01:30:24,470 --> 01:30:28,740 ดังนั้นแล้วท่านในภายหลังสามารถตีความว่า และทำสิ่งที่มีความหมายกับมัน 2011 01:30:28,740 --> 01:30:30,240 และถ้ามันล้มเหลวเมื่อมันอาจล้มเหลว? 2012 01:30:30,240 --> 01:30:33,780 ดีเมื่อร้องขอ HTTP ให้ คุณ 500 หรือสิ่งที่ต้องการ 2013 01:30:33,780 --> 01:30:37,420 จากนั้นมันจะบอกคุณ สถานะสิ่งที่ชนิดของความล้มเหลวที่เป็น 2014 01:30:37,420 --> 01:30:38,420 และทุกประเภทของสิ่ง 2015 01:30:38,420 --> 01:30:40,630 คุณต้องให้แน่ใจว่า ที่จะจัดการกับทั้งสองกรณี 2016 01:30:40,630 --> 01:30:42,770 มิฉะนั้นโปรแกรมไปบ้า 2017 01:30:42,770 --> 01:30:45,820 >> Davin: เพื่อใช่ตรงนี้เป็น สิ่งที่คุณเห็นบน P-ชุดสุดท้ายของคุณ 2018 01:30:45,820 --> 01:30:49,720 โทร AJAX ที่เกิดขึ้นจริงที่อยู่ในการรับ JSON 2019 01:30:49,720 --> 01:30:50,587 นั่นคือการเรียกร้อง 2020 01:30:50,587 --> 01:30:52,920 แล้วจุดทำก็เหมือน ตรวจสอบถ้ามันมีอะไรที่ประสบความสำเร็จ 2021 01:30:52,920 --> 01:30:55,620 ถ้าเป็นที่ประสบความสำเร็จที่คุณต้องการ จะทำอะไรกับข้อมูล 2022 01:30:55,620 --> 01:30:59,290 คุณจะได้รับกลับมาจากที่ ขอข้อมูล JSON 2023 01:30:59,290 --> 01:31:00,600 นั่นคือสิ่งที่คุณจะได้รับกลับมา 2024 01:31:00,600 --> 01:31:04,470 ดังนั้นถ้าคุณจำได้จาก P-ชุดของคุณ จำนวนมากของคุณเป็นเหมือนวงเล็บข้อมูลฉัน 2025 01:31:04,470 --> 01:31:06,302 หรืออะไรก็ตามที่เชื่อมโยงจุดหรือชื่อเรื่อง 2026 01:31:06,302 --> 01:31:08,260 สิ่งที่กลับมา จาก JSON ว่าสิ่งที่ 2027 01:31:08,260 --> 01:31:11,020 สาขาที่อยู่ในวัตถุ JSON ว่า นั่นคือสิ่งที่คุณได้รับกลับมา 2028 01:31:11,020 --> 01:31:12,394 ข้อมูลเป็นสิ่งที่คุณจะได้รับกลับมา 2029 01:31:12,394 --> 01:31:15,510 สถานะข้อความอะไรบางอย่างเพียงแค่ว่า ช่วยให้คุณรู้ว่าสิ่งที่เกิดขึ้น 2030 01:31:15,510 --> 01:31:20,570 แล้ว jqXHR ที่เพียง ขอ HTTP XML jQuery 2031 01:31:20,570 --> 01:31:21,990 นั่นเป็นเพียงเหมือนวัตถุ 2032 01:31:21,990 --> 01:31:23,932 และจากนั้นก็ล้มเหลวเช่นเดียวกับเกบกล่าวว่า 2033 01:31:23,932 --> 01:31:27,140 GABE: ในตัวอย่างเล็ก ๆ น้อย ๆ ของเรา abc123 เพียงเพื่อตรวจสอบว่าที่อยู่ในฐานข้อมูล 2034 01:31:27,140 --> 01:31:32,260 หรือไม่ข้อมูลจะเป็นสิ่งที่คุณ จะทำอย่างไรหากข้อมูลชื่อผู้ใช้จุดอยู่ 2035 01:31:32,260 --> 01:31:37,720 ซึ่งเป็นสิ่งที่ PHP ของคุณสร้างขึ้นสำหรับ คุณถ้าข้อมูลชื่อผู้ใช้จุดอยู่แล้ว 2036 01:31:37,720 --> 01:31:40,880 ผมจะแจ้งเตือนผู้ใช้ ชื่อที่มีอยู่แล้ว 2037 01:31:40,880 --> 01:31:44,300 อื่นฉันแค่จะให้ ผู้ดำเนินการกรอกแบบฟอร์ม 2038 01:31:44,300 --> 01:31:47,860 2039 01:31:47,860 --> 01:31:50,820 ตกลงการรักษาความปลอดภัยเย็น 2040 01:31:50,820 --> 01:31:52,060 >> Davin: ต้องการให้ฉันไป? 2041 01:31:52,060 --> 01:31:54,500 >> GABE: ผมชอบคนนี้ 2042 01:31:54,500 --> 01:31:57,680 ดังนั้นสิ่งที่มีลักษณะที่คุ้นเคย 2043 01:31:57,680 --> 01:31:59,750 เรากำลังทำเกือบ 2044 01:31:59,750 --> 01:32:02,670 ดังนั้นนี่เป็นเพียงตัวอย่าง พวกคุณเห็นในชั้นเรียน 2045 01:32:02,670 --> 01:32:04,860 คุณกำลังใช้ argv1 ที่นี่ 2046 01:32:04,860 --> 01:32:06,460 ที่ชอบอาร์กิวเมนต์บรรทัดคำสั่ง 2047 01:32:06,460 --> 01:32:09,270 และเรากำลังคัดลอก mem ว่า ลงในบัฟเฟอร์ขนาด 12 2048 01:32:09,270 --> 01:32:12,560 ปัญหาอะไรที่นี่? 2049 01:32:12,560 --> 01:32:13,660 หน่วยความจำล้น! 2050 01:32:13,660 --> 01:32:15,400 เพราะเรามีบัฟเฟอร์ขนาด 12 2051 01:32:15,400 --> 01:32:18,400 argv1 อาจมีขนาดของสองพันล้าน 2052 01:32:18,400 --> 01:32:19,960 เราไม่ได้ทำการตรวจสอบขอบเขตใด ๆ 2053 01:32:19,960 --> 01:32:24,970 ดังนั้นเราอาจจะคัดลอกหน่วยความจำมาก 2054 01:32:24,970 --> 01:32:28,630 และเราจะเป็นโดยเฉพาะอย่างยิ่ง ที่ไม่ดีเกี่ยวกับเรื่องนี้ 2055 01:32:28,630 --> 01:32:32,600 สิ่งที่เราจะทำที่ มากหมายถึงในกรณีนี้หรือไม่? 2056 01:32:32,600 --> 01:32:33,278 ใช่? 2057 01:32:33,278 --> 01:32:36,528 ผู้ชม: ส่วนหนึ่งของสิ่งที่สองพันล้าน มีรหัสปฏิบัติการที่ส่งกลับ 2058 01:32:36,528 --> 01:32:38,127 [ไม่ได้ยิน] 2059 01:32:38,127 --> 01:32:38,710 GABE: แน่นอน 2060 01:32:38,710 --> 01:32:41,110 นั่นคือชนิดของ สิ่งที่ผู้คนใช้ 2061 01:32:41,110 --> 01:32:43,344 การแหกคุก iPhone ตัวอย่างเช่น 2062 01:32:43,344 --> 01:32:44,260 ดังนั้นชนิดของสิ่งที่ 2063 01:32:44,260 --> 01:32:48,610 เพราะคุณก็สามารถทำให้อุปกรณ์ รันโค้ดที่คุณต้องการใด ๆ 2064 01:32:48,610 --> 01:32:50,247 การแก้ไขเพื่อให้การแก้ไขปัญหาเป็นเรื่องง่าย 2065 01:32:50,247 --> 01:32:51,330 เพียงแค่ตรวจสอบขอบเขต 2066 01:32:51,330 --> 01:32:53,455 คุณตรวจสอบ null เพราะ เรามักจะตรวจสอบ null 2067 01:32:53,455 --> 01:32:54,940 เมื่อเรากำลังติดต่อกับสตริง 2068 01:32:54,940 --> 01:32:57,840 แล้วคุณจะใช้ ความยาวสตริงก่อน 2069 01:32:57,840 --> 01:33:00,150 และถ้าสตริง ความยาวสตริงที่ถูกต้อง 2070 01:33:00,150 --> 01:33:03,700 ความยาวซึ่งเป็นภายใน 0 และ 12 แล้วเรากำลังดี 2071 01:33:03,700 --> 01:33:07,144 >> Davin: หากคุณไม่ได้ตรวจสอบ null รวดเร็วจริงสิ่งที่จะเกิดขึ้น? 2072 01:33:07,144 --> 01:33:07,810 มันจะ SEG ความผิด 2073 01:33:07,810 --> 01:33:10,850 มันจะทำไม SEG ผิด? 2074 01:33:10,850 --> 01:33:12,510 เพราะคุณกำลังเรียก strlen บน null 2075 01:33:12,510 --> 01:33:13,010 GABE: ใช่ 2076 01:33:13,010 --> 01:33:16,490 2077 01:33:16,490 --> 01:33:19,630 จริงหรือเท็จโดยใช้หนึ่ง รหัสผ่านที่เป็นความคิดที่ดี 2078 01:33:19,630 --> 01:33:20,430 >> ผู้ชม: เท็จ 2079 01:33:20,430 --> 01:33:21,150 >> GABE: เท็จ 2080 01:33:21,150 --> 01:33:23,870 ใช้รหัสผ่านที่จำนวนมากและขนาดใหญ่ที่มีความยาว 2081 01:33:23,870 --> 01:33:26,050 ไอคอนรูปกุญแจมั่นใจในความปลอดภัย 2082 01:33:26,050 --> 01:33:27,080 >> ผู้ชม: เท็จ 2083 01:33:27,080 --> 01:33:27,749 >> GABE: เท็จ 2084 01:33:27,749 --> 01:33:28,790 มันไม่ได้หมายความว่าอะไร 2085 01:33:28,790 --> 01:33:30,480 มันเป็นแค่ไอคอน 2086 01:33:30,480 --> 01:33:32,824 SSL ป้องกัน คนในการโจมตีกลาง 2087 01:33:32,824 --> 01:33:33,490 ผู้ชม: เท็จ 2088 01:33:33,490 --> 01:33:34,110 GABE: เท็จ 2089 01:33:34,110 --> 01:33:35,355 OK เพื่อให้ทุกคนที่เป็นเท็จ 2090 01:33:35,355 --> 01:33:38,324 2091 01:33:38,324 --> 01:33:39,490 ดี 2092 01:33:39,490 --> 01:33:40,220 [ไม่ได้ยิน] 2093 01:33:40,220 --> 01:33:42,500 ต้องการที่จะพูดคุยเกี่ยวกับเรื่องนี้? 2094 01:33:42,500 --> 01:33:43,259 เปิดของคุณ 2095 01:33:43,259 --> 01:33:45,050 Davin: ประเภทของการโจมตี คนที่อยู่ตรงกลาง 2096 01:33:45,050 --> 01:33:47,134 อะไรคนในการโจมตีกลาง? 2097 01:33:47,134 --> 01:33:48,050 ผู้ชม: [ไม่ได้ยิน] 2098 01:33:48,050 --> 01:33:51,437 2099 01:33:51,437 --> 01:33:54,020 Davin: ถ้าคุณส่ง HTTP คำขอของพวกเขาสามารถทำเช่นนี้ใช่มั้ย? 2100 01:33:54,020 --> 01:33:57,890 แต่ถ้าคุณกำลังส่ง HTTPS พวกเขา อาจจะไม่สามารถที่จะทำเช่นนี้ 2101 01:33:57,890 --> 01:33:59,952 ยังมีอีกหลายจุด พร้อมเชื่อมต่อของคุณ 2102 01:33:59,952 --> 01:34:00,660 คุณมีเราเตอร์ 2103 01:34:00,660 --> 01:34:01,746 คุณมีเซิร์ฟเวอร์ DNS 2104 01:34:01,746 --> 01:34:04,120 ถ้ามีคนสามารถที่จะทางร่างกาย ดูสิ่งที่คุณกำลังส่ง 2105 01:34:04,120 --> 01:34:06,140 ใครบางคนเพื่อให้สามารถที่จะ ได้รับจริงระหว่างคุณ 2106 01:34:06,140 --> 01:34:08,840 ไคลเอนต์และเซิร์ฟเวอร์และเป็น สามารถมองเห็นสิ่งที่คุณกำลังส่ง 2107 01:34:08,840 --> 01:34:10,298 นี้คือคนในการโจมตีกลาง 2108 01:34:10,298 --> 01:34:14,287 ดังนั้นจะเห็นสิ่งที่คุณกำลังพยายามที่จะได้รับจาก เซิร์ฟเวอร์หรือสามารถที่จะดูหน่อยแย่ลง 2109 01:34:14,287 --> 01:34:16,620 คุณอาจจะสามารถที่จะเห็น คุกกี้หรือสิ่งที่ต้องการ 2110 01:34:16,620 --> 01:34:19,290 >> ดังนั้นสำหรับตัวอย่างเช่นถ้า คุณไม่ได้ใช้ SSL เขา 2111 01:34:19,290 --> 01:34:21,900 อาจจะสามารถที่จะเห็น ID คุกกี้ของคุณ 2112 01:34:21,900 --> 01:34:25,460 และนี่คือสิ่งที่เรียกว่าหักหลังเซสชั่น เพราะเขาเห็นคุกกี้ ID ของคุณ 2113 01:34:25,460 --> 01:34:28,317 และจากนั้นเขาก็สามารถที่จะไปว่า เว็บไซต์และหลอกว่าเป็นคุณ 2114 01:34:28,317 --> 01:34:31,150 เพราะเพียงแค่ต้องการใน PHP จำ เมื่อเราเข้าสู่ระบบในสิ่งที่เราจะทำอย่างไร 2115 01:34:31,150 --> 01:34:33,340 เราตั้งรหัสเซสชันเท่ากับ ID 2116 01:34:33,340 --> 01:34:34,810 ดังนั้นที่ระบุถึงตัวคุณ 2117 01:34:34,810 --> 01:34:38,300 นั่นเป็นเหตุผลที่คุณสามารถดูผลงานของคุณ และไม่ใช่ทุกคนที่ผลงานของผู้อื่น 2118 01:34:38,300 --> 01:34:42,320 >> ดีถ้าฉันสามารถที่จะได้รับคุกกี้ที่ แล้วฉันจะเข้าสู่หน้าเว็บที่ 2119 01:34:42,320 --> 01:34:45,380 และจากนั้นผมก็สามารถเห็นข้อมูลของคุณ และเริ่มต้นการซื้อและขายสิ่ง 2120 01:34:45,380 --> 01:34:46,800 นั่นคือการหักหลังเซสชั่น 2121 01:34:46,800 --> 01:34:50,810 แต่คุณไม่ควรจะ to-- สามารถเพื่อให้คุณ สามารถใช้คนในการโจมตีกลาง 2122 01:34:50,810 --> 01:34:52,290 แม้ว่าพวกเขากำลังใช้ SSL 2123 01:34:52,290 --> 01:34:53,520 แต่คุณไม่ควรจะสามารถ 2124 01:34:53,520 --> 01:34:56,580 หากมีการใช้ SSL, คุณไม่สามารถจี้เซสชั่น 2125 01:34:56,580 --> 01:34:58,927 ทำไม? 2126 01:34:58,927 --> 01:35:01,135 เพราะทั้งหมดที่เข้ารหัส ใช่มั้ย? ถ้ามันเข้ารหัส 2127 01:35:01,135 --> 01:35:03,509 และฉันยังคนที่อยู่ใน ตรงกลางผมยังคงได้รับข้อมูลของคุณ 2128 01:35:03,509 --> 01:35:04,279 ที่ดี 2129 01:35:04,279 --> 01:35:05,070 แต่มันมีการเข้ารหัส 2130 01:35:05,070 --> 01:35:07,750 ดังนั้นผมจึงไม่สามารถใช้งานได้จริงๆ 2131 01:35:07,750 --> 01:35:09,840 ดังนั้นที่สอง 2132 01:35:09,840 --> 01:35:11,544 >> จริงอย่างรวดเร็ว, เว็บไซต์ข้ามปลอมแปลงคำขอ 2133 01:35:11,544 --> 01:35:13,960 นั่นเป็นเพียงว่ามีการเชื่อมโยง และการเชื่อมโยงที่ทำอะไรบางอย่าง 2134 01:35:13,960 --> 01:35:14,890 ที่คุณไม่คิดว่ามันควรจะทำอย่างไร 2135 01:35:14,890 --> 01:35:18,150 ดังนั้นสำหรับตัวอย่างเช่นหากการเชื่อมโยงเป็น จะไปซื้อหุ้นหรือขายหุ้น 2136 01:35:18,150 --> 01:35:19,360 และคุณไม่ทราบว่า 2137 01:35:19,360 --> 01:35:22,040 คุณคลิกที่ลิงค์ ส่งคำขอซื้อ 2138 01:35:22,040 --> 01:35:24,240 หรือขายสิ่งที่ คุณไม่ได้หมายความว่าจะทำอย่างไร 2139 01:35:24,240 --> 01:35:25,120 ที่ว่า 2140 01:35:25,120 --> 01:35:30,720 >> สคริปต์ข้ามไซต์ดังนั้นที่นี่ คุณผ่านในตัวแปรผ่าน Q, 2141 01:35:30,720 --> 01:35:33,510 แทนการส่งผ่านในบางชนิด ของมูลค่าอาจจะถามก็เหมือนชื่อ 2142 01:35:33,510 --> 01:35:36,560 ดังนั้นแทนที่จะผ่านเท่ากับ Q Davin หรือสิ่งที่ต้องการที่ 2143 01:35:36,560 --> 01:35:38,740 ถ้าคุณไม่ได้ใช้ภาษา HTML ตัวอักษรพิเศษถ้าคุณ 2144 01:35:38,740 --> 01:35:43,100 ไม่ได้หลบหนีนี้เพื่อให้แน่ใจว่าเป็น ตกลงแล้วฉันจะผ่านในแทน 2145 01:35:43,100 --> 01:35:46,910 ขอบอกว่าที่นี่ฉันพูด สิ่งพิมพ์หรือสิ่งที่ต้องการที่ 2146 01:35:46,910 --> 01:35:51,070 แล้วฉันจะผ่านในที่นี่โทรสคริปต์ 2147 01:35:51,070 --> 01:35:53,140 >> ดังนั้นแล้วแทน แค่ตัวแปร 2148 01:35:53,140 --> 01:35:54,960 ฉันก็จะรันการเรียกใช้สคริปต์นี้ 2149 01:35:54,960 --> 01:35:57,065 ดังนั้นภายในสคริปต์ที่ เรียกสิ่งที่จะทำอย่างไร 2150 01:35:57,065 --> 01:36:00,190 สถานที่ตั้งเอกสารจุดที่จะ เปลี่ยนสถานที่ของเอกสาร 2151 01:36:00,190 --> 01:36:02,290 ดังนั้นฉันจะเปลี่ยนเส้นทาง ไปที่อื่น 2152 01:36:02,290 --> 01:36:08,170 มันเรียกว่าคนเลวใน ตัวอย่างนี้ดีมาก 2153 01:36:08,170 --> 01:36:10,536 ไม่สามารถคิดของคำว่า 2154 01:36:10,536 --> 01:36:12,410 และแล้วสิ่งที่ยิ่ง เลวร้ายก็คือว่าฉันจะ 2155 01:36:12,410 --> 01:36:16,832 คุกกี้แล้วตั้งซึ่งเป็นบางส่วน ตัวแปรที่ฉันมีในเว็บไซต์นี้ 2156 01:36:16,832 --> 01:36:19,040 ฉันจะตั้งค่าเท่ากัน คุกกี้จุดเอกสาร 2157 01:36:19,040 --> 01:36:20,660 ดังนั้นฉันจะ ที่จะขโมยคุกกี้ของคุณ 2158 01:36:20,660 --> 01:36:22,951 และฉันจะเปลี่ยนเส้นทาง ข้อมูลบางอย่างไปยังเว็บไซต์ 2159 01:36:22,951 --> 01:36:25,120 ที่คุณไม่ควรที่จะเข้าถึง 2160 01:36:25,120 --> 01:36:29,250 และทั้งหมดนี้เกิดขึ้นเพราะคุณ ไม่ได้หลบหนีสิ่งที่คุณเคยเห็น 2161 01:36:29,250 --> 01:36:29,910 ใช่? 2162 01:36:29,910 --> 01:36:32,160 >> ผู้ชม: ดังนั้นเพียงเพื่อ ให้ชัดเจนก็คือ 2163 01:36:32,160 --> 01:36:37,550 vulnerable.com ว่า จะมีความเสี่ยงในเรื่องนี้ 2164 01:36:37,550 --> 01:36:39,300 ดังนั้นการเชื่อมโยงที่จะปรากฏ ในหน้าใดก็ตาม 2165 01:36:39,300 --> 01:36:42,200 มีคนคลิกที่มัน ไปที่ vulnerable.com 2166 01:36:42,200 --> 01:36:43,700 คุณมีคุกกี้ vulnerable.com 2167 01:36:43,700 --> 01:36:46,670 สมมติว่า Facebook เป็น ความเสี่ยงดังนั้น facebook.com 2168 01:36:46,670 --> 01:36:48,310 คุณมีคุกกี้ Facebook ของคุณ 2169 01:36:48,310 --> 01:36:50,925 สิ่งนี้จะทำคุณ จะ facebook.com, 2170 01:36:50,925 --> 01:36:53,990 มันเปลี่ยนเส้นทางทันที คุณ badguy.com, 2171 01:36:53,990 --> 01:36:57,182 แต่รวมทั้งข้อมูลคุกกี้ของคุณ 2172 01:36:57,182 --> 01:36:59,310 ดังนั้นจึงเปลี่ยนเส้นทางอย่างรวดเร็ว แต่คุกกี้ Facebook ของคุณ 2173 01:36:59,310 --> 01:37:02,572 มาพร้อมกับการเปลี่ยนเส้นทางที่ และนั่นคือวิธีที่พวกเขา [ไม่ได้ยิน] 2174 01:37:02,572 --> 01:37:04,280 GABE: ใช่มี บางสิ่งที่มีค่าเฉลี่ยมาก 2175 01:37:04,280 --> 01:37:06,070 ที่ผู้คนสามารถทำอย่างไรถ้ามีนี้ 2176 01:37:06,070 --> 01:37:09,190 ตัวอย่างเช่นถ้า Facebook ได้รับอนุญาต ทุกคนที่จะเปลี่ยนชื่อผู้ใช้ของคุณ 2177 01:37:09,190 --> 01:37:11,680 และพวกเขาก็ไม่ได้ดำเนินการใด ๆ การตรวจสอบสติเพื่อให้คุณ 2178 01:37:11,680 --> 01:37:16,810 สามารถแทรกสิ่ง JavaScript ที่ การเปลี่ยนแปลงภาพของคุณไปยังหนูแฮมสเตอร์ 2179 01:37:16,810 --> 01:37:22,590 และที่แทรกเดียวกัน JavaScript เป็นทุกคนที่มองหน้าของคุณ 2180 01:37:22,590 --> 01:37:26,400 ดังนั้นทุกคนที่มองหน้าของคุณ มีสิ่งที่เหมือนกันในชื่อผู้ใช้ 2181 01:37:26,400 --> 01:37:30,104 และเพราะมันเป็นไวรัส มันจะกระจายชี้แจง 2182 01:37:30,104 --> 01:37:32,270 Davin: เราจะข้ามผ่านมา หนึ่งและจากนั้นเรากำลังทำ 2183 01:37:32,270 --> 01:37:34,120 ดังนั้นนี่เป็นเพียงตัวอย่างหนึ่ง 2184 01:37:34,120 --> 01:37:36,120 ดังนั้นนี่คือพวกเขาไม่ได้ หนีตาราง SQL ของพวกเขา 2185 01:37:36,120 --> 01:37:37,090 เพื่อให้คุณสามารถวางไว้ 2186 01:37:37,090 --> 01:37:38,805 ดังนั้นคุณจึงต้องการที่จะหลบหนีสิ่ง 2187 01:37:38,805 --> 01:37:44,010 นั่นคือตัวอย่างก่อนหน้านี้ ด้วยการเขียนสคริปต์ข้ามไซต์ 2188 01:37:44,010 --> 01:37:45,430 ขออภัยเราวิ่งปลายนิด ๆ หน่อย ๆ 2189 01:37:45,430 --> 01:37:46,870 พรุ่งนี้ขอโทษ! 2190 01:37:46,870 --> 01:37:48,560 พรุ่งนี้เรามีเวลาทำงาน 2191 01:37:48,560 --> 01:37:50,870 ดังนั้นเวลาทำงานใน Cabbot 8:00-11:00 2192 01:37:50,870 --> 01:37:55,240 สำนักงานชั่วโมงเป็น อย่างเคร่งครัดสำหรับคำถามตอบคำถาม 2193 01:37:55,240 --> 01:37:56,587