>> HANNAH Blumberg: สวัสดีทุกคน
เรากำลังจะเริ่มต้น เพียงไม่กี่นาทีในช่วงต้น
เนื่องจากเรามีเป็นจำนวนมากทั้ง ของวัสดุที่จะได้รับผ่าน
ฉันฮันนาห์
ฉัน TF
มาเรียเป็นไปได้ร่วมงานกับ เราในเวลาเพียงไม่กี่นาที
เธอสอนที่เหมาะสมส่วนก่อน
ผมสอนที่เหมาะสมส่วน หลังจากนั้นดังนั้นเราจะ
ที่จะให้มันไปชั่วโมงครึ่ง
>> เพื่อที่คุณจะเห็นได้ที่นี่เรามีค่อนข้าง หัวข้อไม่กี่ที่เราจำเป็นต้องได้รับผ่าน
ดังนั้นเราจะไปนิด ๆ หน่อย ๆ ได้อย่างรวดเร็ว
แต่ถ้าที่จุดใด ๆ ที่เราพูดอะไรบางอย่าง เร็วเกินไปหรือคุณไม่เข้าใจ
อย่าลังเลที่จะขัดขวางการที่มีคำถาม
เราต้องการที่จะสามารถที่จะทำให้เรื่องนี้ ทบทวนเซสชั่นประโยชน์กับทุกท่าน
เป็นไปได้.
ที่น่ากลัว
>> ดังนั้นขอกระโดดด้วย หัวข้อบางอย่างที่เราจริง
มากในเวลาสั้น ๆ ปกคลุมมากสำหรับ 0 ตอบคำถามในการตอบคำถามเซสชั่นรีวิว 0
ดังนั้นเริ่มต้นด้วยรายการที่เชื่อมโยง
ดังนั้นเพียงแค่ให้แน่ใจว่าคุณมีบาง ความรู้พื้นฐานเกี่ยวกับรายการที่เชื่อมโยง
และมีความสะดวกสบายทำ บางส่วนของการดำเนินงานขั้นพื้นฐาน
>> ดังนั้นเพียงแค่เพื่อตรวจสอบการเชื่อมโยง รายการดีกว่าอาร์เรย์
เพราะพวกเขาสามารถเติบโตแบบไดนามิก
ดังนั้นเราจึงมีประโยชน์มากว่า
เราเคยเห็นพวกเขาใช้ ในตารางแฮชเมื่อเรา
ไม่ทราบว่ากี่ สิ่งที่เราจะต้องการ
เพื่อแทรกลงในโครงสร้างข้อมูลของเรา
แต่น่าเสียดายที่เรามีชิ้นส่วนของ รายการที่เชื่อมโยงทั่วหน่วยความจำ
ดังนั้นเราจะไม่จำเป็นต้องเป็น สามารถที่จะทำเวลาคงเข้าถึง
องค์ประกอบในรายการที่เชื่อมโยงใด ๆ
เพื่อที่จะได้พบกับ องค์ประกอบเฉพาะอย่างยิ่งเรา
ต้องย้ำทั้งหมด ทางจากจุดเริ่มต้น
ดังนั้นเก็บไว้ในใจว่าส่วนใหญ่ของ การดำเนินงานขั้นพื้นฐานมีโอเมก้า 1
ดังนั้นแทรกเป็นเพียงการไปใช้เวลา 1
ลบจะใช้ n ตั้งแต่เรา ต้องไปหาจากรายการ
และการค้นหาอาจจะใช้เวลาที่เลวร้ายที่สุด n
เราไม่สามารถทำสิ่งที่ชอบ การค้นหาแบบไบนารีในรายการที่เชื่อมโยง
เนื่องจากเราไม่สามารถเพียงแค่ สุ่มข้ามไปที่ตรงกลาง
เย็น.
ที่น่ากลัว
>> นิด ๆ หน่อย ๆ ของกอง
นี้อีกครั้งขึ้นมาในการตอบคำถาม 0 เพื่อให้คุณ ควรจะเป็นซุปเปอร์พอใจกับมัน
แต่สำหรับกองเราขอให้คุณ จะจำสแต็คของถาด
และมันก็เป็นไปได้ในครั้งแรกที่มีอายุการใช้งานออก
ดังนั้นเราจึงสแต็คสิ่งขึ้น ในกองแล้ว
ถ้าเรากำลังพยายามที่จะใช้บางสิ่งบางอย่าง off-- ที่เราเรียก popping ออก
stack-- ที่เราออกมาด้านบน
และถ้าเราต้องการที่จะนำบางสิ่งบางอย่าง ในกองเราเรียกว่าการผลักดัน
ดังนั้นจึงมักจะได้รับการเติบโตขึ้น จากด้านล่างเช่นสแต็คของถาดที่
ที่น่ากลัว
>> เราได้เห็นกองดำเนินการ ที่มีทั้งรายการที่เชื่อมโยงและอาร์เรย์
หากคุณกำลังดำเนินการ กับอาร์เรย์ที่คุณต้องการ
เพื่อให้แน่ใจว่าในการติดตาม ทั้งขนาดและความจุ
ดังนั้นขนาดเป็นไปได้ในปัจจุบัน จำนวนของสิ่งที่ในกองของคุณ
ในขณะที่กำลังการผลิตเป็นจำนวนรวม สิ่งที่คุณสามารถเก็บไว้ในสแต็คของคุณ
เย็น.
>> มากในทำนองเดียวกันเรามีคิว
ในกรณีนี้แทนการคิดเกี่ยวกับ สแต็คของถาดคิดของบรรทัด
นี้จะเป็นครั้งแรกในครั้งแรกออกมา
ดังนั้นหากคุณกำลังแถวสำหรับ บางสิ่งบางอย่างที่ร้าน
เราหวังว่าคนเป็นครั้งแรกใน สายเป็นไปได้ช่วยครั้งแรก
>> แทนที่จะพูดว่าการผลักดันและ ปรากฏเหมือนที่เราทำสำหรับกอง
เราก็บอกว่า Enqueue และ dequeue
และอีกครั้งถ้าคุณเป็น การดำเนินการนี​​้กับอาร์เรย์
เราต้องติดตาม ไม่เพียง แต่ขนาด
และความสามารถ แต่ยังหัวซึ่ง เป็นไปได้ที่ด้านหน้าของคิวของเรา
เย็น.
คำถามใด ๆ เกี่ยวกับการใด ๆ ที่?
ที่น่ากลัว
ย้ายขวาพร้อม
>> ตกลงตารางแฮช
นี่คือสิ่งที่มันเริ่มที่จะ ได้รับที่น่าสนใจจริงๆ
ดังนั้นตารางแฮชเป็นหนึ่งในการดำเนินงาน ของอาเรย์
ดังนั้นโดยทั่วไปสิ่งที่เกิดขึ้น คือเรามีการป้อนข้อมูลทั้งหมดนี้
และเราจะให้มันกัญชา ฟังก์ชั่นที่ว่า
ตกลงนี้เป็นที่ใน ตารางแฮชมันเป็น
>> ดังนั้นฟังก์ชันแฮชที่ง่ายที่สุด ที่เราได้เห็นเป็นเพียงการพูด
ตกลงสมมติว่าเราต้องการที่จะนำ สตริงในตารางแฮชของเรา
และเป็นความคิดที่ง่ายจริงๆ อาจจะมีการพูดว่าตกลง
ขอเพียงแค่เรียงลำดับโดย ตัวอักษรตัวแรกของคำว่า
ดังนั้นคุณจะเห็นที่นี่เราใช้กล้วย เราใส่มันผ่านฟังก์ชั่นแฮช
และกล่าวว่าเดี๋ยวก่อนว่า ควรจะไปที่ดัชนี 1
>> ดังนั้นเราจึงสามารถคิดหลักของกัญชา ตารางเป็นพวงของถังที่แตกต่างกัน
และแต่ละถังเหล่านั้นเป็นไป จะถือหัวของรายการที่เชื่อมโยง
และในรายการที่เชื่อมโยงว่าเป็นที่ที่เราสามารถ จริงนำชิ้นส่วนที่แตกต่างกันของข้อมูล
>> ดำน้ำเพื่อให้นิด ๆ หน่อย ๆ ในการทำงานกัญชาที่นี่
ตัวอย่างเช่นฉันเพียงแค่ อธิบายที่เราก็พูดว่า
ตกลงใช้ตัวอักษรตัวแรก ของคำและเรา
จะเรียงลงในถัง
ดังนั้นน่าจะมี 26 ถัง หนึ่งสำหรับแต่ละตัวอักษร
ทำไมไม่ได้นี้ฟังก์ชันแฮชที่ดี?
สิ่งที่ทำให้นี้ไม่เหมาะ?
ใช่.
>> ผู้ชม: คุณจะ ที่จะมีการชนกัน
>> HANNAH Blumberg: ใช่ว่า
คุณกำลังจะมีการชนกัน
เพื่อให้เป็นสิ่งหนึ่ง
และเราจะพูดคุยเกี่ยวกับวิธีการที่เราสามารถทำได้ แก้ไขการชนกันในเวลาเพียงสอง
ปัญหาอีกประการหนึ่งที่มีนี้ ฟังก์ชันแฮชโดยเฉพาะอย่างยิ่ง
คือการที่เราแตกต่างกัน ถังจะไปได้
ของสวยอย่างเห็นได้ชัดขนาดแตกต่างกัน
>> เรารู้ว่ามีเป็นจำนวนมากทั้ง คำที่ขึ้นต้นด้วยกว่าเอ็กซ์
ดังนั้นเรากำลังจะมีมาก ถังไม่สมดุลในตารางแฮชของเรา
เย็น.
เพื่อใช่ให้ของได้รับกลับไป จุดของการชน
เราจะทำอย่างไรหากมีการปะทะกันหรือไม่?
>> เรามีตัวเลือกที่แตกต่างกันทั้งคู่
ดังนั้นหนึ่งจึงคิดว่าเรากำลังพยายาม ที่จะนำผลไม้เล็กลงในตารางแฮชของเรา
และเราจะเห็นโอ้ที่เราต้องการ ที่จะนำมันในดัชนีที่ 1,
แต่กล้วยแล้วอาศัยอยู่ที่นั่น
ที่เรากำลังจะทำอะไร?
เรามีสองตัวเลือกหลัก
>> จำนวนหนึ่งที่เราสามารถพูดได้, OK, มีห้องพักไม่มีในดัชนีที่ 1,
แต่ขอเพียงแค่ให้มองผ่าน จนกว่าเราจะสามารถหาจุดเปิดอีก
ดังนั้นเราจะพูดว่าตกลง ขอวางไว้ในจุดที่ 3
นั่นเป็นหนึ่งในตัวเลือก
ที่เรียกว่าละเอียดเชิงเส้น
>> และเป็นตัวเลือกที่สองคือว่าตกลงกัน ขอเพียงให้แต่ละถังเหล่านี้
เป็นประมุขของรายการที่เชื่อมโยง
และมันก็ตกลงถ้ามีมากขึ้น มากกว่าหนึ่งสิ่งในถัง
เรากำลังจะไป ผนวกมันลงบนหน้า
ดังนั้นที่นี่คุณสามารถดูตกลง เมื่อเราใส่เบอร์รี่เรา
เพียงแค่เอากล้วยชนิดของ ผลักดันให้มันไปนิด ๆ หน่อย ๆ
และโยนผลไม้เล็ก ๆ อยู่ในนั้น
และนั่นก็ยังดีโดยสิ้นเชิง
นี้เรียกว่าการผูกมัดแยกต่างหาก
คุณสามารถคิดว่านี้เป็นชนิดเช่น อาร์เรย์ของหัวเชื่อมโยงไปยังรายการ
คำถามใด ๆ เกี่ยวกับกัญชา ตารางการทำงานที่กัญชา?
ที่น่ากลัว
>> ต้นไม้และพยายาม
ดังนั้นต้นไม้เป็นประเภทใด ของโครงสร้างข้อมูล
ที่มีการจัดเรียงบาง ของลำดับชั้นหรือบางประเภท
ของการจัดอันดับกับวัตถุที่แตกต่างกันของคุณ
และนี้จะกลายเป็นซูเปอร์ ชัดเจนเมื่อเราเห็นตัวอย่าง
และเราพยายามที่เห็นพร้อม กับตารางแฮชใน pset5--
ซึ่งอีกเกมที่ยุติธรรมโดยสิ้นเชิง สำหรับ quiz-- นี้เป็นข้อมูลอีก
โครงสร้างที่เราสามารถทำได้ เก็บสิ่งที่แตกต่าง
ในกรณีที่พจนานุกรม เราเก็บไว้พวงของคำ
ดังนั้นลองมาดูที่ต้นไม้บาง
ดังนั้นนี่คือตัวอย่างของต้นไม้หนึ่ง
มันมีชนิดของโครงสร้าง ว่าโครงสร้างลำดับชั้น
ที่คุณสามารถเห็นได้ว่า โหนด 1 นี้ที่ด้านบน
มีการเรียงลำดับของการจัดอันดับดังกล่าวข้างต้นที่ 2 และ 3 บาง ซึ่งอยู่เหนือ 4, 5 และ 6 และ 7
ซึ่งอยู่เหนือ 8 และ 9
ดังนั้นนั่นคือทั้งหมดที่เราหมายถึงโดย ต้นไม้เพื่อให้คุณสามารถเพียงแค่ชนิด
ของภาพนี้ในหัวของคุณ
>> ขณะนี้เรามีคู่ของ ต้นไม้ที่เฉพาะมากขึ้น
ดังนั้นหนึ่งตัวอย่างคือต้นไม้ไบนารี
และต้นไม้ไบนารีคือ อีกครั้งเพียงไปได้
โครงสร้างข้อมูลที่มีการจัดเรียงของบางส่วน ลำดับชั้น แต่แต่ละโหนด
สามารถมีลูกสองคนที่มากที่สุด
นั่นคือสิ่งที่ไบนารีคำที่มาจาก
ดังนั้นนี่คือตัวอย่างของต้นไม้ไบนารี
เพื่อให้เป็นหมวดหมู่ของต้นไม้ที่มีขนาดเล็ก
>> ตอนนี้ขอได้เฉพาะเจาะจงมากขึ้นและ พูดคุยเกี่ยวกับการค้นหาแบบไบนารีไบนารี trees--
ต้นไม้ค่อนข้าง
ดังนั้นนี่คือความคิดที่จะไม่เพียง แต่ ทุกโหนดมีลูกสองคนมากที่สุด
แต่ทั้งหมดของเด็กไป ด้านซ้ายจะมีขนาดเล็ก
และทั้งหมดของเด็กไป สิทธิที่จะมีขนาดใหญ่
ดังนั้นเพียงแค่แจ้งให้ทราบในของเรา ต้นไม้ไบนารีมี
ความสัมพันธ์ระหว่างตัวเลขไม่
แต่ในการค้นหาแบบไบนารีของเรา ต้นไม้ที่เราเห็นตกลงนี่คือ 44
และจำนวนทางด้านซ้ายของ 44 ทุกคน ที่มีขนาดเล็กและทุกอย่างไปทางขวา
ที่มีขนาดใหญ่
>> และที่ถือในทุก ระดับของต้นไม้
ดังนั้นที่นี่นี้มีขนาดเล็กกว่า 22 และมีขนาดใหญ่กว่า 22
และที่ว่าต้นไม้ค้นหาแบบทวิภาค
ทำไมเราคิดว่ามันเรียกว่า ต้นไม้ค้นหาแบบทวิภาค?
ขั้นตอนวิธีการสิ่งที่ไม่ได้เตือนคุณ?
ผู้ชม: การค้นหาแบบไบนารี
HANNAH Blumberg: การค้นหาแบบไบนารี
เพราะถ้าคุณกำลังมองหา หมายเลขเฉพาะในต้นไม้นี้
ที่จุดทุกท่านก็สามารถเคาะ ปิดครึ่งหนึ่งของต้นไม้ซึ่งเป็นที่ดี
และเพื่อที่จะให้เราบางสิ่งบางอย่าง ที่มีลักษณะเป็นจำนวนมากเช่นการค้นหาไบนารี
มีคำถามอะไรไหม?
สิทธิทั้งหมดเย็น
>> สิทธิทั้งหมดพยายาม
ทุกคนที่ชื่นชอบ
ดังนั้นนี่คือตัวอย่างที่ เราได้เห็นพวงในชั้นเรียน
และครั้งนี้เป็นเพียงอีกหนึ่ง วิธีการที่เราสามารถเก็บข้อมูล
ในกรณีที่พจนานุกรมอีกครั้ง นี้เป็นเพียงจะเป็นสตริง
ดังนั้นเรามาดูสิ่งนี้จริง ดูเหมือนว่าอยู่ในระดับที่ต่ำกว่าเล็กน้อย
>> ดังนั้นลองมาดู ที่หนึ่งโหนดใน Trie
และเราจะเห็น, OK, มีจะ จะเป็นบูลีนและโหนด
ตัวชี้ไปยังโหนด
และเราเห็นว่า บูลีนที่เรียกว่า is_word
เพื่อเป็นหลักที่ ไปเพื่อให้สอดคล้อง
ไปสามเหลี่ยมเล็ก ๆ น้อย ๆ เหล่านี้ที่ กล่าวว่าถ้าคุณเคยอยู่ที่นี่
คุณได้พบคำที่สมบูรณ์
>> เรารู้ว่า "ทัวริง" มากกว่า นี่เป็นคำที่สมบูรณ์
ในขณะที่เพียงแค่ T-U-R คือไม่ได้คำ เพราะเราไม่เห็นว่าเดลต้าเล็ก ๆ น้อย ๆ
และที่สามเหลี่ยมเล็ก ๆ น้อย ๆ อีกครั้ง สอดคล้องกับ is_word นี้
นี้ is_word บูลีน
และแล้วเรามีอาร์เรย์ของเด็ก
ดังนั้นในแต่ละระดับคุณ มีโหนดโดยเฉพาะอย่างยิ่ง
และที่จุดโหนดไปยัง อาร์เรย์ของตัวอักษรทั้งหมด
>> ดังนั้นคุณจะเห็นอีกครั้ง ใน picture-- นี้ฉัน
จะให้กระโดดไป forth-- ที่อาร์เรย์ที่ที่ด้านบน
มีพวงของการที่แตกต่างกัน โหนดออกมาจากมัน
มันมี 26 หรือ 27 ถ้าคุณต้องการ ที่จะรวมตัวเป็นพิเศษ
และสิ่งนี้จะช่วยให้เรา วิธีการจัดเก็บข้อมูลของเรา
ในทางที่สามารถมองบน ที่คุณสามารถมองขึ้นเร็วสุด
เวลาการค้นหาสำหรับ Trie คืออะไร?
>> ผู้ชม: [ไม่ได้ยิน]
>> HANNAH Blumberg: ใช่
ในทางทฤษฎีแล้วก็ถึงเวลาที่คงที่
มันเพียง แต่จะเป็นขนาดของ คำที่คุณต้องการค้นหา
แม้ว่าเราจะเพิ่ม zillion คำพูดมากขึ้นในการ Trie ของเรา
ก็ไม่ได้ไปที่จะพาเรา ได้อีกต่อไปเพื่อตรวจสอบ
ถ้าคำที่กำหนดอยู่ในของ Trie
เพื่อให้เป็นที่ดีจริงๆ
>> ผู้ชม: คุณไม่เพียง เริ่มต้นอาร์เรย์ที่?
คุณพลาดจุดหรือสอง
คุณก็สามารถพูดคุยเกี่ยวกับ ที่เป็นครั้งที่สอง?
>> HANNAH Blumberg: แน่นอนว่าอย่าง
คำถามที่ดี.
คำถามคือเรา มีอาร์เรย์ที่เป็น
จะมีดาวเป็นโหนด เมื่อเทียบกับโหนดเพียงใช่มั้ย?
เย็น.
ดังนั้นนี่คือสิ่งที่เรากำลังจะบอกว่า เป็นอาเรย์ของเราเป็นเพียง
จะเป็นตัวชี้ไปยังอาร์เรย์อื่น ๆ
ดังนั้นจึง essentially-- ชนิดของมัน รู้สึกเหมือนรายการที่เชื่อมโยงในลักษณะนี้
ที่แต่ละของเด็กเหล่านี้ เพียงแค่ชี้ไปยังโหนดถั​​ดไป
>> และวิธีการที่เรา จริงตรวจสอบเดี๋ยวก่อนตกลง
เราได้ผ่านซ้ำทั้ง คำนี้เป็นคำในพจนานุกรม
เราเพียงแค่ตรวจสอบ is_word นี้
คำถามที่ดี
ใช่.
ผู้ชม: ตกลง
ดังนั้นสิ่งที่เป็นรันไทม์สำหรับ Trie หรือไม่
>> HANNAH Blumberg: Sure
ดังนั้นรันไทม์สำหรับ Trie สำหรับที่ การค้นหาเป็นไปได้เวลาคง
ดังนั้นมันจึงเป็นเพียงการไปได้ จำนวนของตัวอักษรในคำว่า
มันไม่ได้ขึ้นอยู่กับ ขนาดของพจนานุกรม
หรือขนาดของโครงสร้างข้อมูล
ดังนั้นนี่คือตัวอย่างที่ง่ายขึ้นเล็กน้อย
>> ในกรณีนี้คุณจะเห็นว่า ค้างคาวเป็นคำในพจนานุกรม
และคุณมีซูม แต่คุณ ไม่ได้มีบางสิ่งบางอย่างเช่นสวนสัตว์
วิธีการที่เราจะทำให้สวนสัตว์?
ทำอย่างไรเราจะเพิ่มสวนสัตว์ของเรา พจนานุกรมเพื่อ Trie ของเราหรือไม่
ใช่.
>> ผู้ชม: ตรวจ is_word จริงสำหรับ [ไม่ได้ยิน]
HANNAH Blumberg: ดี
ดังนั้นเราจะบอกว่า Z-O-O และจากนั้นเราต้องการ ต้องการที่จะตรวจสอบการปิดกล่องด้วยเช่นกันว่า
ที่ดี
ลองเปรียบเทียบสั้นมาก พยายามที่เมื่อเทียบกับตารางแฮช
พยายามที่ดีจริงๆ เพราะในขณะที่เรากล่าวว่า
พวกเขาให้การค้นหาอย่างต่อเนื่องเวลา
แต่ข้อเสียใหญ่ คือพวกเขากำลัง humongous
คุณจะได้รับความรู้สึกที่ แม้โดยมองไปที่มัน
ว่ามันจะใช้เวลา เป็นจำนวนมากของหน่วยความจำ
ดังนั้นพวกเขากำลังไปได้มาก มีขนาดใหญ่กว่าตารางแฮช
แต่พวกเขากำลังจะให้ เราได้เร็วขึ้นมากครั้งการค้นหา
เพื่อให้เป็นชนิดของคุณ แลกเปลี่ยนสิ่งที่คุณดูแลเกี่ยวกับ
ไม่ว่าจะเป็นความเร็วของมันหรือหน่วยความจำ
คำถามใด ๆ เกี่ยวกับการใด ๆ ที่ ทั้งหมดของโครงสร้างข้อมูล C
สวย.
ตกลง.
เรากำลังจะย้ายไปเล็ก ๆ น้อย ๆ บิตของการพัฒนาเว็บกับมาเรีย
MARIA ZLATKOVA: น่ารัก
ตกลง.
>> HANNAH Blumberg: คุณสามารถใช้แล็ปท็อปของฉัน
>> MARIA ZLATKOVA: ดี
ตกลงเย็น
ขณะที่เราย้ายในขณะนี้ไปยังเว็บ การพัฒนาเราได้พูดคุยเล็ก ๆ น้อย ๆ
เกี่ยวกับการเปลี่ยนแปลงการอนุญาต ของไฟล์และไดเรกทอรี
เพื่อให้พวกเขาสามารถเข้าถึงได้ ผู้ใช้คนอื่นไปทั่วโลก
และเพื่อที่เราจะได้เห็นว่า โดยทั่วไปเราสามารถนำพวกเขา
เมื่อเราพัฒนาสิ่งที่ต้องการเว็บไซต์ ที่เราได้รับส่วนใหญ่ทำ
>> ดังนั้นเราจึงเห็นคำสั่ง chmod ที่ ซึ่งเป็นโหมดการเปลี่ยนแปลงโดยทั่วไป
นั่นเป็นคำสั่ง Linux และ จะเปลี่ยนสิทธิ์การเข้าถึง
ของวัตถุระบบแฟ้ม
และวัตถุระบบแฟ้มเป็น เพียงไดเรกทอรีไฟล์
สิ่งที่คุณสามารถทำได้ เปลี่ยนแปลงสิทธิ์ของ
>> ดังนั้นจะเห็นสิทธิ์ของแฟ้ม เราพิมพ์คำสั่ง ls รายการ, -l
และเมื่อเราพิมพ์ที่เรา มักจะเห็นการอนุญาตบางอย่าง
ที่มีลักษณะการจัดเรียงของเช่นนี้ ในด้านหน้าของชื่อไดเรกทอรี
ดังนั้น d หมายถึงไดเรกทอรี
แล้วเรามีสาม triads ที่พื้น
อ้างสิทธิ์ของทั้ง ผู้ใช้กลุ่มหรือโลก
>> ประเภทของสิทธิ์ที่เราสามารถทำได้ มีทั้งสามกลุ่มคน
มีทั้งอาร์สำหรับการอ่าน w, สำหรับ เขียนและ x สำหรับการดำเนินการ
และเราจะได้มีที่สำหรับ กลุ่มและทั่วโลกเช่นกัน
สิ่งที่ยุ่งยากคือบางครั้ง เมื่อเราพิมพ์คำสั่ง chmod ที่
เราจะพิมพ์ตัวเลขบางอย่าง ที่ประกอบด้วยสามบิต
เพื่อให้เราสามารถทำเช่นเดียวกับ 777 และที่พื้น
หมายถึงมูลค่าเพิ่ม ของแต่ละ triads เหล่านี้
เพราะอาจะอ้างถึง 4 w, จะ อ้างถึง 2 และ x จะอ้างถึง 1,
ดังนั้นเมื่อเพิ่มขึ้นในแต่ละของตัวเลข จะลงมาเป็นจำนวนที่สะสม
เป็นค่าที่สะสมระหว่าง 0 และ 7
ดังนั้นเรายังสามารถมี 0 สิทธิ์ที่ทุกคน
และที่พื้นจะให้เรา สิทธิ์สำหรับทั้งผู้ใช้
กลุ่มหรือโลก
คำถามใด ๆ เกี่ยวกับเรื่องนี้เพื่อให้ห่างไกล?
>> ผู้ชม: คุณบอกว่าอ่าน 4?
MARIA ZLATKOVA: ใช่
ผู้ชม: [ไม่ได้ยิน]
HANNAH Blumberg: Yup
ผู้ชม: และแล้วโดยการเพิ่มทุกคน คนอื่น ๆ จะแสดงหมายเลขของคุณ
MARIA ZLATKOVA: ใช่
ใช่.
เหล่านี้เป็นคำถามที่ดี
น่ารัก
ต่อไปเราจะกระโดดลงไปใน HTML และ อีกเล็กน้อยเกี่ยวกับการพัฒนาเว็บ
ดังนั้น HTML ก็หมายความว่า Hypertext Markup Language
และนั่นคือมาร์กอัป ภาษาที่เป็นมาตรฐาน
ว่าจะใช้ในการสร้างหน้าเว็บ
>> มันเรียกว่าภาษามาร์กอัป เพราะไม่ได้รวบรวมจริง
แต่ไม่ได้บอกว่ารหัสควร จะดำเนินการหรืออะไรอย่างนั้น
มันก็ให้สัตยาบันและ อธิบายวิธีเว็บ
หน้าควรจะตั้งค่า กับแต่ละองค์ประกอบ
และวิธีการที่พวกเขาควรจะมองไปที่ผู้ใช้
>> บางส่วนของแท็กที่เรา เดินไปดังต่อไปนี้
ทั้งหมดของเอกสาร HTML ของเรา เริ่มต้นด้วยการ DOCTYPE html ที่
จากนั้นเราก็มักจะมีแท็ก
เรามีหัวและลำตัวได้
และมันเป็นสิ่งสำคัญที่มี HTML การเรียงลำดับของโครงสร้างที่ซ้อนกันนี้
เพราะมันเป็นที่ชัดเจนมาก
และจากนั้นก็กลายเป็นที่ชัดเจนมากเมื่อเรา จำเป็นต้องเปิดและแท็กปิดจริง
และเรามักจะต้องปิด แท็กที่เราได้เปิด
>> และที่นี่เรามีบางส่วนของประเภท ข้างหน้าสิ่งที่เราต้องการที่จะมี
ดังนั้นเราจึงมีตัวอย่างเช่น ชื่อของ CS50
และจากนั้นเราจริง สามารถเชื่อมโยงสไตล์ชีต
ที่กำหนดวิธีการที่เรารูปแบบเว็บไซต์ของเรา
นั่นคือ CSS
เรากำลังจะไปกว่านั้นใน คู่ต่อไปของภาพนิ่งได้เป็นอย่างดี
>> ภายในร่างกายเราตั้ง บางชั้นเรียนและรหัส
และเป็นตัวเตือนอีกครั้ง รหัสจะไม่ซ้ำกันและชั้นเรียน
สามารถกำหนดให้กับหลายรายการ
และนั่นก็หมายความว่า เราสามารถใช้การเรียนและรหัส
ภายใน structures-- อื่น ๆ เพื่อให้สำหรับ ตัวอย่างเช่นภายในไฟล์ CSS หรือสไตล์
sheets-- ในการอ้างถึงองค์ประกอบที่เฉพาะเจาะจง และโดยทั่วไปบอกว่าเราต้องการที่จะสไตล์
หรือการออกแบบองค์ประกอบบางอย่าง ในบางวิธีการเฉพาะ
และเราจะเรียกพวกเขาโดย รหัสของพวกเขาและการเรียน
และเรายังสามารถดูได้ที่ สิ่งที่แตกต่างจากแท็กเช่นกัน
แต่รหัสและการเรียนเพียงแค่ให้เรามี ความเก่งกาจและสิ่งที่เราโดยเฉพาะ
ต้องการที่จะอ้างถึง
>> ดังนั้นเพียงแค่ตัวอย่าง
เราสามารถอีกครั้งภายใน ไฟล์ CSS ที่เรา
ต้องการกำหนดบาง style-- เพื่อให้สีแบบอักษร
และสิ่งที่ชอบ that-- ที่เราสามารถทำได้ กำหนดรูปแบบสำหรับร่างกาย
เพื่อที่จะกำหนดมัน สำหรับแท็กร่างกาย
แต่เราก็ยังสามารถกำหนด สไตล์สำหรับ #title
และอีกครั้ง hashtag หมายถึงเรา ประชาชนและจุดหมายถึงชั้นเรียนของเรา
>> และแล้วสำหรับ .info เรา นอกจากนี้ยังสามารถตั้งค่าคุณสมบัติบางอย่าง
และอีกครั้งเมื่อเรากลับไปเรามีของเรา ระดับที่เรียกว่าข้อมูลและชื่อ ID ของเรา
และเราจะเห็นว่าเราดู ให้พวกเขาโดย #title และ .info
ผู้ชม: คุณจะพูดว่า hashtag [? นำฉัน? ?]
MARIA ZLATKOVA: ขออภัย?
ผู้ชม: คุณจะพูดว่า hashtag [? นำฉัน? ?]
MARIA ZLATKOVA: แฮชแท็ก หมายถึงรหัสเพื่อ #title
หมายถึงสิ่งที่องค์ประกอบ มีบัตรประจำตัวที่เรียกว่าชื่อ
และแล้วจุดหมายถึงการเรียน
ดังนั้น .info หมายถึงองค์ประกอบนี้ เพราะมีข้อมูลในชั้นเรียน
ได้.
>> ผู้ชม: ทำไมคุณ ความแตกต่างในรูปแบบ HTML หรือไม่
ทำไมคุณพูดสิ่งบางอย่าง รหัสและสิ่งบางอย่างที่เป็นชั้น?
MARIA ZLATKOVA: นั่นเป็นเพียงถึง you--
HANNAH Blumberg: ทำซ้ำคำถาม
MARIA ZLATKOVA: โอ้ขอโทษ
ทำไมเราแยกแยะองค์ประกอบบางอย่าง เป็นรหัสและองค์ประกอบอื่น ๆ เช่นการเรียน?
นั่นเป็นเพียงเพราะมันเป็น จริงๆมักจะเลือกที่การออกแบบ
มันทำให้คุณมีจำนวนมาก ความคล่องตัวในการเป็น
สามารถที่จะบอกว่าผมต้องการให้รายการนี​​้โดยเฉพาะ จะมีรหัสนี้เพราะพวกเขาต้องการ
ที่จะทำสิ่งต่างๆมากมาย กับมันและฉันเท่านั้น
ต้องการกำหนดรูปแบบรูปแบบบางอย่าง หรือสีอะไรก็ตามสำหรับรายการนั้น
และวิธีที่จะทำอย่างนั้น เป็นเพียงการให้มัน ID
>> และแล้วถ้าผมต้องการที่จะมี คู่ของรายการที่แตกต่าง
มีที่แทน และการตั้งค่าจะ their--
แทนการทำมันด้วย เพราะแท็กแท็กจะ
การตั้งค่ามือถือสำหรับแท็กทั้งหมด สำหรับทุกครั้งที่แท็กที่ถูกนำมาใช้
คุณสามารถตั้งค่าระดับรายการหลาย
แล้วก็เข้าชั้นเรียนที่และพูดว่า ฉันต้องการที่จะสไตล์ชั้นนี้วิธีการที่
>> และอีกครั้งที่ชั้นสามารถ เป็นรายการที่แตกต่างกันหลาย
และประชาชนจะต้องมีเอกลักษณ์
คำถามที่ดี
คำถามใด ๆ อื่น ๆ ?
ตกลงที่น่ากลัว
อีกครั้งนี้เป็นวิธีการที่ตัวเลือกเหล่านี้ มีการอ้างอิงใน CSS กับ hashtag,
มีจุดหรือไม่มีอะไร การกำหนดรูปแบบของแท็กบาง
เหมือนร่างกาย
และที่นี่เรามีทั่วไป ไวยากรณ์ของว​​ิธีการนี​​้จะทำ
>> ที่จะทำซ้ำบางส่วนที่ดีที่สุด การปฏิบัติสำหรับ HTML และ CSS,
เราต้องอีกครั้งปิดทั้งหมด แท็ก HTML ที่เราเปิด
และสิ่งที่เราขอแนะนำให้คุณ ทำโครงการสุดท้ายของคุณ
เช่นเดียวกับ CS50 การเงินที่จะทำให้ ตรวจสอบให้แน่ใจว่าทั้งหมดของ HTM​​L ของคุณตรวจสอบ
และที่ทำกับ Validator W3
>> และแล้วสิ่งที่เราทำและ สิ่งที่เราแนะนำให้ทำ
มีการแยกรูปแบบเพื่อ CSS จากมาร์กอัป HTML
ดังนั้นอะไรที่เกี่ยวข้องกับวิธีการ หน้าของคุณเป็นไปสายตามอง
และวิธีการที่จะได้รับการแก้ไข ควรจะไปลงในเอกสาร CSS
และจากนั้นมาร์กอัปของคุณบอกว่าสิ่งที่ อยู่ในความสัมพันธ์กับแต่ละอื่น ๆ ที่เป็น HTML,
และที่ควรไปภายใน ของเอกสาร HTML ของคุณ
มีคำถามอะไรไหม?
Mhm
>> ผู้ชม: สิ่งที่เป็นไป ในการตรวจสอบกับหน้า
เมื่อเรากำลังตรวจสอบความถูก HTML ที่ [ไม่ได้ยิน] สร้างขึ้น?
>> MARIA ZLATKOVA: ดังนั้น what-- คิดว่าคุณ
ดังนั้นสิ่งที่เป็นไป ในการตรวจสอบหน้าด้วย
และทำไมเราจะต้องทำเช่นนั้น?
โดยทั่วไปเราต้องทำ เพราะหลายครั้งที่เบราว์เซอร์ของคุณ
ถ้าคุณไม่ปิดแท็ก หรือสิ่งที่ต้องการที่
เบราว์เซอร์ของคุณจะยังคงไป ทำให้หน้าและยังคงทำงาน
แต่ก็เป็นวิธีที่ดีที่สุดเพื่อให้แน่ใจว่า คุณได้อีกครั้งปิดแท็กทั้งหมดของคุณ
ว่าองค์ประกอบของคุณทั้งหมดที่มี วิธีการที่พวกเขาควรจะเป็น
และโดยทั่วไปว่ามันเป็นโดย การประชุมที่มีการกำหนดไว้ล่วงหน้า
>> มันเป็นอีกครั้งเพียง สิ่งที่คุณควร
ได้เรียนรู้ที่จะทำ เมื่อเทียบกับการมี
รหัส sloppier และสิ่งที่ชอบ
ใช่.
โอ้ขอโทษ.
ฉันคิดว่าคุณได้รับการยกมือของคุณ
ผู้ชม: ไม่ฉันเป็นเพียง [ไม่ได้ยิน]
>> MARIA ZLATKOVA: OK
>> ผู้ชม: ขอบคุณ
>> MARIA ZLATKOVA: แน่นอนขอขอบคุณ
ดังนั้นอีกครั้งที่เกิดขึ้นเป็นวิธีการ ข้อมูลจะถูกโอน
และรูปแบบการสื่อสาร ในการถ่ายโอนข้อมูล
TCP / IP
TCP ก็หมายความว่าการส่ง พิธีสารควบคุมและ IP
หมายถึงอินเทอร์เน็ตโปรโตคอล
และนั่นหมายถึงเพียงแค่ ข้อมูลวิธีการจัดส่ง
>> ถ้าเรามีข้อมูลบางอย่างที่ ความต้องการที่จะส่งมอบให้กับ you-- ดังนั้น
คุณทำตามคำขอสำหรับเซิร์ฟเวอร์บางอย่าง
ตัวอย่างเช่นเมื่อเรา พยายามเข้าถึง cs50.net,
เราขอไป เซิร์ฟเวอร์ CS50 และเรา
เห็นว่าเราต้องการที่จะได้รับ การเรียงลำดับของข้อมูลเหล่านี้
และจากนั้นก็จะขึ้นอยู่กับโปรโตคอลนี้ สำหรับวิธีการที่ข้อมูลนี้จะถูกส่งมอบ
เซิร์ฟเวอร์ให้ข้อมูล กลับมาให้เราลูกค้า
และจากนั้นเราก็สามารถที่จะดู ข้อมูลสำหรับหน้า
แล้วใช้
>> ดังนั้นแล้วแบบ Hypertext Transfer Protocol เป็นเพียงโปรโตคอลอื่นหรือตั้ง
การประชุมที่กำหนดวิธี เว็บเบราเซอร์และเว็บเซิร์ฟเวอร์
ควรสื่อสาร
และวางทั้งหมดนี้ ร่วมกัน, HTTP, อีกครั้ง
เพียงแค่กำหนดวิธีการที่กำหนดไว้นี้ไฮเปอร์ โดย HTML ที่เราได้รับการทำงานนั้น
วิธีการที่ควรจะส่งมอบให้กับคุณและ ว่าข้อมูลที่ถูกส่งมอบให้กับคุณ
ที่คุณได้รับ
>> และที่ว่าทำไมถ้าพวกคุณจำได้ จากชั้นที่เรามีจำนวนมากของการร้องขอ
และเรามีจำนวนมากของไวยากรณ์ สำหรับการร้องขอเหล่านี้ที่เรากำลัง
จะไปกว่าตอนนี้
ดังนั้นอีกครั้งเมื่อเราส่ง ร้องขอไปยังเซิร์ฟเวอร์หนึ่ง
เราต้องกำหนดสองสิ่ง
ดังนั้นเราจึงจำเป็นที่จะหาชนิด ของการร้องขอที่เรากำลังตั้ง
และอีกครั้งที่เรามีเช่น แถมเป็นหนึ่งในประเภทของวิธีการ
ที่เรามีในคำขอของเรา
>> และแล้ว HTTP / 1.1 เป็นเพียง โปรโตคอลที่เรากำลังใช้อยู่ในปัจจุบัน
ส่วนใหญ่เวลาที่จะ โปรโตคอลที่เรากำลังใช้
ดังนั้นถ้าคุณมีคำถาม เช่นเดียวกับที่ในการตอบคำถามของคุณ
นั่นคือการประชุม ที่เรามีเพื่อให้ห่างไกล
>> เครื่องหมายหมายถึงสิ่งที่จัดเรียง สิ่งที่เรากำลังร้องขอ
จากนั้นพิธีกรของเราคือการยกตัวอย่างเช่นในเรื่องนี้ กรณีที่เรากำลังพยายามที่จะไปที่ google.com
ดังนั้นนี้เป็นค่าสำหรับโฮสต์ที่
นี่คือประเภทของการร้องขอ ที่อาจจะส่ง
>> และจากนั้นประเภทของการตอบสนองที่อาจ ถูกส่งไปอีกครั้งขึ้นอยู่กับโปรโตคอลนี้
เป็นอีกครั้ง HTTP / 1.1
เพื่อให้เป็นรุ่น HTTP อีกครั้ง
200 ตกลงเป็นเพียงรหัสสถานะ
และที่ตกลงเป็นเพียงวลี ขึ้นอยู่กับรหัสสถานะที่
>> แล้วเนื้อหาชนิด หมายถึงชนิด
ที่ถูกส่งกลับไปยังคุณที่ สำหรับหน้าเว็บที่ที่คุณได้รับ
และเบราว์เซอร์ของคุณ สามารถทำให้หลังจากนั้น
และที่เป็น text / html
>> ผู้ชม: อะไร 1.1 หมายความว่าอย่างไร
>> MARIA ZLATKOVA: นั่นเป็นเพียง รุ่น of-- โอ้สิ่งที่ไม่ 1.1 หมายความว่าอย่างไร
นั่นเป็นเพียงรุ่นของ HTTP รุ่นของโปรโตคอลที่เรากำลังใช้
คำถามที่ดี
คำถามอื่น ๆ ?
>> ผู้ชม: คุณสามารถสรุป เนื้อหาชนิดจริงอย่างรวดเร็ว?
>> MARIA ZLATKOVA: เพื่อให้ คือสิ่งที่เซิร์ฟเวอร์
ประเภทของ information-- สิ่งที่เป็น ชนิดของเนื้อหาเป็นคำถาม
เพื่อให้เป็นประเภทของ ข้อมูลที่คุณได้รับกลับมา
จากเซิร์ฟเวอร์ชนิดของ ข้อมูลที่เบราว์เซอร์สามารถแล้ว
ทำให้ว่าคุณกำลังใช้
ผู้ชม: คือสิ่งนี้ โปรโตคอลที่จะบอกคุณจะทำอย่างไร?
MARIA ZLATKOVA: ขออภัย?
ผู้ชม: คือสิ่งที่โปรโตคอลพูด?
MARIA ZLATKOVA: protocol--
ผู้ชม: --what เนื้อหาชนิดหรือ what--
MARIA ZLATKOVA: โปรโตคอลจะขึ้นอยู่ on-- สิ่งที่เป็นโปรโตคอลบอกคุณหรือไม่
นั่นเป็นเพียงวิธีการที่ ว่าข้อมูลนี้
ได้รับการส่งมอบให้กับคุณตาม เกี่ยวกับสิ่งที่จัดเรียงของโปรโตคอล
ได้รับข้อมูลเหล่านี้ได้ ส่งกลับมาให้คุณ
ไม่ว่าทำให้การจัดเรียงของความรู้สึก?
HANNAH Blumberg: คุณ สามารถคิดโปรโตคอล
เป็น a-- ผมคิดว่าศาสตราจารย์ ลันเล่าว่า
ในชั้นเรียนเป็นชนิดเช่น a-- ที่มันต้องการ เทียบเท่าของการจับมือกันของมนุษย์
พูดเหมือนเดี๋ยวก่อนฉันขอและฉัน รู้วิธีจัดการกับ HTTP ของรุ่น 1.1
และจากนั้นเซิร์ฟเวอร์จะกล่าวว่า โอ้ตกลง I-- และทั้งสองอยู่
ฉันยังรู้วิธีการจัดการกับ HTTP / 1.1
และฉันจะให้ คุณสำรองเนื้อหาบางส่วน
ในกรณีนี้ก็จะ จะเป็นประเภทของข้อความ / html
ดังนั้นจึงเป็นชนิดของเพียงวิธีการ ของพวกเขาสำหรับการ communicating--
>> MARIA ZLATKOVA: มันเป็นเพียง ยืนยันว่าคุณ
ทั้งสองต่อไปนี้เช่นเดียวกัน โปรโตคอลและการที่ทั้งสอง
ลูกค้าและ server-- เพื่อ เบราว์เซอร์ของคุณและ server--
การเรียงลำดับของรู้ว่าสิ่งที่คุณ พูดถึงและมี
การประชุมสำหรับการส่งผ่านข้อมูล
>> ผู้ชม: ดังนั้นเนื้อหาชนิด part-- ข้อความเนื้อหาชนิด / html-- ที่
ส่วนที่แยกต่างหากจากข้อความเดียวกันได้หรือไม่
หรือมันเป็นส่วนหนึ่งของสมมติว่า 200?
200 ไม่บอกพวกเขาว่าหรือ is--
>> MARIA ZLATKOVA: 200 บอกว่ามันทั้งหมดไปตกลง
และจากนั้นชนิดของเนื้อหาคือการจัดเรียงของ ส่วนที่แยกต่างหากจากข้อความเดียวกัน
และพูดว่าสิ่งที่ฉัน กลับมีประเภทของข้อความนี้ / html
มันเป็นเพียงแค่การให้ข้อมูลเพิ่มเติม
มีอะไรที่จะเพิ่ม?
ตกลง.
>> คำถามอื่น ๆ เกี่ยวกับเรื่องนี้?
ที่น่ากลัว
ดังนั้นบางสถานะ HTTP อื่น ๆ ที่ เราจะได้รับนอกเหนือไปจาก 200 ตกลง
คนที่เราเคยเห็นอาจจะ อาจจะมากเป็น 403 และ 404
ดังนั้น 404 ถ้าคุณกำลังพยายามที่จะ บางสิ่งบางอย่างที่ไม่สามารถเข้าถึงได้อยู่
ดังนั้นสำหรับตัวอย่างเช่นในของคุณ CS50 การเงิน psets,
ถ้าคุณได้รับการแสดงผล quote.html และคุณไม่ได้มีไฟล์ที่
แต่คุณมี quote.php ที่ จะส่งผลให้ 404 ไม่พบ
เพราะไฟล์ไม่ได้อาจจะมีอยู่
>> สำหรับ 403 สิ่งต้องห้ามที่ หมายถึงการอนุญาต
ดังนั้นถ้าไฟล์บางอย่างจะไม่สามารถอ่านได้จาก โลก, คุณอาจได้รับ 403 กลับ
คนอื่น ๆ บางอย่างที่คุณอาจ get-- 301 ย้ายถาวร;
302 พบ; 304 ดัดแปลง; 400, ร้องขอไม่ถูกต้อง;
แล้วข้อผิดพลาดภายในเซิร์ฟเวอร์สำหรับ 500 และ 503 บริการไม่พร้อมใช้งาน
ใช่.
>> ผู้ชม: Will เราคาดว่าจะ จดจำสถานะทั้งหมดเหล่านั้นหรือไม่
MARIA ZLATKOVA: ผมจะต้อง พวกเขาบนแผ่นโกงของคุณ
[LAUGHTER]
ผู้ชม: เราคาดว่าจะ รู้ว่าสิ่งที่เป็นต้นเหตุของแต่ละคน?
MARIA ZLATKOVA: พวกเขา?
HANNAH Blumberg: สำหรับคนที่เราได้ เรียก into-- ดังนั้นคำถาม was--
MARIA ZLATKOVA: พวกเขาคาดว่าจะ รู้ว่าสิ่งที่แต่ละคนสถานะเหล่านี้
รหัสอาจถูกเรียกโดย?
ดังนั้นสำหรับคนที่เราเคยใช้ และวิ่งเข้าไปในผมจะบอกว่าใช่
ดังนั้นเราจึงได้เห็นแน่นอน 200 OK และสอนใน psets
เราได้เห็น 403, 404
สำหรับคนอื่น ๆ ?
>> HANNAH Blumberg: ฉันจะ 500 บอกว่าดูเหมือนว่าเกมที่ยุติธรรม
>> MARIA ZLATKOVA: 500 ใช่
>> HANNAH Blumberg: ใช่
เพียงแค่มีความหมายทั่วไป ของสิ่งที่ทำให้พวกเขา
และยังเป็นเพียงแค่เหล่านี้ ชื่อคุณสามารถชนิดของ
เช่นทำให้เดาการศึกษาเป็น สิ่งที่ทำให้พวกเขาจริง
ยกตัวอย่างเช่นย้ายอย่างถาวรอาจจะ แฟ้มถูกย้ายอย่างถาวร
>> ผู้ชม: แต่ก่อนหน้านี้ การสอบมีการเพื่อให้
วิธีที่คุณคาดหวังว่าเราจะตอบว่า?
>> HANNAH Blumberg: นั่น เป็นมูลค่าจุดศูนย์
คำถามเกี่ยวกับ 418 ในกาน้ำชา เป็นเทคนิคที่สถานะ HTTP ที่
แต่มันก็คุ้มค่าจุดศูนย์
เห็นได้ชัดว่าคุณไม่ได้ คาดว่าจะรู้ว่าพวกเขา
>> ผู้ชม: มันเป็นความจริง?
>> HANNAH Blumberg: มันเป็นจริง หนึ่ง แต่มันไม่ได้หมายความว่าอะไร
มันแค่เรื่องตลก.
คนอินเทอร์เน็ตเป็นตลก
>> MARIA ZLATKOVA: คำถามที่ดีครับ
คำถามใด ๆ อื่น ๆ ?
>> ผู้ชม: ข้อผิดพลาดภายในเซิร์ฟเวอร์คืออะไร?
MARIA ZLATKOVA: ภายใน ผิดพลาดของเซิร์ฟเวอร์เพียง
หมายความว่าคุณได้รับ ไม่สามารถที่จะสื่อสาร
กับเซิร์ฟเวอร์ด้วยเหตุผลบางอย่าง
ดังนั้นจึงไม่จำเป็นต้อง บางสิ่งบางอย่างที่จะทำอย่างไร
กับลูกค้าหรือสิ่งที่ต้องการว่า
ผมไม่ทราบว่าตัวอย่างที่เฉพาะเจาะจง ที่เราได้ไปมากกว่าที่จะอธิบาย
แต่ใช่
>> HANNAH Blumberg: Sure
ดังนั้นสำหรับตัวอย่างเช่นลอง ว่าคุณกำลังทำงานอยู่ตอบโต้กับผู้ใช้ได้
และเซิร์ฟเวอร์ของ Google ลงไปสำหรับบางคน เหตุผลไฟฟ้าดับสมมติว่า
นั่นจะเป็นเซิร์ฟเวอร์ภายใน ผิดพลาดหรือการจัดเรียงบาง of-- ชอบคุณ
จะไม่ได้รับการตอบกลับ
>> MARIA ZLATKOVA: ใช่
มันเป็นเพียงเมื่อคุณอยู่ ไม่สามารถที่จะสื่อสาร
กับเซิร์ฟเวอร์ด้วยเหตุผลเพราะบาง มันจะลงหรือมีเหตุผลอื่น ๆ
ดังนั้นกระโดดลงไปใน PHP
PHP, HTML แตกต่างเป็น การเขียนโปรแกรมภาษา
และเราเริ่มใช้มันเพราะมันเป็น มีประโยชน์มากสำหรับการพัฒนาเว็บ
>> ครั้งแรกที่เราใช้ใน CS50 การเงิน
และโดยทั่วไปจะช่วยให้เรานำ ร่วมกันมาร์กอัปนี้การออกแบบ
และวิธีที่เราใช้ข้อมูลจริง สิ่งที่จะแสดงบนหน้าเว็บ
ดังนั้น PHP ตัวเองหมายความว่า PHP Hypertext Preprocessor,
ดังนั้นจึงเป็น backnorym recursive ด้วยตัวเอง
และการเปิดแท็กสำหรับ PHP เราซ้าย และลูกศรขวาด้วยเครื่องหมายคำถาม
และ php
>> ดังนั้นเราจึงได้เห็นแล้วพวงของมัน
ตอนนี้เรากำลังจะไปมากกว่า บางส่วนของสิ่งพื้นฐานที่เกี่ยวกับเรื่องนี้
ดังนั้นด้วย PHP, ตัวแปร ชื่อขึ้นต้นด้วยเครื่องหมายดอลลาร์
เราไม่ได้ระบุอีกครั้ง ประเภทตัวแปรอีกต่อไป
เช่นเดียวกับที่เราทำกับซี เราไม่จำเป็นต้องทำอย่างนั้น
>> เราสามารถทำพวงของการที่แตกต่างกัน สิ่งที่มีตัวแปร
เราสามารถเอามารวมกัน โดยเชื่อมโยงพวกเขา
ที่มีเครื่องหมายจุดซึ่ง เราไม่สามารถทำใน C อีกครั้ง
อีกครั้งที่เรามีความคล่องตัวมากขึ้นอีกนิด กับ PHP ในแง่ของตัวแปร
อีกครั้งที่เราไม่ได้มีหน้าที่หลัก
>> และ PHP ถูกตีความ เมื่อเทียบกับการรวบรวม
ดังนั้นเพียงแค่วิธีการที่เราไม่ทำให้ไฟล์ซี เราไม่ได้มีการทำที่สำหรับ PHP
แต่วิธีการที่ภาษา จะดำเนินการโดยตัวเองก็คือการตีความ
และจากนั้นพิมพ์อย่างอิสระ ก็หมายความว่าเรา
ไม่ได้มีการระบุตัวแปร ประเภทและชนิดของตัวแปร
มีความเข้าใจที่รันไทม์
>> ผู้ชม: แต่สิ่งที่คุณทำ หมายถึงกำหนดการจุด?
MARIA ZLATKOVA: Sure
เมื่อเราต้องการที่จะนำสิ่ง together-- ดังนั้นหากเรามีตัวแปรบางอย่างที่
มีค่าของ 3 และเรามีอีก ตัวแปรที่มีค่าของสตริง
เราสามารถใส่ตัวแปรที่ร่วมกัน โดยการวางจุดในระหว่างพวกเขา
และเชื่อมโยงพวกเขา
หรือเราสามารถสร้าง ชื่อเรียกว่าตัวแปร
และวางไว้ด้วยกัน เชื่อมโยงสองสาย
>> ดังนั้นถ้าเรามีสตริงในคู่ และคำพูดที่เราใส่จุดหลังจากที่มัน
แล้วเรามีสตริงอีกว่า จะสร้างสตริงโดยสิ้นเชิง
>> ผู้ชม: ตกลง
มาเรียลัตเวีย: คือการที่ชัดเจน?
ผู้ชม: ใช่
MARIA ZLATKOVA: OK
ใช่.
>> ผู้ชม: เมื่อคุณพูด ตีความมากกว่ารวบรวม
คุณกำลังพูดถึงคุณทำไม่ได้ จะต้องเป็นเฉพาะเมื่อ
มันมาถึงเมื่อเทียบกับ PHP C?
MARIA ZLATKOVA: เมื่อเราพูด ตีความว่าเป็นตรงข้ามกับการรวบรวม
สิ่งที่เราหมายถึงอะไร?
ดังนั้นหมายความว่าเราไม่จำเป็นต้อง ไฟล์ปฏิบัติการที่จะใช้ PHP
ก็หมายความว่ามันจะทำงานเป็นมันไป
ที่ทำให้รู้สึก?
บิตมากขึ้น
HANNAH Blumberg: คุณ สามารถคิดล่า​​ม
เป็นโปรแกรมที่มีหน้าที่รับผิดชอบอื่น สำหรับการไปทีละบรรทัดผ่าน PHP
และที่จริงรันมันเป็นตรงข้าม ที่จะรวบรวมทั้งหมดลงไปไบนารี
มันไม่จริงหมายถึงอะไร เกี่ยวกับวิธีการที่เฉพาะเจาะจงเราจะต้อง
เรายังคงต้องแม่นยำและทำไม่ได้ ลืมอัฒภาคของคุณและให้แน่ใจว่า
คุณมีเครื่องหมายดอลลาร์ของคุณ และสิ่งที่ต้องการ
คำถามที่ดี.
>> MARIA ZLATKOVA: ใช่
ดังนั้นทีละบรรทัดเช่น เมื่อเทียบกับกับไฟล์ซี
เราจะต้องทำให้สุดท้ายทั้ง ก่อนที่เราจะสามารถเรียกใช้งาน
นั่นคือความแตกต่างหลัก
แต่อีกครั้งเราไม่สามารถ จริงๆจะเฉพาะเจาะจงน้อย
ดังนั้นอาร์เรย์ใน PHP เป็นตัวแทน จริงแผนที่ได้รับคำสั่ง
>> ดังนั้นค่าอาร์เรย์ร่วมกับคีย์
ทั้งสองวิธีที่จะประกาศ อาร์เรย์ขึ้นอยู่กับรูปแบบนี้,
เราสามารถจะชัดเจนมากขึ้น ในการบอกเรามีอาร์เรย์
และเรามี key1 นี้ที่แมปไป value1 นี้ key2 value2 ที่แผนที่
หรือเราก็สามารถสร้างอาร์เรย์ ที่มีค่าของตัวเอง
แล้วคีย์มี เข้าใจในทาง
คำถามใด ๆ เกี่ยวกับเรื่องนี้?
>> ผู้ชม: สิ่งที่คีย์จะ จะอยู่ในตัวอย่างที่สองหรือไม่
0, 1, 2, 3 หรือไม่?
>> MARIA ZLATKOVA: ยกตัวอย่างเช่นมันเป็นเพียง กุญแจในเรื่องนี้ไม่จำเป็นต้อง
สร้างความแตกต่าง.
พวกเขาเพียงแค่กำหนดวิธีการที่คุณสามารถ ใช้ค่าภายในของมัน
ดังนั้นถ้าเรามี foreach วงใน PHP ที่จะ
ช่วยให้เราสามารถไปถึงค่าทั้งหมด เราสามารถไปถึงค่าทั้งหมด
แม้ว่าเราจะมีหรือไม่ก็ไม่ได้กำหนดไว้ คีย์เฉพาะภายในเว็บไซต์
ไวยากรณ์ก่อนหน้า
>> ดังนั้นแม้จะมีการจัดเรียงนี้ ของอาร์เรย์เรายังคงสามารถ
มีห่วง foreach ที่จะไปผ่านแต่ละ
ของค่าในอาร์เรย์ที่สำคัญในการที่
ดังนั้นไวยากรณ์ของ foreach ที่ ห่วงเราเริ่มต้นด้วยอาร์เรย์
ตัวแปร $ ARR นี้เป็นอาเรย์ที่แท้จริงของเรา ที่เรากำหนดไว้ในสไลด์ก่อนหน้านี้
เป็นค่าที่แท้จริงไป ผ่านแต่ละค่า
โดยไม่คำนึงว่า เรามีที่สำคัญหรือไม่
และจากนั้นเราสามารถทำอะไรกับ ค่าที่อยู่ภายในวง foreach
ดังนั้นอีกครั้งถ้าเรามีอาร์เรย์ เช่นนี้ที่นี่ created--
เพื่อให้เรามีที่สำคัญของ foo และความคุ้มค่าของ บาร์ที่สำคัญของ baz และมูลค่าของ qux--
เราสามารถมีความห่วง foreach ว่า จะต้องผ่านอาร์เรย์เป็นค่าที่สำคัญ
แล้วทำอะไรบางอย่าง กับที่สำคัญและ / หรือค่า
แต่เราไม่จำเป็นต้องเสมอ ต้องมีห่วง foreach ว่า
ไปผ่านแถวแผนที่กุญแจสำคัญในการค่า
เราสามารถไปถึง อาร์เรย์ห่วง foreach เป็นค่า
>> HANNAH Blumberg: และผมคิดว่า to-- เป็นคำถามของคุณสิ่งที่
คือดัชนีโดยปริยายหรือไม่
ผู้ชม: Kinda
MARIA ZLATKOVA: โอ้
HANNAH Blumberg: ใช่ใช่
ดังนั้นโดยทั่วไปถ้าคุณไม่ได้ระบุ ที่สำคัญมันเป็นไปได้ที่ 01
>> MARIA ZLATKOVA: ใช่
เช่นเดียวกับซีก็เป็นศูนย์ จัดทำดัชนีถ้าคุณไม่ได้ระบุที่สำคัญ
ผู้ชม: ขออภัย
คุณพยายามที่จะพูด นิด ๆ หน่อย ๆ ดัง?
ฉันมีนิด ๆ หน่อย ๆ ปัญหาทุกอย่างที่ได้ยิน
>> MARIA ZLATKOVA: ฉันขอโทษ
ใช่แน่นอน.
ดังนั้นคุณต้องการให้ฉัน ไปกว่านี้อีกครั้งหรือไม่
หรือ this--
ผู้ชม: ดังนั้น slide-- ถ้าก่อนหน้านี้ คุณก็สามารถกลับไปหนึ่งวินาที
MARIA ZLATKOVA: แน่นอนขอโทษ
ผู้ชม: ดังนั้นที่สอง อาร์เรย์ที่นี่ไม่ได้
ดูเหมือนจะมีค่าให้กับคีย์, การเรียงลำดับของ [? สาเหตุ ?]
MARIA ZLATKOVA: ขวาขวา
ผู้ชม: ดังนั้นวิธีการทำงานว่า เมื่อคุณบอกว่ามันเป็นทั้งหมดหรือไม่มี
ให้ฉันที่ดูเหมือนว่า a [? foo?] แล้ว
>> MARIA ZLATKOVA: ใช่ใช่
ดังนั้นอีกครั้งนี้เป็น แผนที่สั่งซื้อในแง่นี้
ว่ามีความเข้าใจ ตัวอย่างเช่นดัชนี
ที่นี่สามารถเข้าใจได้เป็น 0, 1, 2, 3
อีกครั้งที่มีผู้ ดัชนีเท่ากับของเรา
ของการมีคีย์แมปไปยังค่า
ดังนั้นหากที่สำคัญของเราเป็น 0-- ขอโทษ
>> HANNAH Blumberg: ไม่ มีชอล์กที่นี่
เป็นจริงที่ดีจริงๆ
>> MARIA ZLATKOVA: ที่ดี
ตกลง.
ดังนั้นอีกครั้ง $ ARR 0 จะเป็น ที่สำคัญสำหรับค่า 1
0 จะเป็นกุญแจสำคัญสำหรับค่า 1
ผู้ชม: ฉันขอโทษ
มันเป็นเรื่องที่มองไม่เห็น
>> HANNAH Blumberg: สิทธิทั้งหมดไม่เป็นไร
ชอล์กเป็นความคิดที่ดี
ฉันจะเอามันกลับมา
คุณสามารถคิดว่ากุญแจ เป็น 0 แผนที่เพื่อค่า 1
MARIA ZLATKOVA: ใช่
ดังนั้นนี่คือ 0 นี่คือ 1, 2, 3
เหล่านี้สามารถเป็นคีย์ของคุณ
คุณสามารถคิดว่าพวกเขา as-- ใช่
ดังนั้นแทนที่จะต้อง กุญแจอย่างชัดเจนว่าพวกเขากำลัง
การเรียงลำดับของความเข้าใจในฐานะที่เป็น ดัชนีเริ่มต้นที่ 0
ชอล์กไม่ได้ช่วย
ใช่.
>> ผู้ชม: สำหรับวง foreach, ถ้าเราต้องการที่จะดูเป็นความคุ้มค่า
มันจะเป็นเพียงดัชนีโดยอัตโนมัติเพื่อ 0?
MARIA ZLATKOVA: ใช่
มันจะผ่านไปแต่ละค่า
ผู้ชม: [ไม่ได้ยิน] เช่น 0 หรือจะว่าเพียงแค่ทำ 0?
>> MARIA ZLATKOVA: คุณจะต้อง ที่จะบอกว่าเป็นเครื่องหมายดอลลาร์แล้ว
บางชื่อตัวแปรค่า
ผู้ชม: [ไม่ได้ยิน]
MARIA ZLATKOVA: ขออภัย?
ผู้ชม: ขออภัยฉัน เพียงแค่พยายามที่จะจำ
วิธีที่คุณจะไม่ว่าถ้าคุณสามารถทำมันได้ การจัดทำดัชนีโดยอัตโนมัติเป็นเพียง 0 ของ?
>> MARIA ZLATKOVA: ดังนั้นวิธีที่คุณจะทำอย่างนั้น ถ้าคุณไม่ได้มีชื่อคีย์ที่เฉพาะเจาะจง
>> ผู้ชม: ใช่
>> MARIA ZLATKOVA: คุณจะเพียงแค่ define-- เพียงแค่พูดว่าตัวเองเป็นชื่อบางส่วน
ดังนั้นใน psets ของพวกคุณอาจจะ จำ foreach แถว $ เป็น $ แถว
เราสร้างขึ้นเองนี้แถว $ บอก เราต้องการที่จะผ่านไปแถวที่ $ แถว
แม้ว่าเราจะไม่ได้มี แถวนี้ $ ชัดเจนกำหนด
เราก็จะไป พูดแบบนี้สามารถเป็นกุญแจสำคัญของเรา
และเพิ่งไปผ่านแต่ละค่า
>> ผู้ชม: ดังนั้นค่าตัวแปรใหม่ เรากำลังสร้างการจัดเก็บ [ไม่ได้ยิน]
>> MARIA ZLATKOVA: ดังนั้นจึงไม่ โดยเนื้อแท้ตัวแปรใหม่
มันเป็นตัวแปรที่หมายถึงการที่ ภายในของอาร์เรย์แต่ละของพวกเขา
HANNAH Blumberg: มัน ชื่อตัวแปรใหม่
MARIA ZLATKOVA: ใช่ มันเป็นชื่อตัวแปรใหม่
แต่ไม่ inherently-- ใช่
มันเป็นเพียงตัวแปรใหม่ ที่คุณสามารถทำเช่นนั้น
ดังนั้นเพียงแค่วิธีการที่เราทำไม่ได้ $ เป็น $ แถวแถวแถว
เป็นชื่อตัวแปรใหม่ที่เรา สามารถสร้างในวง foreach ของเรา
มันไม่ได้มีการ preexist ก่อนหน้านั้น
>> ผู้ชม: คุณสามารถไปผ่าน ตรรกะสำหรับแต่ละโดยใช้ตัวอย่างมี?
MARIA ZLATKOVA: Mhm
โอ้ขอโทษ.
นี่คือตัวอย่างคือ
ตรวจสอบว่า
ดังนั้นสำหรับแต่ละ array-- ดังนั้น นั่นหมายความว่าไปอาร์เรย์นี้
เป็นกุญแจสำคัญ value-- ที่จะ ที่จะไปผ่านแถวนี้
และเป็นครั้งแรกไปและได้รับ foo ที่ ที่สำคัญ foo และบาร์ค่า
และจากนั้นในครั้งที่สอง ย้ำสำหรับห่วง
มันจะผ่านไปและใช้เวลา baz สำคัญและ qux ค่า
และจากนั้นคุณสามารถทำอะไรกับ ทั้งของพวกเขาหรือพวกเขาทั้งสอง
>> ผู้ชม: ดังนั้นความคิดที่อยู่เบื้องหลัง มีจุดสำคัญที่จะค่า
สิ่งที่คุณจะจบลงด้วยการเข้าถึง?
>> MARIA ZLATKOVA: ความคิดคืออะไร ของการมีกุญแจสำคัญในการชี้ค่า?
มันเป็นเพียงการประชุมอื่นอีก วิธีการที่จะผ่านอาร์เรย์
และความสามารถในการเข้าถึงอย่างใดอย่างหนึ่ง คีย์หรือค่าหรือทั้งสองและใช้พวกเขา
>> ผู้ชม: อะไรคือบทบาทที่ สั่ง foreach ทำงานมีอะไรบ้าง?
ดังนั้นถ้าเราจะเพิ่ม องค์ประกอบไปยังอาร์เรย์ในภายหลัง
ผู้ที่จะเป็นคนแรก เรียกว่าในอาร์เรย์ foreach,
หรือมันจะเป็นในภายหลัง?
>> MARIA ZLATKOVA: ดังนั้นสิ่งที่เป็น ลำดับที่ foreach
ห่วงไปผ่านแถวใน?
มันผ่านไปครั้งแรก องค์ประกอบองค์ประกอบที่ผ่านมา
ไปยังองค์ประกอบเพิ่มล่าสุด
ถ้าคุณเพิ่มองค์ประกอบในภายหลังที่พวกเขาจะ จะ accessed-- องค์ประกอบแรกที่จะ
เข้าถึงได้เป็นครั้งแรก องค์ประกอบของอาร์เรย์
แล้วคุณจะไปผ่านแต่ละ องค์ประกอบเป็นจัดเรียงของ ordered--
ไม่ได้รับคำสั่ง แต่วิธีการที่ พวกเขาได้รับการใส่ลงในอาร์เรย์
>> ผู้ชม: ดังนั้นองค์ประกอบใหม่ มีการเพิ่มในภายหลัง?
ดังนั้นพวกเขากำลัง added-- พวกเขาจะเป็น คนสุดท้ายใน [? การย้ำ ?]
>> MARIA ZLATKOVA: องค์ประกอบใหม่ can-- โดยทั่วไปเมื่อองค์ประกอบใหม่ที่มีการเพิ่ม
พวกเขาจะเพิ่มเข้ามาในปลายแถวหรือไม่
>> ผู้ชม: ใช่
MARIA ZLATKOVA: ผมเชื่อเช่นนั้น
ใช่.
และจากนั้นก็มีวงของคุณ foreach, หลังจากที่คุณได้เพิ่มองค์ประกอบใหม่
และคุณจะไปผ่านพวกเขา องค์ประกอบใหม่จะ
จะ accessed-- องค์ประกอบใหม่ถ้ามัน เพิ่มที่แล้วมันจะได้รับการเข้าถึงที่ผ่านมา
>> ผู้ชม: คุณสามารถเพียงแค่ให้ตัวอย่าง สิ่งที่จะ [ไม่ได้ยิน]
กับสิ่งที่มีค่า เช่น [ไม่ได้ยิน] หรือค่า
ชอบวิธีการที่คุณต้องการจัดรูปแบบที่?
>> MARIA ZLATKOVA: Sure
ฉันสามารถให้ตัวอย่างของสิ่งที่ เราจะทำอย่างไรกับค่า?
ดังนั้นสิ่งที่พวกคุณอาจจะคุ้นเคยกับ คือการที่เราได้ผ่านอาร์เรย์
และพิมพ์โดยทั่วไป แต่ละองค์ประกอบ
เช่นเป็นส่วนหนึ่งของ รายการสั่งซื้อหรือสิ่งที่
ไม่ว่าทำให้ความรู้สึกหรือเราต้องการ to--
ผู้ชม: เราสามารถพิมพ์ค่าเหล่านี้ออกมา?
MARIA ZLATKOVA: ใช่เราสามารถพิมพ์ โดยทั่วไปแล้ว $ ค่าเพราะใน
ว่าค่าเฉพาะที่เราจะเป็น พิมพ์ค่าที่อยู่ภายในของมัน
ดังนั้นถ้าเราอยู่ที่ซ้ำครั้งแรกของเรา ของมันและเราพิมพ์มูลค่า $,
เราจะพิมพ์บาร์
>> ผู้ชม: มีนอกจากนี้ยังมี ลูปใน PHP หรือเพียงแค่ห่วง foreach?
>> MARIA ZLATKOVA: มี ยังห่วงใน PHP
และตรรกะของพวกเขาเป็นส่วนใหญ่ เช่นเดียวกับสิ่งที่คุณได้รับมาใช้ในการ
ผู้ชม: ดังนั้นค่าของมันเป็นโมฆะ
MARIA ZLATKOVA: มันเป็นเช่นเดียวกัน
ใช่.
ผู้ชม: ฉันแค่จะถาม
ดังนั้นเมื่อคุณประกาศ อาร์เรย์คุณไม่จำเป็นต้อง
ที่จะบอกว่าขนาดมันจะ จะเป็นซึ่งหมายความว่าคุณสามารถเพียง
เพิ่มและนำมาใช้องค์ประกอบ [ไม่ได้ยิน]
MARIA ZLATKOVA: Yup
ได้.
ที่แน่นอน
เมื่อเราประกาศอาร์เรย์เรา ไม่จำเป็นต้องพูดในสิ่งที่ขนาดของมันคือ
ดังนั้นเราก็สามารถเพิ่มองค์ประกอบ ลงได้ในภายหลังเช่นกัน
คำถามเพิ่มเติม?
ดังนั้นการนำ PHP และ HTML ด้วยกัน สิ่งที่เราได้ seen-- ดี
ยกตัวอย่างเช่นในตัวอย่างนี้เรามี รูปแบบ HTML ที่มีเขตการป้อนข้อมูล
>> และช่องใส่เป็นชื่อเพียง และจากนั้นก็มีปุ่ม Submit
และเมื่อคุณกดส่ง ปุ่มในแฟ้ม hello.php ของเรา
เพราะวิธีการรูปแบบที่เป็น ได้รับเราสามารถเข้าถึงสิ่งที่อยู่ในชื่อ
นี้ได้รับตัวแปรทั่วโลกว่า is-- ไวยากรณ์ของมันคือ $ _GET
และจากนั้นเราสามารถเข้าถึงใด ผู้ใช้ป้อนข้อมูลภายในของรูปแบบสำหรับชื่อที่
โดยระบุชื่อของเขตข้อมูลว่า
>> คำถามอื่น ๆ หรือ คำถามเกี่ยวกับตัวอย่างที่เฉพาะเจาะจงนี้หรือไม่?
>> ผู้ชม: อยู่ที่ไหน PHP?
MARIA ZLATKOVA: ที่นี่
ดังนั้นนี่คือแท็กเปิดของเราสำหรับภาษา PHP
>> ผู้ชม: โอ้ขวา
>> MARIA ZLATKOVA: ใช่
>> HANNAH Blumberg: หรือไม่ = คือชวเลข สำหรับเรื่องนี้คือ PHP และเพียงแค่สะท้อน
ผู้ชม: โอ้
MARIA ZLATKOVA: ใช่ขอโทษ
ฉันควรจะทำที่ชัดเจน
>> HANNAH Blumberg: พิมพ์
MARIA ZLATKOVA: มันเป็นเพียงแค่การทำงาน ที่ช่วยให้เราสามารถพิมพ์บางสิ่งบางอย่าง
คำถามที่ดี
ดังนั้น going-- ใช่
>> ผู้ชม: จะมีไปได้มากทีเดียว บิตของการเขียนโปรแกรมในมือของ PHP และ HTML
ในการตอบคำถาม 1
MARIA ZLATKOVA: สามารถมีได้ จำนวนเงินที่ยุติธรรมของการตีความ
ของ PHP และ HTML ไม่จำเป็นต้อง เหมือนเป็นจำนวนมากของการเข้ารหัส
แม้ว่าคุณอาจจะต้องเขียน ห่วง foreach แต่สำหรับห่วง
ใด ๆ ของลูปที่เรา ครอบคลุมที่นี่เป็นเกมที่ยุติธรรม
และนั่นเป็นส่วนใหญ่
HANNAH Blumberg: ฉันจะต้องเตรียม
ในลักษณะเดียวกับที่เราขอให้คุณ เขียนพวงของฟังก์ชัน C ในการตอบคำถาม 0,
ผมจะมีความพร้อมที่จะทำ เดียวกันใน PHP และ JavaScript
MARIA ZLATKOVA: ใช่
HANNAH Blumberg: ผมจะบอกว่า little-- เหมือนเราไม่ได้
จะทำให้คุณเขียน HTML ใหญ่ หน้าเพียงเพราะเห็นว่านิด ๆ หน่อย ๆ
น่าเบื่อ แต่คุณอาจมีชิ้นส่วน
นั่นเป็นเกมที่ยุติธรรมโดยสิ้นเชิง
ชอบหน้า HTML เล็กน้อยเป็นธรรมทั้งหมด
ผู้ชม: ตกลง
วิธีการเกี่ยวกับใน JavaScript เช่นกัน?
HANNAH Blumberg: ใช่
เกมที่ยุติธรรมของ JavaScript
>> MARIA ZLATKOVA: ใช่
นั่นเป็นเกมที่ยุติธรรมอย่างสมบูรณ์
HANNAH Blumberg: เราจะได้รับ เพื่อว่าในเช่น 10 นาที
>> MARIA ZLATKOVA: SQL อีกครั้ง ภาษาของแบบสอบถาม
มันเป็นพื้นช่วยให้เราสามารถจัดการข้อมูล ในการจัดการฐานข้อมูลเชิงสัมพันธ์
ระบบ.
ที่เพิ่งโดยทั่วไปหมายถึง ที่เรามีอยู่ที่ไหนสักแห่ง
การจัดเก็บข้อมูลบางอย่างที่เราอาจต้องการที่จะ การใช้งานในเว็บไซต์หรือในบางรูปแบบอื่น
และจากนั้นเรามีข้อสงสัยที่จะได้รับ ข้อมูลจากฐานข้อมูลของเรา
หรือแทรกข้อมูลในพวกเขา
จำนวนมากของการปรับปรุง ones-- ทั่วไป INSERT, เลือกและลบ
>> ดังนั้นสำหรับการปรับปรุงนี้เป็นไวยากรณ์ สำหรับการปรับปรุงข้อมูลในฐานข้อมูล
อัพเดตตารางนี้เรียกว่า ตารางโดยกล่าวว่าตลาดหลักทรัพย์ฯ
เราสามารถตั้งค่าบางอย่างในทุก แถวเพื่อสิ่งอื่นที่เท่าเทียมกัน
ดังนั้นเราจึงยังสามารถระบุบาง รายการที่เราต้องการที่จะปรับเปลี่ยน
และที่สามารถใช้สถานที่
และเราสามารถระบุว่าเราต้องการที่จะ ปรับเปลี่ยนบางแถวที่บ้านสำหรับ
ถ้าเรามีตารางของนักเรียน และนักเรียนทุกคนมีบ้าน
ดังนั้นเราจะปรับเปลี่ยนค่าบางอย่าง ที่บ้านเท่ากับคิวเรียร์,
ตัวอย่างเช่น.
>> สำหรับ INSERT เราสามารถแทรก ค่าบางอย่างลงในตาราง
ดังนั้น INSERT INTO ตาราง แล้วค่า
และจากนั้นในวงเล็บเราระบุ ซึ่งค่าที่คุณต้องการแทรก
ดังนั้น INSERT INTO ตาราง col1 และ col2 ค่าเป็น VAL1 และ val2
ดังนั้นนี่แทรกพื้นแถวใหม่ใน ตารางที่มีค่าที่ 1 และ 2
ภายใต้คอลัมน์ที่ 1 และ 2
>> และจากนั้นเรากำลังจะไปมากกว่า ตัวอย่างรวดเร็วของวิธีนี้ดู
เหมือนอยู่ในฐานข้อมูลของเรานิด ๆ หน่อย ๆ
แต่คำนี้เป็นครั้งสุดท้ายที่ฉัน คิดว่าเรากำลังจะข้ามไป
เลือกมันก็ช่วยให้เรา เพื่อเลือกข้อมูลจากตาราง
อาจจะใช้งานได้หลังจากนั้น
และวิธีที่เราทำเช่นนี้ก็คือเรา เพียงแค่เก็บไว้ในตัวแปรบาง
และจากนั้นเราอาจจะสามารถใช้งานได้อีกครั้ง
>> ดังนั้นเลือกดาวหมายถึงการเลือกทั้งหมด
นั่นเป็นเพียงจดชวเลข สำหรับการเลือกทั้งหมด
ตารางจากที่ไหนเรากำลังมองหา สำหรับเงื่อนไขที่เฉพาะเจาะจงบางอย่าง
เพื่อที่คอลัมน์เท่ากับ บางสิ่งบางอย่างเช่น
ถ้าเราอยากจะ เลือกทั้งหมดจากตาราง
เพียงแค่นี้เลือกคอลัมน์ทั้งหมด และแถวทั้งหมดจากตาราง
>> แล้วลบจากตาราง WHERE เทือกเขาเท่ากับบางสิ่งบางอย่าง
เพียงแค่นี้ลบบาง แถวจากตารางของเรา
ที่เรามีเงื่อนไขบางอย่าง
ในกรณีนี้เงื่อนไข คอลัมน์เท่ากับบางสิ่งบางอย่าง
ดังนั้นเพียงแค่ตัวอย่างรวดเร็วนี้
ถ้าเรามีตารางนี้ที่นี่และเรา ใส่ลงในตารางค่าเหล่านี้
ที่จะแทรกแถวใหม่
และถ้าเรามีรถยนต์ที่เพิ่มขึ้นนี้จะ เพียงแค่เพิ่ม ID ของเรา 0-1 ที่จะ 2
>> ถ้าเราเลือกทั้งหมดจากนักเรียนก็ เพียงแค่ผลตอบแทนทุกสาขาและทุกแถว
ในกรณีที่เป็นมากขึ้นในปี กว่าหรือเท่ากับปี 2016
ที่เพิ่งจะกลับมา ฮันนาห์และตัวผมเอง
และแล้วถ้าเราเลือกเพียง รหัสปีและในปีจากนักเรียน
ที่บ้านเป็น Cabot บ้านว่า จะอีกครั้งกลับมาฮันนาห์และตัวผมเอง
>> แล้วถ้าเราลบออกจากนักเรียน ชื่อที่มีค่าเท่ากับร็อบ
ที่จะลบทั้งแถว
และจากนั้นถ้าเราตั้งค่า ชื่อนักเรียน UPDATE
ชื่อ SET เท่ากับ Daven สถานที่บ้านจะมีค่าเท่ากับ
Cabot บ้านที่จะไป แถวเหล่านั้นและจากนั้นปรับปรุงชื่อ
>> และจากนั้นไม่กี่ชนิดข้อมูล SQL เป็น CHAR, VARCHAR, INT และ FLOAT
เหล่านี้เป็นเกมที่ยุติธรรม
ฉันจะไปอีกครั้ง และให้แน่ใจว่าคุณรู้ว่า
และมีพวกเขาอยู่บนแผ่นโกงของคุณ สิ่งที่แต่ละตัวอักษรเหล่านั้น
ได้ถูกนำมาใช้สำหรับสิ่งที่ ที่คุณใช้พวกเขาใน psets ของคุณ
และให้แน่ใจว่าคุณคุ้นเคยและ สะดวกสบายกับการต้องเลือก
จากชนิดข้อมูลที่แตกต่างกันใน pset ของคุณ
ใช่.
>> ผู้ชม: อะไรคือสิ่งที่ตารางที่เก็บไว้?
ใช่ที่เป็นตารางนี้เก็บไว้?
MARIA ZLATKOVA: ดี ตอนนี้ก็ไม่ได้เก็บไว้
อย่างไรก็ตามที่เป็นตารางนี้เก็บไว้?
แต่ก็สามารถเก็บไว้ในฐานข้อมูล SQL
>> ผู้ชม: และสถานที่ที่เป็นฐานข้อมูล SQL?
ในเครื่องคอมพิวเตอร์ออนไลน์ บางเซิร์ฟเวอร์หรือไม่
>> MARIA ZLATKOVA: มันอาจจะเป็น จำนวนสิ่งที่แตกต่าง
>> HANNAH Blumberg: เราได้เชื่อมต่อกับ ตาราง SQL ส่วนใหญ่กับ phpMyAdmin
ดังนั้นเราจึงสามารถขอเซิร์ฟเวอร์ เพื่อเก็บไว้สำหรับเรา
เราสามารถเก็บไว้ในคอมพิวเตอร์ของเราเอง
>> MARIA ZLATKOVA: มันก็ขึ้นอยู่กับ วิธีที่คุณต้องการที่จะทำมันด้วยตัวคุณเอง
แต่เราได้รับการจัดเก็บ พวกเขาเป็นฮันนาห์กล่าว
ใน phpMyAdmin ซึ่งเป็นออนไลน์
และแล้ววิธีที่เราใช้ PHP และ SQL เราเก็บไว้
ลงในตัวแปรบาง สิ่งที่เราได้สอบถาม
>> ดังนั้นหากเราเลือกทั้งหมดจากประวัติศาสตร์ ที่ user_id เท่ากับรหัสเซสชั่น
ที่จะเลือกแถวทั้งหมด สำหรับคนที่เฉพาะเจาะจง
ถูกบันทึกไว้ในประวัติศาสตร์จาก โต๊ะและจัดเรียงพวกเขาเข้าแถว
สิ่งที่เย็นจะรู้ก็คือ ว่าการทำงานของแบบสอบถาม CS50
ป้องกัน SQL แท็กการฉีด
นั่นก็หมายความว่ามันจะทำให้แน่ใจว่า การป้อนข้อมูลที่ป้อนถูกต้อง
และคนที่ จะเข้าสู่การป้อนข้อมูล
ไม่พยายามที่จะเข้าบางที่เป็นอันตราย รหัสทั้งวางตารางของเรา
หรือลบทุกอย่าง ด้านในของฐานข้อมูลของเรา
>> ภาพรวมอย่างรวดเร็วของ รุ่นดูรูปแบบการควบคุม
มันเป็นเพียงวิธีการจัด และการคิดเกี่ยวกับรหัส
มันเป็นอีกครั้งกระบวนทัศน์การออกแบบ
สิ่งที่หมายถึงคือการที่เรา can-- และเป็นแนวปฏิบัติที่ดี
ที่จะแยกชิ้นส่วนที่แตกต่างกัน รหัสและสิ่งที่พวกเรา
เข้าควบคุมทั้งสามกระบวนทัศน์
>> ดังนั้นมุมมองของเราส่วนใหญ่มักจะเป็นของเรา แม่แบบรูปแบบของเราทาง
ที่เราตั้งค่ารหัสของเราดู
นั่นเป็นส่วนใหญ่ไฟล์ CSS ของเราและวิธีการที่ ที่เรากำหนดไว้การออกแบบของรหัสของเรา
เป็นพื้น
ควบคุมของเราส่วนใหญ่จะเป็นสิ่งที่ เราได้รับการทำกับไฟล์ PHP
ดังนั้นอีกครั้งการทำงานร่วมกับ ข้อมูลที่เรามี
และการกำหนดวิธีการที่ ข้อมูลจะถูกนำมาใช้
แล้วส่งผ่านข้อมูลนั้น อย่างใดอย่างหนึ่งลงบนมุมมองหรือรูปแบบ
และรูปแบบวิธีการที่เราได้ ได้ใช้มีที่ได้รับฐานข้อมูลของเรา
เพื่อที่ข้อมูลของเราคือ เก็บไว้ดังนั้นจึงมีที่ใดที่หนึ่ง
ที่จะอยู่ในและใด ๆ ของ รหัสที่เกี่ยวข้องกับวิธีการ
ที่เราได้รับว่าข้อมูลหรือ วิธีการที่เราปรับปรุงข้อมูลว่า
>> ดังนั้นในรูปแบบ MVC, HTTP การร้องขอจะถูกส่งไปยังเว็บเซิร์ฟเวอร์
จากนั้นตีความควบคุม การร้องขอจากผู้ใช้
และจากนั้นจะตรวจสอบผู้ใช้ป้อน
มันเป็นตัวเลือกที่เรามี ควบคุมการสื่อสาร
กับรูปแบบเพื่อให้บางสิ่งบางอย่าง เช่นฐานข้อมูลของเรา
หรือการทำงานอื่น ๆ ที่รีเลย์ข้อมูล
และแล้วในที่สุดตัวควบคุม ส่งผ่านข้อมูลไปยังมุมมอง
เพื่อที่จะสามารถ การแสดงผลและการที่จะสามารถ
กลายเป็นมองเห็นให้กับบุคคลใด ๆ การเข้าถึงหน้าเว็บที่
>> มีคำถามอะไรไหม?
ที่น่ากลัว
ดังนั้นอีกครั้งรูปแบบ ฟังก์ชั่นของตนอีกครั้ง
การจัดเก็บถาวรของข้อมูล การจัดการและการจัดระเบียบข้อมูล
และสิ่งที่เราได้เห็น ห่างไกลเป็นฐานข้อมูล MySQL
และไฟล์ข้อมูลใด ๆ ที่อาจใช้
>> มุมมองการนำเสนอข้อมูลให้กับ ผู้ใช้, UI หรือส่วนติดต่อผู้ใช้
และตัวอย่างนี้เป็น HTML
และจากนั้นเราอาจจะมี PHP น้อยที่สุด
ดังนั้นสำหรับวงที่ iterates มากกว่าข้อมูลที่พิมพ์ออกมา
เป็นส่วนหนึ่งของมุมมองที่เป็น ตรงข้ามกับการควบคุม
และมากแล้วไฟล์ PHP ของเรา ตกอยู่ในประเภทการควบคุม
มันก็จัดการการร้องขอของผู้ใช้และ ได้รับข้อมูลจากแบบจำลอง
>> กระโดดลงไปในเอกสาร รูปแบบวัตถุเพียงแค่นี้
หมายถึงวิธีการ html เอกสารที่มีการจัด
และพวกเขากำลังจัดเป็นต้นไม้ โครงสร้างที่มีลำดับชั้น
ดังนั้นหากเรามีการเข้าถึง [ไม่ได้ยิน] ตัวแทนของเอกสาร
เราสามารถทำงานกับเอกสารเช่น เราจัดการกับวัตถุพื้น
>> และเพื่อให้นี้ นิด ๆ หน่อย ๆ ที่ชัดเจนเมื่อ
เรามีจำนวนมากของเรา แท็กที่แตกต่างกันตอบสนอง
เส้นทางที่แตกต่างกันในต้นไม้ของเรา
และแล้วสำหรับตัวอย่างนี้เรา มีโหนดเอกสารเริ่มต้น
เรามีแล้วโหนด HTML ของเรา ที่แยกออกเป็นหัวและลำตัว
หัวมีชื่อแล้ว มีชื่อสวัสดีโลก
และร่างกายของเรามีเพียงแค่ สวัสดีโลกได้เป็นอย่างดี
>> ดังนั้นคำถามใด ๆ เกี่ยวกับการใด ๆ สิ่งที่เราได้รับการคุ้มครองเพื่อให้ห่างไกล?
และหากไม่ได้ฮันนาห์จะ ใช้เวลามากกว่าด้วย JavaScript
ที่น่ากลัว
>> HANNAH Blumberg: OK เย็น
หากมีสิ่งใดมากับ PHP หรือ HTML, หรือใด ๆ ของสิ่งที่มาเรียครอบคลุม,
เราสามารถหยุดการทำงานชั่วคราว
เรากำลังดำเนินการที่ดีขึ้นใน เวลาอีกครั้งเพื่อให้น่ากลัว
และเพียงแค่กลับไป ได้อย่างรวดเร็วจริงๆนี้
ถ้าคุณมองไปที่ทุก การสอบปีที่ผ่านมานี้
มาที่นี่เป็น either-- HTML บางทำให้แผนภาพนี้
หรือนี่เป็นแผนภาพนี้ทำให้บาง HTML เพื่อให้การปฏิบัติที่แน่นอน
และแล้วที่หนึ่งรับประกัน คำถามที่คุณสามารถได้รับสิทธิ
เย็น.
ดังนั้นเรามาพูดคุยเกี่ยวกับ JavaScript และวิธีที่จะนิด ๆ หน่อย ๆ
ที่แตกต่างจากภาษาเช่น PHP และ C, สองภาษาที่เราเห็นก่อน
จำนวนหนึ่งดังนั้นจึงพิมพ์อย่างอิสระ
นั่นคือเช่น PHP แต่ไม่เหมือนซี
>> มันเป็นภาษาที่ตีความ
อีกครั้งที่ชอบ PHP ซึ่งแตกต่างจากซีและนี่
เป็นไปเพื่อช่วยให้เราสามารถ use-- มัน ทำงานจริงๆอย่างกับหน้าเว็บ
มันจะช่วยให้เราสามารถจัดการกับ เนื้อหาและวิธีการที่จะดู
และสิ่งที่มันไม่
>> เรากำลังจะไปดูนิด ๆ หน่อย ๆ ของอาแจ็กซ์
จะช่วยให้เราสามารถสื่อสาร ถ่ายทอดสดกับเซิร์ฟเวอร์ที่แตกต่างกัน
และได้รับข้อมูล
และนี่คือสิ่งที่จริงๆ แยกจากจาวาสคริปต์ PHP และ C
คือว่ามันเป็นฝั่งไคลเอ็นต์
ทั้ง PHP และ C เป็น โดยทั่วไปด้านเซิร์ฟเวอร์
>> ส่วนใหญ่และ สิ่งที่เกือบทั้งหมด
เราได้เห็นอย่างน้อยใน ชั้นนี้ JavaScript
ทำหน้าที่ในฝั่งไคลเอ็นต์ซึ่งหมายความว่า เบราว์เซอร์ที่เป็นจริง
ความรับผิดชอบในการทำงาน
และนั่นหมายความว่าเราทำไม่ได้ จำเป็นที่จะต้องมีปฏิสัมพันธ์กับเซิร์ฟเวอร์
ดังนั้นจึงหมายความว่ามันสามารถเป็นจำนวนมากได้เร็วขึ้น เพราะมันเป็นจริงเพียงมันเป็นโครเมี่ยม
มันซาฟารีก็ Firefox, สิ่งที่คุณ ใช้ทำงานจริง JavaScript ของคุณ
>> ผู้ชม: อะไรไม่ตรงกันหมายความว่าอย่างไร
>> HANNAH Blumberg: อ่าสิ่งที่ ไม่ถ่ายทอดสดหมายความว่าอย่างไร
คำถามที่ดี
Asynchronously means-- ดีเนื้อหาที่
เราจะใช้มันเป็นตกลงเรา มีการสร้างหน้าเว็บ
และเราจำเป็นต้องได้รับข้อมูลบางอย่าง
ดังนั้นด้วยตัวอย่างของการตอบโต้กับผู้ใช้ได้ที่ ข้อมูลบางอย่างที่เราอาจต้องการ
เป็นชื่อบทความ
ตอนนี้เรา could-- ทางเลือกหนึ่ง จะทำพร้อมกัน
และนั่นหมายความว่าให้ของ หยุดไปได้รับบทความ
บทความได้รับกลับมาแล้ว ทำให้ แต่จะช้าจริงๆ
ที่จะเป็นประสบการณ์การใช้งานที่ไม่ดี เพราะคุณก็จะได้นั่ง
มีรออะไรบางอย่างที่จะตอบสนอง
>> Asynchronously หมายความว่าเราจะ ดำเนินการต่อไปจะเกี่ยวกับธุรกิจของเรา
การแสดงผลหน้าและ เราจะส่งออกร้องขอ
ที่ชนิดของการไป เกิดขึ้นในพื้นหลัง
ผมคิดว่าเราใช้ตัวอย่างใน การบรรยายของการเรียกร็อบและพูดว่า
เดี๋ยวก่อนคุณสามารถมองขึ้นนี้ สำหรับฉันและได้รับกลับมาให้ฉัน
เมื่อเทียบกับเพียงฉัน รอทางโทรศัพท์
ดังนั้นถ่ายทอดสดหมายความว่ามันจะเกิดขึ้น ในพื้นหลังออกไปจากเรา
ในแบบคู่ขนาน.
>> คำถามที่ดี
อะไรอีกหรือไม่
ที่ดี
เราจะกระโดดมากขึ้นเป็น ร้องขอไม่ตรงกันกับอาแจ็กซ์
>> ผู้ชม: ไม่ JavaScript-- ที่ไม่ มันตกกับตัวควบคุมแบบมุมมอง?
HANNAH Blumberg: คำถามที่ดี
ฤดูใบไม้ร่วง JavaScript จะอยู่ที่ไหน กับตัวควบคุมแบบมุมมอง?
หืมมม
ผมคิดว่ามันสามารถ fall-- ดังนั้นเราจึงมักจะไม่
ชอบที่จะ squish มันกลายเป็นว่า กระบวนทัศน์ แต่ผมคิดว่าผมจะพูดว่า
ตกลงดังนั้น JavaScript จริงเป็นไปเพื่อให้
เราจะรวบรวมข้อมูล ตีความข้อมูลทำจริง
สิ่งที่มีความหมายกับข้อมูล
ในแบบที่มันเป็นเหมือนการควบคุมมาก
>> แต่ก็ยังจะช่วยให้เราสามารถ สิ่งที่แสดงและสิ่งที่พิมพ์
ในแบบที่มันเป็นมุมมองที่เหมือนมาก
ใช่.
ดังนั้นมันจึงเป็นชนิดเช่น PHP ใน ที่จะสามารถชนิดของการเป็นได้ทั้ง
คำถามที่ดี.
อะไรอีกหรือไม่
สิทธิทั้งหมดที่น่ากลัว
ย้ายขวาพร้อม
>> ดังนั้นเรามาดูตัวอย่าง วิธีการที่เราสามารถใช้
JavaScript ในหนึ่งในโปรแกรมเว็บของเรา
ดังนั้นผมจึงจะพิจารณาเรื่องนี้ index.html กับพวงของที่ HTML
และสิ่งที่ผมต้องการให้คุณ มุ่งเน้นไปที่แท็กสคริปต์นี้
และนี่กล่าวว่าตกลงฉันต้องการที่จะทำงานบางอย่าง JavaScript และที่นี่เป็นที่ที่มันอาศัยอยู่
มันอาศัยอยู่ใน hello.js
>> และอย่างมากเช่น CSS, เราสามารถทำได้ ใส่จาวาสคริปต์ภายในของ HTM​​L
ทำไมเราอาจต้องการที่จะแยกออก?
ใช่.
>> ผู้ชม: ง่ายต่อการเขียน?
>> HANNAH Blumberg: ใช่
มันง่ายที่จะใช้ข้าม หน้าเว็บที่แตกต่างกัน
มันทำให้สิ่งที่ทำความสะอาด
มันเป็นเพียงการปฏิบัติที่ดี
ที่น่ากลัว
คำตอบที่ดี.
ดังนั้นที่ดีเพื่อให้เป็นไป จะเป็น index.html ของเรา
และจากนั้นก็ลงที่นี่เป็นของเรา ไฟล์จาวาสคริปต์เล็ก ๆ เล็ก ๆ น้อย ๆ
>> และทั้งหมดก็บอกว่าเป็นแจ้งเตือนสวัสดีโลก
ดังนั้นสิ่งที่เกิดขึ้นคือเมื่อ renders-- หน้านี้
ดังนั้นหากคุณไปที่สิ่งที่เว็บไซต์ นี้ is-- ทั้งหมดที่จะเกิดขึ้น
มันจะเป็นไปได้ที่จะพูดว่าตกลงฉัน จะไปทำงานนี้โค้ด JavaScript
และนี่โค้ด JavaScript เพียงกล่าวว่าการแจ้งเตือนสวัสดีโลก
ดังนั้นฉันจะได้รับนี้ เล็ก ๆ น้อย ๆ ที่เป็นมิตรป๊อปอัพ
>> เย็น?
นั่นคือชนิดเช่นครั้งแรกของเรามาก โปรแกรม JavaScript สวัสดีของเราทั่วโลก
ลองดูนิด ๆ หน่อย ๆ เกี่ยวกับสิ่งที่ ไวยากรณ์ของ JavaScript ดูเหมือน
และโดยเฉพาะขอเปรียบเทียบกับ C และ PHP ซึ่งเราเคยเห็นมาก่อน
>> ใน JavaScript เรากำลังจะมี var ชื่อของตัวแปรแล้ว
มูลค่าที่แท้จริงของมัน
และเราไม่ได้ระบุชนิดเพียง เช่นใน PHP แต่อย่างแตกต่างจากในซี
ดังนั้นตัวอย่างเช่นถ้าเราต้องการ ในการจัดเก็บ 50 ค่า
ใน C เราจะต้องบอกว่า เฮ้, C, ฉันต้องการจำนวนเต็ม
ฉันจะเรียกมันว่า i และค่าของมันคือ 50
ใน PHP ก็ง่ายขึ้นอีกนิด
เราบอกว่าเดี๋ยวก่อนฉันต้องการตัวแปร เรียกว่าฉันและความคุ้มค่าของมันคือ 50
มากในทำนองเดียวกันใน JavaScript เรา บอกว่าเดี๋ยวก่อนฉันต้องการตัวแปรที่เรียกว่า i,
ค่าของมันคือ 50
ทุกครั้งที่ผมใช้ในภายหลัง ฉันฉันไม่จำเป็นต้องเขียน var
มันเป็นเพียงฉันจากจุดนั้น
ในทำนองเดียวกับใน C ที่ เมื่อเราพูด int i, เราก็ใช้ฉัน
เย็น?
ทั้งหมดขวา
>> ย้ายไปยังลูป โชคดีที่เหล่านี้เกือบจะ
ดู exactly-- ผมคิดว่าพวกเขากำลัง เหมือนกับสิ่งที่
ลูปจะมีลักษณะเหมือนใน บางสิ่งบางอย่างเช่น C ที่ของคุณสำหรับวง
เป็นไปได้ที่สาม parts-- เริ่มต้นที่
สภาพและการปรับปรุง
ห่วงในขณะที่จะมีลักษณะเดียวกันแน่นอน
เราเพียงแค่ให้มันเงื่อนไข
>> และทำในขณะที่ห่วง อีกครั้งเหมือนกัน
เราจะให้มันเงื่อนไข
สมมติว่าผมอยากจะย้ำ over-- ฉันอยากจะทำบางสิ่งบางอย่างห้าครั้ง
ใน C เราอาจจะเขียน สำหรับ init ฉันเท่ากับ 0
ฉันมีค่าน้อยกว่า 5 ผม ++
ความแตกต่างเพียงอย่างเดียวใน JavaScript, แทนที่จะพูดว่าฉัน int เท่ากับ 0,
เราบอกว่าฉัน var เท่ากับ 0
สวย.
นั่นคือความแตกต่างเพียง
คำถามใด ๆ เกี่ยวกับการใด ๆ ที่?
ใช่.
>> ผู้ชม: ดังนั้นใน PHP ก็เหมือนกัน สิ่งยกเว้น แต่เช่นเดียวกับตัวแปรหรือไม่?
หรือก็คือการที่ตัวอย่างเช่น var หรือไม่?
HANNAH Blumberg: ใช่
ดังนั้นใน PHP ก็จะ จะเป็นเครื่องหมายดอลลาร์
ดังนั้นมันจะเท่ากับ $ ฉัน 0, $ ฉันน้อยกว่า 5, $ ผม ++
คำถามที่ดี
>> ตอนนี้ขอพูดคุยเกี่ยวกับ ฟังก์ชั่นการประกาศ
ใน C เมื่อเราประกาศให้เป็น ฟังก์ชั่นที่เราให้มันชื่อ
และเราให้มันพารามิเตอร์บางอย่าง
และที่จุดเริ่มต้นที่เราเขียนประเภท
ใน JavaScript เราทุกคน ต้องทำคือการเขียน
ฟังก์ชั่นคำหลักที่ กล่าวว่าเฮ้, JavaScript,
ฉันจะกำหนดฟังก์ชั่น
>> ในกรณีนี้จะมีผลรวมชื่อ
และจะใช้เวลาสองขัดแย้ง, x และ y
ขอให้สังเกตว่าเราไม่ดูแล เกี่ยวกับชนิดของ x และ y
และเช่นเดียวกับซีเรามี นี้การกลับมาของคำหลัก
เพื่อให้เราสามารถทำบางสิ่งบางอย่าง เช่นเดียวกับผลตอบแทนที่ x และ y
>> และตอนนี้เมื่อเราได้เขียนนี้เป็นครั้งแรก ฟังก์ชั่นที่เราสามารถใช้ผลรวมได้ทุกที่
และที่ดีทั้งหมด
สิ่งหนึ่งที่เย็นจริงๆเกี่ยวกับ จาวาสคริปต์ที่มีความแตกต่างจาก C
เป็นฟังก์ชั่นที่สามารถ ได้รับการปฏิบัติเช่นค่า
เพื่อให้เราสามารถทำสิ่งที่ชอบที่นี่ ที่ฉันคิดว่าฉันนี้ครอบคลุม up--
ฉันปกคลุมผลรวมวา part-- และเราก็กล่าวว่า
ฟังก์ชั่นเซ็กซี่เท่ากับ x y ที่กลับมาบวก
>> นั่นคือสิ่งที่จะถูกเรียกว่า ที่ไม่ระบุชื่อฟังก์ชั่น
มันเป็นฟังก์ชั่นที่ไม่มีชื่อ
ในขณะที่ฟังก์ชั่นนี้กล่าวว่า ผลรวม blah, blah, blah,
เพียงแค่นี้จะบอกว่าฟังก์ชั่น
แต่ตอนนี้แม้ว่าฉันมี ฟังก์ชั่นนี้ที่ไม่ระบุชื่อ
ฟังก์ชั่นที่เป็นจริงเพียงแค่ค่า
เราสามารถรักษามันเช่นค่า
>> ดังนั้นเราจึงสามารถบันทึกไว้ในตัวแปรเดียวกัน วิธีที่เราสามารถเก็บ 50 ในตัวแปร
ดังนั้นเราจึงสามารถพูดได้ว่าตกลงฉันต้องการ ตัวแปรก็เรียกว่าผลรวม
และมันก็เป็นฟังก์ชั่นนี้
ดังนั้นทั้งสองสิ่งเป็นจริง จะทำสิ่งเดียวที่แน่นอน,
แต่ไวยากรณ์เล็ก ๆ น้อย ๆ แตกต่างกันและชนิดของการบันทึกความสนุกสนาน
ใช่.
>> ผู้ชม: เพ​​ื่อให้คุณสามารถเรียก ฟังก์ชั่นที่ถูกระบุชื่อโดยกล่าวว่า
วงเล็บผลรวม 2, 5?
HANNAH Blumberg: ใช่
คุณสามารถเรียกที่ไม่ระบุชื่อนี้ ฟังก์ชั่นในทางเดียวกัน
คุณจะทำผลรวม (2, 5) ;.
ที่จะได้รับการปรับทั้งหมด
>> ถ้าฉันไม่ได้ทำผลรวม var เท่ากับ ฟังก์ชั่นถ้าผมเพิ่งลบ
this-- ฉันรู้ว่ามันอยู่ในมือของฉัน แต่หลอกฉันลบ this-- แล้ว
ฟังก์ชั่นที่มีชนิดของหายไปเพียง
คุณไม่สามารถใช้งานได้อีกครั้งเพราะ คุณไม่ได้มีชื่อของมัน
มันยากที่จะหมายถึงบางสิ่งบางอย่าง คุณไม่ทราบว่าจะเรียก
คำถามที่ดี.
ใช่.
>> ผู้ชม: คุณสามารถอ้างอิงในผลรวม สถานที่อื่น ๆ ที่มีค่าของ x บวก y ที่หรือไม่
>> HANNAH Blumberg: คุณสามารถ ผลรวมการอ้างอิงในที่อื่น ๆ
ที่มีค่า x บวก y ที่หรือไม่
ผมไม่แน่ใจว่าทั้งหมดสิ่งที่คุณหมาย
>> ผู้ชม: ดังนั้นคุณที่ผ่านมากึ่งที่ไม่ระบุชื่อ ฟังก์ชั่นคือผลรวมเท่ากับนี้
ฟังก์ชั่นที่ไม่ระบุชื่อเพื่อรวมเป็น ตอนนี้ตัวแปรที่คุณ can--
HANNAH Blumberg: ขวา
ผลรวมดังนั้นตัวแปร แต่ก็ actually--
ผลรวมจึงเป็นตัวแปรที่มี ค่าฟังก์ชั่น
ดังนั้นจึงเป็นฟังก์ชั่นซึ่งเป็นชนิดของ เป็นสิ่งที่แปลกที่จะตัดหัวของรอบ
นับตั้งแต่ที่เราได้เล่นกับ C และคุณไม่สามารถทำเช่นนั้นใน C.
แต่ตอนนี้เราสามารถเรียกรวม แบบเดียวกับที่เราสามารถโทรผลรวมที่นี่
ผู้ชม: ตกลง
HANNAH Blumberg: ใช่
คำถามที่ดี.
ใช่.
>> ผู้ชม: ดังนั้นเราจึงไม่ได้ใช้ ต้นแบบใน PHP หรือ JavaScript?
HANNAH Blumberg: ไม่มีเรา ไม่จำเป็นต้องใช้ต้นแบบ
โดยเฉพาะอย่างยิ่งใน JavaScript
ดังนั้นสิ่งที่ปฏิบัติไม่ดีคนหนึ่งที่ฉัน จะบอกว่าคุณไม่ควรทำ
คือคุณจะได้ไม่ต้องเขียน var i = 50
คุณก็สามารถเริ่มต้นทำ i = 50
และเพียงแค่จะทำให้ฉันตัวแปรทั่วโลก
>> มันปฏิบัติไม่ดีมากที่จะ ไม่เคยพูดอย่างชัดเจน var i,
แต่มันเป็นสิ่งที่คุณสามารถทำได้
ล่ามไม่ ไปตะโกนใส่คุณ
JavaScript เป็นเช่นสวย คุณสามารถทำสิ่งที่คุณต้องการ
โอ้ขอโทษ.
มีสองเรื่อง
กางเกงในสีส้ม
เอาเลย
>> ผู้ชม: ไม่มีคุณไปก่อน
>> ผู้ชม: ไม่มีผมก็แค่บอกว่า ฉันไม่ได้มีมือของฉันขึ้น
ตกลง.
ดังนั้นถ้าคุณมีการเรียก เป็นครั้งแรกที่ตอนนี้สรุป,
เราเรียกมันว่าทางเดียวกัน, x, y ที่เหมือนทุกครั้งเดียว?
HANNAH Blumberg: ใช่
ดังนั้นทั้งสองเป็นหลัก ทำสิ่งเดียวกัน
ผู้ชม: และสิ่งที่ได้เปรียบ ของการใช้หนึ่งหรืออื่น ๆ ?
HANNAH Blumberg: ไม่มีประโยชน์ ของการใช้หนึ่งหรืออื่น ๆ
ฉันแค่อยากจะแสดงให้คุณทั้งสอง ชิ้นส่วนต่างๆของไวยากรณ์
หลายครั้งที่ไม่ระบุชื่อ ฟังก์ชั่นจะมีวัตถุประสงค์
คือถ้าอาร์กิวเมนต์ไปยังอีก ฟังก์ชั่นที่ควรจะเป็นฟังก์ชั่น
และเราจะเห็นว่าใน เพียงสองอาแจ็กซ์ด้วย
>> ดังนั้นหากที่ไม่ได้ทำให้ความรู้สึกใด ๆ เก็บไว้ในด้านหลังของหัวของคุณ
นั่นคือสิ่งที่ไม่ระบุชื่อ ฟังก์ชั่นอาจจะมีประโยชน์
เพราะมันไม่คุ้มค่าจริงๆ ให้มันชื่อเนื่องจากเรากำลังเพียง
จะใช้เพียงครั้งเดียว
ใช่.
>> ผู้ชม: ถ้า x และ y การเปลี่ยนแปลงในภายหลัง ที่จะสรุปผลการเปลี่ยนแปลงเช่นกัน?
HANNAH Blumberg: ถ้า x และ y การเปลี่ยนแปลง ต่อมาจะสรุปการเปลี่ยนแปลงเช่นกัน?
ดังนั้นนี่คือที่จริงผม คิดว่าสิ่งที่,
อีกครั้งก็แค่รู้สึกแตกต่างกันมาก จากซีนี้ไม่ได้ค่า
มันไม่ได้ 5
มันเป็นเพียงฟังก์ชั่นของตัวเอง
ดังนั้นทันทีที่คุณให้มันพารามิเตอร์, แล้วคุณจริงจะคำนวณค่า
>> MARIA ZLATKOVA: และแล้ว คุณสามารถเรียกใช้ฟังก์ชัน
และใช้ในการได้รับค่าบางอย่าง
HANNAH Blumberg: ขวา
ที่แน่นอน
ใช่.
>> ผู้ชม: ดังนั้นถ้าคุณเพียง เก็บไว้ในตัวแปร
เช่น var x เท่ากับผลรวมของทั้งสอง values​​--
>> HANNAH Blumberg: ใช่
ดังนั้นคุณก็สามารถทำผลรวม var เท่ากับผลรวมของทั้งสองค่า
ใช่.
คำถามใด ๆ อื่น ๆ ?
ใช่.
>> ผู้ชม: แต่จะว่า เกิดความสับสนและผลรวมผลรวม?
เช่นถ้าคุณเรียกตัวแปรผลรวมของคุณ คุณจะเรียกผลรวมฟังก์ชั่นหรือไม่
HANNAH Blumberg: mm
มิลลิเมตร
ถ้าคุณทำอะไรบางอย่าง เหมือนผลรวมเท่ากับผลรวม 2, 5?
>> ผู้ชม: ใช่
>> HANNAH Blumberg: ผมเชื่อว่า จะเขียนทับค่าของทุน
ดังนั้นอื่นที่น่าสนใจ สิ่งที่เกี่ยวกับ JavaScript
คือตัวแปรเดียวสามารถใช้ บนพวงของชนิดที่แตกต่างกัน
ปฏิบัติไม่ดี
คุณไม่ควรจะทำบางสิ่งบางอย่าง เหมือนสิ่งที่คุณเพิ่งกล่าวว่า
>> แต่ใน C ถ้าฉันมีการตั้งค่า เท่ากับจำนวนเต็ม
เรารู้ว่ามันไม่เคย จะกลายเป็นสตริง
กรณีนี้ไม่ได้ใน JavaScript
ใช่คำถามที่ดี
อะไรอีกหรือไม่
ทั้งหมดขวา
การทำสิ่งที่ถูกต้องในเวลา
การรักษาจะ
ทั้งหมดขวา
>> ถ้าเราดูที่อาร์เรย์ ใน JavaScript ที่นี่
ตัวอย่างรวดเร็วของอาร์เรย์ของสาย
และอาร์เรย์สามารถเจริญเติบโตแบบไดนามิก
พวกเขาไม่ได้มี ขนาดคงที่เช่นเดียวกับ
ที่พวกเขาทำในซีเราสามารถเข้าถึง องค์ประกอบที่มีเพียงวงเล็บ
>> ที่มีลักษณะมากเช่น PHP และเป็นจำนวนมาก เช่น C ที่เราสามารถพูดได้ว่าในกรณีนี้
ถ้าผมต้องการคำจาวาสคริปต์ที่ฉันจะ ไม่ arr วงเล็บกับ 0, 1, 2
และแล้วถ้าคุณจำใน C เมื่อเรา อยากจะได้รับความยาวของอาร์เรย์
มันก็น่ารำคาญจริงๆ
แต่ใน JavaScript, ง่ายสุด
ทั้งหมดที่เราทำ .length
ให้มันยาว
แค่นั้นแหละ.
>> ผู้ชม: นั่นเป็นที่เรียบง่าย
>> HANNAH Blumberg: ใช่ทำให้ ชีวิตของคุณง่ายขึ้นมาก
ตกลง object-- ไม่ได้มี
วัตถุในความรู้สึก JavaScript มากเช่น structs ใน C
และเชื่อมโยงอาร์เรย์ใน PHP
ดังนั้นสิ่งที่เราได้เห็น จำนวนมากเป็น JSON ซึ่ง
ย่อมาจากโน้ตวัตถุ JavaScript
และมันเป็นพื้นทาง ของโครงสร้างข้อมูลของเรา
>> ดังนั้นเรามาดูตัวอย่าง อาจจะง่ายที่สุด
ดังนั้นนี่คือตัวอย่างของวัตถุ ที่เก็บชั้น CS50
และเมื่อฉันพูดระดับผมหมายถึงแน่นอน ไม่ like-- ใช่แน่นอน CS50
และคุณจะเห็นว่า ทุกอย่างในวัตถุ
เป็นไปได้ที่มีอยู่ ในวงเล็บปีกกา
>> และเราจะเริ่มต้นที่จะเชื่อมโยงชื่อเขต หรือปุ่มที่มีค่าที่แตกต่างกัน
เพื่อให้คุณสามารถเริ่มต้นที่จะดูว่าชนิดของนี้ รู้สึกเหมือนอาเรย์ใน PHP
ดังนั้นเราจะเชื่อมโยงสนามหรือ ชื่อคีย์, สนามกับสตริง
CS50
>> เรากำลังจะมีอาจารย์ผู้สอน
เรากำลังจะมี TFS
เรากำลังจะมีจำนวนของ psets และเรากำลังจะได้รับการบันทึก
และสิ่งหนึ่งที่เย็นจะทราบก็คือทั้งหมดของ สิ่งเหล่านี้มีชนิดที่แตกต่างกัน
และที่ดีทั้งหมด
>> มันเป็นเรื่องที่ดีสำหรับวัตถุในความเป็นจริง ก็คาดว่าอาจสำหรับวัตถุ
ที่จะมีการรวมกันของสตริง และตัวเลขและ Booleans และอาร์เรย์
และสิ่งอื่นที่คุณอาจ ต้องการที่จะมีในวัตถุของคุณ
และทราบว่าสิ่งเหล่านี้เป็นไปได้ ชื่อหรือปุ่มแล้วเราก็
ตั้งค่าเท่าเทียมกับลำไส้ใหญ่น้อย
>> ผู้ชม: สิ่งที่ไม่ JSON หมายความว่าอย่างไร
HANNAH Blumberg: อะไร ไม่ว่า JSON หมายความว่าอย่างไร
เพียง JSON ย่อมาจาก JavaScript Object สัญลักษณ์
มันเป็นเพียงวิธีการจัดรูปแบบ
ใช่.
มันเป็นวิธีการจัดรูปแบบของข้อมูลของเรา
>> ใน C ก็ structs
ใน PHP ก็เชื่อมโยงอาร์เรย์
ใน JavaScript เรามีวัตถุ
>> ผู้ชม: ดังนั้น CS50 เป็นวัตถุ?
HANNAH Blumberg: CS50 คือ วัตถุในกรณีนี้
ตอนนี้ทำอย่างไรเราเข้าถึงจริง เขตข้อมูลเหล่านั้นหรือเปลี่ยนเขตข้อมูลเหล่านั้น
ตัวอย่างเช่นสมมติว่าเราตัดสินใจว่า คุณอยากหนึ่ง pset น้อยภาคการศึกษานี้
แทนที่จะเก้าเรา เพียงแค่จะมีแปด
วิธีการที่เราจะเปลี่ยนที่?
>> โอ้ทางที่ผิด
มีสองวิธีที่เราสามารถทำเช่นนั้นอยู่
จำนวนหนึ่งที่มีจุด สัญกรณ์และหมายเลขสอง
อยู่กับสัญกรณ์วงเล็บเหลี่ยม
ดังนั้นสำหรับตัวอย่างเช่นถ้าผม ต้องการที่จะเปลี่ยนแปลงหรือการเข้าถึง
สนาม psets ในวัตถุ CS50 ของเรา สิ่งที่ผมจะทำคือ CS50.psets,
ดังนั้นชื่อของจุดวัตถุ ชื่อของเขตข้อมูลหรือที่สำคัญ
>> มากเหมือนกันก็ตรง เทียบเท่ากับการทำ CS50 แล้ว
ในการจัดฟันตาราง psets
เย็น?
ใช่.
>> ผู้ชม: ดังนั้น JSON ในทางเทคนิคยังคง JavaScript,
แม้ว่าใน psets เรา แยกมันออกมา [ไม่ได้ยิน]
HANNAH Blumberg: Sure
ดังนั้นคำถามคือเป็น JavaScript และ JSON เทียบเท่า?
JSON เพื่อให้เป็นสัญกรณ์โดยทั่วไป วิธีการที่เราเขียนออกมา
วัตถุจาก JavaScript
ดังนั้นพวกเขาไม่ได้เหมือนกัน
>> ผมจะบอกว่า JavaScript มี เป็นวัตถุใน JavaScript
JSON ใช้วัตถุเหล่านั้นและ พิมพ์พวกเขาและพวกเขาแสดง
หรือเก็บไว้ในวิธีที่ดี
ดังนั้น JSON ไม่ได้เขียนโปรแกรม ภาษาจาวาสคริปต์วิธีการที่เป็น
มันเป็นเพียงสัญกรณ์สำหรับ วัตถุของเราใน JavaScript
ใช่.
>> ผู้ชม: ดังนั้นสิ่งที่ว่า [ไม่ได้ยิน] เสร็จสมบูรณ์?
HANNAH Blumberg: Sure
ดังนั้นนี้จริงไม่ทำอะไรเลย
นี่เป็นเพียงวิธีที่จะเข้าถึง
ดังนั้นสมมติว่าเราต้องการที่จะเปลี่ยน จำนวนชุดปัญหา
9-8
สิ่งที่เราทำคือการทำอะไรบางอย่าง เช่น CS50.psets = 8 ;.
>> ใช่คำถามที่ดี
นี่เป็นเพียงการแสดงไวยากรณ์
ไม่จริงทำอะไรที่เป็นประโยชน์
มีคำถามอะไรไหม?
ย้ายขวาพร้อม
>> ดังนั้นเรามาดูตัวอย่างรวดเร็วของวิธี จาวาสคริปต์ทำงานเพราะฉันบอกคุณมัน
ไม่ทั้งหมดสิ่งดีๆเหล่านี้และ ช่วยให้เราสามารถปรับเปลี่ยนหน้าเว็บ
ขอเห็นจริงในการกระทำ
เพื่อใช้ยกตัวอย่างเช่นไฟล์ HTML นี้
>> และสิ่งที่ผมต้องการให้คุณมุ่งเน้นคือ แท็กนี้โดยเฉพาะซึ่งเป็นปุ่ม
มี id search_button
มันเป็นเพียงแค่บนหน้าเว็บ
ดังนั้นตอนนี้เรามาดูสิ่ง เราสามารถทำได้จริง
>> ดีสมมติว่าเมื่อ คุณคลิกที่ปุ่มนั้น
เราต้องการให้ alert-- คุณคลิกที่ปุ่ม
ลองมาดูวิธีการที่เราสามารถทำเช่นนั้น
ดังนั้น window.onload-- นี่ไม่ใช่สิ่งที่ ที่คุณเคยเห็นในชั้นเรียนจึง
จะไม่จำเป็นต้องรู้สำหรับการทดสอบ
แต่นี้โดยทั่วไปกล่าวว่าตกลงโทร ฟังก์ชั่นนี้เมื่อโหลดหน้าต่าง
>> เพื่อให้เป็นเพียงแค่ชนิดของรหัสการติดตั้ง
ไม่ต้องกังวลมากเกี่ยวกับว่า
สิ่งที่ฉันต้องการให้คุณมุ่งเน้นไปที่อยู่ในที่นี่
เราพูดว่า var searchButton เท่ากับ document.getElementById search_button
>> ดังนั้นในขณะที่คุณอาจคาดเดา สิ่งนี้ไม่ได้เป็นกล่าวว่า
ตกลงไปหาองค์ประกอบ ที่มี ID search_button
และตอนนี้เรามีว่า องค์ประกอบที่เกิดขึ้นจริงและฉัน
ไปเก็บไว้ในที่ sea​​rchButton ตัวแปร
และตอนนี้เราสามารถใช้จริงในสภาพแวดล้อมที่ และเปลี่ยนหรือเข้าถึงค่าของมัน
สิ่งที่ต้องการที่
เราจริงจะเริ่ม มีส่วนร่วมกับหน้าเว็บ
>> ดังนั้นที่นี่ฉันพูดว่าตกลงตอนนี้ที่ฉันมี ปุ่มที่เมื่อมีการคลิก
เรียกฟังก์ชั่นที่ไม่ระบุชื่อ
ดังนั้นนี่คือที่ที่ไม่ระบุชื่อ ฟังก์ชั่นเป็นประโยชน์
และสิ่งที่ไม่ทำฟังก์ชั่น?
ดีก็เพียงแค่นี้เรียกว่า ฟังก์ชั่นการแจ้งเตือนและบอกว่า
คุณคลิกปุ่มค้นหา
>> ดังนั้นสิ่งที่จะเกิดขึ้นถ้าฉันไปทุกที่ อาศัย HTML นี้และฉันคลิกปุ่ม
ฉันจะได้รับการแจ้งเตือนเล็ก ๆ น้อย ๆ แฟนซี ที่บอกว่าคุณคลิกที่ปุ่ม
ดังนั้นสิ่งที่จะมุ่งเน้น here-- document.getElementById
โดยเฉพาะอย่างยิ่งได้รับ HTML องค์ประกอบที่มีรหัสที่กำหนด
และตอนนี้เราสามารถตั้งค่า สิ่งที่ควรจะเกิดขึ้นเมื่อ
โดยเฉพาะอย่างยิ่งในสภาพแวดล้อมที่มีการคลิก
>> ผู้ชม: เราต้องใส่ทั้งหมดที่อยู่ใน?
>> HANNAH Blumberg: ขออภัย?
>> ผู้ชม: เราต้อง ร่างกายทั้งหมดของรหัสที่?
>> HANNAH Blumberg: เราต้อง ร่างกายทั้งหมดของรหัสที่?
ใช่.
ไม่ได้เป็นชนิดที่น่ารำคาญนี้หรือไม่?
นี้เป็นจำนวนมากของรหัส
>> ผู้ชม: คุณสามารถนำเข้าบางสิ่งบางอย่าง
HANNAH Blumberg: ขวา
เราสามารถใช้สิ่งที่
และใน particular-- โอ้มัน บอกฉันฉันมีส่วนในการสอน
โดยเฉพาะอย่างยิ่งขอ ใช้ห้องสมุด jQuery,
เพราะเห็นว่าเป็นจริง ยาวและน่ารำคาญจริงๆ
และฉันต้องการที่จะสามารถลดความซับซ้อนของมันไป และทำให้มันสั้นและง่ายต่อการเขียน
>> jQuery ดังนั้นเป็นห้องสมุด JavaScript
ดังนั้น JavaScript เป็นการเขียนโปรแกรม ภาษา; jQuery เป็นห้องสมุด
และก็จะทำให้พวงของสิ่งที่ง่ายขึ้น
มันทำให้การเปลี่ยนแปลงและจะข้าม เอกสาร HTML ง่ายมาก
>> มันทำให้เหตุการณ์จัดการง่ายขึ้น
มันทำให้เคลื่อนไหวได้ง่าย และมันทำให้อาแจ็กซ์ได้ง่ายขึ้น
ดังนั้นขอกระโดดลงไปในสอง สิ่งเหล่านั้นในขณะนี้
ขอโทษ.
ก่อนที่เราจะทำบางไวยากรณ์พื้นฐาน
>> นี่คือสิ่งที่ส่วนใหญ่เรียกร้องให้ ดูห้องสมุดเช่น jQuery
เราใช้เงินดอลลาร์ sign-- นี้ ไม่มีสัญญาณการเชื่อมต่อกับ PHP,
เพียง inconvenient-- ชื่อของที่ เลือกจุดและจากนั้นการดำเนินการ
ดังนั้นเรามาดูบาง ตัวอย่างที่เป็นรูปธรรมว่า
>> ดังนั้นนี้จริงจะเหมือนกัน รหัสสไลด์จากเหตุการณ์ที่เกิดขึ้น
ดังนั้นนี่นานจะกลายเป็นสิ่งที่น่าเกลียด นี้มาก nicer สิ่งที่มีขนาดเล็ก
ถ้าอย่างนั้นเราพยายามที่จะทำลายลง
นี้กล่าวว่าตกลง jQuery-- ดอลลาร์นี้ sign-- jQuery หาฉันหน้าต่าง
เพื่อให้เป็นตัวเลือก
>> เมื่อโหลดเรียกใช้ฟังก์ชันนี้
เพื่อให้ทุกอย่างภายใน
ตกลง.
เพื่อให้ห่างไกลที่ดีเพื่อ?
ทั้งหมดขวา
>> ตอนนี้ jQuery หาฉัน สิ่งที่มี ID search_button
และสิ่งที่มีการคลิก เรียกใช้ฟังก์ชันนี้
และจากนั้นฟังก์ชั่นนี้ เหมือนเดิมทุกประการ.
เพียงแค่ทำนิด ๆ หน่อย ๆ ของการแจ้งเตือน คุณคลิกปุ่มค้นหา
>> ดังนั้นมันเป็นเรื่องดีจริงๆ
จริงๆมันควบแน่นและ ช่วยลดความยุ่งยากรหัสของเรา
ฉันไม่ทราบว่า มันเป็น ID search_button
และไม่ชอบชั้น search_button?
>> ผู้ชม: แฮชแท็ก?
HANNAH Blumberg: ใช่
สัญลักษณ์กัญชานี้ก็เช่นเดียวกับ CSS
ดังนั้นจำกับ CSS เมื่อเรา ต้องการที่จะเลือกบางสิ่งบางอย่างจากประชาชน
ที่เราใช้ในการเข้าสู่ระบบปอนด์
และเมื่อเราต้องการที่จะเลือก บางสิ่งบางอย่างโดยชั้นเราจะใช้จุด
ที่ดี
ความรู้สึกให้?
ดังนั้น jQuery ควรจะ เพียงแค่ทำให้ชีวิตของเราง่ายขึ้น
ใช่.
>> ผู้ชม: ดังนั้นฉันสับสนเล็กน้อยเป็น วิธีการทำงานที่ไม่ระบุชื่อทำงาน
คุณชื่อ anonymouse นี้ ฟังก์ชั่นการทำงาน?
วิธีการที่จะเรียกว่า?
HANNAH Blumberg: Sure
ฟังก์ชั่นเพื่อให้เป็นเพียงแค่คำว่า กล่าวว่าฉันจะกำหนดฟังก์ชั่น
ผู้ชม: โอ้, OK
HANNAH Blumberg: OK?
และจากนั้นเราจะผ่านมันเป็น อาร์กิวเมนต์ to-- ลอง
one-- นี้ภายในฟังก์ชั่นการคลิก
เพื่อใช่ดังนั้นฟังก์ชั่นที่ ฟังก์ชั่นนี้ที่ไม่ระบุชื่อ
จะกลายเป็นจริงอาร์กิวเมนต์
ดังนั้นจำใน JavaScript เรา สามารถรักษาหน้าที่เป็นค่า
ผู้ชม: โอ้, OK
HANNAH Blumberg: ใช่
ฉันชอบที่ "โอ้."
นีซ
คำถามอื่น ๆ ?
เวลา?
MARIA ZLATKOVA: ดี
ดี.
>> HANNAH Blumberg: น่ากลัว
บาง jQuery ประโยชน์อย่างรวดเร็ว
ฉันจะไม่ไป ผ่านสิ่งเหล่านี้
ภาพนิ่งเหล่านี้จะเป็น ออนไลน์นิด ๆ หน่อย ๆ
ต่อมาเพื่อให้คุณสามารถตรวจสอบ มันออกมานิด ๆ หน่อย ๆ ในภายหลัง
แต่โดยทั่วไปทั่วไป รูปแบบการถือที่เราพูดว่า
ตกลงเดี๋ยวก่อน jQuery ที่นี่เป็นของฉัน เลือกแล้วนี่คือการกระทำ
และคุณสามารถทำสิ่งที่ต้องการการเข้าถึง ค่าของรูปแบบที่เข้าถึง HTM​​L บาง
การควบคุมสิ่งที่เกิดขึ้นเมื่อผู้ใช้ ส่งแบบฟอร์มสิ่งที่ต้องการที่
ใช่.
>> ผู้ชม: ดังนั้นใน การสอบเรากำลังจะต้อง
ที่จะรู้ค่อนข้างมากจาก เอกสาร jQuery
รับเพื่อที่เราคัดลอก / วาง jQuery เอกสารแผ่นโกงของเรา
ที่เป็นเส้นที่วาด?
เช่นเดียวกับหลายวิธีที่เราจะต้องรู้?
HANNAH Blumberg: คำถามที่ดี
คำถามคือ ได้รับเป็นหลักที่คุณ
ไม่สามารถเข้าถึงเอกสาร jQuery ในระหว่างการทดสอบเท่าไหร่คุณควร
ทราบ?
เราจะไม่คาดหวังให้คุณมา ขึ้นกับบางฟังก์ชั่นแบบสุ่ม
ที่เราจะคาดหวังให้คุณไปยัง Google
>> สิ่งที่เป็นเกมที่ยุติธรรมเป็นผมจะ บอกเพียงแค่ชนิดของไวยากรณ์ทั่วไป
ความสามารถในการเลือกโดยประชาชนและ โดย class-- ดังนั้นเพียงแค่เช่น CSS
แล้วฟังก์ชั่นที่เกิดขึ้นจริง ตัวเองเรามีแนวโน้มที่จะบอกคุณ
ใช่.
>> ผู้ชม: ดังนั้นเมื่อคุณเลือก โดยชั้นจะหมายถึงจุด
HANNAH Blumberg: ใช่ว่า
ดี.
เมื่อคุณเลือกโดยชั้นก็จะ จะได้รับการจุดแทนการเข้าสู่ระบบปอนด์
ใช่.
>> ผู้ชม: คุณจะ ไปกว่าความแตกต่าง
ระหว่างการเลือกโดยประชาชนและโดยชั้น?
>> HANNAH Blumberg: Sure
ความแตกต่างระหว่างการเลือก ID และเลือกโดยชั้น
ดังนั้นในขณะที่มาเรียกล่าวว่า นิด ๆ หน่อย ๆ ก่อนหน้านี้มี
เพียง แต่สามารถเป็นหนึ่งในองค์ประกอบ HTML ที่มีรหัสที่ได้รับในขณะที่ระดับ
มันช่วยให้เราไปยังกลุ่มพวง ขององค์ประกอบที่แตกต่างกัน
ดังนั้นสิ่งที่เกี่ยวข้องกับ แต่ไม่เหมือนกัน
ไม่ว่าตอบคำถาม?
ที่น่ากลัว
ใช่.
>> ผู้ชม: เกิดอะไรขึ้นถ้าคุณมีหลาย สิ่งที่อยู่ในระดับเดียวกันได้หรือไม่
>> HANNAH Blumberg: เกิดอะไรขึ้น ถ้าคุณมีหลายสิ่งที่
เป็นระดับเดียวกันได้หรือไม่
ดังนั้นสำหรับตัวอย่างเช่นถ้าเรากำลัง เพียงแค่ใช้บริสุทธิ์ JavaScript,
เราจะทำสิ่งที่ชอบ document.getElementsByClass
และแล้วสิ่งที่ไม่จริง มีที่ส่งกลับอาร์เรย์ขององค์ประกอบ
>> และคุณจะต้องทั้งย้ำกว่า พวกเขาหรือหาที่ที่คุณต้องการ
มันไม่ได้เป็นไปเพื่อให้ คุณเป็นองค์ประกอบเดียว
มันจะทำให้คุณ อาร์เรย์ขององค์ประกอบ
คำถามที่ดี
อะไรอีกหรือไม่
ที่น่ากลัว
>> ดังนั้นผมจึงคิดว่าถ้าคุณคุ้นเคยกับ jQuery ใด ๆ ที่คุณเห็นใน pset ที่
คุณควรจะดีไป
คำถาม?
ไม่นะ.
ผมต้องสอน
ผ่อนคลาย.
มันจะดี
ฉันจะได้รับมี
>> พูดคุยเกี่ยวกับอาแจ็กซ์
อาแจ็กซ์จึงเป็นไปได้ a-- ดี ขอเริ่มต้นด้วยสิ่งที่มันหมายถึง
มันเป็นตัวย่อ
มันหมายถึงการไม่ตรงกัน JavaScript และ XML
และ XML เป็นพื้นเป็นไปได้ [ไม่ได้ยิน] กับชนิดของข้อมูลของเรา
แต่เรายังไม่ได้นำมาใช้จริง XML
แต่เราเพียงแค่ใช้ JSON
>> ดังนั้นโดยทั่วไปก็ data-- บาง ไม่ตรงกัน JavaScript และข้อมูล
ในกรณีนี้ JSON
และเป้าหมายของเราในขณะที่เรากล่าวถึง นิด ๆ หน่อย ๆ ก่อนหน้านี้
คือการที่จะสามารถที่จะทำให้ ขอได้ขอให้ทำ
สิ่งที่อยู่ใน พื้นหลัง แต่ยังคง
ทำสิ่งที่เรากำลังตั้งใจที่จะทำ
และจากนั้นเมื่อข้อมูลที่ พร้อมแล้วเราจะรวมไว้
>> ดังนั้นเรามาดูสิ่งนี้ จริงดูเหมือน
และนี้คุณควรจะ นิด ๆ หน่อย ๆ ที่คุ้นเคย
จาก pset8 หนึ่งที่คุณเพิ่งเปิดใน
ดังนั้นนี่คือ jQuery ที่ถูกต้อง ฟังก์ชั่นที่เราอาจจะ
ต้องการทราบ about-- เครื่องหมายดอลลาร์นี้
ดังนั้นจึงกล่าวว่าฟังก์ชั่น jQuery, .getJson
>> และสิ่งที่ฟังก์ชั่นนี้ไม่ได้เป็น ใช้เวลา URL และ parameters-- บาง
ดังนั้นฉันคิดว่าในกรณีที่ ของ pset8 มันเป็นเหมือน
URL ที่เป็น articles.php และ พารามิเตอร์เป็นไป = บางรหัสไปรษณีย์
และมันก็บอกว่าตกลงขอไป URL นี้มีพารามิเตอร์ที่กำหนด
และที่เพิ่งเกิดขึ้น
>> เมื่อเสร็จสิ้นก็อย่างใดอย่างหนึ่ง จะสำเร็จ
หรือมันจะล้มเหลว
ดังนั้นนี่คือเทียบเท่าของการโทร ร็อบและขอให้เขาทำอะไรบางอย่าง
และจากนั้นเมื่อเขาโทรกลับเขาเป็นอย่างใดอย่างหนึ่ง จะบอกว่าฉันทำหรือฉันล้มเหลว
>> ดังนั้นในกรณีที่คุณเป็น ทำคุณพูดว่าตกลงฉันทำ
และจากนั้นคุณเรียกใช้ฟังก์ชันนี้
ในกรณีนี้ก็จะเป็น ฟังก์ชั่นที่ต้องใช้ข้อมูลบางส่วน
หนึ่งที่เรามักจะดูแลเกี่ยวกับข้อมูล ข้อมูลที่เราได้กลับมาจริง
เป็นผลมาจากการเรียก .getJSON
>> และคุณสามารถทำอะไรกับมัน
ดังนั้นในกรณีของ pset8 ที่ เราแสดงมันเป็นรายการ
ล้มเหลวจะเป็นฟังก์ชั่น ที่เรียกว่าถ้าขอล้มเหลว
ด้วยเหตุผลใด
และในกรณีของ pset8 ที่ เราเพียงแค่ console.log มัน
คำถามใด ๆ เกี่ยวกับที่?
ใช่.
>> ผู้ชม: เราสามารถเพียงแค่ใช้ฟังก์ชั่นที แทนการใช้ฟังก์ชั่น textStatus, jqHXR
HANNAH Blumberg: Sure
เพื่อใช่ผมคิดว่าใน pset ที่ เราก็เห็นข้อมูลที่ฟังก์ชั่น
ดังนั้นมันจึงเป็นเพียงแค่ the-- ใช่ตกลง
นั่นคือสิ่งที่เราเห็นใน pset
ที่ดีทั้งหมด
>> เหล่านี้เป็นเพียงหากคุณต้องการ ที่จะดึงออกข้อมูลเพิ่มเติม
เหล่านี้เป็นสิ่งที่ คุณจะได้รับจาก .getJSON
คำถามที่ดี.
อะไรอีกหรือไม่
ใช่.
>> ผู้ชม: ดังนั้น .getJSON คืออาแจ็กซ์?
HANNAH Blumberg: OK
ดังนั้นนี้เป็นชนิดของส่วนหากิน
มันเป็นฟังก์ชั่นที่ช่วยให้ jQuery คุณจะทำอย่างไรโทรไม่ตรงกัน
และโทรไม่ตรงกันเหล่านั้นว่าเป็น สิ่งที่เราได้รับการอ้างถึงเป็นอาแจ็กซ์
ใช่.
ที่เอาฉันเป็นเวลานานมากที่จะ ดึงออกจากกันเมื่อฉันเป็นนักเรียน
ผู้ชม: คุณสามารถพูดได้ว่าอีกครั้งหรือไม่
HANNAH Blumberg: ใช่
ฉันจะบอกว่าอีกครั้งหรือไม่
ฟังก์ชั่น .getJSON, มันเป็นฟังก์ชั่น jQuery
และมันจะทำให้ การโทรไม่ตรงกัน
และโทรไม่ตรงกันเหล่านี้เราได้ หมายถึงการที่เป็นอาแจ็กซ์
>> คำถามใด ๆ อื่น ๆ ?
เราได้เพียงไม่กี่นาทีที่เหลือ
และมาเรียไป ตัดขึ้นกับการรักษาความปลอดภัย
และจากนั้นเราจะ จะเป็นเพียงดำเนินการเกี่ยวกับ
MARIA ZLATKOVA: น่ากลัวตกลง
ดังนั้นนี่ is-- ใช้เวลาเพียงแค่ไม่กี่ วินาทีเพื่อดูมากกว่านี้
และนี่คือสิ่งที่ไม่ดีจริงๆ
และคนที่สามารถบอกได้ว่าทำไม?
สิ่งที่เกิดขึ้นใน foo และอาจจะทำได้ อาจส่งผลให้บางสิ่งบางอย่างที่ไม่ดี
และสิ่งที่เรียกว่า?
ใช่.
ผู้ชม: ถ้าอาร์กิวเมนต์ที่ ผ่านในมากกว่า 12 ตัวอักษร
มันอาจจะล้น
MARIA ZLATKOVA: ขวา
ที่สมบูรณ์แบบ
มันเรียกว่าอะไร?
คุณเพียงแค่พูดถึงเรื่องนี้
>> ผู้ชม: หน่วยความจำล้น
>> MARIA ZLATKOVA: Yup, หน่วยความจำล้น
ดังนั้นนี่คือสิ่งที่เรา เรียกว่าหน่วยความจำล้น
และเราจะเห็นภายในของ foo ว่า เราได้กำหนดบัฟเฟอร์ของเรา C,
มีขนาด 12
อย่างไรก็ตามในหลักที่เราทำไม่ได้ การตรวจสอบในทางใด ๆ เลย
ไม่ว่าจะเป็น argv1-- เพื่อให้ เป็นอาร์กิวเมนต์ที่สอง
เราไม่ได้ตรวจสอบว่า ขนาดของมันมีความเหมาะสม
>> ดังนั้นหากเรามี โดยเฉพาะอย่างยิ่งใช้ที่เป็นอันตราย
ที่ใส่ในข้อโต้แย้งว่าเป็นบางส่วน นานกว่า 12 แล้วที่อาจเกิดขึ้น
เกินขอบเขตของที่ ข้อโต้แย้งที่มีบางรหัสปฏิบัติการ
ว่าเขากำลังพยายามที่จะทำสิ่งที่ไม่ดี กับมัน แล้วนี้สิ่งที่จะเกิดขึ้น
จะกลับมาแทนที่ ที่อยู่ของฟังก์ชั่นฟู
ก่อให้เกิดการทำงานเมื่อ กลับไปรันโค้ดที่
และสิ่งที่ไม่ดีนั้นจะเกิดขึ้น
นี้ไม่ได้ทำให้ความรู้สึกที่ทุกคนหรือไม่
>> และวิธีที่เราสามารถป้องกันการนี​​้หรือไม่?
ข้อเสนอแนะใด?
โดยทั่วไปภายใน ที่อาจเกิดขึ้น foo วิธี
เราสามารถตรวจสอบเพื่อให้แน่ใจว่า ที่ไม่สามารถเกิดขึ้นได้อย่างไร
>> ผู้ชม: ถ้าขนาด 12 เกิน ที่คุณจะจัดสรรหน่วยความจำเพิ่มเติม?
MARIA ZLATKOVA: ข้อเสนอแนะคือการจัดสรร หน่วยความจำเพิ่มเติมที่มีขนาดเกิน
ที่จริงแล้วเราสามารถทำบางสิ่งบางอย่าง ง่ายมากไปกว่านั้นเช่นกัน
เราก็จะได้รับความยาวของสตริง ของการโต้แย้งที่ป้อนให้
ตรวจสอบว่าที่น้อย กว่าหรือเท่ากับ 12--
ซึ่งเป็นสิ่งที่เราต้องการ จะเป็นเพราะเราไม่ต้องการ
มันจะเกินขอบเขตของบัฟเฟอร์ของเรา
และแล้วถ้ามันไม่ได้เรา สามารถทำงานร่วมกับการโต้แย้ง
และแล้วถ้ามันไม่ที่เราต้องการจริง เพื่อเยลโลที่อาจเกิดขึ้นในการใช้
แต่นี้เป็นวิธีการที่เราจะทำอย่างนั้น
ใช่.
>> ผู้ชม: คุณสามารถ อธิบายอย่างรวดเร็ว memcpy จริง?
MARIA ZLATKOVA: โอ้ขอโทษ
ใช่.
memcpy ใช้สิ่งที่ is-- ขออภัยตกลง
memcpy ใช้สิ่งที่อยู่ ในแถบสิ่งที่ผ่านไปมา
บน foo เป็นอาร์กิวเมนต์บรรทัดคำสั่ง
ดังนั้นมันจะใช้เวลา argv1
Argv1 เรียกว่าบาร์นี่
ดังนั้นมันจะใช้เวลาและบาร์ ก็จะคัดลอกลงในค
>> ผู้ชม: ตกลง
MARIA ZLATKOVA: และมันเป็นไป copy-- อาร์กิวเมนต์ที่สามเพียงหมาย
เท่าใดก็จะคัดลอกลงในค
ผู้ชม: อ่า
ดังนั้นการคัดลอกของคนนี้ทั้งหมดของมันแล้ว
>> MARIA ZLATKOVA: ใช่ ก็คัดลอกทั้งหมดของมัน
อือ
ครั้งแรกที่เราให้แน่ใจว่าบาร์ไม่ได้ เท่ากับ null เพราะมันเป็นตัวชี้
จากนั้นเราก็จะได้รับความยาวสตริงของบาร์
เราแน่ใจว่ามันเป็น น้อยกว่าหรือเท่ากับ 12
และจากนั้นก็เพราะเราได้ ทำให้แน่ใจว่าเราสามารถจริง
memcpy และให้แน่ใจว่าที่ตกลง
มีคำถามอะไรไหม?
ที่ดี
ฉันมีสองคำถามจริงหรือเท็จ
ทุกคนสามารถบอกได้ทันที ถ้าเหล่านี้เป็นจริงหรือเท็จ?
ใช่มันเป็นเท็จ
ที่แน่นอน
ทั้งของพวกเขาเป็นเท็จ
ดังนั้นการใช้รหัสผ่านเดียว ไม่เคยมีความคิดที่ดีจริงๆ
เพราะถ้ามีคนรู้ รหัสผ่านของคุณพวกเขาก็สามารถ
เข้าถึงบัญชีอื่น ๆ ของคุณทั้งหมด
และแล้วไอคอนที่ไม่ทำอะไรเลย เพื่อให้แน่ใจว่าการรักษาความปลอดภัย
เรามักจะควรมองหา HTTPS แทน HTTP และ URL ของ
>> และบางชนิดอื่น ๆ การโจมตีที่เราได้กล่าวถึง
ที่ดาวิดได้กล่าวถึงใน การบรรยายการโจมตีฉีด SQL
เราได้เห็นว่าถ้าเรา don't-- CS50 ฟังก์ชั่นการสอบถามทำให้แน่ใจว่า SQL
โจมตีฉีดไม่สามารถเกิดขึ้นได้
แต่ถ้าเราไม่ได้ใช้ CS50, อ้างนำมาอ้าง "ในแบบสอบถาม"
เราจะต้องตรวจสอบให้แน่ใจว่า ผู้ใช้ป้อนไม่จริงบาง SQL
แบบสอบถามที่จะทำให้ทุกคน ตารางของเราจะลดลง
หรือสิ่งที่ไม่ดี เกิดขึ้นกับฐานข้อมูลของเรา
>> จี้เซสชั่นคือ ประเภทของการโจมตีอีก
ที่เกิดขึ้นเมื่อบางที่ไม่ดี คนใช้เซสชั่นของเหยื่อบาง
ID ในการเข้าถึงข้อมูลการเข้าสู่ระบบ
ดังนั้นตัวอย่างที่น่ารำคาญมากที่ เช่นถ้าเรามีคอมพิวเตอร์สาธารณะ
แล้วบันทึกคนที่ไม่ดีในแล้ว พวกเขามีคุกกี้ที่บันทึกไว้
และคุกกี้ไม่เปลี่ยนสำหรับเซสชั่น
>> จากนั้นเราได้เหยื่อไป และจากนั้นเข้าสู่เว็บไซต์
คุกกี้ไม่เปลี่ยน สำหรับเซสชั่นบางอย่าง
และจากนั้นเหยื่อบัน​​ทึกลงใน เว็บไซต์และใบแล้ว
และแล้วคนที่ไปกลับ จากนั้นยังคงใช้ ID เซสชั่นของพวกเขา
ในการเข้าถึงข้อมูลของพวกเขา
เพื่อให้เป็นตัวอย่างหนึ่งของ วิธีการที่อาจเกิดขึ้น
>> แล้วฉันจะไม่ต้องกังวลมากเกินไป เกี่ยวกับรหัสที่เฉพาะเจาะจงหรืออะไร
เช่นเดียวกับที่ที่อาจทำให้เกิดนี้ แต่มีการจัดเรียงของความคิดบางสิ่ง
ตัวแปรที่เกี่ยวข้องในการนี​​้
และจากนั้นก็จัดการกับส่วนหัว ข้อมูลที่เป็นประเภทของการโจมตีอีกครั้ง
ที่ได้ดาวิดได้พูดคุยเกี่ยวกับ
และมันก็หมายถึง สิ่งที่สามารถเกิดขึ้นได้เมื่อ
การตอบสนอง, ของ HTTP การตอบสนองภายในของส่วนหัวของเรา
ไม่ได้ชัดเจนพอ
>> และใด ๆ ของ fields-- สำหรับตัวอย่างเช่น ถ้ามีคนเขียนทับหนึ่งในส่วนหัว
ค่าที่จะมีอะไรมากไปกว่า สิ่งที่พวกเขาควร contain-- และจริง
มีตัวอย่างเช่น 200 รหัสสถานะตกลงแล้วพวกเขา
อาจจะทำอันตราย สิ่งที่เมื่อพวกเขากำลังไม่ควรที่จะ
แต่ฉันจะไม่ต้องกังวลมากเกินไป มากเกี่ยวกับรหัสที่เฉพาะเจาะจง
ที่อาจทำให้เกิดนี้ เพียงแค่การจัดเรียงของความเข้าใจ
สิ่งที่ระดับสูงเช่นเดียวกับที่
>> ผมคิดว่านี่เป็นสิ่งที่ ที่เรามีเพื่อให้ครอบคลุม
ที่น่าตื่นตาตื่นใจ
ใครมีคำถามใด ๆ เกี่ยวกับการใด ๆ ในสิ่งที่เราได้รับการคุ้มครอง?
ใช่.
>> ผู้ชม: ดังนั้นหนึ่งประเภทของ คำถามจิสติกส์มากขึ้น
เป็นเนื้อหาที่มุ่งเน้น ในสิ่งที่หลังจากตอบคำถาม 1
>> MARIA ZLATKOVA: ดังนั้น คำถามคือเป็นเนื้อหา
มุ่งเน้นในสิ่งที่หลังจากตอบคำถาม 1
ดังนั้นโฟกัสอยู่บนหลัง ตอบคำถามที่ 1 มีข้อยกเว้น
ที่เราต้องให้ความสำคัญกับสิ่งที่อยู่ใน pset5 และจำนวนมากของโครงสร้างข้อมูลที่
ที่เราได้รับการคุ้มครอง
และเราไม่สามารถพูดได้ว่าเรา สามารถละเว้นอะไรก่อน
เพราะมันสร้างขึ้นเป็นอย่างดี
>> ดังนั้นมุ่งเน้นไปที่รวมทั้งวัสดุ pset5 เช่นรวมถึงรายชื่อที่เชื่อมโยงกอง
คิวและทุกอย่าง ฮันนาห์เดินไป
>> HANNAH Blumberg: ขวา
ใช่เราเดินไปทุกสิ่งที่ซี ที่จุดเริ่มต้นมากอย่างรวดเร็ว
แต่ให้แน่ใจว่าในการตรวจสอบว่า
ย้อนกลับไปและดูการตอบคำถาม 0 ความคิดเห็น
>> คู่บันทึกจิสติกส์มากขึ้น เพียงขณะที่เรามีความสนใจของคุณ
เราจะมีเวลาทำงาน ทั้งในวันจันทร์และวันอังคาร
พวกเขากำลังจะไปอยู่ใน MD 119
นี่คือทั้งหมดบนเว็บไซต์เพื่อให้ ถ้าคุณไม่ได้ยินมันไม่ต้องกังวล
>> MARIA ZLATKOVA: 8:30-11:00
>> HANNAH Blumberg: ใช่ 8:30-11:00
เราจะอยู่ที่นั่น
เราจะมีการตอบคำถาม
มันหนาวสวยและความสนุกสนาน
พวกคุณสามารถถามคำถามใด ๆ ที่คุณมีในการตอบคำถาม 1
และตอบคำถามที่ 1 บน วันพุธโชคดีดังนั้น
หากคุณมีคำถามใด ๆ ที่อาจจะ มาพูดคุยกับเราได้ที่นี่หนึ่งในหนึ่ง
เย็น.
ขอบคุณมาก.
>> MARIA ZLATKOVA: ขอบคุณมากครับ
>> ผู้ชม: ยาย
>> [APPLAUSE]