1 00:00:00,000 --> 00:00:08,070 2 00:00:08,070 --> 00:00:10,430 >> R.J. กัว: ขอเพียงเริ่มต้น 3 00:00:10,430 --> 00:00:12,310 ดังนั้นนี่คือแบบทดสอบ 1 4 00:00:12,310 --> 00:00:14,890 นี่คือบางข้อมูลระดับสูง 5 00:00:14,890 --> 00:00:19,915 หน้าเกี่ยวกับการตอบคำถามที่นี้ URL ที่ไม่ CS50.net แต่ที่ 6 00:00:19,915 --> 00:00:21,080 จะยังคงทำงาน 7 00:00:21,080 --> 00:00:26,920 มัน CS50.harvard.edu/quizzes/2013/1 8 00:00:26,920 --> 00:00:31,070 มันใหญ่เกี่ยวกับหน้าบอกคุณ ที่ไหนและเมื่อใดคือวันพุธ 9 00:00:31,070 --> 00:00:32,100 ในเครือของห้องพัก 10 00:00:32,100 --> 00:00:36,120 และต่อไปวันพุธที่ฉัน หมายถึงสองวันนับจากนี้ 11 00:00:36,120 --> 00:00:37,890 ข้อมูลทั้งหมดนี้จะมี 12 00:00:37,890 --> 00:00:39,110 แต่มันจะสะสม 13 00:00:39,110 --> 00:00:43,790 >> เพื่อให้ทุกอย่างจากครึ่งแรกของปี ปีอาจเป็นที่ตอบคำถาม 14 00:00:43,790 --> 00:00:50,780 เพราะคุณไม่สามารถทำจริงๆขั้นสูง สิ่งที่ใน C โดยไม่ต้องถ้าเงื่อนไขและ 15 00:00:50,780 --> 00:00:51,920 กับลูปและชอบ 16 00:00:51,920 --> 00:00:55,580 แต่จะมีความสำคัญกับ วัสดุที่ครอบคลุมตั้งแต่การทดสอบ 0 17 00:00:55,580 --> 00:00:59,570 ที่เริ่มต้นด้วย structs และไฟล์ I / O มันมักจะมี 18 00:00:59,570 --> 00:01:01,620 ที่ท้าทายกว่าแบบทดสอบ 0 19 00:01:01,620 --> 00:01:03,870 คะแนนเฉลี่ยลดลงเป็นปกติ 20 00:01:03,870 --> 00:01:05,980 เรียนอย่างหนัก 21 00:01:05,980 --> 00:01:09,340 >> ขณะที่คุณกำลังศึกษาให้แน่ใจว่าได้ใช้ CS50/discuss โพสต์คำถามของคุณ 22 00:01:09,340 --> 00:01:10,830 และอ่านคำถามของคนอื่น 23 00:01:10,830 --> 00:01:13,550 ดังนั้นถ้าคุณไม่ได้มีข้อสงสัยใด ๆ เข้าสู่ระบบและอ่าน 24 00:01:13,550 --> 00:01:14,580 คำถามของเพื่อน 25 00:01:14,580 --> 00:01:16,560 พวกเขาอาจจะเป็นคำถามที่ดี 26 00:01:16,560 --> 00:01:17,730 และใช้แบบทดสอบการปฏิบัติ 27 00:01:17,730 --> 00:01:20,750 เราได้รับการให้แบบทดสอบเพื่อ เจ็ดหรือแปดปีแล้ว 28 00:01:20,750 --> 00:01:22,180 พวกเขากำลังออนไลน์ทั้งหมด 29 00:01:22,180 --> 00:01:25,540 คำถามในอนาคตที่มีความคล้ายคลึง คำถามเก่า 30 00:01:25,540 --> 00:01:26,550 นั่นคือวิธีการที่เราทำให้พวกเขา 31 00:01:26,550 --> 00:01:27,740 >> คำถามที่ยังไม่ปรากฏอยู่ 32 00:01:27,740 --> 00:01:28,670 ไม่มีเราได้เห็นมัน 33 00:01:28,670 --> 00:01:32,496 แต่มันจะมีลักษณะเช่น แบบทดสอบแล้ว 34 00:01:32,496 --> 00:01:36,500 สำหรับเซสชั่นการตรวจสอบนี้นี้ไม่ได้ รายการครบถ้วนสมบูรณ์ของหัวข้อ 35 00:01:36,500 --> 00:01:40,740 คุณไม่สามารถเพียงแค่เข้าร่วมนี้แล้ว เป็นอย่างดีพร้อมสำหรับการทดสอบ 36 00:01:40,740 --> 00:01:43,330 มิฉะนั้นมันจะไม่เป็น ที่มากของการทดสอบ 37 00:01:43,330 --> 00:01:46,270 และนี้ยังไม่จำเป็นต้อง ทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับการใด ๆ 38 00:01:46,270 --> 00:01:46,970 หัวข้อที่กำหนด 39 00:01:46,970 --> 00:01:50,520 มันหมายถึงการเปิดเผยให้คุณในสิ่งที่ เราได้ครอบคลุมเตือนคุณในสิ่งที่เรา 40 00:01:50,520 --> 00:01:53,070 ครอบคลุมและวิธีการในการ ที่เรากล่าวถึงมัน 41 00:01:53,070 --> 00:01:57,030 แต่คุณจะต้องไปต่อไปและ ลึกเมื่อคุณศึกษาเพื่อตรวจสอบอีกครั้ง 42 00:01:57,030 --> 00:02:00,230 ว่าคุณรู้ทุกอย่างเกี่ยวกับการใดก็ตาม หัวข้อและที่คุณได้เติมเต็มใน 43 00:02:00,230 --> 00:02:03,320 ทุกมุมที่มี ครอบคลุมในการบรรยาย 44 00:02:03,320 --> 00:02:07,980 >> บันทึกทดสอบบอกให้คุณไปที่ เขียนบันทึกวิดีโอการบรรยายนาฬิกา 45 00:02:07,980 --> 00:02:10,155 ซึ่งเป็นวิธีที่ดีที่จะให้แน่ใจว่าคุณได้ ครอบคลุมฐานทั้งหมดของคุณ 46 00:02:10,155 --> 00:02:12,670 47 00:02:12,670 --> 00:02:17,340 ดังนั้นการเริ่มต้นเมื่อฉันทำเหล่านี้ สไลด์ผมพยายามที่จะนำที่ผมพบว่า 48 00:02:17,340 --> 00:02:18,350 ข้อมูล 49 00:02:18,350 --> 00:02:22,890 ดังนั้นสำหรับไฟล์ I / O ตัวอย่างเช่นสัปดาห์ที่ 7 วันจันทร์บรรยายและโพสต์ 50 00:02:22,890 --> 00:02:27,960 มาตรา 6 และการตั้งค่าทั้งหมดมีปัญหา ข้อมูลเกี่ยวกับไฟล์ I / O ผมเคยทำ 51 00:02:27,960 --> 00:02:28,840 สำหรับทุกเรื่อง 52 00:02:28,840 --> 00:02:33,010 ดังนั้นผู้ภาพนิ่งชื่อเรื่องอาจจะ เป็นประโยชน์กับคุณ 53 00:02:33,010 --> 00:02:38,950 >> ดังนั้นที่นี่เรามีไฟล์ I / O โปรดจำไว้ว่าใน ปัญหาการตั้ง 5 เราใช้ fopen, fclose, 54 00:02:38,950 --> 00:02:41,210 fwrite, fread และ fseek 55 00:02:41,210 --> 00:02:48,090 มีการกู้คืนและ 30ish JPEGs ที่มีการปรับขนาดและสับสนกับ 56 00:02:48,090 --> 00:02:50,320 บิตแมปที่คุณควรจะคุ้นเคยสวย ด้วยฟังก์ชั่นเหล่านี้ 57 00:02:50,320 --> 00:02:51,830 และวิธีการที่พวกเขาทำงาน 58 00:02:51,830 --> 00:02:54,420 หากคุณไม่คุ้นเคย แน่นอนตรวจสอบได้ 59 00:02:54,420 --> 00:02:56,860 และให้แน่ใจว่าคุณเข้าใจสิ่งที่ ข้อโต้แย้งที่แตกต่างกันที่มี 60 00:02:56,860 --> 00:02:58,260 เมื่อพวกเขากำลังใช้ 61 00:02:58,260 --> 00:03:03,620 >> แต่ข้อผิดพลาดที่เกี่ยวข้องกับไฟล์ที่พบบ่อย คุณอาจจะถามเกี่ยวกับ - 62 00:03:03,620 --> 00:03:07,270 ดีถ้าคุณลืมที่จะตรวจสอบว่า fopen ทำงานจริงก่อนที่คุณจะไป 63 00:03:07,270 --> 00:03:08,350 แก้ไขไฟล์ 64 00:03:08,350 --> 00:03:09,760 ที่อาจจะไม่ดี 65 00:03:09,760 --> 00:03:13,560 หากคุณลืมที่จะ fclose ไฟล์ ที่คุณได้ fopened ที่คล้ายกับ 66 00:03:13,560 --> 00:03:14,400 หน่วยความจำรั่ว 67 00:03:14,400 --> 00:03:15,980 ที่ไม่ดีงาม 68 00:03:15,980 --> 00:03:18,670 และลืมที่จะตรวจสอบว่าคุณได้ ถึงจุดสิ้นสุดของแฟ้มก่อนที่คุณจะ 69 00:03:18,670 --> 00:03:19,790 เริ่มต้นการเขียนไป 70 00:03:19,790 --> 00:03:22,320 >> ดังนั้นถ้าคุณจะพูดว่าเดี๋ยวก่อนฉันที่ ส่วนท้ายของแฟ้ม 71 00:03:22,320 --> 00:03:23,750 ให้ฉัน 5 ไบต์ 72 00:03:23,750 --> 00:03:27,370 ดีที่อาจจะไม่ ผลงานออกมาในแบบที่คุณคาดหวัง 73 00:03:27,370 --> 00:03:30,930 ที่จริงมันเป็นไฟล์ I / O เพราะเราไม่ได้ทำมากของมัน 74 00:03:30,930 --> 00:03:32,300 ที่มีปัญหาการตั้งค่า 75 00:03:32,300 --> 00:03:36,000 ดังนั้นถ้าคุณเข้าใจสิ่งที่เกิดขึ้น ใน 5 เซตปัญหาจำ bitmats 76 00:03:36,000 --> 00:03:40,090 และ JPEG แล้วคุณอาจจะทั้งหมด ที่ตั้งไว้สำหรับไฟล์ I / O หากเป็นบิต 77 00:03:40,090 --> 00:03:44,770 เลือนแน่นอนทบทวนปัญหาที่ ตั้งค่าและวัสดุที่เกี่ยวข้อง 78 00:03:44,770 --> 00:03:51,110 >> structs เป็นหัวข้อที่อยู่บน เส้นแบ่งระหว่างการทดสอบแบบทดสอบ 0 และ 1 79 00:03:51,110 --> 00:03:53,090 ไม่มากให้ตัดการทดสอบ 0 80 00:03:53,090 --> 00:03:57,040 ดังนั้นแน่นอนพวกเขาจะอยู่บน แบบทดสอบ 1 สัปดาห์ที่ 7 วันจันทร์ 81 00:03:57,040 --> 00:03:58,150 struct คืออะไร 82 00:03:58,150 --> 00:04:00,250 ที่นี่เราแสดงให้เห็นโครงสร้าง 83 00:04:00,250 --> 00:04:03,140 มันก็เหมือนรูปแบบใหม่ 84 00:04:03,140 --> 00:04:07,940 มันเหมือนกับภาชนะ สำหรับเขตข้อมูลหลาย 85 00:04:07,940 --> 00:04:12,970 >> ในกรณีนี้เราได้ประกาศ struct นักเรียนที่มีสองสาขา - 86 00:04:12,970 --> 00:04:17,750 สายที่เรากำลังเรียกชื่อและ int ที่เรากำลังเรียกร้องอายุ 87 00:04:17,750 --> 00:04:21,450 ดังนั้นเมื่อผมผ่านรอบนักเรียนหรือฉัน แก้ไขนักเรียนที่ฉันจะสามารถที่จะ 88 00:04:21,450 --> 00:04:24,430 เข้าชื่อและอายุของพวกเขา 89 00:04:24,430 --> 00:04:26,670 ลองดูที่รหัสบางอย่างสำหรับการที่ 90 00:04:26,670 --> 00:04:29,090 ที่นี่เราจะเห็นว่าผมเคยประกาศ นักเรียน s เช่นเดียวกับ 91 00:04:29,090 --> 00:04:30,300 ผมประกาศตัวแปรใด ๆ - 92 00:04:30,300 --> 00:04:32,430 int x, int y, และอื่น ๆ 93 00:04:32,430 --> 00:04:34,180 >> ที่นี่เป็นนักเรียนของ 94 00:04:34,180 --> 00:04:37,370 เขาเริ่มต้นด้วยไม่มีอะไรอยู่ในทุ่งนาของเขา 95 00:04:37,370 --> 00:04:38,240 จึงขอตั้งพวกเขา 96 00:04:38,240 --> 00:04:40,681 คุณตั้งค่าเขตข้อมูลของโครงสร้างด้วยจุด 97 00:04:40,681 --> 00:04:43,780 ดังนั้นผมจึงได้กล่าวว่าที่นี่ที่ s.name = RJ 98 00:04:43,780 --> 00:04:46,470 และ s.age = 21 99 00:04:46,470 --> 00:04:48,500 นอกจากนี้คุณยังสามารถปรับปรุงเขตข้อมูล วิธีเดียวกับที่คุณต้องการปรับปรุง 100 00:04:48,500 --> 00:04:49,550 ค่าของตัวแปร 101 00:04:49,550 --> 00:04:53,270 ดังนั้นผมจึงต้องการที่จะเปลี่ยนชื่อของฉันจาก RJ ด้วย ระยะเวลาที่จะ R.J. ไม่มี สะกด 102 00:04:53,270 --> 00:04:54,540 วิธีที่ถูกต้อง 103 00:04:54,540 --> 00:04:58,890 มันจะ s.name = RJ เดียวกัน ในขณะที่เราบอกว่ามันเดิม 104 00:04:58,890 --> 00:05:00,030 และจากนั้นคุณสามารถเข้าถึงได้ 105 00:05:00,030 --> 00:05:00,930 >> ดังนั้นเราจึงได้กำหนดให้ 106 00:05:00,930 --> 00:05:01,840 เราได้ปรับปรุงพวกเขา 107 00:05:01,840 --> 00:05:03,890 นอกจากนี้คุณยังสามารถเข้าถึงได้ ในทางเดียวกันมาก 108 00:05:03,890 --> 00:05:09,330 ดังนั้นที่นี่ฉันพิมพ์ออก R.J. คือ 21 ปี 109 00:05:09,330 --> 00:05:14,700 และฉันเข้าถึงค่าเหล่านั้น ด้วย s.name และ s.age 110 00:05:14,700 --> 00:05:17,040 ดังนั้นที่เข้าถึง structs ด้วยสัญกรณ์ dot 111 00:05:17,040 --> 00:05:17,850 ครับถาม? 112 00:05:17,850 --> 00:05:21,176 >> ผู้ชม: มีเหตุผลที่ สไลด์ก่อนหน้านี้ที่คุณไม่ได้ใส่ 113 00:05:21,176 --> 00:05:24,848 นักศึกษาในบรรทัดด้านบนเช่น typedef นักเรียน struct แล้ว 114 00:05:24,848 --> 00:05:25,840 นักเรียนที่สิ้นสุดหรือไม่ 115 00:05:25,840 --> 00:05:29,040 >> R.J. กัว: ดังนั้นคำถามคือเมื่อวันที่ สไลด์นี้เราได้เห็นโดยทั่วไป 116 00:05:29,040 --> 00:05:32,400 typedef struct โหนดแล้ว ด้านโครงสร้างและ 117 00:05:32,400 --> 00:05:34,250 แล้วคำโหนด 118 00:05:34,250 --> 00:05:37,790 และวิธีการที่มาที่นี่ผมไม่ได้พูดว่า typedef นักเรียน struct แล้ว 119 00:05:37,790 --> 00:05:39,820 สาขา struct แล้วนักเรียน? 120 00:05:39,820 --> 00:05:44,310 เหตุผลก็คือว่าผมไม่จำเป็นต้อง เข้าถึงได้ภายในของ struct 121 00:05:44,310 --> 00:05:46,270 จึงตกลงที่จะปล่อยให้มันไม่มีชื่อ 122 00:05:46,270 --> 00:05:49,210 ผมก็สามารถปล่อยให้มันเป็น struct ที่ไม่ระบุชื่อ 123 00:05:49,210 --> 00:05:53,130 >> เหตุผลที่เราทำมันสำหรับรายการการเชื่อมโยงและ สิ่งที่เป็นเพราะภายในที่คุณต้องการ 124 00:05:53,130 --> 00:05:55,360 อ้างอิงดาวโหนด struct 125 00:05:55,360 --> 00:05:58,220 ดังนั้นโครงสร้างจะต้องมีชื่อ เพื่อให้คุณสามารถเข้าถึงได้ในภายหลัง 126 00:05:58,220 --> 00:05:59,540 มันเป็นรายละเอียดเล็กน้อย 127 00:05:59,540 --> 00:06:04,750 แต่คุณมักจะเห็น typedef struct วงเล็บปีกกาถ้าคุณไม่จำเป็นต้อง 128 00:06:04,750 --> 00:06:08,720 ชื่อและที่ typedef struct ชื่อบางส่วน ตามด้วยวงเล็บปีกกาถ้าคุณจะ 129 00:06:08,720 --> 00:06:09,520 ต้องมีชื่อ 130 00:06:09,520 --> 00:06:12,070 เพื่อให้เป็นคำถามที่ดี 131 00:06:12,070 --> 00:06:17,000 >> และในจุดที่เรามีแนวโน้มที่จะปรับเปลี่ยน structs และผ่านรอบ structs โดย 132 00:06:17,000 --> 00:06:18,680 อ้างอิงไม่ได้ด้วยค่า 133 00:06:18,680 --> 00:06:21,940 ดังนั้นเราก็จะผ่านรอบตัวชี้ไปยัง structs แทนการผ่านรอบ 134 00:06:21,940 --> 00:06:23,150 structs ตัวเอง 135 00:06:23,150 --> 00:06:28,050 ดังนั้นคุณบ่อยมากจะเป็น ใช้ในกรณีนี้นักเรียน * หรือ 136 00:06:28,050 --> 00:06:34,150 * โหนด struct หรือโหนด * แทน นักเรียนออกหรือโหนด 137 00:06:34,150 --> 00:06:39,350 ดังนั้นที่นี่ฉันได้กล่าวว่าตกลง PTR ตัวแปร เป็นไปได้ที่อยู่ของ s 138 00:06:39,350 --> 00:06:45,570 มันจะเป็นตัวชี้ นักเรียน R.J. 139 00:06:45,570 --> 00:06:48,965 >> เพื่อให้เราสามารถได้รับข้อมูลเหล่านั้น เช่นเดียวกับที่เราได้รับอะไร 140 00:06:48,965 --> 00:06:51,460 ครั้งแรก ID อ้างอิงตัวชี้ ที่จะได้รับ struct 141 00:06:51,460 --> 00:06:55,530 นั่นคือ PTR * แล้ว จุดแล้วอายุ 142 00:06:55,530 --> 00:06:58,790 ดังนั้นการเข้าถึงสนามและเราได้ปรับปรุง ตอนนี้ถึง 22 เพราะให้ 143 00:06:58,790 --> 00:07:00,860 กล่าวว่ามันเป็นวันเกิดของฉัน 144 00:07:00,860 --> 00:07:03,990 มีทางลัดไวยากรณ์เป็น โดยใช้ลูกศรที่นี่ 145 00:07:03,990 --> 00:07:07,060 อายุลูกศรเพื่อ PTR เป็นเพียง เหมือนกับ * ptr.age 146 00:07:07,060 --> 00:07:10,150 147 00:07:10,150 --> 00:07:11,550 ตอนนี้ที่เป็นสิ่งที่คุณจะต้อง ในการจดจำและจำ 148 00:07:11,550 --> 00:07:15,010 >> คุณใช้มันมากใน pset6, pset สะกด 149 00:07:15,010 --> 00:07:18,350 แต่นี้เป็นจริงสิ่งที่เกิดขึ้น ที่อยู่ใต้ฝากระโปรง 150 00:07:18,350 --> 00:07:20,500 มันเป็นตัวชี้ dereferencing แล้วการเข้าถึง 151 00:07:20,500 --> 00:07:21,432 คำถาม? 152 00:07:21,432 --> 00:07:22,682 >> ผู้ชม: [ไม่ได้ยิน] 153 00:07:22,682 --> 00:07:25,860 154 00:07:25,860 --> 00:07:28,060 >> R.J. กัว: ดังนั้นทำไมเราใช้ ชี้เป็น structs แทน 155 00:07:28,060 --> 00:07:29,500 structs ตัวเอง 156 00:07:29,500 --> 00:07:33,740 เหตุผลที่จะเป็นถ้าคุณผ่าน struct ฟังก์ชั่นที่คุณอาจ 157 00:07:33,740 --> 00:07:36,900 ต้องการที่จะผ่านรอบเพียง 4 หรือเพื่อ ไบต์ที่เป็นตัวแทนของตัวชี้เป็น 158 00:07:36,900 --> 00:07:40,375 เทียบกับ 30 หรืออาจ 40 ไบต์ที่มีโครงสร้าง 159 00:07:40,375 --> 00:07:44,410 ดังนั้นสิ่งที่จะผ่านฟังก์ชั่น เป็นสิ่งที่ง่ายขึ้นเมื่อ 160 00:07:44,410 --> 00:07:48,230 มีขนาดเล็กในระยะสั้น 161 00:07:48,230 --> 00:07:49,074 คำถาม? 162 00:07:49,074 --> 00:07:53,026 >> ผู้ชม: คุณอาจได้กล่าวถึงนี้ ในการเริ่มต้น แต่มี 163 00:07:53,026 --> 00:07:56,000 ภาพนิ่งอื่นขึ้นไปบน [ไม่ได้ยิน]? 164 00:07:56,000 --> 00:07:58,960 >> R.J. กัว: สไลด์เหล่านี้จะเป็น ขึ้นหลังจากที่เซสชั่นการตรวจสอบ 165 00:07:58,960 --> 00:08:00,210 เราจะโพสต์ไว้บนเว็บไซต์ 166 00:08:00,210 --> 00:08:02,450 167 00:08:02,450 --> 00:08:06,870 ดังนั้นการย้ายและย้ายไปเล็กน้อย เร็วกว่าที่เรากำลังจะพูดคุยเกี่ยวกับข้อมูล 168 00:08:06,870 --> 00:08:07,350 โครงสร้าง 169 00:08:07,350 --> 00:08:08,040 มีจำนวนมากที่มี 170 00:08:08,040 --> 00:08:10,080 เราครอบคลุมพวงของพวกเขา 171 00:08:10,080 --> 00:08:12,500 นี่คือสิ่งที่คุณควรเข้าใจ เกี่ยวกับโครงสร้างข้อมูล 172 00:08:12,500 --> 00:08:15,590 >> จริงๆคุณควรเข้าใจที่สูง สิ่งที่แต่ละระดับโครงสร้าง 173 00:08:15,590 --> 00:08:21,190 คุณสามารถอธิบายในภาษาอังกฤษของคุณ เพื่อนที่ไม่ได้เอา CS50 วิธี 174 00:08:21,190 --> 00:08:25,580 เรากำลังจัดการข้อมูลของเราและเหตุผลที่เราต้องการ จะใช้อะไรบางอย่างในลักษณะนี้ 175 00:08:25,580 --> 00:08:26,990 นั่นเป็นสิ่งหนึ่งที่ 176 00:08:26,990 --> 00:08:29,650 สิ่งที่ทั้งสองเข้าใจ การดำเนินการ 177 00:08:29,650 --> 00:08:34,270 เพื่อเข้าใจวิธีการใช้สิ่งเหล่านี้ ในซีและเราจะไปกว่านี้ 178 00:08:34,270 --> 00:08:39,030 >> และแล้วสิ่งที่สามจะได้รับรู้ ใช้เวลาและข้อ จำกัด ของ 179 00:08:39,030 --> 00:08:40,470 โครงสร้างต่างๆที่คุณกำลังใช้ 180 00:08:40,470 --> 00:08:44,059 ดังนั้นเข้าใจว่าทำไมคุณจะใช้ สับตารางแทนของอาร์เรย์ 181 00:08:44,059 --> 00:08:49,570 ทำความเข้าใจเกี่ยวกับวิธีที่รวดเร็วโดยเฉลี่ย การเข้าถึงตารางแฮชเป็น 182 00:08:49,570 --> 00:08:54,010 เข้าใจในสิ่งที่มีการดำเนินงานอย่างรวดเร็วใน รายการที่เชื่อมโยง แต่ช้าในอาร์เรย์และ 183 00:08:54,010 --> 00:08:56,080 ในทางกลับกัน 184 00:08:56,080 --> 00:08:59,780 เพื่อที่จะเข้าใจว่าคุณจะต้อง เข้าใจ Big-O โน้ตเพียงเพื่อให้รู้ว่า 185 00:08:59,780 --> 00:09:01,310 วิธีการพูดคุยเกี่ยวกับเหล่านี้ ทุกประเภทของสิ่ง 186 00:09:01,310 --> 00:09:02,700 และเราจะพูดคุยเกี่ยวกับที่ 187 00:09:02,700 --> 00:09:06,040 >> ดังนั้นสิ่งแรกที่รายการเชื่อมโยง 188 00:09:06,040 --> 00:09:07,770 นี่คือภาพที่ระดับสูง ของรายการที่เชื่อมโยง 189 00:09:07,770 --> 00:09:08,830 เราแสดงให้เห็นนี้ในชั้นเรียน 190 00:09:08,830 --> 00:09:11,670 เรามักจะมี 10 คนที่ ยืนอยู่บนเวที 191 00:09:11,670 --> 00:09:16,790 แต่เรามีชุดของโหนดที่แต่ละ โหนดมีค่าบางอย่างและตัวชี้ 192 00:09:16,790 --> 00:09:18,610 ค่าต่อไป 193 00:09:18,610 --> 00:09:21,730 เพื่อที่จะได้รับจากที่หนึ่งไปยังโหนดถั​​ดไปคุณ เพียงแค่พูดให้ฉันโหนดถั​​ดไป 194 00:09:21,730 --> 00:09:22,530 คุณมีโหนดที่ 195 00:09:22,530 --> 00:09:23,770 ให้ฉันโหนดถั​​ดไป 196 00:09:23,770 --> 00:09:24,400 คุณมีโหนดที่ 197 00:09:24,400 --> 00:09:28,790 ให้ฉันโหนดถั​​ดไปและอื่น ๆ จนกว่าจะมีโหนดไม่มี 198 00:09:28,790 --> 00:09:31,850 >> ดังนั้นยังคงพูดคุยเกี่ยวกับ มันอยู่ในระดับสูง 199 00:09:31,850 --> 00:09:34,100 มันง่ายมากที่จะแทรกสิ่งที่ เป็นรายการที่เชื่อมโยง 200 00:09:34,100 --> 00:09:36,010 ถ้าคุณไม่สนใจเกี่ยวกับคำสั่งที่ คุณก็สามารถวางไว้ 201 00:09:36,010 --> 00:09:36,840 ในขณะที่จุดเริ่มต้น 202 00:09:36,840 --> 00:09:38,520 นั่นเป็นเวลาคงที่ 203 00:09:38,520 --> 00:09:39,900 แต่ก็ยากที่จะหาค่า 204 00:09:39,900 --> 00:09:43,060 ถ้าคุณกำลังพยายามที่จะถาม เจ็ดในรายการของฉันได้อย่างไร 205 00:09:43,060 --> 00:09:44,740 คุณต้องไปผ่าน ทุกค่าเดียว 206 00:09:44,740 --> 00:09:45,680 นี้เป็นเจ็ด? 207 00:09:45,680 --> 00:09:46,610 นี้เป็นเจ็ด? 208 00:09:46,610 --> 00:09:47,770 นี้เป็นเจ็ด? 209 00:09:47,770 --> 00:09:48,690 นี้เป็นเจ็ด? 210 00:09:48,690 --> 00:09:49,830 ครั้งแล้วครั้งเล่า 211 00:09:49,830 --> 00:09:51,520 และที่ O (n) 212 00:09:51,520 --> 00:09:53,800 ดังนั้นเมื่อเรียนสำหรับการตอบคำถาม เปรียบเทียบกับอาร์เรย์ 213 00:09:53,800 --> 00:09:57,010 214 00:09:57,010 --> 00:09:58,220 >> ที่ OK? 215 00:09:58,220 --> 00:09:59,220 ไฟสลัวไป 216 00:09:59,220 --> 00:10:01,110 ตกลง 217 00:10:01,110 --> 00:10:02,400 เมื่อเป็นรายการที่เชื่อมโยงที่ดีกว่า 218 00:10:02,400 --> 00:10:04,640 เมื่อเป็นอาร์เรย์ที่ดีกว่า 219 00:10:04,640 --> 00:10:06,670 ดังนั้นให้ดูที่บางรหัส 220 00:10:06,670 --> 00:10:08,960 นี่คือโหนดที่มีศักยภาพ 221 00:10:08,960 --> 00:10:09,770 มันเป็นโครงสร้าง 222 00:10:09,770 --> 00:10:12,220 มันมี n int ซึ่ง จะเป็นค่าของเรา 223 00:10:12,220 --> 00:10:17,780 และมีโหนด struct * ถัดไปที่ เราเป็นตัวชี้ไปยังโหนดถั​​ดไป 224 00:10:17,780 --> 00:10:23,040 ดังนั้นที่นี่เราจะเห็นว่าเราเกิดขึ้น จะมีการวาง int ในโหนดของเรา 225 00:10:23,040 --> 00:10:27,850 แต่ถ้าเป็นรายการที่เชื่อมโยงของถ่าน ดาวหรือรายการที่เชื่อมโยงของลอยเรา 226 00:10:27,850 --> 00:10:28,820 ทั้งหมดสามารถทำเกินไป 227 00:10:28,820 --> 00:10:33,110 >> โปรดจำไว้ว่าใน pset6 คุณอาจจะมี รายการที่เชื่อมโยงของถ่านดาวหรือเพียงแค่ 228 00:10:33,110 --> 00:10:34,360 อาร์เรย์ถ่านแบบคงที่ 229 00:10:34,360 --> 00:10:37,370 230 00:10:37,370 --> 00:10:39,040 ลองดูที่นี่ที่การดำเนินงาน 231 00:10:39,040 --> 00:10:43,570 ดังนั้นเราจึงต้องการที่จะใส่ใหม่ n เป็นรายการที่เชื่อมโยงของเรา 232 00:10:43,570 --> 00:10:48,940 เราเริ่มต้นด้วยตัวชี้ที่ศีรษะที่เป็น ตัวชี้ไปยังโหนดนี้ที่มี 233 00:10:48,940 --> 00:10:53,460 ค่าของ n และต่อไปของตัวชี้ว่า ชี้ไปที่โหนดนี้เป็นค่าของ 234 00:10:53,460 --> 00:10:57,760 n และต่อไปของโมฆะเพราะ มันเป็นโหนดสุดท้าย 235 00:10:57,760 --> 00:11:00,440 ดังนั้นในความสนใจของเวลาที่ฉันจะ ใส่รหัสทั้งหมดบนหน้าจอ 236 00:11:00,440 --> 00:11:03,130 และเราจะเดินผ่านมัน ไม่กี่บรรทัดในเวลา 237 00:11:03,130 --> 00:11:05,790 >> ดังนั้นนี่คือรหัส 238 00:11:05,790 --> 00:11:07,560 ฉันหวังว่าจะสามารถอ่านได้ 239 00:11:07,560 --> 00:11:11,275 สิ่งแรกที่เราทำคือ เรา malloc โหนดใหม่ 240 00:11:11,275 --> 00:11:15,105 จึงทำให้ตัวชี้ไปยังโหนดใหม่ที่ ไม่ค่อยมีอะไรที่ตั้ง 241 00:11:15,105 --> 00:11:16,450 ในมันยัง 242 00:11:16,450 --> 00:11:19,580 เราตรวจสอบเพื่อให้แน่ใจว่า โหนดใหม่ไม่โมฆะ 243 00:11:19,580 --> 00:11:22,220 มิฉะนั้นเราจะต้องให้ขึ้น 244 00:11:22,220 --> 00:11:27,680 ดังนั้นต้องตรวจสอบว่าตอนนี้เรา ตั้งค่าในโหนด 245 00:11:27,680 --> 00:11:31,520 ดังนั้นเราจึงใส่ n ใหม่ลงในช่อง n ของเรา 246 00:11:31,520 --> 00:11:36,050 และเราจะกำหนดตัวชี้ต่อไปที่จะชี้ไปที่ หัวเดิมเพื่อให้เราสามารถ 247 00:11:36,050 --> 00:11:38,900 ตอนนี้ได้ใส่นี้ โหนดลงในรายการของเรา 248 00:11:38,900 --> 00:11:44,600 >> สุดท้ายเรามีจุดหัวทั่วโลก ไปยังโหนดใหม่ของเราเพื่อที่ว่าถ้าเราจะ 249 00:11:44,600 --> 00:11:50,300 เริ่มต้นที่หัวเราจะอยู่ที่นี้ โหนดแรกใหม่แทน 250 00:11:50,300 --> 00:11:51,560 โหนดแรกเก่า 251 00:11:51,560 --> 00:11:55,320 และเมื่อฟังก์ชั่นนี้ออกจากที่ โหนดใหม่ตัวแปรไม่มีอยู่แล้ว 252 00:11:55,320 --> 00:11:57,130 เพราะมันเป็นท้องถิ่นเพื่อฟังก์ชั่น 253 00:11:57,130 --> 00:11:59,770 ดังนั้นนี่เป็นสภาวะของโลก 254 00:11:59,770 --> 00:12:03,570 หัวทั่วโลกของเราชี้ไปที่ใหม่ของเรา โหนดแรกซึ่งชี้ไปของเรา 255 00:12:03,570 --> 00:12:06,346 โหนดแรกเดิมซึ่งจุด ไปยังโหนดหลังจากนั้น 256 00:12:06,346 --> 00:12:09,790 >> นั่นคือการแทรก 257 00:12:09,790 --> 00:12:12,150 ผมหวังว่าค่อนข้าง ตรงไปตรงมาในการปฏิบัติตาม 258 00:12:12,150 --> 00:12:14,300 เมื่อสงสัยวาดภาพ 259 00:12:14,300 --> 00:12:17,820 ดังนั้นฉันพบว่าการพูดคุยเกี่ยวกับ รายการการเชื่อมโยงและกำลังมองหาที่ 260 00:12:17,820 --> 00:12:19,870 รหัสเป็นอย่างมากไม่เป็นประโยชน์ 261 00:12:19,870 --> 00:12:23,790 ในขณะที่มองไปที่ภาพของการเชื่อมโยง รายการช่วยให้ฉันคิดว่าโอ้ดังนั้น 262 00:12:23,790 --> 00:12:24,970 ฉันมีโหนดนี้ที่นี่ 263 00:12:24,970 --> 00:12:28,980 แต่ถ้าฉันปรับปรุงตัวชี้ว่า มันจบลงด้วยการตัดการเชื่อมต่อ 264 00:12:28,980 --> 00:12:34,340 และฉันลืมที่ โหนดไป 265 00:12:34,340 --> 00:12:35,390 และออกจากรหัส 266 00:12:35,390 --> 00:12:37,830 และคุณมีโหนดหลาย ที่มีการตัดการเชื่อมต่อ 267 00:12:37,830 --> 00:12:39,970 และคุณไม่ได้จบลงด้วย รายการที่คุณต้องการ 268 00:12:39,970 --> 00:12:43,320 >> ดังนั้นถ้าคุณวาดภาพและทำมัน ทีละขั้นตอนหวังว่าคุณจะเห็น 269 00:12:43,320 --> 00:12:46,840 ลำดับที่ถูกต้องของสิ่งที่ในแง่ของการ การปรับปรุงตัวชี้เพื่อให้แน่ใจว่า 270 00:12:46,840 --> 00:12:48,830 ว่ารายการมารวมกัน 271 00:12:48,830 --> 00:12:51,240 แทรกค่อนข้างตรงไปตรงมา 272 00:12:51,240 --> 00:12:55,210 อย่างใดอย่างหนึ่งที่ซับซ้อนมากขึ้นจะเป็น แทรกเข้าไปในรายการที่เรียงลำดับ 273 00:12:55,210 --> 00:12:59,980 ฟังก์ชั่นที่ซับซ้อนมากขึ้นเป็นลบ และหาดังนั้นมองผ่านรายการ 274 00:12:59,980 --> 00:13:03,030 ดูว่ามีอะไรบางอย่างที่มี 275 00:13:03,030 --> 00:13:07,220 บางทีคุณอาจจะทำอย่างนี้ในเมื่อคุณ pset6 ได้เข้าไปในตารางแฮชของคุณและคุณกล่าวว่า 276 00:13:07,220 --> 00:13:10,460 ดีเป็นแอปเปิ้ลคำว่า ในรายการที่เชื่อมโยงของฉันได้อย่างไร 277 00:13:10,460 --> 00:13:11,440 >> ดังนั้นคุณอาจได้ทำมาแล้วนี้ 278 00:13:11,440 --> 00:13:15,530 แต่แน่นอนรีเฟรชหน่วยความจำของคุณ และพยายามที่จะค้นหาและ reimplement 279 00:13:15,530 --> 00:13:19,150 reimplement ลบรายการเชื่อมโยง 280 00:13:19,150 --> 00:13:22,850 สังเกตด้านความสนุกยังมีทวีคูณเชื่อมโยง รายการที่คุณมี 281 00:13:22,850 --> 00:13:27,490 ตัวชี้ที่ชี้ทั้งสองไปข้างหน้าและ ย้อนกลับเพื่อให้คุณสามารถไปที่ 282 00:13:27,490 --> 00:13:29,270 โหนดถั​​ดไปและเพื่อโหนดก่อนหน้า 283 00:13:29,270 --> 00:13:33,860 และมีคำถามเกี่ยวกับของปีที่แล้ว คำถามประเภทที่พูดคุย 284 00:13:33,860 --> 00:13:36,190 รายการเกี่ยวกับการเชื่อมโยงทวีคูณ 285 00:13:36,190 --> 00:13:40,070 >> ตอนนี้ที่โครงสร้างที่คุณ ค่อนข้างคุ้นเคยกับเพราะส่วนใหญ่ 286 00:13:40,070 --> 00:13:42,520 ท่านอาจใช้พวกเขาใน pset6 287 00:13:42,520 --> 00:13:45,680 นี่คือหนึ่งที่เป็นบิตที่คุ้นเคยน้อยกว่า 288 00:13:45,680 --> 00:13:51,020 ขณะที่ทราบด้านผมคิดว่าแบบทดสอบ 1 ส่วนใหญ่หนักกว่าแบบทดสอบ 0 เพราะ 289 00:13:51,020 --> 00:13:54,600 สิ่งที่คุณทำคุณ ยังไม่ได้ทำมาก 290 00:13:54,600 --> 00:13:58,100 ที่จะนำวิธีการอื่นในการทดสอบ 0 คุณได้เขียนจำนวนมาก C. และเรา 291 00:13:58,100 --> 00:13:58,880 ถามคุณเกี่ยวกับ C. 292 00:13:58,880 --> 00:14:02,310 >> สำหรับการทดสอบที่ 1 เรากำลังจะถามคุณเกี่ยวกับ PHP และ JavaScript ซึ่งคุณ 293 00:14:02,310 --> 00:14:03,490 ไม่ได้เขียนมากของ 294 00:14:03,490 --> 00:14:07,590 เรากำลังจะไปถามคุณเกี่ยวกับ C-รหัสที่ คุณยังไม่ได้เขียนเท่าของ 295 00:14:07,590 --> 00:14:09,130 สิ่ง C ขั้นสูงนี้ 296 00:14:09,130 --> 00:14:11,520 ดังนั้นแน่นอนสิ่งที่เราปฏิบัติ พูดคุยเกี่ยวกับในการบรรยายที่คุณ 297 00:14:11,520 --> 00:14:15,260 ไม่จำเป็นต้องทำ ในการแก้ปัญหาที่กำหนด 298 00:14:15,260 --> 00:14:17,870 >> การพูดที่คุณยังไม่ได้เขียน สแต็คในการแก้ปัญหาการตั้งค่า 299 00:14:17,870 --> 00:14:19,610 แต่มันก็เป็นในการบรรยาย 300 00:14:19,610 --> 00:14:22,530 นี่คือภาพที่ระดับสูงของ กองที่เราแสดงให้เห็นทุกปี 301 00:14:22,530 --> 00:14:26,180 มันเป็นสแต็คของในถาด โรงอาหารท้อง 302 00:14:26,180 --> 00:14:30,570 อยู่ในระดับสูงกองกำลังสุดท้าย ในครั้งแรกที่ออกโครงสร้างข้อมูล 303 00:14:30,570 --> 00:14:32,040 ซึ่งหมายความว่าคุณกำลังจะ ที่จะนำสิ่งใน - 304 00:14:32,040 --> 00:14:36,400 1, 3, 7, 12, 14, 0 เชิงลบ 305 00:14:36,400 --> 00:14:39,180 สิ่งหนึ่งที่ฉันไม่สามารถมี กล่าวว่า - ลบ 3, 0 306 00:14:39,180 --> 00:14:40,250 คุณนำสิ่งเหล่านี้ค่ะ 307 00:14:40,250 --> 00:14:42,940 และคนสุดท้ายที่คุณใส่ในเป็นครั้งแรกที่ อย่างใดอย่างหนึ่งที่จะออกมา 308 00:14:42,940 --> 00:14:44,170 >> เพื่อให้คุณมีสองงาน - 309 00:14:44,170 --> 00:14:45,260 การผลักดันและป๊อป 310 00:14:45,260 --> 00:14:49,180 ทั้งหมดของการวางในที่ฉันเป็น ชี้เช่นนี้จะมีการผลักดัน 311 00:14:49,180 --> 00:14:52,020 และแล้วเมื่อฉันมาถึงในการคว้า หรือบางสิ่งบางอย่างไปถึงด้านบนที่จะคว้า 312 00:14:52,020 --> 00:14:53,940 บางสิ่งบางอย่างที่เป็นป๊อป 313 00:14:53,940 --> 00:14:55,540 ดังนั้นเราจะใช้กอง 314 00:14:55,540 --> 00:14:57,870 และเราพบว่าพวกเขาในการบรรยาย ใช้อาร์เรย์ 315 00:14:57,870 --> 00:14:59,550 แต่คุณสามารถทำพวกเขา ใช้รายการการเชื่อมโยง 316 00:14:59,550 --> 00:15:01,770 สแต็คเป็นข้อมูลแนวคิด โครงสร้างไม่ชอบ 317 00:15:01,770 --> 00:15:03,760 หนึ่งในการดำเนินงานที่เฉพาะเจาะจง 318 00:15:03,760 --> 00:15:06,420 >> ดังนั้นสิ่งที่จะมีลักษณะอย่างไร 319 00:15:06,420 --> 00:15:07,970 ก็จะมีลักษณะชนิดเช่นนี้ 320 00:15:07,970 --> 00:15:10,840 คุณต้องการมีขนาดจำนวนเต็ม 321 00:15:10,840 --> 00:15:16,000 และคุณจะมีอาร์เรย์ของค่าที่ เรากำลังเรียกถาดเพราะนั่นคือ 322 00:15:16,000 --> 00:15:18,570 สิ่งที่ภาพเป็น เรา - int ถาด - 323 00:15:18,570 --> 00:15:21,740 แล้วบางส่วนความจุสูงสุด 324 00:15:21,740 --> 00:15:27,100 ดังนั้นสิ่งที่จะผลักดันให้มีลักษณะเป็นอย่างไร 325 00:15:27,100 --> 00:15:33,250 ดีถ้าเรามีกอง s แล้วที่จะผลักดัน บางสิ่งบางอย่างบนวินาที, เราจะได้รับ 326 00:15:33,250 --> 00:15:34,620 ขนาดของ s 327 00:15:34,620 --> 00:15:42,270 และที่จะต่อไป จุดเปิดของอาร์เรย์ของเรา 328 00:15:42,270 --> 00:15:50,510 ดังนั้นถ้าเรามีสามสิ่งในกองของเรา แล้วถาด 3 จะเป็นต่อไป 329 00:15:50,510 --> 00:15:54,290 จุดที่เปิดอยู่เนื่องจาก 0, 1, และ 2 จะเต็มไปขึ้นแล้ว 330 00:15:54,290 --> 00:16:01,790 >> ดังนั้นเราจึงใส่ค่าลงใน s.trays [s.size], จุดที่สาม 331 00:16:01,790 --> 00:16:06,290 แล้วเราเพิ่ม s.size ที่จะบอกว่า เดี๋ยวก่อนเรามีสามสิ่งที่ก่อนที่จะ 332 00:16:06,290 --> 00:16:07,400 ตอนนี้เรามีสี่ 333 00:16:07,400 --> 00:16:10,180 ดังนั้นครั้งต่อไปที่คุณผลักดันคุณ จะนำสิ่งที่เป็น 4 334 00:16:10,180 --> 00:16:15,560 หรือในครั้งต่อไปที่คุณป๊อปที่คุณกำลังจะ การมองไปที่ 3 แทน 4 หรืออะไรก็ตาม 335 00:16:15,560 --> 00:16:18,000 และแล้วเราก็จะกลับมาจริง กล่าวว่าเดี๋ยวก่อนเราประสบความสำเร็จ 336 00:16:18,000 --> 00:16:19,160 นี้ทำงาน 337 00:16:19,160 --> 00:16:22,060 ตามกฎของหัวแม่มือถ้าฟังก์ชั่นที่เป็น ควรที่จะกลับมาจริงหรือ 338 00:16:22,060 --> 00:16:26,370 เท็จเสมอกลับจริงคุณอาจจะ ได้ทำอะไรผิด 339 00:16:26,370 --> 00:16:28,350 ดังนั้นการทำงานนี้ 340 00:16:28,350 --> 00:16:32,400 >> ดีก็ทำงานได้ดีเป็นเวลา 1 และ 2 และ 3 และ 4 และห้า 341 00:16:32,400 --> 00:16:34,640 แต่ขอบอกว่าผมไปถึงความสามารถของฉัน 342 00:16:34,640 --> 00:16:38,750 ผมเคยทำงานแล้วเป็นปัญหาเพราะ ถ้าขนาดเป็นเช่นเดียวกับความสามารถในการฉัน 343 00:16:38,750 --> 00:16:43,340 ตอนนี้พยายามที่จะนำสิ่งที่เป็น อาร์เรย์ที่ฉันไม่ได้มีพื้นที่ 344 00:16:43,340 --> 00:16:46,980 ดังนั้นการตรวจสอบสั้น ๆ เพื่อแก้ไขปัญหานี้ 345 00:16:46,980 --> 00:16:51,630 หากความจุ == s.size กลับเท็จ 346 00:16:51,630 --> 00:16:54,130 มิฉะนั้นไปและทำสิ่งที่เราทำ 347 00:16:54,130 --> 00:16:55,660 ดังนั้นอะไรที่เราสามารถขอ เกี่ยวกับกอง? 348 00:16:55,660 --> 00:16:56,460 อะไรที่คุณควรศึกษา? 349 00:16:56,460 --> 00:16:57,690 อะไรที่คุณควรปฏิบัติ 350 00:16:57,690 --> 00:17:01,030 >> ดีป๊อปใช้ 351 00:17:01,030 --> 00:17:02,370 แล้วเราไม่ได้ผลักดัน 352 00:17:02,370 --> 00:17:04,280 ฉันจะแก้ไขที่ 353 00:17:04,280 --> 00:17:08,180 การดำเนินการที่ไม่อาร์เรย์ที่ คุณใช้รายการที่เชื่อมโยงอาจจะ 354 00:17:08,180 --> 00:17:09,390 การดำเนินการที่ไม่ int- 355 00:17:09,390 --> 00:17:10,940 เราได้ ints ที่นี่ 356 00:17:10,940 --> 00:17:11,880 แต่มันจะได้รับการลอย 357 00:17:11,880 --> 00:17:13,010 ฉันจะได้รับสาย 358 00:17:13,010 --> 00:17:14,290 มันจะได้รับดาวถ่าน 359 00:17:14,290 --> 00:17:17,960 ดูแบบทดสอบผ่านมาสำหรับชนิดของ คำถามที่เราได้ถามเกี่ยวกับกอง 360 00:17:17,960 --> 00:17:20,000 >> ผมจะบอกว่าเราอยู่ภายใต้กองรอบ เช่นเดียวกับที่เราได้ครอบคลุมพวกเขาใน 361 00:17:20,000 --> 00:17:20,540 ปีที่ผ่านมา 362 00:17:20,540 --> 00:17:24,400 ดังนั้นคำถามคำถามควร เป็นข้อบ่งชี้ที่ดี 363 00:17:24,400 --> 00:17:27,010 ก้าวไปข้างหน้าได้เร็วขึ้นคิว 364 00:17:27,010 --> 00:17:28,200 พวกเขากำลังเหมือนกอง 365 00:17:28,200 --> 00:17:29,960 แต่พวกเขากำลังครั้งแรกในครั้งแรกออก 366 00:17:29,960 --> 00:17:33,530 หากคุณเป็นชาวอังกฤษคิวคำ อาจจะทำให้ความรู้สึกมากกับคุณ 367 00:17:33,530 --> 00:17:36,390 มิฉะนั้นคุณอาจจะมี ได้ยินมันเป็นเส้น 368 00:17:36,390 --> 00:17:38,120 พวกเขาทำงานเหมือนสาย ที่ร้านแอปเปิ้ล 369 00:17:38,120 --> 00:17:40,740 คนแรกที่จะปรากฏขึ้นที่ 3:00 ในช่วงเช้าเป็นครั้งแรกที่ 370 00:17:40,740 --> 00:17:42,880 ผู้ที่จะซื้อ iPad ของเขา 371 00:17:42,880 --> 00:17:44,260 >> ดังนั้นเราจึงมีการดำเนินงานสอง - 372 00:17:44,260 --> 00:17:45,720 enqueue และ dequeue 373 00:17:45,720 --> 00:17:47,560 enqueue ทำให้คนที่อยู่ในสาย 374 00:17:47,560 --> 00:17:50,070 Dequeue ดึงแรก ผู้ออกจากสาย 375 00:17:50,070 --> 00:17:52,640 อีกครั้งเราสามารถใช้ นี้มีมากมาย 376 00:17:52,640 --> 00:17:54,880 ดังนั้นสิ่งที่เรา struct แสดงให้เห็นว่าในการบรรยาย? 377 00:17:54,880 --> 00:17:57,660 มันเป็นหนึ่งในนี้ 378 00:17:57,660 --> 00:17:59,300 อีกครั้งตัวเลข 379 00:17:59,300 --> 00:18:02,020 อีกครั้งขนาดและด้านหน้าสิ่งใหม่นี้ 380 00:18:02,020 --> 00:18:04,880 ทำไมจึงมีสิ่งที่เรียกว่าด้านหน้า 381 00:18:04,880 --> 00:18:07,050 มันเป็นดัชนีของต่อไป องค์ประกอบ dequeue 382 00:18:07,050 --> 00:18:12,210 มันเป็นเพียงแค่ภายในการติดตาม ผู้ชายคนแรกที่จะแสดงขึ้นดังนั้นเราจึงว่า 383 00:18:12,210 --> 00:18:15,005 สามารถดึงมันออกมาเมื่อเราต้องการที่จะ 384 00:18:15,005 --> 00:18:19,322 >> แน่นอนดูบันทึกการบรรยายและพยายาม ในการดำเนินการ enqueue และ dequeue 385 00:18:19,322 --> 00:18:21,700 เมื่อศึกษาสำหรับการทดสอบ 386 00:18:21,700 --> 00:18:23,190 สิ่งสำคัญที่จะคิดเกี่ยวกับ 387 00:18:23,190 --> 00:18:27,260 ห่อรอบหน้าถ้าบวก ขนาดจบลงด้วยการที่ใหญ่กว่าความจุ 388 00:18:27,260 --> 00:18:32,670 อีกครั้งถ้าโครงสร้างของคุณเต็ม คุณกำลังจะมีปัญหา 389 00:18:32,670 --> 00:18:34,780 ตารางแฮชคุณเคยเห็นมาก่อน 390 00:18:34,780 --> 00:18:39,820 ส่วนใหญ่ของคุณอาจจะนำมาใช้ เหล่านี้ pset6 บน 391 00:18:39,820 --> 00:18:44,210 มันเป็นโครงสร้างที่มีจุดมุ่งหมายเพื่อ O (1) แทรกเวลาคงที่และ O (1) 392 00:18:44,210 --> 00:18:46,430 ค้นหาเวลาคงที่ 393 00:18:46,430 --> 00:18:49,760 >> ใน CS50 เราดำเนินการเช่นนี้ อาร์เรย์ของรายการเชื่อมโยง 394 00:18:49,760 --> 00:18:53,690 ส่วนประกอบสำคัญในการตารางแฮช เป็นฟังก์ชันแฮช 395 00:18:53,690 --> 00:18:58,350 ดังนั้นจะแปลงข้อมูลของคุณสมมติว่า คำพจนานุกรมเป็นตัวเลข 396 00:18:58,350 --> 00:18:59,560 ซึ่งเป็นไปได้ที่ดัชนีของเรา 397 00:18:59,560 --> 00:19:01,410 และเราจะใช้ดัชนีที่ เป็น array ของเรา 398 00:19:01,410 --> 00:19:05,374 ดังนั้นนี่คือภาพเล็ก ๆ น่ารัก จาก study.50.net 399 00:19:05,374 --> 00:19:08,060 เราโยนคำทั้งหมดลงใน ฟังก์ชันแฮชของเรา 400 00:19:08,060 --> 00:19:10,950 และฟังก์ชันแฮชบอกเรา ที่จะนำคำเหล่านี้ 401 00:19:10,950 --> 00:19:15,650 >> นี้ดีมากในประเทศที่ มีเพียงคำเดียวสำหรับทุกช่อง 402 00:19:15,650 --> 00:19:20,480 แต่เป็นคุณจำจาก pset6 มี เป็นคำมากกว่าช่อง 403 00:19:20,480 --> 00:19:23,080 ดังนั้นสิ่งที่เกิดขึ้นเมื่อคุณ ได้รับการปะทะกันหรือไม่ 404 00:19:23,080 --> 00:19:26,730 แทนการจัดเก็บค่าหนึ่งใน สมมติว่าตารางแฮชที่ 3 คุณ 405 00:19:26,730 --> 00:19:27,990 เก็บรายการที่เชื่อมโยง 406 00:19:27,990 --> 00:19:32,900 ดังนั้นแทนที่จะมีแคนตาลูป ที่นี่คุณจะมีรายการที่เชื่อมโยง 407 00:19:32,900 --> 00:19:34,190 ที่โหนดแรกคือแคนตาลูป 408 00:19:34,190 --> 00:19:35,260 และโหนดต่อไปคือแมว 409 00:19:35,260 --> 00:19:38,970 และโหนดที่สามคือการชนกันให้ พูดเพราะคำเหล่านี้เริ่มต้น 410 00:19:38,970 --> 00:19:41,110 C. ด้วย 411 00:19:41,110 --> 00:19:42,700 >> ดังนั้นส่วนใหญ่ของคุณทำอย่างนี้เพื่อ pset6 412 00:19:42,700 --> 00:19:45,685 หากคุณไม่ได้ทำตารางแฮชที่ pset6 และคุณพยายามที่สิ่งที่ต้องการ 413 00:19:45,685 --> 00:19:47,720 Trie ที่แน่นอนตรวจสอบตารางแฮช 414 00:19:47,720 --> 00:19:50,650 ถ้าคุณไม่ทำใน pset6 แน่นอน ตรวจสอบตารางแฮช 415 00:19:50,650 --> 00:19:53,610 และถ้าคุณคิดว่ามันเกี่ยวกับ pset6 และมันไม่ได้ ทำงานออกมาค่อนข้างถูกต้องและคุณ 416 00:19:53,610 --> 00:19:56,150 มีจำนวนมากของปัญหากับมันแน่นอน ตรวจสอบตารางแฮช 417 00:19:56,150 --> 00:20:01,610 ดังนั้นบทเรียนจริงๆแน่นอน ตรวจสอบตารางแฮช 418 00:20:01,610 --> 00:20:07,130 >> ชนกลุ่มน้อยที่ใหญ่ของคุณได้ลอง ออกพยายามที่ pset6 419 00:20:07,130 --> 00:20:08,570 ภาพระดับสูง 420 00:20:08,570 --> 00:20:15,150 มันเป็นบางอย่างเช่นนี้ซึ่งแต่ละ โหนดมีชุดของเด็กที่แต่ละ 421 00:20:15,150 --> 00:20:17,100 เด็กที่สอดคล้องกับตัวอักษรที่ 422 00:20:17,100 --> 00:20:20,520 และทุกโหนดยังกล่าวว่า เฮ้ฉันคำ 423 00:20:20,520 --> 00:20:25,933 ดังนั้นในกรณีนี้คำว่าแมกซ์เวล, ถ้าคุณทำตามเอ็มเพื่อที่จะ 424 00:20:25,933 --> 00:20:28,530 X-W-E-L-L แล้วทำตามมันมากขึ้นอย่างใดอย่างหนึ่ง 425 00:20:28,530 --> 00:20:32,800 และคุณจะได้รับสัญลักษณ์นี้เดลต้าซึ่ง เรามีความหมายที่จะหมายถึงนี้คือคำ 426 00:20:32,800 --> 00:20:34,780 ดังนั้นแมกซ์เวลเป็นคำ 427 00:20:34,780 --> 00:20:38,430 สันดอนเหล่านี้ตลอด signifying ซึ่งสิ่งที่เป็นคำพูดและการที่ 428 00:20:38,430 --> 00:20:40,360 สิ่งที่ไม่ 429 00:20:40,360 --> 00:20:46,400 >> ดังนั้นใน pset6, ข้อมูลที่เราเก็บไว้ ควบคู่ไปกับการใด ๆ ของโหนดของเราคือ "ผม 430 00:20:46,400 --> 00:20:52,630 คำ. "และสิ่งดีๆเกี่ยวกับความพยายาม คือพวกเขาแสดงให้เห็นถึงการใส่และ 431 00:20:52,630 --> 00:20:55,080 ค้นหาใน O (ความยาวของคำ) 432 00:20:55,080 --> 00:20:59,450 ดังนั้นเพียงแค่จะได้รับผ่านแมกซ์เวลก็ M--X-W-E-L-L ดังนั้นเจ็ดหรือแปด - 433 00:20:59,450 --> 00:21:00,360 ฉันไม่สามารถนับ - 434 00:21:00,360 --> 00:21:03,920 ขั้นตอนในการได้รับการสิ้นสุด และตรวจสอบสิ่งที่ออก 435 00:21:03,920 --> 00:21:06,800 ดังนั้นการดำเนินการอย่างรวดเร็วที่นี่ 436 00:21:06,800 --> 00:21:10,230 ร็อบเดินผ่านที่เชื่อมโยง รายการในการชันสูตรศพของเขา 437 00:21:10,230 --> 00:21:11,600 เพื่อตรวจสอบว่า 438 00:21:11,600 --> 00:21:11,720 ขอโทษ 439 00:21:11,720 --> 00:21:13,240 เดินผ่าน Trie ในการชันสูตรศพของเขา 440 00:21:13,240 --> 00:21:14,260 เพื่อตรวจสอบว่า 441 00:21:14,260 --> 00:21:24,410 >> แต่คุณโดยทั่วไปมีแต่ละโหนดมี 27 ตัวชี้ไปยังโหนดถั​​ดไปและหนึ่ง 442 00:21:24,410 --> 00:21:27,050 บูลลีฉันคำ 443 00:21:27,050 --> 00:21:31,530 ตรวจสอบชันสูตรศพของร็อบสำหรับวิธีการ นี้จริงจะดำเนินการ 444 00:21:31,530 --> 00:21:34,750 โครงสร้างสุดท้ายของเราต้นไม้ของเรา และต้นไม้ค้นหาแบบไบนารี 445 00:21:34,750 --> 00:21:41,530 ดังนั้นมองไปที่เหล่านี้เหล่านี้ถูกปกคลุม ล่าสุดสัปดาห์ที่ 8 วันจันทร์ 446 00:21:41,530 --> 00:21:46,960 ต้นไม้คล้ายกับ Trie ยกเว้นคุณ ไม่จำเป็นต้องมี 27 โหนดที่ 447 00:21:46,960 --> 00:21:47,500 แต่ละจุด 448 00:21:47,500 --> 00:21:52,820 และคุณไม่ได้มีข้อมูลนี้ในแต่ละ ขั้นตอนที่หมายว่า - 449 00:21:52,820 --> 00:21:54,030 เส้นทางที่ไม่ได้เรื่อง 450 00:21:54,030 --> 00:22:00,870 ในขณะที่ Trie ที่เส้นทางจากบนลง ด้านล่าง, แมกซ์เวลเป็นสิ่งสำคัญสำหรับเรา 451 00:22:00,870 --> 00:22:05,270 >> แต่แต่ละโหนดมีหลาย เด็กอาจจะ 452 00:22:05,270 --> 00:22:07,290 เรามีบางคำศัพท์มากขึ้น 453 00:22:07,290 --> 00:22:09,530 รากของต้นไม้ เป็นที่ส่วนบนสุด 454 00:22:09,530 --> 00:22:12,520 และเราบอกว่า bottommost มาก โหนดที่ไม่มี 455 00:22:12,520 --> 00:22:14,530 เด็กที่มีใบ 456 00:22:14,530 --> 00:22:18,040 ดังนั้นเช่น Trie ที่ต้นไม้เป็น โครงสร้างของโหนด 457 00:22:18,040 --> 00:22:21,490 ชนิดที่พบมากของต้นไม้ที่เรากำลังจะ ที่จะพูดคุยเกี่ยวกับการเป็นต้นไม้ไบนารีที่ 458 00:22:21,490 --> 00:22:26,040 แต่ละโหนดไม่มีเด็กหรือ เด็กคนหนึ่งหรือเด็กสองคน 459 00:22:26,040 --> 00:22:28,890 ดังนั้นภาพที่นี่ไม่ได้ ต้นไม้ไบนารีเพราะ 460 00:22:28,890 --> 00:22:32,890 3 โหนดมีลูกสามคน 461 00:22:32,890 --> 00:22:38,140 >> แต่ถ้าเราเป็นคนที่จะไม่สนใจเหล่านั้นส่วนที่เหลือ มันเป็นต้นไม้ไบนารีเพราะมัน 462 00:22:38,140 --> 00:22:43,200 แสดงให้เห็นถึงคุณสมบัติที่แต่ละโหนด มีศูนย์หนึ่งหรือสองลูก 463 00:22:43,200 --> 00:22:46,400 ดังนั้นวิธีที่เราสามารถแสดงในรหัส? 464 00:22:46,400 --> 00:22:51,460 เราอาจจะมีโหนดที่แต่ละโหนดมี จำนวนเต็มภายในของมันเป็นอย่างดี 465 00:22:51,460 --> 00:22:55,590 เป็นตัวชี้ไปยังต้นไม้ทางด้านซ้าย และตัวชี้ไปยังต้นไม้ 466 00:22:55,590 --> 00:22:59,510 ที่ถูกต้องเพื่อให้เด็กสองคน 467 00:22:59,510 --> 00:23:00,880 วิธีนี้เป็นประโยชน์ 468 00:23:00,880 --> 00:23:05,740 ดีถ้าเราทำกฎระเบียบเกี่ยวกับการที่เรา ใส่โหนดเราสามารถทำให้การค้นหาได้เร็วขึ้น 469 00:23:05,740 --> 00:23:10,630 >> ดังนั้นจึงมีแนวคิดของการค้นหาแบบไบนารี ต้นไม้ที่โหนดทั้งหมดใน 470 00:23:10,630 --> 00:23:14,420 ทรีย่อยด้านซ้ายมีค่าที่น้อยลง กว่าโหนดที่เรากำลังมองหาที่ 471 00:23:14,420 --> 00:23:17,880 และโหนดทั้งหมดในทรีย่อยขวา มีค่ามากขึ้น 472 00:23:17,880 --> 00:23:18,660 กว่าโหนดราก 473 00:23:18,660 --> 00:23:20,670 ตอนนี้ที่ดูเหมือนว่ามากของคำ 474 00:23:20,670 --> 00:23:23,770 ฉันจะใส่ไว้ในคู่ของ คำพูดและแสดงให้คุณเห็นภาพ 475 00:23:23,770 --> 00:23:27,010 ดังนั้นนี่คือตัวอย่างของ ต้นไม้ค้นหาไบนารี 476 00:23:27,010 --> 00:23:28,770 เห็นว่าเราเริ่มต้นด้วย 10 477 00:23:28,770 --> 00:23:31,780 ทุกอย่างทางด้านซ้ายของ 10 มีขนาดเล็กกว่ามัน 478 00:23:31,780 --> 00:23:33,130 และทุกอย่างไปทางขวา มีขนาดใหญ่กว่ามัน 479 00:23:33,130 --> 00:23:37,620 >> แต่มากไปกว่านั้นในแต่ละโหนด ต้นไม้แสดงออกถึงสถานที่ให้บริการนี​​้ 480 00:23:37,620 --> 00:23:42,110 ดังนั้นโหนด 7 มี 3 ถึง ซ้ายและ 9 ไปทางขวา 481 00:23:42,110 --> 00:23:44,440 ดังนั้นทุกคนที่มีขนาดเล็กกว่า 10 482 00:23:44,440 --> 00:23:50,470 แต่กำลังมองหาที่เพียง แต่ผู้, 7 มี 3 ของด้านซ้ายและ 9 ไปทางขวาของ 483 00:23:50,470 --> 00:23:56,100 และเช่นเดียวกันทางด้านขวา, 15 มี 14 ไปทางซ้ายและ 50 ไปทางขวาของ 484 00:23:56,100 --> 00:24:03,770 ดังนั้นสามโหนดที่นั่น, 15, 14, และ 50 นอกจากนี้ยังมีต้นไม้ไบนารีที่ถูกต้อง 485 00:24:03,770 --> 00:24:05,480 หรือต้นไม้ค้นหาแบบไบนารีที่ถูกต้อง 486 00:24:05,480 --> 00:24:07,250 และพวกเขากำลังทั้งหมดที่ใหญ่กว่า 10 487 00:24:07,250 --> 00:24:08,960 ดังนั้นพวกเขาจึงได้รับอนุญาตให้เป็น ด้านขวามี 488 00:24:08,960 --> 00:24:09,940 มีคำถามหรือไม่ 489 00:24:09,940 --> 00:24:12,580 >> ผู้ชม: คุณจัดการอย่างไรเมื่อ คุณมีสองสามัคคี? 490 00:24:12,580 --> 00:24:12,850 >> R.J. กัว: ใช่ 491 00:24:12,850 --> 00:24:16,550 คุณจะจัดการกับสองค่า ที่มีความเหมือนกันหรือไม่ 492 00:24:16,550 --> 00:24:21,465 บางต้นไม้ค้นหาแบบไบนารีบอกว่าคุณ ไม่สนใจรายการที่ซ้ำกันเพราะเป้าหมายคือ 493 00:24:21,465 --> 00:24:24,280 เพียงแค่จะบอกว่าที่ผมเคยเห็น สิ่งเหล่านี้เพื่อให้ห่างไกล 494 00:24:24,280 --> 00:24:28,120 บางต้นไม้ค้นหาแบบไบนารีคุณสามารถพูด มีนับภายในของโหนด 495 00:24:28,120 --> 00:24:32,000 คนอื่น ๆ อาจจะบอกว่าทุกอย่างเพื่อ ด้านซ้ายมีค่าน้อยกว่าหรือเท่ากับ 496 00:24:32,000 --> 00:24:33,470 และทุกอย่างไปทางขวา มีค่ามากกว่า 497 00:24:33,470 --> 00:24:36,520 >> มันก็ขึ้นอยู่กับสิ่งที่ ปัญหาที่คุณกำลังแก้ 498 00:24:36,520 --> 00:24:40,840 ดังนั้นในพจนานุกรมเช่นคุณ จะไม่เกี่ยวกับการดูแลรายการที่ซ้ำกัน 499 00:24:40,840 --> 00:24:41,490 คุณจะโยนพวกเขาออก 500 00:24:41,490 --> 00:24:44,719 แต่บางปัญหาอื่น ๆ ที่คุณอาจสนใจ 501 00:24:44,719 --> 00:24:49,242 >> ผู้ชม: มันเป็นไปได้ที่จะมี 1 ไปทางซ้ายของ 15 ซึ่ง 502 00:24:49,242 --> 00:24:50,590 น้อยกว่า 10? 503 00:24:50,590 --> 00:24:51,885 >> R.J. กัว: เลขที่ 504 00:24:51,885 --> 00:24:56,570 14 ถ้าที่นี่เป็น 1 จะนี้ ไม่ได้เป็นต้นไม้ค้นหาแบบไบนารีที่ถูกต้อง 505 00:24:56,570 --> 00:25:00,840 เพราะทุกอย่างที่ด้านขวาของ 10 ที่จะมีขนาดใหญ่กว่าก็มี 506 00:25:00,840 --> 00:25:02,300 และเราจะเห็นว่าทำไม 507 00:25:02,300 --> 00:25:07,960 ถ้าอยู่ในดินแดนของการค้นหาเป้าหมายของฉันคือ เพื่อหา 14 ผมเริ่มต้นที่ราก 508 00:25:07,960 --> 00:25:08,500 ดังนั้นผมมอง 509 00:25:08,500 --> 00:25:08,710 ตกลง 510 00:25:08,710 --> 00:25:10,670 เรากำลังจะเริ่มต้นที่ราก 511 00:25:10,670 --> 00:25:12,500 มองไปที่ 10 512 00:25:12,500 --> 00:25:16,050 >> ดี, 14, เป้าหมายของเรา มีขนาดใหญ่กว่า 10 513 00:25:16,050 --> 00:25:17,370 ดังนั้นมันจะต้องเป็นที่อยู่ด้านขวา 514 00:25:17,370 --> 00:25:21,780 นี้จะคล้ายกับโทรศัพท์มือถือทั้งหมด สิ่งที่เราได้ทำหนังสือไบนารี 515 00:25:21,780 --> 00:25:23,720 ค้นหามี 516 00:25:23,720 --> 00:25:26,430 แต่แทนที่จะค้นหาไบนารี ในอาร์เรย์เราไบนารี 517 00:25:26,430 --> 00:25:28,490 ค้นหาในต้นไม้ต้นนี้ 518 00:25:28,490 --> 00:25:31,260 ดังนั้นเรายังคงมองหา 14 519 00:25:31,260 --> 00:25:32,480 ดี 14 มีขนาดเล็กกว่า 15 520 00:25:32,480 --> 00:25:36,430 ดังนั้นถ้ามันอยู่ในต้นไม้ของเราก็ต้อง ต้องอยู่ในพื้นที่นี้ที่นี่ 521 00:25:36,430 --> 00:25:39,680 มันจะต้องไปทางขวาของ 10 และ 15 ทางด้านซ้ายของ 522 00:25:39,680 --> 00:25:42,250 >> และเพื่อให้เราตรวจสอบโหนดนี้ 523 00:25:42,250 --> 00:25:45,790 และ yay เราพบ 14 524 00:25:45,790 --> 00:25:46,760 ผมไม่ได้ไปที่จะเดินผ่านมัน 525 00:25:46,760 --> 00:25:48,090 แต่ที่นี่คือรหัส 526 00:25:48,090 --> 00:25:49,690 เป็นจริงค่อนข้าง ตรงไปตรงมา 527 00:25:49,690 --> 00:25:52,630 เพราะเป็นซ้ำ 528 00:25:52,630 --> 00:25:55,420 สิ่งที่เราสามารถขอให้คุณทำในการตอบคำถามได้หรือไม่ 529 00:25:55,420 --> 00:25:57,000 เราจะขอให้คุณเขียนรหัสนี้ 530 00:25:57,000 --> 00:25:59,170 เราจะขอให้คุณมองไปที่รหัสนี้ และปรับเปลี่ยนรหัสนี้และอธิบายสิ่งที่ 531 00:25:59,170 --> 00:26:00,210 มันทำ 532 00:26:00,210 --> 00:26:00,390 ใช่ 533 00:26:00,390 --> 00:26:00,770 คำถาม? 534 00:26:00,770 --> 00:26:04,240 >> ผู้ชม: มีสไลด์เหล่านี้ไปได้ ทำให้ใช้ได้ในฐานะที่พวกเขาเป็นครั้งสุดท้าย 535 00:26:04,240 --> 00:26:04,740 >> R.J. กัว: ใช่ 536 00:26:04,740 --> 00:26:06,460 ดังนั้นสไลด์เหล่านี้แน่นอนจะ ได้รับการโพสต์ 537 00:26:06,460 --> 00:26:08,640 >> ผู้ชม: พวกเขากำลังโพสต์จริง ตอนนี้ในเว็บไซต์ของ 538 00:26:08,640 --> 00:26:10,020 เดวิดก็ไม่ว่า 539 00:26:10,020 --> 00:26:12,720 >> R.J. กัว: สไลด์เป็น ตอนนี้ในเว็บไซต์ของ 540 00:26:12,720 --> 00:26:16,420 ฉันอาจจะแพทช์ขึ้นคู่ของ ความผิดพลาดที่ผมสังเกตเห็นและแก้ไขปัญหาได้ 541 00:26:16,420 --> 00:26:19,940 แต่มีในปัจจุบัน รุ่นบนเว็บไซต์ 542 00:26:19,940 --> 00:26:21,820 อื่น ๆ สิ่งที่เราจะขอให้คุณทำ - 543 00:26:21,820 --> 00:26:23,790 เขียนแทรก 544 00:26:23,790 --> 00:26:27,490 เขียนรุ่นซ้ำของ ฟังก์ชั่นซ้ำเราก็แสดงให้เห็นว่าคุณ 545 00:26:27,490 --> 00:26:32,520 หรือพูดคุยเกี่ยวกับสิ่งเหล่านี้เช่นเดียวกับใน ย่อหน้าในคำในประโยค 546 00:26:32,520 --> 00:26:35,760 เปรียบเทียบเวลาการทำงานและอธิบาย สิ่งที่คุณจะต้องการที่จะใช้เลขฐานสอง 547 00:26:35,760 --> 00:26:39,200 ต้นไม้ค้นหาแทน สับตารางตัวอย่างเช่น 548 00:26:39,200 --> 00:26:43,580 >> ดังนั้นเข้าใจโครงสร้างเหล่านี้ ที่ระดับลึกสวย 549 00:26:43,580 --> 00:26:47,440 ทำความเข้าใจเกี่ยวกับวิธีการเขียนพวกเขาวิธีการ ใช้พวกเขาวิธีการพูดคุยเกี่ยวกับพวกเขา 550 00:26:47,440 --> 00:26:50,270 และคุณจะถูกตั้งค่าทั้งหมด 551 00:26:50,270 --> 00:26:50,630 คำถาม? 552 00:26:50,630 --> 00:26:55,070 >> ผู้ชม: เมื่อคุณเขียน ต้นไม้ค้นหาแบบไบนารีอย่างไรคุณ 553 00:26:55,070 --> 00:27:01,460 ตรวจสอบสิ่งที่คุ้มค่าให้กับ ทำให้มันเป็นรากหรือไม่ 554 00:27:01,460 --> 00:27:06,120 >> R.J. กัว: ดังนั้นคำถามคือสิ่งที่ ค่าที่คุณให้เป็นรากหรือไม่ 555 00:27:06,120 --> 00:27:08,760 ทั้งนี้ขึ้นอยู่กับรหัสของคุณคุณ อาจจะมีรากทั่วโลก 556 00:27:08,760 --> 00:27:14,290 ดังนั้นคุณอาจจะมีแนวโน้มที่จะมีอยู่ใน pset6 ตารางแฮชทั่วโลก 557 00:27:14,290 --> 00:27:18,640 หรือคุณอาจจะผ่านราก ในเป็นอาร์กิวเมนต์ 558 00:27:18,640 --> 00:27:23,810 ดังนั้นฟังก์ชันการค้นหาที่นี่ ใช้อาร์กิวเมนต์โหนด * 559 00:27:23,810 --> 00:27:27,420 และเพื่อให้สิ่งที่โหนดคุณจะเกิดขึ้น กำลังมองหาที่เป็นหนึ่งที่คุณกำลังรักษา 560 00:27:27,420 --> 00:27:31,510 เป็นรากของคุณเมื่อคุณผ่านมันค่ะ 561 00:27:31,510 --> 00:27:32,320 และฉันตั้งค่าทั้งหมด 562 00:27:32,320 --> 00:27:33,480 ผู้ที่มีสไลด์ของฉัน 563 00:27:33,480 --> 00:27:35,940 คนต่อไปสามารถมาแลกเปลี่ยน ในแล็ปท็อปและไมโครโฟน 564 00:27:35,940 --> 00:27:47,390 565 00:27:47,390 --> 00:27:49,760 >> ROB สลิง: ผมคิดว่าผมอาจจะมี ตีความคำถามที่แตกต่างกัน 566 00:27:49,760 --> 00:27:53,826 แต่ผมตีความว่ามันเป็นถ้าคุณมี หมายเลข 1, 2, และ 3 ทำอย่างไรเรา 567 00:27:53,826 --> 00:27:56,720 รู้เพื่อให้ 2 ราก เมื่อเทียบกับ 1 หรือ 3? 568 00:27:56,720 --> 00:27:59,480 ถ้าเราทำ 2 รากแล้วก็อย่าง 1 และ 3 ไปทางซ้ายและขวา 569 00:27:59,480 --> 00:28:04,610 แต่ถ้า 1 เป็นรากแล้วก็ 1 ถึง ด้านบน 2 ด้านขวา 3 ไปทางขวา 570 00:28:04,610 --> 00:28:10,880 ดังนั้นโดยปกติแล้วคุณไม่ทราบ สิ่งที่จะทำให้ราก 571 00:28:10,880 --> 00:28:15,400 และสำหรับขั้นตอนวิธีการใด ๆ ที่เรากำลังคาดหวังว่าจะ ให้คุณเพียงแค่สิ่งแรกที่คุณ 572 00:28:15,400 --> 00:28:16,680 แทรกจะเป็นราก 573 00:28:16,680 --> 00:28:19,890 หรือเราต้องการให้คุณต้นไม้ไบนารีที่ ที่มีอยู่แล้วที่มีราก 574 00:28:19,890 --> 00:28:24,760 แต่ขั้นตอนวิธีการอื่น ๆ ที่มีอยู่ดังกล่าวว่า รากจะปรับปรุงเพื่อที่ว่าถ้าคุณ 575 00:28:24,760 --> 00:28:28,370 สิ้นสุดในสถานการณ์ที่เป็น 1, 2, 3 ก็จะปรับปรุงโดยอัตโนมัติไปยัง 576 00:28:28,370 --> 00:28:30,900 2 ทำให้รากใหม่เพื่อให้ ก็ยังคงมีความสมดุลเป็นอย่างดี 577 00:28:30,900 --> 00:28:33,750 578 00:28:33,750 --> 00:28:34,833 >> ANGELA LI: Cool 579 00:28:34,833 --> 00:28:36,170 เฮ้ 580 00:28:36,170 --> 00:28:37,810 ฉันแองเจลา 581 00:28:37,810 --> 00:28:42,490 และฉันจะเสร็จสิ้นการปิด C ของเรา แล้วไปเป็นบางส่วนของเว็บไซต์ของเรา 582 00:28:42,490 --> 00:28:43,120 เทคโนโลยี - 583 00:28:43,120 --> 00:28:46,570 HTTP, HTML, CSS และ 584 00:28:46,570 --> 00:28:49,610 ดังนั้นสิ่งแรกที่เป็นบัฟเฟอร์ การโจมตีล้น 585 00:28:49,610 --> 00:28:53,070 ดังนั้นลองมาดูที่รหัสนี้ 586 00:28:53,070 --> 00:28:54,260 มันง่ายสวย 587 00:28:54,260 --> 00:28:55,460 มีฟังก์ชั่น foo เป็น 588 00:28:55,460 --> 00:28:56,990 และจะไม่กลับอะไร 589 00:28:56,990 --> 00:29:00,950 แต่จะใช้เวลาในการชี้ สตริงที่เรียกว่าบาร์ 590 00:29:00,950 --> 00:29:04,920 >> และก็จะต้องประกาศนี้ บัฟเฟอร์ซึ่งเป็นตัวละคร 591 00:29:04,920 --> 00:29:07,690 อาร์เรย์ที่มี 12 ช่อง 592 00:29:07,690 --> 00:29:11,730 และใช้ memcpy ซึ่งเป็นเพียง ฟังก์ชั่นที่คัดลอกจากที่อยู่อย่างใดอย่างหนึ่ง 593 00:29:11,730 --> 00:29:12,910 เข้าไปอีก 594 00:29:12,910 --> 00:29:19,400 ดังนั้นนี่คือการพยายามที่จะคัดลอกลงใน บัฟเฟอร์ของเราจากสิ่งที่ 595 00:29:19,400 --> 00:29:21,140 แถบจะชี้ไปที่ 596 00:29:21,140 --> 00:29:24,640 ดังนั้นความคิดใด ๆ สิ่งที่ผิด ที่มีรหัสนี้ 597 00:29:24,640 --> 00:29:27,568 598 00:29:27,568 --> 00:29:30,830 >> ผู้ชม: ถ้าแถบมีความยาวมากกว่า C พวกเขาจะเขียนทับ 599 00:29:30,830 --> 00:29:31,520 >> ANGELA LI: ใช่ว่า 600 00:29:31,520 --> 00:29:34,200 เรามีการรับประกันว่าแถบ เป็นไปได้น้อยกว่า 12 601 00:29:34,200 --> 00:29:36,080 เราเพียง แต่ทำบางจำนวนข้อ 12 602 00:29:36,080 --> 00:29:38,380 และเราก็ต้องการให้ความหวังว่า ป้อนข้อมูลผู้ใช้ของเราจะน้อยกว่า 603 00:29:38,380 --> 00:29:40,440 12 ตัวอักษรยาว 604 00:29:40,440 --> 00:29:46,320 ดังนั้นในโลกที่เหมาะถ้าใส่เรา มักจะเป็นที่คาดหวังแล้วเราจะได้รับ 605 00:29:46,320 --> 00:29:47,550 บางอย่างเช่นสวัสดี 606 00:29:47,550 --> 00:29:48,920 ที่น้อยกว่า 12 ตัวอักษร 607 00:29:48,920 --> 00:29:51,870 จะได้รับการอ่านในถ่านค 608 00:29:51,870 --> 00:29:53,280 แล้วเราทำอะไรกับมัน 609 00:29:53,280 --> 00:29:54,800 มันไม่ได้เรื่องจริงๆ 610 00:29:54,800 --> 00:29:59,740 >> แต่เป็นคนที่เป็นอันตรายสามารถทำ บางสิ่งบางอย่างมากขึ้นเช่นนี้พวกเขาอยู่ที่ไหน 611 00:29:59,740 --> 00:30:04,760 ทำให้เรามีสิ่งที่บาร์จะชี้ไปยัง ก็จะชี้ไปที่ array ใหญ่นี้ 612 00:30:04,760 --> 00:30:06,280 เพียงของ 613 00:30:06,280 --> 00:30:10,680 และนี่คือวิธีที่ยาวกว่า 12 614 00:30:10,680 --> 00:30:13,830 ดังนั้นมันจะไปตลอดทาง ลงที่นี่เพื่อกลับมาที่ 615 00:30:13,830 --> 00:30:15,420 ที่อยู่ที่ใช้จะเป็น 616 00:30:15,420 --> 00:30:17,860 ดังนั้นสมมติว่าฟังก์ชั่นนี้ เรียกว่า foo 617 00:30:17,860 --> 00:30:20,970 บางที foo ถูกเรียกโดยอื่น ฟังก์ชั่นซึ่งถูกเรียกโดยหลัก 618 00:30:20,970 --> 00:30:24,890 ดังนั้นเมื่อ foo ทำงานก็ต้อง ที่จะทราบว่าจะกลับไปที่ 619 00:30:24,890 --> 00:30:29,130 >> ถ้า foo ถูกเรียกโดยฟังก์ชั่นบางอย่างการตั้งชื่อ baz จะได้รู้ว่ามันเป็น 620 00:30:29,130 --> 00:30:30,250 ได้กลับไป baz ไป 621 00:30:30,250 --> 00:30:34,040 และนั่นคือสิ่งนี้ที่อยู่ผู้ส่ง ลงที่นี่จะบอกเรา 622 00:30:34,040 --> 00:30:38,340 แต่ถ้าเราเขียนทับกับอีกบางส่วน ที่อยู่ในกรณีนี้เป็น 623 00:30:38,340 --> 00:30:42,650 ตัวแทนของที่อยู่ที่ มากจุดเริ่มต้นของ buffer นี้แล้ว 624 00:30:42,650 --> 00:30:45,240 สิ่งที่จริงจะเกิดขึ้นคือ แทนที่จะกลับกลับไป baz, 625 00:30:45,240 --> 00:30:48,470 ซึ่งเรียกว่าการทำงานของเราก็เป็นเพียง จะไปที่ด้านหน้าของรหัสนี้ 626 00:30:48,470 --> 00:30:53,930 >> และถ้าเรื่องนี้เป็นเพราะมี เพื่อนแฮกเกอร์ที่เป็นอันตรายมา 627 00:30:53,930 --> 00:30:56,820 ฉีดนี้แล้วบางทีเงินจำนวนนี้ ของที่ไม่จริงของ 628 00:30:56,820 --> 00:31:02,030 และก็จริงเพียงรหัสที่แบ่ง คอมพิวเตอร์ของคุณหรือสิ่งที่ 629 00:31:02,030 --> 00:31:05,930 ดังนั้นจะต้องมีการป้องกันเกี่ยวกับการจัดเรียงของนี้ สิ่งที่คุณต้องไม่เคยคิดว่า 630 00:31:05,930 --> 00:31:09,120 เข้าของผู้ใช้เป็นบางอย่าง จำนวนของตัวอักษร 631 00:31:09,120 --> 00:31:13,310 ตัวอย่างเช่นเมื่อคุณกำลังทำ สะกดคุณได้บอกว่าคำพูดของเขา 632 00:31:13,310 --> 00:31:15,580 เพียง แต่จะเป็น 40 ตัวอักษร สูงสุดนาน 633 00:31:15,580 --> 00:31:16,570 และนั่นเป็นสิ่งที่ดี 634 00:31:16,570 --> 00:31:20,150 >> แต่ถ้าไม่ได้แล้วคุณจะต้อง ให้แน่ใจว่าจะอ่านเพียง แต่ใน 45 635 00:31:20,150 --> 00:31:21,520 ตัวอักษรในเวลา 636 00:31:21,520 --> 00:31:24,430 มิฉะนั้นคุณอาจจะเขียนทับ บัฟเฟอร์ของคุณ 637 00:31:24,430 --> 00:31:26,140 คำถามใด ๆ เกี่ยวกับการที่ 638 00:31:26,140 --> 00:31:26,733 ใช่ 639 00:31:26,733 --> 00:31:28,850 >> ผู้ชม: คุณสามารถเพียงแค่พูดคุย เล็กน้อยเพิ่มเติมเกี่ยวกับเหล่านี้หรือไม่ 640 00:31:28,850 --> 00:31:29,790 >> ANGELA LI: ขออภัย 641 00:31:29,790 --> 00:31:31,040 ใช่ 642 00:31:31,040 --> 00:31:32,813 643 00:31:32,813 --> 00:31:35,870 >> ผู้ชม: ไมค์เป็นเพียงสำหรับวิดีโอ 644 00:31:35,870 --> 00:31:37,640 ผมจะพยายามและโครงการ 645 00:31:37,640 --> 00:31:39,900 สวัสดีครับ 646 00:31:39,900 --> 00:31:40,920 Sup? 647 00:31:40,920 --> 00:31:45,330 ดังนั้นขอไปกว่าสิ่งที่อยู่ใน ห้องสมุด CS50 ซึ่งคุณได้ใช้ 648 00:31:45,330 --> 00:31:49,072 ภาคการศึกษาทั้งหมดส่วนใหญ่ ที่จะได้รับข้อมูลจากผู้ใช้ 649 00:31:49,072 --> 00:31:53,140 ที่คุณรู้ว่าคุณมี CS50 ห้องสมุดโดยเพียงแค่การทำ CS50.h ซึ่ง 650 00:31:53,140 --> 00:31:55,660 มีต้นแบบของ ฟังก์ชั่นที่คุณสามารถใช้เช่น 651 00:31:55,660 --> 00:31:58,640 GetString และ GetInt และ GetFloat และอื่น ๆ 652 00:31:58,640 --> 00:32:02,870 และมีหนึ่งบรรทัดนี้ใน CS50 ห้องสมุดที่กำหนดสตริงที่ 653 00:32:02,870 --> 00:32:05,380 พวกคุณทุกคนรู้ว่าตอนนี้ เป็นเพียงถ่าน * 654 00:32:05,380 --> 00:32:07,900 >> แต่ขอใช้เวลามองที่ วิธีการทำงานของ GetString 655 00:32:07,900 --> 00:32:10,010 นี้เป็นรุ่นที่ย่อมาก 656 00:32:10,010 --> 00:32:15,090 คุณสามารถดึงไฟล์ห้องสมุด CS50 จากผมคิดว่า manuals.CS50.net 657 00:32:15,090 --> 00:32:16,750 และคุณสามารถอ่านผ่านทาง ฟังก์ชั่นที่เกิดขึ้นจริง 658 00:32:16,750 --> 00:32:19,330 แต่นี้ครอบคลุมบางส่วนของ ส่วนที่สำคัญ 659 00:32:19,330 --> 00:32:23,870 ดังนั้นเราจึงได้สร้างบัฟเฟอร์บาง ที่มีความจุบางส่วน 660 00:32:23,870 --> 00:32:27,570 และเราคือสิ่งที่เราจะได้รับตัวละครตัวหนึ่ง ตลอดเวลาจาก n มาตรฐาน 661 00:32:27,570 --> 00:32:30,910 นั่นคือสิ่งที่ผู้ใช้ปัจจัยการผลิต ข้อความในคอนโซล 662 00:32:30,910 --> 00:32:33,430 >> และอื่น ๆ ที่เรากำลังจะอ่านใน ตัวละครตราบใดที่มันไม่ได้ใหม่ 663 00:32:33,430 --> 00:32:37,220 เส้นและมันก็ไม่สิ้นสุดของแฟ้มที่ เป็นจุดสิ้นสุดของเข้ามาตรฐาน 664 00:32:37,220 --> 00:32:45,690 และสำหรับตัวละครที่เราอ่านในทุก ถ้าตัวละครที่จบลงด้วยการเพิ่ม 665 00:32:45,690 --> 00:32:50,120 ไปยังหมายเลขของตัวละครที่เราได้อ่าน และที่มีมากขึ้นกว่าความจุของเรา 666 00:32:50,120 --> 00:32:53,490 แล้วสิ่งที่เราทำคือเราก็ปรับขนาดของเรา บัฟเฟอร์เพื่อที่จะยาวเป็นสองเท่า 667 00:32:53,490 --> 00:32:56,950 ดังนั้นครั้งนี้ป้องกันบัฟเฟอร์ การโจมตีล้นเพราะคุณอ่านใน 668 00:32:56,950 --> 00:32:58,315 ตัวละครในเวลา 669 00:32:58,315 --> 00:33:02,290 และถ้าที่จุดใด ๆ ที่คุณอ่านในเกินไป ๆ คุณเพียงแค่ขยายบัฟเฟอร์ของคุณ 670 00:33:02,290 --> 00:33:03,330 คุณคูณด้วยสอง 671 00:33:03,330 --> 00:33:05,510 แล้วคุณจะมีห้องพักมากขึ้น 672 00:33:05,510 --> 00:33:09,120 >> มิฉะนั้นคุณก็เพิ่ม อักขระบัฟเฟอร์ 673 00:33:09,120 --> 00:33:15,080 และหลังจากที่คุณได้อ่านในทุก ตัวละครก็จะหดตัวกันชน 674 00:33:15,080 --> 00:33:18,510 กลับลงไปที่ขนาดปกติเพิ่ม null จบแล้วจึงค่อยกลับ 675 00:33:18,510 --> 00:33:21,880 676 00:33:21,880 --> 00:33:24,960 ตอนนี้ให้ดูที่ GetInt 677 00:33:24,960 --> 00:33:27,700 พวกคุณสามารถอ่านนี้ 678 00:33:27,700 --> 00:33:30,710 ฉันสามารถขยายบิต 679 00:33:30,710 --> 00:33:33,410 680 00:33:33,410 --> 00:33:34,660 ผมไม่ทราบว่าวิธีการทำงานของคอมพิวเตอร์ 681 00:33:34,660 --> 00:33:40,840 682 00:33:40,840 --> 00:33:41,270 ไม่เป็นไร 683 00:33:41,270 --> 00:33:42,520 ฉันไม่สามารถขยายได้อย่างถูกต้อง 684 00:33:42,520 --> 00:33:47,500 685 00:33:47,500 --> 00:33:48,770 >> นี้เป็นเรื่องยากมาก 686 00:33:48,770 --> 00:33:49,180 ฉันขอโทษ 687 00:33:49,180 --> 00:33:51,490 ขอเพียงดูที่นี้ 688 00:33:51,490 --> 00:33:57,140 ดังนั้นสิ่งที่ GetInt ไม่สามารถที่จะอ่านเป็นครั้งแรก ในสตริงจาก GetString, ซึ่ง 689 00:33:57,140 --> 00:33:59,250 เราได้ดำเนินการก่อนที่จะ 690 00:33:59,250 --> 00:34:02,945 และส่วนที่สำคัญที่จะต้องทราบที่นี่ คือถ้าใช้งานร่วมกันว่ามันจะสิ้นสุดลงนี้ 691 00:34:02,945 --> 00:34:06,400 การอ่านเป็นเหมือนไม่จริงสตริง จากนั้นเราก็กลับไป INT_MAX 692 00:34:06,400 --> 00:34:09,409 เป็นตัวแทนของความล้มเหลว 693 00:34:09,409 --> 00:34:12,645 ทำไมเรากลับ INT_MAX แทน ลบ 1 หรือ 1? 694 00:34:12,645 --> 00:34:13,895 ความคิดใด? 695 00:34:13,895 --> 00:34:16,853 696 00:34:16,853 --> 00:34:19,350 >> ผู้ชม: [ไม่ได้ยิน] ลบ 1 หนึ่ง 697 00:34:19,350 --> 00:34:20,070 >> ANGELA LI: ใช่ว่า 698 00:34:20,070 --> 00:34:24,560 ดังนั้นวิธีที่คุณมีแนวโน้มที่จะต้องการเพียงแค่ ใส่ 1 หรือลบ 1 เมื่อได้รับข้อความ 699 00:34:24,560 --> 00:34:27,469 สำหรับ maxes ชับชับและสิ่งที่ 700 00:34:27,469 --> 00:34:27,969 มันใหญ่ 701 00:34:27,969 --> 00:34:29,690 คุณอาจจะไม่ใช้มัน 702 00:34:29,690 --> 00:34:32,690 ดังนั้นนี้เป็นเหมือนการตัดสินใจการออกแบบที่จะ ให้แน่ใจว่าคุณไม่ได้ตั้งใจ 703 00:34:32,690 --> 00:34:38,540 กลับผิดพลาดหรือคุณไม่กลับ 1 ซึ่งอาจจะมีการแยกวิเคราะห์ 704 00:34:38,540 --> 00:34:41,199 เป็นคำตอบที่ถูกต้อง 705 00:34:41,199 --> 00:34:45,110 ดังนั้นถ้าสายไม่อยู่ เรากลับ INT-MAX 706 00:34:45,110 --> 00:34:48,090 มิฉะนั้นเราจะใช้ sscanf, ซึ่งเป็นเหมือน scanf 707 00:34:48,090 --> 00:34:49,449 แต่อ่านจากสตริง 708 00:34:49,449 --> 00:34:54,310 >> และเรามีรูปแบบนี้ สตริงซึ่งเป็น i% c% 709 00:34:54,310 --> 00:34:57,440 และเราพยายามที่และตรงกับที่มีการ สิ่งที่ผู้ใช้ให้เรา 710 00:34:57,440 --> 00:35:01,420 เราต้องการให้จำนวนของสิ่งที่ตรงกับ จะเป็น 1 ซึ่งหมายความว่าเราเพียง 711 00:35:01,420 --> 00:35:04,940 อยากให้ตรงกับจำนวนเต็ม ล้อมรอบด้วยสีขาวอาจจะ 712 00:35:04,940 --> 00:35:06,840 พื้นที่อาจจะไม่ 713 00:35:06,840 --> 00:35:10,710 ในกรณีนี้หากคุณใส่ในสิ่งที่ เช่นแถบบาร์ไม่ตรงกับที่ทั้งหมด 714 00:35:10,710 --> 00:35:14,400 เพราะมีความต้องการที่จะ เลขที่เริ่มต้น 715 00:35:14,400 --> 00:35:17,060 ดังนั้น sscan ไม่เคยหัน 0 716 00:35:17,060 --> 00:35:19,640 ดังนั้นคุณจะไม่กลับมาที่ 717 00:35:19,640 --> 00:35:23,850 >> หรือถ้าคุณวางในบางสิ่งบางอย่าง เช่น 1, 2, 3, A, B, C, การแข่งขันว่า 718 00:35:23,850 --> 00:35:27,180 ทั้งจำนวนเต็ม แต่ยัง ตัวละครหลังจากที่มัน 719 00:35:27,180 --> 00:35:29,990 ดังนั้น sscanf จะกลับ 2 ซึ่ง นอกจากนี้ยังไม่เหมาะ 720 00:35:29,990 --> 00:35:34,620 คุณไม่ต้องการที่ 1, 2, 3,, B, C จะเป็น int ที่ถูกต้อง 721 00:35:34,620 --> 00:35:36,990 ดังนั้นที่ยังไม่ได้ทำงาน 722 00:35:36,990 --> 00:35:38,530 แต่บอกว่าที่คุณใส่ในสิ่งที่ชอบ 50 723 00:35:38,530 --> 00:35:42,460 ที่จะตรงกับฉัน% ซึ่งหมายความว่า จะได้รับการอ่านใน n 724 00:35:42,460 --> 00:35:44,790 และตอนนี้ n จะมีจำนวน 50 725 00:35:44,790 --> 00:35:46,110 แล้วคุณสามารถส่งคืนได้ 726 00:35:46,110 --> 00:35:49,270 >> มิฉะนั้นคุณจะตีลองอีกครั้ง 727 00:35:49,270 --> 00:35:55,790 และแล้วมันก็ไปอีกครั้งจน คุณจะได้รับข้อมูลที่ถูกต้องจากผู้ใช้ 728 00:35:55,790 --> 00:35:56,891 คำถามใด ๆ เกี่ยวกับการที่ 729 00:35:56,891 --> 00:36:02,182 >> ผู้ชม: ดังนั้นถ้าคุณกำลังจะพิมพ์ออกมา ค่าของ GetInt บน [ไม่ได้ยิน] 730 00:36:02,182 --> 00:36:06,250 มันจะเป็นเพียงแค่จำนวนเต็มและสูงสุด? 731 00:36:06,250 --> 00:36:07,440 >> ANGELA LI: ใช่ 732 00:36:07,440 --> 00:36:11,780 ดังนั้นหากคุณใช้ GetInt คุณควรคิด ที่คุณไม่ต้องการที่จะมีลำดับสูงสุด 733 00:36:11,780 --> 00:36:15,328 จะเป็นข้อมูลที่ถูกต้องเพราะคุณกำลังจะ จะคิดว่าที่เป็นเรื่องไม่ดี 734 00:36:15,328 --> 00:36:27,740 >> ผู้ชม: ถ้าเราไม่ได้มีถ่านและค คนที่ใส่ใน 1, 2, 3, แซมจะมัน 735 00:36:27,740 --> 00:36:29,430 ยังคงทำงานเป็นเวลา 1, 2, 3 หรือไม่? 736 00:36:29,430 --> 00:36:29,750 >> ANGELA LI: ผมคิดว่ามันจะทำงาน 737 00:36:29,750 --> 00:36:33,340 แต่คุณไม่ต้องการที่จะ 123Sam จะเป็นข้อมูลที่ถูกต้องโดยผู้ใช้ 738 00:36:33,340 --> 00:36:34,670 ที่ไม่จริง int 739 00:36:34,670 --> 00:36:36,840 ดังนั้นจึงดูเหมือนจะไม่ยุติธรรม ที่จะแยกเป็น int 740 00:36:36,840 --> 00:36:40,910 741 00:36:40,910 --> 00:36:42,160 ตกลง 742 00:36:42,160 --> 00:36:45,800 ในกรณีที่ปล่อยให้ย้ายของ บนอินเทอร์เน็ต 743 00:36:45,800 --> 00:36:49,120 HTTP ดังนั้นไม่เป็นภาษา 744 00:36:49,120 --> 00:36:56,060 HTTP เป็นเพียงชุดของมาตรฐานสำหรับ วิธีการที่คุณส่งสิ่งจากลูกค้า 745 00:36:56,060 --> 00:36:57,280 ที่คุณไปยังเซิร์ฟเวอร์ 746 00:36:57,280 --> 00:36:59,730 นั่นคือคนอื่น ๆ บนเว็บ 747 00:36:59,730 --> 00:37:02,900 >> ดังนั้น HTTP ย่อมาจาก Hypertext Transfer Protocol 748 00:37:02,900 --> 00:37:04,610 มันเป็นหัวใจและจิตวิญญาณ ของเว็บทั้งหมด 749 00:37:04,610 --> 00:37:07,050 ส่วนไฮเปอร์เพียง หมายถึง HTM​​L 750 00:37:07,050 --> 00:37:10,690 โอนเป็นลูกค้าเช่น คุณจะส่งคำขอไปยัง 751 00:37:10,690 --> 00:37:13,060 เซิร์ฟเวอร์ที่ให้การตอบสนอง 752 00:37:13,060 --> 00:37:16,380 และโปรโตคอลเป็นเพียงวิธีการที่ทำ เซิร์ฟเวอร์ที่คุณคาดหวังที่จะประพฤติ? 753 00:37:16,380 --> 00:37:19,960 และคุณจะถูกวิธีควรจะประพฤติ เช่นที่คุณสามารถปรับปรุงนี้ 754 00:37:19,960 --> 00:37:21,920 กระบวนการสื่อสาร 755 00:37:21,920 --> 00:37:26,650 >> ดังนั้นการร้องขอดูมากเช่นนี้ 756 00:37:26,650 --> 00:37:28,070 GET เป็นประเภทของคำขอ 757 00:37:28,070 --> 00:37:31,220 พวกคุณได้เห็นการร้องขอ GET และขอโพสต์ 758 00:37:31,220 --> 00:37:36,690 ว่าสิ่งที่สองที่มี / ฉันว่า เพียง URI หรือ URL ที่คุณ 759 00:37:36,690 --> 00:37:38,140 ต้องการที่จะไปในพื้นที่ 760 00:37:38,140 --> 00:37:44,140 ดังนั้นคำขอนี้จะขอ หน้าเหมือน www.facebook.com / ฉัน 761 00:37:44,140 --> 00:37:45,300 และมันก็เป็น GET คำขอ 762 00:37:45,300 --> 00:37:51,020 แล้ว HTTP/1.1 นี้ว่าเป็นเพียง รุ่นของ HTTP ที่คุณกำลังใช้ 763 00:37:51,020 --> 00:37:55,020 มันเกือบจะเสมอ 1.1 764 00:37:55,020 --> 00:37:56,880 >> แล้วมีพวง ของสิ่งอื่น ๆ ด้วย 765 00:37:56,880 --> 00:38:02,510 จริงๆคุณสามารถมองเห็นเหล่านี้ถ้าคุณ เปิดคอนโซลของคุณเมื่อคุณ 766 00:38:02,510 --> 00:38:03,770 การท่องเว็บ 767 00:38:03,770 --> 00:38:07,290 คำตอบมีลักษณะบางอย่าง มากขึ้นเช่นนี้ 768 00:38:07,290 --> 00:38:09,620 ส่วนด้านบนเป็นอีกครั้ง ชนิดของ HTTP ที่คุณกำลังใช้ 769 00:38:09,620 --> 00:38:12,310 ตามด้วยรหัสสถานะ 770 00:38:12,310 --> 00:38:14,700 ดังนั้น 200 ตกลงนั้นเป็นทุกอย่างทำงานออก 771 00:38:14,700 --> 00:38:16,200 นี่คือเนื้อหาของคุณ 772 00:38:16,200 --> 00:38:17,390 เนื้อหาของคุณเป็นไปตาม 773 00:38:17,390 --> 00:38:21,730 แล้วมันจะบอกคุณว่าชนิด ของเนื้อหาและสิ่งอื่น ๆ ด้วย 774 00:38:21,730 --> 00:38:24,620 >> รหัสสถานะที่มีไม่กี่ คนสำคัญที่คุณควรรู้ 775 00:38:24,620 --> 00:38:26,460 200 ตกลงเป็นเหมือนทองทุกอย่าง 776 00:38:26,460 --> 00:38:28,490 การทำงานทุกอย่าง 777 00:38:28,490 --> 00:38:29,710 403 พระราชวังต้องห้าม 778 00:38:29,710 --> 00:38:32,910 นี้คุณอาจจะได้เห็นถ้าคุณลืม เพื่อสิ่งที่ถูกต้อง chmod 779 00:38:32,910 --> 00:38:34,510 ก็หมายความว่าคุณไม่ได้มี สิทธิ์ในการ 780 00:38:34,510 --> 00:38:36,210 เข้าถึงที่อยู่บนเซิร์ฟเวอร์ 781 00:38:36,210 --> 00:38:38,110 มันเหมือนไม่มีคุณไม่สามารถมองเห็นได้ 782 00:38:38,110 --> 00:38:39,780 404 หมายถึงสิ่งที่ไม่มีอยู่ 783 00:38:39,780 --> 00:38:40,400 ไม่พบ 784 00:38:40,400 --> 00:38:41,640 คุณอาจได้เห็นว่าเป็นจำนวนมาก 785 00:38:41,640 --> 00:38:45,510 >> 500 ข้อผิดพลาดของเซิร์ฟเวอร์ภายในเป็นปกติ เช่นสิ่งที่ผิดพลาดในด้าน 786 00:38:45,510 --> 00:38:46,460 ของเซิร์ฟเวอร์ 787 00:38:46,460 --> 00:38:50,830 ดังนั้นเมื่อคุณได้รับการดำเนินการ pset7, ถ้าคุณมีข้อผิดพลาด PHP, คุณสามารถ 788 00:38:50,830 --> 00:38:53,890 จริงไปที่หน้าและดู ทั้งกลุ่มของสิ่งที่ผิดพลาด PHP 789 00:38:53,890 --> 00:38:56,900 แต่ที่ไม่ปกติเกิดขึ้น เพราะเว็บไซต์ไม่ได้จริงๆต้องการที่จะ 790 00:38:56,900 --> 00:38:58,830 บอกคุณว่าทำไมเว็บไซต์ของพวกเขาถูกทำลาย 791 00:38:58,830 --> 00:39:03,370 พวกเขาอาจจะเพิ่งกลับ 500 ข้อผิดพลาดของเซิร์ฟเวอร์ภายใน 792 00:39:03,370 --> 00:39:06,120 >> แล้วมี 418 ฉันกาน้ำชา 793 00:39:06,120 --> 00:39:07,910 มีเรื่องราวทั้งหมดเกี่ยวกับการเป็น เหตุผลที่ว่าเป็นสิ่งที่ 794 00:39:07,910 --> 00:39:09,860 แต่คุณสามารถอ่านเกี่ยวกับที่ ในเวลาของคุณเอง 795 00:39:09,860 --> 00:39:11,450 มีทั้งกลุ่มของ รหัสสถานะอื่น ๆ ด้วย 796 00:39:11,450 --> 00:39:12,700 แต่เหล่านี้เป็นคนที่ ที่คุณควรรู้ 797 00:39:12,700 --> 00:39:15,660 798 00:39:15,660 --> 00:39:18,610 เพื่อขอพูดคุยเกี่ยวกับ HTML 799 00:39:18,610 --> 00:39:22,180 HTML, จำไม่ได้ การเขียนโปรแกรมภาษา 800 00:39:22,180 --> 00:39:23,510 มันเป็นภาษามาร์กอัป 801 00:39:23,510 --> 00:39:25,210 นั่นหมายความว่ามันอธิบายเนื้อหา 802 00:39:25,210 --> 00:39:30,440 มันจะบอกคุณว่าเอกสารดู เหมือนหรือไม่สิ่งที่ดูเหมือนว่า 803 00:39:30,440 --> 00:39:32,230 แต่วิธีการที่มันมีโครงสร้าง 804 00:39:32,230 --> 00:39:36,110 >> ดังนั้นจึงกำหนดโครงสร้างและ ความหมายของหน้าเว็บ 805 00:39:36,110 --> 00:39:37,830 มันก็เหมือนกับการนี​​้เป็นวรรค 806 00:39:37,830 --> 00:39:40,060 นี้เป็นรายการสั่งซื้อ 807 00:39:40,060 --> 00:39:42,360 นี้เป็นเหมือนส่วนหนึ่งของหน้าเว็บของฉัน 808 00:39:42,360 --> 00:39:43,260 นี่คือชื่อเรื่อง 809 00:39:43,260 --> 00:39:44,310 มันไม่สิ่งที่ต้องการที่ 810 00:39:44,310 --> 00:39:48,770 มันไม่ได้รูปแบบใด ๆ ของว่าเพราะ นั่นคือสิ่งที่คุณทำใน CSS 811 00:39:48,770 --> 00:39:50,270 และดูเหมือนว่าชุด แท็กที่ซ้อนกัน 812 00:39:50,270 --> 00:39:54,720 เพื่อที่จะใช้ตัวอย่างของพื้นฐานจริงๆ หน้าคุณมี DOCTYPE 813 00:39:54,720 --> 00:39:56,720 ประกาศขึ้นมี 814 00:39:56,720 --> 00:40:00,940 >> ประกาศ DOCTYPE นี้เป็น ว่าเรากำลังใช้ HTML5 815 00:40:00,940 --> 00:40:03,370 แล้วคุณมีแท็กใหญ่ 816 00:40:03,370 --> 00:40:05,230 มันมีหัวและร่างกาย 817 00:40:05,230 --> 00:40:06,970 ในหัวของคุณมีชื่อ 818 00:40:06,970 --> 00:40:12,950 นั่นคือสิ่งที่จะไปอยู่ในชื่อเรื่อง บาร์เบราว์เซอร์ของคุณ 819 00:40:12,950 --> 00:40:15,810 เรามีแท็กลิงค์ที่เชื่อมโยง ในสไตล์ชีทภายนอก 820 00:40:15,810 --> 00:40:19,880 แล้วเรามีสคริปต์ที่ดึง จากจาวาสคริปต์ภายนอกได้เป็นอย่างดี 821 00:40:19,880 --> 00:40:23,750 >> แล้วภายในร่างกายของเราเป็นจริง สิ่งที่ได้รับแสดงในหน้า 822 00:40:23,750 --> 00:40:28,210 เรามีวรรคแล้ว ภาพภายในย่อหน้าที่ 823 00:40:28,210 --> 00:40:32,000 อันนี้คือภาพของลูกแมว 824 00:40:32,000 --> 00:40:35,840 ขอให้สังเกตว่าภาพ แท็กปิดตัวเอง 825 00:40:35,840 --> 00:40:41,760 ดังนั้นแทนที่จะเปิดด้วยภาพ แล้วทำอีก / ภาพคุณ 826 00:40:41,760 --> 00:40:47,500 เพียงแค่ต้องเฉือนนี้น้อย ที่นี่ซึ่งปิดมัน 827 00:40:47,500 --> 00:40:53,670 และแท็กรูปภาพนอกจากนี้ยังมีคีย์นี้ แอตทริบิวต์ค่าที่เรียกว่าแอลที 828 00:40:53,670 --> 00:40:56,970 นั่นเป็นข้อความที่ทางเลือกที่ ที่เกิดขึ้นเมื่อคุณเลื่อนเมาส์ไปมัน 829 00:40:56,970 --> 00:41:03,170 >> องค์ประกอบส่วนใหญ่มีบางค่าคีย์ สิ่งที่คุณสามารถให้มันต่างๆ 830 00:41:03,170 --> 00:41:04,420 การปรับแต่ง 831 00:41:04,420 --> 00:41:06,230 832 00:41:06,230 --> 00:41:08,705 ใช่ 833 00:41:08,705 --> 00:41:09,955 >> ผู้ชม: [ไม่ได้ยิน] 834 00:41:09,955 --> 00:41:17,510 835 00:41:17,510 --> 00:41:19,680 >> ANGELA LI: ดีจึงเป็น คุณลักษณะของแท็ก 836 00:41:19,680 --> 00:41:25,320 ดังนั้นหากคุณใช้ jQuery, คุณสามารถ เลือกทำ image.getAttribute 837 00:41:25,320 --> 00:41:27,930 และจากนั้นคุณสามารถค้นหา ได้รับแอตทริบิวต์ alt 838 00:41:27,930 --> 00:41:31,040 และมันจะทำให้คุณมีลูกแมว 839 00:41:31,040 --> 00:41:37,400 ถ้าคุณจำในรูปแบบ HTML, การป้อนข้อมูล องค์ประกอบจะมีแอตทริบิวต์ชื่อ 840 00:41:37,400 --> 00:41:41,870 และนั่นคือสิ่งที่ PHP ใช้ในการส่ง ร้องขอเมื่อฟอร์มถูกส่งไป 841 00:41:41,870 --> 00:41:44,762 842 00:41:44,762 --> 00:41:50,064 >> ผู้ชม: คุณพูดถึงบางสิ่งบางอย่าง เกี่ยวกับวิธีการถ้าคุณใช้ kittens.jpg หรือ 843 00:41:50,064 --> 00:41:54,410 สิ่งที่มีขาดหายไป ไฟล์โฟลเดอร์หรือไฟล์อื่น ๆ 844 00:41:54,410 --> 00:41:54,750 >> ANGELA LI: ใช่ 845 00:41:54,750 --> 00:41:57,010 ดังนั้นนี่คือสิ่งที่เรียกว่าญาติ เส้นทางเพราะฉันไม่ให้ 846 00:41:57,010 --> 00:41:58,740 คุณเส้นทางที่เต็มรูปแบบ 847 00:41:58,740 --> 00:42:05,160 นี้เป็นเหมือนเมื่อใน C ถ้าคุณทำ fopen บางไฟล์ถ้าคุณ hi.txt fopen ที่ 848 00:42:05,160 --> 00:42:09,190 hi.txt คาดว่าจะอยู่ในที่เดียวกัน ไดเรกทอรีจนกว่าคุณจะให้มันมากขึ้น 849 00:42:09,190 --> 00:42:11,530 เส้นทางที่ซับซ้อน 850 00:42:11,530 --> 00:42:14,900 >> ผู้ชม: เพ​​ื่อให้คุณสามารถระบุ ซึ่งโฟลเดอร์ [ไม่ได้ยิน]? 851 00:42:14,900 --> 00:42:17,660 >> ANGELA LI: ใช่ 852 00:42:17,660 --> 00:42:19,370 และคุณสามารถดูวิธีการทำที่ 853 00:42:19,370 --> 00:42:23,480 แต่ถ้าผมต้องการที่จะได้รับ kittens.jpg ออก ของไดเรกทอรีแม่ผมจะทำ 854 00:42:23,480 --> 00:42:24,730 .. / kittens.jpg 855 00:42:24,730 --> 00:42:29,680 856 00:42:29,680 --> 00:42:30,930 ใช่ 857 00:42:30,930 --> 00:42:32,960 858 00:42:32,960 --> 00:42:33,760 ขอโทษ 859 00:42:33,760 --> 00:42:34,045 ใช่ 860 00:42:34,045 --> 00:42:35,700 โอ้คนที่ฉันลืมคำถาม 861 00:42:35,700 --> 00:42:36,460 สิ่งที่เป็นคำถามได้หรือไม่ 862 00:42:36,460 --> 00:42:39,570 โอ้คำถามก็คือ kittens.jpg คาดว่าจะอยู่ในไดเรกทอรีเดียวกันได้หรือไม่ 863 00:42:39,570 --> 00:42:40,630 และในกรณีนี้มันเป็น 864 00:42:40,630 --> 00:42:44,030 แต่คุณยังสามารถให้เส้นทางบาง ดังกล่าวว่ามันไม่ได้จำเป็นต้องเป็น 865 00:42:44,030 --> 00:42:47,100 866 00:42:47,100 --> 00:42:48,350 ดี? 867 00:42:48,350 --> 00:42:50,190 868 00:42:50,190 --> 00:42:51,350 >> CSS 869 00:42:51,350 --> 00:42:55,420 ดังนั้น, CSS เช่น HTML, ไม่ได้เป็น การเขียนโปรแกรมภาษา 870 00:42:55,420 --> 00:42:58,250 CSS เป็นเพียงชุดของกฎการออกแบบ 871 00:42:58,250 --> 00:43:00,130 มันย่อมาจาก Cascading Style Sheets 872 00:43:00,130 --> 00:43:03,910 และคุณใช้มันร่วม กับ HTML ไปยังหน้าสไตล์ 873 00:43:03,910 --> 00:43:08,140 ดังนั้นมีสามวิธีคือ คุณสามารถรวมไว้ 874 00:43:08,140 --> 00:43:11,950 วิธีการหนึ่งที่คุณสามารถทำมันอยู่ในหัว เป็นส่วนหนึ่งของ HTM​​L ของคุณคุณสามารถเพียงแค่ 875 00:43:11,950 --> 00:43:15,410 เปิดแท็กรูปแบบแล้วติด กฎ CSS ในการมี 876 00:43:15,410 --> 00:43:16,759 ก็ OK สวย 877 00:43:16,759 --> 00:43:17,228 ใช่ 878 00:43:17,228 --> 00:43:21,449 >> ผู้ชม: คุณสามารถนำผู้ที่ ที่แท็กรูปแบบในระหว่างขอ 879 00:43:21,449 --> 00:43:22,860 พูด, ร่างกายและ / ร่างกาย 880 00:43:22,860 --> 00:43:27,400 แล้วคุณจะจัดแต่งทรงผม เพียง แต่ในร่างกาย 881 00:43:27,400 --> 00:43:28,840 >> ANGELA LI: คุณสามารถ 882 00:43:28,840 --> 00:43:29,590 มันจะทำงาน 883 00:43:29,590 --> 00:43:33,990 แต่คุณไม่ควรเพราะการออกแบบเป็น ชนิดของข้อมูลที่ควรจะไปใน 884 00:43:33,990 --> 00:43:35,890 หัวของเอกสารของคุณ 885 00:43:35,890 --> 00:43:38,280 ร่างกายควรจริงๆมีเพียง สิ่งที่จริงจะ 886 00:43:38,280 --> 00:43:39,420 แสดงขึ้นบนหน้าของคุณ 887 00:43:39,420 --> 00:43:42,155 >> ผู้ชม: ดังนั้นคุณต้องการใส่สไตล์ ในหัวของคุณสไตล์ 888 00:43:42,155 --> 00:43:43,930 หน้าเว็บทั้งหมดใช่ไหม 889 00:43:43,930 --> 00:43:44,300 >> ANGELA LI: ใช่ 890 00:43:44,300 --> 00:43:50,470 ดังนั้นการวางรูปแบบที่นี่, CSS กฎเหล่านี้ จะนำไปใช้ทั้งหน้าอยู่บนพื้นฐานของ 891 00:43:50,470 --> 00:43:52,100 ตัวเลือกของพวกเขา 892 00:43:52,100 --> 00:43:57,090 ดังนั้นวิธีที่ดีกว่าที่จะทำมันเป็นแทน ของการมีแท็กสไตล์ในหัวของคุณ 893 00:43:57,090 --> 00:44:00,430 คุณมีการเชื่อมโยงกับรูปแบบภายนอกนี้ แผ่นเหมือนที่ผมแสดงให้เห็นว่าคุณอยู่ใน 894 00:44:00,430 --> 00:44:01,980 ตัวอย่างก่อนหน้านี้ 895 00:44:01,980 --> 00:44:05,920 สิ่งนี้จะพยายามและพบว่า ไฟล์ style.css แล้วดึงมัน 896 00:44:05,920 --> 00:44:08,470 และใช้เป็นที่ รูปแบบสำหรับหน้า 897 00:44:08,470 --> 00:44:10,500 และ style.css ของคุณจะ เพียงแค่มีลักษณะเช่นนี้ 898 00:44:10,500 --> 00:44:13,330 มันก็จะเป็นพวงของ CSS 899 00:44:13,330 --> 00:44:16,210 >> และในที่สุดก็มีอีกวิธีหนึ่งที่เป็นคุณ สามารถรวม CSS ซึ่งคุณจริงๆ 900 00:44:16,210 --> 00:44:17,480 จะไม่เคยทำ 901 00:44:17,480 --> 00:44:18,950 มันเป็นสไตล์แบบอินไลน์โทร 902 00:44:18,950 --> 00:44:22,650 และเพื่อให้องค์ประกอบ HTML ใด ๆ นอกจากนี้ยังสามารถ ใช้แอตทริบิวต์สไตล์ 903 00:44:22,650 --> 00:44:26,320 แล้วในรูปแบบแอตทริบิวต์ที่ คุณสามารถให้มันกฎ CSS 904 00:44:26,320 --> 00:44:29,140 ดังนั้นในกรณีนี้สิ่งที่ div ฉัน การกำหนดที่นี่มันจะ 905 00:44:29,140 --> 00:44:32,580 มีพื้นหลังสีดำและ สีของตัวอักษรสีขาว 906 00:44:32,580 --> 00:44:35,620 แต่คุณไม่ควรทำเช่นนี้เพราะสิ่งที่ นี้ไม่เป็นมันทำให้จัดแต่งทรงผมของคุณ 907 00:44:35,620 --> 00:44:36,850 ภายใน HTML ของคุณ 908 00:44:36,850 --> 00:44:40,530 >> และฉันรู้ว่าเราได้รับการพูดคุยเกี่ยวกับ HTML เป็นโครงสร้างและ CSS เป็นรูปแบบ 909 00:44:40,530 --> 00:44:42,790 ถ้าคุณทำเช่นนี้ก็ผสม พวกเขาร่วมกัน 910 00:44:42,790 --> 00:44:44,550 และก็ไม่ได้สะอาดมาก 911 00:44:44,550 --> 00:44:45,800 ดังนั้นอย่าทำอย่างนั้น 912 00:44:45,800 --> 00:44:47,690 913 00:44:47,690 --> 00:44:52,100 ตัวอย่างของการใช้ CSS ขึ้นที่นั่นเรา เพียงเลือกร่างกายของ HTM​​L 914 00:44:52,100 --> 00:44:52,380 สารคดี 915 00:44:52,380 --> 00:44:55,110 และเราก็ชอบทุกอย่าง จะเป็น Sans การ์ตูน 916 00:44:55,110 --> 00:44:57,290 ฉันยังไม่แนะนำให้ 917 00:44:57,290 --> 00:44:59,940 แต่คุณสามารถทำเช่นนั้นได้ 918 00:44:59,940 --> 00:45:03,140 >> กฎข้อที่สองที่นี่ก็จะ เพื่อเลือกองค์ประกอบที่ 919 00:45:03,140 --> 00:45:04,880 หน้าหลักที่มีรหัส 920 00:45:04,880 --> 00:45:11,690 ดังนั้นสิ่งที่ HTML องค์ประกอบผมบอกว่า ID = หลักฉันจะให้ที่ 921 00:45:11,690 --> 00:45:16,020 ขอบ 20 พิกเซลและจัดทุกอย่าง ข้อความทั้งหมดไปยังศูนย์ 922 00:45:16,020 --> 00:45:19,030 สิ่งสุดท้ายที่จะเลือกเรียน CSS 923 00:45:19,030 --> 00:45:24,450 ดังนั้นองค์ประกอบใดบนหน้าเว็บที่ผมให้ ชั้นส่วนฉันจะทำให้มัน 924 00:45:24,450 --> 00:45:26,602 สีพื้นหลังของสีฟ้าอ่อน 925 00:45:26,602 --> 00:45:29,380 926 00:45:29,380 --> 00:45:30,040 ครับ 927 00:45:30,040 --> 00:45:30,700 นั่นคือทั้งหมดที่ผมได้รับ 928 00:45:30,700 --> 00:45:30,890 คำถาม? 929 00:45:30,890 --> 00:45:34,020 >> ผู้ชม: อะไร hashtag ก่อนที่จะเป็นหลักทำอย่างไร 930 00:45:34,020 --> 00:45:36,310 >> ANGELA LI: คำถามคือสิ่งที่ไม่ hashtag ก่อนที่จะทำหลัก? 931 00:45:36,310 --> 00:45:40,770 ในกรณีนี้ในกัญชา CSS หมายความว่าเลือกตามหมายเลข 932 00:45:40,770 --> 00:45:47,490 ดังนั้นถ้าผมมีองค์ประกอบบางอย่างเช่น divId = หลัก, CSS นี้กฎเลือก 933 00:45:47,490 --> 00:45:49,260 สิ่งที่มีรหัสหลัก 934 00:45:49,260 --> 00:45:53,940 และเช่นเดียวกันในช่วงเวลาที่ด้านหน้าของ ส่วนคือการเลือกโดยชั้น CSS หรือ 935 00:45:53,940 --> 00:45:56,558 เลือกโดยชั้น HTML 936 00:45:56,558 --> 00:46:00,940 >> ผู้ชม: ทำไมถึงมีก่อนที่จะมี 6 ในสีพื้นหลัง 937 00:46:00,940 --> 00:46:01,270 >> ANGELA LI: ใช่ 938 00:46:01,270 --> 00:46:03,360 ดังนั้นคำถามคือทำไมมี กัญชาก่อน 6? 939 00:46:03,360 --> 00:46:05,320 นี้แตกต่างจากกัญชาที่ 940 00:46:05,320 --> 00:46:09,500 ซึ่งหมายความว่าคุณกำลังให้ สีฐานสิบหก 941 00:46:09,500 --> 00:46:14,260 ดังนั้นสีฐานสิบหกนี้ก็ แสดงให้เห็นถึงสี 942 00:46:14,260 --> 00:46:17,860 และคุณจำอเนกประสงค์ RGB เมื่อ คุณไม่ pset นิติ? 943 00:46:17,860 --> 00:46:18,770 นี้จะคล้าย 944 00:46:18,770 --> 00:46:21,590 ตัวเลขสองหลักแรกเป็นตัวแทนของ วิธีการที่สีแดงมากที่อยู่ในสี 945 00:46:21,590 --> 00:46:23,260 สองสองเป็นตัวแทนของ เท่าใดสีเขียว 946 00:46:23,260 --> 00:46:25,450 และคนที่สามแสดงให้เห็นถึง เท่าใดสีฟ้า 947 00:46:25,450 --> 00:46:30,060 และกัญชาเป็นนี้เป็นไป เพื่อเป็นตัวแทนของสี 948 00:46:30,060 --> 00:46:35,660 >> ดังนั้นอะไรจาก 0, 0, 0, 0, 0, 0 ถึง F, F, F, F, F, F เป็นที่ถูกต้อง 949 00:46:35,660 --> 00:46:39,550 มันเป็นบางสีที่ถูกต้องที่สามารถ จะแสดงโดยเบราว์เซอร์ของคุณ 950 00:46:39,550 --> 00:46:39,790 คำถาม? 951 00:46:39,790 --> 00:46:43,590 >> ผู้ชม: ความแตกต่างระหว่าง โดยใช้ ID และชั้น? 952 00:46:43,590 --> 00:46:46,470 >> ANGELA LI: คำถามคือสิ่งที่ ความแตกต่างระหว่าง 953 00:46:46,470 --> 00:46:48,950 โดยใช้ ID และชั้น? 954 00:46:48,950 --> 00:46:54,390 คุณสามารถมีเพียงองค์ประกอบหนึ่งใน เอกสารที่มีรหัสที่ได้รับ 955 00:46:54,390 --> 00:46:58,660 ดังนั้นเพียงสิ่งเดียวในหน้าของฉัน ได้รับอนุญาตให้มี ID หลัก 956 00:46:58,660 --> 00:47:02,580 เพื่อให้คุณใช้งานได้นี้เป็นส่วนหัว 957 00:47:02,580 --> 00:47:03,850 นี้เป็นการนำ 958 00:47:03,850 --> 00:47:05,230 นี้เป็นส่วนท้าย 959 00:47:05,230 --> 00:47:09,070 ชั้นเรียนที่แตกต่างกันเพราะคุณสามารถ ใช้การเรียนการองค์ประกอบเป็นจำนวนมาก 960 00:47:09,070 --> 00:47:10,100 ตามที่คุณต้องการ 961 00:47:10,100 --> 00:47:15,860 >> ดังนั้นสำหรับตัวอย่างเช่นที่ผมทำส่วนชั้นเรียน เพราะอาจมีมากกว่าหนึ่ง 962 00:47:15,860 --> 00:47:17,540 ส่วนที่เกี่ยวกับหน้าของฉัน 963 00:47:17,540 --> 00:47:20,200 คุณได้รับอนุญาตเพียงแค่มีเป็นจำนวนมาก องค์ประกอบบนหน้าด้วยเหมือนกัน 964 00:47:20,200 --> 00:47:23,190 ชั้น แต่เพียงคนเดียวที่มีรหัสบางอย่าง 965 00:47:23,190 --> 00:47:25,600 >> ผู้ชม: ดังนั้นจุดแสดงให้เห็นถึง ชั้นเรียนหรือไม่ 966 00:47:25,600 --> 00:47:26,090 >> ANGELA LI: ใช่ 967 00:47:26,090 --> 00:47:27,380 จุดแสดงให้เห็นถึงระดับ 968 00:47:27,380 --> 00:47:29,990 969 00:47:29,990 --> 00:47:31,540 เย็น 970 00:47:31,540 --> 00:47:32,370 นั่นคือทั้งหมดที่ฉันมีพวก 971 00:47:32,370 --> 00:47:33,544 ขอบคุณ 972 00:47:33,544 --> 00:48:13,380 >> [APPLAUSE] 973 00:48:13,380 --> 00:48:14,290 >> ZAMYLA จัน: สวัสดีครับทุกคน 974 00:48:14,290 --> 00:48:14,880 ฉัน Zamyla 975 00:48:14,880 --> 00:48:18,830 ฉันจะครอบคลุม PHP, MVC และ SQL วันนี้ 976 00:48:18,830 --> 00:48:22,350 977 00:48:22,350 --> 00:48:26,110 จำนวนมากของวัสดุที่ฉันจะเป็น ครอบคลุมเป็นไปได้สวยมาก 978 00:48:26,110 --> 00:48:29,100 ขวาออกจาก pset7 979 00:48:29,100 --> 00:48:29,700 ขวาทั้งหมด 980 00:48:29,700 --> 00:48:31,180 ดังนั้นสิ่งที่เป็น PHP? 981 00:48:31,180 --> 00:48:35,150 PHP ยืนสำหรับ PHP Hypertext preprocessor 982 00:48:35,150 --> 00:48:38,740 ดังนั้นในตัวเองเป็นซ้ำ ชื่อซึ่งเป็นเย็นสวย 983 00:48:38,740 --> 00:48:42,220 PHP เป็นภาษาสคริปต์ฝั่งเซิร์ฟเวอร์ และให้แบ็กเอนด์ 984 00:48:42,220 --> 00:48:44,610 และตีแผ่ตรรกะ ในเว็บไซต์ของเรา 985 00:48:44,610 --> 00:48:48,520 >> ดังนั้นแองเจล่าพูดคุยกันมากเกี่ยวกับ HTML และ CSS ที่จะทำให้โครงสร้าง 986 00:48:48,520 --> 00:48:49,530 ของเว็บไซต์ 987 00:48:49,530 --> 00:48:53,210 แต่สิ่งที่ถ้าคุณต้องการที่จะเปลี่ยนที่ เนื้อหาแบบไดนามิกหรือถ้ามันแตกต่างกันไป 988 00:48:53,210 --> 00:48:55,240 ขึ้นอยู่กับผู้ใช้หรือ เงื่อนไขที่แน่นอนหรือไม่ 989 00:48:55,240 --> 00:48:57,060 นั่นคือสิ่งที่ PHP มา 990 00:48:57,060 --> 00:49:02,610 ตอนนี้ปกติ, PHP อาจใช้เวลาไม่กี่ สายน้อยที่จะดำเนินการในสิ่งเดียวกัน 991 00:49:02,610 --> 00:49:07,380 ใน C. นั่นเป็นเพราะ PHP จัดการหน่วยความจำ การจัดการสำหรับโปรแกรมเมอร์ที่ 992 00:49:07,380 --> 00:49:11,170 เมื่อเทียบกับที่เราต้อง malloc สิ่งที่ฟรีเช่น 993 00:49:11,170 --> 00:49:15,430 >> แต่เนื่องจาก PHP เป็นสื่อความหมาย ภาษาโดยทั่วไปก็อาจจะดำเนินการ 994 00:49:15,430 --> 00:49:19,540 ช้าบิตมากกว่า C ซึ่ง เป็นภาษาที่รวบรวม 995 00:49:19,540 --> 00:49:23,150 เพราะเรากำลังย้ายการเขียนโปรแกรม ภาษาให้ดูที่วิธีการที่ 996 00:49:23,150 --> 00:49:24,570 ไวยากรณ์จะแตกต่างกัน 997 00:49:24,570 --> 00:49:28,770 ขอให้ระมัดระวังที่จะไม่ ได้รับสับสนกับเรื่องนี้ 998 00:49:28,770 --> 00:49:33,750 ดังนั้นด้วยไวยากรณ์ PHP ไม่ว่าคุณจะ ฝัง PHP ของคุณภายในของ HTM​​L 999 00:49:33,750 --> 00:49:40,430 หรือยื่นภายในแฟ้ม PHP. เองคุณ จำเป็นที่จะต้องใส่รหัสในที่โล่ง 1000 00:49:40,430 --> 00:49:45,270 PHP และแท็กปิดเช่น PHP ดังต่อไปนี้เช่นเดียวกับบนหน้าจอ 1001 00:49:45,270 --> 00:49:46,660 >> ตัวแปรใน PHP 1002 00:49:46,660 --> 00:49:51,490 ทุกตัวแปรเดียวจะเริ่มต้นด้วย สัญญาณ $ ตามด้วยชื่อของ 1003 00:49:51,490 --> 00:49:53,150 ตัวแปรของคุณ 1004 00:49:53,150 --> 00:49:56,530 ตอนนี้ตัวแปรใน PHP ที่พิมพ์ลงไปอย่างอิสระ ซึ่งหมายความว่าคุณไม่จำเป็นต้อง 1005 00:49:56,530 --> 00:50:00,030 เพื่อแสดงให้เห็นสิ่งที่ชนิดข้อมูล คือเมื่อคุณกำลังประกาศว่า 1006 00:50:00,030 --> 00:50:03,505 แต่นี้ไม่ได้หมายความว่าพวกเขา ไม่ได้มีรูปแบบใด ๆ 1007 00:50:03,505 --> 00:50:09,370 ดังนั้นถ้าผมประกาศตัวแปรและกำหนดเพียงแค่ มันเท่ากับ 1 แล้วผมประกาศ 1008 00:50:09,370 --> 00:50:15,140 ตัวแปรอื่นตั้งค่าเท่ากับ "1" และหลังจากนั้นอีกหนึ่ง 1.0 ดี 1009 00:50:15,140 --> 00:50:19,410 ขึ้นอยู่กับประเภทของความเท่าเทียมกัน ผู้ประกอบการที่ผมใช้ถ้าผมต้องการที่จะเปรียบเทียบ 1010 00:50:19,410 --> 00:50:21,830 ในทุกประเภทแล้ว พวกเขาจะต้องมีค่าเท่ากับ 1011 00:50:21,830 --> 00:50:25,570 แต่ถ้าผมต้องการที่จะให้แน่ใจว่า ประเภทเท่ากัน, PHP ยังสามารถทำ 1012 00:50:25,570 --> 00:50:28,690 ที่ถึงแม้เราไม่ได้แสดงให้เห็น ชนิดมันคือเมื่อเรา 1013 00:50:28,690 --> 00:50:31,170 ครั้งแรกที่สร้างไฟล์ 1014 00:50:31,170 --> 00:50:33,990 >> ตอนนี้ใน PHP แม้ว่าเรามี เปลี่ยนไปจากการเขียนโปรแกรม 1015 00:50:33,990 --> 00:50:39,360 ภาษาจาก C เรายังมีของเรา เชื่อถือถ้าเงื่อนไขเช่นเดียวกับนี้ 1016 00:50:39,360 --> 00:50:43,270 เรายังมีวงของเราในขณะที่เพียง เช่นนี้ที่คุณใส่ในของคุณ 1017 00:50:43,270 --> 00:50:47,300 สภาพแล้ว ร่างกายของวง 1018 00:50:47,300 --> 00:50:50,360 แล้วเรายังมีของเราห่วง ซึ่งโดยปกติจะมีลักษณะเช่นนี้ 1019 00:50:50,360 --> 00:50:55,330 ดังนั้นถ้าผมอยากจะย้ำกว่าทุก เก้า psets และส่งและเรียก 1020 00:50:55,330 --> 00:50:58,960 submitPset ฟังก์ชั่นแล้วฉันจะทำอย่างนั้น ที่นี่ซึ่งพวกคุณมีทั้งหมด 1021 00:50:58,960 --> 00:50:59,830 ทำได้โดยจุดนี้ 1022 00:50:59,830 --> 00:51:01,080 ขอแสดงความยินดีโดยวิธีการที่ 1023 00:51:01,080 --> 00:51:04,560 1024 00:51:04,560 --> 00:51:07,550 >> สำหรับกล้องคน กล่าวว่าขอขอบคุณ 1025 00:51:07,550 --> 00:51:11,220 ตอนนี้ถ้าคุณไม่ได้ต้องการเพียงแค่ใช้นี้ สำหรับวงแล้ว PHP จริงยัง 1026 00:51:11,220 --> 00:51:13,580 มีสิ่งที่เรียกว่าลูป foreach 1027 00:51:13,580 --> 00:51:22,210 ดังนั้นถ้าผมมีอาร์เรย์ของจำนวนเต็ม 0 ถึง 8, เก็บไว้ใน psets อาร์เรย์ 1028 00:51:22,210 --> 00:51:27,290 แล้วฉันจะมีห่วง foreach ที่ iterates กว่าตัวเลขใน psets ทุก 1029 00:51:27,290 --> 00:51:30,640 แล้วฉันสามารถโทรเดียวกัน ทำงานแปดครั้ง 1030 00:51:30,640 --> 00:51:31,910 เช่นเดียวกับที่ผมเคยทำมาก่อน 1031 00:51:31,910 --> 00:51:36,480 ดังนั้นนี้สำหรับแต่ละวงเป็นสิ่งที่ดีเพราะ คุณจะได้ไม่ต้องถ้าคุณไม่ทราบ 1032 00:51:36,480 --> 00:51:39,470 ระยะเวลาที่แน่นอนของอาร์เรย์ที่คุณ ได้แล้วใช้ห่วง foreach นี้ 1033 00:51:39,470 --> 00:51:42,800 จะดูแลที่สำหรับคุณ 1034 00:51:42,800 --> 00:51:45,410 >> ดังนั้นผมจึงทำ psets เป็นอาร์เรย์ 1035 00:51:45,410 --> 00:51:46,700 ลองดูที่ว่า 1036 00:51:46,700 --> 00:51:51,290 อาร์เรย์ใน PHP มักจะเป็นเช่นเดียวกับ คนที่เราเคยมีใน C ที่ 1037 00:51:51,290 --> 00:51:52,960 คุณสามารถประกาศอาร์เรย์ 1038 00:51:52,960 --> 00:51:59,200 และที่นี่ผมสามารถประกาศอาร์เรย์ว่างเปล่า แล้วสร้างขึ้นแบบไดนามิกโดยใช้ 1039 00:51:59,200 --> 00:52:00,850 ดัชนีเป็นจำนวนเต็ม 1040 00:52:00,850 --> 00:52:04,140 ดังนั้นดัชนี 0, ฉันจะเก็บ เลขที่ 1 ชื่อ 1041 00:52:04,140 --> 00:52:09,210 ดัชนีที่ 1 จากรายการของฉันฉันจะ เพื่อเก็บค่า 2 1042 00:52:09,210 --> 00:52:12,670 และดัชนีที่สาม แต่ จำนวนครั้งที่สองฉันจะไป 1043 00:52:12,670 --> 00:52:14,870 เก็บหมายเลข 12 1044 00:52:14,870 --> 00:52:17,250 >> ตอนนี้เป็นที่ดีในการที่ ทำงานก็ทำงานได้ดี 1045 00:52:17,250 --> 00:52:21,310 แต่บอกว่ามันมีความสำคัญกับผม สิ่งที่แต่ละดัชนีถือ 1046 00:52:21,310 --> 00:52:24,500 สำหรับผมดัชนี 0 หมายความว่า แมวจำนวนมากที่ฉันมี 1047 00:52:24,500 --> 00:52:27,400 และดัชนีที่ 1 หมายความว่า นกฮูกหลายฉันมี 1048 00:52:27,400 --> 00:52:29,450 และหนึ่งต่อไปหมายความว่าหลายสุนัข 1049 00:52:29,450 --> 00:52:34,140 กันแล้วจึงมีการระบุว่าแทน ต้องจำ 0 เกี่ยวข้องกับ 1050 00:52:34,140 --> 00:52:38,090 แมวและนกฮูก 1 ถึงฉันจะสามารถใช้ arrays สมาคมซึ่งหมายความว่า 1051 00:52:38,090 --> 00:52:42,260 แทนของจำนวนเต็มเป็นดัชนีของฉัน ที่จริงผมสามารถใช้สาย 1052 00:52:42,260 --> 00:52:43,290 >> ดังนั้นนี้เป็นประโยชน์มาก 1053 00:52:43,290 --> 00:52:47,130 และคุณได้เพียงแค่เปลี่ยนพื้น จำนวนเต็มกับสตริง 1054 00:52:47,130 --> 00:52:50,074 และมีคุณมี อาเรย์ 1055 00:52:50,074 --> 00:52:51,930 ใช่ 1056 00:52:51,930 --> 00:52:55,800 >> ผู้ชม: มีเหตุผลที่ว่าทำไมมี ขีดที่สอง 1057 00:52:55,800 --> 00:52:58,750 ส่วนหนึ่งเพราะรายการของฉันมีอาร์เรย์ 1058 00:52:58,750 --> 00:53:01,330 >> ZAMYLA จัน: คำถามคือเป็น มีเหตุผลว่าทำไมมี 1059 00:53:01,330 --> 00:53:03,320 ขีดระหว่างและรายชื่อของฉันได้อย่างไร 1060 00:53:03,320 --> 00:53:03,610 เลขที่ 1061 00:53:03,610 --> 00:53:06,878 นั่นเป็นเพียงวิธีการที่ผมตั้งชื่อ ตัวแปรของฉัน 1062 00:53:06,878 --> 00:53:11,670 >> ผู้ชม: ในครั้งแรก สายก็เป็นหนึ่งคำ 1063 00:53:11,670 --> 00:53:12,560 >> ZAMYLA จัน: ฉันขอโทษ 1064 00:53:12,560 --> 00:53:13,410 ฉันจะแก้ไขที่ 1065 00:53:13,410 --> 00:53:13,620 ใช่ 1066 00:53:13,620 --> 00:53:15,460 พวกเขาควรจะเป็นชื่อตัวแปรเดียวกัน 1067 00:53:15,460 --> 00:53:16,710 ดีจับ 1068 00:53:16,710 --> 00:53:19,640 1069 00:53:19,640 --> 00:53:19,950 ตกลง 1070 00:53:19,950 --> 00:53:22,610 จึงขอย้ายไปยังสตริง concatenation 1071 00:53:22,610 --> 00:53:27,500 ถ้าผมอยากจะใช้เวลาสองสตริง แล้วฉันจะเชื่อมพวกเขา 1072 00:53:27,500 --> 00:53:28,550 กับผู้ประกอบการจุด 1073 00:53:28,550 --> 00:53:32,440 ดังนั้นถ้าผมมีไมโลเป็นชื่อแรก และกล้วยเป็นชื่อที่ผ่านมานั้น 1074 00:53:32,440 --> 00:53:35,430 เชื่อมโยงกับผู้ประกอบการและจุด แล้ววางในพื้นที่ระหว่าง 1075 00:53:35,430 --> 00:53:39,210 จะทำให้สายที่มีไมโล กล้วยซึ่งฉันสามารถสะท้อนหรือ 1076 00:53:39,210 --> 00:53:41,280 แต่พิมพ์ออกมา 1077 00:53:41,280 --> 00:53:44,465 >> การพูดของก้องขอพูด เกี่ยวกับการที่มีประโยชน์ไม่กี่ - 1078 00:53:44,465 --> 00:53:44,920 อุ่ย 1079 00:53:44,920 --> 00:53:46,030 ฉันขอโทษ 1080 00:53:46,030 --> 00:53:52,920 ฟังก์ชั่นที่มีประโยชน์ไม่กี่ PHP 1081 00:53:52,920 --> 00:53:56,240 ดังนั้นเราจึงมี - 1082 00:53:56,240 --> 00:53:57,444 ปัญหาทางเทคนิค 1083 00:53:57,444 --> 00:53:58,694 คนที่สอง 1084 00:53:58,694 --> 00:54:16,960 1085 00:54:16,960 --> 00:54:19,550 ผมได้ส่ง 1086 00:54:19,550 --> 00:54:22,320 ปัญหา PowerPoint 1087 00:54:22,320 --> 00:54:29,200 และเราจะกลับมาพร้อมกับฟังก์ชั่น PHP 1088 00:54:29,200 --> 00:54:32,010 1089 00:54:32,010 --> 00:54:35,150 และเราจะกลับมาพร้อมกับฟังก์ชั่น PHP 1090 00:54:35,150 --> 00:54:39,890 >> ดังนั้นเราจึงได้จำเป็นต้องมีฟังก์ชั่นที่ ถ้าคุณผ่านในแฟ้มนี่เป็นเพียง 1091 00:54:39,890 --> 00:54:43,300 ตัวอย่างของไฟล์ที่ ฉันอาจจะผ่านเข้ามา 1092 00:54:43,300 --> 00:54:47,605 จากนั้นที่จะรวมโค้ด PHP จากไฟล์ที่ผมชี้ให้เห็นว่า 1093 00:54:47,605 --> 00:54:49,940 และมันก็จะประเมินว่าค่ะ 1094 00:54:49,940 --> 00:54:54,450 แล้วเรายังมีก้องซึ่ง ขนานกับ printf 1095 00:54:54,450 --> 00:54:57,710 ออกเป็นคู่ขนานที่จะทำลาย, ซึ่งออกจากบล็อกของ 1096 00:54:57,710 --> 00:54:58,570 รหัสที่คุณอยู่ค่ะ 1097 00:54:58,570 --> 00:55:03,180 แล้วตรวจสอบไม่ว่าจะเป็นที่ว่างที่กำหนด ตัวแปรเป็นเหมือนโมฆะหรือศูนย์หรือ 1098 00:55:03,180 --> 00:55:08,482 สิ่งที่บรรจุด้วยการเป็นที่ว่างเปล่า 1099 00:55:08,482 --> 00:55:09,438 ใช่ 1100 00:55:09,438 --> 00:55:15,341 >> ผู้ชม: สำหรับสตริง concatenation จุดดำเนินการอย่างใดอย่างหนึ่งใน PHP คือว่า 1101 00:55:15,341 --> 00:55:20,158 เช่นเดียวกับในจาวาสคริปต์ที่มันใช้ จุดเพื่อเชื่อมหมายความบวก 1102 00:55:20,158 --> 00:55:27,440 ดังนั้นสำหรับชื่อเต็มของคุณอาจมีเงินดอลลาร์ เข้าสู่ระบบครั้งแรก + + แล้วครั้งสุดท้าย 1103 00:55:27,440 --> 00:55:27,720 >> ZAMYLA จัน: ใช่ 1104 00:55:27,720 --> 00:55:32,150 ดังนั้นคำถามก็คือว่าใน PHP เรา สามารถใช้เชื่อมสายเดียวกัน 1105 00:55:32,150 --> 00:55:33,890 เช่นใน JavaScript ด้วย pluses 1106 00:55:33,890 --> 00:55:35,410 และโจเซฟจะได้รับในภายหลังว่า 1107 00:55:35,410 --> 00:55:36,620 ผมคิดว่าเขามีสไลด์ที่ 1108 00:55:36,620 --> 00:55:37,570 ที่จริงมันแตกต่างกัน 1109 00:55:37,570 --> 00:55:41,310 ดังนั้นใน JavaScript คุณจำเป็นต้องใช้ บวกการเชื่อมสาย 1110 00:55:41,310 --> 00:55:43,280 และใน PHP, คุณจะต้อง ใช้ประกอบจุด 1111 00:55:43,280 --> 00:55:44,530 ดังนั้นพวกเขากำลังที่แตกต่างกัน 1112 00:55:44,530 --> 00:55:46,680 1113 00:55:46,680 --> 00:55:46,910 >> ตกลง 1114 00:55:46,910 --> 00:55:49,500 ดังนั้นขณะนี้ที่เราได้ครอบคลุมทั้งหมด PHP นี้ซึ่งไม่ได้ 1115 00:55:49,500 --> 00:55:50,490 มาจริงๆในการมีประโยชน์ 1116 00:55:50,490 --> 00:55:54,470 ดีก็มาในสะดวกเมื่อเรา สามารถรวมกับ HTML ของเรา 1117 00:55:54,470 --> 00:55:59,550 ดังนั้น PHP ของเราจะทำให้เรามีอำนาจที่จะ ปรับเปลี่ยนเนื้อหาของหน้าเว็บก่อนที่จะ 1118 00:55:59,550 --> 00:56:00,000 โหลด 1119 00:56:00,000 --> 00:56:04,270 ดังนั้นขึ้นอยู่กับเงื่อนไขที่แตกต่างกัน ปกติผู้ใช้เฉพาะที่ 1120 00:56:04,270 --> 00:56:07,520 เข้าสู่ระบบแล้วเราสามารถแสดง ข้อมูลที่แตกต่างกัน 1121 00:56:07,520 --> 00:56:08,800 ลินดาไม่คุณมีคำถามหรือไม่ 1122 00:56:08,800 --> 00:56:15,510 >> ผู้ชม: คุณสามารถเชื่อม ยังจำนวนเต็ม 1123 00:56:15,510 --> 00:56:16,760 >> ZAMYLA จัน: ใช่คุณสามารถ 1124 00:56:16,760 --> 00:56:19,530 1125 00:56:19,530 --> 00:56:23,270 ดังนั้นคำถามคือถ้าคุณสามารถ เชื่อมจำนวนเต็มหรืออื่น ๆ 1126 00:56:23,270 --> 00:56:28,920 variable.s ตอนนี้เราย้ายไปยัง MVC ซึ่ง เป็นกระบวนทัศน์ที่เราใช้ใน 1127 00:56:28,920 --> 00:56:33,380 pset7 และจำนวนมากของนักออกแบบเว็บใช้สำหรับการ การจัดรหัสในไฟล์ 1128 00:56:33,380 --> 00:56:34,490 ในเว็บไซต์ของพวกเขา 1129 00:56:34,490 --> 00:56:35,870 M ย่อมาจากรุ่น 1130 00:56:35,870 --> 00:56:41,450 และพื้นไฟล์รูปแบบที่จะจัดการ ด้วยการติดต่อกับฐานข้อมูล 1131 00:56:41,450 --> 00:56:44,640 ดูไฟล์ที่เกี่ยวข้องกับ ความสวยงามของเว็บไซต์ 1132 00:56:44,640 --> 00:56:47,550 และจับตัวควบคุม การร้องขอของผู้ใช้จะแยกวิเคราะห์ 1133 00:56:47,550 --> 00:56:49,230 ข้อมูลไม่ตรรกะอื่น ๆ 1134 00:56:49,230 --> 00:56:52,520 >> ใน pset7 เรารวมรุ่น และควบคุม 1135 00:56:52,520 --> 00:56:55,880 และเราก็เรียกว่าพวกเขาควบคุมและ ใส่ไว้ในไดเรกทอรีสาธารณะ 1136 00:56:55,880 --> 00:57:01,730 และดูไฟล์ที่เราใช้พวกเขาเป็น แม่แบบในไดเรกทอรีแม่ 1137 00:57:01,730 --> 00:57:07,260 ดังนั้นแผนภาพนี้ที่นี่ยังหมายถึง ที่ชนิดเดียวกันของการแบ่งกับ 1138 00:57:07,260 --> 00:57:10,510 รูปแบบและตัวควบคุมในสีม่วง ที่นี่ด้านซ้ายและ 1139 00:57:10,510 --> 00:57:12,770 มุมมองด้านขวา 1140 00:57:12,770 --> 00:57:16,020 ดังนั้นนี่คือแผนผังว่าบางส่วนของคุณ อาจจะมองเห็นได้ในเวลาทำการหรือ 1141 00:57:16,020 --> 00:57:19,130 ภาพที่เราวาดภาพตามที่คุณ ถูกหา pset ของคุณ 1142 00:57:19,130 --> 00:57:25,030 >> ดังนั้นที่นี่ในการควบคุมที่กำหนดรูปแบบ ควบคุมเรามีฟังก์ชั่น 1143 00:57:25,030 --> 00:57:30,490 ที่เกี่ยวข้องกับการสอบถาม SQL ฐานข้อมูลการดำเนินการตรรกะ PHP 1144 00:57:30,490 --> 00:57:32,370 บางทีคุณอาจจะมองหา หุ้นใน Yahoo! 1145 00:57:32,370 --> 00:57:34,590 การเงิน 1146 00:57:34,590 --> 00:57:37,390 หรือบางทีคุณอาจจะเพียงแค่การตรวจสอบเพื่อ ดูว่าผู้ใช้ที่ได้ส่งมา 1147 00:57:37,390 --> 00:57:40,250 รูปแบบอยู่แล้วก่อนที่จะมี เข้าเยี่ยมชมหน้าเว็บของคุณ 1148 00:57:40,250 --> 00:57:43,390 แล้วคุณจะทำให้ รูปแบบกว่าที่นี่ 1149 00:57:43,390 --> 00:57:48,210 หลังจากฟอร์มที่ได้รับการส่ง โดยผู้ใช้การกระทำที่เป็น 1150 00:57:48,210 --> 00:57:53,470 ที่ระบุไว้ในแท็กของฟอร์ม จะแสดงหน้าเว็บที่มัน 1151 00:57:53,470 --> 00:57:55,620 ผลตอบแทนที่ได้ว่าข้อมูลที่จะ 1152 00:57:55,620 --> 00:57:59,460 >> ดังนั้นข้อมูลทั้งหมดที่จะเป็น ส่งกลับไปยังตัวควบคุมของคุณ 1153 00:57:59,460 --> 00:58:02,620 แล้วคุณอาจจะทำอีกเล็กน้อย ตรรกะที่และอาจจะดำเนินการเพียงไม่กี่ 1154 00:58:02,620 --> 00:58:06,510 คำสั่งมากขึ้นในฐานข้อมูลและ แล้วในที่สุดมาด้วยอย่าง 1155 00:58:06,510 --> 00:58:11,930 ชุดเต็มของข้อมูลที่คุณจะ ผ่านในบางแม่แบบอื่น ๆ 1156 00:58:11,930 --> 00:58:13,950 ที่แสดงข้อมูลว่า 1157 00:58:13,950 --> 00:58:17,030 ตอนนี้ทำอย่างไรเราแพคเกจจริง ว่าข้อมูลได้หรือไม่ 1158 00:58:17,030 --> 00:58:23,980 ดีเรามีฟังก์ชั่นที่เรียกว่า Render ที่อยู่ในไฟล์ functions.php ใน 1159 00:58:23,980 --> 00:58:29,950 pset7 ที่คุณผ่านในชื่อของ ไฟล์ที่ชื่อของแม่แบบ 1160 00:58:29,950 --> 00:58:32,160 >> แล้วคุณยังผ่านใน อาเรย์ 1161 00:58:32,160 --> 00:58:37,150 และเพื่อให้อาเรย์แสดงให้เห็นถึง ข้อมูลที่แตกต่างกัน 1162 00:58:37,150 --> 00:58:39,040 ที่คุณต้องการที่จะผ่านเข้ามา 1163 00:58:39,040 --> 00:58:43,460 ตอนนี้สิ่งที่เป็นไปได้อย่างต่อเนื่องใน ตัวอย่างเหล่านี้คือกุญแจหรือ 1164 00:58:43,460 --> 00:58:47,070 แต่คีย์ของสมาคม อาร์เรย์ที่เป็นสิ่งที่เป็นไปได้ 1165 00:58:47,070 --> 00:58:51,050 คาดว่าจะมีอย่างต่อเนื่องโดยแม่แบบ เพราะมันรู้ว่ามันต้อง 1166 00:58:51,050 --> 00:58:53,990 สิ่งที่เรียกว่าข้อความ หรือที่เรียกว่าชื่อ 1167 00:58:53,990 --> 00:58:56,940 และแล้วสิ่งที่ด้านขวา ค่าที่แท้จริงดังนั้นในกรณีนี้ผู้ที่ 1168 00:58:56,940 --> 00:59:00,750 เป็นเด็กดีและไมโลที่จะไป จะเป็นค่าที่มีการเปลี่ยนแปลง 1169 00:59:00,750 --> 00:59:05,610 ว่าตัวควบคุมที่มีการเปลี่ยนแปลงทุกครั้ง หรือขึ้นอยู่กับเงื่อนไขบางอย่างและ 1170 00:59:05,610 --> 00:59:07,120 ที่จะผ่านเข้ามา 1171 00:59:07,120 --> 00:59:12,790 >> ดังนั้นที่นี่ในแม่แบบที่เราจะเห็นว่าเรา จะใช้ HTML อักขระพิเศษ 1172 00:59:12,790 --> 00:59:16,370 ซึ่งโดยทั่วไปหมายถึงเพียงแค่ที่เราต้องการ ที่จะได้รับการตรวจสอบสตริงว่า 1173 00:59:16,370 --> 00:59:17,580 ผู้วางระบบ 1174 00:59:17,580 --> 00:59:20,880 และเราต้องการที่จะทดแทน ข้อความที่อยู่ในนั้น 1175 00:59:20,880 --> 00:59:26,110 ดังนั้นแล้วเมื่อเราดูจริง ไฟล์ที่เฉพาะเจาะจง 1176 00:59:26,110 --> 00:59:28,700 ข้อมูลจะถูกส่งเข้ามา 1177 00:59:28,700 --> 00:59:33,850 โปรดทราบว่าวิธีการที่สำคัญทำให้การทำงานเป็น ที่คีย์ของสมาคม 1178 00:59:33,850 --> 00:59:37,170 อาร์เรย์เป็นตัวแปรเหล่านั้น ชื่อที่นี่ 1179 00:59:37,170 --> 00:59:40,720 และเพื่อให้ค่าของสำคัญในการที่ อาเรย์แล้วจะกลายเป็น 1180 00:59:40,720 --> 00:59:41,970 ค่าของตัวแปร 1181 00:59:41,970 --> 00:59:44,800 1182 00:59:44,800 --> 00:59:46,040 >> ตอนนี้ขอย้ายไปยัง SQL 1183 00:59:46,040 --> 00:59:48,010 มันหมายถึงโครงสร้าง Query Language 1184 00:59:48,010 --> 00:59:50,460 และอื่น ๆ นี้เป็นเพียงการเขียนโปรแกรม ภาษาการออกแบบ 1185 00:59:50,460 --> 00:59:51,880 สำหรับการจัดการฐานข้อมูล 1186 00:59:51,880 --> 00:59:56,860 และต่อมาในที่มีประโยชน์สำหรับเราในการ เว็บไซต์การเงิน pset7 ของเรา 1187 00:59:56,860 --> 01:00:00,510 เป็นหลักก็เป็นเพียงวิธีง่ายๆในการ ติดตามและจัดการวัตถุและตาราง 1188 01:00:00,510 --> 01:00:02,070 และเชื่อมโยงไปยังแต่ละอื่น ๆ 1189 01:00:02,070 --> 01:00:06,860 ตอนนี้คิดว่าฐานข้อมูลของคุณ โดยทั่วไปเป็นไฟล์ Excel บางที 1190 01:00:06,860 --> 01:00:10,040 ด้วยแผ่นแท็บหลาย 1191 01:00:10,040 --> 01:00:13,820 >> ดังนั้นคุณอาจมีตารางหลาย บางทีที่เชื่อมโยงไปยังอีกคนหนึ่ง 1192 01:00:13,820 --> 01:00:19,420 และอื่น ๆ เช่น Excel, เรามีจำนวนมาก ฟังก์ชันการทำงานที่เราต้องการ 1193 01:00:19,420 --> 01:00:22,300 ตัวอย่างเช่นเราสามารถเลือก แถวบาง 1194 01:00:22,300 --> 01:00:24,110 เราสามารถแทรกข้อมูล 1195 01:00:24,110 --> 01:00:25,560 เราสามารถปรับปรุงแถว 1196 01:00:25,560 --> 01:00:27,440 และเรายังสามารถลบสิ่งที่ 1197 01:00:27,440 --> 01:00:30,920 1198 01:00:30,920 --> 01:00:36,560 >> SQL เลือกทำงานโดยการเลือกแถว หรือแถวของคอลัมน์ที่ระบุจาก 1199 01:00:36,560 --> 01:00:39,640 ฐานข้อมูลที่ตรงกับบางอย่าง เกณฑ์ที่คุณระบุ 1200 01:00:39,640 --> 01:00:44,930 ดังนั้นกว่าที่นี่เมื่อฉันเห็น * เลือกจาก พ่อมดที่บ้าน = บ้านเรเวนคลอแล้ว 1201 01:00:44,930 --> 01:00:48,340 ฉันเลือก * ซึ่งหมายความว่าฉัน การเลือกคอลัมน์เดียวที่ทุกคนใน 1202 01:00:48,340 --> 01:00:56,340 แถวจากตารางตัวช่วยสร้าง แต่ถ้า คอลัมน์บ้านเท่ากับบ้านเรเวนคลอ 1203 01:00:56,340 --> 01:00:57,840 ตอนนี้เป็นที่บริสุทธิ์หรือ SQL 1204 01:00:57,840 --> 01:01:02,680 ดังนั้นถ้าผมเดินเข้าไปใน phpMyAdmin ซึ่งเป็น วิธีการเฉพาะที่เราใช้ในการจัดการ 1205 01:01:02,680 --> 01:01:07,040 ฐานข้อมูลของเรา SQL แล้วฉันจะแทรก ที่เป็นเว็บไซต์ phpmyadmin 1206 01:01:07,040 --> 01:01:08,290 และที่จะดำเนินการ 1207 01:01:08,290 --> 01:01:11,280 >> แต่เราต้องการทำจริง ที่ด้าน PHP 1208 01:01:11,280 --> 01:01:12,580 ดังนั้นทำอย่างไรเราทำอย่างนั้น 1209 01:01:12,580 --> 01:01:20,180 ดีที่เราใช้ฟังก์ชั่นการค้นหาที่ โดยทั่วไปดำเนินการที่แบบสอบถาม 1210 01:01:20,180 --> 01:01:21,830 ใช้? 1211 01:01:21,830 --> 01:01:25,850 เป็นตัวยึดที่เราสามารถผ่านในบาง ค่าสตริงของเราที่เรา 1212 01:01:25,850 --> 01:01:26,920 ต้องการที่จะเข้ามาแทนที่ 1213 01:01:26,920 --> 01:01:32,110 ดังนั้นบางทีฉันจัดเก็บที่แตกต่างกัน ค่าใน curr_house ซึ่ง 1214 01:01:32,110 --> 01:01:34,400 แสดงให้เห็นถึงบ้านในปัจจุบัน ที่ฉันจะผ่าน 1215 01:01:34,400 --> 01:01:39,040 ดังนั้นผมจึงสามารถผ่านในที่เป็นตัวยึด มีเครื่องหมายคำถาม 1216 01:01:39,040 --> 01:01:43,290 แล้วฉันจะดำเนินการโดยทั่วไป สิ่งเดียวที่ฉันได้ก่อนที่จะยกเว้น 1217 01:01:43,290 --> 01:01:45,550 ตอนนี้ฉันอยู่ใน PHP 1218 01:01:45,550 --> 01:01:51,300 >> และแบบสอบถามจะกลับ อาเรย์ 1219 01:01:51,300 --> 01:01:53,470 และฉันจะเก็บไว้ในแถว 1220 01:01:53,470 --> 01:01:56,880 ตอนนี้แบบสอบถามมักจะสามารถล้มเหลว 1221 01:01:56,880 --> 01:02:02,870 บางทีแบบสอบถามไม่สามารถดำเนินการ เนื่องจากตารางไม่ได้อยู่ 1222 01:02:02,870 --> 01:02:04,310 หรือบางทีอาจจะคอลัมน์ไม่ได้อยู่ 1223 01:02:04,310 --> 01:02:05,400 สิ่งที่ผิดพลาด 1224 01:02:05,400 --> 01:02:08,170 ทั้งในกรณีที่คุณจะต้องการให้ แน่ใจว่าคุณตรวจสอบว่า 1225 01:02:08,170 --> 01:02:09,700 แบบสอบถามกลับเท็จ 1226 01:02:09,700 --> 01:02:15,590 และที่สามโดยใช้ เท่ากับการดำเนินการมี 1227 01:02:15,590 --> 01:02:19,660 >> และจากนั้นฉันขอโทษที่เป็นอีกหนึ่ง ฟังก์ชั่น CS50 ผ่านในข้อความ 1228 01:02:19,660 --> 01:02:23,435 และถ้าคุณมองเข้าไปขอโทษทั้งหมดก็ จริงๆมันไม่ถูกทำให้ apology.php 1229 01:02:23,435 --> 01:02:26,100 1230 01:02:26,100 --> 01:02:26,410 ใช่ 1231 01:02:26,410 --> 01:02:29,630 >> ผู้ชม: คุณสามารถอธิบายสิ่งที่ ดาวไม่ระหว่างเลือกและจากที่ใด 1232 01:02:29,630 --> 01:02:30,710 >> ZAMYLA จัน: ใช่อย่างแน่นอน 1233 01:02:30,710 --> 01:02:35,220 ดังนั้นดาวในระหว่างเลือกและจาก หมายความว่าผมต้องการที่จะเลือกทั้ง 1234 01:02:35,220 --> 01:02:37,440 ทั้งแถวจากตารางของฉัน 1235 01:02:37,440 --> 01:02:41,900 ฉันจะได้แสดงให้เห็นเลือก ชื่อปีบ้าน 1236 01:02:41,900 --> 01:02:46,160 และฉันเท่านั้นที่จะได้รับทั้งสาม คอลัมน์ในตารางของฉัน 1237 01:02:46,160 --> 01:02:51,560 แต่ถ้าฉันพูด * เลือกแล้วฉันจะ ได้รับทุกอย่างในคอลัมน์นั้น 1238 01:02:51,560 --> 01:02:53,760 แล้วฉันจะไปคุณ ในด้านหลังแรก 1239 01:02:53,760 --> 01:02:57,656 >> ผู้ชม: ดังนั้นนี้ยังคงเป็น ใน SQL ใช่ไหม 1240 01:02:57,656 --> 01:02:59,610 เป็นแบบสอบถามนี้หรือ PHP นี้ 1241 01:02:59,610 --> 01:03:00,550 >> ZAMYLA จัน: เราอยู่ในแบบสอบถาม 1242 01:03:00,550 --> 01:03:01,940 ดังนั้นนี่คือใน PHP 1243 01:03:01,940 --> 01:03:06,280 ดังนั้นการใช้แบบสอบถามฟังก์ชัน PHP, เรากำลังดำเนินการแบบสอบถาม 1244 01:03:06,280 --> 01:03:11,988 1245 01:03:11,988 --> 01:03:15,364 >> ผู้ชม: มีสิ่งใดใน SQL กรณีเช่นเลือก 1246 01:03:15,364 --> 01:03:17,834 หรือตัวช่วยสร้างหรือบ้าน 1247 01:03:17,834 --> 01:03:20,050 >> ZAMYLA จันสินค้าอะไร ใน SQL กรณี ๆ ? 1248 01:03:20,050 --> 01:03:21,760 ดังนั้นผมเชื่อว่าใช่ 1249 01:03:21,760 --> 01:03:24,620 ผมเชื่อว่าการเลือกและจาก และสถานที่ที่เป็นกรณี ๆ 1250 01:03:24,620 --> 01:03:25,535 ไม่ได้หรือไม่ 1251 01:03:25,535 --> 01:03:27,500 >> ROB สลิง: ดังนั้นจึงเป็นสิ่งที่ตรงกันข้าม 1252 01:03:27,500 --> 01:03:32,030 ชื่อคอลัมน์และวิธีการตาราง ทุกคนเป็นกรณี ๆ 1253 01:03:32,030 --> 01:03:35,470 แต่ใด ๆ ของ MySQL คำสำคัญเช่น SELECT, FROM และ WHERE, ผู้ที่ไม่ได้ 1254 01:03:35,470 --> 01:03:36,140 กรณีที่มีความละเอียดอ่อน 1255 01:03:36,140 --> 01:03:36,420 ตกลง 1256 01:03:36,420 --> 01:03:37,780 ดังนั้นตรงข้ามของสิ่งที่ผมพูด 1257 01:03:37,780 --> 01:03:40,420 ดังนั้นทั้งหมดของคำหลัก MySQL - 1258 01:03:40,420 --> 01:03:42,670 เลือกจากที่ - ผู้ที่ ไม่ได้กรณีที่มีความละเอียดอ่อน 1259 01:03:42,670 --> 01:03:44,630 แต่ทุกอย่างอื่นเป็น 1260 01:03:44,630 --> 01:03:45,210 ตกลง 1261 01:03:45,210 --> 01:03:46,500 คุณอยู่ข้างหน้า 1262 01:03:46,500 --> 01:03:52,041 >> ผู้ชม: ถ้าผมได้ $ แถวในแง่ของการ มากกว่าหนึ่งแถวไม่ได้หมายความว่าเป็น 1263 01:03:52,041 --> 01:03:53,640 เพียงกลายเป็นอาเรย์? 1264 01:03:53,640 --> 01:03:59,550 >> ZAMYLA จัน: ดังนั้นคำถามคือถ้าแถว มีมากกว่าหนึ่งแถวในนั้นไม่ 1265 01:03:59,550 --> 01:04:01,800 มันกลายเป็นอาเรย์? 1266 01:04:01,800 --> 01:04:05,680 ดังนั้นจึงเป็นอาร์เรย์ของสมาคม อาร์เรย์แล้ว 1267 01:04:05,680 --> 01:04:10,730 ดังนั้นแม้ว่าจะมีเพียงหนึ่งแถว กลับมาแล้วคุณจะต้องไปที่ 1268 01:04:10,730 --> 01:04:12,690 ดัชนี 0 จากผลที่ 1269 01:04:12,690 --> 01:04:15,316 แล้วคุณจะมีแถวแรกที่ 1270 01:04:15,316 --> 01:04:17,482 ใช่เบลินดา? 1271 01:04:17,482 --> 01:04:21,258 >> ผู้ชม: เมื่อคุณใช้ ===, นี้เป็นตัวอย่างเท่านั้น 1272 01:04:21,258 --> 01:04:22,210 หรือมีคนอื่น 1273 01:04:22,210 --> 01:04:26,815 >> ZAMYLA จัน: ดังนั้นในกรณีนี้ === การเปรียบเทียบข้ามประเภท 1274 01:04:26,815 --> 01:04:29,870 1275 01:04:29,870 --> 01:04:34,050 ขอโทษ === การเปรียบเทียบ ที่เปรียบเทียบประเภท 1276 01:04:34,050 --> 01:04:37,620 แล้ว == เปรียบเทียบในทุกประเภท 1277 01:04:37,620 --> 01:04:41,620 >> ผู้ชม: คุณสามารถอธิบายสิ่งที่ แถวที่อยู่ในสถานการณ์นี้ 1278 01:04:41,620 --> 01:04:45,120 มันคือแถวของข้อมูล 1279 01:04:45,120 --> 01:04:48,100 >> ZAMYLA จัน: ในภาพนิ่งถัดไปฉัน จะอธิบายสิ่งที่เป็นแถว 1280 01:04:48,100 --> 01:04:49,890 ดังนั้นหากคุณไม่ทราบการถือครอง ปิดในวันที่ 1281 01:04:49,890 --> 01:04:50,620 แล้วคุณจะอยู่ด้านหลังหรือไม่ 1282 01:04:50,620 --> 01:04:54,699 >> ผู้ชม: สำหรับการทำงานเช่นแบบสอบถาม ทำให้และขอโทษ [ไม่ได้ยิน]? 1283 01:04:54,699 --> 01:04:59,050 1284 01:04:59,050 --> 01:05:03,050 >> ZAMYLA จัน: คำถามก็คือว่า ฟังก์ชั่นเหล่านี้ - แบบสอบถามขอโทษ 1285 01:05:03,050 --> 01:05:04,510 และทำให้ - 1286 01:05:04,510 --> 01:05:05,930 อยู่ร่วมกันใน PHP 1287 01:05:05,930 --> 01:05:09,460 เหล่านี้เป็นคนที่ CS50 เขียน pset7 1288 01:05:09,460 --> 01:05:09,910 และเจ? 1289 01:05:09,910 --> 01:05:15,333 >> ผู้ชม: เมื่อคุณต้องการที่จะบอกว่า $ _SESSION เป็นที่สำหรับรหัส? 1290 01:05:15,333 --> 01:05:17,310 หรืออาจจะให้คุณได้กล่าวว่าที่นี่ 1291 01:05:17,310 --> 01:05:23,440 >> ZAMYLA จัน: ดังนั้นคำถามคือเมื่อ เราใช้ $ _SESSION ที่เป็นที่เฉพาะเจาะจง 1292 01:05:23,440 --> 01:05:25,290 ตัวแปรระดับโลกที่เรากำลังใช้ 1293 01:05:25,290 --> 01:05:32,080 ที่นี่ตัวแปรนี้เป็นไป ท้องถิ่นกับการทำงานของเรา 1294 01:05:32,080 --> 01:05:36,588 ดังนั้นเราเพียงแค่ประกาศ ตัวแปรใหม่ 1295 01:05:36,588 --> 01:05:38,460 >> ผู้ชม: วิธีการคือขอโทษ ดำเนินการ? 1296 01:05:38,460 --> 01:05:40,960 >> ZAMYLA จัน: คำถามคือ วิธีการที่จะถูกดำเนินการขอโทษ? 1297 01:05:40,960 --> 01:05:44,180 และฉันคิดว่านี้เป็นจริงสวย การปฏิบัติที่ดีสำหรับคุณผู้ชายที่จะไปลงใน 1298 01:05:44,180 --> 01:05:49,260 ส่วน functions.php และดูที่ ขอโทษและดูว่าคุณอาจมี 1299 01:05:49,260 --> 01:05:50,670 ทำมันด้วยตัวคุณเอง 1300 01:05:50,670 --> 01:05:55,620 ดังนั้นผมอาจจะออกจากที่อยู่กับคุณ แต่เพียง บอกว่าถ้าคุณดูที่ขอโทษ 1301 01:05:55,620 --> 01:06:02,110 จากนั้นก็จะใช้เวลาข้อความที่คุณ ส่งไปขอโทษแล้วมัน 1302 01:06:02,110 --> 01:06:06,570 ทำให้ข้อความที่ 1303 01:06:06,570 --> 01:06:08,240 คำถามใด ๆ อีกหรือไม่ 1304 01:06:08,240 --> 01:06:08,710 ฉันรักคำถาม 1305 01:06:08,710 --> 01:06:09,555 เพื่อให้พวกเขามา 1306 01:06:09,555 --> 01:06:11,888 >> ผู้ชม: [ไม่ได้ยิน] 1307 01:06:11,888 --> 01:06:13,840 echo หรือพิมพ์มี 1308 01:06:13,840 --> 01:06:15,900 >> ZAMYLA จัน: คำถามคือ เราอาจไม่เพียง แต่ได้ใส่ 1309 01:06:15,900 --> 01:06:17,000 สะท้อนหรือมีการพิมพ์ 1310 01:06:17,000 --> 01:06:19,710 เพื่อที่จะได้ทำอะไรบางอย่าง แตกต่างกันเล็กน้อย 1311 01:06:19,710 --> 01:06:23,750 ที่จะมีการพิมพ์แบบสอบถาม ล้มเหลวในการที่ - 1312 01:06:23,750 --> 01:06:27,420 ดีตอนนี้เราจริง ในการควบคุมของเรา 1313 01:06:27,420 --> 01:06:30,350 ดังนั้นเราจึงไม่จริงต้อง HTML ตั้งค่าที่นี่ 1314 01:06:30,350 --> 01:06:34,946 ขอโทษโดยการแสดงผล apologize.php จริงเปลี่ยนเส้นทางคุณไป apology.php 1315 01:06:34,946 --> 01:06:39,560 1316 01:06:39,560 --> 01:06:42,200 ตกลง 1317 01:06:42,200 --> 01:06:45,880 >> ดังนั้นตอนนี้ขอไปอยู่ที่ จากคำถามก่อนหน้านี้เกี่ยวกับสิ่งที่ 1318 01:06:45,880 --> 01:06:47,330 จริงๆเป็นแถว 1319 01:06:47,330 --> 01:06:51,960 ดีแบบสอบถามจะกลับ อาร์เรย์ของแถว 1320 01:06:51,960 --> 01:06:55,020 และทุกแถวเป็นตัวแทน โดยอาเรย์ 1321 01:06:55,020 --> 01:07:02,840 ดังนั้นถ้าฉันได้ดำเนินการบางแบบสอบถามและ ฉันได้เก็บผลในแถวนั้น 1322 01:07:02,840 --> 01:07:07,850 โดยใช้ห่วง foreach แล้วอาร์เรย์ ชื่อเป็นคนแรกมี - แถว 1323 01:07:07,850 --> 01:07:13,170 แล้วฉันจะเรียก แถวในแถวที่นั่นทุก 1324 01:07:13,170 --> 01:07:20,060 >> ดังนั้น iterating กว่าที่ฉันสามารถแล้ว เข้าถึงคอลัมน์ชื่อแถวที่กำหนดของ 1325 01:07:20,060 --> 01:07:22,340 คอลัมน์ปีและคอลัมน์บ้าน 1326 01:07:22,340 --> 01:07:28,010 โปรดทราบว่าฉันจะไม่ได้รับสามารถที่จะ ทำเช่นนี้กับแถวเนื่องจากดัชนีแถว 1327 01:07:28,010 --> 01:07:29,290 ชื่อไม่อยู่ 1328 01:07:29,290 --> 01:07:31,970 แถวเป็นเพียงแถวของ arrays สมาคม 1329 01:07:31,970 --> 01:07:34,870 เพื่อให้คุณมีสองระดับมี 1330 01:07:34,870 --> 01:07:37,170 เมื่อคุณมีอาร์เรย์ของแถว คุณต้องได้รับเป็นที่ 1331 01:07:37,170 --> 01:07:39,110 และแล้วคุณสามารถเข้าถึงคอลัมน์ 1332 01:07:39,110 --> 01:07:41,636 ไม่ที่ทำให้มันชัดเจน 1333 01:07:41,636 --> 01:07:42,520 ใช่ในด้านหน้า 1334 01:07:42,520 --> 01:07:45,490 >> ผู้ชม: [ไม่ได้ยิน] เปิด วงเล็บของ [ไม่ได้ยิน]? 1335 01:07:45,490 --> 01:07:46,220 >> ZAMYLA จัน: ขอโทษฉัน 1336 01:07:46,220 --> 01:07:49,740 >> ผู้ชม: วงเล็บเปิด 1337 01:07:49,740 --> 01:07:52,420 >> ZAMYLA จันเหล่านี้ที่นี่ 1338 01:07:52,420 --> 01:07:58,520 ที่ช่วยให้ผมมี ตัวแปรที่ 1339 01:07:58,520 --> 01:07:58,670 ใช่ 1340 01:07:58,670 --> 01:08:01,900 >> ผู้ชม: เมื่อคุณพิมพ์, คุณ พิมพ์ไปยังรหัส HTML? 1341 01:08:01,900 --> 01:08:03,110 >> ZAMYLA จัน: ใช่ 1342 01:08:03,110 --> 01:08:07,720 เมื่อฉันพิมพ์นี้ที่นี่ที่อยู่ภายใน แม่ของฉันตอนนี้ดังนั้น 1343 01:08:07,720 --> 01:08:10,310 มุมมองของฉันของวิธีการ MVC 1344 01:08:10,310 --> 01:08:12,750 ดังนั้นฉันพิมพ์ลงใน HTML 1345 01:08:12,750 --> 01:08:16,670 >> ผู้ชม: ดังนั้นถ้าเราเดินเข้าไปในการพัฒนา หลังจากใช้เครื่องมือนี้เราสามารถทำได้ 1346 01:08:16,670 --> 01:08:17,160 ที่จริงในรหัส? 1347 01:08:17,160 --> 01:08:18,410 >> ZAMYLA จัน: ที่ดี คำถามใช่ 1348 01:08:18,410 --> 01:08:22,359 ดังนั้นถ้าคุณเดินเข้าไปในเครื่องมือสำหรับนักพัฒนา ใน Firefox ใช้ Firebug หรือ 1349 01:08:22,359 --> 01:08:26,109 โครเมี่ยมแล้วใช่คุณสามารถ เห็นเฉพาะ HTML 1350 01:08:26,109 --> 01:08:28,470 ดังนั้นมันจะไม่แสดง $ row ["ชื่อ"] 1351 01:08:28,470 --> 01:08:32,524 มันจะแสดงให้เห็นอย่างใดอย่างหนึ่ง ชื่ออยู่ในแถวที่ 1352 01:08:32,524 --> 01:08:36,268 >> ผู้ชม: เพ​​ียงแค่ปัญหาทั่วไป สิ่งที่ TR และ TD หมายถึง? 1353 01:08:36,268 --> 01:08:37,672 ทำไมเรา [ไม่ได้ยิน]? 1354 01:08:37,672 --> 01:08:41,850 1355 01:08:41,850 --> 01:08:44,814 >> ZAMYLA จันตารางแถว tr, ตารางคอลัมน์ TD แล้ว 1356 01:08:44,814 --> 01:08:48,060 1357 01:08:48,060 --> 01:08:49,310 ตกลง 1358 01:08:49,310 --> 01:08:55,771 1359 01:08:55,771 --> 01:08:56,835 >> ผู้ชม: ใช่มันเป็นข้อมูลตาราง 1360 01:08:56,835 --> 01:08:58,770 >> ZAMYLA จัน: ข้อมูลตาราง 1361 01:08:58,770 --> 01:08:59,894 ใช่ 1362 01:08:59,894 --> 01:09:08,670 >> ผู้ชม: มันเป็นแถวที่ แถวได้รับการปฏิบัติเช่นเดียวกับคอลัมน์? 1363 01:09:08,670 --> 01:09:08,910 >> ZAMYLA จัน: ขออภัย 1364 01:09:08,910 --> 01:09:10,570 คุณสามารถทำซ้ำที่ 1365 01:09:10,570 --> 01:09:14,450 >> ผู้ชม: วิธีคุณจะ เห็นภาพแถว? 1366 01:09:14,450 --> 01:09:16,310 >> ZAMYLA จัน: วิธีที่คุณจะเห็นภาพ แถวในชนิดของวิธี? 1367 01:09:16,310 --> 01:09:21,796 คุณกำลังพูดถึงเหล่านี้ แถวที่นี่หรือแถว tr? 1368 01:09:21,796 --> 01:09:22,630 >> ผู้ชม: แถว 1369 01:09:22,630 --> 01:09:25,229 >> ZAMYLA จัน: แถวเหล่านี้ที่นี่ 1370 01:09:25,229 --> 01:09:28,620 ผมอยากเห็นภาพนี้เป็น ผมดำเนินการค้นหาของฉัน 1371 01:09:28,620 --> 01:09:38,729 และมันก็บอกว่าตกลงฉันมีทั้ง 0 ถึง n จำนวนของแถวที่ตรงกับเงื่อนไข 1372 01:09:38,729 --> 01:09:40,510 ที่คุณได้สอบถาม 1373 01:09:40,510 --> 01:09:43,740 ดังนั้นผมจึงมีจำนวนแถวบาง 1374 01:09:43,740 --> 01:09:51,450 ดังนั้นแถว $ แถวร้านค้าแต่ละ หนึ่งในผู้ที่อยู่ในแถวแถว 1375 01:09:51,450 --> 01:09:58,110 ดังนั้นแม้ว่าจะเป็นเพียงหนึ่งของพวกเขาก็ ยังแถวของแถวที่ตรงกับมัน 1376 01:09:58,110 --> 01:10:03,010 >> ดังนั้นแล้วเช่นนี้ คล้ายกับเมื่อคุณเรียก 1377 01:10:03,010 --> 01:10:05,390 แคชจากผู้ใช้ 1378 01:10:05,390 --> 01:10:10,810 และเกณฑ์ที่มี ID เท่ากับ ID เซสชั่น 1379 01:10:10,810 --> 01:10:14,250 จริงๆมีเพียงเป็นหนึ่งในแถว ที่อาจตรงกับที่ 1380 01:10:14,250 --> 01:10:18,960 แต่ก็ยังเพิ่งกลับแถวหนึ่งแถว 1381 01:10:18,960 --> 01:10:22,620 ดังนั้นคุณจะต้องไปที่แถว 0 ดัชนีแคชดัชนี 1382 01:10:22,620 --> 01:10:26,195 ได้รับจริงไปยังแคชของคุณ 1383 01:10:26,195 --> 01:10:29,650 >> ผู้ชม: เป็นฟังก์ชั่นการพิมพ์ สะท้อนในสิ่งเดียวกัน 1384 01:10:29,650 --> 01:10:30,670 >> ZAMYLA จัน: ใช่ 1385 01:10:30,670 --> 01:10:31,190 ใช่ 1386 01:10:31,190 --> 01:10:33,304 พิมพ์เสียงสะท้อนของเดียวกัน 1387 01:10:33,304 --> 01:10:42,400 >> ผู้ชม: เป็นห่วง foreach วิธีเดียวที่จะเป็นแถวดัชนี? 1388 01:10:42,400 --> 01:10:46,110 >> ZAMYLA จันนี้ห่วง foreach วิธีเดียวที่คุณสามารถ 1389 01:10:46,110 --> 01:10:47,030 ย้ำผ่านแถว? 1390 01:10:47,030 --> 01:10:47,180 เลขที่ 1391 01:10:47,180 --> 01:10:51,000 นอกจากนี้คุณยังสามารถใช้สำหรับวงให้ ที่คุณรู้ว่าระยะเวลา 1392 01:10:51,000 --> 01:10:53,024 ของอาร์เรย์แถวที่ 1393 01:10:53,024 --> 01:10:58,500 >> ผู้ชม: คุณสามารถเข้าใช้งานได้ ใช้แถวเป็น [ไม่ได้ยิน]? 1394 01:10:58,500 --> 01:11:01,640 >> ZAMYLA จัน: ดังนั้นคุณจึงไม่สามารถเข้าถึงได้ เพียงแค่ใช้แถวถ้าคุณไม่ได้มี 1395 01:11:01,640 --> 01:11:05,160 ห่วง foreach ระบุว่า คุณยังไม่ได้ประกาศแถว 1396 01:11:05,160 --> 01:11:08,150 1397 01:11:08,150 --> 01:11:09,660 ใช่ 1398 01:11:09,660 --> 01:11:10,810 ใช่ในสีขาว 1399 01:11:10,810 --> 01:11:13,990 >> ผู้ชม: ดังนั้นสิ่งที่ tr และ TD ทำอย่างไร 1400 01:11:13,990 --> 01:11:16,790 >> ZAMYLA จัน: ดังนั้น tr และ TD เป็นแท็ก 1401 01:11:16,790 --> 01:11:19,590 tr แสดงให้เห็นจุดเริ่มต้น ของแถวของตาราง 1402 01:11:19,590 --> 01:11:26,625 และแต่ละ TD บ่งชี้ คอลัมน์ข้อมูลตารางใหม่ 1403 01:11:26,625 --> 01:11:32,275 >> ผู้ชม: สำหรับภาพของสิ่งที่แถว ก็เหมือนเพียงจินตนาการ SQL วิธี 1404 01:11:32,275 --> 01:11:33,510 พวกเขามีแถว 1405 01:11:33,510 --> 01:11:35,980 [ไม่ได้ยิน] 1406 01:11:35,980 --> 01:11:36,390 >> ZAMYLA จัน: ใช่ 1407 01:11:36,390 --> 01:11:37,630 นั่นเป็นจุดที่ดี 1408 01:11:37,630 --> 01:11:41,510 คุณสามารถเห็นภาพแถวเป็นเพียงแค่ เช่นเดียวกับในตาราง Excel เพียง 1409 01:11:41,510 --> 01:11:44,540 รายการของแถว 1410 01:11:44,540 --> 01:11:46,870 ตกลง 1411 01:11:46,870 --> 01:11:47,230 ขวาทั้งหมด 1412 01:11:47,230 --> 01:11:50,740 ดังนั้นขณะนี้ที่เราได้ไปกว่าเลือกถ้า มีไม่คำถามใด ๆ มากขึ้นเราจะ 1413 01:11:50,740 --> 01:11:52,970 ไปกว่าเข้าแทรก 1414 01:11:52,970 --> 01:11:58,220 ดังนั้นถ้าผมต้องการที่จะใส่ลงไปในบางส่วน ตารางและใส่คอลัมน์บาง 1415 01:11:58,220 --> 01:12:02,320 ค่าที่ฉันสามารถแทรกตัวเอง เป็นบ้านเรเวนคลอในปีที่ 7 1416 01:12:02,320 --> 01:12:07,245 แต่บางครั้งอาจจะมีที่ซ้ำกัน ค่านิยมที่เราเห็นใน pset7 เมื่อเรา 1417 01:12:07,245 --> 01:12:09,240 ได้รับการปรับปรุงผลงานของเรา 1418 01:12:09,240 --> 01:12:15,610 >> ดังนั้นในกรณีนี้เราต้องการที่จะใช้ในการ DUPLICATE UPDATE KEY ดังนั้นที่เราทำไม่ได้ 1419 01:12:15,610 --> 01:12:18,280 เก็บหลายแถวด้วยเหมือนกัน ค่า แต่ปรับปรุง 1420 01:12:18,280 --> 01:12:21,780 1421 01:12:21,780 --> 01:12:25,560 จากนั้นเราก็จะมีการปรับปรุง ซึ่งไม่ได้ใส่ 1422 01:12:25,560 --> 01:12:30,100 มันเป็นเพียงแค่การปรับปรุงที่คุณอัปเดต ในตารางบางอย่างที่มีให้ 1423 01:12:30,100 --> 01:12:34,403 หลักเกณฑ์และแล้วในที่สุดลบ ซึ่งจะเป็นสิ่งที่คล้ายกันมาก 1424 01:12:34,403 --> 01:12:40,200 >> ผู้ชม: คุณสามารถในเวลาสั้น ๆ ไปกว่าคีย์ที่ซ้ำกัน 1425 01:12:40,200 --> 01:12:40,850 >> ZAMYLA จัน: ใช่ 1426 01:12:40,850 --> 01:12:48,340 เป็นหลักที่นี่ผมมีแทรกลงใน ริงกอต, มีเกลเลียนค่าเหล่านี้ 1427 01:12:48,340 --> 01:12:56,900 แต่ประชาชนน่าจะเป็นกุญแจสำคัญที่ไม่ซ้ำกัน ค่าการตั้งค่าในตาราง MySQL 1428 01:12:56,900 --> 01:13:06,750 ดังนั้นถ้าฉันมีรหัสที่ตั้งค่า แล้วผมก็ไม่สามารถแทรกแถวใหม่ 1429 01:13:06,750 --> 01:13:10,961 ดังนั้นถ้ามันไม่ได้อยู่แล้ว แล้วผมต้องปรับปรุงมัน 1430 01:13:10,961 --> 01:13:16,040 1431 01:13:16,040 --> 01:13:17,722 ในช่วงกลางในสีขาว 1432 01:13:17,722 --> 01:13:21,570 >> ผู้ชม: ดังนั้นแทรกปรับปรุงลบ และเลือกเป็นผู้ที่มีอยู่ทั้งหมด 1433 01:13:21,570 --> 01:13:22,875 ในท้องถิ่น [ไม่ได้ยิน]? 1434 01:13:22,875 --> 01:13:27,320 1435 01:13:27,320 --> 01:13:29,630 >> ZAMYLA จัน: ดังนั้นแทรก ปรับปรุงลบและ 1436 01:13:29,630 --> 01:13:31,120 เลือกเป็นแบบสอบถามทั้งหมด 1437 01:13:31,120 --> 01:13:34,970 ดังนั้นเมื่อใดก็ตามที่คุณกำลังใช้ SQL, คุณจะต้องที่มีอยู่ 1438 01:13:34,970 --> 01:13:38,226 1439 01:13:38,226 --> 01:13:40,706 >> ผู้ชม: กลับไปแบบทดสอบที่ผ่านมา - 1440 01:13:40,706 --> 01:13:44,178 มีคำถามที่เกี่ยวข้องกับ หากคุณมีตารางและต้องการ 1441 01:13:44,178 --> 01:13:52,610 ใส่คะแนนการทดสอบในหนึ่งและคุณแทรก ชื่อของคุณจึงจะไม่ยอมให้คุณ 1442 01:13:52,610 --> 01:13:54,594 [ไม่ได้ยิน] คะแนนทดสอบของเพื่อนของคุณ 1443 01:13:54,594 --> 01:13:59,060 วิธีที่คุณจะทำเช่นนั้นที่มีการแทรก? 1444 01:13:59,060 --> 01:14:02,490 >> ZAMYLA จัน: ดังนั้นคำถามเกี่ยวกับ คำถามระยะกลางก่อนหน้านี้ 1445 01:14:02,490 --> 01:14:04,320 ฉันไม่ทราบที่ หนึ่งมันเป็นสิทธิในขณะนี้ 1446 01:14:04,320 --> 01:14:06,790 ดังนั้นบางทีหลังจากนั้นถ้าคุณต้องการที่จะ ขึ้นมาและแสดงให้ฉันแล้วฉันสามารถ 1447 01:14:06,790 --> 01:14:08,155 แน่นอนให้คำแนะนำ 1448 01:14:08,155 --> 01:14:11,250 1449 01:14:11,250 --> 01:14:15,460 แต่การพูดในสิ่งที่ใส่เช่น การให้คะแนนของใครบางคนเมื่อคุณ 1450 01:14:15,460 --> 01:14:18,800 ไม่ควรปล่อยให้พูดคุยเกี่ยวกับ SQL โจมตีฉีด 1451 01:14:18,800 --> 01:14:22,050 ดังนั้นการโจมตีฉีด SQL เป็นหลัก ที่มีคนใช้ 1452 01:14:22,050 --> 01:14:27,680 ประโยชน์จากการรักษาความปลอดภัยที่ต่ำของ วิธีการที่คุณจะพาในข้อมูล 1453 01:14:27,680 --> 01:14:35,660 >> ดังนั้นในที่นี่เช่นเดียวกับในด้านการเงิน CS50, เมื่อเราเข้าสู่ระบบแล้วเราสามารถใส่ใน 1454 01:14:35,660 --> 01:14:39,510 ชื่อผู้ใช้ในรูปแบบการเข้าสู่ระบบ กล่องข้อความแรกและ 1455 01:14:39,510 --> 01:14:41,570 แล้วใส่รหัสผ่าน 1456 01:14:41,570 --> 01:14:45,610 บางทีอาจจะเป็นโค้ด PHP ของเราอาจมีลักษณะ บางอย่างเช่นนี้ที่ $ ชื่อผู้ใช้ 1457 01:14:45,610 --> 01:14:51,410 เป็นชื่อผู้ใช้โพสต์ข้อมูลและรหัสผ่าน รหัสผ่านข้อมูลที่โพสต์ 1458 01:14:51,410 --> 01:14:55,110 และแล้วเราก็ดำเนินการค้นหาของเราพูด ตกลงกันแบบสอบถามของเราเป็นไป 1459 01:14:55,110 --> 01:14:57,990 เลือกจากผู้ใช้ของเราที่ ชื่อผู้ใช้ 1460 01:14:57,990 --> 01:14:58,970 หนึ่งที่พวกเขาส่งมา 1461 01:14:58,970 --> 01:15:06,870 และรหัสผ่านเป็นรหัสผ่าน หมายความว่ารหัสผ่านที่ตรงกับ 1462 01:15:06,870 --> 01:15:12,670 >> ตอนนี้สิ่งที่ถ้าแทนของจริง ส่งรหัสผ่านที่เกิดขึ้นจริงเช่นเดียวกับ 1463 01:15:12,670 --> 01:15:16,850 12345 และคาดเดาที่ง่ามว่า รหัสผ่านและพยายามที่จะตัดพวกเขา 1464 01:15:16,850 --> 01:15:21,460 บัญชีสิ่งที่ถ้าแทน พวกเขาส่งมานี้ 1465 01:15:21,460 --> 01:15:24,380 พวกเขาสามารถพิมพ์ในบางที รหัสผ่านที่คาดเดา 1466 01:15:24,380 --> 01:15:30,480 และแล้วพวกเขาก็จะจบ อ้างจากนั้นพิมพ์ในหรือ 1 = 1 1467 01:15:30,480 --> 01:15:35,160 ที่จะก้าวเข้าสู่ SQL แบบสอบถามเพื่อมีลักษณะบางอย่างเช่นนี้ 1468 01:15:35,160 --> 01:15:38,200 เลือกจากผู้ใช้ที่ชื่อผู้ใช้ = ง่ามและรหัสผ่าน 1469 01:15:38,200 --> 01:15:41,450 เท่ากับลิลลี่หรือ 1 = 1 1470 01:15:41,450 --> 01:15:45,450 >> ดังนั้นทั้งรหัสผ่านที่มี ความถูกต้องหรือ 1 = 1 1471 01:15:45,450 --> 01:15:47,870 ซึ่งเป็นจริงเสมอ 1472 01:15:47,870 --> 01:15:52,780 ดังนั้นในกรณีนี้โดยทั่วไปผู้ใช้สามารถ ใช้ประโยชน์จากนี้และเพียงแค่เข้าสู่ระบบ 1473 01:15:52,780 --> 01:15:55,240 ตัวเองในและสับ บัญชีของใครบางคน 1474 01:15:55,240 --> 01:15:58,950 เพื่อที่ว่าทำไมเราต้องการที่จะหลีกเลี่ยง คนที่มีการทำเช่นนี้ 1475 01:15:58,950 --> 01:16:03,890 แต่โชคดีที่ฟังก์ชั่นการค้นหาโดย ผ่านในตัวยึดจะใช้เวลา 1476 01:16:03,890 --> 01:16:04,800 ดูแลนี้สำหรับคุณ 1477 01:16:04,800 --> 01:16:08,570 นอกจากนี้คุณจะมักจะไม่ต้องการ ที่จริงส่งรหัสผ่าน 1478 01:16:08,570 --> 01:16:09,310 ตัวเอง 1479 01:16:09,310 --> 01:16:14,115 นั่นเป็นเหตุผลที่เราถกหรือการเข้ารหัส พวกเขาในด้านการเงิน CS50 1480 01:16:14,115 --> 01:16:17,553 >> ผู้ชม: การทดสอบที่ผ่านมาพูดคุยกัน เกี่ยวกับสตริงหนี MySQL 1481 01:16:17,553 --> 01:16:21,800 เราจะต้องกังวลเกี่ยวกับที่ 1482 01:16:21,800 --> 01:16:22,670 >> ZAMYLA จัน: นั่นเป็นคำถามที่ดี 1483 01:16:22,670 --> 01:16:29,050 สตริงหนี MySQL เป็นแน่นอน ฟังก์ชั่นที่ใช้ในแบบสอบถามของเรา 1484 01:16:29,050 --> 01:16:30,420 แต่แน่นอนว่ามีลักษณะเป็น 1485 01:16:30,420 --> 01:16:32,950 ผมบอกว่าเป็นเกมที่ยุติธรรมที่จะรู้ว่า ที่คุณจะต้องเรียกว่า 1486 01:16:32,950 --> 01:16:34,370 ฟังก์ชั่นในสตริง 1487 01:16:34,370 --> 01:16:35,245 ใช่เบลินดา? 1488 01:16:35,245 --> 01:16:38,606 >> AUDIENCE: วิธีทำคุณรู้ว่าเมื่อมัน ราคาเดียวหรือราคาคู่? 1489 01:16:38,606 --> 01:16:43,516 และฉันรู้สึกเหมือนในการบรรยายคุณ กล่าวถึงสิ่งที่เกี่ยวกับการไม่ได้มี 1490 01:16:43,516 --> 01:16:48,426 [ไม่ได้ยิน] หรือบางสิ่งบางอย่างหรือ คำพูดเดียวที่สองในตอนท้าย 1491 01:16:48,426 --> 01:16:56,407 1492 01:16:56,407 --> 01:17:00,825 ฉันคิดว่าเขาชี้ให้เห็นว่าในการบรรยาย คุณควรจะมีเครื่องหมายวรรคตอนที่ 1 1493 01:17:00,825 --> 01:17:04,290 และจากนั้นได้มี apostrophes หรือสิ่งที่ 1494 01:17:04,290 --> 01:17:05,540 >> ผู้ชม: [ไม่ได้ยิน] 1495 01:17:05,540 --> 01:17:14,860 1496 01:17:14,860 --> 01:17:18,657 >> ผู้ชม: สิ่งที่เป็นซิงเกิ้ลล่าสุด อ้างอยู่ในที่มีอยู่ในกล่องที่สองที่ 1497 01:17:18,657 --> 01:17:19,391 ไม่ควรจะมี 1498 01:17:19,391 --> 01:17:21,840 [ไม่ได้ยิน] 1499 01:17:21,840 --> 01:17:26,730 เพราะเมื่อคุณใช้เวลาที่ผ่านมาเพียงครั้งเดียว อ้างออกและตรงกับเหล่านี้สำหรับเนื้อหา 1500 01:17:26,730 --> 01:17:30,522 ที่รหัสผ่านคือถ้าคุณมีที่ แบบสอบถามมีคำพูดเดียวที่ 1501 01:17:30,522 --> 01:17:31,340 ท้ายที่สุดแล้ว 1502 01:17:31,340 --> 01:17:36,580 คุณต้องการที่จะใช้คำพูดเดียว เป็นหนึ่งในที่ใบหน้าหนึ่ง 1503 01:17:36,580 --> 01:17:37,574 [ไม่ได้ยิน] 1504 01:17:37,574 --> 01:17:42,820 ดังนั้นสิ่งที่เป็นจริงในข้อความที่ กล่องไม่ควรมีที่ 1505 01:17:42,820 --> 01:17:44,070 >> ZAMYLA จัน: ผมจะเปลี่ยนที่ 1506 01:17:44,070 --> 01:17:56,490 1507 01:17:56,490 --> 01:17:56,880 ตกลง 1508 01:17:56,880 --> 01:18:00,435 หากมีคำถามใด ๆ ไม่ได้แล้วฉันจะ ผ่านมันไปยังโจเซฟที่จะพูดคุย 1509 01:18:00,435 --> 01:18:04,332 เกี่ยวกับ JavaScript, และอื่น ๆ 1510 01:18:04,332 --> 01:18:09,540 >> [APPLAUSE] 1511 01:18:09,540 --> 01:18:11,660 >> JOSEPH ONG: ดังนั้นเรากำลังทำงานอยู่ นิด ๆ หน่อย ๆ ที่อยู่เบื้องหลัง 1512 01:18:11,660 --> 01:18:13,280 ดังนั้นถ้าคุณต้องออกจากที่ตกลง 1513 01:18:13,280 --> 01:18:16,540 แต่เราขอให้คุณเก็บหัวของคุณลง ถ้าคุณอยู่ในกลางเพื่อให้คุณ 1514 01:18:16,540 --> 01:18:19,560 ไม่ปิดกั้นกล้องและที่คุณใช้ กลับออกหากคุณต้อง 1515 01:18:19,560 --> 01:18:25,010 1516 01:18:25,010 --> 01:18:26,306 ฉันโจเซฟโดยวิธีการ 1517 01:18:26,306 --> 01:18:27,556 สวัสดี 1518 01:18:27,556 --> 01:18:37,910 1519 01:18:37,910 --> 01:18:38,630 การทดสอบการทดสอบ 1520 01:18:38,630 --> 01:18:39,630 แดนเป็นที่ดีหรือไม่? 1521 01:18:39,630 --> 01:18:40,880 เย็น 1522 01:18:40,880 --> 01:18:44,460 1523 01:18:44,460 --> 01:18:47,600 >> ดังนั้นวิดีโอจะถูกโพสต์ ออนไลน์สำหรับผู้ที่ 1524 01:18:47,600 --> 01:18:48,850 ต้องออกตอนนี้ 1525 01:18:48,850 --> 01:18:51,350 1526 01:18:51,350 --> 01:18:52,600 อึดอัด 1527 01:18:52,600 --> 01:18:56,300 1528 01:18:56,300 --> 01:18:57,510 ตกลง 1529 01:18:57,510 --> 01:18:59,730 ทบทวนคำถามเพื่อ 1530 01:18:59,730 --> 01:19:00,980 นี้เป็นแมว 1531 01:19:00,980 --> 01:19:03,150 1532 01:19:03,150 --> 01:19:07,170 ตอนนี้, JavaScript, ซึ่งเป็นอาจจะไม่ เป็นทุกคนสำหรับบางส่วนของพวกคุณ 1533 01:19:07,170 --> 01:19:07,370 ตกลง 1534 01:19:07,370 --> 01:19:09,280 เพื่อให้เป็นครั้งแรกที่จำได้จาก Zamyla 1535 01:19:09,280 --> 01:19:11,270 โปรดจำไว้ว่า PHP เป็น ทำงานบนเซิร์ฟเวอร์ 1536 01:19:11,270 --> 01:19:15,230 และจำนวนครั้งที่พวกคุณเขียนลูป ใน PHP ที่จะพิมพ์ออก HTML ใช่ไหม 1537 01:19:15,230 --> 01:19:19,170 ดังนั้นเมื่อรหัสที่รันที่ ผล HTML ที่คุณพิมพ์ออกมา 1538 01:19:19,170 --> 01:19:20,500 ได้รับการส่งไปยังผู้ใช้ 1539 01:19:20,500 --> 01:19:25,960 และเมื่อที่เกิดขึ้นไม่สามารถ PHP เพิ่มเติม จะทำงานจนกว่าคุณจะโหลดหน้าเว็บของ 1540 01:19:25,960 --> 01:19:27,660 แน่นอนซึ่ง reexecutes PHP 1541 01:19:27,660 --> 01:19:30,080 แต่เมื่อคุณพิมพ์ออกมาแบบนั้น คุณไม่สามารถไปได้ทุกที่ 1542 01:19:30,080 --> 01:19:33,580 >> ดังนั้น HTML ที่ถูกส่งผ่านไปยังผู้ใช้ ซึ่งเป็นเบราว์เซอร์ที่นี่ที่ 1543 01:19:33,580 --> 01:19:35,470 ไมโลคือการใช้คอมพิวเตอร์ 1544 01:19:35,470 --> 01:19:40,340 และให้ดีมีหลายสิ่งที่ เมื่อเราส่ง HTM​​L ให้กับผู้ใช้ 1545 01:19:40,340 --> 01:19:43,350 บางครั้งเราต้องการที่จะทำสิ่งที่ชอบ เมื่อคุณคลิกที่สิ่งที่เราต้องการ 1546 01:19:43,350 --> 01:19:47,350 กล่องแจ้งเตือนจะปรากฏขึ้นทุกประเภทของ ปฏิสัมพันธ์เช่นเมื่อคุณกด 1547 01:19:47,350 --> 01:19:50,740 ที่สำคัญเมื่อคุณคลิกบางอย่างใน หน้าฉันต้องการสิ่งที่จะเกิดขึ้น 1548 01:19:50,740 --> 01:19:54,550 ดีคุณจะไม่สามารถ reexecute PHP รหัส HTML ที่ครั้งหนึ่งเคยเป็นที่ตั้ง 1549 01:19:54,550 --> 01:19:55,900 ดังนั้นวิธีที่คุณทำเช่นนี้? 1550 01:19:55,900 --> 01:19:59,930 >> เราแนะนำภาษาใหม่ที่เรียกว่า จาวาสคริปต์ที่ทำงานในเบราว์เซอร์ 1551 01:19:59,930 --> 01:20:02,890 ที่ช่วยให้คุณทำสิ่งที่ เพื่อ HTML หลังจากที่คุณได้รับ 1552 01:20:02,890 --> 01:20:04,020 ออกจากเซิร์ฟเวอร์ 1553 01:20:04,020 --> 01:20:07,050 และนี่คือเหตุผลที่เราเรียกว่าฝั่งไคลเอ็นต์ การเขียนโปรแกรมภาษา 1554 01:20:07,050 --> 01:20:09,110 การทำงานบนคอมพิวเตอร์ของคุณ - 1555 01:20:09,110 --> 01:20:11,400 ลูกค้า 1556 01:20:11,400 --> 01:20:13,830 คำถามใด ๆ เกี่ยวกับที่เพื่อให้ห่างไกล 1557 01:20:13,830 --> 01:20:15,650 กระบวนทัศน์ที่ทำให้รู้สึกถึงคน 1558 01:20:15,650 --> 01:20:16,010 ตกลง 1559 01:20:16,010 --> 01:20:16,790 ดี 1560 01:20:16,790 --> 01:20:17,340 ขวาทั้งหมด 1561 01:20:17,340 --> 01:20:20,850 ดังนั้นสิ่งแรกที่จะต้องทราบ เป็นที่จาวาสคริปต์ไม่ได้เป็น PHP 1562 01:20:20,850 --> 01:20:23,010 >> พวกเขามีรูปแบบที่แตกต่างกันบางอย่าง ซึ่งเราจะไปลงใน 1563 01:20:23,010 --> 01:20:24,530 และพวกเขามีการใช้งานที่แตกต่างกันมาก 1564 01:20:24,530 --> 01:20:26,640 JavaScript, อีกครั้งของคุณ เบราว์เซอร์สำหรับลูกค้า 1565 01:20:26,640 --> 01:20:30,640 เซิร์ฟเวอร์ทำงานแห่งหนึ่งในคนอื่น คอมพิวเตอร์ที่ส่งข้อมูล 1566 01:20:30,640 --> 01:20:31,720 ให้คุณถูกต้องหรือไม่ 1567 01:20:31,720 --> 01:20:36,730 ดังนั้นถ้าเราขอให้คุณเขียนโค้ด PHP กับคำถามการสอบไม่ได้เขียน 1568 01:20:36,730 --> 01:20:38,710 JavaScript และในทางกลับกัน 1569 01:20:38,710 --> 01:20:41,710 คุณก็จะสูญเสียจุด และจะไม่ได้รับสิทธิ 1570 01:20:41,710 --> 01:20:43,690 >> จึงขอได้ในบางส่วน ความแตกต่างทางไวยากรณ์ - 1571 01:20:43,690 --> 01:20:46,140 JavaScript ด้านซ้าย และ PHP ด้านขวา 1572 01:20:46,140 --> 01:20:48,670 สิ่งแรกที่คุณจะสังเกตเห็นด้วย JavaScript, เราประกาศตัวแปรที่มี 1573 01:20:48,670 --> 01:20:49,440 คำหลัก var - 1574 01:20:49,440 --> 01:20:53,590 V--R PHP ที่ใช้เครื่องหมายดอลลาร์, เป็น Zamyla กล่าวก่อนหน้านี้ 1575 01:20:53,590 --> 01:20:57,570 ถ้าคุณต้องการที่จะประกาศเชื่อมโยง อาร์เรย์เราจะเห็นรูปแบบที่คุ้นเคยกับ 1576 01:20:57,570 --> 01:20:59,030 ด้านขวาด้วย PHP 1577 01:20:59,030 --> 01:21:01,630 ที่ด้านซ้ายแทน คุณใช้วงเล็บปีกกา 1578 01:21:01,630 --> 01:21:03,280 แล้วคีย์ของคุณมีทางด้านซ้าย 1579 01:21:03,280 --> 01:21:04,670 แล้วคุณมีลำไส้ใหญ่ 1580 01:21:04,670 --> 01:21:06,560 แล้วคุณมีค่า ที่คุณต้องการ 1581 01:21:06,560 --> 01:21:09,840 >> ดังนั้นนี่คือวิธีการที่คุณจะทำมันใน PHP ทางด้านขวาด้วยสองที่ 1582 01:21:09,840 --> 01:21:10,955 บรรทัดที่เริ่มต้นที่ไมโล 1583 01:21:10,955 --> 01:21:14,540 และนั่นคือวิธีการที่คุณจะทำมันใน ด้านซ้ายใน JavaScript ถ้าคุณต้องการ 1584 01:21:14,540 --> 01:21:16,110 สิ่งที่เราเรียกวัตถ​​ุ 1585 01:21:16,110 --> 01:21:19,340 และวัตถุใน JavaScript เป็น arrays สมาคมเพียง 1586 01:21:19,340 --> 01:21:23,710 ดังนั้นหากคุณต้องการที่จะเข้าถึงด้านใน PHP คุณใช้ไวยากรณ์วงเล็บนี้ 1587 01:21:23,710 --> 01:21:27,170 และด้วยวิธีนี้คุณสามารถกำหนดใหม่ เจ้าของสนามนี้ลอเรน 1588 01:21:27,170 --> 01:21:30,150 >> ดีใน JavaScript ถ้าใครต้องการที่จะ เข้าสู่สนามและเปลี่ยนเป็นคุณสามารถ 1589 01:21:30,150 --> 01:21:31,370 ใช้ไวยากรณ์จุด 1590 01:21:31,370 --> 01:21:33,860 นอกจากนี้คุณยังสามารถใช้ไวยากรณ์วงเล็บ 1591 01:21:33,860 --> 01:21:35,550 แต่คุณไม่สามารถใช้ จุดไวยากรณ์ใน PHP 1592 01:21:35,550 --> 01:21:36,525 ที่จะไม่ทำงาน 1593 01:21:36,525 --> 01:21:38,910 มันใช้งานได้เฉพาะใน PHP 1594 01:21:38,910 --> 01:21:42,060 และสุดท้ายที่จะพิมพ์สิ่งที่จะ คอนโซลคุณใช้ console.log ซึ่ง 1595 01:21:42,060 --> 01:21:43,720 พวกคุณใช้เป็นจำนวนมากใน pset8 1596 01:21:43,720 --> 01:21:45,260 คุณสามารถ console.log ที่ 1597 01:21:45,260 --> 01:21:50,030 >> ถ้าคุณต้องการที่จะพิมพ์อาร์เรย์ใน PHP, คุณต้องใช้การพิมพ์ r 1598 01:21:50,030 --> 01:21:53,240 และทางด้านขวาคุณจะเห็นฉันสับ สตริง concatenation ที่นั่น 1599 01:21:53,240 --> 01:21:54,070 ก่อนหน้านี้มีคนถาม 1600 01:21:54,070 --> 01:21:55,850 ผมใช้บวกใน JavaScript 1601 01:21:55,850 --> 01:21:59,800 ถ้าผมต้องการที่จะเชื่อมบางสิ่งบางอย่าง ใน PHP, ฉันจะใช้จุด 1602 01:21:59,800 --> 01:22:00,800 เหล่านี้มีความแตกต่างกัน 1603 01:22:00,800 --> 01:22:03,420 หากคุณกำลังเขียนโค้ด PHP, ไม่ได้ใช้บวก 1604 01:22:03,420 --> 01:22:06,810 หากคุณกำลังเขียน JavaScript รหัสไม่ได้เขียนจุด 1605 01:22:06,810 --> 01:22:08,230 มันจะเป็นความผิด 1606 01:22:08,230 --> 01:22:09,640 และคุณจะเศร้า 1607 01:22:09,640 --> 01:22:11,000 >> ดังนั้นความแตกต่างของไวยากรณ์ 1608 01:22:11,000 --> 01:22:14,710 รู้ไวยากรณ์ของคุณเพราะถ้าคุณต้อง เขียนคำถามและคุณใช้ไวยากรณ์ 1609 01:22:14,710 --> 01:22:16,890 จากภาษาที่ไม่ถูกต้อง มันจะไม่ทำงาน 1610 01:22:16,890 --> 01:22:19,520 และมันจะผิด 1611 01:22:19,520 --> 01:22:22,420 เพื่อขอพูดคุยเกี่ยวกับการควบคุมบางส่วน ความแตกต่างของการไหลของวิธีการที่คุณใช้ 1612 01:22:22,420 --> 01:22:24,040 ลูปในแต่ละของพวกเขา 1613 01:22:24,040 --> 01:22:26,610 Zamyla เดินไปทางด้านขวา 1614 01:22:26,610 --> 01:22:27,780 สิ่งที่อยู่ทางด้านขวา ควรจะคุ้นเคย 1615 01:22:27,780 --> 01:22:29,670 ลองดูที่ด้านซ้าย 1616 01:22:29,670 --> 01:22:34,830 >> เมื่อคุณใช้สำหรับ n วงใน JavaScript, ตัวแปรห่วงของคุณ var ฉันที่นั่น 1617 01:22:34,830 --> 01:22:37,210 ห่วงกุญแจของอาร์เรย์ 1618 01:22:37,210 --> 01:22:39,150 ดังนั้นคุณจะเห็นชื่อบ้านและบทบาท 1619 01:22:39,150 --> 01:22:42,440 ถ้าฉัน console.log ฉันฉันได้รับ ชื่อบ้านและบทบาท 1620 01:22:42,440 --> 01:22:44,720 ผู้ที่มีคีย์ 1621 01:22:44,720 --> 01:22:50,080 ใน JavaScript ห่วง foreach ไป กว่าค่าของอาร์เรย์นี้ 1622 01:22:50,080 --> 01:22:52,040 ดังนั้นคุณจะสังเกตเห็นพวกเขาทั้งสองฉัน 1623 01:22:52,040 --> 01:22:56,000 แต่ในที่นี่ในด้าน PHP จะพิมพ์ ออกไมโล CS50 และมิ่งขวัญ 1624 01:22:56,000 --> 01:22:57,390 ผู้ที่มีค่าใน PHP 1625 01:22:57,390 --> 01:23:00,180 >> ดังนั้นเหล่านี้เป็นวิธีการที่ทั้งสองจะแตกต่างกัน ในภาษาที่แตกต่างกัน 1626 01:23:00,180 --> 01:23:02,970 ดังนั้นถ้าคุณกำลังใช้ foreach ห่วงไม่ได้คิดว่ามัน 1627 01:23:02,970 --> 01:23:03,760 จะช่วยให้คุณคีย์ 1628 01:23:03,760 --> 01:23:08,010 และถ้าคุณกำลังใช้สำหรับ n ห่วงไม่ได้ ถือว่ามันช่วยให้คุณมีค่า 1629 01:23:08,010 --> 01:23:10,420 นี้ไม่ได้ทำให้รู้สึกเพื่อให้ห่างไกล 1630 01:23:10,420 --> 01:23:13,630 ภาพนิ่งถัดไปจะแสดงให้คุณเห็น วิธีการที่คุณสามารถเข้าถึงตรงข้ามใน 1631 01:23:13,630 --> 01:23:15,160 แต่ละของพวกเขา 1632 01:23:15,160 --> 01:23:18,550 >> ดีถ้าคุณมีคีย์ใน JavaScript และคุณต้องการให้ค่าออกมา 1633 01:23:18,550 --> 01:23:20,440 คุณเพียงแค่เข้ามาในดัชนี อาร์เรย์กับที่ 1634 01:23:20,440 --> 01:23:23,640 ดังนั้นไมโลของฉันจะได้รับสิ่งที่ ที่คุณต้องการ - ค่า 1635 01:23:23,640 --> 01:23:25,260 มีไวยากรณ์ที่แตกต่างกันนี้ใน PHP เป็น 1636 01:23:25,260 --> 01:23:28,140 ถ้าคุณอยากจะรู้ว่าฉันไม่ได้ คิดว่าเราได้แสดงให้เห็นว่ามันยังอยู่กับคุณ 1637 01:23:28,140 --> 01:23:31,740 แต่ถ้าคุณสนใจคุณสามารถใช้ ไวยากรณ์เพิ่มเติมนี้อยู่ทางด้านขวา 1638 01:23:31,740 --> 01:23:35,130 ด้านที่จริงจะช่วยให้คุณได้รับ คีย์ใน PHP เมื่อคุณกำลังใช้ 1639 01:23:35,130 --> 01:23:35,880 ห่วง foreach 1640 01:23:35,880 --> 01:23:39,640 ดังนั้นเพียงแค่นิด ๆ หน่อย ๆ ของเรื่องไม่สำคัญ ถ้าหากคุณสนใจ 1641 01:23:39,640 --> 01:23:42,630 >> เพื่อให้เป็นเพียงเพื่อแสดงให้เห็นถึง ความแตกต่างระหว่างทั้งสองวง 1642 01:23:42,630 --> 01:23:47,060 ไม่ผสมพวกเขาขึ้นเมื่อคุณอยู่ การเขียนโปรแกรมคำถาม 1643 01:23:47,060 --> 01:23:49,774 คำถามใด ๆ เกี่ยวกับที่ 1644 01:23:49,774 --> 01:23:50,770 เย็น 1645 01:23:50,770 --> 01:23:51,310 ขวาทั้งหมด 1646 01:23:51,310 --> 01:23:52,250 วัตถุ JavaScript 1647 01:23:52,250 --> 01:23:53,040 ผมได้พูดคุยเกี่ยวกับพวกเขา 1648 01:23:53,040 --> 01:23:54,650 พวกเขากำลังกับ associative arrays 1649 01:23:54,650 --> 01:23:57,730 สิ่งหนึ่งที่ฉันต้องการให้คุณทราบ ที่นี่เป็นที่ค่าในการเชื่อมโยง 1650 01:23:57,730 --> 01:23:59,540 อาร์เรย์สามารถเป็นอะไรก็ได้ใน JavaScript 1651 01:23:59,540 --> 01:24:02,240 >> มันยังสามารถเป็นฟังก์ชั่น เช่นที่นั่น 1652 01:24:02,240 --> 01:24:04,600 ฉันมีฟังก์ชั่นที่ เป็นค่าของคีย์ 1653 01:24:04,600 --> 01:24:07,030 และถ้าผมต้องการที่จะเรียกใช้ฟังก์ชันที่ ฉันเพิ่งเข้าถึงเปลือก 1654 01:24:07,030 --> 01:24:08,490 และจากนั้นฉันใส่วงเล็บ จากนั้น 1655 01:24:08,490 --> 01:24:09,790 และที่ทำงาน 1656 01:24:09,790 --> 01:24:15,570 ดังนั้นคำถามหรือข้อสงสัย 1657 01:24:15,570 --> 01:24:16,370 ไม่ได้หรือไม่ 1658 01:24:16,370 --> 01:24:16,650 ตกลง 1659 01:24:16,650 --> 01:24:18,190 ดี 1660 01:24:18,190 --> 01:24:20,130 JavaScript, เช่น PHP, ถูกพิมพ์อย่างอิสระ 1661 01:24:20,130 --> 01:24:20,970 สิ่งที่หมายความว่าอย่างไร 1662 01:24:20,970 --> 01:24:22,380 >> มันจะมีประเภท 1663 01:24:22,380 --> 01:24:24,800 แต่เมื่อคุณประกาศ JavaScript ตัวแปรที่คุณพูด ​​var i 1664 01:24:24,800 --> 01:24:25,850 คุณไม่ได้บอกว่ามัน 1665 01:24:25,850 --> 01:24:26,460 นั่นไม่ใช่สิ่งที่ 1666 01:24:26,460 --> 01:24:28,000 คุณเพียงแค่บอกว่ามันเป็นตัวแปร 1667 01:24:28,000 --> 01:24:31,590 และจากนั้นจะจัดการกับ JavaScript ประเภทภายใต้ประทุนสำหรับคุณ 1668 01:24:31,590 --> 01:24:34,390 เราได้อย่างอิสระสามารถแปลงระหว่าง ประเภทเพราะเหตุนี้ 1669 01:24:34,390 --> 01:24:37,360 ดังนั้นฉันจะเริ่มต้นออกมาเป็นจำนวน ในกรณีนี้ 1670 01:24:37,360 --> 01:24:38,790 และแล้วฉันมีสตริง 1671 01:24:38,790 --> 01:24:39,710 และฉันจะเพิ่มที่ฉันไป 1672 01:24:39,710 --> 01:24:41,810 และฉันกำหนดมันกลับเข้ามาในฉัน 1673 01:24:41,810 --> 01:24:43,640 >> ดังนั้นในบรรทัดแรกว่า ฉันเป็นจำนวน 1674 01:24:43,640 --> 01:24:47,310 ในบรรทัดที่สองผมตอนนี้กลายเป็น สตริงหลังจากที่ฉันทำกำหนดใหม่ 1675 01:24:47,310 --> 01:24:52,820 และที่นี่ฉันแค่เชื่อมโยง จำนวนลงบนสายที่ 1676 01:24:52,820 --> 01:24:56,210 ดังนั้นคุณจะเห็นว่าแม้ว่าผม จํานวนเต็มในส่วนแรกจะเรียงลำดับ 1677 01:24:56,210 --> 01:24:58,500 เช่นการแปลงเป็น สตริงแล้วที่เพิ่มเข้ามา 1678 01:24:58,500 --> 01:25:00,510 บนสตริงสวัสดีที่ 1679 01:25:00,510 --> 01:25:02,340 และนั่นคือสิ่งที่ผมหมายถึง โดยการพิมพ์หลวม 1680 01:25:02,340 --> 01:25:04,760 นั่นคือที่คุณแปลงระหว่าง ประเภทได้อย่างง่ายดายมาก 1681 01:25:04,760 --> 01:25:08,840 และจะไม่โยนคำเตือน ที่คุณต้องการไม่ C 1682 01:25:08,840 --> 01:25:12,420 >> ดังนั้นฉันตอนนี้มีสวัสดี 123 สาย 1683 01:25:12,420 --> 01:25:13,270 ต่อไป 1684 01:25:13,270 --> 01:25:15,610 นอกจากนี้เรายังสามารถเปรียบเทียบได้อย่างอิสระ ระหว่างประเภท 1685 01:25:15,610 --> 01:25:19,310 ดังนั้นหากคุณเพียงแค่ใช้ == มาก เช่นใน PHP, JavaScript 1686 01:25:19,310 --> 01:25:20,480 ไม่ได้สิ่งที่คล้ายกัน 1687 01:25:20,480 --> 01:25:24,780 สาย 123 เป็นเช่นเดียวกับจำนวน 123 เมื่อคุณใช้เท่ากับสอง 1688 01:25:24,780 --> 01:25:27,820 เมื่อนำมาใช้เท่ากับสามก็ยัง ต้องการที่จะให้แน่ใจว่า 1689 01:25:27,820 --> 01:25:29,240 ประเภทเดียวกัน 1690 01:25:29,240 --> 01:25:31,960 ดังนั้นเพราะที่เป็นสตริงและที่เป็น จำนวนถึงแม้ว่าพวกเขาทั้งสอง 1691 01:25:31,960 --> 01:25:35,280 123 เมื่อคุณใช้สาม เท่ากับคุณจะได้รับที่ผิดพลาด 1692 01:25:35,280 --> 01:25:39,330 ในสองเท่ากับกรณีที่คุณจะได้รับจริง เพราะเท่ากับสองไม่ได้ 1693 01:25:39,330 --> 01:25:40,020 ดูแลเกี่ยวกับประเภท 1694 01:25:40,020 --> 01:25:42,500 เท่ากับสามไม่สนใจเกี่ยวกับประเภท 1695 01:25:42,500 --> 01:25:43,750 คำถาม? 1696 01:25:43,750 --> 01:25:45,790 1697 01:25:45,790 --> 01:25:48,390 ตกลง 1698 01:25:48,390 --> 01:25:52,870 >> และสิ่งที่เกี่ยวกับ JavaScript อีกอย่างก็คือ ขอบเขตเป็นชนิดของทั่วโลกยกเว้นกรณีที่คุณ 1699 01:25:52,870 --> 01:25:53,460 ในฟังก์ชั่น 1700 01:25:53,460 --> 01:25:55,660 และการทำงานที่เดียวกัน วิธีการใน PHP จริง 1701 01:25:55,660 --> 01:25:57,500 จึงขอผ่านไปเช่นนี้ 1702 01:25:57,500 --> 01:25:59,110 ฉันจะตั้งค่า i 999 1703 01:25:59,110 --> 01:26:00,900 แล้วฉันเข้าไปนี้สำหรับวง 1704 01:26:00,900 --> 01:26:06,110 ดังนั้นถ้าฉันพิมพ์ฉันออกมาในนี้ ห่วงผมคาดว่า 0, 1, 2, 3, 4 1705 01:26:06,110 --> 01:26:07,390 ฉันได้รับการ i = 4 1706 01:26:07,390 --> 01:26:10,770 มันเพิ่มขึ้นฉันตอนนี้ถึง 5 ที่ ในตอนท้ายของห่วงสำหรับ 1707 01:26:10,770 --> 01:26:13,300 และจากนั้นก็แบ่งออกมาจากวง เพราะมันไม่ได้ตอบสนอง 1708 01:26:13,300 --> 01:26:14,550 เงื่อนไขอีกต่อไป 1709 01:26:14,550 --> 01:26:16,650 >> สิ่งใดที่คุณคิดว่าต่อไป console.log พิมพ์ออก 1710 01:26:16,650 --> 01:26:20,570 1711 01:26:20,570 --> 01:26:24,790 ดังนั้นนั่นคือสิ่งที่มันจะทำใน C. ใน C, เพราะถ้าคุณมีเช่น var i นอก 1712 01:26:24,790 --> 01:26:28,855 และคุณมีฉัน var ในวงเช่น สำหรับวงแล้วมันทำให้มันดังกล่าวว่า 1713 01:26:28,855 --> 01:26:30,690 จะกำหนดขอบเขตที่สอง ของฉันจะแตกต่างกัน 1714 01:26:30,690 --> 01:26:34,630 ใน JavaScript ก็จะเพียงแค่ รักษามันเป็นผมเหมือนกัน 1715 01:26:34,630 --> 01:26:37,870 ฉันจะได้รับ 5 เพราะนั่นคือค่า หลังจากที่มันออกมาออกจากวง 1716 01:26:37,870 --> 01:26:39,120 ดังนั้นผู้ที่ฉันเป็นฉันเดียวกัน 1717 01:26:39,120 --> 01:26:42,620 1718 01:26:42,620 --> 01:26:44,130 ไม่ที่ทำให้รู้สึก? 1719 01:26:44,130 --> 01:26:45,720 >> ดีก็จะทำให้ความรู้สึกจาก มุมมอง JavaScript 1720 01:26:45,720 --> 01:26:49,510 แต่กระบวนทัศน์เดียวกันไม่ได้ ดำเนินไปยัง C. พวกเขามี 1721 01:26:49,510 --> 01:26:50,310 กฎระเบียบกำหนดขอบเขตที่แตกต่างกัน 1722 01:26:50,310 --> 01:26:50,630 ใช่ 1723 01:26:50,630 --> 01:26:52,566 >> ผู้ชม: [ไม่ได้ยิน] 1724 01:26:52,566 --> 01:26:54,990 นอกฟังก์ชั่น [ไม่ได้ยิน]? 1725 01:26:54,990 --> 01:26:58,340 >> JOSEPH ONG: ดังนั้นนอกซึ่งฟังก์ชั่ทำไม 1726 01:26:58,340 --> 01:27:00,810 ดังนั้นผมจะไปที่ในเวลาเพียงสอง 1727 01:27:00,810 --> 01:27:02,580 ดังนั้นเราจึงเรียก foo (i) 1728 01:27:02,580 --> 01:27:06,920 นี้ผ่านไปฉันเป็น foo, เพิ่มขึ้น แล้วบันทึกมัน 1729 01:27:06,920 --> 01:27:07,750 ดังนั้นจึงเป็น 5 1730 01:27:07,750 --> 01:27:09,210 ดังนั้นมันจะกลายเป็น 6 1731 01:27:09,210 --> 01:27:11,670 แต่สิ่งที่ผมพูดเกี่ยวกับการเป็น ฉันในการทำงานว่า 1732 01:27:11,670 --> 01:27:14,430 เพราะมันเป็นพารามิเตอร์ก็ กำหนดขอบเขตการทำงานที่ 1733 01:27:14,430 --> 01:27:17,800 ดังนั้นเมื่อที่จริงผมจะออกจากที่ ฟังก์ชั่นก็ตอนนี้จะไป 1734 01:27:17,800 --> 01:27:19,860 กลับไปที่เก่าที่ฉัน 1735 01:27:19,860 --> 01:27:23,000 i ที่มีการกำหนดขอบเขตเพียงเพราะ มันอยู่ในฟังก์ชั่น 1736 01:27:23,000 --> 01:27:24,200 และเรามีขอบเขตและหน้าที่ 1737 01:27:24,200 --> 01:27:29,080 แต่เราไม่ได้มีขอบเขตด้านนอก ฟังก์ชั่นใน JavaScript 1738 01:27:29,080 --> 01:27:31,170 ไม่ที่ทำให้รู้สึก? 1739 01:27:31,170 --> 01:27:31,320 ใช่ 1740 01:27:31,320 --> 01:27:31,660 คำถาม 1741 01:27:31,660 --> 01:27:34,030 >> ผู้ชม: เดียวกัน [ไม่ได้ยิน]? 1742 01:27:34,030 --> 01:27:34,500 >> JOSEPH ONG: เพื่อใช่ 1743 01:27:34,500 --> 01:27:36,260 ใน PHP มันเป็นประเภทเดียวกันของสิ่งที่ 1744 01:27:36,260 --> 01:27:37,680 มีความละเอียดอ่อนเป็นจริงเล็กน้อย 1745 01:27:37,680 --> 01:27:40,130 แต่คุณสามารถถามฉันเกี่ยวกับ ว่าหลังจากการตรวจสอบ 1746 01:27:40,130 --> 01:27:43,930 คุณไม่ได้จริงๆจำเป็นต้องรู้ ความละเอียดอ่อนในการตอบคำถามว่า 1747 01:27:43,930 --> 01:27:47,600 สำหรับ intents และวัตถุประสงค์เช่น ตัวแปรทั่วโลกและ PHP เว้นแต่ 1748 01:27:47,600 --> 01:27:49,150 พวกเขาอยู่ในฟังก์ชั่นเดียวกัน สิ่งใน JavaScript 1749 01:27:49,150 --> 01:27:49,480 ใช่ 1750 01:27:49,480 --> 01:27:52,890 >> ผู้ชม: นี่คือเหตุผลที่ได้รับอนุญาตใน JavaScript และไม่มีที่อื่น? 1751 01:27:52,890 --> 01:27:55,010 >> JOSEPH ONG: เหตุใดจึงจะได้รับอนุญาต ใน JavaScript และไม่อยู่ใน C? 1752 01:27:55,010 --> 01:27:58,180 มันเป็นเพียงแค่ใครก็ตามที่ขึ้นมาพร้อมกับ JavaScript ตัดสินใจว่านี่คือตกลงใน 1753 01:27:58,180 --> 01:27:59,510 JavaScript 1754 01:27:59,510 --> 01:28:02,430 ดังนั้นจึงเป็นเช่นเดียวกับการเขียนโปรแกรมภาษา การประชุมในขณะที่เราจะพูดว่า 1755 01:28:02,430 --> 01:28:02,580 ใช่ 1756 01:28:02,580 --> 01:28:04,480 >> ผู้ชม: ดังนั้นทำไม มันไป 6-5? 1757 01:28:04,480 --> 01:28:08,280 >> JOSEPH ONG: ดังนั้นมันก็ 6-5, เพราะเมื่อฉันผ่านฉันเป็น foo ที่ 1758 01:28:08,280 --> 01:28:13,420 i ภายใน foo จะถูกกำหนดขอบเขตตอนนี้เพื่อ foo, เพราะขอบเขตที่มีอยู่ในการทำงานใน 1759 01:28:13,420 --> 01:28:15,050 JavaScript 1760 01:28:15,050 --> 01:28:18,720 แต่เมื่อฉันออกจากที่นี่เพราะมัน คือการกำหนดขอบเขตการทำงานฉันแค่ 1761 01:28:18,720 --> 01:28:24,300 ใช้ i ปกติท​​ี่อยู่ข้างใน ส่วนที่เหลือของการควบคุมการไหล 1762 01:28:24,300 --> 01:28:25,210 ทำให้รู้สึก 1763 01:28:25,210 --> 01:28:26,910 ฉันจะย้ายหรือไม่ 1764 01:28:26,910 --> 01:28:27,320 ขวาทั้งหมด 1765 01:28:27,320 --> 01:28:29,180 เย็น 1766 01:28:29,180 --> 01:28:31,890 >> การยอมรับนี้คือวัตถุ ถูกส่งผ่านโดยการอ้างอิง 1767 01:28:31,890 --> 01:28:33,990 คุณรู้ว่าเมื่อคุณผ่าน อาร์เรย์เป็น C คุณสามารถ 1768 01:28:33,990 --> 01:28:35,810 แก้ไขอาร์เรย์จริงหรือไม่ 1769 01:28:35,810 --> 01:28:37,350 มันเป็นสิ่งเดียวกันใน JavaScript 1770 01:28:37,350 --> 01:28:42,960 ถ้าฉันผ่านวัตถุในกรณีนี้ผม ผ่านไมโลในการทำงาน catify นี้ 1771 01:28:42,960 --> 01:28:44,490 ไมโลเริ่มออก 1772 01:28:44,490 --> 01:28:46,310 ชื่อของเขาคือไมโลกล้วย 1773 01:28:46,310 --> 01:28:51,670 ฉันผ่านวัตถุที่เป็นฟังก์ชั่น เพราะมันเป็นวัตถุที่มีความสัมพันธ์ 1774 01:28:51,670 --> 01:28:53,730 อาร์เรย์ใน JavaScript 1775 01:28:53,730 --> 01:28:57,110 >> เมื่อผมดำเนินการ ในฟังก์ชั่นที่มันจะ 1776 01:28:57,110 --> 01:28:58,560 จริงเปลี่ยนวัตถุ 1777 01:28:58,560 --> 01:29:01,720 ดังนั้นนี้จะเกิดขึ้นสำหรับวัตถุ ใน JavaScript เช่นเดียวกับที่มันเกิดขึ้น 1778 01:29:01,720 --> 01:29:09,230 กับอาร์เรย์ภายในของชื่อ C. ดังนั้นไมโล จริงจะกลายเป็นแมวในขณะนี้ 1779 01:29:09,230 --> 01:29:10,090 ไม่ที่ทำให้รู้สึก? 1780 01:29:10,090 --> 01:29:11,840 ดังนั้นนี้ทำงานได้เฉพาะสำหรับวัตถุ 1781 01:29:11,840 --> 01:29:13,090 วัตถุที่ถูกส่งผ่านโดยการอ้างอิง 1782 01:29:13,090 --> 01:29:13,400 ใช่ 1783 01:29:13,400 --> 01:29:16,850 >> ผู้ชม: ดังนั้นคุณจะบอกว่า ในทางตรงกันข้ามกับที่ฉันตัวแปร 1784 01:29:16,850 --> 01:29:17,240 >> JOSEPH ONG: ใช่ 1785 01:29:17,240 --> 01:29:20,330 ซึ่งตัวแปรที่ฉันเป็นเพียง จำนวนใช่ไหม 1786 01:29:20,330 --> 01:29:25,280 มันก็เหมือนกับใน C เมื่อคุณผ่าน จำนวนเต็มก็จะทำให้การคัดลอก 1787 01:29:25,280 --> 01:29:28,130 และเมื่อคุณผ่านอาร์เรย์ก็จริง การเปลี่ยนแปลงที่เกิดขึ้นจริงในอาเรย์ 1788 01:29:28,130 --> 01:29:32,870 C. สิ่งเดียวกันที่เกิดขึ้นกับ JavaScript ในกรณีนี้ 1789 01:29:32,870 --> 01:29:34,070 ขวาทั้งหมด 1790 01:29:34,070 --> 01:29:38,134 และถัดไมโลเป็นเรื่องน่าเศร้าเพราะ เขาตอนนี้แมว 1791 01:29:38,134 --> 01:29:40,790 1792 01:29:40,790 --> 01:29:45,060 ที่เป็นจริงหลังจากไมโล การเดินทางบางคนไปหาสัตว์แพทย์ 1793 01:29:45,060 --> 01:29:46,860 >> ดังนั้นทำอย่างไรเราใช้ JavaScript ในหน้าเว็บหรือไม่ 1794 01:29:46,860 --> 01:29:47,790 เราสามารถรวมไว้ 1795 01:29:47,790 --> 01:29:50,090 นี้เป็นโค้ด HTML ที่มีแท็กแถบ 1796 01:29:50,090 --> 01:29:51,300 ดังนั้นผมจึงมีแท็กแถบมี 1797 01:29:51,300 --> 01:29:54,820 และจากนั้นฉันใส่ JavaScript รหัสภายในแท็กของสคริปต์ 1798 01:29:54,820 --> 01:29:56,390 และจากนั้นจะดำเนินการนี​​้ 1799 01:29:56,390 --> 01:29:58,830 เมื่อฉันทำมันเช่นนี้ก็ เรียกว่าอินไลน์ JavaScript 1800 01:29:58,830 --> 01:30:02,400 เป็นชนิดของยุ่งเพราะ JavaScript เป็นจริงในรูปแบบ HTML 1801 01:30:02,400 --> 01:30:07,010 >> วิธีที่ดีกว่าการทำเช่นนี้ดีกว่ามาก คือการเขียนจาวาสคริปต์ของคุณใน 1802 01:30:07,010 --> 01:30:10,920 แฟ้มภายนอกและจากนั้นให้ แท็กสคริปต์ที่มีแหล่งที่มา 1803 01:30:10,920 --> 01:30:14,920 และจะไปที่ไฟล์จาวาสคริปต์ และอ่านรห​​ัส JavaScript จาก 1804 01:30:14,920 --> 01:30:15,960 ไฟล์แทนว่า 1805 01:30:15,960 --> 01:30:18,820 และด้วยวิธีนี้คุณจะไม่ได้มีจำนวนมาก จาวาสคริปต์ที่จุดเริ่มต้นของคุณ 1806 01:30:18,820 --> 01:30:20,760 ไฟล์ HTML ซึ่งทำให้ มันยุ่งจริงๆ 1807 01:30:20,760 --> 01:30:21,860 คุณเพียงแค่ใส่ไว้ที่อื่น 1808 01:30:21,860 --> 01:30:24,310 แล้วมันจะอ่านจากที่นั่น 1809 01:30:24,310 --> 01:30:25,560 ไม่ว่าจะทำให้ความรู้สึก? 1810 01:30:25,560 --> 01:30:27,990 1811 01:30:27,990 --> 01:30:29,640 >> เรื่องตำแหน่ง 1812 01:30:29,640 --> 01:30:32,620 ในกรณีนี้โดยเฉพาะอย่างยิ่ง สคริปต์ก่อนที่ร่าง 1813 01:30:32,620 --> 01:30:36,090 ดังนั้นเมื่อผมดำเนินการที่มี ไม่มีอะไรในร่างกายยัง 1814 01:30:36,090 --> 01:30:39,920 อาจจะทำนิด ๆ หน่อย ๆ ความรู้สึกตอนที่ผมแสดงส่วนต่อไปนี้ 1815 01:30:39,920 --> 01:30:43,210 ในกรณีนี้สคริปต์ มาหลังจาก div 1816 01:30:43,210 --> 01:30:46,620 ดังนั้น div จริงปรากฏ บนหน้าแรก 1817 01:30:46,620 --> 01:30:49,470 ที่นี่ในวงกลมสีแดงนี้เล็ก ๆ น้อย ๆ คุณจะเห็นข้อความที่ปรากฏ 1818 01:30:49,470 --> 01:30:51,810 และการแจ้งเตือนจากนั้นจะแสดงขึ้น 1819 01:30:51,810 --> 01:30:54,890 >> ในกรณีแรกเนื่องจากสคริปต์ ก่อน div, 1820 01:30:54,890 --> 01:30:56,170 การแจ้งเตือนจะปรากฏขึ้นเป็นครั้งแรก 1821 01:30:56,170 --> 01:30:59,250 แล้ว div แสดงขึ้นหลังจากที่ คุณยกเลิกกล่อง 1822 01:30:59,250 --> 01:31:01,330 ดังนั้นการดำเนินเรื่อง 1823 01:31:01,330 --> 01:31:02,290 ดังนั้นเราจะเก็บเรื่องนี้ไว้ในใจ 1824 01:31:02,290 --> 01:31:03,640 นี้จะมีความสำคัญ ในนิด ๆ หน่อย ๆ 1825 01:31:03,640 --> 01:31:08,730 1826 01:31:08,730 --> 01:31:09,540 ตกลง 1827 01:31:09,540 --> 01:31:12,750 ให้ดีคุณจะรอจนกว่า หน้าทั้งหมดที่มีการโหลดแล้วก่อนที่คุณจะ 1828 01:31:12,750 --> 01:31:13,580 รันโค้ดบาง 1829 01:31:13,580 --> 01:31:15,540 เราจะได้รับลงในนี้เพียงเล็กน้อย บิตภายหลังมากเกินไป 1830 01:31:15,540 --> 01:31:19,016 แต่เพียงเก็บตำแหน่งนี้ เรื่องในใจสำหรับเรา 1831 01:31:19,016 --> 01:31:20,570 มาไปยังภาพนิ่งอื่น 1832 01:31:20,570 --> 01:31:22,030 >> ดังนั้นเราจึงได้รับการ DOM ในขณะนี้ 1833 01:31:22,030 --> 01:31:23,550 และ DOM คืออะไร 1834 01:31:23,550 --> 01:31:26,830 ดังนั้นถ้าคุณดูที่โค้ด HTML ก็เพียง พวงของข้อความบนหน้าจอ 1835 01:31:26,830 --> 01:31:30,560 ดังนั้นวิธีที่จะรู้ว่า JavaScript นี้เป็นองค์ประกอบ HTML? 1836 01:31:30,560 --> 01:31:33,410 ดังนั้นเราจึงต้องมีหน่วยความจำบาง การแสดงนี้ 1837 01:31:33,410 --> 01:31:34,930 โครงสร้างที่เรามี 1838 01:31:34,930 --> 01:31:40,240 และเมื่อใดก็ตามที่เรามีนี้ในหน่วยความจำ การเป็นตัวแทนในจาวาสคริปต์ที่เราเรียกว่า 1839 01:31:40,240 --> 01:31:41,750 DOM ที่ 1840 01:31:41,750 --> 01:31:45,130 และเป็นเพียงวิธีการที่คนตัดสินใจ ว่าเราควรจะเป็นตัวแทนของนี้ 1841 01:31:45,130 --> 01:31:46,400 โครงสร้าง HTM​​L เป็น 1842 01:31:46,400 --> 01:31:47,940 >> และสิ่งที่ไม่ DOM นี้มีลักษณะอย่างไร 1843 01:31:47,940 --> 01:31:50,460 ทั้งในการเป็นตัวแทนของหน่วยความจำ เราเอาข้อความนี้ 1844 01:31:50,460 --> 01:31:52,870 และเราทำให้มันกลายเป็นหน่วยความจำ การแสดง 1845 01:31:52,870 --> 01:31:54,400 ดังนั้นนี่คือ HTML 1846 01:31:54,400 --> 01:31:58,090 ดังนั้นครั้งแรกที่เราพบว่าทุก ต้นไม้มีเอกสาร 1847 01:31:58,090 --> 01:31:59,400 มันมีลักษณะเหมือนต้นไม้ 1848 01:31:59,400 --> 01:32:03,550 และเอกสารที่มี HTML แท็กทุกอย่างจริง 1849 01:32:03,550 --> 01:32:05,150 ภายในของตอนนี้ 1850 01:32:05,150 --> 01:32:06,970 แท็กมีลูกสองคน 1851 01:32:06,970 --> 01:32:08,630 มันมีหัว 1852 01:32:08,630 --> 01:32:12,380 หัวว่าถ้าคุณมองไปที่เยื้อง ที่นั่นที่ว่ามันมีโครงสร้าง 1853 01:32:12,380 --> 01:32:14,960 ระหว่างแท็กปิด หัวมีเด็ก 1854 01:32:14,960 --> 01:32:17,130 เด็กที่เป็นชื่อ 1855 01:32:17,130 --> 01:32:18,370 อย่างแน่นอน 1856 01:32:18,370 --> 01:32:21,000 >> ขณะนี้เรามีเด็กร่างกาย 1857 01:32:21,000 --> 01:32:24,870 แล้วร่างกายที่มี ครอบครัวของเด็กที่เรียกว่า 1858 01:32:24,870 --> 01:32:27,950 และครอบครัวที่มีลูกสามคน - 1859 01:32:27,950 --> 01:32:29,550 ที่เก่าแก่ที่สุดกลางและที่อายุน้อยที่สุด 1860 01:32:29,550 --> 01:32:31,960 ดังนั้นคุณจึงควรรู้วิธีการวาดแผนภาพ เช่นนี้เมื่อเราถามคุณว่า 1861 01:32:31,960 --> 01:32:34,270 การวาดแผนภาพเมื่อเราให้ HTML คุณทางด้านซ้าย 1862 01:32:34,270 --> 01:32:36,350 รู้วิธีการผลิตต้นไม้ 1863 01:32:36,350 --> 01:32:38,930 และภายในของสิ่งเหล่านี้มีเพียง ข้อความบางอย่างที่ฉันได้เป็นตัวแทนของ 1864 01:32:38,930 --> 01:32:40,180 กล่องเล็ก ๆ น้อย ๆ 1865 01:32:40,180 --> 01:32:42,750 1866 01:32:42,750 --> 01:32:47,980 >> นี้โครงสร้างต้นไม้ให้ ความรู้สึกและสิ่งที่ DOM คืออะไร 1867 01:32:47,980 --> 01:32:49,300 ดังนั้นสิ่งที่จะพียืน 1868 01:32:49,300 --> 01:32:51,850 กว่าที่นี่พีที่นั่น ในแท็กที่แสดงถึง 1869 01:32:51,850 --> 01:32:54,510 แท็ก HTML ในวรรค 1870 01:32:54,510 --> 01:32:57,080 เพื่อให้คุณสามารถมองมันได้ 1871 01:32:57,080 --> 01:32:59,290 แต่มันก็หมายความว่ามันบาง พื้นที่สำหรับข้อความบางส่วน 1872 01:32:59,290 --> 01:33:02,910 และมีบางสไตล์ CSS เริ่มต้น เพราะมันเป็นแท็กวรรค 1873 01:33:02,910 --> 01:33:05,130 แต่ไม่ได้จริงๆต้องกังวลเกี่ยวกับ ส่วนหนึ่งมากเกินไปว่า 1874 01:33:05,130 --> 01:33:07,510 เพียงแค่รู้ว่ามันเป็นตัวยึด สำหรับข้อความบางส่วน 1875 01:33:07,510 --> 01:33:08,480 ใช่ 1876 01:33:08,480 --> 01:33:10,200 คำถาม? 1877 01:33:10,200 --> 01:33:11,021 ใช่ 1878 01:33:11,021 --> 01:33:12,374 >> ผู้ชม: คุณพูดถึง CSS เพียง 1879 01:33:12,374 --> 01:33:15,492 ครอบครัวกัญชาและกัญชา ทุกสิ่งที่เป็นพื้น 1880 01:33:15,492 --> 01:33:17,400 ที่เป็นตัวแทนของรหัสใน CSS? 1881 01:33:17,400 --> 01:33:18,440 >> JOSEPH ONG: ใช่ว่า 1882 01:33:18,440 --> 01:33:20,380 ฉันจะได้รับสิ่งเหล่านี้ hashes หมายถึงในครั้งที่สอง 1883 01:33:20,380 --> 01:33:23,480 เมื่อแองเจล่าเดินไป CSS เธอ พูดคุยเกี่ยวกับตัวเลือก CSS 1884 01:33:23,480 --> 01:33:26,770 เหล่านี้เป็นตัวเลือก CSS ที่ เธอได้รับการพูดคุยเกี่ยวกับ 1885 01:33:26,770 --> 01:33:28,268 มีร็อบ? 1886 01:33:28,268 --> 01:33:32,060 >> ROB สลิง: ฉันยังอยากจะแสดงความคิดเห็น DOM ภายในของแท็กชื่อเรื่องว่า 1887 01:33:32,060 --> 01:33:35,385 ยังโหนดข้อความ 1888 01:33:35,385 --> 01:33:36,070 >> JOSEPH ONG ขวา 1889 01:33:36,070 --> 01:33:38,370 ดังนั้นภายในแท็กชื่อ ฉันมีบาง DOM ข้อความ 1890 01:33:38,370 --> 01:33:42,730 ดังนั้นจริงๆชื่อนี้ควรจะมีเช่น กล่องเล็ก ๆ ออกมาจากมันเช่นกัน 1891 01:33:42,730 --> 01:33:45,740 แต่มันไม่ได้เรื่องจริงๆ มากเกินไปในกรณีนี้ 1892 01:33:45,740 --> 01:33:49,620 เราไม่ได้จริงๆดูแลเกี่ยวกับต่อมน้ำข้อความ ในขณะที่เราเรียกพวกเขามากเกินไป 1893 01:33:49,620 --> 01:33:50,270 ตกลงที่เราทำ 1894 01:33:50,270 --> 01:33:51,520 เห็นได้ชัดว่าเราทำ 1895 01:33:51,520 --> 01:33:54,260 1896 01:33:54,260 --> 01:33:57,100 และฉันจะแก้ไขว่าเมื่อ ฉันอัปโหลดมันอีกครั้ง 1897 01:33:57,100 --> 01:33:59,830 ไม่ที่ทำให้รู้สึก? 1898 01:33:59,830 --> 01:34:01,160 >> ดังนั้นทำอย่างไรเราทำงานร่วมกับ DOM หรือไม่ 1899 01:34:01,160 --> 01:34:03,790 เมื่อใดก็ตามที่คุณจัดการกับ DOM ใน JavaScript มีสองขั้นตอน 1900 01:34:03,790 --> 01:34:05,030 คุณเลือกองค์ประกอบ DOM 1901 01:34:05,030 --> 01:34:06,580 แล้วคุณจะทำสิ่งนั้น 1902 01:34:06,580 --> 01:34:11,480 ดังนั้นในกรณีนี้ abstractly เราได้ เลือกองค์ประกอบกลาง 1903 01:34:11,480 --> 01:34:14,530 แล้วตัวอย่างของการทำสิ่งที่ มันจะได้รับการเปลี่ยนข้อความ 1904 01:34:14,530 --> 01:34:16,020 ที่เคยเป็นบ๊อบ 1905 01:34:16,020 --> 01:34:19,930 ตอนนี้สิ่งที่ผมทำไปมันเป็นผมเปลี่ยน บ๊อบกับไมโลในกรณีนี้ 1906 01:34:19,930 --> 01:34:22,130 >> ดังนั้นทำอย่างไรที่เราจะทำเช่นนี้? 1907 01:34:22,130 --> 01:34:23,440 เราจะทำการเลือกอย่างไร 1908 01:34:23,440 --> 01:34:26,560 และวิธีการที่เราจะทำสิ่งที่จะ สิ่งที่เมื่อเราได้รับมันได้หรือไม่ 1909 01:34:26,560 --> 01:34:30,470 ดีวิธีที่พวกคุณได้เรียนรู้มัน ในชั้นนี้คือการใช้สิ่งที่เรา 1910 01:34:30,470 --> 01:34:32,420 เรียกว่า jQuery 1911 01:34:32,420 --> 01:34:33,910 ดังนั้นสิ่งที่ jQuery คืออะไร? 1912 01:34:33,910 --> 01:34:37,220 jQuery เป็นห้องสมุดที่ทำให้ JavaScript ง่ายต่อการเขียน 1913 01:34:37,220 --> 01:34:39,500 ดังนั้นคนที่ใช้เวลา และเขียน jQuery 1914 01:34:39,500 --> 01:34:41,530 >> jQuery ที่เขียนจริง ใน JavaScript 1915 01:34:41,530 --> 01:34:44,550 แล้วเพราะพวกเขาทำอย่างนี้ตอนนี้เรา มีทั้งกลุ่มของฟังก์ชั่นที่ 1916 01:34:44,550 --> 01:34:46,020 เราสามารถใช้ที่ทำให้เรา ชีวิตง่ายจริงๆ 1917 01:34:46,020 --> 01:34:48,580 1918 01:34:48,580 --> 01:34:50,030 ดังนั้นสิ่งที่บางส่วนของ สิ่งที่มันไม่? 1919 01:34:50,030 --> 01:34:51,650 มันทำให้ง่ายต่อการเลือกองค์ประกอบ 1920 01:34:51,650 --> 01:34:54,020 มันทำให้การเปลี่ยนแปลง HTM​​L, เพิ่มการเรียนง่ายขึ้น 1921 01:34:54,020 --> 01:34:55,360 มันทำให้อาแจ็กซ์ได้ง่ายขึ้น 1922 01:34:55,360 --> 01:34:58,230 เราจะไปที่ในครั้งที่สอง 1923 01:34:58,230 --> 01:35:00,630 >> และมันก็คล้ายกับห้องสมุด C 1924 01:35:00,630 --> 01:35:03,090 เพื่อให้คุณรวมถึงสตริง, คุณจะได้รับ strlen 1925 01:35:03,090 --> 01:35:04,680 คุณจะได้รับ strcpy ทั้งหมดของสิ่งเหล่านี้ 1926 01:35:04,680 --> 01:35:09,650 เมื่อคุณมี jQuery คุณจะได้รับที่ดี วิธีในการเลือกองค์ประกอบที่จะเปลี่ยนแปลง 1927 01:35:09,650 --> 01:35:10,390 สิ่งที่และอื่น ๆ 1928 01:35:10,390 --> 01:35:12,990 คุณจะได้รับฟังก์ชั่นพิเศษที่ จาวาสคริปต์ไม่ได้ให้คุณ 1929 01:35:12,990 --> 01:35:15,310 ดังนั้น jQuery ไม่ JavaScript 1930 01:35:15,310 --> 01:35:18,660 jQuery เป็นห้องสมุดที่เขียนใน JavaScript ที่ทำให้ JavaScript 1931 01:35:18,660 --> 01:35:20,440 ง่ายต่อการเขียน 1932 01:35:20,440 --> 01:35:23,170 >> ดังนั้น jQuery ไม่ได้เขียนโปรแกรม ภาษา 1933 01:35:23,170 --> 01:35:24,540 แต่ JavaScript เป็น 1934 01:35:24,540 --> 01:35:27,420 1935 01:35:27,420 --> 01:35:27,590 ทำ 1936 01:35:27,590 --> 01:35:30,420 แน่ใจว่าคุณได้รับสิทธิคำศัพท์ของคุณ 1937 01:35:30,420 --> 01:35:32,490 คำถามใด? 1938 01:35:32,490 --> 01:35:33,882 ใช่ 1939 01:35:33,882 --> 01:35:35,132 คือคำถามหรือไม่ 1940 01:35:35,132 --> 01:35:37,910 1941 01:35:37,910 --> 01:35:38,350 ขวาทั้งหมด 1942 01:35:38,350 --> 01:35:40,080 ดังนั้นวิธีที่คุณใช้ jQuery? 1943 01:35:40,080 --> 01:35:42,390 ดีเมื่อคุณกำลังเขียนบางอย่าง JavaScript รหัสและคุณมี 1944 01:35:42,390 --> 01:35:45,570 jQuery ที่ด้านบนของไฟล์ของคุณเป็น ไฟล์สคริปต์คุณสามารถใช้เครื่องหมายดอลลาร์ 1945 01:35:45,570 --> 01:35:47,310 ตอนนี้ได้รับการเข้าถึง jQuery 1946 01:35:47,310 --> 01:35:49,860 และนี่คือความแตกต่างจาก เครื่องหมายดอลลาร์ใน PHP 1947 01:35:49,860 --> 01:35:51,590 >> มันเป็นสัญลักษณ์เดียวกับที่คุณ พิมพ์บนแป้นพิมพ์ของคุณ 1948 01:35:51,590 --> 01:35:52,780 แต่พวกเขาหมายถึงสิ่งที่แตกต่างกันมาก 1949 01:35:52,780 --> 01:35:56,090 เครื่องหมายดอลลาร์ใน PHP หมายถึงนี้ เป็นวิธีที่ผมประกาศตัวแปร 1950 01:35:56,090 --> 01:35:59,120 ใน JavaScript เมื่อคุณได้รวม jQuery มันย่อมาจาก jQuery 1951 01:35:59,120 --> 01:36:01,280 เพื่อให้ทราบว่า 1952 01:36:01,280 --> 01:36:03,420 ดังนั้นวิธีที่เราอาจจะเลือกองค์ประกอบ DOM? 1953 01:36:03,420 --> 01:36:06,500 ดีเมื่อคุณทำมันน่าเกลียด JavaScript วิธีที่คุณสามารถเข้าถึง 1954 01:36:06,500 --> 01:36:08,240 เอกสารตัวแปรทั่วโลก 1955 01:36:08,240 --> 01:36:11,170 แล้วคุณจะได้รับองค์ประกอบโดยครอบครัว ID 1956 01:36:11,170 --> 01:36:15,270 นี้เป็นจริงยาวและใช้คำฟุ่มเฟือย และไม่ดีมาก 1957 01:36:15,270 --> 01:36:18,190 >> หรือคุณจะได้รับทุกองค์ประกอบ ที่มีแท็กพี 1958 01:36:18,190 --> 01:36:20,080 ที่ทำงานเกินไปใน JavaScript 1959 01:36:20,080 --> 01:36:22,470 แต่เราไม่เคยแสดงให้เห็นว่าจริงๆ คุณไวยากรณ์มากเกินไป 1960 01:36:22,470 --> 01:36:24,620 สิ่งที่เราแสดงให้เห็นว่าคุณเป็น jQuery 1961 01:36:24,620 --> 01:36:28,720 เพื่อให้ตัวเลือกทั้งหมดที่มีขึ้นที่ ได้แสดงออกใน JavaScript เพิ่งได้รับ 1962 01:36:28,720 --> 01:36:33,320 ข้นนี้เงินดอลลาร์ที่ดีมาก ครอบครัว hashtag สัญญาณ 1963 01:36:33,320 --> 01:36:38,480 และ $ พีเพียงที่เป็นเช่นนั้น 1964 01:36:38,480 --> 01:36:41,690 หากคุณต้องการที่จะเลือกป้ายพีทั้งหมด ภายในครอบครัวเราใส่ช่องว่าง 1965 01:36:41,690 --> 01:36:42,890 ระหว่างคนทั้งสอง 1966 01:36:42,890 --> 01:36:44,815 และตอนนี้เราได้รับทั้งหมดพี ป้ายภายในครอบครัว 1967 01:36:44,815 --> 01:36:48,740 1968 01:36:48,740 --> 01:36:50,380 >> และดูคุ้นเคย 1969 01:36:50,380 --> 01:36:52,880 ดีแองเจล่าพูดคุยเกี่ยวกับ selectors CSS 1970 01:36:52,880 --> 01:36:54,200 ให้ฉันคนที่สอง 1971 01:36:54,200 --> 01:36:57,230 และอื่น ๆ ในการที่จะเลือกองค์ประกอบ คุณเพียงแค่ใช้สิ่งเดียวกับคุณ 1972 01:36:57,230 --> 01:36:58,530 จะทำอย่างไรกับการเลือก CSS 1973 01:36:58,530 --> 01:37:00,910 หากคุณใส่กัญชาอยู่ด้านหน้า มันก็เลือกตามหมายเลข 1974 01:37:00,910 --> 01:37:02,220 จุดโดยเลือกเรียน 1975 01:37:02,220 --> 01:37:06,230 หากคุณเพียงแค่มีสิ่งที่ไม่มี hashes หรือจุดก็เลือกแท็กเหล่านี้ 1976 01:37:06,230 --> 01:37:07,140 คำถามที่ 1977 01:37:07,140 --> 01:37:07,470 ใช่? 1978 01:37:07,470 --> 01:37:11,510 >> ผู้ชม: เมื่อเราใช้จุดในของเรา HTML เป็นที่ไม่ jQuery? 1979 01:37:11,510 --> 01:37:13,520 >> JOSEPH ONG: Dot ใน HTML ของเรา เป็นสิ่งที่ JavaScript 1980 01:37:13,520 --> 01:37:14,750 มันไม่ได้เป็นสิ่งที่ jQuery 1981 01:37:14,750 --> 01:37:17,620 วิธีที่พวกคุณได้เรียนรู้มันด้วย jQuery คือการใช้. html ที่ 1982 01:37:17,620 --> 01:37:21,510 แล้วคุณจะผ่านมันสิ่งที่ HTML เป็นไปได้ 1983 01:37:21,510 --> 01:37:23,480 ดังนั้นผมจะไปที่ในเวลาเพียง ที่สองจริง 1984 01:37:23,480 --> 01:37:27,800 ดังนั้นทำอย่างไรเราทำสิ่งที่องค์ประกอบ เมื่อเราได้เลือกมันได้หรือไม่ 1985 01:37:27,800 --> 01:37:30,130 เพื่อให้เป็นตัวอย่างของ การเลือกองค์ประกอบ 1986 01:37:30,130 --> 01:37:32,280 ดังนั้นตอนนี้เราต้องการที่จะทำสิ่งที่มัน 1987 01:37:32,280 --> 01:37:35,730 >> ดังนั้นในกรณีนี้ให้ฉันกลับไป ไปที่ภาพนิ่งก่อนหน้านี้ 1988 01:37:35,730 --> 01:37:37,360 มันเป็นบ๊อบก่อน 1989 01:37:37,360 --> 01:37:40,660 และผมต้องการที่จะเปลี่ยนที่ ภายใน HTML เพื่อไมโล 1990 01:37:40,660 --> 01:37:43,240 ดังนั้นผมจึงเรียกใช้ฟังก์ชัน HTML จากองค์ประกอบ 1991 01:37:43,240 --> 01:37:45,580 ฟังก์ชั่น HTML ที่เป็น วิธีการขององค์ประกอบ 1992 01:37:45,580 --> 01:37:47,430 แล้วฉันจะให้มันสิ่งที่ ฉันต้องการ HTML เพื่อเป็น 1993 01:37:47,430 --> 01:37:50,560 และมันก็เข้ามาแทนที่สิ่งที่อยู่ภายในของ แท็กกับสิ่งที่ฉันให้มันว่า 1994 01:37:50,560 --> 01:37:50,830 ใช่ 1995 01:37:50,830 --> 01:37:51,170 คำถาม? 1996 01:37:51,170 --> 01:37:57,397 >> ผู้ชม: hashtag ใช้ เพียง jQuery 1997 01:37:57,397 --> 01:37:59,313 [ไม่ได้ยิน] 1998 01:37:59,313 --> 01:38:01,230 เราจะไม่ใช้ที่ 1999 01:38:01,230 --> 01:38:01,960 >> JOSEPH ONG: ใช่ว่า 2000 01:38:01,960 --> 01:38:03,750 แต่ไม่ต้องกังวลมากเกินไป เกี่ยวกับบริสุทธิ์ JavaScript 2001 01:38:03,750 --> 01:38:06,670 ฉันเพียงต้องการที่พวกคุณให้ความสำคัญกับวิธีการที่คุณ จะทำมันด้วย jQuery เพราะ 2002 01:38:06,670 --> 01:38:10,020 ที่จะมีความสำคัญ เป็นส่วนหนึ่งในการตอบคำถาม 2003 01:38:10,020 --> 01:38:10,400 ขวา 2004 01:38:10,400 --> 01:38:10,880 อย่างแน่นอน 2005 01:38:10,880 --> 01:38:16,025 ดังนั้นคุณจะเห็น hashtag ที่เพื่อให้ สอดคล้องกับการเลือกองค์ประกอบที่มี 2006 01:38:16,025 --> 01:38:18,310 กลาง ID เพราะ hashtag ที่ 2007 01:38:18,310 --> 01:38:19,670 hashtag หมายความ ID 2008 01:38:19,670 --> 01:38:22,870 และองค์ประกอบนี้มีรหัสของกลาง 2009 01:38:22,870 --> 01:38:24,366 เพื่อให้เป็นองค์ประกอบที่เราเลือก 2010 01:38:24,366 --> 01:38:27,160 >> ผู้ชม: [ไม่ได้ยิน] 2011 01:38:27,160 --> 01:38:31,090 เครื่องหมายดอลลาร์ hashtag [ไม่ได้ยิน]? 2012 01:38:31,090 --> 01:38:31,710 >> JOSEPH ONG: ดังนั้นไม่มี 2013 01:38:31,710 --> 01:38:33,280 คำถามคือคุณสามารถใช้. ค่า 2014 01:38:33,280 --> 01:38:36,445 และค่า. ใช้งานได้เฉพาะในองค์ประกอบ ที่เป็นปัจจัยการผลิต 2015 01:38:36,445 --> 01:38:40,950 2016 01:38:40,950 --> 01:38:45,495 ใน jQuery มันจะเป็น . วาล, ไม่ใช่ค่า. 2017 01:38:45,495 --> 01:38:49,080 ดังนั้นฉันจะได้รับตัวอย่างขนาดเล็กที่ ทั้งหมดนี้แสดงให้เห็นถึงการรวมกันใน 2018 01:38:49,080 --> 01:38:49,850 ในครั้งที่สอง 2019 01:38:49,850 --> 01:38:53,130 แต่ฉันคิดว่านี้จะทำหน้าที่ตัวอย่างเล็ก ๆ น้อย ๆ ทำให้รู้สึกถึงคนเพื่อให้ห่างไกล 2020 01:38:53,130 --> 01:38:55,450 ต้องการเปลี่ยน HTML, เรียกวิธีการแบบ 2021 01:38:55,450 --> 01:38:56,432 ใช่ 2022 01:38:56,432 --> 01:38:58,200 >> ผู้ชม: คุณสามารถอธิบาย วิธีการอีกครั้งหรือไม่ 2023 01:38:58,200 --> 01:39:01,900 >> JOSEPH ONG: ดังนั้นวิธีการเป็นเพียง ฟังก์ชั่นที่เป็นหนึ่งในนี้ 2024 01:39:01,900 --> 01:39:04,590 กรณีที่เป็นหนึ่งในองค์ประกอบ DOM เหล่านี้ เพราะคุณเห็นฉัน 2025 01:39:04,590 --> 01:39:05,940 เลือกองค์ประกอบแรก 2026 01:39:05,940 --> 01:39:07,320 ที่จริงให้ฉันใช้เมาส์ 2027 01:39:07,320 --> 01:39:09,330 ฉันเลือกองค์ประกอบแรก 2028 01:39:09,330 --> 01:39:12,310 และจากนั้นฉันเรียกว่า HTML นี้ ทำงานว่ามันมี 2029 01:39:12,310 --> 01:39:15,710 และเนื่องจากฟังก์ชั่นนี้เป็นของ สิ่งนี้เราเรียกว่าวิธี 2030 01:39:15,710 --> 01:39:19,480 นั่นเป็นเพียงชื่อแฟนซีสำหรับมัน 2031 01:39:19,480 --> 01:39:20,730 บอกว่าอีกครั้ง 2032 01:39:20,730 --> 01:39:22,880 2033 01:39:22,880 --> 01:39:25,170 ดังนั้นอย่าลืมเราเลือก องค์ประกอบในขณะนี้ 2034 01:39:25,170 --> 01:39:27,810 และเราได้ใส่ไว้ในของ ตัวแปรองค์ประกอบ 2035 01:39:27,810 --> 01:39:28,600 ถูกต้องหรือไม่ 2036 01:39:28,600 --> 01:39:34,380 >> ดังนั้นเมื่อเราต้องการที่จะเปลี่ยน HTML ใน ภายในเพราะมันเป็นบ๊อบมาก่อนคุณ 2037 01:39:34,380 --> 01:39:36,420 ต้องการที่จะเปลี่ยนข้อความที่ไมโล 2038 01:39:36,420 --> 01:39:37,920 ดังนั้นเราจึงเรียก HTML 2039 01:39:37,920 --> 01:39:41,610 และเราบอกว่าสิ่งที่ HTML ที่อยู่ภายใน องค์ประกอบที่ควรจะเป็นในขณะนี้ 2040 01:39:41,610 --> 01:39:44,107 และดังนั้นจึงมีการเปลี่ยนแปลงไปไมโล เพราะฉันให้มันไมโล 2041 01:39:44,107 --> 01:39:46,542 >> ผู้ชม: ดังนั้นพวกเขากำลังทำงานร่วมกัน 2042 01:39:46,542 --> 01:39:47,030 [ไม่ได้ยิน] 2043 01:39:47,030 --> 01:39:47,390 >> JOSEPH ONG: ใช่ใช่ 2044 01:39:47,390 --> 01:39:48,180 พวกเขากำลังทำงานร่วมกัน 2045 01:39:48,180 --> 01:39:50,210 ดังนั้นหนึ่งของพวกเขาเลือก องค์ประกอบแรก 2046 01:39:50,210 --> 01:39:52,863 และคนที่สองไม่ บางสิ่งบางอย่างกับมัน 2047 01:39:52,863 --> 01:39:53,790 ใช่ 2048 01:39:53,790 --> 01:39:56,168 >> ผู้ชม: [ไม่ได้ยิน] 2049 01:39:56,168 --> 01:40:01,280 หากวิธีการนี​​้จะแตกต่างจากในรูปแบบ HTML คุณมีวิธีการที่เกิดขึ้นจริงเท่ากับ 2050 01:40:01,280 --> 01:40:01,560 >> JOSEPH ONG: ใช่ 2051 01:40:01,560 --> 01:40:03,370 นั่นคือวิธีการที่แตกต่างกัน 2052 01:40:03,370 --> 01:40:04,670 นั่นคือวิธีการที่แตกต่างกัน 2053 01:40:04,670 --> 01:40:07,860 และเราสามารถครอบคลุมที่ในเพียงสอง เมื่อเราได้รับตัวอย่าง 2054 01:40:07,860 --> 01:40:12,000 ผมต้องการที่จะให้แน่ใจว่าเราเร็วขึ้น เพราะเรากำลังวิ่งออกมาจากเวลา 2055 01:40:12,000 --> 01:40:15,360 แต่เราได้ใช้วิธีเมื่อเวลาผ่านไปในขณะนี้ 2056 01:40:15,360 --> 01:40:15,490 ตกลง 2057 01:40:15,490 --> 01:40:16,430 เย็น 2058 01:40:16,430 --> 01:40:20,130 ดังนั้นถ้าคุณต้องการที่จะเพิ่มระดับมี นอกจากนี้ยังมีวิธีการเรียนเพิ่ม 2059 01:40:20,130 --> 01:40:24,300 นี่เป็นเพียงตัวอย่างของสิ่งที่ คุณสามารถทำอะไรกับ jQuery 2060 01:40:24,300 --> 01:40:25,950 ที่เพิ่งเพิ่มระดับ 2061 01:40:25,950 --> 01:40:28,660 >> หากคุณต้องการที่จะลบมัน คุณสามารถเรียกลบ 2062 01:40:28,660 --> 01:40:32,280 นั่นเป็นเพียงสิ่งที่คุณสามารถทำอีก 2063 01:40:32,280 --> 01:40:35,680 ตัวอย่างที่มากขึ้นของสิ่งที่คุณสามารถทำได้ 2064 01:40:35,680 --> 01:40:37,510 ดังนั้นผมก็สามารถวางมันไว้ที่ ด้านบนเช่นนี้หรือไม่ 2065 01:40:37,510 --> 01:40:38,760 ลบที่อายุน้อยที่สุด 2066 01:40:38,760 --> 01:40:42,470 2067 01:40:42,470 --> 01:40:45,930 ถ้าฉันเพียงรันจาวาสคริปต์ที่ ด้านบนของไฟล์ของฉันจะว่าทำงานอย่างไร 2068 01:40:45,930 --> 01:40:48,540 2069 01:40:48,540 --> 01:40:48,920 ขวา 2070 01:40:48,920 --> 01:40:50,530 เพราะตรงกลางยังไม่ปรากฏอยู่ 2071 01:40:50,530 --> 01:40:51,840 ดังนั้นนี้ไม่ได้ไปทำงาน 2072 01:40:51,840 --> 01:40:52,800 เพื่อการดำเนินการ 2073 01:40:52,800 --> 01:40:55,040 มันไปที่ด้านบนเป็นครั้งแรก 2074 01:40:55,040 --> 01:40:55,540 คืออะไร? 2075 01:40:55,540 --> 01:40:57,450 >> ผู้ชม: น้องไม่ได้มีอยู่หรือยัง 2076 01:40:57,450 --> 01:40:57,810 >> JOSEPH ONG: ใช่ 2077 01:40:57,810 --> 01:40:58,710 ที่อายุน้อยที่สุดยังไม่ปรากฏอยู่ 2078 01:40:58,710 --> 01:40:59,600 อย่างแน่นอน 2079 01:40:59,600 --> 01:41:01,320 >> ผู้ชม: คุณบอกว่ากลาง 2080 01:41:01,320 --> 01:41:01,510 >> JOSEPH ONG: ขออภัย 2081 01:41:01,510 --> 01:41:02,720 ที่อายุน้อยที่สุดยังไม่ปรากฏอยู่ 2082 01:41:02,720 --> 01:41:04,510 และสิ่งอื่น ๆ ที่ผมยังไม่ได้ รวม jQuery 2083 01:41:04,510 --> 01:41:06,580 ขอไฟล์ src สคริปต์ 2084 01:41:06,580 --> 01:41:07,960 ดังนั้นที่ไม่ได้ไปทำงาน 2085 01:41:07,960 --> 01:41:09,580 ที่จริงแล้วผมไม่ได้ทำอย่างนั้นใน ภาพนิ่งถัดไปซึ่งเป็น 2086 01:41:09,580 --> 01:41:10,700 ควรจะแก้ไขปัญหาที่ทั้ง 2087 01:41:10,700 --> 01:41:14,120 แต่วิธีการที่เราทำเช่นนี้เป็น JavaScript จะขับเคลื่อนเหตุการณ์ 2088 01:41:14,120 --> 01:41:17,410 ดังนั้นสิ่งที่เราทำคือการที่เราใช้งาน จัดการที่จะทำให้เกิดขึ้น 2089 01:41:17,410 --> 01:41:19,510 และเพื่อให้ฉันเลือกเอกสาร ชุดแรก 2090 01:41:19,510 --> 01:41:23,810 ผมพูดตกลงเมื่อเอกสารเป็น พร้อมแจ้งให้เราใช้ฟังก์ชั่น 2091 01:41:23,810 --> 01:41:25,470 เพื่อให้เป็นสิ่งที่หมายถึงไวยากรณ์ 2092 01:41:25,470 --> 01:41:27,100 >> ฉันเลือกเอกสาร 2093 01:41:27,100 --> 01:41:29,530 ตอนนี้เมื่อเอกสารนั้น พร้อมเรียกใช้ฟังก์ชั่น 2094 01:41:29,530 --> 01:41:32,970 และอื่น ๆ กว่าที่นี่เมื่อเอกสารเป็น พร้อมซึ่งหมายความว่าทั้งหมด HTML มี 2095 01:41:32,970 --> 01:41:36,140 โหลดแล้วผมใช้ฟังก์ชั่น ที่เอาองค์ประกอบที่ 2096 01:41:36,140 --> 01:41:40,270 และอื่น ๆ ตอนนี้เมื่อผมใช้ฟังก์ชั่นนี้ ที่ผมผ่านเข้าไปพร้อมฉัน 2097 01:41:40,270 --> 01:41:43,780 รับประกันว่าทุก HTML บน หน้าเป็นไปได้ที่มีอยู่ก่อน 2098 01:41:43,780 --> 01:41:44,100 ใช่ 2099 01:41:44,100 --> 01:41:44,425 คำถาม? 2100 01:41:44,425 --> 01:41:48,200 >> ผู้ชม: เป็นคำหลักเหตุการณ์อะไร ภายในฟังก์ชั่นหรือไม่ 2101 01:41:48,200 --> 01:41:51,750 >> JOSEPH ONG: ดังนั้นคำหลักในกรณีที่ ฟังก์ชั่นเป็นเพียงพารามิเตอร์ที่ 2102 01:41:51,750 --> 01:41:53,490 ได้รับการส่งผ่านไปยังฟังก์ชั่น สำหรับเหตุการณ์ใด ๆ 2103 01:41:53,490 --> 01:41:55,470 มันเป็นสิ่งเดียวที่ คุณจะได้รับฟรี 2104 01:41:55,470 --> 01:41:59,320 เมื่อคุณใช้ตัวจัดการที่สำคัญใน pset8 เหตุการณ์ที่สามารถบอกคุณได้สำหรับ 2105 01:41:59,320 --> 01:42:01,350 เช่นที่สำคัญที่คุณกดลงบน 2106 01:42:01,350 --> 01:42:05,540 ในกรณีนี้สำหรับเหตุการณ์พร้อม เป็นจริงไม่ได้มีประโยชน์สุด 2107 01:42:05,540 --> 01:42:08,640 แต่สำหรับเหตุการณ์ที่สำคัญลงก็มากขึ้น ที่มีประโยชน์เพราะคุณได้รับที่จะทราบว่า 2108 01:42:08,640 --> 01:42:12,330 ที่สำคัญคุณกดปุ่มโดยการเข้าถึง รหัสออกวัตถ​​ุกรณีที่ 2109 01:42:12,330 --> 01:42:13,530 ถูกต้องหรือไม่ 2110 01:42:13,530 --> 01:42:15,160 ไม่ที่ทำให้รู้สึก? 2111 01:42:15,160 --> 01:42:16,280 ตกลง 2112 01:42:16,280 --> 01:42:16,580 ใช่ 2113 01:42:16,580 --> 01:42:17,150 คำถาม? 2114 01:42:17,150 --> 01:42:19,290 >> ผู้ชม: เพ​​ื่อให้คุณสามารถใส่ แท็กสคริปต์ที่ต่ำลง 2115 01:42:19,290 --> 01:42:19,940 >> JOSEPH ONG: เพื่อใช่ 2116 01:42:19,940 --> 01:42:21,500 คุณสามารถใส่สคริปต์ แท็กลดลง 2117 01:42:21,500 --> 01:42:23,090 แต่แล้วมันก็จะกลายเป็นยุ่งจริงๆ 2118 01:42:23,090 --> 01:42:26,590 และเราชอบที่จะรวบรวมทั้งหมด ของรหัสของเราในสถานที่หนึ่ง 2119 01:42:26,590 --> 01:42:28,290 และนี้จะช่วยให้เราสามารถทำมันได้ 2120 01:42:28,290 --> 01:42:32,010 จำได้ว่าก่อนหน้านี้ผมว่ามีดีกว่า วิธีการเพื่อให้แน่ใจว่าองค์ประกอบ 2121 01:42:32,010 --> 01:42:33,880 ในหน้าก่อนที่จะรันโค้ด? 2122 01:42:33,880 --> 01:42:36,079 และนี่เป็นเพียงวิธีที่ดี คุณจะประสบความสำเร็จที่ 2123 01:42:36,079 --> 01:42:37,329 >> ผู้ชม: [ไม่ได้ยิน] 2124 01:42:37,329 --> 01:42:41,710 2125 01:42:41,710 --> 01:42:42,230 >> JOSEPH ONG: ใช่ 2126 01:42:42,230 --> 01:42:43,460 คุณจะยังคงต้องใช่ไหม 2127 01:42:43,460 --> 01:42:46,930 เพราะจำไว้ว่าคุณรวม ไฟล์ที่ด้านบนของหน้า 2128 01:42:46,930 --> 01:42:49,890 ดังนั้นมันจะรันเป็นอันดับแรกก่อน คุณจะได้รับที่ด้านล่างของหน้า 2129 01:42:49,890 --> 01:42:54,600 2130 01:42:54,600 --> 01:42:55,180 ตกลง 2131 01:42:55,180 --> 01:42:59,210 เพื่อให้คุณยังสามารถเพิ่มที่แตกต่างกัน ประเภทของการจัดการเหตุการณ์ 2132 01:42:59,210 --> 01:43:00,640 หนึ่งนี้เพียงแค่คลิกที่กระบวนการ 2133 01:43:00,640 --> 01:43:03,910 เมื่อฉันคลิกที่อายุน้อยที่สุดแล้ว มันจะปรากฏขึ้นพร้อมกับการแจ้งเตือน 2134 01:43:03,910 --> 01:43:05,440 นี่เป็นเพียงที่แตกต่างกัน ประเภทของเหตุการณ์ 2135 01:43:05,440 --> 01:43:08,840 เมื่อเทียบกับเหตุการณ์ความพร้อมตอนนี้คุณ ใช้เหตุการณ์คลิกเมื่อคุณได้รับ 2136 01:43:08,840 --> 01:43:10,190 คลิกที่องค์ประกอบ 2137 01:43:10,190 --> 01:43:13,860 >> และอื่น ๆ ในกรณีนี้อย่าลืมคลิก จัดการที่แนบมากับน้องคนสุดท้อง 2138 01:43:13,860 --> 01:43:16,080 ดังนั้นมันจะเกิดขึ้นเมื่อ ฉันคลิกที่อายุน้อยที่สุด 2139 01:43:16,080 --> 01:43:19,510 และในอีกหนึ่งเหตุการณ์พร้อม ติดอยู่กับเอกสาร 2140 01:43:19,510 --> 01:43:23,750 ดังนั้นจึงรอให้เอกสาร ที่จะพร้อม 2141 01:43:23,750 --> 01:43:25,120 ทำให้รู้สึก 2142 01:43:25,120 --> 01:43:26,190 ผมคิดว่าผมสามารถย้าย 2143 01:43:26,190 --> 01:43:26,610 ใช่ 2144 01:43:26,610 --> 01:43:26,980 คำถาม? 2145 01:43:26,980 --> 01:43:28,230 >> ผู้ชม: [ไม่ได้ยิน] 2146 01:43:28,230 --> 01:43:31,676 2147 01:43:31,676 --> 01:43:33,620 ในกรณีนี้คุณใช้งาน [ไม่ได้ยิน] 2148 01:43:33,620 --> 01:43:36,650 >> JOSEPH ONG: โอ้ใช่เพราะในนี้ กรณีนี้ผมต้องรอให้น้องคนสุดท้อง 2149 01:43:36,650 --> 01:43:40,740 องค์ประกอบที่จะปรากฏบนหน้าจอเป็นครั้งแรก ก่อนที่ผมจะสามารถแนบตัวจัดการคลิกไปที่ 2150 01:43:40,740 --> 01:43:43,062 มันซึ่งเป็นเหตุผลที่ผมใส่ไว้ใน ของเอกสารพร้อม 2151 01:43:43,062 --> 01:43:45,780 2152 01:43:45,780 --> 01:43:46,840 ตกลง 2153 01:43:46,840 --> 01:43:52,390 และต่อไปนี้จึงเป็นตัวอย่างที่ยิ่งใหญ่ของ วิธีที่คุณจะรวมทุกอย่าง 2154 01:43:52,390 --> 01:43:55,930 นี่เป็นเพียงตัวอย่างที่ตรวจสอบรูปแบบ ที่คุณเคยเห็นในการบรรยาย 2155 01:43:55,930 --> 01:43:58,410 เพื่อนำไปทีละขั้นตอนที่ คุณไปผ่านทางนี้ 2156 01:43:58,410 --> 01:43:59,590 และจะตกลงกันโดยสิ้นเชิง 2157 01:43:59,590 --> 01:44:01,400 เพียงแค่อ่านจากบนลงล่าง 2158 01:44:01,400 --> 01:44:03,030 >> ฉันมีแบบฟอร์มที่ด้านล่าง 2159 01:44:03,030 --> 01:44:07,590 เมื่อเอกสารพร้อมที่ผมแนบ ส่งจัดการกับแบบฟอร์มดังกล่าวว่า 2160 01:44:07,590 --> 01:44:12,910 เมื่อฉันส่งแบบฟอร์มที่ฉันได้รับค่า ภายในแต่ละของปัจจัยการผลิตเหล่านั้น 2161 01:44:12,910 --> 01:44:14,560 และฉันจะตรวจสอบว่าเป็นที่ว่างเปล่า 2162 01:44:14,560 --> 01:44:17,090 ถ้าเป็นที่ว่างเปล่าผมกลับเท็จเพราะ ฉันไม่ต้องการที่จะส่งแบบฟอร์ม 2163 01:44:17,090 --> 01:44:18,950 เพราะรูปแบบที่ไม่ถูกต้อง 2164 01:44:18,950 --> 01:44:22,040 ถ้ารหัสผ่านที่ว่างเปล่าหรือเป็นน้อย กว่าแปดตัวอักษรที่ผมไม่ได้ส่ง 2165 01:44:22,040 --> 01:44:24,470 รูปแบบเพราะที่ยังไม่ถูกต้อง 2166 01:44:24,470 --> 01:44:28,150 และเท็จกลับมาเพียงแค่ป้องกัน รูปแบบและจากการส่ง 2167 01:44:28,150 --> 01:44:30,150 จะหน้าใหม่ 2168 01:44:30,150 --> 01:44:31,310 >> และหวังว่านี้จะทำให้ความรู้สึก 2169 01:44:31,310 --> 01:44:34,650 ผมคิดว่าพวกคุณควรจะเดินผ่าน รหัสนี้ขั้นตอนโดยขั้นตอนด้วยตัวคุณเอง 2170 01:44:34,650 --> 01:44:38,350 และเมื่อคุณเข้าใจสิ่งที่เลือก องค์ประกอบและทำสิ่งที่มัน 2171 01:44:38,350 --> 01:44:40,520 จริงเหรอนี้จะทำให้ จำนวนมากที่มีความรู้สึกกับคุณ 2172 01:44:40,520 --> 01:44:41,295 ใช่? 2173 01:44:41,295 --> 01:44:44,150 >> ผู้ชม: อะไร ชื่อ = ชื่อผู้ใช้หมายถึงอะไร 2174 01:44:44,150 --> 01:44:48,530 >> JOSEPH ONG: ดังนั้นชื่อ = ชื่อผู้ใช้และ ชื่อ = รหัสผ่านก็หมายความว่ามองไปที่ 2175 01:44:48,530 --> 01:44:50,730 คุณลักษณะของสิ่งที่ คุณกำลังเลือก 2176 01:44:50,730 --> 01:44:51,790 แล้วที่มีเพื่อให้ตรงกับ 2177 01:44:51,790 --> 01:44:53,870 ดังนั้นเราจึงไปในการลงทะเบียน 2178 01:44:53,870 --> 01:44:56,240 แล้วเรามองไปที่ปัจจัยการผลิตทั้งหมด และการลงทะเบียน 2179 01:44:56,240 --> 01:44:59,990 แล้วเราเลือกหนึ่งที่ชื่อ แอตทริบิวต์เท่ากับชื่อผู้ใช้ 2180 01:44:59,990 --> 01:45:04,040 เพื่อให้ตัวเลือกแรกที่เลือกเพียง ใส่ชื่อผู้ใช้ 2181 01:45:04,040 --> 01:45:08,220 และที่เลือกสองเท่านั้นเลือก รหัสผ่านอย่างใดอย่างหนึ่งเพราะผู้ที่มี 2182 01:45:08,220 --> 01:45:12,240 คุณลักษณะที่ชื่อของพวกเขาตั้งค่าให้เป็นสิ่งที่ พวกเขากำลังควรจะเป็น 2183 01:45:12,240 --> 01:45:12,575 คำถาม? 2184 01:45:12,575 --> 01:45:17,030 >> ผู้ชม: ในการส่งอย่างไร ส่วนด้านล่างเป็นส่วนหนึ่งในการแก้ไขด้านบน 2185 01:45:17,030 --> 01:45:19,350 >> JOSEPH ONG: ดังนั้นว่าเป็นเพราะ ของตัวจัดการเหตุการณ์ 2186 01:45:19,350 --> 01:45:23,000 ดังนั้นเรากำลังรอสำหรับเหตุการณ์ส่ง ที่ได้รับการยิงออกมาจากรูปแบบ 2187 01:45:23,000 --> 01:45:24,730 และนั่นคือทั้งหมดที่ส่ง 2188 01:45:24,730 --> 01:45:26,080 ทำไมผมเรียกส่งไปอยู่ที่นั่น? 2189 01:45:26,080 --> 01:45:28,870 มันบอกว่าเมื่อฟอร์มถูกส่ง ฉันจะได้รับส่งเหตุการณ์ 2190 01:45:28,870 --> 01:45:33,480 เพื่อให้ฉันเพียงแค่ตัดที่และ แล้วเรียกใช้รหัสนี้แทน 2191 01:45:33,480 --> 01:45:33,823 ใช่? 2192 01:45:33,823 --> 01:45:35,866 >> ผู้ชม: คุณมีทำไม ที่จะมีเหตุการณ์ฟังก์ชั่ทำไม 2193 01:45:35,866 --> 01:45:38,580 ทำไมไม่เพียง [ไม่ได้ยิน] ได้ไหม 2194 01:45:38,580 --> 01:45:41,140 >> JOSEPH ONG: เพราะใน JavaScript คุณ ต้องประกาศฟังก์ชั่น 2195 01:45:41,140 --> 01:45:42,910 นั่นคือวิธีการทำงาน ใน JavaScript 2196 01:45:42,910 --> 01:45:44,800 ที่คุณจะพูดว่ามันจะ ที่จะใช้ฟังก์ชั่น 2197 01:45:44,800 --> 01:45:47,290 ดังนั้นที่คุณบอกว่าคุณกำลัง คาดหวังว่าการทำงานที่นี่แทน 2198 01:45:47,290 --> 01:45:48,260 วงเล็บปีกกาเพียง 2199 01:45:48,260 --> 01:45:50,460 >> ผู้ชม: และฟังก์ชั่น เป็นสิ่งที่ต่อไปนี้? 2200 01:45:50,460 --> 01:45:50,650 >> JOSEPH ONG: ใช่ 2201 01:45:50,650 --> 01:45:52,790 ฟังก์ชั่นเป็นสิ่งที่อยู่ภายใน วงเล็บปีกกาหลัง 2202 01:45:52,790 --> 01:45:53,630 คำหลักที่ทำงาน 2203 01:45:53,630 --> 01:45:54,045 ใช่? 2204 01:45:54,045 --> 01:45:55,295 >> ผู้ชม: [ไม่ได้ยิน] 2205 01:45:55,295 --> 01:46:00,180 2206 01:46:00,180 --> 01:46:00,660 >> JOSEPH ONG: สำหรับส่ง? 2207 01:46:00,660 --> 01:46:03,520 >> ผู้ชม: ไม่มีสำหรับการทำงาน โดยเหตุการณ์ที่เกิดขึ้น 2208 01:46:03,520 --> 01:46:03,770 >> JOSEPH ONG: ใช่ 2209 01:46:03,770 --> 01:46:05,610 โดยไม่ต้องแข่งขัน คุณสามารถมีที่ 2210 01:46:05,610 --> 01:46:08,480 ถ้าคุณไม่จำเป็นต้องมีเหตุการณ์ แล้วคุณก็สามารถตัดมัน 2211 01:46:08,480 --> 01:46:12,220 แต่ถ้าคุณทำแล้วคุณ เพียงแค่ใส่มันมี 2212 01:46:12,220 --> 01:46:12,520 ใช่ 2213 01:46:12,520 --> 01:46:13,190 คำถามอย่างรวดเร็ว 2214 01:46:13,190 --> 01:46:14,440 >> ผู้ชม: [ไม่ได้ยิน] 2215 01:46:14,440 --> 01:46:21,170 2216 01:46:21,170 --> 01:46:21,440 >> JOSEPH ONG: ใช่ 2217 01:46:21,440 --> 01:46:24,550 เพราะสิ่งที่คุณต้องทำ document.ready เพียงว่ารอให้ทุก 2218 01:46:24,550 --> 01:46:26,540 HTML ในหน้าเว็บที่จะโหลดครั้งแรก 2219 01:46:26,540 --> 01:46:30,510 และมักจะที่คุณต้องการองค์ประกอบของคุณ ในสถานที่ก่อนที่คุณเรียกใช้รหัสใด ๆ 2220 01:46:30,510 --> 01:46:31,030 ขวาทั้งหมด 2221 01:46:31,030 --> 01:46:32,180 เราจะต้องได้รับการอาแจ็กซ์ 2222 01:46:32,180 --> 01:46:33,110 เราไม่ได้มีเวลามาก 2223 01:46:33,110 --> 01:46:35,170 ดังนั้นข้อดีและข้อเสีย 2224 01:46:35,170 --> 01:46:37,450 JavaScript ง่ายลอง เขียนด้วย jQuery 2225 01:46:37,450 --> 01:46:38,930 แต่ jQuery เป็นชนิดของช้า 2226 01:46:38,930 --> 01:46:42,290 >> มันเป็นเช่น PHP จะช้ากว่าซี เพราะการตีความ 2227 01:46:42,290 --> 01:46:45,690 และ jQuery เป็นบิตช้ากว่า JavaScript เพราะมันไม่มาก 2228 01:46:45,690 --> 01:46:46,630 สิ่งที่ภายใต้ประทุน 2229 01:46:46,630 --> 01:46:48,660 และดังนั้นหากคุณกำลังใช้ jQuery ก็ เพียงเล็กน้อยช้ากว่า 2230 01:46:48,660 --> 01:46:51,630 JavaScript แม้ว่ามันจะ ช่วยให้คุณมีความสง่างามดี 2231 01:46:51,630 --> 01:46:53,970 และสุดท้ายอาแจ็กซ์ 2232 01:46:53,970 --> 01:46:59,170 จนถึงกับอาแจ็กซ์, คุณยังไม่เห็นอาแจ็กซ์ ในแง่ของการ pset7 ยังเพราะ 2233 01:46:59,170 --> 01:47:01,150 เมื่อคุณทำที่คุณส่ง แบบฟอร์มใบเสนอราคา 2234 01:47:01,150 --> 01:47:02,350 มันโหลดหน้าใหม่ 2235 01:47:02,350 --> 01:47:04,440 ดังนั้นคุณจะได้รับแฟลชสีขาวขนาดใหญ่ บนหน้าขณะที่ 2236 01:47:04,440 --> 01:47:06,820 โหลดหน้าสองถูกต้องหรือไม่ 2237 01:47:06,820 --> 01:47:08,780 >> มันจะดีมากถ้าคุณ ไม่ได้มีแฟลชนี้ 2238 01:47:08,780 --> 01:47:11,600 เช่น Facebook, ถ้าคุณเพียงแค่เลื่อนไปที่ ด้านล่างจะเพิ่มเนื้อหาใหม่ 2239 01:47:11,600 --> 01:47:13,490 โดยไม่ต้องรีเฟรชหน้าทั้งหมด 2240 01:47:13,490 --> 01:47:15,420 ดังนั้นบางอย่างเช่นนี้จะดี 2241 01:47:15,420 --> 01:47:17,370 นี้เป็นรหัส JavaScript ที่ด้านซ้าย 2242 01:47:17,370 --> 01:47:19,390 คุณจะได้รับสิ่งที่อยู่ภายในของท่านว่า 2243 01:47:19,390 --> 01:47:21,340 คุณจะได้รับข้อมูลหุ้นจาก Yahoo! 2244 01:47:21,340 --> 01:47:27,440 แล้วคุณทำสายใหญ่ที่ กล่าวว่าตกลงนี้เป็นข้อความที่ผมต้องการ 2245 01:47:27,440 --> 01:47:28,400 ที่จะแสดงบนหน้าจอ 2246 01:47:28,400 --> 01:47:32,280 แล้วคุณใส่ข้อความที่อยู่ภายใน ขององค์ประกอบบางอย่างที่ได้รับ 2247 01:47:32,280 --> 01:47:33,970 ปรากฏบนหน้าจอ 2248 01:47:33,970 --> 01:47:35,540 >> เพื่อให้เป็นสิ่งที่เกิดขึ้นที่นี่ 2249 01:47:35,540 --> 01:47:39,410 ดังนั้นโดยทั่วไปเพราะนี่คือทั้งหมด JavaScript และคุณไม่จำเป็นต้องใช้ 2250 01:47:39,410 --> 01:47:42,980 อีกต่อไป PHP, นี้จะให้แน่ใจว่า ว่าหน้าไม่รีเฟรช 2251 01:47:42,980 --> 01:47:47,470 ดังนั้นนี่เป็นเพียงความคิดที่เป็นนามธรรม ที่ฉันพูดที่นี่ตอนนี้ 2252 01:47:47,470 --> 01:47:50,630 ความคิดที่เป็นนามธรรมคือว่าถ้าคุณทำมัน ทั้งหมดใน JavaScript, คุณไม่ได้มี 2253 01:47:50,630 --> 01:47:52,330 รีเฟรชหน้า 2254 01:47:52,330 --> 01:47:53,800 แต่อย่างไรคุณจริงทำเช่นนี้? 2255 01:47:53,800 --> 01:47:56,230 >> ดีจริงขอพูดคุยเกี่ยวกับ ปัญหาเกี่ยวกับการเป็นครั้งแรกนี้ 2256 01:47:56,230 --> 01:47:59,340 ปัญหาคือใน JavaScript, ดำเนินการเป็นจังหวะ 2257 01:47:59,340 --> 01:48:02,000 ดังนั้นคุณต้องรอเป็นเวลาหนึ่ง สายที่จะเสร็จสิ้นก่อนที่คุณจะ 2258 01:48:02,000 --> 01:48:03,370 รันบรรทัดถัดไป 2259 01:48:03,370 --> 01:48:06,130 และสิ่งที่ถ้าผมจะไปที่ Yahoo!, และเซิร์ฟเวอร์ของพวกเขาจะช้าจริงๆและ 2260 01:48:06,130 --> 01:48:08,790 พวกเขาจะใช้เวลาสามวินาที ให้ฉันกลับไปที่ข้อมูลสต็อก? 2261 01:48:08,790 --> 01:48:12,620 เมื่อกดเส้นราคาว่าถ้า ดำเนินการเป็นจังหวะมันเป็นโดย 2262 01:48:12,620 --> 01:48:15,390 เริ่มต้นสิ่งที่มันเพิ่งจะทำคือ เบราว์เซอร์ของคุณเป็นไปถ่วง 2263 01:48:15,390 --> 01:48:15,930 สามวินาที 2264 01:48:15,930 --> 01:48:18,900 และคุณจะไม่สามารถที่จะทำ อะไรในขณะที่จะได้รับข้อมูลว่า 2265 01:48:18,900 --> 01:48:20,010 มันจะถูกแช่แข็ง 2266 01:48:20,010 --> 01:48:20,800 >> และที่ไม่ดี 2267 01:48:20,800 --> 01:48:23,390 คุณไม่ต้องการให้ผู้ใช้ มีหน้าเว็บแช่แข็ง 2268 01:48:23,390 --> 01:48:24,170 ถูกต้องหรือไม่ 2269 01:48:24,170 --> 01:48:25,480 ที่ไม่ดีเพียงแค่ 2270 01:48:25,480 --> 01:48:26,770 ทุกคนเห็นพ้อง? 2271 01:48:26,770 --> 01:48:29,270 หากคุณกำลังเรียกดู Facebook และมัน ค้างและคุณไม่สามารถทำอะไรคุณ 2272 01:48:29,270 --> 01:48:31,920 ได้รับความผิดหวังจริงๆ 2273 01:48:31,920 --> 01:48:34,960 ดังนั้นการแก้ปัญหาคือเราทำอะไรบางอย่าง ไม่ตรงกันแทน 2274 01:48:34,960 --> 01:48:38,910 ดังนั้นทั้งหมดนี้สิ่งที่ไม่ตรงกันว่า คือผมจะถามนี้ 2275 01:48:38,910 --> 01:48:40,280 URL ของข้อมูลบางส่วน 2276 01:48:40,280 --> 01:48:41,610 แล้วฉันจะให้ไป 2277 01:48:41,610 --> 01:48:45,330 ฉันแค่จะให้ดำเนินการ สิ่งที่รหัสที่เกิดขึ้นหลังจากที่ 2278 01:48:45,330 --> 01:48:49,290 >> และจากนั้นเมื่อใดก็ตามที่ข้อมูลที่มีความพร้อม แล้วฉันจะประมวลผล 2279 01:48:49,290 --> 01:48:50,540 นั่นคือทั้งหมดที่มันจะพูด 2280 01:48:50,540 --> 01:48:52,795 2281 01:48:52,795 --> 01:48:56,710 >> ผู้ชม: อาแจ็กซ์ก็ทำให้ รหัสไม่ตรงกัน? 2282 01:48:56,710 --> 01:48:58,560 >> JOSEPH ONG: มันไม่ตรงกัน วิธีการเรียกข้อมูล 2283 01:48:58,560 --> 01:49:01,230 ดังนั้นสิ่งแรกที่เกี่ยวกับอาแจ็กซ์ มันช่วยให้ผมได้รับข้อมูล 2284 01:49:01,230 --> 01:49:03,170 จากเว็บไซต์ภายนอก 2285 01:49:03,170 --> 01:49:07,045 และสิ่งที่สองคือมันทำให้แน่ใจว่า ที่หน้าของฉันไม่ได้ขัดขวางในขณะที่ฉัน 2286 01:49:07,045 --> 01:49:07,970 เรียกข้อมูลที่ 2287 01:49:07,970 --> 01:49:09,600 นั่นเป็นส่วนที่ไม่ตรงกันของมัน 2288 01:49:09,600 --> 01:49:13,040 เพราะมันจะไปออกที่อื่น เพราะผมบอกว่าผมให้ไปในขณะที่ 2289 01:49:13,040 --> 01:49:14,900 จะเรียกข้อมูลที่ว่า ทำให้มันไม่ตรงกัน 2290 01:49:14,900 --> 01:49:17,170 ฉันให้ดำเนินการ 2291 01:49:17,170 --> 01:49:18,960 >> เพื่อให้ไม่ตรงกันว่า ความคิดในใจ 2292 01:49:18,960 --> 01:49:22,010 และฉันจะแสดงให้คุณเห็นสิ่งที่ แตกต่างกันคือ 2293 01:49:22,010 --> 01:49:23,920 รุ่น synchronous เป็นทางด้านซ้าย 2294 01:49:23,920 --> 01:49:26,240 รุ่นที่ไม่ตรงกัน เป็นทางด้านขวา 2295 01:49:26,240 --> 01:49:29,170 ดูที่ตัวเลขเพื่อดูว่า ขั้นตอนที่สอดคล้องกับสิ่งที่ 2296 01:49:29,170 --> 01:49:30,610 ดำเนินการในแต่ละสาย 2297 01:49:30,610 --> 01:49:32,730 กว่ามีการแจ้งเตือนจะแสดงขึ้นเป็นครั้งแรก 2298 01:49:32,730 --> 01:49:34,590 เพราะได้รับข้อมูลหุ้นจาก Yahoo! 2299 01:49:34,590 --> 01:49:37,250 ใช้เวลาสามวินาทีก็ร้าน สามวินาที 2300 01:49:37,250 --> 01:49:39,880 และจากนั้นจะแจ้งเตือนราคา หลังจากนั้นสามวินาที 2301 01:49:39,880 --> 01:49:43,690 >> ดังนั้นตอนนี้ที่แสดงให้เห็นการแจ้งเตือน ขึ้นในเวลาที่ - 2302 01:49:43,690 --> 01:49:44,610 สามวินาทีค่ะ 2303 01:49:44,610 --> 01:49:47,670 และจากนั้นจะแจ้งเตือนโดยหลังจากนั้น 2304 01:49:47,670 --> 01:49:48,930 ดังนั้นมันก็จะไปทีละขั้นตอน 2305 01:49:48,930 --> 01:49:51,200 มันก็เหมือนกับสิ่งที่คุณผู้ชาย จะยอมรับถูกต้องหรือไม่ 2306 01:49:51,200 --> 01:49:54,170 กับการดำเนินตรงกัน คุณแจ้งเตือนเป็นครั้งแรก 2307 01:49:54,170 --> 01:49:57,410 แล้วคุณไปออกไป URL นี้ 2308 01:49:57,410 --> 01:49:59,530 และคุณจะพูดว่าฉันกำลังจะไป เพียงแค่ขอข้อมูล 2309 01:49:59,530 --> 01:50:01,170 แล้วฉันจะไป ดำเนินการได้ในภายหลัง 2310 01:50:01,170 --> 01:50:04,230 ดังนั้นจึงดำเนินการได้ทันที บรรทัดถัดไปหลังจากที่ผมทำที่ 2311 01:50:04,230 --> 01:50:05,710 ขอไม่ตรงกัน 2312 01:50:05,710 --> 01:50:08,920 >> ดังนั้น 0.001 วินาทีคุณจะเห็นการแจ้งเตือน hi 2313 01:50:08,920 --> 01:50:10,960 ดำเนินการฟังก์ชั่นที่ลาการแจ้งเตือน 2314 01:50:10,960 --> 01:50:14,240 เพราะเราให้สัญญาว่าฉัน จะประมวลผลข้อมูลในภายหลังว่า 2315 01:50:14,240 --> 01:50:17,920 ที่เกิดขึ้นเมื่อมีข้อมูลที่จะกลับมา สามวินาทีภายหลังจากนั้นผมทำงานที่ 2316 01:50:17,920 --> 01:50:21,380 ฟังก์ชั่นที่ฉันมีที่นั่น 2317 01:50:21,380 --> 01:50:21,870 ใช่? 2318 01:50:21,870 --> 01:50:25,750 >> ผู้ชม: คุณสามารถระบุหรือ ชี้แจงสิ่งที่อาแจ็กซ์หมายถึง 2319 01:50:25,750 --> 01:50:30,460 >> JOSEPH ONG: ดังนั้นอาแจ็กซ์เป็นวิธีที่ว่าถ้าผม ต้องการข้อมูลเมื่อฉันบนเว็บไซต์และฉัน 2320 01:50:30,460 --> 01:50:34,690 ไม่ต้องการที่จะรีเฟรชหน้าเว็บแล้ว ฉันจะใช้เทคโนโลยีที่เรียกว่าอาแจ็กซ์นี้ 2321 01:50:34,690 --> 01:50:40,630 ที่เป็นหลักก็หมายความว่าให้ไปเรียก ข้อมูลจากเว็บไซต์อื่น 2322 01:50:40,630 --> 01:50:43,724 และทำมันในทางที่เพียงแค่ ไม่ขัดขวางหน้าเว็บของฉัน 2323 01:50:43,724 --> 01:50:46,650 >> ผู้ชม: ดังนั้นที่โดยธรรมชาติ ส่วนหนึ่งของ JavaScript หรือ jQuery? 2324 01:50:46,650 --> 01:50:50,590 >> JOSEPH ONG: ดังนั้นคนที่เขียนวิธีการทำ นี้ใน JavaScript เป็นเวลานานแล้ว 2325 01:50:50,590 --> 01:50:52,050 เมื่อมาถึงจุดหนึ่งก็ไม่ได้อยู่ 2326 01:50:52,050 --> 01:50:56,630 และเพื่อให้คนที่คิดค้นเทคนิคนี้ เพื่อให้คนที่จะขอข้อมูลนี้ 2327 01:50:56,630 --> 01:50:57,680 ในแบบนี้ 2328 01:50:57,680 --> 01:50:59,550 และพวกเขาเขียนสิ่งบางอย่าง ที่จะทำเพื่อคุณ 2329 01:50:59,550 --> 01:51:01,605 และ jQuery เพียงแค่นี้จะช่วยให้คุณ วิธีที่ดีมากที่จะทำมัน 2330 01:51:01,605 --> 01:51:03,112 ด้วย $ นี้. ได้รับฟังก์ชั่น 2331 01:51:03,112 --> 01:51:07,200 2332 01:51:07,200 --> 01:51:09,480 คำถาม? 2333 01:51:09,480 --> 01:51:11,560 ฉันสามารถตอบคำถามเกี่ยวกับ อาแจ็กซ์หลังจากนั้นเกินไป 2334 01:51:11,560 --> 01:51:13,870 ฉันจะอยู่ที่นี่ 2335 01:51:13,870 --> 01:51:16,390 >> ดังนั้นจึงขอให้เราดึงข้อมูลโดยไม่ต้อง รีเฟรชหน้า 2336 01:51:16,390 --> 01:51:18,200 และมันช่วยให้เราทำเช่นนี้ใน เป็นวิธีที่ไม่ตรงกันว่า 2337 01:51:18,200 --> 01:51:19,450 ไม่ได้แช่แข็งหน้า 2338 01:51:19,450 --> 01:51:22,680 2339 01:51:22,680 --> 01:51:27,310 นานที่ไม่ได้อ่านว่า คำอธิบายยาวเกินไปสำหรับคุณ 2340 01:51:27,310 --> 01:51:29,430 ดังนั้นในที่สุดข้ามเว็บไซต์ การโจมตีการเขียนสคริปต์ 2341 01:51:29,430 --> 01:51:30,910 เราเห็นนี้กับ Zamyla 2342 01:51:30,910 --> 01:51:34,285 หากใครบางคนในฐานข้อมูลของฉันมีชื่อเช่นนี้ ซึ่งเป็นแท็กนี้สคริปต์และฉัน 2343 01:51:34,285 --> 01:51:38,280 มีรหัสบางอย่างในหน้าเว็บของฉันที่พิมพ์ ออกชื่อคนในแถวหรือฉันมี 2344 01:51:38,280 --> 01:51:43,310 บางโค้ดจาวาสคริปต์ที่แทรก ชื่อนี้ในหน้า 2345 01:51:43,310 --> 01:51:45,680 สิ่งที่ได้รับการผลิต HTML? 2346 01:51:45,680 --> 01:51:47,290 ดีฉันพิมพ์ออกมาแท็ก 2347 01:51:47,290 --> 01:51:48,390 ฉันพิมพ์ออกมาแท็กทั้งหมดเหล่านี้ 2348 01:51:48,390 --> 01:51:50,740 >> ฉันได้รับที่จะเป็นส่วนหนึ่งที่ผมพิมพ์ ออกไปกับเพื่อนของฉัน 2349 01:51:50,740 --> 01:51:52,980 พิมพ์ลอเรนออก 2350 01:51:52,980 --> 01:51:54,200 มันพิมพ์ออกไมโล 2351 01:51:54,200 --> 01:51:56,810 แล้วชื่อของฉันในฐานข้อมูล การโพสต์สคริปต์ 2352 01:51:56,810 --> 01:51:58,060 ยกยอสถานะ Facebook 2353 01:51:58,060 --> 01:52:00,740 2354 01:52:00,740 --> 01:52:04,330 เพราะฉันใส่นี้ลงในหน้า เพราะดูเหมือนว่า JavaScript เมื่อ 2355 01:52:04,330 --> 01:52:07,930 หน้านี้ได้รับการส่งไปยังผู้ใช้ จะได้รับการดำเนินการตาม JavaScript 2356 01:52:07,930 --> 01:52:10,800 ดังนั้นนี่คือสิ่งที่เราเรียกว่า โจมตีสคริปต์ข้ามไซต์ 2357 01:52:10,800 --> 01:52:14,570 มีคนทำให้ข้อมูลที่เป็นอันตรายใน ฐานข้อมูลของคุณที่สามารถสอดคล้องกับ 2358 01:52:14,570 --> 01:52:17,080 บางสายเพิ่มเติมหรือ บางสตริง JavaScript 2359 01:52:17,080 --> 01:52:20,130 >> และเมื่อได้รับการพิมพ์ออกมา หน้าแบบนี้แล้วสิ่งที่ 2360 01:52:20,130 --> 01:52:22,580 ที่เกิดขึ้นคือว่ารหัสไม่ได้รับการดำเนินการ ว่าผมไม่ได้ตั้งใจ 2361 01:52:22,580 --> 01:52:25,110 มันจะได้รับการดำเนินการ 2362 01:52:25,110 --> 01:52:28,230 และนั่นคือทั้งหมดข้ามไซต์ โจมตีการเขียนสคริปต์เป็น 2363 01:52:28,230 --> 01:52:31,790 และวิธีที่คุณจะได้รับรอบ นี้เป็นเหมือน Zamyla กล่าวว่า 2364 01:52:31,790 --> 01:52:34,340 คุณเพียงแค่สิ่งที่อยู่ในห่อ HTML ตัวอักษรพิเศษ 2365 01:52:34,340 --> 01:52:39,460 และ HTML ตัวอักษรพิเศษคือ PHP ฟังก์ชั่นที่จะป้องกันไม่ให้เกิดการจัดเรียงนี้ 2366 01:52:39,460 --> 01:52:42,000 ของสิ่งที่เกิดขึ้นกับคุณ ถ้าคุณมีที่เป็นอันตราย 2367 01:52:42,000 --> 01:52:43,830 สตริงในฐานข้อมูลของคุณ 2368 01:52:43,830 --> 01:52:47,650 มันก็หนีมันเพื่อให้มันไม่ได้ ได้รับการแปลเป็​​นภาษา HTML 2369 01:52:47,650 --> 01:52:50,960 จะแทนที่วงเล็บน้อย กับสิ่งที่เราเรียกหน่วยงานที่ 2370 01:52:50,960 --> 01:52:52,250 และเราไปกว่านี้ในการบรรยายเกินไป 2371 01:52:52,250 --> 01:52:55,800 ดังนั้นผมคิดว่าพวกคุณควรจะมี ความเข้าใจที่ดีเกี่ยวกับการที่ 2372 01:52:55,800 --> 01:52:57,420 คำถาม? 2373 01:52:57,420 --> 01:52:57,820 ใช่ 2374 01:52:57,820 --> 01:53:00,860 >> ผู้ชม: ดังนั้นวิธีที่จะ [ไม่ได้ยิน]? 2375 01:53:00,860 --> 01:53:01,555 >> JOSEPH ONG: พูดอีกครั้งว่า 2376 01:53:01,555 --> 01:53:02,500 >> ผู้ชม: วิธีที่จะตรวจสอบ - 2377 01:53:02,500 --> 01:53:02,860 >> JOSEPH ONG ขวา 2378 01:53:02,860 --> 01:53:06,080 เพื่อให้คุณมีบางสิ่งบางอย่างที่บอกว่าเมื่อ ผมลงทะเบียนชนิดในนามของเรา 2379 01:53:06,080 --> 01:53:09,390 ฉันเพียงแค่พิมพ์ในฟิลด์ที่ชื่อของฉันคือ stript โพสต์ไม่ยกยอ Facebook 2380 01:53:09,390 --> 01:53:11,570 สถานะแท็กสคริปต์อย่างใกล้ชิด 2381 01:53:11,570 --> 01:53:15,690 และที่เพิ่งได้รับการใส่ลงไปใน ฐานข้อมูลเพราะฉันไม่สามารถพูดของใครบางคน 2382 01:53:15,690 --> 01:53:18,260 ในโลกไม่ได้มีชื่อ ด้วยลูกศรซ้ายในนั้นหรือ 2383 01:53:18,260 --> 01:53:19,036 สคริปต์คำในนั้น 2384 01:53:19,036 --> 01:53:21,330 แต่นั่นไม่ได้ทำให้รู้สึกจริงๆ 2385 01:53:21,330 --> 01:53:24,560 ดังนั้นผมก็ต้องให้แน่ใจว่าฉัน sanitize สิ่งก่อนที่จะพิมพ์ 2386 01:53:24,560 --> 01:53:25,420 ออกไปที่หน้า 2387 01:53:25,420 --> 01:53:27,140 >> ผู้ชม: ดังนั้นบัตรพิเศษ HTML ป้องกันไม่ให้แท็กของสคริปต์หรือไม่ 2388 01:53:27,140 --> 01:53:28,710 >> JOSEPH ONG: ใช่ 2389 01:53:28,710 --> 01:53:29,960 ดังนั้นจึงไม่ได้ป้องกันการแท็กของสคริปต์ 2390 01:53:29,960 --> 01:53:32,320 มันก็ทำให้แน่ใจว่า แท็กของสคริปต์ไม่ได้รับ 2391 01:53:32,320 --> 01:53:35,120 ตีความเป็น HTML หรือ - 2392 01:53:35,120 --> 01:53:35,400 ใช่ 2393 01:53:35,400 --> 01:53:38,470 มันก็ขึ้นมาเป็นสิ่งที่ มันเป็นจริง 2394 01:53:38,470 --> 01:53:39,220 ขวาทั้งหมด 2395 01:53:39,220 --> 01:53:40,930 เพื่อให้เป็นทบทวนคำถาม 2396 01:53:40,930 --> 01:53:41,830 เย็น 2397 01:53:41,830 --> 01:53:45,088 >> [APPLAUSE]