>> R.J. กัว: ขอเพียงเริ่มต้น
ดังนั้นนี่คือแบบทดสอบ 1
นี่คือบางข้อมูลระดับสูง
หน้าเกี่ยวกับการตอบคำถามที่นี้ URL ที่ไม่ CS50.net แต่ที่
จะยังคงทำงาน
มัน CS50.harvard.edu/quizzes/2013/1
มันใหญ่เกี่ยวกับหน้าบอกคุณ ที่ไหนและเมื่อใดคือวันพุธ
ในเครือของห้องพัก
และต่อไปวันพุธที่ฉัน หมายถึงสองวันนับจากนี้
ข้อมูลทั้งหมดนี้จะมี
แต่มันจะสะสม
>> เพื่อให้ทุกอย่างจากครึ่งแรกของปี ปีอาจเป็นที่ตอบคำถาม
เพราะคุณไม่สามารถทำจริงๆขั้นสูง สิ่งที่ใน C โดยไม่ต้องถ้าเงื่อนไขและ
กับลูปและชอบ
แต่จะมีความสำคัญกับ วัสดุที่ครอบคลุมตั้งแต่การทดสอบ 0
ที่เริ่มต้นด้วย structs และไฟล์ I / O มันมักจะมี
ที่ท้าทายกว่าแบบทดสอบ 0
คะแนนเฉลี่ยลดลงเป็นปกติ
เรียนอย่างหนัก
>> ขณะที่คุณกำลังศึกษาให้แน่ใจว่าได้ใช้ CS50/discuss โพสต์คำถามของคุณ
และอ่านคำถามของคนอื่น
ดังนั้นถ้าคุณไม่ได้มีข้อสงสัยใด ๆ เข้าสู่ระบบและอ่าน
คำถามของเพื่อน
พวกเขาอาจจะเป็นคำถามที่ดี
และใช้แบบทดสอบการปฏิบัติ
เราได้รับการให้แบบทดสอบเพื่อ เจ็ดหรือแปดปีแล้ว
พวกเขากำลังออนไลน์ทั้งหมด
คำถามในอนาคตที่มีความคล้ายคลึง คำถามเก่า
นั่นคือวิธีการที่เราทำให้พวกเขา
>> คำถามที่ยังไม่ปรากฏอยู่
ไม่มีเราได้เห็นมัน
แต่มันจะมีลักษณะเช่น แบบทดสอบแล้ว
สำหรับเซสชั่นการตรวจสอบนี้นี้ไม่ได้ รายการครบถ้วนสมบูรณ์ของหัวข้อ
คุณไม่สามารถเพียงแค่เข้าร่วมนี้แล้ว เป็นอย่างดีพร้อมสำหรับการทดสอบ
มิฉะนั้นมันจะไม่เป็น ที่มากของการทดสอบ
และนี้ยังไม่จำเป็นต้อง ทุกสิ่งที่คุณจำเป็นต้องรู้เกี่ยวกับการใด ๆ
หัวข้อที่กำหนด
มันหมายถึงการเปิดเผยให้คุณในสิ่งที่ เราได้ครอบคลุมเตือนคุณในสิ่งที่เรา
ครอบคลุมและวิธีการในการ ที่เรากล่าวถึงมัน
แต่คุณจะต้องไปต่อไปและ ลึกเมื่อคุณศึกษาเพื่อตรวจสอบอีกครั้ง
ว่าคุณรู้ทุกอย่างเกี่ยวกับการใดก็ตาม หัวข้อและที่คุณได้เติมเต็มใน
ทุกมุมที่มี ครอบคลุมในการบรรยาย
>> บันทึกทดสอบบอกให้คุณไปที่ เขียนบันทึกวิดีโอการบรรยายนาฬิกา
ซึ่งเป็นวิธีที่ดีที่จะให้แน่ใจว่าคุณได้ ครอบคลุมฐานทั้งหมดของคุณ
ดังนั้นการเริ่มต้นเมื่อฉันทำเหล่านี้ สไลด์ผมพยายามที่จะนำที่ผมพบว่า
ข้อมูล
ดังนั้นสำหรับไฟล์ I / O ตัวอย่างเช่นสัปดาห์ที่ 7 วันจันทร์บรรยายและโพสต์
มาตรา 6 และการตั้งค่าทั้งหมดมีปัญหา ข้อมูลเกี่ยวกับไฟล์ I / O ผมเคยทำ
สำหรับทุกเรื่อง
ดังนั้นผู้ภาพนิ่งชื่อเรื่องอาจจะ เป็นประโยชน์กับคุณ
>> ดังนั้นที่นี่เรามีไฟล์ I / O โปรดจำไว้ว่าใน ปัญหาการตั้ง 5 เราใช้ fopen, fclose,
fwrite, fread และ fseek
มีการกู้คืนและ 30ish JPEGs ที่มีการปรับขนาดและสับสนกับ
บิตแมปที่คุณควรจะคุ้นเคยสวย ด้วยฟังก์ชั่นเหล่านี้
และวิธีการที่พวกเขาทำงาน
หากคุณไม่คุ้นเคย แน่นอนตรวจสอบได้
และให้แน่ใจว่าคุณเข้าใจสิ่งที่ ข้อโต้แย้งที่แตกต่างกันที่มี
เมื่อพวกเขากำลังใช้
>> แต่ข้อผิดพลาดที่เกี่ยวข้องกับไฟล์ที่พบบ่อย คุณอาจจะถามเกี่ยวกับ -
ดีถ้าคุณลืมที่จะตรวจสอบว่า fopen ทำงานจริงก่อนที่คุณจะไป
แก้ไขไฟล์
ที่อาจจะไม่ดี
หากคุณลืมที่จะ fclose ไฟล์ ที่คุณได้ fopened ที่คล้ายกับ
หน่วยความจำรั่ว
ที่ไม่ดีงาม
และลืมที่จะตรวจสอบว่าคุณได้ ถึงจุดสิ้นสุดของแฟ้มก่อนที่คุณจะ
เริ่มต้นการเขียนไป
>> ดังนั้นถ้าคุณจะพูดว่าเดี๋ยวก่อนฉันที่ ส่วนท้ายของแฟ้ม
ให้ฉัน 5 ไบต์
ดีที่อาจจะไม่ ผลงานออกมาในแบบที่คุณคาดหวัง
ที่จริงมันเป็นไฟล์ I / O เพราะเราไม่ได้ทำมากของมัน
ที่มีปัญหาการตั้งค่า
ดังนั้นถ้าคุณเข้าใจสิ่งที่เกิดขึ้น ใน 5 เซตปัญหาจำ bitmats
และ JPEG แล้วคุณอาจจะทั้งหมด ที่ตั้งไว้สำหรับไฟล์ I / O หากเป็นบิต
เลือนแน่นอนทบทวนปัญหาที่ ตั้งค่าและวัสดุที่เกี่ยวข้อง
>> structs เป็นหัวข้อที่อยู่บน เส้นแบ่งระหว่างการทดสอบแบบทดสอบ 0 และ 1
ไม่มากให้ตัดการทดสอบ 0
ดังนั้นแน่นอนพวกเขาจะอยู่บน แบบทดสอบ 1 สัปดาห์ที่ 7 วันจันทร์
struct คืออะไร
ที่นี่เราแสดงให้เห็นโครงสร้าง
มันก็เหมือนรูปแบบใหม่
มันเหมือนกับภาชนะ สำหรับเขตข้อมูลหลาย
>> ในกรณีนี้เราได้ประกาศ struct นักเรียนที่มีสองสาขา -
สายที่เรากำลังเรียกชื่อและ int ที่เรากำลังเรียกร้องอายุ
ดังนั้นเมื่อผมผ่านรอบนักเรียนหรือฉัน แก้ไขนักเรียนที่ฉันจะสามารถที่จะ
เข้าชื่อและอายุของพวกเขา
ลองดูที่รหัสบางอย่างสำหรับการที่
ที่นี่เราจะเห็นว่าผมเคยประกาศ นักเรียน s เช่นเดียวกับ
ผมประกาศตัวแปรใด ๆ -
int x, int y, และอื่น ๆ
>> ที่นี่เป็นนักเรียนของ
เขาเริ่มต้นด้วยไม่มีอะไรอยู่ในทุ่งนาของเขา
จึงขอตั้งพวกเขา
คุณตั้งค่าเขตข้อมูลของโครงสร้างด้วยจุด
ดังนั้นผมจึงได้กล่าวว่าที่นี่ที่ s.name = RJ
และ s.age = 21
นอกจากนี้คุณยังสามารถปรับปรุงเขตข้อมูล วิธีเดียวกับที่คุณต้องการปรับปรุง
ค่าของตัวแปร
ดังนั้นผมจึงต้องการที่จะเปลี่ยนชื่อของฉันจาก RJ ด้วย ระยะเวลาที่จะ R.J. ไม่มี สะกด
วิธีที่ถูกต้อง
มันจะ s.name = RJ เดียวกัน ในขณะที่เราบอกว่ามันเดิม
และจากนั้นคุณสามารถเข้าถึงได้
>> ดังนั้นเราจึงได้กำหนดให้
เราได้ปรับปรุงพวกเขา
นอกจากนี้คุณยังสามารถเข้าถึงได้ ในทางเดียวกันมาก
ดังนั้นที่นี่ฉันพิมพ์ออก R.J. คือ 21 ปี
และฉันเข้าถึงค่าเหล่านั้น ด้วย s.name และ s.age
ดังนั้นที่เข้าถึง structs ด้วยสัญกรณ์ dot
ครับถาม?
>> ผู้ชม: มีเหตุผลที่ สไลด์ก่อนหน้านี้ที่คุณไม่ได้ใส่
นักศึกษาในบรรทัดด้านบนเช่น typedef นักเรียน struct แล้ว
นักเรียนที่สิ้นสุดหรือไม่
>> R.J. กัว: ดังนั้นคำถามคือเมื่อวันที่ สไลด์นี้เราได้เห็นโดยทั่วไป
typedef struct โหนดแล้ว ด้านโครงสร้างและ
แล้วคำโหนด
และวิธีการที่มาที่นี่ผมไม่ได้พูดว่า typedef นักเรียน struct แล้ว
สาขา struct แล้วนักเรียน?
เหตุผลก็คือว่าผมไม่จำเป็นต้อง เข้าถึงได้ภายในของ struct
จึงตกลงที่จะปล่อยให้มันไม่มีชื่อ
ผมก็สามารถปล่อยให้มันเป็น struct ที่ไม่ระบุชื่อ
>> เหตุผลที่เราทำมันสำหรับรายการการเชื่อมโยงและ สิ่งที่เป็นเพราะภายในที่คุณต้องการ
อ้างอิงดาวโหนด struct
ดังนั้นโครงสร้างจะต้องมีชื่อ เพื่อให้คุณสามารถเข้าถึงได้ในภายหลัง
มันเป็นรายละเอียดเล็กน้อย
แต่คุณมักจะเห็น typedef struct วงเล็บปีกกาถ้าคุณไม่จำเป็นต้อง
ชื่อและที่ typedef struct ชื่อบางส่วน ตามด้วยวงเล็บปีกกาถ้าคุณจะ
ต้องมีชื่อ
เพื่อให้เป็นคำถามที่ดี
>> และในจุดที่เรามีแนวโน้มที่จะปรับเปลี่ยน structs และผ่านรอบ structs โดย
อ้างอิงไม่ได้ด้วยค่า
ดังนั้นเราก็จะผ่านรอบตัวชี้ไปยัง structs แทนการผ่านรอบ
structs ตัวเอง
ดังนั้นคุณบ่อยมากจะเป็น ใช้ในกรณีนี้นักเรียน * หรือ
* โหนด struct หรือโหนด * แทน นักเรียนออกหรือโหนด
ดังนั้นที่นี่ฉันได้กล่าวว่าตกลง PTR ตัวแปร เป็นไปได้ที่อยู่ของ s
มันจะเป็นตัวชี้ นักเรียน R.J.
>> เพื่อให้เราสามารถได้รับข้อมูลเหล่านั้น เช่นเดียวกับที่เราได้รับอะไร
ครั้งแรก ID อ้างอิงตัวชี้ ที่จะได้รับ struct
นั่นคือ PTR * แล้ว จุดแล้วอายุ
ดังนั้นการเข้าถึงสนามและเราได้ปรับปรุง ตอนนี้ถึง 22 เพราะให้
กล่าวว่ามันเป็นวันเกิดของฉัน
มีทางลัดไวยากรณ์เป็น โดยใช้ลูกศรที่นี่
อายุลูกศรเพื่อ PTR เป็นเพียง เหมือนกับ * ptr.age
ตอนนี้ที่เป็นสิ่งที่คุณจะต้อง ในการจดจำและจำ
>> คุณใช้มันมากใน pset6, pset สะกด
แต่นี้เป็นจริงสิ่งที่เกิดขึ้น ที่อยู่ใต้ฝากระโปรง
มันเป็นตัวชี้ dereferencing แล้วการเข้าถึง
คำถาม?
>> ผู้ชม: [ไม่ได้ยิน]
>> R.J. กัว: ดังนั้นทำไมเราใช้ ชี้เป็น structs แทน
structs ตัวเอง
เหตุผลที่จะเป็นถ้าคุณผ่าน struct ฟังก์ชั่นที่คุณอาจ
ต้องการที่จะผ่านรอบเพียง 4 หรือเพื่อ ไบต์ที่เป็นตัวแทนของตัวชี้เป็น
เทียบกับ 30 หรืออาจ 40 ไบต์ที่มีโครงสร้าง
ดังนั้นสิ่งที่จะผ่านฟังก์ชั่น เป็นสิ่งที่ง่ายขึ้นเมื่อ
มีขนาดเล็กในระยะสั้น
คำถาม?
>> ผู้ชม: คุณอาจได้กล่าวถึงนี้ ในการเริ่มต้น แต่มี
ภาพนิ่งอื่นขึ้นไปบน [ไม่ได้ยิน]?
>> R.J. กัว: สไลด์เหล่านี้จะเป็น ขึ้นหลังจากที่เซสชั่นการตรวจสอบ
เราจะโพสต์ไว้บนเว็บไซต์
ดังนั้นการย้ายและย้ายไปเล็กน้อย เร็วกว่าที่เรากำลังจะพูดคุยเกี่ยวกับข้อมูล
โครงสร้าง
มีจำนวนมากที่มี
เราครอบคลุมพวงของพวกเขา
นี่คือสิ่งที่คุณควรเข้าใจ เกี่ยวกับโครงสร้างข้อมูล
>> จริงๆคุณควรเข้าใจที่สูง สิ่งที่แต่ละระดับโครงสร้าง
คุณสามารถอธิบายในภาษาอังกฤษของคุณ เพื่อนที่ไม่ได้เอา CS50 วิธี
เรากำลังจัดการข้อมูลของเราและเหตุผลที่เราต้องการ จะใช้อะไรบางอย่างในลักษณะนี้
นั่นเป็นสิ่งหนึ่งที่
สิ่งที่ทั้งสองเข้าใจ การดำเนินการ
เพื่อเข้าใจวิธีการใช้สิ่งเหล่านี้ ในซีและเราจะไปกว่านี้
>> และแล้วสิ่งที่สามจะได้รับรู้ ใช้เวลาและข้อ จำกัด ของ
โครงสร้างต่างๆที่คุณกำลังใช้
ดังนั้นเข้าใจว่าทำไมคุณจะใช้ สับตารางแทนของอาร์เรย์
ทำความเข้าใจเกี่ยวกับวิธีที่รวดเร็วโดยเฉลี่ย การเข้าถึงตารางแฮชเป็น
เข้าใจในสิ่งที่มีการดำเนินงานอย่างรวดเร็วใน รายการที่เชื่อมโยง แต่ช้าในอาร์เรย์และ
ในทางกลับกัน
เพื่อที่จะเข้าใจว่าคุณจะต้อง เข้าใจ Big-O โน้ตเพียงเพื่อให้รู้ว่า
วิธีการพูดคุยเกี่ยวกับเหล่านี้ ทุกประเภทของสิ่ง
และเราจะพูดคุยเกี่ยวกับที่
>> ดังนั้นสิ่งแรกที่รายการเชื่อมโยง
นี่คือภาพที่ระดับสูง ของรายการที่เชื่อมโยง
เราแสดงให้เห็นนี้ในชั้นเรียน
เรามักจะมี 10 คนที่ ยืนอยู่บนเวที
แต่เรามีชุดของโหนดที่แต่ละ โหนดมีค่าบางอย่างและตัวชี้
ค่าต่อไป
เพื่อที่จะได้รับจากที่หนึ่งไปยังโหนดถั​​ดไปคุณ เพียงแค่พูดให้ฉันโหนดถั​​ดไป
คุณมีโหนดที่
ให้ฉันโหนดถั​​ดไป
คุณมีโหนดที่
ให้ฉันโหนดถั​​ดไปและอื่น ๆ จนกว่าจะมีโหนดไม่มี
>> ดังนั้นยังคงพูดคุยเกี่ยวกับ มันอยู่ในระดับสูง
มันง่ายมากที่จะแทรกสิ่งที่ เป็นรายการที่เชื่อมโยง
ถ้าคุณไม่สนใจเกี่ยวกับคำสั่งที่ คุณก็สามารถวางไว้
ในขณะที่จุดเริ่มต้น
นั่นเป็นเวลาคงที่
แต่ก็ยากที่จะหาค่า
ถ้าคุณกำลังพยายามที่จะถาม เจ็ดในรายการของฉันได้อย่างไร
คุณต้องไปผ่าน ทุกค่าเดียว
นี้เป็นเจ็ด?
ครั้งแล้วครั้งเล่า
และที่ O (n)
ดังนั้นเมื่อเรียนสำหรับการตอบคำถาม เปรียบเทียบกับอาร์เรย์
>> ที่ OK?
ไฟสลัวไป
ตกลง
เมื่อเป็นรายการที่เชื่อมโยงที่ดีกว่า
เมื่อเป็นอาร์เรย์ที่ดีกว่า
ดังนั้นให้ดูที่บางรหัส
นี่คือโหนดที่มีศักยภาพ
มันเป็นโครงสร้าง
มันมี n int ซึ่ง จะเป็นค่าของเรา
และมีโหนด struct * ถัดไปที่ เราเป็นตัวชี้ไปยังโหนดถั​​ดไป
ดังนั้นที่นี่เราจะเห็นว่าเราเกิดขึ้น จะมีการวาง int ในโหนดของเรา
แต่ถ้าเป็นรายการที่เชื่อมโยงของถ่าน ดาวหรือรายการที่เชื่อมโยงของลอยเรา
ทั้งหมดสามารถทำเกินไป
>> โปรดจำไว้ว่าใน pset6 คุณอาจจะมี รายการที่เชื่อมโยงของถ่านดาวหรือเพียงแค่
อาร์เรย์ถ่านแบบคงที่
ลองดูที่นี่ที่การดำเนินงาน
ดังนั้นเราจึงต้องการที่จะใส่ใหม่ n เป็นรายการที่เชื่อมโยงของเรา
เราเริ่มต้นด้วยตัวชี้ที่ศีรษะที่เป็น ตัวชี้ไปยังโหนดนี้ที่มี
ค่าของ n และต่อไปของตัวชี้ว่า ชี้ไปที่โหนดนี้เป็นค่าของ
n และต่อไปของโมฆะเพราะ มันเป็นโหนดสุดท้าย
ดังนั้นในความสนใจของเวลาที่ฉันจะ ใส่รหัสทั้งหมดบนหน้าจอ
และเราจะเดินผ่านมัน ไม่กี่บรรทัดในเวลา
>> ดังนั้นนี่คือรหัส
ฉันหวังว่าจะสามารถอ่านได้
สิ่งแรกที่เราทำคือ เรา malloc โหนดใหม่
จึงทำให้ตัวชี้ไปยังโหนดใหม่ที่ ไม่ค่อยมีอะไรที่ตั้ง
ในมันยัง
เราตรวจสอบเพื่อให้แน่ใจว่า โหนดใหม่ไม่โมฆะ
มิฉะนั้นเราจะต้องให้ขึ้น
ดังนั้นต้องตรวจสอบว่าตอนนี้เรา ตั้งค่าในโหนด
ดังนั้นเราจึงใส่ n ใหม่ลงในช่อง n ของเรา
และเราจะกำหนดตัวชี้ต่อไปที่จะชี้ไปที่ หัวเดิมเพื่อให้เราสามารถ
ตอนนี้ได้ใส่นี้ โหนดลงในรายการของเรา
>> สุดท้ายเรามีจุดหัวทั่วโลก ไปยังโหนดใหม่ของเราเพื่อที่ว่าถ้าเราจะ
เริ่มต้นที่หัวเราจะอยู่ที่นี้ โหนดแรกใหม่แทน
โหนดแรกเก่า
และเมื่อฟังก์ชั่นนี้ออกจากที่ โหนดใหม่ตัวแปรไม่มีอยู่แล้ว
เพราะมันเป็นท้องถิ่นเพื่อฟังก์ชั่น
ดังนั้นนี่เป็นสภาวะของโลก
หัวทั่วโลกของเราชี้ไปที่ใหม่ของเรา โหนดแรกซึ่งชี้ไปของเรา
โหนดแรกเดิมซึ่งจุด ไปยังโหนดหลังจากนั้น
>> นั่นคือการแทรก
ผมหวังว่าค่อนข้าง ตรงไปตรงมาในการปฏิบัติตาม
เมื่อสงสัยวาดภาพ
ดังนั้นฉันพบว่าการพูดคุยเกี่ยวกับ รายการการเชื่อมโยงและกำลังมองหาที่
รหัสเป็นอย่างมากไม่เป็นประโยชน์
ในขณะที่มองไปที่ภาพของการเชื่อมโยง รายการช่วยให้ฉันคิดว่าโอ้ดังนั้น
ฉันมีโหนดนี้ที่นี่
แต่ถ้าฉันปรับปรุงตัวชี้ว่า มันจบลงด้วยการตัดการเชื่อมต่อ
และฉันลืมที่ โหนดไป
และออกจากรหัส
และคุณมีโหนดหลาย ที่มีการตัดการเชื่อมต่อ
และคุณไม่ได้จบลงด้วย รายการที่คุณต้องการ
>> ดังนั้นถ้าคุณวาดภาพและทำมัน ทีละขั้นตอนหวังว่าคุณจะเห็น
ลำดับที่ถูกต้องของสิ่งที่ในแง่ของการ การปรับปรุงตัวชี้เพื่อให้แน่ใจว่า
ว่ารายการมารวมกัน
แทรกค่อนข้างตรงไปตรงมา
อย่างใดอย่างหนึ่งที่ซับซ้อนมากขึ้นจะเป็น แทรกเข้าไปในรายการที่เรียงลำดับ
ฟังก์ชั่นที่ซับซ้อนมากขึ้นเป็นลบ และหาดังนั้นมองผ่านรายการ
ดูว่ามีอะไรบางอย่างที่มี
บางทีคุณอาจจะทำอย่างนี้ในเมื่อคุณ pset6 ได้เข้าไปในตารางแฮชของคุณและคุณกล่าวว่า
ดีเป็นแอปเปิ้ลคำว่า ในรายการที่เชื่อมโยงของฉันได้อย่างไร
>> ดังนั้นคุณอาจได้ทำมาแล้วนี้
แต่แน่นอนรีเฟรชหน่วยความจำของคุณ และพยายามที่จะค้นหาและ reimplement
reimplement ลบรายการเชื่อมโยง
สังเกตด้านความสนุกยังมีทวีคูณเชื่อมโยง รายการที่คุณมี
ตัวชี้ที่ชี้ทั้งสองไปข้างหน้าและ ย้อนกลับเพื่อให้คุณสามารถไปที่
โหนดถั​​ดไปและเพื่อโหนดก่อนหน้า
และมีคำถามเกี่ยวกับของปีที่แล้ว คำถามประเภทที่พูดคุย
รายการเกี่ยวกับการเชื่อมโยงทวีคูณ
>> ตอนนี้ที่โครงสร้างที่คุณ ค่อนข้างคุ้นเคยกับเพราะส่วนใหญ่
ท่านอาจใช้พวกเขาใน pset6
นี่คือหนึ่งที่เป็นบิตที่คุ้นเคยน้อยกว่า
ขณะที่ทราบด้านผมคิดว่าแบบทดสอบ 1 ส่วนใหญ่หนักกว่าแบบทดสอบ 0 เพราะ
สิ่งที่คุณทำคุณ ยังไม่ได้ทำมาก
ที่จะนำวิธีการอื่นในการทดสอบ 0 คุณได้เขียนจำนวนมาก C. และเรา
ถามคุณเกี่ยวกับ C.
>> สำหรับการทดสอบที่ 1 เรากำลังจะถามคุณเกี่ยวกับ PHP และ JavaScript ซึ่งคุณ
ไม่ได้เขียนมากของ
เรากำลังจะไปถามคุณเกี่ยวกับ C-รหัสที่ คุณยังไม่ได้เขียนเท่าของ
สิ่ง C ขั้นสูงนี้
ดังนั้นแน่นอนสิ่งที่เราปฏิบัติ พูดคุยเกี่ยวกับในการบรรยายที่คุณ
ไม่จำเป็นต้องทำ ในการแก้ปัญหาที่กำหนด
>> การพูดที่คุณยังไม่ได้เขียน สแต็คในการแก้ปัญหาการตั้งค่า
แต่มันก็เป็นในการบรรยาย
นี่คือภาพที่ระดับสูงของ กองที่เราแสดงให้เห็นทุกปี
มันเป็นสแต็คของในถาด โรงอาหารท้อง
อยู่ในระดับสูงกองกำลังสุดท้าย ในครั้งแรกที่ออกโครงสร้างข้อมูล
ซึ่งหมายความว่าคุณกำลังจะ ที่จะนำสิ่งใน -
1, 3, 7, 12, 14, 0 เชิงลบ
สิ่งหนึ่งที่ฉันไม่สามารถมี กล่าวว่า - ลบ 3, 0
คุณนำสิ่งเหล่านี้ค่ะ
และคนสุดท้ายที่คุณใส่ในเป็นครั้งแรกที่ อย่างใดอย่างหนึ่งที่จะออกมา
>> เพื่อให้คุณมีสองงาน -
การผลักดันและป๊อป
ทั้งหมดของการวางในที่ฉันเป็น ชี้เช่นนี้จะมีการผลักดัน
และแล้วเมื่อฉันมาถึงในการคว้า หรือบางสิ่งบางอย่างไปถึงด้านบนที่จะคว้า
บางสิ่งบางอย่างที่เป็นป๊อป
ดังนั้นเราจะใช้กอง
และเราพบว่าพวกเขาในการบรรยาย ใช้อาร์เรย์
แต่คุณสามารถทำพวกเขา ใช้รายการการเชื่อมโยง
สแต็คเป็นข้อมูลแนวคิด โครงสร้างไม่ชอบ
หนึ่งในการดำเนินงานที่เฉพาะเจาะจง
>> ดังนั้นสิ่งที่จะมีลักษณะอย่างไร
ก็จะมีลักษณะชนิดเช่นนี้
คุณต้องการมีขนาดจำนวนเต็ม
และคุณจะมีอาร์เรย์ของค่าที่ เรากำลังเรียกถาดเพราะนั่นคือ
สิ่งที่ภาพเป็น เรา - int ถาด -
แล้วบางส่วนความจุสูงสุด
ดังนั้นสิ่งที่จะผลักดันให้มีลักษณะเป็นอย่างไร
ดีถ้าเรามีกอง s แล้วที่จะผลักดัน บางสิ่งบางอย่างบนวินาที, เราจะได้รับ
ขนาดของ s
และที่จะต่อไป จุดเปิดของอาร์เรย์ของเรา
ดังนั้นถ้าเรามีสามสิ่งในกองของเรา แล้วถาด 3 จะเป็นต่อไป
จุดที่เปิดอยู่เนื่องจาก 0, 1, และ 2 จะเต็มไปขึ้นแล้ว
>> ดังนั้นเราจึงใส่ค่าลงใน s.trays [s.size], จุดที่สาม
แล้วเราเพิ่ม s.size ที่จะบอกว่า เดี๋ยวก่อนเรามีสามสิ่งที่ก่อนที่จะ
ตอนนี้เรามีสี่
ดังนั้นครั้งต่อไปที่คุณผลักดันคุณ จะนำสิ่งที่เป็น 4
หรือในครั้งต่อไปที่คุณป๊อปที่คุณกำลังจะ การมองไปที่ 3 แทน 4 หรืออะไรก็ตาม
และแล้วเราก็จะกลับมาจริง กล่าวว่าเดี๋ยวก่อนเราประสบความสำเร็จ
นี้ทำงาน
ตามกฎของหัวแม่มือถ้าฟังก์ชั่นที่เป็น ควรที่จะกลับมาจริงหรือ
เท็จเสมอกลับจริงคุณอาจจะ ได้ทำอะไรผิด
ดังนั้นการทำงานนี้
>> ดีก็ทำงานได้ดีเป็นเวลา 1 และ 2 และ 3 และ 4 และห้า
แต่ขอบอกว่าผมไปถึงความสามารถของฉัน
ผมเคยทำงานแล้วเป็นปัญหาเพราะ ถ้าขนาดเป็นเช่นเดียวกับความสามารถในการฉัน
ตอนนี้พยายามที่จะนำสิ่งที่เป็น อาร์เรย์ที่ฉันไม่ได้มีพื้นที่
ดังนั้นการตรวจสอบสั้น ๆ เพื่อแก้ไขปัญหานี้
หากความจุ == s.size กลับเท็จ
มิฉะนั้นไปและทำสิ่งที่เราทำ
ดังนั้นอะไรที่เราสามารถขอ เกี่ยวกับกอง?
อะไรที่คุณควรศึกษา?
อะไรที่คุณควรปฏิบัติ
>> ดีป๊อปใช้
แล้วเราไม่ได้ผลักดัน
ฉันจะแก้ไขที่
การดำเนินการที่ไม่อาร์เรย์ที่ คุณใช้รายการที่เชื่อมโยงอาจจะ
การดำเนินการที่ไม่ int-
เราได้ ints ที่นี่
แต่มันจะได้รับการลอย
ฉันจะได้รับสาย
มันจะได้รับดาวถ่าน
ดูแบบทดสอบผ่านมาสำหรับชนิดของ คำถามที่เราได้ถามเกี่ยวกับกอง
>> ผมจะบอกว่าเราอยู่ภายใต้กองรอบ เช่นเดียวกับที่เราได้ครอบคลุมพวกเขาใน
ปีที่ผ่านมา
ดังนั้นคำถามคำถามควร เป็นข้อบ่งชี้ที่ดี
ก้าวไปข้างหน้าได้เร็วขึ้นคิว
พวกเขากำลังเหมือนกอง
แต่พวกเขากำลังครั้งแรกในครั้งแรกออก
หากคุณเป็นชาวอังกฤษคิวคำ อาจจะทำให้ความรู้สึกมากกับคุณ
มิฉะนั้นคุณอาจจะมี ได้ยินมันเป็นเส้น
พวกเขาทำงานเหมือนสาย ที่ร้านแอปเปิ้ล
คนแรกที่จะปรากฏขึ้นที่ 3:00 ในช่วงเช้าเป็นครั้งแรกที่
ผู้ที่จะซื้อ iPad ของเขา
>> ดังนั้นเราจึงมีการดำเนินงานสอง -
enqueue และ dequeue
enqueue ทำให้คนที่อยู่ในสาย
Dequeue ดึงแรก ผู้ออกจากสาย
อีกครั้งเราสามารถใช้ นี้มีมากมาย
ดังนั้นสิ่งที่เรา struct แสดงให้เห็นว่าในการบรรยาย?
มันเป็นหนึ่งในนี้
อีกครั้งตัวเลข
อีกครั้งขนาดและด้านหน้าสิ่งใหม่นี้
ทำไมจึงมีสิ่งที่เรียกว่าด้านหน้า
มันเป็นดัชนีของต่อไป องค์ประกอบ dequeue
มันเป็นเพียงแค่ภายในการติดตาม ผู้ชายคนแรกที่จะแสดงขึ้นดังนั้นเราจึงว่า
สามารถดึงมันออกมาเมื่อเราต้องการที่จะ
>> แน่นอนดูบันทึกการบรรยายและพยายาม ในการดำเนินการ enqueue และ dequeue
เมื่อศึกษาสำหรับการทดสอบ
สิ่งสำคัญที่จะคิดเกี่ยวกับ
ห่อรอบหน้าถ้าบวก ขนาดจบลงด้วยการที่ใหญ่กว่าความจุ
อีกครั้งถ้าโครงสร้างของคุณเต็ม คุณกำลังจะมีปัญหา
ตารางแฮชคุณเคยเห็นมาก่อน
ส่วนใหญ่ของคุณอาจจะนำมาใช้ เหล่านี้ pset6 บน
มันเป็นโครงสร้างที่มีจุดมุ่งหมายเพื่อ O (1) แทรกเวลาคงที่และ O (1)
ค้นหาเวลาคงที่
>> ใน CS50 เราดำเนินการเช่นนี้ อาร์เรย์ของรายการเชื่อมโยง
ส่วนประกอบสำคัญในการตารางแฮช เป็นฟังก์ชันแฮช
ดังนั้นจะแปลงข้อมูลของคุณสมมติว่า คำพจนานุกรมเป็นตัวเลข
ซึ่งเป็นไปได้ที่ดัชนีของเรา
และเราจะใช้ดัชนีที่ เป็น array ของเรา
ดังนั้นนี่คือภาพเล็ก ๆ น่ารัก จาก study.50.net
เราโยนคำทั้งหมดลงใน ฟังก์ชันแฮชของเรา
และฟังก์ชันแฮชบอกเรา ที่จะนำคำเหล่านี้
>> นี้ดีมากในประเทศที่ มีเพียงคำเดียวสำหรับทุกช่อง
แต่เป็นคุณจำจาก pset6 มี เป็นคำมากกว่าช่อง
ดังนั้นสิ่งที่เกิดขึ้นเมื่อคุณ ได้รับการปะทะกันหรือไม่
แทนการจัดเก็บค่าหนึ่งใน สมมติว่าตารางแฮชที่ 3 คุณ
เก็บรายการที่เชื่อมโยง
ดังนั้นแทนที่จะมีแคนตาลูป ที่นี่คุณจะมีรายการที่เชื่อมโยง
ที่โหนดแรกคือแคนตาลูป
และโหนดต่อไปคือแมว
และโหนดที่สามคือการชนกันให้ พูดเพราะคำเหล่านี้เริ่มต้น
C. ด้วย
>> ดังนั้นส่วนใหญ่ของคุณทำอย่างนี้เพื่อ pset6
หากคุณไม่ได้ทำตารางแฮชที่ pset6 และคุณพยายามที่สิ่งที่ต้องการ
Trie ที่แน่นอนตรวจสอบตารางแฮช
ถ้าคุณไม่ทำใน pset6 แน่นอน ตรวจสอบตารางแฮช
และถ้าคุณคิดว่ามันเกี่ยวกับ pset6 และมันไม่ได้ ทำงานออกมาค่อนข้างถูกต้องและคุณ
มีจำนวนมากของปัญหากับมันแน่นอน ตรวจสอบตารางแฮช
ดังนั้นบทเรียนจริงๆแน่นอน ตรวจสอบตารางแฮช
>> ชนกลุ่มน้อยที่ใหญ่ของคุณได้ลอง ออกพยายามที่ pset6
ภาพระดับสูง
มันเป็นบางอย่างเช่นนี้ซึ่งแต่ละ โหนดมีชุดของเด็กที่แต่ละ
เด็กที่สอดคล้องกับตัวอักษรที่
และทุกโหนดยังกล่าวว่า เฮ้ฉันคำ
ดังนั้นในกรณีนี้คำว่าแมกซ์เวล, ถ้าคุณทำตามเอ็มเพื่อที่จะ
X-W-E-L-L แล้วทำตามมันมากขึ้นอย่างใดอย่างหนึ่ง
และคุณจะได้รับสัญลักษณ์นี้เดลต้าซึ่ง เรามีความหมายที่จะหมายถึงนี้คือคำ
ดังนั้นแมกซ์เวลเป็นคำ
สันดอนเหล่านี้ตลอด signifying ซึ่งสิ่งที่เป็นคำพูดและการที่
สิ่งที่ไม่
>> ดังนั้นใน pset6, ข้อมูลที่เราเก็บไว้ ควบคู่ไปกับการใด ๆ ของโหนดของเราคือ "ผม
คำ. "และสิ่งดีๆเกี่ยวกับความพยายาม คือพวกเขาแสดงให้เห็นถึงการใส่และ
ค้นหาใน O (ความยาวของคำ)
ดังนั้นเพียงแค่จะได้รับผ่านแมกซ์เวลก็ M--X-W-E-L-L ดังนั้นเจ็ดหรือแปด -
ฉันไม่สามารถนับ -
ขั้นตอนในการได้รับการสิ้นสุด และตรวจสอบสิ่งที่ออก
ดังนั้นการดำเนินการอย่างรวดเร็วที่นี่
ร็อบเดินผ่านที่เชื่อมโยง รายการในการชันสูตรศพของเขา
เพื่อตรวจสอบว่า
ขอโทษ
เดินผ่าน Trie ในการชันสูตรศพของเขา
เพื่อตรวจสอบว่า
>> แต่คุณโดยทั่วไปมีแต่ละโหนดมี 27 ตัวชี้ไปยังโหนดถั​​ดไปและหนึ่ง
บูลลีฉันคำ
ตรวจสอบชันสูตรศพของร็อบสำหรับวิธีการ นี้จริงจะดำเนินการ
โครงสร้างสุดท้ายของเราต้นไม้ของเรา และต้นไม้ค้นหาแบบไบนารี
ดังนั้นมองไปที่เหล่านี้เหล่านี้ถูกปกคลุม ล่าสุดสัปดาห์ที่ 8 วันจันทร์
ต้นไม้คล้ายกับ Trie ยกเว้นคุณ ไม่จำเป็นต้องมี 27 โหนดที่
แต่ละจุด
และคุณไม่ได้มีข้อมูลนี้ในแต่ละ ขั้นตอนที่หมายว่า -
เส้นทางที่ไม่ได้เรื่อง
ในขณะที่ Trie ที่เส้นทางจากบนลง ด้านล่าง, แมกซ์เวลเป็นสิ่งสำคัญสำหรับเรา
>> แต่แต่ละโหนดมีหลาย เด็กอาจจะ
เรามีบางคำศัพท์มากขึ้น
รากของต้นไม้ เป็นที่ส่วนบนสุด
และเราบอกว่า bottommost มาก โหนดที่ไม่มี
เด็กที่มีใบ
ดังนั้นเช่น Trie ที่ต้นไม้เป็น โครงสร้างของโหนด
ชนิดที่พบมากของต้นไม้ที่เรากำลังจะ ที่จะพูดคุยเกี่ยวกับการเป็นต้นไม้ไบนารีที่
แต่ละโหนดไม่มีเด็กหรือ เด็กคนหนึ่งหรือเด็กสองคน
ดังนั้นภาพที่นี่ไม่ได้ ต้นไม้ไบนารีเพราะ
3 โหนดมีลูกสามคน
>> แต่ถ้าเราเป็นคนที่จะไม่สนใจเหล่านั้นส่วนที่เหลือ มันเป็นต้นไม้ไบนารีเพราะมัน
แสดงให้เห็นถึงคุณสมบัติที่แต่ละโหนด มีศูนย์หนึ่งหรือสองลูก
ดังนั้นวิธีที่เราสามารถแสดงในรหัส?
เราอาจจะมีโหนดที่แต่ละโหนดมี จำนวนเต็มภายในของมันเป็นอย่างดี
เป็นตัวชี้ไปยังต้นไม้ทางด้านซ้าย และตัวชี้ไปยังต้นไม้
ที่ถูกต้องเพื่อให้เด็กสองคน
วิธีนี้เป็นประโยชน์
ดีถ้าเราทำกฎระเบียบเกี่ยวกับการที่เรา ใส่โหนดเราสามารถทำให้การค้นหาได้เร็วขึ้น
>> ดังนั้นจึงมีแนวคิดของการค้นหาแบบไบนารี ต้นไม้ที่โหนดทั้งหมดใน
ทรีย่อยด้านซ้ายมีค่าที่น้อยลง กว่าโหนดที่เรากำลังมองหาที่
และโหนดทั้งหมดในทรีย่อยขวา มีค่ามากขึ้น
กว่าโหนดราก
ตอนนี้ที่ดูเหมือนว่ามากของคำ
ฉันจะใส่ไว้ในคู่ของ คำพูดและแสดงให้คุณเห็นภาพ
ดังนั้นนี่คือตัวอย่างของ ต้นไม้ค้นหาไบนารี
เห็นว่าเราเริ่มต้นด้วย 10
ทุกอย่างทางด้านซ้ายของ 10 มีขนาดเล็กกว่ามัน
และทุกอย่างไปทางขวา มีขนาดใหญ่กว่ามัน
>> แต่มากไปกว่านั้นในแต่ละโหนด ต้นไม้แสดงออกถึงสถานที่ให้บริการนี​​้
ดังนั้นโหนด 7 มี 3 ถึง ซ้ายและ 9 ไปทางขวา
ดังนั้นทุกคนที่มีขนาดเล็กกว่า 10
แต่กำลังมองหาที่เพียง แต่ผู้, 7 มี 3 ของด้านซ้ายและ 9 ไปทางขวาของ
และเช่นเดียวกันทางด้านขวา, 15 มี 14 ไปทางซ้ายและ 50 ไปทางขวาของ
ดังนั้นสามโหนดที่นั่น, 15, 14, และ 50 นอกจากนี้ยังมีต้นไม้ไบนารีที่ถูกต้อง
หรือต้นไม้ค้นหาแบบไบนารีที่ถูกต้อง
และพวกเขากำลังทั้งหมดที่ใหญ่กว่า 10
ดังนั้นพวกเขาจึงได้รับอนุญาตให้เป็น ด้านขวามี
มีคำถามหรือไม่
>> ผู้ชม: คุณจัดการอย่างไรเมื่อ คุณมีสองสามัคคี?
>> R.J. กัว: ใช่
คุณจะจัดการกับสองค่า ที่มีความเหมือนกันหรือไม่
บางต้นไม้ค้นหาแบบไบนารีบอกว่าคุณ ไม่สนใจรายการที่ซ้ำกันเพราะเป้าหมายคือ
เพียงแค่จะบอกว่าที่ผมเคยเห็น สิ่งเหล่านี้เพื่อให้ห่างไกล
บางต้นไม้ค้นหาแบบไบนารีคุณสามารถพูด มีนับภายในของโหนด
คนอื่น ๆ อาจจะบอกว่าทุกอย่างเพื่อ ด้านซ้ายมีค่าน้อยกว่าหรือเท่ากับ
และทุกอย่างไปทางขวา มีค่ามากกว่า
>> มันก็ขึ้นอยู่กับสิ่งที่ ปัญหาที่คุณกำลังแก้
ดังนั้นในพจนานุกรมเช่นคุณ จะไม่เกี่ยวกับการดูแลรายการที่ซ้ำกัน
คุณจะโยนพวกเขาออก
แต่บางปัญหาอื่น ๆ ที่คุณอาจสนใจ
>> ผู้ชม: มันเป็นไปได้ที่จะมี 1 ไปทางซ้ายของ 15 ซึ่ง
น้อยกว่า 10?
>> R.J. กัว: เลขที่
14 ถ้าที่นี่เป็น 1 จะนี้ ไม่ได้เป็นต้นไม้ค้นหาแบบไบนารีที่ถูกต้อง
เพราะทุกอย่างที่ด้านขวาของ 10 ที่จะมีขนาดใหญ่กว่าก็มี
และเราจะเห็นว่าทำไม
ถ้าอยู่ในดินแดนของการค้นหาเป้าหมายของฉันคือ เพื่อหา 14 ผมเริ่มต้นที่ราก
ดังนั้นผมมอง
ตกลง
เรากำลังจะเริ่มต้นที่ราก
มองไปที่ 10
>> ดี, 14, เป้าหมายของเรา มีขนาดใหญ่กว่า 10
ดังนั้นมันจะต้องเป็นที่อยู่ด้านขวา
นี้จะคล้ายกับโทรศัพท์มือถือทั้งหมด สิ่งที่เราได้ทำหนังสือไบนารี
ค้นหามี
แต่แทนที่จะค้นหาไบนารี ในอาร์เรย์เราไบนารี
ค้นหาในต้นไม้ต้นนี้
ดังนั้นเรายังคงมองหา 14
ดี 14 มีขนาดเล็กกว่า 15
ดังนั้นถ้ามันอยู่ในต้นไม้ของเราก็ต้อง ต้องอยู่ในพื้นที่นี้ที่นี่
มันจะต้องไปทางขวาของ 10 และ 15 ทางด้านซ้ายของ
>> และเพื่อให้เราตรวจสอบโหนดนี้
และ yay เราพบ 14
ผมไม่ได้ไปที่จะเดินผ่านมัน
แต่ที่นี่คือรหัส
เป็นจริงค่อนข้าง ตรงไปตรงมา
เพราะเป็นซ้ำ
สิ่งที่เราสามารถขอให้คุณทำในการตอบคำถามได้หรือไม่
เราจะขอให้คุณเขียนรหัสนี้
เราจะขอให้คุณมองไปที่รหัสนี้ และปรับเปลี่ยนรหัสนี้และอธิบายสิ่งที่
มันทำ
ใช่
คำถาม?
>> ผู้ชม: มีสไลด์เหล่านี้ไปได้ ทำให้ใช้ได้ในฐานะที่พวกเขาเป็นครั้งสุดท้าย
>> R.J. กัว: ใช่
ดังนั้นสไลด์เหล่านี้แน่นอนจะ ได้รับการโพสต์
>> ผู้ชม: พวกเขากำลังโพสต์จริง ตอนนี้ในเว็บไซต์ของ
เดวิดก็ไม่ว่า
>> R.J. กัว: สไลด์เป็น ตอนนี้ในเว็บไซต์ของ
ฉันอาจจะแพทช์ขึ้นคู่ของ ความผิดพลาดที่ผมสังเกตเห็นและแก้ไขปัญหาได้
แต่มีในปัจจุบัน รุ่นบนเว็บไซต์
อื่น ๆ สิ่งที่เราจะขอให้คุณทำ -
เขียนแทรก
เขียนรุ่นซ้ำของ ฟังก์ชั่นซ้ำเราก็แสดงให้เห็นว่าคุณ
หรือพูดคุยเกี่ยวกับสิ่งเหล่านี้เช่นเดียวกับใน ย่อหน้าในคำในประโยค
เปรียบเทียบเวลาการทำงานและอธิบาย สิ่งที่คุณจะต้องการที่จะใช้เลขฐานสอง
ต้นไม้ค้นหาแทน สับตารางตัวอย่างเช่น
>> ดังนั้นเข้าใจโครงสร้างเหล่านี้ ที่ระดับลึกสวย
ทำความเข้าใจเกี่ยวกับวิธีการเขียนพวกเขาวิธีการ ใช้พวกเขาวิธีการพูดคุยเกี่ยวกับพวกเขา
และคุณจะถูกตั้งค่าทั้งหมด
คำถาม?
>> ผู้ชม: เมื่อคุณเขียน ต้นไม้ค้นหาแบบไบนารีอย่างไรคุณ
ตรวจสอบสิ่งที่คุ้มค่าให้กับ ทำให้มันเป็นรากหรือไม่
>> R.J. กัว: ดังนั้นคำถามคือสิ่งที่ ค่าที่คุณให้เป็นรากหรือไม่
ทั้งนี้ขึ้นอยู่กับรหัสของคุณคุณ อาจจะมีรากทั่วโลก
ดังนั้นคุณอาจจะมีแนวโน้มที่จะมีอยู่ใน pset6 ตารางแฮชทั่วโลก
หรือคุณอาจจะผ่านราก ในเป็นอาร์กิวเมนต์
ดังนั้นฟังก์ชันการค้นหาที่นี่ ใช้อาร์กิวเมนต์โหนด *
และเพื่อให้สิ่งที่โหนดคุณจะเกิดขึ้น กำลังมองหาที่เป็นหนึ่งที่คุณกำลังรักษา
เป็นรากของคุณเมื่อคุณผ่านมันค่ะ
และฉันตั้งค่าทั้งหมด
ผู้ที่มีสไลด์ของฉัน
คนต่อไปสามารถมาแลกเปลี่ยน ในแล็ปท็อปและไมโครโฟน
>> ROB สลิง: ผมคิดว่าผมอาจจะมี ตีความคำถามที่แตกต่างกัน
แต่ผมตีความว่ามันเป็นถ้าคุณมี หมายเลข 1, 2, และ 3 ทำอย่างไรเรา
รู้เพื่อให้ 2 ราก เมื่อเทียบกับ 1 หรือ 3?
ถ้าเราทำ 2 รากแล้วก็อย่าง 1 และ 3 ไปทางซ้ายและขวา
แต่ถ้า 1 เป็นรากแล้วก็ 1 ถึง ด้านบน 2 ด้านขวา 3 ไปทางขวา
ดังนั้นโดยปกติแล้วคุณไม่ทราบ สิ่งที่จะทำให้ราก
และสำหรับขั้นตอนวิธีการใด ๆ ที่เรากำลังคาดหวังว่าจะ ให้คุณเพียงแค่สิ่งแรกที่คุณ
แทรกจะเป็นราก
หรือเราต้องการให้คุณต้นไม้ไบนารีที่ ที่มีอยู่แล้วที่มีราก
แต่ขั้นตอนวิธีการอื่น ๆ ที่มีอยู่ดังกล่าวว่า รากจะปรับปรุงเพื่อที่ว่าถ้าคุณ
สิ้นสุดในสถานการณ์ที่เป็น 1, 2, 3 ก็จะปรับปรุงโดยอัตโนมัติไปยัง
2 ทำให้รากใหม่เพื่อให้ ก็ยังคงมีความสมดุลเป็นอย่างดี
>> ANGELA LI: Cool
เฮ้
ฉันแองเจลา
และฉันจะเสร็จสิ้นการปิด C ของเรา แล้วไปเป็นบางส่วนของเว็บไซต์ของเรา
เทคโนโลยี -
HTTP, HTML, CSS และ
ดังนั้นสิ่งแรกที่เป็นบัฟเฟอร์ การโจมตีล้น
ดังนั้นลองมาดูที่รหัสนี้
มันง่ายสวย
มีฟังก์ชั่น foo เป็น
และจะไม่กลับอะไร
แต่จะใช้เวลาในการชี้ สตริงที่เรียกว่าบาร์
>> และก็จะต้องประกาศนี้ บัฟเฟอร์ซึ่งเป็นตัวละคร
อาร์เรย์ที่มี 12 ช่อง
และใช้ memcpy ซึ่งเป็นเพียง ฟังก์ชั่นที่คัดลอกจากที่อยู่อย่างใดอย่างหนึ่ง
เข้าไปอีก
ดังนั้นนี่คือการพยายามที่จะคัดลอกลงใน บัฟเฟอร์ของเราจากสิ่งที่
แถบจะชี้ไปที่
ดังนั้นความคิดใด ๆ สิ่งที่ผิด ที่มีรหัสนี้
>> ผู้ชม: ถ้าแถบมีความยาวมากกว่า C พวกเขาจะเขียนทับ
>> ANGELA LI: ใช่ว่า
เรามีการรับประกันว่าแถบ เป็นไปได้น้อยกว่า 12
เราเพียง แต่ทำบางจำนวนข้อ 12
และเราก็ต้องการให้ความหวังว่า ป้อนข้อมูลผู้ใช้ของเราจะน้อยกว่า
12 ตัวอักษรยาว
ดังนั้นในโลกที่เหมาะถ้าใส่เรา มักจะเป็นที่คาดหวังแล้วเราจะได้รับ
บางอย่างเช่นสวัสดี
ที่น้อยกว่า 12 ตัวอักษร
จะได้รับการอ่านในถ่านค
แล้วเราทำอะไรกับมัน
มันไม่ได้เรื่องจริงๆ
>> แต่เป็นคนที่เป็นอันตรายสามารถทำ บางสิ่งบางอย่างมากขึ้นเช่นนี้พวกเขาอยู่ที่ไหน
ทำให้เรามีสิ่งที่บาร์จะชี้ไปยัง ก็จะชี้ไปที่ array ใหญ่นี้
เพียงของ
และนี่คือวิธีที่ยาวกว่า 12
ดังนั้นมันจะไปตลอดทาง ลงที่นี่เพื่อกลับมาที่
ที่อยู่ที่ใช้จะเป็น
ดังนั้นสมมติว่าฟังก์ชั่นนี้ เรียกว่า foo
บางที foo ถูกเรียกโดยอื่น ฟังก์ชั่นซึ่งถูกเรียกโดยหลัก
ดังนั้นเมื่อ foo ทำงานก็ต้อง ที่จะทราบว่าจะกลับไปที่
>> ถ้า foo ถูกเรียกโดยฟังก์ชั่นบางอย่างการตั้งชื่อ baz จะได้รู้ว่ามันเป็น
ได้กลับไป baz ไป
และนั่นคือสิ่งนี้ที่อยู่ผู้ส่ง ลงที่นี่จะบอกเรา
แต่ถ้าเราเขียนทับกับอีกบางส่วน ที่อยู่ในกรณีนี้เป็น
ตัวแทนของที่อยู่ที่ มากจุดเริ่มต้นของ buffer นี้แล้ว
สิ่งที่จริงจะเกิดขึ้นคือ แทนที่จะกลับกลับไป baz,
ซึ่งเรียกว่าการทำงานของเราก็เป็นเพียง จะไปที่ด้านหน้าของรหัสนี้
>> และถ้าเรื่องนี้เป็นเพราะมี เพื่อนแฮกเกอร์ที่เป็นอันตรายมา
ฉีดนี้แล้วบางทีเงินจำนวนนี้ ของที่ไม่จริงของ
และก็จริงเพียงรหัสที่แบ่ง คอมพิวเตอร์ของคุณหรือสิ่งที่
ดังนั้นจะต้องมีการป้องกันเกี่ยวกับการจัดเรียงของนี้ สิ่งที่คุณต้องไม่เคยคิดว่า
เข้าของผู้ใช้เป็นบางอย่าง จำนวนของตัวอักษร
ตัวอย่างเช่นเมื่อคุณกำลังทำ สะกดคุณได้บอกว่าคำพูดของเขา
เพียง แต่จะเป็น 40 ตัวอักษร สูงสุดนาน
และนั่นเป็นสิ่งที่ดี
>> แต่ถ้าไม่ได้แล้วคุณจะต้อง ให้แน่ใจว่าจะอ่านเพียง แต่ใน 45
ตัวอักษรในเวลา
มิฉะนั้นคุณอาจจะเขียนทับ บัฟเฟอร์ของคุณ
คำถามใด ๆ เกี่ยวกับการที่
ใช่
>> ผู้ชม: คุณสามารถเพียงแค่พูดคุย เล็กน้อยเพิ่มเติมเกี่ยวกับเหล่านี้หรือไม่
>> ANGELA LI: ขออภัย
ใช่
>> ผู้ชม: ไมค์เป็นเพียงสำหรับวิดีโอ
ผมจะพยายามและโครงการ
สวัสดีครับ
Sup?
ดังนั้นขอไปกว่าสิ่งที่อยู่ใน ห้องสมุด CS50 ซึ่งคุณได้ใช้
ภาคการศึกษาทั้งหมดส่วนใหญ่ ที่จะได้รับข้อมูลจากผู้ใช้
ที่คุณรู้ว่าคุณมี CS50 ห้องสมุดโดยเพียงแค่การทำ CS50.h ซึ่ง
มีต้นแบบของ ฟังก์ชั่นที่คุณสามารถใช้เช่น
GetString และ GetInt และ GetFloat และอื่น ๆ
และมีหนึ่งบรรทัดนี้ใน CS50 ห้องสมุดที่กำหนดสตริงที่
พวกคุณทุกคนรู้ว่าตอนนี้ เป็นเพียงถ่าน *
>> แต่ขอใช้เวลามองที่ วิธีการทำงานของ GetString
นี้เป็นรุ่นที่ย่อมาก
คุณสามารถดึงไฟล์ห้องสมุด CS50 จากผมคิดว่า manuals.CS50.net
และคุณสามารถอ่านผ่านทาง ฟังก์ชั่นที่เกิดขึ้นจริง
แต่นี้ครอบคลุมบางส่วนของ ส่วนที่สำคัญ
ดังนั้นเราจึงได้สร้างบัฟเฟอร์บาง ที่มีความจุบางส่วน
และเราคือสิ่งที่เราจะได้รับตัวละครตัวหนึ่ง ตลอดเวลาจาก n มาตรฐาน
นั่นคือสิ่งที่ผู้ใช้ปัจจัยการผลิต ข้อความในคอนโซล
>> และอื่น ๆ ที่เรากำลังจะอ่านใน ตัวละครตราบใดที่มันไม่ได้ใหม่
เส้นและมันก็ไม่สิ้นสุดของแฟ้มที่ เป็นจุดสิ้นสุดของเข้ามาตรฐาน
และสำหรับตัวละครที่เราอ่านในทุก ถ้าตัวละครที่จบลงด้วยการเพิ่ม
ไปยังหมายเลขของตัวละครที่เราได้อ่าน และที่มีมากขึ้นกว่าความจุของเรา
แล้วสิ่งที่เราทำคือเราก็ปรับขนาดของเรา บัฟเฟอร์เพื่อที่จะยาวเป็นสองเท่า
ดังนั้นครั้งนี้ป้องกันบัฟเฟอร์ การโจมตีล้นเพราะคุณอ่านใน
ตัวละครในเวลา
และถ้าที่จุดใด ๆ ที่คุณอ่านในเกินไป ๆ คุณเพียงแค่ขยายบัฟเฟอร์ของคุณ
คุณคูณด้วยสอง
แล้วคุณจะมีห้องพักมากขึ้น
>> มิฉะนั้นคุณก็เพิ่ม อักขระบัฟเฟอร์
และหลังจากที่คุณได้อ่านในทุก ตัวละครก็จะหดตัวกันชน
กลับลงไปที่ขนาดปกติเพิ่ม null จบแล้วจึงค่อยกลับ
ตอนนี้ให้ดูที่ GetInt
พวกคุณสามารถอ่านนี้
ฉันสามารถขยายบิต
ผมไม่ทราบว่าวิธีการทำงานของคอมพิวเตอร์
ไม่เป็นไร
ฉันไม่สามารถขยายได้อย่างถูกต้อง
>> นี้เป็นเรื่องยากมาก
ฉันขอโทษ
ขอเพียงดูที่นี้
ดังนั้นสิ่งที่ GetInt ไม่สามารถที่จะอ่านเป็นครั้งแรก ในสตริงจาก GetString, ซึ่ง
เราได้ดำเนินการก่อนที่จะ
และส่วนที่สำคัญที่จะต้องทราบที่นี่ คือถ้าใช้งานร่วมกันว่ามันจะสิ้นสุดลงนี้
การอ่านเป็นเหมือนไม่จริงสตริง จากนั้นเราก็กลับไป INT_MAX
เป็นตัวแทนของความล้มเหลว
ทำไมเรากลับ INT_MAX แทน ลบ 1 หรือ 1?
ความคิดใด?
>> ผู้ชม: [ไม่ได้ยิน] ลบ 1 หนึ่ง
>> ANGELA LI: ใช่ว่า
ดังนั้นวิธีที่คุณมีแนวโน้มที่จะต้องการเพียงแค่ ใส่ 1 หรือลบ 1 เมื่อได้รับข้อความ
สำหรับ maxes ชับชับและสิ่งที่
มันใหญ่
คุณอาจจะไม่ใช้มัน
ดังนั้นนี้เป็นเหมือนการตัดสินใจการออกแบบที่จะ ให้แน่ใจว่าคุณไม่ได้ตั้งใจ
กลับผิดพลาดหรือคุณไม่กลับ 1 ซึ่งอาจจะมีการแยกวิเคราะห์
เป็นคำตอบที่ถูกต้อง
ดังนั้นถ้าสายไม่อยู่ เรากลับ INT-MAX
มิฉะนั้นเราจะใช้ sscanf, ซึ่งเป็นเหมือน scanf
แต่อ่านจากสตริง
>> และเรามีรูปแบบนี้ สตริงซึ่งเป็น i% c%
และเราพยายามที่และตรงกับที่มีการ สิ่งที่ผู้ใช้ให้เรา
เราต้องการให้จำนวนของสิ่งที่ตรงกับ จะเป็น 1 ซึ่งหมายความว่าเราเพียง
อยากให้ตรงกับจำนวนเต็ม ล้อมรอบด้วยสีขาวอาจจะ
พื้นที่อาจจะไม่
ในกรณีนี้หากคุณใส่ในสิ่งที่ เช่นแถบบาร์ไม่ตรงกับที่ทั้งหมด
เพราะมีความต้องการที่จะ เลขที่เริ่มต้น
ดังนั้น sscan ไม่เคยหัน 0
ดังนั้นคุณจะไม่กลับมาที่
>> หรือถ้าคุณวางในบางสิ่งบางอย่าง เช่น 1, 2, 3, A, B, C, การแข่งขันว่า
ทั้งจำนวนเต็ม แต่ยัง ตัวละครหลังจากที่มัน
ดังนั้น sscanf จะกลับ 2 ซึ่ง นอกจากนี้ยังไม่เหมาะ
คุณไม่ต้องการที่ 1, 2, 3,, B, C จะเป็น int ที่ถูกต้อง
ดังนั้นที่ยังไม่ได้ทำงาน
แต่บอกว่าที่คุณใส่ในสิ่งที่ชอบ 50
ที่จะตรงกับฉัน% ซึ่งหมายความว่า จะได้รับการอ่านใน n
และตอนนี้ n จะมีจำนวน 50
แล้วคุณสามารถส่งคืนได้
>> มิฉะนั้นคุณจะตีลองอีกครั้ง
และแล้วมันก็ไปอีกครั้งจน คุณจะได้รับข้อมูลที่ถูกต้องจากผู้ใช้
คำถามใด ๆ เกี่ยวกับการที่
>> ผู้ชม: ดังนั้นถ้าคุณกำลังจะพิมพ์ออกมา ค่าของ GetInt บน [ไม่ได้ยิน]
มันจะเป็นเพียงแค่จำนวนเต็มและสูงสุด?
>> ANGELA LI: ใช่
ดังนั้นหากคุณใช้ GetInt คุณควรคิด ที่คุณไม่ต้องการที่จะมีลำดับสูงสุด
จะเป็นข้อมูลที่ถูกต้องเพราะคุณกำลังจะ จะคิดว่าที่เป็นเรื่องไม่ดี
>> ผู้ชม: ถ้าเราไม่ได้มีถ่านและค คนที่ใส่ใน 1, 2, 3, แซมจะมัน
ยังคงทำงานเป็นเวลา 1, 2, 3 หรือไม่?
>> ANGELA LI: ผมคิดว่ามันจะทำงาน
แต่คุณไม่ต้องการที่จะ 123Sam จะเป็นข้อมูลที่ถูกต้องโดยผู้ใช้
ที่ไม่จริง int
ดังนั้นจึงดูเหมือนจะไม่ยุติธรรม ที่จะแยกเป็น int
ตกลง
ในกรณีที่ปล่อยให้ย้ายของ บนอินเทอร์เน็ต
HTTP ดังนั้นไม่เป็นภาษา
HTTP เป็นเพียงชุดของมาตรฐานสำหรับ วิธีการที่คุณส่งสิ่งจากลูกค้า
ที่คุณไปยังเซิร์ฟเวอร์
นั่นคือคนอื่น ๆ บนเว็บ
>> ดังนั้น HTTP ย่อมาจาก Hypertext Transfer Protocol
มันเป็นหัวใจและจิตวิญญาณ ของเว็บทั้งหมด
ส่วนไฮเปอร์เพียง หมายถึง HTM​​L
โอนเป็นลูกค้าเช่น คุณจะส่งคำขอไปยัง
เซิร์ฟเวอร์ที่ให้การตอบสนอง
และโปรโตคอลเป็นเพียงวิธีการที่ทำ เซิร์ฟเวอร์ที่คุณคาดหวังที่จะประพฤติ?
และคุณจะถูกวิธีควรจะประพฤติ เช่นที่คุณสามารถปรับปรุงนี้
กระบวนการสื่อสาร
>> ดังนั้นการร้องขอดูมากเช่นนี้
GET เป็นประเภทของคำขอ
พวกคุณได้เห็นการร้องขอ GET และขอโพสต์
ว่าสิ่งที่สองที่มี / ฉันว่า เพียง URI หรือ URL ที่คุณ
ต้องการที่จะไปในพื้นที่
ดังนั้นคำขอนี้จะขอ หน้าเหมือน www.facebook.com / ฉัน
และมันก็เป็น GET คำขอ
แล้ว HTTP/1.1 นี้ว่าเป็นเพียง รุ่นของ HTTP ที่คุณกำลังใช้
มันเกือบจะเสมอ 1.1
>> แล้วมีพวง ของสิ่งอื่น ๆ ด้วย
จริงๆคุณสามารถมองเห็นเหล่านี้ถ้าคุณ เปิดคอนโซลของคุณเมื่อคุณ
การท่องเว็บ
คำตอบมีลักษณะบางอย่าง มากขึ้นเช่นนี้
ส่วนด้านบนเป็นอีกครั้ง ชนิดของ HTTP ที่คุณกำลังใช้
ตามด้วยรหัสสถานะ
ดังนั้น 200 ตกลงนั้นเป็นทุกอย่างทำงานออก
นี่คือเนื้อหาของคุณ
เนื้อหาของคุณเป็นไปตาม
แล้วมันจะบอกคุณว่าชนิด ของเนื้อหาและสิ่งอื่น ๆ ด้วย
>> รหัสสถานะที่มีไม่กี่ คนสำคัญที่คุณควรรู้
200 ตกลงเป็นเหมือนทองทุกอย่าง
การทำงานทุกอย่าง
403 พระราชวังต้องห้าม
นี้คุณอาจจะได้เห็นถ้าคุณลืม เพื่อสิ่งที่ถูกต้อง chmod
ก็หมายความว่าคุณไม่ได้มี สิทธิ์ในการ
เข้าถึงที่อยู่บนเซิร์ฟเวอร์
มันเหมือนไม่มีคุณไม่สามารถมองเห็นได้
404 หมายถึงสิ่งที่ไม่มีอยู่
ไม่พบ
คุณอาจได้เห็นว่าเป็นจำนวนมาก
>> 500 ข้อผิดพลาดของเซิร์ฟเวอร์ภายในเป็นปกติ เช่นสิ่งที่ผิดพลาดในด้าน
ของเซิร์ฟเวอร์
ดังนั้นเมื่อคุณได้รับการดำเนินการ pset7, ถ้าคุณมีข้อผิดพลาด PHP, คุณสามารถ
จริงไปที่หน้าและดู ทั้งกลุ่มของสิ่งที่ผิดพลาด PHP
แต่ที่ไม่ปกติเกิดขึ้น เพราะเว็บไซต์ไม่ได้จริงๆต้องการที่จะ
บอกคุณว่าทำไมเว็บไซต์ของพวกเขาถูกทำลาย
พวกเขาอาจจะเพิ่งกลับ 500 ข้อผิดพลาดของเซิร์ฟเวอร์ภายใน
>> แล้วมี 418 ฉันกาน้ำชา
มีเรื่องราวทั้งหมดเกี่ยวกับการเป็น เหตุผลที่ว่าเป็นสิ่งที่
แต่คุณสามารถอ่านเกี่ยวกับที่ ในเวลาของคุณเอง
มีทั้งกลุ่มของ รหัสสถานะอื่น ๆ ด้วย
แต่เหล่านี้เป็นคนที่ ที่คุณควรรู้
เพื่อขอพูดคุยเกี่ยวกับ HTML
HTML, จำไม่ได้ การเขียนโปรแกรมภาษา
มันเป็นภาษามาร์กอัป
นั่นหมายความว่ามันอธิบายเนื้อหา
มันจะบอกคุณว่าเอกสารดู เหมือนหรือไม่สิ่งที่ดูเหมือนว่า
แต่วิธีการที่มันมีโครงสร้าง
>> ดังนั้นจึงกำหนดโครงสร้างและ ความหมายของหน้าเว็บ
มันก็เหมือนกับการนี​​้เป็นวรรค
นี้เป็นรายการสั่งซื้อ
นี้เป็นเหมือนส่วนหนึ่งของหน้าเว็บของฉัน
นี่คือชื่อเรื่อง
มันไม่สิ่งที่ต้องการที่
มันไม่ได้รูปแบบใด ๆ ของว่าเพราะ นั่นคือสิ่งที่คุณทำใน CSS
และดูเหมือนว่าชุด แท็กที่ซ้อนกัน
เพื่อที่จะใช้ตัวอย่างของพื้นฐานจริงๆ หน้าคุณมี DOCTYPE
ประกาศขึ้นมี
>> ประกาศ DOCTYPE นี้เป็น ว่าเรากำลังใช้ HTML5
แล้วคุณมีแท็กใหญ่
มันมีหัวและร่างกาย
ในหัวของคุณมีชื่อ
นั่นคือสิ่งที่จะไปอยู่ในชื่อเรื่อง บาร์เบราว์เซอร์ของคุณ
เรามีแท็กลิงค์ที่เชื่อมโยง ในสไตล์ชีทภายนอก
แล้วเรามีสคริปต์ที่ดึง จากจาวาสคริปต์ภายนอกได้เป็นอย่างดี
>> แล้วภายในร่างกายของเราเป็นจริง สิ่งที่ได้รับแสดงในหน้า
เรามีวรรคแล้ว ภาพภายในย่อหน้าที่
อันนี้คือภาพของลูกแมว
ขอให้สังเกตว่าภาพ แท็กปิดตัวเอง
ดังนั้นแทนที่จะเปิดด้วยภาพ แล้วทำอีก / ภาพคุณ
เพียงแค่ต้องเฉือนนี้น้อย ที่นี่ซึ่งปิดมัน
และแท็กรูปภาพนอกจากนี้ยังมีคีย์นี้ แอตทริบิวต์ค่าที่เรียกว่าแอลที
นั่นเป็นข้อความที่ทางเลือกที่ ที่เกิดขึ้นเมื่อคุณเลื่อนเมาส์ไปมัน
>> องค์ประกอบส่วนใหญ่มีบางค่าคีย์ สิ่งที่คุณสามารถให้มันต่างๆ
การปรับแต่ง
ใช่
>> ผู้ชม: [ไม่ได้ยิน]
>> ANGELA LI: ดีจึงเป็น คุณลักษณะของแท็ก
ดังนั้นหากคุณใช้ jQuery, คุณสามารถ เลือกทำ image.getAttribute
และจากนั้นคุณสามารถค้นหา ได้รับแอตทริบิวต์ alt
และมันจะทำให้คุณมีลูกแมว
ถ้าคุณจำในรูปแบบ HTML, การป้อนข้อมูล องค์ประกอบจะมีแอตทริบิวต์ชื่อ
และนั่นคือสิ่งที่ PHP ใช้ในการส่ง ร้องขอเมื่อฟอร์มถูกส่งไป
>> ผู้ชม: คุณพูดถึงบางสิ่งบางอย่าง เกี่ยวกับวิธีการถ้าคุณใช้ kittens.jpg หรือ
สิ่งที่มีขาดหายไป ไฟล์โฟลเดอร์หรือไฟล์อื่น ๆ
>> ANGELA LI: ใช่
ดังนั้นนี่คือสิ่งที่เรียกว่าญาติ เส้นทางเพราะฉันไม่ให้
คุณเส้นทางที่เต็มรูปแบบ
นี้เป็นเหมือนเมื่อใน C ถ้าคุณทำ fopen บางไฟล์ถ้าคุณ hi.txt fopen ที่
hi.txt คาดว่าจะอยู่ในที่เดียวกัน ไดเรกทอรีจนกว่าคุณจะให้มันมากขึ้น
เส้นทางที่ซับซ้อน
>> ผู้ชม: เพ​​ื่อให้คุณสามารถระบุ ซึ่งโฟลเดอร์ [ไม่ได้ยิน]?
>> ANGELA LI: ใช่
และคุณสามารถดูวิธีการทำที่
แต่ถ้าผมต้องการที่จะได้รับ kittens.jpg ออก ของไดเรกทอรีแม่ผมจะทำ
.. / kittens.jpg
ใช่
ขอโทษ
ใช่
โอ้คนที่ฉันลืมคำถาม
สิ่งที่เป็นคำถามได้หรือไม่
โอ้คำถามก็คือ kittens.jpg คาดว่าจะอยู่ในไดเรกทอรีเดียวกันได้หรือไม่
และในกรณีนี้มันเป็น
แต่คุณยังสามารถให้เส้นทางบาง ดังกล่าวว่ามันไม่ได้จำเป็นต้องเป็น
ดี?
>> CSS
ดังนั้น, CSS เช่น HTML, ไม่ได้เป็น การเขียนโปรแกรมภาษา
CSS เป็นเพียงชุดของกฎการออกแบบ
มันย่อมาจาก Cascading Style Sheets
และคุณใช้มันร่วม กับ HTML ไปยังหน้าสไตล์
ดังนั้นมีสามวิธีคือ คุณสามารถรวมไว้
วิธีการหนึ่งที่คุณสามารถทำมันอยู่ในหัว เป็นส่วนหนึ่งของ HTM​​L ของคุณคุณสามารถเพียงแค่
เปิดแท็กรูปแบบแล้วติด กฎ CSS ในการมี
ก็ OK สวย
ใช่
>> ผู้ชม: คุณสามารถนำผู้ที่ ที่แท็กรูปแบบในระหว่างขอ
พูด, ร่างกายและ / ร่างกาย
แล้วคุณจะจัดแต่งทรงผม เพียง แต่ในร่างกาย
>> ANGELA LI: คุณสามารถ
มันจะทำงาน
แต่คุณไม่ควรเพราะการออกแบบเป็น ชนิดของข้อมูลที่ควรจะไปใน
หัวของเอกสารของคุณ
ร่างกายควรจริงๆมีเพียง สิ่งที่จริงจะ
แสดงขึ้นบนหน้าของคุณ
>> ผู้ชม: ดังนั้นคุณต้องการใส่สไตล์ ในหัวของคุณสไตล์
หน้าเว็บทั้งหมดใช่ไหม
>> ANGELA LI: ใช่
ดังนั้นการวางรูปแบบที่นี่, CSS กฎเหล่านี้ จะนำไปใช้ทั้งหน้าอยู่บนพื้นฐานของ
ตัวเลือกของพวกเขา
ดังนั้นวิธีที่ดีกว่าที่จะทำมันเป็นแทน ของการมีแท็กสไตล์ในหัวของคุณ
คุณมีการเชื่อมโยงกับรูปแบบภายนอกนี้ แผ่นเหมือนที่ผมแสดงให้เห็นว่าคุณอยู่ใน
ตัวอย่างก่อนหน้านี้
สิ่งนี้จะพยายามและพบว่า ไฟล์ style.css แล้วดึงมัน
และใช้เป็นที่ รูปแบบสำหรับหน้า
และ style.css ของคุณจะ เพียงแค่มีลักษณะเช่นนี้
มันก็จะเป็นพวงของ CSS
>> และในที่สุดก็มีอีกวิธีหนึ่งที่เป็นคุณ สามารถรวม CSS ซึ่งคุณจริงๆ
จะไม่เคยทำ
มันเป็นสไตล์แบบอินไลน์โทร
และเพื่อให้องค์ประกอบ HTML ใด ๆ นอกจากนี้ยังสามารถ ใช้แอตทริบิวต์สไตล์
แล้วในรูปแบบแอตทริบิวต์ที่ คุณสามารถให้มันกฎ CSS
ดังนั้นในกรณีนี้สิ่งที่ div ฉัน การกำหนดที่นี่มันจะ
มีพื้นหลังสีดำและ สีของตัวอักษรสีขาว
แต่คุณไม่ควรทำเช่นนี้เพราะสิ่งที่ นี้ไม่เป็นมันทำให้จัดแต่งทรงผมของคุณ
ภายใน HTML ของคุณ
>> และฉันรู้ว่าเราได้รับการพูดคุยเกี่ยวกับ HTML เป็นโครงสร้างและ CSS เป็นรูปแบบ
ถ้าคุณทำเช่นนี้ก็ผสม พวกเขาร่วมกัน
และก็ไม่ได้สะอาดมาก
ดังนั้นอย่าทำอย่างนั้น
ตัวอย่างของการใช้ CSS ขึ้นที่นั่นเรา เพียงเลือกร่างกายของ HTM​​L
สารคดี
และเราก็ชอบทุกอย่าง จะเป็น Sans การ์ตูน
ฉันยังไม่แนะนำให้
แต่คุณสามารถทำเช่นนั้นได้
>> กฎข้อที่สองที่นี่ก็จะ เพื่อเลือกองค์ประกอบที่
หน้าหลักที่มีรหัส
ดังนั้นสิ่งที่ HTML องค์ประกอบผมบอกว่า ID = หลักฉันจะให้ที่
ขอบ 20 พิกเซลและจัดทุกอย่าง ข้อความทั้งหมดไปยังศูนย์
สิ่งสุดท้ายที่จะเลือกเรียน CSS
ดังนั้นองค์ประกอบใดบนหน้าเว็บที่ผมให้ ชั้นส่วนฉันจะทำให้มัน
สีพื้นหลังของสีฟ้าอ่อน
ครับ
นั่นคือทั้งหมดที่ผมได้รับ
คำถาม?
>> ผู้ชม: อะไร hashtag ก่อนที่จะเป็นหลักทำอย่างไร
>> ANGELA LI: คำถามคือสิ่งที่ไม่ hashtag ก่อนที่จะทำหลัก?
ในกรณีนี้ในกัญชา CSS หมายความว่าเลือกตามหมายเลข
ดังนั้นถ้าผมมีองค์ประกอบบางอย่างเช่น divId = หลัก, CSS นี้กฎเลือก
สิ่งที่มีรหัสหลัก
และเช่นเดียวกันในช่วงเวลาที่ด้านหน้าของ ส่วนคือการเลือกโดยชั้น CSS หรือ
เลือกโดยชั้น HTML
>> ผู้ชม: ทำไมถึงมีก่อนที่จะมี 6 ในสีพื้นหลัง
>> ANGELA LI: ใช่
ดังนั้นคำถามคือทำไมมี กัญชาก่อน 6?
นี้แตกต่างจากกัญชาที่
ซึ่งหมายความว่าคุณกำลังให้ สีฐานสิบหก
ดังนั้นสีฐานสิบหกนี้ก็ แสดงให้เห็นถึงสี
และคุณจำอเนกประสงค์ RGB เมื่อ คุณไม่ pset นิติ?
นี้จะคล้าย
ตัวเลขสองหลักแรกเป็นตัวแทนของ วิธีการที่สีแดงมากที่อยู่ในสี
สองสองเป็นตัวแทนของ เท่าใดสีเขียว
และคนที่สามแสดงให้เห็นถึง เท่าใดสีฟ้า
และกัญชาเป็นนี้เป็นไป เพื่อเป็นตัวแทนของสี
>> ดังนั้นอะไรจาก 0, 0, 0, 0, 0, 0 ถึง F, F, F, F, F, F เป็นที่ถูกต้อง
มันเป็นบางสีที่ถูกต้องที่สามารถ จะแสดงโดยเบราว์เซอร์ของคุณ
คำถาม?
>> ผู้ชม: ความแตกต่างระหว่าง โดยใช้ ID และชั้น?
>> ANGELA LI: คำถามคือสิ่งที่ ความแตกต่างระหว่าง
โดยใช้ ID และชั้น?
คุณสามารถมีเพียงองค์ประกอบหนึ่งใน เอกสารที่มีรหัสที่ได้รับ
ดังนั้นเพียงสิ่งเดียวในหน้าของฉัน ได้รับอนุญาตให้มี ID หลัก
เพื่อให้คุณใช้งานได้นี้เป็นส่วนหัว
นี้เป็นการนำ
นี้เป็นส่วนท้าย
ชั้นเรียนที่แตกต่างกันเพราะคุณสามารถ ใช้การเรียนการองค์ประกอบเป็นจำนวนมาก
ตามที่คุณต้องการ
>> ดังนั้นสำหรับตัวอย่างเช่นที่ผมทำส่วนชั้นเรียน เพราะอาจมีมากกว่าหนึ่ง
ส่วนที่เกี่ยวกับหน้าของฉัน
คุณได้รับอนุญาตเพียงแค่มีเป็นจำนวนมาก องค์ประกอบบนหน้าด้วยเหมือนกัน
ชั้น แต่เพียงคนเดียวที่มีรหัสบางอย่าง
>> ผู้ชม: ดังนั้นจุดแสดงให้เห็นถึง ชั้นเรียนหรือไม่
>> ANGELA LI: ใช่
จุดแสดงให้เห็นถึงระดับ
เย็น
นั่นคือทั้งหมดที่ฉันมีพวก
ขอบคุณ
>> [APPLAUSE]
>> ZAMYLA จัน: สวัสดีครับทุกคน
ฉัน Zamyla
ฉันจะครอบคลุม PHP, MVC และ SQL วันนี้
จำนวนมากของวัสดุที่ฉันจะเป็น ครอบคลุมเป็นไปได้สวยมาก
ขวาออกจาก pset7
ขวาทั้งหมด
ดังนั้นสิ่งที่เป็น PHP?
PHP ยืนสำหรับ PHP Hypertext preprocessor
ดังนั้นในตัวเองเป็นซ้ำ ชื่อซึ่งเป็นเย็นสวย
PHP เป็นภาษาสคริปต์ฝั่งเซิร์ฟเวอร์ และให้แบ็กเอนด์
และตีแผ่ตรรกะ ในเว็บไซต์ของเรา
>> ดังนั้นแองเจล่าพูดคุยกันมากเกี่ยวกับ HTML และ CSS ที่จะทำให้โครงสร้าง
ของเว็บไซต์
แต่สิ่งที่ถ้าคุณต้องการที่จะเปลี่ยนที่ เนื้อหาแบบไดนามิกหรือถ้ามันแตกต่างกันไป
ขึ้นอยู่กับผู้ใช้หรือ เงื่อนไขที่แน่นอนหรือไม่
นั่นคือสิ่งที่ PHP มา
ตอนนี้ปกติ, PHP อาจใช้เวลาไม่กี่ สายน้อยที่จะดำเนินการในสิ่งเดียวกัน
ใน C. นั่นเป็นเพราะ PHP จัดการหน่วยความจำ การจัดการสำหรับโปรแกรมเมอร์ที่
เมื่อเทียบกับที่เราต้อง malloc สิ่งที่ฟรีเช่น
>> แต่เนื่องจาก PHP เป็นสื่อความหมาย ภาษาโดยทั่วไปก็อาจจะดำเนินการ
ช้าบิตมากกว่า C ซึ่ง เป็นภาษาที่รวบรวม
เพราะเรากำลังย้ายการเขียนโปรแกรม ภาษาให้ดูที่วิธีการที่
ไวยากรณ์จะแตกต่างกัน
ขอให้ระมัดระวังที่จะไม่ ได้รับสับสนกับเรื่องนี้
ดังนั้นด้วยไวยากรณ์ PHP ไม่ว่าคุณจะ ฝัง PHP ของคุณภายในของ HTM​​L
หรือยื่นภายในแฟ้ม PHP. เองคุณ จำเป็นที่จะต้องใส่รหัสในที่โล่ง
PHP และแท็กปิดเช่น PHP ดังต่อไปนี้เช่นเดียวกับบนหน้าจอ
>> ตัวแปรใน PHP
ทุกตัวแปรเดียวจะเริ่มต้นด้วย สัญญาณ $ ตามด้วยชื่อของ
ตัวแปรของคุณ
ตอนนี้ตัวแปรใน PHP ที่พิมพ์ลงไปอย่างอิสระ ซึ่งหมายความว่าคุณไม่จำเป็นต้อง
เพื่อแสดงให้เห็นสิ่งที่ชนิดข้อมูล คือเมื่อคุณกำลังประกาศว่า
แต่นี้ไม่ได้หมายความว่าพวกเขา ไม่ได้มีรูปแบบใด ๆ
ดังนั้นถ้าผมประกาศตัวแปรและกำหนดเพียงแค่ มันเท่ากับ 1 แล้วผมประกาศ
ตัวแปรอื่นตั้งค่าเท่ากับ "1" และหลังจากนั้นอีกหนึ่ง 1.0 ดี
ขึ้นอยู่กับประเภทของความเท่าเทียมกัน ผู้ประกอบการที่ผมใช้ถ้าผมต้องการที่จะเปรียบเทียบ
ในทุกประเภทแล้ว พวกเขาจะต้องมีค่าเท่ากับ
แต่ถ้าผมต้องการที่จะให้แน่ใจว่า ประเภทเท่ากัน, PHP ยังสามารถทำ
ที่ถึงแม้เราไม่ได้แสดงให้เห็น ชนิดมันคือเมื่อเรา
ครั้งแรกที่สร้างไฟล์
>> ตอนนี้ใน PHP แม้ว่าเรามี เปลี่ยนไปจากการเขียนโปรแกรม
ภาษาจาก C เรายังมีของเรา เชื่อถือถ้าเงื่อนไขเช่นเดียวกับนี้
เรายังมีวงของเราในขณะที่เพียง เช่นนี้ที่คุณใส่ในของคุณ
สภาพแล้ว ร่างกายของวง
แล้วเรายังมีของเราห่วง ซึ่งโดยปกติจะมีลักษณะเช่นนี้
ดังนั้นถ้าผมอยากจะย้ำกว่าทุก เก้า psets และส่งและเรียก
submitPset ฟังก์ชั่นแล้วฉันจะทำอย่างนั้น ที่นี่ซึ่งพวกคุณมีทั้งหมด
ทำได้โดยจุดนี้
ขอแสดงความยินดีโดยวิธีการที่
>> สำหรับกล้องคน กล่าวว่าขอขอบคุณ
ตอนนี้ถ้าคุณไม่ได้ต้องการเพียงแค่ใช้นี้ สำหรับวงแล้ว PHP จริงยัง
มีสิ่งที่เรียกว่าลูป foreach
ดังนั้นถ้าผมมีอาร์เรย์ของจำนวนเต็ม 0 ถึง 8, เก็บไว้ใน psets อาร์เรย์
แล้วฉันจะมีห่วง foreach ที่ iterates กว่าตัวเลขใน psets ทุก
แล้วฉันสามารถโทรเดียวกัน ทำงานแปดครั้ง
เช่นเดียวกับที่ผมเคยทำมาก่อน
ดังนั้นนี้สำหรับแต่ละวงเป็นสิ่งที่ดีเพราะ คุณจะได้ไม่ต้องถ้าคุณไม่ทราบ
ระยะเวลาที่แน่นอนของอาร์เรย์ที่คุณ ได้แล้วใช้ห่วง foreach นี้
จะดูแลที่สำหรับคุณ
>> ดังนั้นผมจึงทำ psets เป็นอาร์เรย์
ลองดูที่ว่า
อาร์เรย์ใน PHP มักจะเป็นเช่นเดียวกับ คนที่เราเคยมีใน C ที่
คุณสามารถประกาศอาร์เรย์
และที่นี่ผมสามารถประกาศอาร์เรย์ว่างเปล่า แล้วสร้างขึ้นแบบไดนามิกโดยใช้
ดัชนีเป็นจำนวนเต็ม
ดังนั้นดัชนี 0, ฉันจะเก็บ เลขที่ 1 ชื่อ
ดัชนีที่ 1 จากรายการของฉันฉันจะ เพื่อเก็บค่า 2
และดัชนีที่สาม แต่ จำนวนครั้งที่สองฉันจะไป
เก็บหมายเลข 12
>> ตอนนี้เป็นที่ดีในการที่ ทำงานก็ทำงานได้ดี
แต่บอกว่ามันมีความสำคัญกับผม สิ่งที่แต่ละดัชนีถือ
สำหรับผมดัชนี 0 หมายความว่า แมวจำนวนมากที่ฉันมี
และดัชนีที่ 1 หมายความว่า นกฮูกหลายฉันมี
และหนึ่งต่อไปหมายความว่าหลายสุนัข
กันแล้วจึงมีการระบุว่าแทน ต้องจำ 0 เกี่ยวข้องกับ
แมวและนกฮูก 1 ถึงฉันจะสามารถใช้ arrays สมาคมซึ่งหมายความว่า
แทนของจำนวนเต็มเป็นดัชนีของฉัน ที่จริงผมสามารถใช้สาย
>> ดังนั้นนี้เป็นประโยชน์มาก
และคุณได้เพียงแค่เปลี่ยนพื้น จำนวนเต็มกับสตริง
และมีคุณมี อาเรย์
ใช่
>> ผู้ชม: มีเหตุผลที่ว่าทำไมมี ขีดที่สอง
ส่วนหนึ่งเพราะรายการของฉันมีอาร์เรย์
>> ZAMYLA จัน: คำถามคือเป็น มีเหตุผลว่าทำไมมี
ขีดระหว่างและรายชื่อของฉันได้อย่างไร
เลขที่
นั่นเป็นเพียงวิธีการที่ผมตั้งชื่อ ตัวแปรของฉัน
>> ผู้ชม: ในครั้งแรก สายก็เป็นหนึ่งคำ
>> ZAMYLA จัน: ฉันขอโทษ
ฉันจะแก้ไขที่
ใช่
พวกเขาควรจะเป็นชื่อตัวแปรเดียวกัน
ดีจับ
ตกลง
จึงขอย้ายไปยังสตริง concatenation
ถ้าผมอยากจะใช้เวลาสองสตริง แล้วฉันจะเชื่อมพวกเขา
กับผู้ประกอบการจุด
ดังนั้นถ้าผมมีไมโลเป็นชื่อแรก และกล้วยเป็นชื่อที่ผ่านมานั้น
เชื่อมโยงกับผู้ประกอบการและจุด แล้ววางในพื้นที่ระหว่าง
จะทำให้สายที่มีไมโล กล้วยซึ่งฉันสามารถสะท้อนหรือ
แต่พิมพ์ออกมา
>> การพูดของก้องขอพูด เกี่ยวกับการที่มีประโยชน์ไม่กี่ -
อุ่ย
ฉันขอโทษ
ฟังก์ชั่นที่มีประโยชน์ไม่กี่ PHP
ดังนั้นเราจึงมี -
ปัญหาทางเทคนิค
คนที่สอง
ผมได้ส่ง
ปัญหา PowerPoint
และเราจะกลับมาพร้อมกับฟังก์ชั่น PHP
>> ดังนั้นเราจึงได้จำเป็นต้องมีฟังก์ชั่นที่ ถ้าคุณผ่านในแฟ้มนี่เป็นเพียง
ตัวอย่างของไฟล์ที่ ฉันอาจจะผ่านเข้ามา
จากนั้นที่จะรวมโค้ด PHP จากไฟล์ที่ผมชี้ให้เห็นว่า
และมันก็จะประเมินว่าค่ะ
แล้วเรายังมีก้องซึ่ง ขนานกับ printf
ออกเป็นคู่ขนานที่จะทำลาย, ซึ่งออกจากบล็อกของ
รหัสที่คุณอยู่ค่ะ
แล้วตรวจสอบไม่ว่าจะเป็นที่ว่างที่กำหนด ตัวแปรเป็นเหมือนโมฆะหรือศูนย์หรือ
สิ่งที่บรรจุด้วยการเป็นที่ว่างเปล่า
ใช่
>> ผู้ชม: สำหรับสตริง concatenation จุดดำเนินการอย่างใดอย่างหนึ่งใน PHP คือว่า
เช่นเดียวกับในจาวาสคริปต์ที่มันใช้ จุดเพื่อเชื่อมหมายความบวก
ดังนั้นสำหรับชื่อเต็มของคุณอาจมีเงินดอลลาร์ เข้าสู่ระบบครั้งแรก + + แล้วครั้งสุดท้าย
>> ZAMYLA จัน: ใช่
ดังนั้นคำถามก็คือว่าใน PHP เรา สามารถใช้เชื่อมสายเดียวกัน
เช่นใน JavaScript ด้วย pluses
และโจเซฟจะได้รับในภายหลังว่า
ผมคิดว่าเขามีสไลด์ที่
ที่จริงมันแตกต่างกัน
ดังนั้นใน JavaScript คุณจำเป็นต้องใช้ บวกการเชื่อมสาย
และใน PHP, คุณจะต้อง ใช้ประกอบจุด
ดังนั้นพวกเขากำลังที่แตกต่างกัน
>> ตกลง
ดังนั้นขณะนี้ที่เราได้ครอบคลุมทั้งหมด PHP นี้ซึ่งไม่ได้
มาจริงๆในการมีประโยชน์
ดีก็มาในสะดวกเมื่อเรา สามารถรวมกับ HTML ของเรา
ดังนั้น PHP ของเราจะทำให้เรามีอำนาจที่จะ ปรับเปลี่ยนเนื้อหาของหน้าเว็บก่อนที่จะ
โหลด
ดังนั้นขึ้นอยู่กับเงื่อนไขที่แตกต่างกัน ปกติผู้ใช้เฉพาะที่
เข้าสู่ระบบแล้วเราสามารถแสดง ข้อมูลที่แตกต่างกัน
ลินดาไม่คุณมีคำถามหรือไม่
>> ผู้ชม: คุณสามารถเชื่อม ยังจำนวนเต็ม
>> ZAMYLA จัน: ใช่คุณสามารถ
ดังนั้นคำถามคือถ้าคุณสามารถ เชื่อมจำนวนเต็มหรืออื่น ๆ
variable.s ตอนนี้เราย้ายไปยัง MVC ซึ่ง เป็นกระบวนทัศน์ที่เราใช้ใน
pset7 และจำนวนมากของนักออกแบบเว็บใช้สำหรับการ การจัดรหัสในไฟล์
ในเว็บไซต์ของพวกเขา
M ย่อมาจากรุ่น
และพื้นไฟล์รูปแบบที่จะจัดการ ด้วยการติดต่อกับฐานข้อมูล
ดูไฟล์ที่เกี่ยวข้องกับ ความสวยงามของเว็บไซต์
และจับตัวควบคุม การร้องขอของผู้ใช้จะแยกวิเคราะห์
ข้อมูลไม่ตรรกะอื่น ๆ
>> ใน pset7 เรารวมรุ่น และควบคุม
และเราก็เรียกว่าพวกเขาควบคุมและ ใส่ไว้ในไดเรกทอรีสาธารณะ
และดูไฟล์ที่เราใช้พวกเขาเป็น แม่แบบในไดเรกทอรีแม่
ดังนั้นแผนภาพนี้ที่นี่ยังหมายถึง ที่ชนิดเดียวกันของการแบ่งกับ
รูปแบบและตัวควบคุมในสีม่วง ที่นี่ด้านซ้ายและ
มุมมองด้านขวา
ดังนั้นนี่คือแผนผังว่าบางส่วนของคุณ อาจจะมองเห็นได้ในเวลาทำการหรือ
ภาพที่เราวาดภาพตามที่คุณ ถูกหา pset ของคุณ
>> ดังนั้นที่นี่ในการควบคุมที่กำหนดรูปแบบ ควบคุมเรามีฟังก์ชั่น
ที่เกี่ยวข้องกับการสอบถาม SQL ฐานข้อมูลการดำเนินการตรรกะ PHP
บางทีคุณอาจจะมองหา หุ้นใน Yahoo!
การเงิน
หรือบางทีคุณอาจจะเพียงแค่การตรวจสอบเพื่อ ดูว่าผู้ใช้ที่ได้ส่งมา
รูปแบบอยู่แล้วก่อนที่จะมี เข้าเยี่ยมชมหน้าเว็บของคุณ
แล้วคุณจะทำให้ รูปแบบกว่าที่นี่
หลังจากฟอร์มที่ได้รับการส่ง โดยผู้ใช้การกระทำที่เป็น
ที่ระบุไว้ในแท็กของฟอร์ม จะแสดงหน้าเว็บที่มัน
ผลตอบแทนที่ได้ว่าข้อมูลที่จะ
>> ดังนั้นข้อมูลทั้งหมดที่จะเป็น ส่งกลับไปยังตัวควบคุมของคุณ
แล้วคุณอาจจะทำอีกเล็กน้อย ตรรกะที่และอาจจะดำเนินการเพียงไม่กี่
คำสั่งมากขึ้นในฐานข้อมูลและ แล้วในที่สุดมาด้วยอย่าง
ชุดเต็มของข้อมูลที่คุณจะ ผ่านในบางแม่แบบอื่น ๆ
ที่แสดงข้อมูลว่า
ตอนนี้ทำอย่างไรเราแพคเกจจริง ว่าข้อมูลได้หรือไม่
ดีเรามีฟังก์ชั่นที่เรียกว่า Render ที่อยู่ในไฟล์ functions.php ใน
pset7 ที่คุณผ่านในชื่อของ ไฟล์ที่ชื่อของแม่แบบ
>> แล้วคุณยังผ่านใน อาเรย์
และเพื่อให้อาเรย์แสดงให้เห็นถึง ข้อมูลที่แตกต่างกัน
ที่คุณต้องการที่จะผ่านเข้ามา
ตอนนี้สิ่งที่เป็นไปได้อย่างต่อเนื่องใน ตัวอย่างเหล่านี้คือกุญแจหรือ
แต่คีย์ของสมาคม อาร์เรย์ที่เป็นสิ่งที่เป็นไปได้
คาดว่าจะมีอย่างต่อเนื่องโดยแม่แบบ เพราะมันรู้ว่ามันต้อง
สิ่งที่เรียกว่าข้อความ หรือที่เรียกว่าชื่อ
และแล้วสิ่งที่ด้านขวา ค่าที่แท้จริงดังนั้นในกรณีนี้ผู้ที่
เป็นเด็กดีและไมโลที่จะไป จะเป็นค่าที่มีการเปลี่ยนแปลง
ว่าตัวควบคุมที่มีการเปลี่ยนแปลงทุกครั้ง หรือขึ้นอยู่กับเงื่อนไขบางอย่างและ
ที่จะผ่านเข้ามา
>> ดังนั้นที่นี่ในแม่แบบที่เราจะเห็นว่าเรา จะใช้ HTML อักขระพิเศษ
ซึ่งโดยทั่วไปหมายถึงเพียงแค่ที่เราต้องการ ที่จะได้รับการตรวจสอบสตริงว่า
ผู้วางระบบ
และเราต้องการที่จะทดแทน ข้อความที่อยู่ในนั้น
ดังนั้นแล้วเมื่อเราดูจริง ไฟล์ที่เฉพาะเจาะจง
ข้อมูลจะถูกส่งเข้ามา
โปรดทราบว่าวิธีการที่สำคัญทำให้การทำงานเป็น ที่คีย์ของสมาคม
อาร์เรย์เป็นตัวแปรเหล่านั้น ชื่อที่นี่
และเพื่อให้ค่าของสำคัญในการที่ อาเรย์แล้วจะกลายเป็น
ค่าของตัวแปร
>> ตอนนี้ขอย้ายไปยัง SQL
มันหมายถึงโครงสร้าง Query Language
และอื่น ๆ นี้เป็นเพียงการเขียนโปรแกรม ภาษาการออกแบบ
สำหรับการจัดการฐานข้อมูล
และต่อมาในที่มีประโยชน์สำหรับเราในการ เว็บไซต์การเงิน pset7 ของเรา
เป็นหลักก็เป็นเพียงวิธีง่ายๆในการ ติดตามและจัดการวัตถุและตาราง
และเชื่อมโยงไปยังแต่ละอื่น ๆ
ตอนนี้คิดว่าฐานข้อมูลของคุณ โดยทั่วไปเป็นไฟล์ Excel บางที
ด้วยแผ่นแท็บหลาย
>> ดังนั้นคุณอาจมีตารางหลาย บางทีที่เชื่อมโยงไปยังอีกคนหนึ่ง
และอื่น ๆ เช่น Excel, เรามีจำนวนมาก ฟังก์ชันการทำงานที่เราต้องการ
ตัวอย่างเช่นเราสามารถเลือก แถวบาง
เราสามารถแทรกข้อมูล
เราสามารถปรับปรุงแถว
และเรายังสามารถลบสิ่งที่
>> SQL เลือกทำงานโดยการเลือกแถว หรือแถวของคอลัมน์ที่ระบุจาก
ฐานข้อมูลที่ตรงกับบางอย่าง เกณฑ์ที่คุณระบุ
ดังนั้นกว่าที่นี่เมื่อฉันเห็น * เลือกจาก พ่อมดที่บ้าน = บ้านเรเวนคลอแล้ว
ฉันเลือก * ซึ่งหมายความว่าฉัน การเลือกคอลัมน์เดียวที่ทุกคนใน
แถวจากตารางตัวช่วยสร้าง แต่ถ้า คอลัมน์บ้านเท่ากับบ้านเรเวนคลอ
ตอนนี้เป็นที่บริสุทธิ์หรือ SQL
ดังนั้นถ้าผมเดินเข้าไปใน phpMyAdmin ซึ่งเป็น วิธีการเฉพาะที่เราใช้ในการจัดการ
ฐานข้อมูลของเรา SQL แล้วฉันจะแทรก ที่เป็นเว็บไซต์ phpmyadmin
และที่จะดำเนินการ
>> แต่เราต้องการทำจริง ที่ด้าน PHP
ดังนั้นทำอย่างไรเราทำอย่างนั้น
ดีที่เราใช้ฟังก์ชั่นการค้นหาที่ โดยทั่วไปดำเนินการที่แบบสอบถาม
ใช้?
เป็นตัวยึดที่เราสามารถผ่านในบาง ค่าสตริงของเราที่เรา
ต้องการที่จะเข้ามาแทนที่
ดังนั้นบางทีฉันจัดเก็บที่แตกต่างกัน ค่าใน curr_house ซึ่ง
แสดงให้เห็นถึงบ้านในปัจจุบัน ที่ฉันจะผ่าน
ดังนั้นผมจึงสามารถผ่านในที่เป็นตัวยึด มีเครื่องหมายคำถาม
แล้วฉันจะดำเนินการโดยทั่วไป สิ่งเดียวที่ฉันได้ก่อนที่จะยกเว้น
ตอนนี้ฉันอยู่ใน PHP
>> และแบบสอบถามจะกลับ อาเรย์
และฉันจะเก็บไว้ในแถว
ตอนนี้แบบสอบถามมักจะสามารถล้มเหลว
บางทีแบบสอบถามไม่สามารถดำเนินการ เนื่องจากตารางไม่ได้อยู่
หรือบางทีอาจจะคอลัมน์ไม่ได้อยู่
สิ่งที่ผิดพลาด
ทั้งในกรณีที่คุณจะต้องการให้ แน่ใจว่าคุณตรวจสอบว่า
แบบสอบถามกลับเท็จ
และที่สามโดยใช้ เท่ากับการดำเนินการมี
>> และจากนั้นฉันขอโทษที่เป็นอีกหนึ่ง ฟังก์ชั่น CS50 ผ่านในข้อความ
และถ้าคุณมองเข้าไปขอโทษทั้งหมดก็ จริงๆมันไม่ถูกทำให้ apology.php
ใช่
>> ผู้ชม: คุณสามารถอธิบายสิ่งที่ ดาวไม่ระหว่างเลือกและจากที่ใด
>> ZAMYLA จัน: ใช่อย่างแน่นอน
ดังนั้นดาวในระหว่างเลือกและจาก หมายความว่าผมต้องการที่จะเลือกทั้ง
ทั้งแถวจากตารางของฉัน
ฉันจะได้แสดงให้เห็นเลือก ชื่อปีบ้าน
และฉันเท่านั้นที่จะได้รับทั้งสาม คอลัมน์ในตารางของฉัน
แต่ถ้าฉันพูด * เลือกแล้วฉันจะ ได้รับทุกอย่างในคอลัมน์นั้น
แล้วฉันจะไปคุณ ในด้านหลังแรก
>> ผู้ชม: ดังนั้นนี้ยังคงเป็น ใน SQL ใช่ไหม
เป็นแบบสอบถามนี้หรือ PHP นี้
>> ZAMYLA จัน: เราอยู่ในแบบสอบถาม
ดังนั้นนี่คือใน PHP
ดังนั้นการใช้แบบสอบถามฟังก์ชัน PHP, เรากำลังดำเนินการแบบสอบถาม
>> ผู้ชม: มีสิ่งใดใน SQL กรณีเช่นเลือก
หรือตัวช่วยสร้างหรือบ้าน
>> ZAMYLA จันสินค้าอะไร ใน SQL กรณี ๆ ?
ดังนั้นผมเชื่อว่าใช่
ผมเชื่อว่าการเลือกและจาก และสถานที่ที่เป็นกรณี ๆ
ไม่ได้หรือไม่
>> ROB สลิง: ดังนั้นจึงเป็นสิ่งที่ตรงกันข้าม
ชื่อคอลัมน์และวิธีการตาราง ทุกคนเป็นกรณี ๆ
แต่ใด ๆ ของ MySQL คำสำคัญเช่น SELECT, FROM และ WHERE, ผู้ที่ไม่ได้
กรณีที่มีความละเอียดอ่อน
ตกลง
ดังนั้นตรงข้ามของสิ่งที่ผมพูด
ดังนั้นทั้งหมดของคำหลัก MySQL -
เลือกจากที่ - ผู้ที่ ไม่ได้กรณีที่มีความละเอียดอ่อน
แต่ทุกอย่างอื่นเป็น
ตกลง
คุณอยู่ข้างหน้า
>> ผู้ชม: ถ้าผมได้ $ แถวในแง่ของการ มากกว่าหนึ่งแถวไม่ได้หมายความว่าเป็น
เพียงกลายเป็นอาเรย์?
>> ZAMYLA จัน: ดังนั้นคำถามคือถ้าแถว มีมากกว่าหนึ่งแถวในนั้นไม่
มันกลายเป็นอาเรย์?
ดังนั้นจึงเป็นอาร์เรย์ของสมาคม อาร์เรย์แล้ว
ดังนั้นแม้ว่าจะมีเพียงหนึ่งแถว กลับมาแล้วคุณจะต้องไปที่
ดัชนี 0 จากผลที่
แล้วคุณจะมีแถวแรกที่
ใช่เบลินดา?
>> ผู้ชม: เมื่อคุณใช้ ===, นี้เป็นตัวอย่างเท่านั้น
หรือมีคนอื่น
>> ZAMYLA จัน: ดังนั้นในกรณีนี้ === การเปรียบเทียบข้ามประเภท
ขอโทษ === การเปรียบเทียบ ที่เปรียบเทียบประเภท
แล้ว == เปรียบเทียบในทุกประเภท
>> ผู้ชม: คุณสามารถอธิบายสิ่งที่ แถวที่อยู่ในสถานการณ์นี้
มันคือแถวของข้อมูล
>> ZAMYLA จัน: ในภาพนิ่งถัดไปฉัน จะอธิบายสิ่งที่เป็นแถว
ดังนั้นหากคุณไม่ทราบการถือครอง ปิดในวันที่
แล้วคุณจะอยู่ด้านหลังหรือไม่
>> ผู้ชม: สำหรับการทำงานเช่นแบบสอบถาม ทำให้และขอโทษ [ไม่ได้ยิน]?
>> ZAMYLA จัน: คำถามก็คือว่า ฟังก์ชั่นเหล่านี้ - แบบสอบถามขอโทษ
และทำให้ -
อยู่ร่วมกันใน PHP
เหล่านี้เป็นคนที่ CS50 เขียน pset7
และเจ?
>> ผู้ชม: เมื่อคุณต้องการที่จะบอกว่า $ _SESSION เป็นที่สำหรับรหัส?
หรืออาจจะให้คุณได้กล่าวว่าที่นี่
>> ZAMYLA จัน: ดังนั้นคำถามคือเมื่อ เราใช้ $ _SESSION ที่เป็นที่เฉพาะเจาะจง
ตัวแปรระดับโลกที่เรากำลังใช้
ที่นี่ตัวแปรนี้เป็นไป ท้องถิ่นกับการทำงานของเรา
ดังนั้นเราเพียงแค่ประกาศ ตัวแปรใหม่
>> ผู้ชม: วิธีการคือขอโทษ ดำเนินการ?
>> ZAMYLA จัน: คำถามคือ วิธีการที่จะถูกดำเนินการขอโทษ?
และฉันคิดว่านี้เป็นจริงสวย การปฏิบัติที่ดีสำหรับคุณผู้ชายที่จะไปลงใน
ส่วน functions.php และดูที่ ขอโทษและดูว่าคุณอาจมี
ทำมันด้วยตัวคุณเอง
ดังนั้นผมอาจจะออกจากที่อยู่กับคุณ แต่เพียง บอกว่าถ้าคุณดูที่ขอโทษ
จากนั้นก็จะใช้เวลาข้อความที่คุณ ส่งไปขอโทษแล้วมัน
ทำให้ข้อความที่
คำถามใด ๆ อีกหรือไม่
ฉันรักคำถาม
เพื่อให้พวกเขามา
>> ผู้ชม: [ไม่ได้ยิน]
echo หรือพิมพ์มี
>> ZAMYLA จัน: คำถามคือ เราอาจไม่เพียง แต่ได้ใส่
สะท้อนหรือมีการพิมพ์
เพื่อที่จะได้ทำอะไรบางอย่าง แตกต่างกันเล็กน้อย
ที่จะมีการพิมพ์แบบสอบถาม ล้มเหลวในการที่ -
ดีตอนนี้เราจริง ในการควบคุมของเรา
ดังนั้นเราจึงไม่จริงต้อง HTML ตั้งค่าที่นี่
ขอโทษโดยการแสดงผล apologize.php จริงเปลี่ยนเส้นทางคุณไป apology.php
ตกลง
>> ดังนั้นตอนนี้ขอไปอยู่ที่ จากคำถามก่อนหน้านี้เกี่ยวกับสิ่งที่
จริงๆเป็นแถว
ดีแบบสอบถามจะกลับ อาร์เรย์ของแถว
และทุกแถวเป็นตัวแทน โดยอาเรย์
ดังนั้นถ้าฉันได้ดำเนินการบางแบบสอบถามและ ฉันได้เก็บผลในแถวนั้น
โดยใช้ห่วง foreach แล้วอาร์เรย์ ชื่อเป็นคนแรกมี - แถว
แล้วฉันจะเรียก แถวในแถวที่นั่นทุก
>> ดังนั้น iterating กว่าที่ฉันสามารถแล้ว เข้าถึงคอลัมน์ชื่อแถวที่กำหนดของ
คอลัมน์ปีและคอลัมน์บ้าน
โปรดทราบว่าฉันจะไม่ได้รับสามารถที่จะ ทำเช่นนี้กับแถวเนื่องจากดัชนีแถว
ชื่อไม่อยู่
แถวเป็นเพียงแถวของ arrays สมาคม
เพื่อให้คุณมีสองระดับมี
เมื่อคุณมีอาร์เรย์ของแถว คุณต้องได้รับเป็นที่
และแล้วคุณสามารถเข้าถึงคอลัมน์
ไม่ที่ทำให้มันชัดเจน
ใช่ในด้านหน้า
>> ผู้ชม: [ไม่ได้ยิน] เปิด วงเล็บของ [ไม่ได้ยิน]?
>> ZAMYLA จัน: ขอโทษฉัน
>> ผู้ชม: วงเล็บเปิด
>> ZAMYLA จันเหล่านี้ที่นี่
ที่ช่วยให้ผมมี ตัวแปรที่
ใช่
>> ผู้ชม: เมื่อคุณพิมพ์, คุณ พิมพ์ไปยังรหัส HTML?
>> ZAMYLA จัน: ใช่
เมื่อฉันพิมพ์นี้ที่นี่ที่อยู่ภายใน แม่ของฉันตอนนี้ดังนั้น
มุมมองของฉันของวิธีการ MVC
ดังนั้นฉันพิมพ์ลงใน HTML
>> ผู้ชม: ดังนั้นถ้าเราเดินเข้าไปในการพัฒนา หลังจากใช้เครื่องมือนี้เราสามารถทำได้
ที่จริงในรหัส?
>> ZAMYLA จัน: ที่ดี คำถามใช่
ดังนั้นถ้าคุณเดินเข้าไปในเครื่องมือสำหรับนักพัฒนา ใน Firefox ใช้ Firebug หรือ
โครเมี่ยมแล้วใช่คุณสามารถ เห็นเฉพาะ HTML
ดังนั้นมันจะไม่แสดง $ row ["ชื่อ"]
มันจะแสดงให้เห็นอย่างใดอย่างหนึ่ง ชื่ออยู่ในแถวที่
>> ผู้ชม: เพ​​ียงแค่ปัญหาทั่วไป สิ่งที่ TR และ TD หมายถึง?
ทำไมเรา [ไม่ได้ยิน]?
>> ZAMYLA จันตารางแถว tr, ตารางคอลัมน์ TD แล้ว
ตกลง
>> ผู้ชม: ใช่มันเป็นข้อมูลตาราง
>> ZAMYLA จัน: ข้อมูลตาราง
ใช่
>> ผู้ชม: มันเป็นแถวที่ แถวได้รับการปฏิบัติเช่นเดียวกับคอลัมน์?
>> ZAMYLA จัน: ขออภัย
คุณสามารถทำซ้ำที่
>> ผู้ชม: วิธีคุณจะ เห็นภาพแถว?
>> ZAMYLA จัน: วิธีที่คุณจะเห็นภาพ แถวในชนิดของวิธี?
คุณกำลังพูดถึงเหล่านี้ แถวที่นี่หรือแถว tr?
>> ผู้ชม: แถว
>> ZAMYLA จัน: แถวเหล่านี้ที่นี่
ผมอยากเห็นภาพนี้เป็น ผมดำเนินการค้นหาของฉัน
และมันก็บอกว่าตกลงฉันมีทั้ง 0 ถึง n จำนวนของแถวที่ตรงกับเงื่อนไข
ที่คุณได้สอบถาม
ดังนั้นผมจึงมีจำนวนแถวบาง
ดังนั้นแถว $ แถวร้านค้าแต่ละ หนึ่งในผู้ที่อยู่ในแถวแถว
ดังนั้นแม้ว่าจะเป็นเพียงหนึ่งของพวกเขาก็ ยังแถวของแถวที่ตรงกับมัน
>> ดังนั้นแล้วเช่นนี้ คล้ายกับเมื่อคุณเรียก
แคชจากผู้ใช้
และเกณฑ์ที่มี ID เท่ากับ ID เซสชั่น
จริงๆมีเพียงเป็นหนึ่งในแถว ที่อาจตรงกับที่
แต่ก็ยังเพิ่งกลับแถวหนึ่งแถว
ดังนั้นคุณจะต้องไปที่แถว 0 ดัชนีแคชดัชนี
ได้รับจริงไปยังแคชของคุณ
>> ผู้ชม: เป็นฟังก์ชั่นการพิมพ์ สะท้อนในสิ่งเดียวกัน
>> ZAMYLA จัน: ใช่
ใช่
พิมพ์เสียงสะท้อนของเดียวกัน
>> ผู้ชม: เป็นห่วง foreach วิธีเดียวที่จะเป็นแถวดัชนี?
>> ZAMYLA จันนี้ห่วง foreach วิธีเดียวที่คุณสามารถ
ย้ำผ่านแถว?
เลขที่
นอกจากนี้คุณยังสามารถใช้สำหรับวงให้ ที่คุณรู้ว่าระยะเวลา
ของอาร์เรย์แถวที่
>> ผู้ชม: คุณสามารถเข้าใช้งานได้ ใช้แถวเป็น [ไม่ได้ยิน]?
>> ZAMYLA จัน: ดังนั้นคุณจึงไม่สามารถเข้าถึงได้ เพียงแค่ใช้แถวถ้าคุณไม่ได้มี
ห่วง foreach ระบุว่า คุณยังไม่ได้ประกาศแถว
ใช่
ใช่ในสีขาว
>> ผู้ชม: ดังนั้นสิ่งที่ tr และ TD ทำอย่างไร
>> ZAMYLA จัน: ดังนั้น tr และ TD เป็นแท็ก
tr แสดงให้เห็นจุดเริ่มต้น ของแถวของตาราง
และแต่ละ TD บ่งชี้ คอลัมน์ข้อมูลตารางใหม่
>> ผู้ชม: สำหรับภาพของสิ่งที่แถว ก็เหมือนเพียงจินตนาการ SQL วิธี
พวกเขามีแถว
[ไม่ได้ยิน]
>> ZAMYLA จัน: ใช่
นั่นเป็นจุดที่ดี
คุณสามารถเห็นภาพแถวเป็นเพียงแค่ เช่นเดียวกับในตาราง Excel เพียง
รายการของแถว
ตกลง
ขวาทั้งหมด
ดังนั้นขณะนี้ที่เราได้ไปกว่าเลือกถ้า มีไม่คำถามใด ๆ มากขึ้นเราจะ
ไปกว่าเข้าแทรก
ดังนั้นถ้าผมต้องการที่จะใส่ลงไปในบางส่วน ตารางและใส่คอลัมน์บาง
ค่าที่ฉันสามารถแทรกตัวเอง เป็นบ้านเรเวนคลอในปีที่ 7
แต่บางครั้งอาจจะมีที่ซ้ำกัน ค่านิยมที่เราเห็นใน pset7 เมื่อเรา
ได้รับการปรับปรุงผลงานของเรา
>> ดังนั้นในกรณีนี้เราต้องการที่จะใช้ในการ DUPLICATE UPDATE KEY ดังนั้นที่เราทำไม่ได้
เก็บหลายแถวด้วยเหมือนกัน ค่า แต่ปรับปรุง
จากนั้นเราก็จะมีการปรับปรุง ซึ่งไม่ได้ใส่
มันเป็นเพียงแค่การปรับปรุงที่คุณอัปเดต ในตารางบางอย่างที่มีให้
หลักเกณฑ์และแล้วในที่สุดลบ ซึ่งจะเป็นสิ่งที่คล้ายกันมาก
>> ผู้ชม: คุณสามารถในเวลาสั้น ๆ ไปกว่าคีย์ที่ซ้ำกัน
>> ZAMYLA จัน: ใช่
เป็นหลักที่นี่ผมมีแทรกลงใน ริงกอต, มีเกลเลียนค่าเหล่านี้
แต่ประชาชนน่าจะเป็นกุญแจสำคัญที่ไม่ซ้ำกัน ค่าการตั้งค่าในตาราง MySQL
ดังนั้นถ้าฉันมีรหัสที่ตั้งค่า แล้วผมก็ไม่สามารถแทรกแถวใหม่
ดังนั้นถ้ามันไม่ได้อยู่แล้ว แล้วผมต้องปรับปรุงมัน
ในช่วงกลางในสีขาว
>> ผู้ชม: ดังนั้นแทรกปรับปรุงลบ และเลือกเป็นผู้ที่มีอยู่ทั้งหมด
ในท้องถิ่น [ไม่ได้ยิน]?
>> ZAMYLA จัน: ดังนั้นแทรก ปรับปรุงลบและ
เลือกเป็นแบบสอบถามทั้งหมด
ดังนั้นเมื่อใดก็ตามที่คุณกำลังใช้ SQL, คุณจะต้องที่มีอยู่
>> ผู้ชม: กลับไปแบบทดสอบที่ผ่านมา -
มีคำถามที่เกี่ยวข้องกับ หากคุณมีตารางและต้องการ
ใส่คะแนนการทดสอบในหนึ่งและคุณแทรก ชื่อของคุณจึงจะไม่ยอมให้คุณ
[ไม่ได้ยิน] คะแนนทดสอบของเพื่อนของคุณ
วิธีที่คุณจะทำเช่นนั้นที่มีการแทรก?
>> ZAMYLA จัน: ดังนั้นคำถามเกี่ยวกับ คำถามระยะกลางก่อนหน้านี้
ฉันไม่ทราบที่ หนึ่งมันเป็นสิทธิในขณะนี้
ดังนั้นบางทีหลังจากนั้นถ้าคุณต้องการที่จะ ขึ้นมาและแสดงให้ฉันแล้วฉันสามารถ
แน่นอนให้คำแนะนำ
แต่การพูดในสิ่งที่ใส่เช่น การให้คะแนนของใครบางคนเมื่อคุณ
ไม่ควรปล่อยให้พูดคุยเกี่ยวกับ SQL โจมตีฉีด
ดังนั้นการโจมตีฉีด SQL เป็นหลัก ที่มีคนใช้
ประโยชน์จากการรักษาความปลอดภัยที่ต่ำของ วิธีการที่คุณจะพาในข้อมูล
>> ดังนั้นในที่นี่เช่นเดียวกับในด้านการเงิน CS50, เมื่อเราเข้าสู่ระบบแล้วเราสามารถใส่ใน
ชื่อผู้ใช้ในรูปแบบการเข้าสู่ระบบ กล่องข้อความแรกและ
แล้วใส่รหัสผ่าน
บางทีอาจจะเป็นโค้ด PHP ของเราอาจมีลักษณะ บางอย่างเช่นนี้ที่ $ ชื่อผู้ใช้
เป็นชื่อผู้ใช้โพสต์ข้อมูลและรหัสผ่าน รหัสผ่านข้อมูลที่โพสต์
และแล้วเราก็ดำเนินการค้นหาของเราพูด ตกลงกันแบบสอบถามของเราเป็นไป
เลือกจากผู้ใช้ของเราที่ ชื่อผู้ใช้
หนึ่งที่พวกเขาส่งมา
และรหัสผ่านเป็นรหัสผ่าน หมายความว่ารหัสผ่านที่ตรงกับ
>> ตอนนี้สิ่งที่ถ้าแทนของจริง ส่งรหัสผ่านที่เกิดขึ้นจริงเช่นเดียวกับ
12345 และคาดเดาที่ง่ามว่า รหัสผ่านและพยายามที่จะตัดพวกเขา
บัญชีสิ่งที่ถ้าแทน พวกเขาส่งมานี้
พวกเขาสามารถพิมพ์ในบางที รหัสผ่านที่คาดเดา
และแล้วพวกเขาก็จะจบ อ้างจากนั้นพิมพ์ในหรือ 1 = 1
ที่จะก้าวเข้าสู่ SQL แบบสอบถามเพื่อมีลักษณะบางอย่างเช่นนี้
เลือกจากผู้ใช้ที่ชื่อผู้ใช้ = ง่ามและรหัสผ่าน
เท่ากับลิลลี่หรือ 1 = 1
>> ดังนั้นทั้งรหัสผ่านที่มี ความถูกต้องหรือ 1 = 1
ซึ่งเป็นจริงเสมอ
ดังนั้นในกรณีนี้โดยทั่วไปผู้ใช้สามารถ ใช้ประโยชน์จากนี้และเพียงแค่เข้าสู่ระบบ
ตัวเองในและสับ บัญชีของใครบางคน
เพื่อที่ว่าทำไมเราต้องการที่จะหลีกเลี่ยง คนที่มีการทำเช่นนี้
แต่โชคดีที่ฟังก์ชั่นการค้นหาโดย ผ่านในตัวยึดจะใช้เวลา
ดูแลนี้สำหรับคุณ
นอกจากนี้คุณจะมักจะไม่ต้องการ ที่จริงส่งรหัสผ่าน
ตัวเอง
นั่นเป็นเหตุผลที่เราถกหรือการเข้ารหัส พวกเขาในด้านการเงิน CS50
>> ผู้ชม: การทดสอบที่ผ่านมาพูดคุยกัน เกี่ยวกับสตริงหนี MySQL
เราจะต้องกังวลเกี่ยวกับที่
>> ZAMYLA จัน: นั่นเป็นคำถามที่ดี
สตริงหนี MySQL เป็นแน่นอน ฟังก์ชั่นที่ใช้ในแบบสอบถามของเรา
แต่แน่นอนว่ามีลักษณะเป็น
ผมบอกว่าเป็นเกมที่ยุติธรรมที่จะรู้ว่า ที่คุณจะต้องเรียกว่า
ฟังก์ชั่นในสตริง
ใช่เบลินดา?
>> AUDIENCE: วิธีทำคุณรู้ว่าเมื่อมัน ราคาเดียวหรือราคาคู่?
และฉันรู้สึกเหมือนในการบรรยายคุณ กล่าวถึงสิ่งที่เกี่ยวกับการไม่ได้มี
[ไม่ได้ยิน] หรือบางสิ่งบางอย่างหรือ คำพูดเดียวที่สองในตอนท้าย
ฉันคิดว่าเขาชี้ให้เห็นว่าในการบรรยาย คุณควรจะมีเครื่องหมายวรรคตอนที่ 1
และจากนั้นได้มี apostrophes หรือสิ่งที่
>> ผู้ชม: [ไม่ได้ยิน]
>> ผู้ชม: สิ่งที่เป็นซิงเกิ้ลล่าสุด อ้างอยู่ในที่มีอยู่ในกล่องที่สองที่
ไม่ควรจะมี
[ไม่ได้ยิน]
เพราะเมื่อคุณใช้เวลาที่ผ่านมาเพียงครั้งเดียว อ้างออกและตรงกับเหล่านี้สำหรับเนื้อหา
ที่รหัสผ่านคือถ้าคุณมีที่ แบบสอบถามมีคำพูดเดียวที่
ท้ายที่สุดแล้ว
คุณต้องการที่จะใช้คำพูดเดียว เป็นหนึ่งในที่ใบหน้าหนึ่ง
[ไม่ได้ยิน]
ดังนั้นสิ่งที่เป็นจริงในข้อความที่ กล่องไม่ควรมีที่
>> ZAMYLA จัน: ผมจะเปลี่ยนที่
ตกลง
หากมีคำถามใด ๆ ไม่ได้แล้วฉันจะ ผ่านมันไปยังโจเซฟที่จะพูดคุย
เกี่ยวกับ JavaScript, และอื่น ๆ
>> [APPLAUSE]
>> JOSEPH ONG: ดังนั้นเรากำลังทำงานอยู่ นิด ๆ หน่อย ๆ ที่อยู่เบื้องหลัง
ดังนั้นถ้าคุณต้องออกจากที่ตกลง
แต่เราขอให้คุณเก็บหัวของคุณลง ถ้าคุณอยู่ในกลางเพื่อให้คุณ
ไม่ปิดกั้นกล้องและที่คุณใช้ กลับออกหากคุณต้อง
ฉันโจเซฟโดยวิธีการ
สวัสดี
การทดสอบการทดสอบ
แดนเป็นที่ดีหรือไม่?
เย็น
>> ดังนั้นวิดีโอจะถูกโพสต์ ออนไลน์สำหรับผู้ที่
ต้องออกตอนนี้
อึดอัด
ตกลง
ทบทวนคำถามเพื่อ
นี้เป็นแมว
ตอนนี้, JavaScript, ซึ่งเป็นอาจจะไม่ เป็นทุกคนสำหรับบางส่วนของพวกคุณ
ตกลง
เพื่อให้เป็นครั้งแรกที่จำได้จาก Zamyla
โปรดจำไว้ว่า PHP เป็น ทำงานบนเซิร์ฟเวอร์
และจำนวนครั้งที่พวกคุณเขียนลูป ใน PHP ที่จะพิมพ์ออก HTML ใช่ไหม
ดังนั้นเมื่อรหัสที่รันที่ ผล HTML ที่คุณพิมพ์ออกมา
ได้รับการส่งไปยังผู้ใช้
และเมื่อที่เกิดขึ้นไม่สามารถ PHP เพิ่มเติม จะทำงานจนกว่าคุณจะโหลดหน้าเว็บของ
แน่นอนซึ่ง reexecutes PHP
แต่เมื่อคุณพิมพ์ออกมาแบบนั้น คุณไม่สามารถไปได้ทุกที่
>> ดังนั้น HTML ที่ถูกส่งผ่านไปยังผู้ใช้ ซึ่งเป็นเบราว์เซอร์ที่นี่ที่
ไมโลคือการใช้คอมพิวเตอร์
และให้ดีมีหลายสิ่งที่ เมื่อเราส่ง HTM​​L ให้กับผู้ใช้
บางครั้งเราต้องการที่จะทำสิ่งที่ชอบ เมื่อคุณคลิกที่สิ่งที่เราต้องการ
กล่องแจ้งเตือนจะปรากฏขึ้นทุกประเภทของ ปฏิสัมพันธ์เช่นเมื่อคุณกด
ที่สำคัญเมื่อคุณคลิกบางอย่างใน หน้าฉันต้องการสิ่งที่จะเกิดขึ้น
ดีคุณจะไม่สามารถ reexecute PHP รหัส HTML ที่ครั้งหนึ่งเคยเป็นที่ตั้ง
ดังนั้นวิธีที่คุณทำเช่นนี้?
>> เราแนะนำภาษาใหม่ที่เรียกว่า จาวาสคริปต์ที่ทำงานในเบราว์เซอร์
ที่ช่วยให้คุณทำสิ่งที่ เพื่อ HTML หลังจากที่คุณได้รับ
ออกจากเซิร์ฟเวอร์
และนี่คือเหตุผลที่เราเรียกว่าฝั่งไคลเอ็นต์ การเขียนโปรแกรมภาษา
การทำงานบนคอมพิวเตอร์ของคุณ -
ลูกค้า
คำถามใด ๆ เกี่ยวกับที่เพื่อให้ห่างไกล
กระบวนทัศน์ที่ทำให้รู้สึกถึงคน
ตกลง
ดี
ขวาทั้งหมด
ดังนั้นสิ่งแรกที่จะต้องทราบ เป็นที่จาวาสคริปต์ไม่ได้เป็น PHP
>> พวกเขามีรูปแบบที่แตกต่างกันบางอย่าง ซึ่งเราจะไปลงใน
และพวกเขามีการใช้งานที่แตกต่างกันมาก
JavaScript, อีกครั้งของคุณ เบราว์เซอร์สำหรับลูกค้า
เซิร์ฟเวอร์ทำงานแห่งหนึ่งในคนอื่น คอมพิวเตอร์ที่ส่งข้อมูล
ให้คุณถูกต้องหรือไม่
ดังนั้นถ้าเราขอให้คุณเขียนโค้ด PHP กับคำถามการสอบไม่ได้เขียน
JavaScript และในทางกลับกัน
คุณก็จะสูญเสียจุด และจะไม่ได้รับสิทธิ
>> จึงขอได้ในบางส่วน ความแตกต่างทางไวยากรณ์ -
JavaScript ด้านซ้าย และ PHP ด้านขวา
สิ่งแรกที่คุณจะสังเกตเห็นด้วย JavaScript, เราประกาศตัวแปรที่มี
คำหลัก var -
V--R PHP ที่ใช้เครื่องหมายดอลลาร์, เป็น Zamyla กล่าวก่อนหน้านี้
ถ้าคุณต้องการที่จะประกาศเชื่อมโยง อาร์เรย์เราจะเห็นรูปแบบที่คุ้นเคยกับ
ด้านขวาด้วย PHP
ที่ด้านซ้ายแทน คุณใช้วงเล็บปีกกา
แล้วคีย์ของคุณมีทางด้านซ้าย
แล้วคุณมีลำไส้ใหญ่
แล้วคุณมีค่า ที่คุณต้องการ
>> ดังนั้นนี่คือวิธีการที่คุณจะทำมันใน PHP ทางด้านขวาด้วยสองที่
บรรทัดที่เริ่มต้นที่ไมโล
และนั่นคือวิธีการที่คุณจะทำมันใน ด้านซ้ายใน JavaScript ถ้าคุณต้องการ
สิ่งที่เราเรียกวัตถ​​ุ
และวัตถุใน JavaScript เป็น arrays สมาคมเพียง
ดังนั้นหากคุณต้องการที่จะเข้าถึงด้านใน PHP คุณใช้ไวยากรณ์วงเล็บนี้
และด้วยวิธีนี้คุณสามารถกำหนดใหม่ เจ้าของสนามนี้ลอเรน
>> ดีใน JavaScript ถ้าใครต้องการที่จะ เข้าสู่สนามและเปลี่ยนเป็นคุณสามารถ
ใช้ไวยากรณ์จุด
นอกจากนี้คุณยังสามารถใช้ไวยากรณ์วงเล็บ
แต่คุณไม่สามารถใช้ จุดไวยากรณ์ใน PHP
ที่จะไม่ทำงาน
มันใช้งานได้เฉพาะใน PHP
และสุดท้ายที่จะพิมพ์สิ่งที่จะ คอนโซลคุณใช้ console.log ซึ่ง
พวกคุณใช้เป็นจำนวนมากใน pset8
คุณสามารถ console.log ที่
>> ถ้าคุณต้องการที่จะพิมพ์อาร์เรย์ใน PHP, คุณต้องใช้การพิมพ์ r
และทางด้านขวาคุณจะเห็นฉันสับ สตริง concatenation ที่นั่น
ก่อนหน้านี้มีคนถาม
ผมใช้บวกใน JavaScript
ถ้าผมต้องการที่จะเชื่อมบางสิ่งบางอย่าง ใน PHP, ฉันจะใช้จุด
เหล่านี้มีความแตกต่างกัน
หากคุณกำลังเขียนโค้ด PHP, ไม่ได้ใช้บวก
หากคุณกำลังเขียน JavaScript รหัสไม่ได้เขียนจุด
มันจะเป็นความผิด
และคุณจะเศร้า
>> ดังนั้นความแตกต่างของไวยากรณ์
รู้ไวยากรณ์ของคุณเพราะถ้าคุณต้อง เขียนคำถามและคุณใช้ไวยากรณ์
จากภาษาที่ไม่ถูกต้อง มันจะไม่ทำงาน
และมันจะผิด
เพื่อขอพูดคุยเกี่ยวกับการควบคุมบางส่วน ความแตกต่างของการไหลของวิธีการที่คุณใช้
ลูปในแต่ละของพวกเขา
Zamyla เดินไปทางด้านขวา
สิ่งที่อยู่ทางด้านขวา ควรจะคุ้นเคย
ลองดูที่ด้านซ้าย
>> เมื่อคุณใช้สำหรับ n วงใน JavaScript, ตัวแปรห่วงของคุณ var ฉันที่นั่น
ห่วงกุญแจของอาร์เรย์
ดังนั้นคุณจะเห็นชื่อบ้านและบทบาท
ถ้าฉัน console.log ฉันฉันได้รับ ชื่อบ้านและบทบาท
ผู้ที่มีคีย์
ใน JavaScript ห่วง foreach ไป กว่าค่าของอาร์เรย์นี้
ดังนั้นคุณจะสังเกตเห็นพวกเขาทั้งสองฉัน
แต่ในที่นี่ในด้าน PHP จะพิมพ์ ออกไมโล CS50 และมิ่งขวัญ
ผู้ที่มีค่าใน PHP
>> ดังนั้นเหล่านี้เป็นวิธีการที่ทั้งสองจะแตกต่างกัน ในภาษาที่แตกต่างกัน
ดังนั้นถ้าคุณกำลังใช้ foreach ห่วงไม่ได้คิดว่ามัน
จะช่วยให้คุณคีย์
และถ้าคุณกำลังใช้สำหรับ n ห่วงไม่ได้ ถือว่ามันช่วยให้คุณมีค่า
นี้ไม่ได้ทำให้รู้สึกเพื่อให้ห่างไกล
ภาพนิ่งถัดไปจะแสดงให้คุณเห็น วิธีการที่คุณสามารถเข้าถึงตรงข้ามใน
แต่ละของพวกเขา
>> ดีถ้าคุณมีคีย์ใน JavaScript และคุณต้องการให้ค่าออกมา
คุณเพียงแค่เข้ามาในดัชนี อาร์เรย์กับที่
ดังนั้นไมโลของฉันจะได้รับสิ่งที่ ที่คุณต้องการ - ค่า
มีไวยากรณ์ที่แตกต่างกันนี้ใน PHP เป็น
ถ้าคุณอยากจะรู้ว่าฉันไม่ได้ คิดว่าเราได้แสดงให้เห็นว่ามันยังอยู่กับคุณ
แต่ถ้าคุณสนใจคุณสามารถใช้ ไวยากรณ์เพิ่มเติมนี้อยู่ทางด้านขวา
ด้านที่จริงจะช่วยให้คุณได้รับ คีย์ใน PHP เมื่อคุณกำลังใช้
ห่วง foreach
ดังนั้นเพียงแค่นิด ๆ หน่อย ๆ ของเรื่องไม่สำคัญ ถ้าหากคุณสนใจ
>> เพื่อให้เป็นเพียงเพื่อแสดงให้เห็นถึง ความแตกต่างระหว่างทั้งสองวง
ไม่ผสมพวกเขาขึ้นเมื่อคุณอยู่ การเขียนโปรแกรมคำถาม
คำถามใด ๆ เกี่ยวกับที่
เย็น
ขวาทั้งหมด
วัตถุ JavaScript
ผมได้พูดคุยเกี่ยวกับพวกเขา
พวกเขากำลังกับ associative arrays
สิ่งหนึ่งที่ฉันต้องการให้คุณทราบ ที่นี่เป็นที่ค่าในการเชื่อมโยง
อาร์เรย์สามารถเป็นอะไรก็ได้ใน JavaScript
>> มันยังสามารถเป็นฟังก์ชั่น เช่นที่นั่น
ฉันมีฟังก์ชั่นที่ เป็นค่าของคีย์
และถ้าผมต้องการที่จะเรียกใช้ฟังก์ชันที่ ฉันเพิ่งเข้าถึงเปลือก
และจากนั้นฉันใส่วงเล็บ จากนั้น
และที่ทำงาน
ดังนั้นคำถามหรือข้อสงสัย
ไม่ได้หรือไม่
ตกลง
ดี
JavaScript, เช่น PHP, ถูกพิมพ์อย่างอิสระ
สิ่งที่หมายความว่าอย่างไร
>> มันจะมีประเภท
แต่เมื่อคุณประกาศ JavaScript ตัวแปรที่คุณพูด ​​var i
คุณไม่ได้บอกว่ามัน
นั่นไม่ใช่สิ่งที่
คุณเพียงแค่บอกว่ามันเป็นตัวแปร
และจากนั้นจะจัดการกับ JavaScript ประเภทภายใต้ประทุนสำหรับคุณ
เราได้อย่างอิสระสามารถแปลงระหว่าง ประเภทเพราะเหตุนี้
ดังนั้นฉันจะเริ่มต้นออกมาเป็นจำนวน ในกรณีนี้
และแล้วฉันมีสตริง
และฉันจะเพิ่มที่ฉันไป
และฉันกำหนดมันกลับเข้ามาในฉัน
>> ดังนั้นในบรรทัดแรกว่า ฉันเป็นจำนวน
ในบรรทัดที่สองผมตอนนี้กลายเป็น สตริงหลังจากที่ฉันทำกำหนดใหม่
และที่นี่ฉันแค่เชื่อมโยง จำนวนลงบนสายที่
ดังนั้นคุณจะเห็นว่าแม้ว่าผม จํานวนเต็มในส่วนแรกจะเรียงลำดับ
เช่นการแปลงเป็น สตริงแล้วที่เพิ่มเข้ามา
บนสตริงสวัสดีที่
และนั่นคือสิ่งที่ผมหมายถึง โดยการพิมพ์หลวม
นั่นคือที่คุณแปลงระหว่าง ประเภทได้อย่างง่ายดายมาก
และจะไม่โยนคำเตือน ที่คุณต้องการไม่ C
>> ดังนั้นฉันตอนนี้มีสวัสดี 123 สาย
ต่อไป
นอกจากนี้เรายังสามารถเปรียบเทียบได้อย่างอิสระ ระหว่างประเภท
ดังนั้นหากคุณเพียงแค่ใช้ == มาก เช่นใน PHP, JavaScript
ไม่ได้สิ่งที่คล้ายกัน
สาย 123 เป็นเช่นเดียวกับจำนวน 123 เมื่อคุณใช้เท่ากับสอง
เมื่อนำมาใช้เท่ากับสามก็ยัง ต้องการที่จะให้แน่ใจว่า
ประเภทเดียวกัน
ดังนั้นเพราะที่เป็นสตริงและที่เป็น จำนวนถึงแม้ว่าพวกเขาทั้งสอง
123 เมื่อคุณใช้สาม เท่ากับคุณจะได้รับที่ผิดพลาด
ในสองเท่ากับกรณีที่คุณจะได้รับจริง เพราะเท่ากับสองไม่ได้
ดูแลเกี่ยวกับประเภท
เท่ากับสามไม่สนใจเกี่ยวกับประเภท
คำถาม?
ตกลง
>> และสิ่งที่เกี่ยวกับ JavaScript อีกอย่างก็คือ ขอบเขตเป็นชนิดของทั่วโลกยกเว้นกรณีที่คุณ
ในฟังก์ชั่น
และการทำงานที่เดียวกัน วิธีการใน PHP จริง
จึงขอผ่านไปเช่นนี้
ฉันจะตั้งค่า i 999
แล้วฉันเข้าไปนี้สำหรับวง
ดังนั้นถ้าฉันพิมพ์ฉันออกมาในนี้ ห่วงผมคาดว่า 0, 1, 2, 3, 4
ฉันได้รับการ i = 4
มันเพิ่มขึ้นฉันตอนนี้ถึง 5 ที่ ในตอนท้ายของห่วงสำหรับ
และจากนั้นก็แบ่งออกมาจากวง เพราะมันไม่ได้ตอบสนอง
เงื่อนไขอีกต่อไป
>> สิ่งใดที่คุณคิดว่าต่อไป console.log พิมพ์ออก
ดังนั้นนั่นคือสิ่งที่มันจะทำใน C. ใน C, เพราะถ้าคุณมีเช่น var i นอก
และคุณมีฉัน var ในวงเช่น สำหรับวงแล้วมันทำให้มันดังกล่าวว่า
จะกำหนดขอบเขตที่สอง ของฉันจะแตกต่างกัน
ใน JavaScript ก็จะเพียงแค่ รักษามันเป็นผมเหมือนกัน
ฉันจะได้รับ 5 เพราะนั่นคือค่า หลังจากที่มันออกมาออกจากวง
ดังนั้นผู้ที่ฉันเป็นฉันเดียวกัน
ไม่ที่ทำให้รู้สึก?
>> ดีก็จะทำให้ความรู้สึกจาก มุมมอง JavaScript
แต่กระบวนทัศน์เดียวกันไม่ได้ ดำเนินไปยัง C. พวกเขามี
กฎระเบียบกำหนดขอบเขตที่แตกต่างกัน
ใช่
>> ผู้ชม: [ไม่ได้ยิน]
นอกฟังก์ชั่น [ไม่ได้ยิน]?
>> JOSEPH ONG: ดังนั้นนอกซึ่งฟังก์ชั่ทำไม
ดังนั้นผมจะไปที่ในเวลาเพียงสอง
ดังนั้นเราจึงเรียก foo (i)
นี้ผ่านไปฉันเป็น foo, เพิ่มขึ้น แล้วบันทึกมัน
ดังนั้นจึงเป็น 5
ดังนั้นมันจะกลายเป็น 6
แต่สิ่งที่ผมพูดเกี่ยวกับการเป็น ฉันในการทำงานว่า
เพราะมันเป็นพารามิเตอร์ก็ กำหนดขอบเขตการทำงานที่
ดังนั้นเมื่อที่จริงผมจะออกจากที่ ฟังก์ชั่นก็ตอนนี้จะไป
กลับไปที่เก่าที่ฉัน
i ที่มีการกำหนดขอบเขตเพียงเพราะ มันอยู่ในฟังก์ชั่น
และเรามีขอบเขตและหน้าที่
แต่เราไม่ได้มีขอบเขตด้านนอก ฟังก์ชั่นใน JavaScript
ไม่ที่ทำให้รู้สึก?
ใช่
คำถาม
>> ผู้ชม: เดียวกัน [ไม่ได้ยิน]?
>> JOSEPH ONG: เพื่อใช่
ใน PHP มันเป็นประเภทเดียวกันของสิ่งที่
มีความละเอียดอ่อนเป็นจริงเล็กน้อย
แต่คุณสามารถถามฉันเกี่ยวกับ ว่าหลังจากการตรวจสอบ
คุณไม่ได้จริงๆจำเป็นต้องรู้ ความละเอียดอ่อนในการตอบคำถามว่า
สำหรับ intents และวัตถุประสงค์เช่น ตัวแปรทั่วโลกและ PHP เว้นแต่
พวกเขาอยู่ในฟังก์ชั่นเดียวกัน สิ่งใน JavaScript
ใช่
>> ผู้ชม: นี่คือเหตุผลที่ได้รับอนุญาตใน JavaScript และไม่มีที่อื่น?
>> JOSEPH ONG: เหตุใดจึงจะได้รับอนุญาต ใน JavaScript และไม่อยู่ใน C?
มันเป็นเพียงแค่ใครก็ตามที่ขึ้นมาพร้อมกับ JavaScript ตัดสินใจว่านี่คือตกลงใน
JavaScript
ดังนั้นจึงเป็นเช่นเดียวกับการเขียนโปรแกรมภาษา การประชุมในขณะที่เราจะพูดว่า
ใช่
>> ผู้ชม: ดังนั้นทำไม มันไป 6-5?
>> JOSEPH ONG: ดังนั้นมันก็ 6-5, เพราะเมื่อฉันผ่านฉันเป็น foo ที่
i ภายใน foo จะถูกกำหนดขอบเขตตอนนี้เพื่อ foo, เพราะขอบเขตที่มีอยู่ในการทำงานใน
JavaScript
แต่เมื่อฉันออกจากที่นี่เพราะมัน คือการกำหนดขอบเขตการทำงานฉันแค่
ใช้ i ปกติท​​ี่อยู่ข้างใน ส่วนที่เหลือของการควบคุมการไหล
ทำให้รู้สึก
ฉันจะย้ายหรือไม่
ขวาทั้งหมด
เย็น
>> การยอมรับนี้คือวัตถุ ถูกส่งผ่านโดยการอ้างอิง
คุณรู้ว่าเมื่อคุณผ่าน อาร์เรย์เป็น C คุณสามารถ
แก้ไขอาร์เรย์จริงหรือไม่
มันเป็นสิ่งเดียวกันใน JavaScript
ถ้าฉันผ่านวัตถุในกรณีนี้ผม ผ่านไมโลในการทำงาน catify นี้
ไมโลเริ่มออก
ชื่อของเขาคือไมโลกล้วย
ฉันผ่านวัตถุที่เป็นฟังก์ชั่น เพราะมันเป็นวัตถุที่มีความสัมพันธ์
อาร์เรย์ใน JavaScript
>> เมื่อผมดำเนินการ ในฟังก์ชั่นที่มันจะ
จริงเปลี่ยนวัตถุ
ดังนั้นนี้จะเกิดขึ้นสำหรับวัตถุ ใน JavaScript เช่นเดียวกับที่มันเกิดขึ้น
กับอาร์เรย์ภายในของชื่อ C. ดังนั้นไมโล จริงจะกลายเป็นแมวในขณะนี้
ไม่ที่ทำให้รู้สึก?
ดังนั้นนี้ทำงานได้เฉพาะสำหรับวัตถุ
วัตถุที่ถูกส่งผ่านโดยการอ้างอิง
ใช่
>> ผู้ชม: ดังนั้นคุณจะบอกว่า ในทางตรงกันข้ามกับที่ฉันตัวแปร
>> JOSEPH ONG: ใช่
ซึ่งตัวแปรที่ฉันเป็นเพียง จำนวนใช่ไหม
มันก็เหมือนกับใน C เมื่อคุณผ่าน จำนวนเต็มก็จะทำให้การคัดลอก
และเมื่อคุณผ่านอาร์เรย์ก็จริง การเปลี่ยนแปลงที่เกิดขึ้นจริงในอาเรย์
C. สิ่งเดียวกันที่เกิดขึ้นกับ JavaScript ในกรณีนี้
ขวาทั้งหมด
และถัดไมโลเป็นเรื่องน่าเศร้าเพราะ เขาตอนนี้แมว
ที่เป็นจริงหลังจากไมโล การเดินทางบางคนไปหาสัตว์แพทย์
>> ดังนั้นทำอย่างไรเราใช้ JavaScript ในหน้าเว็บหรือไม่
เราสามารถรวมไว้
นี้เป็นโค้ด HTML ที่มีแท็กแถบ
ดังนั้นผมจึงมีแท็กแถบมี
และจากนั้นฉันใส่ JavaScript รหัสภายในแท็กของสคริปต์
และจากนั้นจะดำเนินการนี​​้
เมื่อฉันทำมันเช่นนี้ก็ เรียกว่าอินไลน์ JavaScript
เป็นชนิดของยุ่งเพราะ JavaScript เป็นจริงในรูปแบบ HTML
>> วิธีที่ดีกว่าการทำเช่นนี้ดีกว่ามาก คือการเขียนจาวาสคริปต์ของคุณใน
แฟ้มภายนอกและจากนั้นให้ แท็กสคริปต์ที่มีแหล่งที่มา
และจะไปที่ไฟล์จาวาสคริปต์ และอ่านรห​​ัส JavaScript จาก
ไฟล์แทนว่า
และด้วยวิธีนี้คุณจะไม่ได้มีจำนวนมาก จาวาสคริปต์ที่จุดเริ่มต้นของคุณ
ไฟล์ HTML ซึ่งทำให้ มันยุ่งจริงๆ
คุณเพียงแค่ใส่ไว้ที่อื่น
แล้วมันจะอ่านจากที่นั่น
ไม่ว่าจะทำให้ความรู้สึก?
>> เรื่องตำแหน่ง
ในกรณีนี้โดยเฉพาะอย่างยิ่ง สคริปต์ก่อนที่ร่าง
ดังนั้นเมื่อผมดำเนินการที่มี ไม่มีอะไรในร่างกายยัง
อาจจะทำนิด ๆ หน่อย ๆ ความรู้สึกตอนที่ผมแสดงส่วนต่อไปนี้
ในกรณีนี้สคริปต์ มาหลังจาก div
ดังนั้น div จริงปรากฏ บนหน้าแรก
ที่นี่ในวงกลมสีแดงนี้เล็ก ๆ น้อย ๆ คุณจะเห็นข้อความที่ปรากฏ
และการแจ้งเตือนจากนั้นจะแสดงขึ้น
>> ในกรณีแรกเนื่องจากสคริปต์ ก่อน div,
การแจ้งเตือนจะปรากฏขึ้นเป็นครั้งแรก
แล้ว div แสดงขึ้นหลังจากที่ คุณยกเลิกกล่อง
ดังนั้นการดำเนินเรื่อง
ดังนั้นเราจะเก็บเรื่องนี้ไว้ในใจ
นี้จะมีความสำคัญ ในนิด ๆ หน่อย ๆ
ตกลง
ให้ดีคุณจะรอจนกว่า หน้าทั้งหมดที่มีการโหลดแล้วก่อนที่คุณจะ
รันโค้ดบาง
เราจะได้รับลงในนี้เพียงเล็กน้อย บิตภายหลังมากเกินไป
แต่เพียงเก็บตำแหน่งนี้ เรื่องในใจสำหรับเรา
มาไปยังภาพนิ่งอื่น
>> ดังนั้นเราจึงได้รับการ DOM ในขณะนี้
และ DOM คืออะไร
ดังนั้นถ้าคุณดูที่โค้ด HTML ก็เพียง พวงของข้อความบนหน้าจอ
ดังนั้นวิธีที่จะรู้ว่า JavaScript นี้เป็นองค์ประกอบ HTML?
ดังนั้นเราจึงต้องมีหน่วยความจำบาง การแสดงนี้
โครงสร้างที่เรามี
และเมื่อใดก็ตามที่เรามีนี้ในหน่วยความจำ การเป็นตัวแทนในจาวาสคริปต์ที่เราเรียกว่า
DOM ที่
และเป็นเพียงวิธีการที่คนตัดสินใจ ว่าเราควรจะเป็นตัวแทนของนี้
โครงสร้าง HTM​​L เป็น
>> และสิ่งที่ไม่ DOM นี้มีลักษณะอย่างไร
ทั้งในการเป็นตัวแทนของหน่วยความจำ เราเอาข้อความนี้
และเราทำให้มันกลายเป็นหน่วยความจำ การแสดง
ดังนั้นนี่คือ HTML
ดังนั้นครั้งแรกที่เราพบว่าทุก ต้นไม้มีเอกสาร
มันมีลักษณะเหมือนต้นไม้
และเอกสารที่มี HTML แท็กทุกอย่างจริง
ภายในของตอนนี้
แท็กมีลูกสองคน
มันมีหัว
หัวว่าถ้าคุณมองไปที่เยื้อง ที่นั่นที่ว่ามันมีโครงสร้าง
ระหว่างแท็กปิด หัวมีเด็ก
เด็กที่เป็นชื่อ
อย่างแน่นอน
>> ขณะนี้เรามีเด็กร่างกาย
แล้วร่างกายที่มี ครอบครัวของเด็กที่เรียกว่า
และครอบครัวที่มีลูกสามคน -
ที่เก่าแก่ที่สุดกลางและที่อายุน้อยที่สุด
ดังนั้นคุณจึงควรรู้วิธีการวาดแผนภาพ เช่นนี้เมื่อเราถามคุณว่า
การวาดแผนภาพเมื่อเราให้ HTML คุณทางด้านซ้าย
รู้วิธีการผลิตต้นไม้
และภายในของสิ่งเหล่านี้มีเพียง ข้อความบางอย่างที่ฉันได้เป็นตัวแทนของ
กล่องเล็ก ๆ น้อย ๆ
>> นี้โครงสร้างต้นไม้ให้ ความรู้สึกและสิ่งที่ DOM คืออะไร
ดังนั้นสิ่งที่จะพียืน
กว่าที่นี่พีที่นั่น ในแท็กที่แสดงถึง
แท็ก HTML ในวรรค
เพื่อให้คุณสามารถมองมันได้
แต่มันก็หมายความว่ามันบาง พื้นที่สำหรับข้อความบางส่วน
และมีบางสไตล์ CSS เริ่มต้น เพราะมันเป็นแท็กวรรค
แต่ไม่ได้จริงๆต้องกังวลเกี่ยวกับ ส่วนหนึ่งมากเกินไปว่า
เพียงแค่รู้ว่ามันเป็นตัวยึด สำหรับข้อความบางส่วน
ใช่
คำถาม?
ใช่
>> ผู้ชม: คุณพูดถึง CSS เพียง
ครอบครัวกัญชาและกัญชา ทุกสิ่งที่เป็นพื้น
ที่เป็นตัวแทนของรหัสใน CSS?
>> JOSEPH ONG: ใช่ว่า
ฉันจะได้รับสิ่งเหล่านี้ hashes หมายถึงในครั้งที่สอง
เมื่อแองเจล่าเดินไป CSS เธอ พูดคุยเกี่ยวกับตัวเลือก CSS
เหล่านี้เป็นตัวเลือก CSS ที่ เธอได้รับการพูดคุยเกี่ยวกับ
มีร็อบ?
>> ROB สลิง: ฉันยังอยากจะแสดงความคิดเห็น DOM ภายในของแท็กชื่อเรื่องว่า
ยังโหนดข้อความ
>> JOSEPH ONG ขวา
ดังนั้นภายในแท็กชื่อ ฉันมีบาง DOM ข้อความ
ดังนั้นจริงๆชื่อนี้ควรจะมีเช่น กล่องเล็ก ๆ ออกมาจากมันเช่นกัน
แต่มันไม่ได้เรื่องจริงๆ มากเกินไปในกรณีนี้
เราไม่ได้จริงๆดูแลเกี่ยวกับต่อมน้ำข้อความ ในขณะที่เราเรียกพวกเขามากเกินไป
ตกลงที่เราทำ
เห็นได้ชัดว่าเราทำ
และฉันจะแก้ไขว่าเมื่อ ฉันอัปโหลดมันอีกครั้ง
ไม่ที่ทำให้รู้สึก?
>> ดังนั้นทำอย่างไรเราทำงานร่วมกับ DOM หรือไม่
เมื่อใดก็ตามที่คุณจัดการกับ DOM ใน JavaScript มีสองขั้นตอน
คุณเลือกองค์ประกอบ DOM
แล้วคุณจะทำสิ่งนั้น
ดังนั้นในกรณีนี้ abstractly เราได้ เลือกองค์ประกอบกลาง
แล้วตัวอย่างของการทำสิ่งที่ มันจะได้รับการเปลี่ยนข้อความ
ที่เคยเป็นบ๊อบ
ตอนนี้สิ่งที่ผมทำไปมันเป็นผมเปลี่ยน บ๊อบกับไมโลในกรณีนี้
>> ดังนั้นทำอย่างไรที่เราจะทำเช่นนี้?
เราจะทำการเลือกอย่างไร
และวิธีการที่เราจะทำสิ่งที่จะ สิ่งที่เมื่อเราได้รับมันได้หรือไม่
ดีวิธีที่พวกคุณได้เรียนรู้มัน ในชั้นนี้คือการใช้สิ่งที่เรา
เรียกว่า jQuery
ดังนั้นสิ่งที่ jQuery คืออะไร?
jQuery เป็นห้องสมุดที่ทำให้ JavaScript ง่ายต่อการเขียน
ดังนั้นคนที่ใช้เวลา และเขียน jQuery
>> jQuery ที่เขียนจริง ใน JavaScript
แล้วเพราะพวกเขาทำอย่างนี้ตอนนี้เรา มีทั้งกลุ่มของฟังก์ชั่นที่
เราสามารถใช้ที่ทำให้เรา ชีวิตง่ายจริงๆ
ดังนั้นสิ่งที่บางส่วนของ สิ่งที่มันไม่?
มันทำให้ง่ายต่อการเลือกองค์ประกอบ
มันทำให้การเปลี่ยนแปลง HTM​​L, เพิ่มการเรียนง่ายขึ้น
มันทำให้อาแจ็กซ์ได้ง่ายขึ้น
เราจะไปที่ในครั้งที่สอง
>> และมันก็คล้ายกับห้องสมุด C
เพื่อให้คุณรวมถึงสตริง, คุณจะได้รับ strlen
คุณจะได้รับ strcpy ทั้งหมดของสิ่งเหล่านี้
เมื่อคุณมี jQuery คุณจะได้รับที่ดี วิธีในการเลือกองค์ประกอบที่จะเปลี่ยนแปลง
สิ่งที่และอื่น ๆ
คุณจะได้รับฟังก์ชั่นพิเศษที่ จาวาสคริปต์ไม่ได้ให้คุณ
ดังนั้น jQuery ไม่ JavaScript
jQuery เป็นห้องสมุดที่เขียนใน JavaScript ที่ทำให้ JavaScript
ง่ายต่อการเขียน
>> ดังนั้น jQuery ไม่ได้เขียนโปรแกรม ภาษา
แต่ JavaScript เป็น
ทำ
แน่ใจว่าคุณได้รับสิทธิคำศัพท์ของคุณ
คำถามใด?
ใช่
คือคำถามหรือไม่
ขวาทั้งหมด
ดังนั้นวิธีที่คุณใช้ jQuery?
ดีเมื่อคุณกำลังเขียนบางอย่าง JavaScript รหัสและคุณมี
jQuery ที่ด้านบนของไฟล์ของคุณเป็น ไฟล์สคริปต์คุณสามารถใช้เครื่องหมายดอลลาร์
ตอนนี้ได้รับการเข้าถึง jQuery
และนี่คือความแตกต่างจาก เครื่องหมายดอลลาร์ใน PHP
>> มันเป็นสัญลักษณ์เดียวกับที่คุณ พิมพ์บนแป้นพิมพ์ของคุณ
แต่พวกเขาหมายถึงสิ่งที่แตกต่างกันมาก
เครื่องหมายดอลลาร์ใน PHP หมายถึงนี้ เป็นวิธีที่ผมประกาศตัวแปร
ใน JavaScript เมื่อคุณได้รวม jQuery มันย่อมาจาก jQuery
เพื่อให้ทราบว่า
ดังนั้นวิธีที่เราอาจจะเลือกองค์ประกอบ DOM?
ดีเมื่อคุณทำมันน่าเกลียด JavaScript วิธีที่คุณสามารถเข้าถึง
เอกสารตัวแปรทั่วโลก
แล้วคุณจะได้รับองค์ประกอบโดยครอบครัว ID
นี้เป็นจริงยาวและใช้คำฟุ่มเฟือย และไม่ดีมาก
>> หรือคุณจะได้รับทุกองค์ประกอบ ที่มีแท็กพี
ที่ทำงานเกินไปใน JavaScript
แต่เราไม่เคยแสดงให้เห็นว่าจริงๆ คุณไวยากรณ์มากเกินไป
สิ่งที่เราแสดงให้เห็นว่าคุณเป็น jQuery
เพื่อให้ตัวเลือกทั้งหมดที่มีขึ้นที่ ได้แสดงออกใน JavaScript เพิ่งได้รับ
ข้นนี้เงินดอลลาร์ที่ดีมาก ครอบครัว hashtag สัญญาณ
และ $ พีเพียงที่เป็นเช่นนั้น
หากคุณต้องการที่จะเลือกป้ายพีทั้งหมด ภายในครอบครัวเราใส่ช่องว่าง
ระหว่างคนทั้งสอง
และตอนนี้เราได้รับทั้งหมดพี ป้ายภายในครอบครัว
>> และดูคุ้นเคย
ดีแองเจล่าพูดคุยเกี่ยวกับ selectors CSS
ให้ฉันคนที่สอง
และอื่น ๆ ในการที่จะเลือกองค์ประกอบ คุณเพียงแค่ใช้สิ่งเดียวกับคุณ
จะทำอย่างไรกับการเลือก CSS
หากคุณใส่กัญชาอยู่ด้านหน้า มันก็เลือกตามหมายเลข
จุดโดยเลือกเรียน
หากคุณเพียงแค่มีสิ่งที่ไม่มี hashes หรือจุดก็เลือกแท็กเหล่านี้
คำถามที่
ใช่?
>> ผู้ชม: เมื่อเราใช้จุดในของเรา HTML เป็นที่ไม่ jQuery?
>> JOSEPH ONG: Dot ใน HTML ของเรา เป็นสิ่งที่ JavaScript
มันไม่ได้เป็นสิ่งที่ jQuery
วิธีที่พวกคุณได้เรียนรู้มันด้วย jQuery คือการใช้. html ที่
แล้วคุณจะผ่านมันสิ่งที่ HTML เป็นไปได้
ดังนั้นผมจะไปที่ในเวลาเพียง ที่สองจริง
ดังนั้นทำอย่างไรเราทำสิ่งที่องค์ประกอบ เมื่อเราได้เลือกมันได้หรือไม่
เพื่อให้เป็นตัวอย่างของ การเลือกองค์ประกอบ
ดังนั้นตอนนี้เราต้องการที่จะทำสิ่งที่มัน
>> ดังนั้นในกรณีนี้ให้ฉันกลับไป ไปที่ภาพนิ่งก่อนหน้านี้
มันเป็นบ๊อบก่อน
และผมต้องการที่จะเปลี่ยนที่ ภายใน HTML เพื่อไมโล
ดังนั้นผมจึงเรียกใช้ฟังก์ชัน HTML จากองค์ประกอบ
ฟังก์ชั่น HTML ที่เป็น วิธีการขององค์ประกอบ
แล้วฉันจะให้มันสิ่งที่ ฉันต้องการ HTML เพื่อเป็น
และมันก็เข้ามาแทนที่สิ่งที่อยู่ภายในของ แท็กกับสิ่งที่ฉันให้มันว่า
ใช่
คำถาม?
>> ผู้ชม: hashtag ใช้ เพียง jQuery
[ไม่ได้ยิน]
เราจะไม่ใช้ที่
>> JOSEPH ONG: ใช่ว่า
แต่ไม่ต้องกังวลมากเกินไป เกี่ยวกับบริสุทธิ์ JavaScript
ฉันเพียงต้องการที่พวกคุณให้ความสำคัญกับวิธีการที่คุณ จะทำมันด้วย jQuery เพราะ
ที่จะมีความสำคัญ เป็นส่วนหนึ่งในการตอบคำถาม
ขวา
อย่างแน่นอน
ดังนั้นคุณจะเห็น hashtag ที่เพื่อให้ สอดคล้องกับการเลือกองค์ประกอบที่มี
กลาง ID เพราะ hashtag ที่
hashtag หมายความ ID
และองค์ประกอบนี้มีรหัสของกลาง
เพื่อให้เป็นองค์ประกอบที่เราเลือก
>> ผู้ชม: [ไม่ได้ยิน]
เครื่องหมายดอลลาร์ hashtag [ไม่ได้ยิน]?
>> JOSEPH ONG: ดังนั้นไม่มี
คำถามคือคุณสามารถใช้. ค่า
และค่า. ใช้งานได้เฉพาะในองค์ประกอบ ที่เป็นปัจจัยการผลิต
ใน jQuery มันจะเป็น . วาล, ไม่ใช่ค่า.
ดังนั้นฉันจะได้รับตัวอย่างขนาดเล็กที่ ทั้งหมดนี้แสดงให้เห็นถึงการรวมกันใน
ในครั้งที่สอง
แต่ฉันคิดว่านี้จะทำหน้าที่ตัวอย่างเล็ก ๆ น้อย ๆ ทำให้รู้สึกถึงคนเพื่อให้ห่างไกล
ต้องการเปลี่ยน HTML, เรียกวิธีการแบบ
ใช่
>> ผู้ชม: คุณสามารถอธิบาย วิธีการอีกครั้งหรือไม่
>> JOSEPH ONG: ดังนั้นวิธีการเป็นเพียง ฟังก์ชั่นที่เป็นหนึ่งในนี้
กรณีที่เป็นหนึ่งในองค์ประกอบ DOM เหล่านี้ เพราะคุณเห็นฉัน
เลือกองค์ประกอบแรก
ที่จริงให้ฉันใช้เมาส์
ฉันเลือกองค์ประกอบแรก
และจากนั้นฉันเรียกว่า HTML นี้ ทำงานว่ามันมี
และเนื่องจากฟังก์ชั่นนี้เป็นของ สิ่งนี้เราเรียกว่าวิธี
นั่นเป็นเพียงชื่อแฟนซีสำหรับมัน
บอกว่าอีกครั้ง
ดังนั้นอย่าลืมเราเลือก องค์ประกอบในขณะนี้
และเราได้ใส่ไว้ในของ ตัวแปรองค์ประกอบ
ถูกต้องหรือไม่
>> ดังนั้นเมื่อเราต้องการที่จะเปลี่ยน HTML ใน ภายในเพราะมันเป็นบ๊อบมาก่อนคุณ
ต้องการที่จะเปลี่ยนข้อความที่ไมโล
ดังนั้นเราจึงเรียก HTML
และเราบอกว่าสิ่งที่ HTML ที่อยู่ภายใน องค์ประกอบที่ควรจะเป็นในขณะนี้
และดังนั้นจึงมีการเปลี่ยนแปลงไปไมโล เพราะฉันให้มันไมโล
>> ผู้ชม: ดังนั้นพวกเขากำลังทำงานร่วมกัน
[ไม่ได้ยิน]
>> JOSEPH ONG: ใช่ใช่
พวกเขากำลังทำงานร่วมกัน
ดังนั้นหนึ่งของพวกเขาเลือก องค์ประกอบแรก
และคนที่สองไม่ บางสิ่งบางอย่างกับมัน
ใช่
>> ผู้ชม: [ไม่ได้ยิน]
หากวิธีการนี​​้จะแตกต่างจากในรูปแบบ HTML คุณมีวิธีการที่เกิดขึ้นจริงเท่ากับ
>> JOSEPH ONG: ใช่
นั่นคือวิธีการที่แตกต่างกัน
และเราสามารถครอบคลุมที่ในเพียงสอง เมื่อเราได้รับตัวอย่าง
ผมต้องการที่จะให้แน่ใจว่าเราเร็วขึ้น เพราะเรากำลังวิ่งออกมาจากเวลา
แต่เราได้ใช้วิธีเมื่อเวลาผ่านไปในขณะนี้
ตกลง
เย็น
ดังนั้นถ้าคุณต้องการที่จะเพิ่มระดับมี นอกจากนี้ยังมีวิธีการเรียนเพิ่ม
นี่เป็นเพียงตัวอย่างของสิ่งที่ คุณสามารถทำอะไรกับ jQuery
ที่เพิ่งเพิ่มระดับ
>> หากคุณต้องการที่จะลบมัน คุณสามารถเรียกลบ
นั่นเป็นเพียงสิ่งที่คุณสามารถทำอีก
ตัวอย่างที่มากขึ้นของสิ่งที่คุณสามารถทำได้
ดังนั้นผมก็สามารถวางมันไว้ที่ ด้านบนเช่นนี้หรือไม่
ลบที่อายุน้อยที่สุด
ถ้าฉันเพียงรันจาวาสคริปต์ที่ ด้านบนของไฟล์ของฉันจะว่าทำงานอย่างไร
ขวา
เพราะตรงกลางยังไม่ปรากฏอยู่
ดังนั้นนี้ไม่ได้ไปทำงาน
เพื่อการดำเนินการ
มันไปที่ด้านบนเป็นครั้งแรก
คืออะไร?
>> ผู้ชม: น้องไม่ได้มีอยู่หรือยัง
>> JOSEPH ONG: ใช่
ที่อายุน้อยที่สุดยังไม่ปรากฏอยู่
อย่างแน่นอน
>> ผู้ชม: คุณบอกว่ากลาง
>> JOSEPH ONG: ขออภัย
ที่อายุน้อยที่สุดยังไม่ปรากฏอยู่
และสิ่งอื่น ๆ ที่ผมยังไม่ได้ รวม jQuery
ขอไฟล์ src สคริปต์
ดังนั้นที่ไม่ได้ไปทำงาน
ที่จริงแล้วผมไม่ได้ทำอย่างนั้นใน ภาพนิ่งถัดไปซึ่งเป็น
ควรจะแก้ไขปัญหาที่ทั้ง
แต่วิธีการที่เราทำเช่นนี้เป็น JavaScript จะขับเคลื่อนเหตุการณ์
ดังนั้นสิ่งที่เราทำคือการที่เราใช้งาน จัดการที่จะทำให้เกิดขึ้น
และเพื่อให้ฉันเลือกเอกสาร ชุดแรก
ผมพูดตกลงเมื่อเอกสารเป็น พร้อมแจ้งให้เราใช้ฟังก์ชั่น
เพื่อให้เป็นสิ่งที่หมายถึงไวยากรณ์
>> ฉันเลือกเอกสาร
ตอนนี้เมื่อเอกสารนั้น พร้อมเรียกใช้ฟังก์ชั่น
และอื่น ๆ กว่าที่นี่เมื่อเอกสารเป็น พร้อมซึ่งหมายความว่าทั้งหมด HTML มี
โหลดแล้วผมใช้ฟังก์ชั่น ที่เอาองค์ประกอบที่
และอื่น ๆ ตอนนี้เมื่อผมใช้ฟังก์ชั่นนี้ ที่ผมผ่านเข้าไปพร้อมฉัน
รับประกันว่าทุก HTML บน หน้าเป็นไปได้ที่มีอยู่ก่อน
ใช่
คำถาม?
>> ผู้ชม: เป็นคำหลักเหตุการณ์อะไร ภายในฟังก์ชั่นหรือไม่
>> JOSEPH ONG: ดังนั้นคำหลักในกรณีที่ ฟังก์ชั่นเป็นเพียงพารามิเตอร์ที่
ได้รับการส่งผ่านไปยังฟังก์ชั่น สำหรับเหตุการณ์ใด ๆ
มันเป็นสิ่งเดียวที่ คุณจะได้รับฟรี
เมื่อคุณใช้ตัวจัดการที่สำคัญใน pset8 เหตุการณ์ที่สามารถบอกคุณได้สำหรับ
เช่นที่สำคัญที่คุณกดลงบน
ในกรณีนี้สำหรับเหตุการณ์พร้อม เป็นจริงไม่ได้มีประโยชน์สุด
แต่สำหรับเหตุการณ์ที่สำคัญลงก็มากขึ้น ที่มีประโยชน์เพราะคุณได้รับที่จะทราบว่า
ที่สำคัญคุณกดปุ่มโดยการเข้าถึง รหัสออกวัตถ​​ุกรณีที่
ถูกต้องหรือไม่
ไม่ที่ทำให้รู้สึก?
ตกลง
ใช่
คำถาม?
>> ผู้ชม: เพ​​ื่อให้คุณสามารถใส่ แท็กสคริปต์ที่ต่ำลง
>> JOSEPH ONG: เพื่อใช่
คุณสามารถใส่สคริปต์ แท็กลดลง
แต่แล้วมันก็จะกลายเป็นยุ่งจริงๆ
และเราชอบที่จะรวบรวมทั้งหมด ของรหัสของเราในสถานที่หนึ่ง
และนี้จะช่วยให้เราสามารถทำมันได้
จำได้ว่าก่อนหน้านี้ผมว่ามีดีกว่า วิธีการเพื่อให้แน่ใจว่าองค์ประกอบ
ในหน้าก่อนที่จะรันโค้ด?
และนี่เป็นเพียงวิธีที่ดี คุณจะประสบความสำเร็จที่
>> ผู้ชม: [ไม่ได้ยิน]
>> JOSEPH ONG: ใช่
คุณจะยังคงต้องใช่ไหม
เพราะจำไว้ว่าคุณรวม ไฟล์ที่ด้านบนของหน้า
ดังนั้นมันจะรันเป็นอันดับแรกก่อน คุณจะได้รับที่ด้านล่างของหน้า
ตกลง
เพื่อให้คุณยังสามารถเพิ่มที่แตกต่างกัน ประเภทของการจัดการเหตุการณ์
หนึ่งนี้เพียงแค่คลิกที่กระบวนการ
เมื่อฉันคลิกที่อายุน้อยที่สุดแล้ว มันจะปรากฏขึ้นพร้อมกับการแจ้งเตือน
นี่เป็นเพียงที่แตกต่างกัน ประเภทของเหตุการณ์
เมื่อเทียบกับเหตุการณ์ความพร้อมตอนนี้คุณ ใช้เหตุการณ์คลิกเมื่อคุณได้รับ
คลิกที่องค์ประกอบ
>> และอื่น ๆ ในกรณีนี้อย่าลืมคลิก จัดการที่แนบมากับน้องคนสุดท้อง
ดังนั้นมันจะเกิดขึ้นเมื่อ ฉันคลิกที่อายุน้อยที่สุด
และในอีกหนึ่งเหตุการณ์พร้อม ติดอยู่กับเอกสาร
ดังนั้นจึงรอให้เอกสาร ที่จะพร้อม
ทำให้รู้สึก
ผมคิดว่าผมสามารถย้าย
ใช่
คำถาม?
>> ผู้ชม: [ไม่ได้ยิน]
ในกรณีนี้คุณใช้งาน [ไม่ได้ยิน]
>> JOSEPH ONG: โอ้ใช่เพราะในนี้ กรณีนี้ผมต้องรอให้น้องคนสุดท้อง
องค์ประกอบที่จะปรากฏบนหน้าจอเป็นครั้งแรก ก่อนที่ผมจะสามารถแนบตัวจัดการคลิกไปที่
มันซึ่งเป็นเหตุผลที่ผมใส่ไว้ใน ของเอกสารพร้อม
ตกลง
และต่อไปนี้จึงเป็นตัวอย่างที่ยิ่งใหญ่ของ วิธีที่คุณจะรวมทุกอย่าง
นี่เป็นเพียงตัวอย่างที่ตรวจสอบรูปแบบ ที่คุณเคยเห็นในการบรรยาย
เพื่อนำไปทีละขั้นตอนที่ คุณไปผ่านทางนี้
และจะตกลงกันโดยสิ้นเชิง
เพียงแค่อ่านจากบนลงล่าง
>> ฉันมีแบบฟอร์มที่ด้านล่าง
เมื่อเอกสารพร้อมที่ผมแนบ ส่งจัดการกับแบบฟอร์มดังกล่าวว่า
เมื่อฉันส่งแบบฟอร์มที่ฉันได้รับค่า ภายในแต่ละของปัจจัยการผลิตเหล่านั้น
และฉันจะตรวจสอบว่าเป็นที่ว่างเปล่า
ถ้าเป็นที่ว่างเปล่าผมกลับเท็จเพราะ ฉันไม่ต้องการที่จะส่งแบบฟอร์ม
เพราะรูปแบบที่ไม่ถูกต้อง
ถ้ารหัสผ่านที่ว่างเปล่าหรือเป็นน้อย กว่าแปดตัวอักษรที่ผมไม่ได้ส่ง
รูปแบบเพราะที่ยังไม่ถูกต้อง
และเท็จกลับมาเพียงแค่ป้องกัน รูปแบบและจากการส่ง
จะหน้าใหม่
>> และหวังว่านี้จะทำให้ความรู้สึก
ผมคิดว่าพวกคุณควรจะเดินผ่าน รหัสนี้ขั้นตอนโดยขั้นตอนด้วยตัวคุณเอง
และเมื่อคุณเข้าใจสิ่งที่เลือก องค์ประกอบและทำสิ่งที่มัน
จริงเหรอนี้จะทำให้ จำนวนมากที่มีความรู้สึกกับคุณ
ใช่?
>> ผู้ชม: อะไร ชื่อ = ชื่อผู้ใช้หมายถึงอะไร
>> JOSEPH ONG: ดังนั้นชื่อ = ชื่อผู้ใช้และ ชื่อ = รหัสผ่านก็หมายความว่ามองไปที่
คุณลักษณะของสิ่งที่ คุณกำลังเลือก
แล้วที่มีเพื่อให้ตรงกับ
ดังนั้นเราจึงไปในการลงทะเบียน
แล้วเรามองไปที่ปัจจัยการผลิตทั้งหมด และการลงทะเบียน
แล้วเราเลือกหนึ่งที่ชื่อ แอตทริบิวต์เท่ากับชื่อผู้ใช้
เพื่อให้ตัวเลือกแรกที่เลือกเพียง ใส่ชื่อผู้ใช้
และที่เลือกสองเท่านั้นเลือก รหัสผ่านอย่างใดอย่างหนึ่งเพราะผู้ที่มี
คุณลักษณะที่ชื่อของพวกเขาตั้งค่าให้เป็นสิ่งที่ พวกเขากำลังควรจะเป็น
คำถาม?
>> ผู้ชม: ในการส่งอย่างไร ส่วนด้านล่างเป็นส่วนหนึ่งในการแก้ไขด้านบน
>> JOSEPH ONG: ดังนั้นว่าเป็นเพราะ ของตัวจัดการเหตุการณ์
ดังนั้นเรากำลังรอสำหรับเหตุการณ์ส่ง ที่ได้รับการยิงออกมาจากรูปแบบ
และนั่นคือทั้งหมดที่ส่ง
ทำไมผมเรียกส่งไปอยู่ที่นั่น?
มันบอกว่าเมื่อฟอร์มถูกส่ง ฉันจะได้รับส่งเหตุการณ์
เพื่อให้ฉันเพียงแค่ตัดที่และ แล้วเรียกใช้รหัสนี้แทน
ใช่?
>> ผู้ชม: คุณมีทำไม ที่จะมีเหตุการณ์ฟังก์ชั่ทำไม
ทำไมไม่เพียง [ไม่ได้ยิน] ได้ไหม
>> JOSEPH ONG: เพราะใน JavaScript คุณ ต้องประกาศฟังก์ชั่น
นั่นคือวิธีการทำงาน ใน JavaScript
ที่คุณจะพูดว่ามันจะ ที่จะใช้ฟังก์ชั่น
ดังนั้นที่คุณบอกว่าคุณกำลัง คาดหวังว่าการทำงานที่นี่แทน
วงเล็บปีกกาเพียง
>> ผู้ชม: และฟังก์ชั่น เป็นสิ่งที่ต่อไปนี้?
>> JOSEPH ONG: ใช่
ฟังก์ชั่นเป็นสิ่งที่อยู่ภายใน วงเล็บปีกกาหลัง
คำหลักที่ทำงาน
ใช่?
>> ผู้ชม: [ไม่ได้ยิน]
>> JOSEPH ONG: สำหรับส่ง?
>> ผู้ชม: ไม่มีสำหรับการทำงาน โดยเหตุการณ์ที่เกิดขึ้น
>> JOSEPH ONG: ใช่
โดยไม่ต้องแข่งขัน คุณสามารถมีที่
ถ้าคุณไม่จำเป็นต้องมีเหตุการณ์ แล้วคุณก็สามารถตัดมัน
แต่ถ้าคุณทำแล้วคุณ เพียงแค่ใส่มันมี
ใช่
คำถามอย่างรวดเร็ว
>> ผู้ชม: [ไม่ได้ยิน]
>> JOSEPH ONG: ใช่
เพราะสิ่งที่คุณต้องทำ document.ready เพียงว่ารอให้ทุก
HTML ในหน้าเว็บที่จะโหลดครั้งแรก
และมักจะที่คุณต้องการองค์ประกอบของคุณ ในสถานที่ก่อนที่คุณเรียกใช้รหัสใด ๆ
ขวาทั้งหมด
เราจะต้องได้รับการอาแจ็กซ์
เราไม่ได้มีเวลามาก
ดังนั้นข้อดีและข้อเสีย
JavaScript ง่ายลอง เขียนด้วย jQuery
แต่ jQuery เป็นชนิดของช้า
>> มันเป็นเช่น PHP จะช้ากว่าซี เพราะการตีความ
และ jQuery เป็นบิตช้ากว่า JavaScript เพราะมันไม่มาก
สิ่งที่ภายใต้ประทุน
และดังนั้นหากคุณกำลังใช้ jQuery ก็ เพียงเล็กน้อยช้ากว่า
JavaScript แม้ว่ามันจะ ช่วยให้คุณมีความสง่างามดี
และสุดท้ายอาแจ็กซ์
จนถึงกับอาแจ็กซ์, คุณยังไม่เห็นอาแจ็กซ์ ในแง่ของการ pset7 ยังเพราะ
เมื่อคุณทำที่คุณส่ง แบบฟอร์มใบเสนอราคา
มันโหลดหน้าใหม่
ดังนั้นคุณจะได้รับแฟลชสีขาวขนาดใหญ่ บนหน้าขณะที่
โหลดหน้าสองถูกต้องหรือไม่
>> มันจะดีมากถ้าคุณ ไม่ได้มีแฟลชนี้
เช่น Facebook, ถ้าคุณเพียงแค่เลื่อนไปที่ ด้านล่างจะเพิ่มเนื้อหาใหม่
โดยไม่ต้องรีเฟรชหน้าทั้งหมด
ดังนั้นบางอย่างเช่นนี้จะดี
นี้เป็นรหัส JavaScript ที่ด้านซ้าย
คุณจะได้รับสิ่งที่อยู่ภายในของท่านว่า
คุณจะได้รับข้อมูลหุ้นจาก Yahoo!
แล้วคุณทำสายใหญ่ที่ กล่าวว่าตกลงนี้เป็นข้อความที่ผมต้องการ
ที่จะแสดงบนหน้าจอ
แล้วคุณใส่ข้อความที่อยู่ภายใน ขององค์ประกอบบางอย่างที่ได้รับ
ปรากฏบนหน้าจอ
>> เพื่อให้เป็นสิ่งที่เกิดขึ้นที่นี่
ดังนั้นโดยทั่วไปเพราะนี่คือทั้งหมด JavaScript และคุณไม่จำเป็นต้องใช้
อีกต่อไป PHP, นี้จะให้แน่ใจว่า ว่าหน้าไม่รีเฟรช
ดังนั้นนี่เป็นเพียงความคิดที่เป็นนามธรรม ที่ฉันพูดที่นี่ตอนนี้
ความคิดที่เป็นนามธรรมคือว่าถ้าคุณทำมัน ทั้งหมดใน JavaScript, คุณไม่ได้มี
รีเฟรชหน้า
แต่อย่างไรคุณจริงทำเช่นนี้?
>> ดีจริงขอพูดคุยเกี่ยวกับ ปัญหาเกี่ยวกับการเป็นครั้งแรกนี้
ปัญหาคือใน JavaScript, ดำเนินการเป็นจังหวะ
ดังนั้นคุณต้องรอเป็นเวลาหนึ่ง สายที่จะเสร็จสิ้นก่อนที่คุณจะ
รันบรรทัดถัดไป
และสิ่งที่ถ้าผมจะไปที่ Yahoo!, และเซิร์ฟเวอร์ของพวกเขาจะช้าจริงๆและ
พวกเขาจะใช้เวลาสามวินาที ให้ฉันกลับไปที่ข้อมูลสต็อก?
เมื่อกดเส้นราคาว่าถ้า ดำเนินการเป็นจังหวะมันเป็นโดย
เริ่มต้นสิ่งที่มันเพิ่งจะทำคือ เบราว์เซอร์ของคุณเป็นไปถ่วง
สามวินาที
และคุณจะไม่สามารถที่จะทำ อะไรในขณะที่จะได้รับข้อมูลว่า
มันจะถูกแช่แข็ง
>> และที่ไม่ดี
คุณไม่ต้องการให้ผู้ใช้ มีหน้าเว็บแช่แข็ง
ถูกต้องหรือไม่
ที่ไม่ดีเพียงแค่
ทุกคนเห็นพ้อง?
หากคุณกำลังเรียกดู Facebook และมัน ค้างและคุณไม่สามารถทำอะไรคุณ
ได้รับความผิดหวังจริงๆ
ดังนั้นการแก้ปัญหาคือเราทำอะไรบางอย่าง ไม่ตรงกันแทน
ดังนั้นทั้งหมดนี้สิ่งที่ไม่ตรงกันว่า คือผมจะถามนี้
URL ของข้อมูลบางส่วน
แล้วฉันจะให้ไป
ฉันแค่จะให้ดำเนินการ สิ่งที่รหัสที่เกิดขึ้นหลังจากที่
>> และจากนั้นเมื่อใดก็ตามที่ข้อมูลที่มีความพร้อม แล้วฉันจะประมวลผล
นั่นคือทั้งหมดที่มันจะพูด
>> ผู้ชม: อาแจ็กซ์ก็ทำให้ รหัสไม่ตรงกัน?
>> JOSEPH ONG: มันไม่ตรงกัน วิธีการเรียกข้อมูล
ดังนั้นสิ่งแรกที่เกี่ยวกับอาแจ็กซ์ มันช่วยให้ผมได้รับข้อมูล
จากเว็บไซต์ภายนอก
และสิ่งที่สองคือมันทำให้แน่ใจว่า ที่หน้าของฉันไม่ได้ขัดขวางในขณะที่ฉัน
เรียกข้อมูลที่
นั่นเป็นส่วนที่ไม่ตรงกันของมัน
เพราะมันจะไปออกที่อื่น เพราะผมบอกว่าผมให้ไปในขณะที่
จะเรียกข้อมูลที่ว่า ทำให้มันไม่ตรงกัน
ฉันให้ดำเนินการ
>> เพื่อให้ไม่ตรงกันว่า ความคิดในใจ
และฉันจะแสดงให้คุณเห็นสิ่งที่ แตกต่างกันคือ
รุ่น synchronous เป็นทางด้านซ้าย
รุ่นที่ไม่ตรงกัน เป็นทางด้านขวา
ดูที่ตัวเลขเพื่อดูว่า ขั้นตอนที่สอดคล้องกับสิ่งที่
ดำเนินการในแต่ละสาย
กว่ามีการแจ้งเตือนจะแสดงขึ้นเป็นครั้งแรก
เพราะได้รับข้อมูลหุ้นจาก Yahoo!
ใช้เวลาสามวินาทีก็ร้าน สามวินาที
และจากนั้นจะแจ้งเตือนราคา หลังจากนั้นสามวินาที
>> ดังนั้นตอนนี้ที่แสดงให้เห็นการแจ้งเตือน ขึ้นในเวลาที่ -
สามวินาทีค่ะ
และจากนั้นจะแจ้งเตือนโดยหลังจากนั้น
ดังนั้นมันก็จะไปทีละขั้นตอน
มันก็เหมือนกับสิ่งที่คุณผู้ชาย จะยอมรับถูกต้องหรือไม่
กับการดำเนินตรงกัน คุณแจ้งเตือนเป็นครั้งแรก
แล้วคุณไปออกไป URL นี้
และคุณจะพูดว่าฉันกำลังจะไป เพียงแค่ขอข้อมูล
แล้วฉันจะไป ดำเนินการได้ในภายหลัง
ดังนั้นจึงดำเนินการได้ทันที บรรทัดถัดไปหลังจากที่ผมทำที่
ขอไม่ตรงกัน
>> ดังนั้น 0.001 วินาทีคุณจะเห็นการแจ้งเตือน hi
ดำเนินการฟังก์ชั่นที่ลาการแจ้งเตือน
เพราะเราให้สัญญาว่าฉัน จะประมวลผลข้อมูลในภายหลังว่า
ที่เกิดขึ้นเมื่อมีข้อมูลที่จะกลับมา สามวินาทีภายหลังจากนั้นผมทำงานที่
ฟังก์ชั่นที่ฉันมีที่นั่น
ใช่?
>> ผู้ชม: คุณสามารถระบุหรือ ชี้แจงสิ่งที่อาแจ็กซ์หมายถึง
>> JOSEPH ONG: ดังนั้นอาแจ็กซ์เป็นวิธีที่ว่าถ้าผม ต้องการข้อมูลเมื่อฉันบนเว็บไซต์และฉัน
ไม่ต้องการที่จะรีเฟรชหน้าเว็บแล้ว ฉันจะใช้เทคโนโลยีที่เรียกว่าอาแจ็กซ์นี้
ที่เป็นหลักก็หมายความว่าให้ไปเรียก ข้อมูลจากเว็บไซต์อื่น
และทำมันในทางที่เพียงแค่ ไม่ขัดขวางหน้าเว็บของฉัน
>> ผู้ชม: ดังนั้นที่โดยธรรมชาติ ส่วนหนึ่งของ JavaScript หรือ jQuery?
>> JOSEPH ONG: ดังนั้นคนที่เขียนวิธีการทำ นี้ใน JavaScript เป็นเวลานานแล้ว
เมื่อมาถึงจุดหนึ่งก็ไม่ได้อยู่
และเพื่อให้คนที่คิดค้นเทคนิคนี้ เพื่อให้คนที่จะขอข้อมูลนี้
ในแบบนี้
และพวกเขาเขียนสิ่งบางอย่าง ที่จะทำเพื่อคุณ
และ jQuery เพียงแค่นี้จะช่วยให้คุณ วิธีที่ดีมากที่จะทำมัน
ด้วย $ นี้. ได้รับฟังก์ชั่น
คำถาม?
ฉันสามารถตอบคำถามเกี่ยวกับ อาแจ็กซ์หลังจากนั้นเกินไป
ฉันจะอยู่ที่นี่
>> ดังนั้นจึงขอให้เราดึงข้อมูลโดยไม่ต้อง รีเฟรชหน้า
และมันช่วยให้เราทำเช่นนี้ใน เป็นวิธีที่ไม่ตรงกันว่า
ไม่ได้แช่แข็งหน้า
นานที่ไม่ได้อ่านว่า คำอธิบายยาวเกินไปสำหรับคุณ
ดังนั้นในที่สุดข้ามเว็บไซต์ การโจมตีการเขียนสคริปต์
เราเห็นนี้กับ Zamyla
หากใครบางคนในฐานข้อมูลของฉันมีชื่อเช่นนี้ ซึ่งเป็นแท็กนี้สคริปต์และฉัน
มีรหัสบางอย่างในหน้าเว็บของฉันที่พิมพ์ ออกชื่อคนในแถวหรือฉันมี
บางโค้ดจาวาสคริปต์ที่แทรก ชื่อนี้ในหน้า
สิ่งที่ได้รับการผลิต HTML?
ดีฉันพิมพ์ออกมาแท็ก
ฉันพิมพ์ออกมาแท็กทั้งหมดเหล่านี้
>> ฉันได้รับที่จะเป็นส่วนหนึ่งที่ผมพิมพ์ ออกไปกับเพื่อนของฉัน
พิมพ์ลอเรนออก
มันพิมพ์ออกไมโล
แล้วชื่อของฉันในฐานข้อมูล การโพสต์สคริปต์
ยกยอสถานะ Facebook
เพราะฉันใส่นี้ลงในหน้า เพราะดูเหมือนว่า JavaScript เมื่อ
หน้านี้ได้รับการส่งไปยังผู้ใช้ จะได้รับการดำเนินการตาม JavaScript
ดังนั้นนี่คือสิ่งที่เราเรียกว่า โจมตีสคริปต์ข้ามไซต์
มีคนทำให้ข้อมูลที่เป็นอันตรายใน ฐานข้อมูลของคุณที่สามารถสอดคล้องกับ
บางสายเพิ่มเติมหรือ บางสตริง JavaScript
>> และเมื่อได้รับการพิมพ์ออกมา หน้าแบบนี้แล้วสิ่งที่
ที่เกิดขึ้นคือว่ารหัสไม่ได้รับการดำเนินการ ว่าผมไม่ได้ตั้งใจ
มันจะได้รับการดำเนินการ
และนั่นคือทั้งหมดข้ามไซต์ โจมตีการเขียนสคริปต์เป็น
และวิธีที่คุณจะได้รับรอบ นี้เป็นเหมือน Zamyla กล่าวว่า
คุณเพียงแค่สิ่งที่อยู่ในห่อ HTML ตัวอักษรพิเศษ
และ HTML ตัวอักษรพิเศษคือ PHP ฟังก์ชั่นที่จะป้องกันไม่ให้เกิดการจัดเรียงนี้
ของสิ่งที่เกิดขึ้นกับคุณ ถ้าคุณมีที่เป็นอันตราย
สตริงในฐานข้อมูลของคุณ
มันก็หนีมันเพื่อให้มันไม่ได้ ได้รับการแปลเป็​​นภาษา HTML
จะแทนที่วงเล็บน้อย กับสิ่งที่เราเรียกหน่วยงานที่
และเราไปกว่านี้ในการบรรยายเกินไป
ดังนั้นผมคิดว่าพวกคุณควรจะมี ความเข้าใจที่ดีเกี่ยวกับการที่
คำถาม?
ใช่
>> ผู้ชม: ดังนั้นวิธีที่จะ [ไม่ได้ยิน]?
>> JOSEPH ONG: พูดอีกครั้งว่า
>> ผู้ชม: วิธีที่จะตรวจสอบ -
>> JOSEPH ONG ขวา
เพื่อให้คุณมีบางสิ่งบางอย่างที่บอกว่าเมื่อ ผมลงทะเบียนชนิดในนามของเรา
ฉันเพียงแค่พิมพ์ในฟิลด์ที่ชื่อของฉันคือ stript โพสต์ไม่ยกยอ Facebook
สถานะแท็กสคริปต์อย่างใกล้ชิด
และที่เพิ่งได้รับการใส่ลงไปใน ฐานข้อมูลเพราะฉันไม่สามารถพูดของใครบางคน
ในโลกไม่ได้มีชื่อ ด้วยลูกศรซ้ายในนั้นหรือ
สคริปต์คำในนั้น
แต่นั่นไม่ได้ทำให้รู้สึกจริงๆ
ดังนั้นผมก็ต้องให้แน่ใจว่าฉัน sanitize สิ่งก่อนที่จะพิมพ์
ออกไปที่หน้า
>> ผู้ชม: ดังนั้นบัตรพิเศษ HTML ป้องกันไม่ให้แท็กของสคริปต์หรือไม่
>> JOSEPH ONG: ใช่
ดังนั้นจึงไม่ได้ป้องกันการแท็กของสคริปต์
มันก็ทำให้แน่ใจว่า แท็กของสคริปต์ไม่ได้รับ
ตีความเป็น HTML หรือ -
ใช่
มันก็ขึ้นมาเป็นสิ่งที่ มันเป็นจริง
ขวาทั้งหมด
เพื่อให้เป็นทบทวนคำถาม
เย็น
>> [APPLAUSE]