[Powered by Google Translate] [კვირა 9 გაგრძელდა] [დევიდ ჯ Malan - ჰარვარდის უნივერსიტეტი] [ეს არის CS50. - CS50.TV] ეს არის CS50. ეს არის ბოლომდე კვირაში 9. დიდი მადლობა. საბოლოოდ. კვირა 9. მე მივიღე ეს. დღეს ჩვენ გავაგრძელებთ საუბარი ვებ პროგრამირების ერთად თვალის მიმართ საბოლოო პროექტი, არა იმიტომ, რომ თქვენ უნდა გააკეთოთ რაღაც ვებ დაფუძნებული საბოლოო პროექტების მაგრამ რადგან არც საბოლოო პროექტების ან შემდეგ CS50 ეს, რა თქმა უნდა მიმართულებით, რომელშიც თანამედროვე პროგრამული აპირებს. და მაინც ეს არ არის რეალურად ადვილი რამ. ფაქტობრივად, ერთი უმძიმესი რამ გააკეთოთ ასპექტი დიზაინი. მაგალითად, დიზაინი მიერ ვგულისხმობთ რეალურად მიღების ინტერფეისი ან მომხმარებლის, გამოცდილება უფლება. მე daresay - და ჩვენ ვიცით ბოლო პრობლემა კომპლექტი როდესაც რამდენიმე თქვენგანს ეთერში თქვენი gripes შესახებ რამდენიმე ნაჭერი პროგრამული უზრუნველყოფა ან ტექნიკის რომ infuriates თქვენ, თუ არა მე კამპუსში ან off - არსებობს ბევრი საიტები არსებობს, არსებობს უამრავი აპარატურა არსებობს, ასეთი სახის sucks. მაგრამ რეალობა ის არის, რომ მიღების რამ არის მარტივი ჯერჯერობით ვართ მაინც ძლიერი არის ძალიან რთული ამოცანაა. ასე რომ დღეს ვკითხე ჯოზეფ და Tommy შეუერთდეს me up აქ ასე, რომ ჩვენ შეგვიძლია აქვს საუბარი, ორივე დაახლოებით დიზაინი და რა სახის აზროვნების პროცესი უნდა დაიწყოს გადის თქვენი უფროსი როდესაც თქვენ დიზაინს თქვენი საბოლოო პროექტები, თქვენი მომავალი ცდილობს. შემდეგ კი Tommy ს დახმარება ჩვენ შევხედოთ ზოგიერთი განხორციელების დეტალები. როგორ შეიძლება გარკვეული ხედვა ქაღალდზე ან თქვენი აზრით რომ თქვენ შეგიძლიათ შემდეგ შეასრულოს პროგრამულად გამოყენებით ზოგიერთი ტექნოლოგიებისა და ტექნიკის ჩვენ უბრალოდ დაიწყო ლაპარაკი, კერძოდ JavaScript და რაღაც კიდევ უფრო, კერძოდ AJAX, ასინქრონული JavaScript. რომელიც საშუალებას გაძლევთ შექმნათ ყველა მეტი დინამიკა ინტერფეისი მიერ მიღება უფრო და უფრო მონაცემები თანდათანობით საწყისი სერვერზე. ამიტომ, ჩვენ დავინახავთ, ზოგიერთი ასეთი snippets ასევე დღეს. როგორც განზე, თუ თქვენ დაინტერესებული ხართ კონცენტრაცია კომპიუტერულ მეცნიერებაში ან minoring კომპიუტერულ მეცნიერებაში, ვიცით, რომ ამ პარასკევს შუადღისას წელს მაქსველი Dworkin 221 იქნება პიცა ღონისძიება სადაც შეგიძლიათ ვისწავლოთ ცოტა მეტი კომპიუტერულ მეცნიერებათა. თქვენს გამოსავალი კარი დღეს თქვენ გექნებათ შეარჩიო არაოფიციალური გზამკვლევი CS ჰარვარდის. ჩვენ Put It On ნაგვის cans გარეთ at waist სიმაღლე ასე რომ, თუ გსურთ აითვისებდა ამ და ვისწავლოთ ცოტა მეტი CS, რომ იქნება იქ, როგორც ეს იყო კვირაში 0. აგრეთვე თუ გსურთ შემოგვიერთდით ამისთვის CS50 ლანჩი ამ პარასკევს 1:15 საათზე, ხელმძღვანელს cs50.net/lunch. გარეშე ado, მე გაძლევთ სწავლების თანამემამულე ჯოზეფ Ong. Hi. [ტაში] მადლობა. პირველად შევიტყვე დიზაინი იყო კლასის აქ მოუწოდა CS179. პროფესორი დრო გვითხრა ამბავი კიდევ ერთი პროფესორი ვინც იყო წასული სასტუმროში და გამოიყენება ონკანები. შეუძლია ვინმეს მითხრათ რა 2 knobs მარცხენა და მარჯვენა გავაკეთო? [სტუდენტი] ცხელი და ცივი. >> ცივი და ცხელი. კარგი. რა თქვენ ჩვეულებრივ ველოდებით, არა? ეს პროფესორი გამოყენების შემდეგ faucet სურს მიიღოს შხაპი, და იგი აგრძელებს გამოიყენოს ეს. მისი აზრით მარცხენა და მარჯვენა მხარეს არის ცხელი და ცივი, არა? მაგრამ შეიძლება ვინმეს მითხრათ რა ამ მართლაც? ნებისმიერი ხელში? [Inaudible სტუდენტი საპასუხოდ] >> ერთი წინადადება არის? [Inaudible სტუდენტი საპასუხოდ] >> ტემპერატურა? ასე რომ ერთი მათგანი აკონტროლებს ტემპერატურის და სხვა კონტროლის? >> [სტუდენტი] წყლის წნევით. წყლის წნევით. კარგი. ეს პროფესორი დადის ამ და, ფიქრობდა ისინი აკონტროლებენ ცხელი და ცივი, უხვევს მარჯვნივ ერთი, რომელიც მისი აზრით არის ცხელი, ყველა გზა მდე იმიტომ, რომ მას სურს მიიღოს თბილი შხაპით. ისე, ამ ნამდვილად არ ემთხვევა up, ასე იგი იღებს ამ არცთუ გართობა გამოცდილება ყოფნის ცივი შხაპი, და ჩვენ ყველამ ვიცით რა, რომ იგრძნობა. ეს არის მაგალითი იმისა, დიზაინი ხარვეზი. რას ვგულისხმობ მიერ, რომ მისი მოლოდინი faucet არ ემთხვევა რა გამოვიდა საშხაპე, რაც სახის სამწუხარო მისთვის. ასე რომ, ეს არის მაგალითი იმისა, დიზაინი ხარვეზია, რაც ხდება რეალურ ცხოვრებაში. მაგრამ ჩვენ ვხედავთ ყველა სახის სხვა პირობა ასევე. ჩვენ ალბათ არ ფანები MBTA სისტემა. ეს არის მეტროს სისტემა რეალურად ლონდონში, რომელიც ამბობს: "ეს ღილაკი არ გამოიყენება." რატომ არის კი იქ? რატომ ჩვენ კი იზრუნოს? როდესაც მე ვიყავი ბავშვი, მიმდინარეობს ტექნიკური საზრიანი ერთ სახლში, როდესაც კომპიუტერი იქნებოდა ავარიის, ჩემი დედა მინდა ჩემთან, გვიჩვენებს ჩემთვის ეს ეკრანზე და მთხოვდნენ, თუ რა მოხდა. მაშინაც კი, მე არ ვიცი რას ნიშნავს. [სიცილის] რა? [სიცილის] ზოგჯერ ჩვენ ვგრძნობთ, როგორიცაა პროგრამული უზრუნველყოფის დეველოპერებს მხოლოდ trolling us. როგორც მომხმარებლებს ჩვენ მსგავსად, "რა ხდება? Someone გვითხრათ." ეს ყველა მოდის ქვემოთ საკითხი დიზაინი. დიზაინი, როგორც ვხედავთ, არ არის წმინდა წყლის შესახებ ესთეტიკის არა როგორ გამოიყურება. ჩვენ ვხედავთ, რომ ამ პატარა Pop-up ზე აქ რეალურად გამოიყურება საკმაოდ ლამაზი. მას აქვს drop shadow ფონზე, მას საზღვრის radiuses მიმდინარეობს. ეს სახის საკმაოდ. ეს ნამდვილად არ მოფიქრებული, რადგან ეს არ არის ძალიან მოსახერხებელი. რომ პატარა Pop-up რომ მოდის up ნამდვილად არ მაძლევს ნებისმიერი ინფორმაცია შესახებ, თუ რა ხდება, ეს არ მითხრათ არაფერი როგორც მომხმარებლის შესახებ, თუ როგორ უნდა აღადგინონ, რომ შეცდომა. ჩვენ გვინდა, რომ ვიფიქროთ იმაზე, დიზაინი არ არის. პირველი, ეს არ ესთეტიკას. ის ასევე არ ჩაყრის თქვენი app ერთად ტონა არასაჭირო ფუნქციები. თუ თქვენ ტაილანდური რესტორანი, თქვენ ალბათ არ გვინდა ვიყოთ სტომატოლოგი ამავე დროს. და Facebook კითხვები, არ, რომ მრავალი ადამიანი გამოიყენა და ეს ნამდვილად არ იყო იმ ძირითადი რაც იყო შენობა. და ამიტომ ლამაზი ფიქრი არა იმდენად რაოდენობის რამ რომ თქვენ აყენებს თქვენი განაცხადის მაგრამ ხარისხი და როგორ თქვენ მიღების, რომ მომხმარებლის გამოცდილება უკეთესი მიერ რეალურად გაუმჯობესების საფუძველზე, რაც თქვენ უკვე გაქვთ. In მოკლედ, დიზაინი გვეუბნება რა უნდა ავაშენოთ. მაგალითად, თუ ჩვენ ვაშენებთ რაღაც რომ მოდით ძებნის რამ up, როგორიცაა Google, მაგალითად, უნდა გავაკეთოთ რამ წესით რომ მოითხოვს მომხმარებლის მიიღოს უამრავი დაწკაპუნებით მისაღებად რა უნდათ, ან უნდა გავაკეთოთ ეს გზა, მაგალითად, Google-მომენტალური ან თვითდასრულება რომელიც საშუალებას გვაძლევს კიდევ ჩვენს შედეგი უფრო სწრაფად? საინჟინრო მოიცავს, როგორიცაა Tommy გაჩვენებთ, რეალურად აშენებს მას. უამრავი სახის დიზაინი. მაგალითად, თუ თქვენ მშენებლობის რაღაც განათავსოს რაღაც წელს მესამე მსოფლიო ქვეყანა, სადაც არ არის ბევრი ელექტროენერგიის ან რომ ბევრი ტექნიკა, თქვენ უნდა შეიმუშაოს თუ რას აშენებენ ისე, რომ ადვილად აძლევს ხელმისაწვდომობის ადამიანი. მაგრამ რა სახის სხვა დიზაინის გადაწყვეტილებები შეიძლება იქ იყოს ან შეიძლება იყოს ჩართული მსგავსი რამ? Yeah. მე ვხედავ ხელში. [Inaudible სტუდენტი საპასუხოდ] >> მარჯვენა. სწორედ. Accessibility არის ერთი რამ. ბევრი ადამიანი არ ვფიქრობ, "რა ჩემი წევრებს?" მოსწონს უკიდურესი არც სპექტრი. მაქვს წევრებს, რომლებიც შესაძლოა შეზღუდული შესაძლებლობების მქონე რომ მე არ ფიქრობს და მე უბრალოდ ფიქრი დიზაინისა საერთო მომხმარებლის. ინტერნეტი ხელმისაწვდომი ყველას დღესდღეობით, და ასეც უნდა იყოს პროექტირების იმ ხალხს, ისევე. რა სახის სხვა დიზაინის გადაწყვეტილებები შეიძლება თქვენ გააკეთებთ? დიახ. >> [სტუდენტი] ღირებულება. ღირებულება. ძალიან კარგი. კიდევ ერთი რამ შეიძლება ბაზის ჩვენი დიზაინის გადაწყვეტილებები არის ღირებულება. თუ ჩვენ ბიზნესს, გსურთ აშენება რაღაც რომ არ იღებს გაცილებით ღირებულება წარმოების მაგრამ შეუძლია გაყიდოს დროს განსაკუთრებით მაღალი ღირებულება ან შეუძლიათ მიიღონ us გარკვეული მოგება. ეს არის ყველა ტიპის დიზაინი, მაგრამ როცა ჩვენ ვაშენებთ რაღაც ინტერნეტში ან როდესაც ჩვენ ვაშენებთ რაღაც რომ ალბათ არ ღირს, რომ ბევრი ავაშენოთ დღემდე, მოსწონს ინტერნეტ პროგრამები - თქვენ არ უნდა ჩააგდოს ბევრი კაპიტალის მივანიჭო რათა რაღაც, რომ რეალურად მუშაობს - რა ჩვენ უფრო გვაწუხებს არის მომხმარებლის, გამოცდილება. ჩვენ მოვუწოდებთ ამ მომხმარებლის ორიენტირებული დიზაინი. არსებითად რა მომხმარებლის ორიენტირებული დიზაინი მოიცავს არის გამოსული თქუენგან in ფეხსაცმელი თქვენი მომხმარებლებს. თუ ვინმე ნიშნები up, რასაც მე მშენებლობის, ისინი აშკარად მოვიდა ჩემი კერძოდ განაცხადის მიზანი გათვალისწინებით, ერთად ამოცანა მათ სურთ, რათა დასრულდეს. და თქვენი სამუშაო არ არის მხოლოდ, რათა დაეხმაროს მათ დასრულებას, რომ ამოცანა მაგრამ, რათა დაეხმაროს მათ დასრულებას, რომ ამოცანა ისე, რომ არის ეფექტური, ინტუიციური, და, როგორც ზოგიერთი პირი განაცხადა იქ, ხელმისაწვდომი. რას ნიშნავს ეფექტურობა? ეფექტურობა ნიშნავს, რამდენად სწრაფად ამჯამად ჩემი მომხმარებლის დაასრულებს ამოცანა მოცემული ჩემი ინტერფეისი. სჭირდება ბევრი დაწკაპუნებით მათთვის მისაღებად ერთი ადგილიდან სხვა? არის თუ არა რუტინული? ისინი უნდა შეასრულონ უამრავი განმეორებადი ამოცანებს? ჩვენ გვსურს, რომ პროცესი, როგორც ეფექტური როგორც შესაძლო ასე რომ, მათ არ უნდა გავაკეთოთ იმ სახის ნივთები. რაც შეეხება intuitiveness, რომ არის, მაგალითად, თუ მომხმარებლის გამოიყურება up ჩემი ინტერფეისი, არის ადვილი მათთვის მიიღონ ადგილიდან ადგილი? არის ადვილი მათთვის გაერკვნენ, რას უნდა დააჭიროთ ჩემი ინტერფეისი იმისათვის, რათა მიაღწიონ მიზანს ან ამოცანა, რომ მათ სურთ მიაღწიონ? და ბოლოს, როგორც ერთი ადამიანი ამბობს იქ, ხელმისაწვდომობის ძალიან მნიშვნელოვანია. [კაცი სპიკერი] საქმე ხელმისაწვდომობა რამ, როგორიცაა ხედვა, მინდა როგორ შემიძლია რეალურად შეიმუშავონ რაღაც ვინც არის ბრმა? Oh. ის ხალხი, ვინც ვერ ხედავს საერთოდ, გვაქვს რაღაც მოუწოდა ეკრანზე მკითხველი. რა უნდა გავაკეთოთ, არის თქვენ უნდა ავაშენოთ თქვენი ნახვა ისე, რომ, მაგალითად, კონკრეტული ტექნოლოგიების, რაც ჩვენ მოვუწოდებთ - უამრავი რამ არის. ვფიქრობ არსებობს ეკრანზე მკითხველი მოუწოდა Jaws. ბევრი ეს ყველაფერი დაეყრდნონ, რაც ჩვენ მოვუწოდებთ ფართობი წესები რათა წაიკითხა, რათა მომხმარებლის რა არსებობს გვერდზე. იმ ხალხს, ვინც ვერ ხედავს, თქვენ უნდა დავრწმუნდეთ, რომ ამ ეკრანზე მკითხველი შეიძლება რეალურად შეარჩიო შინაარსი გვერდზე და შეიძლება რეალურად ნახოთ თქვენი მომხმარებლებს, თუ თქვენ ვერ ხედავთ, მინიმუმ თქვენ მაინც ესმით შინაარსი გვერდზე. Yeah. Okay. საკმარისი ვსაუბრობთ კარგი დიზაინით. ვისაუბროთ იმაზე ცუდი დიზაინი. ეს ის საკითხებია, რომ თქვენ არ უნდა გავაკეთოთ. შეუძლია ვინმეს მითხრათ მათი გამოცდილება Craigslist და რა, მათი აზრით, არ არის იმდენად დიდი, ამ დიზაინით? დიახ. >> [სტუდენტი] ვფიქრობ, ძალიან ბევრი სიტყვა ერთ ფართობი. ძალიან ბევრი სიტყვა, არა? სრულიად დაუძლეველი. თქვენ მოვიდა ამ გვერდზე და თქვენ მიესალმა მთელი bunch რამ აქ რომ შეიძლება არც კი აქვს მნიშვნელობა თქვენ. მაგალითად, თქვენ ცხოვრობთ ერთ სახელმწიფოში, რომ არ იწყება ეს წერილი. ვთქვათ თქვენ ცხოვრობენ ტეხასის ან რამე. თქვენ უნდა გადახვევა ყველა გზა ქვემოთ გვერდზე მისაღებად საიდან ხართ დროს. მე ვარ Boston, ნება მომეცით გამოიყურება წელს მასაჩუსეტსის. სად არის მასაჩუსეტსის? ოჰ, ეს უფლება აქ. ოჰ, ეს Boston. Okay. მოდით შევხედოთ Boston. [სიცილის] Pretty აბსოლუტური, არა? უხერხულ რამ იქ. [სიცილის] ვთქვათ მე ეძებს სადღაც ცხოვრება. რამდენი ადამიანი რეალურად ათვისებულ Craigslist? ტონა თქვენ. არსებობს საკმაოდ ცუდი გზა შევხედოთ, მაგრამ მოდით შევხედოთ ამ. რა სხვაობაა img და pic? შეუძლია ვინმეს მითხრათ? არსებობს ფაქტიურად განსხვავება არ არის. ისინი ნიშნავს ზუსტად იმავეს, მაგრამ მათ აქვთ სხვადასხვა ეტიკეტები მათთვის რაიმე მიზეზით. თუ მე დააწკაპუნეთ აქვს გამოსახულება, არაფერი ხდება გვერდზე. მე რეალურად უნდა დააჭიროთ ძებნა ისევ რაღაც უნდა მოხდეს. რა შეიძლება იყოს უკეთესი დიზაინი გადაწყვეტილება, რომ შეიძლება გაკეთდეს იქ? თუ მე დაწკაპვით რომ ფილტრი, მე ალბათ სურთ, რათა გავფილტროთ მიერ კონკრეტული სამოქმედო ან ამ კონკრეტულ კატეგორიაში. ასე რომ ნაცვლად, რომელმაც უნდა დააჭირეთ ძებნა ისევ, მე ვერ უბრალოდ ავტომატურად გავაკეთოთ ფილტრაცია სახის Google სტილი სადაც მათ ამის გაკეთება მყისიერად. [Malan] მაგრამ არ ქმნის, როგორც ჩვენ ვხედავთ მათ დღემდე უნდა იყოს ფიზიკურად წარმოდგენილი მიერ hitting შეიყვანეთ მინიმუმ ან დაწკაპვით ღილაკს? როგორც თქვენ უნახავს აქამდე, თქვენ ნამდვილად უნდა დააჭირეთ Submit გავაკეთოთ იმ რამ. მაგრამ, როგორც ტომი გაჩვენებთ წელს მეორე, არსებობს გზები თქვენ ისეთი, რომ როდესაც თქვენ დააჭირეთ, რომ რამ მას შეუძლია ავტომატურად გააგზავნოთ რაც ჩვენ მოვუწოდებთ AJAX მოთხოვნა და მიიღოს მონაცემები უკან და გავფილტროთ თქვენი შედეგების მომენტალურად. არსებობს ტონა რამ, რომ არ არის სწორი ამ ინტერფეისი. [Malan] შეგიძლიათ მოძებნოთ კემბრიჯის? არსებობს რაღაც ოდნავ anomalous აქ სადაც თქვენ აღელვებს კემბრიჯის და ჯერ თქვენ მიღების WESTFORD, საგაზაფხულო Hill, დასავლეთის Newton და მოსწონს. ალბათ არ არის იდეალური. >> ალბათ არ იდეალური. როგორ შეიძლება მე შეძლებს მიიღოს მომხმარებლის გამოცდილების უკეთ ამ კონკრეტულ გვერდზე? დიახ. >> [სტუდენტი] ინსტრუქციები. Okay. ინსტრუქცია, თუ რა სახის გრძნობა? [სტუდენტი] მაგალითად, რამ პირველად წევრებს, რომლებიც არც კი იციან, თუ რა არის Craigslist ან არ იცით თუ რას უნდა გავაკეთოთ. მარჯვენა. ასე რომ აეხსნა რა Craigslist არის ამ გვერდზე მნიშვნელოვანია. ჩვენ შეგვიძლია რეალურად ვუთხრა მომხმარებლებს რა ამ გვერდზე არის რეალურად ამისთვის. თუ მე უბრალოდ გამოჩენის ამ, ვხედავ მთელი bunch of ადგილებში. ისიც კი არ ვიცი, რას გულისხმობენ. რაც მთავარია, მხოლოდ შევხედავთ ამ ინტერფეისს, გახსოვთ მომიწია გადახვევა ქვემოთ ტონა რამ იპოვოს კონკრეტული თანამეგობრობას რომ მე ფაქტობრივად ზრუნავდა ამ. რა სწრაფად გზა შემეძლო ეს? დიახ. [სტუდენტი] დაიყოს მათ up შევიდა აღმოსავლეთით, დასავლეთით რეგიონებში. >> Okay. მე ვერ გაყავით მათ მეტი კატეგორიები, რომელიც შეიძლება დაეხმაროს ჩემთვის უფრო სწრაფად განსაზღვრავს თუ როგორ უნდა, რომ ამ კონკრეტულ ადგილას. [სტუდენტი] განათავსეთ ჩამოსაშლელი სია. >> მარჯვენა. Okay. მე ვერ გამოიყენებს ჩამოსაშლელი მენიუ, რადგან ჩვენ გვაქვს ფიქსირებული კომპლექტი რამ და ჩვენ შეგვიძლია ვაჩვენოთ მათ ჩამოსაშლელი მენიუ. ამ გზით ეს არ დასჭირდეს იმდენად სივრცეში ეკრანზე. მაგრამ უფრო უკეთესი, ვიდრე, რომ, რა ვქნათ? დიახ. >> [Inaudible სტუდენტი საპასუხოდ] >> გვეტყვით, რომ ისევ? >> [სტუდენტი] ძებნა ყუთში. Yeah, საძიებო ველში. სწორედ დიდი. რა შეგვიძლია რეალურად გააკეთოთ თუ ჩვენ ვიხსენებთ სლაიდები, საძიებო ველში. თვითდასრულება. ძალიან მარტივად ძებნის მეშვეობით შედეგი, რომ თქვენ იცით, რომლებიც არიან მზადყოფნაში. თუ დავიწყო აკრეფით BO, უბრალოდ ეჩვენებინა ყველა შედეგი რომ აქვს BO შიგნით მათ. ამ გზით შემიძლია ძალიან ადვილად იპოვოთ კონკრეტულ შემთხვევაში მინდა წასვლა ნაცვლად, რომელმაც უნდა გადახვევა მეშვეობით ამ მართლაც დიდი სია. ეს არის ყველა სახის მართლაც დაბალი ჩამოკიდებული ხილი, რომ ადამიანი, რომელიც ახორციელებს Craigslist შეიძლება მართლაც მიიღოს გამოცდილება ნახვა უკეთესი მათი კონკრეტული მომხმარებლის. Okay. საკმარისი ვსაუბრობთ ცუდი საიტებზე. ვისაუბროთ იმაზე Facebook. როდესაც Facebook გამოვიდა, განსაკუთრებით Facebook photos, იყო უამრავი სხვა მომსახურების დროს, რომელიც შეეძლო ზუსტად იგივე რამ. მათ შეეძლოთ ორგანიზება თქვენი ფოტო შევიდა ალბომში. რა შეგიძლიათ გააკეთოთ თქვენ შეიძლება ორგანიზება მათთვის კომპლექტი ისევე. თქვენ შეიძლება ორგანიზება მათ მიერ თარიღი. თქვენ შეიძლება ყველაფერი ეს კონკრეტული რამ. მაგრამ ჯერ არავის ვიცი, რა გააკეთა Facebook photos აფეთქდეს დროს იგი გამოვიდა? დიახ. >> [სტუდენტი] Tags. >> Tags. სწორედ. ჩვენ გვყავს მილო მეტი აქ, ვინ არის ჩვენი ძაღლი თილისმად რომ CS50 bandana. თქვენ ხედავთ, რომ ჩვენ გვაქვს ეს ფუნქცია ჭდეებისთვის შუა. და რა გააკეთა Facebook photos ასე საინტერესო გამოყენებადობა თვალსაზრისით არის ის, რომ რეალურად დაშვებული ხალხი მეშვეობით ჩართვა მათი მეგობრებს მათი ფოტოები. Facebook-, რადგან მათი ნახვა განსაკუთრებით სოციალური, ეს დაახლოებით აშენებენ ამ სახის სოციალური გარემოა. რომ გაუმჯობესდა გამოცდილება ფოტო გაცილებით მეტი იმიტომ, რომ მათ შეეძლოთ რეალურად დაიწყოს განაცხადა, "ეს არის კავშირები ადამიანებს შორის, და ეს ფოტო ხალხზე თქვენ ნამდვილად აინტერესებს. " ნაწილი ისიც დალაგების narcissism. ადამიანს მოსწონს უნდა tagged in ფოტო და რამ, როგორიცაა, რომ. მიუხედავად იმისა, რომ აუცილებლად კარგი ადამიანის trait, ამავე დროს ის პრინციპებზე დაფუძნებული დიზაინი გადაწყვეტილებები რადგან ადამიანი რეალურად აინტერესებს რამ მოსწონს ეს. ასე რომ Facebook photos. მაგრამ მოდით გაიგო Facebook ზოგადად. დარწმუნებული ვარ უამრავი ადამიანი აქ აქვს მოსაზრებები Facebook, ორივე კარგი დიზაინის გადაწყვეტილებები და ცუდი დიზაინის გადაწყვეტილებები. მოდით Vent ან იყოს ბედნიერი. Come on. ვიცი ყველა იყენებთ Facebook. ვიღაცამ უნდა ჰქონდეს რაღაც ცუდი ვთქვა ან რაიმე კარგი ვთქვა ამის შესახებ. დიახ. [სტუდენტი] სიახლეები feed არსებობს ბევრი რამ მე ნამდვილად არ აინტერესებს. ახალი ამბები feed არ ნახოთ ბევრი რამ შეიძლება არ აღელვებთ. თქვენ გაქვთ მეგობრები Facebook-ზე ვინ ხარ არ მინახავს, ​​2 ან 3 წლის და ხედავთ მათი ამბების შედეგი popping up თქვენს ამბები Feed და თქვენ ნამდვილად არ მაინტერესებს. Facebook ფაქტობრივად გააკეთა ძალისხმევას, რათა ეს უკეთესი, და ისინი მართლაც სცადა დააყენებს შესაბამისი შედეგების ზევით ამბები Feed როგორც გვიანდელი ასე რომ თქვენ რეალურად ვხედავ რამ მიერ მეგობრები, რომლებიც შესაბამისი თქვენ ან თქვენი ახლო მეგობარი. არაფერი? დიახ. [Inaudible სტუდენტი საპასუხოდ] >> გვეტყვით, რომ ისევ? [სტუდენტი] განცხადებები შედარებით unobtrusive. >> რა გრძნობა? [Inaudible სტუდენტი საპასუხოდ] მათ არ აქვთ სინათლის ეკრანზე, ისევე ბანერები. Okay. ეგ კარგია. თუ გახსოვთ ინტერნეტის '90s - >> [Malan] მე იქ. >> მან იქ იყო. [სიცილის] გახსოვთ ალბათ flashing GIFs ფონზე, sparkly რამ, GeoCities სტილის რამეს, რასაც. რომ მართლაც არ მაგალითი კარგი დიზაინი რადგან ეს მართლაც ყურადღების გადასატანი საწყისი გვერდი. იელის ხელოვნების ნახვა გამოყენებული აქვს ანიმაციური GIFs როგორც მათ ფონზე და თქვენ ვერ წაიკითხა არაფერს გვერდზე, მაგრამ ვფიქრობ, ვინმე რეალურად მათ ვესაუბრე და ახლა ცოტა განსხვავებული. [Malan] ეს ბევრად უკეთესი არის. >> გაცილებით უკეთ არის, როგორც ხედავთ. >> [Malan] Oh Yeah. უბრალოდ დიდი, უბრალოდ - Yeah. Okay. ნაწილი ასევე რაც თქვენს გვერდზე შესაძლოა ძალიან მინიმალისტური და გასაგები ასე რამ გვერდზე ბრუნვა ისე, რომ ძალიან ლოგიკური და არ მიიღონ გზა ერთმანეთს. რა სახის სხვა რამ არის კარგი შესახებ Facebook ან ცუდი Facebook? მოდით უბრალოდ დიზაინი საუბარი აქ. Oh. სად? Yeah. [სტუდენტი] ახალი Timeline სისტემა საშუალებას გაძლევთ მოძებნოთ პირის პროფილის მათი წარსული. Ooh, ქრონოლოგია. Timeline არის დიდი რამ, რადგან იგი საშუალებას გაძლევთ stalk თქვენს მეგობრებს უკან, როდესაც ისინი საშუალო სკოლა. Timeline არის კარგი, რადგან იგი საშუალებას გაძლევთ გავფილტროთ მეშვეობით კონტენტი ბევრი უფრო სწრაფად, ეს გაძლევთ საშუალებას მოიძიოთ რამ იქნებოდა სხვაგვარად მიღებული თქვენ მართლაც დიდი დრო, რათა იპოვოს მხოლოდ სენსორული up და down, up, up, up, up, up, ისევე ვაპირებთ უკან დრო. მაგრამ შემდეგ ასევე სახის downside რომ თვალსაზრისით მომხმარებლის, გამოცდილება. რა შეიძლება რომ იყოს? დიდი სიტყვა, რომელიც იწყება P-R. >> [სტუდენტი] კონფიდენციალურობა. >> პირადობა, არა? კონფიდენციალურობის არის უზარმაზარი მომხმარებლის, გამოცდილება საკითხი. ეს არის ერთი რამ მე სიძულვილის შესახებ საუკეთესო Facebook არის. [სიცილის] [Malan] ისევე როგორც მე ახლა. დავით არ აცნობიერებენ ამ რეალურად მოხდა, სანამ გუშინ. ახლა მან იცის, რომ ყოველ ჯერზე მე chat მას მე ვიცი ის იყო იგნორირება ჩემთვის. [Malan] უხერხულ ნაწილი მე რეალურად იგნორირება მას, და არ ვიცოდი იცოდა მე იგნორირება მას. [სიცილის] კონფიდენციალურობის არის უზარმაზარი საკითხი. შეუძლია ვინმეს აქ მითხრათ რა შეიძლება იყოს ცუდი Facebook კონფიდენციალურობის გარდა იმისა, რომ ისინი რამ ასე? რა არის ეს განსაკუთრებით მძიმე გავაკეთოთ დაკავშირებით Facebook კონფიდენციალურობის? რომ სახის წამყვანი საკითხია. დიახ. >> [სტუდენტი] დაფარეთ თქვენი ფოტოები გარკვეული ხალხი. მარჯვენა. სწორედ, დასამალი თქვენი ფოტოები გარკვეული ხალხი. მათ აქვთ ამ პატარა, პატარა ღილაკი ზედა მარჯვენა გაძლევთ გადართვა კონფიდენციალურობის ფოტო. მათი კონფიდენციალურობის პარამეტრები ძალიან მერყეობდა სხვადასხვა სახის მენიუები. ისინი მიღებული უკეთესი ამის შესახებ ცოტა ხნის წინ, მაგრამ ეს გამოიყენება იმ შემთხვევაში რომ როცა უნდოდა თავიდან ასაცილებლად თქვენი მეგობრები ხედავს ფოტო, თქვენ უნდა გაიაროს ძალიან რთული 5 ნაბიჯ პროცესი მიმდინარეობს, როგორიცაა, ნება მომეცით დააჭირეთ ამ ბმულს, ახლა ნება მომეცით დააჭირეთ ისევ, მინდა კიდევ ერთხელ დააჭირეთ, ნება მომეცით მიუთითოს, თუ რომელი ხალხი ვერ ხედავს ჩემი ფოტოსურათები. ეს არ არის განსაკუთრებით კარგი Facebook-ს ნაწილი რადგან იმდენად მომხმარებლის შესახებ გამოცდილება რეალურად მათთვის თავისუფლება გაკონტროლება, რასაც ადამიანები ვხედავთ. ჩვენ მოვუწოდებთ ამ მომხმარებლის კონტროლი და თავისუფლება. თუ თქვენ არ გაქირავების თქვენი მომხმარებლებს გავაკეთოთ, რომ გზა, რომელიც არის ეფექტური და ინტუიციური, მაშინ თქვენი მომხმარებლის, გამოცდილება არ არის ნამდვილად, რომ დიდი იყო.  გსურთ თუ ბიჭები მოსწონთ რომ არაფერი ვთქვათ Facebook? როგორ შემიძლია ჩართოთ ეს off? [Ong] თქვენ არ შეგიძლიათ ჩართოთ ამ off, და ეს არის უზარმაზარი გამოყენებადობა ხარვეზის შესახებ ნაწილი Facebook. ეს ფუნქცია - მე რეალურად ჩანდა შევიდა გუშინ - ეს არც რომ ვერ გავაკეთებთ ან ის დაკრძალეს სადღაც ძალიან, ძალიან ღრმა წელს recesses of Facebook, რადგან მე ვერ გაერკვნენ, თუ როგორ უნდა გამორთოთ ამ ფუნქციის ყველა. [Malan] მაგრამ ზოგჯერ ეს კომპრომისები არ არის აშკარა იმიტომ, რომ თქვენ ბიჭები არ მოგვცა ბევრი სასარგებლო კავშირი სხვადასხვა CS50 განაცხადების და საიტებზე, რომ რა თქმა უნდა იყენებს. ჩვენ არ განხორციელდეს ყველა ეს წინადადებები და წინადადებები. ნაწილი რომ არის მისაღებად ამდენი მოითხოვს, რომ ეს ფუნქცია ახლა, მაგრამ ზოგჯერ ჩვენ უბრალოდ მიიღოს შეგნებული გადაწყვეტილება მოსწონს, "მადლობას გიხდით წინადადება, მაგრამ ჩვენ ვერ ვთანხმდებით". ასე როგორ რეალურად გადაწყვეტს, თუ რა უნდა გააკეთოს, თუ თქვენი მომხმარებლებს ვფიქრობ, თქვენ უნდა გავაკეთოთ რამე მაშინაც კი თუ თქვენ არ არის აუცილებელი? ეს ჯარიმა შორის ბალანსის რეალურად მოსმენის რა თქვენი მომხმარებლებს ამბობენ და ფაქტობრივად გარკვეული სახის ხაზი სადაც თქვენ ამბობენ, "ჩვენ არ ვაპირებთ ამის გაკეთებას რა ამ მომხმარებლებს ამბობენ." კერძოდ, ვფიქრობ იყო ციტირებით ჰენრი ფორდი, რომ თანხები ამ up კარგად. "მე რომ ვთხოვე ხალხს რა უნდოდათ, ისინი განაცხადა უნდოდათ სწრაფად ცხენები". შეუძლია ვინმეს სახის აჯავრებენ გარდა რა, რომ ციტირებით ნამდვილად ნიშნავს? ეს არ არის მხოლოდ, რომ მომხმარებლებს იციან რა უნდათ, მაგრამ ეს უფრო, რომ - [სტუდენტი] მათ არ იციან, რა არის შესაძლებელი. In ნაწილი არ იციან, რა არის შესაძლებელი. ცელქი, რომ გარდა ცოტა მეტი. რას ნიშნავს რომ? [Inaudible სტუდენტი საპასუხოდ] ეგ კარგია. მე ვფიქრობ, რომ ჩვენ ვცდილობთ ვთქვა აქ არის ის, რომ ადამიანმა იცის რა უნდათ. მათ სურთ უფრო სწრაფად ცხენები. რა მათ მართლაც სურთ არის უნარი გადაადგილება უფრო სწრაფად, მაგრამ არ ვიცი საშუალო რომლითაც უნდა მივაღწიოთ, რომ. როცა მოვა თქვენი მომხმარებლებს და თქვენი მომხმარებლებს რამ გითხრათ და ისინი გითხრათ, "ჩვენ გვინდა, ამ თვისებების და ამ თვისებების და ამ თვისებების," თქვენ არ მინდა აუცილებლად ვიფიქროთ, "ნება მომეცით წავიდეთ წინ "და განხორციელება, რაც მათ ცალსახად ამბობენ," მაგრამ რა გსურთ ვიფიქროთ არის, "როგორი იდეები შემიძლია, რომ?" რა ისინი ნამდვილად გინდათ? და იქიდან თუ რა შეგიძლიათ გააკეთოთ შეიმუშავონ რამე რომ აკმაყოფილებს იმ მოითხოვს მაგრამ არა აუცილებლად ისე, რომ მომხმარებლის მოელის მას დაკმაყოფილდება. ასე რომ რაღაც საბოლოო პროექტები, ძალიან რეალური თვალსაზრისით, რა სასარგებლო heuristic როდესაც საქმე მიღების რაღაც უკეთესი, განსაკუთრებით თუ დიზაინერი ჰყავს ამ ქედმაღლურად მის შესახებ რომლითაც თქვენ სახის ვიცით, რა საუკეთესო, თქვენ შესაძლოა შეიტანენ თქვენს მომხმარებლებს, მაგრამ როგორ რეალურად წავიდეთ მისაღებად რომ კავშირი? ფინალში პროექტები, ძალიან კონკრეტულად, რა აწარმოებს ოპტიმალური შედეგი აქ? რა აწარმოებს ოპტიმალური შედეგები - და წავალ ამ წელს მეორე - ეს პროცესი ვითარდება და შემდეგ ტესტირება და შემდეგ iterating. რას ვგულისხმობ მიერ ტესტირება ჩვეულებრივ, როდესაც თქვენ დიზაინზე რაღაც ფიქრობთ ეს საკმაოდ კარგი, როგორიც, "მე ასეთი დიდი დიზაინერი. ყველას აპირებს მიყვარს ეს." და მაშინ დატოვეთ იგი არსებობს და ხალხი ნამდვილად არ მომწონს რატომღაც. რა უნდა გააკეთოთ თქვენ უნდა მიიღოს ნაწილები რამ, რომ ხალხი მოსწონს და revamp რამ, რომ ხალხი არ მიყვარს. ეს ჟღერს ძალიან აშკარა პროცესი, მაგრამ ეს პროცესი მუდმივად iterating თავზე რა თქვენ უკვე აშენებული არის პროცესი, რომელიც გეხმარებათ არა მხოლოდ დახვეწა თქვენი საკუთარი დიზაინით უნარების, არამედ გეხმარებათ დახვეწა დიზაინი ასე, რომ ხალხი რეალურად ვაფასებთ თქვენს პროდუქტის კიდევ უფრო ვიდრე ადრე. მე წასვლა მეტი კონკრეტული მაგალითები, თუ რა შეიძლება რეალურად გავაკეთოთ. როგორც ერთგვარი ბოლო მაგალითი პროდუქტის, მოდით შევხედოთ KAYAK. KAYAK როდესაც იგი გამოვიდა იყო ძალიან, ძალიან პოპულარულია. შეუძლია ვინმეს გამოიცნოს, თუ რატომ? რა სახის რამ გსურთ ამ თუ თქვენ გამოიყენებთ მას ან რა სახის რამ არ მოგწონთ? დიახ. >> [Inaudible სტუდენტი საპასუხოდ] >> Okay. სწორედ ნაწილი გაქირავების მომხმარებლის აქვს შეკითხვის რომ უფრო ძვირი ვიდრე ძალიან შეზღუდულად ერთი მოსწონს, "თქვენ უნდა აირჩიოთ თქვენი დაწყების თარიღი "და თქვენ უნდა აირჩიოთ თქვენი ბოლომდე თარიღი." ფაქტობრივად, ეს საშუალებას გაძლევთ იყოს მოქნილი შესახებ და ეს გაძლევთ ყველა ფრენები რომ დიაპაზონი. არაფერი? [სტუდენტი] მათ შორისაა მოსაკრებლების ფასად. ისინი მოიცავს მოსაკრებლების ფასად. გადასახადებისა და რამ რეალურად წასვლა სწორი შევიდა, რომ ფასების ზედა მარცხენა ამიტომ თქვენ არ tricked შევიდა ფიქრობდა, რომ თქვენ რეალურად გადახდილი $ 240 ფრენის როდესაც ეს მართლაც $ 330. არაფერი? დიახ. [Inaudible სტუდენტი საპასუხოდ] არ ვარ დარწმუნებული, თუ ისინი რეალურად მოგცემთ გაგვაჩნია. მე შეიძლება იყოს არასწორი. ეს შეიძლება საინტერესო რამ, თუ გსურთ უფრო მეტი წონა კონკრეტულ ფილტრები რათა მათ დააყენებს შედეგების დაკავშირებული, რომ ფილტრის დაბრუნება. მაგრამ შეიძლება ვინმეს მითხრათ რა არის სპეციალური ამის შესახებ მარცხენა მხარეს? როგორ ფიქრობთ ტრადიციულად ეძებოთ ფრენის შესახებ ინტერნეტ მომსახურების ადრე? დიახ. >> [Inaudible სტუდენტი საპასუხოდ] >> გვეტყვით, რომ - [სტუდენტი] თითოეული ავიასაწარმო. >> Yeah. თითოეული ავიაკომპანია აქვს საკუთარი ნახვა. ეს კონსოლიდირებულია რამ. და? [სტუდენტი] თქვენ იცით ზუსტად რა დროს თქვენ ტოვებენ. თქვენ იცით ზუსტად რა დროს თქვენ ტოვებს, მაგრამ დაკავშირებული ფილტრები კერძოდ. ნება მომეცით დახევის up KAYAK. Oh ღმერთი, ამომხტარი. ცუდი მომხმარებლის, გამოცდილება. რა ხდება, როდესაც მე გადავიდეს ამ სლაიდერი? [სტუდენტი] ავტომატური განახლება. >> [Ong] ავტომატური განახლება. სწორედ ის, რაც ძალიან მნიშვნელოვანია. მანამდე კი, როდესაც არ სურდა ეძებოთ ფრენის, გქონდათ დააყენოს თქვენს შეყვანის ადგილას, თქვენი გამომავალი საიდან, პრეს ძებნა, ეს იქნებოდა პროცესი, რომელიც და აჩვენებს თქვენი შედეგი. თუ თქვენ სურდა შეცვლის თქვენს შეკითხვაზე, თქვენ უნდა დააჭიროთ უკან ორჯერ, შევა ახალი შეკითხვის ნულიდან, და შემდეგ გავაკეთებთ უსასრულოდ. ლამაზი რამ შესახებ მსგავსი რამ არის იგი იყენებს ძალიან [გაუგებარია] რამ შუა. როდესაც თქვენ რაღაც მოსწონს, ეს shoots off მოთხოვნით და ის დააბრუნებს თქვენ ყველა შედეგი დაუყოვნებლივ. ეს ერთგვარი დაუყოვნებლივ კავშირი არის ის, რასაც გააკეთა KAYAK wildly პოპულარული რადგან ეს მართლაც ადვილია ჩემთვის უბრალოდ შეცვალეთ ჩემი შეკითხვის და გაერკვნენ რამ, რომ დაახლოებით კონკრეტული დიაპაზონი გარეშე უკან და მეოთხე, უკან და მეოთხე, უკან და მეოთხე. ასე რომ ეს არის ყველა სახის რამ გსურთ ვიფიქროთ, როდესაც თქვენ დიზაინის თქვენი ნახვა. როგორ შემიძლია ძალიან ეფექტურია ჩემი მომხმარებლებს გავლა რასაც ისინი მუშაობენ და მიიღოს მათი საბოლოო მიზანი, რაც შეიძლება მალე? [Malan] და რომ იოსების წერტილი ადრე დაახლოებით მომხმარებლებს არ ემთხვეოდეს იცის რა უნდათ, რის საფუძველზე თქვენ ბიჭები ახლა უკვე იცის დაახლოებით HTML და თქვენ გაქვთ checkboxes, რადიო ღილაკები აირჩიეთ მენიუები, შეყვანის სფეროებში და მოსწონს, როგორ განახორციელოს ცნება კრეფა დაწყება დრო ფრენის? რაც იმ სხვადასხვა UI მექანიზმების ისარგებლებთ თუ არა? თუ თქვენ მხოლოდ ვიცი თანხის HTML, რომელიც ასწავლიდა ადრე და თქვენ იცით საშუალებებით არიან რადიო ღილაკები, checkboxes, drop-Downs, და input box, რა თქვენი ბუნებრივი არჩევანი არ ყოფილიყო კრეფა თარიღების? [სტუდენტი] შეყვანის. >> შეყვანის. ან იქნებ კიდევ ჩამოსაშლელი ყველა ვადები, უფლება? ამრიგად, უფრო რთული UI მექანიზმების მოსწონს მარცხენა მხარეს რომ თქვენ შეგიძლიათ განხორციელება, შეგიძლიათ ამ პროცესის ბევრად უფრო ინტუიტიური ერთად სლაიდერი რადგან დრო უწყვეტი, და ხალხს როგორც წესი არა მგონია ეს თვალსაზრისით დისკრეტული მოცულობით. ყველა უფლება. ბოლო რამ. ათი გამოყენებადობა heuristics. ყველა რამ ჩვენ ვისაუბრეთ ალბათ ქვეშ ერთი ამ კატეგორიაში. თუ ამ ბმულზე, რომელიც საიტებზე დაიდება შემოსული, თქვენ რეალურად შეძლებთ, როგორც თქვენ დიზაინზე თქვენს საიტზე, შეინახოს ამ heuristics გათვალისწინებით და ამ წესებს thumb. თქვენი პროექტები, რასაც მე გთავაზობთ გავაკეთოთ, რათა შეიმუშავონ თქვენი app უკეთესი არის გავაკეთოთ ქაღალდის prototyping პირველი. როდესაც თქვენ ფიქრი თქვენი განცხადება, ძალიან სწრაფად ესკიზის რა გნებავთ გამოიყურებოდეს და დარწმუნდით ყველა ყუთები ეწყობა ისე, რომ ძალიან ინტუიციური ამისთვის მომხმარებელს გამოიყენოს და კიდევ ნახოთ ამ ქაღალდის პროტოტიპები თქვენს მეგობრებს და დაიწყება ფოკუს ჯგუფებში. უბრალოდ კიდევ 2 ან 3 ადამიანი ერთად და მათ ვთხოვთ, უბრალოდ დაკრავენ ამ ქაღალდის პროტოტიპების, და ვაჩვენოთ ახალი ეკრანები თუ ისინი რეალურად მესმის რა ხდება. რა გსურთ არის მივცეთ დავალება, მოტივაცია, რომ ამოცანა, და უბრალოდ მივცეთ app და ისინიც გამოიყენოს იგი. არ მისცეს მათ ინსტრუქციას ამის მიღმა. გსურთ რეალურად მისცეს მათ ურთიერთქმედება თქვენი app წელს გზა, რომელიც საშუალებას ხედავთ როგორ ისინი გამოიყენოთ იგი, თუ თქვენ არ იდგა შემდეგი მათთვის. და ეს ძალიან მნიშვნელოვანია. რომ მოგცემთ უამრავ insights როგორც არიან ადამიანები ნავიგაცია კერძოდ რამ ისე, რომ მე არ ვაპირებ მათ? არიან ისინი გამოყენებით კონკრეტული მექანიზმები UI ეკრანზე ისე, რომ არის სახის Hacky? მე არ ვაპირებ მათთვის ამის გაკეთება, რომ გზა. და კიდევ თქვენ გაკეთდეს, რომ, რა გინდათ რომ გააკეთოთ? თქვენი დიზაინი კლდეები, არა? რა გსურთ გააკეთოთ გსურთ განვითარდეს და მერე გავაკეთოთ, რომ პროცესი კვლავ. ასე რომ დავანახოთ მას მეგობრები ერთხელ თქვენ განვითარებული ის, ტესტირებაში, განვითარება, ტესტი, განვითარება, ტესტი, iterate, და და ველით. დიზაინი არის ძალიან iterative პროცესი ამ თვალსაზრისით. თქვენ ნამდვილად უნდა ავაშენოთ რაღაც და მერე მიხვდებიან, რამ შესახებ რომ თქვენ არ აცნობიერებენ ადრე და უკან და გაუმჯობესება საწყისი, რომ. ახლა, რაც შეეხება განვითარებას ნაწილი არის ის, რაც Tommy აპირებს გაჩვენონ შესვენების შემდეგ და როგორ შესაძლოა განახორციელოს რაღაც თვითდასრულება ისე, რომ საკმაოდ მარტივია. [Malan] როგორც Tommy იქმნება აქ, კითხვა შემდეგ. ბევრი ადრეული საიტებზე - და როდესაც ჯოზეფ განაცხადა 1990 სტილი ნახვა, ეს იყო შესრულება, სადაც თუ უნდოდა აირჩიეთ დაწყების დრო და ბოლოს დრო, გულწრფელად ვამბობ, უკან დღეში და კიდევ ზოგიერთ საიტებზე დღეს, ისე გავაკეთოთ ეს თქვენ შეარჩიო საათში ჩამოსაშლელი, თქვენ შეარჩიო წუთის ჩამოსაშლელი, იქნებ აირჩიოთ PM, PM, და მერე შენ რომ კიდევ 3 ჯერ. და ასე 6 დაწკაპუნებით და შესაძლოა გარკვეული სენსორული თქვენი მომხმარებელს შეუძლია რეალურად უზრუნველყოფს გარკვეული სახის თარიღს და / ან დრო სპექტრი ამ თვალსაზრისით. ასე ნამდვილად suboptimal და ჯერჯერობით დღემდე ჩვენ ვნახეთ არ ექსპრესიული შესაძლებლობების ნებისმიერ ენაზე ჩვენ შევხედე რაღაც sexier მსგავსი სლაიდერი დაწყების დრო და ბოლოს დრო. მაგრამ თუ ფიქრობთ თავში კვირაში 0, როდესაც ჩვენ ვისაუბრეთ Scratch, იქაც არ იყო ვიჯეტები რომ გააკეთა გარკვეული რამ. თქვენ ნამდვილად უბრალოდ ჰქონდა ამ საფუძვლები, როგორიცაა მარყუჟების და პირობები და მოსწონს. ამიტომ სახის უბრალოდ ფიქრი ძალიან აბსტრაქტულად არის, დამოუკიდებელი რომლებიც of HTML, რა არის მართლაც მიმდინარეობს ერთად რაღაც მსგავსი დაწყების დრო და ბოლოს დრო სლაიდერი? როდესაც მე გადაადგილება ჩემი მაუსის და მე დააწკაპუნეთ რომ პატარა სტაფილოს სიმბოლო მარცხენა და დაიწყოს გადმოიყვანა, პროგრამულად, რა არის ეს გსურთ შეძლებს განახორციელოს რათა, რომ მოხდეს? რა კითხვები, რა ლოგიკური გამონათქვამები გსურთ შეძლებს ვთხოვო? რა მართლაც მიმდინარეობს? Sammy? [სტუდენტი] სად პოზიცია კურსორი? >> კარგი. სად არის თანამდებობაზე კურსორი? ეს იყო რაღაც გვჭირდებოდა გამოხატოს უკან Scratch, იყო თუ არა დაყრდნობით საიდან ან თუნდაც ფერადი ან მოსწონს. თქვენ შეიძლება გავიხსენოთ ოდესმე ასე მოკლედ, ორშაბათს იყო ყველა ეს რამ მოუწოდა თარიღები სამყაროში Web და ა.შ. არსებობს რამ, როგორიცაა onclick და onkeypress და onkeyup და onmouseover და onmouseout. ასე რომ მიხვდებიან, რომ თუნდაც ეს ყველაფერი ჩვენ აღების თავისთავად ინტერნეტში ერთად საიტებზე როგორიცაა Facebook და Gmail, მაშინაც კი, თუ თქვენ არ ვიცი როგორ თქვენ ამას შესაძლოა განახორციელოს, რომ არაფერი კი მოსწონს ეს ლექცია ან პრობლემა უცნობია 7, გააცნობიეროს, რომ ამ ზუსტად იგივე საფუძვლები, ერთად HTTP და პარამეტრების და მიიღეთ და ჩანაწერი, ძირითადი HTML საშუალებებით, რომ ჩვენ შევხედეთ დღემდე და მომენტში ერთად პროგრამული მექანიზმები, რომ ტომი დაახლოებით დანერგვა შეგიძლიათ დაიწყოთ გამოხატოს თავის ისევე, როგორც ეს გააკეთეთ კვირაში 0 ძალიან ინტუიციურად გადმოიყვანა და ჩაშვების. ამრიგად, რომ განაცხადა, ტომი MacWilliam და რამდენიმე ახალი თავსატეხი ცალი ჩვენთვის ვებ. ყველა უფლება. ჩემი სახელი არის ტომი და მე ვაპირებ ვისაუბრებთ JavaScript. უბრალოდ შენიშვნა: მე ვარ აზრით, JavaScript არის საუკეთესო პროგრამირების ენა მთელს მთელს მსოფლიოში. არსებობს უამრავი ადამიანი, რომლებიც არ ეთანხმებიან, მაგრამ ეს მხოლოდ საოცარი. ერთხელ თქვენ დაბრუნდებით C, თუ დაწერა C მეორე კლასის ან სხვა ენებზე, უბრალოდ ნამდვილად იმედგაცრუებაა ყველა დაბალი დონის დეტალები თქვენ უნდა bogged ქვემოთ სისტემაში ასე რომ, თუ თქვენ ოდესმე გრძნობენ სამწუხარო, თუ როგორ შემაშფოთებელი C არის დაწერა, უბრალოდ დაბრუნდეს, წერენ რამდენიმე JavaScript. ეს Nirvana. თქვენ გრძნობენ ბევრად უკეთესი თქვენი ცუდი დღე. ბევრი Magic of JavaScript მოდის მისი უნარი მანიპულირება რამ , რომლებიც უკვე გვერდზე. როდესაც ჩვენ წერდა ჩვენი PHP სკრიპტები, ისინი შესრულდება სერვერზე, და საბოლოოდ რომ PHP Script ალბათ დაბეჭდავს ზოგიერთი HTML. რომ HTML გაეგზავნა კლიენტს და შემდეგ რომ იყო. თუ PHP სურდა დაამატოთ ღილაკს გვერდზე, მაგალითად, მას არ შეუძლია ნამდვილად გაგვაჩნია. ეს იქნებოდა გაწევა მთელი ახალი HTML ფაილი და გააგზავნეთ რომ ბრაუზერში. სალომე ჩვენ ვიცით, რომ ჩვენ შეგვიძლია განაახლოთ რამ ხოლო ისინი უკვე გვერდზე, და რადგან ამ ჩვენ შეუძლია გაცილებით უფრო მყისიერი კავშირი, რომელიც ნამდვილად გაუმჯობესება მომხმარებლის, გამოცდილება ჩვენს ვებგვერდზე. უბრალოდ სწრაფი recap of JavaScript selectors. ჩვენ ვიცით, რომ როდესაც ჩვენ ჩამოტვირთოთ HTML გვერდი, რომ იქნება წარმოდგენილი DOM. DOM გახსოვდეთ მხოლოდ ამ დიდ ხეს, სადაც ელემენტები დაკავშირებულია ამ დიდი იერარქია. როდესაც ვმუშაობდით მონაცემთა ბაზებთან წელს pset 7, ერთი პირველი რამ გვჭირდებოდა იცოდეს, თუ როგორ იყო შეკითხვის მონაცემთა ბაზაში. ჩვენ გვყავს ამ დიდი მომხმარებლებს მაგიდა, და ზოგჯერ ჩვენ უბრალოდ მინდა ვთქვა, "მე მხოლოდ მინდა ზოგიერთი მომხმარებლებს ემთხვევა ზოგიერთი მდგომარეობა." ანალოგიურად, როდესაც გვაქვს DOM გვჭირდება გზა querying იგი. ჩვენ გვჭირდება გარკვეული გზა სიტყვებით "მე მინდა ყველა ღილები, რომ ასე გამოიყურება "ან ყველა images on გვერდზე." და ამ selectors საშუალებას მოგვცემს გავაკეთოთ, რომ. ასე რომ მხოლოდ სწრაფი recap. ეს პირველი აქ, ამ # წარუდგინოს, რა არის ის, რომ აპირებს შეარჩიეთ? ვინმეს გახსოვთ? [Inaudible სტუდენტი საპასუხოდ] >> ჰო, ზუსტად. ეს აპირებს აირჩიეთ ელემენტს გვერდზე რომ აქვს პირადობის წარუდგინოს. და ისე, რომ hash tag ამბობს ამ selector აპირებს იმუშაოს პირადობის მოწმობები. როგორ შესახებ მეორე, ამ. ორიენტირებული, რა იქნება, რომ შეარჩიოთ? Yeah. >> [სტუდენტი] კლასი. >> ზუსტად. ეს არის აპირებს Select by კლასი. განსხვავება ID და კლასი აქ არის ზოგადად ID უნდა იყოს უნიკალური ფარგლებში რასაც სივრცეში თქვენ ძებნას დასრულდა. ასე რომ, თუ თქვენ ძებნას მეტი მთელი ვებ გვერდზე, ნამდვილად უნდა მხოლოდ 1 ელემენტს ერთად, რომ გარკვეული ID, ამიტომ ამ შემთხვევაში წარმოადგინოს. With კლასების, მეორეს მხრივ, რომ შეგვიძლია ზე მეტი 1 ელემენტს იმავე გვერდზე იმავე კლასში. ეს შეიძლება იყოს სასარგებლო ამბობდა მინდა შეარჩიეთ ყველაფერი რომ იმსჯელეს გვერდზე ვიდრე მხოლოდ 1 რამ. და ბოლოს, ამ ბოლო ერთი აქ არის ცოტა უფრო რთული, მაგრამ რა არის ეს აპირებს აირჩიოთ DOM? [Inaudible სტუდენტი საპასუხოდ] >> რა არის რომ? [სტუდენტი] ყველაფერი, რაც არის ტეგით. >> ჩვენ გვყავს 2 ნაწილად აქ. მეორე ნაწილი თქმას მინდა შეარჩიეთ ამ tags ერთად tag შემავალი, ამიტომ ნებისმიერი ელემენტი, რომელიც არის შეყვანის ტეგით. მაგრამ მე არ მინდა უბრალოდ აირჩიეთ ყველა საშუალებებით რადგან რაღაც submit ღილაკზე შეიძლება შეყვანის და რაღაც მსგავსი ტექსტი ყუთი შეიძლება შეყვანის. ასე რომ ამ კვადრატულ ფრჩხილებში მე ვამბობ, მე მხოლოდ უნდა აირჩიოთ ის ელემენტები , რომლებიც ტიპის ტექსტი. სადღაც ჩემი HTML tag მაქვს ატრიბუტი მოუწოდა ტიპის, და ღირებულება, რომ ატრიბუტი უნდა იყოს ტექსტი. მაშ როგორ შესახებ პირველი ნაწილი აქ? პირველი სიტყვა ამ selector ფორმაა მაშინ მაქვს სივრცე და შემდეგ ამ შეყვანის ნაწილი. რას გააკეთებს, აყენებს ფორმა თვალწინ იგი? ეს აპირებს ძირითადად ზღუდავს ჩვენს შეკითხვა. ეს შეიძლება იყოს საქმე, რომ ჩვენ გვაქვს გარკვეული საშუალებებით გვერდზე , რომლებიც არ არიან შთამომავლები ფორმით. რა ამ ყველაფერს გააკეთებს ეს იტყვის მე მხოლოდ მინდა შეყვანის Tags რომ აქვს სადღაც მათ ზემოთ ზოგიერთი მშობელი ელემენტის სახით. და ა.შ. ამ გზით ჩვენ შეგვიძლია ამ მეტი იერარქიული queries ასე რომ, ჩვენ არ უბრალოდ უნდა აირჩიოთ ყველაფერი შესატყვისი მოცემულ selector. ჩვენ შეგვიძლია სახის ლიმიტის ფარგლებში, რომ ხერხისთვის რომ რაღაც. ახლა რომ ჩვენ ვიცით, როგორ შეარჩიეთ ელემენტების გვერდზე, ვისაუბროთ bit შესახებ AJAX. AJAX არის ჯერ კიდევ ძალიან trendy აბრევიატურა რომ დგას ასინქრონული JavaScript და XML. ეს უბრალოდ ისე ხდება, რომ XML არის რამოდენიმე გზა წარმოადგენს მონაცემებს. ამ ტიპის დაკარგა პოპულარობა ახლახანს, ასე რომ X in AJAX არ გამოიყენება ყველა დროის. ძირითადად, რა AJAX საშუალებას გვაძლევს გავაკეთოთ არის მიიღოს HTTP მოითხოვს საწყისი კონტექსტში JavaScript. როდესაც ჩვენ ჩვენს ბრაუზერში და ჩვენ ნავიგაცია გარშემო გვერდებზე და ჩვენ დააჭერთ ბმულს, რა არის ჩვენი ბრაუზერის გაკეთებას აპირებს არის მიიღოს HTTP თხოვნით რასაც ლინკები ჩვენ მიჰყვეთ. მაგრამ ეს არ არის ყოველთვის იდეალური, რადგან თუ ეს საქმე, მაშინ როგორც დავით ამბობდა, ჩვენ ყოველთვის უნდა გააკეთოთ მომხმარებლებს დააჭირეთ წარმოადგინოს ღილაკს ან დაწკაპეთ ლინკები რათა არაფერი ხდება, რომ აპირებს ჩართვას HTTP მოთხოვნის. ამრიგად, AJAX შეიძლება გავაკეთოთ ეს წინადადებები სახელით JavaScript. ეს იმას ნიშნავს, როდესაც მომხმარებლის ურთიერთქმედებს ან არაფერი ხდება, ჩვენ შეგვიძლია რეალურად მიიღოს პროგრამული თხოვნით ზოგიერთი სხვა PHP ფაილი ჩვენს საიტზე ან სხვა რამეზე და მივიღოთ მონაცემები, რომ ფაილი SpitS გარეთ. მოდით შევხედოთ მაგალითს AJAX. ეს არის ჩვენი CS50 ფინანსთა გვერდი რომელთანაც იმედია რომელიმე ჩვენგანს იცნობს. თუ დავაკვირდებით HTML ამ გვერდზე, ჩვენ ვხედავთ, რომ მე დასძინა ცოტა რამ, რომელთაგან ერთი მე, ამ ფორმით ID. მე განაცხადა id = "ფორმულარის-ციტირებით". მე ვაკეთებ ამ მხოლოდ იმიტომ, რომ ის აპირებს ამ ცოტა ადვილია აირჩიოთ DOM მას შემდეგ, რაც მე შემიძლია მხოლოდ იმის ძალიან მარტივი შეკითხვა. რა მინდა აქ არის მინდა დაფიქსირება ზოგიერთი პრობლემა CS50 ფინანსთა. ასე რომ, თუ ჩვენ წასვლა finance.cs50.net, ყოველ ჯერზე მინდა კიდევ ციტირებით, უნდა დააჭიროთ ამ Get Quote ღილაკს, და რომ მიიღეთ Quote ღილაკს მაშინ იღებს ჩემთვის სხვა მთელ გვერდზე. და თუ მინდა კიდევ ციტირებით მე უნდა დაარტყა თავში ღილაკს და მერე აკრიფოთ ის, მივიღებ ციტირებით და მე მოხვდა თავში ღილაკს. ეს ნამდვილად არ არის საუკეთესო მომხმარებლის, გამოცდილება. ვის ნამდვილად გამოიყენოთ საიტი თუ ის, რომ ნელი მისაღებად საფონდო ფასები? მერე რა გვინდა საერთო AJAX არის ამოიღონ რომ ნაბიჯი აპირებს ცალკე გვერდზე რათა ნახოთ შედეგი. რა ჩვენ ნამდვილად მხოლოდ ითხოვს ის არის, რომ რეალურად მცირე ფასი, და ეს მხოლოდ მართლაც მცირე რაოდენობის მონაცემები. ასე რომ იქ არ არის საჭიროება ჩემთვის წასვლა კიდევ მთელი HTML გვერდი, download მთელი ახალი პარტია HTML, იქნებ ჩამოტვირთოთ კიდევ რამდენიმე სურათებით, ზოგიერთი სხვა CSS ფაილებს მხოლოდ ჩემთვის პასუხის გაცემა, რომ ძალიან მარტივი კითხვა თუ როგორ ღირს ამ საფონდო ღირებულება. Ajax-შეგვიძლია ეს ბევრი ადვილია. ჩვენ ვხედავთ ქვემოთ აქ რომ მე აკავშირებს in JavaScript ფაილი სახელად quote.js. მოდით რეალურად ქმნის, რომ ფაილი. არ არსებობს. ყველა ჩემი JavaScript ფაილები ვაპირებთ განთავსდება HTML ასე რომ ბრაუზერში შეიძლება ვებგვერდზე. მაშინ ჩვენ ცალკე დირექტორია აქ JavaScript, და ახლა აქ არის quote.js. ზედა ამ ფაილის ამ ამბობს აქ რომ მინდა დაველოდოთ მთელი გვერდი უნდა დატვირთული სანამ ვცდილობ არაფერი. რატომ არის, რომ აუცილებელია? თურმე შემდეგი რამ მე ვაპირებ აქ არის დაწყება ეძებს ელემენტს რომ სიას რამდენიმე მეთოდი. თუ ამ JavaScript ოდესმე შესრულებული წინაშე ამ ელემენტს დატვირთულია გვერდზე, მაშინ ყველაფერი ვცდილობ ამის გაკეთებას არ აპირებს იმუშაოს რადგან მე ვაპირებ ცდილობენ აირჩიეთ, რომ რაღაც არ არის იქ ჯერ არ მისულან. ასე რომ, ეს გამოდიან დაბრუნება ამბობს მინდა დაველოდოთ ყველაფერი დატვირთული ამიტომ ჩვენ გარანტირებულია, რომ ნებისმიერი ელემენტების ვეძებ რეალურად გვერდზე. ეს დოლარის ნიშანი აქ ნიშნავს მე გამოყენებით ბიბლიოთეკა მოუწოდა jQuery. ეს jQuery ბიბლიოთეკა საშუალებას გვაძლევს გამოვიყენოთ ეს selectors, რომ ჩვენ უბრალოდ შევხედე. იმით $ მაშინ გადადის, როგორც არგუმენტი ამ # ფორმის-ციტირებით, მე ახლა შერჩევისას, რომ ფორმა, რომ ჩვენ უბრალოდ აიღო შევხედოთ. ახლა წარმომადგენლობა რომ ფორმა მეხსიერების როგორღაც. ამ ობიექტის ახლა, ამ წარმომადგენლობის ფორმა, მე ახლა გამოყენებით ფუნქციის მოუწოდა. რა ამ ფუნქციის არ არის ის აპირებს ვანიჭებთ ღონისძიება დამმუშავებლის. ღონისძიება, რომ ჩვენ ვაპირებთ მოვუსმინოთ ამისთვის არის submit ღონისძიება. ასე რომ, როდესაც მომხმარებელი დააჭერს რომ Submit ღილაკს ან presses შეიყვანეთ, ეს ღონისძიება აპირებს ცეცხლი. By გადაუგდო ამ, არ შემიძლია ახლა override ნაგულისხმევი ქცევის ფორმა. ამის გარეშე JavaScript, ფორმა იქნებოდა წარუდგინოს რასაც PHP ფაილი ჩვენ გამოიყენება, რომ სამოქმედო ატრიბუტი. მაგრამ ამის ნაცვლად, მე ახლა ამბობს, დაველოდოთ, დაველოდოთ, დაველოდოთ, მე არ მინდა, მართლაც რომ. მინდა ამ მოხდეს სანამ წავიდეთ და ცდილობენ წარუდგინოს ზოგიერთი PHP ფაილი. ახლა რა გსურთ? ამ ეტაპზე მინდა AJAX როგორღაც ჩატვირთვა რა ფასი საფონდო არის. პირველი, რაც უნდა იცოდეს, თუ რა არის საფონდო მომხმარებლის ეძებს up. გავაკეთოთ, რომ მე ვაპირებ შეცვალოთ selector. ეს არის მესამე არჩევის ჩვენ შევხედე ადრე. ეს ამბობს, რომ მინდა დაიწყება off ეს ფორმა ელემენტს ერთად ID ფორმის-ციტირებით. მაშინ სადღაც შიგნით, რომ ფორმით არც შეყვანის ელემენტს რომ აქვს სახელწოდება სიმბოლო. თუ ჩვენ ვიხსენებთ ჩვენი HTML, დავინახეთ, რომ ჩვენ გვქონდა input [name = სიმბოლო]. ეს იმას ნიშნავს, რომ ეს ხდება ასარჩევად რომ ტექსტი ყუთი რომელშიც მომხმარებელია აკრეფით შევიდა. სწორედ ლამაზი. ჩვენ გვყავს ტექსტი ყუთში. ახლა ჩვენ უბრალოდ უნდა იცოდეს, რა არის შიგნით მას. გავაკეთოთ, რომ ჩვენ შეგვიძლია მოვუწოდებთ ეს მეთოდი აქ, ამ. Val, და ეს ამბობს მე ვიცი რა ტექსტი ყუთი გაქვთ. მინდა მითხრათ რა არის მომხმარებლის აკრეფილი შევიდა, რომ ტექსტი ყუთში. ახლა ჩვენ გვაქვს სიმებიანი მოუწოდა სიმბოლო იმისა, რომ უდრის რასაც მომხმარებლის აკრეფილი შემოსული სწორედ ლამაზი. ჩვენ შეგვიძლია გამოვიყენოთ, რომ string არის, რომ ჩვენი თხოვნით. ეს არის ახალი ფუნქცია აქ, ამ $, გარდა ჩვენ აღარ იქნება შერჩევის ელემენტები, ჩვენ ვაპირებთ იყოს მოუწოდებდა სხვადასხვა ფუნქცია, რომელიც უზრუნველყოფილია ჩვენთვის მიერ jQuery. ეს AJAX ფუნქცია არის ის, რაც სინამდვილეში ვაპირებთ ამ HTTP მოთხოვნის. ამიტომ, ჩვენ უნდა ვუთხრათ მას რამდენიმე რამ. პირველი, რაც უნდა ვუთხრათ ამ ფუნქციის სადაც მინდა თხოვნით წასვლა. სადღაც ჩემი პროექტი მაქვს ამ ფაილის შიგნით HTML დირექტორია მოუწოდა quote.php. მე შეგიძლიათ თქვათ ამ ფაილის, დავინახეთ, ისევე, როგორც ამ, თუ მივდივარ localhost / quote.php. მინდა ჩემი JavaScript რათა თხოვნით, რომ გვერდზე. რა ტიპის მოთხოვნით არის? ჩვენ ვნახეთ მანამდე ფორმა აქვს, რომ მეთოდი = "გამოხმაურება" ატრიბუტი, და ეს ნიშნავს, რომ ის აპირებს POST მოთხოვნით, ამიტომ არ აპირებს დააყენოს არაფერი URL, ვიდრე მიღება მოთხოვნით, რომელიც დიდი სიამოვნებით იყოს ნასროლი, თუ ჩვენ მხოლოდ შემოწმდა გვერდი ბრაუზერში, მაგალითად. ახლა ჩვენ განაცხადა მინდა HTTP POST მოთხოვნით დან გვერდზე მდებარე quote.php. როდესაც ჩვენ წარმოადგინოს ფორმა, გვახსოვს ჩვენ შეგვიძლია შედიხართ შეყვანის ელემენტების შიგნით რომ ფორმა რომ $ _POST ცვლადი. ამ დრომდე ამბავი ჩვენ რეალურად არ გააგზავნა გასწვრივ ნებისმიერი მონაცემების ამჟამად. ჩვენ უბრალოდ განაცხადა ჩვენ მიღების AJAX მოთხოვნით და აქ გაცნობის თხოვნით ჩვენ მიღების. ახლა ჩვენ გვჭირდება რეალურად გაგზავნას ზოგიერთი მონაცემების გვერდზე. გავაკეთოთ, რომ ჩვენ შეგვიძლია გამოვიყენოთ ეს უძრავი მოუწოდა მონაცემები. ღირებულება ეს უძრავი ქონება ფაქტობრივად ასოციაციურ მასივში. მიზეზი არის ის საშუალებას გვაძლევს გაგზავნას მხოლოდ 1 ცალი მონაცემები. ამიტომ ჩვენ გვაქვს ამ Curly braces აქ წყობილი შიგნით ამ სხვა Curly braces. გასაღებები ამ ასოციაციურ კოლექტორები ვაპირებთ იყოს იგივე როგორც იმ სახელი ანიჭებს ჩვენს ფორმით ელემენტებს. ეს იმას ნიშნავს, რომ თუ მე ვგზავნი გასწვრივ გასაღები სიმბოლო, ეს ნიშნავს, რომ ჩემი PHP გვერდზე შეუძლიათ ამ მონაცემების $ _POST [სიმბოლო] უბრალოდ ისე, როგორც ადრე, როცა ჩვენ წარდგენის ფორმით. და ახლა ფაქტობრივი მონაცემები გვინდა გაგზავნას იქნება ღირებულება შიგნით ამ ასოციაციურ მასივში. ჩვენ ინახება ამ ტექსტის ცვლადში სიმბოლო, და ა.შ. ჩვენ გაგზავნის გასწვრივ არის გასაღები სიმბოლოს და ღირებულება რასაც მომხმარებლის აკრეფილი შემოსული ახლა ჩვენ ეს HTTP მოთხოვნის, ჩვენი PHP ფაილის გაშვებისას, და ის აპირებს გაგზავნას ზოგიერთი მონაცემები ახლა კლიენტს რომ ეს მოთხოვნა. ახლა ჩვენ უნდა ვუპასუხოთ რასაც სერვერზე განაცხადა ჩვენთან. გავაკეთოთ, რომ ჩვენ გვაქვს ამ ბოლო ქონება აქ მოუწოდა წარმატება. ღირებულება ამ წარმატების გასაღები ფაქტობრივად იქნება ფუნქცია, და ეს არის ერთ ერთი მართლა მაგარი რამ რომ თქვენ JavaScript. არა მარტო შეგიძლიათ აქვს ints ან მასივები, როგორც ღირებულების შიგნით ასოციაციურ მასივში, ჩვენ შეგვიძლია ასევე აქვს ფუნქცია. ასე განაცხადა წარმატება, ეს არის ჩემი გასაღები. მსხვილი ნაწლავის ამბობს აქ მოდის ღირებულება, და ახლა ღირებულება ეს არის რეალურად ფუნქცია. ამიტომ ჩვენ არ უნდა მივცეთ ამ ფუნქციის სახელი თავისთავად. ჩვენ შეგვიძლია მხოლოდ ამბობენ, რომ ეს იქნება გარკვეული ფუნქცია. ის აპირებს 1 არგუმენტი. არგუმენტი ამ ფუნქციის იქნება რასაც სერვერზე გამოგვიგზავნეს უკან თხოვნით. ისევე, როდესაც ჩვენი ბრაუზერის ხდის მოთხოვნით, სერვერზე აგზავნის რაღაც უკან და ბრაუზერი აჩვენებს მას, კონტექსტში AJAX ჩვენ უბრალოდ გააკეთა თხოვნით, სერვერზე იგზავნება რაღაც თავში, და ახლა ჩვენ რომ წარმოდგენილია როგორც სიმებიანი. ერთად რომ სიმებიანი მინდა ისევე არიან, რომ გვერდზე. გავაკეთოთ, რომ მე ვაპირებ აქვს ერთი ბოლო selector. მინდა აირჩიეთ ელემენტს ერთად ID ფასი. ეს არის მხოლოდ ცარიელი div რომ მე შექმნილ გვერდზე, და მინდა მითითებული შინაარსი რომ div იყოს რასაც სერვერზე გამოგვიგზავნეს უკან. მე რეალურად შეცვლილია quote.php bit. იმის ნაცვლად, რომ მოუწოდებდა Render და გაწევის გარკვეული გვერდზე, quote.php ახლა უბრალოდ აპირებს ამობეჭდოთ ღირებულების საფონდო როგორც სიმებიანი. ასე რომ, თუ თქვენ რეალურად ეწვევა გვერდზე, თქვენ უბრალოდ ვხედავ, რომ პატარა სიმებიანი ნებისმიერი საფონდო ფასი არის. ერთი ბოლო რამ უნდა გავაკეთოთ აქ არის უბრალოდ დარწმუნდით ამ ფუნქცია დააბრუნებს false. რა ამ ამბობს, რომ თუ მე შიგნით ღონისძიება დამმუშავებლის და რომ ღონისძიება დამმუშავებლის დააბრუნებს false დაბრუნების ნაცვლად ჭეშმარიტი, ეს იმას ნიშნავს რომ არ მინდა ორიგინალური ღონისძიება ცეცხლი. ამ შემთხვევაში, თუ ჩვენ არ JavaScript და ჩვენ წარმოდგენილი ფორმით, ჩვენი ბრაუზერში აპირებს ამბობენ, "მე ვაპირებ გაგზავნას, რომ მონაცემები გასწვრივ," და ისინი აპირებენ გამოგიგზავნით სხვა გვერდზე. იმიტომ, რომ ჩვენ იყენებთ AJAX არის, იქ არ არის საჭიროება იმისა, რომ გაგზავნოს მომხმარებელს სხვა გვერდი. ჩვენ უბრალოდ აპირებს ცარიელია შედეგი დინამიურად ამ იმავე გვერდზე. ჩვენ ნამდვილად არ მინდა მათ წასვლა არსად და მინდა დარჩენა იმავე გვერდზე. ამიტომ მიერ დაბრუნების ცრუ, ჩვენ უზრუნველყოს, რომ ფორმა არ აკეთებს, რომ ჩვენთვის. მოდით შევხედოთ რა ამ რეალურად გამოიყურება. ჩვენი ციტირებით გვერდზე გამოიყურება იგივე. ნება მომეცით დახევის up ინსპექტორი ქვემოთ აქ ასე ვხედავთ რა ხდება. ჩადება ეს პატარა ნაკლები უზარმაზარი. დამახსოვრება, თუ ჩვენ გახსენით ქსელი tab, ეს არის სადაც ჩვენ ვხედავთ ყველა HTTP მოითხოვს რომ ხდება გვერდზე. იყიდება სიმბოლო ნება მომეცით აკრიფოთ aapl და დააჭირეთ Get Quote. ახლა ჩვენ ვნახეთ, რომ წილი Apple ღირს გარკვეული რაოდენობის დოლარი უბრალოდ გამოჩნდა გვერდზე, მაგრამ URL არ შეცვლილა საერთოდ. ფაქტობრივად, აქ არის HTTP მოთხოვნის, რომ ჩვენ უბრალოდ გააკეთა. ჩვენ მივიღეთ POST თხოვნით quote.php. რომ აზრი. ეს არის ის რასაც სერვერზე გამოგვიგზავნეს უკან. ეს აღარ ამ გიგანტური HTML დოკუმენტი სურათები და რამ, როგორიცაა, რომ უბრალოდ ტექსტი, და შემდეგ ჩვენ უბრალოდ ნაჩვენები ტექსტი. თუ ჩვენ დავუბრუნდებით ზედა და ვხედავ, რაც ჩვენ რეალურად გაგზავნილი შიგნით ამ HTTP მოთხოვნის, ვხედავთ ქვემოთ აქ რომ ჩვენ გაგზავნილი გასწვრივ გასაღები სიმბოლო და ღირებულება aapl, რაც მომხმარებლის აკრეფილი შემოსული ეს არის ლამაზი, მაგრამ მაინც პატარა უსიამოვნოს. კიდევ მაქვს დააჭირეთ ღილაკს რომ მიიღოთ საფონდო ციტირებით. ჩვენ დაკავებული ხალხი და ჩვენ არ გვაქვს დრო, რათა დააჭირეთ ღილაკებს. Google მიხვდა ამ ცოტა ხნის წინ, როდესაც ისინი განხორციელებული Google მომენტალური. რა Google მომენტალური არ არის, როგორც თქვენ აკრეფით უბრალოდ იწყება შედეგები თქვენთვის ასე რომ თქვენ არ უნდა ფიქრი კი დაწკაპვით ძებნა. სინამდვილეში, გართობა ამბავი დაკავშირებული, რომ. ერთხელ Google მომენტალური გამოვიდა, ხალხი მოსწონს, "Whoa, ეს არის სუპერ საოცარი". "ეს იმდენად cool." და სტუდენტი ქვემოთ სტენფორდის რომელიც 19 დროს ეს საიტი მოუწოდა YouTube მომენტალური. ყველა YouTube მომენტალური ამჯამად ეფექტურად ძებნა Youtube მყისიერად. ასე რომ, ვიდრე მქონე წასვლა YouTube.com და მოხვდა ძებნა, როცა დაიწყება აკრეფით შევიდა YouTube მომენტალური რაღაც CS50, ჩვენ ვხედავდით, რომ ის ცდილობს on ნელი ინტერნეტი populate ამ შედეგების ცხოვრობენ. გავაკეთოთ, რომ ჩვენ შეგვიძლია რეალურად გააკეთებს ძალიან მარტივი მოდიფიკაცია ჩვენი quote.js ფაილი. ამ დროისათვის ჩვენ ვერ ვამაგრებ ამ მოვლენას, როდესაც ფორმით წარედგინება. ჩვენ ნამდვილად არ გვსურს მომხმარებლის წარმოადგინოს, რომ ფორმა აღარ, მოდით ნაცვლად ცეცხლი ეს ღონისძიება ყოველ ჯერზე მომხმარებლის presses გასაღები. გავაკეთოთ, რომ მოდით პირველი ცვლილება მოვლენა წარუდგინოს keyup. ეს იმას ნიშნავს, რომ ვიდრე ელოდება ფორმით წარუდგინოს, ყოველ ჯერზე გასაღები არის დაპრესილი, რაღაც მოხდება. ეს აღარ აზრი დაურთოს ამ keyup ღონისძიება მთელი ფორმით. ჩვენ ნამდვილად მხოლოდ აინტერესებს, რომ საძიებო ველში. ასარჩევად, რომ ახლა, ჩვენ შეგვიძლია შევცვალოთ ეს უნდა იყოს, ვიდრე ფორმა-ციტირებით, ფორმა-ციტირებით და გვექნება შეყვანის (აკრიფოთ = ტექსტი) ან შეიძლება ითქვას (name = სიმბოლო) - რასაც გვინდა. ახლა ერთი რამ ბოლო ჩვენ უნდა გავაკეთოთ. დამახსოვრება ქვემოთ აქ როდესაც ჩვენ განაცხადა დაბრუნების ცრუ განვაცხადეთ, არ მინდა, რომ რა ღონისძიება ცეცხლი. მაგრამ ეს ასე ხდება, რომ თუ ჩვენ გამორთოთ, რომ ახლა, რაც ჩვენ აკრიფოთ არ აპირებს გამოჩნდება ბრაუზერის უქმნით რადგან ეს იქნება ნაგულისხმევი ქცევის აკრეფით შევიდა ტექსტი ყუთში. ჩვენ აღარ გვინდა override რომ, მოდით განადგურება ამ დაბრუნების ცრუ. თუ ჩვენ გადარჩენა რომ და განაახლეთ გვერდი, ახლა, როცა დავიწყო აკრეფით aapl თქვენ ნახავთ, რომ საფონდო ფასი ბოლოში აქ დასრულების ავტომატურად. ასე რომ აქ არის CS50 ფინანსთა მომენტალური. სინამდვილეში გართობა ამბავი YouTube მომენტალური არის ის, რომ სტუდენტი მხოლოდ სახის წერდა, როგორც 1-ღამის პროექტი, და მეორე დღეს მას შესთავაზა სამუშაო მიერ YouTube აღმასრულებელი დირექტორი. ასე რომ, როგორც მარტივი, როგორც რომ, თქვენ CS50 სტუდენტები, თქვენი საბოლოო პროექტების შეუძლიათ მიიღონ თქვენ სამსახურიდან, YouTube. რაღაც რომ არის მართლაც მაგარი იდეა საბოლოო პროექტი, არა? ჩვენ გვქონდა არსებული ფუნქციონალური, რომ გვინდოდა ინტეგრაციისაკენ. ჩვენ გააუმჯობესოს მომხმარებლის, გამოცდილება ცოტა, და მოულოდნელად ძებნას რაღაც YouTube მომენტალური შეიძლება იყოს ბევრი ადვილია ვიდრე ეძებს ის რეგულარულად YouTube. ასე რომ AJAX in მოკლედ. In მაგალითები, რომ ჯოზეფ ჰქონდა გვიჩვენებს, დავინახეთ ბევრი autocompletes, და იმ autocompletes მართლაც, მართლაც მოსახერხებელი რადგან ჩვენ არ უნდა გვახსოვდეს - მაგალითად, თუ თქვენ არ მახსოვს საფონდო ფასი Apple და ჩვენ უბრალოდ ვიცით, რომ ეს AA რაღაც, ვიდრე უბრალოდ ვამბობ, რომ ჩემთვის, "წილი ამ რამ ღირს ამ დიდი ფული," მინდა სახის აინტერესებს, როგორი აქციების იწყება AA. ჩვენ შეგვიძლია გავაკეთოთ, რომ მართლაც ლამაზად ერთად ჩატვირთვის ბიბლიოთეკა, რომელიც უკვე შედის შიგნით CS50 ფინანსთა. თუ თქვენ ამუშავება აქ JavaScript tag და გადახვევა ქვემოთ Typeahead, ეს მხოლოდ ლამაზი მოდული რომელიც ვინმეს უკვე წერდა ჩვენთვის, და ჩვენ შეგვიძლია მარტივად გამოიყენოთ მისი ფუნქციონალურობა მოსწონს ეს. მე აკრეფილი და აქ არის სია ზოგიერთი აცხადებს, რომ იწყება ა ვთქვათ, რომ ვფიქრობ, ეს არის ნამდვილად მაგარი და დროა ჩემთვის მოიცავს ამ ჩემს გვერდზე. თურმე ეს ნამდვილად, ნამდვილად მარტივი. მოდით ნახტომი მეტი აქ quote3.js. ჩემი ფაილი გამოიყურება ცოტა განსხვავებული. Down აქ ყველა ჩემი AJAX პერსონალის იგივეა. მინდა ჩატვირთვა საფონდო მონაცემები გარეშე წასვლა სხვა გვერდი. მაგრამ ახლა მინდა ამ მოდულის. ჩატვირთვის დოკუმენტაცია დიდი მაგალითები, თუ როგორ ზუსტად შემიძლია, რომ. მინდა ვთქვა, "აი შეყვანის რომ მინდა თვითდასრულება შესახებ," და მე ვაპირებ მოვუწოდო ამ ფუნქციის მოუწოდა typeahead, და რომ აპირებს გაუმკლავდეს ყველა Typeahead პერსონალის ჩვენთვის. ეს იქნება ინიციალიზაცია სიაში, ის ყველაფერს გააკეთებს, ყველა ჩვენი ფილტრაცია. ერთადერთი, რაც მას აინტერესებს არის თუ რა მონაცემები ჩვენ autocompleting შესახებ. ასე რომ გავარკვიე ამ გასაღები მხოლოდ დოკუმენტაციის კითხვის და ეძებს მაგალითები. თუ მე ეს გასაღები წყაროს, ღირებულების ამ გასაღები არის რამოდენიმე მასივი რამ მინდა თვითდასრულება შესახებ. ეს ცვლადი მოვიდა ამ სხვა ფაილი. მე გახსენით symbols.js. ეს symbols.js მხოლოდ ამ მართლაც, მართლაც დიდი მასივი შეიცავს სტრიქონები ყველა ამ საფონდო სიმბოლიკა საწყისი NASDAQ. თუკი მინდა ხტომა თავში HTML, ასე jharvard, vhosts, globalhost, HTML, თარგები, quote_form. მას შემდეგ ახლა მოუწოდა quote3.js, ნება მომეცით შეცვლის JavaScript ფაილის მე მათ შორის აქ. ახლა quote3.js, ამიტომ მე ვაპირებ ჩატვირთვა რომ ცალკე JavaScript ფაილი, ერთი რომ აქვს, რომ ჩატვირთვის თვითდასრულება. ახლა, როდესაც მე ხტომა უკან ბრაუზერში, განაახლეთ გვერდი და დავიწყო აკრეფით AA, იქ ჩემი თვითდასრულება. და ეს იყო მართლაც იმდენად მარტივია, რომ. მე მქონდა 1 ხაზი კოდი, რომ უბრალოდ თქვა: "აი, რამ მინდა თვითდასრულება შესახებ," და მოულოდნელად მაქვს ამ მართლაც, მართლაც ლამაზი ფუნქციონალური არა მთელი ბევრი ძალისხმევას საერთოდ. როგორც თქვენ განვითარებადი საიტებზე და განსაკუთრებით წინა მხარე ბოლომდე რამ, თქვენ აპირებს იპოვოს ეს საქმე უამრავი. ბევრია, ბევრი, ბევრი ნამდვილად ზემოთ უფასო ბიბლიოთეკების არსებობს რომ იგი სუპერ ადვილია რამ მოსწონს ეს. ვინმეს ჰგონია, ნებისმიერი ნაკლი უბრალოდ autocompleting ამ დიდი სიმბოლოების სია? რა შეიძლება იყოს ის, რაც არ საუკეთესო ამ მიდგომას? Yeah. >> [სტუდენტი] დრო, თუ თქვენ გაქვთ ბევრი [inaudible] Yeah. ახლავე ჩვენ ჩამოტვირთვის ამ უზარმაზარ JavaScript ფაილის და იქ უამრავი სიმბოლოს. და თუ ჩვენ გვაქვს ტონა პერსონალი, ეს შეიძლება სახის გაზრდის შეყოვნება არა მხოლოდ ძებნას არამედ ჩამოტვირთვის ფაქტობრივი ფაილი. დიდი. არაფერი? ახლავე არ რეალური გრძნობა შესაბამისობა. თუ მე აკრიფოთ, კომპანიები რომ ნახოთ აქ შეიძლება არ იყოს ყველაზე პოპულარული კომპანიების იწყება ა აზრი მისაღებად Apple, იგი შესაძლოა კიდევ რამდენიმე პერსონაჟს იპოვნეთ რასაც ვეძებ. ეს თვითდასრულება ამჯამად არ აქვს ამ გრძნობის მნიშვნელობას. უბრალოდ აპირებს ამბობენ, "ყველაფერი, რაც სიას მე ვაპირებ არიან." იმის ნაცვლად, რომ, მინდა როგორმე ინტეგრირება ზოგიერთ შესაბამისობა ჩემს ეძებს. თუ მე მეტი აქ Yahoo! Finance, finance.yahoo.com, თუ ვცდილობ სიმბოლოების შესახებ Yahoo! ფინანსთა გვერდი და დავიწყო აკრეფით goog, მაქვს ამ ლამაზი ლენტა რამ. ცხადია, როგორც ჩანს Yahoo! ფინანსთა აკეთებს რაღაც უფრო ჭკვიანი აქ. მათ აქვთ გარკვეული შესაბამისობა და აქვთ დამატებითი ინფორმაცია მოსწონს სახელით საფონდო. სწორედ ის, რაც მე ნამდვილად ვერ მივიღებთ მხოლოდ ჩემი საფონდო სიმბოლოების სია. მინდა ამ და ა.შ. მე ვაპირებ მას. გავაკეთოთ, რომ მოდით ცოტა რამ. მოდით პირველი გახსენით ინსპექტორი ამ გვერდზე რადგან დავინახეთ, რომ ამ გვერდზე არ არის გადატვირთვა ყველა, ამიტომ ალბათ გამოყენებით AJAX როგორღაც უნდა დატვირთვისა მისი მონაცემები. ჩვენ შეგვიძლია გავარკვიოთ, რა მონაცემები ის ჩატვირთვისას. თუ მე დააჭირეთ ამ ქსელის tab, ეს იქნება ყველა მოითხოვს, რომ დაიწყოს უნდა სამსახურიდან გაათავისუფლეს. არის თუ აკრიფოთ Goo, ვხედავთ, რომ მე უბრალოდ მიიღო ახალი HTTP მოთხოვნის. ეს არის ალბათ აქ რომ მონაცემები მოდის. დარწმუნებული საკმარისი, თუ გავითვალისწინებთ ამ URL, რომელიც ცოტა უცნაურად დაასახელა, ვხედავთ, რომ ეს არის სწორედ აქ Yahoo აგზავნის off მისი მონაცემები. მე შექმნილი ცალკე ფაილი სახელად suggest.php რომ ძალიან მსგავსი სულისკვეთებით, რათა lookup ფუნქცია. ეს ძირითადად აპირებს ხერხისთვის რომ Yahoo-ს URL, დავუბრუნდეთ გარკვეული მონაცემები, და გააგზავნეთ უკან ჩემთვის. ახლა, ვიდრე გამოყენებით ამ დიდი, უზარმაზარი სიმბოლოების სია, შემიძლია Yahoo ლამაზი შესაბამისობა რამ, და მე არ უნდა ჩამოტვირთოთ რომ მასიური JavaScript ფაილი. მე მხოლოდ აპირებს გაიყვანოს ქვემოთ რეალურად შესაბამისი საფონდო სიმბოლოს. მოდით ხტომა შევიდა, რომ. ასე რომ html, js. ჩვენ ახლა quote4. ახლა ჩვენ აღარ იყენებენ, რომ დიდი ჩამონათვალი JavaScript ფაილებს. მაგრამ მცირე სახის დიზაინის პრობლემა აქ. ჩვენ განაცხადა, რომ წელს AJAX არის ასინქრონული. რა, რომ ნიშნავს, რომ როდესაც მე AJAX მოთხოვნით, ამიტომ სწორედ აქ on line 8, ეს არის სადაც ჩემი AJAX მოთხოვნა რეალურად სამსახურიდან გაათავისუფლეს. ვთქვათ ახლა მაქვს რაღაც კოდი ქვემოთ აქ რომ აპირებს რაღაცები მინდა პირთა მომხმარებლის ან ცვლილება რაღაც გვერდზე. რა არ მოხდება არის ბრაუზერი არ აპირებს დაველოდოთ ამ მოთხოვნის გაგრძელდება ადრე მოდის down და hitting ეს ხაზი. სწორედ ასინქრონული ნაწილი. ის აპირებს ამ მოთხოვნით და აცხადებენ, "როდესაც თქვენ დასრულდება, "დავბრუნდებით და მოვუწოდებთ, რომ ფუნქცია რომ გითხარით მოვუწოდო შიგნით წარმატება." ეს იმას ნიშნავს, რომ ჩვენ არ შეგვიძლია უბრალოდ ჩამოტვირთოთ ყველა აქციების წინასწარ. ჩვენ გვჭირდება, რათა მოთხოვნა და დაველოდოთ რაიმეს, რომ ჩამოვსულიყავი. ეს იმას ნიშნავს, რომ ადრე, ჩვენ უბრალოდ ვუთხრა ჩატვირთვის, "აი ჩამონათვალი რამ მინდა თვითდასრულება შესახებ." ჩვენ ვეღარ გავაკეთებთ, რომ აღარ რადგან ჩვენ არ ვიცით რა გვინდა რეალურად თვითდასრულება შესახებ. საბედნიეროდ, ჩატვირთვის ეგონა ამ რადგან ეს ის ჭკვიანი ბიჭები იქ, და ისინი სინამდვილეში მოგვცა სხვა გზა, რათა ჩატვირთოს ამ Typeahead მოდული. მანამდე ღირებულება ამ წყაროს ქონების მხოლოდ ამ დიდი მასივი რამ თვითდასრულება შესახებ. არის წყარო ქონება ფაქტობრივად ფუნქცია, და მიზანი ამ ფუნქციის გაერკვნენ რა რამ თვითდასრულება ხდება. გზით აპირებს გაერკვნენ, რომ არის ის სთხოვს Yahoo! ფინანსთა რა საუკეთესო რამ თვითდასრულება არიან. გავაკეთოთ, რომ მე ვაპირებ გავაკეთო ძალიან ჰგავს AJAX მოთხოვნა. მე ვაპირებ მოითხოვოს ამ გვერდზე suggest.php. მინდა გაგზავნას გასწვრივ სიმბოლიკა მაინც. და ახლა ჩემი წარმატება, ჩატვირთვის დოკუმენტაცია მითხრა რომ რათა populate რომ სიაში რამ, ყველა მე მხოლოდ უნდა გაიაროს ამ მასივი ახლა გადმორეკე ფუნქცია. მაგრამ დაველოდოთ წუთში. თუ ეს უნდა იყოს მასივი და AJAX აგზავნის ჩემს თავში ტექსტი, როგორ არის, რომ შესაძლებელი? ეს გააცნობს ახალი გზა გაცვლის მონაცემები მოუწოდა JSON. ამ შემთხვევაში ჩვენ არა მხოლოდ გაგზავნის უკან მარტივი სიმებიანი ტექსტის. ახლა ჩვენ საქმე გვაქვს ამ უფრო რთული სიაში საფონდო სიმბოლოს. ეს საფონდო სიმბოლიკა შეიძლება ასევე მოიცავს რამ, როგორიცაა კომპანიის სახელი ან მიმდინარე ფასებში. გამოყენებით დიდი ხანგრძლივი string რომ არ დაფორმატდა ნებისმიერ პროგნოზირებადი გზა არ აპირებს იყოს საუკეთესო გზა ამ მონაცემების Yahoo სერვერზე ჩემთვის ისე, რომ შემიძლია ადვილად ესმით. JSON არის ტექნოლოგია, რომელიც იღებს უპირატესობა როგორ ვქმნით ასოციაციურ კოლექტორები in JavaScript. ეს გამოიყურება ბევრი მოსწონს JavaScript ასოციაციურ მასივში, და ფაქტობრივად, ეს იმიტომ, რომ ეს არის. JSON დგას JavaScript Object ნოტაცია. ეს არის ძირითადად შეთანხმებული ფორმატის გადაცემის მონაცემები უკან და მეოთხე. აქ ამ JSON ობიექტი ან ამ JSON ასოციაციურ მასივში აგზავნის ჩემთვის გარკვეული მონაცემები იმის შესახებ, რა თქმა უნდა. გასაღებები ამ მასივი are რამ, როგორიცაა, რა თქმა უნდა, რომ აქვს ღირებულება cs50, და ქვევით აქ ვხედავთ, რომ შემიძლია აქვს მნიშვნელობა, რომელიც არის მასივი. მე არ უნდა გავაკეთოთ რამ, როგორიცაა გარჩევის გარეთ სტრიქონები და ვეძებთ მძიმეები და ნუ გიჟები რამ, როგორიცაა, რომ. რადგან ეს არის დეკლარირებული ამ JSON ფორმატში, JavaScript და jQuery უკვე აქვს ფუნქციების გადაიყვანოთ სიმებიანი რომ ასე გამოიყურება JSON შევიდა ფაქტობრივი JavaScript ასოციაციურ მასივში რომ ჩვენ შეგვიძლია ვიმუშაოთ. Doing რომ არის იმდენად მარტივია, რომელშიც ნათქვამია, რომ აღარ არის ამ ფაილის, suggest.php, გაგზავნის ჩემთვის თავში უბრალოდ სიმებიანი ტექსტი, მაგრამ მე ვიცი, რომ იქნება გაგზავნის ჩემთვის უკან JSON. ეს იმას ნიშნავს, რომ JSON შეიძლება მოაქცია შევიდა JavaScript ასოციაციურ მასივში. და ასე jQuery, მინდა ამის გაკეთება ჩემთვის. ეს იმას ნიშნავს, რომ ეს საპასუხო პარამეტრი აქ, ეს აღარ არის მხოლოდ სიმებიანი. იმიტომ, რომ ჩვენ გითხარით jQuery რომ აქ მოდის ზოგიერთი JSON, jQuery იქნება smart საკმარისი ვთქვა, "თქვენ სურდა JSON?" "მე ვაპირებ, რომ გარდაქმნას შევიდა ასოციაციურ მასივში თქვენთვის." მოდით რეალურად შევხედოთ ქსელის tab ერთხელ გვაქვს quote4.js. ჩვენ შეცვალოთ ეს და განაახლეთ გვერდი. ახლა მე ვაპირებ აკრიფოთ-ერთხელ. მე გააკეთა რამდენიმე ითხოვს suggest.php, მაგრამ ახლა ამ საპასუხოდ, და არა მხოლოდ ტექსტი, ეს JSON. ასე რომ მაქვს ღია Curly გაუწიოს სიტყვებით "აქ მოდის ასოციაციურ მასივში". პირველი და ერთადერთი გასაღები ამ ასოციაციურ მასივში ეწოდება სიმბოლიკა, და მაშინ აქ არის მასივი ყველა შესაბამისი სიმბოლიკა მოდის ახლა ში Yahoo! Finance, არა, რომ გიგანტური სიაში. ასე შემიძლია უბრალოდ populate ამ თვითდასრულება მოდული ზოგიერთი მონაცემები რომ არ მოდის ადგილობრივი ფაილი, რომელიც უკვე წინასწარ არამედ რაღაც. თურმე შეგვიძლია რეალურად ისარგებლოს ტექნიკა მოუწოდა JSONP, ან JSON ერთად padding, რომელიც აღმოფხვრას ამ suggest.php შუამავალი. მაგრამ ნაცვლად აკეთებს, რომ, მოდით, ნაცვლად შევხედოთ როგორ შემიძლია გასაუმჯობესებლად კიდევ უფრო. მე ნამდვილად მომწონს ჩატვირთვის ს Typeahead. ეს მართლაც კარგია. მაგრამ ჩვენ ვიღებთ კარგად JavaScript და გვინდა სახის ამისათვის თავს, იქნებ შევხედოთ რა ამ მოდული შეიძლება აკეთებს. მოდით აღარ გამოვიყენოთ რომ Typeahead რამ, და მოდით ცდილობენ ამ სიაში შემოთავაზებული აქციების საკუთარ თავს. აქ quote6.php ჩვენ ვაპირებთ დავიწყოთ off იგივე გზით. ყოველ ჯერზე ვინმე ტიპის რაღაც, ჩვენ გვსურს AJAX მოთხოვნა. ეს არის მსგავსი ჩვენი ორიგინალური CS50 ფინანსთა მომენტალური. იმის ნაცვლად, რომ თხოვნით quote.php, ჩვენ ახლა მიღების თხოვნით, რომ იგივე ფაილი, როგორც ადრე, ამ suggest.php, რომელიც მხოლოდ აპირებს დახევის მონაცემების Yahoo! ფინანსთა. ისევ და ისევ, ჩვენ ჯერ კიდევ ველოდებით JSON, მაგრამ ახლა რადგან Typeahead არ აკეთებს ეს ჩვენთვის, ჩვენ ასევე უნდა გამოაგზავნოს გასწვრივ ღირებულება რომ არის შიგნით მიმდინარე ტექსტი ყუთში. ახლა ჩვენ ვიცით, რა ვთხოვო Yahoo! ფინანსთა, და ახლა აქ ფუნქცია, რომ ჩვენ გვინდა, რათა შესრულდეს ერთხელ თხოვნით დაასრულა. ჩვენ არ გვაქვს მოდული რათა სიაში ჩვენთვის, ამიტომ აქ, სადაც ჩვენ რეალურად აპირებს ააშენოს სიაში წინადადებები. ამისათვის, ჰგავს PHP-ში ჩვენ concatenated ამ დიდი სიმები HTML მაშინ ჩვენ დაბეჭდილი მათ, ჩვენ შეგვიძლია გავაკეთოთ იგივე ზუსტი რამ JavaScript. პირველი ჩვენ ვაპირებთ დავიწყოთ off ეს კონტექსტი მოუწოდა წინადადებები, და ამ სტრიქონს მხოლოდ აპირებს შეიცავს რამოდენიმე HTML. ჩვენ გვინდა, რომ იყოს სიაში რამ, ამიტომ ჩვენ ვაპირებთ დავიწყოთ off ერთად ამ სიაში tag, და ახლა ჩვენ ვაპირებთ iterate მეტი ყველა სიმბოლიკა, რომლებიც დაბრუნდნენ ჩვენს. გახსოვდეთ, რადგან ჩვენ განაცხადა თემები: "json ', ეს არ არის სიმებიანი. ეს არის უკვე მასივი ჩვენთვის. რომ მართლაც მაგარი. ჩვენ შეგვიძლია უბრალოდ ვთქვათ, "მინდა დამატება სიის ელემენტს." ჩვენ ამას შიგნით ელემენტს მხარეს რომ, ჩვენ მივცემ ეს კლასი წინადადებები ასე ვიცით რა არის, და ახლა აქ არის სიმბოლო იმისა, რომ ჩვენ მივიღეთ უკან Yahoo! ფინანსთა. ერთხელ ჩვენ შევქმენით ელემენტს თითოეული სიმბოლიკა ჩვენ მიღებული თავში, ჩვენ გვსურს მხოლოდ დახურვა off სიაში. ახლა წინადადებები წარმოადგენს ეს პატარა HTML ფრაგმენტი რომ როდესაც ჩაიცვი გვერდზე იქნება სია რამ ჩვენ ვეძებთ. ახლა მოდით რეალურად დააყენა, რომ გვერდზე. გავაკეთოთ, რომ მე რეალურად შექმნილი კიდევ ერთი ცარიელი div და მე მოცემული იგი ID წინადადებების. ჰგავს ჩვენ დავსახეთ შინაარსი div რომ ცარიელია ფასი საფონდო მონაცემები, ჩვენ ახლა მხოლოდ უნდა დააყენოთ შინაარსი ამ div რომ რასაც ამ სტრიქონს რომელიც შეიცავს ეს სიმბოლოები. გამოყენებით ამ HTML მეთოდი, ამ წინადადებები ცვლადი, ეს კონტექსტი, არის string of HTML. მინდა მიიღოს, რომ HTML და განათავსოთ შიგნით div მოუწოდა წინადადებები. ჩვენ უბრალოდ ერთვის რაღაც DOM არის. ჩვენ დასძინა ახალი ელემენტების DOM, რომ ჩვენ შეგვიძლია ახლა ჩვენება გვერდზე. ვნახოთ რა ამ ჰგავს. თუ ჩვენ ჩატვირთვა in quote6 და ახლა ჩვენ დავბრუნდებით, ახლა, როცა დავიწყო აკრეფით aapl, ჩვენ უკვე აღარ გვაქვს, რომ ჩატვირთვის თვითდასრულება, მაგრამ ჩვენ ახლა ამ სიაში, რომ ჩვენ მივიღეთ საკუთარ თავს. ეს არის ცოტა uglier ვიდრე ჩატვირთვის Typeahead, მაგალითად, მაგრამ ეს იმას საშუალებას მოგვცემს გავაკეთოთ ერთი რამ სხვა. როდესაც ჩვენ შევხედავთ, რომ ჩატვირთვის მოდული, ჩვენ ვნახეთ, რომ, როცა autocompleted, ერთი თვითდასრულება ღირებულებების aapl. რომ არ უნდა იყოს ასე გამოსადეგი. როგორც მომხმარებელი, მე შეიძლება არ დაუყონებლივ ვცნობთ ყველა საფონდო სიმბოლოს. რა მე ალბათ უფრო სავარაუდოა, რომ აღიაროს არიან კომპანიის ნამდვილ სახელებს. ასე რომ არ იყოს, ნამდვილად გამოსადეგი თუ ვიდრე ამბობდა aapl ამ განაცხადა მსგავსი რამ Apple Inc- იმის გამო, რომ ჩვენ შემოვიდა ამ თავს, ჩვენ შეგვიძლია ნამდვილად ადვილად გავაკეთებთ. მოდით გახსენით ჩვენი ბოლო ციტირებით ფაილი აქ, ასე quote7. იგივე. მე უბრალოდ შექმნილი სხვა PHP ფაილი, რომელიც დაბრუნდება us მეტი, ვიდრე უბრალოდ სიმბოლოს. იგი ასევე მოგვცეს უკან კომპანიის სახელები. და ასე ვაკეთებთ იგივე. ჩვენ მიღების AJAX მოთხოვნა. ერთხელ მოთხოვნა წარმატებით დასრულდა, ჩვენ ვაპირებთ, რათა შესრულდეს ამ ფუნქციის აქ, და ამ ფუნქციის აპირებს შექმნას დიდი სიმებიანი ელემენტების. მაგრამ განსხვავება აქ ისაა, რომ ღირებულება ამ სიებში აღარ არის უბრალოდ სიმბოლო, ეს არის სახელი. ასე რომ ჩვენ ერთი პატარა პრობლემა. როდესაც ჩვენ ვიყენებთ ჩვენი საძიებელი, ჩვენ გვჭირდება, რათა როგორმე გაიაროს ეს სიმბოლო. ჩვენ ვერ გაივლის lookup რაღაც Microsoft Corporation. ჩვენ უნდა გაიაროს ეს MSFT. როდესაც ჩვენ წერილობით HTML, ჩვენ გვაქვს უამრავი ლამაზი ჩაშენებული ატრიბუტები. შესაძლოა ასოცირდება ეს href ან კლასის. მაგრამ რაც ჩვენ ნამდვილად გვჭირდება ახლა არის თითოეული ამ ბმულები ჰქონდეს საფონდო სიმბოლო ასოცირდება იგი. არ არსებობს ჩაშენებული HTML ატრიბუტია საფონდო სიმბოლო, მაგრამ საბედნიეროდ, HTML5 საშუალებას გვაძლევს შევქმნათ ჩვენი ატრიბუტები უნდა იყოს რასაც ჩვენ გვინდა. განაცხადა მონაცემთა სიმბოლო, მე ახალი ატრიბუტი რომლის სახელი მე მხოლოდ შედგება, და ეს okay, რადგან მე prefaced იგი ამ მონაცემებს. ჩვენ ვაპირებთ შესანახად შიგნით არსებობს სიმბოლოს საფონდო არის. რა ეს იმას ნიშნავს, რომ არის, მიუხედავად იმისა, რომ ჩვენ ჩვენებისას ღირებულება კომპანიის სახელი შიგნით ჩვენი თვითდასრულება, ჩვენ კვლავ დამახსოვრების სიმბოლო რომ არის დაკავშირებული თითოეული კომპანია. გზა ვაკეთებთ, რომ არის შიგნით ამ ელემენტის თავად. ასე რომ, რაც იმას ნიშნავს, რომ ჩვენ გვჭირდება, რათა კიდევ ერთი ცვლილება. როდესაც ჩვენ დაწკაპეთ იგი ახლა, ჩვენ უნდა რეალურად ისარგებლოს სიმბოლო ატრიბუტის და არა მხოლოდ მისი ღირებულება. თუ ჩვენ უკან მდე, ვანიჭებთ ღონისძიება დამმუშავებლის to წინადადებები. როდესაც ერთი ასეთი წინადადებები არის დააწკაპებთ ახლა, მინდა რაღაც. რა მინდა უნდა შეცვალოთ ღირებულება რომ input box. ახლა მინდა მითითებული ეს იგივე Val ფუნქცია. ამიტომ ყოველგვარი არგუმენტების ამ Val ფუნქცია დააბრუნებს თქვენ რა უკვე ტექსტი ყუთი, მაგრამ თუ თქვენ ეს ტექსტი, იგი აპირებს, რომ სიმებიანი და დააყენა იგი ტექსტი ყუთში. მე შერჩევისას მისი ტექსტი ყუთი იგივე გზით. მისი სახელი არის სიმბოლო შიგნით ფორმის-ციტირებით. ახლა მე ვაგზავნი ის ღირებულება ატრიბუტი მონაცემთა სიმბოლო. ეს რამ აქ არის ახალი, ამ $ (ეს). რა ეს შეეხება არის ელემენტს, რომელიც დააწკაპებთ. ჩვენ ვხედავთ, რომ ჩვენ არ ვამაგრებ click ღონისძიება ყოველი ელემენტს ერთად კლასის წინადადება ინდივიდუალურად. პირიქით, ჩვენ ახლოვდება ამ პატარა განსხვავებულად. ამის ნაცვლად ჩვენ ვამბობთ, როდესაც არაფერი შიგნით ამ წინადადებები div, რაც გახსოვდეთ მხოლოდ კონტეინერი რომ სიაში, თუ რაიმე შიგნით ამ div არის დააწკაპებთ და მას კლასის წინადადება მინდა ამ მოვლენას ცეცხლი. ძირითადად რას ნიშნავს ჩვენ შეგვიძლია გავაკეთოთ არის შეგვიძლია reuse ამ ამავე ღონისძიებაზე დამმუშავებლის ყველა რამ სიაში. ამიტომ, ჩვენ არ უნდა ჰქონდეს ერთი მოვლენის დამმუშავებლის პირველად ელემენტს და სხვადასხვა ღონისძიება დამმუშავებლის მეორე ელემენტს. ჩვენ შეგვიძლია ნაცვლად ამბობენ, "მინდა ამავე ღონისძიებაზე დამმუშავებლის მიმართოს ყველაფერი ჩემი სიაში." მაგრამ ჩვენ გვჭირდება, რათა როგორმე იცით რომელი ელემენტი დააწკაპებთ. ეს "ამ" სიტყვით წარმოადგენს მხოლოდ, რომ. ეს არის ობიექტი, რომელიც მხოლოდ დააწკაპებთ მომხმარებლის მიერ. თუ მე უბრალოდ დაწკაპავთ მე -3 ბმული, ამ წარმოადგენს ელემენტს, რომ მე -3 ლინკი, რაც იმას ნიშნავს, რომ შემიძლია კიდევ მისი ატრიბუტი, მონაცემთა სიმბოლო, რაც ჩვენ ვიცით უნდა შეიცავდეს სიმბოლოს რომ ასოცირდება კომპანია მე უბრალოდ დაწკაპავთ. თუ ჩვენ ხტომა უკან ჩვენი ფინანსთა გვერდზე, ვხედავთ, რომ ერთხელ დავიწყო აკრეფით რაღაც msft, ჩვენ აღარ ვიღებთ მხოლოდ საფონდო სიმბოლოები, ჩვენ ახლა მიღების ფაქტობრივი კომპანიები. მაგრამ როდესაც დააწკაპეთ ამ კომპანიებს, ვხედავთ, რომ ჩვენ რეალურად მცხოვრებ ტექსტი ყუთი არა სახელით კომპანია მაგრამ რაც არ იყო შენახული შიგნით იმ მონაცემები ატრიბუტები. და ასე თუ რეალურად შეამოწმოს ერთი ამ ელემენტების მიერ მარჯვენა დაწკაპვით იგი და დაწკაპვით შეამოწმოს ელემენტის, შეგვიძლია რეალურად ვხედავ რა ამ ჰგავს. დამახსოვრება ეს არის ის, რომ ჩვენ შევქმენით შიგნით რომ loop როდესაც ვაშენებდით, რომ string of HTML. ჩვენ ვხედავთ, რომ ამ მონაცემთა სიმბოლო აქვს ღირებულება MSFT, რაც საკმაოდ დიდი. რაც ჩვენ ველოდით. სწორედ სიმბოლო და ასე მივიღეთ ღირებულება რომ ჩვენ გამოყენება დასჭირდა შიგნით ამ ველში. სწორედ საკმარისი ციტირებით ფორმით იმიტომ რომ სახის მოსაწყენი. მოდით უბრალოდ გარკვეული სწრაფი გაუმჯობესებებს ჩვენი პორტფელის გვერდზე. თუ თქვენ გამოყენებული CS50 ფინანსთა ხოლო და გავუშვით ყიდვის და გაყიდვის უამრავი მარაგი, საბოლოოდ, ამ მაგიდის აპირებს მიიღოს საკმაოდ დიდი, და თქვენ ვაპირებთ მინდა საფონდო ticker, რა თქმა უნდა. ერთხელ მაგიდასთან მართლაც, მართლაც დიდი, შეიძლება იყოს სასარგებლო მომხმარებელს ცდილობენ ძებნის მას. შიგნით ძებნა ყუთი თუ დავიწყო აკრეფით რაღაც Disney და ეძებს ჩემი Mickey Mouse საფონდო, ვხედავთ, რომ მაგიდასთან არის ფილტრაცია რის საფუძველზე უბრალოდ აკრეფილი შემოსული ამ ფუნქციის გამოიყურება სუპერ რთული, მაგრამ ეს ნამდვილად, მართლაც ადვილი ერთად jQuery და JavaScript. ეს portfolio.php ფაილი მოიცავს JavaScript ფაილი სახელად portfolio.js. მოდით შევხედოთ, რომ. ასე რომ html, js, პორტფელის. აი აქ ვაკეთებთ, რომ ჩხრეკის მაგიდაზე. პირველი, რაც უნდა გავაკეთოთ, არის ვანიჭებთ ღონისძიება დამმუშავებლის რომ ტექსტი ყუთი რადგან ჩვენ ვიცით, რომ ჩვენ გვინდა ჩვენი ფილტრაცია ფუნქცია მუშაობს ყოველ ჯერზე მომხმარებლის presses რაღაც იმიტომ, რომ ჩვენ არ გვაქვს დრო ძებნის ღილაკებით. პირველი, რაც უნდა გავაკეთოთ არის გაერკვნენ, რა მომხმარებლის ეძებს, უბრალოდ ისე, როგორც ეს ადრე იყო. ეს სიტყვით ეხება მიმდინარე ელემენტს მომხმარებელი ინტერაქციაში. რადგან მომხმარებელს ინტერაქციაში ძებნა ყუთი, $ ამ წარმოადგენს ძებნა ყუთი, ასე this.val გვაძლევს რა შიგნით ძებნა ყუთი მომხმარებელს გაკეთებული აკრეფით. ასე რომ, ეხლა ჩვენ ჩვენ უნდა ჩვენ გვინდა iterate მეტი ყველა რიგების შიგნით ჩვენი მაგიდასთან. ასარჩევად ყველა რიგები ჩვენს მაგიდასთან, მივეცი, რომ მაგიდასთან ID სუფრის პორტფელის და თითოეული მწკრივი წარმოდგენილია TR ელემენტს, ასე რომ ეს არჩევის დაბრუნებას აპირებს ჩემთვის დიდი მასივი ყველა რიგები ჩემი მაგიდა. ახლა მინდა iterate მეტი რომ მასივი. მე ვერ თქვენ ამისთვის მარყუჟი, მაგრამ jQuery რეალურად გვაძლევს ლამაზი ფუნქცია მოუწოდა "ყოველი". რა თითოეული არ არის თითოეული იღებს ერთ არგუმენტს, და ეს არგუმენტი არის ფუნქცია. რასაც ის აპირებს არის ის აპირებს მიმართოს, რომ ფუნქცია ყველა ელემენტს შიგნით ამ სიაში. ეს ფუნქცია იღებს ერთი არგუმენტი, რომ ელექტრონული, და როდესაც ეს ფუნქცია შესრულებული, ამ ვებ აპირებს უნდა შეიცვალოს პირველი რიგის, მაშინ მეორე რიგის, ხოლო შემდეგ მესამე რიგის. ამ გზით, ეს არის იგივე როგორც გაშვებული ამისთვის loop და შემდეგ მჭიდროდაა მიმდინარე ელემენტს ეფუძნება ინდექსი შიგნით თქვენი ამისთვის loop. ყოველ iteration, თითოეული ამ ელემენტების მაგიდა, მინდა შევამოწმო, თუ ტექსტის ელემენტი - ტექსტი საკანში შიგნით Row - სიას რა მე ეძებს. ეს დიდი ხანგრძლივი string ბრძანებების არის როგორ შეეძლო, რომ. პირველი, კიდევ ერთხელ, ეს ახლა ეხება - იმიტომ რომ შიგნით ახალი ფუნქცია - ეს არის მიმდინარე row ცხრილში. მინდა მიიღოს მიმდინარე row ცხრილში, და მინდა მისაღებად ყველა მისი შვილი. გახსოვდეთ, DOM არის იერარქიული ხე, რაც იმას ნიშნავს, რომ ელემენტები აქვს ბავშვების რაოდენობა. ეს. ბავშვები ფუნქციის დაბრუნებას აპირებს ჩემთან უკან მასივი ყველა ელემენტები რომ არიან შვილები, ამ შემთხვევაში, ზედიზედ ცხრილში. ეს არის უბრალოდ უჯრედების შიგნით row. მინდა ძებნის მეტი პირველი საკანში. ეს. პირველი ფუნქცია ამბობს მომეცი პირველი ელემენტია, რომ მასივი. მაშინ ტექსტი ფუნქცია ამბობს get me ზუსტად რა შიგნით რომ საკანში რადგან მინდა ძებნის მეტი რომ ტექსტი. საბოლოოდ, მოდით გადაიყვანოთ იგი ამას, ამიტომ ჩვენ შეგვიძლია გავაკეთოთ ტექსტის შემთხვევაში insensitive შეკითხვებს. და ბოლოს, ჩვენ გვინდა, რომ თუ ეს სიმებიანი შიგნით მაგიდა შეიცავს სტრინგს ჩვენ ეძებს. IndexOf ფუნქცია JavaScript აკეთებს უბრალოდ რომ. იგი გვეუბნება, თუ არა ეს კონტექსტი შეიცავს სხვა სიმებიანი. თუ ეს სიმართლეა, რომ საკანში შეიცავს რა მე ეძებს, მერე გვინდა დავრწმუნდეთ, რომ ის ნაჩვენები. შოუ მეთოდი იტყვის, "აჩვენეთ ელემენტს." თუ ეს ასე არ არის, მაშინ ეს იმას ნიშნავს, რასაც მე ეძებს არ შეიცავდა ფარგლებში ამ რიგის, და ასე მინდა დამალვა არის საწყისი მომხმარებელს. რომ აღწევს, რომ ლამაზი ფილტრაცია ეფექტი აქ აღარ ვხედავთ მთელი მაგიდა. თუ თქვენ დაინტერესებული, თუ როგორ გახადოს ამ ticker ისევე, ჩვენ პოსტი წყარო ხაზზე. მაგრამ ეს მართლაც მარტივია. JQuery აქვს რა მეთოდები ამ ანიმაციების და მანიპულირების CSS თვისებები. ასე რომ, არის ის ჩემთვის. მაშ მდგომარეობს ადრე? როგორც თქვენ ნახავთ რამდენიმე დღეში, საბოლოო პროექტების წინადადების გამო. საბოლოო პროექტების წინადადება მოგთხოვთ რამოდენიმე კითხვა, მაგრამ მათ შორის იქნება სამი ეტაპები - ერთი "კარგი" ახალ ეტაპს, ერთი უკეთესი ეტაპს, და ერთი საუკეთესო. იდეა მყოფი ნამდვილად დაგეხმაროთ ბიჭები მითითებული თქვენი მოლოდინი ისე, რომ მინიმალურად იქნება კმაყოფილი გამომავალი თქვენი საბოლოო პროექტი და ეს იქნება "კარგი" რამდენადაც თქვენ შეშფოთებულია. მაგრამ მერე ინტერესი მიღების თქვენ მიღწევა მხოლოდ ცოტა რაიმე უკეთესი ან რამე საუკეთესო, ჩვენ ასევე სახის დააყენებს თქვენ მიმართ, რომ ისევე. CS50 Hack--thon, იმავდროულად, არის რამდენიმე კვირის. როგორც წესი, ჩვენ ამ თემაზე ლატარიის საფუძველზე საფუძველზე გამო ინტერესი, მაგრამ შანსი ჩვენ რამდენიმე ასეული ჩვენთვის სპეციალური სამარშრუტო ტაქსები ჰარვარდის მოედანზე ქვემოთ Kendall Square, სადაც Microsoft აქვს ლამაზი დაწესებულებაში aptly მოუწოდა "NERD" - ახალი ინგლისის კვლევებისა და განვითარების ცენტრი. ჩვენ იქ გარშემო 8 საათზე გვექნება ზოგიერთი საკვები. დაახლოებით 1 საათისთვის გვექნება კიდევ რამდენიმე საკვები. დაახლოებით 5 საათზე, თუ თქვენ ჯერ კიდევ Awake ჩვენ უხელმძღვანელებს გადასცა IHOP ან გადაგიყვანთ თავში კამპუსში. ობიექტური არსებობს რომ ჩაყვინთვის შევიდა საბოლოო პროექტები ერთად საქართველოს თანაკლასელები და პერსონალი. შემდეგ რამდენიმე დღის შემდეგ არის CS50 სამართლიანი, რომელიც რეალურად ნიშნავს, რომ შესაძლებლობა თქვენ ბიჭები აჩვენოს თქვენი მუშაობა და მიღწევების ამისთვის სემესტრის ხოლო rubbing shoulders ერთმანეთთან და მიღების გრძნობა რა ყველას გააკეთა. აღნიშნულის გათვალისწინებით, დიდი მადლობა ტომი და ჯოზეფ, და ვნახავთ თქვენ ორშაბათს.  [ტაში]