>> [เล่นเพลง]
DAVID ลันสิทธิทั้งหมดนี้เป็น CS50
นี่คือจุดสิ้นสุดของสัปดาห์แปด
และในวันนี้เราจะเริ่มต้น เพื่อเติมเต็มในบางชิ้น
เมื่อมันมาถึงอาคาร สิ่งที่อยู่บนเว็บ
ดังนั้นจำได้ว่าในวันจันทร์ที่ เราใช้เวลามากขึ้น
ใน PHP ซึ่งเป็นแบบไดนามิกนี้ การเขียนโปรแกรมภาษาที่
ช่วยให้เราส่งออกในกลุ่มอื่น ๆ สิ่ง HTM​​L และเนื้อหาอื่น ๆ เช่น
ว่าเราจะต้องการที่จะเห็น
แต่เรายังไม่ได้ดูจริงๆที่ว่า เรากำลังจะเก็บข้อมูลใด ๆ
อันที่จริงเกือบใด ๆ ที่ซุปเปอร์ เว็บไซต์ที่น่าสนใจที่คุณเยี่ยมชมในวันนี้
มีชนิดของฐานข้อมูลบางส่วน ที่ปลายด้านหลังขวา?
Facebook แน่นอนเก็บข้อมูลจำนวนมาก เกี่ยวกับเราทุกคนและร้านค้า Gmail ทั้งหมด
ของอีเมลของคุณ
>> และเพื่อให้เว็บไซต์อื่น ๆ ไม่เพียง แต่ เนื้อหาคงที่ในการให้ข้อมูล
เป็นจริงแบบไดนามิกในทางใดทางหนึ่ง
คุณให้ข้อมูลก็ปรับปรุง หน้าสำหรับคนอื่น ๆ
คุณจะได้รับข้อความที่คุณส่ง ข้อความและอื่น ๆ
ดังนั้นวันนี้เรามองใกล้ที่ หนุนหลังของโครงการ
ที่คุณจะดำน้ำในต่อไป สัปดาห์ CS50 การเงินซึ่ง
เป็นจริงไปได้ที่คุณสร้าง บางสิ่งบางอย่างไม่ได้อยู่ใน C แต่ใน PHP
เว็บไซต์ที่มีลักษณะ บางสิ่งบางอย่างเล็ก ๆ น้อย ๆ เช่นนี้
ที่ช่วยให้การซื้อและขาย หุ้นที่เป็นจริง
จะวาดตามเวลาจริง ข้อมูลหุ้นจากการเงิน yahoo
และเพื่อให้ในท้ายที่สุดคุณจะมี ภาพลวงตาสำหรับตัวเองและสำหรับผู้ใช้
ที่คุณจริงการซื้อและขาย หุ้นและได้รับเกือบเวลาจริง
การปรับปรุงการจัดการ ผลงานทั้งหมดที่
จะต้องมีการมี ในที่สุดฐานข้อมูลของผู้ใช้
>> ดังนั้นในคำพูดของคุณเอง โดยเฉพาะอย่างยิ่งถ้าคุณไม่ได้
ซุปเปอร์คุ้นเคยกับคอมพิวเตอร์ วิทยาศาสตร์หรือฐานข้อมูลสิ่งที่
คุณจะรู้ว่าฐานข้อมูลที่จะเป็น ตอนนี้ในแง่ nontechnical?
มันคืออะไร?
วิธีที่คุณจะอธิบายมัน เพื่อเพื่อนร่วมห้องหรือเพื่อนหรือไม่?
>> ผู้ชม: [ไม่ได้ยิน] ข้อมูล [ไม่ได้ยิน]
>> DAVID ลัน: ดังนั้นรายการของข้อมูล หรือ store-- รายการของข้อมูล
ที่คุณอาจต้องการที่จะเก็บ เกี่ยวกับสิ่งที่ผู้ใช้เช่น
และสิ่งที่ผู้ใช้จะต้องทำ ที่เกี่ยวข้องกับพวกเขา?
หากคุณเป็นผู้ใช้บน Facebook หรือ Gmail สิ่งที่มีลักษณะ
ที่เราทุกคนผู้ใช้มี?
เช่นเดียวกับสิ่งที่อาจจะมีบางส่วนของ คอลัมน์ในสเปรดชีตที่เรา
พาดพิงครั้งสุดท้าย?
เพราะอีกครั้งคุณสามารถ คิดว่าของฐานข้อมูล
จริงๆเป็นไฟล์แฟนซี Excel หรือ Google สเปรดชีตหรือไฟล์เบอร์แอปเปิ้ล
>> ดังนั้นสิ่งที่คุณคิดว่า เมื่อคุณคิดว่าผู้ใช้หรือไม่?
พวกเขามีอะไร?
นั่นอะไร?
>> ผู้ชม: ชื่อ
>> DAVID ลัน: ชื่อ
ดังนั้นถ้าชื่อเช่นเดวิดลัน จะเป็นชื่อของผู้ใช้บาง
อะไรที่ใช้ไม่ได้?
>> ผู้ชม: เป็น ID
>> DAVID ลัน: เป็น ID
ดังนั้นเช่นหมายเลขประจำตัวเช่นฮาร์วาร์ของคุณ ประจำตัวประชาชนหรือบัตรประจำตัวเยลสุทธิของคุณหรือชอบ
อะไรที่ผู้ใช้อาจจะมี?
>> ผู้ชม: รหัสผ่าน
>> DAVID ลัน: รหัสผ่านอาจจะต่อ A ที่อยู่หมายเลขโทรศัพท์บางทีอาจจะ
ที่อยู่อีเมล
จึงมีที่อัดแน่นของสาขานี้ สามารถเรียงลำดับของเกลียวออกจากการควบคุม
ได้อย่างรวดเร็วทันทีที่คุณเริ่มต้น ตระหนักโอ้ขอเก็บนี้
และขอเก็บนี้และที่
>> แต่วิธีการที่เราจะทำจริงหรือไม่?
ดังนั้นอีกครั้งรูปแบบจิต ที่จะมีในวันนี้ในขณะที่เรา
ดำน้ำใน SQL ที่เกิดขึ้นจริง โครงสร้างภาษาแบบสอบถาม
เป็นฐานข้อมูลที่มีลักษณะเช่นนี้
มันเป็นเพียงแถวและคอลัมน์
และคุณสามารถจินตนาการ Google สเปรดชีต หรือจำนวนของโปรแกรมอื่น ๆ
แต่สิ่งที่สำคัญเกี่ยวกับ MySQL ซึ่งเป็น ซอฟต์แวร์ฐานข้อมูลที่เรากำลังจะใช้
เปิดเผยได้อย่างอิสระ available-- ใช้ Facebook
และจำนวน websites-- อื่น ๆ ฐานข้อมูลร้านค้าสิ่ง relationally
และฐานข้อมูลเชิงสัมพันธ์ ก็หมายความว่าหนึ่งที่แท้จริง
เก็บข้อมูลในแถวและคอลัมน์
มันเป็นเรื่องง่ายเหมือนที่
>> ดังนั้นแม้ว่าบางสิ่งบางอย่างเช่น Oracle ที่ คุณอาจเคยได้ยินทั่วไป
เป็นฐานข้อมูลเชิงสัมพันธ์
และอยู่ภายใต้ฝากระโปรงก็ เก็บข้อมูลในแถวและคอลัมน์
และ Oracle เรียกเก็บ เงินจำนวนมากจะทำอย่างนั้น
ในขณะที่ค่าใช้จ่าย MySQL คุณไม่มีอะไรเหมือนกัน
ดังนั้น SQL เป็นไปเพื่อให้เรา อย่างน้อยสี่การดำเนินงาน
ความสามารถในการเลือกข้อมูลเช่นการอ่าน ข้อมูลแทรกลบและปรับปรุงข้อมูล
ในคำอื่น ๆ เหล่านั้น จริงๆการดำเนินงานที่สำคัญสี่
ที่กำลังจะช่วยให้เราสามารถเปลี่ยน สิ่งที่อยู่ในแถวเหล่านั้นและคอลัมน์
>> เครื่องมือที่เราจะใช้ในวันนี้โดยเฉพาะอย่างยิ่ง ที่จะเรียนรู้ SQL และจะเล่นกับมัน
มีการเรียกอีกครั้ง PHP MyAdmin
มันเป็นเครื่องมือที่ใช้บนเว็บ
รวมบังเอิญว่า มันเขียนใน PHP
แต่มันจะทำให้เรามีกราฟิก ส่วนติดต่อผู้ใช้เพื่อให้เราสามารถจริง
สร้างแถวเหล่านี้และคอลัมน์ แล้วพูดคุยกับพวกเขาผ่านทางรหัส
ดังนั้นขอตอนนี้เริ่มที่จะ สิ่งที่ผมคิดว่าเป็นตรงไปตรงมา
ชนิดของกระบวนการความสนุกของ สร้างปลายด้านหลังของเว็บไซต์
ชิ้นส่วนที่ผู้ใช้ไม่ได้ เห็น แต่ก็จะดูแลเกี่ยวกับ
เนื่องจากว่าเป็นข้อมูลที่ค่อนข้างจะ
ดังนั้นคล้ายกับ C และ น้อยเช่น PHP,
SQL หรือฐานข้อมูลที่สนับสนุน SQL มีอย่างน้อยเหล่านี้ชนิดข้อมูล
และคนอื่น ๆ ที่อัดแน่นของ
CHAR, VARCHAR, INT, BIGINT, ทศนิยมและ DATETIME
และมีทั้ง พวงของคุณสมบัติอื่น ๆ
แต่ให้ทำเช่นนี้โดย วิธีการเช่นที่เกิดขึ้นจริง
>> ฉันจะไปลงใน CS50 IDE ที่ล่วงหน้าที่ฉันได้เข้าสู่ระบบ
และฉันได้ไปเยี่ยม URL สำหรับ เครื่องมือนี้เรียกว่า PHP MyAdmin
และปัญหาการตั้งเจ็ดเราจะบอก คุณว่าวิธีการที่จะได้รับการอินเตอร์เฟซนี้
ได้เป็นอย่างดี
ที่มุมซ้ายมือด้านบน แจ้งให้ทราบว่ากล่าวว่าการบรรยาย
และนั่นก็หมายความว่า ล่วงหน้าที่ฉันสร้างขึ้น
ฐานข้อมูลที่ว่างเปล่าที่เรียกว่าการบรรยาย ที่มีสเปรดชีทในมันไม่มีเลย
ไม่มีแถวและคอลัมน์เป็น
เพราะเป็นครั้งแรก สิ่งที่เรากำลังจะทำ
คือการเริ่มต้นในการสร้างตาราง ที่จะเก็บผู้ใช้ของเรา
>> ดังนั้นแท้จริงมากกว่า ที่นี่ไปทางขวาผม
จะบอกฐานข้อมูล ฉันต้องการตารางที่เรียกว่าผู้ใช้
ดังนั้นนี้เป็นเหมือนไฟล์ที่ผม ต้องการจัดเก็บข้อมูลทั้งหมดของฉันใน
และวิธีการหลายคอลัมน์?
ดีขอให้มันง่ายสำหรับตอนนี้
ผมแค่อยากจะเก็บเหมือน ชื่อผู้ใช้และชื่อสำหรับผู้ใช้
เราจะเริ่มต้นเล็ก ๆ
ดังนั้นฉันต้องการสองคอลัมน์รวม
และฉันจะไปข้างหน้าและคลิกไป
และแล้วเหล่านี้ คอลัมน์สิ่งที่ฉันจะ
เพื่อ do-- ถ้าอินเทอร์เน็ตนี้ cooperates-- สิทธิทั้งหมด
ดังนั้นเราจะพยายามอีกครั้ง
ฉันจะสร้างตารางที่เรียกว่า ผู้ใช้ที่มีสองคอลัมน์คลิกไปตกลง
ตอนนี้เราได้รับมันได้อย่างรวดเร็วจริงๆ
ขอขอบคุณคุณทำได้ดีมาก
สิทธิทั้งหมดดังนั้นสิ่งที่เราต้องการ คอลัมน์เหล่านี้จะเรียกว่า?
>> ดังนั้นหนึ่งจะถูกเรียกชื่อผู้ใช้
ดังนั้นสิ่งที่ฉันเห็น here-- และอินเตอร์เฟซ ตรงไปตรงมาได้น่าเกลียดน้อยที่สุด
เมื่อคุณเริ่มต้นการพิมพ์ข้อมูลทั้งหมดนี้
แต่สิ่งที่ดีคือการจัดเรียงของที่ ขัดแย้งฉันสร้างคอลัมน์
แต่เครื่องมือที่มีอย่างโง่เขลา วางพวกเขาออกในแถว
เพื่อที่จะสามารถกำหนดค่าคอลัมน์เหล่านี้
จึงมีสองช่องว่างที่มีอยู่ภายใต้ชื่อ
และเป็นหนึ่งในสาขาเหล่านี้ฉัน ต้องการที่จะเรียกชื่อผู้ใช้
และเขตอื่น ๆ ที่ฉันต้องการที่จะเรียกชื่อ
>> และตอนนี้ฉันต้องเลือก ชนิดข้อมูลสำหรับสิ่งเหล่านี้
ดังนั้นในขณะที่ใน Excel และ Google สเปรดชีต
ถ้าคุณต้องการที่คอลัมน์คุณอย่างแท้จริง เพียงแค่พิมพ์ชื่อหรือชื่อผู้ใช้กด Enter
บางทีคุณอาจจะทำให้ใบหน้าหนา เพียงเพื่อความชัดเจน แต่ที่มัน
คุณไม่ได้ระบุ ชนิดของคอลัมน์
ตอนนี้ใน Google สเปรดชีตหรือ Excel คุณ อาจระบุว่าข้อมูลจะถูกแสดงผล
คุณสามารถไปที่เมนูรูปแบบและคุณ สามารถระบุแสดงสัญลักษณ์นี้เงินดอลลาร์เช่น
แสดงให้เห็นเช่นนี้ค่าจุดลอย
>> ดังนั้นจึงเป็นในทำนองเดียวกันกับ ว่าสิ่งที่เรากำลังจะทำ
แต่เรื่องนี้เป็นจริงจะบังคับ ข้อมูลที่จะเป็นบางประเภท
ตอนนี้ถึงแม้ว่าช่วงเวลาที่ผ่านมาฉัน กล่าวว่ามีเพียงไม่กี่ชนิดข้อมูล,
มีจริง ทั้งมากและพวกเขากำลัง
ในองศาที่แตกต่างของความจำเพาะ
และเป็นกันคุณ ยังสามารถทำสิ่งแฟนซี
เช่นรูปทรงเรขาคณิตที่จัดเก็บ ด้านในของฐานข้อมูล
คุณสามารถจัดเก็บสิ่งที่ เช่นพิกัด GPS
และที่จริงหาทางคณิตศาสตร์ จุดที่อยู่ใกล้กับคนอื่น ๆ
แต่เรากำลังจะไป ให้ง่ายสุดนี้
และไปถึงที่นี่ทั้งหมด ที่เรียกว่าชนิดสตริง
>> ดังนั้นนี่คือรายการของที่ ทั้งกลุ่มของตัวเลือก
CHAR, VARCHAR, TINYTEXT, MEDIUMTEXT, LONGTEXT
และมันก็เป็นชนิดของการครอบงำ
และโชคร้ายที่ค่อนข้าง ขัดแย้งกับ C,
ถ่านไม่ได้จริงๆถ่าน
ถ้าคุณระบุในฐานข้อมูล ว่าชนิดข้อมูลของคุณ CHAR,
นั่นหมายความว่าใช่มันเป็น CHAR แต่ก็เป็นหนึ่งหรือมากกว่าตัวอักษร
และคุณจะต้องระบุ วิธีการหลายตัวอักษรที่คุณต้องการ
ดังนั้นสิ่งที่เป็นปกติ ระยะเวลาในชื่อผู้ใช้หรือไม่?
มีขีด จำกัด มักจะ?
>> ผู้ชม: [ไม่ได้ยิน]
>> DAVID ลัน: 16 อาจจะ?
อะไรประมาณนั้น.
คุณจะรู้ว่ากลับมาอยู่ใน วันที่เคยเป็นแปด
บางครั้งก็ 16 บางครั้ง ก็จะยิ่งมากไปกว่านั้น
ดังนั้นนี้ไม่ได้ หมายถึงให้ฉันหนึ่ง CHAR
ซึ่งหมายความว่าฉันต้องระบุ ความยาวของสนาม
และตอนนี้ฉันอาจจะบอกว่าสิ่งที่ต้องการ 16
และมีการค้าลงที่นี่
ดังนั้นเราจะเห็นในช่วงเวลาที่ ที่นี้หมายถึงการอย่างใดอย่างหนึ่ง
ชื่อผู้ใช้ทุกคนจะต้องมี 16 ตัวอักษร
แต่รอสักครู่ M-A-L-A-N หากที่ ชื่อผู้ใช้ของฉันและฉันก็แค่ใช้ห้า
สิ่งที่คุณจะนำเสนอว่าฐานข้อมูล ทำเพื่อคนอื่น ๆ 11 ตัวอักษรที่
ผมเคยสงวนพื้นที่สำหรับ?
สิ่งที่คุณจะทำอย่างไร?
>> ผู้ชม: [ไม่ได้ยิน]
>> DAVID ลัน: ใช่เพียง ทำให้พวกเขา null ทั้งหมด
ทำให้พวกเขามีช่องว่าง
แต่อาจจะเป็นโมฆะดังนั้น จำนวนมากของศูนย์เครื่องหมาย
ดังนั้นในแง่หนึ่งเราได้ ทำตอนนี้แน่ใจว่าชื่อผู้ใช้ของฉัน
สามารถจะไม่เกิน 16 ตัวอักษร
และพลิกด้านที่เป็น ว่าถ้าผมมีชื่อยาวจริงๆ
หรืออยากได้นานจริงๆ ชื่อผู้ใช้เช่นบางส่วนของคุณ
อาจจะมีคนในวิทยาลัยหรือ Yale.edu ที่คุณไม่สามารถมีหนึ่ง
และในความเป็นจริงถ้าคุณได้ ที่เคยลงทะเบียนสำหรับเว็บไซต์
และคุณได้รับการพูดตะโกนใส่ รหัสผ่านของคุณยาวเกินไป
หรือชื่อผู้ใช้ของคุณยาวเกินไปก็ เพียงเพราะโปรแกรมเมอร์เมื่อ
การกำหนดค่าฐานข้อมูลของเขาหรือเธอ ตัดสินใจว่าข้อมูลนี้จะ
จะไม่เกินระยะเวลานี้
>> สิทธิทั้งหมดดังนั้นสิ่งที่ถ้า เราจะดำเนินการที่จะตั้งชื่อ?
นานแค่ไหนที่ควร ชื่อของมนุษย์ทั่วไปจะเป็นอย่างไร
วิธีการหลายตัวละครที่ 16?
ฉันคาดเดาที่เราจะทำได้ หาคนที่อยู่ในห้องนี้
โดยที่บวกครั้งแรกของเขาหรือเธอที่ผ่านมา ชื่อมีความยาวมากกว่า 16 ตัวอักษร
ดังนั้นสิ่งที่ดีกว่าที่ 17?
18?
25?
ใหญ่?
30?
>> ผู้ชม: [ไม่ได้ยิน]
DAVID ลัน: 5,000 โอ้พระเจ้าของข้าพเจ้า
ดังนั้นที่อาจจะดี ผูกไว้บนเราจะพูดว่า
และที่นี่เรามีชนิดของ โทรตัดสิน
เหมือนไม่มีคำตอบที่ถูกที่นี่
ไม่มีที่สิ้นสุดเป็นไปไม่ได้มาก เพราะเราในที่สุด
จะ have-- เรา จะวิ่งออกจากหน่วยความจำ
ดังนั้นเราจะต้องทำ สายการตัดสินในบางจุด
>> ที่พบบ่อยมากจะเป็นตัวอย่างเช่น เพื่อ use-- และแจ้งให้เราระบุ CHAR ที่นี่
เป็น before-- 255 เป็นตัวอักษร ขีด จำกัด บนซอฟต์แวร์ฐานข้อมูลนี้
ปีที่ผ่านมา
และเพื่อให้มีจำนวนมากของมนุษย์ เพียงแค่จะบอกว่าดี
255 ขีด จำกัด
ขอเพียงใช้สูงสุด
และนี่เป็นเรื่องน่าขันสวย
เช่นถ้าคุณกำลังพิมพ์ใครบางคน ชื่อสำหรับ 200 ตัวอักษรบวก
ที่ไร้สาระเล็ก ๆ น้อย ๆ
>> แต่จำได้ว่า ASCII ไม่ ระบบเดียวสำหรับตัวอักษร
และโดยเฉพาะอย่างยิ่งใน จำนวนมากของภาษาเอเชีย
ที่มีตัวละครที่เราไม่สามารถ แสดงบนแป้นพิมพ์เช่นสหรัฐของฉัน
แป้นพิมพ์ตัวอักษรบางตัวจริง ใช้เวลาถึง 16 บิตแทนแปดบิต
และเป็นเช่นนี้จริง ไม่ได้เป็นสิ่งที่ไม่สมควร
ที่เราต้องการมากขึ้น พื้นที่ถ้าเราต้องการพอดี
ตัวอักษรขนาดใหญ่กว่าสหรัฐมาก คนที่เป็นศูนย์กลางที่เราได้มีแนวโน้มที่จะหารือเกี่ยวกับ
ดังนั้นเราต้องมีขีด จำกัด บน
ผมไม่ทราบว่าสิ่งที่ดีที่สุดคือ แต่โดยทั่วไป 255 หนึ่งที่พบบ่อย
25 รู้สึกต่ำ
16, 32 รู้สึกต่ำ
ฉันจะผิดพลาดในด้านข้าง บางสิ่งบางอย่างที่สูงขึ้น
แต่มีการค้าออกเช่นเคย
อะไรคือสิ่งที่อาจจะเห็นได้ชัด การปิดการจอง 255 ตัวอักษร
สำหรับชื่อของทุกคนในฐานข้อมูลของฉันได้อย่างไร
>> ผู้ชม: [ไม่ได้ยิน]
>> DAVID ลัน: มีอะไรที่?
>> ผู้ชม: [ไม่ได้ยิน]
>> DAVID ลัน: มันเป็น หน่วยความจำมากใช่มั้ย?
M-A-L-A-N ฉันได้สูญเสียไปเพียง 250 ตัวอักษรเพียงการจัดเก็บชื่อของฉัน
defensively เพียงในกรณีที่มีคน ในชั้นเรียนที่มีชื่อยาวจริงๆ
ที่ดูเหมือนว่าเป็นการแลกเปลี่ยนที่เกินควร
>> ดังนั้นจึงปรากฎว่า SQL, ภาษาฐานข้อมูลนี้
จริงสนับสนุนบางสิ่งบางอย่าง เรียกว่า VARCHAR หรือตัวแปร CHAR
และนี่คือชนิดของการมีความสุขในที่นี้ ช่วยให้คุณสามารถระบุได้คงที่
ความกว้าง แต่มีความกว้างของตัวแปร
และมากขึ้นโดยเฉพาะการ ความกว้างสูงสุดของสนาม
ดังนั้นนี้หมายความว่าชื่อสามารถ จะไม่เกิน 250 ตัวอักษร
แต่แน่นอนอาจจะน้อยลง
และฐานข้อมูลเป็นไปได้ที่สมาร์ท
ถ้าคุณไม่ใส่ใน M-A-L-A-N, เป็นเพียงจะใช้ห้า
อาจจะหกไบต์เช่น อักขระ null ต่อท้าย
และไม่ใช้จ่ายเพิ่มเติม 249 หรือ 250 ไบต์โดยไม่จำเป็น
>> ดังนั้นนี้ดูเหมือนว่าฉันควร ได้เริ่มต้นกับเรื่องนี้
แต่มีเสมอ tradeoff
ดังนั้นในมือข้างหนึ่งชื่อผู้ใช้ฉัน ระบุที่จะเขียนยากที่ 16
และบางทีที่ไม่ได้ โทรขวาบางทีมันอาจจะ
แต่ทำไมไม่ใช้ varchars สำหรับทุกอย่าง?
>> มันอยู่ที่เหตุผล
ทำไมไม่ใช้ varchars สำหรับทุกสาขา มีความยาวคุณไม่ทราบล่วงหน้า
ถ้ามันดูเหมือนว่าจะเป็นสิ่งที่ดีใช่มั้ย?
ใช้พื้นที่มากที่สุดเท่าที่เป็นเพียง คุณจะต้องขึ้นอยู่กับขีด จำกัด นี้?
>> ผู้ชม: ช้าลง
DAVID ลัน: สะกด?
ผู้ชม: ทำให้มันช้าลง?
DAVID ลัน: โอ้มันช้าลง
ดีที่เกือบตลอดเวลา คำตอบที่ตรงไปตรงมา
เช่นเดียวกับสิ่งที่ถ่วงดุลอำนาจหรือไม่
มันทั้งค่าใช้จ่ายในพื้นที่มากขึ้น หรือค่าใช้จ่ายเวลามากขึ้น
ดังนั้นในกรณีนี้มันอาจจะช้าลง
ทำไม?
>> ผู้ชม: [ไม่ได้ยิน] กำหนด [ไม่ได้ยิน]
>> DAVID ลัน: ดี
ดังนั้นคุณอาจจะจำได้จากแม้กระทั่ง PSED5 เล่นกับวิธีการของคุณ
ในพจนานุกรมถ้าคุณต้อง แบบไดนามิกจัดสรรหน่วยความจำหรือเก็บ
การเจริญเติบโตของบัฟเฟอร์ที่ สามารถจริงจะช้า
หากคุณมีการโทร malloc ใต้ฝากระโปรงและอาจ
นั่นคือสิ่งที่ MySQL จะทำเช่นนั้น แน่นอนว่าอาจจะเป็นกรณีที่
และถ้าคุณคิดว่าวิธีการ กลับไป PSet-- หรือแม้กระทั่ง
สัปดาห์ที่สองเมื่อเราได้สิ่งที่ต้องการ การค้นหาแบบไบนารีหรือแม้กระทั่งการค้นหาเชิงเส้น
หนึ่งในสิ่งที่ดีเกี่ยวกับทุกคำพูด ในฐานข้อมูลหรือคำพูดทุกคำในคอลัมน์
เป็นว่าระยะเวลาเดียวกันแม้ ถ้าทั้งกลุ่มของตัวอักษรเหล่านั้น
เป็นที่ว่างเปล่าคือการที่คุณสามารถใช้ เข้าถึงโดยสุ่มกับข้อมูลของคุณใช่มั้ย?
>> ถ้าคุณรู้ว่าทุก คำคือ 16 ตัวอักษรที่อยู่ห่างออกไป
คุณสามารถใช้การคำนวณตัวชี้เพื่อที่จะ พูดคุยและไปกับเรา 16, 32, 48, 64,
และคุณก็สามารถกระโดด ทันทีโดยใช้การคำนวณ
ใด ๆ ของคำในฐานข้อมูลของคุณ
ในขณะที่ถ้าเป็น VARCHAR ที่ ทำในสิ่งที่คุณแทนต้องทำอย่างไร
>> [เสียงโทรศัพท์]
>> หากเป็น VARCHAR คุณ ไม่สามารถใช้การเข้าถึงแบบสุ่ม
สิ่งที่คุณต้องมองหาหรือทำอย่างไร
ใช่?
>> ผู้ชม: [ไม่ได้ยิน]
>> DAVID ลัน: ดู ผ่านร่องรอย whole--
ผ่านรายการทั้งหมด มองหาสิ่งที่มีแนวโน้มมากที่สุด?
ชนิดของค่าพิเศษ?
ผู้ชม: [ไม่ได้ยิน]
DAVID ลัน: มอง สำหรับจุดสิ้นสุด null
ที่แบ่งแยกการแยกของคำว่า
ดังนั้นอีกครั้งถ่วงดุลอำนาจและ ไม่มีคำตอบที่ถูก
แต่นี่คือที่โดยเฉพาะอย่างยิ่ง เมื่อผู้ใช้ของคุณจะได้เป็นจำนวนมาก
และโหลดของคุณบนเซิร์ฟเวอร์ของคุณ จำนวนผู้ที่ใช้จะได้รับสูง
เหล่านี้เป็นจริงการตัดสินใจขี้ปะติ๋ว
ดังนั้นเราสามารถออกจากเหล่านี้เช่นนี้ แต่ ขอเลื่อนลงไปทางด้านขวา
ที่นี่
ขณะนี้มีคู่ของคอลัมน์ ที่เราจะต้องทำให้การเรียกร้องการตัดสิน
มันทำให้ความรู้สึกที่จะช่วยให้ผู้ใช้ ชื่อผู้ใช้ชื่อผู้ใช้หรือผู้ใช้
ชื่อที่จะเป็นโมฆะ?
นั่นคือว่างเปล่าเพียง
รู้สึกไร้สาระเล็ก ๆ น้อย ๆ ดังนั้นฉัน ไม่ได้ไปตรวจสอบกล่องเหล่านั้น
แต่ปรากฎใน ฐานข้อมูลคุณสามารถพูดได้ว่า
คนสามารถเลือกที่จะมีค่านี้
คอลัมน์นี้ไม่ได้ ที่จริงจะมี
>> ตอนนี้มีเมนูแบบเลื่อนลงนี้
และแจ้งให้ทราบฉันยังคง ในแถวแรกที่นั่น
ดังนั้นฉันพูดคุยเกี่ยวกับชื่อผู้ใช้ในขณะนี้
และปรากฎว่าฐานข้อมูล ซึ่งแตกต่างจากสเปรดชีทเพียงเรียบง่าย
มีคุณลักษณะที่มีประสิทธิภาพที่เรียกว่าดัชนี
และดัชนีเป็นวิธีการบอกที่ ฐานข้อมูลล่วงหน้าว่าผมมนุษย์
ผมฉลาดกว่าที่คุณ
>> ฉันรู้ว่าสิ่งที่ชนิดของคำสั่งเลือก หรือแทรกหรือลบหรือปรับปรุง
ว่ารหัสของฉันเป็นไปท้าย ทำในฐานข้อมูลนี้
ฉันต้องการที่จะอ่านข้อมูลจำนวนมาก
ฉันต้องการที่จะใส่ข้อมูลจำนวนมาก
ฉันต้องการอย่างต่อเนื่อง ลบข้อมูลจำนวนมาก
ถ้าฉันรู้ว่าฉันกำลังจะไปเป็น การเข้าถึงสนามเช่นชื่อผู้ใช้งานเป็นจำนวนมาก
ฉัน preemptively สามารถบอก ฐานข้อมูลที่ผมรู้มากกว่าคุณ
และฉันต้องการที่จะออกคำสั่งว่า คุณควรดัชนีข้อมูลนี้
ดัชนีที่ไหนฟิลด์หรือคอลัมน์ หมายความว่าฐานข้อมูลล่วงหน้า
ควรยืมความคิดจากการเช่น สัปดาห์ที่สี่และห้าและหกจาก CS50
และที่จริงการสร้าง สิ่งที่ต้องการค้นหาแบบทวิภาค
ต้นไม้หรือบางสิ่งบางอย่าง โดยทั่วไปเรียกว่าต้นไม้ B
ที่คุณจะได้เรียนรู้ ในชั้นเรียนเช่น CS124
ที่ฮาร์วาร์ระดับอัลกอริทึม หรือจำนวนของสถ​​านที่อื่น ๆ
>> ฐานข้อมูลและสมาร์ท คนที่นำมาใช้มัน
จะคิดออกว่าจะจัดเก็บ ตารางของข้อมูลที่
ในหน่วยความจำเพื่อให้การค้นหาและ การดำเนินงานอื่น ๆ ที่เร็วสุด
คุณไม่จำเป็นต้องที่จะทำมัน
คุณไม่ได้มีการดำเนินการ ค้นหาเชิงเส้นหรือการค้นหาแบบไบนารี
หรือรวมประเภทหรือเลือก เรียงลำดับใด ๆ ที่
ฐานข้อมูลที่จะให้คุณถ้าคุณบอก มัน preemptively ดัชนีข้อมูลนี้
>> และคุณสามารถดูเกินไปมี บางลักษณะอื่น ๆ
เราสามารถบอกได้ฐานข้อมูลในการบังคับใช้
สิ่งที่มันอาจหมายถึงถ้าฉันเลือกที่ไม่ซ้ำกัน จากเมนูนี้เพียงอย่างสังหรณ์ใจ?
ใช่?
>> ผู้ชม: [ไม่ได้ยิน]
DAVID ลัน: ใช่ที่ ชื่อผู้ใช้จะต้องมีเอกลักษณ์
นี้เป็นสิ่งที่ดีหรือสิ่งที่ไม่ดีสำหรับ ฐานข้อมูลสำหรับเว็บไซต์ที่มีผู้ใช้หรือไม่?
ชื่อผู้ใช้ต้องไม่ซ้ำกัน?
ใช่อาจจะเป็น
หากเป็นสิ่งที่เป็น สนามเราใช้ในการเข้าสู่ระบบ
คุณไม่ต้องการที่จะคนที่มี ความรู้สึกเดียวกันหรือชื่อผู้ใช้เดียวกัน
ดังนั้นเราสามารถมี ฐานข้อมูลเพื่อให้การบังคับใช้ว่า
ที่ขณะนี้อยู่ในโค้ด PHP หรือภาษาใด ๆ ฉันจะได้ไม่ต้องยกตัวอย่างเช่นการตรวจสอบ
ไม่จำเป็นต้องมีชื่อผู้ใช้นี้ มีอยู่ก่อนที่ผมจะปล่อยให้คนลงทะเบียน?
ฐานข้อมูลจะไม่ยอมให้คนสองคนที่ชื่อ เดวิดหรือ Malans ลงทะเบียนในกรณีนี้
>> และเป็นกันแม้ว่านี้ เมนูเพียงช่วยให้คุณเลือกอย่างใดอย่างหนึ่ง
ดัชนีที่ไม่ซ้ำกันเป็นหนึ่งที่เป็น จัดทำดัชนีสำหรับการทำงานเร็วสุด
แต่ก็ยังบังคับใช้เอกลักษณ์
และเราจะกลับมากับสิ่งที่ อีกสองหมายถึงในสักครู่
ในขณะเดียวกันถ้าผมไป แถวที่สองของฉันซึ่ง
เป็นชื่อของผู้ใช้ที่ฉันควรจะระบุ ว่าชื่อต้องไม่ซ้ำกัน?
ไม่มีเพราะคุณสามารถแน่นอน have-- ไม่มีสองเดวิด
Malans ในห้องนี้ได้มากที่สุด
แต่ถ้าเราเลือกชื่อที่แตกต่างกัน เราก็อาจจะมีการชนกัน
>> คิดว่ากลับไปสับตารางและไม่ชอบ
ดังนั้นเราอย่างแน่นอนไม่ต้องการ ที่จะทำให้สนามชื่อที่ไม่ซ้ำกัน
ดังนั้นเรากำลังจะออกจาก ว่ารีบรีบรีบอะไร
และฉันจะออกจาก ทุกอย่างอื่นเพียงอย่างเดียว
อันที่จริงส่วนใหญ่ของเขตข้อมูลเหล่านี้ เราจะได้ไม่ต้องดูแลเกี่ยวกับ
และเมื่อผมพร้อมที่จะบันทึกนี้ ถ้าอินเทอร์เน็ตให้ความร่วมมือ
ผมคลิกบันทึกและมากมาก ช้าไม่ได้รับฐานข้อมูลที่บันทึกไว้
และตอนนี้ฉันกลับไปนี้ อินเตอร์เฟซซึ่งเป็นที่ยอมรับ
ถูกครอบงำได้อย่างรวดเร็วก่อน
แต่ทั้งหมดที่ผมจะทำคือการคลิก ที่ผู้ใช้คำที่ด้านบนซ้าย
ฉันจะไปขึ้นที่นี่คลิก ผู้ใช้และโดยค่าเริ่มต้นมัน
ได้ดำเนินการ SQL บางอย่าง แต่ เพิ่มเติมว่าในช่วงเวลาที่
นี่เป็นเพียงบทสรุปของสิ่งที่ฉันทำ
และไม่ต้องกังวลที่คุณเห็น พูดถึงลาตินและสวีเดนที่นี่
เหล่านี้เป็นเพียงการเริ่มต้น การตั้งค่าเพราะ MySQL เดิม
หรือ PHP MyAdmin หนึ่งของทั้งสองที่เกิดขึ้น จะถูกเขียนโดยคนสวีเดนบาง
แต่มันเป็นเรื่องที่ไม่เกี่ยวข้องในกรณีของเราที่นี่
>> สิทธิทั้งหมดดังนั้นจึงเป็น นี้ที่น่าสนใจทั้งหมดหรือไม่
มันจะเปิดออกฉันสามารถแทรกข้อมูล ลงในฐานข้อมูลโดยการเขียนรหัส
และฉันไปข้างหน้าและ ในแฟ้มของฉันที่นี่ฉัน
จะไปข้างหน้าและหลอกเช่น นี้เป็นสายไปยังฐานข้อมูลที่ซึ่ง
มันไม่ได้ในขณะนี้ แต่มันจะ เมื่อเราได้รับการแก้ไขปัญหาการตั้งเจ็ด
และฉันจะไปข้างหน้าและ ดำเนินการฟังก์ชั่นที่เรียกว่าแบบสอบถาม
ซึ่งเราจะให้คุณในปัญหา ตั้งรหัสกระจายเจ็ดของที่
ใช้เวลาอย่างน้อยหนึ่งอาร์กิวเมนต์ ซึ่งเป็นเพียงสตริง
สตริงของ SQL รหัส
ดังนั้นคุณจะเรียนรู้วิธีการ เขียนภาษาแบบสอบถามที่มีโครงสร้าง
>> ถ้าผมต้องการที่จะแทรกแถวใหม่ในของฉัน ฐานข้อมูลเพราะมีคนส่ง
แบบฟอร์มเพื่อรหัสของฉันฉันจะตามตัวอักษร เขียนแทรกลงในผู้ใช้งานดังต่อไปนี้
สาขา: ชื่อผู้ใช้ จุลภาคชื่อค่า
และตอนนี้ฉันต้องใส่ สิ่งที่ต้องการลันและอ้าง
ได้นำมาอ้างเดวิดลัน. และตอนนี้ แม้สำหรับผู้ที่ไม่คุ้นเคยกับ SQL,
ฉันกำลังใช้ราคาเดียวทำไม ภายในของสตริงสีเขียวนี้หรือไม่?
สิ่งที่อาจจะเป็นเหตุผลที่นี่?
>> ขอให้สังเกตที่ผมร่วมมั่วสุมสองภาษา
คำที่เป็นฟังก์ชั่น PHP, แต่จะใช้เวลาโต้เถียง
และข้อโต้แย้งที่มีตัวเองเป็น เขียนในภาษาอื่นที่เรียกว่า
SQL, ภ​​าษา Structured Query
ดังนั้นทุกอย่างที่ฉัน ได้เน้นแค่ที่นี่
ภาษาที่เรียกว่า SQL นี้
ดังนั้นสิ่งที่มีราคาเดียว เช่นเดียวกับการตรวจสอบสติอย่างรวดเร็ว?
เอาเลย
พวกเขากำลังสตริง
ดังนั้นอ้างนำมาอ้างลันและอ้าง ได้นำมาอ้างเดวิดลันสตริง
และเพียงแค่คิดสังหรณ์ใจตอนนี้ รู้ว่าสิ่งที่คุณรู้เกี่ยวกับ C และ PHP,
ทำไมฉันไม่ทำเช่นนี้ซึ่งผมมักจะ คำพูดสองใช้สำหรับสตริง?
ฉันไม่ต้องการที่จะทำอย่างนั้นทำไม?
ใช่?
>> ผู้ชม: [ไม่ได้ยิน]
DAVID ลัน: แน่นอน
เพราะฉันใช้ คำพูดสองเกี่ยวกับวิธีการ
ด้านนอกของการโต้แย้ง ฟังก์ชั่น PHP,
ฉันจะสร้างความสับสนให้ล่าม
มันจะไม่ทราบว่าเหล่านี้จะไปด้วยกัน?
อย่าเหล่านี้ไปด้วยกันไหม?
ดังนั้นผมสลับแทน
>> หรือฉันจะทำบางสิ่งบางอย่างเช่นนี้ อ้างเครื่องหมายหรือเครื่องหมายคำพูด
ตรงไปตรงมาที่เพิ่งเริ่ม ได้รับมากไม่สามารถอ่านได้และน่าเกลียด
แต่ที่จะประสบความสำเร็จ ผลเดียวกันได้เป็นอย่างดี
>> ดังนั้นถ้ามีการดำเนินการนี​​้ สอบถามตอนนี้เรามาดูสิ่งที่เกิดขึ้น
ฉันจะไปข้างหน้าในขณะนี้และค่อนข้าง กว่ารันโค้ด PHP ซึ่ง
เป็นที่ที่คุณจะเล่น ปัญหาตั้งเจ็ด
ฉันจะไปแทน PHP MyAdmin
และฉันจะด้วยตนเอง ไปที่แท็บ SQL,
และแจ้งให้เราซูมในอินเตอร์เฟซ
และฉันจะไปวางใน สิ่งที่ฉันเพิ่งพิมพ์
และรหัสสีมี เปลี่ยนนิด ๆ หน่อย ๆ ตอนนี้
เพียงเพราะรูปแบบโปรแกรม สิ่งที่แตกต่างกันเล็กน้อย
แต่สังเกตเห็นว่าทั้งหมดที่ฉันได้ทำ คือผมได้กล่าวว่าผู้ใช้ใส่ลงใน
ฉันได้ระบุไว้แล้วในเครื่องหมายจุลภาค รายการที่คั่นวงเล็บสอง
เขตข้อมูลที่ฉันต้องการที่จะแทรก แล้วฉันได้กล่าวว่าแท้จริงค่า
ตามด้วยวงเล็บอื่น และจากนั้นทั้งสองค่า
ฉันต้องการที่จะ plug-in และ ตอนนี้สำหรับมาตรการที่ดี
ฉันจะใส่เครื่องหมายอัฒภาคที่สิ้นสุด
ดังนั้นนี้ไม่ได้เป็นซีนี้ไม่ PHP
นี่คือตอนนี้ SQL และฉันวาง ลงในเว็บนี้อินเตอร์เฟซที่เป็น
เพียงแค่จะให้ฉัน, ทันทีที่ผมคลิกไป
ดำเนินการค้นหานี้กับฐานข้อมูล การทำงานภายในของ CS50 IDE
>> ดังนั้นนี่เป็นสิ่งที่ดี
ขอให้สังเกตว่ากล่าวว่าหนึ่งในแถว แทรกไปเร็วสุด
0.0054 วินาทีเพื่อแทรกข้อมูลที่
ดังนั้นที่ฟังดูสวยสุขภาพดี
มันรูปแบบใหม่แบบสอบถามของฉัน สำหรับผมที่นี่เพียงที่จะเห็นมัน
ในการเรียงลำดับของรหัสสีรุ่น
แต่ตอนนี้ถ้าฉันคลิก เรียกดูสังเกตเห็นว่าแม้
แม้ว่าจะมีจำนวนมากของความยุ่งเหยิงบน หน้าจอโต๊ะของฉันตอนนี้มีสองแถว
>> ดังนั้นให้ฉันไปข้างหน้าและทำอีก
แทนการนี​​้ให้ฉัน ไปที่แท็บ SQL อีกครั้ง
และในครั้งนี้ผมจะใส่สิ่งที่ต้องการ ร็อบและชื่อของเขาจะเป็นร็อบโบว์
โบว์
ลองคลิกบันทึก
โอ๊ะค่อนข้างไป
>> คลิกเรียกดูอีกครั้งและ ตอนนี้สังเกตเห็นฉันมีสองแถว
ดังนั้นนี้เป็นเพียงวิธีที่ซับซ้อนมากขึ้น วิธีการเปิด Google สเปรดชีต
และเพียงแค่พิมพ์แถวลงในคอลัมน์
แต่สิ่งที่สำคัญคือ ตอนนี้เรามีไวยากรณ์
ที่จะเขียนโค้ดเพื่อให้ ท้ายที่สุดที่เราสามารถทำได้จริง
และทำบางนี้
จำได้ว่า PHP สนับสนุน ซุปเปอร์ตัวแปรทั่วโลก
>> สิ่งที่อยู่ภายในของเงินดอลลาร์ เข้าสู่ระบบขีด GET ใน PHP?
เราจึงมองที่หนึ่ง หรือสองตัวอย่างง่ายๆ
และใน PSet6, จำที่คุณต้องทักทาย จุด PHP ซึ่งใช้ตัวแปรนี้
ในสิ่งที่จะไปที่นั่น?
หรือมันคืออะไร?
ดังน้อย
>> ผู้ชม: [ไม่ได้ยิน]
>> DAVID ลัน: มันเป็นหิมะ เมล็ดของอาร์เรย์ซึ่ง
เป็นเพียงวิธีที่จินตนาการของบอก อาร์เรย์ที่มีคู่ค่าที่สำคัญ
และกุญแจที่เป็นตัวเลขไม่ได้
พวกเขากำลังคำหรือสตริง
และโดยเฉพาะสิ่งที่ เป็นผู้ที่คู่ค่าที่สำคัญ?
พวกเขามาจากที่ไหน?
ขออภัย?
>> ผู้ชม: [ไม่ได้ยิน]
DAVID ลัน: ไม่มี?
อะไรคือสิ่งที่สำคัญเหล่านั้น คู่ค่ามาจากไหน?
พูดอีกครั้ง?
อีกครั้ง?
ฉันเพียงคนเดียวที่ไ​​ด้ยินบางสิ่งบางอย่าง?
>> [LAUGHTER]
>> ที่เหมาะสมใช่?
>> ผู้ชม: [ไม่ได้ยิน]
DAVID ลัน: ใช่พวกเขา มาจากสตริงการสืบค้น
ดังนั้นถ้าคุณย้อนกลับในเวลาที่จะ เมื่อเราได้เล่นด้วย Google
และเราได้ไปที่ Google.com เฉือน ค้นหาเครื่องหมายคำถามคิวเท่ากับแมว
ถ้าผมจะกด Enter และถ้า Google ถูกนำมาใช้ใน PHP
โค้ด PHP ว่า Google เขียน จะมีการเข้าถึงเครื่องหมายดอลลาร์
ขีดได้รับภายในซึ่ง เป็นกุญแจสำคัญที่เรียกว่า Q และความคุ้มค่า
ที่เรียกว่าแมวที่จะสามารถใช้ ที่ใช้ในการทำการค้นหาที่เกิดขึ้นจริงกับ
>> ดังนั้นในความเป็นจริงสิ่งที่ฉันกำลังจะไป ทำตอนนี้คือกลับไปโค้ด PHP ของฉัน
อีกครั้งที่คุณจะเห็นมากขึ้นใน PSet7
และแทนที่จะเสียบ ค่ารหัสยากที่
ดูเหมือนจะไม่เหมือน เว็บไซต์แบบไดนามิกมาก
ฉันจะให้คุณทีเซอร์ของ สิ่งที่รหัสที่แท้จริงของคุณจะทำอย่างไร
คุณจะใส่ในสอง เครื่องหมายคำถามเช่นนี้
ผมไม่ทราบว่าสิ่งที่เป็นชื่อผู้ใช้
ผมไม่ทราบว่าสิ่งที่ ชื่อเป็นไปได้,
แต่ฉันรู้ว่าฉันสามารถ พวกเขาได้รับแบบไดนามิก
>> ดังนั้นถ้ารหัสที่เรากำลังเขียนตอนนี้คือ รหัสที่ทำงานบนเซิร์ฟเวอร์ของ Google
หรือว่านี่คือจุดสวัสดี PHP ซึ่งมาพร้อมกับ PSet6,
ฉันจะผ่านเข้าไปใน ฟังก์ชั่นการสอบถาม
เช่นเดียวกับ printf สองข้อโต้แย้งอื่น ๆ
GET, อ้างชื่อผู้ใช้นำมาอ้าง, และได้รับการอ้างชื่อได้นำมาอ้าง
และตอนนี้สังเกตเห็นว่า โครงสร้างทั่วไปอยู่ที่นี่
ฉันมีด้านซ้าย ด้านของการโทร,
ฟังก์ชั่นที่เรียกว่าแบบสอบถามใน PHP
ฉันยังคงมีเป็นครั้งแรก อาร์กิวเมนต์เพียงสตริงของข้อความ
>> แต่สตริงของข้อความที่ เขียนในภาษาที่เรียกว่าของ SQL
และตรงไปตรงก็ไม่ได้เป็นภาษาที่มีขนาดใหญ่
เราเพียงจะพูดคุยเกี่ยวกับ มันอย่างเป็นทางการในวันนี้จริงๆ
และจากนั้นในปัญหาตั้ง เจ็ดมีค่อนข้าง
คุณสมบัติบางอย่างที่เรากำลัง จะยกระดับ
เครื่องหมายคำถาม แต่หมายถึงการเชื่อมต่อ มูลค่าที่นี่และเสียบค่าอื่น
ที่นี่
และแจ้งให้ทราบผมเคยมองข้ามสิ่งที่ จากทั่วแช่ง quote--
it-- รอบใบเสนอราคา นับเป็นเวลานี้
ผมเคยมองข้ามคำพูด เครื่องหมายรอบเครื่องหมายคำถาม
ขออภัยในเวลานี้
>> ดังนั้นสิ่งที่ดีเกี่ยวกับเรื่องนี้ คุณลักษณะเครื่องหมายคำถามที่
PHP มีแนวโน้มที่จะสนับสนุนและทับทิม งูหลามและภาษาอื่น ๆ
นี้ก็หมายความว่าในบางปลั๊ก ค่าที่นี่และคุณรู้อะไรไหม
คุณคิดออกว่าจะใช้ ราคาเดียวหรือคำพูดสอง
อย่ารำคาญฉันกับผู้ที่ รายละเอียดน่าทึ่งปัญญา
แต่ให้แน่ใจว่ามันถูกต้อง เพื่อให้รหัสของฉันเป็นที่สุด
การดำเนินงานและความปลอดภัยซึ่ง จะมีความหมายไม่นาน
>> ตอนนี้กี่ข้อโต้แย้งทั้งหมดเพียงเพื่อ มีความชัดเจนคือการฟังก์ชั่นการค้นหา?
ทุกคนต้องการที่จะลงคะแนนให้มากกว่าสอง?
สาม?
แน่นอนว่าทำไม?
ทำไมสาม?
>> ผู้ชม: [ไม่ได้ยิน]
DAVID ลัน: แน่นอน
ส่วนแรกคือสตริง
อาร์กิวเมนต์ที่สองเป็นเครื่องหมายดอลลาร์ ขีด GET ชื่อผู้ใช้วงเล็บ
และอาร์กิวเมนต์ที่สามคือ สิ่งเดียวกัน แต่เพียงชื่อ
ดังนั้นในคำอื่น ๆ ในขณะนี้ ถ้าผมมีรูปแบบเว็บ
ที่มีการฟิลด์ข้อความ สำหรับชื่อผู้ใช้ของผู้ใช้
สำหรับชื่อของเขาหรือเธอเพียง เช่นคุณจะเห็นในเว็บไซต์
เมื่อคุณลงทะเบียน เว็บไซต์บางอย่างอาจนี้
เป็นรหัสที่ปลายด้านหลังที่ จริงไม่แทรกในขณะนี้
ลงในฐานข้อมูล
>> ตอนนี้โดยคมชัดให้ไปข้างหน้าอย่างรวดเร็วของ
สมมติว่าผู้ใช้อยู่ในขณะนี้ เข้าสู่ระบบและคุณต้องการ
การเขียนโค้ด PHP ที่จะตรวจสอบว่า คนที่ได้เข้าสู่ระบบใน
เป็นจริงผู้ใช้คุณสามารถ ใช้ไวยากรณ์ง่ายสวย
คุณสามารถพูดได้เลือกสมมติว่า ดาวที่ดาวหมายความว่าทุกอย่าง
ผมไม่ทราบว่าสิ่งที่ฉัน ต้องการดังนั้นเพียงแค่ให้ฉัน
คอลัมน์ทั้งหมดจากตาราง ผู้ใช้ที่เรียกว่าและนี่เป็นสิ่งที่ดี
เลือกสิ่งที่สนับสนุน เรียกว่ากริยาซึ่งเป็น
เช่นวิธีการคัดเลือกสิ่งที่คุณต้องการ
ชื่อผู้ใช้ในกรณีที่มีค่าเท่ากับ อ้างนำมาอ้างลัน
ดังนั้นที่นี่เกินไปฉันได้ฝังตัว ภายในการโต้แย้ง
เพื่อฟังก์ชั่น PHP, บรรทัดของรหัสของ SQL
และที่ SQL รหัสนี้ เวลาที่แท้จริงไป
เพื่อค้นหาอ้างนำมาอ้างลัน
>> ตอนนี้ไม่ได้ทั้งหมดที่มีประโยชน์นั้น ดังนั้นฉันจะข้าม
และฉันจะที่จะนำไป เคล็ดลับนี้จากเบรดี้และไป
และปลั๊กอินแทน เครื่องหมายคำถามที่นี่
ดังนั้นเพียงแค่ต้องมีความชัดเจนในสิ่งที่ ควรอาร์กิวเมนต์ที่สองของฉัน
ถ้ามีคนจะได้เข้าในและฉัน ต้องการตรวจสอบว่าเขาหรือเธอเป็นจริง
ผู้ใช้หรือไม่?
ผู้ชม: [ไม่ได้ยิน]
DAVID ลัน: ใช่
ฉันได้ยินดอลลาร์ขีดเครื่องหมาย อ้างได้รับชื่อผู้ใช้นำมาอ้าง
และที่ควรกลับมาหาเรา ใด ๆ ของแถวในฐานข้อมูลของฉัน
ที่มีชื่อผู้ใช้ของลัน
ตอนนี้หวังว่าฉันจะได้รับกลับมา ศูนย์ถ้าลันไม่เคยอยู่ที่นี่
หรือถ้าเขามี
ฉันไม่ควรจะได้รับกลับมา สองหรือสามหรือสี่
ทำไม?
>> ผู้ชม: [ไม่ได้ยิน]
>> DAVID ลัน: ผมบอกว่าที่ไม่ซ้ำกันใช่มั้ย?
ด้วยเหตุผลง่ายๆ
เพราะผมว่ามันก็มีการ จะไม่ซ้ำกันเพียงแค่เหตุผล
คุณสามารถมีศูนย์หรือหนึ่ง Malans ในตารางฐานข้อมูลนี้โดยเฉพาะ
ขณะนี้เป็นกันเพียงเพื่อให้คุณได้เห็น มันแม้ว่าฉันให้ใช้ GET
และแม้ว่า PSet6 ใช้เฉพาะ GET คุณอย่างแน่นอนจะมีการโพสต์
และจำได้ว่าเป็นอีกหนึ่งโพสต์ เทคนิคในการส่งข้อมูล
จากรูปแบบ แต่มัน ไม่ปรากฏขึ้นใน URL
มันเป็นเรื่องเล็ก ๆ น้อย ๆ ความปลอดภัยมากขึ้นอย่างแน่นอนสำหรับ สิ่งที่ต้องการชื่อผู้ใช้และรหัสผ่าน
ซึ่งจะ PSet7 ในความเป็นจริงที่เกี่ยวข้องกับ
>> ดังนั้นขอทำเช่นนี้ใน PHP MyAdmin และดูสิ่งที่เกิดขึ้น
ฉันจะไปที่แท็บ MySQL
และแจ้งให้ทราบว่าค่าเริ่มต้นสำหรับ PHP MyAdmin เพียงการพยายามที่จะเป็นประโยชน์
คือการเลือกดาวจากผู้ใช้ที่หนึ่ง
ดีหนึ่งเป็นจริงเสมอดังนั้น นี้มีความโง่ที่มีประสิทธิภาพ
เพียงเลือกทุกอย่าง
แต่ฉันจะเป็นเพียงเล็กน้อย เพิ่มเติมความรู้ด้วยตนเอง
พิมพ์ออกมาดาวเลือกจากผู้ใช้
>> ตอนนี้ในทางเทคนิคที่คุณสามารถ พูดชื่อของตาราง
มันหายากที่คุณต้อง, แต่สังเกตเห็นเหล่านี้ไม่ได้
คำพูดปกติของคุณบนแป้นพิมพ์ของสหรัฐอเมริกา
นี่คือ backtick ที่เรียกว่าซึ่ง โดยทั่วไปบนซ้ายมือด้านบน
มุมของแป้นพิมพ์ของคุณ
แต่มันก็หายากที่คุณจะ จริงต้องรำคาญกับที่
ดังนั้นฉันจะเอาพวกเขาต่อไป
ดังนั้นตอนนี้ให้ฉันไปข้างหน้าและตีไป
และวิธีการหลายแถวที่ผมควรจะได้รับ กลับมาเมื่อผมเลือกดาวจากผู้ใช้?
>> ผู้ชม: [ไม่ได้ยิน]
DAVID ลัน: จำนวนแถวที่แน่ใจว่า
แต่วิธีการที่หลายคนในนี้ เรื่องที่เป็นรูปธรรมในตอนนี้?
สองเพราะมี ฉันและมีร็อบ
ดังนั้นถ้าผมคลิกไปฉันเห็นสายตาที่ ผมเคยกลับมาแน่นอนสองแถว
มีจำนวนมากของความยุ่งเหยิงบนเป็น หน้าจอ แต่ฉันเห็นเพียงสองแถว
ในทางตรงกันข้ามถ้าผมทำเช่นนี้อีกครั้งและทำ ดาวเลือกจากผู้ใช้ที่ชื่อผู้ใช้
เท่ากับอ้างนำมาอ้าง ลันตอนนี้ถ้าผมคลิกไป
ฉันเพียงจะได้รับกลับมาหนึ่งแถว
และสุดท้ายถ้าผมทำ บางสิ่งบางอย่างเช่นนี้คิดว่า
ที่ฉันไม่สนใจเกี่ยวกับ ได้รับทุกอย่าง
ซึ่งเป็นชนิดของความหมายในขณะนี้ เพราะมีเพียงสองคอลัมน์
มันไม่เหมือนที่ฉันเลือก เป็นจำนวนมากของข้อมูล
สมมติว่าฉันไปข้างหน้าและ ไม่เลือกชื่อจาก
ผู้ใช้ที่ชื่อผู้ใช้เท่ากับลัน สิ่งที่ดีเกี่ยวกับ SQL ตรงไปตรงมา
ก็คือว่ามันไม่จริงเพียง สิ่งที่คุณบอกว่าจะทำอย่างไร
มันรวบรัดสวย แต่คุณอย่างแท้จริง เพียงแค่บอกว่าสิ่งที่คุณต้องการจะทำ
เลือกชื่อจากผู้ใช้ที่ ชื่อผู้ใช้เท่ากับลัน
และมันคือเรื่องจริงที่ชัดเจน
ดังนั้นตอนนี้ถ้าผมตีไปหลายวิธี แถวที่ฉันจะได้รับกลับมา?
หนึ่งเพราะมันเป็นเพียงลันหวังว่า
หรือศูนย์ถ้าเขาไม่ได้ มี แต่หนึ่งในที่สุด
>> และวิธีการหลายคอลัมน์ฉันจะได้รับกลับมา?
วิธีการหลายคอลัมน์?
เวลานี้ฉันแค่ไป จะได้รับหนึ่งเพราะผมไม่ได้
เลือกดาวซึ่งเป็นทุกอย่าง
ตอนนี้ฉันเลือกชื่อเพียงเพื่อให้ฉัน เพียงแค่ได้รับกลับมาหนึ่งคอลัมน์และแถวหนึ่ง
และมันก็ดูการจัดเรียงของที่เหมาะสม ไร้สาระเพียงแค่มองหาสุด
เล็ก ๆ เช่นนี้
ดังนั้นสิ่งที่เกิดขึ้นจริงเหรอ?
เมื่อคุณดำเนินการของ SQL โดยใช้แบบสอบถามเลือก
สิ่งที่คุณจะได้รับ กลับมาจากฐานข้อมูล
เป็นเหมือนตารางชั่วคราว มีแถวและคอลัมน์อาจจะ
แต่ที่เอาสิ่งที่ ไม่ได้รับเลือกจากคุณจริงๆ
ดังนั้นจึงเป็นเช่นถ้ามีคนมีขนาดใหญ่ สเปรดชีทของนักเรียนทุกคน
ลงทะเบียนสำหรับบางคน กลุ่มนักเรียนและคุณจะพูดว่า
ให้ฉันทั้งหมดของน้องที่ได้ ลงทะเบียนสำหรับกลุ่มนักเรียนของเราสิ่งที่
เพื่อนร่วมงานของคุณใน กลุ่มนักเรียนอาจจะทำ
คือพวกเขาก็สามารถมอบ คุณทั้งสเปรดชีท
ที่ชอบพูดว่าเลือกดาว
และมันเป็นที่น่ารำคาญเล็ก ๆ น้อย ๆ ถ้า คุณเพียงต้องการน้อง
ดังนั้นถ้าคุณแทนกล่าวว่า เลือกดาวจากตารางฐานข้อมูล
ที่เท่ากับปี อ้างน้องได้นำมาอ้าง,
มันเหมือนกับว่าเพื่อนของคุณ ในกลุ่มนักเรียน
เน้นตัวอักษรและ คัดลอกเฉพาะแถวน้อง
วางไว้ใน Google ใหม่ สเปรดชีตหรือแฟ้ม Excel
และส่งกลับมาที่คุณ แฟ้มผลเท่านั้น
นั่นคือทั้งหมดที่เกิดขึ้น บนแนวคิดที่นี่
>> ดังนั้นในท้ายที่สุดที่เราสามารถทำได้ บางสิ่งบางอย่างแฟนซีสวย
โดยการจัดเก็บสิ่งที่ชอบชื่อผู้ใช้ และรหัสผ่านและไม่ชอบ
แต่มันจะเปิดออกที่เราควรทำ แตกต่างกันเล็กน้อยกว่านี้
มันไม่ได้ว่าสมาร์ทเท่านั้น เก็บชื่อผู้ใช้และรหัสผ่าน
ก่อนหน้านี้คนที่ผมคิดว่า ลงที่นี่แนะนำประชาชน
ตอนนี้ ID อาจจะเหมือน ฮาร์วาร์ประจำตัวประชาชนหรือบัตรประจำตัวเยลสุทธิของ
แต่มันอาจจะเป็นได้ง่าย ในกรณีที่ฐานข้อมูลของเรา
และแน่นอนกรณีที่พบบ่อย คือการมีคอลัมน์อื่น
และฉันจะไป ไปข้างหน้าและแก้ไขตารางของฉัน
และถ้าคุณเล่นรอบกับ อินเตอร์เฟซนี้สำหรับ PSet7,
คุณจะเห็นว่าคุณสามารถตรวจสอบ ปุ่มนี้ที่นี่และเพิ่ม
สนามที่จุดเริ่มต้นของตาราง
และตอนนี้ถ้าผมคลิกไปก็จะ จะให้ฉันหนึ่งในรูปแบบเหล่านั้น
จากก่อนหน้านี้
ฉันจะเพิ่มเขตข้อมูลที่เรียกว่า ID
และฉันจะทำให้มันเป็นประเภทที่เป็นตัวเลข
>> ผมมีทั้งกลุ่ม ของค่าสำหรับ numerics
ฉันแค่จะเลือก INT และ ไม่ต้องกังวลเกี่ยวกับขนาดที่แตกต่างกัน
ฉันไม่ได้มีการระบุ ความยาวหรือค่า
เพราะมันเป็นไปได้ 32 บิตไม่ว่าสิ่งที่
คุณลักษณะที่เราไม่ได้เห็นก่อน
ความสนใจในใด ๆ เหล่านี้ ตัวเลือกเมนูครั้งนี้หรือไม่
สำหรับ INT แล้ว?
สิ่งที่คุณไม่เสนอ?
ไม่ได้หรือไม่
ทำใด ๆ เหล่านี้ทำให้รู้สึก?
ใช่
ใช่ไม่ได้ลงนามใช่มั้ย?
>> โดยทั่วไปถ้าเรากำลังจะให้ ทุกคนเป็นจำนวนมากที่ไม่ซ้ำกันซึ่ง
เป็นที่ที่เรื่องนี้ก็คือ ไปผมเพียงต้องการ
คนที่จะมีหมายเลขเช่นศูนย์ และหนึ่งและสองและสามและสี่
ฉันไม่ต้องการที่จะจัดการ กับตัวเลขที่ติดลบ
มันก็ดูเหมือนว่าซับซ้อนเกินควร
ฉันต้องการสี่พันล้านค่าที่เป็นไปได้ ไม่ได้สี่พันล้านค่าที่เป็นไปได้
ดังนั้นฉันเพียงแค่สองเท่า ความจุของ INT ของฉัน
เช่นกันถ้าคุณต้องการที่จะสร้างความสัมพันธ์ นี้เพื่อบางสิ่งบางอย่างเช่น Facebook,
กลับมาอยู่ในการจัดเรียงของวันของฉันเมื่อ Facebook แรกออกมา
ผมเชื่อว่าสิ่งที่พวกเขา โดยใช้ฐานข้อมูล MySQL ในของพวกเขา
ในการจัดเก็บของผู้ใช้ ระบุเป็นเพียง INT
แต่แน่นอนว่ามีจำนวนมาก ของคนจริงในโลก
มีจำนวนมากของปลอมของ Facebook เป็น บัญชีในโลก
และเพื่อให้ในที่สุด Facebook ล้น ขนาดของ INT เป็นสี่พันล้าน
มูลค่า
ซึ่งเป็นเหตุผลที่ถ้าคุณดู ไปรอบ ๆ และมีเว็บไซต์
ที่สามารถบอกคุณว่า รหัสเฉพาะของคุณคือ
และถ้าคุณไม่เคยเลือกชื่อผู้ใช้ใน Facebook, คุณจะเห็นรหัสเฉพาะของคุณ
ฉันคิดว่ามันเป็นจุด PHP รายละเอียด ID เครื่องหมายคำถามเท่ากับบางสิ่งบางอย่าง
นั่นคือตอนนี้สิ่งที่ต้องการขนาดใหญ่ INT หรือนานถ้าคุณจะ
ซึ่งเป็นค่า 64 บิต หรือสิ่งที่เทียบเคียง
>> ดังนั้นแม้จะอยู่ในโลกแห่งความจริงทำสิ่งเหล่านี้ ประเด็นสำคัญบางครั้งในที่สุด
และมันจะเปิดออกจากที่นี่ถ้าฉัน ให้ทั้งหมดของผู้ใช้ของฉันที่ไม่ซ้ำกันประจำ
ฉันต้องการที่จะเป็นซุปเปอร์ที่ชัดเจนและ อย่างน้อยที่สุดทำให้ฟิลด์นี้ที่ไม่ซ้ำกัน
แต่มันกลับกลายเป็นมีหนึ่ง ชิ้นส่วนของระบบการตั้งชื่อในวันนี้มากเกินไป
ที่เป็นคีย์หลัก
หากคุณกำลังออกแบบฐานข้อมูล ตารางและคุณรู้ล่วงหน้า
ว่าหนึ่งในคอลัมน์ในตารางที่ ควรและไม่ซ้ำกันจะระบุแถว
ในตารางที่คุณต้องการ ระบุว่าและบอกฐานข้อมูล
นี้เป็นกุญแจสำคัญหลักของฉัน
อาจจะมีรายการที่ซ้ำกัน ในสาขาอื่น ๆ
แต่ฉันบอกว่าฐานข้อมูลนี้ เป็นหลักของฉันข้อมูลที่สำคัญที่สุดของฉัน
ที่รับประกันว่าจะไม่ซ้ำกัน
>> ตอนนี้ดูเหมือนว่าซ้ำซ้อน
ตอนนี้ฉันเสนอว่าเรา เพิ่มโดยการคลิกที่บันทึกนี่
called-- สนามและฉันจะ ไปข้างหน้าและคลิกไอ
เราจะกลับมา ว่าในช่วงเวลาที่ประหยัด
ฉันกำลังเสนอในขณะนี้ว่า ดูตารางของฉันเช่นนี้
ฉันมีสาขา INT เรียกประชาชน สนาม CHAR ที่เรียกว่าชื่อผู้ใช้
สนาม VARCHAR ที่เรียกชื่อ แต่ประชาชน ถ้าหากมันเป็นหลักและไม่ซ้ำกันจึง
ทำไมฉันเพิ่งเสีย เวลาแนะนำสิ่งที่
ได้อย่างมีประสิทธิภาพเป็นเอกลักษณ์ที่สอง เขตที่เรียกว่ารหัสที่เป็น INT?
>> ชื่อผู้ใช้เรียกคืนเป็น ที่ไม่ซ้ำกันแล้วเรากล่าวว่า
ดังนั้นเพียงแค่เหตุผลที่คุณไม่จำเป็น ประสบการณ์ฐานข้อมูลใด ๆ เหตุผล
ผ่านทางนี้ทำไม ฉันอาจจะได้แนะนำ
INT เป็นตัวระบุที่ไม่ซ้ำกันของฉันเช่นกันอยู่แล้ว?
สิ่งที่ this-- พูดอีกครั้ง?
>> ผู้ชม: [ไม่ได้ยิน]
>> DAVID ลัน: สุ่ม เข้าถึงได้ง่ายขึ้นทำไม?
>> ผู้ชม: [ไม่ได้ยิน]
DAVID ลัน: ใช่มัน เพียงแค่การเข้าถึงตัวเลข
ดังนั้นถ้าคุณคิดว่านี้อย่างแท้จริง ตารางเช่นอาร์เรย์
ตอนนี้ฉันมีระบุที่ไม่ซ้ำกัน ที่ฉันสามารถกระโดดไปรอบ ๆ
และดีกว่าที่ยังคงเป็นที่ วิธีการใหญ่เป็น INT ไปได้อีกครั้งหรือไม่
32 บิตหรือสี่ไบต์
>> วิธีการใหญ่เป็นชื่อของฉันจะเป็นอย่างไร
ที่สุด?
16 ไบต์
>> ดังนั้นหากคุณจริงๆดูแลเกี่ยวกับ ประสิทธิภาพการทำงานของรหัสของคุณ
คิดว่ากลับไป PSet5 คุณต้องการ เพื่อค้นหาค่าสี่ไบต์หรือ 16
ค่าไบต์ใช่มั้ย?
จริงๆมันเป็นง่ายๆเป็นว่า
ที่คุณต้องทำสี่เท่าการทำงานมาก เพื่อค้นหาชื่อผู้ใช้เพราะผู้
16 ไบต์
ดังนั้นคุณต้องแท้จริง เปรียบเทียบทั้งหมด 16 ไบต์จะเป็น
แน่ใจว่าใช่นี้เป็นชื่อที่ฉันต้องการ
ในขณะที่สำหรับ INT คุณสามารถ ทำมันด้วยเวลาเพียงสี่ไบต์
>> และเป็นกันสำหรับผู้ที่ สนใจในฮาร์ดแวร์คอมพิวเตอร์
มันจะเปิดออกคุณสามารถใส่สิ่งที่ต้องการ INT หรือค่า 32 บิตในบางสิ่งบางอย่าง
ที่เรียกว่าการลงทะเบียนในคอมพิวเตอร์ CPU ซึ่งหมายความว่ามันเป็นซุปเปอร์
เร็วสุดแม้ที่ต่ำที่สุด ระดับของฮาร์ดแวร์ของคอมพิวเตอร์
ดังนั้นมีเพียงข้อได้เปรียบที่อยู่รอบ ๆ
ดังนั้นสิ่งนี้หมายความว่าอย่างไร?
ในความเป็นจริงเมื่อคุณกำลังออกแบบ ตารางฐานข้อมูลเกือบตลอดเวลา
คุณจะไม่ได้ เพียงข้อมูลที่คุณดูแลเกี่ยวกับ
แต่ยังมีสิ่งที่ต้องการ ตัวระบุที่ไม่ซ้ำกัน
เพราะนี้เป็นไปได้ ให้เราทำสิ่งอื่น ๆ
และให้การเดินทางในช่วงหนึ่งปัญหาที่นี่
>> สมมติว่าผู้ใช้ไม่ได้ ชื่อผู้ใช้และเพียงแค่ชื่อ
แต่พวกเขายังมีสิ่งที่ต้องการเมือง และรัฐและรหัสไปรษณีย์อย่างน้อย
ที่นี่ในสหรัฐอเมริกา
ดังนั้นฉันจะไปข้างหน้า ได้อย่างรวดเร็วและเพียงแค่บอกว่า
ให้ฉันสามคอลัมน์อื่น ๆ ในตอนท้ายของตาราง
และนี่จะเป็นเมือง นี้เป็นไปได้ของรัฐ
และนี่จะเป็นซิป
>> ตอนนี้เมืองสิ่งที่ชนิดข้อมูล นี้ควรจะเป็นบางที?
VARCHAR?
ผมไม่ทราบว่าสิ่งที่ เมืองที่ชื่อยาวที่สุดคือ
ที่ไหนสักแห่งในอเมริกามี บางคำอาจจะยาวขัน
เพื่อให้เพียงไปกับ 255 ค่อนข้าง ในอดีตหรือโดยพลการ
รัฐสิ่งที่คุณต้องการจะทำอย่างไร?
สายการตัดสินใช่มั้ย?
สิ่งที่อาจจะมีประสิทธิภาพมากที่สุด?
วิธีการหลายตัวละคร?
อาจจะแค่สองถ้าเราสามารถ ได้รับไปกับการทำเพียงแค่
เช่น MA สำหรับแมสซาชูเซตและอื่น ๆ
ดังนั้นฉันจะไปเป็นค่า CHAR สอง
>> รหัสไปรษณีย์เป็นหนึ่งที่น่าสนใจ
เราอยู่ที่นี่ใน 02138 เพื่อให้ แสดงให้เห็นว่าเราควรจะใช้สิ่งที่?
มันเป็น INT ใช่มั้ย?
INT, INT สั้น?
สั้นจะทำงาน
ไม่ได้หรือไม่
CHAR หรือห้า แต่ฉันต้องการ INT
ทำไมผลักดันกลับใน INT แล้ว?
ชักชวนให้ฉันจากนี้
มีอะไรโง่เกี่ยวกับ INT ความคิดของฉันได้อย่างไร
ใช่
>> ผู้ชม: ใช้หน่วยความจำมากขึ้น
>> DAVID ลัน: ใช้หน่วยความจำมากขึ้น
สี่ไบต์ แต่คุณ เสนอรหัสไปรษณีย์
ห้าไบต์หรือคนที่เป็น CHAR ที่ ซึ่งให้ความรู้สึกเหมือนมั้ยที่ไม่ได้จริงๆ
กรณี.
>> ดีเรื่องสนุก
ปีที่ผ่านมาเมื่อผมเคยใช้ Microsoft Outlook สำหรับอีเมลของฉัน
ในที่สุดผมอยากจะเปลี่ยนไปใช้ Gmail
และเพื่อให้ผมส่งออกทั้งหมดของฉัน รายชื่อผู้ติดต่อจาก Outlook เป็นไฟล์ CSV
คั่นด้วยเครื่องหมายจุลภาค, ซึ่งหมายความว่าเพียงแค่ฉัน
มีชื่อที่เพื่อน ๆ ทุกคนและครั้งสุดท้าย ชื่อและหมายเลขโทรศัพท์และรหัสไปรษณีย์
และทุกที่
แล้วฉันทำ ความผิดพลาดของการเปิดมันขึ้นมา
ใน Excel ซึ่งเป็น โปรแกรมสเปรดชีตที่
เข้าใจ CSV ไฟล์ที่เราเคยเห็น
แต่แล้วก็ต้องมีการตีเช่น คำสั่งหรือการควบคุม S เมื่อถึงจุดหนึ่ง
และ Excel เห็นได้ชัดในเวลา มีคุณลักษณะโดยเวลาใดก็
เห็นเป็นจำนวนมากก็พยายามที่จะเป็นประโยชน์
และถ้าตัวเลขที่เริ่มต้นด้วย ศูนย์ก็แค่จะกำจัดของพวกเขา
ทำไมคุณต้องชั้นนำ ศูนย์ในจำนวนเต็ม?
พวกเขากำลังความหมายทางคณิตศาสตร์
พวกเขาไม่ได้มีความหมาย ในสหรัฐอเมริการะบบไปรษณีย์
ดังนั้นฉันได้มีมานานหลายปี จนถึงวันนี้ผมยัง
เพื่อนที่มีเมื่อ กรณีที่หายากที่ฉันต้องการใครบางคน
ที่อยู่วันนี้ ฉันจะยังคงเห็นว่าผม
มีเพื่อนในเคมบริดจ์ที่ แมสซาชูเซต 2138
และมันก็เป็นที่น่ารำคาญถ้าคุณ พยายามที่จะเรียงลำดับของโปรแกรม
สร้างซองจดหมายหรือเพียงแค่จดมันลง
และนั่นก็เป็นเพราะเหตุผลนี้ ผมเลือกชนิดของข้อมูลที่ไม่ถูกต้อง
ดังนั้นฉันรักความคิดของคุณ
ลองใช้สนามถ่าน
ห้าตัวละครยกเว้น มีกรณีมุม
หากคุณยังส่งจดหมาย บางครั้งรหัสไปรษณีย์วันนี้
พวกเขากำลังเช่นบวกสี่
ดังนั้นเราต้องยัติภังค์แล้ว เราจำเป็นต้องมีตัวเลขสี่มากขึ้น
ดังนั้นจะซื่อสัตย์มันอาจ ไปตามทางที่แตกต่างกัน
>> สำหรับตอนนี้ฉันจะให้ มันง่ายและฉันแค่
จะพูดว่ามันเป็น ห้าค่า CHAR และเรา
จะข้ามเส้นประทั้งบวกสี่
แต่เหล่านี้เป็นชนิดของความสมดุล
และคุณสามารถคิด ปัญหาที่เกิดขึ้นเหมือนกัน
มีหมายเลขโทรศัพท์หรือสาขาอื่น ๆ
>> และตอนนี้เป็นจริง ถนนโง่ที่จะลงไป
สมมติว่าทั้งร็อบและฉันและฮันนาห์ และมาเรียและ [? Davon?] และแอนดี้
และคนอื่น ๆ ในพนักงานทุกคนอาศัยอยู่ ในเคมบริดจ์, แมสซาชูเซต 02138
นี้ที่จริงรู้สึกโง่ว่าฉัน เพิ่มในตารางผู้ใช้ของฉัน, เมือง, รัฐ,
และไปรษณีย์
ทำไม?
>> ผู้ชม: [ไม่ได้ยิน]
>> DAVID ลัน: Say อีกครั้งหรือไม่
ผู้ชม: [ไม่ได้ยิน]
>> DAVID ลัน: พวกเขากำลังเสมอ จะไปด้วยกันใช่มั้ย?
เมื่อมันจะเปิดออกที่เราเคยคิดว่า นี้เป็นกรณีที่จนกว่าเราจะละเอียดถี่ถ้วน
ค้นหาทั้งสหรัฐอเมริกา และปรากฎว่ามี
มีความไม่สอดคล้องกันบางอย่าง ที่มีหลายเมือง
ซิปเดียวกันซึ่งเป็นลาง
แต่ถ้าเรากำหนดสำหรับตอนนี้ที่ 02138 อยู่เสมอเคมบริดจ์, แมสซาชูเซต
ทำไมในโลกที่คุณจะเก็บไว้ใน ฐานข้อมูลของคุณและเคมบริดจ์แมสซาชูเซตและ 02138
สำหรับผมและสำหรับฮันนาห์และร็อบและ สำหรับ [? Davon?] และอื่น ๆ ที่อาศัยอยู่
ที่นี่ในเคมบริดจ์ก็ อย่างสมบูรณ์แบบซ้ำซ้อน
>> เราควรจะได้รับไป มีเพียงการจัดเก็บสิ่งที่?
เพียงแค่รหัสไปรษณีย์
แต่แล้วถ้าเราเก็บเพียง รหัสไปรษณีย์ผมไม่ต้องการที่อาจจะ
สำหรับเว็บไซต์ของฉันที่จะทราบว่าเป็น 02138
ดังนั้นฉันจึงต้องตารางอื่น
และที่ตกลง
และในความเป็นจริงนี้เป็นหนึ่งใน กระบวนการการออกแบบของตารางการออกแบบ
ที่คุณจะทำอย่างไรใน PSet7 เช่นกันโดย คุณต้องการที่จะเป็นปัจจัยจากข้อมูลร่วม
เช่นเดียวกับที่เราได้รับจากแฟ รหัสร่วมกันและร่วมกันออกแฟ
รูปแบบจาก CSS ที่นี่ เกินไปในฐานข้อมูล
ถ้าฉันเพียงต้องการที่จะไม่ซ้ำกัน 02138 ระบุบ้านเกิดของใครบางคน
ไม่เก็บ Cambridge, Mass สำหรับ ผู้ใช้ทุกยี้ในตารางของคุณ
>> แต่มีตารางแยกต่างหากที่เรียกว่า บีบอัดข้อมูลที่ควรมีสิ่งที่คอลัมน์?
น่าจะเป็นสนามประจำตัวประชาชนเพียงเพราะสำหรับ หลักการที่เรากำลังพูดถึงในขณะนี้
น่าจะเป็นสนามซิปสำหรับ 02138
และจากนั้นก็อาจเป็นสิ่งที่คอลัมน์อื่น ๆ ?
เมืองและรัฐ แต่มีเพียงหนึ่ง แถวสำหรับ 02138 หนึ่งแถวสำหรับ 02139,
หนึ่งแถวสำหรับ 90210
และที่เป็นตัวอักษร ทุกรหัสไปรษณีย์ฉันรู้ว่า
>> ดังนั้นตอนนี้สิ่งที่คุณสามารถทำอะไร?
นี่คือปัญหาเพราะ ตอนนี้ฉันมีสองตาราง
ดังนั้นผู้ใช้ส่วนใหญ่จะเป็นของฉันมากกว่าที่นี่ แต่ข้อมูลของรัฐเป็นเมืองของพวกเขา
มากกว่าที่นี่
ดังนั้นก็จะเปิดออกกับ SQL มี จริงวิธีการเข้าร่วมข้อมูล
และคุณจะเห็นใน PSet
>> แต่มันกลับกลายเป็นคุณสามารถ ทำอะไรเช่นนี้
ดาวเลือกจากผู้ใช้เข้าร่วมซิปบน ผู้ใช้จุดซิปซิปเท่ากับจุดรหัสไปรษณีย์
ซึ่งเป็นคำเล็ก ๆ น้อย ๆ เป็นที่ยอมรับ แต่เพียงแค่นี้
หมายถึงการเลือกทุกอย่างจาก กระบวนการของการตารางผู้ใช้ของฉัน
และโต๊ะรหัสไปรษณีย์ของฉัน
เข้าร่วมกับพวกเขาในหนึ่ง สนามที่พวกเขามีในคอลัมน์
ดังนั้นแท้จริงทำอะไรบางอย่าง เช่นนี้และให้ฉันกลับ
ตารางชั่วคราวใหม่ ที่กว้างที่ใหญ่กว่า
ที่มีทั้งหมดของ คอลัมน์จากทั้งของพวกเขา
และที่ค่อนข้างง่ายที่จะเป็น ไวยากรณ์สำหรับทำอะไรเช่นนี้
>> จึงมีนี้ไปข้างหน้า แต่มีที่เกิดขึ้น
ที่จะมีการตัดสินใจการออกแบบอื่น ๆ ที่คุณจะ จะต้องทำไม่เพียง แต่มีการจัดทำดัชนี
แต่ยังทำงานเป็นความท้าทาย
ในความเป็นจริงมีความท้าทาย ในการออกแบบฐานข้อมูลใด ๆ
โดยบางครั้งคนสองคนอาจต้องการ ในการเข้าถึงแถวเดียวกันของฐานข้อมูล
ตาราง.
ดังนั้นนี้คือสิ่งที่เราจะ พบในการ PSet7 เช่นกัน
>> แต่ฉันคิดว่าฉันมองไปที่หนึ่ง การโจมตีที่เป็นไปได้ใน SQL
อะไรคือบางส่วนของ ปัญหาที่จะเกิดขึ้น?
ดังนั้นคุณจะพบใน PSet7
และเราบอกคุณได้ทันทีว่า วิธีการแก้ปัญหาการเขียนโปรแกรมสำหรับปัญหานี้คือ
แต่ถ้าคุณจะเรียนระดับที่สูงขึ้น โดยเฉพาะอย่างยิ่งในระบบปฏิบัติการ
คุณกำลังจะไปพบ ปัญหาของ atomicity ที่
ปัญหาของการพยายามที่จะทำ หลายสิ่งทั้งหมดในครั้งเดียว
โดยไม่หยุดชะงัก
>> และฉันคิดว่าฉันแนะนำนี้ ความคิดสำหรับ PSet7 กับอุปมา
ผมได้เรียนรู้ว่าตัวเองอยู่ใน Margo โซดา CS164 ของระบบปฏิบัติการ
ชั้นปีที่ผ่านมา
สมมติว่าคุณมีหนึ่งในหอพักเหล่านี้ ตู้เย็นในห้องพักหอพักหรือบ้าน
และคุณมีใจชอบจริงสำหรับนม
และเพื่อให้คุณมาที่บ้านจากชั้นเรียน วันหนึ่งคุณเปิดตู้เย็น
โอ้ด่ามัน
มีนมในตู้เย็นไม่ได้
ดังนั้นคุณปิดตู้เย็น ล็อคประตูล็อคหอพักของคุณ
เดินไปรอบ ๆ มุม CVS จะได้รับในแถว
และเริ่มต้นการตรวจสอบจากนมบางส่วน
และมันจะใช้เวลาในขณะที่ เพราะการชำระเงินด้วยตนเองแช่งเหล่านั้น
เคาน์เตอร์ใช้เวลาตลอดการใช้งานอยู่แล้ว
ดังนั้นในขณะที่เพื่อนร่วมห้องของคุณมาที่บ้าน
เขาหรือเธอชอบนมได้เป็นอย่างดี
พวกเขาเข้ามาในห้องพักหอพักที่ เปิดตู้เย็นโอ้สาปมัน
ไม่มีนมมากขึ้น
>> ดังนั้นเขาหรือเธอ ไปรอบมุม
แต่ตอนนี้เนื่องจากมีเหมือนสอง หรือสามหรือสี่ CVSes ในบริเวณใกล้เคียง
พวกเขาเกิดขึ้นที่จะไปให้เป็นหนึ่งใน คนที่แตกต่างกันในตาราง
ดังนั้นตอนนี้ไม่กี่นาที ต่อมาทั้งสองของคุณ
มาที่บ้านและฮึปัญหาที่เลวร้ายที่สุดที่เคย
ตอนนี้คุณมีนมมากเกินไป เพราะมันจะไปเปรี้ยว
และคุณชอบดื่มนม แต่คุณ ไม่ชอบดื่มนม
>> ดังนั้นตอนนี้ก็มีราคาแพง ความผิดพลาดเพราะคุณทั้งสอง
ทำให้การตัดสินใจขึ้นอยู่กับที่ รัฐของตัวแปรบางอย่างที่
อยู่ในขั้นตอนของ การเปลี่ยนแปลงโดยคุณ
ริเริ่มของจะได้รับนม
ดังนั้นสิ่งที่อาจจะเป็นมนุษย์ วิธีการแก้ปัญหาที่?
ผู้ชม: [ไม่ได้ยิน]
DAVID ลัน: ฝากทราบใช่มั้ย?
มักจะออกจากบันทึกถ้าคุณ คุ้นเคยกับการแสดงให้เห็นว่า
ใช่มีเราสองคน
ดังนั้นมักจะออกจากบันทึกหรือ อักษรล็อคตู้เย็น
กับชนิดของกุญแจหรือบางส่วน บางสิ่งบางอย่างไปด้านบนเช่นนั้น
แต่ที่จริงไปได้ ปัญหาที่สำคัญที่มีการออกแบบฐานข้อมูล
โดยเฉพาะอย่างยิ่งเมื่อคุณอาจมี เบราว์เซอร์หลายแล็ปท็อปหลาย
ผู้ใช้หลายคนทั้งหมดพยายามที่จะ อัปเดตข้อมูลในครั้งเดียว
โดยเฉพาะอย่างยิ่งข้อมูลที่สำคัญ เช่นเดียวกับข้อมูลทางการเงิน
โดยกับการซื้อขายหุ้น เว็บไซต์เช่นคุณจะสร้าง
ถ้าคุณต้องการที่จะตรวจสอบเงินเท่าไหร่ คุณมีแล้วถ้าคุณมีพอ
ซื้อหุ้นบางอย่าง?
>> แต่ถ้าคนอื่นที่ มีบัญชีร่วมกับคุณ
เป็นพร้อมกันพยายาม ที่จะซื้อหุ้นบางอย่าง?
ดังนั้นเขาหรือเธอจะตรวจสอบ ยอดเงินในบัญชีทั้งของคุณ
ได้รับกลับมาเหมือนเดิม ตอบมีนมไม่
หรือทั้งสองคุณได้รับกลับคำตอบ คุณมี $ 100 ในบัญชี
คุณทั้งสองพยายามที่จะทำให้การตัดสินใจ ที่จะซื้อหุ้นของหุ้นของ บริษัท บางส่วน
>> และตอนนี้สิ่งที่เกิดขึ้น?
คุณมีสองหุ้น?
คุณมีหุ้นไม่?
ปัญหาเช่นที่เกิดขึ้นได้
ดังนั้นเราจะพบว่า
SQL โจมตีฉีดขอบคุณมาก ๆ เป็นสิ่งที่เราจะช่วยให้คุณด้วย
แต่เหล่านี้เป็นอย่างทารุณ ธรรมดาวันนี้ยังคง
ดังนั้นนี้เป็นเพียงตัวอย่าง
ฉันจะทำให้การเรียกร้องไม่ว่า ระบบ PIN ฮาร์วาร์
เสี่ยงต่อการโจมตีนี้โดยเฉพาะ
เราได้พยายาม
แต่คุณรู้ว่าเรา มีสนามเช่นนี้
และบัตรประจำตัวสุทธิเยลมีที่คล้ายกัน มองหน้าจอวันนี้
และมันจะเปิดออกที่อาจจะ ระบบ PIN จะดำเนินการใน PHP
>> และถ้ามัน were-- มัน not-- พวกเขา อาจจะมีรหัสที่มีลักษณะเช่นนี้
พวกเขามีสองตัวแปร
ให้ฉันชื่อผู้ใช้และรหัสผ่าน จากการโพสต์สุดตัวแปรโลก
ที่เราพูดคุยเกี่ยวกับก่อนหน้านี้
ฮาร์วาร์อาจจะมีแบบสอบถาม เหมือนดาวเลือกจากผู้ใช้
ที่ชื่อผู้ใช้เท่ากับว่า และรหัสผ่านเท่ากับว่า
และสังเกตเห็นว่าฉันแค่ เสียบในการใช้
สัญกรณ์วงเล็บปีกกาจากที่อื่น ๆ วันซึ่งหมายความว่าเพียงแค่เสียบในค่า
ที่นี่
ฉันไม่ได้ใช้ เทคนิคเครื่องหมายคำถาม
ฉันไม่ได้มีสองใด ๆ หรือข้อโต้แย้งที่สาม
ฉันแค่ตัวอักษร สร้างสตริงตัวเอง
>> ปัญหาที่เกิดขึ้น แต่เป็นที่ ถ้ามีคนชอบ scroob ที่
ซึ่งมีการอ้างอิงถึงภาพยนตร์ เข้าสู่ระบบด้วยบางสิ่งบางอย่างเช่นนี้
และผมได้ลบจุด ที่มักจะปกปิด
รหัสผ่านสิ่งที่ถ้าเขาเป็น โดยเฉพาะอย่างยิ่งที่เป็นอันตราย
และรหัสผ่านของเขาอาจจะเป็น 12345 ต่อภาพยนตร์ที่เรียกว่า "Spaceballs"
แต่เขาฉกรรจ์ประเภท คำพูดเดียวหลังจากที่ห้า
แท้จริงแล้วคำว่าหรือ ในพื้นที่แล้วอ้าง
ได้นำมาอ้างหนึ่งเท่ากับหนึ่งอ้าง แต่สังเกตเห็นเขามองข้ามสิ่งที่?
เขาอ้างละเว้นด้านขวา และเขาก็มองข้ามคำพูดทางด้านซ้าย
>> เพราะถ้าโจมตีนี้ ข้อสันนิษฐานของ scroob
คือว่าคนที่เขียน โค้ด PHP นี้ไม่สดใสเช่นนั้น
บางทีพวกเขาเพียงแค่มีบางอย่างเดียว คำพูดรอบการแก้ไข
ของตัวแปรในวงเล็บปีกกาหรือไม่?
ดังนั้นบางทีที่เขาสามารถทำได้ชนิด การดำเนินการคิดของพวกเขา
สำหรับพวกเขา แต่ในทางที่จะ เพื่อให้เขาเจาะเข้าระบบรหัส PIN
ในคำอื่น ๆ คิดว่า ว่านี่คือรหัส
และตอนนี้เราเสียบสิ่ง scroob พิมพ์
และมันก็เป็นสีแดงเพราะมันไม่ดี
>> และข้อความที่ขีดเส้นใต้ คือสิ่งที่เขาพิมพ์ใน
scroob สามารถหลอกลวงเซิร์ฟเวอร์ของฮาร์วาร์ ลงไปในการสร้างแบบสอบถาม SQL
สตริงที่มีลักษณะเช่นนี้
รหัสผ่านเท่ากับ 12,345 หรือเท่ากับหนึ่ง
ผลมาจากการที่มีเหตุผล อยู่ที่นี้จะเข้าสู่ระบบ scroob
หากรหัสผ่านของเขาก็คือ 12345 หรือถ้าหนึ่งเท่ากับ
หนึ่งซึ่งเป็นหลักสูตรที่จริงเสมอ ซึ่งหมายความว่า scroob เคยได้รับใน
>> ดังนั้นวิธีการแก้ไข นี้เช่นเดียวกับในหลายกรณี
จะเขียนมากขึ้น defensively
ใช้สิ่งที่ต้องการของเรา ฟังก์ชั่นแบบสอบถามที่เกิดขึ้นจริงซึ่ง
คุณจะเห็นใน PSet7 ที่เราเสียบ สิ่งที่ต้องการเครื่องหมายคำถามที่นี่
และความงามของ ฟังก์ชั่นการสอบถามที่เรา
ให้มันปกป้องเหล่านี้ ที่เรียกว่าการโจมตีแบบ SQL injection ที่
มีใครหลอกรหัสของคุณลงใน ฉีดของเขาหรือ SQL รหัสของเธอเอง
เพราะสิ่งที่ฟังก์ชั่นการค้นหา เราจะให้คุณจริงจะทำ
ถ้าคุณใช้คำถามไวยากรณ์เครื่องหมาย และเป็นครั้งที่สองและอาร์กิวเมนต์ที่สามที่นี่
คือสิ่งที่มันเพิ่ม การป้อนข้อมูลว่าผู้ใช้บริการที่มีให้?
คำพูดเหล่านั้นเครื่องหมาย
>> ดังนั้นจึงหนีใด ๆ ที่อาจเกิดขึ้น ตัวละครที่เป็นอันตราย
นี้มีลักษณะแปลก ๆ ตอนนี้ แต่ก็ไม่ได้มีความเสี่ยง
เพราะมันไม่ได้ เปลี่ยนตรรกะอีกต่อไป
เพราะรหัสผ่านทั้งที่เป็น ตอนนี้คำพูดเดียวที่ไ​​ม่ได้
ในความเป็นจริงของรหัสผ่าน scroob
ดังนั้นมีการบางเรื่องตลก เกี่ยวกับเรื่องนี้ในช่วงหลายปี
ดังนั้นนี้เป็นภาพที่ถ่าย ของ geek บางในลานจอดรถ
โดยคุณอาจจะรู้ว่าบางเมือง และรัฐพยายามที่จะสแกนใบอนุญาตของคุณ
แผ่นเพื่อเรียกเก็บเงินคุณหรือตั๋วคุณ ถ้าคุณไปโดยไม่ชอบ
สิ่งที่ E-Z ผ่าน
ดังนั้นคนนี้สันนิษฐานว่าอาจจะ คนเขียน E-Z ผ่านระบบ
ไม่สดใสมากและบางทีพวกเขา ตัดแบ่งเพียงแค่ร่วมกันสตริง
เพื่อที่เขาหรือเธออาจจะไม่ได้มีเจตนาร้าย ไม่ได้เป็นเพียงความคิดที่สมบูรณ์ของพวกเขา
แต่ที่จริงแล้วดำเนินการคำสั่งที่ไม่ดี ซึ่งเราได้ไม่ได้กล่าวถึงยัง
แต่คุณอาจจะสามารถคาดเดา
ที่นอกเหนือไปจากการลบและ แทรกและปรับปรุงและเลือก
นอกจากนี้ยังมีคำหลักที่เรียกว่าลดลง ที่แท้จริงลบทุกอย่าง
ในฐานข้อมูลซึ่ง โดยเฉพาะอย่างยิ่งไม่ดี
>> เราสามารถซูมในนี้ถ้า มันเป็นเพียงเล็กน้อยยากที่จะเห็น
ซึ่งตอนนี้เป็นการ์ตูนที่มีชื่อเสียง ที่ฉลาดอย่างน่าพิศวงในขณะนี้
และเข้าใจ
>> [LAUGHTER]
>> ใช่เย็น
ชนิดของ geeking ออก
ดังนั้นเหล่านี้แล้วเป็น SQL โจมตีฉีด
และพวกเขากำลังเพื่อง่ายต่อการหลีกเลี่ยงโดยใช้ รหัสที่ถูกหรือห้องสมุดที่เหมาะสม
และคุณจะเห็นใน PSet7 ที่ เหตุผลที่เราให้คุณฟังก์ชั่นการค้นหา
ดังนั้นคู่ของทีเซอร์ ที่เราคิดว่าเราต้องการ
ให้คุณที่นี่ในของเรา นาทีที่เหลืออยู่ด้วยกัน
ดังนั้นที่คุณจำได้จากสัปดาห์ที่ศูนย์เรา แนะนำทั้งสองหลอดไฟที่
จะดีไม่เพียงเพราะ พวกเขากำลังสวยและมีสีสัน
แต่เพราะพวกเขาสนับสนุนบางสิ่งบางอย่าง เรียกว่า API, แอพลิเคชัน
อินเตอร์เฟซการเขียนโปรแกรมและ ใน CS50 ป่านนี้เราได้
ส่วนใหญ่จะมุ่งเน้นไปที่ GET และ โพสต์ แต่ก็จะเปิดออก
มีกิริยา HTTP อื่น ๆ เช่น PUT
>> และในความเป็นจริงนี้เป็น ภาพนิ่งจากสัปดาห์ที่ศูนย์
โดยถ้าคุณเขียนรหัสที่ส่ง ลา PSet6 ร้องขอ HTTP ที่
ลักษณะเช่นนี้กับก้อนของข้อความนี้ ที่ด้านล่างซึ่งเรียกว่า JSON,
หรือ JavaScript Object สัญลักษณ์ ที่เราจะพูดถึงในสัปดาห์หน้า
คุณสามารถเปิดหรือปิดหรือเปลี่ยน สีของไฟเช่นเดียวกับที่
ดังนั้นหาก CS50 ยังมีนอกเหนือไปบางส่วน หลอดไฟเหล่านั้นที่นี่ในนิวเฮเวน
ถ้าคุณต้องการที่จะยืม พวกเขาสำหรับโครงการสุดท้าย
ยังมีบางส่วนไมโครซอฟท์ วงดนตรีที่เป็นเหมือน
นาฬิกาที่คุณสวมรอบข้อมือของคุณ ในทำนองเดียวกันที่มี API เพื่อให้คุณ
สามารถเขียนซอฟแวร์ของคุณเองสำหรับพวกเขา
>> เรามีบัญชีที่มี รหัส iOS ของแอปเปิ้ลเพื่อให้
ว่าถ้าคุณมีแอปเปิ้ลหรือดู iPhone หรือ iPad หรือ iPod,
คุณสามารถเขียนโค้ดที่ จริงทำงานในบรรดา
เรามีทั้งกลุ่ม ของ Arduinos ซึ่งเป็น
คอมพิวเตอร์เล็ก ๆ โดยไม่ต้องกรณีเป็นหลัก
ที่คุณสามารถเชื่อมต่อผ่านทาง USB โดยทั่วไปของคุณเอง Mac หรือ PC,
เขียนรหัสที่รันบนทางกายภาพเหล่านี้ อุปกรณ์ที่มักจะมีเซ็นเซอร์อยู่กับพวกเขา
เพื่อให้คุณสามารถมีปฏิสัมพันธ์กับโลกแห่งความจริง
เรามีทั้งกลุ่ม อุปกรณ์ Leap เคลื่อนไหว
ซึ่งเป็นอุปกรณ์ USB สำหรับแม็คและ เครื่องคอมพิวเตอร์ที่นี่และอีกครั้งในนิวเฮเวน
และถ้าคุณเชื่อมต่อกับ Mac ของคุณ คุณจริงสามารถควบคุมคอมพิวเตอร์ของคุณ
โดยการเขียนซอฟแวร์ ที่ผ่านลำแสงอินฟราเรด
ตัวเลขออกมาที่มือของมนุษย์ของคุณมี ได้โดยไม่ต้องสัมผัสแป้นพิมพ์ของคุณ
เราคิดว่าเราต้องการแบ่งปันอย่างรวดเร็ว เหลือบนี้เช่น
>> [เล่นเพลง]
ดังนั้นเรามีทั้งหมด พวงของสิ่งเหล่านี้
เกินไปที่เรียกว่าวงดนตรีที่แขน Myo ที่คุณใส่ในช่วงปลายแขนของคุณ
และจากนั้นคุณสามารถควบคุมจริง โลกหรือโลกเสมือนจริงเช่นนี้
>> [เล่นเพลง]
หรือเรายังมีบางส่วนของ Google กระดาษแข็งที่เป็นตัวอักษรเช่น
กล่องกระดาษแข็งคุณสามารถใส่บน ใบหน้า แต่ภาพนิ่งในโทรศัพท์ของคุณเป็นมัน
เพื่อที่คุณจะใส่แก้วของคุณ โทรศัพท์จริงใกล้เคียงกับดวงตาของคุณ
และ Google เป็นกระดาษแข็ง สวยราคาถูกที่ $ 10 หรือ $ 20
และก็จะมีเลนส์เล็ก ๆ น้อย ๆ ที่ปิดเปลี่ยนแปลงเล็กน้อย
ภาพบนหน้าจอสำหรับมนุษย์ ตาที่ให้ความรู้สึกของความลึก
เพื่อที่คุณจะมี 3 มิติ สภาพแวดล้อมในหน้าของคุณ
นอกจากนี้เรายังมีบางอย่างที่ซัมซุงเกียร์ซึ่ง เป็นรุ่นที่มีราคาแพงกว่านี้
แต่ที่เหมือนกันสามารถเลื่อนใน โทรศัพท์ Android และให้ภาพลวงตา
of-- หรือให้ประสบการณ์ ความเป็นจริงเสมือน
และในสองนาทีสุดท้ายของเรา เราคิดว่าเราจะพยายามที่จะทำเช่นนี้
ถ้าฉันสามารถฉายภาพสิ่งที่มีการตัดสินใจ ที่นี่เพียงเพื่อกระตุ้นความอยากอาหารของคุณ
ให้ฉันไปข้างหน้าและโยน ขึ้นมาบนหน้าจอขนาดใหญ่ที่นี่
ให้ฉันฆ่าไฟ
โคลทันที่คุณต้องการจะไปข้างหน้า และวางบนมือถือของคุณสักครู่
และมาในการไปที่ กลางเวที?
และคุณต้องการโครงการที่ท่านสนใจ นี่คือสิ่งที่ Colton เห็น
>> ตอนนี้ Wi-Fi ในที่นี่คือ ไม่แข็งแรงดังนั้นสำหรับอุปกรณ์นี้
ว่าเรื่องนี้เป็นที่น่าสนใจสุด แต่การตัดสินใจที่เป็นตัวอักษร
ในสถานที่แห่งอนาคตนี้มีมนต์ขลัง
เขาเห็นภาพหนึ่งภาพ
คุณจะเห็นตาข้างซ้ายและขวาของเขา ว่าสมองของเขาจะถูกเย็บเข้าด้วยกัน
ในสามมิติ สภาพแวดล้อมบนใบหน้าของเขา
เขาเพียงแค่เลือกตัวเลือกเมนูที่นี่
และอื่น ๆ อีกครั้งเขาสวมชุดหูฟังนี้ กับโทรศัพท์ซัมซุงกับมันว่าเป็น
แบบไร้สายที่ยื่นออกไปเหนือศีรษะของเรา
ตอนนี้คุณกำลังอยู่บนดาวอังคารผมคิดว่า?
COLTON: ฉันคิดอย่างนั้น
ผมไม่แน่ใจว่า [ไม่ได้ยิน]
[LAUGHTER]
>> DAVID ลัน: เปิดออก ดาวอังคารมีเมนูเหล่านี้
>> COLTON: [ไม่ได้ยิน] บางเย็น สถานที่ถ้าเราต้องการที่จะไป to--
>> DAVID ลัน: เราต้องการที่จะไปที่ไหน?
>> COLTON: [ไม่ได้ยิน]
DAVID ลัน: และเรามาดู ที่การตัดสินใจของเราในขณะนี้การ
COLTON: [ไม่ได้ยิน]
>> DAVID ลัน: ดังนั้นมีจำนวนมากดังนั้น สถานที่ต่าง ๆ ที่คุณสามารถใช้ตัวเอง
มี FAPIs เป็นผ่านที่คุณสามารถ เขียนเกมหรือการโต้ตอบที่
ทำงานที่สุดบนโทรศัพท์มือถือ
ดังนั้นคุณจริงๆเพียงแค่ เขียนแอพพลิเคโทรศัพท์มือถือ
แต่ด้วยซอฟแวร์ และความสามารถด้านกราฟิก,
ตอนนี้การตัดสินใจที่อยู่ในนี้ กระท่อมเล็ก ๆ
และที่มีความเสี่ยงของ ครอบงำตัวเอง
Colton และฉันจะติดรอบ ในขณะที่ในตอนท้ายของการเรียนที่นี่ในวันนี้
ถ้าคุณต้องการที่จะเกิดขึ้นและเล่น
และเราจะนำพวกเขา กลับมาในสัปดาห์หน้าเช่นกัน
โดยไม่ต้องต่อไปกังวลใจ ที่มันสำหรับวันนี้
เราจะเห็นคุณในสัปดาห์ถัดไป
>> [ดนตรี - Ragga ฝาแฝด "BAD MAN"]