HANNAH BLUMBERG: Hi ყველას. ჩვენ ვაპირებთ, რომ დავიწყოთ მხოლოდ რამდენიმე წუთით ადრე მას შემდეგ, რაც ჩვენ გვაქვს მთელი ბევრი მატერიალური მისაღებად მეშვეობით. მე ხანა. მე TF. მარია იქნება გაწევრიანების ჩვენთვის მხოლოდ რამდენიმე წუთი. იგი ასწავლის სექციაში უფლება ადრე. ვასწავლი სექციაში უფლება მას შემდეგ, ამიტომ ჩვენ ვაპირებთ უნდა შევინარჩუნოთ ის, საათი და ნახევარი. ასე რომ, როგორც თქვენ დაინახავთ აქ, ჩვენ გვაქვს საკმაოდ რამდენიმე თემა, ჩვენ უნდა გაიაროს, ასე რომ, ჩვენ უნდა აპირებს ცოტა სწრაფად. მაგრამ თუ ნებისმიერ მომენტში ჩვენ ვამბობთ, რომ რაღაც ძალიან სწრაფად ან თქვენ არ მესმის, მოგერიდებათ შეუშალოს შეკითხვებს. ჩვენ გვინდა, რომ შეძლებს, რომ ეს განიხილოს სხდომაზე სასარგებლო ყველას, როგორც შესაძლებელი. გასაოცარია. მოდით ხტომა უფლების მქონე რამდენიმე თემა, რომ ჩვენ რეალურად ძალიან, ძალიან მოკლედ დაფარული, რომ ვიქტორინა 0 ვიქტორინა 0 განხილვის სხდომაზე. ასე რომ, დაწყებული დაკავშირებული სიები. ასე რომ, უბრალოდ, დარწმუნდით, რომ თქვენ გაქვთ გარკვეული საბაზისო ცოდნა დაკავშირებული სიები და კომფორტული აკეთებს ზოგიერთი ძირითადი ოპერაციები. ასე რომ, უბრალოდ, განიხილოს უკავშირდება სიები უკეთესია, ვიდრე კოლექტორები იმიტომ, რომ მათ შეუძლიათ იზრდება დინამიურად ვითარდება. ამიტომ ჩვენ გვაქვს უზარმაზარი უპირატესობა. ჩვენ ვნახეთ მათ გამოყენებული hash მაგიდები, როდესაც ჩვენ არ ვიცი ზუსტად რამდენი რამ ჩვენ ვაპირებთ, რომ გსურთ ჩადეთ ჩვენი მონაცემებით სტრუქტურა. სამწუხაროდ, ჩვენ გვაქვს ცალი უკავშირდება სია მთელი მეხსიერება, ასე რომ, ჩვენ არ უნდა იყოს შეუძლია ეს მუდმივი ხელმისაწვდომობა ნებისმიერ ელემენტს უკავშირდება სიაში. იმისათვის, რომ იპოვოს კერძოდ ელემენტს, ჩვენ უნდა iterate ყველა გზა დასაწყისში. ასე რომ, გახსოვდეთ, რომ ყველაზე ძირითადი ოპერაციების omega 1. ასე რომ, ჩანართით მხოლოდ აპირებს 1. წაშალე აპირებს n, რადგან ჩვენ უნდა წავიდეს, რათა იგი სიიდან. და ძებნა შეეძლო, უარეს შემთხვევაში, n. ჩვენ არ შეგვიძლია გავაკეთოთ რაღაც ორობითი ძებნა უკავშირდება სიაში მას შემდეგ, რაც ჩვენ არ შეგვიძლია მხოლოდ შემთხვევით გადადით შუა. ზემოთ. გასაოცარია. ცოტა stacks. ეს, კიდევ ერთხელ, გამოვიდა ინტელექტუალური 0, ასე რომ თქვენ უნდა იყოს სუპერ კომფორტულად იგი. მაგრამ stacks, ჩვენ ვთხოვთ თქვენ უნდა გვახსოვდეს, დასტის ქაღალდის. და ეს იქნება პირველი, გაგრძელდება გარეთ. ასე რომ, ჩვენ დასტის რამ დასტის, და შემდეგ თუ ჩვენ ვცდილობთ, მიიღოს რაღაც off-- რომელიც ჩვენ მოვუწოდებთ popping off დასტის ჩვენ მოვა off დაბრუნება. და თუ ჩვენ გვინდა, რომ რაღაც დასტის, ჩვენ მას უბიძგებს. ასე რომ, ის ყოველთვის იქნება იზრდებოდა ქვემოდან, როგორც დასტის ქაღალდის. გასაოცარია. ჩვენ ვნახეთ stacks განხორციელდა ორივე უკავშირდება სიები და მასივები. თუ თქვენ ახორციელებს მასივები, გსურთ დარწმუნდით, რომ შევინარჩუნოთ სიმღერა ორივე ზომა და მოცულობა. ასე რომ, ზომა იქნება მიმდინარე რიგი რამ თქვენს დასტის, ხოლო სიმძლავრე საერთო რაოდენობა რამ თქვენ შეგიძლიათ შეინახოთ თქვენი დასტის. ზემოთ. ძალიან ანალოგიურად, ჩვენ გვაქვს რიგები. ამ შემთხვევაში, ნაცვლად ფიქრი დასტის ქაღალდის, ვფიქრობ ხაზი. ეს იქნება პირველი, პირველი გარეთ. ასე რომ, თუ თქვენ უგულებელყოფა up რაღაც მაღაზიაში, ჩვენ იმედი გვაქვს, რომ პირი, პირველი ხაზი იქნება დაეხმარა პირველი. იმის ნაცვლად, რომ ბიძგი და პოპ როგორც ვაკეთებთ დასტის, ჩვენ უბრალოდ, ვამბობთ enqueue და dequeue. ისევ და ისევ, თუ თქვენ არ ხართ ახორციელებს ამ მასივი, ჩვენ უნდა შევინარჩუნოთ სიმღერა არა მარტო ზომა და მოცულობა, არამედ ხელმძღვანელი, რომელიც იქნება წინაშე ჩვენი რიგიდან. ზემოთ. ნებისმიერი კითხვები, რომ არც ერთი? გასაოცარია. მოძრავი უფლება გასწვრივ. OK, hash მაგიდები. აქ, სადაც იგი იწყებს მისაღებად ნამდვილად საინტერესო. ასე რომ, hash მაგიდა ერთი განხორციელება ასოციაციურ მასივში. ასე რომ, ძირითადად, თუ რა მოხდა არის, ჩვენ გვაქვს ყველა ამ input, და ვაძლევთ მას hash ფუნქცია, რომელიც ამბობს, OK, ეს არის, სადაც hash მაგიდა მას ეკუთვნის. ასე რომ მარტივი ქეშირების ფუნქცია რომელიც ჩვენ ვნახეთ, უბრალოდ ვამბობ, OK, ვფიქრობ, ჩვენ გვინდა, რომ სიმები ჩვენს hash მაგიდა. და ნამდვილად მარტივი იდეა შეიძლება ვთქვათ, OK, მოდით უბრალოდ დასალაგებლად მიერ პირველი წერილი სიტყვა. ასე რომ თქვენ ხედავთ აქ, ჩვენ ბანანის, ჩვენ დააყენოს ის მეშვეობით ქეშირების ფუნქცია, და იგი აცხადებს, hey, რომ უნდა წავიდეს ინდექსი 1. ასე რომ, ჩვენ შეიძლება არსებითად ვფიქრობ hash მაგიდა, როგორც bunch სხვადასხვა თაიგულების. და თითოეული იმ თაიგულების აპირებს გამართავს ხელმძღვანელი უკავშირდება სიაში. და ამ უკავშირდება სია, სადაც შეგვიძლია რეალურად დააყენა სხვადასხვა ცალი მონაცემები. ასე რომ, diving ცოტა მეტი შევიდა hash ფუნქცია, აქ მაგალითად მე აღწერილი, სადაც ჩვენ უბრალოდ, ვამბობთ, OK, მიიღოს პირველი წერილი სიტყვა და ჩვენ აპირებს დასალაგებლად იგი თაიგულების. ასე რომ, სავარაუდოდ, იქ იქნება 26 თაიგულების, ერთი თითოეული წერილი ანბანი. რატომ არ არის ამ დიდი ქეშირების ფუნქცია? რა ხდის ამ არასამთავრობო იდეალური? ჰო. აუდიტორია: თქვენ აპირებს collisions. HANNAH BLUMBERG: ჰო, ზუსტად. თქვენ ვაპირებთ აქვს შეჯახება. ასე რომ, ერთი რამ. და ჩვენ ვსაუბრობთ იმაზე, თუ როგორ შეუძლია დაფიქსირება collisions მხოლოდ მეორე. კიდევ ერთი პრობლემა, ამ კერძოდ hash ფუნქცია ის არის, რომ ჩვენი სხვადასხვა თაიგულების იქნება საკმაოდ რადიკალურად განსხვავებული ზომის. ჩვენ ვიცით, რომ არსებობს მთელი ბევრი მეტი სიტყვა, რომ იწყება, ვიდრე X, ასე რომ, ჩვენ ვაპირებთ, რომ ძალიან დაუბალანსებელი თაიგულების ჩვენს hash მაგიდა. ზემოთ. ასე რომ, ჰო, მოდით დავუბრუნდეთ წერტილი შეჯახება. რა ვქნათ, თუ არ შეჯახება? ჩვენ გვყავს რამდენიმე სხვადასხვა პარამეტრები. ასე რომ, ერთი, ასე მგონია, ჩვენ ვცდილობთ, იმისათვის, რომ berry ჩვენი hash მაგიდა. და ჩვენ ვხედავთ, oh, ჩვენ გვინდა იმისათვის, რომ ეს ინდექსი 1, მაგრამ ბანანის იქ უკვე ცხოვრობს. რასაც ჩვენ ვაპირებთ, რომ გავაკეთოთ? ჩვენ გვაქვს ორი ძირითადი პარამეტრები. პუნქტების არის შეიძლება ითქვას, OK, არ არსებობს ოთახი ინდექსი 1, მაგრამ მოდით უბრალოდ შეინახოს გადახედეთ სანამ ჩვენ შეგვიძლია მოვძებნოთ კიდევ ერთი ღია ადგილზე. ასე რომ, ჩვენ იტყვით, მოდით ვთქვათ ადგილზე 3. ეს არის ერთ ერთი ვარიანტი. ეს მოუწოდა ხაზოვანი probing. და მეორე ვარიანტი ვამბობთ, ასევე, მოდით უბრალოდ ყოველი ეს თაიგულების იყოს ხელმძღვანელები დაკავშირებული სიები. და ეს OK თუ არსებობს უფრო მეტი ვიდრე ერთი რამ bucket. ჩვენ უბრალოდ აპირებს დამატება იგი გადატანა წინ. ასე რომ, აქ თქვენ შეგიძლიათ ნახოთ, OK, როდესაც ჩვენ ჩასმული ბერი, ჩვენ უბრალოდ აიღო ბანანის, სახის აიძულა მას მეტი ცოტა და ესროლა berry არსებობს. ეს ასევე სრულიად ჯარიმა. ეს ეწოდება ცალკე chaining. თქვენ შეგიძლიათ წარმოიდგინოთ, რომ ეს ერთგვარი მოსწონს მასივი ხელმძღვანელები დაკავშირებული სიები. ნებისმიერი კითხვები hash მაგიდები, hash ფუნქციები? გასაოცარია. ხეები და ლელო. ასე რომ ხე არის ნებისმიერი სახის მონაცემები სტრუქტურა რომელშიც არ არის გარკვეული იერარქიის ან გარკვეული რანგის თქვენი სხვადასხვა ობიექტები. და ეს გახდება სუპერ ნათელია, როდესაც ჩვენ ვხედავთ მაგალითს. და ჩვენ ვხედავთ, ლელო, გასწვრივ ერთად hash მაგიდები, pset5-- რომელიც, კიდევ ერთხელ, სრულიად სამართლიანი თამაში ამ quiz-- როგორც სხვა მონაცემები სტრუქტურები, რომ ჩვენ შეუძლია შესანახად სხვადასხვა რამ. იმ შემთხვევაში, ლექსიკონი, ჩვენ ინახება რამოდენიმე სიტყვა. მოდით შევხედოთ ზოგიერთი ხეები. ასე რომ, ეს არის მაგალითი იმისა, ხე. მას აქვს ისეთი სტრუქტურა, რომ იერარქიული სტრუქტურა, სადაც თქვენ შეგიძლიათ ნახოთ, რომ ამ 1 კვანძის ზედა აქვს გარკვეული წოდება ზემოთ 2 და 3, რომლებიც ზემოთ 4, 5, 6 და 7, რომლებიც ზემოთ 8 და 9. ასე რომ, ყველა ვგულისხმობთ ხე, ასე რომ თქვენ შეგიძლიათ მხოლოდ სახის სურათი ეს თქვენი უფროსი. ამჟამად, ჩვენ გვაქვს ორი უფრო სპეციალიზებული ხეები. ასე რომ, ერთი მაგალითი არის ორობითი ხე. და ორობითი ხე არის, ერთხელ, უბრალოდ იქნება მონაცემთა სტრუქტურის გარკვეული იერარქიაში, მაგრამ თითოეული კვანძების შეიძლება ჰქონდეს ყველაზე ორი შვილი. ეს არის ის, სადაც სიტყვა ორობითი მოდის. ასე რომ, ეს არის მაგალითი იმისა, ორობითი ხე. ასე რომ, პატარა კატეგორიაში ხეები. ახლა მოდით კიდევ უფრო კონკრეტული და ვისაუბროთ ორობითი ხე ორობითი ძებნა ხეები, საკმაოდ. ასე რომ, აქ არის იდეა, რომელიც არა მარტო ყველა კვანძის აქვს საუკეთესო ორი შვილი, მაგრამ ყველა ბავშვები მარცხენა ვაპირებთ იყოს პატარა და ყველა ბავშვები მარჯვენა ვაპირებთ იყოს დიდი. ასე რომ შეამჩნია მხოლოდ ჩვენი ორობითი ხე, არსებობს არსებობს შორის ურთიერთობა ნომრები. მაგრამ ჩვენი ორობითი ძებნა ხე, ჩვენ ვხედავთ, ბატონო, აქ არის 44. და ყველა ნომერი მარცხნივ 44 არის პატარა და ყველაფერი სწორი მეტია. და, რომელიც ყოველ დონე ხე. ასე რომ, აქ, ამ პატარა, ვიდრე 22 და ეს არის უფრო მეტი, ვიდრე 22. და რომ ორობითი ძებნა ხე. რატომ ჩვენ მიგვაჩნია, რომ ეს ე.წ. ორობითი ძებნა ხე? რა ალგორითმი ჯერ ეს შეგახსენოთ? აუდიტორია: ორობითი ძებნა. HANNAH BLUMBERG: ორობითი ძებნა. იმის გამო, რომ, თუ თქვენ ეძებს კერძოდ ნომერი ხე, ყოველ ეტაპზე, თქვენ შეგიძლიათ უბრალოდ დაარტყა off ნახევარი ხე, რომელიც არის დიდი. და ისე, რომ აპირებს მოგვცეს რაღაც რომ ძალიან ჰგავს ორობითი ძებნა. ნებისმიერი კითხვები? ყველა უფლება, ზემოთ. ყველა უფლება ცდილობს. ყველას საყვარელი. ასე რომ, ეს არის მაგალითი იმისა, რომ ჩვენ ვნახეთ რამოდენიმე კლასში. ისევ და ისევ, ეს არის კიდევ ერთი ისე, რომ ჩვენ შეგვიძლია მონაცემების შესანახად. იმ შემთხვევაში, ლექსიკონი, კიდევ ერთხელ, ეს იქნება სტრიქონები. მოდით ვნახოთ, რა არის რეალურად ჰგავს ოდნავ ქვედა დონეზე. მოდით შევხედოთ ერთი კვანძის წელს trie. და ჩვენ ვხედავთ, OK, იქ უნდა იყოს ლოგიკური და კვანძის, მომცეთ კვანძის. და ჩვენ ვხედავთ, რომ ლოგიკური ეწოდება is_word. ასე რომ, არსებითად, რომ აპირებს შეესაბამება ამ პატარა სამკუთხედები, რომელიც ამბობს, თუ თქვენ შემოსული აქ, თქვენ ი სრული სიტყვა. ჩვენ ვიცით, რომ "turing" მეტი აქ არის სრული სიტყვა, ხოლო მხოლოდ T-U-R არ არის სიტყვა იმიტომ, რომ ჩვენ ვერ ვხედავთ, რომ პატარა დელტა. და რომ პატარა დელტა, კიდევ ერთხელ, შეესაბამება ამ is_word, ეს ლოგიკური is_word. და მაშინ ჩვენ გვაქვს მასივი შვილი. ასე რომ, თითოეულ დონეზე, თქვენ აქვს კონკრეტული კვანძის, და რომ კვანძის მიუთითებს მასივი მთელი ანბანი. ასე რომ თქვენ ხედავთ, კიდევ ერთხელ, ამ სურათზე მე ვარ ვაპირებ შენარჩუნება jumping უკან და forth--, რომ მასივი ზედა აქვს bunch სხვადასხვა კვანძების მოდის off იგი. მას აქვს 26 ან 27 თუ გსურთ მოიცავს დამატებითი ხასიათი. და ეს გვაძლევს გზა შესანახად ჩვენი მონაცემებით ისე, რომ შეიძლება ჩანდა, რომ შეგიძლიათ ეძებოთ სუპერ სწრაფი. რა არის საძიებელი დრო trie? აუდიტორია: [INAUDIBLE]. HANNAH BLUMBERG: ჰო. თეორიულად, ეს არის მუდმივი დრო. ეს მხოლოდ იქნება ზომა სიტყვა, რომელიც გსურთ ეძებოთ. მაშინაც კი, თუ დავუმატებთ zillion მეტი სიტყვა ჩვენი trie, ის არ აპირებს მიიღოს ჩვენთვის აღარ, რათა დადგინდეს, თუ მოცემული სიტყვა არის trie. ასე რომ, მართლაც ლამაზი. აუდიტორია: ნუთუ მხოლოდ ინიციალიზაცია რომ მასივი? თქვენ გაშვებული წერტილი ან ორი. შეგიძლიათ უბრალოდ საუბრობენ რომ მეორე? HANNAH BLUMBERG: რა თქმა უნდა, აბსოლუტურად. კარგი კითხვაა. კითხვა იყო, ჩვენ მასივი, რომ აპირებთ უნდა კვანძის ვარსკვლავი, როგორც განსხვავებით მხოლოდ კვანძის, არა? ზემოთ. ასე რომ, აქ, რასაც ჩვენ ვამბობთ, ჩვენი მასივი მხოლოდ იქნება მითითებას სხვა მასივები. ასე რომ, ეს არსებითად ეს სახის იგრძნობა უკავშირდება სიაში ამ გზით სადაც თითოეული მათგანი ბავშვები უბრალოდ მიუთითებს შემდეგი კვანძში. და ისე, რომ ჩვენ რეალურად განაპირობებს, hey, OK, ჩვენ iterated მეშვეობით მთელი სიტყვა, ეს სიტყვა ლექსიკონი, ჩვენ მხოლოდ შეამოწმოს ამ is_word. დიდი კითხვა. ჰო. აუდიტორია: OK. რა იყო runtime, რომ trie? HANNAH BLUMBERG: რა თქმა უნდა. ასე რომ, runtime ამისთვის trie for ძიება იქნება მუდმივი დრო. ასე რომ, ეს უბრალოდ იქნება პუნქტების წერილები სიტყვა. ეს არ არის დამოკიდებული ზომა ლექსიკონი ან ზომა მონაცემები სტრუქტურა. ასე რომ, აქ ოდნავ მარტივი მაგალითი. ამ შემთხვევაში, თქვენ ხედავთ, რომ სიტყვა bat არის ლექსიკონი და თქვენ უნდა zoom, მაგრამ თქვენ არ აქვს რაღაც ზოოპარკში. როგორ ჩვენ ზოოპარკში? როგორ დავამატოთ ზოოპარკში ჩვენი ლექსიკონი, ჩვენი trie? ჰო. აუდიტორია: ჩადება is_word მართალია [INAUDIBLE]. HANNAH BLUMBERG: კარგი. ასე რომ, ჩვენ მინდა ვთქვა, Z-O-O, და მაშინ ჩვენ მინდა გსურთ შეამოწმოთ off რომ ყუთში ასევე. შესანიშნავი. მოდით შევადაროთ ძალიან მოკლედ ცდილობს წინააღმდეგ hash მაგიდები. ლელო მართლაც დიდი რადგან, როგორც ვთქვით, ისინი მუდმივი დროში lookup. მაგრამ დიდი მინუსი არის ისინი humongous. თქვენ შეგიძლიათ მიიღოთ გრძნობა, კი შევხედავთ მას, რომ ის აპირებს დიდი ოდენობით მეხსიერება. ასე რომ, ისინი, იქნება ბევრად უფრო მეტია, ვიდრე hash მაგიდები, მაგრამ ისინი აპირებენ, რათა ჩვენს ბევრად უფრო სწრაფად ძიება ჯერ. ასე რომ სახის თქვენი იდგა, რას აინტერესებს, არის თუ არა ეს სიჩქარე და მეხსიერება. ნებისმიერი კითხვები, რომ არც ერთი, ყველა C მონაცემთა სტრუქტურები. ლამაზი. კარგი. ჩვენ ვაპირებთ, რომ გადაადგილება პატარა ცოტა ვებ განვითარების მარია. MARIA ZLATKOVA საყვარელი. კარგი. HANNAH BLUMBERG: თქვენ შეგიძლიათ გამოიყენოთ ჩემი ლეპტოპი. MARIA ZLATKOVA: Nice. OK, მაგარი. როგორც ჩვენ გადაადგილება ახლა ვებ განვითარება, ჩვენ ვისაუბრეთ ცოტა შეცვლის შესახებ ნებართვების ფაილი და დირექტორიები ასე რომ შეიძლება იყოს ხელმისაწვდომი სხვა წევრებს, რომ მსოფლიოში, და ისე, რომ ჩვენ ვხედავთ, როგორ ძირითადად ჩვენ შეგვიძლია გადავცემთ მათ როდესაც ჩვენ განვითარება რამ, როგორიცაა ვებ რომ ჩვენ ძირითადად აკეთებს. ასე რომ, ჩვენ ვნახეთ, რომ chmod ბრძანება, რომელიც შეცვლის რეჟიმი, ძირითადად. ეს არის ის, Linux ბრძანება და ეს ცვლის წვდომის უფლებები ფაილური სისტემა ობიექტები. და ფაილური სისტემა ობიექტი მხოლოდ დირექტორია, ფაილი, არაფერი, რომ თქვენ შეცვლა უფლებები. ასე, რომ ნახოთ ფაილის უფლებები, ჩვენ აკრიფოთ ბრძანება ls, სია, მ. და როდესაც ჩვენ აკრიფოთ რომ, ჩვენ როგორც წესი, ზოგიერთი უფლებები რომ გამოიყურებოდეს ერთგვარი მოსწონს ეს თვალწინ დირექტორია სახელი. ასე რომ, დ ეხება დირექტორია. და მაშინ ჩვენ გვაქვს სამი triads, რომელიც ძირითადად ეხება უფლებების ან შესახებ, ჯგუფი, ან მსოფლიოში. სახის ნებართვები, რომ ჩვენ შეგვიძლია გვაქვს ამ სამი ჯგუფი ან r წაკითხული, w წერენ, და x შეასრულოს. ჩვენ შეგვიძლია იმ ჯგუფი და მსოფლიოში, ისევე. სახიფათო ის არის, რომ ზოგჯერ როდესაც ჩვენ აკრიფოთ chmod ბრძანება, ჩვენ რომ აკრიფოთ გარკვეული რაოდენობის რომ შედგებოდა სამი ბიტი. ასე რომ, ჩვენ შეგვიძლია ამის გაკეთება, როგორც 777, რომელიც ძირითადად მოხსენიებული დამატებული ღირებულების თითოეული ამ triads იმიტომ, რომ r ეხება, 4, w გვინდა ეხება 2 და x ეხება 1, ასე რომ, როდესაც დასძინა up, თითოეული ნომრები მოვიდოდა ქვემოთ კუმულაციურ ნომერი კუმულაციურ მნიშვნელობა 0 და 7. ასე რომ, ჩვენ შეიძლება ასევე აქვს 0 არა ნებართვების ყველა. და რომ, ძირითადად, მოგვცეს ნებართვების ან მომხმარებელს, ჯგუფი, ან მსოფლიოში. ნებისმიერი კითხვები ამ აქამდე? აუდიტორია: თქვენ განაცხადა წავიკითხე იყო 4? MARIA ZLATKOVA: დიახ. აუდიტორია: [INAUDIBLE]. HANNAH BLUMBERG: Yup. აუდიტორია: და მერე დასძინა ყველა იმ სხვები მიუთითეთ თქვენი ნომერი. MARIA ZLATKOVA: ჰო. ჰო. ეს არის დიდი შეკითხვებს. საყვარელი. შემდეგი, ჩვენ გადახტა HTML და ცოტა მეტი ვებ განვითარებას. ასე რომ, HTML მხოლოდ იმას ნიშნავს, HyperText Markup Language. და ეს არის markup ენა, რომელიც არის სტანდარტული რომ ის გამოიყენება შექმნა ვებ გვერდები. ეს ე.წ. მარკირების ენა იმიტომ, რომ ეს არ არის რეალურად შედგენილი. ეს არ ვთქვა, თუ როგორ კოდი უნდა შესრულდება ან რამე მსგავსი. უბრალოდ განსაზღვრავს და აღწერილია, თუ როგორ ვებგვერდი გვერდი უნდა შეიქმნას თითოეული მისი ელემენტები და როგორ უნდა გამოიყურებოდეს შესახებ. ზოგიერთი HTML tags, რომ ჩვენ წავიდა არიან შემდეგ. ყველა ჩვენი HTML დოკუმენტი დაიწყო DOCTYPE html. მაშინ ჩვენ ყოველთვის აქვს html აქვს. ჩვენ გვაქვს ხელმძღვანელი და სხეულის. და ეს მნიშვნელოვანია, რომ HTML აქვს ეს ერთგვარი წყობილი სტრუქტურა რადგან ეს არის ძალიან ნათელი. და მაშინ ეს ხდება ძალიან მკაფიო, როდესაც ჩვენ უნდა გახსნა და რეალურად ახლო tags. ჩვენ ყოველთვის უნდა დახუროს tags, რომ ჩვენ გაიხსნა. და აქ ჩვენ გვაქვს გარკვეული სახის რამ წინ, რომ ჩვენ გვინდა, რომ აქვს. ასე რომ, ჩვენ, მაგალითად, სათაური CS50. და მაშინ ჩვენ რეალურად შეგიძლიათ ლინკი სტილის ფურცელი რომელიც განსაზღვრავს, თუ როგორ სტილი ჩვენი ნახვა. ეს არის CSS. ჩვენ ვაპირებთ წასვლა ეს მომდევნო რამდენიმე სლაიდები, ასევე. სხეულში, ჩვენ დავსახეთ ზოგიერთი კლასები და პირადობის მოწმობები. და როგორც შეხსენება, კიდევ ერთხელ, პირადობის მოწმობები არის უნიკალური და კლასი შეიძლება დაეკისროს სხვადასხვა ნივთები. და ეს მხოლოდ იმას ნიშნავს, რომ ჩვენ შეგვიძლია გამოვიყენოთ კლასები და პირადობის მოწმობები ფარგლებში სხვა structures-- ასე რომ, მაგალითად, შიგნით CSS ფაილი ან სტილი sheets-- ეხება კონკრეტული ელემენტები და ძირითადად ამბობენ, რომ ჩვენ გვინდა სტილი ან დიზაინის რამდენიმე ელემენტს გარკვეულ გზა. და ჩვენ ეხება მათ მიერ მათი პირადობის მოწმობა და კლასების. და ჩვენ შეგვიძლია ასევე ეხება სხვადასხვა რამ tags ასევე, მაგრამ პირადობის მოწმობა და კლასების მხოლოდ გვაწვდიან versatility და რა კონკრეტულად ჩვენ გსურთ მიმართოს. ასე რომ, მხოლოდ მაგალითია. ჩვენ შეგვიძლია, კიდევ ერთხელ, ფარგლებში CSS ფაილი სადაც ჩვენ გვინდა, რომ განსაზღვროს გარკვეული style-- ასე ფერები, შრიფტები, და პერსონალის მაგდაგვარს ჩვენ შეგვიძლია განსაზღვროს სტილის ორგანო. ასე რომ, განსაზღვროს ის მთელი ორგანოს აქვს. მაგრამ მაშინ ჩვენ შეგვიძლია ასევე განსაზღვრავს სტილის #title. ისევ და ისევ, hashtag ეხება ჩვენს ID და dot ეხება ჩვენი კლასი. და შემდეგ .info, ჩვენ ასევე შეუძლია შექმნას გარკვეული ატრიბუტები. და ისევ, როდესაც ჩვენ დავბრუნდებით, ჩვენ გვქონდა ჩვენი კლასის მოუწოდა ინფორმაცია და ჩვენი ID ტიტული. და ჩვენ ვხედავთ, რომ ჩვენ ეხება მათ მიერ #title და .ინფორმაცია. აუდიტორია: იტყვით ჰაშთაგი [? მიღება ჩემთვის? ?] MARIA ZLATKOVA: ბოდიში? აუდიტორია: იტყვით ჰაშთაგი [? მიღება ჩემთვის? ?] MARIA ZLATKOVA: Hashtag ნიშნავს ID, ასე #title ეხება რაც ელემენტები აქვს ამ ID მოუწოდა სათაური. და მაშინ dot ეხება კლასი. ასე რომ, .info ეხება ამ ელემენტს იმიტომ, რომ მას კლასის ინფორმაცია. აჰაა. აუდიტორია: რატომ განასხვავებს მათ HTML? რატომ ამბობენ, ზოგიერთი რამ პირადობის მოწმობა და ზოგიერთი რამ კლასში? MARIA ZLATKOVA: ეს მხოლოდ მდე you-- HANNAH BLUMBERG: გაიმეორეთ კითხვაზე. MARIA ZLATKOVA: ოჰ, უკაცრავად. რატომ გამოიყოს გარკვეული ელემენტები როგორც პირადობის მოწმობა და სხვა ელემენტებს, როგორც კლასი? ეს მხოლოდ იმიტომ, რომ ეს მართლაც ხშირად დიზაინი არჩევანი. ეს გაძლევთ უამრავი versatility მყოფი შეუძლია იმის თქმა მინდა, რომ ეს კონკრეტული ნივთი აქვს ამ ID, რადგან მათ სურთ უნდა გავაკეთოთ ბევრი რამ იგი, და მე მხოლოდ გვინდა, რომ განსაზღვროს სტილი, გარკვეული სტილი ან ფერი, რაც არ უნდა, რომ ნივთი. და გზა უნდა გააკეთოს, რომ მხოლოდ ვაძლევთ მას პირადობის მოწმობა. და მაშინ, თუ მინდა, რომ რამდენიმე სხვადასხვა ნივთები მქონე, რომ ნაცვლად აპირებს და შექმნის their-- ნაცვლად აკეთებს ის მიერ tag რადგან tag გვინდა მითითებული საკანში მთელი tag ყოველ ჯერზე, რომ ტეგი გამოიყენება, თქვენ შეგიძლიათ დააყენოთ კლასის მრავალი საკითხი. და მაშინ უბრალოდ შედიხართ, რომ კლასი და ამბობენ, მინდა სტილი ამ კლასში, რომ გზა. ისევ და ისევ, კლასის შეუძლია შეიძლება მრავალი სხვადასხვა ნივთები და ID უნდა იყოს უნიკალური. დიდი შეკითხვებს. ნებისმიერი სხვა კითხვები? OK, გასაოცარია. ისევ და ისევ, ეს არის, თუ ეს სელექციონერები დამოწმებული in CSS, ერთად hashtag, ერთად dot, ან მის გარეშე არაფერი მინიჭების სტილის ზოგიერთი tag, მსგავსი ორგანო. და აქ ჩვენ გვაქვს ზოგადი სინტაქსი როგორ კეთდება. კიდევ ვიმეორებ ზოგიერთი საუკეთესო პრაქტიკის HTML და CSS, ჩვენ უნდა, კიდევ ერთხელ, ახლოს ყველა HTML ტეგები, რომ ჩვენ გახსნა. და რა ჩვენ გირჩევთ ამის გაკეთება თქვენი საბოლოო პროექტები, ისევე როგორც CS50 ფინანსები, არის ის, რომ დარწმუნებული ვარ, რომ ყველა თქვენი HTML ამტკიცებს. და ეს კეთდება W3 დამტკიცება. და მერე რა ჩვენ გავაკეთეთ და ის, რაც ჩვენ რეკომენდაციას აკეთებს არის ჰყოფს სტილი, ასე რომ CSS ფასნამატიდან HTML. ასე რომ, ყველაფერი, რაც ეხება, თუ როგორ თქვენი გვერდი აპირებს ვიზუალურად გამოიყურება და როგორ იქნება შეცვლილია უნდა წასვლას CSS დოკუმენტი. და მაშინ თქვენი markup ამბობდა, თუ როგორ რამ არიან ერთმანეთთან არის HTML, და რომ უნდა წავიდეს თქვენი HTML დოკუმენტი. ნებისმიერი კითხვები? Mhm. აუდიტორია: რა ხდება ერთად გვერდი დადასტურება როდესაც ჩვენ წევრები HTML, რომ [INAUDIBLE] ის? MARIA ZLATKOVA: ასე what-- ვფიქრობ, რომ თქვენ. ასე რომ, რა ხდება ერთად გვერდი დადასტურება და რატომ უნდა გავაკეთოთ, რომ? ძირითადად, ჩვენ უნდა გავაკეთოთ, რომ იმიტომ, რომ ბევრი ჯერ, ბრაუზერში, თუ არ დახუროს tag ან რამე მაგდაგვარს, თქვენი ბრაუზერის კვლავ აპირებს გამოიტანოს გვერდი და, შესაძლოა, დღესაც მუშაობს, მაგრამ ეს საუკეთესო პრაქტიკა უნდა დავრწმუნდეთ, რომ თქვენ, კიდევ ერთხელ, დახურულია ყველა თქვენი tags, რომ ყველა თქვენი ელემენტები ისე, რომ ისინი უნდა იყოს, და ძირითადად, რომ ეს მიერ კონვენციები, წინასწარ. ეს არის, კიდევ ერთხელ, მხოლოდ რამ, რომ თქვენ უნდა სწავლის უნდა აკეთებს, ნაცვლად, რომელსაც sloppier კოდი და პერსონალის იგრძნობა. ჰო. ბოდიში. ვფიქრობდი, რომ თქვენ ამაღლების თქვენი მხრივ. აუდიტორია: არა, მე უბრალოდ [INAUDIBLE]. MARIA ZLATKOVA: OK. აუდიტორია: დიდი მადლობა. MARIA ZLATKOVA: რა თქმა უნდა, დიდი მადლობა. ასე რომ კიდევ ერთხელ, მიმდინარეობს თუ როგორ ინფორმაცია გადაეცემა და საკომუნიკაციო მოდელები ინფორმაცია გადასცეს. TCP / IP. TCP მხოლოდ იმას ნიშნავს, ტრანსმისია კონტროლის ოქმი და IP ეხება ინტერნეტ ოქმი. და რომ მხოლოდ ეხება გზა მონაცემების მიწოდება. თუ ჩვენ გვაქვს გარკვეული მონაცემები, რომ საჭიროებს მიწოდება you-- ასე თქვენ, თხოვნით გარკვეული სერვერზე. მაგალითად, როდესაც ჩვენ ცდილობენ, რათა შეამოწმონ cs50.net, ჩვენ თხოვნით რომ CS50 სერვერზე და ჩვენ ვხედავ, რომ ჩვენ გვინდა ამ სახის ინფორმაცია. და მაშინ ეფუძნება ამ ოქმის როგორ ეს ინფორმაციის მიწოდება, სერვერზე იძლევა ინფორმაციას უკან ჩვენთვის, კლიენტს. და მაშინ ჩვენ შეუძლია ნახატის ინფორმაცია, რომ გვერდი და შემდეგ გამოიყენოთ იგი. ასე რომ, მაშინ ჰიპერტექსტის გადაცემის პროტოკოლი არის კიდევ ერთი ოქმის ან მითითებული კონვენციები, რომელიც განსაზღვრავს, თუ როგორ ბრაუზერში და სერვერზე უნდა დაუკავშირდეს. და აყენებს ამ ყველა ერთად, HTTP, კიდევ ერთხელ, უბრალოდ განსაზღვრავს, თუ როგორ ამ ჰიპერტექსტის განსაზღვრული მიერ HTML, რომ ჩვენ უკვე მუშაობს ის, როგორ უნდა იქნეს, რომ თქვენ და როგორ, რომ მონაცემები, რომ გადმოგეცით იღებს თქვენ. და ამიტომაც, თუ ბიჭები გახსოვთ საწყისი კლასის, ჩვენ გვქონდა ბევრი მოითხოვს და ჩვენ გვქონდა ბევრი სინტაქსი ამ მოითხოვს, რომ ჩვენ ვაპირებ წასვლა მეტი ახლავე. ასე რომ კიდევ ერთხელ, როდესაც ჩვენ თხოვნა სერვერზე, ჩვენ უნდა განვსაზღვროთ რამდენიმე რამ. ასე რომ, ჩვენ უნდა მოვძებნოთ ტიპი მოთხოვნის, რომ ჩვენ შექმნის. ისევ და ისევ, ჩვენ, მაგალითად, GET არის ერთი ტიპის მეთოდი რომ ჩვენ გვაქვს ჩვენი მოთხოვნა. და მაშინ HTTP / 1.1 არის მხოლოდ ოქმი, რომელიც ჩვენ გამოყენებით გაკეთებული. ყველაზე დროის, რომ აპირებს იმ შემაჯამებელ ოქმს, რომ ჩვენ გამოყენებით. ასე რომ, თუ თქვენ გაქვთ კითხვა მინდა, რომ თქვენს ვიქტორინა. სწორედ კონვენციები რომ ჩვენ გვაქვს ჯერჯერობით. წარმატებული ეხება რა სახის რამ ჩვენ ითხოვს. ამის შემდეგ, ჩვენი მასპინძელი, მაგალითად, ამ იმ შემთხვევაში, ჩვენ ვცდილობთ, რომ წასვლა google.com. ასე რომ, ეს არის ღირებულება მასპინძელი. ეს არის ტიპის მოთხოვნით რომელიც შეიძლება გაიგზავნება. და მაშინ ტიპის პასუხი, რომელიც შეიძლება იგზავნება, კიდევ ერთხელ, საფუძველზე ამ ოქმის მიხედვით, კიდევ ერთხელ, HTTP / 1.1. ასე რომ, HTTP ვერსია ერთხელ. 200 OK მხოლოდ სტატუსის კოდი. და რომ OK მხოლოდ ფრაზა დაყრდნობით კოდი. და მაშინ Content-Type ეხება ტიპის რომ დაბრუნდა, რომ არის რომ ვებ გვერდზე, რომ თქვენ მიიღოს და რომ თქვენი ბრაუზერის შეიძლება გამოიტანოს შემდეგ. და ეს არის text / html. აუდიტორია: რა 1.1 ნიშნავს? MARIA ZLATKOVA: ეს მხოლოდ მობილური of-- oh, რას 1.1 ნიშნავს? ეს არის მხოლოდ ვერსიას, HTTP მობილური ოქმი, რომ ჩვენ ვიყენებთ. დიდი კითხვა. სხვა კითხვები? აუდიტორია: იქნებ შეაჯამებს Content-Type რეალური სწრაფი? MARIA ZLATKOVA: ასე რომ, არის ის, რაც სერვერზე. ტიპის information-- რა არის შინაარსი ტიპის იყო კითხვები. ასე რომ, იმ ტიპის ინფორმაცია, რომ თქვენ უკან სერვერზე, ტიპის მონაცემები, რომ ბრაუზერი შეუძლია შემდეგ გაწევა, რომ თქვენ იყენებთ. აუდიტორია: ის არის, რომ ის, რაც ამ ოქმი ეუბნება თქვენ უნდა გავაკეთოთ? MARIA ZLATKOVA: ბოდიში? აუდიტორია: არის, რომ რაც ოქმის ვთქვა? MARIA ZLATKOVA: საქართველოს პროტოკოლი აუდიტორია: --what Content-Type ან what-- MARIA ZLATKOVA: ოქმი დაფუძნებული on-- რა არის ოქმის გეუბნებით? ეს მხოლოდ გზა რომ ეს ინფორმაცია გადაეცა ეფუძნება თუ რა სახის ოქმი იყო ეს ინფორმაცია მიიღო მიწოდება თავში თქვენ. აკეთებს, რომ აზრი ერთგვარი? HANNAH BLUMBERG თქვენ შეიძლება ვიფიქროთ, რომ ოქმი როგორც a-- ვფიქრობ, პროფესორი Malan აღწერილი, კლასში როგორც სახის, როგორიცაა a-- ის მსგავსად ექვივალენტი ადამიანის handshaking. ამბობენ, ისევე, hey, მე თხოვნა და მე ვიცი, როგორ გაუმკლავდეს HTTP ვერსია 1.1. და მაშინ სერვერზე ამბობს, oh, OK, არ მე და ორივე არსებობს. ასევე ვიცი თუ როგორ უნდა გაუმკლავდეთ HTTP / 1.1. და მე ვაპირებ მისცეს თქვენ უკან შინაარსი. ამ შემთხვევაში, ის აპირებს იყოს ტიპის ტექსტი / html. ასე რომ, ეს სახის მხოლოდ გზა მათგანი communicating-- MARIA ZLATKOVA: უბრალოდ ადასტურებს, რომ თქვენ როგორც შემდეგ იგივე ოქმი და რომ ორივე კლიენტს და სერვერზე ასე თქვენი ბრაუზერის და სერვერზე სახის ვიცით თუ რას ვსაუბრობთ და კონვენციის გავლის მონაცემები. აუდიტორია: ასე Content-Type part-- ინფორმაციის გაცნობის ტექსტი / html--, რომ ცალკე ნაწილი იმავე გაგზავნა? თუ ეს ნაწილი ვთქვათ, 200? ამჯამად 200 ვუთხრა, რომ ან is-- MARIA ZLATKOVA: 200 აცხადებს, რომ ყველა წავიდა OK. და მაშინ content type არის ერთგვარი ცალკე ნაწილი იმავე გაგზავნა, და განაცხადა, რომ, რაც მე დაბრუნებული აქვს ამ ტიპის ტექსტი / html. უბრალოდ რაც უფრო მეტი ინფორმაცია. აქვს არაფერი დაამატოთ? კარგი. ნებისმიერი სხვა კითხვები ამ საკითხთან დაკავშირებით? გასაოცარია. ასე რომ, ზოგიერთი სხვა HTTP სტატუსის, რომ ჩვენ ვერ გარდა 200 OK, პირობა, რომელიც ჩვენ ვნახეთ, შესაძლოა, შესაძლოა ბევრი არიან 403 და 404. ასე რომ, 404, თუ თქვენ ცდილობს ხელმისაწვდომობის, რომ რაღაც არ არსებობს. ასე მაგალითად, თქვენი CS50 ფინანსთა psets, თუ თქვენ უკვე გაწევის quote.html და თქვენ არ აქვს, რომ ფაილი, არამედ თქვენ ჰქონდა quote.php, რომ გამოიწვევს 404 არ ნაპოვნია რადგან ფაილი შეიძლება არ არსებობს. იყიდება 403 აკრძალულია, ეხება უფლებები. ასე რომ, თუ რამდენიმე ფაილი არ იკითხება მიერ მსოფლიოში, შესაძლოა 403 დაბრუნდა. ზოგი, რომ თქვენ შეიძლება მივიღო 301, გადატანილი მუდმივმოქმედი; 302, ნაპოვნია; 304, მოდიფიცირებული; 400, ცუდი მოთხოვნა; და შემდეგ Internal Server Error for 500 და 503, სერვისი მიუწვდომელია. დიახ. აუდიტორია: უილ ველოდით გვემახსოვრება ყველა იმ სტატუსის? MARIA ZLATKOVA: მე უნდა მათ თქვენი cheat ფურცელი. [სიცილის] აუდიტორია: ჩვენ, სავარაუდოდ, იცით, რა იწვევს თითოეული? MARIA ZLATKOVA: ისინი? HANNAH BLUMBERG: იყიდება პირობა, რომ ჩვენ აწარმოებს into-- ასე რომ კითხვა was-- MARIA ZLATKOVA: ისინი, სავარაუდოდ, იცით, რა თითოეული ამ სტატუსმა კოდები შეიძლება იყოს გამოწვეული? ასე რომ პირობა, რომ ჩვენ გამოყენებული და გაიქცა, მე ვიტყოდი, დიახ. ასე რომ, ჩვენ ნამდვილად ჩანს 200 OK და ლექციებს იგი psets. ჩვენ ვნახეთ, 403, 404. სხვა პირობა? HANNAH BLUMBERG: მე ამბობენ, 500, როგორც ჩანს, სამართლიანი თამაში. MARIA ZLATKOVA: 500, yeah. HANNAH BLUMBERG: ჰო. უბრალოდ ზოგადი გაგებით, რა იწვევს მათ. და ასევე მხოლოდ ამ სახელები, შეგიძლიათ სახის ისევე როგორც განათლებული ვხვდები, რა რეალურად გამოიწვია მათ. მაგალითად, ეტაპობრივად გადავლენ, ალბათ, ფაილი არ იყო გადავიდა მუდმივად. აუდიტორია: მაგრამ წინა გამოცდა, იყო ასე როგორ ფიქრობთ, ჩვენგან პასუხი, რომ? HANNAH BLUMBERG: ეს ღირს ნულოვანი რაოდენობა. კითხვა on 418 წლის ჩაიდანი ტექნიკურად HTTP სტატუსის, მაგრამ ეს იყო ღირს ნულოვანი რაოდენობა. ცხადია, თქვენ არ უნდა იცოდეს მათ. აუდიტორია: ეს არის რეალური? HANNAH BLUMBERG: ეს არის რეალური ერთი, მაგრამ ეს არაფერს არ ნიშნავს. ეს მხოლოდ ხუმრობა. ინტერნეტი ხალხი სასაცილოა. MARIA ZLATKOVA: დიდი კითხვები, ბიჭები. ნებისმიერი სხვა კითხვები? აუდიტორია: რა არის შიდა შეცდომა სერვერზე? MARIA ZLATKOVA: შიდა სერვერის შეცდომა მხოლოდ იმას ნიშნავს, რომ თქვენ უკვე ვერ კომუნიკაციის სერვერზე რატომღაც. ასე რომ, ეს არ არის აუცილებელი ის, რაც უნდა გააკეთოს კლიენტთან ან რამე მაგდაგვარს. მე არ ვიცი არც ერთი კონკრეტული მაგალითი რომ ჩვენ წავიდა ასახსნელად, მაგრამ yeah. HANNAH BLUMBERG: რა თქმა უნდა. ასე მაგალითად, როგორიცაა მოდით ამბობენ, რომ თქვენ მუშაობენ mashup და Google სერვერზე დაიწია გარკვეული მიზეზი, დენის outage, ასე ვთქვათ. ეს იქნება შიდა სერვერზე შეცდომა ან გარკვეული of-- მინდა თქვენ არ მიიღოთ პასუხი უკან. MARIA ZLATKOVA: ჰო. უბრალოდ, როცა თქვენ ვერ კომუნიკაციის სერვერზე გარკვეული მიზეზის გამო, ის აპირებს ქვემოთ ან რაიმე სხვა მიზეზის გამო. ასე რომ, jumping შევიდა PHP. PHP, განსხვავებით HTML, არის პროგრამირების ენაზე. და დავიწყეთ გამოყენებით, რადგან ეს ძალიან სასარგებლო ვებ განვითარებას. ჩვენ პირველად გამოიყენეს ეს CS50 ფინანსთა. და ეს, ძირითადად, გვეხმარება, რათა ერთად ამ მარკირებას, დიზაინი, და რამდენად რეალურად გამოვიყენოთ ინფორმაცია არიან რამ ვებ გვერდზე. ასე რომ, PHP თავისთავად ნიშნავს PHP ჰიპერტექსტის Preprocessor, ასე რომ, ეს რეკურსიული backnorym თავისთავად. და გახსნის tags for PHP ჩვენ მარცხენა და მარჯვენა ისრის ერთად კითხვის ნიშნები და php. ასე რომ, ჩვენ უკვე ჩანს bunch of იგი. ახლა, ჩვენ უბრალოდ აპირებს წასვლა მეტი ზოგიერთი ძირითადი რამ ამის შესახებ. ასე რომ, PHP, ცვლადი სახელები იწყება დოლარის ნიშანი. ჩვენ არ დააკონკრეტა, კიდევ ერთხელ, ცვლადი აკრიფოთ მთელი მსოფლიოს მასშტაბით. ისევე როგორც ჩვენ გავაკეთეთ C, ჩვენ არ უნდა გავაკეთოთ, რომ. ჩვენ შეგვიძლია ამის გაკეთება bunch სხვადასხვა პერსონალის ცვლადები. ჩვენ შეგვიძლია, რომ მათ ერთად მიერ ინტეგრირების მათ ერთად dot ნოტაცია, რომელიც ჩვენ ვერ გააკეთებს C ერთხელ. კიდევ ერთხელ, ჩვენ ცოტა უფრო versatility ერთად PHP თვალსაზრისით ცვლადები. კიდევ ერთხელ, ჩვენ არ გვაქვს ძირითადი ფუნქცია. და PHP ინტერპრეტაცია როგორც ეწინააღმდეგებოდა შედგენილი, ასე რომ, თუ რამდენად ჩვენ არ გააკეთოს, C ფაილი, ჩვენ არ უნდა გავაკეთოთ, რომ PHP. არამედ, ისე, რომ ენის აწარმოებს თავისთავად, ის ინტერპრეტაცია. და მაშინ თავისუფლად აკრეფილი მხოლოდ იმას ნიშნავს, რომ ჩვენ არ უნდა მიუთითოთ ცვლადი ტიპის და ცვლადი ტიპის გაგებულია, დგინდება გაშვების დროს. აუდიტორია: მაგრამ რა გააკეთა თქვენ ნიშნავს dot გაერთიანების? MARIA ZLATKOVA: რა თქმა უნდა. როდესაც ჩვენ გვინდა, რომ რამ together-- ასე რომ, თუ ჩვენ გვქონდა ცვლადი, ჰქონდა ღირებულება 3 და ჩვენ გვქონდა სხვა ცვლადი რომ ჰქონდა ღირებულება სიმებიანი, ჩვენ ვერ დააყენა ცვლადები ერთად გამოსული dot მათ შორის და ინტეგრირების მათ. ან ჩვენ შეგვიძლია შევქმნათ ცვლადში სახელი და დააყენა იგი ერთად ინტეგრირების ორი სიმები. ასე რომ, თუ ჩვენ გვქონდა სიმებიანი ორმაგი შეთავაზებები და ჩვენ დააყენა dot მას შემდეგ, და მაშინ ჩვენ გვქონდა სხვა სიმებიანი, რომ რომ შევქმნათ სიმებიანი საერთოდ. აუდიტორია: OK. MARIA ლატვია: ეს რომ ნათელი? აუდიტორია: Yeah. MARIA ZLATKOVA: OK. დიახ. აუდიტორია: როცა ამბობენ, გაგებული, ვიდრე შედგენილი, ვსაუბრობთ თქვენ არ უნდა იყოს კონკრეტული, როდესაც საქმე PHP წინააღმდეგ C? MARIA ZLATKOVA: როცა ვამბობთ, გაგებული, როგორც ეწინააღმდეგებოდა შედგენილი, რას ვგულისხმობთ? ეს ნიშნავს, რომ ჩვენ არ გვჭირდება შესრულებადი ფაილი აწარმოებს PHP. ეს იმას ნიშნავს, რომ ის მუშაობს როგორც ეს გრძელდება. ამას რამე აზრი აქვს? ცოტა მეტი. HANNAH BLUMBERG: ასე, რომ თქვენ შეიძლება ვიფიქროთ, რომ თარჯიმნის როგორც კიდევ ერთი პროგრამა, რომელიც პასუხისმგებელია აპირებს ხაზს მეშვეობით PHP და რეალურად შესრულებაში მას, როგორც ეწინააღმდეგებოდა შედგენის, რომ ყველა ორობითი. ეს არ ნიშნავს, ფაქტობრივად არაფერი იმაზე, თუ როგორ კონკრეტული ჩვენ უნდა იყოს. ჩვენ მაინც უნდა იყოს ზუსტი, და არ დაგავიწყდებათ თქვენი მძიმით, და დარწმუნდით თქვენ გაქვთ თქვენი დოლარის ნიშანი, და რამ, როგორიცაა, რომ. კარგი კითხვაა. MARIA ZLATKOVA: ჰო. ასე რომ ხაზს, როგორც განსხვავებით ერთად C ფაილი, ჩვენ გვაქვს იმისათვის, რომ მთელი საბოლოო სანამ ჩვენ შეგვიძლია რეალურად აწარმოებს. ეს არის მთავარი განსხვავება. მაგრამ ერთხელ, ჩვენ არ შეგვიძლია მართლაც იყოს ნაკლებად კონკრეტული. ასე რომ კოლექტორები in PHP წარმოადგენს რეალურად მიღებული რუკაზე. ასე რომ კოლექტორები ასოცირებული ღირებულებების გასაღებები. ორი გზა განაცხადოს მასივი, რომელიც ეფუძნება ეს სინტაქსი, ჩვენ შეიძლება უფრო გამოკვეთილ წელს ამბობდა, რომ ჩვენ გვაქვს მასივი და ჩვენ გვაქვს ამ key1 რომ რუკები ამ value1, key2, რუკები value2. ან ჩვენ შეგვიძლია შევქმნათ მასივი რომელიც შეიცავს ფასეულობების თავს და შემდეგ გასაღებები მიხვდა, ამ გზით. ნებისმიერი კითხვები ამ? აუდიტორია: რა გასაღებები იყოს მეორე მაგალითი? 0, 1, 2, 3? MARIA ZLATKOVA: მაგალითად, ეს მხოლოდ გასაღებები ამ არ არის აუცილებელი განსხვავებას. ისინი უბრალოდ განსაზღვრავს, თუ როგორ შეუძლია გამოიყენოთ ღირებულებების შიგნით მას. ასე რომ, თუ ჩვენ გვქონდა foreach loop in PHP, რომ იქნებოდა საშუალებას გვაძლევს გაიაროს ყველა ღირებულებებს, ჩვენ შეგვიძლია გავლა ყველა ღირებულებები, მაშინაც კი, თუ ჩვენ გვქონდა თუ არა განსაზღვრული კონკრეტული გასაღები ფარგლებში საიტის წინა სინტაქსი. ასე რომ, თუნდაც ამ სახის მასივი, ჩვენ ვერ დღემდე გაქვთ foreach loop რომ გადის ყოველ ღირებულებების გასაღები მასივი. ასე რომ, სინტაქსი foreach loop, ჩვენ დავიწყებთ მასივი. ეს $ arr ცვლადი ჩვენი ფაქტობრივი მასივი რომ ჩვენ განსაზღვრულია წინა slide როგორც ღირებულება, რომელიც ფაქტიურად მიდის მეშვეობით თითოეულ ღირებულებები, მიუხედავად იმისა, ჩვენ გვქონდა გასაღები თუ არა. და მაშინ ჩვენ შეგვიძლია ამის გაკეთება რაღაც ღირებულება შიგნით foreach loop. ასე რომ, კიდევ ერთხელ, თუ ჩვენ გვქონდა მასივი როგორც ეს აქ created-- ასე რომ, ჩვენ გვაქვს გასაღები foo და ღირებულება ბარი, გასაღები baz და ღირებულება qux-- ჩვენ შეგვიძლია foreach loop რომ გადის მასივი, როგორც გასაღები ღირებულება და შემდეგ რაღაც გასაღები და / ან ღირებულება. მაგრამ ჩვენ არ არის აუცილებელი ყოველთვის უნდა ჰქონდეს foreach მარყუჟების, რომ გადის მასივი, როგორც გასაღები რუკა ღირებულება. ჩვენ შეგვიძლია გავლა foreach loop მასივი, როგორც ღირებულება. HANNAH BLUMBERG: და მე ვფიქრობ, რომელთა მიზანია იყო თქვენი შეკითხვა, რა არის დაფარული ინდექსი? აუდიტორია: Kinda. MARIA ZLATKOVA: Oh. HANNAH BLUMBERG: ჰო, ჰო. ასე რომ, ძირითადად, თუ თქვენ არ დააკონკრეტა გასაღები, ის იქნება 01. MARIA ZLATKOVA: ჰო. ისევე როგორც C, ნულოვანი ინდექსირებული თუ თქვენ არ დააკონკრეტა გასაღები. აუდიტორია: უკაცრავად. იქნებ ცდილობენ საუბარი ცოტა ხმამაღალი? მე ვაყენებ ცოტა პრობლემები მოსმენის ყველაფერი. MARIA ZLATKOVA: მე ასე ბოდიში. ჰო, რა თქმა უნდა. ასე რომ, გსურთ ჩემთვის წასვლა ეს კიდევ ერთხელ? ან არის ამ აუდიტორია: ასე რომ წინა slide-- თუ შეიძლება მხოლოდ დაბრუნდეს ერთი მეორე. MARIA ZLATKOVA: რა თქმა უნდა, ბოდიში. აუდიტორია: ასე რომ, მეორე მასივი აქ არ როგორც ჩანს, აქვს მნიშვნელობა გასაღები, ერთგვარი [? მიზეზობრიობა. ?] MARIA ZLATKOVA: მარჯვენა, სწორი. აუდიტორია: ასე რომ, თუ როგორ, რომ მუშაობს როცა ამბობენ, რომ ეს ყველაფერი ან არა. ჩემთვის, რომ ჰგავს a [? foo?] უკვე. MARIA ZLATKOVA: ჰო, ჰო. ასე რომ კიდევ ერთხელ, ეს არის მიღებული რუკა ამ თვალსაზრისით რომ მიხვდნენ, მაგალითად, ინდექსები აქ შეიძლება იყოს გაგებული, როგორც 0, 1, 2, 3. ისევ და ისევ, ეს არის ის, რომელსაც იმ ინდექსები ჩვენი ექვივალენტი მქონე გასაღებები მოვარგოთ ღირებულებებს. ასე რომ, თუ ჩვენი გასაღები იყო 0 ბოდიში. HANNAH BLUMBERG: არა, იქ ცარცით აქ. ეს, ფაქტობრივად, მართლაც ლამაზი. MARIA ZLATKOVA: სწორედ დიდი. კარგი. ასე რომ კიდევ ერთხელ, $ arr 0 იქნება გასაღები ღირებულება 1. 0 იქნება გასაღები ღირებულება 1. აუდიტორია: მე ბოდიში. ეს უხილავი. HANNAH BLUMBERG ყველა უფლება, nevermind. ცარცის იყო ცუდი იდეა. მე მას უკან. შეგიძლიათ წარმოიდგინოთ, გასაღებები როგორც 0 რუკები ღირებულება 1. MARIA ZLATKOVA: ჰო. ასე რომ, ეს არის 0, ეს არის 1, 2, 3. ეს შეიძლება იყოს თქვენი გასაღებები. შეგიძლიათ წარმოიდგინოთ, რომ მათ as-- yeah. ასე რომ, ნაცვლად, რომელმაც გამოკვეთილ გასაღებები, ისინი ერთგვარი გაგებული, როგორც ინდექსების დაწყებული 0. ცარცი არ უშველა. ჰო. აუდიტორია: იყიდება foreach loop, თუ გვინდოდა, რომ ნახოთ, როგორც ღირებულება, ეს უბრალოდ ავტომატურად ინდექსი 0? MARIA ZLATKOVA: ჰო. ეს იქნებოდა გავლა თითოეულ ღირებულებებს. აუდიტორია: [INAUDIBLE] როგორც 0 ან იქნებოდა, რომ მხოლოდ ამის 0? MARIA ZLATKOVA თქვენ ექნება უნდა ითქვას, დოლარის ნიშანი და შემდეგ ზოგიერთი ცვლადის სახელი, ღირებულება. აუდიტორია: [INAUDIBLE]. MARIA ZLATKOVA: ბოდიში? აუდიტორია: უკაცრავად, მე უბრალოდ ცდილობს მახსოვს. როგორ გავაკეთოთ, რომ, თუ თქვენ შეგიძლიათ ეს გააკეთოთ ავტომატურად ინდექსირებას მხოლოდ 0 და? MARIA ZLATKOVA: როგორ გავაკეთოთ, რომ თუ არ აქვს კონკრეტული გასაღები სახელები? აუდიტორია: Yeah. MARIA ZLATKOVA თქვენ უბრალოდ define-- უბრალოდ, ვამბობთ, საკუთარ თავს, როგორც ზოგიერთი სახელი. ასე რომ, თქვენს psets, თქვენ ბიჭები შეიძლება მახსოვს foreach $ ზედიზედ $ რიგები, ჩვენ შევქმენით ourself ამ $ row განაცხადა, ჩვენ გვინდა, რომ გავლა ზედიზედ $ რიგები. მიუხედავად იმისა, რომ ჩვენ არ გვაქვს ამ გამოკვეთილ $ რიგები განსაზღვრული, ჩვენ შეგვიძლია მხოლოდ წასვლა და ამბობენ, რომ ეს შეიძლება იყოს ჩვენი გასაღები, და მხოლოდ გავლა თითოეულ ღირებულებებს. აუდიტორია: ასე ღირებულების ახალი ცვლადი ჩვენ შექმნის შესანახად [INAUDIBLE]? MARIA ZLATKOVA: ასე რომ, ეს არ არის არსებითად ახალი ცვლადი. ეს არის ცვლადი, რომელიც ეხება შიგნით მასივი თითოეულ მათგანს. HANNAH BLUMBERG: ეს არის ახალი ცვლადის სახელი. MARIA ZLATKOVA: ჰო, ეს არის ახალი ცვლადის სახელი, მაგრამ ეს არ inherently-- yeah. ეს არის მხოლოდ ახალი ცვლადი რომ თქვენ ამის გაკეთება. ასე რომ, უბრალოდ, როგორ ჩვენ გავაკეთეთ $ ზედიზედ $ რიგები, რიგები იყო ახალი ცვლადის სახელი, რომ ჩვენ შეიძლება შეიქმნას ჩვენი foreach loop. ეს არ უნდა preexist მანამდე. აუდიტორია: იქნებ გაიაროს ლოგიკა თითოეულ გამოყენებით მაგალითზე არსებობს? MARIA ZLATKOVA: mhm. ბოდიში. აი მაგალითად. რა თქმა უნდა. ამიტომ თითოეული მასივი ასე ეს ნიშნავს, რომ წავიდეს ამ მასივი როგორც ძირითადი value--, რომ აპირებს გაიაროს ამ მასივი და პირველი წასვლა და foo, რომ გასაღები foo და ღირებულება ბარი. და მერე მეორე iteration of ამისთვის მარყუჟის, ის აპირებს გაიაროს და მიიღოს გასაღები baz და ღირებულება qux. და მაშინ რაღაც ერთად ერთ-ერთი მათგანი და ორივე მათგანი. აუდიტორია: ასე რომ იდეა უკან რომელსაც გასაღები წერტილი ღირებულება, რას დასრულდება მდე წვდომის? MARIA ZLATKOVA: რა არის იდეა მქონე გასაღები მიუთითებს მნიშვნელობა? ეს არის კიდევ ერთი კონვენცია, სხვა გზა გადის მასივი და, რათა მათ შეძლონ ან გასაღები და ღირებულება ან ორივე და მათი გამოყენება. აუდიტორია: რა არის როლი იმისათვის, რომ foreach ეშვება? ასე რომ, თუ ჩვენ დაამატოთ ელემენტების მასივი მოგვიანებით, ისინი, ვისთანაც იქნება პირველი, ვინც მოუწოდა foreach მასივი, ან უნდა იყოს შემდეგ? MARIA ZLATKOVA: რა არის იმისათვის, რომ foreach loop გადის მასივი? იგი გადის პირველი ელემენტს ბოლო ელემენტს, ბოლო დამატებული ელემენტს. თუ თქვენ დაამატოთ ელემენტები მოგვიანებით, ისინი უნდა accessed-- პირველი ელემენტების ხელმისაწვდომი იყოს, როგორც პირველი ელემენტების მასივი, და მერე ნეტავ გავლა თითოეულ ელემენტები, როგორც ერთგვარი ordered-- არ არის მიღებული, მაგრამ ისე, რომ მათ უკვე შევიდა მასივი. აუდიტორია: ასე რომ, ახალი ელემენტები ემატება შემდეგ? ასე რომ, ისინი added-- ისინი უნდა იყოს ბოლო პირობა [? მცდელობაა. ?] MARIA ZLATKOVA: ახალი ელემენტები can-- ძირითადად, ახალი ელემენტები ემატება, ისინი დასძინა ბოლომდე მასივი? აუდიტორია: Yeah. MARIA ZLATKOVA: მჯერა ისე. დიახ. და მაშინ თქვენი foreach loop, მას შემდეგ, რაც თქვენ დასძინა, ახალი ელემენტები და თქვენ გავლა მათ, ახალი ელემენტების იყოს accessed-- ახალი ელემენტი, თუ ის დამატებული ბოლო, რომ ის ხელმისაწვდომი იყოს ბოლო. აუდიტორია: შეგიძლიათ უბრალოდ მისცეს მაგალითი რაღაც, რომელიც [INAUDIBLE] რაღაც ღირებულების როგორც [INAUDIBLE] და ღირებულება, მომწონს როგორ ნეტავ ფორმატში, რომ? MARIA ZLATKOVA: რა თქმა უნდა. შემიძლია მისცეს მაგალითი, თუ რა ჩვენ ყველაფერს გააკეთებს ღირებულება? ასე რომ, რა ბიჭები შეიძლება იყოს იცნობს ის არის, რომ ჩვენ გავიარეთ მასივი და ძირითადად ბეჭდური თითოეული ელემენტები, მაგალითად, როგორც ნაწილი უბრძანა სიაში ან რამე, რომ. არა, რომ აზრი, თუ გვინდა, რომელთა მიზანია: აუდიტორია: ჩვენ ბეჭდვა ამ ფასეულობების გარეთ? MARIA ZLATKOVA: ჰო, ჩვენ შეგვიძლია ბეჭდვა და მაშინ ძირითადად $ მნიშვნელობა იმიტომ, რომ რომ კონკრეტული ღირებულება, ჩვენ უნდა დაბეჭდვის ღირებულება შიგნით მას. ასე რომ, თუ ჩვენ ჩვენი პირველი მცდელობაა ეს და ჩვენ დაბეჭდილი $ მნიშვნელობა, ჩვენ უნდა ბეჭდვის ბარი. აუდიტორია: არის არსებობს ასევე მარყუჟების PHP ან უბრალოდ foreach მარყუჟების? MARIA ZLATKOVA: არსებობს ასევე მარყუჟების PHP. მათი ლოგიკა ძირითადად იგივე, რაც თქვენ უკვე გამოიყენება. აუდიტორია: ასე რომ მისი ღირებულება null. MARIA ZLATKOVA: ეს იგივეა, იგივე. ჰო. აუდიტორია: მე უბრალოდ აპირებს ვთხოვო. ასე რომ, როდესაც თქვენ განაცხადოს მასივი, თქვენ არ უნდა ვუთხრა, რა ზომის, რომ ის აპირებს იქნება, რაც იმას ნიშნავს, რომ თქვენ შეგიძლიათ მხოლოდ რჩეულებში და წართმევას ელემენტები [INAUDIBLE]. MARIA ZLATKOVA: Yup. აჰაა. ზუსტად. როდესაც ვაცხადებთ მასივი, ჩვენ არ უნდა ვთქვა, რა ზომის არის, ასე რომ ჩვენ შეგვიძლია უბრალოდ დაამატოთ ელემენტები გადატანა მას შემდეგ, ასევე. მეტი შეკითხვები? ასე რომ, შემოტანა PHP და HTML ერთად, ის, რაც ჩვენ არ ჩანს კარგად, მაგალითად, ამ მაგალითად, ჩვენ გვაქვს HTML ფორმას, რომელსაც აქვს ველში. და ველი, უბრალოდ სახელი და მაშინ მას აქვს ღილაკს. და როდესაც თქვენ დააჭირეთ Submit ღილაკს, ჩვენი hello.php ფაილი, იმიტომ, რომ მეთოდი ფორმა მისაღებად, ჩვენ შეუძლია რაც at სახელი ამ მიიღოს გლობალური ცვლადი, რომ is-- სინტაქსი ეს არის $ _GET. და მაშინ ჩვენ შეუძლია, რასაც მომხმარებლის შეყვანის შიგნით რომ ფორმა სახელი სასურველი სახელი, რომ სფეროში. ნებისმიერი სხვა კითხვები ან კითხვები ამ კონკრეტული მაგალითი? აუდიტორია: სად არის PHP? MARIA ZLATKOVA აქ. ასე რომ, ეს არის ჩვენი გახსნის ტეგი PHP. აუდიტორია: Oh, მარჯვნივ. MARIA ZLATKOVA: დიახ. HANNAH BLUMBERG: საქართველოს? = არის სტენოგრამის ეს არის PHP და მხოლოდ ეხმიანება. აუდიტორია: Oh. MARIA ZLATKOVA: ჰო, ბოდიში. მე უნდა გააკეთა, რომ წმინდა. HANNAH BLUMBERG: ბეჭდვა. MARIA ZLATKOVA: უბრალოდ ფუნქცია რომელიც საშუალებას გვაძლევს ბეჭდვა რაღაც. დიდი კითხვა. ასე რომ, going-- დიახ. აუდიტორია: არსებობს იქნება საკმაოდ ცოტა ხელის კოდირება PHP და HTML ვიქტორინა 1? MARIA ZLATKOVA: აქ შეიძლება იყოს სამართლიანი ოდენობით ინტერპრეტაცია PHP და HTML, არ არის აუცილებელი როგორიცაა დიდი ოდენობით კოდირება, მიუხედავად იმისა, რომ თქვენ შეიძლება უნდა დაწეროს foreach loop, თუმცა, ამისთვის loop. ნებისმიერი მარყუჟების, რომ ჩვენ დასაფარავად აქ არის სამართლიანი თამაში. და ეს ძირითადად იგი. HANNAH BLUMBERG: მე მზად. ანალოგიურად, რომ ჩვენ გთხოვეთ, წერენ bunch of C ფუნქციები ინტელექტუალური 0, მე მზად უნდა გააკეთოს იგივე PHP და JavaScript. MARIA ZLATKOVA: ჰო. HANNAH BLUMBERG: მე ვიტყოდი little--, როგორც ჩვენ არ ვართ ვაპირებ, რომ წერთ დიდი HTML გვერდი მხოლოდ იმიტომ, რომ ცოტა tedious, მაგრამ ალბათ ნაწილები. ეს არის სრულიად სამართლიანი თამაში. როგორც პატარა HTML გვერდი, სრულიად სამართლიანი. აუდიტორია: OK. როგორ შესახებ JavaScript ისევე? HANNAH BLUMBERG: ჰო. JavaScript სამართლიანი თამაში. MARIA ZLATKOVA: ჰო. ეს არის სრულიად სამართლიანი თამაში. HANNAH BLUMBERG: ჩვენ კიდევ უნდა, რომ ისევე, როგორც 10-ე წუთზე. MARIA ZLATKOVA: SQL, კიდევ ერთხელ, სტრუქტურირებული შეკითხვის ენა. ეს ძირითადად საშუალებას გვაძლევს მონაცემთა ამ რელატიური მონაცემთა ბაზის მართვის სისტემა. ეს უბრალოდ ნიშნავს იმას, ჩვენ სადღაც შესანახად ზოგიერთი მონაცემები, რომ ჩვენ დაგვჭირდება გამოყენება საიტი ან რაიმე სხვა ფორმით. და მაშინ ჩვენ გვაქვს ეჭვი, რომ მიიღოთ ინფორმაცია ჩვენს ბაზაში, ან ჩადეთ ინფორმაცია მათ. ბევრი საერთო პირობა UPDATE, INSERT, SELECT და წაშლა. ასე რომ, UPDATE, ეს არის სინტაქსი განახლებაზე მონაცემები მონაცემთა ბაზაში. განახლება ამ მაგიდა სახელწოდებით მაგიდა და განაცხადა SET, ჩვენ შეგვიძლია მითითებული ზოგიერთი ღირებულებების ყველა რიგები თანაბარი რაღაც. ასე რომ, ჩვენ შეგვიძლია ასევე დააკონკრეტა ზოგიერთი სპეციფიკური მასალა, რომელიც ჩვენ გვინდა ცვლილებები და რომ შეიძლება გამოყენებით WHERE. ჩვენ შეუძლია მიუთითოს, რომ ჩვენ მხოლოდ გვინდა ცვლილებები ზოგიერთი რიგები, სადაც სახლი, თუ ჩვენ გვქონდა მაგიდასთან სტუდენტები და ყველა სტუდენტები ჰქონდა სახლი, ასე რომ, ჩვენ მხოლოდ ცვლილებები ფასეულობები სადაც სახლი უდრის კურიერი, მაგალითად. იყიდება INSERT, ჩვენ შეგვიძლია ჩადეთ გარკვეული ღირებულებები მაგიდაზე. ასე რომ, INSERT INTO მაგიდა, და შემდეგ ღირებულებებს, და შემდეგ ფრჩხილებში, ჩვენ დააკონკრეტა რომელიც აფასებს გსურთ ჩადეთ. ასე რომ, INSERT INTO მაგიდა, col1 და col2, ღირებულება val1 და val2. ასე რომ, ეს ჩანართები ძირითადად ახალი ზედიზედ შევიდა მაგიდა შემცველი ღირებულებების 1 და 2 ქვეშ სვეტები 1 და 2. და მაშინ ჩვენ ვაპირებთ წავიდეთ მეტი სწრაფი მაგალითია, თუ როგორ გამოიყურება როგორც ჩვენს მონაცემთა ბაზაში ცოტა. მაგრამ ეს საბოლოო შეკითხვა, რომ მე ვფიქრობ, ჩვენ ვაპირებთ წასვლა, SELECT, ეს უბრალოდ გვაძლევს აირჩიოთ მონაცემთა მაგიდა შესაძლოა გამოიყენოთ ის შემდეგ. და გზა ჩვენ ამისათვის არის ჩვენ უბრალოდ შეინახოს იგი რამდენიმე ცვლადი. და მაშინ ჩვენ შესაძლოა გამოიყენოს იგი კვლავ. ასე რომ, SELECT ვარსკვლავი იმას ნიშნავს, აირჩიეთ ყველა. ეს მხოლოდ სტენოგრამის შერჩევის ყველა. FROM table WHERE, ჩვენ ვეძებთ გარკვეულ პირობებში, ასე რომ, სადაც სვეტი შეადგენს რაღაც, მაგალითად. თუ ჩვენ უბრალოდ მინდოდა აირჩიეთ ყველა მაგიდა, ეს უბრალოდ ირჩევს ყველა სვეტები და ყველა სტრიქონების მაგიდასთან. და მერე წაშლა მაგიდა WHERE col უდრის რაღაც, ეს მხოლოდ შლის ზოგიერთი ზედიზედ ჩვენი მაგიდა სადაც ჩვენ გვაქვს გარკვეული კონკრეტული პირობები. ამ შემთხვევაში, იმ პირობებში, არის სვეტი უდრის რაღაც. ასე რომ, უბრალოდ სწრაფი მაგალითია. თუ ჩვენ ამ მაგიდასთან უფლება აქ და ჩვენ ჩადეთ იგი მაგიდაზე, ეს ფასეულობები, რომ ჩადეთ ახალი row. და თუ ჩვენ გვქონდა ავტომატური-წამიანი, ამ შემთხვევაში უბრალოდ გავზარდოთ ჩვენი ID 0-დან 1 2. თუ შევარჩიეთ ყველა მხრიდან სტუდენტები, ის მხოლოდ ბრუნდება ყველა სფეროში და ყველა რიგები. სად შედარებით მეტია მეტი ან ტოლია 2016, რომ დააბრუნებს Hannah და მეც. და მაშინ თუ ჩვენ მხოლოდ შერჩეულ წელი id და წელი სტუდენტები სადაც სახლი Cabot სახლი, რომელიც იქნებოდა, კიდევ ერთხელ, დაბრუნდნენ Hannah და მეც. თუ ჩვენ წაიშლება სტუდენტები სადაც სახელი ტოლია Rob, რომ წაშალოთ მთელი რიგი. და მაშინ თუ ჩვენ მითითებული სახელი, UPDATE სტუდენტები SET სახელი უტოლდება Daven WHERE სახლი უდრის Cabot House, რომ აპირებს მისვლას იმ სტრიქონების და შემდეგ განახლება სახელი. და შემდეგ რამდენიმე SQL მონაცემთა ტიპები CHAR, Varchar, INT, და FLOAT. ეს არის სამართლიანი თამაში. მე წასვლა კიდევ და დარწმუნდით, რომ თქვენ იცით, და მათ თქვენი cheat ფურცელი, რა თითოეული მათგანი გმირები გამოყენებულ იქნა, რა გამოიყენება, მათ თქვენს psets, და დარწმუნდით, რომ თქვენ იცნობს და კომფორტული მქონე აირჩიოს სხვადასხვა მონაცემთა ტიპები თქვენი pset. დიახ. აუდიტორია: რა იყო, რომ მაგიდაზე ინახება? ჰო, სად არის ეს მაგიდა ინახება? MARIA ZLATKOVA: ისე, ახლა, ეს არ ინახება. ყოველ შემთხვევაში, სად არის ამ მაგიდასთან ინახება? მაგრამ ეს შეიძლება იყოს შენახული SQL მონაცემთა ბაზაში. აუდიტორია: სად არის SQL მონაცემთა ბაზაში? კომპიუტერი, ონლაინ სადღაც, სერვერზე? MARIA ZLATKOVA: ეს შეიძლება იყოს სხვადასხვა ნივთები. HANNAH BLUMBERG: ჩვენ interfaced ერთად SQL მაგიდები ძირითადად phpMyAdmin. ასე რომ, ჩვენ შეიძლება ვთხოვოთ სერვერზე შესანახად მათ ჩვენთვის. ჩვენ შეგვიძლია შესანახად მათ ჩვენი საკუთარი კომპიუტერი. MARIA ZLATKOVA: უბრალოდ დამოკიდებულია როგორ გსურთ ამის გაკეთება თავს. მაგრამ ჩვენ უკვე შენახვა მათ, როგორც Hannah აღნიშნა, on phpMyAdmin, რომელიც ონლაინ რეჟიმში. და მაშინ გამოვიყენებთ PHP და SQL, ჩვენ ჩაწეროთ იგი ზოგიერთი ცვლადის ის, რაც ჩვენ გაეგზავნება ამისთვის. ასე რომ, თუ ჩვენ აირჩიეთ ყველა ისტორიიდან სადაც user_id ტოლია იდ, რომ შეარჩიოთ ყველა რიგები კონკრეტული პირი, რომელიც შესული ისტორიაში მაგიდა და დასალაგებლად მათ რიგები. მაგარი, რაც უნდა იცოდეს რომ CS50 შეკითხვის ფუნქცია იცავს SQL ინექცია tags. ეს მხოლოდ იმას ნიშნავს, რომ ის რაც დარწმუნებული ვარ, შეყვანის რომელიც შევიდა არის სწორი და რომ პირი, რომელიც შესვლის შეყვანის არ ცდილობს შემავალი ზოგიერთი მავნე კოდი დააგდოთ ჩვენი მაგიდები ან წაშლა ყველაფერი შიგნით ჩვენს მონაცემთა ბაზაში. სწრაფი მიმოხილვა მოდელი View Controller მოდელი, ეს არის მხოლოდ გზა ორგანიზება და ფიქრი კოდი. ეს კიდევ ერთხელ, დიზაინი პარადიგმა. ეს კი იმას ნიშნავს, რომ ჩვენ can-- და ეს კარგი პრაქტიკა გამოყოფა სხვადასხვა კუთხეში ჩვენი კოდი და რას კონტროლი, ამ სამი პარადიგმები. ასე რომ, ჩვენი აზრით, ყველაზე ხშირად ჩვენს თარგები, ჩვენს განლაგება, გზა რომ ჩვენ მითითებული, თუ როგორ ჩვენი კოდი გამოიყურება. ეს არის ის, ძირითადად, ჩვენი CSS ფაილი და გზა რომ ჩვენ განსაზღვრული დიზაინი ჩვენი კოდი, ძირითადად. ჩვენი კონტროლერი, ძირითადად, რა ჩვენ უკვე აკეთებს PHP ფაილი. ასე რომ კიდევ ერთხელ, მუშაობის ინფორმაცია, რომ ჩვენ გვაქვს და განსაზღვრავს, თუ როგორ, რომ ინფორმაცია გამოიყენება, და შემდეგ ავლით რომ ინფორმაცია ან გადატანა კალენდარი და მოდელი. და მოდელი, ისე, რომ ჩვენ გამოყენებით არის უკვე ჩვენი მონაცემთა ბაზა, ასე რომ, სადაც ჩვენი ინფორმაცია შენახული ასე რომ სადღაც ცხოვრება, და ნებისმიერ კოდი, რომელიც ეხება გზა რომ მივიღებთ, რომ ინფორმაცია ან ისე, რომ ჩვენ განახლება, რომ ინფორმაცია. ასე რომ, MVC მოდელი, HTTP მოთხოვნები იგზავნება სერვერზე. ამის შემდეგ, კონტროლერი ხსნის მოთხოვნის შესახებ და შემდეგ ამტკიცებს მომხმარებლის შეყვანის. სურვილისამებრ, რომ ჩვენ გვაქვს კონტროლერი კომუნიკაცია ერთად მოდელი, ასე რომ რაღაც ისევე როგორც ჩვენს მონაცემთა ბაზაში ან ზოგიერთი სხვა ფუნქცია რომ წარუდგინა ინფორმაცია. და ბოლოს, კონტროლერი გადის ინფორმაციის გადატანა კალენდარი ასე რომ, ეს შეიძლება იყოს გაწეული და რომ მას შეუძლია გახდეს ხილული ნებისმიერ პირს, წვდომის ვებ-გვერდზე. ნებისმიერი კითხვები? გასაოცარია. ასე რომ კიდევ ერთხელ, მოდელი, მისი ფუნქცია, კიდევ ერთხელ, არის მუდმივი შენახვის ინფორმაცია, მართვა და ორგანიზება მონაცემები. და რა, ჩვენ ვხედავთ, შორს არის MySQL მონაცემთა ბაზაში და ნებისმიერი მონაცემების ფაილი, რომელიც შეიძლება გამოიყენოს. ნახეთ, პრეზენტაცია ინფორმაციის შესახებ, UI, ან ინტერფეისი. და მაგალითად, ეს არის HTML. და მაშინ ჩვენ შეიძლება ჰქონდეს მინიმალური PHP. ასე რომ, ამისთვის loop რომ iterates მეტი მონაცემები, რომლებიც იბეჭდება არის ნაწილი ხედით, განსხვავებით კონტროლერი. და შემდეგ ბევრი ჩვენი PHP ფაილები მოხვდება კონტროლერი კატეგორიაში. უბრალოდ ამუშავებს მომხმარებლის მოთხოვნა და ინფორმაციას იღებს მოდელი. Jumping შევიდა დოკუმენტი ობიექტის მოდელი, ეს მხოლოდ ეხება გზა HTML დოკუმენტების ეწყობა. და ისინი ორგანიზებული შევიდა ხე სტრუქტურა, რომელიც აქვს იერარქიაში. ასე რომ, თუ ჩვენ გვაქვს წვდომა [INAUDIBLE] წარმომადგენლობის დოკუმენტი, ჩვენ შეგვიძლია ვიმუშაოთ დოკუმენტი, როგორიცაა ჩვენ მანიპულირება ობიექტების ძირითადად. და იმისათვის, რომ ეს ცოტა ნათელი, როდესაც ჩვენ გვაქვს ბევრი ჩვენი სხვადასხვა tags რეაგირება სხვადასხვა მარშრუტების ჩვენი ხე. და შემდეგ ამ მაგალითად, ჩვენ აქვს დაწყებული დოკუმენტი კვანძის. ჩვენ გვაქვს, მაშინ, ჩვენი HTML კვანძის რომ იყოფა ხელმძღვანელი და სხეულის. უფროსი აქვს სათაური და შემდეგ სათაური შეიცავს hello, world. და ჩვენი სხეულის მხოლოდ შეიცავს hello, world ისევე. ასე რომ ნებისმიერი კითხვები ნებისმიერ რამ, რომ ჩვენ დაფარული აქამდე? და თუ არა, Hannah იქნება აღება JavaScript. გასაოცარია. HANNAH BLUMBERG: OK, მაგარი. თუ რამე მოდის ერთად PHP და HTML, ან პერსონალის მარია დაფარული, ჩვენ ყოველთვის შეგიძლიათ პაუზის. ჩვენ ვაკეთებთ უკეთესი დრო ისევ, ასე რომ გასაოცარია. და მხოლოდ დაბრუნდეს ძალიან სწრაფად ამ, თუ გადავხედავთ ყველა გასულ წელს გამოცდა, ამ მოდის either-- აქ არის ზოგიერთი HTML, რომ ეს სქემა. ან აქ ეს სქემა, გარკვეული HTML, ამიტომ აუცილებლად პრაქტიკაში რომ. და მაშინ ეს არის ერთ-ერთი გარანტირებული საკითხი, რომ თქვენ შეგიძლიათ მიიღოთ უფლება. ზემოთ. ასე რომ, მოდით ვისაუბროთ JavaScript და როგორ არის ცოტა განსხვავდება ენებს, როგორიცაა PHP და C, ორ ენაზე ჩვენ წინასწარ იხილა. ასე რომ, ერთი, ეს თავისუფლად აკრეფილი. ეს არის, როგორც PHP, მაგრამ განსხვავებით C. ეს არის გაგებული ენის. კიდევ ერთხელ, რომ მოსწონს PHP, განსხვავებით C. ეს აპირებს საშუალებას მოგვცემს გამოიყენოს ეს მუშაობს ძალიან ლამაზად ვებ გვერდებზე. იგი აპირებს საშუალებას მოგვცემს მანიპულირება შინაარსი და როგორ გამოიყურება და რას აკეთებს. ჩვენ ვაპირებთ, რომ ნახოთ ცოტა Ajax. ეს საშუალებას გვაძლევს კომუნიკაციის asynchronously სხვადასხვა სერვერები და მიიღეთ ინფორმაცია. და ეს არის ის, რომ ნამდვილად ჰყოფს JavaScript ეხლა PHP და C ის არის, რომ კლიენტის მხარეს. ორივე PHP და C როგორც წესი, სერვერული. უმეტესწილად და თითქმის მთლიანად რა ჩვენ ვნახეთ, მინიმუმ ამ კლასში, JavaScript მოქმედებს კლიენტის მხარეს, რაც იმას ნიშნავს, რომ ბრაუზერი არის რეალურად პასუხისმგებელი გაშვებული. ეს კი იმას ნიშნავს, რომ ჩვენ არ უნდა შეარჩიონ სერვერზე. ეს იმას ნიშნავს, რომ ეს შეიძლება იყოს ბევრი უფრო სწრაფად იმიტომ, რომ ეს არის, ფაქტობრივად, მხოლოდ ის Chrome, ის Safari, ეს Firefox, რასაც თქვენ გამოყენება რეალურად გაშვებული თქვენი JavaScript. აუდიტორია: რა ასინქრონული ნიშნავს? HANNAH BLUMBERG: Ah, რა ამჯამად asynchronously ნიშნავს? დიდი კითხვა. Asynchronously ნიშნავს ასევე, შინაარსი, რომელიც ჩვენ ვიყენებთ ის არის, ბატონო, ვქმნით ვებ გვერდზე და ჩვენ უნდა მივიღოთ ინფორმაცია. ასე მაგალითად mashup, გავრცელდა ინფორმაცია, რომ ჩვენ დაგვჭირდება მუხლის ტიტული. ახლა, ჩვენ could-- ერთი ვარიანტი არის ამის სინქრონულად და ეს ნიშნავს, მოდით შეჩერება, წავიდეთ მისაღებად სტატიაში, მიიღეთ სტატია უკან, და მაშინ გაწევა, მაგრამ ეს იქნება ძალიან ნელი. ეს იქნება ცუდი მომხმარებლის, გამოცდილება იმიტომ, რომ თქვენ უბრალოდ უნდა იჯდა იქ ელოდება რაღაც რეაგირება. Asynchronously ნიშნავს, რომ ჩვენ ყველაფერს მიდის ჩვენი საქმე, გაწევის გვერდზე და ჩვენ გამოგიგზავნით off თხოვნა რომ სახის აპირებს მოხდება ფონზე. მე ვფიქრობ, რომ ჩვენ ვიყენებთ მაგალითად, ლექცია მოუწოდებს Rob და ამბობდა, hey, შეგიძლიათ გამოიყურებოდეს ეს ჩემთვის და დავუბრუნდეთ ჩემთვის, როგორც ეწინააღმდეგებოდა უბრალოდ მე ელოდება ტელეფონით. ასე რომ, ასინქრონულად იმას ნიშნავს, რომ ხდება ფონზე ჩვენგან პარალელურად. დიდი კითხვა. რაიმე სხვა? შესანიშნავი. ჩვენ მიცემას ბევრი უფრო ასინქრონული მოითხოვს Ajax. აუდიტორია: არა JavaScript-- სად ის დაეცემა მოდელის ხედვის კონტროლერი? HANNAH BLUMBERG: დიდი კითხვა. სად JavaScript შემოდგომაზე მოდელის ხედვის კონტროლერი? Hm. ვფიქრობ, ეს შეიძლება fall-- ასე რომ, ჩვენ არ ჩვეულებრივ მინდა გაუქმება ის, რომ პარადიგმა, მაგრამ ვფიქრობ, მე ვიტყოდი, OK, ასე რომ JavaScript რეალურად აპირებს საშუალებას ჩვენს შეგროვება მონაცემები, მონაცემების ინტერპრეტაცია, რეალურად ამის გაკეთება მნიშვნელოვანი რამ მონაცემები. ამგვარად, ეს არის ძალიან კონტროლის მსგავსი. მაგრამ ის ასევე აპირებს საშუალებას გვაძლევს არიან რამ და ბეჭდვითი რამ. ამგვარად, ეს არის ძალიან კალენდარი მსგავსი. ჰო. ასე რომ სახის, როგორიცაა PHP სადაც მას შეუძლია სახის იყოს როგორც. კარგი კითხვაა. რაიმე სხვა? ყველა უფლება, გასაოცარია. მოძრავი უფლება გასწვრივ. მოდით ვნახოთ, მაგალითად როგორ შეგვიძლია გამოვიყენოთ JavaScript ერთ ჩვენს ვებ პროგრამები. ასე რომ, მე ვთვლი, რომ ეს index.html ერთად bunch of HTML. და რაც მინდა, ფოკუსირება არის ეს სცენარი აქვს. და ეს ამბობს, OK, მე მინდა, რომ აწარმოებს რამდენიმე JavaScript და აქ არის, სადაც ის ცხოვრობს. იგი ცხოვრობს hello.js. და ძალიან ჰგავს CSS, შეგვეძლო ბოლო JavaScript ფარგლებში HTML. რატომ შეიძლება ჩვენ გვინდა გამოვყოთ ის? ჰო. აუდიტორია: გამარტივდა გადაწერას? HANNAH BLUMBERG: ჰო. ეს ადვილია გამოყენება მასშტაბით სხვადასხვა ვებ გვერდებზე. იგი ინარჩუნებს რამ სუფთა. ეს არის მხოლოდ კარგი პრაქტიკის. გასაოცარია. კარგი პასუხი. ასე რომ, კარგი, ასე რომ, ეს უნდა იყოს ჩვენი index.html. და შემდეგ ქვევით აქ არის ჩვენი პატარა JavaScript ფაილი. და ყველა ის ამბობს, არის alert Hello, world. რა ხდება მაშინ, როდესაც ამ გვერდზე renders-- ასე რომ, თუ წასვლა რასაც ნახვა ამ is-- ყველა რომ მოხდება არის ის აპირებს ამბობენ, OK, მე აპირებს ამ JavaScript კოდი. ეს JavaScript კოდი უბრალოდ ამბობს alert Hello, world. ამიტომ, მე ვაპირებ, რომ ამ მეგობრული პატარა pop-up. Cool? სწორედ ასეთი, როგორც ჩვენი პირველი JavaScript პროგრამა, ჩვენი Hello, world. მოდით, ცოტა უფრო მეტი, რა სინტაქსი JavaScript ჰგავს. და კონკრეტულად, მოდით შევადაროთ C და PHP, რაც ჩვენ ვნახეთ ადრე. JavaScript, ჩვენ ვაპირებთ, რომ var, სახელით ცვლადი, და მაშინ მისი ფაქტობრივი ღირებულება. და ჩვენ არ დააკონკრეტა ტიპის, უბრალოდ როგორც PHP, მაგრამ ძალიან განსხვავებით C. ასე მაგალითად, თუ გვინდოდა შენახვის ღირებულება 50, C, ჩვენ უნდა ვთქვა, hey, C, მინდა მთელი რიცხვი, მე ვაპირებ მოვუწოდო მას i და მისი ღირებულება არის 50. PHP- ში, ეს ცოტა უფრო ადვილია. ჩვენ ვამბობთ, hey, მინდა ცვლადი მოუწოდა მე და მისი ღირებულება 50. ძალიან ანალოგიურად, JavaScript, ჩვენ ამბობენ, hey, მინდა ცვლადში i, მისი ღირებულება 50. ყოველი შემდგომი დრო, რომ მე i, მე არ უნდა დაწეროთ var. ეს მხოლოდ მე რომ წერტილი. ანალოგიურად, C, სადაც კიდევ ვიტყვით, int i, ჩვენ უბრალოდ გამოიყენოთ i. Cool? კარგი. მოძრავი მარყუჟების, საბედნიეროდ, ეს თითქმის გამოიყურება, ზუსტად მე ვფიქრობ, რომ ისინი ზუსტად იგივე, რაც მარყუჟების ვაპირებთ ჰგავს რაღაც C, სადაც თქვენი for loop აპირებს აქვს სამი parts-- ინიციალიზაციისას, მდგომარეობა და განახლება. ხოლო მარყუჟის, ეს გამოიყურება ზუსტად იგივე. ჩვენ მხოლოდ მისთვის მდგომარეობაში. და ნუ ხოლო მარყუჟის, ერთხელ, ზუსტად იგივე. ჩვენ გაძლევთ ეს მდგომარეობა. ვთქვათ, მე სურდა iterate over-- მინდოდა, რომ რამე ხუთჯერ. In C, ჩვენ შეიძლება დაწეროს ამისთვის init i = 0. i ნაკლებია, ვიდრე 5, მე ++. ერთადერთი განსხვავება, JavaScript, ნაცვლად ამბობდა int i = 0, ჩვენ ვამბობთ var i = 0. ლამაზი. ეს არის ერთადერთი განსხვავება. ნებისმიერი კითხვები, რომ არც ერთი? დიახ. აუდიტორია: ასე PHP, ეს არის იგივე რამ, გარდა, მაგრამ, როგორც ცვლადი? ან ის, რომ var მაგალითად? HANNAH BLUMBERG: ჰო. ასე რომ, PHP, ის აპირებს იყოს დოლარის ნიშანი. ასე რომ, ის აპირებს $ i ტოლობის 0 $ i ნაკლებია, ვიდრე 5, $ i ++. დიდი კითხვა. ახლა მოდით ვისაუბროთ ფუნქცია დეკლარაციებს. In C, როდესაც ჩვენ გამოვაცხადეთ ფუნქცია, რომელიც მივეცით მას სახელი და ჩვენ მისცა გარკვეული პარამეტრების. და დასაწყისში, ჩვენ წერდა ტიპის. ამ JavaScript, ყველა ჩვენ უნდა გავაკეთოთ არის წერენ სიტყვით ფუნქცია, რომელიც ამბობს, hey, JavaScript, მე დაახლოებით განსაზღვრავს ფუნქცია. ამ შემთხვევაში, მას აქვს სახელი თანხა. და ეს ხდება ორი არგუმენტები, x და y. გაითვალისწინეთ, რომ ჩვენ არ აინტერესებს რა სახის x და y. და ისევე, როგორც C, ჩვენ გვაქვს ამ სიტყვით დაბრუნების, ასე რომ, ჩვენ შეგვიძლია გავაკეთოთ რაღაც მოსწონს დაბრუნების x და y. და ახლა, როდესაც ჩვენ დავწერეთ ეს პირველი ფუნქცია, ჩვენ შეგვიძლია გამოვიყენოთ თანხა ნებისმიერ წერტილში. და ეს სრულიად ჯარიმა. ერთი ნამდვილად მაგარი რამ JavaScript რომ არის ძალიან განსხვავებით C ის არის, რომ ფუნქციები შეუძლია განიხილება, როგორც ღირებულებები. ასე რომ, ჩვენ შეგვიძლია ამის გაკეთება რაღაც აქ სადაც მე ვფიქრობ, მოიცავს ამ up-- მე დაფარული მდე var თანხა part-- და ჩვენ უბრალოდ განაცხადა, ფუნქცია xy ტოლია დაბრუნების x + y. ეს არის ის, რაც იქნება მოუწოდა ანონიმური ფუნქცია. ეს ფუნქცია გარეშე სახელწოდება. ვინაიდან ეს ამბობს ფუნქცია თანხა, blah, blah, blah, ეს, უბრალოდ, ვამბობთ ფუნქცია. მაგრამ ახლა, მიუხედავად იმისა, რომ მე მაქვს ანონიმური ფუნქცია, რომ ფუნქცია მართლაც მხოლოდ მნიშვნელობა. ჩვენ შეგვიძლია მკურნალობა, როგორიცაა მნიშვნელობა. ასე რომ, ჩვენ შეგვიძლია გადარჩენა ეს ცვლადი იგივე სხვათა შორის, ჩვენ ვერ შესანახად 50 ცვლადი. ასე რომ, ჩვენ შეგვიძლია ვთქვათ, OK, მე მინდა ცვლადი, ეს ე.წ. თანხა, და ეს არის ამ ფუნქციას. ასე რომ, ეს ორი რამ რეალურად აპირებს გააკეთოს ზუსტად იგივე, მაგრამ სინტაქსი არის პატარა განსხვავებული და სახის გართობა შენიშვნა. ჰო. აუდიტორია: ასე რომ თქვენ ვერ ვუწოდებთ ფუნქცია, რომელიც ანონიმური იყო და განაცხადა, თანხა ფრჩხილებში 2, 5? HANNAH BLUMBERG: ჰო. შეგიძლია ეს ანონიმური ფუნქცია იგივე გზით. თქვენ ყველაფერს გააკეთებს თანხის (2, 5) ;. ეს იქნება სრულიად ჯარიმა. თუ მე არ გავაკეთებ var თანხა შეადგენს ფუნქცია, თუ უბრალოდ ამოღებულია ამას მე ვიცი, რომ ჩემი მხრივ, მაგრამ ვიტყვი, მე წაიშალოს ამას მაშინ რომ ფუნქცია სახის უბრალოდ გაქრა. თქვენ შეგიძლიათ არასდროს არ გამოიყენოთ კიდევ ერთხელ იმიტომ, თქვენ არ გაქვთ სახელი მას. ძნელი ეხება რაღაც თქვენ არ ვიცი რა დავარქვა. კარგი კითხვაა. ჰო. აუდიტორია: შეგიძლიათ მინიშნება თანხა სხვა ადგილებში ღირებულება x + y? HANNAH BLUMBERG: შეგიძლიათ მინიშნება თანხა სხვა ადგილებში ღირებულება x + y? მე არ ვარ მთლად დარწმუნებული, რას ნიშნავს. აუდიტორია: ასე რომ თქვენი წარსული ნახევრად ანონიმური ფუნქცია ჯამი უდრის ეს ანონიმური ფუნქცია, ასე რომ თანხა ახლა ცვლადი, რომ თქვენ can-- HANNAH BLUMBERG: მარჯვენა. ასე რომ, თანხა არის ცვლადი, მაგრამ ეს რეალურად ასე რომ, თანხა არის ცვლადი, რომლის მნიშვნელობა ფუნქცია. ასე რომ, ეს არის ფუნქცია, რომელიც არის ერთგვარი უცნაური რამ გადაიტანოთ თქვენი უფროსი გარშემო მას შემდეგ, რაც ჩვენ უკვე თამაშობდა C და ვერ გავაკეთოთ, რომ C. მაგრამ ახლა ჩვენ შეგვიძლია მოვუწოდებთ შევაჯამებთ ანალოგიურად, ჩვენ შეგვიძლია ეძახით თანხა აქ. აუდიტორია: OK. HANNAH BLUMBERG: ჰო. კარგი კითხვაა. ჰო. აუდიტორია: ასე რომ, ჩვენ არ ვიყენებთ პროტოტიპები PHP და JavaScript? HANNAH BLUMBERG: არა, ჩვენ არ უნდა გამოვიყენოთ პროტოტიპები, განსაკუთრებით JavaScript. ასე რომ, ერთი ცუდი პრაქტიკა, რაც მე ვაპირებ ვთქვა, რომ თქვენ არ უნდა გავაკეთოთ არის, რომ თქვენ არ უნდა დაწეროს var i = 50. თქვენ შეიძლება დავიწყო აკეთებს i = 50. და უბრალოდ მიიღოს i გლობალური ცვლადი. ეს არის ძალიან ცუდი პრაქტიკა არასოდეს თქვა explicity var i, მაგრამ ეს რაღაც შეგიძლიათ გააკეთოთ. თარჯიმანი არ არის აპირებს დაწეროთ თქვენ. JavaScript საკმაოდ მოსწონს, თქვენ რა გსურთ. ბოდიში. არსებობს ორი. ნარინჯისფერი შარვალი. განაგრძე. აუდიტორია: არა, თქვენ წასვლა პირველი. აუდიტორია: არა, მე უბრალოდ ვამბობ, მე არ მაქვს ჩემი მხრივ. კარგი. ასე რომ, თუ დარეკვა პირველად, ახლა თანხა, ჩვენ მას ანალოგიურად, x, y, ისევე როგორც ყველა დროის? HANNAH BLUMBERG: ჰო. ასე რომ, ამ ორი არსებითად გააკეთოს იგივე. აუდიტორია: რა უპირატესობა გამოყენების ან ერთი ან მეორე? HANNAH BLUMBERG არ გამოიყენა გამოყენების ან ერთი ან მეორე. მე უბრალოდ მინდოდა გაჩვენებთ ორ სხვადასხვა ცალი სინტაქსი. ბევრი ჯერ, სადაც ანონიმური ფუნქციები აქვს მიზნით არის თუ არგუმენტი სხვა ფუნქცია უნდა იყოს ფუნქცია. ჩვენ დავინახავთ, რომ მხოლოდ მეორე აიაქსი. ასე რომ, თუ არ გაუკეთებიათ გრძნობა, ჩაწეროთ იგი უკან თქვენი უფროსი. სწორედ იქ, სადაც ანონიმური ფუნქცია შეიძლება იყოს სასარგებლო იმიტომ, რომ ეს ნამდვილად არ ღირს ვაძლევთ მას სახელი მას შემდეგ, რაც ჩვენ უბრალოდ აპირებს გამოიყენოს იგი ერთხელ. ჰო. აუდიტორია: თუ x და y ცვლილების შემდეგ შესახებ, შეაფასებს იცვლება? HANNAH BLUMBERG: თუ x და y ცვლილება მოგვიანებით, შეაფასებს იცვლება? ასე რომ, ეს არის რეალურად მე ვფიქრობ, რომ რაღაც, ერთხელ, უბრალოდ გრძნობს ძალიან განსხვავებული C. ეს არ არის ღირებულება. ეს არ არის 5. ეს მხოლოდ ფუნქცია თავად. ამიტომ, როგორც კი თქვენ ეს პარამეტრები, მაშინ თქვენ რეალურად გამოთვლა მნიშვნელობა. MARIA ZLATKOVA: შემდეგ შეგიძლიათ დარეკოთ ფუნქცია და გამოიყენოს იგი მისაღებად გარკვეული მნიშვნელობა. HANNAH BLUMBERG: მარჯვენა. ზუსტად. ჰო. აუდიტორია: ასე რომ, თუ თქვენ მხოლოდ ჩაწეროთ იგი ცვლადი, როგორიცაა var x უდრის თანხა ორი ღირებულებებს HANNAH BLUMBERG: ჰო. ასე რომ, თქვენ შეიძლება უბრალოდ var თანხა უდრის თანხა ორი ღირებულებებს. ჰო. ნებისმიერი სხვა კითხვები? ჰო. აუდიტორია: მაგრამ გვინდა, რომ აღრეული თანხა და თანხა? Like თუ თქვენ მოვუწოდებთ თქვენი ცვლადი თანხა, რომ თქვენ მოვუწოდებთ ფუნქცია თანხა? HANNAH BLUMBERG: Mm. Mm. თუ თქვენ გააკეთეთ რამე როგორიცაა, თანხა შეადგენს თანხა 2, 5? აუდიტორია: Yeah. HANNAH BLUMBERG: მჯერა, რომ რომ გადავაწერო ღირებულება თანხა. ასე რომ, კიდევ ერთი საინტერესო რამ, JavaScript ის არის, რომ ერთი ცვლადი შეუძლია წლის bunch სხვადასხვა ტიპის. ცუდი პრაქტიკა. თქვენ არ უნდა გავაკეთოთ რაღაც იგივეა, რაც თქვენ უბრალოდ განაცხადა. მაგრამ C, თუ მე არის ტოლი რიცხვი, ჩვენ ვიცით, რომ ეს არასოდეს არ არის აპირებს გახდეს სიმებიანი. ეს არ არის იმ შემთხვევაში, JavaScript. ჰო, კარგი კითხვა. რაიმე სხვა? კარგი. Doing ყველა უფლება დროს. შენახვა აპირებს. კარგი. თუ დავაკვირდებით მასივი JavaScript, აქ არის სწრაფი მაგალითად მასივი სიმები. და კოლექტორები შეიძლება გაიზარდოს დინამიურად ვითარდება. მათ არ აქვთ ფიქსირებული ზომა იგივე გზა რომ ისინი C. ჩვენ შეუძლია ელემენტები მხოლოდ კვადრატულ ფრჩხილებში. ეს ძალიან ჰგავს PHP და ბევრი როგორიცაა C, სადაც ჩვენ შეგვიძლია ვთქვათ, ამ შემთხვევაში, თუ მინდოდა სიტყვა JavaScript, მე არ სია თურქეთიდან კვადრატულ ფრჩხილებში 0, 1, 2. და მაშინ, თუ გახსოვთ, C, როდესაც ჩვენ მინდოდა სიგრძეზე მასივი, ეს იყო მართლაც შემაშფოთებელი. მაგრამ JavaScript, სუპერ მარტივია. ყველა ვაკეთებთ, .სიგრძე. აძლევს lengths. ის არის. აუდიტორია: ეს მარტივია. HANNAH BLUMBERG: ჰო, რაც თქვენს ცხოვრებაში ბევრი ადვილია. OK, object-- არ არსებობს. ობიექტების JavaScript შეგრძნებას ბევრი მოსწონს structs დო და ასოციაციური მასივების PHP. ამიტომ, რაც ჩვენ ვნახეთ ბევრი არის JSON, რომელიც დგას JavaScript Object ნოტაცია. და ეს ძირითადად გზა სტრუქტურირების ჩვენი მონაცემებით. მოდით ვნახოთ, მაგალითად, ალბათ, იოლი. ასე რომ, აქ არის მაგალითი ობიექტი რომ ინახავს კლასის, CS50. და როდესაც ვამბობ, კლასი, მე ვგულისხმობ, რა თქმა უნდა, არ მოსწონს ჰო, რა თქმა უნდა, CS50. და დაინახავთ, რომ ყველაფერი ობიექტი იქნება შეიცავს in curly braces. და ჩვენ ვიწყებთ გაერთიანდნენ სფეროში სახელები ან გასაღებები განსხვავებული ღირებულებები. ასე რომ თქვენ შეგიძლიათ ნახოთ, თუ როგორ ამ სახის იგრძნობა ასოციაციურ მასივში PHP. ამიტომ, ჩვენ ვაპირებთ, რომ გაერთიანდნენ სფეროში ან გასაღები სახელი, რა თქმა უნდა, სიმებიანი, CS50. ჩვენ ვაპირებთ, რომ აქვს ინსტრუქტორი. ჩვენ ვაპირებთ, რომ TFs. ჩვენ ვაპირებთ, რომ ნომერი psets და ჩვენ ვაპირებთ, რომ არ ჩაიწერა. და კიდევ ერთი მაგარი რამ აღვნიშნო ყველა ეს ყველაფერი სხვადასხვა სახის, და რომ სრულიად ჯარიმა. ეს ჯარიმა ობიექტი, ფაქტობრივად, ეს, ალბათ, მოსალოდნელი ობიექტი აქვს კომბინაცია სიმები და ციფრები და Booleans და კოლექტორები და რასაც სხვაგან თუ შეიძლება გვინდა, რომ აქვს თქვენს ობიექტი. და აღნიშნავენ, რომ ეს იქნება სახელები და გასაღებები, და მაშინ ჩვენ უბრალოდ დააყენეთ ტოლია პატარა წერტილი. აუდიტორია: რა ზუსტად არ JSON ნიშნავს? HANNAH BLUMBERG: რა ზუსტად არ JSON ნიშნავს? JSON მხოლოდ დგას JavaScript Object ნოტაცია. ეს არის მხოლოდ გზა გაფორმებით. ჰო. ეს არის გზა გაფორმებით ჩვენი მონაცემებით. In C, ეს structs. PHP- ში, ეს ასოციაციური მასივების. ამ JavaScript, ჩვენ ობიექტები. აუდიტორია: ასე CS50 ობიექტი? HANNAH BLUMBERG: CS50 არის ობიექტი ამ შემთხვევაში. ახლა, როგორ გავაკეთოთ ჩვენ, ფაქტობრივად ხელმისაწვდომობა იმ სფეროებში ან შეცვალოს იმ სფეროებში. დავუშვათ, ჩვენ გადავწყვიტეთ, რომ თქვენ სურდა ერთი ნაკლები pset ამ სემესტრში. იმის ნაცვლად, ცხრა, ჩვენ უბრალოდ აპირებს რვა. როგორ შევცვლით, რომ? ოჰ, არასწორი გზა. არსებობს ორი გზა, რომ ჩვენ შეგვიძლია ამის გაკეთება. პუნქტების არის ერთად dot notation და ნომერი ორი ერთად კვადრატული ფრჩხილი ნოტაცია. ასე, მაგალითად, თუ მე უნდოდა, რომ შეიცვალოს და ხელმისაწვდომობის psets სფეროში ჩვენი CS50 ობიექტი, რა მინდა, არის CS50.psets, ასე რომ, სახელი ობიექტი dot სახელი სფეროში ან გასაღები. ძალიან ანალოგიურად, ეს არის ზუსტად ექვივალენტი უნდა გავაკეთოთ CS50, და შემდეგ კვადრატული braces, Psets. Cool? ჰო. აუდიტორია: ასე რომ, JSON ტექნიკურად JavaScript მაინც, მიუხედავად იმისა, რომ psets ჩვენ გამოყოფა მას out [INAUDIBLE]? HANNAH BLUMBERG: რა თქმა უნდა. ასე რომ, კითხვა, არის JavaScript და JSON ექვივალენტი? ასე რომ, JSON არის notation, ძირითადად, ისე, რომ ჩვენ წერენ გარეთ ობიექტის JavaScript. ასე რომ, ისინი არ არის ზუსტად იგივე. მე ვიტყოდი, რომ JavaScript, არ ობიექტების JavaScript. JSON იღებს იმ ობიექტების და ბეჭდავს მათ და აჩვენებს მათ ან ინახავს მათ ლამაზი გზა. ასე რომ, JSON არ არის პროგრამირების ენის გზა, რომ JavaScript. უბრალოდ ნოტაცია ჩვენი ობიექტების JavaScript. ჰო. აუდიტორია: ასე რომ, რა [INAUDIBLE] დასრულებას? HANNAH BLUMBERG: რა თქმა უნდა. ასე რომ, ეს რეალურად არაფერს აკეთებს. ეს არის მხოლოდ გზა, რათა შეამოწმონ. ასე ვთქვათ, გვინდოდა, რომ შეცვალოს რაოდენობის პრობლემა კომპლექტი ცხრიდან რვა. რას ვაკეთებთ, რომ რამე ისევე როგორც CS50.psets = 8 ;. ჰო, დიდი კითხვა. ეს არის უბრალოდ გაჩვენოთ სინტაქსი. არ რეალურად არაფერი სასარგებლო. ნებისმიერი კითხვები? მოძრავი უფლება გასწვრივ. მოდით შევხედოთ სწრაფი მაგალითია, თუ როგორ JavaScript მუშაობს, რადგან გითხარით, აკეთებს ეს მაგარი რამ და საშუალებას გვაძლევს ცვლილებები ვებ გვერდებზე. მოდით რეალურად ვხედავ ეს ქმედება. ასე რომ, მაგალითად, ამ HTML ფაილი. და რაც მინდა ფოკუსირება არის ამ კონკრეტულ tag, რომელიც ღილაკს, ერთად id search_button. ეს უბრალოდ გვერდზე. ასე რომ, ახლა ვნახოთ, რა ჩვენ შეგვიძლია რეალურად გავაკეთოთ. ისე, ვფიქრობ, როდესაც ვაწვებით ღილაკს რომ, ჩვენ გვსურს alert-- თქვენ დააწკაპებთ ღილაკს. ვნახოთ, როგორ შეგვიძლია გავაკეთოთ, რომ. ასე რომ, window.onload-- ეს არ არის რაღაც რომ ვნახე კლასში, ამიტომ არ უნდა ვიცოდეთ, რომ ვიქტორინა. მაგრამ ეს ძირითადად ამბობს, OK, დარეკეთ ეს ფუნქცია, როდესაც window იტვირთება. ასე რომ, მხოლოდ სახის setup კოდი. არ ინერვიულოთ, იმდენად, რომ. რა მინდა ფოკუსირება არის აქ. ჩვენ ვამბობთ var searchButton ტოლია document.getElementByID search_button. ასე რომ, როგორც თქვენ ალბათ მიხვდები, რა ეს არ არის ის ამბობს, OK, წავიდეთ მოვძებნოთ ელემენტი პირადობის search_button. და ახლა ჩვენ გვაქვს, რომ ნამდვილი ელემენტი და მე აპირებს ჩაწეროთ იგი ცვლადი searchButton. და ახლა ჩვენ შეგვიძლია რეალურად გამოიყენოს, რომ ელემენტს და შეცვალოს იგი, ან შედიხართ მის ფასეულობებს, რამ, როგორიცაა, რომ. ჩვენ შეგვიძლია რეალურად დაიწყოს ითანამშრომლონ ვებ-გვერდზე. ასე რომ, აქ მე ვიტყვი, OK, ახლა რომ მაქვს რომ ღილაკს, როდესაც დააწკაპებთ, დარეკეთ ამ ანონიმური ფუნქცია. ასე რომ, ეს არის, სადაც ანონიმური ფუნქციები გახდეს სასარგებლო. და რა ფუნქცია გავაკეთოთ? ისე, უბრალოდ მოუწოდებს ამ მზადყოფნაში ფუნქცია და იგი აცხადებს, თქვენ დააწკაპებთ ღილაკს ძებნა. ასე რომ, რა მოხდება, თუ მე იქ, სადაც ამ HTML ცხოვრობს და მე ღილაკს, მე კიდევ ლამაზი პატარა alert რომელიც ამბობს, თქვენ დააწკაპებთ ღილაკს. ასე რამ ფოკუსირება აქ document.getElementByID იღებს კონკრეტულ HTML ელემენტის მოცემულ ID. და ახლა ჩვენ შეგვიძლია მითითებული რაც უნდა მოხდეს რომ კონკრეტული ელემენტის დააწკაპებთ. აუდიტორია: ჩვენ უნდა დააყენოს ყველა რომ? HANNAH BLUMBERG: ბოდიში? აუდიტორია: გვაქვს ფიზიკური კოდექსში ყველა რომ? HANNAH BLUMBERG: ჩვენ უნდა ფიზიკური კოდექსში ყველა რომ? დიახ. ეს არ არის, ერთგვარი შემაშფოთებელი? ეს არის ბევრი კოდი. აუდიტორია: თქვენ შეიძლება იმპორტი რაღაც. HANNAH BLUMBERG: მარჯვენა. ჩვენ შეიძლება გამოიყენოთ რაღაც. და ში კერძოდ oh, ეს მეუბნებოდა, მე უნდა ასწავლოს განყოფილებაში. კერძოდ, მოდით ბიბლიოთეკის გამოყენების jQuery, იმიტომ, რომ მართლაც ხანგრძლივი და მართლაც შემაშფოთებელი და მე მინდა, რომ შეძლებს გამარტივება და ეს მოკლე და ადვილია დაწერა. ასე რომ jQuery JavaScript ბიბლიოთეკა. ასე რომ, JavaScript პროგრამირების ენა; jQuery არის ბიბლიოთეკაში. და ეს ქმნის რამოდენიმე რამ ადვილია. რაც იცვლება და გადის HTML დოკუმენტის ბევრად უფრო ადვილია. რაც გატარება მოვლენების ადვილია. რაც ანიმაცია ადვილი და ეს რაც Ajax ადვილია. მოდით ხტომა შევიდა ორი ის, რაც ახლა. ბოდიში. სანამ ჩვენ გავაკეთოთ, ზოგიერთი ძირითადი სინტაქსი. ეს არის ის, რაც ყველაზე მოუწოდებს jQuery ბიბლიოთეკა ჰგავს. ჩვენ ვიყენებთ ამ დოლარი sign-- არანაირი კავშირი არ ნიშანი PHP, უბრალოდ inconvenient-- სახელი selector, dot და შემდეგ აქცია. მოდით ვნახოთ, ზოგიერთი კონკრეტული მაგალითები, რომ. ასე რომ, ეს რეალურად არის იგივე კოდი ღონისძიება slide. ასე რომ, ეს ხანგრძლივი, მახინჯი რამ ხდება ეს ბევრად უფრო ლამაზი, პატარა რამ. მოდით ცდილობენ დაარღვიოს ეს ქვემოთ. ეს ამბობს, OK, jQuery-- ამ დოლარის sign-- jQuery, მოვძებნოთ მე ფანჯარა. ასე რომ, selector. როდესაც ეს ტვირთავს, დარეკეთ ამ ფუნქციას. ასე რომ, ყველაფერი შიგნით. კარგი. ჯერჯერობით, იმდენად კარგი? კარგი. ახლა, jQuery, იპოვოს ჩემთვის რამ ID search_button. ხოლო ის, რაც დააწკაპებთ, დარეკეთ ამ ფუნქციას. და შემდეგ ამ ფუნქციის ზუსტად იგივე. უბრალოდ ცოტა მზადყოფნაში, თქვენ დააწკაპებთ ღილაკს ძებნა. ასე რომ, ეს მართლაც კარგია. ეს მართლაც კონდენსირდება და ამარტივებს ჩვენი კოდი. როგორ მე ვიცი, რომ ეს ID search_button და არა კლასის search_button? აუდიტორია: Hashtag? HANNAH BLUMBERG: ჰო. ეს hash სიმბოლო, ისევე, როგორც CSS. ასე მახსოვს, CSS, როდესაც ჩვენ სურდა შეარჩიოთ რაღაც ID, ჩვენ გამოიყენება ფუნტი ნიშანი. და როცა გვინდოდა აირჩიეთ რაღაც კლასი, ჩვენ ვიყენებთ dot. შესანიშნავი. აზრი? ასე რომ jQuery უნდა უბრალოდ, რათა ჩვენი ცხოვრება ადვილი. ჰო. აუდიტორია: ასე რომ მე ცოტა დაბნეული, როგორ ანონიმური ფუნქცია. ნუ თქვენ დაარქვით ამ anonymouse ფუნქცია, ფუნქციონირებას? როგორ ეწოდება მას? HANNAH BLUMBERG: რა თქმა უნდა. ასე რომ, ფუნქცია მხოლოდ სიტყვით რომ ამბობს, მე ვარ დაახლოებით განსაზღვრავს ფუნქცია. აუდიტორია: Oh, OK. HANNAH BLUMBERG: OK? და მაშინ ჩვენ გაივლის მას, როგორც არგუმენტი, რომელთა მიზანია ავიღოთ ამ შიდა one-- იმ ღილაკის ფუნქცია. ისე ჰო, ისე, რომ ფუნქცია, ანონიმური ფუნქცია, ხდება ფაქტობრივი არგუმენტი. ასე მახსოვს, JavaScript, ჩვენ შეიძლება მკურნალობა ფუნქციები ღირებულებებს. აუდიტორია: Oh, OK. HANNAH BLUMBERG: ჰო. მე მინდა, რომ "რა". Nice. სხვა კითხვები? დრო? MARIA ZLATKOVA: კარგი. კარგი. HANNAH BLUMBERG: გასაოცარია. რამდენიმე სწრაფი სასარგებლო jQuery. მე არ ვაპირებ წასვლა მთელი ეს. ეს სლაიდები იქნება up ონლაინ ცოტა მოგვიანებით, ასე რომ თქვენ შეგიძლიათ ნახოთ ის, ცოტა მოგვიანებით. მაგრამ, ძირითადად, ზოგადი ნიმუში ფლობს, სადაც ჩვენ ვამბობთ, OK, hey, jQuery, აქ არის ჩემი არჩევის და მერე აქ action. და შეგიძლიათ გააკეთოთ რამ, როგორიცაა ხელმისაწვდომობის ღირებულება ფორმა, ზოგიერთი HTML, კონტროლის რა ხდება, როდესაც შესახებ წარუდგენს ფორმა, რამ, როგორიცაა, რომ. დიახ. აუდიტორია: ასე რომ, გამოცდა, ჩვენ ვაპირებთ, რომ უნდა ვიცი საკმაოდ ბევრი რომ jQuery დოკუმენტაცია. ასე რომ, იმის გათვალისწინებით, რომ ჩვენ კოპირება / პასტა jQuery დოკუმენტაცია ჩვენი cheat ფურცელი, სად არის ზღვარი? მსგავსად რამდენი ჩვენ უნდა ვიცოდეთ? HANNAH BLUMBERG: დიდი კითხვა. კითხვაზე არის არსებითად იმის გათვალისწინებით, რომ თქვენ ვერ შედიხართ jQuery დოკუმენტაცია დროს ტესტი, რამდენი უნდა თქვენ იცით? ჩვენ არ ველით, რომ თქვენ მოვიდა რაიმე შემთხვევითი ფუნქცია , რომ ჩვენ ველით, რომ თქვენ Google. საგნები, რომლებიც სამართლიანი თამაში არის, მე ამბობენ, მხოლოდ სახის ზოგადი სინტაქსი, მიმდინარეობს შეუძლია შეარჩიოს ით და by კლასის ისე, ისევე, როგორც CSS. და მერე რეალურ ფუნქციები themself, ჩვენ სავარაუდოდ გეტყვით. ჰო. აუდიტორია: ასე რომ, როდესაც თქვენ აირჩიეთ კლასი იმას ნიშნავს, dot. HANNAH BLUMBERG: დიახ, ზუსტად. კარგი. როდესაც თქვენ აირჩიეთ კლასი, ის აპირებს უნდა dot ნაცვლად ფუნტი ნიშანი. დიახ. აუდიტორია: გსურთ თუ გადასვლა ზე მეტი სხვაობა შორის შერჩევის ით და კლასში? HANNAH BLUMBERG: რა თქმა უნდა. შორის განსხვავება შერჩევის ID და შერჩევის კლასი. ასე რომ, როგორც მარია განაცხადა ცოტა უფრო ადრე, იქ შეიძლება იყოს მხოლოდ ერთი ელემენტი მოცემულ ID, ხოლო კლასი, ეს საშუალებას გვაძლევს ჯგუფის bunch სხვადასხვა ელემენტების ერთად, ასე რამ, რომლებიც დაკავშირებულია, მაგრამ არა ზუსტად იგივე. თუ არა, რომ კითხვაზე პასუხის გაცემა? გასაოცარია. დიახ. აუდიტორია: რა მოხდება, თუ თქვენ გაქვთ მრავალჯერადი რამ, რომ ერთსა და იმავე კლასში? HANNAH BLUMBERG: რა ხდება თუ თქვენ გაქვთ რამოდენიმე რამ, რომ არის იგივე კლასში? ასე, მაგალითად, თუ ჩვენ მხოლოდ გამოყენებით სუფთა JavaScript, ჩვენ ყველაფერს გააკეთებს რაღაც document.getElementsByClass. და მერე რა, რომ რეალურად აკეთებს არის ბრუნდება მასივი ელემენტები. და თქვენ უნდა ან გადაურბინოთ მათ ან იპოვოს, რომელიც თქვენ გსურთ. ის დათმობას არ აპირებს თქვენ ერთ ელემენტს. ის აპირებს მოგცემთ მასივი ელემენტები. დიდი კითხვა. რაიმე სხვა? გასაოცარია. ასე რომ, ვფიქრობ, რომ თუ თქვენ იცნობს ნებისმიერი jQuery ვნახე pset, თქვენ უნდა იყოს კარგი წავიდეთ. კითხვა? ო არა. მე ნამდვილად არ ასწავლიან. Relax. ეს იქნება ჯარიმა. მე იქ. მოდით ვისაუბროთ Ajax. ასე რომ, აიაქსი იქნება a-- კარგად, მოდით დავიწყოთ რა დგას. ეს აკრონიმი. იგი დგას ასინქრონული JavaScript და XML. და XML ძირითადად იქნება [INAUDIBLE] რომელზეც ტიპის ჩვენი მონაცემებით. მაგრამ ჩვენ რეალურად არ გამოიყენება XML. სამაგიეროდ, ჩვენ უბრალოდ გამოიყენოთ JSON. ასე რომ, ძირითადად, ეს არის გარკვეული მონაცემები ასინქრონული, JavaScript, და მონაცემები, ამ შემთხვევაში, JSON. ჩვენი მიზანია, როგორც აღვნიშნეთ ცოტა უფრო ადრე, უნდა იყოს შეუძლია მოთხოვნით, არ, რომ მოთხოვნის გააკეთებს მისი რამ ფონზე, მაგრამ გაგრძელდება ამის გაკეთება, რასაც ჩვენ მიზნად ისახავდნენ. და მაშინ, როდესაც რომ ინფორმაცია მზად ვართ, მაშინ ჩვენ ითვალისწინებდეს. ასე რომ, ვნახოთ, რა არის ეს რეალურად გამოიყურება. და ეს, თქვენ უნდა იყოს ცოტა ნაცნობი საწყისი pset8, ერთი უბრალოდ დღევანდელი. ასე რომ, აქ მოქმედი jQuery ფუნქცია, რომელიც ჩვენ შეგვიძლია გვინდა ვიცოდეთ ამაზე ამ დოლარის ნიშანი. ასე რომ, ის ამბობს, jQuery ფუნქციის .getJson. და რა ამ ფუნქციის არ არის ის იღებს URL და ზოგიერთი parameters-- ასე რომ, მე ვფიქრობ, რომ იმ შემთხვევაში, საქართველოს pset8, თითქოს, URL, იყო articles.php და პარამეტრების იყო წასვლა = ზოგიერთ საფოსტო კოდი. ის ამბობს, OK, თხოვნით ამ URL მოცემული პარამეტრების. და ეს უბრალოდ ხდება. როდესაც დასრულდება, ის ან აპირებს წარმატებით დაასრულებს ან ის აპირებს ჩავარდება. ასე რომ, ეს არის ეკვივალენტი ზარი Rob და ვთხოვთ მას, რომ რამე. და მაშინ, როდესაც ის მოუწოდებს უკან, ის ან ვაპირებ ვთქვა მე გაკეთდეს და მე ვერ მოხერხდა. ასე რომ, იმ შემთხვევაში, თუ თქვენ კეთდება, თქვენ იტყვით, მე გაკეთდეს. და მაშინ დარეკეთ ამ ფუნქციას. ამ შემთხვევაში, ეს იქნება ფუნქცია, რომელიც იღებს გარკვეული ინფორმაცია. ერთი ჩვენ, როგორც წესი, აინტერესებს მონაცემები, მონაცემები, რომ ჩვენ რეალურად დაბრუნდა შედეგად მოუწოდებს .getJSON. და თქვენ შეგიძლიათ ამის გაკეთება რაღაც ეს. ასე რომ, იმ შემთხვევაში, თუ pset8, ჩვენ ნაჩვენები, როგორც სია. Fail იქნება ფუნქცია რომ ეწოდება, თუ მოთხოვნა ვერ სხვადსხვა მიზეზის გამო. და იმ შემთხვევაში, თუ pset8, ჩვენ უბრალოდ console.log იგი. ნებისმიერი კითხვები რომ? ჰო. აუდიტორია: ჩვენ უბრალოდ გამოიყენოთ ფუნქცია თეტა ნაცვლად ფუნქცია, textStatus, jqHXR. HANNAH BLUMBERG: რა თქმა უნდა. ისე ჰო, მე ვფიქრობ, რომ pset, ჩვენ ვნახეთ ფუნქცია მონაცემები. ასე რომ, ეს უბრალოდ the-- დიახ, OK. ეს არის ის, რაც ჩვენ ვნახეთ pset. რომ სრულიად ჯარიმა. ეს არის მხოლოდ თუ უნდოდა გაიყვანოს დამატებითი ინფორმაცია, ეს არის ის, რაც შეგიძლიათ მიიღოთ .getJSON. კარგი კითხვაა. რაიმე სხვა? ჰო. აუდიტორია: ასე .getJSON არის Ajax? HANNAH BLUMBERG: OK. ასე რომ, ეს არის ერთგვარი სახიფათო ნაწილი. ეს არის jQuery ფუნქცია, რომელიც საშუალებას თქვენ უნდა გავაკეთოთ ასინქრონული ზარები. და იმ ასინქრონული ზარები, რომ რაც ჩვენ უკვე გულისხმობდა როგორც Ajax. ჰო. რომ წამიყვანეს მართლაც დიდი დრო დახევის გარდა, როდესაც მე ვიყავი სტუდენტი. აუდიტორია: შეიძლება ითქვას, რომ კიდევ ერთხელ? HANNAH BLUMBERG: ჰო. შემიძლია ვთქვა, რომ კიდევ ერთხელ? ეს .getJSON ფუნქცია, ეს არის jQuery ფუნქცია. და ის აპირებს, რათა ასინქრონული ზარი. და ეს ასინქრონული ზარები, ჩვენ გულისხმობდა იმ როგორც Ajax. ნებისმიერი სხვა კითხვები? ჩვენ გვაქვს მხოლოდ რამდენიმე წუთი დარჩა. მარია აპირებს გადაიტანოთ up უსაფრთხოების და მაშინ ჩვენ ვაპირებთ უნდა მხოლოდ გააკეთა. MARIA ZLATKOVA: გასაოცარია, OK. ასე რომ, ეს is-- უბრალოდ მიიღოს რამდენიმე წამში გამოიყურებოდეს მეტი ამ. და ეს არ არის რაღაც ნამდვილად დიდი. და შეიძლება ვინმე მითხრათ რატომ? რა ხდება foo და შეიძლება იქნებოდა პოტენციურად გამოიწვევს რაღაც ცუდი, და რა, რომ ე.წ.? ჰო. აუდიტორია: თუ არგუმენტი, რომ გავიდა უფრო მეტია ვიდრე 12 პერსონაჟი, ეს შეიძლება overflow. MARIA ZLATKOVA: მარჯვენა. სრულყოფილი. რა ეწოდება მას? თქვენ ახსენეთ იგი. აუდიტორია: ბუფერული overflow. MARIA ZLATKOVA: Yup, ბუფერული overflow. ასე რომ, ეს არის ის, რასაც ჩვენ ეხება როგორც ბუფერული overflow. და ჩვენ ვხედავთ, რომ შიგნით foo, ჩვენ განისაზღვრება ჩვენი ბუფერული, c, ზომა 12. თუმცა, მთავარი, ჩვენ არ შემოწმება არანაირად ყველა თუ არა argv1-- ისე, რომ იყო მეორე არგუმენტი. ჩვენ არ შეამოწმოს თუ არა ზომა მიზანშეწონილია. ასე რომ, თუ ჩვენ გვქონდა განსაკუთრებით მუქარის შესახებ ვინც დააყენა ზოგიერთი არგუმენტი, რომ იყო უმეტეს 12 და შემდეგ პოტენციურად მიღმა ფარგლებში, რომელიც არგუმენტი, გვქონდა შესრულებადი კოდი რომ იგი ცდილობს რაღაც ცუდი მასთან ერთად; მაშინ ეს, რა მოხდება, რომ override დაბრუნების მისამართი foo ფუნქცია, რამაც ფუნქცია, როდესაც დაბრუნების შეასრულოს, რომ კოდი. და მაშინ ცუდი რამ შეიძლება მოხდეს. ნიშნავს თუ არა ეს აზრი, რომ ყველასთვის? და როგორ შეგვიძლია დაიცვას ეს? რაიმე რჩევა? ძირითადად, შიგნით პოტენციურად foo, თუ როგორ შეგვიძლია შევამოწმოთ, რომ დავრწმუნდეთ, , რომ არ შეიძლება მოხდეს? აუდიტორია: თუ ზომა 12 გადააჭარბა, თქვენ გამოყოფს დამატებით მეხსიერება? MARIA ZLATKOVA: შემოთავაზება არის, გამოყოფს დამატებითი მეხსიერების ზომის გადააჭარბა. სინამდვილეში, ჩვენ შეგვიძლია გავაკეთოთ რაღაც ბევრი მარტივია, ვიდრე, რომ ისევე. ჩვენ შეგვიძლია მხოლოდ მიიღოს სიმებიანი ხანგრძლივობა არგუმენტი, რომ შევიდა, შემოწმება, თუ, რომელიც ნაკლებია მეტი ან ტოლია 12-- რაც ჩვენ გვინდა, რომ ეს იმის გამო, რომ ჩვენ არ გვინდა, ეს უნდა აღემატებოდეს საზღვრები ჩვენი ბუფერული. და მაშინ, თუ ეს არ მოხდა, ჩვენ შეუძლია მუშაობა არგუმენტი. და თუ ეს ასეა, ჩვენ რეალურად გვინდა რომ Yello პოტენციურად შესახებ. მაგრამ ეს როგორ უნდა გავაკეთოთ, რომ. დიახ. აუდიტორია: იქნებ ავუხსნათ memcpy რეალური სწრაფი? MARIA ZLATKOVA: ოჰ, უკაცრავად. დიახ. Memcpy იღებს რასაც is-- ბოდიში, OK. Memcpy იღებს იმას, რაც ბარი, რაც გავიდა გადატანა foo, როგორც ბრძანების არგუმენტი. ასე რომ, ის აპირებს argv1. Argv1 ეწოდება ბარი აქ. ასე რომ, ის აპირებს ბარი და ის აპირებს კოპირება შევიდა გ. აუდიტორია: OK. MARIA ZLATKOVA: და ის აპირებს copy-- მესამე არგუმენტი უბრალოდ ეხება რომ, თუ რამდენად აპირებს კოპირება გ. აუდიტორია: Ah. ასე რომ, ეს ერთ-ერთი ის გადაწერა ყველა ის შემდეგ. MARIA ZLATKOVA: ჰო, ის გადაწერა ყველა ის. Yep. პირველ რიგში, ჩვენ დარწმუნებული ვართ, ბარი არ არის ტოლი null იმიტომ, რომ ეს მაჩვენებელი. ამის შემდეგ მივიღებთ სიმებიანი ხანგრძლივობა ბარი. ჩვენ დარწმუნებული ვართ, რომ ეს ნაკლები ან ტოლია 12. და მერე იმიტომ, რომ ჩვენ დარწმუნებული ვარ, ჩვენ შეგვიძლია რეალურად memcpy და დარწმუნებული უნდა იყოს, რომ კარგადაა. ნებისმიერი კითხვები? შესანიშნავი. მე მაქვს ორი ჭეშმარიტი ან ცრუ შეკითხვებს. შეუძლია ვინმეს მეუბნებოდა დაუყოვნებლივ თუ ეს მართალია თუ ტყუილი? დიახ, ეს სიცრუეა. ზუსტად. ორივე მათგანი ყალბი. ასე გამოყენებით ერთი პაროლი არასოდეს არ არის კარგი იდეა იმიტომ, რომ თუ ვინმე იცის თქვენი პაროლი, მათ შეუძლიათ მხოლოდ შეამოწმონ ყველა თქვენი სხვა ანგარიშებზე. და მაშინ ხატები არაფრის გაკეთება არ უსაფრთხოების უზრუნველსაყოფად. ჩვენ უნდა ჩვეულებრივ ვეძებოთ HTTPS ნაცვლად HTTP და URL. და სხვა სახის თავდასხმები, რომ ჩვენ აღვნიშნეთ, რომ დავით აღნიშნა ლექცია, SQL ინექცია თავდასხმები. ჩვენ უკვე ვნახეთ, რომ, თუ ჩვენ don't-- CS50 შეკითხვის ფუნქცია ხდის დარწმუნებულია, რომ SQL ინექცია თავდასხმები ვერ მოხდება. მაგრამ, თუ ჩვენ არ იყენებთ CS50, ციტირებით unquote "შეკითხვაზე," ჩვენ უნდა დავრწმუნდეთ, რომ მომხმარებლის შეყვანის არ არის, ფაქტობრივად, ზოგიერთი SQL შეკითხვაზე, რომ გამოიწვევს ყველა ჩვენი მაგიდები უნდა დაეცა ან რაღაც ცუდი მოხდეს ჩვენს მონაცემთა ბაზაში. სხდომის გატაცების არის სხვა ტიპის თავდასხმა რომ ხდება, როდესაც რაღაც ცუდი პირი იყენებს ზოგიერთი მსხვერპლი სხდომაზე ID წვდომისათვის ინფორმაცია. ასე რომ, ძალიან ტრივიალური მაგალითი, რომელიც ასე, თუ ჩვენ გვაქვს საჯარო კომპიუტერი, მაშინ ცუდი ადამიანს ჟურნალი და შემდეგ მათ აქვთ cookies, გადაარჩინა. და ნაჭდევები არ შეიცვლება სხდომაზე. მაშინ ჩვენ მსხვერპლი წავიდეს და შემდეგ შეხვიდეთ საიტზე. Cookies, არ იცვლება გარკვეული სხდომაზე. და მაშინ მსხვერპლი ჟურნალები შევიდა ნახვა და შემდეგ ტოვებს. და მაშინ პირი, რომელიც მიდის უკან შემდეგ შეგიძლიათ კვლავ გამოიყენოთ მათი სხდომაზე ID წვდომის მათი ინფორმაცია. ასე რომ, ერთ-ერთი მაგალითია როგორ შეიძლება მოხდეს. და მაშინ მე არ ინერვიულოთ ძალიან ბევრი შესახებ კონკრეტული კოდი ან არაფერი როგორც, რომ, რომელიც შეიძლება გამოიწვიოს ამ, მაგრამ აქვს გარკვეული იდეა რა ცვლადები ჩართული ამ არიან. და მაშინ მანიპულირების header მონაცემები სხვა ტიპის თავდასხმა რომ აქვს დავით ისაუბრა. და ეს მხოლოდ ეხება რა შეიძლება მოხდეს, როდესაც საპასუხოდ, HTTP პასუხი შიგნით ჩვენი header არ არის შერაცხული სწორად. და ნებისმიერ სფეროებში, მაგალითად, თუ ვინმე overwrites ერთი header ღირებულებები უნდა შეიცავდეს არაფერი მეტი რა უნდა contain-- და რეალურად შეიცავდეს, მაგალითად, 200 OK სტატუსის კოდი, შემდეგ კი შესაძლოა ამის მუქარის რამ, როდესაც ისინი არ უნდა. თუმცა, მე არ ინერვიულოთ ძალიან ბევრი კონკრეტული კოდი რომელიც შეიძლება გამოიწვიოს ამ, მხოლოდ ერთგვარი გაგება მაღალი დონის რამ, როგორიცაა, რომ. მე ვფიქრობ, რომ ეს არის ყველა რომ ჩვენ უნდა დაფაროს. საოცარი. ვინმეს აქვს რაიმე კითხვები ნებისმიერი ერთი რამ, რომ ჩვენ დაფარული? დიახ. აუდიტორია: ასე რომ ერთი სახის უფრო ლოგისტიკური კითხვა. შინაარსი ძირითადად ორიენტირებულია რამ შემდეგ Quiz 1? MARIA ZLATKOVA: ასე რომ, კითხვა, შინაარსი ძირითადად, რამ შემდეგ Quiz 1? ასე რომ, ყურადღება გამახვილებულია შემდეგ ვიქტორინა 1, გარდა რომ ჩვენ უნდა ფოკუსირება რამ pset5 და ბევრი მონაცემები სტრუქტურების რომ ჩვენ დაფარული. და ჩვენ არ შეგვიძლია ვთქვათ, რომ ჩვენ შეგიძლიათ იგნორირება არაფერი ადრე რომ, რადგან იგი აშენებს მასზე, ისევე. ასე რომ ფოკუსირება რომ, პლუს pset5 მასალა მოსწონს, მათ შორის დაკავშირებული სიები, stacks, რიგები და ყველაფერი რომ ხანა წავიდა. HANNAH BLUMBERG: მარჯვენა. ჰო, ჩვენ წავიდა ყველა C პერსონალი თავიდანვე ძალიან სწრაფად. მაგრამ დარწმუნდით, გადახედოს რომ. უკან და უყუროთ ვიქტორინა 0 მიმოხილვა. რამდენიმე ლოგისტიკური აღნიშნავს, მხოლოდ მაშინ, როდესაც ჩვენ გვაქვს თქვენი ყურადღება. ჩვენ ვაპირებთ, რომ საათებში როგორც ორშაბათს და სამშაბათს ღამით. ისინი აპირებენ იყოს MD 119. ეს არის ყველა იმ საიტზე, ასე რომ თუ არ გვესმის, რომ ეს, არ აწუხებს. MARIA ZLATKOVA: 8:30 11:00. HANNAH BLUMBERG: ჰო, 8:30 11:00. ჩვენ ვიქნებით იქ. ჩვენ ვიქნებით იქ უპასუხოს კითხვებს. ეს არის საკმაოდ chill და სახალისო. შენ შეიძლება ვთხოვო შეკითხვები რომ თქვენ გაქვთ ვიქტორინა 1. და ინტელექტუალური 1 არის ოთხშაბათი, ასე რომ წარმატებას. თუ თქვენ გაქვთ რაიმე შეკითხვები, შესაძლოა, მოდის განხილვა ჩვენთვის აქ ერთ-ერთი. ზემოთ. დიდი მადლობა. MARIA ZLATKOVA: მადლობა იმდენად, ბიჭები. აუდიტორია: Yay. [ტაში]