>> [เล่นเพลง]
HANNAH: สวัสดีครับทุกคน
ขอบคุณคนมากสำหรับการออกมา ในสภาพอากาศที่น่ารังเกียจสำหรับการตอบคำถามอย่างใดอย่างหนึ่ง
เซสชั่นการตรวจสอบ
ในฐานะที่พวกคุณรู้ว่าการตอบคำถาม หนึ่งพุธนี้
ดังนั้นเรากำลังจะไป ผ่านพวงของหัวข้อ
Davin: Hey, ฉันสามารถพูดได้ บางสิ่งบางอย่างจริงอย่างรวดเร็ว?
HANNAH: ใช่ Davin ที่เกิด จะพูดอะไรจริงอย่างรวดเร็ว
Davin: ขออภัย
เพียงแค่จริงอย่างรวดเร็วถ้าคุณมีคำถาม เกี่ยวกับการตอบคำถามที่คุณสามารถไปออนไลน์
ไปที่ 2014 แบบทดสอบหนึ่งเกี่ยวกับการตอบคำถาม
มันมีจิสติกส์เกี่ยวกับ ที่จะไปเมื่อไป
หากคุณกำลังลงทะเบียนเรียนไปพร้อม ๆ กันเราไม่ จะมีแบบทดสอบแต่งหน้าที่ 5:30
หรือถ้าคุณส่งฉันปัญหา คุณมีบางปัญหาอื่น ๆ
แต่ 05:30 คือการแต่งหน้า เวลาในวันพุธที่
แต่ถ้าคุณมีคำถาม คำถามทั่วไป
ออนไลน์มีทั้งหมดจิสติกส์
เพื่อตรวจสอบมีครั้งแรก
>> HANNAH: น่ากลัว
ดังนั้นนี่คือรายการใหญ่ของหัวข้อ ที่เรากำลังจะไปถึงวันนี้
ฉันจะครอบคลุมทั้งหมดของ C สิ่งซึ่งเป็นที่คอลัมน์แรก
ดังนั้นสิ่งที่ C ที่เรา หลังจากที่ครอบคลุมแบบทดสอบศูนย์
เริ่มต้นด้วยรายการที่เชื่อมโยง ซึ่งรวมถึงตัวชี้
>> สิทธิทั้งหมดดังนั้นเราจึงเห็นนี้ ในเซสชั่นการตรวจสอบที่ผ่านมา
ดังนั้นฉันจะผ่านไป นี้เป็นนิด ๆ หน่อย ๆ ได้เร็วขึ้น
เพียงแค่ยกมือของคุณถ้าคุณต้องการให้ฉันไป ช้าลงหรือบางสิ่งบางอย่างที่อยู่ไกลออกไป
แต่เราใช้การเชื่อมโยงรายชื่อเพราะ เราเริ่มต้นใน C กับอาร์เรย์
และอาร์เรย์ที่ดี แต่ ปัญหาคือพวกเขามีขนาดคงที่
รายการที่เชื่อมโยงช่วยให้เราสามารถสร้าง ขนาดโครงสร้างข้อมูลแบบไดนามิก
>> และเรามีการดำเนินงานขั้นพื้นฐานของเรา แทรกลบและค้นหา
และเราสามารถทำแทรกใน กรณีที่เลวร้ายที่สุดครั้งอย่างต่อเนื่อง
ถ้าเราเพียงแค่วางมันไว้ที่จุดเริ่มต้นมาก
ลบและค้นหาที่เลวร้ายที่สุด คดีใหญ่โอ้เวลา n
ดังนั้นอีกครั้งเพียงเพื่อพลิก ผ่านภาพเหล่านี้
ฉันรู้ว่าเราเห็นเหล่านี้เป็นครั้งสุดท้าย แต่เรา ต้องการที่จะติดตามการเชื่อมโยงรายชื่อของเรา
โดยการติดตาม หัวของรายการของเราเชื่อมโยง
เพราะเรารู้ว่า แต่ละโหนดของเรา
เป็นเพียงการไปให้ชี้ไปที่ โหนดถั​​ดไปในรายการของเราเชื่อมโยง
>> นั่นคือวิธีการที่เราติดตาม
แม้ว่าเหล่านี้ไม่ได้ ชิ้นอย่างต่อเนื่องของหน่วยความจำ
เราสามารถค้นหาได้โดยเพียงแค่ ต่อไปนี้ลูกศรที่แตกต่างกัน
นี่คือโครงสร้างของเรา สำหรับโหนดรายการที่เชื่อมโยง
เราเห็นนี้เป็นครั้งสุดท้าย
เรามีโหนด struct ของเรา
และมันก็มีสองคุณสมบัติ
จำนวนหนึ่งที่เกิดขึ้นจริง ค่าที่เราต้องการในการจัดเก็บ
ในกรณีนี้มันเป็นจำนวนเต็ม
มันอาจจะเป็นสตริงก็สามารถทำได้ เป็นถ่านสิ่งที่คุณต้องการ
และจากนั้นเราจะต้องติดตาม โหนดถั​​ดไปในรายการของเราเชื่อมโยง
เพื่อให้เป็นไปได้ ตัวชี้ไปยังโหนดถั​​ดไป
ถ้าคุณได้เพียงแค่การทำ การค้นหาเช่นฉันกล่าวก่อน
คุณจะต้องทำตามลูกศรของคุณลง
แทรกคุณจะติดตาม ของที่ส่วนที่เหลือของรายการของคุณ
และคุณต้องการที่จะเปลี่ยนเส้นทางหัว ให้ชี้ไปที่องค์ประกอบใหม่ของเราซึ่ง
ในกรณีนี้เป็นหนึ่ง แล้วใครจะชี้
เพื่อที่เหลือของรายการที่เชื่อมโยง
ดังนั้นอีกครั้งฉันรู้ว่านี้เป็นเพียงเล็กน้อย บิตของการทำซ้ำจากศูนย์การตอบคำถาม
ดังนั้นเราจะต้องระมัดระวังเป็นอย่างมาก เกี่ยวกับคำสั่งที่เรา
ทำ pointings เหล่านี้เพื่อให้เราไม่ได้ สูญเสียการติดตามของด้านหลังของรายการ
ตกลงใด ๆ กับคำถาม เพียงรายการเชื่อมโยงโดยลำพัง?
น่ากลัว, OK เย็น
>> ดังนั้นตอนนี้เรากำลังจะไปสู่​​บางสิ่งบางอย่าง เพียงเล็กน้อยที่ซับซ้อนมากขึ้น
รายการเชื่อมโยงทวีคูณ
ดังนั้นนอกเหนือจากการรักษา การติดตามของโหนดถั​​ดไป
เรายังต้องการที่จะติดตาม ของโหนดก่อนหน้านี้
และสิ่งนี้จะช่วยให้เราถ้าเรา จุดที่บางส่วนในรายการที่เชื่อมโยงของเรา
ไม่เพียง แต่ไปข้างหน้า แต่ ยังย้ำไปข้างหลัง
เพราะอย่างที่เราเห็นใน รายการที่เชื่อมโยงโดยลำพัง
ถ้าเราอยู่ในโหนดบางส่วนและ ทั้งหมดในทันทีที่เราตัดสินใจ
ที่จริงผมอยากจะไป โหนดขวาก่อนที่ฉัน
คุณจะต้องไปทั้งหมด ทางกลับไปที่หัว
และย้ำถึงจนกว่าคุณจะพบ โหนดที่คุณกำลังมองหา
>> ดังนั้นนี้ทำให้สิ่งที่ เล็กน้อยง่ายขึ้นในขณะที่เรากำลัง
พยายามที่จะย้ำ ผ่านรายการที่เชื่อมโยงของเรา
แต่เราต้องติดตามอย่างใดอย่างหนึ่ง ตัวชี้มากขึ้นเพื่อดาวดวงหนึ่งโหนดเพิ่มเติม
สิทธิทั้งหมดเพื่อให้ที่นี่มาส่วนที่สนุก
เรากำลังจะไปฝึกการใช้ ลบสำหรับรายการที่เชื่อมโยงเป็นทวีคูณ
ดังนั้นนี่คือสิ่งที่ เกมที่ยุติธรรมโดยสิ้นเชิงสำหรับการตอบคำถาม
มันแสดงให้เห็นขึ้นในแบบทดสอบที่ผ่านมา
ดังนั้นแน่นอนต้องเตรียม โค้ดนิด ๆ หน่อย ๆ ในซี
อย่าลืมว่ามีทั้งหมด PHP นี้สนุกและ JavaScript,
เรายังคงต้องจำ ที่จะทำซีดังนั้นแปรงขึ้นบนที่
ถ้าคุณรู้สึกสนิม
>> สิทธิทั้งหมดให้ดูว่าเราสามารถทำเช่นนี้
ตกลงเย็น
ดังนั้นเราจะพยายาม การแก้ไขที่เหมาะสมในที่นี่
และหวังว่านี้เป็นไปตามแผน
สิทธิทั้งหมดไม่มีใครต้องการที่จะให้ฉัน ข้อเสนอแนะที่เป็นวิธีการที่ฉันควรเริ่มต้น?
สมมติฐานเท่านั้นฉัน การทำคือว่าผมอยู่แล้ว
มีโครงสร้างที่กำหนดไว้ หนึ่งที่ผมแสดงให้เห็นในหน้าสุดท้าย
บนภาพนิ่งที่ผ่านมา
และฉันเก็บหัวของการเชื่อมโยงของฉัน รายการในตัวชี้บางอย่างที่เรียกว่ารายการ
ไม่มีใครต้องการที่จะได้รับฉันเริ่มต้น?
>> ผู้ชม: คุณสามารถสร้างใหม่ โหนดที่จะเรียกผ่านรายการ?
>> HANNAH: น่ากลัวดังนั้น เรากำลังจะสร้าง
โหนดใหม่ที่จะรวบรวมข้อมูลผ่านรายการ
ฉันชอบที่
ฉันเพิ่งจะเรียกว่าตัวชี้ถ้าที่ตกลง
และสถานที่ที่มันควรจะมา แต่เดิมเริ่มต้นอย่างไร
>> ผู้ชม: น่าจะเป็นที่ หัวของรายการ
HANNAH: สวย
เราต้องการที่จะเริ่มต้นที่หัวซึ่ง ผมบอกว่าเป็นไปได้ที่จะถูกเก็บไว้ในรายการ
น่ากลัว
เพื่อให้ห่างไกลที่ดีเพื่อให้
และตอนนี้เป้าหมายของเราคือ ย้ำผ่านรายการ
จนกว่าเราจะพบกับโหนด n ค่าที่เราต้องการที่จะลบ
OK?
>> ดังนั้นตอนนี้เป็นส่วนหนึ่งที่ เราต้องการที่จะย้ำถึง
ใครสามารถแนะนำ วิธีที่จะย้ำผ่าน?
>> ผู้ชม: ห่วง
>> HANNAH: ห่วง
ฉันรักมัน
โดยเฉพาะเราสามารถลองห่วงขณะ
ตกลงเรารู้ว่าเราได้มาถึง ตอนท้ายของรายการของเราเมื่อสิ่งที่?
ผู้ชม: เมื่อชี้เป็นโมฆะ
HANNAH: เมื่อชี้เป็นโมฆะ
ที่สวยงาม, ฉันรักมัน
ตกลงเย็น
ดังนั้นขอโทษถ้ารั้งขอบเขตของฉันคือ ชนิดของการลดลงปิดหน้าจอ
เรานำมันกลับ
ตกลงเย็น
ทำอะไรต่อไป
>> ดังนั้นเราจึงรู้ว่าเราต้องการที่จะลบ โหนดที่มีค่า n
ดังนั้นลองหากรณีที่ เราจริงพบโหนดของเรา
ดังนั้นวิธีการที่ฉันจะตรวจสอบว่า?
ฉันต้องการเพียงแค่บอกว่าถ้าชี้แล้วถ้าฉัน ต้องการที่จะได้รับค่าออกมาจากตัวชี้
ฉันเพียงแค่ arrow n, เท่ากับ n พารามิเตอร์
ที่เราให้กับฟังก์ชั่นนี้ โหนดที่เราต้องการที่จะลบจริง
คำถามใด ๆ จนถึงที่นี่?
สิทธิ์ทั้งหมด
ตกลงดังนั้นตอนนี้เราจะวาดภาพได้อย่างรวดเร็ว ในคณะกรรมการเพื่อให้เห็นภาพนี้
>> ดังนั้นสมมติว่ามีโหนดที่น่ารักของเรา
และมันมีค่าที่ฉันอยากจะพูดแค่สี่
และมันก็ชี้ไปข้างหน้า โหนดในรายการที่เชื่อมโยงของเรา
และไม่มีอะไรก่อนที่จะ
ดังนั้นเราจึงมีก่อนหน้านี้ ชี้ไปที่อะไร
ในกรณีนี้เราชี้ไปข้างหลัง
OK เพียงแค่การตั้งค่าของฉัน เชื่อมโยงรายการมากกว่าที่นี่
และเรามีรายชื่อที่ชี้ โครงสร้างนี้จะเริ่มต้นด้วย
ผมจะวาดอีกหนึ่งสำหรับ เพราะความสมบูรณ์
ตกลง
ผมจะชี้นี้ไปข้างหน้า
และผมจะชี้ว่าหนึ่งกลับ
โอ๊ะขอโทษ
ใช่มีนี้ไปข้างหลัง
ทำมันอีกครั้ง
ตกลงเราจะไปที่นั่น
สิทธิทั้งหมดได้รับมัน
ตกลงนี่คือภาพของเรา
>> ตกลงดังนั้นเราจึงต้องการที่จะต้องพิจารณาทั้งสองกรณี
กรณีแรกคือถ้า โหนดเราต้องการที่จะลบ
ที่เริ่มต้นมากของรายการของเรา
แล้วกรณีที่สองที่เราต้องการ ที่จะต้องพิจารณาคือถ้ามันเป็นที่ใด
ผมเข้าใจว่าเรื่องนี้โดยสิ้นเชิง วาดยุ่งกับการลบทั้งหมดของฉัน
แต่หวังว่าเราจะพยายามที่จะ ให้ชัดเจนด้วยรหัสบางอย่าง
>> ตกลงเพื่อให้ครอบคลุมกรณี ที่เราพบโหนดของเรา
และมันเป็นเรื่องที่ดีมาก จุดเริ่มต้นของรายการที่เชื่อมโยงของเรา
ทุกคนที่ให้ฉัน ข้อเสนอแนะของที่นี่เป็นสิ่งที่
ฉันควรทำอย่างไรที่จริงเอาโหนดของเราหรือไม่
มันเป็นเรื่องเล็ก ๆ น้อย ๆ ที่ยุ่งยาก
OK?
>> ผู้ชม: คุณต้องใช้เวลา โหนดที่จะเป็นก่อนที่จะ
และทำให้มันชี้ไปที่ อย่างใดอย่างหนึ่งที่จะเป็นหลังจากที่มัน
และใช้เวลาโหนที่ จะเป็นหลังจากที่มันและทำให้
มันชี้ไปยังโหนดก่อนที่จะ
HANNAH: แน่นอน
OK เพื่อให้เป็นกรณีนี้ where-- เรามีสองกรณี
เรามีกรณีที่ โหนดที่เรากำลังมองหา
เป็นด้านหน้าของรายการ
ตกลงแล้วกรณีที่คุณ อธิบายเป็นอย่างอื่นใช่มั้ย?
มันเป็นที่อื่นในรายการ
ดังนั้นคุณจึงกล่าวว่าเราจำเป็นที่จะต้อง มองไปที่โหนดก่อนหน้านี้
และทำให้โหนดก่อนหน้านี้ ชี้ไปที่โหนดต่อไป
ดังนั้นสมมติว่าเรา พยายามที่จะออกจากห้า
ในภาพวาดของฉันยุ่งมากมากกว่าที่นี่
เราต้องการที่จะให้แน่ใจว่า สี่ตอนนี้ชี้ไปที่หก
สี่จุดต่อไปถึงหก
และหกจุดก่อนถึงสี่
นั่นคือเป้าหมายของเราที่นี่ใช่มั้ย?
นี่คือสิ่งที่ผมคิดว่าคุณ กล่าวว่าเพียงแค่ไปที่นั่น
>> ตกลงจึงขอได้ที่ชิ้นแรก
ขอทำมี ชี้ก่อนหน้าก่อนหน้า
ดังนั้นสี่ต่อไปควรชี้ไปที่อะไร?
ว่าในกรณีนี้หก
ดังนั้นเราควรจะพูดว่าตัวชี้ต่อไป
OK?
สิทธิ์ทั้งหมด
จึงขอได้กำจัดของภาพที่น่าเกลียดนี้ และพยายามที่จะวาดหนึ่งดีกว่าเล็กน้อย
เรามีหัวรายการของเราที่นี่
และที่ชี้ไปยังโหนดแรกใน รายการที่เชื่อมโยงของเราซึ่งเรากล่าวว่าเป็นสี่
นี่คือโหนดที่สองของเราห้า
และโหนดที่สามของเราหก
เพียงแค่พยายามที่จะวาดเดียวกันแน่นอน ภาพเพียงเล็ก ๆ น้อย ๆ อย่างหมดจด
ตกลงดังนั้นสี่ต่อไป เดิมชี้ไปที่ห้า
ห้าจุดต่อไปถึงหก
หกจุดก่อนถึงห้า
และห้าจุดก่อนถึงสี่
ดังนั้นมาก nicer!
ตกลงเย็น
>> ดังนั้นตอนนี้สิ่งที่เราทำเพียงแค่ นี่บรรทัดของรหัสนี้
ซึ่งบอกว่าตัวชี้ก่อนหน้านี้ ต่อไปดังนั้นสิ่งที่หมายความว่า?
นั่นหมายความว่าถ้าเรากำลังมองหาที่ ห้าไปที่โหนดก่อนหน้านี้
และก็ควรต่อไปในขณะนี้ ชี้ไปที่ห้าต่อไป
เพื่อเป็นหลักสิ่งที่ทำ เป็นที่ลบลูกศรนี้
และทำให้มันข้ามขวากว่าห้า
เป็นที่ชัดเจน?
ฉันรู้ว่าอาจจะเป็นนิด ๆ หน่อย ๆ ไม่สมบูรณ์
ผมเห็นบางพยักหน้าหัว
นั่นเป็นสิ่งที่ดี
ตกลงเย็น
ตอนนี้สิ่งที่เป็นขั้นตอนต่อไป?
>> ผมเคยตั้งค่าต่อไป
ตอนนี้ที่ลูกศรอื่น ๆ ฉันจะต้องเปลี่ยน?
หนึ่งนี้ที่นี่
หกก่อนหน้านี้
เราไม่ต้องการที่หกก่อนหน้านี้ ให้ชี้ไปที่ห้าอีกต่อไป
เราอยากให้มันชี้ไปที่สี่
ภาพที่ไม่ทำให้รู้สึก?
ดังนั้นตอนนี้เราสามารถใช้เวลาห้าออก
ถ้าอย่างนั้นเราได้รับชิ้นส่วนที่
สิ่งที่ฉันควรจะทำก่อนที่ฉัน รีเซ็ตหกก่อนหน้านี้ถึงสี่?
ความคิดใดที่นั่น?
>> ผู้ชม: ฟรีระหว่างโหนด พวกเขาโดยการตั้งค่าให้เป็นโมฆะ?
HANNAH: โทน
แน่นอนเป้าหมายของเราคือ ไปได้ที่จะเป็นอิสระโหนด
ดังนั้นเราจึงสามารถทำเช่นนั้นได้ที่นี่
ตัวชี้ฟรี
อย่างแน่นอน
แต่ถึงแม้ก่อนหน้านั้น ขอ just-- ขวาเป้าหมายของเรา
นี่คือการกำหนดตัวชี้ต่อไป ก่อนหน้านี้เท่ากับตัวชี้ก่อนหน้านี้
ฉันรู้ว่านี้คือการขึ้นปกคลุม
ตกลงขอ take-- เย็น
ทุกคนสามารถมองเห็นเส้นด้านล่างนี้หรือไม่?
หรือจะเป็นขนาดเล็กสุด?
>> ดังนั้นก่อนที่เราจะดำเนินการ บรรทัดนี้ที่นี่เราต้องการ
เพื่อให้แน่ใจว่า ตัวชี้ต่อไปคือไม่เป็นโมฆะ
เพราะถ้าตัวชี้ต่อไปคือ null สิ่งที่ชนิดของข้อผิดพลาด
ฉันจะได้รับเมื่อฉันพยายามที่จะ อ้างอิงชี้โมฆะ?
ผู้ชม: ความผิด Seg
HANNAH: ความผิด seg สวยงาม
ตกลงดังนั้นหากที่ไม่ โมฆะแล้วเราสามารถตั้งค่า
และเรามีหกจุดอีกครั้งถึงสี่
คำถามขึ้นมาจนถึงจุดนี้
ใช่?
>> ผู้ชม: ในครั้งแรกของคุณ ถ้าคำสั่งคุณ
หมายถึงการที่จะมีลูกศร ต่อไปหรือ [ไม่ได้ยิน]
HANNAH: ผมหมายถึงลูกศรชี้ n
ดังนั้นโดยทั่วไปสิ่งที่ฉันพยายามที่จะทำ จะบอกว่าโหนดปัจจุบันว่าฉัน
วนไปโหนดปัจจุบันว่า ฉันกำลังมองหาที่ผมจัดเก็บในตัวชี้
และฉันต้องการที่จะรู้ว่าตัวชี้ ค่าซึ่งในกรณีนี้คือ n
และผมต้องการที่จะเห็นคือ โหนดฉันกำลังมองหา
สำหรับโหนดที่ผมมุ่งมั่นที่จะลบหรือไม่
นั่นคือเหตุผลที่เรามีที่นี่ตัวชี้ n
>> ผู้ชม: ดังนั้นลูกศรไป ถึง n, คุณตั้งค่า
และเก็บไว้ในโหนดที่เรียกว่า n?
>> HANNAH: ดังนั้นมันก็เหมือนถ้าฉัน จะผ่านรายการที่เชื่อมโยงนี้
และชี้ไปที่ห้า
ถ้าผมต้องการที่จะได้รับค่าว่าถ้า ฉันต้องการที่จะได้รับตัวเลขที่ 5,
ฉันต้องทำลูกศรชี้ n
เย็น?
ใช่
>> ผู้ชม: n คือชื่อของตัวแปร?
HANNAH: ใช่
ดังนั้นหากเราพลิกกลับอย่างใดอย่างหนึ่ง สไลด์ n คือชื่อ
ของมูลค่าที่อยู่ภายใน โหนดในรายการที่เชื่อมโยงของเรา
และฉันรู้ว่ามันจะได้รับเพียงเล็กน้อย บิตสับสนเพราะเรายัง
จะเรียกสิ่งที่ ว่าเราต้องการที่จะลบ n
เพื่อให้เป็นที่ที่ หนึ่งบรรทัดมาจาก
ใช่?
>> ผู้ชม: อะไรที่คุณมี [ไม่ได้ยิน] วิธีที่พวกเขาทำงานอย่างไร
ตัวชี้ [ไม่ได้ยิน]
>> HANNAH: แน่นอน
คุณกำลังพูดคุย about-- ซึ่งสาย?
ผู้ชม: บรรทัดสุดท้าย [ไม่ได้ยิน]
>> HANNAH: แน่นอนว่าตกลง
เพื่อให้ดูภาพใน สั่งซื้อจะพยายามที่จะอธิบายเรื่องนี้
ฉันขอโทษสำหรับ กล้องคำถามคือ
เราสามารถอธิบายตัวชี้ ลูกศรชี้ต่อไปก่อนหน้านี้
ตกลงจึงขอบอกว่าเราจะอยู่ที่ห้า และเป้าหมายของเราคือการลบห้า
ดังนั้นตัวชี้ต่อไปซึ่งของเหล่านี้ สามโหนดไม่ที่ให้เรา?
ที่นำเราไปโหนดหกใช่มั้ย?
>> ตกลงดังนั้นตอนนี้เรากำลังถาม สำหรับหกก่อนหน้านี้
OK?
และเรากำลังตั้งค่านี้ จะเท่ากับสี่
ซึ่งจะเกิดขึ้นก่อนหน้านี้ห้า
ฉันรู้ว่ามันเป็นซุปเปอร์ ยากที่จะติดตาม
ผมขอแนะนำให้คุณวาดภาพ ถ้าคุณได้รับคำถามเช่นนี้
ใช่?
>> ผู้ชม: คือเหตุผลที่ว่า เราไม่ได้มี [ไม่ได้ยิน]
>> HANNAH: แน่นอน
ดังนั้นคำถามคือทำไม เราไม่จำเป็นต้องตรวจสอบที่นี่?
ทำไมเราไม่จำเป็นที่จะต้องตรวจสอบว่า ชี้ก่อนหน้านี้ไม่เท่ากันให้เป็นโมฆะ?
และมันก็เป็นเพราะเราได้ แยกออกจากกันแล้วออก
ในกรณีที่ตัวชี้ ที่จุดเริ่มต้นมาก
คำถามที่ดีมาก
สิ่งอื่น ๆ ที่เกี่ยวกับเรื่องนี้?
ตกลงเย็น
ดังนั้นขอให้จบมันขึ้น
เราเกือบจะมี
>> ดังนั้นสิ่งที่ถ้ามันเป็นที่หัว?
เกิดอะไรขึ้นถ้าแทน พยายามที่จะลบห้า
เราจริงต้องการที่จะลบสี่?
สิ่งที่ผมจะต้องทำอย่างไร
ดีฉันต้องการรีเซ็ตหัวของฉันเพื่ออะไร?
ตะโกนมันออกมา?
ผู้ชม: หนึ่งหลังจากที่มัน
HANNAH: สวย
ตกลงดังนั้นเราจึงต้องการให้รายการที่จะชี้ เพื่อสิ่งที่ตัวชี้ของเราโหนดต่อไปคือ
ดี
และเพียงเพื่อความสมบูรณ์ของ ประโยชน์ที่เราจะ
ต้องการตรวจสอบว่าตราบใดที่รายการของเรา ไม่ null ตราบเท่าที่รายการของเราไม่ได้
ว่างแล้วเราต้องการที่จะตั้ง ของเราก่อนหน้านี้เท่ากับเป็นโมฆะ
คำถามเพื่อให้ห่างไกล?
หนึ่งขั้นตอน from--?
>> ผู้ชม: มันจะเป็นถ้า รายการไม่เท่ากับให้เป็นโมฆะ?
>> HANNAH: ใช่คุณขวาโดยสิ้นเชิง
ฉันขอโทษ
รายการคือไม่เท่ากับให้เป็นโมฆะ
น่ากลัว
พยายามที่จะนำมานี้ทั้งหมดบนหน้าจอ
มันเป็นชนิดของการล้มปิด
ขออภัยคน
และสุดท้าย แต่ไม่น้อยทั้งหมด ที่เราต้องทำคือการกลับไป
ตกลง
นั่นเป็นจำนวนมากหนาตา ในอย่างรวดเร็วจริงๆ
ใช้เวลาสองเพื่อดูมากกว่านี้
บอกฉันถ้าคุณมีคำถามใด ๆ
ใช่?
>> ผู้ชม: ถ้ารายการที่ หัว then-- รอไม่เป็นไร
>> HANNAH: ตกลงที่ดี
ดังนั้นนี่คือถ้ารายการอยู่ที่หัว เราเอามันออกไปเพื่อสิ่งที่เราใส่
ใช่?
>> ผู้ชม: คุณสามารถอธิบาย แรกถ้ามีคำสั่งอีกครั้งหรือไม่
หากตัวชี้ไปยัง n เท่ากับ n?
HANNAH: แน่นอน
ดังนั้นเป้าหมายของเราในการทำงานทั้งหมดนี้ ลบโหนดที่มีค่า n
ดังนั้นหากเราพบว่าในขณะที่เรากำลัง การทำซ้ำผ่านรายการของเรา
โหนดที่มีค่า n ที่ หนึ่งที่เราต้องการลบ
ดังนั้นทุกการลบเกิดขึ้น ด้านในของที่ใหญ่ถ้าคำสั่ง
ไม่ว่าจะทำให้ความรู้สึก?
เย็น
ใช่?
>> ผู้ชม: บางทีคุณก็ไม่สามารถมองเห็น แต่คุณไม่ต้องสาย
สำหรับการเลื่อนผ่านรายการ?
HANNAH: น่ากลัว
ลองนำมานี้ขึ้นเล็กน้อยและ เราจะโยนขวาด้านล่างว่า
บางทีคณะกรรมการจะได้ เป็นความคิดที่ดีกว่าเล็กน้อย
ดังนั้นวิธีที่ผมจะก้าวไปข้างหน้าชี้?
>> ผู้ชม: ตัวชี้ เท่ากับชี้บวกหนึ่ง
>> HANNAH: สวย
เพื่อที่จะช่วยให้เรา ยังคงทำซ้ำผ่าน
ตกลง
ผู้ชม: จะไม่จะมีอีกหรือไม่
HANNAH: อีกครั้งหนึ่ง?
ผู้ชม: จะไม่มี อื่นหลังจากใหญ่เก่าถ้า
คำสั่ง [ไม่ได้ยิน]
HANNAH: ส่วนไหน?
ฉันขอโทษ
>> ผู้ชม: สำรวจเส้นทาง, ไม่ควรมีคนอื่น?
HANNAH: คุณอย่างแน่นอน อาจจะมีคนอื่น
เพราะผมมีสิทธิกลับมา มีคุณไม่จำเป็นอื่น ๆ
แต่ใช่คำถามที่ดี
ตกลงใช่?
ผู้ชม: เราสามารถคิดของตัวชี้ ที่มีการเคลื่อนไหวผ่านรายการ
กับการอยู่กับค่า ของแต่ละโหนดในรายการหรือไม่
หรือเราควรจะคิดว่ามันเป็น การเรียงลำดับของภายนอกในรายการ?
>> HANNAH: หนึ่งไม่ว่าจะเป็นเรื่องปกติผมคิดว่า
วิธีที่ฉันคิดว่ามันเป็น ผมบอกว่าโอเคผมชี้
และนี่คือฉัน
นี่คือมือของฉัน
ฉันจะชี้ไปที่ที่แตกต่างกัน สิ่งที่ผมอยากจะย้ำผ่าน
ครั้งแรกที่ผมจะชี้ ไปที่หัวของรายการ
และที่บอกฉันฉัน จะชี้ไปที่สี่
และเพื่อให้ฉันเป็นภายนอกในรายการ ฉันสามารถชี้ไปที่แต่ละองค์ประกอบเหล่านี้
ดังนั้นผมจึงคิดว่าตัวเองเป็นตัวชี้
ผู้ชม: ดังนั้นเมื่อคุณลบ หนึ่งในองค์ประกอบเหล่านั้น
คุณลบตัวเองเพื่อที่จะพูด
HANNAH: แน่นอน
ดังนั้นสิ่งที่คุณลบ คุณกำลังชี้ไปที่
ดังนั้นในตัวอย่างที่ เราเห็นที่เรา
พยายามที่จะลบห้า เมื่อฉันชี้ไปที่ห้า
ผมต้องการที่จะลบ สิ่งที่ผมชี้ไปที่
ตรงขวา
ใช่?
ผู้ชม: เราได้รับการดูแล กรณีที่ n คือไม่ได้อยู่ในรายการหรือไม่
HANNAH: ถ้า n เป็นไม่ได้อยู่ในรายการหรือไม่
สิ่งที่จะเกิดขึ้นเป็นคุณ จะย้ำผ่านและย้ำ
ผ่านแล้วคุณจะ ที่จะได้รับตัวชี้ null ถูก
แล้วคุณจะทำได้
>> ผู้ชม: ดังนั้นเราจะมี ที่จะกลับมาอะไร?
HANNAH: เราจะทำได้
วิธีการที่ถ้ากำหนดไว้นี้ ฟังก์ชั่นผมก็แค่บอกว่ามันกลับ
ถือเป็นโมฆะโดยไม่คำนึงถึง
แต่คุณอาจจะมีบางสิ่งบางอย่าง เหมือนกลับจำนวนเต็ม
และมีมันกลับมา ลบ 1 ถ้ามันล้มเหลว
สิ่งที่ต้องการที่
คำถามที่ with-- ใช่?
ผู้ชม: [ไม่ได้ยิน]
HANNAH: ขออภัย?
ผู้ชม: [ไม่ได้ยิน]
HANNAH: แน่นอน
นั่นคือ actual-- เมื่อเราได้ ทำทุกงานนี้ในการเคลื่อนย้าย
ลูกศรทั้งหมดเหล่านี้ไปรอบ ๆ ทั้งหมดของเรา เป้าหมายของเราคือการกำจัดของโหนด
ที่เรากำลังมองหา
ดังนั้นในกรณีนี้พ้น ชี้ถ้าฉันชี้ไปที่ห้า
มันก็เหมือนการลบโหนดนี้กลาง
นั่นเป็นส่วนหนึ่งของตัวชี้ฟรี
ที่ทำให้รู้สึก?
>> ผู้ชม: ดังนั้นคิดแม้แต่ คุณไม่ได้ [ไม่ได้ยิน]
>> HANNAH: ดังนั้นเราจึงสันนิษฐานว่าที่จุดเริ่มต้น เรามีรายการที่เป็นบาง already--
พวกเขาได้ใส่นี้ด้วยกัน
ดังนั้นเพื่อที่จะสร้างนี้ รายการที่พวกเขาคงจะ [ไม่ได้ยิน]
เย็น
สิ่งอื่นใดกับเรื่องนี้?
ใช่?
>> ผู้ชม: อะไรถ้ารายการ ไม่เท่ากับสาย null?
[ไม่ได้ยิน]
HANNAH ขวาที่นี่?
ผู้ชม: ใช่
HANNAH: ตกลงทั้งหมดที่ฉันทำ คือฉันแค่การทำให้แน่ใจว่า
ว่าก่อนที่ฉันพยายามที่จะรายการ dereference, ก่อนที่ผมจะพยายามที่จะเข้าถึงก่อนหน้านี้
ผมต้องการที่จะตรวจสอบให้แน่ใจว่ามันเป็นไม่ได้ null ดังนั้นผมจึงไม่ได้รับความผิด seg
เย็น
>> ตกลงฉันรู้ว่านี้ค่อนข้าง จำนวนมากจะได้รับผ่าน
ดังนั้นสไลด์นี้จะเป็น ให้บริการแก่คุณ
ดังนั้นคุณจึงสามารถผ่านมันไปในรายละเอียดมากขึ้น
ใช่?
>> ผู้ชม: ทำไมรายการ [ไม่ได้ยิน]
HANNAH: แน่นอน
รายการดังนั้นจริงๆชี้ไป องค์ประกอบนี้ที่นี่
องค์ประกอบแรกในรายการ
ดังนั้นจึงไม่สามารถมีก่อนหน้านี้
ใช่?
>> ผู้ชม: ไม่ชี้จุด ไปยังที่อยู่เดียวกันในหน่วยความจำ?
มันชี้ไปที่เดียวกัน ที่อยู่ในความทรงจำเป็นโหนด
ว่ามันชี้ไป?
>> HANNAH: ใช่มันชี้ ไปยังโหนดในความทรงจำนี้
>> ผู้ชม: ขวาดังนั้น เมื่อคุณ [ไม่ได้ยิน]
>> HANNAH: ในความรู้สึกใช่
ตกลง
สิทธิทั้งหมดขอย้ายพร้อมกับนี้
และถ้าคุณมีคำถามเพิ่มเติม ติดรอบในตอนท้าย
และเราสามารถผ่านมันไปอีกครั้ง
ตกลงเย็น
ตอนนี้เราได้รับที่จะไป การแฮตารางพยายาม
และต้นไม้ที่คุณได้สุด คุ้นเคยกับ P-ตั้งห้าสะกด
>> ตารางแฮชดังนั้นเป็นเพียง อาร์เรย์กับรายการที่เชื่อมโยงโดยลำพัง
หรือรายการที่เชื่อมโยงทวีคูณออกมาจากมัน
ดังนั้นเราจึงมีการจัดเรียงบาง ของอาเรย์
และวิธีการที่เรารู้ว่าที่เหล่านี้ ถังอาร์เรย์จะได้รับใน,
เราใช้ฟังก์ชันแฮช
ดังนั้นในกรณีนี้ทุกคนสามารถ คาดเดาสิ่งที่ฟังก์ชันแฮช
จะต้องขึ้นอยู่เพียงแค่ในบาง ของอินพุทและเอาท์พุท?
>> ผู้ชม: จำนวนตัวอักษรของตัวอักษร
HANNAH: แน่นอน
มันก็ทำให้พวกเขาในลำดับตัวอักษร
ทุกอย่างที่เริ่มต้นด้วย จะใส่ลงในถังแรก
ทุกอย่างกับ B จะใส่ลงใน ถังที่สองอื่น ๆ และอื่น ๆ
น่ากลัว, OK
และฟังก์ชันแฮชใด ๆ ฟังก์ชั่นที่ใช้ในคำ
และจะบอกคุณว่า ถังมันอยู่ใน
เพื่อที่รายการของเรา อาร์เรย์มันอยู่ใน
>> ดังนั้นครั้งฉันให้ฉันทุก กัญชาทำงานคำ
มันควรจะบอกฉันเดียวกัน วางทุกครั้งเดียว
ดังนั้นถ้าเราใช้ฟังก์ชันแฮช จากสไลด์ก่อนหน้านี้
ที่เรากำลังเรียงลำดับตาม ตัวอักษรตัวแรกของตัวอักษร
ทุกครั้งที่ผมให้ฉัน ฟังก์ชันแฮช "แอปเปิ้ล"
มันก็ควรจะให้ฉันกลับ 0
ดังนั้นถ้าผมมีแอปเปิ้ล จะใส่ในตารางแฮชของฉัน
ถ้าฉันให้ "แอปเปิ้ล" เพื่อฟังก์ชันแฮชของฉัน มันควรจะพูดว่าให้ไปใส่ไว้ในถัง 0
ถ้าฉันกำลังมองหา แอปเปิ้ลในตารางแฮชของฉัน
และผมบอกว่าที่แอปเปิ้ลอาจจะ สดคุณถามฟังก์ชันแฮชของคุณ
และกล่าวว่าให้ไปที่ถัง 0
ทั้งหมดใช่มั้ย?
คำถามที่มีฟังก์ชั่น?
น่ากลัว
>> ที่นี่มากขึ้นเล็กน้อย คำอธิบายรายละเอียด
ของสิ่งที่ฟังก์ชันแฮชอาจมีลักษณะเช่น
สิทธิ์ทั้งหมด
ตอนนี้มีปัญหากับกัญชา ฟังก์ชั่นที่อยู่ในโลกที่เหมาะ
เราจะมีเพียงหนึ่ง สิ่งที่อยู่ในถังแต่ละ
แต่ในความเป็นจริงมี ไม่เพียงหนึ่งคำ
ที่เริ่มต้นด้วยเอมีไม่ เพียงหนึ่งคำที่เริ่มต้นด้วย B. ดังนั้น
ในกรณีนี้ถ้าเรา ทันใดนั้นได้รับ "เบอร์รี่"
และเราต้องการที่จะนำมัน ลงในตารางแฮชของเรา
และเราเห็นโอ้ไม่มีกล้วย แล้วมีสิ่งที่เราควรจะทำอย่างไร
>> ดีที่เรามีสองตัวเลือก
ตัวเลือกแรกคือ เชิงเส้นละเอียดที่
ก็หมายความว่าการไปพบ ถังที่ว่างต่อไป
ไปพบรายการอาร์เรย์ว่างต่อไป
และเพียงแค่ใส่ "เบอร์รี่" มี
ดังนั้นผมจึงรู้ว่ามันควรจะ ไปกับกล้วยในถังหนึ่ง
แต่เพียงแค่ใส่มันในถังสาม เพราะถังสามเป็นที่ว่างเปล่า
อีกตัวเลือกหนึ่งน่าจะเป็น สิ่งที่คุณใช้
ใน P-ชุดของคุณซึ่งคุณ มีการผูกมัดแยกต่างหาก
ดังนั้นแต่ละถังของคุณ แต่ละองค์ประกอบอาร์เรย์ของคุณ
ไม่เพียง แต่ถือหนึ่งคำ แต่ที่จริงแล้ว ถือตัวชี้ไปยังรายการของคำ
เพื่อที่ว่าถ้าคุณมี กล้วยในตารางแฮชของคุณ
และคุณก็อยาก เพื่อเพิ่มผลไม้เล็ก ๆ ไม่มีปัญหา
เพียงแค่เพิ่มผลไม้เล็ก ๆ ไปยังจุดสิ้นสุดหรือ จุดเริ่มต้นของรายการที่เชื่อมโยงของคุณ
ตกลงที่น่ากลัว
คำถามที่มีกัญชา ตารางก่อนที่เราจะไปหรือไม่
>> สิทธิ์ทั้งหมด
ต้นไม้และพยายาม
ตกลงดังนั้นนี้เป็นอีกทางเลือกหนึ่ง สำหรับการดำเนินการในพจนานุกรม
คุณจะได้ทำลอง
ดังนั้นจึงเป็นชนิดพิเศษของต้นไม้ที่ พฤติกรรมเช่นตารางแฮชมีหลายระดับ
ดังนั้นคุณจะเห็นภาพ ที่คุณมีอาร์เรย์ที่
ชี้ไปที่พวงของอาร์เรย์ ที่ชี้ไปที่พวงของอาร์เรย์
และเราจะดูว่าสิ่งที่ จะมีลักษณะเช่นเดียวกับสไลด์ในอนาคต
และอื่น ๆ โดยทั่วไปต้นไม้ เป็นเพียงโครงสร้างข้อมูลใด ๆ
ซึ่งข้อมูลที่มี จัดอยู่ในลำดับชั้นบาง
เพื่อที่เราเห็นเรามี การเรียงลำดับของความเข้าใจบางอย่าง
ของระดับบนสุดในระดับถัดไป ระดับถัดไปในระดับถัดไป
ดังนั้นนี่อาจจะเป็นที่ชัดเจนมากที่สุด มีตัวอย่างที่เฉพาะเจาะจงบางอย่าง
ดังนั้นนี่คือต้นไม้ของเรา
คุณจะเห็นว่ามัน มีระดับโดยเฉพาะอย่างยิ่ง
ที่เราเริ่มต้นด้วยโหนดรากที่หนึ่ง
และเราสามารถไปลงผ่านต้นไม้ของเรา
>> ต้นไม้ไบนารีคือ ประเภทเฉพาะของต้นไม้
และสเปคเท่านั้น สำหรับต้นไม้ไบนารี
คือการที่แต่ละโหนดมี ที่มากที่สุดสองใบ
ดังนั้นคุณจะไม่เห็นใด ๆ ของโหนดเหล่านี้มีสามหรือสี่
หรือบางหมายเลขอื่นของใบ
และจากนั้นก็เฉพาะเจาะจงมากขึ้น เป็นต้นไม้ค้นหาแบบทวิภาค
ที่โหนดทุกทางด้านซ้ายของ โหนดจะมีค่าที่น้อยลง
และมูลค่าให้กับทุก ขวาเป็นไปได้ที่ใหญ่กว่า
ดังนั้นถ้าคุณเห็น 44 ที่อยู่ที่รากของเรา ไปทางซ้าย, 11, 22, และ 33
มีทั้งหมดน้อยกว่ารากของเรา
และด้านขวาที่มีทั้งหมด หมายเลข bigger-- 66, 55, และ 77
และทรัพย์สินนี้ถือเป็นจริง ในระดับของต้นไม้ทุก
>> ดังนั้นเมื่อเราลงไป 22, 11, 33 และยังคง 11
มีขนาดเล็กกว่า 22 และ 33 มีขนาดใหญ่กว่า 22
และสิ่งนี้ทำให้มันง่ายต่อการค้นหา เพราะถ้าเรากำลังมองหาตัวเลข
เรารู้ว่าที่ สาขาที่จะปฏิบัติตามลง
ดังนั้นนี้ควรเตือนคุณ นิด ๆ หน่อย ๆ ของการค้นหาแบบไบนารี
ใช่?
>> ผู้ชม: ดังนั้นเมื่อคุณอยู่ อธิบายไบนารี
คุณบอกว่ามันมีที่มากที่สุดสองใบ?
HANNAH: MM-HM
ผู้ชม: มันอาจจะมีน้อยลงหรือไม่
HANNAH: ใช่
ดังนั้นสมมติว่าสำหรับตัวอย่างเช่นคุณ ไม่ได้มีแม้จำนวนของสิ่ง
และคุณไม่สามารถเติมขึ้นทั้งหมดของคุณ ใบก็ปรับหากมีหนึ่ง
OK?
น่ากลัว
คำถามใด ๆ ที่อื่น ๆ บนต้นไม้?
ตกลง
>> กลับไปพยายามของเราในฐานะที่ผมพูด เกี่ยวกับนิด ๆ หน่อย ๆ ก่อนหน้านี้
วิธีการที่เรามีทั้งอาร์เรย์หลายระดับ
ดังนั้นในกรณีนี้เราเริ่มต้นที่ด้านบน
และเราสามารถทำตามคำใดก็ตามลง
ดังนั้นสมมติว่าเราต้องการ ที่จะมองหาทัวริง
เราเริ่มต้นที่ T ทำตามมันลง ไปยังอาร์เรย์ที่มี U,
และทำตามมันลงจนกว่าเรา ถึงนี้เดลต้าเล็ก ๆ น้อย ๆ ซึ่ง
บอกเราใช่คุณพบคำ
ที่ชัดเจนในการพยายาม?
อะไรที่จะไปที่นั่น?
ใช่?
ผู้ชม: ไม่สัญลักษณ์ของเดลต้า ต้องใช้พื้นที่ภายในลอง?
HANNAH: ใช่ดังนั้นมันไม่ได้ จำเป็นต้องจำเ​​ป็นที่จะต้องเป็นเดลต้า
แต่เราต้องมีวิธีการบางอย่าง บอก computer-- เราขอโทษ
เพื่อให้เรารู้ว่า TUR ไม่ได้คำ
เพราะสมมุติว่าเราไม่ได้มี แนวคิดของเดลต้านี้แนวคิดนี้
แสดงความยินดีที่คุณพบคำ มันจะผ่านไปและย้ำ T-U-R,
แล้วบอกว่าน่ากลัวผมพบว่ามัน!
มันจะต้องเป็นคำว่า
แต่จริงๆไม่ได้
เราต้องการทั้งทัวริงที่จะเป็นคำ
ดังนั้นเราจึงต้องมีบางสิ่งบางอย่างที่ ในตอนท้ายว่าขอแสดงความยินดี
คุณจะพบว่าคำที่ถูกต้อง
ผู้ชม: ดังนั้นถ้าคุณมีเหมือนกัน 26 ตัวอักษรในตัวอักษร,
คุณจะมีจริง 27 คีย์ในลองของคุณหรือไม่
>> HANNAH: น่ากลัวใช่
ที่จริงผมคิดว่า จะอยู่ในภาพนิ่งถัดไป
ตาดา!
ซึ่งถ้าคุณมี โหนดในลองของคุณคุณ
จะมีเด็ก 27 แทน 26
คำถามใด ๆ กับที่?
ใช่?
ผู้ชม: ทำไมพยายามใช้เวลาเพื่อให้ พื้นที่มาก [ไม่ได้ยิน] ตามที่คุณไป?
เพราะเหตุใดจึงถือว่าเป็น [ไม่ได้ยิน]
HANNAH: แน่นอน
ลองกลับไป
คำถามคือทำไม มีความพยายามอย่างมากที่ใหญ่กว่า
กว่าสิ่งที่ต้องการตารางแฮช
ดังนั้นสำหรับแต่ละระดับเหล่านี้ แม้ว่าพวกเขาจะไม่ได้วาดที่นี่
คุณจะต้องมีทั้งหมด 26 ตัว
และเหตุผลที่คุณไม่สามารถ บอกว่าโอ้ แต่ชอบทัวริงสำหรับผม
ไม่จำเป็นต้องมีการใด ๆ ของผู้ สิ่งที่เหมือนกันในระดับของ U. ดี
ถ้าคุณก็ต้องการที่จะเพิ่ม บางสิ่งบางอย่างที่เป็นเช่น T-H,
คุณจะต้องมี ความสามารถในการเพิ่มคำว่า
ดังนั้นสำหรับทุกตัวอักษรเดียว คุณกำลังจะมี
ที่จะมีพวงของ อาร์เรย์มาออกจากมัน
ดังนั้นคุณจะเห็นว่ามันจะได้รับ ใหญ่จริงๆอย่างรวดเร็วจริงๆ
คำถามใด ๆ ที่อื่น ๆ ?
สิทธิ์ทั้งหมด
ใช่?
>> ผู้ชม: เมื่อมีความพยายาม เร็วกว่าตารางแฮช?
>> HANNAH: เมื่อมีความพยายาม เร็วกว่าตารางแฮช?
ดังนั้นถ้าคุณมีจริงๆ ฟังก์ชันแฮชที่ไม่ดี
ดังนั้นสมมติว่าผมชอบ นี่คือฟังก์ชันแฮชของคุณ
ว่าสิ่งที่ไม่มีคำว่า คุณให้ฉันฉันเสมอ
ไปใส่ไว้ในรายการอาร์เรย์ 0
และเพื่อให้เราจบลงด้วยเพียงแค่ใส่ ทุกอย่างในหนึ่งรายการใหญ่ที่เชื่อมโยงยาว
และเพื่อให้เวลาค้นหาจะใช้เวลาที่เลวร้ายที่สุด n ถ้ามันจะอยู่ที่ปลายสุดของรายการของเรา
ด้วยความพยายามที่เราเพียงแค่ต้องย้ำ ผ่านตัวอักษรในคำว่า
ดังนั้นแม้ว่าเราได้เพิ่มพวง คำอื่น ๆ ที่จะลองของเรา
มันจะไม่พาเราได้อีกต่อไป ที่จะค้นหาคำโดยเฉพาะอย่างยิ่ง
>> ทั้งหมดที่เราต้องทำคือสำหรับ ตัวอย่างเช่นในกรณีนี้
สมมุติว่าเรากำลังมองหาซูม เราก็จะต้องย้ำกว่า
Z-O-O-M สี่ตัวอักษร
เพื่อให้เป็นเพียงแค่ ความยาวของคำซูม
มันไม่สำคัญว่าหลาย คำอื่น ๆ ที่เราใส่ในความพยายามนี้
เรามักจะได้รับมัน ในบรรดาสี่ขั้นตอน
น่ากลัว
ใช่?
>> ผู้ชม: ดังนั้น [ไม่ได้ยิน] เป็นอาเรย์ใช่มั้ย?
>> HANNAH: MM-HM
ผู้ชม: หากคุณ มองหา [ไม่ได้ยิน]
คุณจะต้องไปผ่าน อาร์เรย์ของคุณเพื่อหา [ไม่ได้ยิน]
HANNAH: แน่นอน
ผู้ชม: ไม่ว่าจะใช้เวลามากขึ้น?
HANNAH: ถ้าผมจะไป บอกว่าอาเรย์ของฉันอยู่เสมอ
จะเป็น A, B, C, D, E, F, G, blah blah blah,
ดังนั้นถ้าฉันมักจะรู้ว่ามันเป็น ในการสั่งซื้อที่แน่นอนเดียวกัน
ถ้าฉันมักจะรู้ว่ามันเป็น ตามลำดับตัวอักษร
ฉันเพียงแค่สามารถพูด O คือจำนวน ดังนั้นจึงในตัวอักษร
เพียงแค่ข้ามไปยังสถานที่ที่
เพราะจำได้ว่ามี อาร์เรย์เราสามารถเข้าถึง
องค์ประกอบใด ๆ ของอาร์เรย์ว่าในอย่างต่อเนื่อง เวลาถ้าเรารู้ว่าเรากำลังมองหา
ใช่?
>> ผู้ชม: เมื่อก่อนหน้านี้ เลื่อน [ไม่ได้ยิน] 27
แต่สำหรับ 26 คนแรก
>> HANNAH: ขออภัย?
>> ผู้ชม: ไม่ได้เป็นครั้งแรก หนึ่ง 0 ดังนั้นมันจะไม่ 26?
>> HANNAH: แน่นอนดังนั้นเมื่อเราบอกว่า 27 ที่ จะให้เราดัชนี 0 ถึง 26
แต่ถ้าคุณจริงนับ ออกเหล่านั้นก็จะเป็น 27
คำถามที่ดี
อะไรอีกหรือไม่
ใช่?
>> ผู้ชม: ดังนั้นพยายาม ช้ากว่าตารางแฮช?
>> HANNAH: พยายามจะไปได้ใน ทฤษฎีเร็วกว่าตารางแฮช
แต่ใช้หน่วยความจำมากขึ้น
ใช่?
ผู้ชม: [ไม่ได้ยิน]
>> HANNAH: ฉันขอโทษฉันไม่ได้ยินคุณ
ผู้ชม: [ไม่ได้ยิน]
0-25 จะช่วยให้คุณ 26
>> HANNAH: 0-25 จะ ให้คุณ 26 ขวา
>> ผู้ชม: แล้ว [ไม่ได้ยิน]
HANNAH: ขวา
ดังนั้นตัวเลขที่เรากำลังระบุเป็น จำนวนของสิ่งที่อยู่ในอาเรย์ของเรา
ดังนั้นหากเรามี 27 ก็ จะให้เรา 0
ผ่าน 26 ซึ่งจะให้ ห้องพักเราสำหรับในกรณีนี้
ผมไม่ได้รวมทั้งเครื่องหมายวรรคตอน
ดังนั้นเราจึงได้รับ 0 ถึง 25 มี ครั้งแรก 26 ตัวอักษรของตัวอักษร
หรือทั้งหมด 26 ตัวอักษรของตัวอักษร
และแล้วที่ผ่านมา สิ่งที่รายการที่ 26 เป็น
จะเป็นการตรวจสอบ เครื่องหมายหรือเดลต้า
อะไรอีกหรือไม่
น่ากลัว
สูญเสียพื้นที่ของฉัน
ตกลงเย็น
>> ดังนั้นเราได้สัมผัสนี้
แต่การปิดขนาดใหญ่ ระหว่างพยายามและตารางแฮช
คือพยายามให้ใน ทฤษฎีคงมองขึ้น
ครั้ง แต่ใช้เป็นจำนวนมากทั้งของหน่วยความจำ
สิทธิทั้งหมดตอนนี้เรามีเล็กน้อย โครงสร้างที่มีความซับซ้อนน้อยลง
และเราจะทำได้ด้วยซี และเราจะย้ายไปทางขวาพร้อม
>> ดังนั้นกองเราเห็นนี้ ในการบรรยายที่คุณ
มีบางอย่างเช่น สแต็คของถาดที่
สิ่งสุดท้ายที่คุณใส่ ในกองเป็นไป
จะเป็นสิ่งแรกที่คุณจะออก
นั่นคือสิ่งที่จริงๆกำหนดสแต็ค นั่นคือสิ่งสุดท้ายที่คุณใส่ใน
จะไปเป็นคนแรก สิ่งที่คุณจะออก
และคำศัพท์ที่เราใช้ ถ้าเราจะใส่บางสิ่งบางอย่าง
ถ้าเราจะเพิ่มสิ่งที่ สแต็คของเราที่เราเรียกว่าการผลักดัน
และถ้าเรานำสิ่งที่ ปิดเราเรียกว่า popping
และถ้าเรากำลังจะไป ใช้สแต็คเรา
จะต้องมีการตรวจสอบเพื่อให้การติดตามของ ทั้งขนาดและความจุ
ดังนั้นจำนวนรวมขององค์ประกอบที่เราสามารถทำได้ ถือและปัจจุบันจำนวนขององค์ประกอบ
ที่เราจะถือ
>> และคล้ายกันมากเรามีคิว
และความแตกต่างเท่านั้น คือแทนที่จะกับกอง,
เรากล่าวว่าสิ่งสุดท้ายที่เราวางบน เป็นสิ่งแรกที่เราจะออก
ดังนั้นด้วยคิว สิ่งแรกที่เราใส่ใน
เป็นไปได้ สิ่งแรกที่เราจะออกจาก
ดังนั้นนี่คือเช่นถ้าคุณอยู่ จริงแถวที่ร้าน
และคุณกำลังถูกช่วย แล้วคนแรกในสาย
ควรจะเป็นคนแรกที่จะได้รับความช่วยเหลือ
เพื่อที่จะเป็นคิว
>> ดังนั้นเราจึงจำเป็นที่จะติดตาม ขนาดความจุและหัวตั้งแต่เรา
จะใช้เวลาทุกคนออกด้านหน้า ของรายการแทนกลับ
คำถามในที่?
คำถามใด ๆ C ที่ได้รับการรบกวนคุณ?
โครงสร้างข้อมูลใด ๆ ที่สิ่งที่สนุก?
สงวนเย็น
ดังนั้นฉันจะส่งมันไปอลิสันที่จะ กระโดดลงไปในการเขียนโปรแกรมบางอย่างมากขึ้น
>> ALISON: โอ้เราจะเห็น
เราจะเห็นวิธีที่ดีที่ผมทำที่นี่
ตกลงผมจะพยายามและบิน ผ่านสิ่งนี้พวก
ฮันนาห์ไปมากในการ เชิงลึกเกี่ยวกับสิ่งที่เธอทั้งหมด
ฉันจะพยายามที่จะให้ ภาพรวมการระเบิดอย่างรวดเร็ว
เพื่อที่เราจะได้รับ Davin กับทุก สนุก JavaScript และสิ่งที่การรักษาความปลอดภัย
ว่าบางทีคุณจริง ต้องการที่จะได้ยินเพิ่มเติมเกี่ยวกับ
>> ตกลงเป็นฮันนาห์กล่าวว่าถ้า คุณมีคำถามใด ๆ
ฉันจะเร็วเกินไปโปรดแจ้งให้เราทราบ
ผมจะตอบคำถามเท่าที่จำเป็น
ดังนั้นการเริ่มต้นที่เรากำลังจะเริ่มต้นด้วย อาจจะเป็นหนึ่งในสิ่งแรกมาก
คุณได้เรียนรู้กับเว็บ การเขียนโปรแกรมสิทธิ์
chmod ดังนั้นพวกคุณควรจะได้รับ ปริญญาโทที่นี้กับทุกเว็บ
การเขียนโปรแกรมที่คุณได้ ได้ทำเมื่อเร็ว ๆ นี้
มันเป็นพื้นเพียงแค่คำสั่ง ที่มีการเปลี่ยนแปลงสิทธิ์
หรือสิทธิ์การเข้าถึง ของวัตถุระบบไฟล์ของเรา
แน่นอนจริง เห็นเหล่านี้ถ้าคุณ
มีปัญหากับเหล่านี้ ชุดในช่วงปัญหาของคุณ
คุณอาจได้ใช้คำสั่ง ls -l ซึ่งเป็นเวลานาน ที่จะได้รับชนิดของมุมมองเช่นนี้
ที่คุณเห็นจริงทั้งหมด สิทธิ์ของแฟ้ม
>> และจริงๆเราก็จะไป ผ่านสวยได้อย่างรวดเร็วเพียงแค่สวย
มากว่าแต่ละเหล่านี้หมายถึง
ดังนั้นเราจึงได้ D ด้านขวาที่นี่ซึ่ง เพียงแค่ยืนไดเรกทอรี
เห็นได้ชัดว่าที่นี่เราเห็น rwx ซึ่ง คืออ่านเขียนได้และปฏิบัติการ
เหล่านี้อาจจะมีการแสดงเป็นบิต ซึ่งเราจะได้รับในในหน้าถัดไป
ดังนั้นสามที่เราเห็นแต่ละ ที่นี่จึงเป็นสาม triads
เราได้ rwx วิจัยอะไร x และ R ไม่มีอะไร x สำหรับไฟล์แรกนี้
มันนี้โครงสร้างทั่วไป
>> ดังนั้นเราจึงมีไดเรกทอรีบาง
ขณะนี้มีกลุ่มผู้ใช้บางส่วน ที่มีสิทธิ์เหล่านี้
บางกลุ่มที่มีสิทธิ์เหล่านี้ และโลกที่มีสิทธิ์
คุณสามารถคิดว่าเหล่านี้เป็นสาม
คุณสามารถคิดว่าเหล่านี้เป็นสามบิต
ดังนั้นพวกเขาจึงสามารถเก็บค่า ใดก็ได้จาก 0 ขึ้น
7 ซึ่งเป็นเหตุผลที่บางครั้ง เรามีคุณทำ chmod
600 แทน RW chmod สิ่งที่
เราจะได้รับในตัวอย่างที่มี
แต่โดยทั่วไปคุณสามารถคิด ของเหล่านี้เป็นอย่างใดอย่างหนึ่งเพียง rwx,
หรือคุณสามารถคิดว่าพวกเขาเป็นบางส่วน จำนวนหนึ่งที่นี่เป็นครั้งแรกที่นี่
แสดงให้เห็นถึงตัวเลขระหว่าง 0 และ 7 นี้สอง
แสดงให้เห็นถึงตัวเลขระหว่าง 0 และ 7 และคนที่สามหนึ่ง
แสดงให้เห็นถึงตัวเลขระหว่าง 0 และ 7, OK?
>> R มีค่า 4. W มีค่าเป็น 2 และ x
มีค่าเป็น 1 ซึ่งเป็นเหตุผลนี้ ที่นี่ได้รับอนุญาตจะถูก chmod 700
เพราะในกรณีนี้ที่นี่ก็บอกว่าเรา ได้บิตแรกที่มีการพลิกบน
ดังนั้นเราจึงมี 4 สำหรับการอ่าน
บิตที่สองคือการพลิกสำหรับ W, ซึ่งเป็น 2 ดังนั้นตอนนี้เรามี 6
และบิตที่สามจะพลิกบน สำหรับ x ซึ่งเป็น 1 ดังนั้นเราจึงได้รับเจ็ด
และแน่นอนว่ากลุ่มของเรา และโลกของเราแต่ละ 0
ดังนั้นนี่คือยัง เทียบเท่า chmod 700
และแน่นอนผมจะพยายามที่จะ เข้าใจการทำแผนที่ระหว่างผู้
ผมไม่แน่ใจว่าถ้ามันมี ขึ้นมาในแบบทดสอบก่อน
แต่มันจะ คำถามที่ฉันอาจจะถาม
>> เพียงแค่นิด ๆ หน่อย ๆ ไปแม้กระทั่ง ต่อไปใน chmod ที่นี่ที่นี่
เป็นทั่วไปมาก โครงสร้างของสาย chmod
ดังนั้นแน่นอนเราได้ chmod ที่นี่
อ้างอิงสิ่งที่นี้หมายถึงคือ ที่พวกเราจะได้ให้สิทธิ์เหล่านี้ไป
หรือผู้ที่เราจะพาเหล่านี้ สิทธิ์ห่างจาก
ดังนั้นเราจึงมีที่นี่ในสิทธิ์ เหมือนอย่างที่เราได้กำหนดให้คุณ chmod บวก x,
ในขณะที่เราจะได้เห็นเร็ว ๆ นี้
ก็หมายความว่าให้เฉพาะเหล่านี้ สิทธิ์ให้กับทุกคน
ให้พวกเขาทั้งหมด
เพื่อให้คุณสามารถเป็นอย่างดีมียูบวก x หรือกรัมบวก x หรือ o บวก x หรือหลาย
ของมัน
เพื่อให้ส่วนแรกอยู่เสมอ จะเป็นข้อมูลอ้างอิง
ใครที่เราจะให้สิทธิ์เหล่านี้ไป หรือผู้ที่เราพาพวกเขาออกไปจาก?
>> คนที่สองเป็นผู้ดำเนินการ
ดังนั้นพวกคุณได้กระทำส่วนใหญ่บวก
นี้จะช่วยให้สิทธิ์ในการ ใครก็ตามที่คุณกำลังให้พวกเขา
ในขณะที่ลบเหตุผลขจัดพวกเขา
ไม่มีอะไรที่น่ากลัวเกินไปดังนั้นมี
และแล้วโหมดคือสิ่งที่เราได้พูดคุยเกี่ยวกับ ด้วยการอ่านการเขียนหรือการดำเนินการ
ดังนั้นบวก x หมายถึงให้ปฏิบัติการ สิทธิ์ให้กับทุกคน
และแล้วแน่นอนที่ แฟ้มที่เฉพาะเจาะจงหรือไดเรกทอรี
OK?
ทุกคนที่ดีกับ chmod?
ไม่ได้เลวร้ายเกินไป?
>> ตกลงดังนั้น HTML ใด ๆ ของคุณเป็น อายุมากพอที่ to-- อายุ MySpace?
ผมส่งเรื่องนี้ไปยังส่วนของฉัน และตัวอักษรครึ่งคน
มองมาที่ฉันเหมือนฉันเป็นคนบ้า
และผมก็ชอบครับ เราไม่ได้ว่าเก่า
มา
ดังนั้น Hypertext Markup Language, ก็ตรงไปตรงมาเพียงวิธีสำหรับคุณ
เพื่อแสดงสิ่งบางอย่างบนเว็บ
ดังนั้นจึงเป็นภาษามาร์กอัป
มันไม่ใช่ภาษาสคริปต์
มีตรรกะในนั้นไม่ได้
มันเป็นเพียงการเปลี่ยนแปลง บางสิ่งบางอย่างวิธีที่จะแสดง
ตกลงดังนั้นที่สำคัญ ความแตกต่างที่จะทำให้
ก็ถือว่าเป็นภาษามาร์กอัป ไม่ใช่ภาษาสคริปต์
>> ดังนั้นที่นี่เรามีแท็กของเรา
บนสไลด์นี้อาจจะเป็นส่วนใหญ่ของ คนที่คุณควรจะคุ้นเคยกับ
และมีความสะดวกสบายมากกับ
ดังนั้นเห็นได้ชัดว่าเรามี แท็กของเราซึ่ง
กำหนดทุกอย่างที่อยู่ใน ระหว่างสองคนนี้จะเป็น HTML
เรามีการเชื่อมโยงบางอย่างที่ เห็นได้ชัดที่จะทำให้คุณ
เชื่อมโยงไปยังหน้าเว็บภายนอก
ชื่อบางคนที่อยู่ในหัวของเราที่นี่
และเรามีร่างกายของเราด้วย h1 ซึ่งเป็นส่วนหัว
ดังนั้นมันจะทำให้มันมีความสุข และเป็นตัวหนาและใหญ่
และแล้วเรามีบาง p, ซึ่งเป็นวรรค
คุณอาจจะรู้ว่า และมีความคุ้นเคยกับสิ่งที่
เช่นเดียวกับวิธีการที่คุณแทรกรูปภาพเป็น มีผู้ใดเรียนส่วนหัวอื่น ๆ ?
แน่นอนผมจะเป็น สะดวกสบายกับ div
ดังนั้นเหล่านี้มีส่วนใหญ่ของแท็ก ที่คุณควรจะคุ้นเคยกับ
แต่แน่นอนเช่นเดียวกับทุกอย่างใน CS 50 รายการไม่ครบถ้วนสมบูรณ์
เพื่อให้แน่ใจว่าคุณแปรงขึ้นบนที่
>> CSS, CSS ดังนั้นถ้าใด ๆ ของคุณดู การสัมมนาของฉันจากสองสัปดาห์ที่ผ่านมา
เป็นจริงเพียงวิธี สไตล์หน้าเว็บของคุณ?
ตกลงดังนั้นเราจึงมีภาษามาร์กอัปบาง
HTML, ที่ดูแลเพียงข้อความ และสถานที่ที่มันอาจจะอยู่บนหน้า
แต่ CSS เป็นจริงๆสิ่งที่ทำให้มันสวย
คุณสามารถมีเหล่านี้ใน HTML ของคุณ ไฟล์ แต่ที่เราจะพูดถึงในภายหลัง
ผมค่อนข้างมั่นใจว่ามันอาจจะ เป็นภาพนิ่งถัดไปก็
เป็นเรื่องธรรมดาและจริง การปฏิบัติที่เราจริงๆให้กำลังใจ
สำหรับคุณที่จะให้พวกเขาแยกออกจากกันเมื่อเรา พูดคุยเกี่ยวกับ MVC และกระบวนทัศน์ทั้งหมด
นั่นคือสิ่งที่ฟีดนี้ลง
>> ดังนั้น CSS เป็นเพียงวิธีการ ทำให้สิ่งที่ดูสวย
สิ่งที่นี่เช่น ร่างกายและ #title และ .info,
เหล่านี้เรียกว่าเตอร์และสิ่งที่ ที่พวกเขาทำคือการที่พวกเขาเลือกสิ่งที่เฉพาะเจาะจง
ภายในไฟล์ HTML ของคุณ และใช้สิ่งที่สไตล์
สิ่งที่จัดเรียงของสิ่งที่คุณต้องการ เพื่อว่าองค์ประกอบที่เฉพาะเจาะจงของเว็บของคุณ
หน้า
ดังนั้นที่นี่เรามี สีพื้นหลังและสี
และครอบครัวของตัวอักษรที่เป็น นำไปใช้กับสิ่งที่อยู่ในร่างกาย
ดังนั้นถ้าเรามองกลับมาที่นี่ก็ จะไม่นำไปใช้กับชื่อ
มันจะนำไปใช้กับสิ่งที่เป็น ในร่างกายเตอร์เหล่านี้ OK?
>> ด้วยชื่อที่นี่นี้เป็น จะเป็นสิ่งเดียวกัน
สีของข้อความ เป็นสีฟ้าเป็นเพียงจะ
ที่จะส่งผลกระทบต่อสิ่งที่อยู่ใน เตอร์ชื่อ
เช่นเดียวกับข้อมูลที่นี่ ข้อความจะเป็นสีชมพู
ข้อมูลใด ๆ ก็ตามซึ่งเป็นสิทธิที่นี่
ดังนั้นสิ่งเดียวที่ จะเป็นสีชมพูในหน้านี้
เป็นวันจันทร์ 17 พฤศจิกายน, 2014
ตกลงดังนั้น CSS เป็นเพียงวิธีการ มีการควบคุมมาก over-- ใช่?
>> ผู้ชม: ทำไมคุณมี ที่จะใช้กัญชาที่มีชื่อ?
>> HANNAH: สไลด์ถัดไปสัญญา!
เราจะได้รับมี
ดังนั้นนี่คือเหตุผลที่เราต้องใช้กัญชา
เตอร์เพื่อใช้ในหลักสาม รูปแบบที่เราพูดคุยกับพวกคุณเกี่ยวกับ
ฉัน fyou ต้องการที่จะเรียนรู้เพิ่มเติม มีมากมายออกมี
มีเอกสาร CSS ที่ดีคือ
มีชื่อแท็กซึ่งมีจะทำ มีเพียงแท็กปกติของคุณในรูปแบบ HTML
ดังนั้น h1, p, div, H2, ทุกประเภทของสิ่งเหล่านั้น
และเราก็สามารถตั้งชื่อผู้ที่เป็น
ดังนั้นที่เราเห็นที่นี่ด้วย ร่างกายก็แท็กปกติ
ดังนั้นเราก็สามารถทำให้ร่างกายเมื่อ เรากำลังพูดถึงในไฟล์ CSS ของเรา
>> ด้วยชื่อเหตุผลทั้งหมดที่เรา มีกัญชานี้คือเรามีสิ่งที่เป็น
พิจารณา ID
ดังนั้น ID ควรจะเป็น ที่ไม่ซ้ำกันภายในเพจ HTML ของคุณ
เพื่อที่ว่าเมื่อคุณอยู่ หมายถึงว่ามันคุณ
รู้ว่าคุณเพียงหมาย สิ่งหนึ่งที่เฉพาะเจาะจง
ดังนั้นในกรณีนี้ที่นี่กับเรา h1 นี่ CS 50 เซสชั่นการตรวจสอบ
เรามี id ของชื่อ
ดังนั้นเพื่อที่จะเพียงแค่หมายถึงว่า ชิ้นส่วนของ HTM​​L ของเราที่เราทำชื่อกัญชา
เพียงแค่การประชุมหมายเลขที่กำหนด กับกัญชาในด้านหน้าของพวกเขา
ในทำนองเดียวกับที่เราเห็น ข้อมูลที่นี่เป็นชั้น
และชั้นให้กับ CSS เป็น กำหนดให้เป็นชั้นจุด
หรือจุดสิ่งที่ชั้นเป็น
ดังนั้นในกรณีนี้ที่นี่ก็เป็นข้อมูล
>> ดังนั้นผมจึงเอามันกลับมา
ทั้งสองคนนี้จะเป็น สีชมพูสำหรับ CSS ของเราที่นี่
เพราะพวกเขาทั้งสองมีระดับชั้นของข้อมูล
และในไฟล์ CSS ของเราเราได้กำหนด อะไรที่กับชั้นของข้อมูล
จะต้องเป็นสีชมพู
ไม่ว่าทำให้รู้สึก?
ใช่?
>> ผู้ชม: ถ้าคุณจะทำให้ ทุกอย่างในสีขาวร่างกาย
และจากนั้นคุณพยายามที่จะทำให้ สิ่งที่อยู่ข้างในสีฟ้า
จะที่ทำให้เกิดปัญหา?
>> HANNAH: ดังนั้น CSS เป็น cascading แผ่นสไตล์
ดังนั้นอะไรที่เป็นไปทาง ด้านล่างจะมีความสำคัญ
ดังนั้นถ้าคุณทำอะไรกับร่างกาย และคุณทำให้ทุกอย่างเป็นสีขาว
และต่อมาในวันที่คุณเปลี่ยนชื่อ หรือคุณเปลี่ยนข้อความที่อยู่ภายในร่างกาย
มันเขียนทับที่
ดังนั้นอะไรที่มีต่อ ด้านล่างจะมีความสำคัญ
ใช่?
>> ผู้ชม: และรหัสจะไม่ซ้ำกัน แต่เรียนได้มากขึ้น?
HANNAH: ขวา
รหัสดังนั้นควรจะไม่ซ้ำกันและชั้นเรียนสามารถ อ้างถึงหลายสิ่งหลายอย่างเท่าที่คุณต้องการ
คำถามใด ๆ ที่อื่น ๆ ?
ใช่
>> ผู้ชม: [ไม่ได้ยิน]
ฉันสงสัยว่า ที่ทำให้แตกต่าง
HANNAH: ฉันขอโทษ สิ่งที่เป็นคำถาม?
ผู้ชม: มีขนาดเล็กเป็น "F" และทุน "เอฟ"
HANNAH: ดังนั้นความแตกต่าง ระหว่างขนาดเล็ก "F" และทุน "F"
ไม่ควรสร้างความแตกต่าง
ดังนั้น "F" จะเป็น 15 ทางใดทางหนึ่ง
เย็นอะไรอีกหรือไม่
ทุกคนที่ดี, CSS?
ใช่?
>> ผู้ชม: ขออภัย
คุณสามารถมีชั้นเรียนและ ID?
>> HANNAH: ใช่คุณสามารถ
สิ่งที่สามารถมีทั้งการเรียนและ ID
และผมขอแนะนำ การทดสอบเหล่านี้ด้วยตัวคุณเอง
CSS คุณจะได้เรียนรู้ที่ดีที่สุดเพียงแค่การทำ บางสิ่งบางอย่างหน้าเว็บที่ง่ายมาก
การวาดภาพขึ้นบาง CSS และเพียงแค่ เห็นว่าพวกเขามีปฏิสัมพันธ์
และคุณจะได้รับสิ่งที่ดีมาก ความรู้สึกที่ใช้งานง่ายสำหรับวิธีการทำงาน
>> ตกลงทุกคนที่ดีกับ CSS?
คุณกำลังจะทำ เว็บไซต์ที่สวยงามด้วย CSS ในขณะนี้
ตกลงปฏิบัติที่ดีที่สุดเพียง สิ่งที่จะต้องเก็บไว้ในใจสิ่งที่
that-- นี้คือเหตุผลที่เราท่าเรือ คุณสำหรับนักออกแบบและ whatnot
ดังนั้นปิดแท็กของคุณ
ดังนั้นถ้าคุณมีร่างกายที่เปิด ควรจะมีร่างกายใกล้
หากคุณมีวรรคเปิด ควรจะมีวรรคใกล้
ตรวจสอบเพื่อดูตรวจสอบหน้าเว็บของคุณ
พวกคุณควรจะคุ้นเคยมาก กับเรื่องนี้จาก P-ตั้งเจ็ด
กับ CS 50 การเงิน กับตัวตรวจสอบ W3
และในขณะที่ผมกล่าวก่อน หนึ่งในกรอบความคิดที่ยิ่งใหญ่ของเรา
จะแยกสไตล์ของคุณด้วย CSS จากมาร์กอัปของคุณซึ่งเป็น HTML
และแล้วแน่นอนเรามี นี้ XKCD ที่ดีลงที่นี่
ยายการ์ตูนโล่งอก!
>> ตกลง TCP / IP
ระหว่างเหล่านี้และ HTTP, โดยทั่วไปพวกเขากำลังโปรโตคอลทั้งสอง
ดังนั้นคุณก็สามารถคิด พวกเขาเป็นชุดของกฎ
ที่ควบคุมว่าสิ่งที่ ย้ายผ่านทางอินเทอร์เน็ต
ดังนั้นการควบคุมการส่ง โปรโตคอลหรือโปรโตคอลอินเทอร์เน็ต
เป็นเพียงวิธีการเพื่อให้แน่ใจว่า ที่ได้รับข้อมูลที่มันจะ
และที่เราทราบว่า เรากำลังข้อมูลที่เคยหายไป
ดังนั้นถ้าพวกคุณคิดว่ากลับไปบรรยาย สองสามสัปดาห์ที่ผ่านมากับเดวิด
ที่เรามีสี่ซองจดหมายที่พวกเขา ถูกเลขทั้งหมดเช่นหนึ่งในสี่
สองในสี่สามสี่สี่ สี่นี้เป็นเพียงชุดของกฎ
เรากล่าวว่าตกลงเมื่อใดก็ตามที่เรา ส่งมากกว่าหนึ่งแพ็คเก็ต
เราจะไปบ้านเลขที่ กับสิ่งที่จำนวนเป็น
และวิธีการหลายที่รวม ผู้ใช้ควรจะได้รับ
>> และนี่เป็นเพียงการบอกใครก็ตาม ได้รับข้อมูลว่าพวกเขา
มีอากาศหรือถ้าทุกอย่าง บางสิ่งบางอย่างได้หายไปพร้อมกัน
และพวกเขาต้องการที่จะขออีกครั้ง
นี้เป็นจริงเพียงแค่ชุดของกฎ
นั่นเป็นวิธีที่คุณสามารถคิดของมัน OK?
และยังจะระบุพอร์ตซึ่ง พวกคุณ can-- ฉันรู้ว่าในระหว่างการบรรยาย
พวกเขามีรายชื่อทั้งหมดของพอร์ต
แต่เราไม่ได้มีพวกเขาที่นี่ในขณะนี้
>> ทาง hypertext transfer protocol ดังนั้น เป็นอีกครั้งก็เป็นโปรโตคอลอื่น
ดังนั้นจึงเป็นชุดของกฎอื่น ที่ควบคุมในกรณีนี้
วิธีไฮเปอร์เท็กซ์จะถูกโอน
ดังนั้นมันก็ช่วยให้เบราว์เซอร์ เพื่อพูดคุยกับเว็บเซิร์ฟเวอร์
และในขณะที่เราบอกว่าที่นี่มันเป็น เช่นการจับมือกันของมนุษย์
มันเป็นเพียงวิธีการที่จะควบคุม วิธีเว็บเซิร์ฟเวอร์เป็น
จะมีปฏิสัมพันธ์กับเบราว์เซอร์ของคุณ
และเรามีเพียงไม่กี่ตัวอย่าง
เรามีการร้องขอบางอย่างที่นี่ ที่ได้รับคือวิธีการ
เรามี HTTP 1.1 ซึ่งเป็น รุ่นโปรโตคอลสำหรับเรา
แล้วโฮสต์ซึ่งเป็นสิ่งที่ เรากำลังจริงพยายามที่จะเข้าถึง
แล้วที่คุณเห็นที่นี่เรา ได้รับการตอบสนองกับ 200 นี้บาง
ตกลงเป็นรหัสของเราตอบสนอง HTTP
เรามีรายการใหญ่ผมจะ ที่จะดึงขึ้นในหนึ่งวินาที
ที่พวกคุณควรจะคุ้นเคยกับ
และเรามีชนิดเนื้อหานี้ text / html, ซึ่งก็บอกว่าสิ่งที่ประเภทของข้อมูล
ที่เราได้รับจากเซิร์ฟเวอร์, OK?
โฮสต์นี้และประเภทเนื้อหานี้ เป็นส่วนหนึ่งของส่วนหัว HTTP
คุณสามารถมีน้อยหรือน้อยเท่า ที่จำเป็นสำหรับบริบทของสิ่งที่
คุณจัดการกับ
บางครั้งคุณจะมีจำนวนมาก ข้อมูลที่มาจากเซิร์ฟเวอร์ของคุณ
บางทีพวกเขากำลังขอมาก ข้อมูลจากผู้ใช้
มันแตกต่างกันไปขึ้นอยู่กับบริบท
ถ้าคุณดูที่ CS 50 การศึกษา มีมากขึ้นว่า
แต่เรามีจำนวนมากที่จะได้รับ ผ่านดังนั้นฉันจะ
จะไปขวาไปข้างหน้าถ้า ที่ตกลงกับพวกคุณ?
เย็น
ยึดมั่นใน
แน่นอนผมได้ว่า รายชื่อทั้งหมดเเล้ฮะ!
ผมไม่ทราบว่าทำไมถึงเป็น ทุกอย่างมากกว่าที่นี่
ฉันคิดว่าฉันอย่างแท้จริงย้าย ในขณะที่ผมเป็น sitting--
>> Davin: คุณต้องการที่จะสอนได้หรือไม่
หรือคุณต้องการให้ฉันไปสอนมันได้หรือไม่
>> ผู้ชม: ผมคิดว่าเราจะทำได้ เพียงแค่แสดงให้พวกเขาจะเริ่มต้นด้วย
ฉันหมายความว่าคุณสามารถไปยัง พวกเขาต่อไป แต่ฉัน
คิดว่ามันทำให้ความรู้สึกมากขึ้นตั้งแต่ฉัน เป็นเพียงการพูดคุยเกี่ยวกับสถานะ HTTP
ดังนั้นนี่คือรายชื่อทั้งหมด
ผมคิดว่าสิ่งที่จะเกิดขึ้นคือ Davin จะไปเป็นพวกเขาในภายหลัง
แต่มีรายชื่อทั้งหมด ตัวอย่างของรสชาติที่จะมา
ตกลงเรากำลังจะ blow-- นี้เป็นไป จะเป็นหลักสูตรความผิดพลาด PHP ที่ไม่เหมือนใคร
>> ดังนั้น PHP, preprocessor ​​ไฮเปอร์เท็กซ์ มันเป็น backronym recursive,
ซึ่งหมายความว่ามันเป็นชื่ออย่างอื่น
และพวกเขาก็เป็นเหมือนนี้ ไม่ทำให้รู้สึกจริงๆ
ดังนั้นพวกเขาเพียงแค่ชื่อพูดไป และมันก็เป็นคำย่อ,
ดังนั้นพวกเขาก็ทำให้มัน PHP preprocessor ​​Hypertext ซึ่ง
เพียงแค่ทำให้รู้สึกไม่
เรื่องสนุก
มันเป็นภาษาโปรแกรม
ดังนั้นเท่าที่ผมเน้นว่า HTML คือไม่ใช่ภาษาการเขียนโปรแกรม
มันเป็นภาษามาร์กอัป, PHP เป็นภาษาโปรแกรม
วิธีที่คุณรู้ว่านี่เป็น เนื่องจากมีตรรกะ
มีเงื่อนไขอยู่
เรามีตัวแปรในขณะที่เรา ไม่มีสิ่งเหล่านั้นในรูปแบบ HTML
>> สิทธิทั้งหมดแล้วเรามีเล็ก ๆ น้อย ๆ นี้ บิตที่นี่ที่ชอบรสชาติของ PHP
ดังนั้นพื้นฐานชื่อตัวแปร เริ่มต้นด้วยเครื่องหมายดอลลาร์
ผู้คนจำนวนมากเช่นนั้น
แจ้งเตือนของเงินให้กับเรา
มันยิ่งใหญ่ทั้งหมด
เราทุกคนต้องการ PHP
ดังนั้นเราจึงไม่ได้ระบุ ประเภทของตัวแปรอีกต่อไป
มันจะถูกกำหนดในเวลาทำงาน
ล่ามจะเป็นเหมือน โอ้เราก็จะวิ่งผ่าน,
และเป็นไปตามบริบท เราจะเห็นสิ่งที่ประเภทของประเภท
ตัวแปรเหล่านี้จะต้องมี
ไม่มีหน้าที่หลักคือ
สิ่งที่จะวิ่ง
พวกคุณกับการนำเข้าของคุณในของคุณ ล่าสุด P-ตั้งคุณจะแจ้งให้ทราบนี้
มีไม่ได้จริงๆฟังก์ชั่นหลัก
คุณเพียงแค่สิ่งที่เขียน คุณต้องการที่จะเกิดขึ้น
และมันก็เกิดขึ้นชนิดของ
นั่นคือ PHP สำหรับคุณ
>> อาร์เรย์จะคล้ายกันมาก
เรายังคงมีวงเล็บนี้
ที่นี่เรามีตัวแปรบาง เรียกว่า ARR และก็เท่ากับ
to-- เรามีของเราตามปกติ สัญกรณ์วงเล็บ
และเรามีค่าบางอย่างที่สำคัญ
และความแตกต่างใหญ่ ระหว่าง C และ PHP อาร์เรย์
คือการที่เราสามารถมี associate-- นี้ เราสามารถเชื่อมโยงค่ากับคีย์
ดังนั้นแทนที่จะเพียงแค่มี อาร์เรย์ที่มีการจัดทำดัชนี
จากจำนวนหรือตำแหน่ง ขององค์ประกอบในอาร์เรย์ที่
เราสามารถเชื่อมโยงกับที่สำคัญ
ที่เราสามารถพูดได้ว่าตกลงฉันต้องการสิ่งที่ ค่าที่เกี่ยวข้องกับผลไม้
และบางทีเรามีผลไม้ไปกล้วย
ดังนั้นจึงต้องการกลับกล้วยกับเรา
>> แต่โดยทั่วไปมากที่สุด สิ่งที่ทรงพลังเกี่ยวกับเรื่องนี้
คือว่าถ้าพวกคุณจำได้ การสาธิตจากการบรรยายที่เราโดยทั่วไป
rewrote สะกดใน PHP และมัน ค้นหา was-- ก็ชอบเพียง
ไม่สำคัญนี้อยู่?
ที่จริงชนิดของพลังของมัน
คุณไม่จำเป็นต้องย้ำ ผ่านแถวของคุณ
คุณไม่จำเป็นต้องรู้ สิ่งที่พื้นที่มันอยู่ใน
มันอาจจะเป็นที่สิ้นสุดหรือจุดเริ่มต้น
ตราบใดที่คุณรู้ว่าสำคัญ ที่เกี่ยวข้องกับค่า
PHP ก็สามารถคายค่าที่ ขวากลับออกไปที่คุณ OK?
>> และแล้วเราก็เป็นเพียงแค่ มีเพียงเพราะเรา
สามารถมีคู่ค่าที่สำคัญ ไม่ได้หมายความว่าคุณจะต้อง
คุณยังสามารถสร้าง อาร์เรย์ปกติเช่นที่นี่
ที่ด้านล่างที่มัน เพียงแค่หนึ่งสองสามสี่
เหล่านี้เป็นค่านิยมของเรา
และในความเป็นจริงของพวกเขาเป็นคีย์ดัชนี
ดังนั้นที่สำคัญสำหรับใครที่จะเป็นศูนย์
ที่สำคัญสำหรับทั้งสองจะเป็นหนึ่ง
ดังนั้นในวันและอื่น ๆ เว้นแต่ คุณได้กำหนดคีย์
คุณอาจจะคิดว่า เป็นเพียงค่าดัชนีของพวกเขา
ไม่ว่าทำให้ความรู้สึกที่ทุกคนหรือไม่
ไม่มีคำถาม?
น่ากลัว
>> ตกลง foreach เป็นวิธีที่จะ ย้ำผ่านอาร์เรย์ของคุณ
ดังนั้นเราจึงมีบางสิ่งบางอย่างที่นี่ เพียงแค่โครงสร้างทั่วไป
foreach ดังนั้นชื่อของ อาร์เรย์ของเราเป็นสิ่งที่
คุณต้องการที่จะโทรห​​ากัน องค์ประกอบในอาร์เรย์ของคุณ
และเราสามารถทำอะไรกับ ว่าองค์ประกอบหรือมีมูลค่าที่
ดังนั้นเราจึงมีตัวอย่างที่นี่
เรามีการเชื่อมโยง อาร์เรย์กับทั้งสองรายการ
กับบาร์ที่เกี่ยวข้องกับ foo และ qux ที่เกี่ยวข้องกับ baz
ดังนั้นคีย์ foo และ baz
ค่านิยมมีบาร์และ qux
foreach ดังนั้นเรามีอาร์เรย์ของเรา ที่นี่เป็นคู่ค่าคีย์
นี้ช่วยให้เราสามารถเข้าถึง ทั้งที่สำคัญและความคุ้มค่า
บางทีคุณอาจจะต้องการเพียงแค่ ค่าซึ่งในกรณีนี้
คุณก็สามารถทำเช่นเดียวกับปุ่มลูกศร เป็นค่า $ และจากนั้นคุณ
เป็นเพียงการเข้าถึงค่า ในขณะที่คุณย้ำผ่าน
แต่บางทีสำหรับบางคน เหตุผลที่คุณต้องการที่สำคัญ
ซึ่งเป็นเหตุผลที่ผมเลือก ตัวอย่างนี้แทน
จริงเพื่อให้คุณสามารถจัดการ คีย์และค่าในกรณีนี้
OK?
คำถาม?
>> ผู้ชม: ถ้าคุณต้องการที่จะ เพียงแค่จัดการที่สำคัญจะ
ที่คุณต้องทำ foreach--
>> ALISON: ขวา
ดังนั้นหากคุณต้องการที่จะ จัดการเพียงที่สำคัญ
คุณยังจะต้องนี้ ไวยากรณ์เพราะถ้าคุณเพียง
มี ARR เป็นบางสิ่งบางอย่าง เป็นสิ่งหนึ่งที่มันเป็น
จะถือว่าคุณต้องการ มูลค่าไม่สำคัญ
ดังนั้นถ้าคุณเคยเพียงแค่ต้องเช่นเดียวกับ ARR เป็นอาจจะเป็นเหมือนองค์ประกอบ $
มันจะคิดว่าคุณกำลังถาม เพียงค่าในแต่ละจุด
ถ้าคุณต้องการอย่างชัดเจน ทำอะไรกับคีย์
แม้ว่าคุณจะไม่ได้ไป ทำอะไรกับค่า
คุณต้องโครงสร้างนี้ ที่เรามีที่นี่
ที่คุณถามอย่างชัดเจน ทั้งที่สำคัญและความคุ้มค่า
คำถามที่ดี
อะไรอีกหรือไม่
เย็น
>> สงวน, PHP และ HTML
โอ้เราไม่กลับไปที่ P-ตั้งเจ็ดอีกครั้ง
ดังนั้นควรมีลักษณะเล็ก ๆ น้อย ๆ ที่คุ้นเคย
ดังนั้นนี่คือรูปแบบ HTML บางอย่างง่าย ที่มีชื่อเข้าของบางสวัสดี
และเราเห็นว่าเรามีวิธีการของเราแถม
และถ้าเราจำได้จาก P-ชุดของเรา เมื่อฟอร์มนี้ถูกส่ง
มันจะส่งอาเรย์ที่เรียกว่า $ _GET ที่มี ทั้งหมดของปัจจัยการผลิตเหล่านี้หรือตัวแปรจาก
รูปแบบที่ควรจะเป็น จัดการใน PHP ของเรา
ดังนั้นในกรณีนี้ผู้ใช้ จะใส่ในชื่อของพวกเขา
พวกเขาส่ง
และเราเห็นว่าเราได้รับอาเรย์บางอย่างที่นี่
เรามีอาร์เรย์แถมของเรา
และเราจะเข้าถึงชื่อ
>> ดังนั้นที่บอกว่าตกลงให้ฉัน ค่าที่เชื่อมโยงกับชื่อ
ชื่อเป็นกุญแจสำคัญที่นี่
และที่แผนที่โดยตรงกับสิ่งที่ เรากล่าวว่าใส่ชื่อของเราคือ
ดังนั้นนี่คือการให้คุณกุญแจสำคัญในสิ่งที่ เป็นไปได้ในอาร์เรย์ของคุณที่นี่
ไม่ว่าทำให้ความรู้สึกที่ทุกคนหรือไม่
ใช่?
>> ผู้ชม: ไม่ชื่อใน GET ดู กับสายสีม่วงใน [ไม่ได้ยิน]
>> ALISON: มันหมายถึงที่นี่
ดังนั้นฟิลด์นี้ที่นี่ มันหมายถึงชื่อนี้ที่นี่
ดังนั้นนี้จะได้รับการตั้งชื่อ เช่นหมายเลขโทรศัพท์หรืออะไรก็ตาม
ชื่อนี้จริงกล่าวว่าสิ่งที่ คุณกำลังเรียกข้อมูลนี้?
วิธีที่คุณจะไป อ้างถึงข้อมูลนี้?
และชื่อนี้เป็นจริงชอบเราไม่ บอกว่าข้อมูลนี้จะถูกเรียกชื่อ
นั่นเป็นวิธีที่เราจะเข้าถึงได้
>> ผู้ชม: ดังนั้นจึงต้องการ ใส่ชื่อเท่ากับบ๊อบ and--
>> ALISON: ใช่แล้วคุณ จะได้รับบ๊อบลงไปที่นั่น
อย่างแน่นอน
ทุกคนเย็น?
สิทธิทั้งหมดเพื่อให้ได้รับเมื่อเทียบกับ POST, เหล่านี้มีสองวิธีหลัก
ที่เราส่งผ่านข้อมูลในคำขอ HTTP
พวกคุณควรจะได้เห็น ทั้งสองคนนี้หวังว่า
ดังนั้นด้วยแถมข้อมูล จะถูกส่งผ่าน URL
ดังนั้นถ้าคุณเคยทำ Google ค้นหา, YouTube, คุณจะ
อาจจะสังเกตเห็นเครื่องหมายคำถามบางอย่าง
และแล้วทุกคำ ที่คุณเพียงแค่ใส่ในนั้น
และโพสต์ผ่านข้อมูล ในเนื้อหาของข้อความ HTTP
ดังนั้นไม่เหมือน GET, คุณก็ต้องพิจารณา ว่าข้อมูลที่ถูกซ่อนจากผู้ใช้
แต่สิ่งที่เป็นจริง สิ่งสำคัญที่จะเข้าใจ
ว่าขณะนี้ยังคงเป็น เช่นเดียวกับที่ไม่ปลอดภัยเช่น GET
การเปรียบเทียบผมชอบที่จะใช้คือถ้า คุณมีหมายเลขบัญชีธนาคารของคุณ
และคุณเขียนมันที่ด้านนอกของ ซองจดหมายที่ไม่ปลอดภัยสวย
ถ้าคุณจะเขียนมันในชิ้นส่วนของ กระดาษและใส่ไว้ในซองจดหมาย
ก็ยังคงไม่ปลอดภัยจริงๆเพราะ ทั้งหมดที่คุณต้องทำคือการเปิดขึ้นมา
และดูที่เนื้อหาที่เกิดขึ้นจริง ของข้อความที่จะเห็นว่า
ดังนั้นนี่คือ "ซ่อน" และคนชอบ คิดว่ามันเป็นที่เชื่อถือได้ แต่มันไม่จริง
และผมมั่นใจว่าจะ Davin ได้รับเป็นที่มากขึ้นอาจจะ
แต่มันเป็นสิ่งที่สำคัญ ความแตกต่างที่จะทำให้
และสิ่งที่ดีจริงๆที่จะเข้าใจ
>> ตกลง, SQL, โครงสร้างแบบสอบถามภาษา
ทุกสิ่งที่ เราได้เห็นเมื่อเร็ว ๆ นี้!
ดังนั้นจึงเป็นพื้นเพียงแค่การออกแบบ, อย่างเห็นได้ชัดสำหรับการจัดการข้อมูล
พวกคุณมีจำนวนมากประสบการณ์ที่มี นี้ในตารางของคุณกับ PHP MyAdmin
และมีสี่คำสั่งทั่วไป ที่เราต้องการพวกคุณจะรู้ว่า
ดังนั้นจึงมีการปรับปรุงแทรก เลือกและลบ
เพื่อให้แน่ใจว่าคุณรู้ว่าผู้ดีจริงๆ
เรากำลังจะไป ผ่านพวกเขาอย่างรวดเร็วจริงๆ
>> ดังนั้นการปรับปรุงจริงๆเป็นสิ่งที่ คุณอาจคิดว่ามันไม่
มันเป็นเพียงแค่การปรับปรุงข้อมูลในฐานข้อมูลของคุณ
ดังนั้นเราจึงมีตัวอย่างบางส่วนที่นี่
นี้เป็นทั่วไป โครงสร้างของแบบสอบถามการปรับปรุง
ดังนั้นเราจึงปรับปรุงตาราง ที่เรากำลังพูดถึง
และเราต้องการที่จะตั้งค่าบางอย่าง ค่านิยมบางคอลัมน์
เท่ากับค่าเฉพาะ
ดังนั้นเพียงแค่นี้การปรับปรุงตารางการเปลี่ยนแปลง ค่าในแถวทั้งหมดในกรณีนี้
ดังนั้นในการอย่างใดอย่างหนึ่งลงที่นี่ที่เกิดขึ้นจริง ตัวอย่างเช่นเรามีเสียใจ insert--
ภาพนิ่งที่สูง โดยไม่ต้องให้ผมทราบว่ามัน
>> ดังนั้นตารางการอัปเดตชุดนี้ col1 เท่ากับ เพื่อ VAL1 ที่บ้านเท่ากับ "คิวเรีย".
สิ่งนี้จะเป็น มันเปลี่ยนแปลงเท่านั้นก็เท่านั้น
ปรับปรุงค่าเหล่านี้ในสถานที่เฉพาะ
ดังนั้นในครั้งแรกนี้จะมีการเปลี่ยนแปลงเหล่านี้ ค่าสำหรับทุกอย่างในตารางของคุณ
OK?
มันจะเปลี่ยน คอลัมน์ทุกรายการเดียว
สำหรับทุกแถวเดียว
แต่ที่นี้คุณจะทำได้ คิดว่ามันเป็นรอบคัดเลือก
จึงเป็นเพียงจะเปลี่ยน ในสถานที่เฉพาะเจาะจงมาก
ดังนั้นใน P-ตั้งเจ็ดเมื่อคุณ อาจจะมีการปรับปรุงจำนวนเงินสด
ที่ผู้ใช้ของคุณมีคุณอาจมี บางที่ ID เท่ากับ ID เซสชั่นใช่มั้ย?
>> เพราะคุณไม่ต้องการที่จะ เปลี่ยนจำนวนของเงินสด
สำหรับทุกคนที่ ได้รับการใช้เว็บไซต์ของคุณ
คุณต้องการที่จะเปลี่ยนมันเป็นเวลาหนึ่ง เฉพาะบุคคลคนนั้นเป็น
ใครก็ตามที่ได้รับการใช้ในช่วงเวลานั้น
ใช่มั้ย?
OK เพื่อแทรกแทรก ค่าบางอย่างลงในตาราง
นี้เป็นเหมือนเมื่อคุณอยู่ การสร้างผู้ใช้ใหม่
โครงสร้างทั่วไปที่นี่ เป็นสิ่งที่ใส่ลงในตาราง
เรากำลังพูดถึง
ค่าเป็นค่าที่ เราจริงต้องการแทรก
ตกลงดังนั้นที่เราเห็นที่นี่เรา ได้ใส่ลงในตาราง
นี้เป็นคอลัมน์ที่เฉพาะเจาะจงกับ ค่าติดต่อของพวกเขา
ดังนั้นนี่พูดแทรก แถวใหม่ที่มี
ค่า VAL1 และ val2 ภายใต้ เหล่านี้คอลัมน์ที่เฉพาะเจาะจง
>> ดังนั้นบางทีคุณเพียงต้องการที่จะเติม ออกครึ่งสิ่งที่อยู่ในแถวนี้
นั่นคือสิ่งที่เป็นส่วนหนึ่งที่นี่ช่วยให้คุณทำ
ซึ่งช่วยให้คุณจริง ตรวจสอบซึ่งเป็นส่วนหนึ่ง
ใช่?
>> ผู้ชม: สามารถคุณเท่านั้น [ไม่ได้ยิน] เซลล์ในแถว [ไม่ได้ยิน]?
>> ALISON: ถ้าคุณเพียงกรอกข้อมูลลงใน บางส่วนของแถวของคุณ
ส่วนที่เหลือของเซลล์เหล่านั้นจะว่างเปล่าเพียง
ตราบใดที่คุณให้พวกเขา เป็นที่ว่างเปล่าก็ไม่เป็นปัญหา
ถ้าคุณพยายามที่จะเข้าถึงพวกเขาก็ จะกลับมาบางส่วนองค์ประกอบที่ว่างเปล่า
แต่มันเป็นสิ่งสำคัญที่จะรู้ว่า ที่ในตารางบางอย่าง
พวกเขาจะต้องได้รับอนุญาตให้เป็นโมฆะ
คุณอาจจะได้ทำงานเป็น ปัญหาในช่วงพีชุดของคุณ
เพราะเราไม่ได้ให้การใด ๆ ของค่าของคุณเป็นโมฆะ
แต่คุณสามารถระบุ ค่าตัวเลือกในตารางของคุณ
>> ตกลงเลือกดังนั้นนี่คือ เพียงแค่วิธีการรับ
ข้อมูลที่เฉพาะเจาะจงจากตารางที่ ระบุบางอย่างที่คุณต้องการ
ดาวเลือกดังนั้นจากตารางที่ เทือกเขาเท่ากับเพียงแค่สิ่งที่หมายความว่า
ให้ฉันข้อมูลทั้งหมดที่เกี่ยวข้อง ที่คอลัมน์นี้โดยเฉพาะเป็นความจริง
ดังนั้นดาวในกรณีนี้จะ กลับทั้งแถวให้คุณ OK?
>> และแล้วในกรณีนี้ให้เลือกดาวจาก ตารางเพียงแค่ช่วยให้คุณทั้งตาราง
แล้วลบอย่างเห็นได้ชัดก็แค่ ลบแถวจากตาราง
ดังนั้นลบออกจากตาราง สิ่งที่โต๊ะเรา
การอ้างอิงที่เฉพาะเจาะจงบางอย่าง ระบุหรือเงื่อนไขบางอย่างที่เป็นความจริง
ใช่?
>> ผู้ชม: คำถาม
ทำไมคุณกำลังใช้สองครั้ง คำพูดและไม่ว่าคุณ
ทำเครื่องหมายคำพูดคู่หรือเดี่ยว คำพูดที่ไม่ได้สร้างความแตกต่าง?
>> ALISON: คำพูดคู่หรือราคาเดียว ไม่ได้สร้างความแตกต่างใน SQL
ฉันคิดว่าฉันเห็นคำถามอื่น
ใช่?
>> ผู้ชม: มันไม่ส่งผลกระทบต่อสิ่งที่ ได้รับการหลบหนีออกจากแบบสอบถาม?
>> ALISON: ร็อบ?
>> ROB: คุณหมายถึงอะไร หนีออกมาจากแบบสอบถาม?
>> ผู้ชม: ถ้าใครมี คำเดียวในรูปแบบเเล้
>> ROB: ถ้ามีคนมา ใส่คำพูดเดียวใน
แล้วตราบใดที่คุณกำลังฆ่าเชื้อ การป้อนข้อมูลของคุณแล้วมันไม่สำคัญ
แต่ถ้าคุณใช้เพียงครั้งเดียว อ้างและคุณจะไม่ถูกต้อง
หนีปัจจัยการผลิตของคุณ แล้วใช่พวกเขาต้องการ
ที่จะนำคำพูดเดียวเพื่อที่จะทำลาย รหัสของคุณ ถ้าคุณใช้คำพูดคู่
พวกเขาต้องการที่จะนำคู่ อ้างที่จะทำลายรหัสของคุณ
แต่ตราบใดที่คุณหนีสิ่ง อย่างถูกต้องมันไม่สำคัญ
มันเป็นเพียงแค่จะได้รับการแปล เพื่อเป็นสัญลักษณ์ที่ถูกต้องอยู่แล้ว
>> ผู้ชม: อะไรหลบหนีหมายถึงอะไร?
ALISON: ดีเช่น ฆ่าเชื้อและการหลบหนี
การสอบที่เรามี XKCD ที่ดี การ์ตูนที่พวกเขาดึงขึ้นที่คุณมี
oh--
ROB: มันเป็นภาพนิ่งที่ผ่านมา
ALISON: มันเป็นภาพนิ่งที่ผ่านมาจริงเหรอ?
พระเจ้าช่วย
มีเราไปที่สมบูรณ์แบบ
ตกลงดังนั้นโดยทั่วไปคุณสามารถฉีด บางสิ่งบางอย่างในนี้แบบสอบถาม SQL
ที่จะแบ่งของคุณ รหัสหรือขณะที่เดวิดแสดงให้เห็นว่า
ในชั้นเรียนถ้าเรามีบางอย่างเดียว อ้าง 1 เท่ากับ 1 และถ้าในรหัสของเรา
เราเพียงแค่คัดลอกโดยตรงว่าในและ เรามีคำพูดเดียวจบ
สิ่งที่เกิดขึ้นคือการที่เราได้รับ การแสดงออกบางอย่างที่
ประเมินความจริงที่ว่าจะ ปล่อยให้คนเข้าสู่ฐานข้อมูลของเรา
และได้รับข้อมูลที่เรา ไม่ต้องการให้พวกเขาได้รับ
ดังนั้นฆ่าเชื้อปัจจัยการผลิต ก็หมายความว่าการทำให้แน่ใจว่า
ที่เราจะหนีออกมาเหล่านี้ ตัวอักษรและกำหนดให้พวกเขา
เป็นตัวอักษรและไม่สิ่งที่ ที่ควรได้รับอนุญาต
จะต้องดำเนินการอย่างแท้จริง เป็นคำสั่ง SQL ของเรา
>> ดังนั้นสิ่งที่ใหญ่ที่เรากล่าวว่า ที่พวกคุณควรจะใช้
มีตัวอักษรพิเศษ HTML, ซึ่งเป็นสิ่งที่
ที่คุณอาจต้องการที่จะดูที่
ตกลงลบ
ชนิดข้อมูลทั้งหมดนี้จะออนไลน์
เนื่องจากเราได้ 15 นาทีที่เหลือฉัน เพียงแค่จะไปขวาผ่านทางนี้
PHP และ SQL โดยทั่วไปนี้ เพียงแค่เรามีฟังก์ชั่นการสอบถามว่า
ช่วยป้องกัน เหล่านี้โจมตีที่เป็นอันตราย
ดังนั้นเมื่อใดก็ตามที่คุณใช้ สอบถามเราได้ทำให้แน่ใจว่า
ว่าสิ่งที่ถูกสุขอนามัยและ whatnot
>> MVC เป็นเพียงกระบวนทัศน์การออกแบบ ดังนั้นรูปแบบมุมมองของตัวควบคุม
มันเป็นเพียงวิธีการที่จะให้สิ่งที่ ที่ดีและแยกออกมาในลักษณะเดียวกัน
ที่เรามักจะเป็นปัจจัย รหัสออกไปในฟังก์ชั่น
นี่เป็นเพียงกรอบการออกแบบเว็บ ที่ช่วยให้คุณทำสิ่งเดียวกัน
ฉันจะข้าม
>> นี่คือสิ่งที่ผม จะสุดแสนสบายกับ
มันเป็นตารางเล็ก ๆ น้อย ๆ ที่ดีมี
มันจะช่วยให้คุณฟังก์ชั่น ตัวอย่างของรูปแบบ
ฉันแค่จะผ่านนี้เพราะผม อยาก Davin เพื่อให้สามารถที่จะพูดคุย
หากคุณมีคำถามใด ๆ โปรด
ฉันจะอยู่ที่นี่หลังจาก
เพียงแค่มาพูดคุยกับผม
กับที่เรามีสถานะ HTTP
และจะระเบิด Davin ของ ผ่านทางนี้ในเวลา 15 นาที
นี้เป็นไปได้ที่ดี
>> Davin: ตกลง
เอ่อ, ไมค์ของคุณหรือไม่
ใช่
ขอโทษ
ALISON: วิธีที่จะต้องเตรียม
Davin: ไม่มีฉันพร้อม
ฉันพร้อม
ลองทำเช่นนี้
ก็พร้อม
ตกลง
ขอโทษ
ฉันกาแฟหกเลอะตัวเอง
ผมไม่ทราบว่าถ้าผมมากขึ้น ไม่พอใจที่ผมดูโง่
หรือว่าผมไม่ได้มีเครื่องชงกาแฟอีกต่อไป
อย่างไรก็ตามเพียงแค่การประกาศอย่างรวดเร็ว เกี่ยวกับแผ่นพวกคุณมี
ดังนั้นแผ่นนี้พวกคุณมีไม่ได้ อย่างเป็นทางการสิ่งที่เกี่ยวกับการตอบคำถาม
นี่คือสิ่งที่อย่างเป็นทางการในการตอบคำถาม
นอกจากนี้บนเว็บไซต์ของเราบอก คุณตกลงนี้จะเป็นแบบทดสอบ
ดังนั้นในแผ่นโกงเล็ก ๆ น้อย ๆ ที่คุณมีและไม่เป็นทางการ
และมีข้อผิดพลาดเกี่ยวกับมัน
ดังนั้นสิ่งที่ดีที่สุดที่จะไม่เพียงสุ่มสี่สุ่มห้าใช้มัน
เพื่อใช่ที่ว่า
ถ้าอย่างนั้นเราได้รับในนี้อย่างรวดเร็วจริง
>> สถานะ HTTP ดังนั้น
ดังนั้นสิ่งที่เกิดขึ้นเมื่อ เว็บไซต์ทุกอย่างเป็นสิ่งที่ถูกต้อง
ตกลงทุกอย่าง
ทุกอย่างกลับมาถึง คุณในแบบที่คุณต้องการให้
คุณจะได้รับ 200 ตกลง
301 ที่เราได้เห็นที่ 301 มาก่อนหรือไม่
รออะไรขึ้น?
ขอโทษ
เราเห็นการบรรยายดีบุกฉันในระหว่างการรักษาความปลอดภัย
ดังนั้นในระหว่างการรักษาความปลอดภัยดังนั้นถ้าเดวิดพิมพ์ใน http และจากนั้นก็พยายามที่จะไป cs50.net,
คุณกำลังจะไปดู 301 ย้าย
ทำไม?
เพราะมันจะเปลี่ยนเส้นทาง คุณโดยอัตโนมัติเพื่อให้ HTTPS ของเรา
>> ดังนั้น 301 ย้ายเพียงแค่มัน โดยทั่วไปการเปลี่ยนเส้นทาง
และคุณสามารถคิดเกี่ยวกับมันเช่นนี้
ใด ๆ ของสถ​​านะที่เริ่มต้นด้วย 2, เหล่านี้จะเหมือนตกลงทุกอย่างตกลง
ใด ๆ ของสถ​​านะที่เริ่มต้น 3, ผู้ที่มีการเปลี่ยนเส้นทาง
สถานะที่เริ่มต้นด้วย 4 นั่นหมายความว่า มีชนิดของข้อผิดพลาดของลูกค้าบางส่วน
สถานะที่เริ่มต้นด้วย 5 ที่เป็นชนิดของข้อผิดพลาดบางเซิร์ฟเวอร์
ดังนั้นคุณชนิดของเลิก สถานะเช่นนั้น
ดังนั้น 304 ไม่ได้แก้ไขไม่ได้ดังนั้นในของคุณ server.c P-ชุดจึงขอบอกว่าคุณ
cat.html โหลด
ทุกอย่างกลับมา คุณจะได้รับ 200s, ตกลงที่ดี
>> สมมติว่าคุณสดชื่นมัน
ดีที่อยู่ภายใน cat.html คุณมี JPEG
ดี JPEG ที่มีขนาดไม่ได้ จะได้รับการโหลด
คุณจะไม่โพสต์อีก ได้รับการร้องขอไปยังเซิร์ฟเวอร์
และจากนั้นได้รับข้อมูลทั้งหมดที่กลับมา
มันจะเพียงแค่ be-- ภาพที่มี จะถูกเก็บไว้บนเครื่องของคุณ
และเพื่อให้ภาพที่จะเป็น 304
ดังนั้นจึงไม่ได้รับการแก้ไข
จากนั้นถ้าคุณปิดออกชัดเจน คุกกี้และฟื้นฟูแล้ว
และพยายามที่จะโหลดหน้าเว็บที่ อีกครั้งคุณจะเห็น 200s
คุณจะไม่เห็นว่า 304
>> 400 ขอไม่ดีจริง อย่างรวดเร็วเช่นถ้าคุณ
กำลังจะไปส่ง วัตถุ JSON ไปยังเซิร์ฟเวอร์
และวัตถุ JSON ของคุณไม่ถูกต้อง คุณจะเห็นสิ่งที่ต้องการที่
403, ต้องห้าม
เมื่อคุณจะเห็นต้องห้ามหรือไม่?
น่าจะเป็นน่าจะเป็น?
ผู้ชม: Chmod
Davin: Chmod ใช่
ดังนั้นคุณยังไม่ได้ตั้ง สิทธิ์อย่างถูกต้อง
404 ไม่พบ
มันเป็นเพียงไม่ได้มี
ดังนั้นถ้าคุณพิมพ์ใน URL ที่ไม่ถูกต้อง
500 ความผิดพลาดของเซิร์ฟเวอร์ภายในเซิร์ฟเวอร์ อาจจะไม่ได้ถูกกำหนดอย่างถูกต้อง
อะไรบางอย่างที่ไม่ได้อยู่ในส่วนท้ายของคุณ แต่ บางสิ่งบางอย่างในฝั่งเซิร์ฟเวอร์
และ 503?
ผู้คนจำนวนมากเห็น 503s ในช่วงพีชุด
เมื่อที่จะเกิดขึ้น?
ผมได้ยินเสียงกระซิบ
>> ผู้ชม: เมื่อ Google ตัดสินใจที่คุณหุ่นยนต์
Davin: ใช่เมื่อ Google ตัดสินใจ คุณหุ่นยนต์ที่คุณจะได้รับ 503s
ดังนั้นที่เกินพิกัด
ถ้าคุณได้รับการร้องขอจากเซิร์ฟเวอร์ มากเกินไปก็มักจะชั่วคราว
และส่วนใหญ่ของคุณสังเกตเห็นมัน
ดังนั้นคุณจะเห็น 503
คุณอาจจะมีการดำเนินการน้อย หยุดพักแล้ว 503s กลับออกไป
และทุกอย่างเป็นสิ่งที่ถูกต้อง
>> GABE รวดเร็วจริงเมื่อใดที่พวกคุณได้รับ 500 อาจจะเป็นปัญหาที่เกิดขึ้นล่าสุดนี้ตั้ง?
ใช่?
>> ผู้ชม: โดยปกติถ้า เซิร์ฟเวอร์มีไฟล์ถูกใส่ผิดที่
หรือ [ไม่ได้ยิน] ของพวกเขา เครื่อง [ไม่ได้ยิน]
>> GABE: ดังนั้นก็อาจจะมีการกำหนดค่า ปัญหาใน PHP ของคุณบนเซิร์ฟเวอร์ของคุณ
แต่ก็อาจจะมีบางสิ่งบางอย่างเพียง เช่นอัฒภาคว่าลืมของคุณ
หากคุณกำลังพิมพ์ PHP, บางไวยากรณ์ไม่ถูกต้อง
อาจได้รับคุณสิ่งที่ต้องการที่
OK?
>> Davin: โทน
คุณต้องการให้ฉันไปทำแค่จนถึง AJAX?
>> GABE: [ไม่ได้ยิน]
Davin: ตกลง
ดังนั้นสิ่งที่ DOM?
DOM อะไรยืน?
>> ผู้ชม: เอกสารรูปแบบวัตถุ
Davin: ดี
และทำไมเราชอบมันได้หรือไม่
น่ากลัว
ขวาดังนั้นมันก็ช่วยให้เราสามารถเข้าถึง HTML, เข้าถึงหน้าเว็บของเราได้อย่างรวดเร็ว
ทำไม?
เพราะเรากำลังรักษาของเรา หน้ารักษาแท็กของเรา
การรักษาทุกอย่าง ราวกับว่าพวกเขากำลังวัตถุ
ถ้าเรารักษาพวกเขาเหมือนพวกเขากำลัง วัตถุแล้วสิ่งที่เราจะทำอย่างไร
ดีที่เราสามารถเรียกฟังก์ชั่นที่พวกเขา
และนี่เป็นสิ่งที่สำคัญทำไม?
ดีเพราะเรากำลังจะใช้ JavaScript เพื่อปรับปรุง HTM​​L ของเรา
ปรับปรุงวัตถุเหล่านี้
ดังนั้นหากเราปฏิบัติต่อพวกเขาเช่นเดียวกับวัตถุ เราก็สามารถเรียกฟังก์ชั่นที่พวกเขา
ฉันจะได้รับเป็นเล็ก ๆ น้อย ๆ นี้ มากขึ้นเมื่อฉันไปเป็น JavaScript,
แต่คุณได้เห็นทุกคนชอบ document.getElementById
เอกสารเพื่อให้เป็นของคุณ องค์ประกอบได้รับองค์ประกอบโดยประชาชน
ดังนั้นคุณจะไปดู สำหรับรหัสบางอย่างในแท็ก
แล้วคุณจะทำอย่างไร อย่างอื่นที่
ยกตัวอย่างเช่น document.body, จากนั้นคุณสามารถผนวกเด็ก
ดังนั้นคุณจะพบเอกสาร
คุณมีเอกสาร
คุณจะพบร่าง
คุณพบศพ
แล้วคุณกำลังจะไป เรียกฟังก์ชั่นบางอย่างกับมัน
ดังนั้นผนวกเด็กและคุณสามารถผนวก HTML สิ้นสุดลงภายในร่างกายของคุณ
ดังนั้นโดยทั่วไปคุณเพียงแค่ รักษามันเหมือนวัตถุ
คุณกำลังรักษา HTML แท็กเช่นวัตถุ
และก็จะทำให้มันง่ายมาก และรวดเร็วในการไปถึงพวกเขา
แต่มันยังช่วยให้คุณ ที่จะเรียกฟังก์ชั่นที่พวกเขา
เพื่อให้คุณสามารถจัดการกับ และการเปลี่ยนแปลงองค์ประกอบ
>> GABE: ให้นี้ทำไมเป็นเช่น JavaScript ภาษาที่ดีที่จะมีปฏิสัมพันธ์กับ HTML ได้ไหม?
ราคาต่อรองได้เมื่อคนที่ถูกเลือก ภาษาสำหรับเบราว์เซอร์
ฝั่งไคลเอ็นต์สำหรับ JavaScript เป็นสิ่งที่ดีจริงๆ
มันเป็นเรื่องดีจริงๆที่วัตถุจัดการ
และวัตถุที่มีชนิดของชอบ วัตถุที่ปรากฏในรูปแบบ HTML,
ดังนั้นจึงเป็นเรื่องง่ายมากสำหรับ JavaScript ที่จะทำชนิดของการจัดการที่
Davin: ดี
ดังนั้นนี่เป็นเพียงตัวอย่าง
ดังนั้นผมจึงคิดว่าในการตอบคำถามของปีที่แล้ว หรืออาจจะสองปีที่ผ่านมาเรา
ขอให้คุณสร้างต้นไม้
ดังนั้นนี่คือสิ่งที่คุณต้องการจะทำอย่างไร
ดังนั้นคุณจึงเริ่มต้นด้วยเอกสาร
และจากนั้นคุณโดยทั่วไป เพียงแค่มองไปที่แท็ก
ดังนั้นถ้าคุณมองเรา เริ่มต้นด้วยแท็ก
และจากนั้นคุณจะได้รับเบาะแสเกี่ยวกับวิธีการ ทำเช่นนี้ขึ้นอยู่กับการเยื้อง
ดังนั้นชนิดหัวของสาขาออก
ในหัวของเรามี แท็กชื่อ
ดังนั้นแล้วเรามีแท็กชื่อ
และภายในที่เรามีสตริงบาง
และเพื่อให้เราเป็นตัวแทน สตริงในวงกลม
และแท็กทั้งหมดที่อยู่ในสี่เหลี่ยม
>> และถ้าคุณดูถ้าเรา คิดว่านี้เป็นต้นไม้
และขอบอกว่า HTML คือ ผู้ปกครองแล้วหัวและลำตัว
กำลังจะเป็นพี่น้อง
พวกเขาทั้งสองจะเป็น ลูกหลานของผู้ปกครองที่
ดังนั้นเพราะพวกเขากำลัง พี่น้องทั้งที่พวกเขากำลัง
จะเป็นชนิดของที่อยู่ถัดจาก ซึ่งกันและกันในรูปแบบต้นไม้ของเรา
และจากนั้นคุณโดยทั่วไป ทำสิ่งเดียวที่แน่นอน
ดังนั้นไม่ใช่เรื่องยาก แต่เราได้ถาม คำถามเช่นนี้มาก่อนในการตอบคำถาม
GABE: ไม่มีใคร มีคำถามเพื่อให้ห่างไกล?
มันเป็นสิ่งที่ดี?
Davin: โทน
JavaScript, ตกลงสิ่งที่ดี
ดังนั้น JavaScript, JavaScript คืออะไร?
ดี JavaScript เท่าไหร่ก็ ซับซ้อน แต่เหล่านี้
คือบางส่วนของไฮไลท์ ที่คุณควรเก็บไว้ในใจ
ครั้งแรกก็พิมพ์อย่างหลวม ๆ
หมายความว่าอะไร?
ดังนั้น PHP was-- ใช่อะไรขึ้น?
>> ผู้ชม: คุณไม่ได้รับอย่างชัดเจน รัฐสิ่งที่ประเภทของตัวแปรมันเป็น
Davin: เหมาะ
ดังนั้นเขาจึงบอกว่าคุณจะได้ไม่ต้อง อย่างชัดเจนระบุชนิดของตัวแปร
ที่เหมาะสมว่า
ดังนั้นใน C ถ้าผมมีผม int เท่ากับ 50, จากนั้นใน PHP ก็เพียงเช่นนี้ $ i,
เท่ากับ 50
จากนั้นใน JavaScript, สิ่งที่เรียกร้องจะเป็นอย่างไร
Var ใช่มั้ย?
มันจะเป็นเหมือนฉัน var เท่ากับ 50
แต่คุณไม่จำเป็นต้องเป็น เหมือนตกลงนี้เป็น int
ตกลงนี้เป็นสตริง
ไม่จำเป็นต้องทำอย่างนั้น
มันเป็นภาษาที่ตีความ
ดังนั้นสิ่งที่หมายความว่า?
>> ผู้ชม: รวบรวมไม่
>> Davin: อะไรไม่ได้รวบรวมหมายถึงอะไร?
ใช่?
>> ผู้ชม: คุณไม่จำเป็นต้อง เพื่อปรับโครงสร้างรหัส
จะได้รับมันพร้อมสำหรับ คอมพิวเตอร์เพื่อเรียกใช้
มันเอาแค่ในเวลาที่ การดำเนินการและคอมพิวเตอร์ [ไม่ได้ยิน]
Davin: ใช่ดังนั้นมันจะ ผ่านล่าม
แต่คุณตรงขวา
ดังนั้นคุณไม่เคยไป เพื่อรวบรวมมันใช่มั้ย?
เมื่อคุณกำลังทำของคุณ PHP และรหัส JavaScript,
คุณไม่เคยเรียกว่าคอมไพล์
คุณไม่เคยเรียกว่าสิ่งที่ต้องการ สร้างหรืออะไรอย่างนั้น
นั่นเป็นเพราะการตีความ
ดังนั้นเวลาที่มันจะต้องผ่านเบราว์เซอร์ทุก มันจะไปผ่านล่าม
และที่จะตีความว่า เพียงในเวลาจริงทันทีสำหรับคุณ
ดังนั้นสิ่งที่เป็นบวกและเชิงลบบาง จะมีการแปลภาษา
และมีภาษาที่รวบรวม?
ดังนั้น compiling-- ใช่อะไรขึ้น?
>> ผู้ชม: ตีความจะช้า
Davin: ในสิ่งที่รู้สึก?
>> ผู้ชม: หลังจากที่คุณ รวบรวมคุณไม่ได้
ที่จะทำขั้นตอนพิเศษใด ๆ ที่จะดำเนินการ มันในขณะนี้ [ไม่ได้ยิน]
>> Davin: ขวา, ที่สมบูรณ์แบบ
ดังนั้นสิ่งที่คุณกล่าวว่า รวบรวมโดยทั่วไปว่า
เมื่อคุณรวบรวมคุณมี จำนวนมากของค่าใช้จ่ายล่วงหน้าใช่มั้ย?
คุณกำลังจะรวบรวมมัน
แต่หลังจากที่คุณรวบรวมมัน คอมไพเลอร์จะเพิ่มประสิทธิภาพของมัน
มันเป็นไปได้อย่างรวดเร็ว
มันจะเป็นพื้น จะให้เร็วที่สุดเท่าที่จะสามารถ
ด้วยการแปลความหมายของคุณไม่ ได้ว่าค่าใช้จ่ายล่วงหน้า
แต่ก็เป็นไปได้ช้าลงเล็กน้อย ทุกเวลาเดียวที่คุณตีความมัน
และคุณจะต้อง ตีความมันทุกครั้งเดียว
ดังนั้นแทนที่จะต้องนี้ หนึ่งค่าใช้จ่ายเวลาตอนนี้คุณ
จะมีการตีความว่า ทุกครั้งที่หน้าแสดงผล
>> ดังนั้นล่ามเป็นสิ่งที่ดีเพราะ คุณไม่ได้มีการรวบรวมมัน
แต่พวกเขากำลังไม่ดีในทุกที่ เวลาโหลดหน้ามัน
จะต้อง ตีความ JavaScript นี้
และมันจะทำงานช้าลงเล็กน้อย กว่าถ้าคุณจะรวบรวมมัน
ช่วยให้คุณสามารถ communicate-- โอ้รอ
ใช้ในการจัดการ เนื้อหาและรูปลักษณ์
เราเพียงแค่พูดคุยเกี่ยวกับว่า
มันใช้ DOM
AJAX เราจะได้รับใน AJAX ในนิด ๆ หน่อย ๆ
และแล้วก็ถึงฝั่งไคลเอ็นต์
ดังนั้น PHP เป็นฝั่งเซิร์ฟเวอร์
JavaScript เป็นฝั่งไคลเอ็นต์
สิ่งที่เป็นบวกกับที่?
มันบอกว่ามัน
มันเร็วกว่าใช่มั้ย?
เพราะคุณไม่ได้มี to-- มันได้เร็วขึ้น
คุณไม่ได้มีการติดต่อสื่อสาร กับอุปกรณ์อื่น ๆ
หากคุณเพียงแค่ในของคุณ ไคลเอนต์คุณไม่เคย
จะต้องไปและ ดูว่ามีอะไรบนเซิร์ฟเวอร์
แล้วรายงานกลับ หรือสิ่งที่ต้องการ
ด้านลูกค้าดังนั้นมีแนวโน้มที่จะ เป็นนิด ๆ หน่อย ๆ ได้เร็วขึ้น
>> GABE: ใช่ แต่นี้ ไม่ได้หมายความว่า PHP เป็น
เร็วกว่า JavaScript หรืออะไรที่ชอบ
พวกเขาใช้ชนิดของในเดียวกัน ความเร็วเพราะพวกเขาทั้งสอง
แปลภาษา
สิ่งที่ช้า นี่คือการขอ
ดังนั้นคุณจะจริง ตลอดทางไปยังบราซิล
ที่จะได้รับข้อมูลบางอย่าง ที่อาศัยอยู่ที่นั่น
แต่ PHP และ JavaScript พวกเขา ชนิดของการทำงานในความเร็วเท่ากัน
มันไม่ได้เป็นที่หนึ่ง ได้เร็วขึ้นกว่าที่อื่น ๆ
นี้ยังมีคำถามเคล็ดลับที่นี่
ดังนั้น JavaScript ไม่เคยจะกลายเป็น รหัสเครื่อง, จริงหรือเท็จ?
>> ผู้ชม: เท็จ
GABE: เท็จ
มันจะกลายเป็นเครื่อง รหัสเพราะรหัสเครื่องเป็น
สิ่งเดียวที่เครื่องเข้าใจ
แม้ว่ามันจะไม่ได้รวบรวม ก็ยังกลายเป็นรหัสเครื่อง
เพราะล่ามเป็นเพียง โปรแกรมที่จะไปทีละบรรทัด
และแปลงที่เป็นเส้น สิ่งที่คอมพิวเตอร์เข้าใจ
OK?
เย็น
>> Davin: นี่เป็นเพียงขั้นพื้นฐานมาก สวัสดีชาวโลกโปรแกรม JavaScript
ดังนั้นผมจึงไม่ทราบใดถ้าคุณได้เห็นนี้
แต่คุณก็ต้อง HTM​​L ที่นี่
และแทนที่จะเป็นจริงใส่ ใช้งาน JavaScript ในแท็กสคริปต์
เพื่อให้คุณได้ตามปกติจะใส่ไว้ในหัว
คุณมีแท็กสคริปต์
คุณวางมันไว้ที่นั่น
ทั้งหมดที่เราได้ทำที่นี่คือเราได้เชื่อมโยง in-- ดังนั้นเราจึงได้มีการเชื่อมโยงในแฟ้ม JavaScript
เช่นนี้
และคุณได้ทำทั้งหมดนี้ใช่มั้ย?
ดังนั้นเมื่อคุณกำลังใช้ jQuery และ underscore.js ในช่วงพีชุด
คุณไม่ได้มีตันขึ้นรหัสใน แท็กสคริปต์ของคุณขึ้นมาในหัวของคุณ
คุณสามารถทำเช่นนั้น แต่แทนที่จะ คุณเพียงแค่การเชื่อมโยงใน
และคุณกำลังเชื่อมโยงใน เช่นเดียวกับที่คุณทำกับ CSS
ดังนั้นมันก็ทำให้มันง่ายต่อการอ่านเพื่อ รหัสของคุณจะไม่ชอบ 1,000 เส้นยาว
กับตันของฟังก์ชั่นที่ คุณอาจไม่ได้ใช้
>> แต่คุณก็เชื่อมโยงใน
มัน compartmentalizes มัน
มันก็เหมือนกับการเขียนไฟล์ส่วนหัวบางส่วนและ แล้วรวมทั้งไฟล์ส่วนหัวใน C.
คิดว่ามันเหมือนเพียงแค่นี้
ดังนั้นสิ่งนี้จะทำอย่างไร
อย่างนี้จะไปทำงาน
มันจะแจ้งเตือน
ดังนั้นคุณกำลังจะได้รับเพียงเล็กน้อย ปรากฏขึ้นที่เรียกว่าสวัสดีชาวโลก
คำถามอย่างรวดเร็วเพียงแค่การตรวจสอบสติ เพื่อให้คุณดูที่นี่ในร่างกาย
บอกว่าร่างกาย, HTML ที่นี่
อะไรมาก่อน?
ฉันเห็นร่างกาย, HTML ที่นี่ หรือฉันจะเห็นการแจ้งเตือนครั้งแรก?
>> ผู้ชม: การแจ้งเตือน
>> Davin: ขวา
เขาบอกว่าการแจ้งเตือน
ทำไม?
>> ผู้ชม: เพ​​ราะคุณ ไปจากบนลงล่าง
>> Davin: ใช่
สมบูรณ์
ดังนั้นเขาจึงบอกว่าคุณไปจากบนลง ด้านล่างซึ่งเป็นที่ถูกต้องอย่างแน่นอน
คุณกำลังจะไปจากบนลงล่าง
และใน JavaScript, jQuery คุณมี ฟังก์ชั่นที่เหมือน onload หรือพร้อม
และที่บอกว่าตกลงรอจนกว่า ทั้งหมดของภาษา HTML นี้มีการโหลด
แล้วเรียกใช้งาน JavaScript
เพราะเราไม่ได้ว่าที่นี่ สิ่งแรกที่จะเกิดขึ้น
มันจะไปจากบนลงล่าง
มันจะตีว่า JS โทรก็จะแจ้งเตือน
หลังจากที่คุณคลิกตกลง การแจ้งเตือนว่าจะหายไป
จากนั้นก็จะแสดง คุณร่างกาย HTML ที่นี่
ดี
>> ตกลงดังนั้นเพียงจริงอย่างรวดเร็ว, การเขียน ใน JavaScript เป็นซุปเปอร์รวดเร็ว
เพื่อที่จะประกาศ ตัวแปรชื่อ var
ดังนั้นใน C คุณมีฉัน int, คุณมี ที่จะประกาศว่าชนิดของชนิดมันเป็น
PHP, $
JavaScript, var
เราพูดคุยกันเกี่ยวกับเรื่องนี้
สิทธิทั้งหมดให้เป็นไป
>> ลูป, สิ่งเดียวกัน
สิ่งเดียวกัน
ประกาศฟังก์ชั่นเพื่อ เช่นเดียวกับที่คุณเคยเห็นในซี
เป็นสิ่งเดียวที่แตกต่างกันดังนั้นเมื่อ คุณจะได้รับการเขียนโปรแกรมภาษาอื่น ๆ
เช่นเมื่อคุณใช้เวลา 51 ภาคการศึกษาต่อไป และคุณทำกับ OCaml,
คุณสามารถจัดการกับฟังก์ชั่นที่ไม่ระบุชื่อ
นั่นคือสิ่งที่คุณได้ที่นี่
ดังนั้นคุณจึงต้องการที่จะใส่ในผลรวม ชนิดของค่าผลรวม
แต่คุณอาจจะทำมันอีกครั้งหนึ่ง
ดังนั้นคุณจึงไม่ต้องการเรียกว่าฟังก์ชั่น ผลรวมให้มันประกาศฟังก์ชัน
แต่คุณเพียงแค่ใช้มัน เป็นฟังก์ชั่นที่ไม่ระบุชื่อ
และคุณได้เห็นนี้เป็นจำนวนมาก
คุณจะเห็นตัวอย่างของ ในสไลด์คู่
ใช่เราจะเห็น
GABE: คำถามที่ดี
เมื่อคุณอาจต้องการที่จะใช้ ฟังก์ชั่นที่ไม่ระบุชื่อที่นี่?
โดยทั่วไปเมื่อคุณต้องการบางสิ่งบางอย่าง เช่นเดียวกับเหตุการณ์ที่จะเกิดขึ้น
ดังนั้นเมื่อเมาส์อยู่ คลิกตัวอย่างเช่น
คุณต้องการฟังก์ชั่นบางอย่างที่จะเรียกว่า
ดังนั้นคุณจะส่งผ่านไปยังเหตุการณ์ จัดการคุณส่งผ่านไปยังเหตุการณ์ที่เกิดขึ้น
ชนิดของฟังก์ชั่นที่ คุณต้องการที่จะเรียกว่า
และสิ่งที่คุณกำลังผ่าน ก็เหมือนในตอนท้าย
ในวันนี้เพียงแค่ชี้ไปยัง ที่การเรียนการสอน, ฟังก์ชั่น
ดังนั้นจึงไม่ชอบคุณผ่าน รหัสทั้งหมดเช่นเดียวกับ
ตัวชี้ไปยังฟังก์ชั่น
และจากนั้นเมื่อคลิกที่ใครบางคน เมาส์แล้วฟังก์ชั่นที่ได้รับการเรียกว่า
>> Davin: อาร์เรย์เพื่อให้คุณ มีการประกาศอาร์เรย์
จากนั้นอาเรย์ที่จะนำสิ่งใน
จริงอย่างรวดเร็วสิ่งนี้จะพิมพ์ออกมา?
อะไรองค์ประกอบที่สามจะเป็นอย่างไร
>> ผู้ชม: "JS"
>> Davin: ขวาก็จะเป็น "JS."
รอให้กลับไป
ความยาวคืออะไร?
>> ผู้ชม: สาม
Davin: สามใช่มั้ย?
สิ่งที่คุณคิดว่า
ตกลงตอนนี้ไป
อาร์เรย์คุณสามารถเพิ่มสิ่งที่พวกเขา
เพื่อให้คุณสามารถไปได้ไกลกว่า ขอบเขตแรกของพวกเขา
เพียงแค่สิ่งที่จะเก็บไว้ในใจ
PHP, JavaScript, พวกเขากำลังเล็ก ๆ น้อย ๆ บิตให้อภัยมากขึ้นในแง่ของสิ่งที่
เช่นนั้น
วัตถุอย่างมากเช่น structs ใน C มาก
เช่นเชื่อมโยงอาร์เรย์ใน PHP
คุณมีประสบการณ์ทั้งหมดที่มีนี้
ดังนั้น JSON เมื่อคุณผ่าน JSON กลับมาอยู่ในสถานที่ตั้งแปด
ที่วัตถุของคุณ
>> เพื่อใช่ตัวอย่างเช่นตัวอย่างรวดเร็วจริง
นี่คือวัตถุ
วิธีที่คุณอ้างอิงนี้ วัตถุดังนั้นเพียงจริงอย่างรวดเร็ว
สมมติว่าผมต้องการที่จะหา ออกตกลงสิ่งที่แน่นอน?
และเพื่อให้ชื่อวัตถุที่นี่เป็น CS50
แล้วถ้าผมมีการเชื่อมโยง อาร์เรย์ว่าฉันจะทำเช่นนั้น?
ฉันจะใช้คีย์ใช่มั้ย?
ดังนั้นผมจึงมีชื่อของอาร์เรย์
ฉันมีวงเล็บ, คำพูด, กุญแจ คำพูดในตอนท้ายวงเล็บสิ้นสุด
และที่จะอ้างอิงว่า องค์ประกอบภายในอาเรย์ของฉัน
ฉันทำอ้างอิงวิธี แน่นอนภายในวัตถุของฉันได้อย่างไร
ใครรู้หรือไม่?
>> ผู้ชม: [ไม่ได้ยิน]
>> Davin: เกิดอะไรขึ้น?
ผู้ชม: CS50.course
Davin: ใช่ใช่
ดังนั้น CS50.course
ดังนั้นวิธีการที่คุณสิ่งอ้างอิง ภายในวัตถุ JSON เป็นด้วยจุด
>> ผู้ชม: นอกจากนี้คุณยังสามารถใช้ไวยากรณ์อาร์เรย์
>> Davin: ตกลงที่ดี
>> GABE: คุณยังสามารถใช้วงเล็บ CS50, สตริงเช่นเครื่องหมายคำพูด
ผู้ชม: ฉันคิดว่ามันเหมือนกันกับ PHP
GABE: มันเป็นสิ่งเดียวกัน
Davin: ดี!
แต่คุณจะดูสถานที่อื่น ๆ
ใช่เพื่อให้ไป
นี่คือสิ่งที่ผมเพิ่งกล่าวว่า
ดังนั้นเป็นตัวอย่าง JavaScript jQuery
ดังนั้นนี่คือ DOM ของฉันใช่มั้ย?
จริงอย่างรวดเร็วเพื่อให้ฉันมี หัวโลกสวัสดีร่างกาย
ฉันมีปุ่ม
มันบอกว่า "ผลักดันให้ฉัน" ดังนั้นฉันต้องการที่จะผลักดันมัน
และผมต้องการที่จะทำบางสิ่งบางอย่าง เมื่อมันคลิก
ขวาต่อไป
>> ขวาดังนั้นนี่คือ JavaScript ของฉัน
ดังนั้น jQuery เป็นเพียงง่ายขึ้น วิธีการเขียน JavaScript
ดังนั้นนี้และสิ่งที่ฉันจะแสดง คุณต่อไปเป็นไปได้ jQuery,
เหมือนกัน
ดังนั้นพวกเขาจะทำสิ่งเดียวกัน
เพียงแค่ jQuery มีแนวโน้มที่จะง่ายขึ้นเล็กน้อย
คนมักจะชอบมันมากขึ้น
มีจำนวนมากของการทำงาน
ดังนั้นผู้คนมักจะใช้ jQuery
ทุกท่านที่ใช้ jQuery ในช่วงพีชุด
ดังนั้นสิ่งนี้จะทำอย่างไร
สิ่งที่จะ JavaScript-- นี้เพื่อ นี้เป็นธรรมดาเพียง JavaScript
สิ่งนี้จะทำอย่างไร
สิ่งที่จะทำอย่างไร
>> ดังนั้นก่อนที่คุณเห็น onload หน้าต่าง
ใช่มั้ย?
ดังนั้นเราจึงไม่เห็นว่าก่อนที่จะ
ดังนั้นนี้จะต้องรอ จนกว่าจะโหลดหน้าต่างทั้งหมด
ดังนั้นก็จะรอจนกว่า HTML ทั้งหมดโหลดภาพ
ก่อนที่จะได้ทำอะไรเลย
ดังนั้นสมมติว่า DOM ของเรามีการโหลด
ทุกอย่างที่มี
จากนั้นสิ่งที่จะเกิดขึ้น?
ใช่?
>> ผู้ชม: ปุ่มปรากฏ
>> Davin: ปุ่มมีอยู่แล้ว
ใช่ดังนั้นปุ่มมีอยู่แล้ว
แต่นี้เป็นไปที่จะบอกว่า ตกลงถ้าผมคลิกที่ปุ่ม
ดังนั้นปุ่มแล้ว มีเช่นว่าแท็ก
รอให้กลับไปจริงอย่างรวดเร็ว
แท็กนี้ขวาตรงนี้คือ จะเป็นปุ่มแล้ว
แล้วมีปุ่มเป็น
แต่แล้ว JavaScript แท็กที่นี่
มันบอกว่าตกลงฉันต้องการ ที่จะได้รับองค์ประกอบโดยประชาชน
ปุ่มค้นหาเพื่อเพียงกล่าวว่าตกลงฉันต้องการ เพื่อแมตัวแปรนี้ให้กับปุ่มที่
ดังนั้นตัวแปรที่เป็นเพียง วิธีที่ง่ายต่อการเข้าถึงปุ่มนั้น
และผมก็บอกว่าโอเคถ้าฉันคลิกที่ ปุ่มดังนั้นถ้าฉันคลิกองค์ประกอบที่
และองค์ประกอบที่นี้หมายถึง ปุ่มถ้าผมคลิกมัน
แล้วผมต้องการที่จะเรียกใช้ฟังก์ชัน
นี่คือหนึ่งในผู้ที่ไม่ระบุชื่อ ฟังก์ชั่นที่เราได้พูดคุยเกี่ยวกับ
>> เพียงแค่เรียกใช้ฟังก์ชันบางอย่าง
ภายในฟังก์ชันที่พื้น บางสิ่งบางอย่างที่เราได้เห็นมาก, การแจ้งเตือน
คุณคลิกที่ปุ่มค้นหา
มันเป็นไปโดยทั่วไปมีปุ่ม
คุณคลิก
คุณจะได้รับการแจ้งเตือนว่า
X ออก
นั่นแหล่ะ
ใช่?
>> ผู้ชม: ดังนั้นถ้าคุณวางสคริปต์ [ไม่ได้ยิน] แท็กสคริปต์ใน HTML ของคุณ?
>> Davin: คุณสามารถวางสคริปต์ ตรงแท็กในหัว
เพราะคุณมี onload นี้
นอกจากนี้ยังเป็นที่ที่คุณต้องคลิก
ดังนั้นก็จะรอจนกว่า คุณคลิกสำหรับบางสิ่งบางอย่าง
แต่ onload เป็นเพียงเพื่อความปลอดภัยเพื่อให้ โหลดแน่ใจว่าทุกอย่างเป็น HTML ของคุณ
ล่วงหน้า
ใช่?
คุณต้องการที่จะพูดอะไรบางอย่าง?
>> GABE: [ไม่ได้ยิน]
Davin: ใช่
>> ผู้ชม: หลีกเลี่ยงการ onload ดังนั้น การกำหนดปุ่มค้นหาตัวแปร
โดยบอกเพียง document.getElementById ปุ่มค้นหาจุด [ไม่ได้ยิน]
>> Davin: แน่นอน แต่แล้ว สายของคุณเพิ่งได้รับมาก
ตรงนี้จึงเป็นเพียงการ ทำให้มันง่ายขึ้นสำหรับคุณใช่
ใช่?
>> ผู้ชม: Where did เรา สร้าง window.onload?
หรือ document.ready?
>> Davin: ใช่มี
ใช่มีผมตรวจสอบ
>> GABE: ไม่ได้สำหรับพวกเขาจะดูแลเกี่ยวกับ
>> Davin: ตกลงดังนั้นฉันจะ ที่จะบอกคุณอยู่แล้ว
ดังนั้นโดยทั่วไปเพียงในทั่วไปดังนั้น window.onload รอจนกระทั่ง DOM ของคุณทั้งหมด
HTML, คุณโหลด
จะรอจนกว่าจะโหลดภาพของคุณ
จะรอจนกว่าจะโหลดทุกอย่าง
document.ready ก็แค่ รอจนกระทั่งโหลด DOM ของคุณ
เมื่อ HTML คือทั้งหมดที่มีครั้งเดียว DOM ของคุณจะมีเริ่มทำงาน
นั่นคือความแตกต่างเท่านั้น
>> GABE: กาสติด่วนที่นี่
ดังนั้นนี่สามารถมองเห็นชนิดของ เช่นบรรทัดของรหัสใช่มั้ย?
เพราะมัน window.onload เท่ากับพวงของสิ่งที่
เมื่อใช้งาน JavaScript อ่านนี้จริงหรือ เท็จ, ฟังก์ชั่นที่ได้รับการดำเนินการ
เท็จ
OK?
จะเกิดอะไรขึ้นที่นี่คุณเพียงแค่ผ่าน ฟังก์ชั่นนี้เป็นฟังก์ชั่นที่ไม่ระบุชื่อ
เพื่อ window.onload
และเมื่อมันเป็นไป ที่จริงได้รับการดำเนินการ?
เมื่อโหลดหน้าต่าง
นั่นเป็นเหตุการณ์
นั่นคือ Jus สิ่งทีเรา พูดคุยเกี่ยวกับก่อนหน้านี้ใช่มั้ย?
ดังนั้นเมื่อมีเหตุการณ์เกิดขึ้น ฟังก์ชั่นที่เกิดขึ้น
สิ่งเดียวกันกับ onclick
>> Davin: OK เพื่อให้ใครบางคนเอา ห่าง document.ready
แต่นี้จะเป็นมันเหมือนกับที่แน่นอน
ผู้ชม: เครื่องหมายดอลลาร์, ที่เป็น document.ready
นั่นเป็นทางลัด
>> Davin: โอ้ว่าคืออะไร?
ตกลงดังนั้นวิธีการนี​​้ document.ready ทางลัด
แต่ตอนนี้เป็นเช่นเดียวกับ window.onload ยกเว้นที่แตกต่างกันเล็กน้อย
ผมบอกคุณเกี่ยวกับ
และนี่คือ jQuery
ดังนั้นนี่คือเดียวกันแน่นอน thing-- นี้เป็น JavaScript
นี้ just-- บางคนคิดว่ามัน เป็นน้ำหนักเบามากขึ้นรุ่นเงา
ที่มีจำนวนมากของการทำงาน ที่คุณอาจจะใช้
ดังนั้นนี้ไม่สิ่งเดียวที่แน่นอน
>> ดังนั้นสิ่งที่ชนิดของการชี้ให้เห็น
ดังนั้นในตัวอย่างอื่น ๆ ที่เรา มี document.getElementById,
ดังนั้นเราจึงนานนี้ สตริงที่จะได้รับ
องค์ประกอบโดยสิ่งที่ ID ก็มี
นั่นคือแทนที่ด้วยสายนี้ที่นี่
ดังนั้นคุณจะเห็นเครื่องหมายดอลลาร์, แล้วคุณจะเห็นอ้าง hashtag
hashtag อยู่เสมอเลือก
มันบอกว่าตกลงนี้จะทำอย่างไรที่มี ID
อะไรคือตัวเลือกสำหรับการเรียน?
>> ผู้ชม: Dot
>> Davin: Dot ขวา
หากคุณกำลังจะ เลือกแท็กมันคืออะไร?
มันเป็นเพียงแค่แท็กว่า
และคุณสามารถใช้ที่นี่เป็นอย่างดี
>> GABE: และโดยแท็กเราหมายถึงเช่น div เช่นหรือหัว
>> Davin: ร่างกายหรือหรือ P หรือ อะไรอย่างนั้นใช่
ดังนั้นที่นี่ตกลงแทนที่จะพูดว่า document.getElementById,
นี้เป็นเพียงสิ่งเดียวที่แน่นอน
เพียงใน jQuery ก็สั้นลง
ดังนั้นจึงเป็นที่เรียบง่าย
ดังนั้นแล้วไม่มาก onclick เพียงแค่คลิก
ฟังก์ชั่น jQuery เรียกฟังก์ชั่นนี้
การแจ้งเตือนเป็นที่แน่นอนเดียวกัน
ดังนั้นจึงเป็นนิด ๆ หน่อย ๆ ที่มีขนาดเล็กหรือนิด ๆ หน่อย ๆ
สั้นกว่าคน bit-- เล็ก ๆ น้อย ๆ คิดว่า มันเป็นเรื่องง่ายขึ้นเล็กน้อยที่จะเขียนออกมา
นิด ๆ หน่อย ๆ ง่ายต่อการเข้าใจ
แต่นี่เป็น jQuery
ผู้คนจำนวนมากได้รับน้อย บิตสับสนและกังวล
และพวกเขาคิดว่าตกลง jQuery แตกต่างจากการใช้งาน JavaScript
ฉันต้องจำเ​​หล่านี้ สองสิ่งที่แตกต่างกัน
มันไม่ใช่
ฉันหมายความว่ามันเป็นไวยากรณ์ที่แตกต่างกัน
แต่ jQuery เป็น JavaScript
มันเป็นเพียงแค่ดูเหมือน รุ่นที่ดีกว่าที่
อาจจะง่ายต่อการ เข้าใจว่าคนใช้
GABE: ใช่จะเป็น ซื่อสัตย์ที่เครื่องหมายดอลลาร์
ที่คุณเห็นใน jQuery ที่เพียง ชื่อของฟังก์ชั่นที่กำหนด jQuery
แต่ไม่ได้มีอะไรเป็นพิเศษ
มันเป็นเพียงแค่ชื่อของฟังก์ชั่น เช่นเดียวกับที่คุณสามารถกำหนดเครื่องหมายดอลลาร์
>> Davin: ใช่เพื่อพูดคุยเกี่ยวกับเรื่องนี้
บางสิ่งที่มีประโยชน์
ผมมองย้อนกลับไปที่เก่าแบบทดสอบ
ในแบบทดสอบคู่ที่ผ่านมาพวกเขาได้ มีการใช้สิ่งเช่นนี้
document.ready ดังนั้น ให้แน่ใจว่าทุกอย่าง
โหลดก่อนที่จะเริ่มทำสิ่งที่
เลือกหมายเลขหรือเลือก ชั้นก็ต้องการเพียงแค่
ได้รับการเสนอราคาดอทชั้นบางคำพูดตอนท้าย
ส่งดังนั้นหากคุณ กรอกแบบฟอร์มและโทร
ฟังก์ชั่นนี้หลังจากที่รูปแบบส่ง
มูลค่าจึงขอบอกว่าผมมีรูปแบบ ส่งเช่นชื่อผู้ใช้อีเมล
อะไรก็ตาม
ผมมีกล่องข้อความ
ดังนั้นฉันพิมพ์ลงในกล่องข้อความว่า
ดีถ้าคุณต้องการที่จะได้รับค่า ออกจากกล่องข้อความที่คุณใช้ Val จุด
แล้วลงที่นี่ HTML คือจุดเดียวกัน
เป็นเหมือนจุดเอกสาร GetElementByID จุด innerHTML
เพื่อที่จะกลับมา คุณ HTML จาก ID ที่
ที่นี่คุณเพียงแค่ใช้บางส่วน ประชาชนหรือสิ่งที่จุด HTML
ที่จะได้รับ HTML จากองค์ประกอบที่
ถ้าคุณต้องการที่จะเปลี่ยนแปลงแล้วว่า HTML, คุณสามารถผ่านมันเป็นสิ่งที่
ดังนั้นคุณจึงต้องการเป็นเช่น HTML จุดแล้ว ภายใน, คำพูด, HTML ใหม่หรือบางสิ่งบางอย่าง
>> GABE: OK เพื่อ AJAX
ผมชอบที่จะเข้าใจ AJAX ดีจริงๆ
ดังนั้นผมจึงอยากให้พวกคุณไป เข้าใจ AJAX ดีจริงๆ
เพราะถ้าคุณทำ คุณจะสวยมาก
ที่จะเข้าใจทุกอย่างที่ จะทำอย่างไรกับ HTTP, PHP,
JavaScript เพราะมันทั้งหมด มาร่วมกันในการ AJAX
AJAX ไม่ใช่ภาษา
AJAX เป็นเทคนิค
และใช้จำนวนมากของเครื่องมือที่แตกต่างกัน
AJAX ย่อมาจาก Asynchronous JavaScript XML
ดังนั้นวิธีการที่ภาษาข้อมูล
>> ดังนั้นภาษาหลักที่เราใช้ ใน AJAX จะเรียกทุกอย่าง
และจัดการทุกอย่าง ภายหลังเป็น JavaScript
นั่นเป็นเหตุผลที่มันเกี่ยวข้อง ใกล้กับ JavaScript
และจากนั้นไม่ตรงกันคือ เพราะเราไม่ได้ทำมัน
ทั้งหมดในครั้งเดียวเมื่อเรากำลังโหลดหน้าเว็บ
นี่คือสิ่งที่เราสามารถทำได้ ทำในสิ่งที่ชนิดของในแบบคู่ขนาน
ความคิดหลักที่อยู่เบื้องหลัง AJAX คือการที่คุณต้องการ
ก็จะได้รับข้อมูลบางอย่าง
ตัวอย่างเช่นเมื่อคุณกำลังพิมพ์ใหม่ ชื่อผู้ใช้เมื่อคุณลงทะเบียนชื่อผู้ใช้
ชื่อผู้ใช้ของฉันคือ abc123
และจากนั้นในตอนท้ายของ รูปแบบที่คุณต้องคลิก Submit
และมันจะต้องไปยังเซิร์ฟเวอร์ แล้วตรวจสอบว่าในฐานข้อมูล
abc123 มีอยู่แล้ว
และถ้ามันมีอยู่แล้วก็กล่าวว่า ชื่อผู้ใช้อยู่แล้วในฐานข้อมูล
และพวกเขาคุณจะต้องกรอก แบบฟอร์มทั้งหมดอีกครั้ง
และมันก็เป็นจริงๆดีจริงๆ
>> และแล้วคนพูดว่า ตกลงว่าทำไมเราไม่สามารถเพียงแค่
ทำคำขอ HTTP ขนาดเล็กที่จะเพียงแค่ตรวจสอบ เพื่อดูว่าผู้ใช้รายนี้อยู่ในฐานข้อมูล
ก่อนที่ผู้ใช้จะต้อง ส่งแบบฟอร์มทั้งหมด?
ดังนั้นสำหรับตัวอย่างเช่นเมื่อ ผู้ใช้เสร็จสิ้นการพิมพ์ abc123,
ขอเพียงแค่ไปที่เซิร์ฟเวอร์เล็ก ๆ น้อย ๆ บิตและเพิ่งได้รับจริงหรือเท็จ
จากเซิร์ฟเวอร์เพื่อดูว่า ที่เป็นชื่อผู้ใช้ที่ถูกต้องหรือไม่
ตกลงเพื่อให้เป็นหนึ่งในหลัก ใช้ของ AJAX ในปัจจุบันยังคง
>> Davin: ดังนั้นจริงอย่างรวดเร็วใน โทรอาแจ็กซ์ใน jQuery,
คุณอาจจะมีความหมายว่าคุณ ต้องการให้เป็นจังหวะ
คุณไม่ควรทำเช่นนี้
แต่คุณสามารถทำเช่นนั้นได้
และถ้าคุณไม่ว่าอะไรจะเกิดขึ้น?
ดีตัวอย่างเช่นเมื่อคุณอยู่ ได้รับข่าวหรืออะไรก็ตาม
เบราว์เซอร์ของคุณเป็นเพียงจะรอ จนกว่าที่โทรทั้งหมดจะเสร็จสมบูรณ์
แทนที่จะปล่อยให้คุณทำอื่น ๆ สิ่งที่ถูกต้องหลังจากที่คุณคลิก
>> GABE: มันไม่ได้ผ่านอีกต่อไป
พระเจ้าช่วย
ขออภัย!
Yup
"ในอดีตที่ผ่านมา ลูกค้าที่จำเป็นในการร้องขอ
เนื้อหาทั้งหมดของเว็บไซต์. "
นั่นคือสิ่งที่ผมพูด
มันช่วยให้เราสามารถส่ง แถมเพิ่มเติมหรือ POST
โดยไม่ต้องมีการร้องขอ เพื่อโหลดเบราว์เซอร์ของเรา
ดังนั้นในตอนท้ายของวันที่เราไม่ จริงการร้องขอ HTTP
ที่นี่โดยใช้ JavaScript
เพราะก่อนที่เราจะนำมาใช้งาน JavaScript ที่จะเปลี่ยน HTML ที่แล้วมา
และตอนนี้เราสามารถใช้ในการติดต่อ กับเว็บเซิร์ฟเวอร์ได้เป็นอย่างดี
วิธีนี้เกิดขึ้น คือเรามีลูกค้า
Davin เป็นลูกค้า
และเขามีทั้งหมด JavaScript ทำงานเนื่องจาก HTML ที่เป็นใบ้
JavaScript เป็นสมาร์ท
ดังนั้น Davin Davin มีสมาร์ทของเขา ส่วนหนึ่งและเป็นส่วนหนึ่งของเขาเป็นใบ้
เขาจะใช้เป็นส่วนหนึ่งของเขาตอนนี้สมาร์ท
เขาจะใช้ JavaScript จะขอยกตัวอย่างเช่น
ไม่ว่าจะอยู่ใน abc123 ฐานข้อมูลหรือไม่
>> ดังนั้น Davin กรุณาคุณเพียงแค่ ส่งการร้องขอ HTTP
ขอบคุณ
ดังนั้นเขาก็ส่งคำขอ HTTP
คุณเห็นว่า?
และนี่เป็นเพียงวิธีเดียว ที่ร้องขอ HTTP ใด ๆ จะถูกส่ง
เบราว์เซอร์ Google Chrome หรือสิ่งที่เป็น
จะเห็นว่า Davin ของ พยายามที่จะส่งคำขอ HTTP,
จะช่วยให้ HM นิด ๆ หน่อย ๆ
และที่จะไป ตลอดทางไปยังเซิร์ฟเวอร์
ตอนนี้เซิร์ฟเวอร์เป็นไปได้ PHP ที่นี่หรือภาษาอื่น ๆ
เช่นเดียวกับในการร้องขอ HTTP ปกติ
มันสวยมากขอ HTTP ปกติ
>> แล้วเซิร์ฟเวอร์ จะไปบอกว่าโอเค
Davin อยากให้ผมตรวจสอบว่า abc123 นี้อยู่ในฐานข้อมูล
ไปพูดคุยกับรุ่น
รูปแบบการบอกว่ามันไม่ได้ abc123 เป็นชื่อผู้ใช้ที่ดี
แล้วเว็บเซิร์ฟเวอร์เป็นไป ใช้ PHP ที่จะทำให้รูปแบบของไฟล์บาง
มันอาจจะเป็นเพียงแค่ตัวอักษรไฟล์ ที่ประกอบด้วย "ใช่" ในนั้นหรือ "ไม่มี
หรือสิ่งที่ต้องการ
มันอาจจะเป็นไฟล์ใด ๆ
>> มันอาจจะเป็นเหมือนฉันกำลังจะไป ส่ง Davin ภาพของเป็ด
ถ้ามันอยู่ในฐานข้อมูลและ ส่งภาพของหนูแฮมสเตอร์
ถ้ามันไม่ได้อยู่ในฐานข้อมูล
ที่จะเป็นชนิดของ ใบ้ แต่มันจะทำงาน
ตกลงดังนั้นฉันส่งเป็ดเพื่อ Davin
Davin มีเป็ด
และตอนนี้ที่จะไป ที่จะจัดการกับเป็ด?
Davin ส่วนของสมาร์ทอีกครั้ง เพื่อให้ใช้งาน JavaScript ใช่มั้ย?
JavaScript ส่ง ขอและ JavaScript
กำลังจะได้รับการร้องขอ และตีความมันในรูปแบบบาง
>> และในแง่นี้ก็จะ บอกว่าโอเคถ้าเป็ดแล้วฉันดี
ถ้าหนูแฮมสเตอร์แล้วฉันจะ ที่จะบอกว่าไม่มีชื่อผู้ใช้แล้ว
ที่มีอยู่ในฐานข้อมูล
แต่โดยปกติคุณไม่ได้ จะส่งเป็ด
คุณกำลังจะไปส่ง บางสิ่งบางอย่างเล็กน้อยอย่างชาญฉลาด
และสิ่งที่เราใช้เป็น XML
และเมื่อเร็ว ๆ นี้เราจะใช้ JSON
JSON เป็นเพียง JavaScript Object สัญลักษณ์ซึ่ง
เป็นพื้นคุณจะได้รับ ทั้งวัตถุ JavaScript
และคุณใส่ไว้ในไฟล์เพียงชอบ ว่าวัตถุ CS50 ที่พวกคุณเห็น
คุณใส่ไว้ในแฟ้มและ คุณส่งมันไปยัง Davin
>> ดังนั้นในกรณีนี้ผมจะ ทำให้วัตถุ JavaScript
และเพียงแค่บอกว่าผู้ใช้มีอยู่ใช่
หรือผู้ใช้ที่มีอยู่ไม่
และส่งกลับไปให้เขา
และทำไม JSON?
เพราะคนที่ ผู้ที่ได้รับนี้
จะใช้ JavaScript ที่จะจัดการกับการตอบสนอง
และ JavaScript ได้ผลดีเพราะ ก็เรียกว่าสัญกรณ์วัตถุ JavaScript
ใช่มั้ย?
ดังนั้นเขาก็สามารถเรียกฟังก์ชั่นและได้รับ วัตถุนี้ที่ดีจากการตอบสนอง
แล้วเขาจะทราบว่า ผู้ใช้ที่อยู่ในฐานข้อมูลหรือไม่
>> ดังนั้นคุณจะเห็นทั้งหมดของมันมา ร่วมกันในเว็บเซิร์ฟเวอร์
แล้วมีหนึ่ง HTTP การร้องขอ และการตอบสนองของ HTTP หนึ่งและทุกอย่าง
เพื่อให้แน่ใจว่าพวกคุณ เข้าใจในเรื่องนี้โทร AJAX
เพราะจะช่วยให้คุณเข้าใจทั้งหมด แนวความคิดที่เรากำลังพูดถึง
>> ดังนั้นนี่คือตัวอย่าง ของ AJAX กับ jQuery
และที่นี่เราจะทำอย่างไรกับรับ JSON
ดังนั้นเราไม่ได้พยายามที่จะได้รับ ภาพของแมวที่นี่หรือเป็ด
เรากำลังพยายามที่จะได้รับไฟล์ JSON
แล้วเราก็รอจนกว่า มันทำทำจุด
นั่นหมายความว่าผมกำลังรอการตอบสนอง
มันอาจจะใช้เวลาสักครู่
แล้วคุณจะเห็นการโหลดน้อย
ถ้าคุณต้องการที่จะทำเช่นนั้นในเว็บไซต์ของคุณ
ดังนั้น dot ทำและแล้วสิ่งที่ ที่เกิดขึ้นเมื่อมันทำ?
คุณผ่านในที่ไม่ระบุชื่อ ฟังก์ชั่นเช่นเดียวกับที่เราเห็นก่อน
เพราะทำคือเหตุการณ์เพียง เช่นการคลิกเมาส์หรืออะไรก็ตาม
สำหรับ jQuery
ดังนั้นคุณผ่านในฟังก์ชั่นนี้ด้วย ข้อมูลข้อความสถานะและ jqXHR
และโดยทั่วไปว่าเป็น ตัวแปรเพียงบางส่วน
ที่คุณสามารถใช้ในภายหลังจะมี สถานะของการร้องขอ HTTP,
ข้อมูลที่ว่ามันจะ ที่จะส่งกลับมาให้คุณ
ดังนั้นแล้วท่านในภายหลังสามารถตีความว่า และทำสิ่งที่มีความหมายกับมัน
และถ้ามันล้มเหลวเมื่อมันอาจล้มเหลว?
ดีเมื่อร้องขอ HTTP ให้ คุณ 500 หรือสิ่งที่ต้องการ
จากนั้นมันจะบอกคุณ สถานะสิ่งที่ชนิดของความล้มเหลวที่เป็น
และทุกประเภทของสิ่ง
คุณต้องให้แน่ใจว่า ที่จะจัดการกับทั้งสองกรณี
มิฉะนั้นโปรแกรมไปบ้า
>> Davin: เพื่อใช่ตรงนี้เป็น สิ่งที่คุณเห็นบน P-ชุดสุดท้ายของคุณ
โทร AJAX ที่เกิดขึ้นจริงที่อยู่ในการรับ JSON
นั่นคือการเรียกร้อง
แล้วจุดทำก็เหมือน ตรวจสอบถ้ามันมีอะไรที่ประสบความสำเร็จ
ถ้าเป็นที่ประสบความสำเร็จที่คุณต้องการ จะทำอะไรกับข้อมูล
คุณจะได้รับกลับมาจากที่ ขอข้อมูล JSON
นั่นคือสิ่งที่คุณจะได้รับกลับมา
ดังนั้นถ้าคุณจำได้จาก P-ชุดของคุณ จำนวนมากของคุณเป็นเหมือนวงเล็บข้อมูลฉัน
หรืออะไรก็ตามที่เชื่อมโยงจุดหรือชื่อเรื่อง
สิ่งที่กลับมา จาก JSON ว่าสิ่งที่
สาขาที่อยู่ในวัตถุ JSON ว่า นั่นคือสิ่งที่คุณได้รับกลับมา
ข้อมูลเป็นสิ่งที่คุณจะได้รับกลับมา
สถานะข้อความอะไรบางอย่างเพียงแค่ว่า ช่วยให้คุณรู้ว่าสิ่งที่เกิดขึ้น
แล้ว jqXHR ที่เพียง ขอ HTTP XML jQuery
นั่นเป็นเพียงเหมือนวัตถุ
และจากนั้นก็ล้มเหลวเช่นเดียวกับเกบกล่าวว่า
GABE: ในตัวอย่างเล็ก ๆ น้อย ๆ ของเรา abc123 เพียงเพื่อตรวจสอบว่าที่อยู่ในฐานข้อมูล
หรือไม่ข้อมูลจะเป็นสิ่งที่คุณ จะทำอย่างไรหากข้อมูลชื่อผู้ใช้จุดอยู่
ซึ่งเป็นสิ่งที่ PHP ของคุณสร้างขึ้นสำหรับ คุณถ้าข้อมูลชื่อผู้ใช้จุดอยู่แล้ว
ผมจะแจ้งเตือนผู้ใช้ ชื่อที่มีอยู่แล้ว
อื่นฉันแค่จะให้ ผู้ดำเนินการกรอกแบบฟอร์ม
ตกลงการรักษาความปลอดภัยเย็น
>> Davin: ต้องการให้ฉันไป?
>> GABE: ผมชอบคนนี้
ดังนั้นสิ่งที่มีลักษณะที่คุ้นเคย
เรากำลังทำเกือบ
ดังนั้นนี่เป็นเพียงตัวอย่าง พวกคุณเห็นในชั้นเรียน
คุณกำลังใช้ argv1 ที่นี่
ที่ชอบอาร์กิวเมนต์บรรทัดคำสั่ง
และเรากำลังคัดลอก mem ว่า ลงในบัฟเฟอร์ขนาด 12
ปัญหาอะไรที่นี่?
หน่วยความจำล้น!
เพราะเรามีบัฟเฟอร์ขนาด 12
argv1 อาจมีขนาดของสองพันล้าน
เราไม่ได้ทำการตรวจสอบขอบเขตใด ๆ
ดังนั้นเราอาจจะคัดลอกหน่วยความจำมาก
และเราจะเป็นโดยเฉพาะอย่างยิ่ง ที่ไม่ดีเกี่ยวกับเรื่องนี้
สิ่งที่เราจะทำที่ มากหมายถึงในกรณีนี้หรือไม่?
ใช่?
ผู้ชม: ส่วนหนึ่งของสิ่งที่สองพันล้าน มีรหัสปฏิบัติการที่ส่งกลับ
[ไม่ได้ยิน]
GABE: แน่นอน
นั่นคือชนิดของ สิ่งที่ผู้คนใช้
การแหกคุก iPhone ตัวอย่างเช่น
ดังนั้นชนิดของสิ่งที่
เพราะคุณก็สามารถทำให้อุปกรณ์ รันโค้ดที่คุณต้องการใด ๆ
การแก้ไขเพื่อให้การแก้ไขปัญหาเป็นเรื่องง่าย
เพียงแค่ตรวจสอบขอบเขต
คุณตรวจสอบ null เพราะ เรามักจะตรวจสอบ null
เมื่อเรากำลังติดต่อกับสตริง
แล้วคุณจะใช้ ความยาวสตริงก่อน
และถ้าสตริง ความยาวสตริงที่ถูกต้อง
ความยาวซึ่งเป็นภายใน 0 และ 12 แล้วเรากำลังดี
>> Davin: หากคุณไม่ได้ตรวจสอบ null รวดเร็วจริงสิ่งที่จะเกิดขึ้น?
มันจะ SEG ความผิด
มันจะทำไม SEG ผิด?
เพราะคุณกำลังเรียก strlen บน null
GABE: ใช่
จริงหรือเท็จโดยใช้หนึ่ง รหัสผ่านที่เป็นความคิดที่ดี
>> ผู้ชม: เท็จ
>> GABE: เท็จ
ใช้รหัสผ่านที่จำนวนมากและขนาดใหญ่ที่มีความยาว
ไอคอนรูปกุญแจมั่นใจในความปลอดภัย
>> ผู้ชม: เท็จ
>> GABE: เท็จ
มันไม่ได้หมายความว่าอะไร
มันเป็นแค่ไอคอน
SSL ป้องกัน คนในการโจมตีกลาง
ผู้ชม: เท็จ
GABE: เท็จ
OK เพื่อให้ทุกคนที่เป็นเท็จ
ดี
[ไม่ได้ยิน]
ต้องการที่จะพูดคุยเกี่ยวกับเรื่องนี้?
เปิดของคุณ
Davin: ประเภทของการโจมตี คนที่อยู่ตรงกลาง
อะไรคนในการโจมตีกลาง?
ผู้ชม: [ไม่ได้ยิน]
Davin: ถ้าคุณส่ง HTTP คำขอของพวกเขาสามารถทำเช่นนี้ใช่มั้ย?
แต่ถ้าคุณกำลังส่ง HTTPS พวกเขา อาจจะไม่สามารถที่จะทำเช่นนี้
ยังมีอีกหลายจุด พร้อมเชื่อมต่อของคุณ
คุณมีเราเตอร์
คุณมีเซิร์ฟเวอร์ DNS
ถ้ามีคนสามารถที่จะทางร่างกาย ดูสิ่งที่คุณกำลังส่ง
ใครบางคนเพื่อให้สามารถที่จะ ได้รับจริงระหว่างคุณ
ไคลเอนต์และเซิร์ฟเวอร์และเป็น สามารถมองเห็นสิ่งที่คุณกำลังส่ง
นี้คือคนในการโจมตีกลาง
ดังนั้นจะเห็นสิ่งที่คุณกำลังพยายามที่จะได้รับจาก เซิร์ฟเวอร์หรือสามารถที่จะดูหน่อยแย่ลง
คุณอาจจะสามารถที่จะเห็น คุกกี้หรือสิ่งที่ต้องการ
>> ดังนั้นสำหรับตัวอย่างเช่นถ้า คุณไม่ได้ใช้ SSL เขา
อาจจะสามารถที่จะเห็น ID คุกกี้ของคุณ
และนี่คือสิ่งที่เรียกว่าหักหลังเซสชั่น เพราะเขาเห็นคุกกี้ ID ของคุณ
และจากนั้นเขาก็สามารถที่จะไปว่า เว็บไซต์และหลอกว่าเป็นคุณ
เพราะเพียงแค่ต้องการใน PHP จำ เมื่อเราเข้าสู่ระบบในสิ่งที่เราจะทำอย่างไร
เราตั้งรหัสเซสชันเท่ากับ ID
ดังนั้นที่ระบุถึงตัวคุณ
นั่นเป็นเหตุผลที่คุณสามารถดูผลงานของคุณ และไม่ใช่ทุกคนที่ผลงานของผู้อื่น
>> ดีถ้าฉันสามารถที่จะได้รับคุกกี้ที่ แล้วฉันจะเข้าสู่หน้าเว็บที่
และจากนั้นผมก็สามารถเห็นข้อมูลของคุณ และเริ่มต้นการซื้อและขายสิ่ง
นั่นคือการหักหลังเซสชั่น
แต่คุณไม่ควรจะ to-- สามารถเพื่อให้คุณ สามารถใช้คนในการโจมตีกลาง
แม้ว่าพวกเขากำลังใช้ SSL
แต่คุณไม่ควรจะสามารถ
หากมีการใช้ SSL, คุณไม่สามารถจี้เซสชั่น
ทำไม?
เพราะทั้งหมดที่เข้ารหัส ใช่มั้ย? ถ้ามันเข้ารหัส
และฉันยังคนที่อยู่ใน ตรงกลางผมยังคงได้รับข้อมูลของคุณ
ที่ดี
แต่มันมีการเข้ารหัส
ดังนั้นผมจึงไม่สามารถใช้งานได้จริงๆ
ดังนั้นที่สอง
>> จริงอย่างรวดเร็ว, เว็บไซต์ข้ามปลอมแปลงคำขอ
นั่นเป็นเพียงว่ามีการเชื่อมโยง และการเชื่อมโยงที่ทำอะไรบางอย่าง
ที่คุณไม่คิดว่ามันควรจะทำอย่างไร
ดังนั้นสำหรับตัวอย่างเช่นหากการเชื่อมโยงเป็น จะไปซื้อหุ้นหรือขายหุ้น
และคุณไม่ทราบว่า
คุณคลิกที่ลิงค์ ส่งคำขอซื้อ
หรือขายสิ่งที่ คุณไม่ได้หมายความว่าจะทำอย่างไร
ที่ว่า
>> สคริปต์ข้ามไซต์ดังนั้นที่นี่ คุณผ่านในตัวแปรผ่าน Q,
แทนการส่งผ่านในบางชนิด ของมูลค่าอาจจะถามก็เหมือนชื่อ
ดังนั้นแทนที่จะผ่านเท่ากับ Q Davin หรือสิ่งที่ต้องการที่
ถ้าคุณไม่ได้ใช้ภาษา HTML ตัวอักษรพิเศษถ้าคุณ
ไม่ได้หลบหนีนี้เพื่อให้แน่ใจว่าเป็น ตกลงแล้วฉันจะผ่านในแทน
ขอบอกว่าที่นี่ฉันพูด สิ่งพิมพ์หรือสิ่งที่ต้องการที่
แล้วฉันจะผ่านในที่นี่โทรสคริปต์
>> ดังนั้นแล้วแทน แค่ตัวแปร
ฉันก็จะรันการเรียกใช้สคริปต์นี้
ดังนั้นภายในสคริปต์ที่ เรียกสิ่งที่จะทำอย่างไร
สถานที่ตั้งเอกสารจุดที่จะ เปลี่ยนสถานที่ของเอกสาร
ดังนั้นฉันจะเปลี่ยนเส้นทาง ไปที่อื่น
มันเรียกว่าคนเลวใน ตัวอย่างนี้ดีมาก
ไม่สามารถคิดของคำว่า
และแล้วสิ่งที่ยิ่ง เลวร้ายก็คือว่าฉันจะ
คุกกี้แล้วตั้งซึ่งเป็นบางส่วน ตัวแปรที่ฉันมีในเว็บไซต์นี้
ฉันจะตั้งค่าเท่ากัน คุกกี้จุดเอกสาร
ดังนั้นฉันจะ ที่จะขโมยคุกกี้ของคุณ
และฉันจะเปลี่ยนเส้นทาง ข้อมูลบางอย่างไปยังเว็บไซต์
ที่คุณไม่ควรที่จะเข้าถึง
และทั้งหมดนี้เกิดขึ้นเพราะคุณ ไม่ได้หลบหนีสิ่งที่คุณเคยเห็น
ใช่?
>> ผู้ชม: ดังนั้นเพียงเพื่อ ให้ชัดเจนก็คือ
vulnerable.com ว่า จะมีความเสี่ยงในเรื่องนี้
ดังนั้นการเชื่อมโยงที่จะปรากฏ ในหน้าใดก็ตาม
มีคนคลิกที่มัน ไปที่ vulnerable.com
คุณมีคุกกี้ vulnerable.com
สมมติว่า Facebook เป็น ความเสี่ยงดังนั้น facebook.com
คุณมีคุกกี้ Facebook ของคุณ
สิ่งนี้จะทำคุณ จะ facebook.com,
มันเปลี่ยนเส้นทางทันที คุณ badguy.com,
แต่รวมทั้งข้อมูลคุกกี้ของคุณ
ดังนั้นจึงเปลี่ยนเส้นทางอย่างรวดเร็ว แต่คุกกี้ Facebook ของคุณ
มาพร้อมกับการเปลี่ยนเส้นทางที่ และนั่นคือวิธีที่พวกเขา [ไม่ได้ยิน]
GABE: ใช่มี บางสิ่งที่มีค่าเฉลี่ยมาก
ที่ผู้คนสามารถทำอย่างไรถ้ามีนี้
ตัวอย่างเช่นถ้า Facebook ได้รับอนุญาต ทุกคนที่จะเปลี่ยนชื่อผู้ใช้ของคุณ
และพวกเขาก็ไม่ได้ดำเนินการใด ๆ การตรวจสอบสติเพื่อให้คุณ
สามารถแทรกสิ่ง JavaScript ที่ การเปลี่ยนแปลงภาพของคุณไปยังหนูแฮมสเตอร์
และที่แทรกเดียวกัน JavaScript เป็นทุกคนที่มองหน้าของคุณ
ดังนั้นทุกคนที่มองหน้าของคุณ มีสิ่งที่เหมือนกันในชื่อผู้ใช้
และเพราะมันเป็นไวรัส มันจะกระจายชี้แจง
Davin: เราจะข้ามผ่านมา หนึ่งและจากนั้นเรากำลังทำ
ดังนั้นนี่เป็นเพียงตัวอย่างหนึ่ง
ดังนั้นนี่คือพวกเขาไม่ได้ หนีตาราง SQL ของพวกเขา
เพื่อให้คุณสามารถวางไว้
ดังนั้นคุณจึงต้องการที่จะหลบหนีสิ่ง
นั่นคือตัวอย่างก่อนหน้านี้ ด้วยการเขียนสคริปต์ข้ามไซต์
ขออภัยเราวิ่งปลายนิด ๆ หน่อย ๆ
พรุ่งนี้ขอโทษ!
พรุ่งนี้เรามีเวลาทำงาน
ดังนั้นเวลาทำงานใน Cabbot 8:00-11:00
สำนักงานชั่วโมงเป็น อย่างเคร่งครัดสำหรับคำถามตอบคำถาม