[მუსიკის დაკვრა] დავით Malan: ეს არის CS50, და ეს არის დაწყების კვირაში რვა. და ჩვენ ძალიან აღელვებს მივესალმო უკან, დიდი სიურპრიზი, CS50 საკუთარი Ramon Galvan, იზრდება უფროსი, რომელიც უკვე ხარჯვის ბოლო რამდენიმე თვის განმავლობაში წლის ივლისიდან LA, ჰოლივუდში, ფაქტიურად მუშაობს ახალი სატელევიზიო შოუ მოუწოდა კოლონიაში, შემოქმედი, რომელიც ფაქტიურად ჰარვარდის ალუმინის თავს. ასე რომ, ჩვენ ძალიან აღელვებს, რომ ეს დებიუტი USA ქსელის ამ წლის იანვარში. ასე რომ, ადევნეთ თვალყური, რომ, და უფრო Ramon, რომ კვირის მოსვლა. ვიცი, რომ აღსასრული ახლოს არის. და რა ეს იმას ნიშნავს, რომ იქ არ არის ყველა რომ ბევრი რამ დარჩა CS50, სამწუხარო ვთქვა. ჩვენ მხოლოდ სამი პრობლემა კომპლექტი left-- იქ პრობლემა კომპლექტი six-- რომელიც თქვენს ხელშია ახლა ან სულ მალე იქნება, იმის გამო, მოგვიანებით ამ კვირას იმას ნიშნავდა, რომ ხიდი ჩვენი სამყაროს ბრძანების, სადაც ჩვენ გაატარა ჩვენი დროის გამოყენებით C, და სამყაროში ვებ პროგრამირება. ისე, დაინახავთ, რომ ბევრი იდეები ნასესხები command line მუშაობა, არამედ ბევრი ახალი და საინტერესო იდეები რომელიც ასევე იქნება გერმანე for მობილური პროგრამები და ტექნოლოგია, უფრო ზოგადად, რომელიც თქვენ ბიჭები არიან ყველა იცნობს დღეს ლაპტოპები და ტელეფონები და ასე შემდეგ. ასე რომ, თქვენ განახორციელოს არა ვებ გვერდზე, ან ნახვა თავისთავად, მაგრამ ფაქტობრივი სერვერზე. თქვენ დაწერს დანარჩენი ვებ სერვერზე დაწერილი C, რომლის მიზანი ცხოვრებაში არის მიიღოს HTTP მოთხოვნა, იმ ვირტუალური კონვერტები, ჩვენ შევინარჩუნოთ საუბარი შესახებ, და ფაქტობრივად რეაგირება არც ზოგიერთი სტატიკური content-- მოსწონს dot HTML ფაილი, ან dot JPEG ან ნებისმიერი სხვა რაოდენობის ფაილი, ან თუნდაც PHP ფაილი, რომლის დროსაც თქვენი ვებ სერვერზე აპირებს ინტერპრეტაცია, რომ PHP კოდი და შამფურზე შედეგები. ახლა, ჩვენ გათვალისწინებული თქვენ საკმაოდ ცოტა ფარგლებში ამისთვის it-- მართლაც განაწილების კოდი პრობლემა მითითებული ექვსი დასრულდა 1000 ხაზები ხანგრძლივი, ბევრი რომელიც კომენტარი, უნდა იყოს fair-- მაგრამ ეს ნამდვილად ნიშნავს, უნდა იყოს საშუალება მიიღოთ თქვენი ხელები ბინძური diving შევიდა საკმაოდ დიდი პროექტი რომ ჩვენ ძალიან კონკრეტულად მოჩუქურთმებული out ცალი თქვენთვის, ასე, რომ, როდესაც თქვენ გასვლა CS50 და შესვლის რეალური სამყაროს პროგრამირების და მინდა შეხება ნებისმიერი რაოდენობის პროექტები, თქვენ ბევრად უფრო დიდი კომფორტი ჩამოტვირთვის ზოგიერთი წყარო კოდი, ზოგიერთი ღია პროექტის ინტერნეტში, და diving და მიღების ცვლილებები, რომ ხედავთ მორგებული. პრობლემა მითითებული შვიდი იქნება დაახლოებით მიღების თქვენი საკუთარი ვებ დაფუძნებული პროგრამა რომელიც იღებს დინამიური შემავალი და აწარმოებს დინამიური გამომავალი სახით ერთი etrade.com მსგავსი საიტზე. და პრობლემა კომპლექტი რვა ფოკუსირებული იქნება ჯერ სხვა ენაზე ცნობილია, როგორც JavaScript. იმავდროულად, საბოლოო პროექტის ჰორიზონტზე. ე.წ. წინასწარ წინადადება იმის გამო, კვირაში დღეს. Pre-proposal-- პოსტი დაზუსტება, რომელიც CS50 ის website-- არის საკმაოდ შემთხვევით შესაძლებლობა თქვენ გაგზავნას საკმაოდ ლაკონური ელ თქვენი სწავლების თანამემამულე უბრალოდ უნდა აუხსნან მას ან მას, თუ რას ფიქრობდა, რომ გამოყენება მას, როგორც sounding ფორუმში. და აქვს საღი აზრის შეამოწმოს თუ თქვენ ფიქრი შესახებ დაკბენის off ძალიან ბევრი ან იქნებ ძალიან პატარა, ან იქნებ არ ვიცი, განაწილებაზე და მინდა ჩაერთონ საუბარში. ამის შემდეგ არის წინადადება და სტატუსი ანგარიში, ე.წ. CS50 hackathon აქ კემბრიჯის ჰარვარდის და იელის სტუდენტები მსგავსად. საბოლოო პროექტის განხორციელების შემდეგ გამო. და მაშინ CS50 სამართლიანი აქ, კემბრიჯში, ისევე, როგორც სხვა in New Haven. ასე რომ, ეს წინადადება, შევხედოთ ვებ იმ დასკვნაში. მაგრამ უფრო საინტერესოდ, ძალიან, არის შესაძლებლობა მიიღოთ თქვენი ხელები ბინძური, და თქვენი გონება ღიაა მთელი რამოდენიმე თემა და ინსტრუმენტები და ტექნიკა, რომელიც არის დამხმარე რა თქმა უნდა, ის ძირითადი სილაბუსი, მაგრამ მიუხედავად ამისა დაკავშირებული. და ასევე მშვენიერი სტეპინგზე ქვები აკეთებს მართლაც მაგარი საბოლოო პროექტი, რომელიც სცდებოდეს მასალა ჩვენ დაფარული ფორმალურად პრობლემა ადგენს და ლექცია. ასე რომ CS50 ნახვა for მთელი მოშორებას სემინარები. თუ თქვენ არ რეგისტრაცია, არ არის, რომ ჯარიმა. წავიდეთ წინ და ხელი მოაწეროს up მაინც და ჩვენ თვალყური ცოცხალი ნაკადი ბმული, დღე და დრო ვებგვერდზე. და ყველაფერი კარგად იქნება ჩაწერილი და ამჟამად თუ თქვენ არ შეუძლია კერძოდ, დღის და ჯერ. რაც, რა დევს წინ thereafter-- კარგად, რა თქმა უნდა, არ არის CS50 hackathon. ეს ფოტო, გავიხსენოთ, კვირაში ნულოვანი მიღებული დაახლოებით 4 AM ერთ საღამოს გასულ წლებში. CS50 სამართლიანი, რომელიც კიდევ ერთხელ გაიმართება ორივე ქალაქში. და მაშინ, მხოლოდ დარგე თესლი, მიუხედავად იმისა, რომ ჩვენ ჯერ კიდევ ერთი თვის პლუს მარცხენა სემესტრის თუ გსურთ შეუერთდება CS50 საკუთარი სწავლების პერსონალი და გსურთ დაიწყოს ფიქრი გახდეს CA, ან სწავლების თანამემამულე, ვიცი, რომ ჩვენ დავიწყებთ საუბარს უფრო მეტი, რომ შემდეგ ამ სემესტრში. მაგრამ სურათები აქ არის ყველაზე წლევანდელი გუნდი. ასე რომ, PHP-- და მე იმდენად სამწუხარო გასულ კვირას, რომ [? Allyse?] Kindly წავიდა ძალისხმევას მიღების ჩვენს ამ მშვენიერი props რომ მე არ დასრულდება up გამოყენებით, ასე რომ ნამდვილად ჩანდა სახის სულელური რომ ჩვენ გვქონდა შოველ სხდომაზე აქ ყველა დღეს გასულ ოთხშაბათს, და პატარა კოვზი. მაგრამ ეს იყო ჩემი metaphoric გზა ცდილობს ხატავს სურათს, რის გამოც ჩვენ გადასვლის C- დან ენა, როგორიცაა PHP. და იგივე შეიძლება ითქვას ნებისმიერი ნომერი languages-- Java, Python, Ruby ან კონა others-- მაგრამ მაშინ, როდესაც C, მაგალითად, წერილობით პროგრამა C შეიძლება, როგორც წესი, იყოს, როგორც აღების კოვზი მოსწონს ეს და სანგრების ხვრელი ადგილზე, ქვიშა ან ჭუჭყიანი. PHP გაძლევთ საშუალებას მიიღოს ბევრი უფრო დიდი ნაკბენები გარეთ პრობლემა, წერა ბევრად ნაკლები კოდი გამოყენებით გაცილებით პატარა ინსტრუმენტი, იმიტომ, რომ იქ ასე უფრო მეტი ფუნქციონალური pieced წელს. ახლა კი, თუ ჩვენ მართლაც დრამატული, ჩვენ გვექნება რაღაც შოველ აქ, მაგრამ ასე იქნება ეს. ამავდროულად, სხვა მეტაფორა ჩვენ გამოვიდა არის, რა თქმა უნდა, თქვენ შეიძლება გამოიყენოთ რაღაც wrench ჩაქუჩით რაღაც ფრჩხილის. მაგრამ, რა თქმა უნდა, უფლება ინსტრუმენტი გამოყენება აპირებს უნდა იყოს არა იმდენად ენის მოუწოდა, C და ახლა მე უბრალოდ აღიზიანებთ [? Sanders,?] ალბათ, ჩვენ დაფიქსირება, რომ later-- ასე უფლება ინსტრუმენტი გამოიყენოს ხშირად არ იქნება ეს დაბალი დონე ინსტრუმენტი. და მართლაც, C არ არის ენა, რომელიც ყველაზე მეტად თქვენ ოდესმე აპირებს გამოიყენოს, ან აუცილებლად უნდა გამოიყენოს ერთხელ. და სინამდვილეში, ცოტა საიდუმლო მხოლოდ დროის მე ვიყენებ C თავს საკმაოდ ბევრი შორის სექტემბრიდან დეკემბრამდე ყოველ შემოდგომაზე სემესტრში. და ეს იმიტომ, რომ ჩვენ გამოიყენოს იგი როგორც საშუალება საფუძვლების სწავლება პროგრამირების, და მასთან ერთად კომპიუტერული მეცნიერება საფუძვლები, მონაცემთა სტრუქტურები, ალგორითმები და მოსწონს მაგრამ ძალიან სწრაფად იქნება თქვენ ვხედავ, რომ სინტაქსი და იდეები საფუძვლად უდევს C ასე შესანიშნავად გადაცემა უფრო თანამედროვე უმაღლესი დონის ენებზე, როგორიცაა PHP და Python და Perl და ჯავა და Objective-, C, ფაქტობრივად, არა იმდენად Objective-, C მაგრამ Swift, ეს უფრო ენებზე, რომ ბევრი თქვენგანი მაშინ შეხება თქვენ საბოლოო პროექტი. ასე გარეშე ado, მოდით რეალურად გამოყენება PHP გადაწყვიტოს ზოგიერთი პრობლემა. შეგახსენებთ, რომ დასაწყისში, ბოლო კვირას, ჩვენ უბრალოდ გამოიყენება CS50 IDE, ჩვენ წერდა dinky პატარა პროგრამა რომელიც მხოლოდ განაცხადა, "Hello world". და მაშინ მე გადაარჩინა ეს ფაილი სახელად hello.php. და მერე გაიქცა ეს ბრძანება. და რატომ? ინგლისური, თუ რა ხდება აქ? რა იყო მე აკეთებს, როდესაც მე გაიქცა ეს ბრძანება? ჰო? აუდიტორია: არსებობს რამდენიმე ფუნქცია PHP ნათქვამია, რომ ის, რაც შიგნით ესმის. დავით Malan: კარგი, არსებობს გარკვეული ფუნქცია PHP-- და ნება მომეცით უფრო კონკრეტულად, არსებობს პროგრამის მოუწოდა PHP, a.k.a. თარჯიმანი, რომ ესმის შინაარსი hello.php, და განმარტავს, რომ ეს დაბრუნება უნდა ბოლოში, მარცხნიდან მარჯვნივ, და აკეთებს იმას, რასაც იმ ბრძანებები ამბობენ. ბრძანებები hello.php, რა თქმა უნდა, მხოლოდ წყარო code-- ფუნქციები და ცვლადები და მარყუჟების და მოსწონს, რომ ჩვენ თვითონ არ დაიწყო წერა PHP. მაგრამ განსხვავებით C, რომელიც არის შედგენილი ენის, PHP თქვენ უბრალოდ დაწერეთ, და გაუშვით. თქვენ გამოტოვოთ, რომ შუამავალი ნაბიჯი კონვერტაცია მას zeros და პირობა, და მერე გაშვებული. ასე რომ, რა არის თავდაყირა ამ? რატომ ვართ აჯობებს ნაბიჯი? რატომ უფრო თანამედროვე ენებზე როგორც წესი, გამოტოვოთ ეს ნაბიჯი? რა სარგებელი? ან უბრალოდ ინტუიციურად? მაშინაც კი, თუ ჩვენ არ დაწერილი ბევრი PHP ადრე, რა არის მომგებიანი შესახებ არ შედგენა თქვენი კოდი ფიქრობთ? არ არის? არ ჩაიდინო? Scratching თქვენი ხელმძღვანელი? ჰო. აუდიტორია: მეტი დინამიური. დავით Malan: მეტი დინამიური? რას ნიშნავს? აუდიტორია: [INAUDIBLE] დავით Malan: კარგი, კარგი, ამიტომ დამოკიდებულია input, თქვენ არ გაქვთ კომპილირება ყოველ ჯერზე. და ეს ნამდვილად არ არის, როგორც მარტივია, that-- რა არის წერტილი გრძელდება კომპილაციის თქვენი კოდი? ეს არის მხოლოდ ნაბიჯი, რომელიც არის making-- ეს მოითხოვს, ბოლო რამდენიმე კვირის განმავლობაში, ორჯერ მეტი ნაბიჯები როგორც უბრალოდ გაშვებული პროგრამა. ეს იყო სასარგებლო ხედავს, რომ თქვენ ვხედავ რაიმე შეცდომა შეტყობინებები და ა.შ., მაგრამ ეს ჯერ კიდევ მხოლოდ შემაშფოთებელი ნაბიჯი. ასე რომ, პროგრამისტების მიხვდა, დროთა განმავლობაში, რატომ არ გვაქვს დაიწყოს წერა ენაზე, რომელიც არ უნდა, რომ საკმაოდ მექანიკა ნაბიჯი, ასე რომ, შეგიძლიათ უბრალოდ წერენ თქვენი კოდი და გაუშვით. მაგრამ რა იყო ფასი რომ ჩვენ ვნახეთ ჩვენ გადახდილი გასულ კვირას, ერთი კონკრეტული მაგალითი? დიახ? სიჩქარე. ასე რომ [? რა არის?] interpreters ცოტა ნელა, ამ zeros და პირობა ლამაზი და სწრაფი კომპიუტერი უნდა გვესმოდეს, რადგან Intel CPU, ან რაც არ არის, მხოლოდ ესმის, რა ხდება ერთად იმ ნიმუშების ბიტი. ვინაიდან თარჯიმნის არის პროგრამა, რომელიც ნამდვილად აქვს წაკითხვის ASCII წყარო კოდი, რომ თქვენ არ წერია, და დააკონვერტიროთ ის, ასე ვთქვათ, ან გაერკვნენ, თუ როგორ გარდაქმნის საბოლოოდ zeros და პირობა. ასე რომ, ეს უბრალოდ იღებს პატარა ცოტა შესრულების მოხვდა. ასე რომ, ეს ცოტა ვაჭრობის საგანი. ახლა თუ ჩვენ ეს აქ, ნება მომეცით წავიდეთ წინ და ამის მაგალითად ასეთია. თუ მე წასვლა აქ, ახალი ფაილი, მე ვაპირებ გადარჩენა ეს კიდევ ერთხელ არის hello.php. და ახლა მე ვაპირებ წავიდეთ წინ და ვთქვათ, "ბეჭდვა hello მსოფლიოში", - და გავიხსენოთ, რომ შემიძლია ბეჭდვა, მე არ უნდა გამოიყენოთ ბეჭდვითი-F. და ახლა ქვემოთ აქ, თუ PHP of hello.php, huh-- მე როგორც ჩანს, არ აქვს აღქმული. რა დავაშავე? აუდიტორია: დახრილი სამაჯურები. დავით Malan: ჰო, თქვენ უნდა რომ კუთხური ფრჩხილი up დაბრუნება. ასე რომ, ეს სახის შემაშფოთებელი, მაგრამ თქვენ შეეგუება იგი სწრაფად. თუ მე უნდა დაწეროს PHP კოდი, ზოგადად უნდა ვუთხრათ, პროგრამა, ან ვუთხრა თარჯიმანი, hey PHP, აქ მოდის ზოგიერთი PHP კოდი. და მაშინ კარგი ღონისძიება, მე დახურეთ ეს არა ამ, არამედ მხოლოდ კითხვის ნიშნის კუთხე bracket, ასე რომ, ახლა ქვემოთ აქ, თუ მე აწარმოებს ამ ერთხელ, ახლა მე მიიღოს სასურველი შედეგი. ახლა მოდით უმნიშვნელო ოპტიმიზაცია, ასე, რომ თქვენ მინახავს ეს ადრე. ეს არის ერთგვარი შემაშფოთებელი, რომ მე უნდა აწარმოებს PHP სივრცეში hello.php, იმიტომ, რომ წარსულში მე შეიძლება მხოლოდ წერენ dot slash პროგრამის სახელწოდება, რომელიც სახის ლამაზი. ეს არის ერთგვარი უკეთესი მომხმარებლის, გამოცდილება. გამოდის, რომ შეგიძლიათ გააკეთოთ ეს in PHP ერთად ასეთია მე შეგიძლიათ გამოიყენოთ ეს საკმაოდ cryptic incantation ზედა აქ, რომელიც ზოგადად ეწოდება shebang, რომლის დროსაც ამ მკვეთრი სიმბოლო, ასე ვთქვათ, ეს არის bang ან ძახილის წერტილი. და ეს ახლა არის გეზი პროგრამა ტიპიური Linux სისტემა, რომელიც ეწოდება გარემოს, ან env. და ეს ხაზი გრძელი ამბავი short-- ხაზი, ერთი უბრალოდ ამბობს, hey კომპიუტერი, ნახავთ PHP თარჯიმანი ჩემთვის გარემო, ვიპოვოთ იგი თქვენს მეხსიერებაში, ასე ვთქვათ. და რა ლამაზი ახლა, იმ შემთხვევაში, თუ დაცემას აქ, მე შემიძლია ამის dot slash მიესალმები dot php, or-- hmm. ნებართვა მიეცა. კარგად, თქვენ უფრო მეტად ამ პრობლემის მითითებული შვიდი, თუ არა გაქვთ უკვე, ერთად უფლებები. გამოდის, რომ მე უნდა შეასრულოს ამ ბრძანების მოუწოდა [? chamod?] ცვლილება mode-- პლუს x hello.php. მე უნდა [INAUDIBLE] ამ ერთ დამატებით ნაბიჯი, რომელიც ეუბნება, ჩემი კომპიუტერი, რათა hello.php გაშვება. ახლა უყურებს, რა უნდა მოხდეს dot სლეში hello.php, ეს მხოლოდ ეშვება. მე არ უნდა მიუთითოთ თარჯიმანი მთელი მსოფლიოს მასშტაბით. და შემიძლია, რომ ეს კიდევ გალამაზებაში ჯერ კიდევ, თუ მე გადარქმევა ამ რამ. თუ გადავა hello.php უბრალოდ მიესალმები ასე რომ შეამჩნია, ზედა მარცხენა, პროგრამის სახელი მართლაც ახლა მხოლოდ Hello. ახლა შემიძლია, რათა ის გამოიყურება, როგორც C პროგრამის, მიუხედავად იმისა, რომ დაწერილი PHP-- ან გულახდილად ნებისმიერი რაოდენობის სხვა ენებზე. ასე რომ, მარგინალური გაფართოება, არსებობს ფუნქციური სხვაობა. მაგრამ ეს მხოლოდ პატარა ცნობისმოყვარეობა ახლა, ასე რომ თქვენ შეგიძლიათ დაწეროთ პროგრამები ნებისმიერ ენაზე, და მომხმარებელი არ უნდა ვიცი და არც მაინტერესებს რა არის ის. ისე, მოდით შევხედოთ უფრო მყარი მაგალითად ახლა რომელიც მე whipped წინასწარ. ეს ეწოდება quote.php. და ეს არის ხელმისაწვდომი. და შენიშნავს, რომ ეს არის საკმაოდ short-- მაგრამ ეს ბრძანების პროგრამა, რომელიც აპირებს ეძებოთ საფონდო ფასები ჩემთვის, რომელიც რეალურად აპირებს უნდა იყოს გერმანე პრობლემა მითითებული შვიდი. ასე რომ, ვნახოთ, რასაც მე ვაკეთებ. ძალიან ზევით მაქვს ღია bracket კითხვის ნიშნის PHP. მაშინ მე მივიღე ეს ხაზი, რომლის მე ვარ მოითხოვს ფაილი სახელად functions.php-- ჩვენ ვაპირებთ, რომ ნახოთ მეტი ამ წელს ცოტა, მაგრამ ეს, როგორც C- ს მობილური მკვეთრი მოიცავს, სადაც გსურთ წასვლა მოიცავს სხვა ფაილი. PHP უწოდებს მოითხოვს, თუმცა ეს ასევე აქვს მოიცავს ფუნქცია. და აღმოჩნდება, რომ function.php არის უბრალოდ რაღაც დავწერე ადრე კლასის. მე ამას იგივე დირექტორიაში, რადგან მინდოდა ფაქტორი ზოგიერთი კოდი რომ ჩვენ დაგვჭირდება გამოიყენოს მის ფარგლებს გარეთ. იმავდროულად, თქვენ ალბათ შეუძლია დასკვნის რა ხდება აქ. ეს არის პატარა განსხვავდება, C, მაგრამ რას ვგულისხმობ უზრუნველყოს სათანადო გამოყენება? თარგმნეთ ეს უფრო ტექნიკურად. რა ვითარებაში ვარ სიგარეტის პროგრამის, ან არსებული? ჰო? აუდიტორია: როცა არ აქვს ორი ბრძანება ხაზი არგუმენტები. დავით Malan: როდესაც მე არ მაქვს ბრძანება ხაზი არგუმენტები. და მახსოვს, რომ ერთ-ერთი იმ არგუმენტები არის პროგრამის სახელი თავად. და მეორე იქნება კიდევ ერთი სიტყვა მე აკრიფოთ შემდეგ ზოლში. ასე რომ, ისევე C, ამ ჩემი გზა შემოწმების, საერთოდ მომხმარებლის ითანამშრომლონ და პროგრამის გაშვება, როგორც ვაპირებდი? ახლა, რაღაც ცოტა განსხვავებული ერთად, C პირველ რიგში, გვაქვს ეს დოლარის ნიშანი, და რას დოლარი მოაწეროს აღინიშნოს PHP? უბრალოდ ცვლადი. სწორედ all-- მხოლოდ ცვლადი მოჰყვა რასაც თქვენ გსურთ სინამდვილეში ეს. ყურადღება მიაქციეთ, რომ არსებობს რაღაც, დაკარგული ჩემი PHP პროგრამა, ისევე, როგორც ეს იყო დაკარგული ბოლო კვირას, წინააღმდეგ C, რაც? ტიპის, არამედ რაღაც სხვა. არსებობს რაღაც ფუნქცია ძირითად ფუნქციას. არ არის მთავარი ფუნქცია. თქვენ უბრალოდ წერა თქვენი კოდი გარეშე ფიქრი საკმაოდ თვითნებური კონვენციის დასახელებისგან ზოგიერთი default ფუნქცია ძირითად. ასე რომ, ARG C არის ნამდვილად გლობალური ცვლადი რომ თარჯიმანი რაც ხელმისაწვდომია ჩემთვის. ახლა, ეს არის საინტერესო. ასე გამოიყურება up პერსონალი. დოლარის ნიშანი საფონდო არის დარჩა, ეს ჩემი ცვლადი. მარჯვენა მხარეს, იქ, როგორც ჩანს, ფუნქცია PHP მოუწოდა ძიება, რომ მე გავლით ჩემი ბოლო command line არგუმენტი, რომელთა მიზანია, რასაც სიტყვა არის. ჩვენ დავინახავთ, თუ როგორ ეს მუშაობს ამ მომენტში. და მერე ბოლოს მე ანგარიშგების ფასი. მე დაბეჭდვის ერთი წილი ასეთი და ასეთი. და მახსოვს, ეს არის გზა PHP-- გზა PHP-- სადაც არ უნდა გავაკეთოთ დოლარის ნიშანი S აღარ. თქვენ შეგიძლიათ გამოიყენოთ curly აფრთხილებს და დანამატის რამდენიმე ცვლადი. თქვენ არ უნდა ფიქრი გამოყენებით printf იგივე გზით. და როგორც განზე, როდესაც თქვენ დააყენა ცვლადი შიგნით ორმაგი შეთავაზებები, როგორც ეს, თქვენ იყენებთ ლამაზი ტექნიკა უწოდებენ ცვლადი ინტერპოლაცია. ეს უბრალოდ ნიშნავს, შეაერთედ ცვლადი აქ. და როგორც განზე, ზოგიერთ თქვენგანს, ვინც მოვიდა სხვა პროგრამირების ფონზე, თქვენ შეიძლება არ გამოიყენოთ ერთჯერადი შეთავაზებები გარშემო სიმები უნდა გავაკეთოთ ეს. თქვენ უნდა გამოიყენოთ ორმაგი შეთავაზებები ცვლადი ინტერპოლაცია მუშაობა. წინააღმდეგ შემთხვევაში თქვენ ფაქტიურად ვხედავ იმ Curly braces. ასე რომ, ბოლოს, მოდით წავიდეთ წინ და აწარმოებს ამ. ნება მომეცით, ჩემი ტერმინალის ცოტა დიდია. ნება მომეცით წავიდეთ წინ და აწარმოებს შიგნით ჩემი პასუხის დირექტორია. [? CDsource?] [? AM?] [? პასუხის?] PHP პასუხის dot PHP, და მე ვაპირებ მოძებნოთ რამე ისევე როგორც GOOG, რომელიც მისი ticker სიმბოლო, და ერთი წილი მისი ახალი სახელი, ანბანი Inc, ღირს $ 717, როგორც დღეს. ყველა უფლება, თუ ჩვენ გვინდა, რომ აწარმოებს ეს კიდევ ერთხელ, ყველას, გაქვთ სხვა საფონდო Ticker მათ სურთ, რომ ეძებოთ? Microsoft მე ვფიქრობ, რომ ეს ერთი, MSFT-- $ 53. მე ვფიქრობ, რომ Yahoo რომ შესაძლებელია. და Facebook არის, რომ. ასე რომ, რა არის ამ პროგრამის აკეთებს? ჯადოსნური, როგორც ჩანს, ჩართული რომ საძიებელი ფუნქცია. მოდით მიიღოს სწრაფი შევხედოთ. გამოდის, რომ არ მოდის PHP, ეს არის functions.php. და ჩვენ არ გავლა ეს დიდი დეტალურად, მაგრამ შეამჩნია ოპერატიული სიტყვა აქ რომ ხაზი ექვსი functions.php-- მე სიტყვასიტყვით ამბობენ ფუნქცია. მე მიუთითოთ სახელი ჩემი ფუნქცია. მე მაშინ მიუთითოთ ნებისმიერი არგუმენტები, ან პარამეტრების, მე მინდა, რომ ფუნქცია, რათა take-- არ ტიპის. და მერე განახორციელოს იგი. და მე ტალღის ჩემი ხელი განხორციელების, მას შემდეგ, რაც საკმაოდ მოწინავე უფლება ახლა, მაგრამ ჩვენ ვხედავთ, რომ ეს კიდევ ერთხელ რეალურად ამ კვირაში პრობლემა მითითებული შვიდი. მაგრამ მე შემიძლია გაწმენდა ეს, ძალიან. მე ასევე შედის დღევანდელ კოდი ვერსია საქართველოს ციტირება, რომელსაც არ აქვს dot PHP ფაილი. იმის გამო, რაც, სავარაუდოდ, იმ ზედა პროგრამა მოუწოდა მხოლოდ ციტირებას? ეს ე.წ. shebang-- საკმაოდ cryptic incantation რომელიც ამბობს, რომ იპოვოს PHP და შემდეგ აწარმოებს ჩემი კოდი აქ. ყველა უფლება, ასე რომ მოაქვს გვაძლევს, სადაც ჩვენ შეჩერდით ბოლო დროს თუმცა რამდენიმე მოწინავე მაგალითები. ნებისმიერი კითხვები დღემდე შესახებ PHP და რასაც ჩვენ ვაკეთებთ? No-- ყველა უფლება. ჰო? აუდიტორია: Inside HTML ფაილი, ამის you-- [? თქვენ?] [? მხოლოდ მას?] a [INAUDIBLE] PHP ფაილი? დავით Malan: კარგი კითხვაა. ამ ვებ კონტექსტში, რომელიც ჩვენ ფაქტიურად შესახებ გადასვლას, თქვენ არ იყენებენ ე.წ. shebang ზედა, იმის გამო, რომ ვებ სერვერზე ხშირად პროგრამა მოუწოდა Apache და Microsoft IIS, Internet ინფორმაცია სერვერი, ან ნებისმიერი რაოდენობის სხვა სერვერზე პროგრამული უზრუნველყოფა, იცის, რომ როდესაც ის ხედავს წერტილი PHP ფაილი, რომ ეს უნდა აწარმოებს თარჯიმანი იგი. ეს არ შევხედოთ, რომ პირველი ხაზი. ასე რომ, ეს პირველი ხაზი შეასრულა მხოლოდ მაშინ, როდესაც თქვენ წერა command line პროგრამების რომელიც ჩვენ ამას არ გააკეთებს სუპერ ხშირად, მაგრამ ეს არის ჩვენი გზა შევსებას ჩვენი C მაგალითები, რომ ახლა ჩვენი PHP. მოდით მართლაც ხიდი ამ მსოფლიოში იმ ბრძანების მსოფლიოში ვებგვერდი ამით შემდეგ. ნება მომეცით წავიდეთ წინ და მიაპყროს მეტი აქ მხოლოდ ერთი წუთით. ასე რომ, თუ ჩვენ გვაქვს სერვერზე, ან უფრო სწორად, თუ ჩვენ გვაქვს, ჩემი ლეპტოპი აქ, რომელიც მე მიაპყროს მოსწონს ეს. და აქ ჩვენ გვაქვს ინტერნეტ გარკვეული ფორმით. და მაშინ მეტი აქ, ჩვენ გვაქვს სერვერზე წელს building-- ეს არის თუ როგორ ინტერნეტით works-- და აქ არის სერვერზე გარკვეული განათება იქნებ. რა რეალურად მიმდინარეობს ამ ორ კავშირები? ასე რომ, ამ შენობაში არის სერვერზე. ეს მხოლოდ კომპიუტერული რომ გაშვებული ზოგიერთ ოპერაციული system-- იქნებ უფასო პროგრამული მოუწოდა Apache, რომელიც CS50 IDE არის გაშვებული. ასე რომ თქვენ შეგიძლიათ რეალურად ვფიქრობ, რომ ამ შენობაში როგორც შენობა რომელიც CSt0 IDE ინახება. ეს არის ის, სადაც ყველას აქვს ანგარიშები, სადაც ყველას გაქვთ საკუთარი ვებ-სერვერი გაშვებული, ყველას აქვს საკუთარი უნიკალური მისამართები, როგორც ჩვენ განხილვა დაიწყო, და თქვენ უფრო მეტი პ მითითებული ექვსი. აი ჩემი ლეპტოპი სადღაც სხვაგან ინტერნეტში. ასე რომ, როდესაც მე ეწვევა URL, რომელიც ეკუთვნის ჩემთვის, რომ ინტერნეტის ტრაფიკი აპირებს მეტი სერვერზე, სერვერზე მიღების HTTP მოითხოვოს მოსწონს მისაღებად index.html და ეს პასუხით, რომ ვებ-გვერდზე. ასე რომ, ზოგადად პარადიგმა. ვინაიდან ყველაფერი აქამდე, დღეს, ყველაფერი ხდებოდა მხოლოდ ჩარჩოების ამ შენობაში. მე გამოყენებით ჩემი ლეპტოპი, მაგრამ მე უკავშირდება CS50 IDE, ასე რომ ყველა იმ პროგრამების მე გაშვებული შიგნით რომ სერვერზე, თავად. მაგრამ ახლა, მოდით დავიწყოთ მეორეული გამოყენება PHP დაწერა რამდენიმე ფაქტობრივი პროგრამები, ემსახურება up სერვერზე. და ამის გაკეთება, მე ვაპირებ წასვლა შევიდა მთელი bunch of მაგალითები რომ წარმოგიდგინოთ ეს იდეა აქ. ასე რომ, ეს არის ერთგვარი ლამაზი გზა აღწერს პროგრამირების პარადიგმა. და სინამდვილეში, როგორც თქვენ გასვლა CS50 ან მუშაობა საბოლოო პროექტები ან გარკვეული დაიცვას კლასის, თქვენ დაიწყოს ვხედავ, რომ world-- განსაკუთრებით რომელმაც გაიზარდა ერთად ენებს, როგორიცაა C რომ სუპერ დაბალი level-- გააცნობიეროს, რომ არსებობს უკეთესი გზები წერილობით პროგრამული უზრუნველყოფა. არსებობს გარკვეული ნიმუშების შეგიძლიათ დაიცვას, გარკვეული გზები ორგანიზება თქვენი ფაილი და გზები დასახელებისგან თქვენი ფუნქციები, ასე რომ, მოკლედ, მსოფლიოში დადგა მთელი bunch of ფორმა სახელი და გვარი გზები პროგრამირების. ეს არის მხოლოდ ტექნიკის თქვენ შეიძლება გამოიყენოთ. და ერთ-ერთი მათგანი ეწოდება MVC, მოდელის View Controller. და ეს არის, უბრალოდ, ახლა, ზედმეტად გართულებულია გზას ვამბობ, თუ როგორ უნდა წამოაყენონ გარეთ PHP დაფუძნებული ნახვა, ჩვენს შემთხვევაში. როგორ ორგანიზება თქვენი ფაილი, როგორ ორგანიზება თქვენი ლოგიკა, ისე, რომ ხდის ადვილია წერენ უფრო რთული საიტებზე? და მართლაც, ჩვენ სწრაფად იქ p-შვიდი. ასე რომ, მსოფლიოში MVC, თქვენ აპირებს რომ ჩვენი კოდი ზოგადად უნდა ხასიათდება როგორც მოდელის კოდი, ან კონტროლერი კოდი, ან ნახეთ კოდი. და მე ვაპირებ oversimplify შემდეგი რედაქციით კონტროლერი არის ტვინი თქვენი პროგრამა, ეს არის ის, სადაც ყველა საინტერესო ლოგიკა ხდება. ასე რომ, ყველაფერი ჩვენ უკვე წერა დღემდე კლასში, სახის როგორც კონტროლერი code-- ის მაკონტროლებელი თქვენი პროგრამა, თქვენი მარყუჟების, თქვენი პირობები, ფუნქციები და ცვლადები და ყველა რომ. ნახვა, ახლა ვაპირებთ, რომ იყოს პატარა უფრო აშკარა მსოფლიოში ვებგვერდი. ხედი არის ესთეტიკის თქვენი ნახვა. ეს არის ის, რაც მომხმარებლის sees-- სურათები, HTML, მაგიდები, HTML ტეგებს და ყველა რომ, ყველა ფუმფულა ესთეტიკური პერსონალი, რომ არ არის, რომ რთული წერენ, მაგრამ მხოლოდ ის, რაც თქვენ მომტანი, არის ე.წ. აზრით, ესთეტიკას. მოდელი და, საბოლოო ჯამში, აპირებს უნდა იყოს ბაზაში stuff-- რომელიც ჩვენ დავიწყებთ diving შევიდა ყველა უფრო მეტი ამ ოთხშაბათს. ასე რომ, კონტროლერი არის ლოგიკა, კალენდარი არის ესთეტიკური პერსონალი, და მოდელი იქნება, სადაც ჩვენ ვინახავთ ჩვენი ფაქტობრივი მონაცემები. მოდით შევხედოთ ამ უფრო კონკრეტულად შემდეგი მაგალითი. მე ვაპირებ წასვლას ჩემი დირექტორია აქ დღევანდელი წყაროს code-- რომელთაგან ყველა ხელმისაწვდომია ონლაინ რეჟიმში. და მე ვაპირებ წასვლას ვერსია ნულოვანი. და აქ არის მოდით ეძახით მობილური ნულოვანი CS50 ნახვა. აქ არის ბევრი აქ ყველა. ეს არის ძალიან მარტივი ვებ გვერდზე, რომ ალბათ გამოყენებით, რაც HTML tags-- მხოლოდ ვხვდები წარსულის მაგალითები? რა არის ეს? H1-- ალბათ, რომ დიდი თამამი სათაური, რომელიც logo ზევით, CS50. და რა არის თამაში? ჰო? აუდიტორია: უწესრიგო სია. დავით Malan: უწესრიგო list-- ასე UL აქვს და იქნებ რამდენიმე LI tags. და თუ არ მახსოვს ეს, პატიოსნად არ აქვს. ეს არის ფუმფულა ერთგვარი განხორციელების დეტალები HTML რომ თქვენ სწრაფად ეძებოთ და თქვენ უკან თქვენი გზა. ჩვენ ფოკუსირება უფრო პროგრამირების იდეები, რომლებიც juicier ცალი. მოდით უბრალოდ მიიღოს სწრაფი შევხედოთ HTML-- და მართლაც თუ გახსნა ხედი წყარო აქ, yup, სწორედ ის, რაც ხდება აქ. არსებობს UL აქვს. წყობილი შიგნით რომ არის LI tags. და მერე ითხოვა URL ფაქტობრივი სილაბუსი აქ. ხოლო შემდეგ lectures.php როგორც ჩანს, სხვა დინამიურად გენერირებული გვერდი რომ აპირებს, მოდით see-- ah, პირველი ორი კვირის განმავლობაში ლექცია. ასე რომ, კვირაში ნულოვანი და კვირაში ერთი, მოდით შევხედოთ ამას თუ მე გვერდი წყარო, ასევე სუპერ მარტივია. ეს წამყვანი ორ გვერდს მოუწოდა week0.php და week1.php. ასე რომ, ახლა განვიხილოთ, თუ რა ხდება. როდესაც მე დააწკაპუნეთ week0.php, ჩემი ლეპტოპი მიღების მოთხოვნის week0.php. სერვერზე, a.k.a., CS50 IDE, იღებს რომ ვირტუალურ პაკეტში. ის ხედავს გაგზავნა მინდა, კიდევ week0.php. მას შემდეგ წერით ფაილი, დაბრუნება ქვედა, მარცხენა right-- ფაილი მოუწოდა week0.php-- და იფურთხება შედეგებს. ასე რომ შიგნით ეს ფაილი, week0.php, უნდა იყოს კონტროლერი ლოგიკა, რომელიც გამოიმუშავებს ამ HTML, და ჩვენ მალე დავინახავთ, რომ. მაგრამ ახლა, ნება მომეცით დააჭირეთ კვირის ნულოვანი, და ახლა ჩვენ გვაქვს ოთხშაბათს და პარასკევს, და ახლა ჩვენ გვაქვს სლაიდები ნელა კვირაში ნულოვანი. თქვენ შეგიძლიათ გაიხსენოთ, ეს გზა უკან, როდესაც. ასე რომ, ყველა ამ ნახვა აკეთებს. ასე რომ, მოდით განიხილავს, თუ როგორ აკეთებს ამას. მე ვაპირებ დაბრუნდეს კოდის აქ, CS50 IDE, და მე ვაპირებ გახსენით index.php. ზედა ამ ფაილის არის რამოდენიმე კომენტარი. ხოლო შემდეგ შუა ფაილი, თურმე, არსებობს PHP კოდი განაწილებაზე. იმიტომ, რომ თუ თქვენ არ გაქვთ ნებისმიერ ღია bracket კითხვის ნიშნის PHP tags, თქვენ თავისუფლად მხოლოდ დააყენა HTML. იმის გამო, რომ ის, რაც PHP თარჯიმანი უნდა გავაკეთოთ, არის, როდესაც ის კითხულობს ამ ფაილი ზედა ქვედა, მარცხენა right-- ეს მხოლოდ ხსნის კოდი ის ხედავს შორის იმ კუთხე ფრჩხილებში კითხვის ნიშნის. და არაფერი რომ არ აღიარებს, როგორც PHP, ის მხოლოდ SpitS. და HTML არის შორის პერსონალის ეს იქნება მხოლოდ შამფურზე. ასე რომ, ეს ფაილი შეიძლება ჰქონდეს უკვე მოუწოდა index.html, მაგრამ მე დასახელებისგან ყველაფერი dot PHP როგორც სტეპინგზე ქვის. Lectures.php-- ასეთივე underwhelming, უბრალოდ ზოგიერთი HTML. Week0.php მსგავსად, მხოლოდ რამდენიმე HTML. მაგრამ ახლა მოდით დააყენა თქმის საინჟინრო ქუდი, და განიხილოს, თუ როგორ შეიძლება გაუმჯობესდეს ამ. ეს არ არის რთული ამის გაკეთება, მაგრამ მე სახის საქართველოს გადაიზარდა ასლი და პასტა. და სინამდვილეში, თუ მე კვირაში ორი, იცით, რა მე ალბათ აპირებს? მე ვაპირებ წასვლა week1.php, მე აპირებს ხაზი გავუსვა ყველაფერი. მე ვაპირებ კოპირება, ჩასვით ახალი ფაილი სახელად week2.php, tweak ზოგიერთი მისამართები, და ჩემი გზა. ასე რომ, ეფუძნება რა ჩვენ ჩანს C უკვე, ეს არ გრძნობს უფლება, იმედია. ასლი, პასტა იშვიათად უფლება გადაწყვეტა. ასე რომ, რა შეგვიძლია დავიწყოთ გავაკეთოთ, რათა გაუმჯობესდეს ეს? სად არიან შესაძლებლობები უკეთესი დიზაინი? იმ დროს, მივიღებ კვირაში რვა, ის აპირებს უნდა იყოს მართლაც შემაშფოთებელი თუ მინდა, რომ შეიცვალოს შრიფტის ყველა ერთი ჩემი გვერდებზე, ან, თუ მინდა, სტრუქტურის შეცვლა განლაგებას. ასე რომ, სადაც შესაძლებლობა უკეთესი დიზაინი? ისე, მოდით განიხილავს, თუ რა არის საერთო მთელი ეს ფაილი. აი კვირაში ერთი, აქ კვირაში ნულოვანი, აქ lectures.php, აქ არის index.php-- რა არის იგივე და რა არის განსხვავებული, უხეშად რომ ვთქვათ, თითოეულ ამ ფაილი? ჰო? აუდიტორია: [INAUDIBLE] დავით Malan: კარგი, კარგი. ასე რომ, ნიმუში, რა თქმა უნდა, რომლის დროსაც ყოველ ჯერზე მე აირჩიოს ლექცია I, მე უნდა მომტანი ძალიან ჰგავს ეძებს გვერდზე. ასე რომ, ალბათ, რომ შეიძლება ბერკეტები ის ფაქტი, რომ, რეალურად, ჩვენ შეგნებულად რიცხობრივი ინდექსირებული ჩვენი lectures-- თუ შემიძლია კიდევ უფრო მეტი სიტყვა თქვენი პასუხი. და რა არის ერთადერთი, მართლაც, რომ იცვლება შორის კვირაში one-- და ნება მომეცით გადახვევა ქვემოთ ისე, რომ ეს დაახლოებით იმავე მივალ სოფელში ასე რომ აქ არის კვირაში ნულოვანი, დაახლოებით ზედა. აქ არის კვირაში ერთი, კვირაში ნულოვანი, კვირაში ერთი, კვირაში ნულოვანი. OK, ფაქტიურად თუ იცით ყოველგვარი პროგრამის გარეშე, ეს არის, ისევე, როგორც ნიმუში შესატყვისი თამაში. რა არის განსხვავებული? ჰო? აუდიტორია: [INAUDIBLE] დავით Malan: კარგი, ასე სათაური იცვლება, ოდესმე ასე მსუბუქად. Zero აპირებს, რა თქმა უნდა, ერთ-ერთი. იგივე ხდება H1 აქვს. და ჩვენ არ საკმაოდ დანახვა ადვილად, იმის გამო, რომ მისამართები ცოტა ხანი. მაგრამ ის მისამართები იცვლება ოდნავ. მაგრამ რა არ იცვლება არის, გავბედავ ამბობენ, ყველაზე შინაარსი page-- HTML აქვს იგივე, ხელმძღვანელი იგივე, სათაური არის თითქმის იგივე, სხეულის იგივე, და თითქმის ყველაფერი არის იგივე გარდა ასეთი პატარა შესწორებები. ასე რომ, როგორ შეგვიძლია წავიდეთ შესახებ ფაქტორინგი ზოგიერთი ამას? ისე ნება მომეცით შესთავაზოს ზუსტად რომ მომდევნო ვერსია. ასე რომ, აქ ვერსიას ერთი, მე მაქვს ზუსტი იგივე ფაილი, პლუს რამდენიმე სხვები. აი index.php-- და თუნდაც თქვენ არასოდეს მინახავს PHP ადრე, რა ვარ მე, ალბათ, ამით უნდა გადაჭრას ეს პრობლემის საფუძველზე, რასაც თქვენ ხედავთ აქ? ჰო, ის არის, რომ მცირე ვალდებულება? არ არის? დიახ, გაგრძელდება. აუდიტორია: [INAUDIBLE] დავით Malan: Yep. აუდიტორია: [INAUDIBLE] დავით Malan: მე უნდა საუბარი უბრალოდ ცოტა ხმამაღალი. აუდიტორია: [INAUDIBLE] დავით Malan: კარგი, კარგი. და მე აზრით, ეს იყო ძნელია ამის მოსმენა you-- მაგრამ მე ვფიქრობ, თუ რას გულისხმობს ის არის, რომ იარლიყზე, რომლებიც საერთო ზევით, და tags რომ იყო გავრცელებული ბოლოში, უკვე factored, ან დაქვეითდება რა ფაილი? Header.php და footer.php-- და ჩვენ ვაპირებთ უნდა მიიღოს გარკვეული შესწორებები მიმართოს შეშფოთება თქვენ მხოლოდ იმის შესახებ, ნომრები იცვლება, for მაგალითად, თუ გავიგე სწორად. მაგრამ ეს, როგორც ჩანს, არსი ის. თუ არ იყო დიდი ოდენობით redundancy ზედა გვერდზე, და დიდი ოდენობით redundancy ბოლოში, მოდით ფაქტიურად მონიშნეთ და მოჭრილი, რომ შინაარსი out, ამას ცალკე ფაილი, ისევე, როგორც იდეა CSS, სადაც ჩვენ factored გარეთ ძალიან ჰგავს ესთეტიკის, დააყენა იგი ცალკე dot PHP ფაილი, გამოყენება მოითხოვს მექანიზმი, რომელიც ჰგავს C მკვეთრი include-- რომელიც არსებითად მოსწონს, რომ წავიდეს დაიბრუნოს შინაარსი header.php, და დააკოპირეთ და ჩასვით აქ. მაგრამ რა ეს იმას ნიშნავს, რომ ახლა index.php, მე იმ ორი ხაზი. In lectures.php, მეც ეს ორი ხაზი. In week0.php, მეც ეს ორი ხაზი. ახლა, თუ მინდა, რომ შეიცვალოს ტიტული ყველა ჩემი გვერდების, ან მე მინდა, რომ შეიცვალოს ძირითადი სტრუქტურა, შემიძლია შეცვლის ახლა მხოლოდ ერთ ადგილას, ან ორი places-- ზედა და ძირი, შესაბამისად. ამჟამად კოდი ამოსავალი უნდა ვეძებოთ ცოტა მეტი cryptic, არა? მაგრამ თუ თქვენ ფიქრობთ იმაზე, თუ რა გვერდი არის აკეთებს თუ მე მოთხოვნის week0.php, ისევე, როგორც, რომ ნახაზი აქ, როდესაც week0.php ითხოვს, რას ნიშნავს ეს? ფაქტიურად, ეს ფაილი მიერ მოთხოვნილი ბრაუზერში. ვებ სერვერზე a.k.a. CS50 ID-- grabs ეს ფაილი, week0.php, და ნათქვამია ეს ყველაზე ქვედა, მარცხნიდან მარჯვნივ. On line ერთი, იგი მაშინვე შეტაკებები ღია bracket კითხვის ნიშნის PHP, მოითხოვს header dot PHP, და ასე რა PHP ინტერპრეტატორი იმას, რომ ჩაშენებული ვებ სერვერზე, იმიტომ, რომ ჩვენ preconfigured ეს you-- ეს ავტომატურად მიდის შევიდა header.php ასლები, შინაარსი, პასტები მათ აქ. მაგრამ შემდეგ თარჯიმანი შეტაკებები კითხვის ნიშნის ახლო bracket, ასე რომ, ეს ყველაფერი კეთდება ფიქრი. ახლა ეს უბრალოდ ბრმად ფეხზე ხაზებს ორი შვიდი, იმიტომ, რომ ეს მხოლოდ ნედლეული HTML. იღებს გამოდიან რვა, და იმას, რომ იგივე ჯადოსნური ერთხელ გახსნის ფაილი, grabbing შინაარსი, და მოითხოვს მათ და pasting მათ სწორედ მაშინ და იქ. მაგრამ მე მხოლოდ მიანიშნა, რომ შეცდომა. ეს არის ნაწილობრივ უკან გადადგმული ნაბიჯი, იმიტომ, რომ თუ გადავხედავთ header.php, მე სახის მოჭრილი კუთხეში. რა ფუნქცია დავთმე, რათა მოიპოვოს ამ სადავო უკეთესი დიზაინი? ჰო? აუდიტორია: [INAUDIBLE] დავით Malan: ჰო, I ტიპის საქართველოს მოჭრილი nontrivial კუთხეში. თქვენ ასევე აღნიშნა, რომ ის, რაც შეცვლის სათაური იყო, ნომერი სათაური, და ნომერი H1. ასე რომ, ჩემი გამოსავალი იყო, OK, მოდით უბრალოდ გადარქმევა გვერდზე, და არ გაუმკლავდეთ, რომ პრობლემა არ არის. ასე რომ, ნაწილობრივ უკან გადადგმული ნაბიჯი, რა თქმა უნდა. მაგრამ რა არის აქ აღსანიშნავია ის არის, რომ რაც მე არ კეთდება სხვაგვარად factored ყველა საერთო პერსონალი. და footer.php, შეამჩნია მე factored ყველა რომ, თუმცა ნაკლებად, საერთო პერსონალი. ასე რომ, მე უნდა როგორმე ახლა შეძლებს მიიღოს ერთი წინ გადადგმული ნაბიჯია და დაფიქსირება რომ სათაური საკითხები. ასე რომ, მოდით გავაკეთოთ, რომ. ნება მომეცით წასვლას ჩემი მეორე ვერსია აქ, რაც, კიდევ ერთხელ, იგივე ფაილი გარდა ერთი ახალი გარდა. და ეს ცოტა მეტი verbose, მაგრამ ვნახოთ, თუ ჩვენ შეიძლება აჯავრებენ გარდა რა ხდება აქ. ასე რომ, ნაცვლად მოითხოვს header.php და footer.php, მე, როგორც ჩანს მხოლოდ მოითხოვს ერთი ფაილი მოუწოდა, რა თქმა უნდა, helpers.php. ნება მომეცით ითვალისწინებს ახლა, რა არის შიგნით helpers.php მხოლოდ რამოდენიმე ფუნქციები რომ დავწერე, ისევე როგორც ადრე. მაგრამ მე მას helpers.php. ახლა, როგორც ჩანს, ამ ხაზი სამი და 10, მე მოუწოდებდა ორი ფუნქცია გაწევა header, გაწევა ძირი. ისინი არ მოდის PHP, მე დავწერე იმ თავს. და მე ამით მათ helpers.php. ახლა, ჩვენ მხოლოდ ჩანს ეს სინტაქსი ერთხელ, და ეს იყო სუპერ მოკლე. მაგრამ ეს, როგორც ჩანს, არგუმენტი უნდა გაუწიოს header, ფუნქცია. რატომ მე ვიცი, რომ? ისე აქ არის ახლო paren, აქ არის ღია paren. და რა თქმა უნდა, ისევე, როგორც C, არაფერი შორის იმ ფრჩხილებში არის შეყვანის ან არგუმენტი ფუნქცია. რა არის მონაცემები ტიპის ეს არგუმენტი, რის საფუძველზე მე ხაზგასმით? რა გავაკეთოთ იმ კვადრატულ ფრჩხილებში მიუთითებს, რომელიც ეფუძნება გასულ კვირას? ჰო, ეს მასივი კონკრეტულად ასოციაციურ მასივში. და ეს სინტაქსი მართლაც ცოტა ხმაურიანი, მაგრამ ეს მხოლოდ გავლით ერთი გასაღები ღირებულება წყვილი. გასაღები არის, ციტირებით unquote სათაური, და ღირებულება არის CS50. თუ ჩვენ ეს გააკეთა C, შესაძლოა, ნაცვლად უფრო ჰგავს ეს, უბრალოდ ციტირებით unquote CS50-- ან რეალურად ეს იქნება curly braces, ან რამე მაგდაგვარს C, სადაც გასაღები ნულოვანი, და ღირებულება არის CS50. მაგრამ ერთხელ, PHP, მიუხედავად იმისა, რომ სინტაქსი არის, კიდევ ერთხელ, ცოტა უცნაური, ის საშუალებას გაძლევთ გაივლის სიტყვა ნაცვლად ნომრები გაერთიანდნენ გასაღებები ფასეულობებით. ასე რომ, რას ნიშნავს? თუ მე წასვლას helpers.php, მოდით შევხედოთ ამ ფუნქციას. renderHeader.php, საკმაოდ renderHeader არის ჩემი ფუნქცია, და ვიცი, რომ მე ვერ ვხედავ ფუნქცია სიტყვით აქ. ეს არის ახალი დან, C აშკარად იღებს არგუმენტი მოუწოდა მონაცემები მაგრამ მე ვერ უწოდა არაფერი, მაგრამ მე მას მონაცემები, უბრალოდ უნდა იყოს ცოტა clean-- და უბრალოდ ვხვდები, განსაკუთრებით თუ თქვენ პროგრამირდება ზოგიერთ სხვა მაღალ დონეზე ენის ადრე, რაღაც ზემოთ C, კონცეპტუალურად. რას უდრის ღია bracket კვადრატული ფრჩხილი ალბათ ნიშნავს? ან ეს რას შეიძლება ნიშნავდეს? ჩვენ არ უნახავს ამ C. ჰო? ცარიელი მასივი. კერძოდ, ეს იმას ნიშნავს, რომ თუ მომხმარებელი არ მოვუწოდებთ renderHeader არგუმენტი, მე ჯერ კიდევ აპირებს აქვს არგუმენტი ეწოდება მონაცემები, მაგრამ მისი საწყისი მნიშვნელობა იქნება ცარიელი მასივი. ასე რომ, ეს უბრალოდ ლამაზი მოხერხებულობით. მე არ უნდა დაწეროთ შესახებ, ან ამბობენ, რომ თქვენ გამოიყენება ჩემი ფუნქცია არასწორია. მე შემიძლია უბრალოდ მისცეს შესახებ ძირითადად მნიშვნელობა, თუ მე არ განსაკუთრებით ზრუნავენ. ახლა ეს ფუნქცია, მე ვარ აპირებს ტალღა ხელები. მაგრამ ეს ამონაწერი ფუნქცია საშუალებას გვაძლევს გაივლის ეს ცვლადები მონაცემები შევიდა header.php შემდეგ გზა. და ეს არის ბოლო ნაწილი, მე ვფიქრობ, რომ ხმაურიანი სინტაქსი. აქ არის ჩემი ახალი ვერსია საქართველოს header.php-- ეს ამბობდა, ფაქტიურად, ღია bracket სათაური CS50, ეს იყო და ეს. და იგივე რამ H1. ახლა კი, როგორც ჩანს, ამბობს რაღაც საკმაოდ ხმაურიანი. ნება მომეცით გაამარტივებს ამ ერთი წუთით ასეთია. ეს არის ის, რაც მე შეიცვალა ჩემი სათაური უნდა იყოს. თუმცა, ის მიღების პატარა მახინჯი მუდმივად ღია ფრჩხილებში PHP, და შემდეგ გამოიყენოთ ბეჭდვის ფუნქცია. გამოდის, რომ PHP აქვს სტენოგრამის ნოტაცია ეს, რომელიც მხოლოდ თანაბარი ნიშანი, რომელიც ტექნიკურად ფუნქცია მოუწოდა ეხმიანება ნაცვლად ბეჭდვა, მაგრამ ეს იგივე, ეფექტურად. ეს უბრალოდ უკეთესია. ეს არის მხოლოდ სინტაქსური შაქარი, თუ გნებავთ, , რაც ჩემი კოდი გამოიყურება ცოტა უკეთესი. მაგრამ აღმოჩნდება, და ჩვენ დავინახავთ, ეს კიდევ ერთხელ ადრე ხანგრძლივი, ჩვენ მოვუწოდებთ ამ annoyingly ხანგრძლივი ფუნქცია მოუწოდა HTML სპეციალური სიმბოლო in PHP, იმიტომ, რომ თურმე არსებობს გარკვეული საშუალებებით რომ მომხმარებლის შესაძლოა მოგვცეს, ან, რომ მომხმარებლებს შესაძლოა მოგვცეს, რომ აპირებს დაარღვიოს ჩვენს საიტზე. მაგრამ ჩვენ ვხედავთ, რომ შემდეგი კვირის JavaScript. მაგრამ ახლა, უბრალოდ ვიცი, რომ ეს ფაილი, headers.php, უბრალოდ იღებს სათაური, რომ გავიარე, ეს გააკეთოს დარწმუნებული ვარ, რომ ეს უსაფრთხო უნდა გაუკეთეს შევიდა ვებ გვერდი, და ეს ფეხზე ის, როგორც ჩემი სათაური და როგორც ჩემი H1. ასე რომ, თუ მე წასვლას ეს ვერსია არის, შეამჩნია, რომ ლექციები აქვს თავისი ტიტული უკან, კვირაში ნულოვანი აქვს თავისი ტიტული უკან, და მართლაც, HTML მე მომტანი იდენტურია, რაც ჩემი პირველი ვერსია was-- გარდა ჩემი whitespace, იმიტომ, რომ მე დაიწყო გაფორმებით ჩემი კოდი ცოტა განსხვავებულად. მაგრამ მე გენერირებული ყველა კოდი აინტერესებს. ასე რომ, ნება მომეცით პაუზის მხოლოდ ერთი წუთით და ვნახოთ თუ არსებობს რაიმე კითხვები ან დაბნეულობა მე შეიქმნა. ყველა უფლება, მოდით სიყვარულისთვის ცოტა რთული აქ იმისათვის, რომ ნახოთ, თუ არსებობს შესაძლებლობა გაუმჯობესებას. Helpers.php გვქონდა ეს ფუნქცია, სახელწოდებით renderFooter. და რა არის აღსანიშნავი, renderHeader და renderFooter? ისევ და ისევ, დღევანდელი მიზნებისათვის, ვიცი, რომ ამონაწერი ფუნქცია მხოლოდ ჩემი გზა გავლის არგუმენტები შევიდა header.php და footer.php. ბოდიში? აუდიტორია: [INAUDIBLE] დავით Malan: ჰო, მე მხოლოდ შეცვალა მოითხოვს ონლაინ. ასე რომ, ფაქტიურად, მე ჩადენილი ცოდვა გადაწერა და pasting, კიდევ ერთხელ. ეს არ არის დიდი რაოდენობით ხაზები, მაგრამ მოდის on-- თუ მე გადაწერა და pasting ყველაფერი უბრალოდ შეცვალოს ერთი პატარა სიტყვა, და ერთი პატარა სიტყვა, რომ ალან მიუთითებს გარეთ არის ძირი აქ, წინააღმდეგ header აქ. წინააღმდეგ შემთხვევაში, ყველაფერი არის იდენტურია, გარდა, რა თქმა უნდა, ფუნქცია სახელები. ასე რომ, რა შეიძლება გავაკეთოთ უკეთესი? ისე ნება მომეცით გახსენით ეს ვერსია აქ, რის helpers.php, რატომ არ უბრალოდ ცოტა ჭკვიანია შესახებ? დაწერეთ ოდნავ უფრო რთული კოდი, მაგრამ ეძახით გაწევა? ასე რომ, რა არ მინდა ფუნდამენტურად შეიცვალა? იგი იღებს არგუმენტი, ახლა ორი არგუმენტები, მონაცემები მაინც. და მერე რა არის პირველი სახელი, ალბათ, რომელიც გამოიყენება, რის საფუძველზე თქვენ კითხულობთ აქ? მაშინაც კი, თუ ზოგიერთი სინტაქსი ახალია. რა არის დოლარის ნიშანი თარგი? ბოდიში? აუდიტორია: Header ან ძირი. დავით Malan: Header ან ძირი. ასე რომ, როგორც ჩანს, გადავწყვიტე, რომ თუ ერთადერთი, რაც იცვლება არის ის, რაც თარგი მინდა რომ print-- და თარგი ვგულისხმობ ეს არის გეგმა კოდი, რომელიც მე მინდა გამომავალი, მაგრამ მინდა შეაერთედ ზოგიერთ ღირებულებებს, ასე რომ, თუ ეს მხოლოდ header ან ძირი, რატომ არ parameterize რომ და მოვუწოდებთ არგუმენტი დოლარის ნიშანი თარგი? და მაშინ ეს ხმაურიანი სინტაქსი საშუალებას ჩემთვის შექმნათ გზა ცვლადი აქ. ასე რომ, დოლარის ნიშანი ბილიკი არის ცვლადი. რას ნიშნავს ეს სინტაქსი ამის გაკეთება, თუ თქვენ იცნობს? ჰო? აუდიტორია: [INAUDIBLE] დავით Malan: ზუსტად. თუ თარგი, ციტირებით unquote, header, ან თუ თარგი, ციტირებით unquote, ძირი, რომ ხაზი იქ რომ მე ხაზგასმით, ხაზის რვა, უბრალოდ აღების, რომ სახელი, როგორც სათაურის, და ინტეგრირების იგი dot PHP. ასე რომ, ჩვენ არ გვაქვს ამ ოპერატორს C. ეს dot ოპერატორი საოცარი რამ PHP-- თუ თქვენ იცნობს JavaScript ან Java, თქვენ შეგიძლიათ გამოიყენოთ პლუს მოაწეროს უნდა გააკეთოს გაერთიანების. In C, ეს არის ტკივილი neck-- და მე ასე ვწუხვარ, P- ნაკრები ექვსი, თქვენ აპირებთ უნდა გავაკეთოთ ამას ეს არის ტკივილი კისრის to concatenate სიმები. რატომ? კარგად, იმიტომ, რომ, თუ თქვენ მოხვდით სიმებიანი, რომელიც ამ ხნის განმავლობაში, და სხვა სიმებიანი, რომელიც ამ ხნის განმავლობაში, თქვენ არ შეგიძლიათ უბრალოდ შეაერთედ მათ ერთად. რას ნაცვლად უნდა გავაკეთოთ C? ჰო? აუდიტორია: [INAUDIBLE] DAVID Malan: თქვენ უნდა malloc მეხსიერება, ან მასივი Stack. და რეალურად უნდა მიიღოს, რომ მასივი დიდი საკმარისი შეესაბამება ამ პლუს ეს, პლიუს წარმატებული ნულოვანი. მაშინ concatenate მათ ერთად გამოყენებით აურიეთ კატა ან ხელით ამისთვის მარყუჟის, ან ნებისმიერი რაოდენობის ტექნიკა. და ჩვენ გაჩვენებთ რამდენიმე P- ნაკრები ექვსი. ეს ტკივილი კისრის. და ეს მართლაც რას ვგულისხმობ შესახებ ეს წინააღმდეგ ამას, როგორიცაა C წინააღმდეგ PHP. თქვენ უბრალოდ ასე უფრო მეტი ფუნქციონალური უფასოდ, ასე რომ თქვენ შეგიძლიათ ფოკუსირება, იდეალურად, გართობა ნაწილი კოდირების, რომ პროექტის გსურთ გადაწყვიტოს, ვიდრე დაბალი დონის წვრილმანებში. ასე რომ, ეს უბრალოდ ქმნის header.php ან footer.php, რომლის საფუძველზეც ერთი მოვუწოდებ. და მართლაც, თუ მე შევიდა index.php, ცნობა ყველა რომ changed-- იმის ნაცვლად, მოუწოდებს გაწევა header ან გაწევა ძირი, მე მოუწოდებდა გაწევა, რასაც მოჰყვა ასახელებს თარგი, რომ მე მინდა ამის გაკეთება. და დაინახავთ, ეს, ძალიან, პრობლემა მითითებული შვიდი, რომლის დროსაც ჩვენ გაძლევთ საშუალებას გამოიყენოთ იგივე ფუნქცია, რათა კონა და მტევნების სხვადასხვა ვებ გვერდებზე. ასე რომ, ვიდრე არენაზე ძალიან ბევრად უფრო იმ details-- რომელშიც თქვენ ნახავთ კიდევ ერთხელ პრობლემა კომპლექტი seven-- მოდით შევხედოთ განთავსებულია ახლა დასაწყისში გამოსავალი უფრო საინტერესო პრობლემაა. ჯერჯერობით, არაფერი ჩვენ გაკეთდეს აქვს შენახული მონაცემები. ფაქტია, რომ მხოლოდ დრო ჩვენ ოდესმე გადაარჩინა რაღაც ჩვენ გავაკეთეთ ამ კლასში არის, როდესაც ჩვენ გვქონდა ძალიან მარტივი დემო awhile უკან, რომლითაც ჩვენ გამოიყენება ფაილი IO C, და მე ვფიქრობ, მე აკრეფილი ჩემი სახელით, და Hannah სახელი და მარია სახელი, ან იქნებ ენდი სახელი და მაშინ ჩვენ გადაარჩინა CSV ფაილი მძიმით გამოყოფილი მნიშვნელობები ფაილი. ჩვენ გამოიყენება fopen-- ვფიქრობ, ჩვენ გამოიყენება fprintf როგორც მახსოვს, და ჩვენ გადაარჩინა ფაილი. ახლა, რომ არის მარტივი ფორმა მონაცემთა ბაზაში. თუ გსურთ, რომ ვებ-გვერდი Frosh მესიჯები პროგრამა, რომლის პირველკურსელებთან შეგიძლიათ დარეგისტრირდეთ სპორტული, თქვენ იდეალურად მინდა, რომ რამე რომ მონაცემები. გასულ კვირას, ჩვენ არაფერი ერთად მონაცემები ჩვენ უბრალოდ განაცხადა, თქვენ დარეგისტრირებული, ნამდვილად არ. ან იქნებ მე ელექტრონული ფოსტით proctor, ეს იყო და ეს. მაგრამ ეს კარგი იქნება, თუ შემეძლო მისცეს, რომ proctor CSV ფაილი, როგორც Excel ფაილი. ან კიდევ უკეთესი, რომ ის კარგი იქნება, თუ შემეძლო დააყენოს იმ მომხმარებლების სახელები და dorm სახელები და ყველა რომ შევიდა მონაცემთა ბაზა, რომელიც უბრალოდ ცხოვრობს სამუდამოდ, სანამ მე აირჩიეთ წაშლა მონაცემები. მონაცემთა ბაზა, რომელიც საშუალებას აძლევს ჩემთვის შეკითხვის ინფორმაცია. მართლაც, რომ ის, რაც მონაცემთა ბაზა. ჩვენ წარმოგიდგინოთ დღეს, და მომავალ კვირას, ძალიან, ტექნოლოგია მოუწოდა SQL-- სტრუქტურირებული შეკითხვის ენა, რომელიც არის სხვა ენაზე. ეს არსებითად პროგრამირების ენის, მაგრამ ბაზაში. და მონაცემთა ბაზის ახლა, უბრალოდ ვფიქრობ, როგორც სუპერ ლამაზი ვერსია Microsoft Excel, ან Google ცხრილები, ან Apple ნომრები. ეს ზოგადად პროგრამა, რომელიც საშუალებას თქვენ შესანახად მთელი bunch of მონაცემები რიგები და სვეტები, საკმაოდ როგორც თქვენ შეიძლება Excel. მაგრამ რა კარგია, მით უმეტეს, თუ ჩვენ არ ვართ სუპერ იცნობს Excel, რა SQL საშუალებას გაძლევთ ამის გაკეთება არის შეკითხვაზე ეს ინფორმაცია წერილობით ხაზების კოდი სადაც თქვენ შეგიძლიათ, მაშინაც კი, თუ თქვენი მონაცემთა ბაზის აქვს მილიონი რიგები მას, ნახავთ რამ სუპერ სწრაფი. ფაქტობრივად, Excel განსაკუთრებით ცუდი დიდი მონაცემების კომპლექტი. და ფაქტობრივად, რამდენიმე წლის წინ, აღმოჩნდა Excel იქნებოდა მხოლოდ გაძლევთ საშუალებას შეინახოთ მდე 65.535 რიგები მონაცემები, რომელიც ჟღერს ბევრი, მაგრამ, დროს მე ვიყავი გრადის სტუდენტი, და მახსოვს tripping მეტი ეს იმიტომ, რომ მე მომტანი CSV ფაილი ჩემი კვლევის და მე სურდა ანალიზი მათ სწრაფად მხოლოდ გახსნას Excel. რა თქმა უნდა, ჩემი კომპიუტერი მხოლოდ შეეჯახა, იმიტომ, რომ მე უფრო მეტი, ვიდრე 65,000 რიგები. მაგრამ სად 65.535 მოდის? რა იყო Microsoft აკეთებს, სავარაუდოდ? თუ თქვენ კარგად თქვენი უფლებამოსილების ორი? ჰო, ისინი გამოყენებით 16-bit მნიშვნელობა წარმოადგენს რიგის ნომერი. და ორი 16 65,536-- მინუს ერთი, იმიტომ, რომ თუ ნულოვანი ინდექსი იმას ნიშნავს, რომ იყო ყველაზე სტრიქონების რაოდენობა შეიძლება ჰქონდეს. და ეს იყო მხოლოდ დიზაინი გადაწყვეტილება. აგროვებთ 16 ბიტი, ისინი შეზღუდული me 16,000 რიგები, ნაცვლად 4 მილიარდი, რომელიც მე შეეძლო იდეალურად. მაგრამ ახლა, ჩვენ ვაპირებთ გაცნობა მეტი ვებ კონტექსტში. და რა ლამაზი SQL არის, რომ მიუხედავად იმისა, რომ ეს არის საკმაოდ ძლიერი და საკმაოდ დახვეწილი, ეს მართლაც boils ქვემოთ ოთხი ძირითადი ოპერაციების, ოთხი ძირითადი ფუნქციები, თუ will-- აირჩიეთ, მიღება მონაცემებით, ეძებს მონაცემების; წაშლა და წაშლა მონაცემები; ჩადეთ დასძინა რიგები მონაცემთა ბაზაში; და განახლება. ასე რომ, თუ თქვენ ოდესმე გამოიყენება Google ცხრილები, Apple ნომრები, Microsoft Excel, თქვენ არ შესრულდება, სავარაუდოდ, ყველა ამ ოპერაციებს, როგორც ადამიანის მიერ მხოლოდ თქვენი კლავიატურის და mouse-- ჩასმა მონაცემები, თქვენი თვალები აირჩიეთ ან მოძებნოთ მონაცემები, ან განახლება მონაცემები, ან წაშლა მონაცემები. ასე რომ, რას ნიშნავს ეს? ისე, წინასწარ დაყენებული CS50 IDE არის პროგრამა მოუწოდა MySQL. ეს არის თავისუფალი, ღია მონაცემთა ბაზა, რომელიც არის სუპერ პოპულარული. Facebook, მაგალითად, იყენებს, რათა ამ დღეს, სხვა იარაღები, რომ ისინი იყენებენ. და ბევრი ძალიან პოპულარული საიტები გამოიყენოთ ის დიდი ნაწილი, რადგან ეს არის სწრაფი, და იმიტომ, რომ ეს არის თავისუფალი. მიუხედავად იმისა, რომ, რა თქმა უნდა ალტერნატივა არსებობს. და ზოგიერთ თქვენგანს შეიძლება ჩაერიოს ერთად ალტერნატიული საბოლოო პროექტები. ეს არის სკრინშოტი, იმავდროულად, საქართველოს ვებ დაფუძნებული ინსტრუმენტი მოუწოდა phpMyAdmin. ეს არის შემთხვევითი, რომ ამ ვებ დაფუძნებული ინსტრუმენტი ასევე ენაზე, PHP, მაგრამ ის, რაც იმას ნიშნავდა, რომ ამის გაკეთება არის მოგვცეს ვებ დაფუძნებული ინტერფეისი მონაცემთა ბაზაში. იმის გამო, MySQL, როგორც წესი, რაღაც, ისტორიულად, თქვენ რომ ურთიერთქმედება მხოლოდ ბრძანების. და ეს იქნება სუპერ შემაშფოთებელი და arcane აქვს აკრიფოთ ტექსტობრივი ბრძანებები შესარჩევად მონაცემები, ჩაწეროთ მონაცემები და წაშლა მონაცემები. ასე რომ ზოგიერთი ადამიანი ინტერნეტში დაწერა ვებ დაფუძნებული პროგრამა რომ უბრალოდ მოდით მართვა მონაცემები ჩვენს ბაზაში. ეს იგივეა, ორმაგი დაწკაპვით Excel, გაშვებული ვებ დაფუძნებული მობილური შესახებ. და რას ვაპირებთ გამოვიყენოთ ეს საბოლოო ჯამში, მომავალ კვირას, არ P- ნაკრები ექვსი, მაგრამ ავაშენოთ რამე მოუწოდა CS50 ფინანსთა, რომელიც აპირებს აქვს მონაცემთა ბაზა მომხმარებლებს, მომხმარებლის სახელები და პაროლები, დოლარის რაოდენობით, რომ ისინი აქვს მათი საბანკო ანგარიშები. ეს იქნება რაღაც თქვენ გამოვიყენოთ შესანახად სიმბოლოები და რაოდენობები აქციების, რომ მომხმარებლებს შეიძინა გამოყენებით ვირტუალური დოლარი, რომ თქვენ, რათა მათ. და ის აპირებს, საშუალებას აძლევს მომხმარებლებს უნდა დარეგისტრირდეთ საიტზე, ისე, რომ თუნდაც თქვენს მეგობრებს სრულყოფილი რომ თქვენი საიტი და რეალურად რეგისტრაცია, შესვლა და ითამაშოს გარშემო და ცდილობენ იპოვონ ბრალია თქვენი კოდი, და ცდილობენ იპოვონ შეცდომებს თქვენს საიტზე. და ისინი უბრალოდ დარეგისტრირდეთ დასძინა თავს, ეფექტურად, მეშვეობით კოდი წერთ თქვენს მონაცემთა ბაზაში. მაგალითად, ეს არის სწრაფი screenshot რა ბაზაში შეიძლება გამოიყურებოდეს. ეს იყო ერთ-ერთი გასული წლის solutions-- ეს არის, როგორც მინი Excel შეიტანოს, ინახება ჩვენს ბაზაში, ინახება ამ პროგრამული მოუწოდა MySQL. მარცხენა მხარეს, მე, როგორც ჩანს, ყოველ შესახებ უნიკალური ნომერი. მეორე სვეტში, მე მოცემული ყველას შესახებ name-- საკუთარი მათ შორის. და მარჯვენა მხარეს, მე მისცა მათ hash. ახლა ეს არის რეალურად დაგავიწყდათ, მაგრამ ეს არ არის ჩვეულებრივი ტექსტური დაგავიწყდათ. ეს არის დაშიფრული პაროლი, თუ თქვენ, ან hash დაგავიწყდათ. რომელიც ჩვენ დავბრუნდებით ადრე ხანგრძლივი. მაგრამ თუ თქვენ ოდესმე წაიკითხა სტატია, თუ როგორ თქვენი პაროლი რაღაც ბანკის ან ნახვა შეიძლება დათმობაზე წავიდა, ეს შეიძლება ზოგადად ნიშნავს, ერთი ორი რამ. ასე რომ, ეს მხოლოდ ნაწყვეტია ექვსი მომხმარებლებს. ყველა თქვენ ახლა შეგიძლიათ გაერკვნენ გარეთ მეშვეობით გარჩევაში ან cracking რა არის ჩვენი ექვსი ადამიანი პაროლები. მაგრამ თუ თქვენ ოდესმე მიღებული მზადყოფნაში ან ბოდიშის მოხდას კომპანია, ან ნახვა გამონათქვამი, უკაცრავად, ჰაკერი შეიჭრა ჩვენს ბაზაში, ალბათ უნდა შეცვალოს თქვენი დაგავიწყდათ, რა ნიშნავს ეს? ისე, ერთი, ნიშნავს იმას, რომ კომპანია უკვე უფრო მარაზმატულ, და უკვე შენახვის თქვენი პაროლი სვეტი, როგორც ეს, unencrypted. რაც იმას ნიშნავს, მოწინააღმდეგის, რომელიც მოიპარეს მონაცემთა ბაზა, ფაქტიურად იცის თქვენი სახელი და პაროლი. ეს არის ყველაზე უარესი სცენარი. და როგორც თქვენ ხედავთ P- ნაკრები შვიდი, ისე, რომ თავიდან ავიცილოთ. არ არსებობს არანაირი საბაბი, რომ ფორმა სისულელე დღევანდელ ინტერნეტ. Two-- და იპოვით რამდენიმე სტატია ჩვენების მიცემაზე იმ ფაქტს, რომ ეს ჯერ კიდევ ხდება, nonetheless-- ორი, იქნებ მოწინააღმდეგის მოიპარა მობილური ბაზაში. რომელიც ჯერ კიდევ სახის ცუდი, რადგან ახლა მათ იციან, რომ მე მაქვს ექვსი მომხმარებელს, მე ვიცი, რომ მომხმარებლის სახელი იმ ექვსი მომხმარებელს, და მე ვიცი, დაშიფრული ვერსიები, ან hashed ვერსიით, იმ ექვსი მომხმარებელთა პაროლები. მაგრამ ნებისმიერი, ვინც შეიძლება შესრულებულია [? Hacker 2?] სადაც თქვენ დაბზარული პაროლები, ან მიიღო შევხედოთ, რომ მობილური პრობლემა კომპლექტი, რატომ არის ის ჯერ კიდევ ცოტა შემაშფოთებელი იმ შემთხვევაში, თუ მოწინააღმდეგე იცის თქვენი hash პაროლები? აუდიტორია: იმიტომ, რომ ისინი შესვლის მთელი ლექსიკონი ქეშირების ფუნქცია. და თუ დაგავიწყდათ არის ლექსიკონი სიტყვა, [? მათ შეუძლიათ მხოლოდ match--?] დავით Malan: ზუსტად, მოწინააღმდეგე შეგიძლიათ უბრალოდ წერენ კოდი, ისევე როგორც ზოგიერთ თქვენგანს გააკეთა [? Hacker?] 2, რომლის დროსაც თქვენ გადაურბინოთ ყველა სიტყვა ლექსიკონი, ან ყველა შესაძლო კომბინაციები მეშვეობით Z და ერთი გზით ცხრა რომელიც ჟღერს, როგორც ბევრი, და ეს არის. მაგრამ კომპიუტერი, ეს არის საკმაოდ darn სწრაფად. და სინამდვილეში, ეს იყო წერტილი [? Hacker 2,?] იყო იმისათვის, პერსონალი, რომ სიტყვასიტყვით ასე გამოიყურება, და საპირისპირო ინჟინერი ის, რაც რეალურად იყო. ასე რომ, ჩვენ შევხედოთ, თუ როგორ შეუძლია შესანახად ეს უფრო ეფექტურად. გამოდის, საბედნიეროდ MySQL, არ ვაპირებთ, რომ მონაცემთა ტიპები. და ერთი სახალისო ნაწილები შესახებ მონაცემთა დიზაინი, იყოს პატიოსანი, რეალურად გადამწყვეტი თავს როგორ უნდა წარმოადგენს მონაცემები? თუ თქვენ წარმოადგენს ტელეფონის ნომერი, int, ისევე როგორც დიდი რაოდენობით, ან ხანგრძლივი? თუ თქვენ რეალურად ამის გაკეთება როგორც თანმიმდევრობა სიმბოლო? და არ შეიძლება იყოს ძალიან არასამთავრობო ტრივიალური ზემოქმედება. ფაქტობრივად, ერთ-ერთი ადრეული, გართობა გერმანე ისტორიები არის, როდესაც Mark Zuckerberg აშენებდა Facebook, თავდაპირველად დაიწერა, და მაინც ფართოდ არის დაწერილი PHP. და ერთ-ერთი ყველაზე დიდი გამოწვევები მათ წინაშე დილით იყო სკალირების. როდესაც ისინი ინახება და დასძინა, სკოლის შემდეგ სკოლა, სკოლა, ჩემს ცოდნას, ერთი ორიგინალური გადაწყვეტილებები არსებითად, დააკოპირეთ და ჩასვით ზოგიერთი მონაცემთა ბაზები და ზოგიერთი კოდი, ისე, რომ ჰარვარდის გაშვებული საკუთარი სერვერი, და MIT გაშვებული საკუთარი სერვერი. და ეს იყო, რატომ, რაღაც ვინც შეიძლება გავიხსენოთ, თქვენ ვერ მეგობრები სხვა ქსელები. თქვენ ალბათ არ გაქვთ მეგობრებს MIT და ჰარვარდის 10 ან იმდენად წლის წინ, მაგრამ თქვენ ვერ span ქსელები ამისთვის ნაწილობრივ რომ მიზეზი. და ერთ-ერთი ყველაზე დიდი გამოწვევები ჩანაწერები და კომპანიებს, როგორიცაა Facebook რეალურად გატარება ასობით და ათასობით და მილიონობით მოთხოვნების წამში. ასე რამ დავიწყებთ ვსაუბრობთ ამ კვირაში ნამდვილად იქნება გერმანე წერა კარგი პროგრამული უზრუნველყოფა და popularly წარმატებული ინსტრუმენტები, რომ შეუძლია უამრავი მომხმარებლებს. ასე რომ, ჩვენ ვსაუბრობთ რამ მოსწონს ინდექსირებას და ძებნას, არამედ ის, რომ იგი დღეს. ჩვენ ვნახავთ უფრო ოთხშაბათს. [მუსიკა - "Seinfeld" თემა] დავით Malan: თქვენ შეგიძლიათ მას, და სხვაობა ეს. და თქვენ არ უნდა გამყარებაში ზოგიერთი წინასწარ განსაზღვრული ოდენობით მეხსიერება. ისე, რა, რომ აპირებს ეწოდოს? დინამიკები 1: ისე, რა ხდება? დინამიკები 2: რას ნიშნავს? ის ლექციას. დავით Malan: ჩვენ შეგვიძლია გამოვიყენოთ ფუნქცია მოუწოდა malloc რომ memory-- დინამიკები 1: რატომ არ მისი იარაღი მოძრავი? დინამიკები 2: ისე that's-- თქვენ იცით, რომ ეს ნორმალურია. ეს, ისევე, მას აქვს მხოლოდ დიდი ძეხვი ჩამოკიდებული იქ. დინამიკები 1: ეს ნორმალურია? დინამიკები 2: ჰო, მე ვფიქრობ, რომ ჩვენ მხოლოდ ვივარაუდოთ, ის შემთხვევით შეცვალა მისი დეზოდორანტი superglue.