დავით Malan: ყველა უფლება. ეს არის CS50, და ეს არის ბოლომდე კვირაში ცხრა. ეს იყო whirlwind მეტი ბოლო რამდენიმე დღის განმავლობაში. და პრობლემა კომპლექტი შვიდი, თუ თქვენ მუხლზე ღრმად მას, ხვდები, რომ არსებობს საკმაოდ ცოტა ახალი, რომ ის არსებობს. მაგრამ ვნახოთ, შევძლებთ თუ არა ცალი ყველაფერი ერთად აქ მოკლედ მანამდე veering off კიდევ სხვა მიმართულებით და ხედავს სად სხვაგან ჩვენ შეგვიძლია წავიდეთ. ასე რომ, ჯერჯერობით, ჩვენ ვისაუბრეთ HTML. ჩვენ ვისაუბრეთ CSS. ჩვენ ვისაუბრეთ PHP. თქვენ დაიწყო განიცდიან SQL. დღეს, ჩვენ ვსაუბრობთ ცოტა დაახლოებით JavaScript. მაგრამ როგორ ყველა ამ განსხვავებული ენები ჯდება ერთად? ასე რომ, ჩვენ ვისაუბრეთ გასულ კვირას შესახებ ცნება მქონე სერვერზე. მოდით უბრალოდ მიაპყროს ამ მართკუთხედის როგორც ვებ სერვერზე აქ. და სერვერზე ემსახურება აუცილებლად ფაილი. და ზოგიერთი იმ ფაილი შეიძლება იყოს HTML ფაილი. ასე რომ ერთი რამ, რომ სერვერზე შეგიძლიათ შამფურზე შეიძლება იყოს ფაილი, ჩვენ უბრალოდ მიაპყროს მოსწონს ეს შემცველი ზოგიერთი HTML. ასე რომ layman-ის თვალსაზრისით, რა ამჯამად HTML მოგცემთ გავაკეთოთ? აუდიტორია: Page სახე ლამაზი. დავით Malan: OK, მიიღოს გვერდი გამოიყურება ლამაზი, მიუხედავად იმისა, რომ ვფიქრობ მე დაადასტურა რომ სხვაგვარად. ასე რომ HTML არ დავუშვებთ თქვენ წამოაყენონ გარეთ გვერდები სტრუქტურულად და ის საშუალებას გაძლევთ სახის ესთეტიურად აღსანიშნავად გვერდზე, აღსანიშნავად სტატიკური შიგთავსი, ასე რომ თქვენ ამის შემდეგ შეგიძლიათ ნახოთ ეს ბრაუზერში. მაგრამ ეს გასაღები. ეს სტატიკური შიგთავსი. წერთ იგი, თქვენ გადარჩენა მას, და მაშინ მოვახდენთ მას. და სერვერზე შემდეგ ემსახურება ეს მდე თქვენი სია. მაგრამ ჩვენ stylize რამ გამოყენებით სხვადასხვა ენის საერთოდ. ჩვენ დავიწყეთ გამოყენება სტილის ატრიბუტის გარკვეული tags. და სტილი ატრიბუტი მოდით მითითებული რამ, როგორიცაა შრიფტის ზომა და ფერი. და თქვენ ალბათ დაიწყო აღმოჩენა, ან თქვენ მალე საბოლოო პროექტები პოტენციურად, მაგრამ სხვა თვისებები, რომ თქვენ შეგიძლიათ გამოიყენოთ CSS. და ასე layman-ის თვალსაზრისით, რა მართლაც, მაშინ ჯერ CSS გავაკეთოთ? ეს არის მხოლოდ მაგალითები მისი. რას მოგცემთ გავაკეთოთ, რომ HTML არ ჩანს რა ჩვენ ვნახეთ დღემდე? აუდიტორია: განსაზღვრეთ სტილის მიერ თავს. დავით Malan: განსაზღვრეთ სტილი თავს. ასე განსაზღვრავს რამ, როგორიცაა კლასები, როგორც თქვენ შეიძლება არ შეექმნა, ან ცალსახად იდენტიფიცირება კვანძების დოკუმენტი ისე, რომ თქვენ შეგიძლიათ stylize მათ. მაგრამ უფრო კონკრეტულად კი, მინდა ვთქვა, რომ CSS მართლაც გაძლევთ მიიღოს რამ ბოლო mile და გაძლევთ საშუალებას უფრო კერძოდ ესთეტიკის, ხოლო HTML უმეტესწილად საშუალებას თქვენ სტრუქტურირებაზე თქვენი გვერდებზე. და მიუხედავად იმისა, რომ არსებობს რამდენიმე ნაგულისხმების, ისევე როგორც ვნახეთ ჭდის სასაქონლო tag, რომელიც უხეშად რომ ვთქვათ გააკეთა რამ დიდი და თამამი. რომ საკმაოდ generic განმარტება საქართველოს tag - დიდი და თამამი. რა შრიფტის ზომა არის, რომ? რა ფერის არის, რომ? როგორ თამამი არის, რომ? და CSS გაძლევთ უფრო წვრილად სრულყოფილი რამ, როგორიცაა, რომ. ისევე როგორც განლაგებას, როგორც ზოგიერთი თქვენ მინახავს. და გულწრფელად, CSS ცოტა საქართველოს ბინძურ ენაზე. ეს ძალიან ძლიერი, რომ შეგიძლიათ ფაქტიურად ნებისმიერი ნახვა, რომ თქვენ ჩანს ინტერნეტში დღეს, მაგრამ ეს ერთგვარი ტკივილი კისრის. და ზოგიერთი თქვენ არ banged თქვენი უფროსი წინააღმდეგ კედლები უკვე მხოლოდ უნდა გააკეთოს რაღაც სულელური, როგორიცაა ცენტრში მენიუს პრობლემა კომპლექტი შვიდი თუ თქვენ შემოსული იმ ეტაპზე უკვე. მაგრამ ვაცნობიერებთ, იმ რამ კიდევ უფრო ადვილია, დროთა განმავლობაში. თქვენ დაიწყოს შენიშნავს შაბლონებს. და ისევ, Google იქნება თქვენი მეგობარი სხვადასხვა გზა, რომელიც შეგიძლიათ გადაჭრის ასეთი პრობლემები. და მე ვერ გაბედავს ვთქვა, CSS და HTML მეტი ზოგადად, თქვენ შეგიძლიათ პრობლემების მრავალი სხვა გზა, რაც შესაძლოა ძალიან იყოს ზუსტი, ვიდრე თქვენ შეიძლება რაღაც C, მაშინაც კი, ახლა PHP ან JavaScript. არსებობს მხოლოდ სხვადასხვა გზები, რათა წამოაყენონ ნივთების. მაგრამ ეს დაიწყო ბინძურ, ჩვენ განაცხადა. უბრალოდ სახის commingling თქვენი HTML და თქვენი CSS სტილი ატრიბუტი იყო ცოტა sloppy. და ამიტომ ჩვენ ნაცვლად თქმით, ერთგვარი აბსტრაქტულად ვთქვათ, რომ თქვენ უნდა მინიმუმ დაიწყოს ფაქტორი თქვენი CSS ალბათ. არ არის თქვენი სტილი ანიჭებს, მაგრამ მაინც გამოყენება სტილის tag შიგნით რა ნაწილი ვებ გვერდი? აუდიტორია: Head. დავით Malan: In ხელმძღვანელი. აქამდე ჩვენ მხოლოდ ტიტული up არსებობს, მაგრამ ასევე შეგიძლიათ დაამატოთ სტილი tag, და თქვენ შეგიძლიათ განათავსოთ თქვენი CSS უხეშად საუბარი მიმართ ზევით გვერდზე. მაგრამ შემდეგ ავიღეთ რამ ერთი ნაბიჯი შემდგომი და ჩვენ factored, რომ უფრო ცალკე ფაილი. და ა.შ. ეს ორი ფაილი იყო რატომღაც ახლა უკავშირდება. და მართლაც, ეს იყო tag გააკეთა, რომ. და რა იყო ერთი ძირითადი მოტივაცია ფაქტორინგი ჩვენი CSS უფრო მეტად? აუდიტორია: კოდის ხელმეორედ გამოყენების. დავით Malan: კოდის ხელმეორედ გამოყენების. არა? თქვენ შეიძლება არ ჩანს p განხორციელება შვიდი უკვე რომ ბევრი გვერდები, შევიძენ გვერდზე, გაყიდვა გვერდზე, პორტფელის გვერდი, ალბათ სტრუქტურა გარკვეულწილად ანალოგიურად. არსებობს CS50 ფინანსთა logo ზედა თუ თქვენ გადაწყვიტა შეცვლის. აქ არის ძირი ზე ბოლოში pages. და CSS საშუალებას გაძლევთ მაშინ ფაქტორი ის იგი ცალკე ფაილის ასე რომ თუ თქვენ გსურთ შეცვალოთ რაიმე გლობალურად მთელი თქვენი მთელი საიტი, შეგიძლიათ ნამდვილად მხოლოდ შეცვლის ერთ ადგილას. მაგრამ არის ფასი იხდით პოტენციურად რომელმაც factored გარეთ CSS ჩემი HTML ფაილი ცალკე ფაილის მითითება ერთად tag, რომელიც ჩვენ ვნახეთ ორშაბათს. რა შეიძლება downside იყოს ეს? ფიქრი უკან კვირის წინ, როდესაც ჩვენ ვსაუბრობთ HTTP და TCP / IP და როგორ ინტერნეტ მუშაობს. რაღაც მეტი აქ? აუდიტორია: იგი იღებს უფრო მეტი დრო. დავით Malan: იგი იღებს უფრო მეტი დრო. რატომ? აუდიტორია: [inaudible]. დავით Malan: ჰო. ასე რომ, ეს სავარაუდოდ იღებს უფრო მეტი დრო. იმის გამო, რომ ერთი, სოციალურ მეცნიერებათა ცენტრის აშკარად არ იგივე ფაილი. ასე რომ, ახლა თქვენ უნდა გააკეთოთ არ ერთი, არამედ ორი მოითხოვს. და თითოეული იმ მოითხოვს როგორც დავინახეთ Chrome წელს ე.წ. ინსპექტორი და ჩვენ შევხედე ქსელის tab, თითოეულ იმ ფაილებს საჭიროებს ერთ HTTP თხოვნა, რომელიც ჩვენ ვნახეთ იღებს ზოგიერთი დროის. ახლა, შესაძლოა, ეს არ არის ბევრი. იქნებ ეს მხოლოდ 20 მილიწამებში. იქნებ ეს 200 მილიწამებში. მაგრამ ვიფიქროთ გვერდზე ხმა, ან CNN ან Google, რომლებიც ბევრად აღემატება მაგალითები ჩვენ უყურებდნენ დღემდე. იმ გვერდებზე შესაძლოა, რამდენიმე ათეული ფაილი რომელთაგან თითოეული შეიძლება მოითხოვს ჩამოტვირთვა ფაილი. ასე რამ შეიძლება პოტენციურად დაიწყოს შეანელებს. მით უმეტეს, ამ დღეებში, როდესაც ჩვენ ყველა აქვს მობილური ტელეფონების ჩვენი ჯიბეებიდან და ნელი ინტერნეტ კავშირები, რომელმაც უნდა დაველოდოთ რამდენიმე მილიწამში, რამდენიმე მეტი მილიწამებში დამატებითი ფაილი შეიძლება რეალურად იყოს ნელი. შეყოვნება არის სიტყვა, რომელიც აღწერს სახის ელოდება, რომ თქვენ გაქვთ, რომ თქვენ განიცდიან, როდესაც ელოდებიან ზოგიერთი მათგანი. მაგრამ არსებობს თავდაყირა. ასე რომ, ეს არ არის ყველა სახის - ის რეალურად არის ცოტა seesaw აქ. Downside არის, მაგრამ რა ბრაუზერები შეუძლია გააკეთოს თუ ისინი ჭკვიანი, რათა თავიდან ავიცილოთ მქონე მოითხოვოს იგივე styles.css ფაილი ერთხელ შეიძლება რა? Cache იგი. ასე რომ, ქეშირების - C--C-H-E - ზოგადად იმას ნიშნავს, აქ მხოლოდ გადარჩენის შეიტანოს თქვენს მიერ მოთხოვნილი პირველად და მაშინ სანახავად cache მას. შემოწმება თქვენ სახის შენახვის კონტეინერი, და თუ თქვენ უკვე გაქვთ ასლი styles.css, თუნდაც რაიმე სხვა გვერდი P-კომპლექტი, ან რაიმე ნახვა, სთხოვს კიდევ ერთხელ, მხოლოდ მისცეს შესახებ, რომ იგივე კეშ. არ გადაიტვირთოთ თხოვნის იგი. Downside, თუმცა, როგორც ზოგიერთი თქვენგანი არ იმყოფებოდა დასრულდა P-ნაკრები. თუ ცვლილება სერვერზე და თქვენ დაბრუნდეს ბრაუზერი და თქვენ განაახლეთ, ზოგჯერ ბრაუზერს არ თქვენ სასარგებლოდ და არ ადარდებს ხელახალი ჩამოტვირთვის თქვენი styles.css ფაილი იმიტომ, რომ, ერთი, რა შანსები რომ ეს სტილი, რომ Facebook იყენებს ვაპირებთ, რომ შეცვალოს საათში საათში ან ყოველდღიურად? ეს არის საკმაოდ დაბალი. ისინი შეიძლება შეიცვალოს დროთა განმავლობაში, მაგრამ არ by წუთი ან საათი. ასე რომ შეასრულა, მხოლოდ FYI, როდესაც აკეთებს ვებგვერდი განვითარება, ხშირად გეჭიროთ გადაიტანოს გასაღები მაგალითად და შემდეგ დააჭირეთ განაახლეთ ბრაუზერში და რომელიც როგორც წესი, გითხრათ ბრაუზერის ჩატვირთვა ყველაფერი, მაშინაც კი, თუ თქვენ უკვე გაქვთ ის ქეში. ასე რომ, კიდევ ერთხელ, upsides და downsides, თუმცა ყველა მათგანი საბოლოო ჯამში, დიზაინი გადაწყვეტილებებს. ახლა, ჩვენ ეს არ არის მხოლოდ დასრულდება ამბავი აქ. თუ მე ახლა უკან და უკან და უკან და უკან დავიწყეთ დანერგვა არა მხოლოდ HTML, მაგრამ PHP. ასე რომ, layman პირობები, რაც ამჯამად PHP მოდით გავაკეთოთ? აუდიტორია: [inaudible]. დავით Malan: რა არის ეს? აუდიტორია: ფორუმის ლოგიკა შევიდა კოდი. დავით Malan: ჰო, დანერგვა ლოგიკა თქვენს კოდი. ასე რომ, ეს ნამდვილი პროგრამირების ენა ერთად მარყუჟების და ცვლადები და ფუნქციები და პირობები, და ყველა რამ ჩვენ იყენებს გზა უკან როდესაც მას შემდეგ, ნულიდან. და PHP, ჩვენ ვნახეთ, გამოდგება ან ბრძანებათა ზოლს - ეს არ უნდა ჰქონდეს რაიმე ერთად ვებგვერდი, მიუხედავად იმისა, რომ ეს მართლაც მისი წარმოშობა და რა ტენდენცია კარგი იქნება ერთი და ხელს - მაგრამ თქვენ შეგიძლიათ გამოიყენოთ PHP მხოლოდ ბუნებით იმ ფაქტს, რომ მას აქვს ბეჭდური () ფუნქცია და printf () ფუნქცია, ან echo () ფუნქცია. აქ არის bunches გზა თქვენ შეგიძლიათ ბეჭდვა ტექსტის PHP. ამიტომ, თქვენ შეგიძლიათ გამოიყენოთ ეს პროგრამირების ენის დაბეჭდავს ზუსტად რაც ჩვენ საუბრობდნენ ადრე. შეგიძლიათ დინამიურად წარმოქმნის თქვენი HTML. შესაძლოა, არა, ყოველივე ეს. იქნებ მძიმე კოდი რამ, ისევე როგორც თავით და ძირი და ლოგო, და თქვენი სტილი ფურცლები, და ყველა ეს საკითხი. მაგრამ რაღაც P-ნაკრები შვიდი, სადაც თქვენ მანიპულირება აქციებისა და აჩვენებს მომხმარებლის პორტფელი, რომელიც აპირებს დინამიურად შეიცვლება, შეიძლება აუცილებლად გამოიყენებს PHP და ლოგიკა იძლევა თქვენ, როგორც პროგრამირების ენა გამომავალი დინამიურად subsets გვერდის თავზე. ასე რომ, როდესაც თქვენ საუბრობთ დინამიური საიტები, ან ვებ პროგრამირების ეს არის ის, თქვენ ნამდვილად ვსაუბრობთ. გამოყენება ენის მსგავსად PHP, ან რამ წ Python, ან Ruby, ან ჯავაში, ან ჯერ კიდევ სხვა ენებზე, რათა შეკითხვის მონაცემთა ბაზა ხშირად, ან სხვა სერვერზე და შემდეგ დინამიურად Spit out HTML. ახლა საბოლოო ჯამში, როგორც განზე არის რომ HTML ყველაზე საიტები, მათ შორის თქვენი P-ნაკრები შვიდი, ალბათ იქნება დიდი ხმაური, თუ გადავხედავთ წყარო კოდის ბრაუზერში. ეს არ არის დიდი გარიგება. ამ ეტაპზე, როცა ჩვენ აინტერესებს სტილი, ჩვენ აღელვებს პერსონალი, რომ წერთ. ჩვენ არ აინტერესებს პერსონალი რომ ის, რაც თქვენი კოდი შედეგები. ასე რომ არ აღელვებს indentation აქ თუ ეს PHP, რომ რეალურად outputting პერსონალი. ყოველივე ამის შემდეგ, ბრაუზერი არ მაინტერესებს, და ადამიანის არ იქნება ეძებს წყაროსთან მაინც. ჩვენ თანამშრომლებს, მაგალითად, რომ უნდა ეძებს თქვენს PHP. ნება მომეცით, რათა სწრაფი მაგალითად ახლა რატომ სხვაგან ეს შეიძლება იყოს სასარგებლო. ასე რომ, სიმართლე გითხრათ, მე არ მახსოვს ბოლო დროს მე C გადაწყვიტოს პრობლემა რეალურ სამყაროში. ეს იყო ალბათ საშუალო სკოლაში, როდესაც მჭირდებოდა გამოიყენოს ენა, იყო საკმაოდ დაბალი დონე და მომცა შანსი, რომ რამე ძალიან მაღალი ასრულებენ ნამდვილად შენახვა როგორც ბევრი CPU ციკლები, როგორც შემეძლო, დიდი ნაწილი იმიტომ, რომ მე გამოყენებით უზარმაზარი მონაცემები კომპლექტი, და ყველა CPU ციკლი ჩაითვალა. და გულწრფელად, კი რამ, როგორიცაა ტელეფონები ამ დღეებში და სხვა მოწყობილობების სადაც თქვენ არ საკმაოდ აქვს იმდენი მეხსიერების და თქვენ არ საკმაოდ აქვს, როგორც რამდენად CPU, გამოყენებით სწრაფად ენებზე კვლავ მიმართავს. მაგრამ რეალურ ცხოვრებაში, როდესაც თქვენ უბრალოდ მინდა სახიფათოა ზოგიერთი პროგრამა ერთად ანალიზი ზოგიერთი მონაცემების, ან თქვენ შეგროვებული მთელი bunch of რეგისტრაციის ზოგიერთი სტუდენტი ჯგუფი და გსურთ ძალიან სწრაფად ავტომატიზაცია გაგზავნის წერილებს სათითაოდ ყველა იმ დარეგისტრირებული, თქვენ აპირებს მიღწევა უმაღლესი დონის ენა ვიდრე C ასე ვთქვათ. რაღაც PHP ან Python ან Ruby, ან ნახევარი ათეული სხვები რომ არსებობს ამ დღეებში. მაგრამ ეს სამი ალბათ ყველაზე trendy ახლავე. და რა ეს იმას ნიშნავს, რომ შეგიძლიათ გახსნათ მდე ტექსტური რედაქტორი, როგორიცაა gedit ან ყველაზე არაფერი და შემდეგ დავიწყო წერა კოდი გარეშე ფიქრი შესახებ შედგენის გარეშე ნამდვილად ფიქრი მეხსიერების მართვა, გათვალისწინებით იმისა, რომ პატარა sloppiness საბოლოოდ დავბრუნდებით bite თქვენ თუ მონაცემები კომპლექტი იღებს დიდი ან პრობლემა იღებს დიდია. მაგრამ რას ნიშნავს ჩვენთვის შემდეგ. ნება მომეცით წავიდეთ წინ და აწარმოებს speller ეხლა პრობლემა კომპლექტი ექვსი. ასე რომ, ეს არის ჩემი trie დაფუძნებული განხორციელება რომ მე გამოიყენება დიდი საბჭოს, სადაც მე შესრულდა არც ისე კარგად. ჩვენ დავბრუნდებით ერთი კვირის განმავლობაში და დავუბრუნდეთ ვინც არ დასრულდება up atop დიდი საბჭო ჩვენი ბოლო ლექცია. მაგრამ ახლა, ნება მომეცით წავიდეთ წინ და მხოლოდ აწარმოებს ჩემი გადაწყვეტა ტექსტი, და ჩვენ ყველაფერს გავაკეთებთ მეფე ჯეიმს ბიბლია, და აქ ჩვენ მივდივართ. ასე რომ, ეს არის ყველა, სავარაუდოდ, misspelled სიტყვა გარეთ მეფე ჯეიმს ბიბლია. და ჩემი განხორციელების აიღო ნახევარი მეორე შეადგენს. ასე რომ, არ არის ძალიან ცუდი ამ კერძოდ კომპიუტერში. მაგრამ ვფიქრობ, თუ რამდენად კოდი მქონდა დაწერა. ვფიქრობ, რამდენი კოდი გქონდათ დაწერა. ვფიქრობ, რამდენი საათის განმავლობაში თქვენ გაატარა D-დარბაზში, თქვენი dorm ან იქ, სადაც რეალურად კოდირების, რომ გამოსავალი. ისე, თუ მე რეალურად უფრო მაღალი დონის ენა, როგორიცაა PHP, მხედველობაში რა შემიძლია აქ. პირველ რიგში, ვფიქრობ, რომ ეს არის ის ნაცვლად თქვენი განაწილების კოდი. ეს არის ფაილი სახელად speller. ეს შესაძლებელია, როგორც ნაწილი დღეს განაწილების კოდი. და მე ვაპირებ ტალღის ჩემი მხრივ ყველაზე დეტალები, მაგრამ ეს არის, ფაქტობრივად, საინტერესო მაგალითია, თუ როგორ თქვენ შეიძლება port ენა ისევე როგორც C ზე PHP. მე სიტყვასიტყვით გახსნა ტექსტის ფანჯრები, ერთ ჩემს C მობილური speller.c, და მე უბრალოდ დაიწყო თარგმნიან ეს ჩემი უხელმძღვანელებს PHP და აკრეფით ის გამოყენებით უახლოესი ექვივალენტი ფუნქციები. ასე რომ, ზოგიერთი რამ განსხვავებულია. ჩვენ ვნახეთ ბოლო დროს, რომ PHP არ გამოიყენებს არის საკმაოდ იგივე გზით. იგი იყენებს მოითხოვს, როგორც წესი, თუმცა, არის არ არსებობს. განსაზღვრეთ არის ცოტა განსხვავებული # განსაზღვრავს C, მაგრამ ეს როგორ ჩვენ მუდმივად. $ Argc თურმე არსებობს PHP, ასე რომ, ჩვენ ვხედავთ, რომ ადრე. ეს არის მხოლოდ ცვლადები, ყველა რომელიც იწყება დოლარის ნიშნები. შეგახსენებთ, რომ ეს არის მხოლოდ bunch მცურავი რაოდენობა. ისე დიდი ხნის ამბავი მოკლედ, თქვენ მივესალმებით Flip მეშვეობით ამ შემთხვევაში საინტერესოა, რომ ეს არის თითქმის ხაზი-for-line კონვერტაციის C მობილური speller.c შევიდა PHP. და თქვენ შეეძლო ამის გაკეთება კიდევ ერთხელ ნახევარი ათეული სხვა ენებზე. მაგრამ რა არის საინტერესო ის არის, ამ. ან რა გულწრფელად საშინელება ეს. ნება მომეცით წავიდეთ წინ და ტიპის შესახებ dictionary.php და აცხადებს, რომ მე ვარ ვაპირებ წავიდეთ წინ და ხელახლა განხორციელება პრობლემა კომპლექტი ექვსი აქ. მოდით შესთავაზოს პირველი, რომ ამ ფაილი, რომელიც განხორციელდება PHP, ნება მომეცით გახსნა ჩემი tags იგრძნობა. ნება მომეცით მისცეს თავს გლობალურ ცვლადი $ ზომა იღებს ნულოვანი. და მე ვაპირებ მისცეს თავს hash მაგიდასთან. მე გამოიყენოთ hash table ამ რამ. როგორ შემიძლია განვაცხადო, hash მაგიდაზე PHP? შესრულებულია. OK. ასე რომ ღია bracket ახლო bracket წარმოადგენს რა PHP, როგორც ჩვენ ვნახეთ? მასივი, მაგრამ მასივი, რომელიც შეიძლება იყოს ასოციაციურ მასივში. ასოციაციური მასივი მონაცემთა სტრუქტურა, რომელიც უკავშირებს გასაღებები ღირებულებებს. ახლა მარტივი რიცხობრივი ინდექსირებული მასივი, იმ გასაღებები არიან რა? ნულოვანი, ერთი, ორი, სამი, არა? ძველი სკოლის პერსონალის უკან C. მაგრამ მას შეუძლია ასევე იქნება strings როგორიცაა foo, და ბარი, ან maxwell, ან რაიმე ასეთი string. ასე, რომ შეიძლება ბერკეტები, რომ რაღაც მომენტში. ნება მომეცით წავიდეთ წინ და აცხადებენ, ფუნქცია, როგორიცაა - მოდით დატვირთვა () პირველი. ასე ფუნქციის დატვირთვის (). და PHP არის ცოტა განსხვავებული, რომ თქვენ ფაქტიურად ტიპის ფუნქცია, მაგრამ თქვენ არ აკრიფოთ დაბრუნების ტიპის. მე ვაპირებ წავიდეთ წინ და აცხადებენ, რომ load () ფუნქცია უნდა მიიღოს არგუმენტი $ ლექსიკონი, ისევე, ისევე როგორც C მობილური გააკეთა. მე ვაკეთებ, რომ მეხსიერებაში. და მე ვთავაზობ, რომ მე ვარ აპირებს ამის გაკეთებას. მე უბრალოდ ვაპირებთ გავაკეთოთ foreach. მე ვაპირებ მოვუწოდო ფუნქცია მოუწოდა ფაილი () გავლით სახელით, რომ ფაილი, რომელიც არის ცვლადი $ ლექსიკონი, როგორც $ სიტყვა. და შემდეგ შიგნით ჩემი for loop აქ, სადაც მე ვარ ვაპირებ წავიდეთ წინ და შესანახად ჩემი $ მაგიდა, რომელიც $ სიტყვას იღებს ჭეშმარიტი. შესრულებულია. ოჰ, დაველოდოთ. შესრულებულია. OK. რომ არის დატვირთვა () ფუნქცია ამბობენ PHP. ახლა, რატომ, რომ მუშაობს? და მე სახის მოტყუების აქ. ასე რომ, ერთი, foreach ჩვენ ვნახეთ მოკლედ ბოლო დროს. ეს უბრალოდ ნიშნავს, რომ თქვენ შეგიძლიათ iterate მეტი მასივი გარეშე აწუხებდა დავუკავშირდეთ i და n და პლუს პლუს, და ყველა რომ. ლექსიკონი რა თქმა უნდა, ფაილის სახელი, რაღაც დიდი ან მცირე, ორი ლექსიკონები ჩვენ გამოიყენება ბოლო დროს. ფაილი არის ფუნქცია, რომელიც ხსნის ტექსტი ფაილი, ნათქვამია, რომ ხაზს და ხელში თქვენ უკან უზარმაზარი მასივი, თითოეული რომლის ელემენტები არის ხაზი, რომ ფაილი. ასე რომ კომბინაცია fopen, და fread, ხოლო მარყუჟი, და fclose, და ყველა რომ. და ბოლოს, როგორც სიტყვა მხოლოდ იმას ნიშნავს, რომ ის, ცვლადი მე ვაპირებ ჰქონდეს ყოველ iteration ამ loop. ასე მოკლედ, ამ ერთი ლაინერი აქ იმას ნიშნავს, გახსენით ფაილი, რომლის სახელიც არის ლექსიკონი, ცვლადი, iterate მეტი ეს ხაზს, და ყოველ ჯერზე თქვენ მიიღებთ ხაზი, მაღაზია ცვლადში სიტყვა, და მერე რაღაც სიტყვა. რა გსურთ? მინდა დააყენა სიტყვა შევიდა ჩემი hash მაგიდასთან. ისე, მე შემიძლია დააყენა რაღაც ჩემი hash table ისევე, როგორც C გამოყენებით კვადრატულ ფრჩხილებში. ეს არის სახელი ჩემი hash მაგიდასთან. მე ვაპირებ ინდექსი შევიდა, რომ hash მაგიდაზე ამ ადგილას. ასე რომ არ bracket ნულოვანი, არ bracket ერთი. Bracket გაცემა unquote რაღაც, რასაც სიტყვა არის. და ისევე, როგორც თქვენ, შესაძლოა, თქვენი hash table მუშაობის trie, თქვენ უბრალოდ მაღაზია ეფექტურად ლოგიკური, ირიბად ან მკაფიოდ. შესრულებულია. მე შენახვის ღირებულება ჭეშმარიტი. ახლა არის რამდენიმე რამ, მე ჭრის კუთხეების აქ. ტექნიკურად, იქ იქნება შემაშფოთებელი ახალი ხაზი, / n, დასასრულს თითოეული ეს სიტყვა. ასე რომ, მე უნდა ალბათ მოვუწოდებთ PHP ფუნქცია ე.წ. chop (), რომელიც საკმაოდ სიტყვასიტყვით chop, რომ off. და მე რეალურად უნდა ერთი სხვა რამ. მე ალბათ ნამატი ზომა თითოეულ iteration, ამიტომ მე შენახვა ტრეკზე გლობალურად რა არის. და გულწრფელად, და ეს არის ერთ ერთი stupider ასპექტები PHP, თუ თქვენ გამოყენებით გლობალური ცვლადი, თქვენ უნდა მკაფიოდ ვთქვა, რომ თქვენ ხართ. ასე რომ, მე ვაპირებ რეალურად აკრიფოთ გლობალურ $ Size, გლობალური $ მაგიდა, და ახლა ჩემი ფუნქცია არის სრული. ასე რომ არ საკმაოდ მარტივია, როგორც ადრე, მაგრამ ალბათ დასჭირდა ნაკლები დრო, ვიდრე C მობილური, იქნებ? OK. ასე რომ, ახლა მოდით გამშვები () ფუნქცია. ვნახოთ, თუ ეს მაინც გავიდა საათობით წლის ბოლომდე, რომ დასჭირდა ჩვენს C. ასე რომ, ნება მომეცით წავიდეთ წინ და აცხადებენ, შეამოწმეთ როგორც ფუნქცია. იღებს არგუმენტი სიტყვა, რომელიც აპირებს მოდის speller. და მე უბრალოდ აპირებს შეამოწმოს, თუ შემდეგი ცვლადი isset, მაგიდა bracket strtolower სიტყვა - მოდით დაბალანსება ყველა ჩემი ფრჩხილებში - შემდეგ დაბრუნდება ნამდვილი. სხვა - რომ მართლაც მძიმე ამ პროგრამის ნაწილია. სხვაგან, დაბრუნების ცრუ. შესრულებულია. ეს არის ის ქვითარი (). ახლა, რატომ ამ მუშაობს? ისე, ერთი ჩავაბარე ერთი სიტყვით, რომელიც string. ორი, მე შემოწმების შიგნით hash მაგიდასთან, რომელსაც ეწოდება $ მაგიდა. მე აიძულა იგი ამას გამოძახებით ფუნქცია საკმაოდ მსგავსი tolower () in C, მაგრამ ეს იმას, რომ მთელი სიტყვა, არც ერთი ხასიათი. და თუ ეს არის, ანუ არ არსებობს არის ღირებულება მითითებული, სხვა სიტყვებით, თუ ეს სიმართლეა, მაშინ დიახ, ეს არის სიტყვა. იმის გამო, რომ მე ამას იქ დატვირთვა (). და თუ არა, მე ვაპირებ დაბრუნების ცრუ. ახლა სხვები ადვილი. ფუნქცია ზომა (), როგორ გავაკეთო ეს? მე არსებითად გავაკეთოთ დაბრუნების $ ზომა. მაგრამ მე ტექნიკურად უნდა ამისათვის შემაშფოთებელი რამ. და რეალურად up ესმის, მე ჭრის ერთ კუთხეში ძალიან ბევრი. მე ნამდვილად უნდა გავაკეთოთ გლობალური $ მაგიდასთან. მაგრამ, რომ მიმდინარეობს განაცხადა, განიტვირთოს). განიტვირთოს () არის საოცარი. ფუნქცია განიტვირთოს (). როგორ შემიძლია სურთ განახორციელონ განიტვირთოს ()? შესრულებულია. OK. ასე რომ განიტვირთოს (), მეხსიერების მართვა მთლიანად აღებული ზრუნვა თქვენთვის რაღაც PHP და ბევრი უმაღლესი დონის ენებზე. ასე რომ, ეს არის საოცარი. Like რატომ ჯოჯოხეთი არ გავატარეთ წარსულში რვა პლუს კვირაში C წერა როგორც ჩანს, მართლაც ნელი, ნამდვილად დრო შრომატევადი პრობლემები ათობით საათი მუშაობა ჩვენი ქამრები? ისე, ერთი რამ, ეს შეიძლება მუშაობა ჯარიმა მცირე პროგრამები. რა თქმა უნდა, დააჩქარა ჩემი განვითარების დროს. მაგრამ ვნახოთ, რა მოხდება რეალურ სამყაროში. ნება მომეცით წასვლას ამ დირექტორიაში ამ ტერმინალის ფანჯარაში. არსებობს speller. და შეამჩნია როგორც განზე, და თქვენ შეიძლება არ შეექმნა ამ პრობლემის კომპლექტი ექვსი ან პრობლემა კომპლექტი შვიდი. თქვენ არ მკაცრად უნდა დასრულდება PHP ფაილი. php. თუ თქვენ დააყენა ხაზი მოსწონს, რომ პირველი ერთი ძალიან ზევით, რომ განსაკუთრებული ხაზი სინტაქსი, რომელიც არსებითად ნიშნავს იპოვოს პროგრამის მოუწოდა PHP და გამოიყენოთ იგი ინტერპრეტაცია ამ ფაილის. ახლა არავინ იცის, რომ მე გაშვებული PHP პროგრამა. შემიძლია აწარმოებს უბრალოდ თითქოს ეს იყო რაღაც შედგენილი C. მაგრამ აქ რამ. რეალურად, მოდით ეს კიდევ ერთხელ გავაკეთოთ. Dropbox/pset6 /. არსებობს speller. OK, 0.44 წამი. მას სწრაფად ამ დროს. ახლა მოდით წასვლას PHP ვერსია. ლამაზი შეხება. მაგრამ ვფიქრობ, თუ რამდენი დრო მე გადაარჩინა ოფისში საათის განმავლობაში. OK. ასე რომ, 3.59 წამი, რომელიც რეალურად არ ჟღერს ზუსტად ან. მაგრამ ეს იმიტომ, რომ გრძელი ამბავი მოკლედ, როდესაც თქვენ დაბეჭდვისას დიდი ოდენობით პერსონალის ეკრანზე, რომ თავად slows რამ down. რას გავიდა CPU წელს ელექტრო იყო 3.59 წამში, განსხვავებით C, რომელსაც 0.44 seconds ყველაზე ცოტა ხნის წინ. რომ მართლაც ბრძანებით მასშტაბები განსხვავებულია. ასე რომ, სად არის, რომ ფასი მოდის? რატომ არის ასე ბევრად ნელი? რატომ PHP ასრულებს ასე ცუდად? Danielle? აუდიტორია: თქვენ ნამდვილად არ გამოყენება hash მაგიდასთან. დავით Malan: მე ნამდვილად არ გამოყენება hash მაგიდასთან. ასე რომ, მე სახის გააკეთა. ასე რომ, ეს ასოციაციურ მასივში. სავარაუდოდ, იმ შემთხვევაში, თუ ადამიანი PHP არის მართლაც ჭკვიანი, ისინი გამოიყენება ქვეშ hood ფაქტობრივი hash table განხორციელდა რაღაც C ან C + +. მაგრამ. ჰო. აუდიტორია: [INAUDIBLE]. დავით Malan: ჰო. ასე რომ ყოველ ფუნქციების დავწერე ახლა - ფაქტობრივად, შეიძლება ითქვას, რომ კიდევ ერთხელ ცოტა ხმამაღალი? აუდიტორია: თითოეული ფუნქციებს, თქვენ ჩართული აქვს გაცილებით მეტი სრული მოცულობა, ვიდრე - დავით Malan: ასე რომ ძალიან ნამდვილი. არსებობს უამრავი მეტი ოვერჰედის, რომ ჩვენ ნამდვილად არ ხედავს ფოკუსირება მხოლოდ dictionary.php, რომელიც მე უბრალოდ დაწერა. პირიქით, არსებობს მთელი თარჯიმანი მიმდინარეობს ფონზე. მართლაც, როდესაც მე გაიქცა ამ პროგრამის, რომ არ იყო გაშვებული შედგენილი zeros და პირობა განკუთვნილია my Intel CPU. უფრო მეტიც, იგი იყო გაშვებული ხაზს PHP კოდი, რომელიც გამოიყურება ზუსტად როგორც ჩვენ აკრეფილი. და ა.შ. როდესაც თქვენ გამოიყენოს ინტერპრეტირებული ენაზე, თქვენ ნამდვილად ასეთი ფასის გადახდა. იგი აპირებს გარკვეული დრო, რათა წაიკითხოთ თქვენი ფაილი ყველაზე ქვედა, მარცხნიდან უფლება, და მაშინ შეასრულოს ყოველ ონლაინ ისევ და ისევ. ახლა, რეალურად, განსაკუთრებით ინტერნეტში, თქვენ შეგიძლიათ რეალურად დააჩქარებს ამ პროცესს by ქეშირების შედეგების PHP კოდი, რომელიც ინტერპრეტირებული. და რომ აზრი ინტერნეტში, რადგან თუ არ ერთი მომხმარებლის, ისევე როგორც მე აქ, მაგრამ 1000 ან 10,000 წევრებს, მაშინ იქნებ პირველად ფაილი შემოწმდა ის ნელი, მაგრამ შემდეგ ის ბევრად უფრო სწრაფად. მაგრამ ეს ძალიან, კიდევ ერთხელ, არის სავაჭრო off. და რაღაც კვლევის მონაცემები მითითებული, ან თუნდაც რაღაც დიდი მოსწონს ამ, თქვენი მომხმარებლების საბოლოოდ დაიწყოს გრძნობს, რომ შენელება. ასე მოკლედ, ინტერპრეტირებული ენებზე ძალიან Vogue, ძალიან პოპულარული, და გულწრფელად ალბათ ენებზე თქვენ უნდა მიაღწიოს, როდესაც პრობლემის გადაჭრა შემდგომ CS50. მაგრამ ვაცნობიერებთ, რამდენად თქვენ ნამდვილად აღების თავისთავად ქვეშ hood მართლაც, იმ ბოლო რამდენიმე კვირის განმავლობაში hash მაგიდები, და ხეები, და ცდილობს, რომელიც გამოიყენება საბოლოო ჯამში, რეალურად განახორციელოს რამ, როგორიცაა ღია bracket, კვადრატული ფრჩხილი, რომელსაც ჩვენ ახლა მადლიერებით თავისთავად. მოდით შევხედოთ ახლა ამ ვებ კონტექსტში. და აღვნიშნე, ბოლო დროს, რომ არსებობს რამოდენიმე superglobals in PHP, რომ არ არის შესაბამისი ბრძანებათა ზოლს. ისინი უფრო შესაბამისი კონტექსტში გამოყენების PHP in ვებ კონტექსტში. ასე გაშვებული PHP ვებ სერვერზე, რათა გენერირება პერსონალის მოსწონს HTML. და ჩვენ მოხვდა at $ _GET და $ _POST და რომ სადაც ავტომატურად მომხმარებლების input მთავრდება, უბრალოდ, თუ თქვენ წარადგინოს შექმნას ფაილი დამთავრებული. php ვებ სერვერზე, როგორიცაა ელექტრო მოწყობილობების. მაგრამ მოდით შევხედოთ მოკლედ $ _COOKIE და $ _SESSION. ერისკაცად წარმოგვიდგება მისი თვალსაზრისით, რა არის cookie როგორც გესმით ეს კონტექსტში გამოყენებით ინტერნეტში? აუდიტორია: ფაილის კომპიუტერი. დავით Malan: ჰო. ეს ფაილი მომხმარებლის კომპიუტერში დარგეს ნებისმიერი ნახვა თქვენ არ ეწვევა. ასე რომ, როდესაც მიდიხარ Facebook, როდესაც მიდიხარ to bankofamerica.com, როდესაც მიდიხარ to google.com, როდესაც მიდიხარ თითქმის ნებისმიერი ნახვა მსოფლიოში ამ დღეებში, მათ შორის cs50.net, ფუნთუშა დარგეს თქვენს კომპიუტერში, რომელიც ან ღირებულება ინახება RAM თქვენს კომპიუტერი ბრაუზერის მეხსიერების, ან ზოგჯერ მართლაც ფაილი ინახება თქვენს ხისტ დისკზე. და რაც, როგორც წესი, ინახება, რომ ფაილი არ არის თქვენი მომხმარებლის სახელი, არ არის თქვენი დაგავიწყდათ, როგორც წესი, არ არის რაღაც, მგრძნობიარე, თუ website ასე არ არის კარგი მათი უსაფრთხოების, არამედ ეს არის დიდი უნიკალური იდენტიფიკატორი შორის სხვა რამ. ეს დიდი შემთხვევითი რიცხვების დარგეს თქვენს კომპიუტერი, მაგრამ შეგიძლიათ წარმოიდგინოთ, რომ, როგორც ერთგვარი ვირტუალური მხრივ ბეჭედი როგორც საწყისი კლუბში ან რამდენიმე გასართობი პარკი, რომ საშუალებას აძლევს თანამშრომლებს, მფლობელებს, რომ მომსახურება, გვახსოვდეს, ვინ ხარ შენ. ასე რომ, თუ დიდი შემთხვევითი რიცხვების ჰგავს 12345678, მიუხედავად იმისა, რომ აშკარად არ არის ძალიან შემთხვევით, ვფიქრობ, რომ როგორც მხრივ შტამპი, რომ, როდესაც თქვენ facebook.com პირველად, ისინი ბეჭედი, რომ ნომერი თქვენს ხელში. და მერე იმიტომ, რომ თქვენ საუბარი HTTP, თქვენ მიმდინარეობს ბრაუზერი, და რადგან Facebook აშკარად მეტყველებს იგივე როგორც web სერვერზე, ოქმის HTTP ამბობს, რომ ნებისმიერ დროს თქვენ მოგვიანებით ეწვევა facebook.com, თუ არა ეს მეორე მოგვიანებით, საათში, თუნდაც მეორე დღეს, ისე, სანამ თქვენ არ არის მკაფიოდ გამოხვედით, რომელიც ეფექტურად ჰგავს სარეცხი თქვენი ხელები. HTTP ამბობს, თქვენ უნდა წარმოადგინოს თქვენი მხრივ ბეჭედი ყოველ დროს, თქვენ დაბრუნდება, რომ საიტი. რა Facebook მაშინ არ არის, რომ ისინი შევხედოთ, რომ მხრივ, ბეჭედი და ამბობენ, oh, 123456789. მე არ ვიცი, ერთი შეხედვით, რომ ეს დავით Malan კემბრიჯში, Massachusetts, მაგრამ მათ შეუძლიათ შეამოწმონ თავიანთი მონაცემთა ბაზის და აცხადებენ, oh, პირი რომლის კომპიუტერი ჩვენ დარგეს 123456789 დავით Malan კემბრიჯის, მასაჩუსეტსის. მოდით დავანახოთ, რომ მომხმარებელს შემდეგ მისი ნახვა ან მისი News Feed. მაგრამ პრობლემა აქ, თუ ეს არის, თუ როგორ web მართლაც მუშაობს. მოდით შევხედოთ სწრაფი მაგალითი. მოდით რეალურად წასვლა ამბობენ facebook.com. მაგრამ სანამ ჩვენ შეგვიძლია წავიდეთ იქ, მოდით მომეცით წავიდეთ წინ და ქმნის Chrome-ს ინსპექტორი ქვემოთ აქ. ნება მომეცით შევხედოთ ქსელის tab. და ახლა მოდით წავიდეთ წინ და ტიპის in https://facebook.com. და მე ვაკეთებ, რომ ისე, რომ ჩვენ ვერ ვხედავთ ყველა იმ გადამისამართებების და ნარჩენების დრო გადახედეთ იმ. ნება მომეცით დააჭიროთ. ყველა უფლება. ჩვენ ვხედავთ, მთელი bunch of მოითხოვს. იქ მოდის Facebook. არსებობს მთელი bunch ფაილი. და აქ, თითო ჩემი ნახსენები შეყოვნება ბოლო დროს, რომ ბევრი HTTP მოთხოვნებს. მაგრამ პირველი, ალბათ, ყველაზე საინტერესო. მოდით გადახვევა ქვემოთ აქ და მე მიუახლოვდით მეორე. ეს იქნება ერთგვარი სასადილო, მაგრამ ვნახოთ. Facebook აგზავნის us მთელი bunch of პერსონალი. მაგრამ Whoa, საინტერესო. ისინი დარგვა არა ერთი, არამედ ოთხი მხრივ მარკების გადატანა ჩემი მხრივ აქ. უცნობია ფუნთუშა, უცნობია ფუნთუშა, კომპლექტი ფუნთუშა, set-cookie. და არსებობს რამდენიმე თვისებები აქ. ყველა მათგანი აღვნიშნო ზოგიერთი სახის გასვლის. და ეს ჰგავს Facebook იმედი უნდა გვახსოვდეს, მე 2015 წლამდე. ასე რომ, სავარაუდოდ, იმ დროს, რომელიც მე უნდა სისტემიდან გამოსვლა ან ისინი ყველაფერს მხოლოდ ავტომატურად ვივარაუდოთ მე ვარ არ ბრუნდებოდა. ასე რომ, რეალურად ღირსეული დროის. და არსებობს სხვა რამ ხდება აქ. ფუნთუშა, როგორც ჩანს, იძულებით წაშლილი და განაცხადა, რომ ამოიწურა 1970 ადრე cookies არსებობდა. ასე რომ, ბრაუზერის მხოლოდ აპირებს უნდა ვივარაუდოთ, OK, რომ მოსწონს სარეცხი ხელში შტამპი. მაგრამ ახლა, როცა ჩემს ბრაუზერში რაც შემდგომი მოთხოვნა - ნება მომეცით, წავიდეთ წინ და ამის გაკეთება ისევ და განახლება. ახლა ნება მომეცით გადახვევა უკან მთავარი მოთხოვნა და დაცემას აქ, მოითხოვოს headers. შეამჩნია ეს. ასე რომ, ახლა მე ქვეშ არ საპასუხოდ headers, მაგრამ შეამჩნია ის ამბობს მოთხოვნა headers. და შეამჩნია, რომ ჩემს ბრაუზერში, როგორც ნაწილი მისი მოთხოვნის შემდეგ hitting reload აქვს გაგზავნილი აქვს მინიმუმ შემდეგ ინფორმაციას. არ არის ბმულების, მაგრამ ფუნთუშა. ასე რომ, ეს ხაზი, HTTP header ასე საუბარი, სადაც ჩემს ბრაუზერში არის ერთგვარი საქართველოს გარეშე იცის ეს წარდგენის ჩემი მხრივ for Facebook-ის შემოწმება. ასე რომ, ეს ნაჭდევები შეიძლება იყოს გამოიყენება მაშინ, რა? უნდა გვახსოვდეს, ვინ ხარ შენ, თუ გახსოვთ, როგორ ბევრი ჯერ თქვენ უკვე არსებობს, ან ნამდვილად არაფერი. ასე რომ, აქ არის counter.php. და ნება მომეცით მიუახლოვდით შრიფტი. და ყოველ ჯერზე მე განაახლეთ ეს გვერდი ცნობა ის ახსოვს, რამდენჯერ მე უკვე არსებობს. ისე, რომ არ არის ყველა, რომ შთამბეჭდავი. მოდით უბრალოდ დახუროს, რომ tab, და ახლა მოდით დავუბრუნდეთ http://localhost/counter.php. ოჰ, რომ საინტერესოა. ეს ჯერ კიდევ ახსოვდათ, მაშინაც კი, თუმცა მე დაიხურა tab. და გულწრფელად, თუ დახურეთ ბრაუზერი, თუ ხორციელდება სწორი გზა, I შეიძლება მაინც მახსოვს, რომ ამ მომხმარებელს ვინც იგი პირველად, და მხოლოდ ერთხელ მე წასვლას Chrome მენიუ, რომელიც აქ არის აქ, და წავიდეთ ისტორია და დააწკაპუნეთ წმინდა Browsing Data, როგორც ზოგიერთი გქონდეთ წარსულში, მხოლოდ ამის შემდეგ იქნება თქვენი cookies რეალურად წაიშლება დროს ვებგვერდი განვითარება. ასე რომ, თუ ჩვენ წავიდეთ - მოდით ახლოს gedit აქ. და თუ ჩვენ ახლა ამ ფაილს. ნება მომეცით წასვლას ჩვენი vhosts / localhost / საზოგადოებრივი, და ნება მომეცით გავაკეთოთ counter.php. გაითვალისწინეთ, რომ ეს არის საკმაოდ მარტივი პროგრამა. ეს საკმაოდ მარტივი ვებგვერდზე. ასე რომ ყველაზე ფაილი უბრალოდ კომენტარი. მაგრამ აქ არის ახალი ხაზი, რომ თქვენ შეიძლება ვნახეთ უკვე p განხორციელება შვიდი, session_start (). ეს არის ხაზი PHP კოდი, რომელიც არსებითად ეუბნება სერვერზე, რათა დარწმუნდით, რომ ბეჭედი ხელში და შეამოწმეთ მხრივ მარკების. რომ ყველა, რომ ხაზი აკეთებს, და ეს ყველაფერს აკეთებს, რომ პროცესი ჩვენთვის. მაშინ შეამჩნია მე უბრალოდ მიიღო ორი შტო აქ. იმ შემთხვევაში, თუ counter გასაღები შიგნით ამ სპეციალური გლობალური ცვლადში $ _SESSION არის - სხვა სიტყვებით, თუ არსებობს გარკვეული მნიშვნელობა იქ - მოდით მისაღებად და ჩაწეროთ იგი ადგილობრივ ცვლადში $ counter. სხვას, მოდით მივანიჭოთ $ counter ნაგულისხმევი მნიშვნელობა 0. ახლა აქ ერთი ასპექტი PHP, რომ ორივე კურთხევა და წყევლა. PHP არის ცოტა sloppy. ასე რომ, ხოლო C, რა მოხდება ფარგლებში counter ყოფილიყო არც აქ და არც აქ? ეს იქნებოდა შემოიფარგლება იმ curly აფრთხილებს. გამოიცანით რა? PHP, იგი არსებობს თუნდაც გარეთ იმ curly აფრთხილებს, აქ და აქ, და აქ, და აქ და კი ქვემოთ. ასე რომ, მე ვიტყვი, რომ ეს არის კურთხევით იმ გაგებით, რომ თქვენ არ უნდა ვიფიქროთ, როგორც მყარი, როგორც ჩვენ გავაკეთეთ კვირის წინ. მაგრამ ასევე ცოტა წყევლა რომ არ აქვს მნიშვნელობა, სადაც თქვენ გამოიყენოს ცვლადი PHP, მინიმუმ პროგრამა მოსწონს, ეს გლობალურად ხელმისაწვდომი უკეთესი ან უარესი. ასე რომ თქვენ უნდა გვახსოვდეს, რომ თქვენი ცვლადები არ შეიძლება undefined. ალბათ განისაზღვრება მათ სხვაგან. მაგრამ რა ვარ მე გაკეთებას აპირებს საბოლოოდ? მე ვაპირებ შესანახად შიგნით რომ გლობალურ ცვლადი, როგორც ღირებულება counter გასაღები შედეგი აკეთებს counter პლუს 1. ასე რომ, ეს მხოლოდ არითმეტიკული რომ არ incrementation რომ counter. და ის ფაქტი, რომ მე შენახვის, რომ ღირებულება უკან აქ არის ნიშნავს არსებითად განახლება მონაცემთა ბაზაში გახსოვდეთ, რომ შესახებ 123456789 უკვე აქ ორჯერ. და როცა ამის გაკეთება კიდევ ერთხელ მომავალი დრო I განაახლეთ გვერდი, ის აპირებს, რათა შეამოწმოს ჩემი მხრივ, ბეჭედი და აცხადებენ, oh, პროფაილი 123456789 ახლა აქ უკვე სამჯერ. ასე რომ, რა PHP და მსგავსი ენებზე ვაკეთებთ ჩვენთვის ისინი მჭიდროდაა თუ როგორ და სად და რამდენ ხანს შესანახად ღირებულებების ამ სპეციალური superglobal. ეს superglobal მომავალი დრო I მოინახულებენ გვერდი სახის magically წინასწარი დასახლებული, სავსე ღირებულებებს, რომელიც იქ ბოლო დროს ეწვია, თუ არა, რომ იყო მეორე წინ, კვირაში წინ, ან 2013 წელს და ჩვენ ახლა ვსაუბრობთ დაახლოებით 2015. PHP და სერვერზე იზრუნებს ყველა რომ თქვენ. აუდიტორია: [inaudible]. დავით Malan: ცვლადები PHP-ში არის არსებითად ყოველთვის გლობალურ თუ არ ვაცხადებ, მათ შიგნით ფუნქცია, შემდეგ კი ისინი ადგილობრივ to ფუნქცია მხოლოდ. მაგრამ რადგან მე არ წერია არც ერთი ფუნქციები, ისინი ეფექტურად გლობალური მასშტაბით მთელი ჩემი ფაილი აქ. აუდიტორია: არსებობს თუ არა გზა რათა მათ ადგილობრივ? დავით Malan: არსებობს თუ გზა, რათა მათ ადგილობრივ? მხოლოდ შეფუთვა მათ ფუნქციებს. რაც, ბოლო ვერსია PHP, მაშინ ეს ანონიმური ფუნქცია. მაგრამ უფრო, რომ კონტექსტში JavaScript. მაგრამ მოკლე პასუხი არ არის. აღარ პასუხი არის დიახ. ლამაზი. კარგი ინტელექტუალური კითხვა. ყველა უფლება. ასე რომ, ბოლოს, გვერდზე თავისთავად რეალურად საკმაოდ მარტივია. გავითვალისწინოთ რომ ერთხელ გაითიშება PHP რეჟიმში, გავიხსენოთ რომ ყველა ამ პერსონალის ქვემოთ ქვემოთ მხოლოდ აპირებდა spit გარეთ ნედლეული ბრაუზერში. რა კარგად არის, რადგან მეც მინდა გაგზავნას შესახებ ზოგიერთი HTML, მაგრამ ვაცხადებ დინამიურად განახლება რომ HTML. ხოლო ერთი გზა შემიძლია ეს დასალაგებლად ძალიან სწრაფად ვარდნა ისევ PHP რეჟიმში, გამოიყენოთ ღია bracket კითხვის ნიშნის თანაბარი ნიშანი და შემდეგ გამომავალი ღირებულება საქართველოს counter. ან თუ ეს გამოიყურება პატარა cryptic, ამ თანაბარი ნიშანი ფაქტიურად რამოდენიმე სინტაქსური შაქარი, ამ printf ($ counter). თუმცა გულწრფელად ვამბობ, ეს მხოლოდ პატარა მახინჯი და ცოტა შემაშფოთებელი ტიპის. ასე რომ, PHP ძალიან ლამაზად გთავაზობთ ამ ფუნქციის სადაც შეგიძლიათ უბრალოდ ამბობენ, რომ უფრო აღწეროთ იმ გზით. ასე რომ, თუ რა ხდება ქვეშ hood? მოდით სწრაფად შევხედოთ ქსელის tab აქ counter.php. და ნება მომეცით წავიდეთ წინ და პირველი მოდით გარკვევა თქვენი cookies. მოდით ნათლად დათვალიერება მონაცემთა წლიდან დასაწყისში დრო. ახლა კი დავუბრუნდეთ მეტი აქ. ახლა განაახლეთ გვერდი. და დავბრუნდი ზე ნულოვანი. იმის გამო, რომ ჩემი მხრივ ბეჭედი უკვე გარეცხილი ახლა მიიღოს ახალი cookie. მართლაც, თუ გავითვალისწინებთ ქსელის tab და შეხედეთ საპასუხოდ თავით, შეამჩნია რომ მოწყობილობის აგზავნის me ბმულების რომლის სახელიც გარკვეულწილად თვითნებურად, მაგრამ ასეთი გონივრულად, PHPSESSID. და ეს გაგზავნის ჩემთვის ეს ნამდვილად დიდი შემთხვევითი ნომერი. ეს არ არის საკმაოდ ნომერი. ეს არ არის საკმაოდ თექვსმეტობითი. ეს ერთგვარი ალფანუმერული ტექსტი, მაგრამ სავარაუდოდ ეს შემთხვევითი. და ეს არის ხელის ბეჭედი ასე საუბარი, რომ მე გულისხმობდა. ამასობაში, თუ მე დაჭერით განაახლეთ და შემდეგ შეხედეთ ამ მეორე ხაზი, ჩემი მეორე მოთხოვნით, შეამჩნია, რომ ჩემი მოთხოვნა თავით მოიცავს PHPSESSID შეადგენს ამისა, უცნობია-cookie, მაგრამ ფუნთუშა. და ეს არის ჩემი ბრაუზერის პრეზენტაცია , ჩემი მხრივ შტამპი. ასე რომ, ახლა, როგორც teaser და ჩვენ გაიგო მეტი ამის შესახებ ერთ კვირაში, მაგრამ რა გზა ჯერ ეს თქვენ დაუცველი, თქვენი Facebook ანგარიშზე სოციალურად დაუცველი და სხვა ამგვარი ანგარიშები დაუცველი? აუდიტორია: თუ ვინმეს აქვს თქვენს cookie. დავით Malan: ჰო, თუ ვინმე იმყოფებოდეს თქვენი cookie. ვგულისხმობ მართლაც, ჰგავს ზოგიერთ თქვენგანს შესაძლოა შევეცადე ზე მოსწონს კლუბი ან გასართობი პარკი, თუ თქვენ ძიებასა მსგავსი კოპირება შტამპი, თუმცა უკან გადატანა სხვისი მხრივ, და შემდეგ მას წარუდგენს როგორც საკუთარი, თუ იგი რეალურად არ გამოიყურება იდენტურია, 123456789, მაშინ ვებგვერდი სერვერზე აშკარად უბრალოდ აპირებს ვენდობით, რომ მომხმარებელს თქვენ. და ეს მართლაც ფუნდამენტური საფრთხე ნებისმიერ დროს თქვენ იყენებთ ნაჭდევები რადგან თუ ვინმე მხოლოდ spoofs ასე საუბარი თქვენი cookie, ციფრები, რა იგი არის, რაც ნამდვილად გადაწერა იგი ეძებს თქვენს კომპიუტერში და როგორც მოსწონს, OK. დავითის ბმული არის JJ3JIK და ა.შ., შემდეგ კი ისინი ჭკვიანი საკმარისი ვიცი როგორ დასალაგებლად of ხელით გაგზავნას, რომ ვმულები ბრაუზერის ან პროგრამა, ის დაწერონ, შესაძლებელი იქნებოდა მთლიანად შესვლის ნახვა, როგორც თქვენ. ეს არ არის, რომ იმისთვის, რომ პრეტენზია იყოს ვინმეს თუ ჩვენ დავუბრუნდეთ P-ნაკრები ორი, რომელიც გააცნო რა? აუდიტორია: კრიპტოგრაფიის. დავით Malan: პატარა ცოტა კრიპტოგრაფიის. მარტივი კრიპტოგრაფიის მაინც, სტანდარტული გამოცემა, მაგრამ შიფრის მაინც. ნაკლები. გამოდის, თუ გაშიფრავს ყველა ამ თავით გამოყენებით რაღაც, რომ თქვენ შესაძლოა, ახლა უკვე იცის უფრო familiarly როგორც SSL, უსაფრთხო ბუდე ფენის, ან https:// მისამართები, მაშინ ყველა ამ საკითხზე ჩვენ glancing დროს პრაქტიკულად დაშიფრული რაც იმას ნიშნავს, რომ ეს, როგორც თქვენ ვერ ხედავთ მხრივ შტამპი. მხოლოდ facebook.com შეიძლება, ან google.com, ან ამ შემთხვევაში, მოწყობილობების სისტემაში წავიკითხე, რომ ხელი ბეჭდით. ტრაგიკულია, თუმცა და ისევ, ეს არის ძალიან შესაბამისი ერთად NSA პერსონალი გვიანდელი, თუნდაც SSL არის breakable. და ეს რეალურად არ არის, რომ მძიმე კი ბზარი რომ კოდირებით. არა იმდენად მიერ cracking დაშიფვრის, მაგრამ tricking ბრაუზერის შევიდა გაშიფვრის დროს მოხდენილი მონაცემთა ნაადრევად. თუმცა ისევ და ისევ, ჩვენ tease თქვენ ერთად, რომ ხანგრძლივი. ახლა მხოლოდ შეგეშინდეთ. ეს ტრაგიკულად სახის ასეა. ყველა უფლება. ასე რომ, სად ეს ახლა დაგვტოვებთ? კარგად, მოდით გავაკეთოთ ეს. მოდით წავიდეთ წინ და მიიღოს სწრაფი teaser სანამ ჩვენ მიიღოს შესვენების. და მე ვფიქრობ, რომ ჩვენ linger ცოტა აღარ დღეს, მაგრამ ჩვენ ვაპირებთ ჩაყვინთვის შევიდა რაღაც ახალი და sexy, რომელიც whet თქვენი მადა კიდევ უფრო. ასე რომ teaser. ასე რომ, SQL, დავიწყეთ ლაპარაკი ოდესმე ასე მოკლედ ბოლო დროს. თქვენ ნამდვილად მიიღოთ თქვენი ხელები ბინძური ზოგიერთი ეს p განხორციელება შვიდი. და layman-ის თვალსაზრისით, რას SQL - S-Q-L - რა გაგიკეთო? რა არის ეს? ჰო. აუდიტორია: მოდით თქვენ ხელმისაწვდომობის მონაცემები. დავით Malan: ჰო. ის მოდით თქვენ ხელმისაწვდომობის მონაცემები მონაცემთა ბაზაში. სტრუქტურირებული შეკითხვის ენა. და ეს არის არსებითად პროგრამირების ენა. არსებობს თვისებები, რომ ჩვენ კი არ გამოიყენოს კლასში. მაგრამ შეგიძლიათ ეფექტურად განისაზღვროს ფუნქციები. ისინი მოუწოდა ინახება პროცედურები SQL. მაგრამ ჩვენ გავაგრძელებთ ეს საკმაოდ მარტივი და მხოლოდ მას იყენებენ ზოგიერთი ძირითადი ოპერაციები როგორიცაა შერჩევის მონაცემები, ჩასმა მონაცემები, განახლება მონაცემები და წაშლის მონაცემებს. და თქვენ ნამდვილად ვფიქრობ მონაცემთა ბაზა, როგორიცაა SQL მონაცემთა ბაზაში, როგორც მხოლოდ მიმდინარეობს Microsoft Excel. იმის გამო, რომ SQL ეხება relational მონაცემთა ბაზა, სადაც მიზეზი მხოლოდ იმას ნიშნავს, მაგიდები. რიგები და სვეტები. ისე არაფერი, თქვენ შეგიძლიათ განათავსოთ ცხრილების მოსწონს ეს ან Google Docs, თქვენ ვერ შევიდა SQL მონაცემთა ბაზაში გამოცხადების მაგიდასთან. ახლა, როგორ ფიქრობთ რეალურად ვებგვერდზე რომ ინფორმაცია? ისე, ბრძანებების ან queries მოსწონს ეს. SELECT, INSERT, UPDATE და DELETE. და საუკეთესო ნაწილი, ისინი, ვინც არიან ოთხ მხოლოდ ინგრედიენტები თქვენ უნდა რაღაც საკმაოდ ძლიერი პრობლემა მითითებული შვიდი. ახლა დღის განმავლობაში, თქვენ რეალურად ურთიერთქმედება მონაცემთა ბაზაში შავი და თეთრი ტერმინალის ფანჯარაში at მოციმციმე სწრაფი მოსწონს ეს. და მონაცემთა ბაზის ჩვენ გაშვებული ელექტრო ეწოდება MySQL, რომელიც თავისუფალი და ღია კოდის მონაცემთა ბაზის ძრავი. თუ თქვენ Google და წაიკითხოთ ვიკიპედია სტატიაში, თქვენ იცით, რომ სახელი ცოტა გადასვლის ზოგიერთი ვერსიები Linux. Maria მონაცემთა ბაზა ფაქტიურად ჩანგლის ასე ვთქვათ of MySQL. დიდხანს ამბავი მოკლედ, Oracle შეიძინა MySQL. Oracle დიდი კომპანია. ადამიანი აწუხებს, რომ აღარ რჩება საკმაოდ ღია წყაროებიდან, ასე რომ ეს არის მხოლოდ ასლი MySQL, რომ კვლავ უფასო, ჯერ კიდევ ღია და დამონტაჟებული Fedora Linux იყოს. მაგრამ ეს არის ერთგვარი ტკივილი კისრის გაეცნოს მონაცემთა ბაზის ამ გზით. ამიტომ, ჩვენ მოიცავს CS50 ელექტრო უფასო ღია კოდის ინსტრუმენტი მოუწოდა phpMyAdmin. უბრალოდ დამთხვევაა, რომ ის დაწერილი PHP. არ არსებობს ფუნდამენტური საჭიროა PHP აქ. მაგრამ ეს მხოლოდ ვებ დაფუძნებული ინსტრუმენტი, რომელიც ჩვენ გადმოწერილი უფასოდ, დამონტაჟებული ელექტრო მოწყობილობების, რომ საშუალებას გვაძლევს აქვს გრაფიკული ინტერფეისი, რომელიც შეისწავლონ p განხორციელება შვიდი მონაცემთა ბაზა რომლის შექმნა ახალი მონაცემთა ბაზა, ამბობენ, რომ თქვენი საბოლოო პროექტი თუ გსურთ მოსწონს, და საბოლოოდ შექმნა დინამიური საიტები მოსწონს CS50 ფინანსთა რომელიც საშუალებას გაძლევთ შეკითხვის მონაცემები და განაახლოთ მონაცემები დინამიურად ვითარდება. თქვენ არ აპირებს უნდა გამოვიყენოთ მხოლოდ მარტივი ტექსტური ფაილი ან CSV. თქვენ შეგიძლიათ რეალურად გამოყენება smart მონაცემთა ბაზა პროგრამა ასე რომ თქვენ შეგიძლიათ შეასრულოს მეტი დახვეწილი queries ვიდრე უბრალოდ კითხულობს მეშვეობით ყველაფერს ხაზოვანი. ასე მაგალითად, ეს არის ის, რაც ჩვენ მისცეს თქვენ გარეთ ყუთი p განხორციელება შვიდი. ეს არის მაგიდა, როგორც ჩანს, მაინც სამი სვეტით, რომელთაგან ერთი არის სახელი, რომელთაგან ერთი hash, და სხვა, რომელიც პირადობის მოწმობა. მაგრამ საინტერესო ის, და მხოლოდ აჯავრებენ ერთი აზრის აქ, მომხმარებლის სახელი სავარაუდოდ უკვე უნიკალური, არა? ვგულისხმობ, საუკეთესო ნებისმიერი ნახვა, თუ თქვენ გაქვთ სახელი, იქ არ შეიძლება იყოს ორი Caesars. არ შეიძლება არსებობდეს ორი malans. არ შეიძლება არსებობდეს ორი jharvards. მისი უნიკალური. წინააღმდეგ შემთხვევაში, მათ არ იციან, რომელიც jharvard ის რეალურად არის. ასე რომ, რა შეიძლება იყოს მოტივაცია ასევე მქონე მესამე სვეტი მარცხენა არსებობს ე.წ. ID, რომელიც ჰგავს ნომერი, რომელიც არის ასევე უნიკალური? იგი გრძნობს ცოტა გადაჭარბებული ჩემთვის ერთი შეხედვით. რატომ შეიძლება იყოს მყარი აქვს არა მხოლოდ უნიკალური სახელისა, არამედ უნიკალური ნომერი? აუდიტორია: მათ შეეძლოთ იგივე პაროლი. დავით Malan: ხალხი ალბათ იგივე პაროლი, დარწმუნებული ვარ. რომ შეიძლება აბსოლუტურად მოხდეს. მაგრამ თუ მათ ეს უნიკალური სახელი, I იტყოდა, რომ ნამდვილად არ საკითხზე, რადგან თუ ისინი აკრიფოთ მათი სახელი, მე მხოლოდ უნდა შეამოწმოთ მათ დაგავიწყდათ, მათ hash შესახებ. რატომ სხვაგან? აუდიტორია: Faster ძებნას. დავით Malan: Faster ძებნას. რატომ? აუდიტორია: ID მხოლოდ ერთი. დავით Malan: ID მხოლოდ ერთი ხასიათი, ან უფრო სწორად, ის ნომერი, ან, ასე რომ, ალბათ, 32 ბიტი ან რამე მაგდაგვარს. ხოლო სახელი, როგორც ჩანს, ჯეისონ Hirschhorn მიერ იქ არის ერთგვარი ridiculously ხანგრძლივი და ის აპირებს მიიღოს ჩემთვის გაცილებით მეტი დრო სიმებიანი შედარების H-I-R-S-C-H-H-O-R-N, და იქნებ / 0 ან რამე მაგდაგვარს, იმისათვის, ეძებოთ Jason, როგორც ეწინააღმდეგებოდა უბრალოდ ამბობდა მომეცი პროფაილი ნომერი ორი. ეს არის ის, 32 ბიტი. ეს ერთი INT რომ თქვენ უნდა შეადაროთ. და მართლაც, სწორედ ამიტომ, მონაცემთა ბაზები ტენდენცია დაავალოს უნიკალური პირადობის მოწმობების რიგები მათ. ახლა რა სხვა მონაცემთა ტიპები არსებობს გარდა INT და როგორც ჩანს, strings ასე? ისე, უფრო შესაბამისი, SQL მონაცემთა ბაზების, ისევე როგორც MySQL, აქვს CHAR სფეროებში. და char პატარა misleadingly არც ერთი CHAR. CHAR სფეროში MySQL მონაცემთა ბაზა ერთი ან მეტი პერსონაჟი, მაგრამ ის ფიქსირებული რაოდენობის სიმბოლოებს. ასე მაგალითად, თუ მე წასვლა მეტი phpMyAdmin, როგორც თქვენ შეიძლება უკვე, ან მალე პრობლემა კომპლექტი შვიდი, და მე მივალ ჩემს მონაცემთა ბაზაში, და უბრალოდ for fun, მოდით შევქმნათ ახალი მაგიდა მოუწოდა შესამოწმებლად მხოლოდ ორი სვეტით. მე შემდეგ დააჭირეთ ზემოთ. და ეს იქნება საკმაოდ ნაცნობი, განსაკუთრებით, როგორც თქვენ Tinker გარშემო საკუთარი. აქ მე შეიძლება აკრიფოთ ID შექმნათ ახალი მაგიდა ტიპის int. მაგრამ აქ მე შეიძლება აკრიფოთ მომხმარებლის სახელი ხელახლა რომ ადრე მაგიდასთან. და შენიშნავს, მე მაქვს მთელი bunch სახის არჩევანი. და ეს ძალიან ამიტომ phpMyAdmin სახის ლამაზი. ეს ერთგვარი თვითმმართველობის სწავლების, რომ თქვენ შეგიძლიათ უბრალოდ სახის წერტილი და დააჭირეთ და შევხედოთ dropdown მენიუები, და infer საწყისი რომ ის, რაც უფლებამოსილების SQL გაძლევთ. და მართლაც, თუ აირჩიოს CHAR, მე მაშინ უნდა მიუთითოთ სიგრძის, თუ როგორ ბევრი ღირებულებები, რამდენი სიმბოლო. ასე რომ, ძალიან საერთო ღირებულებები რამ, როგორიცაა, 255, მაგრამ ეს ცოტა ხანი. საყოველთაოდ არის რვა სახელი. მაგრამ ეს პატარა ამ დღეებში. ასე რომ, ეს არის დიზაინის გადაწყვეტილება. ეს არის 8 სიმბოლო max, 32, 255, 1000? ეს ნამდვილად თქვენზეა. მაგრამ CHAR ველი ფიქსირებული ნომერი. ასე რომ, არჩევანი ძალიან ცოტა და თქვენ ერთგვარი ბრალია თუ გსურთ აღარ სახელი. არჩევა ძალიან ბევრი და რაც downside? აუდიტორია: [INAUDIBLE]. დავით Malan: ეს wasteful. ისევე, როგორც C, თუ თქვენ გაქვთ უფრო დიდი ბლოკი მეხსიერება, ვიდრე გჭირდებათ, თქვენ უბრალოდ დროის გაყვანაა და გაყვანაა სივრცეში. ასე რომ, როგორც ალტერნატივა, არსებობს Varchar, რომელიც წყვეტს ამ პრობლემას მკურნალობის ხანგრძლივობა არ არის, როგორც ფიქსირებული სიგრძის, მაგრამ, როგორც მაქსიმუმ, და გამოყენებით ცვლადი რაოდენობის სიმბოლო, რომელიც შემდეგ tends უნდა გამოვიყენოთ მხოლოდ როგორც ბევრი სიმბოლო, როგორც თქვენ რეალურად სჭირდება. რომ ჟღერს სრულყოფილი. რატომ არ გვაქვს დავაღწიოთ CHAR მონაცემები აკრიფოთ მაშინ? რა შეიძლება იყოს downside of გამოყენებით VARCHARs, რომელიც ჟღერს როგორც ეს ლამაზი გამარჯვება? ჰო? აუდიტორია: [INAUDIBLE]. დავით Malan: OK, კარგი. ასე რომ, თუ ყველა თქვენი მონაცემები არის იგივე სიგრძის, რა შეშფოთება? აუდიტორია: იმიტომ, რომ თქვენ გაყვანაა მონაცემთა ვეუბნებოდი მათ ყველა. დავით Malan: ასე რომ, თუ ყველა თქვენი მონაცემები იმავე სიგრძის, თუმცა, მე ვიტყოდი, რომ სასურველი მაქსიმალური სიგრძე on varchar არ განსხვავდება სასურველი ფიქსირებული სიგრძის on CHAR თუ თქვენ იცით, რომ ნომერი, წინასწარ. მაგრამ არის მართლაც, და მე ერთგვარი ამონაწერი რომ პასუხი რეალობა რომ იქ მაინც max, რომელიც შეიძლება იყოს შემაშფოთებელი, განსაკუთრებით თუ ექმნებათ პირის სახელი, რომ ის, უჩვეულოდ ხანგრძლივი, რომ თქვენ არ მოსალოდნელია. და ეს ასევე ცოტა ნაკლებად ეფექტური რეალურად მოძებნოთ VARCHARs როგორც ნაცვლად ეძებს სიმბოლო, განსაკუთრებით ხანგრძლივი მაგიდები, რომლებსაც აქვთ უამრავი და უამრავი მონაცემები. ასე რომ აქ ძალიან, თემატური კვლავ აშკარა არჩევანი. ასე რომ მხოლოდ გადმოგცეთ გრძნობა სხვა მონაცემთა ტიპები, რომ შესაძლოა საპროცენტო არც p განხორციელება შვიდი ან მომავალში, არსებობს INT. არსებობს BIGINT, რომელიც ჰგავს ხანგრძლივი ხანგრძლივი. ეს tends უნდა იყოს 64 ბიტი. არსებობს ათობითი, რომელიც თქვენ ნახავთ პრობლემა კომპლექტი, რომელიც ბევრად სუფთა პასუხი პრობლემები, შეექმნა ერთად float და მცურავი პუნქტიანი ორაზროვნება. და შემდეგ იქ წამების. არსებობს ფაქტიურად მონაცემები ტიპის რომ აქვს ჰგავს წელი, თვე, დღე, და საათი, წუთი, და მეორე. მაგრამ SQL მონაცემთა ბაზების ასევე აქვს რამ ჩვენ მოვუწოდებთ ინდექსები. და ინდექსი არის ის, რასაც თქვენ დააკონკრეტა, თუ როდის შექმნაში მაგიდა მიიღოს ძიება და სხვა ოპერაციების უფრო ეფექტური. კერძოდ, არსებობს რაღაც მოუწოდა პირველადი ინდექსი, რომ თქვენ შეიძლება აცხადებენ, ასეთია. ეს გავაკეთეთ თქვენთვის მომხმარებლის მაგიდასთან ჩვენ მოგაწვდით. მაგრამ შეამჩნევს თუ მე ხელით recreating მომხმარებლებს მაგიდასთან აქ ვაძლევთ ეს სახელი მომხმარებლებს. მე უკვე მითითებული პირადობის მოწმობა. I მითითებული INT. I მითითებული username ერთად მაქსიმუმ 32 სიმბოლო. მაგრამ თუ ჩვენ შევინარჩუნოთ სენსორული ამ საკმაოდ ფართო ფანჯარა, ცნობა არსებობს bunch სხვა რამ შემიძლია დააკონკრეტა. ერთი, მე შეგიძლიათ მიუთითოთ ატრიბუტები ისევე როგორც, იცით, რა, ამ INT უნდა იყოს ხელმოუწერელი. მე არ მინდა უარყოფითი რიცხვები, ასე რომ, მოდით ეს ხელმოუწერელი. Null არ არის შესაბამისი აქ იმიტომ, მე მინდა ყოველ მომხმარებელს გაქვთ უნიკალური ნომერი. მე არ მინდა, რომ იყოს null. მაგრამ ეს არ არის საინტერესო. შემიძლია დააკონკრეტა, რომ ID არის ან პირველადი გასაღები ამ მონაცემთა ბაზაში, ან ეს უნიკალური, ან ის ინდექსირებული, ან სრულ ტექსტში. ასე რომ, დღევანდელი მიზნებისათვის, ხანგრძლივი ამბავი მოკლედ, PRIMARY იმას ნიშნავს, რომ ეს უნდა იყოს როგორც კონცეპტუალურად და ტექნიკურად ველი, რომ ჩვენ ვიყენებთ ცალსახად იდენტიფიცირება მომხმარებლებს. ასე რომ, როდესაც ჩვენ ეძებოთ წევრებს, ეს არის ერთგვარი საქართველოს დაპირება გამოიყურება მათ ძირითადად რომ უნიკალური იდენტიფიკატორი. და მონაცემთა ბაზის უზრუნველყოფს, რომ თუ აქვს შესახებ 3, თქვენ არ შეგიძლიათ ფიზიკური ჩადეთ მეორე შესახებ რომ იგივე რაოდენობის 3. მონაცემთა ბაზის მხოლოდ ნაგვის შეინახოთ თქვენი ცვლილებები. რომელიც არის კარგი რამ, რადგან თქვენ შეგიძლიათ თავის დასაცავად თავს. თვითმმართველობის გარდა ამისა, სახელი. ასე რომ, მეორე რიგის, გაწვევას, არის username სფეროში. ასე რომ, მეორე რიგის აქ არის სახელი, როგორც ჩვენ შორს დარჩენილი. ასე რომ, რა შეიძლება მინდა დააკონკრეტა? მე არ დაიშვება, შესაბამისად, SQL, მიუთითოთ ორი ძირითადი ღილაკები. თქვენ შეგიძლიათ მიუთითოთ ერთობლივი გასაღები, სადაც თქვენ შევხედოთ ორივე სფეროებში, მაგრამ მათ არ შეუძლიათ ინდივიდუალურად იყოს პირველადი გასაღები. ასე რომ, გამორიცხულია. ასე რომ რაც შეიძლება მინდა აირჩიოს? ისე, UNIQUE მსგავსი სულისკვეთებით პირველადი გასაღები, სადაც თქვენ დააკონკრეტა ამ ველი არ უნდა იყოს უნიკალური, მაგრამ ის არ იქნება ერთი, მე გამოიყენონ ყველა დროის. და ჩვენ არ ვაპირებთ გამოვიყენოთ ეს ერთი ყველა იმ დროს, თუ რა მიზეზით ისევ? ის ნელა პოტენციურად თუ ეს გრძელი სახელი. უბრალოდ ნარჩენები დრო. INDEX, იმავდროულად, აღნიშნავს, რომ ეს არ იქნება უნიკალური, მაგრამ მინდა თქვენ მუშაობა თქვენი ჯადოსნური ქვეშ hood, რათა ის უფრო სწრაფად ჩემთვის ძიება ამ სფეროში. ასე რომ, ეს, ალბათ, არ არის შესაბამისი აქ. განთავსების სახელი, მინდა ამტკიცებენ, რომ UNIQUE არის კარგი პასუხი. მაგრამ ვარაუდობენ, რომ ჩვენ მივიღეთ წევრებს მეტი საინტერესოა, ვიდრე უბრალოდ სახელისა, ჰეშები და ID ნომერი. რა მოხდება, თუ ჩვენ მივეცით ხალხს სრული სახელები? რა მოხდება, თუ მივეცით მისამართები და სხვა მონაცემები მათ შესახებ? ისე, თუ დააკონკრეტა, რომ სვეტი მონაცემთა ბაზა ინდექსირებული, ეს იმას ნიშნავს რომ MySQL ან Oracle, ან რასაც მონაცემთა ბაზა თქვენ იყენებთ, უნდა იმუშაოს თავისი ჯადოსნური და გამოიყენოს გარკვეული ხელნაკეთობების მონაცემები სტრუქტურა, როგორიცაა ხე, ან trie, ან hash table, ან რაღაც გარანტიას რომ როდესაც თქვენ მოძებნოთ მონაცემების გამოყენებით აირჩიეთ ამ კონკრეტულ სფეროში - ისევე როგორც ეჩვენებინა, რომ ყველას ცხოვრობს ოქსფორდის ქუჩაზე. შეკითხვაზე, რომ. თუ თქვენ არ მითითებული წინასწარ, რომ გსურთ ინდექსი ამ სფეროში, ძებნა იქნება ბევრად, ბევრად უფრო სწრაფად. თუ თქვენ არ დააკონკრეტა ინდექსი, საუკეთესო შეგიძლიათ გააკეთოთ ხაზოვანი ძებნა, თუ ეს არ არის დახარისხებული. მაგრამ თუ, თქვენ შეიტანეთ INDEX, ჭკვიანი ადამიანი, რომელმაც მონაცემთა ბაზა - თქვენნაირი ადამიანების, ვინც ახლა ვიცი ხეები და ლელო და hash მაგიდები - ავტომატურად აშენება ასეთი მონაცემები სტრუქტურა RAM დავრწმუნდეთ, რომ იმ ეძებს ბევრად უფრო სწრაფად. სრული ამასობაში მსგავსი სულისკვეთებით, მაგრამ საშუალებას გაძლევთ ამის გაკეთება wildcard ძებნა, ისევე როგორც ეჩვენებინა, რომ ყველას ცხოვრობს ქუჩაში რომ იწყება წერილი O სხვადსხვა მიზეზის გამო. ამის გაკეთება შეგიძლიათ wildcard ძებნა იგრძნობა. ან, უფრო მყარი რამ, როგორიცაა შოუ მე ყველას, ვინც სიტყვა - ეჩვენებინა ყველასთვის, რომლის სახელიც იწყება განსაკუთრებული წერილი. თქვენ შეგიძლიათ მოძებნოთ სიტყვა ამ გზით. ყველა უფლება. ასე რომ, დიზაინი შესაძლებლობები არსებობს პოტენციურად. არსებობს სხვა, რომ მე ტალღის ხელები დროს. გამოდის, რომ თქვენ შეგიძლიათ სხვადასხვა შენახვის სისტემებში. და ეს უფრო arcane, ვიდრე ჩვენ გვჭირდება რა თქმა უნდა, პრობლემა კომპლექტი შვიდი. ჩვეულებრივ, თქვენ ბიჭები გამოყენებით რაღაც მოუწოდა InnoDB. თქვენ ნახავთ ნახსენები ეს სადღაც phpMyAdmin-ის ინტერფეისი სავარაუდოდ. მაგრამ ვიცით, რომ არსებობს სხვა დიზაინი გადაწყვეტილებები, რომლებიც პოტენციური ინტერესი მოდის საბოლოო პროექტების, თუ თქვენ რაღაც ვებ დაფუძნებული. მაგრამ მოდით გავაკეთოთ ეს. მოდით წავიდეთ წინ და ამით ამ თემაზე ეკრანზე როგორც teaser ამისთვის ამბავი ჩართვის თქვენ, roommate, და ერთი ჭიქა რძე. ავიღოთ ორი წუთი ან ასე შესვენება აქ. და თუ შეგიძლიათ გამყარებაში გარშემო, მოდით მოდის უკან, გამოიყურებოდეს ცოტა უფრო SQL, და მაშინ ცოტა JavaScript ერთად p განხორციელება რვა გათვალისწინებით. ყველა უფლება. ასე რომ, მოდით მისაღებად თქვენ ფიქრი კუთხეში შემთხვევაში, რომ შეიძლება ძალიან ადვილად წარმოიქმნება კონტექსტში გამოყენებით მონაცემთა ბაზაში, ან გულწრფელად ვამბობ, თუნდაც გამოყენებით რეალური სამყაროს რამ ისევე როგორც ბანკომატების ფულს. ასე რომ აქ მაცივრით. დავუშვათ, რომ თქვენ მოხვდით ერთი ძალიან in თქვენი dorm ან თქვენს სახლში. და თქვენ მოხვდით ერთი roommate, და ორივე თქვენ ნამდვილად რძის მაგალითად. ასე, რომ თქვენ მოვიდა სახლში კლასის ერთ დღეში. მან ის არ არის უკან. თქვენ გახსნა მაცივარი. ნამდვილად გსურთ დიდი ჭიქა რძე. არ არსებობს რძე. ასე რომ, რა გავაკეთო? თქვენ დახურეთ მაცივარი. თქვენ Grab თქვენი გასაღები. თქვენ გარეთ მოედანზე. და თქვენ მიიღებთ ხაზის CVS იმ თვითმმართველობის checkout რამ, რაც ყოველთვის დასჭირდეს, ვიდრე რეალურად მქონე მოლარეების. Anyhow. ასე რომ, იმავდროულად, dot dot dot, თქვენი roommate მოდის სახლში და ის ასევე აქვს hankering ზოგიერთი რძე. ასე რომ, იგი ხსნის მაცივარი, გამოიყურება შიგნით, და oh, რა. არარის რძე. ასე რომ, იგი ხელმძღვანელობს out, ხდება წასვლა სხვა CVS, რომელიც მხოლოდ ბლოკის მოშორებით რატომღაც, და მას ან იგი იღებს ხაზი ყიდვა ზოგიერთი რძე. ამასობაში, მოვა სახლში, ის ან იგი მოდის სახლში, და რა თქვენ საბოლოოდ აქვს? ორჯერ იმდენი რძე. მაგრამ თქვენ ნამდვილად არ მინდა რძე რომ ბევრი რამ. ახლა თქვენ გაქვთ იმდენად რძე, რომ ახლა ერთი მათგანი უბრალოდ აპირებს წასვლა არაჟანი საბოლოოდ. ასე რომ, ეს მართლაც ცუდი პრობლემა. უფლება? მერე რა მოხდა? ასე რომ, პრინციპულად, ეს არის ერთგვარი of სასაცილოა მაგალითად. მაგრამ ქვეშ Hood, რაც ჩვენ გვქონდა ხდება აქ არის, როგორც თქვენ შემოწმდება სახელმწიფო ზოგიერთი ნაჭერი მეხსიერება, მაცივრით. როგორც თქვენ შემოწმდება სახელმწიფო ზოგიერთი ცვლადი. თქვენ ორივე გაამახვილა დასკვნა რომ მაშინ მოქმედებდა. მაგრამ, სამწუხაროდ, ხოლო თქვენი roommate იყო მაღაზიაში, სახელმწიფო, რომელიც ცვლადი შეცვლილა, იგი დაბრუნდა და ახლა სურს, რომ შეიცვალოს სახელმწიფო, მაგრამ ეს უკვე შეიცვალა წელი მისთვის. და რა თქმა უნდა, მას არ ექნება წავიდა მაღაზიაში, თუ მათ იცოდნენ რომ თქვენ უკვე მიემართებოდა. ასე რომ რეალურ ცხოვრებაში, როგორ შეიძლება თავიდან ავიცილოთ ეს პრობლემა, ვთქვათ თქვენ გაქვთ მაცივარი, თქვენ გაქვთ roommate, და თქვენ ნამდვილად მიყვარს რძე? აუდიტორია: კომუნიკაცია. დავით Malan: კომუნიკაცია. OK. მაგრამ როგორ შეიძლება თქვენ დაუკავშირდეს? აუდიტორია: დატოვე შენიშვნა. დავით Malan: დატოვე შენიშვნა, არა? ყოველთვის დატოვონ შენიშვნა, ამისთვის გულშემატკივრებმა შოუ. ყველა უფლება, ყოველთვის დატოვონ შენიშვნა, ან დააყენა ნამდვილად მოსწონს ბოქლომი ან რამე on მაცივარი რომ ინარჩუნებს თქვენი roommate საწყისი ფასი შემოწმების მდგომარეობის რომ განსხვავებულია. რატომ შეიძლება ეს იყოს გერმანე to პრობლემა ნაკრები შვიდი, ან ბანკომატების მეშვეობით. ისე, წარმოიდგინეთ მსოფლიო, ATM, სადაც შეიძლება იყოს შეუძლია წავიდეს მდე ბანკომატი მანქანა აქ, და კიდევ ერთი ბანკომატი აქ. ეს მაშინ, ხშირია. და ვარაუდობენ, თქვენ ორი ATM ბარათები, რაც შესაძლებელია მოიპოვოს. თქვენ შეხვიდეთ როგორც მანქანები ეფექტურად ერთდროულად, იმედია ხოლო არავის ეძებს. და მაშინ შეიტანეთ თქვენი პინ დაახლოებით ერთდროულად. და მერე გავაკეთოთ ბალანსი შეკითხვის , რამდენად ბევრი ნაღდი გაქვთ. და ვთქვათ თქვენ გაქვთ $ 100 დარჩა ანგარიშზე. ასე რომ, არსებითად ერთდროულად, თქვენ ამბობენ ერთი, ნულოვანი, ნულოვანი, შევა. თქვენ იმედია დაიბრუნებს გარკვეული თანხა. მაგრამ რა თანხა შეიძლება თქვენ დაიბრუნოს? ახლა კომპიუტერის დღის ბოლოს, მით უმეტეს, თუ ისინი ესაუბრებიან სერვერები, არ არის აუცილებელი რამ ამ მიზნით, რომ ეს მოსალოდნელი იყო. ასე რომ ვივარაუდოთ, რა ხდება, რადგან რაც არ უნდა ქსელის სიჩქარე საკითხები , ან CPU საკითხები არ არსებობს, ან რამე მსგავსი, ვივარაუდოთ, რომ პირველი ATM ამოწმებს თქვენს ბალანსი და ხედავს, რა, ამ ადამიანს აქვს $ 100. მაგრამ შემდეგ შეწყდა განადგურდეს, რადგან შესაძლოა სარეზერვო ხდება და ამიტომ შენელებისა. ან იქნებ მაშინ, როცა შემოწმების, ქსელის კავშირი მივიღე ცოტა ნელა, რადგან ამ რაღაც. ისინი ფიზიკური მოწყობილობები. ასე რომ, ამ დროს კი მეორე ATM არის სვამს იგივე კითხვას. რა თანხა ამჯამად დავით აქვს? $ 100 არის პასუხი. იმის გამო, რომ პირველი ATM ჯერ კიდევ არ არის გაგზავნილი გაგზავნა სხვაობა $ 100, ორივე ბანკომატების არ დაათვალიერა ბანკის სარდაფით, ხედავს, იქ 100 $ არსებობს, და ახლა როგორც მანქანები პოტენციურად არიან აპირებს Spit out პასუხი. ახლა ეს არის დიდი თქვენ გარკვეული თუ რა ბანკი არ საბოლოოდ არის შეცვალოს თანხა მინუს 100 by შექმნის ცვლადი ტოლია თქვენი საბანკო ანგარიშზე უდრის 0, წინააღმდეგ კეთების მინუს 100. ახლა უარეს შემთხვევაში ბანკი - ან საუკეთესო ბანკი იმავდროულად, ისინი გადმოგცეთ 200 აშშ დოლარი, ხოლო თქვენი საბანკო ანგარიში გვიჩვენებს უარყოფითი $ 100, რომელიც რეალურად არ ისარგებლოს თქვენ ყველა. მაგრამ საქმე იმაშია, რომ ამ რასის პირობა ორი roommates მისაღებად რძე, ან ორი ბანკომატების ცდილობს ნაღდი და შეცვალოს სახელმწიფოს სარდაფით ამავე დროს არსებობს რაიმე დრო გაქვთ მონაცემთა ბაზაში. ახლა პრობლემა მითითებული შვიდი, ეს საკითხი ჩნდება იმ თვალსაზრისით, რომ თუ ყიდვა წილი Facebook მარაგი, და შემდეგ მაგალითად ყიდვა მეორე წილი Facebook მარაგი, თქვენ უნდა მიიღოს გადაწყვეტილებას programmer. იმისათვის, რომ გადაწყვიტოს, თუ როგორ უნდა განახლდეს მონაცემთა ბაზა, შანსი თქვენ აპირებს აქვს ერთი რიგის რომ მარაგი, და ეს არის ერთი გზა ამის შესრულება. და თქვენ აპირებს აქვს ერთი წილი FB, რაც მათი საფონდო ticker სიმბოლო ეს სახელი, ან ამ მომხმარებელს პირადობის მოწმობა, უნიკალური იდენტიფიკატორი. მაგრამ იგივე ამბავი შეიძლება მოხდეს აქ. თუ თქვენ SELECT in SQL, როგორც ნახავთ ამ პრობლემის მითითებული შვიდი როდესაც ხედავთ, oh, დავით ერთი წილი საქართველოს Facebook საფონდო. ნება მიბოძეთ ახლა შეცვლის ეს უნდა იყოს ორი აქციები, იმიტომ, რომ მას სურს ყიდვა მეორე წილი. თუმცა ვარაუდობენ, დავით შეეძლოთ ორი ბრაუზერის ფანჯარა ღია, ან ვივარაუდოთ, რომ ეს ერთობლივი ანგარიში ორი მეუღლის, და ორივე მათგანი ცდილობს შეასრულოს იგივე ოპერაცია, არსებობს, ძალიან, პოტენციური არსებობს გადაწყვეტილება იქნება მზადდება წინა სახელმწიფოს მსოფლიოში - ანგარიშის ერთი გაზიარება - და ორივე ადამიანი, ან ორივე სერვერზე, ახლა ცდილობენ ამბობენ იყოს ეს ორი იზიარებს. მაგრამ ამ შემთხვევაში, თქვენ ალბათ ბრალი ჩემთვის ფული, როგორც აქციები, მაგრამ incremented მხოლოდ, რომ ერთ დროს. ასე რომ, მოკლედ, ფუნდამენტური პრობლემა აქ, როგორც ხუმრობა წასვლის შესახებ აღვნიშნოთ, ან აყენებს ბოქლომს, არის თუ ორი ადამიანი, ან ორი თემა - ვფიქრობ, უკან ნულიდან - შეიძლება შეამოწმოს სახელმწიფო ზოგიერთი ცვლადის და შემდეგ რაღაცის შეცვლა, რომ ცვლადი, მაგრამ ეს ორი რამ არ მოხდეს ამავე დროს, მაგრამ შეიძლება შეწყდეს მიერ სხვა რამ ხდება, მონაცემთა მოხვედრის ძალიან უცნაური სახელმწიფო. თქვენ შეუძლია ისარგებლოს ან შეგიძლიათ განიცდიან იმ გაგებით, ფული მაგალითი. ასე რომ, პრობლემა ნაკრები შვიდი, მოგაწვდით ეს ერთი ხაზი კოდი, რომელიც ხანგრძლივი ამბავი მოკლედ, წყვეტს ამ პრობლემა MySQL. ეს ძალიან დიდი ხნის დავალებით, რომელიც არ კი ჯდება გადატანა ერთი ხაზი ეკრანზე აქ უზრუნველყოფს, რომ თქვენი ოპერაცია რასაც ატომური. ეს ყველაფერი ხდება ერთდროულად, ან ეს არ მოხდება ყველა. ეს ძალიან დიდი ფრაზა ვერ მისაღებად გაწყდება ნაწილობრივ. ხოლო ის, რაც არ არის ფაქტიურად თუ რას ამბობს. ჩადეთ შევიდა რამდენიმე მაგიდასთან შემდეგ სამი სფეროებში ის კონკრეტული ღირებულებები, არამედ, ერთნაირი გასაღები, არ გავაკეთებთ ჩანართით. ნუ განახლება. ასე რომ, ეს მსგავსი შერჩევა და ჩანართით ასე ვთქვათ, ამავე დროს. და რა არის მთავარი, რომ ალბათ მიმდინარეობს მოხსენიებული აქ? გამოდის, და დაინახავთ ეს პრობლემა მითითებული შვიდი-ს სპეც, რადგან ჩვენ განაცხადა, რომ იყოს უნიკალური გასაღები ამ კონკრეტულ მაგიდაზე ისეთი, რომ ვერ რამდენიმე რიგები იმავე მომხმარებელი იგივე penny stock სიმბოლო - ამ მაგალითად აქ, DVN.V არის სულელური penny stock, რომ ჩვენ მიემართათ ამ სპეც. იმის გამო, რომ ჩვენ განაცხადა, რომ ეს უნიკალური, რას ნიშნავს, რომ თუ თქვენ ცდილობენ ჩადეთ დუბლიკატი ზედიზედ, თქვენ ნაცვლად აპირებს განაახლოს გარეშე სხვისთვის მქონე შანსი შეცვალოს სახელმწიფო მსოფლიოს ან. ასე რომ, მოკლედ, რაც უზრუნველყოფს რამ ატომური. უფრო ზოგადად, თუმცა, მონაცემთა ბაზებთან ისევე როგორც MySQL - და არ არის საჭირო ამ ფუნქცია P-ნაკრები შვიდი, მაგრამ შენარჩუნება ეს გონება მომავალში - მხარს რა ეწოდება ოპერაციები, სად შეიძლება ითქვას START ოპერაციის ფაქტიურად. ამის შემდეგ შეგიძლიათ შეასრულოს ორი SQL განცხადებებს. და SQL განაცხადი, როგორც ნახავთ ამ P-ნაკრები შვიდი, გამოიყურება პატარა მსგავსი რამ. განახლების მაგიდა სახელწოდებით ანგარიშზე. მითითებული ბალანსი სვეტი ტოლია, რაც არ უნდა ბალანსი სვეტი გაკეთებული არის მინუს 1,000 სადაც ნომერი, ანგარიშის ნომერი, ისევე მომხმარებლის ID, შეადგენს 2, და შემდეგ განახლება ანგარიშის dot dot dot. ასე რომ, layman პირობები, რა ეს ორი შეკითხვებს, როგორც ჩანს, აკეთებს რეალური გრძნობა საბანკო? აუდიტორია: გადასვლას დანაზოგების სახით. დავით Malan: ზუსტად. თანხის გადაცემის ერთი ანგარიში სხვა. და ეს არის კიდევ ერთი მაგალითი იმისა, თუ სად მინდა ეს ორი რამ უნდა მოხდეს ან არ მოხდება. თქვენ არ სურს რაიმე მიიღონ შუა ისინი და პოტენციურად არეულობას up მათემატიკის, ან არეულობას up რამდენად ფული გაქვთ, ან რამდენად ფული ბანკს აქვს. რა არის მართლაც ლამაზი შესახებ გარიგებების MySQL-ის არის, რომ, და მონაცემთა ბაზების უფრო ზოგადად, არის ის, რომ და ჭკვიანი ადამიანები, რომლებიც მე განხორციელდა ეს თვისებები გაერკვნენ, თუ როგორ უნდა დარწმუნებული ვარ, რომ ორივე რამ ხდება თუ არა ყველა. და თუ მართლაც მიისწრაფვის, რათა ნახვა რომ გამოყენებული იქნას ხალხი campus, ადამიანი რეალურ ცხოვრებაში, აკეთებს რაღაც გაშვების აზრი, ეს არის სახის დიზაინი გადაწყვეტილება, რომელიც გახდება ოდესმე ასე მნიშვნელოვანია. წინააღმდეგ შემთხვევაში, დაიწყება დასაკარგი მონაცემებით, დაკარგავს მომხმარებლებს, ან უარეს შემთხვევაში, როგორც ჩვენ ვნახეთ აქ, პოტენციურად დაკარგოს ფული. ასე რომ, კიდევ ერთხელ, უფრო, რომ პრობლემა მითითებული შვიდი, ისევე, როგორც, ალბათ, ზოგიერთი თქვენ საბოლოო პროექტები. მოდით შეცვლის სურათს გვქონდა მომენტში წინ მხოლოდ ერთი გზა. ნება მომეცით, რეალურად ვხედავ თუ შემიძლია - Nope, რომ გაქრა. არსებობს ეს არის. ასე რომ, ეს არის, სადაც დავტოვეთ ბოლო დროს. და აღმოჩნდება, ჩვენ ვაპირებთ toss კიდევ ერთი რამ შევიდა mix აქ - ენის მოუწოდა JavaScript. ასე რომ JavaScript რეალურად შეესაბამება წინამდებარე ცალი - და მე არ საკმაოდ დატოვება საკმარისი ოთახი, ასე რომ, ეს არ არის ახლა მასშტაბით. OK, ეს ნამდვილად მიზერული. OK, ასე რომ, JavaScript. ყველა უფლება. მე ნამდვილად ვაკეთებთ დათვური. ყველა უფლება. ასე რომ JavaScript კიდევ ერთი პროგრამირების ენა, და ჩვენი ბოლო, თუ, რომელიც ეხმარება დარწმუნება, რომ იქ არ ბევრად უფრო ხანძრის ჰიდრანტების აქ. ასე რომ JavaScript ასევე გაგებული, ენა, რაც იმას ნიშნავს არა შეადგინოს მას zeros და პირობა. თქვენ უბრალოდ გაუშვით. მაგრამ რა არის პრინციპულად სხვა ერთად JavaScript, როგორც წესი, არის ის, რომ თქვენ არ აწარმოებს თქვენს სერვერზე. იგი ვერ აწარმოებს მოწყობილობის თავისთავად. უფრო მეტიც, იგი იღებს გადმოწერილი by შესახებ მეშვეობით HTTP მათ browser - Chrome, Safari, Internet Explorer, Firefox, რაც - და ეს ბრაუზერი რომ გაუშვებს ამ კერძოდ პროგრამირების ენაზე. ასე რომ იყოს ნათელი, PHP დღემდე უკვე შესრულებული არც ერთი ბრძანება ხაზი ჩვენი შავი და თეთრი ფანჯარა, სერვერზე ისევე როგორც მოწყობილობების, კომპიუტერის ისევე როგორც მოწყობილობების, ან უკვე შესრულებული სერვერზე გაშვებული კომპიუტერი. მაგრამ თემა ისაა, რომ PHP დღემდე უკვე შესრულებული სერვერული, ისე მომხმარებლის და მომხმარებლის ბრაუზერის არასდროს ხედავს ხაზი PHP კოდი. რეალურად, თუ ოდესმე გახსნა ბრაუზერი თქვენი ნახვა ან სხვა და რეალურად ვხედავ PHP კოდი თქვენს ფანჯარა, ვიღაცამ ბრალია. იმის გამო, რომ ეს არ ნიშნავს, რომ გაგზავნილი ბრაუზერის პირდაპირ. ეს უნდა იყოს შესრულებული და აღმოჩნდა შევიდა რაღაც HTML. მაგრამ JavaScript არსებითად პირიქით. ეს იმას ნიშნავდა, რომ აწარმოებს, როგორც წესი, შიგნით საქართველოს მომხმარებლის ბრაუზერის ფანჯარაში. და რა სახის საიტები გამოყენება JavaScript შემდეგ ამ დღეებში? ისევე ფაქტიურად ყველა პოპულარულ ვებ. ყველა საიტზე, რომ თქვენ ბიჭები ალბათ გამოყენება ყოველდღიურად გამოიყენოთ JavaScript for მარტივი და კიდევ ყველაზე სექსუალური ფუნქციები. ასე რომ მსგავსი რამ Facebook Chat თუ თქვენ იყენებთ რომ. რა, რომ რეალურად მუშაობს? ისე დღემდე, ყველა პერსონალის ჩვენ გაკეთდეს HTML და PHP ვარაუდობს, რომ თქვენ გაიყვანოს up URL და დააჭიროთ, და ხედავთ ზოგიერთ HTML ფაილი. და ვაწვებით ბმულს, რომელიც ცვლის URL, ცვლის გვერდი და ჩატვირთვა ახალი ტელეფონი. Click კიდევ URL ან წარადგინოს ფორმა, თქვენ მიიღეთ whisked მეორეში გვერდი ხედავთ რამდენიმე ახალი ტელეფონი. მაგრამ მისი გამოყენება რაღაც Facebook Chat, ან Gchat, ან Google რუკები, იშვიათად ამჯამად მთელ გვერდზე განახლდა ისეთი, რომ ხედავთ თეთრ ეკრანზე მომენტალურად და შემდეგ ახალი ტელეფონი. უფრო მეტიც, ვებ გვერდები დღეს დინამიურად მიღების განახლება ისევ და ისევ და ისევ ყველა სახის საქართველოს კულუარებში. და აღმოჩნდება, რომ როდესაც თქვენ წასვლა მსგავსი რამ Facebook, ან Gchat, ან Gmail, და გვერდზე განახლებები ავტომატურად განახლების გარეშე მთელი ეკრანზე, თუ რა მოხდა არის ის, რომ თქვენი ბრაუზერის გააკეთა ერთგვარი ფარულად დამატებითი HTTP ითხოვს - არა მთელი ვებ გვერდები, მაგრამ მხოლოდ პატარა მოცულობით მონაცემები, ისევე როგორც მყისიერი შეტყობინება, რომ თქვენი მეგობარი მხოლოდ გაგზავნილი თქვენ, ან სტატუსზე, რომ ვიღაცამ უბრალოდ გაგზავნილი თქვენ, ან tweet რომ ვიღაცამ უბრალოდ გაიგზავნა. უბრალოდ მიღების პატარა თხოვნას მონაცემები, და შემდეგ გამოყენებით JavaScript, ამ პროგრამირების ენა, შეცვალოს რა ვებ გვერდზე ჰგავს გარეშე სერვერზე ეხმარება გარეშე სერვერზე მომტანი, რომ HTML. ასე რომ, მოკლედ, JavaScript შეიძლება გამოყენებულ იქნას შემდეგ არა მარტო მისაღებად ახალი მონაცემების სერვერზე განახლების გარეშე მთელი ან წარდგენის ფორმით. იგი ასევე შეიძლება გამოყენებული შეცვალოს ე.წ. DOM - დოკუმენტის ობიექტური მოდელი - რაც არის ლამაზი გზა ამბობდა ხე HTML რომ დავინახეთ, ბოლო დროს. ასე რომ, დარწმუნება, JavaScript არის syntactically იმდენად მსგავსი, რომ C ასევე. იქ არ არის მთავარი ფუნქცია. თქვენ უბრალოდ წერა კოდი და ეს მიიღებს შესრულებული, ან გაგებული, უფრო სწორად. პირობები გამოიყურება ასე. არ განსხვავდება C ან PHP, რომ ამ საკითხზე. ლოგიკური გამონათქვამების ან-ed ერთად გამოიყურება ასე. Anded ერთად გამოიყურება ასე. კომუტატორები გამოიყურება ასე. იყიდება მარყუჟების გამოიყურება ასე. მიუხედავად იმისა, მარყუჟების გამოიყურება ასე. ნუ ხოლო მარყუჟების გამოიყურება ასე. ეს არის ახალი. ასე რომ JavaScript არ აქვს foreach მშენებლობა თავისთავად, მაგრამ ეს მშენებლობა for ცვლადი მე მასივი, მე და ამ შემთხვევაში ხდება ინდექსი. ასე რომ, ეს ცოტა განსხვავდება, რომ foreach, თუმცა ახალი ვერსია JavaScript მოდის ყველა დრო, ისე კი, ამ ენებზე გამოსახულია მათ ვითარდება. და როგორც განზე, JavaScript ამ დღეებში ასევე შეიძლება გამოყენებული სერვერზე, ისევე, როგორც PHP გამოყენებით ფარგლებში მოუწოდა Node.js. ერთი CS50-ს TFS, კევინ, გამოიწვია სემინარი თემაზე Node.js, რომ ხელმისაწვდომია cs50.net/seminars. ასე რომ, თუ თქვენ აინტერესებს, ვიცი, რომ თქვენ შეგიძლიათ ამ სერვერზე მხარე, როგორც კარგად, მაგრამ ეს საკმაოდ ბოლოდროინდელი ტენდენცია, მაგრამ ძლიერი იმ. ეს არის ცოტა განსხვავებული. ეს არის როდის JavaScript. და რა დარტყმები თქვენ, როგორც სხვადასხვა წინააღმდეგ C ან PHP? არსებობს რამდენიმე სწრაფი ისტორიები ჩვენ შეგვიძლია ვუთხრათ აქ. რა აკლია წინააღმდეგ PHP? აუდიტორია: [inaudible]. დავით Malan: კი? ბოდიში, ვიმეორებ? აუდიტორია: არ გამოცხადების ტიპის ცვლადი. დავით Malan: ჩვენ არ გამოცხადების ტიპის ცვლადი. ასე რომ, რეალურად საკმაოდ მოსწონს PHP, ჩვენ არა ვართ სასურველი სახის ამ განსხვავებულია. პირიქით, ჩვენ უფრო generically ამბობდა var for განსხვავებულია. ჩვენ არ გვაქვს PHP-ს შეშფოთების შესახებ დოლარის ნიშანი, რომელიც ხოლო tedious to ტიპის, ამჯამად უფრო ნათელია, რომ რაღაც ის განსხვავებულია. ვინაიდან აქ, ჩვენ ერთგვარი დაბრუნება C მიდგომა მხოლოდ მოუწოდებენ ცვლადი სახელად ჩვენ გვინდა მისცეს მას, ისევე როგორც ნომრები. ასევე, როგორიცაა PHP, ჩვენ გვაქვს კვადრატულ ფრჩხილებში for ღირებულებები შიგნით რომ მასივი. ასე რომ ცვლადების in JavaScript ასევე შეიძლება მოსწონს ეს. გავითვალისწინოთ აქ ეს სიმებიანი მოუწოდა s, მაგრამ ანალოგიურად გვაქვს არ არის მითითებული რომ ეს იყოს მხოლოდ. აქ თუმცა ფუნქცია, რომელიც არ არსებობს ზუსტად ისე in PHP, მაგრამ ცოტა მსგავსად. ეს არის ობიექტი JavaScript. და ობიექტები სახის შვეიცარიის არმიის დანა მონაცემთა სტრუქტურა, რომ თქვენ მათ გამოყენებას შეძლებთ ნებისმიერი რაოდენობის რამ. აქ, მაგალითად, ჩვენ ვაცხადებთ ცვლადში გაცემა. ტიპის, რომ ცვლადის არის ობიექტი. შეგიძლიათ წარმოიდგინოთ, რომ ეს C struct რომ აქვს გასაღებები და ღირებულებები. სიმბოლო არის გასაღები. FB არის ღირებულება, სავარაუდოდ საფონდო სიმბოლო. მძიმე. ფასი არის კიდევ ერთი გასაღები, და მისი ფასი როგორც ჩანს, მცურავი წერტილი, ან ნომერი უფრო ზოგადად JavaScript, დოლარის 49,26. ასე რომ PHP არ გააჩნია - ჩვენ არ ჩანს PHP ობიექტების საკმაოდ ასე, მაგრამ ჩვენ მოვაწერეთ ვხედავ ანალოგი, რაც იყო, თუ რა? აუდიტორია: [inaudible]. დავით Malan: ასოციაციური მასივები. ასე რომ, მაშინ, როდესაც PHP აქვს ასოციაციური მასივების რომლის სინტაქსისიც ოდესმე ოდნავ ასე სხვადასხვა - დავინახეთ, კვადრატულ ფრჩხილებში. ჩვენ ვნახეთ უცნაური ისრები სიმბოლოს. JavaScript აქვს ობიექტი, მაგრამ ეს ძირითადად სემანტიკური განსხვავება და სხვადასხვა სინონიმი არის. თუმცა, როგორც განზე, PHP ასევე აქვს ობიექტების ისე, რომ ჯავის და სხვა ენებზე აქვს ობიექტების ობიექტზე ორიენტირებული პროგრამირების. მაგრამ ჩვენ გამოიყენოს ეს მხოლოდ მონაცემთა ტიპები ახლა. ობიექტები და ასოცირებული მასივები. ეს შეიძლება იყოს იგი უფრო ნათელი. აი რატომ ობიექტი არის სასარგებლო. როდესაც გსურთ განაცხადოს სტუდენტი, ისევე როგორც Zamyla, ჩვენ შევძლებთ რეალურად encapsulate ასე ვთქვათ შიგნით რომ ობიექტის გამოყენებით curly ფრჩხილებში, ისევე, როგორც ადრე მთელი bunch of გასაღებები და ღირებულებების აქ. ჩვენ გვყავს ID, სახლი და სახელი Zamyla, რასაც მოჰყვა მძიმით როგორც ჩვეულებრივი ბოლოს. ქვემოთ აქაც, ეს არის ოდნავ განსხვავებული, არამედ ძალიან ძლიერი ამ დღეებში. აი მასივი, და ვიცი, რომ იქ კვადრატული ფრჩხილი up ზედა და კვადრატული ფრჩხილი ბოლოში. და ეს არის მასივი, თუ რა მონაცემები ჩაწერეთ სავარაუდოდ JavaScript? ეს არის მასივი ეს გამოიყურება ისევე როგორც სამი ობიექტები. და მე ვიცი, რომ ეს ობიექტი მხოლოდ იმის გამო, რომ curly აფრთხილებს. და შეამჩნია არსებობს ღია curly გაუწიოს, რაღაცები, მჭიდრო Curly გაუწიოს, მძიმე, მაშინ კიდევ, მძიმე, და შემდეგ რამდენიმე. ასე რომ სამი არგუმენტი გამოყოფილი ორი მძიმეები. ასე რომ, ეს არის მასივი სამი ობიექტები. და თითოეული იმ ობიექტების, როგორც ჩანს, სტუდენტი ან თანამშრომელი ზოგიერთი სახის, თითოეული ID, სახლი და სახელი. მაგრამ მე უწოდა რაღაც მოუწოდა JSON - JavaScript Object ნოტაცია. და ეს არის მონაცემთა ფორმატი, რომელიც რეალურად ასე ძალიან პოპულარულია და vogue ამ დღეებში, რომ თუ წერთ პროგრამა, რომელიც იყენებს Facebook API, Twitter API, მართლაც თითქმის ნებისმიერი API out არსებობს ამ დღეებში, მათ შორის CS50 საკუთარი, მონაცემები თქვენ დავუბრუნდეთ არ არის ძველი სკოლა CSV ფორმატში. იმის გამო, რომ გავიხსენოთ, რომ CSV არის სუპერ მარტივი. უბრალოდ სვეტები გამოეყო by მძიმეები. JSON მონაცემები გაძლევთ უფრო მეტადატის. იგი ასოცირდება გასაღები ყველა ღირებულება, ასე რომ ისინი არ უნდა მხოლოდ ვივარაუდოთ, რომ zeroth სვეტი არის ერთ ღირებულება, სვეტი ერთი არის კიდევ ერთი, სვეტი ორი სხვა. ყველაფერი JSON ობიექტი აქ არის ერთგვარი თვითმმართველობის აღწერს, რადგან ყველა ერთი სახელები ამ ფაილის სიტყვასიტყვით ასახელებს წინაშე, როგორც ციტირებული სტრიქონი. მოდით შევხედოთ რამდენიმე მაგალითი აქ. ნება მომეცით წასვლას ელექტრო მოწყობილობების. და ნება მომეცით წასვლას ჩვენი vhost დირექტორია საჯარო. და ნება მომეცით წასვლას JavaScript დირექტორია. და მოდით წავიდეთ წინ და ქმნის dom-0.html, სადაც DOM მხოლოდ იმას ნიშნავს, დოკუმენტის ობიექტურ მოდელს. ეს ხე პერსონალი, რომელიც მე მოხსენიებული ადრე. და ნება მომეცით შესთავაზოს შემდეგ. აი ვებ გვერდი, რომლის სხეულის საკმაოდ მარტივია. ასე რომ ქვევით აქ ბოლოში, შეამჩნია მაქვს ფორმით. ჩვენ ვნახეთ იმ ადრე. მას აქვს ორი საშუალებებით, რომელთაგან ერთი აქვს ID სახელი, რომელთაგან ერთი აქვს ტიპის წარმოადგინოს და პირველი ერთი ტიპის ტექსტი. ასე რომ, ეს რეალურად ჟღერს საკმაოდ მარტივია. მოდით წავიდეთ აქ. მოდით დავუბრუნდეთ ამ გვერდზე აქ. მოდით წასვლას localhost და წასვლას ჩვენი JavaScript დირექტორია, და წავიდეს dom-0, და აქ ჩვენ ამ ფორმით. ასე რომ, როგორც ჩანს, ყველა ამ გვერდზე აკეთებს. მას აქვს სახელი სფეროში submit ღილაკს. მაგრამ მე არ ვაპირებ გამოიყენოთ PHP აქ. მე ვაპირებ, რომ ყველაფერი გავაკეთოთ, კლიენტის მხარეს ასე ვთქვათ in JavaScript ასეთია. გაითვალისწინეთ, რომ მე მართლაც სახელს სფეროში ამ შეყვანის უნიკალური იდენტიფიკატორი, რომელიც რეალურად გადარჩენა ჩემთვის გარკვეული დროის მომენტში. და შენიშნავს, მე გააცნო კიდევ ერთი tag ხელმძღვანელი ჩემი ვებ გვერდი,  ტეგით. ასე რომ, ამ თვალსაზრისით, რომ JavaScript არის კლიენტის მხარის პროგრამირების ენა. ამ შემთხვევაში, ისევე, როგორც CSS, მე დააყენა ეს სწორი შიგნით ჩემი HTML. მაგრამ შეამჩნია მე განაცხადა ფუნქცია რომ გამოიყურება პატარა მოსწონს PHP syntactically, მაგრამ ეს არის რეალურად JavaScript, რადგან ერთხელ, ეს კლიენტის მხარის ბრაუზერში. და მიიღოს გამოიცანით რა ამ აპირებს ამის გაკეთება, მიუხედავად იმისა, რომ ზოგიერთი სინტაქსი აქ არის ახალი. აუდიტორია: მოიკითხე ვინც. დავით Malan: ის აპირებს მიესალმები ვინც იმყოფება ამ გვერდზე. ასე რომ, როგორ? ასე რომ შეამჩნია, თურმე in JavaScript არსებობს alert () ფუნქცია. ეს არის ძალიან სახის სამწუხარო ფუნქცია მართლაც მხოლოდ აპირებს ჯიბრზე მომხმარებლებს. ეს არ არის ერთი თქვენ უნდა ნამდვილად გამოიყენოს როგორც წესი, მაგრამ ეს სწრაფი და ბინძური გზა ერთგვარი ბეჭდვის რაღაც to გრაფიკული შესახებ ინტერფეისი, ისევე როგორც ბრაუზერში. ყურადღება მიაქციეთ, რომ აქ მაქვს სიმებიანი ერთჯერადი შეთავაზებები. გამოდის, რომ, განსხვავებით C, JavaScript შეიძლება რეალურად უნდა გამოიყენოთ ერთი შეთავაზებები და გულწრფელად უბრალოდ სახის სტილისტური კონგრესს შორის JavaScript პროგრამისტების გამოყენება ერთჯერადი შეთავაზებები. PHP, ისინი რეალურად აქვს ოდნავ სხვადასხვა მნიშვნელობა აქვს. მაგრამ ახლა, უბრალოდ ვიცი, რომ ეს არის ერთადერთი მიზეზი. კონვენციის JavaScript ხშირად გამოყენება ერთჯერადი შეთავაზებები, მაგრამ ჩვენ შეგვიძლია გამოვიყენოთ ორმაგი შეთავაზებები ორივეგან ისევე. ასე რომ, ეს არის საინტერესო. შეგახსენებთ, რომ ბოლო დროს, რომ ჩვენ გვქონდა, რომ სურათზე ეკრანზე რომ მიიპყრო ხე სადაც თქვენ ჰქონდა HTML კვანძის და ხელმძღვანელი კვანძის და სხეულის კვანძის, და შემდეგ რამდენიმე ტექსტში. მაგრამ იყო ერთი სპეციალური კვანძის დროს ძალიან ზევით, რომ მე ე.წ. დოკუმენტი. ასევე, თურმე in JavaScript, ნებისმიერი დრო წერთ პროგრამის JavaScript ბრაუზერის, თქვენ გაქვთ სპეციალური გლობალური ცვლადი. მსგავსი სულისკვეთება PHP-ის superglobals, ამ ერთი ეწოდება ყველა ამას დოკუმენტი. ეს მოსწონს struct, მაგრამ ეს struct ასევე აქვს ფუნქცია შიგნით მას. ასე რომ C struct მხოლოდ აქვს მონაცემები, როგორც წესი. მაგრამ JavaScript ობიექტი, როგორც ეს ტექნიკურად ასევე აქვს ფუნქცია, სხვაგვარად ცნობილია როგორც მეთოდები, შიგნით მას. და შეგიძლიათ დარეკოთ ფუნქცია შიგნით ეს ობიექტი საკმაოდ სიტყვასიტყვით აკეთებს სახელი, dot, და შემდეგ სახელი ფუნქცია, ან ისევ და ისევ მეთოდი. უბრალოდ სინონიმი, ნამდვილად. და რა ამ ფუნქციის გავაკეთოთ? შეგიძლიათ სახის ვხვდები, მისი სახელი. მიიღეთ ელემენტს ით. ასე რომ, ეს აპირებს მოძებნოთ ვებ გვერდზე, ძებნის რომ ხე, ეძებს რასაც კვანძის, AKA ელემენტს აქვს უნიკალური ID of გაცემა unquote სახელი. და მერე რა ვარ მე აპირებს? მე ვაპირებ კიდევ ღირებულება შიგნით რომ კვანძის in ხე, და მე ვაპირებ როგორმე მიესალმები რომ სახელი. ასე რომ ვხვდები, მიუხედავად იმისა, რომ ჩვენ არ მინახავს ეს არის, რა პლუს სიმბოლოები ნიშნავს, აქ და აქ, ალბათ? აუდიტორია: concatenate. დავით Malan: concatenate. უფლება, და ეს არის მხოლოდ სახის დიზაინის გადაწყვეტილებები ხალხმა წლის წინ. PHP, თქვენ concatenate რამ წერტილი. In C, თქვენ ხტომა მეშვეობით რამდენიმე hoops და მოვუწოდებთ ფუნქციები, როგორიცაა strcopy (), ან strcat (), ან სხვა მსგავსი ფუნქციები. მაგრამ JavaScript, გამოიყენოთ pluses. ასე რომ, ეს მხოლოდ concatenating სამი strings - hello, სახელი, და შემდეგ ძახილის წერტილი. ასე რომ, როდის და რატომ არის ეს ფუნქცია ე.წ. თუმცა? ასევე, მიიღოს ამოიცნობთ საწყისი HTML ბოლოში. რატომ არის მივესალმო () უწოდებენ, ან როდის? როგორც ჩანს, როგორც საუკეთესო შემიძლია გითხრათ, მე წარადგინოს, როდესაც ამ ფორმით არის წარმოდგენილი, მე ვაპირებ ამის გაკეთებას, რაც შიგნით ამ შეთავაზებები. და კონკრეტულად, მე ვაპირებ მოვუწოდო მოგესალმებით () და შემდეგ დაბრუნების ცრუ. ისე, ვნახოთ, რა წმინდა ეფექტი აქ არის პირველი. ნება მომეცით, წავიდეთ წინ და ტიპის , ვთქვათ, Loren, წარადგინეთ. გამარჯობა Loren. მოდით ვნახოთ, თუ იქნებ ეს მხოლოდ იღბლიანი განხორციელება. Nope. ამიტომ აკრეფით გარეთ რასაც ასახელებს მე რეალურად დააყენა იქ. მაგრამ შეამჩნია რა არ იცვლება. URL კვლავ dom-0.html. არ არსებობს register.php. არ არსებობს მეორე ფაილი. არ არსებობს სამოქმედო ატრიბუტი. რა არის ამ დაბრუნების ცრუ სავარაუდოდ, აკეთებთ? რატომ მოუწოდებენ მივესალმო () და შემდეგ დაბრუნების ცრუ ალბათ? რა ჩვეულებრივ ხდება, როდესაც თქვენ დააჭირეთ წარადგინეთ on ფორმა, რომელიც კი ჩვენ ჩანს გასულ კვირას? აუდიტორია: [INAUDIBLE]. დავით Malan: ეს მიდის სადღაც, არა? ეს გრძელდება რამდენიმე დანიშნულების URL. მაგრამ მე არ მინდა, რომ მოხდეს აქ. მინდა ჩემი ვებ გვერდი, სრულიად დინამიური, როგორიცაა Gmail, სადაც ერთხელ თქვენ იქ, თქვენ იქ. URL არ იცვლება ისე, რომ მიუთითებს, რომ მთელი გვერდი გადატვირთვა. პირიქით, მინდა, რომ შეიცვალოს რაღაც ისევე როგორც ბეჭდვის out რამე აქ ეკრანზე. ასევე ნება მიბოძეთ გაწმენდა ამ up ცოტა. ნება მომეცით გახსენით არ dom-0, მაგრამ ნება მომეცით გახსენით dom-2. უბრალოდ ასე რომ თქვენ ვნახეთ სინტაქსი აქ. გამოდის, რომ ის, რაც ჩვენ უბრალოდ არ იყენებს ნედლეული JavaScript. ასე რომ, ეს ნამდვილად ენა JavaScript. ზოგიერთ თქვენგანს შეიძლება ვიცი ბიბლიოთეკა მოუწოდა jQuery. ასე რომ jQuery არ არის იგივე რაც JavaScript. უბრალოდ ბიბლიოთეკა, მართლაც ჭკვიანი ბიჭი წერდა და პოპულარიზაცია, როგორიცაა რომ თითქმის ყველას მსოფლიოში არის იყენებს jQuery გამოყენებისას JavaScript. და ერთი შეხედვით, პატიოსნად, ეს გამოიყურება ცოტა მეტი cryptic. მაგრამ თქვენ იპოვით, განსაკუთრებით თუ იქ თქვენი საბოლოო პროექტი ვებგვერდი განვითარების, ნახავთ, რომ ეს ასუფთავებს რამ მდე და ინახავს თქვენ საკმაოდ რამდენიმე ხაზი კოდი. მოდით უბრალოდ ერთი შეხედვით, თუ როგორ ამ ფორმით მუშაობს. ყურადღება მიაქციეთ, რა მოვხსნა, როგორც ჩანს, ჩემი HTML? არ არსებობს on წარუდგინოს კურატორმა ასე ვთქვათ. არ არსებობს ატრიბუტი. იმიტომ, რომ თქვენ იცით, თუ რა მე ნამდვილად არ მინდა? ვიგრძენი, როგორიც ჩვენ დაცემა თარგმნეს ძველი ჩვევები არსებობს. ისევე, როგორც ეს დაწყებული თავს დაუდევარი to intermingle როგორც CSS ერთად HTML, იმიტომ, რომ თქვენ ერთგვარი სროლა სხვადასხვა ენებზე მთელ ადგილზე, ასევე ამან დაიწყოს თავს როგორიცაა ცუდი გზა ქვევით, სადაც მე აყენებს JavaScript კოდი შიგნით ჩემი HTML ვიდრე ფაქტორინგი ის. ასე რომ გაკვეთილი აქ. In dom-2.html, მე ფაქტორინგი ის. და მე ვაკეთებ რამ ოდნავ განსხვავებულად. ახლა, მე ვაპირებ ტალღის ხელები რა ამ მართლაც ქვეშ Hood. მაგრამ მხოლოდ ახლა ვივარაუდოთ, რომ პირველი ხაზი კოდი ამ ბიბლიოთეკაში მოუწოდა jQuery მხოლოდ იმას ნიშნავს, როდესაც დოკუმენტი მზად არის, ამის შემდეგ. იმის გამო, რომ ვებ გვერდები შეუძლია გარკვეული დრო, რათა ჩატვირთოს. თქვენ შეიძლება ნელი ინტერნეტი კავშირი, და ეს შეიძლება იყოს დაწნული და დაწნული, და საბოლოოდ ის დატვირთული. რომ ხაზი კოდი უბრალოდ ამბობს დაველოდოთ მთელი გვერდი მზად არის, დოკუმენტის მზად არის, შესრულებამდე ეს კოდი. და ახლა შეამჩნია, ეს არის ალბათ ყველაზე სასარგებლო პირველი მიიღოს დაშორებით jQuery. ეს ხაზი აქ არის ძალიან მსგავსი სულისკვეთება ამ ბევრად უფრო ხაზი აქ. ხოლო ნედლეულის JavaScript კოდი, არსებობს არსებობს დოკუმენტი გლობალური ობიექტი, აქვს ფუნქცია მოუწოდა getElementById (), იმ ხალხს, ვინც დაწერა jQuery გამარტივებული, რომ, უბრალოდ, ვამბობთ დოლარის ნიშანი, და შემდეგ შიგნით ფრჩხილებში დააყენა ორი შეთავაზებებს და შემდეგ დააყენა hash სიმბოლო მოჰყვა უნიკალური ID გსურთ დაიბრუნოს. ასე რომ, ეს უდრის document.getElementById. ამასობაში. წარმოადგინონ მხოლოდ იმას ნიშნავს, on წარდგენის ნებისმიერი ფორმით თქვენ მხედველობაში მარცხენა, წასვლა წინ და შეასრულოს ეს. მაგრამ ეს არის ცნობისმოყვარეობა ძალიან. რა არის უცნაური, თუ რა მე ხაზგასმით აქ? არა მხოლოდ ეს სახის syntactically ახალი, არსებობს ასევე რაღაც აკლია. აუდიტორია: ეს უბრალოდ მოუწოდა ფუნქცია? ეს არ მოუწოდა alert? დავით Malan: ჰო. ისე, ასე alert () ქვემოთ აქ, უნდა იყოს სამართლიანი. მაგრამ არ არის ნახსენები სახელი, როგორც თქვენ იცით, foo ან რაღაც აქ. და მართლაც, ეს არის ერთ ერთი თავისებურება of JavaScript, რომ საკმაოდ ძლიერი, არამედ საკმაოდ ახალი. და PHP რეალურად ამ ისევე. ნება მომეცით წავიდეთ წინ და ამის რაღაც რეალური სწრაფი. ნება მომეცით წავიდეთ წინ და დასვა აქ. ნება მომეცით ამის გაკეთება. ფუნქცია. მოდით მოვუწოდებთ ამ დამმუშავებლის (). კურატორმა ფუნქცია ასე ვთქვათ. რაღაც, რომელიც ახორციელებს რამდენიმე ოპერაცია. ნება მომეცით გაწმენდა ჩემი წანაცვლება. და დასვა აქ. და დააყენა, რომ აქ. Yep. OK. ასე რომ, ახლა მე მაქვს ფუნქცია მოუწოდა დამმუშავებლის (), რომ მე ნამდვილად არ ვიცი რას აკეთებს ამჟამად. უბრალოდ ჯერ კიდევ აქვს, რომ პერსონალი. Whoops. აიღო ძალიან ბევრი. მოდით გავაკეთოთ ეს. ყველა უფლება. ბოდიში. ყველა უფლება. ნება მომეცით ამის გაკეთება. OK. რომ გამოიყურება ლამაზი და სწორი ველით ახლა. ნება მომეცით ამის გაკეთება. ამის გაკეთება. და OK. ახლა, მოდით დააყენა ამ მეტი აქ. აღარ პროგრამირების on the fly. OK. ახლა, მოდით დავუბრუნდეთ სადაც ამბავი დაიწყო. მანამდე, მე ვთქვი, რომ ამ ხაზის აქ ნიშნავს, როდესაც დოკუმენტი მზად არის, წავიდეს წინ და ამის გაკეთება. რა გსურთ? ისე კონკრეტულად, მინდა წასვლა წინ და ამის შემდეგ. შეასრულოს ამ ხაზი კოდი, შემდეგ კი რაც მე მინდა თქვენ უნდა გავაკეთოთ არის მოვუწოდებთ ამ ფუნქციონირებას, როდესაც ფორმით წარედგინება. ახლა ეს არის ის, რაც საინტერესოა. ეს არ არის თავად ფუნქცია. ყურადღება მიაქციეთ, მე არ აყენებს ფრჩხილებში აქ ნორმალური გზა. მე სიტყვასიტყვით ავლით ფუნქცია მოუწოდა დამმუშავებლის () სხვა ფუნქცია მოუწოდა წარმოადგინონ () როგორც არგუმენტი, როგორც თუმცა, როგორც ცვლადი. და ეს არის ერთ ერთი თავისებურება JavaScript, არის ფუნქციები თავს მართლაც მხოლოდ აპროტესტებს. ფაქტობრივად, ისინი მართლაც მხოლოდ ცვლადები გარკვეული. და თუ სახელით ფუნქცია დამმუშავებლის (), არ არსებობს მიზეზი, მე არ შემიძლია გაიაროს ეს როგორც არგუმენტი აქ. ეს კი იმას ნიშნავს, როდესაც ფორმა ერთად ID დემო არის წარმოდგენილი, დარეკეთ ამ ფუნქციას. მაგრამ ახლა თუ მე გაუქმება ყველა ამ, რატომ მაშინ არ მინდა ალბათ გაკეთება ამ მომენტში წინ? ისე, ეს ანონიმური ფუნქცია. გულწრფელად რომ ვთქვა, მივხვდი, რატომ ვარ აწუხებდა დაკარგავთ დროს გამოცხადების ფუნქცია მოუწოდა დამმუშავებლის () მხოლოდ მოვუწოდებთ ეს ერთი და მხოლოდ ერთი ადგილი? იმ შემთხვევაში, თუ მე არ უნდა სახელი, და მე არ უნდა ეძახით ერთზე მეტი ადგილი, მოდით უბრალოდ განხორციელების ფუნქცია უფლება, სადაც მე უნდა მას. და ასე JavaScript და PHP მხარს ვუჭერთ რა მოუწოდა ანონიმური ფუნქციები, ნება მიბოძეთ გავაკეთოთ ზუსტად რომ აქ. მაგრამ ჩვენ მხოლოდ scratching ზედაპირზე. მოდით აჯავრებენ მხოლოდ რამდენიმე საბოლოო მაგალითები აქ. თუ მე წასვლას quote.php. გაითვალისწინეთ, რომ ეს არის რეალურად PHP ფუნქცია, PHP პროგრამას, რომელიც მე დავწერე რომ მოელის HTTP პარამეტრი ეწოდება სიმბოლო, და შემიძლია გაივლის ღირებულება, როგორიცაა FB. და თუ ჩვენ რეალურად შევხედოთ წყარო კოდი, ეს არის querying a free website ე.წ. Yahoo Finance, ისევე, როგორც p-set შვიდი, და ეს დაბრუნების ჩემთვის რაღაც აშკარად ფორმატი ცნობილი არის JSON - JavaScript Object ნოტაცია. უბრალოდ ობიექტი. გაითვალისწინეთ, რომ curly აფრთხილებს, quotes, მსხვილი ნაწლავის და მძიმეები. ახლა კი, ეს არის საკმაოდ გრილი. იმიტომ, რომ მე ალბათ გამოიყენოთ პროგრამირების ენის გენერირება მისამართები რომ გამოიყურებოდეს ამ დინამიურად, უფლება? შემიძლია შეცვლის ეს Google და დავუბრუნდეთ Google-ის საფონდო ფასი $ 1,017.55. მოდით ვნახოთ, თუ ჩვენ არ შეგვიძლია გამოვიყენოთ ეს ახლა. ნება მომეცით გადასვლა ajax-0, რაც ჰგავს შემდეგ. უბრალოდ ნახვა, რომ ფორმა ღილაკს. ნება მომეცით, აქ წავიდეთ წინ და აკრიფოთ YHOO განთავსების Yahoo საფონდო სიმბოლო, დააწკაპუნეთ მიღება Quote და ახლა შეამჩნია მე მიღებული alert და 32,86. ნება მომეცით რეალურად წასვლა fancier მობილური ამ გვერდზე, ორი ვერსია, და ჩაწერეთ ვთქვათ Microsoft, MSFT. მიიღეთ Quote. და ახლა შეამჩნია, არ alert. ყურადღება მიაქციეთ, სადაც იგი აცხადებს, ფასი უნდა განისაზღვროს? არსებობს მარტივი მაგალითები, რომ მინიშნებები რა Gchat და Facebook სტატისტიკა, და Gmail და სხვა ამგვარი საიტები ვაკეთებთ რეალურად იცვლება ვებ გვერდზე. შეამჩნია ეს. ნება მომეცით განაახლეთ გვერდი. ნება მომეცით გახსნა Chrome-ს ინსპექტორი. ნება მომეცით წავიდეთ ელემენტები tab ქვემოთ აქ. ახლა შეამჩნია, თუ მე მიუახლოვდით ქვემოთ აქ და გახსნა up შეამჩნევთ, რომ ეს არის ჩემი HTML DOM - ჩემი დოკუმენტი ობიექტის მოდელი. ეს არის ჩემი HTML. მაგრამ ახლა შეამჩნია, მიუხედავად იმისა, რომ ის აპირებს იყოს ცოტა რთული ვხედავ, რომ ორივე ადგილას ერთდროულად, თუ მე აკრიფოთ FB აქ, უყუროთ ბოლოში ეკრანზე მხოლოდ. სინამდვილეში იცვლება ჩემი HTML on the fly. და ის ამით უბრალოდ ამით რაღაც მსგავსი. თუ მე გახსნა ajax-2, გაფრთხილების განხორციელების რაღაც sexy როგორც რომ, მიუხედავად იმისა, რომ საკმაოდ მახინჯი, მაგრამ, როგორც დახვეწილი, როგორც, რომ ფუნქციურად, მას აქვს გარკვეული HTML ბოლოში. მაგრამ შეამჩნია, მე გამოიყენება აქვს. ჩვენ არ გამოიყენება ადრე, მაგრამ ეს არის ჰგავს, მაგრამ ის არ აიძულებს ყველაფერი onto ახალი ხაზი. უბრალოდ რაც მართკუთხა region იმავე ხაზის არსებითად. გაითვალისწინეთ, რომ მე მას პირადობის ფასი. და თურმე გამოყენებით იგივე JavaScript ბიბლიოთეკა, მაქვს ფუნქცია ე.წ. გაცემა (), რომ ე.წ. როდესაც სახით წარმოდგენილი. და რასაც მე ვაკეთებ ეს. მე გამოცხადების ცვლადი JavaScript ე.წ. url გადარჩენა ღირებულება quote.php? სიმბოლო =. სხვა სიტყვებით, მე ვარ დაწყებული მომზადება HTTP მოთხოვნა, ხოლო შემდეგ მე concatenating გადატანა, რომ პლუს რაც ელემენტს ერთად ID საქართველოს სიმბოლო, რომელიც გაფრთხილების ის არის, რომ ველში უფლება ქვემოთ აქ. ასე რომ, ისევე, როგორც ჩვენ გვქონდა ფორმები წარსულში. და მერე აღმოჩნდება, in jQuery, თუ მოვუწოდებთ. val (), რომელიც მოუწოდებს საქართველოს val ფუნქცია, ღირებულება ფუნქცია, რომელიც იღებს რასაც მომხმარებელს უკვე აკრეფილი შემოსული და მაშინ ყველა ქსელური ტრაფიკის რაც ხდება ეს. $. GetJSON. და როგორც განზე დოლარის ნიშანი არის უბრალოდ სტენოგრამის notation. ეს მართლაც jQuery.getJSON. მიიღეთ ჩემთვის JSON ამ URL და როდესაც მოთხოვნის ბრუნდება, მოვუწოდებთ ამ ფუნქცია და გადის როგორც არგუმენტი რაც არ დაბრუნდა სერვერზე. ასე რომ, სხვა სიტყვებით, თუ დაბრუნდეს ბრაუზერი და მე დაბრუნდეს quote.php, რა ჩემი ბრაუზერის აკეთებს დღითიდღე ამ ბლოკი მონაცემები. ხოლო როდესაც მე ამ ვებ გვერდზე აქ, შეამჩნია თუ ჩვენ ნაცვლად წასვლა ქსელი tab და ნათელი, და მერე ტიპის რაღაც GOOG for Google და მიიღეთ Quote შეამჩნევთ, გვერდზე არ შეცვლილა. მაგრამ HTTP მოთხოვნა, და რა დავბრუნდი აქ, თუ დავაკვირდებით პასუხი არის მთელი bunch of JSON რომ ჩვენ ხელმისაწვდომი ბოლოს ეს მარტივი ხაზი აქ. მონაცემთა არის ის, რაც იყო მიღებული სერვერზე. ფასი არის სახელი გასაღები I აინტერესებს. ასე რომ data.price მაძლევს, რომ. ახლა ისინი კი, და ამ უკანასკნელი მაგალითი. ამის გაკეთება შეგიძლიათ, კიდევ უფრო გვერდზე. ერთი რეალურად, კარგად ორი. ჩვენ შეგვიძლია დაიბრუნოს tag, თუ გახსოვთ ეს. სწორედ JavaScript. ჩვენ შეგვიძლია გავაკეთოთ, რომ. ძალიან საინტერესო. ჩვენ დავტოვებთ, რომ როგორც cliffhanger. მაგრამ უფრო excitingly, შეგიძლიათ რამ მოსწონს ეს. თუ მე Geolocation-1, აღმოჩნდება, რომ Chrome იცის, რომ ჩვენ ვიმყოფებით განედის გრძედის 42,37. -71,10. ასე რომ კიდევ უფრო არ არსებობს თქვენს განკარგულებაში. მაგრამ უფრო, რომ მომავალ კვირას. მომავალ ორშაბათს.