1 00:00:00,000 --> 00:00:02,570 [Powered by Google Translate] [Java 9] 2 00:00:02,570 --> 00:00:04,740 [David J. Malan - Universiteti i Harvardit] 3 00:00:04,740 --> 00:00:07,170 [Kjo është CS50. - CS50.TV] 4 00:00:07,170 --> 00:00:12,350 Dakord. Mirëpritur mbrapa. Kjo është CS50, dhe kjo është fillimi i javës 9. 5 00:00:12,350 --> 00:00:16,600 Sot ne të përqëndrohet në veçanti në projektimin, jo më në kontekstin e C 6 00:00:16,600 --> 00:00:20,010 por në kontekstin e PHP dhe pak e SQL dhe pak e JavaScript, 7 00:00:20,010 --> 00:00:23,730 veçanërisht drejt një fundi të dy pset 7 dhe gjithashtu projektin tuaj përfundimtar. 8 00:00:23,730 --> 00:00:26,310 Në fakt, nëse ju jeni në atë moment në projektin tuaj përfundimtar 9 00:00:26,310 --> 00:00:30,100 ku me sa duket si e një orë apo më shumë më parë ju të paktën filluar të jepni disa menduar 10 00:00:30,100 --> 00:00:33,730 për projektin tuaj përfundimtar dhe ju jeni duke menduar se ju dëshironi të bashkëpunojnë me 1 ose 2 shokët e klasës, 11 00:00:33,730 --> 00:00:36,150 në qoftë se ju jeni ka probleme lidh me tha shokëve, 12 00:00:36,150 --> 00:00:40,570 të ndjehen të lirë për të plotësoni formularin në cs50.net/partners/form. 13 00:00:40,570 --> 00:00:42,880 Ajo vetëm kërkon që ju të jeni, çfarë lloji i projektit ju jeni duke menduar rreth, 14 00:00:42,880 --> 00:00:44,870 ku ju jetoni vetëm për arsye logjistike. 15 00:00:44,870 --> 00:00:49,510 Dhe pastaj, nëse ju doni të mbani një sy në gjatë javës së ardhshme apo më shumë nga spreadsheet URL atje, 16 00:00:49,510 --> 00:00:53,520 atëherë ju mund të shihni një version read-e vetëm të doc Google 17 00:00:53,520 --> 00:00:56,010 në të cilën ne jemi mbledhur këtë informacion. 18 00:00:56,010 --> 00:00:58,930 Pra, nëse ju dëshironi të punoni me dikë, me të gjitha mjetet të ndjehen të lirë për të arritur jashtë për njerëzit 19 00:00:58,930 --> 00:01:00,480 nëpërmjet këtij mekanizmi. 20 00:01:00,480 --> 00:01:02,690 Por shumica e folks bëjnë solo punës. Kjo është krejtësisht në rregull. 21 00:01:02,690 --> 00:01:06,120 Pra, mos të ndjehen se kjo është në asnjë mënyrë të detyrueshme. 22 00:01:06,120 --> 00:01:09,680 Të premten ajo ishte vetëm mua dhe disa të ekipit në këtu, 23 00:01:09,680 --> 00:01:11,100 Teatri bosh për pjesën më të madhe. 24 00:01:11,100 --> 00:01:14,600 Ka qenë 3 turistë ulur deri atje, kështu që ishte pak i vështirë. 25 00:01:14,600 --> 00:01:18,970 Çfarë kemi biseduar për bazat e të dhënave ishte dhe ne biseduam rreth 7 pset pak. 26 00:01:18,970 --> 00:01:22,200 Dhe në qoftë se ju nuk e keni për të kapur të ndodhë që në video vetëm ende, kjo është në rregull. 27 00:01:22,200 --> 00:01:26,770 Unë do të përpiqemi për të përcaktuar të gjitha kushtet që ne ndryshe do të marrë për të dhënë 28 00:01:26,770 --> 00:01:28,840 bazuar në leksion të së premtes. 29 00:01:28,840 --> 00:01:32,550 >> Por sot ne do të përpiqemi për të merrni ju në pikën 30 00:01:32,550 --> 00:01:34,990 e jo vetëm të qenit në gjendje për të bërë diçka si pset 7 31 00:01:34,990 --> 00:01:37,360 por me të vërtetë kuptojnë se çfarë po ndodh nën kapuç, 32 00:01:37,360 --> 00:01:41,910 veçanërisht disa nga abstraksionet që kemi vënë në vend në dosjen functions.php 33 00:01:41,910 --> 00:01:45,780 për të bërë jetën tuaj pak më e lehtë, por në mënyrë që ju përfundimisht kuptoni 34 00:01:45,780 --> 00:01:48,760 kështu që kur rrotat e trajnimit të vijë jashtë në disa javë ju mund të mbijetojnë 35 00:01:48,760 --> 00:01:53,750 në botën reale dhe të bëjë këtë stuff pa ndonjë kornizë CS50 nën ju. 36 00:01:53,750 --> 00:01:57,500 Kjo $ _SESSION, për ato prej jush që janë të njohur 37 00:01:57,500 --> 00:02:01,960 ose që tashmë kapur video të premten, çfarë do SESIONI le të na bëjë 38 00:02:01,960 --> 00:02:04,330 në një aplikim PHP bazuar web? 39 00:02:04,330 --> 00:02:09,650 Kjo është një ndryshore superglobal, që do të thotë se është e ngjashme në frymë të GET dhe PAS 40 00:02:09,650 --> 00:02:13,970 dhe disa të tjerë, por çfarë është kjo gjë e dobishme për të? 41 00:02:13,970 --> 00:02:18,320 >> Çfarë është SEANCA përdoret për të? Po. [Student] Logging in 42 00:02:18,320 --> 00:02:21,040 Na vjen keq? [Student] Logging in Logging in vërtetë. 43 00:02:21,040 --> 00:02:25,100 Në pset 7 ne jemi duke përdorur këtë superglobal SESIONI për të lehtësuar logging in 44 00:02:25,100 --> 00:02:28,600 Dhe çfarë është e bukur në lidhje me këtë superglobal është se ajo është një grup shoqerues. 45 00:02:28,600 --> 00:02:33,190 Një grup asociativ, risjell, është vetëm një grup, por nuk kanë më të cilit indekseve të jetë një numër 46 00:02:33,190 --> 00:02:37,670 si 012. Ata mund të jenë numra ose ata mund të jenë edhe vargjet. 47 00:02:37,670 --> 00:02:44,890 Dhe kështu që nëse ju keni fetar në pset 7 ende, ju mund të kujtojnë se ne jemi ruajtjen e një ID kyç të quajtur 48 00:02:44,890 --> 00:02:50,330 brenda kësaj grup associative vlera e së cilës është diçka si 123 - 49 00:02:50,330 --> 00:02:53,780 çfarëdo regjistrohet aktualisht në ID e përdoruesit është. 50 00:02:53,780 --> 00:02:59,470 Motivimi për këtë është se edhe pas përdoruesi ka vizituar localhost 51 00:02:59,470 --> 00:03:02,720 ose faqen e internetit e mia më përgjithësisht dhe më pas ata kanë hyrë brenda, 52 00:03:02,720 --> 00:03:07,320 edhe në qoftë se ata nuk klikoni një lidhje ose të kthehen në faqen time për 5 minuta 53 00:03:07,320 --> 00:03:10,730 apo edhe një orë ose edhe një ditë, por ata lënë dritaren hapur shfletuesin e tyre, 54 00:03:10,730 --> 00:03:14,370 nëpërmjet këtij superglobal mund ta mbani mend se ata janë futur me emrin tuaj 55 00:03:14,370 --> 00:03:21,140 >> Me fjalë të tjera, ajo lejon mua për të ruajtur diçka pak më afatgjatë që unë dua në lidhje me një përdorues. 56 00:03:21,140 --> 00:03:24,390 Dhe ju mund të mendoni për atë me të vërtetë, si mishërim i një karrocë pazar. 57 00:03:24,390 --> 00:03:27,740 Vende si Amazon duket të ju lejojnë të vënë gjërat në një karrocë pazar, 58 00:03:27,740 --> 00:03:32,230 por HTTP, protokolli që fuqitë Web, është pa shtetësi 59 00:03:32,230 --> 00:03:34,230 në kuptimin që kur ju vizitoni një faqe interneti, 60 00:03:34,230 --> 00:03:37,290 për pjesën më të madhe që ju nuk keni ndonjë lidhje të vazhdueshme të rrjetit 61 00:03:37,290 --> 00:03:39,270 mes shfletuesin tuaj dhe server. 62 00:03:39,270 --> 00:03:42,190 Sa më shpejt që ju keni shkarkuar HTML dhe JPEGs dhe gifs dhe të gjithë që, 63 00:03:42,190 --> 00:03:48,200 lidhja shkon larg dhe ju vetëm duhet një kopje të HTML dhe gjësend nga serveri. 64 00:03:48,200 --> 00:03:53,000 Por në qoftë se serveri do të kujtoni diçka për ju, 65 00:03:53,000 --> 00:03:57,580 barra është në server të vërtetë regjistrojnë këtë informacion. 66 00:03:57,580 --> 00:04:00,130 Dhe kështu ju programues të cilët kanë kontroll mbi server 67 00:04:00,130 --> 00:04:04,400 mund të vënë çdo gjë që ju dëshironi më në brendësi të kësaj grup superglobal associative 68 00:04:04,400 --> 00:04:06,850 dhe ajo do të jetë atje herën tjetër përdorues vjen mbrapa, 69 00:04:06,850 --> 00:04:12,070 nëse kjo është minuta apo edhe ditë më vonë, nëse ata mbyllë dritaren e shfletuesit, 70 00:04:12,070 --> 00:04:14,360 në të cilën pikë SEANCA zhduket. 71 00:04:14,360 --> 00:04:17,779 Pra, kjo është ruajtja kalimtare, është jo-të vazhdueshme, dhe ajo është menduar për të shkuar larg 72 00:04:17,779 --> 00:04:22,360 sa më shpejt që përdoruesi mbyll shfletuesin e tyre - jo vetëm se, tab shpesh shfletuesi tërë, 73 00:04:22,360 --> 00:04:24,930 duke efektive prerjet përdoruesit jashtë. 74 00:04:24,930 --> 00:04:28,000 Pra, si është kjo gjë zbatohet në të vërtetë? 75 00:04:28,000 --> 00:04:31,360 Le të marrin një vështrim të shpejtë në një shembull të thjeshtë kemi shikuar në të premten. 76 00:04:31,360 --> 00:04:33,340 Për ata të panjohur, ajo ishte aq e thjeshtë si kjo. 77 00:04:33,340 --> 00:04:35,910 Kjo është një faqe web të cilit vetëm qëllim në jetë është që të thoni 78 00:04:35,910 --> 00:04:38,000 sa herë kam vizituar këtë faqe. 79 00:04:38,000 --> 00:04:41,670 Kjo është hera e parë që këtu të hënën se kam vizituar atë, kështu që ajo thotë se 0 herë. 80 00:04:41,670 --> 00:04:46,940 >> Por në qoftë se unë të fillojë reloading këtë faqe, ajo thotë se 1 herë, 2, 3, 4, 5, 81 00:04:46,940 --> 00:04:49,800 dhe kjo përfundimisht do vetëm i mbajnë në numërimin lart, lart, lart, lart, lart 82 00:04:49,800 --> 00:04:53,130 për çdo herë që unë në fakt klikoni Rifresko mbi të. 83 00:04:53,130 --> 00:04:58,830 Pra, si është kjo pune? Më lejoni të shkoj në brendësi të kësaj dosje të quajtur counter.php. 84 00:04:58,830 --> 00:05:02,490 Pjesa e lartë e saj është e gjitha komentet blu, por pjesa interesante është këtu. 85 00:05:02,490 --> 00:05:06,670 On line 13 që ne e quajmë këtë session_start funksion, 86 00:05:06,670 --> 00:05:09,600 dhe kjo është fjalë për fjalë të gjithë ju duhet të bëni nëse ju dëshironi të keni qasje 87 00:05:09,600 --> 00:05:13,610 në këtë superglobal të veçantë të quajtur $ _SESSION. 88 00:05:13,610 --> 00:05:17,430 Kjo e bën të mundur të gjithë, dhe ne do të shohim në një moment sa që është e mundur. 89 00:05:17,430 --> 00:05:20,350 Në linjë njoftim 16 atë që unë jam duke bërë. 90 00:05:20,350 --> 00:05:25,960 Nëse çelësi, e quajtur kundër - me fjalë të tjera, vlera e indeksit - "kundër" 91 00:05:25,960 --> 00:05:32,310 ekziston brenda kësaj grup të quajtur seancë, atëherë çfarë jam duke bërë me atë në përputhje më poshtë? 92 00:05:32,310 --> 00:05:36,650 Çfarë është Shkarko 18 duke bërë? 93 00:05:36,650 --> 00:05:40,360 >> [Përgjigja e padëgjueshme Studenti] Çfarë është ajo? [Student] Ruajtjen e vlerës. Mirë. 94 00:05:40,360 --> 00:05:45,800 Është ruajtjen e vlerës që është në sesion të drejtë tani në një variabël të re lokale të përkohshme, 95 00:05:45,800 --> 00:05:48,250 $ Counter në të gjitha Fjala. 96 00:05:48,250 --> 00:05:50,770 Vini re se PHP është tashmë qenë pak dembel këtu. 97 00:05:50,770 --> 00:05:55,550 Njoftim ne nuk kemi asnjë përmendje të int ose float ose string ose diçka të tillë 98 00:05:55,550 --> 00:06:00,480 sepse PHP është shtypur dobët, ku ju nuk keni për të specifikojë llojin e një ndryshore, 99 00:06:00,480 --> 00:06:03,310 dhe në këtë rast unë nuk e kam këtu edhe shpallur atë ende. 100 00:06:03,310 --> 00:06:08,980 Unë jam deklaruar atë në brendësi të këtyre teksteve kaçurrel dhe ndryshe C, në fakt kjo është në rregull. 101 00:06:08,980 --> 00:06:13,800 Pa marrë parasysh se sa thellë mbivendosur deklaratën e një ndryshore është në PHP - 102 00:06:13,800 --> 00:06:16,650 brenda mbajtëse kaçurrel, brenda së mbajtëse kaçurrel dhe si - 103 00:06:16,650 --> 00:06:21,230 ajo do të në atë moment në kohë ekzistojnë për pjesën e mbetur të programit, 104 00:06:21,230 --> 00:06:22,680 për mirë apo për keq. 105 00:06:22,680 --> 00:06:26,930 Pra, ajo menjëherë bëhet globale sa më shpejt që ju të përcaktojë atë si ne jemi duke bërë këtu. 106 00:06:26,930 --> 00:06:31,620 >> Përndryshe, në qoftë se unë nuk do të gjeni se nuk ka asgjë në superglobal seancë, 107 00:06:31,620 --> 00:06:34,680 Unë jam duket Initializing këtë counter ndryshueshme në 0, 108 00:06:34,680 --> 00:06:37,580 duke supozuar vetëm përdoruesi nuk ka qenë këtu më parë. 109 00:06:37,580 --> 00:06:40,030 Dhe atëherë kjo sigurisht është e bën rritjen counter si? 110 00:06:40,030 --> 00:06:44,480 Unë jam përditësimin e vlerës që është brenda e kësaj grup associative 111 00:06:44,480 --> 00:06:49,530 duke vendosur atë të barabartë për çdo gjë kundër aktualisht është + 1. 112 00:06:49,530 --> 00:06:53,520 Nëse unë lëviz nëpër këtu për HTML të faqes, kjo është në fakt shumë e thjeshtë. 113 00:06:53,520 --> 00:06:58,920 Unë kam të gjitha në trupin e kësaj faqeje është, "Ju keni vizituar këtë faqe herë kështu-dhe-kështu." 114 00:06:58,920 --> 00:07:00,350 Dhe kjo është një konstrukt PHP. 115 00:07:00,350 --> 00:07:06,080 Nëse ju bëni 00:07:12,600 Është me të vërtetë e barabartë me diçka si printf, të cilat ne kemi parë shumë herë në C, 117 00:07:12,600 --> 00:07:15,940 edhe pse si ju mund të dini tashmë nga spec në pset 7, 118 00:07:15,940 --> 00:07:20,160 është shkruar edhe një funksion që vetëm kopje diçka jashtë, ajo nuk ka të vërtetë të përdorin kodet format, 119 00:07:20,160 --> 00:07:23,270 dhe ju në fakt mund të them jehonë si. 120 00:07:23,270 --> 00:07:27,460 Ata janë të gjithë ndonjëherë në mënyrë pak më të ndryshme, edhe pse efekti neto fund të fundit është e njëjtë. 121 00:07:27,460 --> 00:07:31,270 Pra, kjo përdorimi i barabartë me shenjë është vetëm lloj i një mënyrë elegante për të bërë atë 122 00:07:31,270 --> 00:07:34,910 më shumë shkurtimisht se ju mund të jetë ndryshe në gjendje të. 123 00:07:34,910 --> 00:07:38,370 Pra, kjo është e gjitha kjo faqe e bën. Ajo printon nga vlera e banak. 124 00:07:38,370 --> 00:07:40,550 Si është e gjithë kjo në të vërtetë ndodh? 125 00:07:40,550 --> 00:07:43,250 Ju mund të kujtojnë një javë apo më shumë më parë kemi filluar duke kërkuar nën kapuç 126 00:07:43,250 --> 00:07:47,910 se si punon një faqe interneti duke përdorur këtë tab inspektori. 127 00:07:47,910 --> 00:07:51,900 >> Chrome ka këtë si në versionin Mac, versioni i Windows, dhe madje edhe versionin Linux, 128 00:07:51,900 --> 00:07:59,510 dhe Firefox dhe IE kanë mekanizma të ngjashme ku ju e keni këtë Rregullues ndërtuar në 129 00:07:59,510 --> 00:08:01,400 brenda i shfletuesin. 130 00:08:01,400 --> 00:08:03,040 Le të marrin një vështrim në vijim. 131 00:08:03,040 --> 00:08:06,960 Ne kemi marrë një bandë e tërë e skedave këtu, dhe kujtojmë se një pari nga e majta është Elemente, 132 00:08:06,960 --> 00:08:10,700 dhe pa marrë parasysh se sa godawful HTML dhe JavaScript është në një faqe, 133 00:08:10,700 --> 00:08:15,710 kujtojnë se me tab Elemente të vërtetë ju mund të lundruar HTML hierarkike 134 00:08:15,710 --> 00:08:17,050 dhe e bukur dhe mjeshtërisht. 135 00:08:17,050 --> 00:08:19,370 Pra, nëse ju jeni duke u përpjekur për të mësuar nga një faqe interneti si Google apo Facebook 136 00:08:19,370 --> 00:08:22,370 apo me të vërtetë ndonjë website, të kuptojë se ju jeni me siguri më të mirë 137 00:08:22,370 --> 00:08:26,360 shikuar në kodin burim në këtë mënyrë në krahasim me shikimin burimin e papërpunuara, 138 00:08:26,360 --> 00:08:29,580 e cila mund të jetë një rrëmujë, siç kemi parë sidomos në faqen e Google. 139 00:08:29,580 --> 00:08:32,220 Pra, nëse unë në vend të klikoni mbi butonin Rrjeti këtu, 140 00:08:32,220 --> 00:08:34,830 le të shohim se çfarë po ndodh, kur kam vizituar këtë faqe. 141 00:08:34,830 --> 00:08:38,669 Së pari më lejoni të qartë cache tim. 142 00:08:38,669 --> 00:08:43,570 Unë jam duke shkuar për të shkuar në Settings në Chrome dhe pastaj të shkoni në Histori 143 00:08:43,570 --> 00:08:46,420 dhe pastaj Qartë të gjitha të dhënat në shfletim. 144 00:08:46,420 --> 00:08:48,170 Ju mund të përdoren për të bërë këtë për qëllime të tjera, [qeshur] 145 00:08:48,170 --> 00:08:51,990 por kur është fjala për faqet e internetit në zhvillim, është në të vërtetë e dobishme - 146 00:08:51,990 --> 00:08:55,980 nëse ju jeni duke qeshur ju e dini. [Qeshura] 147 00:08:55,980 --> 00:08:59,310 Është e vërtetë me të vërtetë e dobishme kur zhvillimin e faqet e internetit, sepse realiteti është 148 00:08:59,310 --> 00:09:04,100 gjëra të tilla si cookies dhe gjëra të tilla si fotografi HTML, fotografi cached cached JavaScript 149 00:09:04,100 --> 00:09:06,390 në fakt mund të bëhet një dhimbje koke e madhe, sepse në qoftë se për çfarëdo arsye 150 00:09:06,390 --> 00:09:11,500 shfletuesi vendos të cache disa fotografi dhe ende ju keni bërë ndryshime në këtë dosje në server 151 00:09:11,500 --> 00:09:14,670 por shfletuesi nuk e ka kuptuar me të vërtetë se skeda është ndryshuar 152 00:09:14,670 --> 00:09:19,060 dhe për këtë arsye nuk ka të vërtetë të ri-ta shkarkuar atë edhe kur ju klikoni butonin Reload, 153 00:09:19,060 --> 00:09:23,210 një nga mënyrat më të pagabueshëm për të vetëm sigurohuni që faji nuk është me kodin tuaj, 154 00:09:23,210 --> 00:09:26,480 kjo është me sjelljen e shfletuesit, është për të shkuar në këtu në shfletuesin tuaj 155 00:09:26,480 --> 00:09:29,950 dhe vetëm të qartë të gjithë historinë në mënyrë që nuk ka konfuzion. 156 00:09:29,950 --> 00:09:33,210 >> Dhe pastaj nëse ju me të vërtetë duan të jenë të paranojak, lë shfletuesin, rinisni atë, 157 00:09:33,210 --> 00:09:35,660 dhe pastaj të bëjë që të gjitha është duke punuar ashtu siç pritet. 158 00:09:35,660 --> 00:09:38,820 Pra me pak fjalë, cache pastrimin është i mirë kur bën zhvillimin. 159 00:09:38,820 --> 00:09:40,690 Pra, këtu kemi tab Network. 160 00:09:40,690 --> 00:09:46,020 Unë më parë kishte vizituar faqe 9 herë, por më lejoni të shkoj përpara dhe tani klikoni reload. 161 00:09:46,020 --> 00:09:47,500 Dhe unë jam kthyer poshtë për 0. 162 00:09:47,500 --> 00:09:52,100 Le të shohim se si të vërtetë është se kjo superglobal SEANCA është duke u zbatuar. 163 00:09:52,100 --> 00:09:55,990 Unë jam duke shkuar për të klikoni mbi kërkesën HTTP 1 që është bërë, 164 00:09:55,990 --> 00:09:58,810 dhe kjo dritare debugging më lejon të shikoni brenda për këtë. 165 00:09:58,810 --> 00:10:01,970 Këtu unë shoh vetëm përgjigje e nga serveri, e cila nuk është interesante. 166 00:10:01,970 --> 00:10:04,030 Unë e kam parë këtë në çdo numër të mënyra. 167 00:10:04,030 --> 00:10:06,350 Por ajo që është interesante janë teknikisht headers. 168 00:10:06,350 --> 00:10:11,770 Nëse unë lëvizni poshtë këtu dhe të përqëndrohet në headers kërkesë dhe kliko View Source, 169 00:10:11,770 --> 00:10:14,400 atë që unë jam duke shkuar për të parë është fjalë për fjalë Kërkesa HTTP 170 00:10:14,400 --> 00:10:17,250 që vetëm shkoi nga shfletuesin tim në server, 171 00:10:17,250 --> 00:10:21,400 GET qenë fjala operative dhe pastaj / counter.php qenë emri i file, 172 00:10:21,400 --> 00:10:25,670 HTTP/1.1 vetëm duke versioni HTTP që shfletuesi ime është duke përdorur. 173 00:10:25,670 --> 00:10:31,070 Kjo linjë këtu është një kujtesë e vogël nga shfletuesi në serverin se çfarë emri i serverit është 174 00:10:31,070 --> 00:10:33,020 se ai dëshiron të flasin për të. 175 00:10:33,020 --> 00:10:38,200 Dhe pastaj pjesa tjetër e kësaj është ndonjëherë interesante, por jo të rëndësishme tani. 176 00:10:38,200 --> 00:10:40,090 >> Kjo është vetëm një lloj kurioziteti. 177 00:10:40,090 --> 00:10:43,530 Fshehtë edhe pse kjo është string, në çdo kohë shfletuesi juaj viziton një faqe interneti 178 00:10:43,530 --> 00:10:47,110 ajo është e informuar atë server ju jeni duke përdorur shfletuesit 179 00:10:47,110 --> 00:10:50,040 dhe se çfarë sistemi operativ që jeni duke përdorur dhe çfarë versioni të tij. 180 00:10:50,040 --> 00:10:52,650 Pra, nëse ju keni menduar ndonjëherë se si faqet e internetit të tilla si CNN dhe gjësend 181 00:10:52,650 --> 00:10:56,860 e di se çfarë përqindjet janë përdoruesit e Mac për përdoruesit, Web PC, 182 00:10:56,860 --> 00:11:00,820 IE përdoruesit, përdoruesit Chrome dhe si, kjo është për shkak se të gjithë shfletuesit tonë 183 00:11:00,820 --> 00:11:04,300 janë thënë çdo website të vetme atje ajo që ne jemi. 184 00:11:04,300 --> 00:11:07,410 Kjo nuk do të përmbajnë informacion personalisht të identifikueshme, 185 00:11:07,410 --> 00:11:13,060 por ajo ka treguar se çfarë server IP adresa juaj është dhe çfarë shfletues dhe OS jeni duke përdorur. 186 00:11:13,060 --> 00:11:14,720 Pra, kjo është ajo ku ky informacion është. 187 00:11:14,720 --> 00:11:19,960 Por ajo që është më interesante tani, kur është fjala për këto seanca është header përgjigje. 188 00:11:19,960 --> 00:11:22,530 Më lejoni të klikoni shikoni burim tjetër për përgjigje. 189 00:11:22,530 --> 00:11:24,590 Çfarë është interesante këtu është disa gjëra. 190 00:11:24,590 --> 00:11:27,580 1, kemi marrë përsëri një kod statusit të 200. 191 00:11:27,580 --> 00:11:29,840 Ne kurrë nuk shohim këtë kod status, sepse kjo do të thotë të gjitha është e mirë. 192 00:11:29,840 --> 00:11:32,920 Kjo do të thotë fjalë për fjalë në rregull në kontrast me diçka tjetër. 193 00:11:32,920 --> 00:11:36,380 Çfarë është një numër i kemi ndonjëherë shohim se është e keqe? [Student] 404. 194 00:11:36,380 --> 00:11:39,860 , 404 'file' nuk gjendet, 403 ju mund të pengues mbi tashmë, 195 00:11:39,860 --> 00:11:43,660 e cila është e ndaluar, që do të thotë se keni harruar diçka chmod, më shumë gjasa. 196 00:11:43,660 --> 00:11:45,190 Dhe ka një bandë e të tjerëve. 197 00:11:45,190 --> 00:11:47,760 >> Këtu poshtë, kjo është pak e çmendur. 198 00:11:47,760 --> 00:11:52,340 Unë me të vërtetë vetëm shkroi këtë skedë pak minuta më parë nga pasting atë në Gedit. 199 00:11:52,340 --> 00:11:57,100 Përse kjo faqe skadon në vitin 1981 para se të vërtetë ishte një Web? 200 00:11:58,010 --> 00:12:00,730 Çfarë po ndodh atje? 201 00:12:00,730 --> 00:12:04,390 >> [Përgjigja e padëgjueshme Studenti] Vula e kohës. Por pse? 202 00:12:06,110 --> 00:12:09,120 Është disi arbitrare, por është e vërtetë të dobishme. 203 00:12:09,120 --> 00:12:15,500 Çfarë kjo është thënë në shfletuesin tim është this file PHP ju keni kërkuar sapo ka skaduar tashmë. 204 00:12:15,500 --> 00:12:18,580 Në fakt, ajo skaduar 30 vjet më parë. 205 00:12:18,580 --> 00:12:20,260 Por çfarë do që me të vërtetë do të thotë? 206 00:12:20,260 --> 00:12:22,500 Ajo thjesht do të thotë herën tjetër përdoruesi viziton këtë faqe, 207 00:12:22,500 --> 00:12:25,540 qoftë me reloading ose shtypja URL në shiritin e adresave, 208 00:12:25,540 --> 00:12:28,010 sigurohuni që ju të shkoni dhe të shkoj të marr një kopje të re të saj. 209 00:12:28,010 --> 00:12:30,840 Kjo është lloj i një shembull i goditjes cache, 210 00:12:30,840 --> 00:12:33,790 një fjalë e trashë që vetëm do të thotë duke u përpjekur për të shkurajuar shfletues 211 00:12:33,790 --> 00:12:37,260 nga të vërtetë HTML caching që është dërguar nga një server 212 00:12:37,260 --> 00:12:41,490 në mënyrë që ju nuk e goditi aksidentalisht Rifresko dhe pastaj shikoni versionin e njëjtë të file. 213 00:12:41,490 --> 00:12:43,730 Ju në fakt duan server për të dërguar një kopje të re. 214 00:12:43,730 --> 00:12:47,440 Pra, fakti se ajo është vetëm do të thotë se 1981 kjo është ajo që pajisja është zgjedhur 215 00:12:47,440 --> 00:12:50,280 si një datë arbitrare në të kaluarën. 216 00:12:50,280 --> 00:12:53,380 Por linja e vërtetë lëng është tani kjo. 217 00:12:53,380 --> 00:12:57,550 Edhe para 50 ndoshta ju jeni paksa të njohur me cookies. 218 00:12:57,550 --> 00:13:01,820 Si e drejtë tani, sidomos në mesin e atyre më pak të rehatshme apo në mes, 219 00:13:01,820 --> 00:13:04,120 çfarë është një cookie në mirëkuptimin tuaj tani 220 00:13:04,120 --> 00:13:06,980 edhe pse ne jemi gati për të bërë kuptim tuaj më teknike? 221 00:13:08,150 --> 00:13:10,070 Çfarë është një cookie? Po. 222 00:13:10,070 --> 00:13:13,890 [Student] Informacion rreth përdoruesit, si në qoftë se ata kanë shkruar emrin e tyre të përdoruesit ose diçka. 223 00:13:13,890 --> 00:13:17,370 >> Mirë. Kjo është informacion në lidhje me përdoruesit, nëse ata kanë shtypur në emrin e tyre të përdoruesit tashmë. 224 00:13:17,370 --> 00:13:21,190 Cookies janë një mënyrë ku servers mund të mbani mend diçka në lidhje me një përdorues. 225 00:13:21,190 --> 00:13:25,810 Dhe çfarë është me të vërtetë një cookie është një file teksti ose disa sekuenca e bytes 226 00:13:25,810 --> 00:13:28,340 që është mbjellë nga serveri brenda e shfletuesit tuaj, 227 00:13:28,340 --> 00:13:31,960 dhe brenda kësaj dosje, ose në mesin e atyre bytes është një lloj identifikues. 228 00:13:31,960 --> 00:13:35,640 Ndoshta kjo është fjalë për fjalë emrin tuaj të përdoruesit, por më shpesh është diçka më e fshehtë-looking 229 00:13:35,640 --> 00:13:43,700 si kjo gjë këtu - bo8dal3ct dhe kështu me radhë - ky varg të vërtetë e madhe alfanumerike 230 00:13:43,700 --> 00:13:47,050 kjo është me të vërtetë do të thotë vetëm të jetë një identifikues unik për ju. 231 00:13:47,050 --> 00:13:49,790 Ose ju mund të mendoni për atë si lloj i një vule dore virtuale. 232 00:13:49,790 --> 00:13:53,020 Nëse ju shkoni në një klub apo një amusement park, të mbani mend se ju keni paguar 233 00:13:53,020 --> 00:13:55,850 dhe shkuar në, ata vënë një shirit të kuq pak në dorën tuaj të disa lloj, 234 00:13:55,850 --> 00:13:59,270 dhe që kujton njerëzit në sportelin që ju keni paguar tashmë 235 00:13:59,270 --> 00:14:01,340 dhe ju mund të vijnë e të shkojnë si ju lutem. 236 00:14:01,340 --> 00:14:04,250 Cookies janë pak të ngjashme në shpirt për këtë. 237 00:14:04,250 --> 00:14:08,070 Herën e parë kam vizituar këtë faqe interneti, si unë vetëm e bëri pas pastrimin cache tim, 238 00:14:08,070 --> 00:14:11,620 server web, aplikim në këtë rast, vendos një vulë mbi dorën time 239 00:14:11,620 --> 00:14:15,030 emri i të cilit është PHPSESSID, sesioni ID, 240 00:14:15,030 --> 00:14:18,260 vlera e të cilave është kjo me të vërtetë e gjatë alfanumerike string. 241 00:14:18,260 --> 00:14:22,470 >> Kështu që tani është lloj i emblazoned në duart e mia në mënyrë që herën tjetër që unë goditi ringarkoni 242 00:14:22,470 --> 00:14:25,230 ose me dorë vizitoni këtë URL në një shfletues, 243 00:14:25,230 --> 00:14:29,230 shfletuesin tim nga përkufizimi i HTTP do të paraqesë vulën e dorës 244 00:14:29,230 --> 00:14:31,940 përsëri dhe përsëri dhe përsëri. 245 00:14:31,940 --> 00:14:34,550 Pra, edhe pse serveri nuk do të dinë që unë jam, 246 00:14:34,550 --> 00:14:39,610 ata të paktën e di që unë jam përdoruesi njëjta ose të paktën, më konkretisht, shfletuesi njëjta. 247 00:14:39,610 --> 00:14:45,660 Dhe kështu kjo është në fund të fundit si superglobal SEANCA është zbatuar. 248 00:14:45,660 --> 00:14:51,200 Serveri ka asnjë ide se kush jeni, kur ju sërish një faqe interneti për të dytën apo të tretën herë 249 00:14:51,200 --> 00:14:53,410 nëse ju paraqesim këtë vulë dore. 250 00:14:53,410 --> 00:14:55,530 Dhe sa më shpejt që ju të pranishëm atë pullë dorë, 251 00:14:55,530 --> 00:14:59,370 server web thelb shkon në një bazë të dhënash të vogël të vet 252 00:14:59,370 --> 00:15:06,040 dhe kontrolle, në rregull, unë kam parë vetëm vulën e dorës bo8dal3ct përdoruesit dhe kështu me radhë. 253 00:15:06,040 --> 00:15:09,850 Më lejoni të shohim se çfarë informacioni programues ka ruajtur 254 00:15:09,850 --> 00:15:12,380 brenda e superglobal në lidhje me këtë përdorues, 255 00:15:12,380 --> 00:15:17,000 dhe pastaj më lejoni të bëni të sigurtë që se të dhënat është përsëri brenda sesionit të superglobal 256 00:15:17,000 --> 00:15:19,830 kështu që programues mund të ri-hyrë në të dhënat që 257 00:15:19,830 --> 00:15:23,360 edhe në qoftë se ajo u ngrit disa minuta ose orë më parë. 258 00:15:23,360 --> 00:15:26,150 Pra, në fjalë të tjera, cookies, të cilat mori një rap keq për disa kohë 259 00:15:26,150 --> 00:15:29,990 për shkak të pasigurisë në shfletues dhe ata mund të vërtetë të shkelin privatësinë tonë dhe të gjithë këtë, 260 00:15:29,990 --> 00:15:31,900 ata në fakt kanë dobi të madhe sepse pa to 261 00:15:31,900 --> 00:15:36,110 ju do të jetë vazhdimisht për prerjet në çdo faqe që ju vizitoni Facebook 262 00:15:36,110 --> 00:15:40,680 apo çdo email Gmail ju lexoni nëse shfletuesi nuk kanë ndonjë mënyrë për të kujtuar 263 00:15:40,680 --> 00:15:43,320 që e keni vërtetuar tashmë. 264 00:15:43,320 --> 00:15:46,640 >> Pra, në këtë mënyrë cookies janë dërguar mbrapa dhe me radhë nëpër tela. 265 00:15:46,640 --> 00:15:52,470 Një tjetër kuriozitet në lidhje me cookies, sidomos këtu, është se kjo është plotësisht në cleartext. 266 00:15:52,470 --> 00:15:54,930 Nuk ka asnjë encryption ndodh këtu çdo gjë, 267 00:15:54,930 --> 00:15:57,240 dhe në të vërtetë unë jam duke përdorur HTTP në këtë moment. 268 00:15:57,240 --> 00:16:00,890 Një nga momentet preferuarat tanë në CS50, e cila tani është 2 vjet më parë, 269 00:16:00,890 --> 00:16:04,750 ishte rreth kohës një mjet i quajtur Firesheep doli. 270 00:16:04,750 --> 00:16:08,320 Kjo ishte një pjesë e lirë të softuerit që është bërë nga një studiues të sigurisë 271 00:16:08,320 --> 00:16:13,250 si një wake-up thirrje për komunitetin për të thënë se sa zbatohet atrociously 272 00:16:13,250 --> 00:16:17,900 disa mekanizma vertetimi në Web ishin. 273 00:16:17,900 --> 00:16:22,880 Pra, për disa kohë, Facebook ka qenë pothuajse tërësisht mbi HTTP HTTPS, nuk ka. 274 00:16:22,880 --> 00:16:25,640 Dhe edhe në qoftë se ju nuk keni ide se si kripto punon, S është e sigurtë 275 00:16:25,640 --> 00:16:27,950 kështu që kjo do të thotë se ka të paktën disa encryption të përfshira. 276 00:16:27,950 --> 00:16:30,610 Facebook nuk përdoret për të kriptuar emrat e përdoruesit dhe fjalëkalimet, 277 00:16:30,610 --> 00:16:33,560 por sa më shpejt që ju të shikuar në tuaj Pokes apo mesazhet tuaja ose feed tuaj lajme, 278 00:16:33,560 --> 00:16:35,360 të gjitha që u unencrypted. 279 00:16:35,360 --> 00:16:37,870 Kështu ishte deri në Gmail vetëm një vit ose 2 më parë. 280 00:16:37,870 --> 00:16:41,100 Çdo herë që të regjistrohet në, po, ata kanë përdorur encryption sigurt, 281 00:16:41,100 --> 00:16:44,300 por më pas ata nuk e bëri. Dhe pse mund që të jetë? 282 00:16:44,300 --> 00:16:49,210 Pse të mos i përdorni vetëm kriptografinë të gjithë kohës në raste të përdorimit si ky? 283 00:16:49,210 --> 00:16:53,700 Çfarë është ajo? Unë mendoj se kam dëgjuar diçka. [Student] Speed. 284 00:16:53,700 --> 00:16:56,250 Speed, apo jo? Ka shumë mënyra rreth kësaj. 285 00:16:56,250 --> 00:16:59,610 Por në qoftë se ju vetëm lloji i kënaqur me atë logjikisht, nëse ju encrypt diçka, 286 00:16:59,610 --> 00:17:01,820 ju duhet të bëni të paktën një punë pak më shumë. 287 00:17:01,820 --> 00:17:05,460 Në pset 2 kur zbatohet Cezarit apo Vigenere apo edhe Crack, 288 00:17:05,460 --> 00:17:07,760 vetëm shtypjen e një varg është relativisht e lehtë. 289 00:17:07,760 --> 00:17:12,040 Encrypting dhe pastaj shtypjen një varg minimalisht kërkon punë pak më shumë. 290 00:17:12,040 --> 00:17:14,520 >>  Për faqet e internetit super popullor si Google dhe Facebook, 291 00:17:14,520 --> 00:17:18,839 në qoftë se ju duhet të bëni më shumë punë për çdo përdorues për çdo faqe interneti të vetme që ata vizitojnë, 292 00:17:18,839 --> 00:17:20,520 që vetëm merr më shumë kohë CPU. 293 00:17:20,520 --> 00:17:22,920 Dhe në qoftë se keni nevojë për më shumë kohë CPU, ju mund të kenë nevojë serverat e më shumë, 294 00:17:22,920 --> 00:17:24,270 që do të thotë që ju mund të kenë nevojë më shumë para. 295 00:17:24,270 --> 00:17:27,579 Dhe kështu për shumë vite kjo vetëm të vërtetë nuk ishte praktikë e mirë. 296 00:17:27,579 --> 00:17:31,440 Njerëzit do të përdorin SSL encryption vetëm kur ata kishin nevojë për të. 297 00:17:31,440 --> 00:17:34,960 Por ajo doli, dhe si ky shoku me Firesheep bërë super të qartë, 298 00:17:34,960 --> 00:17:37,920 kur ju djema të cilët janë aktualisht në Facebook tani - 299 00:17:37,920 --> 00:17:39,880 Nga kurioziteti, le të shohim nëse ju do të fess up. 300 00:17:39,880 --> 00:17:42,620 Nëse ju jeni në Facebook drejtë tani në disa tab, edhe nëse ajo nuk është foregrounded, 301 00:17:42,620 --> 00:17:46,610 është HTTP HTTPS juaj URL apo? 302 00:17:46,610 --> 00:17:50,560 [Studentët] S. shumta S? [Qeshura] 303 00:17:50,560 --> 00:17:55,510 Rregull. Çdo HTTP? Vetëm 1? Rregull. 304 00:17:55,510 --> 00:17:58,940 Pra, të gjithë ne mund të kollitem në Facebook llogari se djalë të drejtë tani. 305 00:17:58,940 --> 00:18:04,100 Për pjesën më të madhe kjo është bërë ndezur nga default, të paktën në disa faqet e internetit. 306 00:18:04,100 --> 00:18:08,120 Dhe histori të gjatë të shkurtër, nëse trafiku juaj web nuk është e koduar, 307 00:18:08,120 --> 00:18:12,960 jo vetëm që e bën HTML shkuar mbrapa dhe me radhë nëpër WiFis unencrypted, 308 00:18:12,960 --> 00:18:16,760 kështu që gjëra të tilla si biskota të shkuar mbrapa dhe me radhë të gjithë në ajër 309 00:18:16,760 --> 00:18:18,940 pa ndonjë formë të encryption. 310 00:18:18,940 --> 00:18:23,540 Pra, nëse ju keni vetëm pak tru e programimit ose pak e Googling aftësitë 311 00:18:23,540 --> 00:18:27,410 për të gjetur software të lirë që e bën këtë, të gjithë ju duhet të bëni është ulur në Starbucks 312 00:18:27,410 --> 00:18:30,680 ose ulen në një aeroport ku ka përgjithësisht unencrypted WiFi 313 00:18:30,680 --> 00:18:36,070 dhe vetëm shikojnë për fjalë kyçe të tilla si Cookie Set-: ose PHPSESSID 314 00:18:36,070 --> 00:18:39,300 sepse në qoftë se ju keni tru teknike të vetëm shikojnë WiFi 315 00:18:39,300 --> 00:18:43,010 për të gjitha bit që rrjedhin nëpër ajër për këtë model, 316 00:18:43,010 --> 00:18:50,840 atëherë ju mund të them se PHPSESSID djalë ndodh të jetë bo8dal dhe kështu me radhë. 317 00:18:50,840 --> 00:18:53,890 Dhe pastaj përsëri në qoftë se ju jeni të mjaftueshme teknikisht tru ose keni mjet i duhur, 318 00:18:53,890 --> 00:18:58,890 atëherë ju mund vetëm të rikonfiguruar shfletuesin tuaj për të filluar paraqitjen atë vulën e dorës 319 00:18:58,890 --> 00:19:05,030 të Facebook.com, dhe Facebook është vetëm do të supozojmë se ju jeni që djalë 320 00:19:05,030 --> 00:19:09,880 sepse të gjithë ata e dinë se nuk është se kush jeni, por që ju e keni këtë identifikues unik. 321 00:19:09,880 --> 00:19:14,650 Pra, nëse ju vjedhin atë identifikues unik dhe ta paraqesë atë në web server si vet tuaj, 322 00:19:14,650 --> 00:19:16,860 ata janë vetëm do të ju tregojë ushqim atij personi lajmeve 323 00:19:16,860 --> 00:19:18,980 ose mesazhet që personi ose Pokes. 324 00:19:18,980 --> 00:19:23,190 >> Dhe unë do të Google tani se si të aktivizoni HTTPS for Facebook ndoshta. 325 00:19:23,190 --> 00:19:25,150 Por me të vërtetë është aq e thjeshtë sa se. 326 00:19:25,150 --> 00:19:27,660 Dhe kështu Facebook dhe Google dhe si kanë marrë me të vërtetë mirë në këtë, 327 00:19:27,660 --> 00:19:31,870 por të mbajtur një sy jashtë të gjithë më shumë për çdo faqet e internetit që ju vizitoni, që nuk përdorin HTTP 328 00:19:31,870 --> 00:19:35,020 dhe kanë disa lloj të informatave të ndjeshme mbi ta, 329 00:19:35,020 --> 00:19:37,490 nëse kjo është financiare ose personale ose doja. 330 00:19:37,490 --> 00:19:43,180 Nëse ata nuk jeni duke përdorur këtë, mjaft ndoshta mund të cookie-t si kjo të jetë shumë e lehtë të vjedhura 331 00:19:43,180 --> 00:19:46,270 dhe të falsifikuara pas, dhe kjo është pikërisht ajo që bëri Firesheep. 332 00:19:46,270 --> 00:19:48,250 Ju nuk duhet të jetë një programues. 333 00:19:48,250 --> 00:19:51,680 Të gjithë ju kishte të bënte ishte kanë një lidhje në Internet, shkarkoni këtë mjet të lirë, 334 00:19:51,680 --> 00:19:56,490 dhe çfarë do të bëjë është që ju hyni në dhe atëherë ajo do të ju tregojnë emrat Facebook 335 00:19:56,490 --> 00:20:00,170 të gjithë në Sanders, në këtë demonstratë të veçantë, rreth jush 336 00:20:00,170 --> 00:20:03,260 dhe të gjithë ju kishte të bënte ishte të klikoni mbi emrin e tyre dhe software automatizuar procesin e 337 00:20:03,260 --> 00:20:05,970 i nuhatës se cookie, duke paraqitur atë në Facebook si vet tuaj, 338 00:20:05,970 --> 00:20:07,990 dhe, voila, ju jeni futur me emrin tuaj 339 00:20:07,990 --> 00:20:11,190 Pra, kjo është një tjetër një nga ato "nuk e bëjmë këtë" zyrtarisht. 340 00:20:11,190 --> 00:20:14,660 Nëse ju keni një rrjet në shtëpi dhe ju doni të kallajxhi, me të gjitha mjetet, 341 00:20:14,660 --> 00:20:17,530 por kjo nuk e kuptojnë të kalojnë vijën në një mjedis universitar. 342 00:20:17,530 --> 00:20:20,030 >> Por qëllimi këtu është me të vërtetë të theksojmë jo si ta bëni këtë 343 00:20:20,030 --> 00:20:22,320 por si për të mbrojtur kundër këtyre llojeve të gjërave. 344 00:20:22,320 --> 00:20:26,180 Dhe zgjidhja parëndësishëm këtu, edhe pse ai vetë është me të meta, 345 00:20:26,180 --> 00:20:31,360 është me të vërtetë të zvogëluar përdorimin e ndonjë faqet që nuk janë përdorur HTTPS vazhdimisht. 346 00:20:31,360 --> 00:20:34,520 Pra faqet si Facebook dhe Google gjithnjë kanë kutitë 347 00:20:34,520 --> 00:20:36,200 ku ju mund të zgjedhë për këtë lloj gjë, 348 00:20:36,200 --> 00:20:40,000 dhe bankat kanë pasur këtë për vite për të njëjtat arsye. 349 00:20:40,000 --> 00:20:43,580 Pra, vetëm pak e një faktor frikë nëse ne mund të. Por kjo është ajo në një fjalë. 350 00:20:43,580 --> 00:20:46,420 Kjo është se si një server kujton se kush jeni. 351 00:20:46,420 --> 00:20:50,760 Dhe sa më shpejt që ata mund të mbani mend se kush jeni, ata mund të mbani mend asgjë rreth jush 352 00:20:50,760 --> 00:20:56,140 se programues ka ruajtur brenda këtij superglobal të veçantë të quajtur $ _SESSION. 353 00:20:56,140 --> 00:20:59,750 Dhe për pset 7 ne jemi duke e përdorur atë trivially vetëm për të kujtuar një int, 354 00:20:59,750 --> 00:21:02,260 domethënë ID unike e përdoruesit i cili ka regjistruar në, 355 00:21:02,260 --> 00:21:05,880 kështu që ne e dimë se ata kanë qenë atje më parë. 356 00:21:05,880 --> 00:21:12,450 Ndonjë pyetje atëherë në seancat ose biskota apo si? 357 00:21:12,450 --> 00:21:15,130 Firesheep nuk punojnë si edhe më, 358 00:21:15,130 --> 00:21:18,310 dhe ju keni për të vënë kompjuterin tuaj në një mënyrë të veçantë përzier 359 00:21:18,310 --> 00:21:20,700 kështu që ju jeni në të vërtetë duke dëgjuar për trafikun përveç vetes. 360 00:21:20,700 --> 00:21:23,940 Pra, nëse ju jeni duke shkarkimit Firesheep, të kuptojë se nuk është fare aq e lehtë 361 00:21:23,940 --> 00:21:26,850 si ajo dikur ishte për të demonstruar. 362 00:21:26,850 --> 00:21:29,070 Dakord. Dhe nuk e bëjmë atë në Sanders. Bëjë atë në shtëpi. 363 00:21:29,070 --> 00:21:30,890 Bazat e të dhënave. 364 00:21:30,890 --> 00:21:33,580 Një nga gjërat që ne e bëmë në pset 7 qëllimisht shumë 365 00:21:33,580 --> 00:21:37,780 u ju japim një tabelë të dhënave mostër për përdoruesit që ka disa ID e përdoruesit, 366 00:21:37,780 --> 00:21:41,020 disa emra përdoruesi, fjalëkalime dhe disa Encrypted aty. 367 00:21:41,020 --> 00:21:44,520 Dhe si ju do të shihni, nëse ju nuk e keni tashmë, ju jeni do të duhet të ndryshojë në tryezë pak. 368 00:21:44,520 --> 00:21:47,710 Ju jeni do të duhet të shtoni disa cache për secilin prej shfrytëzuesve në atë tryezë, 369 00:21:47,710 --> 00:21:51,130 dhe ju jeni do të duhet të shtoni një tjetër tryezë historisë, një tryezë portofole, 370 00:21:51,130 --> 00:21:53,310 apo ndoshta e quajnë atë diçka tjetër. 371 00:21:53,310 --> 00:21:56,740 Por në aspektin e të menduarit rreth asaj se si ta bëni këtë, le të hapë këtë mjet 372 00:21:56,740 --> 00:22:00,570 që kemi përdorur të premten, por në qoftë se panjohura, pajisja vjen me një mjet 373 00:22:00,570 --> 00:22:04,680 quajtur phpMyAdmin cila është shkruar rastësisht në PHP, 374 00:22:04,680 --> 00:22:07,950 por qëllimi i tij në jetë, pasi unë hyni këtu si jharvard me purpur, 375 00:22:07,950 --> 00:22:15,160 është që të më jepni një mënyrë user-friendly të shikojnë dhe ndryshimin e bazës së të dhënave tim. 376 00:22:15,160 --> 00:22:18,040 >> Baza e të dhënave që unë jam në drejtimin e pajisjes quhet MySQL. 377 00:22:18,040 --> 00:22:23,420 Kjo është shumë popullor, dhe kjo është një bazë të dhënash të lirë me burim të hapur që është mrekullisht e lehtë për t'u përdorur, 378 00:22:23,420 --> 00:22:25,620 sidomos me para përfundon si kjo. 379 00:22:25,620 --> 00:22:29,350 Çfarë ky mjet lejon mua për të bërë, për shembull, është thes rreth tavolina. 380 00:22:29,350 --> 00:22:30,890 Më lejoni të shkojnë përpara dhe të bëjë këtë. 381 00:22:30,890 --> 00:22:36,580 Të premten kemi krijuar një tabelë të quajtur studentët që ishte e thjeshtë super. 382 00:22:36,580 --> 00:22:41,680 Ajo kishte 3 kolona - ID, emrin, dhe email - dhe unë dorë futur një çift të rreshtave 383 00:22:41,680 --> 00:22:44,420 si Davidi dhe Mike në këtë shembull të veçantë. 384 00:22:44,420 --> 00:22:47,290 Le të marrin këtë një pak më tej, dhe le të supozojmë se ne duam të mbani mend më shumë 385 00:22:47,290 --> 00:22:49,660 se vetëm emrin dhe email për një përdorues. 386 00:22:49,660 --> 00:22:53,090 Më lejoni të klikoni Struktura deri këtu në krye. 387 00:22:53,090 --> 00:22:55,440 Dhe përsëri, pset ecën ju nëpërmjet hapat e nevojshme këtu, 388 00:22:55,440 --> 00:22:58,150 kështu që mos u bëni merak nëse disa nga kjo është pak i shpejtë. 389 00:22:58,150 --> 00:22:59,690 Atëherë unë jam duke shkuar për të klikoni në këtu. 390 00:22:59,690 --> 00:23:02,270 Unë jam duke shkuar për të shtuar disa numrin e shtyllave pas mailit 391 00:23:02,270 --> 00:23:04,130 sepse unë dua të shtoj diçka si shtëpi. 392 00:23:04,130 --> 00:23:06,640 Kam harruar të regjistrojë në shtëpinë e nxënësit. 393 00:23:06,640 --> 00:23:11,400 Më lejoni të klikoni Go, dhe tani ne kemi këtë formular që fatkeqësisht është pak të gjerë nga e majta në të djathtë, 394 00:23:11,400 --> 00:23:13,710 por unë jam duke shkuar për të thirrur emrin e këtë shtëpi terren, 395 00:23:13,710 --> 00:23:16,050 dhe pastaj lloji unë tani duhet të zgjedhin. 396 00:23:16,050 --> 00:23:18,870 Pra, le të ketë një bisedë të shkurtër në lidhje me llojet e ndryshme në MySQL 397 00:23:18,870 --> 00:23:24,590 sepse ndërkohë që PHP është shtypur dobët dhe kjo lloj luan shpejtë dhe të lirshme me lloje, 398 00:23:24,590 --> 00:23:29,430 në një bazë të dhënash veçanërisht është e rëndësishme që në fakt përdorin super shtypja në avantazhin tuaj 399 00:23:29,430 --> 00:23:33,260 sepse një nga gjërat MySQL dhe makina tjera të bazës së të dhënave mund të bëjë për ju 400 00:23:33,260 --> 00:23:37,910 është siguruar që ju nuk e vënë të dhënat fals në bazën e të dhënave tuaja. 401 00:23:37,910 --> 00:23:41,850 Kjo është lloj i gabimit të lirë kontrolluar në dispozicion për ju. 402 00:23:41,850 --> 00:23:46,250 >> Për shtëpi kemi natyrisht nuk duan që ajo të jetë një int, e cila është një 32-bit vlera në MySQL. 403 00:23:46,250 --> 00:23:49,810 Ne e bëmë të flasim shkurtimisht të premten rreth VARCHAR, i cili qëndron për gjatësi variabile char. 404 00:23:49,810 --> 00:23:54,720 Çfarë është kjo? Kjo ju lejon të specifikojë që ju dëshironi që kjo të jetë një varg i disa lloj. 405 00:23:54,720 --> 00:23:56,840 Ju nuk mund të vërtetë e di paraprakisht se sa kohë ajo është, 406 00:23:56,840 --> 00:24:00,100 kështu që ne do të themi arbitrarisht një emër shtëpi mund të jetë 255 karaktere, 407 00:24:00,100 --> 00:24:04,190 por ju mund të shkoni me 32, 64 - çdo numër të vërtetë. 408 00:24:04,190 --> 00:24:10,700 Por avantazh i përdorimit të një VARCHAR mbi një fushë të quajtur char është ajo? 409 00:24:10,700 --> 00:24:15,110 Vetëm intuitivisht në qoftë se unë lëviz këtu poshtë, njoftim nuk char dhe varchar ka. 410 00:24:15,110 --> 00:24:19,520 VARCHAR është gjatësia e ndryshueshme char, char është një gjatësi fikse char. 411 00:24:19,520 --> 00:24:24,730 Pra, bazuar vetëm në atë përkufizim, çfarë është avantazh apo pengesë e secilit nga këto? 412 00:24:24,730 --> 00:24:30,490 Me fjalë të tjera, i cili kujdeset për dallimin, ose pse duhet të keni kujdes? 413 00:24:31,660 --> 00:24:35,750 >> Po. [Student] VARCHAR ka më shumë fleksibilitet, por merr më shumë memorie. 414 00:24:35,750 --> 00:24:40,730 Mirë. VARCHAR merr më shumë - Le të shohim. Unë nuk jam i sigurt nëse kam dëgjuar atë të drejtë. 415 00:24:40,730 --> 00:24:42,360 Mund të ju them se një herë më shumë? 416 00:24:42,360 --> 00:24:45,850 [Student] kam thënë VARCHAR ndoshta ka më shumë fleksibilitet, por ajo merr më shumë memorie. 417 00:24:45,850 --> 00:24:51,170 Interesante. Rregull. VARCHAR ndoshta ju jep më shumë fleksibilitet, por merr më shumë memorie. 418 00:24:51,170 --> 00:24:53,220 Ky i fundit nuk është domosdoshmërisht e vërtetë. 419 00:24:53,220 --> 00:24:56,290 Kjo varet nga konteksti, por le të kthehen në atë. 420 00:24:56,290 --> 00:25:03,230 >> [Përgjigja e padëgjueshme Student] Pikërisht. 421 00:25:03,230 --> 00:25:06,900 Është e vërtetë rasti që char do të zakonisht përdorin shumë memorie 422 00:25:06,900 --> 00:25:10,950 sepse një char, si në C, është si një varg, është një grup të karaktereve. 423 00:25:10,950 --> 00:25:13,690 Pra, nëse ju thonë se një fushë e char gjatësi 255, 424 00:25:13,690 --> 00:25:16,910 bazës së të dhënave është fjalë për fjalë do të ju jap 255 karaktere. 425 00:25:16,910 --> 00:25:22,290 Dhe në qoftë se shtëpia përfundon duke u Mather dhe 6 karaktere total, 426 00:25:22,290 --> 00:25:25,090 ju jeni të humbur mbi 200 karaktere. 427 00:25:25,090 --> 00:25:29,640 >> Pra, një VARCHAR efektivisht përdor vetëm si karaktere shumë sa është e nevojshme 428 00:25:29,640 --> 00:25:31,590 deri tek një sasi maksimale. 429 00:25:31,590 --> 00:25:35,470 Por çmimi që ju paguani në fakt është performanca, potencialisht. 430 00:25:35,470 --> 00:25:39,740 Nëse ju e dini paraprakisht se të gjitha vargjet tuaja do të jetë 8 karaktere - 431 00:25:39,740 --> 00:25:43,090 për shembull, supozojmë se keni nevojë për fjalëkalime për gjatësi 8 - 432 00:25:43,090 --> 00:25:47,350 përmbysur e përdorimit të një fushë char në rast, edhe pse jo shpesh, 433 00:25:47,350 --> 00:25:51,100 është që të përcaktojë një gjatësi fikse për diçka si një fjalëkalim 434 00:25:51,100 --> 00:25:53,300 sepse tani të dhënave mund të jetë edhe më të zgjuar. 435 00:25:53,300 --> 00:25:58,160 Në qoftë se ajo e di se çdo fushë char, çdo varg në një kolonë është gjatësia e njëjtë, 436 00:25:58,160 --> 00:26:00,780 ju merrni mbrapa funksion të aksesit të rastit. 437 00:26:00,780 --> 00:26:05,110 Ju mund të kërcejnë rreth në mesin e fushave të ndryshme char në tryezën tuaj bazës së të dhënave 438 00:26:05,110 --> 00:26:07,940 për shkak të mendojnë për një bazë të dhënash si rreshtave dhe kolonave. 439 00:26:07,940 --> 00:26:11,670 Pra, nëse çdo njëri prej vargjeve është gjatësia e njëjtë, 440 00:26:11,670 --> 00:26:17,820 ju e dini se i pari është në bajt 0, një tjetër është në bajt 8 441 00:26:17,820 --> 00:26:20,240 dhe pastaj 16 dhe pastaj 24 dhe kështu me radhë. 442 00:26:20,240 --> 00:26:24,500 Pra, nëse të gjitha vargjet janë të njëjtën gjatësi, ju mund të kërcejnë rreth shumë më efikase. 443 00:26:24,500 --> 00:26:26,710 Kështu që mund të jetë një përfitim në drejtim të performancës, 444 00:26:26,710 --> 00:26:29,420 por zakonisht ju nuk keni luksin e ditur paraprakisht, 445 00:26:29,420 --> 00:26:32,170 kështu që një VARCHAR është rruga për të shkuar. 446 00:26:32,170 --> 00:26:36,030 Ja një tjetër detaj se edhe Facebook u përplas përfundimisht. 447 00:26:36,030 --> 00:26:39,670 Ints janë të mëdha, dhe ne lloj i përdorin ato nga default në çdo kohë ne duam një numër, 448 00:26:39,670 --> 00:26:41,750 por kjo është vetëm 32 bit. 449 00:26:41,750 --> 00:26:46,210 >> Dhe, edhe pse Facebook nuk kanë mjaft 4000000000 përdoruesit tani, 450 00:26:46,210 --> 00:26:48,680 ka patjetër disa njerëz atje me llogarive të shumëfishta 451 00:26:48,680 --> 00:26:50,960 ose llogaritë që janë hapur dhe mbyllur pastaj, 452 00:26:50,960 --> 00:26:55,130 dhe kështu Facebook vetvete Unë besoj se disa vite më parë kishte për kalimin nga int 453 00:26:55,130 --> 00:27:00,010 për të, siç është quajtur me vend, bigint, e cila është vetëm 64 bit vend. 454 00:27:00,010 --> 00:27:02,230 Pra, kjo shumë është një vendim design. 455 00:27:02,230 --> 00:27:06,570 Ju do të jetë me fat nëse amazingly projekti juaj i fundit kthehet për fillimin, 456 00:27:06,570 --> 00:27:10,010 ka 4 miliard përdorues dhe 1, të japë ose të marrë, 457 00:27:10,010 --> 00:27:13,200 në të cilin rast duke përdorur ints mund të jetë pak dritëshkurtër. 458 00:27:13,200 --> 00:27:16,230 Por në realitet, tavolinë përdoruesit tuaj është ndoshta mirë me ints. 459 00:27:16,230 --> 00:27:19,340 Por për diçka si pset 7, si tavolina juaj e historisë, 460 00:27:19,340 --> 00:27:23,700 ju mund të keni mijëra, miliona e përdoruesve në qoftë se ju zhvillohej në etrade.com. 461 00:27:23,700 --> 00:27:26,020 Pra, përderisa ju nuk mund të ketë më shumë se 4 miliardë përdoruesve, 462 00:27:26,020 --> 00:27:30,070 ata përdorues që ju keni mund të keni më shumë se 4 miliard transaksione me kalimin e kohës - 463 00:27:30,070 --> 00:27:33,200 blen dhe shet dhe gjërat në historinë e tyre. 464 00:27:33,200 --> 00:27:38,090 Pra, nëse ju bëni parashikojnë - përsëri, këto janë probleme të mirë të ketë, nëse ju keni këto të dhëna shumë - 465 00:27:38,090 --> 00:27:40,920 në qoftë se ju bëni parashikojnë të dhënat kalojnë madhësinë e një int, 466 00:27:40,920 --> 00:27:47,740 do me diçka si bigint është një drejtim mjaft shpesh nuk miratohet nga disenjatorët 467 00:27:47,740 --> 00:27:49,710 sepse njerëzit shifër që nuk do të jetë një problem, 468 00:27:49,710 --> 00:27:51,930 por kjo lehtë për të zgjedhur diçka më të madhe se kaq. 469 00:27:51,930 --> 00:27:55,380 Te Dhjeta ne jemi duke përdorur në pset 7, i cili specifikon saktësi fikse 470 00:27:55,380 --> 00:27:59,840 kështu që ju mund të shmangur çështjet që përfshijnë gjithandej dhe dyshe dhe reals dhe te ngjashme. 471 00:27:59,840 --> 00:28:02,440 >> Dhe pastaj ka disa fusha të tjera këtu. Ne do të tundë duart tona me ta në një farë mase. 472 00:28:02,440 --> 00:28:07,270 Por datat, herë të gjithë e kanë një format të përcaktuar në MySQL, 473 00:28:07,270 --> 00:28:10,830 dhe avantazhin e datave magazinimin, si dhe datat e jo varchars 474 00:28:10,830 --> 00:28:15,730 do të thotë që baza e të dhënave në fakt mund të reformat e tyre në formate të ndryshme, 475 00:28:15,730 --> 00:28:18,800 nëse një format amerikan ose europian apo format si - megjithatë ju doni atë - 476 00:28:18,800 --> 00:28:22,700 shumë më efikase se në qoftë se ajo ishte vetëm disa VARCHAR gjenerike. 477 00:28:22,700 --> 00:28:25,150 Dhe pastaj ka disa binar tjetër, varbinary, blobs. 478 00:28:25,150 --> 00:28:28,580 Këto janë objekte binare të mëdha, dhe ju gjithashtu mund të ruajtur të dhënat binare 479 00:28:28,580 --> 00:28:30,750 si dhe si të dhëna gjeometrike në një bazë të dhënash. 480 00:28:30,750 --> 00:28:34,350 Por për ne, ne do të zakonisht kujdeset për ints dhe varchars dhe si. 481 00:28:34,350 --> 00:28:36,230 Le të përfundojë deri këtë shembull me shtëpi. 482 00:28:36,230 --> 00:28:40,030 Shtëpia Unë jam duke shkuar për të thonë në mënyrë arbitrare do të jetë 255 chars. 483 00:28:40,030 --> 00:28:42,850 Atëherë vlera e parazgjedhur ne mund të bëjmë këtë. 484 00:28:42,850 --> 00:28:47,440 Ne mund nga default vënë të gjithë në Shtëpinë Mather, për shembull. 485 00:28:47,440 --> 00:28:49,710 Kjo është se si ne mund të specifikojë se baza e të dhënave 486 00:28:49,710 --> 00:28:52,460 duhet të sigurojnë që dikush gjithmonë ka një vlerë. Por unë do të lë që të jetë. 487 00:28:52,460 --> 00:28:55,270 Në fakt, për njerëzit që jetojnë jashtë kampus dhe jo në një shtëpi, 488 00:28:55,270 --> 00:28:59,590 ndoshta unë vërtetë duan të specifikojë se vlera e paracaktuar është NULL për shtëpinë, 489 00:28:59,590 --> 00:29:04,890 dhe atëherë unë duhet të kontrolloni këtë kuti dhe tregoni bazën e të dhënave është në rregull nëse shtëpia e Perdoruesit është NULL. 490 00:29:04,890 --> 00:29:07,270 >> Përsëri, kjo është një tjetër mekanizëm mbrojtës që ju mund të vënë në vend 491 00:29:07,270 --> 00:29:10,590 kështu që ju as nuk keni për të vënë atë në kodin tuaj PHP domosdoshmërisht. 492 00:29:10,590 --> 00:29:14,630 Baza e të dhënave do të sigurojë se gjërat janë ose nuk janë NULL. 493 00:29:14,630 --> 00:29:17,310 Dhe pastaj së fundi, Atribute. 494 00:29:17,310 --> 00:29:18,920 Asnjë nga këto janë me të vërtetë të rëndësishme. 495 00:29:18,920 --> 00:29:22,880 Binary, unsigned - asnjë nga ata që janë të rëndësishme për një VARCHAR. 496 00:29:22,880 --> 00:29:24,220 Indeksi. 497 00:29:24,220 --> 00:29:27,320 Does anyone know a mbani mend ose kanë një mend se çfarë është një indeks 498 00:29:27,320 --> 00:29:29,510 për diçka si shtëpi? 499 00:29:29,510 --> 00:29:35,240 Kjo shumë është në fakt një vendim i rëndësishëm dhe relativisht e lehtë të projektimit. 500 00:29:35,240 --> 00:29:39,200 Për ata që nuk e kanë parë ende atë, të premten kemi biseduar shkurtimisht për çelësat primar. 501 00:29:39,200 --> 00:29:43,240 Në një tryezë të bazës së të dhënave, një kyç primar është fushë apo kolonë 502 00:29:43,240 --> 00:29:46,270 që identifikon në mënyrë unike rreshtave në tabelë. 503 00:29:46,270 --> 00:29:49,150 Pra, në tabelën e tanishëm ne kemi ID, ne kemi emrat dhe e-mail. 504 00:29:49,150 --> 00:29:52,050 Cila nga këto është kandidati më i mirë të jetë një kyç primar, 505 00:29:52,050 --> 00:29:55,810 Roli i të cilit është të identifikojë unike rreshtave? 506 00:29:55,810 --> 00:29:57,530 Ndoshta ID. 507 00:29:57,530 --> 00:29:59,930 Ndoshta, ne mund të përdorë gjithashtu edhe atë që pse? 508 00:29:59,930 --> 00:30:02,860 Ndoshta ju mund të përdorni email sepse në teori është unike 509 00:30:02,860 --> 00:30:05,380 nëse njerëzit janë të ndarë llogaritë e-mail. 510 00:30:05,380 --> 00:30:09,980 Por realiteti është se në qoftë se jeni duke përdorur një ID numerike si 1234, 511 00:30:09,980 --> 00:30:14,170 kjo është vetëm 32 bit, ndërsa një adresë e-mail mund të jetë kjo shumë apo kjo bytes bytes shumë. 512 00:30:14,170 --> 00:30:16,610 Pra, në aspektin e efikasitetit për identifikues unik, 513 00:30:16,610 --> 00:30:19,270 ajo tenton të jetë praktikë e mirë vetëm për të përdorur një int 514 00:30:19,270 --> 00:30:23,090 edhe në qoftë se ju keni disa kandidatin varg që ju mund ndoshta të përdorni. 515 00:30:23,090 --> 00:30:26,760 >> Për diçka si shtëpi, kjo nuk duhet të jetë një kyç primar 516 00:30:26,760 --> 00:30:30,770 sepse atëherë vetëm 1 person mund të jetojë në Mather dhe 1 person në Currier dhe si. 517 00:30:30,770 --> 00:30:32,790 Në mënyrë të ngjashme, kjo nuk duhet të jetë unike. 518 00:30:32,790 --> 00:30:37,830 Dallimi mes kryesor dhe unike është se në rastin e tabelës tonë të tanishme, 519 00:30:37,830 --> 00:30:42,620 ID do të jetë primare, por nuk është primar mail për arsye kemi përmendur vetëm - 520 00:30:42,620 --> 00:30:44,740 Performanca - por ajo duhet të vazhdojë të jetë unike. 521 00:30:44,740 --> 00:30:47,200 Kështu që ju ende mund të zbatojë unike pa bërë kërkesën 522 00:30:47,200 --> 00:30:49,520 se kjo është një fushë e rëndësishme super primar. 523 00:30:49,520 --> 00:30:52,610 Por kjo është mjaft e dobishme: Indeksi i. 524 00:30:52,610 --> 00:30:56,180 Nëse ju e dini paraprakisht për projektin tuaj përfundimtar, për pset 7, ose në përgjithësi, 525 00:30:56,180 --> 00:30:59,480 se kjo fushë është shtëpia do të jetë diçka që ju kërkoni në një shumë 526 00:30:59,480 --> 00:31:01,910 duke përdorur fjalen zgjedhur apo diçka tjetër, 527 00:31:01,910 --> 00:31:05,180 atëherë ju mund të tregoni preemptively bazës së të dhënave për të punuar magjinë e saj 528 00:31:05,180 --> 00:31:10,510 dhe sigurohuni që ajo krijon në kujtesë ndonjë strukturave dashuroj dhënave të nevojshme 529 00:31:10,510 --> 00:31:13,770 për të shpejtuar kërkimet të bazuara në shtëpi. 530 00:31:13,770 --> 00:31:17,860 Ndoshta ajo do të përdorë një tabelë hash, ndoshta ajo do të përdorë një listë të lidhura. 531 00:31:17,860 --> 00:31:21,260 Në të vërtetë, ajo tenton për të përdorur një pemë, shpesh një strukturë që quhet B-pemë - 532 00:31:21,260 --> 00:31:24,090 nuk një pemë binare por një B-pema - cila është një pemë shumë gjerë 533 00:31:24,090 --> 00:31:27,370 që ju mund të shihni në një klasë si CS124, të dhënat strukturat klasës. 534 00:31:27,370 --> 00:31:31,800 Por në të shkurtër, ju nuk keni për t'u shqetësuar rreth se kur duke përdorur software i zgjuar bazës së të dhënave. 535 00:31:31,800 --> 00:31:35,890 Ju vetëm mund të them se, "Indeksi këtë fushë kështu që unë mund të kërkoni në atë më efikase." 536 00:31:35,890 --> 00:31:40,250 >> Në qoftë se ju lënë këtë off dhe ju provoni të kërkoni për të gjithë në bazën e të dhënave që jeton në Mather, 537 00:31:40,250 --> 00:31:42,710 ajo do të bie në kërkim linear. 538 00:31:42,710 --> 00:31:45,360 Dhe në qoftë se ju keni marrë 6000 undergrads gjithë jetojnë në një shtëpi, 539 00:31:45,360 --> 00:31:47,900 ju do të jeni për të kërkuar të gjithë tabelën për të gjetur Matherites, 540 00:31:47,900 --> 00:31:52,190 ndërsa në qoftë se ju thonë Index, shpresojmë se kjo do të jetë diçka afër një kërkim logaritmike 541 00:31:52,190 --> 00:31:54,510 për të gjetur ato lloje të studentëve. 542 00:31:54,510 --> 00:31:56,750 Kjo është vetëm një tipar të lirë të kthehet më, 543 00:31:56,750 --> 00:31:59,530 edhe pse ai ka ardhur me një çmim prej disa sasinë e hapësirës. 544 00:31:59,530 --> 00:32:02,690 Së fundi, auto-rritje, kjo fushë AI, 545 00:32:02,690 --> 00:32:05,830 që thjesht do të thotë në qoftë se ajo është një int dhe ju nuk doni të kujdeseni për të ardhura atë vetë 546 00:32:05,830 --> 00:32:07,570 çdo herë që ka një përdorues të ri, kontrolloni se, 547 00:32:07,570 --> 00:32:11,910 dhe çdo përdorues që merr futur automatikisht do të merrni një ID të ri. 548 00:32:11,910 --> 00:32:15,620 Le të klikoni Ruaj, dhe tani le të grindem me këtë dizajn. 549 00:32:15,620 --> 00:32:20,200 Nëse unë shkoj në Browse, njoftim që të dy Mike dhe shtëpia ime është NULL. 550 00:32:20,200 --> 00:32:22,420 Unë mund të përdorni për të redaktuar këtë phpMyAdmin dorë. 551 00:32:22,420 --> 00:32:25,110 Unë mund të shkojnë në këtu dhe lloji në Mather dhe pastaj goditi Enter, 552 00:32:25,110 --> 00:32:27,740 dhe tani njoftim tabela është e ndryshme. 553 00:32:27,740 --> 00:32:29,270 Por vini re unë mund të bëj diçka tjetër si. 554 00:32:29,270 --> 00:32:33,530 ID Davidit është 1, kështu që phpMyAdmin përsëri është vetëm një mjet administrativ; 555 00:32:33,530 --> 00:32:35,970 kjo nuk është diçka që përdoruesit e tuaja janë ndonjëherë do të shohin. 556 00:32:35,970 --> 00:32:38,810 Pra, nëse unë në vend të klikoni butonin SQL up krye - 557 00:32:38,810 --> 00:32:41,450 dhe përsëri, pset 7 do ju prezantoj me shumë nga këto pyetje - 558 00:32:41,450 --> 00:32:45,260 Unë mund të dorë të ekzekutuar SQL strukturuar gjuhës komandën query 559 00:32:45,260 --> 00:32:56,410 UPDATE SET përdoruesit shtëpiak = 'Pfoho' KU id = 1. 560 00:32:56,410 --> 00:33:00,830 Këto janë pyetje SQL, mjaft të bukur, shumë e lexueshme nga e majta në të djathtë. 561 00:33:00,830 --> 00:33:04,350 Update tryezë përdoruesit, vendosur në fushë të quajtur shtëpi të Pfoho 562 00:33:04,350 --> 00:33:06,830 ku ID e përdoruesit është 1. 563 00:33:06,830 --> 00:33:11,480 Ose unë mund të bëni edhe ku mail = 'malan@harvard.edu'. 564 00:33:11,480 --> 00:33:14,860 Për aq kohë sa që identifikon në mënyrë unike mua, që do të punojnë si. 565 00:33:14,860 --> 00:33:18,810 Por ID tendencë të jetë performanca të larta, kështu që le të bëjmë këtë. 566 00:33:18,810 --> 00:33:22,950 Le të klikoni Go. Mirë, lecture.users nuk ekziston. Çfarë është gabimi im? 567 00:33:22,950 --> 00:33:26,220 Çfarë është Tabela e quajtur fakt këtu? 568 00:33:26,220 --> 00:33:28,770 Ajo që quhet nxënës vetëm për shkak se kjo është ajo që ne e bëmë deri këtu në të majtë të lartë. 569 00:33:28,770 --> 00:33:31,860 Ajo që quhet studentët jo, shfrytëzuesit. Pra, klikoni Go tani. 570 00:33:31,860 --> 00:33:34,330 1 rresht prekur. Query mori 0.01 sekonda. 571 00:33:34,330 --> 00:33:38,010 Nëse unë klikoni Browse tani, tani jeton në Malan Pfoho. 572 00:33:38,010 --> 00:33:42,070 Pra, kjo është një tjetër shije e SQL, por pset do të ecin ju nëpërmjet një pak më shumë për këtë. 573 00:33:42,070 --> 00:33:44,710 >> Ka një vendim budallaqe unë kam bërë tashmë këtu. 574 00:33:44,710 --> 00:33:47,820 Unë do të argumentojnë se ky dizajn bazës së të dhënave është joefikase 575 00:33:47,820 --> 00:33:51,650 sepse më shumë njerëz të shtoj në tryezë studentëve, 576 00:33:51,650 --> 00:33:54,730 më shumë nga ne kam fillojnë duke shtuar, më shumë nga TFS kam fillojnë duke shtuar, 577 00:33:54,730 --> 00:33:58,320 ne jemi duke shkuar për të filluar për të parë se çfarë tepricat në këtë tryezë? 578 00:34:00,840 --> 00:34:06,020 >> Po. [Student] Duke parë se ajo është në studentë, ne jemi duke përdorur të njëjtën [padëgjueshme] 579 00:34:06,020 --> 00:34:07,360 E njëjta - e drejta, pikërisht. 580 00:34:07,360 --> 00:34:10,400 Pra, nëse 400 njerëz jetojnë në Mather, japin ose të marrë, 581 00:34:10,400 --> 00:34:15,000 përfundimisht kjo tabelë do të ketë 400 rreshtave që thonë "Mather", "Mather," 582 00:34:15,000 --> 00:34:16,590 "Mather", "Mather", "Mather". 583 00:34:16,590 --> 00:34:19,820 Ne jemi të humbur të gjitha këto bytes, dhe ka një çift i takeaways atje. 584 00:34:19,820 --> 00:34:23,080 1, nuk është rasti i çmendur qoshe ku nëse dikush paguan një shumë të holla 585 00:34:23,080 --> 00:34:25,949 dhe Riemëron Mather, ne tani duhet të ndryshojmë tërë tabelën tonë bazës së të dhënave. 586 00:34:25,949 --> 00:34:29,730 Kjo nuk do të ndodhë shpesh, edhe pse Pfoho ishte quajtur dikur Veriut House 15 vjet më parë, 587 00:34:29,730 --> 00:34:32,310 kështu që ajo ndodh. Por kjo nuk është e gjitha që imponues. 588 00:34:32,310 --> 00:34:36,000 Më bindëse se një rast qoshe si ajo e që kanë nevojë për të rinovuar të dhënat në masë 589 00:34:36,000 --> 00:34:41,150 për një bazë të dhënash është arsyeja pse jeni ruajtjen Mather përsëri dhe përsëri dhe përsëri dhe përsëri? 590 00:34:41,150 --> 00:34:43,020 Kjo është një shumë e karaktere, 6 karaktere. 591 00:34:43,020 --> 00:34:45,500 Nuk mund të bëjmë edhe më mirë se kaq, sidomos për Pforzheimer? 592 00:34:45,500 --> 00:34:48,320 S'ka dyshim se ne mund të bëjmë më mirë se kaq shumë karaktere. 593 00:34:48,320 --> 00:34:51,790 Pse jo vetëm të shoqërojnë një identifikues unik me çdo shtëpi 594 00:34:51,790 --> 00:34:55,020 dhe dyqan se për çdo përdorues? Pra, le të provoni këtë. 595 00:34:55,020 --> 00:35:00,610 Në vend se të përdorni vetëm tabelën studentët, më lejoni të shkoj deri në bazën e të dhënave tim leksion deri këtu në të majtë të lartë. 596 00:35:00,610 --> 00:35:02,600 Vini re këtu ai thotë Krijo tryezë. 597 00:35:02,600 --> 00:35:04,550 Më lejoni të krijoni një tabelë të re të quajtur shtëpi. 598 00:35:04,550 --> 00:35:08,880 Numri i kolonave do të jetë 2. Enter. 599 00:35:08,880 --> 00:35:11,200 Tani kam 2 fusha. 600 00:35:11,200 --> 00:35:14,600 Unë jam duke shkuar për të thirrur këtë emër, dhe ajo do të jetë një VARCHAR e gjatësisë 255, 601 00:35:14,600 --> 00:35:18,770 >> por kjo është goxha arbitrare. Më lejoni të vënë këtë këtu poshtë nga Konventa. 602 00:35:18,770 --> 00:35:22,840 Pra, të vënë një ID deri këtu. Le të japim çdo shtëpi një identifikues unik. 603 00:35:22,840 --> 00:35:25,360 Le të japim çdo shtëpi një emër. 604 00:35:25,360 --> 00:35:30,980 Le të specifikojë se identifikues do të jetë vetëm duke unsigned konventë të përdorin vetëm numra pozitive. 605 00:35:30,980 --> 00:35:35,020 Le të shkojnë përpara dhe të japë këtë një fushë auto-Rritja tani për tani. 606 00:35:35,020 --> 00:35:38,160 Dhe nuk kemi nevojë për ndonjë gjë tjetër? 607 00:35:38,160 --> 00:35:41,010 Le të shkojnë përpara dhe klikoni Ruaj. 608 00:35:41,010 --> 00:35:42,480 Tani unë kam një tryezë të dytë. 609 00:35:42,480 --> 00:35:45,860 Vini re si një mënjanë kjo është pak më e fshehtë komanda SQL 610 00:35:45,860 --> 00:35:50,280 që do të duhej të shkruani me dorë, nëse nuk përdorni një mjet administrativ si phpMyAdmin. 611 00:35:50,280 --> 00:35:51,990 Pra, një tjetër arsye ne e përdorin atë. 612 00:35:51,990 --> 00:35:55,480 Kjo është lloj mrekullisht e dobishme e pedagogjike, sepse ju mund të klikoni rreth 613 00:35:55,480 --> 00:36:01,050 dhe të kuptoj se si funksionojnë gjërat vetëm nga kopjimi dhe pasting atë që bëri phpMyAdmin. 614 00:36:01,050 --> 00:36:04,150 Por komanda tabela Krijo është ajo që u ekzekutua vetëm, dhe këtu është tabela ime. 615 00:36:04,150 --> 00:36:11,370 Më lejoni tani të shkojnë përpara dhe të përdorin SQL parë sesa thjeshtëzoj duke klikuar butonin Insert. 616 00:36:11,370 --> 00:36:15,040 Më lejoni të bëni INSERT INTO shtëpive, 617 00:36:15,040 --> 00:36:22,230 dhe unë jam duke shkuar për të thonë se emri i shtëpisë do të ketë një vlerë prej "Mather '. 618 00:36:22,230 --> 00:36:24,790 Kjo ishte. Kjo Sintaksa është pak më i fshehtë. 619 00:36:24,790 --> 00:36:26,660 Ky është emri i fushave ne duam të futur. 620 00:36:26,660 --> 00:36:30,390 Këto janë vlerat që ne duam të futur në këto fusha. Më lejoni të klikoni Go. 621 00:36:30,390 --> 00:36:34,410 1 rresht futur mori 0.02 sekonda. Më lejoni të klikoni Browse tani. 622 00:36:34,410 --> 00:36:42,020 >> Njoftim qoftë se unë klikoni Browse, ka Mather, të cilit ID është duke Automatizim numri 1. 623 00:36:42,020 --> 00:36:45,000 Më lejoni të bëj një tjetër. Më lejoni të shkojnë në tab SQL. 624 00:36:45,000 --> 00:36:52,950 INSERT INTO shtëpive. Emri i shtëpisë do të ketë një vlerë prej Pfoho dhe kështu me radhë. 625 00:36:52,950 --> 00:36:56,350 Go. Dhe unë mund të vazhdojmë të bëjmë këtë përsëri dhe përsëri dhe përsëri. 626 00:36:56,350 --> 00:36:59,470 Ose në qoftë se ju merrni mërzitur duke përdorur phpMyAdmin, ju mund të përdorni vetëm skedën Fut 627 00:36:59,470 --> 00:37:01,000 dhe nuk duhet të shtypni SQL papërpunuara. 628 00:37:01,000 --> 00:37:04,690 Ju mund vetëm zhurmë atë më shpejt nga shtypja, për shembull, korrier, Enter, 629 00:37:04,690 --> 00:37:07,610 dhe tani në qoftë se ne klikoni Browse, ka korrier me një ID e 3. 630 00:37:07,610 --> 00:37:09,920 Pra, kjo është ajo që ne kuptojmë me auto ardhura. 631 00:37:09,920 --> 00:37:12,280 Por tani ne kemi për të rregulluar diçka në studentët. 632 00:37:12,280 --> 00:37:16,240 Studentët se çfarë duhet lloji të dhënat e fushës shtëpi tani do të jetë? 633 00:37:16,240 --> 00:37:19,450 Ajo duhet të jetë një int, e drejtë? 634 00:37:19,450 --> 00:37:23,950 Pra, qëllimi këtu është që nga faktor, i njohur ndryshe si normalizuar, tabelat 635 00:37:23,950 --> 00:37:27,940 kështu që ne nuk të ruajtur informacione redundantly në ndonjë nga tavolina e mia. 636 00:37:27,940 --> 00:37:31,130 Dhe përsëri, rruga ne kemi qenë këtu do të thotë Mather, Mather, 637 00:37:31,130 --> 00:37:34,220 Mather, Mather, Pfoho, Pfoho, Pfoho, Pfoho, e cila është shumë e tepërt 638 00:37:34,220 --> 00:37:36,240 në drejtim të shkapërderdhjen e chars. 639 00:37:36,240 --> 00:37:40,820 Pra më lejoni të shkoj përpara dhe ta ndryshoni këtë duke klikuar Struktura, 640 00:37:40,820 --> 00:37:44,620 dhe më lejoni të shkoj përpara dhe të kontrolloni jashtë fushës shtëpi, kliko Ndrysho, 641 00:37:44,620 --> 00:37:46,990 dhe tani unë jam duke shkuar për të ndryshuar këtë të jetë një int. 642 00:37:46,990 --> 00:37:49,490 255 nuk është më relevante. 643 00:37:49,490 --> 00:37:54,010 Më lejoni të shkoj përpara dhe të thonë se është në rregull në qoftë se ajo është ende NULL. Ruaj. 644 00:37:54,010 --> 00:37:55,870 Tani studentët tryezë është ndryshuar me sukses, 645 00:37:55,870 --> 00:37:59,090 dhe vini re përsëri shtëpi është një int. 646 00:37:59,090 --> 00:38:02,220 Si një mënjanë, injorojnë numrin në kllapa, kur është fjala për ints. 647 00:38:02,220 --> 00:38:03,770 >> Kjo është për arsye trashëgimi. 648 00:38:03,770 --> 00:38:06,920 Kthehu në ditë, kur ju nuk keni GUIs, ju në vend që pati një mjedis command line, 649 00:38:06,920 --> 00:38:11,580 e 10 dhe 11, përkatësisht të specifikuara sa karaktere ju duhet të tregojnë 650 00:38:11,580 --> 00:38:13,950 në dritaren e terminalit të vërtetë shfaqur fusha. 651 00:38:13,950 --> 00:38:19,150 Ajo ka asgjë të bëjë me gjatësinë bit e fushës aktuale, kështu që ne vetëm do të injorojë se për tani. 652 00:38:19,150 --> 00:38:20,990 Tani unë kam për të shkuar në këtë tryezë. 653 00:38:20,990 --> 00:38:24,610 Dhe në qoftë se Davidi jeton në Mather, shtëpi nuk duhet të jetë 0, 654 00:38:24,610 --> 00:38:27,350 cila është një int paracaktuar vlera afërt tek NULL. 655 00:38:27,350 --> 00:38:29,810 Ai duhet të jetojë në shtëpinë e 1. 656 00:38:29,810 --> 00:38:36,870 Le të themi se në mënyrë arbitrare jeton Mike në Pfoho, kështu që numri i shtëpisë 2. 657 00:38:36,870 --> 00:38:40,160 Tani tryezën time duket pak më të fshehtë. 658 00:38:40,160 --> 00:38:41,960 Por e konsiderojnë efikasitetin. 659 00:38:41,960 --> 00:38:44,860 Unë jam tani duke përdorur vetëm 32 bit për të identifikuar nga shtëpia, 660 00:38:44,860 --> 00:38:49,530 që do të thotë ka vetëm 1 Përkufizimi kanonik i Mather shtëpinë time dhe Pfoho 661 00:38:49,530 --> 00:38:52,090 dhe kjo është në tabelën e shtëpive. 662 00:38:52,090 --> 00:38:55,880 Pra, nëse unë dua të bashkohem tani këto tabela, të mendojnë për atë në këtë mënyrë. 663 00:38:55,880 --> 00:39:01,980 Këtu kam studentët tryezën time, dhe në anën e djathtë ka këto numra, 1 dhe 2. 664 00:39:01,980 --> 00:39:04,180 1 është Mather, 2 është Pfoho. 665 00:39:04,180 --> 00:39:08,580 Ne kemi ato numra të njëjta në këtë tabelë tjetër, e cila quhet shtëpi, 666 00:39:08,580 --> 00:39:11,020 1 dhe 2 dhe 3 shtëpi për ato 3. 667 00:39:11,020 --> 00:39:14,990 Ajo që ne tani duam të bëjmë është të ketë aftësinë për kodin PHP, SQL dhe, 668 00:39:14,990 --> 00:39:18,800 të lloj ribashkuar këto tabela, ku në qoftë se këto janë studentët dhe këto janë shtëpitë, 669 00:39:18,800 --> 00:39:22,050 ne duam të disi të kombinuar ato në mënyrë që linjat deri 1 me 1, 670 00:39:22,050 --> 00:39:25,670 2 linja me 2, dhe kështu që ne mund të kuptoj se ku Davidin 671 00:39:25,670 --> 00:39:28,000 dhe ku Mike dhe ku të gjithë të tjerët jeton. 672 00:39:28,000 --> 00:39:31,850 Për ta bërë këtë, ne mund të ekzekutojë një pyetje SQL si në vijim. 673 00:39:31,850 --> 00:39:40,470 SELECT * NGA studentët BASHKOHU PËR shtëpi - 674 00:39:40,470 --> 00:39:43,000 Dhe tani çfarë fushat duam të bashkohen në? 675 00:39:43,000 --> 00:39:49,520 Pra students.house = houses.id. 676 00:39:49,520 --> 00:39:54,150 >> Një fshehtë pak, por kjo pjesë do të thotë fjalë për fjalë të krijuar një tabelë të re të përkohshme 677 00:39:54,150 --> 00:39:56,690 kjo është rezultat i bashkimit studentëve dhe shtëpitë. 678 00:39:56,690 --> 00:40:00,340 Dhe si nuk ju duan të kombinojnë këshilla e gishtat e mi këtu? 679 00:40:00,340 --> 00:40:05,280 Bëje 'fushë shtëpi të barabartë në shtëpitë e nxënësve' fushë ID. 680 00:40:05,280 --> 00:40:10,220 Dhe në qoftë se unë tani klikoni Go, unë kthehet pikërisht ajo që unë shpresuar për të. 681 00:40:10,220 --> 00:40:15,890 Davidi është në Mather, Mike është në Pfoho, dhe unë gjithashtu shoh identifikues unik. 682 00:40:15,890 --> 00:40:18,640 Por çështja është tani kam një tabelë të plotë. 683 00:40:18,640 --> 00:40:23,020 Dhe kështu takeaway këtu për pset 7 apo me të vërtetë për projektin përfundimtar: 684 00:40:23,020 --> 00:40:25,830 Nëse ju gjeni se ju jeni ruajtjen çdo pjesë e informacionit të përsëritur, 685 00:40:25,830 --> 00:40:28,850 nëse kjo është një shtëpi, ndoshta kjo është një qytet, SHTETËRORE, dhe ZIP 686 00:40:28,850 --> 00:40:32,050 ku ZIP zakonisht mund të, por jo gjithmonë të përdoret si një identifikues unik, 687 00:40:32,050 --> 00:40:35,810 shkojnë përmes ushtrimit mendore dhe pastaj me diçka si phpMyAdmin 688 00:40:35,810 --> 00:40:40,660 e factoring në dukje se të dhënat e zakonshme, sepse sidomos si faqen tuaj te internetit merr më të mirë të përdorura 689 00:40:40,660 --> 00:40:45,440 më shumë popullor, kjo është se si ju të bëni të sigurtë që çdo gjë është e super të shpejtë, 690 00:40:45,440 --> 00:40:51,930 duke i dhënë bazën e të dhënave si shumë të lë të kuptohet se për të veçantisë të jetë e mundur. 691 00:40:51,930 --> 00:40:53,860 Kjo ishte një shumë. 692 00:40:53,860 --> 00:40:59,010 Çdo pyetje? Dakord. Le të marrin një pushim 5-minutëshe atje dhe rigrupohen. 693 00:41:01,600 --> 00:41:03,540 Dakord. 694 00:41:03,540 --> 00:41:08,680 Më poshtë është një shembull që është përdorur disa vjet më parë kur mora CS161, 695 00:41:08,680 --> 00:41:10,960 e cila është operuar sistemet klasë në kolegj 696 00:41:10,960 --> 00:41:15,160 cili është i njohur për të qenë e mahnitshme, por një sasi të çmendur të punës, 697 00:41:15,160 --> 00:41:19,810 dhe ajo fokusohet vërtetë në disa prej nivelit të ulët problemet që lindin në sistemet operative 698 00:41:19,810 --> 00:41:22,700 dhe gjithashtu edhe në botën e bazave të të dhënave. 699 00:41:22,700 --> 00:41:27,040 >> Historia që u tha nga profesori im, Margo ujë mineral, që ishte viti si më poshtë. 700 00:41:27,040 --> 00:41:30,990 Supozoni se ju keni një frigorifer pak konvikt për ju dhe shokun tuaj 701 00:41:30,990 --> 00:41:34,030 dhe të dy prej jush të vërtetë si qumësht. 702 00:41:34,030 --> 00:41:36,360 Pra, ju vijnë në shtëpi nga një ditë në klasë, shokun tuaj nuk është ende atje, 703 00:41:36,360 --> 00:41:39,650 ju hapni frigoriferin, dhe ti e kupton, "Oh mallkuar, ne jemi nga qumështi." 704 00:41:39,650 --> 00:41:42,070 Pra, ju mbyllni frigorifer, ju ecni nëpër rrugë për të CVS 705 00:41:42,070 --> 00:41:45,830 dhe për të marrë gjithnjë e më shumë në linjat e gjata për të blerë disa qumësht në CVS. 706 00:41:45,830 --> 00:41:48,470 Ndërkohë, shokun juaj vjen në shtëpi nga e tij ose të saj të klasës, 707 00:41:48,470 --> 00:41:51,690 vjen në dhomë, hap frigorifer të vërtetë duan disa qumësht, 708 00:41:51,690 --> 00:41:54,130 hap frigoriferin dhe "Damn, nuk ka qumësht." 709 00:41:54,130 --> 00:41:57,890 Kështu që ai ose ajo e mbyll frigoriferin, ecën nga dera, dhe shkon në ABP 710 00:41:57,890 --> 00:42:00,910 ose diku tjetër se CVS ku ju nuk jeni do të përplasem në njëri-tjetrin 711 00:42:00,910 --> 00:42:02,790 të shkoni të merrni disa qumësht. 712 00:42:02,790 --> 00:42:04,820 Sigurisht që disa minuta më vonë, të dy prej jush të kthehet në shtëpi 713 00:42:04,820 --> 00:42:07,740 dhe tani ju keni qumësht dy herë sa më shumë që ju në të vërtetë të kërkuar. 714 00:42:07,740 --> 00:42:10,670 Dhe duke qenë qumësht, tani ajo do të shkojë keq për shkak se ju pëlqen qumësht 715 00:42:10,670 --> 00:42:14,200 por ju nuk vërtetë si qumësht, kështu që tani ju keni qumësht shumë, kështu që ajo do të thartë. 716 00:42:14,200 --> 00:42:16,830 Kjo është një e tmerrshme, situatë e tmerrshme. 717 00:42:16,830 --> 00:42:22,920 Çfarë mund të ketë zgjidhur këtë situatë, nëse ju keni qenë në shtëpi shokun e parë? Po. 718 00:42:22,920 --> 00:42:25,970 [Student] Ju duhet të ketë lënë një shënim. [Qeshura] 719 00:42:25,970 --> 00:42:28,090 Mirë. Ju duhet të keni lënë një shënim. 720 00:42:28,090 --> 00:42:32,320 Ju duhet të keni vënë një shënim Post-it ose si duke thënë, "Gone për qumësht," 721 00:42:32,320 --> 00:42:36,830 dhe pastaj shokun tuaj konceptuale do të ishte bllokuar nga vërtetë për ta bërë këtë. 722 00:42:36,830 --> 00:42:38,010 Ose ju mund të shkoni 1 hap më tej. 723 00:42:38,010 --> 00:42:41,060 Ju mund të vërtetë të bllokoj frigoriferin me disa lloj dry, 724 00:42:41,060 --> 00:42:44,870 dhe tani shokun tuaj fjalë për fjalë do të jetë i bllokuar nga frigorifer. 725 00:42:44,870 --> 00:42:48,520 Nëse ne përgjithësoj përsëri në programimin, 726 00:42:48,520 --> 00:42:51,610 ju mund të pothuajse të mendoj për frigorifer si një lloj të ndryshueshme ose një struct, 727 00:42:51,610 --> 00:42:53,500 disa lloj enë për informacion. 728 00:42:53,500 --> 00:42:58,290 Problemi këtu është se në thelb të dy prej jush ishin të lejuar për të inspektuar 729 00:42:58,290 --> 00:43:02,370 ose lexoni gjendjen e kësaj strukture të dhënave, 730 00:43:02,370 --> 00:43:08,050 por ju shikuara atë në kohë të ndryshme dhe ende të dy prej jush bërë një vendim 731 00:43:08,050 --> 00:43:11,920 bazuar në gjendjen e botës në ato momente të ndryshme në kohë. 732 00:43:11,920 --> 00:43:15,570 Pra, ju kishte mbyllur frigoriferin, ju do të keni të paktën shmangur shokun tuaj 733 00:43:15,570 --> 00:43:19,070 nga që ka qenë në gjendje për të inspektuar gjendjen e botës, 734 00:43:19,070 --> 00:43:22,530 kështu që ai ose ajo nuk mund të ketë bërë që të njëjtin vendim. 735 00:43:22,530 --> 00:43:25,780 Pra bazat e të dhënave, siç rezulton, e kanë këtë problem vazhdimisht. 736 00:43:25,780 --> 00:43:31,050 >> Le të shohim nëse ne mund të ndërtojmë një skenar. 737 00:43:31,050 --> 00:43:34,310 Supozoni se ju jeni një lloj djalë i keq dhe ju shkoni në Bankën e Amerikës 738 00:43:34,310 --> 00:43:37,950 ose një nga vendet e tjera në sheshin që kanë një anë çift ATM krah, 739 00:43:37,950 --> 00:43:41,200 dhe disi ju artistikisht se si për të kopjuar një kartë ATM - jo të gjitha se e vështirë. 740 00:43:41,200 --> 00:43:42,730 Kjo është vetëm një shirit magnetik. 741 00:43:42,730 --> 00:43:45,180 Dhe kështu ajo që ju doni të përpiqen për të bëni është të luajnë këtë lojë 742 00:43:45,180 --> 00:43:49,060 ku keni vënë 1 kartë në 1 makinë, një tjetër kartë në makinë tjetër, 743 00:43:49,060 --> 00:43:51,980 dhe në thelb ju doni të përpiqen për të tërhequr paratë në të njëjtën kohë, 744 00:43:51,980 --> 00:43:54,930 sepse imagjinoni se historia shkon si vijon. 745 00:43:54,930 --> 00:43:57,350 Makinë në të majtë merr kartën tuaj dhe kodin PIN, 746 00:43:57,350 --> 00:44:00,240 dhe pastaj ju thoni: "Më jepni 100 $." 747 00:44:00,240 --> 00:44:04,790 ATM është programuar që së pari të bëjë një të zgjedhur në bazën e të dhënave të tij apo ekuivalent - 748 00:44:04,790 --> 00:44:10,780 çfarëdo databazë është e përdorur - të parë e bën këtë përdorues të kenë të paktën $ 100 në llogari të tij ose të saj? 749 00:44:10,780 --> 00:44:16,180 Nëse është kështu, atëherë nxjerr nga goja $ 100 dhe $ 100 zbres nga bilanci tyre. 750 00:44:16,180 --> 00:44:20,470 Por sigurisht, nëse ka makina të shumta këtu ose mënyra të shumta të inspektuar 751 00:44:20,470 --> 00:44:23,560 gjendja e kësaj bote, kasafortë banka, për të parë sa para keni, 752 00:44:23,560 --> 00:44:26,780 mendoj se thjesht nga rastësia e makinës në të majtë dhe të drejtën 753 00:44:26,780 --> 00:44:30,140 dy kërkoni këtë pyetje në përafërsisht të njëjtën moment në kohë. 754 00:44:30,140 --> 00:44:34,160 >> Dhe kjo me siguri mund të ndodhë. ATM janë kompjuterat këto ditë. 755 00:44:34,160 --> 00:44:37,670 Pra, në qoftë se makina në të majtë thotë: "Po, ju keni të paktën $ 100," 756 00:44:37,670 --> 00:44:42,150 Ndërkohë makinë në të djathtë thotë: "Po, ju keni të paktën $ 100," 757 00:44:42,150 --> 00:44:47,420 pastaj të dy prej tyre të vazhdojë për të përfunduar programet e tyre dhe në fakt nxjerr jashtë $ 100 758 00:44:47,420 --> 00:44:50,820 dhe thonë: "Më parë ju kishte 200 $." 759 00:44:50,820 --> 00:44:54,890 "Më lejoni të rinovuar ndryshore për tani të 100 $ mbetur në llogari." 760 00:44:54,890 --> 00:44:58,780 Por në qoftë se dy prej tyre janë kontrolluar bilancin e llogarisë suaj dhe të gjetur se ajo është 200 $ 761 00:44:58,780 --> 00:45:02,000 dhe të dy prej tyre atëherë të bëjë matematikë dhe thoni 200-100, 762 00:45:02,000 --> 00:45:06,990 makinat kanë potencialisht nxjerr nga goja dy faturat $ 100 në çdo makinë, 763 00:45:06,990 --> 00:45:11,360 por ata kanë përditësuar vetëm bilancin e llogarisë tuaj shuma të jetë $ 100. 764 00:45:11,360 --> 00:45:15,130 Me fjalë të tjera, ju keni marrë nga $ 200, por sepse ata inspektuar gjendjen e botës 765 00:45:15,130 --> 00:45:18,840 në të njëjtën kohë dhe pastaj të marrë një vendim të bazuar në atë vlerë, 766 00:45:18,840 --> 00:45:21,930 ata nuk mund të bëjë matematikë përfundimisht saktë. 767 00:45:21,930 --> 00:45:25,520 Pra, në një situatë shumë të bankës ju me të vërtetë dëshironi të keni disa lloj lokaut 768 00:45:25,520 --> 00:45:28,450 në mënyrë që sa më shpejt që ju keni kontrolluar gjendjen e disa ndryshore 769 00:45:28,450 --> 00:45:31,220 kjo është me të vërtetë e rëndësishme, si bilancin e llogarisë suaj, 770 00:45:31,220 --> 00:45:36,070 nuk e le dikush tjetër të marrë vendime bazuar në atë derisa ju jeni bërë duke bërë gjë tuaj, 771 00:45:36,070 --> 00:45:38,920 ku në këtë rast ju jeni ATM në të majtë. 772 00:45:38,920 --> 00:45:41,160 Lock të gjithë të tjerët jashtë. 773 00:45:41,160 --> 00:45:44,650 Ju në fakt mund të arrijë këtë efekt në disa mënyra të ndryshme. 774 00:45:44,650 --> 00:45:48,660 >> Mënyra më e thjeshtë në MySQL është një linjë e SQL që ju dha 775 00:45:48,660 --> 00:45:52,030 në specifikim të caktuar të problemit që duket tamam si kjo. 776 00:45:52,030 --> 00:45:57,420 Vendos në tavolinë - çfarëdo qoftë ajo që quhet - një id, një simbol, dhe një pjesë, një numër të aksioneve, 777 00:45:57,420 --> 00:45:59,660 vlerat e mëposhtme, për shembull. 778 00:45:59,660 --> 00:46:03,370 Nëse ju nuk e keni lexuar ende spekulim, ky është një shembull që përfshin si do ju shkoj për 779 00:46:03,370 --> 00:46:07,340 blerjen e aksioneve 10 të këtij aksioneve qindarkë për Presidentin Skroob, 780 00:46:07,340 --> 00:46:10,340 ID cilit përdorues ndodh të jetë numri 7? 781 00:46:10,340 --> 00:46:14,070 Kjo thotë INSERT INTO tryezë id vijim, simbol, dhe numri i aksioneve 782 00:46:14,070 --> 00:46:18,200 i 7, 'DVN.V', dhe 10. 783 00:46:18,200 --> 00:46:21,510 Por - por, por, por - rreshtin e dytë është e rëndësishme. 784 00:46:21,510 --> 00:46:26,310 PËR aksioneve Duplicate KRYESORE UPDATE = aksionet + VLERAT (aksione). 785 00:46:26,310 --> 00:46:28,350 Pra krejtësisht fshehtë, duke kërkuar në shikim të parë. 786 00:46:28,350 --> 00:46:31,990 Por fakti se ky query SQL, edhe pse ai përfundon në 2 rreshta, 787 00:46:31,990 --> 00:46:35,920 është 1 query gjatë, kjo do të thotë se është atomike 788 00:46:35,920 --> 00:46:41,000 në kuptimin që kjo pyetje ose do të ekzekutohet të gjithë së bashku apo jo në të gjitha. 789 00:46:41,000 --> 00:46:45,100 Dhe nga përkufizimi i MySQL, kjo është se si ata të implementuar këtë pyetje. 790 00:46:45,100 --> 00:46:51,010 Ajo është nga përkufizimi në manualin e garantuar për të ekzekutuar të gjitha në një herë ose aspak. 791 00:46:51,010 --> 00:46:54,020 Motivimi për këtë është si më poshtë. 792 00:46:54,020 --> 00:46:58,540 Nëse në këtë rast se ju jeni duke u përpjekur për të blerë 10 aksione të aksioneve, 793 00:46:58,540 --> 00:47:02,260 kjo është lloj i tregimit të njëjtë si qumështi, kjo është lloj i tregimit të njëjtë si ATM. 794 00:47:02,260 --> 00:47:04,970 >> Nëse ju bëni gabim të mos e përdorni këtë sintaksë 795 00:47:04,970 --> 00:47:09,610 por në vend të zgjedhur nga baza e të dhënave për të parë se sa shumë aksione të aksioneve peni këtij 796 00:47:09,610 --> 00:47:13,750 Presidenti ka Skroob kanë, dhe mendoj se ai ka 10 aksione, 797 00:47:13,750 --> 00:47:19,330 dhe pastaj disa dytë më vonë ju nda pastaj të bëjë një deklaratë UPDATE, 798 00:47:19,330 --> 00:47:24,810 e cila është një tjetër deklaratë në SQL që thotë se të shkojnë përpara dhe për të shtuar më shumë aksione të 10 799 00:47:24,810 --> 00:47:28,700 me 10 e tij të tanishme në mënyrë që në mënyrë ideale totale është 20, 800 00:47:28,700 --> 00:47:33,490 Problemi është sepse në sistemet e sotme bazës së të dhënave dhe për shkak se në kompjuterët e sotme 801 00:47:33,490 --> 00:47:35,990 ju keni procesorë të shumta, cores të shumta - 802 00:47:35,990 --> 00:47:38,920 me fjalë të tjera, kompjuterët mund të vërtetë të bërë gjëra të shumta në të njëjtën kohë - 803 00:47:38,920 --> 00:47:44,270 nuk ka asnjë garanci që SELECT tuaj dhe UPDATE juaj në këtë rast 804 00:47:44,270 --> 00:47:46,150 do të ndodhë për të kthyer prapa. 805 00:47:46,150 --> 00:47:49,140 Pra, një skenar i keq do të jetë që ju të bëni SELECT 806 00:47:49,140 --> 00:47:51,670 për të parë se sa aksionet e kësaj aksioneve peni ka Skroob keni, 807 00:47:51,670 --> 00:47:54,710 dhe pastaj thjesht nga rastësia tjetër query bazës së të dhënave është ekzekutuar - 808 00:47:54,710 --> 00:47:57,740 ndoshta Skroob saj në një dritare të shfletuesit duke u përpjekur për të blerë 10 aksione 809 00:47:57,740 --> 00:48:00,700 në një tjetër dritare krejt, ashtu si e ATM - 810 00:48:00,700 --> 00:48:05,410 dhe mendoj se një tjetër query merr në mes të zgjedhur dhe të rinovuar. 811 00:48:05,410 --> 00:48:10,210 Kjo mund të jetë rast që Skroob tani humbet disa numrin e aksioneve 812 00:48:10,210 --> 00:48:14,340 sepse një tjetër proces është inspektuar gjendjen e botës së tij, 813 00:48:14,340 --> 00:48:17,800 ose ai merr aksione më shumë se ai duhet të ketë. 814 00:48:17,800 --> 00:48:23,250 Ne nuk do të shkojë në veçoritë e pikërisht ajo që ato linja të veçanta histori do të jetë, 815 00:48:23,250 --> 00:48:28,380 por pikë është në qoftë se ju duhet të kontrolloni një vlerë ndryshores dhe pastaj të marrë një vendim, 816 00:48:28,380 --> 00:48:32,500 në qoftë se ka një rrezik të dikush tjetër bën diçka në mes këtyre 2 pasqyra, 817 00:48:32,500 --> 00:48:36,220 siç mund të ndodhë në sistemet multiprocessor, në multicore sistemet, 818 00:48:36,220 --> 00:48:41,220 kompjutera me aftësinë për të bërë gjëra të shumta në të njëjtën kohë, gjëra të këqija mund të ndodhë 819 00:48:41,220 --> 00:48:44,530 si llogari bankare duke debituar gabimisht, duke blerë qumësht dy herë më shumë, 820 00:48:44,530 --> 00:48:46,730 ose në këtë rast numri i gabuar i aksioneve. 821 00:48:46,730 --> 00:48:48,370 Por ka një mënyrë e lehtë për të menduar për këtë. 822 00:48:48,370 --> 00:48:53,290 >> Ajo rezulton se SQL mbështet gjithashtu, nëse ju konfiguroni tryezën tuaj të saktë, 823 00:48:53,290 --> 00:48:56,920 diçka që quhet transaksionet, të cilat unë do të argumentojnë në fakt është edhe më e lehtë për të kuptuar 824 00:48:56,920 --> 00:49:00,650 se kjo, por kjo nuk është një 1-astar, kështu që kjo është në fakt një pak më shumë të përfshira. 825 00:49:00,650 --> 00:49:04,960 Nuk është fjalë për fjalë një deklaratë në SQL quhet transaksion START. 826 00:49:04,960 --> 00:49:08,300 Ashtu si ka SELECT, UPDATE, INSERT, DELETE, dhe të bashkohet dhe një bandë e të tjerëve, 827 00:49:08,300 --> 00:49:10,970 nuk janë fjalë kyçe të tilla si transaksion START. 828 00:49:10,970 --> 00:49:13,560 Dhe çfarë ju atëherë bëni në kontekstin e pset 7 - 829 00:49:13,560 --> 00:49:17,270 ju nuk keni për të bërë këtë për pset 7, është e qartë si disclaimed nuk është e nevojshme, 830 00:49:17,270 --> 00:49:18,830 por për projekte finale ajo mund të jetë e dobishme - 831 00:49:18,830 --> 00:49:22,820 në qoftë se ju e quani një pyetje e transaksionit Start dhe pastaj një tjetër pyetje 832 00:49:22,820 --> 00:49:25,620 dhe pastaj një tjetër query dhe pastaj një tjetër, një tjetër dhe një tjetër, 833 00:49:25,620 --> 00:49:31,860 këto pyetje në fakt nuk do të ekzekutohet derisa ju telefononi deklaratë SQL KRYERJEN, 834 00:49:31,860 --> 00:49:37,220 në të cilën pikë, nëse kjo është deklarata ose 20 2 deklarata, ata të gjithë do të ekzekutohet në të njëjtën kohë, 835 00:49:37,220 --> 00:49:42,770 që do të thotë askush tjetër nuk mund të aksidentalisht blejnë qumësht shumë të parave ose debiti shumë 836 00:49:42,770 --> 00:49:46,340 ose të blejnë aksione shumë, sepse të gjitha pyetjet tuaja do të ekzekutojë 837 00:49:46,340 --> 00:49:48,410 për të kthyer prapa për të kthyer prapa. 838 00:49:48,410 --> 00:49:51,580 Dhe kjo është super i rëndësishëm, sidomos kur ju jeni duke bërë diçka si kjo. 839 00:49:51,580 --> 00:49:54,900 Ky është një shembull arbitrar që thotë le të rinovuar llogarinë bankare 840 00:49:54,900 --> 00:50:00,200 duke vendosur një ekuilibër të barabartë me bilancin - $ 1000, ku numri i llogarisë është 2. 841 00:50:00,200 --> 00:50:04,260 Dhe pastaj deklarata e dytë është tani le të depozitojë se $ 1000 842 00:50:04,260 --> 00:50:07,310 në dikush tjetër llogari bankare të cilit numri i llogarisë është 1. 843 00:50:07,310 --> 00:50:10,400 >> Me fjalë të tjera, ky është një shembull i përsosur i vendit ku ju doni të bëni të sigurtë 844 00:50:10,400 --> 00:50:13,590 se të dyja këto deklarata të ndodhë ose jo në të gjitha 845 00:50:13,590 --> 00:50:15,450 sepse përndryshe konsumatori do të merrni dehur 846 00:50:15,450 --> 00:50:17,670 dhe ju do të jeni për të marrë paratë e tyre dhe jo të depozitojë atë diku tjetër, 847 00:50:17,670 --> 00:50:20,470 ose banka do të merrni dehur ku ju do të jeni për të depozituar paratë 848 00:50:20,470 --> 00:50:23,140 por në fakt nuk zbres atë nga llogaria e përdoruesit. 849 00:50:23,140 --> 00:50:25,810 Pra, ju doni të dy prej tyre për të ekzekutuar së bashku. 850 00:50:25,810 --> 00:50:29,140 Kështu hyn në transaksione botërore. 851 00:50:29,140 --> 00:50:31,360 Pra, kjo është diçka për të mbajtur në shpinë e mendjen tuaj, 852 00:50:31,360 --> 00:50:34,710 jo aq shumë për qëllime të vetëm një projekt përfundimtar, 853 00:50:34,710 --> 00:50:36,700 por në qoftë se ju doni të marrë projektin tuaj përfundimtar diku, 854 00:50:36,700 --> 00:50:39,040 në qoftë se ju doni të filluar disa kompani rreth tij, 855 00:50:39,040 --> 00:50:41,270 në qoftë se ju doni të zgjidhur problemin disa Grupi i studentëve në kampus 856 00:50:41,270 --> 00:50:45,210 dhe në fakt të ketë një website të jetojnë, aktiv, këto janë lloj i mete delikate që mund të lindin 857 00:50:45,210 --> 00:50:49,480 nëse ju nuk mendoni se mjaft me atë që mund të ndodhë në qoftë se 2 persona 858 00:50:49,480 --> 00:50:54,190 janë duke u përpjekur për të hyrë në faqen tuaj në të njëjtën fjalë për fjalë moment në kohë, 859 00:50:54,190 --> 00:50:56,890 ku pyetjet e tyre përndryshe mund të merrni thurur. 860 00:50:58,840 --> 00:51:01,420 >> Gati për disa JavaScript, një ngacmues tij? 861 00:51:01,420 --> 00:51:04,320 Kjo është gjuha jonë e fundit për semestër. Dakord. 862 00:51:04,320 --> 00:51:09,940 Fatmirësisht, JavaScript duket shumë, shumë, shumë të ngjashme me 2 gjuhë, C dhe PHP, 863 00:51:09,940 --> 00:51:11,140 ne kemi bërë deri më tani. 864 00:51:11,140 --> 00:51:14,340 Nuk ka asnjë JavaScript në pset 7, por është një mjet tepër të dobishme 865 00:51:14,340 --> 00:51:18,840 kur është fjala për të bërë web-bazë e projekteve përfundimtare apo të vërtetë vetëm programimit web në përgjithësi. 866 00:51:18,840 --> 00:51:20,950 Pra, një pasqyrë të shpejtë të diçka të quajtur DOM. 867 00:51:20,950 --> 00:51:23,600 Këtu është një super faqe e thjeshtë web që me të vërtetë vetëm thotë hello, bota 868 00:51:23,600 --> 00:51:25,970 dyja në titull dhe në trup. 869 00:51:25,970 --> 00:51:29,270 Si gjurmë ka qenë sugjeruar për disa kohë, 870 00:51:29,270 --> 00:51:31,380 nuk është me të vërtetë një hierarki të faqeve web. 871 00:51:31,380 --> 00:51:34,220 Unë mund të tërheqë këtë copë të njëjtën HTML si një pemë, 872 00:51:34,220 --> 00:51:37,470 duke menduar përsëri në diskutimet tona të strukturave të të dhënave në C, si më poshtë. 873 00:51:37,470 --> 00:51:40,710 Unë kam disa nyje të veçantë rrënjë të quajtur nyja dokument, 874 00:51:40,710 --> 00:51:43,650 dhe ne do të shohim analoge të kësaj në JavaScript në vetëm një moment. 875 00:51:43,650 --> 00:51:48,330 Fëmija i parë dhe fëmija e vetme e që në këtë rast është HTML tag. 876 00:51:48,330 --> 00:51:49,880 Nuk ka asnjë hartë e drejtpërdrejtë të DOCTYPE. 877 00:51:49,880 --> 00:51:53,170 Kjo është një gjë e veçantë, kështu që ne duhet vetëm të injorojë atë kur është fjala për këtë DOM, 878 00:51:53,170 --> 00:51:55,810 kjo Document Object Model pemë. 879 00:51:55,810 --> 00:51:59,530 Vini re se tag HTML, të cilën unë e kam përshkruar në mënyrë arbitrare si një drejtkëndësh, 880 00:51:59,530 --> 00:52:02,890 ka 2 fëmijë: kokë dhe trup. 881 00:52:02,890 --> 00:52:04,840 >> Ata janë tërhequr në mënyrë të ngjashme si rectangles. 882 00:52:04,840 --> 00:52:08,970 Kjo është kuptimplotë pictorially se kreu është në të majtë të trupit. 883 00:52:08,970 --> 00:52:11,960 Implikimi është se kreu i vjen së pari në pemë. 884 00:52:11,960 --> 00:52:14,910 Pra, ka në fakt një urdhërimin në një pemë, kur ju tërheq atë si kjo, 885 00:52:14,910 --> 00:52:17,460 edhe pse forma dhe gjësend janë arbitrare. 886 00:52:17,460 --> 00:52:20,360 Kreu ndërkohë ka një fëmijë të vetme të quajtur titullin, 887 00:52:20,360 --> 00:52:25,170 dhe titulli në fakt ka fëmijën e vet, e cila është "Hello, World", 888 00:52:25,170 --> 00:52:32,210 me qëllim që unë tërhoqi si një ovale këtu për të bërë atë paksa e ndryshme nga drejtkëndësh. 889 00:52:32,210 --> 00:52:37,420 Këto janë elemente të rectangles, ndërsa hello, bota është me të vërtetë një nyje tekst. 890 00:52:37,420 --> 00:52:39,850 Pra, kjo është një nyje në pemë, por kjo është një lloj të ndryshme të nyjeve 891 00:52:39,850 --> 00:52:41,730 kështu që unë tërhoqi atë në mënyrë arbitrare ndryshe. 892 00:52:41,730 --> 00:52:45,000 Ngjashëm ka trupi të ketë një fëmijë të quajtur Hello, World, si edhe, 893 00:52:45,000 --> 00:52:47,910 nyje aq e ndryshme, edhe pse ata janë rastësisht njëjtin tekst, 894 00:52:47,910 --> 00:52:52,100 por unë kam tërhequr atë duke përdorur të njëjtën formë. Pra, kush kujdeset? 895 00:52:52,100 --> 00:52:56,820 E pra, ajo që është e bukur për HTML është se ai e ka këtë natyrën hierarkike. 896 00:52:56,820 --> 00:53:01,010 Dhe çfarë është e bukur për JavaScript dhe veçanërisht bibliotekave që janë të lirë në dispozicion 897 00:53:01,010 --> 00:53:07,120 dhe popullore si jQuery, ju mund të lundruar strukturën e pemë aq amazingly lehtë. 898 00:53:07,120 --> 00:53:11,790 Çdo të gjëra që ne bëmë në C me pointers dhe pemëve traversing dhe recursing në nyje 899 00:53:11,790 --> 00:53:15,300 Fëmija majtë për fëmijën e duhur, të gjithë një e papritur, ne mund të lloj të marrë për të dhënë 900 00:53:15,300 --> 00:53:19,450 si amazingly shkolluar nëse jo pak frustruese 901 00:53:19,450 --> 00:53:22,470 por jo gati një mënyrë efikase për të shkuar në lidhje me programimin. 902 00:53:22,470 --> 00:53:24,470 Dhe kështu me këto gjuhë të nivelit të lartë si JavaScript 903 00:53:24,470 --> 00:53:28,340 ne do të jetë në gjendje për të lundruar këtë pemë më shumë intuitive. 904 00:53:28,340 --> 00:53:30,430 >> Dhe me të vërtetë sintaksë do të jetë mjaft e njohur. 905 00:53:30,430 --> 00:53:32,950 Në qoftë se ju kurrë nuk kam parë më parë JavaScript, ky është një referencë të vërtetë e bukur 906 00:53:32,950 --> 00:53:35,910 nga Mozilla folks, njerëz të cilët bëjnë Firefox, 907 00:53:35,910 --> 00:53:38,370 kështu që mos ngurroni të shfletoni se në lehtësinë tuaj. 908 00:53:38,370 --> 00:53:41,590 Çfarë do të gjeni - dhe këto slides janë identike me atë që kemi përdorur për ditë të tjera - 909 00:53:41,590 --> 00:53:44,030 Në mënyrë të ngjashme, kryesore është zhdukur. 910 00:53:44,030 --> 00:53:47,010 Kështu që kur ju shkruani një program në JavaScript, nuk ka asnjë funksion kryesor. 911 00:53:47,010 --> 00:53:48,690 Ju vetëm të filloni të shkruani kodin. 912 00:53:48,690 --> 00:53:51,660 Por një dallim kyç ndërmjet JavaScript dhe C dhe PHP 913 00:53:51,660 --> 00:53:55,890 është se ndërsa C dhe PHP deri tani janë ekzekutuar anën server 914 00:53:55,890 --> 00:53:59,180 nga aplikim në këtë rast ose më në përgjithësi nga një server, 915 00:53:59,180 --> 00:54:04,270 JavaScript me dashje është ekzekutuar zakonisht nga një shfletues. 916 00:54:04,270 --> 00:54:08,440 Me fjalë të tjera, ju mund të shkruani kodin JavaScript, si ne jeni gati për të, 917 00:54:08,440 --> 00:54:13,080 në një server në aplikim, por ju të përfshijë atë në mesin tuaj HTML, CSS mesin tuaj, 918 00:54:13,080 --> 00:54:16,100 mes gifs tuaja dhe PNGs tuaj dhe JPEGs tuaj 919 00:54:16,100 --> 00:54:19,170 kështu që kur përdoruesi viziton faqen tuaj të internetit, nëse ju jeni duke përdorur JavaScript, 920 00:54:19,170 --> 00:54:21,770 se kodi JavaScript vjen nga server në shfletuesin, 921 00:54:21,770 --> 00:54:24,540 dhe kjo është shfletuesi që në fakt ekzekuton atë. 922 00:54:24,540 --> 00:54:27,960 Pra, kjo ka implikime të rëndësishme për pronat edhe intelektuale. 923 00:54:27,960 --> 00:54:32,600 Kjo është lloj i trashë për të mendoj edhe për mbrojtjen e IP tuaj kur është fjala për JavaScript Kodi 924 00:54:32,600 --> 00:54:37,560 sepse nga natyra e gjuhës ajo merr ekzekutuar zakonisht anën e shfletuesit. 925 00:54:37,560 --> 00:54:40,360 >> Ju mund të turbulloj atë, që do të thotë që ju mund të bëjë atë të duket i çmendur dhe të shëmtuar 926 00:54:40,360 --> 00:54:45,400 pa whitespace, emrat e tmerrshme ndryshueshme, për ta bërë atë më të vështirë për njerëzit që të vjedhin IP tuaj, 927 00:54:45,400 --> 00:54:48,120 por kryesore është se ajo është ekzekutuar anën e shfletuesit. 928 00:54:48,120 --> 00:54:51,790 Edhe pse si një anë mënjanë JavaScript mund të përdoren server, 929 00:54:51,790 --> 00:54:54,480 Rasti më i zakonshëm përdorimi tani është ende në shfletuesin. 930 00:54:54,480 --> 00:54:59,800 Dhe këtu është ajo që duket si. Këtu është një rast tjetër në qoftë se-tjetër-ndërtuar ashtu si C, ashtu si PHP. 931 00:54:59,800 --> 00:55:02,420 Këtu është një shprehje Boolean kur ju "ose" 2 gjëra së bashku. 932 00:55:02,420 --> 00:55:04,330 Këtu është kur ju "dhe" 2 gjëra së bashku. 933 00:55:04,330 --> 00:55:08,300 Këtu është një deklaratë e kaloni, i cili është i ngjashëm me PHP 934 00:55:08,300 --> 00:55:10,810 në atë që ju mund të kaloni në lloje të ndryshme të vlerave. 935 00:55:10,810 --> 00:55:15,180 Sythe të ngjashme kanë për sythe këtu, të cilat janë të strukturuara identike me atë që kemi parë më parë. 936 00:55:15,180 --> 00:55:18,110 Ndërsa sythe, ne kemi marrë bëni ndërsa sythe. 937 00:55:18,110 --> 00:55:20,290 Variablat, ndonjëherë në mënyrë pak më ndryshe. 938 00:55:20,290 --> 00:55:24,560 Ju nuk deklarojnë variablave si ju bëni në PHP dhe C, 939 00:55:24,560 --> 00:55:27,860 por në mënyrë të ngjashme është JavaScript shtypur dobët. 940 00:55:27,860 --> 00:55:32,730 Ju nuk specifikojnë int ose float ose string ose diçka të tillë zakonisht. 941 00:55:32,730 --> 00:55:34,240 Ju mund të specifikoni var. 942 00:55:34,240 --> 00:55:38,040 Ju nuk duhet të specifikojë var, por ajo ka pasoja në qoftë se ju nuk e bëni. 943 00:55:38,040 --> 00:55:42,000 Zakonisht në qoftë se ju heq var, ju aksidentalisht krijoni një ndryshore globale në vend të lokale. 944 00:55:42,000 --> 00:55:46,420 Pra më lejoni të propozojnë që ju pothuajse gjithmonë vetëm të them var dhe pastaj emrin e ndryshueshme. 945 00:55:46,420 --> 00:55:48,740 Kjo nuk është një tip, kjo është vetëm var per ndryshueshme. 946 00:55:48,740 --> 00:55:52,930 Kjo do të jetë një shembull, nëse kjo është 123 ose "Hello, World". 947 00:55:52,930 --> 00:55:58,910 Vargjeve janë të pranishëm dhe syntactically ngjashme me PHP. 948 00:55:58,910 --> 00:56:03,690 Unë do të them numrat var dhe pastaj kam përdorur kllapa katrore sërish të deklarojë një ndryshore 949 00:56:03,690 --> 00:56:08,870 cilit lloj është grup që ka këto numra të veçantë në atë të ndara me presje. 950 00:56:08,870 --> 00:56:11,740 Dhe pastaj në fund, ky është i vetmi që me të vërtetë duket ndryshe. 951 00:56:11,740 --> 00:56:16,700 Kujtojnë se në PHP, ne do të kemi zbatuar një sërë lidhjesh për një student 952 00:56:16,700 --> 00:56:20,220 si Zamyla që mund të duket si ky, ku ndryshueshme quhet student. 953 00:56:20,220 --> 00:56:23,370 Kllapa katrore të thotë këtu vjen një grup. 954 00:56:23,370 --> 00:56:28,500 >> Fakti që unë nuk jam duke përdorur indekset numerike, por strings - id, shtëpi, dhe emri - 955 00:56:28,500 --> 00:56:30,990 do të thotë se ky është një grup shoqerues, 956 00:56:30,990 --> 00:56:34,490 dhe këto shigjeta me e barabartë me shenjë dhe kllapa angled 957 00:56:34,490 --> 00:56:37,310 nënkupton se çelësi është "ID", vlera është 1; 958 00:56:37,310 --> 00:56:39,310 çelësi është "shtëpia", vlera është Winthrop Shtëpia; 959 00:56:39,310 --> 00:56:41,800 kyç është "emri", vlera është Zamyla Chan. 960 00:56:41,800 --> 00:56:47,110 Pra, ka 3 çelësat brenda të këtij grup asociativ, secila prej të cilave ka vlerën e vet. 961 00:56:47,110 --> 00:56:52,880 Ne kemi parë se në pset 7, ose ju së shpejti do të, në të njëjtën ide JavaScript, 962 00:56:52,880 --> 00:56:55,220 por ajo do të duket si ky. 963 00:56:55,220 --> 00:57:00,070 Pra studenti var - asnjë shenjë dollari dhe nuk përmendet ende lloji, por var - 964 00:57:00,070 --> 00:57:05,860 barabartë dhe pastaj të hapur formatimin e teksteve kaçurrel, sepse në JavaScript, kur ju keni çiftet kyç vlerë, 965 00:57:05,860 --> 00:57:08,900 ju përdorni të vërtetë diçka që quhet një objekt. 966 00:57:08,900 --> 00:57:13,490 Dhe ata prej jush që ka marrë autoblindat apo si mund të të kujtojnë objekte nga Java 967 00:57:13,490 --> 00:57:15,140 ose gjuhë të ngjashme. 968 00:57:15,140 --> 00:57:17,880 JavaScript nuk është Java, para së gjithash. 969 00:57:17,880 --> 00:57:21,600 Kjo ishte disa vjet më parë të projektimit të qëllimshme vendim të zbres diçka tjetër që ishte popullor, 970 00:57:21,600 --> 00:57:25,640 emrin e saj, edhe pse ajo nuk ka lidhje themelore për Java veten. 971 00:57:25,640 --> 00:57:31,490 JavaScript ka objekte, dhe ju krijojnë ato nga rruga e simbol Brace kaçurrel. 972 00:57:31,490 --> 00:57:36,710 Objektet në JavaScript janë shumë e shumë të barabartë me vargjeve associative në PHP 973 00:57:36,710 --> 00:57:40,030 kur është fjala për magazinimin e të dhënave në brendësi të tyre. 974 00:57:40,030 --> 00:57:44,100 >> Por edhe më fuqishëm në JavaScript mund të shoqërojnë shumë lehtë funksione 975 00:57:44,100 --> 00:57:48,040 brenda një objekt, dhe edhe pse ju mund ta bëni këtë në gjuhë të tjera, 976 00:57:48,040 --> 00:57:50,040 kjo është mjaft e një paradigmë të përbashkët, si ne do të shohim. 977 00:57:50,040 --> 00:57:54,380 Me pak fjalë, ky objekt paraqet një student, i cili është veçanërisht Zamyla, 978 00:57:54,380 --> 00:58:00,380 dhe kjo është konceptualisht të ngjashme, vetëm syntactically ndryshe nga kjo. 979 00:58:00,380 --> 00:58:03,840 Le të përdorni të vërtetë JavaScript në një skedar. 980 00:58:03,840 --> 00:58:05,570 Ajo rezulton se ka një tag script. 981 00:58:05,570 --> 00:58:08,180 Ne kemi parë një tag stil dhe ne kemi parë të tjerë tags HTML. 982 00:58:08,180 --> 00:58:11,510 Tag script fakt do të përmbajë disa kodin JavaScript. 983 00:58:11,510 --> 00:58:15,500 Më lejoni të shkoj në aplikim, ku kemi disa kodin burimor para-bërë. 984 00:58:15,500 --> 00:58:18,700 Unë nuk kam postuar atë në faqen e internetit ende, por unë do të bëj që pas klasës. 985 00:58:18,700 --> 00:58:21,770 Le të hapë këtë, blink.html. 986 00:58:21,770 --> 00:58:27,560 Kthehu në vitet 1990, ka qenë fjalë për fjalë një HTML tag quajtur tag injoroj, 987 00:58:27,560 --> 00:58:30,340 dhe kjo ishte një nga më të Etiketimet mrekullisht amortizuar në internet 988 00:58:30,340 --> 00:58:36,140 ku ju do të vizitoni disa web faqe 1990 stil dhe të fillojnë të shohim tekstin ndezje ju pëlqen kjo, 989 00:58:36,140 --> 00:58:39,810 rezultatet e tag Marquis, i cili kishte shkuar teksti si kjo. 990 00:58:39,810 --> 00:58:45,070 Një nga disa herë kur bota ka rënë dakord të vërtetë në një standard të internetit, 991 00:58:45,070 --> 00:58:48,250 të gjithë në të gjithë bordit vrarë tag injoroj disa vite më parë. 992 00:58:48,250 --> 00:58:52,860 Por ne mund të ringjallë atë me JavaScript, si një demonstrim i fuqisë që keni 993 00:58:52,860 --> 00:58:56,660 kur ju mund të shkruani një program në brendësi të një web faqe. 994 00:58:56,660 --> 00:59:00,240 Së pari le të kaloni mbi gjëra të reja dhe të përqëndrohet vetëm në e vjetër. 995 00:59:00,240 --> 00:59:01,780 >> Këtu është gjëra të vjetra në këtë shembull. 996 00:59:01,780 --> 00:59:06,350 Unë kam një HTML tag, tag një kokë, dhe një tag titullin. 997 00:59:06,350 --> 00:59:11,210 Atëherë unë kam një tag trupit këtu me një div, e cila risjell është vetëm një ndarje drejtkëndëshe e faqes 998 00:59:11,210 --> 00:59:14,720 që unë kam dhënë një ID unike arbitrarisht nga "përshëndetje" për të, 999 00:59:14,720 --> 00:59:18,320 vetëm kështu që unë kam një mënyrë për të iu referuar unike për atë, që ka një tekst shumë të thjeshtë: 1000 00:59:18,320 --> 00:59:20,220 hello, bota. 1001 00:59:20,220 --> 00:59:23,940 Tani më lejoni të shkoni deri në fillim të këtij file dhe shikoni se çfarë është e re. 1002 00:59:23,940 --> 00:59:27,710 Gjëja e parë që është e re top up është tag script, 1003 00:59:27,710 --> 00:59:31,280 dhe në brendësi të njoftimit tag script kam deklaruar një funksion. 1004 00:59:31,280 --> 00:59:34,610 Të deklarojë një funksion në javascript, mjaft të ngjashme me PHP, 1005 00:59:34,610 --> 00:59:37,930 ju shkruani fjalë funksion atëherë emrin e funksionit, kllapa, 1006 00:59:37,930 --> 00:59:40,400 dhe ndoshta disa argumente në qoftë se ajo merr ndonjë. 1007 00:59:40,400 --> 00:59:43,510 Atëherë unë kam marrë mbajtëse time kaçurrel si zakonisht, dhe tani ne kemi disa kodin paksa ri, 1008 00:59:43,510 --> 00:59:45,230 por le të shohim se çfarë do të thotë kjo. 1009 00:59:45,230 --> 00:59:48,670 Pra div var, kjo thjesht do të thotë të më jepni një div ndryshueshme quajtur. 1010 00:59:48,670 --> 00:59:50,530 Unë mund të ketë e quajti atë foo, por kam kërkuar që ajo të quhet div 1011 00:59:50,530 --> 00:59:52,620 për arsye se do të jetë e qartë në një të dytë. 1012 00:59:52,620 --> 00:59:57,480 Atëherë ajo kthehet në JavaScript - dhe kjo është kodi JavaScript mishëruar në web faqen time - 1013 00:59:57,480 --> 01:00:01,760 nuk është një ndryshore globale veçantë në terezi quajtur dokument. 1014 01:00:01,760 --> 01:00:04,780 JavaScript është në fakt një object-oriented gjuhë. 1015 01:00:04,780 --> 01:00:07,230 Ne nuk do të shkojnë në detaje në 50 si për atë që do të thotë, 1016 01:00:07,230 --> 01:00:11,180 por tani për tani e di se një objekt është shumë e shumë si një struct. 1017 01:00:11,180 --> 01:00:14,740 Ashtu si ne pamë rrugën prapa, kur në një nga më të hershme të problemit përcakton 1018 01:00:14,740 --> 01:00:17,150 ku ne kemi vënë një shumë e informacionit në një struct, 1019 01:00:17,150 --> 01:00:21,330 në mënyrë të ngjashme është dokumentuar një struct veçantë që vjen me shfletuesin, 1020 01:00:21,330 --> 01:00:24,810 vjen me ndonjë web faqe. Kjo nuk është diçka që unë krijuar. 1021 01:00:24,810 --> 01:00:28,210 Brenda kësaj strukture dokument, edhe pse, ju keni jo vetëm të dhënat 1022 01:00:28,210 --> 01:00:30,010 por ju gjithashtu kanë funksione. 1023 01:00:30,010 --> 01:00:34,090 >> Dhe çdo herë që të ketë një funksion në brendësi të një strukture, brenda një objekti, 1024 01:00:34,090 --> 01:00:36,490 ajo që quhet një metodë. Por kjo është e njëjta gjë. 1025 01:00:36,490 --> 01:00:40,110 Një metodë është një funksion që pikërisht kështu ndodh të jetë në brendësi të diçkaje tjetër. 1026 01:00:40,110 --> 01:00:42,990 Pra, kjo do të thotë se kjo është e ndryshueshme globale të veçantë të quajtur dokument 1027 01:00:42,990 --> 01:00:47,690 ka një funksion të quajtur getElementById që fjalë për fjalë e bën këtë. 1028 01:00:47,690 --> 01:00:52,460 Kjo do të merrni ju një element nga DOM, Document Object Model pemë, 1029 01:00:52,460 --> 01:00:55,520 ID cilit është në këtë rast përshëndetje. 1030 01:00:55,520 --> 01:00:59,200 Me fjalë të tjera, të gjitha ato që kemi shpenzuar kohë në strukturat e të dhënave vjen në lojë këtu. 1031 01:00:59,200 --> 01:01:01,400 Kjo fotografi e një DOM se kemi pasur një moment më parë, 1032 01:01:01,400 --> 01:01:06,100 edhe pse faqja është pak më ndryshe, në qoftë se kam pasur një div në këtë foto, 1033 01:01:06,100 --> 01:01:11,180 document.getElementById çfarë do të kthehet tek unë do të në mënyrë efektive të jetë një tregues 1034 01:01:11,180 --> 01:01:15,440 tek drejtkëndësh në dru, një reference te drejtkëndësh në pema. 1035 01:01:15,440 --> 01:01:18,410 Pra, kjo është ajo që do të thotë në fakt të thirrur një prej këtyre funksioneve. 1036 01:01:18,410 --> 01:01:21,960 Në këtë rast përsëri është një div. Kjo nuk është një organ ose një titull. 1037 01:01:21,960 --> 01:01:26,480 Pra, le të shohim se çfarë unë pastaj të bëjë me këtë div tani që unë kam atë në brendësi të këtij div ndryshueshme quajtur. 1038 01:01:26,480 --> 01:01:32,580 Kjo rezulton me JavaScript që ju keni mundësinë për të shkulje e faqes tuaj CSS dinamike. 1039 01:01:32,580 --> 01:01:39,060 Deri tani, të gjithë e kemi bërë CSS, edhe pse e kufizuar, është në atributet stil, 1040 01:01:39,060 --> 01:01:41,730 ose ku tjetër kemi vënë CSS? 1041 01:01:42,730 --> 01:01:45,810 Unë lloj i asaj një prishur. Në tag stil në krye të file. 1042 01:01:45,810 --> 01:01:49,180 Ose vendin e tretë ka qenë në? 1043 01:01:50,710 --> 01:01:54,590 >> Një file të jashtëm, diçka. Css. 1044 01:01:54,590 --> 01:01:56,730 Pra, ata janë 3 vende ne kemi bërë deri më tani CSS, 1045 01:01:56,730 --> 01:01:59,310 por është kapur kemi koduar vështirë se të gjithë. 1046 01:01:59,310 --> 01:02:04,060 Ju keni vendosur që ju pëllumb në pset 7, ne kemi vendosur para leksion se çfarë CSS ynë do të jetë. 1047 01:02:04,060 --> 01:02:07,380 Por në qoftë se ju doni të ndryshojë CSS tuaj, ju në fakt mund të bëjë që 1048 01:02:07,380 --> 01:02:09,370 një herë ju keni një gjuhë programimi aktuale. 1049 01:02:09,370 --> 01:02:13,910 CSS, HTML - gjuhë programuese jo. JavaScript është. 1050 01:02:13,910 --> 01:02:18,200 Pra, del se sa më shpejt që ju keni një nga ato rectangles nga pema 1051 01:02:18,200 --> 01:02:23,050 quajtur DOM, ajo ka në vetvete disa të dhëna në brendësi të saj. 1052 01:02:23,050 --> 01:02:27,820 Kështu që unë vetëm div rrëmbyer nga pema ka atë që ne do të thërrasë një pronë në brendësi të saj 1053 01:02:27,820 --> 01:02:34,390 quhet stil, dhe prona stil ka vetë një pronë të quajtur shikimit. 1054 01:02:34,390 --> 01:02:37,330 Unë do të dinë këtë vetëm duke shikuar deri një përdorues manual css-së. 1055 01:02:37,330 --> 01:02:41,160 Ajo rezulton se ka një pronë CSS shikimit që e bën atë që ajo thotë. 1056 01:02:41,160 --> 01:02:44,530 Kjo e bën diçka të dukshme ose jo, të dukshme apo jo. 1057 01:02:44,530 --> 01:02:46,810 Dhe se si ju bëni që është kjo. 1058 01:02:46,810 --> 01:02:50,510 Unë jam duke kërkuar programuar nëse dukshmëria e këtij div është e fshehur, 1059 01:02:50,510 --> 01:02:53,390 çfarë mund të ndryshojë atë për të? Dukshëm. 1060 01:02:53,390 --> 01:02:58,840 Tjetër në qoftë se dukshmëria e kësaj faqeje nuk është e fshehur, logjikisht unë e bëjnë atë të fshehur. 1061 01:02:58,840 --> 01:03:04,070 Unë nuk kam asnjë ide se pse kjo është e dukshme dhe të fshehta dhe nuk është e dukshme dhe të padukshme. 1062 01:03:04,070 --> 01:03:06,000 Ky ishte një vendim i varfër dizajn përgjatë rrugës. 1063 01:03:06,000 --> 01:03:09,530 Por ata janë me të vërtetë opposites në CSS: të dukshme dhe të fshehura. 1064 01:03:09,530 --> 01:03:15,520 E gjithë kjo nuk është ajo të thotë të ndryshojë CSS e dosjes time në dhe jashtë, në dhe jashtë 1065 01:03:15,520 --> 01:03:16,870 për atë div veçantë. 1066 01:03:16,870 --> 01:03:20,630 Por përsëri, kjo është një funksion të quajtur injoroj. Kur funksioni injoroj quhet? 1067 01:03:20,630 --> 01:03:24,080 Ajo rezulton se ka një tjetër të veçantë globale dritare ndryshueshme quajtur, 1068 01:03:24,080 --> 01:03:28,220 ngjashme në frymë të dokumentit, por ndërsa dokumenti i referohet në faqen tuaj të internetit, 1069 01:03:28,220 --> 01:03:31,700 si pemë DOM, HTML keni dërguar nga serveri, 1070 01:03:31,700 --> 01:03:35,250 dritare referohet kromit rreth tij, shiritin e adresave, bar titullin, 1071 01:03:35,250 --> 01:03:37,880 dhe të gjithë e që stuff rreth faqen tuaj web. 1072 01:03:37,880 --> 01:03:42,800 >> Dhe kjo rezulton se objekti dritare ka një funksion të veçantë brenda të saj të quajtur setInterval 1073 01:03:42,800 --> 01:03:44,360 që e bën atë që ajo thotë. 1074 01:03:44,360 --> 01:03:48,600 Ajo do të përcaktojë një interval - në këtë rast çdo 500 milliseconds - 1075 01:03:48,600 --> 01:03:52,270 dhe, të marrë një guess, çfarë është ajo do të bëjë çdo 500 milliseconds? 1076 01:03:52,270 --> 01:03:55,240 Ajo do të ekzekutojë këtë funksion injoroj. 1077 01:03:55,240 --> 01:03:58,560 Dhe çfarë është e mirë këtu është se ne mund të kemi bërë këtë në C, edhe pse ne kurrë nuk e bëri. 1078 01:03:58,560 --> 01:04:01,580 C nuk kanë diçka të quajtur pointers funksion ku ju mund të kalojë funksionet rreth 1079 01:04:01,580 --> 01:04:03,140 si argumente. 1080 01:04:03,140 --> 01:04:07,620 Në mënyrë të ngjashme në JavaScript mund të kalojë emrin e një funksioni në një tjetër funksion. 1081 01:04:07,620 --> 01:04:10,630 Dhe vini re atë që unë jam duke bërë. Unë nuk jam bërë këtë. 1082 01:04:10,630 --> 01:04:14,380 Nëse unë vënë kllapa pas injoroj, që do të thotë thirrje funksionin e injoroj. 1083 01:04:14,380 --> 01:04:17,430 Në qoftë se unë heq ato, që do të thotë këtu është funksioni i injoroj 1084 01:04:17,430 --> 01:04:21,330 kështu që setInterval mund të telefononi atë çdo 500 milisekonda. 1085 01:04:21,330 --> 01:04:28,200 Pra, rezultati përfundimtar, mizore pse ajo është, është se në qoftë se unë të shkojnë në localhost dhe të shkojnë në blink.html, 1086 01:04:28,200 --> 01:04:32,120 Unë tani kanë këtë të ndodh përsëri dhe përsëri. 1087 01:04:32,120 --> 01:04:34,950 Dhe në qoftë se unë në fakt Inspect Element, le të shohim nëse ne mund të shohim këtë. 1088 01:04:34,950 --> 01:04:38,550 Më lejoni Inspect Element, më lejoni të lëvizni poshtë vetëm pak, 1089 01:04:38,550 --> 01:04:44,320 më lejoni të zgjedhin Elements mbi këtu, dhe vini re brenda DOM e inspektorit Chrome. 1090 01:04:44,320 --> 01:04:48,840 Është fjalë për fjalë ndryshuar mbrapa dhe me radhë çdo 500 milliseconds. 1091 01:04:48,840 --> 01:04:55,660 Nëse ne do të shkojmë për të mikut tonë Nate, 1092 01:04:55,660 --> 01:05:00,020 në qoftë se keni menduar ndonjëherë se si kjo është duke punuar ide, të ngjashme me një interval, 1093 01:05:00,020 --> 01:05:04,810 por Nate është në të vërtetë duke e bërë përdorimin efektiv të shumë të ngjyrës në këtë rast të veçantë këtu. 1094 01:05:04,810 --> 01:05:07,350 Pra, ajo që më shumë mund të bëjë në fakt me këtë? 1095 01:05:07,350 --> 01:05:09,990 Le të hapë një tjetër shembull dhe provoni diçka 1096 01:05:09,990 --> 01:05:12,940 që është programuar edhe më e dobishme se sa duke bërë gjëra të injoroj. 1097 01:05:12,940 --> 01:05:17,990 Më lejoni të shkoj në forma të directory tonë sot dhe të shkojnë në form0. 1098 01:05:17,990 --> 01:05:20,820 Kjo ishte forma shëmtuar e mundshme që unë mund të dalë me të, 1099 01:05:20,820 --> 01:05:23,290 dhe më lejoni vetëm të ju tregojnë se si ajo duket si në një shfletues. 1100 01:05:23,290 --> 01:05:28,960 >> Më lejoni të shkoj në localhost / forma, dhe kjo është form0. 1101 01:05:28,960 --> 01:05:33,400 Kjo është një super formë HTML shëmtuar që ka një disa fusha për të email-it, për fjalëkalim, 1102 01:05:33,400 --> 01:05:37,190 fjalëkalimi, dhe pastaj një checkbox pak për të rënë dakord për disa termave dhe kushteve. 1103 01:05:37,190 --> 01:05:41,350 Kapur është në qoftë se unë të vizitoni këtë formular dhe unë nuk dua të ju jap adresën time email, 1104 01:05:41,350 --> 01:05:44,730 Unë nuk dua të bien dakord për termat dhe kushtet ndoshta, unë mund të klikoni Regjistrohu 1105 01:05:44,730 --> 01:05:46,920 dhe kjo lejon mua nëpërmjet anyway. 1106 01:05:46,920 --> 01:05:50,800 Kjo ndodh për të paraqitur në një skedar PHP quajtur idiote dump.php. 1107 01:05:50,800 --> 01:05:58,420 Gjithë kjo nuk është të shtypura nga $ _GET përmbajtjen e vetëm për qëllime diagnostike. 1108 01:05:58,420 --> 01:06:01,580 Kjo ishte ajo që u paraqit nga ana e përdoruesit vetëm tani. 1109 01:06:01,580 --> 01:06:05,010 Por mendoj që ne të vërtetë duan për të vërtetuar dorëzimin e përdoruesit formë. 1110 01:06:05,010 --> 01:06:06,530 Më lejoni të shkoj në versionin 1. 1111 01:06:06,530 --> 01:06:11,420 Kjo është form1.html. Ajo duket estetikisht po aq e keqe, por njoftim sa ajo është e zbukuruar. 1112 01:06:11,420 --> 01:06:15,450 Nëse unë klikoni Regjistrohu pa bashkëpunuar, unë të marrë yelled at. 1113 01:06:15,450 --> 01:06:17,320 "Ju duhet të sigurojë adresën tuaj e-mail." 1114 01:06:17,320 --> 01:06:21,670 Dakord. Pra më lejoni të provoni këtë. Pra malan@harvard.edu. Unë nuk kam nevojë një fjalëkalim. 1115 01:06:21,670 --> 01:06:25,100 Regjistrohu. "Ju duhet të sigurojë një fjalëkalim." Dakord. 1116 01:06:25,100 --> 01:06:28,470 Kështu që unë do të sigurojë një fjalëkalim të purpur. Regjistrohu. 1117 01:06:28,470 --> 01:06:32,300 "Fjalëkalimet nuk përputhen." Unë kam tani shkruani këtu kuq. 1118 01:06:32,300 --> 01:06:35,710 Unë rastësisht kontrolluar atë. Regjistrohu. 1119 01:06:35,710 --> 01:06:39,860 "Ju duhet të bien dakord për termat dhe kushtet." Dakord. Pajtohem atje. Regjistrohu. 1120 01:06:39,860 --> 01:06:43,700 Dhe tani ajo tregon mua e prodhimit diagnostike atje. 1121 01:06:43,700 --> 01:06:45,630 >> Pra, çfarë ka ndodhur vetëm? 1122 01:06:45,630 --> 01:06:48,330 Ne kemi pasur këtë aftësi për të vërtetuar parashtresat formë. 1123 01:06:48,330 --> 01:06:51,420 Në fakt, në qoftë se ju e bëri pikiatë në pset 7, ka një funksion falje 1124 01:06:51,420 --> 01:06:54,620 që e bën mjaft të lehtë për të çirrem në përdorues me një mesazh në ekran. 1125 01:06:54,620 --> 01:06:57,580 Unë jam duke përdorur një mekanizëm pak më të ndryshme, funksion alarm, 1126 01:06:57,580 --> 01:07:03,690 e cila nuk është një funksion që është mbi buzëqeshi pasi kjo e bën shumë të shëmtuar mesazhet e përdoruesit. 1127 01:07:03,690 --> 01:07:05,710 Por le të shohim se çfarë unë jam duke bërë këtu. 1128 01:07:05,710 --> 01:07:09,620 Kjo është form1.html, dhe të vëreni se unë kam disa sintaksë shumë të njohur: 1129 01:07:09,620 --> 01:07:12,920 tag trupit, tag formë, atribut veprim, atribut metodë. 1130 01:07:12,920 --> 01:07:17,050 Por vini re unë kam dhënë formën time një ID unike për lehtësi. 1131 01:07:17,050 --> 01:07:19,190 Pastaj unë kam marrë një email fushë cilit lloj është teksti, 1132 01:07:19,190 --> 01:07:23,780 një fushë fjalëkalimi cilit lloj është, fjalëkalimi konfirmim fushë cilit lloj është fjalëkalimi, 1133 01:07:23,780 --> 01:07:28,070 dhe pastaj një checkbox emri i të cilit është marrëveshja mbi këtu, lloj është checkbox. 1134 01:07:28,070 --> 01:07:30,380 Dhe pastaj unë kam marrë një butoni të paraqesë. 1135 01:07:30,380 --> 01:07:33,050 Por vëreni në krye atë që kam më shumë. 1136 01:07:33,050 --> 01:07:35,810 Para së gjithash, ka një tjetër përdorimi i tag script. 1137 01:07:35,810 --> 01:07:40,520 Nëse ju keni disa kodin JavaScript në një tjetër dosje, ashtu si me CSS ju mund ta përfshijë atë. 1138 01:07:40,520 --> 01:07:44,530 Dhe ju bëni që me burim script, dhe pastaj të vini re unë jam lidh me sa duket 1139 01:07:44,530 --> 01:07:50,349 të googleapis.com në një rrugë shumë të gjatë, por emri i të cilit përfundon në fotografinë jquery.min 1140 01:07:50,349 --> 01:07:52,420 për minimum. js. 1141 01:07:52,420 --> 01:07:55,969 jQuery është një bibliotekë super popullor për JavaScript që vetëm bën JavaScript 1142 01:07:55,969 --> 01:07:58,230 të gjitha më shumë përdorues-miqësor për t'u përdorur. 1143 01:07:58,230 --> 01:08:00,610 Është bërë në mënyrë efektive një standard de facto. 1144 01:08:00,610 --> 01:08:04,090 Pra, edhe pse ajo që ju jeni gati për të parë nuk është i pastër JavaScript në vetvete, 1145 01:08:04,090 --> 01:08:09,340 kjo është një bibliotekë JavaScript në krye të shumë si bibliotekë CS50 është një shtresë 1146 01:08:09,340 --> 01:08:13,670 në krye të nivelit të ulët kodit C, realiteti është se pothuajse të gjithë në internet përdor atë. 1147 01:08:13,670 --> 01:08:18,030 Pra, këto nuk janë rrota trajnimit. Kjo është vetëm praktikë e mirë këto ditë. 1148 01:08:18,030 --> 01:08:22,830 Tani vini re më poshtë se është tag mi shkrimit, dhe vini re atë që unë kam bërë këtu. 1149 01:08:22,830 --> 01:08:27,450 Ajo rezulton se jQuery bën diçka dashuroj pak. 1150 01:08:27,450 --> 01:08:29,660 Java ka shenja të dollarit, por ata janë të pakuptimta. 1151 01:08:29,660 --> 01:08:32,870 >> Ata janë si një letër ose B ose C. 1152 01:08:32,870 --> 01:08:36,670 jQuery ka miratuar thjesht Konvente ose lloj të kërkesës hedhur në faktin 1153 01:08:36,670 --> 01:08:40,280 se $ do të jetë simbol i tyre të veçantë. 1154 01:08:40,280 --> 01:08:44,950 Pra, sa më shpejt që ju të ngarkesës këtë skedë globale JavaScript deri këtu me tag script, 1155 01:08:44,950 --> 01:08:49,080 ju keni qasje në një ndryshore globale të veçantë që është quajtur $. 1156 01:08:49,080 --> 01:08:53,009 Është shumë e duhur quhet jQuery, por që nuk duket gati si sexy si $. 1157 01:08:53,009 --> 01:08:56,250 Por $ nuk ka kuptim të veçantë. Në PHP kishte domethënie të veçantë. 1158 01:08:56,250 --> 01:08:58,440 Ju duhet të kishte atë në frontin e një ndryshore. 1159 01:08:58,440 --> 01:09:01,670 Kjo është vetëm një gjë sexy që ata morën në. 1160 01:09:01,670 --> 01:09:03,389 Çfarë po ndodh këtu? 1161 01:09:03,389 --> 01:09:08,830 Njoftim unë jam duke kaluar në funksion jQuery globale dokumentin tim të ndryshueshme 1162 01:09:08,830 --> 01:09:10,860 dhe atëherë unë jam duke bërë thirrje. gati. 1163 01:09:10,860 --> 01:09:15,480 Çfarë jQuery thelb nuk është kjo ju lejon të marrin disa gjëra vanilje JavaScript 1164 01:09:15,480 --> 01:09:17,889 si objekt dokument, objekti dritare, 1165 01:09:17,889 --> 01:09:20,790 dhe në qoftë se ju të kalojë atë në funksion jQuery - 1166 01:09:20,790 --> 01:09:24,429 dhe përsëri, të jetë i qartë, ky është një funksion të quajtur jQuery - 1167 01:09:24,429 --> 01:09:28,240 atë që nuk është ajo të kthehet në ju një version të veçantë të dokumentit 1168 01:09:28,240 --> 01:09:30,700 që ka funksionalitet më shumë lidhur me të. 1169 01:09:30,700 --> 01:09:34,760 Pra, në JavaScript e parë nuk ka asnjë funksion gati, 1170 01:09:34,760 --> 01:09:37,810 por në qoftë se ju të kalojë dokument në funksion jQuery parë, 1171 01:09:37,810 --> 01:09:40,960 të kthehet për ju një version të veçantë të objektit dokumentit 1172 01:09:40,960 --> 01:09:43,030 që ka më shumë karakteristika dashuroj. 1173 01:09:43,030 --> 01:09:48,230 Dhe kjo është arsyeja pse njerëzit dëshirojnë atë. Ajo thjesht bën gjërat më të lehtë për të bërë, si ne jeni gati për të parë. 1174 01:09:48,230 --> 01:09:49,820 Pra, çfarë e bën këtë linjë e kodit të thotë? 1175 01:09:49,820 --> 01:09:52,690 Kjo linjë e kodit këtu do të thotë kur dokumenti është gati - 1176 01:09:52,690 --> 01:09:56,830 me fjalë të tjera, pasi shfletuesi është bërë e lexuar këtë skedar tek të lartë fund - 1177 01:09:56,830 --> 01:09:59,200 të shkojnë përpara dhe të ekzekutojë funksionin e mëposhtme. 1178 01:09:59,200 --> 01:10:03,540 Çfarë është me të vërtetë interesante në JavaScript - PHP dhe ka këtë si të mirë - 1179 01:10:03,540 --> 01:10:05,450 është funksione anonime. 1180 01:10:05,450 --> 01:10:10,560 Në JavaScript që ju mund të deklarojë funksione që nuk kanë emër, por ata nuk kanë një trup. 1181 01:10:10,560 --> 01:10:12,570 Vini re se çfarë po ndodh këtu. 1182 01:10:12,570 --> 01:10:16,220 >> Ky është një funksion të quajtur gati, dhe kjo thjesht do të thotë të bëjë në vijim 1183 01:10:16,220 --> 01:10:20,220 kur tërë faqen web është gati, kur ajo është lexuar në të gjitha nga serveri. 1184 01:10:20,220 --> 01:10:23,090 Çfarë doni të bëni? Unë dua për të ekzekutuar një copë të kodit. 1185 01:10:23,090 --> 01:10:27,120 Vini re se ne nuk duam për të ekzekutuar këtë kod menjëherë. 1186 01:10:27,120 --> 01:10:34,350 Nëse unë hequr këtë, kjo do të thotë menjëherë të fillojë ekzekutimin këto rreshta të kodit. 1187 01:10:34,350 --> 01:10:39,040 Por fakti që unë jam duke thënë jo, jo, jo, të përfundojë këtë në një funksion anonim si kjo 1188 01:10:39,040 --> 01:10:43,000 Mjetet nuk ekzekutojnë atë ende, e quajti atë përfundimisht. 1189 01:10:43,000 --> 01:10:45,430 Ne e pamë këtë si një moment më parë në shembullin e mëparshëm tonë formë. 1190 01:10:45,430 --> 01:10:49,990 Çfarë funksioni nuk kemi thirrur eventualisht, 500 milisekonda më vonë? Injoroj. 1191 01:10:49,990 --> 01:10:51,480 Pra, të njëjtën ide. 1192 01:10:51,480 --> 01:10:53,950 Përsëri, edhe në qoftë se kjo duket pak e pazakontë, vetëm të marrë tani për tani mbi besimin 1193 01:10:53,950 --> 01:10:57,060 që të deklarojë një funksion anonim që është quajtur përfundimisht, 1194 01:10:57,060 --> 01:11:01,720 ju thjesht shkruani funksion () { 1195 01:11:01,720 --> 01:11:05,380 Pra, çfarë kodi do të shkojmë për të ekzekutuar përfundimisht? Në vijim. 1196 01:11:05,380 --> 01:11:10,460 Kjo shumë duket një re të vogël, por kjo do të thotë këtu është funksioni jQuery, 1197 01:11:10,460 --> 01:11:13,430 dhe kjo tani është një shkurtore. 1198 01:11:13,430 --> 01:11:18,830 Kjo copë e HTML në pjesën e poshtme të ekranit sigurisht ka disa përfaqësim pemë. 1199 01:11:18,830 --> 01:11:21,730 Kjo nuk është kjo. Kjo faqe është më interesante se këtë shembull, botë Hello. 1200 01:11:21,730 --> 01:11:25,210 Por ka disa pemë që korrespondon me këtë HTML. 1201 01:11:25,210 --> 01:11:28,910 Ajo do të jetë një dhimbje në qafë që të ketë për të zbatuar një lloj të funksioni rekursiv 1202 01:11:28,910 --> 01:11:34,380 të fillojë në nyjen rrënjë dhe pastaj të gjeni nyje të cilit ID është regjistrimi. 1203 01:11:34,380 --> 01:11:38,340 Pra, çfarë e bën jQuery super e lehtë për ne është fjalë për fjalë këtë. 1204 01:11:38,340 --> 01:11:43,000 Të shkojnë përpara dhe për të marrë mua çfarëdo div apo formë çfarëdo, çfarëdo elementi HTML 1205 01:11:43,000 --> 01:11:45,820 ka një ID të regjistrimit. 1206 01:11:45,820 --> 01:11:52,440 Kjo është ekuivalente me document.getElementById ('regjistrimit'). 1207 01:11:52,440 --> 01:11:54,170 >> Pse njerëz si jQuery? 1208 01:11:54,170 --> 01:12:00,110 Sepse kjo është më e shkurtër për të tipit. Por kjo është e gjitha kjo është. Kjo është ide e njëjtë. 1209 01:12:00,110 --> 01:12:02,630 Merrni mua tag cilit ID është regjistrimi. 1210 01:12:02,630 --> 01:12:06,300 Dhe kur kjo tag, i cili ndodh të jetë një formë, është dorëzuar, 1211 01:12:06,300 --> 01:12:08,300 të shkojnë përpara dhe të ekzekutuar këtë kod. 1212 01:12:08,300 --> 01:12:11,320 Pra, le të marrin një të shohim tani se si ne jemi duke bërë validation formë. 1213 01:12:11,320 --> 01:12:15,950 Sintaksa është pa dyshim fshehtë në fillim, por çfarë po ndodh? 1214 01:12:15,950 --> 01:12:21,050 Nëse kjo linjë e kodit është e vërtetë, unë jam duke shkuar për të çirrem në përdoruesit për të siguruar adresën e tij ose të saj email. 1215 01:12:21,050 --> 01:12:22,970 Pra, çfarë është kjo linjë e kodit? 1216 01:12:22,970 --> 01:12:25,560 $ Thotë jQuery. Tani këtë njoftim. 1217 01:12:25,560 --> 01:12:27,920 Kjo është lloj i si CSS. 1218 01:12:27,920 --> 01:12:33,370 Nëse ju keni fetar në CSS ende, ju do të dini se kjo do të thotë elementi cilit ID është regjistrimi. 1219 01:12:33,370 --> 01:12:39,840 Hapësirë ​​të thotë të gjeni një fëmijë ose pasardhës i regjistrimit emri i të cilit është input. 1220 01:12:39,840 --> 01:12:42,970 Dhe pastaj kjo gjë në kllapa katrore është një filtër të vogël. 1221 01:12:42,970 --> 01:12:47,010 Dhe edhe në qoftë se kjo duket fshehtë, kjo thjesht do të thotë të shkojë në formë të cilit ID është regjistrimi, 1222 01:12:47,010 --> 01:12:51,230 shkoni në brendësi të elementit të dhëna që emri i të cilit është e-mail, 1223 01:12:51,230 --> 01:12:55,440 dhe pastaj të marrë vlerën e saj, pavarësisht nga vlera e tij ndodh të jetë - 1224 01:12:55,440 --> 01:12:59,670 asdf në qoftë se është e gjitha unë shtypen, ose malan@harvard.edu nëse kjo është ajo që unë shtypur. 1225 01:12:59,670 --> 01:13:05,250 Pra, nëse vlera e fushës së formularit email == asgjë, çirrem në të përdoruesit. 1226 01:13:05,250 --> 01:13:09,700 Tjetër në qoftë se vlera e fushës fjalëkalimin == asgjë, çirrem në të përdoruesit. 1227 01:13:09,700 --> 01:13:19,520 >> Tjetër në qoftë se vlera e fushës fjalëkalimin nuk e barabartë me vlerën e fushës konfirmimit, 1228 01:13:19,520 --> 01:13:22,850 i cili ishte elementi tjetër formë, çirrem në të përdoruesit. 1229 01:13:22,850 --> 01:13:25,680 Dhe pastaj në fund - dhe kjo shumë ka disa sintaksën e ri të vetin, 1230 01:13:25,680 --> 01:13:29,270 por një herë ju keni parë atë, kjo është të paktën një pak më të arsyeshme - 1231 01:13:29,270 --> 01:13:34,060 tjetër në qoftë se forma e të cilit ID është regjistrimi ka një element të dhëna emri i të cilit është marrëveshja 1232 01:13:34,060 --> 01:13:39,720 dhe kjo është e kontrolluar, të shkojnë përpara dhe bërtas në përdorues. 1233 01:13:39,720 --> 01:13:42,520 Kështu që unë pranoj plotësisht kjo është plotësisht e madhe në shikim të parë. 1234 01:13:42,520 --> 01:13:46,530 Kjo është një shumë e sintaksës së re. Por të gjithë jQuery ndjek këto lloje të modeleve. 1235 01:13:46,530 --> 01:13:49,880 Dhe sinqerisht, unë nuk e di edhe kjo ka ekzistuar deri pak minuta më parë. 1236 01:13:49,880 --> 01:13:53,640 Unë googled, "Si mund të kontrolloni nëse një checkbox është i kontrolluar në jQuery?" 1237 01:13:53,640 --> 01:13:55,680 dhe kjo është sintaksë, sepse nuk ka mënyra të ndryshme për ta bërë këtë 1238 01:13:55,680 --> 01:13:58,010 me kodin aktual para JavaScript. 1239 01:13:58,010 --> 01:14:01,030 Pra, si faqja e parë e Set Problem 7 thekson, 1240 01:14:01,030 --> 01:14:04,500 pset 7 është shumë një ushtrim në Bootstrapping veten 1241 01:14:04,500 --> 01:14:08,650 ku ne kemi dhënë, me shpresë, një kornizë konceptuale me të cilat për të trajtuar pset. 1242 01:14:08,650 --> 01:14:12,280 >> Por siç është shpesh rasti me web design, është deri tek ju për të vërtetë për të thes rreth, 1243 01:14:12,280 --> 01:14:16,680 përfshijnë copra të kodit dhe shembuj nga Web aq kohë sa ju citoj ato 1244 01:14:16,680 --> 01:14:17,960 sipas kushteve në atë fletë të parë, 1245 01:14:17,960 --> 01:14:21,460 dhe të kuptojë se të mësuarit HTML, CSS, JavaScript dhe madje edhe SQL 1246 01:14:21,460 --> 01:14:26,020 është menduar të jetë me të vërtetë këtë në shtëpi stërvitje si ne të fillojë të marrë këto rrota trajnimit jashtë. 1247 01:14:26,020 --> 01:14:29,150 Dhe të kuptojë shumë ka kaq shumë gjëra më shumë që ju mund të bëni me një shfletues. 1248 01:14:29,150 --> 01:14:33,790 Brenda shumica e këtyre elementëve ka gjëra të tjera të quajtur handlers ngjarje. 1249 01:14:33,790 --> 01:14:37,140 Dhe edhe pse ne vetëm shikuar në ato quajtur onsubmit dhe onready, 1250 01:14:37,140 --> 01:14:40,310 ju mund të bëni gjëra të tilla si onkeydown, onkeyup, 1251 01:14:40,310 --> 01:14:43,410 si kur përdoruesi prek një çelës, ju mund të dëgjoni për këtë dhe deri kyç. 1252 01:14:43,410 --> 01:14:45,940 Gmail ka shkurtesat e tastierës. 1253 01:14:45,940 --> 01:14:49,490 Si funksionon Google zbatojë shkurtesat e tastierës për të rendis si C? 1254 01:14:49,490 --> 01:14:54,120 Ata dëgjojnë për ngjarje, si ata janë quajtur, si çelësi shtyp në linjë apo onkeyup dhe onkeydown. 1255 01:14:54,120 --> 01:14:56,360 Nëse e keni ndonjëherë fluturoi miun tuaj mbi disa opsionin e menysë 1256 01:14:56,360 --> 01:15:00,180 dhe të gjitha një e papritur, voila, një menu duket ose grafik ndryshon ngjyra, 1257 01:15:00,180 --> 01:15:01,920 se si ata janë duke bërë se? 1258 01:15:01,920 --> 01:15:06,940 Në vend se të dëgjojnë për onready apo onsubmit, ju dëgjoni për onmouseover ose onmouseout. 1259 01:15:06,940 --> 01:15:10,920 >> Pra me pak fjalë, me këto bazat shumë të thjeshtë që ne kemi filluar të zeroja sipërfaqe e sotme 1260 01:15:10,920 --> 01:15:13,940 dhe ne do të zhyten edhe më tej të mërkurën, keni, gjithnjë e më, 1261 01:15:13,940 --> 01:15:17,530 fuqia për të zbatuar llojet e gjërave që ju jeni tashmë të njohur me të. 1262 01:15:17,530 --> 01:15:21,620 Pra, le të përfundojë atje, dhe ne do të vazhdojmë këtë të mërkurën. 1263 01:15:22,690 --> 01:15:24,320 >> [CS50.TV]