>> R.J. Aquino: მოდით უბრალოდ დავიწყოთ.
ასე რომ, ეს Quiz 1.
აქ არის რამდენიმე მაღალი დონის ინფორმაციას.
მომხმარებლის გვერდი ვიქტორინა არის ამ URL აღარ CS50.net, მიუხედავად იმისა, რომ
კვლავ მუშაობა.
ეს CS50.harvard.edu/quizzes/2013/1.
ეს არის დიდი შესახებ გვერდზე, გეუბნებოდით სად და როდის, კერძოდ, მომავალ ოთხშაბათს
in a bunch of ოთახი.
და მომავალ ოთხშაბათს, I ნიშნავს, ორი დღის შემდეგ.
ეს ყველაფერი არსებობს.
მაგრამ ის აგრძელებს.
>> ასე რომ, ყველაფერი პირველ ნახევარში წელი პოტენციურად on ვიქტორინა,
რადგან ვერ ნამდვილად მოწინავე რამ C გარეშე, თუ პირობები და
მარყუჟების და ასე შემდეგ.
მაგრამ არ იქნება აქცენტი მასალა დაფარული, რადგან Quiz 0,
დაწყებული structs და ფაილი I / O. ეს, როგორც წესი მეტი
რთული, ვიდრე Quiz 0.
საშუალო ქულა, როგორც წესი, დაბალია.
ისწავლოთ.
>> ხოლო თქვენ სწავლობს, რა თქმა უნდა გამოიყენოს CS50/discuss განათავსოთ თქვენი კითხვები
და წაიკითხეთ სხვა ადამიანების შეკითხვებს.
ასე რომ, თუ თქვენ არ გაქვთ რაიმე შეკითხვები, შედით და წაიკითხეთ
თქვენი მეგობრების შეკითხვებს.
ისინი ალბათ კარგი შეკითხვა.
და მიიღოს პრაქტიკა ტესტებში.
ჩვენ ვაძლევთ ტესტებში შვიდი ან რვა წელია.
ისინი ყველა ონლაინ რეჟიმში.
მომავალი კითხვები მსგავსი ძველი შეკითხვებს.
სწორედ ასე, რათა მათ.
>> ვიქტორინა ჯერ არ არსებობს.
არცერთ ჩვენგანს არ უნახავს იგი.
მაგრამ ეს ჰგავს წინა ვიქტორინებში.
ამ საანგარიშო სხდომამდე, ეს არ არის ამომწურავ ჩამონათვალს თემებზე.
თქვენ არ შეგიძლიათ უბრალოდ დასწრება და შემდეგ იყოს იდეალურად მზად ვიქტორინა.
წინააღმდეგ შემთხვევაში, ეს არ იქნება რომ ბევრი ვიქტორინა.
და ეს ასევე არ არის აუცილებელი, ყველაფერი თქვენ უნდა იცოდეთ შესახებ ნებისმიერი
მოცემულ თემაზე.
ეს ნიშნავს, რომ გამოამჟღავნონ თქვენ რამ ჩვენ დაფარული, შეგახსენოთ, რასაც ჩვენ
დაფარული, და გზა რომელიც ჩვენ დაფარული იგი.
მაგრამ თქვენ უნდა წასვლა შემდგომი და ღრმა, როდესაც თქვენ შესწავლა გადამოწმების
რომ თქვენ იცით, ყველაფერი ნებისმიერ თემა და რომ თქვენ შევსებული
ყველა კუთხეში რომ იყო დაფარული ლექცია.
>> ვიქტორინა შენიშვნები გითხრათ წასვლა მწიგნობარი აღნიშნავს, watch ლექცია videos.
ეს არის კარგი გზა, რათა დავრწმუნდეთ, თქვენ დაფარული ყველა თქვენი ბაზები.
ასე რომ ნაცნობობა, როდესაც მე მივიღე ეს სლაიდები, მე ვცდილობდი, სადაც აღმოვაჩინე
ინფორმაციას.
ასე რომ, ფაილის I / O, მაგალითად, კვირას, 7, ორშაბათი ლექცია და გამოქვეყნებული
ნაწილი 6 და პრობლემა Set ყველას გვაქვს ინფორმაცია ფაილის I / O. მე ვაკეთებ
ამ ყველა თემა.
ასე რომ იმ სათაური სლაიდები შეუძლია სასარგებლო იქნება თქვენთვის.
>> ასე რომ აქ გვაქვს ფაილის I / O. გახსოვდეთ, პრობლემა მითითებული 5, ჩვენ fopen, fclose,
fwrite, fread და fseek.
რომელმაც ამოღებული 30ish JPEGs და რომელმაც resized და არევა ერთად
bitmaps, თქვენ უნდა იყოს საკმაოდ ნაცნობი ამ ფუნქციების
და როგორ მუშაობს.
თუ თქვენ უკვე აღარ იცნობს, აუცილებლად განიხილავს მათ.
და დარწმუნდით გესმით რა სხვადასხვა არგუმენტები,
როდესაც ისინი გამოიყენება.
>> მაგრამ საერთო ფაილის დაკავშირებული შეცდომები თქვენ შეიძლება სთხოვა შესახებ -
ასევე, თუ თქვენ მივიწყებული რათა შეამოწმოთ, თუ fopen რეალურად მუშაობდა სანამ წასვლა
ცვლილებები ფაილი.
ეს შეიძლება იყოს ცუდი.
თუ თქვენ დაავიწყდა fclose ფაილი რომ თქვენ fopened, რომ მსგავსი
მეხსიერების გაჟონვის.
ეს არის საკმაოდ ცუდი.
და ავიწყდება, რომ შეამოწმოთ, თუ თქვენ მიაღწია ფაილის ბოლოში, სანამ
დაიწყოს წერა მას.
>> ასე რომ, თუ ამბობენ, hey, მე დროს ბოლოს ფაილი.
მომეცი 5 bytes.
ისე, რომ ალბათ არ აპირებს შეიმუშაოს გზა თქვენ მოველით.
რომ მართლაც ეს ფაილი I / O, იმიტომ, რომ ჩვენ გავაკეთეთ იმდენად, რამდენადაც იგი
პრობლემა შეიქმნა.
ასე რომ, თუ მიხვდა, რა ხდებოდა პრობლემების Set 5, მახსოვს bitmats
და JPEGs, მაშინ თქვენ ალბათ ყველა მითითებული ფაილის I / O. იმ შემთხვევაში, თუ რომ ცოტა
საეჭვო, აუცილებლად განიხილავს, რომ პრობლემა მითითებული და მასთან დაკავშირებული მასალა.
>> Structs იყო თემა რომ იყო ხაზს Quiz 0 Quiz 1.
არ საკმაოდ მიიღოს cut Quiz 0.
ასე რომ, ისინი აუცილებლად Quiz 1, კვირა 7 ორშაბათი.
რა არის struct?
აქ ნახოთ struct.
ეს იგივეა, ახალი ტიპის.
ეს იგივეა, კონტეინერი მრავალჯერადი სფეროებში.
>> ამ შემთხვევაში, ჩვენ განაცხადა struct სტუდენტი, რომელსაც აქვს ორი სფეროებში -
სიმებიანი რომ ჩვენ უწოდა სახელი და int, რომ ჩვენ მოუწოდებდა ასაკში.
ასე რომ, როდესაც მე გაივლის გარშემო სტუდენტებისთვის ან მე ცვლილებები სტუდენტები, მე გექნებათ
წვდომის მათი სახელი და მათი ასაკი.
მოდით შევხედოთ ზოგიერთი კოდი რომ.
აქ ჩვენ ვხედავთ, რომ მე განაცხადა, სტუდენტური s, ისევე,
ვაცხადებ, ნებისმიერი ცვლადი -
int x, int y, et cetera.
>> აი student s.
იგი იწყებს არაფერი თავის სფეროებში.
მოდით მათი.
თქვენ სფეროებში struct ერთად dot.
ასე რომ, მე განაცხადა, რომ s.name = RJ.
და s.age = 21.
თქვენ ასევე შეგიძლიათ განაახლოთ სფეროებში ისევე, ნეტავ განახლება
ღირებულება ცვლადი.
ამიტომ მინდა, რომ შევცვალო ჩემი სახელი RJ ერთად არ პერიოდები R.J. ჩაწერეთ
სწორი გზა.
ეს იქნებოდა s.name = RJ, იგივე როგორც ჩვენ განაცხადა, რომ თავდაპირველად.
და შემდეგ თქვენ შეგიძლიათ თქვათ მათ შესახებ.
>> ასე რომ, ჩვენ მათი.
ჩვენ განახლება მათ.
თქვენ ასევე შეგიძლიათ შეღწევის ძალიან იგივე გზით.
ასე რომ, აქ, მე დაბეჭდვისას R.J. არის 21 წლის.
და მე წვდომის იმ ღირებულებებს ერთად s.name და s.age.
ასე რომ წვდომის structs ერთად dot ნოტაცია.
Yep, ეჭვქვეშ?
>> აუდიტორია: არის მიზეზი წინა slide, რომ თქვენ არ დააყენა
სტუდენტი ზედა ხაზი, როგორც typedef struct სტუდენტი და შემდეგ
სტუდენტი დასასრულს?
>> R.J. Aquino: ასე რომ კითხვა იყო, ამ slide, ჩვენ, როგორც წესი, ჩანს,
typedef struct კვანძის და შემდეგ სფეროში struct და
მაშინ სიტყვა კვანძში.
და როგორ მოვა აქ მე არ მითქვამს, typedef struct სტუდენტი და შემდეგ
სფეროში struct და შემდეგ სტუდენტი?
ამის მიზეზი ის არის, რომ მე არ უნდა ვებგვერდზე შიგნით struct.
ასე რომ OK რომ დატოვოთ გარეშე სახელწოდება.
მე შემიძლია უბრალოდ დატოვონ, როგორც ანონიმური struct.
>> მიზეზი ჩვენ ამას უკავშირდება სიები და რამ არის, რადგან შიგნით გჭირდებათ
მითითებას struct კვანძების ვარსკვლავი.
ამიტომ struct აქვს სახელი, ასე რომ თქვენ შეგიძლიათ იგი მოგვიანებით.
ეს უმნიშვნელო დეტალი.
მაგრამ თქვენ, როგორც წესი, ვხედავთ typedef struct curly აფრთხილებს, თუ თქვენ არ გვჭირდება
სახელი და typedef struct ზოგიერთი სახელი მოყვება curly აფრთხილებს თუ გნებავთ
გვჭირდება სახელი.
ასე რომ, კარგი კითხვაა.
>> და იმ ეტაპზე, ჩვენ, როგორც წესი, ცვლილებები structs და გაიაროს გარშემო structs მიერ
მითითებას, არ ღირებულება.
ასე რომ ჩვენ უბრალოდ გაივლის დაახლოებით მითითებას structs ნაცვლად გავლით გარშემო
structs თავს.
ასე რომ თქვენ ძალიან ხშირად იქნება გამოყენებით, ამ შემთხვევაში, სტუდენტის * ან
struct კვანძის * ან კვანძის * ნაცვლად out სტუდენტებს ან კვანძების.
ასე რომ აქ, მე განაცხადა, OK, ცვლადი Ptr იქნება მისამართი s.
ეს იქნება მაჩვენებელი სტუდენტი R.J.
>> ასე რომ ჩვენ შეგვიძლია მივიღოთ იმ სფეროებში იგივე, რაც ჩვენ კიდევ არაფერი.
პირველი, ID მითითებას მაჩვენებელი მიიღოს struct.
ეს არის ის, * Ptr და შემდეგ dot და შემდეგ ასაკის.
ასე რომ წვდომის ველი, და მე განახლება ეს არის 22, რადგან, მოდით
ვთქვათ, რომ ეს იყო ჩემი დაბადების დღე.
არსებობს კომბინაცია სინტაქსი გამოყენებით arrow აქ.
ასე Ptr arrow ასაკი არის მხოლოდ იგივე როგორც * ptr.age.
ახლა, რომ რაღაც თქვენ უნდა გვემახსოვრება და მახსოვს.
>> თქვენ გამოიყენება მას ბევრი pset6, speller pset.
მაგრამ ეს არის რეალურად რა ხდება ქვეშ hood.
ეს dereferencing მაჩვენებელი და შემდეგ წვდომის იგი.
კითხვა?
>> აუდიტორია: [INAUDIBLE].
>> R.J. Aquino: ასე რატომ ვართ გამოყენებით პოინტერები როგორც structs ნაცვლად
structs თავად?
მიზეზი იქნება, თუ თქვენ გავლით struct ფუნქცია, ალბათ,
სურთ გაიარონ გარშემო მხოლოდ 4 ან იმდენად bytes რომელიც წარმოადგენს მაჩვენებელი, როგორც
ეწინააღმდეგებოდა პოტენციურად 30 ან 40 ბაიტი, რომლებიც struct.
ასე ახერხებდნენ რაღაც ფუნქცია ადვილია, როდესაც ის
არის პატარა მოკლე.
კითხვა?
>> აუდიტორია: თქვენ შეიძლება არ აღინიშნოს ამ დასაწყისში, მაგრამ არსებობს
სხვა სლაიდები up on [INAUDIBLE]?
>> R.J. Aquino: ეს სლაიდები იქნება მას შემდეგ, რაც განხილვის სხდომაზე.
ჩვენ პოსტი მათ შესახებ.
ასე რომ, მოძრავი და მოძრავი ოდნავ სწრაფად, ჩვენ ვაპირებთ ვისაუბროთ მონაცემები
სტრუქტურებში.
არსებობს ბევრი.
ჩვენ დაფარული bunch of მათ.
აი რა უნდა გაიგოს მონაცემთა სტრუქტურა.
>> თქვენ უნდა ნამდვილად მესმის მაღალ გახდება რა თითოეული სტრუქტურა.
ახსნით ინგლისურ თქვენი მეგობარს, რომ არ მიუღია CS50 როგორ
ჩვენ ორგანიზება ჩვენი მონაცემებით და ამიტომ მინდა გამოყენებით რაღაც ამ გზით?
ეს არის ის, რაც ერთი.
Thing ორი, მესმის, განხორციელება.
ასე რომ, თუ როგორ უნდა გამოიყენოთ ეს ყველაფერი in C. და ჩვენ უნდა აპირებს ამ.
>> და შემდეგ, რაც სამი იქნება ვიცი აწარმოებს ჯერ და შეზღუდვები
სხვადასხვა სტრუქტურების თქვენ იყენებთ.
ასე რომ, გასაგებია, თუ რატომ გსურთ გამოიყენოთ hash მაგიდასთან ნაცვლად მასივი.
მესმის, როგორ სწრაფად, საშუალოდ, წვდომის hash table არის.
გაგება, თუ რა ოპერაციები სწრაფი დაკავშირებული სიაში, მაგრამ ნელი on კოლექტორები და
პირიქით.
ასე რომ, უნდა გვესმოდეს, რომ, თქვენ უნდა მესმის Big-O notation უბრალოდ ვიცი
როგორ გაიგო ამ სახის რამ.
და ჩვენ ვსაუბრობთ, რომ.
>> ასე რომ, პირველი, რაც, დაკავშირებული სიები.
აქ არის მაღალი დონის სურათზე საქართველოს უკავშირდება სიაში.
ჩვენ დავანახოთ ამ კლასში.
ჩვენ, როგორც წესი, 10 ადამიანი იდგა სცენაზე.
მაგრამ ჩვენ გვაქვს მთელი რიგი კვანძების, სადაც თითოეული კვანძის აქვს გარკვეული მნიშვნელობა და მომცეთ
მისი მომავალი ღირებულება.
ასე რომ კიდევ ერთი კვანძის შემდეგ, თქვენ უბრალოდ ვთქვა, მომეცი შემდეგი კვანძში.
თქვენ გაქვთ, რომ კვანძის.
მომეცი მომდევნო კვანძის.
თქვენ გაქვთ, რომ კვანძის.
მომეცი შემდეგი კვანძის და ა.შ. სანამ არ არსებობს კვანძის მარცხენა.
>> ასე რომ, კვლავაც ვისაუბროთ ის მაღალ დონეზე.
ძალიან ადვილია ჩადეთ რამ შევიდა უკავშირდება სიაში.
თუ არ აინტერესებს მიზნით, შეგიძლიათ უბრალოდ ჩამოაგდეს ის
მარჯვენა დასაწყისში.
რომ არის მუდმივი დრო.
მაგრამ ეს უჭირს ღირებულება.
თუ თქვენ ცდილობთ ვთხოვო, შვიდი ჩემს სიაში?
თქვენ უნდა გაიაროს თითოეული ღირებულება.
ეს არის შვიდი?
უსასრულოდ.
და რომ O (N).
ასე რომ, როდესაც სწავლობს ვიქტორინა, შევადარებთ ამ მასივები.
>> ის არის, რომ OK?
განათება წავიდა dim.
OK.
როდესაც არის დაკავშირებული სიაში უკეთესი?
როდესაც არის მასივი უკეთესი?
მოდით შევხედოთ ზოგიერთი კოდი.
აქ არის პოტენციური კვანძში.
ის struct.
მას აქვს int n, რომელიც იქნება ჩვენი ღირებულება.
და მას აქვს struct კვანძის * შემდეგი, რომელიც ჩვენი მომცეთ შემდეგი კვანძში.
ასე რომ აქ, ჩვენ ვხედავთ, რომ ჩვენ მოხდა არ დააყენა int ჩვენი კვანძში.
მაგრამ თუ ეს იყო უკავშირდება სიაში char ვარსკვლავს ან უკავშირდება სიაში მოძრავი, ჩვენ
სრულიად შეგვიძლია გავაკეთოთ, რომ ძალიან.
>> მახსოვს pset6, ალბათ, ჰქონდა უკავშირდება სიაში char ვარსკვლავი, ან უბრალოდ
სტატიკური char მასივები.
მოდით შევხედოთ აქ ოპერაცია.
ამიტომ ჩვენ გვინდა ჩადეთ ახალი n ჩვენს უკავშირდება სიაში.
ჩვენ ვიწყებთ out ხელმძღვანელი მაჩვენებელი, რომელიც არის მომცეთ ამ კვანძის რომ აქვს
ღირებულება n და უახლოესი მაჩვენებელი, რაოდენობა ამ კვანძის არის ღირებულება
n და უახლოესი null, რადგან ეს ბოლო კვანძი.
ასე რომ ინტერესი დროს, მე დააყენა ყველა კოდი ეკრანზე.
და ჩვენ გავლა იგი რამდენიმე ხაზები დროს.
>> ასე რომ აქ კოდი.
იმედი მაქვს, რომ იკითხება.
პირველი, რაც ჩვენ გავაკეთოთ არის ჩვენ malloc ახალი კვანძის.
ასე რომ, რაც მომცეთ ახალი კვანძში, რომ არ აქვს საკმაოდ არაფერს მითითებული
up in ამაზე.
ჩვენ შეამოწმოს დავრწმუნდეთ, რომ ახალი კვანძის არ null.
წინააღმდეგ შემთხვევაში, ჩვენ უნდა დათმოს.
ასე რომ, რაც შემოწმდება, რომ, ახლა ჩვენ მითითებული ღირებულებების კვანძში.
ასე რომ, ჩვენ დააყენა new n ჩვენს n სფეროში.
და ჩვენ დავსახეთ მომავალი მომცეთ აღვნიშნო, რომ ორიგინალური ხელმძღვანელი, ასე, რომ ჩვენ შეგვიძლია
ახლა არ დევს ამ კვანძის ჩვენს სიაში.
>> და ბოლოს, ჩვენ გვაქვს გლობალური ხელმძღვანელი წერტილი ჩვენი ახალი კვანძის, ასე რომ თუ ჩვენ
იწყება ხელმძღვანელი, ვიქნებოდით ამ ახალი პირველი კვანძის ნაცვლად
წლის პირველ კვანძში.
და როდესაც ამ ფუნქციის გასასვლელების, ცვლადი ახალი კვანძის აღარ არსებობს,
რადგან ეს იყო ადგილობრივი ფუნქცია.
ასე რომ, ეს არის სახელმწიფო მსოფლიოში.
ჩვენი გლობალური ხელმძღვანელი მიუთითებს ჩვენი ახალი პირველი კვანძი, რომელიც მიუთითებს ჩვენი
ორიგინალური პირველი კვანძი, რომელიც რაოდენობა კვანძის ამის შემდეგ.
>> ეს იყო ჩანართი.
იმედი მაქვს, რომ შედარებით პირდაპირი დაიცვას.
როდესაც ეჭვი, მიაპყროს სურათი.
ასე რომ, მე რომ ვსაუბრობთ დაკავშირებული სიები და ეძებს
კოდი არის ძალიან არ არის გამოსადეგი.
ვინაიდან ეძებს სურათს უკავშირდება სიაში საშუალებას ჩემთვის ვფიქრობ, oh, ისე
მე ამ კვანძის აქ.
მაგრამ თუ მე განაახლოთ რომ მომცეთ, იგი მთავრდება გათიშული.
და მე დავიწყებული, სადაც კვანძის მიდის.
და კოდი ითიშება.
და თქვენ გაქვთ მრავალჯერადი კვანძების რომ გათიშული.
და თქვენ არ დასრულდება up ერთად სიაში გსურთ.
>> ასე რომ, თუ თქვენ მიაპყროს სურათს და ამის ეტაპობრივად, იმედია, თქვენ ნახავთ
თანმიმდევრობები რამ თვალსაზრისით განახლების მითითებას დარწმუნდით
რომ სიაში მოდის ერთად.
Insert შედარებით მარტივია.
უფრო რთული იქნება ჩასმის შევიდა დახარისხებული სია.
უფრო რთული ფუნქცია წაშლა და იპოვოს, ასე რომ გადახედეთ სია
ვნახოთ, თუ რაიმე არსებობს.
ალბათ თქვენ გააკეთეთ ამ pset6 როდესაც თქვენ შევიდა თქვენი hash მაგიდა და განაცხადა,
ასევე, არის სიტყვა ვაშლის ჩემი უკავშირდება სიაში?
>> ასე რომ თქვენ შეიძლება უკვე გაკეთდა ეს.
მაგრამ ნამდვილად, განახლების თქვენი მეხსიერება და ცდილობენ reimplement იპოვოს და
reimplement წაშლა განთავსების უკავშირდება სიაში.
გართობა მინიშნება, ასევე ორმაგად დაკავშირებული სიები, სადაც თქვენ უნდა
მითითებას, რომ აღვნიშნო ორივე წინ და უკან, ასე რომ თქვენ შეიძლება წავიდეთ
მომდევნო კვანძის და წინა კვანძში.
და იქ იყო საკითხი გასული წლის ვიქტორინა ამ ტიპის საუბარი
შესახებ ორმაგად დაკავშირებული სიებში.
>> ახლა, რომ სტრუქტურა, რომელიც თქვენ შედარებით იცნობს, რადგან ყველაზე
თქვენ ალბათ გამოიყენება მათ pset6.
აი ერთი რომ ცოტა ნაკლებად იცნობს.
როგორც მინიშნება, მე ვფიქრობ, რომ Quiz 1 პირველ რიგში, უფრო მეტი Quiz 0, იმიტომ,
პერსონალის თქვენ აკეთებთ, თქვენ არ კეთდება იმდენი.
იმისათვის, რომ კიდევ ერთი გზა, Quiz 0, თქვენ მიერ დაწერილი ბევრი C. და ჩვენ
გთხოვეთ შესახებ C.
>> განთავსების Quiz 1, ჩვენ ვაპირებთ გკითხოთ PHP და JavaScript, რომელიც თქვენ
არ წერია იმდენი.
ჩვენ ვაპირებთ გკითხოთ C-კოდი, რომელიც თქვენ არ წერია იმდენი,
ეს მოწინავე C პერსონალი.
ასე რომ, ნამდვილად, პრაქტიკაში პერსონალის ჩვენ ისაუბრა ლექცია, რომ თქვენ
არ აუცილებლად გავაკეთებთ, პრობლემა შეიქმნა.
>> საუბრის დროს, რომელიც, თქვენ არ წერია დასტის on პრობლემა მითითებული.
მაგრამ ეს იყო ლექცია.
აი მაღალი დონის სურათს stacks, რომ ნახოთ ყოველწლიურად.
ის დასტის ქაღალდის Mather სასადილოს.
მაღალ დონეზე, stacks არის ბოლო , პირველი გარეთ მონაცემთა სტრუქტურას.
ეს ნიშნავს, რომ თქვენ აპირებს დააყენოს რამ -
1, 3, 7, 12, 14, ნეგატიური 0.
ერთი რამ მე არ შეიძლება განაცხადა, - უარყოფითი 3 0.
თქვენ დააყენა ეს ყველაფერი შემოსული
და ბოლოს ერთი თქვენ დააყენა პირველი ერთი, რომ აპირებს გამოვიდეს.
>> ასე რომ, თქვენ გაქვთ ორი ოპერაციები -
ბიძგი და საესტრადო.
ყველა აყენებს, რომ მე ვიყავი gesturing მოსწონს ეს არის ბიძგი.
და მაშინ, როდესაც მე მიაღწიოს, რათა დაიბრუნოს რაღაც ან მიაღწიოს თავზე უნდა დაიბრუნოს
რაღაც, რომ პოპ.
ამიტომ, ჩვენ ვაპირებთ განახორციელოს stacks.
და ჩვენ აჩვენა, ლექცია გამოყენებით მასივები.
მაგრამ თქვენ შეიძლება გავაკეთოთ მათ გამოყენებით დაკავშირებული სიები.
დასტის არის კონცეპტუალური მონაცემები სტრუქტურა, არ მომწონს
განხორციელების კონკრეტული ერთი.
>> ასე რომ, რა იქნებოდა, რომ გამოიყურებოდეს?
იგი გამოიყურება სახის მოსწონს ეს.
ნეტავ მთელი ზომა.
და ნეტავ მასივი ღირებულებები, ჩვენ მოუწოდებდა ქაღალდის, იმიტომ, რომ
რა სურათზე იყო us - int ქაღალდის -
და შემდეგ რამდენიმე მაქსიმალური რაოდენობა.
ასე რომ, რა დააყენებს ჰგავს?
ისე, თუ ჩვენ დასტის s, მაშინ დააყენებს რაღაც გადატანა s, ჩვენ კიდევ
ზომა s.
და ეს იქნება მომავალი ღია ადგილზე ჩვენი მასივი.
ასე რომ, თუ ჩვენ გვაქვს სამი რამ ჩვენი დასტის, შემდეგ ქაღალდის 3 იქნება შემდეგი
ღია ადგილზე, რადგან 0, 1 და 2 უკვე შეივსო.
>> ამიტომ, ჩვენ დააყენა ღირებულება შევიდა s.trays [s.size], მესამე ადგილზე.
და მაშინ ჩვენ ნამატი s.size ვთქვა, hey, ჩვენ გვქონდა სამი რამ ადრე.
ახლა, ჩვენ გვაქვს ოთხი.
ასე რომ, მომავალი დრო თქვენ დააყენებს, თქვენ აპირებს დააყენოს რაღაც 4.
ან მომავალი დრო თქვენ პოპ, თქვენ აპირებს შევხედოთ 3 ნაცვლად 4 ან რასაც.
და მაშინ ჩვენ დაბრუნებას ჭეშმარიტი ვთქვათ, hey, ჩვენ მოვახერხეთ.
ეს მუშაობდა.
როგორც წესი thumb, თუ ფუნქცია, რომ უნდა დაბრუნდეს ჭეშმარიტი ან
ცრუ ყოველთვის ბრუნდება ნამდვილი, შეგიძლიათ გავაკეთეთ რაღაც.
ასე რომ ჯერ ეს სამუშაო?
>> ისე, ეს მუშაობს ჯარიმა 1 და 2, 3 და 4, და ხუთ.
მაგრამ ვთქვათ მე მიაღწიოს გავეცი.
მე მაშინ გადაეყარონ პრობლემა, იმიტომ, რომ თუ ზომა არის იგივე როგორც მოცულობა, მე ვარ
ახლა ცდილობს, რომ რაღაც შევიდა მასივი, სადაც მე არ მაქვს სივრცე.
ასე რომ, მოკლე გამშვები დაფიქსირება ამ.
იმ შემთხვევაში, თუ s.size == მოცულობა, დაბრუნების ცრუ.
წინააღმდეგ შემთხვევაში, წავიდეთ და რა გავაკეთეთ.
ასე რომ, რა შეიძლება ჩვენ ვთხოვთ შესახებ განთავსების stacks?
რა უნდა ისწავლოთ?
რა უნდა თქვენ პრაქტიკაში?
>> ასევე, ახორციელებს პოპ.
ჩვენ უკვე გააკეთა ბიძგი.
მე დაფიქსირება, რომ.
არასამთავრობო მასივი განხორციელებას, სადაც თქვენ იყენებთ უკავშირდება სიაში, ალბათ.
არასამთავრობო int განხორციელება.
ჩვენ გავაკეთეთ ints აქ.
მაგრამ ეს შეიძლებოდა ყოფილიყო მოძრავი.
I იქნებოდა სტრიქონები.
ეს შეიძლებოდა ყოფილიყო char ვარსკვლავი.
შეხედეთ წარსულში ტესტებში სახის კითხვებით ჩვენ კითხვაზე stacks.
>> მე ვიტყვი, რომ ჩვენ დაფარული stacks გარშემო იგივე, რაც ჩვენ დაფარული მათ
წელი წარსულში.
ასე რომ, ინტელექტუალური კითხვები უნდა იყოს კარგი მითითებით.
წინსვლის უფრო სწრაფად, რიგები.
ისინი მოსწონს stacks.
მაგრამ ისინი პირველი, პირველი გარეთ.
თუ თქვენ დიდი ბრიტანეთის, სიტყვა მდგომ ალბათ, უამრავი გრძნობა თქვენ.
წინააღმდეგ შემთხვევაში, თქვენ შეიძლება ჰქონდეს გავიგე, რომ ეს ხაზი.
ისინი მუშაობენ, როგორც ონლაინ ზე Apple მაღაზიაში.
პირველი პირი გამოჩნდება 3:00 დილით პირველი
პირი, ყიდვა მისი iPad.
>> ასე რომ, ჩვენ გვაქვს ორი ოპერაციები -
enqueue და dequeue.
Enqueue აყენებს ვინმე ხაზი.
Dequeue pulls პირველი პირი off ხაზი.
კიდევ ერთხელ, ჩვენ შეიძლება განახორციელოს ამ მასივი.
რა არის struct ჩვენ აჩვენა ლექცია?
ეს იყო ამ ერთი.
ერთხელ, ნომრები.
ერთხელ, ზომა და ეს ახალი რამ წინ.
რატომ არის რაღაც მოუწოდა წინაშე?
ეს მაჩვენებელი მომდევნო ელემენტი dequeue.
უბრალოდ იძულებით შენახვა ტრეკზე პირველი ბიჭი რომ გამოჩნდება, ასე რომ ჩვენ
შეგიძლიათ გაიყვანოს იგი გარეთ, როდესაც ჩვენ გვჭირდება.
>> აუცილებლად შევხედოთ ლექცია შენიშვნები და ცდილობენ განახორციელოს enqueue და dequeue
როდესაც სწავლობს ვიქტორინა.
მნიშვნელოვანი რამ ფიქრი.
შესაფუთი გარშემო თუ წინა პლუს ზომა მთავრდება მეტია, ვიდრე მოცულობა.
ისევ და ისევ, თუ თქვენი სტრუქტურა სავსეა, თქვენ აპირებს აქვს პრობლემა.
Hash მაგიდები თქვენ მინახავს ადრე.
ყველაზე ალბათ განხორციელდა ამ თემაზე pset6.
ის სტრუქტურა, რომელიც მიზნად ისახავს განთავსების O (1) მუდმივი დრო Insertion და O (1)
მუდმივი დრო საძიებელი.
>> In CS50, ჩვენ განხორციელებული ეს მასივი უკავშირდება სიები.
ძირითადი კომპონენტი hash მაგიდა არის ქეშირების ფუნქცია.
ასე რომ, ეს აკონვერტებს თქვენი input, ვთქვათ, ლექსიკონი სიტყვა, შევიდა რიგი,
რომელიც იქნება ჩვენი ინდექსი.
და ჩვენ ვიყენებთ რომ ინდექსი ჩვენს მასივი.
ასე რომ აქ cute პატარა სურათი ეხლა study.50.net.
ჩვენ გადაყარეთ ყველა სიტყვა შევიდა ჩვენი ქეშირების ფუნქცია.
და ქეშირების ფუნქცია გვეუბნება სად უნდა დააყენოს ეს სიტყვები.
>> ეს არის ყველა დიდი მიწაზე, სადაც არსებობს მხოლოდ ერთი სიტყვა ყველა სლოტი.
მაგრამ, როგორც გახსოვთ pset6, არსებობს უფრო მეტი სიტყვა, ვიდრე სლოტი.
რა ხდება, როდესაც თქვენ მიიღეთ შეჯახება?
იმის ნაცვლად, რომ შენახვა ერთი მნიშვნელობა, ვთქვათ, hash table 3, თქვენ
შენახვის უკავშირდება სიაში.
და ა.შ. ნაცვლად, რომელმაც cantaloupe აქ, თქვენ ექნება დაკავშირებული სიაში,
სადაც პირველი კვანძის არის cantaloupe.
და მომდევნო კვანძის არის კატა.
და მესამე კვანძის არის შეჯახება, მოდით ამბობენ, იმიტომ, რომ ყველა ეს სიტყვა დაიწყოს
ერთად C.
>> ასე რომ ყველაზე მეტად თქვენ გააკეთეთ ეს pset6.
თუ თქვენ არ hash მაგიდა pset6 და თქვენ სცადა რაღაც
trie, აუცილებლად განიხილავს hash მაგიდები.
თუ ამის შესახებ pset6, აუცილებლად განიხილავს hash მაგიდები.
და თუ თქვენ ეს წელი pset6 და ეს არ შეიმუშავებს საკმაოდ სწორი და თქვენ
ჰქონდა ბევრი უბედურება ერთად, აუცილებლად განიხილავს hash მაგიდები.
ასე რომ გაკვეთილი ნამდვილად ნამდვილად განიხილავს hash მაგიდები.
>> დიდი უმცირესობის თქვენ სცადა out ცდილობს pset6.
მაღალი დონის სურათს.
ეს არის რაღაც მსგავსი, სადაც ყოველი კვანძის აქვს კომპლექტი ბავშვებისათვის, სადაც თითოეული
ბავშვის შეესაბამება წერილში.
და ყველა კვანძის ასევე ნათქვამია, hey, მე ვარ სიტყვა.
ასე რომ, ამ შემთხვევაში, სიტყვა მაქსველი, თუ თქვენ დაიცვას M, რათა, რათა
X-W-E-L-L და შემდეგ ეს კიდევ ერთი.
და თქვენ ამ სიმბოლო, delta, რომელიც ჩვენ ნიშნავდეს იმას ნიშნავს, რომ ეს არის სიტყვა.
ასე Maxwell არის სიტყვა.
ეს deltas არიან მასშტაბით ფიქსირდება რომელიც რამ სიტყვა და რომელიც
რამ არ არის.
>> ასე რომ, pset6, მონაცემები, ჩვენ ინახება ერთად ჩვენს ნებისმიერ კვანძების იყო "მე ვარ
სიტყვა ". და მაგარი რამ ლელო არის მათ დემონსტრირება Insertion და
საძიებელი in O (სიგრძეზე სიტყვა).
ასე რომ მხოლოდ მისაღებად მეშვეობით Maxwell, ეს M-A-X-W-E-L-L. ასე რომ, შვიდი ან რვა -
მე ვერ ითვლიან -
ნაბიჯები, რათა კიდევ ბოლომდე და შემოწმება რამ out.
ასე სწრაფად განხორციელების აქ.
Rob გაიარა უკავშირდება სიაში მისი postmortem.
ამიტომ შეამოწმეთ რომ.
უკაცრავად.
გაიარა trie თავის postmortem.
ამიტომ შეამოწმეთ რომ.
>> მაგრამ თქვენ ძირითადად თითოეული კვანძის აქვს 27 პოინტერები მომდევნო კვანძების და ერთი
ლოგიკური განთავსების ვარ სიტყვა.
შეამოწმეთ რობ postmortem როგორ ეს რეალურად ხორციელდება.
ჩვენი საბოლოო სტრუქტურა, ჩვენი ხეები და ორობითი ძებნა ხეები.
ასე რომ, ეძებს ამ, ეს იყო დაფარული ყველაზე ცოტა ხნის წინ Week 8, ორშაბათს.
ხე არის მსგავსი trie, გარდა თქვენ აუცილებელი არ არის 27 კვანძების at
თითოეული წერტილი.
და თქვენ არ გაქვთ ამ მონაცემთა ყოველ ნაბიჯი, რომელიც ნიშნავს თუ არა -
გზა არ აქვს.
ხოლო trie, გზა ზემოდან ბოლოში, მაქსველი, მნიშვნელოვანი იყო ჩვენთვის.
>> მაგრამ თითოეული კვანძის მრავლობითი ბავშვები, ალბათ.
ჩვენ კიდევ რამდენიმე ლექსიკა.
ხის ფესვი არის ძალიან ზევით.
და ვამბობთ, რომ ძალიან bottommost კვანძების, რომ არ გვაქვს
ბავშვები ფოთლები.
ასე რომ, როგორც trie, ხე სტრუქტურა კვანძების.
გავრცელებული ტიპის ხე, რომ ჩვენ ვაპირებთ ლაპარაკი არის ორობითი ხე, სადაც
თითოეული კვანძის აქვს ბავშვებს ან ერთი შვილი და ორი შვილი.
ასე რომ, ამ სურათს აქ არ არის ორობითი ხე, რადგან
კვანძის 3 სამი შვილი ჰყავს.
>> მაგრამ თუ ჩვენ იგნორირება იმ, დანარჩენი ეს არის ორობითი ხე, რადგან ეს
მეტყველებს იმაზე, რომ ქონება, რომელიც თითოეული კვანძის აქვს ნულოვანი, ერთი, ან ორი შვილი.
ასე როგორ შეიძლება გამოვთქვამთ ამ კოდი?
ჩვენ შეგვეძლო კვანძის სადაც თითოეული კვანძის აქვს მთელი შიგნით, ასევე
როგორც მომცეთ ხე მარცხენა და მომცეთ ხე
უფლება, ასე რომ, ორი შვილი.
როგორ არის ეს სასარგებლო?
ისე, თუ ჩვენ წესების შესახებ, სადაც ჩვენ მა კვანძების, ჩვენ შეგვიძლია ძებნის სწრაფად.
>> ასე რომ კონცეფცია ორობითი ძებნა ხე, სადაც ყველა კვანძების შესახებ
მარცხენა subtree აქვს პატარა ღირებულება გარდა კვანძის ჩვენ შევხედავთ.
და ყველა კვანძების მარჯვენა subtree აქვს დიდი მნიშვნელობა
ვიდრე root node.
ახლა, რომ ჰგავს ბევრი სიტყვა.
მე ვაპირებ დააყენა შიგნით ორმაგი შეთავაზებები და გიჩვენებთ სურათს.
ასე რომ, აქ არის მაგალითი ორობითი ძებნა ხე.
ვხედავთ, რომ ჩვენ დავიწყებთ 10.
იმისათვის, რომ მარცხნივ 10 მცირეა იგი.
და ყველაფერი მარჯვნივ უფრო დიდია, ვიდრე ეს.
>> მაგრამ მით უმეტეს, ვიდრე ის, რომ თითოეული კვანძის ხე გამოხატავს ამ ქონებაზე.
ასე რომ კვანძის 7 აქვს 3 მარცხენა და 9 უფლება.
ასე რომ, ყველა იმ ნაკლებია 10.
მაგრამ ეძებს მხოლოდ იმ, 7 აქვს 3 მისი მარცხენა და 9 თავისი უფლება.
და ანალოგიურად მარჯვენა 15 14 მისი მარცხენა და 50 თავისი უფლება.
ასე რომ, სამი კვანძების იქ, 15, 14, და 50, ასევე მოქმედებს ორობითი ხე
ან მოქმედებს ორობითი ძებნა ხე.
და ისინი ყველა მეტია, ვიდრე 10.
ასე რომ, ისინი უფლება აქვთ მარჯვენა არსებობს.
არის კითხვა?
>> აუდიტორია: როგორ გაუმკლავდეთ როდესაც თქვენ გაქვთ ორი შვიდკაცა?
>> R.J. Aquino: ჰო.
როგორ გაუმკლავდეთ ორი ღირებულებებს რომ არის იგივე?
ზოგიერთი ბინარული ძებნის ხეები ამბობენ, რომ თქვენ იგნორირება ეგზემპლარი, რადგან მიზანი
უბრალოდ ვთქვა, მე ვნახე ეს ყველაფერი ჯერჯერობით.
ზოგიერთი ბინარული ძებნის ხეები თქვენ შეიძლება ითქვას, აქვს რაოდენობა შიგნით კვანძში.
სხვა შეიძლება ითქვას, რომ ყველაფერი მარცხენა ნაკლებია ან ტოლი.
და ყველაფერი მარჯვნივ მეტია.
>> უბრალოდ დამოკიდებულია რა პრობლემა ის არის, რომ თქვენ გადაჭრის.
ასე რომ, ლექსიკონი, მაგალითად, თქვენ არ აინტერესებს ეგზ.
თქვენ უნდა გადააგდოთ მათ.
მაგრამ ზოგიერთი პრობლემა თქვენ შეიძლება ზრუნვა.
>> აუდიტორია: ეს შესაძლებელია 1 მარცხნივ 15, რომელიც
ნაკლებია, ვიდრე 10?
>> R.J. Aquino: არა
იმ შემთხვევაში, თუ 14 აქ იყო 1, ამ არ იქნება სწორი ორობითი ძებნა ხე,
რადგან ყველაფერი მარჯვნივ 10 უნდა იყოს უფრო დიდია, ვიდრე ეს.
და ვნახავთ, თუ რატომ.
იმ შემთხვევაში, თუ მიწაზე ძიება ჩემი მიზანია იპოვოს 14, I იწყება root.
ასე რომ, მე გამოიყურება.
OK.
ჩვენ ვაპირებთ იწყება root.
შეხედეთ 10.
>> ასევე, 14, ჩვენი სამიზნე, მეტია, ვიდრე 10.
ასე რომ უნდა იყოს უფლება.
ეს ძალიან გავს მთელი ტელეფონი წიგნი რამ გავაკეთეთ, ორობითი
ძებნის არსებობს.
მაგრამ ნაცვლად ორობითი ძებნა მასივი, ჩვენ ორობითი
ეძებს ამ ხე.
ასე რომ ჩვენ ჯერ კიდევ ეძებს 14.
ასევე, 14 მცირეა 15.
ასე რომ, თუ ის ჩვენი ხე, უნდა იქნება ამ სფეროში აქ.
ეს უნდა იყოს მარჯვნივ 10 და მარცხენა 15.
>> ასე რომ, ჩვენ შეამოწმოთ ამ კვანძში.
და yay, ჩვენ აღმოვაჩინეთ 14.
მე არ ვაპირებ გავლა იგი.
მაგრამ აქ კოდი.
ეს რეალურად შედარებით პირდაპირი,
რადგან ეს არის რეკურსიული.
რა შეიძლება ჩვენ ვთხოვთ თქვენ უნდა გავაკეთოთ ვიქტორინა?
ჩვენ შეიძლება გთხოვოთ, რომ წერენ ეს კოდი.
ჩვენ შეიძლება გთხოვოთ, რომ შევხედოთ ამ კოდი და შეცვალოთ კოდი და განმარტონ, თუ რა
ის აკეთებს.
ჰო.
კითხვა?
>> აუდიტორია: ეს სლაიდები იქნება ხელმისაწვდომი როგორც ისინი ბოლო დროს?
>> R.J. Aquino: დიახ.
ასე რომ, ეს სლაიდები აუცილებლად გამოქვეყნდება.
>> აუდიტორია: ისინი რეალურად გამოქვეყნდა ახლა ვებგვერდზე.
დავით უბრალოდ გააკეთეს, რომ.
>> R.J. Aquino: სლაიდები ახლა ვებგვერდზე.
მე ალბათ patch up რამდენიმე typos მე აღვნიშნე და დაფიქსირება მათ.
მაგრამ იქ მიმდინარე მობილური საიტზე.
სხვა საკითხებთან ერთად, ჩვენ შეიძლება გთხოვოთ, რომ -
დაწერა ჩანართით.
დაწერეთ განმეორებითი მობილური რეკურსიული ფუნქცია ჩვენ უბრალოდ აჩვენა თქვენ
ან გაიგო ეს ყველაფერი, ისევე როგორც ასევე პარაგრაფებს, სიტყვა, რომელიც სასჯელს.
შედარებით პერსპექტივაში ჯერ და აეხსნა რას გვინდა გამოვიყენოთ ორობითი
ძებნა ხე ნაცვლად hash მაგიდა, მაგალითად.
>> ასე მესმის ამ სტრუქტურებში დროს საკმაოდ ღრმა დონეზე.
გაგება, თუ როგორ წერენ ისინი, როგორ მათი გამოყენება, თუ როგორ გაიგო მათ შესახებ.
და თქვენ უნდა ყველა მითითებული.
კითხვა?
>> აუდიტორია: როდესაც თქვენ წერა ორობითი ძებნა ხე, როგორ ფიქრობთ,
განსაზღვროს, თუ რა მნიშვნელობა რათა ის როგორც root?
>> R.J. Aquino: ასე კითხვა იყო, თუ რა ღირებულება გააკეთოს როგორც root?
დამოკიდებულია თქვენი კოდი, თქვენ შეიძლება ჰქონდეს გლობალური root.
ასე რომ თქვენ შეიძლება ალბათ ჰქონდა pset6 გლობალური hash მაგიდასთან.
ან თქვენ შეიძლება გაიაროს root როგორც არგუმენტი.
ასე რომ ამ ძებნის ფუნქცია აქ იღებს არგუმენტი კვანძის *.
და ასე შემდეგ, რაც კვანძის თქვენ მოხდეს იქნება ეძებს არის ერთი თქვენ სამკურნალოდ
როგორც თქვენი root მაშინ, როდესაც გაივლის ის სისტემაში
და მე ყველა მითითებული.
ეს არის ჩემი სლაიდები.
მომდევნო პირი შეიძლება მოვიდეს swap in ლეპტოპი და მიკროფონი.
>> რობ Bowden: ვფიქრობ, შესაძლოა, განმარტა, რომ კითხვა სხვაგვარად.
მაგრამ მე გაგებული, როგორც, თუ თქვენ გაქვთ ციფრები 1, 2, 3, როგორ უნდა
ვიცი, რომ 2 root როგორც ეწინააღმდეგებოდა 1 ან 3?
თუ ჩვენ 2 ფესვი, მაშინ ეს ლამაზად 1 და 3 მარცხენა და მარჯვენა.
მაგრამ თუ 1 არის root, მაშინ 1 თავზე, 2 მარჯვენა, 3 უფლება.
ასე რომ იყოს, თქვენ არ იცით, რა უნდა მიიღოს root.
და ნებისმიერი ალგორითმი ჩვენ ველოდებით მოგცემთ, მხოლოდ პირველი, რაც თქვენ
ჩანართით იქნება root.
ან ჩვენ მინდა გადმოგცეთ ორობითი ხე, უკვე არსებობს, რომელსაც აქვს root.
მაგრამ სხვა ალგორითმები არსებობს ისეთი, რომ ძირეული განახლება, ასე რომ, თუ თქვენ
დასრულდება მდე სიტუაცია, სადაც ის 1, 2, 3, იგი ავტომატურად განახლება to
რათა 2 ახალი root, ისე, რომ ის ჯერ კიდევ ლამაზად დაბალანსებული.
>> ANGELA LI: Cool.
Hey, guys.
მე ანგელა.
და მე ვაპირებ დასრულება off ჩვენი C და შემდეგ წასვლას ზოგიერთი ჩვენი ვებ
ტექნოლოგიები -
HTTP, HTML და CSS.
ასე რომ პირველი რაც არის ბუფერული overflow თავდასხმები.
მოდით შევხედოთ ეს კოდი.
ეს საკმაოდ მარტივია.
არსებობს ფუნქცია foo.
და ის არ დაბრუნდება არაფერი.
მაგრამ ეს იღებს მომცეთ სიმებიანი მოუწოდა ბარი.
>> და ის აპირებს გამოაცხადოს ამ ბუფერული, რომელიც ხასიათი
მასივი, რომელიც 12 slots.
და იგი იყენებს memcpy, რომელიც მხოლოდ ფუნქცია რომ ასლი ერთ მისამართი
მეორეზე.
ასე რომ, ეს ცდილობს კოპირება შევიდა ჩვენი ბუფერული რასაც
ბარი მიუთითებს.
ასე რომ, რაიმე იდეა რა არის არასწორი ეს კოდი?
>> აუდიტორია: თუ ბარი უმეტეს C, ისინი გადაწერა.
>> ANGELA LI: ჰო, ზუსტად.
ჩვენ არ გვაქვს გარანტია, რომ ბარი იქნება არანაკლებ 12.
ჩვენ მხოლოდ გარკვეული თვითნებური ნომერი 12.
და ჩვენ, ისევე როგორც, იმედი ვიქონიოთ, რომ ჩვენს შესახებ input ნაკლებია, ვიდრე
12 სიმბოლო.
ასე რომ, იდეალური მსოფლიოში, თუ ჩვენი შეყვანის არის ყოველთვის, როგორც მოსალოდნელი იყო, მაშინ მივიღებთ
რაღაც, hello.
რომ ნაკლები 12 სიმბოლომდე.
იგი იღებს წაიკითხა შევიდა char c.
და მაშინ ჩვენ რაღაც იგი.
ეს ნამდვილად არ აქვს.
>> მაგრამ ბოროტი ადამიანი ვერ გააკეთებს რაღაც უფრო მოსწონს, სადაც ისინი
მოგვცეს, რასაც ბარი მიუთითებს, ის აპირებს აღვნიშნო, რომ ამ უზარმაზარი მასივი
მხოლოდ ის.
და ეს არის გზა, უმეტეს 12.
ასე რომ, ის აპირებს წავიდეთ ყველა გზა ქვემოთ აქ, სადაც დაბრუნება
მისამართი უნდა იყოს.
ასე ვთქვათ ეს ფუნქცია ეწოდება foo.
იქნებ foo ეწოდა ზოგიერთი სხვა ფუნქცია, რომელიც ეწოდა მთავარი.
ასე რომ, როდესაც foo არის გაშვებული, მას სჭირდება ვიცი, სად უნდა დაბრუნდნენ.
>> იმ შემთხვევაში, თუ foo ეწოდა ზოგიერთი ფუნქცია დაასახელა baz, ის ვიცი, რომ ეს
მივიღე დაბრუნდეს baz.
და რომ ის, რაც ამ დაბრუნების მისამართი ქვემოთ აქ გვეუბნება.
მაგრამ თუ ჩვენ გადავაწერო ზოგიერთი სხვა მისამართი, ამ შემთხვევაში, ეს არის
წარმომადგენლობა მიმართვა თავიდანვე ამ ბუფერული, მაშინ
რაც რეალურად მოხდება ის არის, რომ ნაცვლად დაბრუნების baz,
რომელმაც ჩვენი ფუნქცია, უბრალოდ, აპირებს მისვლას წინაშე ეს კოდი.
>> და თუ ეს იყო იქ, რადგან მუქარის ჰაკერი dude მოვიდა და
გაუკეთეს, მაშინ, შესაძლოა, ეს თანხა საქართველოს მიერ არ არის რეალურად ის.
და ის რეალურად მხოლოდ კოდი, რომელიც არღვევს თქვენს კომპიუტერში ან რამე.
ასე უნდა იყოს დაცვის შესახებ ამ სახის რამ, თქვენ უნდა არასდროს ვივარაუდოთ, რომ
მომხმარებლის შეყვანის არის გარკვეული თანხის სიმბოლო.
მაგალითად, როდესაც თქვენ აკეთებს speller, თქვენ გვითხრეს, რომ სიტყვები
მხოლოდ იქნება 40 სიმბოლო ხანგრძლივი მაქსიმალური.
და რომ იყო კარგი.
>> მაგრამ თუ არა, მაშინ თქვენ უნდა დარწმუნდით, რომ მხოლოდ წაიკითხა 45
გმირები დროს.
წინააღმდეგ შემთხვევაში, თქვენ შეიძლება გადაწერა თქვენი ბუფერული.
ნებისმიერი შეკითხვა, რომ.
ჰო.
>> აუდიტორია: იქნებ უბრალოდ გაიგო ცოტა მეტი ამ?
>> ANGELA LI: უკაცრავად.
დიახ.
>> აუდიტორია: mic არის მხოლოდ ვიდეო.
შევეცდები და პროექტი.
Hi, ბიჭები.
Sup?
მოდით წავიდეთ მეტი რამდენიმე რამ CS50 ბიბლიოთეკა, რომელიც თქვენ უკვე გამოყენებით
ყველა სემესტრში, ძირითადად, მიიღოს მომხმარებლის შეყვანის.
მოგეხსენებათ, რომ თქვენ მოიცავს CS50 ბიბლიოთეკა უბრალოდ აკეთებს cs50.h, რომელიც
შეიცავს ყველა პროტოტიპები ფუნქციები, რომელიც შეგიძლიათ გამოიყენოთ, როგორც
GetString და GetInt და GetFloat, et cetera.
და იქ ერთი ხაზის CS50 ბიბლიოთეკა, რომელიც განსაზღვრავს სიმებიანი, რომელიც
თქვენ ბიჭები ყველამ ვიცით, ახლა მხოლოდ char *.
>> მაგრამ მოდით peek at როგორ GetString მუშაობს.
ეს არის ძალიან შემოკლებული ვერსია.
შეგიძლიათ დახევის up CS50 ბიბლიოთეკა ფაილი ეხლა, მე ვფიქრობ, manuals.CS50.net.
და შეგიძლიათ წაიკითხოთ მეშვეობით ფაქტობრივი ფუნქცია.
მაგრამ ეს მოიცავს რამდენიმე მნიშვნელოვანი ნაწილი.
ასე რომ, ჩვენ შევქმენით რაღაც ბუფერული ზოგიერთ მოცულობა.
და რას ვაკეთებთ არის ჩვენ კიდევ ერთი პერსონაჟი იმ დროს, სტანდარტული n.
რომ სადაც მომხმარებლის საშუალებებით ტექსტის კონსოლი.
>> ასე რომ, ჩვენ ვაპირებთ, რომ წაიკითხონ ხასიათი იმდენად, რამდენადაც ეს არ არის ახალი
ონლაინ და ეს არ დასრულდება ფაილი, რომელიც არის ბოლომდე სტანდარტული input.
და ყველა პერსონაჟი, რომ ვკითხულობთ, თუ ეს ხასიათი მთავრდება დასძინა
რაოდენობის სიმბოლოებს ჩვენ წაიკითხა და რომ უფრო მეტია ვიდრე ჩვენი შესაძლებლობები,
მაშინ რას ვაკეთებთ არის ჩვენ უბრალოდ შეცვლის ჩვენი ბუფერული ისე, რომ ეს ორჯერ გრძელი.
ასე რომ კიდევ ერთხელ, ამ დაიცვას ბუფერული overflow თავდასხმები, რადგან თქვენ წაიკითხონ
ხასიათი დროს.
და თუ ნებისმიერ მომენტში წაიკითხოთ ძალიან ბევრი, უბრალოდ გაფართოებას თქვენი ბუფერული.
თქვენ გავამრავლოთ იგი ორი.
და მაშინ თქვენ უფრო ოთახში.
>> წინააღმდეგ შემთხვევაში, თქვენ უბრალოდ დაამატოთ ხასიათი ბუფერში.
და შემდეგ თქვენ წაიკითხავთ ყველა გმირები, ეს იქნება shrink ბუფერული
უკან ქვემოთ ნორმალური ზომა, დაამატეთ null terminator, ხოლო შემდეგ დაბრუნდნენ.
ახლა, მოდით შევხედოთ GetInt.
შეგიძლიათ ბიჭები წაიკითხოს ეს?
შემიძლია მიუახლოვდით ცოტა.
მე არ ვიცი, როგორ კომპიუტერები მუშაობენ.
არასოდეს გათვალისწინებით.
მე ვერ მიუახლოვდით სწორად.
>> ეს მართლაც რთულია.
მე ბოდიში.
მოდით შევჩერდეთ ამ.
ასე რომ, რა GetInt არ არის ის პირველი ნათქვამია სიმებიანი საწყისი GetString, რომელიც
ჩვენ განხორციელდეს.
და მნიშვნელოვანი ნაწილი აღვნიშნო აქ თუ ამ გაზიარების, რომ მთავრდება
კითხვა ჰგავს რეალურად არ სიმებიანი, მაშინ ჩვენ უბრალოდ დააბრუნოს INT_MAX to
წარმოადგენს უკმარისობა.
რატომ არ ვბრუნდებით INT_MAX ნაცვლად უარყოფითი 1 ან 1?
ნებისმიერი იდეები?
>> აუდიტორია: [INAUDIBLE] უარყოფითი 1 ერთ.
>> ANGELA LI: ჰო, ზუსტად.
ასე რომ თქვენ გზა უფრო უბრალოდ მინდა შეყვანის 1 ან -1 როდესაც მოთხოვნილია
ამისთვის nth და რაც nth maxes.
ეს არის უზარმაზარი.
თქვენ ალბათ არ აპირებს გამოიყენოს იგი.
ასე რომ, ეს არის როგორც დიზაინის გადაწყვეტილება დარწმუნდით, რომ თქვენ არ შემთხვევით
დაბრუნდეს შეცდომა ან თქვენ არ დაბრუნდება 1, რომელიც შეიძლება გაანალიზება
როგორც სწორი პასუხი.
ასე რომ, თუ ხაზი არ არსებობს, ვბრუნდებით GEO-MAX.
წინააღმდეგ შემთხვევაში, ჩვენ ვიყენებთ sscanf, რომელიც როგორც scanf.
მაგრამ ეს კითხულობს სიმებიანი.
>> და ჩვენ გვაქვს ამ ფორმატირებული string, რომელიც% i% c.
და ჩვენ ვცდილობთ და ემთხვევა, რომ მიუხედავად შესახებ მოგვცა.
ჩვენ გვინდა, რომ ნომერი შესაბამისი რამ იყოს 1, რაც იმას ნიშნავს, რომ ჩვენ მხოლოდ
ნამდვილად გსურთ შეესაბამება რიცხვი გარშემორტყმული იქნებ თეთრი
სივრცეში, იქნებ არ.
ამ შემთხვევაში, თუ თქვენ დააყენა რაღაც როგორიცაა ბარი, ბარი არ შეესაბამება ყველა,
იმიტომ, რომ იქ უნდა იყოს მთელი სტარტზე.
ასე sscan არასდროს არ აღმოჩნდა 0.
ასე რომ თქვენ არ დაბრუნდება, რომ.
>> გარდა ამისა, თუ თქვენ დააყენა რაღაც ისევე როგორც 1, 2, 3, A, B, C, რომელიც მატჩები
როგორც მთელი რიცხვი, არამედ ხასიათი მას შემდეგ.
ამიტომ sscanf დაბრუნდება 2, რომელიც ასევე არ არის იდეალური.
თქვენ არ მინდა 1, 2, 3, A, B, C იყოს სწორი int.
ისე, რომ ასევე არ მუშაობს.
მაგრამ ამბობენ, რომ თქვენ დააყენა რაღაც 50.
რომელიც უნდა შეესაბამებოდეს% i, რაც იმას ნიშნავს, ის მიიღებს წაიკითხა შევიდა n.
და ახლა, n შეიცავს რაოდენობის 50.
და მაშინ დაბრუნება.
>> წინააღმდეგ შემთხვევაში, თქვენ მოხვდა გამეორება.
და შემდეგ ეს მხოლოდ მიდის კიდევ მანამ, სანამ თქვენ გაქვთ სათანადო შეყვანის შესახებ.
ნებისმიერი კითხვები რომ?
>> აუდიტორია: ასე რომ, თუ თქვენ უნდა ამობეჭდოთ ღირებულების GetInt on [INAUDIBLE]
უნდა იყოს მხოლოდ მთელი რიცხვი და max?
>> ANGELA LI: ჰო.
ასე რომ, თუ თქვენ იყენებთ GetInt, თქვენ უნდა ვივარაუდოთ, რომ თქვენ არ გსურთ nth max to
იქნება სწორი შეყვანის, იმიტომ, რომ თქვენ აპირებს უნდა ვივარაუდოთ, რომ ეს იყო ცუდი.
>> აუდიტორია: თუ ჩვენ არ გვაქვს char c და ვინმე დააყენა 1, 2, 3, სემ, რომ ეს
დღესაც მუშაობს 1, 2, 3?
>> ANGELA LI: მე ვფიქრობ, რომ ეს იმუშავებს.
მაგრამ არ გსურთ 123Sam to იქნება სწორი შეყვანის მომხმარებლის მიერ.
ეს არ არის ნამდვილად int.
ასე რომ, ეს არ ჩანს, სამართლიანი გარჩევის იგი როგორც int.
OK.
იმ შემთხვევაში, მოდით ნაბიჯი ი ინტერნეტში.
ასე რომ, HTTP არ არის ენა.
HTTP მხოლოდ კომპლექტი სტანდარტებს როგორ თქვენ რამ კლიენტებს,
ეს თქვენ, რათა სერვერები.
, რომ სხვა ადამიანების ინტერნეტში.
>> ასე რომ, HTTP დგას ჰიპერტექსტის გადაცემის პროტოკოლი.
ის გული და სული მთელი ვებ.
ჰიპერტექსტის ნაწილი მხოლოდ ეხება HTML.
გადაცემის კლიენტებს, როგორიცაა თქვენ გაგზავნას სთხოვს
სერვერები, რომელიც იძლევა პასუხებს.
და ოქმი მხოლოდ, როგორ თქვენ ველით სერვერზე უნდა მოიქცეს?
და როგორ უნდა მოიქცეს ისეთი, რომ თქვენ შეგიძლიათ გამარტივებაში ამ
კომუნიკაციის პროცესში?
>> ასე რომ, HTTP მოთხოვნები გამოიყურება ბევრი მოსწონს ეს.
GET არის ტიპის მოთხოვნით.
თქვენ ბიჭები მინახავს GET ითხოვს და POST ითხოვს.
ეს მეორე რამ არსებობს, / me, რომ მხოლოდ URI ან URL, სადაც თქვენ
მინდა წასვლა ფარგლებში მასპინძელი.
ასე რომ, ეს მოთხოვნა ითხოვს გვერდი, ისევე როგორც www.facebook.com / ჩემთვის.
და ეს GET თხოვნა.
და მაშინ ეს HTTP/1.1, რომ უბრალოდ მობილური HTTP თქვენ იყენებთ.
ის თითქმის ყოველთვის 1.1.
>> და შემდეგ იქ რამოდენიმე სხვა პერსონალი ძალიან.
თქვენ შეგიძლიათ რეალურად ვხედავთ ამ, თუ გახსენით თქვენი კონსოლი, როდესაც თქვენ
ათვალიერებს ვებ.
Responses გამოიყურება რაღაც უფრო მოსწონს ეს.
ზედა ნაწილი არის, კიდევ ერთხელ, ტიპის HTTP თქვენ იყენებთ
მოჰყვა სტატუსის კოდი.
ასე რომ 200 OK არის ყველაფერი შემუშავებული.
აქ არის თქვენი ტელეფონი.
თქვენი შინაარსის აპირებს დაიცვას.
და მერე გეტყვით, რა სახის შინაარსი და სხვა პერსონალი ძალიან.
>> სტატუსის კოდები, არსებობს რამდენიმე მნიშვნელოვანია, რომ თქვენ უნდა იცოდეს.
200 OK ჰგავს ყველაფერი ოქროს.
ყველაფერი მუშაობს.
403 აკრძალული.
ეს თქვენ ალბათ ჩანს, თუ დაავიწყდა to chmod რაღაც სწორად.
ეს ნიშნავს, რომ თქვენ არ გაქვთ მარჯვენა უფლებები
შედიხართ, რომ სერვერზე.
ეს იგივეა, არა, თქვენ ვერ ვხედავ მას.
404 იმას ნიშნავს, რომ რაც არ არსებობს.
არ არის ნაპოვნი.
თქვენ ალბათ ჩანს, რომ ბევრი.
>> 500 Internal Server Error, როგორც წესი, რაღაც წავიდა არასწორი მხარეს
სერვერზე.
ასე რომ, როდესაც თქვენ ახორციელებს pset7, თუ ჰქონდა PHP შეცდომები, თქვენ შეიძლება
რეალურად გადადით გვერდზე და ვხედავ მთელი bunch of PHP შეცდომის პერსონალი.
მაგრამ ეს არ ჩვეულებრივ ხდება, იმის გამო, რომ საიტებზე ნამდვილად არ მინდა
გეტყვით, რატომ მათი საიტი გატეხილი.
ისინი ალბათ უბრალოდ დააბრუნოს 500 Internal Server Error.
>> და შემდეგ იქ 418 მე ჩაიდანი.
არსებობს მთელი ამბავი ამიტომ ეს რამ.
მაგრამ შეგიძლიათ წაიკითხოთ, რომ თქვენი დრო.
არსებობს მთელი bunch of სხვა სტატუსის კოდები ძალიან.
მაგრამ ეს პირობა თქვენ უნდა იცოდეს.
მოდით ვისაუბროთ HTML.
HTML, გახსოვდეთ, ეს არ არის პროგრამირების ენა.
ის markup ენაზე.
ეს ნიშნავს, რომ იგი აღწერს შინაარსი.
იგი მოგვითხრობს, თუ რა HTML დოკუმენტის გამოიყურება მოსწონს თუ არა ეს ჰგავს
მაგრამ როგორ ეს სტრუქტურა.
>> ასე რომ, ეს განსაზღვრავს სტრუქტურა და სემანტიკა ვებ გვერდებზე.
ეს იგივეა, ეს არის პარაგრაფი.
ეს არის შეკვეთილი სიაში.
ეს არის, როგორც განყოფილების ჩემი გვერდი.
აი ტიტული.
ეს იმას პერსონალის იგრძნობა.
ეს არ სტილის ნებისმიერი იმიტომ, რომ რომ ის, რასაც თქვენ აკეთებთ CSS.
და როგორც ჩანს სერია წყობილი tags.
ასე რომ გამოიყენოთ მაგალითი ნამდვილად ძირითადი HTML გვერდი, თქვენ გაქვთ DOCTYPE
დეკლარაცია up there.
>> ამ DOCTYPE დეკლარაცია ამბობს, ჩვენ გამოყენებით HTML5.
მაშინ თქვენ გაქვთ დიდი HTML tag.
ის შეიცავს ხელმძღვანელი და სხეულის.
Inside ხელმძღვანელი, თქვენ გაქვთ ტიტული.
ის, რაც მიდის სათაური ბარი თქვენს ბრაუზერში.
ჩვენ გვყავს ლინკი tag რომელიც ბმულები გარე style sheet.
და მაშინ ჩვენ გვაქვს სცენარი რომ pulls გარე JavaScript ასევე.
>> და მერე შიგნით ჩვენი სხეულის ფაქტიურად რა ხდება ნაჩვენებია გვერდზე.
გვაქვს პუნქტის და შემდეგ იმიჯი შიგნით რომ პარაგრაფი.
ეს არის სურათის kittens.
გაითვალისწინეთ, რომ სურათის tag იხურება თავისთავად.
ასე რომ ნაცვლად გახსნის იმიჯი და შემდეგ აკეთებს სხვა / იმიჯი, თქვენ
მხოლოდ ამ პატარა slash აქ, რომელიც ხურავს.
და იმიჯი tag ასევე აქვს გასაღები ღირებულება ატრიბუტი მოუწოდა alt.
სწორედ ალტერნატიული ტექსტი, ხდება, როდესაც თქვენ hover მეტი მას.
>> ყველაზე HTML ელემენტები აქვს რამდენიმე გასაღები ღირებულება რამ, რომ თქვენ შეგიძლიათ მისცეს მას, სხვადასხვა
დაკონფიგურირება.
ჰო.
>> აუდიტორია: [INAUDIBLE].
>> ANGELA LI: Well, ამიტომ ატრიბუტი აქვს.
ასე რომ, თუ თქვენ იყენებთ jQuery, თქვენ შეიძლება გაკეთება აირჩიეთ image.getAttribute.
და შემდეგ თქვენ შეგიძლიათ მოძებნოთ მიიღეთ alt ატრიბუტის.
და ეს მოგცემთ kittens.
თუ გახსოვთ ფორმები HTML, input ელემენტები ექნება სახელი ატრიბუტები.
და ეს რა PHP იყენებს გააგზავნოთ მოთხოვნები, როდესაც ფორმით წარედგინება.
>> აუდიტორია: თუ ვთქვათ რამე იმაზე, თუ როგორ, თუ თქვენ იყენებთ kittens.jpg ან
რაღაც რომ აქვს დაკარგული ფაილის ფოლდერები ან სხვა ფაილი?
>> ANGELA LI: დიახ.
ასე რომ, ეს არის ის, რაც ე.წ. ნათესავი გზა, რადგან მე არ აძლევდა
თქვენ სრული გზა.
ეს მოსწონს, როცა C, თუ აკეთებთ fopen ზოგიერთი ფაილის, თუ fopen hi.txt, რომელიც
hi.txt სავარაუდოდ იგივე დირექტორია, თუ მისთვის უფრო
რთული გზა.
>> აუდიტორია: ასე რომ თქვენ ვერ დააკონკრეტა რომელიც საქაღალდე [INAUDIBLE]?
>> ANGELA LI: ჰო.
და თქვენ შეგიძლიათ ეძებოთ, თუ როგორ უნდა გავაკეთოთ, რომ.
მაგრამ თუ მინდოდა მიიღოს kittens.jpg out მშობელი დირექტორია, მინდა
.. / Kittens.jpg.
ჰო.
უკაცრავად.
ჰო.
Oh man, დამავიწყდა კითხვა.
რა იყო კითხვა?
ოჰ, კითხვა არის, kittens.jpg სავარაუდოდ, იგივე დირექტორიაში?
და ამ შემთხვევაში, ეს არის.
მაგრამ თქვენ შეგიძლიათ მისცეს მას გარკვეული გზა ისეთი, რომ ეს არ უნდა იყოს.
კარგი?
>> CSS.
ასე რომ, CSS, როგორიცაა HTML, რომელიც არ არის პროგრამირების ენაზე.
CSS მხოლოდ სერია სტილის წესები.
იგი დგას კასკადური სტილების.
და თქვენ იყენებთ ერთად HTML-თან ერთად სტილი pages.
ასე რომ, არსებობს სამი გზა თქვენ შეიძლება შეიცავდეს იგი.
ერთი გზა შეგიძლიათ გააკეთოთ ეს არის უფროსი ნაწილი თქვენი HTML, შეგიძლიათ უბრალოდ
გახსნას სტილის tag და შემდეგ გამყარებაში ზოგიერთი CSS წესები არსებობს.
ეს საკმაოდ OK.
ჰო.
>> აუდიტორია: იქნებ დააყენა იმ სტილი tags შორის, მოდით
ვთქვათ, ორგანო და / body.
და მაშინ იქნება სტილის მხოლოდ სხეული.
>> ANGELA LI თქვენ იქნებოდა.
რომ ვიმუშავებთ.
მაგრამ თქვენ არ უნდა, რადგან სტილის არის სახის მეტადატის რომ უნდა წავიდეს
უფროსი თქვენი დოკუმენტი.
Body ნამდვილად უნდა შეიცავდეს მხოლოდ რა რეალურად აპირებს
გამოჩნდება თქვენს გვერდზე.
>> აუდიტორია: ასე ნეტავ დააყენა სტილი თქვენი უფროსი სტილი
მთელი ვებ გვერდი, არა?
>> ANGELA LI: ჰო.
ასე აყენებს სტილი აქ, ამ CSS წესები ვრცელდება მთელი გვერდი საფუძველზე
მათი სელექციონერები.
ასე რომ, უკეთესი გზა ამის გაკეთება ნაცვლად მქონე სტილი tag თქვენი უფროსი,
თქვენ გაქვთ ამ ბმული გარე სტილი ფურცელი, ისევე როგორც მე აჩვენა თქვენ
წინა მაგალითი.
რა ეს იმას არის ის ცდილობს და აღმოაჩენს ფაილი style.css და შემდეგ pulls მას
და იყენებს, რომ, როგორც სტილის გვერდზე.
და თქვენი style.css იქნება შევჩერდეთ მოსწონს ეს.
ეს იქნებოდა მხოლოდ bunch of CSS.
>> და ბოლოს, არსებობს კიდევ ერთი გზა თქვენ შეიძლება შეიცავდეს CSS, რომელიც ნამდვილად
არ უნდა ოდესმე გააკეთოს.
ეს მოწოდება inline სტილის.
და ასე რომ ნებისმიერი HTML ელემენტს ასევე შეგიძლიათ მიიღოს სტილი ატრიბუტი.
და შემდეგ ამ სტილის ატრიბუტია, თქვენ შეგიძლიათ მისცეს მას CSS წესები.
ასე რომ, ამ შემთხვევაში, რაც div ვარ განსაზღვრის უფლება აქ, ის აპირებს
აქვს შავ ფონზე და თეთრი ტექსტის ფერი.
მაგრამ თქვენ არ უნდა ამის გაკეთება, რადგან ის, რაც ეს არ არის ის აყენებს თქვენი სტილის
თქვენს HTML.
>> და მე ვიცი, ჩვენ ვსაუბრობთ HTML არის სტრუქტურა და CSS სტილი.
თუ თქვენ, ეს მიქსები მათ ერთად.
და ეს არ არის ძალიან სუფთა.
ასე რომ არ გაგვაჩნია.
გამოყენების მაგალითი CSS, იქ, ჩვენ უბრალოდ აირჩიეთ ორგანოს HTML
დოკუმენტური ფილმი.
და ჩვენ, როგორიცაა, ყველაფერი იქნება Comic Sans.
მე ასევე არ ვურჩევ, რომ.
მაგრამ თქვენ შეიძლება ამის გაკეთება.
>> მეორე წესი უფლება აქ, ის აპირებს აირჩიოთ ელემენტს
გვერდი ID ძირითადი.
ასე რომ, რასაც HTML-ის ელემენტი, მე ვთქვი, ID = მთავარი, მე ვაპირებ მისცეს, რომ
20-pixel ზღვარი და გასწორება ყველაფერი, ყველა ტექსტი, ცენტრში.
ბოლო რამ ირჩევს by CSS კლასი.
ასე რომ, ნებისმიერ ელემენტს გვერდზე რომ მივეცი განყოფილების კლასი, მე ვაპირებ, რათა ის
ფონის ფერი ღია ცისფერი.
Yep.
რომ ყველა მე მივიღე.
კითხვა?
>> აუდიტორია: რა hashtag სანამ მთავარ გავაკეთოთ?
>> ANGELA LI კითხვა არის, რა hashtag ადრე მთავარი do?
ამ შემთხვევაში, hash in CSS ნიშნავს აირჩიეთ ით.
ასე რომ, თუ მქონდა HTML-ის ელემენტი, როგორიცაა divID = მთავარი, ამ CSS წესით ირჩევს
რამ ID ძირითადი.
და ანალოგიურად, პერიოდის წინაშე სექცია აირჩიეთ CSS კლასი ან
აირჩიეთ HTML კლასი.
>> აუდიტორია: რატომ არის აქვს ადრე 6 ფონის ფერი?
>> ANGELA LI: ჰო.
ასე რომ, კითხვა, რატომ არის იქ hash ადრე 6?
ეს არის განსხვავებული, ვიდრე hash.
ეს ნიშნავს, რომ თქვენ აძლევდა თექვსმეტობითი ფერი.
ასე რომ, hex ფერები, ეს მხოლოდ წარმოადგენს ფერის.
და გახსოვთ RGB საწოლიანი როდესაც გააკეთეთ თქვენ ექსპერტიზის pset?
ეს არის მსგავსი.
პირველი ორი ციფრი წარმოადგენს რამდენად წითელი არის ფერი.
მეორე ორ წარმოადგენს რამდენად მწვანე.
და მესამე წარმოადგენს რამდენად ლურჯი ფერით.
და hash არის ეს აპირებს წარმოადგენს ფერის.
>> ასე არაფერს, 0, 0, 0, 0, 0, 0 მდე F, F, F, F, F, F მოქმედებს.
ეს საპატიო ფერი, რომელიც შეიძლება გამოისახება თქვენს ბრაუზერში.
კითხვა?
>> აუდიტორია: რა სხვაობაა გამოყენებით ით და კლასში?
>> ANGELA LI კითხვა არის რა სხვაობა
გამოყენებით ით და კლასი?
თქვენ შეგიძლიათ მხოლოდ ერთი ელემენტი HTML დოკუმენტი, რომელსაც აქვს მოცემულ ID.
ასე რომ, მხოლოდ ერთი რამ ჩემს გვერდზე უფლება აქვს ID ძირითადი.
ასე, რომ თქვენ გამოიყენოთ ეს არის header.
ეს არის ნავიგაცია.
ეს არის ძირი.
კლასების განსხვავებული, რადგან თქვენ შეგიძლიათ გამოიყენება კლასების იმდენი HTML ელემენტები
როგორც თქვენ გსურთ.
>> ასე მაგალითად, მე კლასი განყოფილებიანი, იმიტომ, რომ იქ ალბათ ერთზე მეტი
განყოფილების ჩემს გვერდზე.
თქვენ მხოლოდ დაშვებული იმდენი ელემენტები გვერდზე იგივე
კლასი მაგრამ მხოლოდ ერთი გარკვეული ID.
>> აუდიტორია: ასე რომ dot წარმოადგენს კლასში?
>> ANGELA LI: ჰო.
Dot წარმოადგენს კლასის.
ზემოთ.
ეს ყველაფერი მაქვს, ბიჭები.
დიდი მადლობა.
>> [ტაში]
>> Zamyla CHAN: Hi, ყველას.
მე Zamyla.
მე ვაპირებ, რომელიც მოიცავს PHP, MVC და SQL დღეს.
უამრავი მასალა, რომელიც მე ვიქნები საფარი იქნება საკმაოდ ბევრი
უფლება out of pset7.
ყველა უფლება.
რა არის PHP?
PHP იშიფრება ჰიპერტექსტის Preprocessor.
ასე რომ, ეს, თავისთავად, არის რეკურსიული ასახელებს, რომელიც საკმაოდ გრილი.
PHP არის სერვერული სკრიფტინგის ენა, და ის უზრუნველყოფს ხერხდება
და ლოგიკური underpinnings ჩვენი ნახვა.
>> ასე რომ, ანგელა ბევრი ვისაუბრე HTML და CSS, რომ გახდის სტრუქტურა
ნახვა.
მაგრამ რა, თუ გსურთ რომ შეიცვალოს, რომ content დინამიურად თუ იგი მერყეობს
საფუძველზე მომხმარებლის ან გარკვეულ პირობებში?
სწორედ იქ, სადაც PHP მოდის შემოსული
ახლა კი, როგორც წესი, PHP, შესაძლოა, რამდენიმე ნაკლებად ხაზების განახორციელოს იგივე
in C. ეს იმიტომ, რომ PHP ამუშავებს მეხსიერება მართვის პროგრამისტი,
როგორც ეწინააღმდეგებოდა us მქონე malloc თავისუფალი, რამ, როგორიცაა, რომ.
>> მაგრამ რადგან PHP არის interpretive ენის, როგორც წესი, ეს შეიძლება შესრულდეს
ცოტა უფრო ნელა, ვიდრე C, რომელიც არის შედგენილი ენაზე.
იმის გამო, რომ ჩვენ მოძრავი პროგრამირება ენებზე, მოდით შევხედოთ, თუ როგორ
სინტაქსი იქნება განსხვავდება.
მოდით იყოს ძალიან ფრთხილად არ დაბნეული ამ.
ასე PHP სინტაქსი, ხართ თუ არა embedding თქვენი PHP შიგნით HTML
შეიტანოს ან ფარგლებში. php ფაილი თავად, თქვენ უნდა დაურთოს კოდი ღია
PHP და დახურული PHP tags like შემდეგნაირად, როგორც ეკრანზე.
>> ცვლადები PHP-ში.
ყოველი ცვლადი დაიწყება $ ნიშანი მოჰყვა სახელი
თქვენი ცვლადი.
ახლა, ცვლადები PHP არის თავისუფლად აკრეფილი, რაც იმას ნიშნავს, რომ თქვენ არ გჭირდებათ
მიუთითოს, თუ რა მონაცემები ტიპის როდესაც თქვენ გამოცხადების მას.
თუმცა, ეს არ ნიშნავს იმას, რომ ისინი არ აქვს რაიმე სახის ყველა.
ასე რომ, თუ მე ვაცხადებ, ცვლადი და მხოლოდ მითითებული ეს ტოლია 1, და შემდეგ ვაცხადებ
სხვა ცვლადი, ვაყენებთ მას ტოლი "1" და შემდეგ კიდევ ერთი 1.0, ისევე,
დამოკიდებულია ტიპის თანასწორობის ოპერატორები გამოვიყენო, თუ მინდა შედარება
მთელი ტიპი, მაშინ ისინი ყველაფერს იყოს თანაბარი.
მაგრამ თუ გვინდა დავრწმუნდეთ, რომ სახის ტოლია, PHP შეგიძლიათ ისევ გავაკეთებთ
რომ, მიუხედავად იმისა, რომ ჩვენ არ მიუთითებს რა ტიპის ეს არის, როდესაც ჩვენ
პირველი, რათა ფაილი.
>> ახლა კი, PHP, მიუხედავად იმისა, რომ ჩვენ ვართ გადართვის მეტი პროგრამირების
ენების C, ჩვენ ჯერ კიდევ გვაქვს ჩვენი სანდო თუ მდგომარეობა, ისევე, როგორც ეს.
ჩვენ ჯერ კიდევ გვაქვს ჩვენი ხოლო მარყუჟების, უბრალოდ ასე, სადაც თქვენ დააყენა თქვენს
მდგომარეობა და შემდეგ ორგანოს loop.
და მაშინ ჩვენ ასევე გვაქვს ჩვენი მარყუჟის, რომელიც, როგორც წესი ასე გამოიყურება.
ასე რომ, თუ მინდოდა iterate ყველა ცხრა psets და წარადგინოს და მოვუწოდებთ
ფუნქცია submitPset, მაშინ შემიძლია, რომ აქ, რაც თქვენ ბიჭები არ ყველა
გაკეთდეს ამ ეტაპზე.
გილოცავთ, სხვათა შორის.
>> კამერა, ხალხი განაცხადა, მადლობა.
ახლა კი, თუ არ მინდა უბრალოდ გამოიყენოთ ამ მარყუჟის, მაშინ PHP რეალურად ასევე
უკვე ყველაფერი მოუწოდა foreach მარყუჟების.
ასე რომ, თუ მქონდა მასივი რიცხვებით 0 მეშვეობით 8, ინახება მასივი psets,
მაშინ მე ვერ აქვს foreach loop რომ iterates მეტი ყველა ნომერი psets.
და მაშინ მე ვერ მოვუწოდებ იგივე ფუნქციონირებს რვაჯერ,
ისევე, როგორც მე ადრე.
ასე რომ, ეს, თითოეული loop არის ლამაზი, რადგან თქვენ არ გაქვთ, თუ თქვენ არ იცით,
ზუსტი სიგრძეზე მასივი, რომ თქვენ არ, მაშინ გამოყენებით ამ foreach loop
იზრუნებს რომ თქვენთვის.
>> ასე რომ, მე მივიღე psets როგორც მასივი.
მოდით შევხედოთ, რომ.
მასივები PHP-ში, როგორც წესი, იგივეა, რაც პირობა, რომ ჩვენ გვქონდა C, სადაც
თქვენ შეგიძლიათ განაცხადოს მასივი.
და აქ, შემიძლია განვაცხადო, ცარიელი მასივი და შემდეგ ავაშენოთ up დინამიურად გამოყენებით
ინდექსების როგორც რიცხვებით.
ასე რომ ინდექსი 0, მე ვაპირებ შესანახად რიცხვი დაასახელა 1.
საათზე ინდექსი 1 ჩემს სიაში, მე ვაპირებ შენახვის ღირებულება 2.
და მესამე ინდექსი მაგრამ მეორე ნომერი, მე ვაპირებ
შესანახად ნომერი 12.
>> ახლა, ეს არის ჯარიმა, რომ მუშაობს ეს კარგად მუშაობს.
მაგრამ ამბობენ, რომ მნიშვნელოვანია ჩემთვის რა თითოეული ინდექსი ფლობს.
ჩემთვის, ინდექსი 0, იმას ნიშნავს, ბევრი კატები მაქვს.
და ინდექსი 1 ნიშნავს, თუ როგორ ბევრი ბუები მაქვს.
და შემდეგი ერთი ნიშნავს რამდენი ძაღლები.
კარგად, მაშინ ეს უნდა მიუთითოთ, რომ ნაცვლად რომ გვახსოვდეს 0 უკავშირდება
კატა და 1 ბუები, შემიძლია ასოციაციური მასივები, რაც იმას ნიშნავს,
ნაცვლად რიცხვებით როგორც ჩემი მაჩვენებლების, შემიძლია რეალურად გამოიყენოს strings.
>> ასე რომ, ეს საკმაოდ სასარგებლო.
და თქვენ ძირითადად უბრალოდ შეცვალა რიცხვებით და სიმები.
და არ გაქვთ ასოციაციურ მასივში.
ჰო.
>> აუდიტორია: არის მიზეზი, რის გამოც არ არსებობს ტირეთი მეორე
ნაწილობრივ იმიტომ, რომ ჩემს სიაში მასივი.
>> Zamyla CHAN კითხვა იყო, არის არ არსებობს მიზეზი, რის გამოც არ არსებობს
ხაზს შორის ჩემი და სიაში?
პოსტები
ეს მხოლოდ როგორ ვარ დასახელებისგან ჩემი ცვლადი.
>> აუდიტორია: პირველი ხაზი, ეს ერთი სიტყვა.
>> Zamyla CHAN ჩემი მოსახდელი.
მე დაფიქსირება, რომ.
ჰო.
ისინი უნდა იყოს იგივე ცვლადის სახელი.
კარგი დაჭერა.
OK.
მოდით გადაადგილება string გაერთიანების.
იმ შემთხვევაში, თუ მინდოდა ორი სიმები, მაშინ მე შემიძლია concatenate მათ
ერთად dot ოპერატორი.
ასე რომ, თუ მაქვს Milo როგორც სახელი და Banana როგორც უკანასკნელი სახელი, მაშინ
concatenating ერთად dot ოპერატორი და შემდეგ აყენებს სივრცეში შორის
გახდის string რომელიც შეიცავს Milo Banana, რომელიც მე შეიძლება მაშინ echo ან,
უფრო სწორად, ამობეჭდოთ.
>> საუბრისას echo, ვისაუბროთ დაახლოებით რამდენიმე სასარგებლო -
oops.
მე ბოდიში.
რამდენიმე სასარგებლო PHP ფუნქციები.
ასე რომ, ჩვენ გვაქვს -
ტექნიკური სირთულეების.
ერთი მეორე.
მე გავუგზავნე.
PowerPoint პრობლემები.
და ჩვენ უკან PHP ფუნქციები.
>> ასე რომ, ჩვენ მოითხოვს ფუნქცია, სადაც თუ გაივლის ფაილი, აქ მხოლოდ
მაგალითი ფაილი, მე შეიძლება გაიაროს შემოსული
შემდეგ, რომელიც მოიცავს PHP კოდი რომ ფაილი, რომ მიუთითოს.
და ის შეაფასებს რომ სისტემაში
მაშინ ჩვენ ასევე გვაქვს echo, რომელიც არის პარალელურად printf.
Exit პარალელურად მოხსნა, რომელი გასასვლელიდან ბლოკი
კოდი, რომელიც თქვენ შემოსული
და შემდეგ ცარიელი ამოწმებს თუ არა მოცემულ ცვლადი, როგორიცაა null ან ნულოვანი ან
რაც გაიგივებულია მყოფი ცარიელი.
ჰო.
>> აუდიტორია: იყიდება სიმებიანი გაერთიანების dot ოპერატორი ერთი, PHP, არის ის, რომ
ისევე, როგორც JavaScript, სადაც ის გამოყენებით the dot განთავსების გაერთიანების ნიშნავს plus?
ასე რომ, სრული სახელწოდება, თქვენ შეიძლება დოლარი დარეგისტრირდით პირველი + და მერე + გაგრძელდეს?
>> Zamyla CHAN: ჰო.
ასე რომ კითხვა იყო თუ არა PHP ჩვენ შეგიძლიათ გამოიყენოთ იგივე სიმებიანი გაერთიანების
როგორც JavaScript ერთად pluses.
და ჯოზეფ მიიღებთ შევიდა მოგვიანებით.
ვფიქრობ, მას აქვს slide რომ.
სინამდვილეში, ეს სხვადასხვა.
ასე რომ, JavaScript, თქვენ უნდა გამოვიყენოთ პლუს to concatenate სიმები.
და PHP, თქვენ უნდა გამოიყენოთ dot ოპერატორი.
ასე რომ, ისინი განსხვავებული.
>> OK.
ახლა რომ ჩვენ დაფარული ყველა ამ PHP, სადაც იგი
ნამდვილად მოდის მოსახერხებელი?
ისე, ეს მოდის მოსახერხებელი, როდესაც ჩვენ შეგიძლიათ დააკავშიროთ იგი ჩვენი HTML.
ასე რომ, ჩვენი PHP მოგვცემს ძალა შეცვალოს გვერდის HTML content ადრე
მისი loading.
ასე რომ, საფუძველზე სხვადასხვა პირობებში, როგორც წესი, კონკრეტული შესახებ, რომ
ხართ შესული სისტემაში, შეგვიძლია ცარიელია სხვადასხვა ინფორმაცია.
Linda, არც თქვენ გაქვთ შეკითხვა?
>> აუდიტორია: შეგიძლიათ concatenate რიცხვი ასევე?
>> Zamyla CHAN: დიახ, შეგიძლიათ.
ასე რომ კითხვა იყო თუ შეგიძლია concatenate რიცხვებით ან სხვა
variable.s ახლა ჩვენ გადაადგილება MVC, რომელიც არის პარადიგმა რომ ჩვენ გამოყენებული
pset7 და უამრავი ვებ დიზაინერებს გამოყენება ორგანიზება კოდი ფაილი
მათი ნახვა.
M დგას მოდელი.
და ძირითადად, მოდელი ფაილი იმუშავებს ერთად ურთიერთქმედების მონაცემთა ბაზაში.
იხილოთ ფაილი, ისინი ეხება ესთეტიკას ნახვა.
და Controller სახელურები პროფაილი მოითხოვს, parses
მონაცემები, აკეთებს სხვა ლოგიკა.
>> In pset7, ჩვენ კომბინირებული მოდელი და კონტროლერი.
და ჩვენ უბრალოდ მოუწოდა მათ კონტროლერები და ისინი საზოგადოების დირექტორია.
და ხედვა ფაილი, ჩვენ ვიყენებთ მათ, როგორც თარგები თარგები დირექტორია.
ასე რომ, ეს სქემა აქაც წარმოადგენს იმავე სახის განყოფილებაში
მოდელი და კონტროლერი purple აქ და მარცხენა
კალენდარი უფლება.
ასე რომ, ეს არის სქემატური, რომ ზოგიერთ თქვენგანს შეიძლება მინახავს ოფისში საათის ან
დიაგრამების, რომ ჩვენ ხატვის, როგორც თქვენ იყო მჭიდროდაა თქვენი pset.
>> ასე რომ აქ, მოცემულ კონტროლერი, მოდელი კონტროლერი, ჩვენ ფუნქციები
რომ ეხებოდეს querying SQL მონაცემთა ბაზა, შესრულებაში PHP ლოგიკა.
იქნებ ეძებოთ საფონდო Yahoo!
ფინანსები.
ან შესაძლოა, თქვენ უბრალოდ შეამოწმეთ თუ არა პროფაილი ჰქონდა წარმოდგენილი
ჩამოყალიბდეს უკვე ადრე მქონე ეწვია თქვენი გვერდი.
და მაშინ გამოიტანოს ფორმა აქ.
მას შემდეგ, რაც ფორმით იყო წარმოდგენილი მომხმარებლის მიერ, ქმედება, რომელიც იყო
განსაზღვრული ფორმის HTML tag მიუთითებს გვერდზე, რომ
ბრუნდება, რომ მონაცემები.
>> ასე რომ ყველა, რომ ინფორმაცია იქნება დააბრუნეს თქვენი კონტროლერი.
მაშინ ალბათ ცოტა მეტი ლოგიკა, რომ და შესაძლოა შეასრულოს რამდენიმე
უფრო queries in SQL მონაცემთა ბაზაში და მაშინ, საბოლოოდ, ამუშავება ლამაზად
შეფუთული კომპლექტი ინფორმაცია, რომ თქვენ გაივლის შევიდა ზოგიერთი სხვა template
რომ გამოჩნდება ამ ინფორმაციას.
ახლა, როგორ ჩვენ რეალურად პაკეტი რომ ინფორმაცია up?
ისე, ჩვენ გვაქვს ფუნქცია მოუწოდა Render რომ იყო functions.php ფაილის
pset7, სადაც თქვენ გაივლის სახელი ფაილის სახელი თარგი.
>> და მაშინ ასევე გაივლის ასოციაციურ მასივში.
და ისე, რომ ასოციაციურ მასივში წარმოადგენს სხვადასხვა ინფორმაცია
რომ გსურთ გაივლის შემოსული
ახლა, რა იქნება მუდმივი ეს მაგალითები არის, რომ ღილაკები ან,
უფრო სწორად, გასაღებები ასოციაციურ მასივები, ეს რა იქნება
იქნება მუდმივი მიერ თარგი, რადგან იგი დარწმუნებულია, მას სჭირდება
რაღაც მოუწოდა გაგზავნა ან დარეკა სახელი.
და მაშინ რამ უფლება, რეალურ ღირებულებებს, ასე რომ, ამ შემთხვევაში, რომელიც
კარგი ბიჭი და Milo, იმ ვაპირებთ უნდა იყოს ღირებულებები, რომ იცვლება
რომ კონტროლერი ცვლის ყოველ ჯერზე ან მის საფუძველზე გარკვეული მდგომარეობა და
გაივლის, რომ სისტემაში
>> ასე რომ, აქ თარგები, ჩვენ ვხედავთ, რომ ჩვენ იყენებთ HTML სპეციალური სიმბოლოების,
რომელიც უბრალოდ ნიშნავს იმას, რომ ჩვენ გვინდა მიიღოს თანხმობა string რომ
პროფაილი დააყენა სისტემაში
და გვინდა, რომ შეიცვალა გაგზავნა იქ.
ასე რომ, მაშინ, როდესაც ჩვენ რეალურად ნახოთ ფაილის განსაზღვრული
ინფორმაცია გავიდა შემოსული
გაითვალისწინეთ, რომ გასაღები, როგორ გაუწიოს სამუშაოები რომ გასაღები ასოციაციურ
მასივები, იმ გახდეს ცვლადი სახელები აქ.
და ასე ღირებულებებს რომ გასაღები ასოციაციურ მასივში ხდება
ღირებულება ცვლადი.
>> ახლა, მოდით გადაადგილება SQL.
იგი დგას სტრუქტურირებული შეკითხვის ენა.
და ეს არის მხოლოდ პროგრამირების ენის შექმნილია
მართვის ბაზაში.
და ის მოვიდა მოსახერხებელი ჩვენთვის ჩვენი pset7 ფინანსთა ნახვა.
არსებითად, უბრალოდ მარტივი გზა აკონტროლოთ და მართოთ ობიექტები და მაგიდები
და დაუკავშირონ ისინი ერთმანეთს.
ახლა, ვფიქრობ, რომ თქვენი SQL მონაცემთა ბაზაში ძირითადად, როგორც Excel ფაილი, ალბათ,
მრავალი tabbed sheets.
>> ასე რომ თქვენ შეიძლება მრავალჯერადი მაგიდები, ალბათ, რომ უკავშირდება ერთმანეთს.
და ჰგავს Excel, ჩვენ ბევრი ფუნქციონალური, რომ ჩვენ გვინდა.
მაგალითად, ჩვენ შეგიძლიათ აირჩიოთ გარკვეული რიგები.
ჩვენ შეგვიძლია ჩადეთ ინფორმაციას.
ჩვენ შეგიძლიათ განაახლოთ რიგები.
და ჩვენ ასევე შეგიძლიათ წაშალოთ რამ.
>> SQL აირჩიეთ ნამუშევრების შერჩევის რიგები ან გრაფაში მითითებული სვეტების
მონაცემთა ბაზა, რომელიც შეესაბამება გარკვეული კრიტერიუმები, რომ თქვენ მიუთითოს.
ასე რომ აქ, როცა ვხედავ SELECT * FROM ოსტატები, სადაც სახლი = Ravenclaw, მაშინ
მე შერჩევისას *, რაც იმას ნიშნავს, რომ მე ვარ შერჩევის ყოველი სვეტი, რომელიც
ზედიზედ ოსტატები მაგიდასთან, მაგრამ მხოლოდ იმ შემთხვევაში, სახლი სვეტი შეადგენს Ravenclaw.
ახლა, ეს არის სუფთა და SQL.
ასე რომ, თუ მე შევიდა phpMyAdmin, რომელიც კონკრეტული გზა, რომ ჩვენ ვიყენებთ მართვა
ჩვენი SQL მონაცემთა ბაზა, მაშინ მე ვერ ჩადეთ რომ შევიდა phpMyAdmin ნახვა.
და რომ შეასრულოს.
>> მაგრამ ჩვენ რეალურად გსურთ რომ PHP მხარეს.
ასე როგორ უნდა ამის გაკეთება?
ასევე, ჩვენ ვიყენებთ შეკითხვის ფუნქცია, რომელიც ძირითადად ახორციელებს, რომ SQL შეკითხვაზე.
გამოყენება?
როგორც placeholder, ჩვენ შეგვიძლია გაივლის გარკვეულ ღირებულებები ჩვენს string, რომ ჩვენ
გსურთ შეცვლის.
ასე რომ, ალბათ მე შენახვის სხვადასხვა ღირებულებების curr_house, რომელიც
წარმოადგენს მიმდინარე სახლი რომ მე ვაპირებ მეშვეობით.
ასე რომ, მე ვერ გაივლის, რომ როგორც placeholder ერთად კითხვის ნიშნის.
და მაშინ მე ძირითადად შეასრულოს იგივე, რაც მე ადრე, გარდა იმისა,
ახლა, მე PHP.
>> და შეკითხვაზე დაბრუნდება ასოციაციურ მასივში.
და მე ვაპირებ შესანახად ის რიგები.
ახლა შეკითხვაზე ყოველთვის შეიძლება ვერ.
ალბათ SQL შეკითხვაზე ვერ შეასრულოს იმიტომ, რომ მაგიდაზე არ არსებობს.
ან შესაძლოა, სვეტი არ არსებობს.
რაღაც წავიდა არასწორი.
ისე, ამ შემთხვევაში, თქვენ გინდათ დარწმუნდით, რომ თქვენ შეამოწმოთ არის თუ არა
შეკითხვაზე დაბრუნდა ყალბი.
და რომ ის გამოყენებით triple შეადგენს ოპერაცია არსებობს.
>> და მაშინ მე ბოდიშს, რომელიც სხვა CS50 ფუნქცია, გადადის გაგზავნა.
და თუ თქვენ შეისწავლის ბოდიშს, ყველა ეს მართლაც არის გაუწიოს apology.php.
ჰო.
>> აუდიტორია: იქნებ ახსნას რა, რომ star აკეთებს შორის შეარჩიეთ და?
>> Zamyla CHAN: Yeah, აბსოლუტურად.
ასე რომ ვარსკვლავი შორის არჩევა და ნიშნავს, რომ მე უნდა აირჩიოთ მთელი
მთელი რიგი ჩემი მაგიდა.
მე ვერ მოვისმინეთ მითითებული select სახელი, წელი, სახლი.
და მე მხოლოდ იმ სამი სვეტების ჩემს მაგიდასთან.
მაგრამ თუ მე ვიტყვი, select *, მაშინ მე ყველაფერი რომ სვეტი.
მაშინ მე ვაპირებ წასვლა თქვენ უკან პირველი.
>> აუდიტორია: ასე რომ, ეს არის კიდევ in SQL, არა?
არის ამ შეკითხვაზე ან ამ PHP?
>> Zamyla CHAN: ჩვენ შეკითხვაზე.
ასე რომ, ეს არის PHP.
ასე რომ იყენებთ PHP ფუნქცია შეკითხვაზე, ჩვენ შესრულებაში SQL შეკითხვაზე.
>> აუდიტორია: არის არაფერი SQL მგრძნობიარეა, როგორც შერჩევა
ან ოსტატები ან სახლში?
>> Zamyla CHAN: Is არაფერს in SQL მგრძნობიარეა?
მე მჯერა, ასე რომ, დიახ.
მე მჯერა, რომ SELECT და და სადაც მგრძნობიარეა.
არა?
>> რობ Bowden: ასე რომ, პირიქით.
მწკრივის სახელები და მაგიდაზე საშუალებით, ყველა იმ მგრძნობიარეა.
მაგრამ ნებისმიერ MySQL გასაღები სიტყვები ისევე, როგორც SELECT,, და სადაც, ეს ის არ არის
მგრძნობიარეა.
OK.
ასე რომ, საპირისპირო, რაც მე ვთქვი.
ასე რომ, ყველა MySQL საკვანძო სიტყვები -
აირჩიეთ, საწყისი, სადაც - ის არ არის მგრძნობიარეა.
მაგრამ ყველაფერი არ არის.
OK.
თქვენ წინაშე.
>> აუდიტორია: თუ მაქვს $ რიგები თვალსაზრისით ერთზე მეტი ზედიზედ, ნიშნავს არის
უბრალოდ ხდება ასოციაციურ მასივში?
>> Zamyla CHAN: ასე რომ კითხვა იყო თუ რიგები აქვს ერთზე მეტი ზედიზედ, მას არ
გახდა ასოციაციურ მასივში?
ასე რომ, ეს არის მასივი ასოციაციურ მასივები უკვე.
ისე კი, თუ არსებობს მხოლოდ ერთ გრაფაში დაბრუნდა, მაშინ ნეტავ უნდა წავიდეს
ინდექსი 0, რომ შედეგი.
და მაშინ მინდა, რომ პირველი row.
დიახ, Belinda?
>> აუდიტორია: როდესაც თქვენ გამოიყენოს ===, ეს მხოლოდ მაგალითად?
ან არსებობს სხვა?
>> Zamyla CHAN: ასე რომ, ამ შემთხვევაში, === არის შედარებით მასშტაბით ტიპის.
უკაცრავად. === არის შედარებით რომ ადარებს ტიპის.
და მაშინ == ადარებს მასშტაბით ყველა სახის.
>> აუდიტორია: შეგიძლიათ, თუ რა რიგები არის ამ სიტუაციაში?
იგი გრაფაში მონაცემები?
>> Zamyla CHAN: მომდევნო slide ვარ აპირებს, თუ რა რიგები არის.
ასე რომ, თუ არ იბადება ჩატარების off რომ.
და მაშინ უკან?
>> აუდიტორია: For ფუნქციები, როგორიცაა შეკითხვაზე, გაწევა და ბოდიშს [INAUDIBLE]?
>> Zamyla CHAN კითხვა იყო თუ არა ეს ფუნქცია - ფრაზა, ბოდიშს,
და გამოიტანოს -
საერთო მასშტაბით PHP.
ეს არის პირობა, რომ CS50 წერდა pset7.
და Jay?
>> აუდიტორია: როცა უნდა ვთქვა $ _SESSION, რომ მხოლოდ პირადობის მოწმობები?
ან შეიძლება თქვენ თქვით, რომ აქ?
>> Zamyla CHAN: ასე კითხვა იყო, როდესაც ჩვენ ვიყენებთ $ _SESSION, რომ იყო კონკრეტული
გლობალური ცვლადი, რომ ჩვენ იყენებთ.
აქ ამ ცვლადის აპირებს ადგილობრივი ჩვენი ფუნქცია.
ასე რომ ჩვენ უბრალოდ გამოცხადების ახალი ცვლადი.
>> აუდიტორია: როგორ ბოდიშს განხორციელებული?
>> Zamyla CHAN კითხვა იყო, როგორ არის ბოდიში ხორციელდება?
და მე ვფიქრობ, ეს არის რეალურად საკმაოდ კარგი პრაქტიკის თქვენ ბიჭები წასვლას
functions.php განყოფილების და შევხედოთ ბოდიშს და თუ როგორ შეიძლება
გააკეთებდა თავს.
ასე რომ, მე შეიძლება დატოვოს, რომ თქვენ, არამედ მხოლოდ ამბობენ, რომ თუ გადავხედავთ ბოდიშს,
მაშინ იგი იღებს გაგზავნა, რომ თქვენ წარმოდგენილი ბოდიშს, და მაშინ იგი
უწევს, რომ გაგზავნა.
ნებისმიერი უფრო მეტი შეკითხვა?
მე მიყვარს შეკითხვებს.
ასე რომ, მათ მომავალი.
>> აუდიტორია: [INAUDIBLE]
echo ან ბეჭდვითი იქ?
>> Zamyla CHAN კითხვა იყო, შეგვიძლია არა მხოლოდ შეეძლო
echo ან ბეჭდვითი არსებობს.
ისე, რომ არ კეთდება რამე ოდნავ განსხვავებული.
რომ არ იბეჭდება შეკითხვაზე ვერ შევიდა, რომ -
კარგად, ახლა, ჩვენ, ფაქტობრივად, ჩვენს კონტროლერი.
ასე რომ, ჩვენ არ რეალურად HTML წყობის აქ.
ბოდიშს by გაწევის apologize.php რეალურად გადამისამართებების გაძლევთ apology.php.
OK.
>> ახლა, მოდით წავიდეთ on მივმართო კითხვა ადრე იმაზე, თუ რა
ნამდვილად არის რიგები.
ისე, შეკითხვაზე დაბრუნდება მასივი რიგები.
და ყველა row წარმოდგენილია by ასოციაციურ მასივში.
ასე რომ, თუ მე შესრულებული ზოგიერთი SQL შეკითხვაზე და მე ინახება შედეგი რიგები, მაშინ
გამოყენებით foreach მარყუჟის, მაშინ მასივი სახელი პირველი იქ - რიგები.
და მაშინ მე ვაპირებ მოვუწოდო ყველა row იქ $ row.
>> ასე რომ iterating მეტი რომ, მე შეიძლება მაშინ შედიხართ ამ row სახელი სვეტი,
წელს სვეტი, და სახლი სვეტი.
გაითვალისწინეთ, რომ მე არ შეძლო ამისათვის რიგები, რადგან რიგები ინდექსი
სახელი არ არსებობს.
რიგები არის მხოლოდ მასივი ასოციაციური მასივები.
ასე, რომ თქვენ ორ დონეზე არსებობს.
მას შემდეგ, რაც თქვენ გაქვთ მასივი რიგები, თქვენ უნდა მიიღოთ შევიდა, რომ.
და შემდეგ შეგიძლიათ სვეტით.
იცოდით, რომ ნათლად?
ჰო, წინ?
>> აუდიტორია: [INAUDIBLE] გახსნა ფრჩხილებში განთავსების [INAUDIBLE]?
>> Zamyla CHAN: შეწყალებას me?
>> აუდიტორია: ღია ფრჩხილებში.
>> Zamyla CHAN: ეს აქ?
რომ საშუალებითაც ჩემთვის არის რომ ცვლადი.
ჰო.
>> აუდიტორია: როდესაც თქვენ ბეჭდვა, თქვენ ბეჭდვის to HTML კოდი?
>> Zamyla CHAN: დიახ.
როდესაც მე ბეჭდვა, აქ არის შიგნით ჩემი template ახლა, ასე რომ
ჩემი აზრით MVC მეთოდი.
ასე რომ, მე დაბეჭდვის შევიდა HTML.
>> აუდიტორია: ასე რომ, თუ ჩვენ შევიდა დეველოპერი ინსტრუმენტები შემდეგ გაშვებული ეს, ჩვენ შეგვიძლია
რომ რეალურად კოდი?
>> Zamyla CHAN: სწორედ დიდი კითხვაზე, yeah.
ასე რომ, თუ თქვენ შევიდა დეველოპერი ინსტრუმენტები in Firefox გამოყენებით Firebug ან
Chrome, მაშინ ჰო, თქვენ შეიძლება ვხედავ კონკრეტულ HTML.
ასე რომ, ეს არ ჩანს, $ row ["სახელი"].
ეს იქნებოდა ნახოთ რომელი სახელი რომ row.
>> აუდიტორია: Just ზოგადი საკითხი, რა tr და td განისაზღვრება, როგორც?
რატომ ჩვენ [INAUDIBLE]?
>> Zamyla CHAN: Table row tr, მაგიდა მაშინ td სვეტი.
OK.
>> აუდიტორია: Yeah, ეს მაგიდასთან მონაცემები.
>> Zamyla CHAN: მაგიდა მონაცემები.
ჰო.
>> აუდიტორია: ეს სერია, რომელიც row განიხილება, როგორც სვეტი?
>> Zamyla CHAN: უკაცრავად.
შეგიძლიათ გავიმეორო, რომ?
>> აუდიტორია: რა ვიზუალურად რიგები?
>> Zamyla CHAN: რა ვიზუალურად სტრიქონების რა სახის გზა?
ვსაუბრობთ ამ რიგები აქ ან tr რიგები?
>> აუდიტორია: რიგები.
>> Zamyla CHAN: ეს რიგები აქ?
მინდა ვიზუალიზაციისთვის ეს მე შეასრულოს ჩემს შეკითხვაზე.
და ნათქვამია, OK, მაქვს ან 0 n თანხის რიგები, რომლებიც შეესაბამება კრიტერიუმებს
რომ თქვენ გაეგზავნება.
ასე რომ მაქვს გარკვეული რაოდენობის რიგები.
ასე რომ, რიგები, $ რიგები, მაღაზიები, თითოეული ერთი იმ სტრიქონების მასივი.
ისე კი, თუ ეს მხოლოდ ერთი მათგანი, ის კვლავ მასივი რიგები, რომლებიც შეესაბამება მას.
>> ასე რომ მაშინ, მაგალითად, ეს არის მსგავსი როდესაც თქვენ fetched
ქეში მომხმარებლებს.
და კრიტერიუმები იყო, სადაც ID შეადგენს სხდომაზე პირადობის მოწმობა.
მართლაც მხოლოდ ერთ გრაფაში რომ შეიძლება ემთხვევა, რომ.
მაგრამ მაინც რიგები მხოლოდ დაბრუნდა ერთ გრაფაში.
ასე ნეტავ უნდა წავიდეს რიგები, ინდექსი 0, ინდექსი cache to
რეალურად მიიღოთ თქვენი ქეში.
>> აუდიტორია: არის ბეჭდვის ფუნქცია in echo იგივე?
>> Zamyla CHAN: დიახ.
დიახ.
Print echo იგივე.
>> აუდიტორია: არის foreach loop ერთადერთი გზა ინდექსი შევიდა რიგები?
>> Zamyla CHAN: არის foreach loop ერთადერთი გზა, რომ თქვენ შეგიძლიათ
iterate მეშვეობით რიგები?
პოსტები
ასევე, შეგიძლიათ გამოიყენოთ ამისთვის მარყუჟის, იმ პირობით, რომ თქვენ იცით ხანგრძლივობა
რიგი სიგრძე მასივი.
>> აუდიტორია: იქნებ ვებგვერდზე გამოყენებით a row, როგორც [INAUDIBLE]?
>> Zamyla CHAN: ასე რომ თქვენ ვერ შედიხართ ის უბრალოდ გამოყენებით row თუ თქვენ არ გაქვთ
foreach loop იმ პირობით, რომ თქვენ არ განაცხადა row.
დიახ.
ჰო, თეთრი.
>> აუდიტორია: ასე რომ, რას tr და td გავაკეთოთ?
>> Zamyla CHAN: So tr და td არის HTML tags.
tr მიუთითებს დასაწყისში მაგიდა row.
და თითოეული td მიუთითებს ახალი მაგიდა მონაცემები სვეტში.
>> აუდიტორია: For ვიზუალური რა a row ჰგავს, წარმოიდგინეთ SQL, თუ როგორ
მათ აქვთ row.
[INAUDIBLE].
>> Zamyla CHAN: ჰო.
სწორედ დიდი წერტილი.
შეგიძლიათ ვიზუალურად რიგები, როგორც მხოლოდ როგორც Excel მაგიდა, უბრალოდ
სიაში რიგები.
OK.
ყველა უფლება.
ასე რომ, ახლა რომ ჩვენ წავიდა აირჩიეთ, თუ არ არსებობს უფრო მეტი შეკითხვა, ჩვენ
წასვლა გადატანა ჩანართით.
ასე რომ, თუ მინდოდა ჩადეთ ზოგიერთი მაგიდა და ჩადეთ გარკვეული სვეტი
ღირებულებები, მე ვერ ჩადეთ თავს თარგმნეს Ravenclaw წელს 7.
მაგრამ ზოგჯერ შეიძლება იყოს დუბლიკატი ფასეულობები, როგორც ვნახეთ pset7 როდესაც ჩვენ
იყო განახლებაზე ჩვენი პორტფელი.
>> ასე რომ, ამ შემთხვევაში, ჩვენ გვინდა გამოვიყენოთ ON დუბლიკატი KEY UPDATE, რომ ჩვენ არ
შესანახად მრავალჯერადი რიგები იგივე ვაფასებთ, არამედ განახლება.
მაშინ ჩვენ რეალურად უნდა განახლება, რომელიც არ არის ჩანართით.
უბრალოდ განახლება სადაც თქვენ განახლება გარკვეული მაგიდასთან მოცემული
კრიტერიუმები და მაშინ, საბოლოოდ, წაშლა, რომელიც აკეთებს ძალიან მსგავსი რამ.
>> აუდიტორია: იქნებ მოკლედ წასვლა მეტი დუბლიკატი გასაღები?
>> Zamyla CHAN: ჰო.
არსებითად აქ, მე მაქვს INSERT INTO gringotts არის, galleons, ამ ღირებულებებს.
მაგრამ ID, სავარაუდოდ, უნიკალური გასაღები ღირებულება შეიქმნა MySQL მაგიდა.
ასე რომ, თუ მე უკვე მაქვს, რომ ID შექმნას, მაშინ მე ვერ ჩადეთ ახალი row.
ასე რომ, თუ ის არ არსებობს უკვე, მაშინ მე უნდა განაახლოს იგი.
შუა თეთრი.
>> აუდიტორია: ასე რომ, ჩადეთ, განახლება, წაშლა, და აირჩიეთ, არიან ისეთებიც, ყველა არსებული
ადგილობრივად [INAUDIBLE]?
>> Zamyla CHAN: ასე რომ, ჩადეთ, განახლება, წაშლა და
აირჩიეთ ყველა SQL queries.
ასე რომ, როდესაც თქვენ იყენებთ SQL, თქვენ იმ შესაძლებელი.
>> აუდიტორია: დაბრუნება წარსულში ტესტებში -
იყო შეკითხვა, რომ შესძლეს თუ ჰქონდა მაგიდა და სურდა
ჩადეთ ტესტი ქულით ერთ და თქვენ ჩადეთ თქვენი სახელი ასე რომ არ დავუშვებთ თქვენ
[INAUDIBLE] თქვენი მეგობრის ტესტი ქულა.
რა გავაკეთოთ, რომ insert?
>> Zamyla CHAN: ასე რომ კითხვა იყო დაახლოებით წინა შუალედური კითხვა.
მე არ ვარ საქმის კურსში, რომელიც ერთი ეს არის ახლა.
იქნებ ამის შემდეგ, თუ გსურთ ამუშავება და ეჩვენებინა, მაშინ შემიძლია
რა თქმა უნდა გადმოგცეთ რჩევები.
მაგრამ საუბარი ჩასმა რამ, როგორიცაა აღების ვინმეს ანგარიში, როდესაც თქვენ
არ უნდა, მოდით ვისაუბროთ SQL ინექცია თავდასხმები.
ასე რომ, SQL ინექცია თავდასხმა არსებითად სადაც ვინმე იღებს
უპირატესობა დაბალი უსაფრთხოება ისე, რომ თქვენ იღებენ მონაცემები.
>> ასე რომ, აქ, ისევე, როგორც CS50 ფინანსთა, როდესაც ჩვენ შესული, ჩვენ შეგვიძლია შევა
მომხმარებლის სახელი შესვლის ფორმა, პირველი ტექსტში ყუთი და
შემდეგ შეიყვანოთ პაროლი.
ალბათ ჩვენი PHP კოდი შეიძლება გამოიყურებოდეს მსგავსი რამ, სადაც $ username
არის პოსტ მონაცემები სახელი და პაროლი არის პოსტ მონაცემები დაგავიწყდათ.
და შემდეგ ჩვენ უბრალოდ შეასრულოს ჩვენი შეკითხვაზე, ვთქვათ, OK, ასევე, ჩვენს შეკითხვაზე აპირებს
აირჩიეთ ჩვენი მომხმარებლების, სადაც სახელი არის
ერთი, რომ მათ წარმოდგენილი.
და პაროლი არის პაროლი, რაც იმას ნიშნავს, რომ პაროლები ემთხვევა.
>> ახლა, რა, თუ ნაცვლად რეალურად წარდგენის ფაქტობრივი დაგავიწყდათ, ისევე როგორც
12345 და გამოცნობა at prong, რომელიც ამბობს, პაროლი და ცდილობს hack მათი
ანგარიში, თუ ნაცვლად მათ განაცხადეს, ეს.
მათ შეეძლოთ აკრიფოთ იქნებ ვხვდები, ერთი პაროლი.
და მაშინ ისინი დაამთავრებენ გაცემა მაშინ აკრიფოთ or 1 = 1.
რომ ჰგავდა პირდაპირ SQL შეკითხვის გამოიყურება რაღაც მსგავსი.
აირჩიეთ წევრებს, სადაც username = კბილანები და პაროლი
შეადგენს lily or 1 = 1.
>> ასე რომ, არც დაგავიწყდათ აქვს უნდა იყოს ზუსტი or 1 = 1,
რომელიც ყოველთვის მართალია.
ასე რომ, ამ შემთხვევაში, ძირითადად, მომხმარებელს შეუძლია ისარგებლოს ამ და უბრალოდ შედით
თავი და hack ვიღაცის ანგარიშზე.
ასე რომ, ამიტომ ჩვენ გვინდა, რომ თავიდან ავიცილოთ ვინმე, რომელსაც ამის გაკეთება.
მაგრამ საბედნიეროდ, შეკითხვის ფუნქცია გავლის placeholders მიიღებს
ზრუნვა ეს თქვენთვის.
ასევე, თქვენ, როგორც წესი, არ მინდა, რეალურად წარმოადგინონ პაროლები
თავს.
ამიტომ, ჩვენ hashed ან დაშიფრული მათ CS50 ფინანსთა.
>> აუდიტორია: წარსული ვიქტორინა ისაუბრა შესახებ MySQL გაქცევის strings.
გვაქვს ფიქრი, რომ?
>> Zamyla CHAN: ეს კარგი კითხვაა.
MySQL გაქცევის strings ნამდვილად ფუნქცია, რომელიც გამოიყენება ჩვენს შეკითხვაზე.
მაგრამ ნამდვილად გამოიყურება შევიდა, რომ.
მე მინდა ვთქვა, რომ სამართლიანი თამაში იცოდეს რომ ნეტავ უნდა მოვუწოდებთ, რომ
ფუნქციონირებს on სიმებიანი.
ჰო, Belinda?
>> აუდიტორია: როგორ იცით, როდესაც ის ერთჯერადი შეთავაზებები და ორმაგი შეთავაზებები?
და ასევე, ვგრძნობ, როგორიცაა ლექცია თქვენ აღნიშნული რაღაც შესახებ არ მქონე
[INAUDIBLE] ან რაღაც ან მეორე სინგლი გაცემა დასასრულს.
ვფიქრობ, მან აღნიშნა, ლექცია, რომ თქვენ უნდა აქვს აპოსტროფი 1
და მაშინ არ აქვს apostrophes ან რამე.
>> აუდიტორია: [INAUDIBLE].
>> აუდიტორია: საქმე ის არის, რომ ბოლო ერთი გაცემა იქ რომ მეორე ყუთი
არ უნდა იყოს იქ.
[INAUDIBLE]
რადგან, როდესაც თქვენ მიიღოს, რომ ბოლო ერთი ციტირებით out და ემთხვევა ამ შინაარსის
სადაც პაროლი არის, თუ თქვენ გაქვთ, რომ შეკითხვაზე, არსებობს ერთი გაცემა at
ბოლოს უკვე.
გსურთ გამოიყენოთ, რომ ერთი გაცემა როგორც ერთი, რომ დგას ერთი
[INAUDIBLE].
რა არის რეალურად რომ ტექსტი ყუთი არ აქვს, რომ.
>> Zamyla CHAN: მე შეცვლის.
OK.
იმ შემთხვევაში, თუ არ არსებობს რაიმე შეკითხვა, მაშინ მე გაივლის მას მეტი ჯოზეფ გაიგო
დაახლოებით JavaScript, et cetera.
>> [ტაში]
>> JOSEPH ONG: ასე რომ, ჩვენ გაშვებული ცოტა უკან.
ასე რომ, თუ თქვენ უნდა დატოვონ, რომ OK.
მაგრამ ჩვენ ვთხოვთ, რომ თქვენ გაქვთ თქვენი ხელმძღვანელები ქვემოთ თუ თქვენ შუა, ასე რომ თქვენ
არ დაბლოკოს კამერა და თქვენ იყენებთ უკან გასასვლელი, თუ თქვენ უნდა.
მე ჯოზეფ სხვათა შორის.
Hi.
ტესტი, ტესტი.
Dan არის, რომ კარგი?
ზემოთ.
>> ასე რომ, video ასევე დაიდება ონლაინ მათთვის, რომ
უნდა დატოვონ ახლა.
უხერხულია.
OK.
ასე რომ, ინტელექტუალური მიმოხილვა.
ეს არის კატა.
ახლა, JavaScript, რომელიც შესაძლოა არ როგორც aww ზოგიერთი თქვენ ბიჭები.
OK.
ასე რომ, პირველი, გავიხსენოთ Zamyla.
გახსოვდეთ, რომ PHP არის აწარმოებს სერვერზე.
და უამრავი ჯერ, თქვენ ბიჭები დაწერა მარყუჟების in PHP ამობეჭდოთ HTML, არა?
ასე რომ ერთხელ რომ კოდი ახორციელებს, რომელიც HTML გამომუშავება, რომ თქვენ ამობეჭდოთ
იღებს გაგზავნილი შესახებ.
და კიდევ, რაც ხდება, აღარ PHP სისტემაში აწარმოებს, თუ თქვენ განაახლეთ გვერდი, საქართველოს
რა თქმა უნდა, რომელიც reexecutes PHP.
მაგრამ ერთხელ თქვენ ამობეჭდოთ რომ HTML, თქვენ არ შეგიძლიათ არსად.
>> ასე რომ HTML იგზავნება მეტი მომხმარებელი, რომელიც ბრაუზერის აქ, სადაც
Milo გამოყენებით კომპიუტერში.
და ა.შ. ასევე, არსებობს რამდენიმე რამ ერთხელ ჩვენ HTML შესახებ.
ზოგჯერ გვინდა, რომ რაღაც მოსწონს როდესაც თქვენ დააჭირეთ რაღაც, ჩვენ გვინდა
alert ყუთები პოპ up, იმ სახის ურთიერთქმედების, როგორიცაა, როდესაც თქვენ დააჭირეთ
გასაღები, როდესაც თქვენ დააჭირეთ რაღაც გვერდი, მინდა რაღაც მოხდეს.
ასევე, თქვენ ვერ reexecute PHP კოდი ერთხელ რომ HTML არის მითითებული.
ასე რომ, როგორ გავაკეთოთ ეს?
>> ჩვენ წარმოგიდგინოთ ახალი ენის მოუწოდა JavaScript, რომელიც ეშვება ბრაუზერის
რომელიც საშუალებას გაძლევთ გავაკეთოთ რამ, HTML-მიღების შემდეგ
მათ სერვერზე.
და ამიტომ ჩვენ მას კლიენტის მხარის პროგრამირების ენა.
იგი მუშაობს თქვენს კომპიუტერში -
კლიენტს.
რაიმე შეკითხვები, რომ აქამდე?
ეს პარადიგმა აზრი ხალხს?
OK.
კარგი.
ყველა უფლება.
ასე რომ, პირველი, რაც უნდა აღინიშნოს, არის JavaScript არ არის PHP.
>> მათ აქვთ განსხვავებული სინტაქსი, რომელიც ჩვენ წასვლას.
და მათ აქვთ ძალიან განსხვავებული მიზნებისათვის.
JavaScript, კიდევ ერთხელ, თქვენი ბრაუზერი, კლიენტს.
სერვერი ეშვება სადმე სხვის კომპიუტერი, რომელიც აგზავნის ინფორმაცია
თქვენ, სწორი?
ასე რომ, თუ ჩვენ ვთხოვთ გაძლევთ დაწეროთ PHP კოდი გამოცდაზე კითხვა, არ წერენ
JavaScript და პირიქით.
თქვენ უბრალოდ დაკარგავთ რაოდენობა, და ეს არ იქნება სწორი.
>> მოდით შეღწევას ზოგიერთი სინტაქსი განსხვავებები -
JavaScript მარცხენა და PHP უფლება.
პირველი, რაც თქვენ შეამჩნევთ ერთად JavaScript, ვაცხადებთ ცვლადს
var სიტყვით -
V-A-R. PHP გამოიყენება დოლარის ნიშანი, როგორც Zamyla განიხილა ადრე.
თუ გსურთ აცხადებენ ასოციაციურ array, ჩვენ ვხედავთ, ნაცნობი სინტაქსი on
მარჯვენა მხარეს PHP.
მარცხენა მხარეს, ნაცვლად თქვენ იყენებთ curly აფრთხილებს.
და შემდეგ თქვენი გასაღებები მარცხენა.
მაშინ თქვენ გაქვთ მსხვილი ნაწლავის.
და მაშინ თქვენ ღირებულებები რომ გსურთ.
>> ასე რომ, ეს არის, თუ როგორ სურს ამის გაკეთება PHP მარჯვენა მხარეს, რომ მეორე
ხაზი, რომელიც იწყება Milo.
და ეს არის ის, თუ როგორ ამის შესახებ მარცხენა მხარეს JavaScript თუ გსურთ
რაც ჩვენ მოვუწოდებთ ობიექტი.
და ობიექტების JavaScript არიან უბრალოდ ასოციაციური მასივები.
ასე რომ, თუ გსურთ შედიხართ სფეროებში, PHP თქვენ იყენებთ ამ bracket სინტაქსი.
და ამ გზით, შეგიძლიათ reassign მფლობელი სფეროში Lauren.
>> ასევე, JavaScript, თუ გსურთ წვდომის სფეროში და შეცვალოს იგი, თქვენ შეგიძლიათ
გამოიყენოთ dot სინტაქსი.
თქვენ ასევე შეგიძლიათ გამოიყენოთ bracket სინტაქსი.
მაგრამ ვერ გამოიყენებს dot სინტაქსი PHP.
ეს არ იმუშავებს.
ეს მხოლოდ მუშაობს PHP.
და ბოლოს, ბეჭდვა რამ კონსოლი, თქვენ იყენებთ console.log, რომელიც
თქვენ ბიჭები გამოიყენოთ ბევრი pset8.
თქვენ შეგიძლიათ console.log რომ.
>> თუ გსურთ ბეჭდვა მასივი PHP, თქვენ უნდა გამოიყენოთ ბეჭდვითი r.
და მარჯვენა მხარეს, თქვენ ხედავთ i hash სიმებიანი გაერთიანების იქ.
ვიღაცამ სთხოვა ადრე.
გამოვიყენო პლუს JavaScript.
თუ მინდა concatenate რაღაც in PHP, გამოვიყენო dot.
ეს არის განსხვავებული.
თუ თქვენ წერა PHP კოდი, არ გამოიყენოთ plus.
თუ თქვენ წერა JavaScript კოდი, არ წერენ dot.
ეს იქნება არასწორი.
და თქვენ უნდა სამწუხარო.
>> ასე რომ სინტაქსური განსხვავებები.
იცით თქვენი სინტაქსი, რადგან თუ თქვენ უნდა წერა კითხვა და თქვენ იყენებთ სინტაქსი
არასწორი ენაზე ეს არ იმუშავებს.
და ეს იქნება არასწორი.
მოდით ვისაუბროთ ზოგიერთი კონტროლი შემოვა განსხვავებები, თუ როგორ გამოიყენოთ
მარყუჟების თითოეული მათგანი.
Zamyla გადავიდა მარჯვენა მხარეს.
პერსონალის მარჯვენა მხარეს უნდა იყოს ნაცნობი.
მოდით შევხედოთ მარცხენა მხარეს.
>> როდესაც თქვენ გამოიყენოს n loop in JavaScript, თქვენი loop ცვლადი, var i იქ,
loop მეტი გასაღებები მასივი.
ასე რომ, თქვენ ხედავთ, სახელი, სახლი, და როლი.
თუ მე console.log i, მივიღებ სახელი, სახლი, და როლი.
ეს არის გასაღები.
ამ JavaScript, foreach loop მიდის მეტი ფასეულობების ამ მასივი.
ასე რომ, თქვენ შეამჩნევთ, ისინი ორივე i.
მაგრამ აქ PHP მხარეს, იგი ბეჭდავს out Milo, CS50 და Mascot.
იმ ღირებულებების PHP.
>> ასე რომ ეს არის თუ როგორ შეიძლება ამ ორი სხვადასხვა სხვადასხვა ენებზე.
ასე რომ, თუ თქვენ იყენებთ foreach loop, არ ვივარაუდოთ, რომ ეს
გაძლევთ გასაღებები.
და თუ თქვენ იყენებთ განთავსების n loop, არ ვივარაუდოთ, რომ ეს გაძლევთ ღირებულებებს.
ნიშნავს თუ არა ეს აზრი აქამდე?
მომდევნო slide აპირებს გაჩვენოთ როგორ შეგიძლიათ საპირისპირო in
თითოეული მათგანი.
>> ასევე, თუ თქვენ გაქვთ გასაღები JavaScript თქვენ გსურთ ღირებულება გარეთ,
უბრალოდ ინდექსი შევიდა array რომ.
ასე რომ მილო მე მიიღებს, თუ რა გსურთ - ღირებულებებს.
არსებობს ამ სხვადასხვა სინტაქსი PHP.
თუ თქვენ ნამდვილად გსურთ ვიცი, მე არ ვფიქრობ, რომ ჩვენ აჩვენა, რომ თქვენ ამჟამად.
მაგრამ თუ თქვენ დაინტერესებული, შეგიძლიათ გამოიყენოთ დამატებითი სინტაქსი მარჯვენა
მხარე, რომელიც რეალურად ნება თქვენ გასაღებები PHP როდესაც თქვენ გამოყენებით
foreach loop.
ასე რომ მხოლოდ ცოტა trivia თუ თქვენ დაინტერესებული.
>> ასე რომ მხოლოდ იმის დემონსტრირება, განსხვავებები ამ ორი მარყუჟების.
არ ავურიოთ მათ მდე, როდესაც თქვენ პროგრამირების კითხვა.
ნებისმიერი კითხვები შესახებ.
ზემოთ.
ყველა უფლება.
JavaScript ობიექტები.
მე ვესაუბრე მათ შესახებ.
ისინი მოსწონს ასოციაციური მასივები.
ერთი რამ მინდა აღვნიშნო, აქ არის ის, რომ ღირებულება ასოციაციურ
array შეიძლება არაფერი JavaScript.
>> ეს შეიძლება იყოს ფუნქცია, ისევე, როგორც იქ.
მაქვს ფუნქცია, არის ღირებულება გასაღები.
და თუ მინდა მოვუწოდო, რომ ფუნქცია, მე უბრალოდ შედიხართ ქერქი.
და მერე დააყენა ფრჩხილებში ამის შემდეგ.
და რომ მუშაობს.
ასე რომ რაიმე შეკითხვა?
არა?
OK.
კარგი.
JavaScript, როგორიცაა PHP, თავისუფლად აკრეფილი.
რას ნიშნავს ეს?
>> მას აქვს სახის.
მაგრამ როდესაც თქვენ გამოაცხადოს JavaScript ცვლადი, თქვენ ამბობთ var i.
თქვენ არ ვთქვათ.
ეს არ არის საქმე.
უბრალოდ ვთქვა, რომ ეს ცვლადი.
და მაშინ JavaScript ამუშავებს ტიპი ქვეშ hood თქვენთვის.
ჩვენ შეგვიძლია თავისუფლად კონვერტირება შორის ტიპი გამო.
ასე რომ იწყება, როგორც ნომერი ამ შემთხვევაში.
და მერე აქვს string.
და დავამატო i მას.
მე და reassign ისევ i.
>> ასე რომ პირველი ხაზი, მე ნომერი.
მეორე ხაზი, მე ახლა ხდება string შემდეგ გავაკეთო შეცვლის.
და აქ, მე უბრალოდ concatenating რომ ნომერი გადატანა string.
ასე რომ, თქვენ ხედავთ, რომ მიუხედავად იმისა, რომ მე ვიყავი მთელი პირველი ნაწილი, ეს ერთგვარი
მოსწონს მიმდინარეობს მოაქცია სიმებიანი და შემდეგ მიმდინარეობს დამატებული
გადატანა, რომ მიესალმები სიმებიანი.
და ისე, რომ ის, რასაც მე ვგულისხმობ by ფხვიერი აკრეფით.
ეს არის ის, რომ თქვენ კონვერტირება შორის ტიპი ძალიან ადვილად.
და ეს არ ჩააგდოს გაფრთხილებისა თქვენ მინდა C აკეთებს.
>> ასე რომ, ახლა მე შეიცავს მიესალმები 123 სიმებიანი.
შემდეგი.
ჩვენ ასევე შეგვიძლია თავისუფლად შედარება შორის ტიპები.
ასე რომ, თუ უბრალოდ გამოიყენოთ ==, ძალიან როგორც PHP, JavaScript
აკეთებს მსგავსი რამ.
სიმებიანი 123 არის იგივე, რაც ნომერი 123 როდესაც თქვენ გამოიყენოს ორმაგი შეადგენს.
როდესაც გამოიყენება სამმაგი შეადგენს, მას ასევე უნდა დავრწმუნდეთ, რომ
ტიპის იგივეა.
ასე რომ, იმიტომ, რომ სიმებიანი და ეს არის ნომერი, მიუხედავად იმისა, რომ ისინი ორივე
123, როცა თქვენ სარგებლობთ triple შეადგენს, თქვენ ყალბი.
ორმაგი ტოლობის შემთხვევაში, თქვენ ჭეშმარიტი, იმიტომ, რომ ორმაგი ტოლობის არ
აინტერესებს ტიპის.
Triple შეადგენს ამჯამად აინტერესებს ტიპის.
კითხვები?
OK.
>> და კიდევ ერთი რამ, JavaScript ფარგლებში სახის გლობალურ თუ თქვენ
ფუნქცია.
და მუშაობს იგივე გზა PHP რეალურად.
მოდით გავლა ამ მაგალითს.
მე მითითებული i to 999.
და მერე წასვლას ამ loop.
ასე რომ, თუ მე დაბეჭდვის i გარეთ ამ loop, ვიმედოვნებ, 0, 1, 2, 3, 4.
მივიღებ i = 4.
ეს increments i ახლა 5 ბოლოს for loop.
და მაშინ იგი არღვევს out of მარყუჟის, იმიტომ, რომ ის არ ასრულებს
მდგომარეობა უქმნით.
>> რას ფიქრობთ, რომ მომავალ console.log ბეჭდავს out?
ასე რომ, თუ რას გააკეთებს C. In C, რადგან თუ თქვენ გაქვთ, როგორიცაა var i გარეთ
და თქვენ უნდა var i შიგნით loop, როგორც მარყუჟის, მაშინ ეს ხდის ისეთი, რომ
ის scoped, რომ ორი i-ის განსხვავებულია.
ამ JavaScript, ეს მხოლოდ მკურნალობა, როგორც იგივე i.
მე -5, იმიტომ, რომ იყო ღირებულება მას შემდეგ, რაც დასრულების გარეთ loop.
ასე რომ იმ i ს იგივე i.
ამჯამად რომ აზრი?
>> ისე, ეს აზრი ეხლა JavaScript თვალსაზრისით.
მაგრამ იგივე პარადიგმა არ განახორციელოს მეტი C. მათ აქვთ
სხვადასხვა სკოპინგის წესები.
დიახ.
>> აუდიტორია: [INAUDIBLE]
გარეთ ფუნქცია [INAUDIBLE]?
>> JOSEPH ONG: So გარეთ, რომლის ფუნქცია?
ასე რომ, მე კიდევ, რომ მხოლოდ მეორე.
ამიტომ ჩვენ მოვუწოდებთ foo (i).
ეს გადის i თარგმნეს foo, increments , და შემდეგ მორების იგი.
ასე რომ, ეს იყო 5.
ასე რომ, ეს ხდება 6.
მაგრამ რა მე ვსაუბრობ არის რომ მე რომ ფუნქცია.
იმიტომ, რომ ეს პარამეტრი, ის scoped რომ ფუნქცია.
ასე რომ, კიდევ მე რეალურად გავიდნენ, რომ ფუნქცია, ის ახლა აპირებს წავიდეს
უკან ძველი i.
რომ მე მხოლოდ scoped რადგან ეს ფუნქცია.
და ჩვენ ფარგლებში და ფუნქციები.
მაგრამ ჩვენ არ გვაქვს ფარგლებს გარეთ ფუნქციების JavaScript.
ამჯამად რომ აზრი?
დიახ.
კითხვა.
>> აუდიტორია: Same [INAUDIBLE]?
>> JOSEPH ONG: ასე რომ, yeah.
PHP-ში, ეს არის იგივე ტიპის რამ.
არსებობს უმნიშვნელო სინატიფით რეალურად.
მაგრამ შეგიძლიათ შემეკითხებით შესახებ რომ მას შემდეგ, მიმოხილვა.
თქვენ ნამდვილად არ უნდა იცოდეს, რომ სინატიფით განთავსების ვიქტორინა.
ყველა განცდა, ისევე, როგორც ცვლადები, გლობალური და PHP, თუ
ისინი ფუნქცია, იგივე რამ JavaScript.
დიახ.
>> აუდიტორია: რატომ არის ეს დასაშვებია JavaScript და არა სხვაგან სად?
>> JOSEPH ONG: რატომ არის დაშვებული in JavaScript და არა C?
უბრალოდ ვინც გამოვიდა JavaScript გადაწყვიტა, რომ ეს იყო OK in
JavaScript.
ასე რომ, ისევე, როგორც პროგრამირების ენა კონვენციის, როგორც ჩვენ ვიტყოდი.
დიახ.
>> აუდიტორია: ასე რატომ ხელიდან 6 დან 5?
>> JOSEPH ONG: ასე რომ წავიდა 6 დან 5 რადგან, როდესაც მე გაიარა i თარგმნეს foo, რომ
i შიგნით foo არის scoped to foo, რადგან ფარგლებს არსებობს ფუნქციების
JavaScript.
მაგრამ ერთხელ მე გავიდნენ აქ, რადგან ეს იყო scoped ფუნქცია, მე უბრალოდ
გამოყენებით რეგულარული i რომ იყო შიგნით დანარჩენი კონტროლი ნაკადი.
აზრი?
შემიძლია გადაადგილება?
ყველა უფლება.
ზემოთ.
>> მიღების ამ ობიექტების გავიდა მითითებით.
თქვენ იცით, როდესაც თქვენ გაივლით მასივი შევიდა C თქვენ შეიძლება
რეალურად ცვლილებები მასივი?
ეს იგივეა, რაც JavaScript.
იმ შემთხვევაში, თუ მე გაივლის ობიექტი, ამ შემთხვევაში, მე გავიდა Milo ამ catify ფუნქცია.
Milo იწყება out.
მისი სახელი Milo Banana.
მე გაივლის, რომ ობიექტი ფუნქცია იმიტომ, რომ ეს ობიექტი, ასოციაციურ
array in JavaScript.
>> როდესაც მე შეასრულოს ოპერაცია რომ ფუნქცია, ეს იქნება
პრაქტიკულად შეცვლის ობიექტი.
ასე რომ, ეს მხოლოდ მოხდეს ობიექტები in JavaScript, ისევე, როგორც ეს ხდება
განთავსების კოლექტორები შიგნით C. ასე Milo სახელი რეალურად გახდეს cat ახლა.
ამჯამად რომ აზრი?
ასე რომ, ეს მხოლოდ მუშაობს ობიექტები.
ობიექტების მიერ მიღებული მითითება.
დიახ.
>> აუდიტორია: ასე რომ თქვენ განაცხადა, რომ განსხვავებით ცვლადი i.
>> JOSEPH ONG: ჰო.
რომელი ცვლადი i იყო ნომერი, უფლება?
ის მსგავსად C, როცა გაივლის რიცხვი, ეს ქმნის ასლი.
და როცა გაივლის მასივი, ეს ფაქტიურად ცვლის ფაქტობრივი მასივი
C. იგივე ხდება JavaScript ამ შემთხვევაში.
ყველა უფლება.
და შემდეგ, Milo არის სამწუხარო, რადგან ის არის კატა.
რომ იყო ფაქტიურად Milo შემდეგ ზოგიერთი მოგზაურობა ვეტერინარი.
>> ასე როგორ უნდა გამოიყენოთ JavaScript ვებ გვერდზე?
ჩვენ შეიძლება შეიცავდეს იგი.
ეს არის HTML კოდი და ზოლები tags.
ასე რომ მე ზოლები tags არსებობს.
და მერე დააყენა რამდენიმე JavaScript კოდი ფარგლებში სკრიპტი tags.
და მაშინ იგი ახორციელებს ამ.
როდესაც მე მხოლოდ ამის მსგავსად, ის ე.წ. inline JavaScript.
ეს არის სახის ბინძურ, რადგან JavaScript არის რეალურად HTML.
>> უკეთესი გზა ამის გაკეთება, ბევრად გავალამაზოთ, არის დაწეროთ თქვენი JavaScript in
გარე ფაილი და შემდეგ გთავაზობთ სცენარი tag წყარო.
და ეს წავა, რომ JavaScript ფაილის და წაიკითხეთ JavaScript კოდი,
რომ შეიტანოს ნაცვლად.
და ამ გზით, თქვენ არ გაქვთ ბევრი JavaScript დასაწყისში თქვენი
HTML ფაილი, რომელიც იღებს ეს მართლაც ბინძურ.
თქვენ უბრალოდ განათავსოთ სხვაგან.
და მაშინ წავიკითხე იქიდან.
იცოდით, რომ აზრი?
>> განლაგება საკითხებზე.
ამ კონკრეტულ შემთხვევაში, script მანამდე ორგანო.
ასე რომ, როდესაც მე შეასრულოს, რომ იქ არაფერი ორგანოს არავის გაუკეთებია.
იქნებ ეს იქნება ცოტა მეტი იგრძნოს, როცა ნახოთ ამ მეორე ნაწილი.
ამ შემთხვევაში, სცენარი მას შემდეგ div.
ამიტომ div რეალურად, როგორც ჩანს, გვერდზე პირველი.
სწორედ აქ ამ პატარა წითელი წრე, ხედავთ ტექსტში გამოჩნდება.
და მაშინ alert გვიჩვენებს up.
>> პირველ შემთხვევაში, რადგან script იყო ადრე div,
alert გვიჩვენებს up პირველი.
და მაშინ div გვიჩვენებს up შემდეგ თქვენ გაათავისუფლოს ყუთში.
ასე რომ აღსრულების საკითხები.
ამიტომ ჩვენ გავაგრძელებთ ამ გათვალისწინებით.
ეს მნიშვნელოვანი იქნება ცოტა.
OK.
ისე კარგად, როგორ უნდა დაველოდოთ მთელი გვერდი დატვირთული მაშინ, სანამ
შეასრულოს გარკვეული კოდი?
ჩვენ შეღწევას ამ პატარა მოგვიანებით ძალიან.
მაგრამ უბრალოდ შეინახოს ამ placement საკითხების გათვალისწინებით, როდესაც ჩვენ
მოვიდა კიდევ ერთი slide.
>> ასე რომ, ჩვენ კიდევ DOM არის.
და რა არის DOM?
ასე რომ, თუ გადავხედავთ HTML კოდი, უბრალოდ bunch of ტექსტი ეკრანზე.
მაშ როგორ ამჯამად JavaScript ვიცი, რომ ეს არის HTML-ის ელემენტი?
ამიტომ, ჩვენ უნდა გვქონდეს გარკვეული მეხსიერება წარმომადგენლობა ამ
სტრუქტურა, რომელიც გვაქვს.
და როდესაც ჩვენ ეს მეხსიერებაში წარმომადგენლობა JavaScript, ჩვენ მოვუწოდებთ
რომ DOM.
და ეს მხოლოდ ისე, რომ ხალხმა გადაწყვიტა რომ ჩვენ უნდა წარმოადგენდეს ამ
HTML სტრუქტურა.
>> და რას DOM გამოიყურებოდეს?
ასევე, მეხსიერების წარმომადგენლობა, ჩვენ ეს ტექსტი.
და ჩვენ აქციოს იგი მეხსიერება წარმომადგენლობა.
ასე რომ, ეს არის HTML.
ასე რომ, ჩვენ პირველი გაირკვეს, რომ ყველა DOM ხე აქვს დოკუმენტი.
ეს ჰგავს ხე.
და დოკუმენტი შეიცავს HTML tag, რეალურად ყველაფერი
შიგნით ამ ახლა.
HTML tag ჰყავს ორი შვილი.
მას აქვს ხელმძღვანელი.
რომ ხელმძღვანელი, თუ გადავხედავთ წანაცვლება იქ, როგორ ის სტრუქტურა
შორის მჭიდრო tags, ხელმძღვანელი ჰყავს ერთი შვილი.
ბავშვი სათაური.
ზუსტად.
>> ახლა, ჩვენ სხეულის ბავშვი.
და შემდეგ რომ სხეულის აქვს ბავშვი მოუწოდა ოჯახს.
და რომ ოჯახს სამი შვილი ჰყავს -
უძველესი, შუა, და ახალგაზრდა.
ასე, რომ თქვენ უნდა იცოდეს, თუ როგორ უნდა დავხატოთ დიაგრამაზე მოსწონს ეს მაშინ, როცა ჩვენ ვთხოვთ, თუ როგორ
მიაპყროს სქემა, როდესაც ვაძლევთ თქვენ HTML მარცხენა.
იცით, როგორ უნდა აწარმოოს DOM ხე.
და შიგნით ეს ყველაფერი, არსებობს მხოლოდ რაიმე ტექსტი, რომელიც მე წარმოდგენილია
როგორც პატარა ყუთები.
>> ამჯამად ამ DOM ხე სტრუქტურა გრძნობა და რა DOM არის?
ასე რომ, რას p მხარს?
აქ, p იქ რომ tag წარმოადგენს
პუნქტის ტეგი HTML.
ასე რომ თქვენ შეგიძლიათ გამოიყურება ის.
მაგრამ ეს მხოლოდ იმას ნიშნავს, რომ ზოგიერთი ფართი რაიმე ტექსტი.
და მას აქვს გარკვეული ნაგულისხმევი CSS სტილის, იმიტომ, რომ ეს პუნქტი აქვს.
მაგრამ ნამდვილად არ აღელვებს ეს ნაწილი ძალიან ბევრი.
უბრალოდ ვიცი, რომ ეს placeholder რაღაც ტექსტი.
დიახ.
კითხვა?
დიახ.
>> აუდიტორია: თქვენ თავად აღნიშნეთ, CSS.
Hash ოჯახის და hash ყველა, რომ პერსონალი, ძირითადად,
წარმოადგენს პირადობის მოწმობების CSS?
>> JOSEPH ONG: ჰო, ზუსტად.
მე კიდევ რა ეს ჰეშები ნიშნავს მეორე.
როდესაც ანგელა წავიდა CSS, მან ისაუბრა CSS სელექციონერები.
ეს არის CSS სელექციონერები, რომ იგი საუბრობდა.
დიახ, Rob?
>> რობ Bowden: მინდა ასევე კომენტარს რომ DOM შიგნით title tag
ასევე text კვანძში.
>> JOSEPH ONG: Right.
ასე რომ შიგნით ტიტული tag, მაქვს რაღაც ტექსტი DOM.
ასე რომ, რეალურად, ამ სათაურით უნდა ჰქონდეს, როგორც პატარა ყუთი მოდის off იგი ასევე.
მაგრამ ეს ნამდვილად არ აქვს მნიშვნელობა ძალიან ბევრი ამ შემთხვევაში.
ჩვენ ნამდვილად არ აინტერესებს ტექსტური კვანძების, როგორც ჩვენ მოვუწოდებთ მათ, ძალიან ბევრი.
OK, ჩვენ გავაკეთებთ.
როგორც ჩანს, ჩვენ გავაკეთებთ.
და მე დაფიქსირება, რომ, როდესაც ავტვირთო კიდევ ერთხელ.
ამჯამად რომ აზრი?
>> ასე როგორ უნდა ვიმუშაოთ DOM?
როდესაც თქვენ გაუმკლავდეთ DOM in JavaScript, არსებობს ორი ნაბიჯი.
აირჩიოთ DOM ელემენტს.
და მაშინ გავაკეთოთ რამ მას.
ასე რომ, ამ შემთხვევაში, აბსტრაქტულად, მე შერჩეული შუა ელემენტს.
და შემდეგ მაგალითი აკეთებს პერსონალის რომ ეს იქნებოდა შეცვლის ტექსტი.
რომ გამოყენებული იყოს Bob.
ახლა, რა გავაკეთე, რომ ეს იყო მე შეიცვალა ბობ Milo ამ შემთხვევაში.
>> ასე რომ, თუ ჩვენ რეალურად ამის გაკეთება?
როგორ გავაკეთოთ შერჩევა?
და როგორ გავაკეთოთ აკეთებს პერსონალის რაც ერთხელ ჩვენ მიღებული ეს?
ისე, სხვათა შორის, თქვენ ბიჭები ცნობილი გახდა ამ კლასში არის გამოყენებით რაღაც ჩვენ
მოუწოდა jQuery.
რა არის jQuery?
jQuery არის ბიბლიოთეკა, რაც JavaScript ადვილია დაწერა.
ასე რომ, ვიღაცამ აიღო დრო და დაწერა jQuery.
>> jQuery რეალურად დაწერილი JavaScript.
და მერე იმიტომ, რომ ეს გააკეთა, ჩვენ ახლა მთელი bunch of ფუნქციები,
ჩვენ შეგვიძლია გამოვიყენოთ, რომ ჩვენი ცხოვრობს მართლაც მარტივია.
რა არის ზოგიერთი ყველაფერი ეს ასეა?
რაც შერჩევისას ელემენტები ადვილია.
რაც იცვლება HTML, დასძინა კლასების ადვილია.
რაც Ajax ადვილია.
ჩვენ კიდევ, რომ მეორე.
>> და ეს არის ანალოგიური C ბიბლიოთეკები.
ასე, რომ თქვენ მოიცავს string.h, თქვენ strlen.
თქვენ მიიღებთ strcpy, ყველა ამ საკითხზე.
როცა არის jQuery, თქვენ ლამაზი გზები, რათა შეარჩიოთ ელემენტების ცვლილება
რამ, et cetera.
თქვენ მიიღებთ დამატებით ფუნქციონალობას, რომ JavaScript არ მოგცემთ.
ასე რომ jQuery არ არის JavaScript.
jQuery არის ბიბლიოთეკა, რომელიც დაწერილი JavaScript, რაც JavaScript
ადვილია დაწერა.
>> ასე რომ jQuery არ არის პროგრამირების ენაზე.
მაგრამ, JavaScript.
მიიღოს.
რა თქმა უნდა თქვენ თქვენი ტერმინოლოგია უფლება.
რაიმე შეკითხვა?
დიახ.
ის არის, რომ შეკითხვა?
ყველა უფლება.
ასე როგორ გამოიყენოთ jQuery?
ასევე, როდესაც თქვენ წერა რამდენიმე JavaScript კოდი და თქვენ მოიცავს
jQuery ზედა თქვენი ფაილი, როგორც script ფაილი, თქვენ იყენებთ დოლარის ნიშანი
ახლა მიიღოთ დაშვება jQuery.
და ეს არის განსხვავებული დოლარის ნიშანი PHP.
>> ეს იგივე სიმბოლო თქვენ ჩაწერეთ თქვენს კლავიატურაზე.
მაგრამ ისინი ნიშნავს, ძალიან განსხვავებული რამ.
დოლარის ნიშანი in PHP ნიშნავს ეს არის, თუ როგორ ვაცხადებ ცვლადი.
ამ JavaScript, როდესაც თქვენ შედის jQuery, იგი დგას jQuery.
გააგრძელეთ, რომ გონება.
ასე როგორ შეიძლება ჩვენ აირჩიოთ DOM ელემენტებს?
ისე, როდესაც თქვენ ეს მახინჯი JavaScript გზა, თქვენ შედიხართ
დოკუმენტურად გლობალური ცვლადი.
და შემდეგ თქვენ მიიღებთ ელემენტი ით ოჯახს.
ეს მართლაც ხანგრძლივი და wordy და არ არის ძალიან ლამაზი.
>> ან თქვენ შეგიძლიათ მიიღოთ ყველა ელემენტები რომლებიც p ტეგით.
რომელიც მუშაობს ძალიან JavaScript.
მაგრამ ჩვენ არასდროს ნამდვილად აჩვენა თქვენ სინტაქსი ძალიან ბევრი.
რა ვაჩვენეთ თქვენ იყო jQuery.
ასე რომ, მთელი selector up არსებობს, რომ გამოიხატა JavaScript უბრალოდ იღებს
შედედებული ამ ძალიან ლამაზი დოლარი მოაწეროს hashtag ოჯახს.
და $ p, უბრალოდ, სადაც ეს იგრძნობა.
თუ გსურთ აირჩიოთ ყველა p tags შიგნით ოჯახის, ჩვენ სივრცე
ორ.
და ახლა, ჩვენ ყველა p tags შიგნით ოჯახში.
>> და გამოიყურება ნაცნობი?
ისე, ანგელა ისაუბრა CSS სელექციონერები.
მომეცი ერთი მეორე.
და ასე, რათა აირჩიოთ ელემენტი, უბრალოდ გამოიყენოთ იგივე როგორც თქვენ
ყველაფერს გააკეთებს ერთად CSS selector.
თუ თქვენ დააყენა hash თვალწინ ეს, ის ირჩევს ით.
Dot ირჩევს კლასების მიხედვით.
თუ თქვენ უბრალოდ უნდა ის გარეშე ჰეშები ან წერტილი, იგი ირჩევს იმ tags.
კითხვები.
დიახ?
>> აუდიტორია: როდესაც ვიყენებთ dot ჩვენი HTML, არის ის, რომ არ jQuery?
>> JOSEPH ONG: Dot ჩვენს HTML არის JavaScript რამ.
ეს არ არის jQuery რამ.
გზა თქვენ ბიჭები შეიტყო, იგი jQuery არის გამოიყენოს. html.
და მაშინ გავიდა მას რასაც HTML იქნება.
ასე რომ, მე კიდევ, რომ სულ რაღაც მეორე რეალურად.
ასე როგორ უნდა გავაკეთოთ პერსონალის ელემენტს ერთხელ ჩვენ შერჩეული ეს?
ასე რომ მაგალითი შერჩევის ელემენტს.
ახლა, ჩვენ გვინდა, რომ გავაკეთოთ პერსონალის მას.
>> ასე რომ, ამ შემთხვევაში, ნება მომეცით დაბრუნდეს წინა slide.
ეს იყო Bob ადრე.
და მე მინდა, რომ შეიცვალოს, რომ შიგნით HTML to Milo.
ასე რომ, მოვუწოდებ HTML ფუნქცია საწყისი ელემენტს.
რომ HTML ფუნქცია მეთოდი ელემენტს.
და შემდეგ მე ვაძლევ მას, რა მინდა HTML იყოს.
და ეს მხოლოდ ცვლის რა შიგნით რომ tag რასაც მე ვაძლევ მას.
დიახ.
კითხვა?
>> აუდიტორია: hashtag გამოიყენება მხოლოდ jQuery.
[INAUDIBLE]
ჩვენ ვერ გამოიყენოთ, რომ.
>> JOSEPH ONG: ჰო, ზუსტად.
მაგრამ არ ინერვიულოთ ძალიან ბევრი სუფთა JavaScript.
მინდა თქვენ ბიჭები ფოკუსირება, თუ როგორ ამის გაკეთება ერთად jQuery, რადგან
რომ იქნება მნიშვნელოვანი ნაწილი ვიქტორინა.
უფლება.
ზუსტად.
ასე რომ, თქვენ ხედავთ, რომ hashtag, ისე, რომ შეესაბამება აირჩიოთ ელემენტს
ID შუა გამო, რომ hashtag.
Hashtag ნიშნავს ID.
და ამ ელემენტს აქვს პირადობის ცენტრიდან.
ასე რომ ელემენტს ჩვენ აირჩიეთ.
>> აუდიტორია: [INAUDIBLE].
დოლარის ნიშანი hashtag [INAUDIBLE]?
>> JOSEPH ONG: ასე რომ, არა.
კითხვა შეგიძლიათ გამოიყენოთ. ღირებულება.
და. ღირებულება მუშაობს მხოლოდ ელემენტები რომ საშუალებებით.
In jQuery, ეს იქნება . Val, არა. ღირებულება.
ასე რომ, მე კიდევ პატარა მაგალითი იმისა, რომ მეტყველებს ეს ყველაფერი მოედანზე
მეორე.
მაგრამ მე ვფიქრობ, რომ ეს ემსახურება პატარა snippet აზრი ადამიანი ჯერჯერობით.
გსურთ შეცვალოთ HTML, მოვუწოდებთ HTML მეთოდი.
დიახ.
>> აუდიტორია: უნდა მივაწეროთ მეთოდი ერთხელ?
>> JOSEPH ONG: ასე რომ მეთოდი მხოლოდ ფუნქცია, რომელიც ეკუთვნის ერთ, ამ
შემთხვევაში, ერთი ამ DOM ელემენტების, იმის გამო, რომ ხედავთ I
შერჩეული ელემენტს პირველი.
ფაქტობრივად, ნება მომეცით გამოიყენოთ მაუსი.
მე შერჩეული ელემენტს პირველი.
და მერე უწოდა HTML ფუნქცია, რომელიც მას ჰქონდა.
და რადგან ამ ფუნქციას განეკუთვნება ამ რამ, ჩვენ მას მეთოდი.
ეს მხოლოდ ლამაზი სახელი მას.
ამბობენ, რომ ერთხელ.
ასე მახსოვს, შევარჩიეთ ელემენტის ახლა.
და ჩვენ დააყენოს ის შიგნით ელემენტის ცვლადი.
სწორი?
>> ასე რომ, როდესაც ჩვენ გვინდა, რომ შეიცვალოს HTML on შიგნით, რადგან ეს იყო Bob ადრე, თქვენ
მინდა, რომ შეიცვალოს, რომ ტექსტი Milo.
ამიტომ ჩვენ მოვუწოდებთ HTML.
და ჩვენ გეტყვით ეს რა HTML შიგნით რომ ელემენტს უნდა იყოს ახლა.
ასე რომ, ეს ცვლის მას მილო, იმიტომ, რომ მე მას Milo.
>> აუდიტორია: ასე რომ, ისინი ერთად მუშაობა.
[INAUDIBLE]
>> JOSEPH ONG: Yeah, yeah.
ისინი მუშაობენ ერთად.
ასე რომ ერთი მათგანი ირჩევს ელემენტს პირველი.
ხოლო მეორე აკეთებს რაღაც მას.
დიახ.
>> აუდიტორია: [INAUDIBLE].
თუ ეს მეთოდი განსხვავდება in HTML თქვენ გაქვთ საშუალებას ტოლია აქტუალურია.
>> JOSEPH ONG: ჰო.
ეს არის განსხვავებული მეთოდი.
და ჩვენ შეგვიძლია დაფაროს, რომ მხოლოდ მეორე როდესაც მივიღებთ მაგალითი.
მე გვინდა დავრწმუნდეთ, რომ ჩვენ დააჩქაროს რადგან ჩვენ გაშვებული out of time.
მაგრამ ჩვენ აწარმოებს გზა ახლა.
OK.
ზემოთ.
ასე რომ, თუ გსურთ დაამატოთ კლასის, იქ ასევე add კლასის მეთოდი.
ეს არის მაგალითი იმისა, თუ რა შეგიძლიათ გააკეთოთ jQuery.
რომ მხოლოდ დასძენს კლასის.
>> თუ გსურთ ამოიღონ იგი, შეგიძლიათ დარეკოთ ამოიღონ.
ეს მხოლოდ კიდევ ერთი რამ შეგიძლიათ გააკეთოთ.
ასე რომ, მეტი მაგალითები რამ შეგიძლიათ გააკეთოთ.
ასე რომ, შეგიძლიათ უბრალოდ დააყენა იგი ყველაზე ასე?
ახალგაზრდა ამოიღონ.
თუ უბრალოდ შეასრულოს, რომ JavaScript at ზევით ჩემი ფაილი, იქნება, რომ მუშაობს?
უფლება.
იმის გამო, რომ შუა ჯერ არ არსებობს.
ასე რომ, ეს არ იმუშავებს.
აღსრულების მიზნით.
იგი მიდის ზევით პირველი.
რა?
>> აუდიტორია: ახალგაზრდა ჯერ არ არსებობს?
>> JOSEPH ONG: ჰო.
ახალგაზრდა ჯერ არ არსებობს.
ზუსტად.
>> აუდიტორია: თქვენ თქვით, ცენტრიდან.
>> JOSEPH ONG: უკაცრავად.
ახალგაზრდა ჯერ არ არსებობს.
და სხვა რამ არის არ მაქვს შედის jQuery
ფაილის ვთხოვთ script src.
ასე რომ არ იმუშავებს.
რეალურად, მე არ გავაკეთოთ, რომ მომდევნო slide, რომელიც
უნდა დაფიქსირება, რომ ან.
მაგრამ გზა გავაკეთოთ ეს არის JavaScript არის ღონისძიება ორიენტირებული.
ასე რომ, რას ვაკეთებთ არის ჩვენ ვიყენებთ ღონისძიება კურატორმა, რომ ეს მოხდეს.
და მე აირჩიოთ დოკუმენტი მითითებული პირველი.
მე ვიტყვი, OK, როდესაც დოკუმენტი მზად ვართ, ნება მომეცით აწარმოებს ფუნქცია.
ასე რომ ყველა, რომ სინტაქსი საშუალებით.
>> მე შერჩეული დოკუმენტი.
ახლა, როდესაც დოკუმენტი მზად ვართ, აწარმოებს ფუნქცია.
და ა.შ. აქ, როდესაც დოკუმენტი მზად ვართ, რაც იმას ნიშნავს, ყველა HTML აქვს
დატვირთული, მაშინ მე აწარმოებს ფუნქცია რომ ხსნის, რომ ელემენტს.
და ახლა, როცა აწარმოებს ამ ფუნქციის რომ მე შევიდა მზად ვარ
გარანტირებული, რომ ყველა HTML შესახებ გვერდი აპირებს არსებობს პირველი.
დიახ.
კითხვა?
>> აუდიტორია: რა არის ღონისძიება სიტყვით ფარგლებში ფუნქცია?
>> JOSEPH ONG: ასე რომ ღონისძიება სიტყვით ფუნქცია მხოლოდ პარამეტრი, რომელიც
იღებს გავიდა ფუნქცია ნებისმიერ შემთხვევაში.
ეს არის მხოლოდ ის, რაც თქვენ მიიღებთ უფასოდ.
როდესაც თქვენ იყენებთ გასაღები ელფოსტის in pset8, რომ ღონისძიებას ვერ გეტყვით თქვენ,
მაგალითად, რომელიც გასაღები თქვენ დაპრესილი.
ამ შემთხვევაში, ამისთვის მზად ღონისძიება, ეს რეალურად არ არის სუპერ სასარგებლო.
მაგრამ გასაღები down შემთხვევაში, ეს უფრო სასარგებლო, რადგან თქვენ უნდა იცოდეს, რომელიც
გასაღები თქვენ დაპრესილი მიერ წვდომის გასაღები კოდი off რომ ღონისძიება ობიექტი.
სწორი?
ამჯამად რომ აზრი?
OK.
დიახ.
კითხვა?
>> აუდიტორია: ასე რომ, შეგიძლიათ დააყენა script tag ქვედა ქვემოთ?
>> JOSEPH ONG: ასე რომ, yeah.
თქვენ ვერ დააყენა სცენარი tag ქვედა down.
მაგრამ ეს მხოლოდ ხდება მართლაც ბინძურ.
და ჩვენ გვსურს ცენტრალიზებული ყველა ჩვენი კოდი ერთ ადგილას.
და ეს საშუალებას მოგვცემს გავაკეთოთ.
დამახსოვრება ადრე ვთქვი, იქ გავალამაზოთ გზა, რათა უზრუნველყოს, რომ ელემენტები
გვერდზე სანამ შეასრულოს კოდი?
და ეს მხოლოდ ლამაზი გზა თქვენ უნდა მიაღწიოს ამას.
>> აუდიტორია: [INAUDIBLE].
>> JOSEPH ONG: ჰო.
თქვენ მაინც უნდა, არა?
იმის გამო, რომ გახსოვდეთ, თქვენ შედის ფაილის ზედა გვერდზე.
ასე რომ, ის აპირებს შეასრულოს სანამ თქვენ მიიღებთ ბოლოში გვერდზე.
OK.
ასე რომ თქვენ ასევე შეგიძლიათ დაამატოთ სხვადასხვა ტიპის ღონისძიება დამმუშავებლის.
ეს ერთი მხოლოდ ამუშავებს დაწკაპუნებით.
როდესაც მე დააწკაპუნეთ ახალგაზრდა, მაშინ ის გაიხსნება alert.
ეს არის უბრალოდ სხვადასხვა ტიპის მოვლენაა.
როგორც ეწინააღმდეგებოდა მზად ღონისძიება, თქვენ ახლა გამოიყენეთ click ღონისძიება, როდესაც თქვენ მიიღეთ
დააჭერს ელემენტს.
>> და ა.შ. ამ შემთხვევაში, მახსოვს, click კურატორმა ენიჭება ახალგაზრდა.
ასე რომ, ეს მხოლოდ მაშინ ხდება, როდესაც მე დააწკაპუნეთ ახალგაზრდა.
და მეორე, მზად ღონისძიება ერთვის დოკუმენტს.
ასე რომ ელოდება დოკუმენტი უნდა იყოს მზად.
აზრი?
ვფიქრობ, შეიძლება გადაადგილება.
დიახ.
კითხვა?
>> აუდიტორია: [INAUDIBLE].
ამ შემთხვევაში თქვენ იყენებთ [INAUDIBLE].
>> JOSEPH ONG: Oh, yeah, რადგან ამ შემთხვევაში, მე უნდა ველოდოთ ახალგაზრდა
ელემენტი ეკრანზე პირველი სანამ შეგიძლიათ დაურთოთ click კურატორმა to
ის, რის გამოც მე ამას შიგნით დოკუმენტი მზად არის.
OK.
და მომავალი, ასე რომ ეს არის დიდი მაგალითია თუ როგორ დააკავშიროთ ყველაფერი.
ეს არის მხოლოდ ფორმა ძალადაკარგულია მაგალითად თქვენ ჩანს ლექცია.
ასე რომ, ეტაპობრივად, როგორც თქვენ გაიაროს ეს.
და ეს იქნება სრულიად OK.
უბრალოდ წაიკითხა ეს ზემოდან.
>> მე მაქვს ფორმა ბოლოში.
როდესაც დოკუმენტი მზად არის, მე დაურთოს წარუდგინოს კურატორმა ფორმა, ისეთი, რომ
როცა წარმოადგინონ ფორმა, მივიღებ ღირებულებები შიგნით თითოეული იმ საშუალებებით.
მე და შეამოწმოთ, თუ ის ცარიელი.
თუ ეს ცარიელი, მე დაბრუნების ცრუ, რადგან მე არ მინდა, რომ წარმოადგინონ ფორმა,
იმის გამო, რომ ფორმა არის არასწორი.
თუ დაგავიწყდათ ცარიელი, ან ნაკლები ვიდრე რვა სიმბოლო, მე არ წარადგინოს
ფორმა, იმიტომ, რომ ის ასევე არასწორია.
და დაბრუნების ცრუ მხოლოდ ხელს უშლის ფორმით წარდგენის და
აპირებს ახალი გვერდი.
>> და იმედია, ეს აზრი.
მე ვფიქრობ, რომ თქვენ ბიჭები უნდა გავლა ეს კოდი ეტაპობრივად საკუთარი.
და კიდევ გესმით რა არჩევა ელემენტები და გავაკეთოთ პერსონალის მას
რეალურად გულისხმობს, ამ გახდის ბევრი გრძნობა თქვენ.
დიახ?
>> აუდიტორია: რა name = სახელის ნიშნავს?
>> JOSEPH ONG: ასე რომ name = სახელის და name = დაგავიწყდათ უბრალოდ ნიშნავს შევხედოთ
ატრიბუტი, რაც თქვენ შერჩევის.
და შემდეგ რომ აქვს ემთხვევა.
ასე რომ, ჩვენ წასვლას რეგისტრაცია.
და მაშინ ჩვენ შევხედოთ ყველა საშუალებებით და რეგისტრაცია.
და მაშინ ჩვენ აირჩიოთ ერთი სადაც სახელი ატრიბუტი უდრის სახელი.
ასე რომ, პირველი არჩევის მხოლოდ ირჩევს სახელი შეყვანა.
და რომ მეორე selector მხოლოდ ირჩევს დაგავიწყდათ ერთი, იმიტომ, რომ ეს უნდა
მათი სახელი ატრიბუტები შექმნას, რაც ისინი უნდა იყოს.
კითხვა?
>> აუდიტორია: On წარდგენის, როგორ აკეთებს ქვედა ნაწილი მოსაგვარებლად ზედა ნაწილი?
>> JOSEPH ONG: ასე რომ, ეს იმიტომ, რომ ღონისძიების კურატორმა.
ასე რომ ჩვენ ელოდება წარუდგინოს ღონისძიება რომ იღებს ნასროლი ფორმით.
და ეს ყველაფერი, რომ წარმოადგინოს.
რატომ მოვუწოდებ წარმოადგინოს up there?
ის ამბობს, როდესაც ფორმით წარედგინება, მივიღებ წარუდგინოს ღონისძიება.
ნება მომეცით, უბრალოდ ხელში რომ და მაშინ აწარმოებს ამ კოდი ნაცვლად.
დიახ?
>> აუდიტორია: რატომ გაქვთ აქვს ფუნქცია მოვლენა?
რატომ არ შეიძლება უბრალოდ [INAUDIBLE]?
>> JOSEPH ONG: იმის გამო, რომ JavaScript, თქვენ უნდა განაცხადოს ფუნქციები.
ეს მხოლოდ როგორ მუშაობს JavaScript.
თქვენ უნდა ვთქვა ის აპირებს აწარმოებს ფუნქცია.
ასე რომ თქვენ ვეუბნებოდი მას, რომ თქვენ ველოდებით ფუნქცია აქ ნაცვლად
უბრალოდ curly აფრთხილებს.
>> აუდიტორია: და ფუნქცია არის რასაც შემდეგნაირად?
>> JOSEPH ONG: ჰო.
ფუნქცია რაც შიგნით curly აფრთხილებს შემდეგ
რომ ფუნქცია სიტყვით.
დიახ?
>> აუდიტორია: [INAUDIBLE].
>> JOSEPH ONG: For წარუდგინოს?
>> აუდიტორია: არა, ფუნქცია გარეშე ღონისძიება.
>> JOSEPH ONG: ჰო.
ისე, რომ იმ შემთხვევაში, თქვენ შეგიძლიათ, რომ.
თუ არ უნდა იმ შემთხვევაში, მაშინ შეგიძლიათ უბრალოდ გამომრჩეს ეს.
მაგრამ თუ, მაშინ უბრალოდ ვთქვათ არსებობს.
დიახ.
სწრაფი კითხვა?
>> აუდიტორია: [INAUDIBLE].
>> JOSEPH ONG: ჰო.
რადგან ის, რაც თქვენ უნდა გავაკეთოთ, document.ready უბრალოდ ამბობს დაველოდოთ ყველა
HTML გვერდზე ჩატვირთვა პირველი.
და, როგორც წესი, გინდათ თქვენი ელემენტები ადგილზე სანამ თქვენ აწარმოებს ნებისმიერი კოდი.
ყველა უფლება.
ჩვენ უნდა მიიღოს Ajax.
ჩვენ არ გვაქვს ბევრი დრო.
ასე რომ, დადებითი და cons.
JavaScript ადვილია ლელო წერა jQuery.
მაგრამ jQuery სახის ნელი.
>> ეს მოსწონს PHP უფრო ნელია ვიდრე C, იმიტომ, რომ ის ინტერპრეტაცია.
და jQuery ცოტა ნელა, ვიდრე JavaScript, რადგან მას აქვს ბევრი
რამ ქვეშ hood.
და ასე რომ, თუ თქვენ იყენებთ jQuery, ეს უბრალოდ ცოტა ნელა, ვიდრე
JavaScript, მიუხედავად იმისა, რომ გაძლევთ ლამაზი ელეგანტურობა.
და ბოლოს, Ajax.
ჯერჯერობით Ajax, თქვენ არ მინახავს Ajax თვალსაზრისით pset7 არ არის, რადგან
როდესაც თქვენ, თქვენ წარმოადგინოს ფორმა გაცემა.
ეს ტვირთავს ახალ გვერდს.
ასე რომ თქვენ მიიღოთ ეს დიდი თეთრი flash გვერდზე, ხოლო
მეორე გვერდზე იტვირთება, სწორი?
>> ეს იქნება მართლაც ლამაზი თუ არ აქვს ამ ფლეშ.
როგორიცაა Facebook, თუ უბრალოდ გადახვევა ბოლოში, იგი დასძენს ახალი შინაარსი
გარეშე განაახლოს მთელი გვერდი.
ასე რომ რაღაც მსგავსი იქნებოდა.
ეს არის JavaScript კოდი მარცხენა მხარეს.
თქვენ რა არის შიგნით რომ შეყვანა.
თქვენ საფონდო ინფორმაციის Yahoo!
და მაშინ დიდი სიმებიანი რომ ამბობს, OK, ეს არის გზავნილი, მინდა
რათა ნახოთ ეკრანზე.
და მაშინ დააყენა, რომ გაგზავნა შიგნით ზოგიერთი HTML-ის ელემენტი, რომელიც იღებს
ეკრანზე.
>> ასე რომ, ყველაფერი, რაც ხდება აქ.
ასე რომ, ძირითადად, იმიტომ, რომ ეს არის ყველა JavaScript და თქვენ არ უნდა აწარმოებს
აღარ PHP, ეს იქნება დარწმუნდით რომ გვერდზე არ განახლდა.
ასე რომ, ეს მხოლოდ აბსტრაქტული იდეა რომ მე ვამბობ, აქ ახლა.
აბსტრაქტული იდეა ისაა, რომ თუ ამას ყველა JavaScript, თქვენ არ გაქვთ
გვერდი განახლება.
მაგრამ როგორ რეალურად ამის გაკეთება?
>> ისე, რეალურად, მოდით ვისაუბროთ პრობლემა პირველი.
პრობლემა ის არის, JavaScript, აღსრულების სინქრონული.
ასე, რომ თქვენ უნდა ველოდოთ ერთი ხაზი დასრულდება, სანამ
შეასრულოს მომდევნო ხაზი.
და თუ მე ვაპირებ მეტი Yahoo!, და მათი სერვერები მართლაც ნელი, და
ის მათ სამი წამი მომეცი უკან რომ საფონდო კარგი?
როდესაც მე მოხვდა, რომ ფასი ხაზი, თუ აღსრულების სინქრონული, რადგან ის მიერ
ჩვეულებრივ, რასაც ის უბრალოდ აპირებს არის თქვენი ბრაუზერის აპირებს შეაფერხოს for
სამ წამში.
და თქვენ არ აპირებს გამოუვა არაფერს, მიუხედავად იმისა, რომ იღებს, რომ მონაცემები.
ეს იქნება გაყინული.
>> და ეს ცუდია.
თქვენ არ გსურთ მომხმარებელს აქვს გაყინული ვებ გვერდზე.
სწორი?
ეს მხოლოდ ცუდი.
ყველა თანხმდება?
თუ თქვენ ათვალიერებს Facebook და ეს იყინება და თქვენ ვერაფერს, თქვენ
ნამდვილად იმედგაცრუებული.
ასე რომ, გამოსავალი არის ის, რომ ჩვენ რაღაც ასინქრონული ნაცვლად.
ასე რომ, ყველა ამ ასინქრონული რამ ამბობს არის, მე ვაპირებ ვკითხო ამ
URL ზოგიერთი მონაცემები.
და შემდეგ მე ვაპირებ შენარჩუნება აპირებს.
მე უბრალოდ აპირებს შეინარჩუნოს შესრულებაში რასაც კოდი, რომელიც იყო ამის შემდეგ.
>> და მაშინ, როდესაც, რომ მონაცემები მზად არის, მერე გადაამუშავებს მას.
რომ ყველა ის ამბობდა.
>> აუდიტორია: Ajax მხოლოდ იღებს კოდი ასინქრონული?
>> JOSEPH ONG: ეს არის ასინქრონული გზა მიღება მონაცემები.
ასე რომ, პირველი, რაც Ajax არის ეს საშუალებას ჩემთვის კიდევ მონაცემები
გარე ნახვა.
და მეორე ის არის, რომ რაც დარწმუნებული ვარ, რომ ჩემს გვერდზე არ ჩერდება ხოლო მე
მიღება, რომ მონაცემები.
სწორედ ასინქრონული ნაწილი.
რადგან ის მიდის off სხვაგან, იმიტომ, რომ მე ვთქვა, მე შენარჩუნება აპირებს, ხოლო
ის მიღება, რომ მონაცემები, რომელიც რაც ასინქრონული.
მე შენარჩუნება შესრულებაში.
>> გააგრძელეთ, რომ ასინქრონული იდეა გათვალისწინებით.
და მე შენ გაჩვენებ რა განსხვავება არის.
სინქრონული მობილური არის მარცხენა მხარეს.
ასინქრონული მობილური არის მარჯვენა მხარეს.
შეხედეთ ნომერი, თუ რომელი ნაბიჯები შეესაბამება რა
ახორციელებს თითოეული ხაზი.
იქ, მზადყოფნაში გვიჩვენებს up პირველი.
იმის გამო, რომ მიღების საფონდო ინფორმაციის Yahoo!
იღებს სამ წამში, ეს სადგომის სამი წამი.
და მაშინ შეტყობინებები ფასი მას შემდეგ, რაც იმ სამ წამში.
>> ახლა, რომ alert შოუები up იმ დროს -
სამი წამი შემოსული
და მაშინ შეტყობინებები by ამის შემდეგ.
ასე რომ, ეს მხოლოდ მიდის ეტაპობრივად.
ეს იგივეა, რაც თქვენ ბიჭები მიიღებს, სწორი?
With ასინქრონული შესრულების, თქვენ მიიღეთ პირველი.
მაშინ წავიდეთ off ამ URL.
და თქვენ ამბობთ, მე ვაპირებ უბრალოდ ითხოვენ მონაცემები.
და შემდეგ მე ვაპირებ პროცესის შემდეგ.
ასე რომ, ეს დაუყოვნებლივ ახორციელებს შემდეგი ხაზი მას შემდეგ, რაც მე, რომ
ასინქრონული მოთხოვნით.
>> ასე რომ 0.001 წამი, ხედავთ alert hi.
შეასრულოს ეს ფუნქცია, ყურადღებიანობა bye.
და რადგან მე პირობა დადო, რომ რომ გადაამუშავებს მონაცემები შემდეგ, რაც
ხდება როცა ეს მონაცემები ბრუნდება სამი წამის შემდეგ, მაშინ მე აწარმოებს, რომ
ფუნქცია, რომ მე იქ.
დიახ?
>> აუდიტორია: იქნებ დააზუსტოთ ან გარკვევა, თუ რა Ajax ნიშნავს?
>> JOSEPH ONG: So Ajax არის გზა, რომ თუ უნდა მონაცემები, როდესაც მე ნახვა და მე
არ მინდა, რომ ამოცნობა გვერდზე, მაშინ მე გამოიყენოს ეს ტექნოლოგია მოუწოდა Ajax.
რომ არსებითად მხოლოდ იმას ნიშნავს, წავიდეთ მისაღებად მონაცემები სხვა ნახვა.
და ამის გაკეთება ისე, რომ მხოლოდ არ ჩერდება ჩემი ვებ გვერდი.
>> აუდიტორია: ასე რომ, ის არის, რომ თანდაყოლილი ნაწილი JavaScript ან jQuery?
>> JOSEPH ONG: ასე რომ ვიღაცამ დაწერა გზა უნდა გააკეთოს, ამ JavaScript დიდი ხნის წინ.
ერთ მომენტში, რომ ეს არ არსებობს.
და ასე შემდეგ ვინმე გამოიგონა ეს ტექნიკა მისცეს ხალხს საშუალება, მოითხოვოს ამ მონაცემების
ამ მოდის.
და მათ დაწერეს რაღაცები ამის გაკეთება თქვენ.
და jQuery მხოლოდ გაძლევთ ამ ძალიან ლამაზი გზა ამის გაკეთება
ამ $. კიდევ ფუნქცია.
კითხვები?
შემიძლია უპასუხოს კითხვებს Ajax შემდეგ ძალიან.
მე ვიქნები აქ.
>> ასე რომ, მოდით us მისაღებად მონაცემების გარეშე გამაგრილებელი გვერდზე.
და ეს მოდით გავაკეთოთ ეს ასინქრონული ისე, რომ
არ იყინება გვერდზე.
ძალიან დიდი ხანია, არ წაიკითხა, თუ ეს განმარტება ძალიან გრძელი აღმოჩნდა თქვენთვის.
ასე რომ, საბოლოოდ, cross-site სკრიპტირების თავდასხმები.
ჩვენ ვნახეთ ამ Zamyla.
იმ შემთხვევაში, თუ ჩემს მონაცემთა ბაზაში ვინმეს აქვს ამ სახელით, რომელიც ამ სკრიპტის tag, და მე
აქვს გარკვეული კოდი ჩემს გვერდზე რომ ანაბეჭდები out ხალხის სახელები in a row, ან მე არ მაქვს
ზოგიერთი JavaScript კოდი, რომელიც ჩანართები ამ სახელით შევიდა გვერდზე,
რა HTML იღებს წარმოებული?
ისე, მე ამობეჭდოთ HTML tag.
მე ამობეჭდოთ ყველა ამ tags.
>> მივიღებ ნაწილი, სადაც მე ვარ ბეჭდვა ერთად ჩემს მეგობრებს.
მე ბეჭდვა Lauren out.
ეს ბეჭდვა Milo out.
და შემდეგ ჩემი სახელი მონაცემთა ბაზაში არის script ჩანაწერი
unflattering Facebook სტატუსი.
იმიტომ, რომ მე ჩასმული ამ შევიდა გვერდზე იმიტომ, რომ ეს ჰგავს JavaScript, როდესაც
ამ გვერდზე იღებს გაგზავნილი მომხმარებელი, იგი იღებს დასაჯეს როგორც JavaScript.
და ეს არის ის, რაც ჩვენ მოვუწოდებთ cross-site სკრიფტინგის შეტევა.
ვინმე აყენებს მუქარის ინფორმაცია თქვენს მონაცემთა ბაზაში, რომელიც შეიძლება შეესაბამებოდეს
დამატებითი string ან ზოგიერთი JavaScript string.
>> და, როდესაც იგი იღებს ბეჭდვითი გარეთ გვერდი ამ მოდის, მაშინ რა
ხდება, რომ ცუდი კოდი იღებს დასაჯეს რომ არ აპირებენ
ეს უნდა შესრულებული.
და ეს ყველაფერი cross-site სკრიპტირების თავდასხმა.
და გზა თქვენ გარშემო ეს მოსწონს Zamyla განაცხადა.
თქვენ უბრალოდ გადაიტანოთ რამ HTML სპეციალური სიმბოლო.
და ეს HTML სპეციალურ სიმბოლოებს არის PHP ფუნქცია, რომელიც ხელს შეუშლის ამ სახის
რამ ხდება, რომ თქვენ თუ თქვენ გაქვთ მუქარის
string თქვენს მონაცემთა ბაზაში.
უბრალოდ თავს, ისე, რომ იგი არ უნდა განიმარტოს, როგორც HTML.
იგი ცვლის პატარა ფრჩხილები რა ჩვენ მოვუწოდებთ პირებს.
და წავედით ამ ლექციების ძალიან.
ამიტომ ვფიქრობ, თქვენ ბიჭები უნდა ჰქონდეს კარგი შემოტევით, რომ.
კითხვები?
დიახ.
>> აუდიტორია: ასე როგორ აკეთებთ [INAUDIBLE]?
>> JOSEPH ONG: ამბობენ, რომ ერთხელ.
>> აუდიტორია: რა მონიტორზე -
>> JOSEPH ONG: Right.
ასე რომ თქვენ გაქვთ ის, რასაც ამბობს, როდესაც დავრეგისტრირდე ტიპის ჩემი სახელით.
მე უბრალოდ აკრიფოთ ამ სფეროში, ჩემი სახელი არის stript ჩანაწერის unflattering Facebook
მდგომარეობა ახლო სცენარი აქვს.
და რომ მხოლოდ იღებს შევიდა მონაცემთა ბაზა, იმიტომ, რომ მე არ შემიძლია ვთქვა, ვინმე
მსოფლიოში არ გააჩნია სახელი მარცხენა arrow იგი ან
სიტყვა სცენარი მას.
ეს ნამდვილად არ აქვს აზრი.
ასე რომ მე უბრალოდ უნდა დავრწმუნდეთ, რომ მე სანიტარია stuff სანამ ბეჭდვა
out გვერდზე.
>> აუდიტორია: ასე რომ HTML სპეციალური ბარათები ხელს უშლის script tags?
>> JOSEPH ONG: ჰო.
ასე რომ, ეს არ უშლის სკრიპტი tags.
უბრალოდ რაც დარწმუნებული ვარ, რომ script tags არ მიიღოს
გაგებული, როგორც HTML ან -
yeah.
უბრალოდ მოდის, რაც ის რეალურად არის.
ყველა უფლება.
ასე რომ, ეს იყო ინტელექტუალური მიმოხილვა.
ზემოთ.
>> [ტაში]