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]